summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2280
-rw-r--r--FAQ712
-rw-r--r--INSTALL753
-rw-r--r--Makefile.am95
-rw-r--r--README387
-rw-r--r--TODO50
-rw-r--r--acinclude.m48761
-rw-r--r--aclocal.m4910
-rwxr-xr-xautogen.sh164
-rwxr-xr-xconfigure.in270
-rw-r--r--data/Makefile.am6
-rw-r--r--data/applnk/Makefile.am5
-rw-r--r--data/applnk/kvirc.desktop18
-rw-r--r--data/config/Makefile.am5
-rw-r--r--data/config/serverdb.kvc1611
-rw-r--r--data/config/texticons.kvc39
-rw-r--r--data/defscript/Makefile.am11
-rw-r--r--data/defscript/aliases.kvs706
-rw-r--r--data/defscript/default.kvs37
-rw-r--r--data/defscript/events.kvs105
-rw-r--r--data/defscript/installer.kvs169
-rw-r--r--data/defscript/popups.kvs1381
-rw-r--r--data/defscript/theme-install.kvs30
-rw-r--r--data/defscript/toolbars.kvs43
-rw-r--r--data/deftheme/Makefile.am2
-rw-r--r--data/deftheme/silverirc/Makefile.am5
-rw-r--r--data/deftheme/silverirc/pixmapInputBackground.pngbin0 -> 200 bytes
-rw-r--r--data/deftheme/silverirc/pixmapIrcViewBackground.pngbin0 -> 12760 bytes
-rw-r--r--data/deftheme/silverirc/pixmapUserListViewBackground.pngbin0 -> 237 bytes
-rw-r--r--data/deftheme/silverirc/themedata.kvc273
-rw-r--r--data/deftheme/silverirc/themeinfo.kvc10
-rw-r--r--data/doctemplates/Makefile.am1
-rw-r--r--data/doctemplates/ircintro.template60
-rw-r--r--data/doctemplates/kvircintro.template67
-rw-r--r--data/doctemplates/rfc2812.template3312
-rw-r--r--data/helppics/Makefile.am5
-rw-r--r--data/helppics/helplogoleft.pngbin0 -> 7100 bytes
-rw-r--r--data/helppics/helplogoright.pngbin0 -> 4293 bytes
-rw-r--r--data/icons/128x128/Makefile.am5
-rw-r--r--data/icons/128x128/kva.pngbin0 -> 11983 bytes
-rw-r--r--data/icons/128x128/kvc.pngbin0 -> 12499 bytes
-rw-r--r--data/icons/128x128/kvirc.pngbin0 -> 14195 bytes
-rw-r--r--data/icons/128x128/kvs.pngbin0 -> 13485 bytes
-rw-r--r--data/icons/128x128/kvt.pngbin0 -> 12714 bytes
-rw-r--r--data/icons/16x16/Makefile.am5
-rw-r--r--data/icons/16x16/kva.pngbin0 -> 838 bytes
-rw-r--r--data/icons/16x16/kvc.pngbin0 -> 802 bytes
-rw-r--r--data/icons/16x16/kvirc.pngbin0 -> 966 bytes
-rw-r--r--data/icons/16x16/kvs.pngbin0 -> 837 bytes
-rw-r--r--data/icons/16x16/kvt.pngbin0 -> 859 bytes
-rw-r--r--data/icons/32x32/Makefile.am6
-rw-r--r--data/icons/32x32/kva.pngbin0 -> 2065 bytes
-rw-r--r--data/icons/32x32/kvc.pngbin0 -> 1955 bytes
-rw-r--r--data/icons/32x32/kvirc.pngbin0 -> 2286 bytes
-rw-r--r--data/icons/32x32/kvirc.xpm295
-rw-r--r--data/icons/32x32/kvs.pngbin0 -> 2135 bytes
-rw-r--r--data/icons/32x32/kvt.pngbin0 -> 2137 bytes
-rw-r--r--data/icons/48x48/Makefile.am5
-rw-r--r--data/icons/48x48/kva.pngbin0 -> 3454 bytes
-rw-r--r--data/icons/48x48/kvc.pngbin0 -> 3346 bytes
-rw-r--r--data/icons/48x48/kvirc.pngbin0 -> 3864 bytes
-rw-r--r--data/icons/48x48/kvirc.xpm311
-rw-r--r--data/icons/48x48/kvs.pngbin0 -> 3665 bytes
-rw-r--r--data/icons/48x48/kvt.pngbin0 -> 3647 bytes
-rw-r--r--data/icons/64x64/Makefile.am5
-rw-r--r--data/icons/64x64/kvirc.pngbin0 -> 5612 bytes
-rw-r--r--data/icons/64x64/kvs.pngbin0 -> 5441 bytes
-rw-r--r--data/icons/Makefile.am5
-rw-r--r--data/icons/scalable/Makefile.am5
-rw-r--r--data/icons/scalable/createpng.sh24
-rw-r--r--data/icons/scalable/kva.svgzbin0 -> 5226 bytes
-rw-r--r--data/icons/scalable/kvc.svgzbin0 -> 7557 bytes
-rw-r--r--data/icons/scalable/kvirc.svgzbin0 -> 2759 bytes
-rw-r--r--data/icons/scalable/kvs.svgzbin0 -> 10411 bytes
-rw-r--r--data/icons/scalable/kvt.svgzbin0 -> 10270 bytes
-rw-r--r--data/man/Makefile.am3
-rw-r--r--data/man/kvirc.1133
-rw-r--r--data/mimelnk/Makefile.am5
-rw-r--r--data/mimelnk/x-kva.desktop7
-rw-r--r--data/mimelnk/x-kvc.desktop7
-rw-r--r--data/mimelnk/x-kvs.desktop7
-rw-r--r--data/mimelnk/x-kvt.desktop7
-rw-r--r--data/msgcolors/Makefile.am5
-rw-r--r--data/msgcolors/all-black.msgclr659
-rw-r--r--data/msgcolors/all-gray.msgclr659
-rw-r--r--data/msgcolors/all-green.msgclr659
-rw-r--r--data/msgcolors/all-white.msgclr659
-rw-r--r--data/msgcolors/colored-2.msgclr659
-rw-r--r--data/msgcolors/colored.msgclr659
-rw-r--r--data/msgcolors/default.msgclr659
-rw-r--r--data/msgcolors/heavy-colors.msgclr659
-rw-r--r--data/pics/Makefile.am8
-rw-r--r--data/pics/coresmall/Makefile.am8
-rw-r--r--data/pics/coresmall/kcs_accept.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_action.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_addons.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_afraid.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_alert.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_alias.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_aliashighlighted.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_angry.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_applet.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_autotilewindows.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_avatar.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_away.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ban.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_banexcept.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_banunexcept.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_biggrin.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_biggrineyes.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_biggringlasses.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_binarytext.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_blacksquare.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_bluesquare.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_bomb.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_bookmarks.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_broadcastnotice.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_broadcastprivmsg.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_bug.pngbin0 -> 862 bytes
-rw-r--r--data/pics/coresmall/kcs_cafe.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_canvas.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_caption.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_cascadewindows.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_chanadmin.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_chanadminaway.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_chanmode.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_chanmodehide.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_channel.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_channelnotice.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_channelnoticecrypted.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_chanowner.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_chanowneraway.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_chanprivmsg.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_chanprivmsgcrypted.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_chanserv.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_chanunadmin.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_chanunowner.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_classictaskbar.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_close.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_colors.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_console.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_copy.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_cry.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ctcpreply.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ctcpreplyunknown.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ctcprequestflood.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ctcprequestignored.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ctcprequestreplied.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_ctcprequestunknown.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_cut.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_cyansquare.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_dccchatmsg.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_dccchatmsgcrypted.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_dccerror.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_dccmsg.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_dccrequest.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_dccvoice.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_deadchannel.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_deadquery.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_default.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_deleteitem.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_demoralized.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_deop.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_deuserop.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_devoice.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_discard.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_dkgreensquare.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_dock.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_dockwidget.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_edititem.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_editor.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_epilogue.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_event.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_eventnohandlers.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_eye.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_file.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_files.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_filetransfer.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_finger.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_floppy.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_folder.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_gnutella.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_greensquare.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_gui.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_halfdeop.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_halfop.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_halfopaway.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_handler.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_handlerdisabled.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_heart.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_heartbroken.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_help.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_hidedoubleview.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_hidelistview.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_home.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_homepage.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_iconmanager.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_icq.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_icqblue.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_icqlightgreen.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_icqlightyellow.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_icqred.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_icqyellow.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_idea.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ident.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ignore.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_input.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_invisible.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_invite.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_inviteexcept.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_inviteunexcept.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_irc.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_irc0.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_irc1.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_irc2.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_irc3.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_irc4.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_irc5.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ircview.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_join.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_key.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_kick.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_kiss.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_kvirc.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_limit.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_links.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_linux.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_list.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_locked.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_lockedoff.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_log.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_look.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_maxhorizontal.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_maximize.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_maxvertical.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_mdihelp.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_meban.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_mebanexcept.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_mebanunexcept.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_mechanadmin.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_mechanowner.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_mechanunadmin.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_mechanunowner.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_medehalfop.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_medeop.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_medeuserop.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_medevoice.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_mehalfop.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_meinviteexcept.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_meinviteunexcept.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_mekick.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_meop.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_message.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_messages.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_messagesent.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_meunban.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_meuserop.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_mevoice.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_minimize.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_minus.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_mode.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_motd.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_multimedia.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_namespace.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_newitem.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_newitembywizard.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_nick.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_nicknameproblem.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_nickserv.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_nochannel.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_none.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_notaway.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_notifyoffline.pngbin0 -> 1086 bytes
-rw-r--r--data/pics/coresmall/kcs_notifyonline.pngbin0 -> 1034 bytes
-rw-r--r--data/pics/coresmall/kcs_op.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_opaway.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_options.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ownprivmsg.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ownprivmsgcrypted.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_package.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_parsererror.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_parserwarning.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_part.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_paste.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_play.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_plus.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_popup.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_popupmenu.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_prologue.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_proxy.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_query.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_querynotice.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_querynoticecrypted.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_queryprivmsg.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_queryprivmsgcrypted.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_querytrace.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_quit.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_quitapp.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_quitsplit.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_raw.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_rawevent.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_raweventnohandlers.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_record.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_redsquare.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_refresh.pngbin0 -> 1044 bytes
-rw-r--r--data/pics/coresmall/kcs_regusers.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_restore.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_retry.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_rose.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_saycolors.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_sayicon.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_saykvs.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_saysmile.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_screenshot.pngbin0 -> 688 bytes
-rw-r--r--data/pics/coresmall/kcs_scriptaction.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_scriptcenter.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_search.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_server.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_servererror.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_serverinfo.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_servernotice.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_serverping.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_servnotice.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_sharedfiles.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_showdoubleview.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_showlistview.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_shy.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_slurp.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_smile.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_socketerror.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_socketmessage.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_socketwarning.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_sound.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_spam.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_split.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_spy.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ssl.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_stats.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_statusbar.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_surprised1.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_surprised2.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_systemerror.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_systemmessage.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_systemwarning.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_tearsmile.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_terminal.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_textencoding.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_textexclamative.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_textpoints.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_theme.pngbin0 -> 739 bytes
-rw-r--r--data/pics/coresmall/kcs_themeoptions.pngbin0 -> 928 bytes
-rw-r--r--data/pics/coresmall/kcs_tilewindows.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_time.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_tongue.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_tongue2.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_toolbar.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_topic.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_transfer.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_transparent.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_treetaskbar.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ugly.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_unban.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_undock.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_unhandled.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_unlocked.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_unlockedoff.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_unrecognized.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_url.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_userlist.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_userop.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_useropaway.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_userwindow.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_violetsquare.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_voice.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_voiceaway.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_wallops.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_who.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_whoischannels.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_whoisidle.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_whoisother.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_whoisserver.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_whoisuser.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_world.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_xy.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_yellowsquare.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/kvi_actiondrawer.pngbin0 -> 181743 bytes
-rw-r--r--data/pics/kvi_activitymeter.pngbin0 -> 6509 bytes
-rw-r--r--data/pics/kvi_bigicon_actioneditor.pngbin0 -> 1693 bytes
-rw-r--r--data/pics/kvi_bigicon_actions.pngbin0 -> 1951 bytes
-rw-r--r--data/pics/kvi_bigicon_addons.pngbin0 -> 2536 bytes
-rw-r--r--data/pics/kvi_bigicon_aliaseditor.pngbin0 -> 1607 bytes
-rw-r--r--data/pics/kvi_bigicon_cascadewindows.pngbin0 -> 998 bytes
-rw-r--r--data/pics/kvi_bigicon_channellist.pngbin0 -> 509 bytes
-rw-r--r--data/pics/kvi_bigicon_channels.pngbin0 -> 1818 bytes
-rw-r--r--data/pics/kvi_bigicon_channelspopup.pngbin0 -> 1818 bytes
-rw-r--r--data/pics/kvi_bigicon_codetester.pngbin0 -> 1660 bytes
-rw-r--r--data/pics/kvi_bigicon_connected.pngbin0 -> 2305 bytes
-rw-r--r--data/pics/kvi_bigicon_connecting.pngbin0 -> 2535 bytes
-rw-r--r--data/pics/kvi_bigicon_disconnected.pngbin0 -> 2271 bytes
-rw-r--r--data/pics/kvi_bigicon_eventeditor.pngbin0 -> 1708 bytes
-rw-r--r--data/pics/kvi_bigicon_folder.pngbin0 -> 2971 bytes
-rw-r--r--data/pics/kvi_bigicon_help.pngbin0 -> 2646 bytes
-rw-r--r--data/pics/kvi_bigicon_helpback.pngbin0 -> 1228 bytes
-rw-r--r--data/pics/kvi_bigicon_helpclose.pngbin0 -> 1376 bytes
-rw-r--r--data/pics/kvi_bigicon_helpforward.pngbin0 -> 1242 bytes
-rw-r--r--data/pics/kvi_bigicon_helpindex.pngbin0 -> 1711 bytes
-rw-r--r--data/pics/kvi_bigicon_helpsearch.pngbin0 -> 975 bytes
-rw-r--r--data/pics/kvi_bigicon_identity.pngbin0 -> 1818 bytes
-rw-r--r--data/pics/kvi_bigicon_irccontextdisplay.pngbin0 -> 857 bytes
-rw-r--r--data/pics/kvi_bigicon_keyboard.pngbin0 -> 1481 bytes
-rw-r--r--data/pics/kvi_bigicon_kvircwww.pngbin0 -> 2287 bytes
-rw-r--r--data/pics/kvi_bigicon_kvs.pngbin0 -> 1870 bytes
-rw-r--r--data/pics/kvi_bigicon_mailinglist.pngbin0 -> 2308 bytes
-rw-r--r--data/pics/kvi_bigicon_minimizeallwindows.pngbin0 -> 1654 bytes
-rw-r--r--data/pics/kvi_bigicon_networklinks.pngbin0 -> 1765 bytes
-rwxr-xr-xdata/pics/kvi_bigicon_newirccontext.pngbin0 -> 2084 bytes
-rwxr-xr-xdata/pics/kvi_bigicon_nickpopup.pngbin0 -> 1639 bytes
-rw-r--r--data/pics/kvi_bigicon_nokeyboard.pngbin0 -> 1797 bytes
-rw-r--r--data/pics/kvi_bigicon_open.pngbin0 -> 2237 bytes
-rw-r--r--data/pics/kvi_bigicon_pack.pngbin0 -> 2203 bytes
-rw-r--r--data/pics/kvi_bigicon_popupeditor.pngbin0 -> 1240 bytes
-rwxr-xr-xdata/pics/kvi_bigicon_quit.pngbin0 -> 2445 bytes
-rw-r--r--data/pics/kvi_bigicon_raweditor.pngbin0 -> 1394 bytes
-rw-r--r--data/pics/kvi_bigicon_regusers.pngbin0 -> 2968 bytes
-rw-r--r--data/pics/kvi_bigicon_remove.pngbin0 -> 2843 bytes
-rw-r--r--data/pics/kvi_bigicon_save.pngbin0 -> 1740 bytes
-rw-r--r--data/pics/kvi_bigicon_screenshot.pngbin0 -> 1973 bytes
-rw-r--r--data/pics/kvi_bigicon_separator.pngbin0 -> 479 bytes
-rw-r--r--data/pics/kvi_bigicon_server.pngbin0 -> 1947 bytes
-rw-r--r--data/pics/kvi_bigicon_servers.pngbin0 -> 2079 bytes
-rw-r--r--data/pics/kvi_bigicon_settings.pngbin0 -> 1906 bytes
-rwxr-xr-xdata/pics/kvi_bigicon_socketspy.pngbin0 -> 2418 bytes
-rw-r--r--data/pics/kvi_bigicon_theme.pngbin0 -> 2407 bytes
-rw-r--r--data/pics/kvi_bigicon_themeoptions.pngbin0 -> 2190 bytes
-rw-r--r--data/pics/kvi_bigicon_tilewindows.pngbin0 -> 644 bytes
-rw-r--r--data/pics/kvi_bigicon_toolbareditor.pngbin0 -> 1440 bytes
-rw-r--r--data/pics/kvi_bigicon_tools.pngbin0 -> 2577 bytes
-rw-r--r--data/pics/kvi_bigicon_trashcan.pngbin0 -> 2235 bytes
-rwxr-xr-xdata/pics/kvi_bigicon_unknown.pngbin0 -> 1977 bytes
-rw-r--r--data/pics/kvi_bigicon_usermode.pngbin0 -> 1749 bytes
-rw-r--r--data/pics/kvi_bigicon_www.pngbin0 -> 2668 bytes
-rw-r--r--data/pics/kvi_checkbox_selected.pngbin0 -> 346 bytes
-rw-r--r--data/pics/kvi_checkbox_unselected.pngbin0 -> 222 bytes
-rwxr-xr-xdata/pics/kvi_horizontal_left.pngbin0 -> 439 bytes
-rwxr-xr-xdata/pics/kvi_horizontal_right.pngbin0 -> 416 bytes
-rw-r--r--data/pics/kvi_icon_bot.pngbin0 -> 539 bytes
-rw-r--r--data/pics/kvi_icon_female.pngbin0 -> 277 bytes
-rw-r--r--data/pics/kvi_icon_male.pngbin0 -> 289 bytes
-rwxr-xr-xdata/pics/kvi_icon_refresh.pngbin0 -> 1146 bytes
-rw-r--r--data/pics/kvi_setup_label.pngbin0 -> 161081 bytes
-rw-r--r--data/pics/kvi_setup_theme_hires.pngbin0 -> 66729 bytes
-rw-r--r--data/pics/kvi_setup_theme_lowres.pngbin0 -> 29162 bytes
-rw-r--r--data/pics/kvi_splash.pngbin0 -> 198483 bytes
-rw-r--r--data/pics/kvi_splash_overlay.pngbin0 -> 7729 bytes
-rwxr-xr-xdata/pics/kvi_toolbutton_menuindicator.pngbin0 -> 79 bytes
-rw-r--r--data/pics/kvi_userchanstate.pngbin0 -> 8021 bytes
-rw-r--r--data/protocols/Makefile.am9
-rw-r--r--data/protocols/irc.protocol11
-rw-r--r--data/protocols/irc6.protocol11
-rw-r--r--data/resources/Makefile.am3
-rw-r--r--data/resources/icon1.icobin0 -> 3774 bytes
-rw-r--r--data/resources/kvirc.rc29
-rw-r--r--data/resources/resource.h20
-rw-r--r--data/resources_mac/Info.plist.in40
-rw-r--r--data/resources_mac/Makefile.am8
-rw-r--r--data/resources_mac/kvirc.icnsbin0 -> 52772 bytes
-rw-r--r--doc/COPYING302
-rw-r--r--doc/INSTALL-MacOS.txt168
-rw-r--r--doc/Makefile.am11
-rw-r--r--doc/firefox.hack.txt32
-rw-r--r--doc/hackers.guide.txt935
-rw-r--r--doc/scriptexamples/Makefile.am7
-rw-r--r--doc/scriptexamples/README6
-rw-r--r--doc/scriptexamples/antiidle/Makefile.am5
-rw-r--r--doc/scriptexamples/antiidle/antiidle.kvs159
-rw-r--r--doc/scriptexamples/class1.kvs102
-rw-r--r--doc/scriptexamples/exprtest.kvs24
-rw-r--r--doc/scriptexamples/label1.kvs39
-rw-r--r--doc/scriptexamples/mail.kvs159
-rw-r--r--doc/scriptexamples/minesweeper/Makefile.am5
-rw-r--r--doc/scriptexamples/minesweeper/minesweeper.kvs131
-rw-r--r--doc/scriptexamples/mp3_kdemediaplayers.kvs206
-rw-r--r--doc/scriptexamples/mp3info.kvs109
-rw-r--r--doc/scriptexamples/mp3share/Makefile.am5
-rw-r--r--doc/scriptexamples/mp3share/mp3share.kvs84
-rw-r--r--doc/scriptexamples/mp3share/mp3share_icon.pngbin0 -> 1828 bytes
-rw-r--r--doc/scriptexamples/newkvstest.kvs101
-rw-r--r--doc/scriptexamples/playing/Makefile.am5
-rw-r--r--doc/scriptexamples/playing/playing.kvs108
-rw-r--r--doc/scriptexamples/playing/playing_icon.pngbin0 -> 1487 bytes
-rw-r--r--doc/scriptexamples/popup1.kvs17
-rw-r--r--doc/scriptexamples/popup2.kvs124
-rw-r--r--doc/scriptexamples/popup3.kvs46
-rw-r--r--doc/scriptexamples/popup4.kvs40
-rw-r--r--doc/scriptexamples/relay.kvs33
-rw-r--r--doc/scriptexamples/runmenu/Makefile.am5
-rw-r--r--doc/scriptexamples/runmenu/runmenu.kvs111
-rw-r--r--doc/scriptexamples/signal1.kvs47
-rw-r--r--doc/scriptexamples/simplehttp/Makefile.am5
-rw-r--r--doc/scriptexamples/simplehttp/simplehttp.kvs105
-rw-r--r--doc/scriptexamples/socket1.kvs45
-rw-r--r--doc/scriptexamples/srfs.kvs42
-rw-r--r--doc/scriptexamples/switchstress.kvs46
-rw-r--r--doc/scriptexamples/timer1.kvs25
-rw-r--r--doc/scriptexamples/tutorial/Makefile.am5
-rw-r--r--doc/scriptexamples/tutorial/minesweeper1.kvs78
-rw-r--r--doc/scriptexamples/tutorial/minesweeper2.kvs93
-rw-r--r--doc/scriptexamples/tutorial/minesweeper3.kvs147
-rw-r--r--doc/scriptexamples/tutorial/minesweeper4.kvs187
-rw-r--r--doc/scriptexamples/tutorial/minesweeper5.kvs201
-rw-r--r--doc/scriptexamples/tutorial/minesweeper6.kvs254
-rw-r--r--doc/scriptexamples/tutorial/minesweeper7.kvs253
-rw-r--r--doc/scriptexamples/widget1.kvs20
-rw-r--r--doc/scriptexamples/widget2.kvs23
-rw-r--r--doc/scripting.faq.txt48
-rw-r--r--doc/themes.howto.txt123
-rw-r--r--doc/translations.howto.txt134
-rw-r--r--doc/ui-style.tips.txt40
-rw-r--r--doc/win32.compiling.1.2.txt269
-rw-r--r--po/Makefile.am1
-rw-r--r--po/kvirc/Makefile.am83
-rw-r--r--po/kvirc/kvirc_bg.po12195
-rw-r--r--po/kvirc/kvirc_ca.po16926
-rw-r--r--po/kvirc/kvirc_cs.po16315
-rw-r--r--po/kvirc/kvirc_de.po12887
-rw-r--r--po/kvirc/kvirc_es.po13137
-rw-r--r--po/kvirc/kvirc_fi.po11938
-rw-r--r--po/kvirc/kvirc_fr.po12662
-rw-r--r--po/kvirc/kvirc_hr.po11895
-rw-r--r--po/kvirc/kvirc_hu.po12226
-rw-r--r--po/kvirc/kvirc_it.po12396
-rw-r--r--po/kvirc/kvirc_nl.po19199
-rw-r--r--po/kvirc/kvirc_pl.po14086
-rw-r--r--po/kvirc/kvirc_pt.po12350
-rw-r--r--po/kvirc/kvirc_pt_BR.po16842
-rw-r--r--po/kvirc/kvirc_ru.po12490
-rw-r--r--po/kvirc/kvirc_sr.po19751
-rw-r--r--po/kvirc/kvirc_uk.po12449
-rw-r--r--po/modules/Makefile.am14
-rw-r--r--po/modules/about/Makefile.am76
-rw-r--r--po/modules/about/about_ca.po61
-rw-r--r--po/modules/about/about_cs.po57
-rw-r--r--po/modules/about/about_de.po55
-rw-r--r--po/modules/about/about_es.po59
-rw-r--r--po/modules/about/about_fi.po55
-rw-r--r--po/modules/about/about_fr.po56
-rw-r--r--po/modules/about/about_hr.po55
-rw-r--r--po/modules/about/about_hu.po55
-rw-r--r--po/modules/about/about_it.po62
-rw-r--r--po/modules/about/about_pt.po65
-rw-r--r--po/modules/about/about_pt_BR.po58
-rw-r--r--po/modules/about/about_ru.po63
-rw-r--r--po/modules/about/about_uk.po61
-rw-r--r--po/modules/dcc/Makefile.am80
-rw-r--r--po/modules/dcc/dcc_ca.po1063
-rw-r--r--po/modules/dcc/dcc_cs.po1011
-rw-r--r--po/modules/dcc/dcc_de.po1045
-rw-r--r--po/modules/dcc/dcc_es.po1064
-rw-r--r--po/modules/dcc/dcc_fi.po898
-rw-r--r--po/modules/dcc/dcc_fr.po1022
-rw-r--r--po/modules/dcc/dcc_hu.po992
-rw-r--r--po/modules/dcc/dcc_it.po1018
-rw-r--r--po/modules/dcc/dcc_pt.po1002
-rw-r--r--po/modules/dcc/dcc_pt_BR.po1052
-rw-r--r--po/modules/dcc/dcc_ru.po1020
-rw-r--r--po/modules/dcc/dcc_uk.po1012
-rw-r--r--po/modules/editor/Makefile.am74
-rw-r--r--po/modules/editor/editor_ca.po114
-rw-r--r--po/modules/editor/editor_cs.po114
-rw-r--r--po/modules/editor/editor_de.po115
-rw-r--r--po/modules/editor/editor_es.po111
-rw-r--r--po/modules/editor/editor_fi.po113
-rw-r--r--po/modules/editor/editor_fr.po114
-rw-r--r--po/modules/editor/editor_hu.po113
-rw-r--r--po/modules/editor/editor_it.po137
-rw-r--r--po/modules/editor/editor_pt.po116
-rw-r--r--po/modules/editor/editor_pt_BR.po114
-rw-r--r--po/modules/editor/editor_ru.po118
-rw-r--r--po/modules/editor/editor_uk.po118
-rw-r--r--po/modules/filetransferwindow/Makefile.am76
-rw-r--r--po/modules/filetransferwindow/filetransferwindow_ca.po130
-rw-r--r--po/modules/filetransferwindow/filetransferwindow_cs.po125
-rw-r--r--po/modules/filetransferwindow/filetransferwindow_de.po127
-rw-r--r--po/modules/filetransferwindow/filetransferwindow_es.po126
-rw-r--r--po/modules/filetransferwindow/filetransferwindow_fi.po122
-rw-r--r--po/modules/filetransferwindow/filetransferwindow_fr.po123
-rw-r--r--po/modules/filetransferwindow/filetransferwindow_hr.po123
-rw-r--r--po/modules/filetransferwindow/filetransferwindow_hu.po123
-rw-r--r--po/modules/filetransferwindow/filetransferwindow_it.po125
-rw-r--r--po/modules/filetransferwindow/filetransferwindow_pt.po125
-rw-r--r--po/modules/filetransferwindow/filetransferwindow_pt_BR.po128
-rw-r--r--po/modules/filetransferwindow/filetransferwindow_ru.po130
-rw-r--r--po/modules/filetransferwindow/filetransferwindow_uk.po128
-rw-r--r--po/modules/logview/Makefile.am74
-rw-r--r--po/modules/logview/logview_ca.po120
-rw-r--r--po/modules/logview/logview_cs.po120
-rw-r--r--po/modules/logview/logview_de.po122
-rw-r--r--po/modules/logview/logview_es.po117
-rw-r--r--po/modules/logview/logview_fi.po119
-rw-r--r--po/modules/logview/logview_fr.po120
-rw-r--r--po/modules/logview/logview_hu.po119
-rw-r--r--po/modules/logview/logview_it.po119
-rw-r--r--po/modules/logview/logview_pt.po123
-rw-r--r--po/modules/logview/logview_pt_BR.po119
-rw-r--r--po/modules/logview/logview_ru.po124
-rw-r--r--po/modules/logview/logview_uk.po124
-rw-r--r--po/modules/mediaplayer/Makefile.am68
-rw-r--r--po/modules/mediaplayer/mediaplayer_cs.po144
-rw-r--r--po/modules/mediaplayer/mediaplayer_de.po151
-rw-r--r--po/modules/mediaplayer/mediaplayer_fi.po140
-rw-r--r--po/modules/mediaplayer/mediaplayer_fr.po149
-rw-r--r--po/modules/mediaplayer/mediaplayer_hr.po139
-rw-r--r--po/modules/mediaplayer/mediaplayer_hu.po142
-rw-r--r--po/modules/mediaplayer/mediaplayer_it.po147
-rw-r--r--po/modules/mediaplayer/mediaplayer_ru.po143
-rw-r--r--po/modules/mediaplayer/mediaplayer_uk.po147
-rw-r--r--po/modules/notifier/Makefile.am76
-rw-r--r--po/modules/notifier/notifier_ca.po74
-rw-r--r--po/modules/notifier/notifier_cs.po73
-rw-r--r--po/modules/notifier/notifier_de.po74
-rw-r--r--po/modules/notifier/notifier_es.po72
-rw-r--r--po/modules/notifier/notifier_fi.po69
-rw-r--r--po/modules/notifier/notifier_fr.po72
-rw-r--r--po/modules/notifier/notifier_hr.po69
-rw-r--r--po/modules/notifier/notifier_hu.po69
-rw-r--r--po/modules/notifier/notifier_it.po76
-rw-r--r--po/modules/notifier/notifier_pt.po77
-rw-r--r--po/modules/notifier/notifier_pt_BR.po73
-rw-r--r--po/modules/notifier/notifier_ru.po78
-rw-r--r--po/modules/notifier/notifier_uk.po78
-rw-r--r--po/modules/options/Makefile.am82
-rw-r--r--po/modules/options/options_bg.po4948
-rw-r--r--po/modules/options/options_ca.po13454
-rw-r--r--po/modules/options/options_cs.po13331
-rw-r--r--po/modules/options/options_de.po13673
-rw-r--r--po/modules/options/options_es.po13075
-rw-r--r--po/modules/options/options_fi.po3901
-rw-r--r--po/modules/options/options_fr.po4446
-rw-r--r--po/modules/options/options_hu.po4386
-rw-r--r--po/modules/options/options_it.po4437
-rw-r--r--po/modules/options/options_nl.po14859
-rw-r--r--po/modules/options/options_pl.po7797
-rw-r--r--po/modules/options/options_pt.po4421
-rw-r--r--po/modules/options/options_pt_BR.po13608
-rw-r--r--po/modules/options/options_ru.po4422
-rw-r--r--po/modules/options/options_sr.po15804
-rw-r--r--po/modules/options/options_uk.po4403
-rw-r--r--po/modules/perl/Makefile.am74
-rw-r--r--po/modules/perl/perl_ca.po48
-rw-r--r--po/modules/perl/perl_cs.po43
-rw-r--r--po/modules/perl/perl_de.po51
-rw-r--r--po/modules/perl/perl_es.po45
-rw-r--r--po/modules/perl/perl_fi.po42
-rw-r--r--po/modules/perl/perl_fr.po48
-rw-r--r--po/modules/perl/perl_hu.po43
-rw-r--r--po/modules/perl/perl_it.po50
-rw-r--r--po/modules/perl/perl_pt.po48
-rw-r--r--po/modules/perl/perl_pt_BR.po45
-rw-r--r--po/modules/perl/perl_ru.po46
-rw-r--r--po/modules/perl/perl_uk.po46
-rw-r--r--po/modules/perlcore/Makefile.am72
-rw-r--r--po/modules/perlcore/perlcore_ca.po23
-rw-r--r--po/modules/perlcore/perlcore_cs.po21
-rw-r--r--po/modules/perlcore/perlcore_de.po23
-rw-r--r--po/modules/perlcore/perlcore_es.po21
-rw-r--r--po/modules/perlcore/perlcore_fi.po21
-rw-r--r--po/modules/perlcore/perlcore_fr.po21
-rw-r--r--po/modules/perlcore/perlcore_hu.po21
-rw-r--r--po/modules/perlcore/perlcore_it.po23
-rw-r--r--po/modules/perlcore/perlcore_pt_BR.po22
-rw-r--r--po/modules/perlcore/perlcore_ru.po26
-rw-r--r--po/modules/perlcore/perlcore_uk.po26
-rw-r--r--po/modules/sharedfileswindow/Makefile.am77
-rw-r--r--po/modules/sharedfileswindow/sharedfileswindow_ca.po124
-rw-r--r--po/modules/sharedfileswindow/sharedfileswindow_cs.po124
-rw-r--r--po/modules/sharedfileswindow/sharedfileswindow_de.po125
-rw-r--r--po/modules/sharedfileswindow/sharedfileswindow_es.po123
-rw-r--r--po/modules/sharedfileswindow/sharedfileswindow_fi.po123
-rw-r--r--po/modules/sharedfileswindow/sharedfileswindow_fr.po123
-rw-r--r--po/modules/sharedfileswindow/sharedfileswindow_hr.po123
-rw-r--r--po/modules/sharedfileswindow/sharedfileswindow_hu.po124
-rw-r--r--po/modules/sharedfileswindow/sharedfileswindow_it.po128
-rw-r--r--po/modules/sharedfileswindow/sharedfileswindow_pt.po128
-rw-r--r--po/modules/sharedfileswindow/sharedfileswindow_pt_BR.po128
-rw-r--r--po/modules/sharedfileswindow/sharedfileswindow_ru.po129
-rw-r--r--po/modules/sharedfileswindow/sharedfileswindow_uk.po130
-rw-r--r--po/modules/theme/Makefile.am68
-rw-r--r--po/modules/theme/theme_cs.po370
-rw-r--r--po/modules/theme/theme_de.po407
-rw-r--r--po/modules/theme/theme_fi.po398
-rw-r--r--po/modules/theme/theme_fr.po410
-rw-r--r--po/modules/theme/theme_hu.po404
-rw-r--r--po/modules/theme/theme_it.po405
-rw-r--r--po/modules/theme/theme_pt.po403
-rw-r--r--po/modules/theme/theme_ru.po396
-rw-r--r--po/modules/theme/theme_uk.po397
-rw-r--r--po/modules/torrent/Makefile.am68
-rw-r--r--po/modules/torrent/torrent_cs.po67
-rw-r--r--po/modules/torrent/torrent_de.po77
-rw-r--r--po/modules/torrent/torrent_fi.po70
-rw-r--r--po/modules/torrent/torrent_hr.po68
-rw-r--r--po/modules/torrent/torrent_hu.po70
-rw-r--r--po/modules/torrent/torrent_it.po69
-rw-r--r--po/modules/torrent/torrent_pt.po70
-rw-r--r--po/modules/torrent/torrent_ru.po73
-rw-r--r--po/modules/torrent/torrent_uk.po66
-rw-r--r--scripts/Makefile.am5
-rw-r--r--scripts/browser/Makefile.am6
-rwxr-xr-xscripts/browser/kvi_run_netscape24
-rw-r--r--scripts/config/Makefile.am6
-rw-r--r--scripts/config/kvirc-config.in189
-rw-r--r--scripts/helpsearch/Makefile.am6
-rwxr-xr-xscripts/helpsearch/kvi_search_help123
-rw-r--r--src/Makefile.am10
-rw-r--r--src/config.h.in247
-rw-r--r--src/kvi_configstatus.h248
-rw-r--r--src/kvilib/Makefile.am5
-rw-r--r--src/kvilib/build/Makefile.am339
-rw-r--r--src/kvilib/config/Makefile.am5
-rw-r--r--src/kvilib/config/kvi_confignames.h61
-rw-r--r--src/kvilib/config/kvi_debug.h52
-rw-r--r--src/kvilib/config/kvi_defaults.h65
-rw-r--r--src/kvilib/config/kvi_fileextensions.h37
-rw-r--r--src/kvilib/config/kvi_settings.h140
-rw-r--r--src/kvilib/config/kvi_sourcesdate.h40
-rw-r--r--src/kvilib/config/kvi_version.h33
-rw-r--r--src/kvilib/config/kvi_wincfg.h210
-rw-r--r--src/kvilib/core/Makefile.am5
-rw-r--r--src/kvilib/core/kvi_bswap.h63
-rw-r--r--src/kvilib/core/kvi_error.cpp237
-rw-r--r--src/kvilib/core/kvi_error.h188
-rw-r--r--src/kvilib/core/kvi_heapobject.cpp96
-rw-r--r--src/kvilib/core/kvi_heapobject.h50
-rw-r--r--src/kvilib/core/kvi_inttypes.h95
-rw-r--r--src/kvilib/core/kvi_malloc.cpp198
-rw-r--r--src/kvilib/core/kvi_malloc.h88
-rw-r--r--src/kvilib/core/kvi_memmove.cpp253
-rw-r--r--src/kvilib/core/kvi_memmove.h105
-rw-r--r--src/kvilib/core/kvi_pointerhashtable.h999
-rw-r--r--src/kvilib/core/kvi_pointerlist.h1069
-rw-r--r--src/kvilib/core/kvi_qcstring.h39
-rw-r--r--src/kvilib/core/kvi_qstring.cpp1125
-rw-r--r--src/kvilib/core/kvi_qstring.h293
-rw-r--r--src/kvilib/core/kvi_strasm.h194
-rw-r--r--src/kvilib/core/kvi_string.cpp3063
-rw-r--r--src/kvilib/core/kvi_string.h552
-rw-r--r--src/kvilib/core/kvi_stringarray.cpp119
-rw-r--r--src/kvilib/core/kvi_stringarray.h55
-rw-r--r--src/kvilib/core/kvi_valuelist.h37
-rw-r--r--src/kvilib/ext/Makefile.am5
-rw-r--r--src/kvilib/ext/kvi_accel.h38
-rw-r--r--src/kvilib/ext/kvi_cmdformatter.cpp242
-rw-r--r--src/kvilib/ext/kvi_cmdformatter.h64
-rw-r--r--src/kvilib/ext/kvi_config.cpp1007
-rw-r--r--src/kvilib/ext/kvi_config.h162
-rw-r--r--src/kvilib/ext/kvi_crypt.cpp240
-rw-r--r--src/kvilib/ext/kvi_crypt.h160
-rw-r--r--src/kvilib/ext/kvi_databuffer.cpp135
-rw-r--r--src/kvilib/ext/kvi_databuffer.h56
-rw-r--r--src/kvilib/ext/kvi_dcophelper.cpp357
-rw-r--r--src/kvilib/ext/kvi_dcophelper.h82
-rw-r--r--src/kvilib/ext/kvi_doublebuffer.cpp90
-rw-r--r--src/kvilib/ext/kvi_doublebuffer.h62
-rw-r--r--src/kvilib/ext/kvi_draganddrop.h45
-rw-r--r--src/kvilib/ext/kvi_garbage.cpp148
-rw-r--r--src/kvilib/ext/kvi_garbage.h51
-rw-r--r--src/kvilib/ext/kvi_imagelib.cpp138
-rw-r--r--src/kvilib/ext/kvi_imagelib.h73
-rw-r--r--src/kvilib/ext/kvi_md5.cpp298
-rw-r--r--src/kvilib/ext/kvi_md5.h68
-rw-r--r--src/kvilib/ext/kvi_mediatype.cpp541
-rw-r--r--src/kvilib/ext/kvi_mediatype.h83
-rw-r--r--src/kvilib/ext/kvi_miscutils.cpp86
-rw-r--r--src/kvilib/ext/kvi_miscutils.h44
-rw-r--r--src/kvilib/ext/kvi_msgtype.cpp68
-rw-r--r--src/kvilib/ext/kvi_msgtype.h74
-rw-r--r--src/kvilib/ext/kvi_osinfo.cpp510
-rw-r--r--src/kvilib/ext/kvi_osinfo.h43
-rw-r--r--src/kvilib/ext/kvi_parameterlist.cpp254
-rw-r--r--src/kvilib/ext/kvi_parameterlist.h72
-rw-r--r--src/kvilib/ext/kvi_pixmap.cpp180
-rw-r--r--src/kvilib/ext/kvi_pixmap.h61
-rw-r--r--src/kvilib/ext/kvi_proxydb.cpp192
-rw-r--r--src/kvilib/ext/kvi_proxydb.h86
-rw-r--r--src/kvilib/ext/kvi_regchan.cpp181
-rw-r--r--src/kvilib/ext/kvi_regchan.h74
-rw-r--r--src/kvilib/ext/kvi_regusersdb.cpp743
-rw-r--r--src/kvilib/ext/kvi_regusersdb.h201
-rw-r--r--src/kvilib/ext/kvi_sharedfiles.cpp391
-rw-r--r--src/kvilib/ext/kvi_sharedfiles.h133
-rw-r--r--src/kvilib/ext/kvi_stringconversion.cpp277
-rw-r--r--src/kvilib/ext/kvi_stringconversion.h91
-rw-r--r--src/kvilib/ext/kvi_xlib.h45
-rw-r--r--src/kvilib/ext/moc_kvi_crypt.cpp94
-rw-r--r--src/kvilib/ext/moc_kvi_garbage.cpp104
-rw-r--r--src/kvilib/ext/moc_kvi_regusersdb.cpp143
-rw-r--r--src/kvilib/ext/moc_kvi_sharedfiles.cpp157
-rw-r--r--src/kvilib/file/Makefile.am5
-rw-r--r--src/kvilib/file/kvi_file.cpp256
-rw-r--r--src/kvilib/file/kvi_file.h120
-rw-r--r--src/kvilib/file/kvi_fileutils.cpp505
-rw-r--r--src/kvilib/file/kvi_fileutils.h112
-rw-r--r--src/kvilib/file/kvi_packagefile.cpp1028
-rw-r--r--src/kvilib/file/kvi_packagefile.h142
-rw-r--r--src/kvilib/include/Makefile.am4
-rw-r--r--src/kvilib/irc/Makefile.am5
-rw-r--r--src/kvilib/irc/kvi_avatar.cpp165
-rw-r--r--src/kvilib/irc/kvi_avatar.h83
-rw-r--r--src/kvilib/irc/kvi_avatarcache.cpp250
-rw-r--r--src/kvilib/irc/kvi_avatarcache.h69
-rw-r--r--src/kvilib/irc/kvi_ircmask.cpp760
-rw-r--r--src/kvilib/irc/kvi_ircmask.h164
-rw-r--r--src/kvilib/irc/kvi_ircserver.cpp373
-rw-r--r--src/kvilib/irc/kvi_ircserver.h206
-rw-r--r--src/kvilib/irc/kvi_ircserverdb.cpp646
-rw-r--r--src/kvilib/irc/kvi_ircserverdb.h116
-rw-r--r--src/kvilib/irc/kvi_ircuserdb.cpp285
-rw-r--r--src/kvilib/irc/kvi_ircuserdb.h145
-rw-r--r--src/kvilib/irc/kvi_mirccntrl.cpp307
-rw-r--r--src/kvilib/irc/kvi_mirccntrl.h163
-rw-r--r--src/kvilib/irc/kvi_nickserv.cpp312
-rw-r--r--src/kvilib/irc/kvi_nickserv.h112
-rw-r--r--src/kvilib/irc/kvi_useridentity.cpp252
-rw-r--r--src/kvilib/irc/kvi_useridentity.h145
-rw-r--r--src/kvilib/irc/moc_kvi_ircuserdb.cpp119
-rw-r--r--src/kvilib/net/Makefile.am5
-rw-r--r--src/kvilib/net/kvi_dns.cpp450
-rw-r--r--src/kvilib/net/kvi_dns.h142
-rw-r--r--src/kvilib/net/kvi_http.cpp1440
-rw-r--r--src/kvilib/net/kvi_http.h209
-rw-r--r--src/kvilib/net/kvi_netutils.cpp1504
-rw-r--r--src/kvilib/net/kvi_netutils.h104
-rw-r--r--src/kvilib/net/kvi_socket.cpp31
-rw-r--r--src/kvilib/net/kvi_socket.h356
-rw-r--r--src/kvilib/net/kvi_sockettype.h45
-rw-r--r--src/kvilib/net/kvi_ssl.cpp687
-rw-r--r--src/kvilib/net/kvi_ssl.h180
-rw-r--r--src/kvilib/net/kvi_url.cpp164
-rw-r--r--src/kvilib/net/kvi_url.h63
-rw-r--r--src/kvilib/net/moc_kvi_dns.cpp137
-rw-r--r--src/kvilib/net/moc_kvi_http.cpp263
-rw-r--r--src/kvilib/system/Makefile.am5
-rw-r--r--src/kvilib/system/kvi_byteorder.h62
-rw-r--r--src/kvilib/system/kvi_env.cpp89
-rw-r--r--src/kvilib/system/kvi_env.h60
-rw-r--r--src/kvilib/system/kvi_library.h115
-rw-r--r--src/kvilib/system/kvi_locale.cpp1191
-rw-r--r--src/kvilib/system/kvi_locale.h146
-rw-r--r--src/kvilib/system/kvi_process.h37
-rw-r--r--src/kvilib/system/kvi_stdarg.h65
-rw-r--r--src/kvilib/system/kvi_thread.cpp644
-rw-r--r--src/kvilib/system/kvi_thread.h378
-rw-r--r--src/kvilib/system/kvi_time.cpp135
-rw-r--r--src/kvilib/system/kvi_time.h92
-rw-r--r--src/kvilib/system/moc_kvi_locale.cpp92
-rw-r--r--src/kvilib/system/moc_kvi_thread.cpp104
-rw-r--r--src/kvilib/tal/Makefile.am5
-rw-r--r--src/kvilib/tal/kvi_tal_application.cpp69
-rw-r--r--src/kvilib/tal/kvi_tal_application.h34
-rw-r--r--src/kvilib/tal/kvi_tal_application_kde.h37
-rw-r--r--src/kvilib/tal/kvi_tal_application_qt.h37
-rw-r--r--src/kvilib/tal/kvi_tal_filedialog.cpp176
-rw-r--r--src/kvilib/tal/kvi_tal_filedialog.h40
-rw-r--r--src/kvilib/tal/kvi_tal_filedialog_kde.h50
-rw-r--r--src/kvilib/tal/kvi_tal_filedialog_qt.h44
-rw-r--r--src/kvilib/tal/kvi_tal_filedialog_qt4.h46
-rw-r--r--src/kvilib/tal/kvi_tal_grid.cpp34
-rw-r--r--src/kvilib/tal/kvi_tal_grid.h36
-rw-r--r--src/kvilib/tal/kvi_tal_grid_qt3.h39
-rw-r--r--src/kvilib/tal/kvi_tal_grid_qt4.h41
-rw-r--r--src/kvilib/tal/kvi_tal_groupbox.cpp34
-rw-r--r--src/kvilib/tal/kvi_tal_groupbox.h36
-rw-r--r--src/kvilib/tal/kvi_tal_groupbox_qt3.h47
-rw-r--r--src/kvilib/tal/kvi_tal_groupbox_qt4.h47
-rw-r--r--src/kvilib/tal/kvi_tal_hbox.cpp32
-rw-r--r--src/kvilib/tal/kvi_tal_hbox.h36
-rw-r--r--src/kvilib/tal/kvi_tal_hbox_qt3.h41
-rw-r--r--src/kvilib/tal/kvi_tal_hbox_qt4.h41
-rw-r--r--src/kvilib/tal/kvi_tal_iconview.cpp215
-rw-r--r--src/kvilib/tal/kvi_tal_iconview.h36
-rw-r--r--src/kvilib/tal/kvi_tal_iconview_qt3.h100
-rw-r--r--src/kvilib/tal/kvi_tal_iconview_qt4.h99
-rw-r--r--src/kvilib/tal/kvi_tal_listbox.cpp513
-rw-r--r--src/kvilib/tal/kvi_tal_listbox.h50
-rw-r--r--src/kvilib/tal/kvi_tal_listbox_qt3.h157
-rw-r--r--src/kvilib/tal/kvi_tal_listbox_qt4.h152
-rw-r--r--src/kvilib/tal/kvi_tal_listview.cpp1542
-rw-r--r--src/kvilib/tal/kvi_tal_listview.h51
-rw-r--r--src/kvilib/tal/kvi_tal_listview_qt3.h190
-rw-r--r--src/kvilib/tal/kvi_tal_listview_qt4.h199
-rw-r--r--src/kvilib/tal/kvi_tal_mainwindow.cpp69
-rw-r--r--src/kvilib/tal/kvi_tal_mainwindow.h38
-rw-r--r--src/kvilib/tal/kvi_tal_mainwindow_kde.h36
-rw-r--r--src/kvilib/tal/kvi_tal_mainwindow_qt3.h36
-rw-r--r--src/kvilib/tal/kvi_tal_mainwindow_qt4.h39
-rw-r--r--src/kvilib/tal/kvi_tal_menubar.cpp58
-rw-r--r--src/kvilib/tal/kvi_tal_menubar.h33
-rw-r--r--src/kvilib/tal/kvi_tal_menubar_kde.h35
-rw-r--r--src/kvilib/tal/kvi_tal_menubar_qt.h35
-rw-r--r--src/kvilib/tal/kvi_tal_popupmenu.cpp33
-rw-r--r--src/kvilib/tal/kvi_tal_popupmenu.h36
-rw-r--r--src/kvilib/tal/kvi_tal_popupmenu_qt3.h42
-rw-r--r--src/kvilib/tal/kvi_tal_popupmenu_qt4.h89
-rw-r--r--src/kvilib/tal/kvi_tal_scrollview.cpp33
-rw-r--r--src/kvilib/tal/kvi_tal_scrollview.h36
-rw-r--r--src/kvilib/tal/kvi_tal_scrollview_qt3.h41
-rw-r--r--src/kvilib/tal/kvi_tal_scrollview_qt4.h41
-rw-r--r--src/kvilib/tal/kvi_tal_tabdialog.cpp34
-rw-r--r--src/kvilib/tal/kvi_tal_tabdialog.h36
-rw-r--r--src/kvilib/tal/kvi_tal_tabdialog_qt3.h39
-rw-r--r--src/kvilib/tal/kvi_tal_tabdialog_qt4.h39
-rw-r--r--src/kvilib/tal/kvi_tal_textedit.cpp34
-rw-r--r--src/kvilib/tal/kvi_tal_textedit.h36
-rw-r--r--src/kvilib/tal/kvi_tal_textedit_qt3.h39
-rw-r--r--src/kvilib/tal/kvi_tal_textedit_qt4.h39
-rw-r--r--src/kvilib/tal/kvi_tal_toolbar.cpp107
-rw-r--r--src/kvilib/tal/kvi_tal_toolbar.h37
-rw-r--r--src/kvilib/tal/kvi_tal_toolbar_kde.h37
-rw-r--r--src/kvilib/tal/kvi_tal_toolbar_qt3.h39
-rw-r--r--src/kvilib/tal/kvi_tal_toolbar_qt4.h47
-rw-r--r--src/kvilib/tal/kvi_tal_toolbardocktype.h71
-rw-r--r--src/kvilib/tal/kvi_tal_tooltip.cpp125
-rw-r--r--src/kvilib/tal/kvi_tal_tooltip.h79
-rw-r--r--src/kvilib/tal/kvi_tal_vbox.cpp33
-rw-r--r--src/kvilib/tal/kvi_tal_vbox.h36
-rw-r--r--src/kvilib/tal/kvi_tal_vbox_qt3.h42
-rw-r--r--src/kvilib/tal/kvi_tal_vbox_qt4.h42
-rw-r--r--src/kvilib/tal/kvi_tal_widgetstack.cpp33
-rw-r--r--src/kvilib/tal/kvi_tal_widgetstack.h36
-rw-r--r--src/kvilib/tal/kvi_tal_widgetstack_qt3.h42
-rw-r--r--src/kvilib/tal/kvi_tal_widgetstack_qt4.h42
-rw-r--r--src/kvilib/tal/kvi_tal_windowstate.h42
-rw-r--r--src/kvilib/tal/kvi_tal_wizard.cpp584
-rw-r--r--src/kvilib/tal/kvi_tal_wizard.h169
-rw-r--r--src/kvilib/tal/moc_kvi_tal_wizard.cpp128
-rw-r--r--src/kvirc/Makefile.am5
-rw-r--r--src/kvirc/build/Makefile.am537
-rw-r--r--src/kvirc/include/Makefile.am3
-rw-r--r--src/kvirc/kernel/Makefile.am5
-rw-r--r--src/kvirc/kernel/kvi_action.cpp434
-rw-r--r--src/kvirc/kernel/kvi_action.h157
-rw-r--r--src/kvirc/kernel/kvi_actionmanager.cpp321
-rw-r--r--src/kvirc/kernel/kvi_actionmanager.h118
-rw-r--r--src/kvirc/kernel/kvi_app.cpp2074
-rw-r--r--src/kvirc/kernel/kvi_app.h344
-rw-r--r--src/kvirc/kernel/kvi_app_fs.cpp726
-rw-r--r--src/kvirc/kernel/kvi_app_setup.cpp864
-rw-r--r--src/kvirc/kernel/kvi_asynchronousconnectiondata.cpp39
-rw-r--r--src/kvirc/kernel/kvi_asynchronousconnectiondata.h54
-rw-r--r--src/kvirc/kernel/kvi_coreactionnames.h69
-rw-r--r--src/kvirc/kernel/kvi_coreactions.cpp1206
-rw-r--r--src/kvirc/kernel/kvi_coreactions.h188
-rw-r--r--src/kvirc/kernel/kvi_customtoolbardescriptor.cpp278
-rw-r--r--src/kvirc/kernel/kvi_customtoolbardescriptor.h86
-rw-r--r--src/kvirc/kernel/kvi_customtoolbarmanager.cpp239
-rw-r--r--src/kvirc/kernel/kvi_customtoolbarmanager.h76
-rw-r--r--src/kvirc/kernel/kvi_filetransfer.cpp190
-rw-r--r--src/kvirc/kernel/kvi_filetransfer.h116
-rw-r--r--src/kvirc/kernel/kvi_iconmanager.cpp924
-rw-r--r--src/kvirc/kernel/kvi_iconmanager.h501
-rw-r--r--src/kvirc/kernel/kvi_internalcmd.cpp81
-rw-r--r--src/kvirc/kernel/kvi_internalcmd.h72
-rw-r--r--src/kvirc/kernel/kvi_ipc.cpp269
-rw-r--r--src/kvirc/kernel/kvi_ipc.h75
-rw-r--r--src/kvirc/kernel/kvi_ircconnection.cpp1354
-rw-r--r--src/kvirc/kernel/kvi_ircconnection.h282
-rw-r--r--src/kvirc/kernel/kvi_ircconnectionantictcpflooddata.cpp38
-rw-r--r--src/kvirc/kernel/kvi_ircconnectionantictcpflooddata.h48
-rw-r--r--src/kvirc/kernel/kvi_ircconnectionasyncwhoisdata.cpp81
-rw-r--r--src/kvirc/kernel/kvi_ircconnectionasyncwhoisdata.h72
-rw-r--r--src/kvirc/kernel/kvi_ircconnectionnetsplitdetectordata.cpp37
-rw-r--r--src/kvirc/kernel/kvi_ircconnectionnetsplitdetectordata.h46
-rw-r--r--src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp285
-rw-r--r--src/kvirc/kernel/kvi_ircconnectionserverinfo.h141
-rw-r--r--src/kvirc/kernel/kvi_ircconnectionstatedata.cpp42
-rw-r--r--src/kvirc/kernel/kvi_ircconnectionstatedata.h77
-rw-r--r--src/kvirc/kernel/kvi_ircconnectionstatistics.cpp38
-rw-r--r--src/kvirc/kernel/kvi_ircconnectionstatistics.h50
-rw-r--r--src/kvirc/kernel/kvi_ircconnectiontarget.cpp66
-rw-r--r--src/kvirc/kernel/kvi_ircconnectiontarget.h69
-rw-r--r--src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp555
-rw-r--r--src/kvirc/kernel/kvi_ircconnectiontargetresolver.h88
-rw-r--r--src/kvirc/kernel/kvi_ircconnectionuserinfo.cpp65
-rw-r--r--src/kvirc/kernel/kvi_ircconnectionuserinfo.h88
-rw-r--r--src/kvirc/kernel/kvi_irccontext.cpp906
-rw-r--r--src/kvirc/kernel/kvi_irccontext.h188
-rw-r--r--src/kvirc/kernel/kvi_ircdatastreammonitor.cpp41
-rw-r--r--src/kvirc/kernel/kvi_ircdatastreammonitor.h50
-rw-r--r--src/kvirc/kernel/kvi_irclink.cpp406
-rw-r--r--src/kvirc/kernel/kvi_irclink.h122
-rw-r--r--src/kvirc/kernel/kvi_ircsocket.cpp1910
-rw-r--r--src/kvirc/kernel/kvi_ircsocket.h174
-rw-r--r--src/kvirc/kernel/kvi_ircurl.cpp363
-rw-r--r--src/kvirc/kernel/kvi_ircurl.h78
-rw-r--r--src/kvirc/kernel/kvi_lagmeter.cpp266
-rw-r--r--src/kvirc/kernel/kvi_lagmeter.h74
-rw-r--r--src/kvirc/kernel/kvi_main.cpp412
-rw-r--r--src/kvirc/kernel/kvi_notifylist.cpp1277
-rw-r--r--src/kvirc/kernel/kvi_notifylist.h161
-rw-r--r--src/kvirc/kernel/kvi_options.cpp1381
-rw-r--r--src/kvirc/kernel/kvi_options.h737
-rw-r--r--src/kvirc/kernel/kvi_out.h169
-rw-r--r--src/kvirc/kernel/kvi_sslmaster.cpp168
-rw-r--r--src/kvirc/kernel/kvi_sslmaster.h47
-rw-r--r--src/kvirc/kernel/kvi_texticonmanager.cpp254
-rw-r--r--src/kvirc/kernel/kvi_texticonmanager.h85
-rw-r--r--src/kvirc/kernel/kvi_theme.cpp299
-rw-r--r--src/kvirc/kernel/kvi_theme.h171
-rw-r--r--src/kvirc/kernel/kvi_useraction.cpp46
-rw-r--r--src/kvirc/kernel/kvi_useraction.h83
-rw-r--r--src/kvirc/kernel/kvi_userinput.cpp148
-rw-r--r--src/kvirc/kernel/kvi_userinput.h43
-rw-r--r--src/kvirc/kernel/moc_kvi_action.cpp137
-rw-r--r--src/kvirc/kernel/moc_kvi_actionmanager.cpp143
-rw-r--r--src/kvirc/kernel/moc_kvi_coreactions.cpp927
-rw-r--r--src/kvirc/kernel/moc_kvi_filetransfer.cpp212
-rw-r--r--src/kvirc/kernel/moc_kvi_ircconnection.cpp202
-rw-r--r--src/kvirc/kernel/moc_kvi_ircconnectiontargetresolver.cpp128
-rw-r--r--src/kvirc/kernel/moc_kvi_irccontext.cpp119
-rw-r--r--src/kvirc/kernel/moc_kvi_irclink.cpp119
-rw-r--r--src/kvirc/kernel/moc_kvi_ircsocket.cpp134
-rw-r--r--src/kvirc/kvs/Makefile.am5
-rw-r--r--src/kvirc/kvs/kvi_kvs.cpp144
-rw-r--r--src/kvirc/kvs/kvi_kvs.h59
-rw-r--r--src/kvirc/kvs/kvi_kvs_action.cpp66
-rw-r--r--src/kvirc/kvs/kvi_kvs_action.h59
-rw-r--r--src/kvirc/kvs/kvi_kvs_aliasmanager.cpp121
-rw-r--r--src/kvirc/kvs/kvi_kvs_aliasmanager.h67
-rw-r--r--src/kvirc/kvs/kvi_kvs_array.cpp227
-rw-r--r--src/kvirc/kvs/kvi_kvs_array.h63
-rw-r--r--src/kvirc/kvs/kvi_kvs_arraycast.cpp44
-rw-r--r--src/kvirc/kvs/kvi_kvs_arraycast.h50
-rw-r--r--src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp122
-rw-r--r--src/kvirc/kvs/kvi_kvs_asyncdnsoperation.h53
-rw-r--r--src/kvirc/kvs/kvi_kvs_asyncoperation.cpp66
-rw-r--r--src/kvirc/kvs/kvi_kvs_asyncoperation.h59
-rw-r--r--src/kvirc/kvs/kvi_kvs_callbackobject.cpp108
-rw-r--r--src/kvirc/kvs/kvi_kvs_callbackobject.h84
-rw-r--r--src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp1187
-rw-r--r--src/kvirc/kvs/kvi_kvs_corecallbackcommands.h78
-rw-r--r--src/kvirc/kvs/kvi_kvs_corefunctions.cpp156
-rw-r--r--src/kvirc/kvs/kvi_kvs_corefunctions.h148
-rw-r--r--src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp1131
-rw-r--r--src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp888
-rw-r--r--src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp679
-rw-r--r--src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp1109
-rw-r--r--src/kvirc/kvs/kvi_kvs_coresimplecommands.cpp237
-rw-r--r--src/kvirc/kvs/kvi_kvs_coresimplecommands.h126
-rw-r--r--src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp1277
-rw-r--r--src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp693
-rw-r--r--src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp1335
-rw-r--r--src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp975
-rw-r--r--src/kvirc/kvs/kvi_kvs_dnsmanager.cpp180
-rw-r--r--src/kvirc/kvs/kvi_kvs_dnsmanager.h86
-rw-r--r--src/kvirc/kvs/kvi_kvs_event.cpp80
-rw-r--r--src/kvirc/kvs/kvi_kvs_event.h54
-rw-r--r--src/kvirc/kvs/kvi_kvs_eventhandler.cpp78
-rw-r--r--src/kvirc/kvs/kvi_kvs_eventhandler.h106
-rw-r--r--src/kvirc/kvs/kvi_kvs_eventmanager.cpp678
-rw-r--r--src/kvirc/kvs/kvi_kvs_eventmanager.h120
-rw-r--r--src/kvirc/kvs/kvi_kvs_eventtable.cpp3147
-rw-r--r--src/kvirc/kvs/kvi_kvs_eventtable.h212
-rw-r--r--src/kvirc/kvs/kvi_kvs_eventtriggers.h289
-rw-r--r--src/kvirc/kvs/kvi_kvs_hash.cpp96
-rw-r--r--src/kvirc/kvs/kvi_kvs_hash.h64
-rw-r--r--src/kvirc/kvs/kvi_kvs_kernel.cpp221
-rw-r--r--src/kvirc/kvs/kvi_kvs_kernel.h134
-rw-r--r--src/kvirc/kvs/kvi_kvs_moduleinterface.cpp180
-rw-r--r--src/kvirc/kvs/kvi_kvs_moduleinterface.h228
-rw-r--r--src/kvirc/kvs/kvi_kvs_object.cpp1743
-rw-r--r--src/kvirc/kvs/kvi_kvs_object.h192
-rw-r--r--src/kvirc/kvs/kvi_kvs_object_class.cpp234
-rw-r--r--src/kvirc/kvs/kvi_kvs_object_class.h102
-rw-r--r--src/kvirc/kvs/kvi_kvs_object_controller.cpp229
-rw-r--r--src/kvirc/kvs/kvi_kvs_object_controller.h70
-rw-r--r--src/kvirc/kvs/kvi_kvs_object_functioncall.cpp28
-rw-r--r--src/kvirc/kvs/kvi_kvs_object_functioncall.h49
-rw-r--r--src/kvirc/kvs/kvi_kvs_object_functionhandler.cpp50
-rw-r--r--src/kvirc/kvs/kvi_kvs_object_functionhandler.h57
-rw-r--r--src/kvirc/kvs/kvi_kvs_object_functionhandlerimpl.cpp148
-rw-r--r--src/kvirc/kvs/kvi_kvs_object_functionhandlerimpl.h115
-rw-r--r--src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp371
-rw-r--r--src/kvirc/kvs/kvi_kvs_parameterprocessor.h140
-rw-r--r--src/kvirc/kvs/kvi_kvs_parser.cpp3827
-rw-r--r--src/kvirc/kvs/kvi_kvs_parser.h300
-rw-r--r--src/kvirc/kvs/kvi_kvs_parser_command.cpp339
-rw-r--r--src/kvirc/kvs/kvi_kvs_parser_comment.cpp101
-rw-r--r--src/kvirc/kvs/kvi_kvs_parser_dollar.cpp331
-rw-r--r--src/kvirc/kvs/kvi_kvs_parser_expression.cpp636
-rw-r--r--src/kvirc/kvs/kvi_kvs_parser_lside.cpp1196
-rw-r--r--src/kvirc/kvs/kvi_kvs_parser_macros.h47
-rw-r--r--src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp1988
-rw-r--r--src/kvirc/kvs/kvi_kvs_popupmanager.cpp117
-rw-r--r--src/kvirc/kvs/kvi_kvs_popupmanager.h57
-rw-r--r--src/kvirc/kvs/kvi_kvs_popupmenu.cpp1234
-rw-r--r--src/kvirc/kvs/kvi_kvs_popupmenu.h300
-rw-r--r--src/kvirc/kvs/kvi_kvs_processmanager.cpp376
-rw-r--r--src/kvirc/kvs/kvi_kvs_processmanager.h105
-rw-r--r--src/kvirc/kvs/kvi_kvs_report.cpp262
-rw-r--r--src/kvirc/kvs/kvi_kvs_report.h75
-rw-r--r--src/kvirc/kvs/kvi_kvs_runtimecall.cpp50
-rw-r--r--src/kvirc/kvs/kvi_kvs_runtimecall.h82
-rw-r--r--src/kvirc/kvs/kvi_kvs_runtimecontext.cpp206
-rw-r--r--src/kvirc/kvs/kvi_kvs_runtimecontext.h256
-rw-r--r--src/kvirc/kvs/kvi_kvs_rwevaluationresult.cpp66
-rw-r--r--src/kvirc/kvs/kvi_kvs_rwevaluationresult.h70
-rw-r--r--src/kvirc/kvs/kvi_kvs_script.cpp356
-rw-r--r--src/kvirc/kvs/kvi_kvs_script.h155
-rw-r--r--src/kvirc/kvs/kvi_kvs_scriptaddonmanager.cpp386
-rw-r--r--src/kvirc/kvs/kvi_kvs_scriptaddonmanager.h129
-rw-r--r--src/kvirc/kvs/kvi_kvs_switchlist.cpp75
-rw-r--r--src/kvirc/kvs/kvi_kvs_switchlist.h87
-rw-r--r--src/kvirc/kvs/kvi_kvs_timermanager.cpp256
-rw-r--r--src/kvirc/kvs/kvi_kvs_timermanager.h123
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode.h375
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp84
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.h45
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp120
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.h47
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_arraycount.cpp86
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_arraycount.h47
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp161
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_arrayelement.h54
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_arrayorhashelement.cpp45
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_arrayorhashelement.h42
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_arrayreferenceassert.cpp107
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_arrayreferenceassert.h54
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_base.cpp37
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_base.h51
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_baseobjectfunctioncall.cpp72
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_baseobjectfunctioncall.h50
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_callbackcommand.cpp73
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_callbackcommand.h48
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_command.cpp80
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_command.h54
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_commandevaluation.cpp60
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_commandevaluation.h46
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_commandwithparameters.cpp66
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_commandwithparameters.h49
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_compositedata.cpp86
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_compositedata.h48
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_constantdata.cpp80
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_constantdata.h52
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_corecallbackcommand.cpp72
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_corecallbackcommand.h51
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_corefunctioncall.cpp62
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_corefunctioncall.h48
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_coresimplecommand.cpp70
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_coresimplecommand.h49
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_data.cpp107
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_data.h66
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_datalist.cpp110
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_datalist.h57
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_expression.cpp776
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_expression.h249
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_expressionreturn.cpp68
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_expressionreturn.h45
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp79
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.h45
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_functioncall.cpp62
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_functioncall.h47
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_globalvariable.cpp63
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_globalvariable.h45
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_hashcount.cpp88
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_hashcount.h47
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp164
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_hashelement.h52
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_hashreferenceassert.cpp107
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_hashreferenceassert.h53
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_indirectdata.cpp46
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_indirectdata.h42
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_instruction.cpp43
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_instruction.h54
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_instructionblock.cpp88
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_instructionblock.h55
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_localvariable.cpp76
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_localvariable.h45
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp97
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.h50
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp90
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.h48
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp97
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.h48
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_multipleparameteridentifier.cpp89
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_multipleparameteridentifier.h49
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_objectfield.cpp80
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_objectfield.h47
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_objectfunctioncall.cpp60
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_objectfunctioncall.h45
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_operation.cpp1497
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_operation.h296
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_parameterreturn.cpp88
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_parameterreturn.h45
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp96
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.h49
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp148
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.h58
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_simplecommand.cpp58
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_simplecommand.h43
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_singleparameteridentifier.cpp74
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_singleparameteridentifier.h50
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_specialcommand.cpp54
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_specialcommand.h41
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_specialcommandbreak.cpp55
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_specialcommandbreak.h45
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp157
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.h69
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp424
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.h193
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_specialcommanddo.cpp87
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_specialcommanddo.h51
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_specialcommandfor.cpp133
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_specialcommandfor.h53
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_specialcommandforeach.cpp191
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_specialcommandforeach.h53
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_specialcommandif.cpp94
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_specialcommandif.h50
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_specialcommandswitch.cpp349
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_specialcommandswitch.h117
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_specialcommandunset.cpp74
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_specialcommandunset.h47
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_specialcommandwhile.cpp97
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_specialcommandwhile.h51
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_stringcast.cpp67
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_stringcast.h45
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_switchlist.cpp170
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_switchlist.h61
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_thisobjectfunctioncall.cpp73
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_thisobjectfunctioncall.h49
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_variable.cpp54
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_variable.h47
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_voidfunctioncall.cpp66
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_voidfunctioncall.h47
-rw-r--r--src/kvirc/kvs/kvi_kvs_types.h38
-rw-r--r--src/kvirc/kvs/kvi_kvs_useraction.cpp277
-rw-r--r--src/kvirc/kvs/kvi_kvs_useraction.h97
-rw-r--r--src/kvirc/kvs/kvi_kvs_variant.cpp1615
-rw-r--r--src/kvirc/kvs/kvi_kvs_variant.h208
-rw-r--r--src/kvirc/kvs/kvi_kvs_variantlist.cpp199
-rw-r--r--src/kvirc/kvs/kvi_kvs_variantlist.h81
-rw-r--r--src/kvirc/kvs/moc_kvi_kvs_action.cpp92
-rw-r--r--src/kvirc/kvs/moc_kvi_kvs_asyncdnsoperation.cpp107
-rw-r--r--src/kvirc/kvs/moc_kvi_kvs_asyncoperation.cpp92
-rw-r--r--src/kvirc/kvs/moc_kvi_kvs_dnsmanager.cpp104
-rw-r--r--src/kvirc/kvs/moc_kvi_kvs_object.cpp104
-rw-r--r--src/kvirc/kvs/moc_kvi_kvs_popupmenu.cpp217
-rw-r--r--src/kvirc/kvs/moc_kvi_kvs_processmanager.cpp116
-rw-r--r--src/kvirc/kvs/moc_kvi_kvs_timermanager.cpp92
-rw-r--r--src/kvirc/kvs/moc_kvi_kvs_useraction.cpp92
-rw-r--r--src/kvirc/module/Makefile.am5
-rw-r--r--src/kvirc/module/kvi_mexlinkfilter.cpp35
-rw-r--r--src/kvirc/module/kvi_mexlinkfilter.h45
-rw-r--r--src/kvirc/module/kvi_mexserverimport.cpp33
-rw-r--r--src/kvirc/module/kvi_mexserverimport.h45
-rw-r--r--src/kvirc/module/kvi_mextoolbar.cpp38
-rw-r--r--src/kvirc/module/kvi_mextoolbar.h38
-rw-r--r--src/kvirc/module/kvi_module.cpp379
-rw-r--r--src/kvirc/module/kvi_module.h204
-rw-r--r--src/kvirc/module/kvi_moduleextension.cpp253
-rw-r--r--src/kvirc/module/kvi_moduleextension.h143
-rw-r--r--src/kvirc/module/kvi_modulemanager.cpp369
-rw-r--r--src/kvirc/module/kvi_modulemanager.h70
-rw-r--r--src/kvirc/module/moc_kvi_mexlinkfilter.cpp94
-rw-r--r--src/kvirc/module/moc_kvi_mexserverimport.cpp124
-rw-r--r--src/kvirc/module/moc_kvi_mextoolbar.cpp94
-rw-r--r--src/kvirc/module/moc_kvi_modulemanager.cpp129
-rw-r--r--src/kvirc/sparser/Makefile.am5
-rw-r--r--src/kvirc/sparser/kvi_antispam.cpp122
-rw-r--r--src/kvirc/sparser/kvi_antispam.h31
-rw-r--r--src/kvirc/sparser/kvi_ircmessage.cpp179
-rw-r--r--src/kvirc/sparser/kvi_ircmessage.h106
-rw-r--r--src/kvirc/sparser/kvi_numeric.h430
-rw-r--r--src/kvirc/sparser/kvi_sp_ctcp.cpp1855
-rw-r--r--src/kvirc/sparser/kvi_sp_literal.cpp1867
-rw-r--r--src/kvirc/sparser/kvi_sp_numeric.cpp2003
-rw-r--r--src/kvirc/sparser/kvi_sp_tables.cpp1089
-rw-r--r--src/kvirc/sparser/kvi_sparser.cpp150
-rw-r--r--src/kvirc/sparser/kvi_sparser.h268
-rw-r--r--src/kvirc/ui/Makefile.am5
-rw-r--r--src/kvirc/ui/kvi_actiondrawer.cpp227
-rw-r--r--src/kvirc/ui/kvi_actiondrawer.h107
-rw-r--r--src/kvirc/ui/kvi_channel.cpp1628
-rw-r--r--src/kvirc/ui/kvi_channel.h313
-rw-r--r--src/kvirc/ui/kvi_colorwin.cpp122
-rw-r--r--src/kvirc/ui/kvi_colorwin.h47
-rw-r--r--src/kvirc/ui/kvi_console.cpp1283
-rw-r--r--src/kvirc/ui/kvi_console.h212
-rw-r--r--src/kvirc/ui/kvi_cryptcontroller.cpp390
-rw-r--r--src/kvirc/ui/kvi_cryptcontroller.h116
-rw-r--r--src/kvirc/ui/kvi_ctcppagedialog.cpp147
-rw-r--r--src/kvirc/ui/kvi_ctcppagedialog.h56
-rw-r--r--src/kvirc/ui/kvi_customtoolbar.cpp670
-rw-r--r--src/kvirc/ui/kvi_customtoolbar.h91
-rw-r--r--src/kvirc/ui/kvi_debugwindow.cpp132
-rw-r--r--src/kvirc/ui/kvi_debugwindow.h54
-rw-r--r--src/kvirc/ui/kvi_dynamictooltip.cpp61
-rw-r--r--src/kvirc/ui/kvi_dynamictooltip.h61
-rw-r--r--src/kvirc/ui/kvi_filedialog.cpp229
-rw-r--r--src/kvirc/ui/kvi_filedialog.h55
-rw-r--r--src/kvirc/ui/kvi_frame.cpp1450
-rw-r--r--src/kvirc/ui/kvi_frame.h259
-rw-r--r--src/kvirc/ui/kvi_historywin.cpp255
-rw-r--r--src/kvirc/ui/kvi_historywin.h61
-rw-r--r--src/kvirc/ui/kvi_htmldialog.cpp155
-rw-r--r--src/kvirc/ui/kvi_htmldialog.h87
-rw-r--r--src/kvirc/ui/kvi_imagedialog.cpp367
-rw-r--r--src/kvirc/ui/kvi_imagedialog.h109
-rw-r--r--src/kvirc/ui/kvi_input.cpp2680
-rw-r--r--src/kvirc/ui/kvi_input.h262
-rw-r--r--src/kvirc/ui/kvi_ipeditor.cpp453
-rw-r--r--src/kvirc/ui/kvi_ipeditor.h62
-rw-r--r--src/kvirc/ui/kvi_irctoolbar.cpp441
-rw-r--r--src/kvirc/ui/kvi_irctoolbar.h95
-rw-r--r--src/kvirc/ui/kvi_ircview.cpp5161
-rw-r--r--src/kvirc/ui/kvi_ircview.h252
-rw-r--r--src/kvirc/ui/kvi_ircviewprivate.h164
-rw-r--r--src/kvirc/ui/kvi_ircviewtools.cpp348
-rw-r--r--src/kvirc/ui/kvi_ircviewtools.h119
-rw-r--r--src/kvirc/ui/kvi_listview.cpp212
-rw-r--r--src/kvirc/ui/kvi_listview.h58
-rw-r--r--src/kvirc/ui/kvi_maskeditor.cpp350
-rw-r--r--src/kvirc/ui/kvi_maskeditor.h108
-rw-r--r--src/kvirc/ui/kvi_mdicaption.cpp285
-rw-r--r--src/kvirc/ui/kvi_mdicaption.h101
-rw-r--r--src/kvirc/ui/kvi_mdichild.cpp576
-rw-r--r--src/kvirc/ui/kvi_mdichild.h122
-rw-r--r--src/kvirc/ui/kvi_mdimanager.cpp1126
-rw-r--r--src/kvirc/ui/kvi_mdimanager.h144
-rw-r--r--src/kvirc/ui/kvi_menubar.cpp415
-rw-r--r--src/kvirc/ui/kvi_menubar.h83
-rw-r--r--src/kvirc/ui/kvi_modeeditor.cpp336
-rw-r--r--src/kvirc/ui/kvi_modeeditor.h70
-rwxr-xr-xsrc/kvirc/ui/kvi_modew.cpp175
-rwxr-xr-xsrc/kvirc/ui/kvi_modew.h57
-rw-r--r--src/kvirc/ui/kvi_msgbox.cpp89
-rw-r--r--src/kvirc/ui/kvi_msgbox.h53
-rw-r--r--src/kvirc/ui/kvi_optionswidget.cpp722
-rw-r--r--src/kvirc/ui/kvi_optionswidget.h163
-rw-r--r--src/kvirc/ui/kvi_query.cpp659
-rw-r--r--src/kvirc/ui/kvi_query.h95
-rw-r--r--src/kvirc/ui/kvi_scriptbutton.cpp98
-rw-r--r--src/kvirc/ui/kvi_scriptbutton.h79
-rw-r--r--src/kvirc/ui/kvi_scripteditor.cpp139
-rw-r--r--src/kvirc/ui/kvi_scripteditor.h69
-rw-r--r--src/kvirc/ui/kvi_selectors.cpp839
-rw-r--r--src/kvirc/ui/kvi_selectors.h367
-rw-r--r--src/kvirc/ui/kvi_splash.cpp222
-rw-r--r--src/kvirc/ui/kvi_splash.h72
-rw-r--r--src/kvirc/ui/kvi_statusbar.cpp643
-rw-r--r--src/kvirc/ui/kvi_statusbar.h130
-rw-r--r--src/kvirc/ui/kvi_statusbarapplet.cpp563
-rw-r--r--src/kvirc/ui/kvi_statusbarapplet.h195
-rw-r--r--src/kvirc/ui/kvi_styled_controls.cpp373
-rw-r--r--src/kvirc/ui/kvi_styled_controls.h113
-rw-r--r--src/kvirc/ui/kvi_taskbar.cpp1509
-rw-r--r--src/kvirc/ui/kvi_taskbar.h312
-rw-r--r--src/kvirc/ui/kvi_texticonwin.cpp283
-rw-r--r--src/kvirc/ui/kvi_texticonwin.h64
-rw-r--r--src/kvirc/ui/kvi_themedlabel.cpp154
-rw-r--r--src/kvirc/ui/kvi_themedlabel.h62
-rw-r--r--src/kvirc/ui/kvi_toolbar.cpp160
-rw-r--r--src/kvirc/ui/kvi_toolbar.h52
-rw-r--r--src/kvirc/ui/kvi_toolwindows_container.cpp140
-rw-r--r--src/kvirc/ui/kvi_toolwindows_container.h65
-rw-r--r--src/kvirc/ui/kvi_topicw.cpp834
-rw-r--r--src/kvirc/ui/kvi_topicw.h120
-rw-r--r--src/kvirc/ui/kvi_userlistview.cpp1972
-rw-r--r--src/kvirc/ui/kvi_userlistview.h259
-rw-r--r--src/kvirc/ui/kvi_window.cpp1518
-rw-r--r--src/kvirc/ui/kvi_window.h393
-rw-r--r--src/kvirc/ui/moc_kvi_actiondrawer.cpp238
-rw-r--r--src/kvirc/ui/moc_kvi_customtoolbar.cpp180
-rw-r--r--src/kvirc/ui/moc_kvi_debugwindow.cpp92
-rw-r--r--src/kvirc/ui/moc_kvi_htmldialog.cpp107
-rw-r--r--src/kvirc/ui/moc_kvi_imagedialog.cpp126
-rw-r--r--src/kvirc/ui/moc_kvi_ircviewtools.cpp116
-rw-r--r--src/kvirc/ui/moc_kvi_listview.cpp92
-rw-r--r--src/kvirc/ui/moc_kvi_mdicaption.cpp238
-rw-r--r--src/kvirc/ui/moc_kvi_mdichild.cpp141
-rw-r--r--src/kvirc/ui/moc_kvi_mdimanager.cpp191
-rw-r--r--src/kvirc/ui/moc_kvi_statusbar.cpp126
-rw-r--r--src/kvirc/ui/moc_kvi_statusbarapplet.cpp496
-rw-r--r--src/kvirc/ui/moc_kvi_toolwindows_container.cpp165
-rw-r--r--src/modules/Makefile.am61
-rw-r--r--src/modules/about/ENTRIES259
-rw-r--r--src/modules/about/Makefile.am27
-rw-r--r--src/modules/about/aboutdialog.cpp166
-rw-r--r--src/modules/about/aboutdialog.h39
-rw-r--r--src/modules/about/abouttext.inc768
-rw-r--r--src/modules/about/libkviabout.cpp100
-rw-r--r--src/modules/about/mkabouttext.pl172
-rw-r--r--src/modules/action/Makefile.am17
-rw-r--r--src/modules/action/libkviaction.cpp533
-rw-r--r--src/modules/actioneditor/Makefile.am21
-rw-r--r--src/modules/actioneditor/actioneditor.cpp1009
-rw-r--r--src/modules/actioneditor/actioneditor.h210
-rw-r--r--src/modules/actioneditor/libkviactioneditor.cpp86
-rw-r--r--src/modules/addon/Makefile.am22
-rw-r--r--src/modules/addon/libkviaddon.cpp659
-rw-r--r--src/modules/addon/managementdialog.cpp403
-rw-r--r--src/modules/addon/managementdialog.h114
-rw-r--r--src/modules/addon/pics/Makefile.am9
-rw-r--r--src/modules/addon/pics/kvi_dialog_addons.pngbin0 -> 191267 bytes
-rw-r--r--src/modules/aliaseditor/Makefile.am21
-rw-r--r--src/modules/aliaseditor/aliaseditor.cpp1408
-rw-r--r--src/modules/aliaseditor/aliaseditor.h197
-rw-r--r--src/modules/aliaseditor/libkvialiaseditor.cpp90
-rw-r--r--src/modules/avatar/Makefile.am20
-rw-r--r--src/modules/avatar/libkviavatar.cpp585
-rw-r--r--src/modules/avatar/libkviavatar.h54
-rw-r--r--src/modules/chan/Makefile.am18
-rw-r--r--src/modules/chan/libkvichan.cpp1635
-rw-r--r--src/modules/channelsjoin/Makefile.am20
-rw-r--r--src/modules/channelsjoin/channelsjoinwindow.cpp301
-rw-r--r--src/modules/channelsjoin/channelsjoinwindow.h70
-rw-r--r--src/modules/channelsjoin/libkvichannelsjoin.cpp108
-rw-r--r--src/modules/clock/Makefile.am20
-rw-r--r--src/modules/clock/libkviclock.cpp257
-rw-r--r--src/modules/clock/libkviclock.h46
-rw-r--r--src/modules/codetester/Makefile.am17
-rw-r--r--src/modules/codetester/codetester.cpp157
-rw-r--r--src/modules/codetester/codetester.h67
-rw-r--r--src/modules/codetester/libkvicodetester.cpp89
-rw-r--r--src/modules/config/Makefile.am18
-rw-r--r--src/modules/config/libkviconfig.cpp877
-rw-r--r--src/modules/context/Makefile.am18
-rw-r--r--src/modules/context/libkvicontext.cpp401
-rw-r--r--src/modules/dcc/Makefile.am66
-rw-r--r--src/modules/dcc/adpcmcodec.cpp294
-rw-r--r--src/modules/dcc/adpcmcodec.h59
-rw-r--r--src/modules/dcc/broker.cpp898
-rw-r--r--src/modules/dcc/broker.h124
-rw-r--r--src/modules/dcc/canvas.cpp301
-rw-r--r--src/modules/dcc/canvas.h74
-rw-r--r--src/modules/dcc/canvaswidget.cpp1601
-rw-r--r--src/modules/dcc/canvaswidget.h322
-rw-r--r--src/modules/dcc/chat.cpp842
-rw-r--r--src/modules/dcc/chat.h101
-rw-r--r--src/modules/dcc/codec.cpp88
-rw-r--r--src/modules/dcc/codec.h57
-rw-r--r--src/modules/dcc/descriptor.cpp224
-rw-r--r--src/modules/dcc/descriptor.h163
-rw-r--r--src/modules/dcc/dialogs.cpp206
-rw-r--r--src/modules/dcc/dialogs.h82
-rw-r--r--src/modules/dcc/gsmcodec.cpp149
-rw-r--r--src/modules/dcc/gsmcodec.h54
-rw-r--r--src/modules/dcc/kvi_dccfiletransfericons.pngbin0 -> 25192 bytes
-rw-r--r--src/modules/dcc/libkvidcc.cpp2766
-rw-r--r--src/modules/dcc/marshal.cpp647
-rw-r--r--src/modules/dcc/marshal.h112
-rw-r--r--src/modules/dcc/requests.cpp1154
-rw-r--r--src/modules/dcc/send.cpp1898
-rw-r--r--src/modules/dcc/send.h260
-rw-r--r--src/modules/dcc/thread.cpp111
-rw-r--r--src/modules/dcc/thread.h79
-rw-r--r--src/modules/dcc/utils.cpp169
-rw-r--r--src/modules/dcc/utils.h34
-rw-r--r--src/modules/dcc/voice.cpp1041
-rw-r--r--src/modules/dcc/voice.h440
-rw-r--r--src/modules/dcc/window.cpp53
-rw-r--r--src/modules/dcc/window.h49
-rw-r--r--src/modules/dialog/Makefile.am21
-rw-r--r--src/modules/dialog/libkvidialog.cpp920
-rw-r--r--src/modules/dialog/libkvidialog.h133
-rw-r--r--src/modules/dockwidget/Makefile.am33
-rw-r--r--src/modules/dockwidget/kvi_dock.pngbin0 -> 1959 bytes
-rw-r--r--src/modules/dockwidget/kvi_dock_part-0.pngbin0 -> 1477 bytes
-rw-r--r--src/modules/dockwidget/kvi_dock_part-1.pngbin0 -> 1027 bytes
-rw-r--r--src/modules/dockwidget/kvi_dock_part-2.pngbin0 -> 1034 bytes
-rw-r--r--src/modules/dockwidget/libkvidockwidget.h34
-rw-r--r--src/modules/dockwidget/libkvidockwidget_qt3.cpp858
-rw-r--r--src/modules/dockwidget/libkvidockwidget_qt3.h95
-rw-r--r--src/modules/dockwidget/libkvidockwidget_qt4.cpp691
-rw-r--r--src/modules/dockwidget/libkvidockwidget_qt4.h81
-rw-r--r--src/modules/editor/Makefile.am20
-rw-r--r--src/modules/editor/libkvieditor.cpp94
-rw-r--r--src/modules/editor/scripteditor.cpp1224
-rw-r--r--src/modules/editor/scripteditor.h200
-rw-r--r--src/modules/eventeditor/Makefile.am21
-rw-r--r--src/modules/eventeditor/eventeditor.cpp536
-rw-r--r--src/modules/eventeditor/eventeditor.h120
-rw-r--r--src/modules/eventeditor/libkvieventeditor.cpp88
-rw-r--r--src/modules/file/Makefile.am18
-rw-r--r--src/modules/file/libkvifile.cpp1260
-rw-r--r--src/modules/filetransferwindow/Makefile.am22
-rw-r--r--src/modules/filetransferwindow/caps/Makefile.am9
-rw-r--r--src/modules/filetransferwindow/caps/filetransferwindow0
-rw-r--r--src/modules/filetransferwindow/filetransferwindow.cpp768
-rw-r--r--src/modules/filetransferwindow/filetransferwindow.h111
-rw-r--r--src/modules/filetransferwindow/libkvifiletransferwindow.cpp161
-rw-r--r--src/modules/help/Makefile.am22
-rw-r--r--src/modules/help/helpwidget.cpp154
-rw-r--r--src/modules/help/helpwidget.h61
-rw-r--r--src/modules/help/helpwindow.cpp329
-rw-r--r--src/modules/help/helpwindow.h75
-rwxr-xr-xsrc/modules/help/index.cpp854
-rwxr-xr-xsrc/modules/help/index.h124
-rw-r--r--src/modules/help/libkvihelp.cpp236
-rw-r--r--src/modules/http/Makefile.am26
-rw-r--r--src/modules/http/httpfiletransfer.cpp489
-rw-r--r--src/modules/http/httpfiletransfer.h104
-rw-r--r--src/modules/http/kvi_httpicons.pngbin0 -> 19630 bytes
-rw-r--r--src/modules/http/libkvihttp.cpp324
-rw-r--r--src/modules/ident/Makefile.am20
-rw-r--r--src/modules/ident/libkviident.cpp615
-rw-r--r--src/modules/ident/libkviident.h86
-rw-r--r--src/modules/iograph/Makefile.am20
-rw-r--r--src/modules/iograph/libkviiograph.cpp297
-rw-r--r--src/modules/iograph/libkviiograph.h55
-rw-r--r--src/modules/lamerizer/Makefile.am27
-rw-r--r--src/modules/lamerizer/lamerizer1
-rw-r--r--src/modules/lamerizer/libkvilamerizer.cpp279
-rw-r--r--src/modules/lamerizer/libkvilamerizer.h47
-rw-r--r--src/modules/links/Makefile.am20
-rw-r--r--src/modules/links/libkvilinks.cpp116
-rw-r--r--src/modules/links/linkswindow.cpp472
-rw-r--r--src/modules/links/linkswindow.h89
-rw-r--r--src/modules/list/Makefile.am20
-rw-r--r--src/modules/list/libkvilist.cpp101
-rw-r--r--src/modules/list/listwindow.cpp535
-rw-r--r--src/modules/list/listwindow.h122
-rw-r--r--src/modules/log/Makefile.am18
-rw-r--r--src/modules/log/libkvilog.cpp309
-rw-r--r--src/modules/logview/Makefile.am23
-rw-r--r--src/modules/logview/caps/Makefile.am9
-rw-r--r--src/modules/logview/caps/logview0
-rw-r--r--src/modules/logview/libkvilogview.cpp170
-rw-r--r--src/modules/logview/logviewmdiwindow.cpp477
-rw-r--r--src/modules/logview/logviewmdiwindow.h125
-rw-r--r--src/modules/logview/logviewwidget.cpp76
-rw-r--r--src/modules/logview/logviewwidget.h86
-rw-r--r--src/modules/mask/Makefile.am18
-rw-r--r--src/modules/mask/libkvimask.cpp201
-rw-r--r--src/modules/math/Makefile.am18
-rw-r--r--src/modules/math/libkvimath.cpp475
-rw-r--r--src/modules/mediaplayer/Makefile.am36
-rw-r--r--src/modules/mediaplayer/libkvimediaplayer.cpp1751
-rw-r--r--src/modules/mediaplayer/mp_amarokinterface.cpp189
-rw-r--r--src/modules/mediaplayer/mp_amarokinterface.h76
-rw-r--r--src/modules/mediaplayer/mp_amipinterface.cpp400
-rw-r--r--src/modules/mediaplayer/mp_amipinterface.h58
-rw-r--r--src/modules/mediaplayer/mp_dcopinterface.cpp224
-rw-r--r--src/modules/mediaplayer/mp_dcopinterface.h57
-rw-r--r--src/modules/mediaplayer/mp_interface.cpp277
-rw-r--r--src/modules/mediaplayer/mp_interface.h238
-rw-r--r--src/modules/mediaplayer/mp_jukinterface.cpp185
-rw-r--r--src/modules/mediaplayer/mp_jukinterface.h77
-rw-r--r--src/modules/mediaplayer/mp_mp3.cpp468
-rw-r--r--src/modules/mediaplayer/mp_mp3.h137
-rw-r--r--src/modules/mediaplayer/mp_winampinterface.cpp566
-rw-r--r--src/modules/mediaplayer/mp_winampinterface.h76
-rw-r--r--src/modules/mediaplayer/mp_xmmsinterface.cpp355
-rw-r--r--src/modules/mediaplayer/mp_xmmsinterface.h84
-rw-r--r--src/modules/mircimport/Makefile.am22
-rw-r--r--src/modules/mircimport/caps/Makefile.am9
-rw-r--r--src/modules/mircimport/caps/mircimport1
-rw-r--r--src/modules/mircimport/libkvimircimport.cpp385
-rw-r--r--src/modules/mircimport/libkvimircimport.h82
-rw-r--r--src/modules/mircimport/pics/Makefile.am9
-rw-r--r--src/modules/mircimport/pics/kvi_mircimport.pngbin0 -> 733 bytes
-rw-r--r--src/modules/my/Makefile.am20
-rw-r--r--src/modules/my/idle.cpp133
-rw-r--r--src/modules/my/idle.h84
-rw-r--r--src/modules/my/idle_mac.cpp162
-rw-r--r--src/modules/my/idle_x11.cpp113
-rw-r--r--src/modules/my/libkvimy.cpp430
-rw-r--r--src/modules/notifier/Makefile.am44
-rw-r--r--src/modules/notifier/libkvinotifier.cpp323
-rw-r--r--src/modules/notifier/libkvinotifier.kvc28
-rw-r--r--src/modules/notifier/notifiermessage.cpp107
-rw-r--r--src/modules/notifier/notifiermessage.h97
-rw-r--r--src/modules/notifier/notifiersettings.h66
-rw-r--r--src/modules/notifier/notifierwindow.cpp1427
-rw-r--r--src/modules/notifier/notifierwindow.h194
-rw-r--r--src/modules/notifier/notifierwindowbody.cpp232
-rw-r--r--src/modules/notifier/notifierwindowbody.h147
-rw-r--r--src/modules/notifier/notifierwindowborder.cpp220
-rw-r--r--src/modules/notifier/notifierwindowborder.h154
-rw-r--r--src/modules/notifier/notifierwindowprogressbar.cpp51
-rw-r--r--src/modules/notifier/notifierwindowprogressbar.h67
-rw-r--r--src/modules/notifier/notifierwindowtabs.cpp705
-rw-r--r--src/modules/notifier/notifierwindowtabs.h263
-rwxr-xr-xsrc/modules/notifier/pics/Makefile.am9
-rwxr-xr-xsrc/modules/notifier/pics/notifier_background.pngbin0 -> 4306 bytes
-rw-r--r--src/modules/notifier/pics/notifier_close.pngbin0 -> 311 bytes
-rw-r--r--src/modules/notifier/pics/notifier_down.pngbin0 -> 491 bytes
-rw-r--r--src/modules/notifier/pics/notifier_icon_body_next_clicked.pngbin0 -> 630 bytes
-rw-r--r--src/modules/notifier/pics/notifier_icon_body_next_off.pngbin0 -> 561 bytes
-rw-r--r--src/modules/notifier/pics/notifier_icon_body_next_on.pngbin0 -> 568 bytes
-rw-r--r--src/modules/notifier/pics/notifier_icon_body_prev_clicked.pngbin0 -> 599 bytes
-rw-r--r--src/modules/notifier/pics/notifier_icon_body_prev_off.pngbin0 -> 520 bytes
-rw-r--r--src/modules/notifier/pics/notifier_icon_body_prev_on.pngbin0 -> 535 bytes
-rw-r--r--src/modules/notifier/pics/notifier_icon_body_write_clicked.pngbin0 -> 166 bytes
-rw-r--r--src/modules/notifier/pics/notifier_icon_body_write_off.pngbin0 -> 171 bytes
-rw-r--r--src/modules/notifier/pics/notifier_icon_body_write_on.pngbin0 -> 160 bytes
-rw-r--r--src/modules/notifier/pics/notifier_icon_close_clicked.pngbin0 -> 1087 bytes
-rw-r--r--src/modules/notifier/pics/notifier_icon_close_clicked_hl.pngbin0 -> 1064 bytes
-rw-r--r--src/modules/notifier/pics/notifier_icon_close_out.pngbin0 -> 1248 bytes
-rw-r--r--src/modules/notifier/pics/notifier_icon_close_out_hl.pngbin0 -> 1214 bytes
-rw-r--r--src/modules/notifier/pics/notifier_icon_close_over.pngbin0 -> 1374 bytes
-rw-r--r--src/modules/notifier/pics/notifier_icon_close_over_hl.pngbin0 -> 1338 bytes
-rw-r--r--src/modules/notifier/pics/notifier_icon_tab_close_clicked.pngbin0 -> 518 bytes
-rw-r--r--src/modules/notifier/pics/notifier_icon_tab_close_off.pngbin0 -> 428 bytes
-rw-r--r--src/modules/notifier/pics/notifier_icon_tab_close_on.pngbin0 -> 517 bytes
-rw-r--r--src/modules/notifier/pics/notifier_icon_tab_next_clicked.pngbin0 -> 809 bytes
-rw-r--r--src/modules/notifier/pics/notifier_icon_tab_next_out.pngbin0 -> 828 bytes
-rw-r--r--src/modules/notifier/pics/notifier_icon_tab_next_over.pngbin0 -> 870 bytes
-rw-r--r--src/modules/notifier/pics/notifier_icon_tab_prev_clicked.pngbin0 -> 773 bytes
-rw-r--r--src/modules/notifier/pics/notifier_icon_tab_prev_out.pngbin0 -> 827 bytes
-rw-r--r--src/modules/notifier/pics/notifier_icon_tab_prev_over.pngbin0 -> 843 bytes
-rw-r--r--src/modules/notifier/pics/notifier_left.pngbin0 -> 442 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pen.pngbin0 -> 712 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_body_dwn.pngbin0 -> 138 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_body_dwndx.pngbin0 -> 162 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_body_dwnsx.pngbin0 -> 162 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_body_dx.pngbin0 -> 136 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_body_kvirc.pngbin0 -> 2599 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_body_kvirc_dwn.pngbin0 -> 249 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_body_kvirc_sx.pngbin0 -> 172 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_body_sx.pngbin0 -> 136 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_caption_bkg.pngbin0 -> 154 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_caption_bkg_hl.pngbin0 -> 154 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_caption_dx.pngbin0 -> 196 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_caption_dx_hl.pngbin0 -> 196 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_caption_sx.pngbin0 -> 195 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_caption_sx_hl.pngbin0 -> 195 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_tab_bkg.pngbin0 -> 150 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_tab_dx.pngbin0 -> 157 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_tab_focused_bkg.pngbin0 -> 156 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_tab_focused_dx.pngbin0 -> 187 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_tab_focused_sx.pngbin0 -> 184 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_tab_sx.pngbin0 -> 157 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_tab_unfocused_bkg.pngbin0 -> 175 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_tab_unfocused_dx.pngbin0 -> 210 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_tab_unfocused_sx.pngbin0 -> 204 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_wnd_dwn.pngbin0 -> 156 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_wnd_dwn_hl.pngbin0 -> 156 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_wnd_dwndx.pngbin0 -> 193 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_wnd_dwndx_hl.pngbin0 -> 193 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_wnd_dwnsx.pngbin0 -> 196 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_wnd_dwnsx_hl.pngbin0 -> 196 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_wnd_dx.pngbin0 -> 150 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_wnd_dx_hl.pngbin0 -> 150 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_wnd_sx.pngbin0 -> 150 bytes
-rw-r--r--src/modules/notifier/pics/notifier_pix_wnd_sx_hl.pngbin0 -> 150 bytes
-rw-r--r--src/modules/notifier/pics/notifier_right.pngbin0 -> 443 bytes
-rw-r--r--src/modules/notifier/pics/notifier_up.pngbin0 -> 488 bytes
-rw-r--r--src/modules/objects/Makefile.am143
-rw-r--r--src/modules/objects/class_button.cpp178
-rw-r--r--src/modules/objects/class_button.h58
-rw-r--r--src/modules/objects/class_buttongroup.cpp87
-rw-r--r--src/modules/objects/class_buttongroup.h44
-rw-r--r--src/modules/objects/class_checkbox.cpp128
-rw-r--r--src/modules/objects/class_checkbox.h48
-rw-r--r--src/modules/objects/class_combobox.cpp368
-rw-r--r--src/modules/objects/class_combobox.h71
-rw-r--r--src/modules/objects/class_dialog.cpp89
-rw-r--r--src/modules/objects/class_dialog.h44
-rw-r--r--src/modules/objects/class_dockwindow.cpp276
-rw-r--r--src/modules/objects/class_dockwindow.h49
-rw-r--r--src/modules/objects/class_file.cpp488
-rw-r--r--src/modules/objects/class_file.h113
-rw-r--r--src/modules/objects/class_groupbox.cpp376
-rw-r--r--src/modules/objects/class_groupbox.h64
-rw-r--r--src/modules/objects/class_hbox.cpp128
-rw-r--r--src/modules/objects/class_hbox.h47
-rw-r--r--src/modules/objects/class_label.cpp409
-rw-r--r--src/modules/objects/class_label.h54
-rw-r--r--src/modules/objects/class_layout.cpp274
-rw-r--r--src/modules/objects/class_layout.h52
-rw-r--r--src/modules/objects/class_lcd.cpp180
-rw-r--r--src/modules/objects/class_lcd.h51
-rw-r--r--src/modules/objects/class_lineedit.cpp461
-rw-r--r--src/modules/objects/class_lineedit.h81
-rw-r--r--src/modules/objects/class_list.cpp392
-rw-r--r--src/modules/objects/class_list.h64
-rw-r--r--src/modules/objects/class_listbox.cpp390
-rw-r--r--src/modules/objects/class_listbox.h70
-rw-r--r--src/modules/objects/class_listview.cpp557
-rw-r--r--src/modules/objects/class_listview.h102
-rw-r--r--src/modules/objects/class_listviewitem.cpp421
-rw-r--r--src/modules/objects/class_listviewitem.h88
-rw-r--r--src/modules/objects/class_mainwindow.cpp158
-rw-r--r--src/modules/objects/class_mainwindow.h47
-rw-r--r--src/modules/objects/class_menubar.cpp76
-rw-r--r--src/modules/objects/class_menubar.h40
-rw-r--r--src/modules/objects/class_multilineedit.cpp1217
-rw-r--r--src/modules/objects/class_multilineedit.h110
-rw-r--r--src/modules/objects/class_painter.cpp1007
-rw-r--r--src/modules/objects/class_painter.h96
-rw-r--r--src/modules/objects/class_pixmap.cpp317
-rw-r--r--src/modules/objects/class_pixmap.h72
-rw-r--r--src/modules/objects/class_popupmenu.cpp361
-rw-r--r--src/modules/objects/class_popupmenu.h58
-rw-r--r--src/modules/objects/class_process.cpp317
-rw-r--r--src/modules/objects/class_process.h74
-rw-r--r--src/modules/objects/class_progressbar.cpp162
-rw-r--r--src/modules/objects/class_progressbar.h51
-rw-r--r--src/modules/objects/class_radiobutton.cpp138
-rw-r--r--src/modules/objects/class_radiobutton.h51
-rw-r--r--src/modules/objects/class_slider.cpp287
-rw-r--r--src/modules/objects/class_slider.h64
-rw-r--r--src/modules/objects/class_socket.cpp1331
-rw-r--r--src/modules/objects/class_socket.h185
-rw-r--r--src/modules/objects/class_spinbox.cpp265
-rw-r--r--src/modules/objects/class_spinbox.h64
-rw-r--r--src/modules/objects/class_tabwidget.cpp541
-rw-r--r--src/modules/objects/class_tabwidget.h61
-rw-r--r--src/modules/objects/class_tbrowser.cpp143
-rw-r--r--src/modules/objects/class_tbrowser.h52
-rw-r--r--src/modules/objects/class_toolbar.cpp156
-rw-r--r--src/modules/objects/class_toolbar.h50
-rw-r--r--src/modules/objects/class_toolbutton.cpp341
-rw-r--r--src/modules/objects/class_toolbutton.h69
-rw-r--r--src/modules/objects/class_urllabel.cpp330
-rw-r--r--src/modules/objects/class_urllabel.h64
-rw-r--r--src/modules/objects/class_vbox.cpp128
-rw-r--r--src/modules/objects/class_vbox.h45
-rw-r--r--src/modules/objects/class_widget.cpp1745
-rw-r--r--src/modules/objects/class_widget.h113
-rw-r--r--src/modules/objects/class_window.cpp158
-rw-r--r--src/modules/objects/class_window.h64
-rw-r--r--src/modules/objects/class_wizard.cpp371
-rw-r--r--src/modules/objects/class_wizard.h79
-rw-r--r--src/modules/objects/class_workspace.cpp262
-rw-r--r--src/modules/objects/class_workspace.h53
-rw-r--r--src/modules/objects/class_wrapper.cpp269
-rw-r--r--src/modules/objects/class_wrapper.h53
-rw-r--r--src/modules/objects/class_xmlreader.cpp343
-rw-r--r--src/modules/objects/class_xmlreader.h46
-rw-r--r--src/modules/objects/libkviobjects.cpp1066
-rw-r--r--src/modules/objects/object_macros.h90
-rw-r--r--src/modules/options/Makefile.am157
-rw-r--r--src/modules/options/container.cpp123
-rw-r--r--src/modules/options/container.h53
-rw-r--r--src/modules/options/dialog.cpp675
-rw-r--r--src/modules/options/dialog.h104
-rw-r--r--src/modules/options/instances.cpp3590
-rw-r--r--src/modules/options/instances.h83
-rw-r--r--src/modules/options/libkvioptions.cpp324
-rwxr-xr-xsrc/modules/options/mkcreateinstanceproc.sh441
-rw-r--r--src/modules/options/optw_antispam.cpp64
-rw-r--r--src/modules/options/optw_antispam.h47
-rw-r--r--src/modules/options/optw_avatar.cpp131
-rw-r--r--src/modules/options/optw_avatar.h45
-rw-r--r--src/modules/options/optw_away.cpp71
-rw-r--r--src/modules/options/optw_away.h46
-rw-r--r--src/modules/options/optw_connection.cpp321
-rw-r--r--src/modules/options/optw_connection.h116
-rw-r--r--src/modules/options/optw_ctcp.cpp90
-rw-r--r--src/modules/options/optw_ctcp.h41
-rw-r--r--src/modules/options/optw_ctcpfloodprotection.cpp116
-rw-r--r--src/modules/options/optw_ctcpfloodprotection.h41
-rw-r--r--src/modules/options/optw_dcc.cpp393
-rw-r--r--src/modules/options/optw_dcc.h139
-rw-r--r--src/modules/options/optw_generalopt.cpp51
-rw-r--r--src/modules/options/optw_generalopt.h39
-rw-r--r--src/modules/options/optw_highlighting.cpp128
-rw-r--r--src/modules/options/optw_highlighting.h67
-rw-r--r--src/modules/options/optw_ident.cpp37
-rw-r--r--src/modules/options/optw_ident.h28
-rw-r--r--src/modules/options/optw_identity.cpp729
-rw-r--r--src/modules/options/optw_identity.h192
-rw-r--r--src/modules/options/optw_ignore.cpp62
-rw-r--r--src/modules/options/optw_ignore.h47
-rw-r--r--src/modules/options/optw_input.cpp156
-rw-r--r--src/modules/options/optw_input.h61
-rw-r--r--src/modules/options/optw_interfacefeatures.cpp88
-rw-r--r--src/modules/options/optw_interfacefeatures.h48
-rw-r--r--src/modules/options/optw_interfacelookglobal.cpp215
-rw-r--r--src/modules/options/optw_interfacelookglobal.h113
-rw-r--r--src/modules/options/optw_irc.cpp220
-rw-r--r--src/modules/options/optw_irc.h116
-rw-r--r--src/modules/options/optw_ircoutput.cpp94
-rw-r--r--src/modules/options/optw_ircoutput.h49
-rw-r--r--src/modules/options/optw_ircview.cpp168
-rw-r--r--src/modules/options/optw_ircview.h83
-rw-r--r--src/modules/options/optw_lag.cpp85
-rw-r--r--src/modules/options/optw_lag.h40
-rw-r--r--src/modules/options/optw_logging.cpp64
-rw-r--r--src/modules/options/optw_logging.h42
-rw-r--r--src/modules/options/optw_mediatypes.cpp262
-rw-r--r--src/modules/options/optw_mediatypes.h83
-rw-r--r--src/modules/options/optw_messages.cpp693
-rw-r--r--src/modules/options/optw_messages.h186
-rw-r--r--src/modules/options/optw_nickserv.cpp368
-rw-r--r--src/modules/options/optw_nickserv.h89
-rw-r--r--src/modules/options/optw_notify.cpp134
-rw-r--r--src/modules/options/optw_notify.h54
-rw-r--r--src/modules/options/optw_protection.cpp50
-rw-r--r--src/modules/options/optw_protection.h48
-rw-r--r--src/modules/options/optw_proxy.cpp367
-rw-r--r--src/modules/options/optw_proxy.h94
-rw-r--r--src/modules/options/optw_query.cpp115
-rw-r--r--src/modules/options/optw_query.h43
-rw-r--r--src/modules/options/optw_servers.cpp1712
-rw-r--r--src/modules/options/optw_servers.h210
-rw-r--r--src/modules/options/optw_sound.cpp310
-rw-r--r--src/modules/options/optw_sound.h94
-rw-r--r--src/modules/options/optw_ssl.cpp35
-rw-r--r--src/modules/options/optw_ssl.h29
-rw-r--r--src/modules/options/optw_taskbar.cpp255
-rw-r--r--src/modules/options/optw_taskbar.h125
-rw-r--r--src/modules/options/optw_textencoding.cpp139
-rw-r--r--src/modules/options/optw_textencoding.h50
-rw-r--r--src/modules/options/optw_texticons.cpp244
-rw-r--r--src/modules/options/optw_texticons.h105
-rw-r--r--src/modules/options/optw_theme.cpp26
-rw-r--r--src/modules/options/optw_theme.h30
-rw-r--r--src/modules/options/optw_tools.cpp50
-rw-r--r--src/modules/options/optw_tools.h46
-rw-r--r--src/modules/options/optw_topiclabel.cpp43
-rw-r--r--src/modules/options/optw_topiclabel.h41
-rw-r--r--src/modules/options/optw_transport.cpp33
-rw-r--r--src/modules/options/optw_transport.h29
-rw-r--r--src/modules/options/optw_tray.cpp91
-rw-r--r--src/modules/options/optw_tray.h50
-rw-r--r--src/modules/options/optw_uparser.cpp62
-rw-r--r--src/modules/options/optw_uparser.h40
-rw-r--r--src/modules/options/optw_urlhandlers.cpp127
-rw-r--r--src/modules/options/optw_urlhandlers.h52
-rw-r--r--src/modules/options/optw_userlist.cpp245
-rw-r--r--src/modules/options/optw_userlist.h114
-rw-r--r--src/modules/perl/Makefile.am18
-rw-r--r--src/modules/perl/libkviperl.cpp600
-rw-r--r--src/modules/perlcore/KVIrc.xs139
-rw-r--r--src/modules/perlcore/Makefile.am23
-rw-r--r--src/modules/perlcore/libkviperlcore.cpp414
-rw-r--r--src/modules/perlcore/perlcoreinterface.h59
-rw-r--r--src/modules/perlcore/ppport.h540
-rw-r--r--src/modules/perlcore/typemap313
-rw-r--r--src/modules/perlcore/xs.inc277
-rw-r--r--src/modules/popupeditor/Makefile.am17
-rw-r--r--src/modules/popupeditor/libkvipopupeditor.cpp88
-rw-r--r--src/modules/popupeditor/popupeditor.cpp1433
-rw-r--r--src/modules/popupeditor/popupeditor.h206
-rw-r--r--src/modules/raweditor/Makefile.am17
-rw-r--r--src/modules/raweditor/libkviraweditor.cpp87
-rw-r--r--src/modules/raweditor/raweditor.cpp563
-rw-r--r--src/modules/raweditor/raweditor.h118
-rw-r--r--src/modules/regchan/Makefile.am18
-rw-r--r--src/modules/regchan/libkviregchan.cpp426
-rw-r--r--src/modules/reguser/Makefile.am25
-rw-r--r--src/modules/reguser/dialog.cpp903
-rw-r--r--src/modules/reguser/dialog.h148
-rw-r--r--src/modules/reguser/edituser.cpp781
-rw-r--r--src/modules/reguser/edituser.h152
-rw-r--r--src/modules/reguser/libkvireguser.cpp1239
-rw-r--r--src/modules/reguser/wizard.cpp464
-rw-r--r--src/modules/reguser/wizard.h89
-rw-r--r--src/modules/rijndael/Makefile.am23
-rw-r--r--src/modules/rijndael/ablowfish.cpp632
-rw-r--r--src/modules/rijndael/ablowfish.h141
-rw-r--r--src/modules/rijndael/caps/Makefile.am9
-rw-r--r--src/modules/rijndael/caps/rijndael1
-rw-r--r--src/modules/rijndael/libkvirijndael.cpp853
-rw-r--r--src/modules/rijndael/libkvirijndael.h169
-rw-r--r--src/modules/rijndael/rijndael.cpp1626
-rw-r--r--src/modules/rijndael/rijndael.h153
-rw-r--r--src/modules/setup/Makefile.am26
-rw-r--r--src/modules/setup/libkvisetup.cpp158
-rw-r--r--src/modules/setup/setupwizard.cpp1132
-rw-r--r--src/modules/setup/setupwizard.h164
-rw-r--r--src/modules/sharedfile/Makefile.am18
-rw-r--r--src/modules/sharedfile/libkvisharedfile.cpp281
-rw-r--r--src/modules/sharedfileswindow/Makefile.am22
-rw-r--r--src/modules/sharedfileswindow/caps/Makefile.am9
-rw-r--r--src/modules/sharedfileswindow/caps/sharedfileswindow0
-rw-r--r--src/modules/sharedfileswindow/libkvisharedfileswindow.cpp158
-rw-r--r--src/modules/sharedfileswindow/sharedfileswindow.cpp742
-rw-r--r--src/modules/sharedfileswindow/sharedfileswindow.h114
-rw-r--r--src/modules/snd/Makefile.am22
-rw-r--r--src/modules/snd/libkvisnd.cpp744
-rw-r--r--src/modules/snd/libkvisnd.h213
-rw-r--r--src/modules/socketspy/Makefile.am20
-rw-r--r--src/modules/socketspy/libkvisocketspy.cpp92
-rw-r--r--src/modules/socketspy/socketspywindow.cpp125
-rw-r--r--src/modules/socketspy/socketspywindow.h53
-rw-r--r--src/modules/spaste/Makefile.am24
-rw-r--r--src/modules/spaste/controller.cpp121
-rw-r--r--src/modules/spaste/controller.h59
-rw-r--r--src/modules/spaste/libkvispaste.cpp346
-rw-r--r--src/modules/spaste/libkvispaste.h13
-rw-r--r--src/modules/str/Makefile.am18
-rw-r--r--src/modules/str/libkvistr.cpp2330
-rw-r--r--src/modules/system/Makefile.am18
-rw-r--r--src/modules/system/libkvisystem.cpp749
-rw-r--r--src/modules/system/plugin.cpp427
-rw-r--r--src/modules/system/plugin.h80
-rw-r--r--src/modules/term/Makefile.am21
-rw-r--r--src/modules/term/libkviterm.cpp167
-rw-r--r--src/modules/term/termwidget.cpp179
-rw-r--r--src/modules/term/termwidget.h72
-rw-r--r--src/modules/term/termwindow.cpp84
-rw-r--r--src/modules/term/termwindow.h54
-rw-r--r--src/modules/texticons/Makefile.am18
-rw-r--r--src/modules/texticons/libkvitexticons.cpp161
-rw-r--r--src/modules/theme/Makefile.am36
-rw-r--r--src/modules/theme/libkvitheme.cpp193
-rw-r--r--src/modules/theme/managementdialog.cpp459
-rw-r--r--src/modules/theme/managementdialog.h109
-rw-r--r--src/modules/theme/packthemedialog.cpp489
-rw-r--r--src/modules/theme/packthemedialog.h66
-rw-r--r--src/modules/theme/savethemedialog.cpp301
-rw-r--r--src/modules/theme/savethemedialog.h71
-rw-r--r--src/modules/theme/themefunctions.cpp396
-rw-r--r--src/modules/theme/themefunctions.h54
-rw-r--r--src/modules/tip/Makefile.am30
-rw-r--r--src/modules/tip/kvi_tip.pngbin0 -> 2590 bytes
-rw-r--r--src/modules/tip/libkvitip.cpp309
-rw-r--r--src/modules/tip/libkvitip.h71
-rw-r--r--src/modules/tip/libkvitip.kvc28
-rw-r--r--src/modules/tip/libkvitip_cs.kvc29
-rw-r--r--src/modules/tip/libkvitip_it.kvc28
-rw-r--r--src/modules/tip/libkvitip_ru.kvc29
-rw-r--r--src/modules/tmphighlight/Makefile.am22
-rw-r--r--src/modules/tmphighlight/libkvitmphighlight.cpp174
-rw-r--r--src/modules/toolbar/Makefile.am18
-rw-r--r--src/modules/toolbar/libkvitoolbar.cpp602
-rw-r--r--src/modules/toolbareditor/Makefile.am20
-rw-r--r--src/modules/toolbareditor/libkvitoolbareditor.cpp96
-rw-r--r--src/modules/toolbareditor/toolbareditor.cpp537
-rw-r--r--src/modules/toolbareditor/toolbareditor.h119
-rw-r--r--src/modules/torrent/Makefile.am30
-rw-r--r--src/modules/torrent/libkvitorrent.cpp904
-rw-r--r--src/modules/torrent/tc_interface.cpp31
-rw-r--r--src/modules/torrent/tc_interface.h164
-rw-r--r--src/modules/torrent/tc_ktorrentdcopinterface.cpp500
-rw-r--r--src/modules/torrent/tc_ktorrentdcopinterface.h131
-rw-r--r--src/modules/torrent/tc_statusbarapplet.cpp69
-rw-r--r--src/modules/torrent/tc_statusbarapplet.h26
-rw-r--r--src/modules/url/Makefile.am23
-rw-r--r--src/modules/url/caps/Makefile.am9
-rw-r--r--src/modules/url/caps/url0
-rw-r--r--src/modules/url/icons.h554
-rw-r--r--src/modules/url/libkviurl.cpp910
-rw-r--r--src/modules/url/libkviurl.h144
-rw-r--r--src/modules/window/Makefile.am21
-rw-r--r--src/modules/window/libkviwindow.cpp1547
-rw-r--r--src/modules/window/userwindow.cpp107
-rw-r--r--src/modules/window/userwindow.h48
1941 files changed, 728744 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 00000000..969ac28d
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,2280 @@
+02 May 2007 - 12 March 2008
+ [KVIrc Development Team]
+ - A lot of changes documented in the svn log. See http://svn.kvirc.de/kvirc/ for the timeline.
+
+02 May 2007
+ [Alexey]
+ - New KVS functions: $serialize and $unserialize to deal with JSON-serialized strings
+
+16 Apr 2007
+ [Noldor] (with the input from Pragma and Iakko)
+ - Iakko's notifier is back. New in this version:
+ 1) QT4 compatible (on win and macos it is uses fast setWindowOpacity effect instead internal notifier blend())
+ 2) Added Option to disable fadein/out effect useful on slow machine (need test)
+ 3) Fixed strange crash on QT4 and some minor bug in show/hide event. (it is a trick... need to debug)
+ This a w.i.p. and need some test on linux.
+
+12 Apr 2007
+ [TheXception]
+ - Added $system.call to call functions of dll/so files via kvs.
+
+10 Apr 2007
+ [Alexey]
+ - Configurable avatar scaling on load
+ - Human-redable file sized on dcc transfers
+
+12 Mar 2007
+ [Alexey]
+ - Added support for remote dns on socks5 proxy
+ - Added option to configure identd output mode
+
+06 Mar 2007
+ [Pragma]
+ - Added svg and generated png icons for kvs,kvc,kvt and kva files.
+ Added the KDE mimetypes too.
+ - Some fixes for Qt4 support
+
+26 Feb 2007
+ [Alexey]
+ - Added Export/Import feature to channel list module
+
+25 Feb 2007
+ [Alexey]
+ - Repainted reuser list
+ - Added search field for mask editors
+
+24 Feb 2007
+ [Noldor]
+ - New QT4 win compiling projects: still unusable... kvilib and kvirc compile but only in release;
+ you need to compile qt libraries by yourself then try to compile kvilib and kvirc (use COMPILE_USE_QT4 in kvi_wincfg.h).
+ Some module compile without problem... others need to be ported.
+
+20 Feb 2007
+ [Alexey]
+ - Completely reworked ignore system
+ - Implemented reguser match caching
+ - Implemented custom color for registered user caching
+ [Pragma]
+ - Yet more Qt4 port.
+ - We now require Qt >= 4.2.2 for Qt4 support to work. Older 4.x versions
+ have bugs that can't be worked around and tend to crash kvirc
+ in various circumstances (including displaying tooltips).
+ Qt 4.2 also re-adds the possibility to add QWidget objects to popup menus.
+ - Yet more modules ported.
+ - A fix for the KVS expression operator precedence.
+ - A couple of general fixes that I can't remember but have been reported on
+ the list.
+ - I'm thinking about qmake support (as suggested by Matteo Catanese some time ago)
+ ... will require some work ... what do you think about it ?
+
+18 Feb 2007
+ [Alexey]
+ - Fixed dns resolver under win32
+ - Fixed minimized channels open
+ - Added bot detection icon (who will write docs?)
+ - Fixed winamp plugin problem under win32 (removed msvcr80.dll dependency)
+
+08 Feb 2007
+ [Pragma]
+ - More Qt 4.x port.
+ Solved the most disturbing problems: it looks a lot better now.
+ - Font metric cache values can no longer be computed directly from a
+ widget's font. We must use the painter idea of the font instead.
+ This complicates caching a bit.
+ - Some of the QPainter functions seem to behave in a bit different way
+ - QFrame::drawContents() is gone... we need to reimplement paintEvent()
+ - The setAutoFillBackground(false) setting seems to be propagated to children
+ in some way (?) (as opposed to backgroundMode(NoBackground) in Qt3)
+ - QToolButton::drawButton() is gone, need to directly drawPixmaps instead...
+ - ...
+ Ported also the first couple of modules.
+
+ Qt 4 causes a lot of problems in porting but I'm starting to feel
+ like the new library is very cool :)
+
+05 Feb 2007
+ [Pragma]
+ - The KVIrc executable now compiles and starts with Qt4. With Qt3 everythin
+ should work just like it did before.
+
+ No modules are ported yet so a lot of functionality is not available...
+ ... but it CAN connect to a server :)
+ It tends to crash once in a while, has nasty problems with
+ graphics and size of certain widgets: will need some hours of debugging.
+
+ When testing the Qt4 port make sure you (re)move your old binary
+ modules from /usr/local/share/kvirc/3.2/. KVIrc will attempt to load
+ some modules from there and since they're linked to Qt3 the runtime
+ (loader) is likely to go nuts with two Qt versions in memory.
+ You have been warned... :)
+
+30 Jan 2007
+ [Alexey]
+ - Introduced option "using identd only on connect"
+
+29 Jan 2007
+ [Alexey]
+ - Introduced search in log files
+
+25 Jan 2007
+ [Pragma]
+ - Yet more Qt 4.x port
+ - Added the torrent interface module by Alexander Stillich
+
+21 Jan 2007
+ [Pragma]
+ - More Qt 4.x port
+ - More multiple identities work
+ - Added the first considerations about the Qt 4.x port to hackers.guide.txt
+
+20 Jan 2007
+ [Pragma]
+ - Another quick fix (for config values not saved correctly)
+ - Started the implementation of multiple identities.
+
+19 Jan 2007
+ [Pragma]
+ - Added the fixes for a couple of bugs introduced with the yesterday commit.
+ Thnx to Alexander Stillich for the detailed report :)
+
+18 Jan 2007
+ [Pragma]
+ - More Qt 4.x port. kvilib now compiles cleanly with both Qt 4.x and Qt 3.x.
+ Don't know if it really works since kvirc compilation still bails out. We'll see :)
+
+15 Jan 2007
+ [Pragma]
+ - Fixed the smart encoders a bit more
+ - Theme management: rewritten the theme save dialog as a wizard, added screenshot management.
+ - Really first step to Qt 4.x support: added ./configure switches to handle qt4 and
+ fiddled the makefile variables to contain the right include and library paths.
+ Still have no idea if everything works correctly since compilation bails out
+ very early in kvilib.
+ You're likely to have problems with moc since the configure script tends
+ to find the Qt 3.x moc instead of the correct one. Use the --with-qt4-moc option
+ to force the right moc compiler path.
+ In Qt 4.x mode the COMPILE_USE_QT4 preprocessor variable is set: use it for conditionals...
+ an #ifdef COMPILE_USE_QT4 is more or less equivalent to #if QT_VERSION >= 0x040000.
+ We will need to "abstract" several collection classes to make everything
+ work with both Qt 3.x and Qt 4.x. The goal is (or better would be) to hide everything in
+ kvilib in order to have almost no conditional compilation in the kvirc core and in the modules.
+ - Added a discussion about the versioning scheme in the hackers.guide.txt. Give
+ it a read and make/add your comments :)
+
+12 Jan 2007
+ [Pragma]
+ - Added a set of smart encoders that send in UTF-8 instead of the child encoding
+ - Fixed a nasty bug in KviQString::vsprintf() that caused KVIrc to crash in response
+ to certain messages from server
+ - Added corrections and null checks in some places to make KVIrc resist to
+ the ircfuzz.c attack.
+ - Committed the spanish translation by Roberto Ciria
+
+08 Jan 2007
+ [Pragma]
+ - More work on the themeing engine. Nearly finished.
+ The theme packages created since Dec 28 aren't compatible anymore.
+ (nobody was able to load them yet anyway :D), sorry.
+ - Added support for the audacious media player, thnx to Alexander Stillich <torque at pltn dot org> :)
+ - Added #kvirc channel links in the help menu. Please add your own localized #kvirc channel.
+
+06 Jan 2007
+ [Alexey]
+ - Added gender info sharing tricks
+
+28 Dec 2006
+ [Pragma]
+ - Added handling of unknown RPL_WHOIS* numeric replies by implementing a nice
+ "guessing" algorithm suggested by Elephantman
+ - Added a file with KVIrc file extension definitions. We should use the defs instead
+ of hardcoding extensions like .kvt, .kvs or .kvp.
+ - Added a fast generic packaging engine. A KVIrc package is a kind of zip archive
+ with an uncompressed metadata header. It can be used to distribute both themes and addons.
+ - First works on the theme exporting engine. Saving and packaging are now different operations.
+ One first saves his theme to disk, eventually edits it manually (maybe by adding a nice
+ splash screen or fixing some icons) and finally packages it by invoking a nice
+ wizard based procedure. Still need to write the installation dialog.
+ - Moved the whole theme management engine to a new module. It exports the
+ management dialogs and some utility commands. There is no reason to load
+ all this stuff at startup with the options dialog now.
+
+27 Dec 2006
+ [Noldor]
+ - Alias editor module:
+ added the possibility to save a selection of aliases in separated files (every file will have the alias name);
+ fixed search function;
+ - Script editor module:
+ fixed replace command(in "replace all aliases" too);
+ now syntax highlighter recognize command "function" and "internal";
+ - Objects module:
+ added objects.classes, objects.variables, objects.classAllHandlers;
+ fixed crash in listviewitem class;
+ fixed little bug in multilinnedit class (function $setWordWrap);
+
+
+19 Dec 2006
+ [Pragma]
+ - help.open: open only one help window unless -n is used
+
+17 Dec 2006
+ [Pragma]
+ - Committed the new german translation file by Mihai "Ionic" Moldovan
+ - Switched the source control system to SVN: happy coding :)
+
+15 Dec 2006
+ [Pragma]
+ - Yet more work on the options dialog
+ - Added an option for the "network name in taskbar": it's cool, but we want to choose :)
+
+12 Dec 2006
+ [Alexey]
+ - Added option to create minimized channels
+ - Fixed nick selecting in userlist via ircview
+ - Fixed mouse hover link effect
+ - Network name now will be shown in the taskabr instead on server name
+
+07 Dec 2006
+ [Pragma]
+ - Yet more work on the options dialog
+ - Fixed a crash related to the dialog.* module calls
+
+28 Nov 2006
+ [Pragma]
+ - More work on the options dialogs
+ - Removed the duplicated kvc_ icon.
+
+19 Nov 2006
+ [Alexey]
+ - New function - $chan.getUrl
+ - NickServ identity can now accept masks in nick field
+
+16 Nov 2006
+ [Alexey]
+ - Added a simple browser-like address bar to console
+ - Clicking on nick in channel ircview now selects it in the userlist
+ - Avatar dcc send rejected if avatar size greater, then max filesize, setted in options
+
+15 Nov 2006
+ [HelLViS69]
+ - Added a checkbox on AwayIndicator applet popup to choose to go away
+ on all IRC Contexts
+
+14 Nov 2006
+ [Pragma]
+ - Moved the userlist feature options page to the theme option dialog
+ and splitted all the userlist options in tabs
+ - Corrected some typos around
+ - Reworked the output options page
+ - Updated the directory selection dialog under KDE
+ - Avatars bigger than 1024x768 make KVIrc complain when setting them
+ and are scaled to a saner size when they are received from others.
+
+13 Nov 2006
+ [Pragma]
+ - Added $object.instances(): useful when implementing singletons.
+ - Fixed a small image dialog issue
+
+9 Nov 2006
+ [Pragma]
+ - Added support for chunked HTTP transfer encoding as required by HTTP/1.1
+ - A fix for object toolbar position not saved properly
+ - A fix for the addon management dialog not repainted correctly
+ - A fix for loading of files by the means of KviFileUtils::loadFile()...
+ /parse is one of them and it expects an utf8 encoded file.
+ (read: all *.kvs files must be utf8 encoded, there is no other decent
+ portable way to preserve the national characters...)
+
+8 Nov 2006
+ [Pragma]
+ - A fix for KviStr handling incorrectly multibyte strings (fixes some localization issues)
+ - A simple hack-in for a protocol filter.. maybe msn ?
+
+6 Nov 2006
+ [Pragma]
+ - Various minor fixes around
+ - Splitted the core small icons libraries in separate icons.
+ - Moved the small icons to a subdirectory to speed up the loading (we are already at more than 280 icons...)
+
+1 Nov 2006
+ [Alexey]
+ - Added unreal NAMESX and UHNAMES support
+ - Fixed $hexToAscii function
+ - Make DCC File Open/Save dialogs have native look on windows
+ - Fixes in filesystem handling. Fixed bug when KVIrc unable to load translation from non-latin folders
+ - Fixed actions' accelerators
+ - CTCP Page dialog now stays on top of desktop
+ - Fixed in tray minimizing/restoring on win32
+
+Oct 2006
+ [Alexey]
+ - WIN32 compiling need QTTAG env var with "mtnc321" value for non-commercial QT 3.2.1 or "mt336" for QT 3.3.6
+ - New win32 tray icon
+ - Added snd.mute, snd.unmute, $snd.isMuted to KVS
+ - Moved theme selection out from theme options to avoid partyally applying of themes
+ - Added some lost functions to "painter" class
+ - Fixed ignore system
+ - Fixed input themeing (black on black bug)
+ - "play" command is now alias for snd.play
+ - IMPORTANT: fixed proper soket closing on win32
+ - Fixed crash after first run wizard on *nix
+ - Make possible installation on USB removable drives (WIN32). KVIrc can store settings in program folder
+ - Make pathes in configs system-independent
+
+23 Sep 2006
+ [Zerg] (commited by Alexey)
+ - Change dock icon size to 22x22 on KDE. Fixed style of icon
+ - Better in-tray minimizing
+ [Alexey]
+ - Setted tray icon background to transparent
+
+18 Sep 2006
+ [Noldor]
+ - Added alphablend in objects.blend
+ - Added doc to class image and function setOpacity()
+ ... now we can create some weird, cool effect :=D
+
+08 Sep 2006
+ [Alexey]
+ - Fixed input line painting bug: cursor goes out of visible range
+
+25 Aug - 07 Sep 2006
+ [Alexey]
+ - Fixed couple of bugs, include crashbug when applying a new theme
+ - Rewrited channel mode handling
+ - Rewrited setup wizard
+ - Corrected themeing of input
+ - Del key deletes selected transfer in filetransfers
+ - Changed trayicon bechaviour. Now it's configurable.
+
+
+25 Aug 2006
+ [Pragma]
+ - uparser is definitively gone: KVS is the reality.
+ - cleanups all around, removing unused code etc.
+ - documentation cleanups
+
+13 Aug 2006
+ [Pragma]
+ - Fixed some docs about KVS
+ - $boolean(), $string(), $integer() casts.
+
+27 Jul 2006
+ [Alexey]
+ - Classic taskbar now looks fine in os-style. It uses new frames and borders
+ - Make classic taskbar resizable
+ - Make Tree taskbar header hidable. Hide it by default
+ - Tree taskbar change cursor to hand while moving over an item
+
+27 Jul 2006
+ [Alexey]
+ - New -a | --all-networks switch for away and back commands to apply their action to all connected networks
+ - Fixed bug with long channellins scrolling; removed horisontal scrollbar
+
+27 Jul 2006
+ [Alexey]
+ - Timestamp format now can be configured via options
+ - Input saves string in history when it was send via Ctrl+Return
+ - Fixed case sensivity mode handling in usermode popup
+
+26 Jul 2006
+ [Alexey]
+ - Added option to include MSGTYPE info in theme packs
+ - Added support fot ports, greater than 65536
+
+25 Jul 2006
+ [Pragma]
+ - Comparison operators now prefer numeric operands instead of strings.
+ - Added $str.printf()
+ [Alexey]
+ - Fixed bug in language seletor
+ - New XML load addon dialog
+ - Show progress bar while indexing help
+
+24 Jul 2006
+ [Alexey]
+ - Added XML (single file) theme export/import
+ - Added ability to delete installed themes
+
+22 Jul 2006
+ [Alexey]
+ - Fixed bugs in filetransfers window while operating with localized filenames
+ - Renamed "orphan_servers" to "Standalone Servers"
+
+21 Jul 2006
+ [Alexey]
+ - Added e2k URL highlighting
+
+20 Jul 2006
+ [Alexey]
+ - Implemented help topics and keywords caching
+ - Topic can be viewed via double-click for non-opers in read-only mode
+ - Fixed PageUp/PageDown in logviewer
+ - Fixed defsctipt. Kickban now uses mask from kvirc prefs
+ - Fixed avatar handling while it trnsfered via DCC, filename contains space, but replacing spaces with _ enabled
+ - Fixed connection to stupid win32 proxies
+ - Added HTTP Proxy error displaying
+ - New autojoin channel editor; fixed bugs in channel autojoining
+
+19 Jul 2006
+ [Alexey]
+ - Fixed DCC non-latin filenames handling
+ - Fixed avatars with non-latin names handling
+
+07 Jul 2006
+ [Alexey]
+ - Fixed proxy connection (HTTP proxy doesn't require Server ip resolving now)
+
+
+28 Jun 2006
+ [Pragma]
+ - Fixed some CTCP handling as suggested by CtrlAltCa
+ - foreach now doesn't iterate over empty variables unless the -a switch is used.
+
+23 Jun 2006
+ [Ahinu]
+ - Work on the mediaplayer module: more linux support + cmd/fnc cleaning
+
+10 Jun 2006
+ [Alexey]
+ - Added icons to some tooltips
+ - Added Alt+DIGIT hotkey for window switching. Removed Ctrl+End hotkey(changed to Ctrl+F4)
+
+05 Jun 2006
+ [Alexey]
+ - Fixed join channels menu
+ - Added insert text icon submenu to input editor popup
+ - Added feature to autosave logs
+
+23 May 2006
+ [Alexey]
+ - Channel/topic input lines now have a OS-style border
+ [Fiber^]
+ - Added hungarian translation
+
+21 May 2006
+ [Alexey]
+ - Fixed crash while topic contains a text icon
+ - Fixed colorizing nick as in the userlist while custom color is set for the normal users
+
+20 May 2006
+ [Alexey]
+ - Added automatic codepage select for servers, that doesn't insart "CODAPAGES" in RPL_ISUPPORT message
+ - Now recent channels are network-dependend. For example #kvirc@Freenode and #kvirc@Azzurra are the different channels
+ - Switched to 3.2.3
+ - Fixed (finally?) window restoring from tray icon
+ - Fixes in mIRC color handling
+
+15 May 2006
+ [Alexey]
+ - Fixed issues when IP specified instead of server name in server properties
+
+13 May 2006
+ [Alexey]
+ - Added search and document index to the help system
+
+10 May 2006
+ [Alexey]
+ - Added texticon module to manage text icon collection
+ - Added detection if the KVIrc running to the win32 insatll script (patch contributed by Zerg)
+
+02 May 2006
+ - Improved win32 insatll script (patch contributed by Zerg)
+
+22 Apr 2006
+ [Alexey]
+ - Now user can define position and/or tiling methood of backgrounds
+
+22 Apr 2006
+ [Alexey]
+ - Added visual effects to the tree taskbar
+
+19 Apr 2006
+ [Alexey]
+ - [WIN32] Added installer script for NSIS installer (nsis.sf.net). It can properly uninstall local data dir, automatically install Winamp plugin
+ - Added ability to bind sounds on some events via options dialog
+
+18 Apr 2006
+ [Alexey]
+ - !KVIrc now can run from localized folder (generally WIN32 fix)!
+ - Added options to strip colors from logs
+ - Filelist retirned to the left in logviewer
+ - Restyled win32 tray icon (now it looks similar to the *nix tray icon)
+ - Added tray icon flashing
+ - Added $lang function to detect user language
+ - Updated default toolbars
+
+15 Apr 2006
+ [Alexey]
+ - updated graphical emotions
+ - added ability to hide channel's tool buttons
+ - options dialog is now closable by escape button
+ - added ability to hide input tool buttons
+ - colors and msgtypes now can be saved into the logfiles
+
+07 Apr 2006
+ [Alexey]
+ - added support for caculating md5, md4, md2, sha1, mdc2, ripemd160, dss1 digests via new $str.digest function
+
+01 Apr 2006
+ [Alexey]
+ - changed KVS_PT_STRINGLIST type to QStringList
+ - added option to set default ban mask
+ - added options to set maximum width of classic taskbar button
+
+17 Mar 2006
+ [Alexey]
+ - More intelligent word highlighting
+
+14 Mar 2006
+ [Alexey]
+ - Added HTTP Auth compatability
+ - Redesigned log viewer
+ - Added ability to remove logs in log viewer
+ - Added nicer styling of Tool buttons
+ - Fixed bugs in logfiles naming
+
+07 Mar 2006
+ [Alexey]
+ - Added ability to choose smyles from external file
+ - Fixed sorting bans (invites,exempts) by date
+
+05 Mar 2006
+ [Alexey]
+ - Added option to sort received files by nicks
+
+26 Feb 2006
+ [Pragma]
+ - KVS now uses 64 bit integers, if possible
+ - More work on zero port DCC handshakes (still a bit work in progress)
+ - Finally managed the KviListView to display a transparent background
+ picture (hopefully) without flickering. Does it work on windows ?
+ - Added $hptimestamp() for high(er) precision time intervals computation
+ - Recently also more work on the options dialog
+ - the theme options now have its own toplevel dialog
+ (some of the options still need to be moved around)
+ - added a (still primitive) search function
+
+26 Feb 2006
+ [Alexey]
+ - added "away" section to the dockwidget menu
+ - tray icon now transparent under *nix
+ - added autohide indicator to notifier
+
+24 Feb 2006
+ [Alexey]
+ - added option for closing in tray (patch by Zerg)
+ - added option for startup minimized
+ - added deeper nick change customization in away
+ - added "Quit" item to the main menu
+ - new tray icon under *nix, more selective tray tooltip
+
+22 Feb 2006
+ [Alexey]
+ - improved nick colorization in KViIrcView: now registered nicks are colorised as in the userlist
+ - now it is possible to assign a comment to the registered user. Comment will be shown it tooltip and WATCH join/quit messages
+ - added option for colorizing own nick in different color
+
+21 Feb 2006
+ [Alexey]
+ - added option to disable avatar scaling if it less that required size
+
+20 Feb 2006
+ - registered users can be organazid into groups
+ - some fixes in maskeditor
+
+13 Feb 2006
+ [Ahinu]
+ - regchan.list -> regchan.showlist, added $regchan.list
+ - Added $str.stripcolors
+
+05 Feb 2006
+ [Pragma]
+ - Started the big cleanup of the options dialog. Identity options for now.
+ - Moved the translations of the options module to a specific po file.
+ This makes the job units smaller (for translators) and doesn't force
+ kvirc to load all these strings at startup.
+ The original translations are preserved and the translators should
+ remove the unused overlapping (and commented out) portions of the kvirc_*.po
+ and options_*.po at the next opportunity.
+
+03 Feb 2006
+ - Improved maskedior. Now it can edit masks;)
+ - Fixed issues with [] symbols in Wildcard expressions
+
+02 Feb 2006
+ [Pragma]
+ - Added zero port request handling also for DCC CHAT.
+ We support it also in outgoing requests now.
+ - Fixed the problems with execution of perl script that contain warnings.
+
+27 Jan 2006
+ [Pragma]
+ - Again missed updated
+ - Initial support for shared double buffering (will reduce memory usage)
+ - Finished the cool listview initiated by Alexey (still needs testing on windows tough)
+ - Some other things I have forgot :D
+
+17 Jan 2006
+ [Pragma]
+ - We now suppor the mIrc zero port DCC protocol both in incoming and *outgoing* transfers
+ The outgoing protocol is activated by /dcc.rsend -z
+ - A couple of fixes for the KVS engine
+ - Some fixes for the perlcore module (almost finished: it just needs a better warning handler...)
+ [Grifisx & Noldor]
+ - Some projects updated
+ - Fixed varius bug in object module (we hope less crashes ;) )
+ - Deleted some old, unused objects classes function
+ - Added function $height() and $width() in class pixmap
+ - Fixed and optimized objects.blend command: now it is very cool and you can create some eyes candy effect
+ very easily =)(more new graphic commands will come in the near future)
+ - The porting of the module object is near to finish: only class socket is missing.
+
+14 Jan 2006
+ [Grifisx & Noldor]
+ - Added the new class object named "image": at this moment it is in alpha state and without docs;
+ - Added command objects.blend.
+ [Pragma]
+ - Added the math.* module
+ - Fixed comparison of variables in KVS
+
+13 Jan 2006
+ [Grifisx & Noldor]
+ - Fixed bugs in object classes
+ [Alexey]
+ - Window now saves logging state and userlist state
+ - CTCP VERSION reply now shows os version and QT version
+ - Added support for RPL_ENDOFSTATS (219) message
+ [Pragma]
+ - Missed to update this file for a while :D
+ - The object classes are now persistent: they are stored on disk so one does not need to always redeclare them in aliases
+ - Added the "user friendly commandline" button to the input widget and the global option to keep it automatically on/off
+ - Other small fixes that I can't remember
+
+11 Jan 2006
+ [Alexey]
+ - Added an option to disable notifier window flashing
+ - Fixed doubleclick interval in ircview
+ - Added support for guessing max modes per line from RPL_ISUPPORT
+ - Now you must use // prefix in nput line to use full KVS syntax. The / prefix don't parse arguments at all
+
+10 Jan 2006
+ [KVirc Development Team]
+ - Events now works in objects module
+ - Lots of other improvements in objects module
+ - Options to minimize in tray
+ - New styled checkboxes are fully functional now under all OS
+ - Fixed mIRC color handling
+ - Fixed file handling in snd module on localized filesystems
+
+4 Jan 2006
+ [Pragma]
+ - Started porting events on new KVS
+ [Alexey]
+ - Added colors to the topic history widget
+ - Added ability to count total connection time for all connections for the connection timer applet
+
+25 Dec 2005 - 3 Jan 2006
+ - Removed old KVS
+ - Added history to the topic editor
+ - Redisigned splash screen
+
+24 Dec 2005
+ [Pragma]
+ - More modules ported to KVS: only dcc and dialog are partially missing
+ at this point. Prepare for the big cleanup :)
+ - Added JIS7 and euc-JP to the list of supported codecs (thnx hagabaka!)
+ - Some small fixes to the options dialog that was going nuts recently...
+
+20 Dec 2005
+ [Pragma]
+ - Almost finished the work on alias namespaces: they should be usable now
+ - Ported the perl modules to the new KVS
+ - Ported the sharedfile module to the new KVS too, really few modules
+ are missing now
+ - Fixed a couple of buggies in KviCommandFormatter that prevented
+ aliases from being correctly removed
+ - Some work in the new KVS engine: the big cleanup is coming...be afraid!
+
+18 Dec 2005
+ [Pragma]
+ - Alias namespaces and other curious thingies all around
+
+10 Dec 2005
+ [Alexey]
+ - [Kernel] New theme package format. Now theme s\is a king of addon
+ - [KVS] Fixed crash while calling $tr("") in new KVS
+ - [Kernel] Other bugfixes
+
+ [Pragma]
+ - [Kernel] Fixed crashbugs in KVS kernel
+
+09 Dec 2005
+ [Alexey]
+ - [Kernel] Fixed bugs in handling modes. Now it is case sensivity
+ - [UI] Fixed bug with deleting selected text from input line or topic editor
+ - [UI] Pressing a key in userlist now selects the first nick with first letter, equal to the pressed key
+ - [UI] Now options splitted into 3 categories: for novice,normal and experienced users. Newbies should see really simple configuration dialog
+
+07 Dec 2005
+ [Alexey]
+ - [Kernel] KVirc *hopefelly* supports now localized file names and file pathes! (but it really partially support it now:)))
+ - [UI] Added missed option to the irc option widget. Now user can specify number of maximum send channel modes per line
+
+06 Dec 2005
+ [Alexey]
+ - [UI] Added themes previews to the setup wizard
+
+05 Dec 2005
+ [Alexey]
+ - [Kernel] Added soma additional checks to KviRegisteredUser class.
+ - [Kernel] Mode work on filesystem interfave
+ - [Kernel] Much better filenames encoding function from internationalization point of view. Logfile names becomes not so ugly:)
+
+01 Dec 2005
+ [Alexey]
+ - [UI] Fixed bug with nick completion
+
+26 Nov 2005
+ [Alexey]
+ - [UI] Now it is a programm option to disable splash and no more --disable-splash configure option
+27 Nov 2005
+ [Alexey]
+ - [Kernel] Fixed crashes in action and toolbar modules under windows
+ - [Kernel] Added trick to resolve unmasked local hostname from 001 server message, even when you using +x mode
+
+26 Nov 2005
+ [Alexey]
+ - [UI] Fixed bug with non-latin search in ircview. Now it works:)
+ - [UI] Improved \r handling in ircview. Now it can contain colors in the label title.
+ - [UI] Improved smart nick and channel highlighting.
+ - [UI] Escape hotkey (minimize window) replaced with Ctrl+Esc hotkey.
+ - [UI] Better code highlighting and code completion in scripteditor.
+
+25 Nov 2005
+ [Alexey]
+ - [UI] Added smart nick and channel highlighting. Now most of channel names and nicknames are recognized and you can click on it by mouse:)
+
+24 Nov 2005
+ [Alexey]
+ - [KVS] config module ported
+ - [KVS] mediaplayer module ported
+ - [KVS] fixed _tonns_ of crashes in objects module with new KVS
+
+23 Nov 2005
+ [Alexey]
+ - [Kernel] Added ability to choose proxy server in irc server's preferences. You can choose different proxyes for different servers
+
+22 Nov 2005
+ [Alexey]
+ - [KVS] Removed ugly $insertInInput function, added commands window.setInputText,window.insertInInputText and function $windos.inputText
+ - [KVS] Make new KVS allows to use '_' symbol in functions' names,commands' names and variables' names
+ - [Kernel] Added support for RPL_ADMINME, RPL_ADMINLOC1, RPL_ADMINLOC2, RPL_ADMINEMAIL, RPL_COMMANDSYNTAX, RPL_INVITING, RPL_INFO, RPL_INFOSTART, RPL_ENDOFINFO, RPL_TIME, ERR_NOSUCHSERVER, ERR_NOSUCHCHANNEL, ERR_CANNOTSENDTOCHAN, ERR_NOCOLORSONCHAN server messages
+ - [Kernel] Added support for gzipping logs and viewing gzipped logs
+ [Pragma]
+ - First step for the implementation of namespaces in aliases (new KVS only)
+
+21 Nov 2005
+ [Alexey]
+ - [UI] Ctrl+Enter now sends text to the channel(query,dcc chat,etc..) even if it has "/" at beginning.
+ - [Kernel] Tuned output and string formatting functions. Really solves TONNS of internationalization problems:))
+ - [Kernel] Code tuning: chack all sources to proper encodig data, sended to server. Make corrections.
+ - [Modules] Some other internationalization fixes in DCC module
+ - [UI] Added option to colorize nicks in channel messages the same, as they colorized in the userlist view
+ [Pragma]
+ - ported dialog.textinput
+ - more fixes around
+
+20 Nov 2005
+ [Pragma]
+ - Started porting the dialog module
+ - Added the callback object KVS base class
+ - a small fix for KviInput (gcc warning)
+
+08 Nov 2005
+ [Alexey]
+ - [KVS] Error and warning texts are now readable in localized versions
+ - [UI] Added option to enable or disable showing query information label
+ - [UI] Added some items into the main menu
+ - [UI] Added default menu on right click at url link
+ - [KVS] Added $str.fromClipboard function and str.toClipboard command
+ - [UI] Channel mode label now allows to edit chanmodes
+ - [UI] Added new information label into Query window
+ - [KVS] Fixed bug 0000270 with OnChannelModeChange event
+ - [Kernel] Fixed click vs double click bug
+ - [Kernel] Added parsing of 703(WeNet) and 020 messages
+ - [UI] New topic editor
+ - [Misc] Fixed some other bugs
+ - [UI] Fixed permission on topiceditor and mode editors(for ircOps and halfops)
+ - [Kernel] Fixed bug when message, that have raw event handlers decode 2 times
+ - [Modules] Fixed internationalization issues in avatar module
+ - [KVS] Window,reguser,url,term,toolbareditor,regchan modules are ported..
+ - [KVS] Log module ported, porting logging system from KviStr to QString
+ - [kernel] Some fixes for COMPILE_ONLY_NEW_KVS
+
+ [Pragma]
+ - More work on the KVS engine
+ - avatar module ported...
+ - Merged various small fixes done in the last days
+
+05 Nov 2005
+ [Alexey]
+ - added 7 new events to hangle single clicks
+ - added 2 new functions to get/set/insert text in window's inut lineedit
+ - added 2 new options for the proper handling of winamp encoding and ID3 tags' encodings
+ - started dcc module porting from KviStr to QString
+ - resolved lot of internatiolization problems in DCC module
+ - improved defscript
+
+26 Oct 2005
+ [Alexey]
+ - Added Ctrl+A shortcut for select all
+ - Total latin1() elemination
+ - Fixed bugs from bugtrack
+ - Improved usermode menu
+ - Resolved issues with encodings in DCC chat and transfer
+ - Editbox now has focus by default in search window
+ - Changed /ame and /amsg behaviour
+ - Make connect/disconnect button to reconnect to last used in this context server,not to last used globally
+ - Added WeNet network
+ - Fixed CTCP handling
+ - Fixed +e and +I chanmodes handling
+ - Fixed issues with non-latin symbols in scripts
+ - Fixed encodings in logfiles
+ - Fixed encodings in socket agent window
+ - Fixed logfile names
+ [Pragma]
+ - A quick fix for the connect button handling
+ - A fix for a crash in the listview KVS class (new parser)
+ - More KVS all around
+
+19 Jun 2005
+ [Grifisx/Noldor]
+ - code improvements in the editor(...stil a work in progress):
+ added code completition (shift+insert keys), added a dynamic help: move over a command/function.
+ then right button and "help command/function" (... its in beta status, need some workaround :D) :
+ an help window will appear.
+ - added some options to hide graphic elements in the gui to build a very "minimalist" KVIrc.
+
+15 Jun 2005
+ [Grifisx/Noldor]
+ - code improvements in the editor(...a work in progress):
+ added find/replace in alias editor, fixed some bugs and added some user friendly feature.
+ To do: code completition;
+ - win code improvements in the system module;
+ - added setBackground command in window module;
+
+24 May 2005
+ [Pragma]
+ - Added queueing for slow paste
+ - Added http.asyncGet
+
+14 Apr 2005
+ [Grifisx/Noldor]
+ - Add wrapper and wizard classes,
+ added parameters support to all classes,
+ some fix and changes in many objects classes.
+ Moved commands "connect","disconnect","clearobjects","killclass" in the module objects.
+05 Apr 2005
+ [Grifisx/Noldor]
+ - Added mediaplayer.setVol and mediaplayer.jumpTo commands for winamp,
+ painter and pixmap class optimization,
+ added 'Paste file' and 'Stop slow paste' on chan and query.
+24 Mar 2005
+ [Pragma]
+ - Added the CIA open source project tracing script to the cvs (only for
+ the kvirccvs module). Please write informative CVS comments from
+ now on :)
+
+23 Mar 2005
+ [Grifisx/Noldor]
+ - added boolInputHistory option to disable Input History window and it's log memory
+
+20 Mar 2005
+ [Grifisx/Noldor]
+ - added painter, textbrowser and pixmap classes and some extensions to widget class
+ - add minimize and close button to the iconstable's window
+
+13 Mar 2005
+ [Grifisx/Noldor]
+ - added functions and signals to manage some event in the lineedit class:
+ $lostFocusEvent, $returnPressedEvent, $textChangedEvent
+ - added function $str.section(<string>,<spl>,<n1>,<n2>) in 'str module'
+
+12 Mar 2005
+ [Crissi]
+ - mp3player module updated: kde mediaplayers
+
+09 Mar 2005
+ [Grifisx/Noldor]
+ - some new classes in the object module:
+ mainwindow, toolbar, toolbutton
+
+08 Mar 2005
+ [Grifisx/Noldor]
+ - Fixed CTRL+K, CTRL+B, CTRL+U, CTRL+I...escapes in the topic widget
+
+27 Feb 2005
+ [Pragma]
+ - Fixed the CTRL+D terminal window crash
+ - Fixed the Rijndael encryption module
+
+22 Feb 2004: 3.2.0 "Realia" released.
+
+20 Feb 2005
+ [Pragma/Iakko/Noldor/Grifisx]
+ - Several fixes on the notifier
+ - A lot of enchancements in the objects module (some new classes
+ and some extensions to the existing ones)
+ - Improved auto-resume DCC handling: now files are not
+ auto-resumed when the incoming size is unknown or smaller
+ than the existing file. The auto-resume is disabled also
+ if there is a running transfer with the same loca file name.
+ - Fixed several bugtrack issues.
+ - Cleaned up the -ansi -pedantic compilation. It looks that
+ only one real warning remains and it is related to the "deprecated"
+ flags of KApplication constructor which will be removed
+ in KDE 4.0. We must live with it for a while.
+ All the other warnings are due to the system headers.
+ - Caught a couple of potential segmentation faults in the reguser
+ module.
+ - Committed the catalan translation by Marc Serra
+
+09 Feb 2005
+ [Tom]
+ - Fixed several positioning issues for widgets with saved geometry
+ on MacOS X
+
+09 Feb 2005:
+ [Noldor/Grifisx]
+ - Added the KVS process class
+ - Several fixes for other object classes
+ - Added Drag&Drop support to the queries: now a drop operation
+ triggers the OnQueryFileDropped event
+ - Added support for CTRL+K, CTRL+B, CTRL+U, CTRL+I ... escapes
+ in the topic widget.
+
+08 Feb 2005:
+ [Noldor/Grifisx]
+ - Added the KVS radiobutton class
+
+08 Feb 2005:
+ [Pragma]
+ - Fixed the bug of KviIrcView that caused the background to be repainted
+ incorrectly when the mouse was hovering over the links
+ - Private background now has priority even over the global transparency
+ - Added a menu option to reset the private background pixmap when no longer needed
+ - Removed the "FrameCaption" option since it was only freaking the people
+ out when it wasn't updated on version change...
+
+07 Feb 2005:
+ [Pragma]
+ - Finally managed to handle correctly the IME events: text input for chinese/japanese
+ korean etc... should work now.
+ - Fixed the logging of emoticons: they are written to the log files now
+ - More tricks on KviHeapObject
+ - Added the fixes for the _horrible_ VC++ compiler bug that implicitly
+ creates helper functions (vftable entries) residing in code sections where
+ operator new is called on a class with a virtual destructor. This is
+ simply destructive when it happens in a module that can be unloaded
+ before the object allocated with new is destroyed: at delete time
+ the code flow obviously jumps into no man's land.
+ - Committed the ldcnumber class by Noldor and Griffisx
+
+04 Feb 2005:
+ [Pragma]
+ - Added the fixes for windows segfaults reported and bughunted by Noldor and Grifisx.
+ Maybe these KviHeapObject trick will help to solve the issue.
+ - Added a warning message about sending more than 20 lines of text
+ at once in a query or channel. The warning can be obviously disabled
+ forever by answering "Always".
+ - Added the XIM "hot spot" handling for the input window.
+
+
+01 Feb 2005:
+ [Pragma]
+ - Bandwidth limits for DCC finished. They are configurable "on the fly" now.
+ - Fixed the Ctrl+Arrows and Ctrl+Shift+Arrows behaviour: now they skip/select
+ entire words in the input widget. Window switching has been moved to
+ Alt+Arrows and Alt+Shift+Arrows.
+
+31 Jan 2005:
+ [Noldor/Grifisx]
+ - Yet more object classes: time for spinbox and slider.
+
+30 Jan 2005:
+ [Pragma]
+ - DCC Bandwidth limit implemented, "on the fly setting" is still missing tough
+
+29 Jan 2005:
+ [Iakko]
+ - Added Notifier 2.0 in a more stable and usable version, now tabs and
+ "blinking onFocusOut/showing" are working. The Notifier is still on Beta version.
+ - Some kvi_sp_literal.cpp and kvi_sp_ctcp.cpp (under kvirccvs/kvirc/src/kvirc/sparser) changes
+ needed for notifier to work. A core recompilation is suggested even if
+ not strongly necessary.. it's a matter of string output on the notifier, nothing critical.
+ - Graphic features are waiting to be added asap.
+
+29 Jan 2005:
+ [Noldor/Grifisx]
+ - Added a new widget class "progressbar" with the following functions:
+ $setProgress, $setTotalSteps, $reset, $setCenterIndicator,
+ $setPercentageVisible, $isCenterIndicator, $isPercentageVisible
+
+28 Jan 2005:
+ [Pragma]
+ - Added the possibility of exporting toolbars from the toolbar
+ customization dialog. The export function can also export
+ the associated actions.
+ - Moved the toolbar customization dialog to a separate module
+ - Added the mircryption/blowfish crypt engine. It actually supports
+ both the standard ECB mode and the (really) new CBC mode.
+ - Fixed some remaining bugs in the action editor: now it should
+ be ready for the public :)
+ - Added a couple of object functions to the layout object class
+ to support the nice minesweeper script :D
+ - A full set of action.* and toolbar.* commands is now available
+ - Added compatibility loading functions for old toolbars
+ - Added handling of the ERROR server message.
+ - Added the support for actions that can be enabled only in
+ specified windows and only if there is a nonempty selection inside.
+ This allows to create user toolbars that perform quick actions
+ on the selected channel users. This is a *really* quick kick
+ for example.
+ - Fixed a couple of bugs related to the mask handling
+ - Fixed a possible bug related to acknowledges in the DCC send code
+ - Other small fixes all around as usual.
+
+
+27 Jan 2005:
+ [Noldor/Grifisx]
+ - added $setFont to the class widget,$setDragEnabled and $setInputMask
+ to the lineedit class;
+
+20 Jan 2005:
+ [Noldor/Grifisx]
+ - added some new functions to the class widget: $setToolTip,
+ $setForegroundColor,...
+ - some code improvements in the win version of the filetransferwindow:
+ added context menu like open,open with,delete file,open destination folder
+
+8 Jan 2005:
+ [Pragma]
+ - Added handling for ERROR and the relevant OnError event.
+
+7 Jan 2005:
+ [Pragma]
+ - Again more than 20 days of changes to report.
+ - The action based toolbars are almost working and have replaced
+ completely the old scriptable toolbars.
+ - The toolbar customisation dialog is ready
+ - Actioneditor is almost ready too, needs just minor adjustments
+ - Added $chan.userJoinTime() and $chan.userLastActionTime()
+ - Added several new $mask() types: now it is possible to get different
+ host masks (only *.domain.ext or *.anything.anythingelse.domain.ext).
+ Another mask set tries to handle correctly the hidden hostnames (+x)
+ on some servers (this does not work 100% tough...)
+ - Added the initial stuff for the language recognition module. Still
+ don't know if it will end up in the official release: needs interfacing with
+ the core... but the standalone engine is starting to work.
+ - Added several "smart" encodings that will try to decode as UTF8 first
+ and then apply the local encoding rules.
+ - Added a couple of new emoticon images (Thnx Penny!, Thnx Sidhe! :)
+ - Created the "scripts" cvs module and added a first script example
+ (a simple ezbounce irc proxy interface)
+ - Fixed runtime localization of the action and toolbar names: they
+ should work fine now.
+ - Fixed some bugs in the objects module (still needs a lot of work)
+ signaled by Noldor.
+ - Bumped up libtool and ltmain.sh to 1.5.10 (hoping that it will stop
+ relinking the modules when installing... this is extremely annoying)
+ - Suggest installing the default script if no toolbars or popups are available
+ - Fixed http avatars not being correctly loaded after the transfer has finised.
+ - Iakko is working hard on the new (cool!) notifier interface :)
+ - Various other fixes all around
+
+15 Dec 2004:
+ [Pragma]
+ - Hacked the avatar cache to support masked ip addresses
+ (added some new parameter options to the $mask function by the way)
+ - Added the possibility of setting a temporary background for any IRC view.
+ This is still an experiment.
+
+12 Dec 2004:
+ [Pragma]
+ - Added minimal support for /DCC ALLOW
+ - Fixed config files loading that truncated lines longer than 32K
+
+8 Dec 2004:
+ [Pragma]
+ Yet another huge set of commits.
+ The major changes are:
+ - New "action" based toolbar and popup menu system.
+ Now the user can just drag & drop actions to customize toolbars :)
+ - The "big cleanup" has started:
+ - "Scripttoolbar" is gone: the functionality is completely superseeded by
+ the action based toolbars now. I already know that some people will want to kill
+ me for this but from now on the actions are the only method to create toolbars.
+ This is a good idea since the old method was a bit ugly (for example because
+ it needed overriding events to enable/disable the actions).
+ Moreover, another piece of the old non-unicode parser has been wiped out: this is Good(TM).
+ - Module extension toolbars are gone: replaced by the action stuff now (see above).
+ - Several structural changes to the default script that reflect the changes in the core.
+ It IS a good idea to reparse it (execute default script) once now.
+
+4 Nov 2004:
+ [Pragma]
+ - Fixed various minor bugs introduced with the last huge commit.
+ - Merged the Mirco Macrelli's patch that adds the chanowner flag
+ support.
+
+1 Nov 2004:
+ [Pragma]
+ I've missed to update this file for a while: my fault :/
+ The major changes until now are:
+ - New statusbar showing the server informations.
+ This is intended to replace the irc context applet which
+ often has problems with space.
+ - 5 moveable statusbar applets
+ - Per network settings: nick,user,OnLogin,OnConnect,NickServ
+ authentication etc. as per-network settings.
+ - Both the servers and the networks can have a preferred
+ encoding now.
+ - More UNICODE support all around: the encodings are honored
+ almost anywhere with the exception of the scripting engine.
+ The scripting engine uses a hack that makes the encodings
+ survive through trivial scripts too. This will become yet
+ better when the new KVS core will be ready.
+ - Support for unicode nicks and channel names.
+ In fact almost anything that the server sends out may be unicode
+ data encoded with some 16->8bit scheme.
+ - A new rewritten lag meter that will avoid to ping the server
+ if possible (when other lag-check probes are spontaneously
+ being sent). The improved algorithm computes the lag better
+ and does not "hang up" when the server doesn't reply at all.
+ - The default quit and part messages can contain scripting identifiers
+ that are evaluated at quit or part time.
+ - The windows problem with keyboard input has been resolved
+ - Several enchancements to the actual scripting engine including
+ but not limited to echoprivmsg, query, notice, notifier.* ,
+ perl.*, server, ...
+ - Added OnDisconnectRequest event
+ - Added support for /CODEPAGE
+ - Avoided unnecessary repaints when in SDI mode: this made
+ KVIrc a bit faster when switching windows and lowered
+ the overall cpu usage.
+ - The "unread" text in a window is now clearly marked by a horizontal
+ line in the text view. If the text line is out of the view
+ then a triangle in the upper corner of the view signals it.
+ - KviWStr stuff definitively removed :)))
+ - Several other minor bugtrack issues fixed.
+
+
+6 Aug 2004:
+ [Juanjo]
+ - Make some pointer = 0 after delete assignations when:
+ Pointer is a member pointer or a global pointer.
+ The delete is not in a destructor.
+ It makes sense.
+
+1 Aug 2004:
+ [Juanjo]
+ - Added an autopackage dir with two (very initial) apsepc files to build a
+ .autopackage autoinstaller.
+ If you have not
+ checked autopackage (http://autopackage.org) DO IT NOW :) is the real
+ solution for Linux third party software installation across distributions
+ (somewhat like autoconf at the binary installation level, but without
+ damn M4 :)
+
+20 Jul 2004:
+ [Pragma]
+ - Now you can use perl from KVS and KVS from perl :)
+ See /help perl.begin
+
+13 Jul 2004:
+ [Pragma]
+ - Perl support has been widely requested. Added the initial modules
+ for that purpose. Needs more work tough.
+ - More work on the notifier: now it's fully working.
+ Added also the options to disable it in several ways (even completely).
+ - Fixed various bugs all around
+
+11 Jul 2004:
+ [Pragma]
+ - Added /AHOST command
+ - More work on the notifier, now it flashes, pops up only when really
+ needed and can be temporairly disabled.
+ - Hardwired the event manager of the new KVS engine and officially
+ killed the old uparser based event manager. We're getting closer and
+ closer...
+
+08 Jul 2004:
+ [Pragma]
+ - Added the notifier module: really nice!
+ Thnx to Penny for the images :)
+
+06 Jul 2004:
+ [Pragma]
+ - Added a Always/Yes/No message box that asks the user for confirmation
+ when attempting to close a connected console.
+ - Added the Always/Yes/No option to the "Quit-Kvirc-On-Close-Last-Console"
+ operation.
+ - Fixed the input history handling bug as reported by Soliton
+ - Added several fixes for UNICODE misbehaviours reported by Dusan
+ - Fixed the configuration files parsing: now the entries
+ and the keys have whitespace encoded separately and the UTF8
+ encoding/decoding is done in the proper places.
+ - Added the code to make the translation of the tips possible.
+ The translations MUST be UTF8 encoded and use the
+ libkvitip_<lang>.kvc name.
+ - Finally fixed the copy&paste behaviour:
+ In the input the selection and the middle click
+ use QClipboard::Selection if supported by the operating system.
+ All the other methods use QClipboard::Clipboard.
+ The IRCView now copies to both QClipboard::Clipboard and
+ QClipboard::Selection (if supported)
+ - Again huge structural reorganizing in the networking stack
+ now I start to like it :)
+ - Committed several translation updates by Dusan
+ - The reconnect timer can now be stopped before it triggers
+ and on disconnect it uses the correct server entry.
+ (see Trisk's ChangeLog entry for 12 Mar 2004).
+
+26 Jun 2004:
+ [Pragma]
+ - Fixed a mismatched new[]/delete pair in kvi_locale.cpp
+ - More KviConsole->KviIrcConnection moving
+ - Fixed a couple of potential segvs related to the connection management
+ - More UNICODE fixes all around
+
+24 Jun 2004:
+ [Pragma]
+ - Yet more bug fixing
+ - Added the cs translations of the modules and fixed some unicode issues reported by Dusan
+
+21 Jun 2004:
+ [Pragma]
+ - Fixed a bug introduced by the previous fix about date encodings :D
+ - Fixed log files not being properly encoded to UTF-8 (question: should
+ the logs be UTF-8, use the local encoding or use the source window charset ?)
+ - Committed more work on kvirc_cs.po by Dusan Hokuv
+
+20 Jun 2004:
+ [Pragma]
+ - More reorganizing of the networking stack
+ - Fixed some bugs with encoding of the dates in non-english locales
+
+16 Jun 2004:
+ [Pragma]
+ - Fixed a crash in the /foreach command as reported by Ahinu (thnx ;)
+ - Added the OnNetsplit event
+ - More reorganizing of the networking stack
+
+12 Jun 2004:
+ [Pragma]
+ - A lot of UNICODE updates
+ - More reorganizing of the networking stack
+ - Added a lot of new text encodings including the missing ISO-8859-XX variants
+ and some CPXXX.
+
+4 Jun 2004:
+ [Pragma]
+ - Added first bulgarian translation by [email protected]
+ - Completly reorganized the <KviConsole,KviIrcContext,KviIrcLink,KviIrcConnection,KviIrcSocket>
+ class set. Now it should become more usable/readable/manteinable/coherent ...
+ Really work in progress: expect misbehaviour and compile time warnings about
+ deprecated functions...
+
+2 Jun 2004:
+ [Pragma]
+ - Added profiling support (--enable-profiling)
+
+31 May 2004: 3.0.1 "System Virtue" released.
+
+11-30 May 2004:
+ [Pragma]
+ - More console splitting , still not finished
+ - Created the initial hackers guide document (this will be always work in progress)
+ - Fixed some online doc bugs
+ - Fixed a bug with popup menu prologues not being saved correctly
+ - Fixed a SEGV related to focus management
+ - Fixed a couple of translation related SEGVS
+ - Preserved UNICODE in the logs by encoding to UTF-8
+ (maybe this should be the local 8 bit ? feedback will be needed later)
+ - Fixed several typos and dead links in the documentation signaled
+ by Klaus Weidenbach
+ - Added a couple of window.* module commands/functions
+ - Unicode fixes related to IrcView tooltips
+ - Added $msgtype function and fixed the related echo documentation
+ - Added the export function in the event editor
+ - Fixed a bug in the popup export function that caused extpopup entries
+ without icons to be exported as simple popups (thnx again Klaus).
+ - Added an option to redirect WHOIS replies to the active window (on by default)
+ - Added the /echoprivmsg command
+ - Added the "delete file" function to the file transfers window
+ - Various fixes all around
+
+10 May 2004:
+ [Pragma]
+ - Fixed the problem with tooltips displaying the wrong avatar image
+ - Started splitting KviConsole in smaller logical classes (irc context, irc connection)
+
+06 May 2004:
+ [Trisk]
+ - Changed parsing for 004 numeric, properly works with hybrid now.
+
+17 Apr 2004: 3.0.0 "Awakening" released.
+
+16 Apr 2004:
+ [Pragma]
+ - Fixed a bug with creation of KviWindow derived classes: the constructor
+ of the base class was calling virtual functions from subclasses (it is curious
+ that this was effectively failing only on Windows and not on Linux).
+ - Reworked a bit the str module to avoid compiler parameter passing problems
+ - Fixed a bug with $str.replacenocase
+ - Fixed a bug that prevented the color option selector buttons from
+ displaying the proper color
+ - Miscelaneous fixes for the release
+
+15 Apr 2004:
+ [Trisk]
+ - Miscellaneous minor stuff (set avatars to 0 width/height to disable).
+ - More reasonable defaults (seriously, the coloured nicks hurt people's
+ eyes =\ ). The fact that unrecognised commands result in parse errors
+ confuses new users (and annoys the heck out of me, too). Turned off
+ message icons too. Rationale is that it will disgust former
+ epic/BX/irssi/xchat users.
+ - And, I don't think most new users will use avatars regularly, so turning
+ the nicklist grid off by default, since it makes the nicklist more
+ cluttered.
+ * Forgot to add nick completion suffix. Oh well, the 3.0 series is just
+ beginning...
+ - Almost forgot to clean up really bad spelling in tip of the day. ><
+
+13 Apr 2004:
+ [Pragma]
+ - Added the default low-resolution (Minimalist) and high-resolution
+ (fancy) themes
+ - Added the selection of the default theme at first setup
+ - Added one time nickname generation at first startup
+ - Modified the Identity dialog to handle better the multiple
+ nickname alternatives. The combobox was not that intuitive
+ thus added a separate dialog for the alternatives.
+ - Removed the "Change now" button from the Identity dialog: it never
+ worked correctly.
+ - Fixed the "concurrency" crash reported on the mailing list
+ - Fixed a SEGV related to shared files
+ - Fixed an infinite loop in the toolbar editor
+ - Fixed a bug with the Color Selector not displaying the right color on windows
+ - Adjusted acinclude.m4.in to handle the new icons added by Trisk: still not
+ installed in the proper locations
+ - Added a couple of GUI option pages that were really missing (mdi captions
+ and toolbar applets)
+ - A couple of new icons added
+ - Fixed a couple of strange behaviours of the input widget
+ - Some source code rearrangements all around
+ - More things that I can't remember :D
+
+11 Apr 2004:
+ [Trisk]
+ - New application icon by Arty2 / Hercules Papatheodorou
+ <[email protected]>, updated icon set.
+ * Too lazy to get icons installing in proper locations.
+
+08 Apr 2004:
+ [Pragma]
+ - Added the highly requested /exec command in the core
+ - Also added an example script that runs an interactive telnet
+ session and sends mail with the use of /exec: powerful :)
+ - Fixed a script editor highlighting bug
+ - Fixed another problem with overlapping dns queries...
+ ... it should have been written this way from the beginning :D
+ - Miscelaneous changes & fixes all around...
+
+06 Apr 2004:
+ [Trisk]
+ - Fixed null KviWStr problem.
+ - Fixed /$sw(e) crash.
+
+04 Apr 2004:
+ [Trisk]
+ - Hacked KviWStr to use QTextCodec instead of charset translation tables. =P
+ *** Chinese, Japanese, Korean seem to work!
+ - Fixed encoding names.
+ - Added ISO 8859-9 (Latin-5 Turkish, requested), Big5, GB18030, SJIS,
+ EUC-KR, TIS-620.
+ - Added options to not show tooltips in taskbar and userlist.
+ - Added option to disable taskbar sorting.
+
+02 Apr 2004:
+ [Trisk]
+ - DCC message changes.
+ - Use proper capitalisation in events, Irc->IRC.
+ - Hack to allow showing +e (and +I) when used for channel modes (not user
+ modes).
+ * Should implement better 005 parsing.
+
+31 Mar 2004:
+ [Pragma]
+ - Added the quit confirmation dialog when there are active connections in the
+ window being closed
+ - Added some descriptive messages to the setup dialog
+ - Fixed a crash related to received CTCP's
+ - Fixed the theme loading that was not updating all the icons
+ - Fixed some functionality of the theme selection dialog
+ - Added some message color presets
+ - Fixed a crash with overlapping dns queries
+ - Added updating of the KDE root pixmap when autochange is active
+ - Added the "execute script" menu entry
+ - ...
+ [Trisk]
+ - Some message changes.
+ - Added redirect to active window options for services notices, server
+ notices, broadcast/wallops, and renamed ToConsole options.
+ - Minor server parser changes.
+
+28 Mar 2004:
+ [Pragma]
+ - Added the default theme (useful to restore the default settings) to the distro
+ - Some bug-fixes and cleanups in the theme engine
+ - Added the themes section on www.kvirc.net and placed the first Marble theme by Sbrokka on ftp.kvirc.net
+ - Adjusted the menubar to dynamically setup the popup menus (it reloads the icons etc..)
+ - Fixed a crash in ctcp action
+ - Added the option to flash the KVirc's taskbar entry when new messages arrive in a query and KVIrc is
+ not the active application. Works only with KDE support and on Windows for now.
+ - Added the special "all" parameter to $active to return the application active window
+ - Forced eval to use the calling variable scope: in this way local variables can be passed too
+ - Fixed a bug in the servers dialog "recent servers" popup: now it finds the correct entry also
+ when two servers with the same name but different port are present
+ - Added the exporting of aliases to external files (single aliases and the whole alias set).
+ - Fixed the popup tester in the popupeditor: now it works again (it was totally disappeared :)
+ - Misc hacks that I can't remember...
+
+25 Mar 2004:
+ [Pragma]
+ - Code cleanups all around
+ - Updated various docs for the upcoming release
+ - Removed the obsoleted _c2q stuff and --with-local-8bit option
+ - Changed the close/maximize/restore/minimize icons to black ones: they look better
+ - Added a heap mess windows workaround class
+ - Re-implemented the shared files editing (still missing some code)
+
+24 Mar 2004:
+ [Trisk]
+ - Various input editor fixes.
+ - CTCP parser improved.
+ - Updated default script.
+ - Options dialog fixes.
+
+21 Mar 2004:
+ [Trisk]
+ - Many, many more options dialog changes.
+
+20 Mar 2004:
+ [Pragma]
+ - Added several window.* functions
+ - Redirected /whois output to the active window
+ - Options dialog fixes
+ - Added scripting toolbar
+ - Cleaned up some documentation and forced gendoc.pl to ignore the new kvs docs that are not "hardwired" yet
+ - Added some graphics for the final 3.0.0 release
+ - Added a couple of keyboard shortcuts (all described in doc_keyboard.html)
+
+20 Mar 2004:
+ [Trisk]
+ - Some parsing of 005/RPL_ISUPPORT added. Uses PREFIX and and CHANTYPES.
+
+18 Mar 2004:
+ [Trisk]
+ - KviUserListView API change: set[beI]Entries -> setMaskEntries().
+ - KviUserListView minimum width is 100px (due to continuing annoyance of
+ mode editor resizing the thing... not a good solution, but whatever).
+ - Lots of options dialog changes.
+ - Classic taskbar now limits number of rows (when horizontal).
+ - KviChannel API change: banMask(), etc. removed in favour of setMask().
+ - Mask editor requests new list when opened after a mode change.
+ * Fixes problem with CR ircd where -b messages may not match bans in list due to stupid inconsistent hostmasking.
+
+12 Mar 2004:
+ [Trisk]
+ - Auto-reconnect attempts are now counted, delay configurable.
+ * FIXME: Make it possible to stop the reconnect timer before it triggers.
+ - Several huge if() conditions replaced with switch() statements.
+ - Various minor issues fixed.
+
+07 Mar 2004:
+ [Trisk]
+ - Improved script editor cursor location tracking and configuration dialog.
+ - Input widget clean-ups, global input history fixed.
+
+03 Mar 2004:
+ [Pragma]
+ - Some work on the options dialog: moved some options to more appropriate places,
+ rearranged some options widget orders, fixed descriptions etc..
+ - Fix for OnChannelNotice not passing the target argument
+ - More misc hacks that I can't remember :)
+
+02 Mar 2004:
+ [Pragma]
+ - Added OnQueryWindowRequest to catch and block the query window creation events.
+ - Added OnQueryTargetAdded
+ - Corrected a lot of bugs reported on bugtrack.kvirc.omnikron.net
+ - Corrected the $mask.nick() problem
+ - Removed the $ic warning when there was no current IRC context
+ - Moved the server database to unicode
+ - Misc hacks that I can't remember :D
+
+28 Feb 2004:
+ [Pragma]
+ - Fixed the "keep channels open on kick" crash
+ - Probably fixed a sort of a race condition based crash between
+ the socket and the console
+ - More fiddling with KVS events
+
+24 Feb 2004:
+ [Pragma]
+ - Yet more work on the KVS engine: events this time
+ - Temporairly removed the "force last server" hack since it was breaking the
+ servers dialog: one couldn't select a different server to connect to.
+ This is commented out until we find a more strict activation condition.
+ - Activated the $sw function, this time for real :)
+
+20 Feb 2004:
+ [Trisk]
+ Added $date function for formatted time strings.
+
+18 Feb 2004:
+ [Trisk]
+ - Added "all" target for $me and $server functions.
+ - Fixed possible $mask() problem, not sure why Pragma removed '*' from
+ *user. Behaviour should be consistent with docs now.
+ - Cleaned up channel prefix and nick mode prefix (considers invalid chars
+ in nick to be a mode prefix).
+ * Closes ID 200402112009267112
+ * Somebody needs to update the bugtracker...
+
+14-17 Feb 2004:
+ [Pragma]
+ - Rewritten the script editor widget to use QTextEdit. Dropped
+ the whole internal editor since it was not unicode and simply
+ too huge for the feature it provided.
+ - Modularized and cleaned up the localisation of the editor module
+ - More work on KVS engine, module interface nearly estabilished
+ - Added support for changing the order of option items in the
+ options dialog tree display. Most common options should go at the top.
+ - Random fixes around :)
+
+14 Feb 2004:
+ [Trisk]
+ - Changed 005 numeric parser output a bit, fixes issues with skipping to
+ last word of messages.
+ * /me hugs Aeri ;)
+ - Removed check for KviProperty_FocusOwner.
+
+09 Feb 2004:
+ [Juanjo]
+ - Fixed a miscompilation --without-info-tips
+ - Added the lag to the irc context indicator tooltip.
+ - Make the irc context indicator a little bigger (but the correct way
+ would be to make it resize itself depending on the inside text size).
+
+06 Feb 2004:
+ [Pragma]
+ - More work on the KVS engine
+ - Added the IrcContextToolbar to the toolbars menu, now it can be hidden
+ should the TaskBar be there too ?
+ - Moved the TaskBar to be a toolbar like the other ones (and
+ thus inherit the toolbars menu on right click etc...)
+
+05 Feb 2004:
+ [istari]
+ - reformating ChangeLog
+ * please use current schema
+ * break lines after 80 chars
+ - intserting ChangeLog into website
+
+23 Jan 2004:
+ [Pragma]
+ - More work on the KVS engine : popups almost ready
+ - Fixed a regusers bug that didn't allow to register channels with a '@'
+ character in it
+ - More windows port: kvilib, kvirc and several modules are already working
+ - Fixed an expression parser bug related to string/number comparisons
+ - Added $sw() function for switch handling in aliases
+
+20 Jan 2004:
+ [Trisk]
+ - Dock icon menu bug fixed, new entries added.
+ * Problem with switching to console on frame window restore still present,
+ Pragma: Please fix
+ - Input right-click menu shows shortcut keys.
+
+19 Jan 2004:
+ [Trisk]
+ - Adding multiple servers wtih the same hostname (different port) works.
+
+17 Jan 2004:
+ [Trisk]
+ - Fixed some more encoding issues.
+ - mkprocinstances.sh doesn't use zsh/bash-specific variable arrays now.
+
+15 Jan 2004:
+ [Trisk]
+ * PragmaOff's been idle for a long time. =\
+ - Made logfiles lowercase (helps sorting, if any issues contact me).
+ - Made channel and query windows's default logfile contain network name
+ instead of console #... makes more sense.
+ - Massive server parser changes to ensure text is converted to current
+ encoding (fixes issues displaying ISO 8859-1 extended ascii (127+) text).
+ - Changed all %d d %d h %d m %d s to %dd %dh %dm %ds.
+
+09 Jan 2004:
+ [Trisk]
+ - Lots of notify list message changes.
+
+08 Jan 2004:
+ [Trisk]
+ - More widget width problems fixed (presumably).
+ - WHO reply is more informative now.
+ - Shortened some taskbar button captions.
+ - KviConsole::createQuery() tries to prevent duplicate single-target queries.
+
+06 Jan 2003:
+ [Pragma]
+ - More work on the new KVS engine
+ - Added a -nosplash commandline argument to avoid showing the splash screen
+ - Reverted the kvi_activitymeter.png icon: the bars should eventually grow
+ from left to right (in the image) instead of top to bottom.
+ - Re-added $window to kvi_kvs_corefunctions_sz.cpp : it's the new parser
+ version and it will replace the old parser's version in the near future.
+ If you want to test the new parser capabilities then run the commands
+ by preceding them with a dash:
+ /- echo "This is the new parser's version of echo"
+ /- echo $window this is the new parser's version of echo \$window
+ ...
+ - Added four ways of painting the user list view grid. It is user selectable
+ now.
+ Please tell me which is the best one (to choose the default)
+
+04 Jan 2004:
+ [Trisk]
+ - Removed duplicate of $window from KviKvsCoreFunctions
+ (kvi_kvs_corefunctions_sz.cpp), original is in the uparser...
+ - Fixed all the "Jan 2003" dates in the ChangeLog. =)
+ - Fixed KviStringSelector etc. width problem.
+
+03 Jan 2004:
+ [Trisk]
+ - New images, help browser uses Bluecurve ones (temporarily).
+ - Taskbar now displays same number of buttons per row.
+ - Various spacing changes to selectors again.
+ - Fixes to identity dialog.
+ * For some reason, the 4th nickname stays blank... not sure why.
+ - Various QFrame::Panel -> QFrame::StyledPanel.
+ - Dead channels unset limit and key too.
+ - Window list shows same name for dead channels and queries.
+
+02 Jan 2004:
+ [Pragma]
+ - Solaris Forte 7 port (still needs hacking to compile and run flawlessly)
+ - Fix for Solaris dns resolver
+ - More work on the new KVS engine
+ - stdarg.h wrapper to accomodate ugly compilers
+
+01 Jan 2004:
+ [Trisk]
+ - Dotted line drawn next to nick/avatar in nicklist instead.
+ - Changed IP addy editor widget to properly accept '.' and ':'.
+ - Redid identity config dialog.
+
+New Years Eve, 2003:
+ [Trisk]
+ - Draw separator lines above and below avatar and nick.
+ - Join channels dialog cleanup.
+ - Dock widget minor header changes.
+
+30 Dec 2003:
+ [Trisk]
+ - Cleaned up some options dialog stuff.
+ - Added $version function.
+
+ [Pragma]
+ - HTTP avatar option support
+ - More unicode porting all around
+ - Windows port (kvirc and kvilib projects nearly working)
+
+29 Dec 2003:
+ [Trisk]
+ - Fixed problem with toolbar options dialog command.
+ - Changed ident, proxy, SSL, and transport options pages to use QGroupBox to
+ organise options. Maybe add add*SelectorToGroupBox functions later.
+
+28 Dec 2003:
+ [Trisk]
+ - More new toolbar icons, currently using Bluecurve/Crystal mix.
+ - Recent channel, server, and nickname list removes duplicates even if case
+ differs.
+
+27 Dec 2003:
+ [Trisk]
+ - Possible fix for crash if m_pConnectionInfo->szNickName is not set when
+ server disconnects the client (before login).
+ - Sets AsyncServerCommand on disconnect only if nonexistant; /SERVER works
+ now (sorry about that, Pragma).
+ - New Connect/Connecting/Disconnected icons.
+ - Removed border from channel state and mode icons in user list view and
+ lined up icons with text when avatar is used.
+
+ [Pragma]
+ - Added avatar caching
+ - Reworked the code that remembers the last irc server connected in each
+ console now it doesn't break the servers dialog.
+ After the commit I've discovered that it collided with the Trisk's solution:
+ merged the two solutions in something yet better.
+ - Obscure internals: reworked KviIrcMask interface a bit...
+ still needs QString porting
+ - Written a ChangeLog entry after months of "hidden changes" :D
+
+Christmas Eve (Western Hemisphere) 2003:
+ [Trisk]
+ - Modified window tooltips a bit...
+ - Unset channel mode for dead channels
+ - Fixed (hopefully) crash on closing dead channels if disconnected.
+ - Remove src/kvirc/kvs/moc_kvi_kvs_object.cpp from repository.
+ * Merry Christmas everyone! =)
+
+21 Dec 2003:
+ [Trisk]
+ - Output correct message when RPL_CHANNELMODEIS is used for user modes.
+ - URL highlighting matches only if followed by char greater than 46.
+ - Selected text includes control codes (this is a bit of a hack, gets them
+ from block attributes). Shift-select strips codes from the selection.
+ - Consoles remember last nick (correctly now).
+ - PART, TOPIC, and MODE messages will use current channel if no argument.
+ KICK will send proper command if no reason specified.
+ - Non-query notices and privmsgs go to active window if it is a common
+ channel, else to first common channel.
+
+16 Dec 2003:
+ [Trisk]
+ - GRAMMAR FIXES EVERYWHERE
+ * Breaks translations!
+ * Breaks stats program log parsers too (pisg)
+ - Cleaned up gendocs.pl link names.
+ - Rearranged menubar to conform to KDE style standard.
+ - Edit menus and buttons for "Book Title" style, changed some item names.
+ * PLEASE FELLOW THE KDE STYLE STANDARD, it looks better and is less confusing
+ - Made KviUIntSelector use QSpinBox instead of QLineEdit (again).
+ - Added uop/userop (+u) support. Currently uses +h icon, will change later.
+ - Removed many hardcoded font references.
+ - Made logfiles rotate at midnight to update date.
+ * Put timer in KviTimerManager for lack of a better place, somebody check
+ that this is correct, please...
+ - Changed tree window list to show server name for consoles of console caption
+ (too long to view). Set bold font for consoles.
+ - Fixed channel name showing up twice on part when no message is specified
+ - Made external messages (whois info, server notices, etc.) go to console by
+ default, added option ExternalMessagesToActiveWindow to override this.
+ - Also fixed opnotice (NOTICE @#chan) and made non-query private notices and
+ privmsg go to common channel.
+ - Replaced CPPFLAGS in all Makefile.am with AM_CPPFLAGS.
+ - Made channels missing request mask list when mask list editor is opened.
+ - Changed KviIrcMask::getHostDomainMaskPtr() to strip only first part of host;
+ [email protected] returns user@*.y.z.tld.cc, not user@*.tld.cc - much
+ more specific bans, same as getIpDomainMaskLen().
+ * This code was already there, but commented out - why?
+ - Made console windows remember last server and nickname.
+
+21 Oct 2003:
+ [Crissi]
+ - 'Always highlight messages with my nick on them' added: Check
+ irc::output::highlight tab on options.
+ - 'Hightlight only at normal msg' added: Check irc::output::highlight
+ tab on options.
+ - 'Highlight at highlight msg too' added: Check irc::output::highlight
+ tab on options.
+ - 'Highlight at query msg too' added: Check irc::output::highlight
+ tab on options.
+ - 'Highlight only at costum alert level reached' added: Check
+ irc::output::highlight tab on options.
+ - Translation updated
+ - 'Old Tools' menu moved into 'Tools' menu.
+ - convert all source files to unix line end because bug in gettext for
+ extracting strings from window lineend
+
+
+12 Oct 2003:
+ [Crissi]
+ - auto connect of servers after succuessful KVirc startup. Look into advanced
+ server info, connection tab.
+ For each server you can specify if should autoconnect.
+
+11 Oct 2003:
+ [Crissi]
+ - Channels can now stored for each server and then auto join them if
+ successfully connected to the server. Look into advanced server info,
+ 'After login join channels' tab. Simply check the channels (from history)
+ you want to join. Also you can add a new channel (current bug: after
+ adding close/reopen the dialog for showing new channel in list).
+ - Minimize console after successful login. Look into Preferences - Options -
+ Connection.
+
+12 Aug 2003:
+ [Crissi]
+ - 'Minimize all windows' and 'Restore all windows' added. Check Menu -
+ Window and window action toolbar.
+
+01 Aug 2003:
+ [Juanjo]
+ - I'm back, ahhh nothing like vacations to do some free software ;)
+ - The channel completion will also complete on the list of recent channels.
+ - New server completion, if the first four letters of something written on
+ the input are "irc." it will try to complete on the list of recent servers.
+
+18 Apr 2003:
+ [Crissi]
+ - exec module added. Check kvirccvs/modules/exec/README for more info.
+
+26 Mar 2003:
+ [Crissi]
+ - GUI option 'Use taskbar activity meter' added.
+ - GUI option 'Disable ban list request on join' added.
+ - GUI option 'Disable ban exception list request on join' added.
+ - GUI option 'Disable invite list request on join' added.
+ - GUI option 'Use taskbar activity meter' added.
+ - Translation extract script fixed
+ - Translations and translation template updated.
+ - Some comments in kvi_options.h added.
+
+26 Mar 2003:
+ [Pragma]
+ - Option 'Use taskbar activity meter' added.
+
+28 Feb 2003:
+ [Crissi]
+ - The width of the taskbar entries is now custoumizable.
+ - GUI option 'Minimal width of taskbar buttons' added.
+
+25 Feb 2003:
+ [Istari]
+ - Moved to the new CVS machine
+
+25 Feb 2003:
+ [Crissi]
+ - GUI options for symbols on taskbar and disabling global who added.
+ - Try to show emoticons with start not with : correctly (not from me...)...
+ tell me if you got problems with this...
+
+25 Feb 2003:
+ [Pragma]
+ - Option for disabling icons in taskbar added.
+
+21 Feb 2003:
+ [Crissi]
+ - Fixed text on first setup page, Translation possibility for buttons in
+ wizard added.
+
+20 Feb 2003:
+ [Pragma]
+ - Auto-resume transfers when auto-accepted (also GUI option) added.
+
+19 Feb 2003:
+ [Crissi]
+ - Password field for server shows now only stars instead not plain password.
+
+18 Feb 2003:
+ [Crissi]
+ - Size of toolbar icon fixed. Right size s now selected if toolbar size if
+ changed.
+
+18 Feb 2003:
+ [Pragma]
+ - Support for broken filename RESUME requests (mIrc's file.ext) added.
+
+15 Feb 2003:
+ [Crissi]
+ - $mp3player.getmp3tag_album added => get the album
+
+12 Feb 2003:
+ [Crissi]
+ - The mp3player module now supports reading of mp3 tags.
+ - New commands are:
+ - $mp3player.getmp3tag_artist => get the artist
+ - $mp3player.getmp3tag_comment => get the comment
+ - $mp3player.getmp3tag_copright => get the copyright
+ - $mp3player.getmp3tag_crc =) get the crc
+ - $mp3player.getmp3tag_date => get the year
+ - $mp3player.getmp3tag_emphasis => get the emphasis
+ - $mp3player.getmp3tag_genre => get the genre
+ - $mp3player.getmp3tag_layer => get the MPEG layer
+ - $mp3player.getmp3tag_original => get the orginal flag
+ - $mp3player.getmp3tag_title => get the title
+ - $mp3player.getmp3tag_tracknumber => get the track number
+ - $mp3player.getmp3tag_version => get MPEG version
+ - A example script was added (kvirccvs/kvirc/doc/scriptexamples/mp3info.kvs)
+
+4 November 2002:
+ [Juanjo]
+ - Added widgets to the identity an server dialogs to set a default user mode
+ after a conexion to the server.
+
+24 Oct 2002:
+ [Juanjo]
+ - Reworked a little the Tools menu.
+ - Spanish translation updates (only 1000 translations to go, hehe).
+
+19 Oct 2002:
+ [Juanjo]
+ - Added the alias 'lag' to the default script (it just returns the lag
+ using $lag.lag()).
+ - Added the event 'OnLagCheck' that get triggered every time there is a
+ new lag data. This should help scripters to write their own lagmeters
+ without having to poll KVIrc.
+ - Added an option to display the lag on the IRC context indicator, making
+ all those changes actually useful for the final user :)
+
+18 Oct 2002:
+ [Juanjo]
+ - Added a new (and very simple) Lagmeter (see the new 'lag' module
+ commands and functions), the 'Lag Options' dialog in the options/irc
+ window and the 'OnLagAlarmTimeUp' and 'OnLagAlarmTimeDown' events. I'll
+ add an applet displaying the lag to the lag module as soon as I figure
+ how to do it :)
+ - Added the OnPong event.
+ - Fixed bug 200210130200522026
+
+
+10 Oct 2002:
+ [Juanjo]
+ - I'm back, prepare your debuggers
+ - Added a 'Ignore' menu to the userlist users menu.
+ - New feature: User highlights (argh, I hate that word). Just update your
+ default.kvs and right-click on a user to see how it works. Very
+ usefull on very crowded channels with lots of parallel conversations
+ running and you trying to keep track of one (hello #debian). Also
+ added the pertinent commands on the module tmphighlight.
+ - The 'clear' command now also clears the message view on channels.
+
+06-24 Jun 2002:
+ [Pragma]
+ - Pre-release fixes all around
+ - SSL stuff..
+ - About dialog
+ - Fixes for KviIrcView
+ - Windows porting
+ - uh... I forgot all the things I did :D
+
+29 May - 06 Jun 2002:
+ [Pragma]
+ - More SSL support
+ - A lot of bugfixes (see bugtrack.kvirc.omnikron.net)
+ - Arrays support in the whole user parser (uh...this was huge , but
+ necessary) a huge set of functions has been moved to the new array
+ interface WARNING: the dictionaries have a new syntax now! %dict{key}
+ %something[id] is now reserved to arrays (with numeric id).[br]
+ - FOR command added
+ - Updated all the example scripts to support the new syntax
+
+23-28 May 2002:
+ [Pragma]
+ - Preliminary SSL support (try /server -s)
+ - Fix for the messed default.kvs (dialog problem)
+ - A lot of mem-leaks catched with valgdind
+ - Various fixes
+
+22 May 2002:
+ [Pragma]
+ - KDE Terminal window fix
+ - Some new icons
+
+21 May 2002:
+ [Juanjo]
+ - Using Pragma's support for text icons, added the option to substitute
+ some icons (currently ':)', ':D', ':-)', ':-D' and ':-O') in the irc view
+ (Options -> Look & Feel -> Irc View). Still not finished.
+
+18-21 May 2002:
+ [Pragma]
+ - More fixes for windoze
+ - Some reguser hacks
+ - Command, channel, function and directory completion in the input widget
+ - Various thingies all around
+ - CTCP Page support (partial for now , need some more options)
+
+7-17 May 2002:
+ [Pragma]
+ - Tons of fixes for windoze
+ - More modules ported to windoze (snd, dockwidget)
+ - Text icons initial implementation (try CTRL+I and have fun :)
+ - On*Created and OnWindowActivated are now called in the correct order
+ - Various thingies all around
+
+6 May 2002:
+ [Juanjo]
+ - spaste module completed (spaste.setdelay,spaste.list,spaste.stop,etc)
+ - Workaround for the tooltips-following-desktops problem (close tooltips
+ on input widget keyevent).
+
+1-6 May 2002:
+ [Pragma]
+ - Fixes for Solaris compilation: thanks to Kenneth Larea for the hints :)
+ - Random fixes for make dist
+ - Support for anti-flood on CTCP DCC *
+ - Failed DCC Handshakes are now optionally reported to the sender with a
+ CTCP ERRMSG. The options in the dialog are still missing
+ - Fixes for the "bad console repainting" problem
+ - es.po charset fixed
+ - Added sr.po (thnx Prethorian :)
+ - Added auto-windows-tiling feature to the MDI manager
+ - Other cleanups here and there...
+
+27 Apr 2002:
+ [Juanjo]
+ - New module 'spaste' to send text slowly to a conversation window.
+ - New option for the input widget right button men in conversation
+ windows: 'Paste (slowly)'.
+
+25 Apr 2002:
+ [Juanjo]
+ - Now the log viewer can be also a MDI window
+ - Log viewer listview icons
+
+21 Apr 2002:
+ [Juanjo]
+ - snd module
+
+1-12 Apr 2002:
+ [Pragma]
+ - Minor fixes around
+ - Fix for the KDE style toolbars
+ - Fixes for the liquid KDE theme (transparency).
+ not everything works... some label stuff must be fixed in the theme
+ engine...
+ - Query user list view invisible by default (also saved in the window state)
+ - Same for the channel double view
+ - Removed /tbutton and /wbutton and added generic /button and /buttonctl
+ instead updated the example scripts accordingly
+ - Merged the libtool update patch and added more fixes for this
+ - Fixes for --with-local-8bit compilation
+ - Added kvi_list.h and the compatibility KviPtrList defines to work both
+ with qt2 and qt3
+
+31 Mar 2002:
+ [Pragma]
+ - Mini-Fixes for the snd module (threading arguments) for gcc 3.0.0
+ - Mini-fix for libaudiofile check in configure
+ - More work on window position saving
+ - More work on the offer list window stuff.
+ - General fixes for gcc 3.0.0 (can anybody test it ?)
+
+30 Mar 2002:
+ [Pragma]
+ - Added the beginning of the offer list window
+ - Preliminary window properties saving... now handling defaults too
+ - Minor utility-functions in the window popup menus
+ - Preliminary rearrangements of code for KviConsole.... the header is
+ becoming a mess need to order the code syntactically and then maybe extract
+ some code to be put in external classes. KviIrcConnection could be an idea.
+ - Beginning of code for the toolbar button management... need a module ?
+
+29 Mar 2002:
+ [Pragma]
+ - Will I ever start to use this ChangeLog ? :D
+
+7 Mar 2002:
+ [Juanjo]
+ - kvisounds script, the sound on OnMeNamed event is usefull, really ;)
+
+28 Feb 2002:
+ [Juanjo]
+ - Pragma branded str module optimizations, docs for all the implemented
+ functions.
+
+26 Feb 2002:
+ [Juanjo]
+ - More str functions, removed strFindFirst for str.findfirst and updated
+ the scripts using it (UPDATE YOUR SCRIPTS!!!)
+
+21 Feb 2002:
+ [Juanjo]
+ - More str functions (still no docs)
+
+19 Feb 2002:
+ [Juanjo]
+ - Some new functions in the str module
+
+13 Feb 2002:
+ [Juanjo]
+ - /IGNORE && /UNIGNORE support
+ BTW the other guys are also making things, they just don't update the
+ Changelog :P
+
+10 Feb 2002:
+ [Juanjo]
+ - $isOp() $isMeVoice() $isVoice() $isMeHalfOp() and $isHalfOp() added
+
+9 Feb 2002:
+ [Juanjo]
+ - New log viewer module (logview.open)
+ - Fix for the editor not saving his options
+
+4 Feb 2002:
+ [Juanjo]
+ - Fixes so pragma could add --with-qt-embedded to compile againt Qt Embedded
+ (wow!)
+ - Get rid of the 'commit' and 'discard' buttons on the user editor; now
+ all changes are synced with the local db.
+
+25 Jan 2002:
+ [Juanjo]
+ - New notify list editor
+
+21 Jan 2002:
+ [Juanjo]
+ - New identity button on the toolbar, posibility to change nick from the
+ identity dialog if we're connected and es.po work
+
+20 Jan 2002:
+ [Juanjo]
+ - Added the config widget for the create query on server notice option.
+ - Events and events doc: OnDCCChatConnected, OnDCCChatMessage,
+ OnDCCSendTransferComplete, OnDCCGetTransferComplete, OnCTCPFlood,
+ OnServerNotice, OnChannelNotice...
+
+19 Jan 2002:
+ [Juanjo]
+ - Added a 'close after join' checkbox to the join channels dialog & fixes.
+
+18 Jan 2002:
+ [Juanjo]
+ - Added OnAction event
+ - Fixes
+
+17 Jan 2002:
+ [balboy]
+ - updated po file
+ - anti idle script changed... but pragma's syntax he gave me is not working
+ yet :p
+
+ [Juanjo, which is alive]
+ - Added the 'recent servers' Qlist to the servers dialog
+ - Added the 'Show after connecting to server' checkbox to the channelsjoin
+ widget
+ - Servers widget bug fixed
+ - Default nick link actions & men
+ - Config widget for the tree-taskbar minimum? width option
+
+07 Jan 2002:
+ [balboy]
+ - minor changes to the default script
+
+05 Jan 2002:
+ [balboy]
+ - anti idle script added
+ - dcc bug alias fixed
+
+22 Nov 2001:
+ [Juanjo]
+ - Added a bunch of events (On[me]ban/deban, On[me]op/deop,
+ On[me]voice/devoice, OnChannelMessage, OnQueryMessage, OnLimitSet/Unset,
+ OnKeySet/Unset, OnInvite, On[me]BanException, On[me]BanExceptionRemove,
+ etc).
+
+18 Nov 2001:
+ [Juanjo]
+ - Added a 'Connect to servers' dialog (serversjoin.open) -> update:
+ serversconnec.open
+ - Added scripted buttons for the channels and servers dialogs.
+ - Added $anyConsoleConnected() function.
+ - Fixes
+
+12 Nov 2001:
+ [YaP]
+ - Added DCC user defined port range
+
+10 Nov 2001:
+ [Juanjo]
+ - Now it has all the functionality ;)
+
+ [YaP]
+ - IPv6 porting from Win XP to Win 2000 (Preprocessor definition: WIN2K)
+
+8 Nov 2001:
+ [Juanjo]
+ - Added a 'Join Channels' widget. It still don't have all the
+ funcionality.
+
+4 Nov 2001:
+ [Juanjo]
+ - Improved away system
+ - Option to always highlight own nick on messages
+ - Made the splash screen a managed window
+ - Added an 'apply' button to the general options dialog
+
+24 Sep 2001:
+ [Kristoff]
+ - Made Dcc Voice completely configurable, options dialog also added
+ - Volume slider for dcc voice added
+ - Fixed a bug in alt+arrows switching (sigsegv when window had no context
+ assigned)
+
+23 Sep 2001:
+ [Kristoff]
+ - Switching between windows using ctrl/alt + arrows
+
+13 Sep 2001:
+ [Balboy]
+ - some more changes to the defscript
+
+12 Sep 2001:
+ [Kristoff]
+ - Text selected in Help Browser window is now automagically copied into the
+ clipboard and can be pasted (Balboy's request).
+ - Pressing Enter in Help Browser's lineedit starts search. When the search
+ starts the cursor changes into waitCursor (cosmetical improvement :))
+ - 22 Mar - 12 Sep... man...
+ - biff module added - not functional at all - adding some code not to mess
+ with makefiles anymore
+
+12 Sep 2001:
+ [Balboy]
+ - updated the changelog :p
+ - added some functions to the defscript
+
+30 Mar 2001:
+ [Balboy]
+ - quit function added
+
+22 Mar 2001:
+ [Kristoff]
+ - combobox object added
+
+17 Mar 2001:
+ [Pragma]:
+ - A lot of unreported changes again
+ - Added anti-aliased font support
+
+17 Feb 2001:
+ [Pragma]
+ - A lot of changes: removed the libkvigui, it was rather useless, and it is
+ better to have all the GUI code into the core executable...(for many
+ reasons).
+ - Added the first "shy" icq module.
+
+15 Feb 2001:
+ [Kristoff]
+ - Added urllabel object
+ Note: I'm proud to be the first person, that uses this file in the
+ year 2001 :-)
+
+05 Dec 2000:
+ [Number1]
+ - Cleaned up the about dialog, added some new entries and fixed the
+ background bug.
+ Note: Could people start using this log again please? ;)
+
+12 Sep 2000:
+ [Kristoff]
+ - started this ChangeLog (to avoid confusion: newset entries go above
+ this one ;))
+ - added widget object
diff --git a/FAQ b/FAQ
new file mode 100644
index 00000000..c9355dbf
--- /dev/null
+++ b/FAQ
@@ -0,0 +1,712 @@
+1. PROJECT RELATED QUESTIONS
+
+1.1 What is KVIrc ? What the "KVIrc" name stands for ?
+1.2 Why KVIrc is not totally integrated in KDE ?
+
+
+2. COMPILATION
+
+2.1 I can't compile kvirc from cvs, what's wrong?
+2.2 Internal Compiler Errors ?
+2.3 On Mandrake 10.0 (or other) KVIrc fails to start
+ saying that it can't find libkvisetup.so.
+2.4 I got 'amarokInterface.cpp:29:31: amarokInterface.moc: No such file or directory'. Whats going wrong?
+2.5 Configure complains about a missing libdl.so but I seem to have it
+
+
+3. INSTALLATION
+
+3.1 There is a problem during package installation/creation
+ file /usr/share/services/irc.protocol from install
+ kvirc-version.package conflicts with file from package xxx
+
+
+4. IRC
+
+4.1 How do i join a channel ?
+4.2 How do i autojoin channels ?
+4.3 How do I enable automatic NickServ identification ?
+4.4 I can't see my national characters, what's wrong ?
+4.5 I can't connect to an IPV6 server, what's wrong ?
+4.6 /me doesn't support the '$' character, what's wrong ?
+4.7 /me doesn't support the '"' (double quote) character, what's wrong ?
+4.8 /me can't contain the ';' character, what's wrong ?
+4.9 I try to do a /whois on nick blah\ but i get the reply for blah (without the slash)
+4.10 What is AVATAR protocol ? Is there any documentation about it ?
+4.11 The log files seem to be saved randomly, when I open a log
+ I can see only a part of the text that actually should be there
+4.12 The DCC transfers seem to be interrupted after the first few bytes:
+ KVIrc says that the remote end has closed the connection.
+
+
+5. ADVANCED IRC FEATURES
+
+5.1 How do I connect to an SSL-enabled IRC server ?
+5.2 How do I use DCC over SSL ?
+5.3 Do I need a SSL certificate ?
+5.4 How do I create a SSL certificate ?
+5.5 I can't get KVIrc to use my SSL certificate in a DCC, what's wrong ?
+5.6 KVIrc crashes when a certificate is used under Windows, what's wrong ?
+5.7 How do I enable mircryption (encryption in general) for a specific channel ?
+5.8 How do I execute a process and send its output to a channel ?
+5.9 How do I keep channels and queries open after a disconnect ?
+5.10 I have an unreliable ISP connection but KVIrc takes a really long
+ time to detect a disconnection and reconnect.
+5.11 I'm in a LAN and KVIrc uses a wrong IP address in dcc transfers
+
+6. APPAREANCE
+
+6.1 On Windows KVIrc seems to slow-down sometimes, what's wrong ?
+6.2 I don't see the channel popup menus anymore, what's wrong ?
+6.3 Does KVIrc support Themes?
+6.4 I hate all that colors, what can I do about it ?
+6.5 On Windows, how do I use firefox/opera/any_other_browser to open links instead of explorer ?
+
+
+7. CRASHES
+
+7.1 KVIrc crashes when the multiline text input is opened (obsolete)
+7.2 What the heck is a gdb stack trace and how do I get it ?
+7.3 KVIrc hangs up, but doesn't crash. How do i report debug informations ?
+7.4 KVIrc exits by itself or simply "disappears" without any apparent reason.
+7.5 KVIrc dies randomly and "Alarm Clock" is printed in the console
+7.6 KVIrc dies when using alias(identify){ identify password; }
+
+--------------------------------------------------------------------------------
+1. PROJECT RELATED QUESTIONS
+--------------------------------------------------------------------------------
+
+
+1.1 What is KVIrc ?
+
+ KVIrc is a cross-platform Internet Relay Chat client.
+ The name stands for K Visual Internet Relay Chat client.
+ The K prefix comes from the old times, when KVIrc was bound to the
+ KDE project and depended on the KDE libraries to run. Actually this
+ is not true anymore since KVIrc depends only on the Qt library from
+ TrollTech and runs also on platforms where KDE can't run.
+
+
+1.2 Why KVIrc is not totally integrated in KDE ?
+
+ First of all read the answer for question 1.1.
+ We could provide a more complete integration by the means of conditional
+ compilation but since it would require additional efforts to synchronize
+ the KVIrc sources with the KDE library changes we choose not to do it.
+ If you wish to contribute some code that better integrates KVIrc with
+ KDE you're welcome to do so: we will happily accept your patches as long
+ as you promise to mantain them :)
+
+
+--------------------------------------------------------------------------------
+2. COMPILATION
+--------------------------------------------------------------------------------
+
+2.1 I can't compile kvirc from svn, what's wrong?
+
+ Have you checked the requirements ?
+ *Carefully* read the INSTALL file that comes with the distribution:
+ it contains the informations to solve 95% of the problems that
+ you may encounter. You may also try digging in our mailing list
+ archive: many problems have been solved there.
+ If you still can't get it to work please either subscribe to the KVIrc
+ mailing list (see www.kvirc.net) and report the problem there or join #kvirc
+ on IRCNet and ask the channel members for a hint.
+
+
+2.2 Internal Compiler Errors ?
+
+ Compile errors like this:
+ In file [somefile]:[someline] internal error:
+ Segmentation fault
+ Please submit a full bug report,
+ with preprocessed source if appropriate.
+ See <URL:http://bugzilla.redhat.com/bugzilla/> for instructions.
+
+ This error can have multiple reasons.
+ 1) A compiler bug: my GCC 3.2 20020903 (default on RH 8.0) spits
+ out 5-6 of them daily. Usually it is solved by simply restarting the "make" command.
+ If it doesn't go away or if it gets really frequent and annoying you might try to upgrade the compiler.
+ 2) A memory corruption: this is really frequent: one of your memory banks is spitting random bytes
+ sometimes. Usually the problems come out under heavy system load (kernel, KDE or kvirc compilation for example).
+ You can check for memory corruption by trying different RAM modules (or removing them one at a time to discover
+ the broken bank). You can also try a program called memtest and a kernel
+ patch that can force the broken memory banks to be ignored by the kernel (allocated permanently to a dummy kernel task).
+ These tools can be found by digging the web with your favorite search engine.
+ 3) A deeper hardware problem: if upgrading the compiler and changing memory banks doesn't help then
+ it *might* be a deeper hardware problem: bus errors , faulty IDE (or SCSI) controller or even buggy CPU...
+ Well....
+
+
+2.3 On Mandrake 10.0 (or other) KVIrc fails to start
+ saying that it can't find libkvisetup.so.
+
+ Mandrake 10.0 default libtool package is broken. Either upgrade
+ the libtool package or try to run ./autogen.sh --bundled-libtool
+ and then recompile (./configure, make, make install).
+ This *might* apply to other systems too.
+
+
+2.4 I got 'amarokInterface.cpp:29:31: amarokInterface.moc: No such file or directory'. Whats going wrong?
+
+ You have to install qt3 devel tools which include uic and moc. If installed, be sure that uic and moc are in PATH.
+
+
+2.5 Configure complains about a missing libdl.so but I seem to have it
+
+ The most common causes are two:
+
+ 1) You have libdl.so.X (where X is usually a number or a set of numbers) but not libdl.so
+
+ You need to do a symbolic link from libdl.so.X to libdl.so. You do it by entering the directory
+ where libdl.so.X is and issuing a ln -s command, for example:
+
+ # cd /lib
+ # ls libdl*
+ # ln -s libdl.so.2 libdl.so
+
+ Then try to ./configure again
+
+ 2) You don't have a c++ compiler installed
+
+ The libdl test is the first ./configure test made with a c++ compiler.
+ The confirmation for this error can be found in the config.log file
+ where you can find lines similar to the following:
+
+ configure:21637: g++ -o conftest conftest.cc -rdynamic -ldl >&5
+ ./configure: line 1: g++: command not found
+ configure:21643: $? = 127
+ configure: failed program was:
+ ...
+
+ Your distribution probably ships the c++ frontend to gcc in a package
+ separated from gcc itself. The package might be also named g++.
+ Look it up on your installation CD and install it, then ./configure again.
+
+-------------------------------------------------------------------------------
+3. INSTALLATION
+-------------------------------------------------------------------------------
+
+3.1 There is a problem during package installation/creation
+ file /usr/share/services/irc.protocol from install
+ kvirc-version.package conflicts with file from package xxx
+
+ This is a known issue with all types of packages that handle
+ file conflicts. KVIrc installs the irc protocol handler for KDE
+ and the same is done by ksirc and kopete (and maybe others).
+ There is no particular reason for KVIrc to fix it in the core
+ distribution (and there is also no simple way to do it).
+ Either the package maker must exclude the irc.protocol
+ file from installation or mark it as "optional" in some way or the
+ users must use some sort of "force" flag during the installation.
+
+
+-------------------------------------------------------------------------------
+4. IRC
+-------------------------------------------------------------------------------
+
+4.1 How do i join a channel ?
+
+ Type "/join #channelname"
+
+
+4.2 How do i autojoin channels?
+
+ There are many ways to do it.
+ For example:
+ Select "Scripting/Events" from the KVIrc menu.
+ Lookup the "OnIrc" entry in the left pane of the window that pops up.
+ Right-click on that entry and select "Add handler".
+ A "default" handler will be created. In the right pane write:
+ join #kvirc
+ join #kde-users
+ join #somechannel
+ ....
+ Now click OK and you're done: you have just created a handler for an event.
+ Reconnect to a server and KVIrc will autojoin the channels that you have selected.
+ Another option (nicer, if you use several servers) is to go to the servers options
+ page and click the button labeled 'Advanced' on the entry for the single server.
+ There is a server-specific "On connect execute..." event.
+
+
+4.3 How do I enable automatic NickServ identification ?
+
+ KVIrc supports two kind of NickServ identification rules: per-network and global.
+ The per-network rules can be accessed from the server options page.
+ You need to select a network in the list view (not a server!) and then click
+ "Advanced...". In the dialog that appears there is a NickServ tab
+ on that you can add your identification rules. Adding a rule
+ should be straightforward (if you stop the mouse over an item you will likely get a small
+ tool tip with the explaination). Each rule is composed of:
+ - the nickname that is being identified: the rule will be applied only
+ when your current nickname corresponds to this one.
+ - a nick server user mask that must be matched by the NickServ user
+ in order for him to be recognized as the real NickServ asking for
+ identification. You will probably use something like NickServ!service@*
+ - a message regular expression that must be matched by the message
+ that the NickServ sends when requesting the identification.
+ You will probably use something like "If this is your nick,
+ identify yourself with /ns IDENTIFY password"
+ - an identification command that will be executed when all the rules
+ above match. You will probably use something like "ns IDENTIFY yourpassword"
+ The global rules can be created in the IRC::NickServ page of the options dialog
+ (accessible from the Settings/Configure KVIrc... menu). The main difference
+ is that each rule has a server mask that must be matched by the current
+ server name for the rule to be applied.
+ KVIrc first looks in the per-network rules and if none matches it looks
+ in the global rules.
+
+
+4.4 I can't see my national characters, what's wrong ?
+
+ There are several ways to fix your national characters display.
+ General encoding:
+ Open the options dialog and go to the "Encoding" page.
+ You can set explicitly the encoding to be used for the whole application.
+ If you choose "Use Language Encoding" KVIrc will try to guess the
+ encoding from your system settings. If this doesn't work then the reasons
+ may be:
+ - Your system settings are wrong
+ You need to fix them
+ - Your server applies some specific encoding to the data
+ See "Server encoding"
+ - You're chatting with people that have different system settings
+ See "Channel & Query encoding"
+ Server encoding
+ Besides the general encoding you can set one encoding per server.
+ This is done in the server options dialog (Click Advanced...).
+ The encoding will be applied to all the text that comes from
+ and goes to the server. If you choose "Use system encoding"
+ then the server will inherit the "General encoding" value above.
+ If this doesn't work then you have either set it incorrectly or
+ you are chatting with people that use different encodings.
+ In this case see "Channel & Query encoding"
+ The server encoding is used also to decode nicknames and
+ channel names on servers that support it.
+ Channel & Query encoding
+ Besides the general and server encoding you can set also per-window
+ encoding in channels and queries. This encoding will be applied
+ ONLY to the text sent to or received from that channel or query.
+ This feature is useful when chatting over a non unicode aware
+ IRC server (nearly all at the time of writing) with people
+ that have settings different than your general defaults or
+ the server default.
+
+ Keep in mind that IRC has a MAJOR problem with character encoding
+ and in fact the formal definition of the protocol requires it
+ to be only 7bit safe. This means that on some servers you may
+ see your national characters eaten by the IRC network and there
+ is almost nothing you can do about that...
+
+ UTF-8 is the best encoding we can get on IRC. Try to convince
+ other people to use it :)
+
+
+4.5 I can't connect to an IPV6 server, what's wrong ?
+
+ First of all make sure that your IPV6 stack is setup correctly.
+ Can you ping6 other IPV6 other machines ?
+
+ # ping6 www.6bone.net
+
+ Is the IPV6 support enabled in your kvirc executable ?
+ To find it out , try
+
+ /echo $features
+
+ in the KVIrc commandline. You should get a comma separated list of
+ features compiled in the executable. If the list contains "IPv6" then
+ the support is compiled in, otherwise you must check your compilation
+ stage to guess what went wrong.
+ To connect to an IPV6 server you can use /server -i <servername>
+ If you can ping other IPV6 machines, the IPv6 support is compiled in your
+ executable and you still can't connect to an *existing* IPv6 server then
+ you may have found a bug :) Report it.
+
+
+4.6 /me doesn't support the '$' character, what's wrong ?
+
+ This is NOT a bug : this is a feature : kvirc supports (and substitutes!) variables in all the commands.
+ You can escape your $ sign by using the backslash character: /me has gained \$100 will work correctly
+
+
+4.7 /me doesn't support the '"' (double quote) character, what's wrong ?
+
+ This is NOT a bug : this is a feature : a string enclosed in double quotes will have its whitespace preserved
+ while the other strings will have the whitespace simplified. This is valid for ANY command.
+ You can escape your " sign by using the backslash character: /me feels a bit \"foo\" will work correctly
+
+
+4.8 /me can't contain the ';' character, what's wrong ?
+
+ This is NOT a bug : this is a feature : kvirc supports multiple commands on a single line and uses ';' as a command
+ separator. You can escape your ';' sign by using the backslash character: /me is hungry \;) will work correctly.
+
+
+4.9 I try to do a /whois on nick blah\ but i get the reply for blah (without the slash)
+
+ In KVIrc /whois is a scripting command and the nickname is a command parameter.
+ In scripting commands the backslash is a special character with several "escape"
+ meanings. To include a literal backslash inside a parameter you MUST double it,
+ thus the correct command to issue is /whois blah\\
+
+
+4.10 What is AVATAR protocol? Is there any documentation about it ?
+
+ AVATAR is a simple CTCP based protocol that allows associating images (avatars)
+ to IRC users. The protocol definition is simple:
+
+ - CTCP AVATAR QUERY:
+ :<source> PRIVMSG <target> :<0x01>AVATAR<0x01>
+ Queries the avatar of the <target>.
+ - CTCP AVATAR REPLY:
+ :<source> NOTICE <target> :<0x01>AVATAR <avatar_url><0x01>
+ Asserts that the <source> user's avatar is located at <avatar_url>
+ that usually will be something like http://server.domain.top/avatarimage.jpg.
+
+ KVIrc supports also DCC based avatars that are simply "offered" to the
+ remote users. In this case the <avatar_url> does not contain the http://
+ prefix but is a simple file name. The remote users request the avatars
+ by issuing a DCC GET command. This is an useful but secondary extension
+ and can be ignored by simple implementations. If you need more informations
+ about this method please write to pragma at kvirc dot net.
+
+
+4.11 The log files seem to be saved randomly, when I open a log
+ I can see only a part of the text that actually should be there
+
+ KVIrc does not explicitly flush the log files while writing them. The OS
+ (or the underlying C library) does the flush operation when necessary.
+ This means that blocks of the log file will be added to the file on disk
+ only once in a while. If you really need to see the logs in real time
+ then you can explicitly flush the log files by scripting.
+ Just add a script like this to your OnKVIrcStartup event:
+
+ timer(flushlogfiles,30000)
+ {
+ foreach(%x,$window.list(all,any))
+ {
+ if($log.file(%x))
+ {
+ echo -w=%x "Flushing log file...";
+ log.flush -w=%x;
+ }
+ }
+ }
+
+ The script above will flush all the log files every 30 seconds. You may
+ remove the echo statement if you're annoyed by the output :)
+
+
+4.12 The DCC transfers seem to be interrupted after the first few bytes:
+ KVIrc says that the remote end has closed the connection.
+
+ Make sure that you don't have activated the "Send ACK for byte 0"
+ option in "Options->DCC->File Transfer->Advanced".
+ This option should be used ONLY IF you have problems without.
+
+
+
+
+-------------------------------------------------------------------------------
+5. ADVANCED IRC FEATURES
+-------------------------------------------------------------------------------
+
+
+5.1 How do I connect to an SSL-enabled IRC server ?
+
+ Use /server -s <servername>
+ It should work also over IPV6.
+ If it doesn't work then your executable might have no SSL support compiled in.
+ To find it out type
+
+ /echo $features
+
+ in the KVIrc commandline. If "SSL" is not in the list then you must go back
+ to the compilation phase and see what went wrong.
+
+
+5.1 How do I use DCC over SSL ?
+
+ /dcc.chat -s <nickname> should work
+
+
+5.3 Do I need a SSL certificate ?
+
+ No you shouldn't need it, but you can use it if you want.
+
+
+5.4 How do I create a SSL certificate ?
+
+ A test self-signed certificate can be created by using the CA.pl perl script included
+ in the OpenSSL distribution. It will be something like CA.pl -newcert
+
+
+5.5 I can't get KVIrc to use my SSL certificate in a DCC, what's wrong ?
+
+ The SSL protocol doesn't require the "client" to send the certificate: it is
+ sent only if the "server side" requests it (it is not the KVIrc case).
+ The server side may have a certificate and you can set it in the SSL options page.
+ If your Private Key is stored in the certificate file pass the same filename
+ to both Certificate and PrivateKey option.
+ Remember to set the password if needed.
+
+
+5.6 KVIrc crashes when a certificate is used under Windows, what's wrong ?
+
+ This is probably a bug of the SSL dll shipped with the windows version of KVIrc.
+ You might try with a different version of this dll.
+
+
+5.7 Can I encrypt my messages?
+(or: How do I enable mircryption (encryption in general) for a specific channel?)
+
+ KVIrc supports encryption for channels, queries and dcc chats by the means
+ of text transformation engines. You can access the list of the engines
+ by clicking the button with the yellow lock in the upper right corner
+ of the window. In the pane that will appear select "use text transformation"
+ and then choose one of the available engines.
+ The Mircryption engine is an implementation of the mircryption protocol and
+ supports both ECB and CBC mode. There is also a wide variety of Rijndael based encryption
+ engies as well as some funky other text transform tricks.
+ Most of the engines will need a pair of keys to encrypt and decrypt text
+ and in most cases you will use the same key for both encrypting and
+ decrypting. In the particular case of Mircryption you can enable
+ CBC mode by prefixing your key(s) with the "cbc:" string.
+ Once you have entered the keys just click on OK and start "talking" in the
+ window. Any encrypted text will have a "lock" overlay in his icon.
+ If you want to avoid encrypting a particular text line (maybe because
+ you want to allow everyone on a channel to read it) you can start
+ the line with a CTRL+P character.
+
+
+5.8 How do I execute a process and send its output to a channel ?
+
+ The straight way to do this is
+
+ /exec("your command here"){ say $1; }
+
+ Since it is not too much "user friendly", you can alias it in
+ the following way:
+
+ alias(runandsay)
+ {
+ exec($0-){ say $1; }
+ }
+
+ Then you would simply run
+
+ /runandsay cat /proc/cpuinfo
+
+ in the channel window you want the output sent to.
+
+ Keep in mind that this is a "brute" approach and I'm sure that after
+ reading some documentation (start from /help exec) you will be able to
+ find more elaborate and nice ways to send a process output to a channel/query.
+
+
+5.9 How do I keep channels and queries open after a disconnect ?
+
+ KVIrc can keep your channels and queries open when the connection terminates
+ unexpectedly. This will probably make sense only if you plan to
+ reconnect to the same server or at least the same network (either manually
+ or automatically).
+
+ An "unexpected disconnect" is a connection termination not explicitly caused by
+ the KVIrc user. This means that the connection is interrupted, either
+ by the networking stack or by the remote server, without the user
+ having sent a QUIT message (by the means of the /quit command or by pressing
+ the "disconnect" button in the toolbar).
+
+ All this because the normal behaviour of a /QUIT command is, yes, to quit
+ your current connection without leaving traces of it.
+
+ To keep the channels and queries open you just need to select the
+ relative options in the "Connection" page of the options dialog
+ (on unexpected disconnect: "Keep channels open" an/or "Keep queries open").
+
+ Then you might also select "Automatically reconnect", "Rejoin channels
+ after reconnect" and "Reopen queries after reconnect" to bring your
+ "dead windows" to life again :)
+
+ Finally, you can simulate an "unexpected disconnection" by using the -u switch
+ of the /quit command. This might be useful when you want to explicitly
+ quit your connection while leaving the channels and queries open... maybe
+ because you need to renew the connection to your ISP before reconnecting ;)
+
+
+5.10 I have an unreliable ISP connection but KVIrc takes a really long
+ time to detect a disconnection and reconnect.
+
+ KVIrc doesn't detect itself that the connection has dropped until your
+ kernel explicitly times out. KVIrc measures lag, instead, that will
+ probably grow up a lot when the connection has dropped.
+ You can write a handler for the OnLagCheck event that will detect
+ the lag growing over a certain threshold and reconnect.
+ This involves opening the event editor, selecting OnLagCheck
+ and choosing "Add handler" from the right mouse menu.
+ In the handler write:
+
+ if($1 > 30000){ quit -f -u; }
+
+ 30000 is just a sample threshold (it means 30000 milliseconds!), replace
+ it with a value of your choice.
+ quit -f -u will close the current connection immediately (-f = force)
+ and will simulate an "unexpected disconnection" condition (-u = unexpected).
+ If you then enable automatic reconnection (see answer for question 5.9)
+ in the options dialog, KVIrc will automatically reconnect and rejoin channels.
+
+
+5.11 I'm in a LAN and KVIrc uses a wrong IP address in dcc transfers
+
+ KVIrc supports a couple of methods for guessing the right IP address for
+ DCC transfers: you only have to guide it a bit :)
+
+ The first thing to try is "Guess address from IRC when unroutable" (Options->DCC).
+ This will perform a lookup on your own IRC mask once you connect
+ to an IRC server and use the address as source in DCC transfers.
+ (You need to reconnect to the server to make this option work!)
+ This trick will fail when your hostmask is cloaked (mode +x on recent IRC servers):
+ KVIrc will tell you that it couldn't look up the hostname and give up.
+
+ In this case you might try to set a fixed address to be sent as source
+ in the DCC transfers: you just need to fill in the *IP address* of your
+ router in the option field. This field doesn't support hostname lookups
+ and it won't update automatically when you router's IP changes.
+ However, if you router's IP has a dns entry, you can ask KVIrc to fill
+ this field with a simple script to be performed at every connection.
+
+ event(OnIRCConnectionEstabilished,updatedccsource)
+ {
+ ahost(yourrouterhostname.dyndns.org)
+ {
+ option boolDCCSendFakeAddressByDefault 1
+ if($1)option stringDefaultDCCFakeAddress $2
+ else echo "Couldn't look up the router's hostname"
+ }
+ }
+
+ When transferring files to other KVIrc clients you may also try the
+ DCC RSEND protocol instead of DCC SEND. It will ask the remote end
+ to listen instead.
+
+-------------------------------------------------------------------------------
+6. APPAREANCE
+-------------------------------------------------------------------------------
+
+6.1 On Windows KVIrc seems to slow-down sometimes, what's wrong ?
+
+ This is usually caused by the heavy graphics: try removing some graphic effects like the
+ pseudo-transparency. I have experimented that it happens almost always on 32-bit displays.
+ Switching to 16 or 24 bits may also help.
+
+
+6.2 I don't see the channel popup menus anymore, what's wrong ?
+
+ If something went wrong with KVIrc settings (a crash when the script settings
+ were saved ?) or if you have messed with the scripting options and you
+ want to get back the original behaviour (default script) you can choose
+ "Scripting/Restore default script" from the KVIrc menu.
+ (WARNING: It will erase any script modification you have made!)
+ Update: starting with the cvs of 2005.01.17, KVIrc should be able to
+ detect such situations and automatically suggest the re-installation of the
+ default script.
+
+6.3 Does KVIrc support Themes?
+
+ Yes, KVIrc now has introduced a Theme Manager. You can find it in the Option dialog.
+ From there you can change the way KVIrc looks: fonts, colors, windows behaviour,
+ icons, taskbars, and so on.
+ Once you have changed the theme, you can save it, archive it (tar.bz2 or zip) and share with your friends,
+ or send it to the KVIrc staff to see it published on the web site.
+
+
+6.4 I hate all that colors, what can I do about it ?
+
+ By fiddling with the options you can make KVIrc appear even monochromatic.
+ Go to Options/Theme and select the minimalist theme: it will set white text
+ on black background and will disable the displaying of a lot of icons.
+ This is a good starting point for you console addicted hackerz :D
+
+
+6.5 On Windows, how do I use firefox/opera/any_other_browser to open links instead of explorer ?
+
+ Go to the "URL Handlers" options page and set
+
+ run "C:\\path\\to\\your\\browser.exe" "$0"
+
+ as url handler for the protocol you're interested in (maybe in all).
+
+ Suepahfly suggests to use
+
+ rundll32 url.dll,FileProtocolHandler "$0"
+
+ as url handler to open the url in the default windows browser.
+
+
+-------------------------------------------------------------------------------
+7. CRASH
+-------------------------------------------------------------------------------
+
+7.1 KVIrc crashes when the multiline text input is opened (obsolete)
+
+ If you have installed a new version of KVIrc over a previous installation
+ br if you have changed the Qt libraries that KVIrc is linked to then
+ it might be caused by a broken multiline text editor config.
+ Try removing $HOME/.kvircssexeditorrc and starting KVIrc again.
+ Update: this problem has been completely removed during late 2004 developments
+ by completely rewriting the multiline input.
+
+
+7.2 What the heck is a gdb stack trace and how do I get it ?
+
+ A gdb stack trace is a "photography" of the state of the KVIrc internals
+ taken when a certain event has occured. The most common event
+ is a program crash (Segmentation Fault).
+ The stack trace helps (or even allows) the developers to locate the
+ crash cause in the program sources.
+ To obtain a gdb stack trace you must:
+
+ - Compile KVIrc with the --enable-debug ./configure option.
+ Without this switch the stack trace is USELESS.
+ - Have a working installation of gdb (the gnu debugger)
+ This is usually available on your distribution cd
+ and you may already have it installed.
+ - Run KVirc:
+ # gdb kvirc
+ When the gdb prompt appears write:
+ # (gdb) run -f
+ Make KVIrc crash: gdb will tell something about
+ a signal received by the program. Write then:
+ # (gdb) bt
+ The text you see is the stack trace you wanted :)
+ Copy+Paste+Send it to pragma at kvirc dot net or the mailing list.
+
+
+7.3 KVIrc hangs up, but doesn't crash. How do i report debug informations ?
+
+ Use gdb to get a stack trace as in answer to question 7.2.
+ Since your KVIrc doesn't crash you will have to interrupt the execution
+ manually while it is hung up. You can do it by pressing CTRL+C in gdb.
+
+
+7.4 KVIrc exits by itself or simply "disappears" without any apparent reason.
+
+ Yes. It probably crashed but you haven't noticed that.
+ We NEED a gdb stack trace or a working procedure to reproduce the
+ behaviour in order to hunt it.
+
+
+7.5 KVIrc dies randomly and "Alarm Clock" is printed in the console
+
+ Try recompiling kvirc by adding the --with-ignore-sigalarm switch to
+ ./configure. (Note: the reason of the incoming SIGALARM signals
+ on certain systems is acually unknown. Please send hints to pragma at kvirc dot net).
+
+
+7.6 KVIrc dies when using alias(identify){ identify password; };
+
+ This is infinite recursion: a programming error.
+ Take a look at http://en.wikipedia.org/wiki/Infinite_loop , learn
+ that once for all and fix your script.
+
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 00000000..fc7caf68
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,753 @@
+Szymon Stefanek Mon Mar 04 2008
+###############################################################################
+General notes for the installation of the 3.4.0 release of KVIrc
+###############################################################################
+
+ This document contains the procedures to compile and install
+ the version 3.4.0 of KVIrc.
+
+###############################################################################
+# 0. Table of contents
+###############################################################################
+
+ 1. Introduction
+ 2. Guru-level installation
+ 3. Hacker-level installation
+ 4. Human (detailed) installation instructions
+ 5. How to compile KVIrc with Qt-embedded
+ 6. Compiling KVIrc on Mac OS X
+ 7. A note about Windows 95/98/ME
+
+###############################################################################
+# 1. Introduction
+###############################################################################
+
+ This document contains the procedures to compile and install
+ the version 3.4.0 of KVIrc.
+
+ If you have found this document in a binary distribution then
+ KVIrc has been probably already installed by your favorite package
+ manager and maybe something is not working as expected. In this case
+ this document and the accompanying FAQ can help you in guessing
+ what's wrong.
+
+ If you have found this document in a source distribution or you
+ have downloaded it by using the svn then well...
+ this is a standard INSTALL file :)
+
+###############################################################################
+# 2. Guru installation:
+###############################################################################
+
+ # ./configure
+ # make install
+
+###############################################################################
+# 3. Hacker installation:
+###############################################################################
+
+ If you're compiling the svn version of KVirc run ./autogen.sh
+ (You NEED automake >= 1.5 for autogen.sh to run).
+
+ # export QTDIR="your qtlibrary path"
+
+ eventually:
+
+ # export KDEDIR="your kde library path"
+
+ We're using GNU tools here.
+
+ # ./configure --help
+ # ./configure [your options]
+ # make
+ # make install
+
+###############################################################################
+# 4. Human (detailed) installation:
+###############################################################################
+
+ If you're not a guru, or have problems with the installation
+ read these instructions carefully.
+
+ ###
+ ### Step 0 (ONLY FOR THE SVN VERSION)
+ ###
+
+ If (*** AND ONLY IF ***) you're compiling the svn version of kvirc
+ you need to generate the configure script. If you're compiling
+ a downloaded tar.gz (or tar.bz2) package or you don't know what
+ svn is then jump directly to step 1!
+
+ You need a recent automake and autoconf installed on your system.
+ It is also reccomended to have a recent (matching) libtool installed
+ (libtool is not strictly necessary since KVIrc has a bundled one,
+ but a libtool matching your automake/autoconf versions will probably
+ run better on your system).
+
+ Anyway, run:
+
+ # ./autogen.sh
+
+ If it runs without any error (it will tell you "Done") then
+ you may skip to step 1, otherwise read on.
+
+ First of all check your auomake version.
+ You need automake >= 1.5: older versions will NOT WORK.
+ You can check the automake version with the command
+
+ # automake --version
+
+ If your automake version is lower than 1.5 upgrade it.
+ You can find it at http://www.gnu.org/software/automake/ (source)
+ or on your favorite distribution site as auto-installing package.
+
+ Automake installation tip: automake installs in /usr/local/
+ by default. If you have an older automake installation that
+ resides in /usr/ it's better to remove it or (better) overwrite it
+ with the new installation.
+ If you choose to overwrite the old installation with the new
+ one then just use "./configure --prefix=/usr" as the automake's
+ configure command.
+ If you choose to remove the old version then the files to be
+ removed are /usr/bin/automake /usr/bin/aclocal /usr/share/automake
+ /usr/share/aclocal. If you feel unsure about removing it, rename it.
+
+ If the script fails to run then you might try
+
+ # ./autogen.sh --bundled-libtool
+
+ to force the usage of the bundled libtool version.
+ If you later have unexplicable problems with the compilation tools
+ you might also try the bundled libtool.
+
+ ###
+ ### Step 1 : Matching the requirements
+ ###
+
+ - You NEED a fully working C++ compiler.
+
+ Most linux distributions have it pre-installed and if you have
+ already compiled other programs before then you're probably ok,
+ so actually skip this check and go ahead. If anything fails
+ in the following steps then this is the very first thing to verify.
+ A broken compiler installation usually manifests itself
+ in failed ./configure tests (dlopen capabilities).
+ Try
+
+ # gcc -v
+ # g++ -v
+
+ on the commandline. If it says something about "command not found"
+ then you miss some gcc related package. Install it from the distro cd.
+
+
+ - You NEED the Qt library.
+
+ You can download the latest version from ftp://ftp.trolltech.com.
+ The main Qt www site is http://www.trolltech.com.
+ Note for the GPL maniacs: Qt IS GPL.
+ The minimum required version is 3.1.2 (older versions *might* work)
+ Download and install it by following the rules
+ explained in the excellent documentation that comes with the library.
+
+
+ - You need a decent pthread implementation.
+
+ This is usually included in your distribution and is probably
+ already installed. The library is called libpthread.so.
+ You can look for it with the "find" command:
+
+ # find / -name libpthread.so
+
+ On my system the output is:
+
+ # /usr/lib/libpthread.so
+
+ If you don't have it (the configure script will tell you)
+ you can download it from your favorite GNU mirror.
+
+ On Solaris you can use the native libthread.so library instead
+ but you will have to pass the specific option to configure (see below).
+ FreeBSD has a native implementation of pthreads in libc_r and
+ the gcc compiler has a special -pthread flag to link to it.
+ If you're on FreeBSD, use the --with-freebsd-pthread configure
+ option and make sure that you don't have other pthread wrappers
+ installed (that might collide with the native header files).
+
+ The configure script will also fail if the library is
+ hidden somewhere on your system (eg. not in /lib , /usr/lib or
+ /usr/local/lib): you should probably move it.
+
+
+ - You need the dynamic linker interface library libdl.so.
+
+ This is usually installed on your system , so don't care until
+ configure complatins about it. Some system have the interface
+ builtin in libc. The configure script can detect it.
+
+
+ - (Optional) If you want to compile the KDE integration support
+ you obviousy need KDE. The kdelibs package should suffice.
+
+
+ - (Optional) If you want the translations to non-english languages to work
+ then you need the GNU gettext package. In particular KVIrc uses
+ the msgfmt program.
+
+ This is usually included in your distribution and is probably
+ already installed. You can check it by running
+
+ # msgfmt --version
+
+ KVIrc will not complain if the command above is missing: it will
+ just skip the creation of the translation files.
+ If the command above fails then you need to install the gettext package
+ if you want any language other than english.
+
+
+ - (Optional) If you want DCC VOICE to support the gsm codec,
+ you need a recent copy of libgsm. This is not strictly required
+ at compile time since KVIrc will look for the library at run-time,
+ and only if the DCC VOICE with the gsm codec is requested.
+ You can check for libgsm using the 'find' command.
+
+ # find / -name libgsm*
+
+ The output should be sometihg like
+
+ # /usr/lib/libgsm.so
+
+ This library is included in most distributions. Some distros ship
+ only the static version of the library "libgsm.a": if the previous
+ find returned only something similar to "/usr/lib/libgsm.a" , you might
+ create manually the shared archive by running:
+
+ # cd /usr/lib
+ # ld --whole-archive -shared -o libgsm.so.1 libgsm.a
+ # ln -s libgsm.so.1 libgsm.so
+ # ldconfig
+
+ If you don't have it installed at all, you might have a look in your
+ distribution CD, or download it from the web.
+
+
+ - (Optional) If you want the /snd plugin to play various audio formats
+ you either need a running artsd, a running esd or a reasonably recent
+ audiofile library. Without these KVIrc will be only able to play *.au
+ files.
+
+
+ - (Optional) If you want to generate the on-line documentation
+ you also need perl: any version will do (I guess).
+
+
+ - (Optional) If you want the secure socket layer support to be compiled
+ you need the OpenSSL library and headers. (libssl.so and openssl/ssl.h)
+
+
+ - (Optional) If you want perl scripting support to be compiled
+ you need a working perl installation. Your libperl.so MUST be compiled
+ with the MULTIPLICITY option. (You can check it with perl -V).
+
+ ###
+ ### Step 2 : Running the configure script (mandatory)
+ ###
+
+ First of all you must run the configure script that will guess some
+ info about your system and prepare the compilation.
+ You may try to "simply run" it and check if it works...the configure
+ script tries to be smart , but in some cases it will fail.
+
+ So before running the script make sure that the enviroinement
+ variable $QTDIR points to the right location. This will help
+ in finding the correct version of Qt.
+ You might eventually set it with the command:
+
+ # export QTDIR="your qt dir"
+
+ On my system qt is installed in /usr/local/kde/qt
+ so I actually execute
+
+ # export QTDIR="/usr/local/kde/qt"
+
+ If you want to compile the KDE support you might want to do the same
+ with KDEDIR
+
+ # export KDEDIR="your kde dir"
+
+ In my case KDE is installed in /usr/local/kde so I use
+
+ # export KDEDIR="/usr/local/kde"
+
+ The configure script has a lot of options that can be listed by using
+
+ # ./configure --help
+
+ Here's a list with explainations (the most common are at the top):
+
+ --enable-debug
+ This is for debugging and reporting problems.
+ It sets the compiler options in order to leave the debugging
+ informations into the kvirc executable and the libraries.
+ In this way you will be able to produce a gdb backtrace
+ in case of a crash.
+ YOU NEED THIS OPTION IF YOU WANT TO REPORT A PROGRAM CRASH.
+
+ --enable-pipes
+ Asks the compiler to use pipes instead of files for the
+ compilation stage. The pipes will help in reducing disk usage and
+ will probably shorten the compilation a bit. Use this option if
+ your platform supports it.
+
+ --with-qt-library-dir=<DIR>
+ Look for the qt library in <DIR>.
+ You might want to use this if the configure script has trouble
+ in finding the qt library.
+ You should have no problems if you use export QTDIR="<DIR>"
+ before launching the configure script, but it might help you
+ if you have a non standard Qt installation.
+
+ --with-qt-include-dir=<DIR>
+ Look for the qt headers in <DIR>.
+ You might want to use this if the configure script has trouble
+ in finding the qt headers. It may especially help if your headers
+ are in a place different than $QTDIR/include (and thus you have
+ a non standard installation)
+
+ --with-qt-moc=<PATH>
+ Use the qt meta-object compiler found in <PATH>
+ The path is usually $QTDIR/bin/moc , and the
+ configure script will find it if you have a standard
+ Qt installation and $QTDIR points to the right directory.
+ Thus should have no problems if you use export QTDIR="<DIR>"
+ before launching the configure script, but it might help you
+ if you have a non standard Qt installation.
+ This will also help if you have the moc compiler renamed
+ in some way: like "moc2" or sth...
+ <PATH> in this case is a FULL path: directory/program_name!
+
+ --disable-qt-check
+ This disables Qt checking at compilation time.
+ If this is the only way to compile and run
+ the kvirc executable , then there is something
+ wrong with the configure script.
+
+ --without-kde-support
+ The configure script will look for the KDE headers and libraries
+ and if found it will enable the KDE support. If you don't want
+ the KDE support even if KDE is detected, just use this switch.
+
+ --with-kde-library-dir=<DIR>
+ Look for the KDE libraries in <DIR>
+ If $KDEDIR points to the right place, you shouldn't need this.
+
+ --with-kde-include-dir=<DIR>
+ Look for the KDE headers in <DIR>
+ If $KDEDIR points to the right place, you shouldn't need this.
+
+ --with-kde-services-dir=<DIR>
+ Install the kde service protocol files in <DIR>
+ If $KDEDIR points to the right place, you shouldn't need this.
+ This is also non-critical for kvirc: if the configure script
+ can't find this directory, you will only looose the support for
+ irc:// urls in konqueror
+
+ --without-kde-check
+ Similar to --without-qt-check but for KDE.
+
+ --enable-optimisation=<NUMBER>
+ Enables the compiler optimisation flag -o<NUMBER>.
+ Possible values are 0 , 1, 2 and 3 (but if you compiler supports
+ more optimisation levels , you might use other numbers here).
+ Increases compilation time but may produce a slightly faster
+ executable.
+
+ --with-other-libs=<libraries>
+ Explicitly link to the specified libraries.
+ Example: --with-other-libs="-lmylib -lstrangesystemsupport"
+
+ --with-other-ldirs=<paths>
+ Explicitly add the specified library search paths
+ Example: --with-other-ldirs="-L/home/pippo/lib/ -L/my/library/"
+
+ --with-other-idirs
+ Explicitly add the specified include search path
+ Example: --with-other-idirs="-I/home/pippo/include/ -I/tmp/inc/"
+
+ --enable-objprelink
+ This is an experimental support for object prelinking that improves
+ significantly the executable startup time. In order to use it you
+ need to have the "objprelink" program in the PATH. The objprelink
+ program is included in the distribution in the admin directory.
+ In order to use it, you will need to:
+
+ # cd admin
+ # make objprelink
+ # cp objprelink /somewhere_on_your_path
+
+ All this AFTER running ./configure and BEFORE running make.
+
+ --with-no-pthread-check
+ Do not check if the pthread stuff works.
+ If configure fails in the pthread library check , you might want to
+ try this...(but then you will have really to "pray" that
+ the check has been broken by some "unusual" conditions and the
+ compilation will succeed).
+
+ --x-includes=DIR
+ Specifies explicitly the path to the X header files.
+ You might want to use this if the configure script
+ has trouble in finding it.
+
+ --x-libraries=DIR
+ Specifies explicitly the path to the X libraries.
+ You might want to use this if the configure script
+ has trouble in finding it.
+
+ --with-qt-name=<NAME>
+ Use <NAME> instead of "qt" as the Qt library name.
+ This is useful on systems where Qt has been installed with
+ a name different than the default "qt".
+ It happens often that to allow multiple copies of qt to work
+ the newest have the version name appended to it.
+ For example, on FreeBSD I have found "qt" being Qt1.* and
+ "qt2" being Qt 2.*. Since you need Qt 2.* for kvirc to work,
+ you will need to use --with-qt-name=qt2.
+ If you use this option, you will probably also need to remap
+ the moc compiler path/name with --with-qt-moc.
+
+ --disable-qt-mt
+ Disable checking for the multithreaded version of Qt.
+ By default , KVIrc will try to link to the multithreaded version
+ if found on the system.
+ NOTE: if you enable the KDE support , KVIrc MUST be linked to the
+ qt library that KDE is linked to.
+
+ --with-ix86-asm
+ KVIrc contains some ix86 assembly routines that *could*
+ performs some things faster (this is not always true, depends
+ on the compiler). You might want to try it if your kvirc seems to
+ be really slow...
+
+ --without-ipv6-support
+ The IPV6 support is compiled by default on the platforms that
+ support it: this option disables it.
+ Even if you have a plain IPV4-only connection, you might want to
+ keep the IPV6 support: you will be able to lookup IPV6 hostnames.
+
+ --without-system-memmove
+ This will disable the use of the system memmove() memcpy() and
+ memset() functions and enable the bundled implementations. Use
+ it if you have undefined references to these functions while
+ compiling.
+
+ --with-ignore-sigalarm
+ This is a hack mainly for Solaris.
+ Use this option if kvirc exits with no apparent reason and
+ the system prints a message related to an "Alarm" :)
+
+ This is a mail that suggests an explaination for the SIGALARM fault.
+ If you experience the problem please drop me a mail at pragma at kvirc dot net
+ and we'll try to look for a solution.
+
+ From: "Andre Stechert" (astechert at email dot com)
+ Date: 26/7/2005 09:36
+
+ Hi,
+         I noticed in your readme that you were having problems with sigalarm
+ in your solaris port and you weren't sure why.  I quickly scanned your
+ source code and noticed that you use usleep and threads.  That's the problem,
+ if you haven't already figured it out. On Solaris, usleep is implemented with
+ SIGALARM. So is threading. So if you the active thread changes while
+ a usleep is in progress, bang, the process is dead.
+
+ --without-crypt-support
+ Disables the cryptographic engines and the whole
+ cryptography/text-transformation support. Produces a slightly
+ smaller executable. Anyway, if you don't know what the
+ ctryptography/text-transformation
+ support is ,I suggest you to avoid using this option.
+
+ --enable-new-kvs
+ Developers only!
+ This enables the compilation of the new KVS parser, currently
+ under heavy development. This will produce a bigger and possibly
+ unstable executable: do not use if you don't know what you're doing.
+
+ --enable-new-kvs-only
+ Developers only!
+ This hardwires the new KVS parser to be used as the main scripting
+ engine in KVIrc. Be aware that the new KVS engine is NOT YET 100% COMPLETE
+ so some scripts will simply fail.
+
+ --without-transparency
+ This option disables pseudo-transparency support.
+ The pseudo transparency support makes the KVirc windows
+ look like semi-transparent (this is NOT real transparency: this is
+ just a nice-looking hack).
+ If KDE support is enabled, KVirc will have an option that
+ makes all windows use a faded KDE desktop background image
+ as background. Without KDE support you will be able to choose
+ a fake background image and use it as background. (You can still
+ choose your desktop wallpaper: this will (more-or-less) work in
+ all the window managers).
+ It is cool-looking but usually eats some memory when enabled.
+ It also eats some executable size.
+ So this option allows to disable the pseudo-transparency.
+
+ --with-solaris-lthread
+ If you're on Solaris and don't have the pthread library (A wrapper
+ I guess) you might try this option: it attempts to use the native
+ Solaris threading support.
+
+ --with-freebsd-pthread
+ If you're on FreeBSD, you NEED this option. This enables the usage
+ of the native FreeBSD pthread implementation found in libc_r.
+ This requires you to use the native gcc compiler: it has a special
+ -pthread flag that enables the linkage to libc_r instead
+ of plain libc.
+
+ --with-libresolv
+ Link to libresolv. I guess that this is required for Solaris
+
+ --with-libsocket
+ Link to libsocket. I guess that this is required for Solaris
+
+ --with-libnsl
+ Link to libnsl. I guess that this is required for Solaris
+
+ --with-libcompat
+ Link to libcompat. This might be required for some systems...
+ but I have no idea which ones. If you find it useful: mail me.
+
+ --enable-fno-rtti
+ Disables compiler runtime type information generation.
+ This is probably needed only with qt-embedded.
+ DON'T use it if you don't exactly know what it does.
+ Actually this may even make KVIrc crash in some situations.
+ For example the KDE sources use __dynamic_cast...
+
+ --disable-x-support
+ Disables completely the X Windows support.
+ This is useful in environments where X is not needed to compile KVIrc
+ such as Qt-Mac on MacOSX, QtEmbedded or Windows.
+ This switch implies also --without-x-bell
+
+ --without-x-bell
+ Disables the usage of the XBell function (needed if you want to
+ compile KVIrc with qt-embedded (no X at all))
+ This is implied by --disable-x-support
+
+ --with-qt-embedded
+ You need this to compile KVIrc with qt-embedded
+
+ --without-ipc
+ Disables support for inter-process communication.
+ You will be not able to send remote commands to running
+ kvirc sessions: this basically means that every time you run
+ the kvirc executable , a new session will be started.
+ If you don't use this switch, a new session will be started
+ only if no session is running on the same display or
+ "new session" has been forced by a commandline switch.
+ If a session is already running, the commandline will be
+ passed to that session via IPC (X-event-based communication).
+ This option saves some KB of the KVIrc executable,
+ so if you're really short in memory , you might use it,
+ otherwise, IPC is a nice feature.
+
+ --without-dyn-labels
+ You should not need this option.
+ It disables compilation of code that relies on a particular
+ compiler feature (jumping to a dynamic label with a goto).
+ Not all compilers support this , but configure shoud detect
+ it automatically. Anyway , if you get compilation errors on
+ kvi_ircview.cpp, you may try this option...
+ This may also help if the configure script seems to hang
+ when checking for the "compiler dynamic label support".
+
+ --without-splash-screen
+ Do not compile the splash screen code.
+ This will remove you that nice "banner" image that pops up
+ while kvirc is starting up. It will maybe help in making an
+ executable smaller by a couple of KB and save a couple
+ of extra milliseconds during the startup. Use it if you're
+ tring to build a performance critical executable and you're
+ short both in memory and CPU time :)
+
+ --without-gsm
+ Explicitly disable the usage of the GSM library. This will
+ disable the DCC VOICE gsm codec but might help when the
+ compilation stops complaining of something related to GSM :)
+
+ --without-dcc-sound
+ Explicitly disable the DCC VOICE sound support. This might help
+ if you have problems in compilation of src/modules/dcc/voice.cpp.
+ It will disable the sound support
+ (and thus make DCC VOICE not usable).
+
+ --disable-ssl
+ Disables the secure socket layer support. The SSL support is
+ automatically enabled if OpenSSL is detected at ./configure time.
+ This option forces it to be left out.
+
+ --with-memory-profile
+ Debug stuff...enables memory allocation profiling (don't use it :)
+
+ --with-memory-checks
+ Enables malloc() memory checks. This will print a nice message
+ if your system goes out of memory...
+ It can't save you from buying new RAM,
+ but at least you will know that your system went out of memory
+ and it is not a proper kvirc fault. Actually you probably have
+ no reason in using it.
+
+ --with-big-channels
+ Minor hash table optimisations: higher memory usage but
+ faster user lookups. Use it if you often stay in channels with
+ a lot of users. (this is not critical anyway)
+
+ --enable-profiling
+ Asks the compiler/linker to include profiling informations in the
+ executable. This is useful only if you want to profile KVIrc by
+ using the gprof program. Note that this will generate a bigger
+ and slower executable.
+
+ --disable-perl
+ Forcibly disable perl support.
+
+ So finally you have to run
+
+ # ./configure <your options>
+
+ For example , my common options are:
+
+ # ./configure --enable-pipes --enable-debug
+
+ On FreeBSD I have found useful this command line:
+
+ # ./configure --with-qt-name=qt2 --with-qt-moc=/<PATH_HERE>/moc2 \
+ --with-freebsd-pthread
+
+ Once the configure script ran succesfully you can go to the next step.
+
+ ###
+ ### Step 3 : Compiling (mandatory)
+ ###
+
+ This step is easy:
+ Cross your fingers and run
+
+ # make kvirc
+
+ If your make is not a GNU make (this happens on FreeBSD for example)
+ you should use "gmake" instead.
+ The compilation process will take from 6-7 minutes to several hours
+ depending on the machine capabilities and load.
+ If you have a slow cpu but have a couple of computers in a lan you
+ might consider using distcc to distribute the compilation.
+
+ Once the compilation has been succesfull, run
+
+ # make install
+
+ Same as above: use "gmake install" if your make is not GNU make.
+
+ This will install the executable in /usr/local/bin
+ (if you don't have specified a different --prefix option in
+ the configure script) , the libraries in /usr/local/lib
+ and the shared data in /usr/local/share/kvirc.
+ If you had a previous kvirc installation , the default prefix
+ will be referring to the directory where the old kvirc
+ executable was found.
+
+ Make sure that /usr/local/lib is in your /etc/ld.so.conf ,
+ if it isn't there , put it there and run
+
+ # ldconfig
+
+ If you have decided to use the KDE support the installation
+ might have placed all these files in your $KDEDIR tree
+ instead of /usr/local. In this case you should be OK since
+ KDE requires its library dir to be in /etc/ld.so.conf
+
+ ###
+ ### Step 4: Having fun
+ ###
+
+ # kvirc &
+
+ That's all folks.
+
+
+###############################################################################
+# 5. Compiling KVIrc on qt-embedded
+###############################################################################
+
+ Do you want KVIrc 3 on your hand computer ?
+ On your Nokia 9999910 ?
+ On your LINUX CONSOLE?
+
+ Well, for the third it's really easy, just follow carefully those steps:
+
+ 1. Install qt-embedded libraries (including the development files).
+ This can be as easy as: apt-get install libqt-emb-dev on Debian.
+
+ 2. cd to the KVIrc3 source directory
+
+ 3. run configure with the following parameters:
+
+ # ./configure --with-qt-name=qte --with-fno-rtti --without-x-calls
+ --without-ipc --without-splash-screen --without-transparency
+ --with-qt-embedded --without-x-bell
+
+ then run make and make install as usual
+
+ 4. Try to have a life for the next minutes while kvirc3 compiles
+
+ 5. You need your kernel with framebuffer support (it's under 'Console')
+ so if your kernel don't have it reconfigure and recompile your kernel.
+
+ 6. switch to a console
+
+ 7. export QTDIR=[path] On Debian is '/usr'
+
+ 8. Read http://doc.trolltech.com/3.0/envvars.html and configure your
+ environment vars until kvirc3-emb loads (it will give you an error
+ indicating what went wrong else). Pay especial attention to
+ QWS_MOUSE_PROTO, QWS_CARD_SLOT and QWS_DISPLAY
+
+ 9. Enjoy :)
+
+###############################################################################
+# 6. Compiling KVIrc on MacOSX
+###############################################################################
+
+ There is a detailed compilation and installation HOWTO for MacOSX systems
+ located in the doc dorectory.
+
+###############################################################################
+# 7. A note about Windows 95/98/ME
+###############################################################################
+
+ On Windows versions prior to 2000 the KVIrc binary may refuse to start
+ because of an incompatible msvcrt.dll included in the distribution.
+
+ If this happens to you then you may try the following tricks:
+
+ - Find msvcrt.dll in your C:\Windows directory. It may also be
+ in C:\Windows\System or C:\Windows\System32
+ Copy it to the KVIrc installation folder overwriting the existing
+ msvcrt.dll shipped with kvirc.
+
+ - Find msvcrt.dll somewhere on the net. An url hint might be:
+ http://www.dll-files.com/dllindex/dll-files.shtml?msvcrt
+ Download the file and copy it to the KVIrc installation folder
+ overwriting the existing msvcrt.dll shipped with kvirc.
+
+ If none of the two steps work for you please write a mail to
+ pragma at kvirc dot net reporting your exact Windows version and build
+ and including the exact messages that the system reports when trying
+ to run the KVIrc executable.
+
+ Thanx to Dusan Hokuv for reporting this and suggesting the fixes.
+
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 00000000..c451931b
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,95 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek
+###############################################################################
+
+EXTRA_DIST = autogen.sh README FAQ
+
+SUBDIRS = admin data doc po scripts src
+
+AUTOMAKE_OPTIONS = foreign
+
+###############################################################################
+# Delete moc files all around
+###############################################################################
+
+delmoc:
+ rm -f $(topdir)/src/*/*/*.moc
+ rm -f $(topdir)/src/*/*/moc_*.cpp
+
+###############################################################################
+# Main make command
+###############################################################################
+
+kvirc-intro:
+ @echo "################################################################################"
+ @echo "### Ok..."
+ @echo "### The compilation process will take a while..."
+ @echo "### Have a cold beer in the meantime..."
+ @echo "################################################################################"
+
+kvirc-outro:
+ @echo "################################################################################"
+ @echo "### Finished..."
+ @echo "### Now type 'make install'"
+ @echo "################################################################################"
+
+kvirc: kvirc-intro all kvirc-outro
+
+install: install-recursive docs banner
+
+install-devel: install-recursive banner
+
+messages:
+ cd $(topdir)/po/kvirc && make messages
+ cd $(topdir)/po/modules/about && make messages
+ cd $(topdir)/po/modules/dcc && make messages
+ cd $(topdir)/po/modules/editor && make messages
+ cd $(topdir)/po/modules/logview && make messages
+ cd $(topdir)/po/modules/mediaplayer && make messages
+ cd $(topdir)/po/modules/notifier && make messages
+ cd $(topdir)/po/modules/options && make messages
+ cd $(topdir)/po/modules/perl && make messages
+ cd $(topdir)/po/modules/perlcore && make messages
+ cd $(topdir)/po/modules/sharedfileswindow && make messages
+ cd $(topdir)/po/modules/theme && make messages
+
+###############################################################################
+# Generate documentation
+###############################################################################
+
+docs:
+ $(mkinstalldirs) $(DESTDIR)$(helpdir)
+ perl admin/gendoc.pl -v $(VERSION) $(DESTDIR)$(helpdir) \
+ data/doctemplates/*.template \
+ `find ./ -name "*.cpp" -print` \
+ `find ./ -name "*.h" -print`
+
+###############################################################################
+# Rule for developer documentation
+###############################################################################
+
+devdocs:
+ cd admin && doxygen
+
+###############################################################################
+# Finished :)
+###############################################################################
+
+banner:
+ @echo "################################################################################"
+ @echo "### INSTALLATION COMPLETE"
+ @echo "################################################################################"
+ @echo "###"
+ @echo "### KVIrc is now installed and ready to run."
+ @echo "###"
+ @echo "### Please send bug reports and suggestions"
+ @echo "### to pragma at kvirc dot net"
+ @echo "### You can use the mail report form on"
+ @echo "###"
+ @echo "### http://www.kvirc.net"
+ @echo "###"
+ @echo "### We hope that you will enjoy KVIrc."
+ @echo "###"
+ @echo "### Szymon Stefanek and the KVIrc Development Team"
+ @echo "###"
+ @echo "################################################################################"
diff --git a/README b/README
new file mode 100644
index 00000000..24f86071
--- /dev/null
+++ b/README
@@ -0,0 +1,387 @@
+23.03.2008: Release 3.4.0 "Virgo"
+###############################################################################
+
+Here we go with another release :)
+
+This one took a very long time but, well, finally it's here.
+
+Notable new features of this release include:
+
+ - improved themeing support
+ - better desktop integration
+ - nicer support for many different IRC servers
+ - a totally revised option layout
+ - basic support for script "addons"
+ - improved help subsystem
+ - new nice statusbar applets
+ - improved scripting engine
+ - improved windows and macosx support
+ - ....
+
+There is also a lot of small new details that you will
+find out by yourself while playing around and finally
+we obviously also have a huge number of bugfixes.
+
+This will be the last stable release of the 3.* series and also the last
+one using Qt3. From now on we'll be working on major version 4 and
+switching completly to Qt4. This release actually contains a preliminary
+Qt4 support and if you feel brave you might test it by passing
+the "hidden" --enable-qt swtich to configure.
+
+Have fun :)
+Szymon Stefanek and The KVIrc Development Team
+
+
+
+
+
+
+###############################################################################
+General notes for the 3.4.0 release of the KVIrc IRC client
+###############################################################################
+
+- Installation
+
+The detailed installation instructions for the unix source distribution
+are in the INSTALL file.
+
+The Windows version needs no installation: you just need to run the
+installer executable and follow the proposed steps.
+
+Other documentation can be found in the doc subdirectory.
+
+- Reporting problems
+
+You are encouraged to "mess" with all the KVIrc options and features,
+and to report bugs and misbehaviours to the author.
+Anyway , before reporting a bug , ask yourself if it can be caused
+by some other part of your system: KVIrc uses many external libraries
+and (as all programs) relies on a correct system behaviour.
+Make sure that the libraries you use are the correct ones (!!!).
+
+When you encounter a problem please read the FAQ that is found
+in the distribution and also take a look at http://www.kvirc.net
+for a more recent version. If nothing helps to solve your problem
+then you might consider issuing a bug report.
+
+The best way to report a bug is to use the bugtrack system at
+http://svn.kvirc.de/kvirc/. Another way is to subscribe
+to the kvirc mailing list (see http://www.kvirc.net for instructions)
+and report the problem there. In both cases your bug report
+should be written in english and should contain most informations
+possible about the problem. If you have encountered a crash
+on an unix platform you should include a gdb backtrace (stack dump).
+The more gdb info you send, the biggest is the possibility for us
+to find the problem and maybe a solution. There is a FAQ entry
+that explains how to produce a suitable gdb backtrace.
+If you can't obtain a gdb backtrace (maybe because you're on
+a platform where gdb is not available) or if the problem
+is not related to a program crash then you should include
+a detailed procedure that leads to the manifestation of your problem.
+You should always include a short description of the platform you
+are running on: the operating system, the cpu (if not an x86),
+the version of the Qt library and the KDE environment (if relevant).
+You should also mention the relevant version of KVIrc and where
+you got it from (cvs, kvirc site, other sites).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+###############################################################################
+# Historic entries : just for the curious
+###############################################################################
+
+
+22.02.2005: Release 3.2.0 "Realia"
+###############################################################################
+
+Here we go again: 3.2.0 is out!
+
+The long road to stability has reached an important milestone. The previous
+releases of the 3.* series were the first ones after a huge codebase rewrite.
+3.2.0 is a result of several months of testing, debugging and improving.
+You will surely find it more stable, fast and user friendly.
+
+The old scripting toolbars have been replaced by the new "action" based
+approach. Besides the scripting flexibility of the actions we have also
+gained "drag & drop" toolbar editing. Just select "Settings -> Toolbars
+-> Customize" from the menu and drag your favorite actions (buttons!) to the
+toolbars you wish. You can obviously create new toolbars on the fly and destroy
+old ones. There is a set of builtin actions and new ones can be added
+by the means of the action editor (another new feature) accessible from
+the Scripting menu. Play with it :)
+
+The UNICODE support has been improved yet more. Now you can set global,
+per-network, per-server and per-window encodings! There is also a new
+set of "smart" encoding engines that first try to decode the text as UTF8
+and in case of failure fallback to your standard encoding.
+
+The translators did a really good (and hard) job: we actually have KVIrc
+translated in 14 languages. I'm really happy about that.
+
+There is a new nice Instant-Messager-like notifier window that pops up when
+a query message arrives and KVIrc is not the active application. Yes,
+you can disable it, but I'm sure you will not. The notifier is also fully
+scriptable and we're working on a simple skinning engine for it.
+
+We also have perl support: now you can use perl from KVS and
+KVS from perl. The engine is still quite essential but with some hacking
+you can obtain really good results from it.
+
+The small IRC-Context-Display has been removed from the toolbar and has been
+replaced by a real status bar that is capable of displaying the same
+informations in a much cleaner way. The IRC-Context-Display is still
+available as an action so you can just drag it back in its place
+and hide the status bar to return to the previous release configuration.
+The statusbar also supports applets that can be added/dragged/removed by the
+means of the mouse: just try the right click.
+
+The scripting engine has been improved and there are several new object
+classes. An interesting new feature here is the $tr() function that allows
+your scripts to be translated with the standard gettext mechanism. The
+widely requested DCOP communication function has been implemented too.
+
+Out-of-the-box mircryption support has been added. The KVIrc's mircryption
+engine supports the standard ECB mode and the new CBC mode
+
+The DCC transfers have been improved and seveal related bugs have been
+fixed. It is also possible to limit the bandwidth for each transfer.
+
+There is a lot of minor new features that will make your IRC sessions funnier
+and more exciting: some of them are described in the ChangeLog file and
+other can be found by exploring the user interface.
+
+The small one-man-project has grown to the level of a small community.
+People from around the world have joined our development efforts and are
+constantly donating their time, eyes and bandwidth in order to make KVIrc
+a really good IRC client. Besides of simply giving you a free (as in freedom!)
+and nice program for chatting, they are giving you the great opportunity to see
+what's behind the scenes: you have the source code for the whole application.
+In practical terms this means more or less 300.000 lines of tested, debugged and
+commented C++ code, several perl scripts, dozens of makefiles and all the means
+that you need to produce a working KVIrc executable on all the supported platforms.
+There is a lot of knowledge (some people call it "technology" because it sells better)
+inside, ready to be acquired by an attentive reader. Don't forget that the freedom of
+building your own executable from the sources gives you the opportunity
+of verifying the source itself: for example you might be interested in verifying
+that KVIrc will not run any malware code on your machine nor will collect
+your private data and sell it to someone while you're happily chatting with a friend.
+We call it freedom, please respect it :)
+
+Our community is contantly growing and this release was possible thanks to the
+contribution of really many people. There are new mighty developers, new addicted
+fans and we have seen a lot of new users. The list of the major contributors
+can be found on the KVIrc site, in the about dialog and all around the sources.
+If you want to meet them please join the #kvirc channel on your favorite
+IRC network or subscribe to our mailing list.
+
+Ah, I was going to forget it: you might have noticed that there is
+a version bump from 3.0.1 to 3.2.0. It's a typo that we arbitrairly
+decided not to fix :)
+
+Have fun :)
+Szymon Stefanek and The KVIrc Development Team
+
+
+
+
+31.05.2004: Release 3.0.1 "System Virtue"
+###############################################################################
+
+Here we go again: 3.0.1 is out!
+
+3.0.1 is mainly a bugfix release. 3.0.0 was the first public release
+after long time and even if we have tested it for a very long time
+some bugs didn't miss to jump out. 3.0.1 contains the fixes for these
+problems and adds some minor functionality. The detailed list of
+changes is in the ChangeLog file.
+
+The bugs for this release should be reported by using the bugtrack system available
+at http://bugtrack.kvirc.omnikron.net
+
+Have fun :)
+Szymon Stefanek and The KVIrc Development Team
+
+
+17.04.2004: Release 3.0.0 "Awakening"
+###############################################################################
+
+After a couple of years from the last stable release, here we go again :)
+
+Since the 2.* releases the KVIrc source code has been almost completely
+rewritten. The major differences are summarized in the following list:
+
+ - Multiserver: you can have multiple IRC connections in a single window
+ - IPV6 support, also for DCC transfers
+ - SSL support (also over IPV6)
+ - UNICODE support for the user interface
+ - Better scripting language
+ - A basic Theme Engine
+
+The first major goal of the rewrite was "user-friendliness": you should be
+able to start an IRC session by selecting a server and clicking "Connect Now"
+just after the installation.
+The second major goal was "extreme-flexibility": you can customize the way KVIrc
+looks and the scripting language allows you to implement complex responses
+to IRC generated events.
+
+There is a lot of minor new features that will make your IRC sessions funnier
+and more exciting: some of them are described in the ChangeLog file and
+other can be found by exploring the user interface.
+
+This release was possible thanks to the contribution of many people.
+The list includes but is not limited to: Triskelios, Jan Wagner (spion),
+Juanjo Alvarez (Kane), Andrea Parrella (Yap), Luk De Ketelaere (Balboy),
+Sara D'Alia (Sbrokka), Ted Podgurski (alch3m1st), Ciro Guariglia (d3vah),
+Christoph Thielecke (Crissi), Eva Schaller (Penny), Niklas Luer�en (Tequila)
+Olle Hallnas (Crocodile), Francesco Meloni (Princo), Alessandro Rossini (Aronnax),
+Alex Grijalba Martinez (SuD), SuperbepS, Thilo Schulz (Thilo), Dworf,
+Jorma Tuomainen (Wiza), Michele Pinassi (O-Zone), Paolo Sammicheli (XDatap1),
+Ahinu, xevilstar, The Siena Linux Users Group, cyco & samweis,
+The Firenze Linux Users Group, all the subscribers of the KVIrc public mailing
+list and finally all the people from #kvirc on IRCNet and Freenode.
+
+Have fun :)
+Szymon Stefanek and The KVIrc Development Team
+
+###############################################################################
+General notes for the 3.0.0 release of the KVIrc IRC client
+###############################################################################
+
+- Installation
+
+The detailed installation instructions for the unix source distribution
+are in the INSTALL file.
+
+The Windows version needs no installation: just unzip the archive in
+a suitable directory (such as C:\Program Files\) and run kvirc.exe from there.
+
+Other documentation can be found in the doc subdirectory.
+
+- Reporting problems
+
+In this release , the changes are so huge that it was not possible
+to test them in all the possible conditions. A 'normal' irc session
+should give you no problems.
+You are encouraged to "mess" with all the KVIrc options and features,
+and to report bugs and misbehaviours to the author.
+Anyway , before reporting a bug , ask yourself if it can be caused
+by some other part of your system: KVIrc uses many external libraries
+and (as all programs) relies on a correct system behaviour.
+Make sure that the libraries you use are the correct ones (!!!).
+
+- Contents of a good bug report:
+
+- A gdb backtrace in case of a segfault.
+ The more gdb info you send , the biggest is the possibility
+ for me to find the problem and maybe a solution.
+- A detailed description (read : procedure) to reproduce the bug
+ Obviously if possible...
+- All informations on your system that you think that may be
+ related to KVIrc and to the problem itself.
+
+To enable the gdb debugging you must compile kvirc with
+the --enable-debug configure option.
+
+
+
+03.01.2003: Release 3.0.0 beta2
+###############################################################################
+
+
+Here we go again!
+Yes , this is still called "beta" , but it should be stable on most machines.
+We're simply still missing some features planned for the final 3.0.0.
+
+Beta2 is being released as a source package.
+Binary packages (for windows and other platforms) might be available soon
+so check out the download section once in a while.
+
+90% of the 2.* branch features have been already re-implemented and there are
+many new things to play with.
+
+There is a preliminary UNICODE port: KVIrc UI starts to "speak" foreign (non Latin1) based languages.
+IRC character set mapping has been implemented (with 8 commonly used codepages for now).
+You should be able to use the Euro sign (ISO-8859-15), write Cyrillic (KOI-8-R , CP-1251 , ISO-8859-5),
+Greek (ISO-8859-7) and even use ideograms with the UTF-8 encoding.
+Character mapping selection is window based thus you should be able to write Cyrillic on #russian,
+Greek on #athens and write plain English on #kvirc in the same IRC session.
+
+Some modules have been removed from the main distribution. This is because the source
+tree has been growing too much: we are removing the non-strictly-necessary features
+and we will release them as separate packages.
+
+On the CVS you can already find the "nap" module that allows chatting (no file sharing yet)
+on OpenNap networks.
+
+The scriptcenter dialog has been splitted in smaller "pieces" and a GUI toolbar editor has been added.
+
+Finally there are tons of bugfixes and improvements: just play with it :)
+
+The bugs for this release should be reported by using the bugtrack system available
+at http://bugtrack.kvirc.omnikron.net.
+
+Have fun :)
+Szymon Stefanek and The KVIrc Development Team
+
+###############################################################################
+
+
+
+25.06.2002
+###############################################################################
+
+3.0.0 beta1 (Codename: "Eve's Avatar")
+
+This release is "floating around" since a couple of months...
+Well... finally... here we go :)
+This is not stable yet, but many people use it and we get a really small number of
+critical reports: this means that you probably can use it for your daily chatting.
+
+Beta1 is being released as a source package and a binary distro for the windows platform.
+Binary packages for other platforms might be available soon so check out the download section once in a while.
+
+If you had previous KVIrc installations and you experience problems (missing menus for example)
+try to remove (or better just rename) the old local configuration directory (locaed
+in your home dir probably) and to restart KVIrc.
+
+80% of the 2.* branch features have been already re-implemented and there is a whole
+bunch of new things to play with. One of the greates "ChangeLog" entries is the preliminary
+SSL support that works for IRC and DCC CHAT (both over IPv4 and IPv6).
+CTCP PAGE support has been added and there were some major changes to the variable
+management in the scripting language (added "real" array support and changed the syntax for the dictionaries).
+Those of you that like colors can now enable the icon-like display of emoticons
+and play with icons in the text sent through the server (a new escape code).
+The documentation has been reworked a little bit more, there are some new modules and
+a lot of new options to try.
+
+The windows version is not completely in sync with the linux one thus you might find
+that it lacks some features (mainly advanced scripting language, sound support etc...).
+We hope to have a completely synchronized versions on both platforms for the time
+of 3.0.0 final.
+
+The bugs for this release should be reported by using our new shiny bugtrack system available
+at http://bugtrack.kvirc.omnikron.net.
+
+Well..
+That's all folks!
+
+Have fun :)
+Szymon Stefanek and The KVIrc Development Team
+
+###############################################################################
+
diff --git a/TODO b/TODO
new file mode 100644
index 00000000..06c966be
--- /dev/null
+++ b/TODO
@@ -0,0 +1,50 @@
+Update TODO file, if something is implemented, it should be removed in the TODO file.
+Mantain TODO file as clear as possible
+
+- Pragma should read this file :D
+- Events, events, events. There are lots of them pending (see TODO.Events).
+- Multiple identities (and identity associations for servers)
+- Port the speech module!
+- /timer as a module
+- It would be cool if KVIrc could to delete old log files automatically
+ (configurable, of course), to avoid disk ocupation. For example, delete (or
+ move to trash) 15-days old log files automatically (configurable by user).
+- html colored logs (with icons ? configurable with an option)
+- Check away status from the /WHO message ? (this would involve requesting WHO often)
+- Handle more uncommon channel modes in the channel mode box ?
+ SHould get the available modes from RPL_ISUPPORT and show them in the box
+- On-line charset guessing:
+ KviWindow should have the possibility of setting a KVI_CHARSET_AUTO
+ The KviWindow::decodeText() should contain an algorithm that
+ would use the best "guess" charset based on the window output
+ history , the actually detected charset and the text to decode
+
+ /charset ISO-8859-15
+- When user clicks search in the help window there should be some kind of
+ notification when the search starts... The way it is now you can't tell if the
+ search button even worked, until the search process is finished
+- Channel mode-field
+ The channel mode field should be dynamical, it should be able to change width according to what it needs,
+ today it's way too long.
+- Userlist
+ The userlist should be dynamical after how many characters the server lets you use in a nickname, today it's
+ way too wide, this makes it look ugly.
+- Text-hints
+ Text hints doesn't dissapear after changing desktop under KDE, and you have to change back to the
+ desktop where KVIrc is to remove the hint.
+- CService support
+ We already have nickserv support, why not CService/X support? This should be much much easier to
+ implement as it's only on one net (Undernet), and with a static host and command that never changes, we
+ only need to specify password.
+- Option to save & restore sessions (session = opened irc connections, channels & queries)
+- Group messages:
+�������� * Add predefined groups
+��������
+�������� As kvirc3 now supports the ability to send msg's to more than one person at
+�������� a time, I would have liked to see
+�������� a way of making predefined groups. �For example if I often send the same msg
+�������� to both user1, user3, user9 and
+�������� user31, then I would like to add these to a group called "Friends", and then
+�������� just do a "/gquery Friends hi :) what's up?"
+
+- Add commands for playing PCM WAV files (using the DCC voice code).
diff --git a/acinclude.m4 b/acinclude.m4
new file mode 100644
index 00000000..126611a7
--- /dev/null
+++ b/acinclude.m4
@@ -0,0 +1,8761 @@
+dnl # // ##################################################################################################################
+dnl # // ## Initialization
+dnl # // ##################################################################################################################
+
+AC_DEFUN([AC_SS_INIT_VARIABLES],
+[
+ SS_BUILD_FLAGS=""
+ SS_BUILD_NUMBER=""
+
+ dnl # // X Stuff
+
+ SS_X_INCDIR=""
+ SS_X_LIBDIR=""
+ SS_X_LDFLAGS=""
+ SS_X_CPPFLAGS=""
+
+ dnl # // Qt Stuff
+
+ SS_QT3_GENERAL_DIR=""
+ SS_QT3_INCDIR=""
+ SS_QT3_LIBDIR=""
+ SS_QT3_MOC=""
+
+ dnl # // KDE Stuff
+
+ SS_KDE_REQUESTED="no"
+ SS_KDE_GENERAL_DIR=""
+ SS_KDE_INCDIR=""
+ SS_KDE_LIBDIR=""
+ SS_KDE_SERVICESDIR=""
+ SS_KDE_ICONS32DIR=""
+
+ dnl # // Perl stuff
+
+ SS_PERL_ENABLE="no"
+ SS_PERL_CCFLAGS=""
+ SS_PERL_LDFLAGS=""
+ SS_PERL_BINARY="true"
+
+
+ dnl # // CXXFLAGS, will be set by AC_SS_CXXFLAGS
+
+ dnl # CXXFLAGS=""
+
+ dnl Build flags:
+ dnl g - Debug version
+ dnl h - Memory checks
+ dnl m - Memory profiling
+ dnl s - System memmove
+ dnl S - splash screen
+ dnl o = openssl support
+ dnl b - Big channels
+ dnl x - ix86 asm
+ dnl T - tips
+ dnl c - crypt
+ dnl I - IPC
+ dnl G - GSM codec
+ dnl 8 - local 8 bit
+ dnl A - dcc sound audio support
+ dnl a - ignore sigalarm
+ dnl i - ipv6
+ dnl B - big endian
+ dnl k - KDE
+ dnl p - pseudo transparency
+ dnl e - Esound daemon support
+ dnl r - Arts daemon support
+ dnl f - Audiofile support
+ dnl P - profiling support
+ dnl p - perl scripting support
+])
+
+dnl # // ##################################################################################################################
+dnl # // ## OUTPUT MACROS
+dnl # // ##################################################################################################################
+AC_DEFUN([AC_CROSS_COLOR],
+[
+
+ TPUT=0
+ PRINTF=0
+ COLOR=0
+ IFS_OLD=$IFS
+ IFS=":"
+
+ for i in $PATH; do
+ if test -x "$i/tput"; then
+ TPUT=1
+ fi
+ done
+
+ type printf >/dev/null 2>&1 && PRINTF=1
+
+ for i in $PATH; do
+ if test -x "$i/printf"; then
+ PRINTF=1
+ fi
+ done
+
+ if test "$TPUT" = "1" -o "$PRINTF" = "1"; then
+ COLOR=1
+ fi
+
+ if test "$COLOR" = 1; then
+ if test "$TPUT" = "1"; then
+ if test "$1" = "1"; then
+ tput bold
+ else
+ tput sgr0
+ fi
+ if test "$2" != ""; then
+ tput setaf $2
+ fi
+ elif test "$PRINTF" = "1"; then
+ if test "$2" != ""; then
+ printf "\033\1330$1;3$2m"
+ fi
+ fi
+ fi
+
+ IFS=$IFS_OLD
+])
+
+AC_DEFUN([AC_SS_HEADER],
+[
+ AC_CROSS_COLOR([1],[2])
+ echo "################################################################################"
+ echo "### $1"
+ echo "################################################################################"
+ AC_CROSS_COLOR([0],[9])
+])
+
+AC_DEFUN([AC_SS_SECTION],
+[
+ AC_CROSS_COLOR([1],[3])
+ echo "### $1"
+ AC_CROSS_COLOR([0],[9])
+])
+
+AC_DEFUN([AC_SS_SET_REDINK],
+[
+ AC_CROSS_COLOR([1],[1])
+])
+
+AC_DEFUN([AC_SS_SET_GREENINK],
+[
+ AC_CROSS_COLOR([1],[2])
+])
+
+AC_DEFUN([AC_SS_SET_NORMALINK],
+[
+ AC_CROSS_COLOR([0],[9])
+])
+
+dnl # // ##################################################################################################################
+dnl # // ## FILE LOOKUP MACROS
+dnl # // ##################################################################################################################
+
+AC_DEFUN([AC_SS_FIND_FILE_PATH],
+[
+ $3="FAILED"
+ for a_dir in $2; do
+ for a_file in $1; do
+ if test -r "$a_dir/$a_file"; then
+ $3=$(echo "$a_dir" | sed -e 's/\/\.\//\//g' | sed -e 's/\/\//\//g' | sed -e 's/\/\.\//\//g' | sed -e 's/\/\//\//g')
+ break 2
+ fi
+ done
+ done
+])
+
+AC_DEFUN([AC_SS_FIND_FILE_PATH_EXT],
+[
+ $4="FAILED"
+
+ for a_dir in $2; do
+ for a_semidir in $3; do
+ for a_file in $1; do
+ if test -r "$a_dir/$a_semidir/$a_file"; then
+ $4=$(echo "$a_dir/$a_semidir" | sed -e 's/\/\.\//\//g' | sed -e 's/\/\//\//g' | sed -e 's/\/\.\//\//g' | sed -e 's/\/\//\//g')
+ break 3
+ fi
+ done
+ done
+ done
+])
+
+dnl # // ##################################################################################################################
+dnl # // ## BASIC COMPILER FLAGS
+dnl # // ##################################################################################################################
+
+
+AC_DEFUN([AC_SS_CXXFLAGS_DEBUG_SYMBOLS],
+[
+ dnl # // Checks if the --with-debug-symbols option has been passed to configure
+ dnl # // adds -g to SS_CXXFLAGS
+ dnl # // adds g to SS_BUILD_FLAGS
+
+ AC_MSG_CHECKING([if you want the debug symbols])
+
+ SS_LOCAL_ADD_DEBUG_SYMBOLS=""
+
+ AC_ARG_ENABLE(debug,
+ AC_HELP_STRING([--enable-debug],[Compile an executable suitable for debugging]),
+ [SS_LOCAL_ADD_DEBUG_SYMBOLS="true"])
+
+ if test -n "$SS_LOCAL_ADD_DEBUG_SYMBOLS"; then
+ AC_MSG_RESULT([yes])
+ if test -n "$SS_CXXFLAGS"; then
+ SS_CXXFLAGS="$SS_CXXFLAGS -g"
+ else
+ SS_CXXFLAGS="-g"
+ fi
+ SS_BUILD_FLAGS="g$SS_BUILD_FLAGS"
+ else
+ AC_MSG_RESULT([no])
+ fi
+])
+
+AC_DEFUN([AC_SS_CXXFLAGS_PIPES],
+[
+ dnl # // Checks if the --with-pipes option has been passed to configure
+ dnl # // adds -pipe to CXXFLAGS
+
+ AC_MSG_CHECKING([if you want to use pipes for compilation])
+
+ SS_LOCAL_USE_PIPES=""
+ AC_ARG_ENABLE(pipes,
+ AC_HELP_STRING([--enable-pipes],[Use pipes instead of files for the compilation]),
+ [SS_LOCAL_USE_PIPES="true"])
+
+ if test -n "$SS_LOCAL_USE_PIPES"; then
+ AC_MSG_RESULT([yes])
+ if test -n "$SS_CXXFLAGS"; then
+ SS_CXXFLAGS="$SS_CXXFLAGS -pipe"
+ else
+ SS_CXXFLAGS="-pipe"
+ fi
+ else
+ AC_MSG_RESULT([no])
+ fi
+])
+
+
+AC_DEFUN([AC_SS_CXXFLAGS_PROFILING],
+[
+ AC_MSG_CHECKING([if you want the profiling information])
+
+ SS_LOCAL_ADD_PROFILING=""
+
+ AC_ARG_ENABLE(profiling,
+ AC_HELP_STRING([--enable-profiling],[Compile an executable suitable for profiling]),
+ [SS_LOCAL_ADD_PROFILING="true"])
+
+ if test -n "$SS_LOCAL_ADD_PROFILING"; then
+ AC_MSG_RESULT([yes])
+ if test -n "$SS_CXXFLAGS"; then
+ SS_CXXFLAGS="$SS_CXXFLAGS -pg"
+ else
+ SS_CXXFLAGS="-pg"
+ fi
+ if test -n "$SS_LDFLAGS"; then
+ SS_LDFLAGS="$SS_LDFLAGS -pg"
+ else
+ SS_LDFLAGS="-pg"
+ fi
+ SS_BUILD_FLAGS="P$SS_BUILD_FLAGS"
+ else
+ AC_MSG_RESULT([no])
+ fi
+])
+
+AC_DEFUN([AC_SS_CXXFLAGS_FNORTTI],
+[
+ AC_MSG_CHECKING([if you want to use -fno-rtti])
+
+ SS_LOCAL_FNORTTI=""
+ AC_ARG_ENABLE(fno-rtti,
+ AC_HELP_STRING([--enable-fno-rtti],[Disable runtime type information (dangerous)]),
+ SS_LOCAL_FNORTTI="true")
+
+ if test -n "$SS_LOCAL_FNORTTI"; then
+ AC_MSG_RESULT([yes])
+ if test -n "$SS_CXXFLAGS"; then
+ SS_CXXFLAGS="$SS_CXXFLAGS -fno-rtti"
+ else
+ SS_CXXFLAGS="-fno-rtti"
+ fi
+ else
+ AC_MSG_RESULT([no])
+ fi
+])
+
+AC_DEFUN([AC_SS_CXXFLAGS_ANSI],
+[
+ SS_ANSI_COMPILATION=""
+ AC_MSG_CHECKING([if you want a strict ansi compilation])
+ AC_ARG_ENABLE(ansi,
+ AC_HELP_STRING([--enable-ansi],[Strict ansi compilation (might not compile)]),
+ SS_ANSI_COMPILATION="true")
+
+ if test -n "$SS_ANSI_COMPILATION"; then
+ AC_MSG_RESULT([yes])
+ if test -n "$SS_CXXFLAGS"; then
+ SS_CXXFLAGS="$SS_CXXFLAGS -ansi"
+ else
+ SS_CXXFLAGS="-ansi"
+ fi
+ else
+ AC_MSG_RESULT([no])
+ fi
+])
+
+
+AC_DEFUN([AC_SS_CXXFLAGS_WALL],
+[
+ SS_WALL_COMPILATION=""
+ AC_MSG_CHECKING([if you want gcc to be paranoic])
+ AC_ARG_ENABLE(wall,
+ AC_HELP_STRING([--enable-wall],[Make gcc be paranoic (might not compile)]),
+ SS_WALL_COMPILATION="true")
+
+ if test -n "$SS_WALL_COMPILATION"; then
+ AC_MSG_RESULT([yes])
+ if test -n "$SS_CXXFLAGS"; then
+ SS_CXXFLAGS="$SS_CXXFLAGS -Wall"
+ else
+ SS_CXXFLAGS="-Wall"
+ fi
+ else
+ AC_MSG_RESULT([no])
+ fi
+])
+
+
+AC_DEFUN([AC_SS_CXXFLAGS_PEDANTIC],
+[
+ SS_PEDANTIC_COMPILATION=""
+ AC_MSG_CHECKING([if you want a strict ansi compilation])
+
+ AC_ARG_ENABLE(pedantic,
+ AC_HELP_STRING([--enable-pedantic],[Pedantic compilation (might not compile)]),
+ SS_PEDANTIC_COMPILATION="true")
+
+ if test -n "$SS_PEDANTIC_COMPILATION"; then
+ AC_MSG_RESULT([yes])
+ if test -n "$SS_CXXFLAGS"; then
+ SS_CXXFLAGS="$SS_CXXFLAGS -pedantic"
+ else
+ SS_CXXFLAGS="-pedantic"
+ fi
+ else
+ AC_MSG_RESULT([no])
+ fi
+])
+
+AC_DEFUN([AC_SS_CXXFLAGS_OPTIMISATION],
+[
+ AC_MSG_CHECKING([for the optimisation level])
+
+ SS_LOCAL_OPTIMISATION=""
+ AC_ARG_ENABLE(optimisation,
+ AC_HELP_STRING([--enable-optimisation=N],[Use optimisation level N when compiling]),
+ SS_LOCAL_OPTIMISATION="$enableval")
+
+ if test -n "$SS_LOCAL_OPTIMISATION"; then
+ AC_MSG_RESULT([using -O$SS_LOCAL_OPTIMISATION])
+ if test -n "$SS_CXXFLAGS"; then
+ SS_CXXFLAGS="$SS_CXXFLAGS -O$SS_LOCAL_OPTIMISATION"
+ else
+ SS_CXXFLAGS="-O$SS_LOCAL_OPTIMISATION"
+ fi
+ SS_BUILD_FLAGS="$SS_LOCAL_OPTIMISATION$SS_BUILD_FLAGS"
+ else
+ AC_MSG_RESULT([using no optimisation flag])
+ fi
+])
+
+
+
+AC_DEFUN([AC_SS_CXXFLAGS],
+[
+ SS_CXXFLAGS=""
+
+ AC_SS_CXXFLAGS_DEBUG_SYMBOLS
+ AC_SS_CXXFLAGS_PROFILING
+ AC_SS_CXXFLAGS_PIPES
+ AC_SS_CXXFLAGS_OPTIMISATION
+ AC_SS_CXXFLAGS_FNORTTI
+ AC_SS_CXXFLAGS_ANSI
+ AC_SS_CXXFLAGS_PEDANTIC
+ AC_SS_CXXFLAGS_WALL
+
+ if test -n "$SS_CXXFLAGS"; then
+ if test -n "$CXXFLAGS"; then
+ CXXFLAGS="$CXXFLAGS $SS_CXXFLAGS"
+ else
+ CXXFLAGS="$SS_CXXFLAGS"
+ fi
+ fi
+])
+
+
+dnl ###################################################################################################################
+dnl ### HEADERS AND FUNCTIONS
+dnl ###################################################################################################################
+
+AC_DEFUN([AC_SS_HEADER_CHECKS],
+[
+ SS_HAS_OSS_SUPPORT="false"
+ AC_CHECK_HEADER(strings.h)
+ AC_CHECK_HEADERS(linux/soundcard.h sys/soundcard.h soundcard.h,SS_HAS_OSS_SUPPORT="true")
+
+ if test "$SS_HAS_OSS_SUPPORT" = "true"; then
+ AC_DEFINE([COMPILE_OSS_SUPPORT], 1, [define if you want to enable OSS sound support])
+ fi
+
+])
+
+AC_DEFUN([AC_SS_FUNCTION_CHECKS],
+[
+ SS_HAVE_IPV6_FUNCTIONS="true"
+
+ AC_CHECK_FUNCS(getenv strerror)
+ AC_CHECK_FUNCS(inet_ntoa inet_aton)
+ AC_CHECK_FUNCS(setenv unsetenv putenv)
+ AC_CHECK_FUNCS(gmtime_r localtime_r)
+
+ AC_CHECK_FUNC(inet_ntop,SS_HAVE_IPV6_FUNCTIONS="true",SS_HAVE_IPV6_FUNCTIONS="false")
+ AC_CHECK_FUNC(inet_pton,SS_HAVE_IPV6_FUNCTIONS="true",SS_HAVE_IPV6_FUNCTIONS="false")
+ AC_CHECK_FUNC(getaddrinfo,SS_HAVE_IPV6_FUNCTIONS="true",SS_HAVE_IPV6_FUNCTIONS="false")
+
+ AC_CHECK_FUNCS(getnameinfo)
+])
+
+
+
+dnl ###################################################################################################################
+dnl ### MISC OPTIONS
+dnl ###################################################################################################################
+
+
+AC_DEFUN([AC_SS_MISC_OPTIONS],
+[
+ AC_MSG_CHECKING([if you want the memory profiling])
+ AC_ARG_WITH(memory-profile, [ --with-memory-profile Compile the memory profile],SS_COMPILE_MEMORY_PROFILE="true")
+ if test "$SS_COMPILE_MEMORY_PROFILE" = "true"; then
+ AC_MSG_RESULT(yes)
+ AC_DEFINE([COMPILE_MEMORY_PROFILE], 1, [define if you want the gcc memory profile])
+ SS_BUILD_FLAGS="m$SS_BUILD_FLAGS"
+ else
+ AC_MSG_RESULT(no)
+ fi
+
+ AC_MSG_CHECKING([how to waste your time])
+ AC_MSG_RESULT(by performing senseless checks)
+
+ AC_MSG_CHECKING([if you want memory checking in malloc])
+ AC_ARG_WITH(memory-checks, [ --with-memory-checks Enable malloc memory checks],SS_COMPILE_MEMORY_CHECKS="true")
+ if test "$SS_COMPILE_MEMORY_CHECKS" = "true"; then
+ AC_MSG_RESULT(yes)
+ AC_DEFINE([COMPILE_MEMORY_CHECKS], 1, [define if you want the memory checks])
+ SS_BUILD_FLAGS="h$SS_BUILD_FLAGS"
+ else
+ AC_MSG_RESULT(no)
+ fi
+
+
+ AC_MSG_CHECKING([if you want to use system memmove])
+ AC_ARG_WITH(system-memmove, [ --without-system-memmove Do not use system memmove and memcpy],SS_DO_NOT_USE_SYSTEM_MEMMOVE="true")
+ if test "$SS_DO_NOT_USE_SYSTEM_MEMMOVE" = "true"; then
+ AC_MSG_RESULT(no)
+ else
+ AC_DEFINE([COMPILE_WITH_SYSTEM_MEMMOVE], 1, [define if you trust your memmove() function])
+ AC_MSG_RESULT(yes)
+ SS_BUILD_FLAGS="s$SS_BUILD_FLAGS"
+ fi
+
+ AC_MSG_CHECKING([if you want to optimize for big channels])
+ AC_ARG_WITH(big-channels, [ --with-big-channels Optimize for big irc channels],SS_OPTIMIZE_BIG_CHANNELS="true")
+ if test "$SS_OPTIMIZE_BIG_CHANNELS" = "true"; then
+ AC_MSG_RESULT(yes: using 349 as dict size)
+ AC_DEFINE_UNQUOTED([AVERAGE_CHANNEL_USERS],349, [define this to the number of average channel users])
+ SS_BUILD_FLAGS="b$SS_BUILD_FLAGS"
+ else
+ AC_MSG_RESULT(no: using 101 as dict size)
+ AC_DEFINE_UNQUOTED([AVERAGE_CHANNEL_USERS],101, [define this to the number of average channel users])
+ fi
+
+ AC_MSG_CHECKING([if you want ix86 assembly optimisations])
+ AC_ARG_WITH(ix86-asm, [ --with-ix86-asm Compile ix86 assembly optimisations],SS_COMPILE_ix86_ASM="true")
+ if test "$SS_COMPILE_ix86_ASM" = "true"; then
+ AC_MSG_RESULT(yes)
+ AC_MSG_CHECKING(target system CPU)
+ if test "$target_cpu" = "i386"; then
+ AC_MSG_RESULT(i386 : compiling asm code)
+ else
+ if test "$target_cpu" = "i486"; then
+ AC_MSG_RESULT(i486 : compiling asm code)
+ else
+ if test "$target_cpu" = "i586"; then
+ AC_MSG_RESULT(i586 : compiling asm code)
+ else
+ if test "$target_cpu" = "i686"; then
+ AC_MSG_RESULT(i686 : compiling asm code)
+ else
+ AC_MSG_RESULT($target_cpu , no i386 optimisations)
+ unset SS_COMPILE_ix86_ASM
+ fi
+ fi
+ fi
+ fi
+
+ if test "$SS_COMPILE_ix86_ASM" = "true"; then
+ AC_DEFINE([COMPILE_ix86_ASM], 1, [define if you want the i386 asm code])
+ SS_BUILD_FLAGS="x$SS_BUILD_FLAGS"
+ fi
+ else
+ AC_MSG_RESULT(no)
+ fi
+
+ AC_PATH_PROG(SS_MSGFMT,msgfmt,":",$PATH:/bin:/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin:/usr/lib/qt/bin:/usr/local/qt/bin:/usr/X11R6/qt/bin:/usr/qt/bin:/usr/build/qt/bin)
+ if test -z "SS_MSGFMT"; then
+ SS_MSGFMT=":"
+ fi
+ AC_SUBST(SS_MSGFMT)
+
+ AC_MSG_CHECKING([if you want the DCC VOICE sound support])
+ AC_ARG_WITH(dcc-sound,[ --without-dcc-sound Do not compile the DCC VOICE sound support],SS_NO_SOUND="true")
+ if test "$SS_NO_SOUND" = "true"; then
+ AC_MSG_RESULT(no)
+ AC_DEFINE([COMPILE_DISABLE_DCC_VOICE], 1, [define if you want to disable DCC VOICE sound support])
+ else
+ AC_MSG_RESULT(yes)
+ SS_BUILD_FLAGS="A$SS_BUILD_FLAGS"
+ fi
+
+ SS_BUILD_FLAGS="T$SS_BUILD_FLAGS"
+ AC_DEFINE([COMPILE_INFO_TIPS], 1, [define if you want the info tips to be compiled in])
+
+ AC_MSG_CHECKING([if you want to disable the ipV6 support])
+ AC_ARG_WITH(ipv6-support,[ --without-ipv6-support Do not compile the IpV6 support],SS_NOIPV6_SUPPORT="true")
+ if test "$SS_NOIPV6_SUPPORT" = "true"; then
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+ fi
+
+ AC_MSG_CHECKING([if you want to disable the cryptography support])
+ AC_ARG_WITH(crypt-support,[ --without-crypt-support Do not compile the cryptography support],SS_NOCRYPT_SUPPORT="true")
+ if test "$SS_NOCRYPT_SUPPORT" = "true"; then
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+ AC_DEFINE([COMPILE_CRYPT_SUPPORT], 1, [define if you want to compile the crypt support])
+ SS_BUILD_FLAGS="c$SS_BUILD_FLAGS"
+ fi
+
+ AC_MSG_CHECKING([if you want to disable the X bell support])
+ AC_ARG_WITH(x-bell,[ --without-x-bell Disable the X bell support],SS_NO_X_BELL="true")
+ if test "$SS_NO_X_BELL" = "true"; then
+ AC_MSG_RESULT(yes)
+ AC_DEFINE([COMPILE_NO_X_BELL], 1, [define if you want to disable the X bell support])
+ else
+ AC_MSG_RESULT(no)
+ fi
+
+ AC_DEFINE([COMPILE_NEW_KVS], 1, [define if you want to enable the new KVS parser])
+ AC_DEFINE([COMPILE_ONLY_NEW_KVS], 1, [define if you want to use only the new KVS parser])
+
+ AC_MSG_CHECKING([if you want to link to the embedded version of qt])
+ AC_ARG_WITH(qt-embedded,[ --with-qt-embedded Link to qt-embedded (see INSTALL)],SS_QT3_EMBEDDED="true")
+ if test "$SS_QT3_EMBEDDED" = "true"; then
+ AC_MSG_RESULT(yes)
+ SS_BUILD_FLAGS="E$SS_BUILD_FLAGS"
+ else
+ AC_MSG_RESULT(no)
+ fi
+
+
+ AC_MSG_CHECKING([if you want to disable inter-process communication])
+ AC_ARG_WITH(ipc,[ --without-ipc Disable inter-process communication support],SS_NO_IPC="true")
+ if test "$SS_NO_IPC" = "true"; then
+ AC_MSG_RESULT(yes)
+ SS_BUILD_FLAGS="I$SS_BUILD_FLAGS"
+ AC_DEFINE([COMPILE_NO_IPC], 1, [define this if you want to disable the inter-process communication support])
+ else
+ AC_MSG_RESULT(no)
+ fi
+
+ AC_MSG_CHECKING([if you want to explicitly disable the gsm codec support])
+ AC_ARG_WITH(gsm,[ --without-gsm Disable gsm codec support],SS_NO_GSM="true")
+ if test "$SS_NO_GSM" = "true"; then
+ AC_MSG_RESULT(yes)
+ else
+ AC_DEFINE([COMPILE_USE_GSM], 1, [define if you have libgsm and want the GSM code to be compiled])
+ SS_BUILD_FLAGS="G$SS_BUILD_FLAGS"
+ AC_MSG_RESULT(no)
+ fi
+
+
+ AC_MSG_CHECKING([if you want to ignore SIGALARM])
+ AC_ARG_WITH(ignore-sigalarm, [ --with-ignore-sigalarm Ignore SIGALARM in all threads],SS_IGNORE_SIGALARM="true")
+ if test "$SS_IGNORE_SIGALARM" = "true"; then
+ AC_MSG_RESULT(yes)
+ AC_DEFINE([COMPILE_IGNORE_SIGALARM], 1, [define this if you want to ignore the SIGALARM signal])
+ SS_BUILD_FLAGS="a$SS_BUILD_FLAGS"
+ else
+ AC_MSG_RESULT(no)
+ fi
+
+ AC_MSG_CHECKING([if you want the pseudo-transparency support])
+ AC_ARG_WITH(transparency, [ --without-transparency Do NOT compile the pseudo-transparency support],SS_NO_PSEUDO_TRANSPARENCY="true")
+ if test "$SS_NO_PSEUDO_TRANSPARENCY" = "true"; then
+ AC_MSG_RESULT(no)
+ else
+ AC_MSG_RESULT(yes)
+ AC_DEFINE([COMPILE_PSEUDO_TRANSPARENCY], 1, [define if you have the KDE support and want the pseudo transparency])
+ SS_BUILD_FLAGS="p$SS_BUILD_FLAGS"
+ fi
+
+ AC_ARG_WITH(pizza,[ --with-pizza Use this when hungry],SS_PIZZA="true")
+
+])
+
+
+dnl ###################################################################################################################
+dnl ### DYNAMIC LABELS
+dnl ###################################################################################################################
+
+AC_DEFUN([AC_SS_CHECK_DYNAMIC_LABELS],
+[
+ AC_MSG_CHECKING([if the compiler supports dynamic labels])
+ AC_ARG_WITH(dyn-labels, [ --without-dyn-labels Disable usage of the dynamic label jumps],SS_DISABLE_DYNAMIC_LABELS="true")
+ if test "$SS_DISABLE_DYNAMIC_LABELS" = "true"; then
+ AC_MSG_RESULT("no: trusting you")
+ else
+ AC_TRY_RUN([
+ int main(int argc,char ** argv)
+ {
+ int retVal = 10;
+ void * label = &&action4;
+ goto action2;
+ action1:
+ retVal -= 4;
+ label = &&endofcode;
+ goto *label;
+ action2:
+ retVal -= 5;
+ goto *label;
+ action3:
+ retVal += 40;
+ action4:
+ retVal -= 1;
+ label = &&action1;
+ goto *label;
+ endofcode:
+ return retVal;
+ }
+ ],SS_DISABLE_DYNAMIC_LABELS="false",SS_DISABLE_DYNAMIC_LABELS="true",SS_DISABLE_DYNAMIC_LABELS="true")
+
+ if test "$SS_DISABLE_DYNAMIC_LABELS" = "true"; then
+ AC_MSG_RESULT("no")
+ else
+ AC_MSG_RESULT("yes")
+ AC_DEFINE([COMPILE_USE_DYNAMIC_LABELS], 1, [define if your compiler supports gotos do dynamic labels])
+ fi
+ fi
+])
+
+dnl ###################################################################################################################
+dnl ### BIG_ENDIAN
+dnl ###################################################################################################################
+
+AC_DEFUN([AC_SS_CHECK_BIG_ENDIAN],
+[
+ AC_MSG_CHECKING([if this system is big endian])
+ AC_TRY_RUN([
+ int main(int argc,char ** argv)
+ {
+ int nl;
+ unsigned char * nlc;
+ nl = 0x12CAFE34;
+ nlc = (unsigned char *)(&nl);
+ if((nlc[0] == 0x12) && (nlc[1] == 0xCA) && (nlc[2] == 0xFE) && (nlc[3] == 0x34))return 0;
+ return 1;
+ }
+ ],SS_BIG_ENDIAN_MACHINE="true",SS_BIG_ENDIAN_MACHINE="false",SS_BIG_ENDIAN_MACHINE="false")
+
+ dnl # This will fail if we're cross compiling...
+
+ if test "$SS_BIG_ENDIAN_MACHINE" = "true"; then
+ AC_MSG_RESULT([yes])
+ SS_BUILD_FLAGS="B$SS_BUILD_FLAGS"
+ AC_DEFINE([BIG_ENDIAN_MACHINE_BYTE_ORDER], 1, [define this if you are on a big endian machine])
+ else
+ AC_MSG_RESULT([no])
+ fi
+])
+
+dnl ###################################################################################################################
+dnl ### DLOPEN
+dnl ###################################################################################################################
+
+
+AC_DEFUN([AC_SS_CHECK_DL],
+[
+ AC_MSG_CHECKING([for dlopen capabilities])
+
+ SS_LINK_TO_LIBDL="no"
+
+ SS_SAVE_LIBS="$LIBS"
+ LIBS="-rdynamic"
+ AC_TRY_LINK([
+ #include <dlfcn.h>
+ ],[
+ /* sparc-unknown-openbsd3.0 hack */
+ #ifndef RTLD_NOW
+ #define RTLD_NOW RTLD_LAZY
+ #endif
+ dlopen("/lib/libc.so.6",RTLD_NOW);
+ ],
+ eval "SS_DLOPEN_OK=yes"
+ ,
+ eval "SS_DLOPEN_OK=no"
+ )
+ LIBS="$SS_SAVE_LIBS"
+
+ if test "$SS_DLOPEN_OK" = "yes"; then
+ AC_MSG_RESULT([builtin in libc])
+ else
+
+ SS_SAVE_LIBS="$LIBS"
+ LIBS="-rdynamic -ldl"
+ AC_TRY_LINK([
+ #include <dlfcn.h>
+ ],[
+ /* sparc-unknown-openbsd3.0 hack */
+ #ifndef RTLD_NOW
+ #define RTLD_NOW RTLD_LAZY
+ #endif
+ dlopen("/usr/lib/libdl.so",RTLD_NOW);
+ ],
+ eval "SS_DLOPEN_OK=yes",
+ eval "SS_DLOPEN_OK=no"
+ )
+ LIBS="$SS_SAVE_LIBS"
+
+ if test "$SS_DLOPEN_OK" = "yes"; then
+ SS_LINK_TO_LIBDL="yes"
+ AC_MSG_RESULT([external in libdl])
+ else
+ AC_MSG_RESULT([FAILED])
+ AC_SS_SET_REDINK
+ echo "################################################################################"
+ echo "### CONFIGURE ERROR:"
+ echo "### No dlopen capabilities found."
+ echo "### It looks that your system has no interface to the dynamic linker ?"
+ echo "### If you're on linux, you either miss libdl , or the linker is not"
+ echo "### able to find it. Make sure that libdl is in /lib or /usr/lib."
+ echo "### If you're sure you have libdl, make sure you have also g++ installed."
+ echo "### If you're not on linux, please drop a mail to pragma at kvirc dot net"
+ echo "### describing your system and I'll try to fix it."
+ echo "################################################################################"
+ AC_SS_SET_NORMALINK
+ AC_MSG_ERROR(["This was fatal...aborting"])
+ fi
+ fi
+])
+
+
+dnl ###################################################################################################################
+dnl ### PERL
+dnl ###################################################################################################################
+
+
+AC_DEFUN([AC_SS_CHECK_PERL],
+[
+ SS_PERL_ENABLE="yes"
+ SS_PERL_CCFLAGS=""
+ SS_PERL_LDFLAGS=""
+ SS_PERL_BINARY="true"
+ SS_PERL_RESULT_MESSAGE=""
+
+ AC_ARG_ENABLE(perl,AC_HELP_STRING([--enable-perl],[Enable perl scripting support (default=detect)]),eval "SS_PERL_ENABLE=$enableval")
+
+ if test "$SS_PERL_ENABLE" = "yes"; then
+ AC_PATH_PROG(SS_PERL_BINARY,perl,":",$PATH:/bin:/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin:/usr/lib/qt/bin:/usr/local/qt/bin:/usr/X11R6/qt/bin:/usr/qt/bin:/usr/build/qt/bin)
+ if test -z "SS_PERL_BINARY"; then
+ SS_PERL_RESULT_MESSAGE="disabled: can't find the perl binary"
+ SS_PERL_ENABLE="no"
+ SS_PERL_BINARY="true"
+ fi
+ else
+ SS_PERL_RESULT_MESSAGE="disabled by user"
+ fi
+
+ if test "$SS_PERL_ENABLE" = "yes"; then
+ AC_MSG_CHECKING([if perl il compiled with MULTIPLICITY option])
+ SS_PERL_TEMP=$($SS_PERL_BINARY -V | grep MULTIPLICITY)
+ if test -z "$SS_PERL_TEMP"; then
+ AC_MSG_RESULT([no])
+ SS_PERL_ENABLE="no"
+ SS_PERL_BINARY="true"
+ SS_PERL_RESULT_MESSAGE="disabled: MULTIPLICITY not defined"
+ fi
+ fi
+
+ if test "$SS_PERL_ENABLE" = "yes"; then
+ AC_MSG_CHECKING([for the system perl directory])
+ SS_PERL_DIR=$($SS_PERL_BINARY -MConfig -e 'print $Config{archlib}')
+ SS_PERL_DIR="$SS_PERL_DIR/CORE"
+ AC_MSG_RESULT([got $SS_PERL_DIR])
+ AC_MSG_CHECKING([for the perl ccflags])
+ SS_PERL_CCFLAGS=$($SS_PERL_BINARY -MConfig -e 'print $Config{ccflags}')
+ AC_MSG_RESULT([got $SS_PERL_CCFLAGS])
+ AC_MSG_CHECKING([for the perl ldflags])
+ SS_PERL_LDFLAGS=$($SS_PERL_BINARY -MExtUtils::Embed -e ldopts)
+ AC_MSG_RESULT([got $SS_PERL_LDFLAGS])
+
+ AC_MSG_CHECKING([if we can compile a perl application])
+ SS_SAVED_LIBS="$LIBS"
+ SS_SAVED_CFLAGS="$CFLAGS"
+ SS_SAVED_CCFLAGS="$CCFLAGS"
+ SS_SAVED_LDFLAGS="$LDFLAGS"
+ SS_SAVED_CXXFLAGS="$CXXFLAGS"
+ SS_SAVED_CPPFLAGS="$CPPFLAGS"
+
+ LIBS="$SS_PERL_LDFLAGS"
+ LDFLAGS="$LIBS"
+ CFLAGS="$SS_PERL_CCFLAGS -I$SS_PERL_DIR"
+ CCFLAGS="$CFLAGS"
+ CXXFLAGS="$CFLAGS"
+ CPPFLAGS="$CFLAGS"
+
+ AC_TRY_LINK([
+ #include <EXTERN.h>
+ #include <perl.h>
+ #include <XSUB.h>
+
+ extern "C" void boot_DynaLoader(pTHX_ CV* cv);
+
+ extern "C" void xs_init(pTHX)
+ {
+ char * file = __FILE__;
+ newXS("DynaLoader::boot_DynaLoader",boot_DynaLoader,file);
+ }
+
+ ],[
+ PerlInterpreter *my_perl;
+ my_perl = perl_alloc();
+ perl_construct(my_perl);
+ perl_parse(my_perl,xs_init, 0, 0, (char **)NULL);
+ perl_run(my_perl);
+ perl_destruct(my_perl);
+ perl_free(my_perl);
+ ],
+ eval "SS_PERL_ENABLE=yes",
+ eval "SS_PERL_ENABLE=no"
+ )
+
+ SS_PERL_LDFLAGS="$LDFLAGS"
+ SS_PERL_CCFLAGS="$CCFLAGS"
+
+ LIBS="$SS_SAVED_LIBS"
+ CFLAGS="$SS_SAVED_CFLAGS"
+ LDFLAGS="$SS_SAVED_LDFLAGS"
+ CXXFLAGS="$SS_SAVED_CXXFLAGS"
+ CPPFLAGS="$SS_SAVED_CPPFLAGS"
+ CCFLAGS="$SS_SAVED_CCFLAGS"
+
+ if test "$SS_PERL_ENABLE" = "yes"; then
+ AC_MSG_RESULT([seems ok])
+ AC_DEFINE([COMPILE_PERL_SUPPORT], 1, [define if you have perl and want the perl scripting support in kvirc])
+ SS_BUILD_FLAGS="p$SS_BUILD_FLAGS"
+ SS_PERL_RESULT_MESSAGE="enabled"
+ else
+ AC_MSG_RESULT([seems broken])
+ SS_PERL_RESULT_MESSAGE="disabled: failed to compile the test program"
+ SS_PERL_LDFLAGS=""
+ SS_PERL_CCFLAGS=""
+ fi
+ fi
+
+ AC_SUBST(SS_PERL_CCFLAGS)
+ AC_SUBST(SS_PERL_LDFLAGS)
+ AC_SUBST(SS_PERL_BINARY)
+
+ AC_MSG_CHECKING([for perl scripting support])
+ AC_MSG_RESULT([$SS_PERL_RESULT_MESSAGE])
+])
+
+dnl ###################################################################################################################
+dnl ### OPENSSL
+dnl ###################################################################################################################
+
+
+AC_DEFUN([AC_SS_CHECK_OPENSSL],
+[
+ SS_LINK_TO_LIBSSL="false"
+ SS_SSL_RESULT_MESSAGE=""
+ SS_ENABLE_SSL_SUPPORT="yes"
+
+ AC_ARG_ENABLE(ssl,AC_HELP_STRING([--disable-ssl],[Disable OpenSSL support]),eval "SS_ENABLE_SSL_SUPPORT=$enableval")
+
+ if test "$SS_ENABLE_SSL_SUPPORT" = "yes"; then
+ AC_MSG_CHECKING([If we can compile and link a small SSL test application])
+ SS_SAVED_LIBS="$LIBS"
+ LIBS="-lcrypto -lssl"
+ AC_TRY_LINK([
+ #include <openssl/ssl.h>
+ ],[
+ SSL_new(0);
+ ],
+ eval "SS_ENABLE_SSL_SUPPORT=yes",
+ eval "SS_ENABLE_SSL_SUPPORT=no"
+ )
+ LIBS="$SS_SAVED_LIBS"
+ if test "$SS_ENABLE_SSL_SUPPORT" = "yes"; then
+ AC_MSG_RESULT([yes])
+
+ AC_CHECK_HEADER(openssl/ssl.h,SS_DUMMY="yes",SS_ENABLE_SSL_SUPPORT="no")
+ AC_CHECK_HEADER(openssl/err.h,SS_DUMMY="yes",SS_ENABLE_SSL_SUPPORT="no")
+ AC_CHECK_HEADER(openssl/asn1.h,SS_DUMMY="yes",SS_ENABLE_SSL_SUPPORT="no")
+ AC_CHECK_HEADER(openssl/evp.h,SS_DUMMY="yes",SS_ENABLE_SSL_SUPPORT="no")
+
+ if test "$SS_ENABLE_SSL_SUPPORT" = "yes"; then
+ AC_DEFINE([COMPILE_SSL_SUPPORT], 1, [define if you have openssl and want the ssl support in kvirc])
+ SS_LINK_TO_LIBSSL="true"
+ SS_BUILD_FLAGS="o$SS_BUILD_FLAGS"
+ SS_SSL_RESULT_MESSAGE="enabled"
+ else
+ SS_SSL_RESULT_MESSAGE="disabled: missing header files"
+ fi
+ else
+ AC_MSG_RESULT([no])
+ SS_SSL_RESULT_MESSAGE="disabled: failed to compile the test program"
+ fi
+ else
+ SS_SSL_RESULT_MESSAGE="disabled by user"
+ fi
+
+ AC_MSG_CHECKING([for secure connections support])
+ AC_MSG_RESULT([$SS_SSL_RESULT_MESSAGE])
+])
+
+
+dnl ###################################################################################################################
+dnl ### ESD
+dnl ###################################################################################################################
+
+AC_DEFUN([AC_SS_CHECK_ESD],
+[
+ SS_LINK_TO_LIBESD="false"
+ SS_DISABLE_ESD_SUPPORT="true"
+ SS_SAVED_LIBS=$LIBS
+ LIBS="$LIBS -lesd"
+ AC_CHECK_LIB(esd,esd_play_file,SS_DISABLE_ESD_SUPPORT="false")
+ LIBS="$SS_SAVED_LIBS"
+
+ if test "$SS_DISABLE_ESD_SUPPORT" = "false"; then
+ SS_DISABLE_ESD_SUPPORT="true"
+ AC_CHECK_HEADER(esd.h,SS_DISABLE_ESD_SUPPORT="false")
+ fi
+
+ AC_MSG_CHECKING([for Esound daemon support])
+ AC_ARG_WITH(esd-support, [ --without-esd-support Disable Esound daemon support],SS_DISABLE_ESD_SUPPORT="true")
+
+ if test "$SS_DISABLE_ESD_SUPPORT" = "true"; then
+ AC_MSG_RESULT(disabled by user)
+ else
+ AC_MSG_RESULT(yes: have libs and headers)
+ AC_DEFINE([COMPILE_ESD_SUPPORT], 1, [define if you want to enable the Esound daemon support])
+ SS_LINK_TO_LIBESD="true"
+ SS_BUILD_FLAGS="e$SS_BUILD_FLAGS"
+ fi
+
+])
+
+dnl ###################################################################################################################
+dnl ### ZLIB
+dnl ###################################################################################################################
+
+AC_DEFUN([AC_SS_CHECK_ZLIB],
+[
+ SS_LINK_TO_LIBZLIB="no"
+ SS_DISABLE_ZLIB_SUPPORT="true"
+ SS_SAVED_LIBS=$LIBS
+ LIBS="$LIBS -lz"
+ AC_CHECK_LIB(z,gzopen,SS_DISABLE_ZLIB_SUPPORT="false")
+ LIBS="$SS_SAVED_LIBS"
+
+ if test "$SS_DISABLE_ZLIB_SUPPORT" = "false"; then
+ SS_DISABLE_ZLIB_SUPPORT="true"
+ AC_CHECK_HEADER(zlib.h,SS_DISABLE_ZLIB_SUPPORT="false")
+ fi
+
+ AC_MSG_CHECKING([for GZip support])
+ AC_ARG_WITH(zlib-support, [ --without-zlib-support Disable ZLIB support],SS_DISABLE_ZLIB_SUPPORT="true")
+
+ if test "$SS_DISABLE_ZLIB_SUPPORT" = "true"; then
+ AC_MSG_RESULT(disabled by user)
+ else
+ AC_MSG_RESULT(yes: have libs and headers)
+ AC_DEFINE([COMPILE_ZLIB_SUPPORT], 1, [define if you want to enable the ZLib library support])
+ SS_LINK_TO_LIBZ="yes"
+ SS_BUILD_FLAGS="Z$SS_BUILD_FLAGS"
+ fi
+])
+
+dnl ###################################################################################################################
+dnl ### XSS
+dnl ###################################################################################################################
+
+AC_DEFUN([AC_SS_CHECK_XSS],
+[
+ SS_LINK_TO_XSS="no"
+ SS_COMPILE_XSS_SUPPORT="false"
+ SS_SAVED_LIBS=$LIBS
+ LIBS="$LIBS -lXss"
+ AC_CHECK_LIB(Xss,XScreenSaverAllocInfo,SS_COMPILE_XSS_SUPPORT="true")
+ LIBS="$SS_SAVED_LIBS"
+
+ AC_MSG_CHECKING([for Xss support])
+
+ if test "$SS_COMPILE_XSS_SUPPORT" = "false"; then
+ AC_MSG_RESULT(disabled)
+ else
+ AC_MSG_RESULT(yes: lib is ok)
+ AC_DEFINE([COMPILE_XSS_SUPPORT], 1, [define if you want to enable the ZLib library support])
+ SS_LINK_TO_XSS="yes"
+ SS_BUILD_FLAGS="$SS_BUILD_FLAGS"
+ fi
+])
+
+dnl ###################################################################################################################
+dnl ### Audiofile library
+dnl ###################################################################################################################
+
+AC_DEFUN([AC_SS_CHECK_AUDIOFILE],
+[
+ SS_LINK_TO_LIBAUDIOFILE="false"
+ SS_DISABLE_AUDIOFILE_SUPPORT="true"
+ SS_SAVED_LIBS=$LIBS
+ LIBS="$LIBS -laudiofile"
+ AC_CHECK_LIB(audiofile,afOpenFile,SS_DISABLE_AUDIOFILE_SUPPORT="false")
+
+ if test "$SS_DISABLE_AUDIOFILE_SUPPORT" = "false"; then
+ SS_DISABLE_AUDIOFILE_SUPPORT="true"
+ AC_CHECK_LIB(audiofile,afGetVirtualFrameSize,SS_DISABLE_AUDIOFILE_SUPPORT="false")
+ fi
+
+ LIBS="$SS_SAVED_LIBS"
+
+ if test "$SS_DISABLE_AUDIOFILE_SUPPORT" = "false"; then
+ SS_DISABLE_AUDIOFILE_SUPPORT="true"
+ AC_CHECK_HEADER(audiofile.h,SS_DISABLE_AUDIOFILE_SUPPORT="false")
+ fi
+
+ AC_MSG_CHECKING([for audiofile support])
+
+ if test "$SS_DISABLE_AUDIOFILE_SUPPORT" = "true"; then
+ AC_MSG_RESULT(missing header or libs or wrong version)
+ else
+
+ if test "$SS_HAS_OSS_SUPPORT" = "false"; then
+ SS_DISABLE_AUDIOFILE_SUPPORT="true"
+ AC_MSG_RESULT(no oss support at all)
+ else
+ AC_ARG_WITH(af-support, [ --without-af-support Disable Audiofile library for playing files to OSS support], SS_DISABLE_AUDIOFILE_SUPPORT="true")
+
+ if test "$SS_DISABLE_AUDIOFILE_SUPPORT" = "true"; then
+ AC_MSG_RESULT(disabled by user)
+ else
+ AC_MSG_RESULT(yes: have libs and headers)
+ AC_DEFINE([COMPILE_AUDIOFILE_SUPPORT], 1, [define if you want to enable the Audiofile library support])
+ SS_LINK_TO_LIBAUDIOFILE="true"
+ SS_BUILD_FLAGS="f$SS_BUILD_FLAGS"
+ fi
+ fi
+ fi
+])
+
+dnl ###################################################################################################################
+dnl ### ARTS
+dnl ###################################################################################################################
+
+
+AC_DEFUN([AC_SS_CHECK_ARTS],
+[
+ SS_LINK_TO_LIBARTS="false"
+ SS_DISABLE_ARTS_SUPPORT="false"
+
+ AC_MSG_CHECKING([if Arts support is requested])
+ AC_ARG_WITH(arts-support, [ --without-arts-support Disable Arts daemon support],SS_DISABLE_ARTS_SUPPORT="true")
+
+ if test "$SS_KDE_REQUESTED" = "yes"; then
+ if test "$SS_DISABLE_ARTS_SUPPORT" = "true"; then
+ AC_MSG_RESULT(disabled by user)
+ else
+ AC_MSG_RESULT([yes])
+ AC_MSG_CHECKING(if we can compile a simple Arts application)
+ AC_LANG_CPLUSPLUS
+ ss_save_CPPFLAGS="$CPPFLAGS"
+ ss_save_CXXFLAGS="$CXXFLAGS"
+ ss_save_LDFLAGS="$LDFLAGS"
+ ss_save_LIBS="$LIBS"
+ CPPFLAGS="-I$SS_X_INCDIR -I$SS_QT3_INCDIR -I$SS_KDE_INCDIR $CPPFLAGS $X_CFLAGS"
+ CXXFLAGS="-O2 -Wall $CXXFLAGS"
+ LIBS="-L$SS_KDE_LIBDIR -L$SS_X_LIBDIR $SS_X_LDFLAGS $SS_X_LIBLINK -L$SS_QT3_LIBDIR $LIBS -lsoundserver_idl -lkdecore -l$SS_QTLIB_NAME"
+ if test "$SS_LINK_TO_LIBDL" = "yes"; then
+ LIBS="$LIBS -ldl";
+ fi
+ LDFLAGS="-s $LDFLAGS"
+ AC_TRY_LINK([
+ #include <arts/soundserver.h>
+ ],[
+ Arts::Dispatcher * d = new Arts::Dispatcher();
+ Arts::SimpleSoundServer *server = new Arts::SimpleSoundServer(Arts::Reference("global:Arts_SimpleSoundServer"));
+ ],
+ SS_ARTS_LINKED_OK="TRUE",
+ SS_ARTS_LINKED_OK="FALSE"
+ )
+ if test "$SS_ARTS_LINKED_OK" = "FALSE"; then
+ AC_MSG_RESULT(failed)
+ else
+ AC_MSG_RESULT(success)
+ AC_DEFINE([COMPILE_ARTS_SUPPORT], 1, [define if you want to enable the Arts daemon support])
+ SS_LINK_TO_LIBARTS="true"
+ SS_BUILD_FLAGS="r$SS_BUILD_FLAGS"
+ fi
+ LIBS="$ss_save_LIBS"
+ LDFLAGS="$ss_save_LDFLAGS"
+ CXXFLAGS="$ss_save_CXXFLAGS"
+ CPPFLAGS="$ss_save_CPPFLAGS"
+ fi
+ else
+ SS_DISABLE_ARTS_SUPPORT="true"
+ AC_MSG_RESULT([no KDE so no Arts])
+ fi
+])
+
+
+dnl ###################################################################################################################
+dnl ### INTERFACE ADDRESS STUFF
+dnl ###################################################################################################################
+
+AC_DEFUN([AC_SS_CHECK_IFADDR_STUFF],
+[
+ AC_MSG_CHECKING([if we can get interface addresses])
+
+ AC_TRY_LINK([
+ #include <stdio.h>
+ #include <sys/ioctl.h>
+ #include <net/if.h>
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+ #include <string.h>
+ ],[
+ struct ifreq ifr;
+ int ret;
+ struct sockaddr * sa;
+ ret = IFNAMSIZ;
+ ret = ioctl(ret,SIOCGIFADDR,&ifr);
+ if(ifr.ifr_name != 0)sa = (struct sockaddr *)&(ifr.ifr_addr);
+ ],
+ eval "SS_DISABLE_IFADDR=false"
+ ,
+ eval "SS_DISABLE_IFADDR=true"
+ )
+
+ if test "$SS_DISABLE_IFADDR" = "true"; then
+ AC_MSG_RESULT("no")
+ else
+ AC_MSG_RESULT("yes")
+ AC_DEFINE([COMPILE_GET_INTERFACE_ADDRESS], 1, [define if you have the SIOCGIFADDR ioctl and the related headers])
+ fi
+])
+
+dnl ###################################################################################################################
+dnl ### PTHREAD
+dnl ###################################################################################################################
+
+AC_DEFUN([AC_SS_CHECK_THREAD_STUFF],
+[
+ SS_THREAD_LIBLINK=""
+
+ AC_MSG_CHECKING([if you want to use the solaris lthread])
+ SS_DO_IT="false"
+ AC_ARG_WITH(solaris-lthread, [ --with-solaris-lthread Use the Solaris native libthread],SS_DO_IT="true")
+ if test "$SS_DO_IT" = "true"; then
+ AC_MSG_RESULT(yes)
+ SS_THREAD_LIBLINK="-lthread"
+ AC_DEFINE([COMPILE_THREADS_USE_SOLARIS_LIBTHREAD], 1, [define if you want to use the solaris libthread])
+ else
+ AC_MSG_RESULT(no)
+
+ AC_MSG_CHECKING([if you want to use freebsd native pthread support])
+ SS_DO_IT="false"
+
+ AC_ARG_WITH(freebsd-pthread, [ --with-freebsd-pthread Use the FreeBSD native libc_r for threading],SS_DO_IT="true")
+ if test "$SS_DO_IT" = "true"; then
+ AC_MSG_RESULT(yes)
+ SS_THREAD_LIBLINK="-pthread"
+ AC_DEFINE([COMPILE_THREADS_USE_POSIX], 1, [define if you want to use the pthreads library])
+ else
+ AC_MSG_RESULT(no..using lpthread)
+ SS_THREAD_LIBLINK="-lpthread"
+ AC_DEFINE([COMPILE_THREADS_USE_POSIX], 1, [define if you want to use the pthreads library])
+ fi
+
+ AC_MSG_CHECKING([if your pthread implementation works])
+ SS_DO_IT="false"
+ AC_ARG_WITH(no-pthread-check, [ --with-no-pthread-check Do not check if pthreads stuff compiles],SS_DO_IT="true")
+
+ if test "$SS_DO_IT" = "true"; then
+ AC_MSG_RESULT(yes, trusting you)
+ else
+ SS_SAVE_LIBS="$LIBS"
+ LIBS="$SS_THREAD_LIBLINK"
+ AC_TRY_LINK([
+ #include <pthread.h>
+ ],[
+ pthread_mutex_lock(0);
+ ],
+ eval "SS_PTHREAD_OK=yes"
+ ,
+ eval "SS_PTHREAD_OK=no"
+ )
+ LIBS="$SS_SAVE_LIBS"
+
+ if test "$SS_PTHREAD_OK" = "yes"; then
+ AC_MSG_RESULT(yes, it seems to)
+ else
+ AC_MSG_RESULT(["FAILED"])
+ AC_SS_SET_REDINK
+ if test "$SS_THREAD_LIBLINK" = "-pthread"; then
+ echo "################################################################################"
+ echo "### CONFIGURE ERROR:"
+ echo "### Failed to compile the pthread test program."
+ echo "### You have specified to use the native FreeBSD libc_r for threading"
+ echo "### but it looks that this does not work."
+ echo "### Make sure that you have libc_r floating around your system"
+ echo "### and that the -pthread special gcc flag works."
+ echo "### (You need to use the native FreeBSD gcc compiler for this to work)"
+ echo "################################################################################"
+ else
+ echo "################################################################################"
+ echo "### CONFIGURE ERROR:"
+ echo "### Failed to compile the pthread test program."
+ echo "### It looks that you either don't have libpthread installed or"
+ echo "### it is not reachable by the linker."
+ echo "### Make sure that libpthread is in /lib or /usr/lib."
+ echo "### If you're on solaris you might try the --with-solaris-lthread"
+ echo "### configure option. If you're on FreeBSD you should use"
+ echo "### --with-freebsd-pthread."
+ echo "### Good luck :)"
+ echo "################################################################################"
+ fi
+ AC_SS_SET_NORMALINK
+ AC_MSG_ERROR(["This was fatal...aborting"])
+ fi
+ fi
+ fi
+])
+
+dnl ###################################################################################################################
+dnl ### X
+dnl ###################################################################################################################
+
+
+AC_DEFUN([AC_SS_FIND_X],
+[
+ SS_DISABLE_X_SUPPORT="false"
+
+ AC_MSG_CHECKING([if you want to ignore X at all])
+ AC_ARG_ENABLE(x-support, [ --disable-x-support Ignore X Windows completely],SS_DISABLE_X_SUPPORT="true")
+
+ if test $SS_DISABLE_X_SUPPORT = "true"; then
+ AC_DEFINE([COMPILE_NO_X], 1, [define if you want to ignore X Windows completely])
+ SS_X_INCDIR="/usr/include"
+ SS_X_LIBDIR="/usr/lib"
+ SS_X_LDFLAGS=""
+ SS_X_CPPFLAGS=""
+ SS_X_LIBLINK=""
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no, proceeding with checks)
+ AC_PATH_XTRA
+
+ if test -n "$no_x"; then
+ AC_SS_SET_REDINK
+ echo "################################################################################"
+ echo "### CONFIGURE ERROR:"
+ echo "### Can not find the X libraries."
+ echo "### Make sure that X is installed on your system and try to run configure again,"
+ echo "### this time passing the --x-includes and --x-libraries options."
+ echo "### You may also take a look at the config.log file in this directory,"
+ echo "### that will tell you which checks have failed and maybe more about the"
+ echo "### reason of the failure."
+ echo "###"
+ echo "### If you use an environment that does not require X support such as Qt-Mac"
+ echo "### you may try to rerun configure with --disable-x-support"
+ echo "################################################################################"
+ AC_SS_SET_NORMALINK
+ AC_MSG_ERROR([This was a fatal one...aborting])
+ else
+ # Set the X include and lib dir
+ SS_X_INCDIR="$x_includes"
+ SS_X_LIBDIR="$x_libraries"
+ SS_X_LIBLINK="-lX11 -lXext"
+
+ if test -z "$SS_X_INCDIR"; then
+ # Ops... X headers not found ?
+ AC_TRY_COMPILE([
+ #include <X11/Xlib.h>
+ ],[
+ Display * d = XOpenDisplay(0);
+ XCloseDisplay(d);
+ ],
+ eval "ss_x_incdir_found=yes"
+ ,
+ eval "ss_x_incdir_found=no"
+ )
+
+ if test "$ss_x_incdir_found" = "no"; then
+ AC_SS_SET_REDINK
+ echo "################################################################################"
+ echo "### CONFIGURE ERROR:"
+ echo "### Can not find the X headers."
+ echo "### Possible reasons:"
+ echo "### 1) You miss the X server development files (Xlib.h for example)"
+ echo "###"
+ echo "### 2) Autoconf/Automake wasn't able to find the headers"
+ echo "### for some ugly reason."
+ echo "###"
+ echo "### You might try looking for a file named Xlib.h in your hard-drive"
+ echo "### and try passing the --x-includes option to ./configure"
+ echo "### Remember that if you find Xlib.h in /somepath/include/X11/Xlib.h"
+ echo "### Then you must pass --x-includes=/somepath/include to ./configure"
+ echo "### For example, my Xlib.h is in /usr/X11R6/include/X11/Xlib.h"
+ echo "### then i would try: ./configure --x-includes=/usr/X11R6/include"
+ echo "### If you can't find Xlib.h on your hard drive then install the X-devel"
+ echo "### package from your distribution."
+ echo "### If Xlib.h is there and --x-includes doesn't help, well , there is something"
+ echo "### wrong with X , autoconf or automake."
+ echo "### You may also take a look at the config.log file in this directory,"
+ echo "### that will tell you which checks have failed and maybe more about the"
+ echo "### reason of the failure."
+ echo "###"
+ echo "### If you use an environment that does not require X support such as Qt-Mac"
+ echo "### you may try to rerun configure with --disable-x-support"
+ echo "################################################################################"
+ AC_SS_SET_NORMALINK
+ AC_MSG_ERROR([This was a fatal one...aborting])
+ else
+ # We can compile X programs without any additional path... use a dummy include path then
+ # Should we print a warning ?
+ SS_X_INCDIR="/usr/include"
+ fi
+ fi
+
+
+ if test -z "$SS_X_LIBDIR"; then
+ # Ops... X libs not found ?
+ SS_SAVE_LIBS="$LIBS"
+ SS_SAVE_CFLAGS="$CFLAGS"
+ SS_SAVE_CPPFLAGS="$CPPFLAGS"
+ SS_SAVE_CXXFLAGS="$CXXFLAGS"
+
+ CFLAGS="-I$SS_X_INCDIR"
+ CPPFLAGS="$CFLAGS"
+ CXXFLAGS="$CFLAGS"
+ LIBS="$SS_X_LIBLINK"
+ AC_TRY_LINK([
+ #include <X11/Xlib.h>
+ ],[
+ Display * d = XOpenDisplay(0);
+ XCloseDisplay(d);
+ ],
+ eval "ss_x_libdir_found=yes"
+ ,
+ eval "ss_x_libdir_found=no"
+ )
+ LIBS="$SS_SAVE_LIBS"
+ CFLAGS="$SS_SAVE_CFLAGS"
+ CPPFLAGS="$SS_SAVE_CPPFLAGS"
+ CXXFLAGS="$SS_SAVE_CXXFLAGS"
+
+ if test "$ss_x_libdir_found" = "no"; then
+ AC_SS_SET_REDINK
+ echo "################################################################################"
+ echo "### CONFIGURE ERROR:"
+ echo "### Can not find the X libraries."
+ echo "### Possible reasons:"
+ echo "### 1) You have no X server : KVIrc can't run on this system"
+ echo "###"
+ echo "### 2) Autoconf/Automake wasn't able to find the libraries"
+ echo "### for some ugly reason."
+ echo "###"
+ echo "### You might try looking for a file named libX11.so in your hard-drive"
+ echo "### and try passing the --x-libraries option to ./configure"
+ echo "### Remember that if you find libX11.so in /somepath/lib/libX11.so"
+ echo "### Then you must pass --x-libraries=/somepath/lib to ./configure"
+ echo "### For example, my libX11.so is in /usr/X11R6/lib/libX11.so"
+ echo "### then i would try: ./configure --x-libraries=/usr/X11R6/lib"
+ echo "### If you can't find libX11.so on your hard drive then install the X server"
+ echo "### package from your distribution."
+ echo "### If libX11.so is there and --x-libraries doesn't help, well , there is something"
+ echo "### wrong with X , autoconf or automake."
+ echo "### You may also take a look at the config.log file in this directory,"
+ echo "### that will tell you which checks have failed and maybe more about the"
+ echo "### reason of the failure."
+ echo "###"
+ echo "### If you use an environment that does not require X support such as Qt-Mac"
+ echo "### you may try to rerun configure with --disable-x-support"
+ echo "################################################################################"
+ AC_SS_SET_NORMALINK
+ AC_MSG_ERROR([This was a fatal one...aborting])
+ else
+ # We can link X programs without any additional path... use a dummy lib path then
+ # Should we print a warning ?
+ SS_X_LIBDIR="/usr/lib"
+ fi
+ fi
+
+ # Add any extra libs needed
+ SS_X_LDFLAGS=""
+
+ if test -n "$X_PRE_LIBS"; then
+ SS_X_LDFLAGS="$X_PRE_LIBS $SS_X_LDFLAGS"
+ fi
+
+ if test -n "$X_EXTRA_LIBS"; then
+ SS_X_LDFLAGS="$SS_X_LDFLAGS $X_EXTRA_LIBS"
+ fi
+
+ if test -n "$X_LIBS"; then
+ SS_X_LDFLAGS="$SS_X_LDFLAGS $X_LIBS"
+ fi
+
+ # Add any extra gcc flags
+ SS_X_CPPFLAGS=$X_CFLAGS
+ fi
+ fi
+])
+
+dnl ###################################################################################################################
+dnl ### QT
+dnl ###################################################################################################################
+
+AC_DEFUN([AC_SS_FIND_QT],
+[
+ AC_ARG_ENABLE(qt-check,
+ AC_HELP_STRING([--disable-qt-check],[Do not check if Qt and X compile]),
+ SS_CHECK_QTX_COMPILE="$withval",SS_CHECK_QTX_COMPILE="NOTGIVEN")
+
+ AC_ARG_ENABLE(qt4,
+ AC_HELP_STRING([--enable-qt4],[Enable WORK IN PROGRESS Qt4 support]),
+ SS_USE_QT4="$withval",SS_USE_QT4="no")
+
+ if test "$SS_USE_QT4" = "no"; then
+
+ AC_SS_FIND_QT3_NAME
+ AC_SS_FIND_QT3_GENERAL_DIR
+ AC_SS_FIND_QT3_LIBRARY_DIR
+ AC_SS_FIND_QT3_INCLUDE_DIR
+ AC_SS_FIND_QT3_MOC
+ AC_SS_FIND_QT3_MT
+
+ if test "$SS_CHECK_QTX_COMPILE" = "NOTGIVEN"; then
+ AC_SS_ENSURE_CAN_COMPILE_X_AND_QT3
+ fi
+ else
+
+ AC_SS_FIND_QT4_GENERAL_DIR
+ AC_SS_FIND_QT4_LIBRARY_DIR
+ AC_SS_FIND_QT4_INCLUDE_DIR
+ AC_SS_FIND_QT4_MOC
+
+
+ if test "$SS_CHECK_QTX_COMPILE" = "NOTGIVEN"; then
+ AC_SS_ENSURE_CAN_COMPILE_X_AND_QT4
+ fi
+
+ fi
+])
+
+AC_DEFUN([AC_SS_FIND_QT3_NAME],
+[
+ AC_MSG_CHECKING([for the Qt library name])
+ AC_ARG_WITH(qt-name,[ --with-qt-name=NAME Use NAME instead of \"qt\" as Qt library name],SS_QTLIB_NAME="$withval",SS_QTLIB_NAME="qt")
+ AC_MSG_RESULT("$SS_QTLIB_NAME")
+])
+
+AC_DEFUN([AC_SS_FIND_QT3_GENERAL_DIR],
+[
+ AC_MSG_CHECKING([for the general Qt3.x directory])
+
+ ss_qt_general_test_dirs="/usr/local /usr /usr/X11R6 /usr/lib /opt /opt/kde /kde /usr/kde /usr/build /usr/src /usr/local/lib /"
+ ss_qt_general_test_dirs="$ss_qt_general_test_dirs /usr/local/kde /usr/opt/kde"
+
+ if test -n "$HOME"; then
+ ss_qt_general_test_dirs="$ss_qt_general_test_dirs $HOME $HOME/lib"
+ fi
+
+ if test -n "$QTDIR"; then
+ ss_qt_general_test_dirs="$QTDIR $ss_qt_general_test_dirs"
+ fi
+
+ ss_qt_general_test_path_suffix="qt$SS_QT3_MAJOR_VERSION_REQUIRED.$SS_QT3_MINOR_VERSION_REQUIRED.$SS_QT3_PATCH_LEVEL_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt.$SS_QT3_MAJOR_VERSION_REQUIRED.$SS_QT3_MINOR_VERSION_REQUIRED.$SS_QT3_PATCH_LEVEL_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt.$SS_QT3_MAJOR_VERSION_REQUIRED$SS_QT3_MINOR_VERSION_REQUIRED$SS_QT3_PATCH_LEVEL_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt-$SS_QT3_MAJOR_VERSION_REQUIRED.$SS_QT3_MINOR_VERSION_REQUIRED.$SS_QT3_PATCH_LEVEL_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt-$SS_QT3_MAJOR_VERSION_REQUIRED$SS_QT3_MINOR_VERSION_REQUIRED$SS_QT3_PATCH_LEVEL_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt$SS_QT3_MAJOR_VERSION_REQUIRED.$SS_QT3_MINOR_VERSION_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt.$SS_QT3_MAJOR_VERSION_REQUIRED.$SS_QT3_MINOR_VERSION_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt.$SS_QT3_MAJOR_VERSION_REQUIRED$SS_QT3_MINOR_VERSION_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt-$SS_QT3_MAJOR_VERSION_REQUIRED.$SS_QT3_MINOR_VERSION_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt-$SS_QT3_MAJOR_VERSION_REQUIRED$SS_QT3_MINOR_VERSION_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt$SS_QT3_MAJOR_VERSION_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt.$SS_QT3_MAJOR_VERSION_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt-$SS_QT3_MAJOR_VERSION_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix lib"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt ."
+
+ AC_SS_FIND_FILE_PATH_EXT($SS_QT3_GENERAL_FILE_TO_SEARCH,$ss_qt_general_test_dirs,$ss_qt_general_test_path_suffix,SS_QT3_GENERAL_DIR)
+ if test "$SS_QT3_GENERAL_DIR" = "FAILED"; then
+ AC_MSG_RESULT([failed...continuing with normal checks])
+ unset SS_QT3_GENERAL_DIR
+ else
+ AC_MSG_RESULT([Seems to be $SS_QT3_GENERAL_DIR])
+ fi
+])
+
+AC_DEFUN([AC_SS_FIND_QT4_GENERAL_DIR],
+[
+ AC_MSG_CHECKING([for the general Qt4.x directory])
+
+ ss_qt_general_test_dirs="/usr/local /usr /usr/X11R6 /usr/lib /opt /opt/kde /kde /usr/kde /usr/build /usr/src /usr/local/lib /"
+ ss_qt_general_test_dirs="$ss_qt_general_test_dirs /usr/local/kde /usr/opt/kde /usr/lib/qt4 /usr/local/lib/qt4"
+
+ if test -n "$HOME"; then
+ ss_qt_general_test_dirs="$ss_qt_general_test_dirs $HOME $HOME/lib"
+ fi
+
+ if test -n "$QTDIR"; then
+ ss_qt_general_test_dirs="$QTDIR $ss_qt_general_test_dirs"
+ fi
+
+ ss_qt_general_test_path_suffix="qt$SS_QT4_MAJOR_VERSION_REQUIRED.$SS_QT4_MINOR_VERSION_REQUIRED.$SS_QT4_PATCH_LEVEL_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt.$SS_QT4_MAJOR_VERSION_REQUIRED.$SS_QT4_MINOR_VERSION_REQUIRED.$SS_QT4_PATCH_LEVEL_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt.$SS_QT4_MAJOR_VERSION_REQUIRED$SS_QT4_MINOR_VERSION_REQUIRED$SS_QT4_PATCH_LEVEL_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt-$SS_QT4_MAJOR_VERSION_REQUIRED.$SS_QT4_MINOR_VERSION_REQUIRED.$SS_QT4_PATCH_LEVEL_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt-$SS_QT4_MAJOR_VERSION_REQUIRED$SS_QT4_MINOR_VERSION_REQUIRED$SS_QT4_PATCH_LEVEL_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt$SS_QT4_MAJOR_VERSION_REQUIRED.$SS_QT4_MINOR_VERSION_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt.$SS_QT4_MAJOR_VERSION_REQUIRED.$SS_QT4_MINOR_VERSION_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt.$SS_QT4_MAJOR_VERSION_REQUIRED$SS_QT4_MINOR_VERSION_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt-$SS_QT4_MAJOR_VERSION_REQUIRED.$SS_QT4_MINOR_VERSION_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt-$SS_QT4_MAJOR_VERSION_REQUIRED$SS_QT4_MINOR_VERSION_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt$SS_QT4_MAJOR_VERSION_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt.$SS_QT4_MAJOR_VERSION_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt-$SS_QT4_MAJOR_VERSION_REQUIRED"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix lib"
+ ss_qt_general_test_path_suffix="$ss_qt_general_test_path_suffix qt ."
+
+ AC_SS_FIND_FILE_PATH_EXT($SS_QT4_GENERAL_FILE_TO_SEARCH,$ss_qt_general_test_dirs,$ss_qt_general_test_path_suffix,SS_QT4_GENERAL_DIR)
+ if test "$SS_QT4_GENERAL_DIR" = "FAILED"; then
+ AC_MSG_RESULT([failed...continuing with normal checks])
+ unset SS_QT4_GENERAL_DIR
+ else
+ AC_MSG_RESULT([Seems to be $SS_QT4_GENERAL_DIR])
+ fi
+])
+
+
+AC_DEFUN([AC_SS_FIND_QT3_INCLUDE_DIR],
+[
+ AC_ARG_WITH(qt-include-dir,[ --with-qt-include-dir path to the Qt 3.x headers ],SS_QT3_INCDIR="$withval",SS_QT3_INCDIR="NOTGIVEN")
+ if test "$SS_QT3_INCDIR" = "NOTGIVEN"; then
+
+ AC_MSG_CHECKING([for the Qt 3.x header files])
+
+ ss_qt_include_test_dirs="$SS_QT3_GENERAL_DIR/include /include /usr/include /usr/local/include /usr/qt/include /usr/local/qt/include /usr/X11R6/include /usr/lib/qt/include /usr/lib/qt /usr/include/X11"
+ test -n "$QTDIR" && ss_qt_include_test_dirs="$QTDIR/include $QTDIR $ss_qt_include_test_dirs"
+ ss_qt_include_test_dirs="$ss_qt_include_test_dirs /usr/include/qt /usr/include/qt3 /usr/local/include/qt /include/qt /usr/X11R6/include/qt /usr/build/qt/include"
+ ss_qt_include_test_dirs="$ss_qt_include_test_dirs /usr/include/qt$SS_QT3_MAJOR_VERSION_REQUIRED /usr/include/qt-$SS_QT3_MAJOR_VERSION_REQUIRED /usr/local/include/qt$SS_QT3_MAJOR_VERSION_REQUIRED"
+ ss_qt_include_test_dirs="$ss_qt_include_test_dirs /include/qt$SS_QT3_MAJOR_VERSION_REQUIRED /usr/X11R6/include/qt$SS_QT3_MAJOR_VERSION_REQUIRED"
+ ss_qt_include_test_dirs="$ss_qt_include_test_dirs /usr/include/X11/qt$SS_QT3_MAJOR_VERSION_REQUIRED /opt/qt /opt/kde/qt"
+
+ AC_SS_FIND_FILE_PATH($SS_QT3_INCLUDE_FILE_TO_SEARCH,$ss_qt_include_test_dirs,SS_QT3_INCDIR)
+
+ if test "$SS_QT3_INCDIR" = "FAILED"; then
+ AC_MSG_RESULT([FAILED])
+ AC_SS_SET_REDINK
+ echo "################################################################################"
+ echo "### CONFIGURE ERROR:"
+ echo "### Can not find the qt 3.x header files."
+ echo "### Make sure that qt is correctly installed on your system,"
+ echo "### and the qt version is the one requested by this version of kvirc."
+ echo "### Try to run configure again, this time passing the --with-qt-include-dir"
+ echo "### option (see ./configure --help)."
+ echo "### You may also take a look at the config.log file in this directory,"
+ echo "### that will tell you which check has failed and maybe more about the reason"
+ echo "### of the failure."
+ echo "### If you're feeling that this may be a bug in this configure script"
+ echo "### and want to report this to me , please include your configure script,"
+ echo "### the config.log file as well as the complete configure output."
+ echo "################################################################################"
+ AC_SS_SET_NORMALINK
+ AC_MSG_ERROR([This was a fatal one...aborting])
+ else
+ AC_MSG_RESULT([found in $SS_QT3_INCDIR])
+ fi
+
+ else
+ AC_MSG_RESULT([using user supplied path for the Qt 3.x include files $SS_QT3_INCDIR])
+ fi
+])
+
+
+AC_DEFUN([AC_SS_FIND_QT4_INCLUDE_DIR],
+[
+ AC_ARG_WITH(qt4-include-dir,[ --with-qt4-include-dir path to the Qt 4.x headers ],SS_QT4_INCDIR="$withval",SS_QT4_INCDIR="NOTGIVEN")
+ if test "$SS_QT4_INCDIR" = "NOTGIVEN"; then
+
+ AC_MSG_CHECKING([for the Qt 4.x header files])
+
+ ss_qt_include_test_dirs="$SS_QT4_GENERAL_DIR/include /include /usr/include /usr/local/include /usr/qt/include /usr/include/qt4 /usr/qt4/include /usr/local/qt/include /usr/X11R6/include /usr/lib/qt/include /usr/lib/qt /usr/include/X11"
+ test -n "$QTDIR" && ss_qt_include_test_dirs="$QTDIR/include $QTDIR $ss_qt_include_test_dirs"
+ ss_qt_include_test_dirs="$ss_qt_include_test_dirs /usr/include/qt /usr/include/qt4 /usr/local/include/qt /include/qt /usr/X11R6/include/qt /usr/build/qt/include"
+ ss_qt_include_test_dirs="$ss_qt_include_test_dirs /usr/include/qt$SS_QT4_MAJOR_VERSION_REQUIRED /usr/include/qt-$SS_QT4_MAJOR_VERSION_REQUIRED /usr/local/include/qt$SS_QT4_MAJOR_VERSION_REQUIRED"
+ ss_qt_include_test_dirs="$ss_qt_include_test_dirs /include/qt$SS_QT4_MAJOR_VERSION_REQUIRED /usr/X11R6/include/qt$SS_QT4_MAJOR_VERSION_REQUIRED"
+ ss_qt_include_test_dirs="$ss_qt_include_test_dirs /usr/include/X11/qt$SS_QT4_MAJOR_VERSION_REQUIRED /opt/qt /opt/kde/qt"
+
+ AC_SS_FIND_FILE_PATH($SS_QT4_INCLUDE_FILE_TO_SEARCH,$ss_qt_include_test_dirs,SS_QT4_INCDIR)
+
+ if test "$SS_QT4_INCDIR" = "FAILED"; then
+ AC_MSG_RESULT([FAILED])
+ AC_SS_SET_REDINK
+ echo "################################################################################"
+ echo "### CONFIGURE ERROR:"
+ echo "### Can not find the qt 4.x header files."
+ echo "### Make sure that qt is correctly installed on your system,"
+ echo "### and the qt version is the one requested by this version of kvirc."
+ echo "### Try to run configure again, this time passing the --with-qt4-include-dir"
+ echo "### option (see ./configure --help)."
+ echo "### You may also take a look at the config.log file in this directory,"
+ echo "### that will tell you which check has failed and maybe more about the reason"
+ echo "### of the failure."
+ echo "### If you're feeling that this may be a bug in this configure script"
+ echo "### and want to report this to me , please include your configure script,"
+ echo "### the config.log file as well as the complete configure output."
+ echo "################################################################################"
+ AC_SS_SET_NORMALINK
+ AC_MSG_ERROR([This was a fatal one...aborting])
+ else
+ AC_MSG_RESULT([found in $SS_QT4_INCDIR])
+ fi
+
+ else
+ AC_MSG_RESULT([using user supplied path for the Qt 4.x include files $SS_QT4_INCDIR])
+ fi
+
+ SS_QT4_INCDIRECTORIES="-I$SS_QT4_INCDIR -I$SS_QT4_INCDIR/Qt/ -I$SS_QT4_INCDIR/QtCore/ -I$SS_QT4_INCDIR/QtGui/";
+])
+
+
+AC_DEFUN([AC_SS_FIND_QT3_LIBRARY_DIR],
+[
+ AC_ARG_WITH(qt-library-dir,[ --with-qt-library-dir path to the Qt 3.x library ],SS_QT3_LIBDIR="$withval",SS_QT3_LIBDIR="NOTGIVEN")
+ if test "$SS_QT3_LIBDIR" = "NOTGIVEN"; then
+ AC_MSG_CHECKING([for the Qt library])
+
+ ss_qt_library_test_dirs="$SS_QT3_GENERAL_DIR/lib /lib /usr/lib /usr/local/lib /usr/qt/lib /usr/local/qt/lib /usr/X11R6/lib /usr/lib/qt/lib /usr/lib/qt /usr/local/lib/qt/lib"
+ test -n "$QTDIR" && ss_qt_library_test_dirs="$QTDIR/lib $QTDIR $ss_qt_library_test_dirs"
+ ss_qt_library_test_dirs="$ss_qt_library_test_dirs /usr/local/lib/qt /usr/X11R6/lib/qt /usr/build/qt/lib /opt/lib /opt/qt/lib"
+
+ ss_qt_libs_to_find="lib$SS_QTLIB_NAME-mt.so.$SS_QT3_MAJOR_VERSION_REQUIRED.$SS_QT3_MINOR_VERSION_REQUIRED.$SS_QT3_PATCH_LEVEL_REQUIRED"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find lib$SS_QTLIB_NAME-mt.so.$SS_QT3_MAJOR_VERSION_REQUIRED.$SS_QT3_MINOR_VERSION_REQUIRED"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find lib$SS_QTLIB_NAME-mt.so.$SS_QT3_MAJOR_VERSION_REQUIRED"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find lib$SS_QTLIB_NAME-mt.so"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find lib$SS_QTLIB_NAME.so.$SS_QT3_MAJOR_VERSION_REQUIRED.$SS_QT3_MINOR_VERSION_REQUIRED.$SS_QT3_PATCH_LEVEL_REQUIRED"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find lib$SS_QTLIB_NAME.so.$SS_QT3_MAJOR_VERSION_REQUIRED.$SS_QT3_MINOR_VERSION_REQUIRED"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find lib$SS_QTLIB_NAME.so.$SS_QT3_MAJOR_VERSION_REQUIRED"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find lib$SS_QTLIB_NAME.so"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find lib$SS_QTLIB_NAME-mt.$SS_QT3_MAJOR_VERSION_REQUIRED.$SS_QT3_MINOR_VERSION_REQUIRED.$SS_QT3_PATCH_LEVEL_REQUIRED.dylib"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find lib$SS_QTLIB_NAME-mt.$SS_QT3_MAJOR_VERSION_REQUIRED.$SS_QT3_MINOR_VERSION_REQUIRED.dylib"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find lib$SS_QTLIB_NAME-mt.$SS_QT3_MAJOR_VERSION_REQUIRED.dylib"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find lib$SS_QTLIB_NAME-mt.dylib"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find lib$SS_QTLIB_NAME.$SS_QT3_MAJOR_VERSION_REQUIRED.$SS_QT3_MINOR_VERSION_REQUIRED.$SS_QT3_PATCH_LEVEL_REQUIRED.dylib"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find lib$SS_QTLIB_NAME.$SS_QT3_MAJOR_VERSION_REQUIRED.$SS_QT3_MINOR_VERSION_REQUIRED.dylib"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find lib$SS_QTLIB_NAME.$SS_QT3_MAJOR_VERSION_REQUIRED.dylib"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find lib$SS_QTLIB_NAME.dylib"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find lib$SS_QTLIB_NAME-mt.a"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find lib$SS_QTLIB_NAME.a"
+
+ AC_SS_FIND_FILE_PATH($ss_qt_libs_to_find,$ss_qt_library_test_dirs,SS_QT3_LIBDIR)
+
+ if test "$SS_QT3_LIBDIR" = "FAILED"; then
+ AC_MSG_RESULT([FAILED])
+ AC_SS_SET_REDINK
+ echo "################################################################################"
+ echo "### CONFIGURE ERROR:"
+ echo "### Can not find the qt 3.x library file."
+ echo "### Make sure that qt is correctly installed on your system,"
+ echo "### and the qt version is the one requested by this version of kvirc."
+ echo "### (Usually a greater version is OK too)"
+ echo "### Try to run configure again, this time passing the --with-qt-library-dir"
+ echo "### option (see ./configure --help)."
+ echo "### You may also take a look at the config.log file in this directory,"
+ echo "### that will tell you which check has failed and maybe more about the reason"
+ echo "### of the failure."
+ echo "### If you're feeling that this may be a bug in this configure script"
+ echo "### and want to report this to me , please include your configure script,"
+ echo "### the config.log file as well as the complete configure output."
+ echo "################################################################################"
+ AC_SS_SET_NORMALINK
+ AC_MSG_ERROR([This was a fatal one...aborting])
+ else
+ AC_MSG_RESULT([found in $SS_QT3_LIBDIR])
+ fi
+ else
+ AC_MSG_RESULT([using user supplied path for the Qt library $SS_QT3_LIBDIR])
+ fi
+])
+
+
+AC_DEFUN([AC_SS_FIND_QT4_LIBRARY_DIR],
+[
+ AC_ARG_WITH(qt4-library-dir,[ --with-qt4-library-dir path to the Qt 4.x library ],SS_QT4_LIBDIR="$withval",SS_QT4_LIBDIR="NOTGIVEN")
+ if test "$SS_QT4_LIBDIR" = "NOTGIVEN"; then
+ AC_MSG_CHECKING([for the Qt 4.x libraries])
+
+ ss_qt_library_test_dirs="$SS_QT4_GENERAL_DIR/lib /lib /usr/lib /usr/local/lib /usr/qt/lib /usr/local/qt/lib /usr/X11R6/lib /usr/lib/qt/lib /usr/lib/qt /usr/local/lib/qt/lib"
+ test -n "$QTDIR" && ss_qt_library_test_dirs="$QTDIR/lib $QTDIR $ss_qt_library_test_dirs"
+ ss_qt_library_test_dirs="$ss_qt_library_test_dirs /usr/local/lib/qt /usr/X11R6/lib/qt /usr/build/qt/lib /opt/lib /opt/qt/lib"
+ ss_qt_library_test_dirs="$ss_qt_library_test_dirs /usr/lib/qt4 /usr/local/lib/qt4 /usr/X11R6/lib/qt4"
+ ss_qt_library_test_dirs="$ss_qt_library_test_dirs /usr/build/qt4/lib /opt/qt4/lib"
+
+ ss_qt_libs_to_find="libQtCore.so.$SS_QT4_MAJOR_VERSION_REQUIRED.$SS_QT4_MINOR_VERSION_REQUIRED.$SS_QT4_PATCH_LEVEL_REQUIRED"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find libQtCore.so.$SS_QT4_MAJOR_VERSION_REQUIRED.$SS_QT4_MINOR_VERSION_REQUIRED"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find libQtCore.so.$SS_QT4_MAJOR_VERSION_REQUIRED"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find libQtCore.so"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find libQtCore.so.$SS_QT4_MAJOR_VERSION_REQUIRED.$SS_QT4_MINOR_VERSION_REQUIRED.dylib"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find libQtCore.so.$SS_QT4_MAJOR_VERSION_REQUIRED.dylib"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find libQtCore.so.dylib"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find libQtCore.so.a"
+
+ AC_SS_FIND_FILE_PATH($ss_qt_libs_to_find,$ss_qt_library_test_dirs,SS_QT4_LIBDIR)
+
+ if test "$SS_QT4_LIBDIR" = "FAILED"; then
+ AC_MSG_RESULT([FAILED])
+ AC_SS_SET_REDINK
+ echo "################################################################################"
+ echo "### CONFIGURE ERROR:"
+ echo "### Can not find the qt 4.x library files."
+ echo "### Make sure that qt is correctly installed on your system,"
+ echo "### and the qt version is the one requested by this version of kvirc."
+ echo "### (Usually a greater version is OK too)"
+ echo "### Try to run configure again, this time passing the --with-qt4-library-dir"
+ echo "### option (see ./configure --help)."
+ echo "### You may also take a look at the config.log file in this directory,"
+ echo "### that will tell you which check has failed and maybe more about the reason"
+ echo "### of the failure."
+ echo "### If you're feeling that this may be a bug in this configure script"
+ echo "### and want to report this to me , please include your configure script,"
+ echo "### the config.log file as well as the complete configure output."
+ echo "################################################################################"
+ AC_SS_SET_NORMALINK
+ AC_MSG_ERROR([This was a fatal one...aborting])
+ else
+ AC_MSG_RESULT([found in $SS_QT4_LIBDIR])
+ fi
+ else
+ AC_MSG_RESULT([using user supplied path for the Qt 4.x library $SS_QT4_LIBDIR])
+ fi
+])
+
+
+AC_DEFUN([AC_SS_FIND_QT3_MOC],
+[
+ AC_ARG_WITH(qt-moc,[ --with-qt-moc filename of the Qt 3.x meta object compiler ],SS_QT3_MOC="$withval",SS_QT3_MOC="NOTGIVEN")
+
+ if test "$SS_QT3_MOC" = "NOTGIVEN"; then
+ AC_MSG_CHECKING([for the Qt 3.x moc])
+
+ unset SS_QT3_MOC
+ ss_moc_test_dirs="$QTDIR/bin $PATH /usr/bin /bin /usr/local/bin /usr/X11R6/bin /usr/lib/qt/bin /usr/local/qt/bin /usr/X11R6/qt/bin /usr/qt/bin /usr/build/qt/bin"
+ if test -n "$SS_QT3_GENERAL_DIR"; then
+ ss_moc_test_dirs="$SS_QT3_GENERAL_DIR/bin $ss_moc_test_dirs"
+ fi
+
+ AC_SS_FIND_FILE_PATH(moc,$ss_moc_test_dirs,SS_QT3_MOC)
+
+ if test "$SS_QT3_MOC" = "FAILED"; then
+ AC_MSG_RESULT([FAILED])
+ AC_SS_SET_REDINK
+ echo "################################################################################"
+ echo "### CONFIGURE ERROR:"
+ echo "### The Qt meta object compiler can not be found."
+ echo "### Make sure that qt is correctly installed on your system, it is on your path,"
+ echo "### and the qt version is the one requested by this version of kvirc."
+ echo "### Try to run configure again, this time passing the --with-qt-moc"
+ echo "### option (see ./configure --help)."
+ echo "### You may also take a look at the config.log file in this directory,"
+ echo "### that will tell you which check has failed and maybe more about the reason"
+ echo "### of the failure."
+ echo "### If you're feeling that this may be a bug in this configure script"
+ echo "### and want to report this to me , please include your configure script,"
+ echo "### the config.log file as well as the complete configure output."
+ echo "################################################################################"
+ AC_SS_SET_NORMALINK
+ AC_MSG_ERROR([This was a fatal one...aborting])
+ else
+ SS_QT3_MOC="$SS_QT3_MOC/moc"
+ AC_MSG_RESULT([found as $SS_QT3_MOC])
+ fi
+ else
+ AC_MSG_RESULT([trusting you: using $SS_QT3_MOC])
+ fi
+])
+
+
+AC_DEFUN([AC_SS_FIND_QT4_MOC],
+[
+ AC_ARG_WITH(qt4-moc,[ --with-qt4-moc filename of the Qt 4.x meta object compiler ],SS_QT4_MOC="$withval",SS_QT4_MOC="NOTGIVEN")
+
+ if test "$SS_QT4_MOC" = "NOTGIVEN"; then
+ AC_MSG_CHECKING([for the Qt 4.x moc])
+
+ unset SS_QT4_MOC
+ ss_moc_test_dirs="$QTDIR/bin $PATH /usr/bin /bin /usr/local/bin /usr/X11R6/bin /usr/lib/qt/bin /usr/local/qt/bin /usr/X11R6/qt/bin /usr/qt/bin /usr/build/qt/bin"
+ if test -n "$SS_QT4_GENERAL_DIR"; then
+ ss_moc_test_dirs="$SS_QT4_GENERAL_DIR/bin $ss_moc_test_dirs"
+ fi
+
+ AC_SS_FIND_FILE_PATH(moc,$ss_moc_test_dirs,SS_QT4_MOC)
+
+ if test "$SS_QT4_MOC" = "FAILED"; then
+ AC_MSG_RESULT([FAILED])
+ AC_SS_SET_REDINK
+ echo "################################################################################"
+ echo "### CONFIGURE ERROR:"
+ echo "### The Qt 4.x meta object compiler can not be found."
+ echo "### Make sure that qt is correctly installed on your system, it is on your path,"
+ echo "### and the qt version is the one requested by this version of kvirc."
+ echo "### In particular you should make sure that the moc compiler is NOT the one"
+ echo "### shipped with Qt 3.x."
+ echo "### Try to run configure again, this time passing the --with-qt4-moc"
+ echo "### option (see ./configure --help)."
+ echo "### You may also take a look at the config.log file in this directory,"
+ echo "### that will tell you which check has failed and maybe more about the reason"
+ echo "### of the failure."
+ echo "### If you're feeling that this may be a bug in this configure script"
+ echo "### and want to report this to me , please include your configure script,"
+ echo "### the config.log file as well as the complete configure output."
+ echo "################################################################################"
+ AC_SS_SET_NORMALINK
+ AC_MSG_ERROR([This was a fatal one...aborting])
+ else
+ SS_QT4_MOC="$SS_QT4_MOC/moc"
+ AC_MSG_RESULT([found as $SS_QT4_MOC])
+ fi
+ else
+ AC_MSG_RESULT([trusting you: using $SS_QT4_MOC])
+ fi
+])
+
+
+AC_DEFUN([AC_SS_FIND_QT3_MT],
+[
+ AC_ARG_ENABLE(qt-mt,[ --disable-qt-mt ignore the threaded version of Qt],SS_QT3_NOMT="$withval",SS_QT3_NOMT="NOTGIVEN")
+
+ AC_MSG_CHECKING([for the multithreaded version of Qt])
+
+ if test "$SS_QT3_NOMT" = "NOTGIVEN"; then
+ ss_qt_libs_to_find="lib$SS_QTLIB_NAME-mt.so.$SS_QT3_MAJOR_VERSION_REQUIRED.$SS_QT3_MINOR_VERSION_REQUIRED.$SS_QT3_PATCH_LEVEL_REQUIRED"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find lib$SS_QTLIB_NAME-mt.so.$SS_QT3_MAJOR_VERSION_REQUIRED.$SS_QT3_MINOR_VERSION_REQUIRED"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find lib$SS_QTLIB_NAME-mt.so.$SS_QT3_MAJOR_VERSION_REQUIRED"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find lib$SS_QTLIB_NAME-mt.so"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find lib$SS_QTLIB_NAME-mt.$SS_QT3_MAJOR_VERSION_REQUIRED.$SS_QT3_MINOR_VERSION_REQUIRED.$SS_QT3_PATCH_LEVEL_REQUIRED.dylib"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find lib$SS_QTLIB_NAME-mt.$SS_QT3_MAJOR_VERSION_REQUIRED.$SS_QT3_MINOR_VERSION_REQUIRED.dylib"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find lib$SS_QTLIB_NAME-mt.$SS_QT3_MAJOR_VERSION_REQUIRED.dylib"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find lib$SS_QTLIB_NAME-mt.dylib"
+ ss_qt_libs_to_find="$ss_qt_libs_to_find lib$SS_QTLIB_NAME-mt.a"
+
+ AC_SS_FIND_FILE_PATH($ss_qt_libs_to_find,$SS_QT3_LIBDIR,SS_QTMTLIBDIR)
+ if test "$SS_QTMTLIBDIR" = "FAILED"; then
+ AC_MSG_RESULT([not found])
+ else
+ AC_MSG_RESULT([seems to be available])
+ SS_QTLIB_NAME="$SS_QTLIB_NAME-mt"
+ fi
+ else
+ AC_MSG_RESULT([disabled by user])
+ fi
+])
+
+AC_DEFUN([AC_SS_ENSURE_CAN_COMPILE_X_AND_QT3],
+[
+
+ AC_MSG_CHECKING([if we can compile an X-Qt 3.x application])
+ AC_LANG_CPLUSPLUS
+ ss_save_CPPFLAGS="$CPPFLAGS"
+ ss_save_CXXFLAGS="$CXXFLAGS"
+ ss_save_LDFLAGS="$LDFLAGS"
+ ss_save_LIBS="$LIBS"
+ if test -n "$SS_X_INCDIR"; then
+ CPPFLAGS="-I$SS_X_INCDIR"
+ else
+ CPPFLAGS=""
+ fi
+ CPPFLAGS="$CPPFLAGS -I$SS_QT3_INCDIR"
+ CXXFLAGS="-O2 -Wall $CXXFLAGS"
+ if test -n "$SS_X_LIBDIR"; then
+ LIBS="-L$SS_X_LIBDIR"
+ else
+ LIBS=""
+ fi
+ LIBS="$LIBS -L$SS_QT3_LIBDIR -l$SS_QTLIB_NAME"
+ if test -n "$SS_X_LDFLAGS"; then
+ LIBS="$LIBS $SS_X_LDFLAGS"
+ fi
+ if test -n "$SS_X_LIBLINK"; then
+ LIBS="$LIBS $SS_X_LIBLINK"
+ fi
+ LDFLAGS="-s $LDFLAGS"
+ AC_TRY_LINK([
+ #include <qglobal.h>
+ #if (QT_VERSION < 221)
+ #error "Bad qt version: too old"
+ #endif
+ ],[return 0; ],SS_QTX_LINKED_OK="TRUE",SS_QTX_LINKED_OK="FALSE")
+ if test "$SS_QTX_LINKED_OK" = "FALSE"; then
+ AC_MSG_RESULT([FAILED]);
+ AC_SS_SET_REDINK
+ echo "################################################################################"
+ echo "### CONFIGURE ERROR:"
+ echo "### Failed to compile the Qt library test program."
+ echo "### This may be a bad sign :)"
+ echo "### First of all, make sure that qt is correctly installed on your system,"
+ echo "### and the qt version is the one requested by this version of kvirc."
+ echo "### Ensure that you have only one copy of qt visible at a time."
+ echo "### You may also take a look at the config.log file in this directory,"
+ echo "### that will tell you which check has failed and maybe more about the reason"
+ echo "### of the failure."
+ echo "### The CPPFLAGS used were:"
+ for a_flag in $CPPFLAGS ; do
+ echo "### $a_flag"
+ done
+ echo "### The CXXFLAGS used were:"
+ for a_flag in $CXXFLAGS ; do
+ echo "### $a_flag"
+ done
+ echo "### The LIBS used were:"
+ for a_flag in $LIBS ; do
+ echo "### $a_flag"
+ done
+ echo "### The LDFLAGS used were:"
+ for a_flag in $LDFLAGS ; do
+ echo "### $a_flag"
+ done
+ echo "### If you're sure that qt is correctly installed , you may force configure"
+ echo "### to skip this check and try to compile kvirc anyway."
+ echo "### Try using the --without-qt-check option."
+ echo "### If you're feeling that this may be a bug in this configure script"
+ echo "### and want to report this to me , please include your configure script,"
+ echo "### the config.log file as well as the complete configure output."
+ echo "################################################################################"
+ AC_SS_SET_NORMALINK
+ AC_MSG_ERROR([This was a fatal one...aborting])
+ fi
+ LIBS="$ss_save_LIBS"
+ LDFLAGS="$ss_save_LDFLAGS"
+ CXXFLAGS="$ss_save_CXXFLAGS"
+ CPPFLAGS="$ss_save_CPPFLAGS"
+ AC_MSG_RESULT([success])
+])
+
+
+AC_DEFUN([AC_SS_ENSURE_CAN_COMPILE_X_AND_QT4],
+[
+
+ AC_MSG_CHECKING([if we can compile an X-Qt 4.x application])
+ AC_LANG_CPLUSPLUS
+ ss_save_CPPFLAGS="$CPPFLAGS"
+ ss_save_CXXFLAGS="$CXXFLAGS"
+ ss_save_LDFLAGS="$LDFLAGS"
+ ss_save_LIBS="$LIBS"
+ if test -n "$SS_X_INCDIR"; then
+ CPPFLAGS="-I$SS_X_INCDIR"
+ else
+ CPPFLAGS=""
+ fi
+ CPPFLAGS="$CPPFLAGS $SS_QT4_INCDIRECTORIES"
+ CXXFLAGS="-O2 -Wall $CXXFLAGS"
+ if test -n "$SS_X_LIBDIR"; then
+ LIBS="-L$SS_X_LIBDIR"
+ else
+ LIBS=""
+ fi
+ LIBS="$LIBS -L$SS_QT4_LIBDIR -lQtCore"
+ if test -n "$SS_X_LDFLAGS"; then
+ LIBS="$LIBS $SS_X_LDFLAGS"
+ fi
+ if test -n "$SS_X_LIBLINK"; then
+ LIBS="$LIBS $SS_X_LIBLINK"
+ fi
+ LDFLAGS="-s $LDFLAGS"
+ AC_TRY_LINK([
+ #include <qglobal.h>
+ #if (QT_VERSION < 0x040000)
+ #error "Bad qt version: too old"
+ #endif
+ ],[return 0; ],SS_QTX_LINKED_OK="TRUE",SS_QTX_LINKED_OK="FALSE")
+ if test "$SS_QTX_LINKED_OK" = "FALSE"; then
+ AC_MSG_RESULT([FAILED]);
+ AC_SS_SET_REDINK
+ echo "################################################################################"
+ echo "### CONFIGURE ERROR:"
+ echo "### Failed to compile the Qt 4.x library test program."
+ echo "### This may be a bad sign :)"
+ echo "### First of all, make sure that qt is correctly installed on your system,"
+ echo "### and the qt version is the one requested by this version of kvirc."
+ echo "### Ensure that you have only one copy of qt visible at a time."
+ echo "### You may also take a look at the config.log file in this directory,"
+ echo "### that will tell you which check has failed and maybe more about the reason"
+ echo "### of the failure."
+ echo "### The CPPFLAGS used were:"
+ for a_flag in $CPPFLAGS ; do
+ echo "### $a_flag"
+ done
+ echo "### The CXXFLAGS used were:"
+ for a_flag in $CXXFLAGS ; do
+ echo "### $a_flag"
+ done
+ echo "### The LIBS used were:"
+ for a_flag in $LIBS ; do
+ echo "### $a_flag"
+ done
+ echo "### The LDFLAGS used were:"
+ for a_flag in $LDFLAGS ; do
+ echo "### $a_flag"
+ done
+ echo "### If you're sure that qt is correctly installed , you may force configure"
+ echo "### to skip this check and try to compile kvirc anyway."
+ echo "### Try using the --without-qt-check option."
+ echo "### If you're feeling that this may be a bug in this configure script"
+ echo "### and want to report this to me , please include your configure script,"
+ echo "### the config.log file as well as the complete configure output."
+ echo "################################################################################"
+ AC_SS_SET_NORMALINK
+ AC_MSG_ERROR([This was a fatal one...aborting])
+ fi
+ LIBS="$ss_save_LIBS"
+ LDFLAGS="$ss_save_LDFLAGS"
+ CXXFLAGS="$ss_save_CXXFLAGS"
+ CPPFLAGS="$ss_save_CPPFLAGS"
+ AC_MSG_RESULT([success])
+])
+
+
+dnl ###################################################################################################################
+dnl ### KDE
+dnl ###################################################################################################################
+
+AC_DEFUN([AC_SS_FIND_KDE],
+[
+ AC_SS_CHECK_IF_KDE_IS_REQUESTED
+ if test "$SS_KDE_REQUESTED" = "yes"; then
+ AC_SS_FIND_KDE_GENERAL_DIR
+ if test "$SS_KDE_REQUESTED" = "yes"; then
+ AC_SS_FIND_KDE_SERVICES_DIR
+ AC_SS_FIND_KDE_LIBRARY_DIR
+ if test "$SS_KDE_REQUESTED" = "yes"; then
+ AC_SS_FIND_KDE_INCLUDE_DIR
+ if test "$SS_KDE_REQUESTED" = "yes"; then
+ AC_SS_ENSURE_CAN_COMPILE_X_QT3_AND_KDE
+ fi
+ fi
+ fi
+ fi
+])
+
+AC_DEFUN([AC_SS_CHECK_IF_KDE_IS_REQUESTED],
+[
+ AC_MSG_CHECKING([if KDE support is requested])
+ if test "$SS_USE_QT4" = "no"; then
+ SS_KDE_REQUESTED="yes"
+ AC_ARG_WITH(kde-support,[ --without-kde-support Disable the KDE support even if it is detected ],SS_KDE_REQUESTED="$withval")
+ if test "$SS_KDE_REQUESTED" = "yes"; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ fi
+ else
+ SS_KDE_REQUESTED="no"
+ AC_MSG_RESULT([unsupported with qt 4.x])
+ fi
+])
+
+AC_DEFUN([AC_SS_FIND_KDE_GENERAL_DIR],
+[
+ AC_MSG_CHECKING([for the general KDE directory])
+ ss_kde_general_test_dirs="/usr /usr/local /usr /usr/local /usr/build /usr/X11R6 /opt /usr/opt /usr/lib /usr/lib /usr/src /usr/lib /usr/local/lib"
+ if test -n "$HOME"; then
+ ss_kde_general_test_dirs="$ss_kde_general_test_dirs $HOME $HOME/lib"
+ fi
+ if test -n "$KDEDIR"; then
+ ss_kde_general_test_dirs="$KDEDIR $ss_kde_general_test_dirs"
+ fi
+ ss_kde_general_test_path_suffix="kde kde3.0 kde3 KDE Kde KDE3 kde3 ."
+
+ AC_SS_FIND_FILE_PATH_EXT($SS_KDE_GENERAL_FILE_TO_SEARCH,$ss_kde_general_test_dirs,$ss_kde_general_test_path_suffix,SS_KDE_GENERAL_DIR)
+
+ if test "$SS_KDE_GENERAL_DIR" = "FAILED"; then
+ AC_MSG_RESULT([failed...continuing with normal checks])
+ unset SS_KDE_GENERAL_DIR
+ else
+ AC_MSG_RESULT([Seems to be $SS_KDE_GENERAL_DIR])
+ fi
+])
+
+
+AC_DEFUN([AC_SS_FIND_KDE_SERVICES_DIR],
+[
+ AC_ARG_WITH(kde-services-dir,[ --with-kde-services-dir path to the KDE protocol services dir ],SS_KDE_SERVICESDIR="$withval",SS_KDE_SERVICESDIR="NOTGIVEN")
+ if test "$SS_KDE_SERVICESDIR" = "NOTGIVEN"; then
+
+ AC_MSG_CHECKING([for KDE services directory])
+
+ ss_kde_services_test_dirs="/usr/share/services /usr/local/share/services /usr/kde/share/services /usr/local/kde/share/services /usr/X11R6/share/services /opt/kde/share/services /usr/lib/kde/share/services"
+ test -n "$KDEDIR" && ss_kde_services_test_dirs="$KDEDIR/share/services $ss_kde_services_test_dirs"
+ ss_kde_services_test_dirs="$ss_kde_services_test_dirs /usr/share/kde/services"
+ test -n "$SS_KDE_GENERAL_DIR" && ss_kde_services_test_dirs="$SS_KDE_GENERAL_DIR/share/services $ss_kde_services_test_dirs"
+
+ AC_SS_FIND_FILE_PATH("http.protocol",$ss_kde_services_test_dirs,SS_KDE_SERVICESDIR)
+
+ if test "$SS_KDE_SERVICESDIR" = "FAILED"; then
+ SS_KDE_SERVICESDIR=""
+ AC_MSG_RESULT([unknown])
+ else
+ AC_MSG_RESULT([found in $SS_KDE_SERVICESDIR])
+ fi
+
+ else
+ AC_MSG_RESULT([using user supplied path for the KDE services dir $SS_KDE_SERVICESDIR])
+ fi
+])
+
+
+AC_DEFUN([AC_SS_FIND_KDE_INCLUDE_DIR],
+[
+ AC_ARG_WITH(kde-include-dir,[ --with-kde-include-dir path to the KDE headers ],SS_KDE_INCDIR="$withval",SS_KDE_INCDIR="NOTGIVEN")
+ if test "$SS_KDE_INCDIR" = "NOTGIVEN"; then
+
+ AC_MSG_CHECKING([for KDE header files])
+
+ ss_kde_include_test_dirs="/include /usr/include /usr/local/include /usr/kde/include /usr/local/kde/include /usr/X11R6/include /opt/kde/include /usr/lib/kde/include /usr/lib/kde /usr/include/X11"
+ test -n "$KDEDIR" && ss_kde_include_test_dirs="$KDEDIR/include $KDEDIR $ss_kde_include_test_dirs"
+ ss_kde_include_test_dirs="$ss_kde_include_test_dirs /usr/include/kde /usr/local/include/kde /include/kde /usr/X11R6/include/kde /usr/build/kde/include"
+ ss_kde_include_test_dirs="$ss_kde_include_test_dirs /usr/include/kde2 /usr/local/include/kde2 /include/kde2 /usr/X11R6/include/kde2 /usr/include/X11/kde2"
+ test -n "$SS_KDE_GENERAL_DIR" && ss_kde_include_test_dirs="$SS_KDE_GENERAL_DIR/include $ss_kde_include_test_dirs"
+
+ AC_SS_FIND_FILE_PATH($SS_KDE_INCLUDE_FILE_TO_SEARCH,$ss_kde_include_test_dirs,SS_KDE_INCDIR)
+
+ if test "$SS_KDE_INCDIR" = "FAILED"; then
+ AC_MSG_RESULT("FAILED")
+ SS_KDE_REQUESTED="no"
+ SS_KDE_INCDIR=""
+ else
+ AC_MSG_RESULT([found in $SS_KDE_INCDIR])
+ fi
+
+ else
+ AC_MSG_RESULT([using user supplied path for the KDE include files $SS_KDE_INCDIR])
+ fi
+
+ if test -z "$SS_KDE_GENERAL_DIR"; then
+ # Set it.... we need it :)...
+ SS_KDE_GENERAL_DIR=`echo $SS_KDE_INCDIR | sed -e 's/\/include\$//'`
+ fi
+])
+
+AC_DEFUN([AC_SS_FIND_KDE_LIBRARY_DIR],
+[
+ AC_ARG_WITH(kde-library-dir,[ --with-kde-library-dir path to the KDE libraries ],SS_KDE_LIBDIR="$withval",SS_KDE_LIBDIR="NOTGIVEN")
+ if test "$SS_KDE_LIBDIR" = "NOTGIVEN"; then
+ AC_MSG_CHECKING([for the KDE libraries])
+
+ ss_kde_library_test_dirs="/lib /usr/lib /usr/local/lib /usr/kde/lib /opt/kde/lib /opt/lib /usr/opt/kde/lib /usr/local/kde/lib /usr/X11R6/lib /usr/lib/kde/lib /usr/lib/kde /usr/local/lib/kde/lib"
+ test -n "$KDEDIR" && ss_kde_library_test_dirs="$KDEDIR/lib $KDEDIR $ss_kde_library_test_dirs"
+ ss_kde_library_test_dirs="$ss_kde_library_test_dirs /usr/local/lib/kde /usr/X11R6/lib/kde /usr/build/kde/lib"
+ if test -n "$SS_KDE_GENERAL_DIR"; then
+ ss_kde_library_test_dirs="$SS_KDE_GENERAL_DIR/lib $ss_kde_library_test_dirs"
+ fi
+
+
+ AC_SS_FIND_FILE_PATH(libkdecore.so.6 libkdecore.so.5 libkdecore.so.4 libkdecore.so.3 libkdecore.so,$ss_kde_library_test_dirs,SS_KDE_LIBDIR)
+ if test "$SS_KDE_LIBDIR" = "FAILED"; then
+ AC_SS_FIND_FILE_PATH(libkdecore.so.8 libkdecore.so.7 libkdecore.so.4.0.0 libkdecore.so.4.1.0 libkdecore.so.4.2.0 ,$ss_kde_library_test_dirs,SS_KDE_LIBDIR)
+ if test "$SS_KDE_LIBDIR" = "FAILED"; then
+ # Try the senseless too
+ AC_SS_FIND_FILE_PATH(libkdecore.so.4.0.0 libkdecore.so.4.1.0 libkdecore.so.4.2.0 libkdecore.so.4.3.0,$ss_kde_library_test_dirs,SS_KDE_LIBDIR)
+ if test "$SS_KDE_LIBDIR" = "FAILED"; then
+ AC_SS_FIND_FILE_PATH(libkdecore.so.4.4.0 libkdecore.so.4.5.0 libkdecore.so.4.6.0 libkdecore.so.4.7.0 libkdecore.a,$ss_kde_library_test_dirs,SS_KDE_LIBDIR)
+ fi
+ fi
+ fi
+
+ if test "$SS_KDE_LIBDIR" = "FAILED"; then
+ AC_MSG_RESULT("FAILED")
+ SS_KDE_REQUESTED="no"
+ SS_KDE_LIBDIR=""
+ else
+ AC_MSG_RESULT([found in $SS_KDE_LIBDIR])
+ fi
+ else
+ AC_MSG_RESULT([using user supplied path for the KDE libraries $SS_KDE_LIBDIR])
+ fi
+
+ if test -z "$SS_KDE_GENERAL_DIR"; then
+ # Set it.... we need it :)...
+ SS_KDE_GENERAL_DIR=`echo $SS_KDE_LIBDIR | sed -e 's/\/lib\$//'`
+ fi
+])
+
+AC_DEFUN([AC_SS_ENSURE_CAN_COMPILE_X_QT3_AND_KDE],
+[
+ AC_ARG_WITH(kde-check,[ --without-kde-check Do not check if Qt,KDE and X compile ],SS_CHECK_QTX_COMPILE="$withval",SS_CHECK_KQTX_COMPILE="yes")
+ if test "$SS_CHECK_KQTX_COMPILE" = "yes"; then
+ AC_MSG_CHECKING(if we can compile an X-Qt-KDE application)
+ AC_LANG_CPLUSPLUS
+ ss_save_CPPFLAGS="$CPPFLAGS"
+ ss_save_CXXFLAGS="$CXXFLAGS"
+ ss_save_LDFLAGS="$LDFLAGS"
+ ss_save_LIBS="$LIBS"
+ if test -n "$SS_X_INCDIR"; then
+ CPPFLAGS="-I$SS_X_INCDIR"
+ else
+ CPPFLAGS=""
+ fi
+ CPPFLAGS="$CPPFLAGS -I$SS_X_INCDIR -I$SS_QT3_INCDIR -I$SS_KDE_INCDIR"
+ CXXFLAGS="-O2 -Wall $CXXFLAGS"
+ if test -n "$SS_X_LIBDIR"; then
+ LIBS="-L$SS_X_LIBDIR"
+ else
+ LIBS=""
+ fi
+ if test -n "$SS_X_LDFLAGS"; then
+ LIBS="$SS_X_LDFLAGS $LIBS"
+ fi
+ if test -n "$SS_X_LIBLINK"; then
+ LIBS="$LIBS $SS_X_LIBLINK"
+ fi
+ LIBS="-L$SS_KDE_LIBDIR -L$SS_QT3_LIBDIR -lkdecore -l$SS_QTLIB_NAME $LIBS"
+ if test "$SS_LINK_TO_LIBDL" = "yes"; then
+ LIBS="$LIBS -ldl";
+ fi
+ LDFLAGS="-s $LDFLAGS"
+ AC_TRY_LINK([
+ #include "kapp.h"
+ #include "kwin.h"
+ ],[
+ int a = KWin::currentDesktop();
+ KApplication app(a,0,"kvirc");
+ ],
+ SS_KQTX_LINKED_OK="TRUE",
+ SS_KQTX_LINKED_OK="FALSE"
+ )
+ if test "$SS_KQTX_LINKED_OK" = "FALSE"; then
+ AC_MSG_RESULT(failed)
+ AC_MSG_ERROR([This was a fatal one...aborting])
+ else
+ AC_MSG_RESULT(success)
+ fi
+ LIBS="$ss_save_LIBS"
+ LDFLAGS="$ss_save_LDFLAGS"
+ CXXFLAGS="$ss_save_CXXFLAGS"
+ CPPFLAGS="$ss_save_CPPFLAGS"
+ fi
+])
+
+
+
+
+
+
+AC_DEFUN([AC_SS_CHECK_OTHER_LIBS],
+[
+ SS_OTHER_LIBDIRS=""
+ SS_OTHER_LIBLINK=""
+ SS_OTHER_INCDIRS=""
+
+
+ AC_MSG_CHECKING([if you want to link to libresolv])
+ SS_DO_IT="false"
+ AC_ARG_WITH(libresolv, [ --with-libresolv Link to libresolv],SS_DO_IT="true")
+ if test "$SS_DO_IT" = "true"; then
+ AC_MSG_RESULT(yes)
+ SS_OTHER_LIBLINK="$SS_OTHER_LIBLINK -lresolv"
+ else
+ AC_MSG_RESULT(no)
+ fi
+
+ AC_MSG_CHECKING([if you want to link to libsocket])
+ SS_DO_IT="false"
+ AC_ARG_WITH(libsocket, [ --with-libsocket Link to libsocket],SS_DO_IT="true")
+ if test "$SS_DO_IT" = "true"; then
+ AC_MSG_RESULT(yes)
+ SS_OTHER_LIBLINK="$SS_OTHER_LIBLINK -lsocket"
+ else
+ AC_MSG_RESULT(no)
+ fi
+
+ AC_MSG_CHECKING([if you want to link to libnsl])
+ SS_DO_IT="false"
+ AC_ARG_WITH(libnsl, [ --with-libnsl Link to libnsl],SS_DO_IT="true")
+ if test "$SS_DO_IT" = "true"; then
+ AC_MSG_RESULT(yes)
+ SS_OTHER_LIBLINK="$SS_OTHER_LIBLINK -lnsl"
+ else
+ AC_MSG_RESULT(no)
+ fi
+
+ AC_MSG_CHECKING([if you want to link to libcompat])
+ SS_DO_IT="false"
+ AC_ARG_WITH(libnsl, [ --with-libcompat Link to libcompat],SS_DO_IT="true")
+ if test "$SS_DO_IT" = "true"; then
+ AC_MSG_RESULT(yes)
+ SS_OTHER_LIBLINK="$SS_OTHER_LIBLINK -lcompat"
+ else
+ AC_MSG_RESULT(no)
+ fi
+
+ AC_MSG_CHECKING([if you want to link to other libraries])
+ SS_DO_IT="false"
+ AC_ARG_WITH(other-libs, [ --with-other-libs=... Link to the specified libraries],SS_DO_IT="$withval")
+ if test "$SS_DO_IT" != "false"; then
+ AC_MSG_RESULT([yes])
+ SS_OTHER_LIBLINK="$SS_OTHER_LIBLINK $SS_DO_IT"
+ else
+ AC_MSG_RESULT([no])
+ fi
+
+ AC_MSG_CHECKING([if you want to add other library search paths])
+ SS_DO_IT="false"
+ AC_ARG_WITH(other-ldirs, [ --with-other-ldirs=... Add the specified library paths],SS_DO_IT="$withval")
+ if test "$SS_DO_IT" != "false"; then
+ AC_MSG_RESULT([yes])
+ SS_OTHER_LIBDIRS="$SS_OTHER_LIBDIRS $SS_DO_IT"
+ else
+ AC_MSG_RESULT([no])
+ fi
+
+ AC_MSG_CHECKING([if you want to add other include search paths])
+ SS_DO_IT="false"
+ AC_ARG_WITH(other-idirs, [ --with-other-idirs=... Add the specified include search paths],SS_DO_IT="$withval")
+ if test "$SS_DO_IT" != "false"; then
+ AC_MSG_RESULT([yes])
+ SS_OTHER_INCDIRS="$SS_OTHER_INCDIRS $SS_DO_IT"
+ else
+ AC_MSG_RESULT([no])
+ fi
+
+])
+
+
+
+AC_DEFUN([AC_SS_FINAL_CONFIG],
+[
+ AC_MSG_CHECKING([if we finally have to compile the IpV6 support])
+
+ if test "$SS_NOIPV6_SUPPORT" = "true"; then
+ AC_MSG_RESULT([no: disabled by user])
+ else
+ if test "$SS_HAVE_IPV6_FUNCTIONS" = "true"; then
+ AC_MSG_RESULT([yes])
+ AC_DEFINE([COMPILE_IPV6_SUPPORT], 1, [define if you want the IpV6 support])
+ SS_BUILD_FLAGS="i$SS_BUILD_FLAGS"
+ else
+ AC_MSG_RESULT([no: the system lacks support])
+ fi
+ fi
+
+ dnl # // Toplevel source directory
+
+ SS_TOPSRCDIR=`pwd`
+
+ AC_SUBST(SS_TOPSRCDIR)
+
+ SS_CPPFLAGS="-D_REENTRANT -DREENTRANT"
+ if test -n "$SS_X_CPPFLAGS"; then
+ SS_CPPFLAGS="$SS_CPPFLAGS $SS_X_CPPFLAGS"
+ fi
+
+ if test "$SS_USE_QT4" = "no"; then
+ SS_INCDIRS="-I$SS_QT3_INCDIR -I$SS_X_INCDIR"
+ else
+ AC_DEFINE([COMPILE_USE_QT4], 1, [define if you want to compile the Qt 4.x support])
+ SS_INCDIRS="$SS_QT4_INCDIRECTORIES -I$SS_X_INCDIR"
+ SS_CPPFLAGS="$SS_CPPFLAGS -DQT3_SUPPORT"
+ fi
+
+ if test -n "$SS_X_INCDIR"; then
+ SS_INCDIRS="$SS_INCDIRS -I$SS_X_INCDIR"
+ fi
+
+ if test -n "$SS_X_LDFLAGS"; then
+ SS_LDFLAGS="$SS_X_LDFLAGS"
+ else
+ SS_LDFLAGS=""
+ fi
+
+ if test "$SS_USE_QT4" = "no"; then
+ SS_RPATH="-rpath $SS_QT3_LIBDIR -rpath $libdir"
+ else
+ SS_RPATH="-rpath $SS_QT4_LIBDIR -rpath $libdir"
+ fi
+
+ if test -n "$SS_X_LIBDIR"; then
+ SS_RPATH="$SS_RPATH -rpath $SS_X_LIBDIR"
+ fi
+
+ if test "$SS_USE_QT4" = "no"; then
+ SS_LIBDIRS="-L$SS_TOPSRCDIR/src/kvilib/build/ -L$SS_QT3_LIBDIR"
+ else
+ SS_LIBDIRS="-L$SS_TOPSRCDIR/src/kvilib/build/ -L$SS_QT4_LIBDIR"
+ fi
+
+ if test -n "$SS_X_LIBDIR"; then
+ SS_LIBDIRS="$SS_LIBDIRS -L$SS_X_LIBDIR"
+ fi
+
+ if test "$SS_USE_QT4" = "no"; then
+ SS_LIBLINK="-l$SS_QTLIB_NAME"
+ else
+ #if test -n "SS_LOCAL_ADD_DEBUG_SYMBOLS"; then
+ # SS_LIBLINK="-lQtCore_debug -lQtGui_debug -lQt3Support_debug"
+ #else
+
+ SS_LIBLINK="-lQtCore -lQtGui -lQt3Support"
+
+ #fi
+ fi
+
+ if test -n "$SS_X_LIBLINK"; then
+ SS_LIBLINK="$SS_LIBLINK $SS_X_LIBLINK"
+ fi
+ SS_LIBLINK="$SS_LIBLINK $SS_THREAD_LIBLINK"
+ if test "$SS_LINK_TO_LIBSSL" = "true"; then
+ SS_LIBLINK="$SS_LIBLINK -lssl -lcrypto"
+ fi
+ if test "$SS_LINK_TO_LIBESD" = "true"; then
+ SS_LIBLINK="$SS_LIBLINK -lesd"
+ fi
+ if test "$SS_LINK_TO_LIBARTS" = "true"; then
+ SS_LIBLINK="$SS_LIBLINK -lsoundserver_idl"
+ fi
+ if test "$SS_LINK_TO_LIBAUDIOFILE" = "true"; then
+ SS_LIBLINK="$SS_LIBLINK -laudiofile -lm"
+ fi
+
+ if test "$SS_LOCAL_8BIT" = "true"; then
+ SS_CPPFLAGS="$SS_CPPFLAGS -DQT3_NO_ASCII_CAST -DQT3_NO_COMPAT"
+ fi
+
+ if test "$SS_QT3_EMBEDDED" = "true"; then
+ SS_CPPFLAGS="$SS_CPPFLAGS -DQWS"
+ fi
+
+ if test "$SS_KDE_REQUESTED" = "yes"; then
+ SS_INCDIRS="$SS_INCDIRS -I$SS_KDE_INCDIR"
+ SS_RPATH="$SS_RPATH -rpath $SS_KDE_LIBDIR"
+ SS_LIBDIRS="$SS_LIBDIRS -L$SS_KDE_LIBDIR"
+ SS_LIBLINK="-lkdecore -lkdeui -lkparts $SS_LIBLINK"
+ AC_DEFINE([COMPILE_KDE_SUPPORT], 1, [define if you want to compile the KDE 3.x support])
+ SS_BUILD_FLAGS="k$SS_BUILD_FLAGS"
+ fi
+
+ if test -n "$SS_OTHER_LIBLINK"; then
+ SS_LIBLINK="$SS_LIBLINK $SS_OTHER_LIBLINK"
+ fi
+
+ if test -n "$SS_OTHER_LIBDIRS"; then
+ SS_LIBDIRS="$SS_LIBDIRS $SS_OTHER_LIBDIRS"
+ $SS_OTHER_LIBDIRS=`echo "$SS_OTHER_LIBDIRS" | sed -e s/-L//g`
+ SS_RPATH="$SS_RPATH -rpath $SS_OTHER_LIBDIRS"
+ fi
+
+ if test -n "$SS_OTHER_INCDIRS"; then
+ SS_INCDIRS="$SS_INCDIRS $SS_OTHER_INCDIRS"
+ fi
+
+ if test "$SS_LINK_TO_LIBDL" = "yes"; then
+ SS_LIBLINK="$SS_LIBLINK -ldl"
+ fi
+
+ if test "$SS_LINK_TO_LIBZ" = "yes"; then
+ SS_LIBLINK="$SS_LIBLINK -lz"
+ fi
+ if test "$SS_LINK_TO_XSS" = "yes"; then
+ SS_LIBLINK="$SS_LIBLINK -lXss"
+ fi
+
+ AC_SUBST(SS_CPPFLAGS)
+ AC_SUBST(SS_INCDIRS)
+ AC_SUBST(SS_LDFLAGS)
+ SS_RPATH=""
+ AC_SUBST(SS_RPATH)
+ AC_SUBST(SS_LIBDIRS)
+ AC_SUBST(SS_LIBLINK)
+
+ if test "$SS_USE_QT4" = "no"; then
+ SS_QT_MOC=$SS_QT3_MOC
+ SS_QT_MOC_FLAGS=""
+ else
+ SS_QT_MOC=$SS_QT4_MOC
+ SS_QT_MOC_FLAGS="-DCOMPILE_USE_QT4"
+ fi
+
+ AC_SUBST(SS_QT_MOC)
+ AC_SUBST(SS_QT_MOC_FLAGS)
+
+ build_date=`date -u`
+
+ if test -z "$build_date"; then
+ build_date=`date`
+ fi
+
+ if test -z "$build_date"; then
+ build_date="unknown"
+ fi
+
+ AC_DEFINE_UNQUOTED([BUILD_DATE],"$build_date", [this is the build date (configure date rather)])
+
+ dnl # Let's sort the build flags
+
+ SS_AUX_CHARS="a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9"
+
+ buid_flags=""
+
+ for achar in $SS_AUX_CHARS; do
+ tmp_val=`echo "$SS_BUILD_FLAGS" | grep $achar`
+ if test "$tmp_val"; then
+ build_flags="$build_flags$achar"
+ fi
+ done
+
+ SS_DIRTAG=`echo $VERSION | cut -d . -f 1,2`
+
+ AC_DEFINE_UNQUOTED([VERSION_BRANCH], "$SS_DIRTAG", [MAJOR.MINOR part of version])
+ AC_DEFINE_UNQUOTED([BUILD_FLAGS],"$target_cpu-$build_flags", [these are the build flags])
+
+ globalkvircdir="\${datadir}/kvirc/$SS_DIRTAG"
+ AC_SUBST(globalkvircdir)
+
+ configdir="\${globalkvircdir}/config"
+ AC_SUBST(configdir)
+
+ picsdir="\${globalkvircdir}/pics"
+ AC_SUBST(picsdir)
+
+ helpdir="\${globalkvircdir}/help/en"
+ AC_SUBST(helpdir)
+
+ pluglibdir="\${exec_prefix}/lib/kvirc/$SS_DIRTAG/modules"
+ AC_SUBST(pluglibdir)
+
+ modulelibdir="\${exec_prefix}/lib/kvirc/$SS_DIRTAG/modules"
+ AC_SUBST(modulelibdir)
+
+ defscriptdir="\${globalkvircdir}/defscript"
+ AC_SUBST(defscriptdir)
+
+ themedir="\${globalkvircdir}/themes"
+ AC_SUBST(themedir)
+
+ msgcolorsdir="\${globalkvircdir}/msgcolors"
+ AC_SUBST(msgcolorsdir)
+
+ if test -z "$mandir"; then
+ mandir="\${exec_prefix}/man/man1"
+ fi
+ AC_SUBST(mandir)
+
+
+ licensedir="\${globalkvircdir}/license"
+ AC_SUBST(licensedir)
+
+ if test -n "$SS_KDE_SERVICESDIR"; then
+ kdeservicesdir="$SS_KDE_SERVICESDIR"
+ else
+ kdeservicesdir="\${exec_prefix}/share/kvirc/$SS_DIRTAG/protocols"
+ fi
+ AC_SUBST(kdeservicesdir)
+
+ if test "$SS_KDE_REQUESTED" = "yes"; then
+ iconapps16datadir="$SS_KDE_GENERAL_DIR/share/icons/hicolor/16x16/apps"
+ iconapps32datadir="$SS_KDE_GENERAL_DIR/share/icons/hicolor/32x32/apps"
+ iconapps48datadir="$SS_KDE_GENERAL_DIR/share/icons/hicolor/48x48/apps"
+ iconapps64datadir="$SS_KDE_GENERAL_DIR/share/icons/hicolor/64x64/apps"
+ iconapps128datadir="$SS_KDE_GENERAL_DIR/share/icons/hicolor/128x128/apps"
+ iconappsscalabledatadir="$SS_KDE_GENERAL_DIR/share/icons/hicolor/scalable/apps"
+ iconmime16datadir="$SS_KDE_GENERAL_DIR/share/icons/hicolor/16x16/mimetypes"
+ iconmime32datadir="$SS_KDE_GENERAL_DIR/share/icons/hicolor/32x32/mimetypes"
+ iconmime48datadir="$SS_KDE_GENERAL_DIR/share/icons/hicolor/48x48/mimetypes"
+ iconmime64datadir="$SS_KDE_GENERAL_DIR/share/icons/hicolor/64x64/mimetypes"
+ iconmime128datadir="$SS_KDE_GENERAL_DIR/share/icons/hicolor/128x128/mimetypes"
+ iconmimescalabledatadir="$SS_KDE_GENERAL_DIR/share/icons/hicolor/scalable/mimetypes"
+ applnkdir="$SS_KDE_GENERAL_DIR/share/applnk/Internet"
+ mimelnkdir="$SS_KDE_GENERAL_DIR/share/mimelnk/text"
+ else
+ iconapps16datadir="\${exec_prefix}/share/kvirc/$SS_DIRTAG/icons/16x16"
+ iconapps32datadir="\${exec_prefix}/share/kvirc/$SS_DIRTAG/icons/32x32"
+ iconapps48datadir="\${exec_prefix}/share/kvirc/$SS_DIRTAG/icons/48x48"
+ iconapps64datadir="\${exec_prefix}/share/kvirc/$SS_DIRTAG/icons/64x64"
+ iconapps128datadir="\${exec_prefix}/share/kvirc/$SS_DIRTAG/icons/128x128"
+ iconappsscalabledatadir="\${exec_prefix}/share/kvirc/$SS_DIRTAG/icons/scalable"
+ iconmime16datadir="\${exec_prefix}/share/kvirc/$SS_DIRTAG/icons/16x16"
+ iconmime32datadir="\${exec_prefix}/share/kvirc/$SS_DIRTAG/icons/32x32"
+ iconmime48datadir="\${exec_prefix}/share/kvirc/$SS_DIRTAG/icons/48x48"
+ iconmime64datadir="\${exec_prefix}/share/kvirc/$SS_DIRTAG/icons/64x64"
+ iconmime128datadir="\${exec_prefix}/share/kvirc/$SS_DIRTAG/icons/128x128"
+ iconmimescalabledatadir="\${exec_prefix}/share/kvirc/$SS_DIRTAG/icons/scalable"
+ applnkdir="\${exec_prefix}/share/kvirc/$SS_DIRTAG/applnk"
+ mimelnkdir="\${exec_prefix}/share/kvirc/$SS_DIRTAG/mimelnk"
+ fi
+ AC_SUBST(iconapps16datadir)
+ AC_SUBST(iconapps32datadir)
+ AC_SUBST(iconapps48datadir)
+ AC_SUBST(iconapps64datadir)
+ AC_SUBST(iconapps128datadir)
+ AC_SUBST(iconappsscalabledatadir)
+ AC_SUBST(iconmime16datadir)
+ AC_SUBST(iconmime32datadir)
+ AC_SUBST(iconmime48datadir)
+ AC_SUBST(iconmime64datadir)
+ AC_SUBST(iconmime128datadir)
+ AC_SUBST(iconmimescalabledatadir)
+ AC_SUBST(applnkdir)
+ AC_SUBST(mimelnkdir)
+
+ localedir="\${globalkvircdir}/locale"
+ AC_SUBST(localedir)
+
+ headersdir="\${exec_prefix}/include/kvirc/$VERSION"
+ AC_SUBST(headersdir)
+
+
+ configmodulesdir="\${globalkvircdir}/config/modules"
+ AC_SUBST(configmodulesdir)
+
+
+ topdir=`pwd`
+ AC_SUBST(topdir)
+
+ AC_SS_HEADER([Configuration status:])
+ AC_SS_SET_GREENINK
+ echo "### The kvirc binary will be installed in:"
+ echo "### $bindir"
+ echo "### The libraries will be installed in:"
+ echo "### $libdir"
+ echo "### Modules will be installed in:"
+ echo "### $pluglibdir"
+ AC_SS_SET_NORMALINK
+ AC_SS_HEADER([Take a look at the paths above just to be sure that they're correct])
+])
+
+dnl just a wrapper to clean up configure.in
+AC_DEFUN([KVIRC_PROG_LIBTOOL],
+[
+ AM_PROG_LIBTOOL
+
+ LIBTOOL_SHELL="/bin/sh ./libtool"
+ # LIBTOOL="$LIBTOOL --silent"
+
+ AC_ARG_ENABLE(objprelink, [ --enable-objprelink prelink apps (experimental, needs objprelink in path)],
+ kvirc_use_objprelink=$enableval, kvirc_use_objprelink=no)
+ if test "x$kvirc_use_objprelink" = "xyes"; then
+ echo Patching libtool to run objprelink.
+ mv libtool libtool.orig
+ cat > libtool <<\EOF
+#! /bin/sh
+
+ALREADYPRELINKED=""
+
+for n
+do
+ case $n in
+ *.o) k=$n
+ if test -r $k; then
+ ISELF=`file $k | grep ELF`
+ if test -n "$ISELF"; then
+ ALREADY=`echo $ALREADYPRELINKED | grep "!!!$k"`
+ if test -z "$ALREADY"; then
+ echo objprelink $k
+ objprelink $k
+ ALREADYPRELINKED="$ALREADYPRELINKED !!!$k"
+ fi
+ fi
+ fi
+ ;;
+ *.lo) k=$n
+ if test -r $k; then
+ ISELF=`file $k | grep ELF`
+ if test -n "$ISELF"; then
+ ALREADY=`echo $ALREADYPRELINKED | grep "!!!$k"`
+ if test -z "$ALREADY"; then
+ echo objprelink $k
+ objprelink $k
+ ALREADYPRELINKED="$ALREADYPRELINKED !!!$k"
+ fi
+ fi
+ fi
+ ASHORTNAME=`echo $n | sed -e 's/\.lo$//'`
+ k=".libs/$ASHORTNAME.o"
+ if test -r $k; then
+ ISELF=`file $k | grep ELF`
+ if test -n "$ISELF"; then
+ ALREADY=`echo $ALREADYPRELINKED | grep "!!!$k"`
+ if test -z "$ALREADY"; then
+ echo objprelink $k
+ objprelink $k
+ ALREADYPRELINKED="$ALREADYPRELINKED !!!$k"
+ fi
+ fi
+ fi
+ k=".libs/$ASHORTNAME.lo"
+ if test -r $k; then
+ ISELF=`file $k | grep ELF`
+ if test -n "$ISELF"; then
+ ALREADY=`echo $ALREADYPRELINKED | grep "!!!$k"`
+ if test -z "$ALREADY"; then
+ echo objprelink $k
+ objprelink $k
+ ALREADYPRELINKED="$ALREADYPRELINKED !!!$k"
+ fi
+ fi
+ fi
+ k="$ASHORTNAME.o"
+ if test -r $k; then
+ ISELF=`file $k | grep ELF`
+ if test -n "$ISELF"; then
+ ALREADY=`echo $ALREADYPRELINKED | grep "!!!$k"`
+ if test -z "$ALREADY"; then
+ echo objprelink $k
+ objprelink $k
+ ALREADYPRELINKED="$ALREADYPRELINKED !!!$k"
+ fi
+ fi
+ fi
+ ;;
+ esac
+done
+
+EOF
+ cat >> libtool libtool.orig
+ rm libtool.orig
+ chmod a+x libtool
+ fi
+])
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+## Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004
+## Free Software Foundation, Inc.
+## Originally by Gordon Matzigkeit <[email protected]>, 1996
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful, but
+## WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+## General Public License for more details.
+##
+## You 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 02110-1301, USA.
+##
+## As a special exception to the GNU General Public License, if you
+## distribute this file as part of a program that contains a
+## configuration script generated by Autoconf, you may include it under
+## the same distribution terms that you use for the rest of that program.
+
+# serial 47 AC_PROG_LIBTOOL
+
+
+# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
+# -----------------------------------------------------------
+# If this macro is not defined by Autoconf, define it here.
+m4_ifdef([AC_PROVIDE_IFELSE],
+ [],
+ [m4_define([AC_PROVIDE_IFELSE],
+ [m4_ifdef([AC_PROVIDE_$1],
+ [$2], [$3])])])
+
+
+# AC_PROG_LIBTOOL
+# ---------------
+AC_DEFUN([AC_PROG_LIBTOOL],
+[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl
+dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX
+dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX.
+ AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [AC_LIBTOOL_CXX],
+ [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX
+ ])])
+dnl And a similar setup for Fortran 77 support
+ AC_PROVIDE_IFELSE([AC_PROG_F77],
+ [AC_LIBTOOL_F77],
+ [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77
+])])
+
+dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly.
+dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run
+dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both.
+ AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [ifdef([AC_PROG_GCJ],
+ [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+ ifdef([A][M_PROG_GCJ],
+ [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+ ifdef([LT_AC_PROG_GCJ],
+ [define([LT_AC_PROG_GCJ],
+ defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])])
+])])# AC_PROG_LIBTOOL
+
+
+# _AC_PROG_LIBTOOL
+# ----------------
+AC_DEFUN([_AC_PROG_LIBTOOL],
+[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+# Prevent multiple expansion
+define([AC_PROG_LIBTOOL], [])
+])# _AC_PROG_LIBTOOL
+
+
+# AC_LIBTOOL_SETUP
+# ----------------
+AC_DEFUN([AC_LIBTOOL_SETUP],
+[AC_PREREQ(2.50)dnl
+AC_REQUIRE([AC_ENABLE_SHARED])dnl
+AC_REQUIRE([AC_ENABLE_STATIC])dnl
+AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_LD])dnl
+AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
+AC_REQUIRE([AC_PROG_NM])dnl
+
+AC_REQUIRE([AC_PROG_LN_S])dnl
+AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+AC_REQUIRE([AC_OBJEXT])dnl
+AC_REQUIRE([AC_EXEEXT])dnl
+dnl
+
+AC_LIBTOOL_SYS_MAX_CMD_LEN
+AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+AC_LIBTOOL_OBJDIR
+
+AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+_LT_AC_PROG_ECHO_BACKSLASH
+
+case $host_os in
+aix3*)
+ # AIX sometimes has problems with the GCC collect2 program. For some
+ # reason, if we set the COLLECT_NAMES environment variable, the problems
+ # vanish in a puff of smoke.
+ if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+esac
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e s/^X//'
+[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g']
+
+# Same as above, but do not quote variable references.
+[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g']
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+AC_CHECK_TOOL(AR, ar, false)
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+AC_CHECK_TOOL(STRIP, strip, :)
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+ ;;
+ *)
+ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ AC_PATH_MAGIC
+ fi
+ ;;
+esac
+
+AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+enable_win32_dll=yes, enable_win32_dll=no)
+
+AC_ARG_ENABLE([libtool-lock],
+ [AC_HELP_STRING([--disable-libtool-lock],
+ [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+AC_ARG_WITH([pic],
+ [AC_HELP_STRING([--with-pic],
+ [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+ [pic_mode="$withval"],
+ [pic_mode=default])
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+AC_LIBTOOL_LANG_C_CONFIG
+_LT_AC_TAGCONFIG
+])# AC_LIBTOOL_SETUP
+
+
+# _LT_AC_SYS_COMPILER
+# -------------------
+AC_DEFUN([_LT_AC_SYS_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_AC_SYS_COMPILER
+
+
+# _LT_AC_SYS_LIBPATH_AIX
+# ----------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX],
+[AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi],[])
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+])# _LT_AC_SYS_LIBPATH_AIX
+
+
+# _LT_AC_SHELL_INIT(ARG)
+# ----------------------
+AC_DEFUN([_LT_AC_SHELL_INIT],
+[ifdef([AC_DIVERSION_NOTICE],
+ [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+ [AC_DIVERT_PUSH(NOTICE)])
+$1
+AC_DIVERT_POP
+])# _LT_AC_SHELL_INIT
+
+
+# _LT_AC_PROG_ECHO_BACKSLASH
+# --------------------------
+# Add some code to the start of the generated configure script which
+# will find an echo command which doesn't interpret backslashes.
+AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
+[_LT_AC_SHELL_INIT([
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+ # Remove one level of quotation (which was required for Make).
+ ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+ ;;
+esac
+
+echo=${ECHO-echo}
+if test "X[$]1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X[$]1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell.
+ exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
+fi
+
+if test "X[$]1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+[$]*
+EOF
+ exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+ if (echo_test_string="`eval $cmd`") 2>/dev/null &&
+ echo_test_string="`eval $cmd`" &&
+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+ then
+ break
+ fi
+ done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ :
+else
+ # The Solaris, AIX, and Digital Unix default echo programs unquote
+ # backslashes. This makes it impossible to quote backslashes using
+ # echo "$something" | sed 's/\\/\\\\/g'
+ #
+ # So, first we look for a working echo in the user's PATH.
+
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for dir in $PATH /usr/ucb; do
+ IFS="$lt_save_ifs"
+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$dir/echo"
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ if test "X$echo" = Xecho; then
+ # We didn't find a better echo, so look for alternatives.
+ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # This shell has a builtin print -r that does the trick.
+ echo='print -r'
+ elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+ test "X$CONFIG_SHELL" != X/bin/ksh; then
+ # If we have ksh, try running configure again with it.
+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+ export ORIGINAL_CONFIG_SHELL
+ CONFIG_SHELL=/bin/ksh
+ export CONFIG_SHELL
+ exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
+ else
+ # Try using printf.
+ echo='printf %s\n'
+ if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # Cool, printf works
+ :
+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+ export CONFIG_SHELL
+ SHELL="$CONFIG_SHELL"
+ export SHELL
+ echo="$CONFIG_SHELL [$]0 --fallback-echo"
+ elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$CONFIG_SHELL [$]0 --fallback-echo"
+ else
+ # maybe with a smaller string...
+ prev=:
+
+ for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
+ if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+ then
+ break
+ fi
+ prev="$cmd"
+ done
+
+ if test "$prev" != 'sed 50q "[$]0"'; then
+ echo_test_string=`eval $prev`
+ export echo_test_string
+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
+ else
+ # Oops. We lost completely, so just stick with echo.
+ echo=echo
+ fi
+ fi
+ fi
+ fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+ ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
+
+AC_SUBST(ECHO)
+])])# _LT_AC_PROG_ECHO_BACKSLASH
+
+
+# _LT_AC_LOCK
+# -----------
+AC_DEFUN([_LT_AC_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+ [AC_HELP_STRING([--disable-libtool-lock],
+ [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE="32"
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE="64"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out which ABI we are using.
+ echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case "`/usr/bin/file conftest.o`" in
+ *32-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+ AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+ [AC_LANG_PUSH(C)
+ AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+ AC_LANG_POP])
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+ AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+ AC_CHECK_TOOL(AS, as, false)
+ AC_CHECK_TOOL(OBJDUMP, objdump, false)
+ ;;
+ ])
+esac
+
+need_locks="$enable_libtool_lock"
+
+])# _LT_AC_LOCK
+
+
+# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION],
+[AC_REQUIRE([LT_AC_PROG_SED])
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$3"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test ! -s conftest.err; then
+ $2=yes
+ fi
+ fi
+ $rm conftest*
+])
+
+if test x"[$]$2" = xyes; then
+ ifelse([$5], , :, [$5])
+else
+ ifelse([$6], , :, [$6])
+fi
+])# AC_LIBTOOL_COMPILER_OPTION
+
+
+# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [ACTION-SUCCESS], [ACTION-FAILURE])
+# ------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
+[AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $3"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&AS_MESSAGE_LOG_FD
+ else
+ $2=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+ ifelse([$4], , :, [$4])
+else
+ ifelse([$5], , :, [$5])
+fi
+])# AC_LIBTOOL_LINKER_OPTION
+
+
+# AC_LIBTOOL_SYS_MAX_CMD_LEN
+# --------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN],
+[# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* )
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for *BSD
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ ;;
+
+ *)
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
+ = "XX$teststring") >/dev/null 2>&1 &&
+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
+ lt_cv_sys_max_cmd_len=$new_result &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on massive
+ # amounts of additional arguments before passing them to the linker.
+ # It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ ;;
+ esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+ AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+ AC_MSG_RESULT(none)
+fi
+])# AC_LIBTOOL_SYS_MAX_CMD_LEN
+
+
+# _LT_AC_CHECK_DLFCN
+# --------------------
+AC_DEFUN([_LT_AC_CHECK_DLFCN],
+[AC_CHECK_HEADERS(dlfcn.h)dnl
+])# _LT_AC_CHECK_DLFCN
+
+
+# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ------------------------------------------------------------------
+AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+ [$4]
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+[#line __oline__ "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}]
+EOF
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) $1 ;;
+ x$lt_dlneed_uscore) $2 ;;
+ x$lt_unknown|x*) $3 ;;
+ esac
+ else :
+ # compilation failed
+ $3
+ fi
+fi
+rm -fr conftest*
+])# _LT_AC_TRY_DLOPEN_SELF
+
+
+# AC_LIBTOOL_DLOPEN_SELF
+# -------------------
+AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ])
+ ;;
+
+ *)
+ AC_CHECK_FUNC([shl_load],
+ [lt_cv_dlopen="shl_load"],
+ [AC_CHECK_LIB([dld], [shl_load],
+ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"],
+ [AC_CHECK_FUNC([dlopen],
+ [lt_cv_dlopen="dlopen"],
+ [AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+ [AC_CHECK_LIB([svld], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+ [AC_CHECK_LIB([dld], [dld_link],
+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
+ ])
+ ])
+ ])
+ ])
+ ])
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ AC_CACHE_CHECK([whether a program can dlopen itself],
+ lt_cv_dlopen_self, [dnl
+ _LT_AC_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+ lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+ ])
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ LDFLAGS="$LDFLAGS $link_static_flag"
+ AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+ lt_cv_dlopen_self_static, [dnl
+ _LT_AC_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+ lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross)
+ ])
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+])# AC_LIBTOOL_DLOPEN_SELF
+
+
+# AC_LIBTOOL_PROG_CC_C_O([TAGNAME])
+# ---------------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler
+AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test ! -s out/conftest.err; then
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+ fi
+ fi
+ chmod u+w .
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+])
+])# AC_LIBTOOL_PROG_CC_C_O
+
+
+# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME])
+# -----------------------------------------
+# Check to see if we can do hard links to lock some files if needed
+AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS],
+[AC_REQUIRE([_LT_AC_LOCK])dnl
+
+hard_links="nottested"
+if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ AC_MSG_CHECKING([if we can lock with hard links])
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ AC_MSG_RESULT([$hard_links])
+ if test "$hard_links" = no; then
+ AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS
+
+
+# AC_LIBTOOL_OBJDIR
+# -----------------
+AC_DEFUN([AC_LIBTOOL_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+])# AC_LIBTOOL_OBJDIR
+
+
+# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME])
+# ----------------------------------------------
+# Check hardcoding attributes.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_AC_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \
+ test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \
+ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+ test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then
+ # Linking always hardcodes the temporary library directory.
+ _LT_AC_TAGVAR(hardcode_action, $1)=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ _LT_AC_TAGVAR(hardcode_action, $1)=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ _LT_AC_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH
+
+
+# AC_LIBTOOL_SYS_LIB_STRIP
+# ------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP],
+[striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+fi
+ ;;
+ *)
+ AC_MSG_RESULT([no])
+ ;;
+ esac
+fi
+])# AC_LIBTOOL_SYS_LIB_STRIP
+
+
+# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER],
+[AC_MSG_CHECKING([dynamic linker characteristics])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[[01]] | aix4.[[01]].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[[45]]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd*)
+ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case "$host_cpu" in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`$SED -e 's/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g' /etc/ld.so.conf | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[[89]] | openbsd2.[[89]].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+sco3.2v5*)
+ version_type=osf
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+])# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+
+
+# _LT_AC_TAGCONFIG
+# ----------------
+AC_DEFUN([_LT_AC_TAGCONFIG],
+[AC_ARG_WITH([tags],
+ [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@],
+ [include additional configurations @<:@automatic@:>@])],
+ [tagnames="$withval"])
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+ if test ! -f "${ofile}"; then
+ AC_MSG_WARN([output file `$ofile' does not exist])
+ fi
+
+ if test -z "$LTCC"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+ if test -z "$LTCC"; then
+ AC_MSG_WARN([output file `$ofile' does not look like a libtool script])
+ else
+ AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile'])
+ fi
+ fi
+
+ # Extract list of available tagged configurations in $ofile.
+ # Note that this assumes the entire list is on one line.
+ available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for tagname in $tagnames; do
+ IFS="$lt_save_ifs"
+ # Check whether tagname contains only valid characters
+ case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in
+ "") ;;
+ *) AC_MSG_ERROR([invalid tag name: $tagname])
+ ;;
+ esac
+
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+ then
+ AC_MSG_ERROR([tag name \"$tagname\" already exists])
+ fi
+
+ # Update the list of available tags.
+ if test -n "$tagname"; then
+ echo appending configuration tag \"$tagname\" to $ofile
+
+ case $tagname in
+ CXX)
+ if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ AC_LIBTOOL_LANG_CXX_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ F77)
+ if test -n "$F77" && test "X$F77" != "Xno"; then
+ AC_LIBTOOL_LANG_F77_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ GCJ)
+ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+ AC_LIBTOOL_LANG_GCJ_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ RC)
+ AC_LIBTOOL_LANG_RC_CONFIG
+ ;;
+
+ *)
+ AC_MSG_ERROR([Unsupported tag name: $tagname])
+ ;;
+ esac
+
+ # Append the new tag name to the list of available tags.
+ if test -n "$tagname" ; then
+ available_tags="$available_tags $tagname"
+ fi
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ # Now substitute the updated list of available tags.
+ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+ mv "${ofile}T" "$ofile"
+ chmod +x "$ofile"
+ else
+ rm -f "${ofile}T"
+ AC_MSG_ERROR([unable to update list of available tagged configurations.])
+ fi
+fi
+])# _LT_AC_TAGCONFIG
+
+
+# AC_LIBTOOL_DLOPEN
+# -----------------
+# enable checks for dlopen support
+AC_DEFUN([AC_LIBTOOL_DLOPEN],
+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_DLOPEN
+
+
+# AC_LIBTOOL_WIN32_DLL
+# --------------------
+# declare package support for building win32 dll's
+AC_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_BEFORE([$0], [AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_WIN32_DLL
+
+
+# AC_ENABLE_SHARED([DEFAULT])
+# ---------------------------
+# implement the --enable-shared flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_SHARED],
+[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([shared],
+ [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+ [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_shared=]AC_ENABLE_SHARED_DEFAULT)
+])# AC_ENABLE_SHARED
+
+
+# AC_DISABLE_SHARED
+# -----------------
+#- set the default shared flag to --disable-shared
+AC_DEFUN([AC_DISABLE_SHARED],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_SHARED(no)
+])# AC_DISABLE_SHARED
+
+
+# AC_ENABLE_STATIC([DEFAULT])
+# ---------------------------
+# implement the --enable-static flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_STATIC],
+[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([static],
+ [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+ [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_static=]AC_ENABLE_STATIC_DEFAULT)
+])# AC_ENABLE_STATIC
+
+
+# AC_DISABLE_STATIC
+# -----------------
+# set the default static flag to --disable-static
+AC_DEFUN([AC_DISABLE_STATIC],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_STATIC(no)
+])# AC_DISABLE_STATIC
+
+
+# AC_ENABLE_FAST_INSTALL([DEFAULT])
+# ---------------------------------
+# implement the --enable-fast-install flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_FAST_INSTALL],
+[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([fast-install],
+ [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+ [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT)
+])# AC_ENABLE_FAST_INSTALL
+
+
+# AC_DISABLE_FAST_INSTALL
+# -----------------------
+# set the default to --disable-fast-install
+AC_DEFUN([AC_DISABLE_FAST_INSTALL],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_FAST_INSTALL(no)
+])# AC_DISABLE_FAST_INSTALL
+
+
+# AC_LIBTOOL_PICMODE([MODE])
+# --------------------------
+# implement the --with-pic flag
+# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
+AC_DEFUN([AC_LIBTOOL_PICMODE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+pic_mode=ifelse($#,1,$1,default)
+])# AC_LIBTOOL_PICMODE
+
+
+# AC_PROG_EGREP
+# -------------
+# This is predefined starting with Autoconf 2.54, so this conditional
+# definition can be removed once we require Autoconf 2.54 or later.
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP],
+[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
+ [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+ then ac_cv_prog_egrep='grep -E'
+ else ac_cv_prog_egrep='egrep'
+ fi])
+ EGREP=$ac_cv_prog_egrep
+ AC_SUBST([EGREP])
+])])
+
+
+# AC_PATH_TOOL_PREFIX
+# -------------------
+# find a file program which can recognise shared library
+AC_DEFUN([AC_PATH_TOOL_PREFIX],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] | ?:[\\/]*])
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word. This closes a longstanding sh security hole.
+ ac_dummy="ifelse([$2], , $PATH, [$2])"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$1; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+
+EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ AC_MSG_RESULT($MAGIC_CMD)
+else
+ AC_MSG_RESULT(no)
+fi
+])# AC_PATH_TOOL_PREFIX
+
+
+# AC_PATH_MAGIC
+# -------------
+# find a file program which can recognise a shared library
+AC_DEFUN([AC_PATH_MAGIC],
+[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+ else
+ MAGIC_CMD=:
+ fi
+fi
+])# AC_PATH_MAGIC
+
+
+# AC_PROG_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([AC_PROG_LD],
+[AC_ARG_WITH([gnu-ld],
+ [AC_HELP_STRING([--with-gnu-ld],
+ [assume the C compiler uses GNU ld @<:@default=no@:>@])],
+ [test "$withval" = no || with_gnu_ld=yes],
+ [with_gnu_ld=no])
+AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ AC_MSG_CHECKING([for ld used by $CC])
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [[\\/]]* | ?:[[\\/]]*)
+ re_direlt='/[[^/]][[^/]]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ AC_MSG_CHECKING([for GNU ld])
+else
+ AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ AC_MSG_RESULT($LD)
+else
+ AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_PROG_LD_GNU
+])# AC_PROG_LD
+
+
+# AC_PROG_LD_GNU
+# --------------
+AC_DEFUN([AC_PROG_LD_GNU],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# AC_PROG_LD_GNU
+
+
+# AC_PROG_LD_RELOAD_FLAG
+# ----------------------
+# find reload flag for linker
+# -- PORTME Some linkers may need a different reload flag.
+AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+ lt_cv_ld_reload_flag,
+ [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+])# AC_PROG_LD_RELOAD_FLAG
+
+
+# AC_DEPLIBS_CHECK_METHOD
+# -----------------------
+# how to check for library dependencies
+# -- PORTME fill in with the dynamic library characteristics
+AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
+[AC_CACHE_CHECK([how to recognise dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[[45]]*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump'.
+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | kfreebsd*-gnu)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case "$host_cpu" in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+nto-qnx*)
+ lt_cv_deplibs_check_method=unknown
+ ;;
+
+openbsd*)
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sco3.2v5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+])
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+])# AC_DEPLIBS_CHECK_METHOD
+
+
+# AC_PROG_NM
+# ----------
+# find the pathname to a BSD-compatible name lister
+AC_DEFUN([AC_PROG_NM],
+[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM,
+[if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/${ac_tool_prefix}nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi])
+NM="$lt_cv_path_NM"
+])# AC_PROG_NM
+
+
+# AC_CHECK_LIBM
+# -------------
+# check for math library
+AC_DEFUN([AC_CHECK_LIBM],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
+ # These system don't have libm, or don't need it
+ ;;
+*-ncr-sysv4.3*)
+ AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+ AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+ ;;
+*)
+ AC_CHECK_LIB(m, cos, LIBM="-lm")
+ ;;
+esac
+])# AC_CHECK_LIBM
+
+
+# AC_LIBLTDL_CONVENIENCE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl convenience library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL
+# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If
+# DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will
+# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with
+# '${top_srcdir}/' (note the single quotes!). If your package is not
+# flat and you're not using automake, define top_builddir and
+# top_srcdir appropriately in the Makefiles.
+AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+ case $enable_ltdl_convenience in
+ no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
+ "") enable_ltdl_convenience=yes
+ ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
+ esac
+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+ # For backwards non-gettext consistent compatibility...
+ INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_CONVENIENCE
+
+
+# AC_LIBLTDL_INSTALLABLE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl installable library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-install to the configure arguments. Note that LIBLTDL
+# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If
+# DIRECTORY is not provided and an installed libltdl is not found, it is
+# assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/'
+# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single
+# quotes!). If your package is not flat and you're not using automake,
+# define top_builddir and top_srcdir appropriately in the Makefiles.
+# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
+AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+ AC_CHECK_LIB(ltdl, lt_dlinit,
+ [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
+ [if test x"$enable_ltdl_install" = xno; then
+ AC_MSG_WARN([libltdl not installed, but installation disabled])
+ else
+ enable_ltdl_install=yes
+ fi
+ ])
+ if test x"$enable_ltdl_install" = x"yes"; then
+ ac_configure_args="$ac_configure_args --enable-ltdl-install"
+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+ else
+ ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
+ LIBLTDL="-lltdl"
+ LTDLINCL=
+ fi
+ # For backwards non-gettext consistent compatibility...
+ INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_INSTALLABLE
+
+
+# AC_LIBTOOL_CXX
+# --------------
+# enable support for C++ libraries
+AC_DEFUN([AC_LIBTOOL_CXX],
+[AC_REQUIRE([_LT_AC_LANG_CXX])
+])# AC_LIBTOOL_CXX
+
+
+# _LT_AC_LANG_CXX
+# ---------------
+AC_DEFUN([_LT_AC_LANG_CXX],
+[AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([_LT_AC_PROG_CXXCPP])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
+])# _LT_AC_LANG_CXX
+
+# _LT_AC_PROG_CXXCPP
+# ---------------
+AC_DEFUN([_LT_AC_PROG_CXXCPP],
+[
+AC_REQUIRE([AC_PROG_CXX])
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ AC_PROG_CXXCPP
+fi
+])# _LT_AC_PROG_CXXCPP
+
+# AC_LIBTOOL_F77
+# --------------
+# enable support for Fortran 77 libraries
+AC_DEFUN([AC_LIBTOOL_F77],
+[AC_REQUIRE([_LT_AC_LANG_F77])
+])# AC_LIBTOOL_F77
+
+
+# _LT_AC_LANG_F77
+# ---------------
+AC_DEFUN([_LT_AC_LANG_F77],
+[AC_REQUIRE([AC_PROG_F77])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77])
+])# _LT_AC_LANG_F77
+
+
+# AC_LIBTOOL_GCJ
+# --------------
+# enable support for GCJ libraries
+AC_DEFUN([AC_LIBTOOL_GCJ],
+[AC_REQUIRE([_LT_AC_LANG_GCJ])
+])# AC_LIBTOOL_GCJ
+
+
+# _LT_AC_LANG_GCJ
+# ---------------
+AC_DEFUN([_LT_AC_LANG_GCJ],
+[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[],
+ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[],
+ [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])],
+ [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])],
+ [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ])
+])# _LT_AC_LANG_GCJ
+
+
+# AC_LIBTOOL_RC
+# --------------
+# enable support for Windows resource files
+AC_DEFUN([AC_LIBTOOL_RC],
+[AC_REQUIRE([LT_AC_PROG_RC])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC])
+])# AC_LIBTOOL_RC
+
+
+# AC_LIBTOOL_LANG_C_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG])
+AC_DEFUN([_LT_AC_LANG_C_CONFIG],
+[lt_save_CC="$CC"
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+_LT_AC_SYS_COMPILER
+
+#
+# Check for any special shared library compilation flags.
+#
+_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)=
+if test "$GCC" = no; then
+ case $host_os in
+ sco3.2v5*)
+ _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf'
+ ;;
+ esac
+fi
+if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then
+ AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries])
+ if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then :
+ else
+ AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure])
+ _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no
+ fi
+fi
+
+
+#
+# Check to make sure the static flag actually works.
+#
+AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works],
+ _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
+ $_LT_AC_TAGVAR(lt_prog_compiler_static, $1),
+ [],
+ [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
+
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+# Report which librarie types wil actually be built
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+aix4* | aix5*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_C_CONFIG
+
+
+# AC_LIBTOOL_LANG_CXX_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)])
+AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
+[AC_LANG_PUSH(C++)
+AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([_LT_AC_PROG_CXXCPP])
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Dependencies to place before and after the object being linked:
+_LT_AC_TAGVAR(predep_objects, $1)=
+_LT_AC_TAGVAR(postdep_objects, $1)=
+_LT_AC_TAGVAR(predeps, $1)=
+_LT_AC_TAGVAR(postdeps, $1)=
+_LT_AC_TAGVAR(compiler_lib_search_path, $1)=
+
+# Source file extension for C++ test sources.
+ac_ext=cc
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+else
+ unset lt_cv_prog_gnu_ld
+fi
+if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+ unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+else
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+fi
+
+if test "$GXX" = yes; then
+ # Set up default GNU C++ configuration
+
+ AC_PROG_LD
+
+ # Check if GNU C++ uses GNU ld as the underlying linker, since the
+ # archiving commands below assume that GNU ld is being used.
+ if test "$with_gnu_ld" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+ # investigate it a little bit more. (MM)
+ wlarc='${wl}'
+
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+ grep 'no-whole-archive' > /dev/null; then
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ else
+ with_gnu_ld=no
+ wlarc=
+
+ # A generic and very simple default shared library creation
+ # command for GNU C++ for the case where it uses the native
+ # linker, instead of GNU ld. If possible, this setting should
+ # overridden to take advantage of the native linker features on
+ # the platform it is being used on.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ fi
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+else
+ GXX=no
+ with_gnu_ld=no
+ wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+_LT_AC_TAGVAR(ld_shlibs, $1)=yes
+case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ case $ld_flag in
+ *-brtl*)
+ aix_use_runtimelinking=yes
+ break
+ ;;
+ esac
+ done
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_AC_TAGVAR(archive_cmds, $1)=''
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GXX" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ else
+ # We have old collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ esac
+ shared_flag='-shared'
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ # -bexpall does not export symbols beginning with underscore (_)
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds it's shared libraries.
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ darwin* | rhapsody*)
+ case "$host_os" in
+ rhapsody* | darwin1.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GXX" = yes ; then
+ lt_int_apple_cc_single_mod=no
+ output_verbose_link_cmd='echo'
+ if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+ lt_int_apple_cc_single_mod=yes
+ fi
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ fi
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case "$cc_basename" in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ case $cc_basename in
+ ec++)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ ghcx)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ freebsd[12]*)
+ # C++ shared libraries reported to be fairly broken before switch to ELF
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ freebsd-elf*)
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ ;;
+ freebsd* | kfreebsd*-gnu)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ ;;
+ gnu*)
+ ;;
+ hpux9*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+
+ case $cc_basename in
+ CC)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+ case "$host_cpu" in
+ hppa*64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+ esac
+ fi
+ case "$host_cpu" in
+ hppa*64*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ esac
+
+ case $cc_basename in
+ CC)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC)
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+ case "$host_cpu" in
+ ia64*|hppa*64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ fi
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ irix5* | irix6*)
+ case $cc_basename in
+ CC)
+ # SGI C++
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+ fi
+ fi
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+ esac
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+ linux*)
+ case $cc_basename in
+ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+ icpc)
+ # Intel C++
+ with_gnu_ld=yes
+ # version 8.0 and above of icpc choke on multiply defined symbols
+ # if we add $predep_objects and $postdep_objects, however 7.1 and
+ # earlier do not add the objects themselves.
+ case `$CC -V 2>&1` in
+ *"Version 7."*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ *) # Version 8.0 or newer
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+ cxx)
+ # Compaq C++
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+ runpath_var=LD_RUN_PATH
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ esac
+ ;;
+ lynxos*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ m88k*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ fi
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+ openbsd2*)
+ # C++ shared libraries are fairly broken
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ openbsd*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ fi
+ output_verbose_link_cmd='echo'
+ ;;
+ osf3*)
+ case $cc_basename in
+ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+
+ ;;
+ RCC)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ osf4* | osf5*)
+ case $cc_basename in
+ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
+ ;;
+ RCC)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~
+ $rm $lib.exp'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ psos*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ sco*)
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ case $cc_basename in
+ CC)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ lcc)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The C++ compiler is used as linker so we must use $wl
+ # flag to pass the commands to the underlying system
+ # linker.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ gcx)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+ # The C++ compiler must be used to create the archive.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+ ;;
+ *)
+ # GNU C++ compiler with Solaris linker
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+ if $CC --version | grep -v '^2\.7' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+ else
+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # platform.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+ fi
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+ fi
+ ;;
+ esac
+ ;;
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*)
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ vxworks*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+esac
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_AC_TAGVAR(GCC, $1)="$GXX"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+AC_LIBTOOL_POSTDEP_PREDEP($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+])# AC_LIBTOOL_LANG_CXX_CONFIG
+
+# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME])
+# ------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library. It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+ifelse([$1],[],[cat > conftest.$ac_ext <<EOF
+int a;
+void foo (void) { a = 0; }
+EOF
+],[$1],[CXX],[cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+EOF
+],[$1],[F77],[cat > conftest.$ac_ext <<EOF
+ subroutine foo
+ implicit none
+ integer*4 a
+ a=0
+ return
+ end
+EOF
+],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF
+public class foo {
+ private int a;
+ public void bar (void) {
+ a = 0;
+ }
+};
+EOF
+])
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+ # Parse the compiler output and extract the necessary
+ # objects, libraries and library flags.
+
+ # Sentinel used to keep track of whether or not we are before
+ # the conftest object file.
+ pre_test_object_deps_done=no
+
+ # The `*' in the case matches for architectures that use `case' in
+ # $output_verbose_cmd can trigger glob expansion during the loop
+ # eval without this substitution.
+ output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
+
+ for p in `eval $output_verbose_link_cmd`; do
+ case $p in
+
+ -L* | -R* | -l*)
+ # Some compilers place space between "-{L,R}" and the path.
+ # Remove the space.
+ if test $p = "-L" \
+ || test $p = "-R"; then
+ prev=$p
+ continue
+ else
+ prev=
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ case $p in
+ -L* | -R*)
+ # Internal compiler library paths should come after those
+ # provided the user. The postdeps already come after the
+ # user supplied libs so there is no need to process them.
+ if test -z "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+ else
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+ fi
+ ;;
+ # The "-l" case would never come before the object being
+ # linked, so don't bother handling this case.
+ esac
+ else
+ if test -z "$_LT_AC_TAGVAR(postdeps, $1)"; then
+ _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}"
+ else
+ _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}"
+ fi
+ fi
+ ;;
+
+ *.$objext)
+ # This assumes that the test object file only shows up
+ # once in the compiler output.
+ if test "$p" = "conftest.$objext"; then
+ pre_test_object_deps_done=yes
+ continue
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ if test -z "$_LT_AC_TAGVAR(predep_objects, $1)"; then
+ _LT_AC_TAGVAR(predep_objects, $1)="$p"
+ else
+ _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p"
+ fi
+ else
+ if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then
+ _LT_AC_TAGVAR(postdep_objects, $1)="$p"
+ else
+ _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_TAGVAR(postdep_objects, $1) $p"
+ fi
+ fi
+ ;;
+
+ *) ;; # Ignore the rest.
+
+ esac
+ done
+
+ # Clean up.
+ rm -f a.out a.exe
+else
+ echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$rm -f confest.$objext
+
+case " $_LT_AC_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+])# AC_LIBTOOL_POSTDEP_PREDEP
+
+# AC_LIBTOOL_LANG_F77_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)])
+AC_DEFUN([_LT_AC_LANG_F77_CONFIG],
+[AC_REQUIRE([AC_PROG_F77])
+AC_LANG_PUSH(Fortran 77)
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code=" subroutine t\n return\n end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code=" program t\n end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+aix4* | aix5*)
+ test "$enable_shared" = yes && enable_static=no
+ ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_AC_TAGVAR(GCC, $1)="$G77"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_F77_CONFIG
+
+
+# AC_LIBTOOL_LANG_GCJ_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)])
+AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_GCJ_CONFIG
+
+
+# AC_LIBTOOL_LANG_RC_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the Windows resource compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)])
+AC_DEFUN([_LT_AC_LANG_RC_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_RC_CONFIG
+
+
+# AC_LIBTOOL_CONFIG([TAGNAME])
+# ----------------------------
+# If TAGNAME is not passed, then create an initial libtool script
+# with a default configuration from the untagged config vars. Otherwise
+# add code to config.status for appending the configuration named by
+# TAGNAME from the matching tagged config vars.
+AC_DEFUN([AC_LIBTOOL_CONFIG],
+[# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ _LT_AC_TAGVAR(compiler, $1) \
+ _LT_AC_TAGVAR(CC, $1) \
+ _LT_AC_TAGVAR(LD, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \
+ _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \
+ _LT_AC_TAGVAR(old_archive_cmds, $1) \
+ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \
+ _LT_AC_TAGVAR(predep_objects, $1) \
+ _LT_AC_TAGVAR(postdep_objects, $1) \
+ _LT_AC_TAGVAR(predeps, $1) \
+ _LT_AC_TAGVAR(postdeps, $1) \
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1) \
+ _LT_AC_TAGVAR(archive_cmds, $1) \
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1) \
+ _LT_AC_TAGVAR(postinstall_cmds, $1) \
+ _LT_AC_TAGVAR(postuninstall_cmds, $1) \
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \
+ _LT_AC_TAGVAR(allow_undefined_flag, $1) \
+ _LT_AC_TAGVAR(no_undefined_flag, $1) \
+ _LT_AC_TAGVAR(export_symbols_cmds, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \
+ _LT_AC_TAGVAR(hardcode_automatic, $1) \
+ _LT_AC_TAGVAR(module_cmds, $1) \
+ _LT_AC_TAGVAR(module_expsym_cmds, $1) \
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \
+ _LT_AC_TAGVAR(exclude_expsyms, $1) \
+ _LT_AC_TAGVAR(include_expsyms, $1); do
+
+ case $var in
+ _LT_AC_TAGVAR(old_archive_cmds, $1) | \
+ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \
+ _LT_AC_TAGVAR(archive_cmds, $1) | \
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \
+ _LT_AC_TAGVAR(module_cmds, $1) | \
+ _LT_AC_TAGVAR(module_expsym_cmds, $1) | \
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \
+ _LT_AC_TAGVAR(export_symbols_cmds, $1) | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\[$]0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'`
+ ;;
+ esac
+
+ifelse([$1], [],
+ [cfgfile="${ofile}T"
+ trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+ $rm -f "$cfgfile"
+ AC_MSG_NOTICE([creating $ofile])],
+ [cfgfile="$ofile"])
+
+ cat <<__EOF__ >> "$cfgfile"
+ifelse([$1], [],
+[#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <[email protected]>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You 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 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG],
+[# ### BEGIN LIBTOOL TAG CONFIG: $tagname])
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
+
+# Is the compiler the GNU C compiler?
+with_gcc=$_LT_AC_TAGVAR(GCC, $1)
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_[]_LT_AC_TAGVAR(LD, $1)
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1)
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1)
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1)
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1)
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1)
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1)
+archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1)
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1)
+module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1)
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1)
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1)
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1)
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1)
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1)
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1)
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1)
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1)
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1)
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1)
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1)
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1)
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1)
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1)
+
+# Symbols that must always be exported.
+include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1)
+
+ifelse([$1],[],
+[# ### END LIBTOOL CONFIG],
+[# ### END LIBTOOL TAG CONFIG: $tagname])
+
+__EOF__
+
+ifelse([$1],[], [
+ case $host_os in
+ aix3*)
+ cat <<\EOF >> "$cfgfile"
+
+# AIX sometimes has problems with the GCC collect2 program. For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+EOF
+ ;;
+ esac
+
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+ sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+ mv -f "$cfgfile" "$ofile" || \
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+])
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+])# AC_LIBTOOL_CONFIG
+
+
+# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+
+_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+
+ AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+ lt_cv_prog_compiler_rtti_exceptions,
+ [-fno-rtti -fno-exceptions], [],
+ [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI
+
+
+# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+# ---------------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
+[AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PROG_NM])
+AC_REQUIRE([AC_OBJEXT])
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Transform the above into a raw symbol and a C symbol.
+symxfrm='\1 \2\3 \3'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[[BCDT]]'
+ ;;
+cygwin* | mingw* | pw32*)
+ symcode='[[ABCDGISTW]]'
+ ;;
+hpux*) # Its linker distinguishes data from code symbols
+ if test "$host_cpu" = ia64; then
+ symcode='[[ABCDEGRST]]'
+ fi
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ ;;
+linux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[[ABCDGIRSTW]]'
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[[BCDEGRST]]'
+ ;;
+osf*)
+ symcode='[[BCDEGQRST]]'
+ ;;
+solaris* | sysv5*)
+ symcode='[[BDRT]]'
+ ;;
+sysv4)
+ symcode='[[DFNSTU]]'
+ ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Write the raw and C identifiers.
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+ if AC_TRY_EVAL(ac_compile); then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if grep ' nm_test_var$' "$nlist" >/dev/null; then
+ if grep ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+ cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ lt_ptr_t address;
+}
+lt_preloaded_symbols[[]] =
+{
+EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+ cat <<\EOF >> conftest.$ac_ext
+ {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_save_LIBS="$LIBS"
+ lt_save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS="$lt_save_LIBS"
+ CFLAGS="$lt_save_CFLAGS"
+ else
+ echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+ cat conftest.$ac_ext >&5
+ fi
+ rm -f conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ AC_MSG_RESULT(failed)
+else
+ AC_MSG_RESULT(ok)
+fi
+]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+
+
+# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME])
+# ---------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC],
+[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=
+
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+ ifelse([$1],[CXX],[
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | os2* | pw32*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ ;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+ *djgpp*)
+ # DJGPP does not support shared libraries at all
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ case $host_os in
+ aix4* | aix5*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ cxch68)
+ # Green Hills C++ Compiler
+ # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+ ;;
+ esac
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case "$cc_basename" in
+ xlc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ ;;
+ esac
+ ;;
+ dgux*)
+ case $cc_basename in
+ ec++)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ ghcx)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | kfreebsd*-gnu)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+ if test "$host_cpu" != ia64; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ fi
+ ;;
+ aCC)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+ CC)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ # CC pic flag -KPIC is the default.
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ linux*)
+ case $cc_basename in
+ KCC)
+ # KAI C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ icpc)
+ # Intel C++
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ cxx)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd*)
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ ;;
+ RCC)
+ # Rational C++ 2.4.1
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ cxx)
+ # Digital/Compaq C++
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ psos*)
+ ;;
+ sco*)
+ case $cc_basename in
+ CC)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ gcx)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC)
+ # Sun C++ 4.x
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ lcc)
+ # Lucid
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC)
+ # NonStop-UX NCC 3.20
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ unixware*)
+ ;;
+ vxworks*)
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+],
+[
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case "$cc_basename" in
+ xlc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ ;;
+ esac
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC (with -KPIC) is the default.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ newsos6)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ linux*)
+ case $CC in
+ icc* | ecc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ ccc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All Alpha code is PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All OSF/1 code is PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ sco3.2v5*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn'
+ ;;
+
+ solaris*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sunos4*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ uts4*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
+ AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works],
+ _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1),
+ [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [],
+ [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in
+ "" | " "*) ;;
+ *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+ esac],
+ [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+case "$host_os" in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
+ ;;
+esac
+])
+
+
+# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME])
+# ------------------------------------
+# See if the linker supports building shared libraries.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS],
+[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+ifelse([$1],[CXX],[
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ case $host_os in
+ aix4* | aix5*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ fi
+ ;;
+ pw32*)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+ ;;
+ cygwin* | mingw*)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ *)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+],[
+ runpath_var=
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+ _LT_AC_TAGVAR(archive_cmds, $1)=
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)=
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ _LT_AC_TAGVAR(thread_safe_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=no
+ _LT_AC_TAGVAR(module_cmds, $1)=
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)=
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ _LT_AC_TAGVAR(include_expsyms, $1)=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_"
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+
+ # Samuel A. Falvo II <[email protected]> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <[email protected]> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris* | sysv5*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ sunos4*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_cmds, $1)="$tmp_archive_cmds"
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ [01].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+ if test $supports_anon_versioning = yes; then
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
+cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+$echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ else
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="$tmp_archive_cmds"
+ fi
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+
+ if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = yes; then
+ runpath_var=LD_RUN_PATH
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ if test "$GCC" = yes && test -z "$link_static_flag"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_AC_TAGVAR(archive_cmds, $1)=''
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ else
+ # We have old collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ esac
+ shared_flag='-shared'
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ # -bexpall does not export symbols beginning with underscore (_)
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds it's shared libraries.
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ # see comment about different semantics on the GNU ld section
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ bsdi[[45]]*)
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
+ # FIXME: Should let the user specify the lib program.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path='`cygpath -w "$srcfile"`'
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ ;;
+
+ darwin* | rhapsody*)
+ case "$host_os" in
+ rhapsody* | darwin1.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ if test "$GCC" = yes ; then
+ output_verbose_link_cmd='echo'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case "$cc_basename" in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ freebsd1*)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+
+ hpux10* | hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ case "$host_cpu" in
+ hppa*64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ newsos6)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ openbsd*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ else
+ case $host_os in
+ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ else
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ sco3.2v5*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ;;
+
+ solaris*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
+ esac
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ ;;
+ motorola)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4.3*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ fi
+ ;;
+
+ sysv4.2uw2*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ hardcode_runpath_var=yes
+ runpath_var=LD_RUN_PATH
+ ;;
+
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text'
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ runpath_var='LD_RUN_PATH'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv5*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+ # $CC -shared without GNU ld will not create a library from C++
+ # object files and a static libstdc++, better avoid it by now
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+ ;;
+
+ uts4*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+ # Assume -lc should be added
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $_LT_AC_TAGVAR(archive_cmds, $1) in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ AC_MSG_CHECKING([whether -lc should be explicitly linked in])
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+ if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
+ then
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ else
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ fi
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)])
+ ;;
+ esac
+ fi
+ ;;
+esac
+])# AC_LIBTOOL_PROG_LD_SHLIBS
+
+
+# _LT_AC_FILE_LTDLL_C
+# -------------------
+# Be careful that the start marker always follows a newline.
+AC_DEFUN([_LT_AC_FILE_LTDLL_C], [
+# /* ltdll.c starts here */
+# #define WIN32_LEAN_AND_MEAN
+# #include <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #ifndef __CYGWIN__
+# # ifdef __CYGWIN32__
+# # define __CYGWIN__ __CYGWIN32__
+# # endif
+# #endif
+#
+# #ifdef __cplusplus
+# extern "C" {
+# #endif
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
+# #ifdef __cplusplus
+# }
+# #endif
+#
+# #ifdef __CYGWIN__
+# #include <cygwin/cygwin_dll.h>
+# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
+# HINSTANCE __hDllInstance_base;
+#
+# BOOL APIENTRY
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
+# {
+# __hDllInstance_base = hInst;
+# return TRUE;
+# }
+# /* ltdll.c ends here */
+])# _LT_AC_FILE_LTDLL_C
+
+
+# _LT_AC_TAGVAR(VARNAME, [TAGNAME])
+# ---------------------------------
+AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])])
+
+
+# old names
+AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL])
+AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+AC_DEFUN([AM_PROG_LD], [AC_PROG_LD])
+AC_DEFUN([AM_PROG_NM], [AC_PROG_NM])
+
+# This is just to silence aclocal about the macro not being used
+ifelse([AC_DISABLE_FAST_INSTALL])
+
+AC_DEFUN([LT_AC_PROG_GCJ],
+[AC_CHECK_TOOL(GCJ, gcj, no)
+ test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+ AC_SUBST(GCJFLAGS)
+])
+
+AC_DEFUN([LT_AC_PROG_RC],
+[AC_CHECK_TOOL(RC, windres, no)
+])
+
+############################################################
+# NOTE: This macro has been submitted for inclusion into #
+# GNU Autoconf as AC_PROG_SED. When it is available in #
+# a released version of Autoconf we should remove this #
+# macro and use it instead. #
+############################################################
+# LT_AC_PROG_SED
+# --------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible. Prefer GNU sed if found.
+AC_DEFUN([LT_AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for lt_ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+ fi
+ done
+ done
+done
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+ test ! -f $lt_ac_sed && break
+ cat /dev/null > conftest.in
+ lt_ac_count=0
+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+ # Check for GNU sed and select it if it is found.
+ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+ lt_cv_path_SED=$lt_ac_sed
+ break
+ fi
+ while true; do
+ cat conftest.in conftest.in >conftest.tmp
+ mv conftest.tmp conftest.in
+ cp conftest.in conftest.nl
+ echo >>conftest.nl
+ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+ cmp -s conftest.out conftest.nl || break
+ # 10000 chars as input seems more than enough
+ test $lt_ac_count -gt 10 && break
+ lt_ac_count=`expr $lt_ac_count + 1`
+ if test $lt_ac_count -gt $lt_ac_max; then
+ lt_ac_max=$lt_ac_count
+ lt_cv_path_SED=$lt_ac_sed
+ fi
+ done
+done
+])
+SED=$lt_cv_path_SED
+AC_MSG_RESULT([$SED])
+])
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 00000000..2f1ca33c
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1,910 @@
+# generated automatically by aclocal 1.10.1 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(AC_AUTOCONF_VERSION, [2.61],,
+[m4_warning([this file was generated for autoconf 2.61.
+You have another version of autoconf. It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.10'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.10.1], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too. Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.10.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(AC_AUTOCONF_VERSION)])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 8
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 9
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery. Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
+ [$1], CXX, [depcc="$CXX" am_compiler_list=],
+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], UPC, [depcc="$UPC" am_compiler_list=],
+ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ case $depmode in
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ none) break ;;
+ esac
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 3
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[for mf in $CONFIG_FILES; do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`AS_DIRNAME("$mf")`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`AS_DIRNAME(["$file"])`
+ AS_MKDIR_P([$dirpart/$fdir])
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+done
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled. FIXME. This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 8
+
+# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
+AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 13
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.60])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES(OBJC)],
+ [define([AC_PROG_OBJC],
+ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+AC_DEFUN([AM_MAINTAINER_MODE],
+[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+ dnl maintainer-mode is disabled by default
+ AC_ARG_ENABLE(maintainer-mode,
+[ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer],
+ USE_MAINTAINER_MODE=$enableval,
+ USE_MAINTAINER_MODE=no)
+ AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+ AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
+ MAINT=$MAINTAINER_MODE_TRUE
+ AC_SUBST(MAINT)dnl
+]
+)
+
+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+ am__include=include
+ am__quote=
+ _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ fi
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+ [[\\/$]]* | ?:[[\\/]]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t $srcdir/configure conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([acinclude.m4])
diff --git a/autogen.sh b/autogen.sh
new file mode 100755
index 00000000..186884d0
--- /dev/null
+++ b/autogen.sh
@@ -0,0 +1,164 @@
+#! /bin/bash
+
+###############################################################################
+#
+# Run this to generate the Makefile templates, etc.
+#
+###############################################################################
+
+THIS_PROGGIE_EXECUTABLE="./autogen.sh"
+THIS_PROGGIE_NAME="KVIrc autogen.sh"
+THIS_PROGGIE_VERSION="1.0.0"
+PKG_NAME="kvirc"
+DIE=0
+GEN_FILES="configure.in"
+
+USE_BUNDLED_LIBTOOL=0
+
+# Handle arguments
+
+
+while test "$#" -gt 0
+do
+ arg="$1"
+ shift
+
+ case $arg in
+ --help)
+ echo $THIS_PROGGIE_NAME $THIS_PROGGIE_VERSION
+ echo "Usage:"
+ echo $THIS_PROGGIE_EXECUTABLE "[options]"
+ echo "Options:"
+ echo " --bundled-libtool : use the bundled libtool instead"
+ echo " of the system one"
+ exit 0
+ ;;
+
+ --version)
+ echo $THIS_PROGGIE_NAME $THIS_PROGGIE_VERSION
+ exit 0
+ ;;
+
+ --bundled-libtool)
+ USE_BUNDLED_LIBTOOL=1
+ ;;
+
+ *)
+ echo "Unrecognized option $arg"
+ echo "See $THIS_PROGGIE_EXECUTABLE --help"
+ exit -1
+ ;;
+ esac
+done
+
+
+set -e
+
+function RUN_TOOL()
+{
+ if [ -z "$*" ]; then return; fi
+ echo "... Running $*"
+ $*
+}
+
+
+###############################################################################
+#
+#
+
+
+echo "... Generating build files for $PKG_NAME"
+
+(autoconf --version) < /dev/null > /dev/null 2>&1 || {
+ echo
+ echo "**Error**: You must have GNU \`autoconf' installed."
+ DIE=1
+}
+
+(test "$USE_BUNDLED_LIBTOOL" -eq 0) && {
+ (libtool --version) < /dev/null > /dev/null 2>&1 || {
+ echo "*Warning*: You don't have GNU \`libtool' installed."
+ echo "*Warning*: Using the buindled libtool instead."
+ USE_BUNDLED_LIBTOOL=1
+ }
+}
+
+(automake --version) < /dev/null > /dev/null 2>&1 || {
+ echo
+ echo "**Error**: You must have GNU \`automake' installed."
+ DIE=1
+ NO_AUTOMAKE=yes
+}
+
+# if no automake, do not bother testing for aclocal
+test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || {
+ echo
+ echo "**Error**: Missing \`aclocal'. The version of \`automake'"
+ echo "installed does not appear recent enough."
+ DIE=1
+}
+
+if test "$DIE" -eq 1; then
+ exit 1
+fi
+
+case $CC in
+xlc)
+ am_opt=--include-deps;;
+esac
+
+for coin in $GEN_FILES
+do
+ dr=`dirname $coin`
+ if test -f $dr/NO-AUTO-GEN; then
+ echo "... skipping $dr -- flagged as no auto-gen"
+ else
+ echo "... processing \"$dr\""
+ macrodirs=`sed -n -e 's,AM_ACLOCAL_INCLUDE(\(.*\)),\1,gp' < $coin`
+ (
+ cd $dr
+ aclocalinclude="$ACLOCAL_FLAGS"
+ for k in $macrodirs; do
+ if test -d $k; then
+ aclocalinclude="$aclocalinclude -I $k"
+ fi
+ done
+
+ MACRO_FILES="admin/acinclude.m4.in admin/libtool.m4.in"
+
+ cat $MACRO_FILES > acinclude.m4
+
+ if test "$USE_BUNDLED_LIBTOOL" -eq 0; then
+ echo "... Using system libtool"
+ echo "... Re-run with --bundled-libtool to use"
+ echo "... the libtool shipped with the KVIrc svn"
+ RUN_TOOL libtoolize --copy --force
+ else
+ echo "... Using bundled libtool"
+ rm -f admin/ltmain.sh
+ rm -f admin/config.guess
+ rm -f admin/config.sub
+ cp admin/libtool/ltmain.sh admin/ltmain.sh
+ cp admin/libtool/config.guess admin/config.guess
+ cp admin/libtool/config.sub admin/config.sub
+ fi
+
+ RUN_TOOL aclocal $aclocalinclude
+ if grep "^AM_CONFIG_HEADER" $coin > /dev/null; then
+ RUN_TOOL autoheader
+ fi
+ RUN_TOOL automake --add-missing --force-missing --copy $am_opt
+ RUN_TOOL autoconf
+ touch stamp-h.in
+ )
+ fi
+done
+
+echo "###"
+echo "### Done. The next step is ./configure --help"
+echo "### Take a look at the options (eventually read the INSTALL file)"
+echo "### and run ./configure <your_options>"
+echo "###"
+
+#
+###############################################################################
diff --git a/configure.in b/configure.in
new file mode 100755
index 00000000..822dfa14
--- /dev/null
+++ b/configure.in
@@ -0,0 +1,270 @@
+#------------------------------------------------------------------
+# configure.in for the KVIrc IRC client
+# Szymon Stefanek (07-04-2000)
+#------------------------------------------------------------------
+
+AC_INIT(README)
+
+AC_SS_HEADER([Trying to find out where I am])
+
+AC_CONFIG_AUX_DIR(admin)
+
+AC_CANONICAL_SYSTEM
+
+AC_SS_HEADER([Initializing automake])
+
+AC_PREREQ(2.52)
+
+AM_INIT_AUTOMAKE(kvirc,3.4.0)
+
+AM_MAINTAINER_MODE
+
+AC_PREFIX_DEFAULT(/usr/local)
+AM_CONFIG_HEADER(src/config.h)
+
+#------------------------------------------------------------------
+# HERE starts your real configure script
+#------------------------------------------------------------------
+
+AC_SS_INIT_VARIABLES
+
+AC_SS_HEADER([Checking the compilation mode])
+
+AC_SS_CXXFLAGS
+
+AC_SS_HEADER([Checking the C++ environment])
+
+AC_PROG_CC
+AC_AIX
+AC_MINIX
+AC_EXEEXT
+AC_LANG_CPLUSPLUS
+AC_PROG_CXX
+
+AC_SS_HEADER([Initializing libtool])
+
+AM_DISABLE_STATIC
+AC_LIBTOOL_DLOPEN
+KVIRC_PROG_LIBTOOL
+
+AC_SS_HEADER([Checking system properties])
+
+AC_SS_HEADER_CHECKS
+AC_SS_FUNCTION_CHECKS
+
+AC_SS_CHECK_IFADDR_STUFF
+AC_SS_CHECK_DYNAMIC_LABELS
+AC_SS_CHECK_BIG_ENDIAN
+AC_SS_MISC_OPTIONS
+
+AC_CHECK_SIZEOF(short int)
+AC_CHECK_SIZEOF(unsigned short int)
+AC_CHECK_SIZEOF(int)
+AC_CHECK_SIZEOF(unsigned int)
+AC_CHECK_SIZEOF(long int)
+AC_CHECK_SIZEOF(unsigned long int)
+AC_CHECK_SIZEOF(long long int)
+AC_CHECK_SIZEOF(unsigned long long int)
+AC_CHECK_SIZEOF(void *)
+
+#AC_SS_CHECK_KVISOCKLEN_T
+#AC_SS_CHECK_BOOL
+#AC_SS_LIBRARY_CHECKS
+#AC_SS_FIND_JPEG
+
+AC_SS_HEADER([Looking for required libraries])
+
+AC_SS_CHECK_DL
+AC_SS_CHECK_THREAD_STUFF
+
+AC_SS_HEADER([Looking for X])
+
+AC_SS_FIND_X
+AC_SS_CHECK_XSS
+AC_SS_HEADER([Looking for Qt])
+
+SS_QT3_MAJOR_VERSION_REQUIRED="3"
+SS_QT3_MINOR_VERSION_REQUIRED="0"
+SS_QT3_PATCH_LEVEL_REQUIRED="0"
+SS_QT3_GENERAL_FILE_TO_SEARCH="include/qinputdialog.h"
+SS_QT3_INCLUDE_FILE_TO_SEARCH="qiconview.h"
+
+SS_QT4_MAJOR_VERSION_REQUIRED="4"
+SS_QT4_MINOR_VERSION_REQUIRED="0"
+SS_QT4_PATCH_LEVEL_REQUIRED="0"
+SS_QT4_GENERAL_FILE_TO_SEARCH="include/QtCore/QtPlugin"
+SS_QT4_INCLUDE_FILE_TO_SEARCH="QtCore/QtPlugin"
+
+
+AC_SS_FIND_QT
+
+AC_SS_HEADER([Checking KDE])
+
+SS_KDE_GENERAL_FILE_TO_SEARCH="include/kwin.h"
+SS_KDE_INCLUDE_FILE_TO_SEARCH="kwin.h"
+
+AC_SS_FIND_KDE
+
+AC_SS_HEADER([Checking additional compilation options])
+AC_SS_CHECK_OPENSSL
+AC_SS_CHECK_ESD
+AC_SS_CHECK_ARTS
+AC_SS_CHECK_ZLIB
+AC_SS_CHECK_AUDIOFILE
+AC_SS_CHECK_OTHER_LIBS
+AC_SS_CHECK_PERL
+AC_SS_HEADER([Working out the final configuration])
+
+AC_SS_FINAL_CONFIG
+
+AC_SS_HEADER([Creating Makefiles])
+
+AC_OUTPUT( \
+ Makefile \
+ admin/Makefile \
+ admin/libtool/Makefile \
+ data/Makefile \
+ data/applnk/Makefile \
+ data/config/Makefile \
+ data/defscript/Makefile \
+ data/deftheme/Makefile \
+ data/deftheme/silverirc/Makefile \
+ data/doctemplates/Makefile \
+ data/helppics/Makefile \
+ data/icons/Makefile \
+ data/icons/16x16/Makefile \
+ data/icons/32x32/Makefile \
+ data/icons/48x48/Makefile \
+ data/icons/64x64/Makefile \
+ data/icons/128x128/Makefile \
+ data/icons/scalable/Makefile \
+ data/man/Makefile \
+ data/mimelnk/Makefile \
+ data/msgcolors/Makefile \
+ data/pics/Makefile \
+ data/pics/coresmall/Makefile \
+ data/protocols/Makefile \
+ data/resources/Makefile \
+ data/resources_mac/Makefile \
+ doc/Makefile \
+ doc/scriptexamples/Makefile \
+ doc/scriptexamples/antiidle/Makefile \
+ doc/scriptexamples/minesweeper/Makefile \
+ doc/scriptexamples/mp3share/Makefile \
+ doc/scriptexamples/playing/Makefile \
+ doc/scriptexamples/runmenu/Makefile \
+ doc/scriptexamples/simplehttp/Makefile \
+ doc/scriptexamples/tutorial/Makefile \
+ po/Makefile \
+ po/kvirc/Makefile \
+ po/modules/Makefile \
+ po/modules/about/Makefile \
+ po/modules/dcc/Makefile \
+ po/modules/editor/Makefile \
+ po/modules/filetransferwindow/Makefile \
+ po/modules/logview/Makefile \
+ po/modules/mediaplayer/Makefile \
+ po/modules/notifier/Makefile \
+ po/modules/options/Makefile \
+ po/modules/perl/Makefile \
+ po/modules/perlcore/Makefile \
+ po/modules/sharedfileswindow/Makefile \
+ po/modules/torrent/Makefile \
+ po/modules/theme/Makefile \
+ scripts/Makefile \
+ scripts/browser/Makefile \
+ scripts/config/Makefile \
+ scripts/config/kvirc-config \
+ scripts/helpsearch/Makefile \
+ src/Makefile \
+ src/kvilib/Makefile \
+ src/kvilib/build/Makefile \
+ src/kvilib/config/Makefile \
+ src/kvilib/core/Makefile \
+ src/kvilib/ext/Makefile \
+ src/kvilib/file/Makefile \
+ src/kvilib/include/Makefile \
+ src/kvilib/irc/Makefile \
+ src/kvilib/net/Makefile \
+ src/kvilib/system/Makefile \
+ src/kvilib/tal/Makefile \
+ src/kvirc/Makefile \
+ src/kvirc/build/Makefile \
+ src/kvirc/include/Makefile \
+ src/kvirc/kernel/Makefile \
+ src/kvirc/kvs/Makefile \
+ src/kvirc/module/Makefile \
+ src/kvirc/sparser/Makefile \
+ src/kvirc/ui/Makefile \
+ src/modules/Makefile \
+ src/modules/about/Makefile \
+ src/modules/action/Makefile \
+ src/modules/actioneditor/Makefile \
+ src/modules/addon/Makefile \
+ src/modules/addon/pics/Makefile \
+ src/modules/aliaseditor/Makefile \
+ src/modules/avatar/Makefile \
+ src/modules/chan/Makefile \
+ src/modules/channelsjoin/Makefile \
+ src/modules/clock/Makefile \
+ src/modules/codetester/Makefile \
+ src/modules/config/Makefile \
+ src/modules/context/Makefile \
+ src/modules/dialog/Makefile \
+ src/modules/dcc/Makefile \
+ src/modules/dockwidget/Makefile \
+ src/modules/editor/Makefile \
+ src/modules/eventeditor/Makefile \
+ src/modules/file/Makefile \
+ src/modules/filetransferwindow/Makefile \
+ src/modules/filetransferwindow/caps/Makefile \
+ src/modules/help/Makefile \
+ src/modules/http/Makefile \
+ src/modules/ident/Makefile \
+ src/modules/iograph/Makefile \
+ src/modules/lamerizer/Makefile \
+ src/modules/links/Makefile \
+ src/modules/list/Makefile \
+ src/modules/log/Makefile \
+ src/modules/logview/Makefile \
+ src/modules/logview/caps/Makefile \
+ src/modules/mask/Makefile \
+ src/modules/math/Makefile \
+ src/modules/mediaplayer/Makefile \
+ src/modules/mircimport/Makefile \
+ src/modules/mircimport/caps/Makefile \
+ src/modules/mircimport/pics/Makefile \
+ src/modules/my/Makefile \
+ src/modules/notifier/Makefile \
+ src/modules/notifier/pics/Makefile \
+ src/modules/objects/Makefile \
+ src/modules/options/Makefile \
+ src/modules/perl/Makefile \
+ src/modules/perlcore/Makefile \
+ src/modules/popupeditor/Makefile \
+ src/modules/raweditor/Makefile \
+ src/modules/regchan/Makefile \
+ src/modules/reguser/Makefile \
+ src/modules/rijndael/Makefile \
+ src/modules/rijndael/caps/Makefile \
+ src/modules/setup/Makefile \
+ src/modules/sharedfile/Makefile \
+ src/modules/sharedfileswindow/Makefile \
+ src/modules/sharedfileswindow/caps/Makefile \
+ src/modules/snd/Makefile \
+ src/modules/socketspy/Makefile \
+ src/modules/spaste/Makefile \
+ src/modules/str/Makefile \
+ src/modules/system/Makefile \
+ src/modules/term/Makefile \
+ src/modules/texticons/Makefile \
+ src/modules/theme/Makefile \
+ src/modules/tip/Makefile \
+ src/modules/tmphighlight/Makefile \
+ src/modules/toolbar/Makefile \
+ src/modules/toolbareditor/Makefile \
+ src/modules/torrent/Makefile \
+ src/modules/url/Makefile \
+ src/modules/url/caps/Makefile \
+ src/modules/window/Makefile \
+)
diff --git a/data/Makefile.am b/data/Makefile.am
new file mode 100644
index 00000000..1d329f15
--- /dev/null
+++ b/data/Makefile.am
@@ -0,0 +1,6 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+SUBDIRS = applnk config defscript deftheme doctemplates \
+helppics icons man mimelnk msgcolors pics protocols resources resources_mac
diff --git a/data/applnk/Makefile.am b/data/applnk/Makefile.am
new file mode 100644
index 00000000..cf7c6f3d
--- /dev/null
+++ b/data/applnk/Makefile.am
@@ -0,0 +1,5 @@
+tmpdir = $(applnkdir)
+
+tmp_DATA = kvirc.desktop
+
+EXTRA_DIST = $(tmp_DATA)
diff --git a/data/applnk/kvirc.desktop b/data/applnk/kvirc.desktop
new file mode 100644
index 00000000..0b531899
--- /dev/null
+++ b/data/applnk/kvirc.desktop
@@ -0,0 +1,18 @@
+[Desktop Entry]
+BinaryPattern=
+GenericName=IRC Client
+Comment=Connect to Internet Relay Chat
+MimeType=application/x-kva;application/x-kvt
+Exec=kvirc -m %u
+Icon=kvirc
+MapNotify=true
+Name=KVIrc 3
+SwallowExec=
+SwallowTitle=
+Terminal=false
+TerminalOptions=
+Path=
+Type=Application
+X-KDE-SubstituteUID=false
+X-KDE-Username=
+X-KDE-StartupNotify=true
diff --git a/data/config/Makefile.am b/data/config/Makefile.am
new file mode 100644
index 00000000..4b41fbd9
--- /dev/null
+++ b/data/config/Makefile.am
@@ -0,0 +1,5 @@
+tmpdir = $(configdir)
+
+tmp_DATA = serverdb.kvc texticons.kvc
+
+EXTRA_DIST = $(tmp_DATA)
diff --git a/data/config/serverdb.kvc b/data/config/serverdb.kvc
new file mode 100644
index 00000000..f1c6266a
--- /dev/null
+++ b/data/config/serverdb.kvc
@@ -0,0 +1,1611 @@
+# KVIrc configuration file
+
+[Accessirc]
+0_Hostname=irc.accessirc.net
+0_Description=Accessirc:%20Random%20server
+NServers=1
+[Acestar]
+0_Hostname=irc.acestar.org
+0_Description=Acestar:%20Random%20server
+NServers=1
+[Action-IRC]
+0_Hostname=irc.action-irc.net
+0_Description=Action-IRC:%20Random%20server
+NServers=1
+[AlternativeNet]
+0_Hostname=irc.altnet.org
+0_Description=Alternativenet:%20Random%20server
+NServers=1
+[Afternet]
+0_Hostname=irc.afternet.org
+0_Description=Afternet:%20Random%20server
+NServers=1
+[Anothernet]
+0_Hostname=irc.another.net
+0_Description=AnotherNet:%20Random%20server
+NServers=1
+[ArabChat]
+0_Hostname=irc.arabchat.org
+0_Description=ArabChat:%20Random%20server
+NServers=1
+[AsiaTalk]
+0_Hostname=irc.asiatalk.org
+0_Description=AsiaTalk:%20Random%20server
+NServers=1
+[AstroLink]
+0_Hostname=irc.astrolink.org
+0_Description=AstroLink:%20Random%20server
+NServers=1
+[Asylumnet]
+0_Hostname=irc.asylum-net.org
+0_Description=Asylumnet:%20Random%20server
+NServers=1
+[Austnet]
+0_Hostname=au.austnet.org
+0_Description=Austnet:%20Random%20AU%20server
+1_Hostname=nz.austnet.org
+1_Description=Austnet:%20Random%20NZ%20server
+2_Hostname=sg.austnet.org
+2_Description=Austnet:%20Random%20SG%20server
+3_Hostname=us.austnet.org
+3_Description=Austnet:%20Random%20US%20server
+NServers=4
+[AwesomeChat]
+0_Hostname=irc.awesomechat.net
+0_Description=AwesomeChat:%20Random%20server
+NServers=1
+[Axenet]
+0_Hostname=irc.axenet.org
+0_Description=Axenet:%20Random%20server
+NServers=1
+[Azzurra]
+0_Hostname=irc.azzurra.org
+0_Description=Main%20Random%20Server
+1_Hostname=atlantis.azzurra.org
+1_Description=HUB%20Routing%20Server
+2_Hostname=twilight.azzurra.org
+2_Description=HUB%20Routing%20Server
+3_Hostname=vogon.azzurra.org
+3_Description=HUB%20Routing%20Server
+4_Hostname=b-network.azzurra.org
+4_Description=B-Network%20Leaf%20Server
+5_Hostname=caltanet.azzurra.org
+5_Description=Caltanet%20Leaf%20Server
+6_Hostname=cheapnet.azzurra.org
+6_Description=Cheapnet%20Leaf%20Server
+7_Hostname=libero.azzurra.org
+7_Description=Libero%20Leaf%20Server
+8_Hostname=oltrelinux.azzurra.org
+8_Description=Oltrelinux%20Leaf%20Server
+9_Hostname=nexlab.azzurra.org
+9_Description=Nexlab%20Leaf%20Server
+10_Hostname=penguin.azzurra.org
+10_Description=Penguin%20Leaf%20Server
+11_Hostname=radiomarte.azzurra.org
+11_Description=RadioMarte%20Leaf%20Server
+12_Hostname=sashimi.azzurra.org
+12_Description=Sashimi%20Leaf%20Server
+13_Hostname=sbrize.azzurra.org
+13_Description=Sbrize%20Leaf%20Server
+14_Hostname=tin.azzurra.org
+14_Description=Tin%20Leaf%20Server
+15_Hostname=unina.azzurra.org
+15_Description=Unina%20Leaf%20Server
+16_Hostname=wmgitalia.azzurra.org
+16_Description=WMG%20Leaf%20Server
+17_Hostname=fastweb.azzurra.org
+17_Description=Fastweb%20Routing%20Server
+18_Hostname=gamma.azzurra.org
+18_Description=Gamma%20Fastweb%20Server
+19_Hostname=orion.azzurra.org
+19_Description=Orion%20Fastweb%20Server
+20_Hostname=ssitalia.azzurra.org
+20_Description=SSItalia%20Fastweb%20Server
+21_Hostname=stealth.azzurra.org
+21_Description=Stealth%20Fastweb%20Server
+22_Hostname=irc6.azzurra.org
+22_Description=IPv6%20Routing%20Server
+23_Hostname=itgate.azzurra.org
+23_Description=ITgate%20IPv6%20Server
+24_Hostname=ngnet.azzurra.org
+24_Description=Ngnet%20IPv6%20Server
+NServers=25
+Description=Italian%20Main%20Network
+[Beirut]
+0_Hostname=irc.beirut.com
+0_Description=Random%20server
+1_Hostname=us.beirut.com
+1_Description=Random%20US%20server
+2_Hostname=eu.beirut.com
+2_Description=Random%20EU%20server
+3_Hostname=downtown.beirut.com
+3_Description=Fullerton
+4_Hostname=verdun.beirut.com
+4_Description=Chicago
+5_Hostname=hamra.beirut.com
+5_Description=New%20York
+6_Hostname=achrafieh.beirut.com
+6_Description=Hamburg
+7_Hostname=port.beirut.com
+7_Description=London
+8_Hostname=sinelfil.beirut.com
+8_Description=Frankfurt
+9_Hostname=irc.dikt.no
+9_Description=Oslo
+NServers=10
+[Beyondirc]
+0_Hostname=irc.beyondirc.net
+0_Description=BeyondIRC:%20Random%20server
+NServers=1
+[Bitlbee]
+0_Hostname=im.bitlbee.org
+0_Description=InterLAB%20BV,%20Netherlands
+1_Hostname=im.uk.bitlbee.org
+1_Description=SSInternet,%20UK
+2_Hostname=im.starkast.net
+2_Description=TeleFortress,%20Sweden
+3_Hostname=bitlbee.hensema.net
+3_Description=HostingXS,%20Amsterdam
+4_Hostname=im.okkernoot.net
+4_Description=Almere,%20Netherlands
+5_Hostname=im.fr.bitlbee.org
+5_Description=ProXad,%20France
+6_Hostname=im.sixxs.net
+6_Description=SixXS,%20Netherlands
+7_Hostname=bitlbee.extreme-players.de
+7_Description=Global%20Access,%20Germany
+8_Hostname=irc2im.picasa.hu
+8_Description=Hungary,%20Budapest
+9_Hostname=bitlbee.salooo.org
+9_Description=Berlin,%20Germany
+NServers=10
+Description=IRC%20%3C--%3E%20MSN%20gateway
+[Blabbernet]
+0_Hostname=irc.blabber.net
+0_Description=Blabbernet:%20Random%20server
+NServers=1
+[Blitzed]
+0_Hostname=irc.blitzed.org
+0_Description=Blitzed:%20Random%20server
+NServers=1
+[Brasilchat]
+0_Hostname=irc.brasilchat.org
+0_Description=Brasilchat:%20Random%20server
+NServers=1
+[Brasirc]
+0_Hostname=irc.brasirc.net
+0_Description=Brasirc:%20Random%20server
+1_Hostname=irc.libnet.com.br
+1_Description=Brasirc:%20BR,%20PA,%20Belem
+2_Hostname=irc.matrix.net.br
+2_Description=Brasirc:%20BR,%20SC,%20Florianopolis
+NServers=3
+[Brasnet]
+0_Hostname=irc.brasnet.org
+0_Description=Brasnet:%20Random%20server
+1_Hostname=eu.brasnet.org
+1_Description=Brasnet:%20Random%20European%20server
+2_Hostname=us.brasnet.org
+2_Description=Brasnet:%20Random%20US%20server
+NServers=3
+[Bulgaria]
+0_Hostname=irc.bulgaria.org
+0_Description=Bulgaria:%20Random%20server
+NServers=1
+[CCnet]
+0_Hostname=irc.cchat.net
+0_Description=CCnet:%20Random%20server
+1_Hostname=irc2.cchat.net
+1_Description=CCnet:%20US,%20TX,%20Dallas
+NServers=2
+[Chat-Net]
+0_Hostname=irc.chat-net.org
+0_Description=Chat-Net:%20Random%20server
+NServers=1
+[ChatArea]
+0_Hostname=irc.chatarea.net
+0_Description=ChatArea:%20Random%20server
+NServers=1
+[Chatcafe]
+0_Hostname=irc.chatcafe.net
+0_Description=Chatcafe:%20Random%20server
+NServers=1
+[ChatCentral2]
+0_Hostname=irc.cc2.org
+0_Description=ChatCentral2:%20Random%20server
+NServers=1
+[ChatCircuit]
+0_Hostname=irc.chatcircuit.com
+0_Port=6668
+0_Description=ChatCircuit:%20Random%20server
+NServers=1
+[ChatFactory]
+0_Hostname=irc.chatfactory.net
+0_Description=ChatFactory:%20Random%20server
+1_Hostname=power.chatfactory.net
+1_Description=ChatFactory:%20Brussels,%20EU
+NServers=2
+[Chatlink]
+0_Hostname=irc.chatlink.org
+0_Description=Chatlink:%20Random%20server
+NServers=1
+[Chatnet]
+0_Hostname=au.chatnet.org
+0_Description=Chatnet:%20Random%20AU%20server
+1_Hostname=eu.chatnet.org
+1_Description=Chatnet:%20Random%20EU%20server
+2_Hostname=us.chatnet.org
+2_Description=Chatnet:%20Random%20US%20server
+NServers=3
+[ChatPR]
+0_Hostname=irc.chatpr.org
+0_Description=ChatPR:%20Random%20server
+NServers=1
+[Chatpinoy]
+0_Hostname=irc.chatpinoy.com
+0_Description=Chatpinoy:%20Random%20server
+NServers=1
+[Chatroom]
+0_Hostname=irc.chatroom.org
+0_Description=Chatroom:%20Random%20server
+NServers=1
+[Chatsolutions]
+0_Hostname=irc.chatsolutions.org
+0_Description=Chatsolutions:%20Random%20server
+NServers=1
+[Chatster]
+0_Hostname=irc.chatster.org
+0_Description=Chatster:%20Random%20server
+NServers=1
+[ChatX]
+0_Hostname=irc.chatx.net
+0_Description=ChatX:%20Random%20server
+NServers=1
+[CNN]
+0_Hostname=chat.cnn.com
+0_Description=CNN:%20CNN%20News%20discussions
+NServers=1
+[Coolchat]
+0_Hostname=irc.coolchat.net
+0_Description=Coolchat:%20Random%20server
+NServers=1
+[Criten]
+0_Hostname=irc.criten.net
+0_Description=Criten:%20Random%20server
+NServers=1
+[Cyberchat]
+0_Hostname=irc.cyberchat.org
+0_Description=Cyberchat:%20Random%20server
+NServers=1
+[CyGanet]
+0_Hostname=irc.cyga.net
+0_Description=CyGanet:%20Random%20server
+NServers=1
+[DALnet]
+0_Hostname=irc.dal.net
+0_Description=Main%20Random%20Server
+1_Hostname=as.dal.net
+1_Description=Asia%20Random%20Server
+2_Hostname=hotspeed.sg.as.dal.net
+2_Description=Singapore%20Server
+3_Hostname=mesra.kl.my.dal.net
+3_Description=Malaysia%20Server
+4_Hostname=ca.dal.net
+4_Description=Canada%20Random%20Server
+5_Hostname=maple.ix.ca.dal.net
+5_Description=Maple%20Server
+6_Hostname=toronto.on.ca.dal.net
+6_Description=Toronto%20Server
+7_Hostname=eu.dal.net
+7_Description=Europe%20Random%20Server
+8_Hostname=arcor.de.eu.dal.net
+8_Description=Germany%20Server
+9_Hostname=brain.hub.eu.dal.net
+9_Description=HUB%20Server
+10_Hostname=gaston.se.eu.dal.net
+10_Description=Sweden%20Server
+11_Hostname=genesis-r.uk.eu.dal.net
+11_Description=UK%20Server
+12_Hostname=matrix.de.eu.dal.net
+12_Description=Germany%20Server
+13_Hostname=mozilla.se.eu.dal.net
+13_Description=Sweden%20Server
+14_Hostname=powertech.no.eu.dal.net
+14_Description=Norway%20Server
+15_Hostname=waffle.ix.eu.dal.net
+15_Description=Waffle%20Server
+16_Hostname=us.dal.net
+16_Description=USA%20Random%20Server
+17_Hostname=aeon.nj.us.dal.net
+17_Description=USA%20Server
+18_Hostname=broadway.ny.us.dal.net
+18_Description=USA%20Server
+19_Hostname=hollywood.ix.us.dal.net
+19_Description=USA%20Server
+20_Hostname=jade.va.us.dal.net
+20_Description=USA%20Server
+21_Hostname=jingo.ix.us.dal.net
+21_Description=USA%20Server
+22_Hostname=loyalty.ix.us.dal.net
+22_Description=USA%20Server
+23_Hostname=masters.ix.us.dal.net
+23_Description=USA%20Server
+24_Hostname=novel.fl.us.dal.net
+24_Description=USA%20Server
+25_Hostname=punch.va.us.dal.net
+25_Description=USA%20Server
+26_Hostname=rangers.ix.us.dal.net
+26_Description=USA%20Server
+27_Hostname=redemption.ix.us.dal.net
+27_Description=USA%20Server
+28_Hostname=riga-r.ca.us.dal.net
+28_Description=USA%20Server
+29_Hostname=rumble.fl.us.dal.net
+29_Description=USA%20Server
+30_Hostname=serenity.ix.us.dal.net
+30_Description=USA%20Server
+31_Hostname=soho.ix.us.dal.net
+31_Description=USA%20Server
+32_Hostname=swiftco.wa.us.dal.net
+32_Description=USA%20Server
+NServers=33
+[Darkfire]
+0_Hostname=irc.darkfire.net
+0_Description=Darkfire:%20Random%20server
+NServers=1
+[Darkfyre]
+0_Hostname=irc.darkfyre.net
+0_Description=Darkfyre:%20Random%20server
+NServers=1
+[DarkMyst]
+0_Hostname=irc.darkmyst.org
+0_Description=DarkMyst:%20Random%20server
+NServers=1
+[DarkServ]
+0_Hostname=irc.darkserv.net
+0_Description=DarkServ:%20Random%20server
+NServers=1
+[Darktree]
+0_Hostname=irc.darktree.net
+0_Description=Darktree:%20Random%20server
+NServers=1
+[Deepspace]
+0_Hostname=irc.deepspace.org
+0_Description=Deepspace:%20Disability%20network
+NServers=1
+[Different]
+0_Hostname=irc.different.net
+0_Description=Different:%20Random%20server
+NServers=1
+[Digarix]
+0_Hostname=irc.digarix.net
+0_Description=Digarix:%20Random%20server
+NServers=1
+[Digatech]
+0_Hostname=irc.digatech.net
+0_Description=Digatech:%20Random%20server
+NServers=1
+[Digitalirc]
+0_Hostname=irc.digitalirc.net
+0_Description=Digitalirc:%20Random%20server
+NServers=1
+[Discussioni]
+0_Hostname=irc.discussioni.org
+0_Description=Discussioni%20random%20server
+1_Hostname=ipv6.discussioni.org
+1_Description=Experimental%20IPv6%20Server
+1_Port=5776
+2_Hostname=Bolzano1.IT.Discussioni.Org
+2_Description=Blozano1
+3_Hostname=Bolzano2.IT.Discussioni.Org
+3_Description=Bolzano2
+4_Hostname=Chieti.IT.Discussioni.Org
+4_Description=SSL%20ready%20server
+4_Port=9999
+4_SSL=true
+5_Hostname=Milano.IT.Discussioni.Org
+5_Description=Milano
+5_Port=6669
+6_Hostname=Roma.IT.Discussioni.Org
+6_Description=Roma
+6_Port=6669
+7_Hostname=Roma2.IT.Discussioni.Org
+7_Description=Roma2
+7_Port=6668
+8_Hostname=Torino.IT.Discussioni.Org
+8_Description=Torino
+8_Port=6669
+NServers=9
+Description=Italian%20Network
+[Dobbernet]
+0_Hostname=irc.dobber.net
+0_Description=Dobbernet:%20Random%20server
+NServers=1
+[DogmNet]
+0_Hostname=irc.dogm.net
+0_Description=Main%20network%20server
+1_Hostname=irc.rovno.ua
+1_Description=Main%20UA%20server
+2_Hostname=irc.chat.uz
+2_Description=Main%20UZ%20server
+NServers=3
+Description=Russian%20Network
+Encoding=CP-1251
+[DragonLynk]
+0_Hostname=irc.dragonlynk.net
+0_Description=DragonLynk:%20Random%20server
+NServers=1
+[Dreamcast]
+0_Hostname=irc0.dreamcast.com
+0_Description=Dreamcast:%20Random%20server
+NServers=1
+[Dreamnet]
+0_Hostname=irc.dreamnet.org
+0_Description=Dreamnet:%20Random%20server
+NServers=1
+[Dwarfstar]
+0_Hostname=irc.dwarfstar.net
+0_Description=DwarfStar:%20Random%20server
+NServers=1
+[Dynastynet]
+0_Hostname=irc.dynastynet.net
+0_Description=Dynastynet:%20Random%20server
+NServers=1
+[EFnet]
+0_Hostname=irc.efnet.org
+0_Description=Main%20Random%20Server
+1_Hostname=irc.efnet.ca
+1_Description=Canada%20Random%20Server
+2_Hostname=irc.arcti.ca
+2_Description=Calgary%20Server
+3_Hostname=efnet.teleglobe.net
+3_Description=Montreal%20Server
+4_Hostname=irc.dks.ca
+4_Description=Toronto%20Server
+5_Hostname=ircd.arcti.ca
+5_Description=Calgary%20HUB%20Server
+6_Hostname=irc.igs.ca
+6_Description=Toronto%20Server
+7_Hostname=irc.efnet.eu
+7_Description=Europe%20Random%20Server
+8_Hostname=irc.dkom.at
+8_Description=Vienna%20Server
+9_Hostname=irc.efnet.pl
+9_Description=Warsaw%20Server
+10_Hostname=efnet.ipv6.xs4all.nl
+10_Description=Amsterdam%20IPv6%20Server
+11_Hostname=irc.du.se
+11_Description=Borlange%20Server
+12_Hostname=efnet.cs.hut.fi
+12_Description=Helsinki%20Server
+13_Hostname=irc.inter.net.il
+13_Description=Tel%20Aviv%20Server
+14_Hostname=irc.inet.tele.dk
+14_Description=Aarhus%20Server
+15_Hostname=irc.ipv6.inter.net.il
+15_Description=Tel%20Aviv%20IPv6%20Server
+16_Hostname=irc.homelien.no
+16_Description=Oslo%20IPv6%20Server
+17_Hostname=ircd.efnet.no
+17_Description=Oslo%20HUB%20Server
+18_Hostname=efnet.xs4all.nl
+18_Description=Amsterdam%20Server
+19_Hostname=hub.il
+19_Description=EFnet%20Israel%20HUB%20Server
+20_Hostname=irc.efnet.ru
+20_Description=Moscow%20Server
+21_Hostname=irc.efnet.no
+21_Description=Oslo%20Server
+22_Hostname=irc.daxnet.no
+22_Description=Oslo%20Server
+23_Hostname=irc.efnet.fr
+23_Description=Paris%20Server
+24_Hostname=hub.se
+24_Description=EFnet%20Sweden%20HUB%20Server
+25_Hostname=hub.efnet.nl
+25_Description=EFnet%20Netherlands%20HUB%20Server
+26_Hostname=irc.ac.za
+26_Description=South%20Africa%20IPv6%Server
+27_Hostname=efnet.port80.se
+27_Description=Stockholm%20IPv6%20Server
+28_Hostname=irc.dataphone.se
+28_Description=Stockholm%20Server
+29_Hostname=irc.efnet.nl
+29_Description=Ede%20Server
+30_Hostname=efnet.demon.co.uk
+30_Description=London%20Server
+31_Hostname=hub.uk
+31_Description=EFnet%20UK%20HUB%20Server
+32_Hostname=hub.dk
+32_Description=EFnet%20Denmark%20HUB%20Server
+33_Hostname=irc.pte.hu
+33_Description=Pecs%20Server
+34_Hostname=irc.efnet.us
+34_Description=USA%20Random%20Server
+35_Hostname=irc.colosolutions.net
+35_Description=Orlando%20Server
+36_Hostname=irc.umich.edu
+36_Description=Ann%20Arbor%20Server
+37_Hostname=irc.desync.com
+37_Description=Tampa%20Server
+38_Hostname=irc.easynews.com
+38_Description=Phoenix%20Server
+39_Hostname=chat.efnet.org
+39_Description=Chicago%20Server
+40_Hostname=irc.servercentral.net
+40_Description=Chicago%20Server
+41_Hostname=ircd.he.net
+41_Description=Fremont%20HUB%20Server
+42_Hostname=irc.umn.edu
+42_Description=Minneapolis%20Server
+43_Hostname=irc.mzima.net
+43_Description=Los%20Angeles%20Server
+44_Hostname=irc.eversible.com
+44_Description=Miami%20Server
+45_Hostname=ircd.desync.com
+45_Description=Tampa%20HUB%20Server
+46_Hostname=irc.SHOUTcast.com
+46_Description=Dulles%20Server
+47_Hostname=irc.vel.net
+47_Description=Los%20Angeles%20Server
+48_Hostname=irc.ptptech.com
+48_Description=Ashburn%20IPv6%20Server
+49_Hostname=hub.efnet.us
+49_Description=USA%20HUB%20Server
+50_Hostname=irc2.choopa.net
+50_Description=New%20York%20Server
+51_Hostname=ircd.llnw.net
+51_Description=Phoenix%20HUB%20Server
+52_Hostname=irc.blackened.com
+52_Description=Phoenix%20Server
+53_Hostname=irc.choopa.net
+53_Description=New%20York%20IPv6%20Server
+54_Hostname=ircd.nac.net
+54_Description=New%20York%20HUB%20Server
+55_Hostname=irc.nac.net
+55_Description=New%20York%20Server
+56_Hostname=ircd.choopa.net
+56_Description=New%20York%20HUB%20Server
+57_Hostname=irc.blessed.net
+57_Description=Maitland%20Server
+58_Hostname=irc.prison.net
+58_Description=San%20Francisco%20Server
+59_Hostname=irc.wh.verio.net
+59_Description=Reston%20Server
+60_Hostname=irc.mindspring.com
+60_Description=Atlanta%20Server
+61_Hostname=irc.he.net
+61_Description=Fremont%20Server
+NServers=62
+[EgyptianIRC]
+0_Hostname=irc.egyptianirc.net
+0_Description=EgyptianIRC:%20Random%20server
+NServers=1
+[Eleethal]
+0_Hostname=irc.eleethal.com
+0_Description=Eleethal:%20Random%20server
+NServers=1
+[EnterTheGame]
+0_Hostname=irc.enterthegame.com
+0_Description=EntertheGame:%20Random%20server
+NServers=1
+[Escaped]
+0_Hostname=irc.escaped.net
+0_Description=Escaped:%20Random%20server
+NServers=1
+[Esprit]
+0_Hostname=irc.esprit.net
+0_Description=Esprit:%20Random%20server
+NServers=1
+[euIRC]
+0_Hostname=irc.euirc.net
+0_Description=euIRC:%20Random%20server
+NServers=1
+[EuropNet]
+0_Hostname=irc.europnet.org
+0_Description=EuropNet round robin
+1_Hostname=irc.free.fr
+1_Description=Free irc server
+2_Hostname=irc.librenet.net
+2_Description=Librenet network server
+3_Hostname=irc.global-irc.net
+3_Description=Global-irc server
+NServers=4
+Description=French%20Network
+[ExodusIRC]
+0_Hostname=irc.exodusirc.net
+0_Description=ExodusIRC:%20Random%20server
+NServers=1
+[FDFnet]
+0_Hostname=irc.fdf.net
+0_Description=FDFnet:%20Random%20server
+NServers=1
+[FEFnet]
+0_Hostname=irc.fef.net
+0_Description=FEFnet:%20Random%20server
+NServers=1
+[Forestnet]
+0_Hostname=irc.forestnet.org
+0_Description=Forestnet:%20Random%20server
+NServers=1
+[FreedomChat]
+0_Hostname=chat.freedomchat.net
+0_Description=FreedomChat:%20Random%20server
+NServers=1
+[Freenode]
+0_Hostname=irc.freenode.org
+0_Description=Main Freenode router
+1_Hostname=chat.ap.freenode.net
+1_Description=Main%20Asia-Pacific%20router
+2_Hostname=tolkien.freenode.net
+2_Description=Taoyuan,%20Taiwan
+3_Hostname=chat.au.freenode.net
+3_Description=Main%20Australia%20router
+4_Hostname=asimov.freenode.net
+4_Description=Brisbane,%20Australia
+5_Hostname=chat.eu.freenode.net
+5_Description=Main%20Europe%20router
+6_Hostname=kornbluth.freenode.net
+6_Description=Frankfurt,%20Germany
+7_Hostname=orwell.freenode.net
+7_Description=Helsinki,%20Finland
+8_Hostname=sterling.freenode.net
+8_Description=Hoofddorp,%20Netherland
+9_Hostname=calvino.freenode.net
+9_Description=Milano,%20Italy
+10_Hostname=adams.freenode.net
+10_Description=Oslo,%20Norway
+11_Hostname=gibson.freenode.net
+11_Description=Oslo,%20Norway
+12_Hostname=leguin.freenode.net
+12_Description=Umea,%20Sweden
+13_Hostname=lem.freenode.net
+13_Description=Moscow,%20Russia
+14_Hostname=pratchett.freenode.net
+14_Description=London,%20United%20Kingdom
+15_Hostname=ipv6.chat.eu.freenode.net
+15_Description=Main%20Europe%20IPv6%20router
+16_Hostname=goethe.freenode.net
+16_Description=Hoofddorp,%20Netherland
+17_Hostname=calkins.freenode.net
+17_Description=Milano,%20Italy
+18_Hostname=crichton.freenode.net
+18_Description=Oslo,%20Norway
+19_Hostname=chat.us.freenode.net
+19_Description=Main%20USA%20router
+20_Hostname=einstein.freenode.net
+20_Description=Corvallis,%20OR,%20USA
+21_Hostname=niven.freenode.net
+21_Description=Corvallis,%20OR,%20USA
+22_Hostaname=zelazny.freenode.net
+22_Description=Corvallis,%20OR,%20USA
+23_Hostname=zahn.freenode.net
+23_Description=Corvallis,%20OR,%20USA
+24_Hostname=brown.freenode.net
+24_Description=Madison,%20WI,%20USA
+25_Hostname=anthony.freenode.net
+25_Description=Irvine,%20CA,%20USA
+NServers=26
+Description=The%20FOSS%20Network
+[FunNet]
+0_Hostname=irc.funnet.org
+0_Description=FunNet:%20Random%20server
+NServers=1
+[GalaxyNet]
+0_Hostname=irc.galaxynet.org
+0_Description=Galaxynet:%20Random%20server
+1_Hostname=auckland.nz.galaxynet.org
+1_Description=Galaxynet:%20AU,%20NZ,%20Auckland
+2_Hostname=freei.us.galaxynet.org
+2_Description=Galaxynet:%20US,%20WA,%20Seattle
+3_Hostname=gymnet.us.galaxynet.org
+3_Description=Galaxynet:%20US,%20FL,%20Florida
+4_Hostname=online.be.galaxynet.org
+4_Description=Galaxynet:%20EU,%20BE,%20Online
+5_Hostname=vltmedia.se.galaxynet.org
+5_Description=Galaxynet:%20EU,%20SE,%20Vltmedia
+NServers=6
+[Gamesnet]
+0_Hostname=east.gamesnet.net
+0_Description=Gamesnet:%20Random%20east%20US%20server
+1_Hostname=west.gamesnet.net
+1_Description=Gamesnet:%20Random%20west%20US%20server
+NServers=2
+[Gameznet]
+0_Hostname=irc.gameznet.com
+0_Description=Gameznet:%20Random%20server
+NServers=1
+[GizNet]
+0_Hostname=irc.giznet.com
+0_Description=GizNet:%20Random%20server
+NServers=1
+[Globalchat]
+0_Hostname=irc.globalchat.org
+0_Description=Globalchat:%20Random%20server
+NServers=1
+[GRnet]
+0_Hostname=srv.irc.gr
+0_Description=Grnet:%20Random%20server
+1_Hostname=gr.irc.gr
+1_Description=Grnet:%20Random%20EU%20server
+2_Hostname=us.irc.gr
+2_Description=Grnet:%20Random%20US%20server
+NServers=3
+[HabberNet]
+0_Hostname=irc.habber.net
+0_Description=HabberNet:%20Random%20server
+NServers=1
+[HanIRC]
+0_Hostname=irc.hanirc.org
+0_Description=HanIRC:%20Random%20server
+NServers=1
+[Hellenicnet]
+0_Hostname=irc.mirc.gr
+0_Description=Hellenicnet:%20Random%20server
+NServers=1
+[Hybnet]
+0_Hostname=irc.hybnet.net
+0_Description=Hybnet:%20Random%20server
+NServers=1
+[ICQnet]
+0_Hostname=irc.icq.com
+0_Description=ICQnet:%20Random%20server
+NServers=1
+[Infatech]
+0_Hostname=irc.infatech.net
+0_Description=Infatech:%20Random%20server
+NServers=1
+[Infinity]
+0_Hostname=irc.infinity-irc.org
+0_Description=Infinity:%20Random%20server
+NServers=1
+[Infomatrix]
+0_Hostname=irc.infomatrix.net
+0_Description=Infomatrix:%20Random%20server
+NServers=1
+[IRC.by]
+0_Hostname=irc.by
+0_Description=Random%20server
+NServers=1
+Description=The%20Biggest%20Belarus%20Network
+Encoding=CP-1251
+[IRC-Hispano]
+0_Hostname=irc.irc-hispano.org
+0_Description=IRC-Hispano:%20Random%20server
+NServers=1
+Description=Spanish%20Network
+[IRCGnet]
+0_Hostname=irc.ircgnet.net
+0_Description=IRCGNet:%20Main%20service
+1_Hostname=irc.ircgnet.net
+1_Description=IRCGNet:%20SSL%20service
+1_Port=6697
+2_Hostname=ops.ircgnet.net
+2_Description=IRCGnet:%20Alternate%20service
+NServers=3
+[IRChat]
+0_Hostname=irc.irchat.net
+0_Description=IRChat:%20Random%20server
+NServers=1
+[IRChat-br]
+0_Hostname=irc.irchat.com.br
+0_Description=IRChat-br:%20Random%20server
+NServers=1
+[IRCItalia]
+0_Hostname=cagliari.ircitalia.net
+0_Description=IRCItalia%20network
+1_Hostname=campania.italiachat.net
+1_Description=ItaliaChat%20network
+2_Hostname=cosenza.ircitalia.net
+2_Description=IRCItalia%20network
+3_Hostname=lazio.italiachat.net
+3_Description=ItaliaChat%20network%20main%20server
+4_Hostname=pagana.italiachat.net
+4_Description=Pagana%20IPv6%20server%20(SSL%20ready)
+4_Port=7000
+5_Hostname=palermo.ircitalia.net
+5_Description=IRCItalia%20network
+6_Hostname=roma.italiachat.net
+6_Description=ItaliaChat%20network
+7_Hostname=trapani.ircitalia.net
+7_Description=IRCItalia%20network
+NServers=8
+[IRCLand]
+0_Hostname=irc.ircland.org
+0_Description=IRCLand%20random%20server
+1_Hostname=maverick.ircland.org
+1_Description=maverick
+2_Hostname=power.ircland.org
+2_Description=power
+3_Hostname=white.ircland.org
+3_Description=white
+NServers=4
+[IRCLink]
+0_Hostname=alesund.no.eu.irclink.net
+0_Description=IRCLink:%20EU,%20NO,%20Alesund
+1_Hostname=frogn.no.eu.irclink.net
+1_Description=IRCLink:%20EU,%20NO,%20Oslo
+2_Hostname=rockhill.sc.us.irclink.net
+2_Description=IRCLink:%20US,%20SC,%20Rock%20Hill
+NServers=3
+[IRCnet]
+0_Hostname=irc.ircnet.org
+0_Description=Main%20Random%20Server
+1_Hostname=eu.ircnet.org
+1_Description=Europe%20Random%20Server
+2_Hostname=ix.irc.at
+2_Description=IX%20Server
+3_Hostname=linz.irc.at
+3_Description=Linz%20Server
+4_Hostname=vienna.irc.at
+4_Description=Vienna%20Server
+5_Hostname=ircnet.realroot.be
+5_Description=RealROOT%20Server
+6_Hostname=irc.datacomm.ch
+6_Description=Datacomm%20Server
+7_Hostname=irc.osanet.cz
+7_Description=OSANET%20Server
+8_Hostname=irc.i.cz
+8_Description=ICZ%20Server
+9_Hostname=irc.felk.cvut.cz
+9_Description=Prague%20Server
+10_Hostname=irc.leo.org
+10_Description=LEO%20Server
+11_Hostname=irc.belwue.de
+11_Description=BelWue%20Server
+12_Hostname=irc.freenet.de
+12_Description=Freenet%20Server
+13_Hostname=uni-erlangen.de
+13_Description=University%20Of%20Nurnberg%20Server
+14_Hostname=uni-karlsruhe.de
+14_Description=University%20Of%20Karlsruhe%20Server
+15_Hostname=tu-ilmenau.de
+15_Description=University%20Of%20Ilmenau%20Server
+16_Hostname=fu-berlin.de
+16_Description=University%20Of%20Berlin%20Server
+17_Hostname=irc.estpak.ee
+17_Description=Elion%20Server
+18_Hostname=irc.datanet.ee
+18_Description=Linxtelecom%20Server
+19_Hostname=irc.starman.ee
+19_Description=Starman%20Server
+20_Hostname=irc.opoy.fi
+20_Description=Oulu%20Telephone%20Server
+21_Hostname=irc.cs.hut.fi
+21_Description=University%20Of%20Helsinki%20Server
+22_Hostname=irc.elisa.fi
+22_Description=Elisa%20Oyj%20Server
+23_Hostname=irc.utu.fi
+23_Description=University%20Of%20Turku%20Server
+24_Hostname=irc.song.fi
+24_Description=TDC%20Song%20Server
+25_Hostname=irc1.inet.fi
+25_Description=iNET%20Server
+26_Hostname=irc.oulu.fi
+26_Description=University%20Of%20Olutensin%20Server
+27_Hostname=irc.jyu.fi
+27_Description=University%20Of%20Jyvaskyla%20Server
+28_Hostname=hub.cc.tut.fi
+28_Description=Tampere%20Server
+29_Hostname=irc.lut.fi
+29_Description=University%20Of%20Ranta%20Server
+30_Hostname=irc.cc.tut.fi
+30_Description=Tampere%20Server
+31_Hostname=irc.oamk.fi
+31_Description=OuluNet%20Server
+32_Hostname=ircnet.club-internet.fr
+32_Description=T-Online%20France%20Server
+33_Hostname=ircnet.nerim.fr
+33_Description=Nerim%20Server
+34_Hostname=elte.irc.hu
+34_Description=University%20Of%20Budapest
+35_Hostname=atw.irc.hu
+35_Description=ATW%20Server
+36_Hostname=extra.irc.hu
+36_Description=Extra%20Server
+37_Hostname=ssl.atw.irc.hu
+37_Description=ATW%20Server
+38_Hostname=hub.irc.hu
+38_Description=Godollo%20HUB%20Server
+39_Hostname=ircnet.netvision.net.il
+39_Description=NetVision%20Server
+40_Hostname=irc.simnet.is
+40_Description=Iceland%20Telecom%20Server
+41_Hostname=irc.hi.is
+41_Description=University%20Of%20Iceland%20Server
+42_Hostname=ircd.simnet.is
+42_Description=Iceland%20Telecom%20HUB%20Server
+43_Hostname=irc1.tiscali.it
+43_Description=Tiscali%20Server
+44_Hostname=javairc.tiscali.it
+44_Description=Tiscali%20Server
+45_Hostname=javairc2.tiscali.it
+45_Description=Tiscali%20Server
+46_Hostname=irc.flashnet.it
+46_Description=Cybernet%20Italia%20Server
+47_Hostname=irc.eutelia.it
+47_Description=Eutelia%20Server
+48_Hostname=irc.excite.it
+48_Description=Excite%20Italia%20Server
+49_Hostname=irc1.tin.it
+49_Description=Telecom%20Italia%20Server
+50_Hostname=irc2.tin.it
+50_Description=Telecom%20Italia%20Server
+51_Hostname=irc3.tin.it
+51_Description=Telecom%20Italia%20Server
+52_Hostname=ircd.tin.it
+52_Description=Telecom%20Italia%20HUB%20Server
+53_Hostname=irc.huie.hokudai.ac.jp
+53_Description=University%20Of%20Hokkaido
+54_Hostname=irc.nara.wide.ad.jp
+54_Description=WIDE%20Project%20Nara%20NOC%20Server
+55_Hostname=irc.tokyo.wide.ad.jp
+55_Description=WIDE%20Project%20Tokyo%20NOC%20Server
+56_Hostname=irc.fujisawa.wide.ad.jp
+56_Description=WIDE%20Project%20Fujisawa%20NOC%20Server
+57_Hostname=irc.media.kyoto-u.ac.jp
+57_Description=Kyoto%20Server
+58_Hostname=irc-new.media.kyoto-u.ac.jp
+58_Description=Kyoto%20Server
+59_Hostname=irc.apollo.lv
+59_Description=Apollo%20Server
+60_Hostname=ircd.snt.utwente.nl
+60_Description=University%20Of%20Twente%20HUB%20Server
+61_Hostname=irc.snt.utwente.nl
+61_Description=University%20Of%20Twente%20Server
+62_Hostname=irc.sci.kun.nl
+62_Description=University%20Of%20Nijmegen%20Server
+63_Hostname=irc.uunet.nl
+63_Description=UUNET%20NL%20Server
+64_Hostname=irc.xs4all.nl
+64_Description=XS4ALL%20Server
+65_Hostname=irc.ifi.uio.no
+65_Description=University%20Of%20Oslo%20Server
+66_Hostname=irc.pvv.ntnu.no
+66_Description=IRCNO%20Server
+67_Hostname=irc.hitos.no
+67_Description=Tromsoe%20Server
+68_Hostname=irc.powertech.no
+68_Description=PowerTech%20Server
+69_Hostname=irc.uib.no
+69_Description=University%20Of%20Bergen
+70_Hostname=uk.ircnet.org
+70_Description=UK%20Random%20Server
+71_Hostname=ircnet.demon.co.uk
+71_Description=THUS%20Server
+72_Hostname=irc.aau.dotsrc.org
+72_Description=AAU%20DotSrc%20Server
+73_Hostname=irc.dotsrc.org
+73_Description=DotSrc%20Server
+74_Hostname=warszawa.irc.pl
+74_Description=ICM%20Server
+75_Hostname=poznan.irc.pl
+75_Description=UAM%20Server
+76_Hostname=krakow.irc.pl
+76_Description=AGH%20Server
+77_Hostname=lublin.irc.pl
+77_Description=UMCS%20Server
+78_Hostname=irc.swipnet.se
+78_Description=Tele2%20Sweden%20Server
+79_Hostname=irc.desync.se
+79_Description=IRCnet%20Project%20Server
+80_Hostname=irc.okit.se
+80_Description=OK%20IT%20AB%20Server
+81_Hostname=irc.ludd.luth.se
+81_Description=Lulea%20Server
+82_Hostname=irc.arnes.si
+82_Description=ARNES%20Server
+83_Hostname=irc.triera.si
+83_Description=Triera%20Server
+84_Hostname=irc.fei.tuke.sk
+84_Description=TUKE%20Server
+85_Hostname=irc.nextra.sk
+85_Description=Nextra%20Server
+86_Hostname=irc.seed.net.tw
+86_Description=Seednet%20Server
+87_Hostname=irc.freebsd.org.tw
+87_Description=FreeBSD.org%20Server
+88_Hostname=us.ircnet.org
+88_Description=USA%20Random%20Server
+89_Hostname=ircnet.choopa.net
+89_Description=Choopa,%20Inc%20Server
+90_Hostname=temphub.choopa.net
+90_Description=Choopa,%20Inc%20Server
+91_Hostname=au.ircnet.org
+91_Description=Australia%20Random%20Server
+92_Hostname=eu.irc6.net
+92_Description=Europe%20Random%20IPv6%20Server
+93_Hostname=irc.ipv6.cesnet.cz
+93_Description=CESNET2%20IPv6%20Server
+94_Hostname=ircs.ircnet.ee
+94_Description=IPv6%20Server
+95_Hostname=irc.estpak.ee
+95_Description=Elion%20Enterprises%20IPv6%20Server
+96_Hostname=irc.datanet.ee
+96_Description=Linxtelecom%20IPv6%20Server
+97_Hostname=irc.starman.ee
+97_Description=Starman%20IPv6%20Server
+98_Hostname=irc6.ngnet.it
+98_Description=Telecom%20Italia%20IPv6%20Server
+99_Hostname=irc.eutelia.it
+99_Description=Eutelia%20IPv6%20Server
+100_Hostname=irc.powertech.no
+100_Description=PowerTech%20IPv6%20Server
+NServers=101
+[Irctoo]
+0_Hostname=irc.irctoo.net
+0_Description=Irctoo:%20Random%20server
+NServers=1
+[IRCworld]
+0_Hostname=irc.ircworld.org
+0_Description=IRCworld:%20Random%20server
+NServers=1
+[IsraelNet]
+0_Hostname=irc.israel.net
+0_Description=Israelnet:%20Random%20server
+NServers=1
+[K0wNet]
+0_Hostname=irc.k0w.net
+0_Description=K0wNet:%20Random%20server
+NServers=1
+[KewlOrg]
+0_Hostname=irc.kewl.org
+0_Description=Kewl.org:%20Random%20server
+1_Hostname=london.uk.eu.kewl.org
+1_Description=Kewl.org:%20EU,%20UK,%20London
+2_Hostname=nanterre.fr.eu.kewl.org
+2_Description=Kewl.org:%20EU,%20FR,%20Nanterre
+NServers=3
+[Kreynet]
+0_Hostname=irc.krey.net
+0_Description=KreyNet:%20Random%20server
+NServers=1
+[Krushnet]
+0_Hostname=irc.krushnet.org
+0_Description=Krushnet:%20Random%20server
+NServers=1
+[LagNet]
+0_Hostname=irc.lagnet.org.za
+0_Description=LagNet:%20Random%20server
+1_Hostname=mystery.lagnet.org.za
+1_Description=LagNet:%20AF,%20ZA,%20Johannesburg
+2_Hostname=reaper.lagnet.org.za
+2_Description=LagNet:%20AF,%20ZA,%20Cape%20Town
+NServers=3
+[Librenet]
+0_Hostname=irc.librenet.net
+0_Description=Librenet:%20Random%20server
+NServers=1
+[Lunatics]
+0_Hostname=irc.lunatics.net
+0_Description=Lunatics:%20Random%20server
+NServers=1
+[KidsWorld]
+0_Hostname=irc.kidsworld.org
+0_Description=Kidsworld:%20Random%20server
+NServers=1
+[Knightnet]
+0_Hostname=goldengate.ca.us.knightnet.net
+0_Description=Knightnet:%20US,%20CA,%20Goldengate
+1_Hostname=orc.dbn.za.knightnet.net
+1_Description=Knightnet:%20AF,%20ZA,%20Durban
+NServers=2
+[MagicStar]
+0_Hostname=irc.magicstar.net
+0_Description=MagicStar:%20Random%20server
+NServers=1
+[MediaDriven]
+0_Hostname=irc.mediadriven.com
+0_Description=MediaDriven:%20Random%20server
+NServers=1
+[Messique]
+0_Hostname=irc.messique.org
+0_Description=Messique:%20Random%20server
+NServers=1
+[Mysteria]
+0_Hostname=irc.mysteria.net
+0_Description=Mysteria:%20Random%20server
+NServers=1
+[Mystical]
+0_Hostname=irc.mystical.net
+0_Description=Mystical:%20Random%20server
+NServers=1
+[NdrsNet]
+0_Hostname=irc.ndrsnet.com
+0_Description=NdrsNet:%20Random%20server
+NServers=1
+[Net-France]
+0_Hostname=irc.net-france.com
+0_Description=Net-France:%20Random%20server
+NServers=1
+[Nevernet]
+0_Hostname=irc.nevernet.net
+0_Description=Nevernet:%20Random%20server
+NServers=1
+[NewIRC]
+0_Hostname=irc.newirc.org
+0_Description=NewIRC:%20Random%20server
+NServers=1
+[Newnet]
+0_Hostname=irc.chelmsford.com
+0_Description=Newnet:%20US,%20MA,%20Chelmsford
+1_Hostname=irc.fragglerock.org
+1_Description=Newnet:%20US,%20CA,%20Flagglerock
+2_Hostname=irc.newnet.net
+2_Description=Newnet:%20Random%20server
+3_Hostname=irc.oasis-net.net
+3_Description=Newnet:%20EU,%20UK,%20Oasis
+4_Hostname=irc.rma.edu
+4_Description=Newnet:%20US,%20VA,%20Randolph
+5_Hostname=irc.trusted-network.de
+5_Description=Newnet:%20EU,%20DE,%20Trusted
+6_Hostname=irc.uplink.net.nz
+6_Description=Newnet:%20NZ,%20Auckland
+NServers=7
+[Nexusirc]
+0_Hostname=irc.nexusirc.org
+0_Description=Nexusirc:%20Random%20server
+NServers=1
+[NightStar]
+0_Hostname=irc.nightstar.net
+0_Description=Nightstar:%20Random%20server
+NServers=1
+[NitroNet]
+0_Hostname=irc.nitro.net
+0_Description=NitroNet:%20Random%20server
+NServers=1
+[Novernet]
+0_Hostname=irc.novernet.com
+0_Description=Novernet:%20Random%20server
+1_Hostname=chat.novernet.com
+1_Description=Novernet:%20US,%20MN,%20Minneapolis
+2_Hostname=irc.c-plusnet.com
+2_Description=Novernet:%20US,%20GA,%20Augusta
+NServers=3
+[Oddnet]
+0_Hostname=irc.oddnet.org
+0_Description=Oddnet:%20Random%20server
+NServers=1
+[Othernet]
+0_Hostname=irc.othernet.org
+0_Description=Othernet:%20Random%20server
+1_Hostname=miami.fl.us.othernet.org
+1_Description=Othernet:%20US,%20FL,%20Miami
+2_Hostname=stlouis.mo.us.othernet.org
+2_Description=Othernet:%20US,%20MO,%20StLouis
+NServers=3
+[OtherSide]
+0_Hostname=irc.othersideirc.net
+0_Description=Otherside:%20Random%20server
+NServers=1
+[Outsiderz]
+0_Hostname=irc.outsiderz.com
+0_Description=Outsiderz:%20Random%20server
+NServers=1
+[OzOrg]
+0_Hostname=aussie.sydney.oz.org
+0_Description=OzOrg:%20AU,%20Sydney
+1_Hostname=chariot.adelaide.oz.org
+1_Description=OzOrg:%20AU,%20Adelaide
+2_Hostname=iinet.perth.oz.org
+2_Description=OzOrg:%20AU,%20Perth
+NServers=3
+Description=Australian%20Network
+[Philchat]
+0_Hostname=irc.philchat.net
+0_Description=Philchat:%20Random%20server
+NServers=1
+[Pinoycentral]
+0_Hostname=chat.abs-cbn.com
+0_Description=Pinoycentral:%20Random%20server
+NServers=1
+[Planetarion]
+0_Hostname=irc.planetarion.com
+0_Description=Planetarion:%20Random%20server
+NServers=1
+[PortalX]
+0_Hostname=irc.portalx.org
+0_Description=PortalX:%20Random%20server
+1_Hostname=aphrodite.portalx.org
+1_Description=PortalX:%20Aphrodite
+2_Hostname=apollo.portalx.org
+2_Description=PortalX:%20Apollo
+3_Hostname=ares.portalx.org
+3_Description=PortalX:%20Ares
+4_Hostname=athena.portalx.org
+4_Description=PortalX:%20Athena
+5_Hostname=demeter.portalx.org
+5_Description=PortalX:%20Demeter
+6_Hostname=eos.portalx.org
+6_Description=PortalX:%20Eos
+7_Hostname=thor.portalx.org
+7_Description=PortalX:%20Thor
+8_Hostname=zeus.portalx.org
+8_Description=PortalX:%20Zeus
+NServers=9
+[Psionics]
+0_Hostname=chat.psionics.net
+0_Description=Psionics:%20CA,%20PQ,%20Montreal
+NServers=1
+[PTlink]
+0_Hostname=irc.ptlink.net
+0_Description=PTlink:%20Random%20server
+NServers=1
+[PTnet]
+0_Hostname=telepac2.ptnet.org
+0_Description=PTnet:%20EU,%20PT,%20Lisboa
+1_Hostname=ualg.ptnet.org
+1_Description=PTnet:%20EU,%20PT,%20Faro
+NServers=2
+[QChat]
+0_Hostname=irc.qchat.net
+0_Description=QChat:%20Random%20server
+NServers=1
+[QuakeNet]
+0_Hostname=irc.quakenet.org
+0_Description=Main%20Random%20Server
+1_Hostname=irc.quakenet.eu.org
+1_Description=Europe%20Random%20Server
+2_Hostname=jubiigames.dk.quakenet.org
+2_Description=Denmark%20Server
+3_Hostname=mediatraffic.fi.quakenet.org
+3_Description=Finland%20Server
+4_Hostname=euroserv.fr.quakenet.org
+4_Description=France%20Server
+5_Hostname=splatterworld.de.quakenet.org
+5_Description=Germany%20Server
+6_Hostname=ign.ie.quakenet.org
+6_Description=Ireland%20Server
+7_Hostname=ngi.it.quakenet.org
+7_Description=Italy%20Server
+8_Hostname=xs4all.nl.quakenet.org
+8_Description=Netherlands%20Server
+9_Hostname=online.no.quakenet.org
+9_Description=Norway%20Server
+10_Hostname=underworld.no.quakenet.org
+10_Description=Norway%20Server
+11_Hostname=port80.se.quakenet.org
+11_Description=Sweden%20Server
+12_Hostname=stockholm.se.quakenet.org
+12_Description=Sweden%20Server
+13_Hostname=wineasy.se.quakenet.org
+13_Description=Sweden%20Server
+14_Hostname=b0rk.uk.quakenet.org
+14_Description=UK%20Server
+15_Hostname=blueyonder.uk.quakenet.org
+15_Description=UK%20Server
+16_Hostname=demon.uk.quakenet.org
+16_Description=UK%20Server
+17_Hostname=freddyshouse.uk.quakenet.org
+17_Description=UK%20Server
+18_Hostname=multiplay.uk.quakenet.org
+18_Description=UK%20Server
+19_Hostname=gameservers.il.us.quakenet.org
+19_Description=USA%20Server
+20_Hostname=gameservers.nj.us.quakenet.org
+20_Description=USA%20Server
+21_Hostname=netfire.tx.us.quakenet.org
+21_Description=USA%20Server
+22_Hostname=netfire.va.us.quakenet.org
+22_Description=USA%20Server
+23_Hostname=servercentral.il.us.quakenet.org
+23_Description=USA%20Server
+NServers=24
+[Raptornet]
+0_Hostname=irc.raptornet.org
+0_Description=Raptornet:%20Random%20server
+NServers=1
+[Realirc]
+0_Hostname=irc.realirc.org
+0_Description=Realirc:%20Random%20server
+NServers=1
+[Rebelchat]
+0_Hostname=irc.rebelchat.org
+0_Description=Rebelchat:%20Random%20server
+NServers=1
+[RedeSul]
+0_Hostname=irc.braznet.com.br
+0_Description=RedeSul:%20BR,%20SC,%20Blumenau
+1_Description=RedeSul:%20BR,%20PR,%20Maringa
+1_Hostname=irc.wnet.com.br
+NServers=2
+[Red-Latina]
+0_Hostname=irc.red-latina.org
+0_Description=Red-Latina:%20Random%20server
+1_Hostname=irc.dalsom.net
+1_Description=Red-Latina:%20NA,%20MX,%20SanJose
+NServers=2
+[RedLatona]
+0_Hostname=irc.redlatona.net
+0_Description=RedLatona:%20Random%20server
+NServers=1
+[Relicnet]
+0_Hostname=irc.relic.net
+0_Description=Relicnet:%20Random%20server
+NServers=1
+[Rezosup]
+0_Hostname=irc.rezosup.org
+0_Description=Rezosup:%20Random%20server
+NServers=1
+[Risanet]
+0_Hostname=irc.risanet.com
+0_Description=Risanet:%20Random%20server
+NServers=1
+[Rusnet]
+0_Hostname=irc.rinet.ru
+0_Description=Rusnet:%20EU,%20RU,%20Moscow
+1_Hostname=irc.tomsk.net
+1_Description=Rusnet:%20EU,%20RU,%20Tomsk
+2_Hostname=irc.primorye.ru
+2_Description=Rusnet:%20EU,%20RU,%20Vladivostok
+NServers=3
+Description=Russian%20Network
+Encoding=CP-1251
+[Sandnet]
+0_Hostname=irc.sandnet.net
+0_Description=Sandnet:%20Random%20server
+NServers=1
+[Scunc]
+0_Hostname=irc.scunc.net
+0_Description=Scunc:%20Random%20server
+NServers=1
+[SexNet]
+0_Hostname=irc.sexnet.org
+0_Description=SexNet:%20Random%20server
+NServers=1
+[ShadowFire]
+0_Hostname=irc.shadowfire.org
+0_Description=ShadowFire:%20Random%20server
+NServers=1
+[ShadowWorld]
+0_Hostname=irc.shadowworld.net
+0_Description=ShadowWorld:%20Random%20server
+NServers=1
+[Skyyenet]
+0_Hostname=arlington.va.us.skyyenet.org
+0_Description=Skyyenet:%20US,%20VA,%20Arlington
+NServers=1
+[Slashnet]
+0_Hostname=irc.slashnet.org
+0_Description=Slashnet:%20Random%20server
+NServers=1
+[SolarNet]
+0_Hostname=irc.solarnet.ru
+0_Description=Main%20network%20server
+NServers=1
+Description=Russian%20Network
+Encoding=CP-1251
+[SolidIRC]
+0_Hostname=irc.solidirc.com
+0_Description=SolidIRC:%20Random%20server
+NServers=1
+[Sorcery]
+0_Hostname=irc.sorcery.net
+0_Description=Sorcerynet:%20Random%20server
+1_Hostname=kechara.sorcery.net
+1_Description=Sorcerynet:%20US,%20CA,%20Palo%20Alto
+2_Hostname=nexus.sorcery.net
+2_Description=Sorcerynet:%20EU,%20SE,%20Karlskrona
+NServers=3
+[Spamnet]
+0_Hostname=irc.spamnet.org
+0_Description=Spamnet:%20Random%20server
+NServers=1
+[StarChat]
+0_Hostname=irc.starchat.net
+0_Description=StarChat:%20Random%20server
+1_Hostname=boomer.qld.au.starchat.net
+1_Description=StarChat:%20AU,%20QLD,%20SouthernCross
+2_Hostname=reality.no.eu.starchat.net
+2_Description=StarChat:%20EU,%20NO,%20Asker
+3_Hostname=sand.ca.us.starchat.net
+3_Description=StarChat:%20US,%20CA,%20San%20Jose
+NServers=4
+[StarLink]
+0_Hostname=irc.starlink.org
+0_Description=StarLink%20Org:%20Random%20server
+NServers=1
+[StarLink-irc]
+0_Hostname=irc.starlink-irc.org
+0_Description=StarLink-irc:%20Random%20server
+NServers=1
+[StarWars-IRC]
+0_Hostname=irc.starwars-irc.net
+0_Description=StarWars-IRC:%20Random%20server
+NServers=1
+[Stormdancing]
+0_Hostname=irc.stormdancing.net
+0_Description=Stormdancing:%20Random%20server
+NServers=1
+[Sub-city]
+0_Hostname=irc.sub-city.net
+0_Description=Sub-city:%20Random%20server
+NServers=1
+[Superchat]
+0_Hostname=irc.superchat.org
+0_Description=Superchat:%20Random%20server
+NServers=1
+[SyrolNet]
+0_Hostname=irc.syrolnet.org
+0_Description=SyrolNet%20round%20robin
+1_Hostname=ipv6.syrolnet.org
+1_Description=IPv6%20round%20robin
+2_Hostname=moon.syrolnet.org
+2_Description=Moon%20irc%20server
+3_Hostname=phobos.syrolnet.org
+3_Description=IPv6/IPv4%20server
+NServers=4
+Description=Italian%20Network
+[Sysopnet]
+0_Hostname=irc.sysopnet.org
+0_Description=Sysopnet:%20Random%20server
+NServers=1
+[Techdreams]
+0_Hostname=irc.techdreams.net
+0_Description=Techdreams:%20Random%20server
+NServers=1
+[Telstra]
+0_Hostname=irc.telstra.com
+0_Description=Telstra:%20Random%20server
+NServers=1
+[Terra]
+0_Hostname=irc.terra.cl
+0_Description=Terra%20Chile
+1_Hostname=irc.terra.com
+1_Description=Terra%20USA
+2_Hostname=irc.terra.es
+2_Description=Terra%20Spain
+NServers=3
+[TR-net]
+0_Hostname=irc.dominet.com.tr
+0_Description=TR-net:%20EU,%20TR,%20Ankara
+1_Hostname=irc.teklan.com.tr
+1_Description=TR-net:%20EU,%20Tr,%20Istanbul
+NServers=2
+[Tri-net]
+0_Hostname=irc.tri-net.org
+0_Description=Tri-net:%20Random%20server
+NServers=1
+[UltraIRC]
+0_Hostname=irc.ultrairc.net
+0_Description=UltraIRC:%20Random%20server
+NServers=1
+[UnderNet]
+0_Hostname=irc.undernet.org
+0_Description=Main%20Random%20Server
+1_Hostname=eu.undernet.org
+1_Description=Europe%20Random%20Server
+2_Hostname=bucharest.ro.eu.undernet.org
+2_Description=Romania%20Server
+3_Hostname=Carouge.ch.eu.undernet.org
+3_Description=Switzerland%20Server
+4_Hostname=diemen.nl.eu.undernet.org
+4_Description=Netherlands%20Server
+5_Hostname=ede.nl.eu.undernet.org
+5_Description=Netherlands%20Server
+6_Hostname=elsene.be.eu.undernet.org
+6_Description=Belgium%20Server
+7_Hostname=graz.at.eu.undernet.org
+7_Description=Austria%20Server
+8_Hostname=helsinki.fi.eu.undernet.org
+8_Description=Finland%20Server
+9_Hostname=lelystad.nl.eu.undernet.org
+9_Description=Netherlands%20Server
+10_Hostname=london.uk.eu.undernet.org
+10_Description=UK%20Server
+11_Hostname=london2.uk.eu.undernet.org
+11_Description=UK%20Server
+12_Hostname=oslo1.no.eu.undernet.org
+12_Description=Norway%20Server
+13_Hostname=oslo2.no.eu.undernet.org
+13_Description=Norway%20Server
+14_Hostname=zagreb.hr.eu.undernet.org
+14_Description=Croatia%20Server
+15_Hostname=us.undernet.org
+15_Description=USA%20Random%20Server
+16_Hostname=losangeles.ca.us.undernet.org
+16_Description=USA%20Server
+17_Hostname=mesa.az.us.undernet.org
+17_Description=USA%20Server
+18_Hostname=newyork.ny.us.undernet.org
+18_Description=USA%20Server
+NServers=19
+[UnderZ]
+0_Hostname=irc.underz.org
+0_Description=UnderZ:%20Random%20server
+NServers=1
+[UnionLatina]
+0_Hostname=irc.unionlatina.org
+0_Description=UnionLatina:%20Random%20server
+NServers=1
+[Univers]
+0_Hostname=irc.univers.org
+0_Description=Univers:%20Random%20server
+NServers=1
+[Vidgamechat]
+0_Hostname=irc.vidgamechat.com
+0_Description=Vidgamechat:%20Random%20server
+NServers=1
+[Vitamina]
+0_Hostname=irc-rr.vitamina.ca
+0_Description=Vitamina:%20Random%20server
+NServers=1
+[Orange/Voila]
+0_Hostname=chat14.x-echo.com
+0_Description=Chat14 server
+NServers=1
+Description=French%20Orange/Voila%20network%20(old%20name:%20Wanadoo/Voila)
+[Warpednet]
+0_Hostname=irc.warped.net
+0_Description=Warpednet:%20Random%20server
+NServers=1
+[Webnet]
+0_Hostname=irc.webchat.org
+0_Description=Webnet:%20Random%20server
+1_Hostname=greennet.ma.us.webchat.org
+1_Description=Webnet:%20US,%20MA,%20Boston
+2_Hostname=webmaster.ca.us.webchat.org
+2_Description=Webnet:%20US,%20CA,%20Santa%20Clara
+3_Hostname=wiregrass.al.us.webchat.org
+3_Description=Webnet:%20US,%20AL,%20Dothan
+NServers=4
+[WeNet]
+0_Hostname=irc.wenet.ru
+0_Description=Primary%20WeNet%20server
+NServers=1
+Encoding=CP-1251
+Description=Russian%20Network
+[WorldIRC]
+0_Hostname=irc.worldirc.org
+0_Description=WorldIRC:%20Random%20server
+NServers=1
+[Xevion]
+0_Hostname=irc.xevion.net
+0_Description=Xevion:%20Random%20server
+NServers=1
+[XNet]
+0_Hostname=irc.xnet.org
+0_Description=XNet:%20Random%20server
+NServers=1
+[XWorld]
+0_Hostname=irc.xworld.org
+0_Description=XWorld:%20Random%20server
+NServers=1
+[ZAnetNet]
+0_Hostname=lia.zanet.net
+0_Description=ZAnet%20Net:%20AF,%20ZA,%20CI%20(lia)
+1_Hostname=timewiz.zanet.net
+1_Description=ZAnet%20Net:%20AF,%20ZA,%20MWeb%20(timewiz)
+NServers=2
+[ZAnetOrg]
+0_Hostname=ethereal.zanet.org.za
+0_Description=ZAnet%20Org:%20AF,%20ZA,%20Midrand%20(ethereal)
+1_Hostname=gaspode.zanet.org.za
+1_Description=ZAnet%20Org:%20AF,%20ZA,%20Cape%20Town%20(gaspode)
+2_Hostname=is.zanet.org.za
+2_Description=ZAnet%20Org:%20AF,%20ZA,%20Johannesburg%20(is)
+NServers=3
+[ZiRC]
+0_Hostname=irc.zirc.org
+0_Description=ZiRC:%20Random%20server
+NServers=1
+[ZUHnet]
+0_Hostname=irc.zuh.net
+0_Description=ZUHnet:%20Random%20server
+NServers=1
+[Zurna]
+0_Hostname=irc.zurna.net
+0_Description=Zurna:%20Random%20server
+NServers=1
+[PenguinFriends]
+0_Hostname=irc.penguinfriends.org
+0_Description=PenguinFriends:%20Random%20server
+1_Hostname=pf-gaming.penguinfriends.org
+1_Description=pf-gaming.penguinfriends.org
+2_Hostname=onlyfreaks.penguinfriends.org
+2_Description=onlyfreaks.penguinfriends.org
+3_Hostname=irc.penguinfriends.org
+3_Description=PenguinFriends:%20Random%20server SSL
+3_SSL=true
+3_Port=6670
+NServers=4
diff --git a/data/config/texticons.kvc b/data/config/texticons.kvc
new file mode 100644
index 00000000..09d45c82
--- /dev/null
+++ b/data/config/texticons.kvc
@@ -0,0 +1,39 @@
+[Manager]
+# Default configuration of texticons.
+# If you add any entry then please increase this number both here
+# and in kvi_texticonmanager.cpp (they MUST match)
+ConfigUpdate=3
+[TextIcons]
+smile=94
+sad=95
+heart=214
+irc=208
+bomb=82
+spy=109
+home=107
+heartbreak=215
+rose=216
+biggrin=217
+smileglasses=218
+surprise=219
+idea=148
+penguin=111
+linux=111
+flower=124
+love=214
+lol=217
+exclamation=220
+!=220
+dots=221
+...=221
+?=49
+question=49
+kiss=222
+finger=268
+prrr=265
+time=93
+shy=271
+oooh=223
+cafe=273
+hum=282
+slurp=283
diff --git a/data/defscript/Makefile.am b/data/defscript/Makefile.am
new file mode 100644
index 00000000..768c9b8f
--- /dev/null
+++ b/data/defscript/Makefile.am
@@ -0,0 +1,11 @@
+tmpdir = $(defscriptdir)
+
+tmp_DATA = default.kvs \
+ aliases.kvs \
+ events.kvs \
+ popups.kvs \
+ toolbars.kvs \
+ installer.kvs \
+ theme-install.kvs
+
+EXTRA_DIST = $(tmp_DATA)
diff --git a/data/defscript/aliases.kvs b/data/defscript/aliases.kvs
new file mode 100644
index 00000000..5d8d7299
--- /dev/null
+++ b/data/defscript/aliases.kvs
@@ -0,0 +1,706 @@
+# Default aliases file
+
+#
+# TODO:
+# ignore, notify and unignore should go in the core
+#
+# If possible, get rid of $str.* from the default popups
+# avoiding to load the module at every channel popup open action...
+# (Find a core function that retrieves the number of nicknames passed ?)
+# Another solution would be to increase the str.module core lock-time ?
+#
+
+#
+# Backward compatibility stuff
+#
+alias(avatar)
+{
+ # avatar target file
+ if(!$0)
+ {
+ echo "Missing target, no action taken"
+ return
+ }
+ if($1)
+ {
+ avatar.set $1
+ }
+ avatar.notify $0
+}
+
+alias(clear)
+{
+ window.clearOutput
+}
+
+alias(connect)
+{
+ objects.connect $0 $1 $2 $3
+}
+
+alias(disconnect)
+{
+ objects.disconnect $0 $1 $2 $3
+}
+
+alias(killclass)
+{
+ objects.killclass $0
+}
+
+alias(clearobjects)
+{
+ objects.clear $0
+}
+
+alias(nickserv)
+{
+ # Silent
+ raw -q NickServ $0-
+}
+
+alias(chanserv)
+{
+ # Silent
+ raw -q ChanServ $0-
+}
+
+alias(memoserv)
+{
+ # Silent
+ raw -q MemoServ $0-
+}
+
+alias(ns)
+{
+ # Silent
+ raw -q nickserv $0-
+}
+
+alias(cs)
+{
+ # Silent
+ raw -q chanserv $0-
+}
+
+alias(ms)
+{
+ # Silent
+ raw -q memoserv $0-
+}
+
+alias(gnotice)
+{
+ # Global notice
+
+ #Check null notice
+ if(!$0){
+ echo $tr("Usage"): /gnotice [-waohvq] <$tr("message")>
+ echo $tr("-m: send a message instead of a notice")
+ echo $tr("-w: send notice to all channel owners")
+ echo $tr("-a: send notice to all channel admins")
+ echo $tr("-o: send notice to all channel ops")
+ echo $tr("-h: send notice to all channel halfops")
+ echo $tr("-v: send notice to all channel voices")
+ echo $tr("-q: quiet mode")
+ halt
+ }
+
+ # Detect message type
+ if($sw(m)) %cmd="msg"
+ else %cmd="notice"
+
+ # Check for quiet message
+ if($sw(q)) %cmd=$str.append(%cmd," -q")
+
+ # Check null switches
+ if((!$sw(w))&&(!$sw(a))&&(!$sw(o))&&(!$sw(h))&&(!$sw(v))){
+ eval %cmd $chan.name($active) $0-
+ halt
+ }
+
+ # Check switches passed
+ if($sw(w)) eval %cmd \~$chan.name($active) $0-
+ if($sw(a)) eval %cmd \!$chan.name($active) $0-
+ if($sw(o)) eval %cmd \@$chan.name($active) $0-
+ if($sw(h)) eval %cmd \%$chan.name($active) $0-
+ if($sw(v)) eval %cmd \+$chan.name($active) $0-
+}
+
+alias(wallop)
+{
+ if(!$0){
+ echo $tr("Usage"): /wallop <$tr("message")>
+ halt
+ }
+
+ # Due to server flood, timing may be very high
+ echo -w=$active $tr("Sending wallop to") $chan.name($active)
+ timer(wallop,5000,$chan.users(,,o),$0-){
+ if(%:localOps == ""){ %:localOps = $chan.users(,,o); %:curIndex = 0; }
+ if(%:curIndex == %:localOps[]#){ killtimer wallop; return; }
+
+ for(%i=0;%i<1;%i++){
+ if(%:localOps[%:curIndex] != $my.nick){
+ if(%:curIndex == %:localOps[]#){ killtimer wallop; return; }
+ msg -q %:localOps[%:curIndex] $1-
+ %:curIndex++
+ }
+ }
+ }
+}
+
+alias(kill){
+ raw -q kill $0 :$1-
+}
+
+alias(ms)
+{
+ # Silent
+ quote ms $0-
+}
+
+# j: This is a really common one
+alias(j)
+{
+ #first we do a test if a chan is given as parameter
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /j <chan>"
+ } else {
+ join $0-
+ }
+}
+
+# s: This too
+alias(s)
+{
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /s <server>"
+ } else {
+ server $0-
+ }
+}
+
+# q: Ok, I am lazy :P
+alias(q)
+{
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /q <nick>"
+ } else {
+ query $0-
+ }
+}
+
+
+# names: maybe this should be implemented on the core?
+alias(names)
+{
+ if(!$0)
+ {
+ if($window.type($active)!="channel")
+ {
+ echo $tr("Usage:") "/names <channel>"
+ } else {
+ raw names $active
+ }
+ } else {
+ raw names $0-
+ }
+}
+
+# kickban
+alias(kb)
+{
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /kb <nick_list> [" $tr("reason") "]"
+ halt;
+ }
+
+ if(!$channel)
+ {
+ echo "[KB]: " $tr("This is not a channel window")
+ halt;
+ }
+
+ foreach(%nick,$str.split(",",$0))
+ {
+ if(%nick)
+ {
+ %mask = $mask(%nick,$option(uintDefaultBanType));
+
+ if(!%mask)%mask = %nick; # plain ban
+
+ %reason = $1-
+ #if(!%reason)%reason = "You're not welcome here!"
+
+ # This is tricky : we send everything
+ # as a single raw message just because
+ # we do not want delays between kick and ban
+ # if anti-server-flood is enabled
+
+ %raw = "kick $target %nick :%reason"
+
+ # kick %nick %reason
+
+ if($chan.isOp(%nick))%raw2 = "mode $target -o+b %nick %mask"
+ else %raw2 = "mode $target +b %mask"
+
+ raw -q %raw2$cr$lf%raw
+ }
+ }
+}
+
+# chanowner
+alias(chanowner)
+{
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /chanowner <nick_list>"
+ halt;
+ }
+ if(!$channel)
+ {
+ echo "[CHANOWNER]: " $tr("This is not a channel window")
+ halt;
+ }
+
+ foreach(%nick,$str.split(",",$0))
+ {
+ if(%nick)
+ {
+ mode $chan.name() +q %nick
+ }
+ }
+}
+
+# chanadmin
+alias(chanadmin)
+{
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /chanadmin <nick_list>"
+ halt;
+ }
+ if(!$channel)
+ {
+ echo "[CHANADMIN]: " $tr("This is not a channel window")
+ halt;
+ }
+
+ foreach(%nick,$str.split(",",$0))
+ {
+ if(%nick)
+ {
+ mode $chan.name() +a %nick
+ }
+ }
+}
+
+# dechanowner
+alias(dechanowner)
+{
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /dechanowner <nick_list>"
+ halt;
+ }
+ if(!$channel)
+ {
+ echo "[DECHANOWNER]: " $tr("This is not a channel window")
+ halt;
+ }
+
+ foreach(%nick,$str.split(",",$0))
+ {
+ if(%nick)
+ {
+ mode $chan.name() -q %nick
+ }
+ }
+}
+
+# dechanadmin
+alias(dechanadmin)
+{
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /dechanadmin <nick_list>"
+ halt;
+ }
+ if(!$channel)
+ {
+ echo "[DECHANADMIN]: " $tr("This is not a channel window")
+ halt;
+ }
+
+ foreach(%nick,$str.split(",",$0))
+ {
+ if(%nick)
+ {
+ mode $chan.name() -a %nick
+ }
+ }
+}
+
+# halfop
+alias(halfop)
+{
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /halfop <nick_list>"
+ halt;
+ }
+ if(!$channel)
+ {
+ echo "[HALFOP]: " $tr("This is not a channel window")
+ halt;
+ }
+
+ foreach(%nick,$str.split(",",$0))
+ {
+ if(%nick)
+ {
+ mode $chan.name() +h %nick
+ }
+ }
+}
+
+# dehalfop
+alias(dehalfop)
+{
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /dehalfop <nick_list>"
+ halt;
+ }
+ if(!$channel)
+ {
+ echo "[DEHALFOP]: " $tr("This is not a channel window")
+ halt;
+ }
+
+ foreach(%nick,$str.split(",",$0))
+ {
+ if(%nick)
+ {
+ mode $chan.name() -h %nick
+ }
+ }
+}
+
+# userop
+alias(userop)
+{
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /userop <nick_list>"
+ halt;
+ }
+ if(!$channel)
+ {
+ echo "[USEROP]: " $tr("This is not a channel window")
+ halt;
+ }
+
+ foreach(%nick,$str.split(",",$0))
+ {
+ if(%nick)
+ {
+ mode $chan.name() +u %nick
+ }
+ }
+}
+
+# deuserop
+alias(deuserop)
+{
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /deuserop <nick_list>"
+ halt;
+ }
+ if(!$channel)
+ {
+ echo "[DEUSEROP]: " $tr("This is not a channel window")
+ halt;
+ }
+
+ foreach(%nick,$str.split(",",$0))
+ {
+ if(%nick)
+ {
+ mode $chan.name() -u %nick
+ }
+ }
+}
+
+# ame and amsg
+alias(ame)
+{
+ foreach(%i,$window.list(channel))if(%i!="") me -r=%i $0-
+}
+
+alias(amsg)
+{
+ foreach(%i,$window.list(channel))msg $target(%i) $0-
+}
+
+alias(amsgall)
+{
+ foreach(%i,$window.list(channel),$window.list(query))msg $target(%i) $0-
+}
+
+alias(ameall)
+{
+ foreach(%i,$window.list(channel),$window.list(query)){
+ if(%i!="") me -r=%i $0-
+ }
+}
+
+alias(awayall)
+{
+ foreach(%w,$window.list(console,all))away -r=%w $0-;
+}
+
+# notify: this is a bit more complex
+# We want to add an user to the notify list with a single command
+# The notify lists are handled thru the registered users database
+alias(notify)
+{
+ # This one adds a registered users database entry
+ # For the specified nick and uses the specified mask
+ # If no mask is specified , a default one is constructed
+ # Then the "notify" property is set for the user
+
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /notify <nick> [mask]"
+ halt
+ }
+
+ # Get the mask
+
+ %mask = $1
+
+ # no mask specified ? build it
+
+ if(!%mask)%mask = $0!*@*
+
+ # Now add the user (but do not replace old entries)
+
+ reguser.add -f -q $0 %mask
+
+ # Merge the notify property part with the old one (if any)
+
+ %oldNicks = $reguser.property($0,notify)
+
+ # It would be a good idea to check if the nikckname is already in the %oldNicks list
+ # but this is left as exercise for the reader.
+
+ %oldNicks << $0
+
+ # And finally set the property (use -n so the notify lists will be restarted)
+
+ reguser.setproperty -n $0 notify $0
+
+ # done...the notify list should be restarted now
+}
+
+alias(ignore)
+{
+ # This one adds a registered users database entry
+ # For the specified nick and uses the specified mask
+ # If no mask is specified , a default one is constructed
+ # Then the "ignore" property is set for the user to 1
+
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /ignore [-r] <nick>"
+ halt
+ }
+
+ # Now add the user (but do not replace old entries)
+
+ reguser.add $0 $mask($0,15);
+
+ # And finally set the property (use -n so the notify lists will be restarted)
+ # Check if ignore or unignore the user
+
+ if(!$sw(r,remove))
+ {
+ reguser.setIgnoreEnabled $0 1
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0
+ } else reguser.setIgnoreEnabled $0 0
+}
+
+# Dcc...people commonly use "dcc send" instead of "dcc.send"
+alias(dcc)
+{
+ switch($0)
+ {
+ case(send):
+ {
+ dcc.send $1-
+ break
+ }
+ case(chat):
+ {
+ dcc.chat $1-
+ break
+ }
+ case(voice):
+ {
+ dcc.voice $1-
+ break
+ }
+ case(allow):
+ {
+ quote dccallow $1-
+ break
+ }
+ default:
+ {
+ echo "[DCC]: " $tr("Unsupported type: $0")
+ }
+ }
+}
+
+#
+# return a string with the name of the curerent usermode
+#
+alias(usermodename)
+{
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /usermodename <nick>"
+ halt;
+ }
+ if(!$channel)
+ {
+ echo "[USERMODENAME]: " $tr("This is not a channel window")
+ halt;
+ }
+
+ if($chan.isOwner($0,$channel)){
+ return $tr("Channel Owner")
+ } elseif($chan.isAdmin($0,$channel)){
+ return $tr("Channel Administrator")
+ } elseif($chan.isOp($0,$channel)){
+ return $tr("Channel Operator")
+ } elseif($chan.isHalfOp($0,$channel)){
+ return $tr("Half Operator")
+ } elseif($chan.isVoice($0,$channel)){
+ return $tr("Voice")
+ } elseif($chan.isUserOp($0,$channel)){
+ return $tr("User Operator")
+ } else {
+ return $tr("Normal User")
+ }
+}
+
+alias(dccallow)
+{
+ quote dccallow \+$0
+}
+
+#shortcut for commonly called algorithm
+alias(md5)
+{
+ return $str.digest($0-,md5)
+}
+
+alias(sha1)
+{
+ return $str.digest($0-,sha1)
+}
+
+# DNS : people like it
+alias(dns)
+{
+ if(!$context)
+ {
+ echo "[DNS]: " $tr("You must use DNS in an IRC context")
+ halt
+ }
+
+ if(!$server)
+ {
+ echo "[DNS]: " $tr("You must be connected to a server")
+ halt
+ }
+
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo echo " /dns <nickname>"
+ halt
+ }
+
+ if($isWellKnown($0))host -a $hostname($0)
+ else {
+ awhois($0)
+ {
+ if(!$2)
+ {
+ echo "[DNS]: " $tr("No such user: $0")
+ } else {
+ host -a $2
+ }
+ }
+ }
+}
+
+alias(ss)
+{
+ # Silent
+ quote ss $0-
+}
+
+alias(seenserv)
+{
+ # Silent
+ msg -q SeenServ $0-
+}
+
+alias(hs)
+{
+ #Silent
+ quote hs $0-
+}
+
+alias(hop)
+{
+ // Retrieve channel
+ %chan=$0
+ if(!%chan) %chan=$chan.name($active)
+
+ // Retrieve channel key
+ %key=$chan.key($channel(%chan))
+
+ // Exit channel
+ if($window.type($channel(%chan))=="channel")
+ part --keep %chan $option(stringPartMessage)
+
+ // Rejoin channel
+ if(!%key) join %chan
+ else join %chan %key
+}
diff --git a/data/defscript/default.kvs b/data/defscript/default.kvs
new file mode 100644
index 00000000..fb270da6
--- /dev/null
+++ b/data/defscript/default.kvs
@@ -0,0 +1,37 @@
+#################################################################################################
+#
+# This is the default script for KVIrc
+# Feel free to use it as base for writing your own scripts
+# It is a good starting point; I have tried to add as many comments as possible.
+#
+# Have fun :)
+# Szymon Stefanek
+#
+#################################################################################################
+
+%mypath = "$file.extractpath($0)$file.ps"
+
+# Fetch default scripts data
+include "aliases.kvs" %mypath
+include "events.kvs" %mypath
+include "popups.kvs" %mypath
+include "toolbars.kvs" %mypath
+
+#
+# Set the default spam words...(for the anti-spam) detector
+#
+
+# FIXME: these should be MERGED!!!!
+
+#%tmp = $option(stringlistSpamWords)
+#%tmp[] = $array() ???
+
+option stringlistSpamWords "http:","#","www.","auto","query","ftp:","sex","free","msg","chat","dynamirc","script"
+
+options.save
+
+echo $tr("The default script has been successfully installed.")
+echo $tr("To connect to a server, type /server <server name>")
+echo "---"
+echo $tr("Happy ircing :)")
+echo "- Szymon Stefanek $tr("and the KVIrc Development Team")"
diff --git a/data/defscript/events.kvs b/data/defscript/events.kvs
new file mode 100644
index 00000000..575cfc39
--- /dev/null
+++ b/data/defscript/events.kvs
@@ -0,0 +1,105 @@
+# Default events file
+
+event(OnDccChatPopupRequest,default)
+{
+ popup dccchat $0;
+}
+
+event(OnChannelPopupRequest,default)
+{
+ popup channeltextview $target;
+}
+
+event(OnConsolePopupRequest,default)
+{
+ popup consoletextview;
+}
+
+event(OnChannelLinkPopupRequest,default)
+{
+ if($0 != "") popup channelpopup $0;
+}
+
+event(OnQueryPopupRequest,default)
+{
+ if($target) popup querytextview $target;
+}
+
+event(OnQueryNickPopupRequest,default)
+{
+ if($0 != "") popup querytextview $0;
+}
+
+event(OnQueryFileDropped,default)
+{
+ if($0 != "") dcc.send $target $0;
+}
+
+event(OnNickLinkDefaultActionRequest,default)
+{
+ if($0 != "") whois $0;
+}
+
+event(OnNickLinkPopupRequest,default)
+{
+ if($0 != "") popup defaulttextview $0;
+}
+
+event(OnNotifyListDefaultActionRequest,default)
+{
+ if($0 != "")
+ {
+ query $0; whois $0 $0;
+ }
+}
+
+event(OnNotifyListPopupRequest,default)
+{
+ if($0 != "") popup defaulttextview $0;
+};
+
+event(OnWindowPopupRequest,default)
+{
+ popup windowpopup;
+}
+
+event(OnChannelWindowCreated,default)
+{
+ button(w,Logging,119,Logging)
+ {
+ popup -p=$0,$1 logging;
+ }
+}
+
+event(OnQueryWindowCreated,default)
+{
+ button(w,Logging,119,Logging)
+ {
+ popup -p=$0,$1 logging;
+ }
+}
+
+event(OnChannelNickLinkClick,default)
+{
+ if($0 != "") window.insertInInputText $window $0$option(stringNickCompletionPostfix);
+}
+
+event(OnChannelNickPopupRequest,default)
+{
+ if($0 != "") popup channel $0;
+}
+
+event(OnChannelNickDefaultActionRequest,default)
+{
+ if(!$isEmpty($0)) query $0;
+}
+
+event(OnURLLinkPopupRequest,URL popup)
+{
+ popup urlpopup $0
+}
+
+event(OnHostLinkPopupRequest,default)
+{
+ popup hostpopup $0;
+}
diff --git a/data/defscript/installer.kvs b/data/defscript/installer.kvs
new file mode 100644
index 00000000..f974b7ed
--- /dev/null
+++ b/data/defscript/installer.kvs
@@ -0,0 +1,169 @@
+/*
+ A helper class for installing and parsing files,
+ and generating an uninstallation alias on the fly.
+
+ Example :
+ include "utils/installer.kvs"
+ %installer = $new(installer,0,myinstaller)
+ %installer->$copyFiles(pics,*.png,$file.localdir(pics))
+ %installer->$includeFiles(src,*.kvs)
+ %installer->generateUninstallAlias("foo::uninstall")
+ delete %installer
+ Here, "foo::uninstall" must be called in you uninstall
+ callback script.
+
+ Warnings:
+ 1) Declaration of aliases, popups, etc, in source files
+ (.kvs) must be in a similar format
+ as when you export them directly from kvirc.
+ Example:
+ alias(myalias)
+ defpopup(mypopup)
+ 2) If you use a "defpopup -m" to add an item to an
+ existing popup,this item won't be registered
+ automatically for uninstallation by this installer script.
+ You should typically identify the item you added using
+ the "id" parameter. See this example where the id is
+ "myaddon::myitem":
+ defpopup -m (channeltextview)
+ {
+ item(MyItem)(myaddon::myitem)
+ {
+ ...
+ }
+ }
+ Then, you add this line to you uninstall callback
+ script:
+ delpopupitem channeltextview myaddon::myitem
+*/
+class(installer,object)
+{
+ constructor()
+ {
+ }
+
+ copyFiles($0 = source dir,$1 = file regexp,$2 = target dir)
+ {
+ if(!$file.exists($0))return
+ if($isempty($0))
+ {
+ echo $tr("[Installer] The first argument to \%installer->\$copyfiles must be a source directory")
+ halt
+ }
+
+ if($isempty($1))
+ {
+ echo $tr("[Installer] The second argument to \%installer->\$copyfiles must be a file name or file regexp")
+ halt
+ }
+
+ if($isempty($2))
+ {
+ echo $tr("[Installer] The third argument to \%installer->\$copyfiles must be a destination directory")
+ halt
+ }
+
+ if($file.exists($0))
+ {
+ %files = $file.ls($file.fixpath($0),f,$1)
+ if($length(%files))
+ {
+ @$mkdir($2)
+ foreach(%file,%files)
+ {
+ $this->%lFiles <+ $str.replace($file.fixpath("$2/%file"),"\\\\","\\")
+ file.copy -o $file.fixpath($0/%file) $file.fixpath($2/%file)
+ }
+ }
+ }
+ }
+
+ // Recursive creation of directory
+ mkdir($0 = directory)
+ {
+ if($isempty($0) || $file.exists($0)) return
+ foreach -a (%subdir,$str.split("/",$file.fixpath($0)))
+ {
+ %p <+ %subdir
+ %path = $str.join("/",%p)
+ if(!$file.exists(%path))
+ file.mkdir -q %path
+ }
+ if(!$file.exists($0))
+ {
+ echo $tr("[Installer] Failed to create directory") \"$0\"
+ return
+ }
+ }
+
+ // Parse source files and get what will need to be uninstalled
+ includeFiles($0 = dir, $1 = file regexp)
+ {
+ if($isempty($0))
+ {
+ echo $tr("[Installer] The first argument to \%installer->\$includefiles must be a source directory")
+ halt
+ }
+
+ @$mkdir($0)
+
+ if($1 == "")
+ %szRe = "*.kvs"
+ else
+ %szRe = $1
+
+ %files = $file.ls($file.fixpath($0),f,$1)
+ if($length(%files))
+ {
+ foreach(%file,%files)
+ {
+ $this->%lSources <+ $str.replace($file.fixpath("$0/%file"),"\\\\","\\")
+ include $file.fixpath("$0/%file")
+ }
+ }
+ }
+
+
+ generateUninstallAlias($0 = alias name)
+ {
+ %c = "alias($0)$lf"
+ %c .= "{$lf"
+ if($isset($this->%lFiles))
+ {
+ foreach(%file,$this->%lFiles)
+ {
+ %file =~ s/"^$file.localdir()/(.*)$"/"\$file.localdir(\\1)"/
+ %c .= " file.remove -q \"%file\"$lf";
+ }
+ }
+ if($isset($this->%lSources))
+ {
+ foreach(%file,$this->%lSources){
+ foreach(%line,$file.readlines(%file))
+ if(!$str.isempty(%line)){
+ if($str.match("event(*)",%line,e))
+ %c .= " event -q ("$str.token(1,"()",%line)"){}$lf"
+ else if($str.match("alias(*)",%line,e))
+ %aliases<+$str.token(1,"()",%line)
+ else if($str.match("defpopup(*)",%line,e))
+ %c .= " defpopup("$str.token(1,"()",%line)"){}$lf"
+ else if($str.match("toolbar.create * *",%line,e))
+ %c .= " toolbar.destroy -q "$str.word(1,%line)"$lf"
+ else if($str.match("action.create* (*)",%line,e))
+ %c .= " action.destroy -q "$str.replace($str.token(1,"(,)",%line),,\")"$lf"
+ else if($str.match("class(*)*",%line,e))
+ %c .= " objects.killclass -q "$str.token(1,"(,)",%line)"$lf"
+ }
+ }
+ if($isset(%aliases))
+ foreach(%alias,%aliases)
+ %c .= " alias -q (%alias){}$lf"
+ %c .= " alias -q ($0){}$lf"
+ }
+ %c .= "}"
+ eval %c
+ }
+}
+
+
+
diff --git a/data/defscript/popups.kvs b/data/defscript/popups.kvs
new file mode 100644
index 00000000..7197c923
--- /dev/null
+++ b/data/defscript/popups.kvs
@@ -0,0 +1,1381 @@
+# Default popups file
+
+#
+# Here comes a nice part...
+# The popups. KVIrc has a lot of events that merely ask for a popup to be shown :)
+#
+defpopup(highlight)
+{
+ prologue
+ {
+ if($0!=""){
+ %:regName = $reguser.match($mask($0))
+ %:beingHl = $reguser.property(%:regName,highlight)
+ %:beingHlTmp = $tmphighlight.ishighlighted($0)
+ }
+ }
+
+ item($tr("Stop Highlighting (Local)")) (%:beingHlTmp && !%:beingHl)
+ {
+ tmphighlight.remove $0
+ }
+
+ item($tr("Start Highlighting (Local)")) (!%:beingHlTmp && !%:beingHl)
+ {
+ tmphighlight.add $0
+ }
+
+ popup($tr("Always Highlight")) (!%:beingHl && !%:regName)
+ {
+ item($tr("Highlight as") $0 "("$mask($0,11)")") ("$reguser.exactMatch($mask($0,11))" == "")
+ {
+ reguser.add $0 $mask($0,11); reguser.setproperty $0 highlight 1;
+ }
+
+ item($tr("Highlight as") $0 "("$mask($0,12)")") ("$reguser.exactMatch($mask($0,12))" == "")
+ {
+ reguser.add $0 $mask($0,12); reguser.setproperty $0 highlight 1;
+ }
+
+ item($tr("Highlight as") $0 "("$mask($0,13)")") ("$reguser.exactMatch($mask($0,13))" == "")
+ {
+ reguser.add $0 $mask($0,13); reguser.setproperty $0 highlight 1;
+ }
+
+ item($tr("Highlight as") $0 "("$mask($0,3)")") ("$reguser.exactMatch($mask($0,3))" == "")
+ {
+ reguser.add $0 $mask($0,3); reguser.setproperty $0 highlight 1;
+ }
+
+ item($tr("Highlight as") $0 "("$mask($0,4)")") ("$reguser.exactMatch($mask($0,4))" == "")
+ {
+ reguser.add $0 $mask($0,4); reguser.setproperty $0 highlight 1;
+ }
+
+ item($tr("Highlight as") $0 "("$mask($0,5)")") ("$reguser.exactMatch($mask($0,5))" == "")
+ {
+ reguser.add $0 $mask($0,5); reguser.setproperty $0 highlight 1;
+ }
+ }
+
+ item($tr("Always Highlight")) (!%:beingHl && %:regName)
+ {
+ reguser.setproperty $0 highlight 1
+ }
+
+ item($tr("Stop Highlighting")) (%:beingHl)
+ {
+ reguser.setproperty $0 highlight 0
+ }
+}
+
+defpopup(ignore)
+{
+ prologue
+ {
+ %:inIgnoreList = 0
+ %:regName = $reguser.match($mask($0))
+ %:ignLabelText = "<p><b>$0</b> "
+ if(%:regName)
+ {
+ %:inIgnoreList = $reguser.isIgnoreEnabled(%:regName);
+ if(%:inIgnoreList) %:ignLabelText << $tr("is being ignored")
+ else %:ignLabelText << $tr("is not being ignored")
+
+ %:ignLabelText << "</p>"
+ } else {
+ %:ignLabelText << $tr("is not being ignored")"</p>"
+ }
+ }
+
+ label(%:ignLabelText)
+
+ item($tr("Enable Ignore"),168) (!%:inIgnoreList && %:regName)
+ {
+ reguser.setIgnoreEnabled %:regName 1;
+ }
+
+ popup($tr("Ignore as..."),44) (!%:inIgnoreList)
+ {
+ item($tr("Ignore as") $0 "("$mask($0,0)")") ("$reguser.exactMatch($mask($0,0))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,0);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,1)")") ("$reguser.exactMatch($mask($0,1))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,1);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,2)")") ("$reguser.exactMatch($mask($0,2))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,2);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,3)")") ("$reguser.exactMatch($mask($0,3))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,3);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,4)")") ("$reguser.exactMatch($mask($0,4))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,4);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,5)")") ("$reguser.exactMatch($mask($0,5))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,5);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,6)")") ("$reguser.exactMatch($mask($0,6))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,6);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,7)")") ("$reguser.exactMatch($mask($0,7))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,7);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,8)")") ("$reguser.exactMatch($mask($0,8))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,8);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,9)")") ("$reguser.exactMatch($mask($0,9))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,9);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,10)")") ("$reguser.exactMatch($mask($0,10))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,10);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,11)")") ("$reguser.exactMatch($mask($0,11))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,11);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,12)")") ("$reguser.exactMatch($mask($0,12))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,12);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,13)")") ("$reguser.exactMatch($mask($0,13))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,13);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,14)")") ("$reguser.exactMatch($mask($0,14))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,14);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,15)")") ("$reguser.exactMatch($mask($0,15))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,15);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,16)")") ("$reguser.exactMatch($mask($0,16))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,16);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,17)")") ("$reguser.exactMatch($mask($0,17))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,17);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,18)")") ("$reguser.exactMatch($mask($0,18))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,18);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,19)")") ("$reguser.exactMatch($mask($0,19))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,19);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,20)")") ("$reguser.exactMatch($mask($0,20))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,20);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,21)")") ("$reguser.exactMatch($mask($0,21))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,21);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,22)")") ("$reguser.exactMatch($mask($0,22))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,22);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,23)")") ("$reguser.exactMatch($mask($0,23))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,23);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,24)")") ("$reguser.exactMatch($mask($0,24))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,24);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,25)")") ("$reguser.exactMatch($mask($0,25))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,25);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,26)")") ("$reguser.exactMatch($mask($0,26))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,26);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+ }
+
+ item($tr("Unignore"),217) (%:inIgnoreList)
+ {
+ reguser.setIgnoreEnabled %:regName 0;
+ }
+}
+
+defpopup(registration)
+{
+ prologue
+ {
+
+ # This is really smart...we are loading
+ # the reguser module only if this popup is being requested (the user effectively
+ # puts the mouse on the "Registration" item and the sub-popup is being shown)
+ %:regName = $reguser.match($mask($0))
+ %:labelText = "<p><b>$0</b>";
+ if(%:regName)
+ {
+ %:labelText << $tr("is registered as") ": <b>"%:regName"</b>"
+ # We want to display masks here!!!
+ %:inNotifyList = $reguser.property(%:regName,notify);
+ if(%:inNotifyList)%:labelText << "<br><b>$0</b>" $tr("is in the notify list")
+ %:curAvatar = $avatar.name($0);
+ %:defAvatar = $reguser.property(%:regName,avatar);
+ if(%:defAvatar)%:labelText << "<br><b>$0</b>" $tr("has a default avatar")
+ %:labelText << "</p>"
+ } else {
+ %:labelText << $tr("is not registered")"</p>"
+ }
+ }
+
+ label(%:labelText)
+
+ item($tr("Register")"...") (!%:regName)
+ {
+ reguser.wizard $mask($0)
+ }
+
+ popup($tr("Quick Registration")) (!%:regName)
+ {
+ item($tr("Register as") $0 "("$mask($0,11)")") ("$reguser.exactMatch($mask($0,11))" == "")
+ {
+ reguser.add $0 $mask($0,11)
+ }
+
+ item($tr("Register as") $0 "("$mask($0,12)")") ("$reguser.exactMatch($mask($0,12))" == "")
+ {
+ reguser.add $0 $mask($0,12)
+ }
+
+ item($tr("Register as") $0 "("$mask($0,13)")") ("$reguser.exactMatch($mask($0,13))" == "")
+ {
+ reguser.add $0 $mask($0,13)
+ }
+
+ item($tr("Register as") $0 "("$mask($0,3)")") ("$reguser.exactMatch($mask($0,3))" == "")
+ {
+ reguser.add $0 $mask($0,3)
+ }
+
+ item($tr("Register as") $0 "("$mask($0,4)")") ("$reguser.exactMatch($mask($0,4))" == "")
+ {
+ reguser.add $0 $mask($0,4)
+ }
+
+ item($tr("Register as") $0 "("$mask($0,5)")") ("$reguser.exactMatch($mask($0,5))" == "")
+ {
+ reguser.add $0 $mask($0,5)
+ }
+ }
+
+ item($tr("Edit Registration")"...",113) (%:regName)
+ {
+ reguser.edit "%:regName"
+ }
+
+ item($tr("Unregister") %:regName) (%:regName)
+ {
+ reguser.remove "%:regName"
+ }
+
+ separator
+
+ item($tr("Add to Notify")) (%:regName && !%:inNotifyList)
+ {
+ reguser.setproperty -n "%:regName" notify $0
+ }
+
+ item($tr("Remove from Notify")) (%:regName && %:inNotifyList)
+ {
+ reguser.setproperty -n "%:regName" notify
+ }
+
+ popup($tr("Avatar")) (%:regName)
+ {
+ item($tr("Choose")"...") (%:regName)
+ {
+ dialog.image(f,$tr("Choose Avatar Image File"),"","",$0,"%:regName")
+ {
+ if($0)
+ {
+ reguser.setproperty -a $2 avatar $0;
+ }
+ }
+ }
+
+ item($tr("Set as Default")) (%:curAvatar && ("%:curAvatar" != "%:defAvatar"))
+ {
+ reguser.setproperty "%:regName" avatar %:curAvatar
+ }
+
+ item($tr("Clear Default")) (%:defAvatar)
+ {
+ reguser.setproperty %:regName avatar
+ # Force the avatar to update
+ # if("%:curAvatar" == "")who $0
+ }
+ }
+}
+
+defpopup("urlpopup")
+{
+ item($tr("Copy To Clipboard"),259)
+ {
+ str.toClipboard $0
+ }
+}
+
+# This code adds a channel popup that accepts
+# a comma separated list of nicknames as parameter (to the /popup command)
+
+defpopup(channel)
+{
+ prologue
+ {
+ # we use the extended scope variables: they are visible in the entire defpopup scope
+ # %:visible is the string that we will "show to the user" in the popup widget
+ # for multiple users the string might become long so we are going to change it in "multiple users"
+ %:visible = $0
+ # %:multiple is an internal flag: set to 1 if the parameter passed to the popup contains a list
+ # of multiple nicknames rather than a single nick
+ %:multiple = 0
+ # finally , set these variables
+ %:itemBanName = $tr("Ban")
+ if($str.findfirst(%:visible,",") != -1)
+ {
+ # found a comma in the $0 parameter...we have multiple nicknames
+ %:visible = "("$tr("Multiple Users")")"
+ %:multiple = 1
+ %:itemBanMask = "*!user@*.host.tld"
+ %:itemBanNick = "nick"
+ } else {
+ %:itemBanMask = $mask(%:visible,$option(uintDefaultBanType))
+ if("%:itemBanMask" == "*!*@*")%:itemBanName = $tr("&Ban")
+ %:itemBanNick = %:visible
+ }
+ # speed it up
+
+ %:isMeHalfOp = $chan.isMeHalfOp()
+ %:isMeOp = $chan.isMeOp()
+ %:isMeOwner = $chan.isMeOwner()
+ %:isMeAdmin = $chan.isMeAdmin()
+ %:bCanKB = 0;
+
+ if(%:isMeHalfOp)
+ {
+ foreach(%nick,$str.split(",",$0))
+ {
+ if($chan.usermodelevel(%nick) <= $chan.usermodelevel($me))
+ {
+ %:bCanKB = 1;
+ break;
+ }
+ }
+ }
+ }
+
+ item("/WHOIS" %:visible "("$tr("idle time")")",75,whois_item)
+ {
+ foreach(%i,$str.split(",",$0))
+ whois %i %i
+ }
+
+ separator
+
+ popup($tr("&Information"),49,"information_popup")
+ {
+ item("/WHOIS" %:visible,75,"whois_item")
+ {
+ whois $0
+ }
+
+ item(/WHOWAS %:visible,92)
+ {
+ whowas $0
+ }
+
+ item(/WHO %:visible,75)
+ {
+ who $0
+ }
+
+ separator
+
+ item($tr("DNS for") %:visible,75)
+ {
+ foreach(%i,$str.split(",",$0))dns %i
+ }
+
+ item($tr("Mask for") %:visible,75) (!%:multiple)
+ {
+ echo $mask($0,11)
+ }
+ }
+
+ popup($tr("&Control"),9,"control_popup") (%:isMeHalfOp)
+ {
+ label($usermodename($me()))
+
+ item($tr("O&wner") %:visible,260) (%:isMeOwner)
+ {
+ chanowner $0
+ }
+
+ item($tr("&Deowner") %:visible,261) (%:isMeOwner)
+ {
+ dechanowner $0
+ }
+
+ item($tr("&Administrator") %:visible,242) (%:isMeAdmin)
+ {
+ chanadmin $0
+ }
+
+ item($tr("&Deadministrator") %:visible,243) (%:isMeAdmin)
+ {
+ dechanadmin $0
+ }
+
+ item($tr("&Op") %:visible,34) (%:isMeOp)
+ {
+ op $0
+ }
+
+ item($tr("&Deop") %:visible,62) (%:isMeOp)
+ {
+ deop $0
+ }
+
+ item($tr("&Halfop") %:visible,174) (%:isMeOp)
+ {
+ halfop $0
+ }
+
+ item($tr("&Dehalfop") %:visible,175) (%:isMeOp)
+ {
+ dehalfop $0
+ }
+
+ item($tr("&Voice") %:visible,35) (%:isMeHalfOp)
+ {
+ voice $0
+ }
+
+ item($tr("D&evoice") %:visible,63) (%:isMeHalfOp)
+ {
+ devoice $0
+ }
+
+ separator
+
+ item($tr("&Kick") %:visible,110) (%:bCanKB)
+ {
+ foreach(%i,$str.split(",",$0))kick %i
+ }
+
+ item($tr("K&ick") %:visible $tr("With..."),110) (%:bCanKB)
+ {
+ dialog.textinput -d="$me" -i=110 ($tr("Kick Reason"),$tr("Enter a kick reason"),$tr("&Kick"),$tr("Cancel"),,$0)
+ {
+ if($0 == 0)
+ {
+ foreach(%i,$str.split(",",$2))kick %i $1
+ }
+ }
+ }
+
+ item($tr("&Ban") %:visible "("%:itemBanMask")",67) (("%:itemBanMask" != "*!*@*") && %:bCanKB)
+ {
+ ban $mask($0,$option(uintDefaultBanType))
+ }
+
+ item(%:itemBanName %:visible "("%:itemBanNick!*@*")",67) (%:bCanKB)
+ {
+ ban $0
+ }
+
+ item($tr("Kick/Ban") %:visible,110) (%:bCanKB)
+ {
+ kb $0
+ }
+
+ item($tr("Kick/Ban") %:visible $tr("With..."),110) (%:bCanKB)
+ {
+ dialog.textinput -d="$me" -i=110 ($tr("Kick/Ban Reason"),$tr("Enter a kick/ban reason"),$tr("&Kick/Ban"),$tr("Cancel"),,$0)
+ {
+ if($0 == 0)
+ {
+ kb $2 $1
+ }
+ }
+ }
+ separator
+
+ item($tr("Configure ban mask..."),20)
+ {
+ options.edit KviChannelAdvancedOptionsWidget
+ }
+ }
+
+ separator
+
+ item($tr("&Query") %:visible,47)
+ {
+ query $0
+ }
+
+ separator
+
+ extpopup(C&TCP,ctcp,51)
+
+ extpopup(&DCC,dcc,77) (!%:multiple)
+
+ separator
+
+ extpopup($tr("&Registration"),registration,111) (!%:multiple)
+
+ extpopup($tr("&Highlight"),highlight,181) (!%:multiple)
+
+ extpopup($tr("Ig&nore"),ignore,203) (!%:multiple)
+
+ item($tr("Notify Avatar"),57)
+ {
+ avatar.notify $0
+ }
+}
+
+# Popup to show on right-clicking channel links
+#
+defpopup(channelpopup)
+{
+ item($tr("&Join") $0,145)
+ {
+ hop $0
+ }
+
+ item($tr("&Part") $0,40)
+ {
+ if($channel($0)) part $0 $option(stringPartMessage);
+ }
+
+ separator
+
+ item(/NAMES $0,75)
+ {
+ names $0;
+ }
+
+ item(/WHO $0,75)
+ {
+ who $0;
+ }
+ separator
+
+ item($tr("Copy Channel Address"),259)
+ {
+ str.toClipboard $chan.getUrl($0)
+ }
+
+}
+
+defpopup(channels)
+{
+ item(#KVirc,46)
+ {
+ j #KVirc
+ }
+
+ item(#MDE,46)
+ {
+ j #MDE
+ }
+
+ item(#kde,46)
+ {
+ j #kde
+ }
+}
+
+defpopup(channeltextview)
+{
+ extpopup($tr("Channels"),channels,46)
+
+ item($tr("&Join Channels..."),46) ($server)
+ {
+ if($option(boolShowChannelsJoinDialogAsToplevel))channelsjoin.open -t;else channelsjoin.open
+ }
+
+ separator
+
+ item($tr("&Hop") $0,145)
+ {
+ hop $0
+ }
+
+ item($tr("&Part") $0,40)
+ {
+ if($channel($0)) part $0 $option(stringPartMessage);
+ }
+
+ separator
+
+ extpopup(C&TCP,ctcp,51)
+
+ separator
+
+ item(/NAMES $0,75)
+ {
+ names $0;
+ }
+
+ item(/WHO $0,75)
+ {
+ who $0;
+ }
+
+ item($tr("Notify Avatar"),57)
+ {
+ avatar.notify $0
+ }
+
+ separator
+
+ item($tr("Copy Channel URL to Clipboard"),259)
+ {
+ str.toClipboard $chan.getUrl
+ }
+
+ item($tr("Clear Buffer"),121)
+ {
+ clear;
+ }
+
+}
+
+defpopup(consoletextview)
+{
+ label($tr("You're not connected to a server")) (!$server)
+
+ extpopup($tr("Channels"),channels,46)
+
+ separator
+
+ item($tr("&Join Channels..."),46) ($server)
+ {
+ if($option(boolShowChannelsJoinDialogAsToplevel))channelsjoin.open -t;else channelsjoin.open
+ }
+
+ popup($tr("&Information"),13) ($server)
+ {
+ item(/MOTD,30)
+ {
+ motd
+ }
+
+ item(/INFO,29)
+ {
+ info
+ }
+
+ item(/LUSERS,57)
+ {
+ lusers
+ }
+
+ popup(/STATS,22)
+ {
+ item(d "(Debug/DNS?)")
+ {
+ stats d
+ }
+
+ item($tr("l (Connections)"))
+ {
+ stats l
+ }
+
+ item($tr("m (Command Usage)"))
+ {
+ stats m
+ }
+
+ item($tr("o (Operators)"))
+ {
+ stats o
+ }
+
+ item($tr("t (Connection stats ?)"),23)
+ {
+ stats t
+ }
+
+ item($tr("u (Uptime)"),93)
+ {
+ stats u
+ }
+
+ item($tr("y (y-Lines)"))
+ {
+ stats y
+ }
+
+ item($tr("z (Debug Stats?)"),11)
+ {
+ stats z
+ }
+ }
+
+ item(/TIME,93)
+ {
+ time
+ }
+
+ item(/ADMIN,29)
+ {
+ admin
+ }
+
+ item(/VERSION,16)
+ {
+ version
+ }
+
+ item(/HELP,49)
+ {
+ raw help
+ }
+ }
+
+ separator
+
+ item($tr("Clear Buffer"),121)
+ {
+ clear;
+ }
+}
+
+# This is a common popup , accepts a list of nicknames as parameter
+defpopup(ctcp)
+{
+ item(PING,36)
+ {
+ ctcp $0 PING
+ }
+
+ item(FINGER,53)
+ {
+ ctcp $0 FINGER
+ }
+
+ item(VERSION,16)
+ {
+ ctcp $0 VERSION
+ }
+
+ item(USERINFO,57)
+ {
+ ctcp $0 USERINFO
+ }
+
+ item(CLIENTINFO,52)
+ {
+ ctcp $0 CLIENTINFO
+ }
+
+ item(SOURCE,14)
+ {
+ ctcp $0 SOURCE
+ }
+
+ item(TIME,93)
+ {
+ ctcp $0 TIME
+ }
+
+ item(PAGE...,223)
+ {
+ #dialog.textinput -d="Wakeup!" ($tr("CTCP Page to") $0,$tr("Enter the message text"),$tr("Ok"),$tr("Cancel"))
+ dialog.textinput(CTCP Page $0,Enter the message text,&Page,Cancel,"",$0)
+ {
+ if($0 == 0)ctcp $2 PAGE $1
+ }
+ }
+
+ item(AVATAR,57)
+ {
+ ctcp $0 AVATAR
+ }
+}
+
+defpopup(dcc)
+{
+ prologue
+ {
+
+ if($features("SSL"))%:bHaveSSL=1
+ else %:bHaveSSL=0
+ }
+
+ item($tr("Chat with") $0,78)
+ {
+ dcc.chat $0
+ }
+
+ item($tr("Reverse Chat with") $0,78)
+ {
+ dcc.chat -z $0
+ }
+
+ item($tr("Secure Chat with") $0,78) (%:bHaveSSL)
+ {
+ dcc.chat -s $0
+ }
+
+ separator
+
+ item($tr("Send to") $0,79)
+ {
+ dcc.send $0
+ }
+
+ item($tr("Secure send to") $0,79)
+ {
+ dcc.send -s $0
+ }
+
+ item($tr("Reverse Send to") $0,79)
+ {
+ dcc.rsend -z $0
+ }
+
+ item($tr("Secure Reverse Send to") $0,79)
+ {
+ dcc.rsend -z -s $0
+ }
+
+ separator
+
+ item($tr("TDCC Send to") $0,77)
+ {
+ dcc.send -t $0
+ }
+
+ item($tr("TDCC Reverse Send to") $0,77)
+ {
+ dcc.rsend -t $0
+ }
+
+ separator
+
+ popup($tr("Voice Chat"),166)
+ {
+ item($tr("Default")": ADPCM 8 KHz (32 kbps)")
+ {
+ dcc.voice $0
+ }
+
+ separator
+
+ item("ADPCM 11.025 KHz (44.1 kbps)")
+ {
+ dcc.voice -h=11025 $0
+ }
+
+ item("ADPCM 16 KHz (64 kbps)")
+ {
+ dcc.voice -h=16000 $0
+ }
+
+ item("ADPCM 22.05 KHz (88.2 kbps)")
+ {
+ dcc.voice -h=22050 $0
+ }
+
+ item("GSM 8 KHz (13.2 kbps)")
+ {
+ dcc.voice -g=gsm $0
+ }
+
+ item("GSM 11.025 KHz (18.1 kbps)")
+ {
+ dcc.voice -g=gsm -h=11025 $0
+ }
+
+ item("GSM 16 KHz (26.4 kbps)")
+ {
+ dcc.voice -g=gsm -h=16000 $0
+ }
+
+ item("GSM 22.05 KHz (36.2 kbps)")
+ {
+ dcc.voice -g=gsm -h=22050 $0
+ }
+
+ item("GSM 44.1 KHz (72.4 kbps)")
+ {
+ dcc.voice -g=gsm -h=44100 $0
+ }
+
+ item("NULL 8 KHz (128 kbps)")
+ {
+ dcc.voice -g=null $0
+ }
+
+ item("NULL 11.025 KHz (176.4 kbps)")
+ {
+ dcc.voice -g=null -h=11025 $0
+ }
+ }
+}
+
+defpopup(dccchat)
+{
+ prologue
+ {
+
+ # we use the extended scope variables: they are visible in the entire defpopup scope
+ # %:visible is the string that we will "show to the user" in the popup widget
+ # for multiple users the string might become long so we are going to change it in "multiple users"
+ %:visible = $0
+ # %:multiple is an internal flag: set to 1 if the parameter passed to the popup contains a list
+ # of multiple nicknames rather than a single nick
+ %:multiple = 0
+ # finally , set these variables
+ if($str.findfirst(%:visible,",") != -1)
+ {
+ # found a comma in the $0 parameter...we have multiple nicknames
+ %:visible = "("$tr("Multiple Users")")"
+ %:multiple = 1
+ }
+ }
+
+ separator
+
+ extpopup(C&TCP,ctcp,51)
+
+ extpopup(&DCC,dcc,77)
+
+ separator
+
+ item($tr("Notify Avatar"),57)
+ {
+ avatar.notify $0
+ }
+
+ separator
+
+ item($tr("Clear Buffer"),121)
+ {
+ clear
+ }
+}
+
+#
+# Some minimal work on the query
+# A text view popup (right click on a query view)
+#
+
+defpopup(querytextview)
+{
+ prologue
+ {
+
+ # we use the extended scope variables: they are visible in the entire defpopup scope
+ # %:visible is the string that we will "show to the user" in the popup widget
+ # for multiple users the string might become long so we are going to change it in "multiple users"
+ %:visible = $0
+ # %:multiple is an internal flag: set to 1 if the parameter passed to the popup contains a list
+ # of multiple nicknames rather than a single nick
+ %:multiple = 0
+ # finally , set these variables
+ if($str.findfirst(%:visible,",") != -1)
+ {
+ # found a comma in the $0 parameter...we have multiple nicknames
+ %:visible = "("$tr("Multiple Users")")"
+ %:multiple = 1
+ }
+ }
+
+ item(/WHOIS $0 "("$tr("idle time")")",75) (!%:multiple)
+ {
+ whois $0 $0
+ }
+
+ separator
+
+ popup($tr("&Information"),49)
+ {
+ item(/WHOIS $0,75)
+ {
+ whois $0
+ }
+
+ item(/WHOWAS $0,92)
+ {
+ whowas $0
+ }
+
+ item(/WHO $0,75)
+ {
+ who $0
+ }
+
+ separator
+
+ item($tr("DNS for") $0,75)
+ {
+ foreach(%i,$str.split(",",$0))dns %i
+ }
+
+ item($tr("Mask for") $0,75) (!%:multiple)
+ {
+ echo $mask($0,11)
+ }
+ }
+
+ separator
+
+ extpopup(C&TCP,ctcp,51)
+
+ extpopup(&DCC,dcc,77)
+
+ separator
+
+ extpopup($tr("&Ignore"),ignore,203) (!%:multiple)
+
+ extpopup($tr("&Registration"),registration,111) (!%:multiple)
+
+ item($tr("Notify Avatar"),57)
+ {
+ avatar.notify $0
+ }
+
+ separator
+
+ item($tr("Clear Buffer"),121)
+ {
+ clear
+ }
+}
+
+
+#
+# Logging popup for the windows
+#
+defpopup(logging)
+{
+ prologue
+ {
+
+ # If this window is being logged actually , $log.file will be non empty
+ # and pointing to the log file actually open.
+ %:logfile = $str.replace($log.file,,$file.localdir)
+ }
+
+ label($tr("Logging to"):<br><b>%:logfile</b>) ("%:logfile" != "")
+
+ item($tr("Flush Log File"),19) (%:logfile)
+ {
+ log.flush
+ }
+
+ separator
+
+ item($tr("Stop Logging"),58) (%:logfile)
+ {
+ log.stop
+ }
+
+ label($tr("Not Logging")) (!%:logfile)
+
+ item($tr("Log To Default File"),119) (!%:logfile)
+ {
+ log.start
+ }
+
+ item($tr("Log To Default File") "("$tr("Include Existing Buffer")")",119) (!%:logfile)
+ {
+ log.start -p
+ }
+
+ item($tr("Log To..."),119) (!%:logfile)
+ {
+ dialog.file(save,$tr("Choose Log Filename"))
+ {
+ if($0)log.start $0
+ }
+ }
+
+ item($tr("Log To...") "("$tr("Include Existing Buffer"),119) (!%:logfile)
+ {
+ dialog.file(save,$tr("Choose Log Filename"))
+ {
+ if($0)log.start -p $0
+ }
+ }
+}
+
+defpopup(defaulttextview)
+{
+ prologue
+ {
+
+ # we use the extended scope variables: they are visible in the entire defpopup scope
+ # %:visible is the string that we will "show to the user" in the popup widget
+ # for multiple users the string might become long so we are going to change it in "multiple users"
+ %:visible = $0
+ # %:multiple is an internal flag: set to 1 if the parameter passed to the popup contains a list
+ # of multiple nicknames rather than a single nick
+ %:multiple = 0
+ # finally , set these variables
+ if($str.findfirst(%:visible,",") != -1)
+ {
+ # found a comma in the $0 parameter...we have multiple nicknames
+ %:visible = "("$tr("Multiple Users")")"
+ %:multiple = 1
+ }
+ }
+
+ item(/WHOIS $0 "("$tr("idle time")")",75) (!%:multiple)
+ {
+ whois $0 $0
+ }
+
+ separator
+
+ popup($tr("&Information"),49)
+ {
+ item(/WHOIS $0,75)
+ {
+ whois $0
+ }
+
+ item(/WHOWAS $0,92)
+ {
+ whowas $0
+ }
+
+ item(/WHO $0,75)
+ {
+ who $0
+ }
+
+ separator
+
+ item(DNS $0,75)
+ {
+ foreach(%i,$str.split(",",$0))dns %i
+ }
+ }
+
+ separator
+
+ item($tr("&Query") %:visible,47)
+ {
+ query $0
+ }
+
+ separator
+
+ extpopup(C&TCP,ctcp,51)
+
+ extpopup(&DCC,dcc,77)
+
+ separator
+
+ extpopup($tr("&Registration"),registration,111) (!%:multiple)
+
+ extpopup($tr("&Highlight"),highlight,181) (!%:multiple)
+
+ extpopup($tr("Ig&nore"),ignore,203) (!%:multiple)
+
+ item($tr("Notify avatar"),57)
+ {
+ avatar.notify $0
+ }
+
+ separator
+
+ item($tr("Clear Buffer"),121)
+ {
+ clear
+ }
+}
+
+file.addimagepath %mypath/pics/
+
+#
+# FIXME: Add uninstall part:
+# file.delimagepath
+#
+
+
+#
+# A default popup for the middle click in a text view
+# This should manage logging , buffer saving and other
+# stuff common to ALL windows
+#
+
+defpopup(windowpopup)
+{
+ extpopup(Logging,logging,119)
+
+# popup(Buffer)
+# {
+# item("Save to file...")window.savebuffer
+# item("Clear")window.clear
+# item("Find...")window.findtext
+# }
+# popup(View)
+# {
+# item("Show images")($window.images == 0)window.images 1
+# item("Enable timestamps")($window.timestamp == 0)window.timestamp 1
+# item("Disable timestamps")($window.timestam == 1)window.timestamp 0
+# item("Set font...")$window.setfont
+# item("Set background...")$window.setbackground
+# }
+# popup(Mdi)
+# {
+# item("Minimize")window.minimize
+# item("Maximize")window.maximize
+# }
+}
+
+# Host link popup
+
+defpopup(hostpopup)
+{
+ item(Look Up $0,13)
+ {
+ host -a $0
+ }
+
+ separator
+
+ item(Open ftp://$0/,145) ("$system.ostype" == "unix")
+ {
+ openurl ftp://$0/
+ }
+
+ item(Telnet to $0,25)
+ {
+ if("$system.ostype" == "unix")run xterm -e telnet $0
+ else run telnet $0
+ }
+
+ separator
+
+ item(Traceroute $0,42)
+ {
+ if("$system.ostype" == "unix")run xterm -e /bin/sh -c "echo \"Traceroute to $0...\" && traceroute $0 && cat"
+ else run tracert $0
+ }
+
+ item(Traceroute6 $0,42)
+ {
+ if("$system.ostype" == "unix")run xterm -e /bin/sh -c "echo \"Traceroute (inet6) to $0...\" && traceroute6 $0 && cat"
+ else run tracert6 $0
+ }
+
+ item(Ping $0,147)
+ {
+ if("$system.ostype" == "unix")run xterm -e /bin/sh -c "echo \"Ping $0...\" && ping $0 && cat"
+ else run ping $0
+ }
+
+ item(Ping6 $0,147)
+ {
+ if("$system.ostype" == "unix")run xterm -e /bin/sh -c "echo \"Ping (inet6) $0...\" && ping6 $0 && cat"
+ else run ping6 $0
+ }
+} \ No newline at end of file
diff --git a/data/defscript/theme-install.kvs b/data/defscript/theme-install.kvs
new file mode 100644
index 00000000..febbbbc0
--- /dev/null
+++ b/data/defscript/theme-install.kvs
@@ -0,0 +1,30 @@
+addon.register("Theme: @THEMENAME@","@THEMEVERSION@",$tr("@THEMENAME@"),$tr("@THEMEDESCRIPTION@"),"3.2.0.99")
+{
+ # This is our uninstall callback: it will be called by KVIrc when addon.uninstall is invoked
+
+ # This is an automatically generated alias that will erase the installed files
+ @ALIASNAME@_uninstallfiles
+ file.rmdir $file.localdir("themes/@SUBDIR@")
+ alias(@ALIASNAME@_uninstallfiles) {}
+ # Done
+}
+
+# Ok, addon.register succeeded. We can go on with the installation.
+
+# Get the path that this script was launched from
+%mypath = $file.extractPath($0)
+
+# get the installer helper class (this is pretty standard and included in the distro)
+parse %mypath/utils/installer.kvs
+
+# The installer will copy our files and generate automatically
+# an uninstallation alias for them
+%installer = $new(installer,0,myinstaller)
+
+# copy files in each subdirectory
+# the pics
+
+%installer->$copyFiles("%mypath/files/","*",$file.localdir("themes/@SUBDIR@"))
+%installer->$generateUninstallAlias("@ALIASNAME@_uninstallfiles")
+# finally kill the installer helper
+delete %installer
diff --git a/data/defscript/toolbars.kvs b/data/defscript/toolbars.kvs
new file mode 100644
index 00000000..84e7b93a
--- /dev/null
+++ b/data/defscript/toolbars.kvs
@@ -0,0 +1,43 @@
+# Default toolbars file
+
+toolbar.create irccontext $tr("IRC Context") $icon("irc4")
+# toolbar.additem irccontext kvirc.irccontextdisplay - info dublicated with te status line
+toolbar.additem irccontext kvirc.connect
+toolbar.additem irccontext kvirc.servermenu
+toolbar.additem irccontext kvirc.newirccontext
+toolbar.additem irccontext kvirc.separator
+toolbar.additem irccontext kvirc.nicknamemenu
+toolbar.additem irccontext kvirc.irctools
+toolbar.additem irccontext kvirc.ircactions
+toolbar.additem irccontext kvirc.usermodemenu
+toolbar.show irccontext
+
+toolbar.create options $tr("Options") $icon("options")
+toolbar.additem irccontext kvirc.serveroptions
+toolbar.additem options kvirc.identityoptions
+toolbar.additem options kvirc.generaloptions
+toolbar.additem options kvirc.themeoptions
+toolbar.show options
+
+toolbar.create help $tr("Help") 49
+toolbar.additem help kvirc.helpindex
+if($lang(short)==ru)
+ toolbar.additem help kvirc.kvircruhomepage
+else
+ toolbar.additem help kvirc.kvirchomepage
+toolbar.show help
+
+toolbar.create scripting $tr("Scripting") $icon("binarytext")
+toolbar.additem scripting kvirc.actioneditor
+toolbar.additem scripting kvirc.aliaseditor
+toolbar.additem scripting kvirc.eventeditor
+toolbar.additem scripting kvirc.popupeditor
+toolbar.additem scripting kvirc.raweditor
+toolbar.additem scripting kvirc.codetester
+toolbar.additem scripting kvirc.separator
+toolbar.additem scripting kvirc.executekvs
+
+toolbar.create winops $tr("Window operations") $icon("cascadewindows")
+toolbar.additem winops kvirc.cascadewindows
+toolbar.additem winops kvirc.tilewindows
+toolbar.additem winops kvirc.minimizeallwindows \ No newline at end of file
diff --git a/data/deftheme/Makefile.am b/data/deftheme/Makefile.am
new file mode 100644
index 00000000..c6ce91e6
--- /dev/null
+++ b/data/deftheme/Makefile.am
@@ -0,0 +1,2 @@
+SUBDIRS = silverirc
+
diff --git a/data/deftheme/silverirc/Makefile.am b/data/deftheme/silverirc/Makefile.am
new file mode 100644
index 00000000..e4f01a62
--- /dev/null
+++ b/data/deftheme/silverirc/Makefile.am
@@ -0,0 +1,5 @@
+tmpdir = $(themedir)/silverirc
+
+tmp_DATA = themeinfo.kvc themedata.kvc pixmapIrcViewBackground.png pixmapInputBackground.png pixmapUserListViewBackground.png
+
+EXTRA_DIST = $(tmp_DATA) \ No newline at end of file
diff --git a/data/deftheme/silverirc/pixmapInputBackground.png b/data/deftheme/silverirc/pixmapInputBackground.png
new file mode 100644
index 00000000..8e903351
--- /dev/null
+++ b/data/deftheme/silverirc/pixmapInputBackground.png
Binary files differ
diff --git a/data/deftheme/silverirc/pixmapIrcViewBackground.png b/data/deftheme/silverirc/pixmapIrcViewBackground.png
new file mode 100644
index 00000000..f02f9166
--- /dev/null
+++ b/data/deftheme/silverirc/pixmapIrcViewBackground.png
Binary files differ
diff --git a/data/deftheme/silverirc/pixmapUserListViewBackground.png b/data/deftheme/silverirc/pixmapUserListViewBackground.png
new file mode 100644
index 00000000..90560c82
--- /dev/null
+++ b/data/deftheme/silverirc/pixmapUserListViewBackground.png
Binary files differ
diff --git a/data/deftheme/silverirc/themedata.kvc b/data/deftheme/silverirc/themedata.kvc
new file mode 100644
index 00000000..a83296b8
--- /dev/null
+++ b/data/deftheme/silverirc/themedata.kvc
@@ -0,0 +1,273 @@
+# KVIrc configuration file
+[ThemeData]
+pixmapUserListViewBackground=pixmapUserListViewBackground.png
+msgtypeSearch=206,14,100,1,1
+msgtypeMeBanExcept=197,3,100,1,5
+msgtypeNickServ=164,5,100,1,2
+msgtypeChanPrivmsgCrypted=101,1,100,1,3
+msgtypeNotifyOffLine=95,2,100,1,1
+msgtypeSocketMessage=21,14,100,1,1
+boolDisablePopupIcons=false
+boolUseExtendedPrivmsgView=false
+msgtypeMeChanAdmin=244,3,100,1,1
+msgtypeMeBanUnExcept=198,3,100,1,5
+msgtypeMeBan=195,5,100,1,5
+msgtypeMeOp=189,3,100,1,5
+msgtypeWallops=139,5,100,1,3
+msgtypeQueryTrace=181,15,100,1,1
+msgtypeHalfDeOp=175,3,100,1,2
+msgtypeIcq=122,5,100,1,1
+msgtypeOwnPrivmsgCrypted=100,1,100,1,3
+uintUserListPixmapAlign=1
+colorInputSelectionForeground=0,0,0
+colorCaptionTextInactive=0,0,0
+stringExtendedPrivmsgPrefix=[
+boolShowTreeTaskbarHeader=false
+boolShowUserChannelIcons=true
+boolUseGlobalPseudoTransparency=false
+msgtypeMeDeVoice=192,3,100,1,5
+msgtypeBroadcastPrivmsg=183,1,100,1,3
+msgtypeChanServ=165,5,100,1,2
+msgtypeWhoisOther=92,2,100,1,1
+msgtypeWhoisChannels=89,2,100,1,1
+msgtypeWhoisUser=88,2,100,1,1
+msgtypeOp=34,3,100,1,2
+msgtypeParserError=11,4,100,1,1
+colorIrcViewMarkLine=40,40,40
+colorUserListViewNormalForeground=0,0,0
+boolUseDifferentColorForOwnNick=true
+boolScaleAvatars=true
+msgtypeServerError=272,14,100,1,1
+msgtypeMeInviteExcept=199,3,100,1,5
+msgtypeChannelNoticeCrypted=154,5,100,1,3
+msgtypeIrc=105,3,100,1,0
+msgtypeCtcpRequestUnknown=55,5,100,1,2
+msgtypeCtcpRequestReplied=52,5,100,1,2
+colorUserListViewChanOwnerForeground=81,87,111
+colorUserListViewUserOpForeground=0,127,178
+colorUserListViewVoiceForeground=0,0,200
+colorInputForeground=0,0,0
+colorCaptionTextActive2=0,0,0
+colorMdiCaptionActive=113,125,190
+colorTaskBarNormalText=0,0,0
+boolIrcViewUrlHighlighting=true
+stringIconThemeSubdir=silverirc
+msgtypeAway=170,3,100,1,4
+msgtypeIcqMessage=128,5,100,1,1
+msgtypeLinks=112,2,100,1,1
+msgtypeBan=67,5,100,1,1
+msgtypeVoice=35,3,100,1,1
+msgtypeQuit=58,14,100,1,2
+msgtypeQueryPrivateMessage=48,1,100,1,4
+msgtypeTopic=42,3,100,1,1
+msgtypeHostLookup=13,2,100,1,1
+fontIrcToolBarApplet=Verdana,10,5,50,i
+uintToolBarAppletPixmapAlign=0
+uintUserListViewGridType=3
+colorTreeTaskBarProgress=150,150,150
+colorGlobalTransparencyFade=255,255,255
+colorTaskBarHighlight2Text=32,0,255
+boolUseTreeWindowListTaskBar=true
+pixmapInputBackground=pixmapInputBackground.png
+mirccolor0=255,255,255
+msgtypeMeChanOwner=262,3,100,1,2
+msgtypeChanOwner=260,3,100,1,2
+msgtypeUserDeOp=175,3,100,1,1
+msgtypeGenericError=135,4,100,1,1
+msgtypeStats=205,1,100,1,1
+msgtypeIcqMessageSent=129,5,100,1,1
+msgtypeQueryPrivmsgCrypted=102,1,100,1,3
+msgtypeAvatarChange=57,15,100,1,2
+msgtypeUnrecognized=41,5,100,1,1
+msgtypeSocketWarning=22,5,100,1,3
+msgtypeSelection=0,0,15,1,1
+uintIrcViewPixmapAlign=34
+colorTreeTaskBarHighlight2Foreground=167,222,163
+colorTreeTaskBarActiveForeground=0,0,0
+colorIrcToolBarAppletForegroundMidContrast=110,110,110
+colorUserListViewBackground=255,255,255
+colorTaskBarHighlight1Text=0,16,144
+colorTaskBarMinimizedText=60,60,60
+boolStripMircColorsInUserMessages=false
+boolIrcViewShowImages=true
+mirccolor1=0,0,0
+msgtypeIgnore=203,15,100,1,1
+msgtypeMeInviteUnexcept=200,3,100,1,5
+msgtypeMultimedia=177,5,100,1,2
+msgtypeServerNotice=141,5,100,1,1
+msgtypeDccChatMsg=103,1,100,1,3
+msgtypeCreationTime=93,15,100,1,1
+msgtypeWhoisServer=91,2,100,1,1
+msgtypeInviteUnexcept=72,15,100,1,1
+msgtypeSplit=59,15,100,1,2
+msgtypeCtcpRequestIgnored=53,5,100,1,1
+msgtypeSystemError=24,4,100,1,4
+msgtypeHighlight=0,7,100,1,5
+fontTaskbar=Sans%20Serif,10,5,50
+uintTreeTaskBarPixmapAlign=0
+uintGlobalTransparencyParentFadeFactor=10
+colorTreeTaskBarHighlight3Foreground=128,0,255
+colorTaskBarHighlight4Text=220,0,255
+colorTaskBarProgressBar=180,180,180
+colorMdiBackground=0,0,0
+boolUseTaskBarActivityMeter=false
+boolColorNicks=false
+mirccolor2=0,0,140
+msgtypeMeChanUnAdmin=245,3,100,1,1
+msgtypeWho=75,2,100,1,1
+msgtypeDeop=62,3,100,1,1
+msgtypeRaw=25,2,100,1,1
+uintTimeStampBackground=100
+colorUserListViewChanAdminForeground=83,54,5
+colorTreeTaskBarHighlight4Foreground=220,0,255
+colorTaskBarHighlight3Text=128,20,255
+colorTreeTaskBarActiveBackground=200,200,200
+colorLabelForeground=0,0,0
+colorUserListViewSelectionForeground=0,0,0
+colorInputBackgroundColor=255,255,255
+boolDisableUserListLabel=false
+mirccolor10=0,150,180
+mirccolor3=0,100,0
+msgtypeGenericSuccess=136,14,100,1,3
+msgtypeDccChatMsgCrypted=104,1,100,1,3
+msgtypeAction=56,13,100,1,3
+msgtypeSystemWarning=26,4,100,1,3
+uintTimeStampForeground=14
+colorTreeTaskBarHighlight5Foreground=255,0,0
+colorTreeTaskBarForeground=0,0,0
+colorIrcViewBackground=255,255,255
+boolUseFlatClassicTaskbarButtons=true
+boolDisableAvatars=false
+boolUserListViewDrawGrid=false
+boolUseGlobalApplicationFont=false
+iccolor0=250,250,0
+mirccolor11=170,170,255
+mirccolor4=230,0,0
+msgtypeChanUnOwner=261,3,100,1,2
+msgtypeVerbose=259,15,100,1,0
+msgtypeMeDeHalfOp=194,3,100,1,5
+msgtypeBroadcastNotice=184,5,100,1,3
+msgtypeBanExcept=69,15,100,1,1
+msgtypeNick=61,2,100,1,1
+msgtypeOwnPrivateMessage=45,1,100,1,3
+msgtypeLink=0,2,100,1,0
+uintGlobalTransparencyChildFadeFactor=50
+colorTaskBarHighlight5Text=255,0,0
+colorTreeTaskBarBackground=255,255,255
+colorIrcToolBarAppletForegroundHighContrastInactive1=40,40,40
+colorLabelBackground=255,255,255
+colorInputSelectionBackground=198,198,198
+boolObtainGlobalBackgroundFromKde=false
+pixmapLabelBackground=
+iccolor1=0,0,0
+mirccolor12=15,15,255
+mirccolor5=150,0,0
+msgtypeChanAdmin=242,3,100,1,1
+msgtypeGenericStatus=133,14,100,1,1
+msgtypeHalfOp=174,3,100,1,1
+msgtypeDevoice=63,3,100,1,1
+msgtypeJoin=39,14,100,1,2
+msgtypeMotd=30,1,100,1,0
+fontIrcView=Trebuchet%20MS,10,5,50
+colorIrcToolBarAppletForegroundHighContrastInactive2=40,40,40
+colorIrcToolBarAppletForegroundLowContrast=180,180,180
+pixmapGlobalTransparencyBackground=
+pixmapTreeTaskBarBackground=
+iccolor2=0,0,200
+mirccolor13=200,0,200
+mirccolor6=80,0,80
+msgtypeMeChanUnOwner=263,3,100,1,2
+msgtypeMeUserOp=193,3,100,1,1
+msgtypeWhoisIdle=90,2,100,1,1
+msgtypeNicknameProblem=87,3,100,1,1
+msgtypeDccError=79,5,100,1,1
+msgtypeInviteExcept=71,15,100,1,1
+msgtypeConnection=14,5,100,1,1
+msgtypeParserWarning=12,5,100,1,0
+colorUserListViewOwnForeground=126,74,131
+colorUserListViewHalfOpForeground=119,0,178
+colorIrcToolBarAppletForegroundHighContrastActive1=0,0,0
+colorMdiCaptionInactive=180,180,180
+stringExtendedPrivmsgPostfix=]%20
+boolDrawEmoticons=false
+boolIrcViewWrapMargin=true
+iccolor3=200,0,0
+mirccolor14=80,80,80
+mirccolor7=255,90,0
+msgtypeUserOp=174,3,100,1,1
+msgtypeGenericVerbose=137,14,100,1,1
+msgtypeMeUnban=196,5,100,1,5
+msgtypeMeHalfOp=193,3,100,1,5
+msgtypeInvite=176,7,100,1,4
+msgtypeIdent=171,2,100,1,3
+msgtypeChanMode=73,15,100,1,1
+msgtypeBanUnexcept=70,15,100,1,1
+msgtypeKey=65,15,100,1,2
+msgtypeServerInfo=29,1,100,1,1
+fontInput=Trebuchet%20MS,10,5,50
+colorUserListViewAwayForeground=143,143,143
+colorIrcToolBarAppletForegroundHighContrastActive2=0,60,0
+colorInputCursor=72,216,72
+boolUseSpecialColorForTimestamp=true
+pixmapIrcToolBarAppletBackground=
+iccolor4=255,255,255
+mirccolor15=170,170,170
+mirccolor8=255,255,0
+msgtypeSSL=229,2,100,1,0
+msgtypeMeVoice=190,3,100,1,5
+msgtypeChannelNotice=153,5,100,1,3
+msgtypeNotifyOnLine=94,2,100,1,1
+msgtypeCtcpReply=51,5,100,1,2
+msgtypeUnhandledReply=28,2,100,1,1
+msgtypeSystemMessage=27,2,100,1,1
+fontApplication=Sans%20Serif,10,5,50
+colorUserListViewGrid=216,216,216
+colorTreeTaskBarHighlight1Foreground=165,165,165
+colorCaptionTextActive=255,255,255
+pixmapIrcViewBackground=pixmapIrcViewBackground.png
+iccolor5=0,150,190
+mirccolor9=0,255,0
+msgtypeTextEncoding=236,1,100,1,0
+msgtypeMeDeOp=191,3,100,1,5
+msgtypeJoinError=182,5,100,1,4
+msgtypeQueryNotice=155,5,100,1,3
+msgtypeSpam=120,14,100,1,3
+msgtypeKick=110,4,100,1,2
+msgtypeDccRequest=77,5,100,1,3
+msgtypeUnban=68,5,100,1,1
+msgtypeLimit=66,15,100,1,1
+msgtypeMode=64,15,100,1,1
+msgtypePart=40,14,100,1,2
+msgtypeServerPing=36,15,100,1,0
+colorUserListViewOpForeground=200,0,0
+colorInputControl=200,100,0
+colorCaptionTextInactive2=30,30,30
+pixmapMdiBackground=
+iccolor6=0,130,0
+msgtypeHelp=49,3,100,1,1
+msgtypeMeDeUserOp=194,3,100,1,1
+msgtypeChanUnAdmin=243,3,100,1,1
+msgtypeMeKick=188,4,100,1,5
+msgtypeList=173,1,100,1,1
+msgtypeQueryNoticeCrypted=156,5,100,1,3
+msgtypeChannelPrivateMessage=46,1,100,1,3
+msgtypeSocketError=23,4,100,1,4
+msgtypeEcho=0,1,100,1,1
+uintInputPixmapAlign=32
+colorIrcToolBarAppletBackground=255,255,255
+boolShowUserChannelState=false
+boolBoldedNicks=false
+boolShowUserAndHostInPrivmsgView=false
+iccolor7=150,0,170
+msgtypeGenericCritical=134,4,100,1,4
+msgtypeGenericWarning=132,5,100,1,0
+msgtypeCtcpReplyUnknown=162,5,100,1,1
+msgtypeDccMsg=78,5,100,1,2
+msgtypeQuitSplit=60,14,100,1,2
+msgtypeCtcpRequestFlood=54,5,100,1,1
+msgtypeUrl=0,2,100,1,1
+fontLabel=Sans%20Serif,10,5,50
+fontUserListView=Sans%20Serif,10,5,50,i
+uintClassicTaskBarMaximumButtonWidth=100
+colorUserListViewSelectionBackground=194,194,194
+boolClassicTaskBarSetMaximumButtonWidth=true
diff --git a/data/deftheme/silverirc/themeinfo.kvc b/data/deftheme/silverirc/themeinfo.kvc
new file mode 100644
index 00000000..14fbdcc8
--- /dev/null
+++ b/data/deftheme/silverirc/themeinfo.kvc
@@ -0,0 +1,10 @@
+# KVIrc configuration file
+[ThemeInfo]
+Author=Alexey
+Version=0.7
+Name=SilverIRC
+MinimumKvircVersion=3.2.4
+Date=08.01.2007
+Description=Default KVIrc Theme
+ThemeInfoFileVersion=1.0.0
+Application=KVIrc 3.2.4
diff --git a/data/doctemplates/Makefile.am b/data/doctemplates/Makefile.am
new file mode 100644
index 00000000..edd47224
--- /dev/null
+++ b/data/doctemplates/Makefile.am
@@ -0,0 +1 @@
+EXTRA_DIST = rfc2812.template kvircintro.template ircintro.template
diff --git a/data/doctemplates/ircintro.template b/data/doctemplates/ircintro.template
new file mode 100644
index 00000000..9b514856
--- /dev/null
+++ b/data/doctemplates/ircintro.template
@@ -0,0 +1,60 @@
+/*
+ @doc: ircintro
+ @title:
+ Introduction to IRC
+ @short:
+ Introduction to IRC
+ @keyterms:
+ irc,channel,channels,channel operator,irc server,server,irc network,irc user,irc users,irc client,internet relay chat,nickname,nicknames,irc etiquette
+ @body:
+ [big]What is IRC ?[/big][br]
+ Internet Relay Chat (IRC) is one of the most popular and most interactive services on the Internet.
+ When you've been wondering 'where the others are?', then IRC is what you're looking for.
+ IRC allows real-time conversations with people from the whole planet, 24-hours a day, worldwide.
+ [br]
+ [big]How does it work ?[/big][br]
+ IRC consists of various separate networks (or "nets") of IRC servers: machines that allow users to connect to IRC.
+ The largest nets are EFnet (the original IRC net, often having more than 32,000 people at once), Undernet, IRCnet, DALnet, and NewNet.
+ Generally, the user (such as you) runs a program (called "irc client") to connect to a server on one of the IRC nets.
+ The server will relay the informations between you and the "rest" of the network (obviously including the other irc users).
+ Each user is known on IRC by a nickname (or "nick"), such as smartgal or FunGuy.
+ To avoid conflicts with other users, it is best to use a nick that is not too common, e.g., "john" is a poor choice.
+ Some networks allow the registration of nicknames: once you have registered a nickname noone else will be able to use it.
+ Once connected to an IRC server on an IRC network, you will usually join one or more [b]channels[/b] and converse with other irc users.
+ On EFnet, there often are more than 12,000 channels, each one devoted to a different topic.
+ [br]
+ [big]Channels[/big][br]
+ Channel names usually begin with a #, as in #irchelp.
+ The same channels are shared among all IRC servers on the same net, so you do not have to be on the same IRC server as your friends.
+ Each channel can be joined by a "virtually" unlimited number of users and every word spoken "to the channel" is
+ seen by all the users that have joined it.
+ Each channel has a topic that usually describes the ideas being exchanged between users in that moment.
+ It is a good idea to take a look at the topic before starting to talk "randomly" :).
+ Channels are run by channel operators, or just "ops" for short, who can control the channel by choosing who may join (by "banning" some users),
+ who must leave (by "kicking" them out), and even who may speak (by making the channel "moderated")!
+ Channel ops have complete control over their channel, and their decisions are final.
+ If you are banned from a channel, send a /msg to a channel op and ask nicely to be let in
+ (see the /who command in the next section to learn how to find ops).
+ If they ignore you or /who gives no response because the channel is in secret mode (+s),
+ just go somewhere else where you are more welcome.
+ Some IRC networks have a richer hierarchy of channel users and you may find half-operators, channel administrators or
+ channel owners.
+ [br]
+ [big]Just a bit of IRC Etiquette...[/big][br]
+ You'll find all kinds of people on IRC. Some nice, and some not so nice.
+ Simply behave as you would in the real world. Most people will be friendly and considerate, if you are as well.
+ When you join a channel, say hello. Don't expect to get hello's back from everyone,
+ especially when there are lots of people on the channel.
+ If you've never visited the channel before and have no idea what to expect,
+ just sit back and watch for awhile to get a feel for the flow of the channel (thats called "lurking").
+ [br]
+ [big]Finding more info[/big][br]
+ The web is full of informations about IRC: it's just a matter of typing "IRC" in a search engine.
+ An user-friendly site to start from might be www.irchelp.org: you will find a huge list of
+ documents and links that will hopefully answer to all your questions.
+ You may also give a short read to the [doc:kvircintro]Introduction to KVIrc[/doc] which will
+ give you an idea of what an IRC client is.
+ [br]
+ [big]Well...[/big][br]
+ Have fun :)
+*/
diff --git a/data/doctemplates/kvircintro.template b/data/doctemplates/kvircintro.template
new file mode 100644
index 00000000..149590af
--- /dev/null
+++ b/data/doctemplates/kvircintro.template
@@ -0,0 +1,67 @@
+/*
+ @doc: kvircintro
+ @title:
+ Introduction to KVIrc
+ @short:
+ Introduction to KVIrc
+ @keyterms:
+ KVIrc
+ @body:
+ [big]Introduction[/big]
+
+ In really simple words KVIrc is a Chat client: you use it to talk to other
+ people over the internet. More specifically KVIrc is an IRC client
+ and if you haven't readed it yet please take a look at the [doc:ircintro]IRC introduction[/doc]
+ then come back here. Now that you know what IRC is then you already know
+ that an IRC client acts as a relay for the informations that you
+ exchange with your IRC server. KVIrc also acts as a filter and provides
+ an user-friendly interface for the communication protocol that is a bit complex
+ and rude when seen in its original form (by using telnet for example).
+ KVIrc also contains a sophisticated scripting language that allows you to
+ implement automated reactions to the network events. This is something similar
+ to creating a robot that acts spontaneously after you have told him what to do.
+ The scripting language allows you to enchance the KVIrc's interface and
+ to handle special IRC network features that KVIrc itself isn't aware of.
+
+ [big]History[/big]
+
+ The original meaning of the name "KVIrc" was, more or less, "K Visual IRC Client".
+ The initial K is a common prefix for the applications written for the KDE
+ desktop environment: this was the case of the initial versions of KVIrc.
+ Starting from version 2.0.0 the absolute KDE dependancy has been dropped (for several
+ valid reasons) and the support became optional.[br]
+ "Visual" was (and is) one of the client goals: having an user-friendly interface to the IRC world.
+ Many extreme-unix users have misinterpreted the "user-friendly" interface and have tagged
+ KVIrc as a client for "newbies". Well... that is partially true: KVIrc is ALSO a client for newbies:
+ A total IRC novice should be able to "chat" in few minutes after installing the program,
+ preferably without bothering to read any manual. Yes ,I know that it is not in "unix"-style.
+ On the other side, KVIrc contains a whole bunch of compex features that can be discovered
+ only by reading the documentation and experimenting. I bet that you can also
+ find a lot of undocumented tricks :)
+
+ [big]A bit of "philosophy"[/big]
+
+ At the time of writing (Feb 2005) KVIrc approaches release 3.2.0. The small
+ [b]one-man-project[/b] has grown to the level of a small [b]community[/b].
+ People from around the world have joined our development efforts and are
+ constantly donating their time, eyes and bandwidth in order to make KVIrc
+ a really good IRC client. Besides of simply giving you a free (as in freedom!) and nice
+ program for chatting, they are giving you the great opportunity to see what's behind
+ the scenes: you have the source code for the whole application.
+ In practical terms this means more or less 300.000 lines of tested, debugged and
+ commented C++ code, several perl scripts, dozens of makefiles and all the means
+ that you need to produce a working KVIrc executable on all the supported platforms.
+ There is a lot of knowledge (some people call it "technology" because it sells better)
+ inside, ready to be acquired by an attentive reader. Don't forget that the freedom of
+ building your own executable from the sources gives you the opportunity
+ of verifying the source itself: for example you might be interested in verifying
+ that KVIrc will not run any malware code on your machine nor will collect
+ your private data and sell it to someone while you're happily chatting with a friend.
+ [b]We call it freedom, please respect it.[/b]
+
+ [big]Well...[/big]
+
+ Have fun :)[br]
+ [br]
+ Szymon Stefanek and The KVIrc Development Team
+*/
diff --git a/data/doctemplates/rfc2812.template b/data/doctemplates/rfc2812.template
new file mode 100644
index 00000000..9d81a1c8
--- /dev/null
+++ b/data/doctemplates/rfc2812.template
@@ -0,0 +1,3312 @@
+/*
+ @doc: rfc2812
+ @title:
+ RFC2812
+ @short:
+ The IRC protocol specification (revised)
+ @keyterms:
+ irc, protocol, bnf, irc user, irc channel, server protocol,
+ server messages, server replies, numeric messages
+ @body:
+
+[table]
+
+[tr][td][pre]
+Network Working Group, C.Kalt, April 2000
+Request for Comments: 2812
+Updates: 1459
+Category: Informational
+[/pre][/td][/tr]
+
+[tr][td]
+[center][big]Internet Relay Chat: Client Protocol[/big][/center]
+[/td][/tr]
+
+[tr][td]
+[b]Status of this Memo[/b]
+[/td][/tr]
+
+[tr][td]
+This memo provides information for the Internet community. It does
+not specify an Internet standard of any kind. Distribution of this
+memo is unlimited.
+[/td][/tr]
+
+[tr][td]
+[b]Copyright Notice[/b]
+[/td][/tr]
+
+[tr][td]
+Copyright (C) The Internet Society (2000). All Rights Reserved.
+[/td][/tr]
+
+[tr][td]
+[b]IESG NOTE:[/b]
+[/td][/tr]
+
+[tr][td]
+The IRC protocol itself enables several possibilities of transferring
+data between clients, and just like with other transfer mechanisms
+like email, the receiver of the data has to be careful about how the
+data is handled. For more information on security issues with the IRC
+protocol, see for example http://www.irchelp.org/irchelp/security/.
+[/td][/tr]
+
+[tr][td]
+[b]Abstract[/b]
+[/td][/tr]
+
+[tr][td]
+The IRC (Internet Relay Chat) protocol is for use with text based
+conferencing; the simplest client being any socket program capable of
+connecting to the server.
+[p]
+This document defines the Client Protocol, and assumes that the
+reader is familiar with the IRC Architecture [IRC-ARCH].
+[/td][/tr]
+
+[tr][td]
+[b]Table of Contents[/b]
+[/td][/tr]
+
+[tr][td]
+[ul]
+[li]1. Labels[/li]
+[ul]
+[li]1.1 Servers[/li]
+[li]1.2 Clients[/li]
+[ul]
+[li]1.2.1 Users[/li]
+[ul]
+[li]1.2.1.1 Operators[/li]
+[/ul]
+[li]1.2.2 Services[/li]
+[/ul]
+[li]1.3 Channels[/li]
+[/ul]
+[li]2. The IRC Client Specification[/li]
+[ul]
+[li]2.1 Overview[/li]
+[li]2.2 Character codes[/li]
+[li]2.3 Messages[/li]
+[ul]
+[li]2.3.1 Message format in Augmented BNF[/li]
+[/ul]
+[li]2.4 Numeric replies[/li]
+[li]2.5 Wildcard expressions[/li]
+[/ul]
+[li]3. Message Details[/li]
+[ul]
+[li]3.1 Connection Registration[/li]
+[ul]
+[li]3.1.1 Password message[/li]
+[li]3.1.2 Nick message[/li]
+[li]3.1.3 User message[/li]
+[li]3.1.4 Oper message[/li]
+[li]3.1.5 User mode message[/li]
+[li]3.1.6 Service message[/li]
+[li]3.1.7 Quit[/li]
+[li]3.1.8 Squit[/li]
+[/ul]
+[li]3.2 Channel operations[/li]
+[ul]
+[li]3.2.1 Join message[/li]
+[li]3.2.2 Part message[/li]
+[li]3.2.3 Channel mode message[/li]
+[li]3.2.4 Topic message[/li]
+[li]3.2.5 Names message[/li]
+[li]3.2.6 List message[/li]
+[li]3.2.7 Invite message[/li]
+[li]3.2.8 Kick command[/li]
+[/ul]
+[li]3.3 Sending messages[/li]
+[ul]
+[li]3.3.1 Private messages[/li]
+[li]3.3.2 Notice[/li]
+[/ul]
+[li]3.4 Server queries and commands[/li]
+[ul]
+[li]3.4.1 Motd message[/li]
+[li]3.4.2 Lusers message[/li]
+[li]3.4.3 Version message[/li]
+[li]3.4.4 Stats message[/li]
+[li]3.4.5 Links message[/li]
+[li]3.4.6 Time message[/li]
+[li]3.4.7 Connect message[/li]
+[li]3.4.8 Trace message[/li]
+[li]3.4.9 Admin command[/li]
+[li]3.4.10 Info command[/li]
+[/ul]
+[li]3.5 Service Query and Commands[/li]
+[ul]
+[li]3.5.1 Servlist message[/li]
+[li]3.5.2 Squery[/li]
+[/ul]
+[li]3.6 User based queries[/li]
+[ul]
+[li]3.6.1 Who query[/li]
+[li]3.6.2 Whois query[/li]
+[li]3.6.3 Whowas[/li]
+[/ul]
+[li]3.7 Miscellaneous messages[/li]
+[ul]
+[li]3.7.1 Kill message[/li]
+[li]3.7.2 Ping message[/li]
+[li]3.7.3 Pong message[/li]
+[li]3.7.4 Error[/li]
+[/ul]
+[/ul]
+[li]4. Optional features[/li]
+[ul]
+[li]4.1 Away[/li]
+[li]4.2 Rehash message[/li]
+[li]4.3 Die message[/li]
+[li]4.4 Restart message[/li]
+[li]4.5 Summon message[/li]
+[li]4.6 Users[/li]
+[li]4.7 Operwall message[/li]
+[li]4.8 Userhost message[/li]
+[li]4.9 Ison message[/li]
+[/ul]
+[li]5. Replies[/li]
+[ul]
+[li]5.1 Command responses[/li]
+[li]5.2 Error Replies[/li]
+[li]5.3 Reserved numerics[/li]
+[/ul]
+[li]6. Current implementations[/li]
+[li]7. Current problems[/li]
+[ul]
+[li]7.1 Nicknames[/li]
+[li]7.2 Limitation of wildcards[/li]
+[li]7.3 Security considerations[/li]
+[/ul]
+[li]8. Current support and availability[/li]
+[li]9. Acknowledgements[/li]
+[li]10. References[/li]
+[li]11. Author's Address[/li]
+[li]12. Full Copyright Statement[/li]
+[/ul]
+[/td][/tr]
+
+[tr][td]
+[b]1. Labels[/b]
+[/td][/tr]
+
+[tr][td]
+This section defines the identifiers used for the various components
+of the IRC protocol.
+[/td][/tr]
+
+[tr][td]
+[b]1.1 Servers[/b]
+[/td][/tr]
+
+[tr][td]
+Servers are uniquely identified by their name, which has a maximum
+length of sixty three (63) characters. See the protocol grammar
+rules (section 2.3.1) for what may and may not be used in a server
+name.
+[/td][/tr]
+
+[tr][td]
+[b]1.2 Clients[/b]
+[/td][/tr]
+
+[tr][td]
+For each client all servers MUST have the following information: a
+netwide unique identifier (whose format depends on the type of
+client) and the server which introduced the client.
+[/td][/tr]
+
+[tr][td]
+[b]1.2.1 Users[/b]
+[/td][/tr]
+
+[tr][td]
+Each user is distinguished from other users by a unique nickname
+having a maximum length of nine (9) characters. See the protocol
+grammar rules (section 2.3.1) for what may and may not be used in a
+nickname.
+[p]
+While the maximum length is limited to nine characters, clients
+SHOULD accept longer strings as they may become used in future
+evolutions of the protocol.
+[/td][/tr]
+
+[tr][td]
+[b]1.2.1.1 Operators[/b]
+[/td][/tr]
+
+[tr][td]
+To allow a reasonable amount of order to be kept within the IRC
+network, a special class of users (operators) is allowed to perform
+general maintenance functions on the network. Although the powers
+granted to an operator can be considered as 'dangerous', they are
+nonetheless often necessary. Operators SHOULD be able to perform
+basic network tasks such as disconnecting and reconnecting servers as
+needed. In recognition of this need, the protocol discussed herein
+provides for operators only to be able to perform such functions.
+See sections 3.1.8 (SQUIT) and 3.4.7 (CONNECT).[br]
+[p]
+A more controversial power of operators is the ability to remove a
+user from the connected network by 'force', i.e., operators are able
+to close the connection between any client and server. The
+justification for this is very delicate since its abuse is both
+destructive and annoying, and its benefits close to inexistent. For
+further details on this type of action, see section 3.7.1 (KILL).
+[/td][/tr]
+
+[tr][td]
+[b]1.2.2 Services[/b]
+[/td][/tr]
+
+[tr][td]
+Each service is distinguished from other services by a service name
+composed of a nickname and a server name. As for users, the nickname
+has a maximum length of nine (9) characters. See the protocol
+grammar rules (section 2.3.1) for what may and may not be used in a
+nickname.
+[/td][/tr]
+
+[tr][td]
+[b]1.3 Channels[/b]
+[/td][/tr]
+
+[tr][td]
+Channels names are strings (beginning with a '&', '#', '+' or '!'
+character) of length up to fifty (50) characters. Apart from the
+requirement that the first character is either '&', '#', '+' or '!',
+the only restriction on a channel name is that it SHALL NOT contain
+any spaces (' '), a control G (^G or ASCII 7), a comma (','). Space
+is used as parameter separator and command is used as a list item
+separator by the protocol). A colon (':') can also be used as a
+delimiter for the channel mask. Channel names are case insensitive.
+See the protocol grammar rules (section 2.3.1) for the exact syntax
+of a channel name.[br]
+[p]
+Each prefix characterizes a different channel type. The definition
+of the channel types is not relevant to the client-server protocol
+and thus it is beyond the scope of this document. More details can
+be found in "Internet Relay Chat: Channel Management" [IRC-CHAN].
+[/td][/tr]
+
+[tr][td]
+[b]2. The IRC Client Specification[/b]
+[/td][/tr]
+
+[tr][td]
+[b]2.1 Overview[/b]
+[/td][/tr]
+
+[tr][td]
+The protocol as described herein is for use only with client to
+server connections when the client registers as a user.
+[/td][/tr]
+
+[tr][td]
+[b]2.2 Character codes[/b]
+[/td][/tr]
+
+[tr][td]
+No specific character set is specified. The protocol is based on a
+set of codes which are composed of eight (8) bits, making up an
+octet. Each message may be composed of any number of these octets;
+however, some octet values are used for control codes, which act as
+message delimiters.[br]
+[p]
+Regardless of being an 8-bit protocol, the delimiters and keywords
+are such that protocol is mostly usable from US-ASCII terminal and a
+telnet connection.
+[p]
+Because of IRC's Scandinavian origin, the characters {}|^ are
+considered to be the lower case equivalents of the characters []\~,
+respectively. This is a critical issue when determining the
+equivalence of two nicknames or channel names.
+[/td][/tr]
+
+[tr][td]
+[b]2.3 Messages[/b]
+[/td][/tr]
+
+[tr][td]
+Servers and clients send each other messages, which may or may not
+generate a reply. If the message contains a valid command, as
+described in later sections, the client should expect a reply as
+specified but it is not advised to wait forever for the reply; client
+to server and server to server communication is essentially
+asynchronous by nature.
+[p]
+Each IRC message may consist of up to three main parts: the prefix
+(OPTIONAL), the command, and the command parameters (maximum of
+fifteen (15)). The prefix, command, and all parameters are separated
+by one ASCII space character (0x20) each.
+[p]
+The presence of a prefix is indicated with a single leading ASCII
+colon character (':', 0x3b), which MUST be the first character of the
+message itself. There MUST be NO gap (whitespace) between the colon
+and the prefix. The prefix is used by servers to indicate the true
+origin of the message. If the prefix is missing from the message, it
+is assumed to have originated from the connection from which it was
+received from. Clients SHOULD NOT use a prefix when sending a
+message; if they use one, the only valid prefix is the registered
+nickname associated with the client.
+[p]
+The command MUST either be a valid IRC command or a three (3) digit
+number represented in ASCII text.
+[p]
+IRC messages are always lines of characters terminated with a CR-LF
+(Carriage Return - Line Feed) pair, and these messages SHALL NOT
+exceed 512 characters in length, counting all characters including
+the trailing CR-LF. Thus, there are 510 characters maximum allowed
+for the command and its parameters. There is no provision for
+continuation of message lines. See section 6 for more details about
+current implementations.
+[/td][/tr]
+
+[tr][td]
+[b]2.3.1 Message format in Augmented BNF[/b]
+[/td][/tr]
+
+[tr][td]
+The protocol messages must be extracted from the contiguous stream of
+octets. The current solution is to designate two characters, CR and
+LF, as message separators. Empty messages are silently ignored,
+which permits use of the sequence CR-LF between messages without
+extra problems.
+[p]
+The extracted message is parsed into the components <prefix>,
+<command> and list of parameters (<params>).
+[p]
+[pre]
+ The Augmented BNF representation for this is:
+
+ message = [ ":" prefix SPACE ] command [ params ] crlf
+ prefix = servername / ( nickname [ [ "!" user ] "@" host ] )
+ command = 1*letter / 3digit
+ params = *14( SPACE middle ) [ SPACE ":" trailing ]
+ =/ 14( SPACE middle ) [ SPACE [ ":" ] trailing ]
+
+ nospcrlfcl = %x01-09 / %x0B-0C / %x0E-1F / %x21-39 / %x3B-FF
+ ; any octet except NUL, CR, LF, " " and ":"
+ middle = nospcrlfcl *( ":" / nospcrlfcl )
+ trailing = *( ":" / " " / nospcrlfcl )
+
+ SPACE = %x20 ; space character
+ crlf = %x0D %x0A ; "carriage return" "linefeed"
+
+ NOTES:
+ 1) After extracting the parameter list, all parameters are equal
+ whether matched by <middle> or <trailing>. <trailing> is just a
+ syntactic trick to allow SPACE within the parameter.
+
+ 2) The NUL (%x00) character is not special in message framing, and
+ basically could end up inside a parameter, but it would cause
+ extra complexities in normal C string handling. Therefore, NUL
+ is not allowed within messages.
+
+ Most protocol messages specify additional semantics and syntax for
+ the extracted parameter strings dictated by their position in the
+ list. For example, many server commands will assume that the first
+ parameter after the command is the list of targets, which can be
+ described with:
+
+ target = nickname / server
+ msgtarget = msgto *( "," msgto )
+ msgto = channel / ( user [ "%" host ] "@" servername )
+ msgto =/ ( user "%" host ) / targetmask
+ msgto =/ nickname / ( nickname "!" user "@" host )
+ channel = ( "#" / "+" / ( "!" channelid ) / "&" ) chanstring
+ [ ":" chanstring ]
+ servername = hostname
+ host = hostname / hostaddr
+ hostname = shortname *( "." shortname )
+ shortname = ( letter / digit ) *( letter / digit / "-" )
+ *( letter / digit )
+ ; as specified in RFC 1123 [HNAME]
+ hostaddr = ip4addr / ip6addr
+ ip4addr = 1*3digit "." 1*3digit "." 1*3digit "." 1*3digit
+ ip6addr = 1*hexdigit 7( ":" 1*hexdigit )
+ ip6addr =/ "0:0:0:0:0:" ( "0" / "FFFF" ) ":" ip4addr
+ nickname = ( letter / special ) *8( letter / digit / special / "-" )
+ targetmask = ( "$" / "#" ) mask
+ ; see details on allowed masks in section 3.3.1
+ chanstring = %x01-07 / %x08-09 / %x0B-0C / %x0E-1F / %x21-2B
+ chanstring =/ %x2D-39 / %x3B-FF
+ ; any octet except NUL, BELL, CR, LF, " ", "," and ":"
+ channelid = 5( %x41-5A / digit ) ; 5( A-Z / 0-9 )
+
+ Other parameter syntaxes are:
+
+ user = 1*( %x01-09 / %x0B-0C / %x0E-1F / %x21-3F / %x41-FF )
+ ; any octet except NUL, CR, LF, " " and "@"
+ key = 1*23( %x01-05 / %x07-08 / %x0C / %x0E-1F / %x21-7F )
+ ; any 7-bit US_ASCII character,
+ ; except NUL, CR, LF, FF, h/v TABs, and " "
+ letter = %x41-5A / %x61-7A ; A-Z / a-z
+ digit = %x30-39 ; 0-9
+ hexdigit = digit / "A" / "B" / "C" / "D" / "E" / "F"
+ special = %x5B-60 / %x7B-7D
+ ; "[", "]", "\", "`", "_", "^", "{", "|", "}"
+
+ NOTES:
+ 1) The <hostaddr> syntax is given here for the sole purpose of
+ indicating the format to follow for IP addresses. This
+ reflects the fact that the only available implementations of
+ this protocol uses TCP/IP as underlying network protocol but is
+ not meant to prevent other protocols to be used.
+
+ 2) <hostname> has a maximum length of 63 characters. This is a
+ limitation of the protocol as internet hostnames (in
+ particular) can be longer. Such restriction is necessary
+ because IRC messages are limited to 512 characters in length.
+ Clients connecting from a host which name is longer than 63
+ characters are registered using the host (numeric) address
+ instead of the host name.
+
+ 3) Some parameters used in the following sections of this
+ documents are not defined here as there is nothing specific
+ about them besides the name that is used for convenience.
+ These parameters follow the general syntax defined for
+ <params>.
+[/pre]
+[/td][/tr]
+
+[tr][td]
+[b]2.4 Numeric replies[/b]
+[/td][/tr]
+
+[tr][td]
+Most of the messages sent to the server generate a reply of some
+sort. The most common reply is the numeric reply, used for both
+errors and normal replies. The numeric reply MUST be sent as one
+message consisting of the sender prefix, the three-digit numeric, and
+the target of the reply. A numeric reply is not allowed to originate
+from a client. In all other respects, a numeric reply is just like a
+normal message, except that the keyword is made up of 3 numeric
+digits rather than a string of letters. A list of different replies
+is supplied in section 5 (Replies).
+[/td][/tr]
+
+[tr][td]
+[b]2.5 Wildcard expressions[/b]
+[/td][/tr]
+
+[tr][td]
+When wildcards are allowed in a string, it is referred as a "mask".
+[p]
+For string matching purposes, the protocol allows the use of two
+special characters: '?' (%x3F) to match one and only one character,
+and '*' (%x2A) to match any number of any characters. These two
+characters can be escaped using the character '\' (%x5C).
+[p]
+[pre]
+ The Augmented BNF syntax for this is:
+
+ mask = *( nowild / noesc wildone / noesc wildmany )
+ wildone = %x3F
+ wildmany = %x2A
+ nowild = %x01-29 / %x2B-3E / %x40-FF
+ ; any octet except NUL, "*", "?"
+ noesc = %x01-5B / %x5D-FF
+ ; any octet except NUL and "\"
+ matchone = %x01-FF
+ ; matches wildone
+ matchmany = *matchone
+ ; matches wildmany
+
+ Examples:
+
+ a?c ; Matches any string of 3 characters in length starting
+ with "a" and ending with "c"
+
+ a*c ; Matches any string of at least 2 characters in length
+ starting with "a" and ending with "c"
+[/pre]
+[/td][/tr]
+
+[tr][td]
+[b]3. Message Details[/b]
+[/td][/tr]
+
+[tr][td]
+On the following pages there are descriptions of each message
+recognized by the IRC server and client. All commands described in
+this section MUST be implemented by any server for this protocol.
+[p]
+Where the reply ERR_NOSUCHSERVER is returned, it means that the
+target of the message could not be found. The server MUST NOT send
+any other replies after this error for that command.
+[p]
+The server to which a client is connected is required to parse the
+complete message, and return any appropriate errors.
+[p]
+If multiple parameters is presented, then each MUST be checked for
+validity and appropriate responses MUST be sent back to the client.
+In the case of incorrect messages which use parameter lists with
+comma as an item separator, a reply MUST be sent for each item.
+[/td][/tr]
+
+[tr][td]
+[b]3.1 Connection Registration[/b]
+[/td][/tr]
+
+[tr][td]
+The commands described here are used to register a connection with an
+IRC server as a user as well as to correctly disconnect.
+[p]
+A "PASS" command is not required for a client connection to be
+registered, but it MUST precede the latter of the NICK/USER
+combination (for a user connection) or the SERVICE command (for a
+service connection). The RECOMMENDED order for a client to register
+is as follows:
+[p]
+[pre]
+ 1. Pass message
+ 2. Nick message 2. Service message
+ 3. User message
+[/pre]
+[p]
+Upon success, the client will receive an RPL_WELCOME (for users) or
+RPL_YOURESERVICE (for services) message indicating that the
+connection is now registered and known the to the entire IRC network.
+The reply message MUST contain the full client identifier upon which
+it was registered.
+[/td][/tr]
+
+[tr][td]
+[b]3.1.1 Password message[/b]
+[/td][/tr]
+
+[tr][td][pre]
+Command: PASS
+Parameters: <password>
+
+The PASS command is used to set a 'connection password'. The
+optional password can and MUST be set before any attempt to register
+the connection is made. Currently this requires that user send a
+PASS command before sending the NICK/USER combination.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_ALREADYREGISTRED
+
+ Example:
+
+ PASS secretpasswordhere
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.1.2 Nick message[/b]
+[/pre][/td][/tr]
+
+
+[tr][td][pre]
+Command: NICK
+Parameters: <nickname>
+
+NICK command is used to give user a nickname or change the existing
+one.
+
+ Numeric Replies:
+
+ ERR_NONICKNAMEGIVEN ERR_ERRONEUSNICKNAME
+ ERR_NICKNAMEINUSE ERR_NICKCOLLISION
+ ERR_UNAVAILRESOURCE ERR_RESTRICTED
+
+ Examples:
+
+ NICK Wiz ; Introducing new nick "Wiz" if session is
+ still unregistered, or user changing his
+ nickname to "Wiz"
+
+ :[email protected] NICK Kilroy
+ ; Server telling that WiZ changed his
+ nickname to Kilroy.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.1.3 User message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: USER
+Parameters: <user> <mode> <unused> <realname>
+
+The USER command is used at the beginning of connection to specify
+the username, hostname and realname of a new user.
+
+The <mode> parameter should be a numeric, and can be used to
+automatically set user modes when registering with the server. This
+parameter is a bitmask, with only 2 bits having any signification: if
+the bit 2 is set, the user mode 'w' will be set and if the bit 3 is
+set, the user mode 'i' will be set. (See Section 3.1.5 "User
+Modes").
+
+The <realname> may contain space characters.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_ALREADYREGISTRED
+
+ Example:
+
+ USER guest 0 * :Ronnie Reagan ; User registering themselves with a
+ username of "guest" and real name
+ "Ronnie Reagan".
+
+ USER guest 8 * :Ronnie Reagan ; User registering themselves with a
+ username of "guest" and real name
+ "Ronnie Reagan", and asking to be set
+ invisible.
+[/pre][/td][/tr]
+
+
+[tr][td][pre]
+[b]3.1.4 Oper message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: OPER
+Parameters: <name> <password>
+
+A normal user uses the OPER command to obtain operator privileges.
+The combination of <name> and <password> are REQUIRED to gain
+Operator privileges. Upon success, the user will receive a MODE
+message (see section 3.1.5) indicating the new user modes.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS RPL_YOUREOPER
+ ERR_NOOPERHOST ERR_PASSWDMISMATCH
+
+ Example:
+
+ OPER foo bar ; Attempt to register as an operator
+ using a username of "foo" and "bar"
+ as the password.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.1.5 User mode message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: MODE
+Parameters: <nickname>
+*( ( "+" / "-" ) *( "i" / "w" / "o" / "O" / "r" ) )
+
+The user MODE's are typically changes which affect either how the
+client is seen by others or what 'extra' messages the client is sent.
+
+A user MODE command MUST only be accepted if both the sender of the
+message and the nickname given as a parameter are both the same. If
+no other parameter is given, then the server will return the current
+settings for the nick.
+
+ The available modes are as follows:
+
+ a - user is flagged as away;
+ i - marks a users as invisible;
+ w - user receives wallops;
+ r - restricted user connection;
+ o - operator flag;
+ O - local operator flag;
+ s - marks a user for receipt of server notices.
+
+Additional modes may be available later on.
+The flag 'a' SHALL NOT be toggled by the user using the MODE command,
+instead use of the AWAY command is REQUIRED.
+
+If a user attempts to make themselves an operator using the "+o" or
+"+O" flag, the attempt SHOULD be ignored as users could bypass the
+authentication mechanisms of the OPER command. There is no
+restriction, however, on anyone `deopping' themselves (using "-o" or
+"-O").
+
+On the other hand, if a user attempts to make themselves unrestricted
+using the "-r" flag, the attempt SHOULD be ignored. There is no
+restriction, however, on anyone `deopping' themselves (using "+r").
+This flag is typically set by the server upon connection for
+administrative reasons. While the restrictions imposed are left up
+to the implementation, it is typical that a restricted user not be
+allowed to change nicknames, nor make use of the channel operator
+status on channels.
+
+The flag 's' is obsolete but MAY still be used.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_USERSDONTMATCH
+ ERR_UMODEUNKNOWNFLAG RPL_UMODEIS
+
+ Examples:
+
+ MODE WiZ -w ; Command by WiZ to turn off
+ reception of WALLOPS messages.
+
+ MODE Angel +i ; Command from Angel to make herself
+ invisible.
+
+ MODE WiZ -o ; WiZ 'deopping' (removing operator
+ status).
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.1.6 Service message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: SERVICE
+Parameters: <nickname> <reserved> <distribution> <type>
+<reserved> <info>
+
+The SERVICE command to register a new service. Command parameters
+specify the service nickname, distribution, type and info of a new
+service.
+The <distribution> parameter is used to specify the visibility of a
+service. The service may only be known to servers which have a name
+matching the distribution. For a matching server to have knowledge
+of the service, the network path between that server and the server
+on which the service is connected MUST be composed of servers which
+names all match the mask.
+
+The <type> parameter is currently reserved for future usage.
+
+ Numeric Replies:
+
+ ERR_ALREADYREGISTRED ERR_NEEDMOREPARAMS
+ ERR_ERRONEUSNICKNAME
+ RPL_YOURESERVICE RPL_YOURHOST
+ RPL_MYINFO
+
+ Example:
+
+ SERVICE dict * *.fr 0 0 :French Dictionary ; Service registering
+ itself with a name of "dict". This
+ service will only be available on
+ servers which name matches "*.fr".
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.1.7 Quit[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: QUIT
+Parameters: [ <Quit Message> ]
+
+A client session is terminated with a quit message. The server
+acknowledges this by sending an ERROR message to the client.
+
+ Numeric Replies:
+
+ None.
+
+ Example:
+
+ QUIT :Gone to have lunch ; Preferred message format.
+
+ :[email protected] QUIT :Gone to have lunch ; User
+ syrk has quit IRC to have lunch.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.1.8 Squit[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: SQUIT
+Parameters: <server> <comment>
+
+The SQUIT command is available only to operators. It is used to
+disconnect server links. Also servers can generate SQUIT messages on
+error conditions. A SQUIT message may also target a remote server
+connection. In this case, the SQUIT message will simply be sent to
+the remote server without affecting the servers in between the
+operator and the remote server.
+
+The <comment> SHOULD be supplied by all operators who execute a SQUIT
+for a remote server. The server ordered to disconnect its peer
+generates a WALLOPS message with <comment> included, so that other
+users may be aware of the reason of this action.
+
+ Numeric replies:
+
+ ERR_NOPRIVILEGES ERR_NOSUCHSERVER
+ ERR_NEEDMOREPARAMS
+
+ Examples:
+
+ SQUIT tolsun.oulu.fi :Bad Link ? ; Command to uplink of the server
+ tolson.oulu.fi to terminate its
+ connection with comment "Bad Link".
+
+ :Trillian SQUIT cm22.eng.umd.edu :Server out of control ; Command
+ from Trillian from to disconnect
+ "cm22.eng.umd.edu" from the net with
+ comment "Server out of control".
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2 Channel operations[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+This group of messages is concerned with manipulating channels, their
+properties (channel modes), and their contents (typically users).
+For this reason, these messages SHALL NOT be made available to
+services.
+
+All of these messages are requests which will or will not be granted
+by the server. The server MUST send a reply informing the user
+whether the request was granted, denied or generated an error. When
+the server grants the request, the message is typically sent back
+(eventually reformatted) to the user with the prefix set to the user
+itself.
+
+The rules governing how channels are managed are enforced by the
+servers. These rules are beyond the scope of this document. More
+details are found in "Internet Relay Chat: Channel Management" [IRC-
+CHAN].
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2.1 Join message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: JOIN
+Parameters: ( <channel> *( "," <channel> ) [ <key> *( "," <key> ) ] )
+/ "0"
+
+The JOIN command is used by a user to request to start listening to
+the specific channel. Servers MUST be able to parse arguments in the
+form of a list of target, but SHOULD NOT use lists when sending JOIN
+messages to clients.
+
+Once a user has joined a channel, he receives information about
+all commands his server receives affecting the channel. This
+includes JOIN, MODE, KICK, PART, QUIT and of course PRIVMSG/NOTICE.
+This allows channel members to keep track of the other channel
+members, as well as channel modes.
+
+If a JOIN is successful, the user receives a JOIN message as
+confirmation and is then sent the channel's topic (using RPL_TOPIC) and
+the list of users who are on the channel (using RPL_NAMREPLY), which
+MUST include the user joining.
+
+Note that this message accepts a special argument ("0"), which is
+a special request to leave all channels the user is currently a member
+of. The server will process this message as if the user had sent
+a PART command (See Section 3.2.2) for each channel he is a member
+of.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_BANNEDFROMCHAN
+ ERR_INVITEONLYCHAN ERR_BADCHANNELKEY
+ ERR_CHANNELISFULL ERR_BADCHANMASK
+ ERR_NOSUCHCHANNEL ERR_TOOMANYCHANNELS
+ ERR_TOOMANYTARGETS ERR_UNAVAILRESOURCE
+ RPL_TOPIC
+
+ Examples:
+
+ JOIN #foobar ; Command to join channel #foobar.
+
+ JOIN &foo fubar ; Command to join channel &foo using
+ key "fubar".
+
+ JOIN #foo,&bar fubar ; Command to join channel #foo using
+ key "fubar" and &bar using no key.
+
+ JOIN #foo,#bar fubar,foobar ; Command to join channel #foo using
+ key "fubar", and channel #bar using
+ key "foobar".
+
+ JOIN #foo,#bar ; Command to join channels #foo and
+ #bar.
+
+ JOIN 0 ; Leave all currently joined
+ channels.
+
+ :[email protected] JOIN #Twilight_zone ; JOIN message from WiZ
+ on channel #Twilight_zone
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2.2 Part message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: PART
+Parameters: <channel> *( "," <channel> ) [ <Part Message> ]
+
+The PART command causes the user sending the message to be removed
+from the list of active members for all given channels listed in the
+parameter string. If a "Part Message" is given, this will be sent
+instead of the default message, the nickname. This request is always
+granted by the server.
+
+Servers MUST be able to parse arguments in the form of a list of
+target, but SHOULD NOT use lists when sending PART messages to
+clients.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_NOSUCHCHANNEL
+ ERR_NOTONCHANNEL
+
+ Examples:
+
+ PART #twilight_zone ; Command to leave channel
+ "#twilight_zone"
+
+ PART #oz-ops,&group5 ; Command to leave both channels
+ "&group5" and "#oz-ops".
+
+ :[email protected] PART #playzone :I lost
+ ; User WiZ leaving channel
+ "#playzone" with the message "I
+ lost".
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2.3 Channel mode message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: MODE
+Parameters: <channel> *( ( "-" / "+" ) *<modes> *<modeparams> )
+
+The MODE command is provided so that users may query and change the
+characteristics of a channel. For more details on available modes
+and their uses, see "Internet Relay Chat: Channel Management" [IRC-
+CHAN]. Note that there is a maximum limit of three (3) changes per
+command for modes that take a parameter.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_KEYSET
+ ERR_NOCHANMODES ERR_CHANOPRIVSNEEDED
+ ERR_USERNOTINCHANNEL ERR_UNKNOWNMODE
+ RPL_CHANNELMODEIS
+ RPL_BANLIST RPL_ENDOFBANLIST
+ RPL_EXCEPTLIST RPL_ENDOFEXCEPTLIST
+ RPL_INVITELIST RPL_ENDOFINVITELIST
+ RPL_UNIQOPIS
+
+ The following examples are given to help understanding the syntax of
+ the MODE command, but refer to modes defined in "Internet Relay Chat:
+ Channel Management" [IRC-CHAN].
+
+ Examples:
+
+ MODE #Finnish +imI *!*@*.fi ; Command to make #Finnish channel
+ moderated and 'invite-only' with user
+ with a hostname matching *.fi
+ automatically invited.
+
+ MODE #Finnish +o Kilroy ; Command to give 'chanop' privileges
+ to Kilroy on channel #Finnish.
+
+ MODE #Finnish +v Wiz ; Command to allow WiZ to speak on
+ #Finnish.
+
+ MODE #Fins -s ; Command to remove 'secret' flag
+ from channel #Fins.
+
+ MODE #42 +k oulu ; Command to set the channel key to
+ "oulu".
+
+ MODE #42 -k oulu ; Command to remove the "oulu"
+ channel key on channel "#42".
+
+ MODE #eu-opers +l 10 ; Command to set the limit for the
+ number of users on channel
+ "#eu-opers" to 10.
+
+ :[email protected] MODE #eu-opers -l
+ ; User "WiZ" removing the limit for
+ the number of users on channel "#eu-
+ opers".
+
+ MODE &oulu +b ; Command to list ban masks set for
+ the channel "&oulu".
+
+ MODE &oulu +b *!*@* ; Command to prevent all users from
+ joining.
+
+ MODE &oulu +b *!*@*.edu +e *!*@*.bu.edu
+ ; Command to prevent any user from a
+ hostname matching *.edu from joining,
+ except if matching *.bu.edu
+
+ MODE #bu +be *!*@*.edu *!*@*.bu.edu
+ ; Comment to prevent any user from a
+ hostname matching *.edu from joining,
+ except if matching *.bu.edu
+
+ MODE #meditation e ; Command to list exception masks set
+ for the channel "#meditation".
+
+ MODE #meditation I ; Command to list invitations masks
+ set for the channel "#meditation".
+
+ MODE !12345ircd O ; Command to ask who the channel
+ creator for "!12345ircd" is
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2.4 Topic message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: TOPIC
+Parameters: <channel> [ <topic> ]
+
+The TOPIC command is used to change or view the topic of a channel.
+The topic for channel <channel> is returned if there is no <topic>
+given. If the <topic> parameter is present, the topic for that
+channel will be changed, if this action is allowed for the user
+requesting it. If the <topic> parameter is an empty string, the
+topic for that channel will be removed.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_NOTONCHANNEL
+ RPL_NOTOPIC RPL_TOPIC
+ ERR_CHANOPRIVSNEEDED ERR_NOCHANMODES
+
+ Examples:
+
+ :[email protected] TOPIC #test :New topic ; User Wiz setting the
+ topic.
+
+ TOPIC #test :another topic ; Command to set the topic on #test
+ to "another topic".
+
+ TOPIC #test : ; Command to clear the topic on
+ #test.
+
+ TOPIC #test ; Command to check the topic for
+ #test.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2.5 Names message[/b]
+
+Command: NAMES
+Parameters: [ <channel> *( "," <channel> ) [ <target> ] ]
+
+By using the NAMES command, a user can list all nicknames that are
+visible to him. For more details on what is visible and what is not,
+see "Internet Relay Chat: Channel Management" [IRC-CHAN]. The
+<channel> parameter specifies which channel(s) to return information
+about. There is no error reply for bad channel names.
+
+If no <channel> parameter is given, a list of all channels and their
+occupants is returned. At the end of this list, a list of users who
+are visible but either not on any channel or not on a visible channel
+are listed as being on `channel' "*".
+
+If the <target> parameter is specified, the request is forwarded to
+that server which will generate the reply.
+
+Wildcards are allowed in the <target> parameter.
+
+ Numerics:
+
+ ERR_TOOMANYMATCHES ERR_NOSUCHSERVER
+ RPL_NAMREPLY RPL_ENDOFNAMES
+
+ Examples:
+
+ NAMES #twilight_zone,#42 ; Command to list visible users on
+ #twilight_zone and #42
+
+ NAMES ; Command to list all visible
+ channels and users
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2.6 List message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: LIST
+Parameters: [ <channel> *( "," <channel> ) [ <target> ] ]
+
+The list command is used to list channels and their topics. If the
+<channel> parameter is used, only the status of that channel is
+displayed.
+
+If the <target> parameter is specified, the request is forwarded to
+that server which will generate the reply.
+
+Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ ERR_TOOMANYMATCHES ERR_NOSUCHSERVER
+ RPL_LIST RPL_LISTEND
+
+ Examples:
+
+ LIST ; Command to list all channels.
+
+ LIST #twilight_zone,#42 ; Command to list channels
+ #twilight_zone and #42
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2.7 Invite message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: INVITE
+Parameters: <nickname> <channel>
+
+The INVITE command is used to invite a user to a channel. The
+parameter <nickname> is the nickname of the person to be invited to
+the target channel <channel>. There is no requirement that the
+channel the target user is being invited to must exist or be a valid
+channel. However, if the channel exists, only members of the channel
+are allowed to invite other users. When the channel has invite-only
+flag set, only channel operators may issue INVITE command.
+Only the user inviting and the user being invited will receive
+notification of the invitation. Other channel members are not
+notified. (This is unlike the MODE changes, and is occasionally the
+source of trouble for users.)
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_NOSUCHNICK
+ ERR_NOTONCHANNEL ERR_USERONCHANNEL
+ ERR_CHANOPRIVSNEEDED
+ RPL_INVITING RPL_AWAY
+
+ Examples:
+
+ :[email protected] INVITE Wiz #Dust
+
+ ; Message to WiZ when he has been
+ invited by user Angel to channel
+ #Dust
+
+ INVITE Wiz #Twilight_Zone ; Command to invite WiZ to
+ #Twilight_zone
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2.8 Kick command[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: KICK
+Parameters: <channel> *( "," <channel> ) <user> *( "," <user> )
+[<comment>]
+
+The KICK command can be used to request the forced removal of a user
+from a channel. It causes the <user> to PART from the <channel> by
+force. For the message to be syntactically correct, there MUST be
+either one channel parameter and multiple user parameter, or as many
+channel parameters as there are user parameters. If a "comment" is
+given, this will be sent instead of the default message, the nickname
+of the user issuing the KICK.
+
+The server MUST NOT send KICK messages with multiple channels or
+users to clients. This is necessarily to maintain backward
+compatibility with old client software.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_NOSUCHCHANNEL
+ ERR_BADCHANMASK ERR_CHANOPRIVSNEEDED
+ ERR_USERNOTINCHANNEL ERR_NOTONCHANNEL
+
+ Examples:
+
+ KICK &Melbourne Matthew ; Command to kick Matthew from
+ &Melbourne
+
+ KICK #Finnish John :Speaking English
+ ; Command to kick John from #Finnish
+ using "Speaking English" as the
+ reason (comment).
+
+ :[email protected] KICK #Finnish John
+ ; KICK message on channel #Finnish
+ from WiZ to remove John from channel
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.3 Sending messages[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+The main purpose of the IRC protocol is to provide a base for clients
+to communicate with each other. PRIVMSG, NOTICE and SQUERY
+(described in Section 3.5 on Service Query and Commands) are the only
+messages available which actually perform delivery of a text message
+from one client to another - the rest just make it possible and try
+to ensure it happens in a reliable and structured manner.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.3.1 Private messages[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: PRIVMSG
+Parameters: <msgtarget> <text to be sent>
+
+PRIVMSG is used to send private messages between users, as well as to
+send messages to channels. <msgtarget> is usually the nickname of
+the recipient of the message, or a channel name.
+
+The <msgtarget> parameter may also be a host mask (#<mask>) or server
+mask ($<mask>). In both cases the server will only send the PRIVMSG
+to those who have a server or host matching the mask. The mask MUST
+have at least 1 (one) "." in it and no wildcards following the last
+".". This requirement exists to prevent people sending messages to
+"#*" or "$*", which would broadcast to all users. Wildcards are the
+'*' and '?' characters. This extension to the PRIVMSG command is
+only available to operators.
+
+ Numeric Replies:
+
+ ERR_NORECIPIENT ERR_NOTEXTTOSEND
+ ERR_CANNOTSENDTOCHAN ERR_NOTOPLEVEL
+ ERR_WILDTOPLEVEL ERR_TOOMANYTARGETS
+ ERR_NOSUCHNICK
+ RPL_AWAY
+
+ Examples:
+
+ :[email protected] PRIVMSG Wiz :Are you receiving this message ?
+ ; Message from Angel to Wiz.
+
+ PRIVMSG Angel :yes I'm receiving it !
+ ; Command to send a message to Angel.
+
+ PRIVMSG [email protected] :Hello !
+ ; Command to send a message to a user
+ on server tolsun.oulu.fi with
+ username of "jto".
+
+ PRIVMSG kalt%[email protected] :Are you a frog?
+ ; Message to a user on server
+ irc.stealth.net with username of
+ "kalt", and connected from the host
+ millennium.stealth.net.
+
+ PRIVMSG kalt%millennium.stealth.net :Do you like cheese?
+ ; Message to a user on the local
+ server with username of "kalt", and
+ connected from the host
+ millennium.stealth.net.
+
+ PRIVMSG [email protected] :Hello !
+ ; Message to the user with nickname
+ Wiz who is connected from the host
+ tolsun.oulu.fi and has the username
+ "jto".
+
+ PRIVMSG $*.fi :Server tolsun.oulu.fi rebooting.
+ ; Message to everyone on a server
+ which has a name matching *.fi.
+
+ PRIVMSG #*.edu :NSFNet is undergoing work, expect interruptions
+ ; Message to all users who come from
+ a host which has a name matching
+ *.edu.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.3.2 Notice[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: NOTICE
+Parameters: <msgtarget> <text>
+
+The NOTICE command is used similarly to PRIVMSG. The difference
+between NOTICE and PRIVMSG is that automatic replies MUST NEVER be
+sent in response to a NOTICE message. This rule applies to servers
+too - they MUST NOT send any error reply back to the client on
+receipt of a notice. The object of this rule is to avoid loops
+between clients automatically sending something in response to
+something it received.
+
+This command is available to services as well as users.
+
+This is typically used by services, and automatons (clients with
+either an AI or other interactive program controlling their actions).
+
+See PRIVMSG for more details on replies and examples.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4 Server queries and commands[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+The server query group of commands has been designed to return
+information about any server which is connected to the network.
+
+In these queries, where a parameter appears as <target>, wildcard
+masks are usually valid. For each parameter, however, only one query
+and set of replies is to be generated. In most cases, if a nickname
+is given, it will mean the server to which the user is connected.
+
+These messages typically have little value for services, it is
+therefore RECOMMENDED to forbid services from using them.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.1 Motd message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: MOTD
+Parameters: [ <target> ]
+
+The MOTD command is used to get the "Message Of The Day" of the given
+server, or current server if <target> is omitted.
+
+Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+ RPL_MOTDSTART RPL_MOTD
+ RPL_ENDOFMOTD ERR_NOMOTD
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.2 Lusers message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: LUSERS
+Parameters: [ <mask> [ <target> ] ]
+
+The LUSERS command is used to get statistics about the size of the
+IRC network. If no parameter is given, the reply will be about the
+whole net. If a <mask> is specified, then the reply will only
+concern the part of the network formed by the servers matching the
+mask. Finally, if the <target> parameter is specified, the request
+is forwarded to that server which will generate the reply.
+
+Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ RPL_LUSERCLIENT RPL_LUSEROP
+ RPL_LUSERUNKOWN RPL_LUSERCHANNELS
+ RPL_LUSERME ERR_NOSUCHSERVER
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.3 Version message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: VERSION
+Parameters: [ <target> ]
+
+The VERSION command is used to query the version of the server
+program. An optional parameter <target> is used to query the version
+of the server program which a client is not directly connected to.
+
+Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER RPL_VERSION
+
+ Examples:
+
+ VERSION tolsun.oulu.fi ; Command to check the version of
+ server "tolsun.oulu.fi".
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.4 Stats message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: STATS
+Parameters: [ <query> [ <target> ] ]
+
+The stats command is used to query statistics of certain server. If
+<query> parameter is omitted, only the end of stats reply is sent
+back.
+
+A query may be given for any single letter which is only checked by
+the destination server and is otherwise passed on by intermediate
+servers, ignored and unaltered.
+
+Wildcards are allowed in the <target> parameter.
+Except for the ones below, the list of valid queries is
+implementation dependent. The standard queries below SHOULD be
+supported by the server:
+
+ l - returns a list of the server's connections, showing how
+ long each connection has been established and the
+ traffic over that connection in Kbytes and messages for
+ each direction;
+ m - returns the usage count for each of commands supported
+ by the server; commands for which the usage count is
+ zero MAY be omitted;
+ o - returns a list of configured privileged users,
+ operators;
+ u - returns a string showing how long the server has been
+ up.
+
+It is also RECOMMENDED that client and server access configuration be
+published this way.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER
+ RPL_STATSLINKINFO RPL_STATSUPTIME
+ RPL_STATSCOMMANDS RPL_STATSOLINE
+ RPL_ENDOFSTATS
+
+ Examples:
+
+ STATS m ; Command to check the command usage
+ for the server you are connected to
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.5 Links message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: LINKS
+Parameters: [ [ <remote server> ] <server mask> ]
+
+With LINKS, a user can list all servernames, which are known by the
+server answering the query. The returned list of servers MUST match
+the mask, or if no mask is given, the full list is returned.
+
+If <remote server> is given in addition to <server mask>, the LINKS
+command is forwarded to the first server found that matches that name
+(if any), and that server is then required to answer the query.
+
+Numeric Replies:
+
+ ERR_NOSUCHSERVER
+ RPL_LINKSRPL_ENDOFLINKS
+
+Examples:
+
+LINKS *.au ; Command to list all servers which
+ have a name that matches *.au;
+
+LINKS *.edu *.bu.edu; Command to list servers matching
+ *.bu.edu as seen by the first server
+ matching *.edu.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.6 Time message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: TIME
+Parameters: [ <target> ]
+
+The time command is used to query local time from the specified
+server. If the <target> parameter is not given, the server receiving
+the command must reply to the query.
+
+Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER RPL_TIME
+
+ Examples:
+ TIME tolsun.oulu.fi ; check the time on the server
+ "tolson.oulu.fi"
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.7 Connect message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: CONNECT
+Parameters: <target server> <port> [ <remote server> ]
+
+The CONNECT command can be used to request a server to try to
+establish a new connection to another server immediately. CONNECT is
+a privileged command and SHOULD be available only to IRC Operators.
+If a <remote server> is given and its mask doesn't match name of the
+parsing server, the CONNECT attempt is sent to the first match of
+remote server. Otherwise the CONNECT attempt is made by the server
+processing the request.
+
+The server receiving a remote CONNECT command SHOULD generate a
+WALLOPS message describing the source and target of the request.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER ERR_NOPRIVILEGES
+ ERR_NEEDMOREPARAMS
+
+ Examples:
+
+ CONNECT tolsun.oulu.fi 6667 ; Command to attempt to connect local
+ server to tolsun.oulu.fi on port 6667
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.8 Trace message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: TRACE
+Parameters: [ <target> ]
+
+TRACE command is used to find the route to specific server and
+information about its peers. Each server that processes this command
+MUST report to the sender about it. The replies from pass-through
+links form a chain, which shows route to destination. After sending
+this reply back, the query MUST be sent to the next server until
+given <target> server is reached.
+
+TRACE command is used to find the route to specific server. Each
+server that processes this message MUST tell the sender about it by
+sending a reply indicating it is a pass-through link, forming a chain
+of replies. After sending this reply back, it MUST then send the
+TRACE message to the next server until given server is reached. If
+the <target> parameter is omitted, it is RECOMMENDED that TRACE
+command sends a message to the sender telling which servers the local
+server has direct connection to.
+
+If the destination given by <target> is an actual server, the
+destination server is REQUIRED to report all servers, services and
+operators which are connected to it; if the command was issued by an
+operator, the server MAY also report all users which are connected to
+it. If the destination given by <target> is a nickname, then only a
+reply for that nickname is given. If the <target> parameter is
+omitted, it is RECOMMENDED that the TRACE command is parsed as
+targeted to the processing server.
+
+Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER
+
+ If the TRACE message is destined for another server, all
+ intermediate servers must return a RPL_TRACELINK reply to indicate
+ that the TRACE passed through it and where it is going next.
+
+ RPL_TRACELINK
+
+ A TRACE reply may be composed of any number of the following
+ numeric replies.
+
+ RPL_TRACECONNECTING RPL_TRACEHANDSHAKE
+ RPL_TRACEUNKNOWN RPL_TRACEOPERATOR
+ RPL_TRACEUSER RPL_TRACESERVER
+ RPL_TRACESERVICE RPL_TRACENEWTYPE
+ RPL_TRACECLASS RPL_TRACELOG
+ RPL_TRACEEND
+
+ Examples:
+
+ TRACE *.oulu.fi ; TRACE to a server matching
+ *.oulu.fi
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.9 Admin command[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: ADMIN
+Parameters: [ <target> ]
+
+The admin command is used to find information about the administrator
+of the given server, or current server if <target> parameter is
+omitted. Each server MUST have the ability to forward ADMIN messages
+to other servers.
+
+Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER
+ RPL_ADMINME RPL_ADMINLOC1
+ RPL_ADMINLOC2 RPL_ADMINEMAIL
+
+ Examples:
+
+ ADMIN tolsun.oulu.fi ; request an ADMIN reply from
+ tolsun.oulu.fi
+
+ ADMIN syrk ; ADMIN request for the server to
+ which the user syrk is connected
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.10 Info command[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: INFO
+Parameters: [ <target> ]
+
+The INFO command is REQUIRED to return information describing the
+server: its version, when it was compiled, the patchlevel, when it
+was started, and any other miscellaneous information which may be
+considered to be relevant.
+
+Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER
+ RPL_INFO RPL_ENDOFINFO
+
+ Examples:
+
+ INFO csd.bu.edu ; request an INFO reply from
+ csd.bu.edu
+
+ INFO Angel ; request info from the server that
+ Angel is connected to.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.5 Service Query and Commands[/b]
+[/pre][/td][/tr]
+[tr][td][pre]
+The service query group of commands has been designed to return
+information about any service which is connected to the network.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.5.1 Servlist message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: SERVLIST
+Parameters: [ <mask> [ <type> ] ]
+
+The SERVLIST command is used to list services currently connected to
+the network and visible to the user issuing the command. The
+optional parameters may be used to restrict the result of the query
+(to matching services names, and services type).
+
+ Numeric Replies:
+
+ RPL_SERVLIST RPL_SERVLISTEND
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.5.2 Squery[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: SQUERY
+Parameters: <servicename> <text>
+
+The SQUERY command is used similarly to PRIVMSG. The only difference
+is that the recipient MUST be a service. This is the only way for a
+text message to be delivered to a service.
+
+See PRIVMSG for more details on replies and example.
+
+ Examples:
+
+ SQUERY irchelp :HELP privmsg
+ ; Message to the service with
+ nickname irchelp.
+
+ SQUERY [email protected] :fr2en blaireau
+ ; Message to the service with name
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.6 User based queries[/b]
+[/pre][/td][/tr]
+[tr][td][pre]
+User queries are a group of commands which are primarily concerned
+with finding details on a particular user or group users. When using
+wildcards with any of these commands, if they match, they will only
+return information on users who are 'visible' to you. The visibility
+of a user is determined as a combination of the user's mode and the
+common set of channels you are both on.
+
+Although services SHOULD NOT be using this class of message, they are
+allowed to.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.6.1 Who query[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: WHO
+Parameters: [ <mask> [ "o" ] ]
+
+The WHO command is used by a client to generate a query which returns
+a list of information which 'matches' the <mask> parameter given by
+the client. In the absence of the <mask> parameter, all visible
+(users who aren't invisible (user mode +i) and who don't have a
+common channel with the requesting client) are listed. The same
+result can be achieved by using a <mask> of "0" or any wildcard which
+will end up matching every visible user.
+
+The <mask> passed to WHO is matched against users' host, server, real
+name and nickname if the channel <mask> cannot be found.
+If the "o" parameter is passed only operators are returned according
+to the <mask> supplied.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER
+ RPL_WHOREPLY RPL_ENDOFWHO
+
+ Examples:
+
+ WHO *.fi ; Command to list all users who match
+ against "*.fi".
+
+ WHO jto* o ; Command to list all users with a
+ match against "jto*" if they are an
+ operator.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.6.2 Whois query[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: WHOIS
+Parameters: [ <target> ] <mask> *( "," <mask> )
+
+This command is used to query information about particular user.
+The server will answer this command with several numeric messages
+indicating different statuses of each user which matches the mask (if
+you are entitled to see them). If no wildcard is present in the
+<mask>, any information about that nick which you are allowed to see
+is presented.
+
+If the <target> parameter is specified, it sends the query to a
+specific server. It is useful if you want to know how long the user
+in question has been idle as only local server (i.e., the server the
+user is directly connected to) knows that information, while
+everything else is globally known.
+
+Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER ERR_NONICKNAMEGIVEN
+ RPL_WHOISUSER RPL_WHOISCHANNELS
+ RPL_WHOISCHANNELS RPL_WHOISSERVER
+ RPL_AWAY RPL_WHOISOPERATOR
+ RPL_WHOISIDLE ERR_NOSUCHNICK
+ RPL_ENDOFWHOIS
+
+ Examples:
+
+ WHOIS wiz ; return available user information
+ about nick WiZ
+
+ WHOIS eff.org trillian ; ask server eff.org for user
+ information about trillian
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.6.3 Whowas[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: WHOWAS
+Parameters: <nickname> *( "," <nickname> ) [ <count> [ <target> ] ]
+
+Whowas asks for information about a nickname which no longer exists.
+This may either be due to a nickname change or the user leaving IRC.
+In response to this query, the server searches through its nickname
+history, looking for any nicks which are lexically the same (no wild
+card matching here). The history is searched backward, returning the
+most recent entry first. If there are multiple entries, up to
+<count> replies will be returned (or all of them if no <count>
+parameter is given). If a non-positive number is passed as being
+<count>, then a full search is done.
+
+Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ ERR_NONICKNAMEGIVEN ERR_WASNOSUCHNICK
+ RPL_WHOWASUSER RPL_WHOISSERVER
+ RPL_ENDOFWHOWAS
+
+ Examples:
+
+ WHOWAS Wiz ; return all information in the nick
+ history about nick "WiZ";
+
+ WHOWAS Mermaid 9 ; return at most, the 9 most recent
+ entries in the nick history for
+ "Mermaid";
+
+ WHOWAS Trillian 1 *.edu ; return the most recent history for
+ "Trillian" from the first server
+ found to match "*.edu".
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.7 Miscellaneous messages[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Messages in this category do not fit into any of the above categories
+but are nonetheless still a part of and REQUIRED by the protocol.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.7.1 Kill message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: KILL
+Parameters: <nickname> <comment>
+
+The KILL command is used to cause a client-server connection to be
+closed by the server which has the actual connection. Servers
+generate KILL messages on nickname collisions. It MAY also be
+available available to users who have the operator status.
+
+Clients which have automatic reconnect algorithms effectively make
+this command useless since the disconnection is only brief. It does
+however break the flow of data and can be used to stop large amounts
+of 'flooding' from abusive users or accidents. Abusive users usually
+don't care as they will reconnect promptly and resume their abusive
+behaviour. To prevent this command from being abused, any user may
+elect to receive KILL messages generated for others to keep an 'eye'
+on would be trouble spots.
+
+In an arena where nicknames are REQUIRED to be globally unique at all
+times, KILL messages are sent whenever 'duplicates' are detected
+(that is an attempt to register two users with the same nickname) in
+the hope that both of them will disappear and only 1 reappear.
+
+When a client is removed as the result of a KILL message, the server
+SHOULD add the nickname to the list of unavailable nicknames in an
+attempt to avoid clients to reuse this name immediately which is
+usually the pattern of abusive behaviour often leading to useless
+"KILL loops". See the "IRC Server Protocol" document [IRC-SERVER]
+for more information on this procedure.
+
+The comment given MUST reflect the actual reason for the KILL. For
+server-generated KILLs it usually is made up of details concerning
+the origins of the two conflicting nicknames. For users it is left
+up to them to provide an adequate reason to satisfy others who see
+it. To prevent/discourage fake KILLs from being generated to hide
+the identify of the KILLer, the comment also shows a 'kill-path'
+which is updated by each server it passes through, each prepending
+its name to the path.
+
+ Numeric Replies:
+
+ ERR_NOPRIVILEGES ERR_NEEDMOREPARAMS
+ ERR_NOSUCHNICK ERR_CANTKILLSERVER
+
+NOTE:
+It is RECOMMENDED that only Operators be allowed to kill other users
+with KILL command. This command has been the subject of many
+controversies over the years, and along with the above
+recommendation, it is also widely recognized that not even operators
+should be allowed to kill users on remote servers.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.7.2 Ping message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: PING
+Parameters: <server1> [ <server2> ]
+
+The PING command is used to test the presence of an active client or
+server at the other end of the connection. Servers send a PING
+message at regular intervals if no other activity detected coming
+from a connection. If a connection fails to respond to a PING
+message within a set amount of time, that connection is closed. A
+PING message MAY be sent even if the connection is active.
+
+When a PING message is received, the appropriate PONG message MUST be
+sent as reply to <server1> (server which sent the PING message out)
+as soon as possible. If the <server2> parameter is specified, it
+represents the target of the ping, and the message gets forwarded
+there.
+
+ Numeric Replies:
+
+ ERR_NOORIGIN ERR_NOSUCHSERVER
+
+ Examples:
+
+ PING tolsun.oulu.fi ; Command to send a PING message to
+ server
+
+ PING WiZ tolsun.oulu.fi ; Command from WiZ to send a PING
+ message to server "tolsun.oulu.fi"
+
+ PING :irc.funet.fi ; Ping message sent by server
+ "irc.funet.fi"
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.7.3 Pong message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: PONG
+Parameters: <server> [ <server2> ]
+
+PONG message is a reply to ping message. If parameter <server2> is
+given, this message MUST be forwarded to given target. The <server>
+parameter is the name of the entity who has responded to PING message
+and generated this message.
+
+ Numeric Replies:
+
+ ERR_NOORIGIN ERR_NOSUCHSERVER
+
+ Example:
+
+ PONG csd.bu.edu tolsun.oulu.fi ; PONG message from csd.bu.edu to
+ tolsun.oulu.fi
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.7.4 Error[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: ERROR
+Parameters: <error message>
+
+The ERROR command is for use by servers when reporting a serious or
+fatal error to its peers. It may also be sent from one server to
+another but MUST NOT be accepted from any normal unknown clients.
+
+Only an ERROR message SHOULD be used for reporting errors which occur
+with a server-to-server link. An ERROR message is sent to the server
+at the other end (which reports it to appropriate local users and
+logs) and to appropriate local users and logs. It is not to be
+passed onto any other servers by a server if it is received from a
+server.
+
+The ERROR message is also used before terminating a client
+connection.
+
+When a server sends a received ERROR message to its operators, the
+message SHOULD be encapsulated inside a NOTICE message, indicating
+that the client was not responsible for the error.
+
+ Numerics:
+
+ None.
+
+ Examples:
+
+ ERROR :Server *.fi already exists ; ERROR message to the other server
+ which caused this error.
+
+ NOTICE WiZ :ERROR from csd.bu.edu -- Server *.fi already exists
+ ; Same ERROR message as above but
+ sent to user WiZ on the other server.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]4. Optional features[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+This section describes OPTIONAL messages. They are not required in a
+working server implementation of the protocol described herein. In
+the absence of the feature, an error reply message MUST be generated
+or an unknown command error. If the message is destined for another
+server to answer then it MUST be passed on (elementary parsing
+REQUIRED) The allocated numerics for this are listed with the
+messages below.
+
+From this section, only the USERHOST and ISON messages are available
+to services.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]4.1 Away[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: AWAY
+Parameters: [ <text> ]
+
+With the AWAY command, clients can set an automatic reply string for
+any PRIVMSG commands directed at them (not to a channel they are on).
+The server sends an automatic reply to the client sending the PRIVMSG
+command. The only replying server is the one to which the sending
+client is connected to.
+
+The AWAY command is used either with one parameter, to set an AWAY
+message, or with no parameters, to remove the AWAY message.
+
+Because of its high cost (memory and bandwidth wise), the AWAY
+message SHOULD only be used for client-server communication. A
+server MAY choose to silently ignore AWAY messages received from
+other servers. To update the away status of a client across servers,
+the user mode 'a' SHOULD be used instead. (See Section 3.1.5)
+
+ Numeric Replies:
+
+ RPL_UNAWAY RPL_NOWAWAY
+
+ Example:
+
+ AWAY :Gone to lunch. Back in 5 ; Command to set away message to
+ "Gone to lunch. Back in 5".
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]4.2 Rehash message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: REHASH
+Parameters: None
+
+The rehash command is an administrative command which can be used by
+an operator to force the server to re-read and process its
+configuration file.
+
+ Numeric Replies:
+
+ RPL_REHASHING ERR_NOPRIVILEGES
+
+
+ Example:
+
+ REHASH ; message from user with operator
+ status to server asking it to reread
+ its configuration file.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]4.3 Die message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: DIE
+Parameters: None
+
+An operator can use the DIE command to shutdown the server. This
+message is optional since it may be viewed as a risk to allow
+arbitrary people to connect to a server as an operator and execute
+this command.
+
+The DIE command MUST always be fully processed by the server to which
+the sending client is connected and MUST NOT be passed onto other
+connected servers.
+
+ Numeric Replies:
+
+ ERR_NOPRIVILEGES
+
+ Example:
+
+ DIE ; no parameters required.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]4.4 Restart message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: RESTART
+Parameters: None
+
+An operator can use the restart command to force the server to
+restart itself. This message is optional since it may be viewed as a
+risk to allow arbitrary people to connect to a server as an operator
+and execute this command, causing (at least) a disruption to service.
+
+The RESTART command MUST always be fully processed by the server to
+which the sending client is connected and MUST NOT be passed onto
+other connected servers.
+
+ Numeric Replies:
+
+ ERR_NOPRIVILEGES
+
+ Example:
+
+ RESTART ; no parameters required.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]4.5 Summon message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: SUMMON
+Parameters: <user> [ <target> [ <channel> ] ]
+
+The SUMMON command can be used to give users who are on a host
+running an IRC server a message asking them to please join IRC. This
+message is only sent if the target server (a) has SUMMON enabled, (b)
+the user is logged in and (c) the server process can write to the
+user's tty (or similar).
+
+If no <server> parameter is given it tries to summon <user> from the
+server the client is connected to is assumed as the target.
+
+If summon is not enabled in a server, it MUST return the
+ERR_SUMMONDISABLED numeric.
+
+ Numeric Replies:
+
+ ERR_NORECIPIENT ERR_FILEERROR
+ ERR_NOLOGIN ERR_NOSUCHSERVER
+ ERR_SUMMONDISABLED RPL_SUMMONING
+
+ Examples:
+
+ SUMMON jto ; summon user jto on the server's
+ host
+
+ SUMMON jto tolsun.oulu.fi ; summon user jto on the host which a
+ server named "tolsun.oulu.fi" is
+ running.
+[/pre][/td][/tr]
+
+[tr][td]
+[b]4.6 Users[/b]
+[/td][/tr]
+
+[tr][td][pre]
+Command: USERS
+Parameters: [ <target> ]
+
+The USERS command returns a list of users logged into the server in a
+format similar to the UNIX commands who(1), rusers(1) and finger(1).
+If disabled, the correct numeric MUST be returned to indicate this.
+
+Because of the security implications of such a command, it SHOULD be
+disabled by default in server implementations. Enabling it SHOULD
+require recompiling the server or some equivalent change rather than
+simply toggling an option and restarting the server. The procedure
+to enable this command SHOULD also include suitable large comments.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER ERR_FILEERROR
+ RPL_USERSSTART RPL_USERS
+ RPL_NOUSERS RPL_ENDOFUSERS
+ ERR_USERSDISABLED
+
+ Disabled Reply:
+
+ ERR_USERSDISABLED
+
+ Example:
+
+ USERS eff.org ; request a list of users logged in
+ on server eff.org
+[/pre][/td][/tr]
+
+[tr][td]
+[b]4.7 Operwall message[/b]
+[/td][/tr]
+
+[tr][td][pre]
+Command: WALLOPS
+Parameters: <Text to be sent>
+
+The WALLOPS command is used to send a message to all currently
+connected users who have set the 'w' user mode for themselves. (See
+Section 3.1.5 "User modes").
+After implementing WALLOPS as a user command it was found that it was
+often and commonly abused as a means of sending a message to a lot of
+people. Due to this, it is RECOMMENDED that the implementation of
+WALLOPS allows and recognizes only servers as the originators of
+WALLOPS.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS
+
+ Example:
+
+ :csd.bu.edu WALLOPS :Connect '*.uiuc.edu 6667' from Joshua ; WALLOPS
+ message from csd.bu.edu announcing a
+ CONNECT message it received from
+ Joshua and acted upon.
+[/pre][/td][/tr]
+
+[tr][td]
+[b]4.8 Userhost message[/b]
+[/td][/tr]
+
+[tr][td][pre]
+Command: USERHOST
+Parameters: <nickname> *( SPACE <nickname> )
+
+The USERHOST command takes a list of up to 5 nicknames, each
+separated by a space character and returns a list of information
+about each nickname that it found. The returned list has each reply
+separated by a space.
+
+ Numeric Replies:
+
+ RPL_USERHOST ERR_NEEDMOREPARAMS
+
+ Example:
+
+ USERHOST Wiz Michael syrk ; USERHOST request for information on
+ nicks "Wiz", "Michael", and "syrk"
+
+ :ircd.stealth.net 302 yournick :[email protected]
+ ; Reply for user syrk
+[/pre][/td][/tr]
+
+[tr][td]
+[b]4.9 Ison message[/b]
+[/td][/tr]
+
+[tr][td][pre]
+Command: ISON
+Parameters: <nickname> *( SPACE <nickname> )
+
+The ISON command was implemented to provide a quick and efficient
+means to get a response about whether a given nickname was currently
+on IRC. ISON only takes one (1) type of parameter: a space-separated
+list of nicks. For each nickname in the list that is present, the
+server adds that to its reply string. Thus the reply string may
+return empty (none of the given nicks are present), an exact copy of
+the parameter string (all of them present) or any other subset of the
+set of nicks given in the parameter. The only limit on the number of
+nicks that may be checked is that the combined length MUST NOT be too
+large as to cause the server to chop it off so it fits in 512
+characters.
+
+ISON is only processed by the server local to the client sending the
+command and thus not passed onto other servers for further
+processing.
+
+ Numeric Replies:
+
+ RPL_ISON ERR_NEEDMOREPARAMS
+
+ Example:
+
+ ISON phone trillian WiZ jarlek Avalon Angel Monstah syrk
+ ; Sample ISON request for 7 nicks.
+[/pre][/td][/tr]
+
+[tr][td]
+[b]5. Replies[/b]
+[/td][/tr]
+
+[tr][td]
+The following is a list of numeric replies which are generated in
+response to the commands given above. Each numeric is given with its
+number, name and reply string.
+[/td][/tr]
+
+[tr][td]
+[b]5.1 Command responses[/b]
+[/td][/tr]
+
+[tr][td]
+Numerics in the range from 001 to 099 are used for client-server
+connections only and should never travel between servers. Replies
+generated in the response to commands are found in the range from 200
+to 399.
+[p]
+[pre]
+ 001 RPL_WELCOME
+ "Welcome to the Internet Relay Network
+ <nick>!<user>@<host>"
+ 002 RPL_YOURHOST
+ "Your host is <servername>, running version <ver>"
+ 003 RPL_CREATED
+ "This server was created <date>"
+ 004 RPL_MYINFO
+ "<servername> <version> <available user modes>
+ <available channel modes>"
+
+ - The server sends Replies 001 to 004 to a user upon
+ successful registration.
+
+ 005 RPL_BOUNCE
+ "Try server <server name>, port <port number>"
+
+ - Sent by the server to a user to suggest an alternative
+ server. This is often used when the connection is
+ refused because the server is already full.
+
+ 302 RPL_USERHOST
+ ":*1<reply> *( " " <reply> )"
+
+ - Reply format used by USERHOST to list replies to
+ the query list. The reply string is composed as
+ follows:
+
+ reply = nickname [ "*" ] "=" ( "+" / "-" ) hostname
+
+ The '*' indicates whether the client has registered
+ as an Operator. The '-' or '+' characters represent
+ whether the client has set an AWAY message or not
+ respectively.
+
+ 303 RPL_ISON
+ ":*1<nick> *( " " <nick> )"
+
+ - Reply format used by ISON to list replies to the
+ query list.
+
+ 301 RPL_AWAY
+ "<nick> :<away message>"
+ 305 RPL_UNAWAY
+ ":You are no longer marked as being away"
+ 306 RPL_NOWAWAY
+ ":You have been marked as being away"
+
+ - These replies are used with the AWAY command (if
+ allowed). RPL_AWAY is sent to any client sending a
+ PRIVMSG to a client which is away. RPL_AWAY is only
+ sent by the server to which the client is connected.
+ Replies RPL_UNAWAY and RPL_NOWAWAY are sent when the
+ client removes and sets an AWAY message.
+
+ 311 RPL_WHOISUSER
+ "<nick> <user> <host> * :<real name>"
+ 312 RPL_WHOISSERVER
+ "<nick> <server> :<server info>"
+ 313 RPL_WHOISOPERATOR
+ "<nick> :is an IRC operator
+ 317 RPL_WHOISIDLE
+ "<nick> <integer> :seconds idle"
+ 318 RPL_ENDOFWHOIS
+ "<nick> :End of WHOIS list"
+ 319 RPL_WHOISCHANNELS
+ "<nick> :*( ( "@" / "+" ) <channel> " " )"
+
+ - Replies 311 - 313, 317 - 319 are all replies
+ generated in response to a WHOIS message. Given that
+ there are enough parameters present, the answering
+ server MUST either formulate a reply out of the above
+ numerics (if the query nick is found) or return an
+ error reply. The '*' in RPL_WHOISUSER is there as
+ the literal character and not as a wild card. For
+ each reply set, only RPL_WHOISCHANNELS may appear
+ more than once (for long lists of channel names).
+ The '@' and '+' characters next to the channel name
+ indicate whether a client is a channel operator or
+ has been granted permission to speak on a moderated
+ channel. The RPL_ENDOFWHOIS reply is used to mark
+ the end of processing a WHOIS message.
+
+ 314 RPL_WHOWASUSER
+ "<nick> <user> <host> * :<real name>"
+ 369 RPL_ENDOFWHOWAS
+ "<nick> :End of WHOWAS"
+
+ - When replying to a WHOWAS message, a server MUST use
+ the replies RPL_WHOWASUSER, RPL_WHOISSERVER or
+ ERR_WASNOSUCHNICK for each nickname in the presented
+ list. At the end of all reply batches, there MUST
+ be RPL_ENDOFWHOWAS (even if there was only one reply
+ and it was an error).
+
+ 321 RPL_LISTSTART
+ Obsolete. Not used.
+
+ 322 RPL_LIST
+ "<channel> <# visible> :<topic>"
+ 323 RPL_LISTEND
+ ":End of LIST"
+
+ - Replies RPL_LIST, RPL_LISTEND mark the actual replies
+ with data and end of the server's response to a LIST
+ command. If there are no channels available to return,
+ only the end reply MUST be sent.
+
+ 325 RPL_UNIQOPIS
+ "<channel> <nickname>"
+
+ 324 RPL_CHANNELMODEIS
+ "<channel> <mode> <mode params>"
+
+ 331 RPL_NOTOPIC
+ "<channel> :No topic is set"
+ 332 RPL_TOPIC
+ "<channel> :<topic>"
+
+ - When sending a TOPIC message to determine the
+ channel topic, one of two replies is sent. If
+ the topic is set, RPL_TOPIC is sent back else
+ RPL_NOTOPIC.
+
+ 341 RPL_INVITING
+ "<channel> <nick>"
+
+ - Returned by the server to indicate that the
+ attempted INVITE message was successful and is
+ being passed onto the end client.
+
+ 342 RPL_SUMMONING
+ "<user> :Summoning user to IRC"
+
+ - Returned by a server answering a SUMMON message to
+ indicate that it is summoning that user.
+
+ 346 RPL_INVITELIST
+ "<channel> <invitemask>"
+ 347 RPL_ENDOFINVITELIST
+ "<channel> :End of channel invite list"
+
+ - When listing the 'invitations masks' for a given channel,
+ a server is required to send the list back using the
+ RPL_INVITELIST and RPL_ENDOFINVITELIST messages. A
+ separate RPL_INVITELIST is sent for each active mask.
+ After the masks have been listed (or if none present) a
+ RPL_ENDOFINVITELIST MUST be sent.
+
+ 348 RPL_EXCEPTLIST
+ "<channel> <exceptionmask>"
+ 349 RPL_ENDOFEXCEPTLIST
+ "<channel> :End of channel exception list"
+
+ - When listing the 'exception masks' for a given channel,
+ a server is required to send the list back using the
+ RPL_EXCEPTLIST and RPL_ENDOFEXCEPTLIST messages. A
+ separate RPL_EXCEPTLIST is sent for each active mask.
+ After the masks have been listed (or if none present)
+ a RPL_ENDOFEXCEPTLIST MUST be sent.
+
+ 351 RPL_VERSION
+ "<version>.<debuglevel> <server> :<comments>"
+
+ - Reply by the server showing its version details.
+ The <version> is the version of the software being
+ used (including any patchlevel revisions) and the
+ <debuglevel> is used to indicate if the server is
+ running in "debug mode".
+
+ The "comments" field may contain any comments about
+ the version or further version details.
+
+ 352 RPL_WHOREPLY
+ "<channel> <user> <host> <server> <nick>
+ ( "H" / "G" > ["*"] [ ( "@" / "+" ) ]
+ :<hopcount> <real name>"
+
+ 315 RPL_ENDOFWHO
+ "<name> :End of WHO list"
+
+ - The RPL_WHOREPLY and RPL_ENDOFWHO pair are used
+ to answer a WHO message. The RPL_WHOREPLY is only
+ sent if there is an appropriate match to the WHO
+ query. If there is a list of parameters supplied
+ with a WHO message, a RPL_ENDOFWHO MUST be sent
+ after processing each list item with <name> being
+ the item.
+
+ 353 RPL_NAMREPLY
+ "( "=" / "*" / "@" ) <channel>
+ :[ "@" / "+" ] <nick> *( " " [ "@" / "+" ] <nick> )
+ - "@" is used for secret channels, "*" for private
+ channels, and "=" for others (public channels).
+
+ 366 RPL_ENDOFNAMES
+ "<channel> :End of NAMES list"
+
+ - To reply to a NAMES message, a reply pair consisting
+ of RPL_NAMREPLY and RPL_ENDOFNAMES is sent by the
+ server back to the client. If there is no channel
+ found as in the query, then only RPL_ENDOFNAMES is
+ returned. The exception to this is when a NAMES
+ message is sent with no parameters and all visible
+ channels and contents are sent back in a series of
+ RPL_NAMEREPLY messages with a RPL_ENDOFNAMES to mark
+ the end.
+
+ 364 RPL_LINKS
+ "<mask> <server> :<hopcount> <server info>"
+ 365 RPL_ENDOFLINKS
+ "<mask> :End of LINKS list"
+
+ - In replying to the LINKS message, a server MUST send
+ replies back using the RPL_LINKS numeric and mark the
+ end of the list using an RPL_ENDOFLINKS reply.
+
+ 367 RPL_BANLIST
+ "<channel> <banmask>"
+ 368 RPL_ENDOFBANLIST
+ "<channel> :End of channel ban list"
+
+ - When listing the active 'bans' for a given channel,
+ a server is required to send the list back using the
+ RPL_BANLIST and RPL_ENDOFBANLIST messages. A separate
+ RPL_BANLIST is sent for each active banmask. After the
+ banmasks have been listed (or if none present) a
+ RPL_ENDOFBANLIST MUST be sent.
+
+ 371 RPL_INFO
+ ":<string>"
+ 374 RPL_ENDOFINFO
+ ":End of INFO list"
+
+ - A server responding to an INFO message is required to
+ send all its 'info' in a series of RPL_INFO messages
+ with a RPL_ENDOFINFO reply to indicate the end of the
+ replies.
+
+ 375 RPL_MOTDSTART
+ ":- <server> Message of the day - "
+ 372 RPL_MOTD
+ ":- <text>"
+ 376 RPL_ENDOFMOTD
+ ":End of MOTD command"
+
+ - When responding to the MOTD message and the MOTD file
+ is found, the file is displayed line by line, with
+ each line no longer than 80 characters, using
+ RPL_MOTD format replies. These MUST be surrounded
+ by a RPL_MOTDSTART (before the RPL_MOTDs) and an
+ RPL_ENDOFMOTD (after).
+
+ 381 RPL_YOUREOPER
+ ":You are now an IRC operator"
+
+ - RPL_YOUREOPER is sent back to a client which has
+ just successfully issued an OPER message and gained
+ operator status.
+
+ 382 RPL_REHASHING
+ "<config file> :Rehashing"
+
+ - If the REHASH option is used and an operator sends
+ a REHASH message, an RPL_REHASHING is sent back to
+ the operator.
+
+ 383 RPL_YOURESERVICE
+ "You are service <servicename>"
+
+ - Sent by the server to a service upon successful
+ registration.
+
+ 391 RPL_TIME
+ "<server> :<string showing server's local time>"
+
+ - When replying to the TIME message, a server MUST send
+ the reply using the RPL_TIME format above. The string
+ showing the time need only contain the correct day and
+ time there. There is no further requirement for the
+ time string.
+
+ 392 RPL_USERSSTART
+ ":UserID Terminal Host"
+ 393 RPL_USERS
+ ":<username> <ttyline> <hostname>"
+ 394 RPL_ENDOFUSERS
+ ":End of users"
+ 395 RPL_NOUSERS
+ ":Nobody logged in"
+
+ - If the USERS message is handled by a server, the
+ replies RPL_USERSTART, RPL_USERS, RPL_ENDOFUSERS and
+ RPL_NOUSERS are used. RPL_USERSSTART MUST be sent
+ first, following by either a sequence of RPL_USERS
+ or a single RPL_NOUSER. Following this is
+ RPL_ENDOFUSERS.
+
+ 200 RPL_TRACELINK
+ "Link <version & debug level> <destination>
+ <next server> V<protocol version>
+ <link uptime in seconds> <backstream sendq>
+ <upstream sendq>"
+ 201 RPL_TRACECONNECTING
+ "Try. <class> <server>"
+ 202 RPL_TRACEHANDSHAKE
+ "H.S. <class> <server>"
+ 203 RPL_TRACEUNKNOWN
+ "???? <class> [<client IP address in dot form>]"
+ 204 RPL_TRACEOPERATOR
+ "Oper <class> <nick>"
+ 205 RPL_TRACEUSER
+ "User <class> <nick>"
+ 206 RPL_TRACESERVER
+ "Serv <class> <int>S <int>C <server>
+ <nick!user|*!*>@<host|server> V<protocol version>"
+ 207 RPL_TRACESERVICE
+ "Service <class> <name> <type> <active type>"
+ 208 RPL_TRACENEWTYPE
+ "<newtype> 0 <client name>"
+ 209 RPL_TRACECLASS
+ "Class <class> <count>"
+ 210 RPL_TRACERECONNECT
+ Unused.
+ 261 RPL_TRACELOG
+ "File <logfile> <debug level>"
+ 262 RPL_TRACEEND
+ "<server name> <version & debug level> :End of TRACE"
+
+ - The RPL_TRACE* are all returned by the server in
+ response to the TRACE message. How many are
+ returned is dependent on the TRACE message and
+ whether it was sent by an operator or not. There
+ is no predefined order for which occurs first.
+ Replies RPL_TRACEUNKNOWN, RPL_TRACECONNECTING and
+ RPL_TRACEHANDSHAKE are all used for connections
+ which have not been fully established and are either
+ unknown, still attempting to connect or in the
+ process of completing the 'server handshake'.
+ RPL_TRACELINK is sent by any server which handles
+ a TRACE message and has to pass it on to another
+ server. The list of RPL_TRACELINKs sent in
+ response to a TRACE command traversing the IRC
+ network should reflect the actual connectivity of
+ the servers themselves along that path.
+ RPL_TRACENEWTYPE is to be used for any connection
+ which does not fit in the other categories but is
+ being displayed anyway.
+ RPL_TRACEEND is sent to indicate the end of the list.
+
+ 211 RPL_STATSLINKINFO
+ "<linkname> <sendq> <sent messages>
+ <sent Kbytes> <received messages>
+ <received Kbytes> <time open>"
+
+ - reports statistics on a connection. <linkname>
+ identifies the particular connection, <sendq> is
+ the amount of data that is queued and waiting to be
+ sent <sent messages> the number of messages sent,
+ and <sent Kbytes> the amount of data sent, in
+ Kbytes. <received messages> and <received Kbytes>
+ are the equivalent of <sent messages> and <sent
+ Kbytes> for received data, respectively. <time
+ open> indicates how long ago the connection was
+ opened, in seconds.
+
+ 212 RPL_STATSCOMMANDS
+ "<command> <count> <byte count> <remote count>"
+
+ - reports statistics on commands usage.
+
+ 219 RPL_ENDOFSTATS
+ "<stats letter> :End of STATS report"
+
+ 242 RPL_STATSUPTIME
+ ":Server Up %d days %d:%02d:%02d"
+
+ - reports the server uptime.
+
+ 243 RPL_STATSOLINE
+ "O <hostmask> * <name>"
+
+ - reports the allowed hosts from where user may become IRC
+ operators.
+
+ 221 RPL_UMODEIS
+ "<user mode string>"
+
+ - To answer a query about a client's own mode,
+ RPL_UMODEIS is sent back.
+
+ 234 RPL_SERVLIST
+ "<name> <server> <mask> <type> <hopcount> <info>"
+
+ 235 RPL_SERVLISTEND
+ "<mask> <type> :End of service listing"
+
+ - When listing services in reply to a SERVLIST message,
+ a server is required to send the list back using the
+ RPL_SERVLIST and RPL_SERVLISTEND messages. A separate
+ RPL_SERVLIST is sent for each service. After the
+ services have been listed (or if none present) a
+ RPL_SERVLISTEND MUST be sent.
+
+ 251 RPL_LUSERCLIENT
+ ":There are <integer> users and <integer>
+ services on <integer> servers"
+ 252 RPL_LUSEROP
+ "<integer> :operator(s) online"
+ 253 RPL_LUSERUNKNOWN
+ "<integer> :unknown connection(s)"
+ 254 RPL_LUSERCHANNELS
+ "<integer> :channels formed"
+ 255 RPL_LUSERME
+ ":I have <integer> clients and <integer>
+ servers"
+
+ - In processing an LUSERS message, the server
+ sends a set of replies from RPL_LUSERCLIENT,
+ RPL_LUSEROP, RPL_USERUNKNOWN,
+ RPL_LUSERCHANNELS and RPL_LUSERME. When
+ replying, a server MUST send back
+ RPL_LUSERCLIENT and RPL_LUSERME. The other
+ replies are only sent back if a non-zero count
+ is found for them.
+
+ 256 RPL_ADMINME
+ "<server> :Administrative info"
+ 257 RPL_ADMINLOC1
+ ":<admin info>"
+ 258 RPL_ADMINLOC2
+ ":<admin info>"
+ 259 RPL_ADMINEMAIL
+ ":<admin info>"
+
+ - When replying to an ADMIN message, a server
+ is expected to use replies RPL_ADMINME
+ through to RPL_ADMINEMAIL and provide a text
+ message with each. For RPL_ADMINLOC1 a
+ description of what city, state and country
+ the server is in is expected, followed by
+ details of the institution (RPL_ADMINLOC2)
+ and finally the administrative contact for the
+ server (an email address here is REQUIRED)
+ in RPL_ADMINEMAIL.
+
+ 263 RPL_TRYAGAIN
+ "<command> :Please wait a while and try again."
+
+ - When a server drops a command without processing it,
+ it MUST use the reply RPL_TRYAGAIN to inform the
+ originating client.
+[/pre][/td][/tr]
+
+[tr][td]
+[b]5.2 Error Replies[/b]
+[/td][/tr]
+
+[tr][td][pre]
+ Error replies are found in the range from 400 to 599.
+
+ 401 ERR_NOSUCHNICK
+ "<nickname> :No such nick/channel"
+
+ - Used to indicate the nickname parameter supplied to a
+ command is currently unused.
+
+ 402 ERR_NOSUCHSERVER
+ "<server name> :No such server"
+
+ - Used to indicate the server name given currently
+ does not exist.
+
+ 403 ERR_NOSUCHCHANNEL
+ "<channel name> :No such channel"
+
+ - Used to indicate the given channel name is invalid.
+
+ 404 ERR_CANNOTSENDTOCHAN
+ "<channel name> :Cannot send to channel"
+
+ - Sent to a user who is either (a) not on a channel
+ which is mode +n or (b) not a chanop (or mode +v) on
+ a channel which has mode +m set or where the user is
+ banned and is trying to send a PRIVMSG message to
+ that channel.
+
+ 405 ERR_TOOMANYCHANNELS
+ "<channel name> :You have joined too many channels"
+
+ - Sent to a user when they have joined the maximum
+ number of allowed channels and they try to join
+ another channel.
+
+ 406 ERR_WASNOSUCHNICK
+ "<nickname> :There was no such nickname"
+
+ - Returned by WHOWAS to indicate there is no history
+ information for that nickname.
+
+ 407 ERR_TOOMANYTARGETS
+ "<target> :<error code> recipients. <abort message>"
+
+ - Returned to a client which is attempting to send a
+ PRIVMSG/NOTICE using the user@host destination format
+ and for a user@host which has several occurrences.
+
+ - Returned to a client which trying to send a
+ PRIVMSG/NOTICE to too many recipients.
+
+ - Returned to a client which is attempting to JOIN a safe
+ channel using the shortname when there are more than one
+ such channel.
+
+ 408 ERR_NOSUCHSERVICE
+ "<service name> :No such service"
+
+ - Returned to a client which is attempting to send a SQUERY
+ to a service which does not exist.
+
+ 409 ERR_NOORIGIN
+ ":No origin specified"
+
+ - PING or PONG message missing the originator parameter.
+
+ 411 ERR_NORECIPIENT
+ ":No recipient given (<command>)"
+ 412 ERR_NOTEXTTOSEND
+ ":No text to send"
+ 413 ERR_NOTOPLEVEL
+ "<mask> :No toplevel domain specified"
+ 414 ERR_WILDTOPLEVEL
+ "<mask> :Wildcard in toplevel domain"
+ 415 ERR_BADMASK
+ "<mask> :Bad Server/host mask"
+
+ - 412 - 415 are returned by PRIVMSG to indicate that
+ the message wasn't delivered for some reason.
+ ERR_NOTOPLEVEL and ERR_WILDTOPLEVEL are errors that
+ are returned when an invalid use of
+ "PRIVMSG $<server>" or "PRIVMSG #<host>" is attempted.
+
+ 421 ERR_UNKNOWNCOMMAND
+ "<command> :Unknown command"
+
+ - Returned to a registered client to indicate that the
+ command sent is unknown by the server.
+
+ 422 ERR_NOMOTD
+ ":MOTD File is missing"
+
+ - Server's MOTD file could not be opened by the server.
+
+ 423 ERR_NOADMININFO
+ "<server> :No administrative info available"
+
+ - Returned by a server in response to an ADMIN message
+ when there is an error in finding the appropriate
+ information.
+
+ 424 ERR_FILEERROR
+ ":File error doing <file op> on <file>"
+
+ - Generic error message used to report a failed file
+ operation during the processing of a message.
+
+ 431 ERR_NONICKNAMEGIVEN
+ ":No nickname given"
+
+ - Returned when a nickname parameter expected for a
+ command and isn't found.
+
+ 432 ERR_ERRONEUSNICKNAME
+ "<nick> :Erroneous nickname"
+
+ - Returned after receiving a NICK message which contains
+ characters which do not fall in the defined set. See
+ section 2.3.1 for details on valid nicknames.
+
+ 433 ERR_NICKNAMEINUSE
+ "<nick> :Nickname is already in use"
+
+ - Returned when a NICK message is processed that results
+ in an attempt to change to a currently existing
+ nickname.
+
+ 436 ERR_NICKCOLLISION
+ "<nick> :Nickname collision KILL from <user>@<host>"
+
+ - Returned by a server to a client when it detects a
+ nickname collision (registered of a NICK that
+ already exists by another server).
+
+ 437 ERR_UNAVAILRESOURCE
+ "<nick/channel> :Nick/channel is temporarily unavailable"
+
+ - Returned by a server to a user trying to join a channel
+ currently blocked by the channel delay mechanism.
+
+ - Returned by a server to a user trying to change nickname
+ when the desired nickname is blocked by the nick delay
+ mechanism.
+
+ 441 ERR_USERNOTINCHANNEL
+ "<nick> <channel> :They aren't on that channel"
+
+ - Returned by the server to indicate that the target
+ user of the command is not on the given channel.
+
+ 442 ERR_NOTONCHANNEL
+ "<channel> :You're not on that channel"
+
+ - Returned by the server whenever a client tries to
+ perform a channel affecting command for which the
+ client isn't a member.
+
+ 443 ERR_USERONCHANNEL
+ "<user> <channel> :is already on channel"
+
+ - Returned when a client tries to invite a user to a
+ channel they are already on.
+
+ 444 ERR_NOLOGIN
+ "<user> :User not logged in"
+
+ - Returned by the summon after a SUMMON command for a
+ user was unable to be performed since they were not
+ logged in.
+
+ 445 ERR_SUMMONDISABLED
+ ":SUMMON has been disabled"
+
+ - Returned as a response to the SUMMON command. MUST be
+ returned by any server which doesn't implement it.
+
+ 446 ERR_USERSDISABLED
+ ":USERS has been disabled"
+
+ - Returned as a response to the USERS command. MUST be
+ returned by any server which does not implement it.
+
+ 451 ERR_NOTREGISTERED
+ ":You have not registered"
+
+ - Returned by the server to indicate that the client
+ MUST be registered before the server will allow it
+ to be parsed in detail.
+
+ 461 ERR_NEEDMOREPARAMS
+ "<command> :Not enough parameters"
+
+ - Returned by the server by numerous commands to
+ indicate to the client that it didn't supply enough
+ parameters.
+
+ 462 ERR_ALREADYREGISTRED
+ ":Unauthorized command (already registered)"
+
+ - Returned by the server to any link which tries to
+ change part of the registered details (such as
+ password or user details from second USER message).
+
+ 463 ERR_NOPERMFORHOST
+ ":Your host isn't among the privileged"
+
+ - Returned to a client which attempts to register with
+ a server which does not been setup to allow
+ connections from the host the attempted connection
+ is tried.
+
+ 464 ERR_PASSWDMISMATCH
+ ":Password incorrect"
+
+ - Returned to indicate a failed attempt at registering
+ a connection for which a password was required and
+ was either not given or incorrect.
+
+ 465 ERR_YOUREBANNEDCREEP
+ ":You are banned from this server"
+
+ - Returned after an attempt to connect and register
+ yourself with a server which has been setup to
+ explicitly deny connections to you.
+
+ 466 ERR_YOUWILLBEBANNED
+
+ - Sent by a server to a user to inform that access to the
+ server will soon be denied.
+
+ 467 ERR_KEYSET
+ "<channel> :Channel key already set"
+ 471 ERR_CHANNELISFULL
+ "<channel> :Cannot join channel (+l)"
+ 472 ERR_UNKNOWNMODE
+ "<char> :is unknown mode char to me for <channel>"
+ 473 ERR_INVITEONLYCHAN
+ "<channel> :Cannot join channel (+i)"
+ 474 ERR_BANNEDFROMCHAN
+ "<channel> :Cannot join channel (+b)"
+ 475 ERR_BADCHANNELKEY
+ "<channel> :Cannot join channel (+k)"
+ 476 ERR_BADCHANMASK
+ "<channel> :Bad Channel Mask"
+ 477 ERR_NOCHANMODES
+ "<channel> :Channel doesn't support modes"
+ 478 ERR_BANLISTFULL
+ "<channel> <char> :Channel list is full"
+
+ 481 ERR_NOPRIVILEGES
+ ":Permission Denied- You're not an IRC operator"
+
+ - Any command requiring operator privileges to operate
+ MUST return this error to indicate the attempt was
+ unsuccessful.
+
+ 482 ERR_CHANOPRIVSNEEDED
+ "<channel> :You're not channel operator"
+
+ - Any command requiring 'chanop' privileges (such as
+ MODE messages) MUST return this error if the client
+ making the attempt is not a chanop on the specified
+ channel.
+
+ 483 ERR_CANTKILLSERVER
+ ":You can't kill a server!"
+
+ - Any attempts to use the KILL command on a server
+ are to be refused and this error returned directly
+ to the client.
+
+ 484 ERR_RESTRICTED
+ ":Your connection is restricted!"
+
+ - Sent by the server to a user upon connection to indicate
+ the restricted nature of the connection (user mode "+r").
+
+ 485 ERR_UNIQOPPRIVSNEEDED
+ ":You're not the original channel operator"
+
+ - Any MODE requiring "channel creator" privileges MUST
+ return this error if the client making the attempt is not
+ a chanop on the specified channel.
+
+ 491 ERR_NOOPERHOST
+ ":No O-lines for your host"
+
+ - If a client sends an OPER message and the server has
+ not been configured to allow connections from the
+ client's host as an operator, this error MUST be
+ returned.
+
+ 501 ERR_UMODEUNKNOWNFLAG
+ ":Unknown MODE flag"
+
+ - Returned by the server to indicate that a MODE
+ message was sent with a nickname parameter and that
+ the a mode flag sent was not recognized.
+
+ 502 ERR_USERSDONTMATCH
+ ":Cannot change mode for other users"
+
+ - Error sent to any user trying to view or change the
+ user mode for a user other than themselves.
+[/pre][/td][/tr]
+
+[tr][td]
+[b]5.3 Reserved numerics[/b]
+[/td][/tr]
+
+[tr][td][pre]
+ These numerics are not described above since they fall into one of
+ the following categories:
+
+ 1. no longer in use;
+
+ 2. reserved for future planned use;
+
+ 3. in current use but are part of a non-generic 'feature' of
+ the current IRC server.
+
+ 231 RPL_SERVICEINFO 232 RPL_ENDOFSERVICES
+ 233 RPL_SERVICE
+ 300 RPL_NONE 316 RPL_WHOISCHANOP
+ 361 RPL_KILLDONE 362 RPL_CLOSING
+ 363 RPL_CLOSEEND 373 RPL_INFOSTART
+ 384 RPL_MYPORTIS
+
+ 213 RPL_STATSCLINE 214 RPL_STATSNLINE
+ 215 RPL_STATSILINE 216 RPL_STATSKLINE
+ 217 RPL_STATSQLINE 218 RPL_STATSYLINE
+ 240 RPL_STATSVLINE 241 RPL_STATSLLINE
+ 244 RPL_STATSHLINE 244 RPL_STATSSLINE
+ 246 RPL_STATSPING 247 RPL_STATSBLINE
+ 250 RPL_STATSDLINE
+
+ 492 ERR_NOSERVICEHOST
+[/pre][/td][/tr]
+
+[tr][td]
+[b]6. Current implementations[/b]
+[/td][/tr]
+
+[tr][td]
+The IRC software, version 2.10 is the only complete implementation of
+the IRC protocol (client and server). Because of the small amount of
+changes in the client protocol since the publication of RFC 1459
+[IRC], implementations that follow it are likely to be compliant with
+this protocol or to require a small amount of changes to reach
+compliance.
+[/td][/tr]
+
+[tr][td]
+[b]7. Current problems[/b]
+[/td][/tr]
+
+[tr][td]
+There are a number of recognized problems with the IRC Client
+Protocol, and more generally with the IRC Server Protocol. In order
+to preserve backward compatibility with old clients, this protocol
+has almost not evolved since the publication of RFC 1459 [IRC].
+[/td][/tr]
+
+[tr][td]
+[b]7.1 Nicknames[/b]
+[/td][/tr]
+
+[tr][td]
+The idea of the nickname on IRC is very convenient for users to use
+when talking to each other outside of a channel, but there is only a
+finite nickname space and being what they are, it's not uncommon for
+several people to want to use the same nick. If a nickname is chosen
+by two people using this protocol, either one will not succeed or
+both will removed by use of a server KILL (See Section 3.7.1).
+[/td][/tr]
+
+[tr][td]
+[b]7.2 Limitation of wildcards[/b]
+[/td][/tr]
+
+[tr][td]
+There is no way to escape the escape character "\" (%x5C). While
+this isn't usually a problem, it makes it impossible to form a mask
+with a backslash character ("\") preceding a wildcard.
+[/td][/tr]
+
+[tr][td]
+[b]7.3 Security considerations[/b]
+[/td][/tr]
+
+[tr][td]
+Security issues related to this protocol are discussed in the "IRC
+Server Protocol" [IRC-SERVER] as they are mostly an issue for the
+server side of the connection.
+[/td][/tr]
+
+[tr][td]
+[b]8. Current support and availability[/b]
+[/td][/tr]
+
+[tr][td]
+Mailing lists for IRC related discussion:[br]
+General discussion: [email protected][br]
+Protocol development: [email protected][br]
+[p]
+Software implementations:[br]
+ftp://ftp.irc.org/irc/server[br]
+ftp://ftp.funet.fi/pub/unix/irc[br]
+ftp://ftp.irc.org/irc/clients[br]
+[p]
+Newsgroup: alt.irc
+[/td][/tr]
+
+[tr][td]
+[b]9. Acknowledgements[/b]
+[/td][/tr]
+
+[tr][td]
+Parts of this document were copied from the RFC 1459 [IRC] which
+first formally documented the IRC Protocol. It has also benefited
+from many rounds of review and comments. In particular, the
+following people have made significant contributions to this
+document:
+[p]
+Matthew Green, Michael Neumayer, Volker Paulsen, Kurt Roeckx, Vesa
+Ruokonen, Magnus Tjernstrom, Stefan Zehl.
+[/td][/tr]
+
+[tr][td]
+[b]10. References[/b]
+[/td][/tr]
+
+[tr][td][pre]
+ [KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+ [ABNF] Crocker, D. and P. Overell, "Augmented BNF for Syntax
+ Specifications: ABNF", RFC 2234, November 1997.
+
+ [HNAME] Braden, R., "Requirements for Internet Hosts --
+ Application and Support", STD 3, RFC 1123, October 1989.
+
+ [IRC] Oikarinen, J. & D. Reed, "Internet Relay Chat Protocol",
+ RFC 1459, May 1993.
+
+ [IRC-ARCH] Kalt, C., "Internet Relay Chat: Architecture", RFC 2810,
+ April 2000.
+
+ [IRC-CHAN] Kalt, C., "Internet Relay Chat: Channel Management", RFC
+ 2811, April 2000.
+
+ [IRC-SERVER] Kalt, C., "Internet Relay Chat: Server Protocol", RFC
+ 2813, April 2000.
+[/pre][/td][/tr]
+
+[tr][td]
+[b]11. Author's Address[/b]
+[/td][/tr]
+
+[tr][td][pre]
+Christophe Kalt
+99 Teaneck Rd, Apt #117
+Ridgefield Park, NJ 07660
+USA
+
+[/pre][/td][/tr]
+
+[tr][td]
+[b]12. Full Copyright Statement[/b]
+[/td][/tr]
+
+[tr][td]
+Copyright (C) The Internet Society (2000). All Rights Reserved.
+[p]
+This document and translations of it may be copied and furnished to
+others, and derivative works that comment on or otherwise explain it
+or assist in its implementation may be prepared, copied, published
+and distributed, in whole or in part, without restriction of any
+kind, provided that the above copyright notice and this paragraph are
+included on all such copies and derivative works. However, this
+document itself may not be modified in any way, such as by removing
+the copyright notice or references to the Internet Society or other
+Internet organizations, except as needed for the purpose of
+developing Internet standards in which case the procedures for
+copyrights defined in the Internet Standards process must be
+followed, or as required to translate it into languages other than
+English.
+[p]
+The limited permissions granted above are perpetual and will not be
+revoked by the Internet Society or its successors or assigns.
+[p]
+This document and the information contained herein is provided on an
+"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+[/td][/tr]
+
+[tr][td]
+[b]Acknowledgement[/b]
+[/td][/tr]
+
+[tr][td]
+Funding for the RFC Editor function is currently provided by the
+Internet Society.
+[/td][/tr]
+
+[/table]
+
+*/
diff --git a/data/helppics/Makefile.am b/data/helppics/Makefile.am
new file mode 100644
index 00000000..8b657db3
--- /dev/null
+++ b/data/helppics/Makefile.am
@@ -0,0 +1,5 @@
+tmpdir = $(helpdir)
+
+tmp_DATA = helplogoleft.png helplogoright.png
+
+EXTRA_DIST = $(tmp_DATA)
diff --git a/data/helppics/helplogoleft.png b/data/helppics/helplogoleft.png
new file mode 100644
index 00000000..bfcb7ff5
--- /dev/null
+++ b/data/helppics/helplogoleft.png
Binary files differ
diff --git a/data/helppics/helplogoright.png b/data/helppics/helplogoright.png
new file mode 100644
index 00000000..364c2aa0
--- /dev/null
+++ b/data/helppics/helplogoright.png
Binary files differ
diff --git a/data/icons/128x128/Makefile.am b/data/icons/128x128/Makefile.am
new file mode 100644
index 00000000..1a3be16a
--- /dev/null
+++ b/data/icons/128x128/Makefile.am
@@ -0,0 +1,5 @@
+iconapps64data_DATA = kvirc.png
+
+iconmime64data_DATA = kvs.png kvc.png kvt.png kva.png
+
+EXTRA_DIST = $(iconapps64data_DATA) $(iconmime64data_DATA)
diff --git a/data/icons/128x128/kva.png b/data/icons/128x128/kva.png
new file mode 100644
index 00000000..14b9f8a3
--- /dev/null
+++ b/data/icons/128x128/kva.png
Binary files differ
diff --git a/data/icons/128x128/kvc.png b/data/icons/128x128/kvc.png
new file mode 100644
index 00000000..89d2f7d4
--- /dev/null
+++ b/data/icons/128x128/kvc.png
Binary files differ
diff --git a/data/icons/128x128/kvirc.png b/data/icons/128x128/kvirc.png
new file mode 100644
index 00000000..3536d91e
--- /dev/null
+++ b/data/icons/128x128/kvirc.png
Binary files differ
diff --git a/data/icons/128x128/kvs.png b/data/icons/128x128/kvs.png
new file mode 100644
index 00000000..35635158
--- /dev/null
+++ b/data/icons/128x128/kvs.png
Binary files differ
diff --git a/data/icons/128x128/kvt.png b/data/icons/128x128/kvt.png
new file mode 100644
index 00000000..6c0bb0fc
--- /dev/null
+++ b/data/icons/128x128/kvt.png
Binary files differ
diff --git a/data/icons/16x16/Makefile.am b/data/icons/16x16/Makefile.am
new file mode 100644
index 00000000..929471ed
--- /dev/null
+++ b/data/icons/16x16/Makefile.am
@@ -0,0 +1,5 @@
+iconapps16data_DATA = kvirc.png
+
+iconmime16data_DATA = kvs.png kvc.png kvt.png kva.png
+
+EXTRA_DIST = $(iconapps16data_DATA) $(iconmime16data_DATA)
diff --git a/data/icons/16x16/kva.png b/data/icons/16x16/kva.png
new file mode 100644
index 00000000..10e0b239
--- /dev/null
+++ b/data/icons/16x16/kva.png
Binary files differ
diff --git a/data/icons/16x16/kvc.png b/data/icons/16x16/kvc.png
new file mode 100644
index 00000000..7d8ba200
--- /dev/null
+++ b/data/icons/16x16/kvc.png
Binary files differ
diff --git a/data/icons/16x16/kvirc.png b/data/icons/16x16/kvirc.png
new file mode 100644
index 00000000..3885d347
--- /dev/null
+++ b/data/icons/16x16/kvirc.png
Binary files differ
diff --git a/data/icons/16x16/kvs.png b/data/icons/16x16/kvs.png
new file mode 100644
index 00000000..2920d9ab
--- /dev/null
+++ b/data/icons/16x16/kvs.png
Binary files differ
diff --git a/data/icons/16x16/kvt.png b/data/icons/16x16/kvt.png
new file mode 100644
index 00000000..a18bd04e
--- /dev/null
+++ b/data/icons/16x16/kvt.png
Binary files differ
diff --git a/data/icons/32x32/Makefile.am b/data/icons/32x32/Makefile.am
new file mode 100644
index 00000000..aa871e35
--- /dev/null
+++ b/data/icons/32x32/Makefile.am
@@ -0,0 +1,6 @@
+iconapps32data_DATA = kvirc.png \
+ kvirc.xpm
+
+iconmime32data_DATA = kvs.png kvc.png kvt.png kva.png
+
+EXTRA_DIST = $(iconapps32data_DATA) $(iconmime32data_DATA)
diff --git a/data/icons/32x32/kva.png b/data/icons/32x32/kva.png
new file mode 100644
index 00000000..68349e52
--- /dev/null
+++ b/data/icons/32x32/kva.png
Binary files differ
diff --git a/data/icons/32x32/kvc.png b/data/icons/32x32/kvc.png
new file mode 100644
index 00000000..c615d71f
--- /dev/null
+++ b/data/icons/32x32/kvc.png
Binary files differ
diff --git a/data/icons/32x32/kvirc.png b/data/icons/32x32/kvirc.png
new file mode 100644
index 00000000..75edc454
--- /dev/null
+++ b/data/icons/32x32/kvirc.png
Binary files differ
diff --git a/data/icons/32x32/kvirc.xpm b/data/icons/32x32/kvirc.xpm
new file mode 100644
index 00000000..e724d455
--- /dev/null
+++ b/data/icons/32x32/kvirc.xpm
@@ -0,0 +1,295 @@
+/* XPM */
+static char *kvirc3[] = {
+/* columns rows colors chars-per-pixel */
+"32 32 257 2",
+" c #000000",
+". c #09050A",
+"X c #0C0A0C",
+"o c #070408",
+"O c #0F0810",
+"+ c #130A14",
+"@ c #171218",
+"# c #1F1420",
+"$ c #201E21",
+"% c #2A1A2B",
+"& c #251526",
+"* c #331C35",
+"= c #361E38",
+"- c #242024",
+"; c #2D282D",
+": c #2A242A",
+"> c #2F2930",
+", c #372538",
+"< c #3E2E40",
+"1 c #6D3B08",
+"2 c #4A294C",
+"3 c #47274A",
+"4 c #4E2B50",
+"5 c #4F275E",
+"6 c #483C49",
+"7 c #532E55",
+"8 c #542C5B",
+"9 c #592F57",
+"0 c #56315A",
+"q c #59315B",
+"w c #4F2661",
+"e c #552C62",
+"r c #572B67",
+"t c #5D3361",
+"y c #5E3268",
+"u c #613664",
+"i c #653669",
+"p c #653868",
+"a c #6A3A6D",
+"s c #643F66",
+"d c #623372",
+"f c #6D3C71",
+"g c #6A367A",
+"h c #713E74",
+"j c #753D7C",
+"k c #79440A",
+"l c #69586A",
+"z c #744077",
+"x c #754078",
+"c c #79427C",
+"v c #794F7B",
+"b c #6F626F",
+"n c #7A607B",
+"m c #6E3C83",
+"M c #763681",
+"N c #7C4582",
+"B c #79418A",
+"V c #7D4F84",
+"C c #7E7080",
+"Z c #8D3E00",
+"A c #993F00",
+"S c #8D4000",
+"D c #894808",
+"F c #944400",
+"G c #984100",
+"H c #885615",
+"J c #9E5422",
+"K c #905031",
+"L c #92611C",
+"P c #9C6B21",
+"I c #967533",
+"U c #A54800",
+"Y c #AB4B00",
+"T c #A65409",
+"R c #B24F00",
+"E c #B35400",
+"W c #B95700",
+"Q c #BD5A01",
+"! c #B9610B",
+"~ c #B9621D",
+"^ c #A96A21",
+"/ c #A77825",
+"( c #BA7B37",
+") c #835343",
+"_ c #915B48",
+"` c #975A5A",
+"' c #8A4972",
+"] c #885E66",
+"[ c #94665C",
+"{ c #8F6F67",
+"} c #836266",
+"| c #97656A",
+" . c #AA704E",
+".. c #B37351",
+"X. c #A96358",
+"o. c #A07D6A",
+"O. c #C25A00",
+"+. c #CD5800",
+"@. c #C45700",
+"#. c #CF6100",
+"$. c #D36200",
+"%. c #DF6900",
+"&. c #D5680C",
+"*. c #E56400",
+"=. c #E06A00",
+"-. c #E86700",
+";. c #EA6900",
+":. c #EE7000",
+">. c #F27100",
+",. c #FD7600",
+"<. c #FE7A02",
+"1. c #FF7D0A",
+"2. c #823A8B",
+"3. c #804684",
+"4. c #85448B",
+"5. c #854A8A",
+"6. c #8A4D8E",
+"7. c #8D4D93",
+"8. c #88568F",
+"9. c #924C9B",
+"0. c #945699",
+"q. c #98568C",
+"w. c #975CA1",
+"e. c #9E56A1",
+"r. c #9850AE",
+"t. c #9E58A3",
+"y. c #9551A4",
+"u. c #9650B0",
+"i. c #9B54B3",
+"p. c #866787",
+"a. c #8F6894",
+"s. c #976993",
+"d. c #9861A1",
+"f. c #A057A5",
+"g. c #A159A6",
+"h. c #A55BAA",
+"j. c #AA5EAF",
+"k. c #A25ABB",
+"l. c #AB5EB0",
+"z. c #A658BA",
+"x. c #A967AD",
+"c. c #AE61B3",
+"v. c #AF6BB5",
+"b. c #A872AA",
+"n. c #AD7AB3",
+"m. c #B063B5",
+"M. c #B564BB",
+"N. c #B869BE",
+"B. c #B469B9",
+"V. c #B574B9",
+"C. c #BD6BC2",
+"Z. c #B769C7",
+"A. c #BE74C3",
+"S. c #BD79C1",
+"D. c #BA75C9",
+"F. c #C16FC7",
+"G. c #C06ED4",
+"H. c #C171C6",
+"J. c #C272C9",
+"K. c #C57ACA",
+"L. c #C27AC6",
+"P. c #9F833F",
+"I. c #AE8224",
+"U. c #BA8532",
+"Y. c #BB9657",
+"T. c #B2837C",
+"R. c #BEA262",
+"E. c #D98B32",
+"W. c #DBAD33",
+"Q. c #E1961E",
+"!. c #FF830B",
+"~. c #FF8519",
+"^. c #FF881C",
+"/. c #FF8816",
+"(. c #FF8C24",
+"). c #FF8E28",
+"_. c #FF9120",
+"`. c #FF912F",
+"'. c #FF963A",
+"]. c #FF993D",
+"[. c #FE9833",
+"{. c #F6A908",
+"}. c #F7A927",
+"|. c #FFBA2A",
+" X c #C78441",
+".X c #CA8D53",
+"XX c #CA827B",
+"oX c #CBA157",
+"OX c #D5BD58",
+"+X c #CBB656",
+"@X c #CABF6B",
+"#X c #D4AA6F",
+"$X c #C9A967",
+"%X c #EA9D43",
+"&X c #FF9C44",
+"*X c #E1BF4F",
+"=X c #E7BF5A",
+"-X c #FFA241",
+";X c #FEA556",
+":X c #FFA759",
+">X c #E0B662",
+",X c #EEB374",
+"<X c #FEB36D",
+"1X c #FFB565",
+"2X c #FFB672",
+"3X c #D6C46B",
+"4X c #EDC74B",
+"5X c #FFCF41",
+"6X c #FFDB41",
+"7X c #FFD15A",
+"8X c #E8C957",
+"9X c #E6C261",
+"0X c #FFD862",
+"qX c #FFDD72",
+"wX c #FFDC79",
+"eX c #F3C66B",
+"rX c #FFE046",
+"tX c #FFE476",
+"yX c #FFF36A",
+"uX c #FFFB79",
+"iX c #B19587",
+"pX c #B988BC",
+"aX c #B3A189",
+"sX c #BD8EC0",
+"dX c #CE8781",
+"fX c #D4B892",
+"gX c #FEBD83",
+"hX c #CC92D0",
+"jX c #D094D5",
+"kX c #FFC387",
+"lX c #FDCC96",
+"zX c #FEDD83",
+"xX c #FFD29C",
+"cX c #E5D89C",
+"vX c #E9D0A8",
+"bX c #FFCCA0",
+"nX c #FDD3AB",
+"mX c #FFE787",
+"MX c #FFE490",
+"NX c #FFED97",
+"BX c #FFEA9A",
+"VX c #FFF087",
+"CX c #FFF28E",
+"ZX c #FFEFA6",
+"AX c #F6E5C8",
+"SX c #FFE2C5",
+"DX c #FEE4CA",
+"FX c #FCEBCC",
+"GX c #F5E2C4",
+"HX c #FCEBD2",
+"JX c #F7EDD4",
+"KX c #FFF0CE",
+"LX c #FAF1DB",
+"PX c #FFF3E1",
+"IX c #FFFAF2",
+"UX c #FFFFF9",
+"YX c None",
+/* pixels */
+"YXYXYXYXYXYXYXYXYXYXYXYX X - $ $ $ O YXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYX C jXhXhXjXb YXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYX YXYXYX p.V.V.V.v.n YXYXYX YXYXYXYXYXYX",
+"YXYXYXYX ; X X b n.V.hXL.V.b.l o + : YXYXYXYX",
+"YXYXYX > sXpX< > a.pXS.L.L.K.K.H.M.m.V.p.; 6 b.b.- YXYXYX",
+"YXYXYX X a.d.0.d.d.d.v.K.K.K.K.J.J.F.M.9.M 4.4.M M V @ YXYX",
+"YXYX : s.vXJXGXGXAXAXiXJ.J.J.J.F.C.C.l.iXJXLXLXHXLXfX8.@ YXYX",
+"YXYX X n.T.LXIXIXIXIXnX9.Z.k.k.z.z.z.M KXUXUXPXHXKX} 0.o YXYX",
+"YXYXYX , s.lXDXDXSXSXxX| dX%X}.}.].XX| SXSXnXnXlX,Xj > YXYX",
+"YXYXYX % D...xXbXbXgX<X X7XwXwX0X5X{..XkXgXgX<X1X_ y.@ YXYXYX",
+"YXYXYX v J.q.-X2X<X;X&X].R.MXzXzX7XI.;X;X;X&X].[.y 5.s YXYX",
+"YXYX o v.J.G.~ -X&X'.).(.( ZXMXmXtX^ ].'.(.(._.J B 3.6. YXYX",
+" 0 A.C.Z.' /.`.).^.^.&.cXBXMX3X&.).^.~.~.!.9 N c N 3 ",
+". q a t.N.C.M.k.Q /.(.!.1.<.Y.NXVXP.<.1.<.1.<.T m c x x h q 7 o ",
+"@ C.j.M.M.N.l.z.K <.!.<.,.,.! NXCXT >.<.,.,.,.) m x h h a a c + ",
+"+ l.j.c.c.m.h.i.Q.Q <.>.>.>.*.3X3X+.:.:.:.>.E >Xg h a a a p x O ",
+"+ j.g.j.h.h.g.u.}./ ;.=.=.=.*.U.I =.=.%.=.=./ eXd a a i i t h O ",
+"+ j.g.h.h.f.f.r.E.4XY $.$.$.$.T k $.#.#.#.U 8X#Xd i i u t q a O ",
+"o , 7 N h.f.f.y.X.6XL @.O.O.O.O.E [email protected] yX| y u t t q , = o ",
+" o * f.e.0.7.B |.8XG E E E E E E E E A OXtXr t q q t % ",
+"YXYX N 7.6.4.B ` 6XL E E E E E E E E H uX] e q q q q YXYX",
+"YXYXYX 3 6.3.3.c j .W.U E E E E E W Y +Xo.5 0 q q q * YXYX",
+"YXYXYX X N N c x j g [ k F Z Z Z S F 1 } 5 8 q q q q . YXYXYX",
+"YXYXYX @ c c x z z f g d [ oX=X9X$X{ e 0 0 q q q q q + YXYXYX",
+"YXYX o u c x h h a f a i y r e w 8 8 q q q q q q q t 4 YXYX",
+"YXYX X u x h h a a p i t t t q 9 q q q 8 q q q q q q 4 . YXYX",
+"YXYXYX . q h f p u p u q q q q q q q q q q q q q t 2 o YXYX",
+"YXYXYX . q 7 + . * 7 t q q q 0 q q q 7 * . + 4 4 o YXYXYX",
+"YXYXYXYX o & 7 q q q q 2 # o YXYXYXYX",
+"YXYXYXYXYXYX YXYXYX = q q q t * YXYX YXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYX % t t t u & YXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYX o o o o YXYXYXYXYXYXYXYXYXYXYXYX"
+};
diff --git a/data/icons/32x32/kvs.png b/data/icons/32x32/kvs.png
new file mode 100644
index 00000000..ae07b669
--- /dev/null
+++ b/data/icons/32x32/kvs.png
Binary files differ
diff --git a/data/icons/32x32/kvt.png b/data/icons/32x32/kvt.png
new file mode 100644
index 00000000..68fbdd01
--- /dev/null
+++ b/data/icons/32x32/kvt.png
Binary files differ
diff --git a/data/icons/48x48/Makefile.am b/data/icons/48x48/Makefile.am
new file mode 100644
index 00000000..72b5a3c5
--- /dev/null
+++ b/data/icons/48x48/Makefile.am
@@ -0,0 +1,5 @@
+iconapps48data_DATA = kvirc.png kvirc.xpm
+
+iconmime48data_DATA = kvs.png kvc.png kvt.png kva.png
+
+EXTRA_DIST = $(iconapps48data_DATA) $(iconmime48data_DATA)
diff --git a/data/icons/48x48/kva.png b/data/icons/48x48/kva.png
new file mode 100644
index 00000000..29733e9d
--- /dev/null
+++ b/data/icons/48x48/kva.png
Binary files differ
diff --git a/data/icons/48x48/kvc.png b/data/icons/48x48/kvc.png
new file mode 100644
index 00000000..a96d35c3
--- /dev/null
+++ b/data/icons/48x48/kvc.png
Binary files differ
diff --git a/data/icons/48x48/kvirc.png b/data/icons/48x48/kvirc.png
new file mode 100644
index 00000000..378e50f5
--- /dev/null
+++ b/data/icons/48x48/kvirc.png
Binary files differ
diff --git a/data/icons/48x48/kvirc.xpm b/data/icons/48x48/kvirc.xpm
new file mode 100644
index 00000000..3ffc456b
--- /dev/null
+++ b/data/icons/48x48/kvirc.xpm
@@ -0,0 +1,311 @@
+/* XPM */
+static char *kvirc3[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 257 2",
+" c #000000",
+". c #09060B",
+"X c #150B17",
+"o c #181019",
+"O c #1E1122",
+"+ c #251528",
+"@ c #2D1932",
+"# c #331C35",
+"$ c #351D38",
+"% c #38273B",
+"& c #2D2931",
+"* c #3E2242",
+"= c #5A2C33",
+"- c #633201",
+"; c #68301A",
+": c #442549",
+"> c #4E2B52",
+", c #423B45",
+"< c #522C55",
+"1 c #542E59",
+"2 c #54345A",
+"3 c #542E62",
+"4 c #562E65",
+"5 c #573062",
+"6 c #5B3162",
+"7 c #5B326B",
+"8 c #5A3467",
+"9 c #5D3271",
+"0 c #613565",
+"q c #62356B",
+"w c #65396D",
+"e c #693A6C",
+"r c #623572",
+"t c #663873",
+"y c #6B3B73",
+"u c #6B3A7B",
+"i c #653679",
+"p c #713E7A",
+"a c #703C76",
+"s c #7A5616",
+"d c #75480C",
+"f c #6E4B21",
+"g c #6D5529",
+"h c #78713E",
+"j c #504D52",
+"k c #454345",
+"l c #704259",
+"z c #654365",
+"x c #67546C",
+"c c #6C5A73",
+"v c #75407B",
+"b c #77447C",
+"n c #6E6072",
+"m c #6C3A82",
+"M c #733D82",
+"N c #773D89",
+"B c #7B4383",
+"V c #7C428B",
+"C c #764087",
+"Z c #7F4592",
+"A c #795680",
+"S c #843D00",
+"D c #863E16",
+"F c #8B4400",
+"G c #954600",
+"H c #955204",
+"J c #845A11",
+"K c #884332",
+"L c #98631E",
+"P c #8D6512",
+"I c #967823",
+"U c #856A22",
+"Y c #A44800",
+"T c #B45100",
+"R c #BA5400",
+"E c #B65D0B",
+"W c #A45407",
+"Q c #A97F1E",
+"! c #BD600C",
+"~ c #A56E13",
+"^ c #A17936",
+"/ c #AA6C24",
+"( c #914B45",
+") c #895965",
+"_ c #8A5878",
+"` c #955C6C",
+"' c #986A54",
+"] c #896A7A",
+"[ c #977262",
+"{ c #BA7353",
+"} c #A67F6A",
+"| c #C35600",
+" . c #C55800",
+".. c #CB5A00",
+"X. c #D25D00",
+"o. c #D46100",
+"O. c #DC6200",
+"+. c #D46E09",
+"@. c #CA792B",
+"#. c #E46500",
+"$. c #E86700",
+"%. c #EA6800",
+"&. c #E36900",
+"*. c #F36C00",
+"=. c #FE7300",
+"-. c #FF7B00",
+";. c #F47403",
+":. c #82468A",
+">. c #83498A",
+",. c #854991",
+"<. c #874895",
+"1. c #915B9D",
+"2. c #8C5098",
+"3. c #9753A5",
+"4. c #9B54B3",
+"5. c #924FA6",
+"6. c #86658D",
+"7. c #8D6A94",
+"8. c #807182",
+"9. c #8C7792",
+"0. c #96799A",
+"q. c #986483",
+"w. c #9963A3",
+"e. c #9C77A4",
+"r. c #A459AC",
+"t. c #A355BB",
+"y. c #A459B3",
+"u. c #A45ABA",
+"i. c #AA5CB4",
+"p. c #A75AB7",
+"a. c #AF63BB",
+"s. c #B162BA",
+"d. c #B26BBC",
+"f. c #AF73A7",
+"g. c #AC5DC2",
+"h. c #B35DC8",
+"j. c #B363C2",
+"k. c #BC69CB",
+"l. c #B765C8",
+"z. c #BC66D1",
+"x. c #BA76C5",
+"c. c #C06CCF",
+"v. c #C26BD5",
+"b. c #C46CD7",
+"n. c #C07BC9",
+"m. c #C473D4",
+"M. c #C97CD4",
+"N. c #CC7ADB",
+"B. c #C773D8",
+"V. c #9C803F",
+"C. c #AA8729",
+"Z. c #A98B32",
+"A. c #8C8240",
+"S. c #BE9D63",
+"D. c #AA8C6F",
+"F. c #BEAE4F",
+"G. c #B7AA59",
+"H. c #B9A56B",
+"J. c #D38837",
+"K. c #C88C37",
+"L. c #EF821D",
+"P. c #FF8102",
+"I. c #FF850C",
+"U. c #FF890B",
+"Y. c #FF8C14",
+"T. c #FF8C1A",
+"R. c #FF901A",
+"E. c #EE8321",
+"W. c #E69426",
+"Q. c #FF8F21",
+"!. c #FF9324",
+"~. c #FF9928",
+"^. c #FF9A33",
+"/. c #FF9F3E",
+"(. c #FFB607",
+"). c #FFBC16",
+"_. c #EFAC2D",
+"`. c #EDB033",
+"'. c #FFA03C",
+"]. c #F6A533",
+"[. c #D6AA2E",
+"{. c #C49140",
+"}. c #C89155",
+"|. c #C69774",
+" X c #D68E72",
+".X c #D3AC5C",
+"XX c #D1BD53",
+"oX c #CCA777",
+"OX c #EB9D47",
+"+X c #EBA250",
+"@X c #FFA542",
+"#X c #FFAB47",
+"$X c #FFAC53",
+"%X c #FFB25C",
+"&X c #FFBB63",
+"*X c #FFBD70",
+"=X c #E4B070",
+"-X c #FFC517",
+";X c #FFC82A",
+":X c #F9C535",
+">X c #FFD227",
+",X c #FFD333",
+"<X c #D0C876",
+"1X c #F2CF4C",
+"2X c #FED546",
+"3X c #FBDB54",
+"4X c #E6C952",
+"5X c #ECD279",
+"6X c #FFC37B",
+"7X c #FFC373",
+"8X c #E1C66E",
+"9X c #FFE448",
+"0X c #FFE656",
+"qX c #FFE56A",
+"wX c #FFE67B",
+"eX c #FAE97F",
+"rX c #FFF56B",
+"tX c #FFF264",
+"yX c #FFFC75",
+"uX c #98829A",
+"iX c #BB9D80",
+"pX c #A585AA",
+"aX c #A981B3",
+"sX c #B48DBC",
+"dX c #BA86C4",
+"fX c #D5BC9E",
+"gX c #C281C9",
+"hX c #CB82D4",
+"jX c #C789D2",
+"kX c #C494CD",
+"lX c #D193DA",
+"zX c #D086D7",
+"xX c #D8A2E1",
+"cX c #FFC680",
+"vX c #FFCC84",
+"bX c #FFD79B",
+"nX c #FFD9A1",
+"mX c #FFDCA8",
+"MX c #FFDAB3",
+"NX c #FEEC87",
+"BX c #FFF38B",
+"VX c #FFF49C",
+"CX c #FFF794",
+"ZX c #FFE4AC",
+"AX c #FFE5B7",
+"SX c #FFF8A9",
+"DX c #EEE5A4",
+"FX c #F4DFC1",
+"GX c #FFECC2",
+"HX c #FBE5C7",
+"JX c #FBECD6",
+"KX c #FFF5CF",
+"LX c #FFF6DA",
+"PX c #FFFDE3",
+"IX c #FFFFEA",
+"UX c #FFFFFE",
+"YX c None",
+/* pixels */
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX j uXuXuX0.uXuXk YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX uXgXgXgXdXn.x.] YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX pXgXn.zXhXx.d.pX YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYX YXYXYXYXYX kXx.zXhXhXhXd.dX YXYXYXYXYX YXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYX , . n dXgXhXhXM.M.M.gXd.aXn . , YXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYX pXxXuXX % 9.kXx.x.hXhXM.N.N.M.m.k.a.a.dXA & X e.n.0. YXYXYXYXYXYXYX",
+"YXYXYXYXYXYX pXlXjXlXdXn e.jXx.x.M.M.N.N.N.N.N.B.B.k.l.j.a.a.x.e.c x.i.i.s.7. YXYXYXYXYXYX",
+"YXYXYXYXYX x w.w.w.w.1.1.1.1.4.x.N.zXN.N.N.B.b.B.b.v.h.h.r.V N N N :.N V V >.x YXYXYXYXYX",
+"YXYXYXYX 0.D.JXJXHXGXHXHXHXFXHX6.N.x.b.B.b.z.v.v.v.v.h.h.] FXJXJXJXJXJXJXLXHX) 7. YXYXYXYX",
+"YXYXYXYX % lXq.LXUXUXUXUXUXUXUXIXiXj.k.z.z.h.l.h.h.h.h.g.<.fXUXUXUXUXUXUXUXUXMXy d.+ YXYXYXYX",
+"YXYXYXYX 7.x.|.PXUXUXUXUXUXUXIXAXC h.g.t.t.g.t.t.t.t.t.e KXUXUXUXUXIXPXPXKX[ 3.A YXYXYXYX",
+"YXYXYXYXYX . dX` ZXPXIXPXPXPXLXGXnX) 4.f. X$X].].OX Xf.4.' HXPXPXKXGXAXAXZXvX0 w.. YXYXYXYXYX",
+"YXYXYXYXYX z j.}.ZXGXGXGXGXAXbX6X}.K.).`.,X2X,X;X(.(./ =XnXAXmXbXnXbX6X6X' ,.2 YXYXYXYXYX",
+"YXYXYXYXYX w.x.) 6XbXnXbXbXcX*X%X%XZ.NXwXwXwXqX2X2X(.P *X*XcXcXvX7X7X7X%X< 2.,. YXYXYXYXYX",
+"YXYXYXYXYX @ x.B.l.@.&X6X6X7X%X%X/.@X/ NXBXNXNXNXqX0X`.L %X%X&X%X#X].'.]./ C Z 3.O YXYXYXYXYX",
+"YXYXYXYXYX b c.B.B.( ].$X%X@X'.^.!.!.;.H.VXVXCXNXNXqXZ.L././.'.~.~.!.R.~.= Z Z Z 9 YXYXYXYX",
+"YXYXYXYX . d.m.B.B.r.+.~.@X^.~.!.T.Q.!.^ SXSXVXCXBXrXP !.^.^.R.Y.Y.R.R.! i V V V 2. YXYXYXYX",
+"YXYXYXYX 2 c.c.b.b.z.K U.R.R.~.Q.I.L.I.! DXSXSXVXNX8XH Q.~.Y.I.U.U.U.U.= N N C C B > YXYXYX",
+" 3.c.c.b.v.l.,.&.U.Y.Y.Y.I.-.-.P.D.SXSXVXBXV.&.-.-.P.-.P.P.P.o.5 C C C C C B ",
+" % w >.i.k.k.c.v.h.g.g.D -.U.U.-.-.-.-.-.L SXVXBXNXs =.;.-.-.-.-.-.-.; m M M M M p p >.y 6 # ",
+" v d.s.d.k.k.c.z.h.g.4.l $.-.P.P.=.=.=.=.X.<XCXCX<XY =.=.-.=.=.-.-.&.z m m m m u p p u a p 6 ",
+" a s.s.k.j.l.z.l.g.g.4.J.H -.-.-.=.=.=.=.=.' BXBXh *.=.=.=.=.=.=.=.H |.m m u u u u y y a y 1 ",
+" e s.s.k.j.j.h.g.g.4.4.W.~ $.-.=.*.*.*.*.*.H BXNXd *.%.*.*.*.*.*.O.Z.=Xm m u u u y y y e e < ",
+" e i.i.d.s.s.s.u.u.y.4.W.;XG *.*.%.$.$.$.%.X.G.G.G $.#.$.$.$.$.%.F qX=Xi i r r r r w w w e > ",
+" 0 i.r.s.s.s.i.y.y.4.4.J.,XI X.O.O.O.O.O.O.O.L g O.O.O.O.O.O.&.o.I tXoXi i r r w w w w 6 6 > ",
+" 0 r.r.r.i.i.p.r.t.t.4.{ ;X2XS X.X.X.X.X.X.X.S - ......X.X.X.o.S 3XyXD.r r r w 7 q 8 8 6 0 > ",
+" + : e :.r.i.p.i.4.4.3._ -X9XI ..... . . .| | Y | . .| .....U rXrXb 9 9 7 7 7 6 7 4 > = o ",
+" a i.r.y.4.4.5.Z W.9X1XS | R R R R R T R T R R R R R S 4XyX8X9 7 7 7 6 6 6 < ",
+"YXYXYX # 3.r.r.3.3.2.,.` >X9XU T T T T T T T T T T T T T R s yXyX_ 9 7 4 6 5 4 6 + YXYXYX",
+"YXYXYXYX B 5.3.1.2.Z Z C J.9X4XS T T T T T T T T T T T R F XXyXoX4 4 4 4 5 6 6 5 YXYXYXYX",
+"YXYXYXYXYX : 2.2.,.,.Z Z V v _.3XJ T T T T T T T T T R R R s yX5X7 4 3 3 3 6 1 6 # YXYXYXYX",
+"YXYXYXYXYX . :.<.,.:.V N N M v `.[.F T T R R R R R R R R G .X5X8 3 3 3 3 1 6 6 6 . YXYXYXYXYX",
+"YXYXYXYXYX 1 ,.>.:.B :.M M M v {.J R R R | R R R R R R d H.2 3 3 3 1 3 6 6 6 * YXYXYXYXYX",
+"YXYXYXYXYXYX + >.>.:.N B C p M u i < f Q C.C.C.C.Z.Z.Z.g * 3 3 3 3 3 3 6 6 6 6 O YXYXYXYXYX",
+"YXYXYXYXYX e >.>._ N C p v u u u t r z [ }..X.XS.} z 3 3 3 1 3 3 3 5 6 0 6 0 < YXYXYXYXYX",
+"YXYXYXYX : >.:.:.B B p p p u y r r 9 r 9 7 7 8 4 3 3 3 3 3 3 5 5 6 6 6 0 0 0 e $ YXYXYXYX",
+"YXYXYXYX X p :._ :.b p v p u y t r r w 7 7 4 4 3 3 3 3 3 3 3 3 5 6 6 6 6 0 0 0 0 0 . YXYXYXYX",
+"YXYXYXYX : :.M M b b v y y y w w q 7 4 6 5 3 3 3 5 3 3 3 6 6 6 6 6 6 0 0 0 0 0 $ YXYXYXYX",
+"YXYXYXYXYX % _ p v v y y y w q q 6 7 6 5 5 5 5 5 5 5 6 6 6 6 0 6 0 0 0 0 0 0 $ YXYXYXYXYX",
+"YXYXYXYXYXYX * a p y 1 + : 6 q 6 6 6 6 6 6 6 1 6 6 6 6 6 6 6 1 : + 1 0 0 0 $ YXYXYXYXYX",
+"YXYXYXYXYXYXYX * e $ . @ 1 6 6 6 1 2 6 6 6 6 6 6 6 < @ . % 0 $ YXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYX . O : 6 6 6 0 6 6 6 6 : o . YXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYX YXYXYXYX 1 6 0 2 0 6 6 < YXYXYXYX YXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX : 2 0 6 0 0 2 : YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX # 0 0 0 6 0 0 + YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX X # # # # # # X YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX"
+};
diff --git a/data/icons/48x48/kvs.png b/data/icons/48x48/kvs.png
new file mode 100644
index 00000000..b739ebe1
--- /dev/null
+++ b/data/icons/48x48/kvs.png
Binary files differ
diff --git a/data/icons/48x48/kvt.png b/data/icons/48x48/kvt.png
new file mode 100644
index 00000000..3127bb0d
--- /dev/null
+++ b/data/icons/48x48/kvt.png
Binary files differ
diff --git a/data/icons/64x64/Makefile.am b/data/icons/64x64/Makefile.am
new file mode 100644
index 00000000..cac3ad65
--- /dev/null
+++ b/data/icons/64x64/Makefile.am
@@ -0,0 +1,5 @@
+iconapps64data_DATA = kvirc.png
+
+iconmime64data_DATA = kvs.png
+
+EXTRA_DIST = $(iconapps64data_DATA) $(iconmime64data_DATA)
diff --git a/data/icons/64x64/kvirc.png b/data/icons/64x64/kvirc.png
new file mode 100644
index 00000000..bdd42a54
--- /dev/null
+++ b/data/icons/64x64/kvirc.png
Binary files differ
diff --git a/data/icons/64x64/kvs.png b/data/icons/64x64/kvs.png
new file mode 100644
index 00000000..7ddf563b
--- /dev/null
+++ b/data/icons/64x64/kvs.png
Binary files differ
diff --git a/data/icons/Makefile.am b/data/icons/Makefile.am
new file mode 100644
index 00000000..1b20afaa
--- /dev/null
+++ b/data/icons/Makefile.am
@@ -0,0 +1,5 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+SUBDIRS = 16x16 32x32 48x48 64x64 128x128 scalable
diff --git a/data/icons/scalable/Makefile.am b/data/icons/scalable/Makefile.am
new file mode 100644
index 00000000..93e27bf1
--- /dev/null
+++ b/data/icons/scalable/Makefile.am
@@ -0,0 +1,5 @@
+iconappsscalabledata_DATA = kvirc.svgz
+
+iconmimescalabledata_DATA = kvs.svgz kvc.svgz kvt.svgz kva.svgz
+
+EXTRA_DIST = $(iconappsscalabledata_DATA) $(iconmimescalabledata_DATA) createpng.sh
diff --git a/data/icons/scalable/createpng.sh b/data/icons/scalable/createpng.sh
new file mode 100644
index 00000000..74fec260
--- /dev/null
+++ b/data/icons/scalable/createpng.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+HERE=$(pwd)
+
+for size in 16 32 48 64 128; do
+ echo "Creating icons with size" $size "x" $size
+ for file in *.svgz; do
+ PNGFNAME=$(echo $file | sed -e 's/svgz/png/g')
+ echo "Creating icon" $PNGFNAME
+ set -x
+ # Ksvgtopng exports broken pngs..
+ #ksvgtopng $size $size $HERE/$file $HERE/../$size"x"$size/$PNGFNAME
+ inkscape \
+ -z \
+ --export-png=$HERE/../$size"x"$size/$PNGFNAME \
+ --export-area-drawing \
+ --export-width=$size \
+ --export-height=$size \
+ $HERE/$file
+ set +x
+ done
+done
+
+echo "Done :)"
diff --git a/data/icons/scalable/kva.svgz b/data/icons/scalable/kva.svgz
new file mode 100644
index 00000000..4e2822d1
--- /dev/null
+++ b/data/icons/scalable/kva.svgz
Binary files differ
diff --git a/data/icons/scalable/kvc.svgz b/data/icons/scalable/kvc.svgz
new file mode 100644
index 00000000..68fc3a7c
--- /dev/null
+++ b/data/icons/scalable/kvc.svgz
Binary files differ
diff --git a/data/icons/scalable/kvirc.svgz b/data/icons/scalable/kvirc.svgz
new file mode 100644
index 00000000..78c084d6
--- /dev/null
+++ b/data/icons/scalable/kvirc.svgz
Binary files differ
diff --git a/data/icons/scalable/kvs.svgz b/data/icons/scalable/kvs.svgz
new file mode 100644
index 00000000..e98e639a
--- /dev/null
+++ b/data/icons/scalable/kvs.svgz
Binary files differ
diff --git a/data/icons/scalable/kvt.svgz b/data/icons/scalable/kvt.svgz
new file mode 100644
index 00000000..d1af8a07
--- /dev/null
+++ b/data/icons/scalable/kvt.svgz
Binary files differ
diff --git a/data/man/Makefile.am b/data/man/Makefile.am
new file mode 100644
index 00000000..b58f2f44
--- /dev/null
+++ b/data/man/Makefile.am
@@ -0,0 +1,3 @@
+tmpdir = $(mandir)/man1
+tmp_DATA=kvirc.1
+EXTRA_DIST=$(tmp_DATA)
diff --git a/data/man/kvirc.1 b/data/man/kvirc.1
new file mode 100644
index 00000000..f2bd16ad
--- /dev/null
+++ b/data/man/kvirc.1
@@ -0,0 +1,133 @@
+.TH KVIRC 1 "26/02/2005" Version 3.2.0
+.SH NAME
+KVIrc - an Internet Relay Chat client.
+.SH SYNOPSIS
+.B kvirc [options] [server [port]] [ircurl [ircurl [...]]]
+
+.SH DESCRIPTION
+.PP
+KVIrc is a Visual Internet Relay Chat client based on the Qt library.
+.PP
+It is intended to be an "user friendly" interface to the IRC protocol (see \fIRFC1459\fP)
+and its extensions.
+.SH OPTIONS
+.I
+\fIKVIrc\fP accepts the following options:
+.TP 8
+.B \-h, \-\-help
+Display a list of all commandline options.
+.TP 8
+.B \-v, \-\-version
+Output the version info.
+.TP 8
+.B \-c \fI<configfile>\fP
+Use \fI<configfile>\fP as configuration file instead of ~/.kvircrc .
+.TP 8
+.B \-n \fI<configfile>\fP
+Use \fI<configfile>\fP as configuration file instead of ~/.kvircrc .
+Create if it doesn't exist.
+.TP 8
+.B \-f
+Force a new KVIrc session, even if there is already a running one.
+.TP 8
+.B \-e \fI<commands>\fP
+If a KVirc session is already running on the same X display,
+execute the \fI<commands>\fP in that session,
+otherwise startup normally and execute \fI<commands>\fP.
+\fI<commands>\fP must be a single shell token.
+You can eventually use this switch more than once.
+.B \-x \fI<commands>\fP
+If a KVirc session is already running on the same X display,
+execute the \fI<commands>\fP in that session,
+otherwise do nothing and exit.
+\fI<commands>\fP must be a single shell token.
+You can eventually use this switch more than once.
+.TP 8
+.B \-r \fI<commands>\fP
+If a KVirc session is already running on the same X display,
+execute the \fI<commands>\fP in that session,
+otherwise startup normally (and do NOT execute).
+\fI<commands>\fP must be a single shell token.
+You can eventually use this switch more than once.
+.TP 8
+.B \-m
+If a KVIrc session is already running, show an informational popup dialog
+instead of writing to the console.
+This is useful when starting KVIrc from a graphical taskbar button.
+.TP 8
+.B [server]
+Connect to this server upon startup.
+.TP 8
+.B [port]
+Use this port to connect to the server.
+This option requires also a server name.
+.TP 8
+.B [ircurl]
+An url in the following form:
+
+ irc[6]://<server>[:<port>][/<channel>[?<pass>]]
+
+For each url on the commandline create a new irc-context
+and attempt to connect to <server> on the specified <port>.
+The optional <channel> is joined just after the connection
+has been estabilished.
+
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B LANG
+Language setting.
+If not set (or set to 'EN','POSIX' or 'C') KVIrc will use the default language (english).
+.TP 8
+
+.SH FILES
+
+\fB$PREFIX\fP/share/kvirc/\fBVERSION\fP/*
+Directory with the global KVIrc settings , modules etc...
+
+\fB$HOME\fP/.kvircrc This is the first file that KVIrc looks for.
+If the \-c commandline option is specified , the file passed
+as the option parameter is used instead of this one.
+If the file is found , KVIrc reads the first non-empty line
+and treats it as the path to the \fIKVIrc Local directory\fP.
+If the file can not be found or the \fIKVIrc Local directory\fP
+is not existing , KVIrc enters the setup mode and allows
+selecting a new \fIKVIrc Local directory\fP.
+
+\fBKVIrc Local directory\fP/*
+Directory with the local (per user) KVIrc settings.
+Similar to the global one.
+
+.SH SEE ALSO
+.BR X (1)
+.BR talk (1)
+.SH COPYRIGHT
+Copyright \(co 1999-2004 Szymon Stefanek and The KVIrc Development Team
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation.
+
+.SH SUGGESTIONS AND BUG REPORTS
+Any bugs found should be reported to the following e-mail address:
+\fI<pragma at kvirc dot net>\fP
+
+.SH OFFICIAL WWW SITE
+
+http://www.kvirc.net
+In Russian - http://www.kvirc.net.ru
+
+.SH AUTHORS
+Szymon 'Pragma' Stefanek \fI<pragma at kvirc dot net>\fP
+
+With patches, fixes, extensions, and more from
+[Anodine]@efnet, Till 'BuTi@ircnet' Busch, Fritz 'KNFritz@ircnet' Elfert, RAD Kade 1
+
+With bug-hunting, hard-thinking, eyes-consuming,
+nights spent on IRC, great suggestions and more from lots
+of people all over the net, including but not limited to
+Paul 'infected@ircnet' Boehm, Olle 'Crocodile@ircnet' H\[:a]lln\[:a]s, Diablo@ircnet,
+Andrew 'Drosha@ircnet' Frolov, MalboroLi@ircnet, munehiro@ircnet
+
diff --git a/data/mimelnk/Makefile.am b/data/mimelnk/Makefile.am
new file mode 100644
index 00000000..9abef9cf
--- /dev/null
+++ b/data/mimelnk/Makefile.am
@@ -0,0 +1,5 @@
+tmpdir = $(mimelnkdir)
+
+tmp_DATA = x-kvs.desktop x-kvt.desktop x-kva.desktop x-kvc.desktop
+
+EXTRA_DIST = $(tmp_DATA)
diff --git a/data/mimelnk/x-kva.desktop b/data/mimelnk/x-kva.desktop
new file mode 100644
index 00000000..789e8dee
--- /dev/null
+++ b/data/mimelnk/x-kva.desktop
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Comment=KVIrc Addon Package
+Encoding=UTF-8
+Icon=kva
+MimeType=application/x-kva
+Patterns=*.kva;
+Type=MimeType
diff --git a/data/mimelnk/x-kvc.desktop b/data/mimelnk/x-kvc.desktop
new file mode 100644
index 00000000..a6df980b
--- /dev/null
+++ b/data/mimelnk/x-kvc.desktop
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Comment=KVIrc Configuration File
+Encoding=UTF-8
+Icon=kvc
+MimeType=text/x-kvc
+Patterns=*.kvc;
+Type=MimeType
diff --git a/data/mimelnk/x-kvs.desktop b/data/mimelnk/x-kvs.desktop
new file mode 100644
index 00000000..ef77e67c
--- /dev/null
+++ b/data/mimelnk/x-kvs.desktop
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Comment=KVIrc Script File
+Encoding=UTF-8
+Icon=kvs
+MimeType=text/x-kvs
+Patterns=*.kvs;
+Type=MimeType
diff --git a/data/mimelnk/x-kvt.desktop b/data/mimelnk/x-kvt.desktop
new file mode 100644
index 00000000..b136a058
--- /dev/null
+++ b/data/mimelnk/x-kvt.desktop
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Comment=KVIrc Theme Package
+Encoding=UTF-8
+Icon=kvt
+MimeType=application/x-kvt
+Patterns=*.kvt;
+Type=MimeType
diff --git a/data/msgcolors/Makefile.am b/data/msgcolors/Makefile.am
new file mode 100644
index 00000000..078addb5
--- /dev/null
+++ b/data/msgcolors/Makefile.am
@@ -0,0 +1,5 @@
+tmpdir = $(msgcolorsdir)
+
+tmp_DATA = *.msgclr
+
+EXTRA_DIST = $(tmp_DATA)
diff --git a/data/msgcolors/all-black.msgclr b/data/msgcolors/all-black.msgclr
new file mode 100644
index 00000000..3beb2140
--- /dev/null
+++ b/data/msgcolors/all-black.msgclr
@@ -0,0 +1,659 @@
+# KVIrc configuration file
+[Messages]
+Icon126=193
+Back123=100
+Log122=true
+Fore118=1
+Level117=3
+Icon115=133
+Back112=100
+Log111=true
+Icon108=199
+Back105=100
+Level102=5
+Log100=true
+Level95=3
+Back92=100
+Level86=4
+Back81=100
+Log79=true
+Level77=3
+Back70=100
+Level68=3
+Log68=true
+Level59=4
+Fore59=1
+Log57=true
+Fore48=1
+Log46=true
+Fore37=1
+Log35=true
+Icon29=53
+Fore26=1
+Log24=true
+Icon18=30
+Fore15=1
+Log13=true
+Log1=true
+Back124=100
+Log123=true
+Fore119=1
+Level118=5
+Icon116=137
+Back113=100
+Log112=true
+Icon109=200
+Back106=100
+Level103=5
+Log101=true
+Level96=3
+Back93=100
+Icon90=176
+Level87=3
+Back82=100
+Level78=3
+Back71=100
+Level69=3
+Log69=true
+Back60=100
+Log58=true
+Fore49=1
+Log47=true
+Fore38=1
+Log36=true
+Fore27=1
+Log25=true
+Icon19=36
+Fore16=1
+Log14=true
+Log2=true
+Level0=1
+Fore0=1
+Icon127=194
+Back125=100
+Log124=true
+Level119=5
+Icon117=132
+Back114=100
+Log113=true
+Back107=100
+Level104=5
+Log102=true
+Level97=5
+Back94=100
+Icon91=177
+Level88=1
+Back83=100
+Icon80=156
+Level79=3
+Back72=100
+Back61=100
+Log59=true
+Back50=100
+Log48=true
+Fore39=1
+Log37=true
+Fore28=1
+Log26=true
+Fore17=1
+Log15=true
+Log3=true
+Level1=1
+Fore1=0
+Back126=100
+Log125=true
+Icon118=135
+Back115=100
+Log114=true
+Back108=100
+Level105=5
+Log103=true
+Level98=5
+Back95=100
+Icon92=181
+Level89=2
+Back84=100
+Icon81=141
+Back73=100
+Icon70=105
+Back62=100
+Back51=100
+Log49=true
+Back40=100
+Log38=true
+Fore29=1
+Log27=true
+Fore18=1
+Log16=true
+Level10=4
+Log4=true
+Level2=5
+Fore2=0
+Log126=true
+Icon119=134
+Back116=100
+Log115=true
+Back109=100
+Level106=5
+Log104=true
+Level99=5
+Back96=100
+Icon93=139
+Fore90=1
+Back85=100
+Icon82=174
+Back74=100
+Icon71=110
+Back63=100
+Icon60=91
+Back52=100
+Back41=100
+Log39=true
+Back30=100
+Log28=true
+Level20=1
+Fore19=1
+Log17=true
+Level11=4
+Log5=true
+Level3=1
+Fore3=1
+Icon0=0
+Back127=100
+Back117=100
+Log116=true
+Level107=5
+Log105=true
+Back97=100
+Icon94=182
+Fore91=1
+Back86=100
+Icon83=162
+Fore80=1
+Back75=100
+Icon72=112
+Back64=100
+Icon61=92
+Back53=100
+Icon50=72
+Back42=100
+Back31=100
+Level30=4
+Log29=true
+Level21=1
+Back20=100
+Log18=true
+Level12=1
+Log6=true
+Level4=1
+Fore4=1
+Icon1=0
+Log127=true
+Back118=100
+Log117=true
+Level108=5
+Log106=true
+Fore100=1
+Back98=100
+Icon95=183
+Fore92=1
+Log90=true
+Back87=100
+Icon84=164
+Fore81=1
+Back76=100
+Icon73=120
+Fore70=1
+Back65=100
+Icon62=93
+Back54=100
+Icon51=73
+Back43=100
+Level40=2
+Icon40=35
+Back32=100
+Level31=4
+Level22=2
+Back21=100
+Log19=true
+Level13=1
+Back10=100
+Log7=true
+Level5=2
+Fore5=1
+Icon2=0
+Back119=100
+Log118=true
+Level109=5
+Log107=true
+Fore101=1
+Back99=100
+Icon96=184
+Fore93=1
+Log91=true
+Back88=100
+Icon85=165
+Fore82=1
+Log80=true
+Back77=100
+Icon74=122
+Fore71=1
+Back66=100
+Icon63=94
+Fore60=1
+Back55=100
+Icon52=75
+Back44=100
+Level41=2
+Icon41=63
+Back33=100
+Level32=3
+Icon30=54
+Level23=3
+Back22=100
+Level14=3
+Back11=100
+Log8=true
+Level6=2
+Fore6=1
+Icon3=0
+Back0=100
+Fore120=1
+Log119=true
+Log108=true
+Fore102=1
+Icon97=188
+Fore94=1
+Log92=true
+Back89=100
+Icon86=170
+Fore83=1
+Log81=true
+Back78=100
+Icon75=128
+Fore72=1
+Log70=true
+Back67=100
+Icon64=95
+Fore61=1
+Back56=100
+Icon53=77
+Level50=2
+Fore50=1
+Back45=100
+Level42=2
+Icon42=64
+Back34=100
+Level33=3
+Icon31=55
+Level24=1
+Back23=100
+Icon20=39
+Level15=1
+Back12=100
+Log9=true
+Level7=4
+Fore7=1
+Icon4=0
+Back1=1
+Fore121=1
+Level120=5
+Fore110=1
+Log109=true
+Fore103=1
+Icon100=191
+Icon98=189
+Fore95=1
+Log93=true
+Icon87=171
+Fore84=1
+Log82=true
+Back79=100
+Icon76=129
+Fore73=1
+Log71=true
+Back68=100
+Icon65=100
+Fore62=1
+Level60=4
+Log60=true
+Back57=100
+Icon54=78
+Level51=2
+Fore51=1
+Back46=100
+Level43=2
+Icon43=65
+Fore40=1
+Back35=100
+Level34=1
+Icon32=56
+Level25=3
+Back24=100
+Icon21=40
+Level16=1
+Back13=100
+Icon10=23
+Level8=1
+Fore8=1
+Icon5=11
+Back2=1
+Fore122=1
+Level121=5
+Fore111=1
+Level110=3
+Fore104=1
+Icon101=192
+Icon99=190
+Fore96=1
+Log94=true
+Icon88=173
+Fore85=1
+Log83=true
+Icon77=153
+Fore74=1
+Log72=true
+Level70=1
+Back69=100
+Icon66=101
+Fore63=1
+Level61=4
+Log61=true
+Back58=100
+Icon55=79
+Level52=4
+Fore52=1
+Log50=true
+Back47=100
+Level44=2
+Icon44=66
+Fore41=1
+Back36=100
+Level35=2
+Icon33=57
+Fore30=1
+Level26=3
+Back25=100
+Icon22=41
+Level17=1
+Back14=100
+Icon11=24
+Level9=3
+Fore9=1
+Icon6=12
+Back3=100
+Fore123=1
+Level122=5
+Icon120=242
+Fore112=1
+Level111=1
+Fore105=1
+Icon102=193
+Fore97=1
+Log95=true
+Icon89=175
+Fore86=1
+Log84=true
+Level80=3
+Icon78=154
+Fore75=1
+Log73=true
+Level71=2
+Icon67=102
+Fore64=1
+Level62=1
+Log62=true
+Back59=100
+Icon56=87
+Level53=3
+Fore53=1
+Log51=true
+Back48=100
+Level45=2
+Icon45=67
+Fore42=1
+Log40=true
+Back37=100
+Level36=2
+Icon34=58
+Fore31=1
+Level27=4
+Back26=100
+Icon23=42
+Fore20=1
+Level18=1
+Back15=100
+Icon12=25
+Icon7=13
+Back4=100
+Fore124=1
+Level123=5
+Icon121=243
+Fore113=1
+Level112=1
+Icon110=203
+Fore106=1
+Icon103=194
+Back100=100
+Fore98=1
+Log96=true
+Level90=4
+Fore87=1
+Log85=true
+Level81=3
+Icon79=155
+Fore76=1
+Log74=true
+Level72=1
+Icon68=103
+Fore65=1
+Level63=4
+Log63=true
+Icon57=88
+Level54=2
+Fore54=1
+Log52=true
+Back49=100
+Level46=2
+Icon46=68
+Fore43=1
+Log41=true
+Back38=100
+Level37=2
+Icon35=59
+Fore32=1
+Log30=true
+Level28=3
+Back27=100
+Icon24=45
+Fore21=1
+Level19=1
+Back16=100
+Icon13=14
+Fore10=1
+Icon8=21
+Back5=100
+Fore125=1
+Level124=2
+Icon122=244
+Fore114=1
+Level113=1
+Icon111=205
+Fore107=1
+Icon104=195
+Back101=100
+Fore99=1
+Log97=true
+Level91=2
+Fore88=1
+Log86=true
+Level82=2
+Fore77=1
+Log75=true
+Level73=3
+Icon69=104
+Fore66=1
+Level64=4
+Log64=true
+Icon58=89
+Level55=4
+Fore55=1
+Log53=true
+Level47=2
+Icon47=69
+Fore44=1
+Log42=true
+Back39=100
+Level38=2
+Icon36=60
+Fore33=1
+Log31=true
+Level29=3
+Back28=100
+Icon25=46
+Fore22=1
+Log20=true
+Back17=100
+Icon14=26
+Fore11=1
+Icon9=22
+Back6=100
+Fore126=1
+Level125=2
+Icon123=245
+Back120=100
+Fore115=1
+Level114=3
+Icon112=229
+Fore108=1
+Icon105=196
+Back102=100
+Log98=true
+Level92=1
+Fore89=1
+Log87=true
+Level83=4
+Fore78=1
+Log76=true
+Level74=1
+Fore67=1
+Level65=1
+Log65=true
+Icon59=90
+Level56=3
+Fore56=1
+Log54=true
+Level48=2
+Icon48=70
+Fore45=1
+Log43=true
+Level39=2
+Icon37=61
+Fore34=1
+Log32=true
+Back29=100
+Icon26=48
+Fore23=1
+Log21=true
+Back18=100
+Icon15=27
+Fore12=1
+Log10=true
+Back7=100
+Level126=5
+Icon124=174
+Back121=100
+Log120=true
+Fore116=1
+Level115=2
+Icon113=206
+Back110=100
+Fore109=1
+Icon106=197
+Back103=100
+Level100=5
+Log99=true
+Level93=3
+Back90=100
+Log88=true
+Level84=4
+Fore79=1
+Log77=true
+Level75=1
+Fore68=1
+Level66=3
+Log66=true
+Level57=4
+Fore57=1
+Log55=true
+Level49=2
+Icon49=71
+Fore46=1
+Log44=true
+Icon38=34
+Fore35=1
+Log33=true
+Icon27=51
+Fore24=1
+Log22=true
+Back19=100
+Icon16=28
+Fore13=1
+Log11=true
+Back8=100
+Fore127=1
+Icon125=175
+Back122=100
+Log121=true
+Fore117=1
+Level116=1
+Icon114=136
+Back111=100
+Log110=true
+Icon107=198
+Back104=100
+Level101=5
+Level94=4
+Back91=100
+Log89=true
+Level85=1
+Back80=100
+Log78=true
+Level76=1
+Fore69=1
+Level67=3
+Log67=true
+Level58=4
+Fore58=1
+Log56=true
+Fore47=1
+Log45=true
+Icon39=62
+Fore36=1
+Log34=true
+Icon28=52
+Fore25=1
+Log23=true
+Icon17=29
+Fore14=1
+Log12=true
+Back9=100
+Log0=true
+Level127=5
+[Colors]
+Color0=255,255,255
+Color1=0,0,0
+Color2=0,0,140
+Color3=0,100,0
+Color10=0,150,180
+Color4=230,0,0
+Color11=170,170,255
+Color5=150,0,0
+Color12=15,15,255
+Color6=80,0,80
+Color13=200,0,200
+Color7=255,90,0
+Color14=80,80,80
+Color8=255,255,0
+Color15=170,170,170
+Color9=0,255,0
diff --git a/data/msgcolors/all-gray.msgclr b/data/msgcolors/all-gray.msgclr
new file mode 100644
index 00000000..565f87e5
--- /dev/null
+++ b/data/msgcolors/all-gray.msgclr
@@ -0,0 +1,659 @@
+# KVIrc configuration file
+[Messages]
+Icon126=193
+Back123=100
+Log122=true
+Fore118=15
+Level117=3
+Icon115=133
+Back112=100
+Log111=true
+Icon108=199
+Back105=100
+Level102=5
+Log100=true
+Level95=3
+Back92=100
+Level86=4
+Back81=100
+Log79=true
+Level77=3
+Back70=100
+Level68=3
+Log68=true
+Level59=4
+Fore59=15
+Log57=true
+Fore48=15
+Log46=true
+Fore37=15
+Log35=true
+Icon29=53
+Fore26=15
+Log24=true
+Icon18=30
+Fore15=15
+Log13=true
+Log1=true
+Back124=100
+Log123=true
+Fore119=15
+Level118=5
+Icon116=137
+Back113=100
+Log112=true
+Icon109=200
+Back106=100
+Level103=5
+Log101=true
+Level96=3
+Back93=100
+Icon90=176
+Level87=3
+Back82=100
+Level78=3
+Back71=100
+Level69=3
+Log69=true
+Back60=100
+Log58=true
+Fore49=15
+Log47=true
+Fore38=15
+Log36=true
+Fore27=15
+Log25=true
+Icon19=36
+Fore16=15
+Log14=true
+Log2=true
+Level0=1
+Fore0=15
+Icon127=194
+Back125=100
+Log124=true
+Level119=5
+Icon117=132
+Back114=100
+Log113=true
+Back107=100
+Level104=5
+Log102=true
+Level97=5
+Back94=100
+Icon91=177
+Level88=1
+Back83=100
+Icon80=156
+Level79=3
+Back72=100
+Back61=100
+Log59=true
+Back50=100
+Log48=true
+Fore39=15
+Log37=true
+Fore28=15
+Log26=true
+Fore17=15
+Log15=true
+Log3=true
+Level1=1
+Fore1=0
+Back126=100
+Log125=true
+Icon118=135
+Back115=100
+Log114=true
+Back108=100
+Level105=5
+Log103=true
+Level98=5
+Back95=100
+Icon92=181
+Level89=2
+Back84=100
+Icon81=141
+Back73=100
+Icon70=105
+Back62=100
+Back51=100
+Log49=true
+Back40=100
+Log38=true
+Fore29=15
+Log27=true
+Fore18=15
+Log16=true
+Level10=4
+Log4=true
+Level2=5
+Fore2=0
+Log126=true
+Icon119=134
+Back116=100
+Log115=true
+Back109=100
+Level106=5
+Log104=true
+Level99=5
+Back96=100
+Icon93=139
+Fore90=15
+Back85=100
+Icon82=174
+Back74=100
+Icon71=110
+Back63=100
+Icon60=91
+Back52=100
+Back41=100
+Log39=true
+Back30=100
+Log28=true
+Level20=1
+Fore19=15
+Log17=true
+Level11=4
+Log5=true
+Level3=1
+Fore3=15
+Icon0=0
+Back127=100
+Back117=100
+Log116=true
+Level107=5
+Log105=true
+Back97=100
+Icon94=182
+Fore91=15
+Back86=100
+Icon83=162
+Fore80=15
+Back75=100
+Icon72=112
+Back64=100
+Icon61=92
+Back53=100
+Icon50=72
+Back42=100
+Back31=100
+Level30=4
+Log29=true
+Level21=1
+Back20=100
+Log18=true
+Level12=1
+Log6=true
+Level4=1
+Fore4=15
+Icon1=0
+Log127=true
+Back118=100
+Log117=true
+Level108=5
+Log106=true
+Fore100=15
+Back98=100
+Icon95=183
+Fore92=15
+Log90=true
+Back87=100
+Icon84=164
+Fore81=15
+Back76=100
+Icon73=120
+Fore70=15
+Back65=100
+Icon62=93
+Back54=100
+Icon51=73
+Back43=100
+Level40=2
+Icon40=35
+Back32=100
+Level31=4
+Level22=2
+Back21=100
+Log19=true
+Level13=1
+Back10=100
+Log7=true
+Level5=2
+Fore5=15
+Icon2=0
+Back119=100
+Log118=true
+Level109=5
+Log107=true
+Fore101=15
+Back99=100
+Icon96=184
+Fore93=15
+Log91=true
+Back88=100
+Icon85=165
+Fore82=15
+Log80=true
+Back77=100
+Icon74=122
+Fore71=15
+Back66=100
+Icon63=94
+Fore60=15
+Back55=100
+Icon52=75
+Back44=100
+Level41=2
+Icon41=63
+Back33=100
+Level32=3
+Icon30=54
+Level23=3
+Back22=100
+Level14=3
+Back11=100
+Log8=true
+Level6=2
+Fore6=15
+Icon3=0
+Back0=100
+Fore120=15
+Log119=true
+Log108=true
+Fore102=15
+Icon97=188
+Fore94=15
+Log92=true
+Back89=100
+Icon86=170
+Fore83=15
+Log81=true
+Back78=100
+Icon75=128
+Fore72=15
+Log70=true
+Back67=100
+Icon64=95
+Fore61=15
+Back56=100
+Icon53=77
+Level50=2
+Fore50=15
+Back45=100
+Level42=2
+Icon42=64
+Back34=100
+Level33=3
+Icon31=55
+Level24=1
+Back23=100
+Icon20=39
+Level15=1
+Back12=100
+Log9=true
+Level7=4
+Fore7=15
+Icon4=0
+Back1=1
+Fore121=15
+Level120=5
+Fore110=15
+Log109=true
+Fore103=15
+Icon100=191
+Icon98=189
+Fore95=15
+Log93=true
+Icon87=171
+Fore84=15
+Log82=true
+Back79=100
+Icon76=129
+Fore73=15
+Log71=true
+Back68=100
+Icon65=100
+Fore62=15
+Level60=4
+Log60=true
+Back57=100
+Icon54=78
+Level51=2
+Fore51=15
+Back46=100
+Level43=2
+Icon43=65
+Fore40=15
+Back35=100
+Level34=1
+Icon32=56
+Level25=3
+Back24=100
+Icon21=40
+Level16=1
+Back13=100
+Icon10=23
+Level8=1
+Fore8=15
+Icon5=11
+Back2=1
+Fore122=15
+Level121=5
+Fore111=15
+Level110=3
+Fore104=15
+Icon101=192
+Icon99=190
+Fore96=15
+Log94=true
+Icon88=173
+Fore85=15
+Log83=true
+Icon77=153
+Fore74=15
+Log72=true
+Level70=1
+Back69=100
+Icon66=101
+Fore63=15
+Level61=4
+Log61=true
+Back58=100
+Icon55=79
+Level52=4
+Fore52=15
+Log50=true
+Back47=100
+Level44=2
+Icon44=66
+Fore41=15
+Back36=100
+Level35=2
+Icon33=57
+Fore30=15
+Level26=3
+Back25=100
+Icon22=41
+Level17=1
+Back14=100
+Icon11=24
+Level9=3
+Fore9=15
+Icon6=12
+Back3=100
+Fore123=15
+Level122=5
+Icon120=242
+Fore112=15
+Level111=1
+Fore105=15
+Icon102=193
+Fore97=15
+Log95=true
+Icon89=175
+Fore86=15
+Log84=true
+Level80=3
+Icon78=154
+Fore75=15
+Log73=true
+Level71=2
+Icon67=102
+Fore64=15
+Level62=1
+Log62=true
+Back59=100
+Icon56=87
+Level53=3
+Fore53=15
+Log51=true
+Back48=100
+Level45=2
+Icon45=67
+Fore42=15
+Log40=true
+Back37=100
+Level36=2
+Icon34=58
+Fore31=15
+Level27=4
+Back26=100
+Icon23=42
+Fore20=15
+Level18=1
+Back15=100
+Icon12=25
+Icon7=13
+Back4=100
+Fore124=15
+Level123=5
+Icon121=243
+Fore113=15
+Level112=1
+Icon110=203
+Fore106=15
+Icon103=194
+Back100=100
+Fore98=15
+Log96=true
+Level90=4
+Fore87=15
+Log85=true
+Level81=3
+Icon79=155
+Fore76=15
+Log74=true
+Level72=1
+Icon68=103
+Fore65=15
+Level63=4
+Log63=true
+Icon57=88
+Level54=2
+Fore54=15
+Log52=true
+Back49=100
+Level46=2
+Icon46=68
+Fore43=15
+Log41=true
+Back38=100
+Level37=2
+Icon35=59
+Fore32=15
+Log30=true
+Level28=3
+Back27=100
+Icon24=45
+Fore21=15
+Level19=1
+Back16=100
+Icon13=14
+Fore10=15
+Icon8=21
+Back5=100
+Fore125=15
+Level124=2
+Icon122=244
+Fore114=15
+Level113=1
+Icon111=205
+Fore107=15
+Icon104=195
+Back101=100
+Fore99=15
+Log97=true
+Level91=2
+Fore88=15
+Log86=true
+Level82=2
+Fore77=15
+Log75=true
+Level73=3
+Icon69=104
+Fore66=15
+Level64=4
+Log64=true
+Icon58=89
+Level55=4
+Fore55=15
+Log53=true
+Level47=2
+Icon47=69
+Fore44=15
+Log42=true
+Back39=100
+Level38=2
+Icon36=60
+Fore33=15
+Log31=true
+Level29=3
+Back28=100
+Icon25=46
+Fore22=15
+Log20=true
+Back17=100
+Icon14=26
+Fore11=15
+Icon9=22
+Back6=100
+Fore126=15
+Level125=2
+Icon123=245
+Back120=100
+Fore115=15
+Level114=3
+Icon112=229
+Fore108=15
+Icon105=196
+Back102=100
+Log98=true
+Level92=1
+Fore89=15
+Log87=true
+Level83=4
+Fore78=15
+Log76=true
+Level74=1
+Fore67=15
+Level65=1
+Log65=true
+Icon59=90
+Level56=3
+Fore56=15
+Log54=true
+Level48=2
+Icon48=70
+Fore45=15
+Log43=true
+Level39=2
+Icon37=61
+Fore34=15
+Log32=true
+Back29=100
+Icon26=48
+Fore23=15
+Log21=true
+Back18=100
+Icon15=27
+Fore12=15
+Log10=true
+Back7=100
+Level126=5
+Icon124=174
+Back121=100
+Log120=true
+Fore116=15
+Level115=2
+Icon113=206
+Back110=100
+Fore109=15
+Icon106=197
+Back103=100
+Level100=5
+Log99=true
+Level93=3
+Back90=100
+Log88=true
+Level84=4
+Fore79=15
+Log77=true
+Level75=1
+Fore68=15
+Level66=3
+Log66=true
+Level57=4
+Fore57=15
+Log55=true
+Level49=2
+Icon49=71
+Fore46=15
+Log44=true
+Icon38=34
+Fore35=15
+Log33=true
+Icon27=51
+Fore24=15
+Log22=true
+Back19=100
+Icon16=28
+Fore13=15
+Log11=true
+Back8=100
+Fore127=15
+Icon125=175
+Back122=100
+Log121=true
+Fore117=15
+Level116=1
+Icon114=136
+Back111=100
+Log110=true
+Icon107=198
+Back104=100
+Level101=5
+Level94=4
+Back91=100
+Log89=true
+Level85=1
+Back80=100
+Log78=true
+Level76=1
+Fore69=15
+Level67=3
+Log67=true
+Level58=4
+Fore58=15
+Log56=true
+Fore47=15
+Log45=true
+Icon39=62
+Fore36=15
+Log34=true
+Icon28=52
+Fore25=15
+Log23=true
+Icon17=29
+Fore14=15
+Log12=true
+Back9=100
+Log0=true
+Level127=5
+[Colors]
+Color0=255,255,255
+Color1=0,0,0
+Color2=0,0,140
+Color3=0,100,0
+Color10=0,150,180
+Color4=230,0,0
+Color11=170,170,255
+Color5=150,0,0
+Color12=15,15,255
+Color6=80,0,80
+Color13=200,0,200
+Color7=255,90,0
+Color14=80,80,80
+Color8=255,255,0
+Color15=170,170,170
+Color9=0,255,0
diff --git a/data/msgcolors/all-green.msgclr b/data/msgcolors/all-green.msgclr
new file mode 100644
index 00000000..99cee8ce
--- /dev/null
+++ b/data/msgcolors/all-green.msgclr
@@ -0,0 +1,659 @@
+# KVIrc configuration file
+[Messages]
+Icon126=193
+Back123=100
+Log122=true
+Fore118=9
+Level117=3
+Icon115=133
+Back112=100
+Log111=true
+Icon108=199
+Back105=100
+Level102=5
+Log100=true
+Level95=3
+Back92=100
+Level86=4
+Back81=100
+Log79=true
+Level77=3
+Back70=100
+Level68=3
+Log68=true
+Level59=4
+Fore59=9
+Log57=true
+Fore48=9
+Log46=true
+Fore37=9
+Log35=true
+Icon29=53
+Fore26=9
+Log24=true
+Icon18=30
+Fore15=9
+Log13=true
+Log1=true
+Back124=100
+Log123=true
+Fore119=9
+Level118=5
+Icon116=137
+Back113=100
+Log112=true
+Icon109=200
+Back106=100
+Level103=5
+Log101=true
+Level96=3
+Back93=100
+Icon90=176
+Level87=3
+Back82=100
+Level78=3
+Back71=100
+Level69=3
+Log69=true
+Back60=100
+Log58=true
+Fore49=9
+Log47=true
+Fore38=9
+Log36=true
+Fore27=9
+Log25=true
+Icon19=36
+Fore16=9
+Log14=true
+Log2=true
+Level0=1
+Fore0=9
+Icon127=194
+Back125=100
+Log124=true
+Level119=5
+Icon117=132
+Back114=100
+Log113=true
+Back107=100
+Level104=5
+Log102=true
+Level97=5
+Back94=100
+Icon91=177
+Level88=1
+Back83=100
+Icon80=156
+Level79=3
+Back72=100
+Back61=100
+Log59=true
+Back50=100
+Log48=true
+Fore39=9
+Log37=true
+Fore28=9
+Log26=true
+Fore17=9
+Log15=true
+Log3=true
+Level1=1
+Fore1=1
+Back126=100
+Log125=true
+Icon118=135
+Back115=100
+Log114=true
+Back108=100
+Level105=5
+Log103=true
+Level98=5
+Back95=100
+Icon92=181
+Level89=2
+Back84=100
+Icon81=141
+Back73=100
+Icon70=105
+Back62=100
+Back51=100
+Log49=true
+Back40=100
+Log38=true
+Fore29=9
+Log27=true
+Fore18=9
+Log16=true
+Level10=4
+Log4=true
+Level2=5
+Fore2=1
+Log126=true
+Icon119=134
+Back116=100
+Log115=true
+Back109=100
+Level106=5
+Log104=true
+Level99=5
+Back96=100
+Icon93=139
+Fore90=9
+Back85=100
+Icon82=174
+Back74=100
+Icon71=110
+Back63=100
+Icon60=91
+Back52=100
+Back41=100
+Log39=true
+Back30=100
+Log28=true
+Level20=1
+Fore19=9
+Log17=true
+Level11=4
+Log5=true
+Level3=1
+Fore3=9
+Icon0=0
+Back127=100
+Back117=100
+Log116=true
+Level107=5
+Log105=true
+Back97=100
+Icon94=182
+Fore91=9
+Back86=100
+Icon83=162
+Fore80=9
+Back75=100
+Icon72=112
+Back64=100
+Icon61=92
+Back53=100
+Icon50=72
+Back42=100
+Back31=100
+Level30=4
+Log29=true
+Level21=1
+Back20=100
+Log18=true
+Level12=1
+Log6=true
+Level4=1
+Fore4=9
+Icon1=0
+Log127=true
+Back118=100
+Log117=true
+Level108=5
+Log106=true
+Fore100=9
+Back98=100
+Icon95=183
+Fore92=9
+Log90=true
+Back87=100
+Icon84=164
+Fore81=9
+Back76=100
+Icon73=120
+Fore70=9
+Back65=100
+Icon62=93
+Back54=100
+Icon51=73
+Back43=100
+Level40=2
+Icon40=35
+Back32=100
+Level31=4
+Level22=2
+Back21=100
+Log19=true
+Level13=1
+Back10=100
+Log7=true
+Level5=2
+Fore5=9
+Icon2=0
+Back119=100
+Log118=true
+Level109=5
+Log107=true
+Fore101=9
+Back99=100
+Icon96=184
+Fore93=9
+Log91=true
+Back88=100
+Icon85=165
+Fore82=9
+Log80=true
+Back77=100
+Icon74=122
+Fore71=9
+Back66=100
+Icon63=94
+Fore60=9
+Back55=100
+Icon52=75
+Back44=100
+Level41=2
+Icon41=63
+Back33=100
+Level32=3
+Icon30=54
+Level23=3
+Back22=100
+Level14=3
+Back11=100
+Log8=true
+Level6=2
+Fore6=9
+Icon3=0
+Back0=100
+Fore120=9
+Log119=true
+Log108=true
+Fore102=9
+Icon97=188
+Fore94=9
+Log92=true
+Back89=100
+Icon86=170
+Fore83=9
+Log81=true
+Back78=100
+Icon75=128
+Fore72=9
+Log70=true
+Back67=100
+Icon64=95
+Fore61=9
+Back56=100
+Icon53=77
+Level50=2
+Fore50=9
+Back45=100
+Level42=2
+Icon42=64
+Back34=100
+Level33=3
+Icon31=55
+Level24=1
+Back23=100
+Icon20=39
+Level15=1
+Back12=100
+Log9=true
+Level7=4
+Fore7=9
+Icon4=0
+Back1=9
+Fore121=9
+Level120=5
+Fore110=9
+Log109=true
+Fore103=9
+Icon100=191
+Icon98=189
+Fore95=9
+Log93=true
+Icon87=171
+Fore84=9
+Log82=true
+Back79=100
+Icon76=129
+Fore73=9
+Log71=true
+Back68=100
+Icon65=100
+Fore62=9
+Level60=4
+Log60=true
+Back57=100
+Icon54=78
+Level51=2
+Fore51=9
+Back46=100
+Level43=2
+Icon43=65
+Fore40=9
+Back35=100
+Level34=1
+Icon32=56
+Level25=3
+Back24=100
+Icon21=40
+Level16=1
+Back13=100
+Icon10=23
+Level8=1
+Fore8=9
+Icon5=11
+Back2=9
+Fore122=9
+Level121=5
+Fore111=9
+Level110=3
+Fore104=9
+Icon101=192
+Icon99=190
+Fore96=9
+Log94=true
+Icon88=173
+Fore85=9
+Log83=true
+Icon77=153
+Fore74=9
+Log72=true
+Level70=1
+Back69=100
+Icon66=101
+Fore63=9
+Level61=4
+Log61=true
+Back58=100
+Icon55=79
+Level52=4
+Fore52=9
+Log50=true
+Back47=100
+Level44=2
+Icon44=66
+Fore41=9
+Back36=100
+Level35=2
+Icon33=57
+Fore30=9
+Level26=3
+Back25=100
+Icon22=41
+Level17=1
+Back14=100
+Icon11=24
+Level9=3
+Fore9=9
+Icon6=12
+Back3=100
+Fore123=9
+Level122=5
+Icon120=242
+Fore112=9
+Level111=1
+Fore105=9
+Icon102=193
+Fore97=9
+Log95=true
+Icon89=175
+Fore86=9
+Log84=true
+Level80=3
+Icon78=154
+Fore75=9
+Log73=true
+Level71=2
+Icon67=102
+Fore64=9
+Level62=1
+Log62=true
+Back59=100
+Icon56=87
+Level53=3
+Fore53=9
+Log51=true
+Back48=100
+Level45=2
+Icon45=67
+Fore42=9
+Log40=true
+Back37=100
+Level36=2
+Icon34=58
+Fore31=9
+Level27=4
+Back26=100
+Icon23=42
+Fore20=9
+Level18=1
+Back15=100
+Icon12=25
+Icon7=13
+Back4=100
+Fore124=9
+Level123=5
+Icon121=243
+Fore113=9
+Level112=1
+Icon110=203
+Fore106=9
+Icon103=194
+Back100=100
+Fore98=9
+Log96=true
+Level90=4
+Fore87=9
+Log85=true
+Level81=3
+Icon79=155
+Fore76=9
+Log74=true
+Level72=1
+Icon68=103
+Fore65=9
+Level63=4
+Log63=true
+Icon57=88
+Level54=2
+Fore54=9
+Log52=true
+Back49=100
+Level46=2
+Icon46=68
+Fore43=9
+Log41=true
+Back38=100
+Level37=2
+Icon35=59
+Fore32=9
+Log30=true
+Level28=3
+Back27=100
+Icon24=45
+Fore21=9
+Level19=1
+Back16=100
+Icon13=14
+Fore10=9
+Icon8=21
+Back5=100
+Fore125=9
+Level124=2
+Icon122=244
+Fore114=9
+Level113=1
+Icon111=205
+Fore107=9
+Icon104=195
+Back101=100
+Fore99=9
+Log97=true
+Level91=2
+Fore88=9
+Log86=true
+Level82=2
+Fore77=9
+Log75=true
+Level73=3
+Icon69=104
+Fore66=9
+Level64=4
+Log64=true
+Icon58=89
+Level55=4
+Fore55=9
+Log53=true
+Level47=2
+Icon47=69
+Fore44=9
+Log42=true
+Back39=100
+Level38=2
+Icon36=60
+Fore33=9
+Log31=true
+Level29=3
+Back28=100
+Icon25=46
+Fore22=9
+Log20=true
+Back17=100
+Icon14=26
+Fore11=9
+Icon9=22
+Back6=100
+Fore126=9
+Level125=2
+Icon123=245
+Back120=100
+Fore115=9
+Level114=3
+Icon112=229
+Fore108=9
+Icon105=196
+Back102=100
+Log98=true
+Level92=1
+Fore89=9
+Log87=true
+Level83=4
+Fore78=9
+Log76=true
+Level74=1
+Fore67=9
+Level65=1
+Log65=true
+Icon59=90
+Level56=3
+Fore56=9
+Log54=true
+Level48=2
+Icon48=70
+Fore45=9
+Log43=true
+Level39=2
+Icon37=61
+Fore34=9
+Log32=true
+Back29=100
+Icon26=48
+Fore23=9
+Log21=true
+Back18=100
+Icon15=27
+Fore12=9
+Log10=true
+Back7=100
+Level126=5
+Icon124=174
+Back121=100
+Log120=true
+Fore116=9
+Level115=2
+Icon113=206
+Back110=100
+Fore109=9
+Icon106=197
+Back103=100
+Level100=5
+Log99=true
+Level93=3
+Back90=100
+Log88=true
+Level84=4
+Fore79=9
+Log77=true
+Level75=1
+Fore68=9
+Level66=3
+Log66=true
+Level57=4
+Fore57=9
+Log55=true
+Level49=2
+Icon49=71
+Fore46=9
+Log44=true
+Icon38=34
+Fore35=9
+Log33=true
+Icon27=51
+Fore24=9
+Log22=true
+Back19=100
+Icon16=28
+Fore13=9
+Log11=true
+Back8=100
+Fore127=9
+Icon125=175
+Back122=100
+Log121=true
+Fore117=9
+Level116=1
+Icon114=136
+Back111=100
+Log110=true
+Icon107=198
+Back104=100
+Level101=5
+Level94=4
+Back91=100
+Log89=true
+Level85=1
+Back80=100
+Log78=true
+Level76=1
+Fore69=9
+Level67=3
+Log67=true
+Level58=4
+Fore58=9
+Log56=true
+Fore47=9
+Log45=true
+Icon39=62
+Fore36=9
+Log34=true
+Icon28=52
+Fore25=9
+Log23=true
+Icon17=29
+Fore14=9
+Log12=true
+Back9=100
+Log0=true
+Level127=5
+[Colors]
+Color0=255,255,255
+Color1=0,0,0
+Color2=0,0,140
+Color3=0,100,0
+Color10=0,150,180
+Color4=230,0,0
+Color11=170,170,255
+Color5=150,0,0
+Color12=15,15,255
+Color6=80,0,80
+Color13=200,0,200
+Color7=255,90,0
+Color14=80,80,80
+Color8=255,255,0
+Color15=170,170,170
+Color9=0,255,0
diff --git a/data/msgcolors/all-white.msgclr b/data/msgcolors/all-white.msgclr
new file mode 100644
index 00000000..26dd83d6
--- /dev/null
+++ b/data/msgcolors/all-white.msgclr
@@ -0,0 +1,659 @@
+# KVIrc configuration file
+[Messages]
+Icon126=193
+Back123=100
+Log122=true
+Fore118=0
+Level117=3
+Icon115=133
+Back112=100
+Log111=true
+Icon108=199
+Back105=100
+Level102=5
+Log100=true
+Level95=3
+Back92=100
+Level86=4
+Back81=100
+Log79=true
+Level77=3
+Back70=100
+Level68=3
+Log68=true
+Level59=4
+Fore59=0
+Log57=true
+Fore48=0
+Log46=true
+Fore37=0
+Log35=true
+Icon29=53
+Fore26=0
+Log24=true
+Icon18=30
+Fore15=0
+Log13=true
+Log1=true
+Back124=100
+Log123=true
+Fore119=0
+Level118=5
+Icon116=137
+Back113=100
+Log112=true
+Icon109=200
+Back106=100
+Level103=5
+Log101=true
+Level96=3
+Back93=100
+Icon90=176
+Level87=3
+Back82=100
+Level78=3
+Back71=100
+Level69=3
+Log69=true
+Back60=100
+Log58=true
+Fore49=0
+Log47=true
+Fore38=0
+Log36=true
+Fore27=0
+Log25=true
+Icon19=36
+Fore16=0
+Log14=true
+Log2=true
+Level0=1
+Fore0=0
+Icon127=194
+Back125=100
+Log124=true
+Level119=5
+Icon117=132
+Back114=100
+Log113=true
+Back107=100
+Level104=5
+Log102=true
+Level97=5
+Back94=100
+Icon91=177
+Level88=1
+Back83=100
+Icon80=156
+Level79=3
+Back72=100
+Back61=100
+Log59=true
+Back50=100
+Log48=true
+Fore39=0
+Log37=true
+Fore28=0
+Log26=true
+Fore17=0
+Log15=true
+Log3=true
+Level1=1
+Fore1=1
+Back126=100
+Log125=true
+Icon118=135
+Back115=100
+Log114=true
+Back108=100
+Level105=5
+Log103=true
+Level98=5
+Back95=100
+Icon92=181
+Level89=2
+Back84=100
+Icon81=141
+Back73=100
+Icon70=105
+Back62=100
+Back51=100
+Log49=true
+Back40=100
+Log38=true
+Fore29=0
+Log27=true
+Fore18=0
+Log16=true
+Level10=4
+Log4=true
+Level2=5
+Fore2=1
+Log126=true
+Icon119=134
+Back116=100
+Log115=true
+Back109=100
+Level106=5
+Log104=true
+Level99=5
+Back96=100
+Icon93=139
+Fore90=0
+Back85=100
+Icon82=174
+Back74=100
+Icon71=110
+Back63=100
+Icon60=91
+Back52=100
+Back41=100
+Log39=true
+Back30=100
+Log28=true
+Level20=1
+Fore19=0
+Log17=true
+Level11=4
+Log5=true
+Level3=1
+Fore3=0
+Icon0=0
+Back127=100
+Back117=100
+Log116=true
+Level107=5
+Log105=true
+Back97=100
+Icon94=182
+Fore91=0
+Back86=100
+Icon83=162
+Fore80=0
+Back75=100
+Icon72=112
+Back64=100
+Icon61=92
+Back53=100
+Icon50=72
+Back42=100
+Back31=100
+Level30=4
+Log29=true
+Level21=1
+Back20=100
+Log18=true
+Level12=1
+Log6=true
+Level4=1
+Fore4=0
+Icon1=0
+Log127=true
+Back118=100
+Log117=true
+Level108=5
+Log106=true
+Fore100=0
+Back98=100
+Icon95=183
+Fore92=0
+Log90=true
+Back87=100
+Icon84=164
+Fore81=0
+Back76=100
+Icon73=120
+Fore70=0
+Back65=100
+Icon62=93
+Back54=100
+Icon51=73
+Back43=100
+Level40=2
+Icon40=35
+Back32=100
+Level31=4
+Level22=2
+Back21=100
+Log19=true
+Level13=1
+Back10=100
+Log7=true
+Level5=2
+Fore5=0
+Icon2=0
+Back119=100
+Log118=true
+Level109=5
+Log107=true
+Fore101=0
+Back99=100
+Icon96=184
+Fore93=0
+Log91=true
+Back88=100
+Icon85=165
+Fore82=0
+Log80=true
+Back77=100
+Icon74=122
+Fore71=0
+Back66=100
+Icon63=94
+Fore60=0
+Back55=100
+Icon52=75
+Back44=100
+Level41=2
+Icon41=63
+Back33=100
+Level32=3
+Icon30=54
+Level23=3
+Back22=100
+Level14=3
+Back11=100
+Log8=true
+Level6=2
+Fore6=0
+Icon3=0
+Back0=100
+Fore120=0
+Log119=true
+Log108=true
+Fore102=0
+Icon97=188
+Fore94=0
+Log92=true
+Back89=100
+Icon86=170
+Fore83=0
+Log81=true
+Back78=100
+Icon75=128
+Fore72=0
+Log70=true
+Back67=100
+Icon64=95
+Fore61=0
+Back56=100
+Icon53=77
+Level50=2
+Fore50=0
+Back45=100
+Level42=2
+Icon42=64
+Back34=100
+Level33=3
+Icon31=55
+Level24=1
+Back23=100
+Icon20=39
+Level15=1
+Back12=100
+Log9=true
+Level7=4
+Fore7=0
+Icon4=0
+Back1=0
+Fore121=0
+Level120=5
+Fore110=0
+Log109=true
+Fore103=0
+Icon100=191
+Icon98=189
+Fore95=0
+Log93=true
+Icon87=171
+Fore84=0
+Log82=true
+Back79=100
+Icon76=129
+Fore73=0
+Log71=true
+Back68=100
+Icon65=100
+Fore62=0
+Level60=4
+Log60=true
+Back57=100
+Icon54=78
+Level51=2
+Fore51=0
+Back46=100
+Level43=2
+Icon43=65
+Fore40=0
+Back35=100
+Level34=1
+Icon32=56
+Level25=3
+Back24=100
+Icon21=40
+Level16=1
+Back13=100
+Icon10=23
+Level8=1
+Fore8=0
+Icon5=11
+Back2=0
+Fore122=0
+Level121=5
+Fore111=0
+Level110=3
+Fore104=0
+Icon101=192
+Icon99=190
+Fore96=0
+Log94=true
+Icon88=173
+Fore85=0
+Log83=true
+Icon77=153
+Fore74=0
+Log72=true
+Level70=1
+Back69=100
+Icon66=101
+Fore63=0
+Level61=4
+Log61=true
+Back58=100
+Icon55=79
+Level52=4
+Fore52=0
+Log50=true
+Back47=100
+Level44=2
+Icon44=66
+Fore41=0
+Back36=100
+Level35=2
+Icon33=57
+Fore30=0
+Level26=3
+Back25=100
+Icon22=41
+Level17=1
+Back14=100
+Icon11=24
+Level9=3
+Fore9=0
+Icon6=12
+Back3=100
+Fore123=0
+Level122=5
+Icon120=242
+Fore112=0
+Level111=1
+Fore105=0
+Icon102=193
+Fore97=0
+Log95=true
+Icon89=175
+Fore86=0
+Log84=true
+Level80=3
+Icon78=154
+Fore75=0
+Log73=true
+Level71=2
+Icon67=102
+Fore64=0
+Level62=1
+Log62=true
+Back59=100
+Icon56=87
+Level53=3
+Fore53=0
+Log51=true
+Back48=100
+Level45=2
+Icon45=67
+Fore42=0
+Log40=true
+Back37=100
+Level36=2
+Icon34=58
+Fore31=0
+Level27=4
+Back26=100
+Icon23=42
+Fore20=0
+Level18=1
+Back15=100
+Icon12=25
+Icon7=13
+Back4=100
+Fore124=0
+Level123=5
+Icon121=243
+Fore113=0
+Level112=1
+Icon110=203
+Fore106=0
+Icon103=194
+Back100=100
+Fore98=0
+Log96=true
+Level90=4
+Fore87=0
+Log85=true
+Level81=3
+Icon79=155
+Fore76=0
+Log74=true
+Level72=1
+Icon68=103
+Fore65=0
+Level63=4
+Log63=true
+Icon57=88
+Level54=2
+Fore54=0
+Log52=true
+Back49=100
+Level46=2
+Icon46=68
+Fore43=0
+Log41=true
+Back38=100
+Level37=2
+Icon35=59
+Fore32=0
+Log30=true
+Level28=3
+Back27=100
+Icon24=45
+Fore21=0
+Level19=1
+Back16=100
+Icon13=14
+Fore10=0
+Icon8=21
+Back5=100
+Fore125=0
+Level124=2
+Icon122=244
+Fore114=0
+Level113=1
+Icon111=205
+Fore107=0
+Icon104=195
+Back101=100
+Fore99=0
+Log97=true
+Level91=2
+Fore88=0
+Log86=true
+Level82=2
+Fore77=0
+Log75=true
+Level73=3
+Icon69=104
+Fore66=0
+Level64=4
+Log64=true
+Icon58=89
+Level55=4
+Fore55=0
+Log53=true
+Level47=2
+Icon47=69
+Fore44=0
+Log42=true
+Back39=100
+Level38=2
+Icon36=60
+Fore33=0
+Log31=true
+Level29=3
+Back28=100
+Icon25=46
+Fore22=0
+Log20=true
+Back17=100
+Icon14=26
+Fore11=0
+Icon9=22
+Back6=100
+Fore126=0
+Level125=2
+Icon123=245
+Back120=100
+Fore115=0
+Level114=3
+Icon112=229
+Fore108=0
+Icon105=196
+Back102=100
+Log98=true
+Level92=1
+Fore89=0
+Log87=true
+Level83=4
+Fore78=0
+Log76=true
+Level74=1
+Fore67=0
+Level65=1
+Log65=true
+Icon59=90
+Level56=3
+Fore56=0
+Log54=true
+Level48=2
+Icon48=70
+Fore45=0
+Log43=true
+Level39=2
+Icon37=61
+Fore34=0
+Log32=true
+Back29=100
+Icon26=48
+Fore23=0
+Log21=true
+Back18=100
+Icon15=27
+Fore12=0
+Log10=true
+Back7=100
+Level126=5
+Icon124=174
+Back121=100
+Log120=true
+Fore116=0
+Level115=2
+Icon113=206
+Back110=100
+Fore109=0
+Icon106=197
+Back103=100
+Level100=5
+Log99=true
+Level93=3
+Back90=100
+Log88=true
+Level84=4
+Fore79=0
+Log77=true
+Level75=1
+Fore68=0
+Level66=3
+Log66=true
+Level57=4
+Fore57=0
+Log55=true
+Level49=2
+Icon49=71
+Fore46=0
+Log44=true
+Icon38=34
+Fore35=0
+Log33=true
+Icon27=51
+Fore24=0
+Log22=true
+Back19=100
+Icon16=28
+Fore13=0
+Log11=true
+Back8=100
+Fore127=0
+Icon125=175
+Back122=100
+Log121=true
+Fore117=0
+Level116=1
+Icon114=136
+Back111=100
+Log110=true
+Icon107=198
+Back104=100
+Level101=5
+Level94=4
+Back91=100
+Log89=true
+Level85=1
+Back80=100
+Log78=true
+Level76=1
+Fore69=0
+Level67=3
+Log67=true
+Level58=4
+Fore58=0
+Log56=true
+Fore47=0
+Log45=true
+Icon39=62
+Fore36=0
+Log34=true
+Icon28=52
+Fore25=0
+Log23=true
+Icon17=29
+Fore14=0
+Log12=true
+Back9=100
+Log0=true
+Level127=5
+[Colors]
+Color0=255,255,255
+Color1=0,0,0
+Color2=0,0,140
+Color3=0,100,0
+Color10=0,150,180
+Color4=230,0,0
+Color11=170,170,255
+Color5=150,0,0
+Color12=15,15,255
+Color6=80,0,80
+Color13=200,0,200
+Color7=255,90,0
+Color14=80,80,80
+Color8=255,255,0
+Color15=170,170,170
+Color9=0,255,0
diff --git a/data/msgcolors/colored-2.msgclr b/data/msgcolors/colored-2.msgclr
new file mode 100644
index 00000000..d2310a91
--- /dev/null
+++ b/data/msgcolors/colored-2.msgclr
@@ -0,0 +1,659 @@
+# KVIrc configuration file
+[Messages]
+Icon126=193
+Back123=100
+Log122=true
+Fore118=4
+Level117=3
+Icon115=133
+Back112=100
+Log111=true
+Icon108=199
+Back105=100
+Level102=5
+Log100=true
+Level95=3
+Back92=100
+Level86=4
+Back81=100
+Log79=true
+Level77=3
+Back70=100
+Level68=3
+Log68=true
+Level59=4
+Fore59=2
+Log57=true
+Fore48=3
+Log46=true
+Fore37=3
+Log35=true
+Icon29=53
+Fore26=1
+Log24=true
+Icon18=30
+Fore15=5
+Log13=true
+Log1=true
+Back124=100
+Log123=true
+Fore119=4
+Level118=5
+Icon116=137
+Back113=100
+Log112=true
+Icon109=200
+Back106=100
+Level103=5
+Log101=true
+Level96=3
+Back93=100
+Icon90=176
+Level87=3
+Back82=100
+Level78=3
+Back71=100
+Level69=3
+Log69=true
+Back60=100
+Log58=true
+Fore49=3
+Log47=true
+Fore38=3
+Log36=true
+Fore27=4
+Log25=true
+Icon19=36
+Fore16=1
+Log14=true
+Log2=true
+Level0=1
+Fore0=1
+Icon127=194
+Back125=100
+Log124=true
+Level119=5
+Icon117=132
+Back114=100
+Log113=true
+Back107=100
+Level104=5
+Log102=true
+Level97=5
+Back94=100
+Icon91=177
+Level88=1
+Back83=100
+Icon80=156
+Level79=3
+Back72=100
+Back61=100
+Log59=true
+Back50=100
+Log48=true
+Fore39=3
+Log37=true
+Fore28=4
+Log26=true
+Fore17=2
+Log15=true
+Log3=true
+Level1=1
+Fore1=0
+Back126=100
+Log125=true
+Icon118=135
+Back115=100
+Log114=true
+Back108=100
+Level105=5
+Log103=true
+Level98=5
+Back95=100
+Icon92=181
+Level89=2
+Back84=100
+Icon81=141
+Back73=100
+Icon70=105
+Back62=100
+Back51=100
+Log49=true
+Back40=100
+Log38=true
+Fore29=4
+Log27=true
+Fore18=1
+Log16=true
+Level10=4
+Log4=true
+Level2=5
+Fore2=10
+Log126=true
+Icon119=134
+Back116=100
+Log115=true
+Back109=100
+Level106=5
+Log104=true
+Level99=5
+Back96=100
+Icon93=139
+Fore90=3
+Back85=100
+Icon82=174
+Back74=100
+Icon71=110
+Back63=100
+Icon60=91
+Back52=100
+Back41=100
+Log39=true
+Back30=100
+Log28=true
+Level20=1
+Fore19=4
+Log17=true
+Level11=4
+Log5=true
+Level3=1
+Fore3=12
+Icon0=0
+Back127=100
+Back117=100
+Log116=true
+Level107=5
+Log105=true
+Back97=100
+Icon94=182
+Fore91=7
+Back86=100
+Icon83=162
+Fore80=1
+Back75=100
+Icon72=112
+Back64=100
+Icon61=92
+Back53=100
+Icon50=72
+Back42=100
+Back31=100
+Level30=4
+Log29=true
+Level21=1
+Back20=100
+Log18=true
+Level12=1
+Log6=true
+Level4=1
+Fore4=12
+Icon1=0
+Log127=true
+Back118=100
+Log117=true
+Level108=5
+Log106=true
+Fore100=3
+Back98=100
+Icon95=183
+Fore92=1
+Log90=true
+Back87=100
+Icon84=164
+Fore81=1
+Back76=100
+Icon73=120
+Fore70=1
+Back65=100
+Icon62=93
+Back54=100
+Icon51=73
+Back43=100
+Level40=2
+Icon40=35
+Back32=100
+Level31=4
+Level22=2
+Back21=100
+Log19=true
+Level13=1
+Back10=100
+Log7=true
+Level5=2
+Fore5=4
+Icon2=0
+Back119=100
+Log118=true
+Level109=5
+Log107=true
+Fore101=3
+Back99=100
+Icon96=184
+Fore93=1
+Log91=true
+Back88=100
+Icon85=165
+Fore82=1
+Log80=true
+Back77=100
+Icon74=122
+Fore71=3
+Back66=100
+Icon63=94
+Fore60=2
+Back55=100
+Icon52=75
+Back44=100
+Level41=2
+Icon41=63
+Back33=100
+Level32=3
+Icon30=54
+Level23=3
+Back22=100
+Level14=3
+Back11=100
+Log8=true
+Level6=2
+Fore6=4
+Icon3=0
+Back0=100
+Fore120=1
+Log119=true
+Log108=true
+Fore102=3
+Icon97=188
+Fore94=4
+Log92=true
+Back89=100
+Icon86=170
+Fore83=1
+Log81=true
+Back78=100
+Icon75=128
+Fore72=1
+Log70=true
+Back67=100
+Icon64=95
+Fore61=2
+Back56=100
+Icon53=77
+Level50=2
+Fore50=3
+Back45=100
+Level42=2
+Icon42=64
+Back34=100
+Level33=3
+Icon31=55
+Level24=1
+Back23=100
+Icon20=39
+Level15=1
+Back12=100
+Log9=true
+Level7=4
+Fore7=6
+Icon4=0
+Back1=1
+Fore121=1
+Level120=5
+Fore110=1
+Log109=true
+Fore103=3
+Icon100=191
+Icon98=189
+Fore95=1
+Log93=true
+Icon87=171
+Fore84=1
+Log82=true
+Back79=100
+Icon76=129
+Fore73=1
+Log71=true
+Back68=100
+Icon65=100
+Fore62=2
+Level60=4
+Log60=true
+Back57=100
+Icon54=78
+Level51=2
+Fore51=3
+Back46=100
+Level43=2
+Icon43=65
+Fore40=3
+Back35=100
+Level34=1
+Icon32=56
+Level25=3
+Back24=100
+Icon21=40
+Level16=1
+Back13=100
+Icon10=23
+Level8=1
+Fore8=1
+Icon5=11
+Back2=100
+Fore122=1
+Level121=5
+Fore111=3
+Level110=3
+Fore104=3
+Icon101=192
+Icon99=190
+Fore96=1
+Log94=true
+Icon88=173
+Fore85=1
+Log83=true
+Icon77=153
+Fore74=1
+Log72=true
+Level70=1
+Back69=100
+Icon66=101
+Fore63=2
+Level61=4
+Log61=true
+Back58=100
+Icon55=79
+Level52=4
+Fore52=2
+Log50=true
+Back47=100
+Level44=2
+Icon44=66
+Fore41=3
+Back36=100
+Level35=2
+Icon33=57
+Fore30=4
+Level26=3
+Back25=100
+Icon22=41
+Level17=1
+Back14=100
+Icon11=24
+Level9=3
+Fore9=1
+Icon6=12
+Back3=100
+Fore123=1
+Level122=5
+Icon120=242
+Fore112=1
+Level111=1
+Fore105=3
+Icon102=193
+Fore97=3
+Log95=true
+Icon89=175
+Fore86=14
+Log84=true
+Level80=3
+Icon78=154
+Fore75=1
+Log73=true
+Level71=2
+Icon67=102
+Fore64=2
+Level62=1
+Log62=true
+Back59=100
+Icon56=87
+Level53=3
+Fore53=5
+Log51=true
+Back48=100
+Level45=2
+Icon45=67
+Fore42=3
+Log40=true
+Back37=100
+Level36=2
+Icon34=58
+Fore31=4
+Level27=4
+Back26=100
+Icon23=42
+Fore20=3
+Level18=1
+Back15=100
+Icon12=25
+Icon7=13
+Back4=100
+Fore124=1
+Level123=5
+Icon121=243
+Fore113=1
+Level112=1
+Icon110=203
+Fore106=3
+Icon103=194
+Back100=100
+Fore98=3
+Log96=true
+Level90=4
+Fore87=2
+Log85=true
+Level81=3
+Icon79=155
+Fore76=1
+Log74=true
+Level72=1
+Icon68=103
+Fore65=10
+Level63=4
+Log63=true
+Icon57=88
+Level54=2
+Fore54=4
+Log52=true
+Back49=100
+Level46=2
+Icon46=68
+Fore43=3
+Log41=true
+Back38=100
+Level37=2
+Icon35=59
+Fore32=13
+Log30=true
+Level28=3
+Back27=100
+Icon24=45
+Fore21=3
+Level19=1
+Back16=100
+Icon13=14
+Fore10=4
+Icon8=21
+Back5=100
+Fore125=1
+Level124=2
+Icon122=244
+Fore114=1
+Level113=1
+Icon111=205
+Fore107=3
+Icon104=195
+Back101=100
+Fore99=3
+Log97=true
+Level91=2
+Fore88=3
+Log86=true
+Level82=2
+Fore77=1
+Log75=true
+Level73=3
+Icon69=104
+Fore66=1
+Level64=4
+Log64=true
+Icon58=89
+Level55=4
+Fore55=4
+Log53=true
+Level47=2
+Icon47=69
+Fore44=3
+Log42=true
+Back39=100
+Level38=2
+Icon36=60
+Fore33=1
+Log31=true
+Level29=3
+Back28=100
+Icon25=46
+Fore22=5
+Log20=true
+Back17=100
+Icon14=26
+Fore11=4
+Icon9=22
+Back6=100
+Fore126=1
+Level125=2
+Icon123=245
+Back120=100
+Fore115=1
+Level114=3
+Icon112=229
+Fore108=3
+Icon105=196
+Back102=100
+Log98=true
+Level92=1
+Fore89=3
+Log87=true
+Level83=4
+Fore78=1
+Log76=true
+Level74=1
+Fore67=1
+Level65=1
+Log65=true
+Icon59=90
+Level56=3
+Fore56=7
+Log54=true
+Level48=2
+Icon48=70
+Fore45=3
+Log43=true
+Level39=2
+Icon37=61
+Fore34=2
+Log32=true
+Back29=100
+Icon26=48
+Fore23=4
+Log21=true
+Back18=100
+Icon15=27
+Fore12=1
+Log10=true
+Back7=100
+Level126=5
+Icon124=174
+Back121=100
+Log120=true
+Fore116=1
+Level115=2
+Icon113=206
+Back110=100
+Fore109=3
+Icon106=197
+Back103=100
+Level100=5
+Log99=true
+Level93=3
+Back90=100
+Log88=true
+Level84=4
+Fore79=1
+Log77=true
+Level75=1
+Fore68=1
+Level66=3
+Log66=true
+Level57=4
+Fore57=2
+Log55=true
+Level49=2
+Icon49=71
+Fore46=3
+Log44=true
+Icon38=34
+Fore35=2
+Log33=true
+Icon27=51
+Fore24=10
+Log22=true
+Back19=100
+Icon16=28
+Fore13=2
+Log11=true
+Back8=100
+Fore127=1
+Icon125=175
+Back122=100
+Log121=true
+Fore117=1
+Level116=1
+Icon114=136
+Back111=100
+Log110=true
+Icon107=198
+Back104=100
+Level101=5
+Level94=4
+Back91=100
+Log89=true
+Level85=1
+Back80=100
+Log78=true
+Level76=1
+Fore69=1
+Level67=3
+Log67=true
+Level58=4
+Fore58=2
+Log56=true
+Fore47=3
+Log45=true
+Icon39=62
+Fore36=2
+Log34=true
+Icon28=52
+Fore25=1
+Log23=true
+Icon17=29
+Fore14=5
+Log12=true
+Back9=100
+Log0=true
+Level127=5
+[Colors]
+Color0=255,255,255
+Color1=0,0,0
+Color2=0,0,140
+Color3=0,100,0
+Color10=0,150,180
+Color4=230,0,0
+Color11=170,170,255
+Color5=150,0,0
+Color12=15,15,255
+Color6=80,0,80
+Color13=200,0,200
+Color7=255,90,0
+Color14=80,80,80
+Color8=255,255,0
+Color15=170,170,170
+Color9=0,255,0
diff --git a/data/msgcolors/colored.msgclr b/data/msgcolors/colored.msgclr
new file mode 100644
index 00000000..c470e3b7
--- /dev/null
+++ b/data/msgcolors/colored.msgclr
@@ -0,0 +1,659 @@
+# KVIrc configuration file
+[Messages]
+Icon126=193
+Back123=100
+Log122=true
+Fore118=5
+Level117=3
+Icon115=133
+Back112=100
+Log111=true
+Icon108=199
+Back105=100
+Level102=5
+Log100=true
+Level95=3
+Back92=100
+Level86=4
+Back81=100
+Log79=true
+Level77=3
+Back70=100
+Level68=3
+Log68=true
+Level59=4
+Fore59=1
+Log57=true
+Fore48=2
+Log46=true
+Fore37=6
+Log35=true
+Icon29=53
+Fore26=1
+Log24=true
+Icon18=30
+Fore15=1
+Log13=true
+Log1=true
+Back124=100
+Log123=true
+Fore119=5
+Level118=5
+Icon116=137
+Back113=100
+Log112=true
+Icon109=200
+Back106=100
+Level103=5
+Log101=true
+Level96=3
+Back93=100
+Icon90=176
+Level87=3
+Back82=100
+Level78=3
+Back71=100
+Level69=3
+Log69=true
+Back60=100
+Log58=true
+Fore49=2
+Log47=true
+Fore38=5
+Log36=true
+Fore27=2
+Log25=true
+Icon19=36
+Fore16=14
+Log14=true
+Log2=true
+Level0=1
+Fore0=1
+Icon127=194
+Back125=100
+Log124=true
+Level119=5
+Icon117=132
+Back114=100
+Log113=true
+Back107=100
+Level104=5
+Log102=true
+Level97=5
+Back94=100
+Icon91=177
+Level88=1
+Back83=100
+Icon80=156
+Level79=3
+Back72=100
+Back61=100
+Log59=true
+Back50=100
+Log48=true
+Fore39=5
+Log37=true
+Fore28=2
+Log26=true
+Fore17=2
+Log15=true
+Log3=true
+Level1=1
+Fore1=0
+Back126=100
+Log125=true
+Icon118=135
+Back115=100
+Log114=true
+Back108=100
+Level105=5
+Log103=true
+Level98=5
+Back95=100
+Icon92=181
+Level89=2
+Back84=100
+Icon81=141
+Back73=100
+Icon70=105
+Back62=100
+Back51=100
+Log49=true
+Back40=100
+Log38=true
+Fore29=2
+Log27=true
+Fore18=2
+Log16=true
+Level10=4
+Log4=true
+Level2=5
+Fore2=0
+Log126=true
+Icon119=134
+Back116=100
+Log115=true
+Back109=100
+Level106=5
+Log104=true
+Level99=5
+Back96=100
+Icon93=139
+Fore90=1
+Back85=100
+Icon82=174
+Back74=100
+Icon71=110
+Back63=100
+Icon60=91
+Back52=100
+Back41=100
+Log39=true
+Back30=100
+Log28=true
+Level20=1
+Fore19=14
+Log17=true
+Level11=4
+Log5=true
+Level3=1
+Fore3=1
+Icon0=0
+Back127=100
+Back117=100
+Log116=true
+Level107=5
+Log105=true
+Back97=100
+Icon94=182
+Fore91=1
+Back86=100
+Icon83=162
+Fore80=1
+Back75=100
+Icon72=112
+Back64=100
+Icon61=92
+Back53=100
+Icon50=72
+Back42=100
+Back31=100
+Level30=4
+Log29=true
+Level21=1
+Back20=100
+Log18=true
+Level12=1
+Log6=true
+Level4=1
+Fore4=1
+Icon1=0
+Log127=true
+Back118=100
+Log117=true
+Level108=5
+Log106=true
+Fore100=5
+Back98=100
+Icon95=183
+Fore92=14
+Log90=true
+Back87=100
+Icon84=164
+Fore81=2
+Back76=100
+Icon73=120
+Fore70=1
+Back65=100
+Icon62=93
+Back54=100
+Icon51=73
+Back43=100
+Level40=2
+Icon40=35
+Back32=100
+Level31=4
+Level22=2
+Back21=100
+Log19=true
+Level13=1
+Back10=100
+Log7=true
+Level5=2
+Fore5=5
+Icon2=0
+Back119=100
+Log118=true
+Level109=5
+Log107=true
+Fore101=5
+Back99=100
+Icon96=184
+Fore93=5
+Log91=true
+Back88=100
+Icon85=165
+Fore82=5
+Log80=true
+Back77=100
+Icon74=122
+Fore71=5
+Back66=100
+Icon63=94
+Fore60=1
+Back55=100
+Icon52=75
+Back44=100
+Level41=2
+Icon41=63
+Back33=100
+Level32=3
+Icon30=54
+Level23=3
+Back22=100
+Level14=3
+Back11=100
+Log8=true
+Level6=2
+Fore6=4
+Icon3=0
+Back0=100
+Fore120=5
+Log119=true
+Log108=true
+Fore102=5
+Icon97=188
+Fore94=5
+Log92=true
+Back89=100
+Icon86=170
+Fore83=5
+Log81=true
+Back78=100
+Icon75=128
+Fore72=1
+Log70=true
+Back67=100
+Icon64=95
+Fore61=1
+Back56=100
+Icon53=77
+Level50=2
+Fore50=2
+Back45=100
+Level42=2
+Icon42=64
+Back34=100
+Level33=3
+Icon31=55
+Level24=1
+Back23=100
+Icon20=39
+Level15=1
+Back12=100
+Log9=true
+Level7=4
+Fore7=1
+Icon4=0
+Back1=1
+Fore121=5
+Level120=5
+Fore110=5
+Log109=true
+Fore103=5
+Icon100=191
+Icon98=189
+Fore95=2
+Log93=true
+Icon87=171
+Fore84=2
+Log82=true
+Back79=100
+Icon76=129
+Fore73=5
+Log71=true
+Back68=100
+Icon65=100
+Fore62=2
+Level60=4
+Log60=true
+Back57=100
+Icon54=78
+Level51=2
+Fore51=2
+Back46=100
+Level43=2
+Icon43=65
+Fore40=2
+Back35=100
+Level34=1
+Icon32=56
+Level25=3
+Back24=100
+Icon21=40
+Level16=1
+Back13=100
+Icon10=23
+Level8=1
+Fore8=1
+Icon5=11
+Back2=1
+Fore122=5
+Level121=5
+Fore111=2
+Level110=3
+Fore104=5
+Icon101=192
+Icon99=190
+Fore96=2
+Log94=true
+Icon88=173
+Fore85=2
+Log83=true
+Icon77=153
+Fore74=1
+Log72=true
+Level70=1
+Back69=100
+Icon66=101
+Fore63=3
+Level61=4
+Log61=true
+Back58=100
+Icon55=79
+Level52=4
+Fore52=1
+Log50=true
+Back47=100
+Level44=2
+Icon44=66
+Fore41=2
+Back36=100
+Level35=2
+Icon33=57
+Fore30=5
+Level26=3
+Back25=100
+Icon22=41
+Level17=1
+Back14=100
+Icon11=24
+Level9=3
+Fore9=6
+Icon6=12
+Back3=100
+Fore123=5
+Level122=5
+Icon120=242
+Fore112=2
+Level111=1
+Fore105=5
+Icon102=193
+Fore97=5
+Log95=true
+Icon89=175
+Fore86=1
+Log84=true
+Level80=3
+Icon78=154
+Fore75=1
+Log73=true
+Level71=2
+Icon67=102
+Fore64=3
+Level62=1
+Log62=true
+Back59=100
+Icon56=87
+Level53=3
+Fore53=6
+Log51=true
+Back48=100
+Level45=2
+Icon45=67
+Fore42=2
+Log40=true
+Back37=100
+Level36=2
+Icon34=58
+Fore31=5
+Level27=4
+Back26=100
+Icon23=42
+Fore20=3
+Level18=1
+Back15=100
+Icon12=25
+Icon7=13
+Back4=100
+Fore124=5
+Level123=5
+Icon121=243
+Fore113=2
+Level112=1
+Icon110=203
+Fore106=5
+Icon103=194
+Back100=100
+Fore98=5
+Log96=true
+Level90=4
+Fore87=14
+Log85=true
+Level81=3
+Icon79=155
+Fore76=1
+Log74=true
+Level72=1
+Icon68=103
+Fore65=1
+Level63=4
+Log63=true
+Icon57=88
+Level54=2
+Fore54=6
+Log52=true
+Back49=100
+Level46=2
+Icon46=68
+Fore43=2
+Log41=true
+Back38=100
+Level37=2
+Icon35=59
+Fore32=6
+Log30=true
+Level28=3
+Back27=100
+Icon24=45
+Fore21=2
+Level19=1
+Back16=100
+Icon13=14
+Fore10=5
+Icon8=21
+Back5=100
+Fore125=5
+Level124=2
+Icon122=244
+Fore114=3
+Level113=1
+Icon111=205
+Fore107=5
+Icon104=195
+Back101=100
+Fore99=5
+Log97=true
+Level91=2
+Fore88=1
+Log86=true
+Level82=2
+Fore77=1
+Log75=true
+Level73=3
+Icon69=104
+Fore66=1
+Level64=4
+Log64=true
+Icon58=89
+Level55=4
+Fore55=5
+Log53=true
+Level47=2
+Icon47=69
+Fore44=2
+Log42=true
+Back39=100
+Level38=2
+Icon36=60
+Fore33=6
+Log31=true
+Level29=3
+Back28=100
+Icon25=46
+Fore22=5
+Log20=true
+Back17=100
+Icon14=26
+Fore11=5
+Icon9=22
+Back6=100
+Fore126=5
+Level125=2
+Icon123=245
+Back120=100
+Fore115=14
+Level114=3
+Icon112=229
+Fore108=5
+Icon105=196
+Back102=100
+Log98=true
+Level92=1
+Fore89=5
+Log87=true
+Level83=4
+Fore78=1
+Log76=true
+Level74=1
+Fore67=1
+Level65=1
+Log65=true
+Icon59=90
+Level56=3
+Fore56=5
+Log54=true
+Level48=2
+Icon48=70
+Fore45=5
+Log43=true
+Level39=2
+Icon37=61
+Fore34=5
+Log32=true
+Back29=100
+Icon26=48
+Fore23=6
+Log21=true
+Back18=100
+Icon15=27
+Fore12=14
+Log10=true
+Back7=100
+Level126=5
+Icon124=174
+Back121=100
+Log120=true
+Fore116=14
+Level115=2
+Icon113=206
+Back110=100
+Fore109=5
+Icon106=197
+Back103=100
+Level100=5
+Log99=true
+Level93=3
+Back90=100
+Log88=true
+Level84=4
+Fore79=1
+Log77=true
+Level75=1
+Fore68=1
+Level66=3
+Log66=true
+Level57=4
+Fore57=1
+Log55=true
+Level49=2
+Icon49=71
+Fore46=5
+Log44=true
+Icon38=34
+Fore35=5
+Log33=true
+Icon27=51
+Fore24=1
+Log22=true
+Back19=100
+Icon16=28
+Fore13=1
+Log11=true
+Back8=100
+Fore127=5
+Icon125=175
+Back122=100
+Log121=true
+Fore117=2
+Level116=1
+Icon114=136
+Back111=100
+Log110=true
+Icon107=198
+Back104=100
+Level101=5
+Level94=4
+Back91=100
+Log89=true
+Level85=1
+Back80=100
+Log78=true
+Level76=1
+Fore69=1
+Level67=3
+Log67=true
+Level58=4
+Fore58=1
+Log56=true
+Fore47=2
+Log45=true
+Icon39=62
+Fore36=5
+Log34=true
+Icon28=52
+Fore25=1
+Log23=true
+Icon17=29
+Fore14=6
+Log12=true
+Back9=100
+Log0=true
+Level127=5
+[Colors]
+Color0=255,255,255
+Color1=0,0,0
+Color2=0,0,140
+Color3=0,100,0
+Color10=0,150,180
+Color4=230,0,0
+Color11=170,170,255
+Color5=150,0,0
+Color12=15,15,255
+Color6=80,0,80
+Color13=200,0,200
+Color7=255,90,0
+Color14=80,80,80
+Color8=255,255,0
+Color15=170,170,170
+Color9=0,255,0
diff --git a/data/msgcolors/default.msgclr b/data/msgcolors/default.msgclr
new file mode 100644
index 00000000..eb68a9e2
--- /dev/null
+++ b/data/msgcolors/default.msgclr
@@ -0,0 +1,659 @@
+# KVIrc configuration file
+[Messages]
+Icon126=193
+Back123=100
+Log122=true
+Fore118=4
+Level117=3
+Icon115=133
+Back112=100
+Log111=true
+Icon108=199
+Back105=100
+Level102=5
+Log100=true
+Level95=3
+Back92=100
+Level86=4
+Back81=100
+Log79=true
+Level77=3
+Back70=100
+Level68=3
+Log68=true
+Level59=4
+Fore59=1
+Log57=true
+Fore48=1
+Log46=true
+Fore37=6
+Log35=true
+Icon29=53
+Fore26=1
+Log24=true
+Icon18=30
+Fore15=1
+Log13=true
+Log1=true
+Back124=100
+Log123=true
+Fore119=4
+Level118=5
+Icon116=137
+Back113=100
+Log112=true
+Icon109=200
+Back106=100
+Level103=5
+Log101=true
+Level96=3
+Back93=100
+Icon90=176
+Level87=3
+Back82=100
+Level78=3
+Back71=100
+Level69=3
+Log69=true
+Back60=100
+Log58=true
+Fore49=1
+Log47=true
+Fore38=4
+Log36=true
+Fore27=1
+Log25=true
+Icon19=36
+Fore16=1
+Log14=true
+Log2=true
+Level0=1
+Fore0=1
+Icon127=194
+Back125=100
+Log124=true
+Level119=5
+Icon117=132
+Back114=100
+Log113=true
+Back107=100
+Level104=5
+Log102=true
+Level97=5
+Back94=100
+Icon91=177
+Level88=1
+Back83=100
+Icon80=156
+Level79=3
+Back72=100
+Back61=100
+Log59=true
+Back50=100
+Log48=true
+Fore39=4
+Log37=true
+Fore28=1
+Log26=true
+Fore17=1
+Log15=true
+Log3=true
+Level1=1
+Fore1=0
+Back126=100
+Log125=true
+Icon118=135
+Back115=100
+Log114=true
+Back108=100
+Level105=5
+Log103=true
+Level98=5
+Back95=100
+Icon92=181
+Level89=2
+Back84=100
+Icon81=141
+Back73=100
+Icon70=105
+Back62=100
+Back51=100
+Log49=true
+Back40=100
+Log38=true
+Fore29=1
+Log27=true
+Fore18=1
+Log16=true
+Level10=4
+Log4=true
+Level2=5
+Fore2=0
+Log126=true
+Icon119=134
+Back116=100
+Log115=true
+Back109=100
+Level106=5
+Log104=true
+Level99=5
+Back96=100
+Icon93=139
+Fore90=1
+Back85=100
+Icon82=174
+Back74=100
+Icon71=110
+Back63=100
+Icon60=91
+Back52=100
+Back41=100
+Log39=true
+Back30=100
+Log28=true
+Level20=1
+Fore19=1
+Log17=true
+Level11=4
+Log5=true
+Level3=1
+Fore3=12
+Icon0=0
+Back127=100
+Back117=100
+Log116=true
+Level107=5
+Log105=true
+Back97=100
+Icon94=182
+Fore91=1
+Back86=100
+Icon83=162
+Fore80=1
+Back75=100
+Icon72=112
+Back64=100
+Icon61=92
+Back53=100
+Icon50=72
+Back42=100
+Back31=100
+Level30=4
+Log29=true
+Level21=1
+Back20=100
+Log18=true
+Level12=1
+Log6=true
+Level4=1
+Fore4=12
+Icon1=0
+Log127=true
+Back118=100
+Log117=true
+Level108=5
+Log106=true
+Fore100=1
+Back98=100
+Icon95=183
+Fore92=1
+Log90=true
+Back87=100
+Icon84=164
+Fore81=1
+Back76=100
+Icon73=120
+Fore70=1
+Back65=100
+Icon62=93
+Back54=100
+Icon51=73
+Back43=100
+Level40=2
+Icon40=35
+Back32=100
+Level31=4
+Level22=2
+Back21=100
+Log19=true
+Level13=1
+Back10=100
+Log7=true
+Level5=2
+Fore5=4
+Icon2=0
+Back119=100
+Log118=true
+Level109=5
+Log107=true
+Fore101=1
+Back99=100
+Icon96=184
+Fore93=1
+Log91=true
+Back88=100
+Icon85=165
+Fore82=1
+Log80=true
+Back77=100
+Icon74=122
+Fore71=1
+Back66=100
+Icon63=94
+Fore60=1
+Back55=100
+Icon52=75
+Back44=100
+Level41=2
+Icon41=63
+Back33=100
+Level32=3
+Icon30=54
+Level23=3
+Back22=100
+Level14=3
+Back11=100
+Log8=true
+Level6=2
+Fore6=4
+Icon3=0
+Back0=100
+Fore120=1
+Log119=true
+Log108=true
+Fore102=1
+Icon97=188
+Fore94=1
+Log92=true
+Back89=100
+Icon86=170
+Fore83=1
+Log81=true
+Back78=100
+Icon75=128
+Fore72=1
+Log70=true
+Back67=100
+Icon64=95
+Fore61=1
+Back56=100
+Icon53=77
+Level50=2
+Fore50=1
+Back45=100
+Level42=2
+Icon42=64
+Back34=100
+Level33=3
+Icon31=55
+Level24=1
+Back23=100
+Icon20=39
+Level15=1
+Back12=100
+Log9=true
+Level7=4
+Fore7=1
+Icon4=0
+Back1=1
+Fore121=1
+Level120=5
+Fore110=1
+Log109=true
+Fore103=1
+Icon100=191
+Icon98=189
+Fore95=1
+Log93=true
+Icon87=171
+Fore84=1
+Log82=true
+Back79=100
+Icon76=129
+Fore73=1
+Log71=true
+Back68=100
+Icon65=100
+Fore62=1
+Level60=4
+Log60=true
+Back57=100
+Icon54=78
+Level51=2
+Fore51=1
+Back46=100
+Level43=2
+Icon43=65
+Fore40=2
+Back35=100
+Level34=1
+Icon32=56
+Level25=3
+Back24=100
+Icon21=40
+Level16=1
+Back13=100
+Icon10=23
+Level8=1
+Fore8=1
+Icon5=11
+Back2=1
+Fore122=1
+Level121=5
+Fore111=1
+Level110=3
+Fore104=1
+Icon101=192
+Icon99=190
+Fore96=1
+Log94=true
+Icon88=173
+Fore85=1
+Log83=true
+Icon77=153
+Fore74=1
+Log72=true
+Level70=1
+Back69=100
+Icon66=101
+Fore63=1
+Level61=4
+Log61=true
+Back58=100
+Icon55=79
+Level52=4
+Fore52=1
+Log50=true
+Back47=100
+Level44=2
+Icon44=66
+Fore41=2
+Back36=100
+Level35=2
+Icon33=57
+Fore30=1
+Level26=3
+Back25=100
+Icon22=41
+Level17=1
+Back14=100
+Icon11=24
+Level9=3
+Fore9=1
+Icon6=12
+Back3=100
+Fore123=1
+Level122=5
+Icon120=242
+Fore112=1
+Level111=1
+Fore105=1
+Icon102=193
+Fore97=1
+Log95=true
+Icon89=175
+Fore86=1
+Log84=true
+Level80=3
+Icon78=154
+Fore75=1
+Log73=true
+Level71=2
+Icon67=102
+Fore64=1
+Level62=1
+Log62=true
+Back59=100
+Icon56=87
+Level53=3
+Fore53=1
+Log51=true
+Back48=100
+Level45=2
+Icon45=67
+Fore42=1
+Log40=true
+Back37=100
+Level36=2
+Icon34=58
+Fore31=1
+Level27=4
+Back26=100
+Icon23=42
+Fore20=3
+Level18=1
+Back15=100
+Icon12=25
+Icon7=13
+Back4=100
+Fore124=1
+Level123=5
+Icon121=243
+Fore113=1
+Level112=1
+Icon110=203
+Fore106=1
+Icon103=194
+Back100=100
+Fore98=1
+Log96=true
+Level90=4
+Fore87=1
+Log85=true
+Level81=3
+Icon79=155
+Fore76=1
+Log74=true
+Level72=1
+Icon68=103
+Fore65=1
+Level63=4
+Log63=true
+Icon57=88
+Level54=2
+Fore54=1
+Log52=true
+Back49=100
+Level46=2
+Icon46=68
+Fore43=1
+Log41=true
+Back38=100
+Level37=2
+Icon35=59
+Fore32=1
+Log30=true
+Level28=3
+Back27=100
+Icon24=45
+Fore21=2
+Level19=1
+Back16=100
+Icon13=14
+Fore10=4
+Icon8=21
+Back5=100
+Fore125=1
+Level124=2
+Icon122=244
+Fore114=1
+Level113=1
+Icon111=205
+Fore107=1
+Icon104=195
+Back101=100
+Fore99=1
+Log97=true
+Level91=2
+Fore88=1
+Log86=true
+Level82=2
+Fore77=1
+Log75=true
+Level73=3
+Icon69=104
+Fore66=1
+Level64=4
+Log64=true
+Icon58=89
+Level55=4
+Fore55=1
+Log53=true
+Level47=2
+Icon47=69
+Fore44=1
+Log42=true
+Back39=100
+Level38=2
+Icon36=60
+Fore33=1
+Log31=true
+Level29=3
+Back28=100
+Icon25=46
+Fore22=1
+Log20=true
+Back17=100
+Icon14=26
+Fore11=4
+Icon9=22
+Back6=100
+Fore126=1
+Level125=2
+Icon123=245
+Back120=100
+Fore115=1
+Level114=3
+Icon112=229
+Fore108=1
+Icon105=196
+Back102=100
+Log98=true
+Level92=1
+Fore89=1
+Log87=true
+Level83=4
+Fore78=1
+Log76=true
+Level74=1
+Fore67=1
+Level65=1
+Log65=true
+Icon59=90
+Level56=3
+Fore56=1
+Log54=true
+Level48=2
+Icon48=70
+Fore45=1
+Log43=true
+Level39=2
+Icon37=61
+Fore34=5
+Log32=true
+Back29=100
+Icon26=48
+Fore23=1
+Log21=true
+Back18=100
+Icon15=27
+Fore12=1
+Log10=true
+Back7=100
+Level126=5
+Icon124=174
+Back121=100
+Log120=true
+Fore116=1
+Level115=2
+Icon113=206
+Back110=100
+Fore109=1
+Icon106=197
+Back103=100
+Level100=5
+Log99=true
+Level93=3
+Back90=100
+Log88=true
+Level84=4
+Fore79=1
+Log77=true
+Level75=1
+Fore68=1
+Level66=3
+Log66=true
+Level57=4
+Fore57=1
+Log55=true
+Level49=2
+Icon49=71
+Fore46=1
+Log44=true
+Icon38=34
+Fore35=1
+Log33=true
+Icon27=51
+Fore24=1
+Log22=true
+Back19=100
+Icon16=28
+Fore13=1
+Log11=true
+Back8=100
+Fore127=1
+Icon125=175
+Back122=100
+Log121=true
+Fore117=1
+Level116=1
+Icon114=136
+Back111=100
+Log110=true
+Icon107=198
+Back104=100
+Level101=5
+Level94=4
+Back91=100
+Log89=true
+Level85=1
+Back80=100
+Log78=true
+Level76=1
+Fore69=1
+Level67=3
+Log67=true
+Level58=4
+Fore58=1
+Log56=true
+Fore47=1
+Log45=true
+Icon39=62
+Fore36=1
+Log34=true
+Icon28=52
+Fore25=1
+Log23=true
+Icon17=29
+Fore14=1
+Log12=true
+Back9=100
+Log0=true
+Level127=5
+[Colors]
+Color0=255,255,255
+Color1=0,0,0
+Color2=0,0,140
+Color3=0,100,0
+Color10=0,150,180
+Color4=230,0,0
+Color11=170,170,255
+Color5=150,0,0
+Color12=15,15,255
+Color6=80,0,80
+Color13=200,0,200
+Color7=255,90,0
+Color14=80,80,80
+Color8=255,255,0
+Color15=170,170,170
+Color9=0,255,0
diff --git a/data/msgcolors/heavy-colors.msgclr b/data/msgcolors/heavy-colors.msgclr
new file mode 100644
index 00000000..e254a828
--- /dev/null
+++ b/data/msgcolors/heavy-colors.msgclr
@@ -0,0 +1,659 @@
+# KVIrc configuration file
+[Messages]
+Icon126=193
+Back123=5
+Log122=true
+Fore118=5
+Level117=3
+Icon115=133
+Back112=100
+Log111=true
+Icon108=199
+Back105=4
+Level102=5
+Log100=true
+Level95=3
+Back92=100
+Level86=4
+Back81=100
+Log79=true
+Level77=3
+Back70=100
+Level68=3
+Log68=true
+Level59=4
+Fore59=1
+Log57=true
+Fore48=2
+Log46=true
+Fore37=6
+Log35=true
+Icon29=53
+Fore26=1
+Log24=true
+Icon18=30
+Fore15=1
+Log13=true
+Log1=true
+Back124=100
+Log123=true
+Fore119=5
+Level118=5
+Icon116=137
+Back113=100
+Log112=true
+Icon109=200
+Back106=5
+Level103=5
+Log101=true
+Level96=3
+Back93=100
+Icon90=176
+Level87=3
+Back82=100
+Level78=3
+Back71=100
+Level69=3
+Log69=true
+Back60=100
+Log58=true
+Fore49=2
+Log47=true
+Fore38=5
+Log36=true
+Fore27=2
+Log25=true
+Icon19=36
+Fore16=14
+Log14=true
+Log2=true
+Level0=1
+Fore0=1
+Icon127=194
+Back125=100
+Log124=true
+Level119=5
+Icon117=132
+Back114=100
+Log113=true
+Back107=5
+Level104=5
+Log102=true
+Level97=5
+Back94=100
+Icon91=177
+Level88=1
+Back83=100
+Icon80=156
+Level79=3
+Back72=100
+Back61=100
+Log59=true
+Back50=100
+Log48=true
+Fore39=5
+Log37=true
+Fore28=2
+Log26=true
+Fore17=2
+Log15=true
+Log3=true
+Level1=1
+Fore1=0
+Back126=100
+Log125=true
+Icon118=135
+Back115=100
+Log114=true
+Back108=5
+Level105=5
+Log103=true
+Level98=5
+Back95=100
+Icon92=181
+Level89=2
+Back84=100
+Icon81=141
+Back73=100
+Icon70=105
+Back62=100
+Back51=100
+Log49=true
+Back40=100
+Log38=true
+Fore29=2
+Log27=true
+Fore18=2
+Log16=true
+Level10=4
+Log4=true
+Level2=5
+Fore2=0
+Log126=true
+Icon119=134
+Back116=100
+Log115=true
+Back109=5
+Level106=5
+Log104=true
+Level99=5
+Back96=100
+Icon93=139
+Fore90=1
+Back85=100
+Icon82=174
+Back74=100
+Icon71=110
+Back63=3
+Icon60=91
+Back52=100
+Back41=100
+Log39=true
+Back30=100
+Log28=true
+Level20=1
+Fore19=14
+Log17=true
+Level11=4
+Log5=true
+Level3=1
+Fore3=1
+Icon0=0
+Back127=100
+Back117=100
+Log116=true
+Level107=5
+Log105=true
+Back97=4
+Icon94=182
+Fore91=1
+Back86=100
+Icon83=162
+Fore80=1
+Back75=100
+Icon72=112
+Back64=3
+Icon61=92
+Back53=100
+Icon50=72
+Back42=100
+Back31=100
+Level30=4
+Log29=true
+Level21=1
+Back20=100
+Log18=true
+Level12=1
+Log6=true
+Level4=1
+Fore4=1
+Icon1=0
+Log127=true
+Back118=100
+Log117=true
+Level108=5
+Log106=true
+Fore100=8
+Back98=4
+Icon95=183
+Fore92=14
+Log90=true
+Back87=100
+Icon84=164
+Fore81=2
+Back76=100
+Icon73=120
+Fore70=1
+Back65=100
+Icon62=93
+Back54=100
+Icon51=73
+Back43=100
+Level40=2
+Icon40=35
+Back32=100
+Level31=4
+Level22=2
+Back21=100
+Log19=true
+Level13=1
+Back10=100
+Log7=true
+Level5=2
+Fore5=5
+Icon2=0
+Back119=100
+Log118=true
+Level109=5
+Log107=true
+Fore101=0
+Back99=5
+Icon96=184
+Fore93=5
+Log91=true
+Back88=100
+Icon85=165
+Fore82=5
+Log80=true
+Back77=100
+Icon74=122
+Fore71=5
+Back66=100
+Icon63=94
+Fore60=1
+Back55=100
+Icon52=75
+Back44=100
+Level41=2
+Icon41=63
+Back33=100
+Level32=3
+Icon30=54
+Level23=3
+Back22=100
+Level14=3
+Back11=100
+Log8=true
+Level6=2
+Fore6=4
+Icon3=0
+Back0=100
+Fore120=5
+Log119=true
+Log108=true
+Fore102=0
+Icon97=188
+Fore94=5
+Log92=true
+Back89=100
+Icon86=170
+Fore83=5
+Log81=true
+Back78=100
+Icon75=128
+Fore72=1
+Log70=true
+Back67=100
+Icon64=95
+Fore61=1
+Back56=100
+Icon53=77
+Level50=2
+Fore50=2
+Back45=100
+Level42=2
+Icon42=64
+Back34=100
+Level33=3
+Icon31=55
+Level24=1
+Back23=100
+Icon20=39
+Level15=1
+Back12=100
+Log9=true
+Level7=4
+Fore7=1
+Icon4=0
+Back1=1
+Fore121=5
+Level120=5
+Fore110=5
+Log109=true
+Fore103=0
+Icon100=191
+Icon98=189
+Fore95=2
+Log93=true
+Icon87=171
+Fore84=2
+Log82=true
+Back79=100
+Icon76=129
+Fore73=5
+Log71=true
+Back68=100
+Icon65=100
+Fore62=2
+Level60=4
+Log60=true
+Back57=100
+Icon54=78
+Level51=2
+Fore51=2
+Back46=100
+Level43=2
+Icon43=65
+Fore40=2
+Back35=100
+Level34=1
+Icon32=56
+Level25=3
+Back24=100
+Icon21=40
+Level16=1
+Back13=100
+Icon10=23
+Level8=1
+Fore8=1
+Icon5=11
+Back2=1
+Fore122=8
+Level121=5
+Fore111=2
+Level110=3
+Fore104=1
+Icon101=192
+Icon99=190
+Fore96=2
+Log94=true
+Icon88=173
+Fore85=2
+Log83=true
+Icon77=153
+Fore74=1
+Log72=true
+Level70=1
+Back69=100
+Icon66=101
+Fore63=0
+Level61=4
+Log61=true
+Back58=100
+Icon55=79
+Level52=4
+Fore52=1
+Log50=true
+Back47=100
+Level44=2
+Icon44=66
+Fore41=2
+Back36=100
+Level35=2
+Icon33=57
+Fore30=5
+Level26=3
+Back25=100
+Icon22=41
+Level17=1
+Back14=100
+Icon11=24
+Level9=3
+Fore9=6
+Icon6=12
+Back3=100
+Fore123=8
+Level122=5
+Icon120=242
+Fore112=2
+Level111=1
+Fore105=1
+Icon102=193
+Fore97=0
+Log95=true
+Icon89=175
+Fore86=1
+Log84=true
+Level80=3
+Icon78=154
+Fore75=1
+Log73=true
+Level71=2
+Icon67=102
+Fore64=0
+Level62=1
+Log62=true
+Back59=100
+Icon56=87
+Level53=3
+Fore53=6
+Log51=true
+Back48=100
+Level45=2
+Icon45=67
+Fore42=2
+Log40=true
+Back37=100
+Level36=2
+Icon34=58
+Fore31=5
+Level27=4
+Back26=100
+Icon23=42
+Fore20=3
+Level18=1
+Back15=100
+Icon12=25
+Icon7=13
+Back4=100
+Fore124=5
+Level123=5
+Icon121=243
+Fore113=2
+Level112=1
+Icon110=203
+Fore106=9
+Icon103=194
+Back100=4
+Fore98=8
+Log96=true
+Level90=4
+Fore87=14
+Log85=true
+Level81=3
+Icon79=155
+Fore76=1
+Log74=true
+Level72=1
+Icon68=103
+Fore65=1
+Level63=4
+Log63=true
+Icon57=88
+Level54=2
+Fore54=6
+Log52=true
+Back49=100
+Level46=2
+Icon46=68
+Fore43=2
+Log41=true
+Back38=100
+Level37=2
+Icon35=59
+Fore32=6
+Log30=true
+Level28=3
+Back27=100
+Icon24=45
+Fore21=2
+Level19=1
+Back16=100
+Icon13=14
+Fore10=5
+Icon8=21
+Back5=100
+Fore125=5
+Level124=2
+Icon122=244
+Fore114=3
+Level113=1
+Icon111=205
+Fore107=9
+Icon104=195
+Back101=5
+Fore99=0
+Log97=true
+Level91=2
+Fore88=1
+Log86=true
+Level82=2
+Fore77=1
+Log75=true
+Level73=3
+Icon69=104
+Fore66=1
+Level64=4
+Log64=true
+Icon58=89
+Level55=4
+Fore55=5
+Log53=true
+Level47=2
+Icon47=69
+Fore44=2
+Log42=true
+Back39=100
+Level38=2
+Icon36=60
+Fore33=6
+Log31=true
+Level29=3
+Back28=100
+Icon25=46
+Fore22=5
+Log20=true
+Back17=100
+Icon14=26
+Fore11=5
+Icon9=22
+Back6=100
+Fore126=5
+Level125=2
+Icon123=245
+Back120=100
+Fore115=14
+Level114=3
+Icon112=229
+Fore108=7
+Icon105=196
+Back102=5
+Log98=true
+Level92=1
+Fore89=5
+Log87=true
+Level83=4
+Fore78=1
+Log76=true
+Level74=1
+Fore67=1
+Level65=1
+Log65=true
+Icon59=90
+Level56=3
+Fore56=5
+Log54=true
+Level48=2
+Icon48=70
+Fore45=5
+Log43=true
+Level39=2
+Icon37=61
+Fore34=5
+Log32=true
+Back29=100
+Icon26=48
+Fore23=6
+Log21=true
+Back18=100
+Icon15=27
+Fore12=14
+Log10=true
+Back7=100
+Level126=5
+Icon124=174
+Back121=100
+Log120=true
+Fore116=14
+Level115=2
+Icon113=206
+Back110=100
+Fore109=7
+Icon106=197
+Back103=5
+Level100=5
+Log99=true
+Level93=3
+Back90=100
+Log88=true
+Level84=4
+Fore79=1
+Log77=true
+Level75=1
+Fore68=1
+Level66=3
+Log66=true
+Level57=4
+Fore57=1
+Log55=true
+Level49=2
+Icon49=71
+Fore46=5
+Log44=true
+Icon38=34
+Fore35=5
+Log33=true
+Icon27=51
+Fore24=1
+Log22=true
+Back19=100
+Icon16=28
+Fore13=1
+Log11=true
+Back8=100
+Fore127=5
+Icon125=175
+Back122=5
+Log121=true
+Fore117=2
+Level116=1
+Icon114=136
+Back111=100
+Log110=true
+Icon107=198
+Back104=4
+Level101=5
+Level94=4
+Back91=100
+Log89=true
+Level85=1
+Back80=100
+Log78=true
+Level76=1
+Fore69=1
+Level67=3
+Log67=true
+Level58=4
+Fore58=1
+Log56=true
+Fore47=2
+Log45=true
+Icon39=62
+Fore36=5
+Log34=true
+Icon28=52
+Fore25=1
+Log23=true
+Icon17=29
+Fore14=6
+Log12=true
+Back9=100
+Log0=true
+Level127=5
+[Colors]
+Color0=255,255,255
+Color1=0,0,0
+Color2=0,0,140
+Color3=0,100,0
+Color10=0,150,180
+Color4=230,0,0
+Color11=170,170,255
+Color5=150,0,0
+Color12=15,15,255
+Color6=80,0,80
+Color13=200,0,200
+Color7=255,90,0
+Color14=80,80,80
+Color8=255,255,0
+Color15=170,170,170
+Color9=0,255,0
diff --git a/data/pics/Makefile.am b/data/pics/Makefile.am
new file mode 100644
index 00000000..5927c12c
--- /dev/null
+++ b/data/pics/Makefile.am
@@ -0,0 +1,8 @@
+tmpdir = $(picsdir)
+
+tmp_DATA = *.png
+
+EXTRA_DIST = $(tmp_DATA)
+
+SUBDIRS = coresmall
+
diff --git a/data/pics/coresmall/Makefile.am b/data/pics/coresmall/Makefile.am
new file mode 100644
index 00000000..747abac3
--- /dev/null
+++ b/data/pics/coresmall/Makefile.am
@@ -0,0 +1,8 @@
+tmpdir = $(picsdir)/coresmall
+
+tmp_DATA = *.png
+
+
+EXTRA_DIST = $(tmp_DATA)
+
+
diff --git a/data/pics/coresmall/kcs_accept.png b/data/pics/coresmall/kcs_accept.png
new file mode 100644
index 00000000..f158dd44
--- /dev/null
+++ b/data/pics/coresmall/kcs_accept.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_action.png b/data/pics/coresmall/kcs_action.png
new file mode 100644
index 00000000..4ef5b1ce
--- /dev/null
+++ b/data/pics/coresmall/kcs_action.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_addons.png b/data/pics/coresmall/kcs_addons.png
new file mode 100644
index 00000000..a766782d
--- /dev/null
+++ b/data/pics/coresmall/kcs_addons.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_afraid.png b/data/pics/coresmall/kcs_afraid.png
new file mode 100644
index 00000000..cd13058a
--- /dev/null
+++ b/data/pics/coresmall/kcs_afraid.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_alert.png b/data/pics/coresmall/kcs_alert.png
new file mode 100644
index 00000000..373fa126
--- /dev/null
+++ b/data/pics/coresmall/kcs_alert.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_alias.png b/data/pics/coresmall/kcs_alias.png
new file mode 100644
index 00000000..e8490da9
--- /dev/null
+++ b/data/pics/coresmall/kcs_alias.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_aliashighlighted.png b/data/pics/coresmall/kcs_aliashighlighted.png
new file mode 100644
index 00000000..4dedc076
--- /dev/null
+++ b/data/pics/coresmall/kcs_aliashighlighted.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_angry.png b/data/pics/coresmall/kcs_angry.png
new file mode 100644
index 00000000..8ae89330
--- /dev/null
+++ b/data/pics/coresmall/kcs_angry.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_applet.png b/data/pics/coresmall/kcs_applet.png
new file mode 100644
index 00000000..9a1d7c48
--- /dev/null
+++ b/data/pics/coresmall/kcs_applet.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_autotilewindows.png b/data/pics/coresmall/kcs_autotilewindows.png
new file mode 100644
index 00000000..3a04bd0d
--- /dev/null
+++ b/data/pics/coresmall/kcs_autotilewindows.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_avatar.png b/data/pics/coresmall/kcs_avatar.png
new file mode 100644
index 00000000..9730b3bb
--- /dev/null
+++ b/data/pics/coresmall/kcs_avatar.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_away.png b/data/pics/coresmall/kcs_away.png
new file mode 100644
index 00000000..c626d654
--- /dev/null
+++ b/data/pics/coresmall/kcs_away.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ban.png b/data/pics/coresmall/kcs_ban.png
new file mode 100644
index 00000000..b605f0fa
--- /dev/null
+++ b/data/pics/coresmall/kcs_ban.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_banexcept.png b/data/pics/coresmall/kcs_banexcept.png
new file mode 100644
index 00000000..031767d8
--- /dev/null
+++ b/data/pics/coresmall/kcs_banexcept.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_banunexcept.png b/data/pics/coresmall/kcs_banunexcept.png
new file mode 100644
index 00000000..8171619a
--- /dev/null
+++ b/data/pics/coresmall/kcs_banunexcept.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_biggrin.png b/data/pics/coresmall/kcs_biggrin.png
new file mode 100644
index 00000000..3a391d9c
--- /dev/null
+++ b/data/pics/coresmall/kcs_biggrin.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_biggrineyes.png b/data/pics/coresmall/kcs_biggrineyes.png
new file mode 100644
index 00000000..740a5841
--- /dev/null
+++ b/data/pics/coresmall/kcs_biggrineyes.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_biggringlasses.png b/data/pics/coresmall/kcs_biggringlasses.png
new file mode 100644
index 00000000..864c1229
--- /dev/null
+++ b/data/pics/coresmall/kcs_biggringlasses.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_binarytext.png b/data/pics/coresmall/kcs_binarytext.png
new file mode 100644
index 00000000..1764b390
--- /dev/null
+++ b/data/pics/coresmall/kcs_binarytext.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_blacksquare.png b/data/pics/coresmall/kcs_blacksquare.png
new file mode 100644
index 00000000..60100e53
--- /dev/null
+++ b/data/pics/coresmall/kcs_blacksquare.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_bluesquare.png b/data/pics/coresmall/kcs_bluesquare.png
new file mode 100644
index 00000000..cf889741
--- /dev/null
+++ b/data/pics/coresmall/kcs_bluesquare.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_bomb.png b/data/pics/coresmall/kcs_bomb.png
new file mode 100644
index 00000000..f1271fff
--- /dev/null
+++ b/data/pics/coresmall/kcs_bomb.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_bookmarks.png b/data/pics/coresmall/kcs_bookmarks.png
new file mode 100644
index 00000000..65a97c91
--- /dev/null
+++ b/data/pics/coresmall/kcs_bookmarks.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_broadcastnotice.png b/data/pics/coresmall/kcs_broadcastnotice.png
new file mode 100644
index 00000000..27f624c9
--- /dev/null
+++ b/data/pics/coresmall/kcs_broadcastnotice.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_broadcastprivmsg.png b/data/pics/coresmall/kcs_broadcastprivmsg.png
new file mode 100644
index 00000000..83df7a85
--- /dev/null
+++ b/data/pics/coresmall/kcs_broadcastprivmsg.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_bug.png b/data/pics/coresmall/kcs_bug.png
new file mode 100644
index 00000000..fa10e757
--- /dev/null
+++ b/data/pics/coresmall/kcs_bug.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_cafe.png b/data/pics/coresmall/kcs_cafe.png
new file mode 100644
index 00000000..32b9cda5
--- /dev/null
+++ b/data/pics/coresmall/kcs_cafe.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_canvas.png b/data/pics/coresmall/kcs_canvas.png
new file mode 100644
index 00000000..af230e23
--- /dev/null
+++ b/data/pics/coresmall/kcs_canvas.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_caption.png b/data/pics/coresmall/kcs_caption.png
new file mode 100644
index 00000000..8480ab52
--- /dev/null
+++ b/data/pics/coresmall/kcs_caption.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_cascadewindows.png b/data/pics/coresmall/kcs_cascadewindows.png
new file mode 100644
index 00000000..278c9ec8
--- /dev/null
+++ b/data/pics/coresmall/kcs_cascadewindows.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_chanadmin.png b/data/pics/coresmall/kcs_chanadmin.png
new file mode 100644
index 00000000..4d5d0dfb
--- /dev/null
+++ b/data/pics/coresmall/kcs_chanadmin.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_chanadminaway.png b/data/pics/coresmall/kcs_chanadminaway.png
new file mode 100644
index 00000000..5df27a09
--- /dev/null
+++ b/data/pics/coresmall/kcs_chanadminaway.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_chanmode.png b/data/pics/coresmall/kcs_chanmode.png
new file mode 100644
index 00000000..f40ad9a1
--- /dev/null
+++ b/data/pics/coresmall/kcs_chanmode.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_chanmodehide.png b/data/pics/coresmall/kcs_chanmodehide.png
new file mode 100644
index 00000000..70cd9fd3
--- /dev/null
+++ b/data/pics/coresmall/kcs_chanmodehide.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_channel.png b/data/pics/coresmall/kcs_channel.png
new file mode 100644
index 00000000..0830fefa
--- /dev/null
+++ b/data/pics/coresmall/kcs_channel.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_channelnotice.png b/data/pics/coresmall/kcs_channelnotice.png
new file mode 100644
index 00000000..9babfb84
--- /dev/null
+++ b/data/pics/coresmall/kcs_channelnotice.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_channelnoticecrypted.png b/data/pics/coresmall/kcs_channelnoticecrypted.png
new file mode 100644
index 00000000..70428182
--- /dev/null
+++ b/data/pics/coresmall/kcs_channelnoticecrypted.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_chanowner.png b/data/pics/coresmall/kcs_chanowner.png
new file mode 100644
index 00000000..cfa3d8f8
--- /dev/null
+++ b/data/pics/coresmall/kcs_chanowner.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_chanowneraway.png b/data/pics/coresmall/kcs_chanowneraway.png
new file mode 100644
index 00000000..3a3dec5d
--- /dev/null
+++ b/data/pics/coresmall/kcs_chanowneraway.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_chanprivmsg.png b/data/pics/coresmall/kcs_chanprivmsg.png
new file mode 100644
index 00000000..9babfb84
--- /dev/null
+++ b/data/pics/coresmall/kcs_chanprivmsg.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_chanprivmsgcrypted.png b/data/pics/coresmall/kcs_chanprivmsgcrypted.png
new file mode 100644
index 00000000..c1be8564
--- /dev/null
+++ b/data/pics/coresmall/kcs_chanprivmsgcrypted.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_chanserv.png b/data/pics/coresmall/kcs_chanserv.png
new file mode 100644
index 00000000..0127b531
--- /dev/null
+++ b/data/pics/coresmall/kcs_chanserv.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_chanunadmin.png b/data/pics/coresmall/kcs_chanunadmin.png
new file mode 100644
index 00000000..dd96fc90
--- /dev/null
+++ b/data/pics/coresmall/kcs_chanunadmin.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_chanunowner.png b/data/pics/coresmall/kcs_chanunowner.png
new file mode 100644
index 00000000..a951d337
--- /dev/null
+++ b/data/pics/coresmall/kcs_chanunowner.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_classictaskbar.png b/data/pics/coresmall/kcs_classictaskbar.png
new file mode 100644
index 00000000..6febd1f3
--- /dev/null
+++ b/data/pics/coresmall/kcs_classictaskbar.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_close.png b/data/pics/coresmall/kcs_close.png
new file mode 100644
index 00000000..08c1ba90
--- /dev/null
+++ b/data/pics/coresmall/kcs_close.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_colors.png b/data/pics/coresmall/kcs_colors.png
new file mode 100644
index 00000000..38ae30f4
--- /dev/null
+++ b/data/pics/coresmall/kcs_colors.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_console.png b/data/pics/coresmall/kcs_console.png
new file mode 100644
index 00000000..a73336dc
--- /dev/null
+++ b/data/pics/coresmall/kcs_console.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_copy.png b/data/pics/coresmall/kcs_copy.png
new file mode 100644
index 00000000..9fcf0ead
--- /dev/null
+++ b/data/pics/coresmall/kcs_copy.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_cry.png b/data/pics/coresmall/kcs_cry.png
new file mode 100644
index 00000000..058a8b84
--- /dev/null
+++ b/data/pics/coresmall/kcs_cry.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ctcpreply.png b/data/pics/coresmall/kcs_ctcpreply.png
new file mode 100644
index 00000000..b1744ae9
--- /dev/null
+++ b/data/pics/coresmall/kcs_ctcpreply.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ctcpreplyunknown.png b/data/pics/coresmall/kcs_ctcpreplyunknown.png
new file mode 100644
index 00000000..d9c4ef42
--- /dev/null
+++ b/data/pics/coresmall/kcs_ctcpreplyunknown.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ctcprequestflood.png b/data/pics/coresmall/kcs_ctcprequestflood.png
new file mode 100644
index 00000000..5bb5fb83
--- /dev/null
+++ b/data/pics/coresmall/kcs_ctcprequestflood.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ctcprequestignored.png b/data/pics/coresmall/kcs_ctcprequestignored.png
new file mode 100644
index 00000000..d9c4ef42
--- /dev/null
+++ b/data/pics/coresmall/kcs_ctcprequestignored.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ctcprequestreplied.png b/data/pics/coresmall/kcs_ctcprequestreplied.png
new file mode 100644
index 00000000..bf663922
--- /dev/null
+++ b/data/pics/coresmall/kcs_ctcprequestreplied.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ctcprequestunknown.png b/data/pics/coresmall/kcs_ctcprequestunknown.png
new file mode 100644
index 00000000..3834ca1e
--- /dev/null
+++ b/data/pics/coresmall/kcs_ctcprequestunknown.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_cut.png b/data/pics/coresmall/kcs_cut.png
new file mode 100644
index 00000000..cef0c8ff
--- /dev/null
+++ b/data/pics/coresmall/kcs_cut.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_cyansquare.png b/data/pics/coresmall/kcs_cyansquare.png
new file mode 100644
index 00000000..d712a010
--- /dev/null
+++ b/data/pics/coresmall/kcs_cyansquare.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_dccchatmsg.png b/data/pics/coresmall/kcs_dccchatmsg.png
new file mode 100644
index 00000000..f1603ca6
--- /dev/null
+++ b/data/pics/coresmall/kcs_dccchatmsg.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_dccchatmsgcrypted.png b/data/pics/coresmall/kcs_dccchatmsgcrypted.png
new file mode 100644
index 00000000..a2ec7e8e
--- /dev/null
+++ b/data/pics/coresmall/kcs_dccchatmsgcrypted.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_dccerror.png b/data/pics/coresmall/kcs_dccerror.png
new file mode 100644
index 00000000..84f35cc9
--- /dev/null
+++ b/data/pics/coresmall/kcs_dccerror.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_dccmsg.png b/data/pics/coresmall/kcs_dccmsg.png
new file mode 100644
index 00000000..98366859
--- /dev/null
+++ b/data/pics/coresmall/kcs_dccmsg.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_dccrequest.png b/data/pics/coresmall/kcs_dccrequest.png
new file mode 100644
index 00000000..0b6a19e4
--- /dev/null
+++ b/data/pics/coresmall/kcs_dccrequest.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_dccvoice.png b/data/pics/coresmall/kcs_dccvoice.png
new file mode 100644
index 00000000..0b035986
--- /dev/null
+++ b/data/pics/coresmall/kcs_dccvoice.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_deadchannel.png b/data/pics/coresmall/kcs_deadchannel.png
new file mode 100644
index 00000000..9fc60374
--- /dev/null
+++ b/data/pics/coresmall/kcs_deadchannel.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_deadquery.png b/data/pics/coresmall/kcs_deadquery.png
new file mode 100644
index 00000000..a4d6986b
--- /dev/null
+++ b/data/pics/coresmall/kcs_deadquery.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_default.png b/data/pics/coresmall/kcs_default.png
new file mode 100644
index 00000000..c5bc0499
--- /dev/null
+++ b/data/pics/coresmall/kcs_default.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_deleteitem.png b/data/pics/coresmall/kcs_deleteitem.png
new file mode 100644
index 00000000..e57deba6
--- /dev/null
+++ b/data/pics/coresmall/kcs_deleteitem.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_demoralized.png b/data/pics/coresmall/kcs_demoralized.png
new file mode 100644
index 00000000..c919e68b
--- /dev/null
+++ b/data/pics/coresmall/kcs_demoralized.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_deop.png b/data/pics/coresmall/kcs_deop.png
new file mode 100644
index 00000000..c947c6ae
--- /dev/null
+++ b/data/pics/coresmall/kcs_deop.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_deuserop.png b/data/pics/coresmall/kcs_deuserop.png
new file mode 100644
index 00000000..76f45939
--- /dev/null
+++ b/data/pics/coresmall/kcs_deuserop.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_devoice.png b/data/pics/coresmall/kcs_devoice.png
new file mode 100644
index 00000000..1b49a51d
--- /dev/null
+++ b/data/pics/coresmall/kcs_devoice.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_discard.png b/data/pics/coresmall/kcs_discard.png
new file mode 100644
index 00000000..464a2cc7
--- /dev/null
+++ b/data/pics/coresmall/kcs_discard.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_dkgreensquare.png b/data/pics/coresmall/kcs_dkgreensquare.png
new file mode 100644
index 00000000..4d4171a0
--- /dev/null
+++ b/data/pics/coresmall/kcs_dkgreensquare.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_dock.png b/data/pics/coresmall/kcs_dock.png
new file mode 100644
index 00000000..d099b179
--- /dev/null
+++ b/data/pics/coresmall/kcs_dock.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_dockwidget.png b/data/pics/coresmall/kcs_dockwidget.png
new file mode 100644
index 00000000..f21d5c1a
--- /dev/null
+++ b/data/pics/coresmall/kcs_dockwidget.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_edititem.png b/data/pics/coresmall/kcs_edititem.png
new file mode 100644
index 00000000..cfe763f4
--- /dev/null
+++ b/data/pics/coresmall/kcs_edititem.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_editor.png b/data/pics/coresmall/kcs_editor.png
new file mode 100644
index 00000000..0be654d2
--- /dev/null
+++ b/data/pics/coresmall/kcs_editor.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_epilogue.png b/data/pics/coresmall/kcs_epilogue.png
new file mode 100644
index 00000000..91dd5f62
--- /dev/null
+++ b/data/pics/coresmall/kcs_epilogue.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_event.png b/data/pics/coresmall/kcs_event.png
new file mode 100644
index 00000000..37bd65d5
--- /dev/null
+++ b/data/pics/coresmall/kcs_event.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_eventnohandlers.png b/data/pics/coresmall/kcs_eventnohandlers.png
new file mode 100644
index 00000000..aa0414e1
--- /dev/null
+++ b/data/pics/coresmall/kcs_eventnohandlers.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_eye.png b/data/pics/coresmall/kcs_eye.png
new file mode 100644
index 00000000..ecc23ccc
--- /dev/null
+++ b/data/pics/coresmall/kcs_eye.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_file.png b/data/pics/coresmall/kcs_file.png
new file mode 100644
index 00000000..77762e4e
--- /dev/null
+++ b/data/pics/coresmall/kcs_file.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_files.png b/data/pics/coresmall/kcs_files.png
new file mode 100644
index 00000000..949ce75f
--- /dev/null
+++ b/data/pics/coresmall/kcs_files.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_filetransfer.png b/data/pics/coresmall/kcs_filetransfer.png
new file mode 100644
index 00000000..6ee4273b
--- /dev/null
+++ b/data/pics/coresmall/kcs_filetransfer.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_finger.png b/data/pics/coresmall/kcs_finger.png
new file mode 100644
index 00000000..e5ad147b
--- /dev/null
+++ b/data/pics/coresmall/kcs_finger.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_floppy.png b/data/pics/coresmall/kcs_floppy.png
new file mode 100644
index 00000000..2a7b2a16
--- /dev/null
+++ b/data/pics/coresmall/kcs_floppy.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_folder.png b/data/pics/coresmall/kcs_folder.png
new file mode 100644
index 00000000..fd3969ed
--- /dev/null
+++ b/data/pics/coresmall/kcs_folder.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_gnutella.png b/data/pics/coresmall/kcs_gnutella.png
new file mode 100644
index 00000000..f17f7ae7
--- /dev/null
+++ b/data/pics/coresmall/kcs_gnutella.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_greensquare.png b/data/pics/coresmall/kcs_greensquare.png
new file mode 100644
index 00000000..cae9322a
--- /dev/null
+++ b/data/pics/coresmall/kcs_greensquare.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_gui.png b/data/pics/coresmall/kcs_gui.png
new file mode 100644
index 00000000..7e55a948
--- /dev/null
+++ b/data/pics/coresmall/kcs_gui.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_halfdeop.png b/data/pics/coresmall/kcs_halfdeop.png
new file mode 100644
index 00000000..8fd505a2
--- /dev/null
+++ b/data/pics/coresmall/kcs_halfdeop.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_halfop.png b/data/pics/coresmall/kcs_halfop.png
new file mode 100644
index 00000000..f9edc08e
--- /dev/null
+++ b/data/pics/coresmall/kcs_halfop.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_halfopaway.png b/data/pics/coresmall/kcs_halfopaway.png
new file mode 100644
index 00000000..b81bc7d2
--- /dev/null
+++ b/data/pics/coresmall/kcs_halfopaway.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_handler.png b/data/pics/coresmall/kcs_handler.png
new file mode 100644
index 00000000..98c8aa8c
--- /dev/null
+++ b/data/pics/coresmall/kcs_handler.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_handlerdisabled.png b/data/pics/coresmall/kcs_handlerdisabled.png
new file mode 100644
index 00000000..04312aff
--- /dev/null
+++ b/data/pics/coresmall/kcs_handlerdisabled.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_heart.png b/data/pics/coresmall/kcs_heart.png
new file mode 100644
index 00000000..372cf45c
--- /dev/null
+++ b/data/pics/coresmall/kcs_heart.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_heartbroken.png b/data/pics/coresmall/kcs_heartbroken.png
new file mode 100644
index 00000000..77df9367
--- /dev/null
+++ b/data/pics/coresmall/kcs_heartbroken.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_help.png b/data/pics/coresmall/kcs_help.png
new file mode 100644
index 00000000..4066ad82
--- /dev/null
+++ b/data/pics/coresmall/kcs_help.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_hidedoubleview.png b/data/pics/coresmall/kcs_hidedoubleview.png
new file mode 100644
index 00000000..91b67d63
--- /dev/null
+++ b/data/pics/coresmall/kcs_hidedoubleview.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_hidelistview.png b/data/pics/coresmall/kcs_hidelistview.png
new file mode 100644
index 00000000..870b65a3
--- /dev/null
+++ b/data/pics/coresmall/kcs_hidelistview.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_home.png b/data/pics/coresmall/kcs_home.png
new file mode 100644
index 00000000..0d508958
--- /dev/null
+++ b/data/pics/coresmall/kcs_home.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_homepage.png b/data/pics/coresmall/kcs_homepage.png
new file mode 100644
index 00000000..e1a3aa1b
--- /dev/null
+++ b/data/pics/coresmall/kcs_homepage.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_iconmanager.png b/data/pics/coresmall/kcs_iconmanager.png
new file mode 100644
index 00000000..d0ad4d08
--- /dev/null
+++ b/data/pics/coresmall/kcs_iconmanager.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_icq.png b/data/pics/coresmall/kcs_icq.png
new file mode 100644
index 00000000..b8f1be4f
--- /dev/null
+++ b/data/pics/coresmall/kcs_icq.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_icqblue.png b/data/pics/coresmall/kcs_icqblue.png
new file mode 100644
index 00000000..192f7943
--- /dev/null
+++ b/data/pics/coresmall/kcs_icqblue.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_icqlightgreen.png b/data/pics/coresmall/kcs_icqlightgreen.png
new file mode 100644
index 00000000..3ebb39ef
--- /dev/null
+++ b/data/pics/coresmall/kcs_icqlightgreen.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_icqlightyellow.png b/data/pics/coresmall/kcs_icqlightyellow.png
new file mode 100644
index 00000000..f920c21d
--- /dev/null
+++ b/data/pics/coresmall/kcs_icqlightyellow.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_icqred.png b/data/pics/coresmall/kcs_icqred.png
new file mode 100644
index 00000000..0953fb9b
--- /dev/null
+++ b/data/pics/coresmall/kcs_icqred.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_icqyellow.png b/data/pics/coresmall/kcs_icqyellow.png
new file mode 100644
index 00000000..27e57432
--- /dev/null
+++ b/data/pics/coresmall/kcs_icqyellow.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_idea.png b/data/pics/coresmall/kcs_idea.png
new file mode 100644
index 00000000..7fe9a331
--- /dev/null
+++ b/data/pics/coresmall/kcs_idea.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ident.png b/data/pics/coresmall/kcs_ident.png
new file mode 100644
index 00000000..996d8afc
--- /dev/null
+++ b/data/pics/coresmall/kcs_ident.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ignore.png b/data/pics/coresmall/kcs_ignore.png
new file mode 100644
index 00000000..5a0343cd
--- /dev/null
+++ b/data/pics/coresmall/kcs_ignore.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_input.png b/data/pics/coresmall/kcs_input.png
new file mode 100644
index 00000000..1a239d52
--- /dev/null
+++ b/data/pics/coresmall/kcs_input.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_invisible.png b/data/pics/coresmall/kcs_invisible.png
new file mode 100644
index 00000000..4bd9df75
--- /dev/null
+++ b/data/pics/coresmall/kcs_invisible.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_invite.png b/data/pics/coresmall/kcs_invite.png
new file mode 100644
index 00000000..4854e619
--- /dev/null
+++ b/data/pics/coresmall/kcs_invite.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_inviteexcept.png b/data/pics/coresmall/kcs_inviteexcept.png
new file mode 100644
index 00000000..49ac916e
--- /dev/null
+++ b/data/pics/coresmall/kcs_inviteexcept.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_inviteunexcept.png b/data/pics/coresmall/kcs_inviteunexcept.png
new file mode 100644
index 00000000..81698109
--- /dev/null
+++ b/data/pics/coresmall/kcs_inviteunexcept.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_irc.png b/data/pics/coresmall/kcs_irc.png
new file mode 100644
index 00000000..4ae8a9f6
--- /dev/null
+++ b/data/pics/coresmall/kcs_irc.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_irc0.png b/data/pics/coresmall/kcs_irc0.png
new file mode 100644
index 00000000..6bf0808a
--- /dev/null
+++ b/data/pics/coresmall/kcs_irc0.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_irc1.png b/data/pics/coresmall/kcs_irc1.png
new file mode 100644
index 00000000..6b2f3947
--- /dev/null
+++ b/data/pics/coresmall/kcs_irc1.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_irc2.png b/data/pics/coresmall/kcs_irc2.png
new file mode 100644
index 00000000..10d2eaba
--- /dev/null
+++ b/data/pics/coresmall/kcs_irc2.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_irc3.png b/data/pics/coresmall/kcs_irc3.png
new file mode 100644
index 00000000..e9516711
--- /dev/null
+++ b/data/pics/coresmall/kcs_irc3.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_irc4.png b/data/pics/coresmall/kcs_irc4.png
new file mode 100644
index 00000000..3901aca9
--- /dev/null
+++ b/data/pics/coresmall/kcs_irc4.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_irc5.png b/data/pics/coresmall/kcs_irc5.png
new file mode 100644
index 00000000..c58b02b1
--- /dev/null
+++ b/data/pics/coresmall/kcs_irc5.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ircview.png b/data/pics/coresmall/kcs_ircview.png
new file mode 100644
index 00000000..f904e274
--- /dev/null
+++ b/data/pics/coresmall/kcs_ircview.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_join.png b/data/pics/coresmall/kcs_join.png
new file mode 100644
index 00000000..8a47b82c
--- /dev/null
+++ b/data/pics/coresmall/kcs_join.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_key.png b/data/pics/coresmall/kcs_key.png
new file mode 100644
index 00000000..1c51f6c4
--- /dev/null
+++ b/data/pics/coresmall/kcs_key.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_kick.png b/data/pics/coresmall/kcs_kick.png
new file mode 100644
index 00000000..873e13e7
--- /dev/null
+++ b/data/pics/coresmall/kcs_kick.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_kiss.png b/data/pics/coresmall/kcs_kiss.png
new file mode 100644
index 00000000..74041bbb
--- /dev/null
+++ b/data/pics/coresmall/kcs_kiss.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_kvirc.png b/data/pics/coresmall/kcs_kvirc.png
new file mode 100644
index 00000000..b1d043c4
--- /dev/null
+++ b/data/pics/coresmall/kcs_kvirc.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_limit.png b/data/pics/coresmall/kcs_limit.png
new file mode 100644
index 00000000..76fe309e
--- /dev/null
+++ b/data/pics/coresmall/kcs_limit.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_links.png b/data/pics/coresmall/kcs_links.png
new file mode 100644
index 00000000..bbc1d0b8
--- /dev/null
+++ b/data/pics/coresmall/kcs_links.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_linux.png b/data/pics/coresmall/kcs_linux.png
new file mode 100644
index 00000000..b98d943f
--- /dev/null
+++ b/data/pics/coresmall/kcs_linux.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_list.png b/data/pics/coresmall/kcs_list.png
new file mode 100644
index 00000000..0b30f4e4
--- /dev/null
+++ b/data/pics/coresmall/kcs_list.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_locked.png b/data/pics/coresmall/kcs_locked.png
new file mode 100644
index 00000000..db36f070
--- /dev/null
+++ b/data/pics/coresmall/kcs_locked.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_lockedoff.png b/data/pics/coresmall/kcs_lockedoff.png
new file mode 100644
index 00000000..80763365
--- /dev/null
+++ b/data/pics/coresmall/kcs_lockedoff.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_log.png b/data/pics/coresmall/kcs_log.png
new file mode 100644
index 00000000..93e9a407
--- /dev/null
+++ b/data/pics/coresmall/kcs_log.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_look.png b/data/pics/coresmall/kcs_look.png
new file mode 100644
index 00000000..047efa2b
--- /dev/null
+++ b/data/pics/coresmall/kcs_look.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_maxhorizontal.png b/data/pics/coresmall/kcs_maxhorizontal.png
new file mode 100644
index 00000000..de435242
--- /dev/null
+++ b/data/pics/coresmall/kcs_maxhorizontal.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_maximize.png b/data/pics/coresmall/kcs_maximize.png
new file mode 100644
index 00000000..7e0ccee7
--- /dev/null
+++ b/data/pics/coresmall/kcs_maximize.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_maxvertical.png b/data/pics/coresmall/kcs_maxvertical.png
new file mode 100644
index 00000000..ecbc9f52
--- /dev/null
+++ b/data/pics/coresmall/kcs_maxvertical.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_mdihelp.png b/data/pics/coresmall/kcs_mdihelp.png
new file mode 100644
index 00000000..4066ad82
--- /dev/null
+++ b/data/pics/coresmall/kcs_mdihelp.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_meban.png b/data/pics/coresmall/kcs_meban.png
new file mode 100644
index 00000000..79bada7a
--- /dev/null
+++ b/data/pics/coresmall/kcs_meban.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_mebanexcept.png b/data/pics/coresmall/kcs_mebanexcept.png
new file mode 100644
index 00000000..957337f1
--- /dev/null
+++ b/data/pics/coresmall/kcs_mebanexcept.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_mebanunexcept.png b/data/pics/coresmall/kcs_mebanunexcept.png
new file mode 100644
index 00000000..61c0d2f0
--- /dev/null
+++ b/data/pics/coresmall/kcs_mebanunexcept.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_mechanadmin.png b/data/pics/coresmall/kcs_mechanadmin.png
new file mode 100644
index 00000000..d749238d
--- /dev/null
+++ b/data/pics/coresmall/kcs_mechanadmin.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_mechanowner.png b/data/pics/coresmall/kcs_mechanowner.png
new file mode 100644
index 00000000..169fda11
--- /dev/null
+++ b/data/pics/coresmall/kcs_mechanowner.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_mechanunadmin.png b/data/pics/coresmall/kcs_mechanunadmin.png
new file mode 100644
index 00000000..36622d17
--- /dev/null
+++ b/data/pics/coresmall/kcs_mechanunadmin.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_mechanunowner.png b/data/pics/coresmall/kcs_mechanunowner.png
new file mode 100644
index 00000000..c60532c3
--- /dev/null
+++ b/data/pics/coresmall/kcs_mechanunowner.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_medehalfop.png b/data/pics/coresmall/kcs_medehalfop.png
new file mode 100644
index 00000000..748e93cf
--- /dev/null
+++ b/data/pics/coresmall/kcs_medehalfop.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_medeop.png b/data/pics/coresmall/kcs_medeop.png
new file mode 100644
index 00000000..e9fa8021
--- /dev/null
+++ b/data/pics/coresmall/kcs_medeop.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_medeuserop.png b/data/pics/coresmall/kcs_medeuserop.png
new file mode 100644
index 00000000..1e08099e
--- /dev/null
+++ b/data/pics/coresmall/kcs_medeuserop.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_medevoice.png b/data/pics/coresmall/kcs_medevoice.png
new file mode 100644
index 00000000..4870f68e
--- /dev/null
+++ b/data/pics/coresmall/kcs_medevoice.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_mehalfop.png b/data/pics/coresmall/kcs_mehalfop.png
new file mode 100644
index 00000000..7a786433
--- /dev/null
+++ b/data/pics/coresmall/kcs_mehalfop.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_meinviteexcept.png b/data/pics/coresmall/kcs_meinviteexcept.png
new file mode 100644
index 00000000..0893250c
--- /dev/null
+++ b/data/pics/coresmall/kcs_meinviteexcept.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_meinviteunexcept.png b/data/pics/coresmall/kcs_meinviteunexcept.png
new file mode 100644
index 00000000..230d4c50
--- /dev/null
+++ b/data/pics/coresmall/kcs_meinviteunexcept.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_mekick.png b/data/pics/coresmall/kcs_mekick.png
new file mode 100644
index 00000000..9e4217c2
--- /dev/null
+++ b/data/pics/coresmall/kcs_mekick.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_meop.png b/data/pics/coresmall/kcs_meop.png
new file mode 100644
index 00000000..fa509bee
--- /dev/null
+++ b/data/pics/coresmall/kcs_meop.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_message.png b/data/pics/coresmall/kcs_message.png
new file mode 100644
index 00000000..c5dc4338
--- /dev/null
+++ b/data/pics/coresmall/kcs_message.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_messages.png b/data/pics/coresmall/kcs_messages.png
new file mode 100644
index 00000000..45162bfd
--- /dev/null
+++ b/data/pics/coresmall/kcs_messages.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_messagesent.png b/data/pics/coresmall/kcs_messagesent.png
new file mode 100644
index 00000000..e89af850
--- /dev/null
+++ b/data/pics/coresmall/kcs_messagesent.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_meunban.png b/data/pics/coresmall/kcs_meunban.png
new file mode 100644
index 00000000..15653f0d
--- /dev/null
+++ b/data/pics/coresmall/kcs_meunban.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_meuserop.png b/data/pics/coresmall/kcs_meuserop.png
new file mode 100644
index 00000000..0148cd81
--- /dev/null
+++ b/data/pics/coresmall/kcs_meuserop.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_mevoice.png b/data/pics/coresmall/kcs_mevoice.png
new file mode 100644
index 00000000..311c6842
--- /dev/null
+++ b/data/pics/coresmall/kcs_mevoice.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_minimize.png b/data/pics/coresmall/kcs_minimize.png
new file mode 100644
index 00000000..ff56b093
--- /dev/null
+++ b/data/pics/coresmall/kcs_minimize.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_minus.png b/data/pics/coresmall/kcs_minus.png
new file mode 100644
index 00000000..14066c0f
--- /dev/null
+++ b/data/pics/coresmall/kcs_minus.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_mode.png b/data/pics/coresmall/kcs_mode.png
new file mode 100644
index 00000000..bf1fa288
--- /dev/null
+++ b/data/pics/coresmall/kcs_mode.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_motd.png b/data/pics/coresmall/kcs_motd.png
new file mode 100644
index 00000000..0b171137
--- /dev/null
+++ b/data/pics/coresmall/kcs_motd.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_multimedia.png b/data/pics/coresmall/kcs_multimedia.png
new file mode 100644
index 00000000..790a7368
--- /dev/null
+++ b/data/pics/coresmall/kcs_multimedia.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_namespace.png b/data/pics/coresmall/kcs_namespace.png
new file mode 100644
index 00000000..78eaf922
--- /dev/null
+++ b/data/pics/coresmall/kcs_namespace.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_newitem.png b/data/pics/coresmall/kcs_newitem.png
new file mode 100644
index 00000000..7d04de4c
--- /dev/null
+++ b/data/pics/coresmall/kcs_newitem.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_newitembywizard.png b/data/pics/coresmall/kcs_newitembywizard.png
new file mode 100644
index 00000000..9f047487
--- /dev/null
+++ b/data/pics/coresmall/kcs_newitembywizard.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_nick.png b/data/pics/coresmall/kcs_nick.png
new file mode 100644
index 00000000..2fd25e8c
--- /dev/null
+++ b/data/pics/coresmall/kcs_nick.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_nicknameproblem.png b/data/pics/coresmall/kcs_nicknameproblem.png
new file mode 100644
index 00000000..e7c51656
--- /dev/null
+++ b/data/pics/coresmall/kcs_nicknameproblem.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_nickserv.png b/data/pics/coresmall/kcs_nickserv.png
new file mode 100644
index 00000000..c70e4c6f
--- /dev/null
+++ b/data/pics/coresmall/kcs_nickserv.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_nochannel.png b/data/pics/coresmall/kcs_nochannel.png
new file mode 100644
index 00000000..b074bc1d
--- /dev/null
+++ b/data/pics/coresmall/kcs_nochannel.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_none.png b/data/pics/coresmall/kcs_none.png
new file mode 100644
index 00000000..6699105b
--- /dev/null
+++ b/data/pics/coresmall/kcs_none.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_notaway.png b/data/pics/coresmall/kcs_notaway.png
new file mode 100644
index 00000000..c626d654
--- /dev/null
+++ b/data/pics/coresmall/kcs_notaway.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_notifyoffline.png b/data/pics/coresmall/kcs_notifyoffline.png
new file mode 100644
index 00000000..afebce96
--- /dev/null
+++ b/data/pics/coresmall/kcs_notifyoffline.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_notifyonline.png b/data/pics/coresmall/kcs_notifyonline.png
new file mode 100644
index 00000000..49fdf03b
--- /dev/null
+++ b/data/pics/coresmall/kcs_notifyonline.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_op.png b/data/pics/coresmall/kcs_op.png
new file mode 100644
index 00000000..63c1c28a
--- /dev/null
+++ b/data/pics/coresmall/kcs_op.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_opaway.png b/data/pics/coresmall/kcs_opaway.png
new file mode 100644
index 00000000..db833d2f
--- /dev/null
+++ b/data/pics/coresmall/kcs_opaway.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_options.png b/data/pics/coresmall/kcs_options.png
new file mode 100644
index 00000000..79d60109
--- /dev/null
+++ b/data/pics/coresmall/kcs_options.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ownprivmsg.png b/data/pics/coresmall/kcs_ownprivmsg.png
new file mode 100644
index 00000000..c50c921e
--- /dev/null
+++ b/data/pics/coresmall/kcs_ownprivmsg.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ownprivmsgcrypted.png b/data/pics/coresmall/kcs_ownprivmsgcrypted.png
new file mode 100644
index 00000000..088acbca
--- /dev/null
+++ b/data/pics/coresmall/kcs_ownprivmsgcrypted.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_package.png b/data/pics/coresmall/kcs_package.png
new file mode 100644
index 00000000..29b3ceed
--- /dev/null
+++ b/data/pics/coresmall/kcs_package.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_parsererror.png b/data/pics/coresmall/kcs_parsererror.png
new file mode 100644
index 00000000..5a8b2be1
--- /dev/null
+++ b/data/pics/coresmall/kcs_parsererror.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_parserwarning.png b/data/pics/coresmall/kcs_parserwarning.png
new file mode 100644
index 00000000..2d2958ca
--- /dev/null
+++ b/data/pics/coresmall/kcs_parserwarning.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_part.png b/data/pics/coresmall/kcs_part.png
new file mode 100644
index 00000000..dbe71415
--- /dev/null
+++ b/data/pics/coresmall/kcs_part.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_paste.png b/data/pics/coresmall/kcs_paste.png
new file mode 100644
index 00000000..05b15573
--- /dev/null
+++ b/data/pics/coresmall/kcs_paste.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_play.png b/data/pics/coresmall/kcs_play.png
new file mode 100644
index 00000000..a9d4b0c3
--- /dev/null
+++ b/data/pics/coresmall/kcs_play.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_plus.png b/data/pics/coresmall/kcs_plus.png
new file mode 100644
index 00000000..abe38a57
--- /dev/null
+++ b/data/pics/coresmall/kcs_plus.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_popup.png b/data/pics/coresmall/kcs_popup.png
new file mode 100644
index 00000000..7636df82
--- /dev/null
+++ b/data/pics/coresmall/kcs_popup.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_popupmenu.png b/data/pics/coresmall/kcs_popupmenu.png
new file mode 100644
index 00000000..89ddac62
--- /dev/null
+++ b/data/pics/coresmall/kcs_popupmenu.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_prologue.png b/data/pics/coresmall/kcs_prologue.png
new file mode 100644
index 00000000..b3203d23
--- /dev/null
+++ b/data/pics/coresmall/kcs_prologue.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_proxy.png b/data/pics/coresmall/kcs_proxy.png
new file mode 100644
index 00000000..afd0528b
--- /dev/null
+++ b/data/pics/coresmall/kcs_proxy.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_query.png b/data/pics/coresmall/kcs_query.png
new file mode 100644
index 00000000..d22fbdc7
--- /dev/null
+++ b/data/pics/coresmall/kcs_query.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_querynotice.png b/data/pics/coresmall/kcs_querynotice.png
new file mode 100644
index 00000000..d22fbdc7
--- /dev/null
+++ b/data/pics/coresmall/kcs_querynotice.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_querynoticecrypted.png b/data/pics/coresmall/kcs_querynoticecrypted.png
new file mode 100644
index 00000000..0bb884e6
--- /dev/null
+++ b/data/pics/coresmall/kcs_querynoticecrypted.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_queryprivmsg.png b/data/pics/coresmall/kcs_queryprivmsg.png
new file mode 100644
index 00000000..760d3b57
--- /dev/null
+++ b/data/pics/coresmall/kcs_queryprivmsg.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_queryprivmsgcrypted.png b/data/pics/coresmall/kcs_queryprivmsgcrypted.png
new file mode 100644
index 00000000..68cd6d8a
--- /dev/null
+++ b/data/pics/coresmall/kcs_queryprivmsgcrypted.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_querytrace.png b/data/pics/coresmall/kcs_querytrace.png
new file mode 100644
index 00000000..b2abdbd2
--- /dev/null
+++ b/data/pics/coresmall/kcs_querytrace.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_quit.png b/data/pics/coresmall/kcs_quit.png
new file mode 100644
index 00000000..1eb0fdfd
--- /dev/null
+++ b/data/pics/coresmall/kcs_quit.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_quitapp.png b/data/pics/coresmall/kcs_quitapp.png
new file mode 100644
index 00000000..f8ab698a
--- /dev/null
+++ b/data/pics/coresmall/kcs_quitapp.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_quitsplit.png b/data/pics/coresmall/kcs_quitsplit.png
new file mode 100644
index 00000000..29e0f218
--- /dev/null
+++ b/data/pics/coresmall/kcs_quitsplit.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_raw.png b/data/pics/coresmall/kcs_raw.png
new file mode 100644
index 00000000..52efa2d8
--- /dev/null
+++ b/data/pics/coresmall/kcs_raw.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_rawevent.png b/data/pics/coresmall/kcs_rawevent.png
new file mode 100644
index 00000000..22bb9648
--- /dev/null
+++ b/data/pics/coresmall/kcs_rawevent.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_raweventnohandlers.png b/data/pics/coresmall/kcs_raweventnohandlers.png
new file mode 100644
index 00000000..e136bee8
--- /dev/null
+++ b/data/pics/coresmall/kcs_raweventnohandlers.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_record.png b/data/pics/coresmall/kcs_record.png
new file mode 100644
index 00000000..4489eddf
--- /dev/null
+++ b/data/pics/coresmall/kcs_record.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_redsquare.png b/data/pics/coresmall/kcs_redsquare.png
new file mode 100644
index 00000000..bd0e73f2
--- /dev/null
+++ b/data/pics/coresmall/kcs_redsquare.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_refresh.png b/data/pics/coresmall/kcs_refresh.png
new file mode 100644
index 00000000..6d6fbe40
--- /dev/null
+++ b/data/pics/coresmall/kcs_refresh.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_regusers.png b/data/pics/coresmall/kcs_regusers.png
new file mode 100644
index 00000000..7b0bb45b
--- /dev/null
+++ b/data/pics/coresmall/kcs_regusers.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_restore.png b/data/pics/coresmall/kcs_restore.png
new file mode 100644
index 00000000..55a25b62
--- /dev/null
+++ b/data/pics/coresmall/kcs_restore.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_retry.png b/data/pics/coresmall/kcs_retry.png
new file mode 100644
index 00000000..1441ecdc
--- /dev/null
+++ b/data/pics/coresmall/kcs_retry.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_rose.png b/data/pics/coresmall/kcs_rose.png
new file mode 100644
index 00000000..666a9c36
--- /dev/null
+++ b/data/pics/coresmall/kcs_rose.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_saycolors.png b/data/pics/coresmall/kcs_saycolors.png
new file mode 100644
index 00000000..6a6e4fb2
--- /dev/null
+++ b/data/pics/coresmall/kcs_saycolors.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_sayicon.png b/data/pics/coresmall/kcs_sayicon.png
new file mode 100644
index 00000000..54ce5685
--- /dev/null
+++ b/data/pics/coresmall/kcs_sayicon.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_saykvs.png b/data/pics/coresmall/kcs_saykvs.png
new file mode 100644
index 00000000..2e0bf2b6
--- /dev/null
+++ b/data/pics/coresmall/kcs_saykvs.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_saysmile.png b/data/pics/coresmall/kcs_saysmile.png
new file mode 100644
index 00000000..f068b658
--- /dev/null
+++ b/data/pics/coresmall/kcs_saysmile.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_screenshot.png b/data/pics/coresmall/kcs_screenshot.png
new file mode 100644
index 00000000..fe631b2c
--- /dev/null
+++ b/data/pics/coresmall/kcs_screenshot.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_scriptaction.png b/data/pics/coresmall/kcs_scriptaction.png
new file mode 100644
index 00000000..4ef5b1ce
--- /dev/null
+++ b/data/pics/coresmall/kcs_scriptaction.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_scriptcenter.png b/data/pics/coresmall/kcs_scriptcenter.png
new file mode 100644
index 00000000..18f43c75
--- /dev/null
+++ b/data/pics/coresmall/kcs_scriptcenter.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_search.png b/data/pics/coresmall/kcs_search.png
new file mode 100644
index 00000000..16a2e0d8
--- /dev/null
+++ b/data/pics/coresmall/kcs_search.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_server.png b/data/pics/coresmall/kcs_server.png
new file mode 100644
index 00000000..ac72d1a2
--- /dev/null
+++ b/data/pics/coresmall/kcs_server.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_servererror.png b/data/pics/coresmall/kcs_servererror.png
new file mode 100644
index 00000000..caefdf67
--- /dev/null
+++ b/data/pics/coresmall/kcs_servererror.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_serverinfo.png b/data/pics/coresmall/kcs_serverinfo.png
new file mode 100644
index 00000000..e7ccdd05
--- /dev/null
+++ b/data/pics/coresmall/kcs_serverinfo.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_servernotice.png b/data/pics/coresmall/kcs_servernotice.png
new file mode 100644
index 00000000..80fb6b00
--- /dev/null
+++ b/data/pics/coresmall/kcs_servernotice.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_serverping.png b/data/pics/coresmall/kcs_serverping.png
new file mode 100644
index 00000000..6ee4273b
--- /dev/null
+++ b/data/pics/coresmall/kcs_serverping.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_servnotice.png b/data/pics/coresmall/kcs_servnotice.png
new file mode 100644
index 00000000..8ead24f1
--- /dev/null
+++ b/data/pics/coresmall/kcs_servnotice.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_sharedfiles.png b/data/pics/coresmall/kcs_sharedfiles.png
new file mode 100644
index 00000000..e58badd6
--- /dev/null
+++ b/data/pics/coresmall/kcs_sharedfiles.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_showdoubleview.png b/data/pics/coresmall/kcs_showdoubleview.png
new file mode 100644
index 00000000..8d1c7192
--- /dev/null
+++ b/data/pics/coresmall/kcs_showdoubleview.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_showlistview.png b/data/pics/coresmall/kcs_showlistview.png
new file mode 100644
index 00000000..8337da36
--- /dev/null
+++ b/data/pics/coresmall/kcs_showlistview.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_shy.png b/data/pics/coresmall/kcs_shy.png
new file mode 100644
index 00000000..ec5147f4
--- /dev/null
+++ b/data/pics/coresmall/kcs_shy.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_slurp.png b/data/pics/coresmall/kcs_slurp.png
new file mode 100644
index 00000000..27988b69
--- /dev/null
+++ b/data/pics/coresmall/kcs_slurp.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_smile.png b/data/pics/coresmall/kcs_smile.png
new file mode 100644
index 00000000..cb82bc39
--- /dev/null
+++ b/data/pics/coresmall/kcs_smile.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_socketerror.png b/data/pics/coresmall/kcs_socketerror.png
new file mode 100644
index 00000000..9911058d
--- /dev/null
+++ b/data/pics/coresmall/kcs_socketerror.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_socketmessage.png b/data/pics/coresmall/kcs_socketmessage.png
new file mode 100644
index 00000000..97f797d5
--- /dev/null
+++ b/data/pics/coresmall/kcs_socketmessage.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_socketwarning.png b/data/pics/coresmall/kcs_socketwarning.png
new file mode 100644
index 00000000..350dd440
--- /dev/null
+++ b/data/pics/coresmall/kcs_socketwarning.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_sound.png b/data/pics/coresmall/kcs_sound.png
new file mode 100644
index 00000000..e182154e
--- /dev/null
+++ b/data/pics/coresmall/kcs_sound.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_spam.png b/data/pics/coresmall/kcs_spam.png
new file mode 100644
index 00000000..7ee7c5c5
--- /dev/null
+++ b/data/pics/coresmall/kcs_spam.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_split.png b/data/pics/coresmall/kcs_split.png
new file mode 100644
index 00000000..aab6bdb0
--- /dev/null
+++ b/data/pics/coresmall/kcs_split.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_spy.png b/data/pics/coresmall/kcs_spy.png
new file mode 100644
index 00000000..37f6248c
--- /dev/null
+++ b/data/pics/coresmall/kcs_spy.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ssl.png b/data/pics/coresmall/kcs_ssl.png
new file mode 100644
index 00000000..cda0467a
--- /dev/null
+++ b/data/pics/coresmall/kcs_ssl.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_stats.png b/data/pics/coresmall/kcs_stats.png
new file mode 100644
index 00000000..fdad61ff
--- /dev/null
+++ b/data/pics/coresmall/kcs_stats.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_statusbar.png b/data/pics/coresmall/kcs_statusbar.png
new file mode 100644
index 00000000..59c65c25
--- /dev/null
+++ b/data/pics/coresmall/kcs_statusbar.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_surprised1.png b/data/pics/coresmall/kcs_surprised1.png
new file mode 100644
index 00000000..c45b644d
--- /dev/null
+++ b/data/pics/coresmall/kcs_surprised1.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_surprised2.png b/data/pics/coresmall/kcs_surprised2.png
new file mode 100644
index 00000000..cd13058a
--- /dev/null
+++ b/data/pics/coresmall/kcs_surprised2.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_systemerror.png b/data/pics/coresmall/kcs_systemerror.png
new file mode 100644
index 00000000..3ad9611a
--- /dev/null
+++ b/data/pics/coresmall/kcs_systemerror.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_systemmessage.png b/data/pics/coresmall/kcs_systemmessage.png
new file mode 100644
index 00000000..a6307d41
--- /dev/null
+++ b/data/pics/coresmall/kcs_systemmessage.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_systemwarning.png b/data/pics/coresmall/kcs_systemwarning.png
new file mode 100644
index 00000000..0c3f0dcf
--- /dev/null
+++ b/data/pics/coresmall/kcs_systemwarning.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_tearsmile.png b/data/pics/coresmall/kcs_tearsmile.png
new file mode 100644
index 00000000..249943c1
--- /dev/null
+++ b/data/pics/coresmall/kcs_tearsmile.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_terminal.png b/data/pics/coresmall/kcs_terminal.png
new file mode 100644
index 00000000..f904e274
--- /dev/null
+++ b/data/pics/coresmall/kcs_terminal.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_textencoding.png b/data/pics/coresmall/kcs_textencoding.png
new file mode 100644
index 00000000..15204759
--- /dev/null
+++ b/data/pics/coresmall/kcs_textencoding.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_textexclamative.png b/data/pics/coresmall/kcs_textexclamative.png
new file mode 100644
index 00000000..adb2a55b
--- /dev/null
+++ b/data/pics/coresmall/kcs_textexclamative.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_textpoints.png b/data/pics/coresmall/kcs_textpoints.png
new file mode 100644
index 00000000..a9bf5f25
--- /dev/null
+++ b/data/pics/coresmall/kcs_textpoints.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_theme.png b/data/pics/coresmall/kcs_theme.png
new file mode 100644
index 00000000..1f0c5dd7
--- /dev/null
+++ b/data/pics/coresmall/kcs_theme.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_themeoptions.png b/data/pics/coresmall/kcs_themeoptions.png
new file mode 100644
index 00000000..3c1f58f8
--- /dev/null
+++ b/data/pics/coresmall/kcs_themeoptions.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_tilewindows.png b/data/pics/coresmall/kcs_tilewindows.png
new file mode 100644
index 00000000..1f945471
--- /dev/null
+++ b/data/pics/coresmall/kcs_tilewindows.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_time.png b/data/pics/coresmall/kcs_time.png
new file mode 100644
index 00000000..b799ca96
--- /dev/null
+++ b/data/pics/coresmall/kcs_time.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_tongue.png b/data/pics/coresmall/kcs_tongue.png
new file mode 100644
index 00000000..94da7ce6
--- /dev/null
+++ b/data/pics/coresmall/kcs_tongue.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_tongue2.png b/data/pics/coresmall/kcs_tongue2.png
new file mode 100644
index 00000000..c16f1196
--- /dev/null
+++ b/data/pics/coresmall/kcs_tongue2.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_toolbar.png b/data/pics/coresmall/kcs_toolbar.png
new file mode 100644
index 00000000..c849d251
--- /dev/null
+++ b/data/pics/coresmall/kcs_toolbar.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_topic.png b/data/pics/coresmall/kcs_topic.png
new file mode 100644
index 00000000..a2223488
--- /dev/null
+++ b/data/pics/coresmall/kcs_topic.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_transfer.png b/data/pics/coresmall/kcs_transfer.png
new file mode 100644
index 00000000..17d62f96
--- /dev/null
+++ b/data/pics/coresmall/kcs_transfer.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_transparent.png b/data/pics/coresmall/kcs_transparent.png
new file mode 100644
index 00000000..4cf0bb00
--- /dev/null
+++ b/data/pics/coresmall/kcs_transparent.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_treetaskbar.png b/data/pics/coresmall/kcs_treetaskbar.png
new file mode 100644
index 00000000..f6cd1dd3
--- /dev/null
+++ b/data/pics/coresmall/kcs_treetaskbar.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ugly.png b/data/pics/coresmall/kcs_ugly.png
new file mode 100644
index 00000000..91d03f03
--- /dev/null
+++ b/data/pics/coresmall/kcs_ugly.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_unban.png b/data/pics/coresmall/kcs_unban.png
new file mode 100644
index 00000000..05a7abff
--- /dev/null
+++ b/data/pics/coresmall/kcs_unban.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_undock.png b/data/pics/coresmall/kcs_undock.png
new file mode 100644
index 00000000..531a64fe
--- /dev/null
+++ b/data/pics/coresmall/kcs_undock.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_unhandled.png b/data/pics/coresmall/kcs_unhandled.png
new file mode 100644
index 00000000..e9d618e0
--- /dev/null
+++ b/data/pics/coresmall/kcs_unhandled.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_unlocked.png b/data/pics/coresmall/kcs_unlocked.png
new file mode 100644
index 00000000..f4af5e72
--- /dev/null
+++ b/data/pics/coresmall/kcs_unlocked.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_unlockedoff.png b/data/pics/coresmall/kcs_unlockedoff.png
new file mode 100644
index 00000000..b5aa0652
--- /dev/null
+++ b/data/pics/coresmall/kcs_unlockedoff.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_unrecognized.png b/data/pics/coresmall/kcs_unrecognized.png
new file mode 100644
index 00000000..caefdf67
--- /dev/null
+++ b/data/pics/coresmall/kcs_unrecognized.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_url.png b/data/pics/coresmall/kcs_url.png
new file mode 100644
index 00000000..3ed9089a
--- /dev/null
+++ b/data/pics/coresmall/kcs_url.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_userlist.png b/data/pics/coresmall/kcs_userlist.png
new file mode 100644
index 00000000..359a2984
--- /dev/null
+++ b/data/pics/coresmall/kcs_userlist.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_userop.png b/data/pics/coresmall/kcs_userop.png
new file mode 100644
index 00000000..8c00289a
--- /dev/null
+++ b/data/pics/coresmall/kcs_userop.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_useropaway.png b/data/pics/coresmall/kcs_useropaway.png
new file mode 100644
index 00000000..4a4128f2
--- /dev/null
+++ b/data/pics/coresmall/kcs_useropaway.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_userwindow.png b/data/pics/coresmall/kcs_userwindow.png
new file mode 100644
index 00000000..b83a1086
--- /dev/null
+++ b/data/pics/coresmall/kcs_userwindow.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_violetsquare.png b/data/pics/coresmall/kcs_violetsquare.png
new file mode 100644
index 00000000..c46e4005
--- /dev/null
+++ b/data/pics/coresmall/kcs_violetsquare.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_voice.png b/data/pics/coresmall/kcs_voice.png
new file mode 100644
index 00000000..aad61227
--- /dev/null
+++ b/data/pics/coresmall/kcs_voice.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_voiceaway.png b/data/pics/coresmall/kcs_voiceaway.png
new file mode 100644
index 00000000..a9bc7ae3
--- /dev/null
+++ b/data/pics/coresmall/kcs_voiceaway.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_wallops.png b/data/pics/coresmall/kcs_wallops.png
new file mode 100644
index 00000000..49840ab8
--- /dev/null
+++ b/data/pics/coresmall/kcs_wallops.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_who.png b/data/pics/coresmall/kcs_who.png
new file mode 100644
index 00000000..e2012322
--- /dev/null
+++ b/data/pics/coresmall/kcs_who.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_whoischannels.png b/data/pics/coresmall/kcs_whoischannels.png
new file mode 100644
index 00000000..4a3183fe
--- /dev/null
+++ b/data/pics/coresmall/kcs_whoischannels.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_whoisidle.png b/data/pics/coresmall/kcs_whoisidle.png
new file mode 100644
index 00000000..21d03a1d
--- /dev/null
+++ b/data/pics/coresmall/kcs_whoisidle.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_whoisother.png b/data/pics/coresmall/kcs_whoisother.png
new file mode 100644
index 00000000..93694a7a
--- /dev/null
+++ b/data/pics/coresmall/kcs_whoisother.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_whoisserver.png b/data/pics/coresmall/kcs_whoisserver.png
new file mode 100644
index 00000000..ac72d1a2
--- /dev/null
+++ b/data/pics/coresmall/kcs_whoisserver.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_whoisuser.png b/data/pics/coresmall/kcs_whoisuser.png
new file mode 100644
index 00000000..d2de8d74
--- /dev/null
+++ b/data/pics/coresmall/kcs_whoisuser.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_world.png b/data/pics/coresmall/kcs_world.png
new file mode 100644
index 00000000..d17fe499
--- /dev/null
+++ b/data/pics/coresmall/kcs_world.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_xy.png b/data/pics/coresmall/kcs_xy.png
new file mode 100644
index 00000000..2a7b2a16
--- /dev/null
+++ b/data/pics/coresmall/kcs_xy.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_yellowsquare.png b/data/pics/coresmall/kcs_yellowsquare.png
new file mode 100644
index 00000000..cdc86c81
--- /dev/null
+++ b/data/pics/coresmall/kcs_yellowsquare.png
Binary files differ
diff --git a/data/pics/kvi_actiondrawer.png b/data/pics/kvi_actiondrawer.png
new file mode 100644
index 00000000..2fcbe261
--- /dev/null
+++ b/data/pics/kvi_actiondrawer.png
Binary files differ
diff --git a/data/pics/kvi_activitymeter.png b/data/pics/kvi_activitymeter.png
new file mode 100644
index 00000000..7c9ea177
--- /dev/null
+++ b/data/pics/kvi_activitymeter.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_actioneditor.png b/data/pics/kvi_bigicon_actioneditor.png
new file mode 100644
index 00000000..41ca0691
--- /dev/null
+++ b/data/pics/kvi_bigicon_actioneditor.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_actions.png b/data/pics/kvi_bigicon_actions.png
new file mode 100644
index 00000000..30c33097
--- /dev/null
+++ b/data/pics/kvi_bigicon_actions.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_addons.png b/data/pics/kvi_bigicon_addons.png
new file mode 100644
index 00000000..bbf54cd7
--- /dev/null
+++ b/data/pics/kvi_bigicon_addons.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_aliaseditor.png b/data/pics/kvi_bigicon_aliaseditor.png
new file mode 100644
index 00000000..2f50eb3d
--- /dev/null
+++ b/data/pics/kvi_bigicon_aliaseditor.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_cascadewindows.png b/data/pics/kvi_bigicon_cascadewindows.png
new file mode 100644
index 00000000..4965736e
--- /dev/null
+++ b/data/pics/kvi_bigicon_cascadewindows.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_channellist.png b/data/pics/kvi_bigicon_channellist.png
new file mode 100644
index 00000000..7d157f7f
--- /dev/null
+++ b/data/pics/kvi_bigicon_channellist.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_channels.png b/data/pics/kvi_bigicon_channels.png
new file mode 100644
index 00000000..9b3a6120
--- /dev/null
+++ b/data/pics/kvi_bigicon_channels.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_channelspopup.png b/data/pics/kvi_bigicon_channelspopup.png
new file mode 100644
index 00000000..9b3a6120
--- /dev/null
+++ b/data/pics/kvi_bigicon_channelspopup.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_codetester.png b/data/pics/kvi_bigicon_codetester.png
new file mode 100644
index 00000000..60038991
--- /dev/null
+++ b/data/pics/kvi_bigicon_codetester.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_connected.png b/data/pics/kvi_bigicon_connected.png
new file mode 100644
index 00000000..658908c1
--- /dev/null
+++ b/data/pics/kvi_bigicon_connected.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_connecting.png b/data/pics/kvi_bigicon_connecting.png
new file mode 100644
index 00000000..9493c2a1
--- /dev/null
+++ b/data/pics/kvi_bigicon_connecting.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_disconnected.png b/data/pics/kvi_bigicon_disconnected.png
new file mode 100644
index 00000000..e1b143ba
--- /dev/null
+++ b/data/pics/kvi_bigicon_disconnected.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_eventeditor.png b/data/pics/kvi_bigicon_eventeditor.png
new file mode 100644
index 00000000..8e615d4b
--- /dev/null
+++ b/data/pics/kvi_bigicon_eventeditor.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_folder.png b/data/pics/kvi_bigicon_folder.png
new file mode 100644
index 00000000..ff8acbce
--- /dev/null
+++ b/data/pics/kvi_bigicon_folder.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_help.png b/data/pics/kvi_bigicon_help.png
new file mode 100644
index 00000000..0107eed5
--- /dev/null
+++ b/data/pics/kvi_bigicon_help.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_helpback.png b/data/pics/kvi_bigicon_helpback.png
new file mode 100644
index 00000000..b7b4c838
--- /dev/null
+++ b/data/pics/kvi_bigicon_helpback.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_helpclose.png b/data/pics/kvi_bigicon_helpclose.png
new file mode 100644
index 00000000..69f4b59d
--- /dev/null
+++ b/data/pics/kvi_bigicon_helpclose.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_helpforward.png b/data/pics/kvi_bigicon_helpforward.png
new file mode 100644
index 00000000..65a9a581
--- /dev/null
+++ b/data/pics/kvi_bigicon_helpforward.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_helpindex.png b/data/pics/kvi_bigicon_helpindex.png
new file mode 100644
index 00000000..3fc4b579
--- /dev/null
+++ b/data/pics/kvi_bigicon_helpindex.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_helpsearch.png b/data/pics/kvi_bigicon_helpsearch.png
new file mode 100644
index 00000000..00b6f69f
--- /dev/null
+++ b/data/pics/kvi_bigicon_helpsearch.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_identity.png b/data/pics/kvi_bigicon_identity.png
new file mode 100644
index 00000000..c975459f
--- /dev/null
+++ b/data/pics/kvi_bigicon_identity.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_irccontextdisplay.png b/data/pics/kvi_bigicon_irccontextdisplay.png
new file mode 100644
index 00000000..2a288d55
--- /dev/null
+++ b/data/pics/kvi_bigicon_irccontextdisplay.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_keyboard.png b/data/pics/kvi_bigicon_keyboard.png
new file mode 100644
index 00000000..2ea9069d
--- /dev/null
+++ b/data/pics/kvi_bigicon_keyboard.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_kvircwww.png b/data/pics/kvi_bigicon_kvircwww.png
new file mode 100644
index 00000000..a16b141c
--- /dev/null
+++ b/data/pics/kvi_bigicon_kvircwww.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_kvs.png b/data/pics/kvi_bigicon_kvs.png
new file mode 100644
index 00000000..f3d37fc3
--- /dev/null
+++ b/data/pics/kvi_bigicon_kvs.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_mailinglist.png b/data/pics/kvi_bigicon_mailinglist.png
new file mode 100644
index 00000000..16ef3378
--- /dev/null
+++ b/data/pics/kvi_bigicon_mailinglist.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_minimizeallwindows.png b/data/pics/kvi_bigicon_minimizeallwindows.png
new file mode 100644
index 00000000..04e90e73
--- /dev/null
+++ b/data/pics/kvi_bigicon_minimizeallwindows.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_networklinks.png b/data/pics/kvi_bigicon_networklinks.png
new file mode 100644
index 00000000..f813af76
--- /dev/null
+++ b/data/pics/kvi_bigicon_networklinks.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_newirccontext.png b/data/pics/kvi_bigicon_newirccontext.png
new file mode 100755
index 00000000..9ec1a5c8
--- /dev/null
+++ b/data/pics/kvi_bigicon_newirccontext.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_nickpopup.png b/data/pics/kvi_bigicon_nickpopup.png
new file mode 100755
index 00000000..71209976
--- /dev/null
+++ b/data/pics/kvi_bigicon_nickpopup.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_nokeyboard.png b/data/pics/kvi_bigicon_nokeyboard.png
new file mode 100644
index 00000000..315973b6
--- /dev/null
+++ b/data/pics/kvi_bigicon_nokeyboard.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_open.png b/data/pics/kvi_bigicon_open.png
new file mode 100644
index 00000000..26ad2527
--- /dev/null
+++ b/data/pics/kvi_bigicon_open.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_pack.png b/data/pics/kvi_bigicon_pack.png
new file mode 100644
index 00000000..9d59eda4
--- /dev/null
+++ b/data/pics/kvi_bigicon_pack.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_popupeditor.png b/data/pics/kvi_bigicon_popupeditor.png
new file mode 100644
index 00000000..e2422686
--- /dev/null
+++ b/data/pics/kvi_bigicon_popupeditor.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_quit.png b/data/pics/kvi_bigicon_quit.png
new file mode 100755
index 00000000..1a9155c9
--- /dev/null
+++ b/data/pics/kvi_bigicon_quit.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_raweditor.png b/data/pics/kvi_bigicon_raweditor.png
new file mode 100644
index 00000000..24573556
--- /dev/null
+++ b/data/pics/kvi_bigicon_raweditor.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_regusers.png b/data/pics/kvi_bigicon_regusers.png
new file mode 100644
index 00000000..78d0682b
--- /dev/null
+++ b/data/pics/kvi_bigicon_regusers.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_remove.png b/data/pics/kvi_bigicon_remove.png
new file mode 100644
index 00000000..15226afe
--- /dev/null
+++ b/data/pics/kvi_bigicon_remove.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_save.png b/data/pics/kvi_bigicon_save.png
new file mode 100644
index 00000000..d7890076
--- /dev/null
+++ b/data/pics/kvi_bigicon_save.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_screenshot.png b/data/pics/kvi_bigicon_screenshot.png
new file mode 100644
index 00000000..0b36405b
--- /dev/null
+++ b/data/pics/kvi_bigicon_screenshot.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_separator.png b/data/pics/kvi_bigicon_separator.png
new file mode 100644
index 00000000..248f806f
--- /dev/null
+++ b/data/pics/kvi_bigicon_separator.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_server.png b/data/pics/kvi_bigicon_server.png
new file mode 100644
index 00000000..64002580
--- /dev/null
+++ b/data/pics/kvi_bigicon_server.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_servers.png b/data/pics/kvi_bigicon_servers.png
new file mode 100644
index 00000000..ac9120d6
--- /dev/null
+++ b/data/pics/kvi_bigicon_servers.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_settings.png b/data/pics/kvi_bigicon_settings.png
new file mode 100644
index 00000000..f33c13a3
--- /dev/null
+++ b/data/pics/kvi_bigicon_settings.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_socketspy.png b/data/pics/kvi_bigicon_socketspy.png
new file mode 100755
index 00000000..930dafe2
--- /dev/null
+++ b/data/pics/kvi_bigicon_socketspy.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_theme.png b/data/pics/kvi_bigicon_theme.png
new file mode 100644
index 00000000..53f926e2
--- /dev/null
+++ b/data/pics/kvi_bigicon_theme.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_themeoptions.png b/data/pics/kvi_bigicon_themeoptions.png
new file mode 100644
index 00000000..935c9f77
--- /dev/null
+++ b/data/pics/kvi_bigicon_themeoptions.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_tilewindows.png b/data/pics/kvi_bigicon_tilewindows.png
new file mode 100644
index 00000000..9d24cda8
--- /dev/null
+++ b/data/pics/kvi_bigicon_tilewindows.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_toolbareditor.png b/data/pics/kvi_bigicon_toolbareditor.png
new file mode 100644
index 00000000..552bfc69
--- /dev/null
+++ b/data/pics/kvi_bigicon_toolbareditor.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_tools.png b/data/pics/kvi_bigicon_tools.png
new file mode 100644
index 00000000..9823389c
--- /dev/null
+++ b/data/pics/kvi_bigicon_tools.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_trashcan.png b/data/pics/kvi_bigicon_trashcan.png
new file mode 100644
index 00000000..aa82e6f1
--- /dev/null
+++ b/data/pics/kvi_bigicon_trashcan.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_unknown.png b/data/pics/kvi_bigicon_unknown.png
new file mode 100755
index 00000000..1f31fd63
--- /dev/null
+++ b/data/pics/kvi_bigicon_unknown.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_usermode.png b/data/pics/kvi_bigicon_usermode.png
new file mode 100644
index 00000000..66b15030
--- /dev/null
+++ b/data/pics/kvi_bigicon_usermode.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_www.png b/data/pics/kvi_bigicon_www.png
new file mode 100644
index 00000000..d324f360
--- /dev/null
+++ b/data/pics/kvi_bigicon_www.png
Binary files differ
diff --git a/data/pics/kvi_checkbox_selected.png b/data/pics/kvi_checkbox_selected.png
new file mode 100644
index 00000000..0769dc07
--- /dev/null
+++ b/data/pics/kvi_checkbox_selected.png
Binary files differ
diff --git a/data/pics/kvi_checkbox_unselected.png b/data/pics/kvi_checkbox_unselected.png
new file mode 100644
index 00000000..3a9ff54c
--- /dev/null
+++ b/data/pics/kvi_checkbox_unselected.png
Binary files differ
diff --git a/data/pics/kvi_horizontal_left.png b/data/pics/kvi_horizontal_left.png
new file mode 100755
index 00000000..2e3ba925
--- /dev/null
+++ b/data/pics/kvi_horizontal_left.png
Binary files differ
diff --git a/data/pics/kvi_horizontal_right.png b/data/pics/kvi_horizontal_right.png
new file mode 100755
index 00000000..5b4e0986
--- /dev/null
+++ b/data/pics/kvi_horizontal_right.png
Binary files differ
diff --git a/data/pics/kvi_icon_bot.png b/data/pics/kvi_icon_bot.png
new file mode 100644
index 00000000..48ed5ca6
--- /dev/null
+++ b/data/pics/kvi_icon_bot.png
Binary files differ
diff --git a/data/pics/kvi_icon_female.png b/data/pics/kvi_icon_female.png
new file mode 100644
index 00000000..22d11d11
--- /dev/null
+++ b/data/pics/kvi_icon_female.png
Binary files differ
diff --git a/data/pics/kvi_icon_male.png b/data/pics/kvi_icon_male.png
new file mode 100644
index 00000000..e66e862b
--- /dev/null
+++ b/data/pics/kvi_icon_male.png
Binary files differ
diff --git a/data/pics/kvi_icon_refresh.png b/data/pics/kvi_icon_refresh.png
new file mode 100755
index 00000000..3dc4ed53
--- /dev/null
+++ b/data/pics/kvi_icon_refresh.png
Binary files differ
diff --git a/data/pics/kvi_setup_label.png b/data/pics/kvi_setup_label.png
new file mode 100644
index 00000000..4c987aa4
--- /dev/null
+++ b/data/pics/kvi_setup_label.png
Binary files differ
diff --git a/data/pics/kvi_setup_theme_hires.png b/data/pics/kvi_setup_theme_hires.png
new file mode 100644
index 00000000..ed3e43b3
--- /dev/null
+++ b/data/pics/kvi_setup_theme_hires.png
Binary files differ
diff --git a/data/pics/kvi_setup_theme_lowres.png b/data/pics/kvi_setup_theme_lowres.png
new file mode 100644
index 00000000..0de93f97
--- /dev/null
+++ b/data/pics/kvi_setup_theme_lowres.png
Binary files differ
diff --git a/data/pics/kvi_splash.png b/data/pics/kvi_splash.png
new file mode 100644
index 00000000..836bb86b
--- /dev/null
+++ b/data/pics/kvi_splash.png
Binary files differ
diff --git a/data/pics/kvi_splash_overlay.png b/data/pics/kvi_splash_overlay.png
new file mode 100644
index 00000000..7e64b6f6
--- /dev/null
+++ b/data/pics/kvi_splash_overlay.png
Binary files differ
diff --git a/data/pics/kvi_toolbutton_menuindicator.png b/data/pics/kvi_toolbutton_menuindicator.png
new file mode 100755
index 00000000..69401ee9
--- /dev/null
+++ b/data/pics/kvi_toolbutton_menuindicator.png
Binary files differ
diff --git a/data/pics/kvi_userchanstate.png b/data/pics/kvi_userchanstate.png
new file mode 100644
index 00000000..380ee106
--- /dev/null
+++ b/data/pics/kvi_userchanstate.png
Binary files differ
diff --git a/data/protocols/Makefile.am b/data/protocols/Makefile.am
new file mode 100644
index 00000000..720388f0
--- /dev/null
+++ b/data/protocols/Makefile.am
@@ -0,0 +1,9 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+tmpdir = $(kdeservicesdir)
+
+tmp_DATA = irc.protocol irc6.protocol
+
+EXTRA_DIST = $(tmp_DATA)
diff --git a/data/protocols/irc.protocol b/data/protocols/irc.protocol
new file mode 100644
index 00000000..057903e8
--- /dev/null
+++ b/data/protocols/irc.protocol
@@ -0,0 +1,11 @@
+[Protocol]
+exec=kvirc %u
+protocol=irc
+input=none
+output=none
+helper=true
+listing=false
+reading=false
+writing=false
+makedir=false
+deleting=false
diff --git a/data/protocols/irc6.protocol b/data/protocols/irc6.protocol
new file mode 100644
index 00000000..f57a4c00
--- /dev/null
+++ b/data/protocols/irc6.protocol
@@ -0,0 +1,11 @@
+[Protocol]
+exec=kvirc %u
+protocol=irc6
+input=none
+output=none
+helper=true
+listing=false
+reading=false
+writing=false
+makedir=false
+deleting=false
diff --git a/data/resources/Makefile.am b/data/resources/Makefile.am
new file mode 100644
index 00000000..71b9c6bf
--- /dev/null
+++ b/data/resources/Makefile.am
@@ -0,0 +1,3 @@
+EXTRA_DIST = icon1.ico kvirc.rc resource.h
+
+
diff --git a/data/resources/icon1.ico b/data/resources/icon1.ico
new file mode 100644
index 00000000..23f11473
--- /dev/null
+++ b/data/resources/icon1.ico
Binary files differ
diff --git a/data/resources/kvirc.rc b/data/resources/kvirc.rc
new file mode 100644
index 00000000..e25ef3b5
--- /dev/null
+++ b/data/resources/kvirc.rc
@@ -0,0 +1,29 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "resource.h"
+
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_ICON1 ICON DISCARDABLE "icon1.ico"
+IDD_ICON2 ICON DISCARDABLE "kvs.ico"
+IDD_ICON3 ICON DISCARDABLE "kvc.ico"
+IDD_ICON4 ICON DISCARDABLE "kvt.ico"
+IDD_ICON5 ICON DISCARDABLE "kva.ico"
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "\r\n"
+ "\0"
+END \ No newline at end of file
diff --git a/data/resources/resource.h b/data/resources/resource.h
new file mode 100644
index 00000000..87135009
--- /dev/null
+++ b/data/resources/resource.h
@@ -0,0 +1,20 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by kvirc.rc
+//
+#define IDD_ICON1 100
+#define IDD_ICON2 101
+#define IDD_ICON3 102
+#define IDD_ICON4 103
+#define IDD_ICON5 104
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 101
+#define _APS_NEXT_COMMAND_VALUE 40001
+#define _APS_NEXT_CONTROL_VALUE 1000
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
diff --git a/data/resources_mac/Info.plist.in b/data/resources_mac/Info.plist.in
new file mode 100644
index 00000000..c1054aa4
--- /dev/null
+++ b/data/resources_mac/Info.plist.in
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleExecutable</key>
+ <string>kvirc</string>
+ <key>CFBundleIconFile</key>
+ <string>kvirc.icns</string>
+ <key>CFBundleIdentifier</key>
+ <string>com.kvirc.kvirc</string>
+ <key>CFBundleLocalizations</key>
+ <array>
+ <string>en</string>
+ <string>bg</string>
+ <string>ca</string>
+ <string>cs</string>
+ <string>de</string>
+ <string>es</string>
+ <string>fr</string>
+ <string>hu</string>
+ <string>it</string>
+ <string>nl</string>
+ <string>pl</string>
+ <string>pt</string>
+ <string>pt_BR</string>
+ <string>ru</string>
+ <string>sr</string>
+ </array>
+ <key>CFBundleName</key>
+ <string>KVirc</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>@kvircversion@</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>NSAppleScriptEnabled</key>
+ <false/>
+</dict>
+</plist>
diff --git a/data/resources_mac/Makefile.am b/data/resources_mac/Makefile.am
new file mode 100644
index 00000000..4063b321
--- /dev/null
+++ b/data/resources_mac/Makefile.am
@@ -0,0 +1,8 @@
+EXTRA_DIST = Info.plist.in kvirc.icns
+
+CLEANFILES = Info.plist
+
+all: Info.plist
+
+Info.plist: Makefile
+ sed -e 's,[@]kvircversion[@],$(VERSION),g' < Info.plist.in > Info.plist
diff --git a/data/resources_mac/kvirc.icns b/data/resources_mac/kvirc.icns
new file mode 100644
index 00000000..87fcdac4
--- /dev/null
+++ b/data/resources_mac/kvirc.icns
Binary files differ
diff --git a/doc/COPYING b/doc/COPYING
new file mode 100644
index 00000000..7381eeed
--- /dev/null
+++ b/doc/COPYING
@@ -0,0 +1,302 @@
+This is the KVIrc Irc Client license.
+It is based on the GNU General Public License Version 2.
+It contains all the GPL terms and conditions and adds a special exception
+(see Terms and Conditions , clause 13) to the distribution limitations.
+
+Note that the GPL below is copyrighted by the Free Software
+Foundation, but the instance of code that it refers to is copyrighted by
+Szymon Stefanek and other members of the KVIrc Development Team.
+
+The source code for all versions of KVIrc is available at http://www.kvirc.net
+
+Have fun!
+Szymon Stefanek :)
+
+------------------------------------------------------------------------------
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+ Extended by Szymon Stefanek
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ 13. As a special exception, Szymon Stefanek gives permission to link this
+program with Qt non-commercial edition for Windows, and distribute the
+resulting executable, without including the source code for the Qt
+non-commercial edition in the source distribution. The Qt non-commercial
+edition library is covered by the Qt Non-Commercial license.
+See http://www.trolltech.com for informations.
+
diff --git a/doc/INSTALL-MacOS.txt b/doc/INSTALL-MacOS.txt
new file mode 100644
index 00000000..e0733aeb
--- /dev/null
+++ b/doc/INSTALL-MacOS.txt
@@ -0,0 +1,168 @@
+Thomas Kalla, 29.06.2006
+#########################
+
+This document contains step-by-step instructions for compiling kvirc on a MacOS X system.
+I compiled several versions of kvirc (beginning with 3.0.0 up to recent CVS) on a Powerbook G4, 1.5GHz, 512 MB RAM and MacOS X 10.3.3-9.
+
+
+All this has worked fine several times for me. I've been using KVirc on Mac since May 2004 without any crashes & faults. Only the sound interface does not work, but I have no use for it within an IRC client. However, I cannot guarantee that this instructions will work for you as they do for me and I'm not responsible for any problems or damage you may encounter after following them. You should always understand what you are doing!
+
+
+
+IMPORTANT: These instructions refer to Qt/Mac. If you want Qt/X11 which is included in Fink you are on your own. There is no support for the latter and most probably you don't get a working build.
+
+
+#########################
+Compilation with QT-MAC
+#########################
+
+IMPORTANT: When compiled with QT-MAC, kvirc has to be run out of a bundle! Otherwise the application won't dispatch the keyboard events correctly and will be pretty unusable for you.
+
+A bundle is "just" a special directory structure on Mac systems which contains the application binary, dependant libraries, plugins, modules and other resources. So all we have to do is to run configure with proper paths and relink the binary, libraries and modules with relative paths after the compilation.
+
+For details look at http://doc.trolltech.com/qq/qq09-mac-deployment.html and the documentation on http://developer.apple.com, please.
+
+Prerequisites:
+
+1. Apple XCode
+Get the latest version from Apple. I've been using only V1.5 for building with QT-MAC
+
+2. QT-MAC
+Get the latest V3.*-version from Trolltech.
+
+3. GNU gettext
+Get the latest sources from your favourite GNU mirror.
+
+Prerequisites installation:
+
+1) Install XCode
+If not included on your Panther install media or if you want the latest version, you have to register at http://developer.apple.com (it's free), download XCode and follow the install instructions in the documentation.
+
+2) Install QT-MAC
+You have to compile QT yourself. As far as I know there are no compiled binaries avaiable. Download and unpack the sources and follow the documentation.
+
+I used V3.3.4
+
+Add the following two lines to your ~/.profile file, otherwise the compilation if Qt may fail.
+
+export QTDIR=/Developer/qt-mac-free-3.3.4
+export DYLD_FALLBACK_LIBRARY_PATH=$QTDIR/lib
+
+
+Open a terminal window
+# cd /Developer
+# tar -xjf <your_path_to_the_sources>/qt-mac-free-3.3.4.tar.bz2
+# cd qt-mac-free-3.3.4
+# ./configure -thread -qt-gif -fast -no-exceptions -debug
+# make sub-tools
+
+(If you don't want to build with debug information, remove the "-debug" switch in te configure line. You may also want to change "QMAKE_CFLAGS_RELEASE = -Os" in the mkspec/macx-g++/qmake.conf file to -O2. If you want the tutorial and examples, run "make" instead of "make sub-tools")
+
+3) Install GNU gettext
+If you want non-english locales, you need GNU gettext.
+If you already installed Fink, you already have gettext so you may skip this step.
+
+I used V0.14.5
+
+Open a terminal window
+# cd /Developer
+# tar -xzf <your_path_to_the_sources>/gettext-0.14.5.tar.gz
+# cd gettext-0.14.5
+# ./configure
+# make
+# make install
+
+
+#########################
+KVirc installation:
+
+
+1) Get the KVirc sources:
+
+IMOPRTANT: Only the CVS sources compile cleanly with QT-MAC for now!
+
+# cvs -d:pserver:[email protected]:/cvs login
+
+You will be asked for a password: just hit return.
+
+# cvs -z3 -d:pserver:[email protected]:/cvs co kvirccvs
+
+Run autogen:
+# cd kvirccvs/kvirc
+# ./autogen.sh
+
+
+2) Run configure
+
+The application bundle will be built in the kvirc sources directory.
+Feel free to remove --enable-debug if you don't want to have a debuggable build and use addictional options like --enable-optimisation=2 or --with-big-channels.
+
+# ./configure --enable-pipes --enable-debug --exec-prefix=$(pwd)/KVirc.app/Contents/Resources --prefix=$(pwd)/KVirc.app/Contents --bindir=$(pwd)/KVirc.app/Contents/MacOS --libdir=$(pwd)/KVirc.app/Contents/Frameworks --datadir=$(pwd)//KVirc.app/Contents/Resources --disable-x-support
+
+
+3) Run make
+
+CAUTION!!! Because of a problem with libtool you have to remove or rename the file libqt-mt.la (or libqt.la if you compiled QT without threads). It is located in $QTDIR/lib/. Otherwise the compilation will stop with a link error.
+
+# mv $QTDIR/lib/libqt-mt.la $QTDIR/lib/libqt-mt.la.bak
+
+Now run make and relax :-)
+
+# make
+
+(A debuggable, non-optimized build takes about 40 minutes on my PowerBook.)
+
+
+4) Run make install
+
+# make install
+
+
+5) Relinking
+
+KVirc and its modules depend on libkvilib and libqt which are not in the dynamic linker search path by default. The paths set during the compilation are absolute paths and have to be changed to be realtive to the executable path.
+
+The following commands do this for libkvilib:
+
+# install_name_tool -id @executable_path/../Frameworks/libkvilib.3.dylib $(pwd)/KVirc.app/Contents/Frameworks/libkvilib.3.dylib
+# install_name_tool -change $(pwd)/KVirc.app/Contents/Frameworks/libkvilib.3.dylib @executable_path/../Frameworks/libkvilib.3.dylib $(pwd)/KVirc.app/Contents/MacOS/kvirc
+# find $(pwd)/KVirc.app/Contents -name '*.so' | xargs -n1 install_name_tool -change $(pwd)/KVirc.app/Contents/Frameworks/libkvilib.3.dylib @executable_path/../Frameworks/libkvilib.3.dylib
+
+Now you have to decide whether you want to include libqt within the bundle or not. This is useful if you consider to share your bundle with your friends and they don't want to compile QT themselves.
+
+
+a) You don't want to include libqt within the bundle
+
+Make sure the dynamic linker is able to find libqt. The easiest way is to make symlinks in the /usr/lib directory.
+
+# ln -sf $QTDIR/lib/libqt-mt.3.dylib /usr/lib
+# ln -sf $QTDIR/lib/libqui.1.dylib /usr/lib
+
+
+b) You want to include libqt within the bundle
+
+Copy libqt into the bundle:
+
+# cp $QTDIR/lib/libqt-mt.3.dylib $(pwd)/KVirc.app/Contents/Frameworks/
+
+Relinking commands for libqt:
+
+# install_name_tool -id @executable_path/../Frameworks/libqt-mt.3.dylib $(pwd)/KVirc.app/Contents/Frameworks/libqt-mt.3.dylib
+# install_name_tool -change libqt-mt.3.dylib @executable_path/../Frameworks/libqt-mt.3.dylib $(pwd)/KVirc.app/Contents/MacOS/kvirc
+# install_name_tool -change libqt-mt.3.dylib @executable_path/../Frameworks/libqt-mt.3.dylib $(pwd)/KVirc.app/Contents/Frameworks/libkvilib.3.dylib
+# find $(pwd)/KVirc.app/Contents -name '*.so' | xargs -n1 install_name_tool -change libqt-mt.3.dylib @executable_path/../Frameworks/libqt-mt.3.dylib
+
+6) Cleaning up
+
+The bundle is funtional but is looks better with a nice icon :-)
+Copy the icon file from the data/resources_mac directory to the resources directory and the Info.plist file to the contents directory
+
+# cp data/resources_mac/kvirc.icns $(pwd)/KVirc.app/Contents/Resources
+# cp data/resources_mac/Info.plist $(pwd)/KVirc.app/Contents
+
+
+7) Enjoy :-)
+
+Open Finder, move your bundle into a better location (e.g. /Applications), and double click to start.
+
+
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644
index 00000000..c23bd7d6
--- /dev/null
+++ b/doc/Makefile.am
@@ -0,0 +1,11 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+SUBDIRS = scriptexamples
+
+EXTRA_DIST = COPYING *.txt
+
+
+tmpdir = $(licensedir)
+tmp_DATA = COPYING
diff --git a/doc/firefox.hack.txt b/doc/firefox.hack.txt
new file mode 100644
index 00000000..4cdd239e
--- /dev/null
+++ b/doc/firefox.hack.txt
@@ -0,0 +1,32 @@
+Firefox Hack Guide - HelLViS69 - 2007.02.08
+-------------------------------------------------------------------------------
+
+@ Prologue
+
+This guide is meant to be a simple hack to add protocols handlers to Firefox,
+such as irc://
+This guide is been tested on Linux, Mac and Windows.
+
+@ How To
+
+- Open Firefox at the url about:config
+ You'll find the Firefox configuration
+
+- Click with right button, select New, then Boolean
+ As Name insert network.protocol-handler.external.irc and true as Value
+
+- Click with right button, select New, then String
+ As Name insert network.protocol-handler.app.irc
+ As Value you have to insert the path of KVIrc binary, eg /usr/bin/kvirc ,
+ `which kvirc` or C:\Programs\Firefox\firefox.exe
+
+- Make sure that network.protocol-handler.expose-all are setted as true
+
+With these simple steps you can handle irc://irc.something.tld from Firefox
+
+If you want to add more protocols handlers, just follow the same steps changing
+the protocol you want to add in firefox and the application you want to use to
+handle the new protcol
+
+Elvio Basello
+<HelLViS69>
diff --git a/doc/hackers.guide.txt b/doc/hackers.guide.txt
new file mode 100644
index 00000000..5eddcc8c
--- /dev/null
+++ b/doc/hackers.guide.txt
@@ -0,0 +1,935 @@
+KVIrc hackers guide - Szymon Stefanek - 2004.05.26
+-------------------------------------------------------------------------------
+
+This is an always-work-in-progress guide for KVIrc source code hackers.
+
+-------------------------------------------------------------------------------
+The source tree
+-------------------------------------------------------------------------------
+
+/ Root directory.
+| This is almost completely automake and autoconf stuff.
+|
+|-- admin Administrative files used during the compilation
+| automake, autoconf and document generation scripts.
+|
+|-- data Data for the KVIrc program. Most of this stuff is
+| | installed in $(prefix)/share/kvirc/$VERSION/
+| |
+| |-- applnk *.desktop and menu entries for KDE
+| |
+| |-- config Default configuration files
+| |
+| |-- defscript The default script
+| |
+| |-- deftheme The default themes
+| |
+| |-- doctemplates Some document templates that get parsed by gendoc.pl
+| | when the html documentation is generated
+| |
+| |-- helppics Data pictures for the html documentation
+| |
+| |-- icons Icons in various sizes
+| |
+| |-- man The manual pages
+| |
+| |-- mimelnk *.desktop entries for the *.kvs and *.kvc file types
+| | that are respectively kvirc scripts and kvirc
+| | configuration files. This is all stuff for KDE
+| |
+| |-- msgcolors Default sets of message colors
+| |
+| |-- pics Most of the pictures that KVIrc uses
+| |
+| |-- protocols irc:// and irc6:// protocol definitions for konqueror
+| |
+| `-- resources Resources for the windows compilation.
+|
+|-- debian Debian mantainer's stuff
+|-- debian.robin
+|
+|-- doc Any kind of documentation
+| |
+| `-- scriptexamples Various script examples
+|
+|-- no-dist Stuff that does NOT end in the final distribution
+
+|-- po Internationalisation (i18n :)
+| |
+| |-- kvirc Translations for kvilib and the main KVIrc executable
+| |
+| `-- modules Translations for the modules
+|
+|-- scripts Some SHELL scripts. Probably only config is used atm.
+|
+|-- src The sources
+| |
+| |-- kvilib KVIrc library. Any source code snippet that can be
+| | | abstracted enough to not depend on the KVIrc core
+| | | ends up here. kvilib depends only on external stuff.
+| | |
+| | |-- build This is the build directory for automake.
+| | | The main Makefile.am is here.
+| | |
+| | |-- config The headers that control the compile-time
+| | | configuration.
+| | |
+| | |-- core The really basic classes: strings, memory management,
+| | | error code defines etc..
+| | |
+| | |-- ext Here ends everything that has no other specific place
+| | | in kvilib.
+| | |
+| | |-- file File management and file utilities
+| | |
+| | |-- include Compile-time generated include files. these are
+| | | only links.
+| | |
+| | |-- irc IRC protocol related classes.
+| | |
+| | |-- net Networking related stuff: sockets, ssl, http ...
+| | |
+| | |-- system System function wrappers or stuff that depends
+| | | on the strict operating system support.
+| | | Threads, localisation, env, time, shared library..
+| | |
+| | `-- tal Toolkit Abstraction Layer: wrapper classes that
+| | inherit from KDE* or QT classes, depending on the
+| | compilation type.
+| |
+| |-- kvirc The KVIrc executable sources
+| | |
+| | |-- build Again the build directory for automake.
+| | | Makefile.am is here.
+| | |
+| | |-- include Again compile-time include files. Only links.
+| | |
+| | |-- kernel The core of the executable. The main function is
+| | | here. Here is also the KviApp object and the options
+| | | core management.
+| | |
+| | |-- kvs The NEW shiny scripting engine.
+| | | At the time of writing this two-stage UNICODE
+| | | KVS interpreter is not finished yet and thus almost
+| | | nothing here is really hardwired to the rest
+| | | of the core.
+| | |
+| | |-- module The module management stuff: the loader, the module
+| | | interface definitions etc..
+| | |
+| | |-- sparser The IRC server parser
+| | |
+| | |-- ui User interface. 99% of the core GUI is here.
+| | | Here you can find KviFrame (the main window)
+| | | KviMdiManager, KviWindow, KviChannel, KviQuery,
+| | | KviConsole, KviInput, KviIrcView and KviUserListView
+| | | which are the most common widgets in kvirc.
+| | |
+| | `-- uparser The currently used scripting engine (user parser).
+| | If you want to implement just some simple features
+| | (like new commands or functions) then this is the
+| | place to look at. If you want to make some long
+| | term hacks then it's probably better to look at the
+| | kvs directory instead.
+| |
+| `-- modules Yes, the modules :D
+| |
+| |-- about The about dialog
+| |
+| |-- aliaseditor The alias editor window
+| |
+| |-- avatar Avatar manipulation stuff
+| |
+| |-- chan $chan.* scripting stuff
+| |
+| |-- channelsjoin The channelsjoin dialog
+| |
+| |-- clock This was a clock applet but actually it is not
+| | working and thus not compiled.
+| |
+| |-- codetester The codetester window
+| |
+| |-- config config.* scripting stuff
+| |
+| |-- dcc This module implements the whole DCC protocol.
+| | Windows, transfer threads etc: everyting is here.
+| |
+| |-- dialog dialog.* scripting stuff
+| |
+| |-- dockwidget The dock widget for KDE and windows.
+| |
+| |-- editor The scripting editor core widget.
+| |
+| |-- eventeditor The event editor window
+| |
+| |-- file file.* scripting stuff
+| |
+| |-- filetransferwindow The file transfers window
+| |
+| |-- help The help browser
+| |
+| |-- http http.* scripting stuff
+| |
+| |-- ident A small ident daemon
+| |
+| |-- iograph Another applet that is not compiled for now.
+| |
+| |-- lag Lag meter
+| |
+| |-- lamerizer A crypt/text-transformation engine
+| |
+| |-- links The links window
+| |
+| |-- list The channel list window
+| |
+| |-- log log.* scripting stuff
+| |
+| |-- logview The logviewer window
+| |
+| |-- mask mask.* scripting stuff
+| |
+| |-- mircimport A server entry importer from the mirc's servers.ini
+| |
+| |-- mp3player mp3player.* scripting stuff
+| | This is an interface to the xmms program on unix
+| | and to winamp on windows. On unix libxmms.so is
+| | loaded at runtime. On windows there is also
+| | a gen_kvirc.dll plugin for winamp that needs
+| | to be loaded by the winamp program in order to make
+| | communications with KVIrc possible.
+| |
+| |-- my my.* scripting stuff
+| |
+| |-- objects All the object oriented scripting stuff
+| |
+| |-- options The options dialog
+| |
+| |-- popupeditor The popup editor window
+| |
+| |-- raweditor The raw events editor window
+| |
+| |-- regchan regchan.* scripting stuff
+| |
+| |-- reguser reguser.* scripting stuff
+| |
+| |-- rijndael A crypting engine
+| |
+| |-- setup The module that is loaded when KVIrc is started
+| | for the first time. It contains the initial
+| | configuration wizard.
+| |
+| |-- sharedfile sharedfile.* scripting stuff
+| |
+| |-- sharedfileswindow The shared files window
+| |
+| |-- snd snd.* scripting stuff
+| |
+| |-- socketspy The socketspy window
+| |
+| |-- spaste spaste.* scripting stuff
+| |
+| |-- str str.* scripting stuff
+| |
+| |-- system system.* scripting stuff
+| |
+| |-- tb_options The options toolbar
+| |
+| |-- tb_scripting The scripting toolbar
+| |
+| |-- tb_winops The window operations toolbar
+| |
+| |-- term The embedded terminal emulator (needs KDE)
+| |
+| |-- tip The tip of the day
+| |
+| |-- tmphighlight tmphighlight.* scripting stuff
+| |
+| |-- toolbar toolbar.* scripting stuff
+| |
+| |-- toolbareditor The toolbar editor window
+| |
+| |-- url The url window
+| |
+| `-- window window.* scripting stuff
+|
+`-- win32build The directory for Windows builds
+
+
+[pragma@phoenix src]# cat $(find ./ -name \*.h) | wc -l
+ 60189
+[pragma@phoenix src]# cat $(find ./ -name \*.cpp) | wc -l
+ 164400
+
+
+-------------------------------------------------------------------------------
+The coding style
+-------------------------------------------------------------------------------
+
+The coding style helps the reader a lot. In a large project you tend
+to forget the exact meaning of some functions or variables.
+A good naming convention makes the code "auto commenting": by looking
+at the name of a variable or function you can understand its type
+and guess its meaning and usage.
+Following these rules is not strictly mandatory (maybe with the
+exception of the first one) but it is highly appreciated.
+
+- INDENT WITH TABS (the only MANDATORY rule)
+
+ Go back to the line above and read it again.
+
+ INDENT, TABS.
+
+ Tabs can be assigned any number of spaces in any decent source code
+ editor.
+
+ Actually 95% of the KVIrc code is indented in BSD/Allman style
+ but the K&R style is also tolerated.
+
+- Try to use the following variable naming conventions
+
+ g_* : global variables
+ m_* : member variables
+ no prefix : any other scope
+
+ [prefix]pName : pointer to something named Name
+ [prefix]iName : integer (signed) variable named Name
+ [prefix]uName : unsigned integer
+ [prefix]szName : string named Name
+ [prefix]dName : floating point vars
+ [prefix]eName : enumerated value variables
+ [prefix]tName : kvi_time_t values
+
+ i,j,k,tmp,aux,p : short names are used for short term variables
+ like the temporaries used in functions.
+ Do NOT name a member or global variable i.
+
+ So finally:
+
+ g_pApp is a global pointer to the application object
+ m_pData is a member variable pointer to some data object
+ m_szName is a string member variable named Name
+ szPippo is a string variable named Pippo
+ tmp is a short term temporary variable
+ i,j,k are probably some short term iteration variables
+ ...
+
+
+- Function names
+
+ C++ class member functions
+ Function names start with lower case letters. Each word except the first
+ one should start with an upper case letter. Try to use descriptive names
+ and not acronyms or shortcuts (unless they are really obvious).
+ For example:
+ fillUserList, setAutoDelete, joinChannel, markQueryAsDead ...
+ Standalone C/C++ functions
+ For standalone functions you can follow the C++ rule but the
+ kernel-like syntax is also acceptable (all low case letters with
+ underscore separators).
+ If you're defining a widely used C function (maybe in kvilib)
+ then adding a kvi_ prefix is also a good idea.
+
+- Class names
+
+ The class names start with an upper case letter. In most cases
+ there is a Kvi prefix and the rest follows the rule for function names.
+ KviApp, KviConsole, KviWindow, KviStr, KviConfig, KviUserParser ...
+
+ If possible, do not use "shortcut" names.
+ Actually KviCommand is preferred over KviCmd unless the KviCmd class
+ is REALLY widely used across the source (like KviStr for example).
+
+ This helps a lot in remembering the class names: with the shortcuts
+ you're often forced to open the corresponding header file to look up
+ which letters have been left off...
+
+ Structure names usually follow the same conventions.
+
+- Simple data types
+
+ If you need to define a simple data type then something like kvi_typename_t
+ is a good choice.
+
+- Preprocessor
+
+ Preprocessor macros should be all uppercase with undescores separating
+ words.
+
+- Comment the code
+
+ You don't need to write poems: two lines describing what a function
+ does will be enough.
+ If a function is simple and its meaning is clear from its name
+ then comments are not needed (this is why we're using expressive
+ variable and function names).
+ Single line C++ comments are preferred over the C style comments.
+
+-------------------------------------------------------------------------------
+Coding tips
+-------------------------------------------------------------------------------
+
+- Don't use C++ exceptions: they make the code unmanteinable in the long term
+
+- If you need to access some system function then first look if there is
+ an existing kvi_* wrapper and use that one instead. The wrapper is there
+ because of portability issues.
+
+- Don't use the STL features: anything that you need IS either in the Qt library
+ or in kvilib.
+
+- Windows compilation has COMPILE_ON_WINDOWS #defined and a KDE compilation
+ has COMPILE_KDE_SUPPORT #defined.
+
+- Modularize, abstract, modularize, abstract ...
+
+- When your objects need to be allocated with new in a module and destroyed
+ in the kvirc core or kvilib (or viceversa) then derive the class from
+ KviHeapObject that will provide the new and delete operators.
+ This is a workaround for Windows that uses a separate
+ heap for each executable module (*.exe or *.dll). Data allocated on one
+ heap must be freed on the same heap.
+
+-------------------------------------------------------------------------------
+The strings
+-------------------------------------------------------------------------------
+
+This is the list of the various string types used in KVIrc.
+
+(const) char *
+ The classic C null terminated string.
+
+KviStr
+ The basic KVIrc string class. It has been first implemented as a hack
+ around various bugs of the original QString class (the NOT unicode one
+ that now has been renamed to QCString). It has the property of being
+ always non null and it has no reference counting.
+ Actually many occurences of this string are replaced by QString
+ (especially in GUI modules) to handle correctly the UNICODE character set.
+
+QString
+ The Qt UNICODE string. See the Qt documentation for details.
+ This is the string that should be mostly used in KVIrc in the near future.
+ Take care: in general it is NOT null terminated.
+ There is a KviQString wrapper namespace (#include "kvi_qstring.h") that
+ adds some missing functionality. For example,
+ KviQString::sprintf(qstring_buffer,qstring_format,...)
+ allows formatting a QString with a format string that is a QString itself
+ (and thus it is UNICODE).
+ QString uses reference counting. An assigment of a QString to another
+ QString does NOT make an immediate copy, it just increases the reference
+ count instead. The copy is made at the first modification of one of the
+ two strings (the operation is called "detaching"). While generally this
+ is not an issue, you must take care when passing QString objects between
+ concurrent threads.
+
+(const) QChar *
+ The array of Qt chars. This is usually obtained by callling
+ KviQString::nullTerminatedArray() which itself is a hack...
+ This array is used in some functions that were written for
+ const char * strings and haven't been ported completely.
+
+QCString
+ The Qt non UNICODE string. See the Qt documentation for details.
+
+The Goal:
+ - Use KviStr only where it is strictly needed (for protocol or performance
+ related issues). One of such places is the IRC server parser (but there
+ are more).
+ - Use QString everywhere in the user interface and in any other
+ place where KviStr is not strictly needed. Save and restore
+ strings in the UTF8 format.
+ - Get rid of ALL occurences of KviWStr and kvi_wchar_t * : DONE on 2004.11.02
+
+-------------------------------------------------------------------------------
+Strings and localisation
+-------------------------------------------------------------------------------
+
+Any string that is shown to the user should be translated to the user's local
+language. To make a string translaetable use one of the __tr* macros.
+The most common one across the sources is __tr("string") that returns
+a const char * translation of "string".
+Actually __tr() is being phased out in favor of __tr2qs() that returns
+a QString instead of a const char * pointer.
+The arguments of these macros are extracted from the sources by the
+gettext program and are used to build the translation hashes loaded at runtime.
+Remember that the arguments must be string constants and not variables.
+
+The list that follows describes briefly the localisation macros
+defined in kvi_locale.h
+
+CSTRING is an US-ASCII null terminated C string.
+
+__tr2qs(CSTRING) : translates CSTRING to a QString &
+__tr(CSTRING) : translates CSTRING to another CSTRING
+ This should disappear in favor of __tr2qs
+
+These macros are NOT THREAD SAFE: you can't call them from non GUI threads.
+If you need to translate some string in a slave thread (probably when
+sending a message event to the main GUI thread) then you need to use the
+__tr_no_lookup() (on the slave side) and __tr_no_xgettext() (on the master side).
+
+
+-------------------------------------------------------------------------------
+Anatomy of an IRC context
+-------------------------------------------------------------------------------
+
+
+KviIrcContext [persistent set of resources]
+ |
+ +--KviIrcConnection [changed at every connection, with (almost) all the children]
+ | |
+ | +--KviIrcConnectionTarget [target server, proxy to use and address to bind]
+ | | |
+ | | +--KviIrcServer
+ | | |
+ | | +--KviProxy [null if not using a proxy]
+ | |
+ | +--KviIrcLink [high level network link: trasmits and receives IRC messages]
+ | | |
+ | | +--(KviIrcConnectionTargetResolver) [kickstarts the connection]
+ | | |
+ | | +--KviIrcSocket [low level network link: transmits packets of bytes]
+ | |
+ | +--KviPtrList<KviChannel> [active channels]
+ | |
+ | +--KviPtrList<KviQuery> [active queries]
+ | |
+ | +--KviIrcConnectionUserInfo [nick, user, host, local ip...]
+ | |
+ | +--KviIrcConnectionServerInfo [name, supported modes, supported flags...]
+ | |
+ | +--KviNotifyListManager [kvi_notifylist.h]
+ | |
+ | +--...
+ |
+ +--KviConsole [persistent]
+ |
+ +--(KviLinksWindow), (KviListWindow) [other may-be-persistent context windows]
+ |
+ +--KviPtrList<KviChannel> [dead channels]
+ |
+ +--KviPtrList<KviQuery> [dead queries]
+ |
+ +--...
+
+KviIrcContext is the set of resources used to deal with a single irc
+connection. An irc context is persistent and reusable until the user decides to
+destroy it. The irc context owns the console window (KviConsole) that is
+strictly tied to the lifetime of the context itself. The console is created
+when the IRC context is created and when the user closes the console then
+the IRC context is destroyed too.
+In earlier KVIrc versions there was only KviConsole that did the role of both
+KviConsole and KviIrcContext, but since the class has grown in complexity
+to a point where it started to be unmantainable the splitting has been unavoidable.
+
+KviIrcConnection rappresents an IRC connection: it is the highest protocol
+implementation on the KVIrc's networking stack. A KviIrcConnection
+owns a KviIrcLink (that is the lower level). KviIrcConnection is NOT reusable:
+it lives only for the lifetime of a single IRC connection inside the parent
+irc context. KviIrcConnection talks to the parent's KviConsole.
+The connection target is a KviIrcConnectionTarget class and it contains
+the KviIrcServer, KviProxy and the eventual bind address. The owned target
+is passed down the networking stack to the lower level classes.
+The connection contains also the lists of queries and channels currently opened.
+When a channel or query is marked as dead then its ownership is passed to
+the KviIrcContext (it becomes permanent between two connections).
+The connection owns a lot of other interesting classes to take a look at:
+KviIrcConnectionUserInfo, KviIrcConnectionServerInfo, KviNotifyListManager...
+
+KviIrcLink is the middle level of the KVIrc's networking stack.
+It handles host lookups, the connection startup and data stream input and output.
+This is meant to be a "pluggable" class: it should be flexible enough to allow
+inheritance and protocol overriding. KviIrcLink owns and manages the KviIrcSocket.
+It takes care of extracting IRC protocol messages from the KviIrcSocket raw data
+stream and of formatting the outgoing messages by adding the trailing CRLF.
+The host lookups are done by the means of KviIrcConnectionTargetResolver.
+
+KviIrcSocket is the lowest level of the KVIrc's networking stack.
+It manages the connection through proxies and accesses the system level
+socket directly. The incoming data stream is passed to KviIrcLink::processData()
+and the outgoing data stream is received through KviIrcSocket::sendPacket()
+KviIrcSocket also manages the outgoing send queue and implements the
+"anti-server-flood" algorithm.
+This class doesn't know anything about the IRC protocol: it just receives
+and sends out raw data packets!
+
+
+.......
+
+kvirc (KviApp)
+ |
+ +-frame window (KviFrame)
+ |
+ +-irc_context 1 (KviIrcContext)
+ | |
+ | +-irc_connection (KviIrcConnection)
+ | | |
+ | | +-list of channels
+ | | |
+ | | +-list of queries
+ | | |
+ | | +-irc_link
+ | |
+ | +-console (KviConsole)
+ |
+ +-irc_context 2
+ | ...
+
+
+KviConsole <-> KviIrcContext
+
+-------------------------------------------------------------------------------
+Important global variables
+-------------------------------------------------------------------------------
+
+All these variables are almost alwas set (and point to a real alive object).
+The only critical moments where these variables must be double checked
+are the startup phase and the shutdown phase.
+Do not attempt to change the values of these variables unless you REALLY know
+what you're doing.
+
+
+KviApp * g_pApp;
+ The one and only application object
+ Declared in "kvi_app.h"
+ Always set.
+
+KviServerParser * g_pServerParser;
+ The one and only server parser
+ Declared in "kvi_sparser.h"
+ Almost always set (critical phases at early startup and late shutdown)
+
+KviFrame * g_pFrame;
+ The one and only main window
+ Declared in "kvi_frame.h"
+ Almost always set (critical phases at early startup and late shutdown)
+
+KviWindow * g_pActiveWindow;
+ The one and only active window
+ Declared in "kvi_window.h"
+ Almost always set (critical phases at early startup and late shutdown)
+
+Note for C++ purists: In fact we could be using the protected singleton pattern
+on most of these variables and access it by the means of Class::instance().
+The global var names save some typing and can be written by any other class
+without having to worry about friends or write-access functions.
+
+-------------------------------------------------------------------------------
+The charset mess
+-------------------------------------------------------------------------------
+
+IRC is not UNICODE :/ ... sigh ...
+The fact is that every user wants his local encoding to be used.
+KVIrc tries to be even smarter and allow a different encoding for each window.
+This is a difficult task since we simply can't translate the strings that
+come from and go to the server just at the socket level.
+
+User -> Server
+
+We need to allow the local user to write UNICODE data, encode it to the
+proper charset (again depending on the window the text was typed in) and
+send it down to the server.
+When the user writes commands this is going to become a little mess since
+nicknames, channel names or usernames may or may not be encoded in the
+encoding of the current window.
+
+Server -> User
+
+We need to carry the plain 8bit data (in whatever encoding it is) from the
+server up to the GUI level, then convert to UNICODE by choosing the proper
+decode routine just when we know in which window the text is going to be
+displayed. In (non RFC) servers that allow encoded characters in nicknames
+this is going to become a real mess since the same 8bit nick may result in
+a different UNICODE string depending on the window it was "decoded" on.
+
+(Partial) Solution:
+- Each server has an encoding set. If empty then the network encoding is used.
+- Each network han and encoding set. If empty then the default system encoding
+ is used.
+- The system encoding is set by the user. If empty then the encoding is guessed
+ from the user's locale.
+- Each window (with the exception of the console) has its own encoding used
+ ONLY for private messages and notices. This allows one to join
+ a channel with a "special" encoding and still see what's being written in.
+ The real utility of this last feature still needs to be evaluated.
+
+-------------------------------------------------------------------------------
+Output levels
+-------------------------------------------------------------------------------
+
+There are few macros that specify the output level that the user desires.
+These marcors are defined in "kvi_options.h"
+
+_OUTPUT_MUTE: returns true if the user wants KVIrc to spit less useless output
+ possible. The goal of the user is to chat on IRC so print only data
+ relevant to this. If stuff goes wrong then print the errors in
+ short forms (one liners) and do it only in case of serious ones.
+ Don't print any transient error or warning.
+ Usage: if(!_OUTPUT_MUTE)output...
+
+_OUTPUT_QUIET: returns true if the uses wants KVIrc to spit less output than
+ normal. The goal of the user is to chat visually on IRC so print
+ only data relevant to this.
+ Usage: if(!_OUTPUT_QUIET)output...
+
+<normal level>: Reference output level: here stuff is printed unconditionally.
+ Usage: output...
+
+_OUTPUT_VERBOSE: returns true if the users allows KVIrc to print some
+ additional output. This is intended mainly for scripters and
+ curious pepole that want detailed informations about what is going
+ on around them.
+ Usage: if(_OUTPUT_VERBOSE)output...
+
+_OUTPUT_PARANOIC: returns true if the users allows KVIrc to print anything
+ including debug info. This is intended mainly for developers.
+ Usage: if(_OUTPUT_PARANOIC)output...
+
+-------------------------------------------------------------------------------
+Rule for safe text output
+-------------------------------------------------------------------------------
+
+If the format string you're going to output is not constant (i.e. it
+comes from the server) you MUST use KviWindow::outputNoFmt() instead
+of KviWindow::output().
+
+BAD:
+ QString szText = pConnection->decodeText(msg.safeTrailing());
+ pWindow->output(KVI_OUT_SOMETHING,szText); <--potential crash/security hole
+
+GOOD:
+ QString szText = pConnection->decodeText(msg.safeTrailing());
+ pWindow->outputNoFmt(KVI_OUT_SOMETHING,szText); <--faster and no crashes
+
+-------------------------------------------------------------------------------
+KVIrc (and script) versioning
+-------------------------------------------------------------------------------
+
+- Standard definition
+
+The KVIrc versioning follows a really common standard: we use a
+string of numbers separated by dots with decreasing weight from left to right.
+
+ <N1>.<N2>.<N3>.<N4>.....
+
+where each <NX> is a number.
+
+Theoretically there is no limit on the parts the version can be composed
+of but in fact we use either three or four part versions. The omitted
+parts on the right are implicitly assumed to be 0.
+
+The first part is called the major release number and it is bumped
+up only when really big changes occur in the source tree. A bump from N to N+1
+in the major version number means that a great milestone has been achieved
+and the software is really different from what it was in the moment
+when the major number was bumped from N-1 to N. This usually also means
+that the software might be somewhat incompatible with the previous major release.
+
+When the major number is bumped up all the following parts are reset to 0
+(and could be even temporairly omitted).
+
+The second part is called minor release number and it is increased
+more often than the major. A bump from N to N+1 in the minor version number
+means that an ordinary (small) development milestone has been achieved.
+Software versions with the same major and close minor numbers are likely
+to be totally compatible with each other.
+
+When the minor number is bumped up all the following parts are reset to 0.
+
+The third part is called (public) revision number and it is increased often.
+A bump from N to N+1 in the revision number usually means that a set of bugfixes
+or some new features have been included in the software. Compatibility
+should be assumed unless explicitly noted. Again, when the revision number
+is bumped up all the following parts are reset to 0.
+
+The fourth part is actually used only on the svn tree and it is usually not
+present in the official public releases (it is assumed to be 0 for comparison
+purposes). It is called the "internal revision" number and when taken
+out of the version string it may assume a meaning on its own (but it's not
+required in fact). KVIrc uses the ISO sources date in the format YYYYMMDD for this
+number. The sources date number is defined in src/kvilib/config/kvi_sourcesdate.h
+and is also displayed by kvirc --version. Some packagers prefer to use the svn
+revision number instead of the sources date. This is not "official" but it's
+still ok as long as it follows the "order-preserving" rule (see below).
+
+It is unlikely that you will find a KVIrc versioned with more than
+four numbers... but if you will (for some strange reason) then it will
+still follow the same rules: it will be increased for yet minor changes
+(two versions within a single day ?) and will be reset to (implicit)
+zero when the fourth part changes.
+
+- Comparison of version strings
+
+The comparison of two version strings is defined as follows.
+Let N1.N2.N3.N4.N5..... and M1.M2.M3.M4.M5..... be version strings.
+To find out which one is greater compare each couple of numbers Ni-Mi at the same
+position i (with the same weight) until Ni and Mi differ or both Ni and
+Mi are omitted. If both Ni and Mi are omitted then the version strings
+are equal, otherwise the greater version string is the one that
+contains the greater of the Ni - Mi couple. Easy, right ?
+
+This means that to compare 3.2.6.3.4 and 3.2.9 you first compare
+3 with 3 and find that they are equal. Then you compare 2 with 2
+and find that they are equal. Then compare 6 with 9 and find that
+they are different and 9 is greater. This allows you to say that
+the first version string is greater than the second.
+
+To compare 3.2.6.1 with 3.2.6 you compare 3 and 3, 2 and 2, 6 and 6
+and 1 with (implicit) 0, that tells you that the first version string
+is greater than the second one.
+
+This also means that 3 and 3.0.0 are assumed to be EQUAL since
+the algorithm above finds that at the fourth comparison step
+both numbers are omitted (thus zero from there up to infinity).
+
+This comparison function is monotonically increasing or in
+other words order-preserving. This is a *requirement* for a consistent
+versioning scheme.
+
+- Package versioning schemes with letters
+
+It is common for packages to add letters to some of the parts
+of the version string. This causes the string to lose the
+advantage of being universally comparable but it might still
+define a consistent scheme for some package line. In the case
+that letters are added to a version string (like 3.2.6.svn10)
+we say that it is comparable only to the version strings
+that have the same letter pattern: 3.2.6.svn10 and 4.3.1.svn344
+are comparable but 3.2.6.svn10 and 3.2.6.cvs15 are not.
+For comparable strings we strip the letters in order to make the comparison.
+
+- Stable and unstable versions
+
+Our numbering scheme does NOT tell which versions are stable
+and which are unstable. The versions are declared to be (more or less) stable
+by other means (read: the mailing list and the www site).
+It is true, tough, that stable versions are likely to have
+more numbers omitted (read: 3.5 looks more "stable" than 3.4.5.43),
+but this is not a strict requirement. It is also true that
+almost all "unstable" versions come out from the svn tree and
+usually contain all the four parts.
+
+- Official, semi-official and unofficial packages
+
+We tend to have three types of packages. The official packages are the
+ones considered to be stable and released on the site in all the supported forms
+(source and various kinds of binaries). The official releases are also announced
+in tracker sites and spread between distributors. Since "most" stable, the
+official releases are the ones likely to be included in the OS distributions.
+The official packages have md5 sums and a gpg signature of one of the KVIrc
+developers (with a public key available from a "trusteable" location such
+as the KVIrc web site).
+
+The semi-official packages are snapshots of the source tree made when
+some important changes have occured. They are announced on the KVIrc site
+only and are likely to be stable (but are not declared officially to be so).
+The semi-official packages usually are at least in the source form but
+there are likely to be some binaries available too.
+We do not sign the semi-official packages but it's still somewhat
+granted that WE (the KVIrc Development Team) make them and thus the
+source can be trusted.
+
+The unofficial packages are random snapshots of the svn source tree made
+by anyone who wants to do it at any time. They are not announced on the KVIrc
+web site (but might be uploaded to ftp.kvirc.net) but rather announced and available
+at some other internet location. Since we always try to keep the svn
+tree clean and compilable they should work fine but there is no guarantee.
+There is no rule for the unofficial package format: there might be source-only
+or binary only packages. We *suggest* to use the four part version string format
+but in fact they might contain third party patches and even follow their own
+derived version numbering scheme. The general rule is: we don't control
+the unofficial packages and don't provide support if they don't compile/work
+as expected the user/packager is on his own.. but we'll try to be helpful,
+if possible :)
+
+- Putting it all together
+
+At the moment of writing the KVIrc svn tree has version 3.2.6.20070115.
+Today is 15 Jan 2007 and the current svn revision number is 174.
+The latest "semi-official" release was 3.2.6 (where the internal revision number
+was omitted and implicitly assumed to be 0).
+If tomorrow we had to emit a quick fix for the semi-official release we'd either
+use 3.2.7 (increasing the public revision for a large set of bugfixes) or
+(unlikely) 3.2.6.20060116 (expliciting the internal revision number for a small
+set of quick, and probably dirty, bugfixes). The next "semi-official"
+release is likely to be 3.2.7 while the next official stable release
+might be 3.3, 3.4 or even 4.
+
+-------------------------------------------------------------------------------
+Porting to Qt 4.x (while mantaining Qt 3.x compatibility) (Work In Progress)
+-------------------------------------------------------------------------------
+
+For the moment, in random order:
+
+- Avoid using QString::null, use KviQString::empty instead.
+ This is because Qt 4.x does NOT have a null static variable. Qt 4.x in fact
+ does not have the distinction between null and empty strings (Note that for
+ KviStr this choice was made since the beginning).
+ Do NOT replace all the uses of QString::null with QString() (as the qt 4.x
+ porting documentation suggests) since for Qt 3.x this construct is SLOW.
+
+- We're building a compatibility layer in kvilib.
+ Before using ANY Qt class, look if there is an override in kvilib.
+ In fact always, prefer Kvi* classes over the Q* ones and include
+ the "kvi_*.h" files instead of the <qt*.h> ones.
+
+- Widgets will be probably abstracted in kvilib/tal.
+
+- Qt 4.x has no QCString anymore. It uses QByteArray instead. From my own
+ point of view this is ugly since the name is misleading and QByteArray
+ is forced to mantain the null terminator which is not needed
+ in normal "byte array" operations...but well, we have to live with it.
+ kvilib has kvi_qcstring.h that defines the KviQCString MACRO.
+ It expands to QCString under Qt 3.x and QByteArray under Qt 4.x.
+
+- Use:
+ #ifdef COMPILE_USE_QT4
+ to check if the compilation requires Qt 4.x or Qt 3.x.
+ Later this *might* be automatically replaced with
+ #if QT_VERSION >= 0x040000
+
+- Use:
+ ./configure --enable-debug --enable-qt4 --with-qt4-moc=/path/moc
+ make clean
+ make
+ to switch to Qt 4.x
+ Use:
+ ./configure --enable-debug
+ make clean
+ make
+ to switch back to Qt 3.x
+
+- Use less possible Qt3Compat features.
+
+- Before committing to the svn always test your changes under Qt 3.x: this is
+ the primary goal for now: keeping 3.x compatibility.
+ Qt 3.x-only developers are encouraged (but not required) to test their
+ changes agains Qt 4.x.
+
+- Use the KviQString::* wrapper functions around QString (take a look at
+ kvi_qstring.h) even if there exist QString functions that do the same
+ thing. This is because the QString interface has changed a lot between
+ Qt 3.x and Qt 4.x and KviQString introduces a compatibility layer.
+
+- Do not use the "char * c = KviQString::toUtf8(string).data();" construct.
+ It leads to crashes on many compilers since the returned KviQCString
+ goes out of scope just at the end of the instruction.
+
+-------------------------------------------------------------------------------
+Code documentation
+-------------------------------------------------------------------------------
+
+KVIrc is LARGE. We need to start documenting the source code if we want
+to understand our own code in a year from now and if we want help from
+others.
+
+Use doxygen.
+
+There is a Doxyfile in the admin subdirectory. You can either
+run doxygen from there or simply type "make devdocs" from the
+top directory of the source tree.
+Then take a look at doc/api/html/annotated.html
+
+Let's also try to document the code we write: the doxygen syntax
+is trivial and you can find a 5 minute tutorial by googling.
+
diff --git a/doc/scriptexamples/Makefile.am b/doc/scriptexamples/Makefile.am
new file mode 100644
index 00000000..a63d4435
--- /dev/null
+++ b/doc/scriptexamples/Makefile.am
@@ -0,0 +1,7 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+SUBDIRS = antiidle minesweeper mp3share playing runmenu simplehttp tutorial
+
+EXTRA_DIST = *.kvs
diff --git a/doc/scriptexamples/README b/doc/scriptexamples/README
new file mode 100644
index 00000000..be35ddce
--- /dev/null
+++ b/doc/scriptexamples/README
@@ -0,0 +1,6 @@
+This directory and the subdirectories contain a set of KVIrc scripting examples/tests.
+
+The *.kvs files in this directory are mostly tests written while implementing scripting
+language features. They're rather simple (but also useless) so you can use them to learn basic scripting :)
+
+The subdirectories contain more complex scripts written with the demonstration purpose.
diff --git a/doc/scriptexamples/antiidle/Makefile.am b/doc/scriptexamples/antiidle/Makefile.am
new file mode 100644
index 00000000..840a6b4e
--- /dev/null
+++ b/doc/scriptexamples/antiidle/Makefile.am
@@ -0,0 +1,5 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+EXTRA_DIST = antiidle.kvs
diff --git a/doc/scriptexamples/antiidle/antiidle.kvs b/doc/scriptexamples/antiidle/antiidle.kvs
new file mode 100644
index 00000000..a4b59cca
--- /dev/null
+++ b/doc/scriptexamples/antiidle/antiidle.kvs
@@ -0,0 +1,159 @@
+#
+# anti idle script
+# : some people like it, some people need it
+# : by Balboy :))
+#
+
+# creating the main alias
+
+alias(aidle)
+{
+ # using a switch to see what option has been selected
+ switch($0)
+ {
+ # ok, so the script should start
+ case(start):
+ {
+ # checking if it wasn't running already
+ if(!%Aidlestatus{$ic})
+ {
+ # the script wasn't running already, so it should be started by calling the
+ # script with the run parameter
+ aidle internal_run
+ # saving the status of the anti idle script
+ %Aidlestatus{$ic} = 1
+ # an anti idle var is set, to define the speed of the anti itde script
+ # there are 2 possible ways
+ %Aidletype{$ic} = 1
+ echo "Anti idle has been enabled"
+ } else {
+ # the script was already running
+ echo "Anti idle has already been enabled on this server"
+ }
+ }
+ break
+ # the script should be halted
+ case(stop):
+ {
+ # checking if it was already running
+ if(%Aidlestatus{$ic})
+ {
+ # the script was running, so it should be stopped by killing the timer
+ killtimer antiidle{$ic}
+ # clearing variabled
+ %Aidlestatus{$ic} = ""
+ %Aidletype{$ic} = ""
+ echo "Anti idle has been disabled"
+ } else {
+ # the script wasn't running
+ echo "Anti idle has not been enabled on this server"
+ }
+ }
+ break
+ # the script status should be shown
+ case(status):
+ {
+ # checking the status variable
+ if(%Aidlestatus{$ic})
+ {
+ echo "anti idle is enabled on this server"
+ } else {
+ echo "anti idle is disabled on this server"
+ }
+ }
+ break
+ # this is a parameter that should only be called by the script itself
+ # this is where the idle time gets actualy killed
+
+ case(internal_run):
+ {
+ # this part will make a varianle to switch random anti idle modes (fast/slow)
+ # note: once a type has been decided, changing the type works by a small chance
+ %aidletypecheck{$ic} = $rand(100)
+ if(%aidletypecheck{$ic} < 10)
+ {
+ if(%Aidletype{$ic} == 1)
+ {
+ %Aidletype{$ic} = 2
+ } else {
+ %Aidletype{$ic} = 1
+ }
+ }
+ # use the var just created to start one of the anti idle modes
+ if(%Aidletype{$ic} == 1){
+ # starting a timer who will keep sending messages to yourself, no output will be shown
+ timer -r=$console -s (antiidle{$ic},$(10000 + $rand(50000)))
+ {
+ aidle internal_run
+ # checking if we are online
+ if($server)
+ {
+ raw -q privmsg $me :
+ }
+ }
+ } else {
+ # this part is simular as above
+ timer -r=$console -s (antiidle{$ic},$(10000 + $rand(30000)))
+ {
+ aidle internal_run
+ if($server)
+ {
+ raw -q privmsg $me :
+ }
+ }
+ }
+ }
+ break
+ # the script should be uninstalled
+ case(uninstall):
+ {
+ echo "the anti idle script has been uninstalled succesfully"
+ # defining the alias by empty code will remove it
+ alias(aidle){}
+ event(412,aidle){}
+
+ }
+ break
+ # if help was asked
+ case(help):
+ {
+ echo "usage: /aidle <option>"
+ echo ""
+ echo "possible options:"
+ echo "start start the anti idle"
+ echo "stop stop the anti idle"
+ echo "status tell you if the anti idle script is enabled or not"
+ echo "uninstall uninstall the script"
+ echo "help this help output"
+ }
+ break
+ # if the parameter you give with the anti idle script is not valid
+ # a small program usage is printed
+ default
+ {
+ echo "Unsupported anti idle parameter ($0)"
+ echo "Try '/aidle help' for more information."
+ }
+ }
+}
+
+
+# creating an event
+
+event(412,aidle)
+{
+ # this raw will stop the error messages you will get from the server,
+ # every time you send an empty msg to yourself
+ halt;
+}
+
+# and at last, we also put some output, with some information :)
+
+echo "installation of the anti idle script succesful"
+echo "you can always uninstall it by typing /aidle uinstall"
+echo "just type '/aidle help' to get all the possible commands"
+echo "---"
+echo "Happy ircing or should i say idling :)"
+echo "Balboy and The KVIrc Development Team"
+
+# hint for later: $window.list(console,all)
diff --git a/doc/scriptexamples/class1.kvs b/doc/scriptexamples/class1.kvs
new file mode 100644
index 00000000..6098000d
--- /dev/null
+++ b/doc/scriptexamples/class1.kvs
@@ -0,0 +1,102 @@
+# Example of object function overriding and calling
+# This is quite intricated...try to get out of this
+# by examining the code.
+
+class (A,object)
+{
+ # The base class at all
+ # Implements $A::function and $A::virtual
+ function
+ {
+ echo -i=10 "$0\Entering A::function()"
+ $$->$virtual("----$0")
+ echo -i=10 "$0\Exiting A::function()"
+ }
+ virtual
+ {
+ echo -i=10 "$0\This is A::virtual()"
+ }
+}
+
+class (B,A)
+{
+ # Derived from A : inherits $A::function()
+ # overrides $A::virtual
+ virtual
+ {
+ echo -i=20 "$0\Entering B::virtual()"
+ $$->$A::virtual("----$0")
+ echo -i=20 "$0\Exiting B::virtual()"
+ }
+}
+
+class (C,B)
+{
+ # Derived from B : inherits $B::virtual and
+ # overrides $B::function (that is $A::function)
+ function
+ {
+ echo -i=30 "$0\This is C::function"
+ }
+}
+
+echo -i=7 "Ok...now try to gusess what's going on :)"
+
+%o = $new(C,0,test)
+
+echo "# Calling \%o->\$function"
+%o->$function
+echo "# Calling \%o->\$C::function"
+%o->$C::function
+echo "# Calling \%o->\$B::function"
+%o->$B::function
+echo "# Calling \%o->\$A::function"
+%o->$A::function
+echo "# Implementing private \%o->\$function"
+privateimpl(%o,function)
+{
+ # This is a private implementation that
+ # overrides $C::function
+ echo "$0\Entering \$\$::function"
+ $$->$C::function("----$0");
+ echo "$0\Exiting \$\$::function"
+}
+
+echo "# Calling \%o->\$function"
+%o->$function
+echo "# Calling \%o->\$C::function"
+%o->$C::function
+echo "# Calling \%o->\$B::function"
+%o->$B::function
+echo "# Calling \%o->\$A::function"
+%o->$A::function
+echo "# Implementing private \%o->\$virtual"
+privateimpl(%o,virtual)
+{
+ # This is a private implementation that
+ # overrides $C::virtual (that is $B::virtual in fact)
+ echo "$0\Entering \$\$::virtual"
+ $$->$C::virtual("----$0")
+ echo "$0\Exiting \$\$::virtual"
+}
+
+echo "# Calling \%o->\$function"
+%o->$function
+echo "# Calling \%o->\$C::function"
+%o->$C::function
+echo "# Calling \%o->\$B::function"
+%o->$B::function
+echo "# Calling \%o->\$A::function"
+%o->$A::function
+echo "# Removing private \%o->\$function"
+privateimpl(%o,function){}
+echo "# Calling \%o->\$function"
+%o->$function
+echo "# Calling \%o->\$C::function"
+%o->$C::function
+echo "# Calling \%o->\$B::function"
+%o->$B::function
+echo "# Calling \%o->\$A::function"
+%o->$A::function
+
+delete %o
diff --git a/doc/scriptexamples/exprtest.kvs b/doc/scriptexamples/exprtest.kvs
new file mode 100644
index 00000000..c07d199d
--- /dev/null
+++ b/doc/scriptexamples/exprtest.kvs
@@ -0,0 +1,24 @@
+# A stresstest for the expression evaluation engine
+
+alias(exprtest)
+{
+ %txt = "Testing expression:" $0;
+
+ %ret = ${ eval "return \$(" $0 ")"; }
+ if(%ret != $1)
+ {
+ %txt .= " ... Failed (return value" %ret "!=" $1")";
+ echo %txt
+ } else {
+ %txt .= " ... Success (return value $1)";
+ echo %txt
+ }
+}
+
+exprtest "5 - 0 - 1" 4
+exprtest "5 - (0 - 1)" 6
+exprtest "2+3-5+3+1-2-3-8+5*3-2" 4
+exprtest "2*2 + 2*2 - 2*2" 4
+exprtest "-1" -1
+exprtest "--1--1" 2
+exprtest "-1+1" -2
diff --git a/doc/scriptexamples/label1.kvs b/doc/scriptexamples/label1.kvs
new file mode 100644
index 00000000..d66cf154
--- /dev/null
+++ b/doc/scriptexamples/label1.kvs
@@ -0,0 +1,39 @@
+# A little label test.
+
+class(myLabel, label)
+{
+ constructor
+ {
+ $$->$setBackgroundColor(dcdc00);
+ $$->$setAutoResize(0);
+ $$->$setGeometry(10, 10, 500, 150);
+ $$->$setAlignment(Center);
+ $$->$setText("Come here !");
+ }
+
+ mouseEnterEvent
+ {
+ $$->$setMargin(10);
+ $$->$setAlignment(Right, Top);
+ %al = "My alignment is $$->$alignment(), and I have margin $$->$margin() pixels wide !";
+ $$->$setText(%al);
+ $$->$setFrameStyle(Panel, Raised);
+ echo "Label frame style: $$->$frameStyle()";
+ }
+
+ mouseLeaveEvent
+ {
+ $$->$setMargin(0);
+ $$->$setAlignment(Left, Bottom);
+ %al = "My alignment is $$->$alignment(), and I have margin $$->$margin() pixels wide !";
+ $$->$setText(%al);
+ $$->$setFrameStyle(Panel, Sunken);
+ echo "Label frame style: $$->$frameStyle()";
+ }
+}
+
+%w = $new(widget, 0);
+%w->$resize(520, 170);
+%w->$move(50, 50);
+%l = $new(myLabel, %w);
+%w->$show();
diff --git a/doc/scriptexamples/mail.kvs b/doc/scriptexamples/mail.kvs
new file mode 100644
index 00000000..94fb70e2
--- /dev/null
+++ b/doc/scriptexamples/mail.kvs
@@ -0,0 +1,159 @@
+# This is a really basic mail sender script
+# It uses exec and a telnet slave process
+# You will probably need to hack it a bit since
+# most mail servers will simply refuse to
+# send so spam-looking mail :D
+
+# Ah... remember that spamming creates bad karma.
+
+
+# exec a telnet slave.
+# Since we want to make sure that it does not run for too long,
+# we give it 60 seconds to complete the operations
+
+exec -x -k=60000 -t -e ("telnet my.mail.server.com 25")
+{
+ # We keep the state in the %:state extended scope variable
+
+ if($0 == "started")
+ {
+ # This is the first event triggered
+ # Initialize our variables...
+ echo [process started]
+ %:state = 0
+ # This is the source address as specified in the MAIL command
+ %:from = "<[email protected]>"
+ %:rcpt = "<[email protected]>"
+ # This is the From field
+ %:sender = "\"Me\" <[email protected]>"
+ %:receiver = "\"Me\" <[email protected]>"
+ %:body = "Hello, this is a test mesage for the small KVIrc mail script$cr$lf"
+ %:body .= "I hope that you have fun writing in kvs :)))"
+ %:subject = "This is a test subject"
+ # Returning an empty string does not write to stdin
+ return
+ }
+
+ if($0 == "stderr")
+ {
+ # This is our stderr handler.. just in case something goes wrong
+ echo "[stderr] $1"
+ return
+ }
+
+ if($0 == "terminated")
+ {
+ echo "[process terminated]"
+ return
+ }
+
+ # Ok.. this must be a stdout data event
+ # Echo the line to the user
+ echo "[stdout] $1"
+
+ # And make our little state machine work
+ switch(%:state)
+ {
+ case(0):
+ {
+ # We're waiting for 220 (ready)
+ if($str.match("220*",$1))
+ {
+ # Send the HELO and go to next state
+ %:state++
+ echo "Sending HELO..."
+ return "HELO myhostname$cr$lf";
+ }
+ }
+ break
+ case(1):
+ {
+ # Waiting for 250 (after the HELO)
+ if($str.match("250*",$1))
+ {
+ # Send the MAIL command
+ %:state++
+ echo "Sending MAIL..."
+ return "MAIL From: %:from$cr$lf"
+ } else {
+ # The server replied with something that is not a 250...
+ # Fail :/
+ echo "HELO command not accepted: $1"
+ halt
+ }
+ }
+ break;
+ case(2):
+ {
+ # Waiting for another 250 (MAIL accepted)
+ if($str.match("250*",$1))
+ {
+ # ...
+ %:state++
+ echo "Sending RCPT..."
+ return "RCPT To: %:rcpt$cr$lf"
+ } else {
+ echo "MAIL command not accepted: $1"
+ halt
+ }
+ }
+ break;
+ case(3):
+ {
+ # Waiting for another 250 (RCPT accepted)
+ if($str.match("250*",$1))
+ {
+ %:state++
+ echo "Sending DATA..."
+ return "DATA$cr$lf"
+ } else {
+ echo "RCPT not accepted: $1"
+ halt
+ }
+ }
+ break;
+ case(4):
+ {
+ # Waiting for 354 (ok, go on)
+ if($str.match("354*",$1))
+ {
+ # You will probably need to hack in the Date: field :)
+ %:state++
+ echo "Sending body..."
+ %x = "From: %:sender$cr$lf"
+ %x .= "To: %:receiver$cr$lf"
+ %x .= "Subject: %:subject$cr$lf"
+ %x .= "Reply-To: %:sender$cr$lf"
+ %x .= "Date: Thu, 8 Apr 2004 05:28:01 +0200$cr$lf"
+ %x .= "X-Mailer: KVIrc funky KVS script$cr$lf"
+ %x .= "$cr$lf"
+ %x .= "%:body$cr$lf$cr$lf"
+ %x .= ".$cr$lf"
+ return %x
+ } else {
+ echo "DATA not accepted: $1"
+ halt
+ }
+ }
+ break;
+ case(5):
+ {
+ # We don't wait anymore :)
+ %:state++
+ echo "Sending QUIT..."
+ return "QUIT$cr$lf"
+ }
+ break;
+ default:
+ {
+ # Usually the mail server closes the connection
+ %:state++
+ if(%:state > 10)
+ {
+ # But if it does not in few messages
+ # Then force the process to die
+ halt
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/doc/scriptexamples/minesweeper/Makefile.am b/doc/scriptexamples/minesweeper/Makefile.am
new file mode 100644
index 00000000..914e3823
--- /dev/null
+++ b/doc/scriptexamples/minesweeper/Makefile.am
@@ -0,0 +1,5 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+EXTRA_DIST = *.kvs
diff --git a/doc/scriptexamples/minesweeper/minesweeper.kvs b/doc/scriptexamples/minesweeper/minesweeper.kvs
new file mode 100644
index 00000000..24f3b0cb
--- /dev/null
+++ b/doc/scriptexamples/minesweeper/minesweeper.kvs
@@ -0,0 +1,131 @@
+
+
+class(minelabel,label)
+{
+ mousePressEvent()
+ {
+ $$->$parent()->$mineLabelPressed($this)
+ }
+}
+
+class(minesweeper,widget)
+{
+ constructor()
+ {
+ $$->$setCaption("KVIrc's Minesweeper (0.1.0)");
+
+ $$->%rows = 10
+ $$->%cols = 10
+ $$->%mines = 10
+
+ $$->%layout = $new(layout,$this)
+
+ for(%i = 0;%i < $$->%rows;%i++)
+ {
+ for(%j = 0;%j < $$->%cols;%j++)
+ {
+ $$->%label{%i,%j}=$new(minelabel,$this,"%i_%j")
+ $$->%label{%i,%j}->%row = %i
+ $$->%label{%i,%j}->%col = %j
+ $$->%layout->$addWidget($$->%label{%i,%j},%i,%j)
+ }
+ }
+
+ $$->$newGame()
+ }
+
+ destructor()
+ {
+ }
+
+ newGame()
+ {
+ for(%i = 0;%i < $$->%rows;%i++)
+ {
+ for(%j = 0;%j < $$->%cols;%j++)
+ {
+ %l = $$->%label{%i,%j}
+ %l->$setFrameStyle(Raised,WinPanel);
+ %l->%bIsMine = 0
+ %l->%numMines = 0
+ %l->%bIsDiscovered = 0
+ %l->$setText("")
+ }
+ }
+ # drop the mines
+ for(%i = 0;%i < $$->%mines;%i++)
+ {
+ %row = $rand($($$->%rows - 1))
+ %col = $rand($($$->%cols - 1))
+ while($$->%label{%row,%col}->%bIsMine != 0)
+ {
+ %row = $rand($($$->%rows - 1))
+ %col = $rand($($$->%cols - 1))
+ }
+ $$->%label{%row,%col}->%bIsMine = 1
+ # increase the mine count for the adiacent cells
+ if(%row > 0)
+ {
+ $$->%label{$(%row - 1),%col}->%numMines++
+ if(%col > 0)$$->%label{$(%row - 1),$(%col - 1)}->%numMines++
+ if(%col < ($$->%cols - 1))$$->%label{$(%row - 1),$(%col + 1)}->%numMines++
+ }
+ if(%row < ($$->%rows - 1))
+ {
+ $$->%label{$(%row + 1),%col}->%numMines++
+ if(%col > 0)$$->%label{$(%row + 1),$(%col - 1)}->%numMines++
+ if(%col < ($$->%cols - 1))$$->%label{$(%row + 1),$(%col + 1)}->%numMines++
+ }
+ if(%col > 0)$$->%label{%row,$(%col - 1)}->%numMines++
+ if(%col < ($$->%cols - 1))$$->%label{%row,$(%col + 1)}->%numMines++
+ }
+ }
+
+ mineLabelPressed($0 = mine label object that has been pressed)
+ {
+ #echo "MINE LABEL PRESSED $0"
+ if($0->%bIsMine)
+ {
+ #echo "IS MINE!"
+ $0->$setFrameStyle(WinPanel,Sunken)
+ $0->$setText("*")
+ } else {
+ #echo "IS NOT MINE"
+ $$->$discoverCells($0)
+ }
+ }
+
+ discoverCells($0 = mine label that has to be discovered)
+ {
+ #echo "Discover cells $0"
+ if($0->%bIsMine)return;
+ if($0->%bIsDiscovered)return;
+ $0->%bIsDiscovered = 1
+ $0->$setFrameStyle(WinPanel,Sunken)
+ if($0->%numMines > 0)$0->$setText($0->%numMines)
+ else {
+ if($0->%row > 0)
+ {
+ $$->$discoverCells($$->%label{$($0->%row - 1),$0->%col})
+ if($0->%col > 0)$$->$discoverCells($$->%label{$($0->%row - 1),$($0->%col - 1)})
+ if($0->%col < ($$->%cols - 1))$$->$discoverCells($$->%label{$($0->%row - 1),$($0->%col + 1)})
+ }
+ if($0->%row < ($$->%rows - 1))
+ {
+ $$->$discoverCells($$->%label{$($0->%row + 1),$0->%col})
+ if($0->%col > 0)$$->$discoverCells($$->%label{$($0->%row + 1),$($0->%col - 1)})
+ if($0->%col < ($$->%cols - 1))$$->$discoverCells($$->%label{$($0->%row + 1),$($0->%col + 1)})
+ }
+ if($0->%col > 0)$$->$discoverCells($$->%label{$0->%row,$($0->%col - 1)})
+ if($0->%col < ($$->%cols - 1))$$->$discoverCells($$->%label{$0->%row,$($0->%col + 1)})
+ }
+ }
+
+}
+
+alias(mines)
+{
+ %m = $new(minesweeper)
+ %m->$show()
+
+}
diff --git a/doc/scriptexamples/mp3_kdemediaplayers.kvs b/doc/scriptexamples/mp3_kdemediaplayers.kvs
new file mode 100644
index 00000000..98be29e9
--- /dev/null
+++ b/doc/scriptexamples/mp3_kdemediaplayers.kvs
@@ -0,0 +1,206 @@
+
+
+%Xmms_play=$mp3player.getfilename;
+
+
+
+%Prefix = $str.left(%Xmms_play,4)
+%Postfix = $str.right(%Xmms_play,4)
+ %Http_prefix = "http"
+ %Cda_postfix = ".cda"
+ if(%Prefix == %Http_prefix) {
+
+ %Stime = $($mp3player.gettime/1000)
+ %Mtime = 0
+ %Ctime =" ";
+
+ while(%Stime > 59) {
+ %Mtime++
+ %Stime-=60
+ }
+
+ %Htime=0
+
+ while(%Mtime > 59) {
+ %Htime++
+ %Mtime-=60
+ }
+
+ if (%Stime < 10){
+ %tmp = %Stime
+ %Stime = $str.append("0",%tmp)
+ }
+ if (%Mtime < 10 && %Htime > 1){
+ %tmp = %Mtime
+ %Mtime = $str.append("0",%tmp)
+ }
+
+
+
+ if (%Htime > 0)
+ %Ctime = $str.append %Htime:%Mtime:%Stime
+
+
+
+ if (%Mtime > 0 && %Htime < 1)
+ %Ctime = $str.append %Mtime:%Stime
+
+
+
+ if (%Mtime < 1 && %Htime < 1)
+ %Ctime = %Stime
+
+
+
+ me muckelt grad [$mp3player.gettitle @ %Xmms_play - $($mp3player.getrate/1000) kbps - $($mp3player.getfreq/1000) kHz - seit: %Ctime (h:m:s)]
+ }
+ else if(%Postfix == %Cda_postfix) {
+ me muckelt grad [$mp3player.gettitle - Audio CD]
+
+ }
+
+
+ else {
+
+ if ($mp3player.getchannels == 2)
+ %Channels = Stereo
+ else
+ %Channels = Mono
+
+ %Frequ = $mp3player.getfreq
+ %Frequ2 = $(%Frequ/1000)
+
+ %tmins = $($mp3player.getlength / 60000)
+ %tsecs = $(($mp3player.getlength % 60000) / 1000)
+ %tsecs1 = $(%tsecs / 10)
+ %tsecs2 = $(%tsecs % 10)
+ %mins = $($mp3player.gettime / 60000)
+ %secs = $(($mp3player.gettime % 60000) / 1000)
+ %secs1 = $(%secs / 10)
+ %secs2 = $(%secs % 10)
+ %rate = $($mp3player.getrate / 1000)
+ %size = $file.size("$mp3player.getfilename")
+ %msize = $(%size / (1024*1024))
+ %ksize = $((%size - ((%size / (1024*1024)) * 1024 * 1024) - (%size % 1024)) / 1024)
+
+ %bsize = $(%size % 1024)
+
+ if(%msize > 0)
+ {
+ %size = "%msize MByte %ksize KByte"
+ }else{
+ if(%ksize > 0)
+ {
+ %size = "%ksize KByte %bsize Byte"
+ }else{
+ %size = "%bsize Byte"
+ }
+ }
+ if ($mp3player.isplaying){
+
+ if($mp3player.getmp3tag_artist != ""){
+ %outartist= $mp3player.getmp3tag_artist
+ }
+ else {
+ %outartist=""
+ }
+ if ($mp3player.getmp3tag_title != ""){
+ %outtitle= $mp3player.getmp3tag_title
+ }
+ else {
+ %outtitle=""
+ }
+ if ((%outartitst != "") && (%outtitle != "")) {
+ %outartisttitle="["%outartitst" - "%autartisttitle"]"
+ }
+ else {
+ if (%outtitle == ""){
+ %outartisttitle="["%outartist"]"
+ }
+ else {
+ %outartisttitle="["%outtitle"]"
+ }
+
+ }
+
+ if (mp3player.getmp3tag_album !=""){
+ %outalbum =" - [Album: "$mp3player.getmp3tag_album"]"
+ }
+ else {
+ %outalbum =""
+ }
+
+ if (mp3player.getmp3tag_genre !=""){
+ %outgenre =" - [Genre: "$mp3player.getmp3tag_genre"]"
+ }
+ else {
+ %outgenre =""
+ }
+
+
+ if ($mp3player.getmp3tag_comment !=""){
+ %outcomment =" - [Comment: "$mp3player.getmp3tag_comment"]"
+ }
+ else {
+ %outcomment=""
+ }
+ if ($mp3player.getmp3tag_version != ""){
+ %outmp3tagversion = "MPEG"$mp3player.getmp3tag_version
+ }
+ else {
+ %outmp3tagversion=""
+ }
+ if ($mp3player.getmp3tag_layer != ""){
+ %outmp3taglayer = "Layer"$mp3player.getmp3tag_layer
+ }
+ else {
+ %outmp3taglayer = ""
+ }
+ if (%outmp3taglayer != "" && %outmp3tagversion != ""){
+ %outmp3tagversionlayer = " - ["%outmp3tagversion" - "%outmp3taglayer"]"
+ }
+ else {
+ %outmp3tagversionlayer= ""
+ if (%outmp3tagversion != ""){
+ %outmp3tagversionlayer= "["%mp3tagversion"]"
+ }
+ if (%outmp3taglayer != ""){
+ %outmp3tagversionlayer= "["%mp3taglayer"]"
+ }
+
+ }
+
+
+ %rate = $($mp3player.getrate/1000)
+ if (%rate != 0){
+ %outrate=" - ["%rate KBps"]"
+ }
+ else {
+ %outrate=""
+ }
+ if (%Frequ2 != 0){
+ %outfrequ2=" - ["%Frequ2 KHz"]"
+ }
+ else {
+ %outfrequ2=""
+ }
+ if (%Channels != 0){
+ %outchannels = " - ["%Channels"]"
+ }
+ else {
+ %outchannels=""
+ }
+ if (%size != 0){
+ %outsize = " - ["%size"]"
+ }
+ else {
+ %outsize=""
+ }
+
+ me muckelt grad %outartisttitle %outalbum %outgenre %outcomment %outmp3tagversionlayer %outrate %outfrequ2 - [%mins:%secs1%secs2 min of %tmins:%tsecs1%tsecs2 min] - [Player: $mp3player.getplayer ]
+ }
+ }
+ if (!$mp3player.isplaying){
+ me muckelt grad * nix *
+
+ } \ No newline at end of file
diff --git a/doc/scriptexamples/mp3info.kvs b/doc/scriptexamples/mp3info.kvs
new file mode 100644
index 00000000..b5324145
--- /dev/null
+++ b/doc/scriptexamples/mp3info.kvs
@@ -0,0 +1,109 @@
+%Xmms_play=$mp3player.getfilename;
+
+%Prefix = $str.left(%Xmms_play,4)
+%Postfix = $str.right(%Xmms_play,4)
+
+ %Http_prefix = "http"
+ %Cda_postfix = ".cda"
+ if(%Prefix == %Http_prefix) {
+
+
+ %Stime = $($mp3player.gettime/1000)
+ %Mtime = 0
+ %Ctime =" ";
+
+ while(%Stime > 59) {
+ %Mtime++
+ %Stime-=60
+ }
+
+ %Htime=0
+
+ while(%Mtime > 59) {
+ %Htime++
+ %Mtime-=60
+ }
+
+ if (%Stime < 10){
+ %tmp = %Stime
+ %Stime = $str.append("0",%tmp)
+ }
+ if (%Mtime < 10 && %Htime > 1){
+ %tmp = %Mtime
+ %Mtime = $str.append("0",%tmp)
+ }
+
+
+
+ if (%Htime > 0)
+ %Ctime = $str.append %Htime:%Mtime:%Stime
+
+
+
+ if (%Mtime > 0 && %Htime < 1)
+ %Ctime = $str.append %Mtime:%Stime
+
+
+
+ if (%Mtime < 1 && %Htime < 1)
+ %Ctime = %Stime
+
+
+
+ me has currently [$mp3player.gettitle @ %Xmms_play - $($mp3player.getrate/1000) kbps - $($mp3player.getfreq/1000) kHz - seit: %Ctime (h:m:s)]
+ }
+
+
+ else if(%Postfix == %Cda_postfix) {
+ %Xmms_play=$mp3player.getfilename;
+
+ }
+
+
+ else {
+
+ if ($mp3player.getchannels == 2) {
+ %Channels = Stereo
+ }
+ else {
+ %Channels = Mono
+ }
+
+ %Frequ = $mp3player.getfreq
+ %Frequ2 = $(%Frequ/1000)
+
+ %tmins = $($mp3player.getlength / 60000)
+ %tsecs = $(($mp3player.getlength % 60000) / 1000)
+ %tsecs1 = $(%tsecs / 10)
+ %tsecs2 = $(%tsecs % 10)
+ %mins = $($mp3player.gettime / 60000)
+ %secs = $(($mp3player.gettime % 60000) / 1000)
+ %secs1 = $(%secs / 10)
+ %secs2 = $(%secs % 10)
+ %rate = $($mp3player.getrate / 1000)
+ %size = $file.size("$mp3player.getfilename")
+ %msize = $(%size / (1024*1024))
+ %ksize = $((%size - ((%size / (1024*1024)) * 1024 * 1024) - (%size % 1024)) / 1024)
+
+ %bsize = $(%size % 1024)
+
+
+ if(%msize > 0){
+ %size = "%msize MByte %ksize KByte"
+ }
+ else {
+ if(%ksize > 0){
+ %size = "%ksize KByte %bsize Byte"
+ }
+ else {
+ %size = "%bsize Byte"
+ }
+ }
+ me has currently [$mp3player.getmp3tag_artist - $mp3player.getmp3tag_title] - [Album: $mp3player.getmp3tag_album] - [Genre: $mp3player.getmp3tag_genre] - [Comment: $mp3player.getmp3tag_comment] - [MPEG$mp3player.getmp3tag_version Layer$mp3player.getmp3tag_layer] - [$($mp3player.getrate/1000) Bit] - [%Frequ2 kHz] - [%Channels] - [%size] - [%mins:%secs1%secs2 min von %tmins:%tsecs1%tsecs2 min]
+ }
+
+ if (!$mp3player.isplaying)
+ {
+ me's player has currently stopped
+
+}
diff --git a/doc/scriptexamples/mp3share/Makefile.am b/doc/scriptexamples/mp3share/Makefile.am
new file mode 100644
index 00000000..a48a9984
--- /dev/null
+++ b/doc/scriptexamples/mp3share/Makefile.am
@@ -0,0 +1,5 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+EXTRA_DIST = mp3share.kvs mp3share_icon.png
diff --git a/doc/scriptexamples/mp3share/mp3share.kvs b/doc/scriptexamples/mp3share/mp3share.kvs
new file mode 100644
index 00000000..57c30032
--- /dev/null
+++ b/doc/scriptexamples/mp3share/mp3share.kvs
@@ -0,0 +1,84 @@
+######################################################################################################
+#
+# MP3Share KVIrc script
+#
+# This small script communicates with the platform mp3 player
+# and advertises the currently played song, allowing its download by dcc
+#
+#
+# The following things are left as exercise to the readed:
+#
+# - "max downloads" checking is done
+# - starting the platform mp3player if it is not running
+#
+######################################################################################################
+
+file.mkdir $file.localdir("pics")
+file.copy -o $file.extractPath($0)"/mp3share_icon.png" $file.localdir("pics/mp3share_icon.png")
+
+
+action.create -w=cqd (mp3share_advertise,$tr("Advertise MP3"),$tr("Advertises the currently played song and shares it"),mp3share_icon.png)
+{
+ if(!$mp3player.isplaying)
+ {
+ echo It looks like your mp3 player is not playing
+ halt
+ }
+
+ if($mp3player.getlength <= 0)
+ {
+ # Playing a stream
+
+ me plays$k(4) $mp3player.gettitle() $k(2)(streaming from $mp3player.getfilename())
+
+ } else {
+ %mins = $($mp3player.getlength / 60000)
+ %secs = $(($mp3player.getlength % 60000) / 1000)
+ %secs1 = $(%secs / 10)
+ %secs2 = $(%secs % 10)
+ %rate = $($mp3player.getrate / 1000)
+
+ %text = $k(4) $mp3player.gettitle() $k(2)[%mins:%secs1%secs2 %rate Kbps $mp3player.getfreq Hz \
+ $file.size("$mp3player.getfilename") Bytes]$o
+
+ if(%type != "dccchat")
+ {
+ srand $unixtime
+ %a = $rand(9)
+ %b = $rand(9)
+ %c = $rand(9)
+
+ me plays%text (Use $b/CTCP $me XDCC GET mp3_%a%b%c$b to download)
+
+ sharedfile.add -t=$(($mp3player.getlength / 1000) + 60) \
+ -n="mp3_%a%b%c" $mp3player.getfilename;
+ } else me plays%text
+ }
+}
+
+toolbar.create mp3share $tr("MP3 Sharing")
+toolbar.additem mp3share mp3share_advertise
+toolbar.show mp3share
+
+alias(mp3share_uninstall)
+{
+ action.destroy mp3share_advertise
+ toolbar.destroy mp3share
+ alias(mp3share_uninstall){}
+}
+
+
+echo "The Mp3share script is installed."
+if("$system.ostype" == "windows")
+{
+ echo "On Windows you need the Winamp multimedia player"
+ echo "freely available at http://www.winamp.com"
+ echo "You also need to install the gen_kvirc.dll from the KVIrc"
+ echo "distribution as a Winamp plugin (this involves copying the"
+ echo "file to the winamp \"plugins\" directory)."
+} else {
+ echo "On Unix you need the Xmms multimedia player"
+ echo "freely available at http://www.xmms.org"
+}
+echo "Use mp3share_uninstall to uninstall the script."
+echo "Have fun :)"
diff --git a/doc/scriptexamples/mp3share/mp3share_icon.png b/doc/scriptexamples/mp3share/mp3share_icon.png
new file mode 100644
index 00000000..6aeec0e1
--- /dev/null
+++ b/doc/scriptexamples/mp3share/mp3share_icon.png
Binary files differ
diff --git a/doc/scriptexamples/newkvstest.kvs b/doc/scriptexamples/newkvstest.kvs
new file mode 100644
index 00000000..0fe06a25
--- /dev/null
+++ b/doc/scriptexamples/newkvstest.kvs
@@ -0,0 +1,101 @@
+# This file contains test code for the new KVS parser
+# It does nothing useful
+
+
+echo "Foreach test 1"
+
+%arry[0] = "test0"
+%arry[2] = "test2"
+
+%i = 0
+
+foreach(%x,%arry)
+{
+ echo "Array item %i: (%x)"
+ %i++
+}
+
+echo "Foreach test 2"
+
+%ahash{"keyA"} = "dataA"
+%ahash{"keyB"} = "dataB"
+
+%i = 0
+
+foreach(%x,%ahash)
+{
+ echo "Hash item %i: (%x)"
+ %i++
+}
+
+echo "Foreach test 3"
+
+%i = 0
+
+foreach(%x,$keys(%ahash))
+{
+ echo "Hash entry %i: key->(%x), item->(%ahash{%x})"
+ %i++
+}
+
+echo "Foreach test 4"
+
+%i = 0
+
+foreach(%x,%arry,$keys(%ahash))
+{
+ echo "Item %i: %x"
+ %i++
+}
+
+
+%tmp = 1
+switch(%tmp)
+{
+ case(1):
+ echo \%tmp was 1!
+ break;
+ case(2)
+ echo \%tmp was 2!
+ break;
+ default:
+ echo \%tmp was not 1 nor 2: it was %tmp!
+ break;
+}
+
+%tmp = 1
+switch(%tmp)
+{
+ case(1):
+ echo \%tmp was 1!
+ case(2)
+ echo \%tmp was 2!
+ break;
+ default:
+ echo \%tmp was either 1 or something different from 2 (%tmp)
+ break;
+}
+
+%tmp = "This is a test"
+%tmp2 = "This is not a test"
+switch(%tmp)
+{
+ case(%tmp2)
+ echo \%tmp == \%tmp2
+ break;
+ case(%tmp)
+ {
+ # do not break here
+ echo "Yeah.. it's stupid.. \%tmp == \%tmp :D"
+ }
+ match("*TEST"):
+ echo "Matched *TEST"
+ regexp("[a-zA-Z ]*test"):
+ echo "Matched [a-zA-Z ]*text"
+ regexp("[a-zA-Z ]*not[a-zA-Z ]*"):
+ echo "Matched [a-zA-Z ]*not[a-zA-Z ]*"
+ default:
+ echo This is executed anyway (unless some break was called)
+ break;
+}
+
diff --git a/doc/scriptexamples/playing/Makefile.am b/doc/scriptexamples/playing/Makefile.am
new file mode 100644
index 00000000..d673dfb9
--- /dev/null
+++ b/doc/scriptexamples/playing/Makefile.am
@@ -0,0 +1,5 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+EXTRA_DIST = playing.kvs playing_icon.png
diff --git a/doc/scriptexamples/playing/playing.kvs b/doc/scriptexamples/playing/playing.kvs
new file mode 100644
index 00000000..984dd8c2
--- /dev/null
+++ b/doc/scriptexamples/playing/playing.kvs
@@ -0,0 +1,108 @@
+######################################################################################################
+#
+# playing KVIrc script
+#
+# I started this script cause I was scared about the colors of Pragmas mp3share script
+# and the insecierness of dcc download.
+#
+# So I did set up this little script for mp3 advertising based on Pragmas ugly mp3share.
+#
+# Hints, donations and stuff can be delivered to [email protected].
+#
+# This small script communicates with the platform mp3 player
+# and advertises the currently played song
+#
+# The following things are left as exercise to the readed:
+#
+# - starting the platform mp3player if it is not running
+#
+######################################################################################################
+
+file.mkdir $file.localdir(pics)
+file.copy -o $file.extractPath($0)/playing_icon.png $file.localdir(pics/playing_icon.png)
+
+action.create -w=cqd (playing_adv,$tr("Advertise MP3"),$tr("Advertises the currently played song"),playing_icon.png)
+{
+ if(!($mp3player.isplaying))
+ {
+ echo It looks like your mp3 player is not playing
+ halt
+ }
+
+ switch ($mp3player.getchannels())
+ {
+ case("1"): %channel="mono"
+ break
+ case("2"): %channel="stereo"
+ break
+ }
+
+ %tmins = $($mp3player.getlength / 60000)
+ %tsecs = $(($mp3player.getlength % 60000) / 1000)
+ %tsecs1 = $(%tsecs / 10)
+ %tsecs2 = $(%tsecs % 10)
+ %mins = $($mp3player.gettime / 60000)
+ %secs = $(($mp3player.gettime % 60000) / 1000)
+ %secs1 = $(%secs / 10)
+ %secs2 = $(%secs % 10)
+ %rate = $($mp3player.getrate / 1000)
+ %size = $file.size("$mp3player.getfilename")
+ %msize = $(%size / (1024*1024))
+ %ksize = $((%size - ((%size / (1024*1024)) * 1024 * 1024) - (%size % 1024)) / 1024)
+ %bsize = $(%size % 1024)
+
+
+ if(%size > 0)
+ {
+ if(%msize > 0)
+ {
+ %size = "%msize MByte %ksize KByte"
+ }else{
+ if(%ksize > 0)
+ {
+ %size = "%ksize KByte %bsize Byte"
+ }else{
+ %size = "%bsize Byte"
+ }
+ }
+
+ me is listening to $mp3player.gettitle() =- %mins:%secs1%secs2 of %tmins:%tsecs1%tsecs2 -=- %rate Kbps -=- \
+ $mp3player.getfreq Hz -=- %channel -=- %size -=$o
+ }else{
+ me is streaming \"$mp3player.gettitle()\" from $mp3player.getfilename =- %mins:%secs1%secs2 mins -=- %rate Kbps -=- \
+ $mp3player.getfreq Hz -=- %channel -=$o
+ }
+
+# offer.add -t=$(($mp3player.getlength / 1000) + 60) \
+# -n="mp3_$mp3player.getposition" $mp3player.getfilename;
+}
+
+toolbar.create playing $tr("MP3 Sharing")
+toolbar.additem playing playing_advertise
+toolbar.show playing
+
+alias(playing_uninstall)
+{
+ # Kill the playing_adv alias
+ action.destroy -q playing_adv
+ # Kill this alias
+ alias(playing_uninstall){}
+}
+
+
+playing_addbutton
+
+echo The playing script is installed.
+if("$system.ostype" == "windows")
+{
+ echo On Windows you need the Winamp multimedia player
+ echo freely available at http://www.winamp.com
+ echo You also need to install the gen_kvirc.dll from the KVIrc
+ echo distribution as a Winamp plugin (this involves copying the
+ echo file to the winamp \"plugins\" directory).
+} else {
+ echo On Unix you need the Xmms multimedia player
+ echo freely available at http://www.xmms.org
+}
+echo Use playing_uninstall to uninstall the script.
+echo Have fun :)
diff --git a/doc/scriptexamples/playing/playing_icon.png b/doc/scriptexamples/playing/playing_icon.png
new file mode 100644
index 00000000..2635e618
--- /dev/null
+++ b/doc/scriptexamples/playing/playing_icon.png
Binary files differ
diff --git a/doc/scriptexamples/popup1.kvs b/doc/scriptexamples/popup1.kvs
new file mode 100644
index 00000000..107c5a6e
--- /dev/null
+++ b/doc/scriptexamples/popup1.kvs
@@ -0,0 +1,17 @@
+
+defpopup (test)
+{
+ item(Say "$0 ($1)" , 0)echo $0 ($1)
+ separator
+ popup(Popup)
+ {
+ item(Say "$0" twice)
+ {
+ echo $0 (1)
+ echo $0 (2)
+ }
+ }
+}
+
+
+echo "Use '/popup test <parameter>' to test the popup"
diff --git a/doc/scriptexamples/popup2.kvs b/doc/scriptexamples/popup2.kvs
new file mode 100644
index 00000000..10aa07a1
--- /dev/null
+++ b/doc/scriptexamples/popup2.kvs
@@ -0,0 +1,124 @@
+# This code adds a channel popup that accepts:
+# a comma separated list of nicknames
+
+defpopup (channel)
+{
+ prologue
+ {
+ # the local variables are visible in the entire defpopup scope
+ %visible=$0
+ %multiple = 0
+ if($str.findfirst(%visible,",") != -1)
+ {
+ %visible = "multiple users"
+ %multiple = 1
+ }
+ }
+
+ popup(Control,9)($isMeOp)
+ {
+ label(Operator power)
+ item(Op %visible,34)op $0
+ item(Deop %visible,62)deop $0
+ separator;
+ item(Voice %visible,35)voice $0
+ item(Devoice %visible,63)devoice $0
+ separator;
+ item(Kick %visible (You're not welcome here!),110)kick $0 You're not welcome here!
+ item(Ban %visible (Nick!*@* mask),67)ban $0
+ }
+
+ popup(Info,49)
+ {
+ item(Who %visible,75)who $0
+ item(Whois %visible,75)whois $0
+ item(Whois %visible (with idle time),75) whois $0 $0
+ item(Whowas %visible,92)whowas $0
+ }
+
+ popup(Ctcp,51)
+ {
+ item(PING,36)ping $0
+ item(VERSION,16)ctcp $0 VERSION
+ item(USERINFO,57)ctcp $0 USERINFO
+ item(CLIENTINFO,52)ctcp $0 CLIENTINFO
+ item(SOURCE,14)ctcp $0 SOURCE
+ item(FINGER,53)ctcp $0 FINGER
+ item(TIME,93)ctcp $0 TIME
+ }
+
+ popup(Dcc,77)
+ {
+ item(Chat with %visible,78) dcc.chat $0
+ item(Send to %visible,79) dcc.send $0
+ item(TDCC Send to %visible,77) dcc.send -t $0
+ }
+
+ popup("Registration",111)(!%multiple)
+ {
+ prologue
+ {
+ # This is really smart...we're loading
+ # the reguser module only if this popup is being requested.
+ %regName = $reguser.match($mask(%visible))
+ %labelText = "<center><b>%visible</b> is";
+ if("%regName" != "")
+ {
+ %labelText << "registered as<br><b>%regName</b>"
+ # We want to display masks here!!!
+ %inNotifyList = $reguser.property(%regName,notify);
+ if("%inNotifyList" != "")%labelText << "<br>$0 is in the notify list"
+ %curAvatar = $avatar($0);
+ %defAvatar = $reguser.property(%regName,avatar);
+ if("%defAvatar" != "")%labelText << "<br>$0 has a default avatar"
+ %labelText << "</center>"
+ } else {
+ %labelText << "not registered</center>"
+ }
+ }
+ label("%labelText")
+ popup("Register")("%regName" == "")
+ {
+ item("Register as $0 ($mask(%visible,11))")("$reguser.exactMatch($mask(%visible,11))" == "")reguser.add %visible $mask(%visible,11)
+ item("Register as $0 ($mask(%visible,12))")("$reguser.exactMatch($mask(%visible,12))" == "")reguser.add %visible $mask(%visible,12)
+ item("Register as $0 ($mask(%visible,13))")("$reguser.exactMatch($mask(%visible,13))" == "")reguser.add %visible $mask(%visible,13)
+ item("Register as $0 ($mask(%visible,3))")("$reguser.exactMatch($mask(%visible,3))" == "")reguser.add %visible $mask(%visible,3)
+ item("Register as $0 ($mask(%visible,4))")("$reguser.exactMatch($mask(%visible,4))" == "")reguser.add %visible $mask(%visible,4)
+ item("Register as $0 ($mask(%visible,5))")("$reguser.exactMatch($mask(%visible,5))" == "")reguser.add %visible $mask(%visible,5)
+ }
+ item("Edit registration entry",113)("%regName" != "")reguser.edit "%regName"
+ item("Unregister %regName")("%regName" != "")reguser.remove "%regName"
+
+ item("Add to notify list")(("%regName" != "") && ("%inNotifyList" == ""))
+ reguser.setproperty -n "%regName" notify %visible
+
+ item("Remove from notify list")
+ (("%regName" != "") && ("%inNotifyList" != ""))
+ reguser.setproperty -n "%regName" notify
+
+ item("Set the current avatar as default")(("%curAvatar" != "") && ("%curAvatar" != "%defAvatar"))
+ reguser.setproperty "%regName" avatar %curAvatar
+
+ item("Unset the default avatar")("%defAvatar" != "")
+ reguser.setproperty %regName avatar
+
+# item("Choose the default avatar")("%regMask" != "")
+# dialog.fileopen("Choose the avatar filename",%regMask){ reguser.setproperty -e $magic $selectedFile; }
+
+ }
+
+ separator;
+
+ #item(Notify avatar,57)("$0" != "$myNick")avatar $0
+ #item(Notify avatar (No offer),57)("$0" != "$myNick")avatar -n $0
+ item(Notify avatar,57)avatar $0
+ item(Notify avatar (No offer),57)avatar -n $0
+
+ separator;
+ item(Query %visible,47)(!%multiple)query $0
+ item(Query %visible (Single queries),47)(%multiple)query $0
+ item(Query %visible (Multiple query),47)(%multiple)query -m $0
+}
+
+
+event (OnChannelUserListRightClicked,default){ if("$selected" != "")popup channel $selected; };
diff --git a/doc/scriptexamples/popup3.kvs b/doc/scriptexamples/popup3.kvs
new file mode 100644
index 00000000..0ad7d4a6
--- /dev/null
+++ b/doc/scriptexamples/popup3.kvs
@@ -0,0 +1,46 @@
+defpopup (channeltextview)
+{
+ item(Leave $0,40){ part $0; }
+}
+
+
+event (OnChannelTextViewRightClicked,default){ if("$target" != "")popup channeltextview $target; }
+
+
+defpopup (querytextview)
+{
+ item(Whois $0,57){ whois $0; }
+}
+
+
+event (OnQueryTextViewRightClicked,default){ if("$target" != "")popup querytextview $target; }
+
+
+
+defpopup (consoletextview)
+{
+ popup(Server queries,13)
+ {
+ item(Version,16)version
+ item(Motd,30)motd
+ item(Info,29)info
+ item(Admin,29)admin
+ item(Lusers,57)lusers
+ item(Time,93)time
+ item(Help,49)raw help
+ popup(Stats,22)
+ {
+ item(d (debug/dns ?))stats d
+ item(l (connections))stats l
+ item(m (command usage))stats m
+ item(o (operators))stats o
+ item(t (connection stats ?),23)stats t
+ item(u (uptime),93)stats u
+ item(y (y-lines))stats y
+ item(z (debug stats ?),11)stats z
+ }
+ }
+}
+
+
+event (OnConsoleTextViewRightClicked,default){ popup consoletextview; }
diff --git a/doc/scriptexamples/popup4.kvs b/doc/scriptexamples/popup4.kvs
new file mode 100644
index 00000000..1680bbeb
--- /dev/null
+++ b/doc/scriptexamples/popup4.kvs
@@ -0,0 +1,40 @@
+defpopup (windowpopup)
+{
+ label("$caption")
+
+ popup(Logging,119)
+ {
+ prologue
+ {
+ %logfile = $log.file
+ }
+ label("Logging to file<br><b>%logfile</b>")("%logfile" != "")
+ item("Stop logging")("%logfile" != "")log.stop
+ item("Flush log file")("%logfile" != "")log.flush
+
+ label("Logging is disabled")("%logfile" == "")
+ item("Log (default file)")("%logfile" == "")log.start
+ item("Log (default file) (prepend existing data)")("%logfile" == "")log.start -e
+ }
+# popup(Buffer)
+# {
+# item("Save to file...")window.savebuffer
+# item("Clear")window.clear
+# item("Find...")window.findtext
+# }
+# popup(View)
+# {
+# item("Show images")($window.images == 0)window.images 1
+# item("Enable timestamps")($window.timestamp == 0)window.timestamp 1
+# item("Disable timestamps")($window.timestam == 1)window.timestamp 0
+# item("Set font...")$window.setfont
+# item("Set background...")$window.setbackground
+# }
+# popup(Mdi)
+# {
+# item("Minimize")window.minimize
+# item("Maximize")window.maximize
+# }
+}
+
+event (OnWindowPopupRequest,default){ popup windowpopup; }
diff --git a/doc/scriptexamples/relay.kvs b/doc/scriptexamples/relay.kvs
new file mode 100644
index 00000000..d8689866
--- /dev/null
+++ b/doc/scriptexamples/relay.kvs
@@ -0,0 +1,33 @@
+# Relay bot (unfinished for now :D)
+# TODO : finish me!
+
+
+alias (relay_start)
+{
+ # Usage : relay_start <window1> <window2>
+}
+
+
+alias (relay_stop)
+{
+ # Usage : relay_stop <window1> <window2>
+}
+
+event (OnChannelPrivmsg)
+{
+ %target = %RelayTarget[$window];
+ if("%target" != "")
+ {
+ msg -w=%t $target <$0> $1-
+ }
+}
+
+alias (relay_uninstall)
+{
+ timer -s (relay_uninstall_timer,0)
+ {
+ alias(relay_start){}
+ alias(relay_stop){}
+ alias(relay_uninstall){}
+ }
+}
diff --git a/doc/scriptexamples/runmenu/Makefile.am b/doc/scriptexamples/runmenu/Makefile.am
new file mode 100644
index 00000000..d91889ea
--- /dev/null
+++ b/doc/scriptexamples/runmenu/Makefile.am
@@ -0,0 +1,5 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+EXTRA_DIST = runmenu.kvs
diff --git a/doc/scriptexamples/runmenu/runmenu.kvs b/doc/scriptexamples/runmenu/runmenu.kvs
new file mode 100644
index 00000000..dea6a27d
--- /dev/null
+++ b/doc/scriptexamples/runmenu/runmenu.kvs
@@ -0,0 +1,111 @@
+# This simple script adds a sample "run external program" popup
+# to your menubar
+# This is just a sample popup... you will probably
+# want to add/remove entries here
+# This will also work mainly on unix... windows has not so much
+# proggies to be run as example
+
+
+# Define the popup with run entries...
+# You prolly will change a lot here :)
+
+defpopup(runmenu)
+{
+ popup(Terminal,138)
+ {
+ item(XTerm,25) ($system.ostype == unix)
+ {
+ run xterm
+ }
+
+ item(Konsole,151) ($system.ostype == unix)
+ {
+ run konsole
+ }
+
+ item(ETerm,25) ($system.ostype == unix)
+ {
+ run eterm
+ }
+ }
+
+ popup(Browser,172)
+ {
+ item(konqueror,135) ($system.ostype == unix)
+ {
+ run konqueror
+ }
+
+ item(netscape,164)
+ {
+ if($system.ostype == unix)run kvi_run_netscape
+ else run netscape.exe
+ }
+ }
+
+ popup(Multimedia,177)
+ {
+ item(xmms)
+ {
+ run xmms
+ }
+ item(mplayer)
+ {
+ run mplayer
+ }
+ item(kscd)
+ {
+ run kscd
+ }
+ }
+
+ popup(Utils)
+ {
+ item(xcalc)
+ {
+ run xcalc;
+ }
+ item(kcalc)
+ {
+ run kcalc;
+ }
+ }
+
+ separator;
+
+ # Let's allow to run an user specified command
+
+ item(Run...,183)
+ {
+ dialog.textinput(Run,<center>Please enter the command name</center>,Ok,Cancel)
+ {
+ if($0 == 0 && $1)run $1
+ }
+ }
+
+ separator;
+
+ # This is an interesting item
+ # It allows this script to be uninstalled :)
+
+ popup(Uninstall,110)
+ {
+ item(Uninstall this menu,110)
+ {
+ timer -s (runmenu_uninstall,0){ defpopup(runmenu){}; }
+ }
+ }
+}
+
+# add it to the menubar of each new frame
+
+event(OnFrameWindowCreated,runmenu)
+{
+ setmenu -i=3 "&Run" runmenu
+}
+
+# set it also just now, in the current frame
+
+setmenu -i=3 "&Run" runmenu
+
+# done :)
diff --git a/doc/scriptexamples/signal1.kvs b/doc/scriptexamples/signal1.kvs
new file mode 100644
index 00000000..7777e679
--- /dev/null
+++ b/doc/scriptexamples/signal1.kvs
@@ -0,0 +1,47 @@
+# This implements a "fake timer" object that emits the "timeout" signal
+# and a target object slot connected to this signal.
+
+# We also test the immediate object deletion...it seems to work
+
+class(faketimer,object)
+{
+ timerEvent(<timer id>)
+ {
+ $this->$emit(timeout,$0)
+ }
+}
+
+
+class(target,object)
+{
+ constructor
+ {
+ $$->%num = 10;
+ }
+
+ timerSlot(<timer id>)
+ {
+ echo "Timer $0 fired $$->%num"
+ $$->%num--;
+ if($$->%num == 0)
+ {
+ echo "Deleting sender $$->$signalSender()->$name() : Kaboom!"
+ # Immediate sender deletion....
+ delete -i $$->$signalSender
+ $$->$startTimer(1000)
+ }
+ }
+
+ timerEvent(<timer id>)
+ {
+ echo "Deleting self! : Kaboom!"
+ delete $this;
+ }
+}
+
+
+%source = $new(faketimer,0,sender)
+%target = $new(target,0,target)
+connect %source timeout %target timerSlot
+echo "Starting timer...."
+%source->$startTimer(1000)
diff --git a/doc/scriptexamples/simplehttp/Makefile.am b/doc/scriptexamples/simplehttp/Makefile.am
new file mode 100644
index 00000000..540ab61c
--- /dev/null
+++ b/doc/scriptexamples/simplehttp/Makefile.am
@@ -0,0 +1,5 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+EXTRA_DIST = simplehttp.kvs
diff --git a/doc/scriptexamples/simplehttp/simplehttp.kvs b/doc/scriptexamples/simplehttp/simplehttp.kvs
new file mode 100644
index 00000000..8c49014a
--- /dev/null
+++ b/doc/scriptexamples/simplehttp/simplehttp.kvs
@@ -0,0 +1,105 @@
+#
+# This is a really simple and senseless HTTP server
+# It listens on port 8080 and serves a "Hello world" page
+# to the incoming browser connections.
+#
+
+
+# Define the "startup" alias
+alias(simplehttp_start)
+{
+ # If the server is already running , well... give up
+ if($classDefined(simpleHttpListeningSocket) && (%SimpleHttpListeningSocket))
+ {
+ echo "The Simple HTTP server is already running"
+ halt
+ }
+
+ # Define the server class (if the class is already defined it will be overridden)
+ class(simpleHttpListeningSocket,socket)
+ {
+ # The constructor fails if we can't listen on port 8080!
+ constructor()
+ {
+ if(!$$->$listen(8080))
+ {
+ return 0
+ }
+ return 1
+ }
+
+ # Handle the incoming connections
+ incomingConnectionEvent()
+ {
+ # Create a slave socket
+ %tmp = $new(socket)
+ # Accept the connection
+ $$->$accept(%tmp)
+ # And handle it
+ echo "Incoming connection:"
+ echo "Remote end: %tmp->$remoteIp : %tmp->$remotePort"
+ echo "Local end: %tmp->$localIp : %tmp->$localPort"
+ # Write a "Hello world" page to the client
+ %tmp->$write("HTTP/1.0 200 OK\r\n");
+ %tmp->$write("Content-type: text/html\r\n\r\n");
+ %tmp->$write("<html>\n")
+ %tmp->$write(" <head><title>KVIrc simple http server</title></head>\n")
+ %tmp->$write(" <body bgcolor=\"#000000\" text=\"#FF0000\">\n")
+ %tmp->$write(" <center><h1><b>Hello World!</b></h1></center>\n")
+ %tmp->$write(" </body>\n")
+ %tmp->$write("</html>\n\r\n\r\n")
+ # Close (this ensures data delivery)
+ %tmp->$close()
+ # Kill the slave
+ delete %tmp;
+ # Some browsers may tell you that the connection is "broken"
+ # (konqueror , for example) since they can't send
+ # the GET request... (we don't read it!)
+ # Well...this is left as exercise to the scripter:
+ # Write the data to the socket only in response to the GET message :)
+ # You CAN do it.
+ }
+ }
+
+ # Create the server socket
+ %SimpleHttpListeningSocket = $new(simpleHttpListeningSocket)
+
+ if(!%SimpleHttpListeningSocket)echo "Ops.. can't start the simple http server :((("
+ else {
+ echo "Ok.. up and running :)"
+ echo "Point your browser to http://127.0.0.1:8080"
+ }
+
+}
+
+# Stop alias : this is easy
+
+alias(simplehttp_stop)
+{
+ if(!%SimpleHttpListeningSocket)
+ {
+ echo "The simple HTTP server is not running"
+ halt
+ }
+ %SimpleHttpListeningSocket->$close()
+ delete %SimpleHttpListeningSocket
+ %SimpleHttpListeningSocket = ""
+}
+
+# Uninstall alias: another easy one
+
+alias(simplehttp_uninstall)
+{
+ # Stop the service eventually
+ if(%SimpleHttpListeningSocket)simplehttp_stop
+ # Kill the class (again eventually)
+ killclass -q simpleHttpListeningSocket
+ # And kill the aliases (including "myself")
+ alias(simplehttp_start){}
+ alias(simplehttp_stop){}
+ alias(simplehttp_uninstall){}
+}
+
+# and let's start it the first time
+
+simplehttp_start
diff --git a/doc/scriptexamples/socket1.kvs b/doc/scriptexamples/socket1.kvs
new file mode 100644
index 00000000..382b48c9
--- /dev/null
+++ b/doc/scriptexamples/socket1.kvs
@@ -0,0 +1,45 @@
+# This is a simple socket class to play with from the console
+# It just echoes the events to the console window
+
+class(testsocket,socket)
+{
+ connectEvent()
+ {
+ echo "[$$] Connected to $$->$remoteIp() $$->$remotePort()"
+ }
+
+ disconnectEvent()
+ {
+ echo "[$$] Disconnected ($0-)"
+ }
+
+ connectFailedEvent()
+ {
+ echo "[$$] Connect failed ($0-)"
+ }
+
+ dataAvailableEvent()
+ {
+ echo "[$$] Data: $$->$read()"
+ }
+}
+
+echo "testsocket class installed"
+echo "You can play with it by using:"
+
+echo "/\%X = \$new(testsocket); # To create it"
+echo "/\%X->\$connect(<host>,<port>); # To connect to a host"
+echo "/\%X->\$write(<data>); # To write ASCII data"
+echo "/\%X->\$close(); # To terminate a connection"
+echo "/delete \%X; # To destroy it"
+echo "...."
+echo "Tip: why don't you try to IRC ?"
+echo "The sequence might be something like:"
+echo "/\%X = \$new(testsocket)"
+echo "/\%X->\$connect(<your_irc_server>,6667)"
+echo "/\%X->\$write(\"USER <youruser> <somestring> <somestring> :<realname>\$cr\$lf\")"
+echo "/\%X->\$write(\"NICK <yournick>\$cr\$lf\")"
+echo "/\%X->\$write(\"JOIN #kvirc\$cr\$lf\")"
+echo "/\%X->\$write(\"PRIVMSG #kvirc :Hello IRC-World! :D\$cr\$lf\")"
+echo "...."
+echo "Have fun! :)"
diff --git a/doc/scriptexamples/srfs.kvs b/doc/scriptexamples/srfs.kvs
new file mode 100644
index 00000000..1d4bd2e7
--- /dev/null
+++ b/doc/scriptexamples/srfs.kvs
@@ -0,0 +1,42 @@
+# Connect to firewalled sysreset fserves without /dccserver
+# Everything here was derived through simple experimentation while learning how everything involved
+# works. If there's a better way I'm in no rush figure it out.
+#
+# Firewalled sysreset fserves try to open a dcc chat connection to the target port and send
+# the message "100 fservenick". After the fserve sends the "100 fservenick" message it expects a
+# "101 recipientnick" message, with "recipientnick" being the nick of whoever got the message.
+# I wasn't able to send it some1 else's nick and get a connection that way, which would be
+# interesting since you could theoretically serve connections to other ppl behind firewalls.
+#
+# This code requires opening a listening socket, but since sysreset is mircx specific (essentially
+# winhozed specific) it doesn't hestitate to asking people who connect to open a listening port in
+# the well known/privileged range which requires root (NONO). To deal with this, I setup iptables
+# to forward packets bound for port 59 to port 12345 (which can be bound by non-root) by using:
+# "iptables -t nat -I PREROUTING -p tcp -m multiport --dports 59 -j DNAT --to-destination :12345"
+# (this requires root)
+#
+# There also appears to also be an option for some firewalled dcc send protocol. I've only
+# encountered this once though and didn't care to figure it out.
+
+# Execute all the following code in the "New code tester" window
+alias(srfs) # Create alias: srfs
+ {
+ if($0 && $1) # make sure there are enough parameters
+ {
+ dcc.chat -n -u -p=12345 $0; # listen on port 12345 for incoming chat
+ ctcp $0 $1-; # send the ctcp trigger
+ }
+ else
+ echo "Usage: /srfs <nick> <trigger>"; # when there aren't enough parameters
+ }
+
+event(OnDCCChatMessage,srfsHook) # Create OnDCCChatMessage event: srfs
+ {
+ # Since this event will parse ALL dcc chat messages, it looks for a message in the format
+ # "100 word" with no other trailing text. This is only a hack so it doesn't verify that
+ # "word" is a nickname, much less the nick of an expected fserve.
+ if(!$str.cmp($str.word(0, $0-), "100") && $str.cmp($str.word(1, $0-), "") && !$str.cmp($str.word(2, $0-), ""))
+ say "101 $me"; # reply 101 mynick # reply "101 mynick"
+ }
+# End
diff --git a/doc/scriptexamples/switchstress.kvs b/doc/scriptexamples/switchstress.kvs
new file mode 100644
index 00000000..883383d2
--- /dev/null
+++ b/doc/scriptexamples/switchstress.kvs
@@ -0,0 +1,46 @@
+echo "Beginning the test! =========================="
+
+switch(test)
+{
+ case(test)
+ {
+ echo "case(test)"
+ }
+ match(test)
+ {
+ echo "match(test)"
+ # comment
+ }
+ match(T*)
+ {
+ echo "match(T*)"
+ }
+ # Comment
+ match(T*): echo "match(T*) 2"
+ default: echo "default 1"
+ case(texto):
+ {
+ echo "case(texto)"
+ break
+ break
+ }
+ break;
+ default:
+ {
+ echo "default 2"
+ }
+ default:
+ {
+ echo "default 3"
+ }
+ break
+ regexp([a-z]*)
+ {
+ echo "match([a-z]*)"
+ }
+ default:
+ {
+ echo "default 4"
+ }
+
+}
diff --git a/doc/scriptexamples/timer1.kvs b/doc/scriptexamples/timer1.kvs
new file mode 100644
index 00000000..b123c6b7
--- /dev/null
+++ b/doc/scriptexamples/timer1.kvs
@@ -0,0 +1,25 @@
+# This is a simple example of using the builtin object timer
+# capabilities.
+
+# we create a new object
+%bomb = $new(object,0,myobject)
+
+# implement its timerEvent
+privateimpl(%bomb,timerEvent)
+{
+ if($$->%secsToGo > 0)
+ {
+ echo "Countdown: $$->%secsToGo"
+ $$->%secsToGo--;
+ } else {
+ echo "Boom!"
+ delete $this
+ }
+}
+
+# and trigger it
+echo "Countdown: 10 seconds to go"
+%bomb->%secsToGo = 9
+%bomb->$startTimer(1000)
+
+# now just have to wait...
diff --git a/doc/scriptexamples/tutorial/Makefile.am b/doc/scriptexamples/tutorial/Makefile.am
new file mode 100644
index 00000000..914e3823
--- /dev/null
+++ b/doc/scriptexamples/tutorial/Makefile.am
@@ -0,0 +1,5 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+EXTRA_DIST = *.kvs
diff --git a/doc/scriptexamples/tutorial/minesweeper1.kvs b/doc/scriptexamples/tutorial/minesweeper1.kvs
new file mode 100644
index 00000000..f4f5f5ee
--- /dev/null
+++ b/doc/scriptexamples/tutorial/minesweeper1.kvs
@@ -0,0 +1,78 @@
+# The scripts in this tutorial implement the famous minesweeper game
+# STEP 1
+
+
+
+# First of all we create the main game widget
+# The minesweeper widget inherits from the widget class
+class(minesweepermain,widget)
+{
+ # The constructor sets the basic widget properties
+ # and creates the child widgets
+ constructor()
+ {
+ # Set the widget caption
+ $$->$setCaption("KVIrc's Minesweeper (0.1.0)");
+
+ # We will have a variable number of rows , columns and mines
+ # For now we hardcorde it , later they might become user definable parameters
+ $$->%rows = 10
+ $$->%cols = 10
+ $$->%mines = 10
+
+ # The child labels will be put in a layout that will manage automatically their geometries
+ $$->%layout = $new(layout,$this)
+
+ # Time to create the child labels
+ for(%i = 0;%i < $$->%rows;%i++)
+ {
+ for(%j = 0;%j < $$->%cols;%j++)
+ {
+ # We use a dictionary to simulate a two dimensional array
+ # The label references are stored in the dictionary associated to a key
+ # that is build from the row and column index
+ $$->%label{%i,%j}=$new(label,$this,"%i_%j")
+ # Each label must remember its position
+ $$->%label{%i,%j}->%row = %i
+ $$->%label{%i,%j}->%col = %j
+ # We add the labels to the layout grid
+ $$->%layout->$addWidget($$->%label{%i,%j},%i,%j)
+ }
+ }
+
+ # Time to initialize a new game
+ $$->$newGame();
+ }
+
+ # We need no destructor for now : the child widgets and the layout will be
+ # destroyed when the user will close the main widget
+
+
+ # Here we start a new game
+ newGame()
+ {
+ # We set the labels
+ for(%i = 0;%i < $$->%rows;%i++)
+ {
+ for(%j = 0;%j < $$->%cols;%j++)
+ {
+ # KVIrc is parsed on-the-fly so we use the following line as optimisation.
+ # parsing %l is really faster than parsing a $$->%label{%i,%j}
+ %l = $$->%label{%i,%j}
+ %l->$setFrameStyle(Raised,WinPanel); # raised labels are "unpressed" buttons
+ %l->%bIsMine = 0 # for now it is NOT a mine
+ %l->%numMines = 0 # number of adiacent mines , for now 0
+ %l->%bIsDiscovered = 0 # this label has been pressed ?
+ %l->$setText("") # set the text to an empty string
+ }
+ }
+ }
+}
+
+# Create an instance of the minesweepermain object
+
+%m = $new(minesweepermain)
+%m->$show()
+
+# /parse this file
+
diff --git a/doc/scriptexamples/tutorial/minesweeper2.kvs b/doc/scriptexamples/tutorial/minesweeper2.kvs
new file mode 100644
index 00000000..16eb3172
--- /dev/null
+++ b/doc/scriptexamples/tutorial/minesweeper2.kvs
@@ -0,0 +1,93 @@
+# The scripts in this tutorial implement the famous minesweeper game
+# STEP 2
+
+class(minesweepermain,widget)
+{
+ constructor()
+ {
+ $$->$setCaption("KVIrc's Minesweeper (0.1.0)");
+
+ $$->%rows = 10
+ $$->%cols = 10
+ $$->%mines = 10
+
+ $$->%layout = $new(layout,$this)
+
+ for(%i = 0;%i < $$->%rows;%i++)
+ {
+ for(%j = 0;%j < $$->%cols;%j++)
+ {
+ $$->%label{%i,%j}=$new(label,$this,"%i_%j")
+ $$->%label{%i,%j}->%row = %i
+ $$->%label{%i,%j}->%col = %j
+ $$->%layout->$addWidget($$->%label{%i,%j},%i,%j)
+ }
+ }
+
+ $$->$newGame()
+ }
+
+ newGame()
+ {
+ for(%i = 0;%i < $$->%rows;%i++)
+ {
+ for(%j = 0;%j < $$->%cols;%j++)
+ {
+ %l = $$->%label{%i,%j}
+ %l->$setFrameStyle(Raised,WinPanel);
+ %l->%bIsMine = 0
+ %l->%numMines = 0
+ %l->%bIsDiscovered = 0
+ %l->$setText("")
+ }
+ }
+ # Here we drop the mines around: it is a bit complex problem:
+ # We want to have a fixed number of mines placed randomly in our grid
+ #
+ # So .. for each mine that we have to place...
+ for(%i = 0;%i < $$->%mines;%i++)
+ {
+ # Choose a random position for this mine
+ %row = $rand($($$->%rows - 1))
+ %col = $rand($($$->%cols - 1))
+ # Ensure that we're not placing this mine over an existing one
+ while($$->%label{%row,%col}->%bIsMine != 0)
+ {
+ # If there was already a mine, then choose the position again
+ %row = $rand($($$->%rows - 1))
+ %col = $rand($($$->%cols - 1))
+ }
+ # Ok.. this is a mine then
+ $$->%label{%row,%col}->%bIsMine = 1
+
+ # increase the mine count for the adiacent cells: this is again a bit complex thingie
+ if(%row > 0)
+ {
+ # There is a row over our mine: the cells above must have their mine count updated
+ # The cell just above us
+ $$->%label{$(%row - 1),%col}->%numMines++
+ # The cell above on the left (if exists)
+ if(%col > 0)$$->%label{$(%row - 1),$(%col - 1)}->%numMines++
+ # The cell above on the right (if exists)
+ if(%col < ($$->%cols - 1))$$->%label{$(%row - 1),$(%col + 1)}->%numMines++
+ }
+ if(%row < ($$->%rows - 1))
+ {
+ # There is a row below our mine: the cells below must have their mine count updated
+ # The cell just below us
+ $$->%label{$(%row + 1),%col}->%numMines++
+ # The cell below on the left (if exists)
+ if(%col > 0)$$->%label{$(%row + 1),$(%col - 1)}->%numMines++
+ # The cell below on the right (if exists)
+ if(%col < ($$->%cols - 1))$$->%label{$(%row + 1),$(%col + 1)}->%numMines++
+ }
+ # Now the cell on the left side (if exists)
+ if(%col > 0)$$->%label{%row,$(%col - 1)}->%numMines++
+ # And on the right side (if exists)
+ if(%col < ($$->%cols - 1))$$->%label{%row,$(%col + 1)}->%numMines++
+ }
+ }
+}
+
+%m = $new(minesweepermain)
+%m->$show()
diff --git a/doc/scriptexamples/tutorial/minesweeper3.kvs b/doc/scriptexamples/tutorial/minesweeper3.kvs
new file mode 100644
index 00000000..7522c390
--- /dev/null
+++ b/doc/scriptexamples/tutorial/minesweeper3.kvs
@@ -0,0 +1,147 @@
+# The scripts in this tutorial implement the famous minesweeper game
+# STEP 3
+
+# We want the labels to report us the clicks thus we will use
+# a class derived from label
+class(minelabel,label)
+{
+ # We ovverride the implementation for mousePressEvent()
+ # and we signal the mouse press to the parent minesweeper widget
+ mousePressEvent()
+ {
+ # We could check that $$->$parent() is a minesweeper in fact...
+ # but well... let's keep it simple :)
+ $$->$parent()->$mineLabelPressed($this)
+ }
+}
+
+class(minesweepermain,widget)
+{
+ constructor()
+ {
+ $$->$setCaption("KVIrc's Minesweeper (0.1.0)");
+
+ $$->%rows = 10
+ $$->%cols = 10
+ $$->%mines = 10
+
+ $$->%layout = $new(layout,$this)
+
+ for(%i = 0;%i < $$->%rows;%i++)
+ {
+ for(%j = 0;%j < $$->%cols;%j++)
+ {
+ # we change label to minelabel then
+ #$$->%label{%i,%j}=$new(label,$this,"%i_%j")
+ $$->%label{%i,%j}=$new(minelabel,$this,"%i_%j")
+ $$->%label{%i,%j}->%row = %i
+ $$->%label{%i,%j}->%col = %j
+ $$->%layout->$addWidget($$->%label{%i,%j},%i,%j)
+ }
+ }
+
+ $$->$newGame()
+ }
+
+ newGame()
+ {
+ for(%i = 0;%i < $$->%rows;%i++)
+ {
+ for(%j = 0;%j < $$->%cols;%j++)
+ {
+ %l = $$->%label{%i,%j}
+ %l->$setFrameStyle(Raised,WinPanel);
+ %l->%bIsMine = 0
+ %l->%numMines = 0
+ %l->%bIsDiscovered = 0
+ %l->$setText("")
+ }
+ }
+ # drop the mines
+ for(%i = 0;%i < $$->%mines;%i++)
+ {
+ %row = $rand($($$->%rows - 1))
+ %col = $rand($($$->%cols - 1))
+ while($$->%label{%row,%col}->%bIsMine != 0)
+ {
+ %row = $rand($($$->%rows - 1))
+ %col = $rand($($$->%cols - 1))
+ }
+ $$->%label{%row,%col}->%bIsMine = 1
+ # increase the mine count for the adiacent cells
+ if(%row > 0)
+ {
+ $$->%label{$(%row - 1),%col}->%numMines++
+ if(%col > 0)$$->%label{$(%row - 1),$(%col - 1)}->%numMines++
+ if(%col < ($$->%cols - 1))$$->%label{$(%row - 1),$(%col + 1)}->%numMines++
+ }
+ if(%row < ($$->%rows - 1))
+ {
+ $$->%label{$(%row + 1),%col}->%numMines++
+ if(%col > 0)$$->%label{$(%row + 1),$(%col - 1)}->%numMines++
+ if(%col < ($$->%cols - 1))$$->%label{$(%row + 1),$(%col + 1)}->%numMines++
+ }
+ if(%col > 0)$$->%label{%row,$(%col - 1)}->%numMines++
+ if(%col < ($$->%cols - 1))$$->%label{%row,$(%col + 1)}->%numMines++
+ }
+ }
+
+ # A mine label was pressed!
+ # This function is called by our children minelabel objects
+ # and the parameter passed is the minelabel reference
+ mineLabelPressed($0 = mine label object that has been pressed)
+ {
+ # Is is a mine ?
+ if($0->%bIsMine)
+ {
+ # Yes , a mine :(
+ # Game over
+ $0->$setFrameStyle(WinPanel,Sunken)
+ $0->$setText("*")
+ } else {
+ # Not a mine.. discover the adiacent cells
+ # We pass the minelabel reference
+ $$->$discoverCells($0)
+ }
+ }
+
+ # This function is recursive: it discovers the adjacent cells
+ # that are not mines
+ discoverCells($0 = mine label that has to be discovered)
+ {
+ # If it is a mine ,then do not discover it
+ if($0->%bIsMine)return;
+ # If it is already discovered , return too
+ if($0->%bIsDiscovered)return;
+ # Ok.. this is discovered
+ $0->%bIsDiscovered = 1
+ $0->$setFrameStyle(WinPanel,Sunken)
+ # If this cell has adjacent mines then show their number and return
+ if($0->%numMines > 0)$0->$setText($0->%numMines)
+ else {
+ # There are no adjacent mines : discover the cells recursively
+ # This block of code is similar to the one used in dropping the bombs around
+ if($0->%row > 0)
+ {
+ # Discover the cells in the row above
+ $$->$discoverCells($$->%label{$($0->%row - 1),$0->%col})
+ if($0->%col > 0)$$->$discoverCells($$->%label{$($0->%row - 1),$($0->%col - 1)})
+ if($0->%col < ($$->%cols - 1))$$->$discoverCells($$->%label{$($0->%row - 1),$($0->%col + 1)})
+ }
+ if($0->%row < ($$->%rows - 1))
+ {
+ # Discover the cells in the row below
+ $$->$discoverCells($$->%label{$($0->%row + 1),$0->%col})
+ if($0->%col > 0)$$->$discoverCells($$->%label{$($0->%row + 1),$($0->%col - 1)})
+ if($0->%col < ($$->%cols - 1))$$->$discoverCells($$->%label{$($0->%row + 1),$($0->%col + 1)})
+ }
+ # Discover on the left and right
+ if($0->%col > 0)$$->$discoverCells($$->%label{$0->%row,$($0->%col - 1)})
+ if($0->%col < ($$->%cols - 1))$$->$discoverCells($$->%label{$0->%row,$($0->%col + 1)})
+ }
+ }
+
+}
+
+%m = $new(minesweepermain)
+%m->$show()
diff --git a/doc/scriptexamples/tutorial/minesweeper4.kvs b/doc/scriptexamples/tutorial/minesweeper4.kvs
new file mode 100644
index 00000000..0013736b
--- /dev/null
+++ b/doc/scriptexamples/tutorial/minesweeper4.kvs
@@ -0,0 +1,187 @@
+# The scripts in this tutorial implement the famous minesweeper game
+# STEP 4
+
+class(minelabel,label)
+{
+ mousePressEvent()
+ {
+ $$->$parent()->$mineLabelPressed($this)
+ }
+}
+
+class(minesweepermain,widget)
+{
+ constructor()
+ {
+ # This is no longer needed here : we move it to the container widget
+
+ $$->%rows = 10
+ $$->%cols = 10
+ $$->%mines = 10
+ # is there a running game ?
+ $$->%bGameRunning = 0
+
+
+ $$->%layout = $new(layout,$this)
+
+ for(%i = 0;%i < $$->%rows;%i++)
+ {
+ for(%j = 0;%j < $$->%cols;%j++)
+ {
+ $$->%label{%i,%j}=$new(minelabel,$this,"%i_%j")
+ $$->%label{%i,%j}->%row = %i
+ $$->%label{%i,%j}->%col = %j
+ # Let's set the minimum size of the labels: they look better this way
+ $$->%label{%i,%j}->$setMinimumWidth(26)
+ $$->%label{%i,%j}->$setMinimumHeight(26)
+ $$->%label{%i,%j}->$setAlignment(HCenter , VCenter)
+ $$->%layout->$addWidget($$->%label{%i,%j},%i,%j)
+ }
+ }
+ # We remove this call, $$->$newGame() will be called from the container widget
+ #$$->$newGame()
+ }
+
+ newGame()
+ {
+ for(%i = 0;%i < $$->%rows;%i++)
+ {
+ for(%j = 0;%j < $$->%cols;%j++)
+ {
+ %l = $$->%label{%i,%j}
+ %l->$setFrameStyle(Raised,WinPanel);
+ %l->%bIsMine = 0
+ %l->%numMines = 0
+ %l->%bIsDiscovered = 0
+ %l->$setText("")
+ # Set enabled !
+ %l->$setEnabled(1)
+ }
+ }
+ # drop the mines
+ for(%i = 0;%i < $$->%mines;%i++)
+ {
+ %row = $rand($($$->%rows - 1))
+ %col = $rand($($$->%cols - 1))
+ while($$->%label{%row,%col}->%bIsMine != 0)
+ {
+ %row = $rand($($$->%rows - 1))
+ %col = $rand($($$->%cols - 1))
+ }
+ $$->%label{%row,%col}->%bIsMine = 1
+ # increase the mine count for the adiacent cells
+ if(%row > 0)
+ {
+ $$->%label{$(%row - 1),%col}->%numMines++
+ if(%col > 0)$$->%label{$(%row - 1),$(%col - 1)}->%numMines++
+ if(%col < ($$->%cols - 1))$$->%label{$(%row - 1),$(%col + 1)}->%numMines++
+ }
+ if(%row < ($$->%rows - 1))
+ {
+ $$->%label{$(%row + 1),%col}->%numMines++
+ if(%col > 0)$$->%label{$(%row + 1),$(%col - 1)}->%numMines++
+ if(%col < ($$->%cols - 1))$$->%label{$(%row + 1),$(%col + 1)}->%numMines++
+ }
+ if(%col > 0)$$->%label{%row,$(%col - 1)}->%numMines++
+ if(%col < ($$->%cols - 1))$$->%label{%row,$(%col + 1)}->%numMines++
+ }
+ # A game is running
+ $$->%bGameRunning = 1
+ }
+
+ mineLabelPressed($0 = mine label object that has been pressed)
+ {
+ # When the game isn't running we don't care about the mouse press events
+ if(!$$->%bGameRunning)return
+ if($0->%bIsMine)
+ {
+ $0->$setFrameStyle(WinPanel,Sunken)
+ $0->$setImage(82); # 82 is a bomb
+ # We emit the gameOver signal so the container widget knows
+ $$->$emit(gameOver)
+ # And disable all the cells
+ for(%i = 0;%i < $$->%rows;%i++)
+ {
+ for(%j = 0;%j < $$->%cols;%j++)
+ {
+ $$->%label{%i,%j}->$setEnabled(0)
+ }
+ }
+ # leave the bomb image enabled :D
+ $0->$setEnabled(1)
+ # Game finished :(
+ $$->%bGameRunning = 0
+ } else {
+ $$->$discoverCells($0)
+ }
+ }
+
+ discoverCells($0 = mine label that has to be discovered)
+ {
+ if($0->%bIsMine)return;
+ if($0->%bIsDiscovered)return;
+ $0->%bIsDiscovered = 1
+ $0->$setFrameStyle(WinPanel,Sunken)
+ if($0->%numMines > 0)$0->$setText($0->%numMines)
+ else {
+ if($0->%row > 0)
+ {
+ $$->$discoverCells($$->%label{$($0->%row - 1),$0->%col})
+ if($0->%col > 0)$$->$discoverCells($$->%label{$($0->%row - 1),$($0->%col - 1)})
+ if($0->%col < ($$->%cols - 1))$$->$discoverCells($$->%label{$($0->%row - 1),$($0->%col + 1)})
+ }
+ if($0->%row < ($$->%rows - 1))
+ {
+ $$->$discoverCells($$->%label{$($0->%row + 1),$0->%col})
+ if($0->%col > 0)$$->$discoverCells($$->%label{$($0->%row + 1),$($0->%col - 1)})
+ if($0->%col < ($$->%cols - 1))$$->$discoverCells($$->%label{$($0->%row + 1),$($0->%col + 1)})
+ }
+ if($0->%col > 0)$$->$discoverCells($$->%label{$0->%row,$($0->%col - 1)})
+ if($0->%col < ($$->%cols - 1))$$->$discoverCells($$->%label{$0->%row,$($0->%col + 1)})
+ }
+ }
+
+}
+
+# We want a bigger window around our minesweeper widget
+# we want to provide some output and user menus...
+# Thus we create a container widget class , that will be also our new toplevel widget
+
+class(minesweeper,widget)
+{
+ constructor()
+ {
+ $$->$setCaption("KVIrc's Minesweeper (0.1.0)");
+
+ # we need a layout to manage the children
+ $$->%layout = $new(layout,$$)
+
+
+ $$->%gamepool = $new(minesweepermain,$$)
+ $$->%layout->$addWidget($$->%gamepool,1,0)
+ connect $$->%gamepool gameOver $$ gameOver
+
+ $$->%output = $new(label,$$)
+ $$->%output->$setFrameStyle(WinPanel,Sunken)
+ $$->%layout->$addWidget($$->%output,2,0)
+
+ $$->$newGame()
+ }
+
+ gameOver()
+ {
+ $$->%output->$setText("Game Over :(")
+ }
+
+ newGame()
+ {
+ $$->%gamepool->$newGame()
+ $$->%output->$setText("Ready")
+ }
+}
+
+
+#We substitute the old creation call with the new container object creation call
+#%m = $new(minesweepermain)
+%m = $new(minesweeper)
+%m->$show()
diff --git a/doc/scriptexamples/tutorial/minesweeper5.kvs b/doc/scriptexamples/tutorial/minesweeper5.kvs
new file mode 100644
index 00000000..1bda6c83
--- /dev/null
+++ b/doc/scriptexamples/tutorial/minesweeper5.kvs
@@ -0,0 +1,201 @@
+# The scripts in this tutorial implement the famous minesweeper game
+# STEP 5
+
+
+# First of all we convert all the $$-> to @ : this is faster both to write and for KVIrc to process
+
+class(minelabel,label)
+{
+ mousePressEvent()
+ {
+ # We also pass the mouse button pressed
+ @$parent()->$mineLabelPressed($this,$0)
+ }
+}
+
+class(minesweepermain,widget)
+{
+ constructor()
+ {
+ @%rows = 20
+ @%cols = 20
+ @%mines = 60
+ @%bGameRunning = 0
+
+ @%layout = $new(layout,$this)
+
+ for(%i = 0;%i < @%rows;%i++)
+ {
+ for(%j = 0;%j < @%cols;%j++)
+ {
+ @%label{%i,%j}=$new(minelabel,$this,"%i_%j")
+ @%label{%i,%j}->%row = %i
+ @%label{%i,%j}->%col = %j
+ @%label{%i,%j}->$setMinimumWidth(26)
+ @%label{%i,%j}->$setMinimumHeight(26)
+ @%label{%i,%j}->$setAlignment(HCenter , VCenter)
+ @%layout->$addWidget(@%label{%i,%j},%i,%j)
+ }
+ }
+ }
+
+ newGame()
+ {
+ for(%i = 0;%i < @%rows;%i++)
+ {
+ for(%j = 0;%j < @%cols;%j++)
+ {
+ %l = @%label{%i,%j}
+ %l->$setFrameStyle(Raised,WinPanel);
+ %l->%bIsMine = 0
+ %l->%numMines = 0
+ %l->%bIsDiscovered = 0
+ %l->%iState = 0; # In state 0 it doesn't show anything
+ %l->$setText("")
+ %l->$setImage(); # show no image
+ %l->$setEnabled(1)
+ }
+ }
+
+ for(%i = 0;%i < @%mines;%i++)
+ {
+ %row = $rand($(@%rows - 1))
+ %col = $rand($(@%cols - 1))
+ while(@%label{%row,%col}->%bIsMine != 0)
+ {
+ %row = $rand($(@%rows - 1))
+ %col = $rand($(@%cols - 1))
+ }
+ @%label{%row,%col}->%bIsMine = 1
+ if(%row > 0)
+ {
+ @%label{$(%row - 1),%col}->%numMines++
+ if(%col > 0)@%label{$(%row - 1),$(%col - 1)}->%numMines++
+ if(%col < (@%cols - 1))@%label{$(%row - 1),$(%col + 1)}->%numMines++
+ }
+ if(%row < (@%rows - 1))
+ {
+ @%label{$(%row + 1),%col}->%numMines++
+ if(%col > 0)@%label{$(%row + 1),$(%col - 1)}->%numMines++
+ if(%col < (@%cols - 1))@%label{$(%row + 1),$(%col + 1)}->%numMines++
+ }
+ if(%col > 0)@%label{%row,$(%col - 1)}->%numMines++
+ if(%col < (@%cols - 1))@%label{%row,$(%col + 1)}->%numMines++
+ }
+ @%bGameRunning = 1
+ }
+
+ mineLabelPressed($0 = mine label object that has been pressed,$1 = the button that has been pressed)
+ {
+ if(!@%bGameRunning)return
+
+ # We add the right button handling : the user can mark the cells discovered
+ if($1 == 1)
+ {
+ # Right button was pressed
+ if($0->%bIsDiscovered)return; # does nothing
+ # we loop the state thru 0->1->2->0
+ switch($0->%iState)
+ {
+ case(0):
+ {
+ $0->$setImage(58)
+ $0->%iState = 1
+ }
+ case(1):
+ {
+ $0->$setImage(28)
+ $0->%iState = 2
+ }
+ case(2):
+ {
+ $0->$setImage()
+ $0->%iState = 0
+ }
+ }
+ return;
+ }
+
+ if($0->%bIsMine)
+ {
+ $0->$setFrameStyle(WinPanel,Sunken)
+ $0->$setImage(82); # 82 is a bomb
+ @$emit(gameOver)
+ for(%i = 0;%i < @%rows;%i++)
+ {
+ for(%j = 0;%j < @%cols;%j++)
+ {
+ @%label{%i,%j}->$setEnabled(0)
+ }
+ }
+ $0->$setEnabled(1)
+ @%bGameRunning = 0
+ } else {
+ @$discoverCells($0)
+ }
+ }
+
+ discoverCells($0 = mine label that has to be discovered)
+ {
+ if($0->%bIsMine)return;
+ if($0->%bIsDiscovered)return;
+ $0->%bIsDiscovered = 1
+ $0->$setFrameStyle(WinPanel,Sunken)
+ if($0->%iState != 0)$0->$setImage(); # ensure that no image is shown
+ if($0->%numMines > 0)$0->$setText($0->%numMines)
+ else {
+ if($0->%row > 0)
+ {
+ @$discoverCells(@%label{$($0->%row - 1),$0->%col})
+ if($0->%col > 0)@$discoverCells(@%label{$($0->%row - 1),$($0->%col - 1)})
+ if($0->%col < (@%cols - 1))@$discoverCells(@%label{$($0->%row - 1),$($0->%col + 1)})
+ }
+ if($0->%row < (@%rows - 1))
+ {
+ @$discoverCells(@%label{$($0->%row + 1),$0->%col})
+ if($0->%col > 0)@$discoverCells(@%label{$($0->%row + 1),$($0->%col - 1)})
+ if($0->%col < (@%cols - 1))@$discoverCells(@%label{$($0->%row + 1),$($0->%col + 1)})
+ }
+ if($0->%col > 0)@$discoverCells(@%label{$0->%row,$($0->%col - 1)})
+ if($0->%col < (@%cols - 1))@$discoverCells(@%label{$0->%row,$($0->%col + 1)})
+ }
+ }
+
+}
+
+
+class(minesweeper,widget)
+{
+ constructor()
+ {
+ @$setCaption("KVIrc's Minesweeper (0.1.0)");
+
+ @%layout = $new(layout,$$)
+
+
+ @%gamepool = $new(minesweepermain,$$)
+ @%layout->$addWidget(@%gamepool,1,0)
+ connect @%gamepool gameOver $$ gameOver
+
+ @%output = $new(label,$$)
+ @%output->$setFrameStyle(WinPanel,Sunken)
+ @%layout->$addWidget(@%output,2,0)
+
+ @$newGame()
+ }
+
+ gameOver()
+ {
+ @%output->$setText("Game Over :(")
+ }
+
+ newGame()
+ {
+ @%gamepool->$newGame()
+ @%output->$setText("Ready")
+ }
+}
+
+
+%m = $new(minesweeper)
+%m->$show()
diff --git a/doc/scriptexamples/tutorial/minesweeper6.kvs b/doc/scriptexamples/tutorial/minesweeper6.kvs
new file mode 100644
index 00000000..f03ffb05
--- /dev/null
+++ b/doc/scriptexamples/tutorial/minesweeper6.kvs
@@ -0,0 +1,254 @@
+# The scripts in this tutorial implement the famous minesweeper game
+# STEP 6
+
+class(minelabel,label)
+{
+ mousePressEvent()
+ {
+ # We also pass the mouse button pressed
+ @$parent()->$mineLabelPressed($this,$0)
+ }
+}
+
+class(minesweepermain,widget)
+{
+ # We accept constructor parameters now
+ constructor($0 = rows,$1 = cols,$2 = num mines)
+ {
+ # We should check the parameters passed here, and maybe return 0
+ # if the params are not positive numbers
+ echo $0,$1,$2
+ @%rows = $0
+ @%cols = $1
+ @%mines = $2
+ @%bGameRunning = 0
+
+ @%layout = $new(layout,$this)
+
+ for(%i = 0;%i < @%rows;%i++)
+ {
+ for(%j = 0;%j < @%cols;%j++)
+ {
+ @%label{%i,%j}=$new(minelabel,$this,"%i_%j")
+ @%label{%i,%j}->%row = %i
+ @%label{%i,%j}->%col = %j
+ @%label{%i,%j}->$setMinimumWidth(26)
+ @%label{%i,%j}->$setMinimumHeight(26)
+ @%label{%i,%j}->$setAlignment(HCenter , VCenter)
+ @%layout->$addWidget(@%label{%i,%j},%i,%j)
+ }
+ }
+ }
+
+ newGame()
+ {
+ for(%i = 0;%i < @%rows;%i++)
+ {
+ for(%j = 0;%j < @%cols;%j++)
+ {
+ %l = @%label{%i,%j}
+ %l->$setFrameStyle(Raised,WinPanel);
+ %l->%bIsMine = 0
+ %l->%numMines = 0
+ %l->%bIsDiscovered = 0
+ %l->%iState = 0; # In state 0 it doesn't show anything
+ %l->$setText("")
+ %l->$setImage(); # show no image
+ %l->$setEnabled(1)
+ }
+ }
+
+ for(%i = 0;%i < @%mines;%i++)
+ {
+ %row = $rand($(@%rows - 1))
+ %col = $rand($(@%cols - 1))
+ while(@%label{%row,%col}->%bIsMine != 0)
+ {
+ %row = $rand($(@%rows - 1))
+ %col = $rand($(@%cols - 1))
+ }
+ @%label{%row,%col}->%bIsMine = 1
+ if(%row > 0)
+ {
+ @%label{$(%row - 1),%col}->%numMines++
+ if(%col > 0)@%label{$(%row - 1),$(%col - 1)}->%numMines++
+ if(%col < (@%cols - 1))@%label{$(%row - 1),$(%col + 1)}->%numMines++
+ }
+ if(%row < (@%rows - 1))
+ {
+ @%label{$(%row + 1),%col}->%numMines++
+ if(%col > 0)@%label{$(%row + 1),$(%col - 1)}->%numMines++
+ if(%col < (@%cols - 1))@%label{$(%row + 1),$(%col + 1)}->%numMines++
+ }
+ if(%col > 0)@%label{%row,$(%col - 1)}->%numMines++
+ if(%col < (@%cols - 1))@%label{%row,$(%col + 1)}->%numMines++
+ }
+ @%bGameRunning = 1
+ # We keep track of the number of the discovered cells
+ @%iTotalNonMineCells = $((@%rows * @%cols) - @%mines)
+ @%iUndiscoveredNonMineCells = @%iTotalNonMineCells
+ }
+
+ mineLabelPressed($0 = mine label object that has been pressed,$1 = the button that has been pressed)
+ {
+ if(!@%bGameRunning)return
+
+ # We add the right button handling : the user can mark the cells discovered
+ if($1 == 1)
+ {
+ # Right button was pressed
+ if($0->%bIsDiscovered)return; # does nothing
+ # we loop the state thru 0->1->2->0
+ switch($0->%iState)
+ {
+ case(0):
+ {
+ $0->$setImage(58)
+ $0->%iState = 1
+ }
+ case(1):
+ {
+ $0->$setImage(28)
+ $0->%iState = 2
+ }
+ case(2):
+ {
+ $0->$setImage()
+ $0->%iState = 0
+ }
+ }
+ return;
+ }
+
+ if($0->%bIsMine)
+ {
+ @$gameFailure($0)
+ } else {
+ @$discoverCells($0)
+ if(@%iUndiscoveredNonMineCells == 0)
+ {
+ # Finished!
+ @$gameSuccess()
+ } else {
+ @$emit(userMoved)
+ }
+ }
+ }
+
+ discoverAllCells()
+ {
+ for(%i = 0;%i < @%rows;%i++)
+ {
+ for(%j = 0;%j < @%cols;%j++)
+ {
+ %l = @%label{%i,%j}
+ if(!%l->%bIsDiscovered)
+ {
+ %l->$setFrameStyle(WinPanel,Sunken)
+ if(%l->%bIsMine)%l->$setImage(82)
+ else {
+ %l->$setImage("")
+ if(%l->%numMines > 0)%l->$setText(%l->%numMines)
+ else %l->$setText("")
+ }
+ }
+ %l->$setEnabled(0)
+ }
+ }
+ }
+
+ gameFailure($0 = the game cell that had the bomb)
+ {
+ @$discoverAllCells()
+ $0->$setFrameStyle(WinPanel,Sunken)
+ $0->$setImage(82); # 82 is a bomb
+ $0->$setEnabled(1)
+ @%bGameRunning = 0
+ @$emit(gameOver)
+ }
+
+ gameSuccess()
+ {
+ @$discoverAllCells()
+ @%bGameRunning = 0
+ @$emit(success)
+ }
+
+ discoverCells($0 = mine label that has to be discovered)
+ {
+ if($0->%bIsMine)return;
+ if($0->%bIsDiscovered)return;
+ $0->%bIsDiscovered = 1
+ $0->$setFrameStyle(WinPanel,Sunken)
+ @%iUndiscoveredNonMineCells--
+ if($0->%iState != 0)$0->$setImage(); # ensure that no image is shown
+ if($0->%numMines > 0)$0->$setText($0->%numMines)
+ else {
+ if($0->%row > 0)
+ {
+ @$discoverCells(@%label{$($0->%row - 1),$0->%col})
+ if($0->%col > 0)@$discoverCells(@%label{$($0->%row - 1),$($0->%col - 1)})
+ if($0->%col < (@%cols - 1))@$discoverCells(@%label{$($0->%row - 1),$($0->%col + 1)})
+ }
+ if($0->%row < (@%rows - 1))
+ {
+ @$discoverCells(@%label{$($0->%row + 1),$0->%col})
+ if($0->%col > 0)@$discoverCells(@%label{$($0->%row + 1),$($0->%col - 1)})
+ if($0->%col < (@%cols - 1))@$discoverCells(@%label{$($0->%row + 1),$($0->%col + 1)})
+ }
+ if($0->%col > 0)@$discoverCells(@%label{$0->%row,$($0->%col - 1)})
+ if($0->%col < (@%cols - 1))@$discoverCells(@%label{$0->%row,$($0->%col + 1)})
+ }
+ }
+
+}
+
+
+class(minesweeper,widget)
+{
+ constructor()
+ {
+ @$setCaption("KVIrc's Minesweeper (0.1.0)");
+
+ @%layout = $new(layout,$$)
+
+ # Create a 10x10 game pool with 10 mines
+ @%gamepool = $new(minesweepermain,$$,myGamepool,10,10,10)
+ @%layout->$addWidget(@%gamepool,1,0)
+ connect @%gamepool gameOver $$ gameOver
+ # We connect the two new signals
+ connect @%gamepool userMoved $$ showState
+ connect @%gamepool success $$ success
+ @%output = $new(label,$$)
+ @%output->$setFrameStyle(WinPanel,Sunken)
+ @%layout->$addWidget(@%output,2,0)
+
+ @$newGame()
+ }
+
+ showState()
+ {
+ @%output->$setText("@%gamepool->%iUndiscoveredNonMineCells to go")
+ }
+
+ success()
+ {
+ @%output->$setText("You did it!")
+ }
+
+ gameOver()
+ {
+ @%output->$setText("Game Over :(")
+ }
+
+ newGame()
+ {
+ @%gamepool->$newGame()
+ @%output->$setText("Ready")
+ @$showState()
+ }
+}
+
+
+%m = $new(minesweeper)
+%m->$show()
diff --git a/doc/scriptexamples/tutorial/minesweeper7.kvs b/doc/scriptexamples/tutorial/minesweeper7.kvs
new file mode 100644
index 00000000..701c09d3
--- /dev/null
+++ b/doc/scriptexamples/tutorial/minesweeper7.kvs
@@ -0,0 +1,253 @@
+# The scripts in this tutorial implement the famous minesweeper game
+# STEP 7
+
+class(minelabel,label)
+{
+ mousePressEvent()
+ {
+ @$parent()->$mineLabelPressed($this,$0)
+ }
+}
+
+class(minesweepermain,widget)
+{
+ constructor($0 = rows,$1 = cols,$2 = num mines)
+ {
+ # We should check the parameters passed here, and maybe return 0
+ # if the params are not positive numbers
+ echo $0,$1,$2
+ @%rows = $0
+ @%cols = $1
+ @%mines = $2
+ @%bGameRunning = 0
+
+ @%layout = $new(layout,$this)
+
+ for(%i = 0;%i < @%rows;%i++)
+ {
+ for(%j = 0;%j < @%cols;%j++)
+ {
+ @%label{%i,%j}=$new(minelabel,$this,"%i_%j")
+ @%label{%i,%j}->%row = %i
+ @%label{%i,%j}->%col = %j
+ @%label{%i,%j}->$setMinimumWidth(26)
+ @%label{%i,%j}->$setMinimumHeight(26)
+ @%label{%i,%j}->$setAlignment(HCenter , VCenter)
+ @%layout->$addWidget(@%label{%i,%j},%i,%j)
+ }
+ }
+ }
+
+ newGame()
+ {
+ for(%i = 0;%i < @%rows;%i++)
+ {
+ for(%j = 0;%j < @%cols;%j++)
+ {
+ %l = @%label{%i,%j}
+ %l->$setFrameStyle(Raised,WinPanel);
+ %l->%bIsMine = 0
+ %l->%numMines = 0
+ %l->%bIsDiscovered = 0
+ %l->%iState = 0; # In state 0 it doesn't show anything
+ %l->$setText("")
+ %l->$setImage(); # show no image
+ %l->$setEnabled(1)
+ }
+ }
+
+ for(%i = 0;%i < @%mines;%i++)
+ {
+ %row = $rand($(@%rows - 1))
+ %col = $rand($(@%cols - 1))
+ while(@%label{%row,%col}->%bIsMine != 0)
+ {
+ %row = $rand($(@%rows - 1))
+ %col = $rand($(@%cols - 1))
+ }
+ @%label{%row,%col}->%bIsMine = 1
+ if(%row > 0)
+ {
+ @%label{$(%row - 1),%col}->%numMines++
+ if(%col > 0)@%label{$(%row - 1),$(%col - 1)}->%numMines++
+ if(%col < (@%cols - 1))@%label{$(%row - 1),$(%col + 1)}->%numMines++
+ }
+ if(%row < (@%rows - 1))
+ {
+ @%label{$(%row + 1),%col}->%numMines++
+ if(%col > 0)@%label{$(%row + 1),$(%col - 1)}->%numMines++
+ if(%col < (@%cols - 1))@%label{$(%row + 1),$(%col + 1)}->%numMines++
+ }
+ if(%col > 0)@%label{%row,$(%col - 1)}->%numMines++
+ if(%col < (@%cols - 1))@%label{%row,$(%col + 1)}->%numMines++
+ }
+ @%bGameRunning = 1
+ # We keep track of the number of the discovered cells
+ @%iTotalNonMineCells = $((@%rows * @%cols) - @%mines)
+ @%iUndiscoveredNonMineCells = @%iTotalNonMineCells
+ }
+
+ mineLabelPressed($0 = mine label object that has been pressed,$1 = the button that has been pressed)
+ {
+ if(!@%bGameRunning)return
+
+ if($1 == 1)
+ {
+ # Right button
+ if($0->%bIsDiscovered)return; # does nothing
+ switch($0->%iState)
+ {
+ case(0):
+ {
+ $0->$setImage(58)
+ $0->%iState = 1
+ }
+ case(1):
+ {
+ $0->$setImage(28)
+ $0->%iState = 2
+ }
+ case(2):
+ {
+ $0->$setImage()
+ $0->%iState = 0
+ }
+ }
+ return;
+ }
+
+ if($0->%bIsMine)
+ {
+ @$gameFailure($0)
+ } else {
+ @$discoverCells($0)
+ if(@%iUndiscoveredNonMineCells == 0)
+ {
+ # Finished!
+ @$gameSuccess()
+ } else {
+ @$emit(userMoved)
+ }
+ }
+ }
+
+ discoverAllCells()
+ {
+ for(%i = 0;%i < @%rows;%i++)
+ {
+ for(%j = 0;%j < @%cols;%j++)
+ {
+ %l = @%label{%i,%j}
+ if(!%l->%bIsDiscovered)
+ {
+ %l->$setFrameStyle(WinPanel,Sunken)
+ if(%l->%bIsMine)%l->$setImage(82)
+ else {
+ %l->$setImage("")
+ if(%l->%numMines > 0)%l->$setText(%l->%numMines)
+ else %l->$setText("")
+ }
+ }
+ %l->$setEnabled(0)
+ }
+ }
+ }
+
+ gameFailure($0 = the game cell that had the bomb)
+ {
+ @$discoverAllCells()
+ $0->$setFrameStyle(WinPanel,Sunken)
+ $0->$setImage(82); # 82 is a bomb
+ $0->$setEnabled(1)
+ @%bGameRunning = 0
+ @$emit(gameOver)
+ }
+
+ gameSuccess()
+ {
+ @$discoverAllCells()
+ @%bGameRunning = 0
+ @$emit(success)
+ }
+
+ discoverCells($0 = mine label that has to be discovered)
+ {
+ if($0->%bIsMine)return;
+ if($0->%bIsDiscovered)return;
+ $0->%bIsDiscovered = 1
+ $0->$setFrameStyle(WinPanel,Sunken)
+ @%iUndiscoveredNonMineCells--
+ if($0->%iState != 0)$0->$setImage(); # ensure that no image is shown
+ if($0->%numMines > 0)$0->$setText($0->%numMines)
+ else {
+ if($0->%row > 0)
+ {
+ @$discoverCells(@%label{$($0->%row - 1),$0->%col})
+ if($0->%col > 0)@$discoverCells(@%label{$($0->%row - 1),$($0->%col - 1)})
+ if($0->%col < (@%cols - 1))@$discoverCells(@%label{$($0->%row - 1),$($0->%col + 1)})
+ }
+ if($0->%row < (@%rows - 1))
+ {
+ @$discoverCells(@%label{$($0->%row + 1),$0->%col})
+ if($0->%col > 0)@$discoverCells(@%label{$($0->%row + 1),$($0->%col - 1)})
+ if($0->%col < (@%cols - 1))@$discoverCells(@%label{$($0->%row + 1),$($0->%col + 1)})
+ }
+ if($0->%col > 0)@$discoverCells(@%label{$0->%row,$($0->%col - 1)})
+ if($0->%col < (@%cols - 1))@$discoverCells(@%label{$0->%row,$($0->%col + 1)})
+ }
+ }
+
+}
+
+
+class(minesweeper,window)
+{
+ constructor()
+ {
+ @$setCaption("KVIrc's Minesweeper (0.1.0)");
+
+ @%layout = $new(layout,$$)
+
+ @%menubar = $new(menubar,$$)
+ @%menubar->$insertItem(test)
+ @%layout->$addWidget(@%menubar,0,0)
+
+ @%gamepool = $new(minesweepermain,$$,myGamepool,10,10,10)
+ @%layout->$addWidget(@%gamepool,1,0)
+ connect @%gamepool gameOver $$ gameOver
+ # We connect the two new signals
+ connect @%gamepool userMoved $$ showState
+ connect @%gamepool success $$ success
+ @%output = $new(label,$$)
+ @%output->$setFrameStyle(WinPanel,Sunken)
+ @%layout->$addWidget(@%output,2,0)
+
+ @$newGame()
+ }
+
+ showState()
+ {
+ @%output->$setText("@%gamepool->%iUndiscoveredNonMineCells to go")
+ }
+
+ success()
+ {
+ @%output->$setText("You did it!")
+ }
+
+ gameOver()
+ {
+ @%output->$setText("Game Over :(")
+ }
+
+ newGame()
+ {
+ @%gamepool->$newGame()
+ @%output->$setText("Ready")
+ @$showState()
+ }
+}
+
+
+%m = $new(minesweeper)
+%m->$show()
diff --git a/doc/scriptexamples/widget1.kvs b/doc/scriptexamples/widget1.kvs
new file mode 100644
index 00000000..21511b34
--- /dev/null
+++ b/doc/scriptexamples/widget1.kvs
@@ -0,0 +1,20 @@
+# a stupid game :)
+
+srand $unixTime
+
+%w = $new(widget,0,mywidget)
+%w->$setCaption(":)");
+%w->$setGeometry($rand(770),$rand(570),30,30);
+
+privateimpl(%w,mouseEnterEvent)
+{
+ $$->$move($rand(770),$rand(570));
+}
+
+privateimpl(%w,mousePressEvent)
+{
+ echo "You got me!"
+ delete $$
+}
+
+%w->$show()
diff --git a/doc/scriptexamples/widget2.kvs b/doc/scriptexamples/widget2.kvs
new file mode 100644
index 00000000..8c9b5b7a
--- /dev/null
+++ b/doc/scriptexamples/widget2.kvs
@@ -0,0 +1,23 @@
+# a stupid game :) (version 2)
+
+class(mystupidgame,widget)
+{
+ constructor
+ {
+ srand $unixTime;
+ $$->$setCaption(":)");
+ $$->$setGeometry($rand(770),$rand(570),30,30);
+ }
+ mouseEnterEvent
+ {
+ $$->$move($rand(770),$rand(570));
+ }
+ mousePressEvent
+ {
+ echo "You got me!"
+ delete $$
+ }
+}
+
+%w = $new(mystupidgame,0)
+%w->$show()
diff --git a/doc/scripting.faq.txt b/doc/scripting.faq.txt
new file mode 100644
index 00000000..7d594cd1
--- /dev/null
+++ b/doc/scripting.faq.txt
@@ -0,0 +1,48 @@
+-------------------------------------------------------------------------------
+Q: What is a callback (command) ?
+
+A: A callback is a command or set of commands that is called by KVIrc in
+ response to an event. It is similar to an event handler; the difference
+ is that the event handler is usually static, the callback is "created"
+ at runtime instead.
+ Consider the command exec (see /help exec); its syntax is as follows:
+
+ exec(<commandline>[,<magicparams>])
+ {
+ <callback>
+ }
+
+ The <callback> is a list of commands that will be called by KVIrc when
+ the <commandline> has been executed and the slave process has printed
+ some data on its stdout.
+
+
+-------------------------------------------------------------------------------
+Q: How can i print on a window the result of an external command like nmap
+ or uname ?
+
+A: Starting from version 3.0.0 KVIrc supports (again) the /exec command.
+ The commandline you're looking for might be something similar to:
+
+ exec("uname -a"){ echo $1; };
+
+ If you want to say the result to a channel you may use say instead of echo
+
+ exec("uname -a"){ say $1; };
+
+ For nmap you might consider using the -e switch too in order to see
+ the errors printed on stderr.
+
+ exec -e ("nmap -sS -p 1-1024 somehost"){ say $1; }
+
+ Exec is a really flexible command, it can process the slave output in blocks
+ or as a whole and can write data to the slave too. See /help exec for
+ more details.
+
+-------------------------------------------------------------------------------
+Q: KVIrc crashes when I use a commandline like the following:
+ alias(identify){ identify password; }
+
+A: This is infinite recursion: a programming error.
+ Take a look at http://en.wikipedia.org/wiki/Infinite_loop , learn
+ that once for all and fix your script.
diff --git a/doc/themes.howto.txt b/doc/themes.howto.txt
new file mode 100644
index 00000000..ac04de35
--- /dev/null
+++ b/doc/themes.howto.txt
@@ -0,0 +1,123 @@
+Starting from the release 3.0.0 KVIrc supports user interface themeing.
+
+A KVIrc theme is basically:
+- a subset of the options that controls the visual appearance
+ of the user interface
+- a set of icons that override the default ones
+
+The skeleton for a new theme can be produced by simply saving your current
+theme. Open the options dialog and go to the Look & Feel / Theme page.
+Click on "Save current theme", enter the description in the dialog that
+appears and select "Ok". The theme skeleton is now saved in your home
+directory.The confirmation dialog
+should have told you exactly where: it should be a directory like
+$HOME/.kvirc/<kvircversion>/theme/<yourthemename>-<yourthemeversion>.
+Cd to that directory and look around. You should see two configuration *.kvc
+files and a lot of *.png images.
+
+themeinfo.kvc contains the informations that the user can see when browsing
+the themes in the options dialog. The format of this file should be obvious:
+you can edit it manually if you want to make some changes.
+(The %20 strings are url-encoded spaces, KVirc will accept also plain spaces).
+
+themedata.kvc contains the visual settings. It looks more or less like this:
+
+ ....
+ uintGlobalTransparencyParentFadeFactor=10
+ boolObtainGlobalBackgroundFromKde=false
+ pixmapLabelBackground=
+ msgtypeMotd=30,1,100,1,1
+ fontIrcView=helvetica,10,5,50
+ colorIrcToolBarAppletForegroundLowContrast=180,180,180
+ boolUseGuiEffectFadeMenu=false
+ pixmapGlobalTransparencyBackground=pixmapGlobalTransparencyBackground.png
+ pixmapTreeTaskBarBackground=
+ iccolor2=0,0,200
+ mirccolor13=200,0,200
+ ....
+
+You can *carefully* edit it by hand, if you wish.
+Each option starts with a prefix that defines the "type" of that option.
+
+pixmap defines an image and thus should contain an image path (see below)
+color defines an user interface color and is an R,G,B triplet
+font defines an user interface font: you usually need to change only the
+ first two values: font family and size
+msgtype defines the icon, text color, background color, log level and
+ alert level of the messages
+uint is an unsigned integer value
+bool is a boolean value: true or false
+mirccolor defines the colors used by the CTRL+K escape and is an
+ R,G,B triplet like color.
+iccolor defines the default color of an irc context and is again an
+ R,G,B triplet.
+
+Hints:
+ - When changing the pixmap entries remember to use filenames
+ without path. KVIrc will lookup the filenames in the directory
+ of your the me.
+
+ - The options stringIconThemeSubdir reflects the name of the
+ directory in which the theme images are stored.
+ If you change the directory name, you must also change this option.
+
+The theme directory contains also a set of *.png files.
+KVIrc will load these files instead of the default ones shipped in the
+distribution. You can modify/replace them, but keep in mind the
+following simple rules:
+ - you can't modify the image size: if you do it,
+ the images will look bad
+ - the image format must be *.png: it is the only
+ format granted to be loaded by all the versions of KVIrc.
+
+If you don't want to "override" an image (and thus you want to leave
+the "default" one) you can delete it from the theme directory. KVIrc will
+fallback to the default image shipped in the distribution.
+
+If you look at the global kvirc installation directory (usually
+/usr/local/share/kvirc/version/pics/) you will notice that there are other
+images that KVIrc loads. You can override each image by placing your version
+with the same name in your theme directory.
+
+Hints:
+ - All the small icons have a meaning and a name:
+ you should reflect it when painting.
+ This small script will show you the associations between
+ the icons and their names:
+
+ %i = 0
+ do {
+ %name = $iconname(%i)
+ echo The icon by id %i is named %name
+ %i++
+ } while(%name != "")
+
+ - The id's of the icons are just their ZERO_BASED indexes.
+ The kvi_smallicon_<number>.png files are numbered in increasing
+ order and contain 16 images each one. kvi_smallicon_00.png
+ contains images from 0 to 15, kvi_smallicon_01.png contains images
+ 16 to 31 etc... Thus the third icon in kvi_smallicon_02.png
+ has id (2*16)+(3)-1 = 34.
+
+
+
+
+What happens when an user installs a theme
+-----------------------------------------------------------------------------
+
+When an user attempts to install a theme from the options dialog,
+KVIrc reads the themedata.kvc file and applies all the visual settings.
+This is an one-time action: the settings are applied only once from the
+themedata.kvc file and then are saved to the user's configuration files.
+In this way the user can alter the theme by freely changing the individual
+settings. One of the applied options is stringIconThemeSubdir that contains
+the directory of the theme images. KVIrc uses this option to lookup the
+image files before looking at any other directory. If the image file is found
+there, it is loaded and used, otherwise KVIrc falls back to the images
+shipped in the distribution.
+
+
+Have fun :)
+
+Szymon Stefanek
+
diff --git a/doc/translations.howto.txt b/doc/translations.howto.txt
new file mode 100644
index 00000000..52cb5c28
--- /dev/null
+++ b/doc/translations.howto.txt
@@ -0,0 +1,134 @@
+This mini-howto describes the procedure for translating KVIrc in a new language.-----------------------------------------------------------------------------------
+
+Step 0: Getting the right sources.
+
+ First of all you need the SVN version of kvirc.
+ To obtain the SVN version you can follow the instructions on
+ http://www.kvirc.net/?id=svn
+
+ The translation stuff is in kvirc/po/kvirc .
+
+
+
+
+Step 1: Finding out your language code
+
+You must find out the contents of your language code.
+Usually this is a string formed of at least two letters and it
+can be found by examining the contents of your $LANG shell variable
+or by looking at http://translation.sourceforge.net/HTML/teams.html
+Examples of such codes are "it", "en", "hu" or "pt_BR"
+
+
+
+Step 2: Generating the list of messages to translate
+
+You must perform this step only if it is the first time that KVIrc is translated
+to your language. If you're going to update an existing translation then
+you can jump directly to step 3.
+
+Run the command to extract the messages from the sources.
+
+# cd kvirc/po/kvirc
+# make messages-extract
+
+A file named kvirc.pot will be created
+You rename this file to kvirc_xxx.po where xxx is your language code
+found in step 1.
+
+# mv kvirc.pot kvirc_xxx.po
+
+
+
+Step 3: Translating the messages
+
+If you did the step 2 then you have just created the kvirc_xxx.po
+file where xxx stands for your language code (found in step 1).
+If you jumped directly here from 1 then you need to find and existing
+kvirc_xxx.po in the kvirc/po/kvirc directory.
+If there isn't one then go back to step 2.
+
+Just use a translation tool for translation (for example kbabel or poedit).
+
+
+The next part of this step is only for information:
+The kvirc_xxx.po file contains a set of strings like the following one:
+
+#: /path/to/the/file/which/contains/the/string: line number
+msgid "The original english message"
+msgstr "The translation goes here"
+
+The msgid is the original message that needs to be translated
+and msgstr is the translation (that will be initially empty, when
+the kvirc_xxx.po file is created).
+
+The msgid can contain html tags, escapes like "\n" and format specifications
+like "%s". You MUST match the tags, escapes and format specs in the msgstr
+strings. Keep special attention to the format specifications (%s, %W,
+%Q...)..
+They must remain in EXACTLY the same order as in the msgid: exchanging the
+order or writing a wrong format spec will make kvirc crash sooner or later.
+
+
+
+Step 4: Adding the translation to the Makefile.am
+
+Once you have translated some strings you can try to run the translation in
+kvirc. If you are updating an existing translation then you can jump
+directly to step 5.
+
+You must force the make process to pick up your translation
+file and compile it. This is again an one time step.
+In kvirc/src/kvirc there is a file named Makefile.am
+You should edit it and add kvirc_xxx.po where the other *.po files are
+mentioned. You should have no problems in guessing what needs to be added
+by looking at the other *.po entries in that file.
+Then you just run ./autogen.sh , ./configure and you build kvirc as usual.
+After it has finished building you run kvirc after making sure that your LANG
+variable is set correctly.
+
+
+
+Step 5: Trying the translation
+
+Run make and wait until it finishes.
+
+# export LANG="xxx"
+# kvirc
+
+KVirc should then pick up your translation file and use it.
+
+
+Step 6: Updating the translation when the sources change
+
+While the development goes on new messages are added to the sources
+and a small part of the existing messages change.
+When you do a svn update to obtain the latest sources you should
+cd to kvirc/po/kvirc and run:
+
+# make messages-update
+
+This procedure will update your kvirc_xxx.po file with the new messages
+and mark the old messages as either fuzzy or invalid.
+The invalid entries must be re-translated completely again while the
+fuzzy entries have minor changes and can be probably adjusted in few seconds.
+
+
+Misc:
+
+
+If you're in doubt about some translation, you should take a look at how
+similar sentences have been translated in the KDE *.po files: there should
+be a hungarian translation file for KDE available on the KDE svn.
+
+Since many of the modules have their own translation files then
+the procedure above may (but not must) be repeated for the po/modules/*/
+subdirectories.
+
+When you're satisfied with your translation you may send your *.po files to
+pragma at kvirc dot net asking for inclusion in the svn. If you want
+to mantain the translation then you may also ask for a writeable svn account.
+
+
+Happy translating :)
+Szymon Stefanek
diff --git a/doc/ui-style.tips.txt b/doc/ui-style.tips.txt
new file mode 100644
index 00000000..b2162fc2
--- /dev/null
+++ b/doc/ui-style.tips.txt
@@ -0,0 +1,40 @@
+************************
+*** KVIrc Style Tips ***
+************************
+
+[Dialog Windows]
+- Title should be like "Choose a Script File", not "Choose a script file".
+- For any non-modal dialogs (config ones, etc.), the name should have " - KVIrc"
+ at the end. This also applies to wizards and file selection dialogs.
+
+[Menubars]
+- Menus have specific locations in menubars, see KDE style guide.
+
+[Menus]
+- Menu item text be like "An Item", not "An item"
+- Common items are:
+ "Cu&t" "&Copy" "&Paste" "Clear" "&Open..." "&Save As..."
+- Items that open a dialog or otherwise require confirmation or additional
+ information should have "..." immediately following their text (no spaces).
+
+[Selector Widgets]
+- bool selector labels should be like "Enable debug output"
+- string/file path/integer selectors should have labels with a colon ":" at the end, e.g. "Comment:"
+- QGroupBox text should be like "Use Filtering For".
+- Config selector tooltips should have "<center></center>", and end each
+ sentence with a fullstop (period). There should be few <br> except for
+ separating sections.
+
+[Buttons]
+- Button text should be like "A Button", not "A button".
+- Common labels are:
+ "&OK" "&Apply" "Cancel" "&New" "&Add..." "Re&move" "&Close" "&Browse..."
+- Button QToolTips should be a description of its function, and
+ending with a fullstop (period):
+ "Accept all changes, and close this dialog."
+ "Kill the current user." ("Kill", not "Kills")
+- OR if the button has no text, the tooltip should be the *label text*.
+- Buttons are best in a QHBox.
+- Try to keep names short.
+
+* For further reference, see the KDE Style Guide (google for it).
diff --git a/doc/win32.compiling.1.2.txt b/doc/win32.compiling.1.2.txt
new file mode 100644
index 00000000..bb396a33
--- /dev/null
+++ b/doc/win32.compiling.1.2.txt
@@ -0,0 +1,269 @@
+Win32 KVIrc compiling 1.2
+a tutorial by <Grifisx>
+updated by <LoSko> on 2007/01/18
+
+english translation by <etherea`>
+
+Index
+
+@ Prologue
+@ Ingredients
+@ Providing ingredients
+@ Setting up the ambiency
+@ Setting ambiency variables
+@ Compiling
+@ Creating ambiency for setup
+@ Creating setup
+
+@ Prologue
+
+This is meant to be a simple guide to KVIrc compiling under Windows ambiency, so
+that everyone who's willing to try to compile the latest version of this cross platform
+client can easily do without the need for the latest snapshot/development to be
+released.
+
+@ Ingredients
+
+1) CVS version of KVIrc
+2) Visual C++ 2005 Express
+3) SDK package from Microsoft
+4) Perl.
+5) gettext for Windows
+6) Innosetup or NSIS
+7) Non Commercial QT 3.2.1
+8) OpenSSL
+9) zlib for Win32
+
+@ Providing ingredients
+
+So, let's see where to find the necessary ingredients to bake up our freshy KVIrc.
+
+-1) CVS version of KVIrc
+
+To get this out you will need a CVS client for Windows, then type the following
+command:
+
+cvs -z3 -d:pserver:[email protected]:/cvs co kvirccvs
+
+
+And just in case you can find instructions here:
+Link: http://www.kvirc.net/?id=cvs
+A suggestion for a tiny and free CVS is Tortoise CVS.
+Link: http://www.tortoisecvs.org/
+
+-2) Visual C++ 2005 Express
+
+This compiler is free (at least for the moment), you will only need to register in order to
+get it and use it for free, use it!
+Link: http://msdn.microsoft.com/vstudio/express/visualc/
+
+-3) SDK package from Microsoft
+
+This one too is for free, then download and install it!
+Link: http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3A93E-40C0EC4F68E5&displaylang=en
+
+-4) Perl
+Perl is needed to create documentation and make perl module works, you can
+download it from here:
+Link: http://www.activestate.com/Products/ActivePerl/?
+
+-5) gettext for Windows
+Download and install it, it's needed to create languages localization files:
+Link: http://sourceforge.net/projects/gettext
+Note: be sure to install gettext in this directory C:\Program Files\GnuWin32 so that all the
+executables are located in C:\Program Files\GnuWin32\bin otherwise you'll be forced to
+change something in the file needed to create the setup ambiency.
+
+-6) Innosetup
+
+Another free program, required to create the final setup.
+Link: http://www.jrsoftware.org/isinfo.php
+If you are using NSIS you can have your copy here:
+Link: http://nsis.sourceforge.net/Download
+
+-7) Non Commercial QT 3.2.1
+
+That's probably the most difficult thing to acquire; you can try find a book on QT that
+has it enclosed (the non commercial one) or you'll have to figure out how to find it out.
+You can buy a commercial version too, 3.x.x higher than 3.2.1.
+
+Book: C++ GUI Programming with QT 3
+Link: http://www.amazon.com/gp/product/0131240722/102-11831924381702?v=glance&n=283155
+If you are pretty acknowledged with compiling you can try these instructions:
+Link: http://qtwin.sourceforge.net/qt3-win32/compile-msvc-2005.php
+Even if this last choice's a bit nasty to make out working =)
+You still can find some precompiled version of this free stand (found on the same site of
+qtwin even if a bit older) but beware: choosing this last chance will make KVIrc XP
+themes not supported.
+By using a different version of QT you'll need to modify every KVIrc project adapting
+the qt.xxxx.dll and headers and libraries paths.
+For example, assuming you have installed commercial QT 3.3.4 you'll have to modify
+the projects this way:
+a) selecting Properties of each project then ->Linker and ->Input
+b) store the right library in the qt-mtnc321.lib matching the installed version
+requirements, ie qt-3.3.4.lib. To know the exact name of your .lib file to be linked just go
+to the directory where you did installed QT, in the subfolder /lib (like C:\Qt\3.3.4\lib)
+
+-8) OpenSSL
+That is needed in order to compile SSL support for KVIrc, you can have libraries and
+everything else from here:
+Link: http://www.slproweb.com/products/Win32OpenSSL.html
+
+-9) zlib for win32
+
+To give KVIrc the ability to save log files in compressed format that's what you need.
+Link: http://gnuwin32.sourceforge.net/packages/zlib.htm
+
+That's the main page, but you will need the developers files:
+Link: http://gnuwin32.sourceforge.net/downloadlinks/zlib-lib-zip.php
+Extract them in any folder you may like, my own suggestion is folder C:\lib for your
+convenience; directory tree will be as follows:
+
+C:(dir)
+|__zlib(dir)
+|__include(dir)
+| |__zconf.h
+| |__zlib.h
+|__lib(dir)
+|__zlib.lib
+|__zlib.exp
+
+Remember where did you have this folder extract because you will have to setup paths
+of the include files (the .h files) and of the libraries (the .lib files) in ambiency variables
+of your operating system.
+
+@ Setting up the ambiency
+
+Install in the following order (theoretically it is not necessary a given order but this
+�recipe� is fully oriented to non expert users):
+1-Visual C++ 2005 Express
+2-SDK ; once you have installed it take the folders Lib, Include and Bin (you will find
+them all in the SDK given path � generally in folder C:\Program Files\Microsoft Platform
+SDK) and copy them in the folder \SDK\v2.0 that is under the installation path of Visual
+C++ (generally in C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0).
+Attention: when copying these files you'll be prompted to overwrite one or more files;
+just answer NO.
+3-QT 3.x.x ; during the installation you'll be prompted to record ambiency variables:
+answer YES.
+4-OpenSSL ; during the installation you'll be prompted to record ambiency variables:
+answer YES.
+5-Perl ; during the installation you'll be prompted to record ambiency variables:
+answer YES.
+6-gettext
+7-Innosetup or NSIS or both =) (Freedom is the power to choose ;))
+8-zlib ; if you did download the install&compile package; otherwise just unpack
+and/or extract the ready-to-use pakage wherever you may like (generally in folder C:\).
+
+@ Setting ambiency variables
+
+Now we need to set up every variable of this ambiency, needed in order the compiler
+will be able to find every library from which KVIrc depends.
+Right-button on Resources then Properties -> Advanced -> Ambient Variables and this will
+engage all QT system variables (QTDIR) set; if that doesn't match you will need to
+reinstall QT and remember to answer YES once you're prompted for setting all ambiency
+variables, otherwise you will need to set them manually � that parts from this tutorial.
+
+In the section dedicated to variables of the actual user add (if you don't have it yet) the
+following and then give the right paths that are on your own machine (hereby are my
+own paths):
+
+Variable:
+
+PERLDIR
+Value:
+C:\perl
+Meaning:
+Directory that stores Perl
+
+Variable:
+ZLIBLIBDIR
+Value:
+C:\zlib\lib
+Meaning:
+Directory that stores file .lib of zlib installed library, the file name must be zlib.lib
+
+Variable:
+OPENSSL
+Value:
+C:\OpenSLL
+Meaning:
+Installation folder of OpenSSL
+
+Variable:
+SSLINCDIR
+Value:
+C:\OpenSSL\include
+Meaning:
+Directory that stores OpenSSL .h files
+
+Variable:
+SSLLIBDIR
+Value:
+C:\OpenSSL\lib\VC
+Meaning:
+OpenSSL .lib files storage
+
+Variable:
+MSGFMT
+Value:
+C:\Program Files\GnuWin32\bin\msgfmt.exe
+Meaning:
+msgfmt executable path
+
+After you've added all the variables with their own values you need to reboot.
+
+@ Compiling
+
+Go to folder kvirccvs\kvirc and open the file kvirc_vc05.sln then -for the less
+experienced-select Build -> Configure Manager -> Release and run the compiling with
+Build ->Build Solution.
+You'll need to wait a little before the building ends, mostly that's up to your processor
+(on a P3 800MHz it takes about 40/45 minutes, on a P4 3000 just 10/15 minutes).
+Now.. pray everything is going to get the right place and no unexpected to happen; but
+in case you do have troubles here are 3 different solutions:
+
+a) read this tutorial once more, hoping you missed some points;
+b) try to find out where the problem is;
+c) step to Azzurranet on channel #kvirc.net and ask for Grifisx or Noldor or Pragma.
+
+@ Creating ambiency for setup
+
+If you're reading this, thank God, your patience and your mother (yes, yet she didn't
+managed to kill you death nevertheless you spent 28 hours a day reading lines on a
+monitor) you're almost done!
+The latest 2 steps are quite easy.
+Go to folder kvirccvs\kvirc\win32build and run makedist.vbs file.
+Then run the process, on which end you'll get a folder named pakage; be sure inside
+there are kvirc.exe, kvilib.dll, the folder with every KVIrc module and the following dlls:
+
+ssleay32.dll
+libeay32.dll
+qt-mtnc3321.dll
+perl58.dll
+zlib1.dll
+idleui.dll
+msvcr80.dll
+
+
+If you see something missing just run up a search onto your system and copy them into
+the pakage directory.
+Check even the file Microsoft.VC80.CRT.manifest is placed both in root folder and sub folder
+modules, otherwise copy it into them (files are stored into kvirccvs\kvirc\data\manifests ;
+in this last case you will only need to rename the given file
+Microsoft.VC80.CRT.modules.manifest into Microsoft.VC80.CRT.manifest before you put it in
+the modules folder).
+
+@ Creating setup
+
+Easypeasy!
+After installation of Innosetup launch file KVIrc.iss that houses in folder
+kvirccvs\kvirc\win32build and run the script so that at the end of the process you'll find
+a freshy hot setup.exe in folder kvirccvs\kvirc\win32build\package\setup.
+If you did chose NSIS: right click on the KVIrc.nsi installation script that is found in
+folder kvirccvs\kvirc\win32build and run Compile NSIS Script.
+This way you'll have a KVIrc.VERSION-dev-DATE.exe in your actual directory!
+Run.
+If everything went ok then.. EnjoY! =D
+
+Tonino Imbesi
+<Grifisx>
diff --git a/po/Makefile.am b/po/Makefile.am
new file mode 100644
index 00000000..4415d256
--- /dev/null
+++ b/po/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = kvirc modules
diff --git a/po/kvirc/Makefile.am b/po/kvirc/Makefile.am
new file mode 100644
index 00000000..4ee626ad
--- /dev/null
+++ b/po/kvirc/Makefile.am
@@ -0,0 +1,83 @@
+###############################################################################
+# KVirc IRC client Makefile - 18.09.99 Szymon Stefanek <[email protected]>
+###############################################################################
+
+tmpdir = $(localedir)
+
+tmp_DATA = kvirc_bg.mo \
+ kvirc_ca.mo \
+ kvirc_cs.mo \
+ kvirc_de.mo \
+ kvirc_es.mo \
+ kvirc_fr.mo \
+ kvirc_hu.mo \
+ kvirc_it.mo \
+ kvirc_nl.mo \
+ kvirc_pl.mo \
+ kvirc_pt.mo \
+ kvirc_pt_BR.mo \
+ kvirc_ru.mo \
+ kvirc_sr.mo \
+ kvirc_hu.mo \
+ kvirc_hr.mo \
+ kvirc_fi.mo \
+ kvirc_uk.mo
+
+CLEANFILES = $(tmp_DATA)
+
+POFILES = kvirc_bg.po \
+ kvirc_ca.po \
+ kvirc_cs.po \
+ kvirc_de.po \
+ kvirc_es.po \
+ kvirc_fr.po \
+ kvirc_hu.po \
+ kvirc_it.po \
+ kvirc_nl.po \
+ kvirc_pl.po \
+ kvirc_pt.po \
+ kvirc_pt_BR.po \
+ kvirc_ru.po \
+ kvirc_sr.po \
+ kvirc_hu.po \
+ kvirc_hr.po \
+ kvirc_fi.po \
+ kvirc_uk.po
+
+EXTRA_DIST=$(POFILES)
+
+# Killed the fuzzy entries: don't use them , they may SEGV
+# - touch $@ && $(SS_MSGFMT) -fvo $@ $<
+
+%.mo: %.po
+ -touch $@ && $(SS_MSGFMT) -vo $@ $<
+
+###############################################################################
+# Messages
+###############################################################################
+
+messages-extract:
+ @find $(topdir)/src/ -maxdepth 10 -name *.cpp > files
+ find $(topdir)/src/ -maxdepth 10 -name *.h >> files
+ find $(topdir)/data/defscript/ -maxdepth 10 -name *.kvs >> files
+ xgettext -o $(topdir)/po/kvirc/kvirc.pot -k__tr -k__tr_no_lookup -k__tr2qs -k__tr2wc -k__tr2ws -ktr -f files
+ rm files; \
+ echo "Messages extracted to kvirc.pot";
+
+
+messages-update:
+ @old=_old; \
+ if test -f "$(topdir)/po/kvirc/kvirc.pot"; then \
+ for lang in $(POFILES); do \
+ echo "Updating file $$lang"; \
+ mv -f $$lang $$lang$$old; \
+ msgmerge -o $$lang $$lang$$old $(topdir)/po/kvirc/kvirc.pot && rm -f $$lang$$old; \
+ done; \
+ else \
+ echo "----------------------------------------------------"; \
+ echo "- WARNING: ./kvirc.pot does not exist"; \
+ echo "- WARNING: You must run make messages-extract first"; \
+ echo "----------------------------------------------------"; \
+ fi
+
+messages: messages-extract messages-update
diff --git a/po/kvirc/kvirc_bg.po b/po/kvirc/kvirc_bg.po
new file mode 100644
index 00000000..bb8f8230
--- /dev/null
+++ b/po/kvirc/kvirc_bg.po
@@ -0,0 +1,12195 @@
+# translation of bg.po to Bulgarian
+# translation of kvirc.po to Bulgarian
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Атанас Мавров <[email protected]>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: bg\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2004-06-01 21:36+0300\n"
+"Last-Translator: Атанас Мавров <[email protected]>\n"
+"Language-Team: Bulgarian <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:696
+msgid "&Cascade Windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:697
+msgid "Cascade &Maximized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:700
+msgid "&Tile Windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:703
+msgid "&Auto Tile"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:708
+msgid "Anodine's Full Grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:710
+msgid "Pragma's Horizontal 4-Grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:712
+msgid "Pragma's Vertical 4-Grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:714
+msgid "Pragma's Horizontal 6-Grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:716
+msgid "Pragma's Vertical 6-Grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:718
+msgid "Pragma's Horizontal 9-Grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:720
+msgid "Pragma's Vertical 9-Grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:726
+msgid "Tile Met&hod"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:729
+msgid "Expand &Vertically"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:730
+msgid "Expand &Horizontally"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:733
+msgid "Mi&nimize All"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_actiondrawer.cpp:64
+msgid "Script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:581
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:634
+msgid "Unknown"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:128
+msgid "No topic message has been received from the server yet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:495
+msgid "Channel topic:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:513
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:201
+msgid "Set by"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:519
+msgid "Set on"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:525
+msgid "Double-click to edit..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:530
+msgid "No topic is set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:533
+msgid "Double-click to set..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:587
+#, fuzzy
+msgid "History"
+msgstr "Директория"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:596
+msgid "Commit Changes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:602
+msgid "Discard Changes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:627
+msgid "Copy to clipboard"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:988
+msgid "There are active connections, are you sure you wish to "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:989
+msgid "quit KVIrc?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:587
+msgid "Confirmation - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:557
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:590
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&Yes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:556
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:589
+msgid "&Always"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:591
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&No"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1090
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1106
+msgid "Show %1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1134
+msgid "Customize..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:149
+#, c-format
+msgid "The file %s already exists.<br>Do you wish to overwrite it?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:150
+msgid "File Exists - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:132
+msgid "Channel mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:162
+msgid "Split View"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:207
+msgid "User List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:167
+msgid "Ban Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:172
+msgid "Ban Exception Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:179
+msgid "Invite Exception Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:184
+msgid "Mode Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "said something recently"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "is talking"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:684
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:699
+msgid "and"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "were talking recently"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "are talking"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:707
+msgid "and other %1 users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:738
+msgid "Dead channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:753
+msgid "operator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:754
+msgid "operators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owner"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owners"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "user total"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "users total"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:931
+msgid "No activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:932
+msgid "Minimal activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:933
+msgid "Very low activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Might be low activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Low activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Might be medium activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Medium activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "Might be high activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "High activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Might be very high activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Very high activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Might be flooded with messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Flooded with messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:946
+msgid "human"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:966
+msgid "[Dead channel]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1020
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1122
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:459
+msgid " on "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1086
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %Q, no "
+"data sent to the server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1403
+msgid "Sent part request, waiting for reply..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:610
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:647
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:293
+msgid "(Unknown)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1484
+msgid "<b>Channel mode:</b>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1498
+#, c-format
+msgid "<br><b>Key:</b> %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1505
+#, c-format
+msgid "<br><b>Limit:</b> %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1590
+#, c-format
+msgid "Channel synchronized in %d.%d seconds"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:139
+msgid "Choose an Image File - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:284
+#, c-format
+msgid "Unloadable: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:260
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:90
+msgid "&Browse..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:364
+msgid "Choose a File - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:382
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:593
+msgid "Choose a Directory - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:764
+msgid "A&dd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:407
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:766
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:230
+msgid "Re&move"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:602
+msgid "Sample Text"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:635
+msgid "Foreground"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:639
+msgid "Transparent"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:652
+msgid "Background"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:715
+msgid "Play"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:748
+#, fuzzy
+msgid "Channel name"
+msgstr "Неизвестен оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:749
+#, fuzzy
+msgid "Channel password"
+msgstr "Неизвестен оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:177
+msgid "Toolbars"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:84
+msgid "Orientation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:86
+msgid "Top"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:87
+msgid "Left"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:88
+msgid "Right"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:89
+msgid "Bottom"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:91
+msgid "Detached"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:92
+msgid "Flat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:94
+msgid "Icon Size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:96
+msgid "Small (22x22)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:97
+msgid "Large (32x32)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1333
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:463
+msgid "&Apply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:830
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:113
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:251
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:319
+msgid "Close"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:102
+msgid "Channel Modes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_debugwindow.cpp:47
+msgid "Debug Messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:72
+msgid "CTCP Page - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:109
+msgid "You have been paged by"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:75
+msgid "Mask editor - KVirc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:79
+msgid "New mask must match an *!*@* expression"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Ok"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:488
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:442
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:401
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Cancel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:157
+msgid "Active Bans"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:161
+msgid "Active Invite Exceptions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:165
+msgid "Active Ban Exceptions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:184
+msgid "Filter:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:188
+msgid "Use doubleclick to edit item"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:200
+msgid "Mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:202
+msgid "Set at"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "Add"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:92
+msgid "Cryptography/text transformation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:99
+msgid "Use the crypt engine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:120
+msgid "Enable encryption"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:123
+msgid "Encrypt key:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:141
+msgid "Hex"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:132
+msgid "Enable decryption"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:135
+msgid "Decrypt key:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_htmldialog.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:175
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:932
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1124
+msgid "OK"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:211
+msgid ""
+"If you dont want to encrypt a particular text line then just start it with "
+"the CTRL+P prefix"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:263
+msgid "Sorry, no crypt engines available"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:283
+msgid "Crypt: Can't create an engine instance: crypting disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:294
+#, c-format
+msgid "Crypt: Can't initialize the engine :%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:302
+msgid ""
+"Crypt: You have to enable encryption and/or decryption for the engine to work"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:385
+msgid "Search tools"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:539
+#, c-format
+msgid "### Log session terminated at %s ###"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:713
+#, c-format
+msgid "### Log session started at %s ###"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:717
+msgid "### Existing data buffer:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:721
+msgid "### End of existing data buffer."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3894
+msgid "Hide Find Window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3896
+msgid "Show Find Window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3898
+msgid "Zoom In"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3899
+msgid "Zoom Out"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3900
+msgid "Choose Temporary Font..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3901
+msgid "Choose Temporary Background..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3902
+msgid "Reset Temporary Background"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3905
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:738
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:841
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1057
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1289
+msgid "Clear Buffer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3939
+msgid "Choose the background image..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+#, fuzzy
+msgid "Invalid image"
+msgstr "Неправилен параметър"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+#, fuzzy
+msgid "Failed to load the selected image"
+msgstr "Създаването на сокет пропадна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4083
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4140
+#, c-format
+msgid "Pos %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4156
+msgid "Not found"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4563
+msgid "Looking up host %Q..."
+msgstr "Търсене на хост %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4926
+msgid "Double-click to open this link"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4946
+msgid "Unable to look it up hostname: Hostname appears to be masked"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4947
+msgid "Unable to look it up hostname: Unknown host"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4949
+msgid ""
+"Double-click to look up this hostname<br>Right-click to view other options"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4972
+msgid "Server appears to be a network hub<br>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4973
+msgid "Unknown server<br>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4976
+msgid "Double-click to read the MOTD<br>Right-click to view other options"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4989
+msgid "Double-click to set<br>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5011
+msgid "You're not an operator: You may not change channel modes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5028
+msgid "Nothing known about %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5029
+msgid "Nothing known about %Q (no connection)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5054
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>): "
+"<br><nowrap>+%Q (%u users)<hr>%Q</nowrap>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5060
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)<hr>Double-"
+"click to join %Q<br>Right click to view other options"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5080
+msgid "<b>Double-click:</b><br>%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5085
+msgid "<b>Middle-click:</b><br>%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5090
+msgid "<b>Right-click:</b><br>%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1284
+msgid "Joined on <b>%1</b>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1296
+msgid "Quiet for <b>%1h %2m %3s</b>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1097
+msgid "No connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:304
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:3
+msgid "IRC Context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:319
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:365
+#, c-format
+msgid "Lag: %d.%d%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:393
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:379
+msgid "Lag: ?.??"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:326
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:637
+msgid "No IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:633
+msgid "Not connected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:377
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1117
+msgid "away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:397
+msgid "In progress..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:458
+msgid "Crypting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:466
+msgid "Private Text Encoding"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:566
+msgid "Ops...I've accidentally lost the crypting engine..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:582
+msgid "List of window types available in this release of KVIrc:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:763
+msgid "Use Default Encoding"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:775
+msgid "Standard"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:776
+msgid "Smart (Send Local)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:777
+msgid "Smart (Send UTF-8)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:810
+msgid "&Undock"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:813
+msgid "&Dock"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:818
+msgid "Mi&nimize"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:821
+msgid "Ma&ximize"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:824
+msgid "&Restore"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:837
+msgid "Text &Encoding"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:842
+msgid "Sa&ve Window Properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:86
+msgid "Taskbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:91
+msgid "taskbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1162
+msgid "Sort"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1163
+msgid "Reverse Sort"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1223
+msgid "Window List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:203
+msgid "Apply to all IRC Contexts"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:227
+msgid "Away Indicator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:255
+msgid "Away since"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:259
+msgid "Double click to leave away mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:261
+msgid "Not away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:263
+msgid "Double click to enter away mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:330
+#, c-format
+msgid "Last checked %d mins %d secs ago"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:332
+#, fuzzy
+msgid "Lag measure not available yet"
+msgstr "Възможността не е на разположение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:336
+msgid "Lag meter engine disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:338
+msgid "Double click to enable it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:391
+msgid "Lag Indicator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:461
+msgid "Simple Clock"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:512
+#, fuzzy
+msgid "Show total connection time"
+msgstr "Изтичане на време за връзка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:536
+#, fuzzy
+msgid "Connection Timer"
+msgstr "Изтичане на време за връзка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:560
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:87
+msgid "Separator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:820
+msgid "Clipboard"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line break"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line breaks"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:845
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:439
+msgid "Cu&t"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:847
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:445
+msgid "&Copy"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:849
+msgid "&Paste"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:851
+msgid "Paste (Slowly)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:856
+msgid "Paste &File"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:863
+msgid "Stop Paste"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:865
+msgid "Clear"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:868
+msgid "Select All"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:897
+msgid "Insert Icon"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1926
+msgid "%d matches: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1930
+msgid "No matches"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2657
+msgid "Show History<br>&lt;Ctrl+PageUp&gt;"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2648
+msgid "Input History Disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2370
+msgid "Show Icons Popup<br>&lt;Ctrl+I&gt;<br>See also /help texticons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2382
+msgid "User friendly commandline mode<br>See also /help commandline"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2394
+msgid "Multi-line Editor<br>&lt;Alt+Backspace&gt;"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2498
+msgid "Confirm Multiline Message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2499
+msgid ""
+"You're about to send a message with %1 lines of text.<br><br>There is "
+"nothing wrong with it, this warning is<br>here to prevent you from "
+"accidentally sending<br>a really large message just because you didn't edit "
+"it<br>properly after pasting text from the clipboard.<br><br>Do you want the "
+"message to be sent?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2505
+msgid "Yes, always"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2506
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:399
+msgid "Yes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:806
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:375
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:400
+msgid "No"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2556
+msgid "<Ctrl+Return>; submits, <Alt+Backspace>; hides this editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:126
+msgid "Address:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:140
+msgid "Current IRC URI"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:156
+msgid "Notify List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:263
+msgid "Part All Channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:265
+msgid "Close All Queries"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:270
+msgid "Unhighlight All Windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:273
+msgid "Unhighlight All Channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:275
+msgid "Unhighlight All Queries"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:387
+msgid "Gender:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:394
+msgid "Male"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:393
+msgid "Female"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:375
+msgid "Registered as"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:381
+msgid "(Matched by"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:393
+msgid "On <b>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:402
+msgid "Using server <b>%1</b>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:407
+msgid "%1 hops"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:417
+msgid "Probably Away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:493
+msgid ""
+"KVIrc can accept only irc://, irc6://, ircs:// or irc6s:// URL's\n"
+"Your URL is invalid. Check spelling and try again"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:554
+msgid ""
+"You have just attempted to close a console window with an active connection "
+"inside.\n"
+"Are you sure you wish to terminate the connection?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:588
+msgid ""
+"You have just attempted to close the last console window.\n"
+"Are you sure you wish to quit KVIrc?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1019
+msgid "Failed to load avatar with name \"%Q\" and local path \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:624
+msgid "Connection in progress..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1099
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:630
+msgid "Login in progress..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1179
+msgid "channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1180
+msgid "channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1181
+msgid "query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1182
+msgid "queries"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1238
+msgid "Connected since"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1252
+msgid "Online for"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1264
+msgid "Server idle for"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:50
+msgid "This option is also available as"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:683
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:275
+msgid "Advanced..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:69
+msgid "Scri&pting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:74
+msgid "&Tools"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:81
+msgid "&Settings"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:83
+msgid "&Window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:125
+msgid "&Help"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:119
+msgid "&Help Browser (Panel)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:121
+msgid "Help Browser (&Window)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:124
+msgid "&Tip of the Day"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:127
+msgid "About &KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:130
+msgid "KVIrc Home&page"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:134
+msgid "KVIrc Russian Home&page"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:139
+msgid "KVIrc French Home&page"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:143
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:339
+msgid "Subscribe to the Mailing List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:145
+msgid "Report a Bug / Propose Improvements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:148
+msgid "Join KVIrc International Channel on Freenode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:150
+msgid "Join KVIrc International Channel on IRCNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:155
+msgid "Join KVIrc Italian Channel on AzzurraNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:161
+msgid "Join KVIrc French Channel on Freenode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:164
+msgid "Join KVIrc French Channel on EuropNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:179
+msgid "Show StatusBar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:194
+msgid "&Save Configuration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:213
+msgid "Restore &Default Script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:630
+msgid "Disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:228
+msgid "New &Connection To"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:234
+msgid "Hide &Dock Icon"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:237
+msgid "Show &Dock Icon"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:111
+msgid "&Quit"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:265
+msgid "&Other..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:305
+msgid "Show &Icon Table"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:308
+msgid "Open &Terminal"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:308
+msgid ""
+"<b>Shift+Drag</b> or <b>Ctrl+Drag</b> to move the applet around<br><b>Right "
+"click</b> to see the other options"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:313
+msgid "<b>Right click</b> to add/remove applets"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:353
+msgid "Remove %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:365
+msgid "Add Applet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:404
+msgid ""
+"Drag the applet while holding the Shift or Ctrl key to move it to the "
+"desired position"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:93
+msgid "<b><font color=\"#EAEAEA\" size=\"-1\">Find Text</font></b>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:118
+msgid "&Regular expression"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:121
+msgid "E&xtended regexp."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:126
+msgid "C&ase sensitive"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:129
+msgid "Find &Prev."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:133
+msgid "&Find Next"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:880
+msgid "Find"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:214
+msgid "Type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:166
+msgid "Set &All"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:170
+msgid "Set &None"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:174
+msgid "&Load From..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:178
+msgid "&Save As..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:182
+msgid "Filter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:234
+msgid "Select a Filter File"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:251
+#, c-format
+msgid "Can't open the filter file %s for reading."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:261
+msgid "Select a Name for the Filter File"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:272
+#, fuzzy
+msgid "Failed to write the filter file %Q (IO Error)"
+msgstr "Създаването на сокет пропадна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:274
+#, fuzzy
+msgid "Can't open the filter file %Q for writing"
+msgstr "Не може да отвори файл \"%s\" за запис"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:109
+msgid "Choose image ..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:122
+msgid "Builtin images"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:131
+msgid "Small icons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:138
+msgid "Full path"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:241
+msgid "Builtin $icon(%Q) [index %d]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:274
+msgid "directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:300
+msgid "pixels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:305
+msgid "bytes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:98
+msgid "Show User List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:105
+msgid "Query Targets"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:165
+msgid "Query target:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:170
+msgid "%1 is %2 (%3)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:172
+msgid "%1 is %2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:186
+msgid "%1 is using irc server: %2 (%3 hops)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:188
+msgid "%1 is using irc server: %2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:195
+msgid "%1 is probably away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:200
+msgid "Common channels with %1: %2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:254
+msgid "[Dead Query]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:240
+msgid "Query with %1!%2 (%3)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:242
+msgid "Query with %1!%2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:244
+msgid ", using server %1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:246
+msgid " (%1 hops)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:248
+msgid ", probably away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:252
+msgid "Common channels: %2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:320
+msgid ""
+"The target of this query has changed from \r!n\r%Q\r [%Q@\r!h\r%Q\r] to \r!n"
+"\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:389
+msgid "Common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:392
+msgid "No common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:428
+msgid "[Dead query]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:578
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:645
+msgid "This query has no active targets, no message sent"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:617
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %s, no "
+"data sent to the server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashcount.cpp:74
+msgid ""
+"The argument of the hash count '#' operator didn't evaluate to a hash: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:100
+msgid "DNS Lookup result for query \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:105
+msgid "Error: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:110
+msgid "Hostname %d: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:116
+#, fuzzy
+msgid "IP address %d: %Q"
+msgstr "Неправилен IP адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:870
+msgid ""
+"Broken slot '%Q' in target object '%Q::%Q' while emitting signal '%Q' from "
+"object '%Q::%Q': disconnecting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:888
+msgid ""
+"Slot target object destroyed while emitting signal '%Q' from object '%Q::%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1040
+#, fuzzy
+msgid "Listing Qt properties for object named \"%Q\" of KVS class %Q"
+msgstr "Не може да определи исканият адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1046
+#, c-format
+msgid "Properties for Qt class %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1071
+msgid "Property: %c%Q%c, type %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1131
+#, c-format
+msgid "%d properties listed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1151
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1380
+msgid "The object named \"%Q\" of class %Q has no Qt properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1396
+msgid "No Qt property named \"%Q\" for object named \"%Q\" of class %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1409
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed but it doesn't really exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1417
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed and defined but the returned variant is not valid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1200
+#, c-format
+msgid ""
+"The property is of type %s but the supplied argument can't be converted to "
+"that type (expecting \"%s\")"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1331
+msgid ""
+"A pixmap object, an image_id or an image file path is required for this "
+"property"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1352
+#, fuzzy
+msgid "Can't find the requested image"
+msgstr "Не може да определи исканият адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1512
+msgid ""
+"Property \"%Q\" for object named \"%Q\" of class %Q has an unsupported data "
+"type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1659
+msgid "Cannot find object function $%Q for object named \"%Q\" of class %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1661
+msgid "Cannot find object function $%Q::%Q for object named \"%Q\" of class %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1669
+msgid ""
+"Cannot call internal object function $%Q (for object named \"%Q\" of class %"
+"Q) from this context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:69
+msgid "Stray dot ('.') character or invalid following module command name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:70
+msgid "Syntax error: malformed module command identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:188
+msgid "Stray '::' sequence or invalid following alias name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:95
+msgid "Syntax error: malformed alias identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:102
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:196
+msgid "Stray ':' character: did you mean '...<namespace>::<alias_name>' ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:103
+msgid "Syntax error: malformed (alias?) command identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:280
+msgid "Unknown callback command \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:465
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:44
+msgid "The current window is not a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:532
+msgid ""
+"Timer name omitted but there is not current timer (this is not a timer "
+"callback)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:538
+msgid "Can't kill the timer '%Q' since it is not running"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:626
+msgid "List of active timers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:637
+msgid "Persistent"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:640
+msgid "WindowLifetime"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:643
+msgid "SingleShot"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:652
+msgid "None"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:663
+#, c-format
+msgid "Total: %u timers running"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:849
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:872
+msgid "Found character '%q' (unicode %x) where a slash '/' was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:842
+msgid ""
+"Unexpected end of command in binding operation, at least two slashes are "
+"missing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:865
+msgid ""
+"Unexpected end of command in binding operation, at least one slash is missing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:905
+msgid "Unknown binding operation '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:926
+msgid "Missing right side operand for the binding operator '=~'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:948
+msgid "Trailing garbage ignored after operator '++'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:960
+msgid "Missing right operand for operator '+='"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:979
+msgid "Trailing garbage ignored after operator '--'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:986
+msgid ""
+"This looks a lot like an object handle dereferencing operator '->' but in "
+"fact it isn't. Maybe you forgot a '$' just after ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:994
+msgid "Missing right operand for operator '-='"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1015
+msgid "Missing right operand for operator '<<='"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1025
+msgid "Missing right operand for operator '<<'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1039
+msgid "Missing right operand for operator '<,'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1053
+msgid "Missing right operand for operator '<+'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1075
+msgid "Missing right operand for operator '>>='"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1094
+msgid "Missing right operand for operator '.='"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1113
+msgid "Missing right operand for operator '"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:72
+msgid "Unknown operator"
+msgstr "Неизвестен оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1178
+msgid "Unexpected (and senseless) read-only data evaluation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1180
+msgid "Syntax error: confused by earlier errors: bailing out"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1160
+msgid "Unexpected end of script after a variable reference: expected operator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1176
+msgid ""
+"Unexpected character '%q' (unicode %x) after a void function call: end of "
+"instruction expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1179
+msgid "Unexpected character '%q' (unicode %x)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:96
+msgid "/me can be used only in channels, queries and DCC chat windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:385
+#, fuzzy
+msgid "Invalid IRC url (%Q)"
+msgstr "Неправилен параметър"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:410
+msgid "The commandline for this url type seems to be broken (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:412
+msgid "No commandline specified for this type of url (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:512
+msgid "Option setting error: Unknown option or invalid value for option type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:606
+msgid "Choose a file to parse"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:639
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:643
+msgid "Failed to load the file '%Q' for parsing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:715
+msgid "Missing channel list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:753
+#, c-format
+msgid "You don't appear to be on channel %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:802
+msgid "Module command call failed: can't load the module 'snd'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:809
+msgid ""
+"Module command call failed: the module 'snd' doesn't export a command named "
+"'play'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:864
+msgid "Popup %Q is not defined"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:872
+msgid "A popup menu cannot be popped up twice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:897
+msgid "Invalid syntax for screen coordinates, using cursor position"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1011
+msgid "Empty target specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:97
+msgid "[RAW]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1237
+msgid "Window with id %Q not found: no rebinding performed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1330
+msgid "Failed to execute command '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:242
+msgid "Missing alias name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:253
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:889
+msgid ""
+"Alias names can contain only letters, digits, underscores and '::' namespace "
+"separators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:903
+msgid ""
+"Stray ':' character in alias name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:914
+msgid "Found an empty namespace in alias name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:277
+msgid "The alias %Q is not existing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:436
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:413
+msgid "The specified window has no button containers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:447
+msgid "Window button '%Q' not found"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:445
+#, fuzzy
+msgid "Can't find the icon '%Q'"
+msgstr "Не може да определи исканият адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:532
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:540
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1197
+#, fuzzy
+msgid "No such event (%Q)"
+msgstr "Няма такъв обект"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:552
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1222
+msgid "No handler '%Q' for raw numeric event '%d'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1248
+msgid "No handler '%Q' for event '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:936
+msgid "The specified ping time is invalid: assuming zero (no ping)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:946
+msgid "The specified maximum run time is invalid: assuming zero (infinite)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:965
+msgid "Failed to start the process"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1010
+msgid "The specified object does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1113
+msgid "Missing timer name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1122
+msgid "Missing timeout delay"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1129
+msgid "The timeout delay didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1152
+msgid "Unable to add the timer: insufficient system resources"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_eventmanager.cpp:503
+msgid "Event handler %Q is broken: disabling"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_moduleinterface.cpp:166
+msgid "Can't unload the module: it has locked itself in memory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:123
+msgid "Unknown binary operator '=%q': did you mean '==' ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:221
+msgid "Unknown binary operator '%q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:305
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:371
+msgid "Unexpected end of script in expression"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:451
+msgid ""
+"Unexpected character %q (unicode %h) in expression. If it meant to be a "
+"string use the quotes."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:466
+#, fuzzy
+msgid "Unexpected empty expression operand"
+msgstr "Очакване на край на израза"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:91
+msgid "say: injected commandline"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:94
+msgid "Say parse error: Broken command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:250
+msgid ""
+"Couldn't find a suitable IRC context for the connection, try using -n or -u"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:259
+#, fuzzy
+msgid "Another connection is already in progress in the selected IRC context"
+msgstr "Друга връзка е в ход"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:369
+msgid "No menu bar item with text '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:383
+#, fuzzy
+msgid "Invalid index specified: ignored"
+msgstr "Неправилен порт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:392
+msgid "The popup '%Q' is not defined"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:604
+msgid "No target channel specified and the current window is not a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:705
+msgid "No catalogue %Q for the current language found"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:744
+msgid "The catalogue %Q was not loaded"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:80
+msgid ""
+"Empty window identifier specified in the standard rebinding switch: no "
+"rebinding performed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:91
+msgid ""
+"Invalid window specified in the standard rebinding switch: no rebinding "
+"performed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:94
+msgid ""
+"The left side of the scope operator didn't evaluate as an object reference"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:100
+msgid ""
+"The left side of the scope operator evaluated to a null object reference"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:107
+msgid ""
+"The left side of the scope operator evaluated to an invalid object reference "
+"(object doesn't exist)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayreferenceassert.cpp:77
+msgid "Array reference assert failed: the variable evaluated to type '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:247
+msgid "Operand of unary operator didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:415
+msgid "Left operand didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:422
+msgid "Right operand didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:547
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:575
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:583
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:374
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:66
+msgid "Division by zero"
+msgstr "Делене на нула"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:107
+#, c-format
+msgid "line %d, near character %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:187
+msgid "This command can be used only in windows bound to an IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:193
+msgid "You're not connected to an IRC server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:199
+msgid "Missing parameter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:128
+msgid "Hash key evaluated to empty string: fix the script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:99
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:144
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash automatic "
+"conversion from %Q supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashreferenceassert.cpp:77
+msgid "Hash reference assert failed: the variable evaluated to type '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:100
+msgid "Failed to send an unknown command as /raw"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:104
+msgid "Call to undefined command '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:116
+msgid "Error in inner alias command call '%Q', called from this context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:74
+msgid "There are no extended scope variables in this scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:111
+#, fuzzy
+msgid "Missing class name"
+msgstr "Липсва име на клас на обект"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:120
+msgid "A class can't be a subclass of itself"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:127
+msgid "Couln't find base class named \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:137
+msgid ""
+"Detected a loop in the inheritance tree of the base class \"%Q\": redefine "
+"that class first"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:146
+msgid "Can't override the builtin class \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:71
+msgid "Module command call failed: can't load the module '%Q': %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:77
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a command named '%"
+"Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:113
+msgid "Broken condition in menu setup: assuming false"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:220
+msgid "Broken icon parameter: ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:228
+msgid "Can't find the icon \"%Q\": ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:244
+msgid "Broken text parameter: assuming empty string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:486
+msgid "Recursive definition detected for popup '%Q': ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:500
+msgid "Can't find the external popup '%Q'; ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:853
+msgid "Broken prologue in popup menu '%Q': ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:868
+msgid "Broken epilogue in popup menu '%Q': ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:70
+msgid "Module function call failed: can't load the module '%Q': %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:77
+msgid ""
+"Module function call failed: the module '%Q' doesn't export a function named "
+"'%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_timermanager.cpp:244
+msgid "Timer '%Q' has a broken callback handler: killing the timer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:229
+msgid "The target variable didn't evaluate to an integer or real value"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:283
+msgid "The right side of operator '&=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:294
+msgid "The left side of operator '&=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:353
+msgid "The right side of operator '/=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:364
+msgid "The left side of operator '/=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:446
+msgid "The right side of operator '%=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:457
+msgid "The left side of operator '%=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:541
+msgid "The right side of operator '*=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:552
+msgid "The left side of operator '*=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:620
+msgid "The right side of operator '|=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:631
+msgid "The left side of operator '|=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:691
+msgid "The right side of operator '<<=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:702
+msgid "The left side of operator '<<=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:763
+msgid "The right side of operator '>>=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:774
+msgid "The left side of operator '>>=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:840
+msgid "The right side of operator '-=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:851
+msgid "The left side of operator '-=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:923
+msgid "The right side of operator '+=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:934
+msgid "The left side of operator '+=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1009
+msgid "The right side of operator '^=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1020
+msgid "The left side of operator '^=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1462
+msgid ""
+"The regular expression matched a zero-length substring: this is not valid in "
+"the s/// operator, skipping"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:52
+msgid "Unexpected end of script after '$' function call prefix"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:53
+msgid "Unexpected character %q (unicode %x) after '$' function call prefix"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:54
+msgid ""
+"Syntax error after '$' function call prefix. If you want to use a plain '$' "
+"in the code you need to escape it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:63
+msgid "Invalid expression evaluation in object scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:78
+msgid "Invalid command evaluation in object scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:87
+msgid "Empty instruction block for command evaluation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:101
+msgid ""
+"Parameter identifiers are forbidden in object scope (after the '->' operator)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:147
+msgid ""
+"Ending index of a multiple parameter identifier is lower or equal to the "
+"starting index. This will evaluate to a single parameter identifier."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:163
+msgid "Syntax error: invalid $$ ($this) function call in object scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:189
+msgid "Syntax error: malformed alias function call identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:197
+msgid "Syntax error: malformed (alias?) function call identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:307
+#, fuzzy, c-format
+msgid "Invalid data type for parameter \"%s\""
+msgstr "Неправилен параметър"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:122
+#, c-format
+msgid "found empty string where type '%s' was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:129
+msgid "found string value \"%Q\" where type '%s' was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:134
+msgid "found type %Q where type '%s' was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:154
+#, c-format
+msgid "Missing non-optional parameter \"%s\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:282
+msgid "found empty string while a non empty one was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:309
+#, c-format
+msgid "found signed integer \"%d\" where type 'unsigned integer' was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:253
+msgid "This window has no associated IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:483
+#, c-format
+msgid "No such IRC context (%u)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:471
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:586
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:494
+msgid "This window is not associated to an IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:809
+msgid ""
+"The specified format string wasn't accepted by the underlying system time "
+"formatting function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:70
+msgid "Unterminated c-style multiline comment"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:71
+msgid "Unexpected end of script in multiline comment"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:88
+msgid ""
+"Unexpected character '%q' (unicode %x) after a slash (it is a typo or a "
+"malformed comment begin ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:71
+msgid "Call to undefined function '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:79
+msgid "Error in inner alias function call '%Q', called from this context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:73
+msgid "Array index didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:79
+msgid ""
+"Array index evaluated to a negative integer (non negative integer expected)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:106
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from %Q supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:142
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:219
+#, fuzzy
+msgid "Lag meter was not enabled"
+msgstr "Десния операнд не е число"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:546
+#, fuzzy
+msgid "No such event handler (%Q) for event %Q"
+msgstr "Няма такъв обект"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands.cpp:153
+msgid "This is not a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:99
+msgid ""
+"Unexpected end of command buffer while looking for the \"perl.end\" statement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:147
+msgid "Trailing garbage at the end of the break command: ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:209
+msgid "The 'unset' command needs a variable list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:280
+msgid "Found character %q (unicode %x) where a variable was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:219
+msgid "'unset' command used without a variable list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:279
+msgid "The 'global' command needs a variable list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:631
+msgid "Found character %q (unicode %x) where an open parenthesis was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:439
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:538
+#, fuzzy
+msgid "Unexpected end of buffer in class definition"
+msgstr "Неочавакван край на команда"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:474
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:501
+msgid "Found character %q (unicode %x) where a function name was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:522
+msgid "Unexpected end of buffer in function parameter list reminder"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:630
+msgid "The while command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:654
+msgid ""
+"The last while command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:655
+msgid ""
+"Unexpected end of script while looking for the instruction block of the "
+"while command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:741
+msgid ""
+"Unexpected end of command after the 'do' command block: expected 'while' "
+"keyword"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:743
+msgid "Found character %q (unicode %x) where a 'while' keyword was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:759
+msgid ""
+"The 'while' block of the 'do' command needs an expression enclosed in "
+"parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:779
+msgid "Garbage string after the expression in 'do' command: ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:825
+msgid "The 'if' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:850
+msgid ""
+"The last if command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:851
+msgid ""
+"Unexpected end of script while looking for the instruction block of the if "
+"command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:966
+msgid ""
+"Unexpected end of buffer while looking for the closing ')' in the 'for' "
+"command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1015
+msgid "The 'for' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1092
+msgid ""
+"Found char %q (unicode %x) while looking for the terminating ')' in 'for' "
+"command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1122
+msgid "Empty infinite 'for' loop: fix the script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1181
+msgid "The 'foreach' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1205
+msgid ""
+"The 'foreach' command expects a writeable iteration variable as first "
+"parameter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1196
+msgid ""
+"Found character '%q' (unicode %x) where '%' or '$' was expected: see /help "
+"foreach for the command syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1207
+msgid "Unexpected function call as 'foreach' iteration variable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1209
+msgid "Unexpected read-only variable as 'foreach' iteration variable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1219
+msgid ""
+"Unexpected end of 'foreach' parameters: at least one iteration data argument "
+"must be given"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1223
+msgid ""
+"The 'foreach' command expects a comma separated list of iteration data items "
+"after the first parameter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1244
+msgid ""
+"Found empty 'foreach' execution block: maybe you need to fix your script ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1365
+msgid "The 'switch' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1415
+msgid "Unexpected end of buffer in switch condition block"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1422
+msgid ""
+"Found character %q (unicode %x) where a 'case','match','regexp','default' or "
+"'break' label was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1460
+msgid ""
+"Found 'break' label where a 'case','match','regexp' or 'default' label was "
+"expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1465
+msgid ""
+"Found token '%Q' where a 'case','match','regexp','default' or 'break' label "
+"was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1528
+msgid "Senseless empty switch command: fix the script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1562
+msgid "Unexpected end of buffer in defpopup block"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1569
+msgid ""
+"Found character %q (unicode %x) where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1668
+msgid "Found empty prologue block: maybe you need to fix the script?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1670
+msgid "Found empty epilogue block: maybe you need to fix the script?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1703
+msgid ""
+"Unexpected empty <text> field in label parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1753
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1801
+msgid ""
+"Unexpected empty <text> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1777
+msgid ""
+"Found empty instruction for popup item: maybe you need to fix the script?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1809
+msgid ""
+"Unexpected empty <name> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1821
+msgid ""
+"Found token '%Q' where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1931
+msgid "The 'defpopup' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:109
+msgid "beginning of input"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:121
+msgid ""
+"Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %s"
+"\" for the command syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:124
+#, c-format
+msgid ""
+"Found end of input where character '%c' was expected: see \"/help %s\" for "
+"the command syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:197
+msgid "Empty script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2650
+msgid ""
+"Syntax error after '%' variable prefix. If you want to use a plain '%' in "
+"the code you need to escape it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2667
+msgid "Objects have no extended scope variables"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2727
+msgid "Found character '%q' (unicode %x) where an instruction was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2760
+msgid "Unterminated instruction block"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2761
+msgid "Unexpected end of script in instruction block (missing closing brace)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2838
+msgid ""
+"The dash after a command should be followed by a letter (switch), by a digit "
+"(negative number) or be escaped"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2842
+msgid "Unexpected character '%q' (unicode %x) after a switch dash"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2844
+msgid "Unexpected end of script after a switch dash"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2869
+msgid ""
+"The above problem might be related to the switch dash and the following "
+"equal sign"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2948
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3016
+msgid "Unexpected end of script in parameter list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2954
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3022
+msgid "Unexpected end of line in parameter list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3083
+msgid ""
+"Nested character %q corresponding to expected terminator, this might confuse "
+"me a bit: it is a good idea to enclose it in quotes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3093
+msgid "Skipping nested terminator character %q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3120
+msgid "Stray backslash at the end of the script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3393
+msgid "Unterminated hash key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3387
+msgid "Unexpected end of script in hash key (missing '}' character ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3394
+msgid ""
+"Unexpected end of line in hash key (missing '}' character or unescaped "
+"newline)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3679
+msgid "Unterminated string constant"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3673
+msgid "Unexpected end of script in string constant (missing \" character ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3680
+msgid ""
+"Unexpected end of line in string constant (missing \" character or unescaped "
+"newline)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_processmanager.cpp:225
+msgid "Error triggered from process callback handler: killing process"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arraycount.cpp:72
+msgid ""
+"The argument of the array count '#' operator didn't evaluate to an array: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:197
+msgid "This window has no associated IRC context and is not a DCC chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:293
+msgid "Class \"%Q\" is not defined"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:303
+msgid "The specified parent object does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:430
+msgid "There is no option named '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:85
+msgid "Internal error: pure virtual evaluateReadOnly called"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:91
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:104
+msgid ""
+"Internal error: trying to evaluate as read-write a read-only data location"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:98
+msgid "Internal error: pure virtual evaluateReadOnlyInObjectScope called"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:215
+msgid "[KVS]%c Warning: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:211
+msgid "[KVS]%c Compilation Error: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:219
+msgid "[KVS]%c Runtime Error: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:224
+msgid "[KVS] in script context \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:226
+msgid "[KVS] in script context \"%Q\", %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:233
+msgid "[KVS] Code listing:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:238
+msgid "[KVS] Window:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:242
+#, c-format
+msgid "[KVS] Destroyed window with pointer %x"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:246
+msgid "[KVS] Call stack:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:464
+#, c-format
+msgid "Window with ID '%s' not found, returning empty string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:130
+msgid "The specified window is not a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:392
+msgid "The $sw() function can be used only in aliases"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:302
+#, fuzzy
+msgid "Invalid pitch value: using default"
+msgstr "Неправилен параметър"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:312
+#, fuzzy
+msgid "Invalid duration value: using default"
+msgstr "Грешен прокси адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:421
+msgid "No button with type %Q named %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:632
+msgid "Can't delete a null object reference"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:638
+#, fuzzy
+msgid "Can't delete an inexisting object"
+msgstr "Не може да изпрати файл с нулева големина"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:692
+msgid "Inexisting popup \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:698
+msgid ""
+"Popup menu self-modification is not allowed (the popup is probably open)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:705
+msgid "The menu item with id \"%Q\" does not exist in popup \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:860
+msgid ""
+"The argument of the -w switch did not evaluate to a valid window id: using "
+"default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:869
+msgid ""
+"The argument of the i switch did not evaluate to a number: using default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:981
+msgid "Invalid color-set specification, using default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:992
+#, c-format
+msgid "Window '%s' not found, using current one"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:78
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a callback "
+"command named '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp:401
+#, c-format
+msgid "The popup '%s' is actually locked: 'self-modifications' are not allowed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:822
+#, c-format
+msgid "Ignoring DCC from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:839
+#, c-format
+msgid "Ignoring CTCP from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:978
+msgid "The following CTCP reply has unrecognized target %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1025
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1128
+msgid "Channel CTCP"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:988
+msgid "%Q %Q reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1018
+msgid "The following CTCP request has unrecognized target %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1032
+msgid ""
+"%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignored (flood limit "
+"exceeded)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1036
+msgid "ignored (unrecognized)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "replied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1041
+msgid "%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1079
+msgid "The following CTCP PING reply has unrecognized target \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1113
+#, c-format
+msgid ""
+"The following CTCP PING reply has a broken time identifier \"%S\", don't "
+"trust the displayed time"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1132
+msgid "%Q PING reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sec %u msec"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1466
+msgid "The following CTCP ACTION has unrecognized target %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1471
+msgid "CTCP ACTION from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1517
+msgid "Unable to add file offer for file %Q (File not readable?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1521
+msgid "Added %d sec file offer for file %Q (%Q) to recipient %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "private"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "channel notification:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1579
+msgid "notification"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1584
+msgid "%Q unsets avatar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1591
+msgid "%Q changes avatar to %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1637
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (HTTP GET %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1644
+msgid ""
+": No valid local copy of avatar available; failed to start an HTTP transfer, "
+"ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1652
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (DCC GET %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1664
+msgid ""
+": No valid local copy of avatar available; flood limit exceeded, ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1669
+msgid ": No valid local copy of avatar available, ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1677
+msgid ": No such nickname in the user database, ignoring the change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1717
+msgid "Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1759
+msgid "Processing DCC %Q request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1770
+#, c-format
+msgid "Unable to process the above request: Cannot load DCC module (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1776
+msgid "Unable to process the above request: DCC module may be broken"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:132
+msgid ""
+"[Server parser]: Encountered problems while parsing the following message:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:134
+msgid "[Server parser]: [%s][%s] %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:136
+#, c-format
+msgid "[Server parser]: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:98
+msgid "Received ping from \r!s\r%Q\r (PING %Q), replied pong"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:125
+#, c-format
+msgid "Received pong from \r!s\r%s\r (PONG %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:151
+msgid "Server ERROR: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:174
+msgid "Missing channel parameter in join message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:209
+msgid "Received a join message for an unknown channel, possible desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:305
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r [implicit +%c umode change]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:310
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:324
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just joined \r!c\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:355
+msgid "Received a part message for an unknown channel, possible desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:384
+msgid "You have left channel \r!c\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:386
+msgid "You have left channel \r!c\r%Q\r: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:402
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:406
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:420
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:424
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:494
+#, c-format
+msgid "Netsplit detected: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:546
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:562
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:589
+msgid "Received a kick message for an unknown channel, possible desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:626
+msgid "You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:633
+msgid "Attempting to rejoin \r!c\r%Q\r..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:670
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@"
+"\r!h\r%Q\r]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:682
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just been kicked from \r!c\r%Q\r by \r!n\r%Q"
+"\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:710
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:776
+msgid "Ignoring query-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:843
+msgid ""
+"Spam privmsg from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%s\")"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:984
+msgid "Ignoring channel-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1106
+msgid "Ignoring Notice from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1159
+msgid "NickServ requests authentication, executing scheduled command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1162
+msgid ""
+"The scheduled NickServ identification command appears to be broken, please "
+"change the setting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1213
+msgid ""
+"Spam notice from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%Q\")"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1394
+msgid "Received a topic message for an unknown channel, possible desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1413
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has changed topic to \"%Q%c\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1512
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1063
+msgid "You have changed your nickname to %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1477
+msgid ""
+"The target of this query was lost and has been found when \r!n\r%Q\r [%Q@\r!h"
+"\r%Q\r] changed his nickname to \r!n\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1486
+msgid ""
+"The recent nickname change from \r!n\r%Q\r to \r!n\r%Q\r caused a query "
+"collision: merging output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1495
+msgid "End of merged output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1540
+msgid "Ignoring invite from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "autojoining"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "double-click the channel name to join"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1556
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] invites you to channel \r!c\r%Q\r (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1564
+msgid "Received an invite message directed to another nick, possible desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1584
+msgid "WALLOPS from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1648
+#, c-format
+msgid "You have set user mode %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1655
+msgid "Received a mode change for an unknown channel, possible desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1731
+msgid "%Q [%Q@%Q] has set channel key to \"\r!m-k\r%Q\r\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1734
+msgid "%Q [%Q@%Q] has unset the channel key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1754
+msgid "%Q [%Q@%Q] has set channel \r!m-l\rlimit to %Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1757
+msgid "%Q [%Q@%Q] has unset the channel limit"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1779
+msgid "%Q [%Q@%Q] has set mode %c%c \r!n\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1787
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1834
+msgid "%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1819
+msgid "%Q [%Q@%Q] has set mode %c%c \r!m%c%c\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1860
+msgid "%Q [%Q@%Q] has set mode %s %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1863
+msgid "%Q [%Q@%Q] has set channel mode %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:147
+#, c-format
+msgid ""
+"One or more standard mode flags are missing in the server available modes.\n"
+"This is caused either by a non RFC1459-compliant IRC daemon or a broken "
+"server reply.\n"
+"Server umodes seem to be '%s' and channel modes seem to be '%s'.\n"
+"Ignoring this reply and assuming that the basic set of modes is available.\n"
+"If you have strange problems, try changing the server."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:159
+msgid "Available user modes:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:169
+msgid ": Unknown user mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:177
+msgid "Available channel modes:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:197
+msgid "Server %Q version %S supporting user modes '%S' and channel modes '%S'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:244
+msgid "This server supports the WATCH notify list method, it will be used"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:262
+msgid "The current network is %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:303
+msgid "This server supports the CODEPAGE command, it will be used"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:319
+#, c-format
+msgid "This server supports: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:375
+msgid "End of NAMES for \r!c\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:472
+msgid "Names for \r!c\r%Q\r: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:487
+msgid "(unknown)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:491
+msgid "Channel topic is: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:498
+msgid "Topic for \r!c\r%Q\r is: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:516
+msgid "No channel topic is set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:521
+msgid "No topic is set for channel \r!c\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:560
+msgid "Topic was set by %Q on %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:561
+msgid "Topic was set by %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:569
+msgid "Topic for \r!c\r%Q\r was set by %Q on %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:572
+msgid "Topic for \r!c\r%Q\r was set by %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:592
+msgid "Channel mode for \r!c\r%Q\r is %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:595
+msgid "User mode for \r!n\r%Q\r is %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:631
+msgid "End of channel %Q for \r!c\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:635
+msgid "ban list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:636
+msgid "invite list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:637
+msgid "ban exception list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:658
+msgid "%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:665
+msgid "Ban listing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:668
+msgid "Invite listing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:671
+msgid "Ban exception listing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:740
+msgid ""
+"WHO entry for %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cChannel%c: \r!c\r%Q\r, %"
+"cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAway%c: %Q, %cReal name"
+"%c: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:797
+msgid "End of WHO list for %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:856
+msgid ""
+"Something really weird is happening: the server is refusing all the login "
+"nicknames..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:861
+msgid ""
+"The server is refusing all the login nicknames: giving up, you must send the "
+"nickname manually"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:871
+msgid "No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:945
+msgid "Command syntax %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:973
+msgid "Tip: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:976
+msgid "Tip for %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:993
+msgid "End of help about %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1037
+msgid "%c\r!n\r%Q\r%c is away: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1090
+msgid "%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1095
+msgid "%c\r!n\r%Q\r%c's real name: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1115
+msgid "%c\r!n\r%Q\r%c was %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1119
+msgid "%c\r!n\r%Q\r%c's real name was: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1183
+msgid "%c\r!n\r%Q\r%c's channels: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1220
+msgid "Received a broken RPL_WHOISIDLE, can't evaluate the idle time"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1230
+msgid "%c\r!n\r%Q\r%c's idle time: %ud %uh %um %us"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1240
+msgid "%c\r!n\r%Q\r%c's signon time: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1274
+msgid "%c\r!n\r%Q\r%c's server: \r!s\r%Q\r - %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1293
+msgid "%c\r!n\r%Q\r%c is authenticated as %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1325
+msgid "%c\r!n\r%Q\r%c's info: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1372
+msgid "%c\r!n\r%Q\r%c WHOIS info from \r!s\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1389
+msgid "%c\r!n\r%Q\r%c WHOWAS info from \r!s\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1457
+msgid "Can't evaluate creation time"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1465
+msgid "Channel was created at %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1470
+msgid "Channel \r!c\r%Q\r was created at %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1511
+msgid "USERHOST info: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1532
+msgid "Channel list begin: channel, users, topic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1559
+msgid "List: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1573
+msgid "End of LIST"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1597
+msgid "Link: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1612
+msgid "End of LINKS"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1641
+msgid "[Leaving away status after %ud %uh %um %us]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1645
+msgid "[Leaving away status]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1652
+msgid "Restoring pre-away nickname (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1672
+msgid "[Entering away status]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1690
+msgid "Setting away nickname (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1762
+#, c-format
+msgid "%c\r!s\r%s\r%c's server info: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1773
+#, c-format
+msgid "%c\r!s\r%s\r%c's administrator is %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1784
+#, c-format
+msgid "%c\r!s\r%s\r%c's contact adress is %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1812
+msgid "\r!n\r%Q\r invited %Q into channel %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1834
+#, c-format
+msgid "%c\r!s\r%s\r%c's information:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1844
+#, c-format
+msgid "End of %c\r!s\r%s\r%c's information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1855
+msgid "%c\r!s\r%s\r%c's time is %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1866
+msgid "%Q: no such server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1877
+msgid "%Q: no such channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1891
+msgid "Cannot sent to channel: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1894
+msgid "Cannot sent text to channel %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1909
+msgid "Cannot sent to channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1912
+msgid "Cannot sent text to channel %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1928
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1936
+msgid "Your encoding is now %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1967
+msgid "%c\r!n\r%Q\r%c's codepage is %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1991
+#, c-format
+msgid "Your user mode is %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:158
+msgid "Failed to set the encoding to %Q: mapping not available."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:175
+msgid "Changed text encoding to %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:503
+msgid "Connection to server lost"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:512
+msgid "Connection to server established"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:573
+msgid "[LINK WARNING]: Socket message truncated to 512 bytes."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:640
+msgid ""
+"The server seems to support the WATCH notify list method, will try to use it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:688
+msgid "Can't resolve local host address, using user supplied one (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:695
+msgid "Can't resolve local host address, using default 127.0.0.1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:701
+msgid "Local host address is %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:749
+msgid "The server seems to have changed the idea about the local hostname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:750
+msgid ""
+"You're probably using a broken bouncer or maybe something weird is happening "
+"on the IRC server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:776
+msgid ""
+"Here goes your \"broken bouncer hack\": The server has changed the hostname "
+"but I'll ignore the IP address change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:791
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:801
+msgid "The local IP address as seen by the IRC server is %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:815
+msgid "Can't start the DNS slave thread"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:816
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:846
+msgid "Unable to resolve the local hostname as seen by the IRC server: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:822
+msgid "Looking up the local hostname as seen by the IRC server (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:843
+msgid ""
+"Unable to resolve the local hostname as seen by the IRC server: %Q, using "
+"previously resolved %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:850
+msgid "Local hostname as seen by the IRC server resolved to %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:868
+msgid "Using server specific username (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:873
+msgid "Using network specific username (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:892
+msgid "Using reconnect specific nickname (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:898
+msgid "Using server specific nickname (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:905
+msgid "Using network specific nickname (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:922
+msgid "Using server specific real name (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:929
+msgid "Using network specific real name (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:946
+msgid "Logging in as %Q!%Q :%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:962
+#, c-format
+msgid "Sending %s as password"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1033
+msgid "Executing scheduled network specific \"on connect\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1042
+msgid "Executing scheduled server specific \"on connect\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1051
+msgid "Executing scheduled identity specific \"on connect\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1101
+#, c-format
+msgid "The server refused the suggested nickname (%s) and named you %s instead"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1113
+msgid "Login operations complete, happy ircing!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1123
+msgid "Executing scheduled network specific \"on login\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1132
+msgid "Executing scheduled server specific \"on login\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1141
+msgid "Executing scheduled identity specific \"on login\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1153
+msgid "Setting configured user mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1210
+msgid "Auto-joining network specific channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1244
+msgid "Auto-joining server specific channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1341
+msgid "Updating away state for channel %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_customtoolbardescriptor.cpp:230
+msgid "Backward compatibility action for toolbar.define"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:790
+msgid "Installation problems ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:791
+msgid ""
+"<b>Ooops...</b><br><br><b>There are some reasons that make me think that "
+"your KVIrc installation is incomplete.</b><br><br>I might be wrong, but you "
+"seem to miss some of the features that the default KVIrc script provides."
+"This may happen because you have upgraded to an unstable cvs version, "
+"because you have accidentally deleted or damaged your configuration files, "
+"because you have installed an incomplete script or because you have hit a "
+"bug in KVIrc.<br><br>I can repeat the installation of the default script in "
+"order to restore the missing features.<br><b>Do you want the default script "
+"to be restored ?</b><br><br><font size=\"-1\">Hint: If you're a scripter and "
+"have intentionally removed some of the scripting features then you may "
+"safely click on \"No and Don't Ask Me Again\", otherwise it might be a good "
+"idea to click \"Yes\". If you still want to choose \"No\" you can always "
+"restore the default script by choosing the appropriate entry from the "
+"\"Scripting\" menu.</font>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:805
+msgid "No and Don't Ask Me Again"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:828
+msgid "Restore Default Script - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:829
+msgid ""
+"You are about to restore the default script.<br>This will erase any script "
+"changes you have made.<br>Do you wish to proceed?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:872
+#, c-format
+msgid "Remote command received (%s ...)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1033
+msgid "File download failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1035
+msgid "File download from %1 failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1044
+msgid "File download successfully complete"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1046
+msgid "File download from %1 successfully complete"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1066
+msgid "Avatar download failed for %Q!%Q@%Q and url %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2014
+#, c-format
+msgid "The commandline for media type '%s' seems to be broken"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2018
+#, c-format
+msgid "Media type of file %s matched to '%s' but no commandline specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2023
+#, c-format
+msgid "No idea on how to play file %s (no media type match)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:39
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:48
+#, c-format
+msgid "[SSL]: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:40
+#, c-format
+msgid "[SSL]: Cipher: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:41
+#, c-format
+msgid "[SSL]: Version: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:42
+#, c-format
+msgid "[SSL]: Bits: %c%d (%d used)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:49
+#, c-format
+msgid "[SSL]: Version: %c%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:50
+#, c-format
+msgid "[SSL]: Serial number: %c%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:51
+msgid "[SSL]: Subject:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:59
+#, c-format
+msgid "[SSL]: Common name: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:60
+#, c-format
+msgid "[SSL]: Organization: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:61
+#, c-format
+msgid "[SSL]: Organizational unit: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:62
+#, c-format
+msgid "[SSL]: Country: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:63
+#, c-format
+msgid "[SSL]: State or province: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:64
+#, c-format
+msgid "[SSL]: Locality: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:58
+msgid "[SSL]: Issuer:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:65
+#, c-format
+msgid "[SSL]: Public key: %c%s (%d bits)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:66
+#, c-format
+msgid "[SSL]: Signature type: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:73
+#, c-format
+msgid "[SSL]: Signature contents: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:82
+msgid "Peer X509 certificate"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:85
+msgid "[SSL]: The peer didn't provide a certificate"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1219
+msgid "Current transmission cipher"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:92
+msgid "[SSL]: Can't find out the current cipher info"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:113
+#, c-format
+msgid "[%s]: [SSL]: Using certificate file %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:116
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the certificate file %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:146
+#, c-format
+msgid "[%s]: [SSL ERROR]: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:136
+#, c-format
+msgid "[%s]: [SSL]: Using private key file %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:139
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the private key file %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:375
+msgid "Reconnect attempt aborted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:443
+msgid ""
+"This is the first connection in this IRC context: using the global server "
+"setting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:483
+msgid ""
+"No servers available. Check the options dialog or use the /SERVER command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:491
+msgid ""
+"Ooops.. you've hit a bug in the servers database... I have found a server "
+"but not a network..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:504
+msgid "No proxy hosts available, resuming direct connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:582
+#, c-format
+msgid "Connection attempt failed [%s]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:600
+#, c-format
+msgid "Will attempt to reconnect in %d seconds"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:604
+#, c-format
+msgid "%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:606
+#, c-format
+msgid "%d of %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:633
+#, c-format
+msgid "Maximum number of reconnect attempts reached (%d): giving up"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:647
+msgid ""
+"The connection attempt failed while using a cached IP address for the "
+"current server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:648
+msgid "The problem *might* be caused by an updated DNS entry"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:649
+msgid "Try reconnecting with caching disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:673
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:382
+msgid "%Q established [%s (%s:%u)]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Secure connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:779
+#, c-format
+msgid "Connection terminated [%s (%s:%u)]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:791
+msgid "The connection terminated unexpectedly. Trying to reconnect..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:874
+msgid "Sent QUIT, waiting for the server to close the connection..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:685
+msgid "Normal text"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:686
+msgid "Selection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:687
+msgid "Highlighted text"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:688
+msgid "URL foreground"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:689
+msgid "Link overlay foreground"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:690
+msgid "Parser error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:691
+msgid "Parser warning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:692
+msgid "Host lookup result"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:693
+msgid "Socket message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:694
+msgid "Socket warning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:695
+msgid "Socket error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:696
+msgid "System error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:697
+msgid "Raw data to server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:698
+msgid "Connection status"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:699
+msgid "System warning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:700
+msgid "System message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:701
+msgid "Unhandled server reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:702
+msgid "Server information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:703
+msgid "Server Message of the Day"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:704
+msgid "Server ping"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:705
+msgid "Join message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:706
+msgid "Part message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:707
+msgid "Unrecognized/broken message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:708
+msgid "Topic message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:709
+msgid "Own private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:710
+msgid "Channel private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:711
+msgid "Query private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:712
+msgid "CTCP reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:713
+msgid "CTCP request replied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:714
+msgid "CTCP request ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:715
+msgid "CTCP request flood warning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:716
+msgid "CTCP request unknown"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:717
+msgid "User action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:718
+msgid "Avatar change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:719
+msgid "Quit message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:720
+msgid "Split message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:721
+msgid "Quit on netsplit message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:722
+msgid "Nick changes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:723
+msgid "+o mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:724
+msgid "-o mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:725
+msgid "+v mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:726
+msgid "-v mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:727
+msgid "Multiple user mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:728
+msgid "Channel key change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:729
+msgid "Channel limit change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:730
+msgid "+b mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:731
+msgid "-b mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:732
+msgid "+e mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:733
+msgid "-e mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:734
+msgid "+I mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:735
+msgid "-I mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:736
+msgid "Multiple channel mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:737
+msgid "Who reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:738
+msgid "DCC request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:739
+msgid "DCC message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:740
+msgid "DCC error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:741
+msgid "Nickname problem"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:742
+msgid "Whois user reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:743
+msgid "Whois channels reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:744
+msgid "Whois idle reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:745
+msgid "Whois server reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:746
+msgid "Whois other reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:747
+msgid "Channel creation time reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:748
+msgid "Notify list joins"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:749
+msgid "Notify list leaves"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:750
+msgid "Own encrypted private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:751
+msgid "Channel encrypted private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:752
+msgid "Query encrypted private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:753
+msgid "DCC chat message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:754
+msgid "Encrypted DCC chat message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:755
+msgid "Login operations completed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:756
+msgid "Kick action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:757
+msgid "Links reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:758
+msgid "Spam report"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:759
+msgid "ICQ message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:760
+msgid "ICQ user-message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:761
+msgid "Outgoing ICQ user-message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:762
+msgid "Channel notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:763
+msgid "Encrypted channel notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:764
+msgid "Query notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:765
+msgid "Encrypted query notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:766
+msgid "Server notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:767
+msgid "Halfop mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:768
+msgid "Unknown CTCP reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:769
+msgid "NickServ message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:770
+msgid "ChanServ message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:771
+msgid "Away message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:772
+msgid "Ident message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:773
+msgid "Channel list message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:774
+msgid "Half-deop mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:775
+msgid "Invite message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:776
+msgid "Multimedia message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:777
+msgid "Query trace message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:778
+msgid "Wallops message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:779
+msgid "Join error message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:780
+msgid "Broadcast private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:781
+msgid "Broadcast notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:782
+msgid "Am kicked"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:783
+msgid "Am op'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:784
+msgid "Am voiced"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:785
+msgid "Am deop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:786
+msgid "Am devoiced"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:787
+msgid "Am halfop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:788
+msgid "Am de-halfop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:789
+msgid "Ban matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:790
+msgid "Unban matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:791
+msgid "Ban exception matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:792
+msgid "Ban unexception matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:793
+msgid "Invite exception matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:794
+msgid "Invite unexception matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:795
+msgid "Ignored user message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:796
+msgid "Server statistics"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:797
+msgid "SSL message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:108
+msgid "Search"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:799
+msgid "Generic success"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:800
+msgid "Generic status"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:801
+msgid "Generic verbose message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:802
+msgid "Generic warning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:803
+msgid "Generic error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:804
+msgid "Generic critical error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:805
+msgid "Chan admin status set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:806
+msgid "Chan admin status unset"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:807
+msgid "Own chan admin status set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:808
+msgid "Own chan admin status unset"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:809
+msgid "Userop mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:810
+msgid "User-deop mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:811
+msgid "Am userop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:812
+msgid "Am de-userop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:813
+msgid "Verbose/Debug"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:814
+msgid "Chan owner status set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:815
+msgid "Chan owner status unset"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:816
+msgid "Own chan owner status set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:817
+msgid "Own chan owner status unset"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:818
+#, fuzzy
+msgid "Server error"
+msgstr "Вътрешна грешка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:22
+msgid "Help"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:820
+msgid "Text Encoding Server message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:826
+msgid "BitTorrent message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:970
+msgid "Missing absolute directory for the theme information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:978
+#, fuzzy
+msgid "Failed to create the theme directory"
+msgstr "Създаването на сокет пропадна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1061
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1096
+#, fuzzy
+msgid "Failed to save one of the theme images"
+msgstr "Създаването на сокет пропадна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1074
+#, fuzzy
+msgid "Failed to create the theme subdirectory"
+msgstr "Създаването на сокет пропадна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1213
+msgid "Boolean options (1/0)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1214
+msgid "Rectangle options (x,y,width,height)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1215
+msgid "String options (string value)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1216
+msgid "Color options (#RRGGBB)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1217
+msgid "Mirccolor options (#RRGGBB)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1218
+msgid "Irc context color options (#RRGGBB)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1219
+msgid "Pixmap options (image path)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1220
+msgid "Unsigned integer options (unsigned integer constant)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1221
+msgid "Font options (family,pointsize,style,charset,weight,flags (biusf))"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1222
+msgid "Message color options (image_id,foreground,background,logFlag (0/1))"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1223
+msgid "String list options (comma separated list of strings)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC Context related actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Settings"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Actions related to settings"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:30
+msgid "Scripting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+msgid "Scripting related actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "GUI"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "Actions related to the Graphic User Interface"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:77
+msgid "Channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+msgid "IRC Channel related actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Tools"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Actions that will appear in the \"Tools\" menu"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:157
+msgid "Sending out PING based lag probe"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:167
+msgid "Sending out CTCP based lag probe"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:188
+#, c-format
+msgid "Registered lag check with reliability %u (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:220
+#, c-format
+msgid "Lag check completed (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:259
+#, c-format
+msgid "Lag check aborted (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:143
+msgid "Hostname resolution aborted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:156
+#, fuzzy
+msgid "Attempting %Q to %Q (%Q) on port %u"
+msgstr "Свързване с компютър %s на порт %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "secure connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:165
+#, c-format
+msgid "Attempting to 'bounce' on proxy %s on port %u (protocol %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:194
+#, c-format
+msgid "Using cached proxy IP address (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:237
+msgid "Unable to look up the IRC proxy hostname: Can't start the DNS slave"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:265
+msgid "Resuming direct server connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:248
+#, c-format
+msgid "Looking up the proxy hostname (%s)..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:261
+#, fuzzy
+msgid "Can't find the proxy IP address: %Q"
+msgstr "Не може да определи исканият адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:271
+msgid "Proxy hostname resolved to %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:284
+msgid "Proxy %Q has a nickname: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:322
+#, c-format
+msgid "Using cached server IP address (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:354
+msgid "Unable to look up the server hostname: Can't start the DNS slave"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:359
+#, c-format
+msgid "Looking up the server hostname (%s)..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:373
+#, fuzzy
+msgid "Can't find the server IP address: %Q"
+msgstr "Не може да определи исканият адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:380
+msgid "If this server is an IPv6 one, try /server -i %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:390
+msgid "Server hostname resolved to %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:400
+msgid "Real hostname for %Q is %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:414
+msgid "Server %Q has a nickname: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:468
+msgid "The specified bind address (%Q) is not valid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:473
+msgid ""
+"The specified bind address (%Q) is not valid (the interface it refers to "
+"might be down)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:493
+#, c-format
+msgid "The system-wide IPv6 bind address (%s) is not valid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:500
+#, c-format
+msgid ""
+"The system-wide IPv6 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:522
+#, c-format
+msgid "The system-wide IPv4 bind address (%s) is not valid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:529
+#, c-format
+msgid ""
+"The system-wide IPv4 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:230
+msgid "Channel operators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:231
+msgid "Voiced users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:232
+msgid "Half-operators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:233
+msgid "Ban masks"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:234
+msgid "Color free (no ANSI colors)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:235
+msgid "Ban exception masks"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:236
+msgid "Invite exception masks or forbid /INVITE"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:237
+msgid "Secret"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:238
+msgid "Private"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:239
+msgid "Topic change restricted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:240
+msgid "Invite only"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:241
+msgid "No external messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:242
+msgid "Anonymous or protected user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:243
+msgid "Quiet or channel owner"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:244
+msgid "Limited number of users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:245
+msgid "Key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:246
+msgid "Moderated"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:247
+msgid "Registered"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:248
+msgid "Censor swear words"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:249
+msgid "Impossible to speak and change nick if not authenticated with NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:250
+msgid "Impossible to change nick if not authenticated with NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:251
+msgid "Only registered nicks can join"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:252
+msgid "No kicks able (unless U-Line)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:253
+msgid "IRC-Op only channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:254
+msgid "Server/Network/Tech Admin only channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:255
+msgid "Forbid /KNOCK"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:256
+msgid "Strip colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:257
+msgid "Redirect on channel full"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:258
+msgid "Forbid channel CTCPs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:259
+msgid "User-operators OR Auditorium: /NAMES and /WHO show only ops"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:260
+msgid "Only 7-bit letters in nicknames allowed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:261
+msgid "Impossible to use both 7-bit and 8-bit letters in nicknames"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:270
+msgid "o: IRC operator (OPER)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:271
+msgid "O: Local IRC operator (LOCOP)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:272
+msgid "i: Invisible"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:273
+msgid "w: Recipient for WALLOPS messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:274
+msgid ""
+"r: User with restricted connection (or recipient for messages about rejected "
+"bots)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:275
+msgid "s: Recipient for server notices"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:276
+msgid "z: Recipient for oper wallop messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:277
+msgid "c: Recipient for cconn messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:278
+msgid "k: Recipient for server kill messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:279
+msgid "f: Recipient for full server notices"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:280
+msgid "y: Spy :)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:281
+msgid "d: Obscure 'DEBUG' flag"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:282
+msgid "n: Recipient for nick changes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:100
+msgid "Ops... for some reason the link filter object has been destroyed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:138
+msgid "Using filtered IRC protocol: Link filter is \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:143
+msgid "Failed to set up the link filter \"%Q\", will try with plain IRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:202
+#, fuzzy
+msgid "Failed to start the connection: %Q"
+msgstr "Създаването на сокет пропадна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:368
+#, fuzzy
+msgid "Contacting %Q %s (%s) on port %u"
+msgstr "Свързване с компютър %s на порт %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "proxy host"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "IRC server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:375
+#, c-format
+msgid "Low-level transport connection established [%s (%s:%u)]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:379
+msgid "Starting Secure Socket Layer handshake"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Secure proxy connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Proxy connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:387
+msgid "Negotiating relay information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:390
+msgid "Sent connection request, waiting for acknowledgement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:393
+msgid "Sent target host data, waiting for acknowledgement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:396
+msgid "Sent auth method request, waiting for acknowledgement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:399
+msgid "Sent username and password, waiting for acknowledgement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:402
+msgid "Sent connection request, waiting for \"HTTP 200\" acknowledgement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:176
+msgid "[SSL]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:181
+msgid "[SSL ERROR]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:190
+msgid "[PROXY]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:200
+msgid "[PROXY ERROR]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:207
+msgid "[SOCKET]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:212
+msgid "[SOCKET ERROR]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:218
+msgid "[SOCKET WARNING]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:337
+#, c-format
+msgid "Binding to local address %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:341
+#, c-format
+msgid ""
+"Binding to local address %s failed: the kernel will choose the correct "
+"interface"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:637
+msgid "Using HTTP protocol."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:683
+msgid "Using SOCKSV4 protocol."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:756
+msgid "Using SOCKSv5 protocol."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:771
+msgid "We can accept auth method 0 (no auth)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:779
+msgid "We can accept auth method 0 (no auth) or 2 (user/pass)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:958
+msgid "Proxy response: auth OK: access granted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:993
+msgid "Proxy response: Auth method OK: using method 0 (no auth)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1000
+msgid "Proxy response: Auth method OK: using method 2 (user/pass)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1056
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1113
+msgid "Proxy response: target data OK: request granted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1153
+msgid "Proxy response: "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1164
+msgid "Proxy said something about: \n"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1205
+msgid "Server X509 certificate"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1209
+msgid "The server didn't provide a certificate"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1223
+msgid "Unable to determine the current cipher"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1768
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1788
+msgid "Partial socket write: packet broken into smaller pieces."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:60
+msgid "The theme information file does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:71
+msgid ""
+"This KVIrc executable is too old for this theme (minimum theme engine "
+"version required is %Q while this theme engine has version %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:80
+msgid "Theme information file is not valid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:248
+#, fuzzy
+msgid "Failed to load the specified screenshot image"
+msgstr "Създаването на сокет пропадна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:257
+#, fuzzy
+msgid "Invalid option"
+msgstr "Неправилен порт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:265
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:293
+#, fuzzy
+msgid "Failed to save the screenshot image"
+msgstr "Създаването на сокет пропадна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:117
+msgid "Configure Servers..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:118
+msgid "Allows you to configure the servers and eventually to connect to them"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:128
+msgid "Manage Addons..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:129
+msgid "Allows you to manage the script-based addons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:139
+msgid "Configure Registered Users..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:140
+msgid "Shows a dialog that allows editing the registered user entries"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:150
+msgid "Configure Identity..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:151
+msgid "Allows you to configure nickname, username, avatar etc..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:161
+msgid "Show SocketSpy..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:162
+msgid "Shows a window that allows monitoring the socket traffic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:172
+msgid "Get Network Links"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:173
+msgid "Shows a window that allows viewing the network links"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:183
+msgid "Get Channel List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:184
+msgid "Shows a window that allows listing the network channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:194
+msgid "Configure KVIrc..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:195
+msgid "Shows the general options dialog"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:205
+msgid "Configure Theme..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:206
+msgid "Shows the theme options dialog"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:216
+msgid "Manage Themes..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:217
+msgid "Allows you to manage the themes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:227
+msgid "Customize Toolbars..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:228
+msgid "Shows a window that allows editing script toolbars"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:239
+msgid "Join Channels..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:240
+msgid "Shows a dialog that allows you joing channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:251
+msgid "Edit Actions..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:252
+msgid "Shows a window that allows editing actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:262
+msgid "Edit Aliases..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:263
+msgid "Shows a window that allows editing aliases"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:273
+msgid "Edit Events..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:274
+msgid "Shows a window that allows editing script events"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:284
+msgid "Edit Popups..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:285
+msgid "Shows a window that allows editing popup menus"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:295
+msgid "Edit Raw Events..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:296
+msgid "Shows a window that allows editing raw scripting events"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:306
+msgid "New Script Tester"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:307
+msgid "Creates an embedded editor for long scripts"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:317
+msgid "Execute Script..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:318
+msgid "Allows executing a KVS script from file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:328
+msgid "Help Index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:329
+msgid "Shows the documentation index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:340
+msgid "Allows subscribing to the KVIrc mailing list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:350
+msgid "KVIrc WWW"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:351
+msgid "Opens the KVIrc homepage"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:361
+msgid "KVIrc Russian WWW"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:362
+msgid "Opens the KVIrc homepage in russian"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:372
+msgid "Acquire Screenshot"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:373
+msgid "Acquires a Screenshot of the KVIrc main window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:385
+msgid "Cascade windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:386
+msgid "Arranges the MDI windows in a maximized-cascade fashion"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:397
+msgid "Tile windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:398
+msgid "Tiles the MDI windows with the currently selected tile method"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:409
+msgid "Minimize all windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:410
+msgid "Minimized all the currently visible MDI windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:421
+msgid "New IRC Context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:422
+msgid "Creates a new IRC context console"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:433
+msgid "Quit KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:434
+msgid "Quits KVIrc closing all the current connections"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:448
+msgid "IRC Context Display"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:449
+msgid "Shows a small display with IRC context informations"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:520
+msgid "Acts as a separator for other items: performs no action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:554
+#, fuzzy
+msgid "Connect/Disconnect"
+msgstr "Изтичане на време за връзка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:555
+msgid ""
+"Allows you to connect to a server or to terminate the current connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:628
+msgid "Connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:629
+#, fuzzy
+msgid "Abort Connection"
+msgstr "Изтичане на време за връзка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:790
+msgid "Join Channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:791
+msgid "Shows a popup menu that allows quickly selecting a channel to join"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:851
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:863
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:896
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:907
+msgid "Other..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:834
+msgid "Change Nickname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:835
+msgid "Shows a popup menu that allows quickly changing the nickname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:883
+#, fuzzy
+msgid "Connect To"
+msgstr "Изтичане на време за връзка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:884
+msgid "Shows a popup menu that allows quickly connecting to a server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:929
+msgid "User Mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:930
+msgid "Shows a popup menu that allows quickly changing user modes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:947
+msgid "Wallops (+w)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:949
+msgid "Server Notices (+s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:951
+msgid "Invisible (+i)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:997
+msgid "Away/Back"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:998
+msgid "Allows entering and leaving away state"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1065
+msgid "Enter Away Mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1066
+msgid "Leave Away Mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1135
+msgid "Irc Tools"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1136
+msgid "Shows a popup menu with some IRC Tools"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1171
+msgid "Irc Actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1172
+msgid "Shows a popup menu with some IRC Actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:412
+msgid "KVIrc KVS Script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:174
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:420
+msgid "Run KVS Script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:284
+msgid "URL:IRC Protocol"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:383
+msgid "Open with KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:436
+msgid "KVIrc Configuration File"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:453
+msgid "KVIrc Theme Package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:461
+msgid "Install Theme Package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:478
+msgid "KVIrc Addon Package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:486
+msgid "Install Package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:749
+#, c-format
+msgid ""
+"Ops...it looks like I can't load modules on this sytem.\n"
+"I have been looking for the %s library but I haven't been able to load it\n"
+"due to the following error: \"%s\"\n"
+"Aborting."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:762
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_begin\" function.\n"
+"Aborting!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:776
+msgid "Setup aborted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:801
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_finish\" function.\n"
+"Trying to continue anyway..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:186
+msgid "%Q is on IRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:248
+msgid "%Q has left IRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:368
+msgid "Notify list: No users to check for, quitting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:414
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (15 sec)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:428
+msgid "Notify list: Notify list empty, quitting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:455
+#, c-format
+msgid ""
+"Notify list: ISON delay (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:491
+msgid "Notify list: Checking for: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:535
+msgid ""
+"Notify list: Hey! You've used ISON behind my back? (I might be confused "
+"now...)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:682
+msgid "registration mask changed, or nickname is being used by someone else"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:686
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (registration mask does not match, or nickname is being used "
+"by someone else)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:691
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? "
+"(restarting)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:698
+msgid ""
+"Notify list: Unexpected inconsistency, expected \r!n\r%Q\r in the registered "
+"user DB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:712
+#, c-format
+msgid ""
+"Notify list: USERHOST delay (%d sec) is too short, resetting to something "
+"more reasonable (5 sec)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:726
+msgid "Notify list: Unexpected inconsistency, userhost list is empty!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:761
+msgid "Notify list: Checking userhost for: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:831
+msgid ""
+"Notify list: Hey! You've used USERHOST behind my back? (I might be confused "
+"now...)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:836
+#, c-format
+msgid "Notify list: Broken USERHOST reply from the server? (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:860
+msgid ""
+"Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST reply "
+"was received, will recheck in the next loop"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:931
+msgid "Starting notify list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:936
+msgid "No users in the notify list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:958
+msgid "Notify list: Checking for:%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1013
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1139
+msgid "Notify list: Adding watch entries for%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1171
+msgid "watch entry listing requested by user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1175
+msgid "possible watch list desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1185
+msgid "registration mask changed or desync with the watch service"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1190
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (watch: registration mask does not match, or nickname is "
+"being used by someone else)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1197
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? (watch: "
+"restarting)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1207
+msgid "watch entry added by user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1245
+msgid "removed from watch list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1248
+msgid "Notify list: Stopped watching for \r!n\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1258
+msgid "watch"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1264
+msgid "Notify list: \r!n\r%Q\r is offline (watch)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1267
+msgid "unmatched watch list entry"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:80
+msgid "commandline::userfriendly"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:94
+msgid "commandline::kvs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:127
+#, fuzzy
+msgid "You are not connected to a server"
+msgstr "Сокета не е свързан"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_iconmanager.cpp:372
+msgid "Icon Table"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:190
+msgid "No "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:196
+msgid "This module has no version informations: refusing to load it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:204
+msgid ""
+"This module was compiled for a different KVIrc version and can't be loaded"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:232
+msgid "Failed to execute the init routine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:261
+#, c-format
+msgid "Loaded module '%s' (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:306
+#, c-format
+msgid "Unloaded module '%s'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:45
+msgid "This window has no associated irc context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:50
+#, c-format
+msgid "No such irc context (%d)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:147
+msgid "Global idle timer must be started before using $my.globalIdle function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:103
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:215
+#, fuzzy
+msgid "Window %Q not found"
+msgstr "Хоста не е намерен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:108
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:220
+msgid "Missing window id after the 'w' switch"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:121
+#, fuzzy
+msgid "Can't log to file %Q"
+msgstr "Не може да отвори файл за четене"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:123
+msgid "This window has no logging capabilities"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:275
+msgid "Window with id '%Q' not found, returning empty string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:598
+msgid "Sound file '%Q' not found"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:604
+msgid "Unable to play sound '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:615
+msgid "Sorry , I can't find a sound system to use on this machine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:617
+#, c-format
+msgid "Sound system detected to: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:141
+msgid "Show at startup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:154
+msgid "Did you know..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:220
+msgid "<b>Can't find any tip... :(</b>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1544
+msgid "%Q algorytm is not supported"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1566
+msgid ""
+"KVIrc is compiled without OpenSSL support. $str.digest function disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2030
+msgid "Invalid argument for ?d escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2034
+msgid "Missing argument for ?d escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2066
+msgid "Invalid argument for ?u escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2070
+msgid "Missing argument for ?u escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2097
+msgid "Invalid argument for ?x escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2101
+msgid "Missing argument for ?x escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2128
+msgid "Invalid argument for ?X escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2132
+msgid "Missing argument for ?X escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2189
+msgid "Invalid argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2193
+msgid "Missing argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:87
+msgid "Show URL List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:88
+msgid "Shows the URL list window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:124
+msgid "&Configure"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:126
+msgid "Clo&se"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:127
+msgid "&Module"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:130
+msgid "&Load"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:131
+msgid "&Save"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:132
+msgid "&Clear"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:133
+msgid "&List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:136
+msgid "URL"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:137
+msgid "Window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:138
+msgid "Count"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:139
+msgid "Timestamp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:113
+msgid "Warning - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+msgid "Select an URL."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:115
+msgid "&Remove"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:269
+msgid "&Find Text"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:280
+msgid "&Say to Window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+msgid "Window not found."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:349
+msgid "URL Module Configuration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:356
+msgid "Save URL list on module unload"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:360
+msgid "Save columns width on URL list close"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1187
+msgid "&Cancel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:432
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1328
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:458
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1186
+msgid "&OK"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:423
+msgid "Enable URL ban list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:435
+msgid "&Add Ban"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:440
+msgid "&Remove Selected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "URL Ban List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+msgid "Select a ban."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:797
+msgid "View URL list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:49
+#, fuzzy
+msgid "Can't find the window with id '%Q'"
+msgstr "Не може да определи исканият адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:53
+msgid "The specified window (%Q) is not a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:78
+msgid "Destinaion file exists: no copy made"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:83
+msgid "Failed to copy from %Q to %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:84
+msgid "Either the source doesn't exist or the destination can not be created"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:203
+msgid "Failed to write to file %Q: the destination couldn't be opened"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:244
+msgid "Destination file exists: file not renamed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:247
+#, fuzzy
+msgid "Failed to rename %Q to %Q"
+msgstr "Създаването на сокет пропадна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:281
+#, fuzzy
+msgid "Failed to make the directory %Q"
+msgstr "Създаването на сокет пропадна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:322
+#, fuzzy
+msgid "Failed to remove the file %Q"
+msgstr "Създаването на сокет пропадна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:365
+#, fuzzy
+msgid "Failed to remove the directory %Q"
+msgstr "Създаването на сокет пропадна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:482
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:628
+msgid "The specified directory does not exist '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:730
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:824
+#, fuzzy
+msgid "Can't open the file \"%Q\" for reading"
+msgstr "Не може да отвори файл за четене"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:746
+msgid "Read error for file %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:754
+msgid ""
+"Read error for file %Q (have been unable to read the requested size in 1000 "
+"retries)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:920
+#, fuzzy
+msgid "Can't open the file \"%Q\" for writing"
+msgstr "Не може да отвори файл \"%s\" за запис"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/index.cpp:473
+msgid "Untitled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+msgid "Indexing help files"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:87
+msgid "Index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:99
+msgid "Refresh index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:211
+msgid "Full Text Search"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:203
+msgid "Using a wildcard within phrases is not allowed."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:212
+msgid "The closing quotation mark is missing."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:312
+msgid "Help Browser"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:201
+msgid "Request List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:207
+msgid "Stop list download"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:211
+msgid ""
+"<center><b>/LIST command parameters:</b><br>Many servers accept special "
+"parameters that allow you to filter the returned entries.<br>Commonly, "
+"masked channel names (*kvirc*) are accepted as parameters, as well as "
+"strings like <b>c&lt;n</b> or <b>c&gt;n</b> where <b>n</b> is the minimum or "
+"maximum of users on the channel.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:220
+msgid "Users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:221
+msgid "Topic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:262
+msgid "Sent list request, waiting for reply..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:265
+msgid "Cannot request list: No active connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:389
+msgid "Stopping the list download..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:276
+msgid "Cannot stop list download, no active connection."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:125
+#, c-format
+msgid "Connected to %s (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:293
+msgid "List cannot be requested: Not connected to a server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:316
+#, c-format
+msgid "Channel List [IRC Context %u]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:319
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel List</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:326
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel list</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:342
+msgid "You cannot export an empty list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:350
+msgid "Channel list for %Q - %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:353
+#, fuzzy
+msgid "Channel list"
+msgstr "Неизвестен оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:382
+#, fuzzy
+msgid "Choose filename"
+msgstr "Липсва име на променлива"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:356
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:383
+msgid "Configuration files (*.kvc)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:398
+msgid "Reset"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:435
+msgid "Channels list download finished"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:472
+msgid "Processing list: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/libkvilist.cpp:63
+msgid "List window alread open for this IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:70
+msgid "Terminal"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:73
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:77
+#, c-format
+msgid "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:59
+msgid "Terminal emulator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:63
+msgid "Close this window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:91
+msgid "Can't create the terminal emulation part"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:96
+msgid "Can't retrieve the terminal emulation factory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:95
+msgid "KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:98
+msgid "Context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:155
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:100
+msgid "Away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:102
+msgid "&Configure KVIrc..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:104
+msgid "&About KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:109
+msgid "Un&dock"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:168
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:112
+msgid "Ctrl+Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:143
+msgid "Nothing is happening..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:285
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:144
+msgid "Just idling..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:145
+msgid "Dum de dum de dum..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:146
+msgid "Hey man... do something!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:147
+msgid "Umpf!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:148
+msgid "Silence speaking"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:149
+msgid "Are ya here?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:150
+msgid "The world has stopped?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:151
+msgid "Everything is all right"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:152
+msgid "idle()"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:153
+msgid "It's so cold here..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:295
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:154
+msgid "Do not disturb... watching TV"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:155
+msgid "Just vegetating"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:156
+msgid "Hey... are ya sure that your network is up?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:298
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:157
+msgid "Seems like the world has stopped spinning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:299
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:158
+msgid "This silence is freaking me out!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:300
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:159
+msgid "Mieeeeeowww!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:301
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:160
+msgid "idle idle idle idle!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Hide Window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Show Window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:428
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:260
+msgid "Away on all"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:263
+msgid "Back on all"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:450
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:282
+msgid "Back on %1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:453
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:285
+msgid "Away on %1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1238
+msgid "Alias"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1217
+#, fuzzy
+msgid "No item selected"
+msgstr "Няма такъв файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:232
+msgid "Rename"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:236
+msgid "Edit the alias or namespace name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+msgid "Add Alias"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:429
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Add Namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:440
+msgid "Remove Selected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:449
+msgid "Export Selected..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:455
+msgid "Export Selected in singles files..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:462
+msgid "Export All..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:470
+msgid "Find In Aliases..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:476
+msgid "Collapse All Namespaces"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:508
+msgid "Find In Aliases"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:509
+msgid ""
+"Please enter the text to be searched for. The matching aliases will be "
+"highlighted."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "Alias Export"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+msgid "There is not selection!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:615
+msgid "The file \"%Q\" exists. Do you want to replace it ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+msgid "Replace file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+msgid "Yes to All"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "There exported file would be empty: cowardly refusing to write it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:786
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:411
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1133
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:398
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:745
+msgid "Choose a Filename - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Write Failed - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+msgid "Unable to write to the alias file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:793
+msgid "Do you really want to remove the alias \"%Q\" ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:795
+msgid "Do you really want to remove the namespace \"%Q\" ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:797
+msgid "Please note that all the children items will be deleted too."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+msgid "Remove item"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:875
+#, fuzzy
+msgid "Missing Alias Name"
+msgstr "Липсва име на клас на обект"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:876
+msgid "You must specify a valid name for the alias"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:877
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:890
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:904
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:915
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:946
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:959
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:973
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1128
+msgid "Ok, Let me try again..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:888
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:902
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:913
+msgid "Bad Alias Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:944
+#, fuzzy
+msgid "Missing Namespace Name"
+msgstr "Липсва име на клас на обект"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:945
+msgid "You must specify a valid name for the namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:957
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:971
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:982
+msgid "Bad Namespace Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:958
+msgid ""
+"Namespace names can contain only letters, digits, underscores and '::' "
+"namespace separators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:972
+msgid ""
+"Stray ':' character in namespace name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:983
+msgid "Found an empty namespace in namespace name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+msgid "Please enter the name for the new alias"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Please enter the name for the new namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+msgid "Rename Alias"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+msgid "Please enter the new name for the alias"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Rename Namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Please enter the new name for the namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1126
+#, fuzzy
+msgid "Alias already exists"
+msgstr "Адресът вече се използва"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1139
+msgid "This name is already in use. Please choose another one."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1138
+msgid "Namespace already exists"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1140
+msgid "Ok, let me try again..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1227
+msgid "Namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1332
+msgid "Alias Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:62
+msgid "Join Channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:183
+msgid "Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:86
+msgid "Password"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:641
+msgid "&Join"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:108
+msgid "Show this window after connecting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:163
+msgid "Recent Channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:182
+msgid "Registered Channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:133
+msgid "Choose the file to share"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:178
+msgid "No such channel/netmask entry in the database"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:198
+msgid "Registered channel list:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:208
+#, c-format
+msgid "Channel: %c%s@%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:213
+#, c-format
+msgid " Property: %s=%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:220
+#, c-format
+msgid "Total %d channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:86
+msgid "Property Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:101
+msgid "Property"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:102
+msgid "Value"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:111
+msgid "&New"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:215
+msgid "Mask Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:219
+msgid ""
+"Insert a mask for this user.<br>It can contain the wildcard characters '*' "
+"and '?'."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:230
+msgid ""
+"<center>This the <b>nickname</b> that will match this user, default value is "
+"the registered name.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:241
+msgid ""
+"<center>This the <b>username</b> that will match this user. <b>*</b> will "
+"match any username.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:252
+msgid ""
+"<center>This the <b>hostname</b> that will match this user. <b>*</b> will "
+"match any hostname.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:333
+msgid "Registered User Entry"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:145
+msgid "Name:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:345
+msgid "Comment:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:355
+msgid "Masks:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:216
+msgid "&Add..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:377
+msgid "&Edit"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:385
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:414
+msgid "Identity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:393
+msgid "Notify when user is online"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:396
+msgid "Notify nicknames:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:401
+msgid "<center>You can enter a space separated list of nicknames.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:426
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:383
+msgid "Avatar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:433
+msgid "Use custom color in userlist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:441
+msgid "All Properties..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:448
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:231
+msgid "Properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:458
+msgid "Enable ignore for this user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:460
+msgid "Ignore features"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:465
+msgid "Ignore query-messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:468
+msgid "Ignore channel-messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:471
+msgid "Ignore notice-messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:474
+msgid "Ignore ctcp-messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:477
+msgid "Ignore invites"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:480
+msgid "Ignore DCCs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:486
+msgid "Ignore"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:94
+msgid "Notify disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:96
+msgid "Notify as: "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:105
+msgid "No comment set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:107
+msgid "Comment: "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:176
+msgid "Registered Users - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:317
+msgid "Flags"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:192
+msgid ""
+"<center>This is the list of registered users. KVIrc can automatically "
+"recognize and associate properties to them.<br>Use the buttons on the right "
+"to add, edit and remove entries. The \"notify\" column allows you to quickly "
+"add users to the notify list. Notify list fine-tuning can be performed by "
+"editing the entry properties.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:208
+msgid "Add (Wizard)..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:211
+msgid "Add a registered user by means of a user-friendly wizard."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:219
+msgid "Open the edit dialog to create a new user entry."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:223
+msgid "&Add Group..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:226
+msgid "Adds a new group"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:234
+msgid "Remove the currently selected entries."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:239
+msgid "&Edit..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:243
+msgid "Edit the first selected entry."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:250
+msgid "Export To..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:254
+msgid ""
+"Export the selected entries to a file.<br>All the data associated with the "
+"selected registered users will be exported.<br>You (or anyone else) can "
+"later import the entries by using the \"Import\" button."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:259
+msgid "Import From..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:262
+msgid ""
+"Import entries from a file exported earlier by the \"export\" function of "
+"this dialog."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:399
+msgid "Group name:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:442
+msgid "Move to group"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:483
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:486
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:487
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:491
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:690
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_useridentity.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:962
+msgid "Default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:674
+msgid "No entries selected."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:687
+#, fuzzy
+msgid "Can't open file %Q for writing."
+msgstr "Не може да отвори файл за запис"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:772
+msgid "Can't export the registered users database: Write error."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:793
+#, c-format
+msgid "Can't open file %s for reading."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:804
+#, c-format
+msgid "The file %s doesn't appear to be a valid registered users database."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:811
+#, c-format
+msgid "The file %s contains an invalid registered users database version."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:892
+msgid "Can't import the registered users database: Read error."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:78
+msgid "User Registration Wizard - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:89
+msgid ""
+"<p>Welcome to the user registration wizard.<br>This process allows you to "
+"add an IRC user to the database and set properties for that user. KVIrc will "
+"be (hopefully) able to recognize the user, add him to the notify list, and "
+"display the associated avatar.<br><br>First of all, you must insert an "
+"<b>entry name or real name</b> for the user you're going to register. The "
+"name will be used to identify the database entry and has no specific "
+"requirements, it can be a given name, nickname, or just some text to remind "
+"you of the real person.<br>Examples: \"George W Bush\", \"Dubya\".\n"
+"</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:97
+msgid "Step 1: Entry Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:112
+msgid ""
+"<p>A registered user is identified by one or more <b>IRC masks</b>.<br>A "
+"mask must be in the following form:<br><b>nickname!username@hostname</"
+"b><br>and can contain wildcard characters '*' and '?'. Be careful in "
+"choosing the masks, as they are the only way to verify the identity of a "
+"registered user.<br><br>You can enter at most two masks here, if you wish to "
+"add more masks, use the \"<b>Edit</b>\" button in the Registered Users "
+"dialog. You must enter at least one mask.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:170
+msgid "Step 2: Mask Selection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:182
+msgid ""
+"<p>If you want to store an avatar image for this user, you can set it here. "
+"KVIrc will show the avatar in the userlist next to the user's nickname."
+"<br>An avatar can be in any supported image format (PNG is recommended). "
+"Keep in mind that KVIrc stores avatars in memory and has to resize them to "
+"fit in the userlist, thus it's better to use small, low-resolution images.</"
+"p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:190
+msgid "Store an avatar for this user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:195
+msgid "Step 3: Avatar Selection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:206
+msgid ""
+"<p>If you want to be notified when this user is online or goes offline, you "
+"must specify the list of nicknames that KVIrc will look for.<br><br>You can "
+"enter at most two nicknames here, if you wish to add more nicknames, use the "
+"\"<b>Edit</b>\" button in the Registered Users dialog.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:215
+msgid "Add this user to the notify list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:342
+msgid "Nickname:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:225
+msgid "Nickname 2:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:239
+msgid "Step 4: Notify List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:251
+msgid ""
+"<p>That's it. The user registration has been completed.<br><br>Click "
+"\"<b>Finish</b>\" to close this dialog.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:254
+msgid "Registration Complete"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:695
+msgid "No name specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:209
+msgid "User already registered: found exact name match"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:222
+msgid "Mask %Q is already used to identify user %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:275
+#, fuzzy
+msgid "User not found (%Q)"
+msgstr "Хоста не е намерен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:403
+msgid "No mask specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:524
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:708
+#, fuzzy
+msgid "User %Q not found"
+msgstr "Хоста не е намерен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:355
+msgid "Mask %Q already used to identify user %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:410
+#, fuzzy
+msgid "Mask %Q not found"
+msgstr "Хоста не е намерен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:701
+msgid "No property specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:808
+msgid "Registered users database dump:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:819
+msgid " User: %c%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:823
+msgid " Warning: this user has no registration masks"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:827
+msgid " Mask: %Q!%Q@%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:838
+msgid " Property: %Q=%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:841
+msgid " No properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:847
+#, c-format
+msgid "Total: %d matching users (of %d in the database)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:197
+msgid "Manage Script-Based Addons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1155
+msgid "Configure"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:225
+msgid "Show Help"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:231
+msgid "Uninstall"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:243
+msgid "Install Addon..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:247
+msgid "More Addons..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:333
+msgid "Do you really want to uninstall the addon \"%1\" ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+msgid "Confirm addon uninstallation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:354
+msgid "Please select the addon installation file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:144
+msgid "%cAddon id %Q, version %Q%c"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:145
+msgid "Name: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:67
+msgid "Description: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:152
+#, c-format
+msgid "Total: %d addons installed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:192
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:571
+msgid "Uninstalling existing addon version %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:384
+msgid "The addon \"%1\" does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:238
+msgid "The addon \"%1\" has no configure callback set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:285
+msgid "The addon \"%1\" has no help callback set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:527
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:377
+msgid "Internal error: call a head-shrinker"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:536
+msgid "The specified version \"%Q\" is not a valid version string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:542
+msgid "The specified KVIrc version \"%Q\" is not a valid version string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:548
+msgid ""
+"This KVIrc executable is too old to run this addon (minimum version required "
+"is %Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:553
+msgid "Attempting to register addon \"%Q\" with version %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:565
+msgid ""
+"The script addon \"%Q\" already exists with version %Q which is higher than %"
+"Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:579
+#, fuzzy
+msgid "Script registration failed"
+msgstr "Неуспешно създаване на сокет"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:584
+msgid "Script succesfully registered"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:102
+#, c-format
+msgid "%s (%s) (%s:%u)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:104
+#, c-format
+msgid "%s (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:107
+#, c-format
+msgid "%s (%s:%u)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:109
+#, c-format
+msgid "%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:112
+#, c-format
+msgid "[IDENT]: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:119
+msgid "Shutting down identd service (spontaneous action)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:124
+msgid "Shutting down identd service (requested action)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:225
+msgid "Can't start the ident service : socket() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:231
+msgid "Can't start the ident service : async setting failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:237
+msgid "Can't enable the ident service : can't setup the listen address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:243
+msgid "Can't start the ident service : bind() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:249
+msgid "Can't start the ident service : listen() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:263
+msgid "Can't start the ident service on IpV6 : socket() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:269
+msgid "Can't start the ident service on IpV6 : async setting failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:277
+msgid "Can't enable the ident service on IpV6 : can't setup the listen address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:285
+msgid "Can't start the ident service on IpV6 : bind() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:294
+msgid "Can't start the ident service on IpV6 : listen() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:310
+msgid "Starting identd service (IpV4/V6 on separate namespaces)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:313
+msgid "Starting identd service (IpV4/V6 in IpV6 namespace)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:318
+msgid "Starting identd service (IpV4)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:322
+msgid "Service startup (IpV4)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:412
+#, fuzzy
+msgid "Identd accepting connection"
+msgstr "Изтичане на време за връзка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:435
+msgid "Identd socket error : dropping connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:440
+msgid "Identd connection closed by remote host"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:461
+msgid "Identd processing request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:476
+msgid "Empty request (EOT ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:487
+msgid "Dropping connection (request too long)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:500
+msgid "Timed out while waiting for the request : dropping connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/libkvilinks.cpp:74
+msgid "Links window alread open for this IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:57
+msgid "Request Links"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:70
+msgid "Link"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:71
+msgid "Hops"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:72
+msgid "Description"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:90
+msgid "(None)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:112
+msgid "Sent links request, waiting for reply..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:115
+msgid "Cannot request links: No active connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:128
+msgid "Links cannot be requested: Not connected to a server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:153
+msgid "Links for %Q [IRC Context %u]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:164
+msgid ""
+"<nobr><font color=\"%s\"><b>Links for %Q</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:194
+msgid "Received end of links."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:235
+#, c-format
+msgid ""
+"Broken link: Missing parent (%s) for %s (%d hops): %s (used /LINKS <mask> ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:238
+#, c-format
+msgid "%s: Parent link %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:242
+msgid "Warning: No root link was sent by the server, the stats may be invalid."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:278
+msgid "%c%cLinks for %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts listed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts in the network"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:282
+#, c-format
+msgid "Wildcard servers (hubs?): %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:283
+msgid "Direct links: %d (~%d.%d %)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:284
+msgid "Close links (1 <= hops <= 3): %d (~%d.%d %)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:285
+msgid "Mid-range links (4 <= hops <= 6): %d (~%d.%d %)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:286
+msgid "Distant links (7 <= hops): %d (~%d.%d %)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:287
+#, c-format
+msgid "Broken (unknown) links: %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:288
+#, c-format
+msgid "Maximum links per host: %d [%s]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:289
+#, c-format
+msgid "Total links: %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:290
+#, c-format
+msgid "Maximum hops: %d [%s]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:291
+#, c-format
+msgid "Average hops: ~%d.%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:294
+msgid "Incomplete LINKS result, no stats available"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:747
+msgid "You're not connected to a server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:404
+#, c-format
+msgid "Processing link: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:419
+msgid "Broken message syntax, can't extract hops number, assuming 0"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:86
+msgid "< &Back"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:87
+msgid "&Next >"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:282
+msgid "Finish"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:164
+msgid ""
+"<p><h2>Welcome :)</h2>This is your first time running this version of KVIrc."
+"<br>This wizard will guide you through the few steps required to complete "
+"the setup.<br><br>If you had a previous version of KVIrc installed, no "
+"worries. You will have a chance to preserve the old configuration.</"
+"p><p>Click \"<b>Next</b>\" to proceed.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:176
+msgid "Welcome to KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:187
+msgid ""
+"<p>All of the files in this distribution are covered by the GPL. In human "
+"terms this can be read as follows:<br><ul><li><b>KVIrc is free</b>, use it, "
+"have fun! <b>:)</b></li><li>If you use <b>any</b> part of KVIrc in your own "
+"project, you <b>must</b> release that project under the same license.</li></"
+"ul></p><p>The \"legalese\" version of the license is shown in the box below."
+"</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:203
+msgid ""
+"Oops... can't find the license file.\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:211
+msgid "Dreaded License Agreement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:215
+msgid "KVIrc Setup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:224
+msgid ""
+"<p>Please choose a folder for KVIrc to store its settings and other data, "
+"and another for downloaded files. Make sure that you have permission to "
+"write to both folders.<br><br>The suggested locations are fine in most "
+"cases, so if you don't know what is this about, just click \"<b>Next</b>\"."
+"<br><br>If you had a previous version of KVIrc installed, you can choose the "
+"existing directory for the settings, and your configuration will be "
+"preserved.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:234
+msgid "Application Folders"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:238
+msgid "Store configuration in folder"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:239
+msgid "Use settings folder from previous installation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:251
+msgid "Use new settings folder"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:255
+msgid "Settings folder:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:281
+msgid "Download files to folder:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:304
+msgid "All settings in shared program folder (portable)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:325
+msgid ""
+"Please choose a Nickname.<br><br>Your nickname is the name that other IRC "
+"users will know you by. It can't contain spaces or punctuation. Some IRC "
+"networks will shorten your nickname if it is more than 32 characters long."
+"<br><br>If in doubt, just enter the first nick that comes to mind. You will "
+"be able to change it later in the Identity properties, or with the /NICK "
+"command."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:348
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:353
+msgid "Profile"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:355
+#, fuzzy
+msgid "Real name:"
+msgstr "Неизвестен оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:361
+msgid "Age:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:392
+#, fuzzy
+msgid "Unspecified"
+msgstr "Няма такъв файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:405
+#, fuzzy
+msgid "Location:"
+msgstr "Изтичане на време за връзка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:408
+msgid "Languages:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:491
+msgid ""
+"<p>Here you can choose how much KVIrc will integrate with your system."
+"<br><br>The default settings are fine for most users so if you're in doubt "
+"just click \"<b>Next</b>\" and go to the next screen.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:501
+msgid "Desktop Integration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:504
+msgid "Make KVIrc default IRC client"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:508
+msgid "Create desktop shortcut"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:513
+msgid "Import server list from mIRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:727
+msgid "Choose an Old Configuration Folder - KVIrc Setup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:736
+msgid "Do not overwrite folder? - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:737
+msgid ""
+"A folder %1 seems to be not a valid KVIrc settings folder.Do you want to use "
+"it anyway?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:753
+msgid "Choose a Configuration Folder - KVIrc Setup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:764
+msgid "Choose a Download Folder - KVIrc Setup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:933
+msgid "Abort Setup - KVIrc Setup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:934
+msgid ""
+"You have chosen to abort the setup.<br>KVIrc cannot run until you complete "
+"this procedure.<br><br>Do you really wish to abort?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:965
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:996
+#, c-format
+msgid ""
+"Cannot create directory %s.\n"
+"You may not have write permission for that path. Please go back and choose "
+"another directory."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+msgid "Package saved succesfully"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:80
+msgid "Event"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1046
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:92
+msgid "&Export All To..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:90
+msgid "Edit the event handler name."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:154
+msgid "&Enable Handler"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:158
+msgid "&Disable Handler"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:162
+msgid "Re&move Handler"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:164
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:166
+msgid "&Export Handler To..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:171
+msgid "&New Handler"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:190
+msgid "unnamed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:215
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:250
+msgid "default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:314
+msgid "none"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:318
+#, c-format
+msgid ""
+"\n"
+"\n"
+"\tEvent:\n"
+"\t\t%s\n"
+"\n"
+"\tParameters:\n"
+"%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+msgid "Unable to write to the event file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+msgid "Unable to write to the events file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:486
+msgid "Event Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:77
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:213
+msgid "Item"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:80
+msgid "Submenu"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:83
+msgid "External Menu"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:136
+msgid "Label"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:93
+msgid "### Epilogue ###"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:94
+msgid "Epilogue"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:97
+msgid "### Prologue ###"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:98
+msgid "Prologue"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:198
+msgid "Popup name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:202
+msgid "Test"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:230
+msgid "Text:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:236
+msgid ""
+"<center><b>Visible text</b><br>May contain identifiers that will be "
+"evaluated at popup call time.<br>For labels, this text can contain also "
+"limited HTML tags.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:239
+msgid "Condition:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:245
+msgid ""
+"<center><b>Boolean condition</b><br>Will be evaluated at popup call time in "
+"order to decide if this entry has to be shown.<br>An empty condition "
+"evaluates to true.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:248
+msgid "Icon:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:254
+msgid ""
+"<center><b>Icon identifier</b><br>May be an internal icon ID, an absolute "
+"path or a relative path.<br>Portable scripts should never use absolute paths."
+"</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:257
+msgid "External menu:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:263
+msgid ""
+"<center><b>External menu name</b><br>This allows to nest externally defined "
+"popup menus. The popup menu with the specified name will be looked up at "
+"menu setup time.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:266
+msgid "Item Id:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:273
+msgid ""
+"<center><b>Item id</b><br>This will allow you to use delpopupitem later.</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:386
+msgid "New Separator Below"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:388
+msgid "New Separator Above"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:391
+msgid "New Separator Inside"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:396
+msgid "New Label Below"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:398
+msgid "New Label Above"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:401
+msgid "New Label Inside"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:406
+msgid "New Item Below"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:408
+msgid "New Item Above"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:411
+msgid "New Item Inside"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:416
+msgid "New Menu Below"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:418
+msgid "New Menu Above"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:421
+msgid "New Menu Inside"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:426
+msgid "New External Menu Below"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:428
+msgid "New External Menu Above"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:431
+msgid "New External Menu Inside"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:451
+msgid "&Paste Below"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:456
+msgid "Paste Above"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:461
+msgid "Paste Inside"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:473
+msgid "New Menu Prologue"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:481
+msgid "New Menu Epilogue"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1042
+msgid "Popup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1048
+msgid "&Export selected To..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1099
+msgid "&New Popup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1105
+msgid "Re&move Popup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1112
+msgid "&Export Popup To..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+msgid "Unable to write to the popup file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1382
+msgid "Popup Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:62
+msgid "%cCore action: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:64
+msgid "%cUser action: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:65
+msgid "Label: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:66
+msgid "Category: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:112
+msgid "The action \"%1\" is disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:259
+msgid "The action \"%1\" does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:255
+msgid "The action \"%1\" is a core action and cannot be destroyed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:392
+msgid "The switch -l requires -c"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:409
+msgid "The switch -s requires -w with a combination of flags 'c','x' and 'q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:420
+msgid ""
+"The action \"%1\" is already defined as core action and cannot be overridden"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:116
+msgid "Ops.. internal error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:125
+msgid "Manage File &Transfers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:67
+msgid "Choose Avatar - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:72
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:283
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:358
+msgid "Internal error: I'm not in the user database ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:245
+msgid "Can't set the current avatar to '%Q': failed to start the http transfer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:249
+msgid "Can't set the current avatar to '%Q': can't load the image"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:351
+msgid "Invalid timeout specified, using default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:389
+msgid "Can't add a file offer for file %Q (huh ? file not readable ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:396
+msgid "Added %d secs file offer for file %Q (%Q) and receiver %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:403
+msgid "Notifying avatar '%Q' to %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:55
+msgid "&Execute"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:59
+msgid "Params:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:107
+msgid "Script Tester"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:220
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:413
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:543
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:628
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:765
+msgid "The config file with id '%Q' is not open"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:538
+msgid ""
+"The config file '%Q' has been changed but is opened as read-only: changes "
+"will be lost"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:583
+msgid "The config file with id '%Q' is read only"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:178
+msgid "Colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:255
+msgid "Context sensitive help"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1167
+msgid "&Replace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:268
+msgid "Find & Repalce"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1148
+msgid "Word to Find"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1156
+msgid "Replace with"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1172
+msgid "&Replace in all Aliases"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1176
+msgid "&Findnext"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1181
+msgid "&Replace(WIP)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:227
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:547
+msgid "The specified toolbar doesn't exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:424
+#, fuzzy
+msgid "No action name/index specified"
+msgstr "Няма такъв файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:441
+msgid "The action parameter didn't evaluate to an index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:455
+msgid "The toolbar does not contain the specified item"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:513
+msgid "The action \"%Q\" doesn't exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:31
+msgid "Torrent Client"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:361
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:364
+msgid "Standalone Servers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:112
+msgid ""
+"%Q doesn't look like a servers.ini file.\n"
+"Import failed."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:122
+msgid "Choose a servers.ini file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:146
+msgid "Remote mIRC servers.ini Import Wizard"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:154
+msgid ""
+"<center><b>Welcome!</b><br><br>This wizard will guide you in the process of "
+"downloading a list of IRC servers. Please click \"<b>Next</b>\" to begin the "
+"operation.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:161
+msgid ""
+"<center>Here you can modify the URL that the list will be downloaded from. "
+"In most cases the default URL is acceptable.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:169
+msgid "URL Selection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:173
+msgid "Please wait while the list is being downloaded"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:179
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:195
+msgid "List Download"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:229
+msgid "Failed to start the server list transfer :("
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:245
+msgid "File downloaded: processing ..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:255
+msgid "%1 servers imported succesfully"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:257
+msgid "No servers imported"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:326
+msgid "Import from servers.ini"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:333
+msgid "Import from http://www.mirc.co.uk/servers.ini"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lineedit.cpp:372
+#, fuzzy
+msgid "Unknown echo mode %Q"
+msgstr "Неизвестна команда"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:203
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:359
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:172
+#, fuzzy
+msgid "Widget parameter is not an object"
+msgstr "Десния операнд не е число"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:230
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:250
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:449
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:485
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:177
+msgid "Widget parameter is not a valid object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:95
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:263
+msgid "Widget object required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:151
+#, fuzzy
+msgid "Unknown dock area '%Q'"
+msgstr "Неизвестен оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:321
+#, fuzzy
+msgid "Unknown alignment: '%Q'"
+msgstr "Неизвестна команда"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:373
+#, fuzzy
+msgid "Unknown style: '%Q'"
+msgstr "Неизвестен оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:84
+msgid "the toolbar cannot be a parent-widget!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:93
+msgid "The parent-widget isn't a MainWindow."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:999
+msgid "The array passed as parameter must contain at least 4 elements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1012
+msgid "One of the geometry array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1017
+msgid "One of the geometry array parameters didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:503
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1032
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1500
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1044
+msgid "The first parameter didn't evaluate to an array nor an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1419
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1476
+msgid "The array passed as parameter must contain at least 2 elements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:451
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:486
+msgid "One of the array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:456
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:491
+msgid "One of the array parameters didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:478
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:804
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:993
+msgid "The array passed as parameter must contain at least 3 elements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:551
+#, fuzzy
+msgid "Unknown orientation"
+msgstr "Неизвестна функция"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:789
+msgid "Pixmap or Widget parameter is not an object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:730
+msgid "Widget or Pixmap required "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:852
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:862
+#, fuzzy
+msgid "Invalid mode '%Q'"
+msgstr "Неправилен параметър"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:886
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1701
+msgid "Pixmap parameter is not an object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:891
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1706
+msgid "Pixmap object required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1027
+msgid ""
+"$setGeometry() requires either an array as first parameter or four integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:813
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1002
+msgid "One of the colors array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:818
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1007
+msgid "One of the colors array parameters didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1020
+msgid "A string of 6 digits hex is required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:842
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1031
+msgid "Not an hex digits"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1144
+msgid ""
+"$setForegroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1219
+msgid ""
+"$setBackgroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1426
+msgid "One of the move array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1431
+msgid "One of the move array parameters didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1438
+msgid "$move() requires either an array as first parameter or two integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1483
+msgid "One of the resize array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1488
+msgid "One of the resize array parameters didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1495
+msgid "$resize() requires either an array as first parameter or two integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1528
+#, fuzzy
+msgid "Invalid parameters"
+msgstr "Неправилен параметър"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1560
+msgid "Unknown widget flag '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1592
+#, fuzzy
+msgid "Unknown style '%Q'"
+msgstr "Неизвестен оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1622
+msgid "No Layout associated to the widget "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:117
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:152
+msgid "Can't add a non-widget object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1650
+#, fuzzy
+msgid "Parent must be a widget object"
+msgstr "Не може да изпрати файл с нулева големина"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1715
+msgid "Null mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1740
+#, fuzzy
+msgid "Unknown widget attribute '%Q'"
+msgstr "Неизвестна функция"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:382
+#, fuzzy
+msgid "No such line number"
+msgstr "Няма такъв файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:500
+#, fuzzy
+msgid "Unknown word wrap '%Q'"
+msgstr "Неизвестен оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:519
+msgid "Unknown wrap policy'%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:850
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1039
+msgid "$setColor requires either an array as first parameter or three integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:975
+#, fuzzy
+msgid "Unknown text format '%Q'"
+msgstr "Неизвестна функция"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1071
+#, fuzzy
+msgid " I can't find the specified file '%Q'."
+msgstr "Не може да определи исканият адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1078
+#, fuzzy
+msgid " I cannot read the file %Q'."
+msgstr "Не може да определи исканият адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1113
+#, fuzzy
+msgid "Unknown alignment '%Q'"
+msgstr "Неизвестна команда"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1131
+msgid "Unknown auto formatting mode '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1149
+#, fuzzy
+msgid "Unknown vertical alignment '%Q'"
+msgstr "Неизвестна команда"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:264
+msgid "pix '%Q' doesn't exists"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:276
+#, fuzzy
+msgid "Can't add a non - popupmenu object"
+msgstr "Не може да изпрати файл с нулева големина"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:302
+#, fuzzy
+msgid "Doesn't a widget object"
+msgstr "Не може да изпрати файл с нулева големина"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:182
+#, fuzzy
+msgid "I can't find the specified file %Q."
+msgstr "Не може да определи исканият адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:222
+#, fuzzy
+msgid "Destination parameter is not an object"
+msgstr "Десния операнд не е число"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:228
+#, fuzzy
+msgid "Destination must be a pixmap object"
+msgstr "Десния операнд не е число"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:238
+msgid "Area dimensions are out of destination size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:253
+msgid "Pixmap dimensions are out of destination size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:261
+msgid "Offset width area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:266
+msgid "Offset height area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:121
+msgid "The widget must be a child of this hbox"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:191
+msgid "No string parameter given - using empty string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:194
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:214
+#, c-format
+msgid "Item index [%d] is too big - defaulting to $count() - 1 [%d]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:333
+#, fuzzy
+msgid "Invalid insertion Policy %Q"
+msgstr "Неправилен параметър"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:136
+#, fuzzy
+msgid "Unknown mode "
+msgstr "Неизвестна команда"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:149
+msgid "Unknown segment style "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_process.cpp:221
+msgid "Process could not be starded."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:279
+msgid "Invalid selection mode '%Q' assuming single"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:316
+#, fuzzy
+msgid "Unknown text position '%Q'"
+msgstr "Неизвестна функция"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:256
+#, fuzzy
+msgid "Unknown tickmark '%Q'"
+msgstr "Неизвестна команда"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:271
+#, fuzzy
+msgid "Unknown orientation '%Q'"
+msgstr "Неизвестна функция"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:500
+msgid "No socket object specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:506
+msgid "Invalid socket object specified (it doesn't inherit from socket)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:518
+msgid "There is no connection to accept!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:591
+#, c-format
+msgid "Value %d for port is out of range (values allowed are from 0 to 65535"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:596
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:87
+msgid "Another connection in progress"
+msgstr "Друга връзка е в ход"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:648
+msgid "No IPV6 support in this executable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:670
+#, fuzzy
+msgid "Invalid IP address specified ('%Q')"
+msgstr "Неправилен IP адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:89
+msgid "Socket creation failed"
+msgstr "Неуспешно създаване на сокет"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:706
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:727
+msgid "Invalid socket address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:714
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:735
+msgid "Bind failure"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:745
+msgid "Listen failure"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:812
+msgid "unknown"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:876
+#, fuzzy
+msgid "Invalid ip address "
+msgstr "Неправилен IP адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:882
+#, fuzzy
+msgid "Invalid ip address (%Q)"
+msgstr "Неправилен IP адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:906
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1013
+msgid "Failed to create the socket"
+msgstr "Създаването на сокет пропадна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:918
+msgid "Failed to setup a nonblocking socket"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:939
+#, fuzzy
+msgid "Connect failure: "
+msgstr "Връзката е отхвърлена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:967
+msgid "Connect attempt timed out"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:993
+msgid "Can't start the DNS thread"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:1143
+msgid ""
+"Too much unprocessed incoming data (you've left this socket unmanaged ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:149
+msgid "Error in KVS class implementation: processing aborted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:154
+#, fuzzy
+msgid "Processing aborted"
+msgstr "Изтекло време на операция"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:160
+#, c-format
+msgid "Error near line %d, column %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:162
+#, c-format
+msgid "Warning near line %d, column %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:313
+#, fuzzy
+msgid "XML support not available in the Qt library"
+msgstr "Възможността не е на разположение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:491
+#, fuzzy
+msgid "Not a widget object"
+msgstr "Не може да изпрати файл с нулева големина"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:308
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:497
+#, fuzzy
+msgid "Can't find the tab "
+msgstr "Не може да определи исканият адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:522
+#, fuzzy
+msgid "Unknown position 'Q%'"
+msgstr "Неизвестна функция"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:123
+msgid "The widget must be a child of this vbox"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:276
+#, fuzzy
+msgid "Not Enough Parameters"
+msgstr "Няма достатъчно параметри"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:142
+msgid "The listviewitem cannot be parentless"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:152
+msgid ""
+"The parent of the listviewitem must be either another listviewitem or a "
+"listview"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:403
+msgid "Pixmap object or image Id required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:413
+msgid ""
+"Error occured: the suitable file '%Q' is not of the correct format or it is "
+"not a valid icon number."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:151
+msgid ""
+"The window identifier preceeded by WinId must be the first object in the "
+"search path"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:167
+#, fuzzy
+msgid "Failed to find one of the wrap path widgets (%Q::%Q)"
+msgstr "Не може да определи исканият адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:176
+#, fuzzy
+msgid "Failed to find the widget to wrap"
+msgstr "Не може да определи исканият адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:119
+msgid "The parent of a layout must be a widget!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:269
+msgid "Invalid resize mode defaulting to Auto"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:324
+#, fuzzy
+msgid "Unknown alignment"
+msgstr "Неизвестна команда"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:373
+#, fuzzy
+msgid "Unknown orientation: "
+msgstr "Неизвестна функция"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listview.cpp:320
+#, fuzzy
+msgid "Invalid selection mode '%Q'"
+msgstr "Неправилен параметър"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tbrowser.cpp:99
+#, fuzzy
+msgid "I can't find the specified file '%Q'."
+msgstr "Не може да определи исканият адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:121
+#, fuzzy
+msgid "Can't add a null object"
+msgstr "Не може да изпрати файл с нулева големина"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:128
+msgid ""
+"Invalid object handle passed as parameter (the object is no longer "
+"existing ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:134
+msgid "Object in invalid state"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:140
+msgid "Can't set a non-widget object to be the main widget of a dock window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:146
+msgid "The added widget is not a child of this dock window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:271
+#, fuzzy
+msgid "Invalid dock area specified"
+msgstr "Неправилен порт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:181
+msgid "Class '%Q' is not definited"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:257
+msgid "Inexisting target object for objects.connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:262
+msgid "Inexisting source object for objects.connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:444
+msgid "The class '%Q' does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:404
+msgid "Object does not exists"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:557
+msgid "Inexisting target object for objects.disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:562
+msgid "Inexisting source object for objects.disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:608
+#, fuzzy
+msgid "Source is not an object"
+msgstr "Десния операнд не е число"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:614
+#, fuzzy
+msgid "Destination is not an object"
+msgstr "Десния операнд не е число"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:625
+msgid "Widget, Image or Pixmap required "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:635
+msgid "Widget or Pixmap required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:714
+msgid "One o more of background, foreground or destination aren't objects"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:720
+#, fuzzy
+msgid "Pixmap objects required"
+msgstr "Хоста не е намерен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:743
+msgid "Values for background are out of image size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:748
+msgid "Values for foreground are out of image size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:226
+msgid "Empty filename string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:271
+#, fuzzy
+msgid "No such open mode: '%Q'"
+msgstr "Няма такъв обект"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:312
+msgid "File is not open!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:348
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:406
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:434
+msgid "File is not open !"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:369
+msgid "Argument to long, using only first char"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:339
+msgid "Write error occured !"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:352
+msgid "Read error occured !"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:371
+msgid "An error occured !"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:387
+msgid "Missing both encrypt and decrypt key: at least one is needed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:168
+msgid "Error 0: Success ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:169
+msgid "Unsupported crypt mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:170
+msgid "Unsupported direction"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:171
+msgid "Unsupported key length"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:172
+msgid "Bad key data"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:173
+msgid "Engine not initialized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:174
+msgid "Invalid direction for this engine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:175
+msgid "Corrupted message data or invalid decrypt key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:52
+msgid "Unknown error"
+msgstr "Неизвестна грешка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:184
+msgid "Ops...encrypt cipher not initialized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:420
+msgid "Data buffer too long"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:221
+msgid "Ops...decrypt cipher not initialized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:277
+msgid "The message is not a hexadecimal string: this is not my stuff"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:671
+msgid "The message is not a base64 string: this is not my stuff"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:676
+msgid "The message doesn't seem to be encoded with CBC Mircryption"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:712
+#, c-format
+msgid ""
+"Cryptographic engine based on the\n"
+"Advanced Encryption Standard (AES)\n"
+"algorithm called Rijndael.\n"
+"The text is first encrypted with rijndael\n"
+"and then converted to %s notation.\n"
+"The keys used are %d bit long and will be padded\n"
+"with zeros if you provide shorter ones.\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"See the rijndael module documentation\n"
+"for more info on the algorithm used.\n"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:739
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:749
+msgid "hexadecimal"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:759
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:779
+msgid "base64"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:790
+msgid ""
+"Popular cryptographic engine based on the\n"
+"old Blowfish encryption algorithm.\n"
+"The text is first encrypted with Blowfish \n"
+"and then converted to base64 notation.\n"
+"The keys used have variable length and\n"
+"are specified as character strings.\n"
+"You can specify keys long up to 56 bytes (448 bits).\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"This engine works in ECB mode by default:\n"
+"if you want to use CBC mode you must prefix\n"
+"your key(s) with \"cbc:\".\n"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:61
+msgid "Drop here the icons from the toolbars to remove them"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:128
+msgid "ToolBar Properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:144
+msgid "Icon"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:160
+msgid "Id"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:217
+msgid "Please choose the icon for the ToolBar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+#, fuzzy
+msgid "Invalid ToolBar Label"
+msgstr "Неправилен порт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "The ToolBar Label can't be empty!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:256
+msgid "Duplicate ToolBar Id"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:257
+msgid ""
+"The specified ToolBar Id already exists.<br>Would you like KVIrc to assign "
+"it automatically (so it doesn't collide with any other toolbar) or you "
+"prefer to do it manually ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Manually"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Automatically"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:278
+msgid "Hide Advanced"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:287
+msgid "Customize Toolbars"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:296
+msgid "New ToolBar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:300
+msgid "Delete ToolBar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:304
+msgid "Edit ToolBar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:312
+msgid "Export ToolBar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:373
+msgid "Confirm ToolBar Deletion"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:374
+msgid "Do you really want to delete toolbar \"%1\" ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:397
+msgid "ToolBar Export"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:398
+msgid "Do you want the associated actions to be exported with the toolbar ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+msgid "Unable to write to the toolbar file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:465
+msgid "Please specify the properties for the toolbar \"%1\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:491
+msgid "Please specify the properties for the new toolbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:493
+msgid "My ToolBar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:63
+msgid "Window with ID '%Q' not found"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:67
+msgid "The specified window (%Q) is not a channel/query/DCC chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:108
+msgid "File not found or empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:114
+msgid "I can't open that file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:122
+msgid "Could not paste file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:218
+msgid "The specified window (%Q) is not a channel/query/dcc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:271
+msgid "Slow-paste ID:%d Window:%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:240
+msgid "Plugin not found. Please check the plugin-name and path."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:247
+#, fuzzy
+msgid "Error while loading plugin."
+msgstr "Грешка при зареждане на модула"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:311
+msgid "This plugin does not export the desired function."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:327
+msgid ""
+"The plugin has no function to free memory. This can result in Memory Leaks!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:209
+#, c-format
+msgid "No environment variable found, please don't use the %% in the request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:482
+#, fuzzy
+msgid "Invalid DCOP parameter syntax"
+msgstr "Неправилен параметър"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:495
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:516
+msgid "The specified parameter is not an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:521
+#, fuzzy, c-format
+msgid "Unsupported DCOP parameter type %s"
+msgstr "Неподдържан протокол %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:534
+msgid "DCOP call failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:599
+msgid "DCOP calls are available only when KDE support is compiled in"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1408
+#, c-format
+msgid "The window with id '%s' does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:851
+msgid "Window type or 'all' expected as first parameter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:938
+#, fuzzy
+msgid "Invalid IRC context id '%Q'"
+msgstr "Неправилен параметър"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1045
+msgid "The specified IRC context is not valid: creating a context free window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1119
+msgid "The specified window is not of type \"userwnd\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1208
+msgid "Window doesn't have input widget"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1363
+msgid "The encrypt key wasn't a valid hexadecimal string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1377
+msgid "The decrypt key wasn't a valid hexadecimal string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1414
+msgid "Both -n and -m switchess specified, -n takes precedence"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1424
+msgid "No encrypt key specified: can't allocate engine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1446
+#, fuzzy
+msgid "Unknown engine error"
+msgstr "Неизвестна грешка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1449
+#, fuzzy
+msgid "Failed to initialize the specified crypt engine: %Q"
+msgstr "Създаването на сокет пропадна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1453
+msgid "The crypt engine \"%Q\" does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1458
+#, fuzzy
+msgid "This executable has been compiled without crypt support"
+msgstr "Така конфигурираното приложение не поддъжа IPV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:138
+msgid "Current window is not a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:87
+msgid "Raw Event"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:97
+msgid "Edit the raw event handler name."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:179
+msgid "&Add Raw Event..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "New Raw Event"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "Enter the numeric code of the message (0-999)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+msgid "Unable to write to the raw event file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Unable to write to the raw events file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:512
+msgid "Raw Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:219
+msgid "A really lame text transformation engine :D"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:229
+msgid "A really lame text transformation engine: Light Version."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:82
+#, c-format
+msgid "Socket Spy [IRC Context %u]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:92
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Socket Spy</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:112
+msgid "Socket open"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:117
+msgid "Socket closed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:149
+msgid "Internal unique name for the action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:151
+msgid "Label:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:155
+msgid ""
+"Visible name for this action.<br>This string will be displayed to the user "
+"so it is a good idea to use $tr() here"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:166
+msgid "Action code"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:168
+msgid "Code"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:174
+msgid "Category:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:178
+msgid "Choose the category that best fits for this action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:180
+msgid "Description:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:184
+msgid ""
+"Visible short description for this action.<br>This string will be displayed "
+"to the user so it is a good idea to use $tr() here"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:186
+msgid "Small Icon:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:194
+msgid ""
+"The small icon associated to this action.<br>It will appear at least in the "
+"popup menus when this action is inserted.<br>It should be 16x16 pixels."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:200
+msgid "Big Icon:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:209
+msgid ""
+"The big icon associated to this action.<br>It will appear at least in the "
+"toolbar buttons when this action is inserted.<br>It should be 32x32 pixels."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:215
+msgid "Key Sequence:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:219
+msgid ""
+"Optional keyboard sequence that will activate this action.<br>The sequence "
+"should be expressed as a string of up to four key codes separated by commas "
+"eventually combined with the modifiers \"Ctrl\",\"Shift\",\"Alt\" and \"Meta"
+"\".<br>Examples of such sequences are \"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl+X,"
+"Ctrl+C\" ..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:240
+msgid "Needs IRC Context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:242
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window belongs to an irc context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:250
+#, fuzzy
+msgid "Needs IRC Connection"
+msgstr "Изтичане на време за връзка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:252
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window has an active IRC connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:260
+msgid "Enable at Login"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:261
+msgid ""
+"Check this option if this action should be enabled also during the login "
+"operations (so when the logical IRC connection hasn't been estabilished yet)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:265
+msgid "Enable Only in Specified Windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:267
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is of a specified type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:271
+msgid "Enable in Console Windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:272
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a console"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:277
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:299
+msgid "Only If There Are Selected Users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:278
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:300
+msgid ""
+"This will enable the action only if there are selected users in the active "
+"window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:282
+msgid "Enable in Channel Windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:283
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:293
+msgid "Enable in Query Windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:294
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:304
+msgid "Enable in DCC Chat Windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:305
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a dcc chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:627
+msgid "Action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:680
+#, fuzzy
+msgid "New Action"
+msgstr "Директория"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:683
+msgid "Delete Actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:686
+msgid "Export Actions..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Unable to write to the actions file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:823
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:824
+msgid "My Action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:825
+msgid "Put here a short description of your action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:925
+msgid "Action Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:938
+msgid "Apply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:63
+msgid "Outgoing traffic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:67
+msgid "Incoming traffic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_crypt.cpp:160
+msgid "Invalid crypt engine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:296
+msgid "Directory"
+msgstr "Директория"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:315
+msgid "Socket"
+msgstr "Сокет"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:332
+msgid "Fifo"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:349
+msgid "Block device"
+msgstr "Блоково устройство"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:366
+msgid "Char device"
+msgstr "Знаково устройство"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:429
+msgid "Octet stream (unknown)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_osinfo.cpp:413
+#, fuzzy
+msgid "Unknown "
+msgstr "Неизвестна грешка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:181
+msgid "The specified network has no server entries"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:239
+msgid ""
+"The server specification seems to be in the net:<string> but the network "
+"couln't be found in the database"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:261
+msgid ""
+"The server specification seems to be in the id:<string> form but the "
+"identifier coulnd't be found in the database"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:71
+msgid "Aborted"
+msgstr "Прекъснат"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:96
+msgid "No request"
+msgstr "Няма искане"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:141
+msgid "No filename specified for the \"StoreToFile\" processing type"
+msgstr "Не е указано има не файл при \"Запазване във файл\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:160
+msgid "Invalid URL: Missing hostname"
+msgstr "Неправилен УРЛ: Липсва име"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:167
+#, fuzzy
+msgid "Unsupported protocol %1"
+msgstr "Неподдържан протокол %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:189
+msgid "Unable to start the DNS lookup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:194
+#, c-format
+msgid "Looking up host %s"
+msgstr "Търсене на хост %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:210
+#, fuzzy
+msgid "Host %s resolved to %Q"
+msgstr "Няма сървър за връзка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:246
+msgid "Unable to start the request slave thread"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:251
+#, fuzzy
+msgid "Contacting host %Q on port %u"
+msgstr "Свързване с компютър %s на порт %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:271
+msgid "Connection established, sending request"
+msgstr "Връзката е установена, изпращане на искане"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:322
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:51
+msgid "Success"
+msgstr "Успешно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:429
+msgid "Failed to rename the existing file, please rename manually and retry"
+msgstr ""
+"Невъзможно е преименоването на съществуващ файл, моля преименовайте го ръчно "
+"и повторете"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:447
+#, fuzzy
+msgid "Can't open file \"%Q\" for writing"
+msgstr "Не може да отвори файл \"%s\" за запис"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:497
+#, c-format
+msgid "Invalid HTTP response: %s"
+msgstr "Неправилен HTTP отговор: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:503
+#, c-format
+msgid "Received HTTP response: %s"
+msgstr "Получаване на HTTP отговор: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:628
+msgid "Stream exceeding maximum length"
+msgstr "Потока превишава максималната дължина"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:661
+msgid "Header too long: exceeded 4096 bytes"
+msgstr "Заглавието е твърде дълго: очаквани 4096 байта"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:710
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:852
+msgid "Stream exceeded expected length"
+msgstr "Потока превишава очакваната дължина"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:798
+msgid "Protocol error: invalid chunk size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:818
+#, fuzzy
+msgid "Chunk header too long: exceeded 4096 bytes"
+msgstr "Заглавието е твърде дълго: очаквани 4096 байта"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:987
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1193
+msgid "Operation timed out"
+msgstr "Изтекло време на операция"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1003
+#, fuzzy
+msgid "Unexpected SSL error"
+msgstr "Неочакван знак"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1016
+msgid "Failed to enter non blocking mode"
+msgstr "Влизането в неблокиращ режим пропадна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1021
+msgid "Invalid target address"
+msgstr "Неправилен адрес на целта"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1056
+#, fuzzy
+msgid "Failed to initialize the SSL context"
+msgstr "Създаването на сокет пропадна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1058
+#, fuzzy
+msgid "Failed to initialize the SSL connection"
+msgstr "Създаването на сокет пропадна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1075
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:99
+msgid "Remote end has closed the connection"
+msgstr "Отдалечената страна прекъсна връзката"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1087
+#, fuzzy
+msgid "Unrecoverable SSL error during handshake"
+msgstr "Невъзстановена грешка на сървъра на имена (срив?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1272
+msgid "Operation timed out (while selecting for read)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1382
+#, fuzzy
+msgid "This KVIrc executable has no SSL support"
+msgstr "Така конфигурираното приложение не поддъжа IPV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1147
+msgid "Back"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:268
+msgid "Next"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:168
+msgid "%1 bytes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:172
+msgid "%1 KB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:176
+msgid "%1 MB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:181
+msgid "%1 GB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:185
+msgid "%1 TB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:620
+msgid "Internal error"
+msgstr "Вътрешна грешка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:54
+msgid "Unknown command"
+msgstr "Неизвестна команда"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:55
+msgid "Missing closing brace"
+msgstr "Липсва затваряща скоба"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:56
+msgid "Unexpected end of command in string"
+msgstr "Неочавакван край на команда"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:57
+msgid "Unexpected end of command in dictionary key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:58
+msgid "Switch dash without switch letter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:59
+msgid "Unknown function"
+msgstr "Неизвестна функция"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:60
+msgid "Unexpected end of command in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:61
+msgid "Unexpected end of command in function parameters"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:62
+msgid "Missing variable name"
+msgstr "Липсва име на променлива"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:63
+msgid "Variable or identifier expected"
+msgstr "Очакване на променлива или идентификатор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:64
+msgid "Left operand is not a number"
+msgstr "Левия операнд не е число"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:65
+msgid "Multiple operations not supported for numeric operators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:67
+msgid "Modulo by zero"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:68
+msgid "Right operand is not a number"
+msgstr "Десния операнд не е число"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:69
+msgid "Unterminated expression (missing ')' ?)"
+msgstr "Незавършен израз (липсва ')'?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:70
+msgid "Unterminated subexpression (Parenthesis mismatch)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:71
+msgid "Unexpected character"
+msgstr "Очаква знак"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:73
+msgid "No host to resolve"
+msgstr "Няма сървър за връзка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:74
+msgid "(DNS Internal) Unsupported address family"
+msgstr "(Вътрешен DNS) Неподдържана фамилия адреси"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:75
+msgid "Valid name but the host has no IP address"
+msgstr "Валидно име но машината няма IPадрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:76
+msgid "Unrecoverable nameserver error (crashed ?)"
+msgstr "Невъзстановена грешка на сървъра на имена (срив?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:77
+msgid "Dns temporaneous fault (try again)"
+msgstr "DNS временно не работи (опитване отново)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:78
+msgid "(DNS Internal) Bad flags"
+msgstr "(Вътрешен DNS) Лоши флагове"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:79
+msgid "(DNS Internal) Out of memory"
+msgstr "(Вътрешен DNS) Извън паметта"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:80
+msgid "(DNS Internal) Service not supported"
+msgstr "(Вътрешен DNS) Услугата не се поддържа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:81
+msgid "Unknown node (host not found)"
+msgstr "Неизвестен възел (машината не е намерена)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:82
+msgid "(DNS Internal) Unsupported socket type"
+msgstr "(Вътрешен DNS) Неподдържан сокет вид"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:83
+msgid "Dns query failed"
+msgstr "DNS заявката пропадна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:84
+msgid "This KVIrc executable has no IPV6 support"
+msgstr "Така конфигурираното приложение не поддъжа IPV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:85
+msgid "Host not found"
+msgstr "Хоста не е намерен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:86
+msgid "(DNS Internal) IPC failure (slave data corrupted)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:88
+msgid "Invalid IP address"
+msgstr "Неправилен IP адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:90
+msgid "Failed to put the socket in non blocking mode"
+msgstr "Неуспех при поставянето на сокета в неблокиращ режим"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:91
+msgid "Bad file descriptor"
+msgstr "Лош дескриптор на файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:92
+msgid "Out of address space"
+msgstr "Извън адресното пространство"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:93
+msgid "Connection refused"
+msgstr "Връзката е отхвърлена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:94
+msgid "Kernel networking panic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:95
+msgid "Connection timed out"
+msgstr "Изтичане на време за връзка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:96
+msgid "Network is unreachable"
+msgstr "Мрежата е недостъпна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:97
+msgid "Broken pipe"
+msgstr "Разрушен канал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:98
+msgid "Invalid proxy address"
+msgstr "Грешен прокси адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:100
+msgid "Invalid irc context id"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:101
+msgid "Error in loading module"
+msgstr "Грешка при зареждане на модула"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:102
+msgid "No such module command"
+msgstr "Няма такава команда на модул"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:103
+msgid "No such module function"
+msgstr "Няма таква функция на модул"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:104
+msgid "Left operand is not a dictionary reference"
+msgstr "Левия операнд не се отнася към речника"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:105
+msgid "Right operand is not a dictionary reference"
+msgstr "Десния операнд не се отнася към речника"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:106
+msgid "Missing object class name"
+msgstr "Липсва име на клас на обект"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:107
+msgid "No such object class"
+msgstr "Никакъв такъв клас на обект"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:108
+msgid "No such object"
+msgstr "Няма такъв обект"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:109
+msgid "No such object function"
+msgstr "Няма таква функция на обект"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:110
+msgid "Invalid left operand"
+msgstr "Левия операнд е грешен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:111
+msgid "Not enough parameters"
+msgstr "Няма достатъчно параметри"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:112
+msgid "Integer parameter expected"
+msgstr "Очкване на цял параметър"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:113
+msgid "Invalid parameter"
+msgstr "Неправилен параметър"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:114
+msgid "No such file"
+msgstr "Няма такъв файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:115
+msgid "Open parenthesis expected"
+msgstr "Очанване на отваряща кръгла скоба"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:116
+msgid "Open brace expected"
+msgstr "Очанване на отваряща фигурна скоба"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:117
+msgid "Can't kill a builtin class"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:118
+msgid "The SOCKSV4 protocol lacks IpV6 support"
+msgstr "В протокола SOCKSV4 липсва поддръжка на IpV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:119
+msgid "Unrecognized proxy reply"
+msgstr "Непознат отговор от прокси"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:120
+msgid "Proxy response: auth failed: access denied"
+msgstr "Отговор на прокси: удостоверяването пропадна: достъпът отказан"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:121
+msgid "Proxy response: No acceptable auth method: request rejected"
+msgstr ""
+"Отговор на прокси: Неприемлив метод на удостоверяване: заявката е отхвърлена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:122
+msgid "Proxy response: request failed"
+msgstr "Отговор на прокси: искането се провали"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:123
+msgid "Proxy response: ident failed"
+msgstr "Отговор на прокси: идентификацията пропадна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:124
+msgid "Proxy response: ident not matching"
+msgstr "Отговор на прокси: идентификацията не съответства"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:125
+msgid "Proxy response: general SOCKS failure"
+msgstr "Отговор на прокси: общ провал на SOCKS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:126
+msgid "Proxy response: connection not allowed"
+msgstr "Отговор на прокси: връзката не е позволена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:127
+msgid "Proxy response: network unreachable"
+msgstr "Отговор на прокси: мрежата е недостъпна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:128
+msgid "Proxy response: host unreachable"
+msgstr "Отговор на прокси: компютъра е недостъпен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:129
+msgid "Proxy response: connection refused"
+msgstr "Отговор на прокси: връзката е отказана"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:130
+msgid "Proxy response: TTL expired"
+msgstr "Отговор на прокси: изтекло TTL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:131
+msgid "Proxy response: command not supported"
+msgstr "Отговор на прокси: командата не се поддържа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:132
+msgid "Proxy response: address type not supported"
+msgstr "Отговор на прокси: вида на адреса не се поддържа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:133
+msgid "Proxy response: invalid address"
+msgstr "Отговор на прокси: неправилен адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:134
+msgid "Invalid port number"
+msgstr "Неправилен порт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:135
+msgid "Socket not connected"
+msgstr "Сокета не е свързан"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:136
+msgid "Insufficient resources to complete the operation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:137
+msgid "Can't setup a listening socket : bind failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:138
+msgid "Can't resolve the localhost name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:139
+msgid "Unsupported image format"
+msgstr "Неподдържан формат на картинки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:140
+msgid "Can't open file for appending"
+msgstr "Не може да отвори файл за прикрепяне"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:542
+msgid "Can't open file for writing"
+msgstr "Не може да отвори файл за запис"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:142
+msgid "File I/O error"
+msgstr "Входно/изходна грешка на файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:143
+msgid "Acknowledge error"
+msgstr "Потвърдете грешка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:982
+msgid "Can't open file for reading"
+msgstr "Не може да отвори файл за четене"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:145
+msgid "Can't send a zero-size file"
+msgstr "Не може да изпрати файл с нулева големина"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:146
+msgid "Missing popup name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:147
+msgid "'item', 'popup', 'label' or 'separator' keyword expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:148
+msgid "Self modification not allowed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:149
+msgid "UNUSED"
+msgstr "НЕИЗПОЛЗВАН"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:150
+msgid "Feature not available"
+msgstr "Възможността не е на разположение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:151
+msgid "Unexpected characters in array index"
+msgstr "Очакване на символ в списъка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:152
+msgid "Unexpected end in expression"
+msgstr "Очакване на край на израза"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:153
+msgid "Unexpected end in array index"
+msgstr "Очакване на край на списъка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:154
+msgid "Connection thru HTTP proxy failed"
+msgstr "Връзката през HTTP прокси пропадна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:155
+msgid "Case , match , regexp , default or break keyword expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:156
+msgid "Access denied"
+msgstr "Достъпът е отказан"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:157
+msgid "Address already in use"
+msgstr "Адресът вече се използва"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:158
+msgid "Can't assign the requested address"
+msgstr "Не може да определи исканият адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:159
+msgid "Connection reset by peer"
+msgstr "Връзката е прекъсната "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:160
+msgid "Host unreachable (no route to host)"
+msgstr "Компютъра е недостъпен (няма път до хоста)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:161
+msgid "Variable expected"
+msgstr "Очаване на променлива"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:162
+msgid "Invalid array index: positive integer expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:163
+msgid "listen() call failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:164
+msgid "This executable has been compiled without SSL support"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:165
+msgid "Secure Socket Layer error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:166
+msgid "Slash (/) character expected"
+msgstr "Очакване на наклонена черта (/)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:167
+msgid "Unknown string manipulation operation"
+msgstr "Неизвестна операция за обработка на стринг"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:168
+#, fuzzy
+msgid "Operation aborted"
+msgstr "Изтекло време на операция"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:169
+msgid "Unexpected token"
+msgstr "Неочакван знак"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:170
+msgid "Scope object already defined (unexpected @)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:171
+msgid "There is no $this pointer in this scope (unexpected @)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:140
+#, fuzzy
+msgid "Operation cancelled"
+msgstr "Изтекло време на операция"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:170
+#, fuzzy
+msgid "File write error"
+msgstr "Входно/изходна грешка на файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:176
+#, fuzzy
+msgid "File read error"
+msgstr "Входно/изходна грешка на файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:324
+msgid "Packaging file %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:779
+#, fuzzy
+msgid "Failed to open a source file for reading"
+msgstr "Не може да отвори файл за четене"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:817
+msgid "Compression library initialization error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:394
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:828
+msgid "Compression library error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:465
+msgid "Compression library internal error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:485
+msgid "Error while compressing a file stream"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:526
+msgid "Creating package..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:527
+msgid "Writing package header"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:571
+msgid "Writing informational fields"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:597
+msgid "Writing package data"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:659
+msgid "The file specified is not a valid KVIrc package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:668
+msgid ""
+"The package has an invalid version number, it might have been created by a "
+"newer KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:714
+msgid "Invalid info field: the package is probably corrupt"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:745
+msgid ""
+"The package contains compressed data but this executable does not support "
+"compression"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:771
+#, fuzzy
+msgid "Failed to create the target directory"
+msgstr "Създаването на сокет пропадна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:784
+msgid "Unpacking file %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:916
+msgid "Error in compressed file stream"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:990
+msgid "Reading package..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:991
+msgid "Reading package header"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:998
+msgid "Reading package data"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:1017
+msgid "Invalid data field: the package is probably corrupt"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1127
+msgid "Select color"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1128
+msgid "&Basic colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1129
+msgid "&Custom colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1130
+msgid "&Red"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1131
+msgid "&Green"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1132
+msgid "Bl&ue"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1133
+msgid "&Define Custom Colors >>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1134
+msgid "&Add to Custom Colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1136
+msgid "Select Font"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1137
+msgid "&Font"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1138
+msgid "Font st&yle"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1139
+msgid "&Size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1140
+msgid "Sample"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1141
+msgid "Effects"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1142
+msgid "Stri&keout"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1143
+msgid "&Underline"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1144
+msgid "Scr&ipt"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1146
+#, fuzzy
+msgid "Parent Directory"
+msgstr "Директория"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1148
+msgid "Forward"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1149
+msgid "Reload"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1150
+#, fuzzy
+msgid "New Directory"
+msgstr "Директория"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1151
+msgid "Bookmarks"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1152
+msgid "Add Bookmark"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1153
+msgid "&Edit Bookmarks"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1154
+msgid "New Bookmark Folder..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1156
+msgid "Sorting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1157
+msgid "By Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1158
+msgid "By Date"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1159
+msgid "By Size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1160
+msgid "Reverse"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1161
+#, fuzzy
+msgid "Directories First"
+msgstr "Директория"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1162
+msgid "Case Insensitive"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1163
+msgid "Short View"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1164
+msgid "Detailed View"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1165
+msgid "Show Hidden Files"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1166
+msgid "Show Quick Access Navigation Panel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1167
+msgid "Show Preview"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1168
+msgid "Separate Directories"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1169
+msgid "Often used directories"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1170
+msgid "Desktop"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1171
+#, fuzzy
+msgid "Home Directory"
+msgstr "Директория"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1172
+msgid "Floppy"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1173
+msgid "Temporary Files"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1174
+msgid "Network"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1175
+#, fuzzy
+msgid "New Directory..."
+msgstr "Директория"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1176
+msgid "Delete"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1177
+msgid "Thumbnail Previews"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1178
+msgid "Large Icons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1179
+msgid "Small Icons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1180
+msgid "Properties..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1181
+msgid "&Automatic Preview"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1182
+msgid "&Preview"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1183
+msgid "&Location:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1184
+msgid "&Filter:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1185
+msgid "All Files"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:104
+msgid "- d -- h -- m -- s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:111
+#, c-format
+msgid "%u h %u m %u s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:113
+#, c-format
+msgid "%u h %u%u m %u%u s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:118
+#, c-format
+msgid "%u m %u s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:120
+#, c-format
+msgid "%u m %u%u s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:122
+#, c-format
+msgid "%u s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:127
+#, c-format
+msgid "%u d %u h %u m %u s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:129
+#, c-format
+msgid "%u d %u%u h %u%u m %u%u s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+msgid "Usage"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+msgid "message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:99
+msgid "-m: send a message instead of a notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:100
+msgid "-w: send notice to all channel owners"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:101
+msgid "-a: send notice to all channel admins"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:102
+msgid "-o: send notice to all channel ops"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:103
+msgid "-h: send notice to all channel halfops"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:104
+msgid "-v: send notice to all channel voices"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:105
+msgid "-q: quiet mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:138
+msgid "Sending wallop to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:314
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:410
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:493
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:535
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:593
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:653
+msgid "Usage:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:223
+msgid "reason"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:272
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:416
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:440
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:599
+msgid "This is not a channel window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:581
+#, fuzzy
+msgid "Unsupported type: $0"
+msgstr "Неподдържан протокол %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:604
+#, fuzzy
+msgid "Channel Owner"
+msgstr "Неизвестен оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:606
+#, fuzzy
+msgid "Channel Administrator"
+msgstr "Неизвестен оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:608
+#, fuzzy
+msgid "Channel Operator"
+msgstr "Неизвестен оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:610
+#, fuzzy
+msgid "Half Operator"
+msgstr "Неизвестен оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:612
+msgid "Voice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:614
+#, fuzzy
+msgid "User Operator"
+msgstr "Неизвестен оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:616
+msgid "Normal User"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:641
+msgid "You must use DNS in an IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:647
+#, fuzzy
+msgid "You must be connected to a server"
+msgstr "Сокета не е свързан"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:664
+#, fuzzy
+msgid "No such user: $0"
+msgstr "Няма такъв файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:33
+msgid "The default script has been successfully installed."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:34
+msgid "To connect to a server, type /server <server name>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:36
+msgid "Happy ircing :)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:15
+msgid "Options"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:40
+#, fuzzy
+msgid "Window operations"
+msgstr "Неизвестен оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMENAME@"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMEDESCRIPTION@"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:18
+msgid "Stop Highlighting (Local)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:23
+msgid "Start Highlighting (Local)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:28
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:61
+msgid "Always Highlight"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:30
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:55
+msgid "Highlight as"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:66
+msgid "Stop Highlighting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:82
+msgid "is being ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:87
+msgid "is not being ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:93
+msgid "Enable Ignore"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:98
+msgid "Ignore as..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:240
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:282
+msgid "Ignore as"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:290
+msgid "Unignore"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:308
+msgid "is registered as"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:311
+msgid "is in the notify list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:314
+msgid "has a default avatar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:317
+msgid "is not registered"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:323
+msgid "Register"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:328
+msgid "Quick Registration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:330
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:355
+msgid "Register as"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:361
+#, fuzzy
+msgid "Edit Registration"
+msgstr "Неуспешно създаване на сокет"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:366
+msgid "Unregister"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:373
+msgid "Add to Notify"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:378
+msgid "Remove from Notify"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:385
+msgid "Choose"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:387
+msgid "Choose Avatar Image File"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:396
+msgid "Set as Default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:401
+msgid "Clear Default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:412
+msgid "Copy To Clipboard"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:433
+msgid "Ban"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1037
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1084
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1224
+msgid "Multiple Users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:577
+msgid "&Ban"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1089
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1229
+msgid "idle time"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:758
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1236
+msgid "&Information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1115
+msgid "DNS for"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:499
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1120
+msgid "Mask for"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:505
+msgid "&Control"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:509
+msgid "O&wner"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:514
+msgid "&Deowner"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:519
+msgid "&Administrator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:524
+msgid "&Deadministrator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:529
+msgid "&Op"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:534
+msgid "&Deop"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:539
+msgid "&Halfop"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:544
+msgid "&Dehalfop"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:549
+msgid "&Voice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:554
+msgid "D&evoice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:561
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "&Kick"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+msgid "K&ick"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "With..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Kick Reason"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Enter a kick reason"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "Kick/Ban"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Kick/Ban Reason"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Enter a kick/ban reason"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "&Kick/Ban"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:604
+msgid "Configure ban mask..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:612
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1263
+msgid "&Query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:625
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1136
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1276
+msgid "&Registration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1278
+msgid "&Highlight"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:629
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1280
+msgid "Ig&nore"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:726
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1050
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1138
+msgid "Notify Avatar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:705
+msgid "&Part"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:664
+msgid "Copy Channel Address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:749
+msgid "Channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:693
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:753
+msgid "&Join Channels..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:700
+msgid "&Hop"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:733
+msgid "Copy Channel URL to Clipboard"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:782
+#, fuzzy
+msgid "l (Connections)"
+msgstr "Изтичане на време за връзка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:787
+msgid "m (Command Usage)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:792
+#, fuzzy
+msgid "o (Operators)"
+msgstr "Неизвестен оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:797
+#, fuzzy
+msgid "t (Connection stats ?)"
+msgstr "Изтичане на време за връзка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:802
+msgid "u (Uptime)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:807
+msgid "y (y-Lines)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:812
+msgid "z (Debug Stats?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:909
+msgid "Chat with"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:914
+msgid "Reverse Chat with"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:919
+msgid "Secure Chat with"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:926
+msgid "Send to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:931
+msgid "Secure send to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:936
+msgid "Reverse Send to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:941
+msgid "Secure Reverse Send to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:948
+msgid "TDCC Send to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:953
+msgid "TDCC Reverse Send to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:960
+msgid "Voice Chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1134
+msgid "&Ignore"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1165
+msgid "Logging to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1167
+msgid "Flush Log File"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1174
+msgid "Stop Logging"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1179
+msgid "Not Logging"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+msgid "Log To Default File"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+msgid "Include Existing Buffer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+msgid "Log To..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1201
+msgid "Choose Log Filename"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1282
+msgid "Notify avatar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:50
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$copyfiles must be a "
+"source directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:56
+#, c-format
+msgid ""
+"[Installer] The second argument to \\%installer->\\$copyfiles must be a file "
+"name or file regexp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:62
+#, c-format
+msgid ""
+"[Installer] The third argument to \\%installer->\\$copyfiles must be a "
+"destination directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:94
+#, fuzzy
+msgid "[Installer] Failed to create directory"
+msgstr "Създаването на сокет пропадна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:104
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$includefiles must be a "
+"source directory"
+msgstr ""
+
+#, fuzzy
+#~ msgid "Server:"
+#~ msgstr "Вътрешна грешка"
+
+#, fuzzy
+#~ msgid "Config file:"
+#~ msgstr "Връзката е отхвърлена"
+
+#, fuzzy
+#~ msgid "Can't fill non-widget object"
+#~ msgstr "Не може да изпрати файл с нулева големина"
+
+#~ msgid "Select error: %s (errno=%d)"
+#~ msgstr "Избиране на грешка: %s (errno=%d)"
+
+#~ msgid "Connect error: %s (errno=%d)"
+#~ msgstr "Грешка при свързване: %s (errno=%d)"
+
+#, fuzzy
+#~ msgid "Unable to create theme directory."
+#~ msgstr "Създаването на сокет пропадна"
+
+#, fuzzy
+#~ msgid "%cListing Qt Properties for widget object %s (%s)"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "missing parameter"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Invalid parameter (%s)"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Unsupported QT property (%s)"
+#~ msgstr "Неподдържан протокол %s"
+
+#, fuzzy
+#~ msgid "Missing parameters"
+#~ msgstr "Липсва име на променлива"
+
+#, fuzzy
+#~ msgid "Invalid size parameter (%s)"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Can't find the widget object assuming 0"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Invalid Parameters"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Unknown frame style"
+#~ msgstr "Неизвестен оператор"
+
+#, fuzzy
+#~ msgid "Reconnection Options"
+#~ msgstr "Изтичане на време за връзка"
+
+#, fuzzy
+#~ msgid "Invalid x offset parameter (%s)"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Invalid y offset parameter (%s)"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Can't find the specified file '%s'."
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Unable to create theme utils directory."
+#~ msgstr "Създаването на сокет пропадна"
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for reading."
+#~ msgstr "Не може да отвори файл за четене"
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for writing."
+#~ msgstr "Не може да отвори файл за запис"
+
+#, fuzzy
+#~ msgid "Invalid NickServ Rule"
+#~ msgstr "Неправилен порт"
+
+#, fuzzy
+#~ msgid "Invalid progress value (%s)"
+#~ msgstr "Грешен прокси адрес"
+
+#, fuzzy
+#~ msgid "Error:not enough parameters!"
+#~ msgstr "Няма достатъчно параметри"
+
+#, fuzzy
+#~ msgid "Invalid index parameter (%s)"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Invalid parameter"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Can't find the object "
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Can't set a non-widget object"
+#~ msgstr "Не може да изпрати файл с нулева големина"
+
+#, fuzzy
+#~ msgid "Can't find the widget(%s)"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Invalid marging value (%s)"
+#~ msgstr "Грешен прокси адрес"
+
+#, fuzzy
+#~ msgid "Invalid parameters"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Can't find the widget/pixmap (%s)"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Can't find the widget object to remove (%s)"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Can't remove a non-widget object"
+#~ msgstr "Не може да изпрати файл с нулева големина"
+
+#, fuzzy
+#~ msgid "Can't find the widget (%s)"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Invalid zoom value (%s)"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Invalid depth value (%s)"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Invalid value (%s)"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Invalid paragraph value (%s)"
+#~ msgstr "Грешен прокси адрес"
+
+#, fuzzy
+#~ msgid " I can't find the specified file."
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Can't find the destination widget/pixmap (%s)"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "No source specified"
+#~ msgstr "Няма такъв файл"
+
+#, fuzzy
+#~ msgid "Can't find the source widget/pixmap (%s)"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Invalid x parameter (%s)"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Invalid y parameter (%s)"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Can't find the listviewitem object to add (%s)"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Invalid column (%s)"
+#~ msgstr "Грешен прокси адрес"
+
+#, fuzzy
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Can't setStretchableWidget a non-widget object."
+#~ msgstr "Не може да изпрати файл с нулева големина"
+
+#, fuzzy
+#~ msgid "Can't find the popupmenu object to add (%s)"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Can't find the widget object (%s)"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Invalid columns value (%s)"
+#~ msgstr "Грешен прокси адрес"
+
+#, fuzzy
+#~ msgid "Invalid size value (%s)"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Background not found %s "
+#~ msgstr "Хоста не е намерен"
+
+#, fuzzy
+#~ msgid "No link text specified"
+#~ msgstr "Няма такъв файл"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %s"
+#~ msgstr "Създаването на сокет пропадна"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %Q"
+#~ msgstr "Създаването на сокет пропадна"
+
+#, fuzzy
+#~ msgid "<unknown size>"
+#~ msgstr "Неизвестна грешка"
+
+#, fuzzy
+#~ msgid "Missing target nickname"
+#~ msgstr "Липсва име на променлива"
+
+#, fuzzy
+#~ msgid "Invalid timeout, ignoring"
+#~ msgstr "Левия операнд е грешен"
+
+#, fuzzy
+#~ msgid "Invalid visible name: using default"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Ops..failed to add the sharedfile..."
+#~ msgstr "Създаването на сокет пропадна"
+
+#, fuzzy
+#~ msgid " I can't find the specified file %s."
+#~ msgstr "Не може да определи исканият адрес"
+
+#~ msgid "UNUSED UNUSED"
+#~ msgstr "НЕИЗПОЛЗВАН НЕИЗПОЛЗВАН"
diff --git a/po/kvirc/kvirc_ca.po b/po/kvirc/kvirc_ca.po
new file mode 100644
index 00000000..688ac2d4
--- /dev/null
+++ b/po/kvirc/kvirc_ca.po
@@ -0,0 +1,16926 @@
+# translation of kvirc_ca.po to Catal�# Marc Serra Romero <[email protected]>, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: kvirc_ca\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-04-23 17:52+0000\n"
+"Last-Translator: Marc Serra Romero <[email protected]>\n"
+"Language-Team: Catal�<[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"First-Translator: Marc Serra Romero <[email protected]>\n"
+"X-Generator: KBabel 1.2\n"
+"X-Poedit-Language: Catalan\n"
+"X-Poedit-Country: ANDORRA\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:696
+msgid "&Cascade Windows"
+msgstr "Finestres en &Cascada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:697
+msgid "Cascade &Maximized"
+msgstr "Cascada &Maximitzada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:700
+msgid "&Tile Windows"
+msgstr "Finestres en Mosaic"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:703
+msgid "&Auto Tile"
+msgstr "Posar en mosaic &Autom�icament"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:708
+msgid "Anodine's Full Grid"
+msgstr "Reixa Completa d'Anodine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:710
+msgid "Pragma's Horizontal 4-Grid"
+msgstr "Reixa-a-4 Horitzontal de Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:712
+msgid "Pragma's Vertical 4-Grid"
+msgstr "Reixa-a-4 Vertical de Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:714
+msgid "Pragma's Horizontal 6-Grid"
+msgstr "Reixa-a-6 Horitzontal de Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:716
+msgid "Pragma's Vertical 6-Grid"
+msgstr "Reixa-a-6 Vertical de Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:718
+msgid "Pragma's Horizontal 9-Grid"
+msgstr "Reixa-a-9 Horitzontal de Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:720
+msgid "Pragma's Vertical 9-Grid"
+msgstr "Reixa-a-9 Vertical de pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:726
+msgid "Tile Met&hod"
+msgstr "M�ode de mosaic"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:729
+msgid "Expand &Vertically"
+msgstr "Expandir &Verticalment"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:730
+msgid "Expand &Horizontally"
+msgstr "Expandir &Horitzontalment"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:733
+msgid "Mi&nimize All"
+msgstr "Mi&nimitzar Tot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_actiondrawer.cpp:64
+msgid "Script"
+msgstr "Script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:581
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:634
+msgid "Unknown"
+msgstr "Desconegut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:128
+msgid "No topic message has been received from the server yet"
+msgstr "El servidor no ha enviat encara un missatge de tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:495
+msgid "Channel topic:"
+msgstr "Tema del canal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:513
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:201
+msgid "Set by"
+msgstr "Posat per"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:519
+msgid "Set on"
+msgstr "Posat el"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:525
+msgid "Double-click to edit..."
+msgstr "Doble click per a editar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:530
+msgid "No topic is set"
+msgstr "No s'ha posat tema de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:533
+msgid "Double-click to set..."
+msgstr "Doble click per a posar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:587
+#, fuzzy
+msgid "History"
+msgstr "directori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:596
+msgid "Commit Changes"
+msgstr "Acceptar Canvis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:602
+msgid "Discard Changes"
+msgstr "Descartar Canvis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:627
+msgid "Copy to clipboard"
+msgstr "Copiar al portapapers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:988
+msgid "There are active connections, are you sure you wish to "
+msgstr "Existeixen connexions actives, est�segur que dessitja "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:989
+msgid "quit KVIrc?"
+msgstr "sortir de KVIrc?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:587
+msgid "Confirmation - KVIrc"
+msgstr "Confirmaci�- KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:557
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:590
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&Yes"
+msgstr "&S"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:556
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:589
+msgid "&Always"
+msgstr "Sempre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:591
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&No"
+msgstr "&No"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1090
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1106
+msgid "Show %1"
+msgstr "Mostrar %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1134
+msgid "Customize..."
+msgstr "Personalitzar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:149
+#, c-format
+msgid "The file %s already exists.<br>Do you wish to overwrite it?"
+msgstr "El arxiu %s ja existeix.<br>Sobreescriure-ho?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:150
+msgid "File Exists - KVIrc"
+msgstr "El Arxiu Existeix - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:132
+msgid "Channel mode"
+msgstr "Mode del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:162
+msgid "Split View"
+msgstr "Dividir Vista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:207
+msgid "User List"
+msgstr "Llista d'Usuaris"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:167
+#, fuzzy
+msgid "Ban Editor"
+msgstr "Editor Raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:172
+#, fuzzy
+msgid "Ban Exception Editor"
+msgstr "Mostrar Editor d'Excepcions a Prohibicions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:179
+#, fuzzy
+msgid "Invite Exception Editor"
+msgstr "Mostrar Editor d'Excepcions a Invitacions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:184
+#, fuzzy
+msgid "Mode Editor"
+msgstr "Mostrar Editor de Mode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "said something recently"
+msgstr "ha dit alguna cosa recentment"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "is talking"
+msgstr "est�parlant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:684
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:699
+msgid "and"
+msgstr "i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "were talking recently"
+msgstr "estaven parlant recentment"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "are talking"
+msgstr "estan parlant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:707
+msgid "and other %1 users"
+msgstr "i uns altres %1 usuaris"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:738
+msgid "Dead channel"
+msgstr "Canal mort"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:753
+msgid "operator"
+msgstr "operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:754
+msgid "operators"
+msgstr "operadors"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active user"
+msgstr "usuari actiu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active users"
+msgstr "usuaris actius"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot user"
+msgstr "usuari actiu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot users"
+msgstr "usuaris actius"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owner"
+msgstr "propietari del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owners"
+msgstr "propietaris del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrator"
+msgstr "administrador del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrators"
+msgstr "administradors del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operator"
+msgstr "semioperador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operators"
+msgstr "semioperadors"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced user"
+msgstr "usuari amb veu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced users"
+msgstr "usuaris amb veu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operator"
+msgstr "usuari operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operators"
+msgstr "usuaris operadors"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "user total"
+msgstr "usuari total"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "users total"
+msgstr "usuaris totals"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:931
+msgid "No activity"
+msgstr "Sense activitat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:932
+msgid "Minimal activity"
+msgstr "Activitat m�ima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:933
+msgid "Very low activity"
+msgstr "Activitat molt baixa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Might be low activity"
+msgstr "Pot ser de baixa activitat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Low activity"
+msgstr "Baixa activitat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Might be medium activity"
+msgstr "Pot ser d'activitat mitja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Medium activity"
+msgstr "Activitat mitja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "Might be high activity"
+msgstr "Pot ser d'alta activitat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "High activity"
+msgstr "Alta activitat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Might be very high activity"
+msgstr "Pot ser de molt alta activitat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Very high activity"
+msgstr "Molt alta activitat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Might be flooded with messages"
+msgstr "Pots ser saturat amb missatges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Flooded with messages"
+msgstr "Saturat amb missatges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:946
+msgid "human"
+msgstr "humana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:966
+msgid "[Dead channel]"
+msgstr "[Canal mort]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1020
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1122
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:459
+msgid " on "
+msgstr " en "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1086
+#, fuzzy
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %Q, no "
+"data sent to the server"
+msgstr ""
+"El motor de xifrat no ha estat capa�de xifrar el segent missatge (%Q): %s, "
+"no s'han enviat dades al servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1403
+msgid "Sent part request, waiting for reply..."
+msgstr "Enviada sollicitud de partida, esperant resposta..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:610
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:647
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:293
+msgid "(Unknown)"
+msgstr "(Desconegut)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1484
+msgid "<b>Channel mode:</b>"
+msgstr "<b>Mode de canal:</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1498
+#, c-format
+msgid "<br><b>Key:</b> %s"
+msgstr "<br><b>Clau:</b> %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1505
+#, c-format
+msgid "<br><b>Limit:</b> %s"
+msgstr "<br><b>L�it:</b> %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1590
+#, c-format
+msgid "Channel synchronized in %d.%d seconds"
+msgstr "Canal sincronitzat en %d.%d segons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:139
+msgid "Choose an Image File - KVIrc"
+msgstr "Trii un Arxiu d'Imatge - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:284
+#, c-format
+msgid "Unloadable: %s"
+msgstr "No carregable: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:260
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:90
+msgid "&Browse..."
+msgstr "Navegar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:364
+msgid "Choose a File - KVIrc"
+msgstr "Trii un Arxiu - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:382
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:593
+msgid "Choose a Directory - KVIrc"
+msgstr "Seleccioni un Directori - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:764
+msgid "A&dd"
+msgstr "Afegir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:407
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:766
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:230
+msgid "Re&move"
+msgstr "Eli&minar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:602
+#, fuzzy
+msgid "Sample Text"
+msgstr "Exemple"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:635
+#, fuzzy
+msgid "Foreground"
+msgstr "Color de primer pla:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:639
+msgid "Transparent"
+msgstr "Transparent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:652
+msgid "Background"
+msgstr "Fons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:715
+msgid "Play"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:748
+#, fuzzy
+msgid "Channel name"
+msgstr "Mode del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:749
+#, fuzzy
+msgid "Channel password"
+msgstr "Operador del Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:177
+msgid "Toolbars"
+msgstr "Barres d'eines"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:84
+msgid "Orientation"
+msgstr "Orientaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:86
+msgid "Top"
+msgstr "Amunt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:87
+msgid "Left"
+msgstr "Esquerra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:88
+msgid "Right"
+msgstr "Dreta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:89
+msgid "Bottom"
+msgstr "Sota"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:91
+msgid "Detached"
+msgstr "Desassociar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:92
+msgid "Flat"
+msgstr "Pla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:94
+msgid "Icon Size"
+msgstr "Mida d'Icona"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:96
+msgid "Small (22x22)"
+msgstr "Petit (22x22)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:97
+msgid "Large (32x32)"
+msgstr "Gran (32x32)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1333
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:463
+msgid "&Apply"
+msgstr "&Aplicar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:830
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:113
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:251
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:319
+msgid "Close"
+msgstr "Tancar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:102
+msgid "Channel Modes"
+msgstr "Modes de Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_debugwindow.cpp:47
+#, fuzzy
+msgid "Debug Messages"
+msgstr "Missatge d'abs�cia per defecte:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:72
+msgid "CTCP Page - KVIrc"
+msgstr "P�ina CTCP - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:109
+msgid "You have been paged by"
+msgstr "Has sigut paginat per"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:75
+#, fuzzy
+msgid "Mask editor - KVirc"
+msgstr "Editor de M�cares"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:79
+msgid "New mask must match an *!*@* expression"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Ok"
+msgstr "Acceptar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:488
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:442
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:401
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Cancel"
+msgstr "Cancellar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:157
+msgid "Active Bans"
+msgstr "Prohibicions Actives"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:161
+msgid "Active Invite Exceptions"
+msgstr "Excepcions a Invitaci�Actives"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:165
+msgid "Active Ban Exceptions"
+msgstr "Excepcions a Prohibici�Actives"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:184
+#, fuzzy
+msgid "Filter:"
+msgstr "&Filtre:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:188
+#, fuzzy
+msgid "Use doubleclick to edit item"
+msgstr "Doble click per a editar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:200
+msgid "Mask"
+msgstr "M�cara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:202
+msgid "Set at"
+msgstr "Posat el"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "Add"
+msgstr "Afegir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:92
+msgid "Cryptography/text transformation"
+msgstr "Transformaci�Criptogr�ica/textual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:99
+msgid "Use the crypt engine"
+msgstr "Utilitzar el motor de xifrat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:120
+msgid "Enable encryption"
+msgstr "Activar xifrat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:123
+msgid "Encrypt key:"
+msgstr "Clau de xifrat:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:141
+msgid "Hex"
+msgstr "Hex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:132
+msgid "Enable decryption"
+msgstr "Activar desxifrat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:135
+msgid "Decrypt key:"
+msgstr "Clau de desxifrat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_htmldialog.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:175
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:932
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1124
+msgid "OK"
+msgstr "Acceptar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:211
+msgid ""
+"If you dont want to encrypt a particular text line then just start it with "
+"the CTRL+P prefix"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:263
+msgid "Sorry, no crypt engines available"
+msgstr "Ho sento, no hi ha motors de xifrat disponibles"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:283
+msgid "Crypt: Can't create an engine instance: crypting disabled"
+msgstr "Xifrat: No puc crear una inst�cia del motor: xifrat desactivat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:294
+#, c-format
+msgid "Crypt: Can't initialize the engine :%s"
+msgstr "Xifrat: No puc inicialitzar el motor :%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:302
+msgid ""
+"Crypt: You have to enable encryption and/or decryption for the engine to work"
+msgstr ""
+"Xifrat: Ha d'activar el xifrat i/o desxifrat per a que el motor funcioni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:385
+msgid "Search tools"
+msgstr "Eines de cerca"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:539
+#, c-format
+msgid "### Log session terminated at %s ###"
+msgstr "### Sessi�de registre acabada a les %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:713
+#, c-format
+msgid "### Log session started at %s ###"
+msgstr "### Sessi�de registre iniciada a les %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:717
+msgid "### Existing data buffer:"
+msgstr "### Buffer de dades existent:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:721
+msgid "### End of existing data buffer."
+msgstr "### Fi del buffer de dades existent."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3894
+msgid "Hide Find Window"
+msgstr "Amagar Finestra de Cerca"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3896
+msgid "Show Find Window"
+msgstr "Mostrar Finestra de Cerca"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3898
+msgid "Zoom In"
+msgstr "Ampliar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3899
+msgid "Zoom Out"
+msgstr "Reduir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3900
+msgid "Choose Temporary Font..."
+msgstr "Triar Font Temporal..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3901
+msgid "Choose Temporary Background..."
+msgstr "Triar Fons Temporal..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3902
+#, fuzzy
+msgid "Reset Temporary Background"
+msgstr "Triar Fons Temporal..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3905
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:738
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:841
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1057
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1289
+msgid "Clear Buffer"
+msgstr "Netejar Buffer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3939
+msgid "Choose the background image..."
+msgstr "Triar la imatge de fons..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+msgid "Invalid image"
+msgstr "Imatge no v�ida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+msgid "Failed to load the selected image"
+msgstr "Ha fallat la c�rega de l'arxiu d'imatge triat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4083
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4140
+#, c-format
+msgid "Pos %d"
+msgstr "Pos %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4156
+msgid "Not found"
+msgstr "No trobat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4563
+msgid "Looking up host %Q..."
+msgstr "Buscant m�uina %Q..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4926
+msgid "Double-click to open this link"
+msgstr "Doble click per a obrir aquest enlla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4946
+msgid "Unable to look it up hostname: Hostname appears to be masked"
+msgstr ""
+"Incapa�d'extreure el nom de m�uina: sembla que el nom de la m�uina "
+"est�emmascarat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4947
+msgid "Unable to look it up hostname: Unknown host"
+msgstr "Incapa�d'extreure el nom de la m�uina: m�uina desconeguda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4949
+msgid ""
+"Double-click to look up this hostname<br>Right-click to view other options"
+msgstr ""
+"Faci doble click per a buscar aquesta m�uina<br>Click dret per a veure "
+"altres opcions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4972
+msgid "Server appears to be a network hub<br>"
+msgstr "El servidor semblar ser un concentrador de xarxa<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4973
+msgid "Unknown server<br>"
+msgstr "Servidor desconegut<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4976
+msgid "Double-click to read the MOTD<br>Right-click to view other options"
+msgstr ""
+"Doble click per a llegir el MOTD<br>Bot�dret per a veure altres opcions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4989
+msgid "Double-click to set<br>"
+msgstr "Doble click per a posar<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5011
+msgid "You're not an operator: You may not change channel modes"
+msgstr "Vost�no � operador: No pot canviar els modes de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5028
+msgid "Nothing known about %Q"
+msgstr "No s�res sobre %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5029
+msgid "Nothing known about %Q (no connection)"
+msgstr "No s�res sobre %Q (no hi ha connexi�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5054
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>): "
+"<br><nowrap>+%Q (%u users)<hr>%Q</nowrap>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5060
+#, fuzzy
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)<hr>Double-"
+"click to join %Q<br>Right click to view other options"
+msgstr "Doble click per a unir-se a %Q<br>Bot�dret per a veure altres opcions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5080
+msgid "<b>Double-click:</b><br>%Q"
+msgstr "<b>Doble click:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5085
+msgid "<b>Middle-click:</b><br>%Q"
+msgstr "<b>Bot�central:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5090
+msgid "<b>Right-click:</b><br>%Q"
+msgstr "<b>Bot�dret:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1284
+msgid "Joined on <b>%1</b>"
+msgstr "Unit el <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1296
+msgid "Quiet for <b>%1h %2m %3s</b>"
+msgstr "Callat des de <b>%1h %2m %3s</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1097
+msgid "No connection"
+msgstr "Sense connexi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:304
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:3
+msgid "IRC Context"
+msgstr "Context d'IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:319
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:365
+#, c-format
+msgid "Lag: %d.%d%d"
+msgstr "Retr�: %d.%d%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:393
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:379
+msgid "Lag: ?.??"
+msgstr "Retr�: ?.??"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:326
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:637
+msgid "No IRC context"
+msgstr "No hi ha context d'IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:633
+msgid "Not connected"
+msgstr "Sense connexi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:377
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1117
+msgid "away"
+msgstr "absent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:397
+msgid "In progress..."
+msgstr "En progr�..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:458
+#, fuzzy
+msgid "Crypting"
+msgstr "Criptografia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:466
+msgid "Private Text Encoding"
+msgstr "Codificaci�de Text Privada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:566
+msgid "Ops...I've accidentally lost the crypting engine..."
+msgstr "Ups... he perdut accidentalment el motor de xifrat..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:582
+msgid "List of window types available in this release of KVIrc:"
+msgstr "Llista de tipus de finestres disponibles en aquesta versi�de KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:763
+msgid "Use Default Encoding"
+msgstr "Emprar Codificaci�per Defecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:775
+msgid "Standard"
+msgstr "Est�dard"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:776
+msgid "Smart (Send Local)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:777
+msgid "Smart (Send UTF-8)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:810
+msgid "&Undock"
+msgstr "Treure anclatje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:813
+msgid "&Dock"
+msgstr "Anclar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:818
+msgid "Mi&nimize"
+msgstr "Mi&nimitzat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:821
+msgid "Ma&ximize"
+msgstr "Ma&ximitzat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:824
+msgid "&Restore"
+msgstr "&Restaurar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:837
+msgid "Text &Encoding"
+msgstr "Codificaci�de Text"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:842
+msgid "Sa&ve Window Properties"
+msgstr "Guardar Propietats de Finestra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:86
+msgid "Taskbar"
+msgstr "Barra de Tasques"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:91
+#, fuzzy
+msgid "taskbar"
+msgstr "Barra de Tasques"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1162
+#, fuzzy
+msgid "Sort"
+msgstr "Ordenaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1163
+#, fuzzy
+msgid "Reverse Sort"
+msgstr "Enviament Invers a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1223
+msgid "Window List"
+msgstr "Llista de Finestres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:203
+#, fuzzy
+msgid "Apply to all IRC Contexts"
+msgstr "No hi ha context d'IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:227
+msgid "Away Indicator"
+msgstr "Indicador d'absent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:255
+msgid "Away since"
+msgstr "Aussent des de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:259
+msgid "Double click to leave away mode"
+msgstr "Doble click per a abandonar el mode absent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:261
+msgid "Not away"
+msgstr "Present"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:263
+msgid "Double click to enter away mode"
+msgstr "Doble click per a entrar en mode absent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:330
+#, c-format
+msgid "Last checked %d mins %d secs ago"
+msgstr "�tima comprobaci�realitzada fa %d min %d segs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:332
+msgid "Lag measure not available yet"
+msgstr "La mitja de retr� no est�disponible encara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:336
+msgid "Lag meter engine disabled"
+msgstr "Motor de medici�del retr� deshabilitat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:338
+msgid "Double click to enable it"
+msgstr "Doble click per a habilitar-lo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:391
+msgid "Lag Indicator"
+msgstr "Indicador de Retr�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:461
+msgid "Simple Clock"
+msgstr "Rellotge Senzill"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:512
+#, fuzzy
+msgid "Show total connection time"
+msgstr "Mostrar el temps de sincronitzaci�del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:536
+msgid "Connection Timer"
+msgstr "Cron�etre de Connexi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:560
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:87
+msgid "Separator"
+msgstr "Separador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:820
+msgid "Clipboard"
+msgstr "Portapapers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line break"
+msgstr "salt de l�ia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line breaks"
+msgstr "salts de l�ia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:845
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:439
+msgid "Cu&t"
+msgstr "&Tallar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:847
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:445
+msgid "&Copy"
+msgstr "&Copiar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:849
+msgid "&Paste"
+msgstr "&Enganxar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:851
+msgid "Paste (Slowly)"
+msgstr "Enganxar (lentament)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:856
+#, fuzzy
+msgid "Paste &File"
+msgstr "Enganxar Dintre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:863
+#, fuzzy
+msgid "Stop Paste"
+msgstr "&Enganxar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:865
+msgid "Clear"
+msgstr "Netejar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:868
+msgid "Select All"
+msgstr "Seleccionar Tot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:897
+#, fuzzy
+msgid "Insert Icon"
+msgstr "Acci�d'usuari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1926
+msgid "%d matches: %Q"
+msgstr "%d coincid�cies: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1930
+msgid "No matches"
+msgstr "Sense coincid�cies"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2657
+msgid "Show History<br>&lt;Ctrl+PageUp&gt;"
+msgstr "Mostrar Hist�ia<br>&lt;Ctrl+PagArr&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2648
+msgid "Input History Disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2370
+msgid "Show Icons Popup<br>&lt;Ctrl+I&gt;<br>See also /help texticons"
+msgstr ""
+"Mostrar Men Emergent d'Icones<br>&lt;Ctrl+I&gt;<br>Veure tamb�/help texticons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2382
+msgid "User friendly commandline mode<br>See also /help commandline"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2394
+#, fuzzy
+msgid "Multi-line Editor<br>&lt;Alt+Backspace&gt;"
+msgstr "Editor Multil�ia<br>&lt;Ctrl+Borrar&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2498
+#, fuzzy
+msgid "Confirm Multiline Message"
+msgstr "Missatge multim�ia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2499
+msgid ""
+"You're about to send a message with %1 lines of text.<br><br>There is "
+"nothing wrong with it, this warning is<br>here to prevent you from "
+"accidentally sending<br>a really large message just because you didn't edit "
+"it<br>properly after pasting text from the clipboard.<br><br>Do you want the "
+"message to be sent?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2505
+msgid "Yes, always"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2506
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:399
+msgid "Yes"
+msgstr "S"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:806
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:375
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:400
+msgid "No"
+msgstr "No"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2556
+#, fuzzy
+msgid "<Ctrl+Return>; submits, <Alt+Backspace>; hides this editor"
+msgstr ""
+"&lt;Ctrl+Intro&gt; introdueix el text, &lt;Ctrl+Borrar&gt; amaga aquest "
+"editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:126
+#, fuzzy
+msgid "Address:"
+msgstr "Adre� IP:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:140
+msgid "Current IRC URI"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:156
+msgid "Notify List"
+msgstr "Llista de Notificacions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:263
+msgid "Part All Channels"
+msgstr "Sortir de Tots els Canals"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:265
+msgid "Close All Queries"
+msgstr "Tancar Tots els Privats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:270
+msgid "Unhighlight All Windows"
+msgstr "Treure ressaltat de totes les finestres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:273
+msgid "Unhighlight All Channels"
+msgstr "Treure ressaltat de tots el canals"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:275
+msgid "Unhighlight All Queries"
+msgstr "Treure ressaltat de tots els privats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:387
+#, fuzzy
+msgid "Gender:"
+msgstr "Gen�ic"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:394
+#, fuzzy
+msgid "Male"
+msgstr "Valor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:393
+msgid "Female"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:375
+msgid "Registered as"
+msgstr "Registrat com a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:381
+#, fuzzy
+msgid "(Matched by"
+msgstr "Coincidents amb"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:393
+msgid "On <b>"
+msgstr "A <b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:402
+msgid "Using server <b>%1</b>"
+msgstr "Emprant servidor <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:407
+msgid "%1 hops"
+msgstr "%1 salts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:417
+msgid "Probably Away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:493
+msgid ""
+"KVIrc can accept only irc://, irc6://, ircs:// or irc6s:// URL's\n"
+"Your URL is invalid. Check spelling and try again"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:554
+msgid ""
+"You have just attempted to close a console window with an active connection "
+"inside.\n"
+"Are you sure you wish to terminate the connection?"
+msgstr ""
+"Ha intentat tancar una finestra de consola amb una connexi�activa.\n"
+"Est�segur que dessitja finalitzar la connexi?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:588
+msgid ""
+"You have just attempted to close the last console window.\n"
+"Are you sure you wish to quit KVIrc?"
+msgstr ""
+"Ha intentat tancar la ltima finestra de consola.\n"
+"Est�segur que dessitja sortir de KVIrc?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1019
+msgid "Failed to load avatar with name \"%Q\" and local path \"%Q\""
+msgstr "Ha fallat la c�rega del avatar amb nom \"%Q\"i ruta local \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:624
+msgid "Connection in progress..."
+msgstr "Connexi�en progr�..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1099
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:630
+msgid "Login in progress..."
+msgstr "Autentificaci�en progr�..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1179
+msgid "channel"
+msgstr "canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1180
+msgid "channels"
+msgstr "canals"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1181
+msgid "query"
+msgstr "privat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1182
+msgid "queries"
+msgstr "privats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1238
+msgid "Connected since"
+msgstr "Connectant des de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1252
+msgid "Online for"
+msgstr "Conectat durant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1264
+msgid "Server idle for"
+msgstr "Servidor esperant durant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:50
+msgid "This option is also available as"
+msgstr "Aquesta opci�tamb�est�disponible com a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:683
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:275
+msgid "Advanced..."
+msgstr "Avan�t ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:69
+msgid "Scri&pting"
+msgstr "Scri&pting"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:74
+msgid "&Tools"
+msgstr "Eines"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:81
+msgid "&Settings"
+msgstr "Opcion&s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:83
+msgid "&Window"
+msgstr "Finestra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:125
+msgid "&Help"
+msgstr "Ajuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:119
+msgid "&Help Browser (Panel)"
+msgstr "Ajuda (Panell de)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:121
+msgid "Help Browser (&Window)"
+msgstr "Ajuda (Finestra)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:124
+msgid "&Tip of the Day"
+msgstr "Consell del Dia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:127
+msgid "About &KVIrc"
+msgstr "Sobre &KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:130
+msgid "KVIrc Home&page"
+msgstr "P�ina de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:134
+#, fuzzy
+msgid "KVIrc Russian Home&page"
+msgstr "P�ina de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:139
+#, fuzzy
+msgid "KVIrc French Home&page"
+msgstr "P�ina de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:143
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:339
+msgid "Subscribe to the Mailing List"
+msgstr "Subscriure's a la Llista de Correu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:145
+msgid "Report a Bug / Propose Improvements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:148
+msgid "Join KVIrc International Channel on Freenode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:150
+msgid "Join KVIrc International Channel on IRCNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:155
+msgid "Join KVIrc Italian Channel on AzzurraNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:161
+msgid "Join KVIrc French Channel on Freenode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:164
+msgid "Join KVIrc French Channel on EuropNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:179
+msgid "Show StatusBar"
+msgstr "Mostrar Barra d'Estat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:194
+msgid "&Save Configuration"
+msgstr "Guardar Configuraci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:213
+msgid "Restore &Default Script"
+msgstr "Restaurar Script per &Defecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:630
+msgid "Disconnect"
+msgstr "Desconnectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:228
+msgid "New &Connection To"
+msgstr "Nova &Connexi�a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:234
+msgid "Hide &Dock Icon"
+msgstr "Amagar Icona &d'Anclatje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:237
+msgid "Show &Dock Icon"
+msgstr "Mostrar Icona d'Anclatje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:111
+msgid "&Quit"
+msgstr "Sortir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:265
+msgid "&Other..."
+msgstr "Altres..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:305
+msgid "Show &Icon Table"
+msgstr "Mostrar Taula d'&Icones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:308
+msgid "Open &Terminal"
+msgstr "Obrir &Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:308
+msgid ""
+"<b>Shift+Drag</b> or <b>Ctrl+Drag</b> to move the applet around<br><b>Right "
+"click</b> to see the other options"
+msgstr ""
+"<b>Majs+Arrossegar</b> o <b>Ctrl+Arrossegar</b> per a moure "
+"l'applet<br><b>Bot�dret</b> per a veure altres opcions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:313
+msgid "<b>Right click</b> to add/remove applets"
+msgstr "<b>Bot�dret</b> per a afegir/treure applets"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:353
+msgid "Remove %Q"
+msgstr "Treure %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:365
+msgid "Add Applet"
+msgstr "Afegir Applet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:404
+msgid ""
+"Drag the applet while holding the Shift or Ctrl key to move it to the "
+"desired position"
+msgstr ""
+"Arrossegar l'applet mentres es mant�presa la tecla Majscula o Ctrl per a "
+"moure'l a la posici�desitjada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:93
+msgid "<b><font color=\"#EAEAEA\" size=\"-1\">Find Text</font></b>"
+msgstr "<b><font color=\"#EAEAEA\" size=\"-1\">Cercar Text</font></b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:118
+msgid "&Regular expression"
+msgstr "Expressi�&regular"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:121
+msgid "E&xtended regexp."
+msgstr "E&xpressi�regular estesa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:126
+msgid "C&ase sensitive"
+msgstr "No distingeix m&ajs/mins"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:129
+msgid "Find &Prev."
+msgstr "Buscar Anterior"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:133
+msgid "&Find Next"
+msgstr "Buscar Segent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:880
+msgid "Find"
+msgstr "Buscar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:214
+msgid "Type"
+msgstr "Tipus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:166
+msgid "Set &All"
+msgstr "Tri&ar Tot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:170
+msgid "Set &None"
+msgstr "&No Triar Res"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:174
+msgid "&Load From..."
+msgstr "Carregar Des de..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:178
+msgid "&Save As..."
+msgstr "Guardar Com a.."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:182
+msgid "Filter"
+msgstr "Filtre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:234
+msgid "Select a Filter File"
+msgstr "Seleccioni un Arxiu de Filtre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:251
+#, c-format
+msgid "Can't open the filter file %s for reading."
+msgstr "No puc obrir l'arxiu de filtre %s per a lectura."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:261
+msgid "Select a Name for the Filter File"
+msgstr "Trii un Nom per l'Arxiu de Filtre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:272
+#, fuzzy
+msgid "Failed to write the filter file %Q (IO Error)"
+msgstr "Ha fallat a l'escriure l'arxiu de filtre %s (Error E/S)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:274
+#, fuzzy
+msgid "Can't open the filter file %Q for writing"
+msgstr "No puc obrir l'arxiu de filtre %s per a escriptura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:109
+msgid "Choose image ..."
+msgstr "Escull imatge..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:122
+msgid "Builtin images"
+msgstr "Imatges integrades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:131
+msgid "Small icons"
+msgstr "Icones petites"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:138
+msgid "Full path"
+msgstr "Ruta completa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:241
+msgid "Builtin $icon(%Q) [index %d]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:274
+msgid "directory"
+msgstr "directori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:300
+msgid "pixels"
+msgstr "p�els"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:305
+msgid "bytes"
+msgstr "bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:98
+msgid "Show User List"
+msgstr "Mostrar Llista d'Usuaris"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:105
+msgid "Query Targets"
+msgstr "Destins per a Privats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:165
+#, fuzzy
+msgid "Query target:"
+msgstr "Destins per a Privats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:170
+msgid "%1 is %2 (%3)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:172
+msgid "%1 is %2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:186
+#, fuzzy
+msgid "%1 is using irc server: %2 (%3 hops)"
+msgstr "Emprant servidor <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:188
+#, fuzzy
+msgid "%1 is using irc server: %2"
+msgstr "Emprant servidor <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:195
+msgid "%1 is probably away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:200
+msgid "Common channels with %1: %2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:254
+#, fuzzy
+msgid "[Dead Query]"
+msgstr "[Privat Mort]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:240
+msgid "Query with %1!%2 (%3)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:242
+msgid "Query with %1!%2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:244
+#, fuzzy
+msgid ", using server %1"
+msgstr "Emprant servidor <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:246
+#, fuzzy
+msgid " (%1 hops)"
+msgstr "%1 salts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:248
+msgid ", probably away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:252
+#, fuzzy
+msgid "Common channels: %2"
+msgstr "Unir-se a Canals"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:320
+msgid ""
+"The target of this query has changed from \r!n\r%Q\r [%Q@\r!h\r%Q\r] to \r!n"
+"\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr ""
+"El dest�d'aquest privat ha canviat de \r!n\r%Q\r [%Q@\r!h\r%Q\r] a \r!n\r%Q"
+"\r [%Q@\r!h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:389
+msgid "Common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Canals comuns per a \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:392
+msgid "No common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "No hi ha canals comuns per a \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:428
+msgid "[Dead query]"
+msgstr "[Privat Mort]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:578
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:645
+msgid "This query has no active targets, no message sent"
+msgstr "Aquest privat no t�destins actius, no s'ha enviat el missatge"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:617
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %s, no "
+"data sent to the server"
+msgstr ""
+"El motor de xifrat no ha estat capa�de xifrar el segent missatge (%Q): %s, "
+"no s'han enviat dades al servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashcount.cpp:74
+msgid ""
+"The argument of the hash count '#' operator didn't evaluate to a hash: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+"L'operador de conteix hash '#' no s'avalua com un hash: es proporciona "
+"conversi�autom�ica des del tipus '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:100
+#, fuzzy
+msgid "DNS Lookup result for query \"%Q\""
+msgstr "Resultat de la cerca DNS per a la pregunta \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:105
+msgid "Error: %Q"
+msgstr "Error: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:110
+#, fuzzy
+msgid "Hostname %d: %Q"
+msgstr "M�uina %d: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:116
+#, fuzzy
+msgid "IP address %d: %Q"
+msgstr "Direcci�IP %d: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:870
+#, fuzzy
+msgid ""
+"Broken slot '%Q' in target object '%Q::%Q' while emitting signal '%Q' from "
+"object '%Q::%Q': disconnecting"
+msgstr ""
+"Slot '%s' erroni en l'objecte de dest�'%s' mentres s'emetia la senyal '%s' "
+"des de l'objecte '%s': desconectant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:888
+#, fuzzy
+msgid ""
+"Slot target object destroyed while emitting signal '%Q' from object '%Q::%Q'"
+msgstr ""
+"Slot '%s' erroni en l'objecte de dest�'%s' mentres s'emetia la senyal '%s' "
+"des de l'objecte '%s': desconectant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1040
+msgid "Listing Qt properties for object named \"%Q\" of KVS class %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1046
+#, c-format
+msgid "Properties for Qt class %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1071
+#, fuzzy
+msgid "Property: %c%Q%c, type %Q"
+msgstr " Propietat: %s=%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1131
+#, c-format
+msgid "%d properties listed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1151
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1380
+msgid "The object named \"%Q\" of class %Q has no Qt properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1396
+msgid "No Qt property named \"%Q\" for object named \"%Q\" of class %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1409
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed but it doesn't really exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1417
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed and defined but the returned variant is not valid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1200
+#, c-format
+msgid ""
+"The property is of type %s but the supplied argument can't be converted to "
+"that type (expecting \"%s\")"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1331
+msgid ""
+"A pixmap object, an image_id or an image file path is required for this "
+"property"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1352
+#, fuzzy
+msgid "Can't find the requested image"
+msgstr "No s'ha pogut assignar l'adre� solicitada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1512
+msgid ""
+"Property \"%Q\" for object named \"%Q\" of class %Q has an unsupported data "
+"type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1659
+msgid "Cannot find object function $%Q for object named \"%Q\" of class %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1661
+msgid "Cannot find object function $%Q::%Q for object named \"%Q\" of class %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1669
+msgid ""
+"Cannot call internal object function $%Q (for object named \"%Q\" of class %"
+"Q) from this context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:69
+msgid "Stray dot ('.') character or invalid following module command name"
+msgstr ""
+"Car�ter punt ('.') sobrant o segueix un nom de comanda del m�ul no v�ida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:70
+msgid "Syntax error: malformed module command identifier"
+msgstr "Error de sintaxis: identificador de comanda del m�ul mal format"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:188
+#, fuzzy
+msgid "Stray '::' sequence or invalid following alias name"
+msgstr ""
+"Car�ter punt ('.') sobrant o segueix un nom de comanda del m�ul no v�ida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:95
+#, fuzzy
+msgid "Syntax error: malformed alias identifier"
+msgstr "Error de sintaxis: identificador de comanda del m�ul mal format"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:102
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:196
+msgid "Stray ':' character: did you mean '...<namespace>::<alias_name>' ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:103
+#, fuzzy
+msgid "Syntax error: malformed (alias?) command identifier"
+msgstr "Error de sintaxis: identificador de comanda del m�ul mal format"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:280
+msgid "Unknown callback command \"%Q\""
+msgstr "Comanda callback \"%Q\" desconeguda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:465
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:44
+msgid "The current window is not a channel"
+msgstr "La finestra actual no � un canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:532
+msgid ""
+"Timer name omitted but there is not current timer (this is not a timer "
+"callback)"
+msgstr ""
+"Nom de cron�etre om�, per�no hi ha un cron�etre actual (aquesta no � la "
+"callback d'un cron�etre)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:538
+msgid "Can't kill the timer '%Q' since it is not running"
+msgstr "No puc parar el cron�etre '%Q' perqu�no est�funcionant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:626
+#, fuzzy
+msgid "List of active timers"
+msgstr "usuaris actius"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:637
+msgid "Persistent"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:640
+#, fuzzy
+msgid "WindowLifetime"
+msgstr "Llista de Finestres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:643
+msgid "SingleShot"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:652
+#, fuzzy
+msgid "None"
+msgstr "(Cap)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:663
+#, c-format
+msgid "Total: %u timers running"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:849
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:872
+msgid "Found character '%q' (unicode %x) where a slash '/' was expected"
+msgstr "S'ha trobat el car�ter '%q' (unicode %x) on s'esperava una barra '/'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:842
+msgid ""
+"Unexpected end of command in binding operation, at least two slashes are "
+"missing"
+msgstr ""
+"Fi de comanda inesperada en operaci�d'associaci� falten al menys dues barres "
+"(/)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:865
+msgid ""
+"Unexpected end of command in binding operation, at least one slash is missing"
+msgstr ""
+"Fi de comanda inesperada en operaci�d'associaci� falta al menys unes barres "
+"(/)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:905
+msgid "Unknown binding operation '%Q'"
+msgstr "Operaci�d'associaci�desconeguda '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:926
+msgid "Missing right side operand for the binding operator '=~'"
+msgstr "Falta la part dreta de l'operand per a l'operador d'associaci�'=~'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:948
+msgid "Trailing garbage ignored after operator '++'"
+msgstr "S'ignoren els car�ters sobrants despr� de l'operador '++'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:960
+msgid "Missing right operand for operator '+='"
+msgstr "Falta l'operand de la dreta per a l'operador '+='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:979
+msgid "Trailing garbage ignored after operator '--'"
+msgstr "S'ignoren els car�ter sobrants despr� de l'operador '--'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:986
+msgid ""
+"This looks a lot like an object handle dereferencing operator '->' but in "
+"fact it isn't. Maybe you forgot a '$' just after ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:994
+msgid "Missing right operand for operator '-='"
+msgstr "Falta l'operand de la dreta per a l'operador '-='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1015
+msgid "Missing right operand for operator '<<='"
+msgstr "Falta l'operand de la dreta per a l'operador '<<='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1025
+msgid "Missing right operand for operator '<<'"
+msgstr "Falta l'operand de la dreta per a l'operador '<<'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1039
+msgid "Missing right operand for operator '<,'"
+msgstr "Falta l'operand de la dreta per a l'operador '<,'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1053
+#, fuzzy
+msgid "Missing right operand for operator '<+'"
+msgstr "Falta l'operand de la dreta per a l'operador '+='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1075
+msgid "Missing right operand for operator '>>='"
+msgstr "Falta l'operand de la dreta per a l'operador '>>='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1094
+msgid "Missing right operand for operator '.='"
+msgstr "Falta l'operand de la dreta per a l'operador '.='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1113
+msgid "Missing right operand for operator '"
+msgstr "Falta l'operand de la dreta per a l'operador '"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:72
+msgid "Unknown operator"
+msgstr "Operador desconegut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1178
+msgid "Unexpected (and senseless) read-only data evaluation"
+msgstr "Evaluaci�de dades de nom� lectura inesperada (i sense sentit)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1180
+msgid "Syntax error: confused by earlier errors: bailing out"
+msgstr "Error de sintaxis: conf� per errors anteriors: flipant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1160
+msgid "Unexpected end of script after a variable reference: expected operator"
+msgstr ""
+"Fi d'script inesperat despr� d'una refer�cia a variable: s'esperava un "
+"operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1176
+msgid ""
+"Unexpected character '%q' (unicode %x) after a void function call: end of "
+"instruction expected"
+msgstr ""
+"Car�ter inesperat '%q' (unicode %x) despr� d'una crida buida a funci� "
+"s'esperava la fi de la instrucci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1179
+msgid "Unexpected character '%q' (unicode %x)"
+msgstr "Car�ter inesperat '%q' (unicode %x)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:96
+msgid "/me can be used only in channels, queries and DCC chat windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:385
+#, fuzzy
+msgid "Invalid IRC url (%Q)"
+msgstr "url IRC no v�ida (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:410
+#, fuzzy
+msgid "The commandline for this url type seems to be broken (%Q)"
+msgstr "La l�ia de comandes per aquest tipus d'url sembla estar malament (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:412
+#, fuzzy
+msgid "No commandline specified for this type of url (%Q)"
+msgstr "No s'ha especificat l�ia de comandes per a aquest tipus d'url (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:512
+msgid "Option setting error: Unknown option or invalid value for option type"
+msgstr ""
+"Error de configuraci�de l'opci� opci�desconeguda o valor no v�id per al "
+"tipus d'opci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:606
+msgid "Choose a file to parse"
+msgstr "Trii un arxiu a analitzar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:639
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:643
+msgid "Failed to load the file '%Q' for parsing"
+msgstr "Ha fallat la c�rega de l'arxiu '%Q' per a interpretar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:715
+msgid "Missing channel list"
+msgstr "Falta llista de canals"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:753
+#, c-format
+msgid "You don't appear to be on channel %s"
+msgstr "Vost�no es troba en el canal %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:802
+#, fuzzy
+msgid "Module command call failed: can't load the module 'snd'"
+msgstr "Ha fallat la crida a la comanda del m�ul: no puc carregar el m�ul '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:809
+#, fuzzy
+msgid ""
+"Module command call failed: the module 'snd' doesn't export a command named "
+"'play'"
+msgstr ""
+"Ha fallat la crida a la comanda del m�ul: m�ul '%Q' no exporta a una comanda "
+"anomenada '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:864
+msgid "Popup %Q is not defined"
+msgstr "El men emergent %Q no est�definit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:872
+msgid "A popup menu cannot be popped up twice"
+msgstr "Un men emergent no poc mostrar-se dues vegades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:897
+msgid "Invalid syntax for screen coordinates, using cursor position"
+msgstr ""
+"Sintaxis no v�ida per a coordenades de pantalla, emprant la posici�del cursor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1011
+msgid "Empty target specified"
+msgstr "S'ha especificat un dest�buit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:97
+msgid "[RAW]: %Q"
+msgstr "[RAW]:%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1237
+msgid "Window with id %Q not found: no rebinding performed"
+msgstr "Finestra amb id %Q no trobada: no s'ha realitzat la reassociaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1330
+#, fuzzy
+msgid "Failed to execute command '%Q'"
+msgstr "Errada a l'executar la comanda '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:242
+msgid "Missing alias name"
+msgstr "Falta el nom de l'�ies"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:253
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:889
+msgid ""
+"Alias names can contain only letters, digits, underscores and '::' namespace "
+"separators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:903
+msgid ""
+"Stray ':' character in alias name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:914
+msgid "Found an empty namespace in alias name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:277
+msgid "The alias %Q is not existing"
+msgstr "L'�ies %Q no existeix"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:436
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:413
+msgid "The specified window has no button containers"
+msgstr "La finestra especificada no t�contenidor per a botons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:447
+#, fuzzy
+msgid "Window button '%Q' not found"
+msgstr "Bot�de finestra '%s' no trobat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:445
+#, fuzzy
+msgid "Can't find the icon '%Q'"
+msgstr "No es pot trobar la icona '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:532
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:540
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1197
+#, fuzzy
+msgid "No such event (%Q)"
+msgstr "No existeix l'event (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:552
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1222
+#, fuzzy
+msgid "No handler '%Q' for raw numeric event '%d'"
+msgstr "No hi ha un manipulador %s' per a l'event num�ic raw '%d'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1248
+#, fuzzy
+msgid "No handler '%Q' for event '%Q'"
+msgstr "No hi ha manipulador '%s' per a l'event '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:936
+msgid "The specified ping time is invalid: assuming zero (no ping)"
+msgstr "El temps especificat per a ping no � v�id: assumint zero (sense ping)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:946
+msgid "The specified maximum run time is invalid: assuming zero (infinite)"
+msgstr "El temps m�im d'execuci�no � v�id: assumint zero (infinit)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:965
+msgid "Failed to start the process"
+msgstr "Errada al comen�r el proc�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1010
+#, fuzzy
+msgid "The specified object does not exist"
+msgstr "No existeix la barra d'eines especificada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1113
+msgid "Missing timer name"
+msgstr "Falta el nom del cron�etre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1122
+msgid "Missing timeout delay"
+msgstr "Falta el temps d'expiraci�del men emergent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1129
+msgid "The timeout delay didn't evaluate to an integer"
+msgstr "El retr� del temps d'expiraci�no � un nmero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1152
+msgid "Unable to add the timer: insufficient system resources"
+msgstr "Impossible afegir el cron�etre: recursos del sistema insuficients"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_eventmanager.cpp:503
+msgid "Event handler %Q is broken: disabling"
+msgstr "El manipulador d'events %Q � erroni: deshabilitat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_moduleinterface.cpp:166
+msgid "Can't unload the module: it has locked itself in memory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:123
+msgid "Unknown binary operator '=%q': did you mean '==' ?"
+msgstr "Operador binario desconegut '=%q': volies dir '==' ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:221
+msgid "Unknown binary operator '%q'"
+msgstr "Operador binario desconegut '%q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:305
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:371
+msgid "Unexpected end of script in expression"
+msgstr "Final inesperat d'script en una expressi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:451
+msgid ""
+"Unexpected character %q (unicode %h) in expression. If it meant to be a "
+"string use the quotes."
+msgstr ""
+"Car�ter inesperat %q (unicode %h) en l'expressi� Si pret� ser una cadena "
+"hauria d'emprar cometes."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:466
+#, fuzzy
+msgid "Unexpected empty expression operand"
+msgstr "Fi d'expressi�inesperat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:91
+msgid "say: injected commandline"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:94
+msgid "Say parse error: Broken command"
+msgstr "Diu error de l'analitzador: comanda err�ia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:250
+msgid ""
+"Couldn't find a suitable IRC context for the connection, try using -n or -u"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:259
+#, fuzzy
+msgid "Another connection is already in progress in the selected IRC context"
+msgstr "Una altre connexi�en progr�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:369
+#, fuzzy
+msgid "No menu bar item with text '%Q'"
+msgstr "No existeix l'element de men amb el text '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:383
+#, fuzzy
+msgid "Invalid index specified: ignored"
+msgstr "S'ha especificat un cron�etre v�id, fent servir el valor per defecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:392
+#, fuzzy
+msgid "The popup '%Q' is not defined"
+msgstr "El men emergent '%s' no est�definit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:604
+#, fuzzy
+msgid "No target channel specified and the current window is not a channel"
+msgstr "La finestra especificada no � un canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:705
+#, fuzzy
+msgid "No catalogue %Q for the current language found"
+msgstr "No s'ha trobat el cat�eg%ss per al llenguatge actual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:744
+#, fuzzy
+msgid "The catalogue %Q was not loaded"
+msgstr "El cat�eg %s no ha sigut carregat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:80
+msgid ""
+"Empty window identifier specified in the standard rebinding switch: no "
+"rebinding performed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:91
+msgid ""
+"Invalid window specified in the standard rebinding switch: no rebinding "
+"performed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:94
+#, fuzzy
+msgid ""
+"The left side of the scope operator didn't evaluate as an object reference"
+msgstr "El cant�esquerre de l'operador '&=' no � un enter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:100
+#, fuzzy
+msgid ""
+"The left side of the scope operator evaluated to a null object reference"
+msgstr "El cant�esquerre de l'operador '/=' no � un enter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:107
+msgid ""
+"The left side of the scope operator evaluated to an invalid object reference "
+"(object doesn't exist)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayreferenceassert.cpp:77
+msgid "Array reference assert failed: the variable evaluated to type '%Q'"
+msgstr ""
+"Ha fallat la comprovaci�de la refer�cia de la matriu: la variable s'ha "
+"avaluat com del tipus '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:247
+msgid "Operand of unary operator didn't evaluate to a number"
+msgstr "L'operador unari no avalua a un nmero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:415
+msgid "Left operand didn't evaluate to a number"
+msgstr "L'operador de l'esquerra no � un nmero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:422
+msgid "Right operand didn't evaluate to a number"
+msgstr "L'operand de la dreta no � un nmero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:547
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:575
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:583
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:374
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:66
+msgid "Division by zero"
+msgstr "Divisi�por zero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:107
+#, fuzzy, c-format
+msgid "line %d, near character %d"
+msgstr "An�isis aturat en %cl�ia %d , car�ter %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:187
+msgid "This command can be used only in windows bound to an IRC context"
+msgstr ""
+"Aquesta comanda nom� pot ser emprada en finestres associades a un context IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:193
+msgid "You're not connected to an IRC server"
+msgstr "No est�conectat a un servidor IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:199
+msgid "Missing parameter"
+msgstr "Falta par�etre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:128
+msgid "Hash key evaluated to empty string: fix the script"
+msgstr "Clau hash avaluada a una cadena buida: arregla l'script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:99
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+"L'argument del sub�dex {} no s'avalua com un hash: es proporciona "
+"conversi�autom�ica des del tipus '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:144
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash automatic "
+"conversion from %Q supplied"
+msgstr ""
+"L'argument del sub�dex {} no s'avalua com un hash, es proporciona "
+"conversi�autom�ica des del tipus '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashreferenceassert.cpp:77
+msgid "Hash reference assert failed: the variable evaluated to type '%Q'"
+msgstr ""
+"Ha fallat la verificaci�de la refer�cia hash: la variable s'ha avaluat com "
+"del tipus '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:100
+#, fuzzy
+msgid "Failed to send an unknown command as /raw"
+msgstr "Enviar comandes desconegudes com a /RAW"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:104
+msgid "Call to undefined command '%Q'"
+msgstr "Crida a una comanda sense definir '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:116
+msgid "Error in inner alias command call '%Q', called from this context"
+msgstr ""
+"Error en comanda de crida a �ies intern '%Q', cridada des d'aquest context"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:74
+msgid "There are no extended scope variables in this scope"
+msgstr "No hi ha variables d'�bit ext� en aquest �bit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:111
+#, fuzzy
+msgid "Missing class name"
+msgstr "Falta el nom de l'�ies"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:120
+msgid "A class can't be a subclass of itself"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:127
+msgid "Couln't find base class named \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:137
+msgid ""
+"Detected a loop in the inheritance tree of the base class \"%Q\": redefine "
+"that class first"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:146
+#, fuzzy
+msgid "Can't override the builtin class \"%Q\""
+msgstr "No es pot matar una classe interna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:71
+#, fuzzy
+msgid "Module command call failed: can't load the module '%Q': %Q"
+msgstr "Ha fallat la crida a la comanda del m�ul: no puc carregar el m�ul '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:77
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a command named '%"
+"Q'"
+msgstr ""
+"Ha fallat la crida a la comanda del m�ul: m�ul '%Q' no exporta a una comanda "
+"anomenada '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:113
+msgid "Broken condition in menu setup: assuming false"
+msgstr "Condici�erronia a la configuraci�del men: assumient fals"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:220
+msgid "Broken icon parameter: ignoring"
+msgstr "Par�etre d'icona erroni: ignorant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:228
+msgid "Can't find the icon \"%Q\": ignoring"
+msgstr "No puc trobar la icona \"%Q\": ignorando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:244
+msgid "Broken text parameter: assuming empty string"
+msgstr "Par�etre de text erroni: assumint la cadena buida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:486
+msgid "Recursive definition detected for popup '%Q': ignoring"
+msgstr "Detectada definici�recursiva per al men emergent '%Q': ignorant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:500
+msgid "Can't find the external popup '%Q'; ignoring"
+msgstr "No puc trobar el men emergent extern '%Q': ignorant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:853
+msgid "Broken prologue in popup menu '%Q': ignoring"
+msgstr "Pr�eg erroni en men emergent '%Q': ignorant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:868
+msgid "Broken epilogue in popup menu '%Q': ignoring"
+msgstr "Ep�eg erroni en men emergent '%Q': ignorant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:70
+#, fuzzy
+msgid "Module function call failed: can't load the module '%Q': %Q"
+msgstr "Ha fallat la crida a la funci�del m�ul: no puc carregar el m�ul '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:77
+msgid ""
+"Module function call failed: the module '%Q' doesn't export a function named "
+"'%Q'"
+msgstr ""
+"Ha fallat la crida a la funci�del m�ul: el m�ul '%Q' no exporta una "
+"funci�cridada '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_timermanager.cpp:244
+msgid "Timer '%Q' has a broken callback handler: killing the timer"
+msgstr ""
+"El cron�etre '%Q' t�un manipulador de callback erroni: matant el cron�etre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:229
+msgid "The target variable didn't evaluate to an integer or real value"
+msgstr "La variable dest�no avalua a un enter o un valor real"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:283
+msgid "The right side of operator '&=' didn't evaluate to an integer"
+msgstr "El cant�dreta de l'operador '&=' no � un enter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:294
+msgid "The left side of operator '&=' didn't evaluate to an integer"
+msgstr "El cant�esquerre de l'operador '&=' no � un enter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:353
+msgid "The right side of operator '/=' didn't evaluate to a number"
+msgstr "El cant�dret de l'operador '/=' no � un enter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:364
+msgid "The left side of operator '/=' didn't evaluate to a number"
+msgstr "El cant�esquerre de l'operador '/=' no � un enter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:446
+msgid "The right side of operator '%=' didn't evaluate to a number"
+msgstr "El cant�dret de l'operador '%=' no � un enter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:457
+msgid "The left side of operator '%=' didn't evaluate to a number"
+msgstr "El cant�esquerre de l'operador '%=' no � un enter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:541
+msgid "The right side of operator '*=' didn't evaluate to a number"
+msgstr "El cant�dret de l'operador '*=' no � un enter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:552
+msgid "The left side of operator '*=' didn't evaluate to a number"
+msgstr "El cant�esquerre de l'operador '*=' no � un enter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:620
+msgid "The right side of operator '|=' didn't evaluate to an integer"
+msgstr "El cant�dret de l'operador '|=' no � un enter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:631
+msgid "The left side of operator '|=' didn't evaluate to an integer"
+msgstr "El cant�esquerre de l'operadir '|=' no � un enter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:691
+msgid "The right side of operator '<<=' didn't evaluate to an integer"
+msgstr "El cant�dret de l'operador '<<=' no � un enter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:702
+msgid "The left side of operator '<<=' didn't evaluate to an integer"
+msgstr "El cant�esquerre de l'operador '<<=' no � un enter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:763
+msgid "The right side of operator '>>=' didn't evaluate to an integer"
+msgstr "El cant�dret de l'operador '>>=' no � un enter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:774
+msgid "The left side of operator '>>=' didn't evaluate to an integer"
+msgstr "El cant�esquerra de l'operador '>>=' no � un enter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:840
+msgid "The right side of operator '-=' didn't evaluate to a number"
+msgstr "El cant�dret de l'operador '-=' no � un enter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:851
+msgid "The left side of operator '-=' didn't evaluate to a number"
+msgstr "El cant�esquerre de l'operador '-=' no � un enter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:923
+msgid "The right side of operator '+=' didn't evaluate to a number"
+msgstr "El cant�dret de l'operador '+=' no � un enter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:934
+msgid "The left side of operator '+=' didn't evaluate to a number"
+msgstr "El cant�esquerre de l'operador '+=' no � un enter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1009
+msgid "The right side of operator '^=' didn't evaluate to an integer"
+msgstr "El cant�dret de l'operador '^=' no � un enter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1020
+msgid "The left side of operator '^=' didn't evaluate to an integer"
+msgstr "El cant�esquerre de l'operador '^=' no � un enter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1462
+msgid ""
+"The regular expression matched a zero-length substring: this is not valid in "
+"the s/// operator, skipping"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:52
+msgid "Unexpected end of script after '$' function call prefix"
+msgstr "Fi d'script inesperat despr� del prefix de crida a funci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:53
+msgid "Unexpected character %q (unicode %x) after '$' function call prefix"
+msgstr ""
+"Car�ter inesperat '%q' (unicode %x) despr� del prefixe de crida a funci�'$'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:54
+msgid ""
+"Syntax error after '$' function call prefix. If you want to use a plain '$' "
+"in the code you need to escape it"
+msgstr ""
+"Error de sintaxis despr� del prefixe de crida '$'. Si vols emprar un simple "
+"'$' en el codi necessites escapar-lo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:63
+msgid "Invalid expression evaluation in object scope"
+msgstr "Avaluaci�no v�ida de la expressi�en el �bit de l'objecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:78
+msgid "Invalid command evaluation in object scope"
+msgstr "Avaluaci�no v�ida de la comanda en l'�bit de l'objecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:87
+msgid "Empty instruction block for command evaluation"
+msgstr "Bloc d'instruccions buit per a l'avaluaci�de la comanda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:101
+msgid ""
+"Parameter identifiers are forbidden in object scope (after the '->' operator)"
+msgstr ""
+"Els identificadors dels par�etres estan prohibits en l'�bit de l'objecte "
+"(despr� de l'operador '->')"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:147
+msgid ""
+"Ending index of a multiple parameter identifier is lower or equal to the "
+"starting index. This will evaluate to a single parameter identifier."
+msgstr ""
+"L'�dex final d'un identificador de par�etre mltiple � menor o igual al �dex "
+"d'inici. S'avaluar�com un identificador de par�etre simple."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:163
+msgid "Syntax error: invalid $$ ($this) function call in object scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:189
+#, fuzzy
+msgid "Syntax error: malformed alias function call identifier"
+msgstr "Error de sintaxis: identificador de comanda del m�ul mal format"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:197
+#, fuzzy
+msgid "Syntax error: malformed (alias?) function call identifier"
+msgstr "Error de sintaxis: identificador de comanda del m�ul mal format"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:307
+#, fuzzy, c-format
+msgid "Invalid data type for parameter \"%s\""
+msgstr "Par�etre fins_fila no v�id (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:122
+#, c-format
+msgid "found empty string where type '%s' was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:129
+#, fuzzy
+msgid "found string value \"%Q\" where type '%s' was expected"
+msgstr "S'ha trobat el car�ter '%q' (unicode %x) on s'esperava una barra '/'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:134
+#, fuzzy
+msgid "found type %Q where type '%s' was expected"
+msgstr "S'ha trobat el car�ter '%q' (unicode %x) on s'esperava una barra '/'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:154
+#, fuzzy, c-format
+msgid "Missing non-optional parameter \"%s\""
+msgstr "Falta par�etre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:282
+msgid "found empty string while a non empty one was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:309
+#, fuzzy, c-format
+msgid "found signed integer \"%d\" where type 'unsigned integer' was expected"
+msgstr "Opcions d'enters sense signe (constant unsigned integer)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:253
+msgid "This window has no associated IRC context"
+msgstr "Aquesta finestra no t�context d'IRC associat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:483
+#, c-format
+msgid "No such IRC context (%u)"
+msgstr "No existeix el context d'IRC (%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:471
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:586
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:494
+#, fuzzy
+msgid "This window is not associated to an IRC context"
+msgstr "Aquesta finestra no t�context d'IRC associat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:809
+msgid ""
+"The specified format string wasn't accepted by the underlying system time "
+"formatting function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:70
+msgid "Unterminated c-style multiline comment"
+msgstr "Comentari multil�ia d'estil C sense acabar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:71
+msgid "Unexpected end of script in multiline comment"
+msgstr "Fi d'script inesperat en comentari multil�ia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:88
+msgid ""
+"Unexpected character '%q' (unicode %x) after a slash (it is a typo or a "
+"malformed comment begin ?)"
+msgstr ""
+"Car�ter inesperat '%q' (unicode %x) despr� de la barra (� un error o un "
+"comen�ment de comentari mal posat?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:71
+msgid "Call to undefined function '%Q'"
+msgstr "Crida a la funci�sense definir '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:79
+msgid "Error in inner alias function call '%Q', called from this context"
+msgstr ""
+"Error a la crida a funci�interna d'alias '%Q', crida de d'aquest context"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:73
+msgid "Array index didn't evaluate to an integer"
+msgstr "L'�dex d'un vector no pot avaluar-se com un enter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:79
+msgid ""
+"Array index evaluated to a negative integer (non negative integer expected)"
+msgstr ""
+"�dex del vector avaluat com un enter negatiu (s'esperava un enter negatiu)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:106
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from %Q supplied"
+msgstr ""
+"L'argument del sub�dex [] no avalua a una matriu: es proporciona "
+"conversi�autom�ica des de %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:142
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+"L'argument de sub�dex [] no avalua a una matriu: es proporciona "
+"conversi�autom�ica des del tipus %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:219
+msgid "Lag meter was not enabled"
+msgstr "El mesurador de retr� no s'ha habilitat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:546
+#, fuzzy
+msgid "No such event handler (%Q) for event %Q"
+msgstr "No hi ha manipulador '%s' per a l'event '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands.cpp:153
+msgid "This is not a channel"
+msgstr "Aix�no � un canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:99
+#, fuzzy
+msgid ""
+"Unexpected end of command buffer while looking for the \"perl.end\" statement"
+msgstr "Fi de buffer inesperat mentres es buscava el car�ter ')' del 'for'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:147
+msgid "Trailing garbage at the end of the break command: ignored"
+msgstr "Car�ters sobrants al final de la comanda break: ignorant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:209
+#, fuzzy
+msgid "The 'unset' command needs a variable list"
+msgstr "La comanda 'global' necessita una llista de variables"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:280
+msgid "Found character %q (unicode %x) where a variable was expected"
+msgstr "Trobat el car�ter '%q' (unicode %x) on s'esperava una variable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:219
+#, fuzzy
+msgid "'unset' command used without a variable list"
+msgstr "La comanda 'global' necessita una llista de variables"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:279
+msgid "The 'global' command needs a variable list"
+msgstr "La comanda 'global' necessita una llista de variables"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:631
+msgid "Found character %q (unicode %x) where an open parenthesis was expected"
+msgstr "Trobat el car�ter '%q' (unicode %x) on s'esperava '('"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:439
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:538
+#, fuzzy
+msgid "Unexpected end of buffer in class definition"
+msgstr "Fi de buffer inesperat en bloc condicional switch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:474
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:501
+#, fuzzy
+msgid "Found character %q (unicode %x) where a function name was expected"
+msgstr "S'ha trobat el car�ter '%q' (unicode %x) on s'esperava una instrucci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:522
+#, fuzzy
+msgid "Unexpected end of buffer in function parameter list reminder"
+msgstr "Fi de l�ia inesperat a la llista de par�etres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:630
+#, fuzzy
+msgid "The while command needs an expression enclosed in parenthesis"
+msgstr "La comanda 'while' necessita una expressi�tancada entre par�tesis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:654
+msgid ""
+"The last while command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+"La ltima comanda while en el buffer no t�instruccions condicionals: aix�no "
+"t�sentit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:655
+msgid ""
+"Unexpected end of script while looking for the instruction block of the "
+"while command"
+msgstr ""
+"Fi d'script inesperat mentres es buscava el bloc d'instruccions de la "
+"comanda while"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:741
+#, fuzzy
+msgid ""
+"Unexpected end of command after the 'do' command block: expected 'while' "
+"keyword"
+msgstr ""
+"Fi de comanda inesperada despr� de bloc de comanda 'do': s'esperava "
+"l'idenficador while"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:743
+msgid "Found character %q (unicode %x) where a 'while' keyword was expected"
+msgstr ""
+"Trobat el car�ter %q (unicode %x) on s'esperava la paraula clau 'while'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:759
+#, fuzzy
+msgid ""
+"The 'while' block of the 'do' command needs an expression enclosed in "
+"parenthesis"
+msgstr ""
+"El bloc 'while' d'una comanda 'do' necessita una expressi�tancada entre "
+"par�tesis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:779
+msgid "Garbage string after the expression in 'do' command: ignored"
+msgstr "Cadena sobrant despr� de l'expressi�en la comanda 'do': ignorada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:825
+#, fuzzy
+msgid "The 'if' command needs an expression enclosed in parenthesis"
+msgstr "La comanda 'if' necessita una expressi�tancada entre par�tesis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:850
+msgid ""
+"The last if command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+"La ltima comanda 'if' en el buffer no t�instruccions condicionals: aix�no "
+"t�sentit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:851
+msgid ""
+"Unexpected end of script while looking for the instruction block of the if "
+"command"
+msgstr ""
+"Fi d'script inesperat mentres es buscava el bloc d'instruccions de la "
+"comanda 'if'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:966
+msgid ""
+"Unexpected end of buffer while looking for the closing ')' in the 'for' "
+"command"
+msgstr "Fi de buffer inesperat mentres es buscava el car�ter ')' del 'for'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1015
+#, fuzzy
+msgid "The 'for' command needs an expression enclosed in parenthesis"
+msgstr "La comanda 'for' necessita una expressi�tancada entre par�tesis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1092
+msgid ""
+"Found char %q (unicode %x) while looking for the terminating ')' in 'for' "
+"command"
+msgstr ""
+"S'ha trobat el car�ter %q (unicode %x) mentres es buscava ')' per al 'for'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1122
+msgid "Empty infinite 'for' loop: fix the script"
+msgstr "Bucle 'for' infinit: arregla l'script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1181
+#, fuzzy
+msgid "The 'foreach' command needs an expression enclosed in parenthesis"
+msgstr "La comanda 'foreach' necessita una expressi�tancada entre par�tesis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1205
+msgid ""
+"The 'foreach' command expects a writeable iteration variable as first "
+"parameter"
+msgstr ""
+"La comanda 'foreach' espera una variable d'iteraci�modificable com a primer "
+"par�etre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1196
+msgid ""
+"Found character '%q' (unicode %x) where '%' or '$' was expected: see /help "
+"foreach for the command syntax"
+msgstr ""
+"Trobat car�ter '%q' (unicode %x) on s'esperava '%' o '$': consulta /help "
+"foreach per a veure la sintaxis de la comanda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1207
+msgid "Unexpected function call as 'foreach' iteration variable"
+msgstr "Crida inesperada a funci�com a variable d'iteraci�'foreach'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1209
+msgid "Unexpected read-only variable as 'foreach' iteration variable"
+msgstr "Variable de nom� lectura inesperada com a variable d'iteraci�'foreach'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1219
+msgid ""
+"Unexpected end of 'foreach' parameters: at least one iteration data argument "
+"must be given"
+msgstr ""
+"Fi inesperat de par�etres 'foreach': ha de proporcionar-se al menys un "
+"argument de dades d'iteraci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1223
+msgid ""
+"The 'foreach' command expects a comma separated list of iteration data items "
+"after the first parameter"
+msgstr ""
+"La comanda 'foreach' espera una llista d'elements d'iteraci�separades per "
+"comes despr� del primer par�etre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1244
+#, fuzzy
+msgid ""
+"Found empty 'foreach' execution block: maybe you need to fix your script ?"
+msgstr "Bloc d'execuci�buit per a 'foreach': arregla l'script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1365
+#, fuzzy
+msgid "The 'switch' command needs an expression enclosed in parenthesis"
+msgstr "La comanda 'switch' necessita una expressi�tancada entre par�tesis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1415
+msgid "Unexpected end of buffer in switch condition block"
+msgstr "Fi de buffer inesperat en bloc condicional switch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1422
+msgid ""
+"Found character %q (unicode %x) where a 'case','match','regexp','default' or "
+"'break' label was expected"
+msgstr ""
+"Trocat car�ter %q (unicode %x) on s'esperava un 'case', 'regexp', 'default' "
+"o 'break'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1460
+msgid ""
+"Found 'break' label where a 'case','match','regexp' or 'default' label was "
+"expected"
+msgstr ""
+"Trobat una etiqueta 'break' on s'esperava una etiqueta 'case', 'match, "
+"'regexp', o 'default'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1465
+msgid ""
+"Found token '%Q' where a 'case','match','regexp','default' or 'break' label "
+"was expected"
+msgstr ""
+"Trobat l'identificador '%Q' on s'esperava un 'case', 'match', 'regexp', "
+"'default' o 'break'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1528
+msgid "Senseless empty switch command: fix the script"
+msgstr "Comanda switch buida no t�sentit: arregla l'script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1562
+msgid "Unexpected end of buffer in defpopup block"
+msgstr "Fi de buffer inesperat en bloc defpopup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1569
+msgid ""
+"Found character %q (unicode %x) where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+"Trobat car�ter %q (unicode %x) on s'esperava una etiqueta 'prologue', "
+"'separator', 'label', 'popup', 'item', 'extpopup' o 'epilogue'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1668
+#, fuzzy
+msgid "Found empty prologue block: maybe you need to fix the script?"
+msgstr "Pr�eg de bloc buit sense sentit: arregla l'script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1670
+#, fuzzy
+msgid "Found empty epilogue block: maybe you need to fix the script?"
+msgstr "Ep�eg de bloc buit sense sentit: arregla l'script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1703
+msgid ""
+"Unexpected empty <text> field in label parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Camp <texto> buit inesperat en par�etres d'etiqueta. Veure /help defpopup "
+"per a con�xer la sintaxis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1753
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1801
+msgid ""
+"Unexpected empty <text> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Camp <texto> buit inesperat en par�etres de extpopup. Veure /help defpopup "
+"per a con�xer la sintaxis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1777
+#, fuzzy
+msgid ""
+"Found empty instruction for popup item: maybe you need to fix the script?"
+msgstr "Instrucci�buida per a l'element de popup: arregla l'script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1809
+msgid ""
+"Unexpected empty <name> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Camp <nombre> buit inesperat en par�etres de extpopup. Veure / help defpopup "
+"per a con�xer la sintaxis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1821
+msgid ""
+"Found token '%Q' where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+"Trobat identificador '%Q' on s'esperava una etiqueta 'prologue', "
+"'separator', 'label', 'popup', 'item', 'extpopup' o 'epilogue'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1931
+#, fuzzy
+msgid "The 'defpopup' command needs an expression enclosed in parenthesis"
+msgstr "La comanda 'defpopup' necessita una expressi�tancada entre par�tesis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:109
+msgid "beginning of input"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:121
+msgid ""
+"Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %s"
+"\" for the command syntax"
+msgstr ""
+"Trobat el car�ter '%q' (unicode 0x%x) on s'esperava '%c': mira \"/help %s\" "
+"per a la sintaxis de les comandes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:124
+#, fuzzy, c-format
+msgid ""
+"Found end of input where character '%c' was expected: see \"/help %s\" for "
+"the command syntax"
+msgstr ""
+"Trobat el car�ter '%q' (unicode 0x%x) on s'esperava '%c': mira \"/help %s\" "
+"per a la sintaxis de les comandes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:197
+msgid "Empty script"
+msgstr "Cadena buida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2650
+msgid ""
+"Syntax error after '%' variable prefix. If you want to use a plain '%' in "
+"the code you need to escape it"
+msgstr ""
+"Error de sintaxis per a el prefixe de variable '%'. Si vols fer servir un "
+"simple '%' en el codi no necessites escapar-lo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2667
+#, fuzzy
+msgid "Objects have no extended scope variables"
+msgstr "No hi ha variables d'�bit ext� en aquest �bit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2727
+msgid "Found character '%q' (unicode %x) where an instruction was expected"
+msgstr "S'ha trobat el car�ter '%q' (unicode %x) on s'esperava una instrucci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2760
+msgid "Unterminated instruction block"
+msgstr "Bloc d'instruccions sense determinar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2761
+msgid "Unexpected end of script in instruction block (missing closing brace)"
+msgstr ""
+"Fi d'script inesperat en bloc d'instruccions (falta la clau de tancament)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2838
+#, fuzzy
+msgid ""
+"The dash after a command should be followed by a letter (switch), by a digit "
+"(negative number) or be escaped"
+msgstr ""
+"La barra despr� d'una comanda hauria de ser escapada o seguida per una "
+"lletra o un nmero (canvi)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2842
+msgid "Unexpected character '%q' (unicode %x) after a switch dash"
+msgstr "Car�ter inesperat '%q' (unicode %x) despr� de la barra de canvi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2844
+msgid "Unexpected end of script after a switch dash"
+msgstr "Fi d'script inesperat despr� d'una barra de canvi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2869
+msgid ""
+"The above problem might be related to the switch dash and the following "
+"equal sign"
+msgstr ""
+"El problema anterior pot estar relacionat amb la barra de canvi i el signe "
+"igual que la segueix"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2948
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3016
+msgid "Unexpected end of script in parameter list"
+msgstr "Fi d'script inesperat a la llista de par�etres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2954
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3022
+msgid "Unexpected end of line in parameter list"
+msgstr "Fi de l�ia inesperat a la llista de par�etres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3083
+msgid ""
+"Nested character %q corresponding to expected terminator, this might confuse "
+"me a bit: it is a good idea to enclose it in quotes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3093
+#, fuzzy
+msgid "Skipping nested terminator character %q"
+msgstr "An�isis aturat en %cl�ia %d , car�ter %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3120
+msgid "Stray backslash at the end of the script"
+msgstr "Barra enrere perduda al final de l'script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3393
+msgid "Unterminated hash key"
+msgstr "Clau hash sense acabar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3387
+msgid "Unexpected end of script in hash key (missing '}' character ?)"
+msgstr "Fi d'script inesperat en clau hash (falta el car�ter '}'?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3394
+msgid ""
+"Unexpected end of line in hash key (missing '}' character or unescaped "
+"newline)"
+msgstr ""
+"Fi de l�ia inesperat en clau hash (falta el car�ter '}' o una l�ia sense "
+"escapar)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3679
+msgid "Unterminated string constant"
+msgstr "Constant de cadena sense acabar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3673
+msgid "Unexpected end of script in string constant (missing \" character ?)"
+msgstr "Fi d'script inesperat en constant de cadena (falta el car�ter \"?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3680
+msgid ""
+"Unexpected end of line in string constant (missing \" character or unescaped "
+"newline)"
+msgstr ""
+"Fi de l�ia inesperada en constant de cadena (falta el car�ter \" o una nova "
+"l�ia sense escapar)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_processmanager.cpp:225
+msgid "Error triggered from process callback handler: killing process"
+msgstr ""
+"Error llen�nt des de el proc� de maneig de la callback: matant el proc�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arraycount.cpp:72
+msgid ""
+"The argument of the array count '#' operator didn't evaluate to an array: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+"L'argument de l'operador de la matriu '#' no s'avalua com una matriu: es "
+"proporciona conversi�autom�ica des del tipus '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:197
+msgid "This window has no associated IRC context and is not a DCC chat"
+msgstr "Aquesta finestra no t�context d'IRC associat i no � un DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:293
+#, fuzzy
+msgid "Class \"%Q\" is not defined"
+msgstr "La classe %s no est�definida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:303
+#, fuzzy
+msgid "The specified parent object does not exist"
+msgstr "No existeix la barra d'eines especificada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:430
+#, fuzzy
+msgid "There is no option named '%Q'"
+msgstr "No existeix l'opci�anomenada '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:85
+msgid "Internal error: pure virtual evaluateReadOnly called"
+msgstr "Error intern: s'ha cridat al m�ode virtual pur avaluat ReadOnly"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:91
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:104
+msgid ""
+"Internal error: trying to evaluate as read-write a read-only data location"
+msgstr ""
+"Error intern: intentant avaluar una posici�de dades de nom� lectura com a de "
+"lectura-escriptura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:98
+#, fuzzy
+msgid "Internal error: pure virtual evaluateReadOnlyInObjectScope called"
+msgstr "Error intern: s'ha cridat al m�ode virtual pur avaluat ReadOnly"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:215
+msgid "[KVS]%c Warning: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:211
+#, fuzzy
+msgid "[KVS]%c Compilation Error: %Q"
+msgstr "error de compilaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:219
+msgid "[KVS]%c Runtime Error: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:224
+#, fuzzy
+msgid "[KVS] in script context \"%Q\""
+msgstr "En el context de l'script '%Q':"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:226
+#, fuzzy
+msgid "[KVS] in script context \"%Q\", %Q"
+msgstr "En el context de l'script '%Q':"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:233
+msgid "[KVS] Code listing:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:238
+#, fuzzy
+msgid "[KVS] Window:"
+msgstr "Mostrar Finestra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:242
+#, c-format
+msgid "[KVS] Destroyed window with pointer %x"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:246
+msgid "[KVS] Call stack:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:464
+#, c-format
+msgid "Window with ID '%s' not found, returning empty string"
+msgstr "Finestra amb ID '%s' no trobada, retornant la cadena buida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:130
+msgid "The specified window is not a channel"
+msgstr "La finestra especificada no � un canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:392
+msgid "The $sw() function can be used only in aliases"
+msgstr "La funci�$sw() nom� pot emprar-se amb �ies"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:302
+#, fuzzy
+msgid "Invalid pitch value: using default"
+msgstr "To no v�id (%s): emprant el to per defecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:312
+#, fuzzy
+msgid "Invalid duration value: using default"
+msgstr "Duraci�no v�ida (%s): emprant la duraci�per defecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:421
+#, fuzzy
+msgid "No button with type %Q named %Q"
+msgstr "No hi ha un bot�del tipus %s anomenat %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:632
+#, fuzzy
+msgid "Can't delete a null object reference"
+msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:638
+#, fuzzy
+msgid "Can't delete an inexisting object"
+msgstr "No puc afegir un objecte no-widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:692
+#, fuzzy
+msgid "Inexisting popup \"%Q\""
+msgstr "Men emergent \"%s\" inexistent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:698
+msgid ""
+"Popup menu self-modification is not allowed (the popup is probably open)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:705
+#, fuzzy
+msgid "The menu item with id \"%Q\" does not exist in popup \"%Q\""
+msgstr "L'element amb id \"%s\" no existeix en el men emergent amb id \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:860
+msgid ""
+"The argument of the -w switch did not evaluate to a valid window id: using "
+"default"
+msgstr ""
+"L'argument de l'indicador -w no avalua a un id v�id de finestra: emprant el "
+"valor per defecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:869
+msgid ""
+"The argument of the i switch did not evaluate to a number: using default"
+msgstr ""
+"L'argument de l'indicador i no avalua a un nmero: emprant valor per defecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:981
+#, fuzzy
+msgid "Invalid color-set specification, using default"
+msgstr "Especificaci�d'icona '%s' no v�ida, emprant el valor per defecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:992
+#, c-format
+msgid "Window '%s' not found, using current one"
+msgstr "Finestra '%s' no trobada, emprant l'actual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:78
+#, fuzzy
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a callback "
+"command named '%Q'"
+msgstr ""
+"Ha fallat la crida a la comanda del m�ul: m�ul '%Q' no exporta a una comanda "
+"anomenada '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp:401
+#, c-format
+msgid "The popup '%s' is actually locked: 'self-modifications' are not allowed"
+msgstr ""
+"El men emergent '%s' est�bloquejat: les 'automodificacions' no estan "
+"permesses"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:822
+#, fuzzy, c-format
+msgid "Ignoring DCC from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "Ignorant PRIVMSG de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:839
+#, fuzzy, c-format
+msgid "Ignoring CTCP from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "Ignorant PRIVMSG de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:978
+msgid "The following CTCP reply has unrecognized target %Q"
+msgstr "La segent resposta CTCP t�un dest�no reconegut %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1025
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1128
+msgid "Channel CTCP"
+msgstr "CTCP de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:988
+#, fuzzy
+msgid "%Q %Q reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "%Q %S resposta de %Q [%Q@%Q]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1018
+msgid "The following CTCP request has unrecognized target %Q"
+msgstr "La segent petici�CTCP t�un dest�no reconegut %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1032
+#, fuzzy
+msgid ""
+"%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignored (flood limit "
+"exceeded)"
+msgstr "Petici�%Q %S de %Q [%Q@%Q] (%Q), ignorada (l�it de saturaci�excedit)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1036
+msgid "ignored (unrecognized)"
+msgstr "ignorada (no reconeguda)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "ignored"
+msgstr "ignorada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "replied"
+msgstr "resposta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1041
+#, fuzzy
+msgid "%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+msgstr "petici�%Q %S de %Q [%Q@%Q] (%Q), %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1079
+msgid "The following CTCP PING reply has unrecognized target \"%Q\""
+msgstr "La segent resposta CTCP PING t�un dest�no reconegut \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1113
+#, c-format
+msgid ""
+"The following CTCP PING reply has a broken time identifier \"%S\", don't "
+"trust the displayed time"
+msgstr ""
+"La segent resposta CTCP PING t�un identificador temporal erroni \"%S\", no "
+"confii en el temps mostrat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1132
+msgid "%Q PING reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sec %u msec"
+msgstr "Resposta PING %Q de %Q [%Q@%Q]: %u segs %u msegs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1466
+msgid "The following CTCP ACTION has unrecognized target %Q"
+msgstr "El segent CTCP ACTION t�un dest�no reconegut %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1471
+msgid "CTCP ACTION from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "CTCP ACTION de %Q [%Q@%Q]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1517
+msgid "Unable to add file offer for file %Q (File not readable?)"
+msgstr "No puc afegir un oferiment d'arxiu per a %Q (Arxiu no llegible?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1521
+msgid "Added %d sec file offer for file %Q (%Q) to recipient %Q"
+msgstr "Afegint oferiment de %d segs de l'arxiu %Q (%Q) al receptor %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "private"
+msgstr "privat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "channel notification:"
+msgstr "notificaci�de canal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1579
+msgid "notification"
+msgstr "notificaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1584
+#, fuzzy
+msgid "%Q unsets avatar"
+msgstr "Emprar avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1591
+#, fuzzy
+msgid "%Q changes avatar to %s"
+msgstr "%Q [%Q@%Q] canvia el avatar a %s (%Q %Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1637
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (HTTP GET %s)"
+msgstr ""
+": No hi ha c�ia local v�ida de l'avatar disponible, demanant-ne un (HTTP GET "
+"%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1644
+msgid ""
+": No valid local copy of avatar available; failed to start an HTTP transfer, "
+"ignoring"
+msgstr ""
+": No hi ha c�ia local v�ida de l'avatar disponible; ha fallat el comen�ment "
+"d'una transfer�cia HTTP, ignorant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1652
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (DCC GET %s)"
+msgstr ""
+": No hi ha disponible una c�ia local v�ida de l'avatar, demanant-ne una (DCC "
+"GET %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1664
+msgid ""
+": No valid local copy of avatar available; flood limit exceeded, ignoring"
+msgstr ""
+": No hi ha disponible una copia local v�ida de l'avatar; l�it de "
+"saturaci�excedit: ignorant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1669
+msgid ": No valid local copy of avatar available, ignoring"
+msgstr ": No hi ha disponible una copia local v�ida de l'avatar, ignorant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1677
+msgid ": No such nickname in the user database, ignoring the change"
+msgstr ""
+": No existeix tal nick a la base de dades d'usuaris, ignorant el canvio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1717
+#, fuzzy
+msgid "Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S)"
+msgstr "Ignorant la petici�DCC %S de %Q [%Q@%Q] (%S %S)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1759
+#, fuzzy
+msgid "Processing DCC %Q request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s)"
+msgstr ""
+"Processant petici�DCC %S solicitada des de \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%S %S)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1770
+#, c-format
+msgid "Unable to process the above request: Cannot load DCC module (%s)"
+msgstr ""
+"Incapa�de processar la petici�anterior: no he pogut carregar el m�ul DCC (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1776
+msgid "Unable to process the above request: DCC module may be broken"
+msgstr "Incapa�de processar la petici�anterior: el m�ul DCC pot estar trencat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:132
+msgid ""
+"[Server parser]: Encountered problems while parsing the following message:"
+msgstr ""
+"[Parser de Servidor]: S'han trobat problemes mentres s'analitzava el segent "
+"missatge:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:134
+msgid "[Server parser]: [%s][%s] %Q"
+msgstr "[Parser de servidor]: [%s][%s] %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:136
+#, c-format
+msgid "[Server parser]: %s"
+msgstr "[Parser de servidor]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:98
+#, fuzzy
+msgid "Received ping from \r!s\r%Q\r (PING %Q), replied pong"
+msgstr "Ping rebut de \r!s\r%s\r (PING %s), respost pong"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:125
+#, c-format
+msgid "Received pong from \r!s\r%s\r (PONG %s)"
+msgstr "Rebut pong de \r!s\r%s\r (PONG %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:151
+#, fuzzy
+msgid "Server ERROR: %Q"
+msgstr "[ERROR SSL]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:174
+msgid "Missing channel parameter in join message"
+msgstr "Falta par�etre de canal en missatge JOIN"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:209
+msgid "Received a join message for an unknown channel, possible desync"
+msgstr "Rebut un missatge JOIN d'un canal desconegut, possible desync?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:305
+#, fuzzy
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r [implicit +%c umode change]"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] s'ha unit a \r!c\r%Q\r [canvi de mode-u impl�it +%"
+"c]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:310
+#, fuzzy
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] s'ha unit a \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:324
+#, fuzzy
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] s'acaba d'unir a \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:355
+msgid "Received a part message for an unknown channel, possible desync"
+msgstr "Rebut un missatge PART d'un canal desconegut, possible desync?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:384
+msgid "You have left channel \r!c\r%Q\r"
+msgstr "Has abandonat el canal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:386
+msgid "You have left channel \r!c\r%Q\r: %Q"
+msgstr "Has abandonat el canal \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:402
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] ha abandonat \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:406
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] ha abandonat \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:420
+#, fuzzy
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] s'acaba de marxar \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:424
+#, fuzzy
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] s'acaba de marxar \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:494
+#, c-format
+msgid "Netsplit detected: %s"
+msgstr "Netsplit detectat: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:546
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:562
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] s'ha marxat de l'IRC: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:589
+msgid "Received a kick message for an unknown channel, possible desync"
+msgstr "Rebut un missatge d'expulsi�d'un canal desconegut, possible desync?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:626
+msgid "You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Has estat expulsat de \r!c\r%Q\r por \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:633
+msgid "Attempting to rejoin \r!c\r%Q\r..."
+msgstr "Intentant tornar a entrar \r!c\r%Q\r..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:670
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@"
+"\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] ha sigut expulsat de \r!c\r%Q\r per \r!n\r%Q\r [%"
+"Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:682
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just been kicked from \r!c\r%Q\r by \r!n\r%Q"
+"\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] acaba de ser expulsat de \r!c\r%Q\r per \r!n\r%Q"
+"\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:710
+#, fuzzy
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+"El segent missatge sembla estar xifrat, per�el motor de xifrat a fallat al "
+"descodificar-lo: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:776
+#, fuzzy
+msgid "Ignoring query-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Ignorant PRIVMSG de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:843
+msgid ""
+"Spam privmsg from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%s\")"
+msgstr ""
+"PRIVMSG spam de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (paraula-spam coincident \"%s"
+"\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:984
+#, fuzzy
+msgid "Ignoring channel-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Ignorant PRIVMSG de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1106
+#, fuzzy
+msgid "Ignoring Notice from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Ignorant PRIVMSG de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1159
+msgid "NickServ requests authentication, executing scheduled command"
+msgstr "NickServ demana autentificaci� executant comanda programada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1162
+msgid ""
+"The scheduled NickServ identification command appears to be broken, please "
+"change the setting"
+msgstr ""
+"La comanda d'identificaci�NickServ programada sembla ser incorrecte, per "
+"favor, canvia la configuraci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1213
+msgid ""
+"Spam notice from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%Q\")"
+msgstr ""
+"Not�ia spam de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (paraula-spam coincident \"%Q"
+"\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1394
+msgid "Received a topic message for an unknown channel, possible desync"
+msgstr "Rebut un missatge de tema d'un canal desconegut, posible desync?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1413
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has changed topic to \"%Q%c\""
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] ha canviat el tema a \"%Q%c\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1512
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] es coneix ara com a \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1063
+msgid "You have changed your nickname to %Q"
+msgstr "Has canviat el teu nick a %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1477
+msgid ""
+"The target of this query was lost and has been found when \r!n\r%Q\r [%Q@\r!h"
+"\r%Q\r] changed his nickname to \r!n\r%Q\r"
+msgstr ""
+"El dest�d'aquest privat s'ha perdut i ha estat trobat quan \r!n\r%Q\r [%Q@\r!"
+"h\r%Q\r] ha canviat el seu nick a \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1486
+#, fuzzy
+msgid ""
+"The recent nickname change from \r!n\r%Q\r to \r!n\r%Q\r caused a query "
+"collision: merging output"
+msgstr ""
+"El canvi recent de nick des de \r!n\r%Q\r a \r!n\r%Q\r ha causat una "
+"colisi�de privats: barrejant la sortida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1495
+msgid "End of merged output"
+msgstr "Final de sortida barrejada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1540
+#, fuzzy
+msgid "Ignoring invite from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "Ignorant PRIVMSG de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "autojoining"
+msgstr "autoentrant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "double-click the channel name to join"
+msgstr "premi dues vegades en el nom del canal per entrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1556
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] invites you to channel \r!c\r%Q\r (%Q)"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] t'invita al canal \r!c\r%Q\r (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1564
+msgid "Received an invite message directed to another nick, possible desync"
+msgstr "Rebut un missatge INVITE dirigit a un altre nick, possible desync"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1584
+msgid "WALLOPS from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "WALLOPS de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1648
+#, c-format
+msgid "You have set user mode %s"
+msgstr "T�posat el mode d'usuari %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1655
+msgid "Received a mode change for an unknown channel, possible desync"
+msgstr "Rebut un canvi de mode d'un canal desconegut, possible desync?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1731
+msgid "%Q [%Q@%Q] has set channel key to \"\r!m-k\r%Q\r\""
+msgstr "%Q [%Q@%Q] ha canviat la clau del canal a \"\r!m-k\r%Q\r\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1734
+msgid "%Q [%Q@%Q] has unset the channel key"
+msgstr "%Q [%Q@%Q] ha tret la clau del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1754
+msgid "%Q [%Q@%Q] has set channel \r!m-l\rlimit to %Q\r"
+msgstr "%Q [%Q@%Q] ha posat el l�it del canal \r!m-l\ra %Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1757
+msgid "%Q [%Q@%Q] has unset the channel limit"
+msgstr "%Q [%Q@%Q] ha tret el l�it del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1779
+msgid "%Q [%Q@%Q] has set mode %c%c \r!n\r%Q\r"
+msgstr "%Q [%Q@%Q] ha posat el mode %ce \r!m%ce\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1787
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1834
+msgid "%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"
+msgstr "%Q [%Q@%Q] ha posat el mode del canal \r!m%c%c\ra %c%c\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1819
+msgid "%Q [%Q@%Q] has set mode %c%c \r!m%c%c\r%Q\r"
+msgstr "%Q [%Q@%Q] ha posat el mode %c%c \r!m%c%c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1860
+msgid "%Q [%Q@%Q] has set mode %s %Q"
+msgstr "%Q [%Q@%Q] ha posat el mode %s %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1863
+msgid "%Q [%Q@%Q] has set channel mode %s"
+msgstr "%Q [%Q@%Q] ha posat el mode de canal %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:147
+#, c-format
+msgid ""
+"One or more standard mode flags are missing in the server available modes.\n"
+"This is caused either by a non RFC1459-compliant IRC daemon or a broken "
+"server reply.\n"
+"Server umodes seem to be '%s' and channel modes seem to be '%s'.\n"
+"Ignoring this reply and assuming that the basic set of modes is available.\n"
+"If you have strange problems, try changing the server."
+msgstr ""
+"Falten un o m� flags est�dard en els modes disponibes del servidor.\n"
+"Aix�pot deures a un servidor IRC no compatible amb la RFC-1459 o una "
+"resposta errada del servidor.\n"
+"Els modes del servidor semblen ser '%s' i els modes del canal '%s'.\n"
+"S'ignora aquesta resposta i s'assumeix que est�disponible el conjunt b�ic de "
+"modes.\n"
+"Si tens problemes estranys, prova a canviar de servidor."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:159
+msgid "Available user modes:"
+msgstr "Modes d'usuari disponibles:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:169
+msgid ": Unknown user mode"
+msgstr ": Mode d'usuari desconegut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:177
+msgid "Available channel modes:"
+msgstr "Modes de canal disponibles:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:197
+msgid "Server %Q version %S supporting user modes '%S' and channel modes '%S'"
+msgstr ""
+"Servidor %Q versi�%S soportant modes d'usuari '%S' i modes de canal '%S'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:244
+msgid "This server supports the WATCH notify list method, it will be used"
+msgstr ""
+"Aquest servidor suporta el m�ode de llista de notificaci�WATCH: el far�servir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:262
+msgid "The current network is %Q"
+msgstr "La xarxa actual � %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:303
+msgid "This server supports the CODEPAGE command, it will be used"
+msgstr "Aquest servidor suporta la comanda CODEPAGE, i es far�servir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:319
+#, c-format
+msgid "This server supports: %s"
+msgstr "El servidor suporta: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:375
+msgid "End of NAMES for \r!c\r%Q\r"
+msgstr "Fi de NAMES per a \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:472
+msgid "Names for \r!c\r%Q\r: %Q"
+msgstr "Noms per a \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:487
+msgid "(unknown)"
+msgstr "(desconegut)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:491
+msgid "Channel topic is: %Q"
+msgstr "El tema del canal �: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:498
+msgid "Topic for \r!c\r%Q\r is: %Q"
+msgstr "El tema per a \r!c\r%Q\r �: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:516
+msgid "No channel topic is set"
+msgstr "No s'ha posat tema de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:521
+msgid "No topic is set for channel \r!c\r%Q\r"
+msgstr "No s'ha posat tema per al canal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:560
+#, fuzzy
+msgid "Topic was set by %Q on %Q"
+msgstr "El tema va ser posat per \r!n\r%Q\r!%Q@\r!h\r%Q\r el %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:561
+#, fuzzy
+msgid "Topic was set by %Q"
+msgstr "El tema va ser posat per \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:569
+#, fuzzy
+msgid "Topic for \r!c\r%Q\r was set by %Q on %Q"
+msgstr ""
+"El tema per a \r!c\r%Q\r va ser posat per \r!n\r%Q\r!%Q@\r!h\r%Q\r el %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:572
+#, fuzzy
+msgid "Topic for \r!c\r%Q\r was set by %Q"
+msgstr "El tema per a \r!c\r%Q\r �: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:592
+msgid "Channel mode for \r!c\r%Q\r is %s"
+msgstr "El mode de canal per a \r!c\r%Q\r � %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:595
+msgid "User mode for \r!n\r%Q\r is %s"
+msgstr "Mode d'usuari per a \r!n\r%Q\r � %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:631
+msgid "End of channel %Q for \r!c\r%Q\r"
+msgstr "Fi del canal %Q per a \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:635
+msgid "ban list"
+msgstr "llista de prohibits"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:636
+msgid "invite list"
+msgstr "llista d'invitats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:637
+msgid "ban exception list"
+msgstr "llista d'excepcions a prohibicions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:658
+msgid "%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"
+msgstr "%Q per a \r!c\r%Q\r: \r!m-%c\r%Q\r (posat per %Q el %Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:665
+msgid "Ban listing"
+msgstr "Llista de prohibits"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:668
+msgid "Invite listing"
+msgstr "Llista de invitats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:671
+msgid "Ban exception listing"
+msgstr "Llistat d'excepcions a prohibicions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:740
+msgid ""
+"WHO entry for %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cChannel%c: \r!c\r%Q\r, %"
+"cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAway%c: %Q, %cReal name"
+"%c: %Q"
+msgstr ""
+"Entrada WHO per a %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cCanal%c: \r!c\r%Q\r, %"
+"cServidor%c: \r!s\r%Q\r, %cSalts%c: %d, %cFlags%c: %Q, %cAusents%c: %Q, %"
+"cNom real%c: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:797
+msgid "End of WHO list for %Q"
+msgstr "Fi de llista WHO per a %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:856
+msgid ""
+"Something really weird is happening: the server is refusing all the login "
+"nicknames..."
+msgstr ""
+"Est�succeint alguna cosa realment estranya: el servidor rebutja tots els "
+"nicks d'entrada..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:861
+msgid ""
+"The server is refusing all the login nicknames: giving up, you must send the "
+"nickname manually"
+msgstr ""
+"El servidor est�rebutjant tots els nicks d'entrada en endavant, ha d'enviar "
+"el nick de forma manual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:871
+msgid "No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."
+msgstr ""
+"No hi ha forma d'autentificar-se com a '\r!n\r%Q\r' (%d: %Q), intentant '%"
+"Q'..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:945
+msgid "Command syntax %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:973
+#, fuzzy
+msgid "Tip: %Q"
+msgstr "Llista: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:976
+#, fuzzy
+msgid "Tip for %Q: %Q"
+msgstr "El tema per a \r!c\r%Q\r �: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:993
+#, fuzzy
+msgid "End of help about %Q"
+msgstr "Fi de llista WHO per a %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1037
+msgid "%c\r!n\r%Q\r%c is away: %Q"
+msgstr "%c\r!n\r%Q\r%c est�aussent: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1090
+msgid "%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "%c\r!n\r%Q\r%c � %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1095
+msgid "%c\r!n\r%Q\r%c's real name: %Q"
+msgstr "%c\r!n\r%Q\r%c nom real: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1115
+msgid "%c\r!n\r%Q\r%c was %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "%c\r!n\r%Q\r%c era %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1119
+msgid "%c\r!n\r%Q\r%c's real name was: %Q"
+msgstr "El nom real de %c\r!n\r%Q\r%c era: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1183
+msgid "%c\r!n\r%Q\r%c's channels: %Q"
+msgstr "El canals de %c\r!n\r%Q\r%c: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1220
+msgid "Received a broken RPL_WHOISIDLE, can't evaluate the idle time"
+msgstr "Rebut un RPL_WHOISIDLE erroni, no puc calcular el temps d'espera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1230
+msgid "%c\r!n\r%Q\r%c's idle time: %ud %uh %um %us"
+msgstr "Temps d'espera de %c\r!n\r%Q\r%c : %ud %uh %um %us"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1240
+msgid "%c\r!n\r%Q\r%c's signon time: %Q"
+msgstr "Temps d'entrada de %c\r!n\r%Q\r%c: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1274
+msgid "%c\r!n\r%Q\r%c's server: \r!s\r%Q\r - %Q"
+msgstr "Servidor de %c\r!n\r%Q\r%c: \r!s\r%Q\r - %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1293
+#, fuzzy
+msgid "%c\r!n\r%Q\r%c is authenticated as %Q"
+msgstr "El nom real de %c\r!n\r%Q\r%c era: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1325
+msgid "%c\r!n\r%Q\r%c's info: %Q"
+msgstr "Informaci�de %c\r!n\r%Q\r%c: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1372
+msgid "%c\r!n\r%Q\r%c WHOIS info from \r!s\r%Q\r"
+msgstr "%c\r!n\r%Q\r%c info WHOIS de \r!s\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1389
+msgid "%c\r!n\r%Q\r%c WHOWAS info from \r!s\r%Q\r"
+msgstr "%c\r!n\r%Q\r%c info WHOWAS de \r!s\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1457
+msgid "Can't evaluate creation time"
+msgstr "No puc avaluar la data de creaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1465
+msgid "Channel was created at %Q"
+msgstr "El canal va ser creat el %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1470
+msgid "Channel \r!c\r%Q\r was created at %Q"
+msgstr "El canal \r!c\r%Q\r va ser creat el %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1511
+msgid "USERHOST info: %Q"
+msgstr "Informaci�USERHOST: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1532
+msgid "Channel list begin: channel, users, topic"
+msgstr "Comen� la llista de canal: canals, usuaris, temes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1559
+msgid "List: %Q"
+msgstr "Llista: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1573
+msgid "End of LIST"
+msgstr "Fi de LIST"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1597
+msgid "Link: %Q"
+msgstr "Enlla� %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1612
+msgid "End of LINKS"
+msgstr "Fi de LINKS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1641
+msgid "[Leaving away status after %ud %uh %um %us]: %Q"
+msgstr "[Abandonant l'estat d'ausent despr� de %ud %uh %um %us]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1645
+msgid "[Leaving away status]: %Q"
+msgstr "[Abandonant l'estat d'ausent]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1652
+msgid "Restoring pre-away nickname (%Q)"
+msgstr "Recuperant el nick anterior a l'estat d'ausencia (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1672
+msgid "[Entering away status]: %Q"
+msgstr "[Entrant en estat aussent]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1690
+msgid "Setting away nickname (%Q)"
+msgstr "Posant el nick en mode aussent (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1762
+#, fuzzy, c-format
+msgid "%c\r!s\r%s\r%c's server info: %s"
+msgstr "Informaci�de %c\r!n\r%Q\r%c: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1773
+#, fuzzy, c-format
+msgid "%c\r!s\r%s\r%c's administrator is %s"
+msgstr "Informaci�de %c\r!n\r%Q\r%c: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1784
+#, fuzzy, c-format
+msgid "%c\r!s\r%s\r%c's contact adress is %s"
+msgstr "El canals de %c\r!n\r%Q\r%c: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1812
+#, fuzzy
+msgid "\r!n\r%Q\r invited %Q into channel %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] t'invita al canal \r!c\r%Q\r (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1834
+#, fuzzy, c-format
+msgid "%c\r!s\r%s\r%c's information:"
+msgstr "Informaci�de %c\r!n\r%Q\r%c: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1844
+#, c-format
+msgid "End of %c\r!s\r%s\r%c's information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1855
+#, fuzzy
+msgid "%c\r!s\r%s\r%c's time is %Q"
+msgstr "Informaci�de %c\r!n\r%Q\r%c: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1866
+msgid "%Q: no such server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1877
+msgid "%Q: no such channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1891
+#, fuzzy
+msgid "Cannot sent to channel: %Q"
+msgstr "No s'ha posat tema per al canal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1894
+#, fuzzy
+msgid "Cannot sent text to channel %Q: %Q"
+msgstr "Has abandonat el canal \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1909
+#, fuzzy
+msgid "Cannot sent to channel"
+msgstr "La finestra actual no � una canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1912
+#, fuzzy
+msgid "Cannot sent text to channel %Q"
+msgstr "No s'ha posat tema per al canal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1928
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1936
+msgid "Your encoding is now %Q"
+msgstr "La teva codificaci�� ara %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1967
+#, fuzzy
+msgid "%c\r!n\r%Q\r%c's codepage is %Q: %Q"
+msgstr "El canals de %c\r!n\r%Q\r%c: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1991
+#, c-format
+msgid "Your user mode is %s"
+msgstr "El teu mode d'usuari � %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:158
+msgid "Failed to set the encoding to %Q: mapping not available."
+msgstr ""
+"Ha fallat la configuraci�per a la codificaci�a %Q: mapeig o disponible."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:175
+msgid "Changed text encoding to %Q"
+msgstr "Canvidada la codificaci�de text a %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:503
+msgid "Connection to server lost"
+msgstr "Connexi�perduda amb el servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:512
+msgid "Connection to server established"
+msgstr "Connexi�establerta amb el servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:573
+msgid "[LINK WARNING]: Socket message truncated to 512 bytes."
+msgstr "[Alerta d'enlla�: Missatge de socket truncat a 512 bytes."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:640
+msgid ""
+"The server seems to support the WATCH notify list method, will try to use it"
+msgstr ""
+"Aquest servidor sembla suportar el m�ode de llista de notificaci�WATCH, "
+"intentar�fer-lo servir."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:688
+msgid "Can't resolve local host address, using user supplied one (%Q)"
+msgstr ""
+"No s'ha pogut resoldre la direcci�local, emprant la subministrada per "
+"l'usuari (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:695
+msgid "Can't resolve local host address, using default 127.0.0.1"
+msgstr ""
+"No s'ha pogut resoldre la direcci�local, fent servir la direcci�per defecte "
+"127.0.0.1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:701
+msgid "Local host address is %Q"
+msgstr "La direcci�local de la m�uina � %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:749
+msgid "The server seems to have changed the idea about the local hostname"
+msgstr ""
+"El servidor sembla haver canviat d'idea sobre el nom de la m�uina local"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:750
+msgid ""
+"You're probably using a broken bouncer or maybe something weird is happening "
+"on the IRC server"
+msgstr ""
+"Probablement est�fent servir un repetidor espatllat o alguna cosa molt "
+"dolenta est�passant al servidor IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:776
+msgid ""
+"Here goes your \"broken bouncer hack\": The server has changed the hostname "
+"but I'll ignore the IP address change"
+msgstr ""
+"Aqu�ve el teu \"truc del repetidor espatllat\": El servidor ha canviat el "
+"nom de m�uina per�ignorar�el canvi d'adre� IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:791
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:801
+msgid "The local IP address as seen by the IRC server is %Q"
+msgstr "L'adre� IP local vista pel servidor IRC � %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:815
+msgid "Can't start the DNS slave thread"
+msgstr "No s'ha pogut iniciar el fil de DNS esclau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:816
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:846
+msgid "Unable to resolve the local hostname as seen by the IRC server: %Q"
+msgstr ""
+"No � possible resoldre el nom de la m�uina local tal i com la veu el "
+"servidor d'IRC: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:822
+msgid "Looking up the local hostname as seen by the IRC server (%Q)"
+msgstr "Buscant el nom de m�uina local tal i com la veu el servidor IRC (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:843
+#, fuzzy
+msgid ""
+"Unable to resolve the local hostname as seen by the IRC server: %Q, using "
+"previously resolved %Q"
+msgstr ""
+"No � possible resoldre el nom de la m�uina local tal i com la veu el "
+"servidor d'IRC: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:850
+#, fuzzy
+msgid "Local hostname as seen by the IRC server resolved to %Q"
+msgstr "Buscant el nom de m�uina del proxy (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:868
+msgid "Using server specific username (%Q)"
+msgstr "Utilitzant el nom d'usuari especific del servidor (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:873
+msgid "Using network specific username (%Q)"
+msgstr "Utilitzant el nom d'usuari especificat de la xarxa (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:892
+#, fuzzy
+msgid "Using reconnect specific nickname (%Q)"
+msgstr "Utilitzant el nick espec�ic de la xarxa (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:898
+msgid "Using server specific nickname (%Q)"
+msgstr "Utilitzant el nick espec�ic del servidor (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:905
+msgid "Using network specific nickname (%Q)"
+msgstr "Utilitzant el nick espec�ic de la xarxa (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:922
+msgid "Using server specific real name (%Q)"
+msgstr "Utilitzant el nom real espec�ic del servidor (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:929
+msgid "Using network specific real name (%Q)"
+msgstr "Utilitzant el nom real espec�ic de la xarxa (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:946
+msgid "Logging in as %Q!%Q :%Q"
+msgstr "Entrant com a %Q!%Q :%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:962
+#, c-format
+msgid "Sending %s as password"
+msgstr "Enviant %s com a clau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1033
+msgid "Executing scheduled network specific \"on connect\" commands"
+msgstr ""
+"Executant les comandes espec�iques de la xarxa programades \"al conectar\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1042
+msgid "Executing scheduled server specific \"on connect\" commands"
+msgstr ""
+"Executant les comandes espec�iques de servidor programades \"al conectar\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1051
+#, fuzzy
+msgid "Executing scheduled identity specific \"on connect\" commands"
+msgstr ""
+"Executant les comandes espec�iques de la xarxa programades \"al conectar\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1101
+#, c-format
+msgid "The server refused the suggested nickname (%s) and named you %s instead"
+msgstr ""
+"El servidor ha rebutjat el nick suggerit (%s) i l'ha anomenat %s en el seu "
+"lloc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1113
+msgid "Login operations complete, happy ircing!"
+msgstr "Operacions d'entrada completes, feli�irc!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1123
+msgid "Executing scheduled network specific \"on login\" commands"
+msgstr ""
+"Executant les comandes espec�iques de la xarxa programades \"al entrar\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1132
+msgid "Executing scheduled server specific \"on login\" commands"
+msgstr ""
+"Executant les comandes espec�iques de servidor programades \"al entrar\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1141
+#, fuzzy
+msgid "Executing scheduled identity specific \"on login\" commands"
+msgstr ""
+"Executant les comandes espec�iques de la xarxa programades \"al entrar\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1153
+msgid "Setting configured user mode"
+msgstr "Posant el mode configurat per l'usuari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1210
+msgid "Auto-joining network specific channels"
+msgstr "Entrenant autom�icament en canals espec�ics de la xarxa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1244
+msgid "Auto-joining server specific channels"
+msgstr "Entrant autom�icament en canals espec�ics del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1341
+#, fuzzy
+msgid "Updating away state for channel %Q"
+msgstr "No s'ha posat tema per al canal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_customtoolbardescriptor.cpp:230
+msgid "Backward compatibility action for toolbar.define"
+msgstr "Compatibilitat cap enrere per a toolbar.define"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:790
+msgid "Installation problems ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:791
+msgid ""
+"<b>Ooops...</b><br><br><b>There are some reasons that make me think that "
+"your KVIrc installation is incomplete.</b><br><br>I might be wrong, but you "
+"seem to miss some of the features that the default KVIrc script provides."
+"This may happen because you have upgraded to an unstable cvs version, "
+"because you have accidentally deleted or damaged your configuration files, "
+"because you have installed an incomplete script or because you have hit a "
+"bug in KVIrc.<br><br>I can repeat the installation of the default script in "
+"order to restore the missing features.<br><b>Do you want the default script "
+"to be restored ?</b><br><br><font size=\"-1\">Hint: If you're a scripter and "
+"have intentionally removed some of the scripting features then you may "
+"safely click on \"No and Don't Ask Me Again\", otherwise it might be a good "
+"idea to click \"Yes\". If you still want to choose \"No\" you can always "
+"restore the default script by choosing the appropriate entry from the "
+"\"Scripting\" menu.</font>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:805
+msgid "No and Don't Ask Me Again"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:828
+msgid "Restore Default Script - KVIrc"
+msgstr "Restaurar l'Script per defecte - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:829
+msgid ""
+"You are about to restore the default script.<br>This will erase any script "
+"changes you have made.<br>Do you wish to proceed?"
+msgstr ""
+"Es disposa a restaurar l'script per defecte.<br>Aix�esborrar�qualsevol canvi "
+"que hagi fet als scripts.<br>Dessitja continuar?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:872
+#, c-format
+msgid "Remote command received (%s ...)"
+msgstr "Comanda remota rebuda (%s ...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1033
+#, fuzzy
+msgid "File download failed"
+msgstr "Directori d'arxius descarregats:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1035
+msgid "File download from %1 failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1044
+#, fuzzy
+msgid "File download successfully complete"
+msgstr "Directori d'arxius descarregats:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1046
+#, fuzzy
+msgid "File download from %1 successfully complete"
+msgstr "Arxiu descarregat: procesant..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1066
+msgid "Avatar download failed for %Q!%Q@%Q and url %Q: %Q"
+msgstr "Fallida la desc�rega de l'avatar per a %Q!%Q@%Q i url %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2014
+#, c-format
+msgid "The commandline for media type '%s' seems to be broken"
+msgstr "La l�ia de comandes per a el tipus de medi '%s' sembla estar malament"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2018
+#, c-format
+msgid "Media type of file %s matched to '%s' but no commandline specified"
+msgstr ""
+"El tipus de medi de l'arxiu %s concorda amb '%s' per�no s'ha especificat "
+"l�ia de comandes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2023
+#, c-format
+msgid "No idea on how to play file %s (no media type match)"
+msgstr ""
+"No s�com reproduir l'arxiu %s (no hi ha concordan� en el tipus de medi)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:39
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:48
+#, c-format
+msgid "[SSL]: %c%s"
+msgstr "[SSL]: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:40
+#, c-format
+msgid "[SSL]: Cipher: %c%s"
+msgstr "[SSL]: Xifrador: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:41
+#, c-format
+msgid "[SSL]: Version: %c%s"
+msgstr "[SSL]: Versi� %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:42
+#, c-format
+msgid "[SSL]: Bits: %c%d (%d used)"
+msgstr "[SSL]: Bits: %c%d (%d emprats)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:49
+#, c-format
+msgid "[SSL]: Version: %c%d"
+msgstr "[SSL]: Versi� %c%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:50
+#, c-format
+msgid "[SSL]: Serial number: %c%d"
+msgstr "[SSL]: Nmero de s�ie: %c%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:51
+msgid "[SSL]: Subject:"
+msgstr "[SSL]: Tema:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:59
+#, c-format
+msgid "[SSL]: Common name: %c%s"
+msgstr "[SSL]: Nom com: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:60
+#, c-format
+msgid "[SSL]: Organization: %c%s"
+msgstr "[SSL]: Organitzaci� %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:61
+#, c-format
+msgid "[SSL]: Organizational unit: %c%s"
+msgstr "[SSL]: Unitat organitzativa: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:62
+#, c-format
+msgid "[SSL]: Country: %c%s"
+msgstr "[SSL]: Condat: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:63
+#, c-format
+msgid "[SSL]: State or province: %c%s"
+msgstr "[SSL]: Estat o Prov�cia: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:64
+#, c-format
+msgid "[SSL]: Locality: %c%s"
+msgstr "[SSL]: Localitat: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:58
+msgid "[SSL]: Issuer:"
+msgstr "[SSL]: Emissor:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:65
+#, c-format
+msgid "[SSL]: Public key: %c%s (%d bits)"
+msgstr "[SSL]: Clau pblica: %c%s (%d bits)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:66
+#, c-format
+msgid "[SSL]: Signature type: %c%s"
+msgstr "[SSL]: Tipus de firma: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:73
+#, c-format
+msgid "[SSL]: Signature contents: %c%s"
+msgstr "[SSL]: Continguts de la firma: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:82
+msgid "Peer X509 certificate"
+msgstr "Certificat X509 de l'altre part"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:85
+msgid "[SSL]: The peer didn't provide a certificate"
+msgstr "[SSL]: L'altre part no ha proporcionat un certificat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1219
+msgid "Current transmission cipher"
+msgstr "Xifrat de la transmissi�actual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:92
+msgid "[SSL]: Can't find out the current cipher info"
+msgstr "[SSL]: No puc trobar la informaci�de xifrat actual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:113
+#, c-format
+msgid "[%s]: [SSL]: Using certificate file %s"
+msgstr "[%s]: [SSL]: Fent servir l'arxiu de certificat %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:116
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the certificate file %s"
+msgstr ""
+"[%s]: [ERROR SSL]: Error de E/S d'arxiu mentres intentava emprar l'arxiu "
+"certificat %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:146
+#, c-format
+msgid "[%s]: [SSL ERROR]: %s"
+msgstr "[%s]: [ERROR SSL]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:136
+#, c-format
+msgid "[%s]: [SSL]: Using private key file %s"
+msgstr "[%s]: [SSL]: Emprant arxiu de clau privada %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:139
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the private key file %s"
+msgstr ""
+"[%s]: [ERROR SSL]: error de E/S en arxiu mentres intentava fer servir "
+"l'arxiu de clau privada %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:375
+msgid "Reconnect attempt aborted"
+msgstr "Intent de reconnexi�cancellat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:443
+msgid ""
+"This is the first connection in this IRC context: using the global server "
+"setting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:483
+msgid ""
+"No servers available. Check the options dialog or use the /SERVER command"
+msgstr ""
+"No hi ha servidors disponibles. Comprobi el di�eg d'opcions o utilitzi la "
+"comanda /SERVER"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:491
+msgid ""
+"Ooops.. you've hit a bug in the servers database... I have found a server "
+"but not a network..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:504
+msgid "No proxy hosts available, resuming direct connection"
+msgstr "No hi ha servidors proxy disponibles, continuant connexi�directa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:582
+#, c-format
+msgid "Connection attempt failed [%s]"
+msgstr "Intent de connexi�fallida [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:600
+#, c-format
+msgid "Will attempt to reconnect in %d seconds"
+msgstr "Intentar�reconectar en %d segons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:604
+#, c-format
+msgid "%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:606
+#, c-format
+msgid "%d of %d"
+msgstr "%d de %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:633
+#, c-format
+msgid "Maximum number of reconnect attempts reached (%d): giving up"
+msgstr "S'ha arribat al nombre m�im d'intents de reconnexi�(%d): desisteixo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:647
+msgid ""
+"The connection attempt failed while using a cached IP address for the "
+"current server"
+msgstr ""
+"L'intent de connexi�ha fallat mentres emprava una direcci�IP des de la "
+"cach�pel servidor actual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:648
+msgid "The problem *might* be caused by an updated DNS entry"
+msgstr "El problema *podria* estar causant per una entrada DNS actualitzada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:649
+msgid "Try reconnecting with caching disabled"
+msgstr "Intenta reconectar amb la cach�desactivada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:673
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:382
+msgid "%Q established [%s (%s:%u)]"
+msgstr "%Q establerta [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Secure connection"
+msgstr "Connexi�segura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Connection"
+msgstr "Connexi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:779
+#, c-format
+msgid "Connection terminated [%s (%s:%u)]"
+msgstr "Connexi�acabada [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:791
+msgid "The connection terminated unexpectedly. Trying to reconnect..."
+msgstr "La connexi�ha finalitzat inesperadament. Intentant reconectar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:874
+msgid "Sent QUIT, waiting for the server to close the connection..."
+msgstr "Enviant QUIT, esperant a que el servidor tanqui la connexi�.."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:685
+msgid "Normal text"
+msgstr "Text normal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:686
+msgid "Selection"
+msgstr "Selecci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:687
+msgid "Highlighted text"
+msgstr "Text ressaltat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:688
+msgid "URL foreground"
+msgstr "Color de primer pla d'URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:689
+msgid "Link overlay foreground"
+msgstr "Enlla�de la capa de primer pla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:690
+msgid "Parser error"
+msgstr "Error de l'analitzador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:691
+msgid "Parser warning"
+msgstr "Av� de l'analizatdor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:692
+msgid "Host lookup result"
+msgstr "Resultat de la cerca de la m�uina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:693
+msgid "Socket message"
+msgstr "Missatge de socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:694
+msgid "Socket warning"
+msgstr "Av� de socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:695
+msgid "Socket error"
+msgstr "Error en el socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:696
+msgid "System error"
+msgstr "Error de sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:697
+msgid "Raw data to server"
+msgstr "Dades raw al servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:698
+msgid "Connection status"
+msgstr "Estat de la connexi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:699
+msgid "System warning"
+msgstr "Av� del sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:700
+msgid "System message"
+msgstr "Missatge del sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:701
+msgid "Unhandled server reply"
+msgstr "Resposta del servidor no processada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:702
+msgid "Server information"
+msgstr "Informaci�del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:703
+msgid "Server Message of the Day"
+msgstr "Missatge del Dia del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:704
+msgid "Server ping"
+msgstr "Pings del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:705
+msgid "Join message"
+msgstr "Missatge Join"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:706
+msgid "Part message"
+msgstr "Missatge part"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:707
+msgid "Unrecognized/broken message"
+msgstr "Missatge no reconegut/erroni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:708
+msgid "Topic message"
+msgstr "Missatge del tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:709
+msgid "Own private message"
+msgstr "Missatge privat propi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:710
+msgid "Channel private message"
+msgstr "Missatge privat al canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:711
+msgid "Query private message"
+msgstr "Missatge de pregunta privada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:712
+msgid "CTCP reply"
+msgstr "Resposta CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:713
+msgid "CTCP request replied"
+msgstr "Sollicitud CTCP resposta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:714
+msgid "CTCP request ignored"
+msgstr "Sollicitud CTCP ignorada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:715
+msgid "CTCP request flood warning"
+msgstr "Sollicitud CTCP d'av� de saturaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:716
+msgid "CTCP request unknown"
+msgstr "Sollicitud CTCP desconeguda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:717
+msgid "User action"
+msgstr "Acci�d'usuari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:718
+msgid "Avatar change"
+msgstr "Canvi d'avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:719
+msgid "Quit message"
+msgstr "Missatge de sortida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:720
+msgid "Split message"
+msgstr "Missatge de divisi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:721
+msgid "Quit on netsplit message"
+msgstr "Sortir amb el missatge de netsplit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:722
+msgid "Nick changes"
+msgstr "Canvis de nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:723
+msgid "+o mode change"
+msgstr "canvi de mode +o"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:724
+msgid "-o mode change"
+msgstr "canvi de mode -o"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:725
+msgid "+v mode change"
+msgstr "canvi de mode +v"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:726
+msgid "-v mode change"
+msgstr "canvi de mode -v"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:727
+msgid "Multiple user mode change"
+msgstr "Canvi mltiple del mode d'usuari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:728
+msgid "Channel key change"
+msgstr "Canvi de clau del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:729
+msgid "Channel limit change"
+msgstr "Canvi del l�it del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:730
+msgid "+b mode change"
+msgstr "canvi de mode +b"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:731
+msgid "-b mode change"
+msgstr "canvi de mode -b"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:732
+msgid "+e mode change"
+msgstr "canvi de mode +e"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:733
+#, fuzzy
+msgid "-e mode change"
+msgstr "canvi de mode -o"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:734
+msgid "+I mode change"
+msgstr "canvi de mode +I"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:735
+msgid "-I mode change"
+msgstr "canvi de mode -I"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:736
+msgid "Multiple channel mode change"
+msgstr "canvi mltiple del mode de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:737
+msgid "Who reply"
+msgstr "Resposta Who"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:738
+msgid "DCC request"
+msgstr "Petici�DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:739
+msgid "DCC message"
+msgstr "Missatge DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:740
+msgid "DCC error"
+msgstr "Error DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:741
+msgid "Nickname problem"
+msgstr "Problema amb el nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:742
+msgid "Whois user reply"
+msgstr "Resposta d'usuari whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:743
+msgid "Whois channels reply"
+msgstr "Resposta de canal whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:744
+msgid "Whois idle reply"
+msgstr "Resposta en espera de whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:745
+msgid "Whois server reply"
+msgstr "Resposta whois del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:746
+msgid "Whois other reply"
+msgstr "Resposta d'un tercer a whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:747
+msgid "Channel creation time reply"
+msgstr "Resposta de data de creaci�del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:748
+msgid "Notify list joins"
+msgstr "Notificar unions a la llista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:749
+msgid "Notify list leaves"
+msgstr "Notificar abandonaments de la llista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:750
+msgid "Own encrypted private message"
+msgstr "Missatge xifrat privat propi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:751
+msgid "Channel encrypted private message"
+msgstr "Canal xifrat privat propi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:752
+msgid "Query encrypted private message"
+msgstr "Demanar missatge privat xifrat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:753
+msgid "DCC chat message"
+msgstr "Missatge de DCC chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:754
+msgid "Encrypted DCC chat message"
+msgstr "Missatge xifrat de DCC chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:755
+msgid "Login operations completed"
+msgstr "Operacions d'entrada completes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:756
+msgid "Kick action"
+msgstr "Acci�expulsar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:757
+msgid "Links reply"
+msgstr "Resposta enlla�s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:758
+msgid "Spam report"
+msgstr "Informe spam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:759
+msgid "ICQ message"
+msgstr "Missatge ICQ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:760
+msgid "ICQ user-message"
+msgstr "Missatge d'usuari ICQ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:761
+msgid "Outgoing ICQ user-message"
+msgstr "Missatge sortint d'usuari ICQ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:762
+msgid "Channel notice"
+msgstr "Not�ia de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:763
+msgid "Encrypted channel notice"
+msgstr "Not�ia de canal xifrat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:764
+msgid "Query notice"
+msgstr "Not�ia privada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:765
+msgid "Encrypted query notice"
+msgstr "Not�ia privada xifrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:766
+msgid "Server notice"
+msgstr "Not�ia del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:767
+msgid "Halfop mode change"
+msgstr "Canvi de mode semioperador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:768
+msgid "Unknown CTCP reply"
+msgstr "Resposta CTCP desconoeguda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:769
+msgid "NickServ message"
+msgstr "Missatge NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:770
+msgid "ChanServ message"
+msgstr "Missatge ChanServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:771
+msgid "Away message"
+msgstr "Missatge d'abs�cia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:772
+msgid "Ident message"
+msgstr "Missatge d'ident"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:773
+msgid "Channel list message"
+msgstr "Missatge de llista de canals"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:774
+msgid "Half-deop mode change"
+msgstr "Canvi de mode treure semioperador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:775
+msgid "Invite message"
+msgstr "Missatge d'invitaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:776
+msgid "Multimedia message"
+msgstr "Missatge multim�ia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:777
+msgid "Query trace message"
+msgstr "Rastrejar missatge privat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:778
+msgid "Wallops message"
+msgstr "Missatge a wallops"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:779
+msgid "Join error message"
+msgstr "Missatge d'error al unir-se"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:780
+msgid "Broadcast private message"
+msgstr "Missatge privat dif�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:781
+msgid "Broadcast notice"
+msgstr "Difondre not�ia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:782
+msgid "Am kicked"
+msgstr "Am expulsat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:783
+msgid "Am op'd"
+msgstr "Am opeat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:784
+msgid "Am voiced"
+msgstr "Am amb veu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:785
+msgid "Am deop'd"
+msgstr "Am desopeat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:786
+msgid "Am devoiced"
+msgstr "Am silenciat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:787
+msgid "Am halfop'd"
+msgstr "Am semiopeat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:788
+msgid "Am de-halfop'd"
+msgstr "Am semidesopeat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:789
+msgid "Ban matching my mask"
+msgstr "Prohibir concordant amb la meva m�cara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:790
+msgid "Unban matching my mask"
+msgstr "Desbanejar concordant amb la meva m�cara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:791
+msgid "Ban exception matching my mask"
+msgstr "Excepci�de prohibici�concorda amb la meva m�cara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:792
+msgid "Ban unexception matching my mask"
+msgstr "Prohibici�sense excepci�concorda amb la meva m�cara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:793
+msgid "Invite exception matching my mask"
+msgstr "Excepci�d'invitaci�concorda amb la meva m�cara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:794
+msgid "Invite unexception matching my mask"
+msgstr "Invitaci�sense excepci�concorda amb la meva m�cara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:795
+msgid "Ignored user message"
+msgstr "Missatge d'usuari ignorat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:796
+msgid "Server statistics"
+msgstr "Estad�tiques del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:797
+msgid "SSL message"
+msgstr "Missatge SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:108
+msgid "Search"
+msgstr "Cerca"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:799
+msgid "Generic success"
+msgstr "Succ� gen�ic"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:800
+msgid "Generic status"
+msgstr "Estat gen�ic"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:801
+msgid "Generic verbose message"
+msgstr "Missatge gen�ic detallat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:802
+msgid "Generic warning"
+msgstr "Av� gen�ic"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:803
+msgid "Generic error"
+msgstr "Error gen�ic"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:804
+msgid "Generic critical error"
+msgstr "Error cr�ic gen�ic"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:805
+msgid "Chan admin status set"
+msgstr "Posa't l'estat d'admin del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:806
+msgid "Chan admin status unset"
+msgstr "Traient l'estat d'admin del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:807
+msgid "Own chan admin status set"
+msgstr "Posat l'estatus d'admin propietari del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:808
+msgid "Own chan admin status unset"
+msgstr "Traient l'estatus d'administrador propietari del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:809
+msgid "Userop mode change"
+msgstr "Canvi de mode usuari operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:810
+msgid "User-deop mode change"
+msgstr "Canvi del mode usuari no operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:811
+msgid "Am userop'd"
+msgstr "Am opeat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:812
+msgid "Am de-userop'd"
+msgstr "Am desopeat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:813
+msgid "Verbose/Debug"
+msgstr "Detallat/Depuraci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:814
+msgid "Chan owner status set"
+msgstr "Posat l'estatus de propietari del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:815
+msgid "Chan owner status unset"
+msgstr "Tret l'estatus de propietari del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:816
+msgid "Own chan owner status set"
+msgstr "Posat l'estatus de propietari del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:817
+msgid "Own chan owner status unset"
+msgstr "Tret l'estatus de propietari del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:818
+#, fuzzy
+msgid "Server error"
+msgstr "Error de l'analitzador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:22
+#, fuzzy
+msgid "Help"
+msgstr "Ajuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:820
+#, fuzzy
+msgid "Text Encoding Server message"
+msgstr "Missatge d'error al unir-se"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:826
+#, fuzzy
+msgid "BitTorrent message"
+msgstr "Missatge d'ident"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:970
+msgid "Missing absolute directory for the theme information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:978
+#, fuzzy
+msgid "Failed to create the theme directory"
+msgstr "No puc crear el directori per al tema."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1061
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1096
+#, fuzzy
+msgid "Failed to save one of the theme images"
+msgstr "Ha fallat la c�rega de l'arxiu d'imatge triat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1074
+#, fuzzy
+msgid "Failed to create the theme subdirectory"
+msgstr "No puc crear el directori per al tema."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1213
+msgid "Boolean options (1/0)"
+msgstr "Opcions booleanes (1/0)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1214
+msgid "Rectangle options (x,y,width,height)"
+msgstr "Opcions per a el rectangle (x,y,ample, al�da)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1215
+msgid "String options (string value)"
+msgstr "Opcions de cadena (valor de la cadena)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1216
+msgid "Color options (#RRGGBB)"
+msgstr "Opcions de color (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1217
+msgid "Mirccolor options (#RRGGBB)"
+msgstr "Opcions de color Mirc (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1218
+msgid "Irc context color options (#RRGGBB)"
+msgstr "Opcions de color de context Irc (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1219
+msgid "Pixmap options (image path)"
+msgstr "Opcions del gr�ic (ruta de la imatge)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1220
+msgid "Unsigned integer options (unsigned integer constant)"
+msgstr "Opcions d'enters sense signe (constant unsigned integer)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1221
+msgid "Font options (family,pointsize,style,charset,weight,flags (biusf))"
+msgstr ""
+"Opcions de fonts (fam�ia,mida de punt, estil, conjunt de car�ters, amplada, "
+"flags (biusf))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1222
+msgid "Message color options (image_id,foreground,background,logFlag (0/1))"
+msgstr "Opcions de color de missatge (imatge,primer pla,fons,logFlag (0/1))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1223
+msgid "String list options (comma separated list of strings)"
+msgstr "Opcions de llista de car�ters (llista de cadenes separades per comes)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC"
+msgstr "IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC Context related actions"
+msgstr "Accions relatives al Context d'IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic"
+msgstr "Gen�ic"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic actions"
+msgstr "Accions gen�iques"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Settings"
+msgstr "Configuracions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Actions related to settings"
+msgstr "Accions relacionades amb la configuraci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:30
+msgid "Scripting"
+msgstr "Scripting"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+msgid "Scripting related actions"
+msgstr "Accions relacionades amb els scripts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "GUI"
+msgstr "IGU"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "Actions related to the Graphic User Interface"
+msgstr "Accions relacionades amb la Interf�ie Gr�ica d'Usuari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:77
+msgid "Channel"
+msgstr "Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+#, fuzzy
+msgid "IRC Channel related actions"
+msgstr "Accions relatives al Context d'IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+#, fuzzy
+msgid "Tools"
+msgstr "Eines"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Actions that will appear in the \"Tools\" menu"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:157
+msgid "Sending out PING based lag probe"
+msgstr "Enviant prova de retr� basada en PING"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:167
+msgid "Sending out CTCP based lag probe"
+msgstr "Enviant prova de retr� basada en CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:188
+#, c-format
+msgid "Registered lag check with reliability %u (%s)"
+msgstr "Comprobaci�de retr� registrada amb fiabilitat %u (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:220
+#, c-format
+msgid "Lag check completed (%s)"
+msgstr "Comprobaci�de retr� completada (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:259
+#, c-format
+msgid "Lag check aborted (%s)"
+msgstr "Comprobaci�de retr� cancellada (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:143
+msgid "Hostname resolution aborted"
+msgstr "Cancellada la resoluci�del nom de m�uina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:156
+msgid "Attempting %Q to %Q (%Q) on port %u"
+msgstr "Intentant %Q a %Q (%Q) en el port %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "secure connection"
+msgstr "connexi�segura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "connection"
+msgstr "connexi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:165
+#, c-format
+msgid "Attempting to 'bounce' on proxy %s on port %u (protocol %s)"
+msgstr "Intentant reiniciar�el proxy %s en el port %u (protocol %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:194
+#, c-format
+msgid "Using cached proxy IP address (%s)"
+msgstr "Utilitzant direcci�IP de proxy cachejada (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:237
+msgid "Unable to look up the IRC proxy hostname: Can't start the DNS slave"
+msgstr ""
+"Incapa�de buscar el nom de m�uina del proxy irc: no es pot iniciar el DNS "
+"esclau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:265
+msgid "Resuming direct server connection"
+msgstr "Continuant connexi�directa al servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:248
+#, c-format
+msgid "Looking up the proxy hostname (%s)..."
+msgstr "Buscant el nom de m�uina del proxy (%s)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:261
+msgid "Can't find the proxy IP address: %Q"
+msgstr "No he pogut trobar l'adre� IP del proxy: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:271
+#, fuzzy
+msgid "Proxy hostname resolved to %Q"
+msgstr "Nom de m�uina del proxy resolt a %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:284
+#, fuzzy
+msgid "Proxy %Q has a nickname: %Q"
+msgstr "El proxy %s t�un nick: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:322
+#, c-format
+msgid "Using cached server IP address (%s)"
+msgstr "Utilitzant l'adre� IP del servidor cachejada (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:354
+msgid "Unable to look up the server hostname: Can't start the DNS slave"
+msgstr ""
+"Incapa�de trobar el nom de m�uina del servidor: no he pogut iniciar el DNS "
+"esclau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:359
+#, c-format
+msgid "Looking up the server hostname (%s)..."
+msgstr "Resolent el nom del servidor (%s)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:373
+msgid "Can't find the server IP address: %Q"
+msgstr "No puc trobar l'adre� IP del servidor: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:380
+#, fuzzy
+msgid "If this server is an IPv6 one, try /server -i %Q"
+msgstr "Si aquest server utilitza IPv6, intenti /server -i %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:390
+#, fuzzy
+msgid "Server hostname resolved to %Q"
+msgstr "Nom del servidor resolt a: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:400
+#, fuzzy
+msgid "Real hostname for %Q is %Q"
+msgstr "El nom de m�uina real de %s � %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:414
+#, fuzzy
+msgid "Server %Q has a nickname: %Q"
+msgstr "El servidor %s t�un nick: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:468
+msgid "The specified bind address (%Q) is not valid"
+msgstr "L'adre� d'enlla�(bind) especificada (%Q) no � v�ida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:473
+msgid ""
+"The specified bind address (%Q) is not valid (the interface it refers to "
+"might be down)"
+msgstr ""
+"L'adre� d'enlla�especificada (%Q) no � v�ida (la interf�ie a la que es "
+"refereix pot estar caiguda)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:493
+#, c-format
+msgid "The system-wide IPv6 bind address (%s) is not valid"
+msgstr "L'adre� general del sistema d'enlla�(bind) IPv6 (%s) no � v�ida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:500
+#, c-format
+msgid ""
+"The system-wide IPv6 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+"L'adre� general de sistema d'enlla�(bind) IPv6 (%s) no � v�ida (La interf�ie "
+"a la que es refereix pot estar caiguda)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:522
+#, c-format
+msgid "The system-wide IPv4 bind address (%s) is not valid"
+msgstr "L'adre� general del sistema d'enlla�(bind) IPv4 (%s) no � v�ida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:529
+#, c-format
+msgid ""
+"The system-wide IPv4 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+"L'adre� general de sistema d'enlla�(bind) IPv4 (%s) no � v�ida (La interf�ie "
+"a la que es refereix pot estar caiguda)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:230
+msgid "Channel operators"
+msgstr "Operadors de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:231
+msgid "Voiced users"
+msgstr "Usuaris amb veu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:232
+msgid "Half-operators"
+msgstr "semioperadors"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:233
+msgid "Ban masks"
+msgstr "M�cares de prohibici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:234
+msgid "Color free (no ANSI colors)"
+msgstr "Llibre de colors (sense colors ANSI)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:235
+msgid "Ban exception masks"
+msgstr "M�cares d'excepcions a prohibicions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:236
+msgid "Invite exception masks or forbid /INVITE"
+msgstr "M�cares d'excepci�d'invitaci�o prohibir /INVITE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:237
+msgid "Secret"
+msgstr "Secret"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:238
+msgid "Private"
+msgstr "Privat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:239
+msgid "Topic change restricted"
+msgstr "Canvi de tema restringit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:240
+msgid "Invite only"
+msgstr "Nom�per invitaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:241
+msgid "No external messages"
+msgstr "Sense missatges externs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:242
+msgid "Anonymous or protected user"
+msgstr "Usuari an�im o protegit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:243
+msgid "Quiet or channel owner"
+msgstr "Callat o propietari del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:244
+msgid "Limited number of users"
+msgstr "Nombre limitat d'usuaris"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:245
+msgid "Key"
+msgstr "Clau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:246
+msgid "Moderated"
+msgstr "Moderat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:247
+msgid "Registered"
+msgstr "Registrat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:248
+msgid "Censor swear words"
+msgstr "Paraulotes censurades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:249
+msgid "Impossible to speak and change nick if not authenticated with NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:250
+msgid "Impossible to change nick if not authenticated with NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:251
+msgid "Only registered nicks can join"
+msgstr "Nom� poden unir-se els nicks registrats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:252
+msgid "No kicks able (unless U-Line)"
+msgstr "No es permeten expulsions (a menys que es posi una U-Line)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:253
+msgid "IRC-Op only channel"
+msgstr "Canal nom� per a IRC-Op"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:254
+msgid "Server/Network/Tech Admin only channel"
+msgstr "Canal nom� per a l'Administrador del Servidor/Xarxa/T�nic"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:255
+msgid "Forbid /KNOCK"
+msgstr "Prohibit /KNOCK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:256
+msgid "Strip colors"
+msgstr "Treure colors"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:257
+msgid "Redirect on channel full"
+msgstr "Redirigir quan el canal s'ompli"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:258
+msgid "Forbid channel CTCPs"
+msgstr "Es prohibeixen CTCPs de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:259
+msgid "User-operators OR Auditorium: /NAMES and /WHO show only ops"
+msgstr "Usuaris operadors i auditori : /NAMES i /WHO nom� mostren els ops"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:260
+msgid "Only 7-bit letters in nicknames allowed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:261
+msgid "Impossible to use both 7-bit and 8-bit letters in nicknames"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:270
+msgid "o: IRC operator (OPER)"
+msgstr "o: operador d'IRC (OPER)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:271
+msgid "O: Local IRC operator (LOCOP)"
+msgstr "O: Operador d'IRC local (LOCOP)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:272
+msgid "i: Invisible"
+msgstr "i: Invisible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:273
+msgid "w: Recipient for WALLOPS messages"
+msgstr "w: Destinatari de missatges WALLOPS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:274
+msgid ""
+"r: User with restricted connection (or recipient for messages about rejected "
+"bots)"
+msgstr ""
+"r: Usuari amb connexi�restringida (o receptor per a missatges sobre bots "
+"rebutjat)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:275
+msgid "s: Recipient for server notices"
+msgstr "s: Destinatari de not�ies de servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:276
+msgid "z: Recipient for oper wallop messages"
+msgstr "z: Destinatari de missatges oper wallop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:277
+msgid "c: Recipient for cconn messages"
+msgstr "c: Destinatari de missatges cconn"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:278
+msgid "k: Recipient for server kill messages"
+msgstr "k: Destinatari de missatges server kill"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:279
+msgid "f: Recipient for full server notices"
+msgstr "f: Destinatari de full server notices"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:280
+msgid "y: Spy :)"
+msgstr "y: Espia :)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:281
+msgid "d: Obscure 'DEBUG' flag"
+msgstr "d: Flag de 'DEPURACI� obscura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:282
+msgid "n: Recipient for nick changes"
+msgstr "n: Receptor de canvis de nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:100
+#, fuzzy
+msgid "Ops... for some reason the link filter object has been destroyed"
+msgstr "Ups... per alguna ra�l'objecte d'enlla�ha sigut destru�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:138
+msgid "Using filtered IRC protocol: Link filter is \"%Q\""
+msgstr "Usant protocol IRC filtrat: El filtre d'enlla�� \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:143
+msgid "Failed to set up the link filter \"%Q\", will try with plain IRC"
+msgstr "Fallida en l'inici del filtre d'enlla�\"%Q\", s'intentar�amb IRC pla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:202
+msgid "Failed to start the connection: %Q"
+msgstr "Fallida al comen�r la connexi� %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:368
+msgid "Contacting %Q %s (%s) on port %u"
+msgstr "Contactant amb %Q %s (%s) en el port %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "proxy host"
+msgstr "servidor proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "IRC server"
+msgstr "Servidor IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:375
+#, c-format
+msgid "Low-level transport connection established [%s (%s:%u)]"
+msgstr "Establerta connexi�de transport de baix nivell [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:379
+msgid "Starting Secure Socket Layer handshake"
+msgstr "Comen�nt la negociaci�SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Secure proxy connection"
+msgstr "Connexi�segura a proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Proxy connection"
+msgstr "Connexi�a proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:387
+msgid "Negotiating relay information"
+msgstr "Negociant informacio de retransmissi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:390
+msgid "Sent connection request, waiting for acknowledgement"
+msgstr "Enviat petici�de connexi� esperant la confirmaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:393
+msgid "Sent target host data, waiting for acknowledgement"
+msgstr "Enviades les dades de la m�uina de dest� esperant confirmaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:396
+msgid "Sent auth method request, waiting for acknowledgement"
+msgstr "Enviant petici�de m�ode d'autentificaci� esperant confirmaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:399
+msgid "Sent username and password, waiting for acknowledgement"
+msgstr "Enviats usuari i clau, esperant confirmaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:402
+msgid "Sent connection request, waiting for \"HTTP 200\" acknowledgement"
+msgstr "Enviada petici�de connexi� esperant per a confirmaci�\"HTTP 200\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:176
+msgid "[SSL]: %Q"
+msgstr "[SSL]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:181
+msgid "[SSL ERROR]: %Q"
+msgstr "[ERROR SSL]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:190
+msgid "[PROXY]: %Q"
+msgstr "[PROXY]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:200
+msgid "[PROXY ERROR]: %Q"
+msgstr "[ERROR DE PROXY]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:207
+msgid "[SOCKET]: %Q"
+msgstr "[SOCKET]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:212
+msgid "[SOCKET ERROR]: %Q"
+msgstr "[ERROR DE SOCKET]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:218
+msgid "[SOCKET WARNING]: %Q"
+msgstr "[ALERTA DE SOCKET]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:337
+#, c-format
+msgid "Binding to local address %s"
+msgstr "Associant-se a l'adre� local %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:341
+#, c-format
+msgid ""
+"Binding to local address %s failed: the kernel will choose the correct "
+"interface"
+msgstr ""
+"Ha fallat l'associaci�a l'adre� local %s: el nucli triar�l'interf�ie correcta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:637
+msgid "Using HTTP protocol."
+msgstr "Fent servir protocol HTTP."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:683
+msgid "Using SOCKSV4 protocol."
+msgstr "Fent servir protocol SOCKSV4."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:756
+#, fuzzy
+msgid "Using SOCKSv5 protocol."
+msgstr "Fent servir protocol SOCKSV5."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:771
+msgid "We can accept auth method 0 (no auth)"
+msgstr "Podem acceptar el m�ode d'autentificaci�0 (sense auth)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:779
+msgid "We can accept auth method 0 (no auth) or 2 (user/pass)"
+msgstr ""
+"Podem acceptar el m�ode d'autentificaci�0 (sense auth) o 2 (usuari/clau)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:958
+msgid "Proxy response: auth OK: access granted"
+msgstr "Resposta del proxy: auth OK: acc� perm� "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:993
+msgid "Proxy response: Auth method OK: using method 0 (no auth)"
+msgstr "Resposta del proxy: M�ode d'auth OK: fent servir m�ode 0 (no auth)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1000
+msgid "Proxy response: Auth method OK: using method 2 (user/pass)"
+msgstr "Resposta del proxy: M�ode auth OK: Fent servir m�ode 2 (usuari/clau)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1056
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1113
+msgid "Proxy response: target data OK: request granted"
+msgstr "Resposta del proxy: dest�de dades OK: Acc� perm�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1153
+msgid "Proxy response: "
+msgstr "Resposta del proxy: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1164
+#, fuzzy
+msgid "Proxy said something about: \n"
+msgstr "El proxy ha dit alguna cosa de \""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1205
+msgid "Server X509 certificate"
+msgstr "Certificat X509 del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1209
+msgid "The server didn't provide a certificate"
+msgstr "El servidor no ha proporcionat un certificat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1223
+msgid "Unable to determine the current cipher"
+msgstr "Incapa�de determinar el xifrat actual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1768
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1788
+msgid "Partial socket write: packet broken into smaller pieces."
+msgstr "Escriptura parcial en socket: Paquet dividit a peda�s m� petits."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:60
+#, fuzzy
+msgid "The theme information file does not exist"
+msgstr "L'acci�\"%1\" no existeix"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:71
+msgid ""
+"This KVIrc executable is too old for this theme (minimum theme engine "
+"version required is %Q while this theme engine has version %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:80
+#, fuzzy
+msgid "Theme information file is not valid"
+msgstr "L'adre� d'enlla�(bind) especificada (%Q) no � v�ida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:248
+#, fuzzy
+msgid "Failed to load the specified screenshot image"
+msgstr "Ha fallat la c�rega de l'arxiu d'imatge triat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:257
+#, fuzzy
+msgid "Invalid option"
+msgstr "Temps d'expiraci�no v�id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:265
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:293
+#, fuzzy
+msgid "Failed to save the screenshot image"
+msgstr "Ha fallat la c�rega de l'arxiu d'imatge triat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:117
+#, fuzzy
+msgid "Configure Servers..."
+msgstr "Configurar Servidors"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:118
+msgid "Allows you to configure the servers and eventually to connect to them"
+msgstr "Permet configurar els servidores i eventualment connectar-se a ells"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:128
+#, fuzzy
+msgid "Manage Addons..."
+msgstr "Carregant icones..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:129
+msgid "Allows you to manage the script-based addons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:139
+#, fuzzy
+msgid "Configure Registered Users..."
+msgstr "Configurar Usuaris &Registrats..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:140
+#, fuzzy
+msgid "Shows a dialog that allows editing the registered user entries"
+msgstr "Mostra una finestra que permeti editar els events d'script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:150
+#, fuzzy
+msgid "Configure Identity..."
+msgstr "Configurar Identitat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:151
+msgid "Allows you to configure nickname, username, avatar etc..."
+msgstr "Permet configurar el teu nick, nom d'usuari, avatar, etc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:161
+#, fuzzy
+msgid "Show SocketSpy..."
+msgstr "Mostrar Espia de Sockets"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:162
+msgid "Shows a window that allows monitoring the socket traffic"
+msgstr "Mostra una finestra que permet monitoritzar el tr�ic dels sockets"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:172
+msgid "Get Network Links"
+msgstr "Obtenir Enlla�s de Xarxa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:173
+msgid "Shows a window that allows viewing the network links"
+msgstr "Mostra una finestra que permeti visualitzar els enlla�s de xarxa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:183
+msgid "Get Channel List"
+msgstr "Obtenir la Llista de Canals"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:184
+msgid "Shows a window that allows listing the network channels"
+msgstr "Mostra una finestra que permet llistar els canals de la xarxa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:194
+#, fuzzy
+msgid "Configure KVIrc..."
+msgstr "&Configurar KVIrc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:195
+msgid "Shows the general options dialog"
+msgstr "Mostra el di�eg general d'opcions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:205
+#, fuzzy
+msgid "Configure Theme..."
+msgstr "Configurar Servidors"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:206
+#, fuzzy
+msgid "Shows the theme options dialog"
+msgstr "Mostra el di�eg general d'opcions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:216
+#, fuzzy
+msgid "Manage Themes..."
+msgstr "Configurar Servidors"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:217
+msgid "Allows you to manage the themes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:227
+#, fuzzy
+msgid "Customize Toolbars..."
+msgstr "Barres d'Eines personalitzades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:228
+msgid "Shows a window that allows editing script toolbars"
+msgstr ""
+"Mostra una finestra que permet editar els scripts de les barres d'eines"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:239
+#, fuzzy
+msgid "Join Channels..."
+msgstr "Unir-se a Canals..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:240
+msgid "Shows a dialog that allows you joing channels"
+msgstr "Mostra un di�eg que et permet unir-te a canals"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:251
+#, fuzzy
+msgid "Edit Actions..."
+msgstr "Carregant accions..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:252
+#, fuzzy
+msgid "Shows a window that allows editing actions"
+msgstr "Mostra una finestra que permet editar els �ies"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:262
+#, fuzzy
+msgid "Edit Aliases..."
+msgstr "&Alies..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:263
+msgid "Shows a window that allows editing aliases"
+msgstr "Mostra una finestra que permet editar els �ies"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:273
+#, fuzzy
+msgid "Edit Events..."
+msgstr "&Events..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:274
+msgid "Shows a window that allows editing script events"
+msgstr "Mostra una finestra que permeti editar els events d'script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:284
+#, fuzzy
+msgid "Edit Popups..."
+msgstr "Mens emergents..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:285
+msgid "Shows a window that allows editing popup menus"
+msgstr "Mostra una finestra que et permet editar els mens emergents"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:295
+#, fuzzy
+msgid "Edit Raw Events..."
+msgstr "Events &Raw..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:296
+msgid "Shows a window that allows editing raw scripting events"
+msgstr "Mostra una finestra que permet editar els events d'scripts purs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:306
+#, fuzzy
+msgid "New Script Tester"
+msgstr "Comprovador d'Script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:307
+#, fuzzy
+msgid "Creates an embedded editor for long scripts"
+msgstr "Mostra un editor incrustat per a scripts grans"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:317
+msgid "Execute Script..."
+msgstr "Executar Script..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:318
+msgid "Allows executing a KVS script from file"
+msgstr "Permet executar un script KVS des d'un arxiu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:328
+msgid "Help Index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:329
+#, fuzzy
+msgid "Shows the documentation index"
+msgstr "Mostra el di�eg general d'opcions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:340
+#, fuzzy
+msgid "Allows subscribing to the KVIrc mailing list"
+msgstr "Subscriure's a la Llista de Correu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:350
+#, fuzzy
+msgid "KVIrc WWW"
+msgstr "KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:351
+#, fuzzy
+msgid "Opens the KVIrc homepage"
+msgstr "P�ina de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:361
+#, fuzzy
+msgid "KVIrc Russian WWW"
+msgstr "P�ina de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:362
+#, fuzzy
+msgid "Opens the KVIrc homepage in russian"
+msgstr "P�ina de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:372
+msgid "Acquire Screenshot"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:373
+msgid "Acquires a Screenshot of the KVIrc main window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:385
+msgid "Cascade windows"
+msgstr "Finestres en cascada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:386
+msgid "Arranges the MDI windows in a maximized-cascade fashion"
+msgstr "Organitza las finestres MDI en un estil de cascada maximitzada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:397
+msgid "Tile windows"
+msgstr "Mosaic de finestres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:398
+msgid "Tiles the MDI windows with the currently selected tile method"
+msgstr "Posa en mosaic les finestres MDI amb el m�ode de mosaic triat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:409
+msgid "Minimize all windows"
+msgstr "Minimitzar totes les finestres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:410
+msgid "Minimized all the currently visible MDI windows"
+msgstr "Minimitza totes les finestres MDI actualment visibles"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:421
+msgid "New IRC Context"
+msgstr "Nou Context d'IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:422
+msgid "Creates a new IRC context console"
+msgstr "Crea una nova consola de context d'IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:433
+msgid "Quit KVIrc"
+msgstr "Sortir de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:434
+msgid "Quits KVIrc closing all the current connections"
+msgstr "Sortir de KVIrc tancant totes les connexions actuals"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:448
+msgid "IRC Context Display"
+msgstr "Finestra de Context d'IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:449
+msgid "Shows a small display with IRC context informations"
+msgstr "Mostra una petita finestra amb les informacions de context d'iRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:520
+msgid "Acts as a separator for other items: performs no action"
+msgstr "Actua com un separador per a altres elements: no realitza cap acci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:554
+msgid "Connect/Disconnect"
+msgstr "Connectar/Desconnectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:555
+msgid ""
+"Allows you to connect to a server or to terminate the current connection"
+msgstr "Permet connectar-se a un servidor o finalitzar la connexi�actual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:628
+msgid "Connect"
+msgstr "Connectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:629
+msgid "Abort Connection"
+msgstr "Cancellar Connexi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:790
+msgid "Join Channel"
+msgstr "Unir-se a un Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:791
+msgid "Shows a popup menu that allows quickly selecting a channel to join"
+msgstr ""
+"Mostra un men emergent que permet seleccionar r�idament un canal per unir-se"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:851
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:863
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:896
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:907
+msgid "Other..."
+msgstr "Altres..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:834
+msgid "Change Nickname"
+msgstr "Canviar Nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:835
+msgid "Shows a popup menu that allows quickly changing the nickname"
+msgstr "Mostra un men emergent que permet canviar r�idament el nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:883
+msgid "Connect To"
+msgstr "Connectar a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:884
+msgid "Shows a popup menu that allows quickly connecting to a server"
+msgstr "Mostra un men emergent que permet connectar-se r�idament a un servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:929
+msgid "User Mode"
+msgstr "Mode d'usuari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:930
+msgid "Shows a popup menu that allows quickly changing user modes"
+msgstr "Mostra un men emergent que permet canviar r�idament els modes d'usuari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:947
+msgid "Wallops (+w)"
+msgstr "Wallops (+w)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:949
+msgid "Server Notices (+s)"
+msgstr "Not�ies del Servidor (+s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:951
+msgid "Invisible (+i)"
+msgstr "Invisible (+i)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:997
+msgid "Away/Back"
+msgstr "Absentar-se/Tornar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:998
+#, fuzzy
+msgid "Allows entering and leaving away state"
+msgstr "Permet entrar i sortir del estat absent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1065
+msgid "Enter Away Mode"
+msgstr "Entrar en Mode Absent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1066
+msgid "Leave Away Mode"
+msgstr "Abandonar el Mode Absent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1135
+msgid "Irc Tools"
+msgstr "Eines d'IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1136
+msgid "Shows a popup menu with some IRC Tools"
+msgstr "Mostra un men emergent amb algunes eines d'IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1171
+msgid "Irc Actions"
+msgstr "Accions IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1172
+msgid "Shows a popup menu with some IRC Actions"
+msgstr "Mostra un men emergent amb algunes accions IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:412
+msgid "KVIrc KVS Script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:174
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:420
+#, fuzzy
+msgid "Run KVS Script"
+msgstr "Script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:284
+#, fuzzy
+msgid "URL:IRC Protocol"
+msgstr "Protocol:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:383
+#, fuzzy
+msgid "Open with KVIrc"
+msgstr "P�ina de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:436
+#, fuzzy
+msgid "KVIrc Configuration File"
+msgstr "Configuraci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:453
+#, fuzzy
+msgid "KVIrc Theme Package"
+msgstr "P�ina de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:461
+msgid "Install Theme Package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:478
+msgid "KVIrc Addon Package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:486
+msgid "Install Package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:749
+#, c-format
+msgid ""
+"Ops...it looks like I can't load modules on this sytem.\n"
+"I have been looking for the %s library but I haven't been able to load it\n"
+"due to the following error: \"%s\"\n"
+"Aborting."
+msgstr ""
+"Ups...sembla ser que no puc descarregar m�uls en aquest sistema.\n"
+"He buscat la biblioteca %s per�no he pogut carregar-la\n"
+"degut al segent error: \"%s\"\n"
+"Interrompent."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:762
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_begin\" function.\n"
+"Aborting!"
+msgstr ""
+"Ups... sembla que t�una distribuci�defectuosa.\n"
+"El m�ul de configuraci�no exporta la funci�\"setup_begin\".\n"
+"Interrompent!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:776
+msgid "Setup aborted"
+msgstr "Configuraci�interrompuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:801
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_finish\" function.\n"
+"Trying to continue anyway..."
+msgstr ""
+"Ups... sembla que tens una distribuci�defectuosa.\n"
+"El m�ul de configuraci�no exporta la funci�\"setup_finish\".\n"
+"Intentant continuar de totes formes..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:186
+msgid "%Q is on IRC"
+msgstr "%Q est�a l'IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:248
+msgid "%Q has left IRC"
+msgstr "%Q ha abandonat l'IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:368
+msgid "Notify list: No users to check for, quitting"
+msgstr "Llista de Notificaci� No hi ha usuaris que comprovar, aturant."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:414
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (15 sec)"
+msgstr ""
+"Llista de Notificaci� El timeout (%d segs) � massa petit, posant un valor m� "
+"raonable (15 segons)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:428
+msgid "Notify list: Notify list empty, quitting"
+msgstr "Llista de Notificaci� llista de notificaci�buida, aturant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:455
+#, c-format
+msgid ""
+"Notify list: ISON delay (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+"Llista de notificaci� el retard ISON (%d segs) � massa petit, posant-ne un "
+"m� raonable (5 segs)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:491
+msgid "Notify list: Checking for: %Q"
+msgstr "Llista de notificaci� comprovant: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:535
+msgid ""
+"Notify list: Hey! You've used ISON behind my back? (I might be confused "
+"now...)"
+msgstr ""
+"Llista de notificaci� Eh! Has emprat ISON d'amagat meu? (Ara puc estar "
+"conf�...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:682
+msgid "registration mask changed, or nickname is being used by someone else"
+msgstr "ha canviat la m�cara de registre o el nick est�fent-se servir per alg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:686
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (registration mask does not match, or nickname is being used "
+"by someone else)"
+msgstr ""
+"Llista de notificaci� Sembla que \r!n\r%Q\r est�conectat, per�la m�cara [%Q@"
+"\r!h\r%Q\r] no concorda (alg est�fent servir el seu nick o la m�cara que ha "
+"posat no concorda)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:691
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? "
+"(restarting)"
+msgstr ""
+"Llista de notificaci� inconsist�cia inesperada, base de dades d'usuaris "
+"registrats modificada? (reiniciant)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:698
+msgid ""
+"Notify list: Unexpected inconsistency, expected \r!n\r%Q\r in the registered "
+"user DB"
+msgstr ""
+"Llista de notificaci� inconsist�cia inesperada, esperava tindre a \r!n\r%Q\r "
+"a la BD d'usuaris registrats..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:712
+#, c-format
+msgid ""
+"Notify list: USERHOST delay (%d sec) is too short, resetting to something "
+"more reasonable (5 sec)"
+msgstr ""
+"Llista de notificaci� El retard de la llista de notificaci�USERHOST (%d "
+"segs) � massa petit, reiniciant-ho a una cosa m� raonable (5 segs)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:726
+msgid "Notify list: Unexpected inconsistency, userhost list is empty!"
+msgstr ""
+"Llista de notificaci� Inconsist�cia inesperada, i la llista d'usuaris-"
+"m�uines est�buida!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:761
+msgid "Notify list: Checking userhost for: %Q"
+msgstr "Llista de notificaci� Comprovant usuari-m�uina per a : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:831
+msgid ""
+"Notify list: Hey! You've used USERHOST behind my back? (I might be confused "
+"now...)"
+msgstr ""
+"Llista de notificaci� Eh! Has emprat USERHOST a les meves esquenes? (puc "
+"estar conf� ara...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:836
+#, c-format
+msgid "Notify list: Broken USERHOST reply from the server? (%s)"
+msgstr ""
+"Llista de notificaci� he obtingut una resposta USERHOST err�ia del servidor? "
+"(%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:860
+msgid ""
+"Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST reply "
+"was received, will recheck in the next loop"
+msgstr ""
+"Llista de notificaci� Sembla ser que \r!n\r%Q\r s'ha desconectat mentre "
+"esperava la seva resposta USERHOST, es recomprovar�en el pr�im cicle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:931
+msgid "Starting notify list"
+msgstr "Iniciant la llista de notificaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:936
+msgid "No users in the notify list"
+msgstr "No hi ha usuaris a la llista de notificaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:958
+msgid "Notify list: Checking for:%Q"
+msgstr "Llista de notificaci� Comprovant:%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1013
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+"Llista de notificaci� El temps d'expiraci�(%d segs) � massa curt, iniciant-"
+"ho a alguna cosa m� raonable (5 segs)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1139
+msgid "Notify list: Adding watch entries for%Q"
+msgstr "Llista de notificaci� Afegint entrades watch per a %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1171
+msgid "watch entry listing requested by user"
+msgstr "llistat d'entrades vigilades solicitada per l'usuari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1175
+msgid "possible watch list desync"
+msgstr "possible desync de la llista de vigil�cia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1185
+msgid "registration mask changed or desync with the watch service"
+msgstr ""
+"ha canviat la m�cara de registre o s'ha dessincronitzat amb el servei de "
+"vigil�cia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1190
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (watch: registration mask does not match, or nickname is "
+"being used by someone else)"
+msgstr ""
+"Llista de notificaci�: \r!n\r%Q\r sembla estar conectat, per�la m�cara [%Q@"
+"\r!h\r%Q\r] no concorda (watch: alg m� est�fent servir el seu nick o la seva "
+"m�cara de registre no concorda)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1197
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? (watch: "
+"restarting)"
+msgstr ""
+"Llista de Notificaci� inconsist�cia inesperada, BD d'usuaris registrats "
+"modificada? (watch: reiniciant)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1207
+msgid "watch entry added by user"
+msgstr "entrada de vigil�cia afegida per l'usuari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1245
+msgid "removed from watch list"
+msgstr "eliminada de la llista de vigil�cia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1248
+msgid "Notify list: Stopped watching for \r!n\r%Q\r"
+msgstr "Llista de notificaci� aturant el seguiment per a: \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1258
+msgid "watch"
+msgstr "vigil�cia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1264
+msgid "Notify list: \r!n\r%Q\r is offline (watch)"
+msgstr "Llista de notificaci� \r!n\r%Q\r est�desconnectada (watch)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1267
+msgid "unmatched watch list entry"
+msgstr "entrada de la llista de vigil�cia no coincident"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:80
+#, fuzzy
+msgid "commandline::userfriendly"
+msgstr "No s'ha especificat la l�ia de comanda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:94
+#, fuzzy
+msgid "commandline::kvs"
+msgstr "No s'ha especificat la l�ia de comanda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:127
+msgid "You are not connected to a server"
+msgstr "No est�conectat a un servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_iconmanager.cpp:372
+msgid "Icon Table"
+msgstr "Taula d'Icones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:190
+#, fuzzy
+msgid "No "
+msgstr "No"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:196
+msgid "This module has no version informations: refusing to load it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:204
+msgid ""
+"This module was compiled for a different KVIrc version and can't be loaded"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:232
+msgid "Failed to execute the init routine"
+msgstr "Errada al executar la ruta d'inici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:261
+#, c-format
+msgid "Loaded module '%s' (%s)"
+msgstr "Carregant el m�ul '%s' (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:306
+#, c-format
+msgid "Unloaded module '%s'"
+msgstr "Descarregant el m�ul '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:45
+msgid "This window has no associated irc context"
+msgstr "Aquesta finestra no t�context d'irc associat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:50
+#, c-format
+msgid "No such irc context (%d)"
+msgstr "No existeix el context irc (%d)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:147
+msgid "Global idle timer must be started before using $my.globalIdle function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:103
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:215
+#, fuzzy
+msgid "Window %Q not found"
+msgstr "Finestra %s no trobada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:108
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:220
+msgid "Missing window id after the 'w' switch"
+msgstr "Falta id de finestra despr� del modificador 'w'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:121
+#, fuzzy
+msgid "Can't log to file %Q"
+msgstr "No puc grabar el registre a l'arxiu %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:123
+msgid "This window has no logging capabilities"
+msgstr "Aquesta finestra no t�capacitats de registre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:275
+#, fuzzy
+msgid "Window with id '%Q' not found, returning empty string"
+msgstr "Finestra amb id '%s' no trobada, retornant la cadena buida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:598
+#, fuzzy
+msgid "Sound file '%Q' not found"
+msgstr "Arxiu de so '%s' no trobat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:604
+#, fuzzy
+msgid "Unable to play sound '%Q'"
+msgstr "No � possible reproduir el so '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:615
+msgid "Sorry , I can't find a sound system to use on this machine"
+msgstr ""
+"Ho sento, no puc trobar un sistema de so per a emprar en aquesta m�uina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:617
+#, c-format
+msgid "Sound system detected to: %s"
+msgstr "Sistema de so detectat :%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:141
+msgid "Show at startup"
+msgstr "Mostrar a l'inici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:154
+msgid "Did you know..."
+msgstr "Sabia vost�que..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:220
+msgid "<b>Can't find any tip... :(</b>"
+msgstr "<b>No s'ha pogut trobar cap consell... :(</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1544
+msgid "%Q algorytm is not supported"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1566
+msgid ""
+"KVIrc is compiled without OpenSSL support. $str.digest function disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2030
+msgid "Invalid argument for ?d escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2034
+msgid "Missing argument for ?d escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2066
+msgid "Invalid argument for ?u escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2070
+msgid "Missing argument for ?u escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2097
+msgid "Invalid argument for ?x escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2101
+msgid "Missing argument for ?x escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2128
+msgid "Invalid argument for ?X escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2132
+msgid "Missing argument for ?X escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2189
+msgid "Invalid argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2193
+msgid "Missing argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:87
+msgid "Show URL List"
+msgstr "Mostrar Llista d'URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:88
+msgid "Shows the URL list window"
+msgstr "Mostra la finestra de llista d'URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:124
+msgid "&Configure"
+msgstr "&Configurar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:126
+msgid "Clo&se"
+msgstr "Tancar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:127
+msgid "&Module"
+msgstr "&M�ul"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:130
+msgid "&Load"
+msgstr "Carregar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:131
+msgid "&Save"
+msgstr "Guardar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:132
+msgid "&Clear"
+msgstr "Netejar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:133
+msgid "&List"
+msgstr "&Llista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:136
+msgid "URL"
+msgstr "URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:137
+msgid "Window"
+msgstr "Finestra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:138
+msgid "Count"
+msgstr "Contador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:139
+msgid "Timestamp"
+msgstr "Marca de temps"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:113
+msgid "Warning - KVIrc"
+msgstr "Advert�cia - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+msgid "Select an URL."
+msgstr "Seleccioni una URL."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:115
+msgid "&Remove"
+msgstr "Elimina&r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:269
+msgid "&Find Text"
+msgstr "Buscar Text"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:280
+msgid "&Say to Window"
+msgstr "&Dir en Finestra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+msgid "Window not found."
+msgstr "Finestra no trobada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:349
+msgid "URL Module Configuration"
+msgstr "Configuraci�del m�ul URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:356
+msgid "Save URL list on module unload"
+msgstr "Guardar llista d'URL al descarregar el m�ul"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:360
+msgid "Save columns width on URL list close"
+msgstr "Guardar l'amplada de les columnes al tancar la llista d'URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1187
+msgid "&Cancel"
+msgstr "&Cancellar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:432
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1328
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:458
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1186
+msgid "&OK"
+msgstr "&Acceptar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:423
+msgid "Enable URL ban list"
+msgstr "Activar la llista d'URL prohibides"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:435
+msgid "&Add Ban"
+msgstr "&Afegir Prohibici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:440
+msgid "&Remove Selected"
+msgstr "Elimina&r Seleccionades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "URL Ban List"
+msgstr "Llista d'URL Prohibides"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+msgid "Select a ban."
+msgstr "Seleccioni una prohibici�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:797
+#, fuzzy
+msgid "View URL list"
+msgstr "Mostrar Llista d'URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:49
+#, fuzzy
+msgid "Can't find the window with id '%Q'"
+msgstr "No he pogut trobar la finestra amb id '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:53
+#, fuzzy
+msgid "The specified window (%Q) is not a channel"
+msgstr "La finestra especificada (%s) no � un canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:78
+#, fuzzy
+msgid "Destinaion file exists: no copy made"
+msgstr "L'arxiu de dest�existeix: no s'ha fet c�ia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:83
+#, fuzzy
+msgid "Failed to copy from %Q to %Q"
+msgstr "Errada al copiar %s a %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:84
+msgid "Either the source doesn't exist or the destination can not be created"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:203
+msgid "Failed to write to file %Q: the destination couldn't be opened"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:244
+msgid "Destination file exists: file not renamed"
+msgstr "L'arxiu de dest�existeix: no s'ha renombrat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:247
+#, fuzzy
+msgid "Failed to rename %Q to %Q"
+msgstr "Errada al renombrar %s a %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:281
+#, fuzzy
+msgid "Failed to make the directory %Q"
+msgstr "Errada al crear el directori %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:322
+#, fuzzy
+msgid "Failed to remove the file %Q"
+msgstr "Errada al borrar l'arxiu %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:365
+#, fuzzy
+msgid "Failed to remove the directory %Q"
+msgstr "Errada al borrar el directori %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:482
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:628
+#, fuzzy
+msgid "The specified directory does not exist '%Q'"
+msgstr "El directori especificat no existeix '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:730
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:824
+#, fuzzy
+msgid "Can't open the file \"%Q\" for reading"
+msgstr "No puc obrir l'arxiu \"%s\" per a lectura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:746
+#, fuzzy
+msgid "Read error for file %Q"
+msgstr "Error de lectura per a l'arxiu %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:754
+#, fuzzy
+msgid ""
+"Read error for file %Q (have been unable to read the requested size in 1000 "
+"retries)"
+msgstr ""
+"Error de lectura de l'arxiu %s (no s'ha pogut llegir la mida solicitada en "
+"1000 reintents)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:920
+#, fuzzy
+msgid "Can't open the file \"%Q\" for writing"
+msgstr "No puc obrir l'arxiu \"%s\" en mode escriptura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/index.cpp:473
+msgid "Untitled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+msgid "Indexing help files"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:87
+msgid "Index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:99
+msgid "Refresh index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:211
+msgid "Full Text Search"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:203
+msgid "Using a wildcard within phrases is not allowed."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:212
+msgid "The closing quotation mark is missing."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:312
+msgid "Help Browser"
+msgstr "Navegador de l'Ajuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:201
+msgid "Request List"
+msgstr "Solicitar Llista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:207
+#, fuzzy
+msgid "Stop list download"
+msgstr "Descarrega la Llista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:211
+msgid ""
+"<center><b>/LIST command parameters:</b><br>Many servers accept special "
+"parameters that allow you to filter the returned entries.<br>Commonly, "
+"masked channel names (*kvirc*) are accepted as parameters, as well as "
+"strings like <b>c&lt;n</b> or <b>c&gt;n</b> where <b>n</b> is the minimum or "
+"maximum of users on the channel.</center>"
+msgstr ""
+"<center><b>Par�etres de comanda de /LIST:</b><br>Molts servidors accepten "
+"par�etres especials que permeten filtrar les entrades tornades."
+"<br>Normalment, s'accepten noms de canals amb m�cara com a par�etres "
+"(*kvirc*),i cadenes com a <b>c&lt;n</b> o <b>c&gt;n</b> on <b>n</b> � el "
+"nmero m�im o m�im d'usuaris al canal.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:220
+msgid "Users"
+msgstr "Usuaris"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:221
+msgid "Topic"
+msgstr "Tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:262
+msgid "Sent list request, waiting for reply..."
+msgstr "Enviada petici�de llista, esperant resposta..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:265
+msgid "Cannot request list: No active connection"
+msgstr "No puc demanar la llista: No hi ha una connexi�activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:389
+msgid "Stopping the list download..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:276
+#, fuzzy
+msgid "Cannot stop list download, no active connection."
+msgstr "No puc demanar la llista: No hi ha una connexi�activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:125
+#, c-format
+msgid "Connected to %s (%s)"
+msgstr "Connectat a %s (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:293
+msgid "List cannot be requested: Not connected to a server"
+msgstr "No es pot solicitar la llista: No est�connectat a un servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:316
+#, c-format
+msgid "Channel List [IRC Context %u]"
+msgstr "Llista de Canals [Context IRC %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:319
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel List</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Llista de Canals</b></font> <font color=\"%s\">"
+"[Context IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:326
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel list</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Llista de canals</b></font> <font color=\"%s\">"
+"[Context IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:342
+#, fuzzy
+msgid "You cannot export an empty list"
+msgstr "No demanar llista d'expiraci�de prohibici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:350
+#, fuzzy
+msgid "Channel list for %Q - %Q"
+msgstr "El mode de canal per a \r!c\r%Q\r � %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:353
+#, fuzzy
+msgid "Channel list"
+msgstr "Canals"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:382
+#, fuzzy
+msgid "Choose filename"
+msgstr "Escull un Nom d'Arxiu de Registre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:356
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:383
+#, fuzzy
+msgid "Configuration files (*.kvc)"
+msgstr "Configuraci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:398
+msgid "Reset"
+msgstr "Reiniciar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:435
+msgid "Channels list download finished"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:472
+msgid "Processing list: %Q"
+msgstr "Processant llista: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/libkvilist.cpp:63
+msgid "List window alread open for this IRC context"
+msgstr "Ja est�oberta la llista de finestres per a aquest context IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:70
+msgid "Terminal"
+msgstr "Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:73
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:77
+#, c-format
+msgid "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+msgstr "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:59
+msgid "Terminal emulator"
+msgstr "Emulador de terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:63
+msgid "Close this window"
+msgstr "Tancar la finestra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:91
+msgid "Can't create the terminal emulation part"
+msgstr "No puc crear la part d'emulaci�de terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:96
+msgid "Can't retrieve the terminal emulation factory"
+msgstr "No puc recuperar la factoria d'emulaci�de terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:95
+msgid "KVIrc"
+msgstr "KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:98
+msgid "Context"
+msgstr "Context"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:155
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:100
+msgid "Away"
+msgstr "Absent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:102
+msgid "&Configure KVIrc..."
+msgstr "&Configurar KVIrc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:104
+msgid "&About KVIrc"
+msgstr "&Sobre KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:109
+msgid "Un&dock"
+msgstr "Treure anclatge"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:168
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:112
+msgid "Ctrl+Q"
+msgstr "Ctrl+S"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:143
+msgid "Nothing is happening..."
+msgstr "No passa res..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:285
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:144
+msgid "Just idling..."
+msgstr "Estic gandulejant..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:145
+msgid "Dum de dum de dum..."
+msgstr "Dum de dum de dum..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:146
+msgid "Hey man... do something!"
+msgstr "Va home... fes alguna cosa!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:147
+msgid "Umpf!"
+msgstr "Umpf!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:148
+msgid "Silence speaking"
+msgstr "Parlant en silenci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:149
+msgid "Are ya here?"
+msgstr "Est� aqu�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:150
+msgid "The world has stopped?"
+msgstr "S'ha parat el m�?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:151
+msgid "Everything is all right"
+msgstr "Tot va b"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:152
+msgid "idle()"
+msgstr "vaguejant()"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:153
+msgid "It's so cold here..."
+msgstr "Fa tant de fred aqu�.."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:295
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:154
+msgid "Do not disturb... watching TV"
+msgstr "No molestar... veient la televissi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:155
+msgid "Just vegetating"
+msgstr "Estic vegentant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:156
+msgid "Hey... are ya sure that your network is up?"
+msgstr "Eh... Est� segur de que la xarxa funciona?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:298
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:157
+msgid "Seems like the world has stopped spinning"
+msgstr "Sembla que el m� ha deixat de girar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:299
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:158
+msgid "This silence is freaking me out!"
+msgstr "Aquest silenci m'est�tornant boig!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:300
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:159
+msgid "Mieeeeeowww!"
+msgstr "Miauuuuuuu!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:301
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:160
+msgid "idle idle idle idle!"
+msgstr "parat parat parat parat!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Hide Window"
+msgstr "Amagar Finestra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Show Window"
+msgstr "Mostrar Finestra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:428
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:260
+msgid "Away on all"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:263
+msgid "Back on all"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:450
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:282
+msgid "Back on %1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:453
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:285
+msgid "Away on %1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1238
+msgid "Alias"
+msgstr "�ies"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1217
+#, fuzzy
+msgid "No item selected"
+msgstr "No hi ha entrades triades."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:232
+#, fuzzy
+msgid "Rename"
+msgstr "Nom real:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:236
+#, fuzzy
+msgid "Edit the alias or namespace name"
+msgstr "Editar �ies."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+#, fuzzy
+msgid "Add Alias"
+msgstr "�ies"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:429
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Add Namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:440
+#, fuzzy
+msgid "Remove Selected"
+msgstr "Elimina&r Seleccionades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:449
+#, fuzzy
+msgid "Export Selected..."
+msgstr "&Exportar Tots a..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:455
+#, fuzzy
+msgid "Export Selected in singles files..."
+msgstr "&Exportar Tots a..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:462
+#, fuzzy
+msgid "Export All..."
+msgstr "&Exportar Tots a..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:470
+#, fuzzy
+msgid "Find In Aliases..."
+msgstr "&Alies..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:476
+msgid "Collapse All Namespaces"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:508
+msgid "Find In Aliases"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:509
+msgid ""
+"Please enter the text to be searched for. The matching aliases will be "
+"highlighted."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+#, fuzzy
+msgid "Alias Export"
+msgstr "Editor d'�ies"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#, fuzzy
+msgid "There is not selection!"
+msgstr "No hi ha connexi�que acceptar!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:615
+#, fuzzy
+msgid "The file \"%Q\" exists. Do you want to replace it ?"
+msgstr "El arxiu %s ja existeix.<br>Sobreescriure-ho?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#, fuzzy
+msgid "Replace file"
+msgstr "Respostes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#, fuzzy
+msgid "Yes to All"
+msgstr "Tri&ar Tot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "There exported file would be empty: cowardly refusing to write it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:786
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:411
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1133
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:398
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:745
+msgid "Choose a Filename - KVIrc"
+msgstr "Esculli un nom d'arxiu - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Write Failed - KVIrc"
+msgstr "Errada d'Escriptura - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+msgid "Unable to write to the alias file."
+msgstr "No ha estat possible escriure en l'arxiu d'�ies."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:793
+#, fuzzy
+msgid "Do you really want to remove the alias \"%Q\" ?"
+msgstr "Realment vol borra la barra d'eines \"%1\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:795
+#, fuzzy
+msgid "Do you really want to remove the namespace \"%Q\" ?"
+msgstr "Realment vol borra la barra d'eines \"%1\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:797
+msgid "Please note that all the children items will be deleted too."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#, fuzzy
+msgid "Remove item"
+msgstr "Treure %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:875
+#, fuzzy
+msgid "Missing Alias Name"
+msgstr "Falta el nom de l'�ies"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:876
+msgid "You must specify a valid name for the alias"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:877
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:890
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:904
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:915
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:946
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:959
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:973
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1128
+msgid "Ok, Let me try again..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:888
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:902
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:913
+msgid "Bad Alias Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:944
+#, fuzzy
+msgid "Missing Namespace Name"
+msgstr "Falta el nom del cron�etre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:945
+msgid "You must specify a valid name for the namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:957
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:971
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:982
+msgid "Bad Namespace Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:958
+msgid ""
+"Namespace names can contain only letters, digits, underscores and '::' "
+"namespace separators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:972
+msgid ""
+"Stray ':' character in namespace name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:983
+msgid "Found an empty namespace in namespace name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+#, fuzzy
+msgid "Please enter the name for the new alias"
+msgstr "Per favor, especifiqui les propietats de la nova barra d'eines"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+#, fuzzy
+msgid "Please enter the name for the new namespace"
+msgstr "Per favor, especifiqui les propietats de la nova barra d'eines"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+#, fuzzy
+msgid "Rename Alias"
+msgstr "Eli&minar �ies"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+#, fuzzy
+msgid "Please enter the new name for the alias"
+msgstr "Si us plau, trii la icona per a la Barra d'Eines"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Rename Namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Please enter the new name for the namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1126
+#, fuzzy
+msgid "Alias already exists"
+msgstr "Adre� ja en s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1139
+msgid "This name is already in use. Please choose another one."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1138
+msgid "Namespace already exists"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1140
+msgid "Ok, let me try again..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1227
+#, fuzzy
+msgid "Namespace"
+msgstr "Tipus de missatge"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1332
+msgid "Alias Editor"
+msgstr "Editor d'�ies"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:62
+msgid "Join Channels"
+msgstr "Unir-se a Canals"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:183
+msgid "Name"
+msgstr "Nom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:86
+msgid "Password"
+msgstr "Clau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:641
+msgid "&Join"
+msgstr "Unir-se"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:108
+msgid "Show this window after connecting"
+msgstr "Mostrar aquesta finestra despr� de connectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:163
+msgid "Recent Channels"
+msgstr "Canals Recents"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:182
+msgid "Registered Channels"
+msgstr "Canals Registrats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:133
+msgid "Choose the file to share"
+msgstr "Trii l'arxiu a compartir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:178
+msgid "No such channel/netmask entry in the database"
+msgstr ""
+"No existeix una entrada per a aquest canal/m�cara de xarxa a la base de dades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:198
+msgid "Registered channel list:"
+msgstr "Llista de canals registrats:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:208
+#, c-format
+msgid "Channel: %c%s@%s"
+msgstr "Canal: %c%s@%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:213
+#, c-format
+msgid " Property: %s=%s"
+msgstr " Propietat: %s=%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:220
+#, c-format
+msgid "Total %d channels"
+msgstr "Total %d canals"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:86
+msgid "Property Editor"
+msgstr "Editor de Propietats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:101
+msgid "Property"
+msgstr "Propietat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:102
+msgid "Value"
+msgstr "Valor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:111
+msgid "&New"
+msgstr "&Nou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:215
+msgid "Mask Editor"
+msgstr "Editor de M�cares"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:219
+msgid ""
+"Insert a mask for this user.<br>It can contain the wildcard characters '*' "
+"and '?'."
+msgstr ""
+"Insereix una m�cara per aquest usuari.<br>Aquesta pot contenir '*' i '?' com "
+"a car�ters comod�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:230
+msgid ""
+"<center>This the <b>nickname</b> that will match this user, default value is "
+"the registered name.</center>"
+msgstr ""
+"<center>Aquest � el <b>nick</b> que coincidir�amb aquest usuari, el valor "
+"per defecte � el nom registrat.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:241
+msgid ""
+"<center>This the <b>username</b> that will match this user. <b>*</b> will "
+"match any username.</center>"
+msgstr ""
+"<center>Aquest � el <b>nom d'usuari</b> que coincidir�amb aquest usuari. "
+"<b>*</b> coincidir�amb qualsevol nom d'usuari.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:252
+msgid ""
+"<center>This the <b>hostname</b> that will match this user. <b>*</b> will "
+"match any hostname.</center>"
+msgstr ""
+"<center>Aquests � el <b>nom de m�uina</b> que coincidir�amb aquest usuari. "
+"<b>*</b> coincidir�amb qualsevol nom de m�uina.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:333
+msgid "Registered User Entry"
+msgstr "Entrada d'Usuaris Registrats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:145
+msgid "Name:"
+msgstr "Nom:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:345
+#, fuzzy
+msgid "Comment:"
+msgstr "Contador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:355
+msgid "Masks:"
+msgstr "M�cares:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:216
+msgid "&Add..."
+msgstr "&Afegir..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:377
+msgid "&Edit"
+msgstr "&Editar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:385
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:414
+msgid "Identity"
+msgstr "Identitat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:393
+msgid "Notify when user is online"
+msgstr "Notificar quan l'usuari estigui connectat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:396
+msgid "Notify nicknames:"
+msgstr "Notificar nicks:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:401
+msgid "<center>You can enter a space separated list of nicknames.</center>"
+msgstr "<center>Pot entrar una llista de nicks separats per espais.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:426
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:383
+msgid "Avatar"
+msgstr "Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:433
+#, fuzzy
+msgid "Use custom color in userlist"
+msgstr "Emprar un nivell d'alerta personalitzat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:441
+msgid "All Properties..."
+msgstr "Totes les propietats..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:448
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:231
+msgid "Properties"
+msgstr "Propietats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:458
+#, fuzzy
+msgid "Enable ignore for this user"
+msgstr "Activar Ignorar Per a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:460
+#, fuzzy
+msgid "Ignore features"
+msgstr "Ignorar com a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:465
+#, fuzzy
+msgid "Ignore query-messages"
+msgstr "Missatge d'usuari ignorat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:468
+#, fuzzy
+msgid "Ignore channel-messages"
+msgstr "Missatges privat/canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:471
+#, fuzzy
+msgid "Ignore notice-messages"
+msgstr "Missatge d'usuari ignorat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:474
+#, fuzzy
+msgid "Ignore ctcp-messages"
+msgstr "Missatge d'usuari ignorat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:477
+#, fuzzy
+msgid "Ignore invites"
+msgstr "Ignorar com a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:480
+#, fuzzy
+msgid "Ignore DCCs"
+msgstr "Ignorar com a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:486
+msgid "Ignore"
+msgstr "Ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:94
+#, fuzzy
+msgid "Notify disabled"
+msgstr "Llista de Notificacions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:96
+#, fuzzy
+msgid "Notify as: "
+msgstr "Llista de Notificacions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:105
+#, fuzzy
+msgid "No comment set"
+msgstr "No s'ha especificat una comanda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:107
+#, fuzzy
+msgid "Comment: "
+msgstr "Contador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:176
+msgid "Registered Users - KVIrc"
+msgstr "Usuaris registrats - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:317
+#, fuzzy
+msgid "Flags"
+msgstr "Pla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:192
+msgid ""
+"<center>This is the list of registered users. KVIrc can automatically "
+"recognize and associate properties to them.<br>Use the buttons on the right "
+"to add, edit and remove entries. The \"notify\" column allows you to quickly "
+"add users to the notify list. Notify list fine-tuning can be performed by "
+"editing the entry properties.</center>"
+msgstr ""
+"<center>Aquesta � la llista d'usuaris registrats. KVIrc pot recon�xer i "
+"associar-li propietats de forma autom�ica.<br>Empra els botons de la dreta "
+"per a afegir, editar o borra entrades.<br>La columna \"notificar\" et permet "
+"afegir usuaris a la llista de notificacions r�idament. L'ajust de la llista "
+"de notificacions pot fer-se editant l'entrada de propietats.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:208
+msgid "Add (Wizard)..."
+msgstr "Afegir (assistent)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:211
+msgid "Add a registered user by means of a user-friendly wizard."
+msgstr "Afegir un usuari registrat per mitj�d'un amigable assistent."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:219
+msgid "Open the edit dialog to create a new user entry."
+msgstr "Obrir el di�eg d'edici�per a crear una nova entrada d'usuari."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:223
+#, fuzzy
+msgid "&Add Group..."
+msgstr "&Afegir..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:226
+msgid "Adds a new group"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:234
+msgid "Remove the currently selected entries."
+msgstr "Borrar les entrades actualment triades."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:239
+msgid "&Edit..."
+msgstr "&Editar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:243
+msgid "Edit the first selected entry."
+msgstr "Aquest bot�permetr�editar la primera entrada triada."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:250
+msgid "Export To..."
+msgstr "Exportar a..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:254
+msgid ""
+"Export the selected entries to a file.<br>All the data associated with the "
+"selected registered users will be exported.<br>You (or anyone else) can "
+"later import the entries by using the \"Import\" button."
+msgstr ""
+"Exporta les entrades triades a un arxiu.<br>Totes les dades associades als "
+"usuaris registrats triats seran exportades.<br>Vost� o qualsevol altre, pot "
+"importar les entrades m� tard emprant el bot�\"Importar\"."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:259
+msgid "Import From..."
+msgstr "Importar Des de..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:262
+msgid ""
+"Import entries from a file exported earlier by the \"export\" function of "
+"this dialog."
+msgstr ""
+"Importa les entrades des d'un arxiu exportat per la funci�\"Exportar\" "
+"d'aquest di�eg."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:399
+#, fuzzy
+msgid "Group name:"
+msgstr "Nom de men emergent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:442
+msgid "Move to group"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:483
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:486
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:487
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:491
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:690
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_useridentity.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:962
+msgid "Default"
+msgstr "Per defecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:674
+msgid "No entries selected."
+msgstr "No hi ha entrades triades."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:687
+#, fuzzy
+msgid "Can't open file %Q for writing."
+msgstr "No puc obrir l'arxiu \"%s\" en mode escriptura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:772
+msgid "Can't export the registered users database: Write error."
+msgstr ""
+"No s'ha pogut exportar la base de dades d'usuaris registrats. Error "
+"d'escriptura."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:793
+#, c-format
+msgid "Can't open file %s for reading."
+msgstr "No puc obrir l'arxiu %s per a lectura."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:804
+#, c-format
+msgid "The file %s doesn't appear to be a valid registered users database."
+msgstr ""
+"L'arxiu %s no semblar ser una base de dades d'usuaris registrats v�ida."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:811
+#, c-format
+msgid "The file %s contains an invalid registered users database version."
+msgstr ""
+"L'arxiu %s cont�una versi�no v�ida de la base de dades d'usuaris registrats."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:892
+msgid "Can't import the registered users database: Read error."
+msgstr ""
+"No s'ha pogut importar la base de dades d'usuaris registrats. Error de "
+"lectura."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:78
+msgid "User Registration Wizard - KVIrc"
+msgstr "Assistent de Registre d'Usuaris - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:89
+msgid ""
+"<p>Welcome to the user registration wizard.<br>This process allows you to "
+"add an IRC user to the database and set properties for that user. KVIrc will "
+"be (hopefully) able to recognize the user, add him to the notify list, and "
+"display the associated avatar.<br><br>First of all, you must insert an "
+"<b>entry name or real name</b> for the user you're going to register. The "
+"name will be used to identify the database entry and has no specific "
+"requirements, it can be a given name, nickname, or just some text to remind "
+"you of the real person.<br>Examples: \"George W Bush\", \"Dubya\".\n"
+"</p>"
+msgstr ""
+"<p>Benvingut a l'assistent d'usuaris registrats.<br>Aquest proc� li permet "
+"afegir un usuari IRC a la base de dades de KVIrc i configurar algunes de les "
+"seves propietats. KVirc ser�capa�(afortunadament) de recon�xer l'usuari, "
+"afegir-lo a la llista de notificacions, mostrar el seu avatar associat, "
+"etc...<br><br>Primerament, ha d'escriure el <b>nom de l'entrada o el nom "
+"real</b>de l'usuari que anir�a registrar. El nom ser�emprat per a "
+"identificar l'entrada de la base de dades i no t�cap requeriment espec�ic, "
+"pot ser un nom, un nick o nom� un text que li recordi a la persona."
+"<br>Exemples: \"Carla Arola\", \"Cari\".\n"
+"</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:97
+msgid "Step 1: Entry Name"
+msgstr "Pas 1: Nom Entrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:112
+msgid ""
+"<p>A registered user is identified by one or more <b>IRC masks</b>.<br>A "
+"mask must be in the following form:<br><b>nickname!username@hostname</"
+"b><br>and can contain wildcard characters '*' and '?'. Be careful in "
+"choosing the masks, as they are the only way to verify the identity of a "
+"registered user.<br><br>You can enter at most two masks here, if you wish to "
+"add more masks, use the \"<b>Edit</b>\" button in the Registered Users "
+"dialog. You must enter at least one mask.</p>"
+msgstr ""
+"<p>Un usuari registrat � identificat per una o m� <b>m�cares d'IRC</b>."
+"<br>Una m�cara ha de complir amb el segent format:<br><b>nick!"
+"nom_usuari@m�uina</b><br>i pot contenir els comodins '*' y '?'.Sigui cuidad� "
+"al escollir les m�cares: s� l'nic m�ode per a verificar la identitat d'un "
+"usuari registrat.<br><br>Pot introduir fins a dues m�cares; si dessitja "
+"afegir-ne m�, utilitzi el bot�\"<b>Editar</b>\" en el di�eg d'Usuaris "
+"Registrats. Ha de posar com a m�im una m�cara.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:170
+msgid "Step 2: Mask Selection"
+msgstr "Pas 2: Selecci�de m�cara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:182
+msgid ""
+"<p>If you want to store an avatar image for this user, you can set it here. "
+"KVIrc will show the avatar in the userlist next to the user's nickname."
+"<br>An avatar can be in any supported image format (PNG is recommended). "
+"Keep in mind that KVIrc stores avatars in memory and has to resize them to "
+"fit in the userlist, thus it's better to use small, low-resolution images.</"
+"p>"
+msgstr ""
+"<p>Si vol emmagatzemar una imatge d'avatar per a aquest usuari, pot posar-la "
+"aqu� KVIrc el mostrar�juntament amb el nick a la finestra d'usuaris.<br>Un "
+"avatar pot estar en qualsevol format d'imatge reconegut (es recomana PNG). "
+"Recordi que KVIrc mant�els avatar en mem�ia i t�que redimensionar-los per a "
+"encaixar-los a la llista d'usuaris, de manera que � millor emprar petites "
+"imatges de baixa resoluci�</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:190
+msgid "Store an avatar for this user"
+msgstr "Emmagatzemar un avatar per aquest usuari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:195
+msgid "Step 3: Avatar Selection"
+msgstr "Pas 3: Selecci�de l'Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:206
+msgid ""
+"<p>If you want to be notified when this user is online or goes offline, you "
+"must specify the list of nicknames that KVIrc will look for.<br><br>You can "
+"enter at most two nicknames here, if you wish to add more nicknames, use the "
+"\"<b>Edit</b>\" button in the Registered Users dialog.</p>"
+msgstr ""
+"<p>Si dessitja ser avisat quan aquest usuari es connecti o desconnecti, ha "
+"d'especificar la llista de nicks a la que ho buscar�KVIrc<br><br>Pot "
+"introduir fins a dos nicks aqu� si dessitja afegir-ne m�, empri el bot�"
+"\"<b>Editar</b>\" al Di�eg d'Usuaris Registrats.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:215
+msgid "Add this user to the notify list"
+msgstr "Afegir aquest usuari a la llista de notificacions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:342
+msgid "Nickname:"
+msgstr "Nick:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:225
+msgid "Nickname 2:"
+msgstr "Nick 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:239
+msgid "Step 4: Notify List"
+msgstr "Pas 4: Llista de Notificacions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:251
+msgid ""
+"<p>That's it. The user registration has been completed.<br><br>Click "
+"\"<b>Finish</b>\" to close this dialog.</p>"
+msgstr ""
+"<p>Aix�� tot. El registre d'usuari s'ha realitzat correctament.<br><br>Premi "
+"\"Finalitzar\" per a tancar aquest di�eg.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:254
+msgid "Registration Complete"
+msgstr "Registre completat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:695
+msgid "No name specified"
+msgstr "No s'ha especificat nom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:209
+msgid "User already registered: found exact name match"
+msgstr "Usuari ja registrat: s'ha trobat coincid�cia exacta amb el nom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:222
+#, fuzzy
+msgid "Mask %Q is already used to identify user %s"
+msgstr "La m�cara %s ja s'empra per a identificar a l'usuari %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:275
+#, fuzzy
+msgid "User not found (%Q)"
+msgstr "Usuari no trobat (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:403
+msgid "No mask specified"
+msgstr "M�cara no especificada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:524
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:708
+#, fuzzy
+msgid "User %Q not found"
+msgstr "Usuari %s no trobat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:355
+#, fuzzy
+msgid "Mask %Q already used to identify user %Q"
+msgstr "M�cara %s ja emprada per a identificar a l'usuari %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:410
+#, fuzzy
+msgid "Mask %Q not found"
+msgstr "M�cara %s no trobada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:701
+msgid "No property specified"
+msgstr "No s'ha especificat propietat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:808
+msgid "Registered users database dump:"
+msgstr "Volcat d'usuaris registrats de la base de dades."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:819
+msgid " User: %c%Q"
+msgstr "Usuari: %c%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:823
+msgid " Warning: this user has no registration masks"
+msgstr " Atenci� aquest usuari no t�m�cares de registre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:827
+msgid " Mask: %Q!%Q@%Q"
+msgstr " M�cara: %Q!%Q@%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:838
+msgid " Property: %Q=%Q"
+msgstr " Propietat: %Q=%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:841
+msgid " No properties"
+msgstr " Sense propietates"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:847
+#, c-format
+msgid "Total: %d matching users (of %d in the database)"
+msgstr "Total: %d usuaris coincidents (de %d a la base de dades)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:197
+msgid "Manage Script-Based Addons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1155
+msgid "Configure"
+msgstr "Configurar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:225
+#, fuzzy
+msgid "Show Help"
+msgstr "Mostrar %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:231
+msgid "Uninstall"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:243
+msgid "Install Addon..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:247
+msgid "More Addons..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:333
+#, fuzzy
+msgid "Do you really want to uninstall the addon \"%1\" ?"
+msgstr "Realment vol borra la barra d'eines \"%1\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+msgid "Confirm addon uninstallation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:354
+msgid "Please select the addon installation file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:144
+msgid "%cAddon id %Q, version %Q%c"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:145
+#, fuzzy
+msgid "Name: %Q"
+msgstr "Nom:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:67
+msgid "Description: %Q"
+msgstr "Descripci� %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:152
+#, fuzzy, c-format
+msgid "Total: %d addons installed"
+msgstr "Total m�uines llistades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:192
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:571
+msgid "Uninstalling existing addon version %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:384
+#, fuzzy
+msgid "The addon \"%1\" does not exist"
+msgstr "L'acci�\"%1\" no existeix"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:238
+msgid "The addon \"%1\" has no configure callback set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:285
+#, fuzzy
+msgid "The addon \"%1\" has no help callback set"
+msgstr "L'acci�\"%1\" no existeix"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:527
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:377
+msgid "Internal error: call a head-shrinker"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:536
+#, fuzzy
+msgid "The specified version \"%Q\" is not a valid version string"
+msgstr "L'adre� d'enlla�(bind) especificada (%Q) no � v�ida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:542
+#, fuzzy
+msgid "The specified KVIrc version \"%Q\" is not a valid version string"
+msgstr "El temps UNIX especificat no � v�id (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:548
+msgid ""
+"This KVIrc executable is too old to run this addon (minimum version required "
+"is %Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:553
+msgid "Attempting to register addon \"%Q\" with version %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:565
+msgid ""
+"The script addon \"%Q\" already exists with version %Q which is higher than %"
+"Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:579
+#, fuzzy
+msgid "Script registration failed"
+msgstr "Creaci�de socket fallida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:584
+msgid "Script succesfully registered"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:102
+#, fuzzy, c-format
+msgid "%s (%s) (%s:%u)"
+msgstr "%Q establerta [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:104
+#, fuzzy, c-format
+msgid "%s (%s)"
+msgstr "%s (m�ul %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:107
+#, c-format
+msgid "%s (%s:%u)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:109
+#, fuzzy, c-format
+msgid "%s"
+msgstr "%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:112
+#, fuzzy, c-format
+msgid "[IDENT]: %s"
+msgstr "[SOCKET]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:119
+#, fuzzy
+msgid "Shutting down identd service (spontaneous action)"
+msgstr "Continuant connexi�directa al servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:124
+#, fuzzy
+msgid "Shutting down identd service (requested action)"
+msgstr "Continuant connexi�directa al servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:225
+#, fuzzy
+msgid "Can't start the ident service : socket() failed"
+msgstr "No puc configurar un socket en escolta: fallida en l'enlla�(bind)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:231
+#, fuzzy
+msgid "Can't start the ident service : async setting failed"
+msgstr "No puc configurar un socket en escolta: fallida en l'enlla�(bind)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:237
+msgid "Can't enable the ident service : can't setup the listen address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:243
+#, fuzzy
+msgid "Can't start the ident service : bind() failed"
+msgstr "No puc configurar un socket en escolta: fallida en l'enlla�(bind)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:249
+#, fuzzy
+msgid "Can't start the ident service : listen() failed"
+msgstr "No puc configurar un socket en escolta: fallida en l'enlla�(bind)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:263
+msgid "Can't start the ident service on IpV6 : socket() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:269
+msgid "Can't start the ident service on IpV6 : async setting failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:277
+msgid "Can't enable the ident service on IpV6 : can't setup the listen address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:285
+#, fuzzy
+msgid "Can't start the ident service on IpV6 : bind() failed"
+msgstr "No puc configurar un socket en escolta: fallida en l'enlla�(bind)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:294
+#, fuzzy
+msgid "Can't start the ident service on IpV6 : listen() failed"
+msgstr "No puc configurar un socket en escolta: fallida en l'enlla�(bind)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:310
+msgid "Starting identd service (IpV4/V6 on separate namespaces)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:313
+msgid "Starting identd service (IpV4/V6 in IpV6 namespace)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:318
+msgid "Starting identd service (IpV4)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:322
+msgid "Service startup (IpV4)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:412
+#, fuzzy
+msgid "Identd accepting connection"
+msgstr "connexi�segura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:435
+msgid "Identd socket error : dropping connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:440
+msgid "Identd connection closed by remote host"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:461
+#, fuzzy
+msgid "Identd processing request"
+msgstr "Enviar una adre� fixa en les peticions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:476
+msgid "Empty request (EOT ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:487
+msgid "Dropping connection (request too long)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:500
+msgid "Timed out while waiting for the request : dropping connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/libkvilinks.cpp:74
+msgid "Links window alread open for this IRC context"
+msgstr "La finestra d'enlla�s ja est�oberta per a aquest context d'IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:57
+msgid "Request Links"
+msgstr "Solicitar Enlla�s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:70
+msgid "Link"
+msgstr "Enlla�s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:71
+msgid "Hops"
+msgstr "Salts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:72
+msgid "Description"
+msgstr "Descripci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:90
+msgid "(None)"
+msgstr "(Cap)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:112
+msgid "Sent links request, waiting for reply..."
+msgstr "Enviada petici�d'enlla�s, esperant resposta..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:115
+msgid "Cannot request links: No active connection"
+msgstr "No puc demanar enlla�s: No hi ha una connexi�activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:128
+msgid "Links cannot be requested: Not connected to a server"
+msgstr "Els enlla�s no poden ser sollicitats: No est�connectat a un servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:153
+msgid "Links for %Q [IRC Context %u]"
+msgstr "Enlla�s per a %Q [Context IRC %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:164
+msgid ""
+"<nobr><font color=\"%s\"><b>Links for %Q</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Enlla�s per a %Q</b></font> <font color=\"%s\">"
+"[Context IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:194
+msgid "Received end of links."
+msgstr "Rebut final d'enlla�s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:235
+#, c-format
+msgid ""
+"Broken link: Missing parent (%s) for %s (%d hops): %s (used /LINKS <mask> ?)"
+msgstr ""
+"Enlla�trencat: falta el pare (%s) per a (%s) (%d salts): %s (s'ha emprat /"
+"LINKS <m�cara> ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:238
+#, c-format
+msgid "%s: Parent link %s"
+msgstr "%s : Enlla�pare %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:242
+msgid "Warning: No root link was sent by the server, the stats may be invalid."
+msgstr ""
+"Av�: El servidor no ha enviat l'enlla�arrel : les estad�tiques poden ser "
+"incorrectes."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:278
+msgid "%c%cLinks for %Q"
+msgstr "%c%cEnlla�s per a %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts listed"
+msgstr "Total m�uines llistades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts in the network"
+msgstr "Total de m�uines a la xarxa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:282
+#, c-format
+msgid "Wildcard servers (hubs?): %d"
+msgstr "Servidors comodins (concentradors?): %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:283
+msgid "Direct links: %d (~%d.%d %)"
+msgstr "Enlla�s directes: %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:284
+msgid "Close links (1 <= hops <= 3): %d (~%d.%d %)"
+msgstr "Enlla�s propers (1 <= salts <= 3): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:285
+msgid "Mid-range links (4 <= hops <= 6): %d (~%d.%d %)"
+msgstr "Enlla�s mitja dist�cia (4 <= salts <= 6): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:286
+msgid "Distant links (7 <= hops): %d (~%d.%d %)"
+msgstr "Enlla�s llunyans (7 <= salts): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:287
+#, c-format
+msgid "Broken (unknown) links: %d"
+msgstr "Enlla�s erronis (desconeguts): %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:288
+#, c-format
+msgid "Maximum links per host: %d [%s]"
+msgstr "Enlla�s m�ims per m�uina: %d [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:289
+#, c-format
+msgid "Total links: %d"
+msgstr "Enlla�s totals: %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:290
+#, c-format
+msgid "Maximum hops: %d [%s]"
+msgstr "M�ims salts: %d [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:291
+#, c-format
+msgid "Average hops: ~%d.%d"
+msgstr "Salts promig: ~%d.%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:294
+msgid "Incomplete LINKS result, no stats available"
+msgstr "Resultat parcial per a LINKS, no hi ha estad�tiques disponibles"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:747
+msgid "You're not connected to a server"
+msgstr "No est�connectat a un servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:404
+#, c-format
+msgid "Processing link: %s"
+msgstr "Processant enlla� %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:419
+msgid "Broken message syntax, can't extract hops number, assuming 0"
+msgstr ""
+"Sintaxis de missatge err�ia, no puc extreure el nmero de salts, s'assumeix 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:86
+msgid "< &Back"
+msgstr "< Enrere"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:87
+msgid "&Next >"
+msgstr "Sege&nt >"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:282
+msgid "Finish"
+msgstr "Acabar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:164
+msgid ""
+"<p><h2>Welcome :)</h2>This is your first time running this version of KVIrc."
+"<br>This wizard will guide you through the few steps required to complete "
+"the setup.<br><br>If you had a previous version of KVIrc installed, no "
+"worries. You will have a chance to preserve the old configuration.</"
+"p><p>Click \"<b>Next</b>\" to proceed.</p>"
+msgstr ""
+"<p><h2>Benvingut :)</h2>Aquesta � la primera execuci�d'aquesta versi�de "
+"KVIrc.<br>Aquest assistent el guiar�a trav� dels pocs passos necessaris per "
+"a completar la configuraci�<br><br>Si tenia installada una versi�anterior de "
+"KVIrc no es preocupi, tindr�oportunitat de preservar la seva "
+"confiuraci�anterior.</p><p>Premi \"<b>Segent</b>\" per a continuar.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:176
+msgid "Welcome to KVIrc"
+msgstr "Benvingut a KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:187
+msgid ""
+"<p>All of the files in this distribution are covered by the GPL. In human "
+"terms this can be read as follows:<br><ul><li><b>KVIrc is free</b>, use it, "
+"have fun! <b>:)</b></li><li>If you use <b>any</b> part of KVIrc in your own "
+"project, you <b>must</b> release that project under the same license.</li></"
+"ul></p><p>The \"legalese\" version of the license is shown in the box below."
+"</p>"
+msgstr ""
+"<p>Tots els arxius d'aquesta distribuci�estan coberts per la GPL.<br>Aix�es "
+"pot llegir com a:<br><ul><li><b>KVIrc � lliure</b>, empri'l i diverteixis "
+"<b>:)</b></li><li>Si utilitza <b>qualsevol</b> part de KVIrc al seu "
+"projecte, <b>HA</b> de alliberar-lo amb la mateixa llic�cia.</li></ul></"
+"p><p>La versi�\"legal\" de la llic�cia es mostra en el quadre inferior.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:203
+msgid ""
+"Oops... can't find the license file.\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+"Ups... no puc trobar l'arxiu de llic�cia.\n"
+"Ha d'estar incl� a la distribuci�..\n"
+"Si us plau, informi d'aix�a <pragma at kvirc dot net>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:211
+msgid "Dreaded License Agreement"
+msgstr "Temut Acord de Llic�cia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:215
+msgid "KVIrc Setup"
+msgstr "Configuraci�de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:224
+msgid ""
+"<p>Please choose a folder for KVIrc to store its settings and other data, "
+"and another for downloaded files. Make sure that you have permission to "
+"write to both folders.<br><br>The suggested locations are fine in most "
+"cases, so if you don't know what is this about, just click \"<b>Next</b>\"."
+"<br><br>If you had a previous version of KVIrc installed, you can choose the "
+"existing directory for the settings, and your configuration will be "
+"preserved.</p>"
+msgstr ""
+"<p>Si us plau, esculli un directori per a que KVIrc guardi la seva "
+"configuraci�i dades v�ies, i un altre per als arxius descarregats. Asseguris "
+"que poseeix permissos per a escriure en ambdos directoris.<br><br>La "
+"configuraci�suggerida � correcta quasib�sempre, per aix� si no enten que � "
+"aix� nom� premi \"<b>Segent</b>\".<br><br>Si t�installada una versi�anterior "
+"de KVIrc pot escollir els directoris existents i la seva "
+"configuraci�ser�preservada.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:234
+msgid "Application Folders"
+msgstr "Directoris de l'Aplicaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:238
+#, fuzzy
+msgid "Store configuration in folder"
+msgstr "<b>Guardar la configuraci�al directori:</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:239
+msgid "Use settings folder from previous installation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:251
+msgid "Use new settings folder"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:255
+#, fuzzy
+msgid "Settings folder:"
+msgstr "Configuracions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:281
+#, fuzzy
+msgid "Download files to folder:"
+msgstr "<b>Directori per a arxius descarregats:</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:304
+msgid "All settings in shared program folder (portable)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:325
+#, fuzzy
+msgid ""
+"Please choose a Nickname.<br><br>Your nickname is the name that other IRC "
+"users will know you by. It can't contain spaces or punctuation. Some IRC "
+"networks will shorten your nickname if it is more than 32 characters long."
+"<br><br>If in doubt, just enter the first nick that comes to mind. You will "
+"be able to change it later in the Identity properties, or with the /NICK "
+"command."
+msgstr ""
+"Si us plau, esculli un nick.<br><br>El seu nick � el nom per el que el "
+"coneixeran els altres usuaris de l'IRC. No pot contenir espais o car�ters de "
+"puntuaci� Algunes xarxes d'IRC tallaran el seu nick si t�m� de 9 car�ters de "
+"longitud.<br><br>En cas de dubte, introdueixi el primer nick que li vingui "
+"en ment. Podr�canviar-ho m� tard a les propietats del di�eg identitat, o amb "
+"la comanda /NICK."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:348
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:353
+#, fuzzy
+msgid "Profile"
+msgstr "Pr�eg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:355
+msgid "Real name:"
+msgstr "Nom real:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:361
+#, fuzzy
+msgid "Age:"
+msgstr "Mode d'us"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:392
+#, fuzzy
+msgid "Unspecified"
+msgstr "No s'ha especificat nom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:405
+#, fuzzy
+msgid "Location:"
+msgstr "&Localitzaci�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:408
+msgid "Languages:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:491
+msgid ""
+"<p>Here you can choose how much KVIrc will integrate with your system."
+"<br><br>The default settings are fine for most users so if you're in doubt "
+"just click \"<b>Next</b>\" and go to the next screen.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:501
+msgid "Desktop Integration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:504
+msgid "Make KVIrc default IRC client"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:508
+#, fuzzy
+msgid "Create desktop shortcut"
+msgstr "Acc� directe a l'Escriptori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:513
+msgid "Import server list from mIRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:727
+#, fuzzy
+msgid "Choose an Old Configuration Folder - KVIrc Setup"
+msgstr "Trii un Directori de Configuraci�- Assistent de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:736
+msgid "Do not overwrite folder? - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:737
+msgid ""
+"A folder %1 seems to be not a valid KVIrc settings folder.Do you want to use "
+"it anyway?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:753
+msgid "Choose a Configuration Folder - KVIrc Setup"
+msgstr "Trii un Directori de Configuraci�- Assistent de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:764
+msgid "Choose a Download Folder - KVIrc Setup"
+msgstr "Trii un directori per als arxius descarregats - Assistent de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:933
+msgid "Abort Setup - KVIrc Setup"
+msgstr "Interrompre Configuraci�- Assistent de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:934
+msgid ""
+"You have chosen to abort the setup.<br>KVIrc cannot run until you complete "
+"this procedure.<br><br>Do you really wish to abort?"
+msgstr ""
+"Ha triat interrompre la configuraci�<br>KVIrc no funcionar�fins que "
+"finalitzi aquest procediment.<br><br>Realment dessitja no continuar?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:965
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:996
+#, c-format
+msgid ""
+"Cannot create directory %s.\n"
+"You may not have write permission for that path. Please go back and choose "
+"another directory."
+msgstr ""
+"No puc crear el directori %s.\n"
+"Es possible que no tingui perm� d'escriptura per a aquesta ruta. Si us plau, "
+"retrocedeixi i trii un altre directori."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+#, fuzzy
+msgid "Package saved succesfully"
+msgstr "Tema guardat satisfactoriament a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:80
+msgid "Event"
+msgstr "Event"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1046
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:92
+msgid "&Export All To..."
+msgstr "&Exportar Tots a..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:90
+msgid "Edit the event handler name."
+msgstr "Editar el nom del manipulador d'events."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:154
+msgid "&Enable Handler"
+msgstr "Activar Manipulador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:158
+msgid "&Disable Handler"
+msgstr "&Desactivar Manipulador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:162
+msgid "Re&move Handler"
+msgstr "Eli&minar Manipulador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:164
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:166
+msgid "&Export Handler To..."
+msgstr "&Exportar Manipulador A..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:171
+msgid "&New Handler"
+msgstr "&Nou Manipulador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:190
+msgid "unnamed"
+msgstr "sense nom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:215
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:250
+msgid "default"
+msgstr "per defecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:314
+msgid "none"
+msgstr "res"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:318
+#, c-format
+msgid ""
+"\n"
+"\n"
+"\tEvent:\n"
+"\t\t%s\n"
+"\n"
+"\tParameters:\n"
+"%s"
+msgstr ""
+"\n"
+"\n"
+"\tEvent:\n"
+"\t\t%s\n"
+"\n"
+"\tPar�etres:\n"
+"%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+msgid "Unable to write to the event file."
+msgstr "No ha estat possible escriure en l'arxiu d'events."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+msgid "Unable to write to the events file."
+msgstr "No ha estat possible escriure en l'arxiu d'events."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:486
+msgid "Event Editor"
+msgstr "Editor d'Events"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:77
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:213
+msgid "Item"
+msgstr "Element"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:80
+msgid "Submenu"
+msgstr "Submen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:83
+msgid "External Menu"
+msgstr "Men Extern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:136
+msgid "Label"
+msgstr "Etiqueta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:93
+msgid "### Epilogue ###"
+msgstr "### Ep�eg ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:94
+msgid "Epilogue"
+msgstr "Ep�eg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:97
+msgid "### Prologue ###"
+msgstr "### Pr�eg ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:98
+msgid "Prologue"
+msgstr "Pr�eg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:198
+msgid "Popup name"
+msgstr "Nom de men emergent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:202
+msgid "Test"
+msgstr "Prova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:230
+msgid "Text:"
+msgstr "Text:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:236
+msgid ""
+"<center><b>Visible text</b><br>May contain identifiers that will be "
+"evaluated at popup call time.<br>For labels, this text can contain also "
+"limited HTML tags.</center>"
+msgstr ""
+"<center><b>Text Visible</b><br>Pot contenir identificadors que seran "
+"avaluats en el moment de la crida al men emergent.<br>Per a etiquetes, "
+"aquest text pot contenir tamb�alguns marcadors html.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:239
+msgid "Condition:"
+msgstr "Condici�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:245
+msgid ""
+"<center><b>Boolean condition</b><br>Will be evaluated at popup call time in "
+"order to decide if this entry has to be shown.<br>An empty condition "
+"evaluates to true.</center>"
+msgstr ""
+"<center><b>Condici�L�ica</b><br>Ser�avaluada en el moment de la crida al men "
+"emergent per a decidir si ha de mostrar-se aquesta opci�<br>Una "
+"condici�buida s'avalua com a certa.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:248
+msgid "Icon:"
+msgstr "Icona:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:254
+msgid ""
+"<center><b>Icon identifier</b><br>May be an internal icon ID, an absolute "
+"path or a relative path.<br>Portable scripts should never use absolute paths."
+"</center>"
+msgstr ""
+"<center><b>Identificador d'Icona</b><br>Pot ser un id d'icona interna, una "
+"ruta absoluta o una relativa.<br>Els scripts portables mai haurien d'emprar "
+"rutes absolutes.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:257
+msgid "External menu:"
+msgstr "Men extern:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:263
+msgid ""
+"<center><b>External menu name</b><br>This allows to nest externally defined "
+"popup menus. The popup menu with the specified name will be looked up at "
+"menu setup time.</center>"
+msgstr ""
+"<center><b>Nom de men extern</b><br>Aix�permet animar mens emergents "
+"definits externament. El men amb el nom especificat ser�buscat en el moment "
+"de la configuraci�del mateix.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:266
+#, fuzzy
+msgid "Item Id:"
+msgstr "Element"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:273
+msgid ""
+"<center><b>Item id</b><br>This will allow you to use delpopupitem later.</"
+"center>"
+msgstr ""
+"<center><b>id Element</b><br>Aix�et permetr�emprar delpopupitem m� tard.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:386
+msgid "New Separator Below"
+msgstr "Nou Separador Sota"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:388
+msgid "New Separator Above"
+msgstr "Nou Separador Sobre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:391
+msgid "New Separator Inside"
+msgstr "Nou Separador Dintre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:396
+msgid "New Label Below"
+msgstr "Nova Etiqueta Sota"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:398
+msgid "New Label Above"
+msgstr "Nova Etiqueta Sobre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:401
+msgid "New Label Inside"
+msgstr "Nova Etiqueta Dintre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:406
+msgid "New Item Below"
+msgstr "Nou Element Sota"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:408
+msgid "New Item Above"
+msgstr "Nou Element Sobre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:411
+msgid "New Item Inside"
+msgstr "Nou Element Dintre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:416
+msgid "New Menu Below"
+msgstr "Nou Men Sota"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:418
+msgid "New Menu Above"
+msgstr "Nou Men Sobre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:421
+msgid "New Menu Inside"
+msgstr "Nou Men Dintre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:426
+msgid "New External Menu Below"
+msgstr "Nou Men Extern Sota"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:428
+msgid "New External Menu Above"
+msgstr "Nou Men Extern Sobre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:431
+msgid "New External Menu Inside"
+msgstr "Nou Men Extern Dintre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:451
+msgid "&Paste Below"
+msgstr "Enganxar Sota"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:456
+msgid "Paste Above"
+msgstr "Enganxar Sobre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:461
+msgid "Paste Inside"
+msgstr "Enganxar Dintre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:473
+msgid "New Menu Prologue"
+msgstr "Nou Pr�eg de Men"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:481
+msgid "New Menu Epilogue"
+msgstr "Nou Ep�eg de Men"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1042
+msgid "Popup"
+msgstr "Men emergent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1048
+#, fuzzy
+msgid "&Export selected To..."
+msgstr "&Exportar Tots a..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1099
+msgid "&New Popup"
+msgstr "&Nou men emergent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1105
+msgid "Re&move Popup"
+msgstr "Eli&minar men emergent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1112
+msgid "&Export Popup To..."
+msgstr "&Exportar men emergent a..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+msgid "Unable to write to the popup file."
+msgstr "Impossible escriure en l'arxiu de men emergent."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1382
+msgid "Popup Editor"
+msgstr "Editor de mens emergents"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:62
+msgid "%cCore action: %Q"
+msgstr "%cAcci�principal: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:64
+msgid "%cUser action: %Q"
+msgstr "%cAcci�d'usuari: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:65
+msgid "Label: %Q"
+msgstr "Etiqueta: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:66
+msgid "Category: %Q"
+msgstr "Categoria: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:112
+msgid "The action \"%1\" is disabled"
+msgstr "L'acci�\"%1\" est�deshabilitada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:259
+msgid "The action \"%1\" does not exist"
+msgstr "L'acci�\"%1\" no existeix"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:255
+msgid "The action \"%1\" is a core action and cannot be destroyed"
+msgstr "L'acci�\"%1\" � una acci�principal i no pot se destru�a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:392
+msgid "The switch -l requires -c"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:409
+msgid "The switch -s requires -w with a combination of flags 'c','x' and 'q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:420
+msgid ""
+"The action \"%1\" is already defined as core action and cannot be overridden"
+msgstr ""
+"L'acci�\"%1\" ja est�definida como una acci�principal i no pot ser "
+"sobreescrita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:116
+msgid "Ops.. internal error"
+msgstr "Ups... error intern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:125
+msgid "Manage File &Transfers"
+msgstr "Gestionar &Transfer�cies d'Arxius"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:67
+msgid "Choose Avatar - KVIrc"
+msgstr "Esculli Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:72
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+"Si us plau, esculli un avatar. Es pot emprar una ruta completa a un arxiu "
+"local o una imatge a la Xarxa.<br>Si dessitja emprar un arxiu local, premi "
+"el bot�\"<b>Navegar</b>\" per a moures per els directoris locals.<br>Pot "
+"introduir-se una URL completa (incloent <b>http://</b>) per a una imatge."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:283
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:358
+msgid "Internal error: I'm not in the user database ?"
+msgstr "Error intern: no estic a la base de dades d'usuari?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:245
+#, fuzzy
+msgid "Can't set the current avatar to '%Q': failed to start the http transfer"
+msgstr ""
+"No puc posar l'avatar actual a '%s': ha fallat l'inic de la transfer�cia http"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:249
+#, fuzzy
+msgid "Can't set the current avatar to '%Q': can't load the image"
+msgstr "No puc posar el avatar actual a '%s': no puc carregar la imatge"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:351
+msgid "Invalid timeout specified, using default"
+msgstr "S'ha especificat un cron�etre v�id, fent servir el valor per defecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:389
+#, fuzzy
+msgid "Can't add a file offer for file %Q (huh ? file not readable ?)"
+msgstr "No puc afegir una oferta d'arxiu per a %s (arxiu no llegible?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:396
+#, fuzzy
+msgid "Added %d secs file offer for file %Q (%Q) and receiver %Q"
+msgstr "Afegida l'oferta de %d segs de l'arxiu %s (%s) i receptor %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:403
+#, fuzzy
+msgid "Notifying avatar '%Q' to %Q"
+msgstr "Notificant avatar '%s' a %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:55
+msgid "&Execute"
+msgstr "&Executar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:59
+msgid "Params:"
+msgstr "Par�etres:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:107
+msgid "Script Tester"
+msgstr "Comprovador d'Script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:220
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:413
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:543
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:628
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:765
+#, fuzzy
+msgid "The config file with id '%Q' is not open"
+msgstr "L'arxiu de configuraci�'%s' no est�obert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:538
+#, fuzzy
+msgid ""
+"The config file '%Q' has been changed but is opened as read-only: changes "
+"will be lost"
+msgstr ""
+"L'arxiu de configuraci�'%s' ha canviat per�est�obert com a nom� lectura: es "
+"perdran els canvis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:583
+#, fuzzy
+msgid "The config file with id '%Q' is read only"
+msgstr "L'arxiu de configuraci�amb id '%s' � de nom� lectura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:178
+msgid "Colors"
+msgstr "Colors"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:255
+#, fuzzy
+msgid "Context sensitive help"
+msgstr "No distingeix m&ajs/mins"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1167
+#, fuzzy
+msgid "&Replace"
+msgstr "Respostes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:268
+#, fuzzy
+msgid "Find & Repalce"
+msgstr "Respostes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1148
+msgid "Word to Find"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1156
+#, fuzzy
+msgid "Replace with"
+msgstr "Respostes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1172
+msgid "&Replace in all Aliases"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1176
+#, fuzzy
+msgid "&Findnext"
+msgstr "Buscar Segent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1181
+#, fuzzy
+msgid "&Replace(WIP)"
+msgstr "Respostes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:227
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:547
+msgid "The specified toolbar doesn't exist"
+msgstr "No existeix la barra d'eines especificada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:424
+#, fuzzy
+msgid "No action name/index specified"
+msgstr "No s'ha especificat el nom de l'opci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:441
+msgid "The action parameter didn't evaluate to an index"
+msgstr "El par�etre d'acci�no s'avalua com un �dex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:455
+msgid "The toolbar does not contain the specified item"
+msgstr "La barra d'eines no cont�l'element especificat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:513
+#, fuzzy
+msgid "The action \"%Q\" doesn't exist"
+msgstr "L'acci�\"%s\" no existeix"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:31
+msgid "Torrent Client"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:361
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:364
+#, fuzzy
+msgid "Standalone Servers"
+msgstr "Colors Est�dard"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:112
+#, fuzzy
+msgid ""
+"%Q doesn't look like a servers.ini file.\n"
+"Import failed."
+msgstr ""
+"%s no sembla ser un arxiu servers.ini\n"
+"Ha fallat la importaci�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:122
+msgid "Choose a servers.ini file"
+msgstr "Escolli un arxiu servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:146
+msgid "Remote mIRC servers.ini Import Wizard"
+msgstr "Assistent d'Importaci�remota de servers.ini de mIRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:154
+msgid ""
+"<center><b>Welcome!</b><br><br>This wizard will guide you in the process of "
+"downloading a list of IRC servers. Please click \"<b>Next</b>\" to begin the "
+"operation.</center>"
+msgstr ""
+"<center><b>Benvingut</b><br><br>Aquest assistent et guiar�en el proc� de "
+"desc�rega d'una llista de servidors IRC. Si us plau, prem \"<b>Segent</b>\" "
+"per a comen�r l'operaci�</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:161
+msgid ""
+"<center>Here you can modify the URL that the list will be downloaded from. "
+"In most cases the default URL is acceptable.</center>"
+msgstr ""
+"<center>Aqu�pots modificar la URL des de la que ser�descarregada la llista. "
+"Generalment, la URL per defecte � aceptable.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:169
+msgid "URL Selection"
+msgstr "Selecci�d'URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:173
+msgid "Please wait while the list is being downloaded"
+msgstr "Per favor, espera mentres es descarrega la llista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:179
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:195
+msgid "List Download"
+msgstr "Descarrega la Llista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:229
+msgid "Failed to start the server list transfer :("
+msgstr "Ha fallat l'inici de la transfer�cia de la llista de servidors :("
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:245
+msgid "File downloaded: processing ..."
+msgstr "Arxiu descarregat: procesant..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:255
+msgid "%1 servers imported succesfully"
+msgstr "%1 servidores s'han importat correctament"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:257
+msgid "No servers imported"
+msgstr "No s'ha importat cap servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:326
+msgid "Import from servers.ini"
+msgstr "Importaci�des de servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:333
+msgid "Import from http://www.mirc.co.uk/servers.ini"
+msgstr "Importaci�des de http://www.mirc.co.uk/servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lineedit.cpp:372
+#, fuzzy
+msgid "Unknown echo mode %Q"
+msgstr "Mode d'eco desconegut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:203
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:359
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:172
+#, fuzzy
+msgid "Widget parameter is not an object"
+msgstr "La finestra especificada no � un canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:230
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:250
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:449
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:485
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:177
+#, fuzzy
+msgid "Widget parameter is not a valid object"
+msgstr "La finestra especificada no � un canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:95
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:263
+msgid "Widget object required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:151
+#, fuzzy
+msgid "Unknown dock area '%Q'"
+msgstr "Operador desconegut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:321
+#, fuzzy
+msgid "Unknown alignment: '%Q'"
+msgstr "Alineaci�desconeguda: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:373
+#, fuzzy
+msgid "Unknown style: '%Q'"
+msgstr "Marc desconegut / estil d'ombra: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:84
+msgid "the toolbar cannot be a parent-widget!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:93
+#, fuzzy
+msgid "The parent-widget isn't a MainWindow."
+msgstr "La finestra actual no � un canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:999
+msgid "The array passed as parameter must contain at least 4 elements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1012
+msgid "One of the geometry array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1017
+#, fuzzy
+msgid "One of the geometry array parameters didn't evaluate to an integer"
+msgstr "El par�etre d'acci�no s'avalua com un �dex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:503
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1032
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1500
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1044
+#, fuzzy
+msgid "The first parameter didn't evaluate to an array nor an integer"
+msgstr "El par�etre d'acci�no s'avalua com un �dex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1419
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1476
+msgid "The array passed as parameter must contain at least 2 elements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:451
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:486
+msgid "One of the array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:456
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:491
+#, fuzzy
+msgid "One of the array parameters didn't evaluate to an integer"
+msgstr "El par�etre d'acci�no s'avalua com un �dex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:478
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:804
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:993
+msgid "The array passed as parameter must contain at least 3 elements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:551
+#, fuzzy
+msgid "Unknown orientation"
+msgstr "Funci�desconeguda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:789
+msgid "Pixmap or Widget parameter is not an object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:730
+msgid "Widget or Pixmap required "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:852
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:862
+#, fuzzy
+msgid "Invalid mode '%Q'"
+msgstr "Imatge no v�ida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:886
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1701
+#, fuzzy
+msgid "Pixmap parameter is not an object"
+msgstr "La finestra especificada no � un canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:891
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1706
+msgid "Pixmap object required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1027
+msgid ""
+"$setGeometry() requires either an array as first parameter or four integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:813
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1002
+msgid "One of the colors array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:818
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1007
+#, fuzzy
+msgid "One of the colors array parameters didn't evaluate to an integer"
+msgstr "El par�etre d'acci�no s'avalua com un �dex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1020
+msgid "A string of 6 digits hex is required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:842
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1031
+msgid "Not an hex digits"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1144
+msgid ""
+"$setForegroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1219
+msgid ""
+"$setBackgroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1426
+#, fuzzy
+msgid "One of the move array parameters is empty"
+msgstr "El par�etre d'acci�no s'avalua com un �dex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1431
+#, fuzzy
+msgid "One of the move array parameters didn't evaluate to an integer"
+msgstr "El par�etre d'acci�no s'avalua com un �dex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1438
+msgid "$move() requires either an array as first parameter or two integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1483
+#, fuzzy
+msgid "One of the resize array parameters is empty"
+msgstr "El par�etre d'acci�no s'avalua com un �dex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1488
+#, fuzzy
+msgid "One of the resize array parameters didn't evaluate to an integer"
+msgstr "El par�etre d'acci�no s'avalua com un �dex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1495
+msgid "$resize() requires either an array as first parameter or two integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1528
+#, fuzzy
+msgid "Invalid parameters"
+msgstr "Par�etre no v�id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1560
+#, fuzzy
+msgid "Unknown widget flag '%Q'"
+msgstr "Alineaci�desconeguda: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1592
+#, fuzzy
+msgid "Unknown style '%Q'"
+msgstr "Marc desconegut / estil d'ombra: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1622
+msgid "No Layout associated to the widget "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:117
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:152
+msgid "Can't add a non-widget object"
+msgstr "No puc afegir un objecte no-widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1650
+#, fuzzy
+msgid "Parent must be a widget object"
+msgstr "No puc afegir un objecte no-widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1715
+msgid "Null mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1740
+#, fuzzy
+msgid "Unknown widget attribute '%Q'"
+msgstr "Alineaci�desconeguda: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:382
+#, fuzzy
+msgid "No such line number"
+msgstr "No existeix el cron�etre (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:500
+#, fuzzy
+msgid "Unknown word wrap '%Q'"
+msgstr "Operaci�d'associaci�desconeguda '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:519
+msgid "Unknown wrap policy'%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:850
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1039
+msgid "$setColor requires either an array as first parameter or three integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:975
+#, fuzzy
+msgid "Unknown text format '%Q'"
+msgstr "Funci�desconeguda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1071
+#, fuzzy
+msgid " I can't find the specified file '%Q'."
+msgstr "No es pot trobar l'arxiu multim�ia %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1078
+#, fuzzy
+msgid " I cannot read the file %Q'."
+msgstr "No puc obrir aquest arxiu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1113
+#, fuzzy
+msgid "Unknown alignment '%Q'"
+msgstr "Alineaci�desconeguda: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1131
+#, fuzzy
+msgid "Unknown auto formatting mode '%Q'"
+msgstr "Operaci�d'associaci�desconeguda '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1149
+#, fuzzy
+msgid "Unknown vertical alignment '%Q'"
+msgstr "Alineaci�desconeguda: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:264
+#, fuzzy
+msgid "pix '%Q' doesn't exists"
+msgstr "L'acci�\"%s\" no existeix"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:276
+#, fuzzy
+msgid "Can't add a non - popupmenu object"
+msgstr "No puc afegir un objecte no-widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:302
+#, fuzzy
+msgid "Doesn't a widget object"
+msgstr "No puc afegir un objecte no-widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:182
+#, fuzzy
+msgid "I can't find the specified file %Q."
+msgstr "No es pot trobar l'arxiu multim�ia %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:222
+#, fuzzy
+msgid "Destination parameter is not an object"
+msgstr "La finestra especificada no � un canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:228
+#, fuzzy
+msgid "Destination must be a pixmap object"
+msgstr "La finestra especificada no � un canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:238
+msgid "Area dimensions are out of destination size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:253
+msgid "Pixmap dimensions are out of destination size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:261
+msgid "Offset width area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:266
+msgid "Offset height area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:121
+msgid "The widget must be a child of this hbox"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:191
+#, fuzzy
+msgid "No string parameter given - using empty string"
+msgstr "Par�etre de text erroni: assumint la cadena buida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:194
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:214
+#, c-format
+msgid "Item index [%d] is too big - defaulting to $count() - 1 [%d]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:333
+#, fuzzy
+msgid "Invalid insertion Policy %Q"
+msgstr "id de cron�etre no v�ida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:136
+#, fuzzy
+msgid "Unknown mode "
+msgstr "Mode d'eco desconegut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:149
+#, fuzzy
+msgid "Unknown segment style "
+msgstr "Alineaci�desconeguda: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_process.cpp:221
+msgid "Process could not be starded."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:279
+#, fuzzy
+msgid "Invalid selection mode '%Q' assuming single"
+msgstr "Adre� no v�ida per a aquest motor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:316
+#, fuzzy
+msgid "Unknown text position '%Q'"
+msgstr "Funci�desconeguda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:256
+#, fuzzy
+msgid "Unknown tickmark '%Q'"
+msgstr "Comanda desconeguda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:271
+#, fuzzy
+msgid "Unknown orientation '%Q'"
+msgstr "Funci�desconeguda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:500
+msgid "No socket object specified"
+msgstr "No s'ha especificat un objecte socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:506
+msgid "Invalid socket object specified (it doesn't inherit from socket)"
+msgstr "S'ha especificat un objecte socket no v�id (no hereta de socket)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:518
+msgid "There is no connection to accept!"
+msgstr "No hi ha connexi�que acceptar!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:591
+#, c-format
+msgid "Value %d for port is out of range (values allowed are from 0 to 65535"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:596
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:87
+msgid "Another connection in progress"
+msgstr "Una altre connexi�en progr�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:648
+msgid "No IPV6 support in this executable"
+msgstr "Executable sense suport IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:670
+#, fuzzy
+msgid "Invalid IP address specified ('%Q')"
+msgstr "S'ha especificat una adre� IP no v�ida (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:89
+msgid "Socket creation failed"
+msgstr "Creaci�de socket fallida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:706
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:727
+msgid "Invalid socket address"
+msgstr "Adre� per a socket no v�ida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:714
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:735
+msgid "Bind failure"
+msgstr "Errada en Bind"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:745
+msgid "Listen failure"
+msgstr "Crida a listen fallida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:812
+msgid "unknown"
+msgstr "desconegut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:876
+#, fuzzy
+msgid "Invalid ip address "
+msgstr "Adre� IP no v�ida (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:882
+#, fuzzy
+msgid "Invalid ip address (%Q)"
+msgstr "Adre� IP no v�ida (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:906
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1013
+msgid "Failed to create the socket"
+msgstr "Fallida al crear el socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:918
+msgid "Failed to setup a nonblocking socket"
+msgstr "Errada al configurar el mode no bloquejant per al socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:939
+#, fuzzy
+msgid "Connect failure: "
+msgstr "Connexi�fallida: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:967
+msgid "Connect attempt timed out"
+msgstr "Ha expirat l'intent de connexi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:993
+msgid "Can't start the DNS thread"
+msgstr "No s'ha pogut iniciar el fil de DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:1143
+msgid ""
+"Too much unprocessed incoming data (you've left this socket unmanaged ?)"
+msgstr ""
+"Masses dades d'entrada sense processar (ha deixat el socket sense gestionar?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:149
+msgid "Error in KVS class implementation: processing aborted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:154
+#, fuzzy
+msgid "Processing aborted"
+msgstr "Processant llista: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:160
+#, c-format
+msgid "Error near line %d, column %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:162
+#, c-format
+msgid "Warning near line %d, column %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:313
+#, fuzzy
+msgid "XML support not available in the Qt library"
+msgstr "La mitja de retr� no est�disponible encara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:491
+#, fuzzy
+msgid "Not a widget object"
+msgstr "No puc afegir un objecte no-widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:308
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:497
+#, fuzzy
+msgid "Can't find the tab "
+msgstr "No es pot trobar la icona '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:522
+#, fuzzy
+msgid "Unknown position 'Q%'"
+msgstr "Funci�desconeguda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:123
+msgid "The widget must be a child of this vbox"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:276
+#, fuzzy
+msgid "Not Enough Parameters"
+msgstr "No hi ha suficients par�etres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:142
+msgid "The listviewitem cannot be parentless"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:152
+msgid ""
+"The parent of the listviewitem must be either another listviewitem or a "
+"listview"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:403
+msgid "Pixmap object or image Id required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:413
+msgid ""
+"Error occured: the suitable file '%Q' is not of the correct format or it is "
+"not a valid icon number."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:151
+msgid ""
+"The window identifier preceeded by WinId must be the first object in the "
+"search path"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:167
+#, fuzzy
+msgid "Failed to find one of the wrap path widgets (%Q::%Q)"
+msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:176
+#, fuzzy
+msgid "Failed to find the widget to wrap"
+msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:119
+msgid "The parent of a layout must be a widget!"
+msgstr "El pare de un layout ha de ser un widget!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:269
+#, fuzzy
+msgid "Invalid resize mode defaulting to Auto"
+msgstr "Duraci�no v�ida (%s): emprant la duraci�per defecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:324
+#, fuzzy
+msgid "Unknown alignment"
+msgstr "Alineaci�desconeguda: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:373
+#, fuzzy
+msgid "Unknown orientation: "
+msgstr "Funci�desconeguda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listview.cpp:320
+#, fuzzy
+msgid "Invalid selection mode '%Q'"
+msgstr "Adre� no v�ida per a aquest motor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tbrowser.cpp:99
+#, fuzzy
+msgid "I can't find the specified file '%Q'."
+msgstr "No es pot trobar l'arxiu multim�ia %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:121
+#, fuzzy
+msgid "Can't add a null object"
+msgstr "No puc afegir un objecte no-widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:128
+msgid ""
+"Invalid object handle passed as parameter (the object is no longer "
+"existing ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:134
+msgid "Object in invalid state"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:140
+msgid "Can't set a non-widget object to be the main widget of a dock window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:146
+msgid "The added widget is not a child of this dock window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:271
+#, fuzzy
+msgid "Invalid dock area specified"
+msgstr "S'ha especificat una adre� IP no v�ida (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:181
+#, fuzzy
+msgid "Class '%Q' is not definited"
+msgstr "La classe %s no est�definida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:257
+msgid "Inexisting target object for objects.connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:262
+msgid "Inexisting source object for objects.connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:444
+#, fuzzy
+msgid "The class '%Q' does not exist"
+msgstr "L'�ies %Q no existeix"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:404
+#, fuzzy
+msgid "Object does not exists"
+msgstr "No existeix la barra d'eines especificada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:557
+msgid "Inexisting target object for objects.disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:562
+msgid "Inexisting source object for objects.disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:608
+#, fuzzy
+msgid "Source is not an object"
+msgstr "La finestra especificada no � un canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:614
+#, fuzzy
+msgid "Destination is not an object"
+msgstr "La finestra especificada no � un canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:625
+msgid "Widget, Image or Pixmap required "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:635
+msgid "Widget or Pixmap required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:714
+msgid "One o more of background, foreground or destination aren't objects"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:720
+#, fuzzy
+msgid "Pixmap objects required"
+msgstr "M�uina no trobada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:743
+msgid "Values for background are out of image size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:748
+msgid "Values for foreground are out of image size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:226
+msgid "Empty filename string"
+msgstr "Cadena de nom d'arxiu buida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:271
+#, fuzzy
+msgid "No such open mode: '%Q'"
+msgstr "No existeix el mode d'obertura: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:312
+#, fuzzy
+msgid "File is not open!"
+msgstr "L'arxiu no est�obert !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:348
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:406
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:434
+msgid "File is not open !"
+msgstr "L'arxiu no est�obert !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:369
+msgid "Argument to long, using only first char"
+msgstr "Argument massa llarg, utilitzant nom� el primer car�ter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:339
+msgid "Write error occured !"
+msgstr "Ha succe� un error d'escriptura !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:352
+msgid "Read error occured !"
+msgstr "Ha succe� un error de lectura !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:371
+msgid "An error occured !"
+msgstr "Ha succe� un error !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:387
+msgid "Missing both encrypt and decrypt key: at least one is needed"
+msgstr ""
+"Falten tant la clau de xifrat com la de desxifrat: es necessita al menys una"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:168
+msgid "Error 0: Success ?"
+msgstr "Error 0: Acomplit ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:169
+msgid "Unsupported crypt mode"
+msgstr "Mode de xifrat no suportat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:170
+msgid "Unsupported direction"
+msgstr "Adre� no suportada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:171
+msgid "Unsupported key length"
+msgstr "Longitud de clau no suportada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:172
+msgid "Bad key data"
+msgstr "Dades de clau erronies"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:173
+msgid "Engine not initialized"
+msgstr "Motor no inicialitzat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:174
+msgid "Invalid direction for this engine"
+msgstr "Adre� no v�ida per a aquest motor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:175
+msgid "Corrupted message data or invalid decrypt key"
+msgstr "Dades del missatge corruptes o clau de desxifrat no v�ida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:52
+msgid "Unknown error"
+msgstr "Error desconegut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:184
+msgid "Ops...encrypt cipher not initialized"
+msgstr "Ups...motor de xifrat no inicialitzat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:420
+msgid "Data buffer too long"
+msgstr "Buffer de dades massa llarg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:221
+msgid "Ops...decrypt cipher not initialized"
+msgstr "Ups...motor de desxifrat no inicialitzat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:277
+msgid "The message is not a hexadecimal string: this is not my stuff"
+msgstr "El missatge no � una cadena hexadecimal: aix�no � meu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:671
+msgid "The message is not a base64 string: this is not my stuff"
+msgstr "El missatge no � una cadena base64: aix�no � meu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:676
+msgid "The message doesn't seem to be encoded with CBC Mircryption"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:712
+#, c-format
+msgid ""
+"Cryptographic engine based on the\n"
+"Advanced Encryption Standard (AES)\n"
+"algorithm called Rijndael.\n"
+"The text is first encrypted with rijndael\n"
+"and then converted to %s notation.\n"
+"The keys used are %d bit long and will be padded\n"
+"with zeros if you provide shorter ones.\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"See the rijndael module documentation\n"
+"for more info on the algorithm used.\n"
+msgstr ""
+"Motor criptogr�ic basat en el\n"
+"Advanced Encryption Standard (AES)\n"
+"algoritme anomenat Rijndael.\n"
+"El text � xifrat primer amb rijndael\n"
+"i despr� convertit a notaci�%s.\n"
+"Les claus emprades s� de longitud % bits i seran reomplerts\n"
+"amb zeros si es proporciona una m� curta.\n"
+"Si nom� es proporciona una clau, aquest motor\n"
+"l'emprar�per al xifrat i desxifrat.\n"
+"Llegeixis la documentaci�del m�ul rijndael\n"
+"per a obtenir m� informaci�sobre l'algoritme emprat.\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:739
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:749
+msgid "hexadecimal"
+msgstr "hexadecimal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:759
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:779
+msgid "base64"
+msgstr "base64"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:790
+#, fuzzy
+msgid ""
+"Popular cryptographic engine based on the\n"
+"old Blowfish encryption algorithm.\n"
+"The text is first encrypted with Blowfish \n"
+"and then converted to base64 notation.\n"
+"The keys used have variable length and\n"
+"are specified as character strings.\n"
+"You can specify keys long up to 56 bytes (448 bits).\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"This engine works in ECB mode by default:\n"
+"if you want to use CBC mode you must prefix\n"
+"your key(s) with \"cbc:\".\n"
+msgstr ""
+"Motor criptogr�ic basat en el\n"
+"Advanced Encryption Standard (AES)\n"
+"algoritme anomenat Rijndael.\n"
+"El text � xifrat primer amb rijndael\n"
+"i despr� convertit a notaci�%s.\n"
+"Les claus emprades s� de longitud % bits i seran reomplerts\n"
+"amb zeros si es proporciona una m� curta.\n"
+"Si nom� es proporciona una clau, aquest motor\n"
+"l'emprar�per al xifrat i desxifrat.\n"
+"Llegeixis la documentaci�del m�ul rijndael\n"
+"per a obtenir m� informaci�sobre l'algoritme emprat.\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:61
+msgid "Drop here the icons from the toolbars to remove them"
+msgstr "Deixar aqu�les icones des de la barra d'eines per a eliminar-los"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:128
+msgid "ToolBar Properties"
+msgstr "Propietats de la Barra d'Eines"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:144
+msgid "Icon"
+msgstr "Icona"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:160
+msgid "Id"
+msgstr "Id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:217
+msgid "Please choose the icon for the ToolBar"
+msgstr "Si us plau, trii la icona per a la Barra d'Eines"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "Invalid ToolBar Label"
+msgstr "Etiqueta de Barra d'Eines no v�ida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "The ToolBar Label can't be empty!"
+msgstr "L'etiqueta de la Barra d'Eines no pot estar buida!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:256
+msgid "Duplicate ToolBar Id"
+msgstr "Id de la Barra d'Eines duplicada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:257
+msgid ""
+"The specified ToolBar Id already exists.<br>Would you like KVIrc to assign "
+"it automatically (so it doesn't collide with any other toolbar) or you "
+"prefer to do it manually ?"
+msgstr ""
+"L'Id de la Barra d'Eines especificada existeix.<br>Vol que KVIrc assigni un "
+"autom�icament (per a que no coincideixi amb alguna altre barra d'eines) o "
+"vols fer-ho manualment?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Manually"
+msgstr "Manualment"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Automatically"
+msgstr "Autom�icament"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:278
+msgid "Hide Advanced"
+msgstr "Amagar Avan�t"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:287
+msgid "Customize Toolbars"
+msgstr "Barres d'Eines personalitzades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:296
+msgid "New ToolBar"
+msgstr "Nova Barra d'Eines"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:300
+msgid "Delete ToolBar"
+msgstr "Borrar Barra d'Eines"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:304
+msgid "Edit ToolBar"
+msgstr "Editar Barra d'Eines"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:312
+#, fuzzy
+msgid "Export ToolBar"
+msgstr "Editar Barra d'Eines"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:373
+msgid "Confirm ToolBar Deletion"
+msgstr "Confirmar l'Esborrat de la Barra d'Eines"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:374
+msgid "Do you really want to delete toolbar \"%1\" ?"
+msgstr "Realment vol borra la barra d'eines \"%1\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:397
+#, fuzzy
+msgid "ToolBar Export"
+msgstr "Applets de Barra d'eines"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:398
+msgid "Do you want the associated actions to be exported with the toolbar ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#, fuzzy
+msgid "Unable to write to the toolbar file."
+msgstr "No ha estat possible escriure en l'arxiu d'�ies."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:465
+msgid "Please specify the properties for the toolbar \"%1\""
+msgstr "Per favor, especifiqui les propietats de la barra d'eines \"%1\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:491
+msgid "Please specify the properties for the new toolbar"
+msgstr "Per favor, especifiqui les propietats de la nova barra d'eines"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:493
+msgid "My ToolBar"
+msgstr "La meva Barra d'Eines"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:63
+#, fuzzy
+msgid "Window with ID '%Q' not found"
+msgstr "Finestra amb ID '%s' no trobada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:67
+#, fuzzy
+msgid "The specified window (%Q) is not a channel/query/DCC chat"
+msgstr "La finestra especificada (%s) no � un canal/privat/DCC de xat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:108
+msgid "File not found or empty"
+msgstr "Arxiu no trobat o buit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:114
+msgid "I can't open that file"
+msgstr "No puc obrir aquest arxiu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:122
+msgid "Could not paste file"
+msgstr "No puc enganxar l'arxiu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:218
+#, fuzzy
+msgid "The specified window (%Q) is not a channel/query/dcc"
+msgstr "La finestra especificada (%s) no � un canal/privat/dcc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:271
+#, fuzzy
+msgid "Slow-paste ID:%d Window:%Q"
+msgstr "Enganxat lent ID:%d Finestra:%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:240
+msgid "Plugin not found. Please check the plugin-name and path."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:247
+#, fuzzy
+msgid "Error while loading plugin."
+msgstr "Error en carregar el m�ul"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:311
+msgid "This plugin does not export the desired function."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:327
+msgid ""
+"The plugin has no function to free memory. This can result in Memory Leaks!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:209
+#, c-format
+msgid "No environment variable found, please don't use the %% in the request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:482
+#, fuzzy
+msgid "Invalid DCOP parameter syntax"
+msgstr "Par�etre no v�id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:495
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:516
+#, fuzzy
+msgid "The specified parameter is not an integer"
+msgstr "La finestra especificada no � un canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:521
+#, fuzzy, c-format
+msgid "Unsupported DCOP parameter type %s"
+msgstr "Protocol %s no suportat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:534
+#, fuzzy
+msgid "DCOP call failed"
+msgstr "crida listen() fallida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:599
+msgid "DCOP calls are available only when KDE support is compiled in"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1408
+#, c-format
+msgid "The window with id '%s' does not exist"
+msgstr "La finestra amb id '%s' no existeix"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:851
+msgid "Window type or 'all' expected as first parameter"
+msgstr "Tipus de finestra o 'tot' s'esperava com a primer par�etre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:938
+#, fuzzy
+msgid "Invalid IRC context id '%Q'"
+msgstr "Id '%s' de context d'IRC no v�id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1045
+msgid "The specified IRC context is not valid: creating a context free window"
+msgstr ""
+"El contex d'IRC especificat no � v�id: creant una finestra lliure de context"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1119
+msgid "The specified window is not of type \"userwnd\""
+msgstr "La finestra especificada no � del tipus \"userwnd\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1208
+msgid "Window doesn't have input widget"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1363
+msgid "The encrypt key wasn't a valid hexadecimal string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1377
+msgid "The decrypt key wasn't a valid hexadecimal string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1414
+msgid "Both -n and -m switchess specified, -n takes precedence"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1424
+msgid "No encrypt key specified: can't allocate engine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1446
+#, fuzzy
+msgid "Unknown engine error"
+msgstr "Error desconegut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1449
+#, fuzzy
+msgid "Failed to initialize the specified crypt engine: %Q"
+msgstr "Ha fallat la c�rega de l'arxiu d'imatge triat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1453
+#, fuzzy
+msgid "The crypt engine \"%Q\" does not exist"
+msgstr "L'acci�\"%1\" no existeix"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1458
+#, fuzzy
+msgid "This executable has been compiled without crypt support"
+msgstr "Aquest executable s'ha compilat sense suport SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:138
+msgid "Current window is not a channel"
+msgstr "La finestra actual no � una canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:87
+msgid "Raw Event"
+msgstr "Events Raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:97
+#, fuzzy
+msgid "Edit the raw event handler name."
+msgstr "Editar el nom del manipulador d'events."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:179
+msgid "&Add Raw Event..."
+msgstr "&Afegir Events Raw..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "New Raw Event"
+msgstr "Nou Event Raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "Enter the numeric code of the message (0-999)"
+msgstr "Introdueix el codi num�ic del missatge (0-999)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#, fuzzy
+msgid "Unable to write to the raw event file."
+msgstr "No ha estat possible escriure en l'arxiu d'events."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+#, fuzzy
+msgid "Unable to write to the raw events file."
+msgstr "No ha estat possible escriure en l'arxiu d'events."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:512
+msgid "Raw Editor"
+msgstr "Editor Raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:219
+msgid "A really lame text transformation engine :D"
+msgstr "Un motor de transformaci�de text realment simple :D"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:229
+#, fuzzy
+msgid "A really lame text transformation engine: Light Version."
+msgstr "Un motor de transformaci�de text realment simple :D"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:82
+#, c-format
+msgid "Socket Spy [IRC Context %u]"
+msgstr "Espia de Sockets [Context IRC %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:92
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Socket Spy</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Espia de Sockets</b></font> <font color=\"%s\">"
+"[Context IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:112
+msgid "Socket open"
+msgstr "Socket obert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:117
+msgid "Socket closed"
+msgstr "Socket tancat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:149
+msgid "Internal unique name for the action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:151
+#, fuzzy
+msgid "Label:"
+msgstr "Etiqueta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:155
+msgid ""
+"Visible name for this action.<br>This string will be displayed to the user "
+"so it is a good idea to use $tr() here"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:166
+#, fuzzy
+msgid "Action code"
+msgstr "Directoris de l'Aplicaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:168
+#, fuzzy
+msgid "Code"
+msgstr "Tancar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:174
+#, fuzzy
+msgid "Category:"
+msgstr "Categoria: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:178
+msgid "Choose the category that best fits for this action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:180
+msgid "Description:"
+msgstr "Descripci�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:184
+msgid ""
+"Visible short description for this action.<br>This string will be displayed "
+"to the user so it is a good idea to use $tr() here"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:186
+#, fuzzy
+msgid "Small Icon:"
+msgstr "Icones Petites"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:194
+msgid ""
+"The small icon associated to this action.<br>It will appear at least in the "
+"popup menus when this action is inserted.<br>It should be 16x16 pixels."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:200
+#, fuzzy
+msgid "Big Icon:"
+msgstr "Icona:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:209
+msgid ""
+"The big icon associated to this action.<br>It will appear at least in the "
+"toolbar buttons when this action is inserted.<br>It should be 32x32 pixels."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:215
+msgid "Key Sequence:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:219
+msgid ""
+"Optional keyboard sequence that will activate this action.<br>The sequence "
+"should be expressed as a string of up to four key codes separated by commas "
+"eventually combined with the modifiers \"Ctrl\",\"Shift\",\"Alt\" and \"Meta"
+"\".<br>Examples of such sequences are \"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl+X,"
+"Ctrl+C\" ..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:240
+#, fuzzy
+msgid "Needs IRC Context"
+msgstr "Nou Context d'IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:242
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window belongs to an irc context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:250
+#, fuzzy
+msgid "Needs IRC Connection"
+msgstr "Nou Context d'IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:252
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window has an active IRC connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:260
+#, fuzzy
+msgid "Enable at Login"
+msgstr "Activar xifrat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:261
+msgid ""
+"Check this option if this action should be enabled also during the login "
+"operations (so when the logical IRC connection hasn't been estabilished yet)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:265
+msgid "Enable Only in Specified Windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:267
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is of a specified type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:271
+#, fuzzy
+msgid "Enable in Console Windows"
+msgstr "Finestres de consola"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:272
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a console"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:277
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:299
+msgid "Only If There Are Selected Users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:278
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:300
+msgid ""
+"This will enable the action only if there are selected users in the active "
+"window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:282
+#, fuzzy
+msgid "Enable in Channel Windows"
+msgstr "Finestres de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:283
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:293
+#, fuzzy
+msgid "Enable in Query Windows"
+msgstr "Finestres de privats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:294
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:304
+#, fuzzy
+msgid "Enable in DCC Chat Windows"
+msgstr "Finestres de transfer�cies DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:305
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a dcc chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:627
+#, fuzzy
+msgid "Action"
+msgstr "Accions IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:680
+#, fuzzy
+msgid "New Action"
+msgstr "Acci�d'usuari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:683
+#, fuzzy
+msgid "Delete Actions"
+msgstr "Selecci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:686
+#, fuzzy
+msgid "Export Actions..."
+msgstr "Exportar a..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+#, fuzzy
+msgid "Unable to write to the actions file."
+msgstr "No ha estat possible escriure en l'arxiu d'�ies."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:823
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:824
+#, fuzzy
+msgid "My Action"
+msgstr "Accions IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:825
+#, fuzzy
+msgid "Put here a short description of your action"
+msgstr "<center>Posi aqu�una breu descripci�de la xarxa.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:925
+#, fuzzy
+msgid "Action Editor"
+msgstr "Editor d'�ies"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:938
+#, fuzzy
+msgid "Apply"
+msgstr "&Aplicar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:63
+msgid "Outgoing traffic"
+msgstr "Tr�ic sortint"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:67
+msgid "Incoming traffic"
+msgstr "Tr�ic entrant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_crypt.cpp:160
+msgid "Invalid crypt engine"
+msgstr "Motor de xifrat no v�id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:296
+msgid "Directory"
+msgstr "Directori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:315
+msgid "Socket"
+msgstr "Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:332
+msgid "Fifo"
+msgstr "FIFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:349
+msgid "Block device"
+msgstr "Dispositiu de Blocs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:366
+msgid "Char device"
+msgstr "Dispositiu de car�ters"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:429
+msgid "Octet stream (unknown)"
+msgstr "Flux de bytes (desconegut)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_osinfo.cpp:413
+#, fuzzy
+msgid "Unknown "
+msgstr "Desconegut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:181
+#, fuzzy
+msgid "The specified network has no server entries"
+msgstr "La finestra especificada no t�contenidor per a botons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:239
+msgid ""
+"The server specification seems to be in the net:<string> but the network "
+"couln't be found in the database"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:261
+msgid ""
+"The server specification seems to be in the id:<string> form but the "
+"identifier coulnd't be found in the database"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:71
+msgid "Aborted"
+msgstr "Cancellat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:96
+msgid "No request"
+msgstr "Sense petici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:141
+msgid "No filename specified for the \"StoreToFile\" processing type"
+msgstr ""
+"No s'ha especificat el nom de l'arxiu per al tipus de processat \"StoreToFile"
+"\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:160
+msgid "Invalid URL: Missing hostname"
+msgstr "URL Inv�ida: falta el nom de la m�uina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:167
+#, fuzzy
+msgid "Unsupported protocol %1"
+msgstr "Protocol %s no suportat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:189
+msgid "Unable to start the DNS lookup"
+msgstr "No puc iniciar la cerca DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:194
+#, c-format
+msgid "Looking up host %s"
+msgstr "Buscant la m�uina %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:210
+#, fuzzy
+msgid "Host %s resolved to %Q"
+msgstr "Nom de la m�uina %s resolt a %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:246
+msgid "Unable to start the request slave thread"
+msgstr "No s'ha pogut iniciar el fil esclau de peticions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:251
+#, fuzzy
+msgid "Contacting host %Q on port %u"
+msgstr "Contactant amb %s en el port %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:271
+msgid "Connection established, sending request"
+msgstr "Connexi�establerta, enviant petici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:322
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:51
+msgid "Success"
+msgstr "Acomplit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:429
+msgid "Failed to rename the existing file, please rename manually and retry"
+msgstr ""
+"Fallida al renombrar l'arxiu existent, renombri manualment o intenti-ho de "
+"nou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:447
+#, fuzzy
+msgid "Can't open file \"%Q\" for writing"
+msgstr "No puc obrir l'arxiu \"%s\" en mode escriptura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:497
+#, c-format
+msgid "Invalid HTTP response: %s"
+msgstr "Resposta HTTP no v�ida: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:503
+#, c-format
+msgid "Received HTTP response: %s"
+msgstr "Resposta HTTP rebuda: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:628
+msgid "Stream exceeding maximum length"
+msgstr "L'Stream excedeix la longitud m�ima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:661
+msgid "Header too long: exceeded 4096 bytes"
+msgstr "Cap�lera molt llarga: Excedeix els 4096 bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:710
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:852
+msgid "Stream exceeded expected length"
+msgstr "L'Stream excedeix la longitud esperada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:798
+msgid "Protocol error: invalid chunk size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:818
+#, fuzzy
+msgid "Chunk header too long: exceeded 4096 bytes"
+msgstr "Cap�lera molt llarga: Excedeix els 4096 bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:987
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1193
+msgid "Operation timed out"
+msgstr "Ha expirat el temps per a l'operaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1003
+#, fuzzy
+msgid "Unexpected SSL error"
+msgstr "Identificador inesperat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1016
+msgid "Failed to enter non blocking mode"
+msgstr "Fallida al intentar entrar en mode no blocant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1021
+msgid "Invalid target address"
+msgstr "Adre� de dest�no v�ida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1056
+#, fuzzy
+msgid "Failed to initialize the SSL context"
+msgstr "Ha fallat la c�rega de l'arxiu d'imatge triat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1058
+#, fuzzy
+msgid "Failed to initialize the SSL connection"
+msgstr "Fallida al comen�r la connexi� %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1075
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:99
+msgid "Remote end has closed the connection"
+msgstr "El extrem remot ha tancat la connexi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1087
+#, fuzzy
+msgid "Unrecoverable SSL error during handshake"
+msgstr "Error irrecuperable del servidor de noms(S'ha penjat?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1272
+msgid "Operation timed out (while selecting for read)"
+msgstr ""
+"Ha expirat el temps per a l'operaci�(mentre es feia un select de lectura)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1382
+#, fuzzy
+msgid "This KVIrc executable has no SSL support"
+msgstr "Aquest executable de KVirc no t�suport IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1147
+msgid "Back"
+msgstr "Enrere"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:268
+#, fuzzy
+msgid "Next"
+msgstr "Text"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:168
+#, fuzzy
+msgid "%1 bytes"
+msgstr " bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:172
+msgid "%1 KB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:176
+msgid "%1 MB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:181
+msgid "%1 GB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:185
+msgid "%1 TB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:620
+msgid "Internal error"
+msgstr "Error intern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:54
+msgid "Unknown command"
+msgstr "Comanda desconeguda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:55
+msgid "Missing closing brace"
+msgstr "Falta la clau de tancament"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:56
+msgid "Unexpected end of command in string"
+msgstr "Fi de comanda inesperada a la cadena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:57
+msgid "Unexpected end of command in dictionary key"
+msgstr "Fi de comanda inesperada en la clau de diccionari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:58
+msgid "Switch dash without switch letter"
+msgstr "Barra de canvi sense lletra de canvi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:59
+msgid "Unknown function"
+msgstr "Funci�desconeguda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:60
+msgid "Unexpected end of command in parenthesis"
+msgstr "Fi de comanda inesperat entre par�tesis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:61
+msgid "Unexpected end of command in function parameters"
+msgstr "Fi de comanda inesperat en par�etres de funci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:62
+msgid "Missing variable name"
+msgstr "Falta el nom de la variable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:63
+msgid "Variable or identifier expected"
+msgstr "S'esperava una variable o identificador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:64
+msgid "Left operand is not a number"
+msgstr "El operand de l'esquerra no � un nmero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:65
+msgid "Multiple operations not supported for numeric operators"
+msgstr "Els operadors num�ics no suporten operacions mltiples"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:67
+msgid "Modulo by zero"
+msgstr "M�ul per zero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:68
+msgid "Right operand is not a number"
+msgstr "El operand de la dreta no � un nmero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:69
+msgid "Unterminated expression (missing ')' ?)"
+msgstr "Expressi�incabada (falta un ')' ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:70
+msgid "Unterminated subexpression (Parenthesis mismatch)"
+msgstr "Subexpressi�inacabada (Els par�tesis no concorden)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:71
+msgid "Unexpected character"
+msgstr "Car�ter inesperat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:73
+msgid "No host to resolve"
+msgstr "No hi ha tal m�uina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:74
+msgid "(DNS Internal) Unsupported address family"
+msgstr "(DNS intern) Fam�ia de direcci�no suportada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:75
+msgid "Valid name but the host has no IP address"
+msgstr "Nom v�id per�la m�uina no t�adre� IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:76
+msgid "Unrecoverable nameserver error (crashed ?)"
+msgstr "Error irrecuperable del servidor de noms(S'ha penjat?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:77
+msgid "Dns temporaneous fault (try again)"
+msgstr "Errada temporal de DNS (prova-ho un altre vegada)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:78
+msgid "(DNS Internal) Bad flags"
+msgstr "(DNS intern) Par�etres incorrectes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:79
+msgid "(DNS Internal) Out of memory"
+msgstr "(DNS intern) Sense mem�ia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:80
+msgid "(DNS Internal) Service not supported"
+msgstr "(DNS intern) Servei no suportat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:81
+msgid "Unknown node (host not found)"
+msgstr "Node desconegut (m�uina no trobada)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:82
+msgid "(DNS Internal) Unsupported socket type"
+msgstr "(DNS intern) Tipus de socket no suportat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:83
+msgid "Dns query failed"
+msgstr "Petici�DNS fallida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:84
+msgid "This KVIrc executable has no IPV6 support"
+msgstr "Aquest executable de KVirc no t�suport IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:85
+msgid "Host not found"
+msgstr "M�uina no trobada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:86
+msgid "(DNS Internal) IPC failure (slave data corrupted)"
+msgstr "(DNS intern) Errada IPC (dades esclaves corruptes)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:88
+msgid "Invalid IP address"
+msgstr "Adre� IP no v�ida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:90
+msgid "Failed to put the socket in non blocking mode"
+msgstr "Fallida al posar el socket en mode no balancejant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:91
+msgid "Bad file descriptor"
+msgstr "Descriptor d'arxiu no v�id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:92
+msgid "Out of address space"
+msgstr "Sense espai de direccions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:93
+msgid "Connection refused"
+msgstr "Connexi�rebutjada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:94
+msgid "Kernel networking panic"
+msgstr "Error greu en el nucli de xarxa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:95
+msgid "Connection timed out"
+msgstr "La connexi�ha caigut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:96
+msgid "Network is unreachable"
+msgstr "La xarxa � inaccessible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:97
+msgid "Broken pipe"
+msgstr "Pipe trencada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:98
+msgid "Invalid proxy address"
+msgstr "Adre� de proxy no v�ida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:100
+msgid "Invalid irc context id"
+msgstr "Id de context irc no v�id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:101
+msgid "Error in loading module"
+msgstr "Error en carregar el m�ul"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:102
+msgid "No such module command"
+msgstr "No hi ha tal comanda de m�ul"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:103
+msgid "No such module function"
+msgstr "No hi ha tal funci�de m�ul"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:104
+msgid "Left operand is not a dictionary reference"
+msgstr "L'operador esquerra no � una refer�cia de diccionari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:105
+msgid "Right operand is not a dictionary reference"
+msgstr "L'operador dret no � una refer�cia a diccionari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:106
+msgid "Missing object class name"
+msgstr "Falta el nom de la classe de l'objecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:107
+msgid "No such object class"
+msgstr "No existeix aquesta classe d'objecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:108
+msgid "No such object"
+msgstr "No hi ha tal objecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:109
+msgid "No such object function"
+msgstr "No hi ha tal funci�d'objecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:110
+msgid "Invalid left operand"
+msgstr "Operador esquerra no v�id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:111
+msgid "Not enough parameters"
+msgstr "No hi ha suficients par�etres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:112
+msgid "Integer parameter expected"
+msgstr "S'esperava un par�etre enter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:113
+msgid "Invalid parameter"
+msgstr "Par�etre no v�id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:114
+msgid "No such file"
+msgstr "No existeix l'arxiu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:115
+msgid "Open parenthesis expected"
+msgstr "S'esperava par�tesis d'apertura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:116
+msgid "Open brace expected"
+msgstr "S'esperava la clau d'apertura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:117
+msgid "Can't kill a builtin class"
+msgstr "No es pot matar una classe interna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:118
+msgid "The SOCKSV4 protocol lacks IpV6 support"
+msgstr "El protocol SOCKSV4 no t�suport IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:119
+msgid "Unrecognized proxy reply"
+msgstr "Resposta del proxy no reconeguda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:120
+msgid "Proxy response: auth failed: access denied"
+msgstr "Resposta del proxy: autentificaci�fallida: acc� denegat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:121
+msgid "Proxy response: No acceptable auth method: request rejected"
+msgstr ""
+"Resposta del proxy: M�ode d'autentificaci�no acceptable: petici�rebutjada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:122
+msgid "Proxy response: request failed"
+msgstr "Resposta del proxy: petici�fallida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:123
+msgid "Proxy response: ident failed"
+msgstr "Resposta del proxy: ident fallit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:124
+msgid "Proxy response: ident not matching"
+msgstr "Resposta del proxy: l'identitat (ident) no concorda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:125
+msgid "Proxy response: general SOCKS failure"
+msgstr "Resposta del proxy: fallida general de SOCKS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:126
+msgid "Proxy response: connection not allowed"
+msgstr "Resposta del proxy: connexi�no permesa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:127
+msgid "Proxy response: network unreachable"
+msgstr "Resposta del proxy: xarxa inabastable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:128
+msgid "Proxy response: host unreachable"
+msgstr "Resposta del proxy: m�uina inabastable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:129
+msgid "Proxy response: connection refused"
+msgstr "Resposta del proxy: connexi�rebutjada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:130
+msgid "Proxy response: TTL expired"
+msgstr "Resposta del proxy: TTL expirat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:131
+msgid "Proxy response: command not supported"
+msgstr "Resposta del proxy: comanda no suportada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:132
+msgid "Proxy response: address type not supported"
+msgstr "Resposta del proxy: tipus d'adre� no suportada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:133
+msgid "Proxy response: invalid address"
+msgstr "Resposta del proxy: direcci�no v�ida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:134
+msgid "Invalid port number"
+msgstr "Nmero de port no v�id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:135
+msgid "Socket not connected"
+msgstr "Socket no conectat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:136
+msgid "Insufficient resources to complete the operation"
+msgstr "Recursos insuficients per a completar l'operaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:137
+msgid "Can't setup a listening socket : bind failed"
+msgstr "No puc configurar un socket en escolta: fallida en l'enlla�(bind)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:138
+msgid "Can't resolve the localhost name"
+msgstr "No puc resoldre el nom de la m�uina local"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:139
+msgid "Unsupported image format"
+msgstr "Format d'imatge no suportat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:140
+msgid "Can't open file for appending"
+msgstr "No puc obrir l'arxiu per afegir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:542
+msgid "Can't open file for writing"
+msgstr "No puc obrir l'arxiu per a escriptura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:142
+msgid "File I/O error"
+msgstr "Error E/S d'arxiu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:143
+msgid "Acknowledge error"
+msgstr "Error en la confirmaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:982
+msgid "Can't open file for reading"
+msgstr "No puc obrir l'arxiu per a lectura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:145
+msgid "Can't send a zero-size file"
+msgstr "No puc enviar un arxiu de mida zero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:146
+msgid "Missing popup name"
+msgstr "Falta nom de men emergent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:147
+msgid "'item', 'popup', 'label' or 'separator' keyword expected"
+msgstr ""
+"S'esperava una paraula clau entre 'item', 'popup', 'label' o 'separator'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:148
+msgid "Self modification not allowed"
+msgstr "Automodificaci�no permesa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:149
+msgid "UNUSED"
+msgstr "SENSE US"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:150
+msgid "Feature not available"
+msgstr "Funcionalitat no disponible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:151
+msgid "Unexpected characters in array index"
+msgstr "Car�ters inesperats en l'index de la matriu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:152
+msgid "Unexpected end in expression"
+msgstr "Fi d'expressi�inesperat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:153
+msgid "Unexpected end in array index"
+msgstr "Fi inesperat en l'index de la matriu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:154
+msgid "Connection thru HTTP proxy failed"
+msgstr "La connexi�a trav� del proxy HTTP ha fallat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:155
+msgid "Case , match , regexp , default or break keyword expected"
+msgstr "S'esperava una paraula clau case, match, regexp, default o break"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:156
+msgid "Access denied"
+msgstr "Acc� denegat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:157
+msgid "Address already in use"
+msgstr "Adre� ja en s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:158
+msgid "Can't assign the requested address"
+msgstr "No s'ha pogut assignar l'adre� solicitada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:159
+msgid "Connection reset by peer"
+msgstr "Connexi�tancada per l'altre m�uina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:160
+msgid "Host unreachable (no route to host)"
+msgstr "M�uina inabastable (no hi ha ruta cap a la m�uina)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:161
+msgid "Variable expected"
+msgstr "S'esperava una variable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:162
+msgid "Invalid array index: positive integer expected"
+msgstr "�dex de la matriu no v�id: s'esperava un enter positiu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:163
+msgid "listen() call failed"
+msgstr "crida listen() fallida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:164
+msgid "This executable has been compiled without SSL support"
+msgstr "Aquest executable s'ha compilat sense suport SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:165
+msgid "Secure Socket Layer error"
+msgstr "Error SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:166
+msgid "Slash (/) character expected"
+msgstr "S'esperava un car�ter barra (/)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:167
+msgid "Unknown string manipulation operation"
+msgstr "Operaci�de manipulaci�de cadena desconeguda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:168
+msgid "Operation aborted"
+msgstr "Operaci�cancellada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:169
+msgid "Unexpected token"
+msgstr "Identificador inesperat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:170
+msgid "Scope object already defined (unexpected @)"
+msgstr "Ja s'ha definit el �bit de l'objecte (@ inesperat)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:171
+msgid "There is no $this pointer in this scope (unexpected @)"
+msgstr "No hi ha un punter $this en aquest �bit (@ inesperat)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:140
+#, fuzzy
+msgid "Operation cancelled"
+msgstr "Operaci�cancellada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:170
+#, fuzzy
+msgid "File write error"
+msgstr "Error E/S d'arxiu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:176
+#, fuzzy
+msgid "File read error"
+msgstr "Error E/S d'arxiu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:324
+msgid "Packaging file %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:779
+#, fuzzy
+msgid "Failed to open a source file for reading"
+msgstr "No puc obrir l'arxiu per a lectura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:817
+#, fuzzy
+msgid "Compression library initialization error"
+msgstr "Realitzant primeres inicialitzacions..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:394
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:828
+msgid "Compression library error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:465
+#, fuzzy
+msgid "Compression library internal error"
+msgstr "Ups... error intern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:485
+msgid "Error while compressing a file stream"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:526
+#, fuzzy
+msgid "Creating package..."
+msgstr "Creant estructures internes..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:527
+msgid "Writing package header"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:571
+msgid "Writing informational fields"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:597
+msgid "Writing package data"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:659
+#, fuzzy
+msgid "The file specified is not a valid KVIrc package"
+msgstr "El format de temps especificat no � v�id (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:668
+msgid ""
+"The package has an invalid version number, it might have been created by a "
+"newer KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:714
+msgid "Invalid info field: the package is probably corrupt"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:745
+msgid ""
+"The package contains compressed data but this executable does not support "
+"compression"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:771
+#, fuzzy
+msgid "Failed to create the target directory"
+msgstr "No puc crear el directori per al tema."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:784
+msgid "Unpacking file %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:916
+msgid "Error in compressed file stream"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:990
+#, fuzzy
+msgid "Reading package..."
+msgstr "Carregant alies..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:991
+msgid "Reading package header"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:998
+#, fuzzy
+msgid "Reading package data"
+msgstr "Dades de clau erronies"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:1017
+msgid "Invalid data field: the package is probably corrupt"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1127
+msgid "Select color"
+msgstr "Seleccionar color"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1128
+msgid "&Basic colors"
+msgstr "Colors &b�ics"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1129
+msgid "&Custom colors"
+msgstr "&Colors personalitzats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1130
+msgid "&Red"
+msgstr "&Vermell"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1131
+msgid "&Green"
+msgstr "&Verd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1132
+msgid "Bl&ue"
+msgstr "Bla&u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1133
+msgid "&Define Custom Colors >>"
+msgstr "&Definir Colors Personalitzats >>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1134
+msgid "&Add to Custom Colors"
+msgstr "&Afegir Colors Personalitzats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1136
+msgid "Select Font"
+msgstr "Seleccionar Font"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1137
+msgid "&Font"
+msgstr "&Font"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1138
+msgid "Font st&yle"
+msgstr "Est&il de font"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1139
+msgid "&Size"
+msgstr "&Mida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1140
+msgid "Sample"
+msgstr "Exemple"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1141
+msgid "Effects"
+msgstr "Efectes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1142
+msgid "Stri&keout"
+msgstr "Taxada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1143
+msgid "&Underline"
+msgstr "S&ubratllada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1144
+msgid "Scr&ipt"
+msgstr "Scr&ipt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1146
+msgid "Parent Directory"
+msgstr "Directori Pare"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1148
+msgid "Forward"
+msgstr "Endavant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1149
+msgid "Reload"
+msgstr "Recarregar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1150
+msgid "New Directory"
+msgstr "Nou Directori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1151
+msgid "Bookmarks"
+msgstr "Marcadors"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1152
+msgid "Add Bookmark"
+msgstr "Afegir Marcador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1153
+msgid "&Edit Bookmarks"
+msgstr "&Editar Marcadors"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1154
+msgid "New Bookmark Folder..."
+msgstr "Nou Directori de Marcadors..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1156
+msgid "Sorting"
+msgstr "Ordenaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1157
+msgid "By Name"
+msgstr "Per Nom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1158
+msgid "By Date"
+msgstr "Per Data"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1159
+msgid "By Size"
+msgstr "Per Mida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1160
+msgid "Reverse"
+msgstr "Al rev�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1161
+msgid "Directories First"
+msgstr "Directoris Primer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1162
+msgid "Case Insensitive"
+msgstr "No distingeix majs/mins"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1163
+msgid "Short View"
+msgstr "Vista Breu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1164
+msgid "Detailed View"
+msgstr "Vista Detallada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1165
+msgid "Show Hidden Files"
+msgstr "Mostrar Arxius Amagats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1166
+msgid "Show Quick Access Navigation Panel"
+msgstr "Mostrar Acc� a Panell de Navegaci�R�id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1167
+msgid "Show Preview"
+msgstr "Mostrar Previsualitzaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1168
+msgid "Separate Directories"
+msgstr "Separar Directoris"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1169
+msgid "Often used directories"
+msgstr "Directoris usats m� freqentment"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1170
+msgid "Desktop"
+msgstr "Escritori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1171
+msgid "Home Directory"
+msgstr "Directori Personal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1172
+msgid "Floppy"
+msgstr "Disquetera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1173
+msgid "Temporary Files"
+msgstr "Arxius Temporals"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1174
+msgid "Network"
+msgstr "Xarxa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1175
+msgid "New Directory..."
+msgstr "Nou Directori..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1176
+msgid "Delete"
+msgstr "Esborrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1177
+msgid "Thumbnail Previews"
+msgstr "Previsualitzar Diapositives"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1178
+msgid "Large Icons"
+msgstr "Icones Grans"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1179
+msgid "Small Icons"
+msgstr "Icones Petites"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1180
+msgid "Properties..."
+msgstr "Propietats..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1181
+msgid "&Automatic Preview"
+msgstr "Previsualitzaci�&Autom�ica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1182
+msgid "&Preview"
+msgstr "&Previsualitzar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1183
+msgid "&Location:"
+msgstr "&Localitzaci�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1184
+msgid "&Filter:"
+msgstr "&Filtre:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1185
+msgid "All Files"
+msgstr "Tots els arxius"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:104
+msgid "- d -- h -- m -- s"
+msgstr "- d -- h -- m -- s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:111
+#, c-format
+msgid "%u h %u m %u s"
+msgstr "%u h %u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:113
+#, c-format
+msgid "%u h %u%u m %u%u s"
+msgstr "%u h %u%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:118
+#, c-format
+msgid "%u m %u s"
+msgstr "%u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:120
+#, c-format
+msgid "%u m %u%u s"
+msgstr "%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:122
+#, c-format
+msgid "%u s"
+msgstr "%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:127
+#, c-format
+msgid "%u d %u h %u m %u s"
+msgstr "%u d %u h %u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:129
+#, c-format
+msgid "%u d %u%u h %u%u m %u%u s"
+msgstr "%u d %u%u h %u%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+#, fuzzy
+msgid "Usage"
+msgstr "Mode d'us"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+#, fuzzy
+msgid "message"
+msgstr "Tipus de missatge"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:99
+msgid "-m: send a message instead of a notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:100
+#, fuzzy
+msgid "-w: send notice to all channel owners"
+msgstr "No s'ha posat tema per al canal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:101
+#, fuzzy
+msgid "-a: send notice to all channel admins"
+msgstr "No s'ha posat tema per al canal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:102
+#, fuzzy
+msgid "-o: send notice to all channel ops"
+msgstr "No s'ha posat tema per al canal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:103
+msgid "-h: send notice to all channel halfops"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:104
+msgid "-v: send notice to all channel voices"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:105
+msgid "-q: quiet mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:138
+msgid "Sending wallop to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:314
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:410
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:493
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:535
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:593
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:653
+msgid "Usage:"
+msgstr "Mode d'us"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:223
+msgid "reason"
+msgstr "ra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:272
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:416
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:440
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:599
+msgid "This is not a channel window"
+msgstr "Aix�no � una finestra del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:581
+msgid "Unsupported type: $0"
+msgstr "Tipus no suportat: $0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:604
+msgid "Channel Owner"
+msgstr "Propietari del Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:606
+msgid "Channel Administrator"
+msgstr "Administrador del Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:608
+msgid "Channel Operator"
+msgstr "Operador del Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:610
+msgid "Half Operator"
+msgstr "Semioperador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:612
+msgid "Voice"
+msgstr "Veu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:614
+msgid "User Operator"
+msgstr "Usuari Operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:616
+msgid "Normal User"
+msgstr "Usuari Normal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:641
+msgid "You must use DNS in an IRC context"
+msgstr "Has d'emprar DNS en un context IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:647
+msgid "You must be connected to a server"
+msgstr "Ha d'estar connectat a un servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:664
+msgid "No such user: $0"
+msgstr "No existeix l'usuari: $0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:33
+msgid "The default script has been successfully installed."
+msgstr "L'script per defecte ha estat installat satisfactoriament."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:34
+msgid "To connect to a server, type /server <server name>"
+msgstr "Per a connectar a un servidor, escrigui /server <nom_de_servidor>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:36
+msgid "Happy ircing :)"
+msgstr "Feli�IRCeig :)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:15
+msgid "Options"
+msgstr "Opcions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:40
+msgid "Window operations"
+msgstr "Operacions amb Finestres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMENAME@"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMEDESCRIPTION@"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:18
+msgid "Stop Highlighting (Local)"
+msgstr "Parar Ressaltat (Local)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:23
+msgid "Start Highlighting (Local)"
+msgstr "Iniciar Ressaltat (Local)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:28
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:61
+msgid "Always Highlight"
+msgstr "Sempre Ressaltat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:30
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:55
+msgid "Highlight as"
+msgstr "Ressaltar com a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:66
+msgid "Stop Highlighting"
+msgstr "Parar Ressaltat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:82
+msgid "is being ignored"
+msgstr "est�sent ignorat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:87
+msgid "is not being ignored"
+msgstr "no est�sent ignorat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:93
+#, fuzzy
+msgid "Enable Ignore"
+msgstr "Activar Manipulador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:98
+#, fuzzy
+msgid "Ignore as..."
+msgstr "Ignorar com a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:240
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:282
+msgid "Ignore as"
+msgstr "Ignorar com a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:290
+msgid "Unignore"
+msgstr "Treure ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:308
+msgid "is registered as"
+msgstr "est�ignorat com a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:311
+msgid "is in the notify list"
+msgstr "est�a la llista de notificaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:314
+msgid "has a default avatar"
+msgstr "t�un avatar per defecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:317
+msgid "is not registered"
+msgstr "no est�registrat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:323
+msgid "Register"
+msgstr "Registrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:328
+msgid "Quick Registration"
+msgstr "Registre R�id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:330
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:355
+msgid "Register as"
+msgstr "Registrar com a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:361
+msgid "Edit Registration"
+msgstr "Editar Registre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:366
+msgid "Unregister"
+msgstr "Treure Registre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:373
+msgid "Add to Notify"
+msgstr "Afegir per a Notificar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:378
+msgid "Remove from Notify"
+msgstr "Treure de Notificar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:385
+msgid "Choose"
+msgstr "Escollir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:387
+msgid "Choose Avatar Image File"
+msgstr "Esculli un Arxiu d'Imatge d'Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:396
+msgid "Set as Default"
+msgstr "Posar per Defecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:401
+msgid "Clear Default"
+msgstr "Netejar per Defecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:412
+#, fuzzy
+msgid "Copy To Clipboard"
+msgstr "Copiar al portapapers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:433
+msgid "Ban"
+msgstr "Prohibit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1037
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1084
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1224
+msgid "Multiple Users"
+msgstr "Mltiples usuaris"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:577
+msgid "&Ban"
+msgstr "Prohi&bici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1089
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1229
+msgid "idle time"
+msgstr "temps oci�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:758
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1236
+msgid "&Information"
+msgstr "&Informaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1115
+msgid "DNS for"
+msgstr "DNS per a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:499
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1120
+msgid "Mask for"
+msgstr "M�cara per a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:505
+msgid "&Control"
+msgstr "&Control"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:509
+msgid "O&wner"
+msgstr "Propietari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:514
+msgid "&Deowner"
+msgstr "Treure propietari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:519
+msgid "&Administrator"
+msgstr "&Administrador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:524
+msgid "&Deadministrator"
+msgstr "Treure administrador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:529
+msgid "&Op"
+msgstr "&Op"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:534
+msgid "&Deop"
+msgstr "Treure Op"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:539
+msgid "&Halfop"
+msgstr "Semioperador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:544
+msgid "&Dehalfop"
+msgstr "Treure semioperador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:549
+msgid "&Voice"
+msgstr "&Veu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:554
+msgid "D&evoice"
+msgstr "Treure Veu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:561
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "&Kick"
+msgstr "&Kick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+msgid "K&ick"
+msgstr "Kickejar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "With..."
+msgstr "Amb..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Kick Reason"
+msgstr "Ra�del Kick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Enter a kick reason"
+msgstr "Introdueixi la ra�del kick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "Kick/Ban"
+msgstr "Kick/Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Kick/Ban Reason"
+msgstr "Ra�del Kick/Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Enter a kick/ban reason"
+msgstr "Introdueixi la ra�del kick/ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "&Kick/Ban"
+msgstr "&Kick/Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:604
+#, fuzzy
+msgid "Configure ban mask..."
+msgstr "Configurar Servidors"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:612
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1263
+msgid "&Query"
+msgstr "Privat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:625
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1136
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1276
+msgid "&Registration"
+msgstr "&Registrar-se"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1278
+msgid "&Highlight"
+msgstr "Ressaltat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:629
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1280
+msgid "Ig&nore"
+msgstr "Ig&norar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:726
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1050
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1138
+msgid "Notify Avatar"
+msgstr "Notificar Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:705
+msgid "&Part"
+msgstr "&Partir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:664
+#, fuzzy
+msgid "Copy Channel Address"
+msgstr "Modes de Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:749
+msgid "Channels"
+msgstr "Canals"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:693
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:753
+msgid "&Join Channels..."
+msgstr "Unir-se a Canals..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:700
+msgid "&Hop"
+msgstr "Saltar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:733
+#, fuzzy
+msgid "Copy Channel URL to Clipboard"
+msgstr "Copiar al portapapers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:782
+msgid "l (Connections)"
+msgstr "l (Connexions)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:787
+msgid "m (Command Usage)"
+msgstr "m (Mode d'us de les Comandes)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:792
+msgid "o (Operators)"
+msgstr "o (Operadors)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:797
+msgid "t (Connection stats ?)"
+msgstr "t (Estad�tiques de la connexi�?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:802
+msgid "u (Uptime)"
+msgstr "u (Temps de Funcionament)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:807
+msgid "y (y-Lines)"
+msgstr "y (L�ies-y)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:812
+msgid "z (Debug Stats?)"
+msgstr "z (Estad�tiques de Depuraci�)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:909
+msgid "Chat with"
+msgstr "Xat amb"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:914
+#, fuzzy
+msgid "Reverse Chat with"
+msgstr "Xat segur amb"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:919
+msgid "Secure Chat with"
+msgstr "Xat segur amb"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:926
+msgid "Send to"
+msgstr "Enviat a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:931
+#, fuzzy
+msgid "Secure send to"
+msgstr "Enviament Invers a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:936
+msgid "Reverse Send to"
+msgstr "Enviament Invers a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:941
+#, fuzzy
+msgid "Secure Reverse Send to"
+msgstr "Enviament Invers a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:948
+msgid "TDCC Send to"
+msgstr "TDCC Enviat a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:953
+msgid "TDCC Reverse Send to"
+msgstr "TDCC Enviament Invers a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:960
+msgid "Voice Chat"
+msgstr "Xat de Veu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1134
+msgid "&Ignore"
+msgstr "&Ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1165
+msgid "Logging to"
+msgstr "Registrar a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1167
+msgid "Flush Log File"
+msgstr "Volcar l'Arxiu de Registre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1174
+msgid "Stop Logging"
+msgstr "Aturar el Registre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1179
+msgid "Not Logging"
+msgstr "Sense Registrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+msgid "Log To Default File"
+msgstr "Registrar l'Arxiu per Defecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+msgid "Include Existing Buffer"
+msgstr "Incloure el Buffer Existent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+msgid "Log To..."
+msgstr "Registrar a..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1201
+msgid "Choose Log Filename"
+msgstr "Escull un Nom d'Arxiu de Registre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1282
+msgid "Notify avatar"
+msgstr "Notificar Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:50
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$copyfiles must be a "
+"source directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:56
+#, c-format
+msgid ""
+"[Installer] The second argument to \\%installer->\\$copyfiles must be a file "
+"name or file regexp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:62
+#, c-format
+msgid ""
+"[Installer] The third argument to \\%installer->\\$copyfiles must be a "
+"destination directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:94
+#, fuzzy
+msgid "[Installer] Failed to create directory"
+msgstr "Errada al borrar el directori %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:104
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$includefiles must be a "
+"source directory"
+msgstr ""
+
+#~ msgid "Lag is"
+#~ msgstr "El retr� �"
+
+#~ msgid "milliseconds"
+#~ msgstr "milisegons"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c: %Q"
+#~ msgstr "Informaci�de %c\r!n\r%Q\r%c: %Q"
+
+#, fuzzy
+#~ msgid "Basic Properties"
+#~ msgstr "Propietats"
+
+#, fuzzy
+#~ msgid "Other:"
+#~ msgstr "Altres..."
+
+#, fuzzy
+#~ msgid "Choose a server to connect"
+#~ msgstr "Escolli un arxiu servers.ini"
+
+#~ msgid "Server:"
+#~ msgstr "Servidor:"
+
+#~ msgid "Port:"
+#~ msgstr "Port:"
+
+#, fuzzy
+#~ msgid "URL:"
+#~ msgstr "URL"
+
+#, fuzzy
+#~ msgid "Use server config"
+#~ msgstr "Emprar Codificaci�del Sistema"
+
+#, fuzzy
+#~ msgid "Config file:"
+#~ msgstr "Configurar"
+
+#~ msgid "Report a Bug"
+#~ msgstr "Informar d'un Bug"
+
+#~ msgid "Smart"
+#~ msgstr "Intelligent"
+
+#~ msgid "Window with ID '%s' not found"
+#~ msgstr "Finestra amb ID '%s' no trobada"
+
+#, fuzzy
+#~ msgid "Module function call failed: can't load the module 'str'"
+#~ msgstr ""
+#~ "Ha fallat la crida a la funci�del m�ul: no puc carregar el m�ul '%Q'"
+
+#, fuzzy
+#~ msgid ""
+#~ "Module function call failed: the module 'str' doesn't export a function "
+#~ "named 'split'"
+#~ msgstr ""
+#~ "Ha fallat la crida a la funci�del m�ul: el m�ul '%Q' no exporta una "
+#~ "funci�cridada '%Q'"
+
+#, fuzzy
+#~ msgid "Hide ignore-messages (incomplete)"
+#~ msgstr "Missatges d'invitaci"
+
+#, fuzzy
+#~ msgid "Ignore everything"
+#~ msgstr "Ignorar Peticions"
+
+#~ msgid "Notify"
+#~ msgstr "Notificar"
+
+#, fuzzy
+#~ msgid "Image parameter is not an object"
+#~ msgstr "La finestra especificada no � un canal"
+
+#, fuzzy
+#~ msgid "Can't fill non-widget object"
+#~ msgstr "No puc afegir un objecte no-widget"
+
+#~ msgid "Select error: %s (errno=%d)"
+#~ msgstr "Error de select: %s (errno=%d)"
+
+#~ msgid "Connect error: %s (errno=%d)"
+#~ msgstr "Error de connexi� %s (errno=%d)"
+
+#~ msgid "Write error: %s (errno=%d)"
+#~ msgstr "Error d'escriptura: %s (errno=%d)"
+
+#~ msgid "Read error: %s (errno=%d)"
+#~ msgstr "Error de lectura: %s (errno=%d)"
+
+#~ msgid "WARNING : Can not load image library %s"
+#~ msgstr "ADVERT�CIA : No s'ha pogut carregar la biblioteca d'imatges %s"
+
+#, fuzzy
+#~ msgid "Load Theme - KVIrc"
+#~ msgstr "Guardar Tema - KVIrc"
+
+#~ msgid "Unable to create theme directory."
+#~ msgstr "No puc crear el directori per al tema."
+
+#, fuzzy
+#~ msgid "Version"
+#~ msgstr "Versi�"
+
+#, fuzzy
+#~ msgid "Themes"
+#~ msgstr "Tema"
+
+#~ msgid "[IDENT]: Service shutdown (spontaneous)"
+#~ msgstr "[IDENT]: Servei desconnectat (espontani)"
+
+#~ msgid "[IDENT]: Service shutdown (on request)"
+#~ msgstr "[IDENT]: Servei desconnectat (a petici�"
+
+#~ msgid "<b>%Q</b>: +%Q (%u users)<hr>%Q"
+#~ msgstr "<b>%Q</b>: +%Q (%u usuaris)<hr>%Q"
+
+#~ msgid "What's this?"
+#~ msgstr "Qu�� aix�"
+
+#~ msgid "<b>Nickname:</b>"
+#~ msgstr "<b>Nick:</b>"
+
+#~ msgid ""
+#~ "<p>Here you can choose the default appearance of KVIrc.<br><br>The Fancy "
+#~ "Theme uses icons, a transparent background and a lot of colors. The "
+#~ "Minimalist Theme is designed for low-color displays or for \"console\" "
+#~ "extremists; it's more or less white text on a black background.<br><br>If "
+#~ "you had a previous version of KVIrc installed, you can choose to not "
+#~ "apply any theme in order to preserve your current visual settings."
+#~ "<br><br>If you don't know what to choose, just use the default.</p>"
+#~ msgstr ""
+#~ "<p>Aqu�pot escollir l'aparen� per defecte de KVIrc.<br><br>El Tema "
+#~ "Capritx� empra icones, un fons transparent i un munt de colors. El tema "
+#~ "Minimalista est�dissenyat per a pantalles amb pocs colors o per a "
+#~ "extremistes de la \"consola\"; m� o menys � text blanc sobre fons negre."
+#~ "<br><br>Si tenia installada una versi�pr�ia de KVIrc, pot escollir no "
+#~ "aplicar cap tema per a preservar les seves configuracions visuals actuals."
+#~ "<br><br>Si no sap que escollir, trii la configuraci�per defecte.</p>"
+
+#~ msgid "&Fancy Theme"
+#~ msgstr "Tema &Capritx�"
+
+#~ msgid "&Minimalist Theme"
+#~ msgstr "Tema &Minimalista"
+
+#~ msgid "&Don't apply any theme"
+#~ msgstr "&No aplicar cap tema"
+
+#~ msgid "Default Theme"
+#~ msgstr "Tema Per Defecte"
+
+#~ msgid ""
+#~ "<p>Setup can make a shortcut to the KVIrc program on your desktop, so you "
+#~ "can access it quickly.</p><p>Do you want this shortcut to be created?</p>"
+#~ msgstr ""
+#~ "<p>La configuraci�pot crear un acc� directe a l'executable KVIrc al seu "
+#~ "escriptori.</p><p>Vol crear-lo?</p>"
+
+#~ msgid "<p>If you're unsure just say \"Yes\"</p>"
+#~ msgstr "<p>Si no est�segur, senzillament contesti \"S\"</p>"
+
+#~ msgid ""
+#~ "<p>Setup can now set KVIrc as default application for the irc:// and "
+#~ "irc6:// urls.</p><p>Do you want these settings to be applied?</p>"
+#~ msgstr ""
+#~ "<p>El m�ul de configuraci�posar�ara a KVIrc com a aplicaci�per defecte "
+#~ "per a les urls irc:// e irc6://.</p><p>Vols que s'apliquin aquests canvis?"
+#~ "</p>"
+
+#~ msgid "URL Handlers"
+#~ msgstr "Manipuladors d'URL"
+
+#~ msgid ""
+#~ "<p><h2>Setup Complete</h2>Setup now has all the necessary information to "
+#~ "configure KVIrc.</p><p>Please click the \"<b>Finish</b>\" button to save "
+#~ "your choices and start KVIrc.</p>"
+#~ msgstr ""
+#~ "<p><h2>Configuraci�Finalitzada</h2>L'assistent t�ara tota la "
+#~ "informaci�necess�ia per a configurar KVIrc.</p><p>Si us plau, premi el "
+#~ "bot�\"<b>Finalitzar</b>\" per a guardar les seves prefer�cies i iniciar "
+#~ "KVIrc.</p>"
+
+#~ msgid "Finish Setup"
+#~ msgstr "Finalitzar Assistent"
+
+#~ msgid "Empty string"
+#~ msgstr "Cadena buida"
+
+#~ msgid "No such open mode: %s"
+#~ msgstr "No existeix el mode d'obertura: %s"
+
+#~ msgid "Negative file index supplied !"
+#~ msgstr "S'ha proporcionat un �dex d'arxiu negatiu !"
+
+#~ msgid "Argument length is 0 - empty string"
+#~ msgstr "La longitud de l'argument � 0 - cadena buida"
+
+#~ msgid "Length is a negative number !"
+#~ msgstr "La longitud � un nmero negatiu !"
+
+#~ msgid "Nothing to write"
+#~ msgstr "Res que escriure"
+
+#, fuzzy
+#~ msgid "Background not found %Q "
+#~ msgstr "Color de fons"
+
+#~ msgid ""
+#~ "Broken slot '%s' in target object '%s' while emitting signal '%s' from "
+#~ "object '%s': disconnecting"
+#~ msgstr ""
+#~ "Slot '%s' erroni en l'objecte de dest�'%s' mentres s'emetia la senyal '%"
+#~ "s' des de l'objecte '%s': desconectant"
+
+#~ msgid ""
+#~ "No slot function '%s' exported by target object '%s' while emitting "
+#~ "signal '%s' from object '%s': disconnecting"
+#~ msgstr ""
+#~ "No hi ha una funci�'%s' slot exportada per l'objecte dest�'%s' mentres "
+#~ "s'emetia la senyal '%s' des de l'objecte '%s': desconectant"
+
+#~ msgid "Invalid timer id"
+#~ msgstr "id de cron�etre no v�ida"
+
+#, fuzzy
+#~ msgid "Property: %c%s%c, type: %s"
+#~ msgstr " Propietat: %s=%s"
+
+#, fuzzy
+#~ msgid ", set"
+#~ msgstr " seg "
+
+#, fuzzy
+#~ msgid "Oops... no such property: %s"
+#~ msgstr " Propietat: %s=%s"
+
+#, fuzzy
+#~ msgid "No such QT property (%s)"
+#~ msgstr "No existeix l'objecte (%s)"
+
+#, fuzzy
+#~ msgid "missing parameter"
+#~ msgstr "Falta par�etre"
+
+#, fuzzy
+#~ msgid "Invalid parameter (%s)"
+#~ msgstr "Par�etre fila no v�id (%s)"
+
+#, fuzzy
+#~ msgid "Unsupported QT property (%s)"
+#~ msgstr "Protocol %s no suportat"
+
+#, fuzzy
+#~ msgid "Missing parameters"
+#~ msgstr "Falta par�etre"
+
+#~ msgid "[Parser warning in '%Q']: %Q"
+#~ msgstr "[Av� del parser en '%Q']: %Q"
+
+#~ msgid "Can't find the multimedia file %s"
+#~ msgstr "No es pot trobar l'arxiu multim�ia %s"
+
+#~ msgid "Missing target, no action taken"
+#~ msgstr "Falta el dest� no s'ha realitzat cap acci"
+
+#~ msgid "Invalid timeout specified , using default"
+#~ msgstr ""
+#~ "S'ha especificat un valor de temps d'expiraci�no v�id, emprant valor per "
+#~ "defecte"
+
+#~ msgid "Can't add a file offer for file %s (huh ? file not readable ?)"
+#~ msgstr "No puc afegir una oferta d'arxiu per a %s (arxiu no llegible?)"
+
+#~ msgid "Added %d secs file offer for file %s (%s) and receiver %s"
+#~ msgstr "Afegida l'oferta de %d segs de l'arxiu %s (%s) i receptor %s"
+
+#~ msgid "%s plays '%s'"
+#~ msgstr "%s reprodueix '%s'"
+
+#~ msgid "%s plays '%s' to %s"
+#~ msgstr "%s reprodueix '%s' per a %s"
+
+#~ msgid "Error in command: %c%c%Q"
+#~ msgstr "Error en comanda: %c%c%Q"
+
+#, fuzzy
+#~ msgid "Error token: %c%Q"
+#~ msgstr "Error en paraula clau: %c%s"
+
+#~ msgid "Parsing stopped at %cline %d , character %d"
+#~ msgstr "An�isis aturat en %cl�ia %d , car�ter %d"
+
+#~ msgid " %s"
+#~ msgstr " %s"
+
+#~ msgid "Object scope: name (%s), class (%s)"
+#~ msgstr "�bit d'objecte: nom (%s), classe (%s)"
+
+#~ msgid "Object scope: deleted object"
+#~ msgstr "�bit d'objecte: objecte borrat"
+
+#~ msgid "This pointer: name (%s), class (%s)"
+#~ msgstr "Punter this: nom (%s), classe (%s)"
+
+#~ msgid "This pointer: deleted object"
+#~ msgstr "Punter this: objecte borrat"
+
+#~ msgid "Internal call stack:"
+#~ msgstr "Pila de crides interna:"
+
+#~ msgid ""
+#~ " Current command stack depth: %d frames (stopping output at 25th frame)"
+#~ msgstr ""
+#~ "Profunditat de la pila de comandes actual: %d quadres (aturant la sortida "
+#~ "en el quadre 25)"
+
+#~ msgid " Parent command stack depth: %d frames"
+#~ msgstr " Profunditat de la pila de comandes del pare: %d quadros"
+
+#~ msgid "Error triggered from raw event handler %c%s::%Q"
+#~ msgstr "Error disparat des de el manipulador d'events raw %c%s::%Q"
+
+#~ msgid "Error triggered from event handler %c%Q::%Q"
+#~ msgstr "Error disparat des del manipulador d'events %c%Q::%Q"
+
+#~ msgid "Raw event handler %s::%Q is broken: disabling"
+#~ msgstr "El manipulador d'events raw %s::%Q � erroni: deshabilitant"
+
+#~ msgid "Event handler %Q::%Q is broken: disabling"
+#~ msgstr "El manipulador d'events %Q::%Q � erroni: deshabilitant"
+
+#~ msgid "Variable evaluated to \"%s\""
+#~ msgstr "Variable avaluada a \"%s\""
+
+#~ msgid "Window with caption %Q not found"
+#~ msgstr "Finestra amb t�ol %Q no trobada"
+
+#~ msgid "='"
+#~ msgstr "='"
+
+#~ msgid "Ignoring NOTICE from %Q (%Q)"
+#~ msgstr "Ignorant PRIVMSG de %Q (%Q)"
+
+#~ msgid "Unknown channel mode"
+#~ msgstr "Mode de canal desconegut"
+
+#, fuzzy
+#~ msgid " symbol exported: not a kvirc module ?"
+#~ msgstr "No est�exportat el s�bol kvirc_module_info: no � un m�ul kvirc?"
+
+#~ msgid ""
+#~ "Declaring global variables with an uppercase letter is deprecated. Global "
+#~ "variables should be declared with 'global'"
+#~ msgstr ""
+#~ "Declarar variable globals amb una lletra majscula � obsolet. Les "
+#~ "variables globals haurien de ser declarades amb 'global'"
+
+#, fuzzy
+#~ msgid "My Custom Servers"
+#~ msgstr "Copiar Servidor"
+
+#~ msgid "orphan_servers"
+#~ msgstr "servidors_h�fans"
+
+#~ msgid "Topic for \r!c\r%Q\r was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+#~ msgstr "El tema per a \r!c\r%Q\r ser posat per \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+
+#~ msgid "\" ...that looks like an error to me..."
+#~ msgstr "\" ...aix�em sembla un error..."
+
+#~ msgid "Search keywords"
+#~ msgstr "Buscar paraules clau"
+
+#, fuzzy
+#~ msgid "File download terminated"
+#~ msgstr "Arxiu descarregat: procesant..."
+
+#~ msgid "Choose..."
+#~ msgstr "Triar..."
+
+#~ msgid "Invalid width parameter"
+#~ msgstr "Valor d'amplada no v�id"
+
+#~ msgid "Invalid height parameter"
+#~ msgstr "Valor d'al�da no v�id"
+
+#~ msgid "The parameters do not define a rectangle"
+#~ msgstr "Els par�etres no defineixen un rectangle"
+
+#~ msgid "The parameters do not define a point"
+#~ msgstr "Els par�etres no defineixen un punt"
+
+#~ msgid "The parameters are do not define a valid size"
+#~ msgstr "Els par�etres no defineixen una mida v�ida"
+
+#, fuzzy
+#~ msgid "Invalid size parameter (%s)"
+#~ msgstr "Par�etre fila no v�id (%s)"
+
+#, fuzzy
+#~ msgid "Unknown widget type: %s"
+#~ msgstr "Alineaci�desconeguda: %s"
+
+#, fuzzy
+#~ msgid "Can't find the widget object assuming 0"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#~ msgid "Invalid object"
+#~ msgstr "Objecte no v�id"
+
+#, fuzzy
+#~ msgid "Invalid Parameters"
+#~ msgstr "Par�etre no v�id"
+
+#~ msgid "Can't find the widget object to add (%s)"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#~ msgid "Invalid row parameter (%s)"
+#~ msgstr "Par�etre fila no v�id (%s)"
+
+#~ msgid "Invalid column parameter (%s)"
+#~ msgstr "Par�etre columna no v�id (%s)"
+
+#, fuzzy
+#~ msgid "Unknown frame style"
+#~ msgstr "Marc desconegut / estil d'ombra: %s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Failed writing the kvirc home directory path to %Q.\n"
+#~ "You will need to do it manually , otherwise KVirc will restart with\n"
+#~ "the setup!"
+#~ msgstr ""
+#~ "Fallida a l'escriptura en el directori de kvirc %s.\n"
+#~ "Necessita configurar-lo manualment, o KVirc reiniciar�amb \n"
+#~ " el proc� de configuraci�"
+
+#~ msgid "Ident Service"
+#~ msgstr "Servei d'Ident"
+
+#~ msgid "Anti-spam"
+#~ msgstr "Anti-spam"
+
+#, fuzzy
+#~ msgid "Reconnection Options"
+#~ msgstr "connexi"
+
+#~ msgid "CTCP"
+#~ msgstr "CTCP"
+
+#~ msgid "Flood Protection"
+#~ msgstr "Protecci�de Saturaci"
+
+#~ msgid "DCC"
+#~ msgstr "DCC"
+
+#~ msgid "File Transfer"
+#~ msgstr "Transfer�cies d'Arxius"
+
+#, fuzzy
+#~ msgid "Advanced"
+#~ msgstr "Avan�t ..."
+
+#~ msgid "Chat"
+#~ msgstr "Xat"
+
+#, fuzzy
+#~ msgid "General options"
+#~ msgstr "Accions gen�iques"
+
+#~ msgid "Alert/Highlight"
+#~ msgstr "Alerta/Ressaltat"
+
+#~ msgid "Input"
+#~ msgstr "Entrada"
+
+#~ msgid "Interface"
+#~ msgstr "Interf�ie"
+
+#~ msgid "General"
+#~ msgstr "General"
+
+#~ msgid "Transparency"
+#~ msgstr "Transpar�cia"
+
+#~ msgid "MDI Captions"
+#~ msgstr "T�ols MDI"
+
+#~ msgid "MDI Area"
+#~ msgstr "�ea MDI"
+
+#~ msgid "ToolBar Applets"
+#~ msgstr "Applets de Barra d'eines"
+
+#~ msgid "Output"
+#~ msgstr "Sortida"
+
+#~ msgid "Lag"
+#~ msgstr "Retr�"
+
+#~ msgid "Logging"
+#~ msgstr "Registre"
+
+#~ msgid "Media Types"
+#~ msgstr "Tipus de Medis"
+
+#~ msgid "NickServ"
+#~ msgstr "NickServ"
+
+#, fuzzy
+#~ msgid "Contacts"
+#~ msgstr "Connectar"
+
+#~ msgid "Notifier"
+#~ msgstr "Notificador"
+
+#, fuzzy
+#~ msgid "Output Style"
+#~ msgstr "Sortida"
+
+#~ msgid "Proxy Hosts"
+#~ msgstr "Servidors Proxy"
+
+#~ msgid "Query"
+#~ msgstr "Privat"
+
+#~ msgid "Servers"
+#~ msgstr "Servidors"
+
+#~ msgid "Sound"
+#~ msgstr "So"
+
+#~ msgid "Tree taskbar"
+#~ msgstr "Barra de feines en arbre"
+
+#~ msgid "Classic taskbar"
+#~ msgstr "Barra de feines cl�sica"
+
+#~ msgid "Text icons"
+#~ msgstr "Icones de text"
+
+#~ msgid "Labels"
+#~ msgstr "Etiquetes"
+
+#, fuzzy
+#~ msgid "Scripting Engine"
+#~ msgstr "Scripting"
+
+#~ msgid "URL handlers"
+#~ msgstr "URL de manipuladors"
+
+#~ msgid "Userlist"
+#~ msgstr "Llista d'Usuaris"
+
+#, fuzzy
+#~ msgid "Protection"
+#~ msgstr "Protecci�de Saturaci"
+
+#, fuzzy
+#~ msgid "Avatar Handling"
+#~ msgstr "Canvi d'avatar"
+
+#~ msgid "Invalid timeout (%s)"
+#~ msgstr "Temps d'expiraci�(%s) no v�id"
+
+#~ msgid "Invalid port specified: the kernel will choose one"
+#~ msgstr "S'ha especificat un port no v�id: el nucli n'escullir�un"
+
+#~ msgid "Invalid port (%s)"
+#~ msgstr "Port no v�id (%s)"
+
+#~ msgid "Non-negative integer length expected as parameter"
+#~ msgstr "S'esperava una longitud entera no negativa com a par�etre"
+
+#~ msgid "Non-negative integer index expected as first parameter"
+#~ msgstr "S'esperava un �dex no negatiu com a primer par�etre"
+
+#~ msgid "Non-negative integer length expected as second parameter"
+#~ msgstr "S'esperava una longitud entera no negativa com a segon par�etre"
+
+#, fuzzy
+#~ msgid "Invalid x offset parameter (%s)"
+#~ msgstr "Par�etre fila no v�id (%s)"
+
+#, fuzzy
+#~ msgid "Invalid y offset parameter (%s)"
+#~ msgstr "Par�etre fila no v�id (%s)"
+
+#, fuzzy
+#~ msgid "Can't find the specified file '%s'."
+#~ msgstr "No es pot trobar l'arxiu multim�ia %s"
+
+#, fuzzy
+#~ msgid "Class is undefined"
+#~ msgstr "La classe %s no est�definida"
+
+#~ msgid ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">General Preferences</font></h1></center></td></"
+#~ "tr><tr><td><br><br><center><b>These sections contain various settings for "
+#~ "KVIrc</b></center><br><br><p>When you have finished, click \"<b>OK</b>\" "
+#~ "to accept your changes or \"<b>Cancel</b>\" to discard them. Clicking "
+#~ "\"<b>Apply</b>\" will commit your changes without closing the window.</"
+#~ "td></tr><tr><td>Many settings have tooltips that can be shown by holding "
+#~ "the cursor over their label for a few seconds.</p></td></tr></table>"
+#~ msgstr ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">Prefer�cies Generals</font></h1></center></td></"
+#~ "tr><tr><td><br><br><center><b>Estes seccions contenen diverses "
+#~ "configuracions per a KVIrc</b></center><br><br><p>Quan hagis finalitzat, "
+#~ "prem \"<b>Acceptar</b>\" per a acceptar els canvis o \"<b>Cancellar</b>\" "
+#~ "per a descartar-los. Prement \"<b>Aplicar</b>\" es gravaran els canvis "
+#~ "sense tancar la finestra.</td></tr><tr><td>Moltes opcions tenen tooltips "
+#~ "que poden mostrar-se mantenint el cursor sobre la seva etiqueta durant "
+#~ "uns pocs segons.</p></td></tr></table>"
+
+#~ msgid ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">General Preferences</font></h1></center></td></"
+#~ "tr><tr><td><br><br>Select a category in the list view on the left to view "
+#~ "the related settings. When you have finished, click \"<b>OK</b>\" to "
+#~ "accept your changes or \"<b>Cancel</b>\" to discard them. Clicking "
+#~ "\"<b>Apply</b>\" will commit your changes without closing this window."
+#~ "<br><br></td></tr></table>"
+#~ msgstr ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">Prefer�cies Generals</font></h1></center></td></"
+#~ "tr><tr><td><br><br>Selecciona una categoria a la llista de l'esquerra per "
+#~ "a veure les opcions relacionades. Quan hagi finalitzat, prem "
+#~ "\"<b>Acceptar</b>\" per a acceptar els teus canvis o \"<b>Cancellar</b>\" "
+#~ "per a descartar-los. Prement \"<b>Aplicar</b>\" es gravaran els canvis "
+#~ "sense tancar aquesta finestra.<br><br></td></tr></table>"
+
+#~ msgid "Preferences - KVIrc"
+#~ msgstr "Prefer�cies - KVIrc"
+
+#~ msgid "General Preferences"
+#~ msgstr "Prefer�cies Generals"
+
+#~ msgid "Close this dialog, accepting all changes."
+#~ msgstr "Tancar di�eg, acceptant tots els canvis."
+
+#~ msgid "Commit all changes immediately."
+#~ msgstr "Gravar tots els canvis immediatament."
+
+#~ msgid "Close this dialog, discarding all changes."
+#~ msgstr "Tancar di�eg, descartant tots els canvis."
+
+#, fuzzy
+#~ msgid "Normal user"
+#~ msgstr "Usuari Normal"
+
+#, fuzzy
+#~ msgid "Experienced user"
+#~ msgstr "usuari amb veu"
+
+#~ msgid "Output verbosity"
+#~ msgstr "Detall de la sortida"
+
+#~ msgid "Mute"
+#~ msgstr "Callat"
+
+#~ msgid "Quiet"
+#~ msgstr "Discret"
+
+#~ msgid "Normal"
+#~ msgstr "Normal"
+
+#~ msgid "Verbose"
+#~ msgstr "Detallat"
+
+#~ msgid "Paranoic"
+#~ msgstr "Paranoic"
+
+#~ msgid "Show in active window"
+#~ msgstr "Mostrar a la finestra activa"
+
+#~ msgid "External messages"
+#~ msgstr "Missatges externs"
+
+#~ msgid "External CTCP replies"
+#~ msgstr "Contestacions CTCP externes"
+
+#~ msgid "Whois replies"
+#~ msgstr "Respostes Whois"
+
+#~ msgid "ChanServ and NickServ notices"
+#~ msgstr "Not�ies dels servidors de Nick i CHAN"
+
+#~ msgid "Server replies"
+#~ msgstr "Respostes del servidor"
+
+#~ msgid "Server notices"
+#~ msgstr "Not�ies del servidor"
+
+#~ msgid "Broadcast and WALLOPS messages"
+#~ msgstr "Missatges de difusi�i WALLOP"
+
+#~ msgid "Show extended server information"
+#~ msgstr "Mostrar informaci�ampliada del servidor"
+
+#~ msgid "Show server pings"
+#~ msgstr "Mostrar pings del servidor"
+
+#~ msgid "Show own parts in the console"
+#~ msgstr "Mostrar les sortides pr�ies a consola"
+
+#~ msgid "Show compact mode changes"
+#~ msgstr "Mostrar canvis de mode compactes"
+
+#~ msgid "On Channel Join"
+#~ msgstr "A l'Entrada al Canal"
+
+#~ msgid "Echo channel topic"
+#~ msgstr "Mostra el tema del canal"
+
+#~ msgid "Show channel sync time"
+#~ msgstr "Mostrar el temps de sincronitzaci�del canal"
+
+#~ msgid "Font"
+#~ msgstr "Fonts"
+
+#~ msgid "Foreground color"
+#~ msgstr "Color de primer pla"
+
+#~ msgid "Background color"
+#~ msgstr "Color de fons"
+
+#~ msgid "Background image"
+#~ msgstr "Imatge de fons"
+
+#~ msgid "Save Current Theme"
+#~ msgstr "Guardar Tema Actual"
+
+#~ msgid "Theme name:"
+#~ msgstr "Nom del tema:"
+
+#~ msgid "Author:"
+#~ msgstr "Autor:"
+
+#~ msgid "You must choose a theme name!"
+#~ msgstr "Ha d'escollir un nom de tema!"
+
+#, fuzzy
+#~ msgid "Unable to create theme files directory."
+#~ msgstr "No puc crear el directori per al tema."
+
+#, fuzzy
+#~ msgid "Unable to create theme utils directory."
+#~ msgstr "No puc crear el directori per al tema."
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for reading."
+#~ msgstr "No puc obrir l'arxiu %s per a lectura."
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for writing."
+#~ msgstr "No puc obrir l'arxiu \"%s\" en mode escriptura"
+
+#~ msgid ""
+#~ "The list below shows the currently installed themes. To apply a theme "
+#~ "select it and click \"Ok\" or \"Apply\". Please note that the message "
+#~ "text colors are applied only to new messages in each window.<br>To "
+#~ "install a new theme, unpack it to:<br><b>"
+#~ msgstr ""
+#~ "La llista inferior mostra els temes installats actualment. Per a "
+#~ "seleccionar un tema, esculle'l i prem \"Acceptar\" o \"Aplicar\". Si us "
+#~ "plau, observa que els colors del text dels missatges s'aplica nicament "
+#~ "als nous missatges a cada finestra.<br>Per a installar un nou tema, "
+#~ "desempaqueti'l a:<br><br>"
+
+#~ msgid "Refresh Theme List"
+#~ msgstr "Actualitzar Llista de Temes"
+
+#~ msgid "Save Current Theme..."
+#~ msgstr "Guardar Tema Actual..."
+
+#~ msgid "Get More Themes..."
+#~ msgstr "Obtenir m� Temes..."
+
+#~ msgid "Current Theme"
+#~ msgstr "Tema Actual"
+
+#~ msgid "<p>The active theme settings</p>"
+#~ msgstr "<p>Configuraci�del tema actiu</p>"
+
+#~ msgid "<p>Theme: %1</p>"
+#~ msgstr "<p>Tema: %1</p>"
+
+#~ msgid "<p>Version: %1</p>"
+#~ msgstr "<p>Versi� %1</p>"
+
+#~ msgid "<p>Date: %1</p>"
+#~ msgstr "<p>Data: %1</p>"
+
+#~ msgid "<p>Author: %1</p>"
+#~ msgstr "<p>Autor: %1</p>"
+
+#~ msgid "On Unexpected Disconnect"
+#~ msgstr "En desconnexions inesperades"
+
+#~ msgid "Keep channels open"
+#~ msgstr "Mantindre els canals oberts"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to keep channels open after an "
+#~ "unexpected disconnect.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�far�que KVIrc mantingui els canals oberts despr� "
+#~ "d'una desconnexi�inesperada.</center>"
+
+#~ msgid "Keep queries open"
+#~ msgstr "Mantindre els privats oberts"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to keep queries open after an "
+#~ "unexpected disconnect.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�far�que KVIrc mantingui els privats oberts despr� "
+#~ "d'una desconnexi�inesperada.</center>"
+
+#~ msgid "Rejoin channels after reconnect"
+#~ msgstr "Tornar a unir-se a canals despr� de reconectar"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to rejoin channels after a "
+#~ "successful reconnect attempt.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�far�que KVIrc torni a entrar en els canals despr� "
+#~ "d'un intent de reconnexi�amb �it.</center>"
+
+#~ msgid "Reopen queries after reconnect"
+#~ msgstr "Reobrir els privats despr� de reconectar"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to reopen query windows after a "
+#~ "successful reconnect attempt.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�far�que KVIrc reobri les finestres amb els privats "
+#~ "despr� d'un intent de reconnexi�amb �it.</center>"
+
+#~ msgid "Automatically reconnect"
+#~ msgstr "Reconectar autom�icament"
+
+#~ msgid ""
+#~ "<center>This option will enable auto-reconnecting after an unexpected "
+#~ "disconnect. An unexpected disconnect is the <b>termination</b> of a "
+#~ "<b>fully connected IRC session</b> that was <b>not requested by the user</"
+#~ "b> by the means of the QUIT message.<p><b>Warning:</b> If you use /RAW to "
+#~ "send a QUIT message to the server, this option will not behave correctly, "
+#~ "since does not detect the outgoing QUIT message and will attempt to "
+#~ "reconnect after the server has closed the connection. For this reason, "
+#~ "always use the /QUIT command to close your connections. This option may "
+#~ "also behave incorrectly with bouncers that support detaching, in this "
+#~ "case a solution could be to prepare an alias that sends the bouncer "
+#~ "\"detach\" command immediately before the \"quit\" command.<br><tt>alias"
+#~ "(bncdetach){ raw bouncer detach; quit; }</tt></p></center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�habilitar�la reconnexi�autom�ica despr� d'una "
+#~ "desconnexi�inesperada � la <b>terminaci�/b> d'una <b>sessi�completa "
+#~ "d'IRC</b> que <b>no ha estat solicitada per l'usuari</b> mitjan�nt el "
+#~ "missatge QUIT.<p><b>Atenci�</b> Si empres /RAW per a enviar un missatge "
+#~ "QUIT al servidor aquesta opci�no funcionar�correctament, perqu�no "
+#~ "detectar�el QUIT sortint i intentar�reconnectar-se despr� que el servidor "
+#~ "hagi tancat la connexi� Per aquesta ra� empra sempre la comanda /QUIT per "
+#~ "a tancar les teves connexions. Tamb�pot comportar-se incorrectament amb "
+#~ "repetidors que suporten desassociaci� En tal cas, una soluci�podria ser "
+#~ "preparar un alies que envii la comanda \"detach\" immediatament abans de "
+#~ "la comanda \"quit\".<br><tt>alies(bcndetach){ raw bouncer detach; quit; }"
+#~ "</tt></p></center>"
+
+#~ msgid "Maximum attempts (0: unlimited):"
+#~ msgstr "Nombre m�im d'intents (0: ilimitats):"
+
+#~ msgid "Delay between attempts:"
+#~ msgstr "Espera entre intents:"
+
+#~ msgid " sec"
+#~ msgstr " seg "
+
+#~ msgid ""
+#~ "<center>Minimum value: <b>0 sec</b><br>Maximum value: <b>86400 sec</b></"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Valor m�im: <b>0 seg</b><br>Valor m�im: <b>86400 seg</b></center>"
+
+#, fuzzy
+#~ msgid "Novice"
+#~ msgstr "Veu"
+
+#, fuzzy
+#~ msgid "No such options page class name %Q"
+#~ msgstr "No existeixen aquestes opcions a la p�ina del nom de la classe"
+
+#~ msgid "\"Smart\" nickname colors"
+#~ msgstr "Colorejat \"intelligent\" de nicks"
+
+#~ msgid "Show nicknames in bold"
+#~ msgstr "Mostrar nicks en negreta"
+
+#~ msgid "Show user and host"
+#~ msgstr "Mostrar usuari i m�uina"
+
+#~ msgid "Show channel mode prefix"
+#~ msgstr "Mostrar prefixe de mode de canal"
+
+#~ msgid "User-defined prefix and postfix"
+#~ msgstr "Prefixe i sufix definits per l'usuari"
+
+#~ msgid "[PREFIX]nickname[!user@host][POSTFIX] message"
+#~ msgstr "[PREFIX]nick[!usuari@m�uina][SUFIX] missatge"
+
+#~ msgid "Prefix:"
+#~ msgstr "Prefix:"
+
+#~ msgid "Postfix:"
+#~ msgstr "Sufix:"
+
+#~ msgid "Don't show colors in user messages"
+#~ msgstr "No mostrar colors als missatges d'usuari"
+
+#~ msgid "Font:"
+#~ msgstr "Fonts:"
+
+#~ msgid "Background color:"
+#~ msgstr "Color de fons:"
+
+#~ msgid "Background image:"
+#~ msgstr "Imatge de fons:"
+
+#~ msgid "Show message icons"
+#~ msgstr "Mostrar icones de missatges"
+
+#~ msgid "Draw some emoticons (smileys) as pictures"
+#~ msgstr "Dibuixar algunes emoticones (smileys) gr�icament"
+
+#~ msgid "Show timestamp"
+#~ msgstr "Mostrar marca de temps"
+
+#~ msgid "Use UTC time for timestamp"
+#~ msgstr "Emprar temps UTC en marca de temps"
+
+#, fuzzy
+#~ msgid "Use special color for timestamps"
+#~ msgstr "Emprar temps UTC en marca de temps"
+
+#, fuzzy
+#~ msgid "Timestamp color"
+#~ msgstr "Marca de temps"
+
+#~ msgid "Enable URL highlighting"
+#~ msgstr "Activar ressaltat d'URLs"
+
+#~ msgid "Use line wrap margin"
+#~ msgstr "Emprar marge de justificaci�de l�ia"
+
+#~ msgid "Maximum buffer size:"
+#~ msgstr "Mid�m�ima de buffer:"
+
+#~ msgid " lines"
+#~ msgstr " l�ies"
+
+#~ msgid "Link tooltip show delay:"
+#~ msgstr "Retr� fins a mostrar tooltip als enlla�s:"
+
+#~ msgid " msec"
+#~ msgstr " mseg"
+
+#~ msgid "Link tooltip hide delay:"
+#~ msgstr "Retr� fins a amagar el tooltip als enlla�s:"
+
+#~ msgid "Track last read text line"
+#~ msgstr "Marcar l'ltima l�ia de text llegida"
+
+#~ msgid "Nickname alternatives"
+#~ msgstr "Nicks alternatius"
+
+#~ msgid ""
+#~ "<center>Here you can choose up to three nicknames alternative to the "
+#~ "primary one. KVIrc will use the alternatives if the primary nick is "
+#~ "already used by someone else on a particular IRC network.</center>"
+#~ msgstr ""
+#~ "<center>Aqu�pots escollir fins a tres nicks alternatius addicionals al "
+#~ "primari. KVIrc emprar�els alternatius si el nick primari est�sent emprat "
+#~ "per qualsevol altre en una xarxa concreta.</center>"
+
+#~ msgid "Alt. Nickname 1:"
+#~ msgstr "Nick alt. 1:"
+
+#~ msgid "Alt. Nickname 2:"
+#~ msgstr "Nick alt. 2:"
+
+#~ msgid "Alt. Nickname 3:"
+#~ msgstr "Nick alt. 3"
+
+#~ msgid ""
+#~ "<center>Your <b>nickname</b> is your primary form of identification on "
+#~ "IRC.<br>Since servers cannot accept multiple users sharing the same "
+#~ "nickname (case insensitive), you can provide alternative nicknames to be "
+#~ "used in casethe server refuses to accept the default one.</center>"
+#~ msgstr ""
+#~ "<center>El seu <b>nick</b> � la principal forma d'identificaci�a l'IRC."
+#~ "<br>Com els servidors no poden acceptar a diversos usuaris compartint el "
+#~ "mateix nick (sense distingir majscules/minscules), pot proporcionar nicks "
+#~ "alternatius que seran emprats en cas que el servidor rebutgi el "
+#~ "proporcionat per defecte.</center>"
+
+#~ msgid "Alternatives..."
+#~ msgstr "Alternatius..."
+
+#~ msgid "Username:"
+#~ msgstr "Nom d'usuari:"
+
+#~ msgid ""
+#~ "<center>This is the <b>username</b> that you will use to connect to the "
+#~ "server.<br>In the past, it was used as a form of authentication, but it "
+#~ "normally has no special use now.<br>In addition to your nickname, you are "
+#~ "identified on IRC by your <b>username@hostname</b>.</br>Basically, you "
+#~ "can enter any word you like here. :D</center>"
+#~ msgstr ""
+#~ "<center>Aquest � el <b>nom d'usuari</b> que emprar�per a connectar al "
+#~ "servidor.<b>Anteriorment, era emprat com a forma d'autentificaci� per�ara "
+#~ "no t�una utilitat especial.<br>Adicionalment al seu nick, ser�identificat "
+#~ "a l'IRC per el seu<br>usuari@m�uina</b>.<br>B�icament, pot posar "
+#~ "aqu�qualsevol paraula que li agradi. :D</center>"
+
+#~ msgid ""
+#~ "<center>This text will appear when someone does a /WHOIS on you.<br>It is "
+#~ "intended to be your real name, but people tend to put random quotes and "
+#~ "phrases here too.</center>"
+#~ msgstr ""
+#~ "<center>Aquest text apareixer�quan alg li faci un /WHO.<br>Hauria de "
+#~ "tractar-se del seu nom real, per�la gent tendeix a posar coses sense "
+#~ "sentit, refranys, ocurr�cies i tonteries.</center>"
+
+#~ msgid "Server notices (+s)"
+#~ msgstr "Not�ies del servidor (+s)"
+
+#~ msgid "Default part message:"
+#~ msgstr "Missatge d'abs�cia per defecte:"
+
+#~ msgid ""
+#~ "<center>This is the default part message that will be used when "
+#~ "you<br>leave a channel by closing a channel window.</center>"
+#~ msgstr ""
+#~ "<center>Aquest � el missatge de partida per defecte que "
+#~ "s'emprar�quan<br>abandoni un canal tancant la seva finestra de canal.</"
+#~ "center>"
+
+#~ msgid "Default quit message:"
+#~ msgstr "Missatge de sortida per defecte:"
+
+#~ msgid ""
+#~ "<center>This is the default quit message that will be used when "
+#~ "you<br>quit your IRC session by closing the console window or "
+#~ "disconnecting by pressing the disconnect button.</center>"
+#~ msgstr ""
+#~ "<center>Aquest � el missatge de sortida per defecte que "
+#~ "s'emprar�quan<br>tenqui la seva sessi�IRC tancant la finestra de consola "
+#~ "o desconnectant prement el bot�de desconnexi�</center>"
+
+#~ msgid "Pattern"
+#~ msgstr "Patr"
+
+#~ msgid "MIME Type"
+#~ msgstr "Tipus MIME"
+
+#~ msgid "MIME type:"
+#~ msgstr "Tipus MIME:"
+
+#~ msgid "File pattern:"
+#~ msgstr "Patr�d'arxiu:"
+
+#~ msgid "Magic bytes:"
+#~ msgstr "Bytes m�ics:"
+
+#~ msgid "Save path:"
+#~ msgstr "Ruta per a guardar:"
+
+#~ msgid "Local open command:"
+#~ msgstr "Comanda d'apertura local:"
+
+#~ msgid ""
+#~ "<center>This field contains the command to execute to open a local file."
+#~ "<br><tt>$0</tt> is used in place of the filename</center>"
+#~ msgstr ""
+#~ "<center>Aquest camp cont�la comanda a executar per a obrir un arxiu local."
+#~ "<br><tt>$0</tt> ser�emprat en lloc del nom de l'arxiu</center>"
+
+#~ msgid "Remote open command:"
+#~ msgstr "Comanda d'apertura remota:"
+
+#~ msgid ""
+#~ "<center>This field contains the command to execute when automatically "
+#~ "opening a received file.<br><tt>$0</tt> is used in place of the filename</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Aquest camp cont�la comanda a executar per a obrir autom�icament "
+#~ "un arxiu rebut.<br><tt>$0</tt> ser�emprat en lloc del nom de l'arxiu</"
+#~ "center>"
+
+#~ msgid "[Unknown Media Type]"
+#~ msgstr "[Tipus de Mitj�Desconegut]"
+
+#~ msgid "New Media Type"
+#~ msgstr "Nou Tipus de Medi"
+
+#~ msgid "NickServ Authentication Rule"
+#~ msgstr "Regla d'Autentificaci�de Nickserv"
+
+#~ msgid "Registered NickName"
+#~ msgstr "Nick Registrat"
+
+#~ msgid "Put here the nickname that you have registered with NickServ"
+#~ msgstr "Posa aqu�el nick que tens registrat amb NickServ"
+
+#~ msgid "NickServ Mask"
+#~ msgstr "M�cara NickServ"
+
+#~ msgid ""
+#~ "This is the mask that NickServ must match to be correctly identified as "
+#~ "the NickServ service. This usually will be something like <b>NickServ!"
+#~ "[email protected]</b>.<br>You can use wildcards for this field, but "
+#~ "generally it is a security flaw. If you're 100% sure that NO user on the "
+#~ "network can use the nickname \"NickServ\", the mask <b>NickServ!*@*</b> "
+#~ "may be safe to use in this field."
+#~ msgstr ""
+#~ "Aquesta � la m�cara que ha de concordar amb NickServ per a ser "
+#~ "correctament identificat com el servei NickServ. Habitualment ser�una "
+#~ "cosa com <b>[email protected]</b>.<br>Pot emprar comodins "
+#~ "per a aquest camp, per�all�est�considerat com una errada de seguretat. Si "
+#~ "est�100% segur que CAP usuari a la xarxa pot emprar el nick \"NickServ\", "
+#~ "pot ser segur emprar la m�cara <b>NickServ!*@*</b> en aquest camp."
+
+#~ msgid "Message Regexp"
+#~ msgstr "Expressi�Regular del Missatge"
+
+#~ msgid ""
+#~ "This is the simple regular expression that the identification request "
+#~ "message from NickServ must match in order to be correctly recognized."
+#~ "<br>The message is usually something like \"To identify yourself please "
+#~ "use /ns IDENTIFY password\" and it is sent when the NickServ wants you to "
+#~ "authenticate yourself. You can use the * and ? wildcards."
+#~ msgstr ""
+#~ "Aquesta � una simple expressi�regular que el missatge de "
+#~ "petici�d'identificaci�de NickServ ha de complir per a ser correctament "
+#~ "recconegut.<br>El missatge � usualment una cosa com \"To identify "
+#~ "yourself please use /ns IDENTIFY password\" i � enviat quan NickServ vol "
+#~ "que s'identifiqui. Pot fer servir els comodins * i ?."
+
+#~ msgid "Identify Command"
+#~ msgstr "Comanda d'Identificaci"
+
+#~ msgid ""
+#~ "This is the command that will be executed when NickServ requests "
+#~ "authentication for the nickname described in this rule (if the both "
+#~ "server and NickServ mask are matched). This usually will be something "
+#~ "like <b>msg NickServ identify &lt;yourpassword&gt;</b>.<br>You can use "
+#~ "<b>msg -q</b> if you don't want the password echoed on the screen. Please "
+#~ "note that there is no leading slash in this command."
+#~ msgstr ""
+#~ "Aquesta � la comanda que ser�executada quan NickServ soliciti "
+#~ "autentificaci�per al nick descrit en aquesta regla (si ambdues m�cares, "
+#~ "la del servidor i la de NickServ concorden). Habitualment ser�una cosa "
+#~ "com <b>msg NickServ identify &lt;latevaclau&gt;</b>.<br>Pot emprar <b>msg "
+#~ "-q</b> si no vol que la clau aparegui a la pantalla. Si us plau, observi "
+#~ "que aquesta comanda no comen� amb una barra (/)."
+
+#, fuzzy
+#~ msgid "Server mask"
+#~ msgstr "Servidors"
+
+#~ msgid "Hint: Move the mouse cursor over the fields to get help"
+#~ msgstr "Idea: Mou el cursor del ratol�sobre els camps per a obtenir ajuda"
+
+#~ msgid "Invalid NickServ Rule"
+#~ msgstr "Regla de NickServ no v�ida"
+
+#~ msgid "The Nickname field can't be empty!"
+#~ msgstr "El camp del nick no pot estar buit!"
+
+#~ msgid "The Nickname field can't contain spaces!"
+#~ msgstr "El camp del nick no pot contenir espais!"
+
+#~ msgid "The NickServ mask can't be empty!<br>You must put at least * there."
+#~ msgstr ""
+#~ "La m�cara de NickServ no pot estar buida!<br>Has de posar al menys un * "
+#~ "aqu�"
+
+#~ msgid "The Message Regexp can't be empty!<br>You must put at least * there."
+#~ msgstr ""
+#~ "L'expressi�regular del missatge no pot estar buida!<br>Has de posar al "
+#~ "menys un * aqu�"
+
+#~ msgid "The Identify Command can't be empty!"
+#~ msgstr "La comanda d'Identificaci�no pot estar buida!"
+
+#~ msgid "Enable NickServ Identification"
+#~ msgstr "Activar identificaci�NickServ"
+
+#~ msgid "This check enables the automatic identification with NickServ"
+#~ msgstr "Aquesta casella habilita la identificaci�autom�ica amb NickServ"
+
+#~ msgid "Nickname"
+#~ msgstr "Nick"
+
+#~ msgid "NickServ Request Mask"
+#~ msgstr "Petici� de M�cara NickServ"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is a list of NickServ identification rules. KVIrc will use "
+#~ "them to model its automatic interaction with NickServ on all the networks."
+#~ "<br>Please be aware that this feature can cause your NickServ passwords "
+#~ "to be stolen if used improperly. Make sure that you fully understand the "
+#~ "NickServ authentication protocol.<br>In other words, be sure to know what "
+#~ "you're doing.<br>Also note that the password that you provide is stored "
+#~ "as <b>PLAIN TEXT</b>.<br>KVIrc supports also per-network NickServ "
+#~ "authentication rules that can be created in the \"Advanced...\" network "
+#~ "options (accessible from the servers dialog).</center>"
+#~ msgstr ""
+#~ "<center>Aquesta � la llista de regles d'identificaci�de NickServ. KVIrc "
+#~ "les emprar�per a la seva interacci�autom�ica amb NickServ en aquesta "
+#~ "xarxa.<br>Si us plau, tingui present que aquesta caracter�tica pot "
+#~ "provocar que les seves claus de NickServ siguin robades si s'usa "
+#~ "indegudament. Asseguris que ent� b�el protocol d'autentificaci�NickServ."
+#~ "<br>En altres paraules, asseguris de que sap que est�fent.<br>Pensi que "
+#~ "la clau que proporciona � emmagatzemada en <b>TEXT PLA</b>.</center>"
+
+#~ msgid "Add Rule"
+#~ msgstr "Afegir Regla"
+
+#~ msgid "Edit Rule"
+#~ msgstr "Editar Regla"
+
+#~ msgid "Delete Rule"
+#~ msgstr "Borrar Regla"
+
+#~ msgid "Selection background color"
+#~ msgstr "Color de fons de la selecci"
+
+#~ msgid "Selection foreground color"
+#~ msgstr "Color de primer pla de la selecci"
+
+#~ msgid "Control char color"
+#~ msgstr "Color dels car�ters de control"
+
+#~ msgid "Cursor color"
+#~ msgstr "Color del cursor"
+
+#~ msgid "Warp cursor at the end of line when browsing history"
+#~ msgstr "Posar el cursor al final de l�ia quan es navegui per l'historial"
+
+#~ msgid "Nick completion"
+#~ msgstr "Completat de Nick"
+
+#~ msgid "Use bash-like nick completion"
+#~ msgstr "Emprar completat de nick a l'estil bash"
+
+#~ msgid "Nick completion postfix string"
+#~ msgstr "Cadena postfixe per a completat de nick"
+
+#~ msgid "Use the completion postfix string for the first word only"
+#~ msgstr ""
+#~ "Emprar la cadena postfixa en el completat nomes per a la primera paraula"
+
+#~ msgid "Use proxy"
+#~ msgstr "Emprar proxy"
+
+#~ msgid "Proxy"
+#~ msgstr "Proxy"
+
+#~ msgid ""
+#~ "<center>This is the list of available proxy servers.<br>Right-click on "
+#~ "the list to add or remove proxies.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta � la llista de servidors proxy disponibles.<br>Pr�er amb "
+#~ "el bot�dret a la llista per a afegir o eliminar proxies.</center>"
+
+#~ msgid "New Proxy"
+#~ msgstr "Nou Proxy"
+
+#~ msgid "Remove Proxy"
+#~ msgstr "Eliminar Proxy"
+
+#~ msgid "Proxy:"
+#~ msgstr "Proxy:"
+
+#~ msgid "Password:"
+#~ msgstr "Clau:"
+
+#~ msgid "Use IPv6 protocol"
+#~ msgstr "Emprar protocol IPv6"
+
+#~ msgid "&New Proxy"
+#~ msgstr "&Nou Proxy"
+
+#~ msgid "Re&move Proxy"
+#~ msgstr "Eli&minar Proxy"
+
+#~ msgid "Default text encoding:"
+#~ msgstr "P�ina de codis de text per defecte:"
+
+#~ msgid "Use Language Encoding"
+#~ msgstr "Emprar p�ina de codis del llenguatge"
+
+#, fuzzy
+#~ msgid "Minimize in tray"
+#~ msgstr "Minimitzar nous privats"
+
+#~ msgid "Confirm quit with active connections"
+#~ msgstr "Confirmar sortida amb connexions actives"
+
+#~ msgid "Remember window properties"
+#~ msgstr "Recordar propietats de finestra"
+
+#, fuzzy
+#~ msgid "Disable splash screen"
+#~ msgstr "Deshabilitar els avisos de l'analitzador"
+
+#~ msgid "Open Dialog Window For"
+#~ msgstr "Obrir Di�eg de Finestra per a"
+
+#~ msgid "Preferences"
+#~ msgstr "Prefer�cies"
+
+#~ msgid "Registered Users"
+#~ msgstr "Usuaris Registrats"
+
+#~ msgid "Disable parser warnings"
+#~ msgstr "Deshabilitar els avisos de l'analitzador"
+
+#~ msgid "Disable broken event handlers"
+#~ msgstr "Desactivar manipuladors d'events trencats"
+
+#~ msgid "Kill broken timers"
+#~ msgstr "Matar temporitzadors trencats"
+
+#~ msgid "Send unknown commands as /RAW"
+#~ msgstr "Enviar comandes desconegudes com a /RAW"
+
+#, fuzzy
+#~ msgid "Automatically unload unused modules"
+#~ msgstr "Tancar autom�icament al finalitzar"
+
+#, fuzzy
+#~ msgid "Create minimized debug window"
+#~ msgstr "Minimitzar totes les finestres"
+
+#~ msgid "Message Type"
+#~ msgstr "Tipus de missatge"
+
+#~ msgid "Background:"
+#~ msgstr "Color de fons:"
+
+#~ msgid "Foreground:"
+#~ msgstr "Color de primer pla:"
+
+#~ msgid "Alert level:"
+#~ msgstr "Nivell d'alerta:"
+
+#~ msgid "Log this"
+#~ msgstr "Registrar aix"
+
+#~ msgid "Load From..."
+#~ msgstr "Carregar Des de..."
+
+#~ msgid "Save As..."
+#~ msgstr "Guardar Com a..."
+
+#~ msgid "Choose a Filename - KVIrc "
+#~ msgstr "Trii un nom d'arxiu - KVIrc"
+
+#~ msgid "Use global application font"
+#~ msgstr "Emprar font global de l'aplicaci"
+
+#, fuzzy
+#~ msgid "Hide icons in Popup"
+#~ msgstr "Amagar Finestra de Cerca"
+
+#~ msgid "Global application font:"
+#~ msgstr "Font global de l'aplicaci�"
+
+#~ msgid "Enable fake transparency"
+#~ msgstr "Activar falsa transpar�cia"
+
+#~ msgid ""
+#~ "<center>This option makes all KVIrc windows look transparent.<br>You must "
+#~ "choose a blending background image to below or check the \"Use KDE "
+#~ "desktop for transparency\" option.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�far�que totes les finestres de KVIrc es vegin "
+#~ "transparents.<br>Has d'escollir una imatge per a barrejar amb el fons o "
+#~ "activar l'opci�\"Emprar escriptori de KDE com a transpar�cia\".</center>"
+
+#~ msgid ""
+#~ "<center>This option makes all KVIrc windows look like transparent.<br>You "
+#~ "must choose a blending background image to below.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�far�que totes les finestres de KVIrc semblin "
+#~ "transparents.<br> Has d'escollir tamb�una imatge de fons per a barrejar "
+#~ "m� a sota.</center>"
+
+#~ msgid "Child window opacity:"
+#~ msgstr "Opacitat de la finestra filla:"
+
+#~ msgid "Parent window opacity:"
+#~ msgstr "Opacitat de la finestra pare:"
+
+#~ msgid "Blend color:"
+#~ msgstr "Color de la barreja:"
+
+#~ msgid "Use KDE desktop for transparency"
+#~ msgstr "Emprar escriptori de KDE com a transpar�cia"
+
+#~ msgid "Keep in sync with KDE background changes"
+#~ msgstr "Mantindre's sincronitzat amb els canvis de fons de KDE"
+
+#~ msgid "Transparency blend image:"
+#~ msgstr "Imatge de barreja transparent:"
+
+#~ msgid "Active Background"
+#~ msgstr "Fons Actiu:"
+
+#~ msgid "Inactive Background"
+#~ msgstr "Fons Inactiu:"
+
+#~ msgid "Active Text (Primary)"
+#~ msgstr "Text Actiu (Primari)"
+
+#~ msgid "Active Text (Secondary)"
+#~ msgstr "Text Actiu (Secundari)"
+
+#~ msgid "Inactive Text (Primary)"
+#~ msgstr "Text Inactiu (Primari)"
+
+#~ msgid "Inactive Text (Secondary)"
+#~ msgstr "Text Inactiu (Secundari)"
+
+#~ msgid "Background Image"
+#~ msgstr "Imatge de Fons"
+
+#~ msgid "Low-Contrast Foreground"
+#~ msgstr "Primer Pla de Baix contrast"
+
+#~ msgid "Mid-Contrast Foreground"
+#~ msgstr "Primer Pla de Contrast Mitj"
+
+#~ msgid "Active High-Contrast Foreground (Primary)"
+#~ msgstr "Primer Pla Actiu d'Alt Contrast (Primari)"
+
+#~ msgid "Active High-Contrast Foreground (Secondary)"
+#~ msgstr "Primer Pla Actiu d'Alt Contrast (Secundari)"
+
+#~ msgid "Inactive High-Contrast Foreground (Primary)"
+#~ msgstr "Primer Pla inactiu d'Alt Contrast (Primari)"
+
+#~ msgid "Inactive High-Contrast Foreground (Secondary)"
+#~ msgstr "Primer Pla inactiu d'Alt Contrast (Secundari)"
+
+#~ msgid "Default away message:"
+#~ msgstr "Missatge d'abs�cia per defecte:"
+
+#~ msgid "User input exits away mode"
+#~ msgstr "L'entrada de text surt del mode absent"
+
+#~ msgid "Away Nickname"
+#~ msgstr "Nick d'abs�cia"
+
+#~ msgid "Change nickname on away"
+#~ msgstr "Canviar el nick a l'absentar-se"
+
+#~ msgid "Use automatic nickname ([5 letters]AWAY)"
+#~ msgstr "Emprar nick d'abs�cia autogenerat [5 lletres]AWAY) "
+
+#~ msgid "Custom nickname:"
+#~ msgstr "Nick personalitzat:"
+
+#~ msgid "Enable lag meter"
+#~ msgstr "Activar mesurador de retr�"
+
+#~ msgid ""
+#~ "<center>This enables the lag meter engine, which checks at regular "
+#~ "intervals how much lag (latency) the server has.</center>"
+#~ msgstr ""
+#~ "<center>Aix�habilita el motor de retrassos, que comprova a intervals "
+#~ "regulars quan retr� (lat�cia) t�el servidor.</center>"
+
+#~ msgid "Lag meter heartbeat:"
+#~ msgstr "Cad�cia del mesurador de retr�:"
+
+#~ msgid ""
+#~ "<center>This option allows you to set the lag meter heartbeat interval."
+#~ "<br>The lower the heartbeat interval the higher will be the accuracy of "
+#~ "the lag check but also higher cpu usage and data traffic to the server."
+#~ "<br>Please note that this is NOT the interval between pings sent to the "
+#~ "server: the pings (if any) will be sent really less often. 5000 is a "
+#~ "reasonable value.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�permet escollir l'interval de cad�cia del mesurador "
+#~ "de retr�. <br>Quant menor sigui l'interval de cad�cia major ser�la "
+#~ "fiabilitat de la mesura, per�tamb�ser�major el us de la CPU i el tr�ic de "
+#~ "dades amb el servidor.<br>Si us plau, tingui en compte que aquest NO � "
+#~ "l'interval entre pings enviats al servidor: els ping (si n'hi ha) seran "
+#~ "enviats molt menys freqentment. 5000 � un valor raonable.</center>"
+
+#~ msgid "Trigger event if lag exceeds:"
+#~ msgstr "Disparar event si el retr� excedeix de:"
+
+#~ msgid ""
+#~ "<center>This option controls the threshold for the OnLagAlarmTimeUp and "
+#~ "OnLagAlarmTimeDown events. When the lag goes above the threshold "
+#~ "OnLagAlarmTimeUp will be triggered and when the lag falls back below the "
+#~ "threshold then OnLagAlarmTimeDown will be triggered</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�controla l'umbral per als events OnLagAlarmTimeUp i "
+#~ "OnLagAlarmTimeDown. Quan el retr� excedeixi l'umbral es disparar�l'event "
+#~ "OnLagAlarmTimeUp i quan el retr� caigui per sota de l'umbral es "
+#~ "disparar�OnLagAlarmTimeDown</center>"
+
+#~ msgid "Show lag in IRC context display"
+#~ msgstr "Mostrar retr� a la pantalla de context d'IRC"
+
+#~ msgid ""
+#~ "<center>This makes the IRC context display applet show the current lag "
+#~ "after the user's nickname (in seconds)</center>"
+#~ msgstr ""
+#~ "<center>Aix�fa que el applet de visualitzaci�de context IRC mostri el "
+#~ "retr� despr� del nick de l'usuari (en segons)</center>"
+
+#~ msgid "Nickname Colors"
+#~ msgstr "Colors del Nick"
+
+#~ msgid "Normal:"
+#~ msgstr "Normal:"
+
+#~ msgid "Selected:"
+#~ msgstr "Seleccionat:"
+
+#~ msgid "Channel owner:"
+#~ msgstr "Propietari del canal:"
+
+#~ msgid "Channel admin:"
+#~ msgstr "Administrador del canal:"
+
+#~ msgid "Op:"
+#~ msgstr "Op:"
+
+#~ msgid "Half-op:"
+#~ msgstr "Semioperador:"
+
+#~ msgid "Voice:"
+#~ msgstr "Veu:"
+
+#~ msgid "User-op:"
+#~ msgstr "Usuaris operadors:"
+
+#, fuzzy
+#~ msgid "Away:"
+#~ msgstr "Absent"
+
+#~ msgid "Background Colors"
+#~ msgstr "Colors de Fons"
+
+#~ msgid "Nickname Grid"
+#~ msgstr "Reixa de Nicks"
+
+#~ msgid "Draw nickname grid"
+#~ msgstr "Dibuixar reixa de nicks"
+
+#~ msgid "Grid color:"
+#~ msgstr "Color de la reixa:"
+
+#~ msgid "Grid type:"
+#~ msgstr "Tipus de reixa:"
+
+#~ msgid "3D Grid"
+#~ msgstr "Reixa 3D"
+
+#~ msgid "3D Buttons"
+#~ msgstr "Botons 3D"
+
+#~ msgid "Plain Grid"
+#~ msgstr "Reixa Plana"
+
+#~ msgid "Dotted Grid"
+#~ msgstr "Reixa Puntejada"
+
+#~ msgid "Show user channel icons"
+#~ msgstr "Mostrar icones d'usuaris del canal"
+
+#~ msgid "Show user channel activity indicator"
+#~ msgstr "Mostrar indicador d'activitat d'usuari al canal"
+
+#~ msgid "Enable user tooltips"
+#~ msgstr "Activar tooltips d'usuari"
+
+#~ msgid "Minimize console after successful login"
+#~ msgstr "Minimitzar la consola despr� d'entrar correctament"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to minimize the console window after "
+#~ "successfully logging into a server.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�far�que KVIrc minimitzi la finestra de consola "
+#~ "despr� d'entrar satisfactoriament a un servidor.</center>"
+
+#~ msgid "On Channel Kick"
+#~ msgstr "En Expulsi�del Canal"
+
+#~ msgid "Keep channel open"
+#~ msgstr "Mantindre el canal obert"
+
+#~ msgid "Rejoin channel"
+#~ msgstr "Reentrada al canal"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to attempt to rejoin a channel after "
+#~ "being kicked.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�far�que KVIrc torni a entrar al canal despr� de ser "
+#~ "expulsat.</center>"
+
+#~ msgid "On Channel Part"
+#~ msgstr "A la sortida del canal"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to keep the channel window open "
+#~ "after leaving it.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�far�que KVIrc mantingui la finestra del canal oberta "
+#~ "despr� d'abandonar-lo.</center>"
+
+#~ msgid "Automatically join channel on invite"
+#~ msgstr "Entrar autom�icament al canal quan ens invitin"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to automatically join a channel when "
+#~ "an INVITE message for that channel is received.<br><b>Warning:</b> This "
+#~ "may help spammers harass you. :)</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�far�que KVIrc s'uneixi autom�icament a un canal al "
+#~ "que hagi estat convidat.<br><b>Atenci�</b> Aix�pot ajudar als spammers a "
+#~ "fastiguejar-lo. :)</center>"
+
+#, fuzzy
+#~ msgid "Do not update the away list"
+#~ msgstr "No demanar llista de prohibits"
+
+#~ msgid "Force immediate quit"
+#~ msgstr "For�r sortida immediata"
+
+#~ msgid ""
+#~ "<center>This option causes KVIrc to close the connection immediately "
+#~ "after sending the QUIT message.<br>When this option is disabled, KVIrc "
+#~ "will wait for the server to close the connection.<br>Note that if you use "
+#~ "this, your QUIT message may be not displayed.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�far�que KVIrc tanqui la connexi�immediatament despr� "
+#~ "d'enviar el missatge QUIT.<br> Quan aquesta opci�est�desactivada, KVIrc "
+#~ "esperar�a que el servidor tanqui la connexi�<br>Observi que si utilitza "
+#~ "aquesta opci� el seu missatge QUIT pot no ser visualitzat.</center>"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to keep the channel window open "
+#~ "after being kicked.<br>It might be a good idea to also enable the "
+#~ "\"Rejoin channel\" option.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�far�que KVIrc mantingui la finestra de canal oberta "
+#~ "despr� d'haver set expulsat.<br>Pot ser una bona idea activar tamb�l'opci�"
+#~ "\"Reentrada al canal\".</center>"
+
+#~ msgid "Do not send /WHO request"
+#~ msgstr "No enviar petici�/WHO"
+
+#~ msgid "Do not request ban list"
+#~ msgstr "No demanar llista de prohibits"
+
+#~ msgid "Do not request invite list"
+#~ msgstr "No demanar llista de convidats"
+
+#~ msgid "Certificate"
+#~ msgstr "Certificat"
+
+#~ msgid "Use SSL certificate (PEM format only)"
+#~ msgstr "Emprar certificat SSL (nom� format PEM)"
+
+#~ msgid "Certificate location:"
+#~ msgstr "Localitzar el certificat:"
+
+#~ msgid "Certificate password:"
+#~ msgstr "Clau del certificat:"
+
+#~ msgid "Private Key"
+#~ msgstr "Clau Privada"
+
+#~ msgid "Use SSL private key"
+#~ msgstr "Emprar clau privada SSL"
+
+#~ msgid "Private key location:"
+#~ msgstr "Localitzaci�de la clau privada:"
+
+#~ msgid "Private key password:"
+#~ msgstr "Clau de la clau privada:"
+
+#~ msgid "This executable has no SSL support."
+#~ msgstr "Aquest executable de KVIrc no t�suport SSL"
+
+#~ msgid "Timeout Values"
+#~ msgstr "Valors de Temps d'Expiraci"
+
+#~ msgid "Connect timeout:"
+#~ msgstr "Temps d'expiraci�de connexi�"
+
+#~ msgid "Outgoing data queue flush timeout:"
+#~ msgstr "Temps d'expiraci�per a volcar la cua de dades sortints"
+
+#~ msgid "Limit outgoing traffic"
+#~ msgstr "Limitar tr�ic sortint"
+
+#~ msgid "Limit to 1 message every:"
+#~ msgstr "Limitar a 1 missatge cada:"
+
+#~ msgid " usec"
+#~ msgstr " microseg"
+
+#~ msgid ""
+#~ "<center>Minimum value: <b>10000 usec</b><br>Maximum value: <b>10000000 "
+#~ "usec</b></center>"
+#~ msgstr ""
+#~ "<center>Valor m�im: <b>10000 microseg</b><br>Valor m�im: <b>10000000 "
+#~ "microseg</b></center>"
+
+#~ msgid "Network Interfaces"
+#~ msgstr "Interf�ies de xarxa"
+
+#~ msgid "Bind IPv4 connections to:"
+#~ msgstr "Unir connexions IPv4 a:"
+
+#~ msgid "Bind IPv6 connections to:"
+#~ msgstr "Unir connexions IPv6 a:"
+
+#~ msgid "Open Query For"
+#~ msgstr "Obrir Privat per a"
+
+#~ msgid "Private messages"
+#~ msgstr "Missatges privats"
+
+#~ msgid ""
+#~ "<center>This option enables query window creation when a private message "
+#~ "(PRIVMSG) is received.<br>If you disable this, private messages will be "
+#~ "shown in the active window or a common channel.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�permet la creaci�de finestres independents quan es "
+#~ "rep un missatge privat (PRIVMSG).<br>Si desactives aix� els missatges "
+#~ "seran mostrats en la finestra activa o en un canal com.</center>"
+
+#~ msgid "Private notices"
+#~ msgstr "Noticies privades"
+
+#~ msgid ""
+#~ "<center>This option enables query window creation when a private notice "
+#~ "(NOTICE) is received.<br>If you disable this, private notices will be "
+#~ "shown in the active window or a common channel.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�permet la creaci�de finestres independents quan es "
+#~ "rep una not�ia privada (NOTICE).<br>Si desactives aix� les not�ies seran "
+#~ "mostrades a la finestra activa o a un canal com.</center>"
+
+#~ msgid "Minimize new queries"
+#~ msgstr "Minimitzar nous privats"
+
+#~ msgid ""
+#~ "<center>This option causes newly created query windows to be immediately "
+#~ "minimized.<br>Enable this if you don't like queries popping up while "
+#~ "you're typing something in a channel. :D</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�far�que les finestres amb privats recent creades "
+#~ "siguin minimitzades immediatament.<br>Activi aix�si no li agrada que els "
+#~ "privats interompeixin mentre est�teclejant alguna cosa en algun canal. :"
+#~ "D</center>"
+
+#~ msgid "Enable target user tracking"
+#~ msgstr "Activar seguiment de dest�d'usuari"
+
+#~ msgid ""
+#~ "<center>This option will enable target user tracking.<br>Some actions of "
+#~ "the target user (e.g. joins and parts) will be displayed in the window."
+#~ "<br></center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�permetr�rastrejar usuaris concrets.<br>Algunes "
+#~ "accions d'alguns usuaris (p.e. entrades i sortides) seran mostrades a la "
+#~ "finestra.<br></center>"
+
+#~ msgid "Flash system taskbar on new query message"
+#~ msgstr "Destell a la barra de feines des sistema amb els nous privats"
+
+#~ msgid ""
+#~ "<center>This option causes the system taskbar entry for KVIrc to flash "
+#~ "when a new query message is received and the KVIrc window is not the "
+#~ "active.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�far�que l'entrada de KVIrc a la barra de feines del "
+#~ "sistema destelli quan es rebi un nou privat i la finestra de KVIrc no es "
+#~ "trobi seleccionada.</center>"
+
+#~ msgid "Popup notifier on new query message"
+#~ msgstr "Mostrar notificador amb els missatges privats"
+
+#~ msgid ""
+#~ "<center>This option causes a small notifier window to pop up in the low "
+#~ "right corner of the screen when a new message is received and the KVIrc "
+#~ "window is not active.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�far�que es mostri una petita finestra de "
+#~ "notificacions a la cantonada de sota a la dreta quan es rebi un nou "
+#~ "missatge i la finestra de KVIrc no estigui activa.</center>"
+
+#~ msgid "Enable word highlighting"
+#~ msgstr "Activar ressaltat de paraules"
+
+#~ msgid "Words to highlight:"
+#~ msgstr "Paraules a ressaltar:"
+
+#~ msgid "Highlight messages containing my nickname"
+#~ msgstr "Ressaltar sempre els missatges que continguin el meu nick"
+
+#~ msgid ""
+#~ "<center>If this option is enabled, KVIrc will highlight any user message "
+#~ "containing your current nickname</center>"
+#~ msgstr ""
+#~ "<center>Si s'activa aquesta opci� KVIrc ressaltar�qualsevol missatge "
+#~ "d'usuari que contingui el seu nick</center>"
+
+#~ msgid "Flash the system taskbar entry on highlighted messages"
+#~ msgstr ""
+#~ "Destell en la barra de feines del sistema amb els missatges ressaltats"
+
+#~ msgid ""
+#~ "<center>If this option is enabled, KVIrc will (attempt to) flash the "
+#~ "system taskbar entry when a highlighted message is printed and KVIrc is "
+#~ "not the active window</center>"
+#~ msgstr ""
+#~ "<center>Si s'activa aquesta opci� KVIrc (intentar� que l'entrada de la "
+#~ "barra de feines del sistema destelli quan es mostri un missatge ressaltat "
+#~ "i KVIrc no sigui la finestra activa</center>"
+
+#~ msgid "Popup the notifier window on highlighted messages"
+#~ msgstr "Mostrar la finestra de notificaci�amb els missatges ressaltats"
+
+#~ msgid ""
+#~ "<center>If this option is enabled, KVIrc will popup a little notifier "
+#~ "window in the low right corner of your desktop when a highlighted message "
+#~ "is printed and KVIrc is not the active window</center>"
+#~ msgstr ""
+#~ "<center>Si s'habilita aquesta opci� KVIrc mostrar�una petita finestra de "
+#~ "notificacions al rac�inferior dret de l'escriptori quan es visualitzi un "
+#~ "missatge ressaltat i KVIrc sigui la finestra activa</center>"
+
+#~ msgid "Taskbar Alert"
+#~ msgstr "Barra de Feines d'Alertes"
+
+#~ msgid "Restrict alert"
+#~ msgstr "Restringir alertes"
+
+#~ msgid ""
+#~ "<center>If this option is enabled, KVIrc will alert in the taskbar only "
+#~ "if a normal message is received in a channel.<br>Actions like joins, "
+#~ "parts and mode changes will be ignored.<br> This is useful if you are in "
+#~ "channels with a high rate of traffic and only want to be alerted for "
+#~ "messages that are interesting to you.</center>"
+#~ msgstr ""
+#~ "<center>Si aquesta opci�est�activa, KVIrc alertar�a la barra de feines "
+#~ "nom� si rep un missatge normal en un canal.<br>Accions com entrades, "
+#~ "sortides i canvis de mode seran ignorades.<br> Aix�� til si es troba en "
+#~ "canals amb una gran quantitat de tr�ic i nom� vol ser alertat de "
+#~ "missatges que l'interessin.</center>"
+
+#~ msgid "Alert for highlighted words"
+#~ msgstr "Alertar per paraules ressaltades"
+
+#~ msgid ""
+#~ "<center>If this option is enabled, the taskbar will also alert for "
+#~ "messages which contain a word from the highlighted words list above.</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Si s'activa aquesta opci� la barra de feines tamb�alertar�de "
+#~ "missatges que continguin una paraula present a la llista de paraules "
+#~ "ressaltades de la llista anterior.</center>"
+
+#~ msgid "Alert for query messages"
+#~ msgstr "Alertar per missatges privats"
+
+#~ msgid ""
+#~ "<center>If this option is enabled, the taskbar will also alert for "
+#~ "messages which are shown in queries.</center>"
+#~ msgstr ""
+#~ "<center>Si s'activa aquesta opci� la barra de feines alertar�tamb�de "
+#~ "missatges mostrats en privats.</center>"
+
+#~ msgid ""
+#~ "<center>If this option is enabled, KVIrc will alert in the taskbar only "
+#~ "if the specified alert level is reached.</center>"
+#~ msgstr ""
+#~ "<center>Si s'activa aquesta opci� KVIrc alertar�a la barra de feines nom� "
+#~ "si s'arriba al nivell d'alerta especificat.</center>"
+
+#~ msgid "Minimum alert level:"
+#~ msgstr "Nivell d'alerta m�im:"
+
+#~ msgid ""
+#~ "<center>This option sets the minimum alert level for the taskbar.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�configura el m�im nivell de alerta per a la barra de "
+#~ "feines.</center>"
+
+#~ msgid "Automatically Log"
+#~ msgstr "Grabar registre autom�icament"
+
+#~ msgid "Query windows"
+#~ msgstr "Finestres de privats"
+
+#~ msgid "Channel windows"
+#~ msgstr "Finestres de canal"
+
+#~ msgid "DCC Chat windows"
+#~ msgstr "Finestres de transfer�cies DCC"
+
+#~ msgid "Console windows"
+#~ msgstr "Finestres de consola"
+
+#~ msgid "<b>http://</b> handler command:"
+#~ msgstr "<b>http://</b> comanda manipuladora:"
+
+#~ msgid "<b>https://</b> handler command:"
+#~ msgstr "<b>https://</b> comanda manipuladora:"
+
+#~ msgid "<b>ftp://</b> handler command:"
+#~ msgstr "<b>ftp://</b> comanda manipuladora:"
+
+#~ msgid "<b>mailto:</b> handler command:"
+#~ msgstr "<b>mailto:</b> comanda manipuladora:"
+
+#~ msgid "<b>file://</b> handler command:"
+#~ msgstr "<b>file://</b> comanda manipuladora:"
+
+#~ msgid "Unknown protocol handler command:"
+#~ msgstr "Comanda manipuladora de protocol desconegut:"
+
+#~ msgid "Enable ident service (bad practice on UNIX!)"
+#~ msgstr "Activar servei ident (mala pr�tica en UNIX!)"
+
+#~ msgid "Ident username:"
+#~ msgstr "Nom d'Usuari d'Ident:"
+
+#~ msgid "Service port:"
+#~ msgstr "Port de servei:"
+
+#~ msgid "IPv6 Settings"
+#~ msgstr "Opcions IPv6"
+
+#~ msgid "Enable service for IPv6"
+#~ msgstr "Activar servei IPv6"
+
+#~ msgid "IP stack treats IPv4 as part of IPv6 namespace"
+#~ msgstr "La pila del sistema tracta IPv4 com a part de l'espai de noms IPv6"
+
+#~ msgid ""
+#~ "<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident "
+#~ "daemon that implements only a limited subset of the Identification "
+#~ "Protocol specifications. If it is possible, install a real ident daemon.</"
+#~ "p>"
+#~ msgstr ""
+#~ "<p><b>Atenci�</b><br>Aquest � un servei <b>no compatible RFC 1413</b> "
+#~ "d'ident que nom� implementa un limitat subconjunt de les especificacions "
+#~ "el protocol d'identificaci� � possible installar un servidor ident real.</"
+#~ "p>"
+
+#~ msgid ""
+#~ "<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident "
+#~ "daemon that implements only a limited subset of the Identification "
+#~ "Protocol specifications.<br>On UNIX, you may also need root privileges to "
+#~ "bind to the auth port (113).<br>It is <b>highly recommended</b> that a "
+#~ "<b>real</b> system-wide ident daemon be used instead, or none at all if "
+#~ "ident is not required.</p>"
+#~ msgstr ""
+#~ "<p><b>Atenci�</b><br>Aquest � un servei <b>no compatible RFC 1413</b> "
+#~ "d'ident que nom� implementa un limitat subconjunt de les especificacions "
+#~ "del protocol d'identificaci�<br>En UNIX, pots necessitar tamb�privilegis "
+#~ "de superusuari per a associar-se al port auth (113).<br>� <b>altament "
+#~ "recomanable</b> que un servidor global d'ident <b>real</b> sigui usuari "
+#~ "al seu lloc, o cap en absolut si ident no � necessari.</p>"
+
+#~ msgid "Use flood protection (recommended)"
+#~ msgstr "Utilitzar protecci�de saturaci�(recomenat)"
+
+#~ msgid ""
+#~ "<center>This option makes KVIrc only respond to a limited number of CTCP "
+#~ "requests within a specified time interval, to prevent \"flooding\" CTCP "
+#~ "messages.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�far�que KVIrc nom� respongui a un nmero limitat de "
+#~ "peticions CTCP dintre d'un interval especificat de temps, per a prevenir "
+#~ "el \"flooding\" (saturaci� de missatges CTCP.</center>"
+
+#~ msgid "Allow up to:"
+#~ msgstr "Permetre fins:"
+
+#~ msgid " requests"
+#~ msgstr " peticions"
+
+#~ msgid ""
+#~ "<center>Minimum value: <b>0 requests</b><br>Maximum value: <b>10000 "
+#~ "requests</b></center>"
+#~ msgstr ""
+#~ "<center>Valor m�im: <b>0 peticions</b><br>Valor m�im: <b>86400 peticions</"
+#~ "b></center>"
+
+#~ msgid "within:"
+#~ msgstr "cada:"
+
+#~ msgid ""
+#~ "<center>Minimum value: <b>1 sec</b><br>Maximum value: <b>3600 sec</b></"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Valor m�im: <b>1 seg</b><br>Valor m�im: <b>3600 seg</b></center>"
+
+#~ msgid "PING"
+#~ msgstr "PING"
+
+#~ msgid "FINGER"
+#~ msgstr "FINGER"
+
+#~ msgid "CLIENTINFO"
+#~ msgstr "CLIENTINFO"
+
+#~ msgid "USERINFO"
+#~ msgstr "USERINFO"
+
+#~ msgid "VERSION"
+#~ msgstr "VERSION"
+
+#~ msgid "SOURCE"
+#~ msgstr "SOURCE"
+
+#~ msgid "TIME"
+#~ msgstr "TIME"
+
+#~ msgid "PAGE"
+#~ msgstr "PAGE"
+
+#~ msgid "AVATAR"
+#~ msgstr "AVATAR"
+
+#~ msgid "DCC/TDCC"
+#~ msgstr "DCC/TDCC"
+
+#~ msgid "Use online notify list"
+#~ msgstr "Emprar llista de notificacions de connexi"
+
+#~ msgid "Show notifications in active window"
+#~ msgstr "Mostrar notificacions a la finestra actual"
+
+#~ msgid "Flash window when users are going online"
+#~ msgstr "Destell de la finestra quan els usuaris vagin estan en l�ia"
+
+#~ msgid "Popup notifier when users are going online"
+#~ msgstr "Mostrar notificador quan els usuaris vagin estant en l�ia"
+
+#~ msgid "Advanced configuration"
+#~ msgstr "Configuraci�Avan�da"
+
+#~ msgid "Check USERHOST for online users"
+#~ msgstr "Comprovar USERHOST per a usuaris connectats"
+
+#~ msgid "Use \"smart\" notify list manager"
+#~ msgstr "Emprar gestor \"intelligent\" de llista de notificacions"
+
+#~ msgid "Use the WATCH method if available"
+#~ msgstr "Emprar el m�ode \"WATCH\" si est�disponible"
+
+#~ msgid "Check interval (in seconds)"
+#~ msgstr "Interval de comprobaci�(en segons)"
+
+#~ msgid "ISON delay (in seconds)"
+#~ msgstr "Retr� ISON (en segons)"
+
+#~ msgid "USERHOST delay (in seconds)"
+#~ msgstr "Retr� USERHOST (en segons)"
+
+#~ msgid ""
+#~ "<p><b>Note:</b><br>The notify list is managed using the \"Registered Users"
+#~ "\" settings.</p>"
+#~ msgstr ""
+#~ "<p><b>Nota:</b><br>La llista de notificacions es gestiona emprant les "
+#~ "opcions dels \"Usuaris Registrats\".</p>"
+
+#, fuzzy
+#~ msgid "Forcibly and completely disable the notifier"
+#~ msgstr "Desactivar for�da i completament el notificador"
+
+#~ msgid ""
+#~ "This is an option for the impatient: it allows to forcibly and "
+#~ "permanently disable the notifier window. Please note that if this option "
+#~ "is activated then the notifier will NOT popup even if all the other "
+#~ "options around specify to use it in response to particular events. Also "
+#~ "note that this option will make all the /notifier.* commands fail "
+#~ "silently."
+#~ msgstr ""
+#~ "Aquesta � una opci�per a impacients: permet desactivar for�da i "
+#~ "completament la finestra de notificacions. Si us plau, observi que si "
+#~ "s'activa aquesta opci�el notificador No es mostrar�fins i tot si totes "
+#~ "les opcions restants especifiquen el seu us com a resposta a determinats "
+#~ "events. Observi tamb�que aquesta opci�far�que totes les comandes /"
+#~ "notifier.* fallin silenciosament."
+
+#~ msgid "Use tree taskbar"
+#~ msgstr "Emprar barra de feines en arbre"
+
+#~ msgid "Sort windows by name"
+#~ msgstr "Ordenar finestres per nom"
+
+#~ msgid "Show window icons in taskbar"
+#~ msgstr "Mostrar icones de finestra a la barra de feines"
+
+#~ msgid "Show activity meter in taskbar"
+#~ msgstr "Mostrar medici�d'activitat a la barra de feines"
+
+#~ msgid ""
+#~ "<center>This option enables the usage of the taskbar activity meter. Each "
+#~ "window entry will have a small indicator of the activity that is going on "
+#~ "in that window. The indicator is a small square that changes colors, dark "
+#~ "colors mean low activity, while bright colors signal high activity. KVIrc "
+#~ "also uses some heuristics to determine whether the activity is somewhat "
+#~ "\"human\" or it is generated by automated entities (such as bots or IRC "
+#~ "servers). \"Human\" activity causes the indicator to be shaded red while "
+#~ "automated activity causes the indicator to be shaded blue.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�activa l'us del mesurador d'activitat. Cada entrada "
+#~ "a la finestra tindr�un petit indicador d'activitat. L'indicador � un "
+#~ "petit rectangle que canvia de color; negre significa baixa activitat i "
+#~ "colors m� brillants indiquen alta activitat. KVIrc empra algunes "
+#~ "heur�tiques per a esbrinar quan es tracta d'activitat \"humana\" o si "
+#~ "aquesta � generada per entitats autom�iques (com bots o servidors IRC). "
+#~ "L'activitat \"humana\" fa que l'indicador sigui ombrejat en vermell "
+#~ "mentres que l'activitat autom�ica fa que l'indicador sigui ombrejat en "
+#~ "blau.</center>"
+
+#~ msgid "Show IRC context indicator in taskbar"
+#~ msgstr "Mostrar indicador de context d'IRC a la barra de feines"
+
+#~ msgid "Enable window tooltips"
+#~ msgstr "Activar tooltips de finestra"
+
+#~ msgid "Text/Alert Colors"
+#~ msgstr "Colors de Text/Alertes"
+
+#~ msgid "Alert Level 1:"
+#~ msgstr "Nivell d'Alerta 1:"
+
+#~ msgid "Alert Level 2:"
+#~ msgstr "Nivell d'Alerta 2:"
+
+#~ msgid "Alert Level 3:"
+#~ msgstr "Nivell d'Alerta 3:"
+
+#~ msgid "Alert Level 4:"
+#~ msgstr "Nivell d'Alerta 4:"
+
+#~ msgid "Alert Level 5:"
+#~ msgstr "Nivell d'Alerta 5:"
+
+#~ msgid "Progress bar color:"
+#~ msgstr "Color de la barra de progr�:"
+
+#~ msgid "Minimum width:"
+#~ msgstr "Amplada m�ima:"
+
+#~ msgid "Maximum width:"
+#~ msgstr "Amplada m�ima:"
+
+#~ msgid "Minimized:"
+#~ msgstr "Minimitzat:"
+
+#~ msgid "Minimum width of buttons:"
+#~ msgstr "Amplada m�ima dels botons:"
+
+#~ msgid "Maximum number of rows:"
+#~ msgstr "M�im nombre de files:"
+
+#~ msgid "Private/channel notices"
+#~ msgstr "Notificacions de privat/canal"
+
+#~ msgid "Use verbose ignore (show messages in console)"
+#~ msgstr "Emprar ignore detallat (mostrar missatges a consola)"
+
+#~ msgid "Enable Anti-spam For"
+#~ msgstr "Activar anti-spam per a"
+
+#~ msgid "Silent anti-spam (no warnings)"
+#~ msgstr "Anti-spam silenci� (no avisa)"
+
+#~ msgid "Words considered spam:"
+#~ msgstr "Paraules considerades spam:"
+
+#~ msgid "Use workaround for firewall"
+#~ msgstr "Emprar rodeig per a tallafocs"
+
+#~ msgid ""
+#~ "<center>Enable this option if you can't accept incoming connections."
+#~ "<br>KVIrc will try to use different methods to send and receive files."
+#~ "<br>Please note that these methods may NOT work when communicating with a "
+#~ "non-KVIrc client.</center>"
+#~ msgstr ""
+#~ "<center>Activa aquesta opci�si no pots acceptar connexions entrants."
+#~ "<br>KVIrc intentar�emprar diferents m�odes per a enviar i rebre fitxers."
+#~ "<br>Per favor, observa que aquests m�odes poden NO funcionar quan te "
+#~ "comuniquis amb un client que no sigui KVIrc.</center>"
+
+#~ msgid "Network Properties"
+#~ msgstr "Propietats de Xarxa"
+
+#~ msgid "DCC socket timeout:"
+#~ msgstr "Temps d'expiraci�de socket DCC (segons):"
+
+#~ msgid ""
+#~ "<center>This is the amount of time that KVIrc will wait for a response "
+#~ "before assuming that a DCC has failed because the remote client was "
+#~ "unable to connect to our listening socket.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta � la quantitat de temps que KVIrc esperar�una resposta "
+#~ "abans d'assumir que un DCC ha fallat perqu�el extrem remot no ha sigut "
+#~ "capa�de connectar al nostre socket a l'escolta.</center>"
+
+#~ msgid "Use user-defined address or network interface"
+#~ msgstr "Utilitzar adre� o interf�ie de xarxa especificat per l'usuari"
+
+#~ msgid ""
+#~ "<center>Enable this option if you are on a multihost machine and want to "
+#~ "force one of the available IP addresses to be used for outgoing DCCs."
+#~ "<br>This is especially useful when you use IPv6 and IPv4 addresses."
+#~ "<br>You can force KVIrc to always choose the IPv4 interface.</center>"
+#~ msgstr ""
+#~ "<center>Activa aquesta opci�si est�en una m�uina amb diverses connexions "
+#~ "de xarxa i vols for�r que sigui una de les adreces IP disponibles la que "
+#~ "s'utilitzi per als DCCs sortints.<br>Aix�� especialment til quan "
+#~ "utilitzis adreces IPv4 e IPv6.<br>Pots for�r a que KVIrc esculli sempre "
+#~ "la interf�ie IPv4.</center>"
+
+#~ msgid "Listen on address/interface:"
+#~ msgstr "Escoltar en adre�/interf�ie:"
+
+#~ msgid ""
+#~ "<center>This is the IP address or name of the interface to use by default "
+#~ "for outgoing DCC transfers.<br>On UNIX systems that support it, you can "
+#~ "also specify IPv4 interface names (such as <b>ppp0</b>).<br>If you set it "
+#~ "to <b>0.0.0.0</b>, KVIrc will try to use the first available IPv4 "
+#~ "interface</center>"
+#~ msgstr ""
+#~ "<center>Aquesta � l'adre� IP o nom de la interf�ie que s'utilitzar�per "
+#~ "defecte per a les transfer�cies DCC sortints.<br>En els sistemes UNIX que "
+#~ "ho suportin, tamb�poden utilitzar-se noms d'interf�ie IPv4 (com <b>ppp0</"
+#~ "b>).<br>Si posa el valor d'aquesta opci�a <b>0.0.0.0</b>, KVIrc "
+#~ "intentar�trobar la primera interf�ie IPv4 disponible</center>"
+
+#~ msgid "Use user-defined port range"
+#~ msgstr "Emprar rang de ports definits per l'usuari"
+
+#~ msgid ""
+#~ "<center>Enable this option if you want specify a local port range for DCC."
+#~ "</center>"
+#~ msgstr ""
+#~ "<center>Activi aquesta opci�si vols especificar un rang de ports locals "
+#~ "per al DCC.</center>"
+
+#~ msgid "Lowest port:"
+#~ msgstr "Port m� baix:"
+
+#~ msgid "Highest port:"
+#~ msgstr "Port m� alt:"
+
+#~ msgid ""
+#~ "<center>Enable this option if you want to always send a fake IP address "
+#~ "in your DCC requests.<br>This might be useful if you're behind a router "
+#~ "with a static address that does network address translation (NAT) and "
+#~ "forwards all or a range of ports.</center>"
+#~ msgstr ""
+#~ "<center>Activa aquesta opci�si vols enviar sempre una adre� falsa en les "
+#~ "teves peticions DCC.<br>Aix�pot ser til si est� darrera d'un router amb "
+#~ "una adre� est�ica que fa conversi�d'adreces de xarxa (NAT) i reenvia tots "
+#~ "o un rang de ports.</center>"
+
+#~ msgid "Send address/interface:"
+#~ msgstr "Enviar adre�/interf�ie:"
+
+#~ msgid ""
+#~ "<center>This is the fixed address that will be sent with all DCC requests "
+#~ "if you enable the option above.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta � l'adre� fixa que s'enviar�a totes les peticions DCC si "
+#~ "vost�marca l'opci�</center>"
+
+#~ msgid "Guess address from IRC server if unroutable"
+#~ msgstr "Imaginar adre� des del servidor IRC si no � rutable"
+
+#~ msgid ""
+#~ "<center>You can enable this option if you are behind a router that "
+#~ "forwards all or a range of ports.<br>KVIrc will try to guess the IP "
+#~ "address to use for DCC by looking up the local hostname as seen by the "
+#~ "IRC server you're connected to.<br>This method is an exclusive "
+#~ "alternative to the \"fixed address\" above.<br>It might guess the correct "
+#~ "address automatically if certain conditions are met (e.g. the IRC server "
+#~ "does not mask hostnames).</center>"
+#~ msgstr ""
+#~ "<center>Pots habilitat aquesta opci�si est� darrere d'un enrutador que "
+#~ "redirigeix tots o un rang de ports.<br>KVIrc intentar�esbrinar l'adre� IP "
+#~ "per a emprar-la per a DCC buscant el nom de m�uina local com ho veu el "
+#~ "servidor IRC al que estiguis conectat.<br>Aquest m�ode � exclusivament "
+#~ "una alternativa a l'\"adre� fixa\" anterior.<br> Pot esbrinar l'adre� "
+#~ "correcta autom�icament si es compleixen certes condicions (p.e., el "
+#~ "servidor IRC no emmascara los noms de m�uina).</center>"
+
+#~ msgid "Use \"broken bouncer hack\" to detect address"
+#~ msgstr "Emprar el \"truc del repetidor trencat\" per a detectar l'adre�"
+
+#~ msgid ""
+#~ "<center>When you're behind a dialup router and also tunneling through a "
+#~ "psyBNC bouncer, you can use a bug in the bouncer to force KVIrc to bind "
+#~ "the DCC connections to the dialup router's address.<br>It's an ugly hack "
+#~ "- use it only if nothing else works.</center>"
+#~ msgstr ""
+#~ "<center>Quan est� darrera d'un enrutador telef�ic i tamb�enrutes a trav� "
+#~ "d'un repetidor psyBNC, pots utilitzar un error en el repetidor per a "
+#~ "for�r a KVIrc a associar les connexions DCC a l'adre� del repetidor "
+#~ "telef�ic.<br>� un truc brut - empri'l si cap altre cosa funciona.</center>"
+
+#~ msgid "Notify failed DCC handshakes to the remote end"
+#~ msgstr "Notificar al altre extrem les negociacions de DCC fallides"
+
+#~ msgid ""
+#~ "<center>If you enable this option, when a DCC request from a remote user "
+#~ "can't be satisfied KVIrc will notify him by a CTCP ERRMSG. This is a nice "
+#~ "feature so it is a good idea to leave it on unless for some reason you "
+#~ "have deactivated the antiflood system: in this case turning off this "
+#~ "option might help if you often get attacked by CTCP floods.</center>"
+#~ msgstr ""
+#~ "<center>Si actives aquesta opci� quan no pugui satisfer-se una petici�DCC "
+#~ "d'un usuari remot, KVIrc se li ho notificar�mitjan�nt un CTCP ERRMSG. "
+#~ "Aquesta � una caracter�tica agradable per aix�� bona idea deixar-la "
+#~ "activa a menys que per alguna ra�hagis desactivat el sistema "
+#~ "antisaturaci� en aquest cas desactivar aquesta opci�pot ajudar si et veus "
+#~ "atacat per saturacions de CTCP sovint.</center>"
+
+#~ msgid "Maximum number of DCC sessions"
+#~ msgstr "M�im nmero de sessions DCC"
+
+#~ msgid ""
+#~ "<center>This is the maximum number of concurrent DCC sessions and it "
+#~ "includes all the DCC types (send,chat,recv...). KVIrc will refuse the "
+#~ "requests when this limit is reached.</center>"
+#~ msgstr ""
+#~ "<center>Aquest � el m�im nmero de sessions DCC simult�ies i inclou tots "
+#~ "els tipus de DCC (enviament, chat, recepci�..). KVIrc rebutjar�les "
+#~ "peticions quan s'arribi a aquest l�it.</center>"
+
+#~ msgid "Open all minimized"
+#~ msgstr "Obrir totes minimitzades"
+
+#~ msgid "On Incoming File"
+#~ msgstr "En Arxiu Entrant"
+
+#~ msgid "Automatically accept"
+#~ msgstr "Acceptar autom�icament"
+
+#~ msgid "Open minimized when auto-accepted"
+#~ msgstr "Obrir minimitzada quan s'accepti autom�icament"
+
+#~ msgid "Automatically resume when auto-accepted"
+#~ msgstr "Continuar autom�icament quan s'accepti autom�icament"
+
+#~ msgid "Automatically close on completion"
+#~ msgstr "Tancar autom�icament al finalitzar"
+
+#~ msgid "Notify completion in console"
+#~ msgstr "Notificar finalitzaci�a consola"
+
+#, fuzzy
+#~ msgid "Notify completion in notifier"
+#~ msgstr "Notificar finalitzaci�a consola"
+
+#~ msgid ""
+#~ "<center>The \"send ahead\" DCC method allows data to be sent faster by "
+#~ "breaking some of the rules of the original DCC SEND protocol "
+#~ "specification.<br>Most clients can handle this kind of optimisation so "
+#~ "disable it only if you have problems.</center>"
+#~ msgstr ""
+#~ "<center>El m�ode DCC \"send ahead\" permet enviar dades m� r�idament "
+#~ "saltant-se algunes regles de l'especificaci�original del protocol DCC."
+#~ "<br>Molts clients poden manipular aquest tipus d'optimitzaci� per "
+#~ "aix�desactiva-ho nicament si trobes problemes.</center>"
+
+#~ msgid "Guess save path from media type"
+#~ msgstr "Estimar ruta per a guardar des del tipus de medi"
+
+#~ msgid "Maximum number of DCC transfers"
+#~ msgstr "M�im nombre de transfer�cies DCC"
+
+#~ msgid "Download folder:"
+#~ msgstr "Directori d'arxius descarregats:"
+
+#~ msgid ""
+#~ "<center>This is the maximum number of concurrent DCC transfers. KVIrc "
+#~ "will refuse the requests when this limit is reached.</center>"
+#~ msgstr ""
+#~ "<center>Aquests � el m�im nombres de transfer�cies DCC simult�ies. KVIrc "
+#~ "rebutjar�les peticions quan s'arribi a aquest l�it.</center>"
+
+#~ msgid "Bug Compatibility"
+#~ msgstr "Compatibilitat d'errors"
+
+#~ msgid "Send ACK for byte 0"
+#~ msgstr "Enviar ACK per al byte 0"
+
+#~ msgid ""
+#~ "<center>This option causes KVIrc to send a zero-byte acknowledge to kick-"
+#~ "start the DCC transfer with some buggy IRC clients.<br>Use it only if "
+#~ "your DCC transfers stall just after establishing a connection without "
+#~ "sending any data.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�far�que KVIrc envii un reconeixement de zero bytes "
+#~ "per a iniciar r�idament transfer�cies DCC amb alguns clients IRC "
+#~ "problem�ics.<br>Empri-ho en cas de que les transfer�cies s'estanquin just "
+#~ "despr� d'establir una connexi�sense enviar dades.</center>"
+
+#~ msgid "Accept broken RESUME (mIRC file.ext)"
+#~ msgstr "Acceptar RESUME erroni (mIRC arxiu.ext)"
+
+#~ msgid ""
+#~ "<center>This option causes KVIrc to accept RESUME requests with invalid "
+#~ "filenames.<br>Use it if KVIrc fails to accept RESUME requests from other "
+#~ "clients (e.g. some versions of mIRC).</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�far�que KVIrc accepti sol�ituds RESUM amb nombres "
+#~ "d'arxiu no v�ids.<br>Empri-ho si KVIrc falla al acceptar solicituts "
+#~ "RESUME des d'altres clients (p.e., algunes versions de mIRC).</center>"
+
+#, fuzzy
+#~ msgid "bytes/sec"
+#~ msgstr "bytes"
+
+#~ msgid "Packet size:"
+#~ msgstr "Mida de paquet:"
+
+#~ msgid ""
+#~ "<center>This parameter controls the packet size used for DCC SEND."
+#~ "<br>With bigger packets you will be probably send data faster, but you "
+#~ "will also saturate your bandwidth and in some cases cause more disk "
+#~ "activity.<br>Reasonable values are from 512 to 4096 bytes.</center>"
+#~ msgstr ""
+#~ "<center>Aquest par�etre contorla la mida de paquet per a DCC SEND.<br> "
+#~ "Amb paquets m� grans provablement enviar�les dades m� r�id, "
+#~ "per�tamb�podr� saturar el teu ample de banda i, en alguns casos, pot "
+#~ "provocar m� activitat de disc.<br>Els valors raonables estan entre 512 i "
+#~ "4096 bytes.</center>"
+
+#~ msgid "Force idle step"
+#~ msgstr "For�r esperes"
+
+#~ msgid ""
+#~ "<center>Enable this option when the dcc file transfers tend to block your "
+#~ "computer by consuming too much CPU time. When this option is enabled the "
+#~ "idle interval below will be forcibly inserted between each sent/received "
+#~ "data packet.</center>"
+#~ msgstr ""
+#~ "<center>Habilita aquesta opci�quan les transfer�cies dcc tendeixin a "
+#~ "bloquejar el teu ordinador consumint massa temps de CPU. Quan s'habilita "
+#~ "aquesta opci�l'interval d'espera de sota ser�inserit a la for� en cada "
+#~ "paquet de dades enviat/rebut.</center>"
+
+#~ msgid "Idle interval:"
+#~ msgstr "Interval d'espera:"
+
+#~ msgid ""
+#~ "<center>This parameter controls the average delay between two packets "
+#~ "sent or received.<br>A smaller interval will cause you to send data "
+#~ "faster but will also add load to your CPU, disk and network interface."
+#~ "<br>Reasonable values are from 5 to 50 milliseconds.</center>"
+#~ msgstr ""
+#~ "<center>Aquest par�etre controla el retr� mitj�entre dos paquets enviats "
+#~ "o rebuts.<br>Un interval m� petit far�que envii les dades m� r�idament "
+#~ "per�tamb�afegir�c�rega a la seva CPU, disc i interf�ie de xarxa.<br>Els "
+#~ "valors raonables es troben entre 5 i 50 milisegons.</center>"
+
+#~ msgid "Use fast send (send ahead)"
+#~ msgstr "Utilitzar enviament r�id (tamb�conegut com a send ahead)"
+
+#~ msgid "On Chat Request"
+#~ msgstr "En Solicitut de Xat"
+
+#~ msgid "On Voice Request"
+#~ msgstr "En Solicitut de Veu"
+
+#~ msgid "Force half-duplex mode on sound device"
+#~ msgstr "For�r mode half-duplex en dispositiu de so"
+
+#~ msgid "Volume slider controls PCM, not Master"
+#~ msgstr "El deslli�dor controla el volum PCM, no el principal"
+
+#~ msgid "Sound device:"
+#~ msgstr "Dispositiu de so:"
+
+#~ msgid "Mixer device:"
+#~ msgstr "Dispositiu mesclador:"
+
+#~ msgid "Pre-buffer size:"
+#~ msgstr "Mida pre-buffer:"
+
+#~ msgid "Avatar Download - KVIrc"
+#~ msgstr "Desc�rega d'Avatar - KVIrc"
+
+#~ msgid "<center>Please wait while the avatar is being downloaded</center>"
+#~ msgstr ""
+#~ "<center>Si us plau, esperi mentres l'avatar est�sent descarregat</center>"
+
+#~ msgid "Abort"
+#~ msgstr "Avortar"
+
+#~ msgid "Failed to start the download"
+#~ msgstr "Errada al iniciar la desc�rega"
+
+#~ msgid "Download aborted by user"
+#~ msgstr "Desc�rega interrompuda per l'usuari"
+
+#, fuzzy
+#~ msgid "Hide avatars in userlist"
+#~ msgstr "Emprar avatar"
+
+#~ msgid "Use avatar"
+#~ msgstr "Emprar avatar"
+
+#~ msgid "Failed to Load Avatar - KVIrc"
+#~ msgstr "Ha fallat la c�rega de l'Avatar - KVIrc"
+
+#~ msgid ""
+#~ "Failed to load the avatar image.<br>It may be an unaccessible file or an "
+#~ "unsupported image format."
+#~ msgstr ""
+#~ "Ha fallat la c�rega de la imatge de l'avatar.<br>Pot tractar-se d'un "
+#~ "arxiu inaccessible o un format d'imatge no suportat."
+
+#~ msgid "Failed to download the avatar image.<br><b>%Q</b>"
+#~ msgstr "Ha fallat la desc�rega de la imatge de l'avatar.<br><b>%Q</b>"
+
+#~ msgid "Avatar Download Failed - KVIrc"
+#~ msgstr "Ha fallat la desc�rega de l'Avatar - KVIrc"
+
+#, fuzzy
+#~ msgid "Scaling"
+#~ msgstr "Scripting"
+
+#~ msgid "Scale avatar images (recommended)"
+#~ msgstr "Escalar imatges d'avatar (recomenat)"
+
+#~ msgid ""
+#~ "<center>This option will force KVIrc to scale avatars shown in the "
+#~ "userlist.<br>Avatars will be scaled to fit the constraints set below. "
+#~ "Better keep this option on. :)</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�obligar�a KVIrc a escalar els avatars a la llista "
+#~ "d'usuaris.<br>Els avatars s'escalaran per a complir les restriccions "
+#~ "seleccionades a sota. Conv�mantindre aquesta opci�activada. :)</center>"
+
+#~ msgid "Image width:"
+#~ msgstr "Amplada de la imatge:"
+
+#~ msgid "Image height:"
+#~ msgstr "Al�da de la imatge:"
+
+#, fuzzy
+#~ msgid "Request CTCP"
+#~ msgstr "Solicitar Llista"
+
+#~ msgid "Request missing avatars"
+#~ msgstr "Demanar avatars faltans"
+
+#~ msgid "Maximum requested file size:"
+#~ msgstr "Mida m�ima d'arxius solicitada:"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to send a DCC GET request when "
+#~ "someone sets an avatar and there is no cached copy available.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�far�que KVIrc envii una petici�DCC GET quan alg "
+#~ "configuri un avatar i no tinguem una copia emmagatzemada disponible.</"
+#~ "center>"
+
+#~ msgid ""
+#~ "<center>This is the maximum size for avatar images that will be "
+#~ "automatically requested.<br>A reasonable value might be 102400 bytes (100 "
+#~ "K).</center>"
+#~ msgstr ""
+#~ "<center>Aquest � la m�ima mida per a les imatges d'avatar que seran "
+#~ "solicitades autom�icament.<br>Un valor raonable podria ser 102400 bytes "
+#~ "(100 K).</center>"
+
+#~ msgid "Automatically accept incoming avatars"
+#~ msgstr "Acceptar automaticament avatars entrants"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to auto-accept DCC SEND requests for "
+#~ "incoming avatars.<br>If you're using the \"Request missing avatars\" "
+#~ "option above, enabling this may by useful.<br>Avatars will be saved in "
+#~ "the local KVIrc directory.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�far�que KVIrc accepti autom�icament les peticions "
+#~ "DCC SEND d'avatars entrants.<br>Si est� emprant l'opci�\"Demanar avatars "
+#~ "faltants\" anterior, pot ser til activar-la.<br>Els avatars seran "
+#~ "guardats al directori local de KVIrc.</center>"
+
+#, fuzzy
+#~ msgid "Remember avatars for registered users"
+#~ msgstr "Cach�d'avatars per a usuaris registrats"
+
+#~ msgid ""
+#~ "<center>Use a user's last known avatar by default (only for users that "
+#~ "are registered).</center>"
+#~ msgstr ""
+#~ "<center>Emprar per defecte el ltim avatar conegut per a l'usuari (nom� "
+#~ "per a usuaris que estan registrats).</center>"
+
+#~ msgid "Avatar offer timeout:"
+#~ msgstr "Temps d'expiraci�de l'oferta d'avatar:"
+
+#~ msgid ""
+#~ "<center>This is the amount of time to make an avatar available for "
+#~ "transfer when requested.<br>When someone sends a CTCP AVATAR request, "
+#~ "KVIrc will reply with a CTCP AVATAR message containing the name and size "
+#~ "of your avatar image.<br>A time-limited file offer is added for the image "
+#~ "file to the requesting user.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta � la quantitat de tempms en que un avatar "
+#~ "estar�disponible per a transferir quan sigui solicitat.<br>Quan alg envii "
+#~ "una petici�CTCP AVATAR, KVIrc pot respondre amb un missatge CTCP AVATAR "
+#~ "contenint el nom i la mida de la teva imatge d'avatar.<br>S'oferir�el "
+#~ "fitxer d'imatge durant temps limitat a l'usuari solicitant.</center>"
+
+#~ msgid "Ignore requests if no avatar is set"
+#~ msgstr "Ignorar peticions si no hi ha un avatar seleccionat"
+
+#~ msgid ""
+#~ "This option will cause KVIrc to ignore channel CTCP AVATAR requests when "
+#~ "you have no avatar set. This is usually a good practice since it helps in "
+#~ "reducing traffic by not sending a reply that would be empty."
+#~ msgstr ""
+#~ "Aquesta opci�far�que KVIrc ignori les solicituts de canal CTCP AVATAR "
+#~ "quan no tengui configurat un avatar.<br>Habitualment, aquesta � una bona "
+#~ "pr�tica perqu�ajuda a reduir el tr�ic evitant enviar r�liques que podrien "
+#~ "estar buides."
+
+#~ msgid "Network Details"
+#~ msgstr "Detalls de la Xarxa"
+
+#~ msgid "<center>Put here a brief description of the network.</center>"
+#~ msgstr "<center>Posi aqu�una breu descripci�de la xarxa.</center>"
+
+#~ msgid ""
+#~ "<center>This is the <b>username</b> that KVIrc will use to login to "
+#~ "servers on this network.\n"
+#~ "If this field is left empty (most common case), KVIrc will use the "
+#~ "default username specified in the \"Identity\" options tab.</center>"
+#~ msgstr ""
+#~ "<center>Aquest � el <b> nom d'usuari</b> que emprar�KVIrc per a "
+#~ "autentificar-se als servidors d'aquesta xarxa.\n"
+#~ "Si aquest camp es deixa buit (el cas m� normal), KVIrc emprar�el nom "
+#~ "d'usuari per defecte especificat a la pesta� d'opcions \"Identitat\".</"
+#~ "center>"
+
+#~ msgid ""
+#~ "<center>You can specify a \"special\" <b>nickname</b> that will be used "
+#~ "to log in to the servers on this network.<br>If this field is left empty "
+#~ "(most common case), the default nickname (specified in the \"Identity\" "
+#~ "settings) will be used.</center>"
+#~ msgstr ""
+#~ "<center>Pot especificar un <b>nick</b> \"especial\" que ser�emprat per a "
+#~ "entrar als servidors d'aquesta xarxa.<br>Si es deixa aquest camp buit (el "
+#~ "cas m� normal), s'emprar�el nick per defecte (especificat a la "
+#~ "configuraci�d'\"Identitat\".</center>"
+
+#~ msgid ""
+#~ "<center>You can specify a \"special\" <b>real name</b> that will be used "
+#~ "to login with the servers on this network.<br>If you leave this field "
+#~ "empty (most common case), the default \"real name\" (specified in the "
+#~ "\"Identity\" settings) will be used.</center>"
+#~ msgstr ""
+#~ "<center>Pots especificar un <b>nom real</b> \"especial\" que ser�emprat "
+#~ "per a entrar als servidors d'aquesta xarxa.<br>Si es deixa aquest camp "
+#~ "buit (el cas m� normal), s'emprar�el \"nom real\" per defecte "
+#~ "(especificat a la configuraci�d'\"Identitat \").</center>"
+
+#~ msgid "Encoding:"
+#~ msgstr "Codificaci�"
+
+#~ msgid ""
+#~ "<center>This box allows you to choose the preferred encoding for the "
+#~ "servers in this network. If you choose \"Use System Encoding\" then the "
+#~ "encoding will be set to the systemwide value that you choose in the "
+#~ "\"Encoding\" page of the options dialog.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta casella et permet escollir la codificaci�preferida per "
+#~ "als servidors d'aquesta xarxa. Si esculls \"Emprar Codificaci�del Sistema"
+#~ "\" llavors la codificaci�ser�inicialitzada amb la configuraci�global del "
+#~ "sistema que esculli a l'opci�\"Codificaci\" del di�eg d'opcions.</center>"
+
+#, fuzzy
+#~ msgid "Connect to this network at startup"
+#~ msgstr "Connectar a aquest servidor a l'inici"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to automatically connect to this "
+#~ "network at startup</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�far�que KVIrc es connecti al servidor d'IRC quan "
+#~ "arranqui.</center>"
+
+#~ msgid "Channels to join automatically upon connect:"
+#~ msgstr "Canals a unir-se autom�icament despr� de conectar:"
+
+#~ msgid ""
+#~ "<center>Here you can set a list of channels to be joined automatically "
+#~ "after a connection to a server in this network has been established. To "
+#~ "add a channel, type its name in the text input below and click \"<b>Add</"
+#~ "b>\".</center>"
+#~ msgstr ""
+#~ "<center>Aqu�pots posar la llista de canals als que entrar� autom�icament "
+#~ "despr� d'establir una connexi�amb un servidor d'aquesta xarxa. Per a "
+#~ "afegir un canal, escriu el seu nom a la caixa de text inferior i prem "
+#~ "\"<b>Afegir</b>\".</center>"
+
+#~ msgid ""
+#~ "<center>The following commands will be executed after a connection to a "
+#~ "server in this network has been established.<br><b>Important:</b> Enter "
+#~ "commands <b>without</b> a preceding slash (e.g. <tt>quote pass secret</"
+#~ "tt> instead of <tt>/quote pass secret</tt>).<br>KVIrc will first send the "
+#~ "USER command, then eventually PASS and NICK and then execute this command "
+#~ "sequence.</center>"
+#~ msgstr ""
+#~ "<center>Les segents comandes seran executades despr� que una connexi�amb "
+#~ "un servidor d'aquesta xarxa ha estat establerta.<br><b>Important:</b> "
+#~ "introdueixi les comandes <b>sense</b> precedir-les d'una barra (p.e. "
+#~ "<tt>quote pass secret</tt> en lloc de <tt>/quote pass secret</tt>."
+#~ "<br>KVIrc enviar�primer la comanda USER, eventualment PASS i NICK, i "
+#~ "despr� executar�aquesta seq�cia de comandes.</center>"
+
+#~ msgid "On Connect"
+#~ msgstr "En Connexi"
+
+#~ msgid ""
+#~ "<center>The following commands will be executed after a successful login "
+#~ "to a server in this network.<br><b>Important:</b> Enter commands "
+#~ "<b>without</b> a preceding slash (e.g. <tt>quote privatelog</tt> instead "
+#~ "of <tt>/quote privatelog</tt>).<br>This is useful for automatically "
+#~ "opening queries, setting variables, etc.</center>"
+#~ msgstr ""
+#~ "<center>Les sig�ts comandes seran executades despr� que s'hagi entrat "
+#~ "correctament a un servidor en aquesta xarxa.<br><b>Important:</b> "
+#~ "introdueixi les comandes <b>sense</b> precedir-les d'una barra (p.e. "
+#~ "<tt>quote privatelog</tt> en lloc de <tt>/quote privatelog</tt>.<br>Aix�� "
+#~ "til per a obrir privats autom�icament, inicialitzar variables, etc.</"
+#~ "center>"
+
+#~ msgid "On Login"
+#~ msgstr "A l'Entrar"
+
+#~ msgid ""
+#~ "<center>This is a list of NickServ identification rules. KVIrc will use "
+#~ "them to model its automatic interaction with NickServ on this network."
+#~ "<br>Please be aware that this feature can cause your NickServ passwords "
+#~ "to be stolen if used improperly. Make sure that you fully understand the "
+#~ "NickServ authentication protocol.<br>In other words, be sure to know what "
+#~ "you're doing.<br>Also note that the password that you provide is stored "
+#~ "as <b>PLAIN TEXT</b>.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta � la llista de regles d'identificaci�de NickServ. KVIrc "
+#~ "les emprar�per a la seva interacci�autom�ica amb NickServ en aquesta "
+#~ "xarxa.<br>Si us plau, tingui present que aquesta caracter�tica pot "
+#~ "provocar que les seves claus de NickServ siguin robades si s'usa "
+#~ "indegudament. Asseguris que ent� b�el protocol d'autentificaci�NickServ."
+#~ "<br>En altres paraules, asseguris de que sap que est�fent.<br>Pensi que "
+#~ "la clau que proporciona � emmagatzemada en <b>TEXT PLA</b>.</center>"
+
+#~ msgid "Server Details"
+#~ msgstr "Detalls del servidor"
+
+#~ msgid ""
+#~ "<center>This is a brief description of this server. This field has no "
+#~ "restrictions but many server lists use it to describe the server's "
+#~ "physical location</center>"
+#~ msgstr ""
+#~ "<center>Aquesta � una breu descripci�del servidor. Aquest camp no "
+#~ "t�restriccions per�moltes llistes de servidors l'utilitzen per a "
+#~ "descriure la localitzaci�f�ica del servidor</center>"
+
+#~ msgid ""
+#~ "<center>This is the <b>username</b> that KVIrc will use to login to this "
+#~ "server.\n"
+#~ "If this field is left empty (most common case), KVIrc will first look if "
+#~ "an username is specified for the network that this server belongs to, and "
+#~ "if that is empty then KVIrc will use the default username specified in "
+#~ "the \"Identity\" options tab.</center>"
+#~ msgstr ""
+#~ "<center>Aquest � el <b>nom d'usuari</b> que emprar�KVIrc per a "
+#~ "autentificar-se en aquest servidor.\n"
+#~ "Si aquest camp es deixa buit (el cas m� normal), KVIrc mirar�primer si hi "
+#~ "ha un nom d'usuari especificat per a la xarxa a la que pertany aquest "
+#~ "servidor, i si aquest es troba buit KVIrc emprar�el nom d'usuari per "
+#~ "defecte especificat a la casella d'opcions \"Identitat\"."
+
+#~ msgid ""
+#~ "<center>If this server requires a password, put it in this field, "
+#~ "otherwise leave it empty.</center>"
+#~ msgstr ""
+#~ "<center>Si aquest servidor necessita una clau, escrigui-la en aquest "
+#~ "camp: en altre cas, deixi-ho buit.</center>"
+
+#~ msgid ""
+#~ "<center>You can specify a \"special\" <b>nickname</b> that will be used "
+#~ "to log in to this server.<br>If this field is left empty (most common "
+#~ "case), KVIrc will first look if a nickname is specified for the network "
+#~ "that this server belongs to, and if that is empty then the default "
+#~ "nickname (specified in the \"Identity\" settings) will be used.</center>"
+#~ msgstr ""
+#~ "<center>Pot especificar un <b>nick</b> \"especial\" que ser�emprat per "
+#~ "entrar en aquest servidor.<br>Si es deixa aquest camp buit (el cas m� "
+#~ "normal), KVIrc mirar�primer si s'ha especificat un nick per a la xarxa a "
+#~ "la que pertany aquest servidor, i si aquest es troba buit s'emprar�el "
+#~ "nick per defecte (especificat a la configuraci�d'\"Identitat \".</center>"
+
+#~ msgid ""
+#~ "<center>You can specify a \"special\" <b>real name</b> that will be used "
+#~ "to login with this server.<br>If you leave this field empty (most common "
+#~ "case), KVIrc will first look if a real name is specified for the network "
+#~ "that this server belongs to, and if that is empty the default \"real name"
+#~ "\" (specified in the \"Identity\" settings) will be used.</center>"
+#~ msgstr ""
+#~ "<center>Pot especificar un <b>nom real</b> \"especial\" que ser�emprat "
+#~ "per a entrar en aquest servidor.<br>Si es deixa aquest camp buit (el cas "
+#~ "m� normal), KVIrc buscar�primer si s'ha especificat un per a la xarxa a "
+#~ "la que pertany aquest servidor, i si est�buit llavors s'emprar�el \"nom "
+#~ "real\" per defecte (especificat a la configuraci�d'\"Identitat \".</"
+#~ "center>"
+
+#~ msgid "Use default user mode"
+#~ msgstr "Mode d'usuari per defecte"
+
+#~ msgid ""
+#~ "<center>If this is enabled, the global initial <b>user mode</b> "
+#~ "(configured from the identity dialog) will be used. If disabled, you can "
+#~ "configure an initial user mode for this server"
+#~ msgstr ""
+#~ "<center>Si s'activa, s'emprar�el <b>mode d'usuari</b> global inicial "
+#~ "(configurat des de el di�eg Identitat). Si es desactiva, pot configurar "
+#~ "un mode d'usuari inicial per a aquest servidor.</center>"
+
+#~ msgid ""
+#~ "<center>This is the <b>IP address</b> of this server, it is here for "
+#~ "caching purposes.<br>If you leave this field empty, KVIrc will fill it in "
+#~ "the first time it connects to the server. If you enable the \"cache IP "
+#~ "address\" option below, KVIrc will use it as a \"cached result\" and "
+#~ "avoid looking it up again.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta � l'<b>adre� IP</b> d'aquest servidor, i es troba aqu�com "
+#~ "a cach�<b>Si deixa aquest camp buit, KVIrc el reomplir�la primera vegada "
+#~ "que es connecti al servidor. Si activa l'opci�de sota \"Cachejar adre� IP"
+#~ "\", KVIrc l'emprar�com a un \"resultat a cach\" per a evitar tornar a "
+#~ "buscar-ho de nou.</center>"
+
+#~ msgid "Cache IP address"
+#~ msgstr "Cachejar adre� IP"
+
+#~ msgid ""
+#~ "<center>This check will enable <b>IP address caching</b> for this server:"
+#~ "<br>DNS lookups can be time-consuming and might be blocking on some "
+#~ "platforms; this option will cause KVIrc to look up the server hostname "
+#~ "only once.<br><br> Advanced: you can also use this option to force a "
+#~ "certain server name to resolve to a fixed ip address when either the dns "
+#~ "for that server is temporairly unreachable or you want to avoid the round-"
+#~ "robin lookups.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta casella habilitar�el <b>cach�d'adre� IP</b> per a aquest "
+#~ "servidor:<br>les cerques DNS consumeixen temps i poden ser blocants en "
+#~ "algunes plataformes: aquesta opci�far�que KVIrc busqui el nom del "
+#~ "servidor d'un sol cop.<br><br> Avan�t: tamb�pots emprar aquesta opci�per "
+#~ "a for�r que un cert nom de servidor sigui resolt a una IP fixa per a quan "
+#~ "el servidor de noms estigui temporalment no disponible o vulgui evitar "
+#~ "les cerques redundants.</center>"
+
+#~ msgid "Use SSL protocol"
+#~ msgstr "Emprar protocol SSL"
+
+#~ msgid ""
+#~ "<center>This check will cause the connection to use the <b>Secure Socket "
+#~ "Layer</b> encryption support. Obviously, this server must have support "
+#~ "for this, too. :)</center>"
+#~ msgstr ""
+#~ "<center>Aquesta casella far�que per aquesta connexi�s'utilitzi el suport "
+#~ "de xifrat <b>Secure Socket Layer (SSL)</b>. Obviament, aquest servidor "
+#~ "haur�de suportar-ho tamb� :)</center>"
+
+#~ msgid "Connect to this server at startup"
+#~ msgstr "Connectar a aquest servidor a l'inici"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to connect to the IRC server when it "
+#~ "is started.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta opci�far�que KVIrc es connecti al servidor d'IRC quan "
+#~ "arranqui.</center>"
+
+#~ msgid ""
+#~ "<center>This box allows you to choose the preferred encoding for this "
+#~ "sever. If you choose \"Use Network Encoding\" then the encoding will be "
+#~ "inherited from the network that this server belongs to.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta casella li permet escollir la codificaci�preferida per a "
+#~ "aquest servidor. Si escull \"Emprar Codificaci�de Xarxa\" llavors la "
+#~ "codificaci�s'heretar�de la xarxa a la que pertanyi aquest servidor.</"
+#~ "center>"
+
+#~ msgid "Use Network Encoding"
+#~ msgstr "Emprar Codificaci�de Xarxa"
+
+#~ msgid "Link filter:"
+#~ msgstr "Filtre d'enlla�s:"
+
+#~ msgid ""
+#~ "<center>This field specifies the name of a module that exports a link "
+#~ "filter for this type of server.<br>For plain IRC connections, you don't "
+#~ "need any link filters; this is used for incompatible protocols.</center>"
+#~ msgstr ""
+#~ "<center>Aquests camp especifica el nom d'un m�ul que esporta un filtre "
+#~ "d'enlla�per aquest tipus de servidor.<br>Per a connexions IRC normals, no "
+#~ "necessites cap filtre d'enlla� aix�s'empra per a protocols incompatibles."
+#~ "</center>"
+
+#, fuzzy
+#~ msgid "Id:"
+#~ msgstr "Id"
+
+#, fuzzy
+#~ msgid "Proxy server:"
+#~ msgstr "Copiar Servidor"
+
+#, fuzzy
+#~ msgid "Direct connection"
+#~ msgstr "connexi�segura"
+
+#~ msgid ""
+#~ "<center>Here you can set a list of channels to be joined automatically "
+#~ "after a connection to this server has been established. To add a channel, "
+#~ "type its name in the text input below and click \"<b>Add</b>\".</center>"
+#~ msgstr ""
+#~ "<center>Aqu�pot posar la llista de canals als que entrar�autom�icament "
+#~ "despr� d'establir una connexi�amb aquest servidor. Per a afegir un canal, "
+#~ "escrigui el seu nom a la caixa de text inferior i premi \"<b>Afegir</b>\"."
+#~ "</center>"
+
+#~ msgid ""
+#~ "<center>The following commands will be executed after a connection has "
+#~ "been established.<br><b>Important:</b> Enter commands <b>without</b> a "
+#~ "preceding slash (e.g. <tt>quote pass secret</tt> instead of <tt>/quote "
+#~ "pass secret</tt>).<br>KVIrc will first send the USER command, then "
+#~ "eventually PASS and NICK and then execute this command sequence.<br>This "
+#~ "is particularly useful for IRC bouncers that require login commands.</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Les segents comandes ser�executades despr� que una connexi�amb "
+#~ "aquest servidor hagi sigut establerta.<br><b>Important:</b> introdueixi "
+#~ "les comandes <b>sense</b> precedir-les d'una barra (p.e. <tt>quote pass "
+#~ "secret</tt> en comptes de <tt>/quote pass secret</tt>.<br>KVIrc "
+#~ "enviar�primer la comanda USER, eventualment PASS i NICK, i despr� "
+#~ "executar�aquesta seq�cia de comandes.<br>Aix�� particularment til per a "
+#~ "repetidors IRC que necessiten ordres d'entrada.</center>"
+
+#~ msgid ""
+#~ "<center>The following commands will be executed after a successful login "
+#~ "to this server.<br><b>Important:</b> Enter commands <b>without</b> a "
+#~ "preceding slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote "
+#~ "privatelog</tt>).<br>This is useful for automatically opening queries, "
+#~ "setting variables, etc.</center>"
+#~ msgstr ""
+#~ "<center>Les segents comandes seran executades despr� que s'hagi entrat "
+#~ "correctament a aquest servidor.<br><b>Important:</b> introdueixi les "
+#~ "comandes <b>sense</b> precedir-les d'una barra (p.e. <tt>quote "
+#~ "privatelog</tt> en comptes de <tt>/quote privatelog</tt>.<br>Aix�� til "
+#~ "per a obrir privats autom�icament, inicialitzar variables, etc.</center>"
+
+#~ msgid "Server"
+#~ msgstr "Servidor"
+
+#~ msgid ""
+#~ "<center>This is the list of available IRC servers.<br>Right-click on the "
+#~ "list to add or remove servers and perform other actions.<br>Double-click "
+#~ "on a item for advanced options.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta � la llista de servidors IRC disponibles.<br>Doble click "
+#~ "a la llista per a afegir o eliminar servidors i realitzar altres accions."
+#~ "<br>Doble click en un element per a accedir a les opcions avan�des.</"
+#~ "center>"
+
+#~ msgid "New Network"
+#~ msgstr "Nova Xarxa"
+
+#~ msgid "New Server"
+#~ msgstr "Nou Servidor"
+
+#~ msgid "Remove Network/Server"
+#~ msgstr "Eliminar Xarxa/Servidor"
+
+#~ msgid "Paste Server"
+#~ msgstr "Enganxar Servidor"
+
+#~ msgid "Import List"
+#~ msgstr "Importar Llista"
+
+#~ msgid ""
+#~ "<center>This is the name of the currently selected server or network</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Aquest � el nom del servidor de la xarxa actualment triada.</"
+#~ "center>"
+
+#~ msgid ""
+#~ "<center>This check identifies IPv6 servers.<br>If enabled, KVIrc will "
+#~ "attempt to use the IPv6 protocol (thus your OS <b>must</b> have a working "
+#~ "IPv6 stack and you <b>must</b> have an IPv6 connection).</center>"
+#~ msgstr ""
+#~ "Aquest identificador identifica servidors IPv6.<br>Si s'habilita, KVIrc "
+#~ "intentar�emprar el protocol IPv6 (el seu S.O. <b>ha <b> de tenir un pila "
+#~ "IPv6 funcionant i <b>ha</b>de tenir una connexi�IPv6).</center>"
+
+#~ msgid ""
+#~ "<center>This is the default <b>port</b> that this server will be "
+#~ "contacted on.<br>Usually <b>6667</b> is OK.</center>"
+#~ msgstr ""
+#~ "<center>Aquest � el <b>port</b> per defecte en el que aquest servidor "
+#~ "ser�contactat.<br>Habitualment, <b>6667</b> � correcte.</center>"
+
+#~ msgid "<center>Click here to edit advanced options for this entry</center>"
+#~ msgstr ""
+#~ "<center>Premi aqu�per a editar les opcions avan�des d'aquesta entrada</"
+#~ "center>"
+
+#~ msgid "Connect &Now"
+#~ msgstr "Co&nnectar Ara"
+
+#~ msgid ""
+#~ "<center>Hit this button to connect to the currently selected server.</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Premi aquest bot�per a connectar-se al servidor actualment "
+#~ "seleccionat.</center>"
+
+#~ msgid ""
+#~ "<center>This button shows a list of recently used servers. It allows you "
+#~ "to quickly find them in the list.</center>"
+#~ msgstr ""
+#~ "<center>Aquest bot�mostra una llista dels servidors emprats recentment. "
+#~ "Et permet trobar-los r�idament a la llista.</center>"
+
+#~ msgid "Show this dialog at startup"
+#~ msgstr "Mostrar aquest di�eg a l'inici"
+
+#~ msgid ""
+#~ "<center>If this option is enabled, the Servers dialog will appear every "
+#~ "time you start KVIrc</center>"
+#~ msgstr ""
+#~ "<center>Si aquesta opci�est�activada, el di�eg de servidors "
+#~ "apareixer�cada vegada que arrenqui KVIrc</center>"
+
+#~ msgid "Network:"
+#~ msgstr "Xarxa:"
+
+#~ msgid "No selection"
+#~ msgstr "Sense selecci"
+
+#~ msgid "UnknownNet"
+#~ msgstr "Xarxa Desconeguda"
+
+#~ msgid "Remove Network"
+#~ msgstr "Eliminar Xarxa"
+
+#~ msgid "&New Server"
+#~ msgstr "&Nou Servidor"
+
+#~ msgid "Re&move Server"
+#~ msgstr "Eli&minar Servidor"
+
+#~ msgid "&Copy Server"
+#~ msgstr "&Copiar Servidor"
+
+#~ msgid "&Paste Server"
+#~ msgstr "Enganxar Servidor"
+
+#~ msgid "Clear List"
+#~ msgstr "Netejar Llista"
+
+#~ msgid ""
+#~ "Oops... something weird happened:<br>Can't find any module capable of "
+#~ "importing servers."
+#~ msgstr ""
+#~ "Ups... una cosa dolenta ha passat:<br>No puc trobar cap m�ul "
+#~ "capa�d'importar servidors."
+
+#~ msgid ""
+#~ "Oops... something weird happened:<br>Can't find the module that was "
+#~ "capable of this import action. :("
+#~ msgstr ""
+#~ "Ups... una cosa dolenta ha passat:<br>No puc trobar el m�ul encarregat de "
+#~ "l'acci�d'importar. :("
+
+#~ msgid "irc.unknown.net"
+#~ msgstr "irc.desconegut.net"
+
+#~ msgid ""
+#~ "This table contains the text icon associations.<br>KVirc will use them to "
+#~ "display the CTRL+I escape sequences and eventually the emoticons."
+#~ msgstr ""
+#~ "Aquesta taula cont�les associacions d'icones de text.<br>KVIrc les "
+#~ "emprar�per a visualitzar les seq�cies d'escapada CTRL+I i eventualment "
+#~ "els emoticons."
+
+#, fuzzy
+#~ msgid "Sound System"
+#~ msgstr "Sistema de so:"
+
+#~ msgid "Auto-detect"
+#~ msgstr "Detectar autom�icament"
+
+#, fuzzy
+#~ msgid "Media Player"
+#~ msgstr "Tipus de Medis"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center><b>Settings for CTCP.</b></center><p>The <b>Client-To-Client "
+#~ "Protocol</b> (CTCP) is used to transmit special control messages over an "
+#~ "IRC connection. These messages can request information from clients or "
+#~ "negotiate file transfers.<br><br></p>"
+#~ msgstr ""
+#~ "<center><b>Aquesta secci�cont�la configuraci�per a CTCP</b></"
+#~ "center><br><br><p>El <b>Client-To-Client Protocol (CTCP)</b> s'utilitza "
+#~ "per a transmetre missatges de control especials sobre una connexi�IRC. "
+#~ "Aquests missatges poden solicitar informaci�de clients o negociar "
+#~ "transfer�cies d'arxius.</p>"
+
+#, fuzzy
+#~ msgid "CTCP Replies"
+#~ msgstr "Respostes"
+
+#~ msgid "Append to VERSION reply:"
+#~ msgstr "Afegir a la resposta VERSION:"
+
+#~ msgid ""
+#~ "<center>This text will be appended to the CTCP VERSION reply.<br>For "
+#~ "example, you can place a script name here.</center>"
+#~ msgstr ""
+#~ "<center>Aquest text ser�afegit a la resposta CTCP VERSION.<br>Per "
+#~ "exemple, pots posar un nom d'script aqu�</center>"
+
+#~ msgid "Append to SOURCE reply:"
+#~ msgstr "Afegir a la resposta SOURCE:"
+
+#~ msgid ""
+#~ "<center>This text will be appended to the CTCP SOURCE reply.<br>For "
+#~ "example, you can place the source URL for a script here.</center>"
+#~ msgstr ""
+#~ "<center>Aquest text ser�afegit a la resposta CTCP SOURCE.<br>Per exemple, "
+#~ "pots posar la URL d'origen d'un script aqu�</center>"
+
+#~ msgid "USERINFO reply:"
+#~ msgstr "Resposta USERINFO:"
+
+#~ msgid ""
+#~ "<center>This is the CTCP USERINFO reply.<br>It can contain some "
+#~ "information about yourself.</center>"
+#~ msgstr ""
+#~ "<center> Aquesta � la resposta a CTCP USERINFO.<br>Pot contindre alguna "
+#~ "informaci�sobre vost�</center>"
+
+#~ msgid "PAGE reply:"
+#~ msgstr "Resposta PAGE:"
+
+#~ msgid ""
+#~ "<center>This is the CTCP PAGE reply.<br>It should contain some sort of "
+#~ "acknowledgement for CTCP PAGE messages.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta � la resposta a CTCP PAGE.<br>Hauria de contenir algun "
+#~ "tipus de reconeixement per als missatges CTCP PAGE.</center>"
+
+#~ msgid "Show the CTCP replies in the active window"
+#~ msgstr "Mostrar respostes a CTCP a la finestra activa"
+
+#~ msgid "Show dialog for CTCP page requests"
+#~ msgstr "Mostrar di�eg per a solicituts CTCP page"
+
+#~ msgid "Module '%s', Command '%s'"
+#~ msgstr "M�ul '%s', Comanda '%s'"
+
+#~ msgid "Can't rebind the command: window with id %s not found"
+#~ msgstr "No puc reassociar la comanda: finestra amb id '%s' no trobada"
+
+#~ msgid ""
+#~ "Can't rebind the command: missing window identifier after the -r switch"
+#~ msgstr ""
+#~ "No puc reassociar la comanda: s'ha perdut l'identificador de finestra "
+#~ "despr� del modificador -r"
+
+#~ msgid "Module '%s', Function '%s'"
+#~ msgstr "M�ul '%s', Funci�'%s'"
+
+#~ msgid "Identifier evaluated to \"%s\""
+#~ msgstr "Identificador avaluat a \"%s\""
+
+#~ msgid "Left operand of operator %s (%s{%s}) is undefined : assuming 0"
+#~ msgstr ""
+#~ "L'operant esquerra de l'operador %s (%s{%s}) no est�definit : assumint 0"
+
+#~ msgid "Left operand of operator %s (%s[%s]) is undefined : assuming 0"
+#~ msgstr ""
+#~ "L'operador esquerra de l'operador %s (%s[%s]) no est�definit : assumint 0"
+
+#~ msgid "Left operand of operator %s (%s) is undefined : assuming 0"
+#~ msgstr ""
+#~ "L'operador esquerra de l'operador %s (%s) no est�definit : assumint 0"
+
+#~ msgid "Variable %s{%s} evaluated to '%s' in operator %s (not a number)"
+#~ msgstr ""
+#~ "Variable %s{%s} avaluada com a '%s' en l'operador %s (no � un nmero)"
+
+#~ msgid "Variable %s[%s] evaluated to '%s' in operator %s (not a number)"
+#~ msgstr ""
+#~ "Variable %s[%s] avaluada com a '%s' en l'operador %s (no � un nmero)"
+
+#~ msgid "Variable %s evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Variable %s avaluada com a '%s' en l'operador %s (no � un nmero)"
+
+#~ msgid "Right operand of operator %s evaluated to '%s' (not a number)"
+#~ msgstr ""
+#~ "L'operant de la dreta de l'operador %s avaluat a '%s' (no � un nmero)"
+
+#~ msgid "operator %c%c"
+#~ msgstr "operador %c%c"
+
+#~ msgid "Encoding"
+#~ msgstr "Codificaci"
+
+#~ msgid "The config file with id '%s' is not open"
+#~ msgstr "L'arxiu de configuraci�'%s' no est�obert"
+
+#~ msgid "The config file with id '%s' is read only"
+#~ msgstr "L'arxiu de configuraci�amb id '%s' � de nom� lectura"
+
+#~ msgid "No nickname specified"
+#~ msgstr "No s'ha especificat nick"
+
+#~ msgid "No netmask specified"
+#~ msgstr "M�cara no especificada"
+
+#~ msgid "No property name specified"
+#~ msgstr "Propietat no especificada"
+
+#~ msgid "Missing property name"
+#~ msgstr "Falta nom de propietat"
+
+#~ msgid "The specified window (%s) is not a channel/query/DCC chat"
+#~ msgstr "La finestra especificada (%s) no � un canal/privat/DCC de xat"
+
+#~ msgid "No file specified"
+#~ msgstr "No s'ha especificat arxiu"
+
+#~ msgid "Window %s not found"
+#~ msgstr "Finestra %s no trobada"
+
+#~ msgid "Can't log to file %s"
+#~ msgstr "No puc grabar el registre a l'arxiu %s"
+
+#~ msgid "Window with id '%s' not found, returning empty string"
+#~ msgstr "Finestra amb id '%s' no trobada, retornant la cadena buida"
+
+#, fuzzy
+#~ msgid "Invalid progress value (%s)"
+#~ msgstr "Marge no v�id (%s)"
+
+#, fuzzy
+#~ msgid "Error:not enough parameters!"
+#~ msgstr "No hi ha suficients par�etres"
+
+#, fuzzy
+#~ msgid "The (%s) object is not a pixmap"
+#~ msgstr "L'objecte origen '%s' no existeix"
+
+#, fuzzy
+#~ msgid "Invalid index parameter (%s)"
+#~ msgstr "Par�etre fila no v�id (%s)"
+
+#, fuzzy
+#~ msgid "Invalid parameter"
+#~ msgstr "Par�etre no v�id"
+
+#, fuzzy
+#~ msgid "Can't find the object "
+#~ msgstr "No es pot trobar la icona '%s'"
+
+#, fuzzy
+#~ msgid "Can't set a non-widget object"
+#~ msgstr "No puc afegir un objecte no-widget"
+
+#, fuzzy
+#~ msgid "Can't find the tab object "
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#, fuzzy
+#~ msgid "Can't find the widget(%s)"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#, fuzzy
+#~ msgid "Invalid marging value (%s)"
+#~ msgstr "Marge no v�id (%s)"
+
+#, fuzzy
+#~ msgid "This object is not a toolbutton item!"
+#~ msgstr "L'objecte origen '%s' no existeix"
+
+#~ msgid "No value to insert"
+#~ msgstr "No hi ha valor per a inserir"
+
+#~ msgid "Invalid index(%s)"
+#~ msgstr "�dex no v�id(%s)"
+
+#~ msgid "No index specified"
+#~ msgstr "No s'ha especificat �dex"
+
+#~ msgid "index %u out of range"
+#~ msgstr "�dex %u fora de rang"
+
+#~ msgid "Invalid index (%s)"
+#~ msgstr "�dex no v�id (%s)"
+
+#~ msgid "Index %u out of range"
+#~ msgstr "�dex %u fora de rang"
+
+#, fuzzy
+#~ msgid "Invalid resize mode (%s): defaulting to Auto"
+#~ msgstr "Duraci�no v�ida (%s): emprant la duraci�per defecte"
+
+#~ msgid "Invalid margin value (%s)"
+#~ msgstr "Marge no v�id (%s)"
+
+#~ msgid "Invalid spacing value (%s)"
+#~ msgstr "Valor d'espaiat no v�id (%s)"
+
+#~ msgid "Invalid stretch value (%s)"
+#~ msgstr "Valor d'estirament no v�id (%s)"
+
+#~ msgid "Invalid from_row parameter (%s)"
+#~ msgstr "Par�etre desde_fila no v�id (%s)"
+
+#~ msgid "Invalid to_row parameter (%s)"
+#~ msgstr "Par�etre fins_fila no v�id (%s)"
+
+#~ msgid "Invalid from_column parameter (%s)"
+#~ msgstr "Par�etre desde_columna no v�id (%s)"
+
+#~ msgid "Invalid to_column parameter (%s)"
+#~ msgstr "Par�etre fins_columna no v�id (%s)"
+
+#, fuzzy
+#~ msgid "Invalid parameters"
+#~ msgstr "Par�etre no v�id"
+
+#, fuzzy
+#~ msgid "Can't find the widget/pixmap (%s)"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#, fuzzy
+#~ msgid "Can't find the widget object to remove (%s)"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#, fuzzy
+#~ msgid "Can't remove a non-widget object"
+#~ msgstr "No puc afegir un objecte no-widget"
+
+#, fuzzy
+#~ msgid "Can't find the widget (%s)"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#, fuzzy
+#~ msgid "Invalid zoom value (%s)"
+#~ msgstr "Marge no v�id (%s)"
+
+#, fuzzy
+#~ msgid "Invalid depth value (%s)"
+#~ msgstr "Valor d'estirament no v�id (%s)"
+
+#, fuzzy
+#~ msgid "Invalid value (%s)"
+#~ msgstr "Marge no v�id (%s)"
+
+#, fuzzy
+#~ msgid "Invalid paragraph value (%s)"
+#~ msgstr "Marge no v�id (%s)"
+
+#, fuzzy
+#~ msgid " I can't find the specified file."
+#~ msgstr "No es pot trobar l'arxiu multim�ia %s"
+
+#, fuzzy
+#~ msgid " I cannot read the file."
+#~ msgstr "No puc obrir aquest arxiu"
+
+#, fuzzy
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#~ msgid "Class %s is undefined"
+#~ msgstr "La classe %s no est�definida"
+
+#~ msgid "The source object '%s' is not existing"
+#~ msgstr "L'objecte origen '%s' no existeix"
+
+#~ msgid "The target object '%s' is not existing"
+#~ msgstr "L'objecte dest�'%s' no existeix"
+
+#~ msgid "No signal '%s' to disconnect"
+#~ msgstr "No hi ha senyal '%s' per a desconnectar"
+
+#, fuzzy
+#~ msgid "No destination specified"
+#~ msgstr "No s'ha especificat nom"
+
+#, fuzzy
+#~ msgid "Can't find the destination widget/pixmap (%s)"
+#~ msgstr "No he pogut trobar la finestra amb id '%s'"
+
+#, fuzzy
+#~ msgid "No source specified"
+#~ msgstr "No s'ha especificat un text per al socket"
+
+#, fuzzy
+#~ msgid "Can't find the source widget/pixmap (%s)"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#, fuzzy
+#~ msgid "Invalid x parameter (%s)"
+#~ msgstr "Par�etre fila no v�id (%s)"
+
+#, fuzzy
+#~ msgid "Invalid y parameter (%s)"
+#~ msgstr "Par�etre fila no v�id (%s)"
+
+#, fuzzy
+#~ msgid "Can't find the listviewitem object to add (%s)"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#, fuzzy
+#~ msgid "Invalid column (%s)"
+#~ msgstr "Par�etre columna no v�id (%s)"
+
+#~ msgid "Invalid margin parameter"
+#~ msgstr "Par�etre marge no v�id"
+
+#~ msgid "Unknown alignment: %s"
+#~ msgstr "Alineaci�desconeguda: %s"
+
+#~ msgid "Unknown frame / shadow style: %s"
+#~ msgstr "Marc desconegut / estil d'ombra: %s"
+
+#~ msgid "Hey ! You wanna know my echo mode or what ?"
+#~ msgstr "Eh! Vols con�xer el meu mode d'eco o qu�"
+
+#~ msgid "Unknown echo mode"
+#~ msgstr "Mode d'eco desconegut"
+
+#, fuzzy
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#, fuzzy
+#~ msgid "Invalid object."
+#~ msgstr "Objecte no v�id"
+
+#, fuzzy
+#~ msgid "Can't setStretchableWidget a non-widget object."
+#~ msgstr "No puc afegir un objecte no-widget"
+
+#, fuzzy
+#~ msgid "Can't find the popupmenu object to add (%s)"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#, fuzzy
+#~ msgid "Can't find the widget object (%s)"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#, fuzzy
+#~ msgid "Invalid columns value (%s)"
+#~ msgstr "Marge no v�id (%s)"
+
+#, fuzzy
+#~ msgid "Invalid size value (%s)"
+#~ msgstr "Valor d'espaiat no v�id (%s)"
+
+#, fuzzy
+#~ msgid "Invalid icon identifier"
+#~ msgstr "Id de context irc no v�id"
+
+#~ msgid ""
+#~ "Can't set the current avatar to '%s': failed to start the http transfer"
+#~ msgstr ""
+#~ "No puc posar l'avatar actual a '%s': ha fallat l'inic de la transfer�cia "
+#~ "http"
+
+#~ msgid "Can't set the current avatar to '%s': can't load the image"
+#~ msgstr "No puc posar el avatar actual a '%s': no puc carregar la imatge"
+
+#~ msgid "No environment variable name given"
+#~ msgstr "No es troba la variable d'entorn donada"
+
+#~ msgid "Can't find the window with id '%s'"
+#~ msgstr "No he pogut trobar la finestra amb id '%s'"
+
+#~ msgid "The specified window (%s) is not a channel"
+#~ msgstr "La finestra especificada (%s) no � un canal"
+
+#~ msgid "No button name specified!"
+#~ msgstr "No s'ha especificat nom de bot�"
+
+#~ msgid ""
+#~ "The action \"%1\" is already defined as core action: choosing an "
+#~ "alternate name"
+#~ msgstr ""
+#~ "L'acci�\"%1\" ja est�definida com una acci�principal: esculli un nom "
+#~ "alternatiu"
+
+#~ msgid "No separator name specified"
+#~ msgstr "No s'ha especificat nom de separador"
+
+#~ msgid "No toolbar id specified"
+#~ msgstr "No s'ha especificat un id de barra d'eines"
+
+#~ msgid "The action \"%s\" doesn't exist"
+#~ msgstr "L'acci�\"%s\" no existeix"
+
+#~ msgid "Invalid IRC context id '%s'"
+#~ msgstr "Id '%s' de context d'IRC no v�id"
+
+#, fuzzy
+#~ msgid "Background not found %s "
+#~ msgstr "Color de fons"
+
+#~ msgid "Mask %s is already used to identify user %s"
+#~ msgstr "La m�cara %s ja s'empra per a identificar a l'usuari %s"
+
+#~ msgid "User not found (%s)"
+#~ msgstr "Usuari no trobat (%s)"
+
+#~ msgid "User %s not found"
+#~ msgstr "Usuari %s no trobat"
+
+#~ msgid "Mask %s already used to identify user %s"
+#~ msgstr "M�cara %s ja emprada per a identificar a l'usuari %s"
+
+#~ msgid "Mask %s not found"
+#~ msgstr "M�cara %s no trobada"
+
+#~ msgid "Sound file '%s' not found"
+#~ msgstr "Arxiu de so '%s' no trobat"
+
+#~ msgid "Unable to play sound '%s'"
+#~ msgstr "No � possible reproduir el so '%s'"
+
+#, fuzzy
+#~ msgid "The specified name is empty"
+#~ msgstr "No existeix la barra d'eines especificada"
+
+#, fuzzy
+#~ msgid "The specified description is empty"
+#~ msgstr "No existeix la barra d'eines especificada"
+
+#, fuzzy
+#~ msgid "The specified KVIrc version \"%s\" is not a valid version string"
+#~ msgstr "El temps UNIX especificat no � v�id (%s)"
+
+#~ msgid "Destination file exists: no copy made"
+#~ msgstr "L'arxiu de dest�existeix: no s'ha fet c�ia"
+
+#~ msgid "Failed to copy %s to %s"
+#~ msgstr "Errada al copiar %s a %s"
+
+#~ msgid "Failed to write to file %s"
+#~ msgstr "Errada al escriure l'arxiu %s"
+
+#~ msgid "Failed to rename %s to %s"
+#~ msgstr "Errada al renombrar %s a %s"
+
+#~ msgid "Failed to make the directory %s"
+#~ msgstr "Errada al crear el directori %s"
+
+#~ msgid "Failed to remove the file %s"
+#~ msgstr "Errada al borrar l'arxiu %s"
+
+#~ msgid "Failed to remove the directory %s"
+#~ msgstr "Errada al borrar el directori %s"
+
+#~ msgid "The specified directory does not exist '%s'"
+#~ msgstr "El directori especificat no existeix '%s'"
+
+#~ msgid "Can't open the file \"%s\" for reading"
+#~ msgstr "No puc obrir l'arxiu \"%s\" per a lectura"
+
+#~ msgid "Read error for file %s"
+#~ msgstr "Error de lectura per a l'arxiu %s"
+
+#~ msgid ""
+#~ "Read error for file %s (have been unable to read the requested size in "
+#~ "1000 retries)"
+#~ msgstr ""
+#~ "Error de lectura de l'arxiu %s (no s'ha pogut llegir la mida solicitada "
+#~ "en 1000 reintents)"
+
+#~ msgid "No such options page class name"
+#~ msgstr "No existeixen aquestes opcions a la p�ina del nom de la classe"
+
+#, fuzzy
+#~ msgid "%Q is not an integer"
+#~ msgstr "El men emergent %Q no est�definit"
+
+#~ msgid "Window with caption '%s' not found, returning 0"
+#~ msgstr "Finestra amb t�ol '%s' no trobat, retornant 0"
+
+#~ msgid "The specified UNIX time is not valid (%s)"
+#~ msgstr "El temps UNIX especificat no � v�id (%s)"
+
+#~ msgid "The specified time format is not valid (%s)"
+#~ msgstr "El format de temps especificat no � v�id (%s)"
+
+#~ msgid "No option named '%s'"
+#~ msgstr "No existeix l'opci�anomenada '%s'"
+
+#~ msgid "No option name specified"
+#~ msgstr "No s'ha especificat el nom de l'opci"
+
+#, fuzzy
+#~ msgid "No link text specified"
+#~ msgstr "No s'ha especificat �dex"
+
+#~ msgid "$sw should be called only in aliases"
+#~ msgstr "$sw nom� hauria de ser cridat en cas d'�ies"
+
+#~ msgid "Broken prologue code for menu '%s', error detail follows"
+#~ msgstr "Codi de pr�eg per a men '%s' erroni, segueixi el detall de l'error"
+
+#~ msgid "Broken expression for menu item '%Q', ignoring"
+#~ msgstr "Expressi�erronia per a l'element '%Q' del men, ignorant"
+
+#~ msgid "Can't find the external popup '%Q', ignoring"
+#~ msgstr "No puc trobar el men emergent extern '%Q', ignorant"
+
+#~ msgid "Broken epilogue code for menu '%s', error details follow"
+#~ msgstr "Codi d'ep�eg per a men '%s' erroni, segueixi el detall de l'error"
+
+#~ msgid "Function name expected"
+#~ msgstr "S'esperava un nom de funci"
+
+#~ msgid "No catalogue %s for the current language found"
+#~ msgstr "No s'ha trobat el cat�eg%ss per al llenguatge actual"
+
+#~ msgid "The catalogue %s was not loaded"
+#~ msgstr "El cat�eg %s no ha sigut carregat"
+
+#~ msgid "Invalid icon specification '%s', using default"
+#~ msgstr "Especificaci�d'icona '%s' no v�ida, emprant el valor per defecte"
+
+#~ msgid "Missing icon number after the 'i' switch"
+#~ msgstr "Falta el nmero d'icona despr� del modificador 'i'"
+
+#~ msgid "Missing window ID after the 'w' switch"
+#~ msgstr "Falta el ID de finestre despr� del modificador 'w'"
+
+#~ msgid "No targets specified"
+#~ msgstr "No hi ha destins especificats"
+
+#~ msgid "Missing new nickname"
+#~ msgstr "Falta nou nick"
+
+#~ msgid "Missing target"
+#~ msgstr "Falta dest"
+
+#~ msgid "Missing target channel"
+#~ msgstr "Falta el canal de dest"
+
+#~ msgid "No such object (%s)"
+#~ msgstr "No existeix l'objecte (%s)"
+
+#~ msgid "Invalid screen coordinates"
+#~ msgstr "Coordenades de pantalla no v�ides"
+
+#~ msgid "Invalid syntax for the screen coordinates"
+#~ msgstr "Sintaxis no v�ida per a les coordenades de pantalla"
+
+#~ msgid "Invalid timeout delay '%s'"
+#~ msgstr "Retr� del temps d'expiraci�no v�id '%s'"
+
+#~ msgid "Empty command block for timer '%s', timer not started"
+#~ msgstr ""
+#~ "Bloc de comandes buit per al cron�etre '%s', no s'ha iniciat el compte"
+
+#~ msgid ""
+#~ "Internal error: Unable to add timer %s, insufficient system resources"
+#~ msgstr ""
+#~ "Error intern: no s'ha pogut afegir el cron�etre %s, no hi ha suficients "
+#~ "recursos al sistema"
+
+#~ msgid "No such timer (%s)"
+#~ msgstr "No existeix el cron�etre (%s)"
+
+#~ msgid "No such event (%s)"
+#~ msgstr "No existeix l'event (%s)"
+
+#~ msgid "No handler '%s' for raw numeric event '%d'"
+#~ msgstr "No hi ha un manipulador %s' per a l'event num�ic raw '%d'"
+
+#~ msgid "No handler '%s' for event '%s'"
+#~ msgstr "No hi ha manipulador '%s' per a l'event '%s'"
+
+#~ msgid "Failed to execute command '%s'"
+#~ msgstr "Errada a l'executar la comanda '%s'"
+
+#~ msgid "Invalid IRC url (%s)"
+#~ msgstr "url IRC no v�ida (%s)"
+
+#~ msgid "The commandline for this url type seems to be broken (%s)"
+#~ msgstr ""
+#~ "La l�ia de comandes per aquest tipus d'url sembla estar malament (%s)"
+
+#~ msgid "No commandline specified for this type of url (%s)"
+#~ msgstr "No s'ha especificat l�ia de comandes per a aquest tipus d'url (%s)"
+
+#~ msgid "Invalid pitch (%s): using default"
+#~ msgstr "To no v�id (%s): emprant el to per defecte"
+
+#~ msgid "Invalid duration (%s): using default"
+#~ msgstr "Duraci�no v�ida (%s): emprant la duraci�per defecte"
+
+#~ msgid "Can't find the icon '%s'"
+#~ msgstr "No es pot trobar la icona '%s'"
+
+#~ msgid "Window button '%s' not found"
+#~ msgstr "Bot�de finestra '%s' no trobat"
+
+#~ msgid "Can't rebind the command sequence: missing window identifier"
+#~ msgstr ""
+#~ "No he pogut reassociar la seq�cia de comandes: perdut l'identificador de "
+#~ "finestra"
+
+#~ msgid "Can't rebind the command sequence: window with id %s not found"
+#~ msgstr ""
+#~ "No he pogut reasssociar la seq�cia de comandes: finestra amb id %s no "
+#~ "trobada"
+
+#~ msgid "Unmatched parenthesis in expression body: ignoring trailing garbage"
+#~ msgstr "Par�tesis perdut en el cos de l'expressi� ignorant car�ters segents"
+
+#~ msgid "Error triggered from timer callback handler %c'%s'"
+#~ msgstr "Error llan�nt des del manipulador de callback del cron�etre %c'%s'"
+
+#~ msgid "Timer callback handler '%s' is broken: killing"
+#~ msgstr "El manipulador de callback del cron�etre '%s' � erroni: aturant"
+
+#, fuzzy
+#~ msgid "Initializing scripting engine..."
+#~ msgstr "Motor de xifrat no v�id"
+
+#~ msgid "Loading actions..."
+#~ msgstr "Carregant accions..."
+
+#~ msgid "Loading icons..."
+#~ msgstr "Carregant icones..."
+
+#~ msgid "Loading window configuration database..."
+#~ msgstr "Carregant base de dades de la configuraci�de finestres..."
+
+#~ msgid "Loading server & proxy database..."
+#~ msgstr "Carregant la base de dades de servidors y proxys..."
+
+#~ msgid "Loading event handlers..."
+#~ msgstr "Carregant manipuladors d'events..."
+
+#~ msgid "Loading raw event handlers..."
+#~ msgstr "Carregant manipuladors d'events plans..."
+
+#~ msgid "Loading popups..."
+#~ msgstr "Carregant mens desplegables..."
+
+#~ msgid "Loading toolbars..."
+#~ msgstr "Carregant barres d'eines..."
+
+#~ msgid "Loading text icon associations..."
+#~ msgstr "Carregant associacions d'icones textuals"
+
+#~ msgid "Loading recent entries..."
+#~ msgstr "Carregant entrades recents"
+
+#~ msgid "Loading media types..."
+#~ msgstr "Carregant tipus de medis..."
+
+#~ msgid "Loading registered users..."
+#~ msgstr "Carregant usuaris registrats..."
+
+#~ msgid "Loading registered channels..."
+#~ msgstr "Carregant canals registrats..."
+
+#~ msgid "Loading file trader configuration..."
+#~ msgstr "Carregant configuraci�de compartici�d'arxius..."
+
+#~ msgid "Loading nick serv service configuration..."
+#~ msgstr "Carregant configuraci�de nick serv..."
+
+#~ msgid "Loading history entries..."
+#~ msgstr "Carregant entrades a l'hist�ic..."
+
+#~ msgid "Loading avatar cache..."
+#~ msgstr "Carregant cach�de l'avatar..."
+
+#~ msgid "Starting up the engine..."
+#~ msgstr "Iniciant el motor..."
+
+#~ msgid "Have fun! :)"
+#~ msgstr "Passa-t'ho b� :)"
+
+#~ msgid "Show Ban Editor"
+#~ msgstr "Mostrar Editor de Prohibicions"
+
+#~ msgid "Show Crypto Controller"
+#~ msgstr "Mostrar Controlador de Xifrat"
+
+#~ msgid "Toggle Notify List"
+#~ msgstr "Alternar Llista de Notificacions"
+
+#~ msgid "Initiating startup sequence..."
+#~ msgstr "Iniciant seq�cia d'inici..."
+
+#~ msgid "&New Alias"
+#~ msgstr "&Nou �ies"
+
+#~ msgid "Loading options..."
+#~ msgstr "Carregant opcions..."
+
+#~ msgid "defpopup: internal error"
+#~ msgstr "defpopup: error intern"
+
+#, fuzzy
+#~ msgid "User Messages"
+#~ msgstr "Missatge del sistema"
+
+#~ msgid "Transport"
+#~ msgstr "Transport"
+
+#, fuzzy
+#~ msgid "The specified window does not exist"
+#~ msgstr "No existeix la barra d'eines especificada"
+
+#, fuzzy
+#~ msgid "No url specified"
+#~ msgstr "No s'ha especificat un text per al socket"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %s"
+#~ msgstr "Errada al comen�r el proc�"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %Q"
+#~ msgstr "Errada al comen�r el proc�"
+
+#, fuzzy
+#~ msgid "<unknown size>"
+#~ msgstr "desconegut"
+
+#, fuzzy
+#~ msgid "Unable to get address of interface %Q"
+#~ msgstr "Escoltar en adre�/interf�ie:"
+
+#, fuzzy
+#~ msgid "Missing target nickname"
+#~ msgstr "Falta nou nick"
+
+#, fuzzy
+#~ msgid "Missing filename"
+#~ msgstr "Falta el nom del cron�etre"
+
+#, fuzzy
+#~ msgid "The file size is not an positive number"
+#~ msgstr "La finestra especificada no � un canal"
+
+#, fuzzy
+#~ msgid "Invalid sample rate '%s', defaulting to 8000"
+#~ msgstr "Duraci�no v�ida (%s): emprant la duraci�per defecte"
+
+#, fuzzy
+#~ msgid "The current window has no associated DCC session"
+#~ msgstr "Aquesta finestra no t�context d'IRC associat"
+
+#, fuzzy
+#~ msgid "The first parameter must be an unsigned number"
+#~ msgstr "La finestra especificada no � un canal"
+
+#, fuzzy
+#~ msgid "No filename specified"
+#~ msgstr "No s'ha especificat nom"
+
+#, fuzzy
+#~ msgid "The file '%s' is not readable"
+#~ msgstr "El men emergent '%s' no est�definit"
+
+#, fuzzy
+#~ msgid "Invalid timeout, ignoring"
+#~ msgstr "Temps d'expiraci�no v�id"
+
+#, fuzzy
+#~ msgid "Invalid visible name: using default"
+#~ msgstr "To no v�id (%s): emprant el to per defecte"
+
+#, fuzzy
+#~ msgid "Ops..failed to add the sharedfile..."
+#~ msgstr "Ha fallat la c�rega de l'arxiu d'imatge triat"
+
+#, fuzzy
+#~ msgid "The specified file size is invalid"
+#~ msgstr "El temps UNIX especificat no � v�id (%s)"
+
+#~ msgid "[Parser warning in '%s']: %s"
+#~ msgstr "[Av� del parser en '%s']: %s"
+
+#, fuzzy
+#~ msgid "Windows XP style"
+#~ msgstr "Llista de Finestres"
+
+#, fuzzy
+#~ msgid " I can't find the specified file %s."
+#~ msgstr "No es pot trobar l'arxiu multim�ia %s"
+
+#~ msgid "-e mode change change"
+#~ msgstr "canvi de mode -e"
+
+#~ msgid "Missing file name to parse"
+#~ msgstr "Falta el nom de l'arxiu a analitzar"
+
+#~ msgid "A popup name is expected as parameter"
+#~ msgstr "S'espera un nom de men emergent com a par�etre"
+
+#~ msgid "%Q [%Q@%Q] unsets avatar (%Q %Q)"
+#~ msgstr "%Q [%Q@%Q] treu el avatar (%Q %Q)"
+
+#~ msgid ""
+#~ "Can't set the current avatar to '%s' (failed to start the http transfer): "
+#~ "no message sent"
+#~ msgstr ""
+#~ "No puc posar l'avatar actual a '%s' (ha fallat l'inici de la transfer�cia "
+#~ "http): no s'ha enviat el missatge"
+
+#~ msgid ""
+#~ "Can't set the current avatar to '%s' (can't load the image): no message "
+#~ "sent"
+#~ msgstr ""
+#~ "No puc posar l'actual avatar a '%s' (no puc carregar la imatge): no s'ha "
+#~ "enviat el missatge"
+
+#~ msgid "No socket text specified"
+#~ msgstr "No s'ha especificat un text per al socket"
+
+#~ msgid "&Export Alias To..."
+#~ msgstr "&Exportar �ies a..."
+
+#~ msgid "Avatars"
+#~ msgstr "Avatars"
+
+#, fuzzy
+#~ msgid "The script \"%1\" does not exist"
+#~ msgstr "L'acci�\"%1\" no existeix"
+
+#~ msgid "Defaults"
+#~ msgstr "Per defecte"
+
+#~ msgid "Folders"
+#~ msgstr "Directoris"
+
+#~ msgid "Message Format"
+#~ msgstr "Format de Missatge"
+
+#~ msgid "Parser"
+#~ msgstr "Analitzador"
+
+#~ msgid "Configure KVIrc"
+#~ msgstr "Configurar KVIrc"
+
+#~ msgid "Show alias editor"
+#~ msgstr "Mostrar editor d'alias"
+
+#~ msgid "Show event editor"
+#~ msgstr "Mostra editor d'events"
+
+#~ msgid "Show popup editor"
+#~ msgstr "Mostra editor de mens emergents"
+
+#~ msgid "Show raw event editor"
+#~ msgstr "Mostra editor d'envents raw"
+
+#~ msgid "Show toolbar editor"
+#~ msgstr "Mostra editor de barres d'eines"
+
+#~ msgid "New code tester"
+#~ msgstr "Comprovador de codi nou"
+
+#~ msgid "Unnamed"
+#~ msgstr "Sense nom"
+
+#~ msgid "&Toolbars..."
+#~ msgstr "Barres d'eines..."
+
+#~ msgid "&Script Tester"
+#~ msgstr "Comprovador d'&Scripts"
+
+#~ msgid "&New IRC Context"
+#~ msgstr "&Nou Context d'IRC"
+
+#~ msgid "runtime warning"
+#~ msgstr "av�en execuci"
+
+#~ msgid "compilation warning"
+#~ msgstr "av�de compilaci"
+
+#~ msgid "runtime error"
+#~ msgstr "error d'execuci"
+
+#~ msgid "Missing data to evaluate"
+#~ msgstr "Falta dada per avaluar"
+
+#~ msgid "Missing hash for key evaluation"
+#~ msgstr "Falta hash per a l'avaluaci�de la clau"
+
+#~ msgid "The argument evaluated to type '%Q' while a hash was expected"
+#~ msgstr "L'argument s'ha avalat com de tipus '%Q' quan s'esperava un hash"
+
+#~ msgid "$sw expects a switch letter as parameter"
+#~ msgstr "$sw espera una lletra de canvi com a par�etre"
+
+#~ msgid "Can't find a running winamp window"
+#~ msgstr "No puc trobar una finestra de winamp funcionant"
+
+#~ msgid "Can't load the xmms library (libxmms.so)"
+#~ msgstr "No puc carregar la llibreria xmms (libxmms.so)"
+
+#~ msgid "Can't find symbol %s in libxmms.so"
+#~ msgstr "No trobo el s�bol %s a libxmms.so"
+
+#~ msgid ""
+#~ "The winamp plugin has not been installed properly. Check /help $mp3player."
+#~ "gettitle"
+#~ msgstr ""
+#~ "El plugin de winamp no s'ha installat correctament. Consulta /help "
+#~ "$mp3player.gettitle"
+
+#~ msgid "Frame window titlebar text:"
+#~ msgstr "Text del t�ol del marc de la finestra:"
+
+#~ msgid "Enable automatic NickServ identification"
+#~ msgstr "Activar identificaci�NickServ autom�ica"
+
+#~ msgid ""
+#~ "<center>This is a list of NickServ identification rules. KVIrc will use "
+#~ "them to model its automatic interaction with NickServ.<br>Please be aware "
+#~ "that this feature can cause your NickServ passwords to be stolen if used "
+#~ "improperly. Follow the suggestions in the tooltips and make sure that you "
+#~ "fully understand the NickServ authentication protocol.<br>In other words, "
+#~ "be sure to know what you're doing.<br>Also note that the password that "
+#~ "you provide is stored as <b>PLAIN TEXT</b>.Right-click to add/remove "
+#~ "rules.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta � la llista de regals d'identificaci�de NickServ. KVIrc "
+#~ "les emprar�per a la seva interacci�autom�ica amb NickServ.<br>Si us plau, "
+#~ "tingui present que aquesta caracter�tica pot provocar que les seves claus "
+#~ "de NickServ siguin robades si s'utilitza indegudament. Segueixi les "
+#~ "sugger�cies dels tooltips i asseguris que enten b�el protocol "
+#~ "d'autentificaci�NickServ.<br>En altres paraules, asseguris de que sap el "
+#~ "que est�fent.<br>Pensi que la clau que proporciona � emmagatzemada a "
+#~ "<b>TEXT PLA</b>.Premi el bot�dret del ratol�per a afegir/esborra regles.</"
+#~ "center>"
+
+#~ msgid "Identification Rule"
+#~ msgstr "Regla d'Identificaci"
+
+#~ msgid ""
+#~ "<center>This is the nickname that this rule will attempt to authenticate "
+#~ "with NickServ, i.e. the nickname that you have registered with NickServ</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Aquest � el nick que emprar�aquesta regla per a intentar "
+#~ "autentificar-se amb NickServ, p.e., el nick amb el que s'hagi registrat "
+#~ "amb NickServ</center>"
+
+#~ msgid ""
+#~ "<center>This is a mask that defines the server(s) that this "
+#~ "identification rule will apply to. For a single server, this option "
+#~ "should just be a hostname like <b>irc.webchat.org</b>. You can use "
+#~ "wildcards to match multiple servers, e.g. <b>*.freenode.net</b> will work "
+#~ "on the whole freenode network (by matching any server names that end in "
+#~ "\".freenode.net\").<br>Please note that some servers have more than one "
+#~ "name. For example, <b>irc.eu.dal.net</b> redirects to a \"random\" DALNet "
+#~ "server, so the real server name will be different. You must provide the "
+#~ "name that the server calls itself, usually displayed in the console "
+#~ "window title.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta � la m�cara que defineix el servidor(s) al que "
+#~ "s'aplicar�aquesta regla. Per a un nic servidor, aquesta opci�hauria de "
+#~ "ser nom� un nom de m�uina com <b>irc.irc-catalunya.org</b>. Pot emprar "
+#~ "comodins per a conconrdar amb mltiples servidors, p.e., <b>*.freenode."
+#~ "net</b> funcionar�amb la xarxa completa de Freenode (concordant amb "
+#~ "qualsevol servidor que acabi en \".freenode.org\").<br>Donis compte que "
+#~ "alguns servidors tenen m� d'un nom. Per exemple, <b>irc.eu.dal.net</b> "
+#~ "redirecciona a un servidor \"aleatori\" de DALNet, per el que el nom del "
+#~ "servidor real ser�diferent. Ha de proporcionar el nom pel que el servidor "
+#~ "es crida a si mateix, habitualment mostrat en el t�ol de la finestra de "
+#~ "consola.</center>"
+
+#~ msgid "NickServ mask:"
+#~ msgstr "M�cara NickServ:"
+
+#~ msgid ""
+#~ "<center>This is the mask that NickServ must match to be correctly "
+#~ "identified as the NickServ service. This usually will be something like "
+#~ "<b>[email protected]</b>.<br>You can use wildcards for "
+#~ "this field, but generally it is a security flaw. If you're absolutely "
+#~ "sure that NO user on the network can use the nickname \"NickServ\", the "
+#~ "mask <b>NickServ!*@*</b> may be safe to use in this field.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta � la m�cara que ha de concordar amb NickServ per a ser "
+#~ "correctament identificat amb el servei NickServ. Habitualment ser�una "
+#~ "cosa com <b>[email protected]</b>.<br>Pot emprar comodins "
+#~ "per aquest camp, per�generalment � una errada de seguretat. Si est�100% "
+#~ "segur que CAP usuari a la xarxa pot emprar el nick \"NickServ\", pot ser "
+#~ "segur emprar la m�cara <b>NickServ!*@*</b> en aquest camp.</center>"
+
+#~ msgid "Identify command:"
+#~ msgstr "Comanda d'identificaci�"
+
+#~ msgid ""
+#~ "<center>This is the command that will be executed when NickServ requests "
+#~ "authentication for the nickname described in this rule (if the both "
+#~ "server and NickServ mask are matched). This usually will be something "
+#~ "like <b>msg NickServ identify &lt;yourpassword&gt;</b>.<br>You can use "
+#~ "<b>msg -q</b> if you don't want the password echoed on the screen. Please "
+#~ "note that there is no leading slash in this command.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta � la comanda que ser�executada quan NickServ soliciti "
+#~ "autentificaci�per al nick descrit en aquesta regla (si ambdues m�cares, "
+#~ "la del servidor i la de NickServ, concorden). Habitualment ser�una cosa "
+#~ "com <b>msg NickServ identify &lt;latevaclau&gt;</b>.<br>Pot emprar <b>msg "
+#~ "-q</b> si no vol que la clau aparegui per pantalla. Si us plau, observi "
+#~ "que aquesta comanda no comen� amb una barra (/).</center>"
+
+#~ msgid "&New Rule"
+#~ msgstr "&Nova Regla"
+
+#~ msgid "Re&move Rule"
+#~ msgstr "Eli&minar Regla"
diff --git a/po/kvirc/kvirc_cs.po b/po/kvirc/kvirc_cs.po
new file mode 100644
index 00000000..e73bdc49
--- /dev/null
+++ b/po/kvirc/kvirc_cs.po
@@ -0,0 +1,16315 @@
+# translation of kvirc_cs.po to czech
+# Czech translation of Kvirc 3.0.
+# Copyright (C) 2004 THE Kvirc 3.0'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the Kvirc 3.0 package.
+# Dusan Hokuv <[email protected]>, 2004.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: kvirc-3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-12-17 11:31+0100\n"
+"Last-Translator: Dusan Hokuv <[email protected]>\n"
+"Language-Team: Czech <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:696
+msgid "&Cascade Windows"
+msgstr "Okna &Přes sebe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:697
+msgid "Cascade &Maximized"
+msgstr "Přes sebe &maximalizovaně"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:700
+msgid "&Tile Windows"
+msgstr "Okna &Vedle sebe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:703
+msgid "&Auto Tile"
+msgstr "&Auto vedle sebe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:708
+msgid "Anodine's Full Grid"
+msgstr "Anodine plná mřížka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:710
+msgid "Pragma's Horizontal 4-Grid"
+msgstr "Pragma horizontání 4-mřížka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:712
+msgid "Pragma's Vertical 4-Grid"
+msgstr "Pragma vertikální 4-mřížka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:714
+msgid "Pragma's Horizontal 6-Grid"
+msgstr "Pragma horizontání 6-mřížka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:716
+msgid "Pragma's Vertical 6-Grid"
+msgstr "Pragma vertikální 6-mřížka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:718
+msgid "Pragma's Horizontal 9-Grid"
+msgstr "Pragma horizontání 9-mřížka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:720
+msgid "Pragma's Vertical 9-Grid"
+msgstr "Pragma vertikální 4-mřížka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:726
+msgid "Tile Met&hod"
+msgstr "Způ&sob vedle sebe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:729
+msgid "Expand &Vertically"
+msgstr "Rozšířit &Vertikálně"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:730
+msgid "Expand &Horizontally"
+msgstr "Rozšířit &Horizontálně"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:733
+msgid "Mi&nimize All"
+msgstr "Mi&nimalizovat vše"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_actiondrawer.cpp:64
+msgid "Script"
+msgstr "Skript"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:581
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:634
+msgid "Unknown"
+msgstr "Neznámý"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:128
+msgid "No topic message has been received from the server yet"
+msgstr "Zatím nebyla ze serveru poslána žádná zpráva o tématu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:495
+msgid "Channel topic:"
+msgstr "Téma kanálu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:513
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:201
+msgid "Set by"
+msgstr "Nastavil"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:519
+msgid "Set on"
+msgstr "Nastaveno v"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:525
+msgid "Double-click to edit..."
+msgstr "Dvojklik pro úpravy..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:530
+msgid "No topic is set"
+msgstr "Není nastaveno žádné téma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:533
+msgid "Double-click to set..."
+msgstr "Dvojklik pro nastavení..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:587
+msgid "History"
+msgstr "Historie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:596
+msgid "Commit Changes"
+msgstr "Provést změny"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:602
+msgid "Discard Changes"
+msgstr "Zahodit změny"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:627
+msgid "Copy to clipboard"
+msgstr "Kopírovat do schránky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:988
+msgid "There are active connections, are you sure you wish to "
+msgstr "Jsou zde aktivní spojení, opravdu chcete "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:989
+msgid "quit KVIrc?"
+msgstr "ukončit KVIrc?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:587
+msgid "Confirmation - KVIrc"
+msgstr "Potvrzení - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:557
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:590
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&Yes"
+msgstr "&Ano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:556
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:589
+msgid "&Always"
+msgstr "&Vždy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:591
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&No"
+msgstr "&Ne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1090
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1106
+msgid "Show %1"
+msgstr "Zobrazit %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1134
+msgid "Customize..."
+msgstr "Upravit..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:149
+#, c-format
+msgid "The file %s already exists.<br>Do you wish to overwrite it?"
+msgstr "Soubor %s již existuje.<br>Chcete jej přepsat?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:150
+msgid "File Exists - KVIrc"
+msgstr "Soubor existuje - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:132
+msgid "Channel mode"
+msgstr "Mód kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:162
+msgid "Split View"
+msgstr "Rozdělit pohled"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:207
+msgid "User List"
+msgstr "Seznam uživatelů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:167
+msgid "Ban Editor"
+msgstr "Editor banů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:172
+msgid "Ban Exception Editor"
+msgstr "Editor vyjímek banů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:179
+msgid "Invite Exception Editor"
+msgstr "Editor vyjímek pozvání"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:184
+msgid "Mode Editor"
+msgstr "Editor módů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "said something recently"
+msgstr "řekl něco naposledy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "is talking"
+msgstr "mluví"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:684
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:699
+msgid "and"
+msgstr "a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "were talking recently"
+msgstr "mluvili naposledy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "are talking"
+msgstr "mluví"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:707
+msgid "and other %1 users"
+msgstr "a ostatních %1 uživatelů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:738
+msgid "Dead channel"
+msgstr "Mrtvý kanál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:753
+msgid "operator"
+msgstr "operátor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:754
+msgid "operators"
+msgstr "operátorů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active user"
+msgstr "aktivní uživatel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active users"
+msgstr "aktivních uživatelů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot user"
+msgstr "velmi aktivní uživatel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot users"
+msgstr "velmi aktivních uživatelů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owner"
+msgstr "vlastník kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owners"
+msgstr "vlastníci kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrator"
+msgstr "administrátor kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrators"
+msgstr "administrátoři kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operator"
+msgstr "polo-operátor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operators"
+msgstr "polo-operátorů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced user"
+msgstr "uživatel s voice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced users"
+msgstr "uživatelů s voice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operator"
+msgstr "uživatel-operátor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operators"
+msgstr "uživatel-operátoři"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "user total"
+msgstr "uživatel celkem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "users total"
+msgstr "uživatelů celkem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:931
+msgid "No activity"
+msgstr "Žádná aktivita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:932
+msgid "Minimal activity"
+msgstr "Minimální aktivita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:933
+msgid "Very low activity"
+msgstr "Velmi nízká aktivita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Might be low activity"
+msgstr "Asi nízká aktivita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Low activity"
+msgstr "Nízká aktivita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Might be medium activity"
+msgstr "Asi střední aktivita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Medium activity"
+msgstr "Střední aktivita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "Might be high activity"
+msgstr "Asi vysoká aktivita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "High activity"
+msgstr "Vysoká aktivita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Might be very high activity"
+msgstr "Asi velmi vysoká aktivita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Very high activity"
+msgstr "Velmi vysoká aktivita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Might be flooded with messages"
+msgstr "Asi flooder se zprávami"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Flooded with messages"
+msgstr "Flooder se zprávami"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:946
+msgid "human"
+msgstr "lidí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:966
+msgid "[Dead channel]"
+msgstr "[Mrtvý kanál]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1020
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1122
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:459
+msgid " on "
+msgstr " na "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1086
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %Q, no "
+"data sent to the server"
+msgstr ""
+"Šifrovací nástroj nemůže zašifrovat zvolenou zprávu (%Q): %Q, data neposlána "
+"na server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1403
+msgid "Sent part request, waiting for reply..."
+msgstr "Poslán part požadavek, čeká se na odezvu..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:610
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:647
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:293
+msgid "(Unknown)"
+msgstr "(Neznámý)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1484
+msgid "<b>Channel mode:</b>"
+msgstr "<b>Mód kanálu:</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1498
+#, c-format
+msgid "<br><b>Key:</b> %s"
+msgstr "<br><b>Klíč:</b> %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1505
+#, c-format
+msgid "<br><b>Limit:</b> %s"
+msgstr "<br><b>Limit:</b> %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1590
+#, c-format
+msgid "Channel synchronized in %d.%d seconds"
+msgstr "Kanál synchronizován během %d.%d sekund"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:139
+msgid "Choose an Image File - KVIrc"
+msgstr "Vyberte soubor obrázku - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:284
+#, c-format
+msgid "Unloadable: %s"
+msgstr "Nečitelný: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:260
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:90
+msgid "&Browse..."
+msgstr "&Procházet..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:364
+msgid "Choose a File - KVIrc"
+msgstr "Vyberte soubor - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:382
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:593
+msgid "Choose a Directory - KVIrc"
+msgstr "Zvolte adresář - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:764
+msgid "A&dd"
+msgstr "Při&dat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:407
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:766
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:230
+msgid "Re&move"
+msgstr "Ode&brat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:602
+msgid "Sample Text"
+msgstr "Vzorový text"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:635
+msgid "Foreground"
+msgstr "Popředí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:639
+msgid "Transparent"
+msgstr "Průhledné"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:652
+msgid "Background"
+msgstr "Pozadí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:715
+msgid "Play"
+msgstr "Přehrát"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:748
+msgid "Channel name"
+msgstr "Název kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:749
+msgid "Channel password"
+msgstr "Heslo kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:177
+msgid "Toolbars"
+msgstr "Nástrojové lišty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:84
+msgid "Orientation"
+msgstr "Orientace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:86
+msgid "Top"
+msgstr "Nahoře"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:87
+msgid "Left"
+msgstr "Vlevo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:88
+msgid "Right"
+msgstr "Vpravo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:89
+msgid "Bottom"
+msgstr "Dole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:91
+msgid "Detached"
+msgstr "Odpoutané"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:92
+msgid "Flat"
+msgstr "Plochá"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:94
+msgid "Icon Size"
+msgstr "Velikost ikon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:96
+msgid "Small (22x22)"
+msgstr "Malé (22x22)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:97
+msgid "Large (32x32)"
+msgstr "Velké (32x32)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1333
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:463
+msgid "&Apply"
+msgstr "&Použít"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:830
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:113
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:251
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:319
+msgid "Close"
+msgstr "Zavřít"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:102
+msgid "Channel Modes"
+msgstr "Módy kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_debugwindow.cpp:47
+msgid "Debug Messages"
+msgstr "Ladící Zprávy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:72
+msgid "CTCP Page - KVIrc"
+msgstr "CTCP Page - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:109
+msgid "You have been paged by"
+msgstr "Máte vzkaz od"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:75
+msgid "Mask editor - KVirc"
+msgstr "Editor masek - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:79
+msgid "New mask must match an *!*@* expression"
+msgstr "Nová maska musí obsahovat výraz *!*@*"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Ok"
+msgstr "Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:488
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:442
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:401
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:157
+msgid "Active Bans"
+msgstr "Aktivní bany"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:161
+msgid "Active Invite Exceptions"
+msgstr "Aktivní vyjímky pozvání"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:165
+msgid "Active Ban Exceptions"
+msgstr "Aktivní vyjímky banů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:184
+msgid "Filter:"
+msgstr "Filtr:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:188
+msgid "Use doubleclick to edit item"
+msgstr "Použijte dvojklik pro úpravy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:200
+msgid "Mask"
+msgstr "Maska"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:202
+msgid "Set at"
+msgstr "Nastaveno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "Add"
+msgstr "Přidat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:92
+msgid "Cryptography/text transformation"
+msgstr "Šifrování/transformace textu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:99
+msgid "Use the crypt engine"
+msgstr "Použít šifrování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:120
+msgid "Enable encryption"
+msgstr "Povolit šifrování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:123
+msgid "Encrypt key:"
+msgstr "Šifrovací klíč:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:141
+msgid "Hex"
+msgstr "Hex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:132
+msgid "Enable decryption"
+msgstr "Povolit dešifrování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:135
+msgid "Decrypt key:"
+msgstr "Dešifrovací klíč:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_htmldialog.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:175
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:932
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1124
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:211
+msgid ""
+"If you dont want to encrypt a particular text line then just start it with "
+"the CTRL+P prefix"
+msgstr ""
+"Pokud nechcete zašifrovat textového řádku, začntěte jej s CTRL+P prefixem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:263
+msgid "Sorry, no crypt engines available"
+msgstr "Lituji, šifrování není dostupné"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:283
+msgid "Crypt: Can't create an engine instance: crypting disabled"
+msgstr "Šifrování: Nelze vytvořit instanci nástroje: šifrování vypnuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:294
+#, c-format
+msgid "Crypt: Can't initialize the engine :%s"
+msgstr "Šifrování: Nelze inicializovat nástroj :%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:302
+msgid ""
+"Crypt: You have to enable encryption and/or decryption for the engine to work"
+msgstr ""
+"Šifrování: Je třeba povolit šifrování anebo dešifrování, aby nástroj fungoval"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:385
+msgid "Search tools"
+msgstr "Vyhledávací nástroje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:539
+#, c-format
+msgid "### Log session terminated at %s ###"
+msgstr "### Logovací relace ukončena v %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:713
+#, c-format
+msgid "### Log session started at %s ###"
+msgstr "### Logovací relace spuštěna v %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:717
+msgid "### Existing data buffer:"
+msgstr "### Existující data buffer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:721
+msgid "### End of existing data buffer."
+msgstr "### Konec existujícího data bufferu."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3894
+msgid "Hide Find Window"
+msgstr "Schovat vyhledávací okno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3896
+msgid "Show Find Window"
+msgstr "Zobrazit vyhledávací okno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3898
+msgid "Zoom In"
+msgstr "Přiblížit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3899
+msgid "Zoom Out"
+msgstr "Oddálit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3900
+msgid "Choose Temporary Font..."
+msgstr "Zvolte dočasné písmo..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3901
+msgid "Choose Temporary Background..."
+msgstr "Zvolte dočasné pozadí..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3902
+msgid "Reset Temporary Background"
+msgstr "Obnovit dočasné pozadí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3905
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:738
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:841
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1057
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1289
+msgid "Clear Buffer"
+msgstr "Smazat buffer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3939
+msgid "Choose the background image..."
+msgstr "Zvolte obrázek pozadí ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+msgid "Invalid image"
+msgstr "Neplatný obrázek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+msgid "Failed to load the selected image"
+msgstr "Selhalo načtení zvoleného obrázku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4083
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4140
+#, c-format
+msgid "Pos %d"
+msgstr "Pozice %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4156
+msgid "Not found"
+msgstr "Nenalezeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4563
+msgid "Looking up host %Q..."
+msgstr "Zjišťuje se hostitel %Q..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4926
+msgid "Double-click to open this link"
+msgstr "Dvojklikem navštívíte odkaz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4946
+msgid "Unable to look it up hostname: Hostname appears to be masked"
+msgstr "Nelze zjistit hostitele: Hostitel vypadá, že je maskován"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4947
+msgid "Unable to look it up hostname: Unknown host"
+msgstr "Nelze zjistit hostitele: Neznámý hostitel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4949
+msgid ""
+"Double-click to look up this hostname<br>Right-click to view other options"
+msgstr ""
+"Dvojklikem zjistíte hostitele<br>Pravým kliknutím prohlédnete další možnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4972
+msgid "Server appears to be a network hub<br>"
+msgstr "Server vypadá jako hub sítě<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4973
+msgid "Unknown server<br>"
+msgstr "Neznámý server<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4976
+msgid "Double-click to read the MOTD<br>Right-click to view other options"
+msgstr "Dvojklikem přečtete MOTD<br>Pravým kliknutím zobrazíte další možnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4989
+msgid "Double-click to set<br>"
+msgstr "Dvojklik pro nastavení<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5011
+msgid "You're not an operator: You may not change channel modes"
+msgstr "Nejste operátor: Nemůžete měnit módy kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5028
+msgid "Nothing known about %Q"
+msgstr "Není známo nic o %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5029
+msgid "Nothing known about %Q (no connection)"
+msgstr "Není známo nic o %Q (žádné spojení)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5054
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>): "
+"<br><nowrap>+%Q (%u users)<hr>%Q</nowrap>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5060
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)<hr>Double-"
+"click to join %Q<br>Right click to view other options"
+msgstr ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></"
+"u><hr>Dvojklikem přijdete do %Q<br>Pravým klikem si prohlédněte další "
+"možnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5080
+msgid "<b>Double-click:</b><br>%Q"
+msgstr "<b>Dvojklik:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5085
+msgid "<b>Middle-click:</b><br>%Q"
+msgstr "<b>Prostřední klik:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5090
+msgid "<b>Right-click:</b><br>%Q"
+msgstr "<b>Pravý klik:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1284
+msgid "Joined on <b>%1</b>"
+msgstr "Přišel v <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1296
+msgid "Quiet for <b>%1h %2m %3s</b>"
+msgstr "Nepromluvil <b>%1h %2m %3s</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1097
+msgid "No connection"
+msgstr "Nepřipojeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:304
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:3
+msgid "IRC Context"
+msgstr "IRC Kontext"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:319
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:365
+#, c-format
+msgid "Lag: %d.%d%d"
+msgstr "Lag: %d.%d%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:393
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:379
+msgid "Lag: ?.??"
+msgstr "Lag: ?.??"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:326
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:637
+msgid "No IRC context"
+msgstr "Žádný IRC kontext"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:633
+msgid "Not connected"
+msgstr "Nepřipojen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:377
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1117
+msgid "away"
+msgstr "pryč"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:397
+msgid "In progress..."
+msgstr "Probíhá..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:458
+msgid "Crypting"
+msgstr "Šifrování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:466
+msgid "Private Text Encoding"
+msgstr "Soukromé kódování textu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:566
+msgid "Ops...I've accidentally lost the crypting engine..."
+msgstr "Oops...Ztratili jsme náhodně šifrovací nástroj..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:582
+msgid "List of window types available in this release of KVIrc:"
+msgstr "Seznam typů oken dostupných v této verzi KVIrc:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:763
+msgid "Use Default Encoding"
+msgstr "Použít výchozí kódování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:775
+msgid "Standard"
+msgstr "Standardní"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:776
+msgid "Smart (Send Local)"
+msgstr "Chytré (Poslat lokál)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:777
+msgid "Smart (Send UTF-8)"
+msgstr "Chytré (Poslat UTF-8)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:810
+msgid "&Undock"
+msgstr "&Odpoutat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:813
+msgid "&Dock"
+msgstr "&Dokovat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:818
+msgid "Mi&nimize"
+msgstr "Mi&nimalizovat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:821
+msgid "Ma&ximize"
+msgstr "Ma&ximalizovat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:824
+msgid "&Restore"
+msgstr "&Obnovit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:837
+msgid "Text &Encoding"
+msgstr "Kódo&vání textu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:842
+msgid "Sa&ve Window Properties"
+msgstr "Ul&ožit vlastnosti okna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:86
+msgid "Taskbar"
+msgstr "Lišta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:91
+#, fuzzy
+msgid "taskbar"
+msgstr "Lišta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1162
+msgid "Sort"
+msgstr "Třídění"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1163
+msgid "Reverse Sort"
+msgstr "Opačné třídění"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1223
+msgid "Window List"
+msgstr "Seznam oken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:203
+msgid "Apply to all IRC Contexts"
+msgstr "Použít na všechny IRC kontexty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:227
+msgid "Away Indicator"
+msgstr "Pryč indikátor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:255
+msgid "Away since"
+msgstr "Pryč od"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:259
+msgid "Double click to leave away mode"
+msgstr "Dvojklik pro zrušení pryč módu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:261
+msgid "Not away"
+msgstr "Není pryč"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:263
+msgid "Double click to enter away mode"
+msgstr "Dvojklik pro pryč mód"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:330
+#, c-format
+msgid "Last checked %d mins %d secs ago"
+msgstr "Naposledy zjišťováno před %d min %d sek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:332
+msgid "Lag measure not available yet"
+msgstr "Hodnota lagu není ještě dostupná"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:336
+msgid "Lag meter engine disabled"
+msgstr "Měřič lagu je vypnut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:338
+msgid "Double click to enable it"
+msgstr "Dvojklik pro zapnutí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:391
+msgid "Lag Indicator"
+msgstr "Lag indikátor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:461
+msgid "Simple Clock"
+msgstr "Jednoduché hodiny"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:512
+msgid "Show total connection time"
+msgstr "Zobrazit celkový čas připojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:536
+msgid "Connection Timer"
+msgstr "Časovač připojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:560
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:87
+msgid "Separator"
+msgstr "Oddělovač"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:820
+msgid "Clipboard"
+msgstr "Schránka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line break"
+msgstr "konec řádku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line breaks"
+msgstr "konce řádků"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:845
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:439
+msgid "Cu&t"
+msgstr "Vyj&mout"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:847
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:445
+msgid "&Copy"
+msgstr "&Kopírovat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:849
+msgid "&Paste"
+msgstr "&Vložit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:851
+msgid "Paste (Slowly)"
+msgstr "Vložit (pomalu)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:856
+msgid "Paste &File"
+msgstr "Vložit &Soubor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:863
+msgid "Stop Paste"
+msgstr "Zastavit vložení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:865
+msgid "Clear"
+msgstr "Smazat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:868
+msgid "Select All"
+msgstr "Vybrat vše"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:897
+msgid "Insert Icon"
+msgstr "Vložit Ikonu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1926
+msgid "%d matches: %Q"
+msgstr "%d záznamů: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1930
+msgid "No matches"
+msgstr "Žádné záznamy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2657
+msgid "Show History<br>&lt;Ctrl+PageUp&gt;"
+msgstr "Zobrazit historii<br>&lt;Ctrl+PageUp&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2648
+msgid "Input History Disabled"
+msgstr "Vstupní historie vypnuta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2370
+msgid "Show Icons Popup<br>&lt;Ctrl+I&gt;<br>See also /help texticons"
+msgstr "Zobrazit Okno Ikon<br>&lt;Ctrl+I&gt;<br>Viz. také /help texticons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2382
+msgid "User friendly commandline mode<br>See also /help commandline"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2394
+msgid "Multi-line Editor<br>&lt;Alt+Backspace&gt;"
+msgstr "Víceřádkový Editor<br>&lt;Alt+Backspace&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2498
+msgid "Confirm Multiline Message"
+msgstr "Potvrdit víceřádkouvou zprávu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2499
+msgid ""
+"You're about to send a message with %1 lines of text.<br><br>There is "
+"nothing wrong with it, this warning is<br>here to prevent you from "
+"accidentally sending<br>a really large message just because you didn't edit "
+"it<br>properly after pasting text from the clipboard.<br><br>Do you want the "
+"message to be sent?"
+msgstr ""
+"Rozhodujete se poslat zprávu s %1 řádky textu.<br><br>Na tom není nic "
+"špatného, toto upozornění<br>je tu aby se předešlo možným "
+"posláním<br>skutečně velkých zpráv bez úprav<br>při vkládání ze schránky."
+"<br><br>Chcete zprávu poslat?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2505
+msgid "Yes, always"
+msgstr "Ano, vždy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2506
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:399
+msgid "Yes"
+msgstr "Ano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:806
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:375
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:400
+msgid "No"
+msgstr "Ne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2556
+msgid "<Ctrl+Return>; submits, <Alt+Backspace>; hides this editor"
+msgstr "<Ctrl+Enter>; odešle, <Alt+Backspace>; schová tento editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:126
+msgid "Address:"
+msgstr "Adresa:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:140
+msgid "Current IRC URI"
+msgstr "Současné IRC URI"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:156
+msgid "Notify List"
+msgstr "Seznam Oznamování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:263
+msgid "Part All Channels"
+msgstr "Odejít ze všech kanálů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:265
+msgid "Close All Queries"
+msgstr "Zavřít všechny Query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:270
+msgid "Unhighlight All Windows"
+msgstr "Nezvýrazňovat žádná okna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:273
+msgid "Unhighlight All Channels"
+msgstr "Nezvýrazňovat žádné kanály"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:275
+msgid "Unhighlight All Queries"
+msgstr "Nezvýrazňovat žádné Query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:387
+msgid "Gender:"
+msgstr "Pohlaví:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:394
+msgid "Male"
+msgstr "Muž"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:393
+msgid "Female"
+msgstr "Žena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:375
+msgid "Registered as"
+msgstr "Registrován jako"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:381
+#, fuzzy
+msgid "(Matched by"
+msgstr "Maska:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:393
+msgid "On <b>"
+msgstr "Na <b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:402
+msgid "Using server <b>%1</b>"
+msgstr "Používá server <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:407
+msgid "%1 hops"
+msgstr "%1 hopů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:417
+msgid "Probably Away"
+msgstr "Pravděpodobně pryč"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:493
+msgid ""
+"KVIrc can accept only irc://, irc6://, ircs:// or irc6s:// URL's\n"
+"Your URL is invalid. Check spelling and try again"
+msgstr ""
+"KVIrc může akceptovat pouze irc://, irc6://, ircs:// nebo irc6s:// URL\n"
+"Vaše URL je neplatné. Zkontrolujte syntaxi a zkuste to znovu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:554
+msgid ""
+"You have just attempted to close a console window with an active connection "
+"inside.\n"
+"Are you sure you wish to terminate the connection?"
+msgstr ""
+"Pokoušíte se zavřít okno konzole s aktivním spojením uvnitř.\n"
+"Opravdu chcete přerušit spojení?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:588
+msgid ""
+"You have just attempted to close the last console window.\n"
+"Are you sure you wish to quit KVIrc?"
+msgstr ""
+"Pokoušíte se zavřít poslední okno konzole.\n"
+"Opravdu chcete ukončit KVIrc?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1019
+msgid "Failed to load avatar with name \"%Q\" and local path \"%Q\""
+msgstr "Selhalo načtení avataru se jménem \"%Q\" a lokální cestou \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:624
+msgid "Connection in progress..."
+msgstr "Probíhá připojování..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1099
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:630
+msgid "Login in progress..."
+msgstr "Probíhá přihlašování..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1179
+msgid "channel"
+msgstr "kanál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1180
+msgid "channels"
+msgstr "kanálů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1181
+msgid "query"
+msgstr "query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1182
+msgid "queries"
+msgstr "query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1238
+msgid "Connected since"
+msgstr "Připojen od"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1252
+msgid "Online for"
+msgstr "Online"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1264
+msgid "Server idle for"
+msgstr "Server nečinný"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:50
+msgid "This option is also available as"
+msgstr "Tato volba je také dostupná jako"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:683
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:275
+msgid "Advanced..."
+msgstr "Pokročilé..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:69
+msgid "Scri&pting"
+msgstr "Skri&pty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:74
+msgid "&Tools"
+msgstr "&Nástroje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:81
+msgid "&Settings"
+msgstr "&Nastavení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:83
+msgid "&Window"
+msgstr "&Okno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:125
+msgid "&Help"
+msgstr "&Nápověda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:119
+msgid "&Help Browser (Panel)"
+msgstr "&Prohlížeč nápovědy (Panel)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:121
+msgid "Help Browser (&Window)"
+msgstr "Prohlížeč nápovědy (&okno)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:124
+msgid "&Tip of the Day"
+msgstr "&Tip dne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:127
+msgid "About &KVIrc"
+msgstr "O aplikaci &KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:130
+msgid "KVIrc Home&page"
+msgstr "Domo&vská stránka KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:134
+msgid "KVIrc Russian Home&page"
+msgstr "Domo&vská stránka KVIrc v ruštině"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:139
+msgid "KVIrc French Home&page"
+msgstr "Domo&vská stránka KVIrc ve francouzštině"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:143
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:339
+msgid "Subscribe to the Mailing List"
+msgstr "Přihlásit se do Mailing listu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:145
+#, fuzzy
+msgid "Report a Bug / Propose Improvements"
+msgstr "Nahlásit chybu / Námět na vylepšení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:148
+msgid "Join KVIrc International Channel on Freenode"
+msgstr "Přijít do mezinárodního kanálu KVIrc na Freenode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:150
+msgid "Join KVIrc International Channel on IRCNet"
+msgstr "Přijít do mezinárodního kanálu KVIrc na IRCnetu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:155
+msgid "Join KVIrc Italian Channel on AzzurraNet"
+msgstr "Přijít do italského kanálu KVIrc na AzzurraNet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:161
+msgid "Join KVIrc French Channel on Freenode"
+msgstr "Přijít do francouzského kanálu KVIrc na Freenode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:164
+msgid "Join KVIrc French Channel on EuropNet"
+msgstr "Přijít do francouzského kanálu KVIrc na EuropNet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:179
+msgid "Show StatusBar"
+msgstr "Zobrazit Stavovou lištu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:194
+msgid "&Save Configuration"
+msgstr "&Uložit konfiguraci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:213
+msgid "Restore &Default Script"
+msgstr "Obnovit &Výchozí skript"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:630
+msgid "Disconnect"
+msgstr "Odpojit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:228
+msgid "New &Connection To"
+msgstr "Nové &Připojení k"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:234
+msgid "Hide &Dock Icon"
+msgstr "Schovat &Dokovací ikonu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:237
+msgid "Show &Dock Icon"
+msgstr "Zobrazit &Dokovací ikonu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:111
+msgid "&Quit"
+msgstr "&Konec"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:265
+msgid "&Other..."
+msgstr "&Ostatní..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:305
+msgid "Show &Icon Table"
+msgstr "Zobrazit Tabulku &ikon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:308
+msgid "Open &Terminal"
+msgstr "Otevřít &Terminál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:308
+msgid ""
+"<b>Shift+Drag</b> or <b>Ctrl+Drag</b> to move the applet around<br><b>Right "
+"click</b> to see the other options"
+msgstr ""
+"<b>Shift+Drag</b> nebo <b>Ctrl+Drag</b> pro přesun apletu po "
+"liště<br><b>Pravý klik</b> pro prohlédnutí dalších možností"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:313
+msgid "<b>Right click</b> to add/remove applets"
+msgstr "<b>Pravý klik</b> pro přidání/odebrání apletů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:353
+msgid "Remove %Q"
+msgstr "Odebrat %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:365
+msgid "Add Applet"
+msgstr "Přidat applet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:404
+msgid ""
+"Drag the applet while holding the Shift or Ctrl key to move it to the "
+"desired position"
+msgstr ""
+"Uchopte aplet při stisknutém Shift nebo Ctrl pro přesun na zvolené umístění"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:93
+msgid "<b><font color=\"#EAEAEA\" size=\"-1\">Find Text</font></b>"
+msgstr "<b><font color=\"#EAEAEA\" size=\"-1\">Hledat text</font></b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:118
+msgid "&Regular expression"
+msgstr "&Regulérní výraz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:121
+msgid "E&xtended regexp."
+msgstr "Rozšíř&ený výraz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:126
+msgid "C&ase sensitive"
+msgstr "R&ozlišovat velikost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:129
+msgid "Find &Prev."
+msgstr "Hledat &Předchozí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:133
+msgid "&Find Next"
+msgstr "&Hledat další"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:880
+msgid "Find"
+msgstr "Hledat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:214
+msgid "Type"
+msgstr "Typ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:166
+msgid "Set &All"
+msgstr "Nastavit &vše"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:170
+msgid "Set &None"
+msgstr "Nastavit žá&dný"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:174
+msgid "&Load From..."
+msgstr "&Otevřít z..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:178
+msgid "&Save As..."
+msgstr "&Uložit jako..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:182
+msgid "Filter"
+msgstr "Filtr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:234
+msgid "Select a Filter File"
+msgstr "Vyberte soubor filtru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:251
+#, c-format
+msgid "Can't open the filter file %s for reading."
+msgstr "Nelze otevřít soubor %s pro čtení."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:261
+msgid "Select a Name for the Filter File"
+msgstr "Vyberte jméno pro soubor filtru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:272
+msgid "Failed to write the filter file %Q (IO Error)"
+msgstr "Selhal zápis souboru filtru %Q (IO Chyba)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:274
+msgid "Can't open the filter file %Q for writing"
+msgstr "Nelze otevřít soubor %Q pro zápis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:109
+msgid "Choose image ..."
+msgstr "Zvolte obrázek ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:122
+msgid "Builtin images"
+msgstr "Vestavěné obrázky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:131
+msgid "Small icons"
+msgstr "Malé ikony"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:138
+msgid "Full path"
+msgstr "Celá cesta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:241
+msgid "Builtin $icon(%Q) [index %d]"
+msgstr "Vestavěná $icon(%Q) [obsah %d]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:274
+msgid "directory"
+msgstr "adresář"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:300
+msgid "pixels"
+msgstr "pixelů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:305
+msgid "bytes"
+msgstr "bajtů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:98
+msgid "Show User List"
+msgstr "Zobrazit uživatele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:105
+msgid "Query Targets"
+msgstr "Query cíle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:165
+msgid "Query target:"
+msgstr "Query cíle:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:170
+msgid "%1 is %2 (%3)"
+msgstr "%1 je %2 (%3)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:172
+msgid "%1 is %2"
+msgstr "%1 je %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:186
+msgid "%1 is using irc server: %2 (%3 hops)"
+msgstr "%1 používá irc server: %2 (%3 hopů)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:188
+msgid "%1 is using irc server: %2"
+msgstr "%1 používá irc server: %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:195
+msgid "%1 is probably away"
+msgstr "%1 je pravděpodobně pryč"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:200
+msgid "Common channels with %1: %2"
+msgstr "Společné kanály s %1: %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:254
+msgid "[Dead Query]"
+msgstr "[Mrtvé Query]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:240
+msgid "Query with %1!%2 (%3)"
+msgstr "Query s %1!%2 (%3)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:242
+msgid "Query with %1!%2"
+msgstr "Query s %1!%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:244
+msgid ", using server %1"
+msgstr ", používá server %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:246
+msgid " (%1 hops)"
+msgstr " (%1 hopů)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:248
+msgid ", probably away"
+msgstr ", pravděpodobně pryč"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:252
+msgid "Common channels: %2"
+msgstr "Společné kanály: %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:320
+msgid ""
+"The target of this query has changed from \r!n\r%Q\r [%Q@\r!h\r%Q\r] to \r!n"
+"\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr ""
+"Cíl tohoto query se změnil z \r!n\r%Q\r [%Q@\r!h\r%Q\r] na \r!n\r%Q\r [%Q@\r!"
+"h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:389
+msgid "Common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Společné kanály s \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:392
+msgid "No common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "Žádné společné kanály s \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:428
+msgid "[Dead query]"
+msgstr "[Mrtvé query]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:578
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:645
+msgid "This query has no active targets, no message sent"
+msgstr "Toto query nemá aktivní cíle, zpráva neposlána"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:617
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %s, no "
+"data sent to the server"
+msgstr ""
+"Šifrovací nástroj nemůže zašifrovat zvolenou zprávu (%Q): %s, data neposlána "
+"na server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashcount.cpp:74
+msgid ""
+"The argument of the hash count '#' operator didn't evaluate to a hash: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+"Parametr operátoru počtu hashů '#' se nevyhodnotil jako hash: automatická "
+"konverze z typu '%Q' dosazena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:100
+msgid "DNS Lookup result for query \"%Q\""
+msgstr "Výsledek DNS zjištění dotazu \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:105
+msgid "Error: %Q"
+msgstr "Chyba: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:110
+msgid "Hostname %d: %Q"
+msgstr "Hostitel %d: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:116
+msgid "IP address %d: %Q"
+msgstr "IP adresa %d: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:870
+msgid ""
+"Broken slot '%Q' in target object '%Q::%Q' while emitting signal '%Q' from "
+"object '%Q::%Q': disconnecting"
+msgstr ""
+"Rozbitý slot '%Q' v cílovém objektu '%Q::%Q' při vysílání signálu '%Q' z "
+"objektu '%Q::%Q': odpojuji se"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:888
+msgid ""
+"Slot target object destroyed while emitting signal '%Q' from object '%Q::%Q'"
+msgstr ""
+"Cílový slot objektu rozbit při vysílání signálu '%Q' z objektu '%Q::%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1040
+msgid "Listing Qt properties for object named \"%Q\" of KVS class %Q"
+msgstr "Seznam Qt vlastností pro objekt nazvaný \"%Q\" z KVS třídy %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1046
+#, c-format
+msgid "Properties for Qt class %s"
+msgstr "Vlastnosti Qt třídy %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1071
+msgid "Property: %c%Q%c, type %Q"
+msgstr "Vlastnost: %c%Q%c, typ %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1131
+#, c-format
+msgid "%d properties listed"
+msgstr "%d vlastností vypsáno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1151
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1380
+msgid "The object named \"%Q\" of class %Q has no Qt properties"
+msgstr "Objekt nazvaný \"%Q\" ze třídy %Q nemá Qt vlastnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1396
+msgid "No Qt property named \"%Q\" for object named \"%Q\" of class %Q"
+msgstr "Žádná Qt vlastnost \"%Q\" pro objekt \"%Q\" ze třídy %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1409
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed but it doesn't really exist"
+msgstr ""
+"Nelze nalézt vlastnost \"%Q\" pro objekt \"%Q\" ze třídy %Q: vlastnost je "
+"indexovaná, ale ve skutečnosti neexistuje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1417
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed and defined but the returned variant is not valid"
+msgstr ""
+"Nelze nalézt vlastnost \"%Q\" pro objekt \"%Q\" ze třídy %Q: vlastnost je "
+"indexovaná a definovaná, ale vrácená hodnota je neplatná"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1200
+#, c-format
+msgid ""
+"The property is of type %s but the supplied argument can't be converted to "
+"that type (expecting \"%s\")"
+msgstr ""
+"Vlastnost je typu %s , ale argument nemůže být zkonvertován na tento typ "
+"(očekáváno \"%s\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1331
+msgid ""
+"A pixmap object, an image_id or an image file path is required for this "
+"property"
+msgstr ""
+"Pixmapový objekt, image_id nebo cesta k souboru obrázku je třeba pro tuto "
+"vlastnost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1352
+msgid "Can't find the requested image"
+msgstr "Nelze nalézt požadovaný obrázek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1512
+msgid ""
+"Property \"%Q\" for object named \"%Q\" of class %Q has an unsupported data "
+"type"
+msgstr ""
+"Vlastnost \"%Q\" pro objekt \"%Q\" ze třídy %Q má nepodporovaný datový typ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1659
+msgid "Cannot find object function $%Q for object named \"%Q\" of class %Q"
+msgstr "Nelze nalézt objektovou funkci $%Q pro objekt \"%Q\" ze třídy %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1661
+msgid "Cannot find object function $%Q::%Q for object named \"%Q\" of class %Q"
+msgstr "Nelze nalézt objektovou funkci $%Q::%Q pro objekt \"%Q\" ze třídy %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1669
+msgid ""
+"Cannot call internal object function $%Q (for object named \"%Q\" of class %"
+"Q) from this context"
+msgstr "Nelze nalézt objektovou funkci $%Q (pro objekt \"%Q\" ze třídy %Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:69
+msgid "Stray dot ('.') character or invalid following module command name"
+msgstr "Zbloudilý znak tečka ('.') nebo neplatný název následujícího modulu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:70
+msgid "Syntax error: malformed module command identifier"
+msgstr "Chyba syntaxe: zdeformovaný identifikátor module příkazu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:188
+#, fuzzy
+msgid "Stray '::' sequence or invalid following alias name"
+msgstr "Zbloudilý znak tečka ('.') nebo neplatný název následujícího modulu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:95
+msgid "Syntax error: malformed alias identifier"
+msgstr "Chyba syntaxe: zdeformovaný identifikátor aliasu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:102
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:196
+msgid "Stray ':' character: did you mean '...<namespace>::<alias_name>' ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:103
+msgid "Syntax error: malformed (alias?) command identifier"
+msgstr "Chyba syntaxe: zdeformovaný identifikátor (alias?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:280
+msgid "Unknown callback command \"%Q\""
+msgstr "Neznámý callback příkaz \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:465
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:44
+msgid "The current window is not a channel"
+msgstr "Současné okno není kanál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:532
+msgid ""
+"Timer name omitted but there is not current timer (this is not a timer "
+"callback)"
+msgstr ""
+"Vynecháno jméno časovače, ale žádný současný časovač není (toto není zpětné "
+"volání časovače)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:538
+msgid "Can't kill the timer '%Q' since it is not running"
+msgstr "Nelze zabít časovač '%Q', dokud neběží"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:626
+#, fuzzy
+msgid "List of active timers"
+msgstr "aktivních uživatelů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:637
+msgid "Persistent"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:640
+#, fuzzy
+msgid "WindowLifetime"
+msgstr "Seznam oken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:643
+msgid "SingleShot"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:652
+#, fuzzy
+msgid "None"
+msgstr "(Žádné)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:663
+#, c-format
+msgid "Total: %u timers running"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:849
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:872
+msgid "Found character '%q' (unicode %x) where a slash '/' was expected"
+msgstr "Nalezen znak '%q' (unicode %x) na místě, kde lomítko '/' chybělo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:842
+msgid ""
+"Unexpected end of command in binding operation, at least two slashes are "
+"missing"
+msgstr ""
+"Neočekávaný konec příkazu ve vázací operaci, minimálně dvě lomítka chybí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:865
+msgid ""
+"Unexpected end of command in binding operation, at least one slash is missing"
+msgstr ""
+"Neočekávaný konec příkazu ve vázací operaci, minimálně jedno lomítko schází"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:905
+msgid "Unknown binding operation '%Q'"
+msgstr "Neznámá vázací operace '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:926
+msgid "Missing right side operand for the binding operator '=~'"
+msgstr "Chybí pravý operand pro vázací operátor '=~'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:948
+msgid "Trailing garbage ignored after operator '++'"
+msgstr "Ignorován odpad za operátorem '++'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:960
+msgid "Missing right operand for operator '+='"
+msgstr "Chybí pravý operand pro operátor '+='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:979
+msgid "Trailing garbage ignored after operator '--'"
+msgstr "Ignorován odpad za operátorem '--'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:986
+msgid ""
+"This looks a lot like an object handle dereferencing operator '->' but in "
+"fact it isn't. Maybe you forgot a '$' just after ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:994
+msgid "Missing right operand for operator '-='"
+msgstr "Chybí pravý operand pro operátor '-='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1015
+msgid "Missing right operand for operator '<<='"
+msgstr "Chybí pravý operand pro operátor '<<='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1025
+msgid "Missing right operand for operator '<<'"
+msgstr "Chybí pravý operand pro operátor '<<'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1039
+msgid "Missing right operand for operator '<,'"
+msgstr "Chybí pravý operand pro operátor '<,'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1053
+msgid "Missing right operand for operator '<+'"
+msgstr "Chybí pravý operand pro operátor '<+'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1075
+msgid "Missing right operand for operator '>>='"
+msgstr "Chybí pravý operand pro operátor '>>='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1094
+msgid "Missing right operand for operator '.='"
+msgstr "Chybí pravý operand pro operátor '.='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1113
+msgid "Missing right operand for operator '"
+msgstr "Chybí pravý operand pro operátor '"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:72
+msgid "Unknown operator"
+msgstr "Neznámý operátor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1178
+msgid "Unexpected (and senseless) read-only data evaluation"
+msgstr "Neočekávané (a nesmyslné) vyhodnocení dat jen pro čtení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1180
+msgid "Syntax error: confused by earlier errors: bailing out"
+msgstr "Chyba v syntaxi: zmaten předchozími chybami: vyskakuji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1160
+msgid "Unexpected end of script after a variable reference: expected operator"
+msgstr "Neočekávaný konec skriptu po referenci proměnné: očekáván operátor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1176
+msgid ""
+"Unexpected character '%q' (unicode %x) after a void function call: end of "
+"instruction expected"
+msgstr ""
+"Neočekávaný znak '%q' (unicode %x) za voláním void funkce: očekáván konec "
+"instrukce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1179
+msgid "Unexpected character '%q' (unicode %x)"
+msgstr "Neočekávaný znak '%q' (unicode %x)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:96
+msgid "/me can be used only in channels, queries and DCC chat windows"
+msgstr "/me může být použito pouze v kanálech, query a DCC chat oknech"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:385
+msgid "Invalid IRC url (%Q)"
+msgstr "Neplatné IRC url (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:410
+msgid "The commandline for this url type seems to be broken (%Q)"
+msgstr "Příkazový řádek pro tento typ url vypadá jako poškozený (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:412
+msgid "No commandline specified for this type of url (%Q)"
+msgstr "Není určena příkazová řádka pro tento typ url (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:512
+msgid "Option setting error: Unknown option or invalid value for option type"
+msgstr "Chyba nastavení: Neznámá volba nebo neplatná hodnota pro tento typ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:606
+msgid "Choose a file to parse"
+msgstr "Vyberte soubor pro parsování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:639
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:643
+msgid "Failed to load the file '%Q' for parsing"
+msgstr "Selhalo otevření souboru '%Q' pro parsování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:715
+msgid "Missing channel list"
+msgstr "Chybí seznam kanálů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:753
+#, c-format
+msgid "You don't appear to be on channel %s"
+msgstr "Nevypadáto, že jste v kanále %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:802
+msgid "Module command call failed: can't load the module 'snd'"
+msgstr "Volání příkazu modulu selhalo: nelze načíst modul 'snd'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:809
+msgid ""
+"Module command call failed: the module 'snd' doesn't export a command named "
+"'play'"
+msgstr "Volání příkazu modulu selhalo: modul 'snd' neexportoval příkaz 'play'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:864
+msgid "Popup %Q is not defined"
+msgstr "Popup %Q není definován"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:872
+msgid "A popup menu cannot be popped up twice"
+msgstr "Popup menu nemůže být zobrazeno dvakrát"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:897
+msgid "Invalid syntax for screen coordinates, using cursor position"
+msgstr "Neplatná syntaxe pro koordináty obrazovky, použita pozice kurzoru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1011
+msgid "Empty target specified"
+msgstr "Určen prázdný cíl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:97
+msgid "[RAW]: %Q"
+msgstr "[RAW]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1237
+msgid "Window with id %Q not found: no rebinding performed"
+msgstr "Okno s id %Q nenalezeno: neprovedeno převázání"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1330
+msgid "Failed to execute command '%Q'"
+msgstr "Nelze spustit příkaz '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:242
+msgid "Missing alias name"
+msgstr "Chybí jméno aliasu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:253
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:889
+msgid ""
+"Alias names can contain only letters, digits, underscores and '::' namespace "
+"separators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:903
+msgid ""
+"Stray ':' character in alias name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:914
+msgid "Found an empty namespace in alias name"
+msgstr "Nalezen prázdný jmenný prostor v názvu aliasu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:277
+msgid "The alias %Q is not existing"
+msgstr "Alias %Q neexistuje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:436
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:413
+msgid "The specified window has no button containers"
+msgstr "Zvolené okno nemá tlačítkové kontejnery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:447
+msgid "Window button '%Q' not found"
+msgstr "Tlačítko okna '%Q' nenalezeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:445
+msgid "Can't find the icon '%Q'"
+msgstr "Nelze nalézt ikonu '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:532
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:540
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1197
+msgid "No such event (%Q)"
+msgstr "Žádná událost (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:552
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1222
+msgid "No handler '%Q' for raw numeric event '%d'"
+msgstr "Není handler '%Q' pro číselnou raw událost '%d'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1248
+msgid "No handler '%Q' for event '%Q'"
+msgstr "Není handler '%Q' pro událost '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:936
+msgid "The specified ping time is invalid: assuming zero (no ping)"
+msgstr "Určený čas pingu je neplatný: nastavuji nulu (žádný ping)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:946
+msgid "The specified maximum run time is invalid: assuming zero (infinite)"
+msgstr ""
+"Zadaný maximální počet spuštění je neplatný: nastavuji nulu (nekonečně)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:965
+msgid "Failed to start the process"
+msgstr "Selhalo spuštení procesu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1010
+msgid "The specified object does not exist"
+msgstr "Zadaný objekt neexistuje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1113
+msgid "Missing timer name"
+msgstr "Chybí jméno časovače"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1122
+msgid "Missing timeout delay"
+msgstr "Chybí čas prodlevy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1129
+msgid "The timeout delay didn't evaluate to an integer"
+msgstr "Časová prodleva nejde přepočítat na celé číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1152
+msgid "Unable to add the timer: insufficient system resources"
+msgstr "Nelze přidat timer: nedostatek systémových zdrojů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_eventmanager.cpp:503
+msgid "Event handler %Q is broken: disabling"
+msgstr "Handler události %Q je poškozen: zakazuji jej"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_moduleinterface.cpp:166
+msgid "Can't unload the module: it has locked itself in memory"
+msgstr "Nelze vypnout modul: je zamčen sám sebou v paměti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:123
+msgid "Unknown binary operator '=%q': did you mean '==' ?"
+msgstr "Neznámý binární operátor '=%q': mysleli jste '==' ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:221
+msgid "Unknown binary operator '%q'"
+msgstr "Neznámý binární operátor '%q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:305
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:371
+msgid "Unexpected end of script in expression"
+msgstr "Neočekávaný konec skriptu ve výrazu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:451
+msgid ""
+"Unexpected character %q (unicode %h) in expression. If it meant to be a "
+"string use the quotes."
+msgstr ""
+"Neočekávaný znak %q (unicode %h) ve výrazu. Pokud je to tak míněno, řetězec "
+"by měl použít uvozovky."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:466
+msgid "Unexpected empty expression operand"
+msgstr "Neočekávaný prázdný operand výrazu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:91
+msgid "say: injected commandline"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:94
+msgid "Say parse error: Broken command"
+msgstr "Say parse chyba: Poškozený příkaz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:250
+msgid ""
+"Couldn't find a suitable IRC context for the connection, try using -n or -u"
+msgstr ""
+"Nelze nalézt použitelný IRC kontext pro připojení, zkus použít -n nebo -u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:259
+msgid "Another connection is already in progress in the selected IRC context"
+msgstr "Probíhá jiné spojení ve vybraném IRC kontextu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:369
+msgid "No menu bar item with text '%Q'"
+msgstr "Žádná položka menu s textem '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:383
+msgid "Invalid index specified: ignored"
+msgstr "Určen neplatný obsah: ignoruje se"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:392
+msgid "The popup '%Q' is not defined"
+msgstr "Popup '%Q' není definován"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:604
+msgid "No target channel specified and the current window is not a channel"
+msgstr "Neurčen cílový kanál a určené okno není kanálem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:705
+msgid "No catalogue %Q for the current language found"
+msgstr "Žádný katalog %Q pro zvolený jazyk nebyl nalezen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:744
+msgid "The catalogue %Q was not loaded"
+msgstr "Katalog %Q nebyl načten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:80
+msgid ""
+"Empty window identifier specified in the standard rebinding switch: no "
+"rebinding performed"
+msgstr "Určeno prázdnée standartním rebind přepínači: rebind neproveden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:91
+msgid ""
+"Invalid window specified in the standard rebinding switch: no rebinding "
+"performed"
+msgstr ""
+"Určeno neplatné okno ve standartním rebind přepínači: rebind neproveden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:94
+msgid ""
+"The left side of the scope operator didn't evaluate as an object reference"
+msgstr ""
+"Levá strana rozsahu operátoru nejde vyhodnotit jako objektová reference"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:100
+msgid ""
+"The left side of the scope operator evaluated to a null object reference"
+msgstr ""
+"Levá strana rozsahu operátoru vyhodnocena jako null objektová reference"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:107
+msgid ""
+"The left side of the scope operator evaluated to an invalid object reference "
+"(object doesn't exist)"
+msgstr ""
+"Levá strana rozsahu operátoru vyhodnocena na neplatnou objektovou referenci "
+"(objekt neexistuje)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayreferenceassert.cpp:77
+msgid "Array reference assert failed: the variable evaluated to type '%Q'"
+msgstr "Tvrzení odkazu pole selhalo: proměnná se vyhodnotila na typ '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:247
+msgid "Operand of unary operator didn't evaluate to a number"
+msgstr "Operand jednočlenného operátoru nelze vyhodnotit jako číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:415
+msgid "Left operand didn't evaluate to a number"
+msgstr "Levý operand nelze vyhodnotit na číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:422
+msgid "Right operand didn't evaluate to a number"
+msgstr "Pravý operand nelze vyhodnotit na číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:547
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:575
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:583
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:374
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:66
+msgid "Division by zero"
+msgstr "Dělení nulou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:107
+#, c-format
+msgid "line %d, near character %d"
+msgstr "řádek %d, poblíž znaku %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:187
+msgid "This command can be used only in windows bound to an IRC context"
+msgstr "Tento příkaz může být použit pouze v oknech svázaných s IRC kontextem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:193
+msgid "You're not connected to an IRC server"
+msgstr "Nejste připojeni k IRC serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:199
+msgid "Missing parameter"
+msgstr "Chybí parametr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:128
+msgid "Hash key evaluated to empty string: fix the script"
+msgstr "Hash klíč vyhodnocen jako prázdný řetězec: opravte skript"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:99
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+"Argument v {} subskriptu se nevyhodnotil jako hash: automatická konverze z "
+"typu '%Q' dosazena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:144
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash automatic "
+"conversion from %Q supplied"
+msgstr ""
+"Argument {} subskripce se nevyhodnotil na automatickou hashovou konverzi z "
+"dodaného '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashreferenceassert.cpp:77
+msgid "Hash reference assert failed: the variable evaluated to type '%Q'"
+msgstr "Tvrzení hashového odkazu selhalo: proměnná se vyhodnotila na typ '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:100
+msgid "Failed to send an unknown command as /raw"
+msgstr "Selhalo poslání neznámého příkazu jako /raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:104
+msgid "Call to undefined command '%Q'"
+msgstr "Volání nedefinovaného příkazu '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:116
+msgid "Error in inner alias command call '%Q', called from this context"
+msgstr "Chyba uvnitř aliasu a volání příkazu '%Q', volaného z tohoto kontextu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:74
+msgid "There are no extended scope variables in this scope"
+msgstr "V tomto rozsahu nejsou žádné rozšířené proměnné rozsahu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:111
+msgid "Missing class name"
+msgstr "Chybí jméno třídy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:120
+msgid "A class can't be a subclass of itself"
+msgstr "Třída nemůže být podtřídou sama sebe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:127
+msgid "Couln't find base class named \"%Q\""
+msgstr "Nelze nalézt základní třídu nazvanou \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:137
+msgid ""
+"Detected a loop in the inheritance tree of the base class \"%Q\": redefine "
+"that class first"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:146
+msgid "Can't override the builtin class \"%Q\""
+msgstr "Nelze přepsat vestavěnou třídu \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:71
+#, fuzzy
+msgid "Module command call failed: can't load the module '%Q': %Q"
+msgstr "Volání příkazu modulu selhalo: nelze načíst modul '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:77
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a command named '%"
+"Q'"
+msgstr "Volání příkazu modulu selhalo: modul '%Q' neexportoval příkaz '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:113
+msgid "Broken condition in menu setup: assuming false"
+msgstr "Poškozená podmínka v nastavení menu: odhaduji false"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:220
+msgid "Broken icon parameter: ignoring"
+msgstr "Poškozený parametr ikony: ignoruje se"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:228
+msgid "Can't find the icon \"%Q\": ignoring"
+msgstr "Nelze najít ikonu \"%Q\": ignoruji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:244
+msgid "Broken text parameter: assuming empty string"
+msgstr "Poškozený textový parametr: odhaduje se prázdný řetězec"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:486
+msgid "Recursive definition detected for popup '%Q': ignoring"
+msgstr "Rekurzivní definice nalezena pro popup '%Q': ignoruji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:500
+msgid "Can't find the external popup '%Q'; ignoring"
+msgstr "Nelze najít externí popup '%Q'; ignoruji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:853
+msgid "Broken prologue in popup menu '%Q': ignoring"
+msgstr "Poškozený úvod v popup menu '%Q': ignoruji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:868
+msgid "Broken epilogue in popup menu '%Q': ignoring"
+msgstr "Poškozený závěr v popup menu '%Q': ignoruji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:70
+msgid "Module function call failed: can't load the module '%Q': %Q"
+msgstr "Volání funkce modulu selhalo: nelze načíst modul '%Q': %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:77
+msgid ""
+"Module function call failed: the module '%Q' doesn't export a function named "
+"'%Q'"
+msgstr "Volání funkce modulu selhalo: modul '%Q' neexportoval funkci '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_timermanager.cpp:244
+msgid "Timer '%Q' has a broken callback handler: killing the timer"
+msgstr "Časovač '%Q' má poškozený callback handler: ukončuji časovač"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:229
+msgid "The target variable didn't evaluate to an integer or real value"
+msgstr "Cílová proměnná nejde vyhodnotit na celé číslo nebo skutečnou hodnotu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:283
+msgid "The right side of operator '&=' didn't evaluate to an integer"
+msgstr "Pravou stranu operátoru '&=' nelze vyhodnotit na celé číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:294
+msgid "The left side of operator '&=' didn't evaluate to an integer"
+msgstr "Levou stranu operátoru '&=' nelze vyhodnotit na celé číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:353
+msgid "The right side of operator '/=' didn't evaluate to a number"
+msgstr "Pravou stranu operátoru '/=' nelze vyhodnotit na číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:364
+msgid "The left side of operator '/=' didn't evaluate to a number"
+msgstr "Levou stranu operátoru '/=' nelze vyhodnotit na číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:446
+msgid "The right side of operator '%=' didn't evaluate to a number"
+msgstr "Pravou stranu operátoru '%=' nelze vyhodnotit na číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:457
+msgid "The left side of operator '%=' didn't evaluate to a number"
+msgstr "Levou stranu operátoru '%=' nelze vyhodnotit na číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:541
+msgid "The right side of operator '*=' didn't evaluate to a number"
+msgstr "Pravou stranu operátoru '*=' nelze vyhodnotit na číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:552
+msgid "The left side of operator '*=' didn't evaluate to a number"
+msgstr "Levou stranu operátoru '*=' nelze vyhodnotit na číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:620
+msgid "The right side of operator '|=' didn't evaluate to an integer"
+msgstr "Pravou stranu operátoru '|=' nelze vyhodnotit na celé číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:631
+msgid "The left side of operator '|=' didn't evaluate to an integer"
+msgstr "Levou stranu operátoru '|=' nelze vyhodnotit na celé číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:691
+msgid "The right side of operator '<<=' didn't evaluate to an integer"
+msgstr "Pravou stranu operátoru '<<=' nelze vyhodnotit na celé číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:702
+msgid "The left side of operator '<<=' didn't evaluate to an integer"
+msgstr "Levou stranu operátoru '<<=' nelze vyhodnotit na celé číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:763
+msgid "The right side of operator '>>=' didn't evaluate to an integer"
+msgstr "Pravou stranu operátoru '>>=' nelze vyhodnotit na celé číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:774
+msgid "The left side of operator '>>=' didn't evaluate to an integer"
+msgstr "Levou stranu operátoru '>>=' nelze vyhodnotit na celé číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:840
+msgid "The right side of operator '-=' didn't evaluate to a number"
+msgstr "Pravou stranu operátoru '-=' nelze vyhodnotit na číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:851
+msgid "The left side of operator '-=' didn't evaluate to a number"
+msgstr "Levou stranu operátoru '-=' nelze vyhodnotit na číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:923
+msgid "The right side of operator '+=' didn't evaluate to a number"
+msgstr "Pravou stranu operátoru '+=' nelze vyhodnotit na číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:934
+msgid "The left side of operator '+=' didn't evaluate to a number"
+msgstr "Levou stranu operátoru '+=' nelze vyhodnotit na číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1009
+msgid "The right side of operator '^=' didn't evaluate to an integer"
+msgstr "Pravou stranu operátoru '^=' nelze vyhodnotit na celé číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1020
+msgid "The left side of operator '^=' didn't evaluate to an integer"
+msgstr "Levou stranu operátoru '^=' nelze vyhodnotit na celé číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1462
+msgid ""
+"The regular expression matched a zero-length substring: this is not valid in "
+"the s/// operator, skipping"
+msgstr ""
+"Regulární výraz obsahuje podřetězec nulové délky: toto není platné v s/// "
+"operátoru, vynechává se"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:52
+msgid "Unexpected end of script after '$' function call prefix"
+msgstr "Neočekávaný konec skriptu za '$' prefixem volání funkce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:53
+msgid "Unexpected character %q (unicode %x) after '$' function call prefix"
+msgstr "Neočekávaný znak %q (unicode %x) za '$' prefixem volání funkce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:54
+msgid ""
+"Syntax error after '$' function call prefix. If you want to use a plain '$' "
+"in the code you need to escape it"
+msgstr ""
+"Chyba syntaxe za '$' prefixem volání funkce. Pokud chcete použít obyčejné "
+"'$' v kódu, musíte použít escape znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:63
+msgid "Invalid expression evaluation in object scope"
+msgstr "Neplatné vyhodnocení výrazu v rozsahu objektu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:78
+msgid "Invalid command evaluation in object scope"
+msgstr "Neplatné vyhodnocení příkazu v rozsahu objektu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:87
+msgid "Empty instruction block for command evaluation"
+msgstr "Prázdný instrukční blok pro vyhodnocení příkazu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:101
+msgid ""
+"Parameter identifiers are forbidden in object scope (after the '->' operator)"
+msgstr ""
+"Identifikátory parametru jsou zakázány v rozsahu objektu (za '->' operátorem)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:147
+msgid ""
+"Ending index of a multiple parameter identifier is lower or equal to the "
+"starting index. This will evaluate to a single parameter identifier."
+msgstr ""
+"Koncový index víceparametrového identifikátoru je menší nebo roven "
+"počátečnímu. Vyhodnotí se to jako identifikátor s jedním parametrem."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:163
+msgid "Syntax error: invalid $$ ($this) function call in object scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:189
+msgid "Syntax error: malformed alias function call identifier"
+msgstr "Chyba syntaxe: zdeformovaný identifikátor volání funkce aliasu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:197
+msgid "Syntax error: malformed (alias?) function call identifier"
+msgstr "Chyba syntaxe: zdeformovaný identifikátor funkce volání (alias?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:307
+#, c-format
+msgid "Invalid data type for parameter \"%s\""
+msgstr "Nesprávný datový typ pro parametr \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:122
+#, c-format
+msgid "found empty string where type '%s' was expected"
+msgstr "nalezen prázdný řetězec, byl očekáván typ '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:129
+msgid "found string value \"%Q\" where type '%s' was expected"
+msgstr "nalezena hodnota řetězce \"%Q\" namísto očekávaného typu '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:134
+msgid "found type %Q where type '%s' was expected"
+msgstr "nalezen typ %Q namísto očekávaného typu '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:154
+#, c-format
+msgid "Missing non-optional parameter \"%s\""
+msgstr "Chybí nevolitelný parametr \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:282
+msgid "found empty string while a non empty one was expected"
+msgstr "nalezen prázdný řetězec, když byl očekáván neprázdný"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:309
+#, c-format
+msgid "found signed integer \"%d\" where type 'unsigned integer' was expected"
+msgstr ""
+"nalezen signed integer \"%d\" namísto očekávaného typu 'unsigned integer'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:253
+msgid "This window has no associated IRC context"
+msgstr "Toto okno nemá asociován IRC kontext"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:483
+#, c-format
+msgid "No such IRC context (%u)"
+msgstr "Žádný IRC kontext (%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:471
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:586
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:494
+msgid "This window is not associated to an IRC context"
+msgstr "Toto okno nemá asociován IRC kontext"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:809
+msgid ""
+"The specified format string wasn't accepted by the underlying system time "
+"formatting function"
+msgstr ""
+"Určený formát řetězce nemůže být akceptován formátovací funkcí systémového "
+"času"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:70
+msgid "Unterminated c-style multiline comment"
+msgstr "Neukončený víceřádkový komentář ve stylu c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:71
+msgid "Unexpected end of script in multiline comment"
+msgstr "Neočekávaný konec skriptu ve víceřádkovém komentáři"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:88
+msgid ""
+"Unexpected character '%q' (unicode %x) after a slash (it is a typo or a "
+"malformed comment begin ?)"
+msgstr ""
+"Neočekávaný znak '%q' (unicode %x) za lomítkem (je to překlep nebo začátek "
+"poškozeného komentáře ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:71
+msgid "Call to undefined function '%Q'"
+msgstr "Volání nedefinované funkce '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:79
+msgid "Error in inner alias function call '%Q', called from this context"
+msgstr "Chyba uvnitř aliasu a volání funkce '%Q', volané z tohoto kontextu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:73
+msgid "Array index didn't evaluate to an integer"
+msgstr "Index pole nelze přepočítat na celé číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:79
+msgid ""
+"Array index evaluated to a negative integer (non negative integer expected)"
+msgstr ""
+"Index pole přepočítán na záporné celé číslo (očekáváno celé kladné číslo)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:106
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from %Q supplied"
+msgstr ""
+"Argument v [] subskriptu se nevyhodnotil jako pole: automatická konverze z "
+"typu '%Q' dosazena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:142
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+"Argument v [] subskriptu se nevyhodnotil jako pole: automatická konverze z "
+"typu '%Q' dosazena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:219
+msgid "Lag meter was not enabled"
+msgstr "Měřič lagu není zapnut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:546
+msgid "No such event handler (%Q) for event %Q"
+msgstr "Není handler (%Q) pro událost '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands.cpp:153
+msgid "This is not a channel"
+msgstr "Toto není kanál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:99
+msgid ""
+"Unexpected end of command buffer while looking for the \"perl.end\" statement"
+msgstr "Neočekávaný konec bufferu při hledání \"perl.end\" fráze"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:147
+msgid "Trailing garbage at the end of the break command: ignored"
+msgstr "Připojený odpad na konci ukončovacího příkazu: ignorován"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:209
+msgid "The 'unset' command needs a variable list"
+msgstr "Příkaz 'unset' vyžaduje seznam proměnných"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:280
+msgid "Found character %q (unicode %x) where a variable was expected"
+msgstr "Nalezen znak %q (unicode %x), kde byla očekávána proměnná"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:219
+msgid "'unset' command used without a variable list"
+msgstr "příkaz 'unset' použitý bez seznamu promenných"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:279
+msgid "The 'global' command needs a variable list"
+msgstr "Příkazy, které jsou 'globální' vyžadují seznam proměnných"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:631
+msgid "Found character %q (unicode %x) where an open parenthesis was expected"
+msgstr "Nalezen znak %q (unicode %x) na místě očekávaného začátku závorky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:439
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:538
+msgid "Unexpected end of buffer in class definition"
+msgstr "Neočekávaný konec bufferu v definici třídy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:474
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:501
+msgid "Found character %q (unicode %x) where a function name was expected"
+msgstr "Nalezen znak '%q' (unicode %x) na místě očekávaného názvu funkce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:522
+msgid "Unexpected end of buffer in function parameter list reminder"
+msgstr "Neočekávaný konec bufferu v parametru funkce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:630
+msgid "The while command needs an expression enclosed in parenthesis"
+msgstr "Příkaz while vyžaduje výraz uzavřený v závorkách"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:654
+msgid ""
+"The last while command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr "Poslední příkaz while v bufferu neměl instrukce podmínky: je nesmyslný"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:655
+msgid ""
+"Unexpected end of script while looking for the instruction block of the "
+"while command"
+msgstr ""
+"Neočekávaný konec skriptu při zjišťování instrukčního bloku příkazu while"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:741
+msgid ""
+"Unexpected end of command after the 'do' command block: expected 'while' "
+"keyword"
+msgstr ""
+"Neočekávaný konec příkazu za blokem příkazu 'do' : očekáván 'while' příkaz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:743
+msgid "Found character %q (unicode %x) where a 'while' keyword was expected"
+msgstr ""
+"Nalezen znak %q (unicode %x) na místě, kde je očekáváno klíčové slovo 'while'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:759
+msgid ""
+"The 'while' block of the 'do' command needs an expression enclosed in "
+"parenthesis"
+msgstr "Blok 'while' příkazu 'do' vyžaduje výraz uzavřený v závorkách"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:779
+msgid "Garbage string after the expression in 'do' command: ignored"
+msgstr "Řetězec s odpadem za výrazem v příkazu 'do' : ignorováno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:825
+msgid "The 'if' command needs an expression enclosed in parenthesis"
+msgstr "Příkaz 'if' vyžaduje výraz uzavřený v závorkách"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:850
+msgid ""
+"The last if command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr "Poslední if příkaz v bufferu nemá instrukce podmínky: je nesmyslný"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:851
+msgid ""
+"Unexpected end of script while looking for the instruction block of the if "
+"command"
+msgstr "Neočekávaný konec skriptu při hledání bloku instrukcí příkazu if"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:966
+msgid ""
+"Unexpected end of buffer while looking for the closing ')' in the 'for' "
+"command"
+msgstr "Neočekávaný konec bufferu při hledání uzavírací ')' v příkazu 'for'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1015
+msgid "The 'for' command needs an expression enclosed in parenthesis"
+msgstr "Příkaz 'for' vyžaduje výraz uzavřený v závorkách"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1092
+msgid ""
+"Found char %q (unicode %x) while looking for the terminating ')' in 'for' "
+"command"
+msgstr ""
+"Nalezen znak %q (unicode %x) při hledání uzavírací ')' ve 'for' příkazu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1122
+msgid "Empty infinite 'for' loop: fix the script"
+msgstr "Prázdná neurčená smyčka 'for' : opravte skript"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1181
+msgid "The 'foreach' command needs an expression enclosed in parenthesis"
+msgstr "Příkaz 'foreach' vyžaduje výraz uzavřený v závorkách"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1205
+msgid ""
+"The 'foreach' command expects a writeable iteration variable as first "
+"parameter"
+msgstr ""
+"Příkaz 'foreach' očekává zapisovatelnou iterační proměnnou jako první "
+"parametr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1196
+msgid ""
+"Found character '%q' (unicode %x) where '%' or '$' was expected: see /help "
+"foreach for the command syntax"
+msgstr ""
+"Nalezen znak '%q' (unicode %x), kde bylo očekáváno '%' nebo '$' : koukněte "
+"na /help foreach pro syntaxi příkazu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1207
+msgid "Unexpected function call as 'foreach' iteration variable"
+msgstr "Neočekávané volání funkce jako 'foreach' iterační proměnné"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1209
+msgid "Unexpected read-only variable as 'foreach' iteration variable"
+msgstr "Neočekávaná proměnná jen pro čtení jako 'foreach' iterační proměnná"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1219
+msgid ""
+"Unexpected end of 'foreach' parameters: at least one iteration data argument "
+"must be given"
+msgstr ""
+"Neočekávaný konec 'foreach' parametrů: alespoň jeden iterační data argument "
+"musí být zadán"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1223
+msgid ""
+"The 'foreach' command expects a comma separated list of iteration data items "
+"after the first parameter"
+msgstr ""
+"Příkaz 'foreach' očekává čárkou oddělený seznam iteračních datových položek "
+"za prvním parametrem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1244
+msgid ""
+"Found empty 'foreach' execution block: maybe you need to fix your script ?"
+msgstr "Nalezen prázdný 'foreach' spouštěcí blok: opravte skript"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1365
+msgid "The 'switch' command needs an expression enclosed in parenthesis"
+msgstr "Příkaz 'switch' vyžaduje výraz uzavřený v závorkách"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1415
+msgid "Unexpected end of buffer in switch condition block"
+msgstr "Neočekávaný konec bufferu v bloku podmínky přepínače"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1422
+msgid ""
+"Found character %q (unicode %x) where a 'case','match','regexp','default' or "
+"'break' label was expected"
+msgstr ""
+"Nalezen znak %q (unicode %x) na místě, kde je "
+"'case','match','regexp','default' nebo 'break' návěstí očekáváno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1460
+msgid ""
+"Found 'break' label where a 'case','match','regexp' or 'default' label was "
+"expected"
+msgstr ""
+"Nalezeno návěstí 'break' na místě, kde jsou 'case','match','regexp' nebo "
+"'default' návěstí očekávána"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1465
+msgid ""
+"Found token '%Q' where a 'case','match','regexp','default' or 'break' label "
+"was expected"
+msgstr ""
+"Nalezen token '%Q' na místě, kde je 'case','match','regexp','default' nebo "
+"'break' návěstí očekáváno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1528
+msgid "Senseless empty switch command: fix the script"
+msgstr "Prázdný příkaz přepínače nedávající smysl: opravte skript"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1562
+msgid "Unexpected end of buffer in defpopup block"
+msgstr "Neočekávaný konec buffer v bloku defpopup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1569
+msgid ""
+"Found character %q (unicode %x) where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+"Nalezen znak %q (unicode %x) na místě kde je "
+"'prologue','separator','label','popup','item','extpopup' nebo 'epilogue' "
+"návěstí očekáváno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1668
+msgid "Found empty prologue block: maybe you need to fix the script?"
+msgstr "Nesmyslný prázdný blok úvodu: opravte skript"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1670
+msgid "Found empty epilogue block: maybe you need to fix the script?"
+msgstr "Nesmyslný prázdný blok závěru: opravte skript"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1703
+msgid ""
+"Unexpected empty <text> field in label parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Neočekávané prázdné pole <text> v parametrech návěstí. Koukněte na /help "
+"defpopup pro syntaxi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1753
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1801
+msgid ""
+"Unexpected empty <text> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Neočekávané prázdné pole <text> v extpopup parametrech. Koukněte na /help "
+"defpopup pro syntaxi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1777
+msgid ""
+"Found empty instruction for popup item: maybe you need to fix the script?"
+msgstr "Nesmyslná prázdná instrukce pro položku popupu: opravte skript"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1809
+msgid ""
+"Unexpected empty <name> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Neočekávané prázdné pole <name> v extpopup parametrech. Koukněte na /help "
+"defpopup pro syntaxi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1821
+msgid ""
+"Found token '%Q' where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+"Nalezen token '%Q' na místě kde "
+"'prologue','separator','label','popup','item','extpopup' nebo 'epilogue' "
+"návěstí bylo očekáváno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1931
+msgid "The 'defpopup' command needs an expression enclosed in parenthesis"
+msgstr "Příkaz 'defpopup' vyžaduje výraz uzavřený v závorkách"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:109
+msgid "beginning of input"
+msgstr "začátek vstupu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:121
+msgid ""
+"Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %s"
+"\" for the command syntax"
+msgstr ""
+"Nalezen znak '%q' (unicode 0x%x), kde se předpokládá '%c' : koukněte na \"/"
+"help %s\" pro syntaxi příkazu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:124
+#, c-format
+msgid ""
+"Found end of input where character '%c' was expected: see \"/help %s\" for "
+"the command syntax"
+msgstr ""
+"Nalezen konec výstupu, kde se předpokládá znak '%c' : koukněte na \"/help %s"
+"\" pro syntaxi příkazu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:197
+msgid "Empty script"
+msgstr "Prázdný skript"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2650
+msgid ""
+"Syntax error after '%' variable prefix. If you want to use a plain '%' in "
+"the code you need to escape it"
+msgstr ""
+"Chyba syntaxe za '%' prefixem proměnné. Pokud chcete použít obyčejný '%' v "
+"kódu, musíte použít escape znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2667
+msgid "Objects have no extended scope variables"
+msgstr "Objekt nemá žádné rozšířené proměnné rozsahu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2727
+msgid "Found character '%q' (unicode %x) where an instruction was expected"
+msgstr "Nalezen znak '%q' (unicode %x) na místě očekávané instrukce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2760
+msgid "Unterminated instruction block"
+msgstr "Neukončený instrukční blok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2761
+msgid "Unexpected end of script in instruction block (missing closing brace)"
+msgstr "Neočekávaný konec skriptu v bloku instrukcí (chybí uzavírací závorka)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2838
+msgid ""
+"The dash after a command should be followed by a letter (switch), by a digit "
+"(negative number) or be escaped"
+msgstr ""
+"Pomlčka za příkazem by měla být následována písmenem (přepínač), číslicí "
+"(záporné číslo) nebo by měla být uvozena escape znakem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2842
+msgid "Unexpected character '%q' (unicode %x) after a switch dash"
+msgstr "Neočekávaný znak '%q' (unicode %x) za pomlčkou přepínače"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2844
+msgid "Unexpected end of script after a switch dash"
+msgstr "Neočekávaný konec skriptu za pomlčkou přepínače"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2869
+msgid ""
+"The above problem might be related to the switch dash and the following "
+"equal sign"
+msgstr ""
+"Předchozí problém může souviset s pomlčkou přepínače a následujícím "
+"znaménkem rovnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2948
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3016
+msgid "Unexpected end of script in parameter list"
+msgstr "Neočekávaný konec skriptu v seznamu parametrů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2954
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3022
+msgid "Unexpected end of line in parameter list"
+msgstr "Neočekávaný konec řádku v seznamu parametrů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3083
+msgid ""
+"Nested character %q corresponding to expected terminator, this might confuse "
+"me a bit: it is a good idea to enclose it in quotes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3093
+#, fuzzy
+msgid "Skipping nested terminator character %q"
+msgstr "řádek %d, poblíž znaku %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3120
+msgid "Stray backslash at the end of the script"
+msgstr "Zbloudilé zpětné lomítko na konci skriptu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3393
+msgid "Unterminated hash key"
+msgstr "Neukončený hash klíč"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3387
+msgid "Unexpected end of script in hash key (missing '}' character ?)"
+msgstr "Neočekávaný konec skriptu v hash klíči (chybí znak '}' ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3394
+msgid ""
+"Unexpected end of line in hash key (missing '}' character or unescaped "
+"newline)"
+msgstr ""
+"Neočekávaný konec řádku v hash klíči (chybí znak '}' nebo neescapovaný nový "
+"řádek)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3679
+msgid "Unterminated string constant"
+msgstr "Neukončená řetězcová konstanta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3673
+msgid "Unexpected end of script in string constant (missing \" character ?)"
+msgstr "Neočekávaný konec skriptu v řetězcové konstantě (chybí \" znak ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3680
+msgid ""
+"Unexpected end of line in string constant (missing \" character or unescaped "
+"newline)"
+msgstr ""
+"Neočekávaný konec řádku v řetězcové konstantě (chybí znak \" nebo "
+"neescapovaný nový řádek)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_processmanager.cpp:225
+msgid "Error triggered from process callback handler: killing process"
+msgstr "Chyba vyvolaná z procesu handleru zpětného volání: ukončuji proces"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arraycount.cpp:72
+msgid ""
+"The argument of the array count '#' operator didn't evaluate to an array: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+"Parametr operátoru počtu prvků pole '#' se nevyhodnotil jako pole: "
+"automatická konverze z typu '%Q' dosazena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:197
+msgid "This window has no associated IRC context and is not a DCC chat"
+msgstr "Toto okno nemá osociovaný IRC kontext a nejedná se o DCC chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:293
+msgid "Class \"%Q\" is not defined"
+msgstr "Třída \"%Q\" není definovaná"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:303
+msgid "The specified parent object does not exist"
+msgstr "Zadaný zdrojový objekt neexistuje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:430
+msgid "There is no option named '%Q'"
+msgstr "Zde není žádná možnost '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:85
+msgid "Internal error: pure virtual evaluateReadOnly called"
+msgstr "Interní chyba: pure virtual evaluateReadOnly voláno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:91
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:104
+msgid ""
+"Internal error: trying to evaluate as read-write a read-only data location"
+msgstr ""
+"Interní chyba: pokus o vyhodnocení lokace na čtení-zápis, lokace je jen pro "
+"čtení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:98
+msgid "Internal error: pure virtual evaluateReadOnlyInObjectScope called"
+msgstr "Interní chyba: pure virtual evaluateReadOnlyInObjectScope voláno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:215
+msgid "[KVS]%c Warning: %Q"
+msgstr "[KVS]%c Výstraha: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:211
+msgid "[KVS]%c Compilation Error: %Q"
+msgstr "[KVS]%c Chyba kompilace: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:219
+msgid "[KVS]%c Runtime Error: %Q"
+msgstr "[KVS]%c Runtime chyba: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:224
+msgid "[KVS] in script context \"%Q\""
+msgstr "[KVS] v kontextu skriptu \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:226
+msgid "[KVS] in script context \"%Q\", %Q"
+msgstr "[KVS] v kontextu skriptu \"%Q\", %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:233
+msgid "[KVS] Code listing:"
+msgstr "[KVS] Výpis kódu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:238
+msgid "[KVS] Window:"
+msgstr "[KVS] Okno:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:242
+#, c-format
+msgid "[KVS] Destroyed window with pointer %x"
+msgstr "[KVS] Smazáno okno s ukazatelem %x"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:246
+msgid "[KVS] Call stack:"
+msgstr "[KVS] Výpis zásobníku:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:464
+#, c-format
+msgid "Window with ID '%s' not found, returning empty string"
+msgstr "Okno s ID '%s' nenalezeno, vrací se prázdný řetězec"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:130
+msgid "The specified window is not a channel"
+msgstr "Určené okno není kanálem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:392
+msgid "The $sw() function can be used only in aliases"
+msgstr "Funkce $sw() může být použita jen v aliasech"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:302
+msgid "Invalid pitch value: using default"
+msgstr "Neplatná výška: použita výchozí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:312
+msgid "Invalid duration value: using default"
+msgstr "Neplatná doba trvání: použita výchozí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:421
+msgid "No button with type %Q named %Q"
+msgstr "Žádné tlačítko s typem %Q pojmenované %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:632
+msgid "Can't delete a null object reference"
+msgstr "Nelze smazat objet s null referencí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:638
+msgid "Can't delete an inexisting object"
+msgstr "Nelze smazat neexistující objekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:692
+msgid "Inexisting popup \"%Q\""
+msgstr "Neexistující popup \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:698
+msgid ""
+"Popup menu self-modification is not allowed (the popup is probably open)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:705
+msgid "The menu item with id \"%Q\" does not exist in popup \"%Q\""
+msgstr "Položka menu s id \"%Q\" neexistuje v popupu \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:860
+msgid ""
+"The argument of the -w switch did not evaluate to a valid window id: using "
+"default"
+msgstr "Argument přepínače -w neurčoval id platného okna: používám výchozí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:869
+msgid ""
+"The argument of the i switch did not evaluate to a number: using default"
+msgstr "Argument přepínače i neurčoval číslo: používám výchozí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:981
+msgid "Invalid color-set specification, using default"
+msgstr "Neplatné určení barevného schémata, použito výchozí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:992
+#, c-format
+msgid "Window '%s' not found, using current one"
+msgstr "Okno '%s' nenalezeno, použito jedno současné"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:78
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a callback "
+"command named '%Q'"
+msgstr ""
+"Volání modulu selhalo: modul '%Q' neexportuje příkaz zpětného volání s "
+"názvem '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp:401
+#, c-format
+msgid "The popup '%s' is actually locked: 'self-modifications' are not allowed"
+msgstr "Popup '%s' je zrovna zamčený: 'vlastní-úpravy' nejsou povoleny"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:822
+#, c-format
+msgid "Ignoring DCC from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "Ignoruje se DCC od \r!nc\r%s\r [%s@\r!h\r%s\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:839
+#, c-format
+msgid "Ignoring CTCP from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "Ignoruje se CTCP od \r!nc\r%s\r [%s@\r!h\r%s\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:978
+msgid "The following CTCP reply has unrecognized target %Q"
+msgstr "Následující CTCP odezva má neočekávaný cíl %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1025
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1128
+msgid "Channel CTCP"
+msgstr "Kanálové CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:988
+msgid "%Q %Q reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "%Q %Q odezva od \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1018
+msgid "The following CTCP request has unrecognized target %Q"
+msgstr "Následující CTCP požadavek má neočekávaný cíl %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1032
+msgid ""
+"%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignored (flood limit "
+"exceeded)"
+msgstr ""
+"%Q %Q%c požadavek od \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignorován (překročen "
+"limit zahlcení)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1036
+msgid "ignored (unrecognized)"
+msgstr "ingnorován (nepřípustný)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "ignored"
+msgstr "ignorován"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "replied"
+msgstr "odpovězeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1041
+msgid "%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+msgstr "%Q %Q%c požadavek od \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1079
+msgid "The following CTCP PING reply has unrecognized target \"%Q\""
+msgstr "Následující CTCP PING odezva má neočekávaný cíl \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1113
+#, c-format
+msgid ""
+"The following CTCP PING reply has a broken time identifier \"%S\", don't "
+"trust the displayed time"
+msgstr ""
+"Náledující CTCP PING odezva má poškozený identifikátor času \"%S\", nevěřte "
+"zobrazenému času"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1132
+msgid "%Q PING reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sec %u msec"
+msgstr "%Q PING odezva od %Q [%Q@%Q]: %u sek %u msek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1466
+msgid "The following CTCP ACTION has unrecognized target %Q"
+msgstr "Následující CTCP ACTION má neočekávaný cíl %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1471
+msgid "CTCP ACTION from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "CTCP ACTION od %Q [%Q@%Q]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1517
+msgid "Unable to add file offer for file %Q (File not readable?)"
+msgstr "Nelze přidat do sdílení soubor %Q (Soubor je nečitelný?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1521
+msgid "Added %d sec file offer for file %Q (%Q) to recipient %Q"
+msgstr "Přidána %d sek nabídka sdílení souboru %Q (%Q) pro příjemce %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "private"
+msgstr "privátní"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "channel notification:"
+msgstr "oznámení kanálu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1579
+msgid "notification"
+msgstr "oznamování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1584
+msgid "%Q unsets avatar"
+msgstr "%Q zrušil avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1591
+msgid "%Q changes avatar to %s"
+msgstr "%Q změnil avatar na %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1637
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (HTTP GET %s)"
+msgstr ": Není dostupná platná kopie avataru, požaduje se (HTTP GET %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1644
+msgid ""
+": No valid local copy of avatar available; failed to start an HTTP transfer, "
+"ignoring"
+msgstr ""
+": Není dostupná platná kopie avataru; selhalo spuštění HTTP přenosu, ignoruji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1652
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (DCC GET %s)"
+msgstr ": Není dostupná lokální kopie avataru, požaduji (DCC GET %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1664
+msgid ""
+": No valid local copy of avatar available; flood limit exceeded, ignoring"
+msgstr ""
+": Není dostupná platná lokální kopie avataru; překročen limit zahlcení, "
+"ignoruji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1669
+msgid ": No valid local copy of avatar available, ignoring"
+msgstr ": Není dostupná platná lokální kopie avataru, ignoruji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1677
+msgid ": No such nickname in the user database, ignoring the change"
+msgstr ": Žádná taková přezdívka v databázi, ignoruji změnu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1717
+msgid "Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S)"
+msgstr "Ignoruje se DCC %S požadavek od \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1759
+msgid "Processing DCC %Q request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s)"
+msgstr "Zpracovává se DCC %Q požadavek od \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1770
+#, c-format
+msgid "Unable to process the above request: Cannot load DCC module (%s)"
+msgstr "Nelze zpracovat předchozí požadavek: Nelze načíst DCC modul (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1776
+msgid "Unable to process the above request: DCC module may be broken"
+msgstr "Nelze zpracovat předchozí požadavek: DCC modul je možná poškozen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:132
+msgid ""
+"[Server parser]: Encountered problems while parsing the following message:"
+msgstr ""
+"[Server parser]: Vyskytly se problémy během parsování následující zprávy:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:134
+msgid "[Server parser]: [%s][%s] %Q"
+msgstr "[Server parser]: [%s][%s] %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:136
+#, c-format
+msgid "[Server parser]: %s"
+msgstr "[Server parser]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:98
+msgid "Received ping from \r!s\r%Q\r (PING %Q), replied pong"
+msgstr "Obdržen ping od \r!s\r%Q\r (PING %Q), odezva pong"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:125
+#, c-format
+msgid "Received pong from \r!s\r%s\r (PONG %s)"
+msgstr "Obdržen pong od \r!s\r%s\r (PONG %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:151
+msgid "Server ERROR: %Q"
+msgstr "Serverová CHYBA: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:174
+msgid "Missing channel parameter in join message"
+msgstr "Chybí parametr kanálu v join zprávě"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:209
+msgid "Received a join message for an unknown channel, possible desync"
+msgstr "Obdržena join zpráva z neznámého kanálu, možná desychronizace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:305
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r [implicit +%c umode change]"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] přišel do \r!c\r%Q\r [implicit +%c umode změna]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:310
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] přišel do \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:324
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] zrovna přišel do \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:355
+msgid "Received a part message for an unknown channel, possible desync"
+msgstr "Obdržena part zpráva z neznámého kanálu, možná desynchronizace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:384
+msgid "You have left channel \r!c\r%Q\r"
+msgstr "Odešel jste z kanálu \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:386
+msgid "You have left channel \r!c\r%Q\r: %Q"
+msgstr "Odešel jste z kanálu \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:402
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] odešel z \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:406
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] odešel z \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:420
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] zrovna odešel z \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:424
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] rovna odešel z \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:494
+#, c-format
+msgid "Netsplit detected: %s"
+msgstr "Detekován Netsplit: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:546
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:562
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] opustil IRC: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:589
+msgid "Received a kick message for an unknown channel, possible desync"
+msgstr "Obdržena vykopávací zpráva z neznámého kanálu, možná desynchronizace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:626
+msgid "You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+"Byl jste vykopnut z \r!c\r%Q\r a udělal to \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:633
+msgid "Attempting to rejoin \r!c\r%Q\r..."
+msgstr "Zkouší se znovu přijít do \r!c\r%Q\r..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:670
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@"
+"\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] byl vykopnut z \r!c\r%Q\r a udělal to \r!n\r%Q\r "
+"[%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:682
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just been kicked from \r!c\r%Q\r by \r!n\r%Q"
+"\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] byl zrovna vykopnut z \r!c\r%Q\r a udělal to \r!n"
+"\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:710
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+"Následující zpráva vypadá jako zašifrovaná, ale šifrovací nástroj selhal v "
+"jejím dekódování: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:776
+msgid "Ignoring query-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Ignoruje se query-PRIVMSG od \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:843
+msgid ""
+"Spam privmsg from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%s\")"
+msgstr ""
+"Spamová soukromá zpráva od \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (obsahují "
+"spamslovo \"%s\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:984
+msgid "Ignoring channel-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Ignoruje se kanál-PRIVMSG od \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1106
+msgid "Ignoring Notice from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Ignoruje se Oznámení od \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1159
+msgid "NickServ requests authentication, executing scheduled command"
+msgstr "NickServ požaduje autorizaci, provádí se plánovaný příkaz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1162
+msgid ""
+"The scheduled NickServ identification command appears to be broken, please "
+"change the setting"
+msgstr ""
+"Naplánovaný NickServ identifikační příkaz vypadá jako poškozený, prosím "
+"změňte nastavení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1213
+msgid ""
+"Spam notice from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%Q\")"
+msgstr ""
+"Spam oznámení od \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (obsahuje spamslovo \"%Q\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1394
+msgid "Received a topic message for an unknown channel, possible desync"
+msgstr "Obdržena zpráva o tématu z neznámého kanálu, možná desynchronizace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1413
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has changed topic to \"%Q%c\""
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] změnil téma na \"%Q%c\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1512
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] je nyní znám jako \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1063
+msgid "You have changed your nickname to %Q"
+msgstr "Změnili jste si přezdívku na %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1477
+msgid ""
+"The target of this query was lost and has been found when \r!n\r%Q\r [%Q@\r!h"
+"\r%Q\r] changed his nickname to \r!n\r%Q\r"
+msgstr ""
+"Cíl tohoto query se ztratil a byl nalezen když \r!n\r%Q\r [%Q@\r!h\r%Q\r] "
+"změnil svou přezdívku na \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1486
+msgid ""
+"The recent nickname change from \r!n\r%Q\r to \r!n\r%Q\r caused a query "
+"collision: merging output"
+msgstr ""
+"Poslední změna přezdívky z \r!n\r%Q\r na \r!n\r%Q\r způsobila query kolizi: "
+"spojuji výstup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1495
+msgid "End of merged output"
+msgstr "Konec spojeného výstupu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1540
+msgid "Ignoring invite from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "Ignoruje se pozvání od \r!nc\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "autojoining"
+msgstr "autopříchod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "double-click the channel name to join"
+msgstr "dvojklikni na názvu kanálu pro příchod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1556
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] invites you to channel \r!c\r%Q\r (%Q)"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] tě zve do kanálu \r!c\r%Q\r (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1564
+msgid "Received an invite message directed to another nick, possible desync"
+msgstr "Obdržena pozývací zpráva pro jinou přezdívku, možná desynchronizace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1584
+msgid "WALLOPS from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "WALLOPS od \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1648
+#, c-format
+msgid "You have set user mode %s"
+msgstr "Nastavil jste si uživatelský mód %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1655
+msgid "Received a mode change for an unknown channel, possible desync"
+msgstr "Obdržena změna módu pro neznámý kanál, možná desynchronizace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1731
+msgid "%Q [%Q@%Q] has set channel key to \"\r!m-k\r%Q\r\""
+msgstr "%Q [%Q@%Q] nastavil klíč kanálu na \"\r!m-k\r%Q\r\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1734
+msgid "%Q [%Q@%Q] has unset the channel key"
+msgstr "%Q [%Q@%Q] zrušil klíč kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1754
+msgid "%Q [%Q@%Q] has set channel \r!m-l\rlimit to %Q\r"
+msgstr "%Q [%Q@%Q] nastavil kanálu \r!m-l\rlimit na %Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1757
+msgid "%Q [%Q@%Q] has unset the channel limit"
+msgstr "%Q [%Q@%Q] zrušil limit kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1779
+msgid "%Q [%Q@%Q] has set mode %c%c \r!n\r%Q\r"
+msgstr "%Q [%Q@%Q] nastavil mód %ce \r!m%ce\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1787
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1834
+msgid "%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"
+msgstr "%Q [%Q@%Q] nastavil kanálu \r!m%c%c\rmód %c%c\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1819
+msgid "%Q [%Q@%Q] has set mode %c%c \r!m%c%c\r%Q\r"
+msgstr "%Q [%Q@%Q] nastavil mód %c%c \r!m%c%c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1860
+msgid "%Q [%Q@%Q] has set mode %s %Q"
+msgstr "%Q [%Q@%Q] nastavil mód %s %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1863
+msgid "%Q [%Q@%Q] has set channel mode %s"
+msgstr "%Q [%Q@%Q] nastavil mód kanálu %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:147
+#, c-format
+msgid ""
+"One or more standard mode flags are missing in the server available modes.\n"
+"This is caused either by a non RFC1459-compliant IRC daemon or a broken "
+"server reply.\n"
+"Server umodes seem to be '%s' and channel modes seem to be '%s'.\n"
+"Ignoring this reply and assuming that the basic set of modes is available.\n"
+"If you have strange problems, try changing the server."
+msgstr ""
+"Jeden nebo více standardních flagů módů chybí v dostupných serverových "
+"módech.\n"
+"To může být způsobeno ne RFC1459-kompatibilním IRC démonem nebo poškozenou "
+"odezvou serveru.\n"
+"Server umodes vypadají že jsou '%s' a módy kanálů vypadají že mohou být '%"
+"s'.\n"
+"Ignorujte tuto odezvu a předpokládejte, že základní módy budou fungovat.\n"
+"Pokud budete mít nějaké problémy, zkuste změnit server."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:159
+msgid "Available user modes:"
+msgstr "Dostupné módy uživatele:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:169
+msgid ": Unknown user mode"
+msgstr ": Neznámý mód uživatele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:177
+msgid "Available channel modes:"
+msgstr "Dostupné módy kanálu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:197
+msgid "Server %Q version %S supporting user modes '%S' and channel modes '%S'"
+msgstr "Server %Q verze %S podporuje módy uživatelů '%S' a módy kanálů '%S'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:244
+msgid "This server supports the WATCH notify list method, it will be used"
+msgstr "Tento server podporuje WATCH metodu seznamu oznamování, bude použita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:262
+msgid "The current network is %Q"
+msgstr "Současná síť je %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:303
+msgid "This server supports the CODEPAGE command, it will be used"
+msgstr "Tento server podporuje CODEPAGE příkaz, bude použit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:319
+#, c-format
+msgid "This server supports: %s"
+msgstr "Tento server podporuje: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:375
+msgid "End of NAMES for \r!c\r%Q\r"
+msgstr "Konec NAMES z \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:472
+msgid "Names for \r!c\r%Q\r: %Q"
+msgstr "Jména v \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:487
+msgid "(unknown)"
+msgstr "(neznámý)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:491
+msgid "Channel topic is: %Q"
+msgstr "Téma kanálu je: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:498
+msgid "Topic for \r!c\r%Q\r is: %Q"
+msgstr "Téma pro \r!c\r%Q\r je: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:516
+msgid "No channel topic is set"
+msgstr "Nenastaveno téma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:521
+msgid "No topic is set for channel \r!c\r%Q\r"
+msgstr "Žádné téma nebylo nastaveno pro kanál \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:560
+msgid "Topic was set by %Q on %Q"
+msgstr "Téma nastavil %Q v %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:561
+msgid "Topic was set by %Q"
+msgstr "Téma nastavil %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:569
+msgid "Topic for \r!c\r%Q\r was set by %Q on %Q"
+msgstr "Téma pro \r!c\r%Q\r nastavil %Q v %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:572
+msgid "Topic for \r!c\r%Q\r was set by %Q"
+msgstr "Téma pro \r!c\r%Q\r nastavil %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:592
+msgid "Channel mode for \r!c\r%Q\r is %s"
+msgstr "Mód kanálu pro \r!c\r%Q\r je %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:595
+msgid "User mode for \r!n\r%Q\r is %s"
+msgstr "Uživatelský mód \r!n\r%Q\r je %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:631
+msgid "End of channel %Q for \r!c\r%Q\r"
+msgstr "Konec kánalu %Q pro \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:635
+msgid "ban list"
+msgstr "seznam banů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:636
+msgid "invite list"
+msgstr "seznam pozvání"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:637
+msgid "ban exception list"
+msgstr "seznam vyjímek banů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:658
+msgid "%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"
+msgstr "%Q pro \r!c\r%Q\r: \r!m-%c\r%Q\r (nastavil %Q v %Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:665
+msgid "Ban listing"
+msgstr "Seznam banů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:668
+msgid "Invite listing"
+msgstr "Seznam pozvání"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:671
+msgid "Ban exception listing"
+msgstr "Seznam vyjímek banů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:740
+msgid ""
+"WHO entry for %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cChannel%c: \r!c\r%Q\r, %"
+"cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAway%c: %Q, %cReal name"
+"%c: %Q"
+msgstr ""
+"WHO záznam pro %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cKanál%c: \r!c\r%Q\r, %"
+"cServer%c: \r!s\r%Q\r, %cHopů%c: %d, %cFlagy%c: %Q, %cPryč%c: %Q, %cSkutečné "
+"jméno%c: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:797
+msgid "End of WHO list for %Q"
+msgstr "Konec WHO seznamu pro %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:856
+msgid ""
+"Something really weird is happening: the server is refusing all the login "
+"nicknames..."
+msgstr ""
+"Něco opravdu divného se děje: server odmítá všechny přihlašovací přezdívky..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:861
+msgid ""
+"The server is refusing all the login nicknames: giving up, you must send the "
+"nickname manually"
+msgstr ""
+"Server odmítá všechny přihlašovací přezdívky: musíte nastavit přezdívku ručně"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:871
+msgid "No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."
+msgstr "Nelze se přihlásit jako '\r!n\r%Q\r' (%d: %Q), zkouší se '%Q'..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:945
+msgid "Command syntax %Q: %Q"
+msgstr "Syntaxe příkazu %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:973
+msgid "Tip: %Q"
+msgstr "Tip: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:976
+msgid "Tip for %Q: %Q"
+msgstr "Tip pro %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:993
+msgid "End of help about %Q"
+msgstr "Konec nápovědy o %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1037
+msgid "%c\r!n\r%Q\r%c is away: %Q"
+msgstr "%c\r!n\r%Q\r%c je pryč: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1090
+msgid "%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "%c\r!n\r%Q\r%c je %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1095
+msgid "%c\r!n\r%Q\r%c's real name: %Q"
+msgstr "%c\r!n\r%Q\r%c skutečné jméno: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1115
+msgid "%c\r!n\r%Q\r%c was %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "%c\r!n\r%Q\r%c byl %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1119
+msgid "%c\r!n\r%Q\r%c's real name was: %Q"
+msgstr "%c\r!n\r%Q\r%c měl skutečné jméno: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1183
+msgid "%c\r!n\r%Q\r%c's channels: %Q"
+msgstr "%c\r!n\r%Q\r%c je v kanálech: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1220
+msgid "Received a broken RPL_WHOISIDLE, can't evaluate the idle time"
+msgstr "Obdrženo poškozené RPL_WHOISIDLE, nelze spočítat dobu nečinnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1230
+msgid "%c\r!n\r%Q\r%c's idle time: %ud %uh %um %us"
+msgstr "%c\r!n\r%Q\r%c nečinnost: %ud %uh %um %us"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1240
+msgid "%c\r!n\r%Q\r%c's signon time: %Q"
+msgstr "%c\r!n\r%Q\r%c se připojil: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1274
+msgid "%c\r!n\r%Q\r%c's server: \r!s\r%Q\r - %Q"
+msgstr "%c\r!n\r%Q\r%c užívá server: \r!s\r%Q\r - %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1293
+msgid "%c\r!n\r%Q\r%c is authenticated as %Q"
+msgstr "%c\r!n\r%Q\r%c byl autentifikován jako %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1325
+msgid "%c\r!n\r%Q\r%c's info: %Q"
+msgstr "%c\r!n\r%Q\r%c info: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1372
+msgid "%c\r!n\r%Q\r%c WHOIS info from \r!s\r%Q\r"
+msgstr "%c\r!n\r%Q\r%c WHOIS info z \r!s\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1389
+msgid "%c\r!n\r%Q\r%c WHOWAS info from \r!s\r%Q\r"
+msgstr "%c\r!n\r%Q\r%c WHOWAS info z \r!s\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1457
+msgid "Can't evaluate creation time"
+msgstr "Nelze spočítat čas vytvoření"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1465
+msgid "Channel was created at %Q"
+msgstr "Kanál byl vytvořen v %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1470
+msgid "Channel \r!c\r%Q\r was created at %Q"
+msgstr "Kanál \r!c\r%Q\r byl vytvořen v %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1511
+msgid "USERHOST info: %Q"
+msgstr "USERHOST info: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1532
+msgid "Channel list begin: channel, users, topic"
+msgstr "Začátek seznamu kanálů: kanál, uživatelů, téma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1559
+msgid "List: %Q"
+msgstr "Seznam %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1573
+msgid "End of LIST"
+msgstr "Konec SEZNAMU"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1597
+msgid "Link: %Q"
+msgstr "Link: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1612
+msgid "End of LINKS"
+msgstr "Konec LINKS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1641
+msgid "[Leaving away status after %ud %uh %um %us]: %Q"
+msgstr "[Opouštíte pryč stav po %ud %uh %um %us]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1645
+msgid "[Leaving away status]: %Q"
+msgstr "[Opouští pryč stav]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1652
+msgid "Restoring pre-away nickname (%Q)"
+msgstr "Obnovena původní přezdívka (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1672
+msgid "[Entering away status]: %Q"
+msgstr "[Vstupujete do pryč stavu]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1690
+msgid "Setting away nickname (%Q)"
+msgstr "Nastavena pryč přezdívka (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1762
+#, c-format
+msgid "%c\r!s\r%s\r%c's server info: %s"
+msgstr "%c\r!n\r%s\r%c server info: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1773
+#, c-format
+msgid "%c\r!s\r%s\r%c's administrator is %s"
+msgstr "%c\r!s\r%s\r%c administrátor je %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1784
+#, c-format
+msgid "%c\r!s\r%s\r%c's contact adress is %s"
+msgstr "%c\r!s\r%s\r%c kontaktní adresa je %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1812
+msgid "\r!n\r%Q\r invited %Q into channel %Q"
+msgstr "\r!n\r%Q\r pozván %Q do kanálu %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1834
+#, c-format
+msgid "%c\r!s\r%s\r%c's information:"
+msgstr "%c\r!s\r%s\r%c informace:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1844
+#, c-format
+msgid "End of %c\r!s\r%s\r%c's information"
+msgstr "Konec %c\r!s\r%s\r%c informací"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1855
+msgid "%c\r!s\r%s\r%c's time is %Q"
+msgstr "%c\r!s\r%s\r%c čas je %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1866
+msgid "%Q: no such server"
+msgstr "%Q: žádný server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1877
+msgid "%Q: no such channel"
+msgstr "%Q: žádný kanál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1891
+msgid "Cannot sent to channel: %Q"
+msgstr "Nelze poslat do kanálu: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1894
+msgid "Cannot sent text to channel %Q: %Q"
+msgstr "Nelze poslat text do kanálu %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1909
+msgid "Cannot sent to channel"
+msgstr "Nelze poslat do kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1912
+msgid "Cannot sent text to channel %Q"
+msgstr "Nelze poslat text do kanálu %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1928
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1936
+msgid "Your encoding is now %Q"
+msgstr "Vaše kódování je nyní %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1967
+msgid "%c\r!n\r%Q\r%c's codepage is %Q: %Q"
+msgstr "%c\r!n\r%Q\r%c používá kódovou stránku %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1991
+#, c-format
+msgid "Your user mode is %s"
+msgstr "Váš uživatelský mód je %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:158
+msgid "Failed to set the encoding to %Q: mapping not available."
+msgstr "Selhalo nastavení kódování na %Q: mapování není dostupné."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:175
+msgid "Changed text encoding to %Q"
+msgstr "Kódování textu změněno na %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:503
+msgid "Connection to server lost"
+msgstr "Spojení se serverem ztraceno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:512
+msgid "Connection to server established"
+msgstr "Spojení se serverem navázáno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:573
+msgid "[LINK WARNING]: Socket message truncated to 512 bytes."
+msgstr "[LINK UPOZORNĚNÍ]: Soket zpráva byla oříznuta na 512 bajtů."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:640
+msgid ""
+"The server seems to support the WATCH notify list method, will try to use it"
+msgstr "Server vypadá, že podporuje WATCH metodu oznamování, zkusí se použít"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:688
+msgid "Can't resolve local host address, using user supplied one (%Q)"
+msgstr ""
+"Nelze zjistit adresu lokálního hostitete, bude použita adresa zadaná "
+"uživatelem (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:695
+msgid "Can't resolve local host address, using default 127.0.0.1"
+msgstr "Nelze zjistit adresu lokálního hostitele, použita výchozí 127.0.0.1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:701
+msgid "Local host address is %Q"
+msgstr "Adresa lokálního hostitele je %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:749
+msgid "The server seems to have changed the idea about the local hostname"
+msgstr "Server vypadá, že změnil názor na lokálního hostitele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:750
+msgid ""
+"You're probably using a broken bouncer or maybe something weird is happening "
+"on the IRC server"
+msgstr ""
+"Buď používáte poškozený bouncer nebo se stalo něco divného na IRC serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:776
+msgid ""
+"Here goes your \"broken bouncer hack\": The server has changed the hostname "
+"but I'll ignore the IP address change"
+msgstr ""
+"Tady je váš \"broken bouncer hack\": Server změnil hostitele, ale ignoruje "
+"změnu IP adresy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:791
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:801
+msgid "The local IP address as seen by the IRC server is %Q"
+msgstr "Lokální IP adresa, jak ji vidí IRC server, je %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:815
+msgid "Can't start the DNS slave thread"
+msgstr "Nelze spustit DNS slave vlákno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:816
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:846
+msgid "Unable to resolve the local hostname as seen by the IRC server: %Q"
+msgstr ""
+"Nelze zjistit jméno lokálního hostitele, tak jak jej vidí IRC server: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:822
+msgid "Looking up the local hostname as seen by the IRC server (%Q)"
+msgstr ""
+"Zjišťuje se jméno lokálního hostitele, tak jak jej vidí IRC server (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:843
+msgid ""
+"Unable to resolve the local hostname as seen by the IRC server: %Q, using "
+"previously resolved %Q"
+msgstr ""
+"Nelze zjistit jméno lokálního hostitele, tak jak jej vidí IRC server: %Q,"
+"použije se dříve zjištěné %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:850
+msgid "Local hostname as seen by the IRC server resolved to %Q"
+msgstr "Jméno lokálního hostitele, tak jak jej vidí IRC server, je %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:868
+msgid "Using server specific username (%Q)"
+msgstr "Použito uživatelské jméno pro tento server (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:873
+msgid "Using network specific username (%Q)"
+msgstr "Použito uživatelské jméno pro tuto síť (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:892
+msgid "Using reconnect specific nickname (%Q)"
+msgstr "Použita přezdívka pro opětovné připojení (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:898
+msgid "Using server specific nickname (%Q)"
+msgstr "Použita přezdívka pro tento server (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:905
+msgid "Using network specific nickname (%Q)"
+msgstr "Použita přezdívka pro tuto síť (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:922
+msgid "Using server specific real name (%Q)"
+msgstr "Použito skutečné jméno pro tento server (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:929
+msgid "Using network specific real name (%Q)"
+msgstr "Použito skutečné jméno pro tuto síť (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:946
+msgid "Logging in as %Q!%Q :%Q"
+msgstr "Přihlášení jako %Q!%Q :%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:962
+#, c-format
+msgid "Sending %s as password"
+msgstr "Posílá se %s jako heslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1033
+msgid "Executing scheduled network specific \"on connect\" commands"
+msgstr "Spouští se příkazy naplánované \"po připojení\" pro síť"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1042
+msgid "Executing scheduled server specific \"on connect\" commands"
+msgstr "Spouští se příkazy naplánované \"po připojení\" pro server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1051
+msgid "Executing scheduled identity specific \"on connect\" commands"
+msgstr "Spouští se příkazy naplánované \"po připojení\" pro identitu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1101
+#, c-format
+msgid "The server refused the suggested nickname (%s) and named you %s instead"
+msgstr "Server odmítl vaši přezdívku (%s) a pojmenoval vás namísto toho %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1113
+msgid "Login operations complete, happy ircing!"
+msgstr "Přihlašovací operace hotovy, veselé ircování!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1123
+msgid "Executing scheduled network specific \"on login\" commands"
+msgstr "Spouští se naplánované příkazy \"při přihlašování\" pro síť"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1132
+msgid "Executing scheduled server specific \"on login\" commands"
+msgstr "Spouští se naplánované příkazy \"při přihlašování\" pro server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1141
+msgid "Executing scheduled identity specific \"on login\" commands"
+msgstr "Spouští se naplánované příkazy \"při přihlašování\" pro identitu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1153
+msgid "Setting configured user mode"
+msgstr "Nastavení uživatelského módu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1210
+msgid "Auto-joining network specific channels"
+msgstr "Auto-příchod do kanálů pro tuto síť"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1244
+msgid "Auto-joining server specific channels"
+msgstr "Auto-příchod do kanálů pro tento server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1341
+msgid "Updating away state for channel %Q"
+msgstr "Aktualizace pryč stavu pro kanál %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_customtoolbardescriptor.cpp:230
+msgid "Backward compatibility action for toolbar.define"
+msgstr "Zpětná kompatibilita akcí pro toolbar.define"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:790
+msgid "Installation problems ?"
+msgstr "Instalační problémy ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:791
+msgid ""
+"<b>Ooops...</b><br><br><b>There are some reasons that make me think that "
+"your KVIrc installation is incomplete.</b><br><br>I might be wrong, but you "
+"seem to miss some of the features that the default KVIrc script provides."
+"This may happen because you have upgraded to an unstable cvs version, "
+"because you have accidentally deleted or damaged your configuration files, "
+"because you have installed an incomplete script or because you have hit a "
+"bug in KVIrc.<br><br>I can repeat the installation of the default script in "
+"order to restore the missing features.<br><b>Do you want the default script "
+"to be restored ?</b><br><br><font size=\"-1\">Hint: If you're a scripter and "
+"have intentionally removed some of the scripting features then you may "
+"safely click on \"No and Don't Ask Me Again\", otherwise it might be a good "
+"idea to click \"Yes\". If you still want to choose \"No\" you can always "
+"restore the default script by choosing the appropriate entry from the "
+"\"Scripting\" menu.</font>"
+msgstr ""
+"<b>Ooops...</b><br><br><b>Je několik důvodů, proč je instalace KVIrc "
+"nekompletní.</b><br><br>Možná se mýlím, ale vypadá to, že jste zapomněli na "
+"některé vlastnosti, které nabízí výchozí skript KVIrc.To se mohlo stát díky "
+"upgradu na nestabilní cvs verzi, nebo náhodným poškozením vašich "
+"konfiguračních souborů, instalací nekompletního skriptu anebo jste narazili "
+"na bug v KVIrc.<br><br>Můžete opakovat instalaci výchozího skriptu aby se "
+"doplnily chybějící vlastnosti.<br><b>Chcete obnovit výchozí skript ?</"
+"b><br><br><font size=\"-1\">Tip: Pokud jste skriptér a některé skriptovací "
+"vlastnosti jste odebrali, můžete bezpečně kliknout na \"Ne a již se neptat"
+"\", jindy může být dobrým nápadem klinutí na \"Ano\". Pokud alee vyberete "
+"\"Ne\" můžete vždy obnovit výchozí skript výběrem správného záznamu ze "
+"\"Skriptovacího\" menu.</font>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:805
+msgid "No and Don't Ask Me Again"
+msgstr "Ne a již se neptat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:828
+msgid "Restore Default Script - KVIrc"
+msgstr "Obnovit výchozí skript - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:829
+msgid ""
+"You are about to restore the default script.<br>This will erase any script "
+"changes you have made.<br>Do you wish to proceed?"
+msgstr ""
+"Rozhodujete o obnovení výchozího skriptu.<br>To smaže všechny změny skriptů "
+"které jste udělali.<br>Chcete pokračovat?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:872
+#, c-format
+msgid "Remote command received (%s ...)"
+msgstr "Vzdálený příkaz přijat (%s ...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1033
+msgid "File download failed"
+msgstr "Stažení souboru selhalo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1035
+msgid "File download from %1 failed"
+msgstr "Stahování souboru od %1 selhalo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1044
+msgid "File download successfully complete"
+msgstr "Stažení souboru úspěšně dokončeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1046
+msgid "File download from %1 successfully complete"
+msgstr "Stahování souboru od %1 úspěšně dokončeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1066
+msgid "Avatar download failed for %Q!%Q@%Q and url %Q: %Q"
+msgstr "Stažení avataru selhalo pro %Q!%Q@%Q a url %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2014
+#, c-format
+msgid "The commandline for media type '%s' seems to be broken"
+msgstr "Příkazový řádek pro typ multimédia '%s' vypadá jako poškozený"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2018
+#, c-format
+msgid "Media type of file %s matched to '%s' but no commandline specified"
+msgstr "Typ multimédia %s souhlasí s '%s' ale namá určen příkazový řádek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2023
+#, c-format
+msgid "No idea on how to play file %s (no media type match)"
+msgstr "Nevím jak přehrát multimediální soubor %s (neshoduje se s typy médií)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:39
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:48
+#, c-format
+msgid "[SSL]: %c%s"
+msgstr "[SSL]: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:40
+#, c-format
+msgid "[SSL]: Cipher: %c%s"
+msgstr "[SSL]: Šifra: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:41
+#, c-format
+msgid "[SSL]: Version: %c%s"
+msgstr "[SSL]: Verze: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:42
+#, c-format
+msgid "[SSL]: Bits: %c%d (%d used)"
+msgstr "[SSL]: Bitů: %c%d (%d použito)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:49
+#, c-format
+msgid "[SSL]: Version: %c%d"
+msgstr "[SSL]: Verze: %c%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:50
+#, c-format
+msgid "[SSL]: Serial number: %c%d"
+msgstr "[SSL]: Sériové číslo: %c%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:51
+msgid "[SSL]: Subject:"
+msgstr "[SSL]: Subjekt:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:59
+#, c-format
+msgid "[SSL]: Common name: %c%s"
+msgstr "[SSL]: Obecné jméno: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:60
+#, c-format
+msgid "[SSL]: Organization: %c%s"
+msgstr "[SSL]: Organizace: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:61
+#, c-format
+msgid "[SSL]: Organizational unit: %c%s"
+msgstr "[SSL]: Organizační jednotka: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:62
+#, c-format
+msgid "[SSL]: Country: %c%s"
+msgstr "[SSL]: Země: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:63
+#, c-format
+msgid "[SSL]: State or province: %c%s"
+msgstr "[SSL]: Stát nebo provincie: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:64
+#, c-format
+msgid "[SSL]: Locality: %c%s"
+msgstr "[SSL]: Lokace: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:58
+msgid "[SSL]: Issuer:"
+msgstr "[SSL]: Poskytovatel:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:65
+#, c-format
+msgid "[SSL]: Public key: %c%s (%d bits)"
+msgstr "[SSL]: Veřejný klíč: %c%s (%d bitů)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:66
+#, c-format
+msgid "[SSL]: Signature type: %c%s"
+msgstr "[SSL]: Typ signatury: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:73
+#, c-format
+msgid "[SSL]: Signature contents: %c%s"
+msgstr "[SSL]: Signatura obsahuje: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:82
+msgid "Peer X509 certificate"
+msgstr "X509 ceritifikát"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:85
+msgid "[SSL]: The peer didn't provide a certificate"
+msgstr "[SSL]: Druhá strana nedodala certifikát"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1219
+msgid "Current transmission cipher"
+msgstr "Současná přenosová šifra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:92
+msgid "[SSL]: Can't find out the current cipher info"
+msgstr "[SSL]: Nelze zjistit informace o šifře"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:113
+#, c-format
+msgid "[%s]: [SSL]: Using certificate file %s"
+msgstr "[%s]: [SSL]: Použit soubor certifikátu %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:116
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the certificate file %s"
+msgstr "[%s]: [SSL CHYBA]: Chyba I/O při pokusu použít soubor certifikátu %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:146
+#, c-format
+msgid "[%s]: [SSL ERROR]: %s"
+msgstr "[%s]: [SSL CHYBA]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:136
+#, c-format
+msgid "[%s]: [SSL]: Using private key file %s"
+msgstr "[%s]: [SSL]: Použit soubor privátního klíče %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:139
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the private key file %s"
+msgstr ""
+"[%s]: [SSL CHYBA]: Chyba I/O při pokusu použít soubor privátního klíče %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:375
+msgid "Reconnect attempt aborted"
+msgstr "Pokus o opětovné spojení přerušen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:443
+msgid ""
+"This is the first connection in this IRC context: using the global server "
+"setting"
+msgstr ""
+"Toto je první spojení v tomto IRC kontextu: používám globální serverové "
+"nastavení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:483
+msgid ""
+"No servers available. Check the options dialog or use the /SERVER command"
+msgstr ""
+"Nejsou dostupné servery. Zkontrolujte dialog možností nebo použijte příkaz /"
+"SERVER"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:491
+msgid ""
+"Ooops.. you've hit a bug in the servers database... I have found a server "
+"but not a network..."
+msgstr ""
+"Ooops.. nalezl jsi chybu v databázi serverů... Nalezl se server ale ne síť..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:504
+msgid "No proxy hosts available, resuming direct connection"
+msgstr "Proxy hostitelé nedostupní, navazuji přímé spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:582
+#, c-format
+msgid "Connection attempt failed [%s]"
+msgstr "Pokus o spojení selhal [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:600
+#, c-format
+msgid "Will attempt to reconnect in %d seconds"
+msgstr "Pokusím se o znovupřipojení za %d sekund"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:604
+#, c-format
+msgid "%d"
+msgstr "%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:606
+#, c-format
+msgid "%d of %d"
+msgstr "%d z %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:633
+#, c-format
+msgid "Maximum number of reconnect attempts reached (%d): giving up"
+msgstr "Maximální počet pokusů o opětovné spojení dosažen (%d): vzdávám to"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:647
+msgid ""
+"The connection attempt failed while using a cached IP address for the "
+"current server"
+msgstr ""
+"Pokus o spojení selhal při použití cachované IP adresy zvoleného serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:648
+msgid "The problem *might* be caused by an updated DNS entry"
+msgstr "Problém *může* být způsoben aktualizovaným DNS záznamem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:649
+msgid "Try reconnecting with caching disabled"
+msgstr "Zkuste znovu připojení se zakázaným cache"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:673
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:382
+msgid "%Q established [%s (%s:%u)]"
+msgstr "%Q navázáno [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Secure connection"
+msgstr "Zabezpečené spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Connection"
+msgstr "Spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:779
+#, c-format
+msgid "Connection terminated [%s (%s:%u)]"
+msgstr "Spojení ukončeno [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:791
+msgid "The connection terminated unexpectedly. Trying to reconnect..."
+msgstr "Spojení bylo neočekávaně přerušeno. Pokus o obnovu spojení..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:874
+msgid "Sent QUIT, waiting for the server to close the connection..."
+msgstr "Poslán QUIT, čeká se až server uzavře spojení..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:685
+msgid "Normal text"
+msgstr "Normální text"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:686
+msgid "Selection"
+msgstr "Výběr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:687
+msgid "Highlighted text"
+msgstr "Zvýrazněný text"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:688
+msgid "URL foreground"
+msgstr "URL popředí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:689
+msgid "Link overlay foreground"
+msgstr "Překrývání popředí linku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:690
+msgid "Parser error"
+msgstr "Parser chyba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:691
+msgid "Parser warning"
+msgstr "Parser upozornění"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:692
+msgid "Host lookup result"
+msgstr "Výsledek zjištění hostitele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:693
+msgid "Socket message"
+msgstr "Soket zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:694
+msgid "Socket warning"
+msgstr "Soket varování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:695
+msgid "Socket error"
+msgstr "Soket chyba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:696
+msgid "System error"
+msgstr "Systémová chyba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:697
+msgid "Raw data to server"
+msgstr "Raw data k serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:698
+msgid "Connection status"
+msgstr "Stav spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:699
+msgid "System warning"
+msgstr "Varování systému"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:700
+msgid "System message"
+msgstr "Systémová zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:701
+msgid "Unhandled server reply"
+msgstr "Neobsloužená odezva serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:702
+msgid "Server information"
+msgstr "Informace serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:703
+msgid "Server Message of the Day"
+msgstr "Zpráva dne serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:704
+msgid "Server ping"
+msgstr "Serverový ping"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:705
+msgid "Join message"
+msgstr "Příchodová zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:706
+msgid "Part message"
+msgstr "Odchodová zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:707
+msgid "Unrecognized/broken message"
+msgstr "Neočekávaná/poškozená zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:708
+msgid "Topic message"
+msgstr "Téma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:709
+msgid "Own private message"
+msgstr "Vlastní soukromá zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:710
+msgid "Channel private message"
+msgstr "Soukromá zpráva v kanále"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:711
+msgid "Query private message"
+msgstr "Soukromá zpráva na query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:712
+msgid "CTCP reply"
+msgstr "CTCP odezva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:713
+msgid "CTCP request replied"
+msgstr "CTCP požadavek zodpovězen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:714
+msgid "CTCP request ignored"
+msgstr "CTCP požadavek ignorován"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:715
+msgid "CTCP request flood warning"
+msgstr "Upozornění CTCP zahlcení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:716
+msgid "CTCP request unknown"
+msgstr "Neznámý CTCP požadavek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:717
+msgid "User action"
+msgstr "Uživatelské akce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:718
+msgid "Avatar change"
+msgstr "Změna avataru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:719
+msgid "Quit message"
+msgstr "Opouštěcí zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:720
+msgid "Split message"
+msgstr "Split zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:721
+msgid "Quit on netsplit message"
+msgstr "Opouštěcí zpráva při netsplitu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:722
+msgid "Nick changes"
+msgstr "Změny přezdívek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:723
+msgid "+o mode change"
+msgstr "+o změna módu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:724
+msgid "-o mode change"
+msgstr "-o změna módu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:725
+msgid "+v mode change"
+msgstr "+v změna módu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:726
+msgid "-v mode change"
+msgstr "-v změna módu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:727
+msgid "Multiple user mode change"
+msgstr "Hromadná změna módu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:728
+msgid "Channel key change"
+msgstr "Změna klíče kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:729
+msgid "Channel limit change"
+msgstr "Změna limitu kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:730
+msgid "+b mode change"
+msgstr "+b změna módu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:731
+msgid "-b mode change"
+msgstr "-b změna módu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:732
+msgid "+e mode change"
+msgstr "+e změna módu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:733
+msgid "-e mode change"
+msgstr "-e změna módu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:734
+msgid "+I mode change"
+msgstr "+l změna módu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:735
+msgid "-I mode change"
+msgstr "-l změna módu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:736
+msgid "Multiple channel mode change"
+msgstr "Hromadná změna módu kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:737
+msgid "Who reply"
+msgstr "Odpověď who"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:738
+msgid "DCC request"
+msgstr "DCC požadavek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:739
+msgid "DCC message"
+msgstr "DCC zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:740
+msgid "DCC error"
+msgstr "DCC chyba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:741
+msgid "Nickname problem"
+msgstr "Problém přezdívky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:742
+msgid "Whois user reply"
+msgstr "Whois odpověď"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:743
+msgid "Whois channels reply"
+msgstr "Whois odpověď kanálů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:744
+msgid "Whois idle reply"
+msgstr "Whois idle odezva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:745
+msgid "Whois server reply"
+msgstr "Whois server odezva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:746
+msgid "Whois other reply"
+msgstr "Whois ostatní odezva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:747
+msgid "Channel creation time reply"
+msgstr "Odezva času vytvoření kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:748
+msgid "Notify list joins"
+msgstr "Oznamovat příchody"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:749
+msgid "Notify list leaves"
+msgstr "Oznamovat odchody"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:750
+msgid "Own encrypted private message"
+msgstr "Vlastní šifrovaná soukromá zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:751
+msgid "Channel encrypted private message"
+msgstr "Šifrovaná zpráva kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:752
+msgid "Query encrypted private message"
+msgstr "Šifrovaná osobní zpráva na query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:753
+msgid "DCC chat message"
+msgstr "DCC chat zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:754
+msgid "Encrypted DCC chat message"
+msgstr "Šifrovaná DCC chat zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:755
+msgid "Login operations completed"
+msgstr "Přihlašovací operace dokončeny"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:756
+msgid "Kick action"
+msgstr "Vykopnutí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:757
+msgid "Links reply"
+msgstr "Odezva linků"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:758
+msgid "Spam report"
+msgstr "Hlášení spamu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:759
+msgid "ICQ message"
+msgstr "ICQ zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:760
+msgid "ICQ user-message"
+msgstr "ICQ zpráva uživatele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:761
+msgid "Outgoing ICQ user-message"
+msgstr "Odchozí ICQ zpráva uživatele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:762
+msgid "Channel notice"
+msgstr "Kanálové oznámení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:763
+msgid "Encrypted channel notice"
+msgstr "Šifrované oznámení kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:764
+msgid "Query notice"
+msgstr "Query oznámení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:765
+msgid "Encrypted query notice"
+msgstr "Šifrované query oznámení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:766
+msgid "Server notice"
+msgstr "Oznámení serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:767
+msgid "Halfop mode change"
+msgstr "Změna módu na poloop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:768
+msgid "Unknown CTCP reply"
+msgstr "Neznámá CTCP odezva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:769
+msgid "NickServ message"
+msgstr "NickServ zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:770
+msgid "ChanServ message"
+msgstr "ChanServ zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:771
+msgid "Away message"
+msgstr "Pryč zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:772
+msgid "Ident message"
+msgstr "Ident zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:773
+msgid "Channel list message"
+msgstr "Zpráva seznamu kanálů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:774
+msgid "Half-deop mode change"
+msgstr "Změna módu na polodeop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:775
+msgid "Invite message"
+msgstr "Pozývací zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:776
+msgid "Multimedia message"
+msgstr "Multimediální zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:777
+msgid "Query trace message"
+msgstr "Query sledovací zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:778
+msgid "Wallops message"
+msgstr "Wallops zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:779
+msgid "Join error message"
+msgstr "Připojit zprávu o chybě"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:780
+msgid "Broadcast private message"
+msgstr "Vysílat soukromou zprávu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:781
+msgid "Broadcast notice"
+msgstr "Vysílat oznámení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:782
+msgid "Am kicked"
+msgstr "Jsem vykopnut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:783
+msgid "Am op'd"
+msgstr "Jsem opnut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:784
+msgid "Am voiced"
+msgstr "Dostal jsem voice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:785
+msgid "Am deop'd"
+msgstr "Jsem deopnut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:786
+msgid "Am devoiced"
+msgstr "Sebrali mi voice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:787
+msgid "Am halfop'd"
+msgstr "Jsem polopován"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:788
+msgid "Am de-halfop'd"
+msgstr "Jsem polodeopován"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:789
+msgid "Ban matching my mask"
+msgstr "Ban na moji masku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:790
+msgid "Unban matching my mask"
+msgstr "Ban na mojí masku odstraněn"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:791
+msgid "Ban exception matching my mask"
+msgstr "Ban s výjimkou na mojí masku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:792
+msgid "Ban unexception matching my mask"
+msgstr "Ban s výjimkou na mojí masku odstraněn"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:793
+msgid "Invite exception matching my mask"
+msgstr "Pozvánka s výjimkou na mojí masku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:794
+msgid "Invite unexception matching my mask"
+msgstr "Pozvánka bez výjimky na mojí masku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:795
+msgid "Ignored user message"
+msgstr "Ingorovaná zpráva uživatele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:796
+msgid "Server statistics"
+msgstr "Statistiky serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:797
+msgid "SSL message"
+msgstr "SSL zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:108
+msgid "Search"
+msgstr "Hledat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:799
+msgid "Generic success"
+msgstr "Obecný úspěch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:800
+msgid "Generic status"
+msgstr "Obecný stav"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:801
+msgid "Generic verbose message"
+msgstr "Obecná podrobná zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:802
+msgid "Generic warning"
+msgstr "Obecné upozornění"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:803
+msgid "Generic error"
+msgstr "Obecná chyba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:804
+msgid "Generic critical error"
+msgstr "Obecná kritická chyba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:805
+msgid "Chan admin status set"
+msgstr "Nastaven stav admin kanál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:806
+msgid "Chan admin status unset"
+msgstr "Zrušen stav admin kanál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:807
+msgid "Own chan admin status set"
+msgstr "Nastaven admin stav vlastního kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:808
+msgid "Own chan admin status unset"
+msgstr "Zrušen admin stav vlastního kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:809
+msgid "Userop mode change"
+msgstr "Změna uživatel-op módu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:810
+msgid "User-deop mode change"
+msgstr "Změna uživatel-deop módu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:811
+msgid "Am userop'd"
+msgstr "Jsem uživatel-opnut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:812
+msgid "Am de-userop'd"
+msgstr "Jsem uživatel-deopnut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:813
+msgid "Verbose/Debug"
+msgstr "Upovídaný/Ladění"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:814
+msgid "Chan owner status set"
+msgstr "Nastaven stav vlastník kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:815
+msgid "Chan owner status unset"
+msgstr "Zrušen stav vlastník kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:816
+msgid "Own chan owner status set"
+msgstr "Nastaven stav vlastníka vlastního kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:817
+msgid "Own chan owner status unset"
+msgstr "Zrušen stav vlastníka vlastního kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:818
+msgid "Server error"
+msgstr "Serverová chyba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:22
+msgid "Help"
+msgstr "Nápověda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:820
+msgid "Text Encoding Server message"
+msgstr "Kódování textu serverové zprávy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:826
+msgid "BitTorrent message"
+msgstr "BitTorrent zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:970
+msgid "Missing absolute directory for the theme information"
+msgstr "Chybí absulutní adresář pro informace o motivu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:978
+msgid "Failed to create the theme directory"
+msgstr "Selhalo vytvoření adresáře témat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1061
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1096
+msgid "Failed to save one of the theme images"
+msgstr "Selhalo uložení jednoho z obrázků témat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1074
+msgid "Failed to create the theme subdirectory"
+msgstr "Selhalo vytvoření podadresáře témat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1213
+msgid "Boolean options (1/0)"
+msgstr "Booleovské možnosti (1/0)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1214
+msgid "Rectangle options (x,y,width,height)"
+msgstr "Možnosti obdélníku (x,y,šířka,výška)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1215
+msgid "String options (string value)"
+msgstr "Možnosti řetězce (hodnota řetězce)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1216
+msgid "Color options (#RRGGBB)"
+msgstr "Barevné možnosti (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1217
+msgid "Mirccolor options (#RRGGBB)"
+msgstr "Mirc barvy možnosti (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1218
+msgid "Irc context color options (#RRGGBB)"
+msgstr "Irc kontext barevné možnosti (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1219
+msgid "Pixmap options (image path)"
+msgstr "Možnosti obrázku (umístění obrázku)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1220
+msgid "Unsigned integer options (unsigned integer constant)"
+msgstr "Volby bezznaménkových integerů (bezznaménková integerová konstanta)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1221
+msgid "Font options (family,pointsize,style,charset,weight,flags (biusf))"
+msgstr "Možnosti Fontu (rodina,velikost,styl,kódování,tloušťka,flagy (biusf))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1222
+msgid "Message color options (image_id,foreground,background,logFlag (0/1))"
+msgstr "Barevné možnosti zprávy (obrázek_id,popředí,pozadí,logFlag (0/1))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1223
+msgid "String list options (comma separated list of strings)"
+msgstr "Možnosti seznamu řetězce (čárkami oddělený seznam řetězců)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC"
+msgstr "IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC Context related actions"
+msgstr "Akce příbuzné IRC Kontextu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic"
+msgstr "Obecný"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic actions"
+msgstr "Obecné akce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Settings"
+msgstr "Nastavení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Actions related to settings"
+msgstr "Akce příbuzné nastavení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:30
+msgid "Scripting"
+msgstr "Skriptování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+msgid "Scripting related actions"
+msgstr "Akce příbuzné skriptování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "GUI"
+msgstr "GUI"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "Actions related to the Graphic User Interface"
+msgstr "Akce příbuzné Grafickému Uživatelskému Interfejsu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:77
+msgid "Channel"
+msgstr "Kanál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+msgid "IRC Channel related actions"
+msgstr "Akce příbuzné IRC kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Tools"
+msgstr "Nástroje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Actions that will appear in the \"Tools\" menu"
+msgstr "Akce, které se zobrazí v menu \"Nástroje\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:157
+msgid "Sending out PING based lag probe"
+msgstr "Odeslána PING sonda lagu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:167
+msgid "Sending out CTCP based lag probe"
+msgstr "Odeslána CTCP sonda lagu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:188
+#, c-format
+msgid "Registered lag check with reliability %u (%s)"
+msgstr "Registrována kontrola lagu se spolehlivostí %u (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:220
+#, c-format
+msgid "Lag check completed (%s)"
+msgstr "Kontrola lagu dokončena (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:259
+#, c-format
+msgid "Lag check aborted (%s)"
+msgstr "Kontrola lagu přerušena (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:143
+msgid "Hostname resolution aborted"
+msgstr "Zjištění hostitele přerušeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:156
+msgid "Attempting %Q to %Q (%Q) on port %u"
+msgstr "Zkouší se %Q k %Q (%Q) na portu %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "secure connection"
+msgstr "zabezpečené spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "connection"
+msgstr "připojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:165
+#, c-format
+msgid "Attempting to 'bounce' on proxy %s on port %u (protocol %s)"
+msgstr "Zkouší se 'bounce' na proxy %s na portu %u (protokol %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:194
+#, c-format
+msgid "Using cached proxy IP address (%s)"
+msgstr "Použita cache proxy IP adresa (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:237
+msgid "Unable to look up the IRC proxy hostname: Can't start the DNS slave"
+msgstr "Nelze zjistit hostitel IRC proxy : Nelze spustit DNS slave"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:265
+msgid "Resuming direct server connection"
+msgstr "Obnovuje se přímé spojení se serverem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:248
+#, c-format
+msgid "Looking up the proxy hostname (%s)..."
+msgstr "Zjišťuje se hostitel proxy (%s)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:261
+msgid "Can't find the proxy IP address: %Q"
+msgstr "Nelze nalézt IP adresu proxy: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:271
+msgid "Proxy hostname resolved to %Q"
+msgstr "Proxy hostitel zjištěn jako %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:284
+msgid "Proxy %Q has a nickname: %Q"
+msgstr "Proxy %Q má přezdívku: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:322
+#, c-format
+msgid "Using cached server IP address (%s)"
+msgstr "Použita cache IP adresa serveru (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:354
+msgid "Unable to look up the server hostname: Can't start the DNS slave"
+msgstr "Nelze zjistit hostitele serveru: Nelze spustit DNS slave"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:359
+#, c-format
+msgid "Looking up the server hostname (%s)..."
+msgstr "Zjišťuje se hostitel serveru (%s)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:373
+msgid "Can't find the server IP address: %Q"
+msgstr "Nelze nalézt IP adresu serveru: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:380
+msgid "If this server is an IPv6 one, try /server -i %Q"
+msgstr "Pokud je tento server IPv6, zkuste /server -i %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:390
+msgid "Server hostname resolved to %Q"
+msgstr "Server hostitel zjištěn jako %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:400
+msgid "Real hostname for %Q is %Q"
+msgstr "Skutečný hostitel pro %Q je %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:414
+msgid "Server %Q has a nickname: %Q"
+msgstr "Server %Q měl přezdívku: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:468
+msgid "The specified bind address (%Q) is not valid"
+msgstr "Zadaná vázací adresa (%Q) je neplatná"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:473
+msgid ""
+"The specified bind address (%Q) is not valid (the interface it refers to "
+"might be down)"
+msgstr ""
+"Zadaná vázací adresa (%Q) je neplatná (rozhraní na které odkazuje je nejspíš "
+"vypnuté)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:493
+#, c-format
+msgid "The system-wide IPv6 bind address (%s) is not valid"
+msgstr "Systémová IPv6 vázací adresa (%s) je neplatná"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:500
+#, c-format
+msgid ""
+"The system-wide IPv6 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+"Systémová IPv6 vázací adresa (%s) je neplatná (rozhraní na které ukazuje "
+"může být vypnuté)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:522
+#, c-format
+msgid "The system-wide IPv4 bind address (%s) is not valid"
+msgstr "Systémová IPv4 vázací adresa (%s) je neplatná"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:529
+#, c-format
+msgid ""
+"The system-wide IPv4 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+"Systémová IPv4 vázací adresa (%s) je neplatná (rozhraní na které ukazuje "
+"může být vypnuté)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:230
+msgid "Channel operators"
+msgstr "Operátoři kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:231
+msgid "Voiced users"
+msgstr "Uživatelé s voice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:232
+msgid "Half-operators"
+msgstr "Polo-operátoři"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:233
+msgid "Ban masks"
+msgstr "Ban masky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:234
+msgid "Color free (no ANSI colors)"
+msgstr "Bez barev (žádné ANSI barvy)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:235
+msgid "Ban exception masks"
+msgstr "Masky vyjímek banů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:236
+msgid "Invite exception masks or forbid /INVITE"
+msgstr "Masky vyjímek pozvání nebo zákaz /INVITE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:237
+msgid "Secret"
+msgstr "Tajný"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:238
+msgid "Private"
+msgstr "Soukromý"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:239
+msgid "Topic change restricted"
+msgstr "Omezená změna téma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:240
+msgid "Invite only"
+msgstr "Jen na pozvání"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:241
+msgid "No external messages"
+msgstr "Bez vnějších zpráv"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:242
+msgid "Anonymous or protected user"
+msgstr "Anonymní nebo chráněný uživatel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:243
+msgid "Quiet or channel owner"
+msgstr "Tichý nebo vlastník kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:244
+msgid "Limited number of users"
+msgstr "Limitovaný počet uživatelů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:245
+msgid "Key"
+msgstr "Klíč"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:246
+msgid "Moderated"
+msgstr "Moderovaný"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:247
+msgid "Registered"
+msgstr "Registrovaný"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:248
+msgid "Censor swear words"
+msgstr "Cenzurovat nadávky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:249
+msgid "Impossible to speak and change nick if not authenticated with NickServ"
+msgstr "Nelze mluvit a měnit přezdívku pokud nejste autentifikováni s NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:250
+msgid "Impossible to change nick if not authenticated with NickServ"
+msgstr "Není možné měnit přezdívku pokud nejste autentifikováni s NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:251
+msgid "Only registered nicks can join"
+msgstr "Pouze registrovaní mohou přijít"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:252
+msgid "No kicks able (unless U-Line)"
+msgstr "Není možné vykopnutí (dokud je U-Line)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:253
+msgid "IRC-Op only channel"
+msgstr "pouze IRC-Op kanál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:254
+msgid "Server/Network/Tech Admin only channel"
+msgstr "Server/Síť/Tech kanál jen pro Adminy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:255
+msgid "Forbid /KNOCK"
+msgstr "Zakázat /KNOCK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:256
+msgid "Strip colors"
+msgstr "Odstranit barvy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:257
+msgid "Redirect on channel full"
+msgstr "Přesměrovat při plném kanále"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:258
+msgid "Forbid channel CTCPs"
+msgstr "Zakázat kanálové CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:259
+msgid "User-operators OR Auditorium: /NAMES and /WHO show only ops"
+msgstr ""
+"Uživatelé-operátoři NEBO Auditorium: /NAMES a /WHO zobrazí pouze operátory"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:260
+msgid "Only 7-bit letters in nicknames allowed"
+msgstr "Povoleny pouze 7mi bitové znaky v přezdívce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:261
+msgid "Impossible to use both 7-bit and 8-bit letters in nicknames"
+msgstr "Není možné používat zároveň 7-bit a 8-bit znaky v přezdívkách"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:270
+msgid "o: IRC operator (OPER)"
+msgstr "o: IRC operátor (OPER)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:271
+msgid "O: Local IRC operator (LOCOP)"
+msgstr "O: Lokální IRC operátor (LOCOP)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:272
+msgid "i: Invisible"
+msgstr "i: Neviditelný"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:273
+msgid "w: Recipient for WALLOPS messages"
+msgstr "w: Příjemce WALLOPS zpráv"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:274
+msgid ""
+"r: User with restricted connection (or recipient for messages about rejected "
+"bots)"
+msgstr ""
+"r: Uživatel s omezeným připojením (nebo příjemce zpráv o odmítnutých botech)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:275
+msgid "s: Recipient for server notices"
+msgstr "s: Příjemce oznámení serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:276
+msgid "z: Recipient for oper wallop messages"
+msgstr "z: Příjemce pro oper wallop zprávy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:277
+msgid "c: Recipient for cconn messages"
+msgstr "c: Příjemce pro cconn zprávy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:278
+msgid "k: Recipient for server kill messages"
+msgstr "k: Příjemce pro kill zprávy serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:279
+msgid "f: Recipient for full server notices"
+msgstr "f: Příjemce pro plná oznámení serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:280
+msgid "y: Spy :)"
+msgstr "y: Špión :)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:281
+msgid "d: Obscure 'DEBUG' flag"
+msgstr "d: Skrytý 'DEBUG' flag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:282
+msgid "n: Recipient for nick changes"
+msgstr "n: Příjemce pro změny přezdívek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:100
+msgid "Ops... for some reason the link filter object has been destroyed"
+msgstr "Oops... z nějakého důvodu byl linkovaný filtr objekt zničen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:138
+msgid "Using filtered IRC protocol: Link filter is \"%Q\""
+msgstr "Použit filtrovaný IRC protokol: Link filtr je \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:143
+msgid "Failed to set up the link filter \"%Q\", will try with plain IRC"
+msgstr "Selhalo nastavení filtrované linky \"%Q\", zkusí se obyčejné IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:202
+msgid "Failed to start the connection: %Q"
+msgstr "Selhalo navázání spojení: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:368
+msgid "Contacting %Q %s (%s) on port %u"
+msgstr "Kontaktuje se %Q %s (%s) na portu %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "proxy host"
+msgstr "proxy hostitel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "IRC server"
+msgstr "IRC server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:375
+#, c-format
+msgid "Low-level transport connection established [%s (%s:%u)]"
+msgstr "Nízkoúrovňové přenosové spojení navázáno [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:379
+msgid "Starting Secure Socket Layer handshake"
+msgstr "Zahajuji SSL komunikaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Secure proxy connection"
+msgstr "Zabezpečené proxy spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Proxy connection"
+msgstr "Proxy spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:387
+msgid "Negotiating relay information"
+msgstr "Vyjednávájí se přenosové informace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:390
+msgid "Sent connection request, waiting for acknowledgement"
+msgstr "Zaslán požadavek spojení, čeká se na potvrzení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:393
+msgid "Sent target host data, waiting for acknowledgement"
+msgstr "Poslána data cílového hostitele, čeká se na potvrzení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:396
+msgid "Sent auth method request, waiting for acknowledgement"
+msgstr "Poslán požadavek auth metody, čeká se na potvrzení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:399
+msgid "Sent username and password, waiting for acknowledgement"
+msgstr "Posláno užívatelské jméno a heslo, čeká se na potvrzení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:402
+msgid "Sent connection request, waiting for \"HTTP 200\" acknowledgement"
+msgstr "Poslán požadavek spojení, čeká se na \"HTTP 200\" potvrzení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:176
+msgid "[SSL]: %Q"
+msgstr "[SSL]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:181
+msgid "[SSL ERROR]: %Q"
+msgstr "[SSL CHYBA]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:190
+msgid "[PROXY]: %Q"
+msgstr "[PROXY]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:200
+msgid "[PROXY ERROR]: %Q"
+msgstr "[PROXY CHYBA]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:207
+msgid "[SOCKET]: %Q"
+msgstr "[SOKET]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:212
+msgid "[SOCKET ERROR]: %Q"
+msgstr "[SOKET CHYBA]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:218
+msgid "[SOCKET WARNING]: %Q"
+msgstr "[SOKET UPOZORNĚNÍ]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:337
+#, c-format
+msgid "Binding to local address %s"
+msgstr "Vázání na lokální adresu %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:341
+#, c-format
+msgid ""
+"Binding to local address %s failed: the kernel will choose the correct "
+"interface"
+msgstr "Vázání k lokální adrese %s selhalo: jádro si vybere správné rozhraní"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:637
+msgid "Using HTTP protocol."
+msgstr "Použit HTTP protokol."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:683
+msgid "Using SOCKSV4 protocol."
+msgstr "Použit SOCKSV4 protokol."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:756
+msgid "Using SOCKSv5 protocol."
+msgstr "Použit SOCKSv5 protokol."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:771
+msgid "We can accept auth method 0 (no auth)"
+msgstr "Můžeme přijmout auth metodu 0 (bez auth)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:779
+msgid "We can accept auth method 0 (no auth) or 2 (user/pass)"
+msgstr "Můžeme přijmout auth metodu 0 (bez auth) nebo 2 (uživatel/heslo)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:958
+msgid "Proxy response: auth OK: access granted"
+msgstr "Proxy odezva: auth OK: přístup povolen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:993
+msgid "Proxy response: Auth method OK: using method 0 (no auth)"
+msgstr "Proxy odezva: autorizace úspěšná: použita metoda 0 (bez autorizace)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1000
+msgid "Proxy response: Auth method OK: using method 2 (user/pass)"
+msgstr "Proxy odezva: autorizace úspěšná: použita metoda 2 (uživatel/heslo)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1056
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1113
+msgid "Proxy response: target data OK: request granted"
+msgstr "Proxy odezva: cílová data OK požadavek přijmut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1153
+msgid "Proxy response: "
+msgstr "Proxy odezva: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1164
+msgid "Proxy said something about: \n"
+msgstr "Proxy říká něco o: \n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1205
+msgid "Server X509 certificate"
+msgstr "Certifikát X509 serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1209
+msgid "The server didn't provide a certificate"
+msgstr "Server neposkytuje certifikát"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1223
+msgid "Unable to determine the current cipher"
+msgstr "Nelze rozpoznat současnou šifru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1768
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1788
+msgid "Partial socket write: packet broken into smaller pieces."
+msgstr "Částečný zápis soketu: paket rozbit na malé části."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:60
+msgid "The theme information file does not exist"
+msgstr "Soubor informací motivu neexistoval"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:71
+msgid ""
+"This KVIrc executable is too old for this theme (minimum theme engine "
+"version required is %Q while this theme engine has version %s)"
+msgstr ""
+"Tato binárka KVIrc je příliš stará pro běh tohoto motivu (minimální potřebná "
+"verze je %Q a tento engine motivů je verze %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:80
+msgid "Theme information file is not valid"
+msgstr "Soubor s informacemi o motivu je neplatný"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:248
+msgid "Failed to load the specified screenshot image"
+msgstr "Selhalo načtení zvoleného obrázku snímku obrazovky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:257
+msgid "Invalid option"
+msgstr "Neplatná možnost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:265
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:293
+msgid "Failed to save the screenshot image"
+msgstr "Selhalo uložení snímku obrazovky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:117
+msgid "Configure Servers..."
+msgstr "Konfigurovat servery..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:118
+msgid "Allows you to configure the servers and eventually to connect to them"
+msgstr "Umožní konfigurovat servery a případně se poté připojit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:128
+msgid "Manage Addons..."
+msgstr "Spravovat rozšíření..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:129
+msgid "Allows you to manage the script-based addons"
+msgstr "Umožňuje správu skriptových rozšíření"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:139
+msgid "Configure Registered Users..."
+msgstr "Konfigurovat Registrované uživatele..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:140
+msgid "Shows a dialog that allows editing the registered user entries"
+msgstr "Zobrazí dialog pro úpravy záznamů registrovaných uživatelů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:150
+msgid "Configure Identity..."
+msgstr "Konfigurovat identitu..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:151
+msgid "Allows you to configure nickname, username, avatar etc..."
+msgstr "Umožňuje nastavit přezdívku, uživatelské jméno, avatar atd..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:161
+msgid "Show SocketSpy..."
+msgstr "Zobrazit Soket špióna..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:162
+msgid "Shows a window that allows monitoring the socket traffic"
+msgstr "Zobrazí okno, které umožní monitorovat soketový provoz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:172
+msgid "Get Network Links"
+msgstr "Zjistit Linky sítě"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:173
+msgid "Shows a window that allows viewing the network links"
+msgstr "Zobrazí okno, které umožní zjistit linky sítě"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:183
+msgid "Get Channel List"
+msgstr "Stáhnout seznam kanálů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:184
+msgid "Shows a window that allows listing the network channels"
+msgstr "Zobrazí okno, které umožní procházení seznamem kanálů sítě"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:194
+msgid "Configure KVIrc..."
+msgstr "Konfigurovat KVIrc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:195
+msgid "Shows the general options dialog"
+msgstr "Zobrazí dialog hlavních předvoleb"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:205
+msgid "Configure Theme..."
+msgstr "Konfigurovat téma..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:206
+msgid "Shows the theme options dialog"
+msgstr "Zobrazí dialog možností témat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:216
+msgid "Manage Themes..."
+msgstr "Spravovat témata..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:217
+msgid "Allows you to manage the themes"
+msgstr "Umožňuje správu témat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:227
+msgid "Customize Toolbars..."
+msgstr "Upravit nástrojové lišty..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:228
+msgid "Shows a window that allows editing script toolbars"
+msgstr "Zobrazí okno, které umožní úpravy nástrojových lišt skriptu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:239
+msgid "Join Channels..."
+msgstr "Přijít do kanálů..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:240
+msgid "Shows a dialog that allows you joing channels"
+msgstr "Zobrazí dialog, který umožňuje příchod do kanálů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:251
+msgid "Edit Actions..."
+msgstr "Upravit Akce..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:252
+msgid "Shows a window that allows editing actions"
+msgstr "Zobrazí okno umožňující úpravy akcí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:262
+msgid "Edit Aliases..."
+msgstr "Upravit Aliasy..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:263
+msgid "Shows a window that allows editing aliases"
+msgstr "Zobrazí okno pro úpravy aliasů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:273
+msgid "Edit Events..."
+msgstr "Upravit Události..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:274
+msgid "Shows a window that allows editing script events"
+msgstr "Zobrazí okno pro úpravy událostí pro skripty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:284
+msgid "Edit Popups..."
+msgstr "Upravit Popupy..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:285
+msgid "Shows a window that allows editing popup menus"
+msgstr "Zobrazí okno, které umožní úpravy vyskakovacích (popup) menu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:295
+msgid "Edit Raw Events..."
+msgstr "Upravit Raw události..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:296
+msgid "Shows a window that allows editing raw scripting events"
+msgstr "Zobrazí okno, které umžní úpravy událostí raw ve skriptech"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:306
+msgid "New Script Tester"
+msgstr "Tester nového skriptu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:307
+msgid "Creates an embedded editor for long scripts"
+msgstr "Vytvoří vestavěný editor pro dlouhé skripty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:317
+msgid "Execute Script..."
+msgstr "Spustit skript..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:318
+msgid "Allows executing a KVS script from file"
+msgstr "Umožní spouštění KVS skriptu ze souboru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:328
+msgid "Help Index"
+msgstr "Obsah Nápovědy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:329
+msgid "Shows the documentation index"
+msgstr "Zobrazí obsah nápovědy a dokumentace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:340
+msgid "Allows subscribing to the KVIrc mailing list"
+msgstr "Dovolí přihlášení se do mailing listu KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:350
+msgid "KVIrc WWW"
+msgstr "KVIrc WWW"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:351
+msgid "Opens the KVIrc homepage"
+msgstr "Otevře Domovskou stránku KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:361
+msgid "KVIrc Russian WWW"
+msgstr "Ruská domovská stránka KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:362
+msgid "Opens the KVIrc homepage in russian"
+msgstr "Otevře Domovskou stránku KVIrc v ruštině"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:372
+msgid "Acquire Screenshot"
+msgstr "Udělat snímek obrazovky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:373
+msgid "Acquires a Screenshot of the KVIrc main window"
+msgstr "Udělá snímek obrazovky hlavního okna KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:385
+msgid "Cascade windows"
+msgstr "Okna přes sebe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:386
+msgid "Arranges the MDI windows in a maximized-cascade fashion"
+msgstr "Uspořádá MDI okna maximalizovaně přes sebe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:397
+msgid "Tile windows"
+msgstr "Okna vedle sebe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:398
+msgid "Tiles the MDI windows with the currently selected tile method"
+msgstr "Uspořádá okna podle zvolené metody vedle sebe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:409
+msgid "Minimize all windows"
+msgstr "Minimalizovat všechna okna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:410
+msgid "Minimized all the currently visible MDI windows"
+msgstr "Minimalizuje všechny viditelné MDI okna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:421
+msgid "New IRC Context"
+msgstr "Nový IRC kontext"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:422
+msgid "Creates a new IRC context console"
+msgstr "Vytvoří konzoli nového IRC kontextu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:433
+msgid "Quit KVIrc"
+msgstr "Ukončit KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:434
+msgid "Quits KVIrc closing all the current connections"
+msgstr "Ukončí KVIrc uzavřením všech současných spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:448
+msgid "IRC Context Display"
+msgstr "IRC Kontext zobrazení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:449
+msgid "Shows a small display with IRC context informations"
+msgstr "Zobrazí malou obrazovku s informacemi IRC kontextu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:520
+msgid "Acts as a separator for other items: performs no action"
+msgstr "Chová se jako oddělovač položek: neprovádí žádnou akci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:554
+msgid "Connect/Disconnect"
+msgstr "Spojení/Odpojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:555
+msgid ""
+"Allows you to connect to a server or to terminate the current connection"
+msgstr "Umožní připojení k serveru nebo zrušení současného spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:628
+msgid "Connect"
+msgstr "Připojit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:629
+msgid "Abort Connection"
+msgstr "Přerušit spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:790
+msgid "Join Channel"
+msgstr "Přijít do kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:791
+msgid "Shows a popup menu that allows quickly selecting a channel to join"
+msgstr "Zobrazí dialog, který umožňuje rychlý příchod do kanálů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:851
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:863
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:896
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:907
+msgid "Other..."
+msgstr "Ostatní..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:834
+msgid "Change Nickname"
+msgstr "Změnit přezdívku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:835
+msgid "Shows a popup menu that allows quickly changing the nickname"
+msgstr "Zobrazí dialog, který umožňuje ryhlou změnu přezdívky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:883
+msgid "Connect To"
+msgstr "Připojit k"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:884
+msgid "Shows a popup menu that allows quickly connecting to a server"
+msgstr "Zobrazí dialog, který umožňuje ryhlé připojení k serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:929
+msgid "User Mode"
+msgstr "Uživatelský mód"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:930
+msgid "Shows a popup menu that allows quickly changing user modes"
+msgstr "Zobrazí dialog, který umožňuje ryhlou změnu uživatelských módů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:947
+msgid "Wallops (+w)"
+msgstr "Wallops (+w)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:949
+msgid "Server Notices (+s)"
+msgstr "Oznámení serveru (+s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:951
+msgid "Invisible (+i)"
+msgstr "Neviditelný (+i)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:997
+msgid "Away/Back"
+msgstr "Pryč/Návrat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:998
+msgid "Allows entering and leaving away state"
+msgstr "Umožní vstup a opuštění pryč módu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1065
+msgid "Enter Away Mode"
+msgstr "Vstoupit do Pryč módu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1066
+msgid "Leave Away Mode"
+msgstr "Opustit Pryč mód"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1135
+msgid "Irc Tools"
+msgstr "IRC Nástroje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1136
+msgid "Shows a popup menu with some IRC Tools"
+msgstr "Zobrazit popup menu s IRC nástroji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1171
+msgid "Irc Actions"
+msgstr "IRC Akce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1172
+msgid "Shows a popup menu with some IRC Actions"
+msgstr "Zobrazit popup menu s IRC akcemi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:412
+msgid "KVIrc KVS Script"
+msgstr "KVIrc KVS skript"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:174
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:420
+msgid "Run KVS Script"
+msgstr "Spustit KVS Skript"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:284
+msgid "URL:IRC Protocol"
+msgstr "URL:IRC Protokol"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:383
+msgid "Open with KVIrc"
+msgstr "Otevřít s KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:436
+msgid "KVIrc Configuration File"
+msgstr "Konfigurační soubor KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:453
+msgid "KVIrc Theme Package"
+msgstr "Balíček tématu KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:461
+msgid "Install Theme Package"
+msgstr "Instalovat balíček motivu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:478
+msgid "KVIrc Addon Package"
+msgstr "Balíček addonu KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:486
+msgid "Install Package"
+msgstr "Nainstalovat balíček"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:749
+#, c-format
+msgid ""
+"Ops...it looks like I can't load modules on this sytem.\n"
+"I have been looking for the %s library but I haven't been able to load it\n"
+"due to the following error: \"%s\"\n"
+"Aborting."
+msgstr ""
+"Oops...vypadá to, že nemůžu načíst moduly v tomto systému.\n"
+"Hledám %s knihovnu, ale nemůžu ji načíst\n"
+"kvůli následující chybě: \"%s\"\n"
+"Přerušuji."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:762
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_begin\" function.\n"
+"Aborting!"
+msgstr ""
+"Oops...to vypadá, že máte poškozenou distribuci.\n"
+"Setup modul neexportuje funkci \"setup_begin\".\n"
+"Přerušuji!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:776
+msgid "Setup aborted"
+msgstr "Nastavení přerušeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:801
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_finish\" function.\n"
+"Trying to continue anyway..."
+msgstr ""
+"Oops...to vypadá, že máte poškozenou distribuci.\n"
+"Setup modul neexportuje funkci \"setup_finish\".\n"
+"Zkouším pokračovat i tak..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:186
+msgid "%Q is on IRC"
+msgstr "%Q je na IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:248
+msgid "%Q has left IRC"
+msgstr "%Q opustil IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:368
+msgid "Notify list: No users to check for, quitting"
+msgstr "Seznam Oznamování: Nevybráni uživatelé pro kontrolu, konec"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:414
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (15 sec)"
+msgstr ""
+"Seznam Oznamování: Prodleva (%d sek) je příliš krátká, nastavuji na něco "
+"více přijatelného (15 sek)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:428
+msgid "Notify list: Notify list empty, quitting"
+msgstr "Seznam Oznamování: Seznam je prázdný, konec"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:455
+#, c-format
+msgid ""
+"Notify list: ISON delay (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+"Seznam Oznamování: ISON prodleva (%d sek) je příliš krátká, nastavuji na "
+"něco více přijatelného (5 sek)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:491
+msgid "Notify list: Checking for: %Q"
+msgstr "Seznam Oznamování: Kontroluje se: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:535
+msgid ""
+"Notify list: Hey! You've used ISON behind my back? (I might be confused "
+"now...)"
+msgstr ""
+"Seznam Oznamování: Hej! Použili jste ISON bez mého vědomí? (Asi budu teď "
+"zklamaný...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:682
+msgid "registration mask changed, or nickname is being used by someone else"
+msgstr "registrační maska změněna, nebo přezdívku používá ještě někdo jiný"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:686
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (registration mask does not match, or nickname is being used "
+"by someone else)"
+msgstr ""
+"Seznam Oznamování:: \r!n\r%Q\r vypadá jako online, ale maska [%Q@\r!h\r%Q\r] "
+"nesouhlasí (registrační maska nesouhlasí, nebo přezdívku používá ještě někdo "
+"jiný)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:691
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? "
+"(restarting)"
+msgstr ""
+"Seznam Oznamování: Neočekáváná nekonzistence, databáze registrovaných "
+"uživatelů upravována? (restartuji)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:698
+msgid ""
+"Notify list: Unexpected inconsistency, expected \r!n\r%Q\r in the registered "
+"user DB"
+msgstr ""
+"Seznam Oznamování: Neočekávaná nekonzistence, očekáván \r!n\r%Q\r v databázi "
+"registrovaných uživatelů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:712
+#, c-format
+msgid ""
+"Notify list: USERHOST delay (%d sec) is too short, resetting to something "
+"more reasonable (5 sec)"
+msgstr ""
+"Seznam Oznamování: USERHOST prodleva (%d sek) je příliš krátká, nastavuje se "
+"na něco více přijatelného (5 sek)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:726
+msgid "Notify list: Unexpected inconsistency, userhost list is empty!"
+msgstr ""
+"Seznam Oznamování: Neočekávaná nekonzistence, seznam userhost je prázdný!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:761
+msgid "Notify list: Checking userhost for: %Q"
+msgstr "Seznam Oznamování: Kontroluje se userhost: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:831
+msgid ""
+"Notify list: Hey! You've used USERHOST behind my back? (I might be confused "
+"now...)"
+msgstr ""
+"Seznam Oznamování:: Hej! Použili jste USERHOST bez mého vědomí? (Asi budu "
+"teď zklamaný...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:836
+#, c-format
+msgid "Notify list: Broken USERHOST reply from the server? (%s)"
+msgstr "Seznam Oznamování: Poškozená USERHOST odezva od serveru? (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:860
+msgid ""
+"Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST reply "
+"was received, will recheck in the next loop"
+msgstr ""
+"Seznam Oznamovánít: \r!n\r%Q\r vypadá jako offline ještě před obdrženou "
+"USERHOST odezvou, zkusíme zkontrolovat v další smyčce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:931
+msgid "Starting notify list"
+msgstr "Zahajuji vypisování seznamu oznamování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:936
+msgid "No users in the notify list"
+msgstr "Žádní uživatelé nejsou v seznamu oznamování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:958
+msgid "Notify list: Checking for:%Q"
+msgstr "Seznam Oznamování: Kontroluje se: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1013
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+"Seznam Oznamování: Prodleva (%d sek) je příliš krátká, nastavuji na něco "
+"více přijatelnějšího (5 sek)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1139
+msgid "Notify list: Adding watch entries for%Q"
+msgstr "Seznam Oznamování: Přidány watch záznamy pro %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1171
+msgid "watch entry listing requested by user"
+msgstr "seznam watch požadován uživatelem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1175
+msgid "possible watch list desync"
+msgstr "možná desynchronizace watch seznamu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1185
+msgid "registration mask changed or desync with the watch service"
+msgstr "registrační maska změněna nebo desynchronizace s watch službou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1190
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (watch: registration mask does not match, or nickname is "
+"being used by someone else)"
+msgstr ""
+"Seznam Oznamování: \r!n\r%Q\r vypadá, že je online, ale maska [%Q@\r!h\r%Q"
+"\r] nesouhlasí (watch: registrační maska nesouhlasí, nebo přezdívku používá "
+"ještě někdo jiný)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1197
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? (watch: "
+"restarting)"
+msgstr ""
+"Seznam Oznamování: Neočekávaná nekonzistence, databáze registrovaných "
+"uživatelů modifikována? (watch: restartuji)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1207
+msgid "watch entry added by user"
+msgstr "watch záznam přidaný uživatelem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1245
+msgid "removed from watch list"
+msgstr "odebrán z watch seznamu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1248
+msgid "Notify list: Stopped watching for \r!n\r%Q\r"
+msgstr "Seznam Oznamování: Zastaven watch pro \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1258
+msgid "watch"
+msgstr "watch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1264
+msgid "Notify list: \r!n\r%Q\r is offline (watch)"
+msgstr "Seznam oznamování: \r!n\r%Q\r je offline (watch)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1267
+msgid "unmatched watch list entry"
+msgstr "neexistující záznam watch seznamu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:80
+msgid "commandline::userfriendly"
+msgstr "příkazový řádek::uživatelský"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:94
+msgid "commandline::kvs"
+msgstr "příkazový řádek::kvs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:127
+msgid "You are not connected to a server"
+msgstr "Nejste připojeni k serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_iconmanager.cpp:372
+msgid "Icon Table"
+msgstr "Tabulka ikon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:190
+msgid "No "
+msgstr "Ne "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:196
+msgid "This module has no version informations: refusing to load it"
+msgstr "Tento modul neobsahuje informace o verzi: odmítá se načtení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:204
+msgid ""
+"This module was compiled for a different KVIrc version and can't be loaded"
+msgstr "Tento modul byl kompilován pro jinou verzi KVIrc a nemůže být načten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:232
+msgid "Failed to execute the init routine"
+msgstr "Selhalo spuštění inicializační rutiny"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:261
+#, c-format
+msgid "Loaded module '%s' (%s)"
+msgstr "Nahrán modul '%s' (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:306
+#, c-format
+msgid "Unloaded module '%s'"
+msgstr "Smazán modul '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:45
+msgid "This window has no associated irc context"
+msgstr "Toto okno nemá asociován žádný irc kontext"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:50
+#, c-format
+msgid "No such irc context (%d)"
+msgstr "Žádný irc kontext (%d)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:147
+msgid "Global idle timer must be started before using $my.globalIdle function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:103
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:215
+msgid "Window %Q not found"
+msgstr "Okno %Q nenalezeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:108
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:220
+msgid "Missing window id after the 'w' switch"
+msgstr "Chybí id okna za 'w' přepínačem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:121
+msgid "Can't log to file %Q"
+msgstr "Nelze logovat do souboru %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:123
+msgid "This window has no logging capabilities"
+msgstr "Toto okno nemá možnost logování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:275
+msgid "Window with id '%Q' not found, returning empty string"
+msgstr "Okno s id '%Q' nenalezeno, vrací prázdný řetězec"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:598
+msgid "Sound file '%Q' not found"
+msgstr "Zvukový soubor '%Q' nenalezen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:604
+msgid "Unable to play sound '%Q'"
+msgstr "Nelze přehrát zvuk '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:615
+msgid "Sorry , I can't find a sound system to use on this machine"
+msgstr "Lituji, nelze nalézt zvukový systém pro použití na tomto stroji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:617
+#, c-format
+msgid "Sound system detected to: %s"
+msgstr "Zvukový systém detekován jako: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:141
+msgid "Show at startup"
+msgstr "Zobrazit při spuštění"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:154
+msgid "Did you know..."
+msgstr "Víte, že..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:220
+msgid "<b>Can't find any tip... :(</b>"
+msgstr "<b>Nelze nalézt žádný tip... :(</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1544
+msgid "%Q algorytm is not supported"
+msgstr "%Q algoritmus není podporován"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1566
+msgid ""
+"KVIrc is compiled without OpenSSL support. $str.digest function disabled"
+msgstr ""
+"KVIrc je zkompilován bez podpory OpenSSL. Funkce $str.digest je vypnuta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2030
+msgid "Invalid argument for ?d escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2034
+msgid "Missing argument for ?d escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2066
+msgid "Invalid argument for ?u escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2070
+msgid "Missing argument for ?u escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2097
+msgid "Invalid argument for ?x escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2101
+msgid "Missing argument for ?x escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2128
+msgid "Invalid argument for ?X escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2132
+msgid "Missing argument for ?X escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2189
+msgid "Invalid argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2193
+msgid "Missing argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:87
+msgid "Show URL List"
+msgstr "Zobrazit seznam URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:88
+msgid "Shows the URL list window"
+msgstr "Zobrazí okno se seznamem URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:124
+msgid "&Configure"
+msgstr "&Nastavit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:126
+msgid "Clo&se"
+msgstr "Za&vřít"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:127
+msgid "&Module"
+msgstr "&Modul"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:130
+msgid "&Load"
+msgstr "&Nahrát"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:131
+msgid "&Save"
+msgstr "&Uložit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:132
+msgid "&Clear"
+msgstr "&Vymazat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:133
+msgid "&List"
+msgstr "&Seznam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:136
+msgid "URL"
+msgstr "URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:137
+msgid "Window"
+msgstr "Okno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:138
+msgid "Count"
+msgstr "Počet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:139
+msgid "Timestamp"
+msgstr "Měření času"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:113
+msgid "Warning - KVIrc"
+msgstr "Upozornění - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+msgid "Select an URL."
+msgstr "Vyberte URL."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:115
+msgid "&Remove"
+msgstr "&Odebrat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:269
+msgid "&Find Text"
+msgstr "&Hledat text"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:280
+msgid "&Say to Window"
+msgstr "Ří&ct do okna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+msgid "Window not found."
+msgstr "Okno nenalezeno."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:349
+msgid "URL Module Configuration"
+msgstr "Nastavení URL modulu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:356
+msgid "Save URL list on module unload"
+msgstr "Uložit seznam URL při odstranění modulu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:360
+msgid "Save columns width on URL list close"
+msgstr "Uložit šířku sloupců při zavření seznamu URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1187
+msgid "&Cancel"
+msgstr "&Zrušit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:432
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1328
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:458
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1186
+msgid "&OK"
+msgstr "&OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:423
+msgid "Enable URL ban list"
+msgstr "Povolit seznam URL banů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:435
+msgid "&Add Ban"
+msgstr "&Přidat Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:440
+msgid "&Remove Selected"
+msgstr "&Odebrat vybrané"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "URL Ban List"
+msgstr "Seznam URL banů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+msgid "Select a ban."
+msgstr "Vyberte ban."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:797
+msgid "View URL list"
+msgstr "Zobrazit seznam URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:49
+msgid "Can't find the window with id '%Q'"
+msgstr "Nelze nalézt okno s id '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:53
+msgid "The specified window (%Q) is not a channel"
+msgstr "Zadané okno (%Q) není kanál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:78
+msgid "Destinaion file exists: no copy made"
+msgstr "Cílový soubor existuje: kopie nevytvořena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:83
+msgid "Failed to copy from %Q to %Q"
+msgstr "Selhalo kopírování %Q do %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:84
+msgid "Either the source doesn't exist or the destination can not be created"
+msgstr "Buď neexistuje zdroj, nebo nemůže být vytvořen cíl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:203
+msgid "Failed to write to file %Q: the destination couldn't be opened"
+msgstr "Selhal zápis do souboru %Q: cíl nemůže být otevřen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:244
+msgid "Destination file exists: file not renamed"
+msgstr "Cílový soubor existuje: soubor nebyl přejmenován"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:247
+msgid "Failed to rename %Q to %Q"
+msgstr "Selhalo přejmenování %Q na %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:281
+msgid "Failed to make the directory %Q"
+msgstr "Selhalo vytvoření adresáře %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:322
+msgid "Failed to remove the file %Q"
+msgstr "Selhalo smazání souboru %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:365
+msgid "Failed to remove the directory %Q"
+msgstr "Selhalo smazání adresáře %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:482
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:628
+msgid "The specified directory does not exist '%Q'"
+msgstr "Určený adresář neexistuje '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:730
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:824
+msgid "Can't open the file \"%Q\" for reading"
+msgstr "Nelze otevřít soubor \"%Q\" pro čtení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:746
+msgid "Read error for file %Q"
+msgstr "Chyba při čtení souboru %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:754
+msgid ""
+"Read error for file %Q (have been unable to read the requested size in 1000 "
+"retries)"
+msgstr ""
+"Chyba při čtení souboru %Q (nešel přečíst v požadované velikosti během 1000 "
+"pokusů)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:920
+msgid "Can't open the file \"%Q\" for writing"
+msgstr "Nelze otevřít soubor \"%Q\" pro zápis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/index.cpp:473
+msgid "Untitled"
+msgstr "Nepojmenovaný"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+msgid "Indexing help files"
+msgstr "Inexuji soubory nápovědy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:87
+msgid "Index"
+msgstr "Obsah"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:99
+msgid "Refresh index"
+msgstr "Obnovit index"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:211
+msgid "Full Text Search"
+msgstr "Fulltextové vyhledávání"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:203
+msgid "Using a wildcard within phrases is not allowed."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:212
+msgid "The closing quotation mark is missing."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:312
+msgid "Help Browser"
+msgstr "Prohlížeč nápovědy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:201
+msgid "Request List"
+msgstr "Stáhnout seznam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:207
+msgid "Stop list download"
+msgstr "Zastavit stahování seznamu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:211
+msgid ""
+"<center><b>/LIST command parameters:</b><br>Many servers accept special "
+"parameters that allow you to filter the returned entries.<br>Commonly, "
+"masked channel names (*kvirc*) are accepted as parameters, as well as "
+"strings like <b>c&lt;n</b> or <b>c&gt;n</b> where <b>n</b> is the minimum or "
+"maximum of users on the channel.</center>"
+msgstr ""
+"<center><b>Parametry příkazu /LIST:</b><br>Mnoho serverů přijímá speciální "
+"parametry, které vám umožňují filtrovat vrácené hodnoty.<br>Většinou "
+"maskované názvy kanálů (*kvirc*) jsou přijímány jako parametry, stejně tak "
+"znaky jako <b>c&lt;n</b> nebo <b>c&gt;n</b> kde <b>n</b> je minimum, nebo "
+"maximum uživatelů na kanálu.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:220
+msgid "Users"
+msgstr "Uživatelů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:221
+msgid "Topic"
+msgstr "Téma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:262
+msgid "Sent list request, waiting for reply..."
+msgstr "Zaslán požadavek seznamu, čeká se na odezvu..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:265
+msgid "Cannot request list: No active connection"
+msgstr "Nelze požadovat seznam kanálů: Není žádné aktivní spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:389
+msgid "Stopping the list download..."
+msgstr "Zastavuje se stahování seznamu..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:276
+msgid "Cannot stop list download, no active connection."
+msgstr "Nelze zastavit stahování seznamu, není žádné aktivní spojení."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:125
+#, c-format
+msgid "Connected to %s (%s)"
+msgstr "Připojen k %s (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:293
+msgid "List cannot be requested: Not connected to a server"
+msgstr "Seznam kanálů nemůže být žádán: Nejste připojeni na server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:316
+#, c-format
+msgid "Channel List [IRC Context %u]"
+msgstr "Seznam kanálů [IRC kontext %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:319
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel List</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Seznam Kanálů</b></font> <font color=\"%s\">[IRC "
+"kontext %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:326
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel list</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Seznam kanálů</b></font> <font color=\"%s\">[IRC "
+"kontext %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:342
+msgid "You cannot export an empty list"
+msgstr "Nemůžete exportovat prázdný seznam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:350
+msgid "Channel list for %Q - %Q"
+msgstr "Seznam kanálů pro %Q - %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:353
+msgid "Channel list"
+msgstr "Seznam kanálů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:382
+msgid "Choose filename"
+msgstr "Vyberte soubor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:356
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:383
+msgid "Configuration files (*.kvc)"
+msgstr "Konfigurační soubory (*.kvc)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:398
+msgid "Reset"
+msgstr "Obnovit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:435
+msgid "Channels list download finished"
+msgstr "Stažení seznamu kanálů dokončeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:472
+msgid "Processing list: %Q"
+msgstr "Zpracovává se seznam: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/libkvilist.cpp:63
+msgid "List window alread open for this IRC context"
+msgstr "Okno se seznamem kanálů je již otevřené v tomto IRC kontextu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:70
+msgid "Terminal"
+msgstr "Terminál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:73
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:77
+#, c-format
+msgid "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+msgstr "<nobr><font color=\"%s\"><b>Terminál</b></font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:59
+msgid "Terminal emulator"
+msgstr "Emulátor terminálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:63
+msgid "Close this window"
+msgstr "Zavřít toto okno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:91
+msgid "Can't create the terminal emulation part"
+msgstr "Nelze vytvořit část emulace terminálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:96
+msgid "Can't retrieve the terminal emulation factory"
+msgstr "Nelze zjistit nastavení emulátoru terminálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:95
+msgid "KVIrc"
+msgstr "KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:98
+msgid "Context"
+msgstr "Kontext"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:155
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:100
+msgid "Away"
+msgstr "Pryč"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:102
+msgid "&Configure KVIrc..."
+msgstr "&Konfigurovat KVIrc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:104
+msgid "&About KVIrc"
+msgstr "&O aplikaci KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:109
+msgid "Un&dock"
+msgstr "O&ddokovat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:168
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:112
+msgid "Ctrl+Q"
+msgstr "Ctrl+Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:143
+msgid "Nothing is happening..."
+msgstr "Nic se nestalo..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:285
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:144
+msgid "Just idling..."
+msgstr "Zrovna idlím..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:145
+msgid "Dum de dum de dum..."
+msgstr "Dum de dum de dum..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:146
+msgid "Hey man... do something!"
+msgstr "Hej člověče... dělej něco!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:147
+msgid "Umpf!"
+msgstr "Pfff!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:148
+msgid "Silence speaking"
+msgstr "Šeptání"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:149
+msgid "Are ya here?"
+msgstr "Jseš tu?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:150
+msgid "The world has stopped?"
+msgstr "Svět se zastavil?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:151
+msgid "Everything is all right"
+msgstr "Všechno je v pořádku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:152
+msgid "idle()"
+msgstr "idle()"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:153
+msgid "It's so cold here..."
+msgstr "Je tu příliš zima..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:295
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:154
+msgid "Do not disturb... watching TV"
+msgstr "Nerušit... sleduji TV"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:155
+msgid "Just vegetating"
+msgstr "Vegetím"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:156
+msgid "Hey... are ya sure that your network is up?"
+msgstr "Hej... jsi si jist, že tvoje síť funguje?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:298
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:157
+msgid "Seems like the world has stopped spinning"
+msgstr "Vypadá to, že se svět přestal otáčet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:299
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:158
+msgid "This silence is freaking me out!"
+msgstr "To ticho mě deptá!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:300
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:159
+msgid "Mieeeeeowww!"
+msgstr "Mňaaaaaaauuuu!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:301
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:160
+msgid "idle idle idle idle!"
+msgstr "idle idle idle idle!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Hide Window"
+msgstr "Schovat okno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Show Window"
+msgstr "Zobrazit okno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:428
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:260
+msgid "Away on all"
+msgstr "Pryč všude"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:263
+msgid "Back on all"
+msgstr "Zpátky všude"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:450
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:282
+msgid "Back on %1"
+msgstr "Zpátky na %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:453
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:285
+msgid "Away on %1"
+msgstr "Pryč na %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1238
+msgid "Alias"
+msgstr "Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1217
+msgid "No item selected"
+msgstr "Nebyla vybrána žádná položka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:232
+msgid "Rename"
+msgstr "Přejmenovat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:236
+msgid "Edit the alias or namespace name"
+msgstr "Upravit jméno aliasu nebo jmenného prostoru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+msgid "Add Alias"
+msgstr "Přidat Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:429
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Add Namespace"
+msgstr "Přidat jmenný prostor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:440
+msgid "Remove Selected"
+msgstr "Odebrat vybrané"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:449
+msgid "Export Selected..."
+msgstr "Exportovat vybrané..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:455
+msgid "Export Selected in singles files..."
+msgstr "Exportovat vybrané v samostatných souborech..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:462
+msgid "Export All..."
+msgstr "Exportovat vše..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:470
+msgid "Find In Aliases..."
+msgstr "Hledat v aliasech..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:476
+msgid "Collapse All Namespaces"
+msgstr "Sbalit všechny jmenné prostory"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:508
+msgid "Find In Aliases"
+msgstr "Hledat v aliasech"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:509
+msgid ""
+"Please enter the text to be searched for. The matching aliases will be "
+"highlighted."
+msgstr "Prosím zadejte text pro hledání. Nalezené aliasy budou zvýrazněny."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "Alias Export"
+msgstr "Export aliasu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+msgid "There is not selection!"
+msgstr "Zde není výběr!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:615
+msgid "The file \"%Q\" exists. Do you want to replace it ?"
+msgstr "Soubor \"%Q\" existuje. Chcete jej nahradit?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+msgid "Replace file"
+msgstr "Nahradit soubor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+msgid "Yes to All"
+msgstr "Ano všem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "There exported file would be empty: cowardly refusing to write it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:786
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:411
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1133
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:398
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:745
+msgid "Choose a Filename - KVIrc"
+msgstr "Vyberte název souboru - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Write Failed - KVIrc"
+msgstr "Zápis selhal - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+msgid "Unable to write to the alias file."
+msgstr "Nelze zapisovat do souboru aliasů."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:793
+msgid "Do you really want to remove the alias \"%Q\" ?"
+msgstr "Opravdu chcete smazat alias \"%Q\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:795
+msgid "Do you really want to remove the namespace \"%Q\" ?"
+msgstr "Opravdu chcete smazat jmenný prostor \"%Q\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:797
+msgid "Please note that all the children items will be deleted too."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+msgid "Remove item"
+msgstr "Odebrat položku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:875
+msgid "Missing Alias Name"
+msgstr "Chybí jméno aliasu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:876
+msgid "You must specify a valid name for the alias"
+msgstr "Musíte určit platné jméno pro alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:877
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:890
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:904
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:915
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:946
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:959
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:973
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1128
+msgid "Ok, Let me try again..."
+msgstr "Ok, Zkusíme to znovu..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:888
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:902
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:913
+msgid "Bad Alias Name"
+msgstr "Špatné jméno aliasu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:944
+msgid "Missing Namespace Name"
+msgstr "Chybí jméno jmenného prostoru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:945
+msgid "You must specify a valid name for the namespace"
+msgstr "Musíte určit platné jméno pro jmenný prostor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:957
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:971
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:982
+msgid "Bad Namespace Name"
+msgstr "Špatné jméno jmenného prostoru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:958
+msgid ""
+"Namespace names can contain only letters, digits, underscores and '::' "
+"namespace separators"
+msgstr ""
+"Jmenné prostory mohou obsahovat pouze písmena, číslice, podtržítka a '::' "
+"oddělovače jmenného prostoru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:972
+msgid ""
+"Stray ':' character in namespace name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+"Znak ':' ve jménu jmenného prostoru: mysleli jste ...<jmenný_prostor>::"
+"<jméno> ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:983
+msgid "Found an empty namespace in namespace name"
+msgstr "Nalezen prázdný jmenný prostor v názvu jmenného prostoru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+msgid "Please enter the name for the new alias"
+msgstr "Prosím zadejte název pro nový alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Please enter the name for the new namespace"
+msgstr "Prosím zadejte jméno pro nový jmenný prostor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+msgid "Rename Alias"
+msgstr "Přejmenovat Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+msgid "Please enter the new name for the alias"
+msgstr "Prosím zadejte nový název pro alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Rename Namespace"
+msgstr "Přejmenovat jmenný prostor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Please enter the new name for the namespace"
+msgstr "Prosím zadejte nové jméno jmenného prostoru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1126
+msgid "Alias already exists"
+msgstr "Alias již existuje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1139
+msgid "This name is already in use. Please choose another one."
+msgstr "Jméno se již používá. Prosím vyberte jiné."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1138
+msgid "Namespace already exists"
+msgstr "Jmenný prostor již existuje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1140
+msgid "Ok, let me try again..."
+msgstr "Ok, zkusíme to znovu..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1227
+msgid "Namespace"
+msgstr "Jmenný prostor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1332
+msgid "Alias Editor"
+msgstr "Editor aliasů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:62
+msgid "Join Channels"
+msgstr "Příchod do kanálů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:183
+msgid "Name"
+msgstr "Jméno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:86
+msgid "Password"
+msgstr "Heslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:641
+msgid "&Join"
+msgstr "&Přijít"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:108
+msgid "Show this window after connecting"
+msgstr "Zobrazit toto okno po připojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:163
+msgid "Recent Channels"
+msgstr "Poslední kanály"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:182
+msgid "Registered Channels"
+msgstr "Registrované kanály"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:133
+msgid "Choose the file to share"
+msgstr "Vyberte soubor pro sdílení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:178
+msgid "No such channel/netmask entry in the database"
+msgstr "Žádný záznam kanálu/masky v databázi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:198
+msgid "Registered channel list:"
+msgstr "Seznam registrovaných kanálů:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:208
+#, c-format
+msgid "Channel: %c%s@%s"
+msgstr "Kanál: %c%s@%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:213
+#, c-format
+msgid " Property: %s=%s"
+msgstr " Vlastnost: %s=%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:220
+#, c-format
+msgid "Total %d channels"
+msgstr "Celkem %d kanálů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:86
+msgid "Property Editor"
+msgstr "Editor vlastností"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:101
+msgid "Property"
+msgstr "Vlastnost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:102
+msgid "Value"
+msgstr "Hodnota"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:111
+msgid "&New"
+msgstr "&Nový"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:215
+msgid "Mask Editor"
+msgstr "Editor masek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:219
+msgid ""
+"Insert a mask for this user.<br>It can contain the wildcard characters '*' "
+"and '?'."
+msgstr ""
+"Vložte masku pro tohoto uživatele.<br>Může obsahovat zástupné znaky '*' a "
+"'?'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:230
+msgid ""
+"<center>This the <b>nickname</b> that will match this user, default value is "
+"the registered name.</center>"
+msgstr ""
+"<center>Toto je <b>přezdívka</b>, která je přiřazena k uživateli, výchozí "
+"hodnota je zaregistrované jméno.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:241
+msgid ""
+"<center>This the <b>username</b> that will match this user. <b>*</b> will "
+"match any username.</center>"
+msgstr ""
+"<center>Toto je <b>uživatelské jméno</b>, které je přiřazeno k uživateli. "
+"<b>*</b> znamená jakékoliv uživatelské jméno.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:252
+msgid ""
+"<center>This the <b>hostname</b> that will match this user. <b>*</b> will "
+"match any hostname.</center>"
+msgstr ""
+"<center>Toto je <b>název hostitele</b>, který bude přiřazen k uživateli. "
+"<b>*</b> znamená jakéhokoliv hostitele.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:333
+msgid "Registered User Entry"
+msgstr "Záznam registrovaného uživatele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:145
+msgid "Name:"
+msgstr "Jméno:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:345
+msgid "Comment:"
+msgstr "Komentář:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:355
+msgid "Masks:"
+msgstr "Masky:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:216
+msgid "&Add..."
+msgstr "&Přidat..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:377
+msgid "&Edit"
+msgstr "&Upravit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:385
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:414
+msgid "Identity"
+msgstr "Identita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:393
+msgid "Notify when user is online"
+msgstr "Oznámit, když je uživatel online"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:396
+msgid "Notify nicknames:"
+msgstr "Oznamovat přezdívky:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:401
+msgid "<center>You can enter a space separated list of nicknames.</center>"
+msgstr "<center>Můžete zadat seznam přezdívek oddělený mezerami.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:426
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:383
+msgid "Avatar"
+msgstr "Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:433
+msgid "Use custom color in userlist"
+msgstr "Použít vlastní barvu v seznamu uživatelů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:441
+msgid "All Properties..."
+msgstr "Všechny vlastnosti..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:448
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:231
+msgid "Properties"
+msgstr "Vlastnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:458
+msgid "Enable ignore for this user"
+msgstr "Povolit ignorování pro tohoto uživatele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:460
+msgid "Ignore features"
+msgstr "Ignorovat vlastnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:465
+msgid "Ignore query-messages"
+msgstr "Ingorovat soukromé zprávy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:468
+msgid "Ignore channel-messages"
+msgstr "Ignorovat kanálové zprávy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:471
+msgid "Ignore notice-messages"
+msgstr "Ingorovat oznámení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:474
+msgid "Ignore ctcp-messages"
+msgstr "Ignorovat ctcp zprávy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:477
+msgid "Ignore invites"
+msgstr "Ignorovat pozvání"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:480
+msgid "Ignore DCCs"
+msgstr "Ignorovat DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:486
+msgid "Ignore"
+msgstr "Ignorování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:94
+msgid "Notify disabled"
+msgstr "Oznamování vypnuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:96
+msgid "Notify as: "
+msgstr "Oznámit jako:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:105
+msgid "No comment set"
+msgstr "Komentář nebyl zadán"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:107
+msgid "Comment: "
+msgstr "Komentář:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:176
+msgid "Registered Users - KVIrc"
+msgstr "Registrovaní uživatelé - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:317
+msgid "Flags"
+msgstr "Flagy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:192
+msgid ""
+"<center>This is the list of registered users. KVIrc can automatically "
+"recognize and associate properties to them.<br>Use the buttons on the right "
+"to add, edit and remove entries. The \"notify\" column allows you to quickly "
+"add users to the notify list. Notify list fine-tuning can be performed by "
+"editing the entry properties.</center>"
+msgstr ""
+"<center>Toto je seznam registrovaných uživatelů. KVIrc k nim umí automaticky "
+"rozpoznávat a přiřazovat vlastnosti.<br>Použijte tlačítka vpravo pro "
+"přidání, úpravu, nebo vymazání záznamů. Kolonka \"oznámit\" umožňuje rychle "
+"přidat uživatele do oznamovacího seznamu. Vylepšení oznamovacího seznamu "
+"může být provedeno pomocí editování možností položky.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:208
+msgid "Add (Wizard)..."
+msgstr "Přidat (Průvodce)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:211
+msgid "Add a registered user by means of a user-friendly wizard."
+msgstr ""
+"Přidá registrovaného uživatele pomocí uživatelsky přívětivého průvodce."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:219
+msgid "Open the edit dialog to create a new user entry."
+msgstr "Otevře upravovací dialog pro vytvoření nového uživatelského záznamu."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:223
+msgid "&Add Group..."
+msgstr "&Přidat Skupinu..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:226
+msgid "Adds a new group"
+msgstr "Přidá novou skupinu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:234
+msgid "Remove the currently selected entries."
+msgstr "Odebere právě vybrané záznamy."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:239
+msgid "&Edit..."
+msgstr "&Upravit..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:243
+msgid "Edit the first selected entry."
+msgstr "Upravit první vybraný záznam."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:250
+msgid "Export To..."
+msgstr "Exportovat do..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:254
+msgid ""
+"Export the selected entries to a file.<br>All the data associated with the "
+"selected registered users will be exported.<br>You (or anyone else) can "
+"later import the entries by using the \"Import\" button."
+msgstr ""
+"Exportuje vybrané položky do souboru.<br>Všechna data asociovaná s vybranými "
+"registrovanými uživateli budou exportována.<br>Později můžete (vy, nebo "
+"kdokoliv jiný) importovat záznamy pomocí tlačítka \"Importovat\"."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:259
+msgid "Import From..."
+msgstr "Importovat z..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:262
+msgid ""
+"Import entries from a file exported earlier by the \"export\" function of "
+"this dialog."
+msgstr ""
+"Importuje záznamy ze souboru exportovaného pomocí funkce \"export\" v tomto "
+"dialogu."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:399
+msgid "Group name:"
+msgstr "Název skupiny:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:442
+msgid "Move to group"
+msgstr "Přesunout do skupiny"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:483
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:486
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:487
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:491
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:690
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_useridentity.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:962
+msgid "Default"
+msgstr "Výchozí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:674
+msgid "No entries selected."
+msgstr "Nebyl vybrán žádný záznam."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:687
+msgid "Can't open file %Q for writing."
+msgstr "Nelze otevřít soubor %Q pro zápis."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:772
+msgid "Can't export the registered users database: Write error."
+msgstr "Nelze exportovat databázi registrovaných uživatelů: Chyba zápisu."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:793
+#, c-format
+msgid "Can't open file %s for reading."
+msgstr "Nelze otevřít soubor %s pro čtení."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:804
+#, c-format
+msgid "The file %s doesn't appear to be a valid registered users database."
+msgstr "Soubor %s nevypadá jako platná databáze registrovaných uživatelů."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:811
+#, c-format
+msgid "The file %s contains an invalid registered users database version."
+msgstr "Soubor %s obsahuje neplatnou verzi databáze registrovaných uživatelů."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:892
+msgid "Can't import the registered users database: Read error."
+msgstr "Nelze importovat databázi registrovaných uživatelů: Chyba čtení."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:78
+msgid "User Registration Wizard - KVIrc"
+msgstr "Průvodce registrací uživatele - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:89
+msgid ""
+"<p>Welcome to the user registration wizard.<br>This process allows you to "
+"add an IRC user to the database and set properties for that user. KVIrc will "
+"be (hopefully) able to recognize the user, add him to the notify list, and "
+"display the associated avatar.<br><br>First of all, you must insert an "
+"<b>entry name or real name</b> for the user you're going to register. The "
+"name will be used to identify the database entry and has no specific "
+"requirements, it can be a given name, nickname, or just some text to remind "
+"you of the real person.<br>Examples: \"George W Bush\", \"Dubya\".\n"
+"</p>"
+msgstr ""
+"<p>Vítejte v průvodci pro registraci.<br>Tento průvodce vám umožní přidat "
+"IRC uživatele, přidat ho do databáze a nastavit možnosti. KVIrc bude "
+"(doufejme) schopno rozpoznat uživatele, přidat ho do seznamu oznamování a "
+"zobrazit přiřazeného avatara.<br><br>Nejdříve ze všeho musíte vepsat "
+"<b>jméno záznamu, nebo skutečné jméno</b> uživatele, kterého se chystáte "
+"registrovat. Jméno, které bude identifikovat záznam v databázi, nemá žádné "
+"speciální požadavky. Může to být jméno, přezdívka, nebo to může být text "
+"připomínající vaši skutečnou osobu.<br>Například: \"George W Bush\", \"Dubya"
+"\".\n"
+"</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:97
+msgid "Step 1: Entry Name"
+msgstr "Krok 1: Zadání jména"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:112
+msgid ""
+"<p>A registered user is identified by one or more <b>IRC masks</b>.<br>A "
+"mask must be in the following form:<br><b>nickname!username@hostname</"
+"b><br>and can contain wildcard characters '*' and '?'. Be careful in "
+"choosing the masks, as they are the only way to verify the identity of a "
+"registered user.<br><br>You can enter at most two masks here, if you wish to "
+"add more masks, use the \"<b>Edit</b>\" button in the Registered Users "
+"dialog. You must enter at least one mask.</p>"
+msgstr ""
+"<p>Registrovaný uživatel je identifikován jednou, nebo více <b>IRC maskami</"
+"b>.<br>Maska musí být v následujícím formátu:<br><b>přezdívka!"
+"uživatelskéjméno@hostitel</b><br>a může obsahovat zástupné znaky jako '*' a "
+"'?'. Buďte opatrní ve výběru masky, protože je to jediná cesta, jak "
+"identifikovat registrovaného uživatele.<br><br>Můžete zde napsat nejvýše 2 "
+"masky. Pokud si jich přejete zadat více, použijte tlačítko \"<b>Upravit</b>"
+"\" v dialogu Registrovaní Uživatelé. Musíte vložit nejméně jednu masku.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:170
+msgid "Step 2: Mask Selection"
+msgstr "Krok 2: Výběr masky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:182
+msgid ""
+"<p>If you want to store an avatar image for this user, you can set it here. "
+"KVIrc will show the avatar in the userlist next to the user's nickname."
+"<br>An avatar can be in any supported image format (PNG is recommended). "
+"Keep in mind that KVIrc stores avatars in memory and has to resize them to "
+"fit in the userlist, thus it's better to use small, low-resolution images.</"
+"p>"
+msgstr ""
+"<p>Pokud chcete uložit avatar pro tohoto uživatele, můžete to nastavit tady. "
+"KVIrc může zobrazit avatar v seznamu uživatelů u přezdívky uživatele."
+"<br>Avatar může být v jakémkoliv podporovaném formátu obrázku (PNG je "
+"doporučeno). Nezapomínejte, že KVIrc ukládá avatary do paměti a teprve pak "
+"je upravuje, aby pasovaly do seznamu uživatelů, takže je lepší používat "
+"menší obrázky s nízkým rozlišením.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:190
+msgid "Store an avatar for this user"
+msgstr "Uložit avatar pro tohoto uživatele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:195
+msgid "Step 3: Avatar Selection"
+msgstr "Krok 3: Výběr avataru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:206
+msgid ""
+"<p>If you want to be notified when this user is online or goes offline, you "
+"must specify the list of nicknames that KVIrc will look for.<br><br>You can "
+"enter at most two nicknames here, if you wish to add more nicknames, use the "
+"\"<b>Edit</b>\" button in the Registered Users dialog.</p>"
+msgstr ""
+"<p>Pokud chcete být upozorněni, když se uživatel připojí, nebo odpojí, "
+"musíte zadat seznam přezdívek, které bude KVIrc kontrolovat.<br><br>Můžete "
+"zde zadat nejvíce dvě přezdívky. Pokud si přejete zadat více přezdívek, "
+"použijte tlačítko \"<b>Upravit</b>\" v dialogu Registrovaní Uživatelé.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:215
+msgid "Add this user to the notify list"
+msgstr "Přidat tohoto uživatele do seznamu oznamování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:342
+msgid "Nickname:"
+msgstr "Přezdívka:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:225
+msgid "Nickname 2:"
+msgstr "Přezdívka 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:239
+msgid "Step 4: Notify List"
+msgstr "Krok 4: Seznam oznamování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:251
+msgid ""
+"<p>That's it. The user registration has been completed.<br><br>Click "
+"\"<b>Finish</b>\" to close this dialog.</p>"
+msgstr ""
+"<p>To je ono. Registrace uživatele byla dokončena.<br><br>Klikněte na "
+"\"<b>Dokončit<b>\" pro zavření tohoto dialogu.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:254
+msgid "Registration Complete"
+msgstr "Registrace dokončena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:695
+msgid "No name specified"
+msgstr "Nebylo určeno jméno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:209
+msgid "User already registered: found exact name match"
+msgstr "Uživatel je již registrován: nalezen shodný záznam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:222
+msgid "Mask %Q is already used to identify user %s"
+msgstr "Maska %Q je již použita u uživatele %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:275
+msgid "User not found (%Q)"
+msgstr "Uživatel nenalezen (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:403
+msgid "No mask specified"
+msgstr "Neurčena žádná maska"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:524
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:708
+msgid "User %Q not found"
+msgstr "Uživatel %Q nenalezen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:355
+msgid "Mask %Q already used to identify user %Q"
+msgstr "Maska %Q je již použita u uživatele %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:410
+msgid "Mask %Q not found"
+msgstr "Maska %Q nenalezena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:701
+msgid "No property specified"
+msgstr "Neurčená vlastnost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:808
+msgid "Registered users database dump:"
+msgstr "Výpis databáze registrovaných uživatelů:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:819
+msgid " User: %c%Q"
+msgstr " Uživatel: %c%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:823
+msgid " Warning: this user has no registration masks"
+msgstr " Upozornění: tento uživatel nemá registrační masky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:827
+msgid " Mask: %Q!%Q@%Q"
+msgstr " Maska: %Q!%Q@%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:838
+msgid " Property: %Q=%Q"
+msgstr " Vlastnost: %Q=%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:841
+msgid " No properties"
+msgstr " Bez vlastností"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:847
+#, c-format
+msgid "Total: %d matching users (of %d in the database)"
+msgstr "Celkem: %d nalezeno uživatelů (z %d v databázi)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:197
+msgid "Manage Script-Based Addons"
+msgstr "Spravovat skriptová rozšíření"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1155
+msgid "Configure"
+msgstr "Nastavit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:225
+msgid "Show Help"
+msgstr "Zobrazit Nápovědu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:231
+msgid "Uninstall"
+msgstr "Odinstalovat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:243
+msgid "Install Addon..."
+msgstr "Instalovat rozšíření..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:247
+msgid "More Addons..."
+msgstr "Další rozšíření..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:333
+msgid "Do you really want to uninstall the addon \"%1\" ?"
+msgstr "Opravdu chcete odinstalovat rozšíření \"%1\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+msgid "Confirm addon uninstallation"
+msgstr "Potvrzení odinstalování rozšíření"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:354
+msgid "Please select the addon installation file"
+msgstr "Prosím vyberte instalační soubor rozšíření"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:144
+msgid "%cAddon id %Q, version %Q%c"
+msgstr "%cRozšíření id %Q, verze %Q%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:145
+msgid "Name: %Q"
+msgstr "Jméno: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:67
+msgid "Description: %Q"
+msgstr "Popis: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:152
+#, c-format
+msgid "Total: %d addons installed"
+msgstr "Celkem: %d rozšíření nainstalováno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:192
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:571
+msgid "Uninstalling existing addon version %Q"
+msgstr "Odinstalovává se existující rozšíření verze %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:384
+msgid "The addon \"%1\" does not exist"
+msgstr "Rozšíření \"%1\" neexistuje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:238
+msgid "The addon \"%1\" has no configure callback set"
+msgstr "Rozšíření \"%1\" nemá nastaven configure callback"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:285
+msgid "The addon \"%1\" has no help callback set"
+msgstr "Rozšíření \"%1\" nemá nastaven help callback"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:527
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:377
+msgid "Internal error: call a head-shrinker"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:536
+msgid "The specified version \"%Q\" is not a valid version string"
+msgstr "Zadaná verze \"%Q\" má neplatný řetězec verze"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:542
+msgid "The specified KVIrc version \"%Q\" is not a valid version string"
+msgstr "Zadaná verze KVIrc \"%Q\" má neplatný řetězec verze"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:548
+msgid ""
+"This KVIrc executable is too old to run this addon (minimum version required "
+"is %Q)"
+msgstr ""
+"Tato binárka KVIrc je příliš stará pro běh tohoto rozšíření (minimální "
+"potřebná verze je %Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:553
+msgid "Attempting to register addon \"%Q\" with version %Q"
+msgstr "Probíhá registrace rozšíření \"%Q\" verze %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:565
+msgid ""
+"The script addon \"%Q\" already exists with version %Q which is higher than %"
+"Q"
+msgstr ""
+"Skriptové rozšíření \"%Q\" již existuje ve verzi %Q , která je vyšší než %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:579
+msgid "Script registration failed"
+msgstr "Registrace skriptu selhala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:584
+msgid "Script succesfully registered"
+msgstr "Skript úspěšně registrován"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:102
+#, c-format
+msgid "%s (%s) (%s:%u)"
+msgstr "%s (%s) (%s:%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:104
+#, c-format
+msgid "%s (%s)"
+msgstr "%s (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:107
+#, c-format
+msgid "%s (%s:%u)"
+msgstr "%s (%s:%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:109
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:112
+#, c-format
+msgid "[IDENT]: %s"
+msgstr "[IDENT]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:119
+#, fuzzy
+msgid "Shutting down identd service (spontaneous action)"
+msgstr "Obnovuje se přímé spojení se serverem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:124
+#, fuzzy
+msgid "Shutting down identd service (requested action)"
+msgstr "Obnovuje se přímé spojení se serverem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:225
+#, fuzzy
+msgid "Can't start the ident service : socket() failed"
+msgstr "Nelze vytvořit naslouchací soket : vázání selhalo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:231
+#, fuzzy
+msgid "Can't start the ident service : async setting failed"
+msgstr "Nelze vytvořit naslouchací soket : vázání selhalo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:237
+msgid "Can't enable the ident service : can't setup the listen address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:243
+#, fuzzy
+msgid "Can't start the ident service : bind() failed"
+msgstr "Nelze vytvořit naslouchací soket : vázání selhalo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:249
+#, fuzzy
+msgid "Can't start the ident service : listen() failed"
+msgstr "Nelze vytvořit naslouchací soket : vázání selhalo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:263
+msgid "Can't start the ident service on IpV6 : socket() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:269
+msgid "Can't start the ident service on IpV6 : async setting failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:277
+msgid "Can't enable the ident service on IpV6 : can't setup the listen address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:285
+#, fuzzy
+msgid "Can't start the ident service on IpV6 : bind() failed"
+msgstr "Nelze vytvořit naslouchací soket : vázání selhalo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:294
+#, fuzzy
+msgid "Can't start the ident service on IpV6 : listen() failed"
+msgstr "Nelze vytvořit naslouchací soket : vázání selhalo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:310
+msgid "Starting identd service (IpV4/V6 on separate namespaces)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:313
+msgid "Starting identd service (IpV4/V6 in IpV6 namespace)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:318
+msgid "Starting identd service (IpV4)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:322
+msgid "Service startup (IpV4)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:412
+msgid "Identd accepting connection"
+msgstr "Identd přijímá spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:435
+msgid "Identd socket error : dropping connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:440
+msgid "Identd connection closed by remote host"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:461
+msgid "Identd processing request"
+msgstr "Identd zpracovává požadavek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:476
+msgid "Empty request (EOT ?)"
+msgstr "Prázdný požadavek (EOT ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:487
+msgid "Dropping connection (request too long)"
+msgstr "Přerušuji spojení (požadavek příliš dlouhý)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:500
+msgid "Timed out while waiting for the request : dropping connection"
+msgstr "Vypršela prodleva během čekání na požadavek: přerušuji spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/libkvilinks.cpp:74
+msgid "Links window alread open for this IRC context"
+msgstr "Okno s Linky je již otevřeno pro tento IRC kontext"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:57
+msgid "Request Links"
+msgstr "Zjistit Linky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:70
+msgid "Link"
+msgstr "Link"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:71
+msgid "Hops"
+msgstr "Hopů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:72
+msgid "Description"
+msgstr "Popis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:90
+msgid "(None)"
+msgstr "(Žádné)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:112
+msgid "Sent links request, waiting for reply..."
+msgstr "Zaslán požadavek linků, čeká se na odezvu..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:115
+msgid "Cannot request links: No active connection"
+msgstr "Nelze požadovat linky: Není aktivní spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:128
+msgid "Links cannot be requested: Not connected to a server"
+msgstr "Linky nemohou být požadovány: Nejste připojeni k serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:153
+msgid "Links for %Q [IRC Context %u]"
+msgstr "Linky pro %Q [IRC kontext %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:164
+msgid ""
+"<nobr><font color=\"%s\"><b>Links for %Q</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Linky pro %Q</b></font> <font color=\"%s\">[IRC "
+"kontext %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:194
+msgid "Received end of links."
+msgstr "Obdržen konec linků."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:235
+#, c-format
+msgid ""
+"Broken link: Missing parent (%s) for %s (%d hops): %s (used /LINKS <mask> ?)"
+msgstr ""
+"Poškozený link: Chybí zdroj (%s) pro %s (%d hopů): %s (použito /LINKS "
+"<maska> ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:238
+#, c-format
+msgid "%s: Parent link %s"
+msgstr "%s: Zdrojový link %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:242
+msgid "Warning: No root link was sent by the server, the stats may be invalid."
+msgstr ""
+"Upozornění: Server neposlal kořenový link, statistiky mohou být neplatné."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:278
+msgid "%c%cLinks for %Q"
+msgstr "%c%cLinky z %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts listed"
+msgstr "Celkem hostitelů v seznamu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts in the network"
+msgstr "Celkem hostitelů v síti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:282
+#, c-format
+msgid "Wildcard servers (hubs?): %d"
+msgstr "Zástupné servery (huby?): %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:283
+msgid "Direct links: %d (~%d.%d %)"
+msgstr "Přímých linků: %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:284
+msgid "Close links (1 <= hops <= 3): %d (~%d.%d %)"
+msgstr "Blízkých linků (1 <= hopů <= 3): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:285
+msgid "Mid-range links (4 <= hops <= 6): %d (~%d.%d %)"
+msgstr "Středně vzdálených linků (4 <= hopů <= 6): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:286
+msgid "Distant links (7 <= hops): %d (~%d.%d %)"
+msgstr "Vzdálených linků (7 <= hopů): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:287
+#, c-format
+msgid "Broken (unknown) links: %d"
+msgstr "Poruchy (neznámé) linky: %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:288
+#, c-format
+msgid "Maximum links per host: %d [%s]"
+msgstr "Maximálně linků na hostitele: %d [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:289
+#, c-format
+msgid "Total links: %d"
+msgstr "Celkem linků: %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:290
+#, c-format
+msgid "Maximum hops: %d [%s]"
+msgstr "Maximálně hopů: %d [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:291
+#, c-format
+msgid "Average hops: ~%d.%d"
+msgstr "Průměrně hopů: ~%d.%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:294
+msgid "Incomplete LINKS result, no stats available"
+msgstr "Nekompletní LINKS výsledek, statistiky nedostupné"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:747
+msgid "You're not connected to a server"
+msgstr "Nejste připojeni k serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:404
+#, c-format
+msgid "Processing link: %s"
+msgstr "Zpracovávám link: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:419
+msgid "Broken message syntax, can't extract hops number, assuming 0"
+msgstr "Poškozená syntaxe zprávy, nelze získat počet hopů, nastavuji 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:86
+msgid "< &Back"
+msgstr "< &Zpět"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:87
+msgid "&Next >"
+msgstr "&Další >"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:282
+msgid "Finish"
+msgstr "Hotovo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:164
+msgid ""
+"<p><h2>Welcome :)</h2>This is your first time running this version of KVIrc."
+"<br>This wizard will guide you through the few steps required to complete "
+"the setup.<br><br>If you had a previous version of KVIrc installed, no "
+"worries. You will have a chance to preserve the old configuration.</"
+"p><p>Click \"<b>Next</b>\" to proceed.</p>"
+msgstr ""
+"<p><h2>Vítejte :)</h2>Toto je vaše první spuštění této verze KVIrc.<br>Tento "
+"průvodce vám pomůže projít nezbytnými kroky potřebnými k dokončení nastavení."
+"<br><br>Pokud máte nainstalovanou předchozí verzi KVIrc, tak žádné obavy. "
+"Budete mít možnost zachovat starou konfiguraci.</p><p>Klikněte na "
+"\"<b>Další</b>\" pro pokračování.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:176
+msgid "Welcome to KVIrc"
+msgstr "Vítejte v KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:187
+msgid ""
+"<p>All of the files in this distribution are covered by the GPL. In human "
+"terms this can be read as follows:<br><ul><li><b>KVIrc is free</b>, use it, "
+"have fun! <b>:)</b></li><li>If you use <b>any</b> part of KVIrc in your own "
+"project, you <b>must</b> release that project under the same license.</li></"
+"ul></p><p>The \"legalese\" version of the license is shown in the box below."
+"</p>"
+msgstr ""
+"<p>Všechny soubory v této distribuci jsou vydány pod GPL. V srozumitelné "
+"podobě to může být vyloženo asi takto:<br><ul><li><b>KVIrc je svobodné</b>, "
+"používejte ho, užívejte si ho! <b>:)</b></li><li>Pokud použijete "
+"<b>jakoukoliv</b> část KVIrc ve vašem vlastním projektu, <b>musíte</b> vydat "
+"tento projekt pod stejnou licencí.</li></ul></p><p>\"Zkrácená\" verze "
+"licence je zobrazena v rámečku dole.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:203
+msgid ""
+"Oops... can't find the license file.\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+"Oops... nemohu najít licenční soubor.\n"
+"MUSÍ být obsažen v distribuci...\n"
+"Prosím ohlašte na <pragma at kvirc dot net>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:211
+msgid "Dreaded License Agreement"
+msgstr "Obávané licenční ujednání"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:215
+msgid "KVIrc Setup"
+msgstr "KVIrc Nastavení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:224
+msgid ""
+"<p>Please choose a folder for KVIrc to store its settings and other data, "
+"and another for downloaded files. Make sure that you have permission to "
+"write to both folders.<br><br>The suggested locations are fine in most "
+"cases, so if you don't know what is this about, just click \"<b>Next</b>\"."
+"<br><br>If you had a previous version of KVIrc installed, you can choose the "
+"existing directory for the settings, and your configuration will be "
+"preserved.</p>"
+msgstr ""
+"<p>Prosím vyberte adresář, kam KVIrc uloží nastavení a data, a jiný adresář "
+"pro ukládání stažených souborů. Ujistěte se, že máte práva k zapisování do "
+"obou adresářů.<br><br>Doporučená umístění jsou v mnoha případech v pořádku, "
+"takže pokud nevíte, jenom klikněte na \"<b>Další</b>\".<br><br>Pokud máte "
+"nainstalovanou předchozí verzi KVIrc, můžete vybrat existující adresář a "
+"vaše konfigurace bude zachována.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:234
+msgid "Application Folders"
+msgstr "Složky aplikace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:238
+msgid "Store configuration in folder"
+msgstr "Uložit konfiguraci v adresáři"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:239
+msgid "Use settings folder from previous installation"
+msgstr "Použít adresář nastavení z předchozí instalace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:251
+msgid "Use new settings folder"
+msgstr "Použít nový adresář nastavení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:255
+msgid "Settings folder:"
+msgstr "Adresář nastavení:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:281
+msgid "Download files to folder:"
+msgstr "Stažené soubory do adresáře:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:304
+msgid "All settings in shared program folder (portable)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:325
+msgid ""
+"Please choose a Nickname.<br><br>Your nickname is the name that other IRC "
+"users will know you by. It can't contain spaces or punctuation. Some IRC "
+"networks will shorten your nickname if it is more than 32 characters long."
+"<br><br>If in doubt, just enter the first nick that comes to mind. You will "
+"be able to change it later in the Identity properties, or with the /NICK "
+"command."
+msgstr ""
+"Prosím vyberte Přezdívku.<br><br>Vaše přezdívka je jméno, pod kterým vás "
+"budou ostatní na IRC znát. Nemůže obsahovat mezery, ani čárky. Některé IRC "
+"sítě zkrátí vaši přezdívku, pokud je více jak 32 znaků dlouhá.<br><br>Pokud "
+"máte pochybnosti, tak napište první věc, která vás napadne. Budete moci jí "
+"změnit později v nastavení Identita, nebo pomocí příkazu /NICK."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:348
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:353
+msgid "Profile"
+msgstr "Profil"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:355
+msgid "Real name:"
+msgstr "Skutečné jméno:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:361
+msgid "Age:"
+msgstr "Věk:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:392
+msgid "Unspecified"
+msgstr "Neurčeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:405
+msgid "Location:"
+msgstr "Umístění:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:408
+msgid "Languages:"
+msgstr "Jazyky:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:491
+msgid ""
+"<p>Here you can choose how much KVIrc will integrate with your system."
+"<br><br>The default settings are fine for most users so if you're in doubt "
+"just click \"<b>Next</b>\" and go to the next screen.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:501
+msgid "Desktop Integration"
+msgstr "Integrace s desktopem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:504
+msgid "Make KVIrc default IRC client"
+msgstr "Nastavit KVIrc jako výchozí IRC klient"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:508
+msgid "Create desktop shortcut"
+msgstr "Vytvořit zástupce na ploše"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:513
+msgid "Import server list from mIRC"
+msgstr "Importovat seznam serverů z mIRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:727
+msgid "Choose an Old Configuration Folder - KVIrc Setup"
+msgstr "Vyberte původní adresář konfigurace - KVIrc Nastavení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:736
+msgid "Do not overwrite folder? - KVIrc"
+msgstr "Nepřepisovat adresář? - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:737
+msgid ""
+"A folder %1 seems to be not a valid KVIrc settings folder.Do you want to use "
+"it anyway?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:753
+msgid "Choose a Configuration Folder - KVIrc Setup"
+msgstr "Vyberte adresář konfigurace - KVIrc Nastavení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:764
+msgid "Choose a Download Folder - KVIrc Setup"
+msgstr "Vyberte adresář pro stahování - KVIrc Nastavení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:933
+msgid "Abort Setup - KVIrc Setup"
+msgstr "Přerušit Nastavení - KVIrc Nastavení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:934
+msgid ""
+"You have chosen to abort the setup.<br>KVIrc cannot run until you complete "
+"this procedure.<br><br>Do you really wish to abort?"
+msgstr ""
+"Zvolili jste ukončení instalace.<br>KVIrc nemůže být spuštěno, dokud "
+"nedokončíte instalační proces.<br><br>Opravdu si přejete ukončit?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:965
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:996
+#, c-format
+msgid ""
+"Cannot create directory %s.\n"
+"You may not have write permission for that path. Please go back and choose "
+"another directory."
+msgstr ""
+"Nelze vytvořit adresář %s.\n"
+"Nemáte právo pro zápis pro tuto cestu. Prosím vraťte se zpět a vyberte jiný "
+"adresář."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+msgid "Package saved succesfully"
+msgstr "Balíček úspěšně uložen "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:80
+msgid "Event"
+msgstr "Akce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1046
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:92
+msgid "&Export All To..."
+msgstr "&Exportovat vše jako..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:90
+msgid "Edit the event handler name."
+msgstr "Upravit název handleru události."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:154
+msgid "&Enable Handler"
+msgstr "&Povolit handler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:158
+msgid "&Disable Handler"
+msgstr "&Zakázat handler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:162
+msgid "Re&move Handler"
+msgstr "S&mazat handler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:164
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:166
+msgid "&Export Handler To..."
+msgstr "&Exportovat handler do..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:171
+msgid "&New Handler"
+msgstr "&Nový handler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:190
+msgid "unnamed"
+msgstr "nepojmenovaný"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:215
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:250
+msgid "default"
+msgstr "výchozí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:314
+msgid "none"
+msgstr "žádný"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:318
+#, c-format
+msgid ""
+"\n"
+"\n"
+"\tEvent:\n"
+"\t\t%s\n"
+"\n"
+"\tParameters:\n"
+"%s"
+msgstr ""
+"\n"
+"\n"
+"\tUdálost:\n"
+"\t\t%s\n"
+"\n"
+"\tParametry:\n"
+"%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+msgid "Unable to write to the event file."
+msgstr "Nelze zapisovat do souboru událostí."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+msgid "Unable to write to the events file."
+msgstr "Nelze zapisovat do souboru událostí."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:486
+msgid "Event Editor"
+msgstr "Editor událostí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:77
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:213
+msgid "Item"
+msgstr "Položka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:80
+msgid "Submenu"
+msgstr "Submenu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:83
+msgid "External Menu"
+msgstr "Externí Menu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:136
+msgid "Label"
+msgstr "Návěstí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:93
+msgid "### Epilogue ###"
+msgstr "### Závěr ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:94
+msgid "Epilogue"
+msgstr "Závěr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:97
+msgid "### Prologue ###"
+msgstr "### Úvod ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:98
+msgid "Prologue"
+msgstr "Úvod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:198
+msgid "Popup name"
+msgstr "Název Popupu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:202
+msgid "Test"
+msgstr "Testovat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:230
+msgid "Text:"
+msgstr "Text:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:236
+msgid ""
+"<center><b>Visible text</b><br>May contain identifiers that will be "
+"evaluated at popup call time.<br>For labels, this text can contain also "
+"limited HTML tags.</center>"
+msgstr ""
+"<center><b>Viditelný text</b><br>Může obsahovat identifikátory, které budou "
+"provedeny při zavolání popup.<br>Pro návěstí může také obsahovat i "
+"limitované HTML tagy.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:239
+msgid "Condition:"
+msgstr "Podmínka:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:245
+msgid ""
+"<center><b>Boolean condition</b><br>Will be evaluated at popup call time in "
+"order to decide if this entry has to be shown.<br>An empty condition "
+"evaluates to true.</center>"
+msgstr ""
+"<center><b>Booleovská podmínka</b><br>Bude vyhodnocena v době volání popup v "
+"pořadí jakém je tento záznam zobrazen.<br>Prázdná podmínka je vyhodnocena "
+"jako true.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:248
+msgid "Icon:"
+msgstr "Ikona:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:254
+msgid ""
+"<center><b>Icon identifier</b><br>May be an internal icon ID, an absolute "
+"path or a relative path.<br>Portable scripts should never use absolute paths."
+"</center>"
+msgstr ""
+"<center><b>Identifikátor ikony</b><br>Může být ID interní ikony, absolutní, "
+"nebo relativní cesta.<br>Přenosné skripty by neměly nikdy používat absolutní "
+"cesty.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:257
+msgid "External menu:"
+msgstr "Externí menu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:263
+msgid ""
+"<center><b>External menu name</b><br>This allows to nest externally defined "
+"popup menus. The popup menu with the specified name will be looked up at "
+"menu setup time.</center>"
+msgstr ""
+"<center><b>Název externího menu</b><br>Toto umožňuje vkládat externě "
+"definované popup menu. Popup menu se specifickým jménem bude hledáno při "
+"nastavování menu.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:266
+msgid "Item Id:"
+msgstr "Id položky:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:273
+msgid ""
+"<center><b>Item id</b><br>This will allow you to use delpopupitem later.</"
+"center>"
+msgstr ""
+"<center><b>Položka id</b><br>To vám umožní používat delpopupitem později.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:386
+msgid "New Separator Below"
+msgstr "Nový oddělovač dole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:388
+msgid "New Separator Above"
+msgstr "Nový oddělovač nahoře"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:391
+msgid "New Separator Inside"
+msgstr "Nový oddělovač uvnitř"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:396
+msgid "New Label Below"
+msgstr "Nové návěstí dole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:398
+msgid "New Label Above"
+msgstr "Nové návěstí nahoře"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:401
+msgid "New Label Inside"
+msgstr "Nové návěstí uvnitř"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:406
+msgid "New Item Below"
+msgstr "Nová položka dole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:408
+msgid "New Item Above"
+msgstr "Nová položka nahoře"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:411
+msgid "New Item Inside"
+msgstr "Nová položka uvnitř"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:416
+msgid "New Menu Below"
+msgstr "Nové menu dole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:418
+msgid "New Menu Above"
+msgstr "Nové menu nahoře"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:421
+msgid "New Menu Inside"
+msgstr "Nové menu uvnitř"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:426
+msgid "New External Menu Below"
+msgstr "Nové externí menu dole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:428
+msgid "New External Menu Above"
+msgstr "Nové externí menu nahoře"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:431
+msgid "New External Menu Inside"
+msgstr "Nové externí menu uvnitř"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:451
+msgid "&Paste Below"
+msgstr "&Vložit dolů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:456
+msgid "Paste Above"
+msgstr "Vložit nahoru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:461
+msgid "Paste Inside"
+msgstr "Vložit dovnitř"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:473
+msgid "New Menu Prologue"
+msgstr "Nový úvod menu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:481
+msgid "New Menu Epilogue"
+msgstr "Nový závěr menu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1042
+msgid "Popup"
+msgstr "Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1048
+msgid "&Export selected To..."
+msgstr "&Exportovat vybrané do..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1099
+msgid "&New Popup"
+msgstr "&Nový Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1105
+msgid "Re&move Popup"
+msgstr "S&mazat Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1112
+msgid "&Export Popup To..."
+msgstr "&Exportovat Popup do..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+msgid "Unable to write to the popup file."
+msgstr "Nelze zapisovat do popup souboru."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1382
+msgid "Popup Editor"
+msgstr "Editor Popupů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:62
+msgid "%cCore action: %Q"
+msgstr "%cCore akce: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:64
+msgid "%cUser action: %Q"
+msgstr "%cUživatelská akce: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:65
+msgid "Label: %Q"
+msgstr "Návěstí: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:66
+msgid "Category: %Q"
+msgstr "Kategorie: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:112
+msgid "The action \"%1\" is disabled"
+msgstr "Akce \"%1\" je zakázána"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:259
+msgid "The action \"%1\" does not exist"
+msgstr "Akce \"%1\" neexistuje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:255
+msgid "The action \"%1\" is a core action and cannot be destroyed"
+msgstr "Akce \"%1\" je core akce a nemůže být zničena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:392
+msgid "The switch -l requires -c"
+msgstr "Přepínač -l vyžaduje -c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:409
+msgid "The switch -s requires -w with a combination of flags 'c','x' and 'q'"
+msgstr "Přepínač -s vyžaduje -w s kombinací flagů 'c','x' a 'q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:420
+msgid ""
+"The action \"%1\" is already defined as core action and cannot be overridden"
+msgstr "Akce \"%1\" je již definována jako core akce a nemůže být přesměrována"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:116
+msgid "Ops.. internal error"
+msgstr "Oops.. interní chyba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:125
+msgid "Manage File &Transfers"
+msgstr "Spravovat Souborové &Přenosy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:67
+msgid "Choose Avatar - KVIrc"
+msgstr "Výběr Avataru - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:72
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+"Prosím vyberte obrázek avataru. Úplná cesta k souboru na disku nebo obrázku "
+"na na WEBu může být použita.<br>Pokud si přejete použít lokální soubor, "
+"klikněte na tlačítko\"<b>Procházet</b>\"k procházení adresářů.<br>Plná URL "
+"adresa obrázku (včetně <b>http://</b>) může být napsána ručně."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:283
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:358
+msgid "Internal error: I'm not in the user database ?"
+msgstr "Interní chyba: Nejsem v databázi uživatelů ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:245
+msgid "Can't set the current avatar to '%Q': failed to start the http transfer"
+msgstr "Nelze nastavit současný avatar na '%Q': selhalo spuštění http přenosu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:249
+msgid "Can't set the current avatar to '%Q': can't load the image"
+msgstr "Nelze nastavit současný avatar na '%Q': nelze načíst obrázek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:351
+msgid "Invalid timeout specified, using default"
+msgstr "Určena neplatná prodleva, použita výchozí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:389
+msgid "Can't add a file offer for file %Q (huh ? file not readable ?)"
+msgstr "Nelze přidat ke sdílení soubor %Q (huh ? soubor je nečitelný ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:396
+msgid "Added %d secs file offer for file %Q (%Q) and receiver %Q"
+msgstr "Přidána %d sek nabídka pro soubor %Q (%Q) a příjemce %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:403
+msgid "Notifying avatar '%Q' to %Q"
+msgstr "Oznamuji avatar '%Q' pro %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:55
+msgid "&Execute"
+msgstr "&Spustit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:59
+msgid "Params:"
+msgstr "Parametry:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:107
+msgid "Script Tester"
+msgstr "Tester skriptu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:220
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:413
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:543
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:628
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:765
+msgid "The config file with id '%Q' is not open"
+msgstr "Konfigurační soubor s id '%Q' není otevřen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:538
+msgid ""
+"The config file '%Q' has been changed but is opened as read-only: changes "
+"will be lost"
+msgstr ""
+"Konfigurační soubor '%Q' byl změněn, ale je otevřen jen pro čtení: změny "
+"budou ztraceny"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:583
+msgid "The config file with id '%Q' is read only"
+msgstr "Konfigurační soubor s id '%Q' je jen pro čtení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:178
+msgid "Colors"
+msgstr "Barvy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:255
+msgid "Context sensitive help"
+msgstr "Kontextově citlivá nápověda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1167
+msgid "&Replace"
+msgstr "&Nahradit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:268
+msgid "Find & Repalce"
+msgstr "Najít & Nahradit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1148
+msgid "Word to Find"
+msgstr "Hledané slovo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1156
+msgid "Replace with"
+msgstr "Nahradit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1172
+msgid "&Replace in all Aliases"
+msgstr "&Nahradit ve všech aliasech"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1176
+msgid "&Findnext"
+msgstr "&Hledat další"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1181
+msgid "&Replace(WIP)"
+msgstr "&Nahradit(WIP)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:227
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:547
+msgid "The specified toolbar doesn't exist"
+msgstr "Určená lišta neexistuje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:424
+msgid "No action name/index specified"
+msgstr "Nebyl určen název akce/obsahu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:441
+msgid "The action parameter didn't evaluate to an index"
+msgstr "Parametr akce nejde přepočítat na index"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:455
+msgid "The toolbar does not contain the specified item"
+msgstr "Nástrojová lišta neobsahuje zvolenou položku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:513
+msgid "The action \"%Q\" doesn't exist"
+msgstr "Akce \"%Q\" neexistuje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:31
+msgid "Torrent Client"
+msgstr "Torrent klient"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:361
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:364
+msgid "Standalone Servers"
+msgstr "Samostatné servery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:112
+msgid ""
+"%Q doesn't look like a servers.ini file.\n"
+"Import failed."
+msgstr ""
+"%Q nevypadá jako servers.ini soubor.\n"
+"Import selhal."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:122
+msgid "Choose a servers.ini file"
+msgstr "Zvolte soubor servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:146
+msgid "Remote mIRC servers.ini Import Wizard"
+msgstr "Průvodce importem mIRC souboru servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:154
+msgid ""
+"<center><b>Welcome!</b><br><br>This wizard will guide you in the process of "
+"downloading a list of IRC servers. Please click \"<b>Next</b>\" to begin the "
+"operation.</center>"
+msgstr ""
+"<center><b>Vítejte!</b><br><br>Tento průvodce Vás provede procesem stažení "
+"seznamu IRC serverů. Prosím klikněte na \"<b>Další</b>\" pro začátek operace."
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:161
+msgid ""
+"<center>Here you can modify the URL that the list will be downloaded from. "
+"In most cases the default URL is acceptable.</center>"
+msgstr ""
+"<center>Zde můžete měnit URL, ze které bude stahován seznam. V mnoha "
+"případech je výchozi URL přijatelná.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:169
+msgid "URL Selection"
+msgstr "Výběr URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:173
+msgid "Please wait while the list is being downloaded"
+msgstr "Prosím čekejte, dokud se seznam nestáhne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:179
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:195
+msgid "List Download"
+msgstr "Seznam Stažení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:229
+msgid "Failed to start the server list transfer :("
+msgstr "Selhalo spuštění přenosu seznamu serverů :("
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:245
+msgid "File downloaded: processing ..."
+msgstr "Soubor stažen: zpracování ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:255
+msgid "%1 servers imported succesfully"
+msgstr "%1 serverů úspěšně importováno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:257
+msgid "No servers imported"
+msgstr "Žádný server nebyl importován"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:326
+msgid "Import from servers.ini"
+msgstr "Import ze servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:333
+msgid "Import from http://www.mirc.co.uk/servers.ini"
+msgstr "Importovat z http://www.mirc.co.uk/servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lineedit.cpp:372
+msgid "Unknown echo mode %Q"
+msgstr "Neznámý echo mód %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:203
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:359
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:172
+msgid "Widget parameter is not an object"
+msgstr "Widget parametr není objekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:230
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:250
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:449
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:485
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:177
+msgid "Widget parameter is not a valid object"
+msgstr "Widget parametr není platný objekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:95
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:263
+msgid "Widget object required"
+msgstr "Je potřeba widget objekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:151
+msgid "Unknown dock area '%Q'"
+msgstr "Neznámá dokovací oblast '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:321
+msgid "Unknown alignment: '%Q'"
+msgstr "Neznámé zarovnání: '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:373
+msgid "Unknown style: '%Q'"
+msgstr "Neznámý styl: '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:84
+msgid "the toolbar cannot be a parent-widget!"
+msgstr "Nástrojová lišta nemůže být rodičovský widget!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:93
+msgid "The parent-widget isn't a MainWindow."
+msgstr "Nadřazený widget není MainWindow."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:999
+msgid "The array passed as parameter must contain at least 4 elements"
+msgstr "Pole zadané jako parametr musí obsahovat nejméně 4 elementy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1012
+msgid "One of the geometry array parameters is empty"
+msgstr "Jeden z parametrů geometrie pole je prázdný"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1017
+msgid "One of the geometry array parameters didn't evaluate to an integer"
+msgstr "Jeden z parametrů geometrického pole nejde přepočítat na celé číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:503
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1032
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1500
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1044
+msgid "The first parameter didn't evaluate to an array nor an integer"
+msgstr "První parametr nejde přepočítat na pole nebo na celé číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1419
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1476
+msgid "The array passed as parameter must contain at least 2 elements"
+msgstr "Pole zadané jako parametr musí obsahovat nejméně 2 elementy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:451
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:486
+msgid "One of the array parameters is empty"
+msgstr "Jeden z parametrů pole je prázdný"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:456
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:491
+msgid "One of the array parameters didn't evaluate to an integer"
+msgstr "Jeden z parametrů pole nejde přepočítat na celé číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:478
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:804
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:993
+msgid "The array passed as parameter must contain at least 3 elements"
+msgstr "Pole zadané jako parametr musí obsahovat nejméně 3 elementy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:551
+msgid "Unknown orientation"
+msgstr "Neznámá orientace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:789
+msgid "Pixmap or Widget parameter is not an object"
+msgstr "Parametr pixmapy nebo widgetu není objekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:730
+msgid "Widget or Pixmap required "
+msgstr "Je třeba widget nebo pixmapa "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:852
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:862
+msgid "Invalid mode '%Q'"
+msgstr "Neplatný mód '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:886
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1701
+msgid "Pixmap parameter is not an object"
+msgstr "Parametr pixmapy není objekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:891
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1706
+msgid "Pixmap object required"
+msgstr "Je potřeba pixmapový objekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1027
+msgid ""
+"$setGeometry() requires either an array as first parameter or four integers"
+msgstr "$setGeometry() vyžaduje pole jako první parametr čtyř celých čísel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:813
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1002
+msgid "One of the colors array parameters is empty"
+msgstr "Jeden parametr z pole barev je prázdný"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:818
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1007
+msgid "One of the colors array parameters didn't evaluate to an integer"
+msgstr "Jeden parametr z pole barev nejde přepočítat na celé číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1020
+msgid "A string of 6 digits hex is required"
+msgstr "Je třeba řetězec 6 hexa čísel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:842
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1031
+msgid "Not an hex digits"
+msgstr "Nejsou hexa číslice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1144
+msgid ""
+"$setForegroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+"$setBackgroundColor vyžaduje pole jako první parametr, jeden hexa řetězec "
+"nebo tři celá čísla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1219
+msgid ""
+"$setBackgroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+"$setBackgroundColor vyžaduje pole jako první parametr, jeden hexa řetězec "
+"nebo tři celá čísla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1426
+msgid "One of the move array parameters is empty"
+msgstr "Jeden z parametrů pohybu pole je prázdný"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1431
+msgid "One of the move array parameters didn't evaluate to an integer"
+msgstr "Jeden z parametrů pohybu pole nešel přepočítat na celé číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1438
+msgid "$move() requires either an array as first parameter or two integers"
+msgstr "$move() vyžaduje pole jako první parametr nebo dvě celá čísla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1483
+msgid "One of the resize array parameters is empty"
+msgstr "Jeden z parametrů změny velikosti pole je prázdný"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1488
+msgid "One of the resize array parameters didn't evaluate to an integer"
+msgstr "Jeden z parametrů změny velikosti pole nešel přepočítat na celé číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1495
+#, fuzzy
+msgid "$resize() requires either an array as first parameter or two integers"
+msgstr "$setGeometry() vyžaduje pole jako první parametr čtyř celých čísel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1528
+msgid "Invalid parameters"
+msgstr "Neplatné parametry"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1560
+msgid "Unknown widget flag '%Q'"
+msgstr "Neznámý flag widgetu: '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1592
+msgid "Unknown style '%Q'"
+msgstr "Neznámý styl '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1622
+msgid "No Layout associated to the widget "
+msgstr "Žádný Layout nebyl asociován s widgetem "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:117
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:152
+msgid "Can't add a non-widget object"
+msgstr "Nelze přidat ne-widget objekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1650
+msgid "Parent must be a widget object"
+msgstr "Nadřazený musí být widget objekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1715
+msgid "Null mask"
+msgstr "Null maska"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1740
+msgid "Unknown widget attribute '%Q'"
+msgstr "Neznámý atribut widgetu: '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:382
+msgid "No such line number"
+msgstr "Žádné číslo řádku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:500
+#, fuzzy
+msgid "Unknown word wrap '%Q'"
+msgstr "Neznámá vázací operace '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:519
+msgid "Unknown wrap policy'%Q'"
+msgstr "Neznámé wrap pravidlo '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:850
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1039
+msgid "$setColor requires either an array as first parameter or three integers"
+msgstr "$setColor() vyžaduje pole jako první parametr třech celých čísel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:975
+msgid "Unknown text format '%Q'"
+msgstr "Neznámý formát textu '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1071
+msgid " I can't find the specified file '%Q'."
+msgstr " Nelze nalézt zadaný soubor '%Q'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1078
+msgid " I cannot read the file %Q'."
+msgstr " Nelze číst soubor '%Q'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1113
+msgid "Unknown alignment '%Q'"
+msgstr "Neznámé zarovnání '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1131
+#, fuzzy
+msgid "Unknown auto formatting mode '%Q'"
+msgstr "Neznámá vázací operace '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1149
+msgid "Unknown vertical alignment '%Q'"
+msgstr "Neznámé vertikální zarovnání: '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:264
+msgid "pix '%Q' doesn't exists"
+msgstr "pix '%Q' neexistuje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:276
+msgid "Can't add a non - popupmenu object"
+msgstr "Nelze přidat ne - popupmenu objekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:302
+msgid "Doesn't a widget object"
+msgstr "Není-widget objekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:182
+msgid "I can't find the specified file %Q."
+msgstr "Nelze nalézt zadaný soubor %Q."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:222
+msgid "Destination parameter is not an object"
+msgstr "Cílový parametr není objekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:228
+msgid "Destination must be a pixmap object"
+msgstr "Cíl musí být pixmapový objekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:238
+msgid "Area dimensions are out of destination size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:253
+msgid "Pixmap dimensions are out of destination size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:261
+msgid "Offset width area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:266
+msgid "Offset height area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:121
+msgid "The widget must be a child of this hbox"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:191
+msgid "No string parameter given - using empty string"
+msgstr "Nezádán parametr řetězec - použije se prázdný řetězec"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:194
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:214
+#, c-format
+msgid "Item index [%d] is too big - defaulting to $count() - 1 [%d]"
+msgstr ""
+"Index položky [%d] je příliš velký - nastavuje se výchozí na $count() - 1 [%"
+"d]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:333
+msgid "Invalid insertion Policy %Q"
+msgstr "Neplatné vkládací pravidlo %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:136
+msgid "Unknown mode "
+msgstr "Neznámý mód "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:149
+msgid "Unknown segment style "
+msgstr "Neznámý styl segmentu "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_process.cpp:221
+msgid "Process could not be starded."
+msgstr "Zpracování nelze spustit."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:279
+msgid "Invalid selection mode '%Q' assuming single"
+msgstr "Neplatný mód výběru \"%Q\": používám jednoduchý"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:316
+msgid "Unknown text position '%Q'"
+msgstr "Neznámá pozice textu '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:256
+#, fuzzy
+msgid "Unknown tickmark '%Q'"
+msgstr "Neznámá značka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:271
+msgid "Unknown orientation '%Q'"
+msgstr "Neznámá orientace '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:500
+msgid "No socket object specified"
+msgstr "Nebyl určen objekt soketu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:506
+msgid "Invalid socket object specified (it doesn't inherit from socket)"
+msgstr "Neplatný soket objekt určen (není dědičnost ze soketu)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:518
+msgid "There is no connection to accept!"
+msgstr "Není zde spojení pro příjem!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:591
+#, c-format
+msgid "Value %d for port is out of range (values allowed are from 0 to 65535"
+msgstr ""
+"Hodnota %d pro port je mimo rozsah (možné hodnoty jsou v rozmezí od 0 do "
+"65535"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:596
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:87
+msgid "Another connection in progress"
+msgstr "Probíhá jiné spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:648
+msgid "No IPV6 support in this executable"
+msgstr "V této verzi není IPV6 podpora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:670
+msgid "Invalid IP address specified ('%Q')"
+msgstr "Určena neplatná IP adresa ('%Q')"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:89
+msgid "Socket creation failed"
+msgstr "Vytvoření soketu selhalo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:706
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:727
+msgid "Invalid socket address"
+msgstr "Neplatná adresa soketu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:714
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:735
+msgid "Bind failure"
+msgstr "Vázání selhalo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:745
+msgid "Listen failure"
+msgstr "Selhání naslouchání"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:812
+msgid "unknown"
+msgstr "neznámý"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:876
+msgid "Invalid ip address "
+msgstr "Neplatná ip adresa "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:882
+msgid "Invalid ip address (%Q)"
+msgstr "Neplatná ip adresa (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:906
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1013
+msgid "Failed to create the socket"
+msgstr "Selhalo vytvoření soketu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:918
+msgid "Failed to setup a nonblocking socket"
+msgstr "Selhalo nastavení neblokovacího soketu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:939
+msgid "Connect failure: "
+msgstr "Selhání spojení: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:967
+msgid "Connect attempt timed out"
+msgstr "Pokus o spojení vypršel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:993
+msgid "Can't start the DNS thread"
+msgstr "Nelze spustit DNS vlákno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:1143
+msgid ""
+"Too much unprocessed incoming data (you've left this socket unmanaged ?)"
+msgstr "Příliš nezpracovaných příchozích dat (opuštěný soket neřízený ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:149
+msgid "Error in KVS class implementation: processing aborted"
+msgstr "Chyba v implementaci třídy KVS: zpracování přerušeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:154
+msgid "Processing aborted"
+msgstr "Zpracování přerušeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:160
+#, c-format
+msgid "Error near line %d, column %d"
+msgstr "Chyba poblíž řádku %d, sloupce %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:162
+#, c-format
+msgid "Warning near line %d, column %d"
+msgstr "Varování poblíž řádku %d, sloupec %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:313
+msgid "XML support not available in the Qt library"
+msgstr "XML podpora není dostupná v Qt knihovně"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:491
+msgid "Not a widget object"
+msgstr "Není widget objekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:308
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:497
+msgid "Can't find the tab "
+msgstr "Nelze nalézt záložku "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:522
+msgid "Unknown position 'Q%'"
+msgstr "Neznámá pozice '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:123
+msgid "The widget must be a child of this vbox"
+msgstr "Widget musí být potomkem tohoto vboxu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:276
+msgid "Not Enough Parameters"
+msgstr "Nedostatek parametrů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:142
+msgid "The listviewitem cannot be parentless"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:152
+msgid ""
+"The parent of the listviewitem must be either another listviewitem or a "
+"listview"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:403
+msgid "Pixmap object or image Id required"
+msgstr "Je potřeba pixmapový objekt nebo Id obrázku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:413
+#, fuzzy
+msgid ""
+"Error occured: the suitable file '%Q' is not of the correct format or it is "
+"not a valid icon number."
+msgstr ""
+"Vyskytla se chyba: soubor není ve správném formátu nebo nemá platné číslo "
+"ikony."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:151
+msgid ""
+"The window identifier preceeded by WinId must be the first object in the "
+"search path"
+msgstr ""
+"Identifikátor okna uvozený WinId musí být prvním objektem v cestě hledání"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:167
+msgid "Failed to find one of the wrap path widgets (%Q::%Q)"
+msgstr "Neanlezen jeden z obalených widgetů (%Q::%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:176
+msgid "Failed to find the widget to wrap"
+msgstr "Nelze najít widget pro obalení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:119
+msgid "The parent of a layout must be a widget!"
+msgstr "Zdrojem rozmístění musí být widget!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:269
+msgid "Invalid resize mode defaulting to Auto"
+msgstr "Neplatný mód rozšíření nastaven na výchozí Auto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:324
+msgid "Unknown alignment"
+msgstr "Neznámé zarovnání"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:373
+msgid "Unknown orientation: "
+msgstr "Neznámá orientace: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listview.cpp:320
+msgid "Invalid selection mode '%Q'"
+msgstr "Neplatný mód výběru '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tbrowser.cpp:99
+msgid "I can't find the specified file '%Q'."
+msgstr "Nelze nalézt zadaný soubor '%Q'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:121
+msgid "Can't add a null object"
+msgstr "Nelze přidat nulový objekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:128
+msgid ""
+"Invalid object handle passed as parameter (the object is no longer "
+"existing ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:134
+msgid "Object in invalid state"
+msgstr "Objekt v neplatném stavu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:140
+msgid "Can't set a non-widget object to be the main widget of a dock window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:146
+msgid "The added widget is not a child of this dock window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:271
+msgid "Invalid dock area specified"
+msgstr "Určena neplatná dokovací oblast"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:181
+msgid "Class '%Q' is not definited"
+msgstr "Třída '%Q' není definovaná"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:257
+msgid "Inexisting target object for objects.connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:262
+msgid "Inexisting source object for objects.connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:444
+msgid "The class '%Q' does not exist"
+msgstr "Třída '%Q' neexistuje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:404
+msgid "Object does not exists"
+msgstr "Objekt neexistuje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:557
+msgid "Inexisting target object for objects.disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:562
+msgid "Inexisting source object for objects.disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:608
+msgid "Source is not an object"
+msgstr "Zdroj není objekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:614
+msgid "Destination is not an object"
+msgstr "Cíl není objekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:625
+msgid "Widget, Image or Pixmap required "
+msgstr "Je třeba widget, obrázek nebo pixmapa "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:635
+msgid "Widget or Pixmap required"
+msgstr "Je třeba widget nebo pixmapa "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:714
+msgid "One o more of background, foreground or destination aren't objects"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:720
+msgid "Pixmap objects required"
+msgstr "Je potřeba pixmapové objekty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:743
+msgid "Values for background are out of image size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:748
+msgid "Values for foreground are out of image size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:226
+msgid "Empty filename string"
+msgstr "Prázdný řetězec názvu souboru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:271
+msgid "No such open mode: '%Q'"
+msgstr "Žádný otevřený mód: '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:312
+msgid "File is not open!"
+msgstr "Soubor není otevřen!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:348
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:406
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:434
+msgid "File is not open !"
+msgstr "Soubor není otevřen !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:369
+msgid "Argument to long, using only first char"
+msgstr "Argument je příliš dlouhý, použit pouze první znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:339
+msgid "Write error occured !"
+msgstr "Vyskytla se chyba při zápisu !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:352
+msgid "Read error occured !"
+msgstr "Vyskytla se chyba při čtení !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:371
+msgid "An error occured !"
+msgstr "Vyskytla se chyba !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:387
+msgid "Missing both encrypt and decrypt key: at least one is needed"
+msgstr "Chybí oba šifrovací a dešifrovací klíče: alespoň jeden je potřeba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:168
+msgid "Error 0: Success ?"
+msgstr "Chyba 0: Hotovo ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:169
+msgid "Unsupported crypt mode"
+msgstr "Nepodporovaný šifrovací mód"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:170
+msgid "Unsupported direction"
+msgstr "Nepodporovaný směr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:171
+msgid "Unsupported key length"
+msgstr "Nepodporovaná délka klíče"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:172
+msgid "Bad key data"
+msgstr "Špatná data klíče"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:173
+msgid "Engine not initialized"
+msgstr "Nástroj není inicializován"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:174
+msgid "Invalid direction for this engine"
+msgstr "Neplatný směr pro tento nástroj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:175
+msgid "Corrupted message data or invalid decrypt key"
+msgstr "Poškozená data zprávy nebo neplatný dešifrovací klíč"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:52
+msgid "Unknown error"
+msgstr "Neznámá chyba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:184
+msgid "Ops...encrypt cipher not initialized"
+msgstr "Oops...kódovací šifra nebyla inicializována"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:420
+msgid "Data buffer too long"
+msgstr "Příliš velký datový buffer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:221
+msgid "Ops...decrypt cipher not initialized"
+msgstr "Oops...dekódovací šifra nebyla inicializována"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:277
+msgid "The message is not a hexadecimal string: this is not my stuff"
+msgstr "Zpráva není šestnáctkový řetězec: to není moje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:671
+msgid "The message is not a base64 string: this is not my stuff"
+msgstr "Zpráva není base64 řetězec: to není moje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:676
+msgid "The message doesn't seem to be encoded with CBC Mircryption"
+msgstr "Zpráva nevypadá jako zašifrovaná s CBC Mircryption"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:712
+#, c-format
+msgid ""
+"Cryptographic engine based on the\n"
+"Advanced Encryption Standard (AES)\n"
+"algorithm called Rijndael.\n"
+"The text is first encrypted with rijndael\n"
+"and then converted to %s notation.\n"
+"The keys used are %d bit long and will be padded\n"
+"with zeros if you provide shorter ones.\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"See the rijndael module documentation\n"
+"for more info on the algorithm used.\n"
+msgstr ""
+"Šifrovací nástroj postavený na\n"
+"Advanced Encryption Standard (AES)\n"
+"algoritmu nazvaném Rijndael.\n"
+"Text je nejdříve zašiftován s rijndael\n"
+"a pak konvertován do %s notace.\n"
+"Použité klíče jsou %d bitů dlouhé a dají se\n"
+"vyplnit nulami, když napíšete kratší.\n"
+"Pokud zadáte jen jeden klíč, nástroj\n"
+"jej použije pro zašifrování i dešifrování.\n"
+"Koukněte do dokumentace rijndael modulu\n"
+"pro další informace o použitém algoritmu.\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:739
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:749
+msgid "hexadecimal"
+msgstr "šestnáctkové"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:759
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:779
+msgid "base64"
+msgstr "base64"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:790
+msgid ""
+"Popular cryptographic engine based on the\n"
+"old Blowfish encryption algorithm.\n"
+"The text is first encrypted with Blowfish \n"
+"and then converted to base64 notation.\n"
+"The keys used have variable length and\n"
+"are specified as character strings.\n"
+"You can specify keys long up to 56 bytes (448 bits).\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"This engine works in ECB mode by default:\n"
+"if you want to use CBC mode you must prefix\n"
+"your key(s) with \"cbc:\".\n"
+msgstr ""
+"Populární šifrovací nástroj postavený na\n"
+"starém Blowfish šifrovacím algoritmu.\n"
+"Text je nejdříve zašifrován s Blowfish \n"
+"a pak konvertován do base64 notace.\n"
+"Použité klíče mají proměnnou délku a\n"
+"jsou jako řetězce znaků.\n"
+"Můžete zadat klíče dlouhé až do 56 bajtů (448 bitů).\n"
+"Pokud zadáte jen jeden klíč, nástroj\n"
+"jej použije pro zašifrování i dešifrování.\n"
+"Tento nástroj funguje v ECB módu jako výchozí:\n"
+"pokud chcete použít CBC mód, musíte označit \n"
+"vaše klíče prefixem \"cbc\".\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:61
+msgid "Drop here the icons from the toolbars to remove them"
+msgstr "Přetáhnutím ikon z nástrojové lišty sem je odstraníte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:128
+msgid "ToolBar Properties"
+msgstr "Vlastnosti Nástrojové lišty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:144
+msgid "Icon"
+msgstr "Ikona"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:160
+msgid "Id"
+msgstr "Id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:217
+msgid "Please choose the icon for the ToolBar"
+msgstr "Prosím vyberte ikonu pro nástrojovou lištu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "Invalid ToolBar Label"
+msgstr "Neplatný název lišty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "The ToolBar Label can't be empty!"
+msgstr "Název lišty nemůže být prázdný!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:256
+msgid "Duplicate ToolBar Id"
+msgstr "Duplicitní Id lišty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:257
+msgid ""
+"The specified ToolBar Id already exists.<br>Would you like KVIrc to assign "
+"it automatically (so it doesn't collide with any other toolbar) or you "
+"prefer to do it manually ?"
+msgstr ""
+"Zadaná nástrojová lišta již existuje.<br>Chcete aby ji KVIrc přiřadilo "
+"automaticky (pokud nebude kolidovat s žádnou jinou lištou) nebo raději "
+"ručně ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Manually"
+msgstr "Ručně"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Automatically"
+msgstr "Automaticky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:278
+msgid "Hide Advanced"
+msgstr "Schovat pokročilé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:287
+msgid "Customize Toolbars"
+msgstr "Upravit nástrojové lišty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:296
+msgid "New ToolBar"
+msgstr "Nová nástrojová lišta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:300
+msgid "Delete ToolBar"
+msgstr "Smazat nástrojovou lištu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:304
+msgid "Edit ToolBar"
+msgstr "Upravit nástrojovou lištu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:312
+msgid "Export ToolBar"
+msgstr "Exportovat nástrojovou lištu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:373
+msgid "Confirm ToolBar Deletion"
+msgstr "Potvrďte smazání lišty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:374
+msgid "Do you really want to delete toolbar \"%1\" ?"
+msgstr "Opravdu chcete smazat nástrojovou lištu \"%1\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:397
+msgid "ToolBar Export"
+msgstr "Export Nástrojové lišty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:398
+msgid "Do you want the associated actions to be exported with the toolbar ?"
+msgstr "Chcete asociované akce exportovat s nástrojovou lištou?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+msgid "Unable to write to the toolbar file."
+msgstr "Nelze zapisovat do souboru nástrojových lišt."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:465
+msgid "Please specify the properties for the toolbar \"%1\""
+msgstr "Prosím určete vlastnosti pro nástrojovou lištu \"%1\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:491
+msgid "Please specify the properties for the new toolbar"
+msgstr "Prosím zadejte vlastnosti pro novou nástrojovou lištu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:493
+msgid "My ToolBar"
+msgstr "Vlastní nástrojová lišta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:63
+msgid "Window with ID '%Q' not found"
+msgstr "Okno s ID '%Q' nenalezeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:67
+msgid "The specified window (%Q) is not a channel/query/DCC chat"
+msgstr "Určené okno (%Q) není kanál, query, ani DCC chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:108
+msgid "File not found or empty"
+msgstr "Soubor nenalezen nebo prázdný"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:114
+msgid "I can't open that file"
+msgstr "Nelze otevřít tento soubor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:122
+msgid "Could not paste file"
+msgstr "Nelze vkládat soubor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:218
+msgid "The specified window (%Q) is not a channel/query/dcc"
+msgstr "Určené okno (%Q) není kanál, query, ani dcc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:271
+msgid "Slow-paste ID:%d Window:%Q"
+msgstr "Pomalu vložit ID:%d Okno:%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:240
+msgid "Plugin not found. Please check the plugin-name and path."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:247
+msgid "Error while loading plugin."
+msgstr "Chyba při nahrávání pluginu."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:311
+msgid "This plugin does not export the desired function."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:327
+msgid ""
+"The plugin has no function to free memory. This can result in Memory Leaks!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:209
+#, c-format
+msgid "No environment variable found, please don't use the %% in the request"
+msgstr "Nenalezena systémová proměnná, prosím nepoužívejte %% v požadavku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:482
+msgid "Invalid DCOP parameter syntax"
+msgstr "Neplatná syntaxe DCOP parametru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:495
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:516
+msgid "The specified parameter is not an integer"
+msgstr "Zadaný parametr není celé číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:521
+#, c-format
+msgid "Unsupported DCOP parameter type %s"
+msgstr "Nepodporovaný typ DCOP parametru %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:534
+msgid "DCOP call failed"
+msgstr "volání DCOP selhalo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:599
+msgid "DCOP calls are available only when KDE support is compiled in"
+msgstr "DCOP volání jsou dostupné pouze při zkompilované podpoře KDE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1408
+#, c-format
+msgid "The window with id '%s' does not exist"
+msgstr "Okno s id '%s' neexistuje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:851
+msgid "Window type or 'all' expected as first parameter"
+msgstr "Typ okna nebo 'all' je očekáváno jako první parametr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:938
+msgid "Invalid IRC context id '%Q'"
+msgstr "Neplatný IRC kontext id '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1045
+msgid "The specified IRC context is not valid: creating a context free window"
+msgstr "Určený IRC kontext je neplatný: vytváří okno bez kontextu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1119
+msgid "The specified window is not of type \"userwnd\""
+msgstr "Určené okno není typ \"userwnd\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1208
+msgid "Window doesn't have input widget"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1363
+msgid "The encrypt key wasn't a valid hexadecimal string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1377
+msgid "The decrypt key wasn't a valid hexadecimal string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1414
+msgid "Both -n and -m switchess specified, -n takes precedence"
+msgstr "Oba -n a -m přepínače zadány, -n bere precedent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1424
+msgid "No encrypt key specified: can't allocate engine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1446
+msgid "Unknown engine error"
+msgstr "Neznámá chyba enginu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1449
+msgid "Failed to initialize the specified crypt engine: %Q"
+msgstr "Selhala alokace zvoleného šifrovacího nástroje: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1453
+msgid "The crypt engine \"%Q\" does not exist"
+msgstr "Šifrovací nástroj \"%Q\" neexistoval"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1458
+msgid "This executable has been compiled without crypt support"
+msgstr "Tento spustitelný soubor byl přeložen bez podpory šifrování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:138
+msgid "Current window is not a channel"
+msgstr "Toto okno není kanál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:87
+msgid "Raw Event"
+msgstr "Raw událost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:97
+msgid "Edit the raw event handler name."
+msgstr "Upravit název handleru raw události."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:179
+msgid "&Add Raw Event..."
+msgstr "&Přidat Raw událost..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "New Raw Event"
+msgstr "Nová Raw událost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "Enter the numeric code of the message (0-999)"
+msgstr "Zadejte číselný kód zprávy (0-999)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+msgid "Unable to write to the raw event file."
+msgstr "Nelze zapisovat do souboru raw událostí."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Unable to write to the raw events file."
+msgstr "Nelze zapisovat do souboru raw událostí."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:512
+msgid "Raw Editor"
+msgstr "Editor Raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:219
+msgid "A really lame text transformation engine :D"
+msgstr "Skutečně lamerský transformátor textu :D"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:229
+msgid "A really lame text transformation engine: Light Version."
+msgstr "Skutečně lamerský transformátor textu : Odlehčená verze."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:82
+#, c-format
+msgid "Socket Spy [IRC Context %u]"
+msgstr "Soket špión [IRC kontext %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:92
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Socket Spy</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Soket špión</b></font> <font color=\"%s\">[IRC "
+"kontext %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:112
+msgid "Socket open"
+msgstr "Soket otevřen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:117
+msgid "Socket closed"
+msgstr "Soket uzavřen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:149
+msgid "Internal unique name for the action"
+msgstr "Interní unikátní název této akce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:151
+msgid "Label:"
+msgstr "Návěstí:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:155
+msgid ""
+"Visible name for this action.<br>This string will be displayed to the user "
+"so it is a good idea to use $tr() here"
+msgstr ""
+"Zobarený název pro tuto akci.<br>Tento řetězec bude zobrazen uživateli a "
+"proto je dobré použít funkci $tr()"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:166
+msgid "Action code"
+msgstr "Kód Akce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:168
+msgid "Code"
+msgstr "Kód"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:174
+msgid "Category:"
+msgstr "Kategorie:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:178
+msgid "Choose the category that best fits for this action"
+msgstr "Vyberte kategorii, do které nejlépe spadá tato akce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:180
+msgid "Description:"
+msgstr "Popis:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:184
+msgid ""
+"Visible short description for this action.<br>This string will be displayed "
+"to the user so it is a good idea to use $tr() here"
+msgstr ""
+"Zobrazený krátký popis pro tuto akci.<br>Tento řetězec bude zobrazen "
+"uživateli, proto je dobré použít zde funkci $tr()"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:186
+msgid "Small Icon:"
+msgstr "Malá ikona:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:194
+msgid ""
+"The small icon associated to this action.<br>It will appear at least in the "
+"popup menus when this action is inserted.<br>It should be 16x16 pixels."
+msgstr ""
+"Malá ikona asociovaná s touto akcí.<br>Objeví se v popup menu, když bude "
+"tato akce vložena.<br>Měla by být 16x16 pixelů."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:200
+msgid "Big Icon:"
+msgstr "Velká ikona:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:209
+msgid ""
+"The big icon associated to this action.<br>It will appear at least in the "
+"toolbar buttons when this action is inserted.<br>It should be 32x32 pixels."
+msgstr ""
+"Velká ikona asociovaná s touto akcí.<br>Objeví se mezi tlačítky nástrojové "
+"lišty, když je tato akce vložena.<br>Měla by být 32x32 pixelů."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:215
+msgid "Key Sequence:"
+msgstr "Kombinace kláves:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:219
+msgid ""
+"Optional keyboard sequence that will activate this action.<br>The sequence "
+"should be expressed as a string of up to four key codes separated by commas "
+"eventually combined with the modifiers \"Ctrl\",\"Shift\",\"Alt\" and \"Meta"
+"\".<br>Examples of such sequences are \"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl+X,"
+"Ctrl+C\" ..."
+msgstr ""
+"Volitelná kombinace kláves, která spustí tuto akci.<br>Kombinace by měla být "
+"spojením max. čtyř kláves oddělených čárkami případně kombinovány s "
+"přepínači \"Ctrl\",\"Shift\",\"Alt\" a \"Meta\".<br>Příklady použitelných "
+"kombinací jsou \"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl+X,Ctrl+C\" ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:240
+msgid "Needs IRC Context"
+msgstr "Vyžaduje IRC kontext"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:242
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window belongs to an irc context"
+msgstr ""
+"Zakrtněte tuto volbu, pokud má být tato akce povolena, když aktivní okno "
+"patří do irc kontextu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:250
+msgid "Needs IRC Connection"
+msgstr "Vyžaduje IRC spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:252
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window has an active IRC connection"
+msgstr ""
+"Zakrtněte tuto volbu, pokud má být tato akce povolena, když má aktivní okno "
+"aktivní IRC spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:260
+msgid "Enable at Login"
+msgstr "Povolit při přihlášení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:261
+msgid ""
+"Check this option if this action should be enabled also during the login "
+"operations (so when the logical IRC connection hasn't been estabilished yet)"
+msgstr ""
+"Zakrtněte tuto volbu, pokud má být tato akce povolena, také během "
+"přihlašovacích operací (dokud není navázáno IRC spojení)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:265
+msgid "Enable Only in Specified Windows"
+msgstr "Povolit pouze v určených oknech"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:267
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is of a specified type"
+msgstr ""
+"Zakrtněte tuto volbu, pokud má být tato akce povolena, když je aktivní okno "
+"zvoleného typu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:271
+msgid "Enable in Console Windows"
+msgstr "Povolit v okně Konzole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:272
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a console"
+msgstr ""
+"Zakrtněte tuto volbu, pokud má být tato akce povolena, když je aktivní okno "
+"konzole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:277
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:299
+msgid "Only If There Are Selected Users"
+msgstr "Pouze pokud jsou vybráni uživatelé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:278
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:300
+msgid ""
+"This will enable the action only if there are selected users in the active "
+"window"
+msgstr "Toto povolí akci, pouze pokud jsou vybraní uživatelé v aktivním okně"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:282
+msgid "Enable in Channel Windows"
+msgstr "Povolit v Oknech kanálů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:283
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a channel"
+msgstr ""
+"Zakrtněte tuto volbu, pokud má být tato akce povolena, když je aktivní okno "
+"kanál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:293
+msgid "Enable in Query Windows"
+msgstr "Povolit v Query oknech"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:294
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a query"
+msgstr ""
+"Zakrtněte tuto volbu, pokud má být tato akce povolena, když je aktivní okno "
+"query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:304
+msgid "Enable in DCC Chat Windows"
+msgstr "Povolit v DCC Chat oknech"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:305
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a dcc chat"
+msgstr ""
+"Zakrtněte tuto volbu, pokud má být tato akce povolena, když je aktivní okno "
+"dcc chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:627
+msgid "Action"
+msgstr "Akce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:680
+msgid "New Action"
+msgstr "Nová Akce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:683
+msgid "Delete Actions"
+msgstr "Smazat Akce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:686
+msgid "Export Actions..."
+msgstr "Exportovat Akce..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Unable to write to the actions file."
+msgstr "Nelze zapisovat do souboru akcí."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:823
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:824
+msgid "My Action"
+msgstr "Moje Akce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:825
+msgid "Put here a short description of your action"
+msgstr "Zde vložte krátký popis vaší akce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:925
+msgid "Action Editor"
+msgstr "Editor akcí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:938
+msgid "Apply"
+msgstr "Použít"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:63
+msgid "Outgoing traffic"
+msgstr "Odchozí provoz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:67
+msgid "Incoming traffic"
+msgstr "Příchozí provoz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_crypt.cpp:160
+msgid "Invalid crypt engine"
+msgstr "Neplatný šifrovací nástroj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:296
+msgid "Directory"
+msgstr "Adresář"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:315
+msgid "Socket"
+msgstr "Soket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:332
+msgid "Fifo"
+msgstr "Fifo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:349
+msgid "Block device"
+msgstr "Blokové zařízení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:366
+msgid "Char device"
+msgstr "Znakové zařízení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:429
+msgid "Octet stream (unknown)"
+msgstr "Datový proud (neznámý)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_osinfo.cpp:413
+msgid "Unknown "
+msgstr "Neznámý"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:181
+msgid "The specified network has no server entries"
+msgstr "Zvolená síť neobsahuje žádné záznamy serverů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:239
+msgid ""
+"The server specification seems to be in the net:<string> but the network "
+"couln't be found in the database"
+msgstr ""
+"Specifikace serveru vypadá jako by byla v síti:<string> ale síť nelze nalézt "
+"v databázi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:261
+msgid ""
+"The server specification seems to be in the id:<string> form but the "
+"identifier coulnd't be found in the database"
+msgstr ""
+"Specifikace serveru vypadá jako by byla v id:<string> formuláři, ale "
+"identifikátor nelze nalézt v databázi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:71
+msgid "Aborted"
+msgstr "Přerušeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:96
+msgid "No request"
+msgstr "Žádný požadavek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:141
+msgid "No filename specified for the \"StoreToFile\" processing type"
+msgstr "Žádný název souboru nebyl určen pro \"StoreToFile\" typ zpracování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:160
+msgid "Invalid URL: Missing hostname"
+msgstr "Neplatné URL: Chybí hostitel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:167
+msgid "Unsupported protocol %1"
+msgstr "Nepodporovaný protokol %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:189
+msgid "Unable to start the DNS lookup"
+msgstr "Nelze spustit vyhledávání v DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:194
+#, c-format
+msgid "Looking up host %s"
+msgstr "Zjišťuji hostitele %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:210
+msgid "Host %s resolved to %Q"
+msgstr "Hostitel %s zjištěn jako %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:246
+msgid "Unable to start the request slave thread"
+msgstr "Nelze spustit požadované slave vlákno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:251
+msgid "Contacting host %Q on port %u"
+msgstr "Kontaktuji hostitele %Q na portu %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:271
+msgid "Connection established, sending request"
+msgstr "Spojení navázáno, zasílá se požadavek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:322
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:51
+msgid "Success"
+msgstr "Hotovo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:429
+msgid "Failed to rename the existing file, please rename manually and retry"
+msgstr ""
+"Selhalo přejmenování existujícího souboru, prosím zkuste to ručně a znovu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:447
+msgid "Can't open file \"%Q\" for writing"
+msgstr "Nelze otevřít soubor \"%Q\" pro zápis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:497
+#, c-format
+msgid "Invalid HTTP response: %s"
+msgstr "Neplatná HTTP odezva: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:503
+#, c-format
+msgid "Received HTTP response: %s"
+msgstr "Obdržena HTTP odezva: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:628
+msgid "Stream exceeding maximum length"
+msgstr "Proud překračuje maximální délku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:661
+msgid "Header too long: exceeded 4096 bytes"
+msgstr "Hlavička příliš dlouhá: přesahuje 4096 bajtů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:710
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:852
+msgid "Stream exceeded expected length"
+msgstr "Proud překročil očekávanou délku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:798
+msgid "Protocol error: invalid chunk size"
+msgstr "Chyba protokolu: neplatná velikost chunku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:818
+msgid "Chunk header too long: exceeded 4096 bytes"
+msgstr "Hlavička chunku příliš dlouhá: přesahuje 4096 bajtů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:987
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1193
+msgid "Operation timed out"
+msgstr "Časový limit operace vypršel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1003
+msgid "Unexpected SSL error"
+msgstr "Neočekávaná chyba SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1016
+msgid "Failed to enter non blocking mode"
+msgstr "Selhal vstup do neblokovacího módu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1021
+msgid "Invalid target address"
+msgstr "Neplatná cílová adresa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1056
+msgid "Failed to initialize the SSL context"
+msgstr "Selhala inicializace SSL kontextu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1058
+msgid "Failed to initialize the SSL connection"
+msgstr "Selhala inicializace SSL spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1075
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:99
+msgid "Remote end has closed the connection"
+msgstr "Spojení ukončeno druhou stranou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1087
+msgid "Unrecoverable SSL error during handshake"
+msgstr "Neopravitelná chyba SSL během inicializace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1272
+msgid "Operation timed out (while selecting for read)"
+msgstr "Časový limit operace vypršel (při označování pro čtení)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1382
+msgid "This KVIrc executable has no SSL support"
+msgstr "Tato verze KVIrc nemá podporu SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1147
+msgid "Back"
+msgstr "Předchozí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:268
+msgid "Next"
+msgstr "Další"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:168
+msgid "%1 bytes"
+msgstr "%1 bajtů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:172
+msgid "%1 KB"
+msgstr "%1 KB"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:176
+msgid "%1 MB"
+msgstr "%1 MB"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:181
+msgid "%1 GB"
+msgstr "%1 GB"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:185
+msgid "%1 TB"
+msgstr "%1 TB"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:620
+msgid "Internal error"
+msgstr "Interní chyba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:54
+msgid "Unknown command"
+msgstr "Neznámý příkaz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:55
+msgid "Missing closing brace"
+msgstr "Chybí uzavírací závorka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:56
+msgid "Unexpected end of command in string"
+msgstr "Neočekávaný konec příkazu v řetězci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:57
+msgid "Unexpected end of command in dictionary key"
+msgstr "Neočekávaný konec příkazu v slovníkovém klíči"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:58
+msgid "Switch dash without switch letter"
+msgstr "Pomlčka přepínače bez písmenka přepínače"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:59
+msgid "Unknown function"
+msgstr "Neznámá funkce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:60
+msgid "Unexpected end of command in parenthesis"
+msgstr "Neočekávaný konec příkazu v závorkách"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:61
+msgid "Unexpected end of command in function parameters"
+msgstr "Neočekávaný konec příkazu v parametru funkce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:62
+msgid "Missing variable name"
+msgstr "Chybí název proměnné"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:63
+msgid "Variable or identifier expected"
+msgstr "Očekávána proměnná nebo identifikátor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:64
+msgid "Left operand is not a number"
+msgstr "Levý operand není číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:65
+msgid "Multiple operations not supported for numeric operators"
+msgstr "Vícenásobné operace pro číselné operátory nejsou povoleny"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:67
+msgid "Modulo by zero"
+msgstr "Zbytek po dělení nulou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:68
+msgid "Right operand is not a number"
+msgstr "Pravý operand není číslo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:69
+msgid "Unterminated expression (missing ')' ?)"
+msgstr "Neukončený výraz (chybí ')' ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:70
+msgid "Unterminated subexpression (Parenthesis mismatch)"
+msgstr "Neukončený subvýraz (Nesoulad závorek)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:71
+msgid "Unexpected character"
+msgstr "Neočekávaný znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:73
+msgid "No host to resolve"
+msgstr "žádný hostitel pro zjištění"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:74
+msgid "(DNS Internal) Unsupported address family"
+msgstr "(DNS Interní) Nepodporovaná rodina adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:75
+msgid "Valid name but the host has no IP address"
+msgstr "Platné jméno, ale hostitel nemá IP adresu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:76
+msgid "Unrecoverable nameserver error (crashed ?)"
+msgstr "Nenadálá chyba nameserveru (spadl ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:77
+msgid "Dns temporaneous fault (try again)"
+msgstr "Dočasné selhání dns (zkuste znovu)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:78
+msgid "(DNS Internal) Bad flags"
+msgstr "(DNS Interní) Špatné flagy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:79
+msgid "(DNS Internal) Out of memory"
+msgstr "(DNS Interní) Mimo paměť"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:80
+msgid "(DNS Internal) Service not supported"
+msgstr "(DNS Interní) Služba není podporována"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:81
+msgid "Unknown node (host not found)"
+msgstr "Neznámý node (hostitel nenalezen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:82
+msgid "(DNS Internal) Unsupported socket type"
+msgstr "(DNS Interní) Nepodporovaný typ soketu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:83
+msgid "Dns query failed"
+msgstr "Dns dotaz selhal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:84
+msgid "This KVIrc executable has no IPV6 support"
+msgstr "Tato verze KVIrc nemá podporu IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:85
+msgid "Host not found"
+msgstr "Hostitel nenalezen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:86
+msgid "(DNS Internal) IPC failure (slave data corrupted)"
+msgstr "(DNS Interní) IPC selhání (poškozená data slave)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:88
+msgid "Invalid IP address"
+msgstr "Neplatná IP adresa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:90
+msgid "Failed to put the socket in non blocking mode"
+msgstr "Selhalo nastavení soketu do neblokovacího módu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:91
+msgid "Bad file descriptor"
+msgstr "Špatný deskriptor souboru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:92
+msgid "Out of address space"
+msgstr "Mimo adresní prostor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:93
+msgid "Connection refused"
+msgstr "Spojení odmítnuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:94
+msgid "Kernel networking panic"
+msgstr "Síťové jádro selhalo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:95
+msgid "Connection timed out"
+msgstr "Spojení vypršelo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:96
+msgid "Network is unreachable"
+msgstr "Síť je nedostupná"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:97
+msgid "Broken pipe"
+msgstr "Zlomená roura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:98
+msgid "Invalid proxy address"
+msgstr "Neplatná adresa proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:100
+msgid "Invalid irc context id"
+msgstr "Neplatné id IRC kontextu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:101
+msgid "Error in loading module"
+msgstr "Chyba při nahrání modulu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:102
+msgid "No such module command"
+msgstr "Neplatný příkaz modulu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:103
+msgid "No such module function"
+msgstr "Neplatná funkce modulu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:104
+msgid "Left operand is not a dictionary reference"
+msgstr "Levý operátor není slovníkovou referencí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:105
+msgid "Right operand is not a dictionary reference"
+msgstr "Pravý operátor není slovníkovou referencí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:106
+msgid "Missing object class name"
+msgstr "Chybějící jméno třídy objektu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:107
+msgid "No such object class"
+msgstr "Neplatná třída objektu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:108
+msgid "No such object"
+msgstr "Neplatný objekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:109
+msgid "No such object function"
+msgstr "Neplatná funkce objektu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:110
+msgid "Invalid left operand"
+msgstr "Neplatný levý operand"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:111
+msgid "Not enough parameters"
+msgstr "Nedostatek parametrů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:112
+msgid "Integer parameter expected"
+msgstr "Očekáván parametr typu integer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:113
+msgid "Invalid parameter"
+msgstr "Neplatný parametr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:114
+msgid "No such file"
+msgstr "Soubor nenalezen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:115
+msgid "Open parenthesis expected"
+msgstr "Očekávána počáteční závorka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:116
+msgid "Open brace expected"
+msgstr "Chybí počáteční závorka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:117
+msgid "Can't kill a builtin class"
+msgstr "Nelze killnout vestavěnou třídu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:118
+msgid "The SOCKSV4 protocol lacks IpV6 support"
+msgstr "Protokol SOCKSV4 postrádá podporu IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:119
+msgid "Unrecognized proxy reply"
+msgstr "Neočekávaná proxy odezva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:120
+msgid "Proxy response: auth failed: access denied"
+msgstr "Proxy odezva: autorizace selhala: přístup zamítnut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:121
+msgid "Proxy response: No acceptable auth method: request rejected"
+msgstr "Proxy odezva: Neakceptovaná metoda autorizace: požadavek zamítnut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:122
+msgid "Proxy response: request failed"
+msgstr "Proxy odezva: požadavek selhal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:123
+msgid "Proxy response: ident failed"
+msgstr "Proxy odezva: ident selhal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:124
+msgid "Proxy response: ident not matching"
+msgstr "Proxy odezva: ident nesouhlasí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:125
+msgid "Proxy response: general SOCKS failure"
+msgstr "Proxy odezva: obecné selhání SOCKS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:126
+msgid "Proxy response: connection not allowed"
+msgstr "Proxy odezva: spojení není povoleno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:127
+msgid "Proxy response: network unreachable"
+msgstr "Proxy odezva: síť nedostupná"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:128
+msgid "Proxy response: host unreachable"
+msgstr "Proxy odezva: hostitel nedostupný"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:129
+msgid "Proxy response: connection refused"
+msgstr "Proxy odezva: spojení odmítnuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:130
+msgid "Proxy response: TTL expired"
+msgstr "Proxy odezva: TTL vypršelo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:131
+msgid "Proxy response: command not supported"
+msgstr "Proxy odezva: příkaz není podporován"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:132
+msgid "Proxy response: address type not supported"
+msgstr "Proxy odezva: typ adresy není podporován"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:133
+msgid "Proxy response: invalid address"
+msgstr "Proxy odezva: neplatná adresa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:134
+msgid "Invalid port number"
+msgstr "Neplatné číslo portu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:135
+msgid "Socket not connected"
+msgstr "Soket není připojen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:136
+msgid "Insufficient resources to complete the operation"
+msgstr "Nedostatek zdrojů pro dokončení operace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:137
+msgid "Can't setup a listening socket : bind failed"
+msgstr "Nelze vytvořit naslouchací soket : vázání selhalo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:138
+msgid "Can't resolve the localhost name"
+msgstr "Nelze zjistit lokálního hostitele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:139
+msgid "Unsupported image format"
+msgstr "Nepodporovaný formát obrázku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:140
+msgid "Can't open file for appending"
+msgstr "Nelze otevřít soubor pro připojování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:542
+msgid "Can't open file for writing"
+msgstr "Nelze otevřít soubor pro zápis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:142
+msgid "File I/O error"
+msgstr "Chyba I/O souboru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:143
+msgid "Acknowledge error"
+msgstr "Chyba potvrzení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:982
+msgid "Can't open file for reading"
+msgstr "Nelze otevřít soubor pro čtení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:145
+msgid "Can't send a zero-size file"
+msgstr "Nelze poslat soubor s nulovou délkou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:146
+msgid "Missing popup name"
+msgstr "Chybí jméno popupu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:147
+msgid "'item', 'popup', 'label' or 'separator' keyword expected"
+msgstr "'item', 'popup', 'label' nebo 'separator' klíčová slova očekávána"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:148
+msgid "Self modification not allowed"
+msgstr "Vlastní úprava není dovolena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:149
+msgid "UNUSED"
+msgstr "NEPOUŽITO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:150
+msgid "Feature not available"
+msgstr "Funkce není dostupná"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:151
+msgid "Unexpected characters in array index"
+msgstr "Neočekávané znaky v indexu pole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:152
+msgid "Unexpected end in expression"
+msgstr "Neočekávaný konec ve výrazu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:153
+msgid "Unexpected end in array index"
+msgstr "Neočekávaný konec indexu pole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:154
+msgid "Connection thru HTTP proxy failed"
+msgstr "Spojení přes HTTP proxy selhalo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:155
+msgid "Case , match , regexp , default or break keyword expected"
+msgstr "Case , match , regexp , default nebo break klíčová slova očekávána"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:156
+msgid "Access denied"
+msgstr "Přístup zamítnut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:157
+msgid "Address already in use"
+msgstr "Adresa se již používá"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:158
+msgid "Can't assign the requested address"
+msgstr "Nelze přiřadit požadovanou adresu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:159
+msgid "Connection reset by peer"
+msgstr "Spojení resetováno peer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:160
+msgid "Host unreachable (no route to host)"
+msgstr "Hostitel není dostupný (neexistuje cesta k hostiteli)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:161
+msgid "Variable expected"
+msgstr "Chybí proměnná"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:162
+msgid "Invalid array index: positive integer expected"
+msgstr "Neplatný index pole: očekáván kladný integer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:163
+msgid "listen() call failed"
+msgstr "volání listen() selhalo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:164
+msgid "This executable has been compiled without SSL support"
+msgstr "Spustitelný soubor byl přeložen bez podpory SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:165
+msgid "Secure Socket Layer error"
+msgstr "Chyba SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:166
+msgid "Slash (/) character expected"
+msgstr "Očekáváno lomítko (/)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:167
+msgid "Unknown string manipulation operation"
+msgstr "Neznámá operace manipulace s řetězcem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:168
+msgid "Operation aborted"
+msgstr "Operace přerušena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:169
+msgid "Unexpected token"
+msgstr "Neočekávaný token"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:170
+msgid "Scope object already defined (unexpected @)"
+msgstr "Objekt pole je již definován (neočekávaný @)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:171
+msgid "There is no $this pointer in this scope (unexpected @)"
+msgstr "V tomto poli není žádný $this ukazatel (neočekávaný @)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:140
+msgid "Operation cancelled"
+msgstr "Operace zrušena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:170
+msgid "File write error"
+msgstr "Chyba zápisu souboru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:176
+msgid "File read error"
+msgstr "Chyba čtení souboru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:324
+msgid "Packaging file %Q"
+msgstr "Balíčkuji soubor %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:779
+msgid "Failed to open a source file for reading"
+msgstr "Nelze otevřít zdrojový soubor pro čtení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:817
+msgid "Compression library initialization error"
+msgstr "Chyba inicializace kompresní knihovny"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:394
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:828
+msgid "Compression library error"
+msgstr "Chyba komprimační knihovny"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:465
+msgid "Compression library internal error"
+msgstr "Interní chyba kompresní knihovny"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:485
+msgid "Error while compressing a file stream"
+msgstr "Chyba během komprese souboru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:526
+msgid "Creating package..."
+msgstr "Vytváří se balíček..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:527
+msgid "Writing package header"
+msgstr "Zapisuje se hlavička balíčku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:571
+msgid "Writing informational fields"
+msgstr "Zapisují se informační políčka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:597
+msgid "Writing package data"
+msgstr "Zapisuji data balíčku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:659
+msgid "The file specified is not a valid KVIrc package"
+msgstr "Zadaný soubor není platným balíčkem KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:668
+msgid ""
+"The package has an invalid version number, it might have been created by a "
+"newer KVIrc"
+msgstr "Balíček má neplatné číslo verze, byl asi vytvořen novějším KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:714
+msgid "Invalid info field: the package is probably corrupt"
+msgstr "Neplatné info pole: balíček je nejspíše poškozen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:745
+msgid ""
+"The package contains compressed data but this executable does not support "
+"compression"
+msgstr ""
+"Balíček obsahuje komprimovaná data, ale tato binárka nepodporuje kompresi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:771
+msgid "Failed to create the target directory"
+msgstr "Nelze vytvořit cílový adresář"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:784
+msgid "Unpacking file %Q"
+msgstr "Rozbaluji soubor %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:916
+msgid "Error in compressed file stream"
+msgstr "Chyba v komprimovaném souboru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:990
+msgid "Reading package..."
+msgstr "Načítá se balíček..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:991
+msgid "Reading package header"
+msgstr "Načítám hlavičku balíčku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:998
+msgid "Reading package data"
+msgstr "Čtu data balíčku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:1017
+msgid "Invalid data field: the package is probably corrupt"
+msgstr "Neplatné datové pole: balíček je nejspíše poškozen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1127
+msgid "Select color"
+msgstr "Vyberte barvu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1128
+msgid "&Basic colors"
+msgstr "&Základní barvy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1129
+msgid "&Custom colors"
+msgstr "&Vlastní barvy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1130
+msgid "&Red"
+msgstr "&Červená"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1131
+msgid "&Green"
+msgstr "&Zelená"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1132
+msgid "Bl&ue"
+msgstr "&Modrá"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1133
+msgid "&Define Custom Colors >>"
+msgstr "&Definovat vlastní barvy >>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1134
+msgid "&Add to Custom Colors"
+msgstr "&Přidat k vlastním barvám"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1136
+msgid "Select Font"
+msgstr "Vyberte Font"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1137
+msgid "&Font"
+msgstr "&Font"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1138
+msgid "Font st&yle"
+msgstr "St&yl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1139
+msgid "&Size"
+msgstr "&Velikost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1140
+msgid "Sample"
+msgstr "Vzorek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1141
+msgid "Effects"
+msgstr "Efekty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1142
+msgid "Stri&keout"
+msgstr "Př&eškrtnutý"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1143
+msgid "&Underline"
+msgstr "&Podtržený"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1144
+msgid "Scr&ipt"
+msgstr "Skri&pt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1146
+msgid "Parent Directory"
+msgstr "Nadřazený adresář"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1148
+msgid "Forward"
+msgstr "Vpřed"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1149
+msgid "Reload"
+msgstr "Obnovit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1150
+msgid "New Directory"
+msgstr "Nový adresář"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1151
+msgid "Bookmarks"
+msgstr "Záložky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1152
+msgid "Add Bookmark"
+msgstr "Přidat k záložkám"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1153
+msgid "&Edit Bookmarks"
+msgstr "Upravit &záložky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1154
+msgid "New Bookmark Folder..."
+msgstr "Nová složka záložek..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1156
+msgid "Sorting"
+msgstr "Třídění"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1157
+msgid "By Name"
+msgstr "Podle jména"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1158
+msgid "By Date"
+msgstr "Podle data"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1159
+msgid "By Size"
+msgstr "Podle velikosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1160
+msgid "Reverse"
+msgstr "Opačné"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1161
+msgid "Directories First"
+msgstr "Adresáře první"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1162
+msgid "Case Insensitive"
+msgstr "Nerozlišovat velikost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1163
+msgid "Short View"
+msgstr "Stručné zobrazení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1164
+msgid "Detailed View"
+msgstr "Detailní zobrazení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1165
+msgid "Show Hidden Files"
+msgstr "Zobrazovat skryté soubory"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1166
+msgid "Show Quick Access Navigation Panel"
+msgstr "Zobrazit panel rychlé navigace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1167
+msgid "Show Preview"
+msgstr "Zobrazit náhled"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1168
+msgid "Separate Directories"
+msgstr "Oddělit adresáře"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1169
+msgid "Often used directories"
+msgstr "Často používané adresáře"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1170
+msgid "Desktop"
+msgstr "Pracovní plocha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1171
+msgid "Home Directory"
+msgstr "Domovský adresář"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1172
+msgid "Floppy"
+msgstr "Disketa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1173
+msgid "Temporary Files"
+msgstr "Dočasné soubory"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1174
+msgid "Network"
+msgstr "Síť"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1175
+msgid "New Directory..."
+msgstr "Nový adresář..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1176
+msgid "Delete"
+msgstr "Smazat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1177
+msgid "Thumbnail Previews"
+msgstr "Náhledy miniatur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1178
+msgid "Large Icons"
+msgstr "Velké ikony"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1179
+msgid "Small Icons"
+msgstr "Malé ikony"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1180
+msgid "Properties..."
+msgstr "Vlastnosti..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1181
+msgid "&Automatic Preview"
+msgstr "&Automatický náhled"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1182
+msgid "&Preview"
+msgstr "Ná&hled"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1183
+msgid "&Location:"
+msgstr "&Umístění:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1184
+msgid "&Filter:"
+msgstr "&Maska:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1185
+msgid "All Files"
+msgstr "Všechny soubory"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:104
+msgid "- d -- h -- m -- s"
+msgstr "- d -- h -- m -- s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:111
+#, c-format
+msgid "%u h %u m %u s"
+msgstr "%u h %u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:113
+#, c-format
+msgid "%u h %u%u m %u%u s"
+msgstr "%u h %u%u %u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:118
+#, c-format
+msgid "%u m %u s"
+msgstr "%u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:120
+#, c-format
+msgid "%u m %u%u s"
+msgstr "%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:122
+#, c-format
+msgid "%u s"
+msgstr "%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:127
+#, c-format
+msgid "%u d %u h %u m %u s"
+msgstr "%u d %u h %u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:129
+#, c-format
+msgid "%u d %u%u h %u%u m %u%u s"
+msgstr "%u d %u%u h %u%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+msgid "Usage"
+msgstr "Použití"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+msgid "message"
+msgstr "zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:99
+msgid "-m: send a message instead of a notice"
+msgstr "-m: posle zprávu namísto oznámení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:100
+msgid "-w: send notice to all channel owners"
+msgstr "-w: pošle oznámení všem vlastníkům kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:101
+msgid "-a: send notice to all channel admins"
+msgstr "-a: pošle oznámení všem administrátorům kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:102
+msgid "-o: send notice to all channel ops"
+msgstr "-o: pošle oznámení všem operátorům kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:103
+msgid "-h: send notice to all channel halfops"
+msgstr "-h: pošle oznámení všem poloopům kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:104
+msgid "-v: send notice to all channel voices"
+msgstr "-v: pošle oznámení všem voice v kanále"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:105
+msgid "-q: quiet mode"
+msgstr "-q: tichý mód"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:138
+msgid "Sending wallop to"
+msgstr "Posílání wallop k"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:314
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:410
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:493
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:535
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:593
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:653
+msgid "Usage:"
+msgstr "Použití:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:223
+msgid "reason"
+msgstr "důvod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:272
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:416
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:440
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:599
+msgid "This is not a channel window"
+msgstr "Toto není okno kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:581
+msgid "Unsupported type: $0"
+msgstr "Nepodporovaný typ: $0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:604
+msgid "Channel Owner"
+msgstr "Vlastník kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:606
+msgid "Channel Administrator"
+msgstr "Administrátor kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:608
+msgid "Channel Operator"
+msgstr "Operátor kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:610
+msgid "Half Operator"
+msgstr "Polo-operátor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:612
+msgid "Voice"
+msgstr "Voice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:614
+msgid "User Operator"
+msgstr "Uživatel-operátor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:616
+msgid "Normal User"
+msgstr "Normální uživatel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:641
+msgid "You must use DNS in an IRC context"
+msgstr "Musíte použít DNS v IRC kontextu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:647
+msgid "You must be connected to a server"
+msgstr "Musíte být připojeni k serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:664
+msgid "No such user: $0"
+msgstr "Žádný uživatel: $0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:33
+msgid "The default script has been successfully installed."
+msgstr "Výchozí skript byl úspěšně nainstalován."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:34
+msgid "To connect to a server, type /server <server name>"
+msgstr "Pro připojení k serveru, napište /server <název serveru>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:36
+msgid "Happy ircing :)"
+msgstr "Veselé ircování :)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:15
+msgid "Options"
+msgstr "Možnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:40
+msgid "Window operations"
+msgstr "Operace s okny"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMENAME@"
+msgstr "@THEMENAME@"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMEDESCRIPTION@"
+msgstr "@THEMEDESCRIPTION@"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:18
+msgid "Stop Highlighting (Local)"
+msgstr "Vypnout Zvýrazňování (Lokálně)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:23
+msgid "Start Highlighting (Local)"
+msgstr "Zapnout Zvýrazňování (Lokálně)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:28
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:61
+msgid "Always Highlight"
+msgstr "Vždy zvýrazňovat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:30
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:55
+msgid "Highlight as"
+msgstr "Zvýrazňovat jako"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:66
+msgid "Stop Highlighting"
+msgstr "Zastavit zvýrazňování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:82
+msgid "is being ignored"
+msgstr "je ignorován"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:87
+msgid "is not being ignored"
+msgstr "není ignorován"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:93
+msgid "Enable Ignore"
+msgstr "Povolit ignorování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:98
+msgid "Ignore as..."
+msgstr "Ignorovat jako..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:240
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:282
+msgid "Ignore as"
+msgstr "Ignorovat jako"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:290
+msgid "Unignore"
+msgstr "neignorovat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:308
+msgid "is registered as"
+msgstr "je registrován jako"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:311
+msgid "is in the notify list"
+msgstr "je v seznamu oznamování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:314
+msgid "has a default avatar"
+msgstr "má výchozí avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:317
+msgid "is not registered"
+msgstr "není registrovaný"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:323
+msgid "Register"
+msgstr "Registrovat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:328
+msgid "Quick Registration"
+msgstr "Rychlá registrace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:330
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:355
+msgid "Register as"
+msgstr "Registrovat jako"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:361
+msgid "Edit Registration"
+msgstr "Upravit registraci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:366
+msgid "Unregister"
+msgstr "Odregistrovat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:373
+msgid "Add to Notify"
+msgstr "Přidat k Oznamování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:378
+msgid "Remove from Notify"
+msgstr "Odebrat z Oznamování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:385
+msgid "Choose"
+msgstr "Vybrat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:387
+msgid "Choose Avatar Image File"
+msgstr "Vyberte soubor obrázku Avataru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:396
+msgid "Set as Default"
+msgstr "Nastavit jako výchozí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:401
+msgid "Clear Default"
+msgstr "Smazat výchozí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:412
+msgid "Copy To Clipboard"
+msgstr "Kopírovat do schránky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:433
+msgid "Ban"
+msgstr "Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1037
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1084
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1224
+msgid "Multiple Users"
+msgstr "Více uživatelů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:577
+msgid "&Ban"
+msgstr "&Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1089
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1229
+msgid "idle time"
+msgstr "nečinnost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:758
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1236
+msgid "&Information"
+msgstr "&Informace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1115
+msgid "DNS for"
+msgstr "DNS pro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:499
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1120
+msgid "Mask for"
+msgstr "Maska pro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:505
+msgid "&Control"
+msgstr "&Ovládání"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:509
+msgid "O&wner"
+msgstr "&Vlastník"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:514
+msgid "&Deowner"
+msgstr "&Nevlastník"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:519
+msgid "&Administrator"
+msgstr "&Administrátor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:524
+msgid "&Deadministrator"
+msgstr "&Deadministrátor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:529
+msgid "&Op"
+msgstr "&Op"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:534
+msgid "&Deop"
+msgstr "&Deop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:539
+msgid "&Halfop"
+msgstr "&Polo-op"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:544
+msgid "&Dehalfop"
+msgstr "Polo&deop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:549
+msgid "&Voice"
+msgstr "&Voice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:554
+msgid "D&evoice"
+msgstr "D&evoice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:561
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "&Kick"
+msgstr "&Vykopnout"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+msgid "K&ick"
+msgstr "V&ykopnout"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "With..."
+msgstr "s..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Kick Reason"
+msgstr "Důvod Vykopnutí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Enter a kick reason"
+msgstr "Zadejte důvod vykopnutí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "Kick/Ban"
+msgstr "Vykopnutí/Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Kick/Ban Reason"
+msgstr "Důvod Vykopnutí/Banu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Enter a kick/ban reason"
+msgstr "Zadejte kick/ban důvod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "&Kick/Ban"
+msgstr "&Vykopnutí/Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:604
+msgid "Configure ban mask..."
+msgstr "Konfigurovat masku banu..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:612
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1263
+msgid "&Query"
+msgstr "&Query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:625
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1136
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1276
+msgid "&Registration"
+msgstr "&Registrace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1278
+msgid "&Highlight"
+msgstr "&Zvýraznění"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:629
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1280
+msgid "Ig&nore"
+msgstr "Ig&norování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:726
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1050
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1138
+msgid "Notify Avatar"
+msgstr "Oznámit Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:705
+msgid "&Part"
+msgstr "&Odejít"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:664
+msgid "Copy Channel Address"
+msgstr "Kopírovat adresu kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:749
+msgid "Channels"
+msgstr "Kanály"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:693
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:753
+msgid "&Join Channels..."
+msgstr "Při&jít do kanálů..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:700
+msgid "&Hop"
+msgstr "&Hop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:733
+msgid "Copy Channel URL to Clipboard"
+msgstr "Kopírovat URL kanálu do schránky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:782
+msgid "l (Connections)"
+msgstr "l (Spojení)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:787
+msgid "m (Command Usage)"
+msgstr "m (Použití příkazu)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:792
+msgid "o (Operators)"
+msgstr "o (Operátoři)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:797
+msgid "t (Connection stats ?)"
+msgstr "t (Statistiky spojení ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:802
+msgid "u (Uptime)"
+msgstr "u (Uptime)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:807
+msgid "y (y-Lines)"
+msgstr "y (y-Linky)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:812
+msgid "z (Debug Stats?)"
+msgstr "z (Debug Stats?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:909
+msgid "Chat with"
+msgstr "Chat s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:914
+msgid "Reverse Chat with"
+msgstr "Obrácený Chat s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:919
+msgid "Secure Chat with"
+msgstr "Zabezpečený Chat s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:926
+msgid "Send to"
+msgstr "Poslat k"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:931
+msgid "Secure send to"
+msgstr "Zabezpečeně poslat k"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:936
+msgid "Reverse Send to"
+msgstr "Opačně Poslat k"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:941
+msgid "Secure Reverse Send to"
+msgstr "Zabezpečeně Opačně Poslat k"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:948
+msgid "TDCC Send to"
+msgstr "TDCC Poslat k"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:953
+msgid "TDCC Reverse Send to"
+msgstr "TDCC Opačně Poslat k"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:960
+msgid "Voice Chat"
+msgstr "Hlasový Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1134
+msgid "&Ignore"
+msgstr "&Ignorovat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1165
+msgid "Logging to"
+msgstr "Logovat do"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1167
+msgid "Flush Log File"
+msgstr "Vyčistit soubor logů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1174
+msgid "Stop Logging"
+msgstr "Zastavit logování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1179
+msgid "Not Logging"
+msgstr "Neloguje se"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+msgid "Log To Default File"
+msgstr "Logovat do výchozího souboru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+msgid "Include Existing Buffer"
+msgstr "Zahrnout existující buffer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+msgid "Log To..."
+msgstr "Logovat do..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1201
+msgid "Choose Log Filename"
+msgstr "Vyberte soubor logu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1282
+msgid "Notify avatar"
+msgstr "Oznámit Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:50
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$copyfiles must be a "
+"source directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:56
+#, c-format
+msgid ""
+"[Installer] The second argument to \\%installer->\\$copyfiles must be a file "
+"name or file regexp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:62
+#, c-format
+msgid ""
+"[Installer] The third argument to \\%installer->\\$copyfiles must be a "
+"destination directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:94
+msgid "[Installer] Failed to create directory"
+msgstr "[Instalátor] Selhalo vytvoření adresáře"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:104
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$includefiles must be a "
+"source directory"
+msgstr ""
+
+#~ msgid "Lag is"
+#~ msgstr "Lag je"
+
+#~ msgid "milliseconds"
+#~ msgstr "milisekund"
+
+#~ msgid "%c\r!s\r%s\r%c: %Q"
+#~ msgstr "%c\r!s\r%s\r%c: %Q"
+
+#~ msgid "Restore from backup archive"
+#~ msgstr "Obnovit ze založního archívu"
+
+#~ msgid "Basic Properties"
+#~ msgstr "Základní vlastnosti"
+
+#~ msgid "Other:"
+#~ msgstr "Ostatní:"
+
+#~ msgid "Now you should specify an IRC server, to be connected to it"
+#~ msgstr "Nyní byste měli určit IRC server, ke kterému se připojíte"
+
+#~ msgid "Choose a server to connect"
+#~ msgstr "Zvolte server pro připojení"
+
+#~ msgid "Choose from built-in server list"
+#~ msgstr "Vyberte si z vestavěného seznamu serverů"
+
+#~ msgid "Specify server manually"
+#~ msgstr "Určit server ručně"
+
+#~ msgid "Server:"
+#~ msgstr "Server:"
+
+#~ msgid "Port:"
+#~ msgstr "Port:"
+
+#~ msgid "Open irc:// or irc6:// URL"
+#~ msgstr "Otevřít irc:// nebo irc6:// URL"
+
+#~ msgid "URL:"
+#~ msgstr "URL:"
+
+#~ msgid "Use server config"
+#~ msgstr "Použít konfiguraci serveru"
+
+#~ msgid "Config file:"
+#~ msgstr "Konfigurační soubor:"
+
+#~ msgid ""
+#~ "Setup found existing mIRC installation. It will try to import some of "
+#~ "mIRC settings and serverlist. If you don't want to do it, unselect import "
+#~ "in setup pages"
+#~ msgstr ""
+#~ "Instalátor nalezl existující instalaci mIRC. Pokusí se naimportovat "
+#~ "některá nastavení mIRC a seznam serverů. Pokud to nechcete, odškrtněte to "
+#~ "v instalačním průvodci"
+
+#~ msgid "Report a Bug"
+#~ msgstr "Nahlásit Chybu"
+
+#~ msgid "Smart"
+#~ msgstr "Smart"
+
+#~ msgid "Window with ID '%s' not found"
+#~ msgstr "Okno s ID '%s' nenalezeno"
+
+#~ msgid "Module function call failed: can't load the module 'str'"
+#~ msgstr "Volání funkce modulu selhalo: nelze načíst modul 'str'"
+
+#~ msgid ""
+#~ "Module function call failed: the module 'str' doesn't export a function "
+#~ "named 'split'"
+#~ msgstr ""
+#~ "Volání funkce modulu selhalo: modul 'str' neexportoval funkci 'split'"
+
+#, fuzzy
+#~ msgid "Hide ignore-messages (incomplete)"
+#~ msgstr "Pozývací zprávy"
+
+#, fuzzy
+#~ msgid "Ignore everything"
+#~ msgstr "Ignorované požadavky"
+
+#~ msgid "Notify"
+#~ msgstr "Oznamování"
+
+#, fuzzy
+#~ msgid "Image parameter is not an object"
+#~ msgstr "Zadaný parametr není celé číslo"
+
+#, fuzzy
+#~ msgid "Image object required"
+#~ msgstr "Je potřeba pixmapový objekt"
+
+#~ msgid "Can't fill non-widget object"
+#~ msgstr "Nelze zaplnit ne-widget objekt"
+
+#, fuzzy
+#~ msgid "Image objects required"
+#~ msgstr "Je potřeba pixmapový objekt"
+
+#~ msgid "Select error: %s (errno=%d)"
+#~ msgstr "Chyba výběru: %s (errno=%d)"
+
+#~ msgid "Connect error: %s (errno=%d)"
+#~ msgstr "Chyba spojení: %s (errno=%d)"
+
+#~ msgid "Write error: %s (errno=%d)"
+#~ msgstr "Chyba zápisu: %s (errno=%d)"
+
+#~ msgid "Read error: %s (errno=%d)"
+#~ msgstr "Chyba čtení: %s (errno=%d)"
+
+#~ msgid "WARNING : Can not load image library %s"
+#~ msgstr "UPOZORNĚNÍ : Nelze nahrát obrázkovou knihovnu %s"
+
+#, fuzzy
+#~ msgid "Load Theme - KVIrc"
+#~ msgstr "Uložit téma - KVIrc"
+
+#~ msgid "Unable to create theme directory."
+#~ msgstr "Nelze vytvořit adresář tématu."
+
+#, fuzzy
+#~ msgid "Version"
+#~ msgstr "Verze:"
+
+#, fuzzy
+#~ msgid "Themes"
+#~ msgstr "Téma"
+
+#~ msgid "[IDENT]: Service shutdown (spontaneous)"
+#~ msgstr "[IDENT]: Služba se vypíná (spontánně)"
+
+#~ msgid "[IDENT]: Service shutdown (on request)"
+#~ msgstr "[IDENT]: Služba se vypíná (na požadavek)"
+
+#~ msgid "<b>%Q</b>: +%Q (%u users)<hr>%Q"
+#~ msgstr "<b>%Q</b>: +%Q (%u uživatelů)<hr>%Q"
+
+#~ msgid "What's this?"
+#~ msgstr "Co je toto?"
+
+#~ msgid "(mIrc compatible)"
+#~ msgstr "(mIRC kompatibilní)"
+
+#~ msgid "<b>Nickname:</b>"
+#~ msgstr "<b>Přezdívka:</b>"
+
+#~ msgid ""
+#~ "<p>Here you can choose the default appearance of KVIrc.<br><br>The Fancy "
+#~ "Theme uses icons, a transparent background and a lot of colors. The "
+#~ "Minimalist Theme is designed for low-color displays or for \"console\" "
+#~ "extremists; it's more or less white text on a black background.<br><br>If "
+#~ "you had a previous version of KVIrc installed, you can choose to not "
+#~ "apply any theme in order to preserve your current visual settings."
+#~ "<br><br>If you don't know what to choose, just use the default.</p>"
+#~ msgstr ""
+#~ "<p>Zde si můžete vybrat výchozí vzhled KVIrc.<br><br>Fancy téma používá "
+#~ "ikony, transparentní pozadí a hodně barev. Minimalistické téma je "
+#~ "navrženo pro obrazovky s nízkym počtem barev, nebo pro \"konzolové\" "
+#~ "extremisty; je to víceméně bílý text na černém pozadí.<br><br>Pokud jste "
+#~ "měli nainstalovanou předchozí verzi KVirc, nemusíte aplikovat žádný "
+#~ "uvedený motiv, aby bylo zachováno vaše původní vizuální nastavení."
+#~ "<br><br>Pokud nevíte co vybrat, vyberte výchozí.</p>"
+
+#~ msgid "&Fancy Theme"
+#~ msgstr "&Fancy téma"
+
+#~ msgid "&Minimalist Theme"
+#~ msgstr "&Minimalistické téma"
+
+#~ msgid "&Don't apply any theme"
+#~ msgstr "&Nepoužít žádné téma"
+
+#~ msgid "Default Theme"
+#~ msgstr "Výchozí téma"
+
+#~ msgid ""
+#~ "<p>Setup can make a shortcut to the KVIrc program on your desktop, so you "
+#~ "can access it quickly.</p><p>Do you want this shortcut to be created?</p>"
+#~ msgstr ""
+#~ "<p>Instalátor nyní může vytvořit zástupce programu KVIrc na ploše, takže "
+#~ "k němu budete mít snadný přístup.</p><p>Chcete, aby byl zástupce vytvořen?"
+#~ "</p>"
+
+#~ msgid "<p>If you're unsure just say \"Yes\"</p>"
+#~ msgstr "<p>Pokud nevíte, tak zvolte \"Ano\"</p>"
+
+#~ msgid ""
+#~ "<p>Setup can now set KVIrc as default application for the irc:// and "
+#~ "irc6:// urls.</p><p>Do you want these settings to be applied?</p>"
+#~ msgstr ""
+#~ "<p>Instalátor nyní může nastavit KVIrc jako výchozí aplikaci pro irc:// a "
+#~ "irc6:// url.</p><p>Chcete použít toto nastavení?</p>"
+
+#~ msgid "URL Handlers"
+#~ msgstr "URL Handlery"
+
+#~ msgid ""
+#~ "<p><h2>Setup Complete</h2>Setup now has all the necessary information to "
+#~ "configure KVIrc.</p><p>Please click the \"<b>Finish</b>\" button to save "
+#~ "your choices and start KVIrc.</p>"
+#~ msgstr ""
+#~ "<p><h2>Instalace je kompletní</h2>Instalátor má nyní dostatek informací "
+#~ "pro nakonfigurování KVIrc.</p><p>Prosím klikněte na tlačítko "
+#~ "\"<b>Dokončit</b>\" pro uložení vašich nastavení a spuštění KVIrc.</p>"
+
+#~ msgid "Finish Setup"
+#~ msgstr "Dokončit instalaci"
+
+#~ msgid "Empty string"
+#~ msgstr "Prázdný řetězec"
+
+#~ msgid "No such open mode: %s"
+#~ msgstr "Žádný otevřený mód: %s"
+
+#~ msgid "Negative file index supplied !"
+#~ msgstr "Dodán negativní index souboru !"
+
+#~ msgid "Argument length is 0 - empty string"
+#~ msgstr "Délka argumentu je 0 - prázdný řetězec"
+
+#~ msgid "Length is a negative number !"
+#~ msgstr "Délka je záporné číslo !"
+
+#~ msgid "Nothing to write"
+#~ msgstr "Není co zapisovat"
+
+#~ msgid "Background not found %Q "
+#~ msgstr "Pozadí nenalezeno %Q "
+
+#~ msgid "Pixmap objects required !"
+#~ msgstr "Je potřeba pixmapový objekt !"
+
+#~ msgid "Pixmap is null"
+#~ msgstr "Pixmapa je nulová"
+
+#~ msgid ""
+#~ "Broken slot '%s' in target object '%s' while emitting signal '%s' from "
+#~ "object '%s': disconnecting"
+#~ msgstr ""
+#~ "Rozbitý slot '%s' v cílovém objektu '%s' při vysílání signálu '%s' z "
+#~ "objektu '%s': odpojuji se"
+
+#~ msgid ""
+#~ "No slot function '%s' exported by target object '%s' while emitting "
+#~ "signal '%s' from object '%s': disconnecting"
+#~ msgstr ""
+#~ "Žádná funkce slotu '%s' exportovaná cílovým objektem '%s' při vysílání "
+#~ "signálu '%s' z objektu '%s': odpojuji se"
+
+#~ msgid "Invalid timer id"
+#~ msgstr "Neplatné id časovače"
+
+#~ msgid "%cListing Qt Properties for widget object %s (%s)"
+#~ msgstr "%cSeznam Qt vlastností pro widget objekt %s (%s)"
+
+#~ msgid "Properties class: %c%s%c"
+#~ msgstr "Třída vlastností: %c%s%c"
+
+#~ msgid "Property: %c%s%c, type: %s"
+#~ msgstr "Vlastnost: %c%s%c, typ: %s"
+
+#~ msgid ", enum ("
+#~ msgstr ", enum ("
+
+#~ msgid ", set"
+#~ msgstr ", nastaven"
+
+#~ msgid ", writeable"
+#~ msgstr ", zapisovatelný"
+
+#~ msgid "Oops... no such property: %s"
+#~ msgstr "Oops... žádná vlastnost: %s"
+
+#~ msgid "No such QT property (%s)"
+#~ msgstr "Žádná QT vlastnost (%s)"
+
+#~ msgid "missing parameter"
+#~ msgstr "chybí parametr"
+
+#~ msgid "Invalid parameter (%s)"
+#~ msgstr "Neplatný parametr (%s)"
+
+#~ msgid "Pixmap Object required"
+#~ msgstr "Je potřeba pixmapový objekt"
+
+#~ msgid "Pixmap not found"
+#~ msgstr "Pixmapa nenalezena."
+
+#~ msgid "Unsupported QT property (%s)"
+#~ msgstr "Nepodporovaná QT vlastnost (%s)"
+
+#~ msgid "Missing parameters"
+#~ msgstr "Chybí parametry"
+
+#~ msgid "[Parser warning in '%Q']: %Q"
+#~ msgstr "[Parser varování v '%Q']: %Q"
+
+#~ msgid "Can't find the multimedia file %s"
+#~ msgstr "Nelze nalézt multimediální soubor %s"
+
+#~ msgid "Missing target, no action taken"
+#~ msgstr "Chybí cíl, akce neprovedena"
+
+#~ msgid "Invalid timeout specified , using default"
+#~ msgstr "Určena neplatná prodleva , použita výchozí"
+
+#~ msgid "Can't add a file offer for file %s (huh ? file not readable ?)"
+#~ msgstr "Nelze přidat ke sdílení soubor %s (huh ? soubor je nečitelný ?)"
+
+#~ msgid "Added %d secs file offer for file %s (%s) and receiver %s"
+#~ msgstr "Přidána %d sek nabídka pro soubor %s (%s) a příjemce %s"
+
+#~ msgid "%s plays '%s'"
+#~ msgstr "%s přehrává '%s'"
+
+#~ msgid "%s plays '%s' to %s"
+#~ msgstr "%s přehrává '%s' uživateli %s"
+
+#~ msgid "Error in command: %c%c%Q"
+#~ msgstr "Chyba v příkazu: %c%c%Q"
+
+#~ msgid "Error token: %c%Q"
+#~ msgstr "Chybný token: %c%Q"
+
+#~ msgid "Parsing stopped at %cline %d , character %d"
+#~ msgstr "Parsování zastaveno na %cřádku %d , znak %d"
+
+#~ msgid " %s"
+#~ msgstr " %s"
+
+#~ msgid "Object scope: name (%s), class (%s)"
+#~ msgstr "Rozsah objektu: název (%s), třída (%s)"
+
+#~ msgid "Object scope: deleted object"
+#~ msgstr "Rozsah objektu: smazaný objekt"
+
+#~ msgid "This pointer: name (%s), class (%s)"
+#~ msgstr "Tento ukazatel: jméno (%s), třída (%s)"
+
+#~ msgid "This pointer: deleted object"
+#~ msgstr "Tento ukazatel: smazaný objekt"
+
+#~ msgid "Internal call stack:"
+#~ msgstr "Interní volání zásobníku:"
+
+#~ msgid ""
+#~ " Current command stack depth: %d frames (stopping output at 25th frame)"
+#~ msgstr ""
+#~ " Hloubka zásobníku současného příkazu: %d rámců (zastaven výstup na 25."
+#~ "rámci)"
+
+#~ msgid " Parent command stack depth: %d frames"
+#~ msgstr " Hloubka zásobníku zdrojového příkazu: %d rámců"
+
+#~ msgid "Error triggered from raw event handler %c%s::%Q"
+#~ msgstr "Chyba vzniklá spuštěním handleru raw události %c%s::%Q"
+
+#~ msgid "Error triggered from event handler %c%Q::%Q"
+#~ msgstr "Chyba vzniklá spuštěním událostního handleru %c%Q::%Q"
+
+#~ msgid "Raw event handler %s::%Q is broken: disabling"
+#~ msgstr "Handler Raw události %s::%Q je poškozen: vypínám"
+
+#~ msgid "Event handler %Q::%Q is broken: disabling"
+#~ msgstr "Handler události %Q::%Q je poškozen: vypínám"
+
+#~ msgid "Variable evaluated to \"%s\""
+#~ msgstr "Proměnná vyhodnocena jako \"%s\""
+
+#~ msgid "Window with caption %Q not found"
+#~ msgstr "Okno s titulkem %Q nenalezeno"
+
+#~ msgid "='"
+#~ msgstr "='"
+
+#~ msgid "Ignoring NOTICE from %Q (%Q)"
+#~ msgstr "Ignoruje se PRIVMSG od %Q (%Q)"
+
+#~ msgid "Unknown channel mode"
+#~ msgstr "Neznámý mód kanálu"
+
+#~ msgid " symbol exported: not a kvirc module ?"
+#~ msgstr " symbol exportován: není to kvirc modul ?"
+
+#~ msgid ""
+#~ "Declaring global variables with an uppercase letter is deprecated. Global "
+#~ "variables should be declared with 'global'"
+#~ msgstr ""
+#~ "Dekalarace globálních proměnných s velkým písmenem je zastaralá. Globální "
+#~ "proměnné by měly být deklarovány s 'global'"
+
+#~ msgid "http://www.kvirc.net/"
+#~ msgstr "http://www.kvirc.net/"
+
+#, fuzzy
+#~ msgid "My Custom Servers"
+#~ msgstr "Kopírovat Server"
+
+#~ msgid "orphan_servers"
+#~ msgstr "orphan_servery"
+
+#~ msgid "Topic for \r!c\r%Q\r was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+#~ msgstr "Téma pro \r!c\r%Q\r nastavil \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+
+#~ msgid "\" ...that looks like an error to me..."
+#~ msgstr "\" ...to vypadá jako chyba pro mě..."
+
+#~ msgid "Search keywords"
+#~ msgstr "Hledat klíčová slova"
+
+#~ msgid "Choose..."
+#~ msgstr "Vyberte..."
+
+#~ msgid "File download terminated"
+#~ msgstr "Stahování souboru přerušeno"
+
+#~ msgid "File download from %1 terminated"
+#~ msgstr "Stahování souboru od %1 přerušeno"
+
+#~ msgid "Failed to find one of the wrap path widgets (%s::%s)"
+#~ msgstr "Neanlezen jeden z obalených widgetů (%s::%s)"
+
+#~ msgid "Invalid width parameter"
+#~ msgstr "Neplatný parametr šířky"
+
+#~ msgid "Invalid height parameter"
+#~ msgstr "Neplatný parametr výšky"
+
+#~ msgid "The parameters do not define a rectangle"
+#~ msgstr "Parametry nedefinují obdélník"
+
+#~ msgid "The parameters do not define a point"
+#~ msgstr "Parametry nedefinují bod"
+
+#~ msgid "The parameters are do not define a valid size"
+#~ msgstr "Parametry nedefinují platnou velikost"
+
+#~ msgid "Invalid size parameter (%s)"
+#~ msgstr "Neplatný parametr šířky (%s)"
+
+#~ msgid "Unknown widget type: %s"
+#~ msgstr "Neznámý typ widgetu: %s"
+
+#, fuzzy
+#~ msgid "Can't find the widget object assuming 0"
+#~ msgstr "Nelze najít widget objekt (%s)"
+
+#~ msgid "Invalid object"
+#~ msgstr "Neplatný objekt"
+
+#~ msgid "Invalid Parameters"
+#~ msgstr "Neplatné Parametry"
+
+#~ msgid "Can't find the widget object to add (%s)"
+#~ msgstr "Nelze najít widget objekt pro přidání (%s)"
+
+#~ msgid "Invalid row parameter (%s)"
+#~ msgstr "Neplatný parametr řádku (%s)"
+
+#~ msgid "Invalid column parameter (%s)"
+#~ msgstr "Neplatný parametr sloupce (%s)"
+
+#~ msgid "Unknown frame style"
+#~ msgstr "Neznámý styl rámu"
+
+#, fuzzy
+#~ msgid ""
+#~ "Failed writing the kvirc home directory path to %Q.\n"
+#~ "You will need to do it manually , otherwise KVirc will restart with\n"
+#~ "the setup!"
+#~ msgstr ""
+#~ "Nelze zapisovat domovský adresář kvirc do %s.\n"
+#~ "Musíte to udělat ručně , jinak KVirc bude restartovat\n"
+#~ "setup!"
+
+#~ msgid "SSL"
+#~ msgstr "SSL"
+
+#~ msgid "Ident Service"
+#~ msgstr "Ident služba"
+
+#~ msgid "Anti-spam"
+#~ msgstr "Anti-spam"
+
+#, fuzzy
+#~ msgid "Reconnection Options"
+#~ msgstr "připojení"
+
+#~ msgid "CTCP"
+#~ msgstr "CTCP"
+
+#~ msgid "Flood Protection"
+#~ msgstr "Ochrana před zahlcením"
+
+#~ msgid "DCC"
+#~ msgstr "DCC"
+
+#~ msgid "File Transfer"
+#~ msgstr "Přenos souboru"
+
+#~ msgid "Advanced"
+#~ msgstr "Pokročilé"
+
+#~ msgid "Chat"
+#~ msgstr "Chat"
+
+#~ msgid "General options"
+#~ msgstr "Hlavní možnosti"
+
+#~ msgid "Alert/Highlight"
+#~ msgstr "Výstrahy/Zvýraznění"
+
+#~ msgid "Input"
+#~ msgstr "Vstup"
+
+#~ msgid "Interface"
+#~ msgstr "Rozhraní"
+
+#~ msgid "General"
+#~ msgstr "Hlavní"
+
+#~ msgid "Transparency"
+#~ msgstr "Průhlednost"
+
+#~ msgid "MDI Captions"
+#~ msgstr "MDI Titulky"
+
+#~ msgid "MDI Area"
+#~ msgstr "MDI Oblast"
+
+#~ msgid "ToolBar Applets"
+#~ msgstr "Aplety Nástrojové lišty"
+
+#~ msgid "Output"
+#~ msgstr "Výstup"
+
+#~ msgid "Lag"
+#~ msgstr "Lag"
+
+#~ msgid "Logging"
+#~ msgstr "Logování"
+
+#~ msgid "Media Types"
+#~ msgstr "Typy médií"
+
+#~ msgid "NickServ"
+#~ msgstr "NickServ"
+
+#~ msgid "Contacts"
+#~ msgstr "Kontakty"
+
+#~ msgid "Notifier"
+#~ msgstr "Oznamovač"
+
+#~ msgid "Output Style"
+#~ msgstr "Styl výstupu"
+
+#~ msgid "Proxy Hosts"
+#~ msgstr "Proxy hostitelé"
+
+#~ msgid "Query"
+#~ msgstr "Query"
+
+#~ msgid "Servers"
+#~ msgstr "Servery"
+
+#~ msgid "Sound"
+#~ msgstr "Zvuk"
+
+#~ msgid "Tree taskbar"
+#~ msgstr "Stromová lišta"
+
+#~ msgid "Classic taskbar"
+#~ msgstr "Klasická lišta"
+
+#~ msgid "Text icons"
+#~ msgstr "Textové ikony"
+
+#~ msgid "Labels"
+#~ msgstr "Návěstí"
+
+#~ msgid "Scripting Engine"
+#~ msgstr "Skriptovací nástroj"
+
+#~ msgid "URL handlers"
+#~ msgstr "URL handlery"
+
+#~ msgid "Userlist"
+#~ msgstr "Uživatelé"
+
+#~ msgid "Protection"
+#~ msgstr "Ochrana"
+
+#~ msgid "Avatar Handling"
+#~ msgstr "Správa avataru"
+
+#~ msgid "User Experience Level"
+#~ msgstr "Úroveň zkušeností uživatele"
+
+#~ msgid "Invalid timeout (%s)"
+#~ msgstr "Neplatná prodleva (%s)"
+
+#~ msgid "Invalid port specified: the kernel will choose one"
+#~ msgstr "Určen neplatný port: kernel si nějaký vybere sám"
+
+#~ msgid "Invalid port (%s)"
+#~ msgstr "Neplatný port (%s)"
+
+#~ msgid "Non-negative integer length expected as parameter"
+#~ msgstr "Očekáváno kladné celé číslo jako parametr"
+
+#~ msgid "Non-negative integer index expected as first parameter"
+#~ msgstr "Očekáváno kladné celé číslo jako první parametr"
+
+#~ msgid "Non-negative integer length expected as second parameter"
+#~ msgstr "Očekáváno kladné celé číslo jako druhý parametr"
+
+#~ msgid "Invalid x offset parameter (%s)"
+#~ msgstr "Neplatný x offset parametr (%s)"
+
+#~ msgid "Invalid y offset parameter (%s)"
+#~ msgstr "Neplatný y offset parametr (%s)"
+
+#~ msgid "Can't find the specified file '%s'."
+#~ msgstr "Nelze nalézt zadaný soubor '%s'."
+
+#~ msgid "Class is undefined"
+#~ msgstr "Třída není definovaná"
+
+#~ msgid ""
+#~ "$setPaletteForeground requires either an array as first parameter or "
+#~ "three integers"
+#~ msgstr "$setGeometry() vyžaduje pole jako první parametr třech celých čísel"
+
+#~ msgid ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">General Preferences</font></h1></center></td></"
+#~ "tr><tr><td><br><br><center><b>These sections contain various settings for "
+#~ "KVIrc</b></center><br><br><p>When you have finished, click \"<b>OK</b>\" "
+#~ "to accept your changes or \"<b>Cancel</b>\" to discard them. Clicking "
+#~ "\"<b>Apply</b>\" will commit your changes without closing the window.</"
+#~ "td></tr><tr><td>Many settings have tooltips that can be shown by holding "
+#~ "the cursor over their label for a few seconds.</p></td></tr></table>"
+#~ msgstr ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">Hlavní předvolby</font></h1></center></td></"
+#~ "tr><tr><td><br><br><center><b>Tyto sekce obsahují nejdůležitější "
+#~ "nastavení KVIrc</b></center><br><br><p>Po dokončení, klikněte na \"<b>OK</"
+#~ "b>\" pro potvrzení změn nebo \"<b>Zrušit</b>\" pro zrušení. Kliknutím na "
+#~ "\"<b>Použít</b>\" provedete změny bez zavření okna.</td></"
+#~ "tr><tr><td>Mnoho nastavení má kontextovou nápovědu, která se zobrazí při "
+#~ "přejezdu kurzoru na pár sekund.</p></td></tr></table>"
+
+#~ msgid ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">General Preferences</font></h1></center></td></"
+#~ "tr><tr><td><br><br>Select a category in the list view on the left to view "
+#~ "the related settings. When you have finished, click \"<b>OK</b>\" to "
+#~ "accept your changes or \"<b>Cancel</b>\" to discard them. Clicking "
+#~ "\"<b>Apply</b>\" will commit your changes without closing this window."
+#~ "<br><br></td></tr></table>"
+#~ msgstr ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">Hlavní předvolby</font></h1></center></td></"
+#~ "tr><tr><td><br><br>Vyberte si kategorii ze seznamu nalevo pro prohlédnutí "
+#~ "souvisejících nastavení. Po·dokončení,·klikněte·na \"<b>OK</b>\" pro "
+#~ "potvrzení změn nebo \"<b>Zrušit</b>\" pro zrušení. Kliknutím na "
+#~ "\"<b>Použít</b>\" provedete·změny·bez·zavření·tohoto okna.<br><br></td></"
+#~ "tr></table>"
+
+#~ msgid "Preferences - KVIrc"
+#~ msgstr "Předvolby - KVIrc"
+
+#~ msgid "General Preferences"
+#~ msgstr "Hlavní předvolby"
+
+#~ msgid "My Experience level"
+#~ msgstr "Úroveň mých zkušeností"
+
+#~ msgid "Close this dialog, accepting all changes."
+#~ msgstr "Zavře tento dialog a provede všechny změny."
+
+#~ msgid "Commit all changes immediately."
+#~ msgstr "Provede všechny změny okamžitě."
+
+#~ msgid "Close this dialog, discarding all changes."
+#~ msgstr "Zavře tento dialog, bez provedení změn."
+
+#~ msgid "Newbie"
+#~ msgstr "Nováček"
+
+#~ msgid "Normal user"
+#~ msgstr "Normální uživatel"
+
+#~ msgid "Experienced user"
+#~ msgstr "Zkušený uživatel"
+
+#~ msgid ""
+#~ "This section contains irc tools<br><p>like<b> away, lag and logging "
+#~ "system. </b> </p>"
+#~ msgstr ""
+#~ "Tato sekce obsahuje irc nástroje<br><p>jako<b> away, lag a loggovací "
+#~ "systém. </b> </p>"
+
+#~ msgid ""
+#~ "This section contains irc protection tools<br><p>like<b> flood, ignore, "
+#~ "antispam. </b> </p>"
+#~ msgstr ""
+#~ "Tato sekce obsahuje irc ochranné nástroje<br><p>jako<b> flood, ignore, "
+#~ "antispam. </b> </p>"
+
+#~ msgid "Output verbosity"
+#~ msgstr "Upovídanost výstupu"
+
+#~ msgid "Mute"
+#~ msgstr "Ztlumený"
+
+#~ msgid "Quiet"
+#~ msgstr "Tichý"
+
+#~ msgid "Normal"
+#~ msgstr "Normální"
+
+#~ msgid "Verbose"
+#~ msgstr "Hlasitý"
+
+#~ msgid "Paranoic"
+#~ msgstr "Paranoidní"
+
+#~ msgid "Show in active window"
+#~ msgstr "Zobrazovat v aktivním okně"
+
+#~ msgid "External messages"
+#~ msgstr "Vnější zprávy"
+
+#~ msgid "External CTCP replies"
+#~ msgstr "Vnější CTCP odezvy"
+
+#~ msgid "Whois replies"
+#~ msgstr "Whois odezvy"
+
+#~ msgid "ChanServ and NickServ notices"
+#~ msgstr "ChanServ a NickServ oznámení"
+
+#~ msgid "Server replies"
+#~ msgstr "Odezvy serveru"
+
+#~ msgid "Server notices"
+#~ msgstr "Oznámení serveru"
+
+#~ msgid "Broadcast and WALLOPS messages"
+#~ msgstr "Vysílací a WALLOPS zprávy"
+
+#~ msgid "Show extended server information"
+#~ msgstr "Zobrazit rozšířené informace serveru"
+
+#~ msgid "Show server pings"
+#~ msgstr "Zobrazit pingy serveru"
+
+#~ msgid "Show own parts in the console"
+#~ msgstr "Zobrazit vlastní odchody v konzoli"
+
+#~ msgid "Show compact mode changes"
+#~ msgstr "Zobrazit kompaktní změny módů"
+
+#~ msgid "On Channel Join"
+#~ msgstr "Při příchodu do kanálu"
+
+#~ msgid "Echo channel topic"
+#~ msgstr "Vypsat téma kanálu"
+
+#~ msgid "Show channel sync time"
+#~ msgstr "Zobrazit čas synchronizace kanálu"
+
+#~ msgid "Font"
+#~ msgstr "Font"
+
+#~ msgid "Foreground color"
+#~ msgstr "Barva popředí"
+
+#~ msgid "Background color"
+#~ msgstr "Barva pozadí"
+
+#~ msgid "Background image"
+#~ msgstr "Obrázek na pozadí"
+
+#~ msgid "Save Current Theme"
+#~ msgstr "Uložit současné téma"
+
+#~ msgid "Theme name:"
+#~ msgstr "Název tématu:"
+
+#~ msgid "Author:"
+#~ msgstr "Autor:"
+
+#~ msgid "You must choose a theme name!"
+#~ msgstr "Musíte si vybrat název téma!"
+
+#, fuzzy
+#~ msgid "Unable to create theme files directory."
+#~ msgstr "Nelze vytvořit adresář tématu."
+
+#, fuzzy
+#~ msgid "Unable to create theme utils directory."
+#~ msgstr "Nelze vytvořit adresář tématu."
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for reading."
+#~ msgstr "Nelze otevřít soubor %s pro čtení."
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for writing."
+#~ msgstr "Nelze otevřít soubor %s pro zápis."
+
+#~ msgid ""
+#~ "The list below shows the currently installed themes. To apply a theme "
+#~ "select it and click \"Ok\" or \"Apply\". Please note that the message "
+#~ "text colors are applied only to new messages in each window.<br>To "
+#~ "install a new theme, unpack it to:<br><b>"
+#~ msgstr ""
+#~ "Následující seznam ukazuje současná nainstalovaná témata. Pro změnu "
+#~ "vyberte téma a klikněte na \"Ok\" nebo \"Použít\". Barvy textu zpráv se "
+#~ "projeví samozřejmě až u nových zpráv v každém okně.<br>Pro nainstalování "
+#~ "nového tématu jej rozbalte do:<br><b>"
+
+#~ msgid "Refresh Theme List"
+#~ msgstr "Obnovit seznam témat"
+
+#~ msgid "Save Current Theme..."
+#~ msgstr "Uložit současné téma..."
+
+#~ msgid "Get More Themes..."
+#~ msgstr "Stáhnout další témata..."
+
+#~ msgid "Current Theme"
+#~ msgstr "Současné téma"
+
+#~ msgid "<p>The active theme settings</p>"
+#~ msgstr "<p>Nastavení aktivního téma</p>"
+
+#~ msgid "<p>Theme: %1</p>"
+#~ msgstr "<p>Téma: %1</p>"
+
+#~ msgid "<p>Version: %1</p>"
+#~ msgstr "<p>Verze: %1</p>"
+
+#~ msgid "<p>Date: %1</p>"
+#~ msgstr "<p>Datum: %1</p>"
+
+#~ msgid "<p>Author: %1</p>"
+#~ msgstr "<p>Autor: %1</p>"
+
+#~ msgid "On Unexpected Disconnect"
+#~ msgstr "Při neočekávaném odpojení"
+
+#~ msgid "Keep channels open"
+#~ msgstr "Nechat kanály otevřené"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to keep channels open after an "
+#~ "unexpected disconnect.</center>"
+#~ msgstr ""
+#~ "<center>Tato volba způsobí, že KVirc nechá otevřené kanály i po "
+#~ "neočekávaném odpojení.</center>"
+
+#~ msgid "Keep queries open"
+#~ msgstr "Nechat query otevřené"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to keep queries open after an "
+#~ "unexpected disconnect.</center>"
+#~ msgstr ""
+#~ "<center>Tato volba způsobí, že KVirc nechá query otevřené i po "
+#~ "neočekávaném odpojení.</center>"
+
+#~ msgid "Rejoin channels after reconnect"
+#~ msgstr "Znovu přijít do kanálů po znovupřipojení"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to rejoin channels after a "
+#~ "successful reconnect attempt.</center>"
+#~ msgstr ""
+#~ "<center>Tato volba způsobí, že se KVirc znovu připojí na kanály po "
+#~ "úspěšném pokusu o znovupřipojení.</center>"
+
+#~ msgid "Reopen queries after reconnect"
+#~ msgstr "Znovu otevřít query po znovupřipojení"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to reopen query windows after a "
+#~ "successful reconnect attempt.</center>"
+#~ msgstr ""
+#~ "<center>Tato volba způsobí, že KVirc znovu otevře okna s query po "
+#~ "úspěšném pokusu o znovupřipojení.</center>"
+
+#~ msgid "Automatically reconnect"
+#~ msgstr "Automaticky znovu spojit"
+
+#~ msgid ""
+#~ "<center>This option will enable auto-reconnecting after an unexpected "
+#~ "disconnect. An unexpected disconnect is the <b>termination</b> of a "
+#~ "<b>fully connected IRC session</b> that was <b>not requested by the user</"
+#~ "b> by the means of the QUIT message.<p><b>Warning:</b> If you use /RAW to "
+#~ "send a QUIT message to the server, this option will not behave correctly, "
+#~ "since does not detect the outgoing QUIT message and will attempt to "
+#~ "reconnect after the server has closed the connection. For this reason, "
+#~ "always use the /QUIT command to close your connections. This option may "
+#~ "also behave incorrectly with bouncers that support detaching, in this "
+#~ "case a solution could be to prepare an alias that sends the bouncer "
+#~ "\"detach\" command immediately before the \"quit\" command.<br><tt>alias"
+#~ "(bncdetach){ raw bouncer detach; quit; }</tt></p></center>"
+#~ msgstr ""
+#~ "<center>Tato volba povolí automatické opětovné připojení po neočekávaném "
+#~ "odpojení. Neočekávané odpojení je takové<b>odpojení</b> od <b>úplně "
+#~ "připojeného IRC sezení</b>, které <b>nebylo vyžádáno uživatelem</b>."
+#~ "<p><b>Upozornění:</b> Pokud používáte /RAW k odeslání QUIT zprávy "
+#~ "serveru, tato volba nebude fungovat korektně, protože nedetekuje odchozí "
+#~ "QUIT zprávy a bude se znažit obnovit spojení poté, co server ukončil "
+#~ "spojení. Proto vždy použijte příkaz /QUIT pro ukončení spojení. Tato "
+#~ "volba také nemusí korektně fungovat s bouncery, které podporují "
+#~ "detaching, v tomto případě může být řešením alias, který pošle bounceru "
+#~ "příkaz \"detach\" těsně před příkazem \"quit\".<br><tt>alias(bncdetach)"
+#~ "{ raw bouncer detach; quit; }</tt></p></center>"
+
+#~ msgid "Maximum attempts (0: unlimited):"
+#~ msgstr "Maximálně pokusů (0: nekonečně):"
+
+#~ msgid "Delay between attempts:"
+#~ msgstr "Prodleva mezi pokusy:"
+
+#~ msgid " sec"
+#~ msgstr " sek"
+
+#~ msgid ""
+#~ "<center>Minimum value: <b>0 sec</b><br>Maximum value: <b>86400 sec</b></"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Minimální hodnota: <b>0 sek</b><br>Maximální hodnota: <b>86400 "
+#~ "sek</b></center>"
+
+#~ msgid "Your Experience level"
+#~ msgstr "Úroveň tvých zkušeností"
+
+#~ msgid "Novice"
+#~ msgstr "Nováček"
+
+#, fuzzy
+#~ msgid "No such options page class name %Q"
+#~ msgstr "Neznámý název pro volbu"
+
+#~ msgid "\"Smart\" nickname colors"
+#~ msgstr "\"Smart\" barvy přezdívek"
+
+#~ msgid "Show nicknames in bold"
+#~ msgstr "Zobrazovat přezdívky tučně"
+
+#~ msgid "Show user and host"
+#~ msgstr "Zobrazovat uživatele a hostitele"
+
+#~ msgid "Show channel mode prefix"
+#~ msgstr "Zobrazovat prefix módu kanálu"
+
+#~ msgid "User-defined prefix and postfix"
+#~ msgstr "Uživatelem definovaný prefix a postfix"
+
+#~ msgid "[PREFIX]nickname[!user@host][POSTFIX] message"
+#~ msgstr "[PREFIX]přezdívka[!uživatel@hostitel][POSTFIX] zpráva"
+
+#~ msgid "Prefix:"
+#~ msgstr "Prefix:"
+
+#~ msgid "Postfix:"
+#~ msgstr "Postfix:"
+
+#~ msgid "Don't show colors in user messages"
+#~ msgstr "Nezobrazovat barvy ve zprávách uživatelů"
+
+#~ msgid "Font:"
+#~ msgstr "Font:"
+
+#~ msgid "Background color:"
+#~ msgstr "Barva pozadí:"
+
+#~ msgid "Background image:"
+#~ msgstr "Obrázek na pozadí:"
+
+#~ msgid "Mark Line:"
+#~ msgstr "Označ řádek:"
+
+#~ msgid "Show message icons"
+#~ msgstr "Zobrazovat ikony zpráv"
+
+#~ msgid "Draw some emoticons (smileys) as pictures"
+#~ msgstr "Kreslit některé emotikony (smajlíky) jako obrázky"
+
+#~ msgid "Show timestamp"
+#~ msgstr "Zobrazovat čas"
+
+#~ msgid "Use UTC time for timestamp"
+#~ msgstr "Použít UTC pro měření času"
+
+#~ msgid "Use special color for timestamps"
+#~ msgstr "Použít speciální barvy pro měření času"
+
+#~ msgid "Timestamp color"
+#~ msgstr "Barva měření času"
+
+#~ msgid "Enable URL highlighting"
+#~ msgstr "Povolit zvýrazňování URL"
+
+#~ msgid "Use line wrap margin"
+#~ msgstr "Použít mez zalomení řádku"
+
+#~ msgid "Maximum buffer size:"
+#~ msgstr "Maximální velikost bufferu:"
+
+#~ msgid " lines"
+#~ msgstr " řádků"
+
+#~ msgid "Link tooltip show delay:"
+#~ msgstr "Prodleva zobrazení tooltipů:"
+
+#~ msgid " msec"
+#~ msgstr " msek"
+
+#~ msgid "Link tooltip hide delay:"
+#~ msgstr "Prodleva schování tooltipů:"
+
+#~ msgid "Track last read text line"
+#~ msgstr "Sledovat poslední přečtený řádek"
+
+#~ msgid "Nickname alternatives"
+#~ msgstr "Alternativní přezdívky"
+
+#~ msgid ""
+#~ "<center>Here you can choose up to three nicknames alternative to the "
+#~ "primary one. KVIrc will use the alternatives if the primary nick is "
+#~ "already used by someone else on a particular IRC network.</center>"
+#~ msgstr ""
+#~ "<center>Zde si můžete vybrat až tři alternativy k vaší hlavní přezdívce. "
+#~ "KVIrc použije alternativy, pokud je vaše hlavní přezdívka používána někým "
+#~ "jiným na příslušné IRC síti.</center>"
+
+#~ msgid "Alt. Nickname 1:"
+#~ msgstr "Alt. přezdívka 1:"
+
+#~ msgid "Alt. Nickname 2:"
+#~ msgstr "Alt. přezdívka 2:"
+
+#~ msgid "Alt. Nickname 3:"
+#~ msgstr "Alt. přezdívka 3:"
+
+#~ msgid ""
+#~ "<center>Your <b>nickname</b> is your primary form of identification on "
+#~ "IRC.<br>Since servers cannot accept multiple users sharing the same "
+#~ "nickname (case insensitive), you can provide alternative nicknames to be "
+#~ "used in casethe server refuses to accept the default one.</center>"
+#~ msgstr ""
+#~ "<center>Vaše <b>přezdívka</b> je vaší primární formou identifikace na IRC."
+#~ "<br>Protože servery neakceptují více uživatelů se stejnou přezdívkou "
+#~ "(nerozlišuje se velikost), můžete si nastavit alternativní přezdívky pro "
+#~ "použití, když server výchozí odmítne.</center>"
+
+#~ msgid "Alternatives..."
+#~ msgstr "Alternativy..."
+
+#~ msgid "Username:"
+#~ msgstr "Uživatelské jméno:"
+
+#~ msgid ""
+#~ "<center>This is the <b>username</b> that you will use to connect to the "
+#~ "server.<br>In the past, it was used as a form of authentication, but it "
+#~ "normally has no special use now.<br>In addition to your nickname, you are "
+#~ "identified on IRC by your <b>username@hostname</b>.</br>Basically, you "
+#~ "can enter any word you like here. :D</center>"
+#~ msgstr ""
+#~ "<center>Toto je <b>uživatelské_jméno</b> které bude použito při připojení "
+#~ "k serveru.<br>V minulosti bylo používáno jako druh autentikace, ale dnes "
+#~ "již nemá žádný speciální význam.<br>Jako dodatek k vaší přezdívce jste "
+#~ "identifikováni na IRC serveru pomocí <b>uživatelské_jméno@hostitel</b>.</"
+#~ "br>V podstatě zde můžete napsat, cokoliv chcete. :D</center>"
+
+#~ msgid ""
+#~ "<center>This text will appear when someone does a /WHOIS on you.<br>It is "
+#~ "intended to be your real name, but people tend to put random quotes and "
+#~ "phrases here too.</center>"
+#~ msgstr ""
+#~ "<center>Tento text se objeví, pokud na vás někdo použije /WHOIS.<br>Je "
+#~ "určen pro vaše skutečné jméno, ale lidé mají také sklony vkládat sem "
+#~ "různé poznámky a fráze.</center>"
+
+#~ msgid "Server notices (+s)"
+#~ msgstr "Oznámení serveru (+s)"
+
+#~ msgid "Default part message:"
+#~ msgstr "Výchozí odcházecí zpráva:"
+
+#~ msgid ""
+#~ "<center>This is the default part message that will be used when "
+#~ "you<br>leave a channel by closing a channel window.</center>"
+#~ msgstr ""
+#~ "<center>Toto je výchozí odcházecí zpráva, která bude použita "
+#~ "když<br>opustíte kanál zavřením okna kanálu.</center>"
+
+#~ msgid "Default quit message:"
+#~ msgstr "Výchozí opouštěcí zpráva:"
+
+#~ msgid ""
+#~ "<center>This is the default quit message that will be used when "
+#~ "you<br>quit your IRC session by closing the console window or "
+#~ "disconnecting by pressing the disconnect button.</center>"
+#~ msgstr ""
+#~ "<center>Toto je výchozí opouštěcí zpráva, která bude použita "
+#~ "když<br>opustíte vaši IRC relaci zavřením okna konzole, nebo odpojením "
+#~ "zmáčknutí tlačítka pro odpojení.</center>"
+
+#~ msgid "Pattern"
+#~ msgstr "Vzorek"
+
+#~ msgid "MIME Type"
+#~ msgstr "MIME typ"
+
+#~ msgid "MIME type:"
+#~ msgstr "MIME typ:"
+
+#~ msgid "File pattern:"
+#~ msgstr "Vzorek souboru:"
+
+#~ msgid "Magic bytes:"
+#~ msgstr "Magické bajty:"
+
+#~ msgid "Save path:"
+#~ msgstr "Cesta uložení:"
+
+#~ msgid "Local open command:"
+#~ msgstr "Otevřít lokálně pomocí:"
+
+#~ msgid ""
+#~ "<center>This field contains the command to execute to open a local file."
+#~ "<br><tt>$0</tt> is used in place of the filename</center>"
+#~ msgstr ""
+#~ "<center>Toto pole obsahuje příkaz, který se spustí pro otevření lokálního "
+#~ "souboru.<br><tt>$0</tt> je použit místo názvu souboru</center>"
+
+#~ msgid "Remote open command:"
+#~ msgstr "Otevřít vzdáleně pomocí:"
+
+#~ msgid ""
+#~ "<center>This field contains the command to execute when automatically "
+#~ "opening a received file.<br><tt>$0</tt> is used in place of the filename</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Toto pole obsahuje příkaz, který se spustí při automatickém "
+#~ "otevření přijatého souboru.<br><tt>$0</tt> je použit místo názvu souboru</"
+#~ "center>"
+
+#~ msgid "[Unknown Media Type]"
+#~ msgstr "[Neznámý typ média]"
+
+#~ msgid "New Media Type"
+#~ msgstr "Nový typ média"
+
+#~ msgid "NickServ Authentication Rule"
+#~ msgstr "Autentifikační pravidlo NIckServ"
+
+#~ msgid "Registered NickName"
+#~ msgstr "Registrovaná přezdívka"
+
+#~ msgid "Put here the nickname that you have registered with NickServ"
+#~ msgstr "Sem vložte přezdívku, kterou máte registrovanou s NickServ"
+
+#~ msgid "NickServ Mask"
+#~ msgstr "NickServ Maska"
+
+#~ msgid ""
+#~ "This is the mask that NickServ must match to be correctly identified as "
+#~ "the NickServ service. This usually will be something like <b>NickServ!"
+#~ "[email protected]</b>.<br>You can use wildcards for this field, but "
+#~ "generally it is a security flaw. If you're 100% sure that NO user on the "
+#~ "network can use the nickname \"NickServ\", the mask <b>NickServ!*@*</b> "
+#~ "may be safe to use in this field."
+#~ msgstr ""
+#~ "Toto je maska, která musí souhlasit s NickServ, aby správně "
+#~ "identifikovala NickServ službu. Většinou to bývá něco jako <b>NickServ!"
+#~ "[email protected]</b>.<br>Můžete použít zástupné znaky v tomto "
+#~ "poli, ale to je bezpečnostní riziko. Pokud jste si 100% jist, že NIKDO v "
+#~ "síti nemůže použít přezdívku \"NickServ\", tak maska <b>NickServ!*@*</b> "
+#~ "by měla být bezpečně použita v tomto poli."
+
+#~ msgid "Message Regexp"
+#~ msgstr "Regexp zprávy"
+
+#~ msgid ""
+#~ "This is the simple regular expression that the identification request "
+#~ "message from NickServ must match in order to be correctly recognized."
+#~ "<br>The message is usually something like \"To identify yourself please "
+#~ "use /ns IDENTIFY password\" and it is sent when the NickServ wants you to "
+#~ "authenticate yourself. You can use the * and ? wildcards."
+#~ msgstr ""
+#~ "Toto je jednoduchý regulérní výraz, který musí obsahovat identifikační "
+#~ "požadavek od NickServ aby byl správně vyhodnocen.<br>Zpráva je většinou "
+#~ "něco jako \"To identify yourself please use /ns IDENTIFY password\" a je "
+#~ "poslána když chce NickServ abyste se autetntifikovali. Můžete použít "
+#~ "zástupné znaky * a ?."
+
+#~ msgid "Identify Command"
+#~ msgstr "Příkaz identifikace"
+
+#~ msgid ""
+#~ "This is the command that will be executed when NickServ requests "
+#~ "authentication for the nickname described in this rule (if the both "
+#~ "server and NickServ mask are matched). This usually will be something "
+#~ "like <b>msg NickServ identify &lt;yourpassword&gt;</b>.<br>You can use "
+#~ "<b>msg -q</b> if you don't want the password echoed on the screen. Please "
+#~ "note that there is no leading slash in this command."
+#~ msgstr ""
+#~ "Toto je příkaz provedený, když NickServ požaduje autentizaci pro "
+#~ "přezdívku popsanou v tomto pravidle (pokud obě masky serveru a NickServ "
+#~ "jsou shodné). Většinou to bývá něco jako <b>msg NickServ identify &lt;"
+#~ "vašeheslo&gt;</b>.<br>Můžete použít <b>msg -q</b>, pokud nechcete, aby se "
+#~ "heslo objevovalo na obrazovce. V tomto případě nepoužívejte v příkazu "
+#~ "počáteční znak lomítka."
+
+#~ msgid "Server mask"
+#~ msgstr "Serverová maska"
+
+#~ msgid ""
+#~ "This is the mask that the current server must match in order for this "
+#~ "rule to apply. It can contain * and ? wildcards.<br>Do NOT use simply \"*"
+#~ "\" here..."
+#~ msgstr ""
+#~ "Toto je maska, kterou musí daný server obsahovat, aby bylo toto pravidlo "
+#~ "provedeno. Může obsahovat zástupné znaky * a ?.<br>NEPOUŽÍVEJTE jednoduše "
+#~ "\"*\" zde..."
+
+#~ msgid "Hint: Move the mouse cursor over the fields to get help"
+#~ msgstr "Tip: Přesuňte myš nad políčka pro získání nápovědy"
+
+#~ msgid "Invalid NickServ Rule"
+#~ msgstr "Neplatné NickServ pravidlo"
+
+#~ msgid "The Nickname field can't be empty!"
+#~ msgstr "Políčko přezdívky nemůže být prázdné!"
+
+#~ msgid "The Nickname field can't contain spaces!"
+#~ msgstr "Přezdívka nemůže obsahovat mezery!"
+
+#~ msgid "The NickServ mask can't be empty!<br>You must put at least * there."
+#~ msgstr ""
+#~ "Maska NickServ nemůže být prázdná!<br>Musíte zde napsat alespoň znak *."
+
+#~ msgid "The Message Regexp can't be empty!<br>You must put at least * there."
+#~ msgstr ""
+#~ "Regexp zprávy nemůže být prázdný!<br>Musíte zde napsat alespoň znak *."
+
+#~ msgid "The Identify Command can't be empty!"
+#~ msgstr "Příkaz identifikace nemůže být prázdný!"
+
+#~ msgid "Enable NickServ Identification"
+#~ msgstr "Povolit identifikaci NickServ"
+
+#~ msgid "This check enables the automatic identification with NickServ"
+#~ msgstr "Toto povolí automatickou identifikaci s NickServ"
+
+#~ msgid "Nickname"
+#~ msgstr "Přezdívka"
+
+#~ msgid "NickServ Request Mask"
+#~ msgstr "NickServ Maska požadavku"
+
+#~ msgid ""
+#~ "<center>This is a list of NickServ identification rules. KVIrc will use "
+#~ "them to model its automatic interaction with NickServ on all the networks."
+#~ "<br>Please be aware that this feature can cause your NickServ passwords "
+#~ "to be stolen if used improperly. Make sure that you fully understand the "
+#~ "NickServ authentication protocol.<br>In other words, be sure to know what "
+#~ "you're doing.<br>Also note that the password that you provide is stored "
+#~ "as <b>PLAIN TEXT</b>.<br>KVIrc supports also per-network NickServ "
+#~ "authentication rules that can be created in the \"Advanced...\" network "
+#~ "options (accessible from the servers dialog).</center>"
+#~ msgstr ""
+#~ "<center>Toto je seznam identifikačních pravidel pro NickServ. KVIrc je "
+#~ "použije jako šablonu pro automatickou interakci s NickServ ve všech "
+#~ "sítích.<br>Pamatujte, že tato vlastnost může způsobit krádež vašich "
+#~ "NickServ hesel, pokud je použita nesprávně. Postupujte podle doporučení "
+#~ "nápovědy a ujistěte se, že plně rozumíte autentifikačnímu protokolu "
+#~ "NickServ.<br>Jinými slovy, musíte vědět co děláte.<br>Také nezapomínejte, "
+#~ "že poskytovaná hesla jsou uložena jako <b>OBYČEJNÝ TEXT</b>.KVIrc "
+#~ "podporuje také pravidla pro sítě, která mohou být vytvořena ve volbě "
+#~ "\"Pokročilé...\" ve vlastnostech sítě (přístupné z dialogu serverů).</"
+#~ "center>"
+
+#~ msgid "Add Rule"
+#~ msgstr "Přidat pravidlo"
+
+#~ msgid "Edit Rule"
+#~ msgstr "Upravit pravidlo"
+
+#~ msgid "Delete Rule"
+#~ msgstr "Smazat pravidlo"
+
+#~ msgid "Selection background color"
+#~ msgstr "Barva pozadí výběru"
+
+#~ msgid "Selection foreground color"
+#~ msgstr "Barva popředí výběru"
+
+#~ msgid "Control char color"
+#~ msgstr "Barva ovládacího znaku"
+
+#~ msgid "Cursor color"
+#~ msgstr "Barva kurzoru"
+
+#~ msgid "Warp cursor at the end of line when browsing history"
+#~ msgstr "Přesunout kurzor na konec řádky při prohlížení historie"
+
+#~ msgid "Disable the input history window and it's log memory."
+#~ msgstr "Vypne okno vstupní historie a jeho logovací paměť."
+
+#~ msgid "Nick completion"
+#~ msgstr "Doplňování přezdívek"
+
+#~ msgid "Use bash-like nick completion"
+#~ msgstr "Použít doplňování přezdívek jako v bashi"
+
+#~ msgid "Nick completion postfix string"
+#~ msgstr "Postfix řetězec pro doplňování přezdívky"
+
+#~ msgid "Use the completion postfix string for the first word only"
+#~ msgstr "Použít doplňovací postfix řetězec pouze pro první slovo"
+
+#~ msgid "Use proxy"
+#~ msgstr "Použít proxy"
+
+#~ msgid "Proxy"
+#~ msgstr "Proxy"
+
+#~ msgid ""
+#~ "<center>This is the list of available proxy servers.<br>Right-click on "
+#~ "the list to add or remove proxies.</center>"
+#~ msgstr ""
+#~ "<center>Toto je seznam dostupných proxy serverů.<br>Pravým kliknutím na "
+#~ "seznamu lze přidávat a odebírat proxy servery.</center>"
+
+#~ msgid "New Proxy"
+#~ msgstr "Nová Proxy"
+
+#~ msgid "Remove Proxy"
+#~ msgstr "Odebrat proxy"
+
+#~ msgid "Proxy:"
+#~ msgstr "Proxy:"
+
+#~ msgid "Password:"
+#~ msgstr "Heslo:"
+
+#~ msgid "Use IPv6 protocol"
+#~ msgstr "Použít IPv6 protokol"
+
+#~ msgid "&New Proxy"
+#~ msgstr "&Nová Proxy"
+
+#~ msgid "Re&move Proxy"
+#~ msgstr "Ode&brat proxy"
+
+#~ msgid "Default text encoding:"
+#~ msgstr "Výchozí kódování textu:"
+
+#~ msgid "Use Language Encoding"
+#~ msgstr "Použít kódování jazyka"
+
+#~ msgid "Minimize in tray"
+#~ msgstr "Minimalizovat v tray"
+
+#~ msgid "Confirm quit with active connections"
+#~ msgstr "Potvrzovat ukončení při aktivním spojení"
+
+#~ msgid "Remember window properties"
+#~ msgstr "Zapamatovat vlastnosti okna"
+
+#~ msgid "Disable splash screen"
+#~ msgstr "Zakázat splash obrazovku"
+
+#~ msgid "Open Dialog Window For"
+#~ msgstr "Otevřít dialogové okno pro"
+
+#~ msgid "Preferences"
+#~ msgstr "Předvolby"
+
+#~ msgid "Registered Users"
+#~ msgstr "Registrovaní uživatelé"
+
+#~ msgid "Disable parser warnings"
+#~ msgstr "Zakázat varování parseru"
+
+#~ msgid "Disable broken event handlers"
+#~ msgstr "Zakázat poškozené handlery událostí"
+
+#~ msgid "Kill broken timers"
+#~ msgstr "Ukončit poškozené časovače"
+
+#~ msgid "Send unknown commands as /RAW"
+#~ msgstr "Posílat neznámé příkazy jako /RAW"
+
+#~ msgid "Automatically unload unused modules"
+#~ msgstr "Automaticky mazat z paměti nepoužité moduly"
+
+#~ msgid "Ignore module versions (dangerous)"
+#~ msgstr "Ignorovat verze modulů (nebezpečné)"
+
+#~ msgid "Relay errors and warnings to debug window"
+#~ msgstr "Podobné chyby a upozornění do ladícího okna"
+
+#~ msgid "Create minimized debug window"
+#~ msgstr "Vytvořit minimalizované ladící okno"
+
+#~ msgid "Message Type"
+#~ msgstr "Typ zprávy"
+
+#~ msgid "Background:"
+#~ msgstr "Pozadí:"
+
+#~ msgid "Foreground:"
+#~ msgstr "Popředí:"
+
+#~ msgid "Alert level:"
+#~ msgstr "Úroveň výstrahy:"
+
+#~ msgid "Log this"
+#~ msgstr "Logovat"
+
+#~ msgid "Load From..."
+#~ msgstr "Otevřít z..."
+
+#~ msgid "Save As..."
+#~ msgstr "Uložit jako..."
+
+#~ msgid "Choose a Filename - KVIrc "
+#~ msgstr "Vyberte název souboru - KVIrc "
+
+#~ msgid "Use global application font"
+#~ msgstr "Použít globální font aplikace"
+
+#~ msgid "Hide icons in Popup"
+#~ msgstr "Schovat ikony v popupu"
+
+#~ msgid "Global application font:"
+#~ msgstr "Globální font aplikace:"
+
+#~ msgid "Enable fake transparency"
+#~ msgstr "Povolit falešnou průhlednost"
+
+#~ msgid ""
+#~ "<center>This option makes all KVIrc windows look transparent.<br>You must "
+#~ "choose a blending background image to below or check the \"Use KDE "
+#~ "desktop for transparency\" option.</center>"
+#~ msgstr ""
+#~ "<center>Tato volba umožní všem oknům KVirc vypadat průhledně.<br>Musíte "
+#~ "vybrat obrázek, který se hodí k pozadí. Nebo zapněte \"Použít KDE desktop "
+#~ "pro průhlednost\" volbu.</center>"
+
+#~ msgid ""
+#~ "<center>This option makes all KVIrc windows look like transparent.<br>You "
+#~ "must choose a blending background image to below.</center>"
+#~ msgstr ""
+#~ "<center>Tato volba umožní všem oknům KVirc vypadat průhledně.<br>Musíte "
+#~ "vybrat obrázek, který se hodí k pozadí.</center>"
+
+#~ msgid "Child window opacity:"
+#~ msgstr "Neprůsvitnost podřízeného okna:"
+
+#~ msgid "Parent window opacity:"
+#~ msgstr "Neprůsvitnost zdrojového okna:"
+
+#~ msgid "Blend color:"
+#~ msgstr "Míchaná barva:"
+
+#~ msgid "Use KDE desktop for transparency"
+#~ msgstr "Použít KDE desktop pro průhlednost"
+
+#~ msgid "Keep in sync with KDE background changes"
+#~ msgstr "Udržovat synchronizované se změnami pozadí KDE"
+
+#~ msgid "Transparency blend image:"
+#~ msgstr "Obrázek míchaný průhledností:"
+
+#~ msgid "Active Background"
+#~ msgstr "Aktivní pozadí"
+
+#~ msgid "Inactive Background"
+#~ msgstr "Neaktivní pozadí"
+
+#~ msgid "Active Text (Primary)"
+#~ msgstr "Aktivní text (Primární)"
+
+#~ msgid "Active Text (Secondary)"
+#~ msgstr "Aktivní text (Sekundární)"
+
+#~ msgid "Inactive Text (Primary)"
+#~ msgstr "Neaktivní text (Primární)"
+
+#~ msgid "Inactive Text (Secondary)"
+#~ msgstr "Neaktivní text (Sekundární)"
+
+#~ msgid "Background Image"
+#~ msgstr "Obrázek na pozadí"
+
+#~ msgid "Low-Contrast Foreground"
+#~ msgstr "Málo kontrastní popředí"
+
+#~ msgid "Mid-Contrast Foreground"
+#~ msgstr "Středně kontrastní popředí"
+
+#~ msgid "Active High-Contrast Foreground (Primary)"
+#~ msgstr "Aktivní vysoce kontrastní popředí (primární)"
+
+#~ msgid "Active High-Contrast Foreground (Secondary)"
+#~ msgstr "Aktivní vysoce kontrastní popředí (sekundární)"
+
+#~ msgid "Inactive High-Contrast Foreground (Primary)"
+#~ msgstr "Neaktivní vysoce kontrastní popředí (primární)"
+
+#~ msgid "Inactive High-Contrast Foreground (Secondary)"
+#~ msgstr "Neaktivní vysoce kontrastní popředí (sekundární)"
+
+#~ msgid "Default away message:"
+#~ msgstr "Výchozí pryč(away) zpráva:"
+
+#~ msgid "User input exits away mode"
+#~ msgstr "Vstup uživatele zruší pryč mód"
+
+#~ msgid "Away Nickname"
+#~ msgstr "Pryč přezdívka"
+
+#~ msgid "Change nickname on away"
+#~ msgstr "Změnit přezdívku při pryč"
+
+#~ msgid "Use automatic nickname ([5 letters]AWAY)"
+#~ msgstr "Použít automatickou přezdívku ([5 znaků]AWAY)"
+
+#~ msgid "Custom nickname:"
+#~ msgstr "Vlastní přezdívka:"
+
+#~ msgid "Enable lag meter"
+#~ msgstr "Povolit měření lagu"
+
+#~ msgid ""
+#~ "<center>This enables the lag meter engine, which checks at regular "
+#~ "intervals how much lag (latency) the server has.</center>"
+#~ msgstr ""
+#~ "<center>Toto zapíná měřič lagu, který v pravidelných intervalech zjištuje "
+#~ "jak velkou odezvu (reakční dobu) server má.</center>"
+
+#~ msgid "Lag meter heartbeat:"
+#~ msgstr "Měřič lagu tlukot:"
+
+#~ msgid ""
+#~ "<center>This option allows you to set the lag meter heartbeat interval."
+#~ "<br>The lower the heartbeat interval the higher will be the accuracy of "
+#~ "the lag check but also higher cpu usage and data traffic to the server."
+#~ "<br>Please note that this is NOT the interval between pings sent to the "
+#~ "server: the pings (if any) will be sent really less often. 5000 is a "
+#~ "reasonable value.</center>"
+#~ msgstr ""
+#~ "<center>Tato volba vám umožní nastavit interval tlukotu měřiče lagu."
+#~ "<br>Nižší interval kontroly lagu způsobí vyšší zátěž procesoru a datových "
+#~ "přenosů na server.<br>Toto NENÍ interval mezi pingy poslanými na server: "
+#~ "pingy (pokud jsou nějaké) jsou posílány méně často. 5000 je doporučená "
+#~ "hodnota.</center>"
+
+#~ msgid "Trigger event if lag exceeds:"
+#~ msgstr "Spustit událost pokud lag překročí:"
+
+#~ msgid ""
+#~ "<center>This option controls the threshold for the OnLagAlarmTimeUp and "
+#~ "OnLagAlarmTimeDown events. When the lag goes above the threshold "
+#~ "OnLagAlarmTimeUp will be triggered and when the lag falls back below the "
+#~ "threshold then OnLagAlarmTimeDown will be triggered</center>"
+#~ msgstr ""
+#~ "<center>Tato volba ovládá citlivost událostí OnLagAlarmTimeUp a "
+#~ "OnLagAlarmTimeDown. Když lag překročí citlivost OnLagAlarmTimeUp je "
+#~ "spuštěno a po návratu lagu pod citlivost se spustí událost "
+#~ "OnLagAlarmTimeDown</center>"
+
+#~ msgid "Show lag in IRC context display"
+#~ msgstr "Zobrazit lag v kontextovém zobrazení IRC"
+
+#~ msgid ""
+#~ "<center>This makes the IRC context display applet show the current lag "
+#~ "after the user's nickname (in seconds)</center>"
+#~ msgstr ""
+#~ "<center>Toto umožňuje IRC kontextu zobrazit applet, který ukáže aktuální "
+#~ "odezvu za uživatelovou přezdívkou (v sekundách)</center>"
+
+#~ msgid "Nickname Colors"
+#~ msgstr "Barvy přezdívek"
+
+#~ msgid "Normal:"
+#~ msgstr "Normální:"
+
+#~ msgid "Selected:"
+#~ msgstr "Vybraný:"
+
+#~ msgid "Channel owner:"
+#~ msgstr "Vlastník kanálu:"
+
+#~ msgid "Channel admin:"
+#~ msgstr "Admin kanálu:"
+
+#~ msgid "Op:"
+#~ msgstr "Op:"
+
+#~ msgid "Half-op:"
+#~ msgstr "Polo-op:"
+
+#~ msgid "Voice:"
+#~ msgstr "Voice:"
+
+#~ msgid "User-op:"
+#~ msgstr "Uživ. op:"
+
+#~ msgid "Away:"
+#~ msgstr "Pryč:"
+
+#~ msgid "Background Colors"
+#~ msgstr "Barvy pozadí"
+
+#~ msgid "Nickname Grid"
+#~ msgstr "Mřížka přezdívky"
+
+#~ msgid "Draw nickname grid"
+#~ msgstr "Kreslit mřížku přezdívky"
+
+#~ msgid "Grid color:"
+#~ msgstr "Barva mřížky:"
+
+#~ msgid "Grid type:"
+#~ msgstr "Typ mřížky:"
+
+#~ msgid "3D Grid"
+#~ msgstr "3D mřížka"
+
+#~ msgid "3D Buttons"
+#~ msgstr "3D tlačítka"
+
+#~ msgid "Plain Grid"
+#~ msgstr "Obyčejná mřížka"
+
+#~ msgid "Dotted Grid"
+#~ msgstr "Tečkovaná mřížka"
+
+#~ msgid "Show user channel icons"
+#~ msgstr "Zobrazit kanálové ikony uživatelů"
+
+#~ msgid "Show user channel activity indicator"
+#~ msgstr "Zobrazit indikátor aktivity uživatelů kanálu"
+
+#~ msgid "Hide users label"
+#~ msgstr "Schovat uživatelské návěstí"
+
+#~ msgid "Enable user tooltips"
+#~ msgstr "Povolit tooltipy uživatele"
+
+#~ msgid "Minimize console after successful login"
+#~ msgstr "Minimalizovat konzoli po úspěšném přihlášení"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to minimize the console window after "
+#~ "successfully logging into a server.</center>"
+#~ msgstr ""
+#~ "<center>Tato volba způsobí, že KVIrc minimalizuje konzolové okno po "
+#~ "úspěšném přihlášení na server.</center>"
+
+#~ msgid "On Channel Kick"
+#~ msgstr "Při vykopnutí z kanálu"
+
+#~ msgid "Keep channel open"
+#~ msgstr "Nechat kanál otevřený"
+
+#~ msgid "Rejoin channel"
+#~ msgstr "Znovu přijít do kanálu"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to attempt to rejoin a channel after "
+#~ "being kicked.</center>"
+#~ msgstr ""
+#~ "<center>Tato volba způsobí, že se KVIrc pokusí znovu přijít do kanálu "
+#~ "potom, co jste byli vykopnuti.</center>"
+
+#~ msgid "On Channel Part"
+#~ msgstr "Při odchodu z kanálu"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to keep the channel window open "
+#~ "after leaving it.</center>"
+#~ msgstr ""
+#~ "<center>Tato volba způsobí, že KVirc nechá otevřené kanály po odchodu z "
+#~ "nich.</center>"
+
+#~ msgid "Automatically join channel on invite"
+#~ msgstr "Automaticky přijít do kanálu při pozvání"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to automatically join a channel when "
+#~ "an INVITE message for that channel is received.<br><b>Warning:</b> This "
+#~ "may help spammers harass you. :)</center>"
+#~ msgstr ""
+#~ "<center>Tato volba způsobí, že se KVIrc automaticky přijde do kanálu, "
+#~ "když je obdržena zpráva INVITE pro tento kanál.<br><b>Varování:</b> Toto "
+#~ "může pomoci spammerům vás obtěžovat. :)</center>"
+
+#~ msgid "Do not update the away list"
+#~ msgstr "Neaktualizovat pryč seznam"
+
+#~ msgid "Force immediate quit"
+#~ msgstr "Provést opuštění okamžitě"
+
+#~ msgid ""
+#~ "<center>This option causes KVIrc to close the connection immediately "
+#~ "after sending the QUIT message.<br>When this option is disabled, KVIrc "
+#~ "will wait for the server to close the connection.<br>Note that if you use "
+#~ "this, your QUIT message may be not displayed.</center>"
+#~ msgstr ""
+#~ "<center>Tato volba přinutí KVIrc ukončit spojení okamžitě po odeslání "
+#~ "zprávy QUIT.<br>Pokud není tato volba povolena, KVIrc bude čekat, až "
+#~ "server ukončí spojení.<br>Pokud tuto volbu používáte, vaše QUIT zpráva "
+#~ "nemusí být zobrazena.</center>"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to keep the channel window open "
+#~ "after being kicked.<br>It might be a good idea to also enable the "
+#~ "\"Rejoin channel\" option.</center>"
+#~ msgstr ""
+#~ "<center>Tato volba způsobí, že KVirc nechá kanálová okna otevřená i "
+#~ "potom, co jste byli vykopnuti.<br>Také by mohlo být dobré zapnout volbu "
+#~ "\"Znovu přijít do kanálu\".</center>"
+
+#~ msgid "Do not send /WHO request"
+#~ msgstr "Neposílat /WHO požadavek"
+
+#~ msgid "Do not request ban list"
+#~ msgstr "Nepožadovat seznam banů"
+
+#~ msgid "Do not request invite list"
+#~ msgstr "Nepožadovat seznam pozvání"
+
+#~ msgid "Certificate"
+#~ msgstr "Certifikát"
+
+#~ msgid "Use SSL certificate (PEM format only)"
+#~ msgstr "Použít SSL certifikát (pouze formát PEM)"
+
+#~ msgid "Certificate location:"
+#~ msgstr "Umístění certifikátu:"
+
+#~ msgid "Certificate password:"
+#~ msgstr "Heslo certifikátu:"
+
+#~ msgid "Private Key"
+#~ msgstr "Privátní klíč"
+
+#~ msgid "Use SSL private key"
+#~ msgstr "Použít SSL privátní klíč"
+
+#~ msgid "Private key location:"
+#~ msgstr "Umístění privátního klíče:"
+
+#~ msgid "Private key password:"
+#~ msgstr "Heslo privátního klíče:"
+
+#~ msgid "This executable has no SSL support."
+#~ msgstr "Tato verze nemá SSL podporu."
+
+#~ msgid "Timeout Values"
+#~ msgstr "Prodlevy"
+
+#~ msgid "Connect timeout:"
+#~ msgstr "Prodleva spojení:"
+
+#~ msgid "Outgoing data queue flush timeout:"
+#~ msgstr "Prodleva fronty odchozích dat:"
+
+#~ msgid "Limit outgoing traffic"
+#~ msgstr "Omezit odchozí provoz"
+
+#~ msgid "Limit to 1 message every:"
+#~ msgstr "Omezit na 1 zprávu každých:"
+
+#~ msgid " usec"
+#~ msgstr " usek"
+
+#~ msgid ""
+#~ "<center>Minimum value: <b>10000 usec</b><br>Maximum value: <b>10000000 "
+#~ "usec</b></center>"
+#~ msgstr ""
+#~ "<center>Minimální hodnota: <b>10000 usek</b><br>Maximální hodnota: "
+#~ "<b>10000000 usek</b></center>"
+
+#~ msgid "Network Interfaces"
+#~ msgstr "Síťová rozhraní"
+
+#~ msgid "Bind IPv4 connections to:"
+#~ msgstr "Vázat IPv4 spojení k:"
+
+#~ msgid "Bind IPv6 connections to:"
+#~ msgstr "Vázat IPv6 spojení k:"
+
+#~ msgid "Open Query For"
+#~ msgstr "Otervřít Query pro"
+
+#~ msgid "Private messages"
+#~ msgstr "Soukromé zprávy"
+
+#~ msgid ""
+#~ "<center>This option enables query window creation when a private message "
+#~ "(PRIVMSG) is received.<br>If you disable this, private messages will be "
+#~ "shown in the active window or a common channel.</center>"
+#~ msgstr ""
+#~ "<center>Tato volba umožňuje automatické vytvoření okna query, když je "
+#~ "přijata soukromá zpráva (PRIVMSG).<br>Pokud ji vypnete, soukromé zprávy "
+#~ "se budou zobrazovat v aktivním okně, nebo na běžném kanále.</center>"
+
+#~ msgid "Private notices"
+#~ msgstr "Soukromá oznámení"
+
+#~ msgid ""
+#~ "<center>This option enables query window creation when a private notice "
+#~ "(NOTICE) is received.<br>If you disable this, private notices will be "
+#~ "shown in the active window or a common channel.</center>"
+#~ msgstr ""
+#~ "<center>Tato volba umožňuje automatické vytvoření okna query, když je "
+#~ "přijato soukromé ohlášení (NOTICE).<br>Pokud ji vypnete, soukromé "
+#~ "ohlášení se budou zobrazovat v aktivním okně, nebo na běžném kanále.</"
+#~ "center>"
+
+#~ msgid "Minimize new queries"
+#~ msgstr "Minimalizovat nové Query"
+
+#~ msgid ""
+#~ "<center>This option causes newly created query windows to be immediately "
+#~ "minimized.<br>Enable this if you don't like queries popping up while "
+#~ "you're typing something in a channel. :D</center>"
+#~ msgstr ""
+#~ "<center>Tato volba způsobí, že se nově vytvořená query okna okamžitě "
+#~ "minimalizují.<br>Zapněte, pokud nemáte rádi vyskakující query, zrovna "
+#~ "když píšete někomu na kanálu. :D</center>"
+
+#~ msgid "Enable target user tracking"
+#~ msgstr "Povolit sledování cílového uživatele"
+
+#~ msgid ""
+#~ "<center>This option will enable target user tracking.<br>Some actions of "
+#~ "the target user (e.g. joins and parts) will be displayed in the window."
+#~ "<br></center>"
+#~ msgstr ""
+#~ "<center>Tato volba umožní sledování uživatele.<br>Některé akce "
+#~ "sledovaného uživatele (např. příchody a odchody) budou zobrazeny v okně."
+#~ "<br></center>"
+
+#~ msgid "Flash system taskbar on new query message"
+#~ msgstr "Blikající systémová lišta při nové query zprávě"
+
+#~ msgid ""
+#~ "<center>This option causes the system taskbar entry for KVIrc to flash "
+#~ "when a new query message is received and the KVIrc window is not the "
+#~ "active.</center>"
+#~ msgstr ""
+#~ "<center>Tato volba způsobí, že KVIrc na liště začne blikat, když je "
+#~ "obdržena nová query zpráva a okno KVIrc není aktivní.</center>"
+
+#~ msgid "Popup notifier on new query message"
+#~ msgstr "Zobrazit oznamovač při nové query zprávě"
+
+#~ msgid ""
+#~ "<center>This option causes a small notifier window to pop up in the low "
+#~ "right corner of the screen when a new message is received and the KVIrc "
+#~ "window is not active.</center>"
+#~ msgstr ""
+#~ "<center>Tato volba způsobí, že se objeví malé upozorňovací okno v pravém "
+#~ "dolním rohu obrazovky, když obdržíte novou zprávu a okno KVIrc není "
+#~ "aktivní.</center>"
+
+#~ msgid "Enable word highlighting"
+#~ msgstr "Povolit zvýrazňování slov"
+
+#~ msgid "Words to highlight:"
+#~ msgstr "Zvýrazňovat slova:"
+
+#~ msgid "Highlight messages containing my nickname"
+#~ msgstr "Zvýrazňovat zprávy obsahující vlastní přezdívku"
+
+#~ msgid ""
+#~ "<center>If this option is enabled, KVIrc will highlight any user message "
+#~ "containing your current nickname</center>"
+#~ msgstr ""
+#~ "<center>Pokud je tato volba zapnuta, KVirc zvýrazní jakoukoliv zprávu "
+#~ "uživatele, která obsahuje vaši současnou přezdívku.</center>"
+
+#~ msgid "Flash the system taskbar entry on highlighted messages"
+#~ msgstr "Blikající systémová lišta při zvýrazněných zprávách"
+
+#~ msgid ""
+#~ "<center>If this option is enabled, KVIrc will (attempt to) flash the "
+#~ "system taskbar entry when a highlighted message is printed and KVIrc is "
+#~ "not the active window</center>"
+#~ msgstr ""
+#~ "<center>Pokud je tato volba zapnuta, KVIrc bude (pokusí se) blikat na "
+#~ "liště, když je zobrazena zvýrazňovaná zpráva a okno KVIrc není aktivní</"
+#~ "center>"
+
+#~ msgid "Popup the notifier window on highlighted messages"
+#~ msgstr "Zobrazit okno oznamovače při zvýrazeněných zprávách"
+
+#~ msgid ""
+#~ "<center>If this option is enabled, KVIrc will popup a little notifier "
+#~ "window in the low right corner of your desktop when a highlighted message "
+#~ "is printed and KVIrc is not the active window</center>"
+#~ msgstr ""
+#~ "<center>Pokud je tato volba zapnuta, KVIrc vytvoří malé upozorňovací "
+#~ "popup okno v dolním rohu vaší obrazovky, když je zobrazena zvýrazňovaná "
+#~ "zpráva a okno KVIrc není aktivní</center>"
+
+#~ msgid "Taskbar Alert"
+#~ msgstr "Výstraha lišty"
+
+#~ msgid "Restrict alert"
+#~ msgstr "Omezit výstrahu"
+
+#~ msgid ""
+#~ "<center>If this option is enabled, KVIrc will alert in the taskbar only "
+#~ "if a normal message is received in a channel.<br>Actions like joins, "
+#~ "parts and mode changes will be ignored.<br> This is useful if you are in "
+#~ "channels with a high rate of traffic and only want to be alerted for "
+#~ "messages that are interesting to you.</center>"
+#~ msgstr ""
+#~ "<center>Pokud je tato možnost zapnuta, KVIrc upozorní pouze tehdy, když "
+#~ "se na kanálu objeví zpráva.<br>Akce jako příchody, odchody a změny modu "
+#~ "budou ignorovány.<br> Je to užitečné, pokud se nacházíte na kanálech s "
+#~ "velkým provozem a chcete být upozorněni pouze na zprávy, které vás "
+#~ "zajímají.</center>"
+
+#~ msgid "Alert for highlighted words"
+#~ msgstr "Výstraha pro zvýrazněná slova"
+
+#~ msgid ""
+#~ "<center>If this option is enabled, the taskbar will also alert for "
+#~ "messages which contain a word from the highlighted words list above.</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Pokud je tato volba zapnuta, budete v liště také upozorňováni na "
+#~ "zprávy, které obsahují slovo ze seznamu zvýrazněných slov nahoře.</center>"
+
+#~ msgid "Alert for query messages"
+#~ msgstr "Výstraha pro query zprávy"
+
+#~ msgid ""
+#~ "<center>If this option is enabled, the taskbar will also alert for "
+#~ "messages which are shown in queries.</center>"
+#~ msgstr ""
+#~ "<center>Pokud je tato volba zapnuta, budete v liště také upozorňováni na "
+#~ "zprávy, které jsou zobrazovány v query.</center>"
+
+#~ msgid ""
+#~ "<center>If this option is enabled, KVIrc will alert in the taskbar only "
+#~ "if the specified alert level is reached.</center>"
+#~ msgstr ""
+#~ "<center>Pokud je tato volba zapnuta, KVirc upozorní v liště pouze tehdy, "
+#~ "když bude dosaženo specifikované upozorňovací úrovně.</center>"
+
+#~ msgid "Minimum alert level:"
+#~ msgstr "Minimální úroveň výstrah:"
+
+#~ msgid ""
+#~ "<center>This option sets the minimum alert level for the taskbar.</center>"
+#~ msgstr ""
+#~ "<center>Tato volba nastavuje minimální upozorňovací úroveň v liště.</"
+#~ "center>"
+
+#~ msgid "Automatically Log"
+#~ msgstr "Automaticky logovat"
+
+#~ msgid "Query windows"
+#~ msgstr "Query okna"
+
+#~ msgid "Channel windows"
+#~ msgstr "Okna kanálů"
+
+#~ msgid "DCC Chat windows"
+#~ msgstr "DCC Chat okna"
+
+#~ msgid "Console windows"
+#~ msgstr "Konzole okna"
+
+#~ msgid "Gzip logs"
+#~ msgstr "Gzipovat logy"
+
+#~ msgid "<b>http://</b> handler command:"
+#~ msgstr "<b>http://</b> handler příkaz:"
+
+#~ msgid "<b>https://</b> handler command:"
+#~ msgstr "<b>https://</b> handler příkaz:"
+
+#~ msgid "<b>ftp://</b> handler command:"
+#~ msgstr "<b>ftp://</b> handler příkaz:"
+
+#~ msgid "<b>mailto:</b> handler command:"
+#~ msgstr "<b>mailto:</b> handler příkaz:"
+
+#~ msgid "<b>file://</b> handler command:"
+#~ msgstr "<b>file://</b> handler příkaz:"
+
+#~ msgid "Unknown protocol handler command:"
+#~ msgstr "Příkaz handleru neznámého protokolu:"
+
+#~ msgid "Enable ident service (bad practice on UNIX!)"
+#~ msgstr "Povolit ident službu (špatné na UNIXu!)"
+
+#~ msgid "Ident username:"
+#~ msgstr "Ident:"
+
+#~ msgid "Service port:"
+#~ msgstr "port:"
+
+#~ msgid "IPv6 Settings"
+#~ msgstr "IPv6 nastavení"
+
+#~ msgid "Enable service for IPv6"
+#~ msgstr "Povolit službu pro IPv6"
+
+#~ msgid "IP stack treats IPv4 as part of IPv6 namespace"
+#~ msgstr "IP stack považuje IPv4 jako součást jmenného prostoru IPv6"
+
+#~ msgid ""
+#~ "<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident "
+#~ "daemon that implements only a limited subset of the Identification "
+#~ "Protocol specifications. If it is possible, install a real ident daemon.</"
+#~ "p>"
+#~ msgstr ""
+#~ "<p><b>Varování:</b><br>Toto je <b>neodpovídající RFC 1413</b> ident démon "
+#~ "jenž implementuje pouze omezenou skupinu funkcí Identifikačního "
+#~ "Protokolu. Pokud je to možné, nainstalujte skutečného ident démona.</p>"
+
+#~ msgid ""
+#~ "<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident "
+#~ "daemon that implements only a limited subset of the Identification "
+#~ "Protocol specifications.<br>On UNIX, you may also need root privileges to "
+#~ "bind to the auth port (113).<br>It is <b>highly recommended</b> that a "
+#~ "<b>real</b> system-wide ident daemon be used instead, or none at all if "
+#~ "ident is not required.</p>"
+#~ msgstr ""
+#~ "<p><b>Upozornění:</b><br>Toto není <b>RFC 1413 vyhovující</b> ident démon "
+#~ "který implementuje pouze omezené možnosti IP specifikací,<br>Na UNIXu, "
+#~ "budete nejspíše potřebovat root oprávnění pro vázání k auth portu (113)."
+#~ "<br>Je <b>velmi doporučeno</b>, aby byl použit <b>skutečný</b> systémový "
+#~ "ident démon místo tohoto, nebo žádný pokud ident není vyžadován.</p>"
+
+#~ msgid "Use flood protection (recommended)"
+#~ msgstr "Použít ochranu před zahlcením (doporučeno)"
+
+#~ msgid ""
+#~ "<center>This option makes KVIrc only respond to a limited number of CTCP "
+#~ "requests within a specified time interval, to prevent \"flooding\" CTCP "
+#~ "messages.</center>"
+#~ msgstr ""
+#~ "<center>Tato volba umožňuje KVIrc odpovídat pouze na limitované množství "
+#~ "CTCP požadavků v určitém časovém intervalu a předchází zprávám CTCP "
+#~ "\"zahlcení\".</center>"
+
+#~ msgid "Allow up to:"
+#~ msgstr "Bude li více než:"
+
+#~ msgid " requests"
+#~ msgstr " požadavků"
+
+#~ msgid ""
+#~ "<center>Minimum value: <b>0 requests</b><br>Maximum value: <b>10000 "
+#~ "requests</b></center>"
+#~ msgstr ""
+#~ "<center>Minimální hodnota: <b>0 požadavků</b><br>Maximální hodnota: "
+#~ "<b>10000 požadavků</b></center>"
+
+#~ msgid "within:"
+#~ msgstr "během:"
+
+#~ msgid ""
+#~ "<center>Minimum value: <b>1 sec</b><br>Maximum value: <b>3600 sec</b></"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Minimální hodnota: <b>1 sek</b><br>Maximální hodnota: <b>3600 "
+#~ "sek</b></center>"
+
+#~ msgid "PING"
+#~ msgstr "PING"
+
+#~ msgid "FINGER"
+#~ msgstr "FINGER"
+
+#~ msgid "CLIENTINFO"
+#~ msgstr "CLIENTINFO"
+
+#~ msgid "USERINFO"
+#~ msgstr "USERINFO"
+
+#~ msgid "VERSION"
+#~ msgstr "VERSION"
+
+#~ msgid "SOURCE"
+#~ msgstr "SOURCE"
+
+#~ msgid "TIME"
+#~ msgstr "TIME"
+
+#~ msgid "PAGE"
+#~ msgstr "PAGE"
+
+#~ msgid "AVATAR"
+#~ msgstr "AVATAR"
+
+#~ msgid "DCC/TDCC"
+#~ msgstr "DCC/TDCC"
+
+#~ msgid "Use online notify list"
+#~ msgstr "Používat online seznam oznamování"
+
+#~ msgid "Show notifications in active window"
+#~ msgstr "Zobrazovat oznámení v aktivním okně"
+
+#~ msgid "Flash window when users are going online"
+#~ msgstr "Blikající okno, když je uživatel online"
+
+#~ msgid "Popup notifier when users are going online"
+#~ msgstr "Zobrazit Oznamovač, když je uživatel online"
+
+#~ msgid "Advanced configuration"
+#~ msgstr "Pokročilé nastavení"
+
+#~ msgid "Check USERHOST for online users"
+#~ msgstr "Zkontrolovat USERHOST pro online uživatele"
+
+#~ msgid "Use \"smart\" notify list manager"
+#~ msgstr "Použít \"smart\" seznam oznamování"
+
+#~ msgid "Use the WATCH method if available"
+#~ msgstr "Použít WATCH, pokud je dostupné"
+
+#~ msgid "Check interval (in seconds)"
+#~ msgstr "Interval kontrol (v sekundách)"
+
+#~ msgid "ISON delay (in seconds)"
+#~ msgstr "ISON prodleva (v sekundách)"
+
+#~ msgid "USERHOST delay (in seconds)"
+#~ msgstr "USERHOST prodleva (v sekundách)"
+
+#~ msgid ""
+#~ "<p><b>Note:</b><br>The notify list is managed using the \"Registered Users"
+#~ "\" settings.</p>"
+#~ msgstr ""
+#~ "<p><b>Poznámka:</b><br>Seznam Oznamování je spravován prostřednictvím "
+#~ "nastavení \"Registrovaní Uživatelé\".</p>"
+
+#~ msgid "Forcibly and completely disable the notifier"
+#~ msgstr "Nuceně a kompletně vypnout oznamovač"
+
+#~ msgid ""
+#~ "This is an option for the impatient: it allows to forcibly and "
+#~ "permanently disable the notifier window. Please note that if this option "
+#~ "is activated then the notifier will NOT popup even if all the other "
+#~ "options around specify to use it in response to particular events. Also "
+#~ "note that this option will make all the /notifier.* commands fail "
+#~ "silently."
+#~ msgstr ""
+#~ "Tato volba je pro netrpělivé: umožňuje nuceně a permanentně zakázat okno "
+#~ "oznamovače. Pokud je tato volba aktivována, oznamovač NEZOBRAZÍ okno "
+#~ "dokonce, ani když je nastaveno jeho používání jinde jako odezva na různé "
+#~ "události. Tato volba také zařídí, že všechny příkazy /notifier.* tiše "
+#~ "selžou."
+
+#~ msgid "Disable notifier window flashing"
+#~ msgstr "Zakázat blikání okna oznamovače"
+
+#~ msgid "Use tree taskbar"
+#~ msgstr "Použít stromovou lištu"
+
+#~ msgid "Sort windows by name"
+#~ msgstr "Řadit okna podle názvu"
+
+#~ msgid "Show window icons in taskbar"
+#~ msgstr "Zobrazit ikony oken v liště"
+
+#~ msgid "Show activity meter in taskbar"
+#~ msgstr "Zobrazit měřič aktivity v liště"
+
+#~ msgid ""
+#~ "<center>This option enables the usage of the taskbar activity meter. Each "
+#~ "window entry will have a small indicator of the activity that is going on "
+#~ "in that window. The indicator is a small square that changes colors, dark "
+#~ "colors mean low activity, while bright colors signal high activity. KVIrc "
+#~ "also uses some heuristics to determine whether the activity is somewhat "
+#~ "\"human\" or it is generated by automated entities (such as bots or IRC "
+#~ "servers). \"Human\" activity causes the indicator to be shaded red while "
+#~ "automated activity causes the indicator to be shaded blue.</center>"
+#~ msgstr ""
+#~ "<center>Tato volba zapne používání měřiče aktivity. Každý záznam v okně "
+#~ "bude mít malý indikátor aktivity pro dané okno. Indikátor je malá značka, "
+#~ "která mění barvy, tmavé barvy znamenají nízkou aktivitu, světlé barvy "
+#~ "signalizují vysokou. KVIrc také používá určité heuristiky pro určení, "
+#~ "jestli je to aktivita \"lidí\" nebo je generována automatickými prvky "
+#~ "(jako boti nebo IRC servery). \"Lidská\" aktivita má indikátor zabarvený "
+#~ "červeně a automatická aktivita modře.</center>"
+
+#~ msgid "Show IRC context indicator in taskbar"
+#~ msgstr "Zobrazit indikátor IRC kontextu v liště"
+
+#~ msgid "Enable window tooltips"
+#~ msgstr "Povolit oknům tipy"
+
+#~ msgid "Text/Alert Colors"
+#~ msgstr "Barvy textu výstrah"
+
+#~ msgid "Alert Level 1:"
+#~ msgstr "Výstraha 1:"
+
+#~ msgid "Alert Level 2:"
+#~ msgstr "Výstraha 2:"
+
+#~ msgid "Alert Level 3:"
+#~ msgstr "Výstraha 3:"
+
+#~ msgid "Alert Level 4:"
+#~ msgstr "Výstraha 4:"
+
+#~ msgid "Alert Level 5:"
+#~ msgstr "Výstraha 5:"
+
+#~ msgid "Progress bar color:"
+#~ msgstr "Barva ukazatele průběhu:"
+
+#~ msgid "Minimum width:"
+#~ msgstr "Minimální šířka:"
+
+#~ msgid "Maximum width:"
+#~ msgstr "Maximální šířka:"
+
+#~ msgid "Minimized:"
+#~ msgstr "Minimalizovaný:"
+
+#~ msgid "Minimum width of buttons:"
+#~ msgstr "Minimální šířka tlačítek:"
+
+#~ msgid "Maximum number of rows:"
+#~ msgstr "Maximální počet řádků:"
+
+#~ msgid "Private/channel notices"
+#~ msgstr "Soukromá/kanálová oznámení"
+
+#~ msgid "Use verbose ignore (show messages in console)"
+#~ msgstr "Použít upovídané ignorování (zobrazovat zprávy v konzoli)"
+
+#~ msgid "Enable Anti-spam For"
+#~ msgstr "Povolit Anti-spam pro"
+
+#~ msgid "Silent anti-spam (no warnings)"
+#~ msgstr "Tichý anti-spam (bez upozornění)"
+
+#~ msgid "Words considered spam:"
+#~ msgstr "Slova považovaná za spam:"
+
+#~ msgid "Use workaround for firewall"
+#~ msgstr "Použít podporu pro firewall"
+
+#~ msgid ""
+#~ "<center>Enable this option if you can't accept incoming connections."
+#~ "<br>KVIrc will try to use different methods to send and receive files."
+#~ "<br>Please note that these methods may NOT work when communicating with a "
+#~ "non-KVIrc client.</center>"
+#~ msgstr ""
+#~ "<center>Zapněte tuto volbu, pokud nemůžete přijímat příchozí spojení."
+#~ "<br>KVIrc se pokusí použít jiné metody k přijímání a odesílání souborů."
+#~ "<br>Prosím dejte si pozor, jelikož tyto metody nemusí fungovat pokud "
+#~ "komunikujete s jiným klientem než KVirc.</center>"
+
+#~ msgid "Network Properties"
+#~ msgstr "Vlastnosti sítě"
+
+#~ msgid "DCC socket timeout:"
+#~ msgstr "DCC soket prodleva:"
+
+#~ msgid ""
+#~ "<center>This is the amount of time that KVIrc will wait for a response "
+#~ "before assuming that a DCC has failed because the remote client was "
+#~ "unable to connect to our listening socket.</center>"
+#~ msgstr ""
+#~ "<center>Toto je jak dlouho bude KVirc čekat na odpověď předtím než "
+#~ "shledá, že DCC selhalo, protože vzdálený klient nebyl schopen se připojit "
+#~ "na náš naslouchající port.</center>"
+
+#~ msgid "Use user-defined address or network interface"
+#~ msgstr "Použít uživatelem definovanou adresu nebo síťové rozhraní"
+
+#~ msgid ""
+#~ "<center>Enable this option if you are on a multihost machine and want to "
+#~ "force one of the available IP addresses to be used for outgoing DCCs."
+#~ "<br>This is especially useful when you use IPv6 and IPv4 addresses."
+#~ "<br>You can force KVIrc to always choose the IPv4 interface.</center>"
+#~ msgstr ""
+#~ "<center>Zapněte tuto volbu, pokud máte více síťových rozhraní a chcete "
+#~ "přinutit jenom jednu z IP adres, aby byla použita pro DCC.<br>Toto je "
+#~ "obzvláště užitečné, pokud používáte IPv6 a IPv4.<br>Můžete přinutit KVIrc "
+#~ "k používání jenom IPv4 rozhraní.</center>"
+
+#~ msgid "Listen on address/interface:"
+#~ msgstr "Naslouchat na adrese/rozhraní:"
+
+#~ msgid ""
+#~ "<center>This is the IP address or name of the interface to use by default "
+#~ "for outgoing DCC transfers.<br>On UNIX systems that support it, you can "
+#~ "also specify IPv4 interface names (such as <b>ppp0</b>).<br>If you set it "
+#~ "to <b>0.0.0.0</b>, KVIrc will try to use the first available IPv4 "
+#~ "interface</center>"
+#~ msgstr ""
+#~ "<center>Toto je IP adresa nebo jméno rozhraní, které bude použito jako "
+#~ "výchozí pro odchozí DCC přenosy.<br>Na UNIX systémech, které toto "
+#~ "podporují, můžete také specifikovat jména IPv4 rozhraní (jako například "
+#~ "<b>ppp0</b>).<br>Pokud nastavíte <b>0.0.0.0</b>, KVIrc se pokusí použít "
+#~ "první dostupné IPv4 rozhraní</center>"
+
+#~ msgid "Use user-defined port range"
+#~ msgstr "Použít definované rozmezí portů"
+
+#~ msgid ""
+#~ "<center>Enable this option if you want specify a local port range for DCC."
+#~ "</center>"
+#~ msgstr ""
+#~ "<center>Zapněte tuto volbu, pokud chcete specifikovat lokální interval "
+#~ "portů pro DCC.</center>"
+
+#~ msgid "Lowest port:"
+#~ msgstr "Nižší port:"
+
+#~ msgid "Highest port:"
+#~ msgstr "Vyšší port:"
+
+#~ msgid ""
+#~ "<center>Enable this option if you want to always send a fake IP address "
+#~ "in your DCC requests.<br>This might be useful if you're behind a router "
+#~ "with a static address that does network address translation (NAT) and "
+#~ "forwards all or a range of ports.</center>"
+#~ msgstr ""
+#~ "<center>Zapněte tuto volbu, pokud chcete pokaždé zasílat falešnou IP "
+#~ "adresu ve vašich DCC požadavcích.<br>To může být užitečné, pokud se "
+#~ "nacházíte za routerem se statickou adresou, který zajišťuje překlad "
+#~ "síťových adres (NAT) a přeposílá všechny, nebo rozsahy portů.</center>"
+
+#~ msgid "Send address/interface:"
+#~ msgstr "Posílací adresa/rozhraní:"
+
+#~ msgid ""
+#~ "<center>This is the fixed address that will be sent with all DCC requests "
+#~ "if you enable the option above.</center>"
+#~ msgstr ""
+#~ "<center>Toto je pevná adresa, která bude poslána se všemi DCC požadavky, "
+#~ "pokud povolíte volbu nacházející se výše.</center>"
+
+#~ msgid "Guess address from IRC server if unroutable"
+#~ msgstr "Zjistit adresu z IRC serveru, když je neroutovatelná"
+
+#~ msgid ""
+#~ "<center>You can enable this option if you are behind a router that "
+#~ "forwards all or a range of ports.<br>KVIrc will try to guess the IP "
+#~ "address to use for DCC by looking up the local hostname as seen by the "
+#~ "IRC server you're connected to.<br>This method is an exclusive "
+#~ "alternative to the \"fixed address\" above.<br>It might guess the correct "
+#~ "address automatically if certain conditions are met (e.g. the IRC server "
+#~ "does not mask hostnames).</center>"
+#~ msgstr ""
+#~ "<center>Tuto volbu zapněte, pokud jste za routerem, který předává porty v "
+#~ "celém rozsahu.<br>KVIrc se pokusí zjistit IP adresu, kterou použije pro "
+#~ "DCC, zjištěním adresy, pod kterou je vedeno vaše připojení k serveru."
+#~ "<br>Tato metoda je exkluzivní alternativa k \"fixní adrese\" nahoře."
+#~ "<br>To znamená úpravu adresy automaticky pokud jsou splněny určité "
+#~ "podmínky (např. IRC server neumí maskovat hostitele).</center>"
+
+#~ msgid "Use \"broken bouncer hack\" to detect address"
+#~ msgstr "Použít \"broken bouncer hack\" pro detekci adresy"
+
+#~ msgid ""
+#~ "<center>When you're behind a dialup router and also tunneling through a "
+#~ "psyBNC bouncer, you can use a bug in the bouncer to force KVIrc to bind "
+#~ "the DCC connections to the dialup router's address.<br>It's an ugly hack "
+#~ "- use it only if nothing else works.</center>"
+#~ msgstr ""
+#~ "<center>Pokud jste za dialup routerem a také tunelujete přes psyBNC "
+#~ "bouncer, můžete využít chybu v bounceru a přinutit KVIrc aby vázalo DCC "
+#~ "spojení adrese dialup routeru.<br>Je to hodně ošklivý hack - používejte "
+#~ "jej, pokud nic jiného nefunguje.</center>"
+
+#~ msgid "Notify failed DCC handshakes to the remote end"
+#~ msgstr "Oznámit selhanou DCC komunikaci vzdálenému konci"
+
+#~ msgid ""
+#~ "<center>If you enable this option, when a DCC request from a remote user "
+#~ "can't be satisfied KVIrc will notify him by a CTCP ERRMSG. This is a nice "
+#~ "feature so it is a good idea to leave it on unless for some reason you "
+#~ "have deactivated the antiflood system: in this case turning off this "
+#~ "option might help if you often get attacked by CTCP floods.</center>"
+#~ msgstr ""
+#~ "<center>Pokud povolíte tuto možnost, při DCC požadavku od vzdáleného "
+#~ "uživatele nemůže být vyřízen, KVIrc mu to oznámí pomocí CTCP ERRMSG. To "
+#~ "je dobrá vlastnost také když ji necháte zapnutou dokud z nějakých důvodů "
+#~ "máte deaktivován antiflood systém: v tomto případě vypnutí této "
+#~ "vlastnosti může pomoci, pokud jste často obtěžováni CTCP floody.</center>"
+
+#~ msgid "Maximum number of DCC sessions"
+#~ msgstr "Maximální počet DCC relací"
+
+#~ msgid ""
+#~ "<center>This is the maximum number of concurrent DCC sessions and it "
+#~ "includes all the DCC types (send,chat,recv...). KVIrc will refuse the "
+#~ "requests when this limit is reached.</center>"
+#~ msgstr ""
+#~ "<center>Toto je maximální počet současně probíhajích DCC relací a to jsou "
+#~ "všechny DCC typy (send,chat,recv...). KVIrc odmítne další požadavky po "
+#~ "dosažení tohoto limitu.</center>"
+
+#~ msgid "Open all minimized"
+#~ msgstr "Otevřít vše minimalizovaně"
+
+#~ msgid "On Incoming File"
+#~ msgstr "Při příchozím souboru"
+
+#~ msgid "Automatically accept"
+#~ msgstr "Automaticky přijmout"
+
+#~ msgid "Open minimized when auto-accepted"
+#~ msgstr "Otevřít minimalizovaně při auto-příjmu"
+
+#~ msgid "Automatically resume when auto-accepted"
+#~ msgstr "Automaticky navázat při auto-příjmu"
+
+#~ msgid "Automatically close on completion"
+#~ msgstr "Automaticky zavřít při ukončení"
+
+#~ msgid "Notify completion in console"
+#~ msgstr "Oznámit dokončení v konzoli"
+
+#~ msgid "Notify completion in notifier"
+#~ msgstr "Oznámit dokončení v oznamovači"
+
+#~ msgid ""
+#~ "<center>The \"send ahead\" DCC method allows data to be sent faster by "
+#~ "breaking some of the rules of the original DCC SEND protocol "
+#~ "specification.<br>Most clients can handle this kind of optimisation so "
+#~ "disable it only if you have problems.</center>"
+#~ msgstr ""
+#~ "<center>DCC Metoda \"poslat napřed\" umožňuje datům, aby byla zaslána "
+#~ "rychleji porušením některých originálních pravidel ve specifikaci DCC "
+#~ "SEND protokolu.<br>Většina klientů dokáže zvládnout tento druh "
+#~ "optimalizace, takže ji vypněte pouze pokud máte problémy.</center>"
+
+#~ msgid "Guess save path from media type"
+#~ msgstr "Odvodit cestu uložení z typu média"
+
+#~ msgid "Maximum number of DCC transfers"
+#~ msgstr "Maximální počet DCC přenosů"
+
+#~ msgid "Download folder:"
+#~ msgstr "Download složka:"
+
+#~ msgid ""
+#~ "<center>This is the maximum number of concurrent DCC transfers. KVIrc "
+#~ "will refuse the requests when this limit is reached.</center>"
+#~ msgstr ""
+#~ "<center>Toto je maximální počet současně probíhajících DCC přenosů. KVIrc "
+#~ "odmítne další požadavky po dosažení tohoto limitu.</center>"
+
+#~ msgid "Bug Compatibility"
+#~ msgstr "Bug kompatibilita"
+
+#~ msgid "Send ACK for byte 0"
+#~ msgstr "Posílat ACK pro bajt 0"
+
+#~ msgid ""
+#~ "<center>This option causes KVIrc to send a zero-byte acknowledge to kick-"
+#~ "start the DCC transfer with some buggy IRC clients.<br>Use it only if "
+#~ "your DCC transfers stall just after establishing a connection without "
+#~ "sending any data.</center>"
+#~ msgstr ""
+#~ "<center>Tato volba způsobí, že KVIrc pošle nulový potvrzovací bajt k "
+#~ "zahájení DCC přenosu s některými vadnými IRC klienty.<br>Použijte pouze "
+#~ "pokud se DCC přenosy zastaví ihned po navázaní spojení bez zaslání dat.</"
+#~ "center>"
+
+#~ msgid "Accept broken RESUME (mIRC file.ext)"
+#~ msgstr "Přijímat poškozené RESUME (mIRC soubor.ext)"
+
+#~ msgid ""
+#~ "<center>This option causes KVIrc to accept RESUME requests with invalid "
+#~ "filenames.<br>Use it if KVIrc fails to accept RESUME requests from other "
+#~ "clients (e.g. some versions of mIRC).</center>"
+#~ msgstr ""
+#~ "<center>Tato volba způsobuje, že KVIrc přijímá RESUME požadavky s "
+#~ "nesprávnými názvy souborů.<br>Použijte tehdy, když KVIrc selže v "
+#~ "přijímání RESUME požadavků od ostatních klientů (např. některé verze "
+#~ "mIRC).</center>"
+
+#~ msgid "Speed limits"
+#~ msgstr "Rychlostní omezení"
+
+#~ msgid "Limit upload bandwidth to"
+#~ msgstr "Omezit odchozí provoz na"
+
+#~ msgid "bytes/sec"
+#~ msgstr "bajtů/sek"
+
+#~ msgid "Limit download bandwidth to"
+#~ msgstr "Omezit příchozí provoz na"
+
+#~ msgid "Packet size:"
+#~ msgstr "Velikost paketu:"
+
+#~ msgid ""
+#~ "<center>This parameter controls the packet size used for DCC SEND."
+#~ "<br>With bigger packets you will be probably send data faster, but you "
+#~ "will also saturate your bandwidth and in some cases cause more disk "
+#~ "activity.<br>Reasonable values are from 512 to 4096 bytes.</center>"
+#~ msgstr ""
+#~ "<center>Tento parametr kontroluje velikost paketu použitou pro DCC SEND."
+#~ "<br>S většími pakety budete pravděpodobně odesílat data rychleji, ale "
+#~ "také zahltíte vaše připojení a v některých případech způsobuje i vyšší "
+#~ "diskovou aktivitu.<br>Rozumné hodnoty jsou od 512 do 4096 bajtů.</center>"
+
+#~ msgid "Force idle step"
+#~ msgstr "Nucená nečinnost"
+
+#~ msgid ""
+#~ "<center>Enable this option when the dcc file transfers tend to block your "
+#~ "computer by consuming too much CPU time. When this option is enabled the "
+#~ "idle interval below will be forcibly inserted between each sent/received "
+#~ "data packet.</center>"
+#~ msgstr ""
+#~ "<center>Tuto volbu zaškrtněte, pokud dcc přenosy souborů seberou vašemu "
+#~ "počítači příliš procesorového času. Když je tato volba zaškrtnuta, "
+#~ "interval nečinnosti je nuceně vložen mezi každý poslaný/přijatý datový "
+#~ "paket.</center>"
+
+#~ msgid "Idle interval:"
+#~ msgstr "Interval nečinnosti:"
+
+#~ msgid ""
+#~ "<center>This parameter controls the average delay between two packets "
+#~ "sent or received.<br>A smaller interval will cause you to send data "
+#~ "faster but will also add load to your CPU, disk and network interface."
+#~ "<br>Reasonable values are from 5 to 50 milliseconds.</center>"
+#~ msgstr ""
+#~ "<center>Tento parametr kontroluje průměrnou dobu mezi odesláním dvou "
+#~ "paketů.<br>Menší interval způsobí, že budete odesílat data rychleji, ale "
+#~ "také více zatížíte váš procesor, pevný disk a síťové rozhraní.<br>Rozumné "
+#~ "hodnoty jsou od 5 do 50 milisekund.</center>"
+
+#~ msgid "Use fast send (send ahead)"
+#~ msgstr "Použít rychlé poslání (posílání dopředu)"
+
+#~ msgid "On Chat Request"
+#~ msgstr "Při Chat požadavku"
+
+#~ msgid "On Voice Request"
+#~ msgstr "Při Hlasovém požadavku"
+
+#~ msgid "Force half-duplex mode on sound device"
+#~ msgstr "Nastavit poloduplexní mód na zvukovém zařízení"
+
+#~ msgid "Volume slider controls PCM, not Master"
+#~ msgstr "Posuvník hlasitosti ovládá PCM, ne Hlasitost"
+
+#~ msgid "Sound device:"
+#~ msgstr "Zvukové zařízení:"
+
+#~ msgid "Mixer device:"
+#~ msgstr "Zařízení mixéru:"
+
+#~ msgid "Pre-buffer size:"
+#~ msgstr "Velikost pre-bufferu:"
+
+#~ msgid "Avatar Download - KVIrc"
+#~ msgstr "Stažení Avataru - KVIrc"
+
+#~ msgid "<center>Please wait while the avatar is being downloaded</center>"
+#~ msgstr "<center>Prosím počkejte, dokud nebude avatar stažen</center>"
+
+#~ msgid "Abort"
+#~ msgstr "Přerušit"
+
+#~ msgid "Failed to start the download"
+#~ msgstr "Stahování selhalo"
+
+#~ msgid "Download aborted by user"
+#~ msgstr "Stahovaní přerušeno uživatelem"
+
+#, fuzzy
+#~ msgid "Hide avatars in userlist"
+#~ msgstr "Schovat avatary"
+
+#~ msgid "Use avatar"
+#~ msgstr "Použít avatar"
+
+#~ msgid "Failed to Load Avatar - KVIrc"
+#~ msgstr "Selhalo načtení avataru - KVIrc"
+
+#~ msgid ""
+#~ "Failed to load the avatar image.<br>It may be an unaccessible file or an "
+#~ "unsupported image format."
+#~ msgstr ""
+#~ "Selhalo nahrání avatar obrázku.<br>Je možné, že k souboru nelze "
+#~ "přistupovat nebo se jedná o nepodporovaný typ obrázku."
+
+#~ msgid "Failed to download the avatar image.<br><b>%Q</b>"
+#~ msgstr "Selhalo stažení avatar obrázku.<br><b>%Q</b>"
+
+#~ msgid "Avatar Download Failed - KVIrc"
+#~ msgstr "Stažení Avataru selhalo - KVIrc"
+
+#, fuzzy
+#~ msgid "Scaling"
+#~ msgstr "Skriptování"
+
+#~ msgid "Scale avatar images (recommended)"
+#~ msgstr "Přizpůsobit obrázky avatarů (doporučeno)"
+
+#~ msgid ""
+#~ "<center>This option will force KVIrc to scale avatars shown in the "
+#~ "userlist.<br>Avatars will be scaled to fit the constraints set below. "
+#~ "Better keep this option on. :)</center>"
+#~ msgstr ""
+#~ "<center>Tato volba přinutí KVIrc změnit rozměr avatarů zobrazených v "
+#~ "seznamu uživatelů.<br>Avatary budou přizpůsobeny konstantám, které jsou "
+#~ "uvedeny níže. Je lepší nechat tuto volbu zapnutou. :)</center>"
+
+#~ msgid "Image width:"
+#~ msgstr "Šířka obrázku:"
+
+#~ msgid "Image height:"
+#~ msgstr "Výška obrázku:"
+
+#~ msgid "Request CTCP"
+#~ msgstr "Požadavek CTCP"
+
+#~ msgid "Request missing avatars"
+#~ msgstr "Požadovat chybějící avatary"
+
+#~ msgid "Maximum requested file size:"
+#~ msgstr "Maximální požadovaná velikost souboru:"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to send a DCC GET request when "
+#~ "someone sets an avatar and there is no cached copy available.</center>"
+#~ msgstr ""
+#~ "<center>Tato volba způsobí, že KVIrc pošle DCC GET požadavek, pokud k "
+#~ "nastavenému avataru chybí náhled.</center>"
+
+#~ msgid ""
+#~ "<center>This is the maximum size for avatar images that will be "
+#~ "automatically requested.<br>A reasonable value might be 102400 bytes (100 "
+#~ "K).</center>"
+#~ msgstr ""
+#~ "<center>Toto je maximální velikost pro obrázky avatarů, které budou "
+#~ "automaticky požadovány.<br>Přijatelnou hodnotou by mělo být 102400 bajtů "
+#~ "(100 K).</center>"
+
+#~ msgid "Automatically accept incoming avatars"
+#~ msgstr "Automaticky přijmout příchozí avatary"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to auto-accept DCC SEND requests for "
+#~ "incoming avatars.<br>If you're using the \"Request missing avatars\" "
+#~ "option above, enabling this may by useful.<br>Avatars will be saved in "
+#~ "the local KVIrc directory.</center>"
+#~ msgstr ""
+#~ "<center>Tato volba způsobí, že KVIrc bude automaticky přijímat DCC SEND "
+#~ "požadavky na příchozí avatary.<br>Zapnutí může být velmi užitečné, pokud "
+#~ "používáte volbu \"Požadovat chybějící avatary\", která se nachází výše."
+#~ "<br>Obrázky avatarů budou uloženy na disk do adresáře KVIrc.</center>"
+
+#~ msgid "Remember avatars for registered users"
+#~ msgstr "Zapamatovat avatary registrovaných uživatelů"
+
+#~ msgid ""
+#~ "<center>Use a user's last known avatar by default (only for users that "
+#~ "are registered).</center>"
+#~ msgstr ""
+#~ "<center>Použít uživatelův poslední známý avatar - standardně (jenom pro "
+#~ "uživatele, kteří jsou registrováni).</center>"
+
+#~ msgid "Avatar offer timeout:"
+#~ msgstr "Prodleva nabídky avataru:"
+
+#~ msgid ""
+#~ "<center>This is the amount of time to make an avatar available for "
+#~ "transfer when requested.<br>When someone sends a CTCP AVATAR request, "
+#~ "KVIrc will reply with a CTCP AVATAR message containing the name and size "
+#~ "of your avatar image.<br>A time-limited file offer is added for the image "
+#~ "file to the requesting user.</center>"
+#~ msgstr ""
+#~ "<center>Toto je doba, po kterou bude avatar dostupný ke stažení, když je "
+#~ "o něj požádáno.<br>Pokud někdo pošle CTCP AVATAR požadavek, KVIrc odpoví "
+#~ "zprávou CTCP AVATAR obsahující jméno a velikost obrázku vašeho avataru."
+#~ "<br>Časově limitovaná nabídka je přidána k obrázku pro uživatele, který "
+#~ "zaslal požadavek.</center>"
+
+#~ msgid "Ignore requests if no avatar is set"
+#~ msgstr "Ignorovat požadavky pokud není avatar nastaven"
+
+#~ msgid ""
+#~ "This option will cause KVIrc to ignore channel CTCP AVATAR requests when "
+#~ "you have no avatar set. This is usually a good practice since it helps in "
+#~ "reducing traffic by not sending a reply that would be empty."
+#~ msgstr ""
+#~ "Tato volba způsobí, že KVIrc bude ignorovat kanálové požadavky CTCP "
+#~ "AVATAR pokud jste si žádný nenastavili. Toto je dobré vyzkoušet, jelikož "
+#~ "pomáhá redukovat síťový provoz neposíláním odpovědí, které mohou být "
+#~ "prázdné."
+
+#~ msgid "Network Details"
+#~ msgstr "Detaily sítě"
+
+#~ msgid "<center>Put here a brief description of the network.</center>"
+#~ msgstr "<center>Zde vložte krátký popis sítě.</center>"
+
+#~ msgid ""
+#~ "<center>This is the <b>username</b> that KVIrc will use to login to "
+#~ "servers on this network.\n"
+#~ "If this field is left empty (most common case), KVIrc will use the "
+#~ "default username specified in the \"Identity\" options tab.</center>"
+#~ msgstr ""
+#~ "<center>Toto je <b>uživatelské jméno</b>, které KVirc použije pro "
+#~ "přihlášení k serverům této sítě.\n"
+#~ "Pokud je toto pole prázné (nejčastější případ), KVIrc použije výchozí "
+#~ "uživatelské jméno zadané v záložce \"Identita\".</center>"
+
+#~ msgid ""
+#~ "<center>You can specify a \"special\" <b>nickname</b> that will be used "
+#~ "to log in to the servers on this network.<br>If this field is left empty "
+#~ "(most common case), the default nickname (specified in the \"Identity\" "
+#~ "settings) will be used.</center>"
+#~ msgstr ""
+#~ "<center>Můžete zadat \"speciální\" <b>přezdívku</b>, která bude použita "
+#~ "pro přihlášení na tuto síť.<br>Pokud je toto pole prázdné (nejčastější "
+#~ "případ), bude použito výchozí přezdívky (zadané v nastavení \"Identita\")."
+#~ "</center>"
+
+#~ msgid ""
+#~ "<center>You can specify a \"special\" <b>real name</b> that will be used "
+#~ "to login with the servers on this network.<br>If you leave this field "
+#~ "empty (most common case), the default \"real name\" (specified in the "
+#~ "\"Identity\" settings) will be used.</center>"
+#~ msgstr ""
+#~ "<center>Můžete zadat \"speciální\" <b>skutečné jméno</b>, které bude "
+#~ "použito pro přihlášení na tuto síť.<br>Pokud je toto pole prázdné "
+#~ "(nejčastější případ), bude použito výchozí \"skutečné jméno\" (zadané v "
+#~ "nastavení \"Identita\").</center>"
+
+#~ msgid "Encoding:"
+#~ msgstr "Kódování:"
+
+#~ msgid ""
+#~ "<center>This box allows you to choose the preferred encoding for the "
+#~ "servers in this network. If you choose \"Use System Encoding\" then the "
+#~ "encoding will be set to the systemwide value that you choose in the "
+#~ "\"Encoding\" page of the options dialog.</center>"
+#~ msgstr ""
+#~ "<center>Toto umožní vybrat preferované kódování pro servery této sítě. "
+#~ "Pokud si vyberete \"Použít systémové kódování\" bude kódování zvoleno "
+#~ "podle systémové, kterou si zvolíte na stránce \"Kódování\" v dialogu "
+#~ "Možnosti.</center>"
+
+#~ msgid "Connect to this network at startup"
+#~ msgstr "Připojit k této síti po spuštění"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to automatically connect to this "
+#~ "network at startup</center>"
+#~ msgstr ""
+#~ "<center>Tato volba způsobí, že se KVIrc po spuštění automaticky připojí "
+#~ "do této sítě</center>"
+
+#~ msgid "Channels to join automatically upon connect:"
+#~ msgstr "Kanály pro automatický příchod po připojení:"
+
+#~ msgid ""
+#~ "<center>Here you can set a list of channels to be joined automatically "
+#~ "after a connection to a server in this network has been established. To "
+#~ "add a channel, type its name in the text input below and click \"<b>Add</"
+#~ "b>\".</center>"
+#~ msgstr ""
+#~ "<center>Zde můžete nastavit seznam kanálů, na které budete automaticky "
+#~ "připojeni po připojení k danému serveru vybrané sítě. Pro přidání kanálu, "
+#~ "napište jeho jméno do textového pole a klikněte na \"<b>Přidat</b>\".</"
+#~ "center>"
+
+#~ msgid ""
+#~ "<center>The following commands will be executed after a connection to a "
+#~ "server in this network has been established.<br><b>Important:</b> Enter "
+#~ "commands <b>without</b> a preceding slash (e.g. <tt>quote pass secret</"
+#~ "tt> instead of <tt>/quote pass secret</tt>).<br>KVIrc will first send the "
+#~ "USER command, then eventually PASS and NICK and then execute this command "
+#~ "sequence.</center>"
+#~ msgstr ""
+#~ "<center>Následující příkazy budou provedeny po úspěšném navázaní spojení "
+#~ "se serverem v této síti.<br><b>Důležité:</b> Zadejte příkazy <b>bez</b> "
+#~ "lomítka (např. <tt>quote pass secret</tt> místo <tt>/quote pass secret</"
+#~ "tt>).<br>KVIrc nejdříve pošle příkaz USER , potom eventuelně PASS a NICK "
+#~ "a nakonec provede tuto sekvenci příkazů.</center>"
+
+#~ msgid "On Connect"
+#~ msgstr "Při připojení"
+
+#~ msgid ""
+#~ "<center>The following commands will be executed after a successful login "
+#~ "to a server in this network.<br><b>Important:</b> Enter commands "
+#~ "<b>without</b> a preceding slash (e.g. <tt>quote privatelog</tt> instead "
+#~ "of <tt>/quote privatelog</tt>).<br>This is useful for automatically "
+#~ "opening queries, setting variables, etc.</center>"
+#~ msgstr ""
+#~ "<center>Následující příkazy budou provedeny po úspěsném přihlášení na "
+#~ "server v této síti.<br><b>Důležité:</b> Zadejte příkazy <b>bez</b> "
+#~ "lomítka (např. <tt>quote privatelog</tt> místo <tt>/quote privatelog</"
+#~ "tt>).<br>Toto je užitečné pro automatické otevírání query, nastavování "
+#~ "proměnných, atd.</center>"
+
+#~ msgid "On Login"
+#~ msgstr "Při přihlášení"
+
+#~ msgid ""
+#~ "<center>This is a list of NickServ identification rules. KVIrc will use "
+#~ "them to model its automatic interaction with NickServ on this network."
+#~ "<br>Please be aware that this feature can cause your NickServ passwords "
+#~ "to be stolen if used improperly. Make sure that you fully understand the "
+#~ "NickServ authentication protocol.<br>In other words, be sure to know what "
+#~ "you're doing.<br>Also note that the password that you provide is stored "
+#~ "as <b>PLAIN TEXT</b>.</center>"
+#~ msgstr ""
+#~ "<center>Toto je seznam identifikačních pravidel pro NickServ. KVIrc je "
+#~ "použije jako šablonu pro automatickou interakci s NickServ.<br>Pomatujte, "
+#~ "že tato vlastnost může způsobit krádež vašich NickServ hesel, pokud je "
+#~ "použita nesprávně. Postupujte podle doporučení nápovědy a ujistěte se, že "
+#~ "plně rozumíte autentifikačnímu protokolu NickServ.<br>Jinými slovy, "
+#~ "musíte vědět co děláte.<br>Také nezapomínejte, že poskytovaná hesla jsou "
+#~ "uložena jako <b>OBYČEJNÝ TEXT</b>.Pravým kliknutím přidáte/odeberete "
+#~ "pravidla.</center>"
+
+#~ msgid "Server Details"
+#~ msgstr "Detaily serveru"
+
+#~ msgid ""
+#~ "<center>This is a brief description of this server. This field has no "
+#~ "restrictions but many server lists use it to describe the server's "
+#~ "physical location</center>"
+#~ msgstr ""
+#~ "<center>Toto je stručný popis serveru. Pole nemá žádná omezení, ale "
+#~ "spousta serverových seznamů jej používá k popisu lokace fyzického "
+#~ "umístění serveru</center>"
+
+#~ msgid ""
+#~ "<center>This is the <b>username</b> that KVIrc will use to login to this "
+#~ "server.\n"
+#~ "If this field is left empty (most common case), KVIrc will first look if "
+#~ "an username is specified for the network that this server belongs to, and "
+#~ "if that is empty then KVIrc will use the default username specified in "
+#~ "the \"Identity\" options tab.</center>"
+#~ msgstr ""
+#~ "<center>Toto je <b>uživatelské jméno</b>, které KVirc použije pro "
+#~ "přihlášení k tomuto serveru.\n"
+#~ "Pokud je toto pole prázné (nejčastější případ), KVIrc se nejdříve "
+#~ "přesvědčí, jestli je uživatelské jméno určené pro síť ve které je tento "
+#~ "server, a pokud je prázdné, tak KVIrc použije výchozí uživatelské jméno "
+#~ "zadané v záložce \"Identita\".</center>"
+
+#~ msgid ""
+#~ "<center>If this server requires a password, put it in this field, "
+#~ "otherwise leave it empty.</center>"
+#~ msgstr ""
+#~ "<center>Pokud server vyžaduje heslo, vložte ho do tohoto pole, jinak ho "
+#~ "nechte prázdné.</center>"
+
+#~ msgid ""
+#~ "<center>You can specify a \"special\" <b>nickname</b> that will be used "
+#~ "to log in to this server.<br>If this field is left empty (most common "
+#~ "case), KVIrc will first look if a nickname is specified for the network "
+#~ "that this server belongs to, and if that is empty then the default "
+#~ "nickname (specified in the \"Identity\" settings) will be used.</center>"
+#~ msgstr ""
+#~ "<center>Můžete zadat \"speciální\" <b>přezdívku</b>, která bude použita "
+#~ "pro přihlášení na tento server.<br>Pokud je toto pole prázdné "
+#~ "(nejčastější případ), KVIrc se nejdříve přesvědčí, jestli je přezdívka "
+#~ "určená pro síť ve které je tento server, a pokud je prázdné, tak KVIrc "
+#~ "použije výchozí přezdívku zadanou v záložce \"Identita\".</center>"
+
+#~ msgid ""
+#~ "<center>You can specify a \"special\" <b>real name</b> that will be used "
+#~ "to login with this server.<br>If you leave this field empty (most common "
+#~ "case), KVIrc will first look if a real name is specified for the network "
+#~ "that this server belongs to, and if that is empty the default \"real name"
+#~ "\" (specified in the \"Identity\" settings) will be used.</center>"
+#~ msgstr ""
+#~ "<center>Můžete zadat \"speciální\" <b>skutečné jméno</b>, které bude "
+#~ "použito pro přihlášení na tento server.<br>Pokud je toto pole prázdné "
+#~ "(nejčastější případ), KVIrc se nejdříve přesvědčí, jestli je skutečné "
+#~ "jméno určené pro síť ve které je tento server, a pokud je prázdné, tak "
+#~ "KVIrc použije výchozí skutečné jméno zadané v záložce \"Identita\".</"
+#~ "center>"
+
+#~ msgid "Use default user mode"
+#~ msgstr "Použít výchozí nastavení"
+
+#~ msgid ""
+#~ "<center>If this is enabled, the global initial <b>user mode</b> "
+#~ "(configured from the identity dialog) will be used. If disabled, you can "
+#~ "configure an initial user mode for this server"
+#~ msgstr ""
+#~ "<center>Pokud je povoleno, bude použit na začátku globální <b>uživatelský "
+#~ "mód</b> (nastavený v dialogu Identita). Pokud není povoleno, můžete pro "
+#~ "tento server nastavit počáteční uživatelský mód"
+
+#~ msgid ""
+#~ "<center>This is the <b>IP address</b> of this server, it is here for "
+#~ "caching purposes.<br>If you leave this field empty, KVIrc will fill it in "
+#~ "the first time it connects to the server. If you enable the \"cache IP "
+#~ "address\" option below, KVIrc will use it as a \"cached result\" and "
+#~ "avoid looking it up again.</center>"
+#~ msgstr ""
+#~ "<center>Toto je <b>IP adresa</b> tohoto serveru a je zde pro účely "
+#~ "cachování.<br>Pokud necháte toto pole prázdné, KVIrc ho vyplní při prvním "
+#~ "připojení na server. Pokud povolíte volbu \"cachovat IP adresu\" uvedenou "
+#~ "níže, KVIrc ji použije jako \"nacachovaný výsledek\" a nebude dále adresu "
+#~ "zjišťovat.</center>"
+
+#~ msgid "Cache IP address"
+#~ msgstr "Cache IP adresy"
+
+#~ msgid ""
+#~ "<center>This check will enable <b>IP address caching</b> for this server:"
+#~ "<br>DNS lookups can be time-consuming and might be blocking on some "
+#~ "platforms; this option will cause KVIrc to look up the server hostname "
+#~ "only once.<br><br> Advanced: you can also use this option to force a "
+#~ "certain server name to resolve to a fixed ip address when either the dns "
+#~ "for that server is temporairly unreachable or you want to avoid the round-"
+#~ "robin lookups.</center>"
+#~ msgstr ""
+#~ "<center>Toto povolí <b>cachování IP adresy</b> pro tento server:<br>DNS "
+#~ "dotazy zabírají čas a mohou být blokovány na některých platformách; tato "
+#~ "volba způsobí, že KVIrc zjistí hostitele jen jednou.<br><br> Pokročilé: "
+#~ "tuto volbu můžete také použít pro vynucení zjištění fixní ip adresy "
+#~ "některého serveru, když je dns dočasně nedostupné nebo chcete předejít "
+#~ "round-robindotazům.</center>"
+
+#~ msgid "Use SSL protocol"
+#~ msgstr "Použít SSL protokol"
+
+#~ msgid ""
+#~ "<center>This check will cause the connection to use the <b>Secure Socket "
+#~ "Layer</b> encryption support. Obviously, this server must have support "
+#~ "for this, too. :)</center>"
+#~ msgstr ""
+#~ "<center>Způsobí, že k připojení bude použito šifrovací podpory <b>Secure "
+#~ "Socket Layer</b>.Je samozřejmostí, že server musí toto připojení také "
+#~ "podporovat. :)</center>"
+
+#~ msgid "Connect to this server at startup"
+#~ msgstr "Připojit k tomuto serveru po spuštění"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to connect to the IRC server when it "
+#~ "is started.</center>"
+#~ msgstr ""
+#~ "<center>Tato volba způsobí, že se KVIrc po spuštění připojí k IRC "
+#~ "serverům.</center>"
+
+#~ msgid ""
+#~ "<center>This box allows you to choose the preferred encoding for this "
+#~ "sever. If you choose \"Use Network Encoding\" then the encoding will be "
+#~ "inherited from the network that this server belongs to.</center>"
+#~ msgstr ""
+#~ "<center>Toto umožní vybrat preferované kódování pro tento server. Pokud "
+#~ "si vyberete \"Použít kódování sítě\" bude kódování zvoleno podle sítě, ve "
+#~ "které se server nachází.</center>"
+
+#~ msgid "Use Network Encoding"
+#~ msgstr "Použít kódování sítě"
+
+#~ msgid "Link filter:"
+#~ msgstr "Filtr linku:"
+
+#~ msgid ""
+#~ "<center>This field specifies the name of a module that exports a link "
+#~ "filter for this type of server.<br>For plain IRC connections, you don't "
+#~ "need any link filters; this is used for incompatible protocols.</center>"
+#~ msgstr ""
+#~ "<center>Toto pole určuje název modulu, který exportuje filtr linků pro "
+#~ "tento typ serverů.<br>Pro obyčejné IRC spojení nepotřebujete žádné filtry "
+#~ "linků; používá se to pro nekompatibilní protokoly.</center>"
+
+#~ msgid "Id:"
+#~ msgstr "Id:"
+
+#~ msgid ""
+#~ "<center>This field allows you to specify a really unique id for this "
+#~ "server. You will then be able to use /server -x &lt;this_id&gt; to make "
+#~ "the connection. This is especially useful when you have multiple server "
+#~ "entries with the same hostname and port in different networks (bouncers?)"
+#~ "</center>"
+#~ msgstr ""
+#~ "<center>Toto pole umžní určit skutečné unikátní id pro tento server. "
+#~ "Budete moci použít /server -x &lt;toto_id&gt; pro navázání spojení. To se "
+#~ "hodí především, pokud máte několik serverových záznamů se stejným "
+#~ "hostname a portem na různých sítích (bouncery?)</center>"
+
+#~ msgid "Proxy server:"
+#~ msgstr "Proxy server:"
+
+#~ msgid "Direct connection"
+#~ msgstr "Přímé spojení"
+
+#~ msgid ""
+#~ "<center>Here you can set a list of channels to be joined automatically "
+#~ "after a connection to this server has been established. To add a channel, "
+#~ "type its name in the text input below and click \"<b>Add</b>\".</center>"
+#~ msgstr ""
+#~ "<center>Zde můžete nastavit seznam kanálů, na které budete automaticky "
+#~ "připojeni po připojení k danému serveru. Pro přidání kanálu, napište jeho "
+#~ "jméno do textového pole a klikněte na \"<b>Přidat</b>\".</center>"
+
+#~ msgid ""
+#~ "<center>The following commands will be executed after a connection has "
+#~ "been established.<br><b>Important:</b> Enter commands <b>without</b> a "
+#~ "preceding slash (e.g. <tt>quote pass secret</tt> instead of <tt>/quote "
+#~ "pass secret</tt>).<br>KVIrc will first send the USER command, then "
+#~ "eventually PASS and NICK and then execute this command sequence.<br>This "
+#~ "is particularly useful for IRC bouncers that require login commands.</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Následující příkazy budou provedeny po úspěšném navázaní spojení."
+#~ "<br><b>Důležité:</b> Zadejte příkazy <b>bez</b> lomítka (např. <tt>quote "
+#~ "pass secret</tt> místo <tt>/quote pass secret</tt>).<br>KVIrc nejdříve "
+#~ "pošle příkaz USER , potom eventuelně PASS a NICK a nakonec provede tuto "
+#~ "sekvenci příkazů.<br>Toto je obzvláště užitečné pro IRC bouncery, které "
+#~ "vyžadují příkazy pro přihlášení.</center>"
+
+#~ msgid ""
+#~ "<center>The following commands will be executed after a successful login "
+#~ "to this server.<br><b>Important:</b> Enter commands <b>without</b> a "
+#~ "preceding slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote "
+#~ "privatelog</tt>).<br>This is useful for automatically opening queries, "
+#~ "setting variables, etc.</center>"
+#~ msgstr ""
+#~ "<center>Následující příkazy budou provedeny po úspěsném přihlášení na "
+#~ "tento server.<br><b>Důležité:</b> Zadejte příkazy <b>bez</b> lomítka "
+#~ "(např. <tt>quote privatelog</tt> místo <tt>/quote privatelog</tt>)."
+#~ "<br>Toto je užitečné pro automatické otevírání query, nastavování "
+#~ "proměnných, atd.</center>"
+
+#~ msgid "Server"
+#~ msgstr "Server"
+
+#~ msgid ""
+#~ "<center>This is the list of available IRC servers.<br>Right-click on the "
+#~ "list to add or remove servers and perform other actions.<br>Double-click "
+#~ "on a item for advanced options.</center>"
+#~ msgstr ""
+#~ "<center>Toto je seznam dostupných IRC serverů.<br>Pravým kliknutím na "
+#~ "seznam lze přidávat, nebo ubírat servery a provádet další akce."
+#~ "<br>Dvojitým kliknutím otevřete další možnosti položky.</center>"
+
+#~ msgid "New Network"
+#~ msgstr "Nová Síť"
+
+#~ msgid "New Server"
+#~ msgstr "Nový Server"
+
+#~ msgid "Remove Network/Server"
+#~ msgstr "Smazat Síť/Server"
+
+#~ msgid "Paste Server"
+#~ msgstr "Vložit Server"
+
+#~ msgid "Import List"
+#~ msgstr "Importovat seznam"
+
+#~ msgid ""
+#~ "<center>This is the name of the currently selected server or network</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Toto je název současného zvoleného serveru nebo sítě.</center>"
+
+#~ msgid ""
+#~ "<center>This check identifies IPv6 servers.<br>If enabled, KVIrc will "
+#~ "attempt to use the IPv6 protocol (thus your OS <b>must</b> have a working "
+#~ "IPv6 stack and you <b>must</b> have an IPv6 connection).</center>"
+#~ msgstr ""
+#~ "<center>Toto identifikuje IPv6 servery.<br>Pokud je zapnuto, KVIrc se "
+#~ "bude pokoušet používat IPv6 protokol (tudíž váš OS <b>musí</b> mít "
+#~ "fungující IPv6 podporu a <b>musíte</b> mít funkční IPv6 připojení).</"
+#~ "center>"
+
+#~ msgid ""
+#~ "<center>This is the default <b>port</b> that this server will be "
+#~ "contacted on.<br>Usually <b>6667</b> is OK.</center>"
+#~ msgstr ""
+#~ "<center>Toto je výchozí <b>port</b>, na kterém bude server kontaktován."
+#~ "<br>Obvykle je <b>6667</b> OK.</center>"
+
+#~ msgid "<center>Click here to edit advanced options for this entry</center>"
+#~ msgstr ""
+#~ "<center>Klikněte zde pro úpravy pokročilých možností tohoto záznamu.</"
+#~ "center>"
+
+#~ msgid "Connect &Now"
+#~ msgstr "Připojit &Nyní"
+
+#~ msgid ""
+#~ "<center>Hit this button to connect to the currently selected server.</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Stiskněte toto tlačítko pro připojení k právě vybranému serveru.</"
+#~ "center>"
+
+#~ msgid ""
+#~ "<center>This button shows a list of recently used servers. It allows you "
+#~ "to quickly find them in the list.</center>"
+#~ msgstr ""
+#~ "<center>Toto tlačítko zobrazuje seznam nedávno použitých serverů. To vám "
+#~ "umožňuje rychlé hledání v seznamu.</center>"
+
+#~ msgid "Show this dialog at startup"
+#~ msgstr "Zobrazit tento dialog při spuštění"
+
+#~ msgid ""
+#~ "<center>If this option is enabled, the Servers dialog will appear every "
+#~ "time you start KVIrc</center>"
+#~ msgstr ""
+#~ "<center>Pokud je tato volba zapnuta, dialogové okno Seznam serverů se "
+#~ "zobrazí při každém zapnutí KVIrc</center>"
+
+#~ msgid "Network:"
+#~ msgstr "Síť:"
+
+#~ msgid "No selection"
+#~ msgstr "Žádný výběr"
+
+#~ msgid "UnknownNet"
+#~ msgstr "NeznámáSíť"
+
+#~ msgid "Remove Network"
+#~ msgstr "Smazat Síť"
+
+#~ msgid "&New Server"
+#~ msgstr "&Nový server"
+
+#~ msgid "Re&move Server"
+#~ msgstr "S&mazat server"
+
+#~ msgid "&Copy Server"
+#~ msgstr "&Kopírovat server"
+
+#~ msgid "&Paste Server"
+#~ msgstr "&Vložit server"
+
+#~ msgid "Clear List"
+#~ msgstr "Smazat seznam"
+
+#~ msgid ""
+#~ "Oops... something weird happened:<br>Can't find any module capable of "
+#~ "importing servers."
+#~ msgstr ""
+#~ "Oops... něco zvláštního se stalo:<br>Nelze nalézt žádný modul pro import "
+#~ "serverů."
+
+#~ msgid ""
+#~ "Oops... something weird happened:<br>Can't find the module that was "
+#~ "capable of this import action. :("
+#~ msgstr ""
+#~ "Oops... něco divného se stalo:<br>Nemohu nalézt modul, který umí tuto "
+#~ "importní akci. :("
+
+#~ msgid "irc.unknown.net"
+#~ msgstr "irc.neznama.sit"
+
+#~ msgid ""
+#~ "This table contains the text icon associations.<br>KVirc will use them to "
+#~ "display the CTRL+I escape sequences and eventually the emoticons."
+#~ msgstr ""
+#~ "Tato tabulka obsahuje asociace textu a ikon.<br>KVirc je používá k "
+#~ "zobrazení pomocí CTRL+I escape sekvence a také smajlíků."
+
+#~ msgid "Sound System"
+#~ msgstr "Zvukový systém"
+
+#~ msgid "This allows you to select the sound system to be used with KVIrc."
+#~ msgstr "Toto umožňuje výběr zvukového systému použitého s KVIrc."
+
+#~ msgid "Auto-detect"
+#~ msgstr "Autodetekce"
+
+#~ msgid "Media Player"
+#~ msgstr "Přehrávač médií"
+
+#~ msgid ""
+#~ "This allows you to select the preferred media player to be used with the "
+#~ "mediaplayer.* module commands and functions."
+#~ msgstr ""
+#~ "Toto umožňuje vybrat preferovaný přehrávač médií pro použití s příkazy a "
+#~ "funkcemi mediaplayer.* modulu."
+
+#~ msgid "ID3 tags' encoding"
+#~ msgstr "kódování ID3 tagů"
+
+#, fuzzy
+#~ msgid "This allows you to select encoding of mp3 tags."
+#~ msgstr "Toto umožňuje výběr zvukového systému použitého s KVIrc."
+
+#~ msgid "Winamp messages ecoding"
+#~ msgstr "Kódování Winamp zpráv"
+
+#, fuzzy
+#~ msgid "This allows you to select encoding of winamp messages."
+#~ msgstr "Toto umožňuje výběr zvukového systému použitého s KVIrc."
+
+#, fuzzy
+#~ msgid ""
+#~ "<center><b>Settings for CTCP.</b></center><p>The <b>Client-To-Client "
+#~ "Protocol</b> (CTCP) is used to transmit special control messages over an "
+#~ "IRC connection. These messages can request information from clients or "
+#~ "negotiate file transfers.<br><br></p>"
+#~ msgstr ""
+#~ "<center><b>Tato sekce obsahuje nastavení pro CTCP</b></"
+#~ "center><br><br><p><b>Client-To-Client Protocol</b> (CTCP) slouží pro "
+#~ "přenos speciálních řídících zpráv přes IRC spojení. Tyto zprávy mohou "
+#~ "požadovat informace od klientů nebo vyjednat přenosy souborů.</p>"
+
+#~ msgid "CTCP Replies"
+#~ msgstr "CTCP Odezvy"
+
+#~ msgid "Append to VERSION reply:"
+#~ msgstr "Připojit k VERSION odezvě:"
+
+#~ msgid ""
+#~ "<center>This text will be appended to the CTCP VERSION reply.<br>For "
+#~ "example, you can place a script name here.</center>"
+#~ msgstr ""
+#~ "<center>Tento text bude připojen k CTCP VERSION odpovědi.<br>Například "
+#~ "sem můžete umístit jméno skriptu.</center>"
+
+#~ msgid "Append to SOURCE reply:"
+#~ msgstr "Připojit k SOURCE odezvě:"
+
+#~ msgid ""
+#~ "<center>This text will be appended to the CTCP SOURCE reply.<br>For "
+#~ "example, you can place the source URL for a script here.</center>"
+#~ msgstr ""
+#~ "<center>Tento text bude připojen k CTCP SOURCE odpovědi.<br>Například sem "
+#~ "můžete umístit domovskou URL skriptu.</center>"
+
+#~ msgid "USERINFO reply:"
+#~ msgstr "USERINFO odezva:"
+
+#~ msgid ""
+#~ "<center>This is the CTCP USERINFO reply.<br>It can contain some "
+#~ "information about yourself.</center>"
+#~ msgstr ""
+#~ "<center>Toto je CTCP USERINFO odpověď.<br>Může obsahovat nějaké informace "
+#~ "o vás.</center>"
+
+#~ msgid "PAGE reply:"
+#~ msgstr "PAGE odezva:"
+
+#~ msgid ""
+#~ "<center>This is the CTCP PAGE reply.<br>It should contain some sort of "
+#~ "acknowledgement for CTCP PAGE messages.</center>"
+#~ msgstr ""
+#~ "<center>Toto je CTCP PAGE odpověď.<br>Měla by obsahovat nějaký druh "
+#~ "potvrzení pro CTCP PAGE zprávy.</center>"
+
+#~ msgid "Show the CTCP replies in the active window"
+#~ msgstr "Zobrazit CTCP odezvy v aktivním okně"
+
+#~ msgid "Show dialog for CTCP page requests"
+#~ msgstr "Zobrazit dialog pro CTCP page požadavky"
+
+#~ msgid "Module '%s', Command '%s'"
+#~ msgstr "Modul '%s', Příkaz '%s'"
+
+#~ msgid "Can't rebind the command: window with id %s not found"
+#~ msgstr "Nelze znovu vázat příkaz: okno s id %s nenalezeno"
+
+#~ msgid ""
+#~ "Can't rebind the command: missing window identifier after the -r switch"
+#~ msgstr "Nelze znovu vázat příkaz: chybí identifikátor okna za -r přepínačem"
+
+#~ msgid "Module '%s', Function '%s'"
+#~ msgstr "Modul '%s', Funkce '%s'"
+
+#~ msgid "Identifier evaluated to \"%s\""
+#~ msgstr "Identifikátor vyhodnocen jako \"%s\""
+
+#~ msgid ""
+#~ "The regular expression matched a zero-length substring: this is not valid "
+#~ "in the s/// operator"
+#~ msgstr ""
+#~ "Regulární výraz obsahuje podřetězec nulové délky: toto není platné v s/// "
+#~ "operátoru"
+
+#~ msgid "Skipping the substitution"
+#~ msgstr "Vynechání substituce"
+
+#~ msgid "Left operand of operator %s (%s{%s}) is undefined : assuming 0"
+#~ msgstr "Levý operand operátoru %s (%s{%s}) není definován : nastavuji 0"
+
+#~ msgid "Left operand of operator %s (%s[%s]) is undefined : assuming 0"
+#~ msgstr "Levý operand operátoru %s (%s[%s]) není definován : nastavuji 0"
+
+#~ msgid "Left operand of operator %s (%s) is undefined : assuming 0"
+#~ msgstr "Levý operand operátoru %s (%s) není definován : nastavuji 0"
+
+#~ msgid "Variable %s{%s} evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Proměnná %s{%s} vyhodnocena na '%s' v operátoru %s (není číslo)"
+
+#~ msgid "Variable %s[%s] evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Proměnná %s[%s] vyhodnocena na '%s' v operátoru %s (není číslo)"
+
+#~ msgid "Variable %s evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Proměnná %s vyhodnocena na '%s' v operátoru %s (není číslo)"
+
+#~ msgid "Right operand of operator %s evaluated to '%s' (not a number)"
+#~ msgstr "Pravý operand operátoru %s vyhodnocen na '%s' (není číslo)"
+
+#~ msgid "operator %c%c"
+#~ msgstr "operátor %c%c"
+
+#~ msgid "Encoding"
+#~ msgstr "Kódování"
+
+#~ msgid "The config file with id '%s' is not open"
+#~ msgstr "Konfigurační soubor s id '%s' není otevřen"
+
+#~ msgid "The config file with id '%s' is read only"
+#~ msgstr "Konfigurační soubor s id '%s' je jen pro čtení"
+
+#~ msgid "No nickname specified"
+#~ msgstr "Neurčena přezdívka"
+
+#~ msgid "No netmask specified"
+#~ msgstr "Nebyla určena maska sítě"
+
+#~ msgid "No property name specified"
+#~ msgstr "Neurčeno jméno vlastnosti"
+
+#~ msgid "Missing property name"
+#~ msgstr "Chybí název vlastnosti"
+
+#~ msgid "The specified window (%s) is not a channel/query/DCC chat"
+#~ msgstr "Určené okno (%s) není kanál, query, ani DCC chat"
+
+#~ msgid "No file specified"
+#~ msgstr "Nebyl určen žádný soubor"
+
+#~ msgid "Window %s not found"
+#~ msgstr "Okno %s nenalezeno"
+
+#~ msgid "Can't log to file %s"
+#~ msgstr "Nelze logovat do souboru %s"
+
+#~ msgid "Window with id '%s' not found, returning empty string"
+#~ msgstr "Okno s id '%s' nenalezeno, vrací prázdný řetězec"
+
+#~ msgid "Invalid progress value (%s)"
+#~ msgstr "Nesprávná hodnota průběhu (%s)"
+
+#~ msgid "Error:not enough parameters!"
+#~ msgstr "Chyba: nedostatek parametrů!"
+
+#~ msgid "The (%s) object is not a pixmap"
+#~ msgstr "Objekt (%s) není pixmapa"
+
+#~ msgid "Invalid index parameter (%s)"
+#~ msgstr "Neplatný parametr indexu (%s)"
+
+#~ msgid "Invalid parameter"
+#~ msgstr "Neplatný parametr"
+
+#~ msgid "Can't find the object "
+#~ msgstr "Nelze nalézt objekt "
+
+#~ msgid "Can't set a non-widget object"
+#~ msgstr "Nelze nastavit ne-widget objekt"
+
+#~ msgid "Can't find the tab object "
+#~ msgstr "Nelze najít objekt záložky "
+
+#~ msgid "Can't find the widget(%s)"
+#~ msgstr "Nelze najít widget(%s)"
+
+#~ msgid "Invalid marging value (%s)"
+#~ msgstr "Nesprávná hodnota okraje (%s)"
+
+#~ msgid "This object is not a toolbutton item!"
+#~ msgstr "Tento objekt není tlačítko nástrojové lišty!"
+
+#~ msgid "No value to insert"
+#~ msgstr "Žádná hodnota pro vložení"
+
+#~ msgid "Invalid index(%s)"
+#~ msgstr "Neplatný index(%s)"
+
+#~ msgid "No index specified"
+#~ msgstr "Nebyl určen index"
+
+#~ msgid "index %u out of range"
+#~ msgstr "index %u mimo rozsah"
+
+#~ msgid "Invalid index (%s)"
+#~ msgstr "Neplatný index (%s)"
+
+#~ msgid "Index %u out of range"
+#~ msgstr "Index %u mimo rozsah"
+
+#~ msgid "Invalid resize mode (%s): defaulting to Auto"
+#~ msgstr "Neplatný mód rozšíření (%s): nastaven výchozí Auto"
+
+#~ msgid "Invalid margin value (%s)"
+#~ msgstr "Nesprávná margin hodnota (%s)"
+
+#~ msgid "Invalid spacing value (%s)"
+#~ msgstr "Nesprávná spacing hodnota (%s)"
+
+#~ msgid "Invalid stretch value (%s)"
+#~ msgstr "Nesprávná stretch hodnota (%s)"
+
+#~ msgid "Invalid from_row parameter (%s)"
+#~ msgstr "Nesprávný from_row parametr (%s)"
+
+#~ msgid "Invalid to_row parameter (%s)"
+#~ msgstr "Nesprávný to_row parametr (%s)"
+
+#~ msgid "Invalid from_column parameter (%s)"
+#~ msgstr "Nesprávný from_column parametr (%s)"
+
+#~ msgid "Invalid to_column parameter (%s)"
+#~ msgstr "Nesprávný to_column parametr (%s)"
+
+#~ msgid "Invalid parameters"
+#~ msgstr "Neplatné parametry"
+
+#~ msgid "Invalid XCor or YCor range:[min=0] [max=99]"
+#~ msgstr "Neplatný XCor nebo YCor rozsah:[min=0] [max=99]"
+
+#~ msgid "$begin() function MUST take 1 parmeter."
+#~ msgstr "$begin() funkce MUSÍ brát 1 parametr."
+
+#~ msgid "Can't find the widget/pixmap (%s)"
+#~ msgstr "Nelze najít widget/pixmapu (%s)"
+
+#~ msgid "Widget or Pixmap required (%s)"
+#~ msgstr "Je třeba widget nebo pixmapa (%s)"
+
+#~ msgid "Invalid bgMode: valid values are Transparent and Opaque"
+#~ msgstr "Neplatný bgMode: platné hodnoty jsou Transparent a Opaque"
+
+#~ msgid "Can't find the widget object to remove (%s)"
+#~ msgstr "Nelze najít widget objekt pro odebrání (%s)"
+
+#~ msgid "Can't remove a non-widget object"
+#~ msgstr "Nelze odebrat ne-widget objekt"
+
+#~ msgid "Can't find the widget (%s)"
+#~ msgstr "Nelze najít widget (%s)"
+
+#~ msgid "Widget type object required"
+#~ msgstr "Je potřeba typ objektu widget"
+
+#~ msgid "Invalid zoom value (%s)"
+#~ msgstr "Nesprávná hodnota přiblížení (%s)"
+
+#~ msgid "Invalid depth value (%s)"
+#~ msgstr "Nesprávná hodnota hloubky (%s)"
+
+#~ msgid "Invalid value (%s)"
+#~ msgstr "Nesprávná hodnota (%s)"
+
+#~ msgid "Invalid paragraph value (%s)"
+#~ msgstr "Nesprávná hodnota odstavce (%s)"
+
+#~ msgid " I can't find the specified file."
+#~ msgstr " Nelze nalézt zadaný soubor."
+
+#~ msgid " I cannot read the file."
+#~ msgstr " Nelze číst tento soubor."
+
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "Nelze najít objekt pro přidání (%s)"
+
+#~ msgid "Class %s is undefined"
+#~ msgstr "Třída %s je nedefinovaná"
+
+#~ msgid "The source object '%s' is not existing"
+#~ msgstr "Zdrojový objekt '%s' neexistuje"
+
+#~ msgid "The target object '%s' is not existing"
+#~ msgstr "Cílový objekt '%s' neexistuje"
+
+#~ msgid "No signal '%s' to disconnect"
+#~ msgstr "Žádný signál '%s' pro odpojení"
+
+#~ msgid "No destination specified"
+#~ msgstr "Nebyl určen cíl"
+
+#~ msgid "Can't find the destination widget/pixmap (%s)"
+#~ msgstr "Nelze najít cílový widget/pixmapu (%s)"
+
+#~ msgid "No source specified"
+#~ msgstr "Nebyl určen zdroj"
+
+#~ msgid "Can't find the source widget/pixmap (%s)"
+#~ msgstr "Nelze najít zrojový widget/pixmapu (%s)"
+
+#~ msgid "Invalid x parameter (%s)"
+#~ msgstr "Neplatný x parametr (%s)"
+
+#~ msgid "Invalid y parameter (%s)"
+#~ msgstr "Neplatný y parametr (%s)"
+
+#~ msgid "Can't find the listviewitem object to add (%s)"
+#~ msgstr "Nelze najít objekt položku seznamu pro přidání (%s)"
+
+#~ msgid "Invalid column (%s)"
+#~ msgstr "Neplatný sloupec (%s)"
+
+#~ msgid "Invalid margin parameter"
+#~ msgstr "Neplatný mezní parametr"
+
+#~ msgid "Unknown alignment: %s"
+#~ msgstr "Neznámé zarovnání: %s"
+
+#~ msgid "Unknown frame / shadow style: %s"
+#~ msgstr "Neznámý styl rámu / stínu: %s"
+
+#~ msgid "Hey ! You wanna know my echo mode or what ?"
+#~ msgstr "Hej ! Chceš znát můj echo mód nebo co ?"
+
+#~ msgid "Unknown echo mode"
+#~ msgstr "Neznámý echo mód"
+
+#~ msgid "No toolbar to add separator."
+#~ msgstr "Žádná lišta pro pro přidání oddělovače."
+
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "Nelze najít objekt pro přidání (%s)"
+
+#~ msgid "Invalid object."
+#~ msgstr "Neplatný objekt."
+
+#~ msgid "Can't setStretchableWidget a non-widget object."
+#~ msgstr "Nelze nastavit StretchableWidget na ne-widget objekt."
+
+#~ msgid "Can't find the popupmenu object to add (%s)"
+#~ msgstr "Nelze najít popupmenu objekt pro přidání (%s)"
+
+#~ msgid "Doesn't a popupmenu object"
+#~ msgstr "Není popupmenu objekt"
+
+#~ msgid "Can't find the widget object (%s)"
+#~ msgstr "Nelze najít widget objekt (%s)"
+
+#~ msgid "Invalid columns value (%s)"
+#~ msgstr "Nesprávná hodnota sloupců (%s)"
+
+#~ msgid "Invalid size value (%s)"
+#~ msgstr "Nesprávná hodnota velikosti (%s)"
+
+#~ msgid "Invalid icon identifier"
+#~ msgstr "Neplatný indentifikátor ikony"
+
+#~ msgid ""
+#~ "Can't set the current avatar to '%s': failed to start the http transfer"
+#~ msgstr ""
+#~ "Nelze nastavit současný avatar na '%s': selhalo spuštění http přenosu"
+
+#~ msgid "Can't set the current avatar to '%s': can't load the image"
+#~ msgstr "Nelze nastavit současný avatar na '%s': nelze načíst obrázek"
+
+#~ msgid "No environment variable name given"
+#~ msgstr "Nebylo zadáno jméno proměnné"
+
+#~ msgid "Can't find the window with id '%s'"
+#~ msgstr "Nelze nalézt okno s id '%s'"
+
+#~ msgid "The specified window (%s) is not a channel"
+#~ msgstr "Zadané okno (%s) není kanál"
+
+#~ msgid "No button name specified!"
+#~ msgstr "Nebyl určen název tlačítka!"
+
+#~ msgid ""
+#~ "The action \"%1\" is already defined as core action: choosing an "
+#~ "alternate name"
+#~ msgstr ""
+#~ "Akce \"%1\" je již definována jako core akce: vyberte si náhradní název"
+
+#~ msgid "No separator name specified"
+#~ msgstr "Nebyl určen název oddělovače"
+
+#~ msgid "No toolbar id specified"
+#~ msgstr "Nebylo určeno id lišty"
+
+#~ msgid "The action \"%s\" doesn't exist"
+#~ msgstr "Akce \"%s\" neexistuje"
+
+#~ msgid "Invalid IRC context id '%s'"
+#~ msgstr "Neplatný IRC kontext id '%s'"
+
+#, fuzzy
+#~ msgid "Background not found %s "
+#~ msgstr "Pozadí nenalezeno %Q "
+
+#~ msgid "Mask %s is already used to identify user %s"
+#~ msgstr "Maska %s je již použita u uživatele %s"
+
+#~ msgid "User not found (%s)"
+#~ msgstr "Uživatel nenalezen (%s)"
+
+#~ msgid "User %s not found"
+#~ msgstr "Uživatel %s nenalezen"
+
+#~ msgid "Mask %s already used to identify user %s"
+#~ msgstr "Maska %s je již použita u uživatele %s"
+
+#~ msgid "Mask %s not found"
+#~ msgstr "Maska %s nenalezena"
+
+#~ msgid "Sound file '%s' not found"
+#~ msgstr "Zvukový soubor '%s' nenalezen"
+
+#~ msgid "Unable to play sound '%s'"
+#~ msgstr "Nelze přehrát zvuk '%s'"
+
+#~ msgid "The specified name is empty"
+#~ msgstr "Zadané jméno je prázdné"
+
+#~ msgid "The specified visible name is empty"
+#~ msgstr "Určený viditelný název je prázdný"
+
+#~ msgid "The specified description is empty"
+#~ msgstr "Určený popis je prázdný"
+
+#~ msgid "The specified KVIrc version \"%s\" is not a valid version string"
+#~ msgstr "Zadaná verze KVIrc \"%s\" má neplatný řetězec verze"
+
+#~ msgid ""
+#~ "This KVIrc executable is too old to run this addon (minimum version "
+#~ "required is %s)"
+#~ msgstr ""
+#~ "Tato binárka KVIrc je příliš stará pro běh tohoto rozšíření (minimální "
+#~ "potřebná verze je %s)"
+
+#~ msgid "Destination file exists: no copy made"
+#~ msgstr "Cílový soubor existuje: kopie nevytvořena"
+
+#~ msgid "Failed to copy %s to %s"
+#~ msgstr "Selhalo kopírování %s do %s"
+
+#~ msgid "Failed to write to file %s"
+#~ msgstr "Selhal zápis do souboru %s"
+
+#~ msgid "Failed to rename %s to %s"
+#~ msgstr "Selhalo přejmenování %s na %s"
+
+#~ msgid "Failed to make the directory %s"
+#~ msgstr "Selhalo vytvoření adresáře %s"
+
+#~ msgid "Failed to remove the file %s"
+#~ msgstr "Selhalo smazání souboru %s"
+
+#~ msgid "Failed to remove the directory %s"
+#~ msgstr "Selhalo smazání adresáře %s"
+
+#~ msgid "The specified directory does not exist '%s'"
+#~ msgstr "Určený adresář neexistuje '%s'"
+
+#~ msgid "Can't open the file \"%s\" for reading"
+#~ msgstr "Nelze otevřít soubor \"%s\" pro čtení"
+
+#~ msgid "Read error for file %s"
+#~ msgstr "Chyba při čtení souboru %s"
+
+#~ msgid ""
+#~ "Read error for file %s (have been unable to read the requested size in "
+#~ "1000 retries)"
+#~ msgstr ""
+#~ "Chyba při čtení souboru %s (nešel přečíst v požadované velikosti během "
+#~ "1000 pokusů)"
+
+#~ msgid "No such options page class name"
+#~ msgstr "Neznámý název pro volbu"
+
+#, fuzzy
+#~ msgid "%Q is not an integer"
+#~ msgstr "Popup %Q není definován"
+
+#~ msgid "Window with caption '%s' not found, returning 0"
+#~ msgstr "Okno s titulkem '%s' nenalezeno, vrací 0"
+
+#~ msgid "The specified UNIX time is not valid (%s)"
+#~ msgstr "Zadaný UNIXový čas je neplatný (%s)"
+
+#~ msgid "The specified time format is not valid (%s)"
+#~ msgstr "Zadaný formát času je neplatný (%s)"
+
+#~ msgid "No option named '%s'"
+#~ msgstr "Žádná možnost '%s'"
+
+#~ msgid "No option name specified"
+#~ msgstr "Nebyl určen název možnosti"
+
+#~ msgid "No link text specified"
+#~ msgstr "Nebyl určen text odkazu"
+
+#~ msgid "$sw should be called only in aliases"
+#~ msgstr "$sw může být voláno jen v aliasech"
+
+#~ msgid "Broken prologue code for menu '%s', error detail follows"
+#~ msgstr "Poškozený kód úvodu v menu '%s', následují detaily chyb"
+
+#~ msgid "Broken expression for menu item '%Q', ignoring"
+#~ msgstr "Poškozený výraz pro položku menu '%Q', ignoruji"
+
+#~ msgid "Can't find the external popup '%Q', ignoring"
+#~ msgstr "Nelze nalézt externí popup '%Q', ignoruji"
+
+#~ msgid "Broken epilogue code for menu '%s', error details follow"
+#~ msgstr "Poškozený kód závěru pro menu '%s', následují detaily chyb"
+
+#~ msgid "Function name expected"
+#~ msgstr "Chybí jméno funkce"
+
+#~ msgid "No catalogue %s for the current language found"
+#~ msgstr "Žádný katalog %s pro zvolený jazyk nebyl nalezen"
+
+#~ msgid "The catalogue %s was not loaded"
+#~ msgstr "Katalog %s nebyl načten"
+
+#~ msgid "Invalid icon specification '%s', using default"
+#~ msgstr "Neplatné určení ikony '%s', použita výchozí"
+
+#~ msgid "Missing icon number after the 'i' switch"
+#~ msgstr "Chybí číslo ikony za 'i' přepínačem"
+
+#~ msgid "Missing window ID after the 'w' switch"
+#~ msgstr "Chybí ID okna za 'w' přepínačem"
+
+#~ msgid "No targets specified"
+#~ msgstr "Neurčeny žádné cíle"
+
+#~ msgid "Missing new nickname"
+#~ msgstr "Chybí nová přezdívka"
+
+#~ msgid "Missing target"
+#~ msgstr "Chybí cíl"
+
+#~ msgid "Missing target channel"
+#~ msgstr "Chybí cílový kanál"
+
+#~ msgid "No such object (%s)"
+#~ msgstr "Žádný objekt (%s)"
+
+#~ msgid "Invalid screen coordinates"
+#~ msgstr "Neplatné koordináty obrazovky"
+
+#~ msgid "Invalid syntax for the screen coordinates"
+#~ msgstr "Neplatná syntaxe koordinátů obrazovky"
+
+#~ msgid "Invalid timeout delay '%s'"
+#~ msgstr "Neplatné trvání prodlevy '%s'"
+
+#~ msgid "Empty command block for timer '%s', timer not started"
+#~ msgstr "Prázdný příkazový blok pro časovač '%s', časovač nespuštěn"
+
+#~ msgid ""
+#~ "Internal error: Unable to add timer %s, insufficient system resources"
+#~ msgstr ""
+#~ "Interní chyba: Nelze přidat časovač %s, nedostatek systémových zdrojů"
+
+#~ msgid "No such timer (%s)"
+#~ msgstr "Žádný časovač (%s)"
+
+#~ msgid "No such event (%s)"
+#~ msgstr "Žádná událost (%s)"
+
+#~ msgid "No handler '%s' for raw numeric event '%d'"
+#~ msgstr "Není handler '%s' pro číselnou raw událost '%d'"
+
+#~ msgid "No handler '%s' for event '%s'"
+#~ msgstr "Není handler '%s' pro událost '%s'"
+
+#~ msgid "Failed to execute command '%s'"
+#~ msgstr "Nelze spustit příkaz '%s'"
+
+#~ msgid "Invalid IRC url (%s)"
+#~ msgstr "Neplatné IRC url (%s)"
+
+#~ msgid "The commandline for this url type seems to be broken (%s)"
+#~ msgstr "Příkazový řádek pro tento typ url vypadá jako poškozený (%s)"
+
+#~ msgid "No commandline specified for this type of url (%s)"
+#~ msgstr "Není určena příkazová řádka pro tento typ url (%s)"
+
+#~ msgid "Invalid pitch (%s): using default"
+#~ msgstr "Neplatná výška (%s): použita výchozí"
+
+#~ msgid "Invalid duration (%s): using default"
+#~ msgstr "Neplatná doba trvání (%s): použita výchozí"
+
+#~ msgid "Can't find the icon '%s'"
+#~ msgstr "Nelze nalézt ikonu '%s'"
+
+#~ msgid "Window button '%s' not found"
+#~ msgstr "Tlačítko okna '%s' nenalezeno"
+
+#~ msgid "Can't rebind the command sequence: missing window identifier"
+#~ msgstr "Nelze znovu vázat sekvenci příkazů: chybí identifikátor okna"
+
+#~ msgid "Can't rebind the command sequence: window with id %s not found"
+#~ msgstr "Nelze znovu vázat sekvenci příkazu: okno s id %s nenalezeno"
+
+#~ msgid "Unmatched parenthesis in expression body: ignoring trailing garbage"
+#~ msgstr "Nesouhlasící závorky v těle výrazu: ignoruji vlečený odpad"
+
+#~ msgid "Error triggered from timer callback handler %c'%s'"
+#~ msgstr "Chyba vyvolaná ze zpětného volání handleru časovače %c'%s'"
+
+#~ msgid "Timer callback handler '%s' is broken: killing"
+#~ msgstr "Časovač handleru zpětného volání '%s' je poškozen: ukončuji"
+
+#, fuzzy
+#~ msgid "Initializing scripting engine..."
+#~ msgstr "Neplatný šifrovací nástroj"
+
+#~ msgid "Loading actions..."
+#~ msgstr "Načítají se akce..."
+
+#~ msgid "Loading icons..."
+#~ msgstr "Načítaj se ikony..."
+
+#~ msgid "Loading window configuration database..."
+#~ msgstr "Načítá se databáze nastavení oken..."
+
+#~ msgid "Loading server & proxy database..."
+#~ msgstr "Načítá se server & proxy databáze..."
+
+#~ msgid "Loading event handlers..."
+#~ msgstr "Načítají se handlery událostí..."
+
+#~ msgid "Loading raw event handlers..."
+#~ msgstr "Načítají se handlery raw událostí..."
+
+#~ msgid "Loading popups..."
+#~ msgstr "Načítají se popupy..."
+
+#~ msgid "Loading toolbars..."
+#~ msgstr "Načítají se nástrojové lišty..."
+
+#~ msgid "Loading text icon associations..."
+#~ msgstr "Načítají se asociace textových ikon..."
+
+#~ msgid "Loading recent entries..."
+#~ msgstr "Načítají se poslední záznamy..."
+
+#~ msgid "Loading media types..."
+#~ msgstr "Načítají se typy médií..."
+
+#~ msgid "Loading registered users..."
+#~ msgstr "Načítají se registrovaní uživatelé..."
+
+#~ msgid "Loading registered channels..."
+#~ msgstr "Načítají se registrované kanály..."
+
+#~ msgid "Loading file trader configuration..."
+#~ msgstr "Načítá se konfigurace správy souborů..."
+
+#~ msgid "Loading nick serv service configuration..."
+#~ msgstr "Načítá se nastavení nickserv služby..."
+
+#~ msgid "Loading history entries..."
+#~ msgstr "Načítají se záznamy historie..."
+
+#~ msgid "Loading avatar cache..."
+#~ msgstr "Načítá se avatar cache..."
+
+#~ msgid "Starting up the engine..."
+#~ msgstr "Spouští se engine..."
+
+#~ msgid "Have fun! :)"
+#~ msgstr "Hodně zábavy! :)"
+
+#~ msgid "Show Ban Editor"
+#~ msgstr "Zobrazit Ban editor"
+
+#~ msgid "Show Crypto Controller"
+#~ msgstr "Zobrazit Šifrovací nástroj"
+
+#~ msgid "Toggle Notify List"
+#~ msgstr "Přepnout Seznam Oznamování"
+
+#~ msgid "Initiating startup sequence..."
+#~ msgstr "Inicializuje se spouštěcí sekvence..."
+
+#~ msgid "&New Alias"
+#~ msgstr "&Nový Alias"
+
+#, fuzzy
+#~ msgid "The specified window does not exist"
+#~ msgstr "Zadaný zdrojový objekt neexistuje"
+
+#~ msgid "The -t switch expects a timeout in seconds"
+#~ msgstr "Přepínači -t chybí prodleva v sekundách"
+
+#~ msgid "No url specified"
+#~ msgstr "Nebylo určeno url"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %s"
+#~ msgstr "Selhalo spuštení procesu"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %Q"
+#~ msgstr "Selhalo spuštení procesu"
+
+#~ msgid "Input buffer: %d bytes"
+#~ msgstr "Vstupní buffer: %d bajtů"
+
+#~ msgid "Output buffer: %d bytes"
+#~ msgstr "Výstupní buffer: %d bajtů"
+
+#~ msgid "Volume: %i"
+#~ msgstr "Hlasitost: %i"
+
+#~ msgid "<unknown size>"
+#~ msgstr "<neznámá velikost>"
+
+#~ msgid "\"any\""
+#~ msgstr "\"libovolný\""
+
+#, fuzzy
+#~ msgid "Unable to get address of interface %Q"
+#~ msgstr "Naslouchat na adrese/rozhraní:"
+
+#~ msgid "No suitable interfaces to listen on, use -i"
+#~ msgstr "Nenalezeny interface pro naslouchání, použijte -i"
+
+#~ msgid "Missing target nickname"
+#~ msgstr "Chybí cílová přezdívka"
+
+#~ msgid "-c requires -i and -p"
+#~ msgstr "-c vyžaduje -i a -p"
+
+#~ msgid "Missing filename"
+#~ msgstr "Chybí jméno souboru"
+
+#, fuzzy
+#~ msgid "The file size is not an positive number"
+#~ msgstr "Zadaný parametr není celé číslo"
+
+#~ msgid "DCC VOICE support not enabled at compilation time"
+#~ msgstr "DCC VOICE podpora nebyla povolena při kompilaci"
+
+#, fuzzy
+#~ msgid "Invalid sample rate '%s', defaulting to 8000"
+#~ msgstr "Neplatný mód rozšíření (%s): nastaven výchozí Auto"
+
+#, fuzzy
+#~ msgid "The current window has no associated DCC session"
+#~ msgstr "Toto okno nemá asociován IRC kontext"
+
+#, fuzzy
+#~ msgid "The first parameter must be an unsigned number"
+#~ msgstr "Zadaný parametr není celé číslo"
+
+#~ msgid "No filename specified"
+#~ msgstr "Nebylo určeno jméno souboru"
+
+#~ msgid "The file '%s' is not readable"
+#~ msgstr "Soubor '%s' je nečitelný"
+
+#~ msgid "Invalid timeout, ignoring"
+#~ msgstr "Neplatná prodleva, ignoruji"
+
+#, fuzzy
+#~ msgid "Invalid visible name: using default"
+#~ msgstr "Neplatná výška: použita výchozí"
+
+#, fuzzy
+#~ msgid "Ops..failed to add the sharedfile..."
+#~ msgstr "Selhalo načtení zvoleného obrázku"
+
+#, fuzzy
+#~ msgid "The specified file size is invalid"
+#~ msgstr "Zadaný UNIXový čas je neplatný (%s)"
+
+#~ msgid "No sharedfile with visible name '%s' and user mask '%s'"
+#~ msgstr ""
+#~ "Žádný sdílený soubor s viditelným názvem '%s' a maskou uživatele '%s'"
+
+#~ msgid "[Parser warning in '%s']: %s"
+#~ msgstr "[Parser varování v '%s']: %s"
+
+#~ msgid "defpopup: internal error"
+#~ msgstr "defpopup: interní chyba"
+
+#~ msgid "Loading options..."
+#~ msgstr "Načítají se možnosti..."
+
+#~ msgid "Windows XP style"
+#~ msgstr "Styl Windows XP"
+
+#~ msgid "Transport"
+#~ msgstr "Transport"
+
+#~ msgid "User Messages"
+#~ msgstr "Uživatelské zprávy"
+
+#~ msgid " I can't find the specified file %s."
+#~ msgstr " Nelze nalézt zadaný soubor %s."
+
+#~ msgid "-e mode change change"
+#~ msgstr "-e změna módu"
+
+#~ msgid ""
+#~ "Can't set the current avatar to '%s' (failed to start the http transfer): "
+#~ "no message sent"
+#~ msgstr ""
+#~ "Nelze nastavit současný avatar pro '%s' (selhalo spuštění http přenosu): "
+#~ "nebyla poslána zpráva"
+
+#~ msgid ""
+#~ "Can't set the current avatar to '%s' (can't load the image): no message "
+#~ "sent"
+#~ msgstr ""
+#~ "Nelze nastavit současný avatar pro '%s' (nelze načíst obrázek): zpráva "
+#~ "nebyla poslána"
+
+#~ msgid "Avatars"
+#~ msgstr "Avatary"
+
+#~ msgid "minchia nullo !"
+#~ msgstr "neplatný objekt !"
+
+#~ msgid "Defaults"
+#~ msgstr "Výchozí"
+
+#~ msgid "Folders"
+#~ msgstr "Složky"
+
+#~ msgid "Message Format"
+#~ msgstr "Formát zprávy"
+
+#~ msgid "Pixmapqqqqqq objects required !"
+#~ msgstr "Je potřeba pixmapový objekt !"
+
+#~ msgid "Parser"
+#~ msgstr "Parser"
+
+#~ msgid "No socket text specified"
+#~ msgstr "Neurčen text soketu"
diff --git a/po/kvirc/kvirc_de.po b/po/kvirc/kvirc_de.po
new file mode 100644
index 00000000..82635f17
--- /dev/null
+++ b/po/kvirc/kvirc_de.po
@@ -0,0 +1,12887 @@
+# translation of kvirc_de.po to german
+# translation of kvirc_de.po to
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Christoph Thielecke <[email protected]>, 2004, 2005.
+# Christoph Thielecke <[email protected]>, 2005.
+# Mihai Moldovan <[email protected]>, 2006.
+# Markus Rennings <[email protected]>, 2007.
+# Mihai Moldovan <[email protected]>, 2007.
+# Markus Rennings <[email protected]>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: kvirc_de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2008-02-26 02:34+0100\n"
+"Last-Translator: Markus Rennings <[email protected]>\n"
+"Language-Team: german <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:696
+msgid "&Cascade Windows"
+msgstr "Fenster &staffeln"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:697
+msgid "Cascade &Maximized"
+msgstr "Maximiert &staffeln"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:700
+msgid "&Tile Windows"
+msgstr "Fenster &teilen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:703
+msgid "&Auto Tile"
+msgstr "&Automatisch teilen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:708
+msgid "Anodine's Full Grid"
+msgstr "Anodines volles Gitter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:710
+msgid "Pragma's Horizontal 4-Grid"
+msgstr "Pragmas horizontales 4er-Gitter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:712
+msgid "Pragma's Vertical 4-Grid"
+msgstr "Pragmas vertikales 4er-Gitter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:714
+msgid "Pragma's Horizontal 6-Grid"
+msgstr "Pragmas horizontales 6er-Gitter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:716
+msgid "Pragma's Vertical 6-Grid"
+msgstr "Pragmas vertikales 6er-Gitter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:718
+msgid "Pragma's Horizontal 9-Grid"
+msgstr "Pragmas horizontales 9er-Gitter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:720
+msgid "Pragma's Vertical 9-Grid"
+msgstr "Pragmas vertikales 9er-Gitter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:726
+msgid "Tile Met&hod"
+msgstr "Teilen-Met&hode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:729
+msgid "Expand &Vertically"
+msgstr "&Vertikal ausdehnen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:730
+msgid "Expand &Horizontally"
+msgstr "&Horizontal ausdehnen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:733
+msgid "Mi&nimize All"
+msgstr "Alle(s) mi&nimieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_actiondrawer.cpp:64
+msgid "Script"
+msgstr "Skript"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:581
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:634
+msgid "Unknown"
+msgstr "Unbekannt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:128
+msgid "No topic message has been received from the server yet"
+msgstr "Bisher wurde Keine Titelnachricht vom Server empfangen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:495
+msgid "Channel topic:"
+msgstr "Kanalthema:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:513
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:201
+msgid "Set by"
+msgstr "Gesetzt von"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:519
+msgid "Set on"
+msgstr "Gesetzt am"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:525
+msgid "Double-click to edit..."
+msgstr "Doppelklick zum Bearbeiten..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:530
+msgid "No topic is set"
+msgstr "Kein Thema gesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:533
+msgid "Double-click to set..."
+msgstr "Doppelklick zum Setzen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:587
+msgid "History"
+msgstr "Verlauf"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:596
+msgid "Commit Changes"
+msgstr "Änderungen festlegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:602
+msgid "Discard Changes"
+msgstr "Änderungen verwerfen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:627
+msgid "Copy to clipboard"
+msgstr "In Zwischenablage kopieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:988
+msgid "There are active connections, are you sure you wish to "
+msgstr "Es gibt aktive Verbindungen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:989
+msgid "quit KVIrc?"
+msgstr "Sind Sie sich wirklich sicher, dass Sie KVIrc beenden wollen?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:587
+msgid "Confirmation - KVIrc"
+msgstr "Bestätigung - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:557
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:590
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&Yes"
+msgstr "&Ja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:556
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:589
+msgid "&Always"
+msgstr "&Immer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:591
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&No"
+msgstr "&Nein"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1090
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1106
+msgid "Show %1"
+msgstr "%1 anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1134
+msgid "Customize..."
+msgstr "Anpassen ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:149
+#, c-format
+msgid "The file %s already exists.<br>Do you wish to overwrite it?"
+msgstr "Die Datei %s existiert bereits.<br>Soll sie überschrieben werden?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:150
+msgid "File Exists - KVIrc"
+msgstr "Datei existiert bereits - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:132
+msgid "Channel mode"
+msgstr "Kanalmodus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:162
+msgid "Split View"
+msgstr "Getrennte Anzeige"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:207
+msgid "User List"
+msgstr "Benutzerliste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:167
+msgid "Ban Editor"
+msgstr "Bann-Editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:172
+msgid "Ban Exception Editor"
+msgstr "Bannausnahmen-Editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:179
+msgid "Invite Exception Editor"
+msgstr "Einladungausnahmen-Editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:184
+msgid "Mode Editor"
+msgstr "Modus-Editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "said something recently"
+msgstr "sagte kürzlich etwas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "is talking"
+msgstr "redet gerade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:684
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:699
+msgid "and"
+msgstr "und"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "were talking recently"
+msgstr "sagten vor kurzem etwas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "are talking"
+msgstr "reden gerade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:707
+msgid "and other %1 users"
+msgstr "und %1 andere Benutzer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:738
+msgid "Dead channel"
+msgstr "Toter Kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:753
+msgid "operator"
+msgstr "Operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:754
+msgid "operators"
+msgstr "Operatoren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active user"
+msgstr "Aktiver Benutzer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active users"
+msgstr "Aktive Benutzer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot user"
+msgstr "Gefragter Benutzer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot users"
+msgstr "Gefragte Benutzer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owner"
+msgstr "Kanaleigentümer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owners"
+msgstr "Kanaleigentümer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrator"
+msgstr "Kanaladministrator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrators"
+msgstr "Kanaladministratoren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operator"
+msgstr "Halb-Operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operators"
+msgstr "Halb-Operatoren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced user"
+msgstr "Benutzer mit Voice-Status"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced users"
+msgstr "Benutzer mit Voice-Status"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operator"
+msgstr "User-Operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operators"
+msgstr "User-Operatoren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "user total"
+msgstr "Benutzer gesamt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "users total"
+msgstr "Benutzer gesamt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:931
+msgid "No activity"
+msgstr "Keine Aktivität"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:932
+msgid "Minimal activity"
+msgstr "Minimale Aktivität"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:933
+msgid "Very low activity"
+msgstr "Sehr niedrige Aktivität"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Might be low activity"
+msgstr "Möglicherweise niedrige Aktivität"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Low activity"
+msgstr "Niedrige Aktivität"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Might be medium activity"
+msgstr "Möglicherweise mittlere Aktivität"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Medium activity"
+msgstr "Mittlere Aktivität"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "Might be high activity"
+msgstr "Möglicherweise hohe Aktivität"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "High activity"
+msgstr "Hohe Aktivität"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Might be very high activity"
+msgstr "Möglicherweise sehr hohe Aktivität"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Very high activity"
+msgstr "Sehr hohe Aktivität"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Might be flooded with messages"
+msgstr "Möglicherweise überflutet mit Nachrichten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Flooded with messages"
+msgstr "Überflutet mit Nachrichten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:946
+msgid "human"
+msgstr "menschlich"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:966
+msgid "[Dead channel]"
+msgstr "[Toter Kanal]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1020
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1122
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:459
+msgid " on "
+msgstr " auf "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1086
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %Q, no "
+"data sent to the server"
+msgstr ""
+"Die Verschlüsselungsroutine war nicht in der Lage, die aktuelle Nachricht (%"
+"Q) zu verschlüsseln: %Q, keine Daten an den Server gesendet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1403
+msgid "Sent part request, waiting for reply..."
+msgstr ""
+"Anfrage auf Verlassen des Kanals wurde gesendet, es wird auf eine Antwort "
+"gewartet ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:610
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:647
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:293
+msgid "(Unknown)"
+msgstr "(Unbekannt)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1484
+msgid "<b>Channel mode:</b>"
+msgstr "<b>Kanalmodus:</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1498
+#, c-format
+msgid "<br><b>Key:</b> %s"
+msgstr "<br><b>Schlüssel:</b> %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1505
+#, c-format
+msgid "<br><b>Limit:</b> %s"
+msgstr "<br><b>Grenze:</b> %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1590
+#, c-format
+msgid "Channel synchronized in %d.%d seconds"
+msgstr "Kanal in %d.%d Sekunden synchronisiert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:139
+msgid "Choose an Image File - KVIrc"
+msgstr "Bilddatei auswählen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:284
+#, c-format
+msgid "Unloadable: %s"
+msgstr "Nicht ladbar: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:260
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:90
+msgid "&Browse..."
+msgstr "&Auswählen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:364
+msgid "Choose a File - KVIrc"
+msgstr "Datei auswählen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:382
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:593
+msgid "Choose a Directory - KVIrc"
+msgstr "Verzeichnis auswählen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:764
+msgid "A&dd"
+msgstr "&Hinzufügen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:407
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:766
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:230
+msgid "Re&move"
+msgstr "&Löschen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:602
+msgid "Sample Text"
+msgstr "Beispielstext"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:635
+msgid "Foreground"
+msgstr "Vordergrund"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:639
+msgid "Transparent"
+msgstr "Transparent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:652
+msgid "Background"
+msgstr "Hintergrund"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:715
+msgid "Play"
+msgstr "Abspielen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:748
+msgid "Channel name"
+msgstr "Kanalname"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:749
+msgid "Channel password"
+msgstr "Kanalpasswort"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:177
+msgid "Toolbars"
+msgstr "Werkzeugleisten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:84
+msgid "Orientation"
+msgstr "Ausrichtung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:86
+msgid "Top"
+msgstr "Oben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:87
+msgid "Left"
+msgstr "Links"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:88
+msgid "Right"
+msgstr "Rechts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:89
+msgid "Bottom"
+msgstr "Unten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:91
+msgid "Detached"
+msgstr "Abtrennen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:92
+msgid "Flat"
+msgstr "Flach"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:94
+msgid "Icon Size"
+msgstr "Symbolgröße"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:96
+msgid "Small (22x22)"
+msgstr "Klein (22x22)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:97
+msgid "Large (32x32)"
+msgstr "Gross (32x32)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1333
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:463
+msgid "&Apply"
+msgstr "An&wenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:830
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:113
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:251
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:319
+msgid "Close"
+msgstr "Schließen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:102
+msgid "Channel Modes"
+msgstr "Kanalmodus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_debugwindow.cpp:47
+msgid "Debug Messages"
+msgstr "Debug Meldungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:72
+msgid "CTCP Page - KVIrc"
+msgstr "CTCP-Page - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:109
+msgid "You have been paged by"
+msgstr "Sie wurden gepaget von"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:75
+msgid "Mask editor - KVirc"
+msgstr "Maskeneditor - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:79
+msgid "New mask must match an *!*@* expression"
+msgstr "Die neue Maske muss auf einen *!*@*-Ausdruck passen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Ok"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:488
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:442
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:401
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:157
+msgid "Active Bans"
+msgstr "Aktive Banns"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:161
+msgid "Active Invite Exceptions"
+msgstr "Aktive Invite-Ausnahmen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:165
+msgid "Active Ban Exceptions"
+msgstr "Aktive Bann-Ausnahmen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:184
+msgid "Filter:"
+msgstr "Filter:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:188
+msgid "Use doubleclick to edit item"
+msgstr "Klicken Sie doppelt, um das Elemten zu bearbeiten ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:200
+msgid "Mask"
+msgstr "Maske"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:202
+msgid "Set at"
+msgstr "Gesetzt um"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "Add"
+msgstr "Hinzufügen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:92
+msgid "Cryptography/text transformation"
+msgstr "Verschlüsselung-/Textumwandlung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:99
+msgid "Use the crypt engine"
+msgstr "Verschlüsselungsroutine benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:120
+msgid "Enable encryption"
+msgstr "Verschlüsselung aktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:123
+msgid "Encrypt key:"
+msgstr "Verschlüsselungsschlüssel:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:141
+msgid "Hex"
+msgstr "Hexadezimal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:132
+msgid "Enable decryption"
+msgstr "Entschlüsselung aktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:135
+msgid "Decrypt key:"
+msgstr "Entschlüsselungsschlüssel:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_htmldialog.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:175
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:932
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1124
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:211
+msgid ""
+"If you dont want to encrypt a particular text line then just start it with "
+"the CTRL+P prefix"
+msgstr ""
+"Wenn eine Textzeile nicht verschlüsselt werden soll, lassen Sie diese mit "
+"Strg + P beginnen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:263
+msgid "Sorry, no crypt engines available"
+msgstr "Tut mir leid, es sind keine Verschlüsselungsroutinen verfügbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:283
+msgid "Crypt: Can't create an engine instance: crypting disabled"
+msgstr ""
+"Verschlüsselung: Erstellung des Vorgangs fehlgeschlagen: Verschlüsselung "
+"wurde ausgeschaltet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:294
+#, c-format
+msgid "Crypt: Can't initialize the engine :%s"
+msgstr "Verschlüsselung: Die Routine kann nicht initialisiert werden: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:302
+msgid ""
+"Crypt: You have to enable encryption and/or decryption for the engine to work"
+msgstr ""
+"Verschlüsselung: Die Ver-/Entschlüsselung muss aktiviert werden, damit die "
+"Routine korrekt funktioniert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:385
+msgid "Search tools"
+msgstr "Suchwerkzeuge"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:539
+#, c-format
+msgid "### Log session terminated at %s ###"
+msgstr "### Log-Sitzung beendet am %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:713
+#, c-format
+msgid "### Log session started at %s ###"
+msgstr "### Log-Sitzung gestartet am %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:717
+msgid "### Existing data buffer:"
+msgstr "### Existierender Datenpuffer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:721
+msgid "### End of existing data buffer."
+msgstr "### Ende des existierenden Datenpuffers."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3894
+msgid "Hide Find Window"
+msgstr "Hilfefenster ausblenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3896
+msgid "Show Find Window"
+msgstr "Suchfenster anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3898
+msgid "Zoom In"
+msgstr "Hineinzoomen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3899
+msgid "Zoom Out"
+msgstr "Herauszoomen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3900
+msgid "Choose Temporary Font..."
+msgstr "Temporäre Schriftart auswählen ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3901
+msgid "Choose Temporary Background..."
+msgstr "Temporären Hintergrund auswählen ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3902
+msgid "Reset Temporary Background"
+msgstr "Temporären Hintergrund zurücksetzen ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3905
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:738
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:841
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1057
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1289
+msgid "Clear Buffer"
+msgstr "Puffer leeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3939
+msgid "Choose the background image..."
+msgstr "Hintergrund-Bilddatei auswählen ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+msgid "Invalid image"
+msgstr "Ungültiges Bild"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+msgid "Failed to load the selected image"
+msgstr "Laden des ausgewählten Bildes fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4083
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4140
+#, c-format
+msgid "Pos %d"
+msgstr "Pos. %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4156
+msgid "Not found"
+msgstr "Nicht gefunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4563
+msgid "Looking up host %Q..."
+msgstr "Es wird versucht Host %Q aufzulösen ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4926
+msgid "Double-click to open this link"
+msgstr "Doppelklicken zum Öffnen der Verknüpfung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4946
+msgid "Unable to look it up hostname: Hostname appears to be masked"
+msgstr ""
+"Auflösen des Server-Hostnamens fehlgeschlagen: Hostname sieht maskiert aus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4947
+msgid "Unable to look it up hostname: Unknown host"
+msgstr "Auflösen des Hostnamens fehlgeschlagen: Unbekannter Host"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4949
+msgid ""
+"Double-click to look up this hostname<br>Right-click to view other options"
+msgstr ""
+"Doppelklicken zum Auflösen dieses Hostnamens<br>Rechtsklicken zum Ansehen "
+"weiterer Optionen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4972
+msgid "Server appears to be a network hub<br>"
+msgstr "Server scheint ein Netzwerkhub zu sein<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4973
+msgid "Unknown server<br>"
+msgstr "Unbekannter Server<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4976
+msgid "Double-click to read the MOTD<br>Right-click to view other options"
+msgstr ""
+"Doppelklicken zum Lesen der MOTD<br>Rechtsklicken zum Ansehen weiterer "
+"Optionen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4989
+msgid "Double-click to set<br>"
+msgstr "Doppelklicken zum Setzen<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5011
+msgid "You're not an operator: You may not change channel modes"
+msgstr "Sie sind kein Operator: Sie können die Kanalmodi nicht ändern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5028
+msgid "Nothing known about %Q"
+msgstr "Es ist nichts bekannt über %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5029
+msgid "Nothing known about %Q (no connection)"
+msgstr "Es ist nichts bekannt über %Q (keine bestehende Verbindung)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5054
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>): "
+"<br><nowrap>+%Q (%u users)<hr>%Q</nowrap>"
+msgstr ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>): "
+"<br><nowrap>+%Q (%u Nutzer)<hr>%Q</nowrap>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5060
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)<hr>Double-"
+"click to join %Q<br>Right click to view other options"
+msgstr ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)"
+"<hr>Doppelklicken, um %Q zu betreten<br>Rechtsklicken zum Ansehen weiterer "
+"Optionen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5080
+msgid "<b>Double-click:</b><br>%Q"
+msgstr "<b>Doppelklicken:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5085
+msgid "<b>Middle-click:</b><br>%Q"
+msgstr "<b>Mittelklicken:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5090
+msgid "<b>Right-click:</b><br>%Q"
+msgstr "<b>Rechtsklicken:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1284
+msgid "Joined on <b>%1</b>"
+msgstr "Betreten um <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1296
+msgid "Quiet for <b>%1h %2m %3s</b>"
+msgstr "Still seit <b>%1 Stunden, %2 Minuten und %3 Sekunden</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1097
+msgid "No connection"
+msgstr "Keine Verbindung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:304
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:3
+msgid "IRC Context"
+msgstr "IRC-Kontext"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:319
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:365
+#, c-format
+msgid "Lag: %d.%d%d"
+msgstr "Latenz: %d.%d%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:393
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:379
+msgid "Lag: ?.??"
+msgstr "Latenz: ?.??"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:326
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:637
+msgid "No IRC context"
+msgstr "Kein IRC-Kontext"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:633
+msgid "Not connected"
+msgstr "Nicht verbunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:377
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1117
+msgid "away"
+msgstr "abwesend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:397
+msgid "In progress..."
+msgstr "In Bearbeitung ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:458
+msgid "Crypting"
+msgstr "Verschlüsselung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:466
+msgid "Private Text Encoding"
+msgstr "Private Textkodierung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:566
+msgid "Ops...I've accidentally lost the crypting engine..."
+msgstr ""
+"Ups ... Ich habe unglücklicherweise die Verbindung zur "
+"Verschlüsselungsroutine verloren ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:582
+msgid "List of window types available in this release of KVIrc:"
+msgstr "Liste der verfügbaren Fenstertypen in dieser Version von KVirc:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:763
+msgid "Use Default Encoding"
+msgstr "Standardkodierung benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:775
+msgid "Standard"
+msgstr "Standard"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:776
+msgid "Smart (Send Local)"
+msgstr "Intelligent (Sende in der lokalen Kodierung)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:777
+msgid "Smart (Send UTF-8)"
+msgstr "Intelligent (Sende in UTF-8)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:810
+msgid "&Undock"
+msgstr "&Loslösen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:813
+msgid "&Dock"
+msgstr "I&n Kontrollleiste einbinden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:818
+msgid "Mi&nimize"
+msgstr "M&inimieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:821
+msgid "Ma&ximize"
+msgstr "Ma&ximieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:824
+msgid "&Restore"
+msgstr "Wieder&herstellen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:837
+msgid "Text &Encoding"
+msgstr "Text&kodierung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:842
+msgid "Sa&ve Window Properties"
+msgstr "Fenstereigenschaften &speichern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:86
+msgid "Taskbar"
+msgstr "Fensterleiste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:91
+msgid "taskbar"
+msgstr "Fensterleiste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1162
+msgid "Sort"
+msgstr "Sortieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1163
+msgid "Reverse Sort"
+msgstr "Umgekehrtes Sortieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1223
+msgid "Window List"
+msgstr "Fensterliste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:203
+msgid "Apply to all IRC Contexts"
+msgstr "Auf allen IRC-Kontexten anwenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:227
+msgid "Away Indicator"
+msgstr "\"Abwesend\"-Indikator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:255
+msgid "Away since"
+msgstr "Abwesend seit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:259
+msgid "Double click to leave away mode"
+msgstr "Doppelklicken zum Beenden des \"Abwesend\"-Modus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:261
+msgid "Not away"
+msgstr "Nicht abwesend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:263
+msgid "Double click to enter away mode"
+msgstr "Doppelklicken zum Aktivieren des \"Abwesend\"-Modus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:330
+#, c-format
+msgid "Last checked %d mins %d secs ago"
+msgstr "Zuletzt geprüft vor %d Minuten und %d Sekunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:332
+msgid "Lag measure not available yet"
+msgstr "Latenzmessung noch nicht verfügbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:336
+msgid "Lag meter engine disabled"
+msgstr "Latenz-Meter deaktiviert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:338
+msgid "Double click to enable it"
+msgstr "Doppelklicken zum Aktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:391
+msgid "Lag Indicator"
+msgstr "Latenzanzeiger"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:461
+msgid "Simple Clock"
+msgstr "Einfache Uhr"
+
+# Kanalsynchronisationszeit anzeigen
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:512
+msgid "Show total connection time"
+msgstr "Gesamtverbindungszeit anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:536
+msgid "Connection Timer"
+msgstr "Verbindungszeitmesser"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:560
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:87
+msgid "Separator"
+msgstr "Trenner"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:820
+msgid "Clipboard"
+msgstr "Zwischenablage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line break"
+msgstr "Zeilenumbruch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line breaks"
+msgstr "Zeilenumbrüche"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:845
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:439
+msgid "Cu&t"
+msgstr "Au&sschneiden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:847
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:445
+msgid "&Copy"
+msgstr "&Kopieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:849
+msgid "&Paste"
+msgstr "&Einfügen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:851
+msgid "Paste (Slowly)"
+msgstr "Einfügen (langsam)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:856
+msgid "Paste &File"
+msgstr "&Datei einfügen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:863
+msgid "Stop Paste"
+msgstr "Einfügen abbrechen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:865
+msgid "Clear"
+msgstr "Leeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:868
+msgid "Select All"
+msgstr "Alles Auswählen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:897
+msgid "Insert Icon"
+msgstr "Piktogramm (Icon) einfügen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1926
+msgid "%d matches: %Q"
+msgstr "%d passt auf: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1930
+msgid "No matches"
+msgstr "Keine Übereinstimmungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2657
+msgid "Show History<br>&lt;Ctrl+PageUp&gt;"
+msgstr "Verlauf anzeigen<br>&lt;Strg+Bild hoch&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2648
+msgid "Input History Disabled"
+msgstr "Eingabeverlauf deaktiviert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2370
+msgid "Show Icons Popup<br>&lt;Ctrl+I&gt;<br>See also /help texticons"
+msgstr ""
+"Piktogrammaufklappmenü anzeigen<br>&lt;Strg+l&gt;<br>Siehe auch /help "
+"texticons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2382
+msgid "User friendly commandline mode<br>See also /help commandline"
+msgstr ""
+"Benutzerfreundlicher Kommandozeilenmodus<br>Siehe auch /help commandline"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2394
+msgid "Multi-line Editor<br>&lt;Alt+Backspace&gt;"
+msgstr "Mehrzeiliger Editor<br>&lt;Alt+Rücktaste&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2498
+msgid "Confirm Multiline Message"
+msgstr "Mehrzeilige Nachricht bestätigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2499
+msgid ""
+"You're about to send a message with %1 lines of text.<br><br>There is "
+"nothing wrong with it, this warning is<br>here to prevent you from "
+"accidentally sending<br>a really large message just because you didn't edit "
+"it<br>properly after pasting text from the clipboard.<br><br>Do you want the "
+"message to be sent?"
+msgstr ""
+"Es soll eine Nachricht mit %1 Zeilen Text gesendet werden.<br><br>Daran ist "
+"nichts falsch, diese Warnung soll Sie lediglich vor dem zufälligem<br>Senden "
+"einer wirklich großen Nachricht, die nicht seit dem Einfügen in die "
+"Zwischenablage<br> bearbeitet wurde, schützen.<br><br>Soll die Nachricht "
+"wirklich gesendet werden?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2505
+msgid "Yes, always"
+msgstr "Ja, immer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2506
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:399
+msgid "Yes"
+msgstr "Ja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:806
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:375
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:400
+msgid "No"
+msgstr "Nein"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2556
+msgid "<Ctrl+Return>; submits, <Alt+Backspace>; hides this editor"
+msgstr ""
+"&lt;Strg+Eingabetaste&gt; drücken, um den Text abzusenden; &lt;Strg"
+"+Rücktaste&gt; drücken, um den Editor auszublenden/zu schließen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:126
+msgid "Address:"
+msgstr "Adresse:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:140
+msgid "Current IRC URI"
+msgstr "Derzeitiger IRC-URI (Uniform Ressource Identifier)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:156
+msgid "Notify List"
+msgstr "Benachrichtigungsliste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:263
+msgid "Part All Channels"
+msgstr "Alle Kanäle verlassen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:265
+msgid "Close All Queries"
+msgstr "Alle Anfragen schliessen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:270
+msgid "Unhighlight All Windows"
+msgstr "Hervorhebung aller Fenster aufheben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:273
+msgid "Unhighlight All Channels"
+msgstr "Hervorhebung aller Kanäle aufheben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:275
+msgid "Unhighlight All Queries"
+msgstr "Hervorhebung aller Anfragen aufheben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:387
+msgid "Gender:"
+msgstr "Geschlecht:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:394
+msgid "Male"
+msgstr "männlich"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:393
+msgid "Female"
+msgstr "weiblich"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:375
+msgid "Registered as"
+msgstr "Registriert als"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:381
+msgid "(Matched by"
+msgstr "(Passt auf"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:393
+msgid "On <b>"
+msgstr "Auf <b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:402
+msgid "Using server <b>%1</b>"
+msgstr "Benutzt Server <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:407
+msgid "%1 hops"
+msgstr "%1 Sprünge"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:417
+msgid "Probably Away"
+msgstr "Wahrscheinlich abwesend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:493
+msgid ""
+"KVIrc can accept only irc://, irc6://, ircs:// or irc6s:// URL's\n"
+"Your URL is invalid. Check spelling and try again"
+msgstr ""
+"KVIrc kann nur irc://-, irc6://-, ircs://-, oder irc6s://-URLs verarbeiten.\n"
+"Ihre URL ist nicht gültig. Überprüfen Sie die Schreibweise und versuchen Sie "
+"es erneut."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:554
+msgid ""
+"You have just attempted to close a console window with an active connection "
+"inside.\n"
+"Are you sure you wish to terminate the connection?"
+msgstr ""
+"Es wurde versucht, das letzte Konsolefenster mit einer aktiven Verbindung zu "
+"schließen.\n"
+"Soll die Verbindung wirklich beendet werden?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:588
+msgid ""
+"You have just attempted to close the last console window.\n"
+"Are you sure you wish to quit KVIrc?"
+msgstr ""
+"Es wurde versucht, das letzte Konsolenfenster zu schliessen.\n"
+"Sind Sie sich wirklich sicher, dass Sie KVIrc beenden wollen?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1019
+msgid "Failed to load avatar with name \"%Q\" and local path \"%Q\""
+msgstr ""
+"Das Laden des Avatars mit dem Namen \"%Q\" und dem lokalem Pfad \"%Q\" ist "
+"fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:624
+msgid "Connection in progress..."
+msgstr "Verbindungsaufbau läuft ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1099
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:630
+msgid "Login in progress..."
+msgstr "Einloggvorgang läuft ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1179
+msgid "channel"
+msgstr "Kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1180
+msgid "channels"
+msgstr "Kanäle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1181
+msgid "query"
+msgstr "Anfrage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1182
+msgid "queries"
+msgstr "Anfragen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1238
+msgid "Connected since"
+msgstr "Verbunden seit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1252
+msgid "Online for"
+msgstr "Online seit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1264
+msgid "Server idle for"
+msgstr "Serverleerlauf von"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:50
+msgid "This option is also available as"
+msgstr "Diese Option is auch verfügbar als"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:683
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:275
+msgid "Advanced..."
+msgstr "Erweitert ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:69
+msgid "Scri&pting"
+msgstr "&Skripte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:74
+msgid "&Tools"
+msgstr "&Werkzeuge"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:81
+msgid "&Settings"
+msgstr "&Einstellungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:83
+msgid "&Window"
+msgstr "&Fenster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:125
+msgid "&Help"
+msgstr "&Hilfe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:119
+msgid "&Help Browser (Panel)"
+msgstr "&Hilfebrowser (Seitenleiste)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:121
+msgid "Help Browser (&Window)"
+msgstr "Hilfebrowser (&Fenster)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:124
+msgid "&Tip of the Day"
+msgstr "&Tipp des Tages"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:127
+msgid "About &KVIrc"
+msgstr "Über &KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:130
+msgid "KVIrc Home&page"
+msgstr "KVIrc-Home&page"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:134
+msgid "KVIrc Russian Home&page"
+msgstr "Russische KVIrc-Home&page"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:139
+msgid "KVIrc French Home&page"
+msgstr "Französische KVIrc-Home&page"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:143
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:339
+msgid "Subscribe to the Mailing List"
+msgstr "Mailing-Liste abbonnieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:145
+msgid "Report a Bug / Propose Improvements"
+msgstr "Fehler berichten/Verbesserungen vorschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:148
+msgid "Join KVIrc International Channel on Freenode"
+msgstr "Am internationalen KVIrc-Kanal im Freenode teilnehmen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:150
+msgid "Join KVIrc International Channel on IRCNet"
+msgstr "Am internationalen KVIrc-Kanal im IRCNet teilnehmen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:155
+msgid "Join KVIrc Italian Channel on AzzurraNet"
+msgstr "Am italienischen IRC-Kanal im AzzurraNet teilnehmen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:161
+msgid "Join KVIrc French Channel on Freenode"
+msgstr "Am französischen KVIrc-Kanal im Freenode teilnehmen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:164
+msgid "Join KVIrc French Channel on EuropNet"
+msgstr "Am französischen KVIrc-Kanal im EuropNet teilnehmen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:179
+msgid "Show StatusBar"
+msgstr "Statusleiste anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:194
+msgid "&Save Configuration"
+msgstr "Konfiguration &speichern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:213
+msgid "Restore &Default Script"
+msgstr "&Standardskript wiederherstellen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:630
+msgid "Disconnect"
+msgstr "Trennen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:228
+msgid "New &Connection To"
+msgstr "Neue &Verbindung zu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:234
+msgid "Hide &Dock Icon"
+msgstr "&Docksymbol ausblenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:237
+msgid "Show &Dock Icon"
+msgstr "&Docksymbol anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:111
+msgid "&Quit"
+msgstr "&Beenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:265
+msgid "&Other..."
+msgstr "&Andere ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:305
+msgid "Show &Icon Table"
+msgstr "&Piktogrammtabelle anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:308
+msgid "Open &Terminal"
+msgstr "&Terminal öffnen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:308
+msgid ""
+"<b>Shift+Drag</b> or <b>Ctrl+Drag</b> to move the applet around<br><b>Right "
+"click</b> to see the other options"
+msgstr ""
+"<b>Shift+Ziehen</b>, oder <b>Strg+Ziehen</b> zum Verschieben des Applets<br> "
+"<b>Rechtsklicken</b> zum Ansehen weiterer Optionen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:313
+msgid "<b>Right click</b> to add/remove applets"
+msgstr "<b>Rechtsklicken</b> zum Hinzufügen/Löschen von Applets"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:353
+msgid "Remove %Q"
+msgstr "%Q löschen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:365
+msgid "Add Applet"
+msgstr "Applet hinzufügen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:404
+msgid ""
+"Drag the applet while holding the Shift or Ctrl key to move it to the "
+"desired position"
+msgstr ""
+"Das Applet mit gedrückter Shift- oder Strg-Taste ziehen, um es andie "
+"gewünschten Position zu verschieben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:93
+msgid "<b><font color=\"#EAEAEA\" size=\"-1\">Find Text</font></b>"
+msgstr "<b><font color=\"#EAEAEA\" size=\"-1\">Text finden</font></b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:118
+msgid "&Regular expression"
+msgstr "&Regulärer Ausdruck"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:121
+msgid "E&xtended regexp."
+msgstr "Erweiterter re&gulärer Ausdruck"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:126
+msgid "C&ase sensitive"
+msgstr "G&roß-/Kleinschreibung beachten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:129
+msgid "Find &Prev."
+msgstr "Zur &vorherigen Fundstelle springen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:133
+msgid "&Find Next"
+msgstr "Zur &nächsten Fundstelle springen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:880
+msgid "Find"
+msgstr "Suchen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:214
+msgid "Type"
+msgstr "Typ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:166
+msgid "Set &All"
+msgstr "&Alles setzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:170
+msgid "Set &None"
+msgstr "&Nichts setzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:174
+msgid "&Load From..."
+msgstr "&Laden von ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:178
+msgid "&Save As..."
+msgstr "&Speichern als ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:182
+msgid "Filter"
+msgstr "Filter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:234
+msgid "Select a Filter File"
+msgstr "Filterdatei auswählen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:251
+#, c-format
+msgid "Can't open the filter file %s for reading."
+msgstr "Filterdatei %s kann nicht zum Lesen geöffnet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:261
+msgid "Select a Name for the Filter File"
+msgstr "Dateiname für Filterdatei auswählen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:272
+msgid "Failed to write the filter file %Q (IO Error)"
+msgstr "Fehler beim Schreiben der Filterdatei %Q (Eingabe/Ausgabe-Fehler)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:274
+msgid "Can't open the filter file %Q for writing"
+msgstr "Die Filterdatei %Q kann nicht zum Schreiben geöffnet werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:109
+msgid "Choose image ..."
+msgstr "Bilddatei auswählen ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:122
+msgid "Builtin images"
+msgstr "Eingebaute Bilder"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:131
+msgid "Small icons"
+msgstr "Kleine Symbole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:138
+msgid "Full path"
+msgstr "Ganzer Pfad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:241
+msgid "Builtin $icon(%Q) [index %d]"
+msgstr "Eingebautes $icon(%Q) [index %d]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:274
+msgid "directory"
+msgstr "Verzeichnis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:300
+msgid "pixels"
+msgstr "Pixel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:305
+msgid "bytes"
+msgstr "Byte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:98
+msgid "Show User List"
+msgstr "Benutzerliste anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:105
+msgid "Query Targets"
+msgstr "Anfragenziele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:165
+msgid "Query target:"
+msgstr "Anfragenziel:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:170
+msgid "%1 is %2 (%3)"
+msgstr "%1 ist %2 (%3)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:172
+msgid "%1 is %2"
+msgstr "%1 ist %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:186
+msgid "%1 is using irc server: %2 (%3 hops)"
+msgstr "%1 benutzt den IRC-Server <b>%2</b> (%3 Sprüngeentfernt)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:188
+msgid "%1 is using irc server: %2"
+msgstr "%1 benutzt den IRC-Server <b>%2</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:195
+msgid "%1 is probably away"
+msgstr "%1 ist wahrscheinlich abwesend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:200
+msgid "Common channels with %1: %2"
+msgstr "Gemeinsame Kanäle mit %1: <b>%2</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:254
+msgid "[Dead Query]"
+msgstr "[Tote Anfrage]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:240
+msgid "Query with %1!%2 (%3)"
+msgstr "Anfrage mit %1!%2 (%3)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:242
+msgid "Query with %1!%2"
+msgstr "Anfrage mit %1!%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:244
+msgid ", using server %1"
+msgstr " auf %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:246
+msgid " (%1 hops)"
+msgstr " (%1 Sprünge entfernt)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:248
+msgid ", probably away"
+msgstr ", wahrscheinlich abwesend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:252
+msgid "Common channels: %2"
+msgstr "Gemeinsame Kanäle: %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:320
+msgid ""
+"The target of this query has changed from \r!n\r%Q\r [%Q@\r!h\r%Q\r] to \r!n"
+"\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr ""
+"Das Ziel dieser Anfrage wurde von \r!n\r%Q\r [%Q@\r!h\r%Q\r] auf \r!n\r%Q\r "
+"[%Q@\r!h\r%Q\r] geändert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:389
+msgid "Common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Gemeinsame Kanäle mit \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:392
+msgid "No common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "Sie haben keine gemeinsamen Kanäle mit \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:428
+msgid "[Dead query]"
+msgstr "[Tote Anfrage]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:578
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:645
+msgid "This query has no active targets, no message sent"
+msgstr ""
+"Diese Anfrage hat keine erreichbaren Ziele; es wurde keine Nachricht gesendet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:617
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %s, no "
+"data sent to the server"
+msgstr ""
+"Die Verschlüsselungsroutine war nicht in der Lage, die aktuelle Nachricht (%"
+"Q): %s zu verschlüsseln: es wurden keine Daten an Server gesendet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashcount.cpp:74
+msgid ""
+"The argument of the hash count '#' operator didn't evaluate to a hash: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+"Das Argument des '#'-Feldzähleroperators kann nicht zu einem Hash "
+"ausgewertet werden: es wird die automatische Konvertierung vom Typ '%Q' "
+"bereitgestellt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:100
+msgid "DNS Lookup result for query \"%Q\""
+msgstr "DNS-Ergebnis für Anfrage \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:105
+msgid "Error: %Q"
+msgstr "Fehler: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:110
+msgid "Hostname %d: %Q"
+msgstr "Hostname %d: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:116
+msgid "IP address %d: %Q"
+msgstr "IP-Adresse %d: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:870
+msgid ""
+"Broken slot '%Q' in target object '%Q::%Q' while emitting signal '%Q' from "
+"object '%Q::%Q': disconnecting"
+msgstr ""
+"Fehlerhafter Einschub '%Q' in Zielobjekt '%Q::%Q' beim Senden des Signals '%"
+"Q' von Objekt '%Q::%Q': trenne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:888
+msgid ""
+"Slot target object destroyed while emitting signal '%Q' from object '%Q::%Q'"
+msgstr ""
+"Slot-Zielobjekt wurde zerstört beim Senden des Signals '%Q' von Objekt '%Q::%"
+"Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1040
+msgid "Listing Qt properties for object named \"%Q\" of KVS class %Q"
+msgstr ""
+"Auflistung der Qt-Eigenschaften für das Objekt \"%Q\" der KVS-Klasse %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1046
+#, c-format
+msgid "Properties for Qt class %s"
+msgstr "Eigenschaften für Qt-Klasse %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1071
+msgid "Property: %c%Q%c, type %Q"
+msgstr "Eigenschaft: %c%Q%c, Typ: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1131
+#, c-format
+msgid "%d properties listed"
+msgstr "%d Eigenschaften aufgelistet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1151
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1380
+msgid "The object named \"%Q\" of class %Q has no Qt properties"
+msgstr "Das Objekt \"%Q\" der Klasse %Q hat keine Qt-Eigenschaften"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1396
+msgid "No Qt property named \"%Q\" for object named \"%Q\" of class %Q"
+msgstr ""
+"Es gibt keine Qt-Eigenschaft \"%Q\" für das Objekt \"%Q\" der Klasse %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1409
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed but it doesn't really exist"
+msgstr ""
+"Kann die Eigenschaft \"%Q\" für das Objekt \"%Q\" der Klasse %Q nicht "
+"finden: Die Eigenschaft ist registriert, aber sie existiert nicht richtig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1417
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed and defined but the returned variant is not valid"
+msgstr ""
+"Konnte die Eigenschaft \"%Q\" für das Objekt \"%Q\" der Klasse %Q nicht "
+"finden: Die Eigenschaft ist registriert und definiert, aber die "
+"zurückgegebene Variante ist ungültig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1200
+#, c-format
+msgid ""
+"The property is of type %s but the supplied argument can't be converted to "
+"that type (expecting \"%s\")"
+msgstr ""
+"Die Eigenschaft ist vom Typ %s, aber das gegebene Argument kann nicht zu "
+"diesem Typ konvertiert werden (erwarte \"%s\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1331
+msgid ""
+"A pixmap object, an image_id or an image file path is required for this "
+"property"
+msgstr ""
+"Ein Rastergrafikobjekt, eine \"image_id\", oder ein Bilddateipfad ist für "
+"diese Eigenschaft erforderlich"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1352
+msgid "Can't find the requested image"
+msgstr "Das angeforderte Bild konnte nicht gefunden werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1512
+msgid ""
+"Property \"%Q\" for object named \"%Q\" of class %Q has an unsupported data "
+"type"
+msgstr ""
+"Die Eigenschaft \"%Q\" für das Objekt \"%Q\" der Klasse %Q hat einen nicht "
+"unterstützten Datentyp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1659
+msgid "Cannot find object function $%Q for object named \"%Q\" of class %Q"
+msgstr ""
+"Konnte die Objektfunktion $%Q für das Objekt \"%Q\" der Klasse %Q nicht "
+"finden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1661
+msgid "Cannot find object function $%Q::%Q for object named \"%Q\" of class %Q"
+msgstr ""
+"Konnte die Objektfunktion $%Q::%Q für das Objekt \"%Q\" der Klasse %Q nicht "
+"finden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1669
+msgid ""
+"Cannot call internal object function $%Q (for object named \"%Q\" of class %"
+"Q) from this context"
+msgstr ""
+"Die interne Objektfunktion $%Q (für das Objekt \"%Q\" der Klasse %Q) kann "
+"nicht in diesem Kontext aufgerufen werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:69
+msgid "Stray dot ('.') character or invalid following module command name"
+msgstr ""
+"Vereinzelter Punkt ('.') oder einen ungültigen nachfolgenden "
+"Modulkommandonamen gefunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:70
+msgid "Syntax error: malformed module command identifier"
+msgstr "Syntaxfehler: fehlerhafter Kommandozeilenbezeichner"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:188
+msgid "Stray '::' sequence or invalid following alias name"
+msgstr ""
+"Eine vereinzelte doppelte Doppelpunkt-Sequenz '::' oder ein ungültiger "
+"nachfolgender Aliasname wurde gefunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:95
+msgid "Syntax error: malformed alias identifier"
+msgstr "Syntaxfehler: Fehlerhafter Aliasbezeichner"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:102
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:196
+msgid "Stray ':' character: did you mean '...<namespace>::<alias_name>' ?"
+msgstr ""
+"Ein vereinzelter Doppelpunkt ':' wurde gefunden: meinten Sie '..."
+"<namespace>::<Aliasname>'?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:103
+msgid "Syntax error: malformed (alias?) command identifier"
+msgstr "Syntaxfehler: Fehlerhafter (Alias?) Kommandobezeichner"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:280
+msgid "Unknown callback command \"%Q\""
+msgstr "Unbekanntes Rückrufkommando \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:465
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:44
+msgid "The current window is not a channel"
+msgstr "Das aktuelle Fenster ist kein Kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:532
+msgid ""
+"Timer name omitted but there is not current timer (this is not a timer "
+"callback)"
+msgstr ""
+"Zeitgebername ausgelassen, aber es ist kein aktuelle Zeitgeber verfügbar "
+"(das ist kein Zeitgeberrückruf)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:538
+msgid "Can't kill the timer '%Q' since it is not running"
+msgstr "Zeitgeber '%Q' kann nicht beendet werden, da er nicht läuft"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:626
+msgid "List of active timers"
+msgstr "Liste aktiver Zeitgeber"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:637
+msgid "Persistent"
+msgstr "Permanent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:640
+msgid "WindowLifetime"
+msgstr "Fensterlebenszeit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:643
+msgid "SingleShot"
+msgstr "Einmalig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:652
+msgid "None"
+msgstr "Kein"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:663
+#, c-format
+msgid "Total: %u timers running"
+msgstr "Gesamt: %u Zeitgeber laufen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:849
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:872
+msgid "Found character '%q' (unicode %x) where a slash '/' was expected"
+msgstr ""
+"Es wurde das Zeichen '%q' (Unicode %x) gefunden, wohingegen ein Schrägstrich "
+"'/' erwartet wurde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:842
+msgid ""
+"Unexpected end of command in binding operation, at least two slashes are "
+"missing"
+msgstr ""
+"Unerwartetes Ende des Kommandos in der Bindungsoperation, mindestens zwei "
+"Schrägstriche fehlen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:865
+msgid ""
+"Unexpected end of command in binding operation, at least one slash is missing"
+msgstr ""
+"Unerwartetes Ende des Kommandos in der Bindungsoperation, mindestens ein "
+"Schrägstrich fehlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:905
+msgid "Unknown binding operation '%Q'"
+msgstr "Unbekannte Bindungsoperation '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:926
+msgid "Missing right side operand for the binding operator '=~'"
+msgstr "Rechter Operand des '=~'-Bindungsoperatoren fehlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:948
+msgid "Trailing garbage ignored after operator '++'"
+msgstr "Nachfolgender Müll nach dem '++'-Operator wird ignoriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:960
+msgid "Missing right operand for operator '+='"
+msgstr "Rechter Operand des '+='-Operatoren fehlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:979
+msgid "Trailing garbage ignored after operator '--'"
+msgstr "Nachfolgender Müll nach dem '--'-Operator wird ignoriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:986
+msgid ""
+"This looks a lot like an object handle dereferencing operator '->' but in "
+"fact it isn't. Maybe you forgot a '$' just after ?"
+msgstr ""
+"Es sieht sehr nach dem Objekt-Handle-Derefenrenzierungsoperator '->' aus, "
+"aber in Wirklichkeit ist es keiner. Haben Sie vielleicht ein '$' direkt "
+"danach vergessen?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:994
+msgid "Missing right operand for operator '-='"
+msgstr "Rechter Operand des '-='-Operatoren fehlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1015
+msgid "Missing right operand for operator '<<='"
+msgstr "Rechter Operand des '<<='-Operatoren fehlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1025
+msgid "Missing right operand for operator '<<'"
+msgstr "Rechter Operand des '<<'-Operatoren fehlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1039
+msgid "Missing right operand for operator '<,'"
+msgstr "Rechter Operand des '<,'-Operatoren fehlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1053
+msgid "Missing right operand for operator '<+'"
+msgstr "Rechter Operand des '+='-Operatoren fehlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1075
+msgid "Missing right operand for operator '>>='"
+msgstr "Rechter Operand des '>>='-Operatoren fehlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1094
+msgid "Missing right operand for operator '.='"
+msgstr "Rechter Operand des '.='-Operatoren fehlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1113
+msgid "Missing right operand for operator '"
+msgstr "Rechter Operand folgendes Operatoren fehlt: '"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:72
+msgid "Unknown operator"
+msgstr "Unbekannter Operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1178
+msgid "Unexpected (and senseless) read-only data evaluation"
+msgstr "Unerwartetete (und sinnlose) nur lesbare Datenauswertung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1180
+msgid "Syntax error: confused by earlier errors: bailing out"
+msgstr "Syntaxfehler: verwirrt durch frühere Fehler: breche ab"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1160
+msgid "Unexpected end of script after a variable reference: expected operator"
+msgstr ""
+"Unerwartetes Ende des Skripts nach einer Variablenreferenz: Operator erwartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1176
+msgid ""
+"Unexpected character '%q' (unicode %x) after a void function call: end of "
+"instruction expected"
+msgstr ""
+"Zeichen '%q' (Unicode %x) nach einem void-Funktionsaufruf gefunden, Ende der "
+"Anweisung erwartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1179
+msgid "Unexpected character '%q' (unicode %x)"
+msgstr "Unterwartetes Zeichen '%q' (Unicode %x)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:96
+msgid "/me can be used only in channels, queries and DCC chat windows"
+msgstr "/me can nur in Kanälen, Anfragen und DCC-Chat-Fenstern genutzt werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:385
+msgid "Invalid IRC url (%Q)"
+msgstr "Ungültige IRC-URL (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:410
+msgid "The commandline for this url type seems to be broken (%Q)"
+msgstr "Die Kommandozeile für diesen URL-Typ schein kaputt zu sein (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:412
+msgid "No commandline specified for this type of url (%Q)"
+msgstr "Keine Kommandozeile für diesen URL-Typ (%Q) angegeben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:512
+msgid "Option setting error: Unknown option or invalid value for option type"
+msgstr ""
+"Setzen der istOption fehlgeschlagen: unbekannte Option oder ungültiger Wert "
+"für den Optionstyp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:606
+msgid "Choose a file to parse"
+msgstr "Wählen Sie eine dazu zum Parsen aus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:639
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:643
+msgid "Failed to load the file '%Q' for parsing"
+msgstr "Konnte die Datei '%Q' nicht zum Parsen öffnen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:715
+msgid "Missing channel list"
+msgstr "Kanalliste fehlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:753
+#, c-format
+msgid "You don't appear to be on channel %s"
+msgstr "Sie scheinen nicht in Kanal %s zu sein"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:802
+msgid "Module command call failed: can't load the module 'snd'"
+msgstr ""
+"Modulkommandoaufruf fehlgeschlagen: Das Modul 'snd' kann nicht geladen werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:809
+msgid ""
+"Module command call failed: the module 'snd' doesn't export a command named "
+"'play'"
+msgstr ""
+"Modulkommandoaufruf fehlgeschlagen: Das Modul 'snd' exportiert kein Kommando "
+"mit dem Namen 'play'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:864
+msgid "Popup %Q is not defined"
+msgstr "Aufklappmenü %Q ist nicht definiert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:872
+msgid "A popup menu cannot be popped up twice"
+msgstr "Ein Aufklappmenü kann nicht doppelt aufgerufen werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:897
+msgid "Invalid syntax for screen coordinates, using cursor position"
+msgstr ""
+"Ungültige Syntax der Bildschirmkoordinaten, Cursorposition wird benutzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1011
+msgid "Empty target specified"
+msgstr "Leeres Ziel angegeben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:97
+msgid "[RAW]: %Q"
+msgstr "[ROH]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1237
+msgid "Window with id %Q not found: no rebinding performed"
+msgstr "Fenster mit ID %Q nicht gefunden: es wurde nichts neu gebunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1330
+msgid "Failed to execute command '%Q'"
+msgstr "Ausführen des Kommandos '%Q' ist fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:242
+msgid "Missing alias name"
+msgstr "Aliasname fehlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:253
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:889
+msgid ""
+"Alias names can contain only letters, digits, underscores and '::' namespace "
+"separators"
+msgstr ""
+"Aliasnamen dürfen nur Buchstaben, Ziffern, Unterstriche und '::'-Namensraum-"
+"Separatoren enthalten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:903
+msgid ""
+"Stray ':' character in alias name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+"Vereinzelter Doppelpunkt ':' im Aliasnamen gefunden: meinten Sie..."
+"<Namespace>::<Name>?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:914
+msgid "Found an empty namespace in alias name"
+msgstr "Habe einen leeren Namensraum im Aliasnamen gefunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:277
+msgid "The alias %Q is not existing"
+msgstr "Der Alias %Q existiert nicht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:436
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:413
+msgid "The specified window has no button containers"
+msgstr "Das angegebene Fenster hat keine \"Button\"-kontainer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:447
+msgid "Window button '%Q' not found"
+msgstr "Der Fensterknopf '%Q' wurde nicht gefunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:445
+msgid "Can't find the icon '%Q'"
+msgstr "Das Piktogramm '%Q' kann nicht gefunden werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:532
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:540
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1197
+msgid "No such event (%Q)"
+msgstr "Es gibt kein solches Ereignis (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:552
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1222
+msgid "No handler '%Q' for raw numeric event '%d'"
+msgstr "Es gibt keinen Handler '%Q' für das numerische ROH-Ereignis '%d'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1248
+msgid "No handler '%Q' for event '%Q'"
+msgstr "Es gibt keinen Handler '%Q' für das Ereignis '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:936
+msgid "The specified ping time is invalid: assuming zero (no ping)"
+msgstr ""
+"Die angegebene Pingzeit ist ungültig: es wird Null angenommen (kein Ping)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:946
+msgid "The specified maximum run time is invalid: assuming zero (infinite)"
+msgstr ""
+"Die angegebene Maximallaufzeit ist ungültig: es wird Null angenommen "
+"(unendlich)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:965
+msgid "Failed to start the process"
+msgstr "Der Start des Prozesses ist fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1010
+msgid "The specified object does not exist"
+msgstr "Das angegebene Objekt existiert nicht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1113
+msgid "Missing timer name"
+msgstr "Fehlender Zeitgebername"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1122
+msgid "Missing timeout delay"
+msgstr "Die Zeitablaufsverzögerung fehlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1129
+msgid "The timeout delay didn't evaluate to an integer"
+msgstr ""
+"Die Zeitablaufverzögerung konnte nicht zu einem Integer ausgewertet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1152
+msgid "Unable to add the timer: insufficient system resources"
+msgstr ""
+"Der Zeitgeber kann nicht hinzugefügt werden: ungenügende Systemressourcen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_eventmanager.cpp:503
+msgid "Event handler %Q is broken: disabling"
+msgstr "Der Ereignishandler %Q ist fehlerhaft: er wird deaktiviert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_moduleinterface.cpp:166
+msgid "Can't unload the module: it has locked itself in memory"
+msgstr ""
+"Das Modul konnte nicht entladen weden: es hat sich selbst in den Speicher "
+"gesperrt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:123
+msgid "Unknown binary operator '=%q': did you mean '==' ?"
+msgstr "Unbekannter binärer Operator '=%q': meinten Sie vieleicht '=='?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:221
+msgid "Unknown binary operator '%q'"
+msgstr "Unbekannter binärer Operator '%q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:305
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:371
+msgid "Unexpected end of script in expression"
+msgstr "Unerwartetes Ende des Skriptes in Ausdruck"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:451
+msgid ""
+"Unexpected character %q (unicode %h) in expression. If it meant to be a "
+"string use the quotes."
+msgstr ""
+"Unerwartetes Zeichen '%q' (Unicode %h) im Ausdruck. Wenn das eine "
+"Zeichenkette sein sollte, benutzen Sie bitte Anführungstriche."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:466
+msgid "Unexpected empty expression operand"
+msgstr "Es wurde ein unerwarteter leerer Ausdruck-Operand gefunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:91
+msgid "say: injected commandline"
+msgstr "say: eingespeiste Kommandozeile"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:94
+msgid "Say parse error: Broken command"
+msgstr "Say-Parsen fehlgeschlagen: Das Kommando war fehlerhaft"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:250
+msgid ""
+"Couldn't find a suitable IRC context for the connection, try using -n or -u"
+msgstr ""
+"Konnte keinen passenden IRC-Kontext für die Verbindung finden, versuchen Sie "
+"-n oder -u zu benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:259
+msgid "Another connection is already in progress in the selected IRC context"
+msgstr ""
+"Eine andere Verbindung im ausgewählten IRC-Kontext befindet sich bereits im "
+"Aufbau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:369
+msgid "No menu bar item with text '%Q'"
+msgstr "Es gibt kein Menüleistenelement mit dem Text '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:383
+msgid "Invalid index specified: ignored"
+msgstr "Ungültiger Index angegeben: Ignoriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:392
+msgid "The popup '%Q' is not defined"
+msgstr "Das Popup '%Q' ist nicht definiert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:604
+msgid "No target channel specified and the current window is not a channel"
+msgstr "Es wurde kein Ziel angegeben und das angegebene Fenster ist kein Kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:705
+msgid "No catalogue %Q for the current language found"
+msgstr "Es wurde kein Katalog %Q für die aktuelle Sprache gefunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:744
+msgid "The catalogue %Q was not loaded"
+msgstr "Der Katalog %Q wurde nicht geladen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:80
+msgid ""
+"Empty window identifier specified in the standard rebinding switch: no "
+"rebinding performed"
+msgstr ""
+"Es wurde eine leere Fenster-ID im Standard-Rebind-Schalter angegeben: Nichts "
+"wurde neu gebunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:91
+msgid ""
+"Invalid window specified in the standard rebinding switch: no rebinding "
+"performed"
+msgstr ""
+"Es wurde ein ungültiges Fenster im Standard-Rebind-Schalter angegeben: "
+"Nichts wurde neu gebunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:94
+msgid ""
+"The left side of the scope operator didn't evaluate as an object reference"
+msgstr ""
+"Die linke Seite des Bereichs-Operatoren kann nicht zu einer Objektreferenz "
+"ausgewertet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:100
+msgid ""
+"The left side of the scope operator evaluated to a null object reference"
+msgstr ""
+"Die linke Seite des Bereichsoperatoren wurde zu einem Null-Objekt ausgewertet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:107
+msgid ""
+"The left side of the scope operator evaluated to an invalid object reference "
+"(object doesn't exist)"
+msgstr ""
+"Die linke Seite des Bereichsoperatoren wurde zu einem ungültigen Objekt-"
+"Bezug ausgewertet (das Objekt existiert nicht)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayreferenceassert.cpp:77
+msgid "Array reference assert failed: the variable evaluated to type '%Q'"
+msgstr ""
+"Feldreferenzzusicherung fehlgeschlagen: Die Variable wurde zu Typ '%Q' "
+"ausgewertet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:247
+msgid "Operand of unary operator didn't evaluate to a number"
+msgstr ""
+"Der Operand des unären Operatoren kann nicht zu einer Zahl ausgewertet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:415
+msgid "Left operand didn't evaluate to a number"
+msgstr "Linker Operand kann nicht zu einer Zahl ausgewertet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:422
+msgid "Right operand didn't evaluate to a number"
+msgstr "Rechter Operand kann nicht zu einer Zahl ausgewertet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:547
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:575
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:583
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:374
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:66
+msgid "Division by zero"
+msgstr "Division durch Null"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:107
+#, c-format
+msgid "line %d, near character %d"
+msgstr "Zeile %d, bei Zeichen %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:187
+msgid "This command can be used only in windows bound to an IRC context"
+msgstr ""
+"Dieses Kommando kann nur in Fenstern, die an einen IRC-Kontext gebunden "
+"sind, benutzt werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:193
+msgid "You're not connected to an IRC server"
+msgstr "Sie sind nicht mit einen IRC-Server verbunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:199
+msgid "Missing parameter"
+msgstr "Parameter fehlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:128
+msgid "Hash key evaluated to empty string: fix the script"
+msgstr ""
+"Der Hashschlüssel wurde zu einer leerer Zeichenkette ausgewertet: bitte "
+"reparieren Sie das Skript"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:99
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+"Das Argument des {}-Unterskriptes konnte nicht zu einem Hash ausgewertet "
+"werden, es wird wird die automatische Konvertierung vom Typ '%Q' geliefert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:144
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash automatic "
+"conversion from %Q supplied"
+msgstr ""
+"Das Argument des {}-Unterskriptes konnte nicht zu einem Hash ausgewertet "
+"werden, es wird die automatische Konvertierung vom %Q geliefert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashreferenceassert.cpp:77
+msgid "Hash reference assert failed: the variable evaluated to type '%Q'"
+msgstr ""
+"Hashreferenzzusicherung fehlgeschlagen: die Variable wurde zum Typ '%Q' "
+"ausgewertet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:100
+msgid "Failed to send an unknown command as /raw"
+msgstr "Konnte das unbekannte Kommando nicht als /RAW senden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:104
+msgid "Call to undefined command '%Q'"
+msgstr "Aufruf des nicht definierten Kommandos '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:116
+msgid "Error in inner alias command call '%Q', called from this context"
+msgstr ""
+"Fehler in innerem Aliaskommandoaufruf '%Q', aufgerufen aus diesem Kontext"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:74
+msgid "There are no extended scope variables in this scope"
+msgstr ""
+"Es gibt keine erweiterten Gültigkeitsbereichsvariablen in diesem "
+"Gültigkeitsbereich"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:111
+msgid "Missing class name"
+msgstr "Der Klassenname fehlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:120
+msgid "A class can't be a subclass of itself"
+msgstr "Eine Klasse kann nicht eine Unterklasse ihrer selbst sein"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:127
+msgid "Couln't find base class named \"%Q\""
+msgstr "Konnte die Basis-Klasse \"%Q\" nicht finden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:137
+msgid ""
+"Detected a loop in the inheritance tree of the base class \"%Q\": redefine "
+"that class first"
+msgstr ""
+"Es wurde eine Schleife im Vererbungsbaum der Basis-Klasse \"%Q\" gefunden: "
+"Definieren Sie diese Klasse zuerst neu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:146
+msgid "Can't override the builtin class \"%Q\""
+msgstr "Die eingebaute Klasse \"%Q\" kann nicht außer Kraft gesetzt werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:71
+msgid "Module command call failed: can't load the module '%Q': %Q"
+msgstr ""
+"Modulkommandoaufruf fehlgeschlagen: Das Modul '%Q' kann nicht geladen "
+"werden: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:77
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a command named '%"
+"Q'"
+msgstr ""
+"Modulkommandoaufruf fehlgeschlagen: Das Modul '%Q' exportiert kein Kommando "
+"namens '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:113
+msgid "Broken condition in menu setup: assuming false"
+msgstr "Fehlerhafte Bedingung im Menü-Setup: es wird \"unwahr\" angenommen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:220
+msgid "Broken icon parameter: ignoring"
+msgstr "Fehlerhafter Piktogrammparameter: wird ignoriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:228
+msgid "Can't find the icon \"%Q\": ignoring"
+msgstr "Piktogramm \"%Q\" konnte nicht gefunden werden: wird ignoriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:244
+msgid "Broken text parameter: assuming empty string"
+msgstr "Fehlerhafter Textparameter: leere Zeichenkette angenommen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:486
+msgid "Recursive definition detected for popup '%Q': ignoring"
+msgstr ""
+"Rekursive Definition für das Aufklappmenü '%Q' gefunden: wird ignoriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:500
+msgid "Can't find the external popup '%Q'; ignoring"
+msgstr "Externes Aufklappmenü '%Q' kann nicht gefunden werden; wird ignoriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:853
+msgid "Broken prologue in popup menu '%Q': ignoring"
+msgstr "Fehlerhafter Prolog für das Aufklappmenü '%Q': wird ignoriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:868
+msgid "Broken epilogue in popup menu '%Q': ignoring"
+msgstr "Fehlerhafter Epilog für das Aufklappmenü '%Q': wird ignoriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:70
+msgid "Module function call failed: can't load the module '%Q': %Q"
+msgstr ""
+"Modulfunktionsaufruf fehlgeschlagen: Das Modul '%Q' kann nicht geladen "
+"werden: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:77
+msgid ""
+"Module function call failed: the module '%Q' doesn't export a function named "
+"'%Q'"
+msgstr ""
+"Modulfunktionsaufruf fehlgeschlagen: das Modul '%Q' exportiert keine "
+"Funktion namens '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_timermanager.cpp:244
+msgid "Timer '%Q' has a broken callback handler: killing the timer"
+msgstr ""
+"Zeitgeber '%Q' hat einen fehlerhaften Rückrufhandler: Zeitgeber wird zerstört"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:229
+msgid "The target variable didn't evaluate to an integer or real value"
+msgstr ""
+"Die Zielvariable konnte nicht zu einem Integer oder einem realen Wert "
+"ausgewertet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:283
+msgid "The right side of operator '&=' didn't evaluate to an integer"
+msgstr ""
+"Die rechte Seite des '&='-Operatoren konnte nicht zu einem Integer "
+"ausgewertet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:294
+msgid "The left side of operator '&=' didn't evaluate to an integer"
+msgstr ""
+"Die linke Seite des '&='-Operatoren konnte nicht zu einem Integer "
+"ausgewertet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:353
+msgid "The right side of operator '/=' didn't evaluate to a number"
+msgstr ""
+"Die rechte Seite des '/='-Operatoren konnte nicht zu einer Zahl ausgewertet "
+"werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:364
+msgid "The left side of operator '/=' didn't evaluate to a number"
+msgstr ""
+"Die linke Seite des '/='-Operatoren konnte nicht zu einer Zahl ausgewertet "
+"werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:446
+msgid "The right side of operator '%=' didn't evaluate to a number"
+msgstr ""
+"Die rechte Seite des '%='-Operatoren konnte nicht zu einer Zahl ausgewertet "
+"werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:457
+msgid "The left side of operator '%=' didn't evaluate to a number"
+msgstr ""
+"Die linke Seite des '%='-Operatoren konnte nicht zu einer Zahl ausgewertet "
+"werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:541
+msgid "The right side of operator '*=' didn't evaluate to a number"
+msgstr ""
+"Die rechte Seite des '*='-Operatoren konnte nicht zu einer Zahl ausgewertet "
+"werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:552
+msgid "The left side of operator '*=' didn't evaluate to a number"
+msgstr ""
+"Die linke Seite des '*='-Operatoren konnte nicht zu einer Zahl ausgewertet "
+"werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:620
+msgid "The right side of operator '|=' didn't evaluate to an integer"
+msgstr ""
+"Die rechte Seite des '|='-Operatoren konnte nicht zu einer Ganzzahl "
+"ausgewertet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:631
+msgid "The left side of operator '|=' didn't evaluate to an integer"
+msgstr ""
+"Die linke Seite des '|='-Operatoren konnte nicht zu einer Ganzzahl "
+"ausgewertet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:691
+msgid "The right side of operator '<<=' didn't evaluate to an integer"
+msgstr ""
+"Die rechte Seite des '<<='-Operatoren konnte nicht zu einer Ganzzahl "
+"ausgewertet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:702
+msgid "The left side of operator '<<=' didn't evaluate to an integer"
+msgstr ""
+"Die linke Seite des '<<='-Operatoren kann nicht zu einer Ganzzahl "
+"ausgewertet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:763
+msgid "The right side of operator '>>=' didn't evaluate to an integer"
+msgstr ""
+"Rechte Seite des '>>='-Operators kann nicht zu einem Integer ausgewertet "
+"werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:774
+msgid "The left side of operator '>>=' didn't evaluate to an integer"
+msgstr ""
+"Linke Seite des '>>='-Operators kann nicht zu einem Integer ausgewertet "
+"werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:840
+msgid "The right side of operator '-=' didn't evaluate to a number"
+msgstr ""
+"Rechte Seite des '-='-Operators kann nicht zu einer Zahl ausgewertet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:851
+msgid "The left side of operator '-=' didn't evaluate to a number"
+msgstr ""
+"Linke Seite des '-='-Operators kann nicht zu einer Zahl ausgewertet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:923
+msgid "The right side of operator '+=' didn't evaluate to a number"
+msgstr ""
+"Rechte Seite des '+='-Operators kann nicht zu einer Zahl ausgewertet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:934
+msgid "The left side of operator '+=' didn't evaluate to a number"
+msgstr ""
+"Linke Seite des '+='-Operators kann nicht zu einer Zahl ausgewertet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1009
+msgid "The right side of operator '^=' didn't evaluate to an integer"
+msgstr ""
+"Rechte Seite des '^='-Operators kann nicht zu einem Integer ausgewertet "
+"werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1020
+msgid "The left side of operator '^=' didn't evaluate to an integer"
+msgstr ""
+"Linke Seite des '^='-Operators kann nicht zu einem Integer ausgewertet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1462
+msgid ""
+"The regular expression matched a zero-length substring: this is not valid in "
+"the s/// operator, skipping"
+msgstr ""
+"Der reguläre Ausdruck stimmte mit einer Nulllängenzeichenkette überein: Das "
+"ist im s///-Operator nicht gültig, überspringe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:52
+msgid "Unexpected end of script after '$' function call prefix"
+msgstr "Unerwartetes Ende des Skripts nach '$'-Funktionsaufrufpräfix"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:53
+msgid "Unexpected character %q (unicode %x) after '$' function call prefix"
+msgstr ""
+"Unerwartetes Zeichen '%q' (Unicode %x) nach '$'-Funktionsaufrufpräfix "
+"gefunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:54
+msgid ""
+"Syntax error after '$' function call prefix. If you want to use a plain '$' "
+"in the code you need to escape it"
+msgstr ""
+"Syntaxfehler nach der '$'-Funktionsaufrufpräfix. Wenn ein einfaches '$' im "
+"Code benutzt werden soll, muss es entwertet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:63
+msgid "Invalid expression evaluation in object scope"
+msgstr "Ungültiger Ausdrucksauswertung im Objektbereich"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:78
+msgid "Invalid command evaluation in object scope"
+msgstr "Ungültige Kommandoauswertung im Objektbereich"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:87
+msgid "Empty instruction block for command evaluation"
+msgstr "Leerer Anweisungsblock für Kommandoauswertung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:101
+msgid ""
+"Parameter identifiers are forbidden in object scope (after the '->' operator)"
+msgstr ""
+"Parameterbezeichner sind im Objektgültigkeitsbereich verboten (nach dem '->'-"
+"Operator)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:147
+msgid ""
+"Ending index of a multiple parameter identifier is lower or equal to the "
+"starting index. This will evaluate to a single parameter identifier."
+msgstr ""
+"Endindex eines Bezeichners mit mehreren Parametern ist niedriger oder gleich "
+"dem Startindex. Dies wird zu einem zu einem Bezeichner mit einem Parameter "
+"ausgewertet."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:163
+msgid "Syntax error: invalid $$ ($this) function call in object scope"
+msgstr "Syntaxfehler: Ungültiger $$ ($this)-Funktionsaufruf im Objektbereich"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:189
+msgid "Syntax error: malformed alias function call identifier"
+msgstr "Syntaxfehler: Fehlerhafter Alias-Funktionsaufrufbezeichner"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:197
+msgid "Syntax error: malformed (alias?) function call identifier"
+msgstr "Syntaxfehler: Fehlerhafter (Alias?-) Funktionsaufrufbezeichner"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:307
+#, c-format
+msgid "Invalid data type for parameter \"%s\""
+msgstr "Ungültiger Datentyp für Parameter \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:122
+#, c-format
+msgid "found empty string where type '%s' was expected"
+msgstr ""
+"Es wurde eine leere Zeichenkette gefunden, wohingegen Typ '%s' erwartet wurde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:129
+msgid "found string value \"%Q\" where type '%s' was expected"
+msgstr ""
+"Es wurde der Zeichenkettenwert \"%Q\" gefunden, wohingegen Typ '%s' erwartet "
+"wurde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:134
+msgid "found type %Q where type '%s' was expected"
+msgstr "Typ %Q gefunden, wohingegen Typ '%s' erwartet wurde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:154
+#, c-format
+msgid "Missing non-optional parameter \"%s\""
+msgstr "Obligatorischer Parameter \"%s\" fehlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:282
+msgid "found empty string while a non empty one was expected"
+msgstr ""
+"Leere Zeichenkette wurde gefunden, wohingegen eine nichtleere erwartet wurde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:309
+#, c-format
+msgid "found signed integer \"%d\" where type 'unsigned integer' was expected"
+msgstr ""
+"Vorzeichenbehaftete Ganzzahl \"%d\" gefunden, wohingegen eine vorzeichenlose "
+"Ganzzahl ('unsigned integer') erwarted wurde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:253
+msgid "This window has no associated IRC context"
+msgstr "Dieses Fenster hat keinen zugeordneten IRC-Kontext"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:483
+#, c-format
+msgid "No such IRC context (%u)"
+msgstr "Kein solcher IRC-Kontext (%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:471
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:586
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:494
+msgid "This window is not associated to an IRC context"
+msgstr "Dieses Fenster ist keinem IRC-Kontext zugeordnet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:809
+msgid ""
+"The specified format string wasn't accepted by the underlying system time "
+"formatting function"
+msgstr ""
+"Die angegebene Formatzeichenkette wurde von der unterliegenden "
+"Systemzeitformatierungsfunktion nicht akzeptiert."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:70
+msgid "Unterminated c-style multiline comment"
+msgstr "Nicht-terminierter, mehrzeiliger C-Stil-Kommentar gefunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:71
+msgid "Unexpected end of script in multiline comment"
+msgstr ""
+"Skript endete unerwartet in einem mehrzeiligen Kommentar (fehlt ein '*/'?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:88
+msgid ""
+"Unexpected character '%q' (unicode %x) after a slash (it is a typo or a "
+"malformed comment begin ?)"
+msgstr ""
+"Unerwartetes Zeichen '%q' (Unicode %x) nach einem Schrägstrich gefunden (war "
+"das ein Schreibfehler, oder vielleicht ein fehlerhafter Kommentar?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:71
+msgid "Call to undefined function '%Q'"
+msgstr "Aufruf von nicht definierter Funktion '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:79
+msgid "Error in inner alias function call '%Q', called from this context"
+msgstr ""
+"Fehler im inneren Aliasfunktionsaufruf '%Q', aufgerufen aus diesem Kontext"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:73
+msgid "Array index didn't evaluate to an integer"
+msgstr "Arrayindex konnte nicht zu einer Ganzzahl ausgewertet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:79
+msgid ""
+"Array index evaluated to a negative integer (non negative integer expected)"
+msgstr ""
+"Arrayindex wurde zu einer negativen Ganzzahl ausgewertet (nicht- negative "
+"Ganzzahl wurde jedoch erwartet)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:106
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from %Q supplied"
+msgstr ""
+"Das Argument für das []-Unterskript kann nicht zu einem Array ausgewertet "
+"werden: Es wird die automatische Umwandlung von %Q geliefert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:142
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+"Das Argument des []-Unterskriptes kann nicht zu einem Array ausgewertet "
+"werden: es wird die automatische Umwandlung von '%Q' geliefert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:219
+msgid "Lag meter was not enabled"
+msgstr "Lag-Meter wurde nicht aktiviert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:546
+msgid "No such event handler (%Q) for event %Q"
+msgstr "Es gibt keinen Handler '%Q' für das Ereignis '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands.cpp:153
+msgid "This is not a channel"
+msgstr "Dies ist kein Kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:99
+msgid ""
+"Unexpected end of command buffer while looking for the \"perl.end\" statement"
+msgstr ""
+"Unerwartetes Ende des Befehlpuffers während der Suche nach der \"perl.end\"- "
+"Anweisung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:147
+msgid "Trailing garbage at the end of the break command: ignored"
+msgstr "Nachfolgender Müll nach dem Ende des break-Kommandos wird ignoriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:209
+msgid "The 'unset' command needs a variable list"
+msgstr "Der 'unset'-Befehl benötigt eine Variablenliste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:280
+msgid "Found character %q (unicode %x) where a variable was expected"
+msgstr ""
+"Es wurde das Zeichen %q (Unicode %x) gefunden, aber eine Variable erwartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:219
+msgid "'unset' command used without a variable list"
+msgstr "Der 'unset'-Befehl wurde ohne eine Variablenliste benutzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:279
+msgid "The 'global' command needs a variable list"
+msgstr "Der 'global'-Befehl benötigt eine Variablenliste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:631
+msgid "Found character %q (unicode %x) where an open parenthesis was expected"
+msgstr ""
+"Zeichen '%q' (Unicode %x) gefunden, wohingegen eine öffnende Klammer "
+"erwartet wurde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:439
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:538
+msgid "Unexpected end of buffer in class definition"
+msgstr "Der Puffer endete unerwartet in einer Klassendefinition"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:474
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:501
+msgid "Found character %q (unicode %x) where a function name was expected"
+msgstr ""
+"Zeichen '%q' (Unicode %x) gefunden, wohingegen ein Funktionsname erwartet "
+"wurde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:522
+msgid "Unexpected end of buffer in function parameter list reminder"
+msgstr "Der Puffer endete unerwartet in einer Parameterliste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:630
+msgid "The while command needs an expression enclosed in parenthesis"
+msgstr "Der while-Befehl benötigt einen in Klammern eingeschlossenen Ausdruck"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:654
+msgid ""
+"The last while command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+"Der letzte while-Befehl im Puffer hat keine Bedingungsanweisungen. Er ist "
+"sinnlos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:655
+msgid ""
+"Unexpected end of script while looking for the instruction block of the "
+"while command"
+msgstr ""
+"Das Skript endete unerwartet während der Suche nach dem Anweisungsblocks des "
+"while-Befehls"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:741
+msgid ""
+"Unexpected end of command after the 'do' command block: expected 'while' "
+"keyword"
+msgstr ""
+"Der Befehl endete unerwartet nach dem 'do'-Befehlsblock: 'while'-"
+"Schlüsselwort erwartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:743
+msgid "Found character %q (unicode %x) where a 'while' keyword was expected"
+msgstr ""
+"Zeichen %q (Unicode %x) gefunden, wohingegen ein 'while'-Schlüsselwort "
+"erwartet wurde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:759
+msgid ""
+"The 'while' block of the 'do' command needs an expression enclosed in "
+"parenthesis"
+msgstr ""
+"Der 'while'-Block des 'do'-Befehls benötigt einen Ausdruck, der in Klammern "
+"eingeschlossenen ist"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:779
+msgid "Garbage string after the expression in 'do' command: ignored"
+msgstr ""
+"Ungültige Zeichenkette nach dem Ausdruck im 'do'-Befehl: sie wird ignoriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:825
+msgid "The 'if' command needs an expression enclosed in parenthesis"
+msgstr ""
+"Der 'if'-Befehl benötigt einen Ausdruck, der in runden Klammern "
+"eingeschlossen ist"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:850
+msgid ""
+"The last if command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+"Der letzte if-Befehl im Puffer hat keine Bedingungsanweisungen. Er ist "
+"sinnlos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:851
+msgid ""
+"Unexpected end of script while looking for the instruction block of the if "
+"command"
+msgstr ""
+"Das Skript endete unerwartet während der Suche nach dem Anweisungsblock des "
+"if-Befehls"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:966
+msgid ""
+"Unexpected end of buffer while looking for the closing ')' in the 'for' "
+"command"
+msgstr ""
+"Das Skript endete unerwartet während der Suche nach der schliessenden ')' im "
+"for-Befehl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1015
+msgid "The 'for' command needs an expression enclosed in parenthesis"
+msgstr ""
+"Der 'for'-Befehl benötigt einen Ausdruck, der in runden Klammern "
+"eingeschlossen ist"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1092
+msgid ""
+"Found char %q (unicode %x) while looking for the terminating ')' in 'for' "
+"command"
+msgstr ""
+"Zeichen %q (Unicode %x) gefunden, während der Suche nach dem abschliessendem "
+"')' im 'for'-Befehl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1122
+msgid "Empty infinite 'for' loop: fix the script"
+msgstr "Leere Endlos-'for'-Schleife: bitte reparieren Sie das Skript"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1181
+msgid "The 'foreach' command needs an expression enclosed in parenthesis"
+msgstr ""
+"Der 'foreach'-Befehl benötigt einen Ausdruck, der in runde Klammern "
+"eingeschlossen ist"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1205
+msgid ""
+"The 'foreach' command expects a writeable iteration variable as first "
+"parameter"
+msgstr ""
+"Der 'foreach'-Befehl erwartet eine schreibbare Iterationsvariable als ersten "
+"Parameter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1196
+msgid ""
+"Found character '%q' (unicode %x) where '%' or '$' was expected: see /help "
+"foreach for the command syntax"
+msgstr ""
+"Zeichen '%q (Unicode %x) gefunden, wohingegen entweder '%' oder '$' erwartet "
+"wurde: für Hilfe zur Kommandosyntax \"/help %s\" benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1207
+msgid "Unexpected function call as 'foreach' iteration variable"
+msgstr "Unerwarteter Funktionsaufruf als 'foreach'-Iterationsvariable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1209
+msgid "Unexpected read-only variable as 'foreach' iteration variable"
+msgstr "Unerwartete, nur lesbare Variable als 'forearch'-Variable gefunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1219
+msgid ""
+"Unexpected end of 'foreach' parameters: at least one iteration data argument "
+"must be given"
+msgstr ""
+"Unerwartetes Ende des 'foreach'-Parameters: mindestens ein "
+"Iterationsdatenargument muss angegeben werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1223
+msgid ""
+"The 'foreach' command expects a comma separated list of iteration data items "
+"after the first parameter"
+msgstr ""
+"Der 'foreach'-Befehl erwartet eine Liste von Iterationsdatenelementen, die "
+"durch Kommata getrennt werden, nach dem ersten Parameter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1244
+msgid ""
+"Found empty 'foreach' execution block: maybe you need to fix your script ?"
+msgstr ""
+"Leerer 'foreach'-Ausführungsblock gefunden: u.U. müssen Sie das Skript "
+"reparieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1365
+msgid "The 'switch' command needs an expression enclosed in parenthesis"
+msgstr ""
+"Der 'switch'-Befehl benötigt einen Ausdruck, der in runde Klammern "
+"eingeschlossen ist"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1415
+msgid "Unexpected end of buffer in switch condition block"
+msgstr "Der Puffer endete unerwartet in einem 'switch'-Bedingungblock"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1422
+msgid ""
+"Found character %q (unicode %x) where a 'case','match','regexp','default' or "
+"'break' label was expected"
+msgstr ""
+"Zeichen %q (Unicode %x) gefunden, wohingegen eine 'case'-, 'match'-, "
+"regexp'-, 'default'-, oder 'break'-Markierung erwartet wurde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1460
+msgid ""
+"Found 'break' label where a 'case','match','regexp' or 'default' label was "
+"expected"
+msgstr ""
+"Eine 'break'-Markierung wurde gefunden, wohingegen eine 'case'-, 'match'-, "
+"'regexp'-, oder 'default'-Markierung erwartet wurde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1465
+msgid ""
+"Found token '%Q' where a 'case','match','regexp','default' or 'break' label "
+"was expected"
+msgstr ""
+"Der Token '%Q' wurde gefunden, wohingegen eine 'case'-, 'match'-, 'regexp'-, "
+"'default'-, oder 'break'-Markierung erwartet wurde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1528
+msgid "Senseless empty switch command: fix the script"
+msgstr ""
+"Es wurde ein sinnloser leerer 'switch'-Befehl gefunden: bitte reparieren Sie "
+"das Skript"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1562
+msgid "Unexpected end of buffer in defpopup block"
+msgstr "Der Puffer endete unerwartet in einem 'defpopup'-Block"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1569
+msgid ""
+"Found character %q (unicode %x) where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+"Zeichen %q (Unicode %x) gefunden, wohingegen eine 'prologue'-, 'separator'-, "
+"'label'-, 'item'-, 'extpopup'-, oder 'epilogue'-Markierung erwartet wurde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1668
+msgid "Found empty prologue block: maybe you need to fix the script?"
+msgstr ""
+"Es wurde ein sinnloser leerer 'prologue'-Block gefunden: bitte reparieren "
+"Sie das Skript"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1670
+msgid "Found empty epilogue block: maybe you need to fix the script?"
+msgstr ""
+"Es wurde ein sinnloser leerer 'epilogue'-Block gefunden: bitte reparieren "
+"Sie das Skript"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1703
+msgid ""
+"Unexpected empty <text> field in label parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Es wurde ein unerwartetes leeres <text>-Feld in den 'label'-Parametern "
+"gefunden: bitte nehmen Sie /help defpopup für die Syntax zur Hilfe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1753
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1801
+msgid ""
+"Unexpected empty <text> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Es wurde ein unerwartetes leeres <text>-Feld in den 'extpopup'-Parametern "
+"gefunden: bitte nehmen Sie /help defpopup für Syntax zur Hilfe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1777
+msgid ""
+"Found empty instruction for popup item: maybe you need to fix the script?"
+msgstr ""
+"Es wurde eine leere Anweisung für das 'popup'-Element gefunden: Vielleicht "
+"muss das Skript repariert werden?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1809
+msgid ""
+"Unexpected empty <name> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Es wurde ein unerwartetes leeres <text>-Feld in den 'extpopup'-Parametern "
+"gefunden: bitte nehmen Sie /help defpopup für die Syntax zur Hilfe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1821
+msgid ""
+"Found token '%Q' where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+"Der Token '%Q' wurde gefunden, wohingegen eine 'prologue'-, 'separator'-, "
+"'label'-, 'popup'-, 'item'-, 'extpopup'-, oder 'epilogue'- Markierung "
+"erwartet wurde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1931
+msgid "The 'defpopup' command needs an expression enclosed in parenthesis"
+msgstr ""
+"Der 'defpopup'-Befehl benötigt einen Ausdruck, der in runden Klammern "
+"eingeschlossen ist"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:109
+msgid "beginning of input"
+msgstr "Beginn der Eingabe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:121
+msgid ""
+"Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %s"
+"\" for the command syntax"
+msgstr ""
+"Zeichen '%q' (Unicode 0x%x) gefunden, wohingegen '%c' erwartet wurde: "
+"Benutzen Sie \"/help %s\" zur Anzeige der Befehlssyntax"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:124
+#, c-format
+msgid ""
+"Found end of input where character '%c' was expected: see \"/help %s\" for "
+"the command syntax"
+msgstr ""
+"Es wurde das Ende der Eingabe erkannt, wohingegen noch '%c' erwartet wurde: "
+"Benutzen Sie \"/help %s\" zur Anzeige der Befehlssyntax"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:197
+msgid "Empty script"
+msgstr "Leeres Skript"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2650
+msgid ""
+"Syntax error after '%' variable prefix. If you want to use a plain '%' in "
+"the code you need to escape it"
+msgstr ""
+"Ein Syntaxfehler wurde nach dem '%'-Variablenprefix entdeckt. Wenn Sie ein "
+"einfaches '%' im Code benutzt wollen, so sollten Sie es \"escapen\" (\"\\%"
+"\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2667
+msgid "Objects have no extended scope variables"
+msgstr "Objekte haben keine erweiterten Gültigkeitsbereichsvariablen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2727
+msgid "Found character '%q' (unicode %x) where an instruction was expected"
+msgstr ""
+"Zeichen '%q' (Unicode %x) gefunden, wohingegen eine Anweisung erwartet wurde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2760
+msgid "Unterminated instruction block"
+msgstr "Nicht abgeschlossener Anweisungsblock"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2761
+msgid "Unexpected end of script in instruction block (missing closing brace)"
+msgstr ""
+"Das Skript endete unerwartet im Anweisungsblock (schließende geschweifte "
+"Klammer fehlt)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2838
+msgid ""
+"The dash after a command should be followed by a letter (switch), by a digit "
+"(negative number) or be escaped"
+msgstr ""
+"Dem Bindestrich nach einem Befehl sollte entweder ein Buchstabe bzw. eine "
+"Zahl folgen (negative Nummer), oder er sollte escapet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2842
+msgid "Unexpected character '%q' (unicode %x) after a switch dash"
+msgstr ""
+"Unerwartetes Zeichen '%q' (Unicode %x) nach dem Schalter-Bindestrich gefunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2844
+msgid "Unexpected end of script after a switch dash"
+msgstr "Das Skript endete unerwartet nach einem Schalter-Bindestrich"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2869
+msgid ""
+"The above problem might be related to the switch dash and the following "
+"equal sign"
+msgstr ""
+"Das obige Problem kann mit dem Schalter-Bindestrich und dem folgenden "
+"Gleichheitszeichen zusammenhängen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2948
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3016
+msgid "Unexpected end of script in parameter list"
+msgstr "Das Skript endete unerwartet in einer Parameterliste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2954
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3022
+msgid "Unexpected end of line in parameter list"
+msgstr "Die Zeile endete unerwartet in einer Parameterliste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3083
+msgid ""
+"Nested character %q corresponding to expected terminator, this might confuse "
+"me a bit: it is a good idea to enclose it in quotes"
+msgstr ""
+"Das ineinander verschachtelte Zeichen %q gehört zum erwartenden Terminator; "
+"das könnte den Parser u.U. verwirren, es wäre angebracht ihn in Anführungs- "
+"zeichen zu setzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3093
+msgid "Skipping nested terminator character %q"
+msgstr ""
+"Das ineinander verschachtelte Terminisationszeichen '%q' wird übersprungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3120
+msgid "Stray backslash at the end of the script"
+msgstr "Es wurde ein umgekehrter Schrägstrich am Ende des Skripts gefunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3393
+msgid "Unterminated hash key"
+msgstr "Nicht abgeschlossener Hashschlüssel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3387
+msgid "Unexpected end of script in hash key (missing '}' character ?)"
+msgstr ""
+"Das Skript endete unerwartet in einem Hashschlüssel (fehlt ein '}' Zeichen?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3394
+msgid ""
+"Unexpected end of line in hash key (missing '}' character or unescaped "
+"newline)"
+msgstr ""
+"Die Zeile endete unerwartet im Hash-Schlüssel (entweder es fehlt ein '}'- "
+"Zeichnen, oder Sie müssen das Zeilenende escapen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3679
+msgid "Unterminated string constant"
+msgstr "Nicht terminierte Zeichenkettenkonstante"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3673
+msgid "Unexpected end of script in string constant (missing \" character ?)"
+msgstr ""
+"Das Skript endete unerwartet in einer Zeichenkettenkonstante (fehlt ein \"-"
+"Zeichen?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3680
+msgid ""
+"Unexpected end of line in string constant (missing \" character or unescaped "
+"newline)"
+msgstr ""
+"Die Zeile endete unerwartet in einer Zeichenkettenkonstante (entweder es "
+"fehlt ein \"-Zeichen oder Sie müssen das Zeilenende escapen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_processmanager.cpp:225
+msgid "Error triggered from process callback handler: killing process"
+msgstr ""
+"Es wurde ein Fehler durch den Zeitgeber-Rückrufhandler ausgelöst: Prozess "
+"wird getötet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arraycount.cpp:72
+msgid ""
+"The argument of the array count '#' operator didn't evaluate to an array: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+"Das Argument des '#'-Feldzähleroperatoren konnte nicht zu einem Feld "
+"ausgewertet werden: es wird die automatische Konvertierung vom Typ ' %Q "
+"bereitgestellt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:197
+msgid "This window has no associated IRC context and is not a DCC chat"
+msgstr ""
+"Dieses Fenster hat keinen zugeordneten IRC-Kontext und ist kein DCC-Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:293
+msgid "Class \"%Q\" is not defined"
+msgstr "Klasse \"%Q\" ist nicht definiert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:303
+msgid "The specified parent object does not exist"
+msgstr "Das angegebene Elternobjekt existiert nicht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:430
+msgid "There is no option named '%Q'"
+msgstr "Es gibt keine Option names '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:85
+msgid "Internal error: pure virtual evaluateReadOnly called"
+msgstr ""
+"Es ist ein interner Fehler aufgetreten: Es wure ein rein virtuelles "
+"evaluateReadOnly aufgerufen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:91
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:104
+msgid ""
+"Internal error: trying to evaluate as read-write a read-only data location"
+msgstr ""
+"Es ist ein interner Fehler aufgetreten: Es wurde versucht, einen nur "
+"lesbaren Datenort als schreibaren Datenort auszuwerten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:98
+msgid "Internal error: pure virtual evaluateReadOnlyInObjectScope called"
+msgstr ""
+"Es ist ein interner Fehler aufgetreten: Es wurde ein rein virtuelles "
+"evaluateReadOnlyIn-ObjectScope aufgerufen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:215
+msgid "[KVS]%c Warning: %Q"
+msgstr "[KVS]%c Warnung: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:211
+msgid "[KVS]%c Compilation Error: %Q"
+msgstr "[KVS]%c Umwandlungsfehler: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:219
+msgid "[KVS]%c Runtime Error: %Q"
+msgstr "[KVS]%c Laufzeitfehler: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:224
+msgid "[KVS] in script context \"%Q\""
+msgstr "[KVS] in Skriptkontext \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:226
+msgid "[KVS] in script context \"%Q\", %Q"
+msgstr "[KVS] in Skriptkontext \"%Q\", %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:233
+msgid "[KVS] Code listing:"
+msgstr "[KVS] Code:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:238
+msgid "[KVS] Window:"
+msgstr "[KVS] Fenster:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:242
+#, c-format
+msgid "[KVS] Destroyed window with pointer %x"
+msgstr "[KVS] Fenster mit Pointer %x zerstört"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:246
+msgid "[KVS] Call stack:"
+msgstr "[KVS] Aufrufstack:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:464
+#, c-format
+msgid "Window with ID '%s' not found, returning empty string"
+msgstr ""
+"Ein Fenster mit der ID '%s' wurde nicht gefunden, es wird ein leerer String "
+"wird zurückgeliefert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:130
+msgid "The specified window is not a channel"
+msgstr "Das angegebene Fenster ist kein Kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:392
+msgid "The $sw() function can be used only in aliases"
+msgstr "Die $sw()-Funktion kann nur in Aliasen benutzt werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:302
+msgid "Invalid pitch value: using default"
+msgstr "Der Abstand ist ungültig: benutze den standardmäßigen Abstand"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:312
+msgid "Invalid duration value: using default"
+msgstr "Die Dauer ist ungültig: benutze die standardmäßige Dauer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:421
+msgid "No button with type %Q named %Q"
+msgstr "Es gibt keinen Knopf vom Typ %Q namens %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:632
+msgid "Can't delete a null object reference"
+msgstr "Eine Null-Objekt-Referenz kann nicht gelöscht werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:638
+msgid "Can't delete an inexisting object"
+msgstr "Das Objekt, das gelöscht werden sollte, existiert nicht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:692
+msgid "Inexisting popup \"%Q\""
+msgstr "Es existiert kein Aufklappmenü namens \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:698
+msgid ""
+"Popup menu self-modification is not allowed (the popup is probably open)"
+msgstr ""
+"Das Aufklappmenü darf sich nicht selbst bearbeiten (ist das Aufklappmenü "
+"eventuell noch offen?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:705
+msgid "The menu item with id \"%Q\" does not exist in popup \"%Q\""
+msgstr ""
+"Das Menüelement mit der ID \"%Q\" existiert nicht in Aufklappmenü \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:860
+msgid ""
+"The argument of the -w switch did not evaluate to a valid window id: using "
+"default"
+msgstr ""
+"Das Argument des -w-Schalters kann nicht zu einer gültigen Fenster-ID "
+"ausgewertet werden: benutze die standardmäßige ID"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:869
+msgid ""
+"The argument of the i switch did not evaluate to a number: using default"
+msgstr ""
+"Das Argument des -i-Schalters kann nicht zu einer gültigen Fenster-ID "
+"ausgewertet werden: benutze die standardmäßige ID"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:981
+msgid "Invalid color-set specification, using default"
+msgstr ""
+"Die Farb-Set-Spezifikation ist ungültig: Bbenutze die standardmäßige "
+"Spezifikation"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:992
+#, c-format
+msgid "Window '%s' not found, using current one"
+msgstr "Das Fenster '%s' konnte nicht gefunden werden, benutze das akuelle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:78
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a callback "
+"command named '%Q'"
+msgstr ""
+"Der Modulbefehlsaufruf ist fehlgeschlagen: das Modul '%Q' exportiert keinen "
+"Rückrufbefehl namens '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp:401
+#, c-format
+msgid "The popup '%s' is actually locked: 'self-modifications' are not allowed"
+msgstr ""
+"Das Aufklappmenü '%s' ist in Wirklichkeit gesperrt: 'Selbstmodifikationen' "
+"sind nicht erlaubt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:822
+#, c-format
+msgid "Ignoring DCC from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "Ignoriere DCC von \r!nc\r%s\r [%s@\r!h\r%s\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:839
+#, c-format
+msgid "Ignoring CTCP from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "Ignoriere die CTCP-Abfrage durch \r!n\r%s\r [%s@\r!h\r%s\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:978
+msgid "The following CTCP reply has unrecognized target %Q"
+msgstr "Die nachfolgende CTCP-Antwort hat das unerkanntes Ziel %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1025
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1128
+msgid "Channel CTCP"
+msgstr "Kanal-CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:988
+msgid "%Q %Q reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "%Q %Q-Antwort von \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1018
+msgid "The following CTCP request has unrecognized target %Q"
+msgstr "Die nachfolgende CTCP-Abfrage hat das unerkanntes Ziel %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1032
+msgid ""
+"%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignored (flood limit "
+"exceeded)"
+msgstr ""
+"%Q %Q%c-Abfrage durch \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q) wurde ignoriert (die "
+"festgelegte Überflutungsgrenze wurde erreicht)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1036
+msgid "ignored (unrecognized)"
+msgstr "ignoriert (der Anfragentyp konnte nicht erkannt werden)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "ignored"
+msgstr "ignoriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "replied"
+msgstr "beantwortet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1041
+msgid "%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+msgstr "%Q %Q%c-Abfrage durch \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1079
+msgid "The following CTCP PING reply has unrecognized target \"%Q\""
+msgstr "Die nachfolgende CTCP PING-Antwort hat das unerkannte Ziel \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1113
+#, c-format
+msgid ""
+"The following CTCP PING reply has a broken time identifier \"%S\", don't "
+"trust the displayed time"
+msgstr ""
+"Die nachfolgende CTCP PING-Antwort hat den fehlerhaften Zeitbezeichner \"%S"
+"\": man sollte der angezeigen Zeit nicht vertrauen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1132
+msgid "%Q PING reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sec %u msec"
+msgstr ""
+"%Q PING-Antwort von \r!n\r%Q\r [%Q@r!h\r%Q\r]: %u Sekunden %u Millisekunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1466
+msgid "The following CTCP ACTION has unrecognized target %Q"
+msgstr "Die nachfolgende CTCP ACTION-Antwort hat das unerkanntes Ziel \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1471
+msgid "CTCP ACTION from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "CTCP ACTION von \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1517
+msgid "Unable to add file offer for file %Q (File not readable?)"
+msgstr ""
+"Die Datei %Q konnte nicht zum Dateiangebot hinzugefügt werden (ist die Datei "
+"nicht lesbar?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1521
+msgid "Added %d sec file offer for file %Q (%Q) to recipient %Q"
+msgstr ""
+"%d Sekunden für das Dateiangebot der Datei %Q (%Q) zum Empfänger %Q "
+"hinzugefügt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "private"
+msgstr "privat(e)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "channel notification:"
+msgstr "Kanalbenachrichtigung:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1579
+msgid "notification"
+msgstr "Benachrichtigung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1584
+msgid "%Q unsets avatar"
+msgstr "%Q entfernte das Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1591
+msgid "%Q changes avatar to %s"
+msgstr "%Q änderte das Avatar zu %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1637
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (HTTP GET %s)"
+msgstr ""
+": Es ist keine gültige lokale Kopie eines Avatars vorhanden; frage eine "
+"Kopie an (per HTTP GET %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1644
+msgid ""
+": No valid local copy of avatar available; failed to start an HTTP transfer, "
+"ignoring"
+msgstr ""
+": Es ist keine gültige lokale Kopie eines Avatars vorhanden; der Start der "
+"HTTP-Übertragung ist fehlgeschlagen: wird ignoriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1652
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (DCC GET %s)"
+msgstr ""
+": Es ist keine gültige lokale Kopie eines Avatars vorhanden; frage eine "
+"Kopie an (per DCC GET %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1664
+msgid ""
+": No valid local copy of avatar available; flood limit exceeded, ignoring"
+msgstr ""
+": Keine gültige lokale Kopie eines Avatars vorhanden; Flutbegrenzung "
+"erreicht: wird ignoriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1669
+msgid ": No valid local copy of avatar available, ignoring"
+msgstr ""
+": Es ist keine gültige lokale Kopie eines Avatars vorhanden; der Umstand "
+"wird ignoriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1677
+msgid ": No such nickname in the user database, ignoring the change"
+msgstr ""
+": Es ist kein solcher Spitzname in der Benutzerdatenbank; die Änderung wird "
+"ignoriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1717
+msgid "Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S)"
+msgstr "DDC %S-Abfrage durch \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S) wird ignoriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1759
+msgid "Processing DCC %Q request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s)"
+msgstr ""
+"DCC %Q-Abfrage durch \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s) wird verarbeitet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1770
+#, c-format
+msgid "Unable to process the above request: Cannot load DCC module (%s)"
+msgstr ""
+"Die Verarbeitung des obigen Auftrags ist fehlgeschlagen: das DCC-Modul (%s) "
+"konnte nicht geladen werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1776
+msgid "Unable to process the above request: DCC module may be broken"
+msgstr ""
+"Die Verarbeitung der obigen Anfrage ist fehlgeschlagen: das DCC-Modul "
+"scheint fehlerhaft zu sein"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:132
+msgid ""
+"[Server parser]: Encountered problems while parsing the following message:"
+msgstr ""
+"[Server-Parser]: Es wurden Probleme beim Parsen folgender Nachricht "
+"festgestellt:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:134
+msgid "[Server parser]: [%s][%s] %Q"
+msgstr "[Server-Parser]: [%s][%s] %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:136
+#, c-format
+msgid "[Server parser]: %s"
+msgstr "[Server-Parser]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:98
+msgid "Received ping from \r!s\r%Q\r (PING %Q), replied pong"
+msgstr ""
+"Ein Ping wurde von \r!s\r%Q\r (PING %Q) empfangen: antwortete mit \"PONG\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:125
+#, c-format
+msgid "Received pong from \r!s\r%s\r (PONG %s)"
+msgstr "Ein Pong wurde von \r!s\r%s\r empfangen (PONG %s) "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:151
+msgid "Server ERROR: %Q"
+msgstr "Server-FEHLER: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:174
+msgid "Missing channel parameter in join message"
+msgstr "Es fehlt der Kanalparameter in der join-Nachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:209
+msgid "Received a join message for an unknown channel, possible desync"
+msgstr ""
+"Es wurde eine Join-Nachricht von einem unbekannten Kanal empfangen, "
+"möglicherweise liegt Desynchronisation zwischen Server und Client vor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:305
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r [implicit +%c umode change]"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] hat \r!c\r%Q\r [implizite +%c "
+"Benutzermodusänderung] betreten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:310
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] hat \r!c\r%Q\r betreten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:324
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] hat gerade \r!c\r%Q\r betreten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:355
+msgid "Received a part message for an unknown channel, possible desync"
+msgstr ""
+"Es wurde eine Part-Nachricht von einem unbekannten Kanal empfangen, "
+"möglicherweise liegt Desynchronisation zwischen Server und Client vor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:384
+msgid "You have left channel \r!c\r%Q\r"
+msgstr "Sie haben den Kanal \r!c\r%Q\r verlassen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:386
+msgid "You have left channel \r!c\r%Q\r: %Q"
+msgstr "Sie haben den Kanal \r!c\r%Q\r verlassen: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:402
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] hat \r!c\r%Q\r verlassen: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:406
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] hat \r!c\r%Q\r verlassen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:420
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r: %Q"
+msgstr "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] hat gerade \r!c\r%Q\r verlassen: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:424
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r"
+msgstr "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] hat gerade \r!c\r%Q\r verlassen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:494
+#, c-format
+msgid "Netsplit detected: %s"
+msgstr "Netzwerktrennung wurde erkannt: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:546
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:562
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] hat den IRC verlassen: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:589
+msgid "Received a kick message for an unknown channel, possible desync"
+msgstr ""
+"Es wurde eine Kick-Nachricht von einem unbekannten Kanal empfangen, "
+"möglicherweise liegt Desynchronisation zwischen Server und Client vor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:626
+msgid "You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Von \r!c\r%Q\r von \r!n\r%Q\r [%Q@\r!h\r%Q\r] hinausgeworfen: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:633
+msgid "Attempting to rejoin \r!c\r%Q\r..."
+msgstr "Es wird versucht \r!c\r%Q\r erneut zu betreten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:670
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@"
+"\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] wurde aus \r!c\r%Q\r von \r!n\r%Q\r [%Q@\r!h\r%Q"
+"\r] hinausgeworfen: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:682
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just been kicked from \r!c\r%Q\r by \r!n\r%Q"
+"\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] wurde gerade aus \r!c\r%Q\r von \r!n\r%Q\r [%Q@\r!"
+"h\r%Q\r] hinausgeworfen: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:710
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+"Die folgende Nachricht sieht verschlüsselt aus, aber die "
+"Verschlüsselungsroutine konnte sie nicht dekodieren: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:776
+msgid "Ignoring query-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Ignoriere Anfragen-PRIVMSG von \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:843
+msgid ""
+"Spam privmsg from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%s\")"
+msgstr ""
+"Private Spamnachricht von \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (paßt auf das "
+"Spamwort \"%s\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:984
+msgid "Ignoring channel-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Ignoriere Kanal-PRIVMSG von \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1106
+msgid "Ignoring Notice from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Ignoriere Notiz von \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1159
+msgid "NickServ requests authentication, executing scheduled command"
+msgstr "NickServ fragt nach Authentifizierung: führe geplanten Befehl aus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1162
+msgid ""
+"The scheduled NickServ identification command appears to be broken, please "
+"change the setting"
+msgstr ""
+"Der geplante NickServ-Befehl sieht nicht korrekt aus: bitte ändern Sie die "
+"Einstellung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1213
+msgid ""
+"Spam notice from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%Q\")"
+msgstr ""
+"Spamnotiz von \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (paßt auf das Spamwort \"%Q\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1394
+msgid "Received a topic message for an unknown channel, possible desync"
+msgstr ""
+"Es wurde eine Themennachricht von einem unbekannten Kanal empfangen, "
+"möglicherweise liegt Desynchronisation zwischen Server und Client vor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1413
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has changed topic to \"%Q%c\""
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] hat das Thema geändert auf \"%Q%c\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1512
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] heißt nun \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1063
+msgid "You have changed your nickname to %Q"
+msgstr "Sie haben Ihren Spitznamen in %Q geändert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1477
+msgid ""
+"The target of this query was lost and has been found when \r!n\r%Q\r [%Q@\r!h"
+"\r%Q\r] changed his nickname to \r!n\r%Q\r"
+msgstr ""
+"Das Ziel dieser Anfrage wurde verloren, aber wiedergefunden, als \r!n\r%Q\r "
+"[%Q@\r!h\r%Q\r] seinen Spitznamen in \r!n\r%Q\r änderte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1486
+msgid ""
+"The recent nickname change from \r!n\r%Q\r to \r!n\r%Q\r caused a query "
+"collision: merging output"
+msgstr ""
+"Die letzte Spitznamenänderung von \r!n\r%Q\r nach \r!n\r%Q\r verursachte "
+"eine Anfragenkollision: die Ausgabe wird zusammengeführt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1495
+msgid "End of merged output"
+msgstr "Ende der zusammengeführten Ausgabe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1540
+msgid "Ignoring invite from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "Ignoriere Invite von \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "autojoining"
+msgstr "betrete ihn automagisch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "double-click the channel name to join"
+msgstr "Doppelklicken Sie auf den Kanalnamen, um ihn zu betreten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1556
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] invites you to channel \r!c\r%Q\r (%Q)"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] hat Sie in den Kanal \r!c\r%Q\r (%Q) eingeladen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1564
+msgid "Received an invite message directed to another nick, possible desync"
+msgstr ""
+"Es wurde eine Invite-Nachricht empfangen, die jedoch für einen anderen "
+"Spitznamen bestimmt war; möglicherweise liegt Desynchronisation zwischen "
+"Server und Client vor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1584
+msgid "WALLOPS from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "WALLOPS von \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1648
+#, c-format
+msgid "You have set user mode %s"
+msgstr "Sie haben den Benutzermodus %s gesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1655
+msgid "Received a mode change for an unknown channel, possible desync"
+msgstr ""
+"Es wurde eine Modusänderung von einem unbekannten Kanal empfangen, "
+"möglicherweise liegt Desynchronisation zwischen Server und Client vor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1731
+msgid "%Q [%Q@%Q] has set channel key to \"\r!m-k\r%Q\r\""
+msgstr "%Q [%Q@%Q] hat den Kanalschlüssel auf \"\r!m-k\r%Q\r\" gesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1734
+msgid "%Q [%Q@%Q] has unset the channel key"
+msgstr "%Q [%Q@%Q] hat den Kanalschlüssel aufgehoben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1754
+msgid "%Q [%Q@%Q] has set channel \r!m-l\rlimit to %Q\r"
+msgstr "%Q [%Q@%Q] hat die Kanal-\r!m-l\rBegrenzung auf %Q\r gesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1757
+msgid "%Q [%Q@%Q] has unset the channel limit"
+msgstr "%Q [%Q@%Q] hat die Kanalbegrenzung aufgehoben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1779
+msgid "%Q [%Q@%Q] has set mode %c%c \r!n\r%Q\r"
+msgstr "%Q [%Q@%Q] hat den Modus %c%c \r!n\r%Q\r gesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1787
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1834
+msgid "%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"
+msgstr "%Q [%Q@%Q] hat den Kanal-\r!m%c%c\r-Modus %c%c\r gesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1819
+msgid "%Q [%Q@%Q] has set mode %c%c \r!m%c%c\r%Q\r"
+msgstr "%Q [%Q@%Q] hat den Modus %c%c \r!m%c%c\r%Q\r gesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1860
+msgid "%Q [%Q@%Q] has set mode %s %Q"
+msgstr "%Q [%Q@%Q] setzt den Modus %s %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1863
+msgid "%Q [%Q@%Q] has set channel mode %s"
+msgstr "%Q [%Q@%Q] setzt den Kanalmodus %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:147
+#, c-format
+msgid ""
+"One or more standard mode flags are missing in the server available modes.\n"
+"This is caused either by a non RFC1459-compliant IRC daemon or a broken "
+"server reply.\n"
+"Server umodes seem to be '%s' and channel modes seem to be '%s'.\n"
+"Ignoring this reply and assuming that the basic set of modes is available.\n"
+"If you have strange problems, try changing the server."
+msgstr ""
+"Ein oder mehrere Standardmodiflags fehlen in den verfügbaren Servermodi.\n"
+"Dies kann durch einen nicht-RFC1459-konformen IRC-Server oder eine "
+"fehlerhafte Serverantwort verursacht werden.\n"
+"Serverbenutzermodi scheinen '%s' und Kanalmodi '%s' zu sein.\n"
+"KVIrc ignoriert nun diese Antwort und nimmt an, dass der Basissatz an Modi "
+"verfügbar ist.\n"
+"Wenn große Probleme auftreten, sollten Sie versuchen den Server zu wechseln."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:159
+msgid "Available user modes:"
+msgstr "Verfügbare Benutzermodi:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:169
+msgid ": Unknown user mode"
+msgstr ": Unbekannter Benutzermodus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:177
+msgid "Available channel modes:"
+msgstr "Verfügbare Kanalmodi:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:197
+msgid "Server %Q version %S supporting user modes '%S' and channel modes '%S'"
+msgstr ""
+"Server %Q Version %S unterstützt die Benutzermodi '%S' und die Kanalmodi '%S'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:244
+msgid "This server supports the WATCH notify list method, it will be used"
+msgstr ""
+"Dieser Server unterstützt die WATCH-Benachrichtigungslistenmethode; benutze "
+"diese Methode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:262
+msgid "The current network is %Q"
+msgstr "Das aktuelle Netzwerk ist %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:303
+msgid "This server supports the CODEPAGE command, it will be used"
+msgstr "Dieser Server unterstützt den CODEPAGE-Befehl, er wird benutzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:319
+#, c-format
+msgid "This server supports: %s"
+msgstr "Der Server unterstützt: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:375
+msgid "End of NAMES for \r!c\r%Q\r"
+msgstr "Ende von NAMES für \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:472
+msgid "Names for \r!c\r%Q\r: %Q"
+msgstr "Namen für \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:487
+msgid "(unknown)"
+msgstr "(unbekannt)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:491
+msgid "Channel topic is: %Q"
+msgstr "Kanalthema ist: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:498
+msgid "Topic for \r!c\r%Q\r is: %Q"
+msgstr "Thema für \r!c\r%Q\r ist: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:516
+msgid "No channel topic is set"
+msgstr "Es ist kein Kanalthema gesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:521
+msgid "No topic is set for channel \r!c\r%Q\r"
+msgstr "Es ist kein Thema für Kanal \r!c\r%Q\r gesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:560
+msgid "Topic was set by %Q on %Q"
+msgstr "Das Thema wurde von %Q am %Q gesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:561
+msgid "Topic was set by %Q"
+msgstr "Das Thema wurde von %Q gesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:569
+msgid "Topic for \r!c\r%Q\r was set by %Q on %Q"
+msgstr "Das Thema für \r!c\r%Q\r wurde von %Q am %Q gesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:572
+msgid "Topic for \r!c\r%Q\r was set by %Q"
+msgstr "Das Thema für \r!c\r%Q\r wurde von %Q gesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:592
+msgid "Channel mode for \r!c\r%Q\r is %s"
+msgstr "Der Kanalmodus für \r!c\r%Q\r ist %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:595
+msgid "User mode for \r!n\r%Q\r is %s"
+msgstr "Der Benutzermodus für \r!n\r%Q\r ist %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:631
+msgid "End of channel %Q for \r!c\r%Q\r"
+msgstr "Ende der %Q für Kanal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:635
+msgid "ban list"
+msgstr "Bann-Liste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:636
+msgid "invite list"
+msgstr "Einladungs-Liste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:637
+msgid "ban exception list"
+msgstr "Bannausnahmen-Liste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:658
+msgid "%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"
+msgstr "%Q für \r!c\r%Q\r: \r!m-%c\r%Q\r (gesetzt von %Q am %Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:665
+msgid "Ban listing"
+msgstr "Bann-Auflistung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:668
+msgid "Invite listing"
+msgstr "Einladungs-Auflistung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:671
+msgid "Ban exception listing"
+msgstr "Bannausnahmen-Auflistung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:740
+msgid ""
+"WHO entry for %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cChannel%c: \r!c\r%Q\r, %"
+"cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAway%c: %Q, %cReal name"
+"%c: %Q"
+msgstr ""
+"WHO-Eintrag für %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cKanal%c: \r!c\r%Q\r, %"
+"cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAbwesend%c: %Q, %"
+"cWirklicher Name%c: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:797
+msgid "End of WHO list for %Q"
+msgstr "Ende der WHO-Liste für %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:856
+msgid ""
+"Something really weird is happening: the server is refusing all the login "
+"nicknames..."
+msgstr ""
+"Etwas wirklich seltsames ist passiert: der Server lehnte den Login mit allen "
+"Spitznamen ab ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:861
+msgid ""
+"The server is refusing all the login nicknames: giving up, you must send the "
+"nickname manually"
+msgstr ""
+"Der Server lehnte den Login mit allen Spitznamen ab: es wird abgebrochen, "
+"bitte geben Sie manuell einen Spitznamen ein"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:871
+msgid "No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."
+msgstr ""
+"Es gab keine Möglichkeit zum Einloggen als '\r!n\r%Q\r' (%d: %Q), es wird '%"
+"Q' versucht ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:945
+msgid "Command syntax %Q: %Q"
+msgstr "Befehlssyntax %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:973
+msgid "Tip: %Q"
+msgstr "Tipp: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:976
+msgid "Tip for %Q: %Q"
+msgstr "Tipp für %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:993
+msgid "End of help about %Q"
+msgstr "Ende der Hilfseinträge über %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1037
+msgid "%c\r!n\r%Q\r%c is away: %Q"
+msgstr "%c\r!n\r%Q\r%c ist abwesend: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1090
+msgid "%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "%c\r!n\r%Q\r%c ist %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1095
+msgid "%c\r!n\r%Q\r%c's real name: %Q"
+msgstr "%c\r!n\r%Q\r%cs wirklicher Name: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1115
+msgid "%c\r!n\r%Q\r%c was %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "%c\r!n\r%Q\r%c wurde %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1119
+msgid "%c\r!n\r%Q\r%c's real name was: %Q"
+msgstr "%c\r!n\r%Q\r%cs wirklicher Name war: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1183
+msgid "%c\r!n\r%Q\r%c's channels: %Q"
+msgstr "%c\r!n\r%Q\r%cs Kanäle: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1220
+msgid "Received a broken RPL_WHOISIDLE, can't evaluate the idle time"
+msgstr ""
+"Fehlerhaftes RPL_WHOISIDLE empfangen, Leerlaufzeit kann nicht ermittelt "
+"werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1230
+msgid "%c\r!n\r%Q\r%c's idle time: %ud %uh %um %us"
+msgstr "%c\r!n\r%Q\r%cs Leerlaufzeit: %ud %uh %um %us"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1240
+msgid "%c\r!n\r%Q\r%c's signon time: %Q"
+msgstr "%c\r!n\r%Q\r%cs Einloggzeit: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1274
+msgid "%c\r!n\r%Q\r%c's server: \r!s\r%Q\r - %Q"
+msgstr "%c\r!n\r%Q\r%cs Server: \r!s\r%Q\r - %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1293
+msgid "%c\r!n\r%Q\r%c is authenticated as %Q"
+msgstr "%c\r!n\r%Q\r%cs ist authentisiert als %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1325
+msgid "%c\r!n\r%Q\r%c's info: %Q"
+msgstr "%c\r!n\r%Q\r%cs Info: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1372
+msgid "%c\r!n\r%Q\r%c WHOIS info from \r!s\r%Q\r"
+msgstr "%c\r!n\r%Q\r%c WHOIS-Info von \r!s\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1389
+msgid "%c\r!n\r%Q\r%c WHOWAS info from \r!s\r%Q\r"
+msgstr "%c\r!n\r%Q\r%c WHOWAS-Info von \r!s\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1457
+msgid "Can't evaluate creation time"
+msgstr "Erstellungszeit kann nicht ermittelt werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1465
+msgid "Channel was created at %Q"
+msgstr "Der Kanal wurde am %Q erstellt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1470
+msgid "Channel \r!c\r%Q\r was created at %Q"
+msgstr "Der Kanal \r!c\r%Q\r wurde am %Q erstellt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1511
+msgid "USERHOST info: %Q"
+msgstr "USERHOST-Info: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1532
+msgid "Channel list begin: channel, users, topic"
+msgstr "Kanallistenbeginn: Kanal, Benutzer, Titel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1559
+msgid "List: %Q"
+msgstr "Liste: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1573
+msgid "End of LIST"
+msgstr "Ende von LIST"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1597
+msgid "Link: %Q"
+msgstr "Verknüpfung: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1612
+msgid "End of LINKS"
+msgstr "Ende von LINKS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1641
+msgid "[Leaving away status after %ud %uh %um %us]: %Q"
+msgstr "[Der \"Abwesend\"-Status wird nach %ud %uh %um %us verlassen]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1645
+msgid "[Leaving away status]: %Q"
+msgstr "[Der \"Abwesend\"-Status wird verlassen]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1652
+msgid "Restoring pre-away nickname (%Q)"
+msgstr ""
+"Der Spitzname, der vor dem Abwesendgehen gesetzt war (%Q), wird wieder "
+"angenommen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1672
+msgid "[Entering away status]: %Q"
+msgstr "[Es wird in den \"Abwesend\"-Status gewechselt]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1690
+msgid "Setting away nickname (%Q)"
+msgstr "Abwesend-Spitzname (%Q) wird gesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1762
+#, c-format
+msgid "%c\r!s\r%s\r%c's server info: %s"
+msgstr "%c\r!n\r%s\r%cs Server-Info: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1773
+#, c-format
+msgid "%c\r!s\r%s\r%c's administrator is %s"
+msgstr "%c\r!n\r%s\r%cs Administrator ist %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1784
+#, c-format
+msgid "%c\r!s\r%s\r%c's contact adress is %s"
+msgstr "%c\r!n\r%s\r%cs Kontaktadresse ist %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1812
+msgid "\r!n\r%Q\r invited %Q into channel %Q"
+msgstr "\r!n\r%Q\r hat \r!n\r%Q\r in den Kanal %Q eingeladen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1834
+#, c-format
+msgid "%c\r!s\r%s\r%c's information:"
+msgstr "%c\r!n\r%s\r%cs Info:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1844
+#, c-format
+msgid "End of %c\r!s\r%s\r%c's information"
+msgstr "Ende aller bekannten Informationen über %c\r!s\r%s\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1855
+msgid "%c\r!s\r%s\r%c's time is %Q"
+msgstr "%c\r!n\r%s\r%cs Zeit ist %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1866
+msgid "%Q: no such server"
+msgstr "%Q: kein solcher Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1877
+msgid "%Q: no such channel"
+msgstr "%Q: kein solcher Kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1891
+msgid "Cannot sent to channel: %Q"
+msgstr "Der Text konnte nicht an den Kanal gesendet werden: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1894
+msgid "Cannot sent text to channel %Q: %Q"
+msgstr "Konnte den Text nicht zum Kanal \r!c\r%Q\r senden: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1909
+msgid "Cannot sent to channel"
+msgstr "Der Text konnte nicht an den Kanal gesendet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1912
+msgid "Cannot sent text to channel %Q"
+msgstr "Der Text konnte nicht an den Kanal \r!c\r%Q\r gesendet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1928
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1936
+msgid "Your encoding is now %Q"
+msgstr "Ihre Kodierung ist nun %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1967
+msgid "%c\r!n\r%Q\r%c's codepage is %Q: %Q"
+msgstr "%c\r!n\r%Q\r%cs Codepage ist %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1991
+#, c-format
+msgid "Your user mode is %s"
+msgstr "Ihr Benutzermodus ist %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:158
+msgid "Failed to set the encoding to %Q: mapping not available."
+msgstr ""
+"Kodierung \"%Q\" kann nicht gesetzt werden: Mapping ist nicht verfügbar."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:175
+msgid "Changed text encoding to %Q"
+msgstr "Die Textkodierung wurde auf %Q geändert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:503
+msgid "Connection to server lost"
+msgstr "Die Verbindung zum Server wurde verloren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:512
+msgid "Connection to server established"
+msgstr "Die Verbindung zum Server wurde hergestellt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:573
+msgid "[LINK WARNING]: Socket message truncated to 512 bytes."
+msgstr ""
+"[VERKNÜFUNGSNACHRICHT]: Socketnachricht wurde auf 512 Byte beschnitten."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:640
+msgid ""
+"The server seems to support the WATCH notify list method, will try to use it"
+msgstr ""
+"Dieser Server unterstützt die WATCH-Benachrichtigungslistenmethode; benutze "
+"diese Methode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:688
+msgid "Can't resolve local host address, using user supplied one (%Q)"
+msgstr ""
+"Die lokale Hostadresse konnte nicht aufgelöst werden: eine vom Benutzer "
+"vorgegebene wird benutzt (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:695
+msgid "Can't resolve local host address, using default 127.0.0.1"
+msgstr ""
+"Die lokale Hostadresse konnte nicht aufgelöst werden, der Standard "
+"\"127.0.0.1\" wird benutzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:701
+msgid "Local host address is %Q"
+msgstr "Die lokale Hostadresse ist %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:749
+msgid "The server seems to have changed the idea about the local hostname"
+msgstr ""
+"Der Server scheint das Wissen über den bisherigen lokalen Hostnamen geändert "
+"zu haben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:750
+msgid ""
+"You're probably using a broken bouncer or maybe something weird is happening "
+"on the IRC server"
+msgstr ""
+"Es wird wahrscheinlich ein fehlerhafter Bouncer benutzt, oder es ist etwas "
+"sonderbares auf dem IRC-Server passiert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:776
+msgid ""
+"Here goes your \"broken bouncer hack\": The server has changed the hostname "
+"but I'll ignore the IP address change"
+msgstr ""
+"Hier kommt der \"Fehlerhafter Bouncer-Hack\": Der Server hat den Hostnamen "
+"geändert, dennoch wird die IP-Adressänderung ignoriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:791
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:801
+msgid "The local IP address as seen by the IRC server is %Q"
+msgstr "Die lokale IP-Adresse, die vom Server gesehen wird, ist %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:815
+msgid "Can't start the DNS slave thread"
+msgstr "DNS-Sklaventhread konnte nicht gestartet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:816
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:846
+msgid "Unable to resolve the local hostname as seen by the IRC server: %Q"
+msgstr ""
+"Der lokale Hostname, wie er vom IRC-Server gesehen wird, kann nicht "
+"aufgelöst werden: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:822
+msgid "Looking up the local hostname as seen by the IRC server (%Q)"
+msgstr ""
+"Der lokale Hostname, wie er vom IRC-Server gesehen wird (%Q), wird "
+"aufgelöst ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:843
+msgid ""
+"Unable to resolve the local hostname as seen by the IRC server: %Q, using "
+"previously resolved %Q"
+msgstr ""
+"Der lokale Hostname, wie er vom IRC-Server gesehen wird, kann nicht "
+"aufgelöst werden: %Q; nutze den schon vor kurzem aufgelösten Hostnamen %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:850
+msgid "Local hostname as seen by the IRC server resolved to %Q"
+msgstr ""
+"Der lokale Hostname, wie er vom IRC-Server gesehen wird, wurde aufgelöst als "
+"%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:868
+msgid "Using server specific username (%Q)"
+msgstr "Benutze serverspezifischen Benutzernamen (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:873
+msgid "Using network specific username (%Q)"
+msgstr "Benutze netzwerkspezifischen Benutzernamen (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:892
+msgid "Using reconnect specific nickname (%Q)"
+msgstr "Benutze wiederverbindungsspezifischen Spitznamen (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:898
+msgid "Using server specific nickname (%Q)"
+msgstr "Benutze serverspezifischen Spitznamen (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:905
+msgid "Using network specific nickname (%Q)"
+msgstr "Benutze netzwerkspezifischen Spitznamen (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:922
+msgid "Using server specific real name (%Q)"
+msgstr "Benutze serverspezifischen wirklichen Namen (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:929
+msgid "Using network specific real name (%Q)"
+msgstr "Benutze netzwerkspezifischen wirklichen Namen (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:946
+msgid "Logging in as %Q!%Q :%Q"
+msgstr "Logge ein als %Q!%Q :%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:962
+#, c-format
+msgid "Sending %s as password"
+msgstr "Sende %s als Passwort"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1033
+msgid "Executing scheduled network specific \"on connect\" commands"
+msgstr "Führe geplante netzwerkspezifische \"bei Verbindung\"-Befehle aus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1042
+msgid "Executing scheduled server specific \"on connect\" commands"
+msgstr "Führe geplante serverspezifische \"bei Verbindung\"-Befehle aus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1051
+msgid "Executing scheduled identity specific \"on connect\" commands"
+msgstr "Führe geplante identitätsspezifische \"bei Verbindung\"-Befehle aus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1101
+#, c-format
+msgid "The server refused the suggested nickname (%s) and named you %s instead"
+msgstr ""
+"Der Server lehnte den vorschlagenen Spitznamen (%s) ab und gab Ihnen "
+"stattdessen den Namen %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1113
+msgid "Login operations complete, happy ircing!"
+msgstr "Alle Login-Operationen sind abgeschlossen: frohes Chatten!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1123
+msgid "Executing scheduled network specific \"on login\" commands"
+msgstr "Führe geplante netzwerkspezifische \"bei Login\"-Befehle aus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1132
+msgid "Executing scheduled server specific \"on login\" commands"
+msgstr "Führe geplante serverspezifische \"bei Login\"-Befehle aus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1141
+msgid "Executing scheduled identity specific \"on login\" commands"
+msgstr "Führe geplante identitätsspezifische \"bei Login\"-Befehle aus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1153
+msgid "Setting configured user mode"
+msgstr "Konfigurierter Benutzermodus wird gesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1210
+msgid "Auto-joining network specific channels"
+msgstr "Netzwerkspezifische Kanäle werden nun automatisch betreten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1244
+msgid "Auto-joining server specific channels"
+msgstr "Serverspezifische Kanäle werden nun automatisch betreten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1341
+msgid "Updating away state for channel %Q"
+msgstr ""
+"Die Abwesenheitsinformationen für den Kanal \r!c\r%Q\r werden auf den "
+"neuesten Stand gebracht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_customtoolbardescriptor.cpp:230
+msgid "Backward compatibility action for toolbar.define"
+msgstr "Rückwärtskompatibilitätsaktion für toolbar.define"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:790
+msgid "Installation problems ?"
+msgstr "Installationsprobleme?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:791
+msgid ""
+"<b>Ooops...</b><br><br><b>There are some reasons that make me think that "
+"your KVIrc installation is incomplete.</b><br><br>I might be wrong, but you "
+"seem to miss some of the features that the default KVIrc script provides."
+"This may happen because you have upgraded to an unstable cvs version, "
+"because you have accidentally deleted or damaged your configuration files, "
+"because you have installed an incomplete script or because you have hit a "
+"bug in KVIrc.<br><br>I can repeat the installation of the default script in "
+"order to restore the missing features.<br><b>Do you want the default script "
+"to be restored ?</b><br><br><font size=\"-1\">Hint: If you're a scripter and "
+"have intentionally removed some of the scripting features then you may "
+"safely click on \"No and Don't Ask Me Again\", otherwise it might be a good "
+"idea to click \"Yes\". If you still want to choose \"No\" you can always "
+"restore the default script by choosing the appropriate entry from the "
+"\"Scripting\" menu.</font>"
+msgstr ""
+"<b>Ups...</b><br><br><b>Es gibt einige Gründe, die dafür sprechen, dass "
+"diese KVIrc-Installation nicht komplett ist.</b><br><br>Es könnte alles in "
+"Ordnung sein, aber es scheinen einige Fähigkeiten zu fehlen, die das "
+"Standard-KVIrc-Skript anbietet. Dies kann passieren, wenn man zu einer "
+"instabilen CVS-Version aktualisiert, aus Versehen Konfigurationsdateien "
+"beschädigt oder löscht, ein nicht komplettes Skript installiert oder einen "
+"Fehler in KVIrc gefunden hat.<br><br>Die Installation des Standard-Skriptes "
+"kann wiederholt werden, um die fehlenden Fähigkeiten wieder herzustellen."
+"<br><b>Soll das Standard-Skript wiederhergestellt werden?</b><br><br><font "
+"size=\"-1\">Tipp: Wenn man ein Skriptschreiber ist und einige "
+"Skriptfähigkeiten absichtlich gelöscht hat, kann man getrost auf \"Nein, und "
+"nicht wieder fragen\" klicken, ansonsten ist es eine gute Idee auf \"Ja\" zu "
+"klicken. Wenn Sie trotzdem \"Nein\" wählen sollten, kann man das Standard-"
+"Skript jederzeit mit dem zugehörigem Eintrag im \"Skript\"-Menü "
+"wiederherstellen.</font>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:805
+msgid "No and Don't Ask Me Again"
+msgstr "Nein, und nicht wieder nachfragen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:828
+msgid "Restore Default Script - KVIrc"
+msgstr "Standardskript wiederherstellen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:829
+msgid ""
+"You are about to restore the default script.<br>This will erase any script "
+"changes you have made.<br>Do you wish to proceed?"
+msgstr ""
+"Das Standardskript soll wiederhergestellt werden.<br>Dies wird alle "
+"Skriptveränderungen löschen.<br>Wollen Sie wirklich fortfahren?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:872
+#, c-format
+msgid "Remote command received (%s ...)"
+msgstr "Entferntes Kommando empfangen (%s ...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1033
+msgid "File download failed"
+msgstr "Das Herunterladen der Datei ist fehlgeschlagen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1035
+msgid "File download from %1 failed"
+msgstr "Das Herunterladen der Datei %1 ist fehlgeschlagen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1044
+msgid "File download successfully complete"
+msgstr "Die Datei wurde erfolgreich heruntergeladen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1046
+msgid "File download from %1 successfully complete"
+msgstr "Das Herunterladen der Datei von %1 ist fehlgeschlagen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1066
+msgid "Avatar download failed for %Q!%Q@%Q and url %Q: %Q"
+msgstr "Der Avatardownload für %Q!%Q@%Q und URL %Q ist fehlgeschlagen: %Q."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2014
+#, c-format
+msgid "The commandline for media type '%s' seems to be broken"
+msgstr "Die Kommandozeile für den Medientyp '%s' scheint fehlerhaft zu sein."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2018
+#, c-format
+msgid "Media type of file %s matched to '%s' but no commandline specified"
+msgstr ""
+"Medientyp von Datei %s passt zu '%s', aber es ist keine Kommandozeile "
+"angegeben."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2023
+#, c-format
+msgid "No idea on how to play file %s (no media type match)"
+msgstr ""
+"Ich weiß nicht, wie ich die Datei %s abspielen soll. (Kein Medientyp passt.)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:39
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:48
+#, c-format
+msgid "[SSL]: %c%s"
+msgstr "[SSL]: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:40
+#, c-format
+msgid "[SSL]: Cipher: %c%s"
+msgstr "[SSL]: Chiffre: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:41
+#, c-format
+msgid "[SSL]: Version: %c%s"
+msgstr "[SSL]: Version: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:42
+#, c-format
+msgid "[SSL]: Bits: %c%d (%d used)"
+msgstr "[SSL]: Bits: %c%d (%d benutzt)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:49
+#, c-format
+msgid "[SSL]: Version: %c%d"
+msgstr "[SSL]: Version: %c%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:50
+#, c-format
+msgid "[SSL]: Serial number: %c%d"
+msgstr "[SSL]: Seriennummer: %c%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:51
+msgid "[SSL]: Subject:"
+msgstr "[SSL]: Betreff:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:59
+#, c-format
+msgid "[SSL]: Common name: %c%s"
+msgstr "[SSL]: Geläufiger Name: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:60
+#, c-format
+msgid "[SSL]: Organization: %c%s"
+msgstr "[SSL]: Organisation: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:61
+#, c-format
+msgid "[SSL]: Organizational unit: %c%s"
+msgstr "[SSL]: Organisationsabteilung: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:62
+#, c-format
+msgid "[SSL]: Country: %c%s"
+msgstr "[SSL]: Land: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:63
+#, c-format
+msgid "[SSL]: State or province: %c%s"
+msgstr "[SSL]: Staat oder Provinz: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:64
+#, c-format
+msgid "[SSL]: Locality: %c%s"
+msgstr "[SSL]: Örtlichkeit: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:58
+msgid "[SSL]: Issuer:"
+msgstr "SSL]: Ausgeber:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:65
+#, c-format
+msgid "[SSL]: Public key: %c%s (%d bits)"
+msgstr "[SSL]: Öffentlicher Schlüssel: %c%s (%d Bit)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:66
+#, c-format
+msgid "[SSL]: Signature type: %c%s"
+msgstr "[SSL]: Signaturtyp: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:73
+#, c-format
+msgid "[SSL]: Signature contents: %c%s"
+msgstr "[SSL]: Signaturinhalte: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:82
+msgid "Peer X509 certificate"
+msgstr "Gleichgestellter-X509-Zertifikat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:85
+msgid "[SSL]: The peer didn't provide a certificate"
+msgstr "[SSL]: Der Gleichgestellte bietet kein Zertifikat an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1219
+msgid "Current transmission cipher"
+msgstr "Aktuelle Übertragungsverschlüsselung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:92
+msgid "[SSL]: Can't find out the current cipher info"
+msgstr ""
+"[SSL]: Die aktuelle Verschlüsselungstechnik konnte nicht bestimmt werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:113
+#, c-format
+msgid "[%s]: [SSL]: Using certificate file %s"
+msgstr "[%s]: [SSL] Zertifikatsdatei %s wird benutzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:116
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the certificate file %s"
+msgstr ""
+"[%s]: [SSL-FEHLER]: Datei-E/A-Fehler beim Versuch der Benutzung der "
+"Zertifikatsdatei %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:146
+#, c-format
+msgid "[%s]: [SSL ERROR]: %s"
+msgstr "[%s]: [SSL-FEHLER]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:136
+#, c-format
+msgid "[%s]: [SSL]: Using private key file %s"
+msgstr "[%s]: [SSL]: Private Schlüsseldatei %s wird benutzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:139
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the private key file %s"
+msgstr ""
+"[%s]: [SSL-FEHLER]: Datei-E/A-Fehler beim Versuch der Benutzung der privaten "
+"Schlüsseldatei %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:375
+msgid "Reconnect attempt aborted"
+msgstr "Erneuter Verbindungsversuch wurde abgebrochen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:443
+msgid ""
+"This is the first connection in this IRC context: using the global server "
+"setting"
+msgstr ""
+"Das ist die erste Verbindung in diesem IRC-Kontext; benutze die globalen "
+"Servereinstellungen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:483
+msgid ""
+"No servers available. Check the options dialog or use the /SERVER command"
+msgstr ""
+"Es sind keine Server verfügbar. Überprüfen Sie den Optionendialog, oder "
+"benutzen Sie den /SERVER-Befehl."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:491
+msgid ""
+"Ooops.. you've hit a bug in the servers database... I have found a server "
+"but not a network..."
+msgstr ""
+"Ups, Sie sind Opfer eines Fehlers in der Serverdatenbank geworden. Ich fand "
+"zwar einen Server, aber kein Netzwerk ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:504
+msgid "No proxy hosts available, resuming direct connection"
+msgstr ""
+"Keine Proxy-Hosts verfügbar; es wird eine direkte Verbindung hergstellt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:582
+#, c-format
+msgid "Connection attempt failed [%s]"
+msgstr "Verbindungsversuch fehlgeschlagen [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:600
+#, c-format
+msgid "Will attempt to reconnect in %d seconds"
+msgstr "Erneuter Verbindungsversuch wird in %d Sekunden versucht."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:604
+#, c-format
+msgid "%d"
+msgstr "%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:606
+#, c-format
+msgid "%d of %d"
+msgstr "%d von %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:633
+#, c-format
+msgid "Maximum number of reconnect attempts reached (%d): giving up"
+msgstr "Maximale Anzahl der Wiederholungsversuche erreicht (%d); gebe auf."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:647
+msgid ""
+"The connection attempt failed while using a cached IP address for the "
+"current server"
+msgstr ""
+"Der Verbindungsversuch ist fehlgeschlagen. Die IP für den aktuellen Server "
+"wurde aus dem Zwischenspeicher entnommen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:648
+msgid "The problem *might* be caused by an updated DNS entry"
+msgstr ""
+"Das Problem *könnte* durch einen geänderten DNS-Eintrag hervorgewurfen "
+"worden sein."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:649
+msgid "Try reconnecting with caching disabled"
+msgstr "Versuchen Sie mit ausgeschalteter Zwischenspeicherung neu zu verbinden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:673
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:382
+msgid "%Q established [%s (%s:%u)]"
+msgstr "%Q hergestellt [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Secure connection"
+msgstr "Sichere Verbindung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Connection"
+msgstr "Verbindung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:779
+#, c-format
+msgid "Connection terminated [%s (%s:%u)]"
+msgstr "Verbindung wurde beendet [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:791
+msgid "The connection terminated unexpectedly. Trying to reconnect..."
+msgstr ""
+"Die Verbindung wurde unerwartet beendet; es wird versucht, erneut zu "
+"verbinden..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:874
+msgid "Sent QUIT, waiting for the server to close the connection..."
+msgstr ""
+"QUIT wurde gesendet, es wird auf das Schließen der Verbindung durch den "
+"Server gewartet..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:685
+msgid "Normal text"
+msgstr "Normaler Text"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:686
+msgid "Selection"
+msgstr "Auswahl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:687
+msgid "Highlighted text"
+msgstr "Hervorgehobener Text"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:688
+msgid "URL foreground"
+msgstr "URL-Vordergrund"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:689
+msgid "Link overlay foreground"
+msgstr "Verknüpfung überlagernder Vordergrund"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:690
+msgid "Parser error"
+msgstr "Parserfehler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:691
+msgid "Parser warning"
+msgstr "Parserwarnung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:692
+msgid "Host lookup result"
+msgstr "Hostauflösungs-Ergebnis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:693
+msgid "Socket message"
+msgstr "Socketnachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:694
+msgid "Socket warning"
+msgstr "Socketwarnung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:695
+msgid "Socket error"
+msgstr "Socketfehler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:696
+msgid "System error"
+msgstr "Systemfehler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:697
+msgid "Raw data to server"
+msgstr "RAW-Daten an den Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:698
+msgid "Connection status"
+msgstr "Verbindungsstatus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:699
+msgid "System warning"
+msgstr "Systemwarnung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:700
+msgid "System message"
+msgstr "Systemnachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:701
+msgid "Unhandled server reply"
+msgstr "Nicht behandelte Serverantwort"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:702
+msgid "Server information"
+msgstr "Server-Informationen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:703
+msgid "Server Message of the Day"
+msgstr "Servernachricht des Tages"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:704
+msgid "Server ping"
+msgstr "Serverping"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:705
+msgid "Join message"
+msgstr "Betreten-Nachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:706
+msgid "Part message"
+msgstr "Verlassen-Nachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:707
+msgid "Unrecognized/broken message"
+msgstr "Nicht erkannte/fehlerhafte Nachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:708
+msgid "Topic message"
+msgstr "Thema-Nachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:709
+msgid "Own private message"
+msgstr "Eigene private Nachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:710
+msgid "Channel private message"
+msgstr "Private Kanalnachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:711
+msgid "Query private message"
+msgstr "Private Anfragenachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:712
+msgid "CTCP reply"
+msgstr "CTCP-Antwort"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:713
+msgid "CTCP request replied"
+msgstr "CTCP-Abfrage beantwortet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:714
+msgid "CTCP request ignored"
+msgstr "CTCP-Abfrage ignoriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:715
+msgid "CTCP request flood warning"
+msgstr "CTCP-Abfragenflut-Warnung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:716
+msgid "CTCP request unknown"
+msgstr "CTCP-Abfrage unbekannt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:717
+msgid "User action"
+msgstr "Benutzeraktion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:718
+msgid "Avatar change"
+msgstr "Avataränderung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:719
+msgid "Quit message"
+msgstr "Beenden-Nachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:720
+msgid "Split message"
+msgstr "Netzwerktrennungs-Nachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:721
+msgid "Quit on netsplit message"
+msgstr "Verlassen bei Netzwerktrennungs-Nachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:722
+msgid "Nick changes"
+msgstr "Spitznamenänderungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:723
+msgid "+o mode change"
+msgstr "+o Modusänderung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:724
+msgid "-o mode change"
+msgstr "-o Modusänderung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:725
+msgid "+v mode change"
+msgstr "+v Modusänderung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:726
+msgid "-v mode change"
+msgstr "-v Modusänderung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:727
+msgid "Multiple user mode change"
+msgstr "Multiple Benutzermodiänderungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:728
+msgid "Channel key change"
+msgstr "Kanalschlüssel-Änderung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:729
+msgid "Channel limit change"
+msgstr "Kanalbegrenzungs-Änderung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:730
+msgid "+b mode change"
+msgstr "+b Modusänderung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:731
+msgid "-b mode change"
+msgstr "-b Modusänderung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:732
+msgid "+e mode change"
+msgstr "+e Modusänderung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:733
+msgid "-e mode change"
+msgstr "-e Modusänderung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:734
+msgid "+I mode change"
+msgstr "+l Modusänderung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:735
+msgid "-I mode change"
+msgstr "-l Modusänderung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:736
+msgid "Multiple channel mode change"
+msgstr "Multiple Kanalmodiänderungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:737
+msgid "Who reply"
+msgstr "Who-Antwort"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:738
+msgid "DCC request"
+msgstr "DCC-Anfrage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:739
+msgid "DCC message"
+msgstr "DCC-Nachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:740
+msgid "DCC error"
+msgstr "DCC-Fehler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:741
+msgid "Nickname problem"
+msgstr "Spitznamen-Problem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:742
+msgid "Whois user reply"
+msgstr "Whois User-Antwort"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:743
+msgid "Whois channels reply"
+msgstr "Whois Kanäle-Antwort"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:744
+msgid "Whois idle reply"
+msgstr "Whois Idle-Antwort"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:745
+msgid "Whois server reply"
+msgstr "Whois Server-Antwort"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:746
+msgid "Whois other reply"
+msgstr "Andere whois-Antwort"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:747
+msgid "Channel creation time reply"
+msgstr "Kanalerstellungszeit-Antwort"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:748
+msgid "Notify list joins"
+msgstr "Ein Benutzer in der Benachrichtigungsliste hat den Kanal betreten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:749
+msgid "Notify list leaves"
+msgstr "Ein Benutzer in der Benachrichtigungsliste hat den Kanal verlassen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:750
+msgid "Own encrypted private message"
+msgstr "Eigene verschlüsselte private Nachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:751
+msgid "Channel encrypted private message"
+msgstr "Verschlüsselte private Kanalnachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:752
+msgid "Query encrypted private message"
+msgstr "Verschlüsselte private Anfragennachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:753
+msgid "DCC chat message"
+msgstr "DCC-CHAT-Nachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:754
+msgid "Encrypted DCC chat message"
+msgstr "Verschlüsselte DCC-CHAT-Nachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:755
+msgid "Login operations completed"
+msgstr "Einloggoperationen abgeschlossen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:756
+msgid "Kick action"
+msgstr "Kick-Aktion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:757
+msgid "Links reply"
+msgstr "Verknüpfungsantwort"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:758
+msgid "Spam report"
+msgstr "Spamreport"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:759
+msgid "ICQ message"
+msgstr "ICQ-Nachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:760
+msgid "ICQ user-message"
+msgstr "ICQ-Benutzernachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:761
+msgid "Outgoing ICQ user-message"
+msgstr "Abgehende ICQ-Benutzer-Nachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:762
+msgid "Channel notice"
+msgstr "Kanalnotiz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:763
+msgid "Encrypted channel notice"
+msgstr "Verschlüsselte Kanalnotiz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:764
+msgid "Query notice"
+msgstr "Anfragenotiz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:765
+msgid "Encrypted query notice"
+msgstr "Verschlüsselte Kanalnotiz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:766
+msgid "Server notice"
+msgstr "Servernotiz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:767
+msgid "Halfop mode change"
+msgstr "Halb-Op-Modusänderung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:768
+msgid "Unknown CTCP reply"
+msgstr "Unbekannte CTCP-Antwort"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:769
+msgid "NickServ message"
+msgstr "NickServ-Nachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:770
+msgid "ChanServ message"
+msgstr "ChanServ-Nachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:771
+msgid "Away message"
+msgstr "\"Abwesend\"-Nachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:772
+msgid "Ident message"
+msgstr "Ident-Nachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:773
+msgid "Channel list message"
+msgstr "Kanallisten-Nachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:774
+msgid "Half-deop mode change"
+msgstr "Halb-Deop-Modusänderung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:775
+msgid "Invite message"
+msgstr "Einladungsnachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:776
+msgid "Multimedia message"
+msgstr "Multimedia-Nachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:777
+msgid "Query trace message"
+msgstr "Anfragenverfolgungs-Nachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:778
+msgid "Wallops message"
+msgstr "Rundsendenachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:779
+msgid "Join error message"
+msgstr "Betreten-Fehlermeldung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:780
+msgid "Broadcast private message"
+msgstr "Private Rundsendenachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:781
+msgid "Broadcast notice"
+msgstr "Rundsendenotiz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:782
+msgid "Am kicked"
+msgstr "Mich herausgeworfen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:783
+msgid "Am op'd"
+msgstr "Mir den Op-Status gegeben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:784
+msgid "Am voiced"
+msgstr "Mir den Stimm-Status gegeben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:785
+msgid "Am deop'd"
+msgstr "Mir den Op-Status weggenommen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:786
+msgid "Am devoiced"
+msgstr "Mir den Stimm-Status weggenommen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:787
+msgid "Am halfop'd"
+msgstr "Mir den Halb-Op-Status gegeben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:788
+msgid "Am de-halfop'd"
+msgstr "Mir den Halb-Op-Status weggenommen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:789
+msgid "Ban matching my mask"
+msgstr "Der Bann passt auf meine Maske"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:790
+msgid "Unban matching my mask"
+msgstr "Der Unbann passt auf meine Maske"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:791
+msgid "Ban exception matching my mask"
+msgstr "Die Bannausnahme passt auf meine Maske"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:792
+msgid "Ban unexception matching my mask"
+msgstr "Der Bann passt auf meine Maske"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:793
+msgid "Invite exception matching my mask"
+msgstr "Die Einladungsausnahme passt auf meine Maske"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:794
+msgid "Invite unexception matching my mask"
+msgstr "Die Einladungsausnahmensmodusänderung passt auf meine Maske"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:795
+msgid "Ignored user message"
+msgstr "Ignorierte Benutzernachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:796
+msgid "Server statistics"
+msgstr "Serverstatistiken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:797
+msgid "SSL message"
+msgstr "SSL-Nachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:108
+msgid "Search"
+msgstr "Suchen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:799
+msgid "Generic success"
+msgstr "Generischer Erfolg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:800
+msgid "Generic status"
+msgstr "Generischer Status"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:801
+msgid "Generic verbose message"
+msgstr "Generische informative Meldung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:802
+msgid "Generic warning"
+msgstr "Generische Warnung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:803
+msgid "Generic error"
+msgstr "Generischer Fehler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:804
+msgid "Generic critical error"
+msgstr "Generischer kritischer Fehler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:805
+msgid "Chan admin status set"
+msgstr "Kanaladminstatus gesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:806
+msgid "Chan admin status unset"
+msgstr "Kanaladminstatus entfernt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:807
+msgid "Own chan admin status set"
+msgstr "Eigener Kanaladminstatus gesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:808
+msgid "Own chan admin status unset"
+msgstr "Eigener Kanaladminstatus entfernt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:809
+msgid "Userop mode change"
+msgstr "Vergabe des Op-Status'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:810
+msgid "User-deop mode change"
+msgstr "Wegnahme des OP-Status'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:811
+msgid "Am userop'd"
+msgstr "Mir wurde der Op-Status gegeben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:812
+msgid "Am de-userop'd"
+msgstr "Mir wurde der Op-Status weggenommen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:813
+msgid "Verbose/Debug"
+msgstr "Informativ/Debug"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:814
+msgid "Chan owner status set"
+msgstr "Kanaleigentümerstatus gesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:815
+msgid "Chan owner status unset"
+msgstr "Kanaleigentümerstatus entfernt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:816
+msgid "Own chan owner status set"
+msgstr "Eigener Kanaleigentümerstatus gesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:817
+msgid "Own chan owner status unset"
+msgstr "Eigener Kanaleigentümerstatus entfernt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:818
+msgid "Server error"
+msgstr "Serverfehler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:22
+msgid "Help"
+msgstr "&Hilfe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:820
+msgid "Text Encoding Server message"
+msgstr "Textkodierungs-Servermeldung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:826
+msgid "BitTorrent message"
+msgstr "BitTorrent-Meldung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:970
+msgid "Missing absolute directory for the theme information"
+msgstr "Das absolute Verzeichnis für die Themen-Informationen fehlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:978
+msgid "Failed to create the theme directory"
+msgstr "Das Erstellen des Themen-Verzeichnisses ist fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1061
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1096
+msgid "Failed to save one of the theme images"
+msgstr "Einige Themen-Bilder konnten nicht gespeichert werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1074
+msgid "Failed to create the theme subdirectory"
+msgstr "Das Erstellen des Themen-Unterverzeichnisses ist fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1213
+msgid "Boolean options (1/0)"
+msgstr "Bool'sche Operationen (1/0)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1214
+msgid "Rectangle options (x,y,width,height)"
+msgstr "Rechteck-Optionen (x,y,Breite,Höhe)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1215
+msgid "String options (string value)"
+msgstr "Zeichenkettenoptionen (Zeichenkettenwert)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1216
+msgid "Color options (#RRGGBB)"
+msgstr "Farboptionen (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1217
+msgid "Mirccolor options (#RRGGBB)"
+msgstr "mIRC-Farboptionen (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1218
+msgid "Irc context color options (#RRGGBB)"
+msgstr "IRC-Kontext-Farboptionen (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1219
+msgid "Pixmap options (image path)"
+msgstr "Rastergrafikoptionen (Bildpfad)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1220
+msgid "Unsigned integer options (unsigned integer constant)"
+msgstr "Ganzzahl-Operationen (vorzeichenlose Integerkonstante)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1221
+msgid "Font options (family,pointsize,style,charset,weight,flags (biusf))"
+msgstr ""
+"Schriftartoptionen (Familie, Größe, Stil, Zeichensatz, Besonderheiten, Flags "
+"(biusf))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1222
+msgid "Message color options (image_id,foreground,background,logFlag (0/1))"
+msgstr ""
+"Nachricht-Farboptionen (Bild_ID, Vordergrund, Hintergrund, logFlag (0/1))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1223
+msgid "String list options (comma separated list of strings)"
+msgstr ""
+"Zeichenkettenlisten-Optionen (aus Zeichenketten bestehende Listen, die durch "
+"Kommata getrennt sind)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC"
+msgstr "IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC Context related actions"
+msgstr "Aktionen bezüglich des IRC-Kontexts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic"
+msgstr "Generisch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic actions"
+msgstr "Generische Aktionen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Settings"
+msgstr "Einstellungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Actions related to settings"
+msgstr "Aktionen bezüglich den Einstellungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:30
+msgid "Scripting"
+msgstr "Skripte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+msgid "Scripting related actions"
+msgstr "Aktionen bezüglich der Skripte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "GUI"
+msgstr "Grafische Benutzeroberfläche"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "Actions related to the Graphic User Interface"
+msgstr "Aktionen bezüglich der grafischen Benutzeroberfläche"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:77
+msgid "Channel"
+msgstr "Kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+msgid "IRC Channel related actions"
+msgstr "Aktionen bezüglich des IRC-Kanals"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Tools"
+msgstr "&Werkzeuge"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Actions that will appear in the \"Tools\" menu"
+msgstr "Aktionen, die im \"Werkzeuge\"-Menü erscheinen werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:157
+msgid "Sending out PING based lag probe"
+msgstr "Eine \"PING\"-basierende Lagpüfung wird gesendet."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:167
+msgid "Sending out CTCP based lag probe"
+msgstr "Eine CTCP-basierende Lagpüfung wird gesendet."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:188
+#, c-format
+msgid "Registered lag check with reliability %u (%s)"
+msgstr "Bemerke Lagprüfung mit Zuverlässigkeit %u (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:220
+#, c-format
+msgid "Lag check completed (%s)"
+msgstr "Lagprüfung abgeschlossen (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:259
+#, c-format
+msgid "Lag check aborted (%s)"
+msgstr "Lagprüfung abgebrochen (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:143
+msgid "Hostname resolution aborted"
+msgstr "Auflösen des Hostnamens abgebrochen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:156
+msgid "Attempting %Q to %Q (%Q) on port %u"
+msgstr "Es wird %Q zu %Q (%Q) an Port %u versucht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "secure connection"
+msgstr "sichere Verbindung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "connection"
+msgstr "Verbindung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:165
+#, c-format
+msgid "Attempting to 'bounce' on proxy %s on port %u (protocol %s)"
+msgstr ""
+"Es wird ein 'bounce' an den Proxy %s an Port %u (Protokoll %s) versucht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:194
+#, c-format
+msgid "Using cached proxy IP address (%s)"
+msgstr "Benutze zwischengespeicherte IP-Adresse (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:237
+msgid "Unable to look up the IRC proxy hostname: Can't start the DNS slave"
+msgstr ""
+"Auflösen des IRC-Proxy-Hostnames fehlgeschlagen: DNS-Sklave konnte nicht "
+"gestartet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:265
+msgid "Resuming direct server connection"
+msgstr "Nehme Direktverbindung auf"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:248
+#, c-format
+msgid "Looking up the proxy hostname (%s)..."
+msgstr "Proxy-Hostname (%s) wird aufgelöst..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:261
+msgid "Can't find the proxy IP address: %Q"
+msgstr "IP-Adresse des Proxys kann nicht gefunden werden: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:271
+msgid "Proxy hostname resolved to %Q"
+msgstr "Rechnername des Proxys wurde aufgelöst als %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:284
+msgid "Proxy %Q has a nickname: %Q"
+msgstr "Proxy %Q hat einen Spitzname: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:322
+#, c-format
+msgid "Using cached server IP address (%s)"
+msgstr "Benutze zwischengespeicherte Server-IP-Adresse (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:354
+msgid "Unable to look up the server hostname: Can't start the DNS slave"
+msgstr ""
+"Auflösen des Server-Hostnames ist fehlgeschlagen: DNS-Sklave konnte nicht "
+"gestartet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:359
+#, c-format
+msgid "Looking up the server hostname (%s)..."
+msgstr "Hostname des Servers (%s) wird aufgelöst..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:373
+msgid "Can't find the server IP address: %Q"
+msgstr "Server-IP-Adresse kann nicht gefunden werden: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:380
+msgid "If this server is an IPv6 one, try /server -i %Q"
+msgstr "Falls dies ein IPv6-Server ist, versuchen Sie <b>/server -i %Q</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:390
+msgid "Server hostname resolved to %Q"
+msgstr "Rechnername des Servers aufgelöst zu %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:400
+msgid "Real hostname for %Q is %Q"
+msgstr "Der wirklicher Hostname für %Q ist %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:414
+msgid "Server %Q has a nickname: %Q"
+msgstr "Der Server %Q hat einen Spitznamen: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:468
+msgid "The specified bind address (%Q) is not valid"
+msgstr "Die angegebene Bindungsadresse (%Q) ist ungültig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:473
+msgid ""
+"The specified bind address (%Q) is not valid (the interface it refers to "
+"might be down)"
+msgstr ""
+"Die angegebene Bindungsadresse (%Q) ist ungültig (die Netzwerkschnittstelle "
+"scheint nicht aktiv zu sein)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:493
+#, c-format
+msgid "The system-wide IPv6 bind address (%s) is not valid"
+msgstr "Die systemweite IPv6-Bindungsadresse (%s) ist ungültig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:500
+#, c-format
+msgid ""
+"The system-wide IPv6 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+"Die systemweite IPv6-Bindungsadresse (%s) ist ungültig: (die "
+"Netzwerkschnittstelle scheint nicht aktiv zu sein)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:522
+#, c-format
+msgid "The system-wide IPv4 bind address (%s) is not valid"
+msgstr "Die systemweite IPv4-Bindungsadresse (%s) ist ungültig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:529
+#, c-format
+msgid ""
+"The system-wide IPv4 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+"Die systemweite IPv4-Bindungsadresse (%s) ist ungültig: (die "
+"Netzwerkschnittstelle scheint nicht aktiv zu sein)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:230
+msgid "Channel operators"
+msgstr "Kanaloperatoren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:231
+msgid "Voiced users"
+msgstr "Benutzer mit Voice-Status"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:232
+msgid "Half-operators"
+msgstr "Halb-Operatoren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:233
+msgid "Ban masks"
+msgstr "Bannmasken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:234
+msgid "Color free (no ANSI colors)"
+msgstr "Farbfrei (keine ANSI-Farben)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:235
+msgid "Ban exception masks"
+msgstr "Bannausnahme-Masken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:236
+msgid "Invite exception masks or forbid /INVITE"
+msgstr "Einladung-Ausnahme-Masken oder verbotenes /INVITE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:237
+msgid "Secret"
+msgstr "Geheim"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:238
+msgid "Private"
+msgstr "Privat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:239
+msgid "Topic change restricted"
+msgstr "Themaänderung eingeschränkt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:240
+msgid "Invite only"
+msgstr "Nur auf Einladung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:241
+msgid "No external messages"
+msgstr "Keine externen Nachrichten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:242
+msgid "Anonymous or protected user"
+msgstr "Anonymous oder geschützter Benutzer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:243
+msgid "Quiet or channel owner"
+msgstr "Still oder Kanalbesitzer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:244
+msgid "Limited number of users"
+msgstr "Begrenzte Anzahl von Benutzern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:245
+msgid "Key"
+msgstr "Passwort"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:246
+msgid "Moderated"
+msgstr "Moderiert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:247
+msgid "Registered"
+msgstr "Registriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:248
+msgid "Censor swear words"
+msgstr "Zensierte Schimpfwörter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:249
+msgid "Impossible to speak and change nick if not authenticated with NickServ"
+msgstr ""
+"Der Nick ist nicht veränderbar und Sie können nichts sagen, wenn Sie sich "
+"vorher nicht bei NickServ angemeldet haben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:250
+msgid "Impossible to change nick if not authenticated with NickServ"
+msgstr ""
+"Der Nick ist nicht veränderbar, wenn Sie sich vorher nicht bei NickServ "
+"angemeldet haben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:251
+msgid "Only registered nicks can join"
+msgstr "Nur registrierte Spitznamen können Kanal betreten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:252
+msgid "No kicks able (unless U-Line)"
+msgstr "Kein Herauswerfen möglich (außer für Inhaber einer U-Line)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:253
+msgid "IRC-Op only channel"
+msgstr "Kanal nur für IRC-OPs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:254
+msgid "Server/Network/Tech Admin only channel"
+msgstr "Kanal nur für Server-, Netzwerk- oder technischen Adminstrator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:255
+msgid "Forbid /KNOCK"
+msgstr "/KNOCK verbotenen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:256
+msgid "Strip colors"
+msgstr "Farben entfernen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:257
+msgid "Redirect on channel full"
+msgstr "Umleiten, wenn Kanal voll"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:258
+msgid "Forbid channel CTCPs"
+msgstr "Kanal-CTCPs verbieten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:259
+msgid "User-operators OR Auditorium: /NAMES and /WHO show only ops"
+msgstr "Zuhörerraum: /NAMES und /WHO zeigt nur OPs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:260
+msgid "Only 7-bit letters in nicknames allowed"
+msgstr "Es sind nur 7-Bit-Buchstaben in Spitznamen erlaubt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:261
+msgid "Impossible to use both 7-bit and 8-bit letters in nicknames"
+msgstr ""
+"Es ist unmöglich sowohl 7-Bit-, als auch 8-Bit-Buchstaben in Spitznamen zu "
+"verwenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:270
+msgid "o: IRC operator (OPER)"
+msgstr "o: IRC-Operator (OPER)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:271
+msgid "O: Local IRC operator (LOCOP)"
+msgstr "O: lokaler IRC-Operator (LOCOP)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:272
+msgid "i: Invisible"
+msgstr "i: unsichtbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:273
+msgid "w: Recipient for WALLOPS messages"
+msgstr "w: Empfänger von Rundsendenachrichten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:274
+msgid ""
+"r: User with restricted connection (or recipient for messages about rejected "
+"bots)"
+msgstr ""
+"r: Benutzer mit beschränkter Verbindung (oder Empfänger der Nachrichten über "
+"abgelehnte Bots)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:275
+msgid "s: Recipient for server notices"
+msgstr "s: Empfänger für Servernotizen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:276
+msgid "z: Recipient for oper wallop messages"
+msgstr "z: Empfänger für oper wallop-Nachrichten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:277
+msgid "c: Recipient for cconn messages"
+msgstr "c: Empfänger für cconn-Nachrichten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:278
+msgid "k: Recipient for server kill messages"
+msgstr "k: Empfänger für server kill-Nachrichten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:279
+msgid "f: Recipient for full server notices"
+msgstr "f: Empfänger für Servervoll-Notizen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:280
+msgid "y: Spy :)"
+msgstr "y: überwachen :)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:281
+msgid "d: Obscure 'DEBUG' flag"
+msgstr "d: obskures 'DEBUG'-Flag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:282
+msgid "n: Recipient for nick changes"
+msgstr "n: Empfänger für Spitznamenänderungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:100
+msgid "Ops... for some reason the link filter object has been destroyed"
+msgstr "Ups... aus bestimmten Gründen wurde das Verknüpfungsobjekt zerstört"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:138
+msgid "Using filtered IRC protocol: Link filter is \"%Q\""
+msgstr ""
+"Gefiltertes IRC-Protokoll wird verwendet: Verknüpfungsfilter ist \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:143
+msgid "Failed to set up the link filter \"%Q\", will try with plain IRC"
+msgstr ""
+"Einrichten des Verknüpfungsfilters \"%Q\" fehlgeschlagen: pures IRC wird "
+"versucht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:202
+msgid "Failed to start the connection: %Q"
+msgstr "Start der Verbindung fehlgeschlagen: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:368
+msgid "Contacting %Q %s (%s) on port %u"
+msgstr "%Q %s (%s) wird an Port %u kontaktiert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "proxy host"
+msgstr "Proxy-Host"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "IRC server"
+msgstr "IRC-Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:375
+#, c-format
+msgid "Low-level transport connection established [%s (%s:%u)]"
+msgstr "Transportverbindung auf niedriger Ebene hergestellt [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:379
+msgid "Starting Secure Socket Layer handshake"
+msgstr "Der SSL-Handshake wird gestartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Secure proxy connection"
+msgstr "sichere Proxy-Verbindung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Proxy connection"
+msgstr "Proxy-Verbindung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:387
+msgid "Negotiating relay information"
+msgstr "Relay-Informationen werden negiert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:390
+msgid "Sent connection request, waiting for acknowledgement"
+msgstr "Verbindungsanfrage wurde gesendet, es wird auf Bestätigung gewartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:393
+msgid "Sent target host data, waiting for acknowledgement"
+msgstr "Zielhostdaten wurden gesendet, es wird auf Bestätigung gewartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:396
+msgid "Sent auth method request, waiting for acknowledgement"
+msgstr ""
+"Authentifizierungsmethoden-Anfrage wurde gesendet, warte auf Bestätigung..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:399
+msgid "Sent username and password, waiting for acknowledgement"
+msgstr "Benutzername und Passwort wurden gesendet, warte auf Bestätigung..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:402
+msgid "Sent connection request, waiting for \"HTTP 200\" acknowledgement"
+msgstr ""
+"Verbindungsanfrage wurde gesendet, warte auf die \"HTTP 200\"-Bestätigung..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:176
+msgid "[SSL]: %Q"
+msgstr "[SSL]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:181
+msgid "[SSL ERROR]: %Q"
+msgstr "[SSL-FEHLER]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:190
+msgid "[PROXY]: %Q"
+msgstr "[PROXY]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:200
+msgid "[PROXY ERROR]: %Q"
+msgstr "[PROXY-FEHLER]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:207
+msgid "[SOCKET]: %Q"
+msgstr "[SOCKET]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:212
+msgid "[SOCKET ERROR]: %Q"
+msgstr "[SOCKET-FEHLER]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:218
+msgid "[SOCKET WARNING]: %Q"
+msgstr "[SOCKET-WARNUNG]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:337
+#, c-format
+msgid "Binding to local address %s"
+msgstr "An lokale Adresse %s binden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:341
+#, c-format
+msgid ""
+"Binding to local address %s failed: the kernel will choose the correct "
+"interface"
+msgstr ""
+"Binden an lokale Adresse %s fehlgeschlagen: Der Kernel wird die richtige "
+"Schnittstelle auswählen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:637
+msgid "Using HTTP protocol."
+msgstr "HTTP-Protokoll benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:683
+msgid "Using SOCKSV4 protocol."
+msgstr "SOCKSV4-Protokoll benutzen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:756
+msgid "Using SOCKSv5 protocol."
+msgstr "Es wird das SOCKSV5-Protokoll benutzt."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:771
+msgid "We can accept auth method 0 (no auth)"
+msgstr ""
+"Wir können die Authentifizierungsmethode 0 (keine Authentifizieung) "
+"akzeptieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:779
+msgid "We can accept auth method 0 (no auth) or 2 (user/pass)"
+msgstr ""
+"Wir können die Authentifizierungsmethoden 0 (keine Authentifizierung) oder 2 "
+"(Benutzer/Passwort) akzeptieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:958
+msgid "Proxy response: auth OK: access granted"
+msgstr "Proxy-Antwort: Authentifizierung OK: Zugriff gewährt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:993
+msgid "Proxy response: Auth method OK: using method 0 (no auth)"
+msgstr ""
+"Proxy-Antwort: Authentifizierung OK: benutze Methode 0 (keine "
+"Authentifizierung)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1000
+msgid "Proxy response: Auth method OK: using method 2 (user/pass)"
+msgstr ""
+"Proxy-Antwort: Authentifizierung OK: benutze Methode 2 (Benutzer/Passwort)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1056
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1113
+msgid "Proxy response: target data OK: request granted"
+msgstr "Proxy-Antwort: Zieldaten OK: Anfrage gewährt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1153
+msgid "Proxy response: "
+msgstr "Proxy Antwort: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1164
+msgid "Proxy said something about: \n"
+msgstr "Proxy sagte etwas über: \n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1205
+msgid "Server X509 certificate"
+msgstr "Server X509-Zertifikat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1209
+msgid "The server didn't provide a certificate"
+msgstr "Der Server bietete kein Zertifikat an."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1223
+msgid "Unable to determine the current cipher"
+msgstr "Die aktuelle Verschlüsselung konnte nicht festgestellt werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1768
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1788
+msgid "Partial socket write: packet broken into smaller pieces."
+msgstr "Partielles Socket-Schreiben: Paket in kleinere Teile aufgeteilt."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:60
+msgid "The theme information file does not exist"
+msgstr "Die Themeninformationsdatei existiert nicht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:71
+msgid ""
+"This KVIrc executable is too old for this theme (minimum theme engine "
+"version required is %Q while this theme engine has version %s)"
+msgstr ""
+"Dieses KVIrc ist zu alt, um dieses Thema benutzen zu können (miniale Version "
+"ist %Q, wohingegen diese Themenimplementation die Version %s besitzt)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:80
+msgid "Theme information file is not valid"
+msgstr "Themeninformationsdatei ist ungültig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:248
+msgid "Failed to load the specified screenshot image"
+msgstr "Laden des ausgewählten Bildschirmfotos fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:257
+msgid "Invalid option"
+msgstr "Ungültige Options"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:265
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:293
+msgid "Failed to save the screenshot image"
+msgstr "Laden des ausgewählten Bildschirmfotos fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:117
+msgid "Configure Servers..."
+msgstr "Server konfigurieren..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:118
+msgid "Allows you to configure the servers and eventually to connect to them"
+msgstr ""
+"Erlaubt Ihnen das Konfigurieren der Server und das schließliche Verbinden zu "
+"ihnen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:128
+msgid "Manage Addons..."
+msgstr "Zusätze verwalten..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:129
+msgid "Allows you to manage the script-based addons"
+msgstr "Erlaubt Ihnen die Verwaltung von skriptbasierten Zusätzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:139
+msgid "Configure Registered Users..."
+msgstr "Registrierte Benutzer konfigurieren..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:140
+msgid "Shows a dialog that allows editing the registered user entries"
+msgstr ""
+"Zeigt ein Fenster zum Bearbeiten der Einträge registrierter Benutzer an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:150
+msgid "Configure Identity..."
+msgstr "Identität konfigurieren..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:151
+msgid "Allows you to configure nickname, username, avatar etc..."
+msgstr ""
+"Erlaubt Ihnen das Konfigurieren des Spitznamens, Benutzernamens, Avatars, "
+"etc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:161
+msgid "Show SocketSpy..."
+msgstr "Socketüberwachung anzeigen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:162
+msgid "Shows a window that allows monitoring the socket traffic"
+msgstr "Zeigt ein Fenster zum Überwachen des Socketverkehrs an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:172
+msgid "Get Network Links"
+msgstr "Netzwerkverbindungen holen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:173
+msgid "Shows a window that allows viewing the network links"
+msgstr "Zeigt ein Fenster mit den Netzwerkverbindungen an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:183
+msgid "Get Channel List"
+msgstr "Kanalliste holen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:184
+msgid "Shows a window that allows listing the network channels"
+msgstr "Zeigt ein Fenster mit den Netzwerkkanälen an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:194
+msgid "Configure KVIrc..."
+msgstr "KVIrc konfigurieren..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:195
+msgid "Shows the general options dialog"
+msgstr "Allgemeine Einstellungen-Dialog anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:205
+msgid "Configure Theme..."
+msgstr "Thema konfigurieren..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:206
+msgid "Shows the theme options dialog"
+msgstr "Themenoptions-Dialog anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:216
+msgid "Manage Themes..."
+msgstr "Themen verwalten..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:217
+msgid "Allows you to manage the themes"
+msgstr "Erlaubt Ihnen das Verwalten von Themen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:227
+msgid "Customize Toolbars..."
+msgstr "Werkzeugleisten anpassen...."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:228
+msgid "Shows a window that allows editing script toolbars"
+msgstr "Zeigt ein Fenster zum Bearbeiten der Skriptwerkzeugleisten an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:239
+msgid "Join Channels..."
+msgstr "Kanäle betreten..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:240
+msgid "Shows a dialog that allows you joing channels"
+msgstr "Zeigt ein Dialog, das Ihnen erlaubt Kanäle zu betreten, an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:251
+msgid "Edit Actions..."
+msgstr "Aktionen bearbeiten..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:252
+msgid "Shows a window that allows editing actions"
+msgstr "Zeigt ein Fenster zum Bearbeiten der Aktionen an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:262
+msgid "Edit Aliases..."
+msgstr "Aliasse bearbeiten..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:263
+msgid "Shows a window that allows editing aliases"
+msgstr "Zeigt ein Fenster zum Bearbeiten von Aliassen an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:273
+msgid "Edit Events..."
+msgstr "Ereignisse bearbeiten..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:274
+msgid "Shows a window that allows editing script events"
+msgstr "Zeigt ein Fenster zum Bearbeiten von Skriptereignissen an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:284
+msgid "Edit Popups..."
+msgstr "Aufklappmenüs bearbeiten..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:285
+msgid "Shows a window that allows editing popup menus"
+msgstr "Zeigt ein Fenster zum Bearbeiten von Aufklappmenüs an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:295
+msgid "Edit Raw Events..."
+msgstr "RAW-Ereignisse bearbeiten..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:296
+msgid "Shows a window that allows editing raw scripting events"
+msgstr "Zeigt ein Fenster zum Bearbeiten von RAW-Skriptereignissen an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:306
+msgid "New Script Tester"
+msgstr "Neuer Skript-Tester"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:307
+msgid "Creates an embedded editor for long scripts"
+msgstr "Erstellt einen eingebetteten Editor für lange Skripte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:317
+msgid "Execute Script..."
+msgstr "Skript ausführen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:318
+msgid "Allows executing a KVS script from file"
+msgstr "Erlaubt das Ausführen eines KVS-Skriptes von einer Datei"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:328
+msgid "Help Index"
+msgstr "Hilfeindex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:329
+msgid "Shows the documentation index"
+msgstr "Zeigt den Dokumentationsindex an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:340
+msgid "Allows subscribing to the KVIrc mailing list"
+msgstr "Erlaubt das Abonieren der KVIrc-Mailinigliste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:350
+msgid "KVIrc WWW"
+msgstr "KVIrc WWW"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:351
+msgid "Opens the KVIrc homepage"
+msgstr "Öffnet die KVIrc-Homepage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:361
+msgid "KVIrc Russian WWW"
+msgstr "Russische KVIrc-Homepage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:362
+msgid "Opens the KVIrc homepage in russian"
+msgstr "Öffnet die KVIrc-Homepage auf russisch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:372
+msgid "Acquire Screenshot"
+msgstr "Bildschirmfoto aufzeichnen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:373
+msgid "Acquires a Screenshot of the KVIrc main window"
+msgstr "Bildschirmfoto des KVIrc-Hauptmenüs aufzeichnen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:385
+msgid "Cascade windows"
+msgstr "Gestaffelte Fenster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:386
+msgid "Arranges the MDI windows in a maximized-cascade fashion"
+msgstr "Ordnet die MDI-Fenster in maximiert-gestaffelter Form an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:397
+msgid "Tile windows"
+msgstr "Fenster Kacheln"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:398
+msgid "Tiles the MDI windows with the currently selected tile method"
+msgstr "Kachelt die MDI-Fenster mit der aktuell ausgewählten Kachelmethode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:409
+msgid "Minimize all windows"
+msgstr "Alle Fenster minimieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:410
+msgid "Minimized all the currently visible MDI windows"
+msgstr "Minimiert alle aktuell sichtbaren MDI-Fenster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:421
+msgid "New IRC Context"
+msgstr "Neuer IRC-Kontext"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:422
+msgid "Creates a new IRC context console"
+msgstr "Erstellt eine neue IRC-Kontext-Konsole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:433
+msgid "Quit KVIrc"
+msgstr "KVIrc beenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:434
+msgid "Quits KVIrc closing all the current connections"
+msgstr "KVIrc beenden und alle zur Zeit geöffneten Verbindungen schließen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:448
+msgid "IRC Context Display"
+msgstr "IRC-Kontext-Anzeige"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:449
+msgid "Shows a small display with IRC context informations"
+msgstr "Zeigt eine kleine Anzeige mit IRC-Kontextinformationen an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:520
+msgid "Acts as a separator for other items: performs no action"
+msgstr "Agiert als Trenner für andere Elemente: führt keine Aktion aus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:554
+msgid "Connect/Disconnect"
+msgstr "Verbinden/Trennen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:555
+msgid ""
+"Allows you to connect to a server or to terminate the current connection"
+msgstr ""
+"Erlaubt Ihnen das Verbinden zu einem Server oder das Trennen der "
+"derzeitigenVerbindung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:628
+msgid "Connect"
+msgstr "Verbinden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:629
+msgid "Abort Connection"
+msgstr "Verbindung abbrechen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:790
+msgid "Join Channel"
+msgstr "Kanal betreten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:791
+msgid "Shows a popup menu that allows quickly selecting a channel to join"
+msgstr "Zeigt ein Aufklappmenü zum schnellen Betreten von Kanälen an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:851
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:863
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:896
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:907
+msgid "Other..."
+msgstr "Andere..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:834
+msgid "Change Nickname"
+msgstr "Spitznamen ändern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:835
+msgid "Shows a popup menu that allows quickly changing the nickname"
+msgstr "Zeigt ein Aufklappmenü zum schnellen Ändern des Spitznamen an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:883
+msgid "Connect To"
+msgstr "Verbinden zu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:884
+msgid "Shows a popup menu that allows quickly connecting to a server"
+msgstr "Zeigt ein Aufklappmenü zum schnellen Verbinden zu Servern an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:929
+msgid "User Mode"
+msgstr "Benutzermodus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:930
+msgid "Shows a popup menu that allows quickly changing user modes"
+msgstr "Zeigt ein Aufklappmenü zum schnellen Ändern von Benutzermodi an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:947
+msgid "Wallops (+w)"
+msgstr "Rundsendenachrichten (+w)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:949
+msgid "Server Notices (+s)"
+msgstr "Servernotizen (+s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:951
+msgid "Invisible (+i)"
+msgstr "Unsichtbar (+i)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:997
+msgid "Away/Back"
+msgstr "Abwesend/Zurück"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:998
+msgid "Allows entering and leaving away state"
+msgstr "Erlaubt das Setzen/Entfernen des Abwesend-Status"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1065
+msgid "Enter Away Mode"
+msgstr "Abwesend-Modus setzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1066
+msgid "Leave Away Mode"
+msgstr "Abwesend-Modus verlassen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1135
+msgid "Irc Tools"
+msgstr "IRC-Werkzeuge"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1136
+msgid "Shows a popup menu with some IRC Tools"
+msgstr "Zeigt ein Aufklappmenü mit einigen IRC-Werkzeugen an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1171
+msgid "Irc Actions"
+msgstr "IRC-Aktionen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1172
+msgid "Shows a popup menu with some IRC Actions"
+msgstr "Zeigt ein Aufklappmenü mit einigen IRC-Aktionen an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:412
+msgid "KVIrc KVS Script"
+msgstr "KVIrc-KVS-Skript"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:174
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:420
+msgid "Run KVS Script"
+msgstr "Das KVS-Skript ausführen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:284
+msgid "URL:IRC Protocol"
+msgstr "URL:IRC-Protokoll"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:383
+msgid "Open with KVIrc"
+msgstr "Mit KVIrc öffnen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:436
+msgid "KVIrc Configuration File"
+msgstr "KVIrc-Konfigurationsdatei"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:453
+msgid "KVIrc Theme Package"
+msgstr "KVIrc-Themenpaket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:461
+msgid "Install Theme Package"
+msgstr "Themenpaket installieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:478
+msgid "KVIrc Addon Package"
+msgstr "Das KVIrc-Zusatzpaket installieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:486
+msgid "Install Package"
+msgstr "Paket Installieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:749
+#, c-format
+msgid ""
+"Ops...it looks like I can't load modules on this sytem.\n"
+"I have been looking for the %s library but I haven't been able to load it\n"
+"due to the following error: \"%s\"\n"
+"Aborting."
+msgstr ""
+"Ups... es scheint, als können auf diesem System keine Module geladen "
+"werden.\n"
+"Ich habe nach der %s-Bibliothek gesucht, aber es war mir nicht möglich, "
+"diese zu laden.\n"
+"Es trat folgender Fehler auf: \"%s\"\n"
+"Breche ab."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:762
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_begin\" function.\n"
+"Aborting!"
+msgstr ""
+"Ups... es scheint, als wenn diese Distribution fehlerhaft ist.\n"
+"Das Einrichtungsmodul exportiert die \"setup_begin\"-Funktion nicht.\n"
+"Es wird abgebrochen!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:776
+msgid "Setup aborted"
+msgstr "Einrichtung abgebrochen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:801
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_finish\" function.\n"
+"Trying to continue anyway..."
+msgstr ""
+"Ups... es scheint, als wenn diese Distribution fehlerhaft ist.\n"
+"Das Einrichtungsmodul exportiert die \"setup_finish\"-Funktion nicht.\n"
+"Es wird versucht, trotzdem fortzusetzen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:186
+msgid "%Q is on IRC"
+msgstr "%Q ist im IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:248
+msgid "%Q has left IRC"
+msgstr "%Q hat das IRC verlassen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:368
+msgid "Notify list: No users to check for, quitting"
+msgstr ""
+"Benachrichtigungsliste: Keine Benutzer zum Überprüfen vorhanden: es wird "
+"beendet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:414
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (15 sec)"
+msgstr ""
+"Benachrichtigungsliste: Die Zeitbeschränkung (%d Sekunden) ist wirklich zu "
+"klein: es wird auf vernünftigen Wert (15 Sekunden) zurückgesetzt."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:428
+msgid "Notify list: Notify list empty, quitting"
+msgstr ""
+"Benachrichtigungsliste: Benachrichtungungsliste ist leer: es wird beendet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:455
+#, c-format
+msgid ""
+"Notify list: ISON delay (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+"Benachrichtigungsliste: Die ISON-Verzögerung ist wirklich zu klein (%d "
+"Sekunden): wird auf vernünftigen Wert (5 Sekunden) zurückgesetzt."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:491
+msgid "Notify list: Checking for: %Q"
+msgstr "Benachrichtigungsliste: Es wird auf %Q geprüft"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:535
+msgid ""
+"Notify list: Hey! You've used ISON behind my back? (I might be confused "
+"now...)"
+msgstr ""
+"Benachrichtigungsliste: Hey! Haben Sie ISON hinter meinem Rücken benutzt? "
+"(Ich könnte jetzt ein wenig verwirrt sein...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:682
+msgid "registration mask changed, or nickname is being used by someone else"
+msgstr ""
+"Registrierungsmaske geändert oder irgend jemand anderes benutzt den "
+"Spitznamen jetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:686
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (registration mask does not match, or nickname is being used "
+"by someone else)"
+msgstr ""
+"Benachrichtigungsliste: \r!n\r%Q\r scheint online zu sein, aber die Maske (%"
+"Q@\r!h\r%Q\r) stimmt nicht überein (jemand anderes benutzt den Spitznamen "
+"oder die Registrierungsmaske(n) stimmt nicht überein)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:691
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? "
+"(restarting)"
+msgstr ""
+"Benachrichtigungsliste: Unerwartete Inkonsistenz: Registrierte "
+"Benutzerdatenbank modifiziert? (wird neugestartet)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:698
+msgid ""
+"Notify list: Unexpected inconsistency, expected \r!n\r%Q\r in the registered "
+"user DB"
+msgstr ""
+"Benachrichtigungsliste: Unerwartete Inkonsistenz: \r!n\r%Q\r in "
+"registrierter Benutzer-Datenbank erwartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:712
+#, c-format
+msgid ""
+"Notify list: USERHOST delay (%d sec) is too short, resetting to something "
+"more reasonable (5 sec)"
+msgstr ""
+"Benachrichtigungsliste: Die USERHOST-Verzögerung (%d sek.) ist zu klein: "
+"wird auf einen vernünftigen Wert (5 s) zurückgesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:726
+msgid "Notify list: Unexpected inconsistency, userhost list is empty!"
+msgstr ""
+"Benachrichtigungsliste: unerwaretete Inkonsistenz: Die userhost-Liste ist "
+"leer!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:761
+msgid "Notify list: Checking userhost for: %Q"
+msgstr "Benachrichtigungsliste: userhost-Liste wird auf %Q geprüft"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:831
+msgid ""
+"Notify list: Hey! You've used USERHOST behind my back? (I might be confused "
+"now...)"
+msgstr ""
+"Benachrichtigungsliste: Hey! Haben Sie USERHOST hinter meinem Rücken "
+"benutzt? (Ich könnte nun ein wenig verwirrt sein...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:836
+#, c-format
+msgid "Notify list: Broken USERHOST reply from the server? (%s)"
+msgstr ""
+"Benachrichtigungsliste: Fehlerhafte USERHOST-Antwort vom Server empfangen? (%"
+"s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:860
+msgid ""
+"Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST reply "
+"was received, will recheck in the next loop"
+msgstr ""
+"Benachrichtigungsliste: Es scheint, dass \r!n\r%Q\r offline gegangen ist, "
+"während auf seine USERHOST-Antwort gewartet wurde. Erneute Prüfung in der "
+"nächsten Schleife."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:931
+msgid "Starting notify list"
+msgstr "Benachrichtigungsliste starten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:936
+msgid "No users in the notify list"
+msgstr "Keine Benutzer in der Benachrichtigungsliste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:958
+msgid "Notify list: Checking for:%Q"
+msgstr "Benachrichtigungsliste: Es wird auf %Q geprüft"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1013
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+"Benachrichtigungsliste: Der Zeitablauf (%d Sek.) ist zu wirklich klein: Es "
+"wird auf vernünftigen Wert (5 Sek.) gesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1139
+msgid "Notify list: Adding watch entries for%Q"
+msgstr ""
+"Benachrichtigungsliste: Es werden zu beobachtende Einträge für %Q hinzugefügt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1171
+msgid "watch entry listing requested by user"
+msgstr "Watch-Listeneintrag angefordert vom Benutzer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1175
+msgid "possible watch list desync"
+msgstr "mögliche Desynchronisation der watch-Liste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1185
+msgid "registration mask changed or desync with the watch service"
+msgstr ""
+"Registrierungsmaske geändert oder Desynchronisation mit dem "
+"Beobachtungsdienst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1190
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (watch: registration mask does not match, or nickname is "
+"being used by someone else)"
+msgstr ""
+"Benachrichtigungsliste: \r!n\r%Q\r scheint online, aber die Maske (%Q@\r!h\r%"
+"Q\r) passt nicht (watch: jemand anderes benutzt seinen Spitznamen oder die "
+"Registrierungsmaske passt nicht)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1197
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? (watch: "
+"restarting)"
+msgstr ""
+"Benachrichtigungsliste: unerwaretete Inkonsistenz: wurde die Datenbank der "
+"registrierten Benutzer geändert? (watch: wird neugestartet)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1207
+msgid "watch entry added by user"
+msgstr "watch-Eintrag vom Benutzer hinzugefügt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1245
+msgid "removed from watch list"
+msgstr "gelöscht von Beobachtungsliste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1248
+msgid "Notify list: Stopped watching for \r!n\r%Q\r"
+msgstr "Benachrichtungsliste: Beobachtung für \r!n\r%Q\r wird gestoppt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1258
+msgid "watch"
+msgstr "watch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1264
+msgid "Notify list: \r!n\r%Q\r is offline (watch)"
+msgstr "Benachrichtigungsliste: \r!n\r%Q\r ist offline (beobachtet)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1267
+msgid "unmatched watch list entry"
+msgstr "nicht passender watch-Listeneintrag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:80
+msgid "commandline::userfriendly"
+msgstr "commandline::userfriendly"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:94
+msgid "commandline::kvs"
+msgstr "commandline::kvs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:127
+msgid "You are not connected to a server"
+msgstr "Sie sind nicht mit einen Server verbunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_iconmanager.cpp:372
+msgid "Icon Table"
+msgstr "Symboltabelle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:190
+msgid "No "
+msgstr "Nein"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:196
+msgid "This module has no version informations: refusing to load it"
+msgstr ""
+"Dieses Modul hat keine Versionsinformationen. Es wird abgelehnt, es zu laden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:204
+msgid ""
+"This module was compiled for a different KVIrc version and can't be loaded"
+msgstr ""
+"Dieses Modul wurde für eine andere Version von KVIrc kompiliert und kann "
+"daher nicht geladen werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:232
+msgid "Failed to execute the init routine"
+msgstr "Ausführen der Initialisierungsroutine fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:261
+#, c-format
+msgid "Loaded module '%s' (%s)"
+msgstr "Geladenes Modul '%s' (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:306
+#, c-format
+msgid "Unloaded module '%s'"
+msgstr "Entladenes Modul '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:45
+msgid "This window has no associated irc context"
+msgstr "Dieses Fenster hat keinen zugehörigen IRC-Kontext"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:50
+#, c-format
+msgid "No such irc context (%d)"
+msgstr "Kein solcher IRC-Kontext (%d)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:147
+msgid "Global idle timer must be started before using $my.globalIdle function"
+msgstr ""
+"Der globale Untätigkeitszeitgeber muss gestartet werden, bevor die Funktion "
+"$my.globalIdle genutzt werden kann"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:103
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:215
+msgid "Window %Q not found"
+msgstr "Fenster %Q nicht gefunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:108
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:220
+msgid "Missing window id after the 'w' switch"
+msgstr "Fenster-ID nach dem 'w'-Schalter fehlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:121
+msgid "Can't log to file %Q"
+msgstr "Loggen in Datei %Q fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:123
+msgid "This window has no logging capabilities"
+msgstr "Dieses Fenster hat keine Log-Fähigkeiten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:275
+msgid "Window with id '%Q' not found, returning empty string"
+msgstr ""
+"Fenster mit der ID '%Q' nicht gefunden, es wird leere Zeichenkette "
+"zurückgeliefert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:598
+msgid "Sound file '%Q' not found"
+msgstr "Klangdatei '%Q' nicht gefunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:604
+msgid "Unable to play sound '%Q'"
+msgstr "Klang '%Q' konnte nicht abgepielt werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:615
+msgid "Sorry , I can't find a sound system to use on this machine"
+msgstr "Es konnte kein benutzbares Klangsystem gefunden werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:617
+#, c-format
+msgid "Sound system detected to: %s"
+msgstr "Klangsystem erkannt als: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:141
+msgid "Show at startup"
+msgstr "Beim Start anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:154
+msgid "Did you know..."
+msgstr "Wussten Sie schon..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:220
+msgid "<b>Can't find any tip... :(</b>"
+msgstr "<b>Es konnte kein Tipp gefunden werden... :(</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1544
+msgid "%Q algorytm is not supported"
+msgstr "Algorithmus %Q wird nicht unterstützt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1566
+msgid ""
+"KVIrc is compiled without OpenSSL support. $str.digest function disabled"
+msgstr ""
+"KVIrc ist ohne SSL-Unterstützung kompiliert worden. Die Funktion $str.digest "
+"ist nicht verfügbar."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2030
+msgid "Invalid argument for ?d escape sequence, 0 assumed"
+msgstr "Ungültiges Argument für die ?d-Escape-Sequenz, nehme 0 an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2034
+msgid "Missing argument for ?d escape sequence, 0 assumed"
+msgstr "Fehlendes Argument für die ?d-Escape-Sequenz, nehme 0 an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2066
+msgid "Invalid argument for ?u escape sequence, 0 assumed"
+msgstr "Ungültiges Element für die ?u-Escape-Sequenz, nehme 0 an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2070
+msgid "Missing argument for ?u escape sequence, 0 assumed"
+msgstr "Fehlendes Argument für die ?u-Escape-Sequenz, nehme 0 an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2097
+msgid "Invalid argument for ?x escape sequence, 0 assumed"
+msgstr "Ungültiges Argument für die ?x-Escape-Sequenz, nehme 0 an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2101
+msgid "Missing argument for ?x escape sequence, 0 assumed"
+msgstr "Fehlendes Argument für die ?x-Escape-Sequenz, nehme 0 an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2128
+msgid "Invalid argument for ?X escape sequence, 0 assumed"
+msgstr "Ungültiges Argument für die ?X-Escape-Sequenz, nehme 0 an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2132
+msgid "Missing argument for ?X escape sequence, 0 assumed"
+msgstr "Fehlendes Argument für die ?X-Escape-Sequenz, nehme 0 an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2189
+msgid "Invalid argument for a floating point escape sequence, 0.0 assumed"
+msgstr "Ungültiges Argument für die Gleitkomma-Escape-Sequenz, nehme 0.0 an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2193
+msgid "Missing argument for a floating point escape sequence, 0.0 assumed"
+msgstr "Fehlendes Argument für die Gleitkomma-Escape-Sequenz, nehme 0.0 an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:87
+msgid "Show URL List"
+msgstr "URL-Liste anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:88
+msgid "Shows the URL list window"
+msgstr "Zeigt die URL-Liste in einem Fenster an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:124
+msgid "&Configure"
+msgstr "&Konfigurieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:126
+msgid "Clo&se"
+msgstr "Schlie&ssen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:127
+msgid "&Module"
+msgstr "&Modul"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:130
+msgid "&Load"
+msgstr "&Laden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:131
+msgid "&Save"
+msgstr "&Speichern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:132
+msgid "&Clear"
+msgstr "&Löschen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:133
+msgid "&List"
+msgstr "&Auflisten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:136
+msgid "URL"
+msgstr "URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:137
+msgid "Window"
+msgstr "Fenster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:138
+msgid "Count"
+msgstr "Anzahl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:139
+msgid "Timestamp"
+msgstr "Zeitstempel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:113
+msgid "Warning - KVIrc"
+msgstr "Warnung - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+msgid "Select an URL."
+msgstr "Wählen Sie eine URL aus."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:115
+msgid "&Remove"
+msgstr "Ent&fernen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:269
+msgid "&Find Text"
+msgstr "&Text suchen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:280
+msgid "&Say to Window"
+msgstr "Ins Fenster &sagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+msgid "Window not found."
+msgstr "Fenster nicht gefunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:349
+msgid "URL Module Configuration"
+msgstr "URL-Modul-Konfiguration"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:356
+msgid "Save URL list on module unload"
+msgstr "URL-Liste beim Entladen des Moduls speichern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:360
+msgid "Save columns width on URL list close"
+msgstr "Spaltenbreite beim Schließen der URL-Liste speichern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1187
+msgid "&Cancel"
+msgstr "&Abbrechen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:432
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1328
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:458
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1186
+msgid "&OK"
+msgstr "&OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:423
+msgid "Enable URL ban list"
+msgstr "URL-Bannliste aktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:435
+msgid "&Add Ban"
+msgstr "Bann &hinzufügen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:440
+msgid "&Remove Selected"
+msgstr "Ausgewählte &Löschen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "URL Ban List"
+msgstr "URL-Bannliste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+msgid "Select a ban."
+msgstr "Wählen Sie einen Bann aus."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:797
+msgid "View URL list"
+msgstr "URL-Liste anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:49
+msgid "Can't find the window with id '%Q'"
+msgstr "Kann das Fenster mit der ID '%Q' nicht finden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:53
+msgid "The specified window (%Q) is not a channel"
+msgstr "Das angegebene Fenter (%Q) ist kein Kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:78
+msgid "Destinaion file exists: no copy made"
+msgstr "Zieldateidei existiert bereits: es wurde keine Kopie angelegt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:83
+msgid "Failed to copy from %Q to %Q"
+msgstr "Kopieren von %Q nach %Q ist fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:84
+msgid "Either the source doesn't exist or the destination can not be created"
+msgstr ""
+"Entweder existiert die Quelle nicht, oder das Ziel konnte nicht erstellt "
+"werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:203
+msgid "Failed to write to file %Q: the destination couldn't be opened"
+msgstr ""
+"Es konnte nicht in die Datei %Q geschrieben werden: Die Zieldatei konnte "
+"nicht geöffnet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:244
+msgid "Destination file exists: file not renamed"
+msgstr "Die Zieldatei existiert bereits: Datei wurde nicht umbenannt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:247
+msgid "Failed to rename %Q to %Q"
+msgstr "Das Umbenennen von %Q nach %Q ist fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:281
+msgid "Failed to make the directory %Q"
+msgstr "Die Erstellung des Verzeichnisses %Q ist fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:322
+msgid "Failed to remove the file %Q"
+msgstr "Das Löschen der Datei %Q ist fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:365
+msgid "Failed to remove the directory %Q"
+msgstr "Das Löschen des Verzeichnisses %Q ist fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:482
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:628
+msgid "The specified directory does not exist '%Q'"
+msgstr "Das angegebene Verzeichnis existiert nicht '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:730
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:824
+msgid "Can't open the file \"%Q\" for reading"
+msgstr "Öffnen der Datei \"%Q\" zum Lesen fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:746
+msgid "Read error for file %Q"
+msgstr "Lesefehler für Datei %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:754
+msgid ""
+"Read error for file %Q (have been unable to read the requested size in 1000 "
+"retries)"
+msgstr ""
+"Lesefehler für Datei %Q (es war unmöglich, die angeforderte Größe in 1000 "
+"Versuchen zu lesen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:920
+msgid "Can't open the file \"%Q\" for writing"
+msgstr "Die Datei \"%Q\" kann nicht zum Schreiben geöffnet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/index.cpp:473
+msgid "Untitled"
+msgstr "Unbetitelt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+msgid "Indexing help files"
+msgstr "Hilfe-Dateien werden indexiert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:87
+msgid "Index"
+msgstr "Hilfeindex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:99
+msgid "Refresh index"
+msgstr "Index neu erstellen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:211
+msgid "Full Text Search"
+msgstr "Volltextsuche"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:203
+msgid "Using a wildcard within phrases is not allowed."
+msgstr "Es ist nicht erlaubt ein Jokerzeichen in einem Ausdruck zu verwenden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:212
+msgid "The closing quotation mark is missing."
+msgstr "Das schließende Anführungszeichen fehlt."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:312
+msgid "Help Browser"
+msgstr "Hilfebrowser"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:201
+msgid "Request List"
+msgstr "Liste anfordern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:207
+msgid "Stop list download"
+msgstr "Herunterladen der Liste stoppen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:211
+msgid ""
+"<center><b>/LIST command parameters:</b><br>Many servers accept special "
+"parameters that allow you to filter the returned entries.<br>Commonly, "
+"masked channel names (*kvirc*) are accepted as parameters, as well as "
+"strings like <b>c&lt;n</b> or <b>c&gt;n</b> where <b>n</b> is the minimum or "
+"maximum of users on the channel.</center>"
+msgstr ""
+"<center><b>/LIST-Kommandoparameter:</b><br>Viele Server akzeptieren "
+"spezielle Parameter, die es erlauben, die zurückgegebenen Einträge zu "
+"filtern.<br>Meistens werden sowohl maskierte Kanalnamen (*kvirc*) als "
+"Parameter akzeptiert, als auch Strings<br> wie <b>c&lt;n</b> oder <b>c&gt;n</"
+"b>, wobei <b>n</b> das Minimum oder Maximum der Benutzer im Kanal ist.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:220
+msgid "Users"
+msgstr "Benutzer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:221
+msgid "Topic"
+msgstr "Thema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:262
+msgid "Sent list request, waiting for reply..."
+msgstr "Listenanfrage gesendet: es wird auf Antwort gewartet..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:265
+msgid "Cannot request list: No active connection"
+msgstr "Liste kann nicht abgefragt werden: Keine aktive Verbindung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:389
+msgid "Stopping the list download..."
+msgstr "Herunterladen der Liste wird abgebrochen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:276
+msgid "Cannot stop list download, no active connection."
+msgstr ""
+"Herunterladen der Liste kann nicht abgebrochen werden: Es exisitiert keine "
+"aktive Verbindung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:125
+#, c-format
+msgid "Connected to %s (%s)"
+msgstr "Verbunden zu %s (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:293
+msgid "List cannot be requested: Not connected to a server"
+msgstr "Liste kann nicht abgefragt werden: Nicht mit einen Server verbunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:316
+#, c-format
+msgid "Channel List [IRC Context %u]"
+msgstr "Kanalliste [IRC-Kontext %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:319
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel List</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Kanalliste</b></font> <font color=\"%s\">[IRC-"
+"Kontext %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:326
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel list</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Kanalliste</b></font> <font color=\"%s\">[IRC-"
+"Kontext %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:342
+msgid "You cannot export an empty list"
+msgstr "Sie können keine leere Liste exportieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:350
+msgid "Channel list for %Q - %Q"
+msgstr "Kanalliste für %Q - %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:353
+msgid "Channel list"
+msgstr "Kanalliste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:382
+msgid "Choose filename"
+msgstr "Dateiname auswählen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:356
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:383
+msgid "Configuration files (*.kvc)"
+msgstr "Konfigurationsdateien (*.kvc)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:398
+msgid "Reset"
+msgstr "Zurücksetzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:435
+msgid "Channels list download finished"
+msgstr "Herunterladen der Kanalliste abgeschlossen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:472
+msgid "Processing list: %Q"
+msgstr "Bereite Liste auf: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/libkvilist.cpp:63
+msgid "List window alread open for this IRC context"
+msgstr "Listenfenster für diesen IRC-Kontext bereits geöffnet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:70
+msgid "Terminal"
+msgstr "Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:73
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:77
+#, c-format
+msgid "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+msgstr "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:59
+msgid "Terminal emulator"
+msgstr "Terminal-Emulator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:63
+msgid "Close this window"
+msgstr "Dieses Fenster schließen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:91
+msgid "Can't create the terminal emulation part"
+msgstr "Terminalemulationsteil kann nicht erstellt werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:96
+msgid "Can't retrieve the terminal emulation factory"
+msgstr "Terminalemulationsart konnte nicht erfragt werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:95
+msgid "KVIrc"
+msgstr "KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:98
+msgid "Context"
+msgstr "Kontext"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:155
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:100
+msgid "Away"
+msgstr "Abwesend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:102
+msgid "&Configure KVIrc..."
+msgstr "KVIrc &konfigurieren..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:104
+msgid "&About KVIrc"
+msgstr "&Über KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:109
+msgid "Un&dock"
+msgstr "Los&lösen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:168
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:112
+msgid "Ctrl+Q"
+msgstr "Strg+Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:143
+msgid "Nothing is happening..."
+msgstr "Nichts ist passiert..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:285
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:144
+msgid "Just idling..."
+msgstr "Nur ideln..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:145
+msgid "Dum de dum de dum..."
+msgstr "Dum di dum di dum..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:146
+msgid "Hey man... do something!"
+msgstr "Hey Du... tu was!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:147
+msgid "Umpf!"
+msgstr "Umpf!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:148
+msgid "Silence speaking"
+msgstr "Stille spricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:149
+msgid "Are ya here?"
+msgstr "Bist Du hier?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:150
+msgid "The world has stopped?"
+msgstr "Hat die Welt aufgehört sich zu drehen?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:151
+msgid "Everything is all right"
+msgstr "Alles ist gut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:152
+msgid "idle()"
+msgstr "idle()"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:153
+msgid "It's so cold here..."
+msgstr "Es ist so kalt hier..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:295
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:154
+msgid "Do not disturb... watching TV"
+msgstr "Bitte nicht stören... sehe fern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:155
+msgid "Just vegetating"
+msgstr "Am Vegetieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:156
+msgid "Hey... are ya sure that your network is up?"
+msgstr "Hey... bist Du sicher, dass dein Netzwerk konfiguriert ist?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:298
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:157
+msgid "Seems like the world has stopped spinning"
+msgstr "Es sieht aus, als wenn die Erde aufgehört hätte sich zu drehen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:299
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:158
+msgid "This silence is freaking me out!"
+msgstr "Die Stille macht mich verrückt!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:300
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:159
+msgid "Mieeeeeowww!"
+msgstr "Miiiiiaaaauuuu!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:301
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:160
+msgid "idle idle idle idle!"
+msgstr "idle idle idle idle!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Hide Window"
+msgstr "Fenster ausblenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Show Window"
+msgstr "Fenster anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:428
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:260
+msgid "Away on all"
+msgstr "Überall abwesend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:263
+msgid "Back on all"
+msgstr "Überall zurück"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:450
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:282
+msgid "Back on %1"
+msgstr "Zurück auf %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:453
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:285
+msgid "Away on %1"
+msgstr "Abwesend auf %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1238
+msgid "Alias"
+msgstr "Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1217
+msgid "No item selected"
+msgstr "Es wurden keine Einträge ausgewählt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:232
+msgid "Rename"
+msgstr "Umbennenen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:236
+msgid "Edit the alias or namespace name"
+msgstr "Alias- oder Platzhalternamen bearbeiten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+msgid "Add Alias"
+msgstr "Alias hinzufügen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:429
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Add Namespace"
+msgstr "Platzhalter hinzufügen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:440
+msgid "Remove Selected"
+msgstr "Ausgewählte Löschen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:449
+msgid "Export Selected..."
+msgstr "Ausgewählte Einträge exportieren nach..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:455
+msgid "Export Selected in singles files..."
+msgstr "Ausgewählte Einträge in einzelne Dateien exportieren..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:462
+msgid "Export All..."
+msgstr "Alle exportieren nach..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:470
+msgid "Find In Aliases..."
+msgstr "In den Aliasen suchen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:476
+msgid "Collapse All Namespaces"
+msgstr "Alle Platzhalter stürzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:508
+msgid "Find In Aliases"
+msgstr "In den Aliasen suchen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:509
+msgid ""
+"Please enter the text to be searched for. The matching aliases will be "
+"highlighted."
+msgstr ""
+"Bitte geben Sie den Text ein, wonach gesucht werden soll. Gefundene Aliase "
+"werden hervorgehoben."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "Alias Export"
+msgstr "Alias exportieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+msgid "There is not selection!"
+msgstr "Da ist keine Auswahl!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:615
+msgid "The file \"%Q\" exists. Do you want to replace it ?"
+msgstr "Die Datei \"%Q\" existiert bereits.<br>Soll sie überschrieben werden?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+msgid "Replace file"
+msgstr "Datei ersetzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+msgid "Yes to All"
+msgstr "Ja zu allem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "There exported file would be empty: cowardly refusing to write it"
+msgstr "Die exportierte Datei wäre leer: Verweigere feige sie zu schreiben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:786
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:411
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1133
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:398
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:745
+msgid "Choose a Filename - KVIrc"
+msgstr "Dateiname auswählen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Write Failed - KVIrc"
+msgstr "Schreiben fehlgeschlagen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+msgid "Unable to write to the alias file."
+msgstr "Aliasdatei kann nicht geschrieben werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:793
+msgid "Do you really want to remove the alias \"%Q\" ?"
+msgstr "Möchten Sie den Alias \"%Q\" wirklich löschen?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:795
+msgid "Do you really want to remove the namespace \"%Q\" ?"
+msgstr "Möchten Sie den Platzhalter \"%Q\" wirklich löschen?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:797
+msgid "Please note that all the children items will be deleted too."
+msgstr "Bitte beachten Sie, dass alle Kindelemente ebenfalls gelöscht werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+msgid "Remove item"
+msgstr "Element löschen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:875
+msgid "Missing Alias Name"
+msgstr "Der Aliasname fehlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:876
+msgid "You must specify a valid name for the alias"
+msgstr "Sie müssen einen gültigen Namen für den Alias angeben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:877
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:890
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:904
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:915
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:946
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:959
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:973
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1128
+msgid "Ok, Let me try again..."
+msgstr "In Ordnung, lassen Sie es mich noch einmal versuchen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:888
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:902
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:913
+msgid "Bad Alias Name"
+msgstr "Fehlerhafter Alias-Name"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:944
+msgid "Missing Namespace Name"
+msgstr "Fehlender Platzhaltername"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:945
+msgid "You must specify a valid name for the namespace"
+msgstr "Sie müssen einen gültigen Namen für den Platzhalter angeben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:957
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:971
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:982
+msgid "Bad Namespace Name"
+msgstr "Fehlerhafter Platzhaltername"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:958
+msgid ""
+"Namespace names can contain only letters, digits, underscores and '::' "
+"namespace separators"
+msgstr ""
+"Platzhalternamen dürfen nur Buchstaben, Ziffern, Unterstriche und '::'-"
+"Platzhaltersperatoren beinhalten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:972
+msgid ""
+"Stray ':' character in namespace name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+"Einzelnes ':'-Zeichen im Platzhaltername gefunden: Meinten Sie... "
+"<Platzhalter>::<Name>?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:983
+msgid "Found an empty namespace in namespace name"
+msgstr "Es wurde ein leerer Platzhalter im Platzhalternamen gefunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+msgid "Please enter the name for the new alias"
+msgstr "Bitte geben Sie den Namen für den neuen Alias an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Please enter the name for the new namespace"
+msgstr "Bitte geben Sie den Namen für den neuen Platzhalter an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+msgid "Rename Alias"
+msgstr "Alias umbenennen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+msgid "Please enter the new name for the alias"
+msgstr "Bitte geben Sie den neuen Namen für den Alias an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Rename Namespace"
+msgstr "Platzhalter umbenennen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Please enter the new name for the namespace"
+msgstr "Bitte geben Sie den neuen Namen für den Platzhalter an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1126
+msgid "Alias already exists"
+msgstr "Der Alias existiert bereits"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1139
+msgid "This name is already in use. Please choose another one."
+msgstr "Dieser Name ist bereits in Verwendung. Bitte wählen Sie einen anderen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1138
+msgid "Namespace already exists"
+msgstr "Der Namespace existiert bereits."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1140
+msgid "Ok, let me try again..."
+msgstr "In Ordnung, lassen Sie es mich noch einmal versuchen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1227
+msgid "Namespace"
+msgstr "Namensraum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1332
+msgid "Alias Editor"
+msgstr "Aliaseditor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:62
+msgid "Join Channels"
+msgstr "Kanäle betreten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:183
+msgid "Name"
+msgstr "Name"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:86
+msgid "Password"
+msgstr "Passwort"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:641
+msgid "&Join"
+msgstr "&Teilnehmen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:108
+msgid "Show this window after connecting"
+msgstr "Dieses Fenster nach dem Verbindungsaufbau anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:163
+msgid "Recent Channels"
+msgstr "Letzte Kanäle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:182
+msgid "Registered Channels"
+msgstr "Registrierte Kanäle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:133
+msgid "Choose the file to share"
+msgstr "Wählen Sie die zu verteilende Datei aus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:178
+msgid "No such channel/netmask entry in the database"
+msgstr "Kein solcher Kanal-/Netzmaskeneintrag in der Datenbank"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:198
+msgid "Registered channel list:"
+msgstr "Registrierte Kanäle-Liste:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:208
+#, c-format
+msgid "Channel: %c%s@%s"
+msgstr "Kanal: %c%s@%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:213
+#, c-format
+msgid " Property: %s=%s"
+msgstr " Eigenschaft: %s=%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:220
+#, c-format
+msgid "Total %d channels"
+msgstr "Gesamt %d Kanäle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:86
+msgid "Property Editor"
+msgstr "Eigenschafsteditor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:101
+msgid "Property"
+msgstr "Eigenschaft"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:102
+msgid "Value"
+msgstr "Wert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:111
+msgid "&New"
+msgstr "&Neu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:215
+msgid "Mask Editor"
+msgstr "Maskeneditor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:219
+msgid ""
+"Insert a mask for this user.<br>It can contain the wildcard characters '*' "
+"and '?'."
+msgstr ""
+"Bitte geben Sie die Maske für diesen Benutzer ein.<br>Die Maske kann die "
+"Jokerzeichen '*' und '?' enthalten."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:230
+msgid ""
+"<center>This the <b>nickname</b> that will match this user, default value is "
+"the registered name.</center>"
+msgstr ""
+"<center>Dies ist der <b>Spitzname</b>, der mit diesem Benutzer "
+"übereinstimmt, die Voreinstellung ist der registrierte Name.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:241
+msgid ""
+"<center>This the <b>username</b> that will match this user. <b>*</b> will "
+"match any username.</center>"
+msgstr ""
+"<center>Dies ist der <b>Benutzername</b>, der mit diesem Benutzer "
+"übereinstimmt.<b>*</b> entspricht jedem Benutzernamen.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:252
+msgid ""
+"<center>This the <b>hostname</b> that will match this user. <b>*</b> will "
+"match any hostname.</center>"
+msgstr ""
+"<center>Dies ist der <b>Hostname</b>, der auf diesem Benutzer Übereinstimmt. "
+"</b>*</b> entspricht jedem Hostnamen.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:333
+msgid "Registered User Entry"
+msgstr "Registrierter Benutzer-Eintrag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:145
+msgid "Name:"
+msgstr "Name:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:345
+msgid "Comment:"
+msgstr "Kommentar:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:355
+msgid "Masks:"
+msgstr "Masken:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:216
+msgid "&Add..."
+msgstr "&Hinzufügen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:377
+msgid "&Edit"
+msgstr "&Bearbeiten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:385
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:414
+msgid "Identity"
+msgstr "Identität"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:393
+msgid "Notify when user is online"
+msgstr "Benachrichtungen, wenn der Benutzer online ist"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:396
+msgid "Notify nicknames:"
+msgstr "Spitznamen benachrichtigen:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:401
+msgid "<center>You can enter a space separated list of nicknames.</center>"
+msgstr ""
+"<center>Hier können Sie eine durch Leerzeichen getrennte Liste von "
+"Spitznamen angeben.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:426
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:383
+msgid "Avatar"
+msgstr "Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:433
+msgid "Use custom color in userlist"
+msgstr "Eine benutzerdefinierte Farbe in der Nutzerliste verwenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:441
+msgid "All Properties..."
+msgstr "Alle Eigenschaften..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:448
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:231
+msgid "Properties"
+msgstr "Eigenschaften"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:458
+msgid "Enable ignore for this user"
+msgstr "Diesen Benutzer ignorieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:460
+msgid "Ignore features"
+msgstr "Ignorierungsbesonderheiten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:465
+msgid "Ignore query-messages"
+msgstr "Benutzernachrichten ignorieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:468
+msgid "Ignore channel-messages"
+msgstr "Kanalnachrichten ignorieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:471
+msgid "Ignore notice-messages"
+msgstr "Notice-Nachrichten ignorieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:474
+msgid "Ignore ctcp-messages"
+msgstr "CTCP-Nachrichten ignorieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:477
+msgid "Ignore invites"
+msgstr "Einladungen ignorieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:480
+msgid "Ignore DCCs"
+msgstr "DCCs ignorieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:486
+msgid "Ignore"
+msgstr "Ignorieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:94
+msgid "Notify disabled"
+msgstr "Banachrichtigungen ausgeschaltet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:96
+msgid "Notify as: "
+msgstr "Benachrichtigen als:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:105
+msgid "No comment set"
+msgstr "Es wurde kein Kommentar gesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:107
+msgid "Comment: "
+msgstr "Kommentar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:176
+msgid "Registered Users - KVIrc"
+msgstr "Registrierte Benutzer - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:317
+msgid "Flags"
+msgstr "Flags"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:192
+msgid ""
+"<center>This is the list of registered users. KVIrc can automatically "
+"recognize and associate properties to them.<br>Use the buttons on the right "
+"to add, edit and remove entries. The \"notify\" column allows you to quickly "
+"add users to the notify list. Notify list fine-tuning can be performed by "
+"editing the entry properties.</center>"
+msgstr ""
+"<center>Dies ist die Liste der registrierten Benutzer. KVIrc kann diese "
+"automatisch erkennen und zugeordnete Eigenschaften anwenden.<br>Benutzen Sie "
+"die die Knöpfe rechts zum Hinzufügen, Bearbeiten und Löschen von Einträgen. "
+"Die \"Benachrichtigen\"-Spalte erlaubt das schnelle Hinzufügen von Benutzern "
+"zur Benachrichtigungsliste. Das Feintuning der Benachrichtigungsliste kann "
+"mit dem Bearbeiten der einzelnen Einträge erledigt werden.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:208
+msgid "Add (Wizard)..."
+msgstr "Hinzufügen (Assistent)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:211
+msgid "Add a registered user by means of a user-friendly wizard."
+msgstr ""
+"Fügen Sie einen registrierten Benutzer mit einem benutzerfreundlichen "
+"Assistenten hinzu."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:219
+msgid "Open the edit dialog to create a new user entry."
+msgstr "Bearbeiten-Dialog zum Erstellen eines neuen Benutzereintrags öffnen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:223
+msgid "&Add Group..."
+msgstr "&Gruppe Hinzufügen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:226
+msgid "Adds a new group"
+msgstr "Fügt eine neue Gruppe hinzu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:234
+msgid "Remove the currently selected entries."
+msgstr "Aktuell ausgewählte Einträge löschen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:239
+msgid "&Edit..."
+msgstr "&Bearbeiten..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:243
+msgid "Edit the first selected entry."
+msgstr "Bearbeiten des zuerst ausgewählten Eintrags."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:250
+msgid "Export To..."
+msgstr "Exportieren nach..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:254
+msgid ""
+"Export the selected entries to a file.<br>All the data associated with the "
+"selected registered users will be exported.<br>You (or anyone else) can "
+"later import the entries by using the \"Import\" button."
+msgstr ""
+"Exportiert die ausgewählten Einträge in eine Datei.<br>Alle Daten, die den "
+"registrierten Benutzern zugeordnet sind, werden exportiert.<br>Sie (oder "
+"jemand anderes) können/kann später die Einträge mit dem \"Importieren\"-"
+"Knopf importieren."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:259
+msgid "Import From..."
+msgstr "Importieren von..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:262
+msgid ""
+"Import entries from a file exported earlier by the \"export\" function of "
+"this dialog."
+msgstr ""
+"Importiert die Einträge von einer Datei, die vorher mit der \"Export\"-"
+"Funktion dieses Dialogs exportiert wurden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:399
+msgid "Group name:"
+msgstr "Gruppenname:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:442
+msgid "Move to group"
+msgstr "Zu einer Gruppe veIn eine Gruppe verschieben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:483
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:486
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:487
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:491
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:690
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_useridentity.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:962
+msgid "Default"
+msgstr "Voreinstellungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:674
+msgid "No entries selected."
+msgstr "Es wurden keine Einträge ausgewählt."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:687
+msgid "Can't open file %Q for writing."
+msgstr "Die Datei %Q kann nicht zum Schreiben geöffnet werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:772
+msgid "Can't export the registered users database: Write error."
+msgstr ""
+"Datenbank der registrierten Benutzer kann nicht exportiert werden: "
+"Schreibfehler."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:793
+#, c-format
+msgid "Can't open file %s for reading."
+msgstr "Die Datei %s kann nicht zum Lesen geöffnet werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:804
+#, c-format
+msgid "The file %s doesn't appear to be a valid registered users database."
+msgstr ""
+"Die Datei %s sieht nicht wie eine gültige Datenbank von registrierten "
+"Benutzern aus."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:811
+#, c-format
+msgid "The file %s contains an invalid registered users database version."
+msgstr ""
+"Die Datei %s enthält eine ungültige Version der Datenbank für registrierte "
+"Benutzer."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:892
+msgid "Can't import the registered users database: Read error."
+msgstr ""
+"Die Datenbank für registrierte Benutzer kann nicht importiert werden: "
+"Lesefehler."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:78
+msgid "User Registration Wizard - KVIrc"
+msgstr "Benutzerregistrierung-Assistent - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:89
+msgid ""
+"<p>Welcome to the user registration wizard.<br>This process allows you to "
+"add an IRC user to the database and set properties for that user. KVIrc will "
+"be (hopefully) able to recognize the user, add him to the notify list, and "
+"display the associated avatar.<br><br>First of all, you must insert an "
+"<b>entry name or real name</b> for the user you're going to register. The "
+"name will be used to identify the database entry and has no specific "
+"requirements, it can be a given name, nickname, or just some text to remind "
+"you of the real person.<br>Examples: \"George W Bush\", \"Dubya\".\n"
+"</p>"
+msgstr ""
+"<p>Willkommen zum Benutzerregistrierung-Assistenten.<br>Diese Anwendung "
+"erlaubt Ihnen, einen IRC-Benutzer zur Datenbank hinzuzufügen und seine "
+"Eigenschaften zu setzen. KVIrc wird dann (hoffentlich) in der Lage sein, den "
+"Benutzer wiederzuerkennen, ihn zur Benachrichtigungsliste hinzuzufügen und "
+"den zugeordneten Avatar anzuzeigen<br><br>Zuerst einmal müssen Sie den "
+"<b>Eintragsnamen oder den wirklichen Namen</b> des Benutzers, den Sie "
+"registrierten möchten, eingeben. Dieser Name wird ausschließlich dafür "
+"benutzt, den Datenbankeintrag zu indentifizieren und hat keine spezielle "
+"Bedeutung; es kann ein Name, Spitzname oder einfach ein leicht zu merkender "
+"Text sein, der Sie an diese Person erinnert.<br>Beispiele: \"George W. Bush"
+"\", \"Dubya\".\n"
+"</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:97
+msgid "Step 1: Entry Name"
+msgstr "Schritt 1: Eintragsname"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:112
+msgid ""
+"<p>A registered user is identified by one or more <b>IRC masks</b>.<br>A "
+"mask must be in the following form:<br><b>nickname!username@hostname</"
+"b><br>and can contain wildcard characters '*' and '?'. Be careful in "
+"choosing the masks, as they are the only way to verify the identity of a "
+"registered user.<br><br>You can enter at most two masks here, if you wish to "
+"add more masks, use the \"<b>Edit</b>\" button in the Registered Users "
+"dialog. You must enter at least one mask.</p>"
+msgstr ""
+"<p>Ein registrierter Benutzer kann durch eine oder mehrere <b>IRC-Masken</b> "
+"identifiziert werden.<br>Eine solche Maske muss in der folgenden Form "
+"gehalten sein:<br><b>Spitzname!Benutzername@Hostname</b><br>und kann die "
+"Jokerzeichen '*' und '?' enthalten. Bitte wahren Sie Sorgfalt beim "
+"Einstellen der Masken, denn es ist die einzige Möglichkeit für KVIrc, die "
+"Identität des registrierten Benutzer zu überprüfen. <br><br>Sie können hier "
+"höchstens zwei Masken angeben, sollten Sie mehr benötigen, können Sie diese "
+"im \"Registrierte Benutzer\"-Dialog hinzufügen. Sie müssen mindestens eine "
+"Maske angeben.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:170
+msgid "Step 2: Mask Selection"
+msgstr "Schritt 2: Maskenauswahl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:182
+msgid ""
+"<p>If you want to store an avatar image for this user, you can set it here. "
+"KVIrc will show the avatar in the userlist next to the user's nickname."
+"<br>An avatar can be in any supported image format (PNG is recommended). "
+"Keep in mind that KVIrc stores avatars in memory and has to resize them to "
+"fit in the userlist, thus it's better to use small, low-resolution images.</"
+"p>"
+msgstr ""
+"<p>Falls Sie diesem Benutzer ein Avatarbild zuweisen möchten kann es hier "
+"gesetzt werden. KVIrc wird den Avatar neben dem Spitznamen in der "
+"Benutzerliste anzeigen.<br>Ein Avatar kann von jedem beliebigen "
+"unterstützten Bildformat sein (wobei PNG empfohlen wird). Bitte bedenken "
+"Sie, dass KVIrc Avatare im Speicher behält und diese skaliert werden, damit "
+"sie in die Benutzerliste passen. Aus diesem Grund ist es besser, kleine "
+"Bilder in niedriger Auflösung zu verwenden.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:190
+msgid "Store an avatar for this user"
+msgstr "Avatar für diesen Benutzer speichern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:195
+msgid "Step 3: Avatar Selection"
+msgstr "Schritt 3: Avatarauswahl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:206
+msgid ""
+"<p>If you want to be notified when this user is online or goes offline, you "
+"must specify the list of nicknames that KVIrc will look for.<br><br>You can "
+"enter at most two nicknames here, if you wish to add more nicknames, use the "
+"\"<b>Edit</b>\" button in the Registered Users dialog.</p>"
+msgstr ""
+"<p>Falls Sie benachrichtigt werden möchten, wenn der Benutzer online oder "
+"offline geht, müssen Sie hier eine Liste mit Spitznamen angeben, nach denen "
+"KVIrc ausschau hält.<br><br>Es können maximal zwei Spitznamen angeben "
+"werden, werden mehr benötigt, können Sie diese im <b>\"Registrierte Benutzer "
+"bearbeiten\"-Dialog</b> hinzufügen.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:215
+msgid "Add this user to the notify list"
+msgstr "Diesen Benutzer zur Benachrichtigungsliste hinzufügen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:342
+msgid "Nickname:"
+msgstr "Spitzname:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:225
+msgid "Nickname 2:"
+msgstr "Spitzname 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:239
+msgid "Step 4: Notify List"
+msgstr "Schritt 4: Benachrichtigungsliste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:251
+msgid ""
+"<p>That's it. The user registration has been completed.<br><br>Click "
+"\"<b>Finish</b>\" to close this dialog.</p>"
+msgstr ""
+"<p>Das war's! Die Benutzerregistrierung wurde erfolgreich abgeschlossen."
+"<br><br>Klicken Sie auf den \"<b>Abschliessen</b>\"-Knopf, um den Dialog zu "
+"schliessen.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:254
+msgid "Registration Complete"
+msgstr "Registrierung komplett"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:695
+msgid "No name specified"
+msgstr "Kein Name angegeben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:209
+msgid "User already registered: found exact name match"
+msgstr ""
+"Dieser Benutzer ist bereits registriert: Es wurde exakt der gleiche Name "
+"gefunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:222
+msgid "Mask %Q is already used to identify user %s"
+msgstr ""
+"Die Maske %Q wird bereits benutzt, um den Benutzer %s zu identifizieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:275
+msgid "User not found (%Q)"
+msgstr "Benutzer wurde nicht gefunden (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:403
+msgid "No mask specified"
+msgstr "Es wurde keine Maske angegeben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:524
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:708
+msgid "User %Q not found"
+msgstr "Benutzer %Q wurde nicht gefunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:355
+msgid "Mask %Q already used to identify user %Q"
+msgstr ""
+"Die Maske %Q wird bereits benutzt, um den Benutzer %sQ zu identifizieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:410
+msgid "Mask %Q not found"
+msgstr "Maske %Q wurde nicht gefunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:701
+msgid "No property specified"
+msgstr "Es wurde keine Eigenschaft angegeben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:808
+msgid "Registered users database dump:"
+msgstr "Registrierte Benutzer-Datenbank-Ausgabe:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:819
+msgid " User: %c%Q"
+msgstr " Benutzer %c%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:823
+msgid " Warning: this user has no registration masks"
+msgstr " Warnung: dieser Benutzer hat keine Registrierungsmaske"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:827
+msgid " Mask: %Q!%Q@%Q"
+msgstr " Maske: %Q!%Q@%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:838
+msgid " Property: %Q=%Q"
+msgstr " Eigenschaft: %Q=%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:841
+msgid " No properties"
+msgstr " Keine Eigenschaften"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:847
+#, c-format
+msgid "Total: %d matching users (of %d in the database)"
+msgstr "Gesamt: %d übereinstimmende Benutzer (von %d in der Datenbank)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:197
+msgid "Manage Script-Based Addons"
+msgstr "Skripbasierte Zusätze verwalten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1155
+msgid "Configure"
+msgstr "Konfigurieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:225
+msgid "Show Help"
+msgstr "Hilfe anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:231
+msgid "Uninstall"
+msgstr "Deinstallieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:243
+msgid "Install Addon..."
+msgstr "Zusatz installieren..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:247
+msgid "More Addons..."
+msgstr "Mehr Zusätze..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:333
+msgid "Do you really want to uninstall the addon \"%1\" ?"
+msgstr "Soll der Zusatz \"%1\" wirklich deinstalliert werden?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+msgid "Confirm addon uninstallation"
+msgstr "Zusatzdeinstallation bestätigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:354
+msgid "Please select the addon installation file"
+msgstr "Bitte wählen Sie die die Installationsdatei des Zusatzs aus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:144
+msgid "%cAddon id %Q, version %Q%c"
+msgstr "%cZusatz-ID %Q, Version %Q%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:145
+msgid "Name: %Q"
+msgstr "Name: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:67
+msgid "Description: %Q"
+msgstr "Beschreibung: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:152
+#, c-format
+msgid "Total: %d addons installed"
+msgstr "Gesamt: %d Zusätze installiert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:192
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:571
+msgid "Uninstalling existing addon version %Q"
+msgstr "Existierende Zusatzversion %Q wird deinstalliert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:384
+msgid "The addon \"%1\" does not exist"
+msgstr "Der Zusatz \"%1\" existiert nicht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:238
+msgid "The addon \"%1\" has no configure callback set"
+msgstr "Der Zusatz \"%1\" hat keinen configure-Rückruf gesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:285
+msgid "The addon \"%1\" has no help callback set"
+msgstr "Der Zusatz \"%1\" hat kein help-Rückruf gesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:527
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:377
+msgid "Internal error: call a head-shrinker"
+msgstr "Interner Fehler: rufen Sie einen Psychologen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:536
+msgid "The specified version \"%Q\" is not a valid version string"
+msgstr "Die angegebene Version \"%Q\" ist keine gültige Versionszeichenkette"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:542
+msgid "The specified KVIrc version \"%Q\" is not a valid version string"
+msgstr ""
+"Die angegebene KVIrc-Version \"%Q\" ist keine gültige Versionszeichenkette"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:548
+msgid ""
+"This KVIrc executable is too old to run this addon (minimum version required "
+"is %Q)"
+msgstr ""
+"Dieses KVIrc ist zu alt, um diesen Zusatz auszuführen (miniale Version ist %"
+"Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:553
+msgid "Attempting to register addon \"%Q\" with version %Q"
+msgstr "Es wird versucht, den Zusatz \"%Q\" mit Version %Q zu registrieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:565
+msgid ""
+"The script addon \"%Q\" already exists with version %Q which is higher than %"
+"Q"
+msgstr ""
+"Der Skriptzusatz \"%Q\" existiert bereits in Version %Q, welche höher als %Q "
+"ist"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:579
+msgid "Script registration failed"
+msgstr "Die Skriptregistierung ist fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:584
+msgid "Script succesfully registered"
+msgstr "Das Skript wurde erfolgreich registeriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:102
+#, c-format
+msgid "%s (%s) (%s:%u)"
+msgstr "%s (%s) (%s:%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:104
+#, c-format
+msgid "%s (%s)"
+msgstr "%s (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:107
+#, c-format
+msgid "%s (%s:%u)"
+msgstr "%s (%s:%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:109
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:112
+#, c-format
+msgid "[IDENT]: %s"
+msgstr "[IDENT]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:119
+msgid "Shutting down identd service (spontaneous action)"
+msgstr "Schalte den Identd-Dienst aus (spontane Maßnahme)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:124
+msgid "Shutting down identd service (requested action)"
+msgstr "Schalte den Identd-Dienst aus (angeforderte Maßnahme)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:225
+msgid "Can't start the ident service : socket() failed"
+msgstr ""
+"Der Ident-Dienst kann nicht gestarten werden: socket() ist fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:231
+msgid "Can't start the ident service : async setting failed"
+msgstr ""
+"Der Ident-Dienst kann nicht gestartet werden: async-Einstellung ist "
+"fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:237
+msgid "Can't enable the ident service : can't setup the listen address"
+msgstr ""
+"Der Ident-Dienst kann nicht angeschaltet werden: hörender Socket konnte "
+"nicht erstellt werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:243
+msgid "Can't start the ident service : bind() failed"
+msgstr ""
+"Der Ident-Dienst kann nicht gestartet werden: bind() ist fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:249
+msgid "Can't start the ident service : listen() failed"
+msgstr ""
+"Der Ident-Dienst kann nicht gestartet werden: listen() ist fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:263
+msgid "Can't start the ident service on IpV6 : socket() failed"
+msgstr ""
+"Der Ident-Dienst kann auf IPv6 nicht gestartet werden: socket() ist "
+"fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:269
+msgid "Can't start the ident service on IpV6 : async setting failed"
+msgstr ""
+"Der Ident-Dienst kann auf IPv6 nicht gestartet werden: async-Einstellung ist "
+"fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:277
+msgid "Can't enable the ident service on IpV6 : can't setup the listen address"
+msgstr ""
+"Der Ident-Dienst kann auf IPv6 nicht angeschaltet werden: hörender Socket "
+"konnte nicht erstellt werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:285
+msgid "Can't start the ident service on IpV6 : bind() failed"
+msgstr ""
+"Der Ident-Dienst kann auf IPv6 nicht gestartet werden: bind() ist "
+"fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:294
+msgid "Can't start the ident service on IpV6 : listen() failed"
+msgstr ""
+"Der Ident-Dienst kann auf IPv6 nicht gestartet werden: listen() ist "
+"fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:310
+msgid "Starting identd service (IpV4/V6 on separate namespaces)"
+msgstr "Starte den Ident-Dienst (IPv4/IPv6 auf verschiedenen Namensräumen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:313
+msgid "Starting identd service (IpV4/V6 in IpV6 namespace)"
+msgstr "Starte den Ident-Dienst (IPv4/IPv6 im IPv6 Namensraum)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:318
+msgid "Starting identd service (IpV4)"
+msgstr "Starte den Ident-Dienst (IPv4)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:322
+msgid "Service startup (IpV4)"
+msgstr "Dienststart (IPv4)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:412
+msgid "Identd accepting connection"
+msgstr "Der Identd akzeptiert Verbindungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:435
+msgid "Identd socket error : dropping connection"
+msgstr "Identd-Socket-Fehler: Verbindungen werden gekappt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:440
+msgid "Identd connection closed by remote host"
+msgstr "Die Identd-Verbindung wurde vom entfernten Computer geschlossen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:461
+msgid "Identd processing request"
+msgstr "Der Identd bearbeitet die Anfrage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:476
+msgid "Empty request (EOT ?)"
+msgstr "Leere Anfrage (EOT?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:487
+msgid "Dropping connection (request too long)"
+msgstr "Kappe Verbindung (Anfrage zu lang)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:500
+msgid "Timed out while waiting for the request : dropping connection"
+msgstr ""
+"Es gab einen Time-Out, während des Wartens auf eine Anfrage: die Verbindung "
+"wird gekappt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/libkvilinks.cpp:74
+msgid "Links window alread open for this IRC context"
+msgstr "Das Verknüpfungsfenster für diesen IRC-Kontext ist bereits geöffnet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:57
+msgid "Request Links"
+msgstr "Verknüpfungen anfordern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:70
+msgid "Link"
+msgstr "Verknüpfung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:71
+msgid "Hops"
+msgstr "Hops"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:72
+msgid "Description"
+msgstr "Beschreibung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:90
+msgid "(None)"
+msgstr "(Keine)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:112
+msgid "Sent links request, waiting for reply..."
+msgstr ""
+"Die Verknüpfungen-Anfrage wurde gesendet, es wird auf eine Antwort "
+"gewartet..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:115
+msgid "Cannot request links: No active connection"
+msgstr ""
+"Die Verknüpfungen können nicht angefordert werden: es gibt keine aktive "
+"Verbindung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:128
+msgid "Links cannot be requested: Not connected to a server"
+msgstr ""
+"Die Verknüpfungen können nicht angefordert werden: Sie sind nicht mit einen "
+"Server verbunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:153
+msgid "Links for %Q [IRC Context %u]"
+msgstr "Verknüpfungen für %Q [IRC-Kontext %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:164
+msgid ""
+"<nobr><font color=\"%s\"><b>Links for %Q</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Verknüpfungen für %Q</b></font> <font color=\"%s"
+"\">[IRC Kontext %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:194
+msgid "Received end of links."
+msgstr "Das Ende der Verknüpfungen wurde empfangen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:235
+#, c-format
+msgid ""
+"Broken link: Missing parent (%s) for %s (%d hops): %s (used /LINKS <mask> ?)"
+msgstr ""
+"Fehlerhafte Verknüpfung: fehlendes Elternteil (%s) für %s (%d hops): %s (/"
+"LINKS <Maske> benutzt?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:238
+#, c-format
+msgid "%s: Parent link %s"
+msgstr "%s: Elternverknüpfung %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:242
+msgid "Warning: No root link was sent by the server, the stats may be invalid."
+msgstr ""
+"Warnung: Es wurde keine Wurzelverknüpfung vom Server gesendet; die "
+"Statistiken sind möglicherweise ungültig."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:278
+msgid "%c%cLinks for %Q"
+msgstr "%c%cVerknüpfungen für %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts listed"
+msgstr "Es wurden alle Hosts aufgelistet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts in the network"
+msgstr "Gesamte Hosts im Netzwerk"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:282
+#, c-format
+msgid "Wildcard servers (hubs?): %d"
+msgstr "Jokerzeichen-Server (Hubs?): %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:283
+msgid "Direct links: %d (~%d.%d %)"
+msgstr "Direkte Verknüpfungen: %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:284
+msgid "Close links (1 <= hops <= 3): %d (~%d.%d %)"
+msgstr "Benachbarte Verknüpfungen (1 <= Hops <= 3): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:285
+msgid "Mid-range links (4 <= hops <= 6): %d (~%d.%d %)"
+msgstr "Mittel entfernte Verknüpfungen (4 <= Hops <= 6): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:286
+msgid "Distant links (7 <= hops): %d (~%d.%d %)"
+msgstr "Weit entfernte Verknüpfungen (7 <= Hops): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:287
+#, c-format
+msgid "Broken (unknown) links: %d"
+msgstr "Kaputte (unbekannte) Verknüpfungen: %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:288
+#, c-format
+msgid "Maximum links per host: %d [%s]"
+msgstr "Maximale Verknüpfungen pro Host: %d [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:289
+#, c-format
+msgid "Total links: %d"
+msgstr "Gesamtverknüpfungen: %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:290
+#, c-format
+msgid "Maximum hops: %d [%s]"
+msgstr "Maximale Hops: %d [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:291
+#, c-format
+msgid "Average hops: ~%d.%d"
+msgstr "Durchschnittliche Hops: ~%d.%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:294
+msgid "Incomplete LINKS result, no stats available"
+msgstr ""
+"Inkomplettes LINKS-Ergebnis: es sind leider keine Statistiken verfügbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:747
+msgid "You're not connected to a server"
+msgstr "Sie sind nicht mit einen Server verbunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:404
+#, c-format
+msgid "Processing link: %s"
+msgstr "Verknüpfungsauswertung läuft: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:419
+msgid "Broken message syntax, can't extract hops number, assuming 0"
+msgstr ""
+"Fehlerhafte Nachrichtensyntax: die Anzahl der Hops kann nicht extrahiert "
+"werden, nehme 0 an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:86
+msgid "< &Back"
+msgstr "< &Zurück"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:87
+msgid "&Next >"
+msgstr "&Nächster >"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:282
+msgid "Finish"
+msgstr "Abschließen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:164
+msgid ""
+"<p><h2>Welcome :)</h2>This is your first time running this version of KVIrc."
+"<br>This wizard will guide you through the few steps required to complete "
+"the setup.<br><br>If you had a previous version of KVIrc installed, no "
+"worries. You will have a chance to preserve the old configuration.</"
+"p><p>Click \"<b>Next</b>\" to proceed.</p>"
+msgstr ""
+"<p><h2>Willkommen! :)</h2>Dies ist das erste Mal, dass KVIrc in dieser "
+"Version gestartet wurde.<br>Dieser Assistent wird Sie durch einige Schritte "
+"führen, um die Einrichtung abzuschliessen.<br><br>Wenn eine ältere Versionen "
+"von KVIrc installiert ist, erschrecken Sie sich nicht: Die alte "
+"Konfiguration kann gesichert werden.</p><p>Klicken Sie bitte auf "
+"\"<b>Weiter</b>\", um fortzufahren.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:176
+msgid "Welcome to KVIrc"
+msgstr "Willkommen zu KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:187
+msgid ""
+"<p>All of the files in this distribution are covered by the GPL. In human "
+"terms this can be read as follows:<br><ul><li><b>KVIrc is free</b>, use it, "
+"have fun! <b>:)</b></li><li>If you use <b>any</b> part of KVIrc in your own "
+"project, you <b>must</b> release that project under the same license.</li></"
+"ul></p><p>The \"legalese\" version of the license is shown in the box below."
+"</p>"
+msgstr ""
+"<p>Alle Dateien in dieser Konstellation werden unter der GPL-Lizenz "
+"verbreitet. Menschlich ausgedrückt liest das sich so:<br><ul><li><b>KVIrc "
+"ist frei</b>, benutzen Sie es und haben Sie Spass daran! <b>:)</b></"
+"li><li>Wenn Sie <b>irgendeinen</b> Teil von KVIrc in Ihren eigenen Projekten "
+"verwenden möchten, so <b>muss</b> dieses Projekt unter der gleichen Lizenz "
+"veröffentlicht werden.</li></ul></p><p>Die \"rechtlich legitime\" Version "
+"dieser Lizenz ist in dem unterem Kasten zu sehen.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:203
+msgid ""
+"Oops... can't find the license file.\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+"Ups... kann Lizenzdatei nicht finden...\n"
+"Diese MUSS in der Distribution enthalten sein...\n"
+"Bitte melden Sie das <pragma at kvirc dot net>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:211
+msgid "Dreaded License Agreement"
+msgstr "Gefürchtete Lizenzzustimmung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:215
+msgid "KVIrc Setup"
+msgstr "KVIrc-Einrichtung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:224
+msgid ""
+"<p>Please choose a folder for KVIrc to store its settings and other data, "
+"and another for downloaded files. Make sure that you have permission to "
+"write to both folders.<br><br>The suggested locations are fine in most "
+"cases, so if you don't know what is this about, just click \"<b>Next</b>\"."
+"<br><br>If you had a previous version of KVIrc installed, you can choose the "
+"existing directory for the settings, and your configuration will be "
+"preserved.</p>"
+msgstr ""
+"<p>Bitte wählen Sie die Verzeichnisse aus, die KVIrc zum Speichern der "
+"Konfiguration und anderer Daten, sowie zur Speicherung der "
+"heruntergeladenen Dateien verwenden soll. Bitte stellen Sie sicher, dass "
+"Schreibrechte auf beiden Verzeichnissen bestehen .<br><br>Die "
+"vorgeschlagenen Orte sind in den meisten Fällen in Ordnung, so dass Sie "
+"einfach auf \"<b>Weiter</b>\" klicken können, falls Sie sich nicht sicher "
+"sind.<br><br>Wenn Sie vorher schon eine Version von KVIrc installiert "
+"hatten, können Sie das selbe Verzeichnis für die Einstellungen auswählen und "
+"Ihre alten Einstellungen werden übernommen.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:234
+msgid "Application Folders"
+msgstr "Anwendungsordner"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:238
+msgid "Store configuration in folder"
+msgstr "Konfiguration in Verzeichnis speichern:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:239
+msgid "Use settings folder from previous installation"
+msgstr "Das alte/vorherige Konfigurations-Verzeichnis benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:251
+msgid "Use new settings folder"
+msgstr "Ein neues Konfigurations-Verzeichnis benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:255
+msgid "Settings folder:"
+msgstr "Konfigurations-Verzeichnis:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:281
+msgid "Download files to folder:"
+msgstr "Heruntergeladene Dateien in Verzeichnis speichern:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:304
+msgid "All settings in shared program folder (portable)"
+msgstr "Alle Einstellungen in ein gemeinsames Programmverzeichnis (portabel)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:325
+msgid ""
+"Please choose a Nickname.<br><br>Your nickname is the name that other IRC "
+"users will know you by. It can't contain spaces or punctuation. Some IRC "
+"networks will shorten your nickname if it is more than 32 characters long."
+"<br><br>If in doubt, just enter the first nick that comes to mind. You will "
+"be able to change it later in the Identity properties, or with the /NICK "
+"command."
+msgstr ""
+"Bitte wählen Sie einen Spitznamen aus.<br><br>Der Spitzname ist der Name, "
+"unter dem Sie die anderen IRC-Benutzer kennen werden. Er darf keine "
+"Leerzeichen oder Satzzeichen enthalten. Einige IRC-Netzwerke werden Ihren "
+"Spitznamen auf 32 Zeichen kürzen, falls er länger sein sollte.<br><br>Im "
+"Zweifelsfall tragen Sie einfach den Spitznamen ein, der Ihnen gerade "
+"einfällt. Sie können ihn später in den Identitätseigenschaften oder mit den /"
+"NICK-Kommando ändern."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:348
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+"Dieses Feld ist optional und wird als ein Teil der CTCP USERINFO-"
+"Befehlsausgabe erscheinen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:353
+msgid "Profile"
+msgstr "Profil"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:355
+msgid "Real name:"
+msgstr "Wirklicher Name:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:361
+msgid "Age:"
+msgstr "Alter:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:392
+msgid "Unspecified"
+msgstr "Nicht angegeben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:405
+msgid "Location:"
+msgstr "&Ort:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:408
+msgid "Languages:"
+msgstr "Sprachen:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:491
+msgid ""
+"<p>Here you can choose how much KVIrc will integrate with your system."
+"<br><br>The default settings are fine for most users so if you're in doubt "
+"just click \"<b>Next</b>\" and go to the next screen.</p>"
+msgstr ""
+"<p>Hier können Sie auswählen, wie fest sich KVIrc in Ihr System integrieren "
+"soll. <br><br>Die Standardeinstellungen sollten für die meisten Nutzer in "
+"Ordnung sein, das heißt, wenn Sie hier nicht weiterwissen klicken Sie "
+"einfach \"<b>Next</b>\" um zum nächsten Schritt zu kommen.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:501
+msgid "Desktop Integration"
+msgstr "Desktopintegration"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:504
+msgid "Make KVIrc default IRC client"
+msgstr "KVIrc zum Standard-IRC-Klienten machen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:508
+msgid "Create desktop shortcut"
+msgstr "Desktopverknüpfung anlegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:513
+msgid "Import server list from mIRC"
+msgstr "Die Server-Liste aus mIRC importieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:727
+msgid "Choose an Old Configuration Folder - KVIrc Setup"
+msgstr "Bitte altes Konfigurationsverzeichnis auswählen - KVIrc-Einrichtung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:736
+msgid "Do not overwrite folder? - KVIrc"
+msgstr "Verzeichnis nicht überschreiben? - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:737
+msgid ""
+"A folder %1 seems to be not a valid KVIrc settings folder.Do you want to use "
+"it anyway?"
+msgstr ""
+"Das Verzeichmis %1 scheint kein gültiges Konfigurationsverzeichnis zu sein. "
+"Möchten Sie es trotzdem nutzen?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:753
+msgid "Choose a Configuration Folder - KVIrc Setup"
+msgstr "Bitte Konfigurationsverzeichnis auswählen - KVIrc-Einrichtung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:764
+msgid "Choose a Download Folder - KVIrc Setup"
+msgstr "Bitte Download-Verzeichnis auswählen - KVIrc-Einrichtung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:933
+msgid "Abort Setup - KVIrc Setup"
+msgstr "Einrichtung abbrechen - KVIrc-Einrichtung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:934
+msgid ""
+"You have chosen to abort the setup.<br>KVIrc cannot run until you complete "
+"this procedure.<br><br>Do you really wish to abort?"
+msgstr ""
+"Sie möchten den Einrichtungsassistenten abbrechen.<br>KVIrc kann nicht "
+"laufen, solange diese Prozedur nicht abgeschlossen wurde.<br><br>Soll "
+"wirklich abgebrochen werden?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:965
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:996
+#, c-format
+msgid ""
+"Cannot create directory %s.\n"
+"You may not have write permission for that path. Please go back and choose "
+"another directory."
+msgstr ""
+"Das Verzeichnis %s kann nicht erstellt werden.\n"
+"Vielleicht haben Sie keine Schreibrechte für diesen Pfad. Bitte gehen Sie "
+"zurück und wählen ein anderes Verzeichnis aus."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+msgid "Package saved succesfully"
+msgstr "Paket erfolgreich gespeichert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:80
+msgid "Event"
+msgstr "Ereignis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1046
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:92
+msgid "&Export All To..."
+msgstr "Alle &exportieren nach..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:90
+msgid "Edit the event handler name."
+msgstr "Den Ereignishandlernamen bearbeiten."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:154
+msgid "&Enable Handler"
+msgstr "Handler &aktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:158
+msgid "&Disable Handler"
+msgstr "Handler &deaktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:162
+msgid "Re&move Handler"
+msgstr "Handler &löschen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:164
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:166
+msgid "&Export Handler To..."
+msgstr "Handler &exportieren nach..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:171
+msgid "&New Handler"
+msgstr "&Neuer Handler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:190
+msgid "unnamed"
+msgstr "unbenannt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:215
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:250
+msgid "default"
+msgstr "Standard"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:314
+msgid "none"
+msgstr "Keine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:318
+#, c-format
+msgid ""
+"\n"
+"\n"
+"\tEvent:\n"
+"\t\t%s\n"
+"\n"
+"\tParameters:\n"
+"%s"
+msgstr ""
+"\n"
+"\n"
+"\tEreignis:\n"
+"\t\t%s\n"
+"\n"
+"\tParameter:\n"
+"%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+msgid "Unable to write to the event file."
+msgstr "Die Ereignisdatei kann nicht geschrieben werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+msgid "Unable to write to the events file."
+msgstr "Die Ereignisse-Datei kann nicht geschrieben werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:486
+msgid "Event Editor"
+msgstr "Ereigniseditor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:77
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:213
+msgid "Item"
+msgstr "Element"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:80
+msgid "Submenu"
+msgstr "Untermenü"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:83
+msgid "External Menu"
+msgstr "Externes Menü"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:136
+msgid "Label"
+msgstr "Beschriftung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:93
+msgid "### Epilogue ###"
+msgstr "### Epilog ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:94
+msgid "Epilogue"
+msgstr "Epilog"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:97
+msgid "### Prologue ###"
+msgstr "### Prolog ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:98
+msgid "Prologue"
+msgstr "Prolog"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:198
+msgid "Popup name"
+msgstr "Name des Aufklappmenüs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:202
+msgid "Test"
+msgstr "Test"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:230
+msgid "Text:"
+msgstr "Text:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:236
+msgid ""
+"<center><b>Visible text</b><br>May contain identifiers that will be "
+"evaluated at popup call time.<br>For labels, this text can contain also "
+"limited HTML tags.</center>"
+msgstr ""
+"<center><b>Sichtbarer Text</b><br>Enthält möglicherweise Bezeichner, die zur "
+"Aufrufzeit des Aufklappmenüs ausgewertet werden.<br>Bei Labels kann dieser "
+"Text auch begrenzt HTML-Tags enthalten.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:239
+msgid "Condition:"
+msgstr "Bedingung:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:245
+msgid ""
+"<center><b>Boolean condition</b><br>Will be evaluated at popup call time in "
+"order to decide if this entry has to be shown.<br>An empty condition "
+"evaluates to true.</center>"
+msgstr ""
+"<center><b>Boolsche Bedingung</b><br>Wird zur Aufrufzeit des Aufklappmenüs "
+"ausgewertet, um zu entscheiden, ob das Menü angezeigt werden muss.<br>Eine "
+"leere Bedingung wird als wahr ausgewertet.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:248
+msgid "Icon:"
+msgstr "Symbol:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:254
+msgid ""
+"<center><b>Icon identifier</b><br>May be an internal icon ID, an absolute "
+"path or a relative path.<br>Portable scripts should never use absolute paths."
+"</center>"
+msgstr ""
+"<center><b>Symbolbezeichner</b>Das kann eine interne Symbol-ID, ein "
+"absoluter Pfad oder ein relativer Pfad sein.<br>Portable Skripte sollten "
+"niemals absoluten Pfade verwenden.<br></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:257
+msgid "External menu:"
+msgstr "Externes Menü"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:263
+msgid ""
+"<center><b>External menu name</b><br>This allows to nest externally defined "
+"popup menus. The popup menu with the specified name will be looked up at "
+"menu setup time.</center>"
+msgstr ""
+"<center><b>Name des externen Menüs</b><br>Dies erlaubt das Einbetten extern "
+"definierter Aufklappmenüs. Das Aufklappmenü mit dem angegebenen Namen wird "
+"zum Zeitpunkt der Menüeinrichtung nachgeschlagen.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:266
+msgid "Item Id:"
+msgstr "Element-ID:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:273
+msgid ""
+"<center><b>Item id</b><br>This will allow you to use delpopupitem later.</"
+"center>"
+msgstr ""
+"<center><b>Element-ID</b><br>Das wird Ihnen die spätere Benutzung von "
+"delpopupitem ermöglichen.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:386
+msgid "New Separator Below"
+msgstr "Neuer Trenner darunter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:388
+msgid "New Separator Above"
+msgstr "Neuer Trenner darüber"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:391
+msgid "New Separator Inside"
+msgstr "Neuer Trenner dazwischen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:396
+msgid "New Label Below"
+msgstr "Neues Label darunter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:398
+msgid "New Label Above"
+msgstr "Neues Label darüber"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:401
+msgid "New Label Inside"
+msgstr "Neues Label dazwischen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:406
+msgid "New Item Below"
+msgstr "Neues Element darunter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:408
+msgid "New Item Above"
+msgstr "Neues Element darüber"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:411
+msgid "New Item Inside"
+msgstr "Neues Element dazwischen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:416
+msgid "New Menu Below"
+msgstr "Neues Menü darunter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:418
+msgid "New Menu Above"
+msgstr "Neues Menü darüber"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:421
+msgid "New Menu Inside"
+msgstr "Neues Menü dazwischen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:426
+msgid "New External Menu Below"
+msgstr "Neues externes Menü darunter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:428
+msgid "New External Menu Above"
+msgstr "Neues externes Menü darüber"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:431
+msgid "New External Menu Inside"
+msgstr "Neues externes Menü dazwischen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:451
+msgid "&Paste Below"
+msgstr "Darunter &einfügen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:456
+msgid "Paste Above"
+msgstr "Darüber einfügen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:461
+msgid "Paste Inside"
+msgstr "Dazwischen einfügen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:473
+msgid "New Menu Prologue"
+msgstr "Neues Prolog-Menü"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:481
+msgid "New Menu Epilogue"
+msgstr "Neues Epilog-Menü"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1042
+msgid "Popup"
+msgstr "Aufklappmenü"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1048
+msgid "&Export selected To..."
+msgstr "Ausgewählte Einträge &exportieren nach..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1099
+msgid "&New Popup"
+msgstr "&Neues Aufklappmenü"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1105
+msgid "Re&move Popup"
+msgstr "Aufklappmenü &löschen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1112
+msgid "&Export Popup To..."
+msgstr "Aufklappmenü &exportieren nach..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+msgid "Unable to write to the popup file."
+msgstr "Die Aufklappmenüdatei konnte nicht geschrieben werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1382
+msgid "Popup Editor"
+msgstr "Aufklappmenüeditor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:62
+msgid "%cCore action: %Q"
+msgstr "%cKernaktion: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:64
+msgid "%cUser action: %Q"
+msgstr "%cBenutzeraktion: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:65
+msgid "Label: %Q"
+msgstr "Beschriftung: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:66
+msgid "Category: %Q"
+msgstr "Kategorie: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:112
+msgid "The action \"%1\" is disabled"
+msgstr "Die Aktion \"%1\" ist deaktiviert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:259
+msgid "The action \"%1\" does not exist"
+msgstr "Die Aktion \"%1\" existiert nicht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:255
+msgid "The action \"%1\" is a core action and cannot be destroyed"
+msgstr "Die Aktion \"%1\" ist eine Kernaktion und kann nicht zerstört werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:392
+msgid "The switch -l requires -c"
+msgstr "Der -I-Schalter erfordert -c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:409
+msgid "The switch -s requires -w with a combination of flags 'c','x' and 'q'"
+msgstr ""
+"Der -s-Schalter erfordert -w mit einer Kombination der Flags 'c', 'x' und 'q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:420
+msgid ""
+"The action \"%1\" is already defined as core action and cannot be overridden"
+msgstr ""
+"Die Aktion \"%1\" ist bereits als Kernaktion definiert und kann nicht "
+"überschrieben werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:116
+msgid "Ops.. internal error"
+msgstr "Ups.. Interner Fehler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:125
+msgid "Manage File &Transfers"
+msgstr "Dateiüber&tragungen verwalten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:67
+msgid "Choose Avatar - KVIrc"
+msgstr "Avatar auswählen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:72
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+"Bitte wählen Sie ein Avatarbild aus. Sie können den vollen Pfad zu einer "
+"lokalen Datei oder eines Bildes im Web benutzen.<br>Falls Sie ein lokales "
+"Bild benutzen möchten, klicken Sie auf den \"<b>Durchsuchen</b>\"-Knopf, um "
+"lokale Verzeichnisse zu durchforsten.<br>Die volle URL des Bildes (inklusive "
+"<b>http://</b>) kann manuell eingeben werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:283
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:358
+msgid "Internal error: I'm not in the user database ?"
+msgstr "Interner Fehler: Ich bin nicht in der Datenbank?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:245
+msgid "Can't set the current avatar to '%Q': failed to start the http transfer"
+msgstr ""
+"Der aktuelle Avatar kann nicht auf '%Q' gesetzt werden: der Start der HTTP-"
+"Übertragung ist fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:249
+msgid "Can't set the current avatar to '%Q': can't load the image"
+msgstr ""
+"Der aktuelle Avatar kann nicht auf '%Q' gesetzt werden: das Bild kann nicht "
+"geladen werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:351
+msgid "Invalid timeout specified, using default"
+msgstr "Ein ungültiger Time-Out wurde angegeben, es wird der Standard benutzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:389
+msgid "Can't add a file offer for file %Q (huh ? file not readable ?)"
+msgstr ""
+"Die Datei %Q kann nicht zun Dateiangebot hinzugefügt werden (Mh? Ist die "
+"Datei nicht lesbar?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:396
+msgid "Added %d secs file offer for file %Q (%Q) and receiver %Q"
+msgstr ""
+"Es wurde ein %d-Sekunden-Dateiangebot für die Datei %Q (%Q) und dem "
+"Empfänger %Q hinzugefügt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:403
+msgid "Notifying avatar '%Q' to %Q"
+msgstr "Benachrichtige Avatar '%Q' an %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:55
+msgid "&Execute"
+msgstr "&Ausführen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:59
+msgid "Params:"
+msgstr "Parameter:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:107
+msgid "Script Tester"
+msgstr "Skripttester"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:220
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:413
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:543
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:628
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:765
+msgid "The config file with id '%Q' is not open"
+msgstr "Die Konfigurationsdatei mit der ID '%Q' ist nicht geöffnet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:538
+msgid ""
+"The config file '%Q' has been changed but is opened as read-only: changes "
+"will be lost"
+msgstr ""
+"Die Konfigurationsdatei '%Q' wurde verändert, ist aber nur lesbar geöffnet: "
+"alle Änderungen werden verloren gehen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:583
+msgid "The config file with id '%Q' is read only"
+msgstr "Die Konfigurationsdatei mit der ID '%Q' ist nur lesbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:178
+msgid "Colors"
+msgstr "Farben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:255
+msgid "Context sensitive help"
+msgstr "G&ross-/Kleinschreibung in der Hilfe beachten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1167
+msgid "&Replace"
+msgstr "E&rsetze"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:268
+msgid "Find & Repalce"
+msgstr "S&uchen und Ersetzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1148
+msgid "Word to Find"
+msgstr "Zu suchendes W&ort"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1156
+msgid "Replace with"
+msgstr "Er&setzen mit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1172
+msgid "&Replace in all Aliases"
+msgstr "In allen &Aliasen ersetzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1176
+msgid "&Findnext"
+msgstr "&Nächsten finden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1181
+msgid "&Replace(WIP)"
+msgstr "Ers&etzen (WIP)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:227
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:547
+msgid "The specified toolbar doesn't exist"
+msgstr "Die angegebene Werkzeugleiste existiert nicht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:424
+msgid "No action name/index specified"
+msgstr "Es wurde kein Aktionsname/-index angegeben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:441
+msgid "The action parameter didn't evaluate to an index"
+msgstr "Der Aktionparameter kann nicht zu einem Index ausgewertet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:455
+msgid "The toolbar does not contain the specified item"
+msgstr "Die Werkzeugleiste enthält nicht das angegebene Element"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:513
+msgid "The action \"%Q\" doesn't exist"
+msgstr "Die Aktion \"%Q\" existiert nicht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:31
+msgid "Torrent Client"
+msgstr "Torrent-Klient"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:361
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:364
+msgid "Standalone Servers"
+msgstr "Alleinstehende Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:112
+msgid ""
+"%Q doesn't look like a servers.ini file.\n"
+"Import failed."
+msgstr ""
+"%Q sieht nicht wie eine servers.ini-Datei aus.\n"
+"Der Import ist fehlgeschlagen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:122
+msgid "Choose a servers.ini file"
+msgstr "Servers.ini-Datei auswählen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:146
+msgid "Remote mIRC servers.ini Import Wizard"
+msgstr "mIRC-servers.ini-Importassistent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:154
+msgid ""
+"<center><b>Welcome!</b><br><br>This wizard will guide you in the process of "
+"downloading a list of IRC servers. Please click \"<b>Next</b>\" to begin the "
+"operation.</center>"
+msgstr ""
+"<center><b>Willkommen!</b><br><br>Dieser Assistent wird Sie durch den "
+"Prozess des Herunterladens einer Liste mit IRC-Servern führen. Bitte klicken "
+"Sie \"<b>Weiter</b>\", um die Operation zu beginnen.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:161
+msgid ""
+"<center>Here you can modify the URL that the list will be downloaded from. "
+"In most cases the default URL is acceptable.</center>"
+msgstr ""
+"<center>Hier können Sie die URL verändern, von der die Liste heruntergeladen "
+"wird. In den meisten Fällen ist die voreingestellte URL in Ordnung.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:169
+msgid "URL Selection"
+msgstr "URL-Auswahl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:173
+msgid "Please wait while the list is being downloaded"
+msgstr "Bitte warten Sie, während die Liste heruntergeladen wird"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:179
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:195
+msgid "List Download"
+msgstr "Herunterladen der Liste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:229
+msgid "Failed to start the server list transfer :("
+msgstr "Der Start der Listenübertragung ist fehlgeschlagen :("
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:245
+msgid "File downloaded: processing ..."
+msgstr "Die Datei wurde heruntergeladen: sie wird verarbeitet..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:255
+msgid "%1 servers imported succesfully"
+msgstr "%1 Server erfolgreich importiert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:257
+msgid "No servers imported"
+msgstr "Keine Server importiert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:326
+msgid "Import from servers.ini"
+msgstr "Aus servers.ini importieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:333
+msgid "Import from http://www.mirc.co.uk/servers.ini"
+msgstr "Aus http://www.mirc.co.uk/servers.ini importieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lineedit.cpp:372
+msgid "Unknown echo mode %Q"
+msgstr "Unbekannter Echo-Modus %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:203
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:359
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:172
+msgid "Widget parameter is not an object"
+msgstr "Der Widget-Parameter ist kein Objekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:230
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:250
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:449
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:485
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:177
+msgid "Widget parameter is not a valid object"
+msgstr "Der Widget-Parameter ist kein gültiges Objekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:95
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:263
+msgid "Widget object required"
+msgstr "Ein Widgetobjekt ist erforderlich"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:151
+msgid "Unknown dock area '%Q'"
+msgstr "Unbekanntes Dock-Areal '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:321
+msgid "Unknown alignment: '%Q'"
+msgstr "Unbekannte Ausrichtung: '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:373
+msgid "Unknown style: '%Q'"
+msgstr "Unbekannter Rahmen-/Schattenstil: '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:84
+msgid "the toolbar cannot be a parent-widget!"
+msgstr "Die Werkzeugleiste kann kein Elternwidget sein!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:93
+msgid "The parent-widget isn't a MainWindow."
+msgstr "Das aktuelle Elternwidget ist kein MainWindow"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:999
+msgid "The array passed as parameter must contain at least 4 elements"
+msgstr ""
+"Das als Parameter übergebene Array muss mindestens 4 Elemente beinhalten."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1012
+msgid "One of the geometry array parameters is empty"
+msgstr "Eins der Geometrie-Array-Parameter ist leer."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1017
+msgid "One of the geometry array parameters didn't evaluate to an integer"
+msgstr "Eins der Geometrie-Array-Parameter evaluierte nicht zu einer Ganzzahl."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:503
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1032
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1500
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1044
+msgid "The first parameter didn't evaluate to an array nor an integer"
+msgstr ""
+"Der erste Parameter evaluierte weder zu einem Array, noch zu einer Ganzzahl."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1419
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1476
+msgid "The array passed as parameter must contain at least 2 elements"
+msgstr ""
+"Das als Parameter übergebene Array muss mindestens 2 Elemente beinhalten."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:451
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:486
+msgid "One of the array parameters is empty"
+msgstr "Eins der Array-Parameter ist leer."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:456
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:491
+msgid "One of the array parameters didn't evaluate to an integer"
+msgstr "Eins der Array-Parameter evaluierte nicht zu einer Ganzzahl."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:478
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:804
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:993
+msgid "The array passed as parameter must contain at least 3 elements"
+msgstr ""
+"Das als Parameter übergebene Array muss mindestens 3 Elemente beinhalten."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:551
+msgid "Unknown orientation"
+msgstr "Unbekannte Ausrichtung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:789
+msgid "Pixmap or Widget parameter is not an object"
+msgstr "Der Pixmap- oder Widget-Parameter ist kein Objekt."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:730
+msgid "Widget or Pixmap required "
+msgstr "Ein Widget oder Pixmap ist erforderlich"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:852
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:862
+msgid "Invalid mode '%Q'"
+msgstr "Ungültiger Modus '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:886
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1701
+msgid "Pixmap parameter is not an object"
+msgstr "Der Pixmap-Parameter ist kein Objekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:891
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1706
+msgid "Pixmap object required"
+msgstr "Ein Pixmapobjekt ist erforderlich"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1027
+msgid ""
+"$setGeometry() requires either an array as first parameter or four integers"
+msgstr ""
+"$setGeometry() benötigt entweder einen Array als ersten Parameter, oder vier "
+"Ganzzahlen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:813
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1002
+msgid "One of the colors array parameters is empty"
+msgstr "Eines der Farb-Array-Parameter ist leer."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:818
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1007
+msgid "One of the colors array parameters didn't evaluate to an integer"
+msgstr "Eines der Farb-Array-Parameter evaluierte nicht zu einer Ganzzahl."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1020
+msgid "A string of 6 digits hex is required"
+msgstr "Eine sechs-Zahlen-Hex-Zeichenkette ist erforderlich."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:842
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1031
+msgid "Not an hex digits"
+msgstr "Das sind keine hexadezimalen Zahlen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1144
+msgid ""
+"$setForegroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+"$setForegroundColor benötigt entweder ein Array als ersten Parameter, eine "
+"hexadezimale Zeichenkette, oder drei Ganzzahlen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1219
+msgid ""
+"$setBackgroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+"$setBackgroundColor benötigt entweder ein Array als ersten Parameter, eine "
+"hexadezimale Zeichenkette, oder drei Ganzzahlen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1426
+msgid "One of the move array parameters is empty"
+msgstr "Eins der Move-Array-Parameter ist leer."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1431
+msgid "One of the move array parameters didn't evaluate to an integer"
+msgstr "Eins der Move-Array-Parameter evaluierte nicht zu einer Ganzzahl."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1438
+msgid "$move() requires either an array as first parameter or two integers"
+msgstr ""
+"$move() benötigt entweder ein Array als ersten Parameter, oder zwei "
+"Ganzzahlen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1483
+msgid "One of the resize array parameters is empty"
+msgstr "Eins der Resize-Array-Parameter ist leer."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1488
+msgid "One of the resize array parameters didn't evaluate to an integer"
+msgstr "Eins der Resize-Array-Parameter evaluierte nicht zu einer Ganzzahl."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1495
+msgid "$resize() requires either an array as first parameter or two integers"
+msgstr ""
+"$resize() benötigt entweder ein Array als ersten Parameter, oder zwei "
+"Ganzzahlen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1528
+msgid "Invalid parameters"
+msgstr "Ungültige Parameter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1560
+msgid "Unknown widget flag '%Q'"
+msgstr "Unbekanntes Widgetflag '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1592
+msgid "Unknown style '%Q'"
+msgstr "Unbekannter Rahmen-/Schattenstil '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1622
+msgid "No Layout associated to the widget "
+msgstr "Dem Widget ist kein Layout zugeordnet."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:117
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:152
+msgid "Can't add a non-widget object"
+msgstr "Ein nicht-Widget-Objekt kann nicht hinzugefügt werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1650
+msgid "Parent must be a widget object"
+msgstr "Das Elternelement muss ein Widget-Objekt sein."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1715
+msgid "Null mask"
+msgstr "Nullmaske"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1740
+msgid "Unknown widget attribute '%Q'"
+msgstr "Unbekanntes Widgetattribut '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:382
+msgid "No such line number"
+msgstr "Es gibt keine solche Zeilennummer."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:500
+msgid "Unknown word wrap '%Q'"
+msgstr "Unbekanntes Wrap-Wort '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:519
+msgid "Unknown wrap policy'%Q'"
+msgstr "Unbekannte Wrap-Richtlinie '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:850
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1039
+msgid "$setColor requires either an array as first parameter or three integers"
+msgstr ""
+"$setColor benötigt entweder ein Array als ersten Parameter, oder drei "
+"Ganzzahlen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:975
+msgid "Unknown text format '%Q'"
+msgstr "Unbekanntes Textformat '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1071
+msgid " I can't find the specified file '%Q'."
+msgstr "Ich konnte die angegebene Datei '%Q' nicht finden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1078
+msgid " I cannot read the file %Q'."
+msgstr "Ich konnte die Datei '%Q' nicht lesen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1113
+msgid "Unknown alignment '%Q'"
+msgstr "Unbekannte Ausrichtung '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1131
+msgid "Unknown auto formatting mode '%Q'"
+msgstr "Unbekannter automatischer Formatierungsmodus '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1149
+msgid "Unknown vertical alignment '%Q'"
+msgstr "Unbekannte vertikale Ausrichtung '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:264
+msgid "pix '%Q' doesn't exists"
+msgstr "Das Pix '%Q' existiert nicht."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:276
+msgid "Can't add a non - popupmenu object"
+msgstr "Es kann kein nicht-Aufklappmenü-Objekt hinzugefügt werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:302
+msgid "Doesn't a widget object"
+msgstr "Das ist kein Widgetobjekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:182
+msgid "I can't find the specified file %Q."
+msgstr "Ich konnte die angegebene Datei %Q nicht finden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:222
+msgid "Destination parameter is not an object"
+msgstr "Der Zielparameter ist kein Objekt."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:228
+msgid "Destination must be a pixmap object"
+msgstr "Das Ziel muss ein Pixmapobjekt sein."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:238
+msgid "Area dimensions are out of destination size "
+msgstr "Die Arealdimensionen befinden sich außerhalb der Zielgröße."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:253
+msgid "Pixmap dimensions are out of destination size "
+msgstr "Die Pixmapdimensionen befinden sich außerhalb der Zielgröße."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:261
+msgid "Offset width area is out of pixmap size "
+msgstr "Das Dickenversatzareal befindet sich außerhalb der Pixmapgröße."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:266
+msgid "Offset height area is out of pixmap size "
+msgstr "Das Höhenversatzaeral befindet sich außerhalb der Pixmapgröße."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:121
+msgid "The widget must be a child of this hbox"
+msgstr "Das Widget muss ein Kind dieser hbox sein."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:191
+msgid "No string parameter given - using empty string"
+msgstr ""
+"Es wurde kein Zeichenkettenparameter übergeben - nehme eine leere "
+"Zeichenkette an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:194
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:214
+#, c-format
+msgid "Item index [%d] is too big - defaulting to $count() - 1 [%d]"
+msgstr ""
+"Der Element-Index [%d] ist zu groß - benutze den Standard $count() -1 [%d]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:333
+msgid "Invalid insertion Policy %Q"
+msgstr "Ungültige Einfügerichtlinie %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:136
+msgid "Unknown mode "
+msgstr "Unbekannter Modus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:149
+msgid "Unknown segment style "
+msgstr "Unbekannter Segmentstil"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_process.cpp:221
+msgid "Process could not be starded."
+msgstr "Der Prozess konnte nicht gestartet werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:279
+msgid "Invalid selection mode '%Q' assuming single"
+msgstr "Ungültige Auswahlrichtung '%Q', nehme \"einzeln\" an."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:316
+msgid "Unknown text position '%Q'"
+msgstr "Unbekannte Textposition '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:256
+msgid "Unknown tickmark '%Q'"
+msgstr "Unbekanntes Häckchen '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:271
+msgid "Unknown orientation '%Q'"
+msgstr "Unbekannte Ausrichtung '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:500
+msgid "No socket object specified"
+msgstr "Es wurde kein Socketobjekt angegeben."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:506
+msgid "Invalid socket object specified (it doesn't inherit from socket)"
+msgstr ""
+"Es wurde ein ungültiges Socketobjekt angegeben (jedoch wurde es nicht vom "
+"Socket vererbt)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:518
+msgid "There is no connection to accept!"
+msgstr "Es gibt keine Verbindung zum annehmen!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:591
+#, c-format
+msgid "Value %d for port is out of range (values allowed are from 0 to 65535"
+msgstr ""
+"Der Port-Wert %d befindet sich außerhalb des gültigen Bereichs (erlaubt sind "
+"alle Werte von 0 bis 65535.)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:596
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:87
+msgid "Another connection in progress"
+msgstr "Eine andere Verbindung ist gerade im Aufbau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:648
+msgid "No IPV6 support in this executable"
+msgstr "Es gibt keine IPv6-Unterstützung in dieser Version"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:670
+msgid "Invalid IP address specified ('%Q')"
+msgstr "Es wurde eine ungültige IP-Adresse angegeben ('%Q')"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:89
+msgid "Socket creation failed"
+msgstr "Der Socket konnte nicht erstellt werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:706
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:727
+msgid "Invalid socket address"
+msgstr "Die Socketadresse ist ungültig."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:714
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:735
+msgid "Bind failure"
+msgstr "Das Binden ist fehlgeschlagen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:745
+msgid "Listen failure"
+msgstr "Das Abhören ist fehlgeschlagen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:812
+msgid "unknown"
+msgstr "unbekannt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:876
+msgid "Invalid ip address "
+msgstr "Die IP-Adresse ist ungültig."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:882
+msgid "Invalid ip address (%Q)"
+msgstr "Die IP-Adresse (%Q) ist ungültig."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:906
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1013
+msgid "Failed to create the socket"
+msgstr "Die Socketerstellung ist fehlgeschlagen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:918
+msgid "Failed to setup a nonblocking socket"
+msgstr "Die Einrichtung eines nichtblockierenden Sockets ist fehlgeschlagen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:939
+msgid "Connect failure: "
+msgstr "Verbindungsfehler:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:967
+msgid "Connect attempt timed out"
+msgstr "Der Verbindungsversuch ist ausgetimet."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:993
+msgid "Can't start the DNS thread"
+msgstr "Der DNS-Thread konnte nicht gestartet werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:1143
+msgid ""
+"Too much unprocessed incoming data (you've left this socket unmanaged ?)"
+msgstr ""
+"Es gibt zu viele unverarbeitete ankommende Daten (haben Sie den Socket "
+"unverwaltet allein gelassen oder vergessen?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:149
+msgid "Error in KVS class implementation: processing aborted"
+msgstr ""
+"Es wurde ein Fehler in der KVS-Klassen-Implementation gefunden: Die "
+"Verarbeitung wurde abgebrochen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:154
+msgid "Processing aborted"
+msgstr "Die Verarbeitung wurde abgebrochen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:160
+#, c-format
+msgid "Error near line %d, column %d"
+msgstr "Es wurde ein Fehler in der Nähe der %d. Zeile, %d. Zeichen gefunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:162
+#, c-format
+msgid "Warning near line %d, column %d"
+msgstr "Es wurde eine Warnung für die %d. Zeile, %d. Zeichen gefunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:313
+msgid "XML support not available in the Qt library"
+msgstr "Es gibt keine XML-Unterstützung in dieser Qt-Bibliothek."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:491
+msgid "Not a widget object"
+msgstr "Das ist kein Widgetobjekt."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:308
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:497
+msgid "Can't find the tab "
+msgstr "Der Tab kann nicht gefunden werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:522
+msgid "Unknown position 'Q%'"
+msgstr "Unbekannte Position '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:123
+msgid "The widget must be a child of this vbox"
+msgstr "Das Widget muss ein Kind dieser vbox sein."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:276
+msgid "Not Enough Parameters"
+msgstr "Nicht genügend Parameter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:142
+msgid "The listviewitem cannot be parentless"
+msgstr "Das Listviewelement kann nicht elternlos sein."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:152
+msgid ""
+"The parent of the listviewitem must be either another listviewitem or a "
+"listview"
+msgstr ""
+"Das übergeordnete Element dieses Listviewelements muss entweder ein anderes "
+"Listviewelement, oder eine Listview sein."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:403
+msgid "Pixmap object or image Id required"
+msgstr "Es ist ein Pixmapobjekt, oder eine Image-ID erforderlich"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:413
+msgid ""
+"Error occured: the suitable file '%Q' is not of the correct format or it is "
+"not a valid icon number."
+msgstr ""
+"Es ist ein Fehler aufgetreten: die passende Datei '%Q' ist nicht im "
+"richtigen Format oder sie ist keine gültige Symbolnummer."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:151
+msgid ""
+"The window identifier preceeded by WinId must be the first object in the "
+"search path"
+msgstr ""
+"Der der WinID vorhergehende Fensterbezeichner muss das erste Objekt im "
+"Suchpfad sein."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:167
+msgid "Failed to find one of the wrap path widgets (%Q::%Q)"
+msgstr "Eines der Wrap-Pfad-Widgets (%Q::%Q) konnte nicht gefunden werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:176
+msgid "Failed to find the widget to wrap"
+msgstr "Das einzuhüllende Widget kann nicht gefunden werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:119
+msgid "The parent of a layout must be a widget!"
+msgstr "Das übergeordnete Element von einem Layout muss ein Widget sein!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:269
+msgid "Invalid resize mode defaulting to Auto"
+msgstr "Ungültiger Größenänderungsmodus; benutze den Standard \"Auto\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:324
+msgid "Unknown alignment"
+msgstr "Unbekannte Ausrichtung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:373
+msgid "Unknown orientation: "
+msgstr "Unbekannte Ausrichtung:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listview.cpp:320
+msgid "Invalid selection mode '%Q'"
+msgstr "Ungültiger Auswahlrichtungsmodus '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tbrowser.cpp:99
+msgid "I can't find the specified file '%Q'."
+msgstr "Ich kann die angegebene Datei '%Q' nicht finden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:121
+msgid "Can't add a null object"
+msgstr "Es Kann kein Nullobjekt hinzugefügt werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:128
+msgid ""
+"Invalid object handle passed as parameter (the object is no longer "
+"existing ?)"
+msgstr ""
+"Es wurde ein ungültiger Objekthandle als erster Parameter übergeben "
+"(existiert dieses Objekt nicht mehr?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:134
+msgid "Object in invalid state"
+msgstr "Das Objekt befindet sich in einem ungültigen Zustand."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:140
+msgid "Can't set a non-widget object to be the main widget of a dock window"
+msgstr ""
+"Sie können kein nicht-Widget-Objekt als Hauptwidget eines Dockfensters "
+"verwenden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:146
+msgid "The added widget is not a child of this dock window"
+msgstr "Das hinzugefügte Widget ist kein Kind dieses Dockfensters."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:271
+msgid "Invalid dock area specified"
+msgstr "Es wurde ein ungültiges Dock-Areal angegeben."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:181
+msgid "Class '%Q' is not definited"
+msgstr "Die Klasse '%Q' ist nicht definiert."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:257
+msgid "Inexisting target object for objects.connect"
+msgstr "Das Zielobjekt für objects.connect existiert nicht."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:262
+msgid "Inexisting source object for objects.connect"
+msgstr "Das Quellobjekt für objects.connect existiert nicht."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:444
+msgid "The class '%Q' does not exist"
+msgstr "Die Klasse '%Q' existiert nicht."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:404
+msgid "Object does not exists"
+msgstr "Das Objekt existiert nicht."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:557
+msgid "Inexisting target object for objects.disconnect"
+msgstr "Das Zielobjekt für objects.disconnect existiert nicht."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:562
+msgid "Inexisting source object for objects.disconnect"
+msgstr "Das Quellobjekt für objects.disconnect existiert nicht."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:608
+msgid "Source is not an object"
+msgstr "Die Quelle ist kein Objekt."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:614
+msgid "Destination is not an object"
+msgstr "Das Ziel ist kein Objekt."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:625
+msgid "Widget, Image or Pixmap required "
+msgstr "Es wird ein Widget, Pixmap oder Bild erfordert."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:635
+msgid "Widget or Pixmap required"
+msgstr "Es ist ein Widget oder Pixmap erforderlich."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:714
+msgid "One o more of background, foreground or destination aren't objects"
+msgstr ""
+"Eines oder mehre der Hintergrund-, Vordergrund- oder Ziel-Objekte sind in "
+"Wirklichkeit keine Objekte."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:720
+msgid "Pixmap objects required"
+msgstr "Es ist ein Pixmapobjekt erforderlich."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:743
+msgid "Values for background are out of image size "
+msgstr "Die Werte für den Hintergrund befinden sich außerhalb der Bildgröße."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:748
+msgid "Values for foreground are out of image size "
+msgstr "Die Werte für den Vordergrund befinden sich außerhalb der Bildgröße."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:226
+msgid "Empty filename string"
+msgstr "Die Dateinamenszeichenkette ist leer."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:271
+msgid "No such open mode: '%Q'"
+msgstr "Es gibt keine solche Öffnungs-Methode: '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:312
+msgid "File is not open!"
+msgstr "Die Datei ist nicht geöffnet!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:348
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:406
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:434
+msgid "File is not open !"
+msgstr "Die Datei ist nicht geöffnet!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:369
+msgid "Argument to long, using only first char"
+msgstr "Das Argument ist zu lang, benutze nur das erste Zeichen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:339
+msgid "Write error occured !"
+msgstr "Es ist ein Schreibfehler aufgetreten!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:352
+msgid "Read error occured !"
+msgstr "Es ist ein Lesefehler aufgetreten!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:371
+msgid "An error occured !"
+msgstr "Es ist ein Fehler aufgetreten!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:387
+msgid "Missing both encrypt and decrypt key: at least one is needed"
+msgstr ""
+"Es fehlt sowohl der Verschlüsselungs-, als auch der "
+"Entschlüsselungsschlüssel: mindestens einer davon muss vorhanden sein"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:168
+msgid "Error 0: Success ?"
+msgstr "Fehler 0: Ist das doch ein Erfolg?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:169
+msgid "Unsupported crypt mode"
+msgstr "Dieser Verschlüsselungsmodus wird nicht unterstützt."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:170
+msgid "Unsupported direction"
+msgstr "Diese Richtung wird nicht unterstützt."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:171
+msgid "Unsupported key length"
+msgstr "Diese Schlüssellänge wird nicht unterstützt."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:172
+msgid "Bad key data"
+msgstr "Der Schlüssel enthielt ungültige Daten."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:173
+msgid "Engine not initialized"
+msgstr "Die Routine wurde noch nicht initalisiert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:174
+msgid "Invalid direction for this engine"
+msgstr "Diese Richtung ist für diesen Algorithmus nicht zulässig."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:175
+msgid "Corrupted message data or invalid decrypt key"
+msgstr ""
+"Entweder die Nachrichtendaten waren fehlerhaft, oder der "
+"Enschlüsselungsschlüssel ungültig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:52
+msgid "Unknown error"
+msgstr "Unbekannter Fehler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:184
+msgid "Ops...encrypt cipher not initialized"
+msgstr "Ups... die Verschlüsselungschiffre wurde nicht initalisiert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:420
+msgid "Data buffer too long"
+msgstr "Der Datenpuffer ist zu lang"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:221
+msgid "Ops...decrypt cipher not initialized"
+msgstr "Ups... Die Entschlüsselungschiffre wurde nicht initalisiert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:277
+msgid "The message is not a hexadecimal string: this is not my stuff"
+msgstr ""
+"Diese Nachricht ist keine hexadezimale Zeichenkette: ich habe damit nichts "
+"zu tun"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:671
+msgid "The message is not a base64 string: this is not my stuff"
+msgstr ""
+"Diese Nachricht ist keine base64-Zeichenkette: ich habe damit nichts zu tun"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:676
+msgid "The message doesn't seem to be encoded with CBC Mircryption"
+msgstr "Die Nachricht scheint nicht mit CBC-Mirccryption verschlüsselt zu sein"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:712
+#, c-format
+msgid ""
+"Cryptographic engine based on the\n"
+"Advanced Encryption Standard (AES)\n"
+"algorithm called Rijndael.\n"
+"The text is first encrypted with rijndael\n"
+"and then converted to %s notation.\n"
+"The keys used are %d bit long and will be padded\n"
+"with zeros if you provide shorter ones.\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"See the rijndael module documentation\n"
+"for more info on the algorithm used.\n"
+msgstr ""
+"Das ist eine Kryptographische Routine, die auf dem\n"
+"Erweiterten-Verschlüsselungsstandard-Algorithmus (AES),\n"
+"auch Rijndael genannt, basiert.\n"
+"Der Text wird zuerst mit Rijndael verschlüsselt\n"
+"und danach zur %s-Notierung umgewandelt werden.\n"
+"Die benutzten Schlüssel sind %d Bits lang und werden mit Nullen aufgefüll,\n"
+"falls Sie kürzere angeben.\n"
+"Falls Sie nur einen Schlüssel angeben, wird ihn diese Routine\n"
+"für beides (Verschlüsseln und Entschlüsseln) verwenden.\n"
+"Lesen Sie die Rijndael-Modul-Dokumentation,\n"
+"um mehr Informationen zum benutzten Algorithmus zu erhalten.\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:739
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:749
+msgid "hexadecimal"
+msgstr "hexadezimal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:759
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:779
+msgid "base64"
+msgstr "base64"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:790
+msgid ""
+"Popular cryptographic engine based on the\n"
+"old Blowfish encryption algorithm.\n"
+"The text is first encrypted with Blowfish \n"
+"and then converted to base64 notation.\n"
+"The keys used have variable length and\n"
+"are specified as character strings.\n"
+"You can specify keys long up to 56 bytes (448 bits).\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"This engine works in ECB mode by default:\n"
+"if you want to use CBC mode you must prefix\n"
+"your key(s) with \"cbc:\".\n"
+msgstr ""
+"Das ist eine popuräre kryptographische Routine,\n"
+"basierend auf dem alten\n"
+"Blowfish-Verschlüsselungsalgorithmus (AES).\n"
+"Dieser Text wird zuerst mit Blowfish verschlüsselt\n"
+"und danach zur base64-Notierung umgewandelt.\n"
+"Die benutzten Schlüssel besitzen eine variable Länge und sind als "
+"Zeichenketten definiert.\n"
+"Es können Schlüssel bis zu einer Länge von 56 Byte (448 Bit) verwendet "
+"werden.\n"
+"Falls nur ein Schlüssel angegeben wird, wird diese Routine\n"
+"ihn für beides (Verschlüsseln und Entschlüsseln) benutzen.\n"
+"Diese Routine arbeitet standardmäßig im ECB-Modus:\n"
+"falls der CBC-Modus benutzt werden soll, müssen Sie Ihrem/Ihren Schlüssel/n "
+"mit\n"
+"ein \"cbc:\" voranstellen.\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:61
+msgid "Drop here the icons from the toolbars to remove them"
+msgstr ""
+"Lassen Sie Die Symbole der Werkzeugleisten hier hin fallen, um sie zu "
+"entfernen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:128
+msgid "ToolBar Properties"
+msgstr "Werkzeugleisteneinstellungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:144
+msgid "Icon"
+msgstr "Symbol"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:160
+msgid "Id"
+msgstr "ID"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:217
+msgid "Please choose the icon for the ToolBar"
+msgstr "Bitte wählen Sie das Symbol für die Werkzeugleiste aus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "Invalid ToolBar Label"
+msgstr "Der Werkzeugleistenbezeichner ist ungültig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "The ToolBar Label can't be empty!"
+msgstr "Der Werkzeugleistenbezeichner kann nicht leer sein!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:256
+msgid "Duplicate ToolBar Id"
+msgstr "Diese Werkzeugleisten-ID duplizieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:257
+msgid ""
+"The specified ToolBar Id already exists.<br>Would you like KVIrc to assign "
+"it automatically (so it doesn't collide with any other toolbar) or you "
+"prefer to do it manually ?"
+msgstr ""
+"Die angegebene Werkzeugleisten-ID existiert bereits.<br>Soll KVIrc sie "
+"automatisch zuweisen (dann wird sie nicht mit einer anderen Werkzeugleiste "
+"kollidieren) oder möchten Sie das manuell vornehmen?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Manually"
+msgstr "Manuell"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Automatically"
+msgstr "Automatisch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:278
+msgid "Hide Advanced"
+msgstr "Erweiterte Optionen ausblenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:287
+msgid "Customize Toolbars"
+msgstr "Werkzeugleisten anpassen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:296
+msgid "New ToolBar"
+msgstr "Neue Werkzeugleiste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:300
+msgid "Delete ToolBar"
+msgstr "Werkzeugleiste löschen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:304
+msgid "Edit ToolBar"
+msgstr "Werkzeugleiste bearbeiten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:312
+msgid "Export ToolBar"
+msgstr "Werkzeugleiste exportieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:373
+msgid "Confirm ToolBar Deletion"
+msgstr "Bestätigung zum Löschen der Werkzeugleiste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:374
+msgid "Do you really want to delete toolbar \"%1\" ?"
+msgstr "Soll die Werkzeugleiste \"%1\" wirklich gelöscht werden?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:397
+msgid "ToolBar Export"
+msgstr "Werkzeugleisten-Export"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:398
+msgid "Do you want the associated actions to be exported with the toolbar ?"
+msgstr ""
+"Sollen die der Werkzeugleiste zugeordneten Aktionen mitexportiert werden?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+msgid "Unable to write to the toolbar file."
+msgstr "Die Werkzeugleistendatei kann nicht geschrieben werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:465
+msgid "Please specify the properties for the toolbar \"%1\""
+msgstr "Bitte geben Sie die Eigenschaften für die Werkzeugleiste \"%1\" an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:491
+msgid "Please specify the properties for the new toolbar"
+msgstr "Bitte geben Sie die Eigenschaften für die neue Werkzeugleiste an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:493
+msgid "My ToolBar"
+msgstr "Meine Werkzeugleiste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:63
+msgid "Window with ID '%Q' not found"
+msgstr "Das Fenster mit der ID '%Q' wurde nicht gefunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:67
+msgid "The specified window (%Q) is not a channel/query/DCC chat"
+msgstr "Das angegebene Fenster (%Q) ist kein(e) Kanal/Anfrage/DCC-Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:108
+msgid "File not found or empty"
+msgstr "Die Datei wurde nicht gefunden oder ist leer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:114
+msgid "I can't open that file"
+msgstr "Ich kann diese Datei nicht öffnen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:122
+msgid "Could not paste file"
+msgstr "Die Datei konnte nicht eingefügt werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:218
+msgid "The specified window (%Q) is not a channel/query/dcc"
+msgstr "Das angegebene Fenster (%Q) ist kein(e) Kanal/Anfrage/DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:271
+msgid "Slow-paste ID:%d Window:%Q"
+msgstr "Langsames-Einfügen-ID: %d Fenster: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:240
+msgid "Plugin not found. Please check the plugin-name and path."
+msgstr ""
+"Die Erweiterung wurde nicht gefunden. Bitte überprüfen Sie den "
+"Erweiterungsnamen und -Pfad."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:247
+msgid "Error while loading plugin."
+msgstr "Fehler beim Laden des Moduls."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:311
+msgid "This plugin does not export the desired function."
+msgstr "Diese Erweiterung exportiert nicht die gewünschte Funktion."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:327
+msgid ""
+"The plugin has no function to free memory. This can result in Memory Leaks!"
+msgstr ""
+"Diese Erweiterung hat keine Funktion, um den Speicher wieder freizugeben. "
+"Das kann in Speicherlecks enden!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:209
+#, c-format
+msgid "No environment variable found, please don't use the %% in the request"
+msgstr ""
+"Es wurde keine Umgebungsvariable gefunden, bitte nutzen Sie in der Anfrage "
+"nicht %%."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:482
+msgid "Invalid DCOP parameter syntax"
+msgstr "Die DCOP-Parametersyntax ist ungültig."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:495
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:516
+msgid "The specified parameter is not an integer"
+msgstr "Der angegebene Parameter ist keine Ganzzahl."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:521
+#, c-format
+msgid "Unsupported DCOP parameter type %s"
+msgstr "Der DCOP-Parametertyp %s wird nicht unterstützt."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:534
+msgid "DCOP call failed"
+msgstr "Der DCOP-Aufruf schlug fehl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:599
+msgid "DCOP calls are available only when KDE support is compiled in"
+msgstr ""
+"DCOP-Aufrufe sind nur verfügbar, wenn die KDE-Unterstützung mit "
+"einkompiliert wurde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1408
+#, c-format
+msgid "The window with id '%s' does not exist"
+msgstr "Das Fenster mit der ID '%s' existiert nicht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:851
+msgid "Window type or 'all' expected as first parameter"
+msgstr "Es wurde ein Fenstertyp oder 'all' als erster Parameter erwartet."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:938
+msgid "Invalid IRC context id '%Q'"
+msgstr "Der IRC-Kontext-ID '%Q' ist ungültig."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1045
+msgid "The specified IRC context is not valid: creating a context free window"
+msgstr ""
+"Der angegebene IRC-Kontext ist ungültig: Es wird ein kontextfreies Fenster "
+"erstellt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1119
+msgid "The specified window is not of type \"userwnd\""
+msgstr "Das angegebene Fenster ist nicht vom Typ \"userwnd\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1208
+msgid "Window doesn't have input widget"
+msgstr "Das Fenster hat kein Eingabewidget."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1363
+msgid "The encrypt key wasn't a valid hexadecimal string"
+msgstr ""
+"Der Verschlüsselungsschlüssel war keine gültige hexadezimale Zeichenkette"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1377
+msgid "The decrypt key wasn't a valid hexadecimal string"
+msgstr ""
+"Der Entschlüsselungsschlüssel war keine gültige hexadezimale Zeichenkette"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1414
+msgid "Both -n and -m switchess specified, -n takes precedence"
+msgstr ""
+"Es wurden die beiden Parameter -n und -m angegeben, -n erhält den Vorrang"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1424
+msgid "No encrypt key specified: can't allocate engine"
+msgstr ""
+"Es wurde kein Verschlüsselungsschlüssel angegeben: Die Routine kann nicht "
+"bereitgestellt werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1446
+msgid "Unknown engine error"
+msgstr "Die Routine lieferte einen unbekannten Fehler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1449
+msgid "Failed to initialize the specified crypt engine: %Q"
+msgstr ""
+"Die Initialisierung der angegeben Verschlüsselungsroutine '%Q' ist "
+"fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1453
+msgid "The crypt engine \"%Q\" does not exist"
+msgstr "Die Verschlüsselungsroutine \"%Q\" existiert nicht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1458
+msgid "This executable has been compiled without crypt support"
+msgstr ""
+"Diese Version von KVIrc wurde ohne Verschlüsselungsunterstützung übersetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:138
+msgid "Current window is not a channel"
+msgstr "Das akuelle Fenster ist kein Kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:87
+msgid "Raw Event"
+msgstr "RAW-Ereignis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:97
+msgid "Edit the raw event handler name."
+msgstr "Den RAW-Ereignishandlernamen bearbeiten."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:179
+msgid "&Add Raw Event..."
+msgstr "RAW-Ereignis &hinzufügen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "New Raw Event"
+msgstr "Neues RAW-Ereignis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "Enter the numeric code of the message (0-999)"
+msgstr "Geben Sie den numerischen Code der Nachricht ein (0-999)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+msgid "Unable to write to the raw event file."
+msgstr "RAW-Ereignisdatei kann nicht geschrieben werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Unable to write to the raw events file."
+msgstr "RAW-Ereignissedatei kann nicht geschrieben werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:512
+msgid "Raw Editor"
+msgstr "RAW-Editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:219
+msgid "A really lame text transformation engine :D"
+msgstr "Eine wirklich lahme Textumformungsroutine :D"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:229
+msgid "A really lame text transformation engine: Light Version."
+msgstr "Eine wirklich lahme Textumformungsroutine: leichte Version."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:82
+#, c-format
+msgid "Socket Spy [IRC Context %u]"
+msgstr "Socketüberwachung [IRC-Kontext %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:92
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Socket Spy</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Socketüberwachung</b></font> <font color=\"%s\">"
+"[IRC-Kontext %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:112
+msgid "Socket open"
+msgstr "Socket geöffnet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:117
+msgid "Socket closed"
+msgstr "Socket geschlossen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:149
+msgid "Internal unique name for the action"
+msgstr "Interner eindeutiger Name für die Aktion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:151
+msgid "Label:"
+msgstr "Beschriftung:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:155
+msgid ""
+"Visible name for this action.<br>This string will be displayed to the user "
+"so it is a good idea to use $tr() here"
+msgstr ""
+"Sichtbarer Name für diese Aktion.<br>Diese Zeichenkette wird dem Benutzer "
+"angezeigt, also ist es eine gute Idee, hier $tr() zu verwenden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:166
+msgid "Action code"
+msgstr "Aktionscode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:168
+msgid "Code"
+msgstr "Code"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:174
+msgid "Category:"
+msgstr "Kategorie:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:178
+msgid "Choose the category that best fits for this action"
+msgstr "Wählen Sie die Kategorie aus, die am besten zu dieser Aktion passt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:180
+msgid "Description:"
+msgstr "Beschreibung:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:184
+msgid ""
+"Visible short description for this action.<br>This string will be displayed "
+"to the user so it is a good idea to use $tr() here"
+msgstr ""
+"Sichtbare Kurzbeschreibung für diese Aktion.<br>Diese Zeichenkette wird dem "
+"Benutzer angezeigt, also ist es eine gute Idee, hier $tr() zu verwenden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:186
+msgid "Small Icon:"
+msgstr "Kleines Symbol:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:194
+msgid ""
+"The small icon associated to this action.<br>It will appear at least in the "
+"popup menus when this action is inserted.<br>It should be 16x16 pixels."
+msgstr ""
+"Das ist das dieser Aktion zugeordnete kleine Symbol.<br>Es wird in den "
+"Aufklappmenüs angezeigt, die diese Aktion beinhalten.<br>Es sollte eine "
+"Größe von 16x16 Pixel besitzen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:200
+msgid "Big Icon:"
+msgstr "Großes Symbol:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:209
+msgid ""
+"The big icon associated to this action.<br>It will appear at least in the "
+"toolbar buttons when this action is inserted.<br>It should be 32x32 pixels."
+msgstr ""
+"Das ist das dieser Aktion zugeordnete große Symbol.<br>Es wird in den "
+"Aufklappmenüs angezeigt, die diese Aktion beinhalten.<br>Es sollte eine "
+"Größe von 32x32 Pixel besitzen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:215
+msgid "Key Sequence:"
+msgstr "Tastenkombination:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:219
+msgid ""
+"Optional keyboard sequence that will activate this action.<br>The sequence "
+"should be expressed as a string of up to four key codes separated by commas "
+"eventually combined with the modifiers \"Ctrl\",\"Shift\",\"Alt\" and \"Meta"
+"\".<br>Examples of such sequences are \"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl+X,"
+"Ctrl+C\" ..."
+msgstr ""
+"Mit dieser (optionalen) Tastenkombination kann man diese Aktion ebenfalls "
+"aktivieren. <br> Die Kombination sollte als Zeichenkette mit bis zu vier "
+"Tasten, die durch Kommata getrennt werden können, und schließlich die "
+"Modifizierer \"Strg\", \"Shift\", \"Alt\" oder \"Meta\" enthalten dürfen, "
+"formuliert werden.<br>Beispiele solcher Sequenzen sind \"Strg+X\", \"Strg+Alt"
+"+Z\", \"Strg+X\", \"Strg+C\" ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:240
+msgid "Needs IRC Context"
+msgstr "Es wird ein IRC-Kontext benötigt."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:242
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window belongs to an irc context"
+msgstr ""
+"Setzen Sie hier ein Häckchen, falls enn diese Aktion nur aktiviert werden "
+"soll, wenn das aktive Fens zu einem IRC-Kontzugehörig ist.hört"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:250
+msgid "Needs IRC Connection"
+msgstr "Es wird eine IRC-Verbindung benötigt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:252
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window has an active IRC connection"
+msgstr ""
+"Setzen Sie hier ein Häckchen, falls diese Aktion nur aktiviert werden soll, "
+"wenn das aktive Fenster eine aktive IRC-Verbindung besitzt."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:260
+msgid "Enable at Login"
+msgstr "Beim Login aktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:261
+msgid ""
+"Check this option if this action should be enabled also during the login "
+"operations (so when the logical IRC connection hasn't been estabilished yet)"
+msgstr ""
+"Setzen Sie hier ein Häckchen, falls diese Aktion auch während den "
+"Einloggoperationen aktiviert werden soll (das heißt, wenn die logische IRC-"
+"Verbindung noch nicht aufgebaut ist)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:265
+msgid "Enable Only in Specified Windows"
+msgstr "Nur in angegebenen Fenstern aktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:267
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is of a specified type"
+msgstr ""
+"Setzen Sie hier ein Häckchen, falls diese Aktion nur aktiviert werden soll, "
+"wenn das aktive Fenster von einem bestimmten Typ ist"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:271
+msgid "Enable in Console Windows"
+msgstr "In Konsolfenstern aktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:272
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a console"
+msgstr ""
+"Setzen Sie hier ein Häckchen, falls diese Aktion nur aktiviert werden soll, "
+"wenn das aktive Fenster eine Konsole ist"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:277
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:299
+msgid "Only If There Are Selected Users"
+msgstr "Nur, wenn Benutzer ausgewählt sind"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:278
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:300
+msgid ""
+"This will enable the action only if there are selected users in the active "
+"window"
+msgstr ""
+"Setzen Sie hier ein Häckchen, falls diese Aktion nur aktiviert werden soll, "
+"wenn im aktiven Fenster Benutzer ausgewählt sind"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:282
+msgid "Enable in Channel Windows"
+msgstr "In Kanalfenstern aktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:283
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a channel"
+msgstr ""
+"Setzen Sie hier ein Häckchen, falls diese Aktion nur aktiviert werden soll, "
+"wenn das aktive Fenster ein Kanal ist"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:293
+msgid "Enable in Query Windows"
+msgstr "In Anfragefenstern aktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:294
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a query"
+msgstr ""
+"Setzen Sie hier ein Häckchen, falls diese Aktion nur aktiviert werden soll, "
+"wenn das aktive Fenster eine Anfrage ist"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:304
+msgid "Enable in DCC Chat Windows"
+msgstr "In DCC-Chat-Fenstern aktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:305
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a dcc chat"
+msgstr ""
+"Sezen Sie hier ein Häckchen, falls diese Aktion nur aktiviert werden soll, "
+"wenn das aktive Fenster ein DCC-Chat ist"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:627
+msgid "Action"
+msgstr "Aktion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:680
+msgid "New Action"
+msgstr "Neue Aktion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:683
+msgid "Delete Actions"
+msgstr "Aktionen löschen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:686
+msgid "Export Actions..."
+msgstr "Aktionen exportieren..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Unable to write to the actions file."
+msgstr "Die Aktionendatei kann nicht geschrieben werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:823
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:824
+msgid "My Action"
+msgstr "Meine Aktion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:825
+msgid "Put here a short description of your action"
+msgstr "Geben Sie hier eine Kurzbeschreibung der Aktion an."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:925
+msgid "Action Editor"
+msgstr "Aktionseditor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:938
+msgid "Apply"
+msgstr "Anwenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:63
+msgid "Outgoing traffic"
+msgstr "Ausgehender Netzverkehr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:67
+msgid "Incoming traffic"
+msgstr "Ankommender Netzverkehr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_crypt.cpp:160
+msgid "Invalid crypt engine"
+msgstr "Diese Verschlüsselungsroutine ist ungültig."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:296
+msgid "Directory"
+msgstr "Verzeichnis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:315
+msgid "Socket"
+msgstr "Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:332
+msgid "Fifo"
+msgstr "FIFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:349
+msgid "Block device"
+msgstr "Blockgerät"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:366
+msgid "Char device"
+msgstr "Zeichenorientiertes Gerät"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:429
+msgid "Octet stream (unknown)"
+msgstr "Acht-Bit-Datenstrom (unbekannt)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_osinfo.cpp:413
+msgid "Unknown "
+msgstr "Unbekannt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:181
+msgid "The specified network has no server entries"
+msgstr "Das angegebene Netzwerk besitzt keine Servereinträge"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:239
+msgid ""
+"The server specification seems to be in the net:<string> but the network "
+"couln't be found in the database"
+msgstr ""
+"Die Serverspezifikation scheint im \"net:<string>\"-Fomat zu sein, jedoch "
+"konnte das Netzwerk nicht in der Datenbank gefunden werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:261
+msgid ""
+"The server specification seems to be in the id:<string> form but the "
+"identifier coulnd't be found in the database"
+msgstr ""
+"Die Serverspezifikation scheint im \"id:<string>\"-Format zu sein, jedoch "
+"konnte die ID nicht in der Datenbank gefunden werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:71
+msgid "Aborted"
+msgstr "Abgebrochen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:96
+msgid "No request"
+msgstr "Keine Anfrage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:141
+msgid "No filename specified for the \"StoreToFile\" processing type"
+msgstr ""
+"Es wurde kein Dateiname für den \"Speichern in Datei\"-Prozesstyp angegeben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:160
+msgid "Invalid URL: Missing hostname"
+msgstr "Ungültige URL: Der Hostname fehlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:167
+msgid "Unsupported protocol %1"
+msgstr "Das Protokoll %1 wird nicht unterstützt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:189
+msgid "Unable to start the DNS lookup"
+msgstr "Die DNS-Anfrage kann nicht gestartet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:194
+#, c-format
+msgid "Looking up host %s"
+msgstr "Der Host %s wird aufgelöst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:210
+msgid "Host %s resolved to %Q"
+msgstr "Der Host %s löste nach %Q auf."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:246
+msgid "Unable to start the request slave thread"
+msgstr "Der angeforderte Arbeits-Thread kann nicht gestartet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:251
+msgid "Contacting host %Q on port %u"
+msgstr "Der Host %Q wird am Port %u kontaktiert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:271
+msgid "Connection established, sending request"
+msgstr "Die Verbindung wurde hergestellt, die Anfrage wird gesendet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:322
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:51
+msgid "Success"
+msgstr "Erfolg!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:429
+msgid "Failed to rename the existing file, please rename manually and retry"
+msgstr ""
+"Das Umbenennen der existierenden Datei ist fehlgeschlagen. Bitte nennen Sie "
+"die Datei manuell um und versuchen Sie es erneut."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:447
+msgid "Can't open file \"%Q\" for writing"
+msgstr "Die Datei \"%Q\" kann nicht schreibend geöffnet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:497
+#, c-format
+msgid "Invalid HTTP response: %s"
+msgstr "Ungültige HTTP-Antwort: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:503
+#, c-format
+msgid "Received HTTP response: %s"
+msgstr "Empfing die HTTP-Antwort: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:628
+msgid "Stream exceeding maximum length"
+msgstr "Der Datenstrom überschreitet die maximale Länge"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:661
+msgid "Header too long: exceeded 4096 bytes"
+msgstr "Der Header ist zu lang: Er überschreitete 4096 Byte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:710
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:852
+msgid "Stream exceeded expected length"
+msgstr "Der Datenstrom überschreitete die erwartete Länge"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:798
+msgid "Protocol error: invalid chunk size"
+msgstr "Protokoll-Fehler: Die Stückchengröße ist ungültig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:818
+msgid "Chunk header too long: exceeded 4096 bytes"
+msgstr "Der Stückchen-Header ist zu lang: Er überschreitete 4096 Byte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:987
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1193
+msgid "Operation timed out"
+msgstr "Der Vorgang ist ausgetimet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1003
+msgid "Unexpected SSL error"
+msgstr "Es ist ein unerwarteter SSL-Fehler aufgetreten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1016
+msgid "Failed to enter non blocking mode"
+msgstr "Der Wechsel in den nicht-blockierenden Modus ist fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1021
+msgid "Invalid target address"
+msgstr "Die Zieladresse ist ungültig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1056
+msgid "Failed to initialize the SSL context"
+msgstr "Der SSL-Kontext konnte nicht initialisiert werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1058
+msgid "Failed to initialize the SSL connection"
+msgstr "Die SSL-Verbindung konnte nicht initialisiert werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1075
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:99
+msgid "Remote end has closed the connection"
+msgstr "Die entfernte Seite hat die Verbindung beendet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1087
+msgid "Unrecoverable SSL error during handshake"
+msgstr ""
+"Es ist ein nicht behebbarer Fehler während des SSL-Handshakes aufgetreten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1272
+msgid "Operation timed out (while selecting for read)"
+msgstr "Der Vergang ist ausgetimet (während des Auswählens zum Lesen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1382
+msgid "This KVIrc executable has no SSL support"
+msgstr "Diese Version von KVIrc hat keine SSL-Unterstützung einkompiliert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1147
+msgid "Back"
+msgstr "Zurück"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:268
+msgid "Next"
+msgstr "&Nächster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:168
+msgid "%1 bytes"
+msgstr "%1 Byte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:172
+msgid "%1 KB"
+msgstr "%1 KB"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:176
+msgid "%1 MB"
+msgstr "%1 MB"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:181
+msgid "%1 GB"
+msgstr "%1 GB"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:185
+msgid "%1 TB"
+msgstr "%1 TB"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:620
+msgid "Internal error"
+msgstr "Interner Fehler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:54
+msgid "Unknown command"
+msgstr "Unbekanntes Kommando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:55
+msgid "Missing closing brace"
+msgstr "Schließende geschweifte Klammer fehlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:56
+msgid "Unexpected end of command in string"
+msgstr "Der Befehl in der Zeichenkette endete unerwartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:57
+msgid "Unexpected end of command in dictionary key"
+msgstr "Der Befehl im Wörterbuchschlüssel endete unerwartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:58
+msgid "Switch dash without switch letter"
+msgstr ""
+"Sie haben einen Optionsstrich, jedoch keinen Optionsbuchstaben angegeben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:59
+msgid "Unknown function"
+msgstr "Unbekannte Funktion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:60
+msgid "Unexpected end of command in parenthesis"
+msgstr "Der in Klammern stehende Befehl endete unerwartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:61
+msgid "Unexpected end of command in function parameters"
+msgstr "Der in den Funktionsparametern angegebene Befehl endete unerwartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:62
+msgid "Missing variable name"
+msgstr "Sie haben keinen Variablennamen angegeben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:63
+msgid "Variable or identifier expected"
+msgstr "Es wurde entweder eine Variable, oder ein Bezeichner erwartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:64
+msgid "Left operand is not a number"
+msgstr "Der linke Operand ist keine Zahl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:65
+msgid "Multiple operations not supported for numeric operators"
+msgstr "Numerische Operatoren unterstützen nicht mehrere Operationen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:67
+msgid "Modulo by zero"
+msgstr "Modulo von Null"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:68
+msgid "Right operand is not a number"
+msgstr "Der rechte Operand ist keine Zahl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:69
+msgid "Unterminated expression (missing ')' ?)"
+msgstr "Der Ausdruck wurde nicht abgeschlossen (fehlt eine ')'?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:70
+msgid "Unterminated subexpression (Parenthesis mismatch)"
+msgstr "Der Unterausdruck wurde nicht abgeschlossen (Klammerfehler)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:71
+msgid "Unexpected character"
+msgstr "Es wurde ein unerwartetes Zeichen gefunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:73
+msgid "No host to resolve"
+msgstr "Es wurde keine Hostadresse zum Auflösen angegeben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:74
+msgid "(DNS Internal) Unsupported address family"
+msgstr "(DNS-intern) Nicht unterstützte Andressfamilie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:75
+msgid "Valid name but the host has no IP address"
+msgstr ""
+"Der Hostname ist zwar gültig, doch der Host hat keine zugewiesene IP-Adresse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:76
+msgid "Unrecoverable nameserver error (crashed ?)"
+msgstr ""
+"Es ist ein nicht korrigierbarer Nameserver-Fehler aufgetreten (Ist der "
+"Namserver eventuell abgestürzt?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:77
+msgid "Dns temporaneous fault (try again)"
+msgstr ""
+"Es liegt eine temporäre DNS-Fehlfunktion vor (versuchen Sie es doch bitte "
+"erneut)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:78
+msgid "(DNS Internal) Bad flags"
+msgstr "(DNS-intern) Falsche Flags"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:79
+msgid "(DNS Internal) Out of memory"
+msgstr "(DNS-intern) Der Speicher ust voll"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:80
+msgid "(DNS Internal) Service not supported"
+msgstr "(DNS-intern) Der Dienst wird nicht unterstützt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:81
+msgid "Unknown node (host not found)"
+msgstr "Der Knoten ist unbekannt (der Host wurde nicht gefunden)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:82
+msgid "(DNS Internal) Unsupported socket type"
+msgstr "(DNS-intern) Der Sockettyp wird nicht unterstützt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:83
+msgid "Dns query failed"
+msgstr "Die DNS-Anfrage ist fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:84
+msgid "This KVIrc executable has no IPV6 support"
+msgstr "Diese Version von KVIrc hat keine IPv6-Unterstützung einkompiliert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:85
+msgid "Host not found"
+msgstr "Der Host wurde nicht gefunden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:86
+msgid "(DNS Internal) IPC failure (slave data corrupted)"
+msgstr "(DNS intern) IPC-Fehlfunktion (die Arbeitsdaten sind fehlerhaft)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:88
+msgid "Invalid IP address"
+msgstr "Die IP-Adresse ist ungültig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:90
+msgid "Failed to put the socket in non blocking mode"
+msgstr ""
+"Das Setzen des Sockets in den nicht-blockierenden Modus ist fehlgeschlagen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:91
+msgid "Bad file descriptor"
+msgstr "Der Dateideskriptor ist fehlerhaft."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:92
+msgid "Out of address space"
+msgstr "Es ist kein Speicher mehr verfügbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:93
+msgid "Connection refused"
+msgstr "Die Verbindung wurde abgelehnt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:94
+msgid "Kernel networking panic"
+msgstr "Kernel-Netzwerk-Panik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:95
+msgid "Connection timed out"
+msgstr "Die Verbindung wurde aufgrund einer Zeitüberschreitung geschlossen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:96
+msgid "Network is unreachable"
+msgstr "Das Netzwerk ist nicht erreichbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:97
+msgid "Broken pipe"
+msgstr "Netzwerkfehler (\"Kaputte Leitung\"/Broken pipe)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:98
+msgid "Invalid proxy address"
+msgstr "Die Proxyadresse ist ungültig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:100
+msgid "Invalid irc context id"
+msgstr "Die IRC-Kontext-ID ist ungültig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:101
+msgid "Error in loading module"
+msgstr "Fehler beim Laden des Moduls"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:102
+msgid "No such module command"
+msgstr "Es gibt kein solches Modulkommando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:103
+msgid "No such module function"
+msgstr "Es gibt keine solche Modulfunktion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:104
+msgid "Left operand is not a dictionary reference"
+msgstr "Der linke Operand ist keine Wörterbuchreferenz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:105
+msgid "Right operand is not a dictionary reference"
+msgstr "Der rechte Operand ist keine Wörterbuchreferenz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:106
+msgid "Missing object class name"
+msgstr "Der Objektklassenname fehlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:107
+msgid "No such object class"
+msgstr "Es gibt keine solche Objektklasse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:108
+msgid "No such object"
+msgstr "Es gibt kein solches Objekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:109
+msgid "No such object function"
+msgstr "Es gibt keine solche Objektfunktion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:110
+msgid "Invalid left operand"
+msgstr "Der linke Operand ist ungültig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:111
+msgid "Not enough parameters"
+msgstr "Es wurden nicht genügend Parameter angegeben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:112
+msgid "Integer parameter expected"
+msgstr "Es wurde ein Ganzzahl-Parameter erwartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:113
+msgid "Invalid parameter"
+msgstr "Der Parameter ist ungültig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:114
+msgid "No such file"
+msgstr "Die Datei wurde nicht gefunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:115
+msgid "Open parenthesis expected"
+msgstr "Es wurde eine runde öffnende Klammer erwartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:116
+msgid "Open brace expected"
+msgstr "Es wurde eine geschweifte öffnende Klammer erwartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:117
+msgid "Can't kill a builtin class"
+msgstr "Ein eingebaute Klasse kann nicht getötet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:118
+msgid "The SOCKSV4 protocol lacks IpV6 support"
+msgstr "Das SOCKSV4-Protokoll hat keine IPv6-Unterstützung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:119
+msgid "Unrecognized proxy reply"
+msgstr "Es wurde eine unbekannte Proxyantwort erhalten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:120
+msgid "Proxy response: auth failed: access denied"
+msgstr ""
+"Proxy-Antwort: Die Authentifizieung ist fehlgeschlagen: Der Zugriff wurde "
+"verweigert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:121
+msgid "Proxy response: No acceptable auth method: request rejected"
+msgstr ""
+"Proxy-Antwort: Es gibt keine akzeptable Authentifizierungsmethode: Die "
+"Anfrage wurde zurückgewiesen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:122
+msgid "Proxy response: request failed"
+msgstr "Proxy-Antwort: Die Anfrage ist fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:123
+msgid "Proxy response: ident failed"
+msgstr "Proxy-Antwort: Die Identifizierung ist fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:124
+msgid "Proxy response: ident not matching"
+msgstr "Proxy-Antwort: Die Ident passt nicht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:125
+msgid "Proxy response: general SOCKS failure"
+msgstr "Proxy-Antwort: Es ist eine generelle SOCKS-Fehlfunktion aufgetreten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:126
+msgid "Proxy response: connection not allowed"
+msgstr "Proxy-Antwort: Die Verbindung ist nicht erlaubt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:127
+msgid "Proxy response: network unreachable"
+msgstr "Proxy-Antwort: Das Netzwerk ist nicht erreichbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:128
+msgid "Proxy response: host unreachable"
+msgstr "Proxy-Antwort: Der Host ist nicht erreichbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:129
+msgid "Proxy response: connection refused"
+msgstr "Proxy-Antwort: Die Verbindung wurde abgelehnt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:130
+msgid "Proxy response: TTL expired"
+msgstr "Proxy-Antwort: Die TTL ist abgelaufen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:131
+msgid "Proxy response: command not supported"
+msgstr "Proxy-Antwort: Das Kommando wird nicht unterstützt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:132
+msgid "Proxy response: address type not supported"
+msgstr "Proxy-Antwort: Der Adresstyp wird nicht unterstützt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:133
+msgid "Proxy response: invalid address"
+msgstr "Proxy-Antwort: Die Adresse ist Adresse ungültig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:134
+msgid "Invalid port number"
+msgstr "Der Port ist ungültig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:135
+msgid "Socket not connected"
+msgstr "Der Socket ist nicht verbunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:136
+msgid "Insufficient resources to complete the operation"
+msgstr ""
+"Es sind nicht genügend Ressourcen vorhanden, um die Operation abzuschließen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:137
+msgid "Can't setup a listening socket : bind failed"
+msgstr ""
+"Der hörende Socket kann nicht erstellt werden: Das Binden ist fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:138
+msgid "Can't resolve the localhost name"
+msgstr "localhost kann nicht aufgelöst werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:139
+msgid "Unsupported image format"
+msgstr "Das Bildformat wird nicht unterstützt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:140
+msgid "Can't open file for appending"
+msgstr "Die Datei kann nicht zum Datenanhängen geöffnet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:542
+msgid "Can't open file for writing"
+msgstr "Die Datei kann nicht zum Schreiben geöffnet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:142
+msgid "File I/O error"
+msgstr "Es ist ein Datei-Eingabe-/Ausgabe-Fehler aufgetreten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:143
+msgid "Acknowledge error"
+msgstr "Es ist ein Bestätigungsfehler aufgetreten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:982
+msgid "Can't open file for reading"
+msgstr "Die Datei kann nicht zum Lesen geöffnet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:145
+msgid "Can't send a zero-size file"
+msgstr "0-Byte-Dateien können nicht gesendet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:146
+msgid "Missing popup name"
+msgstr "Der Aufklappsmenü-Name fehlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:147
+msgid "'item', 'popup', 'label' or 'separator' keyword expected"
+msgstr ""
+"Es wurde ein 'item'-, 'popup'-, 'label'- oder 'separator'-Schlüsselwort "
+"erwartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:148
+msgid "Self modification not allowed"
+msgstr "Eine Selbstmodifikation ist nicht erlaubt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:149
+msgid "UNUSED"
+msgstr "NICHT BENUTZT"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:150
+msgid "Feature not available"
+msgstr "Diese Fähigkeit ist nicht verfügbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:151
+msgid "Unexpected characters in array index"
+msgstr "Es wurden unterwartete Zeichen im Arrayindex gefunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:152
+msgid "Unexpected end in expression"
+msgstr "Der Ausdruck endete unerwartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:153
+msgid "Unexpected end in array index"
+msgstr "Der Arrayindex endete unerwartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:154
+msgid "Connection thru HTTP proxy failed"
+msgstr "Die Verbindung über den HTTP-Proxy ist fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:155
+msgid "Case , match , regexp , default or break keyword expected"
+msgstr ""
+"Es wurde ein 'case'-, 'match'-, 'regexp', 'default'- oder 'break'-"
+"Schlüsselwort erwartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:156
+msgid "Access denied"
+msgstr "Der Zugriff wurde verweigert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:157
+msgid "Address already in use"
+msgstr "Die Adresse ist bereits in Benutzung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:158
+msgid "Can't assign the requested address"
+msgstr "Die angeforderte Adresse kann nicht zuwiesen werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:159
+msgid "Connection reset by peer"
+msgstr "Die Verbindung wurde vom Kommunikationspartner geschlossen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:160
+msgid "Host unreachable (no route to host)"
+msgstr "Der Host ist nicht erreichbar (es gibt keine Route zum Host)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:161
+msgid "Variable expected"
+msgstr "Es wurde eine Variable erwartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:162
+msgid "Invalid array index: positive integer expected"
+msgstr "Der Arrayindex ist ungültig: Es wurde eine positive Ganzzahl erwartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:163
+msgid "listen() call failed"
+msgstr "Der listen()-Aufruf ist fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:164
+msgid "This executable has been compiled without SSL support"
+msgstr "Diese Version von KVIrc wurde ohne SSL-Unterstützung kompiliert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:165
+msgid "Secure Socket Layer error"
+msgstr "Es ist ein Secure-Socket-Layer-Fehler aufgetreten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:166
+msgid "Slash (/) character expected"
+msgstr "Es wurde ein Schrägstrich (/) erwartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:167
+msgid "Unknown string manipulation operation"
+msgstr "Die Zeichenkettenmanipulationsoperation ist nicht bekannt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:168
+msgid "Operation aborted"
+msgstr "Die Operation wurden abgebrochen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:169
+msgid "Unexpected token"
+msgstr "Der Token wurde nicht erwartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:170
+msgid "Scope object already defined (unexpected @)"
+msgstr ""
+"Der Objektgültigkeitsbereich wurde bereits definiert (unerwartetes @ "
+"gefunden)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:171
+msgid "There is no $this pointer in this scope (unexpected @)"
+msgstr ""
+"Es gibt keinen $this-Zeiger in diesem Gültigkeitsbereich (unerwartetes @ "
+"gefunden)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:140
+msgid "Operation cancelled"
+msgstr "Die Operation wurde abgebrochen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:170
+msgid "File write error"
+msgstr "Es ist ein Dateischreibfehler aufgetreten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:176
+msgid "File read error"
+msgstr "Es ist ein Dateilesefehler aufgetreten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:324
+msgid "Packaging file %Q"
+msgstr "Verpackungsdatei %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:779
+msgid "Failed to open a source file for reading"
+msgstr "Die Quelldatei kann nicht zum Lesen geöffnet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:817
+msgid "Compression library initialization error"
+msgstr "Die Initialisierung der Komprimierungsbibliothek ist fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:394
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:828
+msgid "Compression library error"
+msgstr "Es ist ein Komprimierungsbibliothekenfehler aufgetreten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:465
+msgid "Compression library internal error"
+msgstr "Es ist ein interner Fehler in der Komprimierungsbibliothek aufgetreten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:485
+msgid "Error while compressing a file stream"
+msgstr "Es ist ein Fehler während des Datenstromkomprimierens aufgetreten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:526
+msgid "Creating package..."
+msgstr "Das Paket wird erstellt..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:527
+msgid "Writing package header"
+msgstr "Die Paket-Kopfinformationen werden geschrieben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:571
+msgid "Writing informational fields"
+msgstr "Informative Felder werden geschrieben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:597
+msgid "Writing package data"
+msgstr "Der Paketinhalt wird geschrieben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:659
+msgid "The file specified is not a valid KVIrc package"
+msgstr "Die angegebene Datei ist kein gültiges KVIrc-Paket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:668
+msgid ""
+"The package has an invalid version number, it might have been created by a "
+"newer KVIrc"
+msgstr ""
+"Das Paket hat eine ungültige Versionsnummer, möglicherweise wurde es von "
+"einer neueren KVIrc-Version erstellt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:714
+msgid "Invalid info field: the package is probably corrupt"
+msgstr ""
+"Das Informationsfeld des Paketes ist ungültig: Vermutlich ist das Paket "
+"beschädigt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:745
+msgid ""
+"The package contains compressed data but this executable does not support "
+"compression"
+msgstr ""
+"Das Paket enthält komprimierte Daten, aber dieses KVIrc besitzt keine "
+"Kompressionsunterstützung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:771
+msgid "Failed to create the target directory"
+msgstr "Das Zielverzeichnis konnte nicht erstellt werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:784
+msgid "Unpacking file %Q"
+msgstr "Entpacke die Datei %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:916
+msgid "Error in compressed file stream"
+msgstr "Es liegt ein Fehler im komprimierten Datenstrom vor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:990
+msgid "Reading package..."
+msgstr "Das Paket wird gelesen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:991
+msgid "Reading package header"
+msgstr "Die Paket-Kopfinformationen werden gelesen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:998
+msgid "Reading package data"
+msgstr "Die Paketdaten werden gelesen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:1017
+msgid "Invalid data field: the package is probably corrupt"
+msgstr ""
+"Es wurde ein ungültiges Datenfeld gefunden: Vermutlich ist das Paket "
+"beschädigt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1127
+msgid "Select color"
+msgstr "Farbe(n) auswählen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1128
+msgid "&Basic colors"
+msgstr "&Basisfarben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1129
+msgid "&Custom colors"
+msgstr "Eigene Far&ben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1130
+msgid "&Red"
+msgstr "&Rot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1131
+msgid "&Green"
+msgstr "&Grün"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1132
+msgid "Bl&ue"
+msgstr "Bla&u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1133
+msgid "&Define Custom Colors >>"
+msgstr "Eigene Farben &definieren >>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1134
+msgid "&Add to Custom Colors"
+msgstr "Zu den benutzerdefinierten Farben &hinzufügen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1136
+msgid "Select Font"
+msgstr "Schriftart auswählen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1137
+msgid "&Font"
+msgstr "Schri&ftart"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1138
+msgid "Font st&yle"
+msgstr "Schrifts&til:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1139
+msgid "&Size"
+msgstr "&Größe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1140
+msgid "Sample"
+msgstr "Beispiel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1141
+msgid "Effects"
+msgstr "Effekte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1142
+msgid "Stri&keout"
+msgstr "Durch&gestrichen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1143
+msgid "&Underline"
+msgstr "&Unterstrichen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1144
+msgid "Scr&ipt"
+msgstr "Skr&ipt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1146
+msgid "Parent Directory"
+msgstr "Übergeordnetes Verzeichnis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1148
+msgid "Forward"
+msgstr "Vorwärts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1149
+msgid "Reload"
+msgstr "Erneut laden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1150
+msgid "New Directory"
+msgstr "Neues Verzeichnis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1151
+msgid "Bookmarks"
+msgstr "Lesezeichen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1152
+msgid "Add Bookmark"
+msgstr "Lesezeichen hinzufügen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1153
+msgid "&Edit Bookmarks"
+msgstr "Lesezeichen be&arbeiten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1154
+msgid "New Bookmark Folder..."
+msgstr "Neues Lesezeichenverzeichnis..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1156
+msgid "Sorting"
+msgstr "Sortieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1157
+msgid "By Name"
+msgstr "Nach Name"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1158
+msgid "By Date"
+msgstr "Nach Datum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1159
+msgid "By Size"
+msgstr "Nach Größe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1160
+msgid "Reverse"
+msgstr "Umkehren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1161
+msgid "Directories First"
+msgstr "Verzeichnisse zuerst anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1162
+msgid "Case Insensitive"
+msgstr "Groß-/Kleinschreibung nicht beachten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1163
+msgid "Short View"
+msgstr "Kurzdarstellung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1164
+msgid "Detailed View"
+msgstr "Ausführliche Ansicht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1165
+msgid "Show Hidden Files"
+msgstr "Versteckte Dateien anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1166
+msgid "Show Quick Access Navigation Panel"
+msgstr "Schnellzugriffsfeld anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1167
+msgid "Show Preview"
+msgstr "Vorschau anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1168
+msgid "Separate Directories"
+msgstr "Verzeichnisse gesondert anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1169
+msgid "Often used directories"
+msgstr "Häufig benutzte Verzeichnisse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1170
+msgid "Desktop"
+msgstr "Arbeitsfläche"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1171
+msgid "Home Directory"
+msgstr "Persönliches Verzeichnis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1172
+msgid "Floppy"
+msgstr "Diskette"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1173
+msgid "Temporary Files"
+msgstr "Temporäre Dateien"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1174
+msgid "Network"
+msgstr "Netzwerk"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1175
+msgid "New Directory..."
+msgstr "Neues Verzeichnis..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1176
+msgid "Delete"
+msgstr "Löschen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1177
+msgid "Thumbnail Previews"
+msgstr "Miniaturbildvorschau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1178
+msgid "Large Icons"
+msgstr "Große Symbole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1179
+msgid "Small Icons"
+msgstr "Kleine Symbole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1180
+msgid "Properties..."
+msgstr "Eigenschaften..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1181
+msgid "&Automatic Preview"
+msgstr "&Automatische Vorschau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1182
+msgid "&Preview"
+msgstr "&Vorschau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1183
+msgid "&Location:"
+msgstr "&Ort:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1184
+msgid "&Filter:"
+msgstr "&Filter:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1185
+msgid "All Files"
+msgstr "Alle Dateien"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:104
+msgid "- d -- h -- m -- s"
+msgstr "- d -- h -- m -- s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:111
+#, c-format
+msgid "%u h %u m %u s"
+msgstr "%u h %u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:113
+#, c-format
+msgid "%u h %u%u m %u%u s"
+msgstr "%u h %u%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:118
+#, c-format
+msgid "%u m %u s"
+msgstr "%u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:120
+#, c-format
+msgid "%u m %u%u s"
+msgstr "%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:122
+#, c-format
+msgid "%u s"
+msgstr "%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:127
+#, c-format
+msgid "%u d %u h %u m %u s"
+msgstr "%u d %u h %u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:129
+#, c-format
+msgid "%u d %u%u h %u%u m %u%u s"
+msgstr "%u d %u%u h %u%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+msgid "Usage"
+msgstr "Benutzung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+msgid "message"
+msgstr "Nachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:99
+msgid "-m: send a message instead of a notice"
+msgstr "-m: Sende eine Nachricht anstatt einer Notiz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:100
+msgid "-w: send notice to all channel owners"
+msgstr "-w: Mitteilung (Notice) an alle Kanaleigentümer senden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:101
+msgid "-a: send notice to all channel admins"
+msgstr "-a: Mitteilung (Notice) an alle Kanaladministratoren senden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:102
+msgid "-o: send notice to all channel ops"
+msgstr "-o: Mitteilung (Notice) an alle Kanaloperatoren senden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:103
+msgid "-h: send notice to all channel halfops"
+msgstr "-h: Mitteilung (Notice) an alle Kanalhalboperatoren senden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:104
+msgid "-v: send notice to all channel voices"
+msgstr "-v: Mitteilung (Notice) an alle Kanalnutzer mit Stimmstatus senden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:105
+msgid "-q: quiet mode"
+msgstr "-q: stiller Modus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:138
+msgid "Sending wallop to"
+msgstr "Sende Wallop zu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:314
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:410
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:493
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:535
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:593
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:653
+msgid "Usage:"
+msgstr "Benutzung:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:223
+msgid "reason"
+msgstr "Grund"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:272
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:416
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:440
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:599
+msgid "This is not a channel window"
+msgstr "Dies ist kein Kanalfenster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:581
+msgid "Unsupported type: $0"
+msgstr "Nicht unterstützter Typ: $0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:604
+msgid "Channel Owner"
+msgstr "Kanaleigentümer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:606
+msgid "Channel Administrator"
+msgstr "Kanaladministrator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:608
+msgid "Channel Operator"
+msgstr "Kanaloperator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:610
+msgid "Half Operator"
+msgstr "Halb-Operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:612
+msgid "Voice"
+msgstr "Stimmstatus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:614
+msgid "User Operator"
+msgstr "Benutzer-Operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:616
+msgid "Normal User"
+msgstr "Normaler Benutzer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:641
+msgid "You must use DNS in an IRC context"
+msgstr "Sie müssen DNS in einem IRC-Kontext benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:647
+msgid "You must be connected to a server"
+msgstr "Sie müssen mit einen Server verbunden sein"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:664
+msgid "No such user: $0"
+msgstr "Kein solcher Benutzer: $0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:33
+msgid "The default script has been successfully installed."
+msgstr "Das Skript mit den Voreinstellungen wurde erfolgreich installiert."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:34
+msgid "To connect to a server, type /server <server name>"
+msgstr ""
+"Um zu einem Server zu verbinden geben Sie bitte /server <Servername> ein"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:36
+msgid "Happy ircing :)"
+msgstr "Viel Spass im IRC :)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:15
+msgid "Options"
+msgstr "Optionen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:40
+msgid "Window operations"
+msgstr "Fensteroperationen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMENAME@"
+msgstr "@THEMENAME@"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMEDESCRIPTION@"
+msgstr "@THEMEDESCRIPTION@"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:18
+msgid "Stop Highlighting (Local)"
+msgstr "Hervorhebung deaktivieren (Lokal)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:23
+msgid "Start Highlighting (Local)"
+msgstr "Hervorhebung aktivieren (Lokal)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:28
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:61
+msgid "Always Highlight"
+msgstr "Immer hervorheben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:30
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:55
+msgid "Highlight as"
+msgstr "Hervorheben als"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:66
+msgid "Stop Highlighting"
+msgstr "Hervorhebung stoppen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:82
+msgid "is being ignored"
+msgstr "wird ignoriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:87
+msgid "is not being ignored"
+msgstr "wird nicht ignoriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:93
+msgid "Enable Ignore"
+msgstr "Ignorieren anschalten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:98
+msgid "Ignore as..."
+msgstr "Ignorieren als..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:240
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:282
+msgid "Ignore as"
+msgstr "Ignorieren als"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:290
+msgid "Unignore"
+msgstr "nicht mehr Ignorieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:308
+msgid "is registered as"
+msgstr "ist registriert als"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:311
+msgid "is in the notify list"
+msgstr "ist in der Benachrichtigungsliste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:314
+msgid "has a default avatar"
+msgstr "hat einen Standard-Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:317
+msgid "is not registered"
+msgstr "ist nicht registriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:323
+msgid "Register"
+msgstr "Registrieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:328
+msgid "Quick Registration"
+msgstr "Schnellregistrierung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:330
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:355
+msgid "Register as"
+msgstr "Registrieren als"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:361
+msgid "Edit Registration"
+msgstr "Registrierung bearbeiten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:366
+msgid "Unregister"
+msgstr "Registrierung aufheben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:373
+msgid "Add to Notify"
+msgstr "Zur Benachrichtigungsliste hinzufügen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:378
+msgid "Remove from Notify"
+msgstr "Von der Benachrichtigungsliste entfernen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:385
+msgid "Choose"
+msgstr "Auswählen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:387
+msgid "Choose Avatar Image File"
+msgstr "Avatar-Bilddatei auswählen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:396
+msgid "Set as Default"
+msgstr "Als Voreinstellungen verwenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:401
+msgid "Clear Default"
+msgstr "Voreinstellung löschen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:412
+msgid "Copy To Clipboard"
+msgstr "In Zwischenablage kopieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:433
+msgid "Ban"
+msgstr "Bannen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1037
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1084
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1224
+msgid "Multiple Users"
+msgstr "Mehrere Benutzer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:577
+msgid "&Ban"
+msgstr "&Bannen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1089
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1229
+msgid "idle time"
+msgstr "Leerlaufzeit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:758
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1236
+msgid "&Information"
+msgstr "&Informationen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1115
+msgid "DNS for"
+msgstr "DNS für"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:499
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1120
+msgid "Mask for"
+msgstr "Maske für"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:505
+msgid "&Control"
+msgstr "&Kontrollieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:509
+msgid "O&wner"
+msgstr "&Eigentümerstatus geben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:514
+msgid "&Deowner"
+msgstr "E&igentümerstatus entziehen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:519
+msgid "&Administrator"
+msgstr "&Administratorstatus geben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:524
+msgid "&Deadministrator"
+msgstr "A&dministratorstatus entziehen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:529
+msgid "&Op"
+msgstr "&Operatorstatus geben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:534
+msgid "&Deop"
+msgstr "O&peratorstatus entziehen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:539
+msgid "&Halfop"
+msgstr "&Halb-Operatorstatus geben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:544
+msgid "&Dehalfop"
+msgstr "H&alb-Operatorstatus entziehen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:549
+msgid "&Voice"
+msgstr "&Stimmstatus geben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:554
+msgid "D&evoice"
+msgstr "Stimmstatus en&tziehen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:561
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "&Kick"
+msgstr "&Kicken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+msgid "K&ick"
+msgstr "K&icken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "With..."
+msgstr "mit..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Kick Reason"
+msgstr "Kickgrund"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Enter a kick reason"
+msgstr "Grund für den Kick eingeben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "Kick/Ban"
+msgstr "Kickenbannen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Kick/Ban Reason"
+msgstr "Kick-/Banngrund"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Enter a kick/ban reason"
+msgstr "Grund für den Kickbann eingeben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "&Kick/Ban"
+msgstr "&Kickenbannen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:604
+msgid "Configure ban mask..."
+msgstr "Bannmaske konfigurieren..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:612
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1263
+msgid "&Query"
+msgstr "An&frage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:625
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1136
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1276
+msgid "&Registration"
+msgstr "&Registrierung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1278
+msgid "&Highlight"
+msgstr "&Hervorhebung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:629
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1280
+msgid "Ig&nore"
+msgstr "Ig&norieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:726
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1050
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1138
+msgid "Notify Avatar"
+msgstr "Avatar veröffentlichen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:705
+msgid "&Part"
+msgstr "&Verlassen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:664
+msgid "Copy Channel Address"
+msgstr "Kanaladresse kopieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:749
+msgid "Channels"
+msgstr "Kanäle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:693
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:753
+msgid "&Join Channels..."
+msgstr "Kanäle &betreten..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:700
+msgid "&Hop"
+msgstr "&Hopp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:733
+msgid "Copy Channel URL to Clipboard"
+msgstr "Kanal-URL in die Zwischenablage kopieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:782
+msgid "l (Connections)"
+msgstr "I (Verbindungen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:787
+msgid "m (Command Usage)"
+msgstr "m (Kommandobenutzung)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:792
+msgid "o (Operators)"
+msgstr "o (Operatoren)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:797
+msgid "t (Connection stats ?)"
+msgstr "t (Verbindungsstatistiken?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:802
+msgid "u (Uptime)"
+msgstr "u (Betriebszeit)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:807
+msgid "y (y-Lines)"
+msgstr "y (y-Zeilen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:812
+msgid "z (Debug Stats?)"
+msgstr "z (Fehlerbehebungsstatistiken?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:909
+msgid "Chat with"
+msgstr "Chatten mit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:914
+msgid "Reverse Chat with"
+msgstr "Umgekehrter Chat mit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:919
+msgid "Secure Chat with"
+msgstr "Sicherer Chat mit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:926
+msgid "Send to"
+msgstr "Senden an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:931
+msgid "Secure send to"
+msgstr "Sicheres Senden an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:936
+msgid "Reverse Send to"
+msgstr "Umgekehrtes Senden an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:941
+msgid "Secure Reverse Send to"
+msgstr "Sicheres umgekehrtes Senden an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:948
+msgid "TDCC Send to"
+msgstr "TDCC-Senden an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:953
+msgid "TDCC Reverse Send to"
+msgstr "Umgekehrtes TDCC-Senden an"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:960
+msgid "Voice Chat"
+msgstr "Voice-Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1134
+msgid "&Ignore"
+msgstr "&Ignorieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1165
+msgid "Logging to"
+msgstr "Loggen nach"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1167
+msgid "Flush Log File"
+msgstr "Logdatei sofort schreiben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1174
+msgid "Stop Logging"
+msgstr "Loggen stoppen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1179
+msgid "Not Logging"
+msgstr "Es wird nicht geloggt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+msgid "Log To Default File"
+msgstr "In die voreingestellte Datei loggen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+msgid "Include Existing Buffer"
+msgstr "mit existierendem Datenpuffer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+msgid "Log To..."
+msgstr "Loggen nach..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1201
+msgid "Choose Log Filename"
+msgstr "Log-Dateiname auswählen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1282
+msgid "Notify avatar"
+msgstr "Avatar veröffentlichen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:50
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$copyfiles must be a "
+"source directory"
+msgstr ""
+"[Installierer] Das erste Argument zu \\%installer->\\$copyfiles muss ein ein "
+"Quellverzeichnis sein."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:56
+#, c-format
+msgid ""
+"[Installer] The second argument to \\%installer->\\$copyfiles must be a file "
+"name or file regexp"
+msgstr ""
+"[Installierer] Das zweite Argument zu \\%installer->\\$copyfiles muss ein "
+"Dateiname, oder ein regulärer Ausdruck sein."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:62
+#, c-format
+msgid ""
+"[Installer] The third argument to \\%installer->\\$copyfiles must be a "
+"destination directory"
+msgstr ""
+"[Installierer] Das dritte Argument zu \\%installer->\\$copyfiles muss ein "
+"Zielverzeichnis sein."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:94
+msgid "[Installer] Failed to create directory"
+msgstr "[Installierer] Das Verzeichnis konnte nicht erstellt werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:104
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$includefiles must be a "
+"source directory"
+msgstr ""
+"[Installierer] Das erste Argument zu \\%installer->\\$includefiles muss ein "
+"Quellverzeichnis sein."
+
+#~ msgid "Lag is"
+#~ msgstr "Die Latenz beträgt "
+
+#~ msgid "milliseconds"
+#~ msgstr "Millisekunden"
+
+#~ msgid "%c\r!s\r%s\r%c: %Q"
+#~ msgstr "%c\r!s\r%s\r%c: %Q"
+
+#~ msgid "Restore from backup archive"
+#~ msgstr "Aus einem Backup-Archiv wiederherstellen"
+
+#~ msgid "Basic Properties"
+#~ msgstr "Grundlegende Eigenschaften"
+
+#~ msgid "Other:"
+#~ msgstr "Anderes:"
+
+#~ msgid "Now you should specify an IRC server, to be connected to it"
+#~ msgstr ""
+#~ "Sie sollten nun einen IRC-Server angeben, zu dem Sie sich verbinden "
+#~ "möchten."
+
+#~ msgid "Choose a server to connect"
+#~ msgstr "Wählen Sie den Server aus, zu dem Sie sich verbinden möchten"
+
+#~ msgid "Choose from built-in server list"
+#~ msgstr "Wählen Sie einen Server aus der eingebauten Serverliste aus"
+
+#~ msgid "Specify server manually"
+#~ msgstr "Geben Sie den Server manuell an"
+
+#~ msgid "Server:"
+#~ msgstr "Server:"
+
+#~ msgid "Port:"
+#~ msgstr "Port:"
+
+#~ msgid "Open irc:// or irc6:// URL"
+#~ msgstr "irc://- oder irc6://-URL öffnen"
+
+#~ msgid "URL:"
+#~ msgstr "URL:"
+
+#~ msgid "Use server config"
+#~ msgstr "Servereinstellung verwenden"
+
+#~ msgid "Config file:"
+#~ msgstr "Konfigurationsdatei:"
+
+#~ msgid ""
+#~ "Setup found existing mIRC installation. It will try to import some of "
+#~ "mIRC settings and serverlist. If you don't want to do it, unselect import "
+#~ "in setup pages"
+#~ msgstr ""
+#~ "Es wurde eine bestehende mIRC-Installation gefunden. KVIrc wird nun "
+#~ "versuchen einige mIRC-Einstellungen und dessen Serverliste zu übernehmen. "
+#~ "Falls Sie das nicht möchten, deselektieren Sie bitte den Import in den "
+#~ "Einstellungsseiten."
+
+#~ msgid "Input buffer: %d bytes"
+#~ msgstr "Eingabepuffer: %d Byte"
+
+#~ msgid "Output buffer: %d bytes"
+#~ msgstr "Ausgabepuffer: %d Byte"
+
+#~ msgid "Volume: %i"
+#~ msgstr "Lautstärke: %i"
+
+#~ msgid "<unknown size>"
+#~ msgstr "<unbekannte Größe>"
+
+#~ msgid "\"any\""
+#~ msgstr "\"irgendein/e/s\""
+
+#~ msgid ">>"
+#~ msgstr ">>"
+
+#, fuzzy
+#~ msgid " Property: %Q=%Q"
+#~ msgstr " Eigenschaft: %Q=%Q"
+
+#~ msgid "Smart"
+#~ msgstr "Intelligent"
+
+#~ msgid "Report a Bug"
+#~ msgstr "Fehler melden"
+
+#~ msgid "Window with ID '%s' not found"
+#~ msgstr "Ein Fenster mit der ID '%s' wurde nicht gefunden"
+
+#~ msgid "Module function call failed: can't load the module 'str'"
+#~ msgstr ""
+#~ "Modulfunktionsaufruf fehlgeschlagen: Modul 'str' kann nicht geladen werden"
+
+#~ msgid ""
+#~ "Module function call failed: the module 'str' doesn't export a function "
+#~ "named 'split'"
+#~ msgstr ""
+#~ "Modulfunktionsaufruf fehlgeschlagen: Modul 'str exportiert keine Funktion "
+#~ "namens 'split'"
diff --git a/po/kvirc/kvirc_es.po b/po/kvirc/kvirc_es.po
new file mode 100644
index 00000000..caf77b3b
--- /dev/null
+++ b/po/kvirc/kvirc_es.po
@@ -0,0 +1,13137 @@
+# translation of kvirc_es.po to castellano
+#
+# Juanjo Alvarez Martinez <[email protected]>, 2004.
+# José Luis Sánchez Villanueva <[email protected]>, 2004-2006.
+# Roberto Ciria <[email protected]>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: kvirc_es\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-01-11 15:20+0100\n"
+"Last-Translator: Roberto Ciria <[email protected]>\n"
+"Language-Team: castellano <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"First-Translator: Juan José Álvarez Martínez <[email protected]>\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:696
+msgid "&Cascade Windows"
+msgstr "&Ventanas en Cascada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:697
+msgid "Cascade &Maximized"
+msgstr "Cascada &Maximizada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:700
+msgid "&Tile Windows"
+msgstr "Embaldosar Ventanas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:703
+msgid "&Auto Tile"
+msgstr "&Auto Embaldosar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:708
+msgid "Anodine's Full Grid"
+msgstr "Rejilla Completa de Anodine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:710
+msgid "Pragma's Horizontal 4-Grid"
+msgstr "Rejilla-a-4 Horizontal de Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:712
+msgid "Pragma's Vertical 4-Grid"
+msgstr "Rejilla-a-4 Vertical de Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:714
+msgid "Pragma's Horizontal 6-Grid"
+msgstr "Rejilla-a-6 Horizontal de Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:716
+msgid "Pragma's Vertical 6-Grid"
+msgstr "Rejilla-a-6 Vertical de Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:718
+msgid "Pragma's Horizontal 9-Grid"
+msgstr "Rejilla-a-9 Horizontal de Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:720
+msgid "Pragma's Vertical 9-Grid"
+msgstr "Rejilla-a-9 Vertical de pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:726
+msgid "Tile Met&hod"
+msgstr "Método de embaldosado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:729
+msgid "Expand &Vertically"
+msgstr "Expandir &Verticalmente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:730
+msgid "Expand &Horizontally"
+msgstr "Expandir &Horizontalmente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:733
+msgid "Mi&nimize All"
+msgstr "Mi&nimizar Todo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_actiondrawer.cpp:64
+msgid "Script"
+msgstr "Script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:581
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:634
+msgid "Unknown"
+msgstr "Desconocido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:128
+msgid "No topic message has been received from the server yet"
+msgstr "El servidor an no ha enviado un mensaje de tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:495
+msgid "Channel topic:"
+msgstr "Tema del canal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:513
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:201
+msgid "Set by"
+msgstr "Puesto por"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:519
+msgid "Set on"
+msgstr "Puesto el"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:525
+msgid "Double-click to edit..."
+msgstr "Doble click para editar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:530
+msgid "No topic is set"
+msgstr "No se ha puesto tema de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:533
+msgid "Double-click to set..."
+msgstr "Doble click para poner..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:587
+#, fuzzy
+msgid "History"
+msgstr "directorio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:596
+msgid "Commit Changes"
+msgstr "Aceptar Cambios"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:602
+msgid "Discard Changes"
+msgstr "Descartar Cambios"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:627
+msgid "Copy to clipboard"
+msgstr "Copiar al portapapeles"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:988
+msgid "There are active connections, are you sure you wish to "
+msgstr "Existen conexiones activas, está seguro que desea "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:989
+msgid "quit KVIrc?"
+msgstr "salir de KVIrc?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:587
+msgid "Confirmation - KVIrc"
+msgstr "Confirmación - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:557
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:590
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&Yes"
+msgstr "&S"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:556
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:589
+msgid "&Always"
+msgstr "Siempre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:591
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&No"
+msgstr "&No"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1090
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1106
+msgid "Show %1"
+msgstr "Mostrar %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1134
+msgid "Customize..."
+msgstr "Personalizar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:149
+#, c-format
+msgid "The file %s already exists.<br>Do you wish to overwrite it?"
+msgstr "El archivo %s ya existe.<br>Sobreescribirlo?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:150
+msgid "File Exists - KVIrc"
+msgstr "El Archivo Existe - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:132
+msgid "Channel mode"
+msgstr "Modo de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:162
+msgid "Split View"
+msgstr "Dividir Vista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:207
+msgid "User List"
+msgstr "Lista de Usuarios"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:167
+#, fuzzy
+msgid "Ban Editor"
+msgstr "Editor Puro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:172
+#, fuzzy
+msgid "Ban Exception Editor"
+msgstr "Mostrar Editor de Excepciones a Prohibiciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:179
+#, fuzzy
+msgid "Invite Exception Editor"
+msgstr "Mostrar Editor de Excepciones a Invitaciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:184
+#, fuzzy
+msgid "Mode Editor"
+msgstr "Mostrar Editor de Modo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "said something recently"
+msgstr "dijo algo recientemente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "is talking"
+msgstr "está hablando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:684
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:699
+msgid "and"
+msgstr "y"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "were talking recently"
+msgstr "hablaron recientemente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "are talking"
+msgstr "están hablando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:707
+msgid "and other %1 users"
+msgstr "y otros %1 usuarios"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:738
+msgid "Dead channel"
+msgstr "Canal muerto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:753
+msgid "operator"
+msgstr "operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:754
+msgid "operators"
+msgstr "operadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active user"
+msgstr "usuario activo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active users"
+msgstr "usuarios activos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot user"
+msgstr "usuario caliente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot users"
+msgstr "usuarios calientes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owner"
+msgstr "propietario del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owners"
+msgstr "propietarios del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrator"
+msgstr "administrador del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrators"
+msgstr "administradores del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operator"
+msgstr "semioperador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operators"
+msgstr "semioperadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced user"
+msgstr "usuario con voz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced users"
+msgstr "usuarios con voz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operator"
+msgstr "usuario operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operators"
+msgstr "usuarios operadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "user total"
+msgstr "usuario total"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "users total"
+msgstr "usuarios totales"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:931
+msgid "No activity"
+msgstr "Sin actividad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:932
+msgid "Minimal activity"
+msgstr "Actividad mínima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:933
+msgid "Very low activity"
+msgstr "Muy baja actividad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Might be low activity"
+msgstr "Puede ser de baja actividad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Low activity"
+msgstr "Baja actividad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Might be medium activity"
+msgstr "Puede ser de actividad media"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Medium activity"
+msgstr "Actividad media"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "Might be high activity"
+msgstr "Puede ser de alta actividad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "High activity"
+msgstr "Alta actividad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Might be very high activity"
+msgstr "Puede ser de muy alta actividad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Very high activity"
+msgstr "Muy alta actividad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Might be flooded with messages"
+msgstr "Puedes ser saturado con mensajes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Flooded with messages"
+msgstr "Saturado con mensajes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:946
+msgid "human"
+msgstr "humana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:966
+msgid "[Dead channel]"
+msgstr "[Canal muerto]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1020
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1122
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:459
+msgid " on "
+msgstr " en "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1086
+#, fuzzy
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %Q, no "
+"data sent to the server"
+msgstr ""
+"El motor de cifrado no fue capaz de cifrar el siguiente mensaje (%Q): %s, no "
+"se enviaron datos al servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1403
+msgid "Sent part request, waiting for reply..."
+msgstr "Enviada solicitud de partida, esperando respuesta..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:610
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:647
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:293
+msgid "(Unknown)"
+msgstr "(Desconocido)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1484
+msgid "<b>Channel mode:</b>"
+msgstr "<b>Modo de canal:</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1498
+#, c-format
+msgid "<br><b>Key:</b> %s"
+msgstr "<br><b>Clave:</b> %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1505
+#, c-format
+msgid "<br><b>Limit:</b> %s"
+msgstr "<br><b>Límite:</b> %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1590
+#, c-format
+msgid "Channel synchronized in %d.%d seconds"
+msgstr "Canal sincronizado en %d.%d segundos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:139
+msgid "Choose an Image File - KVIrc"
+msgstr "Escoge un Archivo de Imagen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:284
+#, c-format
+msgid "Unloadable: %s"
+msgstr "No cargable: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:260
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:90
+msgid "&Browse..."
+msgstr "Navegar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:364
+msgid "Choose a File - KVIrc"
+msgstr "Escoja un Archivo - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:382
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:593
+msgid "Choose a Directory - KVIrc"
+msgstr "Seleccione un Directorio - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:764
+msgid "A&dd"
+msgstr "Aña&dir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:407
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:766
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:230
+msgid "Re&move"
+msgstr "Eli&minar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:602
+msgid "Sample Text"
+msgstr "texto de Ejemplo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:635
+msgid "Foreground"
+msgstr "Primer plano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:639
+msgid "Transparent"
+msgstr "Transparente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:652
+msgid "Background"
+msgstr "Fondo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:715
+msgid "Play"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:748
+#, fuzzy
+msgid "Channel name"
+msgstr "Modo de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:749
+#, fuzzy
+msgid "Channel password"
+msgstr "Operadores de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:177
+msgid "Toolbars"
+msgstr "Barras de herramientas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:84
+msgid "Orientation"
+msgstr "Orientación"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:86
+msgid "Top"
+msgstr "Arriba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:87
+msgid "Left"
+msgstr "Izquierda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:88
+msgid "Right"
+msgstr "Derecha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:89
+msgid "Bottom"
+msgstr "Abajo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:91
+msgid "Detached"
+msgstr "Desasociado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:92
+msgid "Flat"
+msgstr "Plano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:94
+msgid "Icon Size"
+msgstr "Tamaño de Icono"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:96
+msgid "Small (22x22)"
+msgstr "Pequeño (22x22)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:97
+msgid "Large (32x32)"
+msgstr "Grande (32x32)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1333
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:463
+msgid "&Apply"
+msgstr "&Aplicar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:830
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:113
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:251
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:319
+msgid "Close"
+msgstr "Cerrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:102
+msgid "Channel Modes"
+msgstr "Modos de Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_debugwindow.cpp:47
+#, fuzzy
+msgid "Debug Messages"
+msgstr "Mensaje DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:72
+msgid "CTCP Page - KVIrc"
+msgstr "Página CTCP - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:109
+msgid "You have been paged by"
+msgstr "Has sido paginado por"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:75
+#, fuzzy
+msgid "Mask editor - KVirc"
+msgstr "Editor de máscaras"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:79
+msgid "New mask must match an *!*@* expression"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Ok"
+msgstr "Aceptar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:488
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:442
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:401
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:157
+msgid "Active Bans"
+msgstr "Prohibiciones Activas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:161
+msgid "Active Invite Exceptions"
+msgstr "Excepciones a Invitación Activas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:165
+msgid "Active Ban Exceptions"
+msgstr "Excepciones a Prohibición Activas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:184
+#, fuzzy
+msgid "Filter:"
+msgstr "&Filtro:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:188
+#, fuzzy
+msgid "Use doubleclick to edit item"
+msgstr "Doble click para editar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:200
+msgid "Mask"
+msgstr "Máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:202
+msgid "Set at"
+msgstr "Puesto el"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "Add"
+msgstr "Añadir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:92
+msgid "Cryptography/text transformation"
+msgstr "Transformación Cifrado/texto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:99
+msgid "Use the crypt engine"
+msgstr "Utilizar el motor de cifrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:120
+msgid "Enable encryption"
+msgstr "Activar cifrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:123
+msgid "Encrypt key:"
+msgstr "Clave de cifrado:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:141
+msgid "Hex"
+msgstr "Hex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:132
+msgid "Enable decryption"
+msgstr "Activar descifrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:135
+msgid "Decrypt key:"
+msgstr "Clave de descifrado:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_htmldialog.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:175
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:932
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1124
+msgid "OK"
+msgstr "Aceptar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:211
+msgid ""
+"If you dont want to encrypt a particular text line then just start it with "
+"the CTRL+P prefix"
+msgstr ""
+"Si no quieres cifrar una línea de texto en particular, comiénzala con el "
+"prefijo Ctrl+P"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:263
+msgid "Sorry, no crypt engines available"
+msgstr "Lo siento, no hay motores de cifrado disponibles"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:283
+msgid "Crypt: Can't create an engine instance: crypting disabled"
+msgstr "Cifrado: No puedo crear una instancia del motor: cifrado desactivado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:294
+#, c-format
+msgid "Crypt: Can't initialize the engine :%s"
+msgstr "Cifrado: No puedo inicializar el motor :%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:302
+msgid ""
+"Crypt: You have to enable encryption and/or decryption for the engine to work"
+msgstr ""
+"Cifrado: Tienes que activar el cifrado y/o descifrado para que el motor "
+"funcione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:385
+msgid "Search tools"
+msgstr "Herramientas de búsqueda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:539
+#, c-format
+msgid "### Log session terminated at %s ###"
+msgstr "### Sesión de registro terminada a las %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:713
+#, c-format
+msgid "### Log session started at %s ###"
+msgstr "### Sesión de registro iniciada a las %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:717
+msgid "### Existing data buffer:"
+msgstr "### Buffer de datos existente:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:721
+msgid "### End of existing data buffer."
+msgstr "### Fin de buffer de datos existente."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3894
+msgid "Hide Find Window"
+msgstr "Esconder Ventana de Búsqueda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3896
+msgid "Show Find Window"
+msgstr "Mostrar Ventana de Búsqueda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3898
+msgid "Zoom In"
+msgstr "Ampliar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3899
+msgid "Zoom Out"
+msgstr "Reducir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3900
+msgid "Choose Temporary Font..."
+msgstr "Escoja Fuente Temporal..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3901
+msgid "Choose Temporary Background..."
+msgstr "Escoja Fondo Temporal..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3902
+msgid "Reset Temporary Background"
+msgstr "Quitar Fondo Temporal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3905
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:738
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:841
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1057
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1289
+msgid "Clear Buffer"
+msgstr "Limpiar Buffer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3939
+msgid "Choose the background image..."
+msgstr "Escoja la imagen de fondo..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+msgid "Invalid image"
+msgstr "Imagen no válida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+msgid "Failed to load the selected image"
+msgstr "Falló la carga del archivo de imagen seleccionado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4083
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4140
+#, c-format
+msgid "Pos %d"
+msgstr "Pos %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4156
+msgid "Not found"
+msgstr "No encontrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4563
+msgid "Looking up host %Q..."
+msgstr "Buscando máquina %Q..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4926
+msgid "Double-click to open this link"
+msgstr "Doble click para abrir este enlace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4946
+msgid "Unable to look it up hostname: Hostname appears to be masked"
+msgstr ""
+"Incapaz de extraer el nombre de máquina: parece que el nombre de la máquina "
+"está enmascarado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4947
+msgid "Unable to look it up hostname: Unknown host"
+msgstr "Incapaz de extraer el nombre de máquina: máquina desconocida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4949
+msgid ""
+"Double-click to look up this hostname<br>Right-click to view other options"
+msgstr ""
+"Haga doble click para buscar esta máquina<br>Click derecho para ver otras "
+"opciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4972
+msgid "Server appears to be a network hub<br>"
+msgstr "El servidor parece ser un concentrador de red<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4973
+msgid "Unknown server<br>"
+msgstr "Servidor desconocido<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4976
+msgid "Double-click to read the MOTD<br>Right-click to view other options"
+msgstr "Doble click para leer el MOTD<br>Botón derecho para ver otras opciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4989
+msgid "Double-click to set<br>"
+msgstr "Doble click para poner<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5011
+msgid "You're not an operator: You may not change channel modes"
+msgstr "Usted no es operador: No puede cambiar los modos del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5028
+msgid "Nothing known about %Q"
+msgstr "No se nada acerca de %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5029
+msgid "Nothing known about %Q (no connection)"
+msgstr "No se nada acerca de %Q (no hay conexión)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5054
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>): "
+"<br><nowrap>+%Q (%u users)<hr>%Q</nowrap>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5060
+#, fuzzy
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)<hr>Double-"
+"click to join %Q<br>Right click to view other options"
+msgstr "Doble click para unirse a %Q<br>Botón derecho para ver otras opciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5080
+msgid "<b>Double-click:</b><br>%Q"
+msgstr "<b>Doble click:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5085
+msgid "<b>Middle-click:</b><br>%Q"
+msgstr "<b>Botón central:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5090
+msgid "<b>Right-click:</b><br>%Q"
+msgstr "<b>Botón derecho:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1284
+msgid "Joined on <b>%1</b>"
+msgstr "Unido el <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1296
+msgid "Quiet for <b>%1h %2m %3s</b>"
+msgstr "Callado desde <b>%1h %2m %3s</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1097
+msgid "No connection"
+msgstr "Sin conexión"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:304
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:3
+msgid "IRC Context"
+msgstr "Contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:319
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:365
+#, c-format
+msgid "Lag: %d.%d%d"
+msgstr "Retraso: %d.%d%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:393
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:379
+msgid "Lag: ?.??"
+msgstr "Retraso: ?.??"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:326
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:637
+msgid "No IRC context"
+msgstr "No hay contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:633
+msgid "Not connected"
+msgstr "Sin conexión"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:377
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1117
+msgid "away"
+msgstr "ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:397
+msgid "In progress..."
+msgstr "En progreso..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:458
+#, fuzzy
+msgid "Crypting"
+msgstr "Cifrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:466
+msgid "Private Text Encoding"
+msgstr "Codificación de Texto Privado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:566
+msgid "Ops...I've accidentally lost the crypting engine..."
+msgstr "Ops... he perdido accidentalmente el motor de cifrado..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:582
+msgid "List of window types available in this release of KVIrc:"
+msgstr "Lista de tipos de ventanas disponibles en esta versión de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:763
+msgid "Use Default Encoding"
+msgstr "Usar Codificación por defecto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:775
+msgid "Standard"
+msgstr "Estándar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:776
+msgid "Smart (Send Local)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:777
+msgid "Smart (Send UTF-8)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:810
+msgid "&Undock"
+msgstr "Quitar anclaje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:813
+msgid "&Dock"
+msgstr "Anclar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:818
+msgid "Mi&nimize"
+msgstr "Mi&nimizado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:821
+msgid "Ma&ximize"
+msgstr "Ma&ximizado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:824
+msgid "&Restore"
+msgstr "&Restaurar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:837
+msgid "Text &Encoding"
+msgstr "Codificación de Texto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:842
+msgid "Sa&ve Window Properties"
+msgstr "Guardar Propiedades de &Ventana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:86
+msgid "Taskbar"
+msgstr "Barra de Tareas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:91
+#, fuzzy
+msgid "taskbar"
+msgstr "Barra de Tareas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1162
+#, fuzzy
+msgid "Sort"
+msgstr "Ordenación"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1163
+#, fuzzy
+msgid "Reverse Sort"
+msgstr "Inversa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1223
+msgid "Window List"
+msgstr "Lista de Ventanas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:203
+#, fuzzy
+msgid "Apply to all IRC Contexts"
+msgstr "No hay contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:227
+msgid "Away Indicator"
+msgstr "Indicador de Ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:255
+msgid "Away since"
+msgstr "Ausente desde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:259
+msgid "Double click to leave away mode"
+msgstr "Doble click para abandonar el modo ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:261
+msgid "Not away"
+msgstr "Presente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:263
+msgid "Double click to enter away mode"
+msgstr "Doble click para entrar en modo ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:330
+#, c-format
+msgid "Last checked %d mins %d secs ago"
+msgstr "Última comprobación realizada hace %d min %d segs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:332
+msgid "Lag measure not available yet"
+msgstr "La medida del retraso no está disponible todavía"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:336
+msgid "Lag meter engine disabled"
+msgstr "Motor de medición del retraso deshabilitado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:338
+msgid "Double click to enable it"
+msgstr "Doble click para habilitarlo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:391
+msgid "Lag Indicator"
+msgstr "Indicador de Retraso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:461
+msgid "Simple Clock"
+msgstr "Reloj Sencillo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:512
+#, fuzzy
+msgid "Show total connection time"
+msgstr "Mostrar el tiempo de sincronización del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:536
+msgid "Connection Timer"
+msgstr "Cronómetro de Conexión"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:560
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:87
+msgid "Separator"
+msgstr "Separador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:820
+msgid "Clipboard"
+msgstr "Portapapeles"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line break"
+msgstr "avance de línea"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line breaks"
+msgstr "avances de línea"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:845
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:439
+msgid "Cu&t"
+msgstr "Cor&tar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:847
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:445
+msgid "&Copy"
+msgstr "&Copiar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:849
+msgid "&Paste"
+msgstr "&Pegar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:851
+msgid "Paste (Slowly)"
+msgstr "Pegar (lentamente)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:856
+msgid "Paste &File"
+msgstr "Pegar Archivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:863
+msgid "Stop Paste"
+msgstr "Detener Pegar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:865
+msgid "Clear"
+msgstr "Limpiar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:868
+msgid "Select All"
+msgstr "Seleccionar Todo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:897
+#, fuzzy
+msgid "Insert Icon"
+msgstr "Acción de usuario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1926
+msgid "%d matches: %Q"
+msgstr "%d coincidencias: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1930
+msgid "No matches"
+msgstr "Sin coincidencias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2657
+msgid "Show History<br>&lt;Ctrl+PageUp&gt;"
+msgstr "Mostrar Historia<br>&lt;Ctrl+PagArr&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2648
+msgid "Input History Disabled"
+msgstr "Historial de Entrada Deshabilitado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2370
+msgid "Show Icons Popup<br>&lt;Ctrl+I&gt;<br>See also /help texticons"
+msgstr ""
+"Mostrar menú Emergente de Iconos<br>&lt;Ctrl+I&gt;<br>Ver también /help "
+"texticons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2382
+msgid "User friendly commandline mode<br>See also /help commandline"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2394
+#, fuzzy
+msgid "Multi-line Editor<br>&lt;Alt+Backspace&gt;"
+msgstr "Editor Multilínea<br>&lt;Ctrl+Borrar&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2498
+msgid "Confirm Multiline Message"
+msgstr "Confirmar Mensaje Multilínea"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2499
+msgid ""
+"You're about to send a message with %1 lines of text.<br><br>There is "
+"nothing wrong with it, this warning is<br>here to prevent you from "
+"accidentally sending<br>a really large message just because you didn't edit "
+"it<br>properly after pasting text from the clipboard.<br><br>Do you want the "
+"message to be sent?"
+msgstr ""
+"Estás a punto de enviar un mensaje con %1 líneas de texto.<br><br>No hay "
+"nada malo en ello, este mensaje<br>está aquí solo para evitar el envío "
+"accidental<br>de un mensaje realmente largo debido a que no lo "
+"editaste<br>adecuadamente después de pegar texto desde el portapapeles."
+"<br><br>Quieres que sea enviado el mensaje?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2505
+msgid "Yes, always"
+msgstr "Sí, siempre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2506
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:399
+msgid "Yes"
+msgstr "Sí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:806
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:375
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:400
+msgid "No"
+msgstr "No"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2556
+#, fuzzy
+msgid "<Ctrl+Return>; submits, <Alt+Backspace>; hides this editor"
+msgstr "<Ctrl+Entrar>; envía, <Ctrl+Retroceso>; esconde este editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:126
+msgid "Address:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:140
+msgid "Current IRC URI"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:156
+msgid "Notify List"
+msgstr "Lista de Notificaciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:263
+msgid "Part All Channels"
+msgstr "Salir de Todos los Canales"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:265
+msgid "Close All Queries"
+msgstr "Cerrar Todos los Privados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:270
+msgid "Unhighlight All Windows"
+msgstr "Quitar resaltado de todas las ventanas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:273
+msgid "Unhighlight All Channels"
+msgstr "Quitar resaltado de todos los canales"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:275
+msgid "Unhighlight All Queries"
+msgstr "Quitar resaltado de todos los privados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:387
+#, fuzzy
+msgid "Gender:"
+msgstr "Genérico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:394
+#, fuzzy
+msgid "Male"
+msgstr "Valor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:393
+msgid "Female"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:375
+msgid "Registered as"
+msgstr "Registrados como"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:381
+#, fuzzy
+msgid "(Matched by"
+msgstr "Coincidentes con"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:393
+msgid "On <b>"
+msgstr "En <b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:402
+msgid "Using server <b>%1</b>"
+msgstr "Usando servidor <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:407
+msgid "%1 hops"
+msgstr "%1 saltos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:417
+msgid "Probably Away"
+msgstr "Probablemente Ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:493
+msgid ""
+"KVIrc can accept only irc://, irc6://, ircs:// or irc6s:// URL's\n"
+"Your URL is invalid. Check spelling and try again"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:554
+msgid ""
+"You have just attempted to close a console window with an active connection "
+"inside.\n"
+"Are you sure you wish to terminate the connection?"
+msgstr ""
+"Ha intentado cerrar una ventana de consola con una conexi activa.\n"
+"Está seguro que desea finalizar la conexi?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:588
+msgid ""
+"You have just attempted to close the last console window.\n"
+"Are you sure you wish to quit KVIrc?"
+msgstr ""
+"Ha intentado cerrar la última ventana de consola.\n"
+"Está seguro que desea salir de KVIrc?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1019
+msgid "Failed to load avatar with name \"%Q\" and local path \"%Q\""
+msgstr "Falló la carga del avatar con nombre \"%Q\" y trayectoria local \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:624
+msgid "Connection in progress..."
+msgstr "Conexión en progreso..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1099
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:630
+msgid "Login in progress..."
+msgstr "Autentificación en progreso..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1179
+msgid "channel"
+msgstr "canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1180
+msgid "channels"
+msgstr "canales"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1181
+msgid "query"
+msgstr "privado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1182
+msgid "queries"
+msgstr "privados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1238
+msgid "Connected since"
+msgstr "Conectado desde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1252
+msgid "Online for"
+msgstr "Conectado durante"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1264
+msgid "Server idle for"
+msgstr "Servidor esperando durante"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:50
+msgid "This option is also available as"
+msgstr "Esta opción también está disponible como"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:683
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:275
+msgid "Advanced..."
+msgstr "Avanzado..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:69
+msgid "Scri&pting"
+msgstr "&Scripting"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:74
+msgid "&Tools"
+msgstr "&Herramientas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:81
+msgid "&Settings"
+msgstr "&Opciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:83
+msgid "&Window"
+msgstr "&Ventanas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:125
+msgid "&Help"
+msgstr "&Ayuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:119
+msgid "&Help Browser (Panel)"
+msgstr "Ayuda (Panel de)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:121
+msgid "Help Browser (&Window)"
+msgstr "Ayuda (&Ventana)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:124
+msgid "&Tip of the Day"
+msgstr "Consejo del Día"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:127
+msgid "About &KVIrc"
+msgstr "Acerca de &KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:130
+msgid "KVIrc Home&page"
+msgstr "&Pagina de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:134
+#, fuzzy
+msgid "KVIrc Russian Home&page"
+msgstr "&Pagina de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:139
+#, fuzzy
+msgid "KVIrc French Home&page"
+msgstr "&Pagina de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:143
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:339
+msgid "Subscribe to the Mailing List"
+msgstr "Suscribirse a la Lista de Correo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:145
+msgid "Report a Bug / Propose Improvements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:148
+msgid "Join KVIrc International Channel on Freenode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:150
+msgid "Join KVIrc International Channel on IRCNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:155
+msgid "Join KVIrc Italian Channel on AzzurraNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:161
+msgid "Join KVIrc French Channel on Freenode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:164
+msgid "Join KVIrc French Channel on EuropNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:179
+msgid "Show StatusBar"
+msgstr "Mostrar Barra de Estado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:194
+msgid "&Save Configuration"
+msgstr "Guardar configuración"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:213
+msgid "Restore &Default Script"
+msgstr "Restaurar Script por &Defecto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:630
+msgid "Disconnect"
+msgstr "Desconectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:228
+msgid "New &Connection To"
+msgstr "Nueva &Conexión a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:234
+msgid "Hide &Dock Icon"
+msgstr "Escon&der Icono de Anclaje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:237
+msgid "Show &Dock Icon"
+msgstr "Mostrar Icono de Anclaje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:111
+msgid "&Quit"
+msgstr "&Salir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:265
+msgid "&Other..."
+msgstr "&Otros..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:305
+msgid "Show &Icon Table"
+msgstr "Mostrar Tabla de &Iconos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:308
+msgid "Open &Terminal"
+msgstr "Abrir &Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:308
+msgid ""
+"<b>Shift+Drag</b> or <b>Ctrl+Drag</b> to move the applet around<br><b>Right "
+"click</b> to see the other options"
+msgstr ""
+"<b>Mays+Arrastrar</b> o <b>Ctrl+Arrastrar</b> para mover el "
+"applet<br><b>Botón derecho</b> para ver otras opciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:313
+msgid "<b>Right click</b> to add/remove applets"
+msgstr "<b>Botón derecho</b> para añadir/quitar applets"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:353
+msgid "Remove %Q"
+msgstr "Quitar %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:365
+msgid "Add Applet"
+msgstr "Añadir Applet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:404
+msgid ""
+"Drag the applet while holding the Shift or Ctrl key to move it to the "
+"desired position"
+msgstr ""
+"Arrastrar el applet mientras se mantiene pulsada la tecla Mays o Ctrl para "
+"moverlo a la posición deseada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:93
+msgid "<b><font color=\"#EAEAEA\" size=\"-1\">Find Text</font></b>"
+msgstr "<b><font color=\"#EAEAEA\" size=\"-1\">Bscar Texto</font></b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:118
+msgid "&Regular expression"
+msgstr "Expresión &regular"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:121
+msgid "E&xtended regexp."
+msgstr "E&xpresión regular extendida."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:126
+msgid "C&ase sensitive"
+msgstr "No distingue m&ays/mins"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:129
+msgid "Find &Prev."
+msgstr "Buscar Anterior"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:133
+msgid "&Find Next"
+msgstr "Buscar Siguiente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:880
+msgid "Find"
+msgstr "Buscar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:214
+msgid "Type"
+msgstr "Tipo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:166
+msgid "Set &All"
+msgstr "Seleccionar Todo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:170
+msgid "Set &None"
+msgstr "Iniciar &Nada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:174
+msgid "&Load From..."
+msgstr "Cargar Desde..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:178
+msgid "&Save As..."
+msgstr "Guardar Como.."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:182
+msgid "Filter"
+msgstr "Filtro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:234
+msgid "Select a Filter File"
+msgstr "Seleccione un Archivo de Filtro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:251
+#, c-format
+msgid "Can't open the filter file %s for reading."
+msgstr "No puedo abrir el archivo de filtro %s para lectura."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:261
+msgid "Select a Name for the Filter File"
+msgstr "Escoge un Nombre para el Archivo de Filtro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:272
+#, fuzzy
+msgid "Failed to write the filter file %Q (IO Error)"
+msgstr "Falló la escritura al archivo de filtro %s (Error E/S)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:274
+#, fuzzy
+msgid "Can't open the filter file %Q for writing"
+msgstr "No puedo abrir el archivo de filtro %s para escritura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:109
+msgid "Choose image ..."
+msgstr "Escoja imagen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:122
+msgid "Builtin images"
+msgstr "Imagenes integradas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:131
+msgid "Small icons"
+msgstr "Iconos pequeños"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:138
+msgid "Full path"
+msgstr "Trayectoria completa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:241
+msgid "Builtin $icon(%Q) [index %d]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:274
+msgid "directory"
+msgstr "directorio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:300
+msgid "pixels"
+msgstr "pixels"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:305
+msgid "bytes"
+msgstr "bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:98
+msgid "Show User List"
+msgstr "Mostrar Lista de Usuarios"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:105
+msgid "Query Targets"
+msgstr "Destinos para Privados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:165
+msgid "Query target:"
+msgstr "Destino para privados:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:170
+msgid "%1 is %2 (%3)"
+msgstr "%1 es %2 (%3)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:172
+msgid "%1 is %2"
+msgstr "%1 es %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:186
+msgid "%1 is using irc server: %2 (%3 hops)"
+msgstr "%1 está usando el servidor irc: %2 (%3 saltos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:188
+msgid "%1 is using irc server: %2"
+msgstr "%1 está usando el servidor irc: %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:195
+msgid "%1 is probably away"
+msgstr "%1 probablemente está ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:200
+msgid "Common channels with %1: %2"
+msgstr "Canales comunes con %1: %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:254
+msgid "[Dead Query]"
+msgstr "[Privado Muerto]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:240
+msgid "Query with %1!%2 (%3)"
+msgstr "Privado con %1!%2 (%3)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:242
+msgid "Query with %1!%2"
+msgstr "Privado con %1!%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:244
+msgid ", using server %1"
+msgstr ", usando el servidor %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:246
+msgid " (%1 hops)"
+msgstr "(%1 saltos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:248
+msgid ", probably away"
+msgstr ", probablemente ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:252
+msgid "Common channels: %2"
+msgstr "Canales comunes: %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:320
+msgid ""
+"The target of this query has changed from \r!n\r%Q\r [%Q@\r!h\r%Q\r] to \r!n"
+"\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr ""
+"El destino de este privado ha cambiado de \r!n\r%Q\r [%Q@\r!h\r%Q\r] a \r!n\r"
+"%Q\r [%Q@\r!h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:389
+msgid "Common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Canales comunes para \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:392
+msgid "No common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "No hay canales comunes para \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:428
+msgid "[Dead query]"
+msgstr "[Privado Muerto]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:578
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:645
+msgid "This query has no active targets, no message sent"
+msgstr "Este privado no tiene destinos activos, no se envió mensaje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:617
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %s, no "
+"data sent to the server"
+msgstr ""
+"El motor de cifrado no fue capaz de cifrar el siguiente mensaje (%Q): %s, no "
+"se enviaron datos al servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashcount.cpp:74
+msgid ""
+"The argument of the hash count '#' operator didn't evaluate to a hash: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+"El operador de conteo hash '#' no se evala como un hash: se proporciona "
+"conversión automática desde el tipo '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:100
+#, fuzzy
+msgid "DNS Lookup result for query \"%Q\""
+msgstr "Resultado de la búsqueda DNS para la pregunta \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:105
+msgid "Error: %Q"
+msgstr "Error: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:110
+#, fuzzy
+msgid "Hostname %d: %Q"
+msgstr "Máquina %d: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:116
+#, fuzzy
+msgid "IP address %d: %Q"
+msgstr "Dirección IP %d: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:870
+msgid ""
+"Broken slot '%Q' in target object '%Q::%Q' while emitting signal '%Q' from "
+"object '%Q::%Q': disconnecting"
+msgstr ""
+"Slot '%Q' erroneo en objeto destino '%Q::%Q' mientras se emitía la señal '%"
+"Q' desde el objeto '%Q::%Q': desconectando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:888
+msgid ""
+"Slot target object destroyed while emitting signal '%Q' from object '%Q::%Q'"
+msgstr ""
+"Slot del objeto destino destruido mientras se emitía la señal '%Q' desde el "
+"objeto '%Q::%Q': desconectando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1040
+msgid "Listing Qt properties for object named \"%Q\" of KVS class %Q"
+msgstr ""
+"Enumerando las propiedades Qt para el objeto llamado \"%Q\" de la clase KVS %"
+"Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1046
+#, c-format
+msgid "Properties for Qt class %s"
+msgstr "Propiedades de la clase Qt %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1071
+#, fuzzy
+msgid "Property: %c%Q%c, type %Q"
+msgstr "Propiedad: %c%Q%c, tipo: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1131
+#, c-format
+msgid "%d properties listed"
+msgstr "%d propiedades enumeradas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1151
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1380
+msgid "The object named \"%Q\" of class %Q has no Qt properties"
+msgstr "El objeto llamado \"%Q\" de clase %Q no tiene propiedades Qt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1396
+msgid "No Qt property named \"%Q\" for object named \"%Q\" of class %Q"
+msgstr ""
+"No hay una propiedad Qt \"%Q\" para el objeto llamado \"%Q\" de clase %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1409
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed but it doesn't really exist"
+msgstr ""
+"No puedo encontrar la propiedad llamada \"%Q\" para el objeto llamado \"%Q\" "
+"de clase %Q: la propiedad está indexada pero no existe realmente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1417
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed and defined but the returned variant is not valid"
+msgstr ""
+"No puedo encontrar la propiedad llamada \"%Q\" para el objeto llamado \"%Q\" "
+"de clase %Q: la propiedad está indexada y definida pero el tipo de retorno "
+"no es válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1200
+#, c-format
+msgid ""
+"The property is of type %s but the supplied argument can't be converted to "
+"that type (expecting \"%s\")"
+msgstr ""
+"La propiedad es de tipo %s pero el argumento proporcionado no puede ser "
+"convertido a este tipo (se esperaba \"%s\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1331
+msgid ""
+"A pixmap object, an image_id or an image file path is required for this "
+"property"
+msgstr ""
+"Se necesita un objeto pixmap, un id de imagen o una trayectoria a un fichero "
+"de imagen para esta propiedad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1352
+msgid "Can't find the requested image"
+msgstr "No se pudo encontrar la imagen solicitada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1512
+msgid ""
+"Property \"%Q\" for object named \"%Q\" of class %Q has an unsupported data "
+"type"
+msgstr ""
+"La propiedad \"%Q\" para el objeto llamado \"%Q\" de clase %Q tiene un tipo "
+"de dato no soportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1659
+msgid "Cannot find object function $%Q for object named \"%Q\" of class %Q"
+msgstr ""
+"No puedo encontrar la función de objeto $%Q para el objeto llamado \"%Q\" de "
+"clase %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1661
+msgid "Cannot find object function $%Q::%Q for object named \"%Q\" of class %Q"
+msgstr ""
+"No puedo encontrar la función del objeto $%Q::%Q para el objeto llamado \"%Q"
+"\" de clase %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1669
+#, fuzzy
+msgid ""
+"Cannot call internal object function $%Q (for object named \"%Q\" of class %"
+"Q) from this context"
+msgstr ""
+"No puedo encontrar la función de objeto $%Q para el objeto llamado \"%Q\" de "
+"clase %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:69
+msgid "Stray dot ('.') character or invalid following module command name"
+msgstr ""
+"Carácter punto ('.') sobrante o sigue un nombre de comando del módulo no "
+"válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:70
+msgid "Syntax error: malformed module command identifier"
+msgstr "Error de sintaxis: identificador de comando del módulo mal formado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:188
+msgid "Stray '::' sequence or invalid following alias name"
+msgstr "Secuencia '::' perdida o le sigue un nombre de alias no válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:95
+msgid "Syntax error: malformed alias identifier"
+msgstr "Error de sintaxis: identificador de alias mal formado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:102
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:196
+msgid "Stray ':' character: did you mean '...<namespace>::<alias_name>' ?"
+msgstr ""
+"Carácter ':' perdido: quería decir '...<namespace>::<nombre de alias>' ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:103
+msgid "Syntax error: malformed (alias?) command identifier"
+msgstr "Error de sintaxis: identificador (alias?) de comando mal formado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:280
+msgid "Unknown callback command \"%Q\""
+msgstr "Comando callback \"%Q\" desconocido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:465
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:44
+msgid "The current window is not a channel"
+msgstr "La ventana actual no es un canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:532
+msgid ""
+"Timer name omitted but there is not current timer (this is not a timer "
+"callback)"
+msgstr ""
+"Nombre de cronómetro omitido, pero no hay un cronómetro actual (esta no es "
+"la callback de un cronómetro)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:538
+msgid "Can't kill the timer '%Q' since it is not running"
+msgstr "No puedo parar el cronómetro '%Q' porque no está funcionando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:626
+#, fuzzy
+msgid "List of active timers"
+msgstr "usuarios activos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:637
+msgid "Persistent"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:640
+#, fuzzy
+msgid "WindowLifetime"
+msgstr "Lista de Ventanas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:643
+msgid "SingleShot"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:652
+#, fuzzy
+msgid "None"
+msgstr "(Nada)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:663
+#, c-format
+msgid "Total: %u timers running"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:849
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:872
+msgid "Found character '%q' (unicode %x) where a slash '/' was expected"
+msgstr ""
+"Se encontró el carácter '%q' (unicode %x) donde se esperaba una barra '/'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:842
+msgid ""
+"Unexpected end of command in binding operation, at least two slashes are "
+"missing"
+msgstr ""
+"Fin de comando inesperado en operación de asociación, faltan al menos dos "
+"barras (/)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:865
+msgid ""
+"Unexpected end of command in binding operation, at least one slash is missing"
+msgstr ""
+"Fin de comando inesperado en operación de asociación, falta al menos una "
+"barra (/)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:905
+msgid "Unknown binding operation '%Q'"
+msgstr "Operación de asociación desconocida '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:926
+msgid "Missing right side operand for the binding operator '=~'"
+msgstr ""
+"Falta la parte derecha del operando para el operador de asociación '=~'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:948
+msgid "Trailing garbage ignored after operator '++'"
+msgstr "Se ignoran los caracteres sobrantes después del operador '++'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:960
+msgid "Missing right operand for operator '+='"
+msgstr "Falta el operando de la derecha para el operador '+='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:979
+msgid "Trailing garbage ignored after operator '--'"
+msgstr "Se ignoran los caracteres sobrantes después del operador '--'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:986
+msgid ""
+"This looks a lot like an object handle dereferencing operator '->' but in "
+"fact it isn't. Maybe you forgot a '$' just after ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:994
+msgid "Missing right operand for operator '-='"
+msgstr "Falta el operando de la derecha para el operador '-='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1015
+msgid "Missing right operand for operator '<<='"
+msgstr "Falta el operando de la derecha para el operador '<<='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1025
+msgid "Missing right operand for operator '<<'"
+msgstr "Falta el operando de la derecha para el operador '<<'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1039
+msgid "Missing right operand for operator '<,'"
+msgstr "Falta el operando de la derecha para el operador '<,'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1053
+#, fuzzy
+msgid "Missing right operand for operator '<+'"
+msgstr "Falta el operando de la derecha para el operador '+='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1075
+msgid "Missing right operand for operator '>>='"
+msgstr "Falta el operando de la derecha para el operador '>>='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1094
+msgid "Missing right operand for operator '.='"
+msgstr "Falta el operando de la derecha para el operador '.='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1113
+msgid "Missing right operand for operator '"
+msgstr "Falta el operando de la derecha para el operador '"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:72
+msgid "Unknown operator"
+msgstr "Operador desconocido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1178
+msgid "Unexpected (and senseless) read-only data evaluation"
+msgstr "Evaluación de datos de solo lectura inesperada (y sin sentido)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1180
+msgid "Syntax error: confused by earlier errors: bailing out"
+msgstr "Error de sintaxis: confundido por errores anteriores: alucinando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1160
+msgid "Unexpected end of script after a variable reference: expected operator"
+msgstr ""
+"Fin de script inesperado después de una referencia a variable: se esperaba "
+"un operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1176
+msgid ""
+"Unexpected character '%q' (unicode %x) after a void function call: end of "
+"instruction expected"
+msgstr ""
+"Carácter inesperado '%q' (unicode %x) después de una llamada vacía a "
+"función: se esperaba fin de la instrucción"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1179
+msgid "Unexpected character '%q' (unicode %x)"
+msgstr "Carácter inesperado '%q' (unicode %x)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:96
+msgid "/me can be used only in channels, queries and DCC chat windows"
+msgstr "/me solo puede ser usado en canales, privados y ventanas DCC chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:385
+msgid "Invalid IRC url (%Q)"
+msgstr "url IRC no válida (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:410
+msgid "The commandline for this url type seems to be broken (%Q)"
+msgstr "La línea de comando para este tipo de url parece estar mal (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:412
+msgid "No commandline specified for this type of url (%Q)"
+msgstr "No se especificó línea de comando para este tipo de url (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:512
+msgid "Option setting error: Unknown option or invalid value for option type"
+msgstr ""
+"Error de configuración de la opción: opción desconocida o valor no válido "
+"para el tipo de opción"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:606
+msgid "Choose a file to parse"
+msgstr "Escoja un archivo a analizar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:639
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:643
+msgid "Failed to load the file '%Q' for parsing"
+msgstr "Falló la carga del archivo '%Q' para interpretar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:715
+msgid "Missing channel list"
+msgstr "Falta lista de canales"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:753
+#, c-format
+msgid "You don't appear to be on channel %s"
+msgstr "Usted no se encuentra en el canal %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:802
+#, fuzzy
+msgid "Module command call failed: can't load the module 'snd'"
+msgstr "Falló la llamada al comando del módulo: no puedo cargar el módulo '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:809
+#, fuzzy
+msgid ""
+"Module command call failed: the module 'snd' doesn't export a command named "
+"'play'"
+msgstr ""
+"Falló la llamada al comando del módulo: módulo '%Q' no exporta un comando "
+"llamado '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:864
+msgid "Popup %Q is not defined"
+msgstr "El menú emergente %Q no está definido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:872
+msgid "A popup menu cannot be popped up twice"
+msgstr "Un menú emergente no puede mostrarse dos veces"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:897
+msgid "Invalid syntax for screen coordinates, using cursor position"
+msgstr ""
+"Sintaxis no válida para coordenadas de pantalla, usando la posición del "
+"cursor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1011
+msgid "Empty target specified"
+msgstr "Se especificó un destino vacío"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:97
+msgid "[RAW]: %Q"
+msgstr "[PURO]:%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1237
+msgid "Window with id %Q not found: no rebinding performed"
+msgstr "Ventana con id %Q no encontrada: no se realizó la reasociación"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1330
+msgid "Failed to execute command '%Q'"
+msgstr "Fallo al ejecutar el comando '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:242
+msgid "Missing alias name"
+msgstr "Falta el nombre de alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:253
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:889
+msgid ""
+"Alias names can contain only letters, digits, underscores and '::' namespace "
+"separators"
+msgstr ""
+"Los nombres de alias solo pueden contener letras, dígitos, subrayados y "
+"separadores de espacios de nombres ('::')"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:903
+msgid ""
+"Stray ':' character in alias name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+"Se perdió el carácter ':' en el nombre de alias: quería decir...<namespace>::"
+"<nombre>?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:914
+msgid "Found an empty namespace in alias name"
+msgstr "Se encontró un espacio de nombres vacío en un nombre de alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:277
+msgid "The alias %Q is not existing"
+msgstr "El alias %Q no existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:436
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:413
+msgid "The specified window has no button containers"
+msgstr "La ventana especificada no tiene un contenedor para botones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:447
+msgid "Window button '%Q' not found"
+msgstr "Botón de ventana '%Q' no encontrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:445
+msgid "Can't find the icon '%Q'"
+msgstr "No pude encontrar el icono '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:532
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:540
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1197
+msgid "No such event (%Q)"
+msgstr "No existe el evento (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:552
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1222
+msgid "No handler '%Q' for raw numeric event '%d'"
+msgstr "No hay un manejador '%Q' para el evento numérico puro '%d'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1248
+msgid "No handler '%Q' for event '%Q'"
+msgstr "No hay manejador '%Q' para el evento '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:936
+msgid "The specified ping time is invalid: assuming zero (no ping)"
+msgstr ""
+"El tiempo especificado para ping no es válido: asumiendo cero (sin ping)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:946
+msgid "The specified maximum run time is invalid: assuming zero (infinite)"
+msgstr "El tiempo máximo de ejecución no es válido: asumiendo cero (infinito)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:965
+msgid "Failed to start the process"
+msgstr "Fallo al comenzar el proceso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1010
+msgid "The specified object does not exist"
+msgstr "El objeto especificado no existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1113
+msgid "Missing timer name"
+msgstr "Falta el nombre del cronómetro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1122
+msgid "Missing timeout delay"
+msgstr "Falta tiempo de expiración"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1129
+msgid "The timeout delay didn't evaluate to an integer"
+msgstr "El tiempo de expiración no se evaluó como un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1152
+msgid "Unable to add the timer: insufficient system resources"
+msgstr "Imposible añadir el cronómetro: recursos del sistema insuficientes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_eventmanager.cpp:503
+msgid "Event handler %Q is broken: disabling"
+msgstr "El manejador de evento %Q es erroneo: deshabilitando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_moduleinterface.cpp:166
+msgid "Can't unload the module: it has locked itself in memory"
+msgstr "No puedo descargar el módulo: se ha bloqueado a sí mismo en memoria"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:123
+msgid "Unknown binary operator '=%q': did you mean '==' ?"
+msgstr "Operador binario desconocido '=%q': querías decir '==' ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:221
+msgid "Unknown binary operator '%q'"
+msgstr "Operador binario desconocido '%q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:305
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:371
+msgid "Unexpected end of script in expression"
+msgstr "Final inesperado de script en una expresión"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:451
+msgid ""
+"Unexpected character %q (unicode %h) in expression. If it meant to be a "
+"string use the quotes."
+msgstr ""
+"Carácter inesperado %q (unicode %h) en expresión. Si pretende ser una cadena "
+"debería estar entre comillas."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:466
+#, fuzzy
+msgid "Unexpected empty expression operand"
+msgstr "Fin de expresión inesperada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:91
+msgid "say: injected commandline"
+msgstr "dice: línea de comando insertada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:94
+msgid "Say parse error: Broken command"
+msgstr "Dice error del analizador: comando erroneo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:250
+msgid ""
+"Couldn't find a suitable IRC context for the connection, try using -n or -u"
+msgstr ""
+"No puedo encontrar un contexto de IRC satisfactorio para la conexión, "
+"inténtalo usando -n o -u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:259
+msgid "Another connection is already in progress in the selected IRC context"
+msgstr ""
+"Ya se está realizando un intento de conexión desde el contexto IRC "
+"seleccionado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:369
+msgid "No menu bar item with text '%Q'"
+msgstr "No existe el elemento de menú con el texto '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:383
+msgid "Invalid index specified: ignored"
+msgstr "Se especificó un índice no válido: ignorado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:392
+msgid "The popup '%Q' is not defined"
+msgstr "El menú emergente '%Q' no está definido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:604
+msgid "No target channel specified and the current window is not a channel"
+msgstr ""
+"No se especificó un canal de destino y la ventana actual no es un canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:705
+msgid "No catalogue %Q for the current language found"
+msgstr "No se encontró un catálogo %Q para el lenguaje actual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:744
+msgid "The catalogue %Q was not loaded"
+msgstr "El catálogo %Q no fue cargado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:80
+msgid ""
+"Empty window identifier specified in the standard rebinding switch: no "
+"rebinding performed"
+msgstr ""
+"Se especificó un identificador de ventana vacío en el modificador estándar "
+"de reenlace: no se realizó el reenlace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:91
+msgid ""
+"Invalid window specified in the standard rebinding switch: no rebinding "
+"performed"
+msgstr ""
+"Se especificó un identificador de ventana no válido en el modificador "
+"estándar de reenlace: no se realizó el reenlace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:94
+msgid ""
+"The left side of the scope operator didn't evaluate as an object reference"
+msgstr ""
+"El lado izquierdo del operador de ámbito no se evalua como una referencia a "
+"un objeto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:100
+msgid ""
+"The left side of the scope operator evaluated to a null object reference"
+msgstr ""
+"El lado izquierdo del operador de ámbito se evaluó como una referencia a un "
+"objeto nulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:107
+msgid ""
+"The left side of the scope operator evaluated to an invalid object reference "
+"(object doesn't exist)"
+msgstr ""
+"El lado izquierdo del operador de ámbito se evaluó como una referencia a un "
+"objeto no válido (el objeto no existe)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayreferenceassert.cpp:77
+msgid "Array reference assert failed: the variable evaluated to type '%Q'"
+msgstr ""
+"Falló la comprobación de la referencia del array: la variable se evaluó como "
+"de tipo '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:247
+msgid "Operand of unary operator didn't evaluate to a number"
+msgstr "El operador unario no evalua a un número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:415
+msgid "Left operand didn't evaluate to a number"
+msgstr "El operando de la izquierda no es un número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:422
+msgid "Right operand didn't evaluate to a number"
+msgstr "El operando de la derecha no es un número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:547
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:575
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:583
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:374
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:66
+msgid "Division by zero"
+msgstr "Division por cero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:107
+#, c-format
+msgid "line %d, near character %d"
+msgstr "línea %d, cerca del carácter %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:187
+msgid "This command can be used only in windows bound to an IRC context"
+msgstr ""
+"Este comando solo puede ser usado en ventanas asociadas a un contexto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:193
+msgid "You're not connected to an IRC server"
+msgstr "No está conectado a un servidor IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:199
+msgid "Missing parameter"
+msgstr "Falta parámetro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:128
+msgid "Hash key evaluated to empty string: fix the script"
+msgstr "Clave hash evaluada a una cadena vacía: arregla el script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:99
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+"El argumento del subíndice {} no se evala como un hash: se proporciona "
+"conversión automática desde el tipo '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:144
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash automatic "
+"conversion from %Q supplied"
+msgstr ""
+"El argumento del subíndice {} no se evala como un hash, se proporciona "
+"conversión automática desde el tipo '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashreferenceassert.cpp:77
+msgid "Hash reference assert failed: the variable evaluated to type '%Q'"
+msgstr ""
+"Falló la verificación de la referencia hash: la variable se evaluó como de "
+"tipo '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:100
+msgid "Failed to send an unknown command as /raw"
+msgstr "Falló el envío de un comando desconocido como /raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:104
+msgid "Call to undefined command '%Q'"
+msgstr "Llamada a un comando sin definir '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:116
+msgid "Error in inner alias command call '%Q', called from this context"
+msgstr ""
+"Error en comando de llamada a alias interno '%Q', llamado desde este contexto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:74
+msgid "There are no extended scope variables in this scope"
+msgstr "No hay variables de ámbito extendido en este ámbito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:111
+msgid "Missing class name"
+msgstr "Falta el nombre de clase"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:120
+msgid "A class can't be a subclass of itself"
+msgstr "Una clase no puede ser una subclase de si misma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:127
+msgid "Couln't find base class named \"%Q\""
+msgstr "No puedo encontrar la clase base llamada \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:137
+msgid ""
+"Detected a loop in the inheritance tree of the base class \"%Q\": redefine "
+"that class first"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:146
+msgid "Can't override the builtin class \"%Q\""
+msgstr "No puedo sobrecargar la clase interna \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:71
+#, fuzzy
+msgid "Module command call failed: can't load the module '%Q': %Q"
+msgstr "Falló la llamada al comando del módulo: no puedo cargar el módulo '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:77
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a command named '%"
+"Q'"
+msgstr ""
+"Falló la llamada al comando del módulo: módulo '%Q' no exporta un comando "
+"llamado '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:113
+msgid "Broken condition in menu setup: assuming false"
+msgstr "Condición errónea en la configuración del menú: asumiendo falso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:220
+msgid "Broken icon parameter: ignoring"
+msgstr "Parámetro de icono erroneo: ignorando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:228
+msgid "Can't find the icon \"%Q\": ignoring"
+msgstr "No puedo encontrar el icono \"%Q\": ignorando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:244
+msgid "Broken text parameter: assuming empty string"
+msgstr "Parámetro de texto erroneo: asumiendo la cadena vacía"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:486
+msgid "Recursive definition detected for popup '%Q': ignoring"
+msgstr "Detectada definición recursiva para el menú emergente '%Q': ignorando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:500
+msgid "Can't find the external popup '%Q'; ignoring"
+msgstr "No puedo encontrar el menú emergente externo '%Q': ignorando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:853
+msgid "Broken prologue in popup menu '%Q': ignoring"
+msgstr "Prólogo erroneo en menú emergente '%Q': ignorando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:868
+msgid "Broken epilogue in popup menu '%Q': ignoring"
+msgstr "Epílogo erroneo en menú emergente '%Q': ignorando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:70
+#, fuzzy
+msgid "Module function call failed: can't load the module '%Q': %Q"
+msgstr ""
+"Falló la llamada a la función del módulo: no puedo cargar el módulo '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:77
+msgid ""
+"Module function call failed: the module '%Q' doesn't export a function named "
+"'%Q'"
+msgstr ""
+"Falló la llamada a la función del módulo: el módulo '%Q' no exporta una "
+"función llamada '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_timermanager.cpp:244
+msgid "Timer '%Q' has a broken callback handler: killing the timer"
+msgstr ""
+"El cronómetro '%Q' tiene un manejador de callback erroneo: matando el "
+"cronómetro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:229
+msgid "The target variable didn't evaluate to an integer or real value"
+msgstr "La variable destino no evala a un entero o un valor real"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:283
+msgid "The right side of operator '&=' didn't evaluate to an integer"
+msgstr "El lado derecho del operador '&=' no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:294
+msgid "The left side of operator '&=' didn't evaluate to an integer"
+msgstr "El lado izquierdo del operador '&=' no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:353
+msgid "The right side of operator '/=' didn't evaluate to a number"
+msgstr "El lado derecho del operador '/=' no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:364
+msgid "The left side of operator '/=' didn't evaluate to a number"
+msgstr "El lado izquierdo del operador '/=' no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:446
+msgid "The right side of operator '%=' didn't evaluate to a number"
+msgstr "El lado derecho del operador '%=' no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:457
+msgid "The left side of operator '%=' didn't evaluate to a number"
+msgstr "El lado izquierdo del operador '%=' no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:541
+msgid "The right side of operator '*=' didn't evaluate to a number"
+msgstr "El lado derecho del operador '*=' no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:552
+msgid "The left side of operator '*=' didn't evaluate to a number"
+msgstr "El lado izquierdo del operador '*=' no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:620
+msgid "The right side of operator '|=' didn't evaluate to an integer"
+msgstr "El lado derecho del operador '|=' no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:631
+msgid "The left side of operator '|=' didn't evaluate to an integer"
+msgstr "El lado izquierdo del operador '|=' no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:691
+msgid "The right side of operator '<<=' didn't evaluate to an integer"
+msgstr "El lado derecho del operador '<<=' no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:702
+msgid "The left side of operator '<<=' didn't evaluate to an integer"
+msgstr "El lado izquierdo del operador '<<=' no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:763
+msgid "The right side of operator '>>=' didn't evaluate to an integer"
+msgstr "El lado derecho del operador '>>=' no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:774
+msgid "The left side of operator '>>=' didn't evaluate to an integer"
+msgstr "El lado izquierdo del operador '>>=' no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:840
+msgid "The right side of operator '-=' didn't evaluate to a number"
+msgstr "El lado derecho del operador '-=' no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:851
+msgid "The left side of operator '-=' didn't evaluate to a number"
+msgstr "El lado izquierdo del operador '-=' no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:923
+msgid "The right side of operator '+=' didn't evaluate to a number"
+msgstr "El lado derecho del operador '+=' no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:934
+msgid "The left side of operator '+=' didn't evaluate to a number"
+msgstr "El lado izquierdo del operador '+=' no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1009
+msgid "The right side of operator '^=' didn't evaluate to an integer"
+msgstr "El lado derecho del operador '^=' no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1020
+msgid "The left side of operator '^=' didn't evaluate to an integer"
+msgstr "El lado izquierdo del operador '^=' no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1462
+msgid ""
+"The regular expression matched a zero-length substring: this is not valid in "
+"the s/// operator, skipping"
+msgstr ""
+"La expresión regular encontró una subcadena de longitud cero: eso no es "
+"válido en el operador s///, saltando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:52
+msgid "Unexpected end of script after '$' function call prefix"
+msgstr "Fin de script inesperado después del prefijo de llamada a función"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:53
+msgid "Unexpected character %q (unicode %x) after '$' function call prefix"
+msgstr ""
+"Carácter inesperado '%q' (unicode %x) después del prefijo de llamada a "
+"función '$'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:54
+msgid ""
+"Syntax error after '$' function call prefix. If you want to use a plain '$' "
+"in the code you need to escape it"
+msgstr ""
+"Error de sintaxis después del prefijo de llamada '$'. Si quieres usar un "
+"simple '$' en el código necesitas escaparlo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:63
+msgid "Invalid expression evaluation in object scope"
+msgstr "Evaluación no válida de la expresión en el ámbito del objeto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:78
+msgid "Invalid command evaluation in object scope"
+msgstr "Evaluación no válida del comando en el ámbito del objeto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:87
+msgid "Empty instruction block for command evaluation"
+msgstr "Bloque de instrucciones vacío para la evaluación del comando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:101
+msgid ""
+"Parameter identifiers are forbidden in object scope (after the '->' operator)"
+msgstr ""
+"Los identificadores de los parámetros están prohibidos en el ámbito del "
+"objeto (después del operador '->')"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:147
+msgid ""
+"Ending index of a multiple parameter identifier is lower or equal to the "
+"starting index. This will evaluate to a single parameter identifier."
+msgstr ""
+"El índice final de un identificador de parámetro múltiple es menor o igual "
+"que el índice de comienzo. Se evaluará como un identificador de parámetro "
+"simple."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:163
+msgid "Syntax error: invalid $$ ($this) function call in object scope"
+msgstr ""
+"Error de sintaxis: $$ ($this) llamada a función no válida en el ámbito del "
+"objeto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:189
+#, fuzzy
+msgid "Syntax error: malformed alias function call identifier"
+msgstr "Error de sintaxis: identificador de comando del módulo mal formado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:197
+#, fuzzy
+msgid "Syntax error: malformed (alias?) function call identifier"
+msgstr "Error de sintaxis: identificador de comando del módulo mal formado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:307
+#, c-format
+msgid "Invalid data type for parameter \"%s\""
+msgstr "Tipo de dato no válido apra el parámetro \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:122
+#, c-format
+msgid "found empty string where type '%s' was expected"
+msgstr "encontrada cadena vacía donde el tipo esperado era '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:129
+msgid "found string value \"%Q\" where type '%s' was expected"
+msgstr "encontrado el valor de cadena \"%Q\" donde se esperaba el tipo '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:134
+msgid "found type %Q where type '%s' was expected"
+msgstr "encontrado el tipo '%Q' donde se esperaba '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:154
+#, c-format
+msgid "Missing non-optional parameter \"%s\""
+msgstr "Falta parámetro obligatorio \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:282
+msgid "found empty string while a non empty one was expected"
+msgstr "encontrada cadena vacía cuando se esperaba una llena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:309
+#, c-format
+msgid "found signed integer \"%d\" where type 'unsigned integer' was expected"
+msgstr ""
+"encontrado entero con signo \"%d\" donde se esperaba de tipo 'unsigned "
+"integer'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:253
+msgid "This window has no associated IRC context"
+msgstr "Esta ventana no tiene contexto de IRC asociado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:483
+#, c-format
+msgid "No such IRC context (%u)"
+msgstr "No existe el contexto de IRC (%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:471
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:586
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:494
+msgid "This window is not associated to an IRC context"
+msgstr "Esta ventana no está asociada a un contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:809
+msgid ""
+"The specified format string wasn't accepted by the underlying system time "
+"formatting function"
+msgstr ""
+"El formato de cadena especificado no fue aceptado por la función de formateo "
+"de tiempo subyacente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:70
+msgid "Unterminated c-style multiline comment"
+msgstr "Comentario multilínea de estilo C sin terminar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:71
+msgid "Unexpected end of script in multiline comment"
+msgstr "Fin de script inesperado en comentario multilínea"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:88
+msgid ""
+"Unexpected character '%q' (unicode %x) after a slash (it is a typo or a "
+"malformed comment begin ?)"
+msgstr ""
+"Carácter inesperado '%q' (unicode %x) después de la barra (es un error o un "
+"comienzo de comentario mal puesto?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:71
+msgid "Call to undefined function '%Q'"
+msgstr "Llamada a la función sin definir '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:79
+msgid "Error in inner alias function call '%Q', called from this context"
+msgstr ""
+"Error en llamada a función interna de alias '%Q', llamada desde este contexto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:73
+msgid "Array index didn't evaluate to an integer"
+msgstr "Indice de un vector no puede evaluarse como un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:79
+msgid ""
+"Array index evaluated to a negative integer (non negative integer expected)"
+msgstr ""
+"Indice del vector evaluado como un entero negativo (se esperaba un entero no "
+"negativo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:106
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from %Q supplied"
+msgstr ""
+"El argumento del subíndice [] no evala a un array: se proporciona conversión "
+"automática desde %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:142
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+"El argumento del subíndice [] no evala a un array: se proporciona conversión "
+"automática desde el tipo %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:219
+msgid "Lag meter was not enabled"
+msgstr "Medidor de retraso no fue habilitado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:546
+#, fuzzy
+msgid "No such event handler (%Q) for event %Q"
+msgstr "No hay manejador '%Q' para el evento '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands.cpp:153
+msgid "This is not a channel"
+msgstr "Esto no es un canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:99
+#, fuzzy
+msgid ""
+"Unexpected end of command buffer while looking for the \"perl.end\" statement"
+msgstr "Fin de buffer inesperado mientras se buscaba el carácter ')' del 'for'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:147
+msgid "Trailing garbage at the end of the break command: ignored"
+msgstr "Caracteres sobrantes al final del comando break: ignorados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:209
+msgid "The 'unset' command needs a variable list"
+msgstr "El comando 'unset' necesita una lista de variables"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:280
+msgid "Found character %q (unicode %x) where a variable was expected"
+msgstr ""
+"Encontrado el carácter '%q' (unicode %x) donde se esperaba una variable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:219
+msgid "'unset' command used without a variable list"
+msgstr "El comando 'unset' se utilizó sin una lista de variables"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:279
+msgid "The 'global' command needs a variable list"
+msgstr "El comando 'global' necesita una lista de variables"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:631
+msgid "Found character %q (unicode %x) where an open parenthesis was expected"
+msgstr "Encontrado el carácter '%q' (unicode %x) donde se esperaba un '('"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:439
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:538
+msgid "Unexpected end of buffer in class definition"
+msgstr "Fin de buffer inesperado en definición de clase"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:474
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:501
+msgid "Found character %q (unicode %x) where a function name was expected"
+msgstr ""
+"Se encontró el carácter '%q' (unicode %x) donde se esperaba un nombre de "
+"función"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:522
+msgid "Unexpected end of buffer in function parameter list reminder"
+msgstr "Fin de buffer inesperado en lista de parámetros de la función"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:630
+#, fuzzy
+msgid "The while command needs an expression enclosed in parenthesis"
+msgstr "El comando 'while' necesita una expresión encerrada entre paréntesis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:654
+msgid ""
+"The last while command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+"El ltimo comando while en el buffer no tiene instrucciones condicionales: "
+"esto no tiene sentido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:655
+msgid ""
+"Unexpected end of script while looking for the instruction block of the "
+"while command"
+msgstr ""
+"Fin de script inesperado mientras se buscaba el bloque de instrucciones del "
+"comando while"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:741
+#, fuzzy
+msgid ""
+"Unexpected end of command after the 'do' command block: expected 'while' "
+"keyword"
+msgstr ""
+"Final de comando inesperado después de bloque de comando 'do': se esperaba "
+"el identificador while"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:743
+msgid "Found character %q (unicode %x) where a 'while' keyword was expected"
+msgstr ""
+"Encontrado el carácter %q (unicode %x) donde se esperaba la palabra clave "
+"'while'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:759
+#, fuzzy
+msgid ""
+"The 'while' block of the 'do' command needs an expression enclosed in "
+"parenthesis"
+msgstr ""
+"El bloque 'while' de un comando 'do' necesita una expresión encerrada entre "
+"paréntesis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:779
+msgid "Garbage string after the expression in 'do' command: ignored"
+msgstr "Cadena sobrante después de la expresión en el comando 'do': ignorada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:825
+#, fuzzy
+msgid "The 'if' command needs an expression enclosed in parenthesis"
+msgstr "El comando 'if' necesita una expresión encerrada entre paréntesis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:850
+msgid ""
+"The last if command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+"El ltimo comando 'if' en el buffer no tiene instrucciones condicionales: "
+"esto no tiene sentido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:851
+msgid ""
+"Unexpected end of script while looking for the instruction block of the if "
+"command"
+msgstr ""
+"Fin de script inesperado mientras se buscaba el bloque de instrucciones del "
+"comando 'if'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:966
+msgid ""
+"Unexpected end of buffer while looking for the closing ')' in the 'for' "
+"command"
+msgstr "Fin de buffer inesperado mientras se buscaba el carácter ')' del 'for'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1015
+#, fuzzy
+msgid "The 'for' command needs an expression enclosed in parenthesis"
+msgstr "El comando 'for' necesita una expresión encerrada entre paréntesis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1092
+msgid ""
+"Found char %q (unicode %x) while looking for the terminating ')' in 'for' "
+"command"
+msgstr ""
+"Se encontró el carácter %q (unicode %x) mientras se buscaba el terminador "
+"')' para el 'for'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1122
+msgid "Empty infinite 'for' loop: fix the script"
+msgstr "Bucle 'for' infinito: arregla el script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1181
+#, fuzzy
+msgid "The 'foreach' command needs an expression enclosed in parenthesis"
+msgstr "El comando 'foreach' necesita una expresión encerrada entre paréntesis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1205
+msgid ""
+"The 'foreach' command expects a writeable iteration variable as first "
+"parameter"
+msgstr ""
+"El comando 'foreach' espera una variable de iteración modificable como "
+"primer parámetro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1196
+msgid ""
+"Found character '%q' (unicode %x) where '%' or '$' was expected: see /help "
+"foreach for the command syntax"
+msgstr ""
+"Encontrado carácter '%q' (unicode %x) donde se esperaba '%' o '$': consulta /"
+"help foreach para ver la sintaxis del comando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1207
+msgid "Unexpected function call as 'foreach' iteration variable"
+msgstr "Llamada inesperada a función como variable de iteración 'foreach'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1209
+msgid "Unexpected read-only variable as 'foreach' iteration variable"
+msgstr ""
+"Variable de solo lectura inesperada como variable de iteración 'foreach'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1219
+msgid ""
+"Unexpected end of 'foreach' parameters: at least one iteration data argument "
+"must be given"
+msgstr ""
+"Fin inesperado de parámetros 'foreach': debe proporcionarse al menos un "
+"argumento de datos de iteración"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1223
+msgid ""
+"The 'foreach' command expects a comma separated list of iteration data items "
+"after the first parameter"
+msgstr ""
+"El comando 'foreach' espera una lista de elementos de iteración separados "
+"por comas después del primer parámetro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1244
+#, fuzzy
+msgid ""
+"Found empty 'foreach' execution block: maybe you need to fix your script ?"
+msgstr "Bloque de ejecución vacío para 'foreach': arregla el script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1365
+#, fuzzy
+msgid "The 'switch' command needs an expression enclosed in parenthesis"
+msgstr "El comando 'switch' necesita una expresión encerrada entre paréntesis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1415
+msgid "Unexpected end of buffer in switch condition block"
+msgstr "Fin de buffer inesperado en bloque condicional switch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1422
+msgid ""
+"Found character %q (unicode %x) where a 'case','match','regexp','default' or "
+"'break' label was expected"
+msgstr ""
+"Encontrado carácter %q (unicode %x) donde se esperaba un 'case', 'regexp', "
+"'default' o 'break'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1460
+msgid ""
+"Found 'break' label where a 'case','match','regexp' or 'default' label was "
+"expected"
+msgstr ""
+"Encontrada una etiqueta 'break' donde se esperaba una etiqueta 'case', "
+"'match, 'regexp', o 'default'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1465
+msgid ""
+"Found token '%Q' where a 'case','match','regexp','default' or 'break' label "
+"was expected"
+msgstr ""
+"Encontrado el identificador '%Q' donde se esperaba un 'case', 'match', "
+"'regexp', 'default' o 'break'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1528
+msgid "Senseless empty switch command: fix the script"
+msgstr "Comando switch vacío no tiene sentido: arregla el script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1562
+msgid "Unexpected end of buffer in defpopup block"
+msgstr "Fin de buffer inesperado en bloque defpopup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1569
+msgid ""
+"Found character %q (unicode %x) where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+"Encontrado carácter %q (unicode %x) donde se esperaba una etiqueta "
+"'prologue', 'separator', 'label', 'popup', 'item', 'extpopup' o 'epilogue'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1668
+#, fuzzy
+msgid "Found empty prologue block: maybe you need to fix the script?"
+msgstr "Prólogo de bloque vacío sin sentido: arregla el script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1670
+#, fuzzy
+msgid "Found empty epilogue block: maybe you need to fix the script?"
+msgstr "Epílogo de bloque vacío sin sentido: arregla el script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1703
+msgid ""
+"Unexpected empty <text> field in label parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Campo <texto> vacío inesperado en parámetros de etiqueta. Ver /help defpopup "
+"para conocer la sintaxis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1753
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1801
+msgid ""
+"Unexpected empty <text> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Campo <texto> vacío inesperado en parámetros de extpopup. Ver /help defpopup "
+"para conocer la sintaxis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1777
+#, fuzzy
+msgid ""
+"Found empty instruction for popup item: maybe you need to fix the script?"
+msgstr "Instrucción vacía para elemento de popup: arregla el script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1809
+msgid ""
+"Unexpected empty <name> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Campo <nombre> vacío inesperado en parámetros de extpopup. Ver /help "
+"defpopup para conocer la sintaxis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1821
+msgid ""
+"Found token '%Q' where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+"Encontrado identificador '%Q' donde se esperaba una etiqueta 'prologue', "
+"'separator', 'label', 'popup', 'item', 'extpopup' o 'epilogue'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1931
+#, fuzzy
+msgid "The 'defpopup' command needs an expression enclosed in parenthesis"
+msgstr ""
+"El comando 'defpopup' necesita una expresión encerrada entre paréntesis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:109
+msgid "beginning of input"
+msgstr "comienzo de la entrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:121
+msgid ""
+"Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %s"
+"\" for the command syntax"
+msgstr ""
+"Encontrado el carácter '%q' (unicode 0x%x) donde se esperaba '%c': mira \"/"
+"help %s\" para la sintaxis de los comandos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:124
+#, c-format
+msgid ""
+"Found end of input where character '%c' was expected: see \"/help %s\" for "
+"the command syntax"
+msgstr ""
+"Encontrado el final de la entrada donde se esperaba el carácter '%c': mira "
+"\"/help %s\" para la sintaxis del comando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:197
+msgid "Empty script"
+msgstr "Script vacío"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2650
+msgid ""
+"Syntax error after '%' variable prefix. If you want to use a plain '%' in "
+"the code you need to escape it"
+msgstr ""
+"Error de sintaxis para el prefijo de variable '%'. Si quieres usar un simple "
+"'%' en el código necesitas escaparlo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2667
+msgid "Objects have no extended scope variables"
+msgstr "Los objetos no tienen variables de ámbito extendido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2727
+msgid "Found character '%q' (unicode %x) where an instruction was expected"
+msgstr ""
+"Se encontró el carácter '%q' (unicode %x) donde se esperaba una instrucción"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2760
+msgid "Unterminated instruction block"
+msgstr "Bloque de instrucciones sin terminar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2761
+msgid "Unexpected end of script in instruction block (missing closing brace)"
+msgstr ""
+"Fin de script inesperado en bloque de instrucciones (falta llave de cierre)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2838
+msgid ""
+"The dash after a command should be followed by a letter (switch), by a digit "
+"(negative number) or be escaped"
+msgstr ""
+"La barra después de un comando debería ser seguida por una letra "
+"(modificador), un dígito (número negativo) o ser escapado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2842
+msgid "Unexpected character '%q' (unicode %x) after a switch dash"
+msgstr "Carácter inesperado '%q' (unicode %x) después de barra de cambio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2844
+msgid "Unexpected end of script after a switch dash"
+msgstr "Fin de script inesperado después de una barra de cambio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2869
+msgid ""
+"The above problem might be related to the switch dash and the following "
+"equal sign"
+msgstr ""
+"El problema anterior puede estar relacionado con la barra de cambio y el "
+"signo igual que le sigue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2948
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3016
+msgid "Unexpected end of script in parameter list"
+msgstr "Fin de script inesperado en lista de parámetros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2954
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3022
+msgid "Unexpected end of line in parameter list"
+msgstr "Fin de línea inesperado en lista de parámetros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3083
+msgid ""
+"Nested character %q corresponding to expected terminator, this might confuse "
+"me a bit: it is a good idea to enclose it in quotes"
+msgstr ""
+"Carácter anidado %q correspondiente al terminador esperado, esto puede "
+"confundirme un poco: es una buena idea encerrarlo entre comillas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3093
+msgid "Skipping nested terminator character %q"
+msgstr "Saltando carácter terminador anidado %q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3120
+msgid "Stray backslash at the end of the script"
+msgstr "Barra atrás perdida al final del script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3393
+msgid "Unterminated hash key"
+msgstr "Clave hash sin terminar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3387
+msgid "Unexpected end of script in hash key (missing '}' character ?)"
+msgstr "Fin de script inesperado en clave hash (falta el carácter '}'?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3394
+msgid ""
+"Unexpected end of line in hash key (missing '}' character or unescaped "
+"newline)"
+msgstr ""
+"Fin de línea inesperado en clave hash (falta el carácter '}' o una nueva "
+"línea sin escapar)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3679
+msgid "Unterminated string constant"
+msgstr "Constante de cadena sin terminar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3673
+msgid "Unexpected end of script in string constant (missing \" character ?)"
+msgstr ""
+"Fin de script inesperado en constante de cadena (falta el carácter \"?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3680
+msgid ""
+"Unexpected end of line in string constant (missing \" character or unescaped "
+"newline)"
+msgstr ""
+"Fin de línea inesperado en constante de cadena (falta el carácter \" o una "
+"nueva línea sin escapar)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_processmanager.cpp:225
+msgid "Error triggered from process callback handler: killing process"
+msgstr ""
+"Error lanzado desde el proceso de manejo de la callback: matando el proceso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arraycount.cpp:72
+msgid ""
+"The argument of the array count '#' operator didn't evaluate to an array: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+"El argumento del operador contador del array '#' no se evala como un array: "
+"se proporciona conversión automática desde el tipo '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:197
+msgid "This window has no associated IRC context and is not a DCC chat"
+msgstr "Esta ventana no tiene contexto de IRC asociado y no es un DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:293
+msgid "Class \"%Q\" is not defined"
+msgstr "La clase \"%Q\" no está definida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:303
+msgid "The specified parent object does not exist"
+msgstr "Se ha especificado un objeto padre que no existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:430
+msgid "There is no option named '%Q'"
+msgstr "No existe la opción llamada '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:85
+msgid "Internal error: pure virtual evaluateReadOnly called"
+msgstr "Error interno: se llamó al método virtual puro evaluateReadOnly"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:91
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:104
+msgid ""
+"Internal error: trying to evaluate as read-write a read-only data location"
+msgstr ""
+"Error interno: intentando evaluar una posición de datos de solo lectura como "
+"de lectura-escritura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:98
+msgid "Internal error: pure virtual evaluateReadOnlyInObjectScope called"
+msgstr ""
+"Error interno: se llamó al método virtual puro evaluateReadOnlyInObjectScope"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:215
+msgid "[KVS]%c Warning: %Q"
+msgstr "[KVS]%c Aviso: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:211
+msgid "[KVS]%c Compilation Error: %Q"
+msgstr "[KVS]%c Error de Compilación: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:219
+msgid "[KVS]%c Runtime Error: %Q"
+msgstr "[KVS]%c Error de Ejecución: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:224
+msgid "[KVS] in script context \"%Q\""
+msgstr "[KVS] en el contexto del script \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:226
+msgid "[KVS] in script context \"%Q\", %Q"
+msgstr "[KVS] en el contexto del script \"%Q\", %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:233
+msgid "[KVS] Code listing:"
+msgstr "[KVS] Listado del código:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:238
+msgid "[KVS] Window:"
+msgstr "[KVS] Ventana:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:242
+#, c-format
+msgid "[KVS] Destroyed window with pointer %x"
+msgstr "[KVS] Destruida ventana con puntero %x"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:246
+msgid "[KVS] Call stack:"
+msgstr "[KVS] Pila de llamadas:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:464
+#, c-format
+msgid "Window with ID '%s' not found, returning empty string"
+msgstr "Ventana con ID '%s' no encontrada, devolviendo la cadena vacía"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:130
+msgid "The specified window is not a channel"
+msgstr "La ventana especificada no es un canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:392
+msgid "The $sw() function can be used only in aliases"
+msgstr "La función $sw() solo puede usarse con alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:302
+msgid "Invalid pitch value: using default"
+msgstr "Tono no válido: usando tono por defecto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:312
+msgid "Invalid duration value: using default"
+msgstr "Duración de tono no válida: usando duración por defecto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:421
+#, fuzzy
+msgid "No button with type %Q named %Q"
+msgstr "No hay un botón del tipo %s llamado %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:632
+msgid "Can't delete a null object reference"
+msgstr "No puedo borrar una referencia a un objeto nulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:638
+msgid "Can't delete an inexisting object"
+msgstr "No puedo borrar un objeto inexistente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:692
+msgid "Inexisting popup \"%Q\""
+msgstr "Menú emergente \"%s\" inexistente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:698
+msgid ""
+"Popup menu self-modification is not allowed (the popup is probably open)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:705
+#, fuzzy
+msgid "The menu item with id \"%Q\" does not exist in popup \"%Q\""
+msgstr "El elemento con id \"%s\" no existe en el menú emergente con id \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:860
+msgid ""
+"The argument of the -w switch did not evaluate to a valid window id: using "
+"default"
+msgstr ""
+"El argumento del indicador -w no evala a un id válido de ventana: usando el "
+"valor por defecto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:869
+msgid ""
+"The argument of the i switch did not evaluate to a number: using default"
+msgstr ""
+"El argumento del indicador i no evala a un número: usando valor por defecto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:981
+msgid "Invalid color-set specification, using default"
+msgstr ""
+"Especificación de conjunto de colores no válida, usando el valor por defecto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:992
+#, c-format
+msgid "Window '%s' not found, using current one"
+msgstr "Ventana '%s' no encontrada, usando la actual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:78
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a callback "
+"command named '%Q'"
+msgstr ""
+"Falló la llamada al comando del módulo: el módulo '%Q' no exporta un comando "
+"de callback llamado '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp:401
+#, c-format
+msgid "The popup '%s' is actually locked: 'self-modifications' are not allowed"
+msgstr ""
+"El menú emergente '%s' está bloqueado: las 'automodificaciones' no están "
+"permitidas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:822
+#, fuzzy, c-format
+msgid "Ignoring DCC from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "Ignorando PRIVMSG de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:839
+#, fuzzy, c-format
+msgid "Ignoring CTCP from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "Ignorando PRIVMSG de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:978
+msgid "The following CTCP reply has unrecognized target %Q"
+msgstr "La siguiente respuesta CTCP tiene un destino no reconocido %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1025
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1128
+msgid "Channel CTCP"
+msgstr "CTCP de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:988
+#, fuzzy
+msgid "%Q %Q reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "%Q %S respuesta de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1018
+msgid "The following CTCP request has unrecognized target %Q"
+msgstr "La siguiente petición CTCP tiene un destino no reconocido %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1032
+#, fuzzy
+msgid ""
+"%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignored (flood limit "
+"exceeded)"
+msgstr ""
+"Petición %Q %S de \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignorada (límite de "
+"saturación excedido)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1036
+msgid "ignored (unrecognized)"
+msgstr "ignorada (no reconocida)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "ignored"
+msgstr "ignorada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "replied"
+msgstr "respondida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1041
+#, fuzzy
+msgid "%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+msgstr "petición %Q %S de \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1079
+msgid "The following CTCP PING reply has unrecognized target \"%Q\""
+msgstr "La siguiente respuesta CTCP PING tiene un destino no reconocido \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1113
+#, c-format
+msgid ""
+"The following CTCP PING reply has a broken time identifier \"%S\", don't "
+"trust the displayed time"
+msgstr ""
+"La siguiente respuesta CTCP PING tiene un identificador temporal erroneo \"%S"
+"\", no confíe en el tiempo mostrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1132
+msgid "%Q PING reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sec %u msec"
+msgstr "Respuesta PING %Q de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u segs %u msegs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1466
+msgid "The following CTCP ACTION has unrecognized target %Q"
+msgstr "El siguiente CTCP ACTION tiene un destino no reconocido %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1471
+msgid "CTCP ACTION from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "CTCP ACTION de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1517
+msgid "Unable to add file offer for file %Q (File not readable?)"
+msgstr ""
+"No puedo añadir un ofrecimiento de archivo para %Q (Archivo no legible?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1521
+msgid "Added %d sec file offer for file %Q (%Q) to recipient %Q"
+msgstr "Añadido ofrecimiento de %d segs del archivo %Q (%Q) al receptor %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "private"
+msgstr "privado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "channel notification:"
+msgstr "notificación de canal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1579
+msgid "notification"
+msgstr "notificación"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1584
+msgid "%Q unsets avatar"
+msgstr "%Q quita avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1591
+msgid "%Q changes avatar to %s"
+msgstr "%Q cambia el avatar a %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1637
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (HTTP GET %s)"
+msgstr ""
+": No hay copia local válida del avatar disponible, pidiendo uno (HTTP GET %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1644
+msgid ""
+": No valid local copy of avatar available; failed to start an HTTP transfer, "
+"ignoring"
+msgstr ""
+": No hay copia local válida del avatar disponible; falló el comienzo de una "
+"transferencia HTTP, ignorando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1652
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (DCC GET %s)"
+msgstr ""
+": No hay disponible una copia local válida del avatar, pidiendo una (DCC GET "
+"%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1664
+msgid ""
+": No valid local copy of avatar available; flood limit exceeded, ignoring"
+msgstr ""
+": No hay disponible una copia local válida avatar; límite de saturación "
+"excedido: ignorando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1669
+msgid ": No valid local copy of avatar available, ignoring"
+msgstr ": No hay disponible una copia local válida del avatar, ignorando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1677
+msgid ": No such nickname in the user database, ignoring the change"
+msgstr ""
+": No existe tal nick en la base de datos de usuarios, ignorando el cambio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1717
+#, fuzzy
+msgid "Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S)"
+msgstr "Ignorando la petición DCC %S de \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%S %S)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1759
+#, fuzzy
+msgid "Processing DCC %Q request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s)"
+msgstr ""
+"Procesando petición DCC %Q solicitada desde \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%S %"
+"S)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1770
+#, c-format
+msgid "Unable to process the above request: Cannot load DCC module (%s)"
+msgstr ""
+"Incapaz de procesar la petición anterior: no pude cargar el módulo DCC (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1776
+msgid "Unable to process the above request: DCC module may be broken"
+msgstr ""
+"Incapaz de procesar la petición anterior: el módulo DCC puede estar roto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:132
+msgid ""
+"[Server parser]: Encountered problems while parsing the following message:"
+msgstr ""
+"[Parser de Servidor]: Se encontraron problemas mientras se analizaba el "
+"siguiente mensaje:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:134
+msgid "[Server parser]: [%s][%s] %Q"
+msgstr "[Parser de servidor]: [%s][%s] %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:136
+#, c-format
+msgid "[Server parser]: %s"
+msgstr "[Parser de servidor]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:98
+#, fuzzy
+msgid "Received ping from \r!s\r%Q\r (PING %Q), replied pong"
+msgstr "Recibido ping de \r!s\r%s\r (PING %s), respondido pong"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:125
+#, c-format
+msgid "Received pong from \r!s\r%s\r (PONG %s)"
+msgstr "Recibido pong de \r!s\r%s\r (PONG %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:151
+msgid "Server ERROR: %Q"
+msgstr "ERROR de Servidor: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:174
+msgid "Missing channel parameter in join message"
+msgstr "Falta parámetro de canal en mensaje JOIN"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:209
+msgid "Received a join message for an unknown channel, possible desync"
+msgstr "Recibido un mensaje JOIN de un canal desconocido, posible desync?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:305
+#, fuzzy
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r [implicit +%c umode change]"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] se ha unido a \r!c\r%Q\r [cambio de modo-u "
+"implícito +%c]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:310
+#, fuzzy
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] se ha unido a \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:324
+#, fuzzy
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] se acaba de unir a \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:355
+msgid "Received a part message for an unknown channel, possible desync"
+msgstr "Recibido un mensaje PART de un canal desconocido, posible desync?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:384
+msgid "You have left channel \r!c\r%Q\r"
+msgstr "Has abandonado el canal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:386
+msgid "You have left channel \r!c\r%Q\r: %Q"
+msgstr "Has abandonado el canal \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:402
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] ha abandonado \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:406
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] ha abandonado \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:420
+#, fuzzy
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] se acaba de marchar \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:424
+#, fuzzy
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] se acaba de marchar \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:494
+#, c-format
+msgid "Netsplit detected: %s"
+msgstr "Netsplit detectado: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:546
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:562
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] se ha marchado del IRC: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:589
+msgid "Received a kick message for an unknown channel, possible desync"
+msgstr ""
+"Recibido un mensaje de expulsión de un canal desconocido, posible desync?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:626
+msgid "You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Has sido expulsado de \r!c\r%Q\r por \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:633
+msgid "Attempting to rejoin \r!c\r%Q\r..."
+msgstr "Intentando volver a entrar \r!c\r%Q\r..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:670
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@"
+"\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] ha sido expulsado de \r!c\r%Q\r por \r!n\r%Q\r [%"
+"Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:682
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just been kicked from \r!c\r%Q\r by \r!n\r%Q"
+"\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] acaba de ser expulsado de \r!c\r%Q\r por \r!n\r%Q"
+"\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:710
+#, fuzzy
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+"El siguiente mensaje parece estar cifrado, pero el motor de cifrado falló al "
+"decodificarlo: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:776
+#, fuzzy
+msgid "Ignoring query-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Ignorando PRIVMSG de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:843
+msgid ""
+"Spam privmsg from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%s\")"
+msgstr ""
+"PRIVMSG spam de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (palabra-spam coincidente \"%s"
+"\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:984
+#, fuzzy
+msgid "Ignoring channel-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Ignorando PRIVMSG de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1106
+#, fuzzy
+msgid "Ignoring Notice from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Ignorando PRIVMSG de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1159
+msgid "NickServ requests authentication, executing scheduled command"
+msgstr "NickServ pide autentificación, ejecutando comando programado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1162
+msgid ""
+"The scheduled NickServ identification command appears to be broken, please "
+"change the setting"
+msgstr ""
+"El comando de identificación NickServ programado parece ser incorrecto, por "
+"favor cambia la configuración"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1213
+msgid ""
+"Spam notice from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%Q\")"
+msgstr ""
+"Noticia spam de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (palabra-spam coincidente \"%Q"
+"\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1394
+msgid "Received a topic message for an unknown channel, possible desync"
+msgstr "Recibido un mensaje de tema de un canal desconocido, posible desync?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1413
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has changed topic to \"%Q%c\""
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] ha cambiado el tema a \"%Q%c\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1512
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] se conoce ahora como \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1063
+msgid "You have changed your nickname to %Q"
+msgstr "Has cambiado tu nick a %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1477
+msgid ""
+"The target of this query was lost and has been found when \r!n\r%Q\r [%Q@\r!h"
+"\r%Q\r] changed his nickname to \r!n\r%Q\r"
+msgstr ""
+"El destino de este privado se perdió y ha sido encontrado cuando \r!n\r%Q\r "
+"[%Q@\r!h\r%Q\r] cambió su nick a \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1486
+msgid ""
+"The recent nickname change from \r!n\r%Q\r to \r!n\r%Q\r caused a query "
+"collision: merging output"
+msgstr ""
+"El nick cambió de \r!n\r%Q\r a \r!n\r%Q\r y causó una colisión de privados: "
+"mezclando la salida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1495
+msgid "End of merged output"
+msgstr "Final de salida mezclada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1540
+#, fuzzy
+msgid "Ignoring invite from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "Ignorando PRIVMSG de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "autojoining"
+msgstr "autoentrando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "double-click the channel name to join"
+msgstr "pulse dos veces en el nombre del canal para entrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1556
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] invites you to channel \r!c\r%Q\r (%Q)"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] te invita al canal \r!c\r%Q\r (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1564
+msgid "Received an invite message directed to another nick, possible desync"
+msgstr "Recibido un mensaje INVITE dirigido a otro nick, posible desync"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1584
+msgid "WALLOPS from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "WALLOPS de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1648
+#, c-format
+msgid "You have set user mode %s"
+msgstr "Tiene puesto el modo de usuario %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1655
+msgid "Received a mode change for an unknown channel, possible desync"
+msgstr "Recibido un cambio de modo de un canal desconocido, posible desync?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1731
+msgid "%Q [%Q@%Q] has set channel key to \"\r!m-k\r%Q\r\""
+msgstr "%Q [%Q@%Q] ha cambiado la clave del canal a \"\r!m-k\r%Q\r\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1734
+msgid "%Q [%Q@%Q] has unset the channel key"
+msgstr "%Q [%Q@%Q] ha quitado la clave del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1754
+msgid "%Q [%Q@%Q] has set channel \r!m-l\rlimit to %Q\r"
+msgstr "%Q [%Q@%Q] ha puesto el límite del canal \r!m-l\ra %Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1757
+msgid "%Q [%Q@%Q] has unset the channel limit"
+msgstr "%Q [%Q@%Q] ha quitado el límite del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1779
+msgid "%Q [%Q@%Q] has set mode %c%c \r!n\r%Q\r"
+msgstr "%Q [%Q@%Q] ha puesto el modo %c%c \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1787
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1834
+msgid "%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"
+msgstr "%Q [%Q@%Q] ha puesto el modo del canal \r!m%c%c\ra %c%c\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1819
+msgid "%Q [%Q@%Q] has set mode %c%c \r!m%c%c\r%Q\r"
+msgstr "%Q [%Q@%Q] ha puesto el modo %c%c \r!m%c%c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1860
+msgid "%Q [%Q@%Q] has set mode %s %Q"
+msgstr "%Q [%Q@%Q] ha puesto el modo %s %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1863
+msgid "%Q [%Q@%Q] has set channel mode %s"
+msgstr "%Q [%Q@%Q] ha puesto el modo de canal %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:147
+#, c-format
+msgid ""
+"One or more standard mode flags are missing in the server available modes.\n"
+"This is caused either by a non RFC1459-compliant IRC daemon or a broken "
+"server reply.\n"
+"Server umodes seem to be '%s' and channel modes seem to be '%s'.\n"
+"Ignoring this reply and assuming that the basic set of modes is available.\n"
+"If you have strange problems, try changing the server."
+msgstr ""
+"Faltan uno o más flags estándar en los modos disponibles del servidor.\n"
+"Esto puede deberse a un servidor IRC no compatible con la RFC-1459 o a "
+"unarespuesta erronea del servidor.\n"
+"Los modos del servidor parecen ser '%s' y los modos de canal '%s'.\n"
+"Se ignora esta respuesta y se asume que está disponible el conjunto básico "
+"de modos.\n"
+"Si tienes problemas extraños, prueba a cambiar de servidor."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:159
+msgid "Available user modes:"
+msgstr "Modos de usuario disponibles:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:169
+msgid ": Unknown user mode"
+msgstr ": Modo de usuario desconocido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:177
+msgid "Available channel modes:"
+msgstr "Modos de canal disponibles:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:197
+msgid "Server %Q version %S supporting user modes '%S' and channel modes '%S'"
+msgstr ""
+"Servidor %Q versión %S soportando modos de usuario '%S' y modos de canal '%S'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:244
+msgid "This server supports the WATCH notify list method, it will be used"
+msgstr ""
+"Este servidor soporta el método de lista de notificación WATCH: voy a usarlo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:262
+msgid "The current network is %Q"
+msgstr "La red actual es %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:303
+msgid "This server supports the CODEPAGE command, it will be used"
+msgstr "Este servidor soporta el comando CODEPAGE, y será usado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:319
+#, c-format
+msgid "This server supports: %s"
+msgstr "El servidor soporta: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:375
+msgid "End of NAMES for \r!c\r%Q\r"
+msgstr "Fin de NAMES para \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:472
+msgid "Names for \r!c\r%Q\r: %Q"
+msgstr "Nombres para \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:487
+msgid "(unknown)"
+msgstr "(desconocido)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:491
+msgid "Channel topic is: %Q"
+msgstr "El tema del canal es: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:498
+msgid "Topic for \r!c\r%Q\r is: %Q"
+msgstr "El tema para \r!c\r%Q\r es: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:516
+msgid "No channel topic is set"
+msgstr "No se ha puesto tema de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:521
+msgid "No topic is set for channel \r!c\r%Q\r"
+msgstr "No se ha puesto tema para el canal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:560
+#, fuzzy
+msgid "Topic was set by %Q on %Q"
+msgstr "El tema fue puesto por \r!n\r%Q\r!%Q@\r!h\r%Q\r el %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:561
+#, fuzzy
+msgid "Topic was set by %Q"
+msgstr "El tema fue puesto por \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:569
+#, fuzzy
+msgid "Topic for \r!c\r%Q\r was set by %Q on %Q"
+msgstr "El tema para \r!c\r%Q\r fue puesto por \r!n\r%Q\r!%Q@\r!h\r%Q\r el %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:572
+#, fuzzy
+msgid "Topic for \r!c\r%Q\r was set by %Q"
+msgstr "El tema para \r!c\r%Q\r es: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:592
+msgid "Channel mode for \r!c\r%Q\r is %s"
+msgstr "El modo de canal para \r!c\r%Q\r es %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:595
+msgid "User mode for \r!n\r%Q\r is %s"
+msgstr "Modo de usuario para \r!n\r%Q\r es %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:631
+msgid "End of channel %Q for \r!c\r%Q\r"
+msgstr "Fin del canal %Q para \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:635
+msgid "ban list"
+msgstr "lista de prohibidos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:636
+msgid "invite list"
+msgstr "lista de invitados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:637
+msgid "ban exception list"
+msgstr "lista de excepciones a prohibiciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:658
+msgid "%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"
+msgstr "%Q para \r!c\r%Q\r: \r!m-%c\r%Q\r (puesto por %Q el %Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:665
+msgid "Ban listing"
+msgstr "Lista de prohibidos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:668
+msgid "Invite listing"
+msgstr "Lista de invitados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:671
+msgid "Ban exception listing"
+msgstr "Listado de excepciones a prohibiciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:740
+msgid ""
+"WHO entry for %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cChannel%c: \r!c\r%Q\r, %"
+"cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAway%c: %Q, %cReal name"
+"%c: %Q"
+msgstr ""
+"Entrada WHO para %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cCanal%c: \r!c\r%Q\r, %"
+"cServidor%c: \r!s\r%Q\r, %cSaltos%c: %d, %cFlags%c: %Q, %cAusentes%c: %Q, %"
+"cNombre real%c: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:797
+msgid "End of WHO list for %Q"
+msgstr "Fin de lista WHO para %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:856
+msgid ""
+"Something really weird is happening: the server is refusing all the login "
+"nicknames..."
+msgstr ""
+"Está sucediendo algo realmente malo: el servidor rechaza todos los nicks de "
+"entrada..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:861
+msgid ""
+"The server is refusing all the login nicknames: giving up, you must send the "
+"nickname manually"
+msgstr ""
+"El servidor está rechazando todos los nicks de entrada: en adelante, debes "
+"enviar el nick de forma manual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:871
+msgid "No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."
+msgstr ""
+"No hay forma de autentificarse como '\r!n\r%Q\r' (%d: %Q), intentando '%Q'..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:945
+msgid "Command syntax %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:973
+#, fuzzy
+msgid "Tip: %Q"
+msgstr "Lista: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:976
+#, fuzzy
+msgid "Tip for %Q: %Q"
+msgstr "El tema para \r!c\r%Q\r es: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:993
+#, fuzzy
+msgid "End of help about %Q"
+msgstr "Fin de lista WHO para %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1037
+msgid "%c\r!n\r%Q\r%c is away: %Q"
+msgstr "%c\r!n\r%Q\r%c está ausente: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1090
+msgid "%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "%c\r!n\r%Q\r%c es %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1095
+msgid "%c\r!n\r%Q\r%c's real name: %Q"
+msgstr "%c\r!n\r%Q\r%c's nombre real: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1115
+msgid "%c\r!n\r%Q\r%c was %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "%c\r!n\r%Q\r%c era %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1119
+msgid "%c\r!n\r%Q\r%c's real name was: %Q"
+msgstr "%c\r!n\r%Q\r%c's el nombre real era: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1183
+msgid "%c\r!n\r%Q\r%c's channels: %Q"
+msgstr "%c\r!n\r%Q\r%c's canales: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1220
+msgid "Received a broken RPL_WHOISIDLE, can't evaluate the idle time"
+msgstr ""
+"Recibido un RPL_WHOISIDLE erroneo, no puedo calcular el tiempo de espera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1230
+msgid "%c\r!n\r%Q\r%c's idle time: %ud %uh %um %us"
+msgstr "%c\r!n\r%Q\r%c's tiempo de espera: %ud %uh %um %us"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1240
+msgid "%c\r!n\r%Q\r%c's signon time: %Q"
+msgstr "%c\r!n\r%Q\r%c's tiempo de entrada: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1274
+msgid "%c\r!n\r%Q\r%c's server: \r!s\r%Q\r - %Q"
+msgstr "%c\r!n\r%Q\r%c's servidor: \r!s\r%Q\r - %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1293
+msgid "%c\r!n\r%Q\r%c is authenticated as %Q"
+msgstr "%c\r!n\r%Q\r%c está autentificado como %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1325
+msgid "%c\r!n\r%Q\r%c's info: %Q"
+msgstr "%c\r!n\r%Q\r%c's info: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1372
+msgid "%c\r!n\r%Q\r%c WHOIS info from \r!s\r%Q\r"
+msgstr "%c\r!n\r%Q\r%c info WHOIS de \r!s\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1389
+msgid "%c\r!n\r%Q\r%c WHOWAS info from \r!s\r%Q\r"
+msgstr "%c\r!n\r%Q\r%c info WHOWAS de \r!s\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1457
+msgid "Can't evaluate creation time"
+msgstr "No puedo evaluar la fecha de creación"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1465
+msgid "Channel was created at %Q"
+msgstr "El canal fue creado el %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1470
+msgid "Channel \r!c\r%Q\r was created at %Q"
+msgstr "El canal \r!c\r%Q\r fue creado el %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1511
+msgid "USERHOST info: %Q"
+msgstr "Información USERHOST: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1532
+msgid "Channel list begin: channel, users, topic"
+msgstr "Comienza la lista de canal: canales, usuarios, temas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1559
+msgid "List: %Q"
+msgstr "Lista: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1573
+msgid "End of LIST"
+msgstr "Fin de LIST"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1597
+msgid "Link: %Q"
+msgstr "Enlace: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1612
+msgid "End of LINKS"
+msgstr "Fin de LINKS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1641
+msgid "[Leaving away status after %ud %uh %um %us]: %Q"
+msgstr "[Abandonando el estado ausente después de %ud %uh %um %us]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1645
+msgid "[Leaving away status]: %Q"
+msgstr "[Abandonando el estado ausente]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1652
+msgid "Restoring pre-away nickname (%Q)"
+msgstr "Recuperando el nick anterior al estado de ausencia (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1672
+msgid "[Entering away status]: %Q"
+msgstr "[Entrando en estado ausente]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1690
+msgid "Setting away nickname (%Q)"
+msgstr "Poniendo el nick de modo ausente (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1762
+#, fuzzy, c-format
+msgid "%c\r!s\r%s\r%c's server info: %s"
+msgstr "%c\r!s\r%s\r%c's info de servidor: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1773
+#, fuzzy, c-format
+msgid "%c\r!s\r%s\r%c's administrator is %s"
+msgstr "%c\r!s\r%s\r%c's el administrador es %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1784
+#, fuzzy, c-format
+msgid "%c\r!s\r%s\r%c's contact adress is %s"
+msgstr "%c\r!s\r%s\r%c's dirección de contacto es %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1812
+msgid "\r!n\r%Q\r invited %Q into channel %Q"
+msgstr "\r!n\r%Q\r invitado %Q al canal %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1834
+#, c-format
+msgid "%c\r!s\r%s\r%c's information:"
+msgstr "%c\r!s\r%s\r%c's información:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1844
+#, c-format
+msgid "End of %c\r!s\r%s\r%c's information"
+msgstr "Fin de %c\r!s\r%s\r%c's información"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1855
+msgid "%c\r!s\r%s\r%c's time is %Q"
+msgstr "%c\r!s\r%s\r%c's hora es %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1866
+msgid "%Q: no such server"
+msgstr "%Q: no existe el servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1877
+msgid "%Q: no such channel"
+msgstr "%Q: no existe el canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1891
+msgid "Cannot sent to channel: %Q"
+msgstr "No puedo enviar al canal: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1894
+#, fuzzy
+msgid "Cannot sent text to channel %Q: %Q"
+msgstr "Has abandonado el canal \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1909
+#, fuzzy
+msgid "Cannot sent to channel"
+msgstr "La ventana actual no es un canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1912
+#, fuzzy
+msgid "Cannot sent text to channel %Q"
+msgstr "Actualizando el estado de ausente para el canal %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1928
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1936
+msgid "Your encoding is now %Q"
+msgstr "Tu codificación es ahora %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1967
+msgid "%c\r!n\r%Q\r%c's codepage is %Q: %Q"
+msgstr "%c\r!n\r%Q\r%c's página de códigos es %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1991
+#, c-format
+msgid "Your user mode is %s"
+msgstr "Tu modo de usuario es %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:158
+msgid "Failed to set the encoding to %Q: mapping not available."
+msgstr "Falló la configuración para la codificación a %Q: mapeo no disponible."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:175
+msgid "Changed text encoding to %Q"
+msgstr "Cambiada la codificación de texto a %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:503
+msgid "Connection to server lost"
+msgstr "Conexión perdida con el servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:512
+msgid "Connection to server established"
+msgstr "Conexión establecida con el servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:573
+msgid "[LINK WARNING]: Socket message truncated to 512 bytes."
+msgstr "[Alerta de enlace]: Mensaje de socket truncado a 512 bytes."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:640
+msgid ""
+"The server seems to support the WATCH notify list method, will try to use it"
+msgstr ""
+"Este servidor parece soportar el método de lista de notificación WATCH, "
+"intentaré usarlo."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:688
+msgid "Can't resolve local host address, using user supplied one (%Q)"
+msgstr ""
+"No se pudo resolver la dirección local, usando la suministrada por el "
+"usuario (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:695
+msgid "Can't resolve local host address, using default 127.0.0.1"
+msgstr ""
+"No se pudo resolver la dirección local, usando la dirección por defecto "
+"127.0.0.1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:701
+msgid "Local host address is %Q"
+msgstr "La dirección local de la máquina es %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:749
+msgid "The server seems to have changed the idea about the local hostname"
+msgstr ""
+"El servidor parece haber cambiado de idea acerca del nombre de máquina local"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:750
+msgid ""
+"You're probably using a broken bouncer or maybe something weird is happening "
+"on the IRC server"
+msgstr ""
+"Probablemente está usando un repetidor estropeado o algo muy malo está "
+"sucediendo en el servidor IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:776
+msgid ""
+"Here goes your \"broken bouncer hack\": The server has changed the hostname "
+"but I'll ignore the IP address change"
+msgstr ""
+"Ahí va tu \"truco del repetidor estropeado\": El servidor ha cambiado el "
+"nombre de máquina pero ignoraré el cambio de dirección IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:791
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:801
+msgid "The local IP address as seen by the IRC server is %Q"
+msgstr "La dirección IP local vista por el servidor IRC es %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:815
+msgid "Can't start the DNS slave thread"
+msgstr "No se pudo iniciar el hilo de DNS esclavo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:816
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:846
+msgid "Unable to resolve the local hostname as seen by the IRC server: %Q"
+msgstr ""
+"No es posible resolver el nombre de la máquina local tal y como la ve el "
+"servidor de IRC: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:822
+msgid "Looking up the local hostname as seen by the IRC server (%Q)"
+msgstr ""
+"Buscando el nombre de máquina local tal y como lo ve el servidor IRC (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:843
+#, fuzzy
+msgid ""
+"Unable to resolve the local hostname as seen by the IRC server: %Q, using "
+"previously resolved %Q"
+msgstr ""
+"No es posible resolver el nombre de la máquina local tal y como la ve el "
+"servidor de IRC: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:850
+#, fuzzy
+msgid "Local hostname as seen by the IRC server resolved to %Q"
+msgstr "Buscando el nombre de máquina del proxy (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:868
+msgid "Using server specific username (%Q)"
+msgstr "Utilizando el nombre usuario específico del servidor (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:873
+msgid "Using network specific username (%Q)"
+msgstr "Utilizando el nombre de usuario específico de la red (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:892
+#, fuzzy
+msgid "Using reconnect specific nickname (%Q)"
+msgstr "Utilizando el nick específico de la red (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:898
+msgid "Using server specific nickname (%Q)"
+msgstr "Utilizando el nick específico del servidor (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:905
+msgid "Using network specific nickname (%Q)"
+msgstr "Utilizando el nick específico de la red (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:922
+msgid "Using server specific real name (%Q)"
+msgstr "Utilizando el nombre real específico del servidor (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:929
+msgid "Using network specific real name (%Q)"
+msgstr "Utilizando el nombre real específico de la red (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:946
+msgid "Logging in as %Q!%Q :%Q"
+msgstr "Entrando como %Q!%Q :%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:962
+#, c-format
+msgid "Sending %s as password"
+msgstr "Enviando %s como clave"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1033
+msgid "Executing scheduled network specific \"on connect\" commands"
+msgstr ""
+"Ejecutando los comandos específicos de la red programados \"al conectar\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1042
+msgid "Executing scheduled server specific \"on connect\" commands"
+msgstr ""
+"Ejecutando los comandos específicos de servidor programados \"al conectar\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1051
+#, fuzzy
+msgid "Executing scheduled identity specific \"on connect\" commands"
+msgstr ""
+"Ejecutando los comandos específicos de la red programados \"al conectar\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1101
+#, c-format
+msgid "The server refused the suggested nickname (%s) and named you %s instead"
+msgstr "El servidor rechazó el nick sugerido (%s) y le nombró %s en su lugar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1113
+msgid "Login operations complete, happy ircing!"
+msgstr "Operaciones de entrada completas, feliz irc!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1123
+msgid "Executing scheduled network specific \"on login\" commands"
+msgstr ""
+"Ejecutando los comandos específicos de la red programados \"al entrar\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1132
+msgid "Executing scheduled server specific \"on login\" commands"
+msgstr ""
+"Ejecutando los comandos específicos de servidor programados \"al entrar\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1141
+#, fuzzy
+msgid "Executing scheduled identity specific \"on login\" commands"
+msgstr ""
+"Ejecutando los comandos específicos de la red programados \"al entrar\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1153
+msgid "Setting configured user mode"
+msgstr "Poniendo el modo configurado por el usuario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1210
+msgid "Auto-joining network specific channels"
+msgstr "Entrando automáticamente en canales específicos de la red"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1244
+msgid "Auto-joining server specific channels"
+msgstr "Entrando automáticamente en canales específicos del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1341
+msgid "Updating away state for channel %Q"
+msgstr "Actualizando el estado de ausente para el canal %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_customtoolbardescriptor.cpp:230
+msgid "Backward compatibility action for toolbar.define"
+msgstr "Compatibilidad hacia atrás para toolbar.define"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:790
+msgid "Installation problems ?"
+msgstr "Problemas de instalación?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:791
+msgid ""
+"<b>Ooops...</b><br><br><b>There are some reasons that make me think that "
+"your KVIrc installation is incomplete.</b><br><br>I might be wrong, but you "
+"seem to miss some of the features that the default KVIrc script provides."
+"This may happen because you have upgraded to an unstable cvs version, "
+"because you have accidentally deleted or damaged your configuration files, "
+"because you have installed an incomplete script or because you have hit a "
+"bug in KVIrc.<br><br>I can repeat the installation of the default script in "
+"order to restore the missing features.<br><b>Do you want the default script "
+"to be restored ?</b><br><br><font size=\"-1\">Hint: If you're a scripter and "
+"have intentionally removed some of the scripting features then you may "
+"safely click on \"No and Don't Ask Me Again\", otherwise it might be a good "
+"idea to click \"Yes\". If you still want to choose \"No\" you can always "
+"restore the default script by choosing the appropriate entry from the "
+"\"Scripting\" menu.</font>"
+msgstr ""
+"<b>Ooops...</b><br><br><b>Hay algunas razones que me hacen pensar que tu "
+"instalación de KVIrc es incompleta.</b><br><br>Puedo estar equivocado, pero "
+"parece que no tienes algunas características proporcionadas por el script "
+"por defecto de KVIrc. Esto puede suceder porque has actualizado a una "
+"versión inestable desde el CVS, debido a que has borrado o dañado "
+"accidentalmente tus archivos de configuración, debido a que has instalado un "
+"script incompleto o porque has encontrado un error de KVIrc.<br><br>Puedo "
+"repetir la instalación del script por defecto para intentar recuperar las "
+"funcionalidades perdidas.<br><br><font size=\"-1\">Idea: Si eres un scripter "
+"y has quitado intencionadamente algunas de las funcionalidades del script "
+"puedes escoger con seguridad \"No, y no me preguntes de nuevo\", en "
+"cualquier otro caso es una buena idea pulsar en \"Sí\". Si todavía quieres "
+"escoger \"No\" siempre puedes recuperar el script por defecto escogiendo la "
+"entrada apropiada en el menú \"Scripting\".</font>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:805
+msgid "No and Don't Ask Me Again"
+msgstr "No, y no me preguntes de nuevo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:828
+msgid "Restore Default Script - KVIrc"
+msgstr "Restaurar Script por defecto - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:829
+msgid ""
+"You are about to restore the default script.<br>This will erase any script "
+"changes you have made.<br>Do you wish to proceed?"
+msgstr ""
+"Se dispone a restaurar el script por defecto.<br>Esto borrará cualquier "
+"cambio que hubiera hecho a los scripts.<br>Desea continuar?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:872
+#, c-format
+msgid "Remote command received (%s ...)"
+msgstr "Comando remoto recibido (%s ...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1033
+msgid "File download failed"
+msgstr "Falló la descarga de archivos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1035
+msgid "File download from %1 failed"
+msgstr "Falló la descarga del archivo desde %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1044
+#, fuzzy
+msgid "File download successfully complete"
+msgstr "Falló la descarga de archivos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1046
+#, fuzzy
+msgid "File download from %1 successfully complete"
+msgstr "Falló la descarga del archivo desde %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1066
+msgid "Avatar download failed for %Q!%Q@%Q and url %Q: %Q"
+msgstr "Falló la descarga del avatar para %Q!%Q@%Q y url %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2014
+#, c-format
+msgid "The commandline for media type '%s' seems to be broken"
+msgstr "La línea de comando para el tipo de medio '%s' parece estar mal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2018
+#, c-format
+msgid "Media type of file %s matched to '%s' but no commandline specified"
+msgstr ""
+"El tipo de medio del archivo %s concordó con '%s' pero no se especificó "
+"línea de comando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2023
+#, c-format
+msgid "No idea on how to play file %s (no media type match)"
+msgstr ""
+"No se como reproducir el archivo %s (no hay concordancia en el tipo de medio)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:39
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:48
+#, c-format
+msgid "[SSL]: %c%s"
+msgstr "[SSL]: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:40
+#, c-format
+msgid "[SSL]: Cipher: %c%s"
+msgstr "[SSL]: Cifrador: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:41
+#, c-format
+msgid "[SSL]: Version: %c%s"
+msgstr "[SSL]: Versión: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:42
+#, c-format
+msgid "[SSL]: Bits: %c%d (%d used)"
+msgstr "[SSL]: Bits: %c%d (%d usados)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:49
+#, c-format
+msgid "[SSL]: Version: %c%d"
+msgstr "[SSL]: Versión: %c%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:50
+#, c-format
+msgid "[SSL]: Serial number: %c%d"
+msgstr "[SSL]: Número de serie: %c%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:51
+msgid "[SSL]: Subject:"
+msgstr "[SSL]: Tema:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:59
+#, c-format
+msgid "[SSL]: Common name: %c%s"
+msgstr "[SSL]: Nombre comn: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:60
+#, c-format
+msgid "[SSL]: Organization: %c%s"
+msgstr "[SSL]: Organización: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:61
+#, c-format
+msgid "[SSL]: Organizational unit: %c%s"
+msgstr "[SSL]: Unidad organizativa: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:62
+#, c-format
+msgid "[SSL]: Country: %c%s"
+msgstr "[SSL]: Condado: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:63
+#, c-format
+msgid "[SSL]: State or province: %c%s"
+msgstr "[SSL]: Estado o Provincia: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:64
+#, c-format
+msgid "[SSL]: Locality: %c%s"
+msgstr "[SSL]: Localidad: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:58
+msgid "[SSL]: Issuer:"
+msgstr "[SSL]: Emisor:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:65
+#, c-format
+msgid "[SSL]: Public key: %c%s (%d bits)"
+msgstr "[SSL]: Clave pblica: %c%s (%d bits)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:66
+#, c-format
+msgid "[SSL]: Signature type: %c%s"
+msgstr "[SSL]: Tipo de firma: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:73
+#, c-format
+msgid "[SSL]: Signature contents: %c%s"
+msgstr "[SSL]: Contenidos de la firma: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:82
+msgid "Peer X509 certificate"
+msgstr "Certificado X509 de la otra parte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:85
+msgid "[SSL]: The peer didn't provide a certificate"
+msgstr "[SSL]: La otra parte no proporcionó un certificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1219
+msgid "Current transmission cipher"
+msgstr "Cifrador actual de transmisión"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:92
+msgid "[SSL]: Can't find out the current cipher info"
+msgstr "[SSL]: No puedo encontrar la información de cifrado actual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:113
+#, c-format
+msgid "[%s]: [SSL]: Using certificate file %s"
+msgstr "[%s]: [SSL]: Usando archivo de certificado %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:116
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the certificate file %s"
+msgstr ""
+"[%s]: [ERROR SSL]: Error de E/S de archivo mientras intentaba utilizar el "
+"archivo de certificado %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:146
+#, c-format
+msgid "[%s]: [SSL ERROR]: %s"
+msgstr "[%s]: [ERROR SSL]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:136
+#, c-format
+msgid "[%s]: [SSL]: Using private key file %s"
+msgstr "[%s]: [SSL]: Usando archivo de clave privada %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:139
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the private key file %s"
+msgstr ""
+"[%s]: [ERROR SSL]: error de E/S en archivo mientras intentaba usar el "
+"archivo de clave privada %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:375
+msgid "Reconnect attempt aborted"
+msgstr "Intento de reconexión cancelado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:443
+msgid ""
+"This is the first connection in this IRC context: using the global server "
+"setting"
+msgstr ""
+"Esta es la primera conexión en este contexto IRC: usando la configuración "
+"del servidor global"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:483
+msgid ""
+"No servers available. Check the options dialog or use the /SERVER command"
+msgstr ""
+"No hay servidores disponibles. Compruebe el diálogo de opciones o utilice el "
+"comando /SERVER"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:491
+msgid ""
+"Ooops.. you've hit a bug in the servers database... I have found a server "
+"but not a network..."
+msgstr ""
+"Ooops... has encontrado un error en la base de datos de servidores... He "
+"encontrado un servidor pero no una red..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:504
+msgid "No proxy hosts available, resuming direct connection"
+msgstr "No hay servidores proxy disponibles, continuando conexión directa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:582
+#, c-format
+msgid "Connection attempt failed [%s]"
+msgstr "Intento de conexión fallido [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:600
+#, c-format
+msgid "Will attempt to reconnect in %d seconds"
+msgstr "Intentaré reconectar en %d segundos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:604
+#, c-format
+msgid "%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:606
+#, c-format
+msgid "%d of %d"
+msgstr "%d de %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:633
+#, c-format
+msgid "Maximum number of reconnect attempts reached (%d): giving up"
+msgstr "Se alcanzó el máximo número de reintentos de conexión (%d): desisto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:647
+msgid ""
+"The connection attempt failed while using a cached IP address for the "
+"current server"
+msgstr ""
+"El intento de conexión falló cuando se usaba una dirección IP desde la caché "
+"para el servidor actual "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:648
+msgid "The problem *might* be caused by an updated DNS entry"
+msgstr "El problema *podría* estar causado por una entrada DNS actualizada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:649
+msgid "Try reconnecting with caching disabled"
+msgstr "Intenta reconectar con la caché desactivada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:673
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:382
+msgid "%Q established [%s (%s:%u)]"
+msgstr "%Q establecida [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Secure connection"
+msgstr "Conexión segura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Connection"
+msgstr "Conexión"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:779
+#, c-format
+msgid "Connection terminated [%s (%s:%u)]"
+msgstr "Conexión terminada [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:791
+msgid "The connection terminated unexpectedly. Trying to reconnect..."
+msgstr "La conexión finalizó inesperadamente. Intentando reconectar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:874
+msgid "Sent QUIT, waiting for the server to close the connection..."
+msgstr "Enviado QUIT, esperando a que el servidor cierre la conexión..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:685
+msgid "Normal text"
+msgstr "Texto normal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:686
+msgid "Selection"
+msgstr "selección"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:687
+msgid "Highlighted text"
+msgstr "Texto resaltado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:688
+msgid "URL foreground"
+msgstr "Color de primer plano de URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:689
+msgid "Link overlay foreground"
+msgstr "Enlace de la capa de primer plano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:690
+msgid "Parser error"
+msgstr "Error del analizador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:691
+msgid "Parser warning"
+msgstr "Aviso del analizador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:692
+msgid "Host lookup result"
+msgstr "Resultado de la búsqueda de la máquina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:693
+msgid "Socket message"
+msgstr "Mensaje de socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:694
+msgid "Socket warning"
+msgstr "Aviso de socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:695
+msgid "Socket error"
+msgstr "Error en socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:696
+msgid "System error"
+msgstr "Error de sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:697
+msgid "Raw data to server"
+msgstr "Datos puros al servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:698
+msgid "Connection status"
+msgstr "Estado de la conexión"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:699
+msgid "System warning"
+msgstr "Aviso del sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:700
+msgid "System message"
+msgstr "Mensaje del sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:701
+msgid "Unhandled server reply"
+msgstr "Respuesta del servidor no procesada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:702
+msgid "Server information"
+msgstr "Información del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:703
+msgid "Server Message of the Day"
+msgstr "Mensaje del Día del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:704
+msgid "Server ping"
+msgstr "Pings de servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:705
+msgid "Join message"
+msgstr "Mensaje Join"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:706
+msgid "Part message"
+msgstr "Mensaje part"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:707
+msgid "Unrecognized/broken message"
+msgstr "Mensaje no reconocido/erroneo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:708
+msgid "Topic message"
+msgstr "Mensaje de tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:709
+msgid "Own private message"
+msgstr "Mensaje privado propio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:710
+msgid "Channel private message"
+msgstr "Mensaje privado al canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:711
+msgid "Query private message"
+msgstr "Mensaje de pregunta privada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:712
+msgid "CTCP reply"
+msgstr "Respuesta CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:713
+msgid "CTCP request replied"
+msgstr "Solicitud CTCP respondida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:714
+msgid "CTCP request ignored"
+msgstr "Solicitud CTCP ignorada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:715
+msgid "CTCP request flood warning"
+msgstr "Solicitud CTCP de aviso de saturación"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:716
+msgid "CTCP request unknown"
+msgstr "Solicitud CTCP desconocida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:717
+msgid "User action"
+msgstr "Acción de usuario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:718
+msgid "Avatar change"
+msgstr "Cambio de avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:719
+msgid "Quit message"
+msgstr "Mensaje de salida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:720
+msgid "Split message"
+msgstr "Mensaje de división"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:721
+msgid "Quit on netsplit message"
+msgstr "Salir con el mensaje de netsplit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:722
+msgid "Nick changes"
+msgstr "Cambios de nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:723
+msgid "+o mode change"
+msgstr "cambio de modo +o"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:724
+msgid "-o mode change"
+msgstr "cambio de modo -o"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:725
+msgid "+v mode change"
+msgstr "cambio de modo +v"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:726
+msgid "-v mode change"
+msgstr "cambio de modo -v"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:727
+msgid "Multiple user mode change"
+msgstr "Cambio múltiple del modo de usuario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:728
+msgid "Channel key change"
+msgstr "Cambio de clave de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:729
+msgid "Channel limit change"
+msgstr "Cambio del límite de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:730
+msgid "+b mode change"
+msgstr "cambio de modo +b"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:731
+msgid "-b mode change"
+msgstr "cambio de modo -b"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:732
+msgid "+e mode change"
+msgstr "cambio de modo +e"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:733
+msgid "-e mode change"
+msgstr "cambio de modo -e"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:734
+msgid "+I mode change"
+msgstr "cambio de modo +I"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:735
+msgid "-I mode change"
+msgstr "cambio de modo -I"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:736
+msgid "Multiple channel mode change"
+msgstr "Cambio de modo en múltiples canales"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:737
+msgid "Who reply"
+msgstr "Respuesta Who"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:738
+msgid "DCC request"
+msgstr "Petición DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:739
+msgid "DCC message"
+msgstr "Mensaje DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:740
+msgid "DCC error"
+msgstr "Error DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:741
+msgid "Nickname problem"
+msgstr "Problema con el nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:742
+msgid "Whois user reply"
+msgstr "Respuesta de usuario whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:743
+msgid "Whois channels reply"
+msgstr "Respuesta de canal whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:744
+msgid "Whois idle reply"
+msgstr "Respuesta en espera de whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:745
+msgid "Whois server reply"
+msgstr "Respuesta whois del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:746
+msgid "Whois other reply"
+msgstr "Respuesta de un tercero a whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:747
+msgid "Channel creation time reply"
+msgstr "Respuesta de fecha de creación del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:748
+msgid "Notify list joins"
+msgstr "Notificar uniones a la lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:749
+msgid "Notify list leaves"
+msgstr "Notificar abandonos de la lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:750
+msgid "Own encrypted private message"
+msgstr "Mensaje cifrado privado propio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:751
+msgid "Channel encrypted private message"
+msgstr "Canal cifrado privado propio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:752
+msgid "Query encrypted private message"
+msgstr "Pedir mensaje privado cifrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:753
+msgid "DCC chat message"
+msgstr "Mensaje de DCC chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:754
+msgid "Encrypted DCC chat message"
+msgstr "Mensaje cifrado de DCC chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:755
+msgid "Login operations completed"
+msgstr "Operaciones de entrada completas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:756
+msgid "Kick action"
+msgstr "Acción expulsar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:757
+msgid "Links reply"
+msgstr "Respuesta enlaces"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:758
+msgid "Spam report"
+msgstr "Informe spam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:759
+msgid "ICQ message"
+msgstr "Mensaje ICQ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:760
+msgid "ICQ user-message"
+msgstr "Mensaje de usuario ICQ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:761
+msgid "Outgoing ICQ user-message"
+msgstr "Mensaje saliente de usuario ICQ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:762
+msgid "Channel notice"
+msgstr "Noticia de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:763
+msgid "Encrypted channel notice"
+msgstr "Noticia de canal cifrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:764
+msgid "Query notice"
+msgstr "Noticia privada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:765
+msgid "Encrypted query notice"
+msgstr "Noticia privada cifrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:766
+msgid "Server notice"
+msgstr "Noticia del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:767
+msgid "Halfop mode change"
+msgstr "Cambio de modo semioperador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:768
+msgid "Unknown CTCP reply"
+msgstr "Respuesta CTCP desconocida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:769
+msgid "NickServ message"
+msgstr "Mensaje NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:770
+msgid "ChanServ message"
+msgstr "Mensaje ChanServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:771
+msgid "Away message"
+msgstr "Mensaje de ausencia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:772
+msgid "Ident message"
+msgstr "Mensaje de ident"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:773
+msgid "Channel list message"
+msgstr "Mensaje de lista de canales"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:774
+msgid "Half-deop mode change"
+msgstr "Cambio de modo quitar semioperador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:775
+msgid "Invite message"
+msgstr "Mensaje invite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:776
+msgid "Multimedia message"
+msgstr "Mensaje multimedia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:777
+msgid "Query trace message"
+msgstr "Rastrear mensaje privado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:778
+msgid "Wallops message"
+msgstr "Mensaje wallops"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:779
+msgid "Join error message"
+msgstr "Mensaje de error al unirse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:780
+msgid "Broadcast private message"
+msgstr "Mensaje privado difundido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:781
+msgid "Broadcast notice"
+msgstr "Difundir noticia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:782
+msgid "Am kicked"
+msgstr "Am expulsado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:783
+msgid "Am op'd"
+msgstr "Am opeado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:784
+msgid "Am voiced"
+msgstr "Am con voz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:785
+msgid "Am deop'd"
+msgstr "Am desopeado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:786
+msgid "Am devoiced"
+msgstr "Am silenciado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:787
+msgid "Am halfop'd"
+msgstr "Am semiopeado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:788
+msgid "Am de-halfop'd"
+msgstr "Am semidesopeado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:789
+msgid "Ban matching my mask"
+msgstr "Prohibir concordando con mi máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:790
+msgid "Unban matching my mask"
+msgstr "Permiso concuerda con mi máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:791
+msgid "Ban exception matching my mask"
+msgstr "Excepción de prohibición concuerda con mi máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:792
+msgid "Ban unexception matching my mask"
+msgstr "Prohibición sin excepción concuerda con mi máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:793
+msgid "Invite exception matching my mask"
+msgstr "Excepción de invitación concuerda con mi máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:794
+msgid "Invite unexception matching my mask"
+msgstr "Invitación sin excepción concuerda con mi máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:795
+msgid "Ignored user message"
+msgstr "Mensaje de usuario ignorado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:796
+msgid "Server statistics"
+msgstr "Estadísticas del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:797
+msgid "SSL message"
+msgstr "Mensaje SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:108
+msgid "Search"
+msgstr "Búsqueda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:799
+msgid "Generic success"
+msgstr "Suceso genérico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:800
+msgid "Generic status"
+msgstr "Estado genérico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:801
+msgid "Generic verbose message"
+msgstr "Mensaje genérico detallado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:802
+msgid "Generic warning"
+msgstr "Aviso genérico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:803
+msgid "Generic error"
+msgstr "Error genérico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:804
+msgid "Generic critical error"
+msgstr "Error crítico genérico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:805
+msgid "Chan admin status set"
+msgstr "Puesto el estado de admin de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:806
+msgid "Chan admin status unset"
+msgstr "Quitado el estado de admin de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:807
+msgid "Own chan admin status set"
+msgstr "Puesto estatus de admin propietario del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:808
+msgid "Own chan admin status unset"
+msgstr "Quitado estatus de admin propietario del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:809
+msgid "Userop mode change"
+msgstr "Cambio de modo usuario operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:810
+msgid "User-deop mode change"
+msgstr "Cambio de modo usuario no operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:811
+msgid "Am userop'd"
+msgstr "Am opeado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:812
+msgid "Am de-userop'd"
+msgstr "Am desopeado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:813
+msgid "Verbose/Debug"
+msgstr "Detallado/Depuración"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:814
+msgid "Chan owner status set"
+msgstr "Puesto el estatus de propietario de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:815
+msgid "Chan owner status unset"
+msgstr "Quitado el estatus de propietario de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:816
+msgid "Own chan owner status set"
+msgstr "Puesto el estatus de propietario del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:817
+msgid "Own chan owner status unset"
+msgstr "Quitado estatus de propietario del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:818
+msgid "Server error"
+msgstr "Error del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:22
+#, fuzzy
+msgid "Help"
+msgstr "&Ayuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:820
+#, fuzzy
+msgid "Text Encoding Server message"
+msgstr "Mensaje de error al unirse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:826
+#, fuzzy
+msgid "BitTorrent message"
+msgstr "Mensaje de ident"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:970
+msgid "Missing absolute directory for the theme information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:978
+#, fuzzy
+msgid "Failed to create the theme directory"
+msgstr "No puedo crear el directorio para el tema."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1061
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1096
+#, fuzzy
+msgid "Failed to save one of the theme images"
+msgstr "Falló la carga del archivo de imagen seleccionado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1074
+#, fuzzy
+msgid "Failed to create the theme subdirectory"
+msgstr "No puedo crear el directorio para el tema."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1213
+msgid "Boolean options (1/0)"
+msgstr "Opciones boleanas (1/0)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1214
+msgid "Rectangle options (x,y,width,height)"
+msgstr "Opciones para el rectángulo (x,y,ancho,alto)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1215
+msgid "String options (string value)"
+msgstr "Opciones de cadena (valor de la cadena)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1216
+msgid "Color options (#RRGGBB)"
+msgstr "Opciones de color (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1217
+msgid "Mirccolor options (#RRGGBB)"
+msgstr "Opciones de color Mirc (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1218
+msgid "Irc context color options (#RRGGBB)"
+msgstr "Opciones de color de contexto Irc (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1219
+msgid "Pixmap options (image path)"
+msgstr "Opciones del gráfico (ruta de la imagen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1220
+msgid "Unsigned integer options (unsigned integer constant)"
+msgstr "Opciones de enteros sin signo (constante unsigned integer)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1221
+msgid "Font options (family,pointsize,style,charset,weight,flags (biusf))"
+msgstr ""
+"Opciones de fuentes (familia,tamaño de punto,estilo,conjunto de caracteres,"
+"anchura, flags (biusf))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1222
+msgid "Message color options (image_id,foreground,background,logFlag (0/1))"
+msgstr "Opciones de color de mensaje (imagen,primer plano,fondo,logFlag (0/1))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1223
+msgid "String list options (comma separated list of strings)"
+msgstr "Opciones de lista de caracteres (lista de cadenas separadas por comas)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC"
+msgstr "IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC Context related actions"
+msgstr "Acciones relativas al Contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic"
+msgstr "Genérico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic actions"
+msgstr "Acciones genéricas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Settings"
+msgstr "Configuraciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Actions related to settings"
+msgstr "Acciones relacionadas con la configuración"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:30
+msgid "Scripting"
+msgstr "Scripting"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+msgid "Scripting related actions"
+msgstr "Acciones relacionadas con los scripts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "GUI"
+msgstr "IGU"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "Actions related to the Graphic User Interface"
+msgstr "Acciones relacionadas con el Interfaz Gráfico de Usuario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:77
+msgid "Channel"
+msgstr "Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+msgid "IRC Channel related actions"
+msgstr "Acciones relativas al canal de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Tools"
+msgstr "Herramientas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Actions that will appear in the \"Tools\" menu"
+msgstr "Acciones que aparecerán en el menú \"Herramientas\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:157
+msgid "Sending out PING based lag probe"
+msgstr "Enviando prueba de retraso basado en PING"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:167
+msgid "Sending out CTCP based lag probe"
+msgstr "Enviando prueba de retraso basado en CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:188
+#, c-format
+msgid "Registered lag check with reliability %u (%s)"
+msgstr "Comprobación de retraso registrada con fiabilidad %u (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:220
+#, c-format
+msgid "Lag check completed (%s)"
+msgstr "Comprobación de retraso completada (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:259
+#, c-format
+msgid "Lag check aborted (%s)"
+msgstr "Comprobación de retraso cancelada (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:143
+msgid "Hostname resolution aborted"
+msgstr "Cancelada la resolución del nombre de máquina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:156
+msgid "Attempting %Q to %Q (%Q) on port %u"
+msgstr "Intentando %Q a %Q (%Q) en el puerto %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "secure connection"
+msgstr "conexión segura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "connection"
+msgstr "conexión"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:165
+#, c-format
+msgid "Attempting to 'bounce' on proxy %s on port %u (protocol %s)"
+msgstr "Intentando 'rebotar' en el proxy %s en el puerto %u (protocolo %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:194
+#, c-format
+msgid "Using cached proxy IP address (%s)"
+msgstr "Utilizando dirección IP de proxy cacheada (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:237
+msgid "Unable to look up the IRC proxy hostname: Can't start the DNS slave"
+msgstr ""
+"Incapaz de buscar el nombre de máquina del proxy irc: no pude iniciar el DNS "
+"esclavo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:265
+msgid "Resuming direct server connection"
+msgstr "Continuando conexión directa al servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:248
+#, c-format
+msgid "Looking up the proxy hostname (%s)..."
+msgstr "Buscando el nombre de máquina del proxy (%s)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:261
+msgid "Can't find the proxy IP address: %Q"
+msgstr "No pude encontrar la dirección IP del proxy: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:271
+#, fuzzy
+msgid "Proxy hostname resolved to %Q"
+msgstr "Nombre de máquina del proxy resuelto a %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:284
+#, fuzzy
+msgid "Proxy %Q has a nickname: %Q"
+msgstr "El proxy %s tiene un nick: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:322
+#, c-format
+msgid "Using cached server IP address (%s)"
+msgstr "Utilizando dirección IP de servidor cacheada (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:354
+msgid "Unable to look up the server hostname: Can't start the DNS slave"
+msgstr ""
+"Incapaz de encontrar el nombre de máquina del servidor: no pude iniciar el "
+"DNS esclavo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:359
+#, c-format
+msgid "Looking up the server hostname (%s)..."
+msgstr "Resolviendo el nombre del servidor (%s)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:373
+msgid "Can't find the server IP address: %Q"
+msgstr "No puedo encontrar la dirección IP del servidor: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:380
+#, fuzzy
+msgid "If this server is an IPv6 one, try /server -i %Q"
+msgstr "Si este server utiliza IPv6, intente /server -i %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:390
+#, fuzzy
+msgid "Server hostname resolved to %Q"
+msgstr "Nombre del servidor resuelto a: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:400
+#, fuzzy
+msgid "Real hostname for %Q is %Q"
+msgstr "El nombre de máquina real de %s es %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:414
+#, fuzzy
+msgid "Server %Q has a nickname: %Q"
+msgstr "El servidor %s tiene un nick: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:468
+msgid "The specified bind address (%Q) is not valid"
+msgstr "La dirección de enlace (bind) especificada (%Q) no es válida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:473
+msgid ""
+"The specified bind address (%Q) is not valid (the interface it refers to "
+"might be down)"
+msgstr ""
+"La dirección de enlace especificada (%Q) no es válida (la interfaz a la que "
+"se refiere puede estar caída)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:493
+#, c-format
+msgid "The system-wide IPv6 bind address (%s) is not valid"
+msgstr ""
+"La dirección general de sistema de enlace (bind) IPv6 (%s) no es válida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:500
+#, c-format
+msgid ""
+"The system-wide IPv6 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+"La dirección general de sistema de enlace (bind) IPv6 (%s) no es válida (la "
+"interfaz a la que se refiere puede estar caída)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:522
+#, c-format
+msgid "The system-wide IPv4 bind address (%s) is not valid"
+msgstr ""
+"La dirección general de sistema de enlace (bind) IPv4 (%s) no es válida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:529
+#, c-format
+msgid ""
+"The system-wide IPv4 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+"La dirección general de sistema de enlace (bind) IPv4 (%s) no es válida (la "
+"interfaz a la que se refiere puede estar caída"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:230
+msgid "Channel operators"
+msgstr "Operadores de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:231
+msgid "Voiced users"
+msgstr "Usuarios con voz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:232
+msgid "Half-operators"
+msgstr "semioperadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:233
+msgid "Ban masks"
+msgstr "Máscaras de prohibición"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:234
+msgid "Color free (no ANSI colors)"
+msgstr "Libre de colores (sin colores ANSI)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:235
+msgid "Ban exception masks"
+msgstr "Máscaras de excepciones a prohibiciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:236
+msgid "Invite exception masks or forbid /INVITE"
+msgstr "Máscaras de excepción de invitación o prohibir /INVITE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:237
+msgid "Secret"
+msgstr "Secreto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:238
+msgid "Private"
+msgstr "Privado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:239
+msgid "Topic change restricted"
+msgstr "Cambio de tema restringido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:240
+msgid "Invite only"
+msgstr "Solo por invitación"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:241
+msgid "No external messages"
+msgstr "Sin mensajes externos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:242
+msgid "Anonymous or protected user"
+msgstr "Usuario anónimo o protegido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:243
+msgid "Quiet or channel owner"
+msgstr "Callado o propietario del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:244
+msgid "Limited number of users"
+msgstr "Número limitado de usuarios"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:245
+msgid "Key"
+msgstr "Clave"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:246
+msgid "Moderated"
+msgstr "Moderado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:247
+msgid "Registered"
+msgstr "Registrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:248
+msgid "Censor swear words"
+msgstr "Palabrotas censuradas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:249
+msgid "Impossible to speak and change nick if not authenticated with NickServ"
+msgstr "Imposible hablar y cambiar el nick si no te autentificas con NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:250
+msgid "Impossible to change nick if not authenticated with NickServ"
+msgstr "Imposible cambiar el nick si no te autentificas con NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:251
+msgid "Only registered nicks can join"
+msgstr "Sólo pueden unirse los nicks registrados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:252
+msgid "No kicks able (unless U-Line)"
+msgstr "No se permiten expulsiones (salvo que se ponga una U-Line)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:253
+msgid "IRC-Op only channel"
+msgstr "Canal sólo para IRC-Op"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:254
+msgid "Server/Network/Tech Admin only channel"
+msgstr "Canal sólo para Administrador de Servidor/Red/Técnico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:255
+msgid "Forbid /KNOCK"
+msgstr "Prohibido /KNOCK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:256
+msgid "Strip colors"
+msgstr "Quitar colores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:257
+msgid "Redirect on channel full"
+msgstr "Redirigir cuando el canal se llene"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:258
+msgid "Forbid channel CTCPs"
+msgstr "Se prohiben CTCPs de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:259
+msgid "User-operators OR Auditorium: /NAMES and /WHO show only ops"
+msgstr "Usuarios operadores y auditorio : /NAMES y /WHO sólo muestran los ops"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:260
+msgid "Only 7-bit letters in nicknames allowed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:261
+msgid "Impossible to use both 7-bit and 8-bit letters in nicknames"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:270
+msgid "o: IRC operator (OPER)"
+msgstr "o: operador de IRC (OPER)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:271
+msgid "O: Local IRC operator (LOCOP)"
+msgstr "O: Operador de IRC local (LOCOP)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:272
+msgid "i: Invisible"
+msgstr "i: Invisible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:273
+msgid "w: Recipient for WALLOPS messages"
+msgstr "w: Destinatario de mensajes WALLOPS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:274
+msgid ""
+"r: User with restricted connection (or recipient for messages about rejected "
+"bots)"
+msgstr ""
+"r: Usuario con conexión restringida (o receptor para mensajes sobre bots "
+"rechazado)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:275
+msgid "s: Recipient for server notices"
+msgstr "s: Destinatario de noticias de servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:276
+msgid "z: Recipient for oper wallop messages"
+msgstr "z: Destinatario de mensajes oper wallop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:277
+msgid "c: Recipient for cconn messages"
+msgstr "c: Destinatario de mensajes cconn"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:278
+msgid "k: Recipient for server kill messages"
+msgstr "k: Destinatario de mensajes server kill"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:279
+msgid "f: Recipient for full server notices"
+msgstr "f: Destinatario de full server notices"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:280
+msgid "y: Spy :)"
+msgstr "y: Espía :)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:281
+msgid "d: Obscure 'DEBUG' flag"
+msgstr "d: Flag de 'DEPURACIÓN' oscura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:282
+msgid "n: Recipient for nick changes"
+msgstr "n: Receptor de cambios de nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:100
+#, fuzzy
+msgid "Ops... for some reason the link filter object has been destroyed"
+msgstr "Ops... por alguna razón el objeto de enlace ha sido destruido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:138
+msgid "Using filtered IRC protocol: Link filter is \"%Q\""
+msgstr "Usando protocolo IRC filtrado: El filtro de enlace es \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:143
+msgid "Failed to set up the link filter \"%Q\", will try with plain IRC"
+msgstr ""
+"Falló el inicio del filtro de enlace \"%Q\", se intentará con IRC plano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:202
+msgid "Failed to start the connection: %Q"
+msgstr "Fallo al comenzar la conexión: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:368
+msgid "Contacting %Q %s (%s) on port %u"
+msgstr "Contactando con %Q %s (%s) en el puerto %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "proxy host"
+msgstr "servidor proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "IRC server"
+msgstr "Servidor IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:375
+#, c-format
+msgid "Low-level transport connection established [%s (%s:%u)]"
+msgstr "Establecida conexión de transporte de bajo nivel [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:379
+msgid "Starting Secure Socket Layer handshake"
+msgstr "Comenzando la negociación SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Secure proxy connection"
+msgstr "Conexión segura a proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Proxy connection"
+msgstr "Conexión a proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:387
+msgid "Negotiating relay information"
+msgstr "Negociando información a retransmitir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:390
+msgid "Sent connection request, waiting for acknowledgement"
+msgstr "Enviada petición de conexión, esperando la confirmación"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:393
+msgid "Sent target host data, waiting for acknowledgement"
+msgstr "Enviados los datos de la máquina de destino, esperando confirmación"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:396
+msgid "Sent auth method request, waiting for acknowledgement"
+msgstr ""
+"Enviado petición de método de autentificación, esperando la confirmación"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:399
+msgid "Sent username and password, waiting for acknowledgement"
+msgstr "Enviados usuario y clave, esperando la confirmación"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:402
+msgid "Sent connection request, waiting for \"HTTP 200\" acknowledgement"
+msgstr ""
+"Enviada petición de conexión, esperando para la confirmación \"HTTP 200\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:176
+msgid "[SSL]: %Q"
+msgstr "[SSL]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:181
+msgid "[SSL ERROR]: %Q"
+msgstr "[ERROR SSL]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:190
+msgid "[PROXY]: %Q"
+msgstr "[PROXY]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:200
+msgid "[PROXY ERROR]: %Q"
+msgstr "[ERROR DE PROXY]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:207
+msgid "[SOCKET]: %Q"
+msgstr "[SOCKET]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:212
+msgid "[SOCKET ERROR]: %Q"
+msgstr "[ERROR DE SOCKET]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:218
+msgid "[SOCKET WARNING]: %Q"
+msgstr "[ALERTA DE SOCKET]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:337
+#, c-format
+msgid "Binding to local address %s"
+msgstr "Asociándose a la dirección local %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:341
+#, c-format
+msgid ""
+"Binding to local address %s failed: the kernel will choose the correct "
+"interface"
+msgstr ""
+"Falló la asociación a la dirección local %s: el nucleo escogerá el interfaz "
+"correcto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:637
+msgid "Using HTTP protocol."
+msgstr "Usando protocolo HTTP."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:683
+msgid "Using SOCKSV4 protocol."
+msgstr "Utilizando protocolo SOCKSV4."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:756
+#, fuzzy
+msgid "Using SOCKSv5 protocol."
+msgstr "Utilizando protocolo SOCKSV5."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:771
+msgid "We can accept auth method 0 (no auth)"
+msgstr "Podemos aceptar el método auth 0 (sin auth)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:779
+msgid "We can accept auth method 0 (no auth) or 2 (user/pass)"
+msgstr "Podemos aceptar el método auth 0 (sin auth) o 2 (usuario/clave)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:958
+msgid "Proxy response: auth OK: access granted"
+msgstr "Respuesta del proxy: auth OK: acceso permitido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:993
+msgid "Proxy response: Auth method OK: using method 0 (no auth)"
+msgstr "Respuesta del proxy: Método de auth OK: usando método 0 (no auth)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1000
+msgid "Proxy response: Auth method OK: using method 2 (user/pass)"
+msgstr "Respuesta del proxy: Método auth OK: usando método 2 (usuario/clave)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1056
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1113
+msgid "Proxy response: target data OK: request granted"
+msgstr "Respuesta del proxy: destino de datos OK: Acceso permitido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1153
+msgid "Proxy response: "
+msgstr "Respuesta del proxy: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1164
+#, fuzzy
+msgid "Proxy said something about: \n"
+msgstr "El proxy dijo algo acerca de \""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1205
+msgid "Server X509 certificate"
+msgstr "Certificado X509 del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1209
+msgid "The server didn't provide a certificate"
+msgstr "El servidor no proporcionó un certificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1223
+msgid "Unable to determine the current cipher"
+msgstr "Incapaz de determinar el cifrador actual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1768
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1788
+msgid "Partial socket write: packet broken into smaller pieces."
+msgstr "Escritura parcial en socket: paquete dividido en trozos más pequeños."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:60
+#, fuzzy
+msgid "The theme information file does not exist"
+msgstr "La acción \"%1\" no existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:71
+#, fuzzy
+msgid ""
+"This KVIrc executable is too old for this theme (minimum theme engine "
+"version required is %Q while this theme engine has version %s)"
+msgstr ""
+"Este ejecutable de KVIrc es demasiado antiguo para ejecutar esta "
+"funcionalidad adicional (la versión mínima necesaria es %Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:80
+#, fuzzy
+msgid "Theme information file is not valid"
+msgstr "El archivo de destino existe: no se renombra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:248
+#, fuzzy
+msgid "Failed to load the specified screenshot image"
+msgstr "Falló la carga del archivo de imagen seleccionado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:257
+#, fuzzy
+msgid "Invalid option"
+msgstr "Tiempo de expiración no válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:265
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:293
+#, fuzzy
+msgid "Failed to save the screenshot image"
+msgstr "Falló la carga del archivo de imagen seleccionado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:117
+msgid "Configure Servers..."
+msgstr "Configurar Servidores..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:118
+msgid "Allows you to configure the servers and eventually to connect to them"
+msgstr "Permite configurar los servidores y eventualmenet conectarse a ellos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:128
+msgid "Manage Addons..."
+msgstr "Gestionar Funcionalidades Adicionales..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:129
+msgid "Allows you to manage the script-based addons"
+msgstr "Permite gestionar las funcionalidades adicionales basadas en script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:139
+msgid "Configure Registered Users..."
+msgstr "Configurar Usuarios Registrados..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:140
+msgid "Shows a dialog that allows editing the registered user entries"
+msgstr ""
+"Muestra un diálogo que permite editar las entradas de usuarios registrados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:150
+msgid "Configure Identity..."
+msgstr "Configurar Identidad..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:151
+msgid "Allows you to configure nickname, username, avatar etc..."
+msgstr "Permite configurar tu nick, nombre de usuario, avatar, etc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:161
+msgid "Show SocketSpy..."
+msgstr "Mostrar Espía de Sockets..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:162
+msgid "Shows a window that allows monitoring the socket traffic"
+msgstr "Muestra una ventana que permite monitorizar el tráfico de los sockets"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:172
+msgid "Get Network Links"
+msgstr "Obtener Enlaces de Red"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:173
+msgid "Shows a window that allows viewing the network links"
+msgstr "Muestra una ventana que permite visualizar los enlaces de red"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:183
+msgid "Get Channel List"
+msgstr "Obtener Lista de Canales"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:184
+msgid "Shows a window that allows listing the network channels"
+msgstr "Muestra una ventana que permite listar los canales de la red"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:194
+msgid "Configure KVIrc..."
+msgstr "Configurar KVIrc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:195
+msgid "Shows the general options dialog"
+msgstr "Muestra el diálogo general de opciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:205
+#, fuzzy
+msgid "Configure Theme..."
+msgstr "Configurar Servidores..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:206
+#, fuzzy
+msgid "Shows the theme options dialog"
+msgstr "Muestra el diálogo general de opciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:216
+#, fuzzy
+msgid "Manage Themes..."
+msgstr "Configurar Servidores..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:217
+#, fuzzy
+msgid "Allows you to manage the themes"
+msgstr "Permite gestionar las funcionalidades adicionales basadas en script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:227
+msgid "Customize Toolbars..."
+msgstr "Personalizar Barras de Herramientas..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:228
+msgid "Shows a window that allows editing script toolbars"
+msgstr ""
+"Muestra una ventana que permite editar los scripts de las barras de "
+"herramientas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:239
+msgid "Join Channels..."
+msgstr "Unirse a Canales..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:240
+msgid "Shows a dialog that allows you joing channels"
+msgstr "Muestra un diálogo que te permite unirte a canales"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:251
+msgid "Edit Actions..."
+msgstr "Editar Acciones..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:252
+msgid "Shows a window that allows editing actions"
+msgstr "Muestra una ventana que permite editar las acciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:262
+msgid "Edit Aliases..."
+msgstr "Editar Alias..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:263
+msgid "Shows a window that allows editing aliases"
+msgstr "Muestra una ventana que permite editar los alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:273
+msgid "Edit Events..."
+msgstr "Editar Eventos..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:274
+msgid "Shows a window that allows editing script events"
+msgstr "Muestra una ventana que permite editar los eventos de script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:284
+msgid "Edit Popups..."
+msgstr "Editar Menús Emergentes..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:285
+msgid "Shows a window that allows editing popup menus"
+msgstr "Muestra una ventana que te permite editar los menús emergentes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:295
+msgid "Edit Raw Events..."
+msgstr "Editar Eventos Puros..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:296
+msgid "Shows a window that allows editing raw scripting events"
+msgstr "Muestra una ventana que permite editar los eventos de script puros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:306
+msgid "New Script Tester"
+msgstr "Nuevo Comprobador de Script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:307
+msgid "Creates an embedded editor for long scripts"
+msgstr "Crea un editor embebido para scripts grandes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:317
+msgid "Execute Script..."
+msgstr "Ejecutar Script..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:318
+msgid "Allows executing a KVS script from file"
+msgstr "Permite ejecutar un script KVS desde un archivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:328
+msgid "Help Index"
+msgstr "Indice de la Ayuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:329
+msgid "Shows the documentation index"
+msgstr "Muestra el índice de la ayuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:340
+msgid "Allows subscribing to the KVIrc mailing list"
+msgstr "Permite suscribirse a la lista de correo de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:350
+msgid "KVIrc WWW"
+msgstr "KVIrc WWW"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:351
+msgid "Opens the KVIrc homepage"
+msgstr "Abre la Página Web de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:361
+#, fuzzy
+msgid "KVIrc Russian WWW"
+msgstr "&Página de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:362
+#, fuzzy
+msgid "Opens the KVIrc homepage in russian"
+msgstr "Abre la Página Web de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:372
+msgid "Acquire Screenshot"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:373
+msgid "Acquires a Screenshot of the KVIrc main window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:385
+msgid "Cascade windows"
+msgstr "Ventanas en cascada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:386
+msgid "Arranges the MDI windows in a maximized-cascade fashion"
+msgstr "Organiza las ventanas MDI en un estilo de cascada maximizada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:397
+msgid "Tile windows"
+msgstr "Embaldosar ventanas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:398
+msgid "Tiles the MDI windows with the currently selected tile method"
+msgstr "Embaldosa las ventanas MDI con el método de embaldosado seleccionado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:409
+msgid "Minimize all windows"
+msgstr "Minimizar todas las ventanas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:410
+msgid "Minimized all the currently visible MDI windows"
+msgstr "Minimiza todas las ventanas MDI actualmente visibles"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:421
+msgid "New IRC Context"
+msgstr "Nuevo Contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:422
+msgid "Creates a new IRC context console"
+msgstr "Crea una nueva consola de contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:433
+msgid "Quit KVIrc"
+msgstr "Salir de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:434
+msgid "Quits KVIrc closing all the current connections"
+msgstr "Sale de KVIrc cerrando todas las conexiones actuales"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:448
+msgid "IRC Context Display"
+msgstr "Ventana de Contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:449
+msgid "Shows a small display with IRC context informations"
+msgstr "Muestra una pequeña ventana con las informaciones de contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:520
+msgid "Acts as a separator for other items: performs no action"
+msgstr ""
+"Actua como un separador para otros elementos: no realiza ninguna acción"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:554
+msgid "Connect/Disconnect"
+msgstr "Conectar/Desconectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:555
+msgid ""
+"Allows you to connect to a server or to terminate the current connection"
+msgstr "Permite conectarse a un servidor o finalizar la conexión actual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:628
+msgid "Connect"
+msgstr "Conectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:629
+msgid "Abort Connection"
+msgstr "Cancelar Conexión"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:790
+msgid "Join Channel"
+msgstr "Unirse a un Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:791
+msgid "Shows a popup menu that allows quickly selecting a channel to join"
+msgstr ""
+"Muestra un menú emergente que permite seleccionar rápidamente un canal para "
+"unirse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:851
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:863
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:896
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:907
+msgid "Other..."
+msgstr "Otros..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:834
+msgid "Change Nickname"
+msgstr "Cambiar Nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:835
+msgid "Shows a popup menu that allows quickly changing the nickname"
+msgstr "Muestra un menú emergente que permite cambiar rápidamente el nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:883
+msgid "Connect To"
+msgstr "Conectar a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:884
+msgid "Shows a popup menu that allows quickly connecting to a server"
+msgstr ""
+"Muestra un menú emergente que permite conectarse rápidamente a un servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:929
+msgid "User Mode"
+msgstr "Modo de usuario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:930
+msgid "Shows a popup menu that allows quickly changing user modes"
+msgstr ""
+"Muestra un menú emergente que permite cambiar rápidamente los modos de "
+"usuario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:947
+msgid "Wallops (+w)"
+msgstr "Wallops (+w)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:949
+msgid "Server Notices (+s)"
+msgstr "Noticias del Servidor (+s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:951
+msgid "Invisible (+i)"
+msgstr "Invisible (+i)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:997
+msgid "Away/Back"
+msgstr "Ausentarse/Volver"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:998
+msgid "Allows entering and leaving away state"
+msgstr "Permite entrar y salir del estado ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1065
+msgid "Enter Away Mode"
+msgstr "Entrar en Modo Ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1066
+msgid "Leave Away Mode"
+msgstr "Abandonar el Modo Ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1135
+msgid "Irc Tools"
+msgstr "Herramientas de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1136
+msgid "Shows a popup menu with some IRC Tools"
+msgstr "Muestra un menú emergente con algunas herramientas de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1171
+msgid "Irc Actions"
+msgstr "Acciones IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1172
+msgid "Shows a popup menu with some IRC Actions"
+msgstr "Muestra un menú emergente con algunas acciones IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:412
+msgid "KVIrc KVS Script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:174
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:420
+#, fuzzy
+msgid "Run KVS Script"
+msgstr "Script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:284
+msgid "URL:IRC Protocol"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:383
+#, fuzzy
+msgid "Open with KVIrc"
+msgstr "Abre la Página Web de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:436
+#, fuzzy
+msgid "KVIrc Configuration File"
+msgstr "Guardar configuración"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:453
+#, fuzzy
+msgid "KVIrc Theme Package"
+msgstr "&Pagina de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:461
+msgid "Install Theme Package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:478
+msgid "KVIrc Addon Package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:486
+#, fuzzy
+msgid "Install Package"
+msgstr "Desinstalar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:749
+#, c-format
+msgid ""
+"Ops...it looks like I can't load modules on this sytem.\n"
+"I have been looking for the %s library but I haven't been able to load it\n"
+"due to the following error: \"%s\"\n"
+"Aborting."
+msgstr ""
+"Ups...parece que no puedo cargar módulos en este sistema.\n"
+"He buscado la biblioteca %s pero no he podido cargarla\n"
+"debido al siguiente error: \"%s\"\n"
+"Interrumpiendo."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:762
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_begin\" function.\n"
+"Aborting!"
+msgstr ""
+"Ops... parece que tienes una distribución defectuosa.\n"
+"El módulo de configuración no exporta la función \"setup_begin\".\n"
+"Interrumpiendo!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:776
+msgid "Setup aborted"
+msgstr "Configuración interrumpida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:801
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_finish\" function.\n"
+"Trying to continue anyway..."
+msgstr ""
+"Ops... parece que tienes una distribución defectuosa.\n"
+"El módulo de configuración no exporta la función \"setup_finish\".\n"
+"Intentando continuar de todas formas..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:186
+msgid "%Q is on IRC"
+msgstr "%Q está en el IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:248
+msgid "%Q has left IRC"
+msgstr "%Q abandonó el IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:368
+msgid "Notify list: No users to check for, quitting"
+msgstr "Lista de Notificación: No hay usuarios que comprobar, deteniendo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:414
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (15 sec)"
+msgstr ""
+"Lista de Notificación: Timeout (%d segs) es demasiado pequeña, poniendo un "
+"valor más razonable (15 segundos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:428
+msgid "Notify list: Notify list empty, quitting"
+msgstr "Lista de Notificación: lista de notificación vacía, deteniendo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:455
+#, c-format
+msgid ""
+"Notify list: ISON delay (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+"Lista de notificación: el retardo ISON (%d segs) es demasiado pequeña, "
+"poniendo algo más razonable (5 segs)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:491
+msgid "Notify list: Checking for: %Q"
+msgstr "Lista de notificación: comprobando: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:535
+msgid ""
+"Notify list: Hey! You've used ISON behind my back? (I might be confused "
+"now...)"
+msgstr ""
+"Lista de notificación: Eh! Has utilizado ISON a mis espaldas? (Ahora puedo "
+"estar confundido...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:682
+msgid "registration mask changed, or nickname is being used by someone else"
+msgstr "cambió la máscara de registro o el nick está siendo usado por alguien"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:686
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (registration mask does not match, or nickname is being used "
+"by someone else)"
+msgstr ""
+"Lista de notificación: Parece que \r!n\r%Q\r está conectado, pero la máscara "
+"[%Q@\r!h\r%Q\r] no concuerda (alguien está usando su nick o la máscara que "
+"usted puso no concuerda)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:691
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? "
+"(restarting)"
+msgstr ""
+"Lista de notificación: inconsistencia inesperada, base de datos de usuarios "
+"registrados modificada? (reiniciando)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:698
+msgid ""
+"Notify list: Unexpected inconsistency, expected \r!n\r%Q\r in the registered "
+"user DB"
+msgstr ""
+"Lista de notificación: inconsistencia inesperada, esperaba tener a \r!n\r%Q"
+"\r en la BD de usuarios registrados..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:712
+#, c-format
+msgid ""
+"Notify list: USERHOST delay (%d sec) is too short, resetting to something "
+"more reasonable (5 sec)"
+msgstr ""
+"Lista de notificación: El retardo de la lista de notificación USERHOST (%d "
+"segs) es demasiado pequeña, reiniciándolo a algo más razonable (5 segs)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:726
+msgid "Notify list: Unexpected inconsistency, userhost list is empty!"
+msgstr ""
+"Lista de notificación: Inconsistencia inesperada, la lista de usuarios-"
+"máquinas esa vacía!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:761
+msgid "Notify list: Checking userhost for: %Q"
+msgstr "Lista de notificación: Comprobando usuario-máquina para: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:831
+msgid ""
+"Notify list: Hey! You've used USERHOST behind my back? (I might be confused "
+"now...)"
+msgstr ""
+"Lista de notificación: Eh! Has utilizado USERHOST a mis espaldas? (puedo "
+"estar confundido ahora...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:836
+#, c-format
+msgid "Notify list: Broken USERHOST reply from the server? (%s)"
+msgstr ""
+"Lista de notificación: obtuve una respuesta USERHOST erronea del servidor? (%"
+"s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:860
+msgid ""
+"Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST reply "
+"was received, will recheck in the next loop"
+msgstr ""
+"Lista de notificación: Parece ser que \r!n\r%Q\r se desconectó mientras "
+"esperaba su respuesta USERHOST, se recomprobará en el próximo ciclo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:931
+msgid "Starting notify list"
+msgstr "Iniciando lista de notificación"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:936
+msgid "No users in the notify list"
+msgstr "No hay usuarios en la lista de notificación"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:958
+msgid "Notify list: Checking for:%Q"
+msgstr "Lista de notificación: Comprobando:%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1013
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+"Lista de notificación: El tiempo de expiración (%d segs) es demasiado corto, "
+"iniciándolo a algo más razonable (5 segs)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1139
+msgid "Notify list: Adding watch entries for%Q"
+msgstr "Lista de notificación: Añadiendo entradas watch para%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1171
+msgid "watch entry listing requested by user"
+msgstr "listado de entradas vigiladas solicitada por el usuario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1175
+msgid "possible watch list desync"
+msgstr "posible desync de la lista de vigilancia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1185
+msgid "registration mask changed or desync with the watch service"
+msgstr ""
+"cambió la máscara de registro o se desincronizó con el servicio de vigilancia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1190
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (watch: registration mask does not match, or nickname is "
+"being used by someone else)"
+msgstr ""
+"Lista de notificación : \r!n\r%Q\r parece estar conectado, pero la máscara [%"
+"Q@\r!h\r%Q\r] no concuerda (watch: alguien más está usando su nick o su "
+"máscara de registro no concuerda)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1197
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? (watch: "
+"restarting)"
+msgstr ""
+"Lista de Notificación: inconsistencia inesperada, BD de usuarios registrados "
+"modificada? (watch: reiniciando)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1207
+msgid "watch entry added by user"
+msgstr "entrada de vigilancia añadida por el usuario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1245
+msgid "removed from watch list"
+msgstr "eliminada de la lista de vigilancia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1248
+msgid "Notify list: Stopped watching for \r!n\r%Q\r"
+msgstr "Lista de notificación: parando seguimiento para: \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1258
+msgid "watch"
+msgstr "vigilancia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1264
+msgid "Notify list: \r!n\r%Q\r is offline (watch)"
+msgstr "Lista de notificación: \r!n\r%Q\r está desconectado (watch)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1267
+msgid "unmatched watch list entry"
+msgstr "entrada de la lista de vigilancia no coincidente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:80
+#, fuzzy
+msgid "commandline::userfriendly"
+msgstr "No se especificó línea de comando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:94
+#, fuzzy
+msgid "commandline::kvs"
+msgstr "No se especificó línea de comando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:127
+msgid "You are not connected to a server"
+msgstr "No está conectado a un servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_iconmanager.cpp:372
+msgid "Icon Table"
+msgstr "Tabla de Iconos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:190
+msgid "No "
+msgstr "No "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:196
+msgid "This module has no version informations: refusing to load it"
+msgstr ""
+"El módulo no contiene información acerca de la versión: se rechaza la carga"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:204
+msgid ""
+"This module was compiled for a different KVIrc version and can't be loaded"
+msgstr ""
+"Este módulo fue compilado para una versión diferente de KVIrc y no se cargará"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:232
+msgid "Failed to execute the init routine"
+msgstr "Fallo al ejecutar la rutina de inicio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:261
+#, c-format
+msgid "Loaded module '%s' (%s)"
+msgstr "Cargado el módulo '%s' (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:306
+#, c-format
+msgid "Unloaded module '%s'"
+msgstr "Descargado el módulo '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:45
+msgid "This window has no associated irc context"
+msgstr "Esta ventana no tiene contexto de irc asociado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:50
+#, c-format
+msgid "No such irc context (%d)"
+msgstr "No existe el contexto irc (%d)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:147
+msgid "Global idle timer must be started before using $my.globalIdle function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:103
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:215
+msgid "Window %Q not found"
+msgstr "Ventana %Q no encontrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:108
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:220
+msgid "Missing window id after the 'w' switch"
+msgstr "Falta id de ventana después del modificador 'w'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:121
+msgid "Can't log to file %Q"
+msgstr "No puedo grabar el registro al archivo %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:123
+msgid "This window has no logging capabilities"
+msgstr "Esta ventana no tiene capacidades de registro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:275
+msgid "Window with id '%Q' not found, returning empty string"
+msgstr "Ventana con id '%Q' no encontrada, devolviendo la cadena vacía"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:598
+msgid "Sound file '%Q' not found"
+msgstr "Archivo de sonido '%Q' no encontrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:604
+msgid "Unable to play sound '%Q'"
+msgstr "No es posible reproducir el sonido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:615
+msgid "Sorry , I can't find a sound system to use on this machine"
+msgstr ""
+"Lo siento, no puedo encontrar un sistema de sonido para usar en esta máquina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:617
+#, c-format
+msgid "Sound system detected to: %s"
+msgstr "Sistema de sonido detectado :%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:141
+msgid "Show at startup"
+msgstr "Mostrar al inicio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:154
+msgid "Did you know..."
+msgstr "Sabía usted que..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:220
+msgid "<b>Can't find any tip... :(</b>"
+msgstr "<b>No se ha podido encontrar ningún consejo... :(</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1544
+msgid "%Q algorytm is not supported"
+msgstr "el algoritmo %Q no está soportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1566
+msgid ""
+"KVIrc is compiled without OpenSSL support. $str.digest function disabled"
+msgstr ""
+"Kvirc fue compilado sin soporte OpenSSL. Función $str.digest desactivada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2030
+msgid "Invalid argument for ?d escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2034
+msgid "Missing argument for ?d escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2066
+msgid "Invalid argument for ?u escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2070
+msgid "Missing argument for ?u escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2097
+msgid "Invalid argument for ?x escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2101
+msgid "Missing argument for ?x escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2128
+msgid "Invalid argument for ?X escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2132
+msgid "Missing argument for ?X escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2189
+msgid "Invalid argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2193
+msgid "Missing argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:87
+msgid "Show URL List"
+msgstr "Mostrar Lista de URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:88
+msgid "Shows the URL list window"
+msgstr "Muestra la ventana de lista de URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:124
+msgid "&Configure"
+msgstr "&Configurar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:126
+msgid "Clo&se"
+msgstr "Cerrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:127
+msgid "&Module"
+msgstr "&Módulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:130
+msgid "&Load"
+msgstr "Cargar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:131
+msgid "&Save"
+msgstr "Guardar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:132
+msgid "&Clear"
+msgstr "Limpiar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:133
+msgid "&List"
+msgstr "&Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:136
+msgid "URL"
+msgstr "URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:137
+msgid "Window"
+msgstr "Ventana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:138
+msgid "Count"
+msgstr "Contador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:139
+msgid "Timestamp"
+msgstr "Marca de tiempo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:113
+msgid "Warning - KVIrc"
+msgstr "Advertencia - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+msgid "Select an URL."
+msgstr "Seleccione una URL."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:115
+msgid "&Remove"
+msgstr "Elimina&r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:269
+msgid "&Find Text"
+msgstr "Buscar texto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:280
+msgid "&Say to Window"
+msgstr "&Decir en ventana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+msgid "Window not found."
+msgstr "Ventana no encontrada."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:349
+msgid "URL Module Configuration"
+msgstr "Configuración del módulo URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:356
+msgid "Save URL list on module unload"
+msgstr "Guardar lista de URL al descargar el módulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:360
+msgid "Save columns width on URL list close"
+msgstr "Guardar la anchura de las columnas al cerrar la lista de URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1187
+msgid "&Cancel"
+msgstr "&Cancelar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:432
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1328
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:458
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1186
+msgid "&OK"
+msgstr "&Aceptar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:423
+msgid "Enable URL ban list"
+msgstr "Activar la lista de URL prohibidas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:435
+msgid "&Add Ban"
+msgstr "&Añadir prohibición"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:440
+msgid "&Remove Selected"
+msgstr "Elimina&r seleccionadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "URL Ban List"
+msgstr "Lista de URL prohibidas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+msgid "Select a ban."
+msgstr "Seleccione una prohibición."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:797
+#, fuzzy
+msgid "View URL list"
+msgstr "Mostrar Lista de URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:49
+msgid "Can't find the window with id '%Q'"
+msgstr "No pude encontrar la ventana con id '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:53
+msgid "The specified window (%Q) is not a channel"
+msgstr "La ventana especificada (%Q) no es un canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:78
+msgid "Destinaion file exists: no copy made"
+msgstr "El archivo de destino existe: no se hizo copia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:83
+msgid "Failed to copy from %Q to %Q"
+msgstr "Fallo al copiar desde %Q a %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:84
+msgid "Either the source doesn't exist or the destination can not be created"
+msgstr "El origen no existe o el destino no puede ser creado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:203
+msgid "Failed to write to file %Q: the destination couldn't be opened"
+msgstr "Falló la escritura al archivo %Q: el destino no puede ser abierto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:244
+msgid "Destination file exists: file not renamed"
+msgstr "El archivo de destino existe: no se renombra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:247
+msgid "Failed to rename %Q to %Q"
+msgstr "Fallo al renombrar %Q a %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:281
+msgid "Failed to make the directory %Q"
+msgstr "Fallo al crear el directorio %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:322
+msgid "Failed to remove the file %Q"
+msgstr "Fallo al borrar el archivo %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:365
+msgid "Failed to remove the directory %Q"
+msgstr "Fallo al borrar el directorio %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:482
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:628
+msgid "The specified directory does not exist '%Q'"
+msgstr "El directorio especificado no existe '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:730
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:824
+msgid "Can't open the file \"%Q\" for reading"
+msgstr "No puedo abrir el archivo \"%Q\" para lectura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:746
+msgid "Read error for file %Q"
+msgstr "Error de lectura para el archivo %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:754
+msgid ""
+"Read error for file %Q (have been unable to read the requested size in 1000 "
+"retries)"
+msgstr ""
+"Error de lectura del archivo %Q (no se pudo leer el tamaño solicitado en "
+"1000 reintentos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:920
+msgid "Can't open the file \"%Q\" for writing"
+msgstr "No puedo abrir el archivo \"%Q\" en modo escritura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/index.cpp:473
+msgid "Untitled"
+msgstr "Sin Título"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+msgid "Indexing help files"
+msgstr "Indexando archivos de ayuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:87
+msgid "Index"
+msgstr "Índice de la Ayuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:99
+msgid "Refresh index"
+msgstr "Actualizar índice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:211
+msgid "Full Text Search"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:203
+msgid "Using a wildcard within phrases is not allowed."
+msgstr "El uso de comodines con frases no está permitido."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:212
+msgid "The closing quotation mark is missing."
+msgstr "No hay cierre de comillas."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:312
+msgid "Help Browser"
+msgstr "Navegador de la Ayuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:201
+msgid "Request List"
+msgstr "Solicitar Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:207
+msgid "Stop list download"
+msgstr "Detener descarga de la Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:211
+msgid ""
+"<center><b>/LIST command parameters:</b><br>Many servers accept special "
+"parameters that allow you to filter the returned entries.<br>Commonly, "
+"masked channel names (*kvirc*) are accepted as parameters, as well as "
+"strings like <b>c&lt;n</b> or <b>c&gt;n</b> where <b>n</b> is the minimum or "
+"maximum of users on the channel.</center>"
+msgstr ""
+"<center><b>/LIST comando parámetros:</b><br>Muchos servidores aceptan "
+"parámetros especiales que permiten filtrar las entradas devueltas."
+"<br>Normalmente, se aceptan nombres de canales con máscara como parámetros "
+"(*kvirc*), y cadenas como <b>c&lt;n</b> o <b>c&gt;n</b> donde <b>n</b> es "
+"número mínimo o máximo de usuarios en el canal.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:220
+msgid "Users"
+msgstr "Usuarios"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:221
+msgid "Topic"
+msgstr "Tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:262
+msgid "Sent list request, waiting for reply..."
+msgstr "Enviada petición de lista, esperando respuesta..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:265
+msgid "Cannot request list: No active connection"
+msgstr "No puedo pedir la lista: no hay una conexión activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:389
+msgid "Stopping the list download..."
+msgstr "Detener la descarga de la lista..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:276
+msgid "Cannot stop list download, no active connection."
+msgstr "No puedo detener la descarga de la lista, no hay una conexión activa."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:125
+#, c-format
+msgid "Connected to %s (%s)"
+msgstr "Conectado a %s (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:293
+msgid "List cannot be requested: Not connected to a server"
+msgstr "No se puede solicitar la lista: No está conectado a un servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:316
+#, c-format
+msgid "Channel List [IRC Context %u]"
+msgstr "Lista de canales [Contexto IRC %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:319
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel List</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Lista de Canales</b></font> <font color=\"%s\">"
+"[Contexto IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:326
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel list</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Lista de canales</b></font> <font color=\"%s\">"
+"[Contexto IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:342
+msgid "You cannot export an empty list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:350
+#, fuzzy
+msgid "Channel list for %Q - %Q"
+msgstr "El modo de canal para \r!c\r%Q\r es %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:353
+#, fuzzy
+msgid "Channel list"
+msgstr "Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:382
+#, fuzzy
+msgid "Choose filename"
+msgstr "Escoja un nombre de archivo - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:356
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:383
+#, fuzzy
+msgid "Configuration files (*.kvc)"
+msgstr "Guardar configuración"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:398
+msgid "Reset"
+msgstr "Reiniciar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:435
+msgid "Channels list download finished"
+msgstr "Finalizada la descarga de la lista de canales"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:472
+msgid "Processing list: %Q"
+msgstr "Procesando lista: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/libkvilist.cpp:63
+msgid "List window alread open for this IRC context"
+msgstr "Ya está abierta la lista de ventanas para este contexto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:70
+msgid "Terminal"
+msgstr "Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:73
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:77
+#, c-format
+msgid "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+msgstr "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:59
+msgid "Terminal emulator"
+msgstr "Emulador de terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:63
+msgid "Close this window"
+msgstr "Cerrar esta ventana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:91
+msgid "Can't create the terminal emulation part"
+msgstr "No puedo crear la parte de emulación de terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:96
+msgid "Can't retrieve the terminal emulation factory"
+msgstr "No puedo recuperar la factoría de emulación de terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:95
+msgid "KVIrc"
+msgstr "KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:98
+msgid "Context"
+msgstr "Contexto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:155
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:100
+msgid "Away"
+msgstr "Ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:102
+msgid "&Configure KVIrc..."
+msgstr "&Configurar KVIrc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:104
+msgid "&About KVIrc"
+msgstr "&Acerca de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:109
+msgid "Un&dock"
+msgstr "Quitar anclaje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:168
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:112
+msgid "Ctrl+Q"
+msgstr "Ctrl+S"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:143
+msgid "Nothing is happening..."
+msgstr "No pasa nada..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:285
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:144
+msgid "Just idling..."
+msgstr "Toy haciendo el vago..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:145
+msgid "Dum de dum de dum..."
+msgstr "Dum de dum de dum..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:146
+msgid "Hey man... do something!"
+msgstr "Vamos hombre... haz algo!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:147
+msgid "Umpf!"
+msgstr "Umpf!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:148
+msgid "Silence speaking"
+msgstr "Hablando en silencio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:149
+msgid "Are ya here?"
+msgstr "Tas ahí?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:150
+msgid "The world has stopped?"
+msgstr "Se ha parado el mundo?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:151
+msgid "Everything is all right"
+msgstr "Todo va bien"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:152
+msgid "idle()"
+msgstr "vagueando()"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:153
+msgid "It's so cold here..."
+msgstr "Hace tanto frío aquí.."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:295
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:154
+msgid "Do not disturb... watching TV"
+msgstr "No molestar... viendo la tele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:155
+msgid "Just vegetating"
+msgstr "Toy vegetando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:156
+msgid "Hey... are ya sure that your network is up?"
+msgstr "Eh... Estás seguro de que la red funciona?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:298
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:157
+msgid "Seems like the world has stopped spinning"
+msgstr "Parece que el mundo ha dejado de girar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:299
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:158
+msgid "This silence is freaking me out!"
+msgstr "Este silencio me está volviendo loco!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:300
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:159
+msgid "Mieeeeeowww!"
+msgstr "Miauuuuuuu!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:301
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:160
+msgid "idle idle idle idle!"
+msgstr "parao parao parao parao!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Hide Window"
+msgstr "Esconder Ventana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Show Window"
+msgstr "Mostrar Ventana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:428
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:260
+msgid "Away on all"
+msgstr "Ausentar en todos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:263
+msgid "Back on all"
+msgstr "Regresar en todos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:450
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:282
+msgid "Back on %1"
+msgstr "Regresar a %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:453
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:285
+msgid "Away on %1"
+msgstr "Ausentar de %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1238
+msgid "Alias"
+msgstr "Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1217
+msgid "No item selected"
+msgstr "No hay un elemento seleccionado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:232
+msgid "Rename"
+msgstr "Renombrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:236
+msgid "Edit the alias or namespace name"
+msgstr "Editar alias. o nombre del espacio de nombres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+msgid "Add Alias"
+msgstr "Añadir alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:429
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Add Namespace"
+msgstr "Añadir espacio de nombres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:440
+msgid "Remove Selected"
+msgstr "Eliminar seleccionados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:449
+msgid "Export Selected..."
+msgstr "Exportar seleccionados..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:455
+#, fuzzy
+msgid "Export Selected in singles files..."
+msgstr "Exportar seleccionados..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:462
+msgid "Export All..."
+msgstr "Exportar todos..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:470
+msgid "Find In Aliases..."
+msgstr "Encontrar en alias..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:476
+msgid "Collapse All Namespaces"
+msgstr "Contraer todos los espacios de nombres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:508
+msgid "Find In Aliases"
+msgstr "Encontrar en alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:509
+msgid ""
+"Please enter the text to be searched for. The matching aliases will be "
+"highlighted."
+msgstr ""
+"Por favor, introduzca el texto a buscar. Los alias concordantes serán "
+"resaltados."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "Alias Export"
+msgstr "Exportar alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#, fuzzy
+msgid "There is not selection!"
+msgstr "No hay conexión que aceptar!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:615
+#, fuzzy
+msgid "The file \"%Q\" exists. Do you want to replace it ?"
+msgstr "El archivo %s ya existe.<br>Sobreescribirlo?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#, fuzzy
+msgid "Replace file"
+msgstr "Reemplazar con"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+msgid "Yes to All"
+msgstr "Sí a todo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "There exported file would be empty: cowardly refusing to write it"
+msgstr "El archivo exportado podría estar vacío: por precaución, no se grabar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:786
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:411
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1133
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:398
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:745
+msgid "Choose a Filename - KVIrc"
+msgstr "Escoja un nombre de archivo - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Write Failed - KVIrc"
+msgstr "Falló la escritura - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+msgid "Unable to write to the alias file."
+msgstr "No fue posible escribir en el archivo de alias."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:793
+msgid "Do you really want to remove the alias \"%Q\" ?"
+msgstr "Realmente quiere borrar el alias \"%Q\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:795
+msgid "Do you really want to remove the namespace \"%Q\" ?"
+msgstr "Realmente quiere borrar el espacio de nombres \"%Q\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:797
+msgid "Please note that all the children items will be deleted too."
+msgstr ""
+"Por favor, tenga en cuenta que todos los elementos hijos serán borrados "
+"también."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+msgid "Remove item"
+msgstr "Borrar elemento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:875
+msgid "Missing Alias Name"
+msgstr "Falta el nombre de alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:876
+msgid "You must specify a valid name for the alias"
+msgstr "Debe especificar un nombre válido para el alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:877
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:890
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:904
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:915
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:946
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:959
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:973
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1128
+msgid "Ok, Let me try again..."
+msgstr "OK, permítame intentarlo de nuevo..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:888
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:902
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:913
+msgid "Bad Alias Name"
+msgstr "Nombre de alias erróneo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:944
+msgid "Missing Namespace Name"
+msgstr "Falta el nombre del espacio de nombres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:945
+msgid "You must specify a valid name for the namespace"
+msgstr "Debe especificar un nombre válido para el espacio de nombres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:957
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:971
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:982
+msgid "Bad Namespace Name"
+msgstr "Nombre de espacio de nombres erróneo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:958
+msgid ""
+"Namespace names can contain only letters, digits, underscores and '::' "
+"namespace separators"
+msgstr ""
+"Los nombres de los espacios de nombres solo pueden contener letras, dígitos, "
+"subrayados y separadores de espacios de nombres ('::')"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:972
+msgid ""
+"Stray ':' character in namespace name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+"Carácter ':' perdido en el nombre del espacio de nombres: quería decir... "
+"<namespace>::<nombre>?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:983
+msgid "Found an empty namespace in namespace name"
+msgstr "Se encontró un nombre de espacio de nombres vacío "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+msgid "Please enter the name for the new alias"
+msgstr "Por favor, teclee el nombre del nuevo alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Please enter the name for the new namespace"
+msgstr "Por favor, teclee el nombre del nuevo espacio de nombres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+msgid "Rename Alias"
+msgstr "Renombrar alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+msgid "Please enter the new name for the alias"
+msgstr "Por favor, teclee el nuevo nombre para el alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Rename Namespace"
+msgstr "Renombrar espacio de nombres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Please enter the new name for the namespace"
+msgstr "Por favor, introduzca el nuevo nombre para el espacio de nombres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1126
+#, fuzzy
+msgid "Alias already exists"
+msgstr "Dirección en uso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1139
+msgid "This name is already in use. Please choose another one."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1138
+msgid "Namespace already exists"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1140
+#, fuzzy
+msgid "Ok, let me try again..."
+msgstr "OK, permítame intentarlo de nuevo..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1227
+msgid "Namespace"
+msgstr "Espacio de nombres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1332
+msgid "Alias Editor"
+msgstr "Editor de alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:62
+msgid "Join Channels"
+msgstr "Unirse a Canales"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:183
+msgid "Name"
+msgstr "Nombre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:86
+msgid "Password"
+msgstr "Clave"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:641
+msgid "&Join"
+msgstr "Unirse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:108
+msgid "Show this window after connecting"
+msgstr "Mostrar esta ventana después de conectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:163
+msgid "Recent Channels"
+msgstr "Canales Recientes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:182
+msgid "Registered Channels"
+msgstr "Canales Registrados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:133
+msgid "Choose the file to share"
+msgstr "Escoja el archivo a compartir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:178
+msgid "No such channel/netmask entry in the database"
+msgstr ""
+"No existe una entrada para ese canal/máscara de red en la base de datos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:198
+msgid "Registered channel list:"
+msgstr "Lista de canales registrados:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:208
+#, c-format
+msgid "Channel: %c%s@%s"
+msgstr "Canal: %c%s@%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:213
+#, c-format
+msgid " Property: %s=%s"
+msgstr " Propiedad: %s=%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:220
+#, c-format
+msgid "Total %d channels"
+msgstr "Total %d canales"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:86
+msgid "Property Editor"
+msgstr "Editor de Propiedades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:101
+msgid "Property"
+msgstr "Propiedad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:102
+msgid "Value"
+msgstr "Valor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:111
+msgid "&New"
+msgstr "&Nuevo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:215
+msgid "Mask Editor"
+msgstr "Editor de máscaras"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:219
+msgid ""
+"Insert a mask for this user.<br>It can contain the wildcard characters '*' "
+"and '?'."
+msgstr ""
+"Inserta una máscara para este usuario.<br>Esta puede contener '*' y '?' como "
+"caracteres comodín."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:230
+msgid ""
+"<center>This the <b>nickname</b> that will match this user, default value is "
+"the registered name.</center>"
+msgstr ""
+"<center>Este es el <b>nick</b> que coincidirá con este usuario, el valor por "
+"defecto es el nombre registrado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:241
+msgid ""
+"<center>This the <b>username</b> that will match this user. <b>*</b> will "
+"match any username.</center>"
+msgstr ""
+"<center>Este es el <b>nombre de usuario</b> que coincidirá con este usuario. "
+"<b>*</b> coincidirá con cualquier nombre de usuario.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:252
+msgid ""
+"<center>This the <b>hostname</b> that will match this user. <b>*</b> will "
+"match any hostname.</center>"
+msgstr ""
+"<center>Este es el <b>nombre de máquina</b> que coincidirá con este usuario. "
+"<b>*</b> coincidirá con cualquier nombre de máquina.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:333
+msgid "Registered User Entry"
+msgstr "Entrada de Usuarios Registrados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:145
+msgid "Name:"
+msgstr "Nombre:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:345
+#, fuzzy
+msgid "Comment:"
+msgstr "Contador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:355
+msgid "Masks:"
+msgstr "Máscaras:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:216
+msgid "&Add..."
+msgstr "&Añadir..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:377
+msgid "&Edit"
+msgstr "&Editar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:385
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:414
+msgid "Identity"
+msgstr "Identidad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:393
+msgid "Notify when user is online"
+msgstr "Notificar cuando el usuario está conectado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:396
+msgid "Notify nicknames:"
+msgstr "Notificar nicks:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:401
+msgid "<center>You can enter a space separated list of nicknames.</center>"
+msgstr ""
+"<center>Puedes entrar una lista de nicks separados por espacios.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:426
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:383
+msgid "Avatar"
+msgstr "Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:433
+#, fuzzy
+msgid "Use custom color in userlist"
+msgstr "Usar los mismos colores que en la lista de usuarios"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:441
+msgid "All Properties..."
+msgstr "Todas las propiedades ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:448
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:231
+msgid "Properties"
+msgstr "Propiedades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:458
+#, fuzzy
+msgid "Enable ignore for this user"
+msgstr "Almacenar un avatar para este usuario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:460
+#, fuzzy
+msgid "Ignore features"
+msgstr "Ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:465
+#, fuzzy
+msgid "Ignore query-messages"
+msgstr "Mensaje de usuario ignorado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:468
+#, fuzzy
+msgid "Ignore channel-messages"
+msgstr "Mensaje de usuario ignorado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:471
+#, fuzzy
+msgid "Ignore notice-messages"
+msgstr "Mensaje de usuario ignorado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:474
+#, fuzzy
+msgid "Ignore ctcp-messages"
+msgstr "Mensaje de usuario ignorado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:477
+#, fuzzy
+msgid "Ignore invites"
+msgstr "Ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:480
+#, fuzzy
+msgid "Ignore DCCs"
+msgstr "Ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:486
+msgid "Ignore"
+msgstr "Ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:94
+#, fuzzy
+msgid "Notify disabled"
+msgstr "Lista de Notificaciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:96
+#, fuzzy
+msgid "Notify as: "
+msgstr "Lista de Notificaciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:105
+#, fuzzy
+msgid "No comment set"
+msgstr "No hay contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:107
+#, fuzzy
+msgid "Comment: "
+msgstr "Contador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:176
+msgid "Registered Users - KVIrc"
+msgstr "Usuarios registrados - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:317
+msgid "Flags"
+msgstr "Indicadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:192
+msgid ""
+"<center>This is the list of registered users. KVIrc can automatically "
+"recognize and associate properties to them.<br>Use the buttons on the right "
+"to add, edit and remove entries. The \"notify\" column allows you to quickly "
+"add users to the notify list. Notify list fine-tuning can be performed by "
+"editing the entry properties.</center>"
+msgstr ""
+"<center>Esta es la lista de usuarios registrados. KVIrc puede reconocer y "
+"asociarles propiedades de forma automática.<br>Usa los botones de la derecha "
+"para añadir, editar o borrar entradas.<br>La columna \"notificar\" te "
+"permite añadir usuarios a la lista de notificaciones rápidamente. El ajuste "
+"de la lista de notificaciones puede hacerse editando la entrada de "
+"propiedades.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:208
+msgid "Add (Wizard)..."
+msgstr "Añadir (asistente)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:211
+msgid "Add a registered user by means of a user-friendly wizard."
+msgstr "Añadir un usuario registrado por medio de un amigable asistente."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:219
+msgid "Open the edit dialog to create a new user entry."
+msgstr "Abrir el diálogo de edición para crear una nueva entrada de usuario."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:223
+msgid "&Add Group..."
+msgstr "&Añadir Grupo..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:226
+msgid "Adds a new group"
+msgstr "Añade un nuevo grupo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:234
+msgid "Remove the currently selected entries."
+msgstr "Borrar las entradas actualmente seleccionadas."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:239
+msgid "&Edit..."
+msgstr "&Editar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:243
+msgid "Edit the first selected entry."
+msgstr "Este botón permitirá editar la primera entrada seleccionada."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:250
+msgid "Export To..."
+msgstr "Exportar a..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:254
+msgid ""
+"Export the selected entries to a file.<br>All the data associated with the "
+"selected registered users will be exported.<br>You (or anyone else) can "
+"later import the entries by using the \"Import\" button."
+msgstr ""
+"Exporta las entradas seleccionadas a un archivo.<br>Todos los datos "
+"asociados a los usuarios registrados seleccionados serán exportados."
+"<br>Usted, o cualquier otro, puede importar las entradas más tarde usando el "
+"botón \"Importar\"."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:259
+msgid "Import From..."
+msgstr "Importar Desde..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:262
+msgid ""
+"Import entries from a file exported earlier by the \"export\" function of "
+"this dialog."
+msgstr ""
+"Importa las entradas desde un archivo exportado anteriormente por la función "
+"\"Exportar\" de este diálogo."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:399
+#, fuzzy
+msgid "Group name:"
+msgstr "Nombre de menú emergente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:442
+msgid "Move to group"
+msgstr "Mover al grupo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:483
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:486
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:487
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:491
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:690
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_useridentity.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:962
+msgid "Default"
+msgstr "Por defecto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:674
+msgid "No entries selected."
+msgstr "No hay entradas seleccionadas."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:687
+#, fuzzy
+msgid "Can't open file %Q for writing."
+msgstr "No puedo abrir el archivo %s para escribir."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:772
+msgid "Can't export the registered users database: Write error."
+msgstr ""
+"No se pudo exportar la base de datos de usuarios registrados: Error de "
+"escritura."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:793
+#, c-format
+msgid "Can't open file %s for reading."
+msgstr "No puedo abrir el archivo %s para lectura."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:804
+#, c-format
+msgid "The file %s doesn't appear to be a valid registered users database."
+msgstr ""
+"El archivo %s no parece ser una base de datos de usuarios registrados válida."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:811
+#, c-format
+msgid "The file %s contains an invalid registered users database version."
+msgstr ""
+"El archivo %s contiene una versión no válida de la base de datos de usuarios "
+"registrados."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:892
+msgid "Can't import the registered users database: Read error."
+msgstr ""
+"No se pudo importar la base de datos de usuarios registrados: Error de "
+"lectura."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:78
+msgid "User Registration Wizard - KVIrc"
+msgstr "Asistente de Registro de usuarios - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:89
+msgid ""
+"<p>Welcome to the user registration wizard.<br>This process allows you to "
+"add an IRC user to the database and set properties for that user. KVIrc will "
+"be (hopefully) able to recognize the user, add him to the notify list, and "
+"display the associated avatar.<br><br>First of all, you must insert an "
+"<b>entry name or real name</b> for the user you're going to register. The "
+"name will be used to identify the database entry and has no specific "
+"requirements, it can be a given name, nickname, or just some text to remind "
+"you of the real person.<br>Examples: \"George W Bush\", \"Dubya\".\n"
+"</p>"
+msgstr ""
+"<p>Bienvenido al asistente de usuarios registrados.<br>Este proceso te "
+"permite añadir un usuario IRC a la base de datos de KVIrc y configurar "
+"algunas de sus propiedades. KVIrc será capaz (afortunadamente) de reconocer "
+"el usuario, añadirlo a la lista de notificaciones y mostrar su avatar "
+"asociado.<br><br>Primeramente, debes escribir el <b>nombre de la entrada o "
+"el nombre real</b> del usuario que vas a registrar. El nombre será usado "
+"para identificar la entrada de la base de datos y no tiene ningún "
+"requerimiento específico, puede ser un nombre, un nick o solo un texto que "
+"te recuerde a la persona.<br>Ejemplos: \"Lorena Bernal\", \"Mamifufi\".\n"
+"</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:97
+msgid "Step 1: Entry Name"
+msgstr "Paso 1: Nombre Entrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:112
+msgid ""
+"<p>A registered user is identified by one or more <b>IRC masks</b>.<br>A "
+"mask must be in the following form:<br><b>nickname!username@hostname</"
+"b><br>and can contain wildcard characters '*' and '?'. Be careful in "
+"choosing the masks, as they are the only way to verify the identity of a "
+"registered user.<br><br>You can enter at most two masks here, if you wish to "
+"add more masks, use the \"<b>Edit</b>\" button in the Registered Users "
+"dialog. You must enter at least one mask.</p>"
+msgstr ""
+"<p>Un usuario registrado es identificado por una o más <b>máscaras de IRC</"
+"b>.<br>Una máscara debe cumplir con el siguiente formato:<br><b>nick!"
+"nombre_usuario@máquina</b><br>y puede contener los comodines '*' y '?'.Sea "
+"cuidadoso al escoger las máscaras: son el único método para verificar la "
+"identidad de un usuario registrado.<br><br>Puedes introducir hasta dos "
+"máscaras; si deseas añadir más, utiliza el botón \"<b>Editar</b>\" en el "
+"diálogo de Usuarios Registrados. Debes poner como mínimo una máscara.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:170
+msgid "Step 2: Mask Selection"
+msgstr "Paso 2: selección de máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:182
+msgid ""
+"<p>If you want to store an avatar image for this user, you can set it here. "
+"KVIrc will show the avatar in the userlist next to the user's nickname."
+"<br>An avatar can be in any supported image format (PNG is recommended). "
+"Keep in mind that KVIrc stores avatars in memory and has to resize them to "
+"fit in the userlist, thus it's better to use small, low-resolution images.</"
+"p>"
+msgstr ""
+"<p>Si quieres almacenar una imagen de avatar para este usuario, puedes "
+"ponerla aquí KVIrc lo mostrará junto al nick en la lista de usuarios.<br>Un "
+"avatar puede estar en cualquier formato de imagen reconocido (se recomienda "
+"PNG). Recuerda que KVIrc mantiene los avatares en memoria y tiene que "
+"redimensionarlos para encajarlos en la lista de usuarios, de modo que es "
+"mejor usar pequeñas imágenes de baja resolución.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:190
+msgid "Store an avatar for this user"
+msgstr "Almacenar un avatar para este usuario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:195
+msgid "Step 3: Avatar Selection"
+msgstr "Paso 3: selección del Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:206
+msgid ""
+"<p>If you want to be notified when this user is online or goes offline, you "
+"must specify the list of nicknames that KVIrc will look for.<br><br>You can "
+"enter at most two nicknames here, if you wish to add more nicknames, use the "
+"\"<b>Edit</b>\" button in the Registered Users dialog.</p>"
+msgstr ""
+"<p>Si deseas ser avisado cuando este usuario se conecte o desconecte, debes "
+"especificar la lista de nicks en la que lo buscará KVIrc.<br><br>Puedes "
+"introducir hasta dos nicks aquí, si deseas añadir más, utiliza el botón "
+"\"<b>Editar</b>\" en el Diálogo de Usuarios Registrados.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:215
+msgid "Add this user to the notify list"
+msgstr "Añadir este usuario a la lista de notificaciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:342
+msgid "Nickname:"
+msgstr "Nick:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:225
+msgid "Nickname 2:"
+msgstr "Nick 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:239
+msgid "Step 4: Notify List"
+msgstr "Paso 4: Lista de Notificaciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:251
+msgid ""
+"<p>That's it. The user registration has been completed.<br><br>Click "
+"\"<b>Finish</b>\" to close this dialog.</p>"
+msgstr ""
+"<p>Esto es todo.El registro del usuario se realizó correctamente."
+"<br><br>Pulsa \"Finalizar\" para cerrar este diálogo.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:254
+msgid "Registration Complete"
+msgstr "Registro completado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:695
+msgid "No name specified"
+msgstr "No se ha especificado nombre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:209
+msgid "User already registered: found exact name match"
+msgstr "Usuario ya registrado: se encontró coincidencia exacta con el nombre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:222
+msgid "Mask %Q is already used to identify user %s"
+msgstr "La máscara %Q ya se usa para identificar al usuario %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:275
+msgid "User not found (%Q)"
+msgstr "Usuario no encontrado (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:403
+msgid "No mask specified"
+msgstr "Máscara no especificada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:524
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:708
+msgid "User %Q not found"
+msgstr "Usuario %Q no encontrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:355
+msgid "Mask %Q already used to identify user %Q"
+msgstr "Máscara %Q ya usada para identificar al usuario %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:410
+msgid "Mask %Q not found"
+msgstr "Máscara %Q no encontrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:701
+msgid "No property specified"
+msgstr "No se especificó propiedad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:808
+msgid "Registered users database dump:"
+msgstr "Volcado de usuarios registrados de la base de datos:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:819
+msgid " User: %c%Q"
+msgstr "Usuario: %c%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:823
+msgid " Warning: this user has no registration masks"
+msgstr " Atención: este usuario no tiene máscaras de registro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:827
+msgid " Mask: %Q!%Q@%Q"
+msgstr " máscara: %Q!%Q@%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:838
+msgid " Property: %Q=%Q"
+msgstr " Propiedad: %Q=%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:841
+msgid " No properties"
+msgstr " Sin propiedades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:847
+#, c-format
+msgid "Total: %d matching users (of %d in the database)"
+msgstr "Total: %d usuarios coincidentes (de %d en la base de datos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:197
+msgid "Manage Script-Based Addons"
+msgstr "Gestionar funcionalidades adicionales basadas en Script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1155
+msgid "Configure"
+msgstr "Configurar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:225
+msgid "Show Help"
+msgstr "Mostrar Ayuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:231
+msgid "Uninstall"
+msgstr "Desinstalar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:243
+msgid "Install Addon..."
+msgstr "Instalar Funcionalidad Adicional..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:247
+msgid "More Addons..."
+msgstr "Más Funcionalidades Adicionales..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:333
+msgid "Do you really want to uninstall the addon \"%1\" ?"
+msgstr "Realmente quieres desinstalar la funcionalidad adicional \"%1\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+msgid "Confirm addon uninstallation"
+msgstr "Confirmar la desinstalación de la funcionalidad adicional"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:354
+msgid "Please select the addon installation file"
+msgstr ""
+"Por favor, selecciona el archivo de instalación de la funcionalidad adicional"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:144
+msgid "%cAddon id %Q, version %Q%c"
+msgstr "%cFuncionalidad id %Q, versión %Q%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:145
+msgid "Name: %Q"
+msgstr "Nombre: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:67
+msgid "Description: %Q"
+msgstr "Descripción: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:152
+#, c-format
+msgid "Total: %d addons installed"
+msgstr "Total: %d funcionalidades instaladas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:192
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:571
+msgid "Uninstalling existing addon version %Q"
+msgstr "Desinstalando la versión %Q de la funcionalidad adicional existente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:384
+msgid "The addon \"%1\" does not exist"
+msgstr "La funcionalidad adicional \"%1\" no existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:238
+msgid "The addon \"%1\" has no configure callback set"
+msgstr ""
+"La funcionalidad adicional \"%1\" no tiene definida una función de "
+"configuración"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:285
+msgid "The addon \"%1\" has no help callback set"
+msgstr ""
+"La funcionalidad adicional \"%1\" no tiene definida una función de ayuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:527
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:377
+msgid "Internal error: call a head-shrinker"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:536
+msgid "The specified version \"%Q\" is not a valid version string"
+msgstr "La versión especificada \"%Q\" no es una cadena de versión válida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:542
+msgid "The specified KVIrc version \"%Q\" is not a valid version string"
+msgstr ""
+"La versión de KVIrc especificada \"%Q\" no es una cadena válida de versión"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:548
+msgid ""
+"This KVIrc executable is too old to run this addon (minimum version required "
+"is %Q)"
+msgstr ""
+"Este ejecutable de KVIrc es demasiado antiguo para ejecutar esta "
+"funcionalidad adicional (la versión mínima necesaria es %Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:553
+msgid "Attempting to register addon \"%Q\" with version %Q"
+msgstr ""
+"Intentando registrar la funcionalidad adicional \"%Q\" con la versión %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:565
+msgid ""
+"The script addon \"%Q\" already exists with version %Q which is higher than %"
+"Q"
+msgstr ""
+"El script de funcionalidad adicional \"%Q\" ya existe con la versión %Q que "
+"es mayor que %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:579
+msgid "Script registration failed"
+msgstr "Falló el registro del script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:584
+msgid "Script succesfully registered"
+msgstr "Script registrado satisfactoriamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:102
+#, fuzzy, c-format
+msgid "%s (%s) (%s:%u)"
+msgstr "%Q establecida [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:104
+#, fuzzy, c-format
+msgid "%s (%s)"
+msgstr "%1 es %2 (%3)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:107
+#, c-format
+msgid "%s (%s:%u)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:109
+#, fuzzy, c-format
+msgid "%s"
+msgstr "%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:112
+#, fuzzy, c-format
+msgid "[IDENT]: %s"
+msgstr "[SOCKET]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:119
+#, fuzzy
+msgid "Shutting down identd service (spontaneous action)"
+msgstr "Continuando conexión directa al servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:124
+#, fuzzy
+msgid "Shutting down identd service (requested action)"
+msgstr "Continuando conexión directa al servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:225
+#, fuzzy
+msgid "Can't start the ident service : socket() failed"
+msgstr "No puedo configurar un socket en escucha : falló el enlace (bind)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:231
+#, fuzzy
+msgid "Can't start the ident service : async setting failed"
+msgstr "No puedo configurar un socket en escucha : falló el enlace (bind)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:237
+msgid "Can't enable the ident service : can't setup the listen address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:243
+#, fuzzy
+msgid "Can't start the ident service : bind() failed"
+msgstr "No puedo configurar un socket en escucha : falló el enlace (bind)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:249
+#, fuzzy
+msgid "Can't start the ident service : listen() failed"
+msgstr "No puedo configurar un socket en escucha : falló el enlace (bind)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:263
+msgid "Can't start the ident service on IpV6 : socket() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:269
+msgid "Can't start the ident service on IpV6 : async setting failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:277
+msgid "Can't enable the ident service on IpV6 : can't setup the listen address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:285
+#, fuzzy
+msgid "Can't start the ident service on IpV6 : bind() failed"
+msgstr "No puedo configurar un socket en escucha : falló el enlace (bind)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:294
+#, fuzzy
+msgid "Can't start the ident service on IpV6 : listen() failed"
+msgstr "No puedo configurar un socket en escucha : falló el enlace (bind)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:310
+msgid "Starting identd service (IpV4/V6 on separate namespaces)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:313
+msgid "Starting identd service (IpV4/V6 in IpV6 namespace)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:318
+msgid "Starting identd service (IpV4)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:322
+msgid "Service startup (IpV4)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:412
+#, fuzzy
+msgid "Identd accepting connection"
+msgstr "conexión segura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:435
+msgid "Identd socket error : dropping connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:440
+msgid "Identd connection closed by remote host"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:461
+msgid "Identd processing request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:476
+msgid "Empty request (EOT ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:487
+msgid "Dropping connection (request too long)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:500
+msgid "Timed out while waiting for the request : dropping connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/libkvilinks.cpp:74
+msgid "Links window alread open for this IRC context"
+msgstr "La ventana de enlaces ya está abierta para este contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:57
+msgid "Request Links"
+msgstr "Solicitar Enlaces"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:70
+msgid "Link"
+msgstr "Enlaces"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:71
+msgid "Hops"
+msgstr "Saltos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:72
+msgid "Description"
+msgstr "Descripción"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:90
+msgid "(None)"
+msgstr "(Nada)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:112
+msgid "Sent links request, waiting for reply..."
+msgstr "Enviada petición de enlaces, esperando respuesta..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:115
+msgid "Cannot request links: No active connection"
+msgstr "No puedo pedir enlaces: No hay una conexión activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:128
+msgid "Links cannot be requested: Not connected to a server"
+msgstr "Los enlaces no pueden ser solicitados: No está conectado a un servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:153
+msgid "Links for %Q [IRC Context %u]"
+msgstr "Enlaces para %Q [Contexto IRC %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:164
+msgid ""
+"<nobr><font color=\"%s\"><b>Links for %Q</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Enlaces para %Q</b></font> <font color=\"%s\">"
+"[Contexto IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:194
+msgid "Received end of links."
+msgstr "Recibido final de enlaces."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:235
+#, c-format
+msgid ""
+"Broken link: Missing parent (%s) for %s (%d hops): %s (used /LINKS <mask> ?)"
+msgstr ""
+"Enlace roto: falta el padre (%s) para (%s) (%d saltos): %s (se usó /LINKS "
+"<máscara> ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:238
+#, c-format
+msgid "%s: Parent link %s"
+msgstr "%s : Enlace padre %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:242
+msgid "Warning: No root link was sent by the server, the stats may be invalid."
+msgstr ""
+"Aviso: El servidor no envió el enlace raíz : las estadísticas pueden ser "
+"incorrectas."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:278
+msgid "%c%cLinks for %Q"
+msgstr "%c%cEnlaces para %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts listed"
+msgstr "Total máquinas listadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts in the network"
+msgstr "Total de máquinas en la red"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:282
+#, c-format
+msgid "Wildcard servers (hubs?): %d"
+msgstr "Servidores comodines (concentradores?): %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:283
+msgid "Direct links: %d (~%d.%d %)"
+msgstr "Enlaces directos: %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:284
+msgid "Close links (1 <= hops <= 3): %d (~%d.%d %)"
+msgstr "Enlaces cercanos (1 <= saltos <= 3): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:285
+msgid "Mid-range links (4 <= hops <= 6): %d (~%d.%d %)"
+msgstr "Enlaces media distancia (4 <= saltos <= 6): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:286
+msgid "Distant links (7 <= hops): %d (~%d.%d %)"
+msgstr "Enlaces lejanos (7 <= saltos): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:287
+#, c-format
+msgid "Broken (unknown) links: %d"
+msgstr "Enlaces erróneos (desconocidos): %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:288
+#, c-format
+msgid "Maximum links per host: %d [%s]"
+msgstr "Enlaces mínimos por máquina: %d [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:289
+#, c-format
+msgid "Total links: %d"
+msgstr "Enlaces totales: %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:290
+#, c-format
+msgid "Maximum hops: %d [%s]"
+msgstr "Máximo salto: %d [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:291
+#, c-format
+msgid "Average hops: ~%d.%d"
+msgstr "Salto promedio: ~%d.%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:294
+msgid "Incomplete LINKS result, no stats available"
+msgstr "Resultado parcial para LINKS, no hay estadísticas disponibles"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:747
+msgid "You're not connected to a server"
+msgstr "No está conectado a un servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:404
+#, c-format
+msgid "Processing link: %s"
+msgstr "Procesando enlace: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:419
+msgid "Broken message syntax, can't extract hops number, assuming 0"
+msgstr ""
+"Sintaxis de mensaje errónea, no puedo extraer el número de saltos, se asume 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:86
+msgid "< &Back"
+msgstr "< Atrás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:87
+msgid "&Next >"
+msgstr "Siguie&nte >"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:282
+msgid "Finish"
+msgstr "Terminar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:164
+msgid ""
+"<p><h2>Welcome :)</h2>This is your first time running this version of KVIrc."
+"<br>This wizard will guide you through the few steps required to complete "
+"the setup.<br><br>If you had a previous version of KVIrc installed, no "
+"worries. You will have a chance to preserve the old configuration.</"
+"p><p>Click \"<b>Next</b>\" to proceed.</p>"
+msgstr ""
+"<p><h2>Bienvenido :)</h2>Esta es la primera ejecución de esta versión de "
+"KVIrc.<br>Este asistente le guiará a través de los pocos pasos necesarios "
+"para completar la configuración.<br><br>Si tenía instalada una versión "
+"anterior de KVIrc no se preocupe, tendrá oportunidad de preservar su "
+"configuración.</p><p>Pulse \"<b>Siguiente</b>\" para continuar.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:176
+msgid "Welcome to KVIrc"
+msgstr "Bienvenido a KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:187
+msgid ""
+"<p>All of the files in this distribution are covered by the GPL. In human "
+"terms this can be read as follows:<br><ul><li><b>KVIrc is free</b>, use it, "
+"have fun! <b>:)</b></li><li>If you use <b>any</b> part of KVIrc in your own "
+"project, you <b>must</b> release that project under the same license.</li></"
+"ul></p><p>The \"legalese\" version of the license is shown in the box below."
+"</p>"
+msgstr ""
+"<p>Todos los archivos de esta distribución están cubiertos por la GPL."
+"<br>Llanamente esto puede leerse como sigue:<br><ul><li><b>KVIrc es libre</"
+"b>, úselo y diviértase <b>:)</b></li><li>Si utiliza <b>cualquier</b> parte "
+"de KVIrc en su proyecto, <b>DEBE</b> liberarlo con la misma licencia.</li></"
+"ul></p><p>La versión \"legal\" de la licencia se muestra en el cuadro "
+"inferior.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:203
+msgid ""
+"Oops... can't find the license file.\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+"Oops... no puedo encontrar el archivo de licencia.\n"
+"DEBE estar incluido en la distribución...\n"
+"Por favor, informe de esto a <pragma at kvirc dot net>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:211
+msgid "Dreaded License Agreement"
+msgstr "Temido acuerdo de licencia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:215
+msgid "KVIrc Setup"
+msgstr "Configuración de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:224
+msgid ""
+"<p>Please choose a folder for KVIrc to store its settings and other data, "
+"and another for downloaded files. Make sure that you have permission to "
+"write to both folders.<br><br>The suggested locations are fine in most "
+"cases, so if you don't know what is this about, just click \"<b>Next</b>\"."
+"<br><br>If you had a previous version of KVIrc installed, you can choose the "
+"existing directory for the settings, and your configuration will be "
+"preserved.</p>"
+msgstr ""
+"<p>Por favor, escoja un directorio para que KVIrc guarde su configuración y "
+"datos varios, y otro para los archivos descargados. Asegúrese de que posee "
+"permisos para escribir en ambos directorios.<br><br>La configuración "
+"sugerida es correcta casi siempre, por ello, si no entiende qué es esto, "
+"solo pulse \"<b>Siguiente</b>\".<br><br>Si tiene instalada una versión "
+"anterior de KVIrc puede escoger los directorios existentes y su "
+"configuración será preservada.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:234
+msgid "Application Folders"
+msgstr "Directorios de la Aplicación"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:238
+#, fuzzy
+msgid "Store configuration in folder"
+msgstr "<b>Guardar la configuración en el directorio:</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:239
+msgid "Use settings folder from previous installation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:251
+msgid "Use new settings folder"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:255
+#, fuzzy
+msgid "Settings folder:"
+msgstr "Configuraciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:281
+#, fuzzy
+msgid "Download files to folder:"
+msgstr "<b>Directorio para archivos descargados:</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:304
+msgid "All settings in shared program folder (portable)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:325
+#, fuzzy
+msgid ""
+"Please choose a Nickname.<br><br>Your nickname is the name that other IRC "
+"users will know you by. It can't contain spaces or punctuation. Some IRC "
+"networks will shorten your nickname if it is more than 32 characters long."
+"<br><br>If in doubt, just enter the first nick that comes to mind. You will "
+"be able to change it later in the Identity properties, or with the /NICK "
+"command."
+msgstr ""
+"Por favor, escoja un nick.<br><br>Su nick es el nombre por el que le "
+"conocerán otros usuarios del IRC. No puede contener espacios o caracteres de "
+"puntuación. Algunas redes de IRC cortarán su nick si tiene más de 9 "
+"caracteres de longitud.<br><br>En caso de duda, introduzca el primer nick "
+"que le venga a la mente. Podrá cambiarlo más tarde en las propiedades del "
+"diálogo Identidad, o con el comando /NICK."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:348
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:353
+#, fuzzy
+msgid "Profile"
+msgstr "Prólogo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:355
+#, fuzzy
+msgid "Real name:"
+msgstr "Renombrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:361
+#, fuzzy
+msgid "Age:"
+msgstr "Nombre de usuario:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:392
+#, fuzzy
+msgid "Unspecified"
+msgstr "No se ha especificado nombre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:405
+#, fuzzy
+msgid "Location:"
+msgstr "&Localización:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:408
+msgid "Languages:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:491
+msgid ""
+"<p>Here you can choose how much KVIrc will integrate with your system."
+"<br><br>The default settings are fine for most users so if you're in doubt "
+"just click \"<b>Next</b>\" and go to the next screen.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:501
+msgid "Desktop Integration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:504
+msgid "Make KVIrc default IRC client"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:508
+#, fuzzy
+msgid "Create desktop shortcut"
+msgstr "Acceso directo en el Escritorio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:513
+msgid "Import server list from mIRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:727
+#, fuzzy
+msgid "Choose an Old Configuration Folder - KVIrc Setup"
+msgstr "Escoja un directorio de configuración - Asistente de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:736
+msgid "Do not overwrite folder? - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:737
+msgid ""
+"A folder %1 seems to be not a valid KVIrc settings folder.Do you want to use "
+"it anyway?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:753
+msgid "Choose a Configuration Folder - KVIrc Setup"
+msgstr "Escoja un directorio de configuración - Asistente de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:764
+msgid "Choose a Download Folder - KVIrc Setup"
+msgstr ""
+"Escoja un directorio para los archivos descargados - Asistente de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:933
+msgid "Abort Setup - KVIrc Setup"
+msgstr "Interrumpir Configuración - Asistente de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:934
+msgid ""
+"You have chosen to abort the setup.<br>KVIrc cannot run until you complete "
+"this procedure.<br><br>Do you really wish to abort?"
+msgstr ""
+"Ha escogido interrumpir la configuración.<br>KVIrc no funcionará hasta que "
+"finalice este procedimiento.<br><br>Realmente desea no continuar?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:965
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:996
+#, c-format
+msgid ""
+"Cannot create directory %s.\n"
+"You may not have write permission for that path. Please go back and choose "
+"another directory."
+msgstr ""
+"No puedo crear el directorio %s.\n"
+"Es posible que no tenga permiso de escritura para esta ruta. Por favor, "
+"retroceda y escoja otro directorio."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+#, fuzzy
+msgid "Package saved succesfully"
+msgstr "%1 servidores se importaron correctamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:80
+msgid "Event"
+msgstr "Evento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1046
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:92
+msgid "&Export All To..."
+msgstr "&Exportar Todos a..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:90
+msgid "Edit the event handler name."
+msgstr "Editar el nombre del manejador de eventos."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:154
+msgid "&Enable Handler"
+msgstr "Activar Manejador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:158
+msgid "&Disable Handler"
+msgstr "&Desactivar Manejador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:162
+msgid "Re&move Handler"
+msgstr "Eli&minar Manejador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:164
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:166
+msgid "&Export Handler To..."
+msgstr "&Exportar Manejador Como..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:171
+msgid "&New Handler"
+msgstr "&Nuevo Manejador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:190
+msgid "unnamed"
+msgstr "sin nombre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:215
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:250
+msgid "default"
+msgstr "por defecto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:314
+msgid "none"
+msgstr "nada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:318
+#, c-format
+msgid ""
+"\n"
+"\n"
+"\tEvent:\n"
+"\t\t%s\n"
+"\n"
+"\tParameters:\n"
+"%s"
+msgstr ""
+"\n"
+"\n"
+"\tEvento:\n"
+"\t\t%s\n"
+"\n"
+"\tparámetros:\n"
+"%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+msgid "Unable to write to the event file."
+msgstr "No fue posible escribir en el archivo de eventos."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+msgid "Unable to write to the events file."
+msgstr "No fue posible escribir en el archivo de eventos."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:486
+msgid "Event Editor"
+msgstr "Editor de Eventos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:77
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:213
+msgid "Item"
+msgstr "Elemento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:80
+msgid "Submenu"
+msgstr "Submenu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:83
+msgid "External Menu"
+msgstr "Menú Externo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:136
+msgid "Label"
+msgstr "Etiqueta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:93
+msgid "### Epilogue ###"
+msgstr "### Epílogo ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:94
+msgid "Epilogue"
+msgstr "Epílogo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:97
+msgid "### Prologue ###"
+msgstr "### Prólogo ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:98
+msgid "Prologue"
+msgstr "Prólogo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:198
+msgid "Popup name"
+msgstr "Nombre de menú emergente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:202
+msgid "Test"
+msgstr "Prueba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:230
+msgid "Text:"
+msgstr "Texto:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:236
+msgid ""
+"<center><b>Visible text</b><br>May contain identifiers that will be "
+"evaluated at popup call time.<br>For labels, this text can contain also "
+"limited HTML tags.</center>"
+msgstr ""
+"<center><b>Texto Visible</b><br>Puede contener identificadores que serán "
+"evaluados en el momento de la llamada al menú emergente.<br>Para etiquetas, "
+"este texto puede contener también algunos marcadores html.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:239
+msgid "Condition:"
+msgstr "Condición:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:245
+msgid ""
+"<center><b>Boolean condition</b><br>Will be evaluated at popup call time in "
+"order to decide if this entry has to be shown.<br>An empty condition "
+"evaluates to true.</center>"
+msgstr ""
+"<center><b>Condición Lógica</b><br>Será evaluada en el momento de la llamada "
+"al menú emergente para decidir si debe mostrarse esta opción.<br>Una "
+"condición vacía se evalúa como cierta.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:248
+msgid "Icon:"
+msgstr "Icono:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:254
+msgid ""
+"<center><b>Icon identifier</b><br>May be an internal icon ID, an absolute "
+"path or a relative path.<br>Portable scripts should never use absolute paths."
+"</center>"
+msgstr ""
+"<center><b>Identificador de Icono</b><br>Puede ser un id de icono interno, "
+"una ruta absoluta o una relativa<br>. Los scripts portables nunca deberán "
+"usar rutas absolutas.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:257
+msgid "External menu:"
+msgstr "Menú externo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:263
+msgid ""
+"<center><b>External menu name</b><br>This allows to nest externally defined "
+"popup menus. The popup menu with the specified name will be looked up at "
+"menu setup time.</center>"
+msgstr ""
+"<center><b>Nombre de menú externo</b><br>Esto permite anidar menús "
+"emergentes definidos externamente. El menú con el nombre especificado será "
+"buscado en el momento de la configuración del mismo.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:266
+msgid "Item Id:"
+msgstr "Id Elemento:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:273
+msgid ""
+"<center><b>Item id</b><br>This will allow you to use delpopupitem later.</"
+"center>"
+msgstr ""
+"<center><b>id Elemento</b><br>Esto te permitirá usar delpopupitem más tarde."
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:386
+msgid "New Separator Below"
+msgstr "Nuevo Separador debajo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:388
+msgid "New Separator Above"
+msgstr "Nuevo Separador encima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:391
+msgid "New Separator Inside"
+msgstr "Nuevo Separador dentro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:396
+msgid "New Label Below"
+msgstr "Nueva Etiqueta debajo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:398
+msgid "New Label Above"
+msgstr "Nueva Etiqueta encima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:401
+msgid "New Label Inside"
+msgstr "Nueva Etiqueta dentro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:406
+msgid "New Item Below"
+msgstr "Nuevo Elemento debajo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:408
+msgid "New Item Above"
+msgstr "Nuevo Elemento encima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:411
+msgid "New Item Inside"
+msgstr "Nuevo Elemento dentro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:416
+msgid "New Menu Below"
+msgstr "Nuevo Menú debajo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:418
+msgid "New Menu Above"
+msgstr "Nuevo Menú encima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:421
+msgid "New Menu Inside"
+msgstr "Nuevo Menú dentro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:426
+msgid "New External Menu Below"
+msgstr "Nuevo Menú Externo debajo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:428
+msgid "New External Menu Above"
+msgstr "Nuevo Menú Externo encima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:431
+msgid "New External Menu Inside"
+msgstr "Nuevo Menú Externo dentro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:451
+msgid "&Paste Below"
+msgstr "&Pegar Debajo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:456
+msgid "Paste Above"
+msgstr "Pegar Encima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:461
+msgid "Paste Inside"
+msgstr "Pegar Dentro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:473
+msgid "New Menu Prologue"
+msgstr "Nuevo Prólogo de Menú"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:481
+msgid "New Menu Epilogue"
+msgstr "Nuevo Epílogo de Menú"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1042
+msgid "Popup"
+msgstr "Menú emergente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1048
+msgid "&Export selected To..."
+msgstr "&Exportar seleccionadas a..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1099
+msgid "&New Popup"
+msgstr "&Nuevo menú emergente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1105
+msgid "Re&move Popup"
+msgstr "Eli&minar menú emergente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1112
+msgid "&Export Popup To..."
+msgstr "&Exportar menú emergente a..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+msgid "Unable to write to the popup file."
+msgstr "Imposible escribir en el archivo de menú emergente."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1382
+msgid "Popup Editor"
+msgstr "Editor de menús emergentes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:62
+msgid "%cCore action: %Q"
+msgstr "%cAcción principal: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:64
+msgid "%cUser action: %Q"
+msgstr "%cAcción de usuario: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:65
+msgid "Label: %Q"
+msgstr "Etiqueta: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:66
+msgid "Category: %Q"
+msgstr "Categoría: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:112
+msgid "The action \"%1\" is disabled"
+msgstr "La acción \"%1\" está deshabilitada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:259
+msgid "The action \"%1\" does not exist"
+msgstr "La acción \"%1\" no existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:255
+msgid "The action \"%1\" is a core action and cannot be destroyed"
+msgstr "La acción \"%1\" es una acción principal y no puede ser destruida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:392
+msgid "The switch -l requires -c"
+msgstr "La opción -l necesita -c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:409
+msgid "The switch -s requires -w with a combination of flags 'c','x' and 'q'"
+msgstr ""
+"La opción -s necesita -w con una combinación de indicadores 'c', 'x' y 'q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:420
+msgid ""
+"The action \"%1\" is already defined as core action and cannot be overridden"
+msgstr ""
+"La acción \"%1\" ya está definida como una acción principal y no puede ser "
+"sobreescrita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:116
+msgid "Ops.. internal error"
+msgstr "Argh... error interno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:125
+msgid "Manage File &Transfers"
+msgstr "Gestionar &Transferencias de Archivos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:67
+msgid "Choose Avatar - KVIrc"
+msgstr "Escoge Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:72
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+"Por favor, escoge una imagen avatar. Se puede usar una ruta completa a un "
+"archivo local o una imagen en la Web.<br>Si deseas usar un archivo local, "
+"pulsa el botón \"<b>Navegar</b>\" para moverte por los directorios locales."
+"<br>Puede introducirse una URL completa (incluyendo <b>http://</b>) para una "
+"imagen. "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:283
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:358
+msgid "Internal error: I'm not in the user database ?"
+msgstr "Error interno: no estoy en la base de datos de usuario?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:245
+msgid "Can't set the current avatar to '%Q': failed to start the http transfer"
+msgstr ""
+"No puedo poner el avatar actual a '%Q': falló el inicio de la transferencia "
+"http"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:249
+msgid "Can't set the current avatar to '%Q': can't load the image"
+msgstr "No puedo poner el avatar actual a '%Q': no puedo cargar la imagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:351
+msgid "Invalid timeout specified, using default"
+msgstr ""
+"Se especificó un tiempo de expiración no válido, usando valor por defecto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:389
+msgid "Can't add a file offer for file %Q (huh ? file not readable ?)"
+msgstr ""
+"No puedo añadir un ofrecimiento de archivo para %Q (archivo no legible?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:396
+msgid "Added %d secs file offer for file %Q (%Q) and receiver %Q"
+msgstr "Añadida la oferta de %d segs del archivo %Q (%Q) y receptor %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:403
+msgid "Notifying avatar '%Q' to %Q"
+msgstr "Notificando avatar '%Q' a %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:55
+msgid "&Execute"
+msgstr "&Ejecutar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:59
+msgid "Params:"
+msgstr "parámetros:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:107
+msgid "Script Tester"
+msgstr "Comprobador de Script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:220
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:413
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:543
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:628
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:765
+msgid "The config file with id '%Q' is not open"
+msgstr "El archivo de configuración '%Q' no está abierto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:538
+#, fuzzy
+msgid ""
+"The config file '%Q' has been changed but is opened as read-only: changes "
+"will be lost"
+msgstr ""
+"El archivo de configuración '%s' ha cambiado pero está abierto como de solo "
+"lectura: se perderá los cambios"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:583
+msgid "The config file with id '%Q' is read only"
+msgstr "El archivo de configuración con id '%Q' es de solo lectura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:178
+msgid "Colors"
+msgstr "Colores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:255
+msgid "Context sensitive help"
+msgstr "Ayuda sensible al contexto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1167
+msgid "&Replace"
+msgstr "&Reemplazar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:268
+msgid "Find & Repalce"
+msgstr "Buscar y Reemplazar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1148
+msgid "Word to Find"
+msgstr "Palabra a encontrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1156
+msgid "Replace with"
+msgstr "Reemplazar con"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1172
+msgid "&Replace in all Aliases"
+msgstr "&Reemplazar en todos los alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1176
+msgid "&Findnext"
+msgstr "Buscar Siguiente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1181
+msgid "&Replace(WIP)"
+msgstr "&Reemplazar(WIP)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:227
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:547
+msgid "The specified toolbar doesn't exist"
+msgstr "No existe la barra de herramientas especificada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:424
+msgid "No action name/index specified"
+msgstr "No se ha especificado el nombre/índice de la acción"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:441
+msgid "The action parameter didn't evaluate to an index"
+msgstr "El parámetro de acción no se evalúa como un índice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:455
+msgid "The toolbar does not contain the specified item"
+msgstr "La barra de herramientas no contiene el elemento especificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:513
+msgid "The action \"%Q\" doesn't exist"
+msgstr "La acción \"%Q\" no existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:31
+msgid "Torrent Client"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:361
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:364
+#, fuzzy
+msgid "Standalone Servers"
+msgstr "Colores Estándar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:112
+#, fuzzy
+msgid ""
+"%Q doesn't look like a servers.ini file.\n"
+"Import failed."
+msgstr ""
+"%s no parece ser un archivo servers.ini\n"
+"Falló la importación."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:122
+msgid "Choose a servers.ini file"
+msgstr "Escoja un archivo servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:146
+msgid "Remote mIRC servers.ini Import Wizard"
+msgstr "Asistente de Importación remota de servers.ini de mIRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:154
+msgid ""
+"<center><b>Welcome!</b><br><br>This wizard will guide you in the process of "
+"downloading a list of IRC servers. Please click \"<b>Next</b>\" to begin the "
+"operation.</center>"
+msgstr ""
+"<center><b>Bienvenido</b><br><br>Este asistente te guiará en el proceso de "
+"descarga de una lista de servidores IRC. Por favor, pulsa \"<b>Siguiente</b>"
+"\" para comenzar la operación.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:161
+msgid ""
+"<center>Here you can modify the URL that the list will be downloaded from. "
+"In most cases the default URL is acceptable.</center>"
+msgstr ""
+"<center>Aquí puedes modificar la URL desde la que será descargada la lista. "
+"Generalmente, la URL por defecto es aceptable.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:169
+msgid "URL Selection"
+msgstr "selección de URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:173
+msgid "Please wait while the list is being downloaded"
+msgstr "Por favor, espera mientras se descarga la lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:179
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:195
+msgid "List Download"
+msgstr "Descarga de la Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:229
+msgid "Failed to start the server list transfer :("
+msgstr "Falló el inicio de la transferencia de la lista de servidores :("
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:245
+msgid "File downloaded: processing ..."
+msgstr "Archivo descargado: procesando..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:255
+msgid "%1 servers imported succesfully"
+msgstr "%1 servidores se importaron correctamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:257
+msgid "No servers imported"
+msgstr "No se importó ningún servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:326
+msgid "Import from servers.ini"
+msgstr "Importación desde servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:333
+msgid "Import from http://www.mirc.co.uk/servers.ini"
+msgstr "Importación desde http://www.mirc.co.uk/servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lineedit.cpp:372
+msgid "Unknown echo mode %Q"
+msgstr "Modo de eco desconocido %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:203
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:359
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:172
+#, fuzzy
+msgid "Widget parameter is not an object"
+msgstr "El parámetro especificado no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:230
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:250
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:449
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:485
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:177
+#, fuzzy
+msgid "Widget parameter is not a valid object"
+msgstr "Los parámetros no definen un tamaño válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:95
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:263
+msgid "Widget object required"
+msgstr "Necesita un objeto Widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:151
+msgid "Unknown dock area '%Q'"
+msgstr "Área de anclaje desconocida '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:321
+msgid "Unknown alignment: '%Q'"
+msgstr "Alineación desconocida: '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:373
+#, fuzzy
+msgid "Unknown style: '%Q'"
+msgstr "Estilo desconocido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:84
+msgid "the toolbar cannot be a parent-widget!"
+msgstr "la barra de herramientas no puede ser un widget padre!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:93
+msgid "The parent-widget isn't a MainWindow."
+msgstr "El widget padre no es una ventana principal."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:999
+msgid "The array passed as parameter must contain at least 4 elements"
+msgstr "El vector pasado como parámetro debe contener al menos 4 elementos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1012
+msgid "One of the geometry array parameters is empty"
+msgstr "Uno de los parámetros del vector de geometría está vacío"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1017
+msgid "One of the geometry array parameters didn't evaluate to an integer"
+msgstr "Uno de los parámetros del vector de geometría no se evalúa a un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:503
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1032
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1500
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1044
+msgid "The first parameter didn't evaluate to an array nor an integer"
+msgstr "El primer parámetro no se evalúa como un vector ni como un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1419
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1476
+msgid "The array passed as parameter must contain at least 2 elements"
+msgstr "El vector pasado como parámetro debe contener al menos 2 elementos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:451
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:486
+msgid "One of the array parameters is empty"
+msgstr "Uno de los parámetros del vector está vacío"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:456
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:491
+msgid "One of the array parameters didn't evaluate to an integer"
+msgstr "Uno de los parámetros del vector no se evalúa como un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:478
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:804
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:993
+msgid "The array passed as parameter must contain at least 3 elements"
+msgstr "El vector pasado como parámetro debe contener al menos 3 elementos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:551
+msgid "Unknown orientation"
+msgstr "Orientación desconocida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:789
+msgid "Pixmap or Widget parameter is not an object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:730
+msgid "Widget or Pixmap required "
+msgstr "Necesita un Widget o un Pixmap "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:852
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:862
+msgid "Invalid mode '%Q'"
+msgstr "Modo no válido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:886
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1701
+#, fuzzy
+msgid "Pixmap parameter is not an object"
+msgstr "El parámetro especificado no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:891
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1706
+msgid "Pixmap object required"
+msgstr "Necesita un objeto Pixmap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1027
+msgid ""
+"$setGeometry() requires either an array as first parameter or four integers"
+msgstr ""
+"$setGeometry() necesita un vector como primer parámetro o cuatro enteros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:813
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1002
+msgid "One of the colors array parameters is empty"
+msgstr "Uno de los parámetros del vector de colores está vacío"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:818
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1007
+msgid "One of the colors array parameters didn't evaluate to an integer"
+msgstr ""
+"Uno de los parámetros del vector de colores no se evalúa como un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1020
+msgid "A string of 6 digits hex is required"
+msgstr "Se requiere una cadena hexadecimal de 6 dígitos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:842
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1031
+msgid "Not an hex digits"
+msgstr "No son dígitos hexadecimales"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1144
+#, fuzzy
+msgid ""
+"$setForegroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+"$setBackgroundColor necesita un vector como primer parámetro o tres enteros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1219
+#, fuzzy
+msgid ""
+"$setBackgroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+"$setBackgroundColor necesita un vector como primer parámetro o tres enteros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1426
+#, fuzzy
+msgid "One of the move array parameters is empty"
+msgstr "Uno de los parámetros del vector está vacío"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1431
+msgid "One of the move array parameters didn't evaluate to an integer"
+msgstr "Uno de los parámetros del vector no se evalúa como un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1438
+#, fuzzy
+msgid "$move() requires either an array as first parameter or two integers"
+msgstr ""
+"$setGeometry() necesita un vector como primer parámetro o cuatro enteros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1483
+#, fuzzy
+msgid "One of the resize array parameters is empty"
+msgstr "Uno de los parámetros del vector está vacío"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1488
+msgid "One of the resize array parameters didn't evaluate to an integer"
+msgstr "Uno de los parámetros del vector no se evalúa como un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1495
+#, fuzzy
+msgid "$resize() requires either an array as first parameter or two integers"
+msgstr ""
+"$setGeometry() necesita un vector como primer parámetro o cuatro enteros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1528
+msgid "Invalid parameters"
+msgstr "Parámetros no válidos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1560
+msgid "Unknown widget flag '%Q'"
+msgstr "Indicador de widget desconocido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1592
+msgid "Unknown style '%Q'"
+msgstr "Estilo desconocido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1622
+msgid "No Layout associated to the widget "
+msgstr "No hay un Layout asociado al widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:117
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:152
+msgid "Can't add a non-widget object"
+msgstr "No puedo añadir un objeto no-widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1650
+msgid "Parent must be a widget object"
+msgstr "El padre debe ser un objeto widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1715
+msgid "Null mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1740
+#, fuzzy
+msgid "Unknown widget attribute '%Q'"
+msgstr "Indicador de widget desconocido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:382
+msgid "No such line number"
+msgstr "No existe el número de línea"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:500
+msgid "Unknown word wrap '%Q'"
+msgstr "Ajuste de línea desconocido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:519
+msgid "Unknown wrap policy'%Q'"
+msgstr "Norma de contexto desconocido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:850
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1039
+msgid "$setColor requires either an array as first parameter or three integers"
+msgstr "$setColor necesita un vector como primer parámetro o tres enteros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:975
+msgid "Unknown text format '%Q'"
+msgstr "Formato de texto desconocido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1071
+msgid " I can't find the specified file '%Q'."
+msgstr " No puedo encontrar el archivo especificado '%Q'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1078
+msgid " I cannot read the file %Q'."
+msgstr " No puedo leer el archivo '%Q'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1113
+msgid "Unknown alignment '%Q'"
+msgstr "Alineación desconocida: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1131
+msgid "Unknown auto formatting mode '%Q'"
+msgstr "Modo de formateo automático desconocido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1149
+msgid "Unknown vertical alignment '%Q'"
+msgstr "Alineación desconocida: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:264
+msgid "pix '%Q' doesn't exists"
+msgstr "no existe el pix '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:276
+msgid "Can't add a non - popupmenu object"
+msgstr "No puedo añadir un objeto que no es un popupmenu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:302
+msgid "Doesn't a widget object"
+msgstr "No es un objeto widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:182
+msgid "I can't find the specified file %Q."
+msgstr "No puedo encontrar el archivo especificado %Q."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:222
+#, fuzzy
+msgid "Destination parameter is not an object"
+msgstr "El parámetro especificado no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:228
+#, fuzzy
+msgid "Destination must be a pixmap object"
+msgstr "El parámetro especificado no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:238
+msgid "Area dimensions are out of destination size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:253
+msgid "Pixmap dimensions are out of destination size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:261
+msgid "Offset width area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:266
+msgid "Offset height area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:121
+#, fuzzy
+msgid "The widget must be a child of this hbox"
+msgstr "El widget añadido no es un hijo de esta ventana de anclaje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:191
+msgid "No string parameter given - using empty string"
+msgstr "No se proporcionó una cadena como parámetro - usando una cadena vacía"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:194
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:214
+#, c-format
+msgid "Item index [%d] is too big - defaulting to $count() - 1 [%d]"
+msgstr ""
+"El índice de elemento [%d] es demasiado grande: se pone por defecto a $count"
+"()-1 [%d]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:333
+#, fuzzy
+msgid "Invalid insertion Policy %Q"
+msgstr "Política de inserción no válida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:136
+msgid "Unknown mode "
+msgstr "Modo desconocido "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:149
+msgid "Unknown segment style "
+msgstr "Estilo de segmento desconocido "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_process.cpp:221
+msgid "Process could not be starded."
+msgstr "El proceso no puede ser iniciado."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:279
+msgid "Invalid selection mode '%Q' assuming single"
+msgstr "Modo de selección no válido \"%Q\": asumiendo \"single\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:316
+msgid "Unknown text position '%Q'"
+msgstr "Posición de texto desconocida '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:256
+msgid "Unknown tickmark '%Q'"
+msgstr "Marca desconocida '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:271
+msgid "Unknown orientation '%Q'"
+msgstr "Orientación desconocida '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:500
+msgid "No socket object specified"
+msgstr "No se especifico un objeto socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:506
+msgid "Invalid socket object specified (it doesn't inherit from socket)"
+msgstr "Se especificó un objeto socket no válido (no hereda de socket)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:518
+msgid "There is no connection to accept!"
+msgstr "No hay conexión que aceptar!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:591
+#, c-format
+msgid "Value %d for port is out of range (values allowed are from 0 to 65535"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:596
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:87
+msgid "Another connection in progress"
+msgstr "Otra conexión está realizándose"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:648
+msgid "No IPV6 support in this executable"
+msgstr "Ejecutable sin soporte IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:670
+#, fuzzy
+msgid "Invalid IP address specified ('%Q')"
+msgstr "Se especificó una dirección IP no válida (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:89
+msgid "Socket creation failed"
+msgstr "Creación de socket fallida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:706
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:727
+msgid "Invalid socket address"
+msgstr "Dirección para socket no válida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:714
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:735
+msgid "Bind failure"
+msgstr "Fallo en bind"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:745
+msgid "Listen failure"
+msgstr "Llamada a listen fallida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:812
+msgid "unknown"
+msgstr "desconocido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:876
+#, fuzzy
+msgid "Invalid ip address "
+msgstr "Dirección IP no válida (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:882
+#, fuzzy
+msgid "Invalid ip address (%Q)"
+msgstr "Dirección IP no válida (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:906
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1013
+msgid "Failed to create the socket"
+msgstr "Fallo al crear el socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:918
+msgid "Failed to setup a nonblocking socket"
+msgstr "Fallo al configurar modo no bloqueante para el socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:939
+#, fuzzy
+msgid "Connect failure: "
+msgstr "Conexión fallida: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:967
+msgid "Connect attempt timed out"
+msgstr "Expiró el intento de conexión"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:993
+msgid "Can't start the DNS thread"
+msgstr "No se pudo iniciar el hilo de DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:1143
+msgid ""
+"Too much unprocessed incoming data (you've left this socket unmanaged ?)"
+msgstr ""
+"Demasiados datos de entrada sin procesar (dejó el socket sin gestionar?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:149
+msgid "Error in KVS class implementation: processing aborted"
+msgstr "Error en la implementación de la clase KVS: procesamiento suspendido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:154
+msgid "Processing aborted"
+msgstr "Procesamiento suspendido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:160
+#, c-format
+msgid "Error near line %d, column %d"
+msgstr "Error cerca de la línea %d, columna %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:162
+#, c-format
+msgid "Warning near line %d, column %d"
+msgstr "Advertencia cerca de la línea %d, columna %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:313
+msgid "XML support not available in the Qt library"
+msgstr "Soporte de XML no disponible en la librería Qt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:491
+msgid "Not a widget object"
+msgstr "No es un objeto widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:308
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:497
+msgid "Can't find the tab "
+msgstr "No pude encontrar la tabulación "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:522
+msgid "Unknown position 'Q%'"
+msgstr "Posición desconocida '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:123
+#, fuzzy
+msgid "The widget must be a child of this vbox"
+msgstr "El widget añadido no es un hijo de esta ventana de anclaje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:276
+msgid "Not Enough Parameters"
+msgstr "No hay suficientes parámetros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:142
+msgid "The listviewitem cannot be parentless"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:152
+msgid ""
+"The parent of the listviewitem must be either another listviewitem or a "
+"listview"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:403
+#, fuzzy
+msgid "Pixmap object or image Id required"
+msgstr "Necesita un objeto Pixmap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:413
+msgid ""
+"Error occured: the suitable file '%Q' is not of the correct format or it is "
+"not a valid icon number."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:151
+msgid ""
+"The window identifier preceeded by WinId must be the first object in the "
+"search path"
+msgstr ""
+"El identificador de ventana precedido por WinId debe ser el primer objeto en "
+"la trayectoria de búsqueda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:167
+#, fuzzy
+msgid "Failed to find one of the wrap path widgets (%Q::%Q)"
+msgstr "No se encontró una de las trayectorias de envoltura al widget (%s::%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:176
+msgid "Failed to find the widget to wrap"
+msgstr "No pude encontrar el widget a envolver"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:119
+msgid "The parent of a layout must be a widget!"
+msgstr "El padre de un layout debe ser un widget!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:269
+msgid "Invalid resize mode defaulting to Auto"
+msgstr "Modo de redimensionado no válido, modo Auto por defecto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:324
+msgid "Unknown alignment"
+msgstr "Alineación desconocida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:373
+msgid "Unknown orientation: "
+msgstr "Orientación desconocida: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listview.cpp:320
+#, fuzzy
+msgid "Invalid selection mode '%Q'"
+msgstr "Modo de selección no válido \"%Q\": asumiendo \"single\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tbrowser.cpp:99
+#, fuzzy
+msgid "I can't find the specified file '%Q'."
+msgstr " No puedo encontrar el archivo especificado '%Q'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:121
+msgid "Can't add a null object"
+msgstr "No puedo añadir un objeto nulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:128
+msgid ""
+"Invalid object handle passed as parameter (the object is no longer "
+"existing ?)"
+msgstr ""
+"Se pasó como parámetro un manejador a un objeto no válido (el objeto ya no "
+"existe?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:134
+msgid "Object in invalid state"
+msgstr "El objeto se encuentra en un estado no válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:140
+msgid "Can't set a non-widget object to be the main widget of a dock window"
+msgstr ""
+"No puedo asignar un objeto no-widget para ser el widget principal de una "
+"ventana de anclaje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:146
+msgid "The added widget is not a child of this dock window"
+msgstr "El widget añadido no es un hijo de esta ventana de anclaje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:271
+#, fuzzy
+msgid "Invalid dock area specified"
+msgstr "Se especificó una dirección IP no válida (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:181
+#, fuzzy
+msgid "Class '%Q' is not definited"
+msgstr "La clase \"%Q\" no está definida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:257
+msgid "Inexisting target object for objects.connect"
+msgstr "Objetivo inexistente para objects.connect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:262
+msgid "Inexisting source object for objects.connect"
+msgstr "Fuente inexistente para objects.connect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:444
+#, fuzzy
+msgid "The class '%Q' does not exist"
+msgstr "El alias %Q no existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:404
+#, fuzzy
+msgid "Object does not exists"
+msgstr "El objeto especificado no existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:557
+#, fuzzy
+msgid "Inexisting target object for objects.disconnect"
+msgstr "Objetivo inexistente para objects.connect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:562
+#, fuzzy
+msgid "Inexisting source object for objects.disconnect"
+msgstr "Fuente inexistente para objects.connect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:608
+#, fuzzy
+msgid "Source is not an object"
+msgstr "El parámetro especificado no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:614
+#, fuzzy
+msgid "Destination is not an object"
+msgstr "El parámetro especificado no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:625
+#, fuzzy
+msgid "Widget, Image or Pixmap required "
+msgstr "Necesita un Widget o un Pixmap "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:635
+msgid "Widget or Pixmap required"
+msgstr "Necesita un Widget o un Pixmap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:714
+msgid "One o more of background, foreground or destination aren't objects"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:720
+#, fuzzy
+msgid "Pixmap objects required"
+msgstr "Necesita un objeto Pixmap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:743
+msgid "Values for background are out of image size "
+msgstr "Los valores del fondo exceden el tamaño de pantalla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:748
+msgid "Values for foreground are out of image size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:226
+msgid "Empty filename string"
+msgstr "Cadena de nombre de archivo vacía"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:271
+msgid "No such open mode: '%Q'"
+msgstr "No existe el modo de apertura: '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:312
+msgid "File is not open!"
+msgstr " El archivo no está abierto !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:348
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:406
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:434
+msgid "File is not open !"
+msgstr " El archivo no está abierto !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:369
+msgid "Argument to long, using only first char"
+msgstr "Argumento demasiado largo, utilizando solo el primer carácter "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:339
+msgid "Write error occured !"
+msgstr " Sucedió un error de escritura !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:352
+msgid "Read error occured !"
+msgstr " Sucedió un error de lectura !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:371
+msgid "An error occured !"
+msgstr " Sucedió un error !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:387
+msgid "Missing both encrypt and decrypt key: at least one is needed"
+msgstr ""
+"Faltan tanto la clave de cifrado como la de descifrado: se necesita al menos "
+"una"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:168
+msgid "Error 0: Success ?"
+msgstr "Error 0: Éxito ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:169
+msgid "Unsupported crypt mode"
+msgstr "Modo de cifrado no soportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:170
+msgid "Unsupported direction"
+msgstr "Dirección no soportada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:171
+msgid "Unsupported key length"
+msgstr "Longitud de clave no soportada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:172
+msgid "Bad key data"
+msgstr "Datos de clave erróneos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:173
+msgid "Engine not initialized"
+msgstr "Motor no inicializado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:174
+msgid "Invalid direction for this engine"
+msgstr "Dirección no válida para este motor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:175
+msgid "Corrupted message data or invalid decrypt key"
+msgstr "Datos del mensaje corruptos o clave de descifrado no válida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:52
+msgid "Unknown error"
+msgstr "Error desconocido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:184
+msgid "Ops...encrypt cipher not initialized"
+msgstr "Ups...motor de cifrado no inicializado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:420
+msgid "Data buffer too long"
+msgstr "Buffer de datos demasiado largo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:221
+msgid "Ops...decrypt cipher not initialized"
+msgstr "Ups...motor de descifrado no inicializado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:277
+msgid "The message is not a hexadecimal string: this is not my stuff"
+msgstr "El mensaje no es una cadena hexadecimal: esto no es mio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:671
+msgid "The message is not a base64 string: this is not my stuff"
+msgstr "El mensaje no es una cadena base64: esto no es mio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:676
+msgid "The message doesn't seem to be encoded with CBC Mircryption"
+msgstr "El mensaje no parece estar codificado con el cifrado CBC de Mirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:712
+#, c-format
+msgid ""
+"Cryptographic engine based on the\n"
+"Advanced Encryption Standard (AES)\n"
+"algorithm called Rijndael.\n"
+"The text is first encrypted with rijndael\n"
+"and then converted to %s notation.\n"
+"The keys used are %d bit long and will be padded\n"
+"with zeros if you provide shorter ones.\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"See the rijndael module documentation\n"
+"for more info on the algorithm used.\n"
+msgstr ""
+"Motor criptográfico basado en el\n"
+"Advanced Encryption Standard (AES)\n"
+"algoritmo llamado Rijndael.\n"
+"El texto es cifrado primero con rijndael\n"
+"y después convertido a notación %s.\n"
+"Las claves usadas son de longitud %d bits y serán rellenadas\n"
+"con ceros si se proporciona una más corta.\n"
+"Si solo se proporciona una clave, este motor\n"
+"la usará para el cifrado y descifrado.\n"
+"Léase la documentación del módulo rijndael\n"
+"para obtener más información acerca del algoritmo usado.\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:739
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:749
+msgid "hexadecimal"
+msgstr "hexadecimal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:759
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:779
+msgid "base64"
+msgstr "base64"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:790
+msgid ""
+"Popular cryptographic engine based on the\n"
+"old Blowfish encryption algorithm.\n"
+"The text is first encrypted with Blowfish \n"
+"and then converted to base64 notation.\n"
+"The keys used have variable length and\n"
+"are specified as character strings.\n"
+"You can specify keys long up to 56 bytes (448 bits).\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"This engine works in ECB mode by default:\n"
+"if you want to use CBC mode you must prefix\n"
+"your key(s) with \"cbc:\".\n"
+msgstr ""
+"Popular motor de cifrado basado en el\n"
+"antiguo algoritmo de cifrado Blowfish.\n"
+"El texto es cifrado primero con Blowfish\n"
+"y después convertido a notación base64.\n"
+"Las claves usadas tienen longitud variable y\n"
+"son especificadas como cadenas de caracteres.\n"
+"Puedes especificar cadenas de hasta 56 bytes\n"
+"(448 bits) de longitud.\n"
+"Si solo se proporciona una clave, este motor la\n"
+"usará tanto para cifrar como para descifrar.\n"
+"Este motor funciona en modo ECB por defecto:\n"
+"si quieres usar el modo CBC debes preceder tu(s)\n"
+"clave(s) con \"cbc:\".\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:61
+msgid "Drop here the icons from the toolbars to remove them"
+msgstr "Soltar aquí los iconos desde la barra de herramientas para eliminarlos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:128
+msgid "ToolBar Properties"
+msgstr "Propiedades de Barra de herramientas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:144
+msgid "Icon"
+msgstr "Icono"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:160
+msgid "Id"
+msgstr "Id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:217
+msgid "Please choose the icon for the ToolBar"
+msgstr "Por favor, escoja el icono para la Barra de Herramientas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "Invalid ToolBar Label"
+msgstr "Etiqueta de Barra de Herramientas no válida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "The ToolBar Label can't be empty!"
+msgstr "La etiqueta de la barra de herramientas no puede estar vacía!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:256
+msgid "Duplicate ToolBar Id"
+msgstr "Id de Barra de Herramientas duplicado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:257
+msgid ""
+"The specified ToolBar Id already exists.<br>Would you like KVIrc to assign "
+"it automatically (so it doesn't collide with any other toolbar) or you "
+"prefer to do it manually ?"
+msgstr ""
+"El Id de barra de herramientas especificado ya existe.<br>Quieres que KVIrc "
+"asigne uno automáticamente (para que no coincida con alguna otra barra de "
+"herramientas) o prefieres hacerlo manualmente?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Manually"
+msgstr "Manualmente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Automatically"
+msgstr "Automáticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:278
+msgid "Hide Advanced"
+msgstr "Esconder Avanzado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:287
+msgid "Customize Toolbars"
+msgstr "Barras de Herramientas personalizadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:296
+msgid "New ToolBar"
+msgstr "Nueva Barra de herramientas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:300
+msgid "Delete ToolBar"
+msgstr "Borrar Barra de Herramientas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:304
+msgid "Edit ToolBar"
+msgstr "Editar Barra de Herramientas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:312
+msgid "Export ToolBar"
+msgstr "Exportar Barra de Herramientas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:373
+msgid "Confirm ToolBar Deletion"
+msgstr "Confirmar el Borrado de la Barra de Herramientas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:374
+msgid "Do you really want to delete toolbar \"%1\" ?"
+msgstr "Realmente quieres borrar la barra de herramientas \"%1\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:397
+msgid "ToolBar Export"
+msgstr "Exportar de Barra de herramientas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:398
+msgid "Do you want the associated actions to be exported with the toolbar ?"
+msgstr ""
+"Quieres que las acciones asociadas sean exportadas con la barra de "
+"herramientas?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+msgid "Unable to write to the toolbar file."
+msgstr "No fue posible escribir en el archivo de barra de herramientas."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:465
+msgid "Please specify the properties for the toolbar \"%1\""
+msgstr ""
+"Por favor, especifica las propiedades de la barra de herramientas \"%1\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:491
+msgid "Please specify the properties for the new toolbar"
+msgstr ""
+"Por favor, especifica las propiedades de la nueva barra de herramientas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:493
+msgid "My ToolBar"
+msgstr "Mi Barra de Herramientas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:63
+msgid "Window with ID '%Q' not found"
+msgstr "Ventana con ID '%Q' no encontrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:67
+msgid "The specified window (%Q) is not a channel/query/DCC chat"
+msgstr "La ventana especificada (%Q) no es un canal/privado/DCC de chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:108
+msgid "File not found or empty"
+msgstr "Archivo no encontrado o vacío"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:114
+msgid "I can't open that file"
+msgstr "No puedo abrir ese archivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:122
+msgid "Could not paste file"
+msgstr "No pude pegar el archivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:218
+#, fuzzy
+msgid "The specified window (%Q) is not a channel/query/dcc"
+msgstr "La ventana especificada (%s) no es un canal/privado/dcc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:271
+#, fuzzy
+msgid "Slow-paste ID:%d Window:%Q"
+msgstr "Pegado lento ID:%d Ventana:%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:240
+msgid "Plugin not found. Please check the plugin-name and path."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:247
+#, fuzzy
+msgid "Error while loading plugin."
+msgstr "Error en carga de módulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:311
+msgid "This plugin does not export the desired function."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:327
+msgid ""
+"The plugin has no function to free memory. This can result in Memory Leaks!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:209
+#, fuzzy, c-format
+msgid "No environment variable found, please don't use the %% in the request"
+msgstr ""
+"No se encontró la variable de entorno, por favor no use %% en la petición"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:482
+msgid "Invalid DCOP parameter syntax"
+msgstr "Sintaxis del parámetro DCOP no válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:495
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:516
+msgid "The specified parameter is not an integer"
+msgstr "El parámetro especificado no es un entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:521
+#, c-format
+msgid "Unsupported DCOP parameter type %s"
+msgstr "Tipo de parámetro DCOP %s no soportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:534
+msgid "DCOP call failed"
+msgstr "Llamada DCOP fallida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:599
+msgid "DCOP calls are available only when KDE support is compiled in"
+msgstr ""
+"Las llamadas a DCOP solo están disponibles cuando está compilado el soporte "
+"de KDE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1408
+#, c-format
+msgid "The window with id '%s' does not exist"
+msgstr "La ventana con id '%s' no existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:851
+msgid "Window type or 'all' expected as first parameter"
+msgstr "Tipo de ventana o 'todas' se esperaba como primer parámetro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:938
+msgid "Invalid IRC context id '%Q'"
+msgstr "Id '%Q' de contexto de IRC no válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1045
+msgid "The specified IRC context is not valid: creating a context free window"
+msgstr ""
+"El contexto de IRC especificado no es válido: creando una ventana libre de "
+"contexto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1119
+msgid "The specified window is not of type \"userwnd\""
+msgstr "La ventana especificada no es de tipo \"userwnd\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1208
+msgid "Window doesn't have input widget"
+msgstr "La ventana no tiene un widget de entrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1363
+msgid "The encrypt key wasn't a valid hexadecimal string"
+msgstr "La clave para cifrar no es una cadena hexadecimal válida."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1377
+msgid "The decrypt key wasn't a valid hexadecimal string"
+msgstr "La clave para descifrar no es una cadena hexadecimal válida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1414
+msgid "Both -n and -m switchess specified, -n takes precedence"
+msgstr "Se especificaron los modificadores -n y -m, -n tiene preferencia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1424
+msgid "No encrypt key specified: can't allocate engine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1446
+#, fuzzy
+msgid "Unknown engine error"
+msgstr "Error desconocido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1449
+#, fuzzy
+msgid "Failed to initialize the specified crypt engine: %Q"
+msgstr "Falló la carga del motor de cifrado especificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1453
+#, fuzzy
+msgid "The crypt engine \"%Q\" does not exist"
+msgstr "La acción \"%1\" no existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1458
+msgid "This executable has been compiled without crypt support"
+msgstr "Este ejecutable se compiló sin soporte de cifrado SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:138
+msgid "Current window is not a channel"
+msgstr "La ventana actual no es un canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:87
+msgid "Raw Event"
+msgstr "Eventos Puros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:97
+msgid "Edit the raw event handler name."
+msgstr "Editar el nombre del manejador de evento puro."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:179
+msgid "&Add Raw Event..."
+msgstr "&Añadir Eventos Puros..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "New Raw Event"
+msgstr "Nuevo Evento Puro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "Enter the numeric code of the message (0-999)"
+msgstr "Introduce el código numérico del mensaje (0-999)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+msgid "Unable to write to the raw event file."
+msgstr "No fue posible escribir en el archivo de eventos puros."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Unable to write to the raw events file."
+msgstr "No fue posible escribir en el archivo de eventos puros."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:512
+msgid "Raw Editor"
+msgstr "Editor Puro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:219
+msgid "A really lame text transformation engine :D"
+msgstr "Un motor de transformación de texto verdaderamente simple :D"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:229
+msgid "A really lame text transformation engine: Light Version."
+msgstr ""
+"Un motor de transformación de texto verdaderamente simple: Versión Light."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:82
+#, c-format
+msgid "Socket Spy [IRC Context %u]"
+msgstr "Espía de Sockets [Contexto IRC %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:92
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Socket Spy</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Espía de Sockets</b></font> <font color=\"%s\">"
+"[Contexto IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:112
+msgid "Socket open"
+msgstr "Socket abierto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:117
+msgid "Socket closed"
+msgstr "Socket cerrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:149
+msgid "Internal unique name for the action"
+msgstr "Nombre interno único para la acción"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:151
+msgid "Label:"
+msgstr "Etiqueta:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:155
+msgid ""
+"Visible name for this action.<br>This string will be displayed to the user "
+"so it is a good idea to use $tr() here"
+msgstr ""
+"Nombre visible para esta acción.<br>Esta cadena será mostrada al usuario, "
+"por eso es una buena idea usar $tr() aquí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:166
+msgid "Action code"
+msgstr "Código de la acción"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:168
+msgid "Code"
+msgstr "Código"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:174
+msgid "Category:"
+msgstr "Categoría:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:178
+msgid "Choose the category that best fits for this action"
+msgstr "Escoge la categoría que mejor encaja para esta acción"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:180
+msgid "Description:"
+msgstr "Descripción:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:184
+msgid ""
+"Visible short description for this action.<br>This string will be displayed "
+"to the user so it is a good idea to use $tr() here"
+msgstr ""
+"Descripción corta visible para esta acción.<br>Esta cadena será mostrada al "
+"usuario, por ello es buena idea usar $tr() aquí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:186
+msgid "Small Icon:"
+msgstr "Icono Pequeño:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:194
+msgid ""
+"The small icon associated to this action.<br>It will appear at least in the "
+"popup menus when this action is inserted.<br>It should be 16x16 pixels."
+msgstr ""
+"Pequeño icono asociado a esta acción.<br>Aparecerá al menos en los menús "
+"emergentes cuando se inserte esta acción.<br>Debería ser de 16x16 pixels."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:200
+msgid "Big Icon:"
+msgstr "Icono Grande:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:209
+msgid ""
+"The big icon associated to this action.<br>It will appear at least in the "
+"toolbar buttons when this action is inserted.<br>It should be 32x32 pixels."
+msgstr ""
+"Icono grande asociado a esta acción.<br>Aparecerá al menos en los botones de "
+"los menús emergentes cuando se inserte esta acción.<br>Debería ser de 32x32 "
+"pixels."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:215
+msgid "Key Sequence:"
+msgstr "Secuencia de teclas:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:219
+msgid ""
+"Optional keyboard sequence that will activate this action.<br>The sequence "
+"should be expressed as a string of up to four key codes separated by commas "
+"eventually combined with the modifiers \"Ctrl\",\"Shift\",\"Alt\" and \"Meta"
+"\".<br>Examples of such sequences are \"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl+X,"
+"Ctrl+C\" ..."
+msgstr ""
+"Secuencia de teclado opcional que activará esta acción.<br>La secuencia "
+"debería ser expresada como una cadena de hasta cuatro códigos de tecla "
+"separados por comas y eventualmente combinado con los modificadores \"Ctrl"
+"\", \"May\", \"Alt\" y \"Alt Gr\".<br>Ejemplos de dichas secuencias son "
+"\"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl-X,Ctrl-C\" ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:240
+msgid "Needs IRC Context"
+msgstr "Necesita un Contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:242
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window belongs to an irc context"
+msgstr ""
+"Activa esta opción si esta acción debería ser habilitada únicamente cuando "
+"la ventana activa pertenezca a un contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:250
+msgid "Needs IRC Connection"
+msgstr "Necesita una Conexión de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:252
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window has an active IRC connection"
+msgstr ""
+"Activa esta opción si esta acción debería ser habilitada únicamente cuando "
+"la ventana actual tenga una conexión de IRC activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:260
+msgid "Enable at Login"
+msgstr "Habilitar al entrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:261
+msgid ""
+"Check this option if this action should be enabled also during the login "
+"operations (so when the logical IRC connection hasn't been estabilished yet)"
+msgstr ""
+"Activa esta opción si esta acción debería ser habilitada también durante las "
+"operaciones de entrada (es decir, cuando la conexión lógica al IRC no ha "
+"sido establecida todavía)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:265
+msgid "Enable Only in Specified Windows"
+msgstr "Habilitar únicamente en Ventanas Especificadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:267
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is of a specified type"
+msgstr ""
+"Habilita esta opción si esta acción debería ser activada solo cuando la "
+"ventana actual es de un tipo especificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:271
+msgid "Enable in Console Windows"
+msgstr "Habilitar en Ventanas de Consola"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:272
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a console"
+msgstr ""
+"Habilita esta opción si esta acción debería estar activada solo cuando la "
+"ventana activa es una consola"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:277
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:299
+msgid "Only If There Are Selected Users"
+msgstr "Solo si hay usuarios seleccionados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:278
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:300
+msgid ""
+"This will enable the action only if there are selected users in the active "
+"window"
+msgstr ""
+"Esto activará la opción únicamente si hay usuarios seleccionados en la "
+"ventana activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:282
+msgid "Enable in Channel Windows"
+msgstr "Habilitar en Ventanas de Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:283
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a channel"
+msgstr ""
+"Activa esta opción si esta acción solo debería permitirse cuando la ventana "
+"activa sea un canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:293
+msgid "Enable in Query Windows"
+msgstr "Habilitar en Ventanas de Privados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:294
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a query"
+msgstr ""
+"Activa esta opción si esta acción solo debería permitirse cuando la ventana "
+"activa es un privado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:304
+msgid "Enable in DCC Chat Windows"
+msgstr "Habilitar en Ventanas de Chat DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:305
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a dcc chat"
+msgstr ""
+"Activa esta opción si esta acción solo debería permitirse cuando la ventana "
+"activa sea un chat DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:627
+msgid "Action"
+msgstr "Acción"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:680
+msgid "New Action"
+msgstr "Nueva Acción"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:683
+msgid "Delete Actions"
+msgstr "Borrar Acciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:686
+msgid "Export Actions..."
+msgstr "Exportar Acciones..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Unable to write to the actions file."
+msgstr "No fue posible escribir en el archivo de acciones."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:823
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:824
+msgid "My Action"
+msgstr "Mis Acciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:825
+msgid "Put here a short description of your action"
+msgstr "Pon aquí una breve descripción de tu acción"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:925
+msgid "Action Editor"
+msgstr "Editor de Acciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:938
+msgid "Apply"
+msgstr "Aplicar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:63
+msgid "Outgoing traffic"
+msgstr "Tráfico saliente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:67
+msgid "Incoming traffic"
+msgstr "Tráfico entrante"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_crypt.cpp:160
+msgid "Invalid crypt engine"
+msgstr "Motor de cifrado no válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:296
+msgid "Directory"
+msgstr "Directorio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:315
+msgid "Socket"
+msgstr "Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:332
+msgid "Fifo"
+msgstr "FIFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:349
+msgid "Block device"
+msgstr "Dispositivo de bloques"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:366
+msgid "Char device"
+msgstr "Dispositivo de caracteres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:429
+msgid "Octet stream (unknown)"
+msgstr "Flujo de bytes (desconocido)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_osinfo.cpp:413
+msgid "Unknown "
+msgstr "Desconocido "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:181
+msgid "The specified network has no server entries"
+msgstr "La red especificada no tiene entradas de servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:239
+msgid ""
+"The server specification seems to be in the net:<string> but the network "
+"couln't be found in the database"
+msgstr ""
+"La especificación de servidor parece estar en la red:<string> pero la red no "
+"puede ser encontrada en la base de datos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:261
+msgid ""
+"The server specification seems to be in the id:<string> form but the "
+"identifier coulnd't be found in the database"
+msgstr ""
+"La especificación del servidor parece estar en el id:<string> pero el "
+"identificador no se encuentra en la base de datos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:71
+msgid "Aborted"
+msgstr "Cancelado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:96
+msgid "No request"
+msgstr "Sin petición"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:141
+msgid "No filename specified for the \"StoreToFile\" processing type"
+msgstr ""
+"No se especificó nombre de archivo para el tipo de procesado \"StoreToFile\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:160
+msgid "Invalid URL: Missing hostname"
+msgstr "URL Inválida: falta el nombre de la máquina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:167
+#, fuzzy
+msgid "Unsupported protocol %1"
+msgstr "Protocolo %s no soportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:189
+msgid "Unable to start the DNS lookup"
+msgstr "No puedo iniciar la búsqueda DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:194
+#, c-format
+msgid "Looking up host %s"
+msgstr "Buscando máquina %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:210
+#, fuzzy
+msgid "Host %s resolved to %Q"
+msgstr "Nombre de máquina %s resuelto a %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:246
+msgid "Unable to start the request slave thread"
+msgstr "No se pudo iniciar el hilo esclavo de peticiones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:251
+#, fuzzy
+msgid "Contacting host %Q on port %u"
+msgstr "Contactando con %s en el puerto %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:271
+msgid "Connection established, sending request"
+msgstr "Conexión establecida, enviando petición"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:322
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:51
+msgid "Success"
+msgstr "Éxito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:429
+msgid "Failed to rename the existing file, please rename manually and retry"
+msgstr ""
+"Fallo al renombrar el archivo existente, renombre manualmente e inténtelo de "
+"nuevo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:447
+#, fuzzy
+msgid "Can't open file \"%Q\" for writing"
+msgstr "No puedo abrir el archivo \"%s\" en modo escritura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:497
+#, c-format
+msgid "Invalid HTTP response: %s"
+msgstr "Respuesta HTTP no válida: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:503
+#, c-format
+msgid "Received HTTP response: %s"
+msgstr "Respuesta HTTP recibida: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:628
+msgid "Stream exceeding maximum length"
+msgstr "El flujo excede la longitud máxima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:661
+msgid "Header too long: exceeded 4096 bytes"
+msgstr "Cabecera muy larga: excede de 4096 bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:710
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:852
+msgid "Stream exceeded expected length"
+msgstr "El flujo excede la longitud esperada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:798
+msgid "Protocol error: invalid chunk size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:818
+#, fuzzy
+msgid "Chunk header too long: exceeded 4096 bytes"
+msgstr "Cabecera muy larga: excede de 4096 bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:987
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1193
+msgid "Operation timed out"
+msgstr "Expiró el tiempo para la operación"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1003
+#, fuzzy
+msgid "Unexpected SSL error"
+msgstr "Identificador inesperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1016
+msgid "Failed to enter non blocking mode"
+msgstr "Fallo al intentar entrar en modo no bloqueante"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1021
+msgid "Invalid target address"
+msgstr "Dirección de destino no válida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1056
+#, fuzzy
+msgid "Failed to initialize the SSL context"
+msgstr "Falló la carga del motor de cifrado especificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1058
+#, fuzzy
+msgid "Failed to initialize the SSL connection"
+msgstr "Fallo al comenzar la conexión: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1075
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:99
+msgid "Remote end has closed the connection"
+msgstr "El extremo remoto ha cerrado la conexión"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1087
+#, fuzzy
+msgid "Unrecoverable SSL error during handshake"
+msgstr "Error irrecuperable del servidor de nombre (Se colgó?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1272
+msgid "Operation timed out (while selecting for read)"
+msgstr ""
+"Expiró el tiempo para la operación (mientras se hacía un select de lectura)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1382
+#, fuzzy
+msgid "This KVIrc executable has no SSL support"
+msgstr "Este ejecutable de KVIrc no tiene soporte IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1147
+msgid "Back"
+msgstr "Atrás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:268
+#, fuzzy
+msgid "Next"
+msgstr "Siguie&nte >"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:168
+#, fuzzy
+msgid "%1 bytes"
+msgstr "bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:172
+msgid "%1 KB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:176
+msgid "%1 MB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:181
+msgid "%1 GB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:185
+msgid "%1 TB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:620
+msgid "Internal error"
+msgstr "Error interno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:54
+msgid "Unknown command"
+msgstr "Comando desconocido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:55
+msgid "Missing closing brace"
+msgstr "Falta la llave de cierre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:56
+msgid "Unexpected end of command in string"
+msgstr "Fin de comando inesperado en cadena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:57
+msgid "Unexpected end of command in dictionary key"
+msgstr "Fin de comando inesperado en clave de diccionario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:58
+msgid "Switch dash without switch letter"
+msgstr "Barra de cambio sin letra de cambio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:59
+msgid "Unknown function"
+msgstr "Función desconocida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:60
+msgid "Unexpected end of command in parenthesis"
+msgstr "Fin de comando inesperado en paréntesis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:61
+msgid "Unexpected end of command in function parameters"
+msgstr "Fin de comando inesperado en parámetros de función"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:62
+msgid "Missing variable name"
+msgstr "Falta el nombre de la variable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:63
+msgid "Variable or identifier expected"
+msgstr "Se esperaba una variable o identificador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:64
+msgid "Left operand is not a number"
+msgstr "El operando de la izquierda no es un número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:65
+msgid "Multiple operations not supported for numeric operators"
+msgstr "Los operadores numéricos no soportan operaciones múltiples"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:67
+msgid "Modulo by zero"
+msgstr "Módulo por cero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:68
+msgid "Right operand is not a number"
+msgstr "El operando de la derecha no es un número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:69
+msgid "Unterminated expression (missing ')' ?)"
+msgstr "Expresión inacabada (falta un ')' ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:70
+msgid "Unterminated subexpression (Parenthesis mismatch)"
+msgstr "Subexpresión inacabada (Los paréntesis no concuerdan)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:71
+msgid "Unexpected character"
+msgstr "Carácter inesperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:73
+msgid "No host to resolve"
+msgstr "No hay máquina que resolver"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:74
+msgid "(DNS Internal) Unsupported address family"
+msgstr "(Interno DNS) Familia de dirección no soportada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:75
+msgid "Valid name but the host has no IP address"
+msgstr "Nombre válido pero la máquina no tiene dirección IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:76
+msgid "Unrecoverable nameserver error (crashed ?)"
+msgstr "Error irrecuperable del servidor de nombre (Se colgó?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:77
+msgid "Dns temporaneous fault (try again)"
+msgstr "Fallo temporal de DNS (pruebe otra vez)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:78
+msgid "(DNS Internal) Bad flags"
+msgstr "(Interno DNS) parámetros incorrectos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:79
+msgid "(DNS Internal) Out of memory"
+msgstr "(Interno DNS) Sin memoria"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:80
+msgid "(DNS Internal) Service not supported"
+msgstr "(Interno DNS) Servicio no soportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:81
+msgid "Unknown node (host not found)"
+msgstr "Nodo desconocido (máquina no encontrada)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:82
+msgid "(DNS Internal) Unsupported socket type"
+msgstr "(Interno DNS) Tipo de socket no soportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:83
+msgid "Dns query failed"
+msgstr "Petición DNS fallida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:84
+msgid "This KVIrc executable has no IPV6 support"
+msgstr "Este ejecutable de KVIrc no tiene soporte IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:85
+msgid "Host not found"
+msgstr "máquina no encontrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:86
+msgid "(DNS Internal) IPC failure (slave data corrupted)"
+msgstr "(Interno DNS) Fallo IPC (datos esclavos corruptos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:88
+msgid "Invalid IP address"
+msgstr "Dirección IP no válida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:90
+msgid "Failed to put the socket in non blocking mode"
+msgstr "Fallo al poner el socket en modo no bloqueante"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:91
+msgid "Bad file descriptor"
+msgstr "Descriptor de archivo no válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:92
+msgid "Out of address space"
+msgstr "Sin espacio de direcciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:93
+msgid "Connection refused"
+msgstr "Conexión rechazada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:94
+msgid "Kernel networking panic"
+msgstr "Error grave en el nucleo de red"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:95
+msgid "Connection timed out"
+msgstr "La conexión se paso de tiempo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:96
+msgid "Network is unreachable"
+msgstr "La red es inalcanzable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:97
+msgid "Broken pipe"
+msgstr "Tubería rota"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:98
+msgid "Invalid proxy address"
+msgstr "Dirección de proxy no válida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:100
+msgid "Invalid irc context id"
+msgstr "Id de contexto irc no válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:101
+msgid "Error in loading module"
+msgstr "Error en carga de módulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:102
+msgid "No such module command"
+msgstr "No hay tal comando de módulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:103
+msgid "No such module function"
+msgstr "No hay tal función de módulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:104
+msgid "Left operand is not a dictionary reference"
+msgstr "El operador izquierdo no es una referencia a diccionario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:105
+msgid "Right operand is not a dictionary reference"
+msgstr "El operador derecho no es una referencia a diccionario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:106
+msgid "Missing object class name"
+msgstr "Falta el nombre de la clase del objeto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:107
+msgid "No such object class"
+msgstr "No existe esa clase de objeto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:108
+msgid "No such object"
+msgstr "No existe ese objeto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:109
+msgid "No such object function"
+msgstr "No existe tal función de objeto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:110
+msgid "Invalid left operand"
+msgstr "Operador izquierdo no válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:111
+msgid "Not enough parameters"
+msgstr "No hay suficientes parámetros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:112
+msgid "Integer parameter expected"
+msgstr "Se esperaba parámetro entero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:113
+msgid "Invalid parameter"
+msgstr "parámetro no válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:114
+msgid "No such file"
+msgstr "No existe el archivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:115
+msgid "Open parenthesis expected"
+msgstr "Se esperaba paréntesis de apertura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:116
+msgid "Open brace expected"
+msgstr "Se esperaba llave de apertura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:117
+msgid "Can't kill a builtin class"
+msgstr "No puede matar una clase interna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:118
+msgid "The SOCKSV4 protocol lacks IpV6 support"
+msgstr "El protocolo SOCKSV4 no tiene soporte IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:119
+msgid "Unrecognized proxy reply"
+msgstr "Respuesta del proxy no reconocida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:120
+msgid "Proxy response: auth failed: access denied"
+msgstr "Respuesta del proxy: autentificación fallida: acceso denegado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:121
+msgid "Proxy response: No acceptable auth method: request rejected"
+msgstr "Respuesta del proxy: Sin método auth aceptable: petición rechazada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:122
+msgid "Proxy response: request failed"
+msgstr "Respuesta del proxy: petición fallida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:123
+msgid "Proxy response: ident failed"
+msgstr "Respuesta del proxy: ident fallido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:124
+msgid "Proxy response: ident not matching"
+msgstr "Respuesta del proxy: identidad (ident) no concuerda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:125
+msgid "Proxy response: general SOCKS failure"
+msgstr "Respuesta del proxy: fallo general de SOCKS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:126
+msgid "Proxy response: connection not allowed"
+msgstr "Respuesta del proxy: conexión no permitida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:127
+msgid "Proxy response: network unreachable"
+msgstr "Respuesta del proxy: red inalcanzable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:128
+msgid "Proxy response: host unreachable"
+msgstr "Respuesta del proxy: máquina inalcanzable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:129
+msgid "Proxy response: connection refused"
+msgstr "Respuesta del proxy: conexión rechazada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:130
+msgid "Proxy response: TTL expired"
+msgstr "Respuesta del proxy: TTL expirado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:131
+msgid "Proxy response: command not supported"
+msgstr "Respuesta del proxy: comando no soportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:132
+msgid "Proxy response: address type not supported"
+msgstr "Respuesta del proxy: tipo de dirección no soportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:133
+msgid "Proxy response: invalid address"
+msgstr "Respuesta del proxy: dirección no válida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:134
+msgid "Invalid port number"
+msgstr "Número de puerto no válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:135
+msgid "Socket not connected"
+msgstr "Socket no conectado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:136
+msgid "Insufficient resources to complete the operation"
+msgstr "Recursos insuficientes para completar la operación"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:137
+msgid "Can't setup a listening socket : bind failed"
+msgstr "No puedo configurar un socket en escucha : falló el enlace (bind)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:138
+msgid "Can't resolve the localhost name"
+msgstr "No puedo resolver el nombre de máquina local"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:139
+msgid "Unsupported image format"
+msgstr "Formato de imagen no soportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:140
+msgid "Can't open file for appending"
+msgstr "No puedo abrir el archivo para añadir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:542
+msgid "Can't open file for writing"
+msgstr "No puedo abrir el archivo para escritura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:142
+msgid "File I/O error"
+msgstr "Error E/S archivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:143
+msgid "Acknowledge error"
+msgstr "Error en confirmación"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:982
+msgid "Can't open file for reading"
+msgstr "No puedo abrir el archivo para lectura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:145
+msgid "Can't send a zero-size file"
+msgstr "No puedo enviar un archivo de tamaño cero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:146
+msgid "Missing popup name"
+msgstr "Falta nombre de menú emergente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:147
+msgid "'item', 'popup', 'label' or 'separator' keyword expected"
+msgstr ""
+"se esperaba una palabra clave de entre 'item', 'popup', 'label' o 'separator'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:148
+msgid "Self modification not allowed"
+msgstr "Automodificación no permitida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:149
+msgid "UNUSED"
+msgstr "SIN USO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:150
+msgid "Feature not available"
+msgstr "Funcionalidad no disponible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:151
+msgid "Unexpected characters in array index"
+msgstr "Caracteres inesperados en índice de array"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:152
+msgid "Unexpected end in expression"
+msgstr "Fin de expresión inesperada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:153
+msgid "Unexpected end in array index"
+msgstr "Fin inesperado en el índice de array"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:154
+msgid "Connection thru HTTP proxy failed"
+msgstr "La conexión a través del proxy HTTP fall"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:155
+msgid "Case , match , regexp , default or break keyword expected"
+msgstr "Se esperaba una palabra clave case, match, regexp, default o break"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:156
+msgid "Access denied"
+msgstr "Acceso denegado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:157
+msgid "Address already in use"
+msgstr "Dirección en uso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:158
+msgid "Can't assign the requested address"
+msgstr "No se pudo asignar la dirección solicitada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:159
+msgid "Connection reset by peer"
+msgstr "Conexión cerrada por la otra máquina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:160
+msgid "Host unreachable (no route to host)"
+msgstr "Maquina inalcanzable (no hay ruta hacia la máquina)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:161
+msgid "Variable expected"
+msgstr "Se esperaba una variable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:162
+msgid "Invalid array index: positive integer expected"
+msgstr "Índice de array no válido: se esperaba entero positivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:163
+msgid "listen() call failed"
+msgstr "llamada a listen() fallida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:164
+msgid "This executable has been compiled without SSL support"
+msgstr "Este ejecutable se compiló sin soporte SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:165
+msgid "Secure Socket Layer error"
+msgstr "Error SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:166
+msgid "Slash (/) character expected"
+msgstr "Se esperaba un carácter barra (/)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:167
+msgid "Unknown string manipulation operation"
+msgstr "Operación de manipulación de cadena desconocida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:168
+msgid "Operation aborted"
+msgstr "Operación cancelada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:169
+msgid "Unexpected token"
+msgstr "Identificador inesperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:170
+msgid "Scope object already defined (unexpected @)"
+msgstr "Ya se definió el ámbito del objeto (@ inesperado)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:171
+msgid "There is no $this pointer in this scope (unexpected @)"
+msgstr "No hay un puntero $this en este ámbito (@ inesperado)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:140
+#, fuzzy
+msgid "Operation cancelled"
+msgstr "Operación cancelada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:170
+#, fuzzy
+msgid "File write error"
+msgstr "Error E/S archivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:176
+#, fuzzy
+msgid "File read error"
+msgstr "Error E/S archivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:324
+msgid "Packaging file %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:779
+#, fuzzy
+msgid "Failed to open a source file for reading"
+msgstr "No puedo abrir el archivo para lectura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:817
+msgid "Compression library initialization error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:394
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:828
+msgid "Compression library error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:465
+#, fuzzy
+msgid "Compression library internal error"
+msgstr "Argh... error interno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:485
+msgid "Error while compressing a file stream"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:526
+msgid "Creating package..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:527
+msgid "Writing package header"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:571
+msgid "Writing informational fields"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:597
+msgid "Writing package data"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:659
+#, fuzzy
+msgid "The file specified is not a valid KVIrc package"
+msgstr "La versión especificada \"%Q\" no es una cadena de versión válida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:668
+msgid ""
+"The package has an invalid version number, it might have been created by a "
+"newer KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:714
+msgid "Invalid info field: the package is probably corrupt"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:745
+msgid ""
+"The package contains compressed data but this executable does not support "
+"compression"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:771
+#, fuzzy
+msgid "Failed to create the target directory"
+msgstr "No puedo crear el directorio para el tema."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:784
+msgid "Unpacking file %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:916
+msgid "Error in compressed file stream"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:990
+msgid "Reading package..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:991
+msgid "Reading package header"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:998
+#, fuzzy
+msgid "Reading package data"
+msgstr "Datos de clave erróneos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:1017
+msgid "Invalid data field: the package is probably corrupt"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1127
+msgid "Select color"
+msgstr "Seleccionar color"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1128
+msgid "&Basic colors"
+msgstr "Colores &básicos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1129
+msgid "&Custom colors"
+msgstr "&Colores personalizados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1130
+msgid "&Red"
+msgstr "&Rojo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1131
+msgid "&Green"
+msgstr "&Verde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1132
+msgid "Bl&ue"
+msgstr "Az&ul"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1133
+msgid "&Define Custom Colors >>"
+msgstr "&Definir Colores Personalizados >>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1134
+msgid "&Add to Custom Colors"
+msgstr "&Añadir Colores Personalizados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1136
+msgid "Select Font"
+msgstr "Seleccionar Fuente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1137
+msgid "&Font"
+msgstr "&Fuentes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1138
+msgid "Font st&yle"
+msgstr "Est&ilo de fuente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1139
+msgid "&Size"
+msgstr "&Tamaño"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1140
+msgid "Sample"
+msgstr "Ejemplo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1141
+msgid "Effects"
+msgstr "Efectos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1142
+msgid "Stri&keout"
+msgstr "Tachada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1143
+msgid "&Underline"
+msgstr "S&ubrayado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1144
+msgid "Scr&ipt"
+msgstr "Scr&ipt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1146
+msgid "Parent Directory"
+msgstr "Directorio Padre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1148
+msgid "Forward"
+msgstr "Adelante"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1149
+msgid "Reload"
+msgstr "Recargar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1150
+msgid "New Directory"
+msgstr "Nuevo Directorio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1151
+msgid "Bookmarks"
+msgstr "Marcadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1152
+msgid "Add Bookmark"
+msgstr "Añadir Marcador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1153
+msgid "&Edit Bookmarks"
+msgstr "&Editar Marcadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1154
+msgid "New Bookmark Folder..."
+msgstr "Nuevo Directorio de Marcadores..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1156
+msgid "Sorting"
+msgstr "Ordenación"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1157
+msgid "By Name"
+msgstr "Por Nombre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1158
+msgid "By Date"
+msgstr "Por Fecha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1159
+msgid "By Size"
+msgstr "Por Tamaño"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1160
+msgid "Reverse"
+msgstr "Inversa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1161
+msgid "Directories First"
+msgstr "Directorios Primero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1162
+msgid "Case Insensitive"
+msgstr "No distingue mays/mins"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1163
+msgid "Short View"
+msgstr "Vista Breve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1164
+msgid "Detailed View"
+msgstr "Vista Detallada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1165
+msgid "Show Hidden Files"
+msgstr "Mostrar Archivos Escondidos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1166
+msgid "Show Quick Access Navigation Panel"
+msgstr "Mostrar Acceso a Panel de Navegación Rápida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1167
+msgid "Show Preview"
+msgstr "Mostrar Previsualización"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1168
+msgid "Separate Directories"
+msgstr "Separar Directorios"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1169
+msgid "Often used directories"
+msgstr "Directorios usados más frecuentemente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1170
+msgid "Desktop"
+msgstr "Escritorio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1171
+msgid "Home Directory"
+msgstr "Directorio Personal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1172
+msgid "Floppy"
+msgstr "Disquetera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1173
+msgid "Temporary Files"
+msgstr "Archivos Temporales"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1174
+msgid "Network"
+msgstr "Red"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1175
+msgid "New Directory..."
+msgstr "Nuevo Directorio..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1176
+msgid "Delete"
+msgstr "Borrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1177
+msgid "Thumbnail Previews"
+msgstr "Previsualizar Diapositivas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1178
+msgid "Large Icons"
+msgstr "Iconos Grandes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1179
+msgid "Small Icons"
+msgstr "Iconos Pequeños"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1180
+msgid "Properties..."
+msgstr "Propiedades..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1181
+msgid "&Automatic Preview"
+msgstr "Previsualización &Automática"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1182
+msgid "&Preview"
+msgstr "&Previsualizar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1183
+msgid "&Location:"
+msgstr "&Localización:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1184
+msgid "&Filter:"
+msgstr "&Filtro:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1185
+msgid "All Files"
+msgstr "Todos los Archivos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:104
+msgid "- d -- h -- m -- s"
+msgstr "- d -- h -- m -- s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:111
+#, c-format
+msgid "%u h %u m %u s"
+msgstr "%u h %u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:113
+#, c-format
+msgid "%u h %u%u m %u%u s"
+msgstr "%u h %u%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:118
+#, c-format
+msgid "%u m %u s"
+msgstr "%u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:120
+#, c-format
+msgid "%u m %u%u s"
+msgstr "%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:122
+#, c-format
+msgid "%u s"
+msgstr "%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:127
+#, c-format
+msgid "%u d %u h %u m %u s"
+msgstr "%u d %u h %u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:129
+#, c-format
+msgid "%u d %u%u h %u%u m %u%u s"
+msgstr "%u d %u%u h %u%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+#, fuzzy
+msgid "Usage"
+msgstr "Nombre de usuario:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+#, fuzzy
+msgid "message"
+msgstr "Mensajes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:99
+msgid "-m: send a message instead of a notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:100
+#, fuzzy
+msgid "-w: send notice to all channel owners"
+msgstr "Actualizando el estado de ausente para el canal %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:101
+#, fuzzy
+msgid "-a: send notice to all channel admins"
+msgstr "Actualizando el estado de ausente para el canal %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:102
+#, fuzzy
+msgid "-o: send notice to all channel ops"
+msgstr "Actualizando el estado de ausente para el canal %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:103
+msgid "-h: send notice to all channel halfops"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:104
+msgid "-v: send notice to all channel voices"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:105
+msgid "-q: quiet mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:138
+msgid "Sending wallop to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:314
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:410
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:493
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:535
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:593
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:653
+#, fuzzy
+msgid "Usage:"
+msgstr "Nombre de usuario:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:223
+msgid "reason"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:272
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:416
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:440
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:599
+#, fuzzy
+msgid "This is not a channel window"
+msgstr "Esto no es un canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:581
+#, fuzzy
+msgid "Unsupported type: $0"
+msgstr "Mode de cifrado no soportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:604
+#, fuzzy
+msgid "Channel Owner"
+msgstr "Propietario del canal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:606
+#, fuzzy
+msgid "Channel Administrator"
+msgstr "administrador del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:608
+#, fuzzy
+msgid "Channel Operator"
+msgstr "Operadores de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:610
+#, fuzzy
+msgid "Half Operator"
+msgstr "semioperadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:612
+msgid "Voice"
+msgstr "Voz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:614
+#, fuzzy
+msgid "User Operator"
+msgstr "usuario operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:616
+#, fuzzy
+msgid "Normal User"
+msgstr "Texto normal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:641
+msgid "You must use DNS in an IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:647
+#, fuzzy
+msgid "You must be connected to a server"
+msgstr "No está conectado a un servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:664
+#, fuzzy
+msgid "No such user: $0"
+msgstr "No existe el cronómetro (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:33
+msgid "The default script has been successfully installed."
+msgstr "El script por defecto ha sido instalado satisfactoriamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:34
+msgid "To connect to a server, type /server <server name>"
+msgstr "Para conectar a un servidor, escriba /server <nombre de servidor>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:36
+msgid "Happy ircing :)"
+msgstr "Feliz irceo :)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:15
+#, fuzzy
+msgid "Options"
+msgstr "Títulos MDI"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:40
+#, fuzzy
+msgid "Window operations"
+msgstr "Guardar Propiedades de &Ventana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMENAME@"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMEDESCRIPTION@"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:18
+msgid "Stop Highlighting (Local)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:23
+msgid "Start Highlighting (Local)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:28
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:61
+#, fuzzy
+msgid "Always Highlight"
+msgstr "Alerta/Resaltado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:30
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:55
+#, fuzzy
+msgid "Highlight as"
+msgstr "Texto resaltado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:66
+#, fuzzy
+msgid "Stop Highlighting"
+msgstr "Activar resaltado de palabras"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:82
+#, fuzzy
+msgid "is being ignored"
+msgstr "ignorada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:87
+msgid "is not being ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:93
+#, fuzzy
+msgid "Enable Ignore"
+msgstr "Activar Manejador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:98
+#, fuzzy
+msgid "Ignore as..."
+msgstr "Ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:240
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:282
+#, fuzzy
+msgid "Ignore as"
+msgstr "Ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:290
+#, fuzzy
+msgid "Unignore"
+msgstr "ignorada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:308
+#, fuzzy
+msgid "is registered as"
+msgstr "Registrados como"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:311
+#, fuzzy
+msgid "is in the notify list"
+msgstr "No hay usuarios en la lista de notificación"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:314
+msgid "has a default avatar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:317
+#, fuzzy
+msgid "is not registered"
+msgstr "Registrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:323
+#, fuzzy
+msgid "Register"
+msgstr "Registrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:328
+#, fuzzy
+msgid "Quick Registration"
+msgstr "Acción expulsar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:330
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:355
+#, fuzzy
+msgid "Register as"
+msgstr "Registrados como"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:361
+#, fuzzy
+msgid "Edit Registration"
+msgstr "Falló el registro del script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:366
+#, fuzzy
+msgid "Unregister"
+msgstr "Registrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:373
+#, fuzzy
+msgid "Add to Notify"
+msgstr "Notificar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:378
+#, fuzzy
+msgid "Remove from Notify"
+msgstr "Eliminar Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:385
+#, fuzzy
+msgid "Choose"
+msgstr "Escoger..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:387
+#, fuzzy
+msgid "Choose Avatar Image File"
+msgstr "Escoge un Archivo de Imagen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:396
+msgid "Set as Default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:401
+#, fuzzy
+msgid "Clear Default"
+msgstr "Limpiar Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:412
+#, fuzzy
+msgid "Copy To Clipboard"
+msgstr "Copiar al portapapeles"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:433
+#, fuzzy
+msgid "Ban"
+msgstr "y"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1037
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1084
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1224
+#, fuzzy
+msgid "Multiple Users"
+msgstr "Cambio múltiple del modo de usuario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:577
+#, fuzzy
+msgid "&Ban"
+msgstr "&Añadir Prohibición"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1089
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1229
+msgid "idle time"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:758
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1236
+#, fuzzy
+msgid "&Information"
+msgstr "Información del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1115
+msgid "DNS for"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:499
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1120
+#, fuzzy
+msgid "Mask for"
+msgstr "Editor de máscaras"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:505
+#, fuzzy
+msgid "&Control"
+msgstr "Contador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:509
+msgid "O&wner"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:514
+msgid "&Deowner"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:519
+#, fuzzy
+msgid "&Administrator"
+msgstr "administrador del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:524
+#, fuzzy
+msgid "&Deadministrator"
+msgstr "administrador del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:529
+#, fuzzy
+msgid "&Op"
+msgstr "&Aceptar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:534
+#, fuzzy
+msgid "&Deop"
+msgstr "Escritorio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:539
+#, fuzzy
+msgid "&Halfop"
+msgstr "Semioperador:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:544
+#, fuzzy
+msgid "&Dehalfop"
+msgstr "Am semidesopeado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:549
+#, fuzzy
+msgid "&Voice"
+msgstr "Voz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:554
+#, fuzzy
+msgid "D&evoice"
+msgstr "Am silenciado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:561
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "&Kick"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+msgid "K&ick"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+#, fuzzy
+msgid "With..."
+msgstr "&Editar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+#, fuzzy
+msgid "Kick Reason"
+msgstr "Acción expulsar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Enter a kick reason"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+#, fuzzy
+msgid "Kick/Ban"
+msgstr "Acción expulsar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+#, fuzzy
+msgid "Kick/Ban Reason"
+msgstr "Acción expulsar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Enter a kick/ban reason"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "&Kick/Ban"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:604
+#, fuzzy
+msgid "Configure ban mask..."
+msgstr "Configurar Servidores..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:612
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1263
+#, fuzzy
+msgid "&Query"
+msgstr "Privado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:625
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1136
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1276
+#, fuzzy
+msgid "&Registration"
+msgstr "Registro completado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1278
+#, fuzzy
+msgid "&Highlight"
+msgstr "Alerta/Resaltado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:629
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1280
+#, fuzzy
+msgid "Ig&nore"
+msgstr "Ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:726
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1050
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1138
+#, fuzzy
+msgid "Notify Avatar"
+msgstr "Lista de Notificaciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:705
+#, fuzzy
+msgid "&Part"
+msgstr "&Pegar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:664
+#, fuzzy
+msgid "Copy Channel Address"
+msgstr "Modos de Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:749
+#, fuzzy
+msgid "Channels"
+msgstr "Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:693
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:753
+#, fuzzy
+msgid "&Join Channels..."
+msgstr "Unirse a Canales..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:700
+#, fuzzy
+msgid "&Hop"
+msgstr "Saltos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:733
+#, fuzzy
+msgid "Copy Channel URL to Clipboard"
+msgstr "Copiar al portapapeles"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:782
+#, fuzzy
+msgid "l (Connections)"
+msgstr "Conexión"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:787
+msgid "m (Command Usage)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:792
+#, fuzzy
+msgid "o (Operators)"
+msgstr "operadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:797
+#, fuzzy
+msgid "t (Connection stats ?)"
+msgstr "Estado de la conexión"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:802
+msgid "u (Uptime)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:807
+msgid "y (y-Lines)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:812
+msgid "z (Debug Stats?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:909
+#, fuzzy
+msgid "Chat with"
+msgstr "Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:914
+#, fuzzy
+msgid "Reverse Chat with"
+msgstr "Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:919
+msgid "Secure Chat with"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:926
+#, fuzzy
+msgid "Send to"
+msgstr "Puesto el"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:931
+#, fuzzy
+msgid "Secure send to"
+msgstr "Inversa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:936
+#, fuzzy
+msgid "Reverse Send to"
+msgstr "Inversa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:941
+#, fuzzy
+msgid "Secure Reverse Send to"
+msgstr "Inversa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:948
+msgid "TDCC Send to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:953
+msgid "TDCC Reverse Send to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:960
+#, fuzzy
+msgid "Voice Chat"
+msgstr "Voz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1134
+#, fuzzy
+msgid "&Ignore"
+msgstr "Ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1165
+#, fuzzy
+msgid "Logging to"
+msgstr "Registro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1167
+msgid "Flush Log File"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1174
+#, fuzzy
+msgid "Stop Logging"
+msgstr "Registro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1179
+#, fuzzy
+msgid "Not Logging"
+msgstr "Registro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+msgid "Log To Default File"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+#, fuzzy
+msgid "Include Existing Buffer"
+msgstr "### Buffer de datos existente:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+#, fuzzy
+msgid "Log To..."
+msgstr "Exportar a..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1201
+#, fuzzy
+msgid "Choose Log Filename"
+msgstr "Escoja un nombre de archivo - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1282
+#, fuzzy
+msgid "Notify avatar"
+msgstr "Lista de Notificaciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:50
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$copyfiles must be a "
+"source directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:56
+#, c-format
+msgid ""
+"[Installer] The second argument to \\%installer->\\$copyfiles must be a file "
+"name or file regexp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:62
+#, c-format
+msgid ""
+"[Installer] The third argument to \\%installer->\\$copyfiles must be a "
+"destination directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:94
+#, fuzzy
+msgid "[Installer] Failed to create directory"
+msgstr "Fallo al borrar el directorio %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:104
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$includefiles must be a "
+"source directory"
+msgstr ""
+
+#, fuzzy
+#~ msgid "Lag is"
+#~ msgstr "Registrar esto"
+
+#, fuzzy
+#~ msgid "milliseconds"
+#~ msgstr "Iconos pequeños"
+
+#~ msgid "%c\r!s\r%s\r%c: %Q"
+#~ msgstr "%c\r!n\r%s\r%c: %Q"
+
+#, fuzzy
+#~ msgid "Basic Properties"
+#~ msgstr "Propiedades"
+
+#, fuzzy
+#~ msgid "Other:"
+#~ msgstr "Otros..."
+
+#, fuzzy
+#~ msgid "Choose a server to connect"
+#~ msgstr "Escoja un archivo servers.ini"
+
+#, fuzzy
+#~ msgid "Server:"
+#~ msgstr "Pings de servidor"
+
+#, fuzzy
+#~ msgid "Port:"
+#~ msgstr "Propiedad"
+
+#, fuzzy
+#~ msgid "URL:"
+#~ msgstr "URL"
+
+#, fuzzy
+#~ msgid "Config file:"
+#~ msgstr "Configurar"
+
+#~ msgid "Report a Bug"
+#~ msgstr "Informar de un Bug"
+
+#~ msgid "Smart"
+#~ msgstr "Inteligente"
+
+#~ msgid "Window with ID '%s' not found"
+#~ msgstr "Ventana con ID '%s' no encontrada"
+
+#~ msgid "Module function call failed: can't load the module 'str'"
+#~ msgstr ""
+#~ "Falló la llamada a la función del módulo: no puedo cargar el módulo 'str'"
+
+#~ msgid ""
+#~ "Module function call failed: the module 'str' doesn't export a function "
+#~ "named 'split'"
+#~ msgstr ""
+#~ "Falló la llamada a la función: el módulo 'str' no exporta una función "
+#~ "llamada 'split'"
+
+#~ msgid "Notify"
+#~ msgstr "Notificar"
+
+#, fuzzy
+#~ msgid "Image parameter is not an object"
+#~ msgstr "El parámetro especificado no es un entero"
+
+#, fuzzy
+#~ msgid "Image object required"
+#~ msgstr "Necesita un objeto Pixmap"
+
+#~ msgid "Can't fill non-widget object"
+#~ msgstr "No puedo rellenar un objeto no-widget"
+
+#, fuzzy
+#~ msgid "Image objects required"
+#~ msgstr "Necesita un objeto Pixmap"
+
+#~ msgid "<b>Nickname:</b>"
+#~ msgstr "<b>Nick:</b>"
+
+#~ msgid ""
+#~ "<p>Here you can choose the default appearance of KVIrc.<br><br>The Fancy "
+#~ "Theme uses icons, a transparent background and a lot of colors. The "
+#~ "Minimalist Theme is designed for low-color displays or for \"console\" "
+#~ "extremists; it's more or less white text on a black background.<br><br>If "
+#~ "you had a previous version of KVIrc installed, you can choose to not "
+#~ "apply any theme in order to preserve your current visual settings."
+#~ "<br><br>If you don't know what to choose, just use the default.</p>"
+#~ msgstr ""
+#~ "<p>Aquí puede escoger la apariencia por defecto de KVIrc.<br><br>El tema "
+#~ "caprichoso usa iconos, un fondo transparente y montones de colores. El "
+#~ "tema minimalista está diseñado para pantallas con pocos colores o para "
+#~ "extremistas de la \"consola\"; más o menos es texto blanco sobre fondo "
+#~ "negro.<br><br>Si tenía instalada una versión previa de KVIrc, puede "
+#~ "escoger no aplicar ningún tema para preservar sus configuraciones "
+#~ "visuales actuales.<br><br>Si no sabe que quiere escoger, use la "
+#~ "configuración por defecto.</p>"
+
+#~ msgid "&Fancy Theme"
+#~ msgstr "Tema &caprichoso"
+
+#~ msgid "&Minimalist Theme"
+#~ msgstr "Tema &minimalista"
+
+#~ msgid "&Don't apply any theme"
+#~ msgstr "&No aplicar tema alguno"
+
+#~ msgid "Default Theme"
+#~ msgstr "Tema Por defecto"
+
+#~ msgid ""
+#~ "<p>Setup can make a shortcut to the KVIrc program on your desktop, so you "
+#~ "can access it quickly.</p><p>Do you want this shortcut to be created?</p>"
+#~ msgstr ""
+#~ "<p>La configuración puede crear un acceso directo al ejecutable de KVIrc "
+#~ "en su escritorio.</p><p>Quiere crearlo?</p>"
+
+#~ msgid "<p>If you're unsure just say \"Yes\"</p>"
+#~ msgstr "<p>Si no está seguro, simplemente conteste \"Si\"</p>"
+
+#~ msgid ""
+#~ "<p>Setup can now set KVIrc as default application for the irc:// and "
+#~ "irc6:// urls.</p><p>Do you want these settings to be applied?</p>"
+#~ msgstr ""
+#~ "<p>El módulo de configuración pondrá ahora a KVIrc como aplicación por "
+#~ "defecto para las urls irc:// e irc6://.</p><p>Quiere que se apliquen "
+#~ "estos cambios?</p>"
+
+#~ msgid "URL Handlers"
+#~ msgstr "Manejadores de URL"
+
+#~ msgid ""
+#~ "<p><h2>Setup Complete</h2>Setup now has all the necessary information to "
+#~ "configure KVIrc.</p><p>Please click the \"<b>Finish</b>\" button to save "
+#~ "your choices and start KVIrc.</p>"
+#~ msgstr ""
+#~ "<p><h2>Configuración Terminada</h2>El asistente tiene ahora toda la "
+#~ "información necesaria para configurar KVIrc.</p><p>Por favor, pulse el "
+#~ "botón \"<b>Terminar</b>\" para guardar sus preferencias e iniciar KVIrc.</"
+#~ "p>"
+
+#~ msgid "Finish Setup"
+#~ msgstr "Finalizar asistente"
+
+#~ msgid "Empty string"
+#~ msgstr "Cadena vacía"
+
+#~ msgid "No such open mode: %s"
+#~ msgstr "No existe el modo de apertura: %s"
+
+#~ msgid "Negative file index supplied !"
+#~ msgstr " Se proporcionó un índice de archivo negativo !"
+
+#~ msgid "Argument length is 0 - empty string"
+#~ msgstr "La longitud del argumento es 0 - cadena vacía"
+
+#~ msgid "Length is a negative number !"
+#~ msgstr " La longitud es un número negativo !"
+
+#~ msgid "Nothing to write"
+#~ msgstr "Nada que escribir"
+
+#~ msgid "[IDENT]: Service shutdown (spontaneous)"
+#~ msgstr "[IDENT]: Servicio parado (espontáneo)"
+
+#~ msgid "[IDENT]: Service shutdown (on request)"
+#~ msgstr "[IDENT]: Servicio parado (a petición)"
+
+#~ msgid "Background not found %Q "
+#~ msgstr "Fondo no encontrado %Q"
+
+#~ msgid "Pixmap objects required !"
+#~ msgstr " Necesita un objeto Pixmap !"
+
+#~ msgid "Pixmap is null"
+#~ msgstr "Pixmap nulo"
+
+#~ msgid ""
+#~ "Broken slot '%s' in target object '%s' while emitting signal '%s' from "
+#~ "object '%s': disconnecting"
+#~ msgstr ""
+#~ "Slot '%s' erróneo en objeto destino '%s' mientras se emitía la señal '%s' "
+#~ "desde el objeto '%s': desconectando"
+
+#~ msgid ""
+#~ "No slot function '%s' exported by target object '%s' while emitting "
+#~ "signal '%s' from object '%s': disconnecting"
+#~ msgstr ""
+#~ "No hay una función '%s' slot exportada por el objeto destino '%s' "
+#~ "mientras se emitía la señal '%s' desde el objeto '%s': desconectando"
+
+#~ msgid "Invalid timer id"
+#~ msgstr "id de cronómetro no válido"
+
+#~ msgid "%cListing Qt Properties for widget object %s (%s)"
+#~ msgstr "%cEnumerando las Propiedades Qt para el objeto widget %s (%s)"
+
+#~ msgid "Properties class: %c%s%c"
+#~ msgstr "Propiedades de clase: %c%s%c"
+
+#~ msgid "Property: %c%s%c, type: %s"
+#~ msgstr "Propiedad: %c%s%c, tipo: %s"
+
+#~ msgid ", enum ("
+#~ msgstr ", enum ("
+
+#~ msgid ", set"
+#~ msgstr ", set"
+
+#~ msgid ", writeable"
+#~ msgstr ", writeable"
+
+#~ msgid "Oops... no such property: %s"
+#~ msgstr "Oops... no existe la propiedad: %s"
+
+#~ msgid "No such QT property (%s)"
+#~ msgstr "No existe la propiedad QT (%s)"
+
+#~ msgid "missing parameter"
+#~ msgstr "falta parámetro"
+
+#~ msgid "Invalid parameter (%s)"
+#~ msgstr "parámetro no válido (%s)"
+
+#~ msgid "Pixmap Object required"
+#~ msgstr "Necesita un objeto Pixmap"
+
+#~ msgid "Pixmap not found"
+#~ msgstr "Pixmap no encontrado"
+
+#~ msgid "Unsupported QT property (%s)"
+#~ msgstr "Propiedad QT no soportada (%s)"
+
+#~ msgid "Missing parameters"
+#~ msgstr "Faltan parámetros"
+
+#~ msgid "[Parser warning in '%Q']: %Q"
+#~ msgstr "[Aviso del parser en '%Q']: %Q"
+
+#~ msgid "Can't find the multimedia file %s"
+#~ msgstr "No pude encontrar el archivo multimedia %s"
+
+#~ msgid "Missing target, no action taken"
+#~ msgstr "Falta el destino, no se realizó ninguna acción"
+
+#~ msgid "Invalid timeout specified , using default"
+#~ msgstr ""
+#~ "Se especificó un valor de tiempo de expiración no válido, usando valor "
+#~ "por defecto"
+
+#~ msgid "Can't add a file offer for file %s (huh ? file not readable ?)"
+#~ msgstr "No puedo añadir una oferta de archivo para %s (archivo no legible?)"
+
+#~ msgid "Added %d secs file offer for file %s (%s) and receiver %s"
+#~ msgstr "Añadida la oferta de %d segs del archivo %s (%s) y receptor %s"
+
+#~ msgid "%s plays '%s'"
+#~ msgstr "%s reproduce '%s'"
+
+#~ msgid "%s plays '%s' to %s"
+#~ msgstr "%s reproduce '%s' para %s"
+
+#~ msgid "Error in command: %c%c%Q"
+#~ msgstr "Error en comando: %c%c%Q"
+
+#~ msgid "Error token: %c%Q"
+#~ msgstr "Error en palabra clave: %c%Q"
+
+#~ msgid "Parsing stopped at %cline %d , character %d"
+#~ msgstr "Análisis detenido en %clínea %d , carácter %d"
+
+#~ msgid " %s"
+#~ msgstr " %s"
+
+#~ msgid "Object scope: name (%s), class (%s)"
+#~ msgstr "Ámbito de objeto: nombre (%s), clase (%s)"
+
+#~ msgid "Object scope: deleted object"
+#~ msgstr "Ámbito de objeto: objeto borrado"
+
+#~ msgid "This pointer: name (%s), class (%s)"
+#~ msgstr "Éste puntero : nombre (%s), clase (%s)"
+
+#~ msgid "This pointer: deleted object"
+#~ msgstr "Puntero this: objeto borrado"
+
+#~ msgid "Internal call stack:"
+#~ msgstr "Pila de llamadas interna:"
+
+#~ msgid ""
+#~ " Current command stack depth: %d frames (stopping output at 25th frame)"
+#~ msgstr ""
+#~ "Profundidad de la pila de comandos actual: %d cuadros (deteniendo la "
+#~ "salida en el marco 25)"
+
+#~ msgid " Parent command stack depth: %d frames"
+#~ msgstr " Profundidad de la pila de comandos del padre: %d marcos"
+
+#~ msgid "Error triggered from raw event handler %c%s::%Q"
+#~ msgstr "Error lanzado desde el manejador de evento puro %c%s::%Q"
+
+#~ msgid "Error triggered from event handler %c%Q::%Q"
+#~ msgstr "Error lanzado desde el manejador de evento %c%Q::%Q"
+
+#~ msgid "Raw event handler %s::%Q is broken: disabling"
+#~ msgstr "El manejador de evento puro %s::%Q es erroneo: deshabilitando"
+
+#~ msgid "Event handler %Q::%Q is broken: disabling"
+#~ msgstr "El manejador de evento %Q::%Q es erroneo: deshabilitando"
+
+#~ msgid "Variable evaluated to \"%s\""
+#~ msgstr "Variable evaluada a \"%s\""
+
+#~ msgid ""
+#~ "Declaring global variables with an uppercase letter is deprecated. Global "
+#~ "variables should be declared with 'global'"
+#~ msgstr ""
+#~ "Declarar variables globales con una letra mayscula es obsoleto. Las "
+#~ "variables globales deberían ser declaradas con 'global'"
+
+#~ msgid "Window with caption %Q not found"
+#~ msgstr "Ventana con título %Q no encontrada"
+
+#~ msgid "='"
+#~ msgstr "='"
+
+#~ msgid "Ignoring NOTICE from %Q (%Q)"
+#~ msgstr "Ignorando NOTICE de %Q (%Q)"
+
+#~ msgid "Unknown channel mode"
+#~ msgstr "Modo de canal desconocido"
+
+#, fuzzy
+#~ msgid "Load Theme - KVIrc"
+#~ msgstr "Guardar Tema - KVIrc"
+
+#~ msgid " symbol exported: not a kvirc module ?"
+#~ msgstr " está exportado el símbolo: no es un módulo kvirc?"
+
+#, fuzzy
+#~ msgid "Version"
+#~ msgstr "Versión:"
+
+#, fuzzy
+#~ msgid "Themes"
+#~ msgstr "Tema"
+
+#~ msgid "<b>%Q</b>: +%Q (%u users)<hr>%Q"
+#~ msgstr "<b>%Q</b>: +%Q (%u usuarios)<hr>%Q"
+
+#~ msgid "What's this?"
+#~ msgstr "Qué es esto?"
+
+#~ msgid "WARNING : Can not load image library %s"
+#~ msgstr "ADVERTENCIA : No se pudo cargar la biblioteca de imágenes %s"
+
+#~ msgid "Select error: %s (errno=%d)"
+#~ msgstr "Error de select: %s (errno=%d)"
+
+#~ msgid "Connect error: %s (errno=%d)"
+#~ msgstr "Error de conexión: %s (errno=%d)"
+
+#~ msgid "Write error: %s (errno=%d)"
+#~ msgstr "Error de escritura: %s (errno=%d)"
+
+#~ msgid "Read error: %s (errno=%d)"
+#~ msgstr "Error de lectura: %s (errno=%d)"
diff --git a/po/kvirc/kvirc_fi.po b/po/kvirc/kvirc_fi.po
new file mode 100644
index 00000000..bf107a41
--- /dev/null
+++ b/po/kvirc/kvirc_fi.po
@@ -0,0 +1,11938 @@
+# translation of kvirc_fi.po to Finnish
+# translation of kvirc_fi.po to
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Santeri Piippo <[email protected]>, 2007.
+# Santeri Piippo <[email protected]>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: kvirc_fi\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-11-21 17:09+0100\n"
+"PO-Revision-Date: 2008-03-16 23:02+0200\n"
+"Last-Translator: Santeri Piippo <[email protected]>\n"
+"Language-Team: Finnish <[email protected]>\n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:690
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:696
+msgid "&Cascade Windows"
+msgstr "&Pinoa ikkunat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:697
+msgid "Cascade &Maximized"
+msgstr "Pinoa &suurennetut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:694
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:700
+msgid "&Tile Windows"
+msgstr "&Asettele ikkunat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:697
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:703
+msgid "&Auto Tile"
+msgstr "Au&tomaattisesti asettele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:702
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:708
+msgid "Anodine's Full Grid"
+msgstr "Anodinen Täysi Hila"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:704
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:710
+msgid "Pragma's Horizontal 4-Grid"
+msgstr "Pragman Vaakasuora 4-Hila"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:706
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:712
+msgid "Pragma's Vertical 4-Grid"
+msgstr "Pragman Pystysuora 4-Hila"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:708
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:714
+msgid "Pragma's Horizontal 6-Grid"
+msgstr "Pragman Vaakasuora 6-Hila"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:710
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:716
+msgid "Pragma's Vertical 6-Grid"
+msgstr "Pragman Pystysuora 6-Hila"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:712
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:718
+msgid "Pragma's Horizontal 9-Grid"
+msgstr "Pragman Vaakasuora 9-Hila"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:714
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:720
+msgid "Pragma's Vertical 9-Grid"
+msgstr "Pragman Pystysuora 9-Hila"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:720
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:726
+msgid "Tile Met&hod"
+msgstr "Asettelutapa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:723
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:729
+msgid "Expand &Vertically"
+msgstr "Laajenna &pystysuoraan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:724
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:730
+msgid "Expand &Horizontally"
+msgstr "Laajenna &vaakasuoraan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:727
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:733
+msgid "Mi&nimize All"
+msgstr "Pienennä kaikki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_actiondrawer.cpp:64
+msgid "Script"
+msgstr "Skripti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:581
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:634
+msgid "Unknown"
+msgstr "Tuntematon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:128
+msgid "No topic message has been received from the server yet"
+msgstr "Ei aihetta vastaanotettu vielä palvelimelta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:495
+msgid "Channel topic:"
+msgstr "Kanavan aihe:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:513
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:201
+msgid "Set by"
+msgstr "Asettaja:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:519
+msgid "Set on"
+msgstr "Asetettu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:525
+msgid "Double-click to edit..."
+msgstr "Kaksoisnapauta muokataksesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:530
+msgid "No topic is set"
+msgstr "Ei aihetta asetettu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:533
+msgid "Double-click to set..."
+msgstr "Kaksoisnapauta asettaaksesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:587
+msgid "History"
+msgstr "Historia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:596
+msgid "Commit Changes"
+msgstr "Ota muutokset käyttöön"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:602
+msgid "Discard Changes"
+msgstr "Peruuta muutokset"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:627
+msgid "Copy to clipboard"
+msgstr "Kopioi leikepöydälle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:981
+msgid "There are active connections, are you sure you wish to "
+msgstr "Aktiivisia yhteyksiä on olemassa, oletko varma että haluat "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:982
+msgid "quit KVIrc?"
+msgstr "sulkea KVIrcin?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:985
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:587
+msgid "Confirmation - KVIrc"
+msgstr "Varmistus - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:985
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:557
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:590
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:682
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&Yes"
+msgstr "&Kyllä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:985
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:556
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:589
+msgid "&Always"
+msgstr "&Aina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:985
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:591
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:682
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&No"
+msgstr "&Ei"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1075
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1091
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1090
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1106
+msgid "Show %1"
+msgstr "Näytä %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1134
+msgid "Customize..."
+msgstr "Hienosäädä..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:149
+#, c-format
+msgid "The file %s already exists.<br>Do you wish to overwrite it?"
+msgstr "Tiedosto %s on jo olemassa.<br>Oletko varma että haluat ylikirjoittaa sen?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:150
+msgid "File Exists - KVIrc"
+msgstr "Tiedosto on olemassa - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:132
+msgid "Channel mode"
+msgstr "Kanavamoodi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:162
+msgid "Split View"
+msgstr "Kaksoisnäkymä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:207
+msgid "User List"
+msgstr "Käyttäjälista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:167
+msgid "Ban Editor"
+msgstr "Bännimuokkaaja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:172
+msgid "Ban Exception Editor"
+msgstr "Bännipoikkeusmuokkaaja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:179
+msgid "Invite Exception Editor"
+msgstr "Kutsumuokkaaja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:184
+msgid "Mode Editor"
+msgstr "Moodimuokkaaja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "said something recently"
+msgstr "sanoi jotakin vähän aikaa sitten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "is talking"
+msgstr "puhuu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:684
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:699
+msgid "and"
+msgstr "ja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "were talking recently"
+msgstr "puhuivat vähän aikaa sitten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "are talking"
+msgstr "puhuvat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:707
+msgid "and other %1 users"
+msgstr "ja %1 muuta käyttäjää"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:738
+msgid "Dead channel"
+msgstr "Kuollut kanava"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:753
+msgid "operator"
+msgstr "operaattori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:754
+msgid "operators"
+msgstr "operaattoria"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active user"
+msgstr "aktiivinen käyttäjä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active users"
+msgstr "aktiivista käyttäjää"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot user"
+msgstr "kuuma käyttäjä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot users"
+msgstr "kuumaa käyttäjää"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owner"
+msgstr "kanavaomistaja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owners"
+msgstr "kanavaomistajaa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrator"
+msgstr "kanavan ylläpitäjä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrators"
+msgstr "kanavan ylläpitäjää"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operator"
+msgstr "puolioperaattori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operators"
+msgstr "puolioperaattoria"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced user"
+msgstr "puheoikeuksinen käyttäjä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced users"
+msgstr "puheoikeuksista käyttäjää"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operator"
+msgstr "käyttäjäoperaattori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operators"
+msgstr "käyttäjäoperaattoria"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "user total"
+msgstr "käyttäjä yhteensä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "users total"
+msgstr "käyttäjää yhteensä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:931
+msgid "No activity"
+msgstr "Ei aktiivisuutta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:932
+msgid "Minimal activity"
+msgstr "Minimaalista aktiivisuutta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:933
+msgid "Very low activity"
+msgstr "Hyvin matalaa aktiivisuutta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Might be low activity"
+msgstr "Saattaisi olla matalaa aktiivisuutta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Low activity"
+msgstr "Matalaa aktiivisuutta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Might be medium activity"
+msgstr "Saattaisi olla keskitason aktiivisuutta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Medium activity"
+msgstr "Keskitason aktiivisuutta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "Might be high activity"
+msgstr "Saattaisi olla korkeaa aktiivisuutta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "High activity"
+msgstr "Korkeaa aktiivisuutta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Might be very high activity"
+msgstr "Saattaisi olla hyvin korkeaa aktiivisuutta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Very high activity"
+msgstr "Hyvin korkeaa aktiivisuutta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Might be flooded with messages"
+msgstr "Saattaisi olla tulvitettu viesteillä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Flooded with messages"
+msgstr "Tulvitettu viesteillä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:946
+msgid "human"
+msgstr "ihmisen aiheuttamaa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:966
+msgid "[Dead channel]"
+msgstr "[Kuollut kanava]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1020
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1122
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:459
+msgid " on "
+msgstr " palvelimella "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1086
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %Q, no "
+"data sent to the server"
+msgstr ""
+"Kryptokoneisto ei voinut salata nykyistä viestiä (%Q): %Q, joten ei dataa "
+"lähetetty palvelimelle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1403
+msgid "Sent part request, waiting for reply..."
+msgstr "Lähetettiin poistumispyyntö, odotetaan vastausta..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:609
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:293
+msgid "(Unknown)"
+msgstr "(Tuntematon)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1484
+msgid "<b>Channel mode:</b>"
+msgstr "<b>Kanavamoodi:</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1498
+#, c-format
+msgid "<br><b>Key:</b> %s"
+msgstr "<br><b>Avain:</b> %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1505
+#, c-format
+msgid "<br><b>Limit:</b> %s"
+msgstr "<br><b>Käyttäjäraja:</b> %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1590
+#, c-format
+msgid "Channel synchronized in %d.%d seconds"
+msgstr "Kanava synkronoitu %d.%d ssä sekunnissa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:139
+msgid "Choose an Image File - KVIrc"
+msgstr "Valitse kuvatiedosto - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:284
+#, c-format
+msgid "Unloadable: %s"
+msgstr "Ei ladattava: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:236
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:264
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:260
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:90
+msgid "&Browse..."
+msgstr "&Selaa..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:364
+msgid "Choose a File - KVIrc"
+msgstr "Valitse tiedosto - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:382
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:593
+msgid "Choose a Directory - KVIrc"
+msgstr "Valitse kansio - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:764
+msgid "A&dd"
+msgstr "&Lisää"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:407
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:766
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:230
+msgid "Re&move"
+msgstr "&Poista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:602
+msgid "Sample Text"
+msgstr "Esimerkkiteksti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:635
+msgid "Foreground"
+msgstr "Tekstin väri"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:639
+msgid "Transparent"
+msgstr "Läpinäkyvä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:652
+msgid "Background"
+msgstr "Tausta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:715
+msgid "Play"
+msgstr "Soita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:748
+msgid "Channel name"
+msgstr "Kanavan nimi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:749
+msgid "Channel password"
+msgstr "Kanavan salasana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:177
+msgid "Toolbars"
+msgstr "Työkalurivit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:84
+msgid "Orientation"
+msgstr "Sijoitus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:86
+msgid "Top"
+msgstr "Ylä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:87
+msgid "Left"
+msgstr "Vasen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:88
+msgid "Right"
+msgstr "Oikea"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:89
+msgid "Bottom"
+msgstr "Ala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:91
+msgid "Detached"
+msgstr "Irroitettu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:92
+msgid "Flat"
+msgstr "Litteä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:94
+msgid "Icon Size"
+msgstr "Kuvakekoko"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:96
+msgid "Small (22x22)"
+msgstr "Pieni (22x22)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:97
+msgid "Large (32x32)"
+msgstr "Iso (32x32)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1333
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:463
+msgid "&Apply"
+msgstr "&Ota käyttöön"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:830
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:113
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:251
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:319
+msgid "Close"
+msgstr "Sulje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:102
+msgid "Channel Modes"
+msgstr "Kanavamoodit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_debugwindow.cpp:47
+msgid "Debug Messages"
+msgstr "Debuggaa viestit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:72
+msgid "CTCP Page - KVIrc"
+msgstr "CTCP Page - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:109
+msgid "You have been paged by"
+msgstr "Sinut pagesi käyttäjä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:75
+msgid "Mask editor - KVirc"
+msgstr "Maskieditori - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:79
+msgid "New mask must match an *!*@* expression"
+msgstr "Uusi maski täytyy olla muotoa *!*@*"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4017
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Ok"
+msgstr "Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:488
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:442
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:401
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1389
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1415
+msgid "Cancel"
+msgstr "Peruuta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:157
+msgid "Active Bans"
+msgstr "Nykyiset bännit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:161
+msgid "Active Invite Exceptions"
+msgstr "Nykyiset kutsut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:165
+msgid "Active Ban Exceptions"
+msgstr "Nykyiset bännipoikkeukset"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:184
+msgid "Filter:"
+msgstr "Suodatin:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:188
+msgid "Use doubleclick to edit item"
+msgstr "Kaksoisnapauta muokataksesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:200
+msgid "Mask"
+msgstr "Maski"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:202
+msgid "Set at"
+msgstr "Asetettu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:453
+msgid "Add"
+msgstr "Lisää"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:92
+msgid "Cryptography/text transformation"
+msgstr "Kryptografia/tekstin muunnos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:99
+msgid "Use the crypt engine"
+msgstr "Käytä salauskoneistoa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:120
+msgid "Enable encryption"
+msgstr "Ota salaus käyttöön"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:123
+msgid "Encrypt key:"
+msgstr "Salausavain:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:141
+msgid "Hex"
+msgstr "Hex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:132
+msgid "Enable decryption"
+msgstr "Ota salauksen purku käyttöön"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:135
+msgid "Decrypt key:"
+msgstr "Purkuavain"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_htmldialog.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:175
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:932
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1119
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:211
+msgid ""
+"If you dont want to encrypt a particular text line then just start it with "
+"the CTRL+P prefix"
+msgstr "Jos et halua salata tiettyä riviä, aloita se CTRL+P -etuliitteellä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:263
+msgid "Sorry, no crypt engines available"
+msgstr "Anteeksi, ei salauskoneistoa saatavilla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:283
+msgid "Crypt: Can't create an engine instance: crypting disabled"
+msgstr "Salaus: Ei voitu luoda koneiston instanssia: salaus pois päältä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:294
+#, c-format
+msgid "Crypt: Can't initialize the engine :%s"
+msgstr "Salaus: Ei voitu aloittaa koneistoa: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:302
+msgid "Crypt: You have to enable encryption and/or decryption for the engine to work"
+msgstr "Salaus: Sinun täytyy ottaa salaus ja/tai purku käyttöön jotta salaus toimisi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:386
+msgid "Search tools"
+msgstr "Etsintätyökalut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:544
+#, c-format
+msgid "### Log session terminated at %s ###"
+msgstr "### Loki päätetty %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:718
+#, c-format
+msgid "### Log session started at %s ###"
+msgstr "### Loki aloitettu %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:722
+msgid "### Existing data buffer:"
+msgstr "### Olemassaoleva data:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:726
+msgid "### End of existing data buffer."
+msgstr "### Loppu olemassaolevasta datasta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3967
+msgid "Hide Find Window"
+msgstr "Piilota etsintäikkuna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3969
+msgid "Show Find Window"
+msgstr "Näytä etsintäikkuna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3971
+msgid "Zoom In"
+msgstr "Zoomaa sisään"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3972
+msgid "Zoom Out"
+msgstr "Zoomaa ulos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3973
+msgid "Choose Temporary Font..."
+msgstr "Valitse väliaikainen kirjaisin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3974
+msgid "Choose Temporary Background..."
+msgstr "Valitse väliaikainen tausta..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3975
+msgid "Reset Temporary Background"
+msgstr "Palauta tausta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3978
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1580
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1687
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1904
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1995
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:2164
+msgid "Clear Buffer"
+msgstr "Tyhjennä ikkuna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4012
+msgid "Choose the background image..."
+msgstr "Valitse taustakuva..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4017
+msgid "Invalid image"
+msgstr "Kelvoton kuva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4017
+msgid "Failed to load the selected image"
+msgstr "Ei voitu ladata valittua kuvaa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4172
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4233
+#, c-format
+msgid "Pos %d"
+msgstr "Kohta %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4253
+msgid "Not found"
+msgstr "Ei löytynyt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4656
+msgid "Looking up host %Q..."
+msgstr "Selvitetään isäntä %Q..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5049
+msgid "Double-click to open this link"
+msgstr "Kaksoisnapauta avataksesi tämän linkin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5069
+msgid "Unable to look it up hostname: Hostname appears to be masked"
+msgstr "Ei voida selvittää isäntää: Isäntä näyttää olevan naamioitu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5070
+msgid "Unable to look it up hostname: Unknown host"
+msgstr "Ei voida selvittää isäntää: Tuntematon isäntä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5072
+msgid "Double-click to look up this hostname<br>Right-click to view other options"
+msgstr "Kaksoisnapauta selvittääksesi tämän isännän<br>Oikea napautus näyttää muut valinnat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5095
+msgid "Server appears to be a network hub<br>"
+msgstr "Palvelin näyttää olevan verkon runko<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5096
+msgid "Unknown server<br>"
+msgstr "Tuntematon palvelin<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5099
+msgid "Double-click to read the MOTD<br>Right-click to view other options"
+msgstr "Kaksoisnapauta lukeaksesi MOTD:n<br>Oike napautus näyttää muut valinnat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5112
+msgid "Double-click to set<br>"
+msgstr "Kaksoisnapauta asettaaksesi<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5134
+msgid "You're not an operator: You may not change channel modes"
+msgstr "Et ole operaattori: Et voi muuttaa kanavamoodeja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5151
+msgid "Nothing known about %Q"
+msgstr "Ei tietoja palvelimesta %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5152
+msgid "Nothing known about %Q (no connection)"
+msgstr "Ei tietoja palvelimesta %Q (ei yhteyttä)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5177
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>): "
+"<br><nowrap>+%Q (%u users)<hr>%Q</nowrap>"
+msgstr ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>): "
+"<br><nowrap>+%Q (%u käyttäjää)<hr>%Q</nowrap>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5183
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)<hr>Double-"
+"click to join %Q<br>Right click to view other options"
+msgstr ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)<hr>Kaksois"
+"napauta liittyäksesi kanavalle %Q<br>Oikea napautus näyttää muut valinnat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5203
+msgid "<b>Double-click:</b><br>%Q"
+msgstr "<b>Kaksoisnapauta:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5208
+msgid "<b>Middle-click:</b><br>%Q"
+msgstr "<b>Keski-napauta:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5213
+msgid "<b>Right-click:</b><br>%Q"
+msgstr "<b>Oikea-napauta:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1284
+msgid "Joined on <b>%1</b>"
+msgstr "Liittyi kanavalle <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1296
+msgid "Quiet for <b>%1h %2m %3s</b>"
+msgstr "On ollut hiljainen <b>%1h %2m %3s</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1097
+msgid "No connection"
+msgstr "Ei yhteyttä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:304
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:722
+msgid "IRC Context"
+msgstr "IRC -konteksti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:319
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:365
+#, c-format
+msgid "Lag: %d.%d%d"
+msgstr "Viive: %d.%d%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:393
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:379
+msgid "Lag: ?.??"
+msgstr "Viive: ?.??"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:326
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:637
+msgid "No IRC context"
+msgstr "Ei IRC -kontekstia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:633
+msgid "Not connected"
+msgstr "Ei yhdistetty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:377
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1117
+msgid "away"
+msgstr "poissa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:397
+msgid "In progress..."
+msgstr "Edistymässä..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:458
+msgid "Crypting"
+msgstr "Salataan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:466
+msgid "Private Text Encoding"
+msgstr "Yksityistesktienkoodi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:566
+msgid "Ops...I've accidentally lost the crypting engine..."
+msgstr "Hups... Minä juuri vahingossa hukkasin salauskoneiston..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:582
+msgid "List of window types available in this release of KVIrc:"
+msgstr "Ikkunatyypit tässä KVIrcin versiossa saatavilla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:763
+msgid "Use Default Encoding"
+msgstr "Käytä oletusenkoodia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:775
+msgid "Standard"
+msgstr "Standardi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:776
+msgid "Smart (Send Local)"
+msgstr "Fiksu (Lähetä lokaali)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:777
+msgid "Smart (Send UTF-8)"
+msgstr "Fiksu (Lähetä UTF-8)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:810
+msgid "&Undock"
+msgstr "&Irrota"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:813
+msgid "&Dock"
+msgstr "&Telakoi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:818
+msgid "Mi&nimize"
+msgstr "&Pienennä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:821
+msgid "Ma&ximize"
+msgstr "&Suurenna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:824
+msgid "&Restore"
+msgstr "P&alauta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:837
+msgid "Text &Encoding"
+msgstr "Teksti&enkoodi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:842
+msgid "Sa&ve Window Properties"
+msgstr "&Tallenna ikkunan asetukset"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:77
+msgid "Taskbar"
+msgstr "Ikkunapalkki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1092
+msgid "Sort"
+msgstr "Lajittele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1093
+msgid "Reverse Sort"
+msgstr "Lajittele käänteisesti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1153
+msgid "Window List"
+msgstr "Ikkunalista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:203
+msgid "Apply to all IRC Contexts"
+msgstr "Ota käyttöön kaikilla IRC konteksteilla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:227
+msgid "Away Indicator"
+msgstr "Poissaoloilmaisin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:255
+msgid "Away since"
+msgstr "Poissa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:259
+msgid "Double click to leave away mode"
+msgstr "Kaksoisnapauta poistuaksesi poissaolomoodista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:261
+msgid "Not away"
+msgstr "Et ole pois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:263
+msgid "Double click to enter away mode"
+msgstr "Kaksoisnapauta ottaaksesi poissaolomoodin käyttöön"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:330
+#, c-format
+msgid "Last checked %d mins %d secs ago"
+msgstr "Viimeksi tarkistettiin %d minuuttia, %d sekuntia sitten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:332
+msgid "Lag measure not available yet"
+msgstr "Viivemittaus ei vielä saatavilla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:336
+msgid "Lag meter engine disabled"
+msgstr "Viivemittaajakoneisto on otettu pois päältä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:338
+msgid "Double click to enable it"
+msgstr "Kaksoisnapauta ottaaksesi sen käyttöön"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:391
+msgid "Lag Indicator"
+msgstr "Viiveilmaisin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:461
+msgid "Simple Clock"
+msgstr "Yksinkertainen kello"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:512
+msgid "Show total connection time"
+msgstr "Näytä yhteysaika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:536
+msgid "Connection Timer"
+msgstr "Yhteysaikailmaisin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:560
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:516
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:87
+msgid "Separator"
+msgstr "Väliviiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:820
+msgid "Clipboard"
+msgstr "Leikepöytä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line break"
+msgstr "rivinvaihdos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line breaks"
+msgstr "rivinvaidosta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:845
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:439
+msgid "Cu&t"
+msgstr "&Leikkaa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:847
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:445
+msgid "&Copy"
+msgstr "&Kopioi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:849
+msgid "&Paste"
+msgstr "L&iitä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:851
+msgid "Paste (Slowly)"
+msgstr "Liitä (Hitaasti)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:856
+msgid "Paste &File"
+msgstr "Liitä &tiedosto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:863
+msgid "Stop Paste"
+msgstr "Pysäytä liittäminen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:865
+msgid "Clear"
+msgstr "Tyhjää"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:868
+msgid "Select All"
+msgstr "Valitse kaikki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:897
+msgid "Insert Icon"
+msgstr "Liitä kuvake"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1915
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1926
+msgid "%d matches: %Q"
+msgstr "%d osumaa: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1919
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1930
+msgid "No matches"
+msgstr "Ei osumia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2641
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2657
+msgid "Show History<br>&lt;Ctrl+PageUp&gt;"
+msgstr "Näytä historia<br>&lt;Ctrl+PageUp&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2351
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2632
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2648
+msgid "Input History Disabled"
+msgstr "Syöttöhistoria on otettu pois päältä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2359
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2370
+msgid "Show Icons Popup<br>&lt;Ctrl+I&gt;<br>See also /help texticons"
+msgstr "Näytä kuvakkeet<br>&lt;Ctrl+I&gt;<br>Katso myös /help texticons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2371
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2382
+msgid "User friendly commandline mode<br>See also /help commandline"
+msgstr "Käyttäjä-ystävällinen komentorivi<br>Katso myös /help commandline"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2394
+msgid "Multi-line Editor<br>&lt;Alt+Backspace&gt;"
+msgstr "Multirivieditori<br>&lt;Alt+Backspace&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2485
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2498
+msgid "Confirm Multiline Message"
+msgstr "Varmista multirivi-viesti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2486
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2499
+msgid ""
+"You're about to send a message with %1 lines of text.<br><br>There is "
+"nothing wrong with it, this warning is<br>here to prevent you from "
+"accidentally sending<br>a really large message just because you didn't edit "
+"it<br>properly after pasting text from the clipboard.<br><br>Do you want the "
+"message to be sent?"
+msgstr ""
+"Olet aikeissa lähettää viestin, joka sisältää %1 riviä tekstiä.<br><br>"
+"Ei ole mitään väärin siinä, tämä varoitus on vain estää<br>sinua vahingossa "
+"lähettämästä tosi ison viestin vain<br>koska et muokannut sitä kunnolla "
+"kun sen<br>liitit leikepöydältä.<br><br>Haluatko lähettää viestin?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2505
+msgid "Yes, always"
+msgstr "Kyllä, aina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2493
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:736
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2506
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:399
+msgid "Yes"
+msgstr "Kyllä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:736
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:806
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:375
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:400
+msgid "No"
+msgstr "Ei"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2543
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2556
+msgid "<Ctrl+Return>; submits, <Alt+Backspace>; hides this editor"
+msgstr "<Ctrl+Enter>; lähettää, <Ctrl+Backspace>; piilottaa tämän editorin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:126
+msgid "Address:"
+msgstr "Osoite:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:140
+msgid "Current IRC URI"
+msgstr "Nykyinen IRC -osoite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:156
+msgid "Notify List"
+msgstr "Huomautuslista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:263
+msgid "Part All Channels"
+msgstr "Poistu kaikista kanavista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:265
+msgid "Close All Queries"
+msgstr "Sulje kaikki kyselyt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:270
+msgid "Unhighlight All Windows"
+msgstr "Epäkorosta kaikki ikkunat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:273
+msgid "Unhighlight All Channels"
+msgstr "Epäkorosta kaikki kanavat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:275
+msgid "Unhighlight All Queries"
+msgstr "Epäkorosta kaikki kyselyt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:387
+msgid "Gender:"
+msgstr "Sukupuoli:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:394
+msgid "Male"
+msgstr "Mies"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:393
+msgid "Female"
+msgstr "Nainen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:375
+msgid "Registered as"
+msgstr "Rekisteröity nimimerkillä "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:381
+msgid "(Matched by"
+msgstr "(täsmää"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:393
+msgid "On <b>"
+msgstr "Kanavilla <b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:402
+msgid "Using server <b>%1</b>"
+msgstr "Käyttää palvelinta <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:407
+msgid "%1 hops"
+msgstr "%1 palvelimen päässä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:417
+msgid "Probably Away"
+msgstr "Luultavasti poissa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:493
+msgid ""
+"KVIrc can accept only irc://, irc6://, ircs:// or irc6s:// URL's\n"
+"Your URL is invalid. Check spelling and try again"
+msgstr ""
+"KVIrc voi vain hyväksyä irc://, irc6://, ircs:// tai irc6s:// URL -ja\n"
+"Sinun URL ei sovi, tarkista URL ja yritä uudelleen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:554
+msgid ""
+"You have just attempted to close a console window with an active connection "
+"inside.\n"
+"Are you sure you wish to terminate the connection?"
+msgstr ""
+"Olet sulkemassa konsoli-ikkunaa jossa on aktiivinen yhteys.\n"
+"Haluatko varmasti sulkea yhteyden?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:588
+msgid ""
+"You have just attempted to close the last console window.\n"
+"Are you sure you wish to quit KVIrc?"
+msgstr ""
+"Olet sulkemassa viimeistä konsoli-ikkunaa.\n"
+"Haluatko varmasti sulkea KVIrcin?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1019
+msgid "Failed to load avatar with name \"%Q\" and local path \"%Q\""
+msgstr "Ei pystytty lataamaan avataria nimellä \"%Q\" ja paikallispolulla \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:624
+msgid "Connection in progress..."
+msgstr "Yhdistetään..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1099
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:630
+msgid "Login in progress..."
+msgstr "Kirjaudutaan sisään..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1179
+msgid "channel"
+msgstr "kanava"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1180
+msgid "channels"
+msgstr "kanavaa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1181
+msgid "query"
+msgstr "kysely"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1182
+msgid "queries"
+msgstr "kyselyä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1238
+msgid "Connected since"
+msgstr "Yhteys aloitettiin "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1252
+msgid "Online for"
+msgstr "On ollut yhdistettynä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1264
+msgid "Server idle for"
+msgstr "Palvelin on idlannut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:50
+msgid "This option is also available as"
+msgstr "Tämä valinta on myös saatavilla komentona"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:683
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:275
+msgid "Advanced..."
+msgstr "Lisäkonfiguraatio..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:69
+msgid "Scri&pting"
+msgstr "&Skriptaus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:74
+msgid "&Tools"
+msgstr "&Työkalut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:81
+msgid "&Settings"
+msgstr "&Asetukset"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:83
+msgid "&Window"
+msgstr "&Ikkuna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:122
+msgid "&Help"
+msgstr "A&pua"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:119
+msgid "&Help Browser (Panel)"
+msgstr "&Apuselain (Paneeli)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:121
+msgid "Help Browser (&Window)"
+msgstr "Apuselain (&Ikkuna)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:124
+msgid "&Tip of the Day"
+msgstr "&Päivän vihje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:127
+msgid "About &KVIrc"
+msgstr "Tietoja &KVIrcistä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:130
+msgid "KVIrc Home&page"
+msgstr "KVIrcin ko&tisivut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:134
+msgid "KVIrc Russian Home&page"
+msgstr "KVIrcin &venäjänkieliset kotisivut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:139
+msgid "KVIrc French Home&page"
+msgstr "KVIrcin &ranskankieliset kotisivut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:143
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:339
+msgid "Subscribe to the Mailing List"
+msgstr "Tilaa postituslistat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:145
+msgid "Report a Bug / Propose enhancements"
+msgstr "Raportoi virheestä / Ehdota parannusta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:148
+msgid "Join KVIrc International Channel on Freenode"
+msgstr "Liity KVIrcin kansainväliselle kanavalle Freenode-verkossa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:150
+msgid "Join KVIrc International Channel on IRCNet"
+msgstr "Liity KVIrcin kansainväliselle kanavalle IRCNet-verkossa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:155
+msgid "Join KVIrc Italian Channel on AzzurraNet"
+msgstr "Liity KVIrcin italiankieliselle kanavalle AzzurraNet-verkossa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:161
+msgid "Join KVIrc French Channel on Freenode"
+msgstr "Liity KVIrcin ranskankieliselle kanavalle Freenode-verkossa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:164
+msgid "Join KVIrc French Channel on EuropNet"
+msgstr "Liity KVIrcin ranskankieliselle kanavalle EuropNet-verkossa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:179
+msgid "Show StatusBar"
+msgstr "Näytä statuspalkki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:194
+msgid "&Save Configuration"
+msgstr "&Tallenna konfiguraatio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:213
+msgid "Restore &Default Script"
+msgstr "Palauta &oletusskripti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:624
+msgid "Disconnect"
+msgstr "Katkaise yhteys"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:228
+msgid "New &Connection To"
+msgstr "Uusi &yhteys palvelimeen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:234
+msgid "Hide &Dock Icon"
+msgstr "Piilota telakiontikuvake"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:237
+msgid "Show &Dock Icon"
+msgstr "Näytä telakointikuvake"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:111
+msgid "&Quit"
+msgstr "&Lopeta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:265
+msgid "&Other..."
+msgstr "&Muu..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:305
+msgid "Show &Icon Table"
+msgstr "Näytä &kuvaketaulukko"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:308
+msgid "Open &Terminal"
+msgstr "Avaa &terminaali"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:308
+msgid ""
+"<b>Shift+Drag</b> or <b>Ctrl+Drag</b> to move the applet around<br><b>Right "
+"click</b> to see the other options"
+msgstr ""
+"<b>Shift+Vedä</b> tai <b>Ctrl+Vedä</b> siirtääksesi applettia ympäriinsä<br><b>"
+"Oikea painallus näyttää muut valinnat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:313
+msgid "<b>Right click</b> to add/remove applets"
+msgstr "<b>Paina oikeaa nappia</b> lisääksesi/poistaaksesi appletteja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:353
+msgid "Remove %Q"
+msgstr "Poista %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:365
+msgid "Add Applet"
+msgstr "Lisää appletti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:404
+msgid ""
+"Drag the applet while holding the Shift or Ctrl key to move it to the "
+"desired position"
+msgstr "Vedä appletti Shift- tai Ctrl-näppäin pohjassa, ja siirrä se halutulle paikalleen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:93
+msgid "<b><font color=\"#EAEAEA\" size=\"-1\">Find Text</font></b>"
+msgstr "<b><font color=\"#EAEAEA\" size=\"-1\">Etsi tekstiä</font></b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:118
+msgid "&Regular expression"
+msgstr "&Säännöllinen lauseke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:121
+msgid "E&xtended regexp."
+msgstr "&Pidennetty lauseke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:126
+msgid "C&ase sensitive"
+msgstr "&Riippuu kirjainkoosta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:129
+msgid "Find &Prev."
+msgstr "Etsi &edell."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:133
+msgid "&Find Next"
+msgstr "Etsi &seur."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:880
+msgid "Find"
+msgstr "Etsi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:214
+msgid "Type"
+msgstr "Tyyppi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:166
+msgid "Set &All"
+msgstr "Aseta &kaikki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:170
+msgid "Set &None"
+msgstr "&Älä aseta mitään"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:174
+msgid "&Load From..."
+msgstr "&Lataa tiedostosta..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:178
+msgid "&Save As..."
+msgstr "&Tallenna nimellä..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:182
+msgid "Filter"
+msgstr "Suodatin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:234
+msgid "Select a Filter File"
+msgstr "Valitse suodatintiedosto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:251
+#, c-format
+msgid "Can't open the filter file %s for reading."
+msgstr "Ei voida avata suodatintiedostoa %s lukemista varten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:261
+msgid "Select a Name for the Filter File"
+msgstr "Valitse nimi suodatintiedostolle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:272
+msgid "Failed to write the filter file %Q (IO Error)"
+msgstr "Ei voida kirjoittaa suodatintiedostoon %Q (I/O virhe)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:274
+msgid "Can't open the filter file %Q for writing"
+msgstr "Ei voida avata suodatintiedostoa %Q kirjoittamista varten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:109
+msgid "Choose image ..."
+msgstr "Valitse kuva..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:122
+msgid "Builtin images"
+msgstr "Sisäänrakennetut kuvat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:131
+msgid "Small icons"
+msgstr "Pienet kuvakkeet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:138
+msgid "Full path"
+msgstr "Täysi polku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:241
+msgid "Builtin $icon(%Q) [index %d]"
+msgstr "Sisäänrakennettu $icon(%Q) [indeksi %d]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:274
+msgid "directory"
+msgstr "hakemisto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:300
+msgid "pixels"
+msgstr "kuvapistettä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:305
+msgid "bytes"
+msgstr "tavua"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:98
+msgid "Show User List"
+msgstr "Näytä käyttäjälista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:105
+msgid "Query Targets"
+msgstr "Kysele kohteilta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:165
+msgid "Query target:"
+msgstr "Kysele kohteelta:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:170
+msgid "%1 is %2 (%3)"
+msgstr "%1 on %2 (%3)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:172
+msgid "%1 is %2"
+msgstr "%1 on %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:186
+msgid "%1 is using irc server: %2 (%3 hops)"
+msgstr "%1 käyttää palvelinta %2 (%3 palvelimen päässä)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:188
+msgid "%1 is using irc server: %2"
+msgstr "%1 käyttää palvelinta %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:195
+msgid "%1 is probably away"
+msgstr "%1 on luultavasti poissa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:200
+msgid "Common channels with %1: %2"
+msgstr "Yhteiset kanavat käyttäjän %1 kanssa: %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:254
+msgid "[Dead Query]"
+msgstr "[Kuollut kysely]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:240
+msgid "Query with %1!%2 (%3)"
+msgstr "Kysely käyttäjän %1!%2 (%3) kanssa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:242
+msgid "Query with %1!%2"
+msgstr "Kysely käyttäjän %1!%2 kanssa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:244
+msgid ", using server %1"
+msgstr ", käyttää palvelinta %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:246
+msgid " (%1 hops)"
+msgstr " (%1 palvelimen päässä)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:248
+msgid ", probably away"
+msgstr ", luultavasti pois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:252
+msgid "Common channels: %2"
+msgstr "Yhteiset kanavat: %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:320
+msgid ""
+"The target of this query has changed from \r!n\r%Q\r [%Q@\r!h\r%Q\r] to \r!n"
+"\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr ""
+"Tämän kyselyn kohde on vaihtunut käyttäjästä \r!n\r%Q\r [%Q@\r!h\r%Q\r] käyttäjään \r!n"
+"\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:389
+msgid "Common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Yhteiset kanavat käyttäjän \r!n\r%Q\r [%Q@\r!h\r%Q\r] kanssa: %Q "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:392
+msgid "No common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "Ei yhteisiä kanavia käyttäjän %Q\r [%Q@\r!h\r%Q\r] kanssa."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:428
+msgid "[Dead query]"
+msgstr "[Kuollut kysely]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:578
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:645
+msgid "This query has no active targets, no message sent"
+msgstr "Tällä kyselyllä ei ole aktiivisia kohteita, ei viestiä lähetetty."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:617
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %s, no "
+"data sent to the server"
+msgstr "Salauskoneisto ei voinut salata nykyistä viestiä (%Q): %s, viestiä ei lähetetty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashcount.cpp:74
+msgid ""
+"The argument of the hash count '#' operator didn't evaluate to a hash: "
+"automatic conversion from type '%Q' supplied"
+msgstr "Listan alkionlaskentaoperaattorin '#' argumentti ei evaluoitunut listaksi: automaattinen muunnos tyypistä '%Q' viety"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:100
+msgid "DNS Lookup result for query \"%Q\""
+msgstr "DNS-kyselyn tulos kohteelle \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:105
+msgid "Error: %Q"
+msgstr "Virhe: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:110
+msgid "Hostname %d: %Q"
+msgstr "Isäntä %d: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:116
+msgid "IP address %d: %Q"
+msgstr "IP-osoite %d: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:848
+msgid ""
+"Broken slot '%Q' in target object '%Q::%Q' while emitting signal '%Q' from "
+"object '%Q::%Q': disconnecting"
+msgstr "Rikkinäinen paikka '%Q' kohdeoliossa '%Q::%Q' kun lähetetään signaalia oliosta '%Q::%Q': yhteys katkaistaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:866
+msgid "Slot target object destroyed while emitting signal '%Q' from object '%Q::%Q'"
+msgstr "Paikan kohdeolio tuhottu kun lähetetään signaalia oliosta '%Q::%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1018
+msgid "Listing Qt properties for object named \"%Q\" of KVS class %Q"
+msgstr "Listataan Qt-ominaisuudet oliolle nimeltä \"%Q\" KVS-luokasta %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1024
+#, c-format
+msgid "Properties for Qt class %s"
+msgstr "Ominaisuudet Qt-luokalle %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1049
+msgid "Property: %c%Q%c, type %Q"
+msgstr "Ominaisuus: %c%Q%c, tyyppi %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1109
+#, c-format
+msgid "%d properties listed"
+msgstr "%d ominaisuutta listattu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1358
+msgid "The object named \"%Q\" of class %Q has no Qt properties"
+msgstr "Oliolla\"%Q\" luokasta %Q ei ole Qt-ominaisuuksia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1374
+msgid "No Qt property named \"%Q\" for object named \"%Q\" of class %Q"
+msgstr "Ei ole Qt-ominaisuutta \"%Q\" oliolle nimeltä \"%Q\" luokasta %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1151
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1387
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed but it doesn't really exist"
+msgstr "Ei löydetä ominaisuutta \"%Q\" oliolle nimeltä \"%Q\" luokasta %Q: ominaisuus on indeksoitu mutta se ei oikein ole olemassa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1395
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed and defined but the returned variant is not valid"
+msgstr "Ei löydetä ominaisuutta \"%Q\" oliolle nimeltä \"%Q\" luokasta %Q: ominaisuus on indeksoitu ja määritelty mutta palautettu variantti ei ole kelpoinen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1178
+#, c-format
+msgid ""
+"The property is of type %s but the supplied argument can't be converted to "
+"that type (expecting \"%s\")"
+msgstr "Ominaisuus on tyyppiä %s mutta tuotua argumenttiä ei voida muuntaa siihen tyyppiin (odotettaan \"%s\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1309
+msgid ""
+"A pixmap object, an image_id or an image file path is required for this "
+"property"
+msgstr "Kuvapisteolio, kuvatunniste tai kuvapolku vaaditaan tälle ominaisuudelle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1330
+msgid "Can't find the requested image"
+msgstr "Ei löydetä pyydettyä kuvaa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1336
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1490
+msgid ""
+"Property \"%Q\" for object named \"%Q\" of class %Q has an unsupported data "
+"type"
+msgstr "Ominaisuudella \"%Q\" oliosta nimeltä \"%Q\" luokasta %Q on ei-tuettu datatyyppi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1637
+msgid "Cannot find object function $%Q for object named \"%Q\" of class %Q"
+msgstr "Ei löydetä oliofunktiota $%Q oliosta nimeltä \"%Q\" luokasta %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1639
+msgid "Cannot find object function $%Q::%Q for object named \"%Q\" of class %Q"
+msgstr "Ei löydetä oliofunktiota $%Q::%Q oliosta \"%Q\" luokasta %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1647
+msgid ""
+"Cannot call internal object function $%Q (for object named \"%Q\" of class %"
+"Q) from this context"
+msgstr "Ei voida kutsua sisäistä oliofunktiota $%Q (oliolle nimeltä \"%Q\" luokasta % Q) tästä kontekstista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:69
+msgid "Stray dot ('.') character or invalid following module command name"
+msgstr "Irrallinen piste-operaattori ('.') -merkki tai viallinen moduulikomento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:70
+msgid "Syntax error: malformed module command identifier"
+msgstr "Syntaksivirhe: väärinmuotoiltu moduulikomento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:188
+msgid "Stray '::' sequence or invalid following alias name"
+msgstr "Irrallinen '::'-sekvenssi tai ei-sopiva aliasnimi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:95
+msgid "Syntax error: malformed alias identifier"
+msgstr "Syntaksivirhe: väärinmuotoiltu aliaskutsu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:102
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:196
+msgid "Stray ':' character: did you mean '...<namespace>::<alias_name>' ?"
+msgstr "Irrallinen ':' -merkki: tarkoititko '...<sisällyttäjä>::<aliasnimi>' ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:103
+msgid "Syntax error: malformed (alias?) command identifier"
+msgstr "Syntaksivirhe: väärinmuotoiltu (alias?) komentokutsu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:280
+msgid "Unknown callback command \"%Q\""
+msgstr "Tuntematon taustakutsukomento \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:463
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:44
+msgid "The current window is not a channel"
+msgstr "Nykyinen ikkuna ei ole kanava"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:531
+msgid ""
+"Timer name omitted but there is not current timer (this is not a timer "
+"callback)"
+msgstr "Ajastimen nimi on jätetty pois mutta nykyista ajastinta ei ole (tämä ei ole ajastimen takaisinkutsu)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:537
+msgid "Can't kill the timer '%Q' since it is not running"
+msgstr "Ei voida pysäyttää ajastinta '%Q' koska se ei ole käynnissä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:849
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:872
+msgid "Found character '%q' (unicode %x) where a slash '/' was expected"
+msgstr "Löydettiin merkki %q (unikoodi %x) missä kauttaviivan '/' oletettiin olevan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:842
+msgid ""
+"Unexpected end of command in binding operation, at least two slashes are "
+"missing"
+msgstr "Ei-oletettu loppu komennossa sitomisoperaatiossa, ainakin kaksi kauttaviivaa puuttuu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:865
+msgid "Unexpected end of command in binding operation, at least one slash is missing"
+msgstr "Ei-oletettu loppu komennossa sitomisoperaatiossa, ainakin yksi kauttaviiva puuttuu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:905
+msgid "Unknown binding operation '%Q'"
+msgstr "Tuntematon sitomisoperaatio '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:926
+msgid "Missing right side operand for the binding operator '=~'"
+msgstr "Sitomisoperaatorin '=~' oikealta puolelta puuttuu operandi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:948
+msgid "Trailing garbage ignored after operator '++'"
+msgstr "Roskaa operaattorin '++' jälkeen jätetty huomiotta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:960
+msgid "Missing right operand for operator '+='"
+msgstr "Operaattorin '+=' oikealta puolelta puuttuu operandi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:979
+msgid "Trailing garbage ignored after operator '--'"
+msgstr "Roskaa operaattorin '--' jälkeen jätetty huomiotta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:986
+msgid ""
+"This looks a lot like an object handle dereferencing operator '->' but in "
+"fact it isn't. Maybe you forgot a '$' just after ?"
+msgstr "Tämä näyttää paljon objektin referenssioperattorilta '->' mutta ei itse asiassa ole. Ehkä unohdit '$'-merkin juuri sen jälkeen?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:994
+msgid "Missing right operand for operator '-='"
+msgstr "Operaattorin '-=' oikealta puolelta puuttuu operandi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1015
+msgid "Missing right operand for operator '<<='"
+msgstr "Operaattorin '<<=' oikealta puolelta puuttuu operandi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1025
+msgid "Missing right operand for operator '<<'"
+msgstr "Operaattorin '<<' oikealta puolelta puuttuu operandi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1039
+msgid "Missing right operand for operator '<,'"
+msgstr "Operaattorin '<,' oikealta puolelta puuttuu operandi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1053
+msgid "Missing right operand for operator '<+'"
+msgstr "Operaattorin '<+' oikealta puolelta puuttuu operandi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1075
+msgid "Missing right operand for operator '>>='"
+msgstr "Operaattorin '>>=' oikealta puolelta puuttuu operandi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1094
+msgid "Missing right operand for operator '.='"
+msgstr "Operaattorin '.=' oikealta puolelta puuttuu operandi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1113
+msgid "Missing right operand for operator '"
+msgstr "Operaattorin ' oikealta puolelta puuttuu operandi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:72
+msgid "Unknown operator"
+msgstr "Tuntematon operaattori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1178
+msgid "Unexpected (and senseless) read-only data evaluation"
+msgstr "Ei-odotettua (ja järjetöntä) vain-luku datan käsittelyä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1180
+msgid "Syntax error: confused by earlier errors: bailing out"
+msgstr "Syntaksivirhe: hämmennytty aikaisempien virheiden takia: lopetetaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1160
+msgid "Unexpected end of script after a variable reference: expected operator"
+msgstr "Ei-oletettu skriptin loppu muuttuja-referenssin jälkeen: oletettiin operaattoria"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1176
+msgid ""
+"Unexpected character '%q' (unicode %x) after a void function call: end of "
+"instruction expected"
+msgstr "Ei-odotettu merkki '%q' (unikoodi %x) tyhjän funktion kutsun jälkeen: oletettiin instruktion loppua"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1179
+msgid "Unexpected character '%q' (unicode %x)"
+msgstr "Ei-odotettu merkki '%q' (unikoodi %x)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:96
+msgid "/me can be used only in channels, queries and DCC chat windows"
+msgstr "/me:tä voidaan ainoastaan käyttää kanavissa, kyselyissä ja DCC- chat-ikkunoissa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:385
+msgid "Invalid IRC url (%Q)"
+msgstr "Kelpaamaton IRC-url (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:410
+msgid "The commandline for this url type seems to be broken (%Q)"
+msgstr "Komentorivi tälle url-tyypille näyttää olevan rikki (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:412
+msgid "No commandline specified for this type of url (%Q)"
+msgstr "Ei komentoriviä ole annettu tälle url-tyypille (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:512
+msgid "Option setting error: Unknown option or invalid value for option type"
+msgstr "Valinnan asetus virhe: Tuntematon valinta tai kelpaamaton arvo valinnalle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:606
+msgid "Choose a file to parse"
+msgstr "Valitse tiedosto jäsennettäväksi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:639
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:643
+msgid "Failed to load the file '%Q' for parsing"
+msgstr "Ei voitu avata tiedostoa '%Q' jäsennettäväksi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:715
+msgid "Missing channel list"
+msgstr "Kanavalista puuttuu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:753
+#, c-format
+msgid "You don't appear to be on channel %s"
+msgstr "Et näytä olevan kanavalla %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:802
+msgid "Module command call failed: can't load the module 'snd'"
+msgstr "Moduulin komennon kutsu epäonnistui: ei voida ladata moduulia 'snd'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:809
+msgid ""
+"Module command call failed: the module 'snd' doesn't export a command named "
+"'play'"
+msgstr "Moduulin komennon kutsu epäonnistui: moduuli 'snd' ei vie komentoa nimeltä 'play'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:864
+msgid "Popup %Q is not defined"
+msgstr "Ponnahdusvalikkoa %Q ei ole määritelty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:872
+msgid "A popup menu cannot be popped up twice"
+msgstr "Ponnahdusvalikkoa ei voi tuoda esiin kahdesti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:897
+msgid "Invalid syntax for screen coordinates, using cursor position"
+msgstr "Epäkelpoa syntaksia ruudun kordinaateille, käytetään hiiren sijaintia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1011
+msgid "Empty target specified"
+msgstr "Tyhjä kohde annettu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:97
+msgid "[RAW]: %Q"
+msgstr "[RAAKA VIESTI]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1237
+msgid "Window with id %Q not found: no rebinding performed"
+msgstr "Ikkuna tunnisteella %Q ei löytynyt: ei uudelleensitomista suoritettu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1330
+msgid "Failed to execute command '%Q'"
+msgstr "Ei voitu suorittaa komentoa '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:242
+msgid "Missing alias name"
+msgstr "Aliaksen nimi puuttuu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:253
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:889
+msgid ""
+"Alias names can contain only letters, digits, underscores and '::' namespace "
+"separators"
+msgstr "Aliaksen nimi saa sisältää vain kirjaimia, numeroita, alaviivoja ja '::'-sisälltimen erottajia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:903
+msgid "Stray ':' character in alias name: did you mean ...<namespace>::<name> ?"
+msgstr "Irronnainen ':'-merkki aliaksen nimessä: tarkoititko ...<sisällin>::<nimi> ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:914
+msgid "Found an empty namespace in alias name"
+msgstr "Tyhjä sisällin aliaksen nimessä löytyi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:277
+msgid "The alias %Q is not existing"
+msgstr "Alias %Q ei ole olemassa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:436
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:409
+msgid "The specified window has no button containers"
+msgstr "Annetulla ikkunalla ei ole nappien sisältimiä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:447
+msgid "Window button '%Q' not found"
+msgstr "Ikkunanappi '%Q' ei löytynyt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:441
+msgid "Can't find the icon '%Q'"
+msgstr "Ei voida löytää kuvaketta '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:532
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:540
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1193
+msgid "No such event (%Q)"
+msgstr "Tapahtumaa '%Q' ei löytynyt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:552
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1218
+msgid "No handler '%Q' for raw numeric event '%d'"
+msgstr "Ei käsittelijää '%Q' raa-alle numeeriselle tapahtumalle '%d'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1244
+msgid "No handler '%Q' for event '%Q'"
+msgstr "Ei käsittelijää '%Q' tapahtumalle '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:936
+msgid "The specified ping time is invalid: assuming zero (no ping)"
+msgstr "Annettu ping-aika on epäkelpo, oletetaan nolla (ei pingiä)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:946
+msgid "The specified maximum run time is invalid: assuming zero (infinite)"
+msgstr "Annettu suoritusaika on epäkelpo, oletetaan nolla (ääretön)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:965
+msgid "Failed to start the process"
+msgstr "Ei onnistuttu käynnistämään prosessia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1010
+msgid "The specified object does not exist"
+msgstr "Annettua oliota ei ole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1113
+msgid "Missing timer name"
+msgstr "Puuttuva ajastimen nimi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1122
+msgid "Missing timeout delay"
+msgstr "Puuttuva viive"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1129
+msgid "The timeout delay didn't evaluate to an integer"
+msgstr "Viive-aika ei evaluoitunut kokonaislukuun"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1152
+msgid "Unable to add the timer: insufficient system resources"
+msgstr "Ei voitu lisätä ajastinta: ei riittävästi resursseja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_eventmanager.cpp:503
+msgid "Event handler %Q is broken: disabling"
+msgstr "Tapahtumakäsittelijä %Q rikki: otetaan pois käytöstä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_moduleinterface.cpp:166
+msgid "Can't unload the module: it has locked itself in memory"
+msgstr "Ei voida poistaa moduulia käytöstä: se on lukinnut itsensä muistiin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:123
+msgid "Unknown binary operator '=%q': did you mean '==' ?"
+msgstr "Tuntematon binäärioperaattori '=%q': tarkoititko '=='?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:221
+msgid "Unknown binary operator '%q'"
+msgstr "Tuntematon binäärioperaattori '%q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:305
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:371
+msgid "Unexpected end of script in expression"
+msgstr "Ei-oletettu skriptin loppu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:451
+msgid ""
+"Unexpected character %q (unicode %h) in expression. If it meant to be a "
+"string use the quotes."
+msgstr "Ei-oletettu merkki %q (unikoodi %h) lauseessa. Jos sen oli tarkoitus olla merkkijonossa, käytä lainausmerkkejä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:466
+msgid "Unexpected empty expression operand"
+msgstr "Ei-oletettu tyhjä lauseen operandi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:91
+msgid "say: injected commandline"
+msgstr "say: injektoitu komentorivi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:94
+msgid "Say parse error: Broken command"
+msgstr "Say:n parsimisvirhe: Rikkinäinen komento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:250
+msgid "Couldn't find a suitable IRC context for the connection, try using -n or -u"
+msgstr "Ei löydetty sopivaa IRC-kontekstia yhteydelle, kokeile käyttää -n ta -u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:259
+msgid "Another connection is already in progress in the selected IRC context"
+msgstr "Toinen yhteys menoss valitussa IRC-kontekstissa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:369
+msgid "No menu bar item with text '%Q'"
+msgstr "Ei menupalkki-kohtaa tekstillä '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:383
+msgid "Invalid index specified: ignored"
+msgstr "Epäkelpo indeksi annettu: jätettiin huomiotta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:392
+msgid "The popup '%Q' is not defined"
+msgstr "Ponnahdusikkunaa '%Q' ei ole määritelty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:604
+msgid "No target channel specified and the current window is not a channel"
+msgstr "Ei kohdekanavaa annettu eikä nykyinen ikkuna ole kanava"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:705
+msgid "No catalogue %Q for the current language found"
+msgstr "Ei katalogia %Q nykyiselle kielelle löytynyt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:744
+msgid "The catalogue %Q was not loaded"
+msgstr "Katalogia %Q ei ollut ladattu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:80
+msgid ""
+"Empty window identifier specified in the standard rebinding switch: no "
+"rebinding performed"
+msgstr "Tyhjä ikkunan identifieri annettu standardissa uudelleensitomiskytkimessä: ei uudelleensitomista suoritettu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:91
+msgid ""
+"Invalid window specified in the standard rebinding switch: no rebinding "
+"performed"
+msgstr "Epäkelpo ikkunan identifieri annettu standardissa uudelleensitomiskytkimessä: ei uudelleensitomista suoritettu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:94
+msgid "The left side of the scope operator didn't evaluate as an object reference"
+msgstr "Tähystin-operaattorin vasen puoli ei evaluoitunut olio-kohdistimeksi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:100
+msgid "The left side of the scope operator evaluated to a null object reference"
+msgstr "Tähystin-operaattorin vasen puoli evulaitui null-olio-kohdistimeksi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:107
+msgid ""
+"The left side of the scope operator evaluated to an invalid object reference "
+"(object doesn't exist)"
+msgstr "Tähystin-operaattorin vasen puoli evaluoitui epäkelvoksi olio-kohdistimeksi (oliota ei ole olemassa)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayreferenceassert.cpp:77
+msgid "Array reference assert failed: the variable evaluated to type '%Q'"
+msgstr "Taulukon referenssi-assertti epäonnistui: muuttuja evaluoitui tyypiksi '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:247
+msgid "Operand of unary operator didn't evaluate to a number"
+msgstr "Unaarioperaattorin operandi ei evaluoitunut numeroksi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:415
+msgid "Left operand didn't evaluate to a number"
+msgstr "Vasen operandi ei evaluoitunut numeroksi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:422
+msgid "Right operand didn't evaluate to a number"
+msgstr "Oikea operandi ei evaluoitunut numeroksi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:547
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:575
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:583
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:374
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:66
+msgid "Division by zero"
+msgstr "Jako nollalla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:107
+#, c-format
+msgid "line %d, near character %d"
+msgstr "rivillä %d, lähellä merkkiä %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:187
+msgid "This command can be used only in windows bound to an IRC context"
+msgstr "Tätä komentoa voi vain käyttää ikkunoissa jotka on liitetty IRC-kontekstiin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:193
+msgid "You're not connected to an IRC server"
+msgstr "Et ole yhteydessä IRC-palvelimeen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:199
+msgid "Missing parameter"
+msgstr "Puuttuva parametri"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:128
+msgid "Hash key evaluated to empty string: fix the script"
+msgstr "Listan avain evaluoitui tyhjäksi merkkijonoksi: korjaa komentosarja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:99
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash: automatic "
+"conversion from type '%Q' supplied"
+msgstr "Argumentti alikomentosarjasta {} ei evaluoitunut listaksi: automaattinen muunnos tyypistä '%Q' viety"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:144
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash automatic "
+"conversion from %Q supplied"
+msgstr "Argumentti alikomentosarjasta {} ei evaluoitunut listaksi automaattinen muunnos tyypistä '%Q' viety"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashreferenceassert.cpp:77
+msgid "Hash reference assert failed: the variable evaluated to type '%Q'"
+msgstr "Listan referenssi-assertti epäonnistui: muuttuja evaluoitui tyypiksi '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:100
+msgid "Failed to send an unknown command as /raw"
+msgstr "Ei voitu lähettää tuntematonta kometoa raakana viestinä (/raw)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:104
+msgid "Call to undefined command '%Q'"
+msgstr "Kutsu ei-määriteltyyn komentoon '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:116
+msgid "Error in inner alias command call '%Q', called from this context"
+msgstr "Virhe sisäisessä aliaksen komentokutsussa '%Q', kutsuttu tästä kontekstista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:74
+msgid "There are no extended scope variables in this scope"
+msgstr "Tässä laajuudessa ei ole pidennettyjä muuttujia."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:111
+msgid "Missing class name"
+msgstr "Puuttuva luokan nimi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:120
+msgid "A class can't be a subclass of itself"
+msgstr "Luokka ei voi olla itsensä aliluokka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:127
+msgid "Couln't find base class named \"%Q\""
+msgstr "Ei voitu löytää pohjaluokkaa nimeltä \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:137
+msgid ""
+"Detected a loop in the inheritance tree of the base class \"%Q\": redefine "
+"that class first"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:146
+msgid "Can't override the builtin class \"%Q\""
+msgstr "Ei voida ylikirjoittaa sisäänrakennettua luokkaa \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:71
+msgid "Module command call failed: can't load the module '%Q': %Q"
+msgstr "Moduulin komennon kutsu epäonnistui: ei voida ladata moduulia '%Q': %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:77
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a command named '%"
+"Q'"
+msgstr "Moduulin komennon kutsu epäonnistui: moduuli '%Q' ei vie komentoa nimeltä '% Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:113
+msgid "Broken condition in menu setup: assuming false"
+msgstr "Rikkinäinen ehto valikon rakenteessa: oletetaan epätodeksi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:220
+msgid "Broken icon parameter: ignoring"
+msgstr "Rikkinäinen kuvake-parametri: jätetään huomiotta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:228
+msgid "Can't find the icon \"%Q\": ignoring"
+msgstr "Ei löydetä kuvaketta \"%Q\": jätetään huomiotta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:244
+msgid "Broken text parameter: assuming empty string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:486
+msgid "Recursive definition detected for popup '%Q': ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:500
+msgid "Can't find the external popup '%Q'; ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:853
+msgid "Broken prologue in popup menu '%Q': ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:868
+msgid "Broken epilogue in popup menu '%Q': ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:70
+msgid "Module function call failed: can't load the module '%Q': %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:77
+msgid ""
+"Module function call failed: the module '%Q' doesn't export a function named "
+"'%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_timermanager.cpp:244
+msgid "Timer '%Q' has a broken callback handler: killing the timer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:229
+msgid "The target variable didn't evaluate to an integer or real value"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:283
+msgid "The right side of operator '&=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:294
+msgid "The left side of operator '&=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:353
+msgid "The right side of operator '/=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:364
+msgid "The left side of operator '/=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:446
+msgid "The right side of operator '%=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:457
+msgid "The left side of operator '%=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:541
+msgid "The right side of operator '*=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:552
+msgid "The left side of operator '*=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:620
+msgid "The right side of operator '|=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:631
+msgid "The left side of operator '|=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:691
+msgid "The right side of operator '<<=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:702
+msgid "The left side of operator '<<=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:763
+msgid "The right side of operator '>>=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:774
+msgid "The left side of operator '>>=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:840
+msgid "The right side of operator '-=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:851
+msgid "The left side of operator '-=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:923
+msgid "The right side of operator '+=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:934
+msgid "The left side of operator '+=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1009
+msgid "The right side of operator '^=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1020
+msgid "The left side of operator '^=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1462
+msgid ""
+"The regular expression matched a zero-length substring: this is not valid in "
+"the s/// operator, skipping"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:52
+msgid "Unexpected end of script after '$' function call prefix"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:53
+msgid "Unexpected character %q (unicode %x) after '$' function call prefix"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:54
+msgid ""
+"Syntax error after '$' function call prefix. If you want to use a plain '$' "
+"in the code you need to escape it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:63
+msgid "Invalid expression evaluation in object scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:78
+msgid "Invalid command evaluation in object scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:87
+msgid "Empty instruction block for command evaluation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:101
+msgid "Parameter identifiers are forbidden in object scope (after the '->' operator)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:147
+msgid ""
+"Ending index of a multiple parameter identifier is lower or equal to the "
+"starting index. This will evaluate to a single parameter identifier."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:163
+msgid "Syntax error: invalid $$ ($this) function call in object scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:189
+msgid "Syntax error: malformed alias function call identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:197
+msgid "Syntax error: malformed (alias?) function call identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:307
+#, c-format
+msgid "Invalid data type for parameter \"%s\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:122
+#, c-format
+msgid "found empty string where type '%s' was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:129
+msgid "found string value \"%Q\" where type '%s' was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:134
+msgid "found type %Q where type '%s' was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:154
+#, c-format
+msgid "Missing non-optional parameter \"%s\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:282
+msgid "found empty string while a non empty one was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:309
+#, c-format
+msgid "found signed integer \"%d\" where type 'unsigned integer' was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:253
+msgid "This window has no associated IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:483
+#, c-format
+msgid "No such IRC context (%u)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:471
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:586
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:494
+msgid "This window is not associated to an IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:807
+msgid ""
+"The specified format string wasn't accepted by the underlying system time "
+"formatting function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:70
+msgid "Unterminated c-style multiline comment"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:71
+msgid "Unexpected end of script in multiline comment"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:88
+msgid ""
+"Unexpected character '%q' (unicode %x) after a slash (it is a typo or a "
+"malformed comment begin ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:71
+msgid "Call to undefined function '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:79
+msgid "Error in inner alias function call '%Q', called from this context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:73
+msgid "Array index didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:79
+msgid "Array index evaluated to a negative integer (non negative integer expected)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:106
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from %Q supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:142
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:219
+msgid "Lag meter was not enabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:546
+msgid "No such event handler (%Q) for event %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands.cpp:152
+msgid "This is not a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:99
+msgid "Unexpected end of command buffer while looking for the \"perl.end\" statement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:147
+msgid "Trailing garbage at the end of the break command: ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:209
+msgid "The 'unset' command needs a variable list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:280
+msgid "Found character %q (unicode %x) where a variable was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:219
+msgid "'unset' command used without a variable list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:279
+msgid "The 'global' command needs a variable list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:631
+msgid "Found character %q (unicode %x) where an open parenthesis was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:439
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:538
+msgid "Unexpected end of buffer in class definition"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:474
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:501
+msgid "Found character %q (unicode %x) where a function name was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:522
+msgid "Unexpected end of buffer in function parameter list reminder"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:630
+msgid "The while command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:654
+msgid ""
+"The last while command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:655
+msgid ""
+"Unexpected end of script while looking for the instruction block of the "
+"while command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:741
+msgid ""
+"Unexpected end of command after the 'do' command block: expected 'while' "
+"keyword"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:743
+msgid "Found character %q (unicode %x) where a 'while' keyword was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:759
+msgid ""
+"The 'while' block of the 'do' command needs an expression enclosed in "
+"parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:779
+msgid "Garbage string after the expression in 'do' command: ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:825
+msgid "The 'if' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:850
+msgid ""
+"The last if command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:851
+msgid ""
+"Unexpected end of script while looking for the instruction block of the if "
+"command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:966
+msgid ""
+"Unexpected end of buffer while looking for the closing ')' in the 'for' "
+"command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1015
+msgid "The 'for' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1092
+msgid ""
+"Found char %q (unicode %x) while looking for the terminating ')' in 'for' "
+"command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1122
+msgid "Empty infinite 'for' loop: fix the script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1181
+msgid "The 'foreach' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1205
+msgid ""
+"The 'foreach' command expects a writeable iteration variable as first "
+"parameter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1196
+msgid ""
+"Found character '%q' (unicode %x) where '%' or '$' was expected: see /help "
+"foreach for the command syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1207
+msgid "Unexpected function call as 'foreach' iteration variable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1209
+msgid "Unexpected read-only variable as 'foreach' iteration variable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1219
+msgid ""
+"Unexpected end of 'foreach' parameters: at least one iteration data argument "
+"must be given"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1223
+msgid ""
+"The 'foreach' command expects a comma separated list of iteration data items "
+"after the first parameter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1244
+msgid "Found empty 'foreach' execution block: maybe you need to fix your script ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1365
+msgid "The 'switch' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1415
+msgid "Unexpected end of buffer in switch condition block"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1422
+msgid ""
+"Found character %q (unicode %x) where a 'case','match','regexp','default' or "
+"'break' label was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1460
+msgid ""
+"Found 'break' label where a 'case','match','regexp' or 'default' label was "
+"expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1465
+msgid ""
+"Found token '%Q' where a 'case','match','regexp','default' or 'break' label "
+"was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1528
+msgid "Senseless empty switch command: fix the script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1562
+msgid "Unexpected end of buffer in defpopup block"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1569
+msgid ""
+"Found character %q (unicode %x) where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1668
+msgid "Found empty prologue block: maybe you need to fix the script?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1670
+msgid "Found empty epilogue block: maybe you need to fix the script?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1703
+msgid ""
+"Unexpected empty <text> field in label parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1753
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1801
+msgid ""
+"Unexpected empty <text> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1777
+msgid "Found empty instruction for popup item: maybe you need to fix the script?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1809
+msgid ""
+"Unexpected empty <name> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1821
+msgid ""
+"Found token '%Q' where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1931
+msgid "The 'defpopup' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:109
+msgid "beginning of input"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:121
+msgid ""
+"Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %s"
+"\" for the command syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:124
+#, c-format
+msgid ""
+"Found end of input where character '%c' was expected: see \"/help %s\" for "
+"the command syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:197
+msgid "Empty script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2650
+msgid ""
+"Syntax error after '%' variable prefix. If you want to use a plain '%' in "
+"the code you need to escape it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2667
+msgid "Objects have no extended scope variables"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2727
+msgid "Found character '%q' (unicode %x) where an instruction was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2760
+msgid "Unterminated instruction block"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2761
+msgid "Unexpected end of script in instruction block (missing closing brace)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2838
+msgid ""
+"The dash after a command should be followed by a letter (switch), by a digit "
+"(negative number) or be escaped"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2842
+msgid "Unexpected character '%q' (unicode %x) after a switch dash"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2844
+msgid "Unexpected end of script after a switch dash"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2869
+msgid ""
+"The above problem might be related to the switch dash and the following "
+"equal sign"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2948
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3016
+msgid "Unexpected end of script in parameter list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2954
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3022
+msgid "Unexpected end of line in parameter list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3083
+msgid ""
+"Nested character %q corresponding to expected terminator, this might confuse "
+"me a bit: it is a good idea to enclose it in quotes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3093
+msgid "Skipping nested terminator character %q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3120
+msgid "Stray backslash at the end of the script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3393
+msgid "Unterminated hash key"
+msgstr "Ei-päätetty listan avain"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3387
+msgid "Unexpected end of script in hash key (missing '}' character ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3394
+msgid ""
+"Unexpected end of line in hash key (missing '}' character or unescaped "
+"newline)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3679
+msgid "Unterminated string constant"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3673
+msgid "Unexpected end of script in string constant (missing \" character ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3680
+msgid ""
+"Unexpected end of line in string constant (missing \" character or unescaped "
+"newline)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_processmanager.cpp:225
+msgid "Error triggered from process callback handler: killing process"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arraycount.cpp:72
+msgid ""
+"The argument of the array count '#' operator didn't evaluate to an array: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:197
+msgid "This window has no associated IRC context and is not a DCC chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:293
+msgid "Class \"%Q\" is not defined"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:303
+msgid "The specified parent object does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:430
+msgid "There is no option named '%Q'"
+msgstr "Ei ole valintaa nimeltä \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:85
+msgid "Internal error: pure virtual evaluateReadOnly called"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:91
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:104
+msgid "Internal error: trying to evaluate as read-write a read-only data location"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:98
+msgid "Internal error: pure virtual evaluateReadOnlyInObjectScope called"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:215
+msgid "[KVS]%c Warning: %Q"
+msgstr "[KVS]%c Varoitus: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:211
+msgid "[KVS]%c Compilation Error: %Q"
+msgstr "[KVS]%c Käännösvirhe: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:219
+msgid "[KVS]%c Runtime Error: %Q"
+msgstr "[KVS]%c Ajamisvirhe: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:224
+msgid "[KVS] in script context \"%Q\""
+msgstr "[KVS] skriptikontekstissa \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:226
+msgid "[KVS] in script context \"%Q\", %Q"
+msgstr "[KVS] skriptikontekstissa \"%Q\", %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:233
+msgid "[KVS] Code listing:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:238
+msgid "[KVS] Window:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:242
+#, c-format
+msgid "[KVS] Destroyed window with pointer %x"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:246
+msgid "[KVS] Call stack:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:466
+#, c-format
+msgid "Window with ID '%s' not found, returning empty string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:130
+msgid "The specified window is not a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:394
+msgid "The $sw() function can be used only in aliases"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:298
+msgid "Invalid pitch value: using default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:308
+msgid "Invalid duration value: using default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:417
+msgid "No button with type %Q named %Q"
+msgstr "Ei nappia jolla olisi tyyppi %Q nimeltä %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:628
+msgid "Can't delete a null object reference"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:634
+msgid "Can't delete an inexisting object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:688
+msgid "Inexisting popup \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:694
+msgid "Popup menu self-modification is not allowed (the popup is probably open)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:701
+msgid "The menu item with id \"%Q\" does not exist in popup \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:856
+msgid ""
+"The argument of the -w switch did not evaluate to a valid window id: using "
+"default"
+msgstr "Kytkimen -w annettu arvo ei ole ikkunan ID: käytetään nykyistä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:865
+msgid "The argument of the i switch did not evaluate to a number: using default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:977
+msgid "Invalid color-set specification, using default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:988
+#, c-format
+msgid "Window '%s' not found, using current one"
+msgstr "Ikkunaa '%s' ei löydetty, käytetään nykyistä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:78
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a callback "
+"command named '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp:401
+#, c-format
+msgid "The popup '%s' is actually locked: 'self-modifications' are not allowed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:822
+#, c-format
+msgid "Ignoring DCC from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "Jätetään DCC huomiotta käyttäjältä \r!nc\r%s\r [%s@\r!h\r%s\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:839
+#, c-format
+msgid "Ignoring CTCP from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "Jätetään CTCP huomiotta käyttäjältä \r!nc\r%s\r [%s@\r!h\r%s\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:978
+msgid "The following CTCP reply has unrecognized target %Q"
+msgstr "Seuraavalla CTCP vastauksella on ei-tunnistettu kohde %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1025
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1128
+msgid "Channel CTCP"
+msgstr "Kanava-CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:988
+msgid "%Q %Q reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "%Q %Q vastaus käyttäjältä \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1018
+msgid "The following CTCP request has unrecognized target %Q"
+msgstr "Seuraavalla CTCP pyynnöllä on ei-tunnistettu kohde %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1032
+msgid ""
+"%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignored (flood limit "
+"exceeded)"
+msgstr "%Q %Q%c pyyntö käyttäjältä \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q) jätettiin huomiotta (tulvaraja ylitetty)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1036
+msgid "ignored (unrecognized)"
+msgstr "jätettiin huomiotta (ei tunnistettu)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "ignored"
+msgstr "jätettiin huomiotta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "replied"
+msgstr "vastattiin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1041
+msgid "%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+msgstr "%Q %Q%c pyyntö käyttäjältä \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1079
+msgid "The following CTCP PING reply has unrecognized target \"%Q\""
+msgstr "Seuraavalla CTCP PING vastauksella on ei-tunnistettu kohde \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1113
+#, c-format
+msgid ""
+"The following CTCP PING reply has a broken time identifier \"%S\", don't "
+"trust the displayed time"
+msgstr "Seuraavalla CTCP PING vastauksella on rikkinäinen aika-ilmaisin \"%S\", älä luota näytettyyn aikaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1132
+msgid "%Q PING reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sec %u msec"
+msgstr "%Q PING vastaus käyttäjältä \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sekuntia, %u millisekuntia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1466
+msgid "The following CTCP ACTION has unrecognized target %Q"
+msgstr "Seuraavalla CTCP ACTION:lla on ei-tunnistettu kohde %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1471
+msgid "CTCP ACTION from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1517
+msgid "Unable to add file offer for file %Q (File not readable?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1521
+msgid "Added %d sec file offer for file %Q (%Q) to recipient %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "private"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "channel notification:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1579
+msgid "notification"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1584
+msgid "%Q unsets avatar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1591
+msgid "%Q changes avatar to %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1637
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (HTTP GET %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1644
+msgid ""
+": No valid local copy of avatar available; failed to start an HTTP transfer, "
+"ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1652
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (DCC GET %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1664
+msgid ": No valid local copy of avatar available; flood limit exceeded, ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1669
+msgid ": No valid local copy of avatar available, ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1677
+msgid ": No such nickname in the user database, ignoring the change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1717
+msgid "Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1759
+msgid "Processing DCC %Q request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1770
+#, c-format
+msgid "Unable to process the above request: Cannot load DCC module (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1776
+msgid "Unable to process the above request: DCC module may be broken"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:132
+msgid "[Server parser]: Encountered problems while parsing the following message:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:134
+msgid "[Server parser]: [%s][%s] %Q"
+msgstr "[palvelin-parseri]: [%s][%s] %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:136
+#, c-format
+msgid "[Server parser]: %s"
+msgstr "[palvelin-parseri]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:98
+msgid "Received ping from \r!s\r%Q\r (PING %Q), replied pong"
+msgstr "Vastaanotettiin ping käyttäjältä \r!s\r%Q\r (PING %Q), vastattiin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:125
+#, c-format
+msgid "Received pong from \r!s\r%s\r (PONG %s)"
+msgstr "Vastaanotettiin pong käyttäjältä \r!s\r%s\r (PONG %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:151
+msgid "Server ERROR: %Q"
+msgstr "Palvelimen VIRHE: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:174
+msgid "Missing channel parameter in join message"
+msgstr "Kanavaparametri puuttuu liittymisviestistä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:209
+msgid "Received a join message for an unknown channel, possible desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:305
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r [implicit +%c umode change]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:310
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] on liittynyt kanavalle \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:324
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] on juuri liittynyt kanavalle \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:355
+msgid "Received a part message for an unknown channel, possible desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:384
+msgid "You have left channel \r!c\r%Q\r"
+msgstr "Olet poistunut kanavalta \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:386
+msgid "You have left channel \r!c\r%Q\r: %Q"
+msgstr "Olet poistunut kanavalta \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:402
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] on poistunut kanavalta \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:406
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] on poistunut kanavalta \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:420
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] on juuri poistunut kanavalta \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:424
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] on juuri poistunut kanavalta \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:494
+#, c-format
+msgid "Netsplit detected: %s"
+msgstr "Palvelinkatkaisu havaittu: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:546
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:562
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"
+msgstr "\r!n\r%Q\r[%Q@\r!h\r%Q\r] on lopettanut: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:589
+msgid "Received a kick message for an unknown channel, possible desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:626
+msgid "You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Sinut on potkittu kanavalta \r!c\r%Q\r käyttäjän \r!n\r%Q\r [%Q@\r!h\r%Q\r] toimesta: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:633
+msgid "Attempting to rejoin \r!c\r%Q\r..."
+msgstr "Aiotaan uudelleen liittyä kanavalle \r!c\r%Q\r..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:670
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@"
+"\r!h\r%Q\r]: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] on potkittu kanavalta \r!c\r%Q\r käyttäjän \r!n\r%Q\r [%Q@\r!h\r%Q\r] toimesta: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:682
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just been kicked from \r!c\r%Q\r by \r!n\r%Q"
+"\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] on juuri potkittu kanavalta \r!c\r%Q\r käyttäjän \r!n\r%Q\r [%Q@\r!h\r%Q\r] toimesta: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:710
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:776
+msgid "Ignoring query-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Jätetään kyselyviesti käyttäjältä \r!nc\r%Q\r [%Q@\r!h\r%Q\r] huomiotta: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:843
+msgid "Spam privmsg from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%s\")"
+msgstr "Spam-viesti käyttäjältä \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q (täsmää spamsanan \"%s\" kanssa)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:984
+msgid "Ignoring channel-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Jätetään kanavaviesti käyttäjältä \r!nc\r%Q\r [%Q@\r!h\r%Q\r] huomiotta: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1106
+msgid "Ignoring Notice from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Jätetään huomautus käyttäjältä \r!nc\r%Q\r [%Q@\r!h\r%Q\r] huomiotta: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1159
+msgid "NickServ requests authentication, executing scheduled command"
+msgstr "NickServ pyytää kirjautumista, ajetaan asetettu komento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1162
+msgid ""
+"The scheduled NickServ identification command appears to be broken, please "
+"change the setting"
+msgstr "Asetettu NickServin kirjautumiskomento vaikuttaa olevan rikki, ole hyvä ja vaihda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1213
+msgid "Spam notice from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%Q\")"
+msgstr "Spam-huomautus käyttäjältä \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q (täsmää spamsanan \"%s\" kanssa)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1394
+msgid "Received a topic message for an unknown channel, possible desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1413
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has changed topic to \"%Q%c\""
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] on vaihtanut kanavan aiheeksi \"%Q%c\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1512
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] nyt tunnetaan käyttäjänä \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1063
+msgid "You have changed your nickname to %Q"
+msgstr "Olet vaihtanut tunnukseksesi \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1477
+msgid ""
+"The target of this query was lost and has been found when \r!n\r%Q\r [%Q@\r!h"
+"\r%Q\r] changed his nickname to \r!n\r%Q\r"
+msgstr ""
+"Tämän kyselyn kohde hukattiin ja löydettiin uudelleen kun \r!n\r%Q\r [%Q@\r!h"
+"\r%Q\r] vaihtoi tunnuksekseen \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1486
+msgid ""
+"The recent nickname change from \r!n\r%Q\r to \r!n\r%Q\r caused a query "
+"collision: merging output"
+msgstr "Juuri tapahtunut tunnuksen vaihto käyttäjältä \r!n\r%Q\r to \r!n\r%Q\r aiheutti kyselytörmäyksen, liitetään sisällöt toisiinsa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1495
+msgid "End of merged output"
+msgstr "Liitetyn sisällön loppu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1540
+msgid "Ignoring invite from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "Jätetään kutsu \r!n\r%Q\r to \r!n\r%Q\r huomiotta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "autojoining"
+msgstr "liitytään automaattisesti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "double-click the channel name to join"
+msgstr "tuplapainalla kanavan nimeä liittyäksesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1556
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] invites you to channel \r!c\r%Q\r (%Q)"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] kutsuu sinut kanavalle \r!c\r%Q\r (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1564
+msgid "Received an invite message directed to another nick, possible desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1584
+msgid "WALLOPS from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "WALLOPS käyttäjältä \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1648
+#, c-format
+msgid "You have set user mode %s"
+msgstr "Olet asettanut käyttäjämoodin %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1655
+msgid "Received a mode change for an unknown channel, possible desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1731
+msgid "%Q [%Q@%Q] has set channel key to \"\r!m-k\r%Q\r\""
+msgstr "%Q [%Q@%Q] asetti kanavan salasanaksi \"\r!m-k\r%Q\r\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1734
+msgid "%Q [%Q@%Q] has unset the channel key"
+msgstr "%Q [%Q@%Q] on poistanut kanavan salasanan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1754
+msgid "%Q [%Q@%Q] has set channel \r!m-l\rlimit to %Q\r"
+msgstr "%Q [%Q@%Q] on asettanut kanavan \r!m-l\r rajaksi %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1757
+msgid "%Q [%Q@%Q] has unset the channel limit"
+msgstr "%Q [%Q@%Q] on poistanut kanavan rajan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1778
+msgid "%Q [%Q@%Q] has set mode %c%c \r!n\r%Q\r"
+msgstr "%Q [%Q@%Q] on asettanut moodin %c%c \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1786
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1833
+msgid "%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"
+msgstr "%Q [%Q@%Q] on asettanut kanavan \r!m%c%c\rmoodin %c%c\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1818
+msgid "%Q [%Q@%Q] has set mode %c%c \r!m%c%c\r%Q\r"
+msgstr "%Q [%Q@%Q] on asettanut moodin %c%c \r!m%c%c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1859
+msgid "%Q [%Q@%Q] has set mode %s %Q"
+msgstr "%Q [%Q@%Q] on asettanut moodin %s %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1862
+msgid "%Q [%Q@%Q] has set channel mode %s"
+msgstr "%Q [%Q@%Q] on asettanut kanavamoodin %s %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:147
+#, c-format
+msgid ""
+"One or more standard mode flags are missing in the server available modes.\n"
+"This is caused either by a non RFC1459-compliant IRC daemon or a broken "
+"server reply.\n"
+"Server umodes seem to be '%s' and channel modes seem to be '%s'.\n"
+"Ignoring this reply and assuming that the basic set of modes is available.\n"
+"If you have strange problems, try changing the server."
+msgstr ""
+"Yksi tai useampi standardi-moodilipukkeista puuttuu palvelimen saatavilla olevista moodeista\n"
+"Tämän aiheuttaa joko ei-RFC1459-mukainen IRC-daemoni tai rikkinäinen palvelimen vastaus.\n"
+"Palvelimen käyttäjämoodit näyttävät olevan '%s' ja kanavamoodit '%s'.\n"
+"Jätetään tämä viesti huomiotta ja oletetaan että perusmoodisetti on saatavilla.\n"
+"Jos sinulla on kummallisia ongelmia, yritä vaihtaa palvelinta."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:159
+msgid "Available user modes:"
+msgstr "Saatavilla olevat käyttäjämoodit:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:167
+msgid ": Unknown user mode"
+msgstr ": Tuntematon käyttäjämoodi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:173
+msgid "Available channel modes:"
+msgstr "Saatavilla olevat kanavamoodit:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:196
+msgid "Server %Q version %S supporting user modes '%S' and channel modes '%S'"
+msgstr "Palvelin %Q version %S tukee käyttäjämoodeja '%S' ja kanavamoodeja '%S'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:243
+msgid "This server supports the WATCH notify list method, it will be used"
+msgstr "Tämä palvelin tukee WATCH-huomautuslistametodia, sitä käytetään"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:261
+msgid "The current network is %Q"
+msgstr "Nykyinen verkko on %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:302
+msgid "This server supports the CODEPAGE command, it will be used"
+msgstr "Tämä palvelin tukee CODEPAGE-komentoa, sitä käytetään"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:318
+#, c-format
+msgid "This server supports: %s"
+msgstr "Tämä palvelin tukee: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:374
+msgid "End of NAMES for \r!c\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:387
+msgid "%c\r!s\r%s\r%c: %Q"
+msgstr "%c\r!s\r%s\r%c: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:471
+msgid "Names for \r!c\r%Q\r: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:486
+msgid "(unknown)"
+msgstr "(tuntematon)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:490
+msgid "Channel topic is: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:497
+msgid "Topic for \r!c\r%Q\r is: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:515
+msgid "No channel topic is set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:520
+msgid "No topic is set for channel \r!c\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:559
+msgid "Topic was set by %Q on %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:560
+msgid "Topic was set by %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:568
+msgid "Topic for \r!c\r%Q\r was set by %Q on %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:571
+msgid "Topic for \r!c\r%Q\r was set by %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:591
+msgid "Channel mode for \r!c\r%Q\r is %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:594
+msgid "User mode for \r!n\r%Q\r is %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:630
+msgid "End of channel %Q for \r!c\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:634
+msgid "ban list"
+msgstr "bännilista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:635
+msgid "invite list"
+msgstr "kutsulista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:636
+msgid "ban exception list"
+msgstr "bännipoikkeuslista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:657
+msgid "%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"
+msgstr "%Q käyttäjälle \r!c\r%Q\r: \r!m-%c\r%Q\r (aika:%Q, asettaja: %Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:664
+msgid "Ban listing"
+msgstr "Bännilista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:667
+msgid "Invite listing"
+msgstr "Kutsulista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:670
+msgid "Ban exception listing"
+msgstr "Bännipoikkeuslista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:739
+msgid ""
+"WHO entry for %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cChannel%c: \r!c\r%Q\r, %"
+"cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAway%c: %Q, %cReal name"
+"%c: %Q"
+msgstr "/WHO-"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:796
+msgid "End of WHO list for %Q"
+msgstr "/WHO -listan loppu käyttäjälle %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:855
+msgid ""
+"Something really weird is happening: the server is refusing all the login "
+"nicknames..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:860
+msgid ""
+"The server is refusing all the login nicknames: giving up, you must send the "
+"nickname manually"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:870
+msgid "No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:944
+msgid "Command syntax %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:972
+msgid "Tip: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:975
+msgid "Tip for %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:992
+msgid "End of help about %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1036
+msgid "%c\r!n\r%Q\r%c is away: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1089
+msgid "%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1094
+msgid "%c\r!n\r%Q\r%c's real name: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1114
+msgid "%c\r!n\r%Q\r%c was %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1118
+msgid "%c\r!n\r%Q\r%c's real name was: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1182
+msgid "%c\r!n\r%Q\r%c's channels: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1219
+msgid "Received a broken RPL_WHOISIDLE, can't evaluate the idle time"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1229
+msgid "%c\r!n\r%Q\r%c's idle time: %ud %uh %um %us"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1239
+msgid "%c\r!n\r%Q\r%c's signon time: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1273
+msgid "%c\r!n\r%Q\r%c's server: \r!s\r%Q\r - %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1292
+msgid "%c\r!n\r%Q\r%c is authenticated as %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1324
+msgid "%c\r!n\r%Q\r%c's info: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1371
+msgid "%c\r!n\r%Q\r%c WHOIS info from \r!s\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1388
+msgid "%c\r!n\r%Q\r%c WHOWAS info from \r!s\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1456
+msgid "Can't evaluate creation time"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1464
+msgid "Channel was created at %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1469
+msgid "Channel \r!c\r%Q\r was created at %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1510
+msgid "USERHOST info: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1531
+msgid "Channel list begin: channel, users, topic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1558
+msgid "List: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1572
+msgid "End of LIST"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1596
+msgid "Link: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1611
+msgid "End of LINKS"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1640
+msgid "[Leaving away status after %ud %uh %um %us]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1644
+msgid "[Leaving away status]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1651
+msgid "Restoring pre-away nickname (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1671
+msgid "[Entering away status]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1689
+msgid "Setting away nickname (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1761
+#, c-format
+msgid "%c\r!s\r%s\r%c's server info: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1772
+#, c-format
+msgid "%c\r!s\r%s\r%c's administrator is %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1783
+#, c-format
+msgid "%c\r!s\r%s\r%c's contact adress is %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1808
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1811
+msgid "\r!n\r%Q\r invited %Q into channel %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1833
+#, c-format
+msgid "%c\r!s\r%s\r%c's information:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1843
+#, c-format
+msgid "End of %c\r!s\r%s\r%c's information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1854
+msgid "%c\r!s\r%s\r%c's time is %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1865
+msgid "%Q: no such server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1876
+msgid "%Q: no such channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1890
+msgid "Cannot sent to channel: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1893
+msgid "Cannot sent text to channel %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1908
+msgid "Cannot sent to channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1911
+msgid "Cannot sent text to channel %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1927
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1935
+msgid "Your encoding is now %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1966
+msgid "%c\r!n\r%Q\r%c's codepage is %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1990
+#, c-format
+msgid "Your user mode is %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:158
+msgid "Failed to set the encoding to %Q: mapping not available."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:175
+msgid "Changed text encoding to %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:503
+msgid "Connection to server lost"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:512
+msgid "Connection to server established"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:573
+msgid "[LINK WARNING]: Socket message truncated to 512 bytes."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:640
+msgid "The server seems to support the WATCH notify list method, will try to use it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:688
+msgid "Can't resolve local host address, using user supplied one (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:695
+msgid "Can't resolve local host address, using default 127.0.0.1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:701
+msgid "Local host address is %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:749
+msgid "The server seems to have changed the idea about the local hostname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:750
+msgid ""
+"You're probably using a broken bouncer or maybe something weird is happening "
+"on the IRC server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:776
+msgid ""
+"Here goes your \"broken bouncer hack\": The server has changed the hostname "
+"but I'll ignore the IP address change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:791
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:801
+msgid "The local IP address as seen by the IRC server is %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:815
+msgid "Can't start the DNS slave thread"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:816
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:846
+msgid "Unable to resolve the local hostname as seen by the IRC server: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:822
+msgid "Looking up the local hostname as seen by the IRC server (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:843
+msgid ""
+"Unable to resolve the local hostname as seen by the IRC server: %Q, using "
+"previously resolved %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:850
+msgid "Local hostname as seen by the IRC server resolved to %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:868
+msgid "Using server specific username (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:873
+msgid "Using network specific username (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:892
+msgid "Using reconnect specific nickname (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:898
+msgid "Using server specific nickname (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:905
+msgid "Using network specific nickname (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:922
+msgid "Using server specific real name (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:929
+msgid "Using network specific real name (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:946
+msgid "Logging in as %Q!%Q :%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:962
+#, c-format
+msgid "Sending %s as password"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1033
+msgid "Executing scheduled network specific \"on connect\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1042
+msgid "Executing scheduled server specific \"on connect\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1051
+msgid "Executing scheduled identity specific \"on connect\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1101
+#, c-format
+msgid "The server refused the suggested nickname (%s) and named you %s instead"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1113
+msgid "Login operations complete, happy ircing!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1123
+msgid "Executing scheduled network specific \"on login\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1132
+msgid "Executing scheduled server specific \"on login\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1141
+msgid "Executing scheduled identity specific \"on login\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1153
+msgid "Setting configured user mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1210
+msgid "Auto-joining network specific channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1244
+msgid "Auto-joining server specific channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1341
+msgid "Updating away state for channel %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_customtoolbardescriptor.cpp:230
+msgid "Backward compatibility action for toolbar.define"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:790
+msgid "Installation problems ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:791
+msgid ""
+"<b>Ooops...</b><br><br><b>There are some reasons that make me think that "
+"your KVIrc installation is incomplete.</b><br><br>I might be wrong, but you "
+"seem to miss some of the features that the default KVIrc script provides."
+"This may happen because you have upgraded to an unstable cvs version, "
+"because you have accidentally deleted or damaged your configuration files, "
+"because you have installed an incomplete script or because you have hit a "
+"bug in KVIrc.<br><br>I can repeat the installation of the default script in "
+"order to restore the missing features.<br><b>Do you want the default script "
+"to be restored ?</b><br><br><font size=\"-1\">Hint: If you're a scripter and "
+"have intentionally removed some of the scripting features then you may "
+"safely click on \"No and Don't Ask Me Again\", otherwise it might be a good "
+"idea to click \"Yes\". If you still want to choose \"No\" you can always "
+"restore the default script by choosing the appropriate entry from the "
+"\"Scripting\" menu.</font>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:805
+msgid "No and Don't Ask Me Again"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:828
+msgid "Restore Default Script - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:829
+msgid ""
+"You are about to restore the default script.<br>This will erase any script "
+"changes you have made.<br>Do you wish to proceed?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:872
+#, c-format
+msgid "Remote command received (%s ...)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1033
+msgid "File download failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1035
+msgid "File download from %1 failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1044
+msgid "File download successfully complete"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1046
+msgid "File download from %1 successfully complete"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1066
+msgid "Avatar download failed for %Q!%Q@%Q and url %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2014
+#, c-format
+msgid "The commandline for media type '%s' seems to be broken"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2018
+#, c-format
+msgid "Media type of file %s matched to '%s' but no commandline specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2023
+#, c-format
+msgid "No idea on how to play file %s (no media type match)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:39
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:48
+#, c-format
+msgid "[SSL]: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:40
+#, c-format
+msgid "[SSL]: Cipher: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:41
+#, c-format
+msgid "[SSL]: Version: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:42
+#, c-format
+msgid "[SSL]: Bits: %c%d (%d used)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:49
+#, c-format
+msgid "[SSL]: Version: %c%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:50
+#, c-format
+msgid "[SSL]: Serial number: %c%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:51
+msgid "[SSL]: Subject:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:59
+#, c-format
+msgid "[SSL]: Common name: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:60
+#, c-format
+msgid "[SSL]: Organization: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:61
+#, c-format
+msgid "[SSL]: Organizational unit: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:62
+#, c-format
+msgid "[SSL]: Country: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:63
+#, c-format
+msgid "[SSL]: State or province: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:64
+#, c-format
+msgid "[SSL]: Locality: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:58
+msgid "[SSL]: Issuer:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:65
+#, c-format
+msgid "[SSL]: Public key: %c%s (%d bits)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:66
+#, c-format
+msgid "[SSL]: Signature type: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:73
+#, c-format
+msgid "[SSL]: Signature contents: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:82
+msgid "Peer X509 certificate"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:85
+msgid "[SSL]: The peer didn't provide a certificate"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1219
+msgid "Current transmission cipher"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:92
+msgid "[SSL]: Can't find out the current cipher info"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:113
+#, c-format
+msgid "[%s]: [SSL]: Using certificate file %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:116
+#, c-format
+msgid "[%s]: [SSL ERROR]: File I/O error while trying to use the certificate file %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:146
+#, c-format
+msgid "[%s]: [SSL ERROR]: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:136
+#, c-format
+msgid "[%s]: [SSL]: Using private key file %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:139
+#, c-format
+msgid "[%s]: [SSL ERROR]: File I/O error while trying to use the private key file %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:375
+msgid "Reconnect attempt aborted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:443
+msgid ""
+"This is the first connection in this IRC context: using the global server "
+"setting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:483
+msgid "No servers available. Check the options dialog or use the /SERVER command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:491
+msgid ""
+"Ooops.. you've hit a bug in the servers database... I have found a server "
+"but not a network..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:504
+msgid "No proxy hosts available, resuming direct connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:582
+#, c-format
+msgid "Connection attempt failed [%s]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:600
+#, c-format
+msgid "Will attempt to reconnect in %d seconds"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:604
+#, c-format
+msgid "%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:606
+#, c-format
+msgid "%d of %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:633
+#, c-format
+msgid "Maximum number of reconnect attempts reached (%d): giving up"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:647
+msgid ""
+"The connection attempt failed while using a cached IP address for the "
+"current server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:648
+msgid "The problem *might* be caused by an updated DNS entry"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:649
+msgid "Try reconnecting with caching disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:673
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:382
+msgid "%Q established [%s (%s:%u)]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Secure connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:779
+#, c-format
+msgid "Connection terminated [%s (%s:%u)]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:791
+msgid "The connection terminated unexpectedly. Trying to reconnect..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:874
+msgid "Sent QUIT, waiting for the server to close the connection..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:685
+msgid "Normal text"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:686
+msgid "Selection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:687
+msgid "Highlighted text"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:688
+msgid "URL foreground"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:689
+msgid "Link overlay foreground"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:690
+msgid "Parser error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:691
+msgid "Parser warning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:692
+msgid "Host lookup result"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:693
+msgid "Socket message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:694
+msgid "Socket warning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:695
+msgid "Socket error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:696
+msgid "System error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:697
+msgid "Raw data to server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:698
+msgid "Connection status"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:699
+msgid "System warning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:700
+msgid "System message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:701
+msgid "Unhandled server reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:702
+msgid "Server information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:703
+msgid "Server Message of the Day"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:704
+msgid "Server ping"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:705
+msgid "Join message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:706
+msgid "Part message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:707
+msgid "Unrecognized/broken message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:708
+msgid "Topic message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:709
+msgid "Own private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:710
+msgid "Channel private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:711
+msgid "Query private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:712
+msgid "CTCP reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:713
+msgid "CTCP request replied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:714
+msgid "CTCP request ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:715
+msgid "CTCP request flood warning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:716
+msgid "CTCP request unknown"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:717
+msgid "User action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:718
+msgid "Avatar change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:719
+msgid "Quit message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:720
+msgid "Split message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:721
+msgid "Quit on netsplit message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:722
+msgid "Nick changes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:723
+msgid "+o mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:724
+msgid "-o mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:725
+msgid "+v mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:726
+msgid "-v mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:727
+msgid "Multiple user mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:728
+msgid "Channel key change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:729
+msgid "Channel limit change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:730
+msgid "+b mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:731
+msgid "-b mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:732
+msgid "+e mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:733
+msgid "-e mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:734
+msgid "+I mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:735
+msgid "-I mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:736
+msgid "Multiple channel mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:737
+msgid "Who reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:738
+msgid "DCC request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:739
+msgid "DCC message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:740
+msgid "DCC error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:741
+msgid "Nickname problem"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:742
+msgid "Whois user reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:743
+msgid "Whois channels reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:744
+msgid "Whois idle reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:745
+msgid "Whois server reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:746
+msgid "Whois other reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:747
+msgid "Channel creation time reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:748
+msgid "Notify list joins"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:749
+msgid "Notify list leaves"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:750
+msgid "Own encrypted private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:751
+msgid "Channel encrypted private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:752
+msgid "Query encrypted private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:753
+msgid "DCC chat message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:754
+msgid "Encrypted DCC chat message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:755
+msgid "Login operations completed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:756
+msgid "Kick action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:757
+msgid "Links reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:758
+msgid "Spam report"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:759
+msgid "ICQ message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:760
+msgid "ICQ user-message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:761
+msgid "Outgoing ICQ user-message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:762
+msgid "Channel notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:763
+msgid "Encrypted channel notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:764
+msgid "Query notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:765
+msgid "Encrypted query notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:766
+msgid "Server notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:767
+msgid "Halfop mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:768
+msgid "Unknown CTCP reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:769
+msgid "NickServ message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:770
+msgid "ChanServ message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:771
+msgid "Away message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:772
+msgid "Ident message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:773
+msgid "Channel list message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:774
+msgid "Half-deop mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:775
+msgid "Invite message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:776
+msgid "Multimedia message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:777
+msgid "Query trace message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:778
+msgid "Wallops message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:779
+msgid "Join error message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:780
+msgid "Broadcast private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:781
+msgid "Broadcast notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:782
+msgid "Am kicked"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:783
+msgid "Am op'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:784
+msgid "Am voiced"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:785
+msgid "Am deop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:786
+msgid "Am devoiced"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:787
+msgid "Am halfop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:788
+msgid "Am de-halfop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:789
+msgid "Ban matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:790
+msgid "Unban matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:791
+msgid "Ban exception matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:792
+msgid "Ban unexception matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:793
+msgid "Invite exception matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:794
+msgid "Invite unexception matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:795
+msgid "Ignored user message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:796
+msgid "Server statistics"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:797
+msgid "SSL message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:108
+msgid "Search"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:799
+msgid "Generic success"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:800
+msgid "Generic status"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:801
+msgid "Generic verbose message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:802
+msgid "Generic warning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:803
+msgid "Generic error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:804
+msgid "Generic critical error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:805
+msgid "Chan admin status set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:806
+msgid "Chan admin status unset"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:807
+msgid "Own chan admin status set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:808
+msgid "Own chan admin status unset"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:809
+msgid "Userop mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:810
+msgid "User-deop mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:811
+msgid "Am userop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:812
+msgid "Am de-userop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:813
+msgid "Verbose/Debug"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:814
+msgid "Chan owner status set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:815
+msgid "Chan owner status unset"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:816
+msgid "Own chan owner status set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:817
+msgid "Own chan owner status unset"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:818
+msgid "Server error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:741
+msgid "Help"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:820
+msgid "Text Encoding Server message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:826
+msgid "BitTorrent message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:970
+msgid "Missing absolute directory for the theme information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:978
+msgid "Failed to create the theme directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1061
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1096
+msgid "Failed to save one of the theme images"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1074
+msgid "Failed to create the theme subdirectory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1213
+msgid "Boolean options (1/0)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1214
+msgid "Rectangle options (x,y,width,height)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1215
+msgid "String options (string value)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1216
+msgid "Color options (#RRGGBB)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1217
+msgid "Mirccolor options (#RRGGBB)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1218
+msgid "Irc context color options (#RRGGBB)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1219
+msgid "Pixmap options (image path)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1220
+msgid "Unsigned integer options (unsigned integer constant)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1221
+msgid "Font options (family,pointsize,style,charset,weight,flags (biusf))"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1222
+msgid "Message color options (image_id,foreground,background,logFlag (0/1))"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1223
+msgid "String list options (comma separated list of strings)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC Context related actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Settings"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Actions related to settings"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:749
+msgid "Scripting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+msgid "Scripting related actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "GUI"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "Actions related to the Graphic User Interface"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:77
+msgid "Channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+msgid "IRC Channel related actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Tools"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Actions that will appear in the \"Tools\" menu"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:157
+msgid "Sending out PING based lag probe"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:167
+msgid "Sending out CTCP based lag probe"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:188
+#, c-format
+msgid "Registered lag check with reliability %u (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:220
+#, c-format
+msgid "Lag check completed (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:259
+#, c-format
+msgid "Lag check aborted (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:143
+msgid "Hostname resolution aborted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:156
+msgid "Attempting %Q to %Q (%Q) on port %u"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "secure connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:165
+#, c-format
+msgid "Attempting to 'bounce' on proxy %s on port %u (protocol %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:194
+#, c-format
+msgid "Using cached proxy IP address (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:237
+msgid "Unable to look up the IRC proxy hostname: Can't start the DNS slave"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:265
+msgid "Resuming direct server connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:248
+#, c-format
+msgid "Looking up the proxy hostname (%s)..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:261
+msgid "Can't find the proxy IP address: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:271
+msgid "Proxy hostname resolved to %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:284
+msgid "Proxy %Q has a nickname: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:322
+#, c-format
+msgid "Using cached server IP address (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:354
+msgid "Unable to look up the server hostname: Can't start the DNS slave"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:359
+#, c-format
+msgid "Looking up the server hostname (%s)..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:373
+msgid "Can't find the server IP address: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:380
+msgid "If this server is an IPv6 one, try /server -i %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:390
+msgid "Server hostname resolved to %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:400
+msgid "Real hostname for %Q is %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:414
+msgid "Server %Q has a nickname: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:468
+msgid "The specified bind address (%Q) is not valid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:473
+msgid ""
+"The specified bind address (%Q) is not valid (the interface it refers to "
+"might be down)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:493
+#, c-format
+msgid "The system-wide IPv6 bind address (%s) is not valid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:500
+#, c-format
+msgid ""
+"The system-wide IPv6 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:522
+#, c-format
+msgid "The system-wide IPv4 bind address (%s) is not valid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:529
+#, c-format
+msgid ""
+"The system-wide IPv4 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:230
+msgid "Channel operators"
+msgstr "Kanavaoperaattorit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:231
+msgid "Voiced users"
+msgstr "Puheoikeutetut käyttäjät"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:232
+msgid "Half-operators"
+msgstr "Puoli-operaattorit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:233
+msgid "Ban masks"
+msgstr "Bännimaskit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:234
+msgid "Color free (no ANSI colors)"
+msgstr "Värivapaa (ei ANSI värejä)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:235
+msgid "Ban exception masks"
+msgstr "Bännipoikkeusmaskit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:236
+msgid "Invite exception masks or forbid /INVITE"
+msgstr "Kutsumaskit, tai /INVITE-kielto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:237
+msgid "Secret"
+msgstr "Salainen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:238
+msgid "Private"
+msgstr "Yksityinen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:239
+msgid "Topic change restricted"
+msgstr "Aiheen vaihto rajoitettu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:240
+msgid "Invite only"
+msgstr "Kutsupakko"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:241
+msgid "No external messages"
+msgstr "Ei ulkoisia viestejä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:242
+msgid "Anonymous or protected user"
+msgstr "Anonyymi tai suojeltu käyttäjä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:243
+msgid "Quiet or channel owner"
+msgstr "Hiljainen käyttäjä tai kanavaomistaja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:244
+msgid "Limited number of users"
+msgstr "Käyttäjämäärärajoitus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:245
+msgid "Key"
+msgstr "Salasana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:246
+msgid "Moderated"
+msgstr "Valvottu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:247
+msgid "Registered"
+msgstr "Rekisteröity"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:248
+msgid "Censor swear words"
+msgstr "Sensuroi kirosanat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:249
+msgid "Impossible to speak and change nick if not authenticated with NickServ"
+msgstr "Mahdoton puhua tai vaihtaa tunnusta jos ei ole authinut NickServille"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:250
+msgid "Impossible to change nick if not authenticated with NickServ"
+msgstr "Mahdoton vaihtaa tunnusta jos ei ole authinut NickServille"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:251
+msgid "Only registered nicks can join"
+msgstr "Vain rekisteröityneet tunnukset voivat liittyä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:252
+msgid "No kicks able (unless U-Line)"
+msgstr "Ei potkuja sallittu (ellei U:Line)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:253
+msgid "IRC-Op only channel"
+msgstr "IRC-Op kanava"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:254
+msgid "Server/Network/Tech Admin only channel"
+msgstr "Palvelin, Verkko'- ja Tech-ylläpitäjäin kanava"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:255
+msgid "Forbid /KNOCK"
+msgstr "/KNOCK kielletty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:256
+msgid "Strip colors"
+msgstr "Poista värit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:257
+msgid "Redirect on channel full"
+msgstr "Uudelleenohjaa jos kanava on täynnä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:258
+msgid "Forbid channel CTCPs"
+msgstr "Kanava-CTCP kielletty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:259
+msgid "User-operators OR Auditorium: /NAMES and /WHO show only ops"
+msgstr "Käyttäjä-operaattorit tai auditorio (/NAMES ja /WHO näyttävät vain operaattorit)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:260
+msgid "Only 7-bit letters in nicknames allowed"
+msgstr "Vain 7-bittisiä kirjaimia tunnuksissa sallittu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:261
+msgid "Impossible to use both 7-bit and 8-bit letters in nicknames"
+msgstr "Mahdotonta käyttää sekä 7- että 8-bittisiä kirjaimia tunnuksissa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:270
+msgid "o: IRC operator (OPER)"
+msgstr "o: IRC-operaattori (OPER)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:271
+msgid "O: Local IRC operator (LOCOP)"
+msgstr "O: Paikallinen IRC-operaattori (LOCOP)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:272
+msgid "i: Invisible"
+msgstr "i: Näkymätön"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:273
+msgid "w: Recipient for WALLOPS messages"
+msgstr "w: Vastaanottaja WALLOPS-viesteille"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:274
+msgid ""
+"r: User with restricted connection (or recipient for messages about rejected "
+"bots)"
+msgstr "r: Käyttäjällä on rajoitettu yhteys (tai on vastaanottaja viesteille hylätyistä boteista)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:275
+msgid "s: Recipient for server notices"
+msgstr "s: Vastaanottaja palvelimen huomautuksille"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:276
+msgid "z: Recipient for oper wallop messages"
+msgstr "z: Vastaanottaja operin wallop-viesteille"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:277
+msgid "c: Recipient for cconn messages"
+msgstr "c: Vastaanottaja cconn-viesteille"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:278
+msgid "k: Recipient for server kill messages"
+msgstr "k: Vastaanottaja palvelimen kill-viesteille"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:279
+msgid "f: Recipient for full server notices"
+msgstr "f: Vastaanottaja täysille palvelimen huomautuksille"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:280
+msgid "y: Spy :)"
+msgstr "y: Vakooja :)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:281
+msgid "d: Obscure 'DEBUG' flag"
+msgstr "d: 'DEBUG' -lipuke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:282
+msgid "n: Recipient for nick changes"
+msgstr "n: Vastaanottaja tunnuksenvaihtoviesteille"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:100
+msgid "Ops... for some reason the link filter object has been destroyed"
+msgstr "Hups.. jostain syystä linkin filtteriolio on tuhottu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:138
+msgid "Using filtered IRC protocol: Link filter is \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:143
+msgid "Failed to set up the link filter \"%Q\", will try with plain IRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:202
+msgid "Failed to start the connection: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:368
+msgid "Contacting %Q %s (%s) on port %u"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "proxy host"
+msgstr "proxy-palvelin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "IRC server"
+msgstr "IRC-palvelin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:375
+#, c-format
+msgid "Low-level transport connection established [%s (%s:%u)]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:379
+msgid "Starting Secure Socket Layer handshake"
+msgstr "Aloitetaan SSL-kädenpuristus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Secure proxy connection"
+msgstr "Turvallinen proxy-yhteys"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Proxy connection"
+msgstr "Proxy-yhteys"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:387
+msgid "Negotiating relay information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:390
+msgid "Sent connection request, waiting for acknowledgement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:393
+msgid "Sent target host data, waiting for acknowledgement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:396
+msgid "Sent auth method request, waiting for acknowledgement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:399
+msgid "Sent username and password, waiting for acknowledgement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:402
+msgid "Sent connection request, waiting for \"HTTP 200\" acknowledgement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:176
+msgid "[SSL]: %Q"
+msgstr "[SSL]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:181
+msgid "[SSL ERROR]: %Q"
+msgstr "[SSL-VIRHE]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:190
+msgid "[PROXY]: %Q"
+msgstr "[PROXY]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:200
+msgid "[PROXY ERROR]: %Q"
+msgstr "[PROXY-VIRHE]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:207
+msgid "[SOCKET]: %Q"
+msgstr "[YHTEYS]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:212
+msgid "[SOCKET ERROR]: %Q"
+msgstr "[YHTEYSVIRHE]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:218
+msgid "[SOCKET WARNING]: %Q"
+msgstr "[YHTEYSVAROITUS]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:337
+#, c-format
+msgid "Binding to local address %s"
+msgstr "Sidotaan paikallisosoiteeseen %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:341
+#, c-format
+msgid ""
+"Binding to local address %s failed: the kernel will choose the correct "
+"interface"
+msgstr "Sitominen paikallisosoitteeseen %s epäonnistui: ydin valitsee oikean käyttöliittymän"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:637
+msgid "Using HTTP protocol."
+msgstr "Käytetään HTTP-protokollaa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:683
+msgid "Using SOCKSV4 protocol."
+msgstr "Käytetään SOCKSV4-protokollaa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:756
+msgid "Using SOCKSv5 protocol."
+msgstr "Käytetään SOCKSV5-protokollaa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:771
+msgid "We can accept auth method 0 (no auth)"
+msgstr "Voimme hyväksyä kirjautumis-metodin 0 (ei kirjautumista)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:779
+msgid "We can accept auth method 0 (no auth) or 2 (user/pass)"
+msgstr "Voimme hyväksyä kirjautumis-metodin 0 (ei kirjautumista) tai 2 (käyttäjätunnus/salasana)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:958
+msgid "Proxy response: auth OK: access granted"
+msgstr "Proxy-vastaus: kirjautuminen OK: pääsy myönnetty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:993
+msgid "Proxy response: Auth method OK: using method 0 (no auth)"
+msgstr "Proxy-vastaus: kirjautumismetodi OK: käytetään metodia 0 (ei kirjautumista)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1000
+msgid "Proxy response: Auth method OK: using method 2 (user/pass)"
+msgstr "Proxy-vastaus: kirjautumismetodi OK: käytetään metodia 2 (käyttäjätunnus/salasana)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1056
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1113
+msgid "Proxy response: target data OK: request granted"
+msgstr "Proxy-vastaus: kohde-data OK: pyyntö myönnetty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1153
+msgid "Proxy response: "
+msgstr "Proxy-vastaus: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1164
+msgid "Proxy said something about: \n"
+msgstr "Proxy sanoi jotakin aiheesta: \n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1205
+msgid "Server X509 certificate"
+msgstr "Palvelimen X5099 sertifikaatti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1209
+msgid "The server didn't provide a certificate"
+msgstr "Palvelin ei antanut sertifikaattia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1223
+msgid "Unable to determine the current cipher"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1768
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1788
+msgid "Partial socket write: packet broken into smaller pieces."
+msgstr "Osittainen yhteyteen kirjoitus: paketti hajotettiin useampaan osaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:60
+msgid "The theme information file does not exist"
+msgstr "Teeman tietotiedosto ei ole olemassa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:71
+msgid ""
+"This KVIrc executable is too old for this theme (minimum theme engine "
+"version required is %Q while this theme engine has version %s)"
+msgstr "Tämä KVIrc-suoritettava on liian vanha tälle teemalle (minimi tälle teemakoneistolle vaadittu on %Q kun tämän teemakoneiston versio on %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:80
+msgid "Theme information file is not valid"
+msgstr "Teeman tietotiedosto ei ole kelvollinen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:248
+msgid "Failed to load the specified screenshot image"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:257
+msgid "Invalid option"
+msgstr "Kelvoton valinta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:265
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:293
+msgid "Failed to save the screenshot image"
+msgstr "Ei voitu tallentaa kuvakaappaus-kuvaa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:117
+msgid "Configure Servers..."
+msgstr "Konfiguroi palvelimet..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:118
+msgid "Allows you to configure the servers and eventually to connect to them"
+msgstr "Sallii sinun konfiguroida palvelimet ja lopulta yhdistää niihin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:128
+msgid "Manage Addons..."
+msgstr "Ylläpidä lisäyksiä..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:129
+msgid "Allows you to manage the script-based addons"
+msgstr "Sallii sinun ylläpitää skripti-pohjaisia lisäyksiä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:139
+msgid "Configure Registered Users..."
+msgstr "Konfiguroi rekisteröityneet käyttäjät..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:140
+msgid "Shows a dialog that allows editing the registered user entries"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:150
+msgid "Configure Identity..."
+msgstr "Konfiguroi identiteettiä..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:151
+msgid "Allows you to configure nickname, username, avatar etc..."
+msgstr "Sallii sinun konfiguroida tunnusta, identtiä, avataria, jne..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:161
+msgid "Show SocketSpy..."
+msgstr "Näytä SocketSpy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:162
+msgid "Shows a window that allows monitoring the socket traffic"
+msgstr "Näyttää ikkunan joka sallii yhteysliikenteen valvontaa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:172
+msgid "Get Network Links"
+msgstr "Hae verkon linkit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:173
+msgid "Shows a window that allows viewing the network links"
+msgstr "Näytää ikkunan joka sallii verkon linkkien näkymän"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:183
+msgid "Get Channel List"
+msgstr "Hae kanavalista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:184
+msgid "Shows a window that allows listing the network channels"
+msgstr "Näyttää ikkunan joka sallii kanavain listauksen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:194
+msgid "Configure KVIrc..."
+msgstr "Konfiguroi KVIrc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:195
+msgid "Shows the general options dialog"
+msgstr "Näyttää yleisten valintojen ikkunan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:205
+msgid "Configure Theme..."
+msgstr "Konfiguroi teema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:206
+msgid "Shows the theme options dialog"
+msgstr "Näyttää teeman valintojen ikkunan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:216
+msgid "Manage Themes..."
+msgstr "Ylläpidä teemoja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:217
+msgid "Allows you to manage the themes"
+msgstr "Sallii sinun ylläpitää teemoja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:227
+msgid "Customize Toolbars..."
+msgstr "Hienosäädä työkalupalkkeja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:228
+msgid "Shows a window that allows editing script toolbars"
+msgstr "Näyttää ikkunan joka sallii skripti-työkalupalkkien muokkauksen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:239
+msgid "Join Channels..."
+msgstr "Liity kanaville..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:240
+msgid "Shows a dialog that allows you joing channels"
+msgstr "Näyttää ikkunan joka sallii sinun liittyä kanaville"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:251
+msgid "Edit Actions..."
+msgstr "Muokkaa toimintoja..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:252
+msgid "Shows a window that allows editing actions"
+msgstr "Näyttää ikkunan joka sallii toimintojen muokkauksen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:262
+msgid "Edit Aliases..."
+msgstr "Muokkaa aliaksia..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:263
+msgid "Shows a window that allows editing aliases"
+msgstr "Näyttää ikkunan joka sallii aliasten muokkauksen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:273
+msgid "Edit Events..."
+msgstr "Muokkaa tapahtumia..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:274
+msgid "Shows a window that allows editing script events"
+msgstr "Näyttää ikkunan joka sallii skriptitapahtumien muokkauksen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:284
+msgid "Edit Popups..."
+msgstr "Muokkaa ponnahdusvalikkoja..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:285
+msgid "Shows a window that allows editing popup menus"
+msgstr "Näyttää ikkunan joka sallii ponnahdusvalikkojen muokkauksen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:295
+msgid "Edit Raw Events..."
+msgstr "Muokkaa raakoja tapahtumia..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:296
+msgid "Shows a window that allows editing raw scripting events"
+msgstr "Näyttää ikkunan joka sallii raakojen skripti-eventtien muokkauksen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:306
+msgid "New Script Tester"
+msgstr "Uusi skripti-testaaja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:307
+msgid "Creates an embedded editor for long scripts"
+msgstr "Luo sisällytettävän editorin suurille skripteill"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:317
+msgid "Execute Script..."
+msgstr "Suorita skripti..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:318
+msgid "Allows executing a KVS script from file"
+msgstr "Sallii KVS-skriptin suorituksen tiedostosta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:328
+msgid "Help Index"
+msgstr "Apu-indeksi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:329
+msgid "Shows the documentation index"
+msgstr "Näyttää dokumentaatio-indeksi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:340
+msgid "Allows subscribing to the KVIrc mailing list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:350
+msgid "KVIrc WWW"
+msgstr "KVIrc WWW"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:351
+msgid "Opens the KVIrc homepage"
+msgstr "Avaa KVIrcin kotisivun"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:361
+msgid "KVIrc Russian WWW"
+msgstr "KVIrc venäläinen WWW"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:362
+msgid "Opens the KVIrc homepage in russian"
+msgstr "Avaa KVIrcin venäläisen kotisivun"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:372
+msgid "Acquire Screenshot"
+msgstr "Nappaa kuvakaappaus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:373
+msgid "Acquires a Screenshot of the KVIrc main window"
+msgstr "Ottaa kuvakaappauksen KVIrcin pääikkunasta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:385
+msgid "Cascade windows"
+msgstr "Pinoa ikkunat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:386
+msgid "Arranges the MDI windows in a maximized-cascade fashion"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:397
+msgid "Tile windows"
+msgstr "Järjestä ikkunat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:398
+msgid "Tiles the MDI windows with the currently selected tile method"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:409
+msgid "Minimize all windows"
+msgstr "Pienennä kaikki ikkunat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:410
+msgid "Minimized all the currently visible MDI windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:421
+msgid "New IRC Context"
+msgstr "Uusi IRC-konteksti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:422
+msgid "Creates a new IRC context console"
+msgstr "Luo uuden IRC-kontekstikonsolin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:433
+msgid "Quit KVIrc"
+msgstr "Lopeta KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:434
+msgid "Quits KVIrc closing all the current connections"
+msgstr "Lopettaa KVIrcin, sulkee kaikki nykyiset yhteydet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:448
+msgid "IRC Context Display"
+msgstr "IRC-kontekstinäyttö"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:449
+msgid "Shows a small display with IRC context informations"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:517
+msgid "Acts as a separator for other items: performs no action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:548
+msgid "Connect/Disconnect"
+msgstr "Yhdistä/Katkaise"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:549
+msgid "Allows you to connect to a server or to terminate the current connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:622
+msgid "Connect"
+msgstr "Yhdistä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:623
+msgid "Abort Connection"
+msgstr "Keskeytä yhteys"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:780
+msgid "Join Channel"
+msgstr "Liity kanavalle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:781
+msgid "Shows a popup menu that allows quickly selecting a channel to join"
+msgstr "Näyttää ponnahdusvalikon joka sallii nopeasti valitsemaan kanavan liityttäväksi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:797
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:841
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:853
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:886
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:897
+msgid "Other..."
+msgstr "Muu..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:824
+msgid "Change Nickname"
+msgstr "Vaihda tunnusta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:825
+msgid "Shows a popup menu that allows quickly changing the nickname"
+msgstr "Näyttää ponnahdusvalikon joka sallii nopeasti tunnuksen vaihdon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:873
+msgid "Connect To"
+msgstr "Yhdistä palvelimeen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:874
+msgid "Shows a popup menu that allows quickly connecting to a server"
+msgstr "Näyttää ponnahdusvalikon joka sallii nopean yhdistämisen palvelimeen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:919
+msgid "User Mode"
+msgstr "Käyttäjämoodi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:920
+msgid "Shows a popup menu that allows quickly changing user modes"
+msgstr "Näyttää ponnahdusvalikon joka sallii käyttäjämoodien nopean vaihdon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:937
+msgid "Wallops (+w)"
+msgstr "Wallopit (+w)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:939
+msgid "Server Notices (+s)"
+msgstr "Palvelinhuomatukset (+s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:941
+msgid "Invisible (+i)"
+msgstr "Näkymätön (+i)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:987
+msgid "Away/Back"
+msgstr "Pois/Takaisin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:988
+msgid "Allows entering and leaving away state"
+msgstr "Sallii siirtymisen ja poistumisen poissaolotilaan/tilasta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1055
+msgid "Enter Away Mode"
+msgstr "Siirry poissaolotilaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1056
+msgid "Leave Away Mode"
+msgstr "Poistu poissaolotilasta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1122
+msgid "Irc Tools"
+msgstr "IRC -työkalut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1123
+msgid "Shows a popup menu with some IRC Tools"
+msgstr "Näyttää ponnahdusvalikon IRC -työkaluilla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1158
+msgid "Irc Actions"
+msgstr "IRC -toiminnot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1159
+msgid "Shows a popup menu with some IRC Actions"
+msgstr "Näyttää ponnahdusvalikon IRC -toiminnoilla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:412
+msgid "KVIrc KVS Script"
+msgstr "KVIrc KVS-skripti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:174
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:420
+msgid "Run KVS Script"
+msgstr "Aja KVS-skripti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:284
+msgid "URL:IRC Protocol"
+msgstr "URL:IRC -protokolla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:383
+msgid "Open with KVIrc"
+msgstr "Avaa KVIrcillä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:436
+msgid "KVIrc Configuration File"
+msgstr "KVIrcin konfiguraatiotiedosto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:453
+msgid "KVIrc Theme Package"
+msgstr "KVIrc teemapaketti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:461
+msgid "Install Theme Package"
+msgstr "Asenna teemapaketti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:478
+msgid "KVIrc Addon Package"
+msgstr "KVIrc lisäyspaketti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:486
+msgid "Install Package"
+msgstr "Asenna paketti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:749
+#, c-format
+msgid ""
+"Ops...it looks like I can't load modules on this sytem.\n"
+"I have been looking for the %s library but I haven't been able to load it\n"
+"due to the following error: \"%s\"\n"
+"Aborting."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:762
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_begin\" function.\n"
+"Aborting!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:776
+msgid "Setup aborted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:801
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_finish\" function.\n"
+"Trying to continue anyway..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:186
+msgid "%Q is on IRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:248
+msgid "%Q has left IRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:368
+msgid "Notify list: No users to check for, quitting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:414
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (15 sec)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:428
+msgid "Notify list: Notify list empty, quitting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:455
+#, c-format
+msgid ""
+"Notify list: ISON delay (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:491
+msgid "Notify list: Checking for: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:535
+msgid ""
+"Notify list: Hey! You've used ISON behind my back? (I might be confused "
+"now...)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:682
+msgid "registration mask changed, or nickname is being used by someone else"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:686
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (registration mask does not match, or nickname is being used "
+"by someone else)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:691
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? "
+"(restarting)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:698
+msgid ""
+"Notify list: Unexpected inconsistency, expected \r!n\r%Q\r in the registered "
+"user DB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:712
+#, c-format
+msgid ""
+"Notify list: USERHOST delay (%d sec) is too short, resetting to something "
+"more reasonable (5 sec)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:726
+msgid "Notify list: Unexpected inconsistency, userhost list is empty!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:761
+msgid "Notify list: Checking userhost for: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:831
+msgid ""
+"Notify list: Hey! You've used USERHOST behind my back? (I might be confused "
+"now...)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:836
+#, c-format
+msgid "Notify list: Broken USERHOST reply from the server? (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:860
+msgid ""
+"Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST reply "
+"was received, will recheck in the next loop"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:931
+msgid "Starting notify list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:936
+msgid "No users in the notify list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:958
+msgid "Notify list: Checking for:%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1013
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1139
+msgid "Notify list: Adding watch entries for%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1171
+msgid "watch entry listing requested by user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1175
+msgid "possible watch list desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1185
+msgid "registration mask changed or desync with the watch service"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1190
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (watch: registration mask does not match, or nickname is "
+"being used by someone else)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1197
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? (watch: "
+"restarting)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1207
+msgid "watch entry added by user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1245
+msgid "removed from watch list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1248
+msgid "Notify list: Stopped watching for \r!n\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1258
+msgid "watch"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1264
+msgid "Notify list: \r!n\r%Q\r is offline (watch)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1267
+msgid "unmatched watch list entry"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:80
+msgid "commandline::userfriendly"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:94
+msgid "commandline::kvs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:127
+msgid "You are not connected to a server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_iconmanager.cpp:372
+msgid "Icon Table"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:190
+msgid "No "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:196
+msgid "This module has no version informations: refusing to load it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:204
+msgid "This module was compiled for a different KVIrc version and can't be loaded"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:232
+msgid "Failed to execute the init routine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:261
+#, c-format
+msgid "Loaded module '%s' (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:306
+#, c-format
+msgid "Unloaded module '%s'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:45
+msgid "This window has no associated irc context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:50
+#, c-format
+msgid "No such irc context (%d)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:147
+msgid "Global idle timer must be started before using $my.globalIdle function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lag/libkvilag.cpp:68
+#msgid "Lag meter was not enabled"
+#msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:103
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:215
+msgid "Window %Q not found"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:108
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:220
+msgid "Missing window id after the 'w' switch"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:121
+msgid "Can't log to file %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:123
+msgid "This window has no logging capabilities"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:275
+msgid "Window with id '%Q' not found, returning empty string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:598
+msgid "Sound file '%Q' not found"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:604
+msgid "Unable to play sound '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:615
+msgid "Sorry , I can't find a sound system to use on this machine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:617
+#, c-format
+msgid "Sound system detected to: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:141
+msgid "Show at startup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:154
+msgid "Did you know..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:220
+msgid "<b>Can't find any tip... :(</b>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1534
+msgid "%Q algorytm is not supported"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1556
+msgid "KVIrc is compiled without OpenSSL support. $str.digest function disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2020
+msgid "Invalid argument for ?d escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2024
+msgid "Missing argument for ?d escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2056
+msgid "Invalid argument for ?u escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2060
+msgid "Missing argument for ?u escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2087
+msgid "Invalid argument for ?x escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2091
+msgid "Missing argument for ?x escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2118
+msgid "Invalid argument for ?X escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2122
+msgid "Missing argument for ?X escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2179
+msgid "Invalid argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2183
+msgid "Missing argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:84
+msgid "Show URL List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:85
+msgid "Shows the URL list window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:121
+msgid "&Configure"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:123
+msgid "Clo&se"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:124
+msgid "&Module"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:127
+msgid "&Load"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:128
+msgid "&Save"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:129
+msgid "&Clear"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:130
+msgid "&List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:133
+msgid "URL"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:134
+msgid "Window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:135
+msgid "Count"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:136
+msgid "Timestamp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:465
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:113
+msgid "Warning - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:213
+msgid "Select an URL."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:265
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:115
+msgid "&Remove"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:266
+msgid "&Find Text"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:277
+msgid "&Say to Window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:291
+msgid "Window not found."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:346
+msgid "URL Module Configuration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:353
+msgid "Save URL list on module unload"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:357
+msgid "Save columns width on URL list close"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1182
+msgid "&Cancel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:373
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:432
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1328
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:458
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1181
+msgid "&OK"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:420
+msgid "Enable URL ban list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:432
+msgid "&Add Ban"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:437
+msgid "&Remove Selected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:453
+msgid "URL Ban List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:465
+msgid "Select a ban."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:790
+msgid "View URL list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:49
+msgid "Can't find the window with id '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:53
+msgid "The specified window (%Q) is not a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:78
+msgid "Destinaion file exists: no copy made"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:83
+msgid "Failed to copy from %Q to %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:84
+msgid "Either the source doesn't exist or the destination can not be created"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:203
+msgid "Failed to write to file %Q: the destination couldn't be opened"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:244
+msgid "Destination file exists: file not renamed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:247
+msgid "Failed to rename %Q to %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:281
+msgid "Failed to make the directory %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:322
+msgid "Failed to remove the file %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:365
+msgid "Failed to remove the directory %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:482
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:628
+msgid "The specified directory does not exist '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:730
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:824
+msgid "Can't open the file \"%Q\" for reading"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:746
+msgid "Read error for file %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:754
+msgid ""
+"Read error for file %Q (have been unable to read the requested size in 1000 "
+"retries)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:920
+msgid "Can't open the file \"%Q\" for writing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/index.cpp:584
+msgid "Untitled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+msgid "Indexing help files"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:87
+msgid "Index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:99
+msgid "Refresh index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:211
+msgid "Full Text Search"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:203
+msgid "Using a wildcard within phrases is not allowed."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:212
+msgid "The closing quotation mark is missing."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:312
+msgid "Help Browser"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:201
+msgid "Request List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:207
+msgid "Stop list download"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:211
+msgid ""
+"<center><b>/LIST command parameters:</b><br>Many servers accept special "
+"parameters that allow you to filter the returned entries.<br>Commonly, "
+"masked channel names (*kvirc*) are accepted as parameters, as well as "
+"strings like <b>c&lt;n</b> or <b>c&gt;n</b> where <b>n</b> is the minimum or "
+"maximum of users on the channel.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:220
+msgid "Users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:221
+msgid "Topic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:262
+msgid "Sent list request, waiting for reply..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:265
+msgid "Cannot request list: No active connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:388
+msgid "Stopping the list download..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:276
+msgid "Cannot stop list download, no active connection."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:125
+#, c-format
+msgid "Connected to %s (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:293
+msgid "List cannot be requested: Not connected to a server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:316
+#, c-format
+msgid "Channel List [IRC Context %u]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:319
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel List</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:326
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel list</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:342
+msgid "You cannot export an empty list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:349
+msgid "Channel list for %Q - %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:352
+msgid "Channel list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:354
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:381
+msgid "Choose filename"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:382
+msgid "Configuration files (*.kvc)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:423
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:398
+msgid "Reset"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:434
+msgid "Channels list download finished"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:471
+msgid "Processing list: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/libkvilist.cpp:63
+msgid "List window alread open for this IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:70
+msgid "Terminal"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:73
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:77
+#, c-format
+msgid "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:59
+msgid "Terminal emulator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:63
+msgid "Close this window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:91
+msgid "Can't create the terminal emulation part"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:96
+msgid "Can't retrieve the terminal emulation factory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:95
+msgid "KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:98
+msgid "Context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:155
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:100
+msgid "Away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:102
+msgid "&Configure KVIrc..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:104
+msgid "&About KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:109
+msgid "Un&dock"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:168
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:112
+msgid "Ctrl+Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:142
+msgid "Nothing is happening..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:285
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:143
+msgid "Just idling..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:144
+msgid "Dum de dum de dum..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:145
+msgid "Hey man... do something!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:146
+msgid "Umpf!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:147
+msgid "Silence speaking"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:148
+msgid "Are ya here?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:149
+msgid "The world has stopped?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:150
+msgid "Everything is all right"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:151
+msgid "idle()"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:152
+msgid "It's so cold here..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:295
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:153
+msgid "Do not disturb... watching TV"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:154
+msgid "Just vegetating"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:155
+msgid "Hey... are ya sure that your network is up?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:298
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:156
+msgid "Seems like the world has stopped spinning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:299
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:157
+msgid "This silence is freaking me out!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:300
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:158
+msgid "Mieeeeeowww!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:301
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:159
+msgid "idle idle idle idle!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:253
+msgid "Hide Window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:253
+msgid "Show Window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:428
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:259
+msgid "Away on all"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:262
+msgid "Back on all"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:450
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:281
+msgid "Back on %1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:453
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:284
+msgid "Away on %1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1238
+msgid "Alias"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1217
+msgid "No item selected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:232
+msgid "Rename"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:236
+msgid "Edit the alias or namespace name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+msgid "Add Alias"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:429
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Add Namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:440
+msgid "Remove Selected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:449
+msgid "Export Selected..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:455
+msgid "Export Selected in singles files..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:462
+msgid "Export All..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:470
+msgid "Find In Aliases..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:476
+msgid "Collapse All Namespaces"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:508
+msgid "Find In Aliases"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:509
+msgid ""
+"Please enter the text to be searched for. The matching aliases will be "
+"highlighted."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "Alias Export"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+msgid "There is not selection!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:615
+msgid "The file \"%Q\" exists. Do you want to replace it ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+msgid "Replace file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+msgid "Yes to All"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "There exported file would be empty: cowardly refusing to write it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:786
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:411
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1133
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:398
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:745
+msgid "Choose a Filename - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Write Failed - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+msgid "Unable to write to the alias file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:793
+msgid "Do you really want to remove the alias \"%Q\" ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:795
+msgid "Do you really want to remove the namespace \"%Q\" ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:797
+msgid "Please note that all the children items will be deleted too."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+msgid "Remove item"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:875
+msgid "Missing Alias Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:876
+msgid "You must specify a valid name for the alias"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:877
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:890
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:904
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:915
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:946
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:959
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:973
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1128
+msgid "Ok, Let me try again..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:888
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:902
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:913
+msgid "Bad Alias Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:944
+msgid "Missing Namespace Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:945
+msgid "You must specify a valid name for the namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:957
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:971
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:982
+msgid "Bad Namespace Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:958
+msgid ""
+"Namespace names can contain only letters, digits, underscores and '::' "
+"namespace separators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:972
+msgid "Stray ':' character in namespace name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:983
+msgid "Found an empty namespace in namespace name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+msgid "Please enter the name for the new alias"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Please enter the name for the new namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+msgid "Rename Alias"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+msgid "Please enter the new name for the alias"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Rename Namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Please enter the new name for the namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1126
+msgid "Alias already exists"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1139
+msgid "This name is already in use. Please choose another one."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1138
+msgid "Namespace already exists"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1140
+msgid "Ok, let me try again..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1227
+msgid "Namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1332
+msgid "Alias Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:62
+msgid "Join Channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:183
+msgid "Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:86
+msgid "Password"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1469
+msgid "&Join"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:108
+msgid "Show this window after connecting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:163
+msgid "Recent Channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:182
+msgid "Registered Channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:133
+msgid "Choose the file to share"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:178
+msgid "No such channel/netmask entry in the database"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:198
+msgid "Registered channel list:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:208
+#, c-format
+msgid "Channel: %c%s@%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:213
+#, c-format
+msgid " Property: %s=%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:220
+#, c-format
+msgid "Total %d channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:86
+msgid "Property Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:101
+msgid "Property"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:102
+msgid "Value"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:111
+msgid "&New"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:215
+msgid "Mask Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:219
+msgid ""
+"Insert a mask for this user.<br>It can contain the wildcard characters '*' "
+"and '?'."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:230
+msgid ""
+"<center>This the <b>nickname</b> that will match this user, default value is "
+"the registered name.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:241
+msgid ""
+"<center>This the <b>username</b> that will match this user. <b>*</b> will "
+"match any username.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:252
+msgid ""
+"<center>This the <b>hostname</b> that will match this user. <b>*</b> will "
+"match any hostname.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:333
+msgid "Registered User Entry"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:145
+msgid "Name:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:345
+msgid "Comment:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:355
+msgid "Masks:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:216
+msgid "&Add..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:377
+msgid "&Edit"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:385
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:389
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:414
+msgid "Identity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:393
+msgid "Notify when user is online"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:396
+msgid "Notify nicknames:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:401
+msgid "<center>You can enter a space separated list of nicknames.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:426
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1160
+msgid "Avatar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:433
+msgid "Use custom color in userlist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:441
+msgid "All Properties..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:448
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:231
+msgid "Properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:458
+msgid "Enable ignore for this user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:460
+msgid "Ignore features"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:465
+msgid "Ignore query-messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:468
+msgid "Ignore channel-messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:471
+msgid "Ignore notice-messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:474
+msgid "Ignore ctcp-messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:477
+msgid "Ignore invites"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:480
+msgid "Ignore DCCs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:486
+msgid "Ignore"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:94
+msgid "Notify disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:96
+msgid "Notify as: "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:105
+msgid "No comment set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:107
+msgid "Comment: "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:176
+msgid "Registered Users - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:317
+msgid "Flags"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:192
+msgid ""
+"<center>This is the list of registered users. KVIrc can automatically "
+"recognize and associate properties to them.<br>Use the buttons on the right "
+"to add, edit and remove entries. The \"notify\" column allows you to quickly "
+"add users to the notify list. Notify list fine-tuning can be performed by "
+"editing the entry properties.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:208
+msgid "Add (Wizard)..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:211
+msgid "Add a registered user by means of a user-friendly wizard."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:219
+msgid "Open the edit dialog to create a new user entry."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:223
+msgid "&Add Group..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:226
+msgid "Adds a new group"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:234
+msgid "Remove the currently selected entries."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:239
+msgid "&Edit..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:243
+msgid "Edit the first selected entry."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:250
+msgid "Export To..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:254
+msgid ""
+"Export the selected entries to a file.<br>All the data associated with the "
+"selected registered users will be exported.<br>You (or anyone else) can "
+"later import the entries by using the \"Import\" button."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:259
+msgid "Import From..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:262
+msgid ""
+"Import entries from a file exported earlier by the \"export\" function of "
+"this dialog."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:399
+msgid "Group name:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:442
+msgid "Move to group"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:483
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:486
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:487
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:491
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:690
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_useridentity.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1809
+msgid "Default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:674
+msgid "No entries selected."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:687
+msgid "Can't open file %Q for writing."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:772
+msgid "Can't export the registered users database: Write error."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:793
+#, c-format
+msgid "Can't open file %s for reading."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:804
+#, c-format
+msgid "The file %s doesn't appear to be a valid registered users database."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:811
+#, c-format
+msgid "The file %s contains an invalid registered users database version."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:892
+msgid "Can't import the registered users database: Read error."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:78
+msgid "User Registration Wizard - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:89
+msgid ""
+"<p>Welcome to the user registration wizard.<br>This process allows you to "
+"add an IRC user to the database and set properties for that user. KVIrc will "
+"be (hopefully) able to recognize the user, add him to the notify list, and "
+"display the associated avatar.<br><br>First of all, you must insert an "
+"<b>entry name or real name</b> for the user you're going to register. The "
+"name will be used to identify the database entry and has no specific "
+"requirements, it can be a given name, nickname, or just some text to remind "
+"you of the real person.<br>Examples: \"George W Bush\", \"Dubya\".\n"
+"</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:97
+msgid "Step 1: Entry Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:112
+msgid ""
+"<p>A registered user is identified by one or more <b>IRC masks</b>.<br>A "
+"mask must be in the following form:<br><b>nickname!username@hostname</"
+"b><br>and can contain wildcard characters '*' and '?'. Be careful in "
+"choosing the masks, as they are the only way to verify the identity of a "
+"registered user.<br><br>You can enter at most two masks here, if you wish to "
+"add more masks, use the \"<b>Edit</b>\" button in the Registered Users "
+"dialog. You must enter at least one mask.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:170
+msgid "Step 2: Mask Selection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:182
+msgid ""
+"<p>If you want to store an avatar image for this user, you can set it here. "
+"KVIrc will show the avatar in the userlist next to the user's nickname."
+"<br>An avatar can be in any supported image format (PNG is recommended). "
+"Keep in mind that KVIrc stores avatars in memory and has to resize them to "
+"fit in the userlist, thus it's better to use small, low-resolution images.</"
+"p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:190
+msgid "Store an avatar for this user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:195
+msgid "Step 3: Avatar Selection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:206
+msgid ""
+"<p>If you want to be notified when this user is online or goes offline, you "
+"must specify the list of nicknames that KVIrc will look for.<br><br>You can "
+"enter at most two nicknames here, if you wish to add more nicknames, use the "
+"\"<b>Edit</b>\" button in the Registered Users dialog.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:215
+msgid "Add this user to the notify list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:342
+msgid "Nickname:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:225
+msgid "Nickname 2:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:239
+msgid "Step 4: Notify List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:251
+msgid ""
+"<p>That's it. The user registration has been completed.<br><br>Click "
+"\"<b>Finish</b>\" to close this dialog.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:254
+msgid "Registration Complete"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:695
+msgid "No name specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:209
+msgid "User already registered: found exact name match"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:222
+msgid "Mask %Q is already used to identify user %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:275
+msgid "User not found (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:403
+msgid "No mask specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:524
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:708
+msgid "User %Q not found"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:355
+msgid "Mask %Q already used to identify user %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:410
+msgid "Mask %Q not found"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:701
+msgid "No property specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:808
+msgid "Registered users database dump:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:819
+msgid " User: %c%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:823
+msgid " Warning: this user has no registration masks"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:827
+msgid " Mask: %Q!%Q@%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:838
+msgid " Property: %Q=%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:841
+msgid " No properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:847
+#, c-format
+msgid "Total: %d matching users (of %d in the database)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:197
+msgid "Manage Script-Based Addons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1150
+msgid "Configure"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:225
+msgid "Show Help"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:231
+msgid "Uninstall"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:243
+msgid "Install Addon..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:247
+msgid "More Addons..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:333
+msgid "Do you really want to uninstall the addon \"%1\" ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+msgid "Confirm addon uninstallation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:354
+msgid "Please select the addon installation file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:144
+msgid "%cAddon id %Q, version %Q%c"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:145
+msgid "Name: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:67
+msgid "Description: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:152
+#, c-format
+msgid "Total: %d addons installed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:192
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:571
+msgid "Uninstalling existing addon version %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:384
+msgid "The addon \"%1\" does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:238
+msgid "The addon \"%1\" has no configure callback set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:285
+msgid "The addon \"%1\" has no help callback set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:527
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:377
+msgid "Internal error: call a head-shrinker"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:536
+msgid "The specified version \"%Q\" is not a valid version string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:542
+msgid "The specified KVIrc version \"%Q\" is not a valid version string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:548
+msgid ""
+"This KVIrc executable is too old to run this addon (minimum version required "
+"is %Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:553
+msgid "Attempting to register addon \"%Q\" with version %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:565
+msgid ""
+"The script addon \"%Q\" already exists with version %Q which is higher than %"
+"Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:579
+msgid "Script registration failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:584
+msgid "Script succesfully registered"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:102
+#, c-format
+msgid "%s (%s) (%s:%u)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:104
+#, c-format
+msgid "%s (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:107
+#, c-format
+msgid "%s (%s:%u)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:109
+#, c-format
+msgid "%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:112
+#, c-format
+msgid "[IDENT]: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:119
+msgid "Shutting down identd service (spontaneous action)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:124
+msgid "Shutting down identd service (requesetd action)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:225
+msgid "Can't start the ident service : socket() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:231
+msgid "Can't start the ident service : async setting failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:237
+msgid "Can't enable the ident service : can't setup the listen address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:243
+msgid "Can't start the ident service : bind() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:249
+msgid "Can't start the ident service : listen() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:263
+msgid "Can't start the ident service on IpV6 : socket() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:269
+msgid "Can't start the ident service on IpV6 : async setting failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:277
+msgid "Can't enable the ident service on IpV6 : can't setup the listen address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:285
+msgid "Can't start the ident service on IpV6 : bind() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:294
+msgid "Can't start the ident service on IpV6 : listen() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:310
+msgid "Starting identd service (IpV4/V6 on separate namespaces)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:313
+msgid "Starting identd service (IpV4/V6 in IpV6 namespace)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:318
+msgid "Starting identd service (IpV4)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:322
+msgid "Service startup (IpV4)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:412
+msgid "Identd accepting connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:435
+msgid "Identd socket error : dropping connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:440
+msgid "Identd connection closed by remote host"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:461
+msgid "Identd processing request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:476
+msgid "Empty request (EOT ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:487
+msgid "Dropping connection (request too long)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:500
+msgid "Timed out while waiting for the request : dropping connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/libkvilinks.cpp:74
+msgid "Links window alread open for this IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:57
+msgid "Request Links"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:70
+msgid "Link"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:71
+msgid "Hops"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:72
+msgid "Description"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:90
+msgid "(None)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:112
+msgid "Sent links request, waiting for reply..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:115
+msgid "Cannot request links: No active connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:128
+msgid "Links cannot be requested: Not connected to a server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:153
+msgid "Links for %Q [IRC Context %u]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:164
+msgid ""
+"<nobr><font color=\"%s\"><b>Links for %Q</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:194
+msgid "Received end of links."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:235
+#, c-format
+msgid "Broken link: Missing parent (%s) for %s (%d hops): %s (used /LINKS <mask> ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:238
+#, c-format
+msgid "%s: Parent link %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:242
+msgid "Warning: No root link was sent by the server, the stats may be invalid."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:278
+msgid "%c%cLinks for %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts listed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts in the network"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:282
+#, c-format
+msgid "Wildcard servers (hubs?): %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:283
+msgid "Direct links: %d (~%d.%d %)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:284
+msgid "Close links (1 <= hops <= 3): %d (~%d.%d %)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:285
+msgid "Mid-range links (4 <= hops <= 6): %d (~%d.%d %)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:286
+msgid "Distant links (7 <= hops): %d (~%d.%d %)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:287
+#, c-format
+msgid "Broken (unknown) links: %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:288
+#, c-format
+msgid "Maximum links per host: %d [%s]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:289
+#, c-format
+msgid "Total links: %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:290
+#, c-format
+msgid "Maximum hops: %d [%s]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:291
+#, c-format
+msgid "Average hops: ~%d.%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:294
+msgid "Incomplete LINKS result, no stats available"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1593
+msgid "You're not connected to a server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:404
+#, c-format
+msgid "Processing link: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:419
+msgid "Broken message syntax, can't extract hops number, assuming 0"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:77
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:86
+msgid "< &Back"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:87
+msgid "&Next >"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:79
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:282
+msgid "Finish"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:164
+msgid ""
+"<p><h2>Welcome :)</h2>This is your first time running this version of KVIrc."
+"<br>This wizard will guide you through the few steps required to complete "
+"the setup.<br><br>If you had a previous version of KVIrc installed, no "
+"worries. You will have a chance to preserve the old configuration.</"
+"p><p>Click \"<b>Next</b>\" to proceed.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:151
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:176
+msgid "Welcome to KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:187
+msgid ""
+"<p>All of the files in this distribution are covered by the GPL. In human "
+"terms this can be read as follows:<br><ul><li><b>KVIrc is free</b>, use it, "
+"have fun! <b>:)</b></li><li>If you use <b>any</b> part of KVIrc in your own "
+"project, you <b>must</b> release that project under the same license.</li></"
+"ul></p><p>The \"legalese\" version of the license is shown in the box below."
+"</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:178
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:203
+msgid ""
+"Oops... can't find the license file.\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:211
+msgid "Dreaded License Agreement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:190
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:215
+msgid "KVIrc Setup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:200
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:224
+msgid ""
+"<p>Please choose a folder for KVIrc to store its settings and other data, "
+"and another for downloaded files. Make sure that you have permission to "
+"write to both folders.<br><br>The suggested locations are fine in most "
+"cases, so if you don't know what is this about, just click \"<b>Next</b>\"."
+"<br><br>If you had a previous version of KVIrc installed, you can choose the "
+"existing directory for the settings, and your configuration will be "
+"preserved.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:234
+msgid "Application Folders"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:214
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:238
+msgid "Store configuration in folder"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:215
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:239
+msgid "Use settings folder from previous installation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:227
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:251
+msgid "Use new settings folder"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:255
+msgid "Settings folder:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:281
+msgid "Download files to folder:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:304
+msgid "All settings in shared program folder (portable)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:283
+msgid "Restore from backup archive"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:300
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:325
+msgid ""
+"Please choose a Nickname.<br><br>Your nickname is the name that other IRC "
+"users will know you by. It can't contain spaces or punctuation. Some IRC "
+"networks will shorten your nickname if it is more than 32 characters long."
+"<br><br>If in doubt, just enter the first nick that comes to mind. You will "
+"be able to change it later in the Identity properties, or with the /NICK "
+"command."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:314
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:348
+msgid "Basic Properties"
+msgstr "Perusasetukset"
+
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:322
+msgid "Real name:"
+msgstr "Oikea nimi:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:353
+msgid "Profile"
+msgstr "Profiili"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:336
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:361
+msgid "Age:"
+msgstr "Ikä:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:341
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:367
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:392
+msgid "Unspecified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:380
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:405
+msgid "Location:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:408
+msgid "Languages:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:386
+msgid "Other:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:466
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:491
+msgid ""
+"<p>Here you can choose how much KVIrc will integrate with your system."
+"<br><br>The default settings are fine for most users so if you're in doubt "
+"just click \"<b>Next</b>\" and go to the next screen.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:476
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:501
+msgid "Desktop Integration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:504
+msgid "Make KVIrc default IRC client"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:483
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:508
+msgid "Create desktop shortcut"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:493
+msgid "Now you should specify an IRC server, to be connected to it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:496
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:523
+msgid "Choose a server to connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:498
+msgid "Choose from built-in server list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:500
+msgid "Specify server manually"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:504
+msgid "Server:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:505
+msgid "Port:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:508
+msgid "Open irc:// or irc6:// URL"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:510
+msgid "URL:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:513
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:513
+msgid "Import server list from mIRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:517
+msgid "Use server config"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:519
+msgid "Config file:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:608
+msgid ""
+"Setup found existing mIRC installation. It will try to import some of mIRC "
+"settings and serverlist. If you don't want to do it, unselect import in "
+"setup pages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:669
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:727
+msgid "Choose an Old Configuration Folder - KVIrc Setup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:678
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:736
+msgid "Do not overwrite folder? - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:679
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:737
+msgid ""
+"A folder %1 seems to be not a valid KVIrc settings folder.Do you want to use "
+"it anyway?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:695
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:753
+msgid "Choose a Configuration Folder - KVIrc Setup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:706
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:764
+msgid "Choose a Download Folder - KVIrc Setup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:875
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:933
+msgid "Abort Setup - KVIrc Setup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:876
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:934
+msgid ""
+"You have chosen to abort the setup.<br>KVIrc cannot run until you complete "
+"this procedure.<br><br>Do you really wish to abort?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:907
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:938
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:965
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:996
+#, c-format
+msgid ""
+"Cannot create directory %s.\n"
+"You may not have write permission for that path. Please go back and choose "
+"another directory."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+msgid "Package saved succesfully"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:80
+msgid "Event"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1046
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:92
+msgid "&Export All To..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:90
+msgid "Edit the event handler name."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:154
+msgid "&Enable Handler"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:158
+msgid "&Disable Handler"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:162
+msgid "Re&move Handler"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:164
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:166
+msgid "&Export Handler To..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:171
+msgid "&New Handler"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:190
+msgid "unnamed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:215
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:250
+msgid "default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:314
+msgid "none"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:318
+#, c-format
+msgid ""
+"\n"
+"\n"
+"\tEvent:\n"
+"\t\t%s\n"
+"\n"
+"\tParameters:\n"
+"%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+msgid "Unable to write to the event file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+msgid "Unable to write to the events file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:486
+msgid "Event Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:77
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:213
+msgid "Item"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:80
+msgid "Submenu"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:83
+msgid "External Menu"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:136
+msgid "Label"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:93
+msgid "### Epilogue ###"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:94
+msgid "Epilogue"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:97
+msgid "### Prologue ###"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:98
+msgid "Prologue"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:198
+msgid "Popup name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:202
+msgid "Test"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:230
+msgid "Text:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:236
+msgid ""
+"<center><b>Visible text</b><br>May contain identifiers that will be "
+"evaluated at popup call time.<br>For labels, this text can contain also "
+"limited HTML tags.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:239
+msgid "Condition:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:245
+msgid ""
+"<center><b>Boolean condition</b><br>Will be evaluated at popup call time in "
+"order to decide if this entry has to be shown.<br>An empty condition "
+"evaluates to true.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:248
+msgid "Icon:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:254
+msgid ""
+"<center><b>Icon identifier</b><br>May be an internal icon ID, an absolute "
+"path or a relative path.<br>Portable scripts should never use absolute paths."
+"</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:257
+msgid "External menu:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:263
+msgid ""
+"<center><b>External menu name</b><br>This allows to nest externally defined "
+"popup menus. The popup menu with the specified name will be looked up at "
+"menu setup time.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:266
+msgid "Item Id:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:273
+msgid ""
+"<center><b>Item id</b><br>This will allow you to use delpopupitem later.</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:386
+msgid "New Separator Below"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:388
+msgid "New Separator Above"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:391
+msgid "New Separator Inside"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:396
+msgid "New Label Below"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:398
+msgid "New Label Above"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:401
+msgid "New Label Inside"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:406
+msgid "New Item Below"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:408
+msgid "New Item Above"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:411
+msgid "New Item Inside"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:416
+msgid "New Menu Below"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:418
+msgid "New Menu Above"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:421
+msgid "New Menu Inside"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:426
+msgid "New External Menu Below"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:428
+msgid "New External Menu Above"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:431
+msgid "New External Menu Inside"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:451
+msgid "&Paste Below"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:456
+msgid "Paste Above"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:461
+msgid "Paste Inside"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:473
+msgid "New Menu Prologue"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:481
+msgid "New Menu Epilogue"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1042
+msgid "Popup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1048
+msgid "&Export selected To..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1099
+msgid "&New Popup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1105
+msgid "Re&move Popup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1112
+msgid "&Export Popup To..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+msgid "Unable to write to the popup file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1382
+msgid "Popup Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:62
+msgid "%cCore action: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:64
+msgid "%cUser action: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:65
+msgid "Label: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:66
+msgid "Category: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:112
+msgid "The action \"%1\" is disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:259
+msgid "The action \"%1\" does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:255
+msgid "The action \"%1\" is a core action and cannot be destroyed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:392
+msgid "The switch -l requires -c"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:409
+msgid "The switch -s requires -w with a combination of flags 'c','x' and 'q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:420
+msgid "The action \"%1\" is already defined as core action and cannot be overridden"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:116
+msgid "Ops.. internal error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:125
+msgid "Manage File &Transfers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:67
+msgid "Choose Avatar - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:72
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:283
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:358
+msgid "Internal error: I'm not in the user database ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:245
+msgid "Can't set the current avatar to '%Q': failed to start the http transfer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:249
+msgid "Can't set the current avatar to '%Q': can't load the image"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:351
+msgid "Invalid timeout specified, using default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:389
+msgid "Can't add a file offer for file %Q (huh ? file not readable ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:396
+msgid "Added %d secs file offer for file %Q (%Q) and receiver %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:403
+msgid "Notifying avatar '%Q' to %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:55
+msgid "&Execute"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:59
+msgid "Params:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:107
+msgid "Script Tester"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:220
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:413
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:544
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:588
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:629
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:673
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:723
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:766
+msgid "The config file with id '%Q' is not open"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:539
+msgid ""
+"The config file '%Q' has been changed but is opened as read-only: changes "
+"will be lost"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:584
+msgid "The config file with id '%Q' is read only"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:178
+msgid "Colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:255
+msgid "Context sensitive help"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1167
+msgid "&Replace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:268
+msgid "Find & Repalce"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1148
+msgid "Word to Find"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1156
+msgid "Replace with"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1172
+msgid "&Replace in all Aliases"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1176
+msgid "&Findnext"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1181
+msgid "&Replace(WIP)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:227
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:547
+msgid "The specified toolbar doesn't exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:424
+msgid "No action name/index specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:441
+msgid "The action parameter didn't evaluate to an index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:455
+msgid "The toolbar does not contain the specified item"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:513
+msgid "The action \"%Q\" doesn't exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:31
+msgid "Torrent Client"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:361
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:364
+msgid "Standalone Servers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:112
+msgid ""
+"%Q doesn't look like a servers.ini file.\n"
+"Import failed."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:122
+msgid "Choose a servers.ini file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:146
+msgid "Remote mIRC servers.ini Import Wizard"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:154
+msgid ""
+"<center><b>Welcome!</b><br><br>This wizard will guide you in the process of "
+"downloading a list of IRC servers. Please click \"<b>Next</b>\" to begin the "
+"operation.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:161
+msgid ""
+"<center>Here you can modify the URL that the list will be downloaded from. "
+"In most cases the default URL is acceptable.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:169
+msgid "URL Selection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:173
+msgid "Please wait while the list is being downloaded"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:179
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:195
+msgid "List Download"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:229
+msgid "Failed to start the server list transfer :("
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:245
+msgid "File downloaded: processing ..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:255
+msgid "%1 servers imported succesfully"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:257
+msgid "No servers imported"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:326
+msgid "Import from servers.ini"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:333
+msgid "Import from http://www.mirc.co.uk/servers.ini"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lineedit.cpp:372
+msgid "Unknown echo mode %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:203
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:359
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:172
+msgid "Widget parameter is not an object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:230
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:250
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:449
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:485
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:177
+msgid "Widget parameter is not a valid object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:95
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:263
+msgid "Widget object required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:148
+msgid "Unknown dock area '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:321
+msgid "Unknown alignment: '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:373
+msgid "Unknown style: '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:84
+msgid "the toolbar cannot be a parent-widget!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:93
+msgid "The parent-widget isn't a MainWindow."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:999
+msgid "The array passed as parameter must contain at least 4 elements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1012
+msgid "One of the geometry array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1017
+msgid "One of the geometry array parameters didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:503
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1032
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1500
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1044
+msgid "The first parameter didn't evaluate to an array nor an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1419
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1476
+msgid "The array passed as parameter must contain at least 2 elements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:451
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:486
+msgid "One of the array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:456
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:491
+msgid "One of the array parameters didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:478
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:804
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:993
+msgid "The array passed as parameter must contain at least 3 elements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:551
+msgid "Unknown orientation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:789
+msgid "Pixmap or Widget parameter is not an object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:730
+msgid "Widget or Pixmap required "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:852
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:862
+msgid "Invalid mode '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:886
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1701
+msgid "Pixmap parameter is not an object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:891
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1706
+msgid "Pixmap object required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1027
+msgid "$setGeometry() requires either an array as first parameter or four integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:813
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1002
+msgid "One of the colors array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:818
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1007
+msgid "One of the colors array parameters didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1020
+msgid "A string of 6 digits hex is required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:842
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1031
+msgid "Not an hex digits"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1144
+msgid ""
+"$setForegroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1219
+msgid ""
+"$setBackgroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1426
+msgid "One of the move array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1431
+msgid "One of the move array parameters didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1438
+msgid "$move() requires either an array as first parameter or two integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1483
+msgid "One of the resize array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1488
+msgid "One of the resize array parameters didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1495
+msgid "$resize() requires either an array as first parameter or two integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1528
+msgid "Invalid parameters"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1560
+msgid "Unknown widget flag '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1592
+msgid "Unknown style '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1622
+msgid "No Layout associated to the widget "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:117
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:152
+msgid "Can't add a non-widget object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1650
+msgid "Parent must be a widget object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1715
+msgid "Null mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1740
+msgid "Unknown widget attribute '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:382
+msgid "No such line number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:500
+msgid "Unknown word wrap '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:519
+msgid "Unknown wrap policy'%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:850
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1039
+msgid "$setColor requires either an array as first parameter or three integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:975
+msgid "Unknown text format '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1071
+msgid " I can't find the specified file '%Q'."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1078
+msgid " I cannot read the file %Q'."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1113
+msgid "Unknown alignment '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1131
+msgid "Unknown auto formatting mode '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1149
+msgid "Unknown vertical alignment '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:264
+msgid "pix '%Q' doesn't exists"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:276
+msgid "Can't add a non - popupmenu object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:302
+msgid "Doesn't a widget object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:182
+msgid "I can't find the specified file %Q."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:222
+msgid "Destination parameter is not an object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:228
+msgid "Destination must be a pixmap object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:238
+msgid "Area dimensions are out of destination size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:253
+msgid "Pixmap dimensions are out of destination size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:261
+msgid "Offset width area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:266
+msgid "Offset height area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:121
+msgid "The widget must be a child of this hbox"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:191
+msgid "No string parameter given - using empty string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:194
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:214
+#, c-format
+msgid "Item index [%d] is too big - defaulting to $count() - 1 [%d]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:333
+msgid "Invalid insertion Policy %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:136
+msgid "Unknown mode "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:149
+msgid "Unknown segment style "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_process.cpp:221
+msgid "Process could not be starded."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:279
+msgid "Invalid selection mode '%Q' assuming single"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:316
+msgid "Unknown text position '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:256
+msgid "Unknown tickmark '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:271
+msgid "Unknown orientation '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:500
+msgid "No socket object specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:506
+msgid "Invalid socket object specified (it doesn't inherit from socket)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:518
+msgid "There is no connection to accept!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:591
+#, c-format
+msgid "Value %d for port is out of range (values allowed are from 0 to 65535"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:596
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:87
+msgid "Another connection in progress"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:648
+msgid "No IPV6 support in this executable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:670
+msgid "Invalid IP address specified ('%Q')"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:89
+msgid "Socket creation failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:706
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:727
+msgid "Invalid socket address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:714
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:735
+msgid "Bind failure"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:745
+msgid "Listen failure"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:812
+msgid "unknown"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:876
+msgid "Invalid ip address "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:882
+msgid "Invalid ip address (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:906
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1013
+msgid "Failed to create the socket"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:918
+msgid "Failed to setup a nonblocking socket"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:939
+msgid "Connect failure: "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:967
+msgid "Connect attempt timed out"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:993
+msgid "Can't start the DNS thread"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:1143
+msgid "Too much unprocessed incoming data (you've left this socket unmanaged ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:149
+msgid "Error in KVS class implementation: processing aborted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:154
+msgid "Processing aborted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:160
+#, c-format
+msgid "Error near line %d, column %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:162
+#, c-format
+msgid "Warning near line %d, column %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:313
+msgid "XML support not available in the Qt library"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:491
+msgid "Not a widget object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:308
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:497
+msgid "Can't find the tab "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:522
+msgid "Unknown position 'Q%'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:123
+msgid "The widget must be a child of this vbox"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:276
+msgid "Not Enough Parameters"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:142
+msgid "The listviewitem cannot be parentless"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:152
+msgid ""
+"The parent of the listviewitem must be either another listviewitem or a "
+"listview"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:403
+msgid "Pixmap object or image Id required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:413
+msgid ""
+"Error occured: the suitable file '%Q' is not of the correct format or it is "
+"not a valid icon number."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:151
+msgid ""
+"The window identifier preceeded by WinId must be the first object in the "
+"search path"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:167
+msgid "Failed to find one of the wrap path widgets (%Q::%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:176
+msgid "Failed to find the widget to wrap"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:119
+msgid "The parent of a layout must be a widget!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:269
+msgid "Invalid resize mode defaulting to Auto"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:324
+msgid "Unknown alignment"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:373
+msgid "Unknown orientation: "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listview.cpp:320
+msgid "Invalid selection mode '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tbrowser.cpp:99
+msgid "I can't find the specified file '%Q'."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:116
+msgid "Can't add a null object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:123
+msgid ""
+"Invalid object handle passed as parameter (the object is no longer "
+"existing ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:129
+msgid "Object in invalid state"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:135
+msgid "Can't set a non-widget object to be the main widget of a dock window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:141
+msgid "The added widget is not a child of this dock window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:227
+msgid "Invalid dock area specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:181
+msgid "Class '%Q' is not definited"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:257
+msgid "Inexisting target object for objects.connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:262
+msgid "Inexisting source object for objects.connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:444
+msgid "The class '%Q' does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:404
+msgid "Object does not exists"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:557
+msgid "Inexisting target object for objects.disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:562
+msgid "Inexisting source object for objects.disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:608
+msgid "Source is not an object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:614
+msgid "Destination is not an object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:625
+msgid "Widget, Image or Pixmap required "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:635
+msgid "Widget or Pixmap required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:714
+msgid "One o more of background, foreground or destination aren't objects"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:720
+msgid "Pixmap objects required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:743
+msgid "Values for background are out of image size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:748
+msgid "Values for foreground are out of image size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:226
+msgid "Empty filename string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:271
+msgid "No such open mode: '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:312
+msgid "File is not open!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:348
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:406
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:434
+msgid "File is not open !"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:369
+msgid "Argument to long, using only first char"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:339
+msgid "Write error occured !"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:352
+msgid "Read error occured !"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:371
+msgid "An error occured !"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:387
+msgid "Missing both encrypt and decrypt key: at least one is needed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:168
+msgid "Error 0: Success ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:169
+msgid "Unsupported crypt mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:170
+msgid "Unsupported direction"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:171
+msgid "Unsupported key length"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:172
+msgid "Bad key data"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:173
+msgid "Engine not initialized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:174
+msgid "Invalid direction for this engine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:175
+msgid "Corrupted message data or invalid decrypt key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:52
+msgid "Unknown error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:184
+msgid "Ops...encrypt cipher not initialized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:420
+msgid "Data buffer too long"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:221
+msgid "Ops...decrypt cipher not initialized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:277
+msgid "The message is not a hexadecimal string: this is not my stuff"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:671
+msgid "The message is not a base64 string: this is not my stuff"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:676
+msgid "The message doesn't seem to be encoded with CBC Mircryption"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:712
+#, c-format
+msgid ""
+"Cryptographic engine based on the\n"
+"Advanced Encryption Standard (AES)\n"
+"algorithm called Rijndael.\n"
+"The text is first encrypted with rijndael\n"
+"and then converted to %s notation.\n"
+"The keys used are %d bit long and will be padded\n"
+"with zeros if you provide shorter ones.\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"See the rijndael module documentation\n"
+"for more info on the algorithm used.\n"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:739
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:749
+msgid "hexadecimal"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:759
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:779
+msgid "base64"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:790
+msgid ""
+"Popular cryptographic engine based on the\n"
+"old Blowfish encryption algorithm.\n"
+"The text is first encrypted with Blowfish \n"
+"and then converted to base64 notation.\n"
+"The keys used have variable length and\n"
+"are specified as character strings.\n"
+"You can specify keys long up to 56 bytes (448 bits).\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"This engine works in ECB mode by default:\n"
+"if you want to use CBC mode you must prefix\n"
+"your key(s) with \"cbc:\".\n"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:61
+msgid "Drop here the icons from the toolbars to remove them"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:128
+msgid "ToolBar Properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:144
+msgid "Icon"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:160
+msgid "Id"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:217
+msgid "Please choose the icon for the ToolBar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "Invalid ToolBar Label"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "The ToolBar Label can't be empty!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:256
+msgid "Duplicate ToolBar Id"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:257
+msgid ""
+"The specified ToolBar Id already exists.<br>Would you like KVIrc to assign "
+"it automatically (so it doesn't collide with any other toolbar) or you "
+"prefer to do it manually ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Manually"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Automatically"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:278
+msgid "Hide Advanced"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:287
+msgid "Customize Toolbars"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:296
+msgid "New ToolBar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:300
+msgid "Delete ToolBar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:304
+msgid "Edit ToolBar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:312
+msgid "Export ToolBar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:373
+msgid "Confirm ToolBar Deletion"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:374
+msgid "Do you really want to delete toolbar \"%1\" ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:397
+msgid "ToolBar Export"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:398
+msgid "Do you want the associated actions to be exported with the toolbar ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+msgid "Unable to write to the toolbar file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:465
+msgid "Please specify the properties for the toolbar \"%1\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:491
+msgid "Please specify the properties for the new toolbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:493
+msgid "My ToolBar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:63
+msgid "Window with ID '%Q' not found"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:67
+msgid "The specified window (%Q) is not a channel/query/DCC chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:108
+msgid "File not found or empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:114
+msgid "I can't open that file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:122
+msgid "Could not paste file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:219
+msgid "The specified window (%Q) is not a channel/query/dcc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:274
+msgid "Slow-paste ID:%d Window:%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:240
+msgid "Plugin not found. Please check the plugin-name and path."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:247
+msgid "Error while loading plugin."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:311
+msgid "This plugin does not export the desired function."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:327
+msgid "The plugin has no function to free memory. This can result in Memory Leaks!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:209
+#, c-format
+msgid "No environment variable found, please don't use the %% in the request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:482
+msgid "Invalid DCOP parameter syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:495
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:516
+msgid "The specified parameter is not an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:521
+#, c-format
+msgid "Unsupported DCOP parameter type %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:534
+msgid "DCOP call failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:599
+msgid "DCOP calls are available only when KDE support is compiled in"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1083
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1174
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1379
+#, c-format
+msgid "The window with id '%s' does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:823
+msgid "Window type or 'all' expected as first parameter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:910
+msgid "Invalid IRC context id '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1017
+msgid "The specified IRC context is not valid: creating a context free window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1091
+msgid "The specified window is not of type \"userwnd\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1180
+msgid "Window doesn't have input widget"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1334
+msgid "The encrypt key wasn't a valid hexadecimal string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1348
+msgid "The decrypt key wasn't a valid hexadecimal string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1385
+msgid "Both -n and -m switchess specified, -n takes precedence"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1395
+msgid "No encrypt key specified: can't allocate engine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1417
+msgid "Unknown engine error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1420
+msgid "Failed to initialize the specified crypt engine: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1424
+msgid "The crypt engine \"%Q\" does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1429
+msgid "This executable has been compiled without crypt support"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:62
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:103
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:142
+msgid "Current window is not a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:87
+msgid "Raw Event"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:97
+msgid "Edit the raw event handler name."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:179
+msgid "&Add Raw Event..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "New Raw Event"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "Enter the numeric code of the message (0-999)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+msgid "Unable to write to the raw event file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Unable to write to the raw events file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:512
+msgid "Raw Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:219
+msgid "A really lame text transformation engine :D"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:229
+msgid "A really lame text transformation engine: Light Version."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:82
+#, c-format
+msgid "Socket Spy [IRC Context %u]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:92
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Socket Spy</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:112
+msgid "Socket open"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:117
+msgid "Socket closed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:149
+msgid "Internal unique name for the action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:151
+msgid "Label:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:155
+msgid ""
+"Visible name for this action.<br>This string will be displayed to the user "
+"so it is a good idea to use $tr() here"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:166
+msgid "Action code"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:168
+msgid "Code"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:174
+msgid "Category:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:178
+msgid "Choose the category that best fits for this action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:180
+msgid "Description:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:184
+msgid ""
+"Visible short description for this action.<br>This string will be displayed "
+"to the user so it is a good idea to use $tr() here"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:186
+msgid "Small Icon:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:194
+msgid ""
+"The small icon associated to this action.<br>It will appear at least in the "
+"popup menus when this action is inserted.<br>It should be 16x16 pixels."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:200
+msgid "Big Icon:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:209
+msgid ""
+"The big icon associated to this action.<br>It will appear at least in the "
+"toolbar buttons when this action is inserted.<br>It should be 32x32 pixels."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:215
+msgid "Key Sequence:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:219
+msgid ""
+"Optional keyboard sequence that will activate this action.<br>The sequence "
+"should be expressed as a string of up to four key codes separated by commas "
+"eventually combined with the modifiers \"Ctrl\",\"Shift\",\"Alt\" and \"Meta"
+"\".<br>Examples of such sequences are \"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl+X,"
+"Ctrl+C\" ..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:240
+msgid "Needs IRC Context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:242
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window belongs to an irc context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:250
+msgid "Needs IRC Connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:252
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window has an active IRC connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:260
+msgid "Enable at Login"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:261
+msgid ""
+"Check this option if this action should be enabled also during the login "
+"operations (so when the logical IRC connection hasn't been estabilished yet)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:265
+msgid "Enable Only in Specified Windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:267
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is of a specified type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:271
+msgid "Enable in Console Windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:272
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a console"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:277
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:299
+msgid "Only If There Are Selected Users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:278
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:300
+msgid ""
+"This will enable the action only if there are selected users in the active "
+"window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:282
+msgid "Enable in Channel Windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:283
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:293
+msgid "Enable in Query Windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:294
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:304
+msgid "Enable in DCC Chat Windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:305
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a dcc chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:627
+msgid "Action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:680
+msgid "New Action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:683
+msgid "Delete Actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:686
+msgid "Export Actions..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Unable to write to the actions file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:823
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:824
+msgid "My Action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:825
+msgid "Put here a short description of your action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:925
+msgid "Action Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:938
+msgid "Apply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:63
+msgid "Outgoing traffic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:67
+msgid "Incoming traffic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_crypt.cpp:160
+msgid "Invalid crypt engine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:296
+msgid "Directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:315
+msgid "Socket"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:332
+msgid "Fifo"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:349
+msgid "Block device"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:366
+msgid "Char device"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:429
+msgid "Octet stream (unknown)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_osinfo.cpp:413
+msgid "Unknown "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:181
+msgid "The specified network has no server entries"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:239
+msgid ""
+"The server specification seems to be in the net:<string> but the network "
+"couln't be found in the database"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:261
+msgid ""
+"The server specification seems to be in the id:<string> form but the "
+"identifier coulnd't be found in the database"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:71
+msgid "Aborted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:96
+msgid "No request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:141
+msgid "No filename specified for the \"StoreToFile\" processing type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:160
+msgid "Invalid URL: Missing hostname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:167
+msgid "Unsupported protocol %1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:189
+msgid "Unable to start the DNS lookup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:194
+#, c-format
+msgid "Looking up host %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:210
+msgid "Host %s resolved to %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:246
+msgid "Unable to start the request slave thread"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:251
+msgid "Contacting host %Q on port %u"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:271
+msgid "Connection established, sending request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:322
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:51
+msgid "Success"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:429
+msgid "Failed to rename the existing file, please rename manually and retry"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:447
+msgid "Can't open file \"%Q\" for writing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:497
+#, c-format
+msgid "Invalid HTTP response: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:503
+#, c-format
+msgid "Received HTTP response: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:628
+msgid "Stream exceeding maximum length"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:661
+msgid "Header too long: exceeded 4096 bytes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:710
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:852
+msgid "Stream exceeded expected length"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:798
+msgid "Protocol error: invalid chunk size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:818
+msgid "Chunk header too long: exceeded 4096 bytes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:987
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1193
+msgid "Operation timed out"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1003
+msgid "Unexpected SSL error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1016
+msgid "Failed to enter non blocking mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1021
+msgid "Invalid target address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1056
+msgid "Failed to initialize the SSL context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1058
+msgid "Failed to initialize the SSL connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1075
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:99
+msgid "Remote end has closed the connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1087
+msgid "Unrecoverable SSL error during handshake"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1272
+msgid "Operation timed out (while selecting for read)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1382
+msgid "This KVIrc executable has no SSL support"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1142
+msgid "Back"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:268
+msgid "Next"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:168
+msgid "%1 bytes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:172
+msgid "%1 KB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:176
+msgid "%1 MB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:181
+msgid "%1 GB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:185
+msgid "%1 TB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:620
+msgid "Internal error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:54
+msgid "Unknown command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:55
+msgid "Missing closing brace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:56
+msgid "Unexpected end of command in string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:57
+msgid "Unexpected end of command in dictionary key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:58
+msgid "Switch dash without switch letter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:59
+msgid "Unknown function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:60
+msgid "Unexpected end of command in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:61
+msgid "Unexpected end of command in function parameters"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:62
+msgid "Missing variable name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:63
+msgid "Variable or identifier expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:64
+msgid "Left operand is not a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:65
+msgid "Multiple operations not supported for numeric operators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:67
+msgid "Modulo by zero"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:68
+msgid "Right operand is not a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:69
+msgid "Unterminated expression (missing ')' ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:70
+msgid "Unterminated subexpression (Parenthesis mismatch)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:71
+msgid "Unexpected character"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:73
+msgid "No host to resolve"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:74
+msgid "(DNS Internal) Unsupported address family"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:75
+msgid "Valid name but the host has no IP address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:76
+msgid "Unrecoverable nameserver error (crashed ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:77
+msgid "Dns temporaneous fault (try again)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:78
+msgid "(DNS Internal) Bad flags"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:79
+msgid "(DNS Internal) Out of memory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:80
+msgid "(DNS Internal) Service not supported"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:81
+msgid "Unknown node (host not found)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:82
+msgid "(DNS Internal) Unsupported socket type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:83
+msgid "Dns query failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:84
+msgid "This KVIrc executable has no IPV6 support"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:85
+msgid "Host not found"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:86
+msgid "(DNS Internal) IPC failure (slave data corrupted)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:88
+msgid "Invalid IP address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:90
+msgid "Failed to put the socket in non blocking mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:91
+msgid "Bad file descriptor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:92
+msgid "Out of address space"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:93
+msgid "Connection refused"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:94
+msgid "Kernel networking panic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:95
+msgid "Connection timed out"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:96
+msgid "Network is unreachable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:97
+msgid "Broken pipe"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:98
+msgid "Invalid proxy address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:100
+msgid "Invalid irc context id"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:101
+msgid "Error in loading module"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:102
+msgid "No such module command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:103
+msgid "No such module function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:104
+msgid "Left operand is not a dictionary reference"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:105
+msgid "Right operand is not a dictionary reference"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:106
+msgid "Missing object class name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:107
+msgid "No such object class"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:108
+msgid "No such object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:109
+msgid "No such object function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:110
+msgid "Invalid left operand"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:111
+msgid "Not enough parameters"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:112
+msgid "Integer parameter expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:113
+msgid "Invalid parameter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:114
+msgid "No such file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:115
+msgid "Open parenthesis expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:116
+msgid "Open brace expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:117
+msgid "Can't kill a builtin class"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:118
+msgid "The SOCKSV4 protocol lacks IpV6 support"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:119
+msgid "Unrecognized proxy reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:120
+msgid "Proxy response: auth failed: access denied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:121
+msgid "Proxy response: No acceptable auth method: request rejected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:122
+msgid "Proxy response: request failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:123
+msgid "Proxy response: ident failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:124
+msgid "Proxy response: ident not matching"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:125
+msgid "Proxy response: general SOCKS failure"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:126
+msgid "Proxy response: connection not allowed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:127
+msgid "Proxy response: network unreachable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:128
+msgid "Proxy response: host unreachable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:129
+msgid "Proxy response: connection refused"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:130
+msgid "Proxy response: TTL expired"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:131
+msgid "Proxy response: command not supported"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:132
+msgid "Proxy response: address type not supported"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:133
+msgid "Proxy response: invalid address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:134
+msgid "Invalid port number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:135
+msgid "Socket not connected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:136
+msgid "Insufficient resources to complete the operation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:137
+msgid "Can't setup a listening socket : bind failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:138
+msgid "Can't resolve the localhost name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:139
+msgid "Unsupported image format"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:140
+msgid "Can't open file for appending"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:542
+msgid "Can't open file for writing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:142
+msgid "File I/O error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:143
+msgid "Acknowledge error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:982
+msgid "Can't open file for reading"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:145
+msgid "Can't send a zero-size file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:146
+msgid "Missing popup name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:147
+msgid "'item', 'popup', 'label' or 'separator' keyword expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:148
+msgid "Self modification not allowed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:149
+msgid "UNUSED"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:150
+msgid "Feature not available"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:151
+msgid "Unexpected characters in array index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:152
+msgid "Unexpected end in expression"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:153
+msgid "Unexpected end in array index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:154
+msgid "Connection thru HTTP proxy failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:155
+msgid "Case , match , regexp , default or break keyword expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:156
+msgid "Access denied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:157
+msgid "Address already in use"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:158
+msgid "Can't assign the requested address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:159
+msgid "Connection reset by peer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:160
+msgid "Host unreachable (no route to host)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:161
+msgid "Variable expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:162
+msgid "Invalid array index: positive integer expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:163
+msgid "listen() call failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:164
+msgid "This executable has been compiled without SSL support"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:165
+msgid "Secure Socket Layer error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:166
+msgid "Slash (/) character expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:167
+msgid "Unknown string manipulation operation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:168
+msgid "Operation aborted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:169
+msgid "Unexpected token"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:170
+msgid "Scope object already defined (unexpected @)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:171
+msgid "There is no $this pointer in this scope (unexpected @)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:140
+msgid "Operation cancelled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:170
+msgid "File write error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:176
+msgid "File read error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:324
+msgid "Packaging file %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:779
+msgid "Failed to open a source file for reading"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:817
+msgid "Compression library initialization error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:394
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:828
+msgid "Compression library error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:465
+msgid "Compression library internal error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:485
+msgid "Error while compressing a file stream"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:526
+msgid "Creating package..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:527
+msgid "Writing package header"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:571
+msgid "Writing informational fields"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:597
+msgid "Writing package data"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:659
+msgid "The file specified is not a valid KVIrc package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:668
+msgid ""
+"The package has an invalid version number, it might have been created by a "
+"newer KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:714
+msgid "Invalid info field: the package is probably corrupt"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:745
+msgid ""
+"The package contains compressed data but this executable does not support "
+"compression"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:771
+msgid "Failed to create the target directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:784
+msgid "Unpacking file %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:916
+msgid "Error in compressed file stream"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:990
+msgid "Reading package..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:991
+msgid "Reading package header"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:998
+msgid "Reading package data"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:1017
+msgid "Invalid data field: the package is probably corrupt"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1122
+msgid "Select color"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1123
+msgid "&Basic colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1124
+msgid "&Custom colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1125
+msgid "&Red"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1126
+msgid "&Green"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1127
+msgid "Bl&ue"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1128
+msgid "&Define Custom Colors >>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1129
+msgid "&Add to Custom Colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1131
+msgid "Select Font"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1132
+msgid "&Font"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1133
+msgid "Font st&yle"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1134
+msgid "&Size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1135
+msgid "Sample"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1136
+msgid "Effects"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1137
+msgid "Stri&keout"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1138
+msgid "&Underline"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1139
+msgid "Scr&ipt"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1141
+msgid "Parent Directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1143
+msgid "Forward"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1144
+msgid "Reload"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1145
+msgid "New Directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1146
+msgid "Bookmarks"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1147
+msgid "Add Bookmark"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1148
+msgid "&Edit Bookmarks"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1149
+msgid "New Bookmark Folder..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1151
+msgid "Sorting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1152
+msgid "By Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1153
+msgid "By Date"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1154
+msgid "By Size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1155
+msgid "Reverse"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1156
+msgid "Directories First"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1157
+msgid "Case Insensitive"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1158
+msgid "Short View"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1159
+msgid "Detailed View"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1160
+msgid "Show Hidden Files"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1161
+msgid "Show Quick Access Navigation Panel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1162
+msgid "Show Preview"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1163
+msgid "Separate Directories"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1164
+msgid "Often used directories"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1165
+msgid "Desktop"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1166
+msgid "Home Directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1167
+msgid "Floppy"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1168
+msgid "Temporary Files"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1169
+msgid "Network"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1170
+msgid "New Directory..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1171
+msgid "Delete"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1172
+msgid "Thumbnail Previews"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1173
+msgid "Large Icons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1174
+msgid "Small Icons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1175
+msgid "Properties..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1176
+msgid "&Automatic Preview"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1177
+msgid "&Preview"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1178
+msgid "&Location:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1179
+msgid "&Filter:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1180
+msgid "All Files"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:104
+msgid "- d -- h -- m -- s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:111
+#, c-format
+msgid "%u h %u m %u s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:113
+#, c-format
+msgid "%u h %u%u m %u%u s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:118
+#, c-format
+msgid "%u m %u s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:120
+#, c-format
+msgid "%u m %u%u s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:122
+#, c-format
+msgid "%u s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:127
+#, c-format
+msgid "%u d %u h %u m %u s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:129
+#, c-format
+msgid "%u d %u%u h %u%u m %u%u s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:108
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+msgid "Usage"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:108
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+msgid "message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:109
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:99
+msgid "-m: send a message instead of a notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:100
+msgid "-w: send notice to all channel owners"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:101
+msgid "-a: send notice to all channel admins"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:102
+msgid "-o: send notice to all channel ops"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:113
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:103
+msgid "-h: send notice to all channel halfops"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:104
+msgid "-v: send notice to all channel voices"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:105
+msgid "-q: quiet mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:138
+msgid "Sending wallop to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:179
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:192
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:232
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:317
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:342
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:367
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:442
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:529
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:571
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:665
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:314
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:410
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:493
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:535
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:593
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:653
+msgid "Usage:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:218
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:659
+msgid "You must be connected to a server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:221
+msgid "Lag is"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:221
+msgid "milliseconds"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:223
+msgid "reason"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:298
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:323
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:348
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:373
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:398
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:423
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:448
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:473
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:272
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:416
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:440
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:599
+msgid "This is not a channel window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:626
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:581
+msgid "Unsupported type: $0"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:653
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:604
+msgid "Channel Owner"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:606
+msgid "Channel Administrator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:608
+msgid "Channel Operator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:610
+msgid "Half Operator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:612
+msgid "Voice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:614
+msgid "User Operator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:616
+msgid "Normal User"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:641
+msgid "You must use DNS in an IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:664
+msgid "No such user: $0"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:734
+msgid "Options"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:759
+msgid "Window operations"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:791
+msgid "Stop Highlighting (Local)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:796
+msgid "Start Highlighting (Local)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:834
+msgid "Always Highlight"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:803
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:808
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:813
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:818
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:823
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:828
+msgid "Highlight as"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:839
+msgid "Stop Highlighting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:857
+msgid "is being ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:859
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:863
+msgid "is not being ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:869
+msgid "Enable Ignore"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:874
+msgid "Ignore as..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:876
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:883
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:890
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:897
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:904
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:911
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:918
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:925
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:932
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:939
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:946
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:953
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:960
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:967
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:974
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:981
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:988
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:995
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1002
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1009
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1016
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1023
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1030
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1037
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1044
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1051
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1058
+msgid "Ignore as"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1066
+msgid "Unignore"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1085
+msgid "is registered as"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1088
+msgid "is in the notify list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1091
+msgid "has a default avatar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1094
+msgid "is not registered"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1100
+msgid "Register"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1105
+msgid "Quick Registration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1117
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1122
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1132
+msgid "Register as"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1138
+msgid "Edit Registration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1143
+msgid "Unregister"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1150
+msgid "Add to Notify"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1155
+msgid "Remove from Notify"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1162
+msgid "Choose"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1164
+msgid "Choose Avatar Image File"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1173
+msgid "Set as Default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1178
+msgid "Clear Default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1189
+msgid "Copy To Clipboard"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1254
+msgid "Ban"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1258
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1884
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1934
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:2099
+msgid "Multiple Users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1264
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1398
+msgid "&Ban"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1939
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:2104
+msgid "idle time"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1604
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1946
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:2111
+msgid "&Information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1315
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1965
+msgid "DNS for"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1970
+msgid "Mask for"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1326
+msgid "&Control"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1330
+msgid "O&wner"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1335
+msgid "&Deowner"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1340
+msgid "&Administrator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1345
+msgid "&Deadministrator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1350
+msgid "&Op"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1355
+msgid "&Deop"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1360
+msgid "&Halfop"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1365
+msgid "&Dehalfop"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1370
+msgid "&Voice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1375
+msgid "D&evoice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1382
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1389
+msgid "&Kick"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1387
+msgid "K&ick"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1413
+msgid "With..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1389
+msgid "Kick Reason"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1389
+msgid "Enter a kick reason"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1413
+msgid "Kick/Ban"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1415
+msgid "Kick/Ban Reason"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1415
+msgid "Enter a kick/ban reason"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1415
+msgid "&Kick/Ban"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1425
+msgid "Configure ban mask..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1433
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:2138
+msgid "&Query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1986
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:2151
+msgid "&Registration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1448
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:2153
+msgid "&Highlight"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1450
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:2155
+msgid "Ig&nore"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1568
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1897
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1988
+msgid "Notify Avatar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1474
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1547
+msgid "&Part"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1492
+msgid "Copy Channel Address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1533
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1595
+msgid "Channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1535
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1599
+msgid "&Join Channels..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1542
+msgid "&Hop"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1575
+msgid "Copy Channel URL to Clipboard"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1628
+msgid "l (Connections)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1633
+msgid "m (Command Usage)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1638
+msgid "o (Operators)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1643
+msgid "t (Connection stats ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1648
+msgid "u (Uptime)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1653
+msgid "y (y-Lines)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1658
+msgid "z (Debug Stats?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1756
+msgid "Chat with"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1761
+msgid "Reverse Chat with"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1766
+msgid "Secure Chat with"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1773
+msgid "Send to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1778
+msgid "Secure send to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1783
+msgid "Reverse Send to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1788
+msgid "Secure Reverse Send to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1795
+msgid "TDCC Send to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1800
+msgid "TDCC Reverse Send to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1807
+msgid "Voice Chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:1984
+msgid "&Ignore"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:2026
+msgid "Logging to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:2028
+msgid "Flush Log File"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:2035
+msgid "Stop Logging"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:2040
+msgid "Not Logging"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:2042
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:2047
+msgid "Log To Default File"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:2047
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:2060
+msgid "Include Existing Buffer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:2052
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:2060
+msgid "Log To..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:2054
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:2062
+msgid "Choose Log Filename"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:2157
+msgid "Notify avatar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:2264
+msgid "The default script has been successfully installed."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:2265
+msgid "To connect to a server, type /server <server name>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:2267
+msgid "Happy ircing :)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMENAME@"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMEDESCRIPTION@"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:50
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$copyfiles must be a "
+"source directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:56
+#, c-format
+msgid ""
+"[Installer] The second argument to \\%installer->\\$copyfiles must be a file "
+"name or file regexp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:62
+#, c-format
+msgid ""
+"[Installer] The third argument to \\%installer->\\$copyfiles must be a "
+"destination directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:94
+msgid "[Installer] Failed to create directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:104
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$includefiles must be a "
+"source directory"
+msgstr ""
+
diff --git a/po/kvirc/kvirc_fr.po b/po/kvirc/kvirc_fr.po
new file mode 100644
index 00000000..4a514488
--- /dev/null
+++ b/po/kvirc/kvirc_fr.po
@@ -0,0 +1,12662 @@
+# translation of kvirc_fr.po to Français
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Ahinu <[email protected]>, 2004, 2005.
+# Ahinu <[email protected]>, 2005, 2006.
+# Ahinu <[email protected]>, 2006.
+# Elephantman <[email protected]>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: kvirc_fr\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2008-03-07 09:56+0100\n"
+"Last-Translator: Elephantman <[email protected]>\n"
+"Language-Team: Français <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:696
+msgid "&Cascade Windows"
+msgstr "Fenêtres en &Cascade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:697
+msgid "Cascade &Maximized"
+msgstr "Fenêtres &Maximisées"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:700
+msgid "&Tile Windows"
+msgstr "Mosaïq&ue de Fenêtres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:703
+msgid "&Auto Tile"
+msgstr "Mosaïque &Automatique"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:708
+msgid "Anodine's Full Grid"
+msgstr "Grille complète d'Anodine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:710
+msgid "Pragma's Horizontal 4-Grid"
+msgstr "Grille 4 Horizontale de Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:712
+msgid "Pragma's Vertical 4-Grid"
+msgstr "Grille 4 Verticale de Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:714
+msgid "Pragma's Horizontal 6-Grid"
+msgstr "Grille 6 Horizontale de Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:716
+msgid "Pragma's Vertical 6-Grid"
+msgstr "Grille 4 Verticale de Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:718
+msgid "Pragma's Horizontal 9-Grid"
+msgstr "Grille 9 Horizontale de Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:720
+msgid "Pragma's Vertical 9-Grid"
+msgstr "Grille 9 Verticale de Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:726
+msgid "Tile Met&hod"
+msgstr "Mét&hode de Mosaïque"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:729
+msgid "Expand &Vertically"
+msgstr "Étendre &Verticalement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:730
+msgid "Expand &Horizontally"
+msgstr "Étendre &Horizontalement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:733
+msgid "Mi&nimize All"
+msgstr "Tout Ré&duire"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_actiondrawer.cpp:64
+msgid "Script"
+msgstr "Script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:581
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:634
+msgid "Unknown"
+msgstr "Inconnu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:128
+msgid "No topic message has been received from the server yet"
+msgstr "Aucun sujet n'a encore été reçu en provenance du serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:495
+msgid "Channel topic:"
+msgstr "Sujet du salon :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:513
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:201
+msgid "Set by"
+msgstr "Mis par"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:519
+msgid "Set on"
+msgstr "Défini le"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:525
+msgid "Double-click to edit..."
+msgstr "Double-cliquez pour éditer..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:530
+msgid "No topic is set"
+msgstr "Aucun sujet défini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:533
+msgid "Double-click to set..."
+msgstr "Double-cliquez pour définir..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:587
+msgid "History"
+msgstr "Historique"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:596
+msgid "Commit Changes"
+msgstr "Sauvegarder les Modifications"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:602
+msgid "Discard Changes"
+msgstr "Abandonner les Modifications"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:627
+msgid "Copy to clipboard"
+msgstr "Copier dans le Presse-papiers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:988
+msgid "There are active connections, are you sure you wish to "
+msgstr "Il y a des connexion actives, êtes-vous sûr de vouloir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:989
+msgid "quit KVIrc?"
+msgstr "quitter KVIrc ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:587
+msgid "Confirmation - KVIrc"
+msgstr "Confirmation - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:557
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:590
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&Yes"
+msgstr "&Oui"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:556
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:589
+msgid "&Always"
+msgstr "&Toujours"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:591
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&No"
+msgstr "&Non"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1090
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1106
+msgid "Show %1"
+msgstr "Montrer %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1134
+msgid "Customize..."
+msgstr "Personnaliser..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:149
+#, c-format
+msgid "The file %s already exists.<br>Do you wish to overwrite it?"
+msgstr "Le fichier %s existe déjà.<br>Voulez-vous l'écraser ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:150
+msgid "File Exists - KVIrc"
+msgstr "Le Fichier Existe - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:132
+msgid "Channel mode"
+msgstr "Modes du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:162
+msgid "Split View"
+msgstr "Scinder la Vue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:207
+msgid "User List"
+msgstr "Liste des Utilisateurs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:167
+msgid "Ban Editor"
+msgstr "Éditeur de Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:172
+msgid "Ban Exception Editor"
+msgstr "Éditeur d'Exception de Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:179
+msgid "Invite Exception Editor"
+msgstr "Éditeur d'Exception d'Invitation"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:184
+msgid "Mode Editor"
+msgstr "Éditeur de Mode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "said something recently"
+msgstr "a dit quelque chose récemment"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "is talking"
+msgstr "est en train de parler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:684
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:699
+msgid "and"
+msgstr "et"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "were talking recently"
+msgstr "étaient récemment en train de parler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "are talking"
+msgstr "sont en train de parler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:707
+msgid "and other %1 users"
+msgstr "et %1 autres utilisateurs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:738
+msgid "Dead channel"
+msgstr "Salon mort"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:753
+msgid "operator"
+msgstr "opérateur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:754
+msgid "operators"
+msgstr "opérateurs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active user"
+msgstr "utilisateur actif"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active users"
+msgstr "utilisateurs actifs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot user"
+msgstr "utilisateur très actif"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot users"
+msgstr "utilisateurs très actifs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owner"
+msgstr "propriétaire du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owners"
+msgstr "propriétaires du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrator"
+msgstr "administrateur de salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrators"
+msgstr "administrateurs de salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operator"
+msgstr "semi-opérateur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operators"
+msgstr "semi-opérateurs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced user"
+msgstr "voicé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced users"
+msgstr "voicés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operator"
+msgstr "opérateur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operators"
+msgstr "opérateurs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "user total"
+msgstr "total utilisateur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "users total"
+msgstr "utilisateurs au total"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:931
+msgid "No activity"
+msgstr "Aucune activité"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:932
+msgid "Minimal activity"
+msgstr "Activité minimale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:933
+msgid "Very low activity"
+msgstr "Très faible activité"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Might be low activity"
+msgstr "Apparemment, faible activité"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Low activity"
+msgstr "Faible activité"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Might be medium activity"
+msgstr "Apparemment, activité moyenne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Medium activity"
+msgstr "Activité moyenne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "Might be high activity"
+msgstr "Apparemment, forte activité"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "High activity"
+msgstr "Forte activité"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Might be very high activity"
+msgstr "Apparemment, très forte activité"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Very high activity"
+msgstr "Très forte activité"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Might be flooded with messages"
+msgstr "Semble submergé de messages"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Flooded with messages"
+msgstr "Submergé de messages"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:946
+msgid "human"
+msgstr "humain"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:966
+msgid "[Dead channel]"
+msgstr "[Salon mort]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1020
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1122
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:459
+msgid " on "
+msgstr " sur "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1086
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %Q, no "
+"data sent to the server"
+msgstr ""
+"Le moteur de chiffrage n'a pas été capable de chiffrer le message en cours (%"
+"Q) : %Q, aucune donnée envoyée au serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1403
+msgid "Sent part request, waiting for reply..."
+msgstr "Envoi du message de départ, attente de la réponse..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:610
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:647
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:293
+msgid "(Unknown)"
+msgstr "(Inconnu)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1484
+msgid "<b>Channel mode:</b>"
+msgstr "<b>Modes du salon :</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1498
+#, c-format
+msgid "<br><b>Key:</b> %s"
+msgstr "<br><b>Clé :</b> %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1505
+#, c-format
+msgid "<br><b>Limit:</b> %s"
+msgstr "<br><b>Limite :</b> %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1590
+#, c-format
+msgid "Channel synchronized in %d.%d seconds"
+msgstr "Salon synchronisé en %d.%d secondes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:139
+msgid "Choose an Image File - KVIrc"
+msgstr "Choisir un Fichier d'Image - KVIirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:284
+#, c-format
+msgid "Unloadable: %s"
+msgstr "Indéchargeable :%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:260
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:90
+msgid "&Browse..."
+msgstr "&Parcourir..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:364
+msgid "Choose a File - KVIrc"
+msgstr "Choisir un Fichier - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:382
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:593
+msgid "Choose a Directory - KVIrc"
+msgstr "Choisir un Répertoire - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:764
+msgid "A&dd"
+msgstr "A&jouter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:407
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:766
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:230
+msgid "Re&move"
+msgstr "Suppri&mer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:602
+msgid "Sample Text"
+msgstr "Échantillon de Texte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:635
+msgid "Foreground"
+msgstr "Avant plan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:639
+msgid "Transparent"
+msgstr "Transparent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:652
+msgid "Background"
+msgstr "Fond"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:715
+msgid "Play"
+msgstr "Jouer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:748
+msgid "Channel name"
+msgstr "Nom du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:749
+msgid "Channel password"
+msgstr "Mot de passe du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:177
+msgid "Toolbars"
+msgstr "Barre d'Outils"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:84
+msgid "Orientation"
+msgstr "Orientation"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:86
+msgid "Top"
+msgstr "En haut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:87
+msgid "Left"
+msgstr "À gauche"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:88
+msgid "Right"
+msgstr "À droite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:89
+msgid "Bottom"
+msgstr "En bas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:91
+msgid "Detached"
+msgstr "Detaché"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:92
+msgid "Flat"
+msgstr "Réduit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:94
+msgid "Icon Size"
+msgstr "Taille des icônes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:96
+msgid "Small (22x22)"
+msgstr "Petite (22x22)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:97
+msgid "Large (32x32)"
+msgstr "Grande (32x32)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1333
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:463
+msgid "&Apply"
+msgstr "&Appliquer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:830
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:113
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:251
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:319
+msgid "Close"
+msgstr "Fermer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:102
+msgid "Channel Modes"
+msgstr "Modes du Salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_debugwindow.cpp:47
+msgid "Debug Messages"
+msgstr "Messages de Debug"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:72
+msgid "CTCP Page - KVIrc"
+msgstr "CTCP Page - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:109
+msgid "You have been paged by"
+msgstr "Vous avez été paginé par"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:75
+msgid "Mask editor - KVirc"
+msgstr "Éditeur de Masque - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:79
+msgid "New mask must match an *!*@* expression"
+msgstr "Un nouveau masque doit vérifier l'expression *!*@*"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Ok"
+msgstr "Valider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:488
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:442
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:401
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Cancel"
+msgstr "Annuler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:157
+msgid "Active Bans"
+msgstr "Bans Actifs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:161
+msgid "Active Invite Exceptions"
+msgstr "Exceptions d'Invitation Actives"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:165
+msgid "Active Ban Exceptions"
+msgstr "Exceptions de Bans Actives"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:184
+msgid "Filter:"
+msgstr "Filtre :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:188
+msgid "Use doubleclick to edit item"
+msgstr "Double-cliquez pour éditer l 'élément"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:200
+msgid "Mask"
+msgstr "Masque"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:202
+msgid "Set at"
+msgstr "Mis à"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "Add"
+msgstr "Ajouter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:92
+msgid "Cryptography/text transformation"
+msgstr "Cryptographie/transformation de texte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:99
+msgid "Use the crypt engine"
+msgstr "Utiliser le moteur de chiffrage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:120
+msgid "Enable encryption"
+msgstr "Activer le chiffrage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:123
+msgid "Encrypt key:"
+msgstr "Clé de chiffrage :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:141
+msgid "Hex"
+msgstr "Hex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:132
+msgid "Enable decryption"
+msgstr "Activé le déchiffrage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:135
+msgid "Decrypt key:"
+msgstr "Clé de déchiffrage :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_htmldialog.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:175
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:932
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1124
+msgid "OK"
+msgstr "Valider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:211
+msgid ""
+"If you dont want to encrypt a particular text line then just start it with "
+"the CTRL+P prefix"
+msgstr ""
+"Si vous ne désirez pas chiffrer une ligne en particulier, commencez-la "
+"simplement avec le préfix CTRL+P"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:263
+msgid "Sorry, no crypt engines available"
+msgstr "Désolé, pas de moteur de chiffrage disponible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:283
+msgid "Crypt: Can't create an engine instance: crypting disabled"
+msgstr ""
+"Chiffrage : Impossible de créer une instance de chiffrage : chiffrage "
+"désactivé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:294
+#, c-format
+msgid "Crypt: Can't initialize the engine :%s"
+msgstr "Chiffrage : Impossible d'initialiser le moteur :%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:302
+msgid ""
+"Crypt: You have to enable encryption and/or decryption for the engine to work"
+msgstr ""
+"Chiffrage : Vous devez activer le chiffrage et/ou le déchiffrage pour que le "
+"moteur fonction"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:385
+msgid "Search tools"
+msgstr "Outils de recherche"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:539
+#, c-format
+msgid "### Log session terminated at %s ###"
+msgstr "### Session du journal terminée à %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:713
+#, c-format
+msgid "### Log session started at %s ###"
+msgstr "### Session du journal commencée à %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:717
+msgid "### Existing data buffer:"
+msgstr "### Tampon de données existantes :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:721
+msgid "### End of existing data buffer."
+msgstr "### Fin du tampon de données existantes."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3894
+msgid "Hide Find Window"
+msgstr "Cacher la Fenêtre de Recherche"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3896
+msgid "Show Find Window"
+msgstr "Montrer la Fenêtre de Recherche"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3898
+msgid "Zoom In"
+msgstr "Zoom Positif"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3899
+msgid "Zoom Out"
+msgstr "Zoom Négatif"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3900
+msgid "Choose Temporary Font..."
+msgstr "Choisissez une Police Temporaire..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3901
+msgid "Choose Temporary Background..."
+msgstr "Choisissez un Fond Temporaire..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3902
+msgid "Reset Temporary Background"
+msgstr "Annuler le Fond Temporaire"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3905
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:738
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:841
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1057
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1289
+msgid "Clear Buffer"
+msgstr "Vider le tampon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3939
+msgid "Choose the background image..."
+msgstr "Choisissez l'image de fond..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+msgid "Invalid image"
+msgstr "Image invalide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+msgid "Failed to load the selected image"
+msgstr "Impossible de charger l'image sélectionnée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4083
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4140
+#, c-format
+msgid "Pos %d"
+msgstr "Pos %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4156
+msgid "Not found"
+msgstr "Introuvable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4563
+msgid "Looking up host %Q..."
+msgstr "Résolution du nom de machine %Q..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4926
+msgid "Double-click to open this link"
+msgstr "Double-cliquez pour ouvrir ce lien"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4946
+msgid "Unable to look it up hostname: Hostname appears to be masked"
+msgstr "Impossible de résoudre ce nom de machine : Il semble masqué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4947
+msgid "Unable to look it up hostname: Unknown host"
+msgstr "Impossible de résoudre ce nom de machine : Machine inconnue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4949
+msgid ""
+"Double-click to look up this hostname<br>Right-click to view other options"
+msgstr ""
+"Double-cliquez pour résoudre ce nom de machine<br>Clic droit pour d'autres "
+"options"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4972
+msgid "Server appears to be a network hub<br>"
+msgstr "Le serveur semble être un concentrateur du réseau<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4973
+msgid "Unknown server<br>"
+msgstr "Serveur inconnu<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4976
+msgid "Double-click to read the MOTD<br>Right-click to view other options"
+msgstr "Double-cliquez pour lire le MOTD<br>Clic droit pour d'autres options"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4989
+msgid "Double-click to set<br>"
+msgstr "Double-cliquez pour choisir<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5011
+msgid "You're not an operator: You may not change channel modes"
+msgstr ""
+"Vous n'êtes pas un opérateur : Vous ne pouvez changer les modes du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5028
+msgid "Nothing known about %Q"
+msgstr "Rien de connu à propos de %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5029
+msgid "Nothing known about %Q (no connection)"
+msgstr "Rien de connu à propos de %Q (pas de connexion)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5054
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>): "
+"<br><nowrap>+%Q (%u users)<hr>%Q</nowrap>"
+msgstr ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>): "
+"<br><nowrap>+%Q (%u utilisateurs)<hr>%Q</nowrap>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5060
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)<hr>Double-"
+"click to join %Q<br>Right click to view other options"
+msgstr ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)<hr>Double-"
+"cliquez pour rejoindre %Q<br>Clic droit pour voir les autres options"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5080
+msgid "<b>Double-click:</b><br>%Q"
+msgstr "<b>Double-clic :</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5085
+msgid "<b>Middle-click:</b><br>%Q"
+msgstr "<b>Clic central :</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5090
+msgid "<b>Right-click:</b><br>%Q"
+msgstr "<b>Clic droit :</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1284
+msgid "Joined on <b>%1</b>"
+msgstr "Joint le <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1296
+msgid "Quiet for <b>%1h %2m %3s</b>"
+msgstr "Silencieux depuis <b>%1h %2m %3s</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1097
+msgid "No connection"
+msgstr "Pas de connexion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:304
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:3
+msgid "IRC Context"
+msgstr "Contexte IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:319
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:365
+#, c-format
+msgid "Lag: %d.%d%d"
+msgstr "Retard : %d.%d%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:393
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:379
+msgid "Lag: ?.??"
+msgstr "Retard : ?.??"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:326
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:637
+msgid "No IRC context"
+msgstr "Pas de contexte IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:633
+msgid "Not connected"
+msgstr "Déconnecté"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:377
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1117
+msgid "away"
+msgstr "absent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:397
+msgid "In progress..."
+msgstr "En cours..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:458
+msgid "Crypting"
+msgstr "Chiffrage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:466
+msgid "Private Text Encoding"
+msgstr "Encodage du Texte Privé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:566
+msgid "Ops...I've accidentally lost the crypting engine..."
+msgstr "Oups... J'ai accidentellement oublié le moteur de chiffrage..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:582
+msgid "List of window types available in this release of KVIrc:"
+msgstr "Liste des types de fenêtre disponibles avec version de KVIrc :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:763
+msgid "Use Default Encoding"
+msgstr "Utiliser l'Encodage par Défaut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:775
+msgid "Standard"
+msgstr "Standard"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:776
+msgid "Smart (Send Local)"
+msgstr "Propre (Envoi Local)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:777
+msgid "Smart (Send UTF-8)"
+msgstr "Propre (Envoi UTF-8)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:810
+msgid "&Undock"
+msgstr "&Détacher"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:813
+msgid "&Dock"
+msgstr "&Incruster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:818
+msgid "Mi&nimize"
+msgstr "&Réduire"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:821
+msgid "Ma&ximize"
+msgstr "&Maximiser"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:824
+msgid "&Restore"
+msgstr "Re&staurer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:837
+msgid "Text &Encoding"
+msgstr "&Encodage du Texte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:842
+msgid "Sa&ve Window Properties"
+msgstr "Sau&vegarder les Propriétés des Fenêtres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:86
+msgid "Taskbar"
+msgstr "Barre des tâches"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:91
+msgid "taskbar"
+msgstr "barre des tâches"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1162
+msgid "Sort"
+msgstr "Tri"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1163
+msgid "Reverse Sort"
+msgstr "Tri Inversé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1223
+msgid "Window List"
+msgstr "Liste des fenêtres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:203
+msgid "Apply to all IRC Contexts"
+msgstr "Appliquer à tous les contextes IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:227
+msgid "Away Indicator"
+msgstr "Indicateur d'Asence"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:255
+msgid "Away since"
+msgstr "Absent depuis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:259
+msgid "Double click to leave away mode"
+msgstr "Double-cliquez pour quitter le mode d'absence"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:261
+msgid "Not away"
+msgstr "Pas absent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:263
+msgid "Double click to enter away mode"
+msgstr "Double-cliquez pour entrer en mode d'absence"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:330
+#, c-format
+msgid "Last checked %d mins %d secs ago"
+msgstr "Dernière vérification il y a %d mins %d secs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:332
+msgid "Lag measure not available yet"
+msgstr "Mesureur de retard pas encore disponible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:336
+msgid "Lag meter engine disabled"
+msgstr "Machine indicatrice de retard désactivée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:338
+msgid "Double click to enable it"
+msgstr "Double-cliquez pour pour mettre en marche"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:391
+msgid "Lag Indicator"
+msgstr "Indicateur de retard"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:461
+msgid "Simple Clock"
+msgstr "Horloge simple"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:512
+msgid "Show total connection time"
+msgstr "Afficher le temps de connexion total"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:536
+msgid "Connection Timer"
+msgstr "Chronomètre de connexion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:560
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:87
+msgid "Separator"
+msgstr "Séparateur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:820
+msgid "Clipboard"
+msgstr "Presse-papiers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line break"
+msgstr "fin de ligne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line breaks"
+msgstr "fins de ligne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:845
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:439
+msgid "Cu&t"
+msgstr "Co&uper"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:847
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:445
+msgid "&Copy"
+msgstr "Cop&ier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:849
+msgid "&Paste"
+msgstr "C&oller"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:851
+msgid "Paste (Slowly)"
+msgstr "Copier (Lentement)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:856
+msgid "Paste &File"
+msgstr "Coller &Fichier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:863
+msgid "Stop Paste"
+msgstr "Arrêter Collage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:865
+msgid "Clear"
+msgstr "Effacer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:868
+msgid "Select All"
+msgstr "Tout Sélectionner"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:897
+msgid "Insert Icon"
+msgstr "Insérer une icône"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1926
+msgid "%d matches: %Q"
+msgstr "%d correspondances : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1930
+msgid "No matches"
+msgstr "Aucune correspondance"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2657
+msgid "Show History<br>&lt;Ctrl+PageUp&gt;"
+msgstr "Montrer l'Historique<br>&lt;Ctrl+PageUp&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2648
+msgid "Input History Disabled"
+msgstr "Historique des Entrées Désactivé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2370
+msgid "Show Icons Popup<br>&lt;Ctrl+I&gt;<br>See also /help texticons"
+msgstr ""
+"Montrer les icônes de popup<br>&lt;Ctrl+I&gt;<br>Voir aussi /help texticons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2382
+msgid "User friendly commandline mode<br>See also /help commandline"
+msgstr "Mode de ligne de commande pratique<br>Voyez aussi /help commandline"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2394
+msgid "Multi-line Editor<br>&lt;Alt+Backspace&gt;"
+msgstr "Éditeur Multi-lignes<br>&lt;Alt+Retour&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2498
+msgid "Confirm Multiline Message"
+msgstr "Confirmer le Message Multilignes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2499
+msgid ""
+"You're about to send a message with %1 lines of text.<br><br>There is "
+"nothing wrong with it, this warning is<br>here to prevent you from "
+"accidentally sending<br>a really large message just because you didn't edit "
+"it<br>properly after pasting text from the clipboard.<br><br>Do you want the "
+"message to be sent?"
+msgstr ""
+"Vous êtes sur le point d'envoyer un message ayant %1 lignes de texte."
+"<br><br>Il n'y a aucun problème, cet avertissement n'est là<br>que pour vous "
+"éviter d'envoyer accidentellement<br>un message réellement gros simplement "
+"parceque vous ne l'avez pas édité<br>correctement après avoir copié le texte "
+"avec la souris.<br><br>Voulez-vous que le message soit envoyé ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2505
+msgid "Yes, always"
+msgstr "Oui, toujours"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2506
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:399
+msgid "Yes"
+msgstr "Oui"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:806
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:375
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:400
+msgid "No"
+msgstr "Non"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2556
+msgid "<Ctrl+Return>; submits, <Alt+Backspace>; hides this editor"
+msgstr "<Ctrl+Entrée>; soumettre, <Alt+Retour>; cacher cet éditeur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:126
+msgid "Address:"
+msgstr "Adresse :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:140
+msgid "Current IRC URI"
+msgstr "URL IRC actuelle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:156
+msgid "Notify List"
+msgstr "Liste de Notification"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:263
+msgid "Part All Channels"
+msgstr "Partir de Tous les Salons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:265
+msgid "Close All Queries"
+msgstr "Fermer Tous les privés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:270
+msgid "Unhighlight All Windows"
+msgstr "Fin du surlignage de toutes les fenêtres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:273
+msgid "Unhighlight All Channels"
+msgstr "Fin le surlignage de tous les salons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:275
+msgid "Unhighlight All Queries"
+msgstr "Fin le surlignage de tous les privés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:387
+msgid "Gender:"
+msgstr "Gendre :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:394
+msgid "Male"
+msgstr "Masculin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:393
+msgid "Female"
+msgstr "Féminin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:375
+msgid "Registered as"
+msgstr "Enregistré en tant que"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:381
+msgid "(Matched by"
+msgstr "(Correspondant à"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:393
+msgid "On <b>"
+msgstr "Sur <b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:402
+msgid "Using server <b>%1</b>"
+msgstr "Utilisant le serveur <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:407
+msgid "%1 hops"
+msgstr "%1 hops"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:417
+msgid "Probably Away"
+msgstr "Probablement Absent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:493
+msgid ""
+"KVIrc can accept only irc://, irc6://, ircs:// or irc6s:// URL's\n"
+"Your URL is invalid. Check spelling and try again"
+msgstr ""
+"KVIrc accepte uniquement les URL sous la forme irc://, irc6://, ircs:// ou "
+"irc6s://\n"
+"Votre URL est invalide. Vérifiez la syntaxe puis essayez à nouveau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:554
+msgid ""
+"You have just attempted to close a console window with an active connection "
+"inside.\n"
+"Are you sure you wish to terminate the connection?"
+msgstr ""
+"Vous venez d'essayer de fermer une fenêtre de console associée a une "
+"connexion active.\n"
+"Voulez-vous vraiment interrompre cette connexion ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:588
+msgid ""
+"You have just attempted to close the last console window.\n"
+"Are you sure you wish to quit KVIrc?"
+msgstr ""
+"Vous venez d'essayer de fermer la dernière fenêtre de console.\n"
+"Êtes-vous sur de vouloir quitter KVIrc ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1019
+msgid "Failed to load avatar with name \"%Q\" and local path \"%Q\""
+msgstr "Le chargement de l'avatar de nom \"%Q\" et de path \"%Q\" a échoué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:624
+msgid "Connection in progress..."
+msgstr "Connexion en cours..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1099
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:630
+msgid "Login in progress..."
+msgstr "Enregistrement en cours..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1179
+msgid "channel"
+msgstr "salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1180
+msgid "channels"
+msgstr "salons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1181
+msgid "query"
+msgstr "privé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1182
+msgid "queries"
+msgstr "privés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1238
+msgid "Connected since"
+msgstr "Connecté depuis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1252
+msgid "Online for"
+msgstr "En ligne depuis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1264
+msgid "Server idle for"
+msgstr "Inactif sur le serveur depuis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:50
+msgid "This option is also available as"
+msgstr "Cette option est aussi accessible par"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:683
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:275
+msgid "Advanced..."
+msgstr "Avancée..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:69
+msgid "Scri&pting"
+msgstr "&Scripting"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:74
+msgid "&Tools"
+msgstr "&Outils"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:81
+msgid "&Settings"
+msgstr "&Paramètres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:83
+msgid "&Window"
+msgstr "&Fenêtre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:125
+msgid "&Help"
+msgstr "&Aide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:119
+msgid "&Help Browser (Panel)"
+msgstr "&Navigateur d'Aide (Tableau de bord)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:121
+msgid "Help Browser (&Window)"
+msgstr "Navigateur d'Aide (&Fenêtre)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:124
+msgid "&Tip of the Day"
+msgstr "&Astuce du Jour"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:127
+msgid "About &KVIrc"
+msgstr "À propos de &Kvirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:130
+msgid "KVIrc Home&page"
+msgstr "&Page d'Acceuil de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:134
+msgid "KVIrc Russian Home&page"
+msgstr "Page d'Acceuil &Russe de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:139
+msgid "KVIrc French Home&page"
+msgstr "Site web francophone de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:143
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:339
+msgid "Subscribe to the Mailing List"
+msgstr "Souscrire à la Liste de Diffusion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:145
+msgid "Report a Bug / Propose Improvements"
+msgstr "Faire un rapport de bug/Suggérer une amélioration"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:148
+msgid "Join KVIrc International Channel on Freenode"
+msgstr "Rejoindre le salon International de KVIrc sur Freenode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:150
+msgid "Join KVIrc International Channel on IRCNet"
+msgstr "Rejoindre le salon International de KVIrc sur IRCNet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:155
+msgid "Join KVIrc Italian Channel on AzzurraNet"
+msgstr "Rejoindre le salon Italien de KVIrc sur AzzuraNet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:161
+msgid "Join KVIrc French Channel on Freenode"
+msgstr "Rejoindre le salon Francophone de KVIrc sur Freenode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:164
+msgid "Join KVIrc French Channel on EuropNet"
+msgstr "Rejoindre le salon Francophone de KVIrc sur EuropNet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:179
+msgid "Show StatusBar"
+msgstr "Montrer la Barre de Statut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:194
+msgid "&Save Configuration"
+msgstr "&Sauvegarder la Configuration"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:213
+msgid "Restore &Default Script"
+msgstr "Restaurer le Script par &Défaut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:630
+msgid "Disconnect"
+msgstr "Se déconnecter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:228
+msgid "New &Connection To"
+msgstr "Nouvelle &Connexion À"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:234
+msgid "Hide &Dock Icon"
+msgstr "Cacher l'Icône de &Tableau de Bord"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:237
+msgid "Show &Dock Icon"
+msgstr "Montrer l'Icône de Tableau de &Bord"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:111
+msgid "&Quit"
+msgstr "&Quitter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:265
+msgid "&Other..."
+msgstr "&Autre..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:305
+msgid "Show &Icon Table"
+msgstr "Montrer le Tableau d'&Icônes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:308
+msgid "Open &Terminal"
+msgstr "Ouvrir un &Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:308
+msgid ""
+"<b>Shift+Drag</b> or <b>Ctrl+Drag</b> to move the applet around<br><b>Right "
+"click</b> to see the other options"
+msgstr ""
+"<b>Shift+Glisser</b> ou <b>Ctrl+Glisser</b> pour déplacer "
+"l'applet<br><b>Click droit</b> pour voir d'autres options"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:313
+msgid "<b>Right click</b> to add/remove applets"
+msgstr "<b>Clic droit</b> pour ajouter/enlever des applets"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:353
+msgid "Remove %Q"
+msgstr "Supprimer %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:365
+msgid "Add Applet"
+msgstr "Ajouter l'appler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:404
+msgid ""
+"Drag the applet while holding the Shift or Ctrl key to move it to the "
+"desired position"
+msgstr ""
+"Glisser l'applet pendant que vous maintenez les touches Shift et Ctrl "
+"enfoncées pour le déplacer là où vous le désirez"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:93
+msgid "<b><font color=\"#EAEAEA\" size=\"-1\">Find Text</font></b>"
+msgstr "<b><font color=\"#EAEAEA\" size=\"-1\">Trouver le Texte</font></b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:118
+msgid "&Regular expression"
+msgstr "Expression &régulière"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:121
+msgid "E&xtended regexp."
+msgstr "Rege&xp étendue."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:126
+msgid "C&ase sensitive"
+msgstr "Sensible à la c&asse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:129
+msgid "Find &Prev."
+msgstr "&Précédent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:133
+msgid "&Find Next"
+msgstr "S&uivant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:880
+msgid "Find"
+msgstr "Chercher"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:214
+msgid "Type"
+msgstr "Type"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:166
+msgid "Set &All"
+msgstr "&Tout Sélectionner"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:170
+msgid "Set &None"
+msgstr "Sélectionner. Aucu&n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:174
+msgid "&Load From..."
+msgstr "Charger &Depuis..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:178
+msgid "&Save As..."
+msgstr "&Enregistrer Sous..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:182
+msgid "Filter"
+msgstr "Filtrer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:234
+msgid "Select a Filter File"
+msgstr "Sélectionner un Fichier Filtre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:251
+#, c-format
+msgid "Can't open the filter file %s for reading."
+msgstr "Impossible de fichier de filtre %s en lecture."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:261
+msgid "Select a Name for the Filter File"
+msgstr "Selectionner un Nom pour le Fichier de Filtre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:272
+msgid "Failed to write the filter file %Q (IO Error)"
+msgstr "Impossible d'ecrire le fichier de filtre %Q (Erreur d'ES)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:274
+msgid "Can't open the filter file %Q for writing"
+msgstr "Impossible d'ouvrir le fichier de filtre %Q en écriture"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:109
+msgid "Choose image ..."
+msgstr "Choisissez une image..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:122
+msgid "Builtin images"
+msgstr "Images internes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:131
+msgid "Small icons"
+msgstr "Petits icônes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:138
+msgid "Full path"
+msgstr "Arborescence complète"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:241
+msgid "Builtin $icon(%Q) [index %d]"
+msgstr "$icon(%Q) [index %d] intégrée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:274
+msgid "directory"
+msgstr "répertoire"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:300
+msgid "pixels"
+msgstr "pixels"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:305
+msgid "bytes"
+msgstr "octets"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:98
+msgid "Show User List"
+msgstr "Montrer la Liste des Utilisateurs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:105
+msgid "Query Targets"
+msgstr "Prendre les Cibles en Privé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:165
+msgid "Query target:"
+msgstr "Cible en privé :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:170
+msgid "%1 is %2 (%3)"
+msgstr "%1 est %2 (%3)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:172
+msgid "%1 is %2"
+msgstr "%1 est %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:186
+msgid "%1 is using irc server: %2 (%3 hops)"
+msgstr "%1 utilise le serveur IRC : %2 (%3 hops)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:188
+msgid "%1 is using irc server: %2"
+msgstr "%1 utilise le serveur IRC : %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:195
+msgid "%1 is probably away"
+msgstr "%1 est probablement absent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:200
+msgid "Common channels with %1: %2"
+msgstr "Salons en commun avec %1 : %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:254
+msgid "[Dead Query]"
+msgstr "[Privé mort]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:240
+msgid "Query with %1!%2 (%3)"
+msgstr "Privé avec %1!%2 (%3)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:242
+msgid "Query with %1!%2"
+msgstr "Privé avec %1!%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:244
+msgid ", using server %1"
+msgstr ", utilisant le serveur %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:246
+msgid " (%1 hops)"
+msgstr " (%1 hops)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:248
+msgid ", probably away"
+msgstr ", probablement absent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:252
+msgid "Common channels: %2"
+msgstr "Salons en commun : %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:320
+msgid ""
+"The target of this query has changed from \r!n\r%Q\r [%Q@\r!h\r%Q\r] to \r!n"
+"\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr ""
+"La cible de ce privé a changé de \r!n\r%Q\r [%Q@\r!h\r%Q\r] vers \r!n\r%Q\r "
+"[%Q@\r!h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:389
+msgid "Common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Salons communs avec \r!n\r%Q\r [%Q@\r!h\r%Q\r] : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:392
+msgid "No common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "Aucun salon commun avec \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:428
+msgid "[Dead query]"
+msgstr "[Privé mort]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:578
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:645
+msgid "This query has no active targets, no message sent"
+msgstr "Ce privé n'a pas de cible active, aucun message envoyé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:617
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %s, no "
+"data sent to the server"
+msgstr ""
+"Le moteur de chiffrage n'a pas été capable de chiffrer le message en court (%"
+"Q) : %s, aucune donnée envoyée au serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashcount.cpp:74
+msgid ""
+"The argument of the hash count '#' operator didn't evaluate to a hash: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+"L'argument du compteur du hash '#' n'a pas été interprété comme un hash : "
+"conversion automatique depuis le type %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:100
+msgid "DNS Lookup result for query \"%Q\""
+msgstr "Résultat de la résolution DNS pour \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:105
+msgid "Error: %Q"
+msgstr "Erreur : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:110
+msgid "Hostname %d: %Q"
+msgstr "Nom de machine %d : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:116
+msgid "IP address %d: %Q"
+msgstr "Adresse IP %d : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:870
+msgid ""
+"Broken slot '%Q' in target object '%Q::%Q' while emitting signal '%Q' from "
+"object '%Q::%Q': disconnecting"
+msgstr ""
+"Connecteur '%Q' cassé dans l'objet cible '%Q' durant l'emission du signal '%"
+"Q'depuis l'objet '%Q::%Q' : déconnexion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:888
+msgid ""
+"Slot target object destroyed while emitting signal '%Q' from object '%Q::%Q'"
+msgstr ""
+"Connecteur 'cible détruit durant l'emission du signal '%Q'depuis l'objet '%"
+"Q::%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1040
+msgid "Listing Qt properties for object named \"%Q\" of KVS class %Q"
+msgstr ""
+"Listage des propriétés Qt pour l'object appelé \"%Q\" de la classe KVS %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1046
+#, c-format
+msgid "Properties for Qt class %s"
+msgstr "Propriétés pour la classe Qt %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1071
+msgid "Property: %c%Q%c, type %Q"
+msgstr "Propriété : %c%Q%c, type %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1131
+#, c-format
+msgid "%d properties listed"
+msgstr "%d propriétés listées"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1151
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1380
+msgid "The object named \"%Q\" of class %Q has no Qt properties"
+msgstr "L'objet nommé \"%Q\" de la classe %Q n'a pas de propriétés Qt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1396
+msgid "No Qt property named \"%Q\" for object named \"%Q\" of class %Q"
+msgstr ""
+"Aucune propriété Qt nommée \"%Q\" pour l'objet nommé \"%Q\" de la classe %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1409
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed but it doesn't really exist"
+msgstr ""
+"Impossible de trouver la proriété nommée \"%Q\" pour l'objet nommé \"%Q\" de "
+"la classe %Q : la propriété est classée mais n'existe pas vraiment"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1417
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed and defined but the returned variant is not valid"
+msgstr ""
+"Impossible de trouver la proriété nommée \"%Q\" pour l'objet nommé \"%Q\" de "
+"la classe %Q : la propriété est classée et définie mais la variante "
+"retournée n'est pas valide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1200
+#, c-format
+msgid ""
+"The property is of type %s but the supplied argument can't be converted to "
+"that type (expecting \"%s\")"
+msgstr ""
+"La propriété est du type %s mais l'argument fourni ne peut être converti en "
+"ce type ( \"%s\" attendu)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1331
+msgid ""
+"A pixmap object, an image_id or an image file path is required for this "
+"property"
+msgstr ""
+"Un objet pixmap, un identifiant d'image ou un chemin de fichier image est "
+"nécessaire pour cette propriété"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1352
+msgid "Can't find the requested image"
+msgstr "Impossible de trouver l'image demandée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1512
+msgid ""
+"Property \"%Q\" for object named \"%Q\" of class %Q has an unsupported data "
+"type"
+msgstr ""
+"La propriété \"%Q\" pour l'objet appelé \"%Q\" de la classe %Q a un type de "
+"donnée non supporté"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1659
+msgid "Cannot find object function $%Q for object named \"%Q\" of class %Q"
+msgstr ""
+"Impossible de trouver la fonction d'objet $%Q pour l'objet nommé \"%Q\" de "
+"la classe %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1661
+msgid "Cannot find object function $%Q::%Q for object named \"%Q\" of class %Q"
+msgstr ""
+"Impossible de trouver la fonction d'objet $%Q::%Q pour l'objet nommé \"%Q\" "
+"de la classe %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1669
+msgid ""
+"Cannot call internal object function $%Q (for object named \"%Q\" of class %"
+"Q) from this context"
+msgstr ""
+"Impossible de trouver la fonction d'objet $%Q (pour l'objet nommé \"%Q\" de "
+"la classe %Q) dans ce contexte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:69
+msgid "Stray dot ('.') character or invalid following module command name"
+msgstr "Point ('.') seul ou invalide à la suite d'un nom de commande de module"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:70
+msgid "Syntax error: malformed module command identifier"
+msgstr "Erreur de syntaxe : identifiant de commande de module mal formé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:188
+msgid "Stray '::' sequence or invalid following alias name"
+msgstr "Séquence de '::' seule ou invalide à la suite du nom d'alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:95
+msgid "Syntax error: malformed alias identifier"
+msgstr "Erreur de syntaxe : identifiant d'alias mal formé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:102
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:196
+msgid "Stray ':' character: did you mean '...<namespace>::<alias_name>' ?"
+msgstr ""
+"Caractère ':' seul : vouliez-vous dire '...<espace_de_nom>::<nom_alias>'?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:103
+msgid "Syntax error: malformed (alias?) command identifier"
+msgstr "Erreur de syntaxe : identifiant de commande (alias ?) mal formé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:280
+msgid "Unknown callback command \"%Q\""
+msgstr "Commande de rappel inconnue \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:465
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:44
+msgid "The current window is not a channel"
+msgstr "La fenêtre courante n'est pas un salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:532
+msgid ""
+"Timer name omitted but there is not current timer (this is not a timer "
+"callback)"
+msgstr ""
+"Le nom du chronomètre a été omis mais il n'y a pas de chronomètre en cours "
+"(ce n'est pas un rappel de chronomètre)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:538
+msgid "Can't kill the timer '%Q' since it is not running"
+msgstr ""
+"Impossible de tuer le chronomètre '%Q' vu qu'il n'est pas en cours "
+"d'execution"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:626
+msgid "List of active timers"
+msgstr "Timers actifs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:637
+msgid "Persistent"
+msgstr "Persistant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:640
+msgid "WindowLifetime"
+msgstr "Durée de vie des fenêtres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:643
+msgid "SingleShot"
+msgstr "Une seule fois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:652
+msgid "None"
+msgstr "Aucun"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:663
+#, c-format
+msgid "Total: %u timers running"
+msgstr "Total : %u timers en cours"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:849
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:872
+msgid "Found character '%q' (unicode %x) where a slash '/' was expected"
+msgstr "Caractère '%q' (unicode %x) trouvé là où un slash '/' était attendu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:842
+msgid ""
+"Unexpected end of command in binding operation, at least two slashes are "
+"missing"
+msgstr ""
+"Fin inattendue de la commande lors des opérations de liaison, il manque au "
+"moins deux slashs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:865
+msgid ""
+"Unexpected end of command in binding operation, at least one slash is missing"
+msgstr ""
+"Fin inattendue de la commande lors des opérations de liaison, il manque au "
+"moins un slash"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:905
+msgid "Unknown binding operation '%Q'"
+msgstr "Opération de la liaison inconnue '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:926
+msgid "Missing right side operand for the binding operator '=~'"
+msgstr "Il manque l'opérande de droite pour l'opérateur de liaison '=~'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:948
+msgid "Trailing garbage ignored after operator '++'"
+msgstr "Reste ignoré après l'opérateur '++'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:960
+msgid "Missing right operand for operator '+='"
+msgstr "Il manque l'opérande de droite pour l'opérateur '+='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:979
+msgid "Trailing garbage ignored after operator '--'"
+msgstr "Reste ignoré après l'opérateur '--'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:986
+msgid ""
+"This looks a lot like an object handle dereferencing operator '->' but in "
+"fact it isn't. Maybe you forgot a '$' just after ?"
+msgstr ""
+"Il semble qu'il s'agissent d'un appel a l'opérateur de déréférence d'objet '-"
+">' alors que ce n'est en fait pas le cas. Peut-être avez-vous oublié un '$' "
+"juste après ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:994
+msgid "Missing right operand for operator '-='"
+msgstr "Il manque l'opérande de droite pour l'opérateur '-='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1015
+msgid "Missing right operand for operator '<<='"
+msgstr "Il manque l'opérande de droite pour l'opérateur '<<='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1025
+msgid "Missing right operand for operator '<<'"
+msgstr "Il manque l'opérande de droite pour l'opérateur '<<='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1039
+msgid "Missing right operand for operator '<,'"
+msgstr "Il manque l'opérande de droite pour l'opérateur '<,'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1053
+msgid "Missing right operand for operator '<+'"
+msgstr "Il manque l'opérande de droite pour l'opérateur '<+'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1075
+msgid "Missing right operand for operator '>>='"
+msgstr "Il manque l'opérande de droite pour l'opérateur '>>='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1094
+msgid "Missing right operand for operator '.='"
+msgstr "Il manque l'opérande de droite pour l'opérateur '.='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1113
+msgid "Missing right operand for operator '"
+msgstr "Il manque l'opérande de droite pour l'opérateur '"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:72
+msgid "Unknown operator"
+msgstr "Opérateur inconnu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1178
+msgid "Unexpected (and senseless) read-only data evaluation"
+msgstr "Évaluation de données en lecture seule inattendue (et sans aucun sens)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1180
+msgid "Syntax error: confused by earlier errors: bailing out"
+msgstr ""
+"Erreur de syntaxe : confusion due à des erreurs précédentes : on ne continue "
+"pas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1160
+msgid "Unexpected end of script after a variable reference: expected operator"
+msgstr ""
+"Fin inattendue du script après une référence à une variable : opérateur "
+"attendu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1176
+msgid ""
+"Unexpected character '%q' (unicode %x) after a void function call: end of "
+"instruction expected"
+msgstr ""
+"Caractère %q' (unicode %x) inattendu après un appel muet à une fonction : "
+"fin d'une instruction attendue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1179
+msgid "Unexpected character '%q' (unicode %x)"
+msgstr "Caractère %q' (unicode %x) inattendu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:96
+msgid "/me can be used only in channels, queries and DCC chat windows"
+msgstr "/me ne peut être utilisé que dans les salons, PV et DCC chats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:385
+msgid "Invalid IRC url (%Q)"
+msgstr "URL IRC invalide (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:410
+msgid "The commandline for this url type seems to be broken (%Q)"
+msgstr "La ligne de commande pour ce type d'URL semble cassée (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:412
+msgid "No commandline specified for this type of url (%Q)"
+msgstr "Aucune ligne de commande spécifiée pour ce type d'URL (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:512
+msgid "Option setting error: Unknown option or invalid value for option type"
+msgstr ""
+"Erreur de paramètre d'option : Option inconnue ou valeur inconnue pour ce "
+"type d'option"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:606
+msgid "Choose a file to parse"
+msgstr "Choisissez un fichier à analyser"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:639
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:643
+msgid "Failed to load the file '%Q' for parsing"
+msgstr "Impossible de charger le fichier '%Q' pour l'analyser"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:715
+msgid "Missing channel list"
+msgstr "Il manque la liste des salons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:753
+#, c-format
+msgid "You don't appear to be on channel %s"
+msgstr "Vous ne semblez pas être sur le salon %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:802
+msgid "Module command call failed: can't load the module 'snd'"
+msgstr ""
+"L'appel de la commande du module a échoué : impossible de charger le module "
+"'snd'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:809
+msgid ""
+"Module command call failed: the module 'snd' doesn't export a command named "
+"'play'"
+msgstr ""
+"L'executionl de la commande du module a échoué : le module 'snd' n'exporte "
+"pas la commande nommée 'play'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:864
+msgid "Popup %Q is not defined"
+msgstr "Le popup '%Q' n'est pas défini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:872
+msgid "A popup menu cannot be popped up twice"
+msgstr "Un menu de popup ne peut être ouvert deux fois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:897
+msgid "Invalid syntax for screen coordinates, using cursor position"
+msgstr ""
+"Syntaxe des coordonnées d'écran invalide, utilisation de la position du "
+"curseur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1011
+msgid "Empty target specified"
+msgstr "Cible spécifiée vide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:97
+msgid "[RAW]: %Q"
+msgstr "[RAW] : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1237
+msgid "Window with id %Q not found: no rebinding performed"
+msgstr ""
+"La fenêtre ayant pour identifiant '%Q' est introuvable : aucun renvoi "
+"effecttué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1330
+msgid "Failed to execute command '%Q'"
+msgstr "Impossible d'executer la commande '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:242
+msgid "Missing alias name"
+msgstr "Il manque le nom de l'alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:253
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:889
+msgid ""
+"Alias names can contain only letters, digits, underscores and '::' namespace "
+"separators"
+msgstr ""
+"Les noms d'alias ne peuvent contenir que des lettres, digits, underscores et "
+"séparateurs d'espaces de noms '::'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:903
+msgid ""
+"Stray ':' character in alias name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+"Caractère ':' seul dans le nom d'alias : n'est-ce pas plutôt..."
+"<espace_de_noms>::<nom> ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:914
+msgid "Found an empty namespace in alias name"
+msgstr "Un espace de noms vide a été trouvé dans le nom d'alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:277
+msgid "The alias %Q is not existing"
+msgstr "L'alias %Q n'existe pas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:436
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:413
+msgid "The specified window has no button containers"
+msgstr "La fenêtre specifiée n'a pas de conteneur pour bouton"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:447
+msgid "Window button '%Q' not found"
+msgstr "Bouton de fenêtre '%Q' introuvable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:445
+msgid "Can't find the icon '%Q'"
+msgstr "Impossible de trouver l'icône '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:532
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:540
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1197
+msgid "No such event (%Q)"
+msgstr "Événement introuvable (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:552
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1222
+msgid "No handler '%Q' for raw numeric event '%d'"
+msgstr "Aucun intercepteur '%Q' pour l'événement numérique raw '%d'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1248
+msgid "No handler '%Q' for event '%Q'"
+msgstr "Aucun intercepteur '%q' pour l'événement '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:936
+msgid "The specified ping time is invalid: assuming zero (no ping)"
+msgstr "Temps de ping specifié ivalide : on suppose zero (pas de ping)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:946
+msgid "The specified maximum run time is invalid: assuming zero (infinite)"
+msgstr ""
+"La temps maximal d'exécution spécifié n'est pas valide : on prend zéro "
+"(infini)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:965
+msgid "Failed to start the process"
+msgstr "La création du socket a échoué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1010
+msgid "The specified object does not exist"
+msgstr "L'objet spécifié n'existe pas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1113
+msgid "Missing timer name"
+msgstr "Il manque le nom du chronomètre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1122
+msgid "Missing timeout delay"
+msgstr "Il manque le temps d'expiration"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1129
+msgid "The timeout delay didn't evaluate to an integer"
+msgstr "Le délai d'expiration n'a pas été évalué à un entier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1152
+msgid "Unable to add the timer: insufficient system resources"
+msgstr ""
+"Impossible d'ajouter le chronomètre : ressources du système insuffisantes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_eventmanager.cpp:503
+msgid "Event handler %Q is broken: disabling"
+msgstr "L'intercepteur d'événement %Q est cassé : désactivation"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_moduleinterface.cpp:166
+msgid "Can't unload the module: it has locked itself in memory"
+msgstr "Impossible de charger le module : il s'est bloqué lui-même en mémoire"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:123
+msgid "Unknown binary operator '=%q': did you mean '==' ?"
+msgstr "Opérateur binaire inconnu '=%q' : peut-être pensiez-vous à '==' ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:221
+msgid "Unknown binary operator '%q'"
+msgstr "Opérateur binaire inconnu '=%q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:305
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:371
+msgid "Unexpected end of script in expression"
+msgstr "Fin inattendue du script dans l'expression"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:451
+msgid ""
+"Unexpected character %q (unicode %h) in expression. If it meant to be a "
+"string use the quotes."
+msgstr ""
+"Caractère %q (unicode %h) inattendu dans l'expression. Si c'était sensé être "
+"une chaîne de caractères, utilisez des guillemets."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:466
+msgid "Unexpected empty expression operand"
+msgstr "L'opérande de l'expression ne doit pas être vide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:91
+msgid "say: injected commandline"
+msgstr "say : ligne de commande injectée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:94
+msgid "Say parse error: Broken command"
+msgstr "Annonce d'erreur d'analyse : Commande cassée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:250
+msgid ""
+"Couldn't find a suitable IRC context for the connection, try using -n or -u"
+msgstr ""
+"Impossible de trouver un context IRC valable pour la connexion, essayez avec "
+"les options -n ou -u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:259
+msgid "Another connection is already in progress in the selected IRC context"
+msgstr "Une autre connexion est en cours dans le contexte IRC selectionné"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:369
+msgid "No menu bar item with text '%Q'"
+msgstr "Pas d'élément de la barre de menu avec '%Q' comme texte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:383
+msgid "Invalid index specified: ignored"
+msgstr "Indice spécifíe invalide : on ignore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:392
+msgid "The popup '%Q' is not defined"
+msgstr "Le popup '%Q' n'est pas défini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:604
+msgid "No target channel specified and the current window is not a channel"
+msgstr "Aucun salon cible spécifié et la fenêtre spécifiée n'est pas un salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:705
+msgid "No catalogue %Q for the current language found"
+msgstr "Aucun catalogue %Q trouvé pour la langue en cours"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:744
+msgid "The catalogue %Q was not loaded"
+msgstr "Le catalogue %Q n'est pas chargé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:80
+msgid ""
+"Empty window identifier specified in the standard rebinding switch: no "
+"rebinding performed"
+msgstr ""
+"Identifiant de fenêtre specifié vide dans l'option standard de renvoi : "
+"aucun renvoi effectué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:91
+msgid ""
+"Invalid window specified in the standard rebinding switch: no rebinding "
+"performed"
+msgstr ""
+"Identifiant de fenêtre specifié invalide dans l'option standard de renvoi : "
+"aucun renvoi effectué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:94
+msgid ""
+"The left side of the scope operator didn't evaluate as an object reference"
+msgstr ""
+"Le membre de gauche de l'opérateur de portée n'a pas été évalué à une "
+"référence à un objet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:100
+msgid ""
+"The left side of the scope operator evaluated to a null object reference"
+msgstr ""
+"Le membre de gauche de l'opérateur de portée est identifé comme une "
+"référence nulle à un objet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:107
+msgid ""
+"The left side of the scope operator evaluated to an invalid object reference "
+"(object doesn't exist)"
+msgstr ""
+"Le membre de gauche de l'opérateur de portée est évalué à une référence "
+"d'objet invalide (l'objet n'existe pas)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayreferenceassert.cpp:77
+msgid "Array reference assert failed: the variable evaluated to type '%Q'"
+msgstr ""
+"La référence du tableau a manifestement échoué : la variable est évaluée de "
+"type '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:247
+msgid "Operand of unary operator didn't evaluate to a number"
+msgstr "L'opérande de l'opérateur n'a pas été interprétée comme un nombre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:415
+msgid "Left operand didn't evaluate to a number"
+msgstr "L'opérande de gauche n'a pas été interprétée comme un nombre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:422
+msgid "Right operand didn't evaluate to a number"
+msgstr "L'opérande de droite n'a pas été interprétée comme un nombre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:547
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:575
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:583
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:374
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:66
+msgid "Division by zero"
+msgstr "Division par zéro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:107
+#, c-format
+msgid "line %d, near character %d"
+msgstr "ligne %d, près du caractère %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:187
+msgid "This command can be used only in windows bound to an IRC context"
+msgstr ""
+"Cette commande ne peut être utilisée que dans des fenêtres liées à un "
+"contexte IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:193
+msgid "You're not connected to an IRC server"
+msgstr "Vous n'êtes pas connecté à un serveur IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:199
+msgid "Missing parameter"
+msgstr "Il manque un paramètre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:128
+msgid "Hash key evaluated to empty string: fix the script"
+msgstr "Clé hash évaluée à une chaîne vide : corrigez le script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:99
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+"L'argument de l'indice {} n'a pas été interprété comme un hash : conversion "
+"automatique depuis le type %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:144
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash automatic "
+"conversion from %Q supplied"
+msgstr ""
+"L'argument de l'indice {} n'a pas été interprété comme un hash : conversion "
+"automatique depuis %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashreferenceassert.cpp:77
+msgid "Hash reference assert failed: the variable evaluated to type '%Q'"
+msgstr ""
+"La référence du hash a manifestement échoué : la variable est évaluée de "
+"type '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:100
+msgid "Failed to send an unknown command as /raw"
+msgstr "Impossible d'envoyer une commande inconnue via /raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:104
+msgid "Call to undefined command '%Q'"
+msgstr "Appel de la commande inconnue '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:116
+msgid "Error in inner alias command call '%Q', called from this context"
+msgstr ""
+"Erreur lors de l'appel la commande d'alias interne '%Q', appelée depuis ce "
+"contexte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:74
+msgid "There are no extended scope variables in this scope"
+msgstr "Il n'y a pas de variable à portée étendue dans cette portée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:111
+msgid "Missing class name"
+msgstr "Il manque le nom de la classe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:120
+msgid "A class can't be a subclass of itself"
+msgstr "Une classe ne peut être une sous-classe d'elle même"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:127
+msgid "Couln't find base class named \"%Q\""
+msgstr "Impossible de trouver la classe ayant pour nom \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:137
+msgid ""
+"Detected a loop in the inheritance tree of the base class \"%Q\": redefine "
+"that class first"
+msgstr ""
+"Detection d'une boucle dans l'abre généalogique de la classe de base \"%Q"
+"\" : commencez par redéfinir la classe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:146
+msgid "Can't override the builtin class \"%Q\""
+msgstr "Impossible d'écrire par dessus la classe interne \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:71
+msgid "Module command call failed: can't load the module '%Q': %Q"
+msgstr ""
+"L'appel de la commande du module a échoué : impossible de charger le module "
+"'%Q' : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:77
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a command named '%"
+"Q'"
+msgstr ""
+"L'executionl de la commande du module a échoué : le module '%Q' n'exporte "
+"pas la commande nommée '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:113
+msgid "Broken condition in menu setup: assuming false"
+msgstr "Initialisation du menu avec une condition cassée : on assume faux"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:220
+msgid "Broken icon parameter: ignoring"
+msgstr "Paramètre d'icône cassée : on ignore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:228
+msgid "Can't find the icon \"%Q\": ignoring"
+msgstr "Impossible de trouver l'icône \"%Q\" : on ignore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:244
+msgid "Broken text parameter: assuming empty string"
+msgstr "Paramètre de texte cassé : on assume une chaîne de caractère vide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:486
+msgid "Recursive definition detected for popup '%Q': ignoring"
+msgstr "Définition récursive détectée pour le popup '%Q' : on ignore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:500
+msgid "Can't find the external popup '%Q'; ignoring"
+msgstr "Impossible de trouver le popup externe %Q' : on ignore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:853
+msgid "Broken prologue in popup menu '%Q': ignoring"
+msgstr "Le prologue du menu '%Q' est cassé : on ignore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:868
+msgid "Broken epilogue in popup menu '%Q': ignoring"
+msgstr "L'épilogue du menu '%Q' est cassé : on ignore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:70
+msgid "Module function call failed: can't load the module '%Q': %Q"
+msgstr ""
+"L'appel de la fonction du module a échoué : impossible de charger le module "
+"'%Q' : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:77
+msgid ""
+"Module function call failed: the module '%Q' doesn't export a function named "
+"'%Q'"
+msgstr ""
+"L'appel de la fonction du module a échoué : le module '%Q' n'exporte pas une "
+"fonction nommée '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_timermanager.cpp:244
+msgid "Timer '%Q' has a broken callback handler: killing the timer"
+msgstr ""
+"L'intercepteur de rappel du chronomètre '%Q' est cassé : destruction du "
+"chronomètre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:229
+msgid "The target variable didn't evaluate to an integer or real value"
+msgstr "La variable cible n'a pas été évaluée à un entier ou un réel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:283
+msgid "The right side of operator '&=' didn't evaluate to an integer"
+msgstr "Le membre de droite de l'opérateur '&=' n'a pas été évalué à un entier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:294
+msgid "The left side of operator '&=' didn't evaluate to an integer"
+msgstr "Le membre de gauche de l'opérateur '&=' n'a pas été évalué à un entier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:353
+msgid "The right side of operator '/=' didn't evaluate to a number"
+msgstr ""
+"Le membre de droite de l'opérateur '/=' n'a pas été identifé comme un nombre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:364
+msgid "The left side of operator '/=' didn't evaluate to a number"
+msgstr ""
+"Le membre de gauche de l'opérateur '/=' n'a pas été identifé comme un nombre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:446
+msgid "The right side of operator '%=' didn't evaluate to a number"
+msgstr ""
+"Le membre de droite de l'opérateur '%=' n'a pas été identifé comme un nombre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:457
+msgid "The left side of operator '%=' didn't evaluate to a number"
+msgstr ""
+"Le membre de gauche de l'opérateur '%=' n'a pas été identifé comme un nombre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:541
+msgid "The right side of operator '*=' didn't evaluate to a number"
+msgstr ""
+"Le membre de droite de l'opérateur '*=' n'a pas été identifé comme un nombre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:552
+msgid "The left side of operator '*=' didn't evaluate to a number"
+msgstr ""
+"Le membre de gauche de l'opérateur '*=' n'a pas été identifé comme un nombre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:620
+msgid "The right side of operator '|=' didn't evaluate to an integer"
+msgstr "Le membre de droite de l'opérateur '|=' n'a pas été évalué à un entier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:631
+msgid "The left side of operator '|=' didn't evaluate to an integer"
+msgstr "Le membre de gauche de l'opérateur '|=' n'a pas été évalué à un entier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:691
+msgid "The right side of operator '<<=' didn't evaluate to an integer"
+msgstr ""
+"Le membre de droite de l'opérateur '<<=' n'a pas été évalué à un entier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:702
+msgid "The left side of operator '<<=' didn't evaluate to an integer"
+msgstr "Le membre de gauche de l'opérateur '|=' n'a pas été évalué à un entier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:763
+msgid "The right side of operator '>>=' didn't evaluate to an integer"
+msgstr ""
+"Le membre de droite de l'opérateur '>>=' n'a pas été évalué à un entier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:774
+msgid "The left side of operator '>>=' didn't evaluate to an integer"
+msgstr ""
+"Le membre de gauche de l'opérateur '>>=' n'a pas été évalué à un entier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:840
+msgid "The right side of operator '-=' didn't evaluate to a number"
+msgstr ""
+"Le membre de droite de l'opérateur '-=' n'a pas été identifé comme un nombre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:851
+msgid "The left side of operator '-=' didn't evaluate to a number"
+msgstr ""
+"Le membre de gauche de l'opérateur '-=' n'a pas été identifé comme un nombre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:923
+msgid "The right side of operator '+=' didn't evaluate to a number"
+msgstr ""
+"Le membre de droite de l'opérateur '+=' n'a pas été identifé comme un nombre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:934
+msgid "The left side of operator '+=' didn't evaluate to a number"
+msgstr ""
+"Le membre de gauche de l'opérateur '+=' n'a pas été identifé comme un nombre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1009
+msgid "The right side of operator '^=' didn't evaluate to an integer"
+msgstr "Le membre de droite de l'opérateur '^=' n'a pas été évalué à un entier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1020
+msgid "The left side of operator '^=' didn't evaluate to an integer"
+msgstr "Le membre de gauche de l'opérateur '^=' n'a pas été évalué à un entier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1462
+msgid ""
+"The regular expression matched a zero-length substring: this is not valid in "
+"the s/// operator, skipping"
+msgstr ""
+"L'expression régulière vérifie une sous-chaîne de longueur nulle : ce n'est "
+"pas valide pour l'opérateur s///, on passe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:52
+msgid "Unexpected end of script after '$' function call prefix"
+msgstr "Fin inattendue du script après le préfixe d'appel de fonction '$'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:53
+msgid "Unexpected character %q (unicode %x) after '$' function call prefix"
+msgstr ""
+"Caractère %q (unicode %x) inattendu après le préfixe d'appel de fonction '$'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:54
+msgid ""
+"Syntax error after '$' function call prefix. If you want to use a plain '$' "
+"in the code you need to escape it"
+msgstr ""
+"Erreur de syntaxe après le préfixe d'appel de fonction '$'. Si vous voulez "
+"utiliser un '$' brut dans le code, vous devez l'échapper"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:63
+msgid "Invalid expression evaluation in object scope"
+msgstr "Évaluation de l'expression invalide dans la portée de l'objet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:78
+msgid "Invalid command evaluation in object scope"
+msgstr "Évaluation de la commande invalide dans la portée de l'objet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:87
+msgid "Empty instruction block for command evaluation"
+msgstr "Bloc d'instructions vide pour l'evaluation de la commande"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:101
+msgid ""
+"Parameter identifiers are forbidden in object scope (after the '->' operator)"
+msgstr ""
+"Les identifiants des paramètres sont interdits dans la portée de l'objet "
+"(après l'opérateur '->')"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:147
+msgid ""
+"Ending index of a multiple parameter identifier is lower or equal to the "
+"starting index. This will evaluate to a single parameter identifier."
+msgstr ""
+"L'indice de fin d'un identifiant de plusieurs paramètres est inférieur ou "
+"égal à l'indice de début. Un seul identifiant de paramètre sera evalué."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:163
+msgid "Syntax error: invalid $$ ($this) function call in object scope"
+msgstr ""
+"Erreur de syntaxe : appel invalide d'une fonction de $$ ($this) au sein de "
+"la portée de l'objet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:189
+msgid "Syntax error: malformed alias function call identifier"
+msgstr "Erreur de syntaxe : identifiant d'appel de fonction d'alias mal formé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:197
+msgid "Syntax error: malformed (alias?) function call identifier"
+msgstr ""
+"Erreur de syntaxe : identifiant d'appel de fonction (alias ?) mal formé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:307
+#, c-format
+msgid "Invalid data type for parameter \"%s\""
+msgstr "Type de donnée invalide pour le paramètre \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:122
+#, c-format
+msgid "found empty string where type '%s' was expected"
+msgstr "chaîne vide là où '%s' était attendu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:129
+msgid "found string value \"%Q\" where type '%s' was expected"
+msgstr "la chaîne \"%Q\" a été trouvée là où '%s' était attendu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:134
+msgid "found type %Q where type '%s' was expected"
+msgstr "le type %Q a été trouvé là où '%s' était attendu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:154
+#, c-format
+msgid "Missing non-optional parameter \"%s\""
+msgstr "Il manque le paramètre non-optionel \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:282
+msgid "found empty string while a non empty one was expected"
+msgstr "une chaîne vide a été trouvée alors qu'il en fallait une non vide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:309
+#, c-format
+msgid "found signed integer \"%d\" where type 'unsigned integer' was expected"
+msgstr "un entier signé \"%d\" a été trouvé qu'un type non signé était attendu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:253
+msgid "This window has no associated IRC context"
+msgstr "Cette fenêtre n'a pas de contexte IRC associé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:483
+#, c-format
+msgid "No such IRC context (%u)"
+msgstr "Contexte IRC introuvable (%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:471
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:586
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:494
+msgid "This window is not associated to an IRC context"
+msgstr "Cette fenêtre n'a pas de contexte IRC associé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:809
+msgid ""
+"The specified format string wasn't accepted by the underlying system time "
+"formatting function"
+msgstr ""
+"Le format de chaîne de cacartères spécifié n'a pas été accepté par la "
+"fonction système de formattage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:70
+msgid "Unterminated c-style multiline comment"
+msgstr "Commentaire multi-lignes de type c inachevé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:71
+msgid "Unexpected end of script in multiline comment"
+msgstr "Fin de script inattendue dans le commentaire multi-lignes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:88
+msgid ""
+"Unexpected character '%q' (unicode %x) after a slash (it is a typo or a "
+"malformed comment begin ?)"
+msgstr ""
+"Caractère '%q' (unicode %x) inattendu après un slash (erreur de frappe ou "
+"début de commentaire mal formé ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:71
+msgid "Call to undefined function '%Q'"
+msgstr "Appel de la fonction inconnue '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:79
+msgid "Error in inner alias function call '%Q', called from this context"
+msgstr ""
+"Erreur lors de l'appel la fonction d'alias interne '%Q', appelée depuis ce "
+"contexte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:73
+msgid "Array index didn't evaluate to an integer"
+msgstr "L'indice du tableau n'a pas été interprété comme un entier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:79
+msgid ""
+"Array index evaluated to a negative integer (non negative integer expected)"
+msgstr ""
+"Indice de tableau interprété comme un entier négatif (il faut un entier "
+"positif)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:106
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from %Q supplied"
+msgstr ""
+"L'argument de l'indice [] n'a pas été interprété comme un tableau : "
+"conversion automatique depuis %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:142
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+"L'argument de l'indice [] n'a pas été interprété comme un tableau : "
+"conversion automatique depuis le type %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:219
+#, fuzzy
+msgid "Lag meter was not enabled"
+msgstr "Machine indicatrice de retard désactivée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:546
+msgid "No such event handler (%Q) for event %Q"
+msgstr "Intercepteur inconnu (%Q) pour l'événement %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands.cpp:153
+msgid "This is not a channel"
+msgstr "Ce n'est pas un salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:99
+msgid ""
+"Unexpected end of command buffer while looking for the \"perl.end\" statement"
+msgstr ""
+"Fin inattendue des commandes du tampon lors de la recherche \"perl.end\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:147
+msgid "Trailing garbage at the end of the break command: ignored"
+msgstr "Reste présent après la commande break : ignoré"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:209
+msgid "The 'unset' command needs a variable list"
+msgstr "La commande 'unset' nécessite une liste de variables"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:280
+msgid "Found character %q (unicode %x) where a variable was expected"
+msgstr "Caractère %q (unicode %x) trouvé là où une variable était attendue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:219
+msgid "'unset' command used without a variable list"
+msgstr "commande 'unset' utilisée sans la liste de variables"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:279
+msgid "The 'global' command needs a variable list"
+msgstr "La commande 'global' nécessite une liste de variables"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:631
+msgid "Found character %q (unicode %x) where an open parenthesis was expected"
+msgstr ""
+"Caractère %q (unicode %x) trouvé là où une ouverture de parenthèse était "
+"attendue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:439
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:538
+msgid "Unexpected end of buffer in class definition"
+msgstr "Fin inattendue du tampon dans une définition de classe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:474
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:501
+msgid "Found character %q (unicode %x) where a function name was expected"
+msgstr ""
+"Le caractère %q (unicode %x) a été trouvé là où un nom de fonction etait "
+"attendu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:522
+msgid "Unexpected end of buffer in function parameter list reminder"
+msgstr ""
+"Fin inattendue du tampon dans le rappel de la liste des paramètres de la "
+"fonction"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:630
+msgid "The while command needs an expression enclosed in parenthesis"
+msgstr "La commande while nécessite une expression entourée de parenthèses"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:654
+msgid ""
+"The last while command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+"La dernière commande while dans le tampon n'a pas d'instruction "
+"conditionnelle : cela n'a aucun sens"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:655
+msgid ""
+"Unexpected end of script while looking for the instruction block of the "
+"while command"
+msgstr ""
+"Fin inattendue du script lors de la recherche du bloc d'instructions de la "
+"commande while"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:741
+msgid ""
+"Unexpected end of command after the 'do' command block: expected 'while' "
+"keyword"
+msgstr ""
+"Fin inattendue de la commande après le bloc de commande 'do' : le mot clé "
+"'while' était attendu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:743
+msgid "Found character %q (unicode %x) where a 'while' keyword was expected"
+msgstr ""
+"Caractère %q (unicode %x) trouvé là où le mot clé 'while' était attendu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:759
+msgid ""
+"The 'while' block of the 'do' command needs an expression enclosed in "
+"parenthesis"
+msgstr ""
+"Le bloc 'while' de la commande 'do' necessite une expression entourée de "
+"parenthèses"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:779
+msgid "Garbage string after the expression in 'do' command: ignored"
+msgstr ""
+"Reste de chaîne de caractère après l'expression dans la commande 'do' : "
+"ignoré"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:825
+msgid "The 'if' command needs an expression enclosed in parenthesis"
+msgstr "Le bloc 'if' necessite une expression entourée de parenthèses"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:850
+msgid ""
+"The last if command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+"La dernière commande if dans le tampon n'a pas d'instruction "
+"conditionnelle : cela n'a aucun sens"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:851
+msgid ""
+"Unexpected end of script while looking for the instruction block of the if "
+"command"
+msgstr ""
+"Fin inattendue du script lors de la recherche du bloc d'instructions de la "
+"commande if"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:966
+msgid ""
+"Unexpected end of buffer while looking for the closing ')' in the 'for' "
+"command"
+msgstr ""
+"Fin inattendue du tampon lors de la recherche de la fermeture de parenthèse "
+"')' dans la commande 'for'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1015
+msgid "The 'for' command needs an expression enclosed in parenthesis"
+msgstr "Le bloc 'for' necessite une expression entourée de parenthèses"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1092
+msgid ""
+"Found char %q (unicode %x) while looking for the terminating ')' in 'for' "
+"command"
+msgstr ""
+"Caractère %q (unicode %x) trouvé lors de la recherche de la fermeture de "
+"parenthèse ')' dans la commande 'for'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1122
+msgid "Empty infinite 'for' loop: fix the script"
+msgstr "Boucle 'for'vide et infinie : corrigez votre script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1181
+msgid "The 'foreach' command needs an expression enclosed in parenthesis"
+msgstr "Le bloc 'foreach' necessite une expression entourée de parenthèses"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1205
+msgid ""
+"The 'foreach' command expects a writeable iteration variable as first "
+"parameter"
+msgstr ""
+"Le bloc 'foreach' demande une variable itérative écrivable, comme premier "
+"paramètre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1196
+msgid ""
+"Found character '%q' (unicode %x) where '%' or '$' was expected: see /help "
+"foreach for the command syntax"
+msgstr ""
+"Caractère %q (unicode %x) trouvé là où '%' ou '$' était attendu : voyez /"
+"help foreach pour la syntaxe de la commande"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1207
+msgid "Unexpected function call as 'foreach' iteration variable"
+msgstr ""
+"Appel inattendu d'une fonction en tant que variable itérative de 'foreach'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1209
+msgid "Unexpected read-only variable as 'foreach' iteration variable"
+msgstr ""
+"Appel inattendu d'unevariable en lecture seule en tant que variable "
+"itérative de 'foreach'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1219
+msgid ""
+"Unexpected end of 'foreach' parameters: at least one iteration data argument "
+"must be given"
+msgstr ""
+"Fin inattendue des paramètres :au moins une donnée itérative doit être "
+"fournie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1223
+msgid ""
+"The 'foreach' command expects a comma separated list of iteration data items "
+"after the first parameter"
+msgstr ""
+"La commande 'foreach' demande une liste d'éléments séparés par des virgules "
+"comme paramètre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1244
+msgid ""
+"Found empty 'foreach' execution block: maybe you need to fix your script ?"
+msgstr "Block d'execution de 'foreach' vide : corrigez le script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1365
+msgid "The 'switch' command needs an expression enclosed in parenthesis"
+msgstr "La commande 'switch' a besoin d'une expression entre parenthèses"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1415
+msgid "Unexpected end of buffer in switch condition block"
+msgstr "Fin inattendue du tampon dans le bloc conditionnel de switch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1422
+msgid ""
+"Found character %q (unicode %x) where a 'case','match','regexp','default' or "
+"'break' label was expected"
+msgstr ""
+"Le caractère %q (unicode %x) a été trouvé là où l'étiquette "
+"'case','match','regexp','default' ou 'break' était espérée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1460
+msgid ""
+"Found 'break' label where a 'case','match','regexp' or 'default' label was "
+"expected"
+msgstr ""
+"L'étiquette 'break' là où 'case','match','regexp' ou 'default' était espéré"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1465
+msgid ""
+"Found token '%Q' where a 'case','match','regexp','default' or 'break' label "
+"was expected"
+msgstr ""
+"La marque '%Q' a été trouvée là où 'case','match','regexp' ou 'default' "
+"était espéré"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1528
+msgid "Senseless empty switch command: fix the script"
+msgstr "Commande de switch vide sans raison : corrigez le script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1562
+msgid "Unexpected end of buffer in defpopup block"
+msgstr "Fin inattendue du tampon dans le bloc defpopup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1569
+msgid ""
+"Found character %q (unicode %x) where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+"Le caractère %q (unicode %x) trouvé là où l'étiquette "
+"'prologue','separator','label','popup','item','extpopup' ou 'epilogue' était "
+"espérée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1668
+msgid "Found empty prologue block: maybe you need to fix the script?"
+msgstr "Bloc du prologue vide : corrigez le script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1670
+msgid "Found empty epilogue block: maybe you need to fix the script?"
+msgstr "Bloc de l'épilogue vide : corrigez le script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1703
+msgid ""
+"Unexpected empty <text> field in label parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Champ <text> vide dans les paramètres de label. Référez-vous à /help "
+"defpopup pour la syntaxe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1753
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1801
+msgid ""
+"Unexpected empty <text> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Champ <text> vide dans les paramètres d'extpopup. Référez-vous à /help "
+"defpopup pour la syntaxe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1777
+msgid ""
+"Found empty instruction for popup item: maybe you need to fix the script?"
+msgstr "Bloc d'instructions vide pour l'élément du popup : corrigez le script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1809
+msgid ""
+"Unexpected empty <name> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Champ <name> vide dans les paramètres d'extpopup. Référez-vous à /help "
+"defpopup pour la syntaxe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1821
+msgid ""
+"Found token '%Q' where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+"Le caractère %Q trouvé là où l'étiquette "
+"'prologue','separator','label','popup','item','extpopup' ou 'epilogue' était "
+"espérée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1931
+msgid "The 'defpopup' command needs an expression enclosed in parenthesis"
+msgstr "La commande 'defpopup' a besoin d'une expression entre parenthèse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:109
+msgid "beginning of input"
+msgstr "début des entrées"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:121
+msgid ""
+"Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %s"
+"\" for the command syntax"
+msgstr ""
+"Caractère '%q' (unicode 0x%x) trouvé là où '%c' etait attendu : allez voir "
+"\"/help %s\" pour la syntaxe de la commande"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:124
+#, c-format
+msgid ""
+"Found end of input where character '%c' was expected: see \"/help %s\" for "
+"the command syntax"
+msgstr ""
+"Fin d'entrée trouvée là où '%c' etait attendu : allez voir \"/help %s\" pour "
+"la syntaxe de la commande"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:197
+msgid "Empty script"
+msgstr "Script vide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2650
+msgid ""
+"Syntax error after '%' variable prefix. If you want to use a plain '%' in "
+"the code you need to escape it"
+msgstr ""
+"Erreur de syntaxe après le prefix de variable '%'. Si vous désirez utilisez "
+"dans le code un '%' brut, vous devez l'echapper"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2667
+msgid "Objects have no extended scope variables"
+msgstr "Les objets n'ont pas de variable à portée étendue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2727
+msgid "Found character '%q' (unicode %x) where an instruction was expected"
+msgstr ""
+"Le caractère '%q' (unicode %x) a été trouvé là où une expression est attendue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2760
+msgid "Unterminated instruction block"
+msgstr "Bloc d'instructions incomplet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2761
+msgid "Unexpected end of script in instruction block (missing closing brace)"
+msgstr ""
+"Fin inattendue du script en plein bloc d'instructions (accolade de "
+"terminaison manquante)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2838
+msgid ""
+"The dash after a command should be followed by a letter (switch), by a digit "
+"(negative number) or be escaped"
+msgstr ""
+"Le tiret apres une commande doit être suivi par une lettre (option), un "
+"chiffre (nombre négatif) ou être échappé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2842
+msgid "Unexpected character '%q' (unicode %x) after a switch dash"
+msgstr "Caractère '%q' (unicode %x) inattendu apres un tiret d'option"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2844
+msgid "Unexpected end of script after a switch dash"
+msgstr "Fin inattendue du script après un tiret d'option"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2869
+msgid ""
+"The above problem might be related to the switch dash and the following "
+"equal sign"
+msgstr ""
+"Le problème peut être relié au tiret d'option et au sign égal qui le suit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2948
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3016
+msgid "Unexpected end of script in parameter list"
+msgstr "Fin inattendue du script dans la liste des paramètres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2954
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3022
+msgid "Unexpected end of line in parameter list"
+msgstr "Fin inattendue de la ligne la liste des paramètres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3083
+msgid ""
+"Nested character %q corresponding to expected terminator, this might confuse "
+"me a bit: it is a good idea to enclose it in quotes"
+msgstr ""
+"Le caractère imbriqué %q est un terminateur, ce qui prête à confusion : il "
+"serait bien de l'entourer de guillemets"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3093
+msgid "Skipping nested terminator character %q"
+msgstr "On passe sur le caractère imbriqué et terminateur %q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3120
+msgid "Stray backslash at the end of the script"
+msgstr "Anti-slash seul a la fin du script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3393
+msgid "Unterminated hash key"
+msgstr "Clé hash non terminée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3387
+msgid "Unexpected end of script in hash key (missing '}' character ?)"
+msgstr ""
+"Fin inattendue du script dans la clé hash (il manque le caractère '}' ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3394
+msgid ""
+"Unexpected end of line in hash key (missing '}' character or unescaped "
+"newline)"
+msgstr ""
+"Fin inattendue de la ligne dans la clé hash (il manque le caractère '}' ou "
+"nouvelle ligne non echappée)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3679
+msgid "Unterminated string constant"
+msgstr "Constante chaîne de caractères non terminée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3673
+msgid "Unexpected end of script in string constant (missing \" character ?)"
+msgstr ""
+"Fin inattendue du script dans une constante chaîne de caractères (manque-t-"
+"il le caractère \" ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3680
+msgid ""
+"Unexpected end of line in string constant (missing \" character or unescaped "
+"newline)"
+msgstr ""
+"Fin inattendue de la ligne dans une constante chaîne de caractères "
+"(caractère \" manquant ou nouvelle ligne non echappée)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_processmanager.cpp:225
+msgid "Error triggered from process callback handler: killing process"
+msgstr ""
+"Erreur recceuillie par l'intercepteur de rappel de processus : on tue le "
+"processus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arraycount.cpp:72
+msgid ""
+"The argument of the array count '#' operator didn't evaluate to an array: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+"L'argument du compteur du tableau '#' n'a pas été interprété comme un "
+"tableau : conversion automatique depuis le type %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:197
+msgid "This window has no associated IRC context and is not a DCC chat"
+msgstr "Cette fenêtre n'a pas de contexte IRC associé et n'est pas un DCC chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:293
+msgid "Class \"%Q\" is not defined"
+msgstr "La classe \"%Q\" n'est pas définie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:303
+msgid "The specified parent object does not exist"
+msgstr "Le parent de l'objet spécifié n'existe pas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:430
+msgid "There is no option named '%Q'"
+msgstr "Aucune option ayant pour nom '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:85
+msgid "Internal error: pure virtual evaluateReadOnly called"
+msgstr "Erreur interne : appel de evaluateReadOnly virtuel pur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:91
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:104
+msgid ""
+"Internal error: trying to evaluate as read-write a read-only data location"
+msgstr ""
+"Erreur interne : tentative d'évaluation en lecture-écriture de données qui "
+"ne sont qu'en lecture seule"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:98
+msgid "Internal error: pure virtual evaluateReadOnlyInObjectScope called"
+msgstr "Erreur interne : appel de evaluateReadOnlyInObjectScope virtuel pur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:215
+msgid "[KVS]%c Warning: %Q"
+msgstr "[KVS]%c Avertissement : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:211
+msgid "[KVS]%c Compilation Error: %Q"
+msgstr "[KVS]%c Erreur de compilation : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:219
+msgid "[KVS]%c Runtime Error: %Q"
+msgstr "[KVS]%c Erreur d'Exécution : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:224
+msgid "[KVS] in script context \"%Q\""
+msgstr "[KVS] dans le contexte de script \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:226
+msgid "[KVS] in script context \"%Q\", %Q"
+msgstr "[KVS] dans le contexte de script \"%Q\", %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:233
+msgid "[KVS] Code listing:"
+msgstr "[KVS] Listage du code :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:238
+msgid "[KVS] Window:"
+msgstr "[KVS] Fenêtre :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:242
+#, c-format
+msgid "[KVS] Destroyed window with pointer %x"
+msgstr "[KVS] Fenêtre ayant pour pointeur %x détruite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:246
+msgid "[KVS] Call stack:"
+msgstr "[KVS] Pile d'appel :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:464
+#, c-format
+msgid "Window with ID '%s' not found, returning empty string"
+msgstr ""
+"La fenêtre ayant pour identifiant '%s' est introuvable, on renvoi une chaîne "
+"vide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:130
+msgid "The specified window is not a channel"
+msgstr "La fenêtre spécifiée n'est pas un salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:392
+msgid "The $sw() function can be used only in aliases"
+msgstr "La fonction $sw() ne peut être utilisée que dans un alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:302
+msgid "Invalid pitch value: using default"
+msgstr "Fréquence invalide : utilisation de celle par défaut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:312
+msgid "Invalid duration value: using default"
+msgstr "Durée invalide : utilisation de celle par défaut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:421
+msgid "No button with type %Q named %Q"
+msgstr "Aucun bouton de type %Q et de nom %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:632
+msgid "Can't delete a null object reference"
+msgstr "Impossible de deruire une référence nulle à un objet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:638
+msgid "Can't delete an inexisting object"
+msgstr "Impossible de détruire un objet inexistant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:692
+msgid "Inexisting popup \"%Q\""
+msgstr "Popup inexistant \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:698
+msgid ""
+"Popup menu self-modification is not allowed (the popup is probably open)"
+msgstr ""
+"Une auto-modification d'un popup n'est pas permise (le popup est "
+"probablement ouvert)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:705
+msgid "The menu item with id \"%Q\" does not exist in popup \"%Q\""
+msgstr ""
+"L'élement de menu ayant pour idientifiant \"%Q\" n'existe pas dans le popup "
+"\"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:860
+msgid ""
+"The argument of the -w switch did not evaluate to a valid window id: using "
+"default"
+msgstr ""
+"L'argument de l'option -w n'a pas été interprété comme un identifiant de "
+"fenêtre valide : utilisation de celui par défaut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:869
+msgid ""
+"The argument of the i switch did not evaluate to a number: using default"
+msgstr ""
+"L'argument de l'option -i n'a pas été interprété comme un nombre : "
+"utilisation de celui par défaut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:981
+msgid "Invalid color-set specification, using default"
+msgstr "Mauvais choix de couleurs, utilisation de celles par défaut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:992
+#, c-format
+msgid "Window '%s' not found, using current one"
+msgstr "Fenêtre '%s' introuvable, utilisation de celle courante"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:78
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a callback "
+"command named '%Q'"
+msgstr ""
+"La commande de module a échoué : le module '%Q' n'exporte pas une commande "
+"rappel de nommée '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp:401
+#, c-format
+msgid "The popup '%s' is actually locked: 'self-modifications' are not allowed"
+msgstr "Le popup %s est bloqué : les 'auto-modifications' sont interdites"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:822
+#, c-format
+msgid "Ignoring DCC from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "DCC de \r!nc\r%s\r [%s@\r!h\r%s\r] ignoré"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:839
+#, c-format
+msgid "Ignoring CTCP from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "CTCP de \r!nc\r%s\r [%s@\r!h\r%s\r] ignoré"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:978
+msgid "The following CTCP reply has unrecognized target %Q"
+msgstr "La réponse de CTCP suivante a une cible non reconnue %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1025
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1128
+msgid "Channel CTCP"
+msgstr "CTCP de salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:988
+msgid "%Q %Q reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Réponse %Q %Q venant de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1018
+msgid "The following CTCP request has unrecognized target %Q"
+msgstr "La requête CTCP suivant a une cible non reconnue %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1032
+msgid ""
+"%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignored (flood limit "
+"exceeded)"
+msgstr ""
+"Requête %Q %Q%c venant de \r!n\r%Q\r [%Q@%Q] (%Q), ignorée (limite de flood "
+"dépassée)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1036
+msgid "ignored (unrecognized)"
+msgstr "ignorée (non reconnue)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "ignored"
+msgstr "ignorée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "replied"
+msgstr "répondue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1041
+msgid "%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+msgstr "Requête %Q %Q%c venant de \r!n\r%Q\r [%Q@%Q] (%Q), %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1079
+msgid "The following CTCP PING reply has unrecognized target \"%Q\""
+msgstr "La réponse suivante de CTCP PING a une cible non reconnue \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1113
+#, c-format
+msgid ""
+"The following CTCP PING reply has a broken time identifier \"%S\", don't "
+"trust the displayed time"
+msgstr ""
+"La réponse suivante de CTCP PING a un identifieur temporel défectueux \"%S"
+"\", ne faites pas confiance au temps affiché"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1132
+msgid "%Q PING reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sec %u msec"
+msgstr "%Q réponse de PING venant de %Q [%Q@%Q]: %u sec %u msec"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1466
+msgid "The following CTCP ACTION has unrecognized target %Q"
+msgstr "Le CTCP ACTION suivant a une cible inconnue %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1471
+msgid "CTCP ACTION from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "CTCP ACTION venant de %Q [%Q@%Q]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1517
+msgid "Unable to add file offer for file %Q (File not readable?)"
+msgstr ""
+"Impossible d'ajouter une offre de fichier pour le fichier %Q (Fichier "
+"illisible ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1521
+msgid "Added %d sec file offer for file %Q (%Q) to recipient %Q"
+msgstr ""
+"Offre de fichier de %d sec ajoutée pour le fichier %Q (%Q) au destinataire %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "private"
+msgstr "notification"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "channel notification:"
+msgstr "notification au salon :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1579
+msgid "notification"
+msgstr "privée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1584
+msgid "%Q unsets avatar"
+msgstr "%Q supprime son avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1591
+msgid "%Q changes avatar to %s"
+msgstr "%Q change son avatar en %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1637
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (HTTP GET %s)"
+msgstr ": Aucune copie locale de l'avatar, demande en cours (HTTP GET %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1644
+msgid ""
+": No valid local copy of avatar available; failed to start an HTTP transfer, "
+"ignoring"
+msgstr ""
+": Aucune copie locale de l'avatar, impossible de démarrer un transfert FTTP, "
+"abandon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1652
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (DCC GET %s)"
+msgstr ": Aucune copie locale de l'avatar, demande en cours (DCC GET %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1664
+msgid ""
+": No valid local copy of avatar available; flood limit exceeded, ignoring"
+msgstr ": Aucune copie locale de l'avatar, limite de flood atteinte, abandon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1669
+msgid ": No valid local copy of avatar available, ignoring"
+msgstr ": Aucune copie locale de l'avatar, abandon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1677
+msgid ": No such nickname in the user database, ignoring the change"
+msgstr ""
+": Ce pseudo n'est pas dans la base des utilisateurs, on ignore le changement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1717
+msgid "Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S)"
+msgstr "Requête DCC %S venant de \r!n\r%Q\r [%Q@%Q] ignorée (%S %S)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1759
+msgid "Processing DCC %Q request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s)"
+msgstr ""
+"Traitement de la requête DCC %Q venant de \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1770
+#, c-format
+msgid "Unable to process the above request: Cannot load DCC module (%s)"
+msgstr ""
+"Impossible de traiter la requête ci-dessus : Impossible de charger le module "
+"DCC (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1776
+msgid "Unable to process the above request: DCC module may be broken"
+msgstr ""
+"Impossible de traiter la requête ci-dessus : le module de DCC est peut-être "
+"défectueux"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:132
+msgid ""
+"[Server parser]: Encountered problems while parsing the following message:"
+msgstr ""
+"[Analyseur du serveur] : Problème rencontré en analysant le message suivant :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:134
+msgid "[Server parser]: [%s][%s] %Q"
+msgstr "[Analyseur du serveur] : [%s][%s] %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:136
+#, c-format
+msgid "[Server parser]: %s"
+msgstr "[Analyseur du serveur] : %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:98
+msgid "Received ping from \r!s\r%Q\r (PING %Q), replied pong"
+msgstr "Réception d'un ping venant de \r!s\r%Q\r (PING %Q), pong répondu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:125
+#, c-format
+msgid "Received pong from \r!s\r%s\r (PONG %s)"
+msgstr "Pong reçu de la part de \r!s\r%s\r (PONG %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:151
+msgid "Server ERROR: %Q"
+msgstr "ERREUR du serveur : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:174
+msgid "Missing channel parameter in join message"
+msgstr "Il manque le paramètre salon dans le message d'arrivée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:209
+msgid "Received a join message for an unknown channel, possible desync"
+msgstr ""
+"Réception d'un message d'arrivée pour un salon inconnu, probable "
+"désynchronisation"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:305
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r [implicit +%c umode change]"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] a rejoint \r!c\r%Q\r [changement d'umode +%c "
+"implicite]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:310
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] a rejoint \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:324
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] vient d'arriver sur \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:355
+msgid "Received a part message for an unknown channel, possible desync"
+msgstr ""
+"Réception d'un message de départ pour un salon inconnu, probable "
+"désynchronisation"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:384
+msgid "You have left channel \r!c\r%Q\r"
+msgstr "Vous venez partir du salon \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:386
+msgid "You have left channel \r!c\r%Q\r: %Q"
+msgstr "Vous venez de partir du salon \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:402
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] vient de partir de \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:406
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] vient de partir de \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:420
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] vient de partir de \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:424
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] vient de partir de \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:494
+#, c-format
+msgid "Netsplit detected: %s"
+msgstr "Netsplit détecté : %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:546
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:562
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] a quitté IRC : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:589
+msgid "Received a kick message for an unknown channel, possible desync"
+msgstr ""
+"Réception d'un message de kick pour un salon inconnu, probable "
+"désynchronisation"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:626
+msgid "You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+"Vous avez été kické(e) de \r!c\r%Q\r par \r!n\r%Q\r [%Q@\r!h\r%Q\r] : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:633
+msgid "Attempting to rejoin \r!c\r%Q\r..."
+msgstr "Tentative pour rejoindre \r!c\r%Q\r..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:670
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@"
+"\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] a été kické(e) \r!c\r%Q\r par \r!n\r%Q\r [%Q@\r!h"
+"\r%Q\r] : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:682
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just been kicked from \r!c\r%Q\r by \r!n\r%Q"
+"\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] vient juste d'être kické(e) \r!c\r%Q\r par \r!n\r%"
+"Q\r [%Q@\r!h\r%Q\r] : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:710
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+"Le message suivant apparaît chiffré, la machine de déchiffrage n'a pas pu le "
+"décoder : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:776
+msgid "Ignoring query-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Message privé de \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q ignoré"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:843
+msgid ""
+"Spam privmsg from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%s\")"
+msgstr ""
+"Privmsg de spam de la part de r!n\r%Q\r [%Q@\r!h\r%Q\r] : %Q (correspondant "
+"au mot de spam \"%s\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:984
+msgid "Ignoring channel-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Message sur salon de \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q ignoré"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1106
+msgid "Ignoring Notice from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Notice de \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q ignorée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1159
+msgid "NickServ requests authentication, executing scheduled command"
+msgstr ""
+"Requête d'authentification a NickServ, exécution de la commande programmées"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1162
+msgid ""
+"The scheduled NickServ identification command appears to be broken, please "
+"change the setting"
+msgstr ""
+"Le commande programmée d'authentification à NickServ semble défectueuse, "
+"changez la svp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1213
+msgid ""
+"Spam notice from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%Q\")"
+msgstr ""
+"Notice de spam de la part de \r!n\r%Q\r [%Q@\r!h\r%Q\r] : %Q (correspond au "
+"mot de spam \"%Q\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1394
+msgid "Received a topic message for an unknown channel, possible desync"
+msgstr "Réception du sujet d'un salon inconnu, probable désynchronisation"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1413
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has changed topic to \"%Q%c\""
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] a changé le sujet du salon en \"%Q%c\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1512
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] a changé de pseudo en \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1063
+msgid "You have changed your nickname to %Q"
+msgstr "Vous avez changé votre pseudo en %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1477
+msgid ""
+"The target of this query was lost and has been found when \r!n\r%Q\r [%Q@\r!h"
+"\r%Q\r] changed his nickname to \r!n\r%Q\r"
+msgstr ""
+"La cible de ce privé a été perdue puis retrouvée quand \r!n\r%Q\r [%Q@\r!h\r%"
+"Q\r] a changé de pseudo en \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1486
+msgid ""
+"The recent nickname change from \r!n\r%Q\r to \r!n\r%Q\r caused a query "
+"collision: merging output"
+msgstr ""
+"Le récent changement de pseudo de \r!n\r%Q\r en \r!n\r%Q\r est responsable "
+"d'une collision de pseudo : fusion des messages de sortie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1495
+msgid "End of merged output"
+msgstr "Fin de la fusion des messages de sortie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1540
+msgid "Ignoring invite from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "Invitation de \r!nc\r%Q\r [%Q@\r!h\r%Q\r] ignorée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "autojoining"
+msgstr "jonctionauto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "double-click the channel name to join"
+msgstr "double-cliquez sur le nom du salon pour le rejoindre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1556
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] invites you to channel \r!c\r%Q\r (%Q)"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] vous invite sur le salon \r!c\r%Q\r (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1564
+msgid "Received an invite message directed to another nick, possible desync"
+msgstr ""
+"Réception d'un message d'invitation destiné à un autre pseudo, probable "
+"désynchronisation"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1584
+msgid "WALLOPS from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "WALLOPS de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1648
+#, c-format
+msgid "You have set user mode %s"
+msgstr "Vous avez mis le mode utilisateur %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1655
+msgid "Received a mode change for an unknown channel, possible desync"
+msgstr ""
+"Réception d'un changement de mode pour un salon inconnu, probable "
+"désynchronisation"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1731
+msgid "%Q [%Q@%Q] has set channel key to \"\r!m-k\r%Q\r\""
+msgstr "%Q [%Q@%Q] a mis la clé de salon \"\r!m-k\r%Q\r\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1734
+msgid "%Q [%Q@%Q] has unset the channel key"
+msgstr "%Q [%Q@%Q] a supprimé la clé de salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1754
+msgid "%Q [%Q@%Q] has set channel \r!m-l\rlimit to %Q\r"
+msgstr "%Q [%Q@%Q] a \r!m-l\rlimité le salon à %Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1757
+msgid "%Q [%Q@%Q] has unset the channel limit"
+msgstr "%Q [%Q@%Q] a supprimé la limite du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1779
+msgid "%Q [%Q@%Q] has set mode %c%c \r!n\r%Q\r"
+msgstr "%Q [%Q@%Q] a mis le mode %c%c \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1787
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1834
+msgid "%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"
+msgstr "%Q [%Q@%Q] a mis le \r!m%c%c\rmode de salon %c%c\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1819
+msgid "%Q [%Q@%Q] has set mode %c%c \r!m%c%c\r%Q\r"
+msgstr "%Q [%Q@%Q] a mis le mode %c%c \r!m%c%c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1860
+msgid "%Q [%Q@%Q] has set mode %s %Q"
+msgstr "%Q [%Q@%Q] a mis le mode %s %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1863
+msgid "%Q [%Q@%Q] has set channel mode %s"
+msgstr "%Q [%Q@%Q] a mis le mode %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:147
+#, c-format
+msgid ""
+"One or more standard mode flags are missing in the server available modes.\n"
+"This is caused either by a non RFC1459-compliant IRC daemon or a broken "
+"server reply.\n"
+"Server umodes seem to be '%s' and channel modes seem to be '%s'.\n"
+"Ignoring this reply and assuming that the basic set of modes is available.\n"
+"If you have strange problems, try changing the server."
+msgstr ""
+"Un ou plusieurs des drapeaux de modes standards ne sont pas mis a "
+"disposition par le serveur.\n"
+"Cela peut être dû à un programme IRC non compatible avec la RFC1459 ou à une "
+"réponse malformée du serveur.\n"
+"Les umodes du serveur semblent être '%s' et les modes de salon semblent être "
+"'%s'.\n"
+"On ignore cette réponse et on assume que les modes de base sont "
+"disponibles.\n"
+"Si vous rencontrez des problèmes étranges, essayez de changer de serveur."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:159
+msgid "Available user modes:"
+msgstr "Modes utilisateur disponibles :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:169
+msgid ": Unknown user mode"
+msgstr " : Mode utilisateur inconnu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:177
+msgid "Available channel modes:"
+msgstr "Modes de salon disponible :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:197
+msgid "Server %Q version %S supporting user modes '%S' and channel modes '%S'"
+msgstr ""
+"Le serveur %Q, version %S, ne supporte pas les modes utilisateur '%S' et "
+"modes de salon '%S'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:244
+msgid "This server supports the WATCH notify list method, it will be used"
+msgstr ""
+"Ce serveur supporte la méthode de liste de notifications de type WATCH, elle "
+"sera donc utilisée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:262
+msgid "The current network is %Q"
+msgstr "Le serveur actuel est %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:303
+msgid "This server supports the CODEPAGE command, it will be used"
+msgstr "Ce serveur supporte la commande CODEPAGE, elle sera donc utilisée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:319
+#, c-format
+msgid "This server supports: %s"
+msgstr "Ce serveur supporte : %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:375
+msgid "End of NAMES for \r!c\r%Q\r"
+msgstr "Fin des NAMES pour \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:472
+msgid "Names for \r!c\r%Q\r: %Q"
+msgstr "Names pour \r!c\r%Q\r : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:487
+msgid "(unknown)"
+msgstr "(inconnu)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:491
+msgid "Channel topic is: %Q"
+msgstr "Le sujet du salon est : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:498
+msgid "Topic for \r!c\r%Q\r is: %Q"
+msgstr "Le sujet pour \r!c\r%Q\r est : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:516
+msgid "No channel topic is set"
+msgstr "Aucun sujet de salon n'est défini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:521
+msgid "No topic is set for channel \r!c\r%Q\r"
+msgstr "Aucun sujet n'est défini pour \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:560
+msgid "Topic was set by %Q on %Q"
+msgstr "Le sujet a été défini par %Q le %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:561
+msgid "Topic was set by %Q"
+msgstr "Le sujet a été défini par %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:569
+msgid "Topic for \r!c\r%Q\r was set by %Q on %Q"
+msgstr "Le sujet de \r!c\r%Q\r a été défini par %Q le %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:572
+msgid "Topic for \r!c\r%Q\r was set by %Q"
+msgstr "Le sujet de \r!c\r%Q\r a été défini par %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:592
+msgid "Channel mode for \r!c\r%Q\r is %s"
+msgstr "Le mode de salon pour \r!c\r%Q\r est %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:595
+msgid "User mode for \r!n\r%Q\r is %s"
+msgstr "Le mode utilisateur pour \r!n\r%Q\r est %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:631
+msgid "End of channel %Q for \r!c\r%Q\r"
+msgstr "Fin de la %Q du salon pour \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:635
+msgid "ban list"
+msgstr "liste des bans"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:636
+msgid "invite list"
+msgstr "liste des invitations"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:637
+msgid "ban exception list"
+msgstr "liste des exceptions de ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:658
+msgid "%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"
+msgstr "%Q sur \r!c\r%Q\r : \r!m-%c\r%Q\r (mis par %Q le %Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:665
+msgid "Ban listing"
+msgstr "Listage des bans"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:668
+msgid "Invite listing"
+msgstr "Listage des invitations"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:671
+msgid "Ban exception listing"
+msgstr "Listage des exceptions de ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:740
+msgid ""
+"WHO entry for %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cChannel%c: \r!c\r%Q\r, %"
+"cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAway%c: %Q, %cReal name"
+"%c: %Q"
+msgstr ""
+"WHO de %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r] : %cSalon%c: \r!c\r%Q\r, %cServeur%c: "
+"\r!s\r%Q\r, %cHops%c: %d, %cDrapeaux%c: %Q, %cAbsence%c: %Q, %cNom réel%c: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:797
+msgid "End of WHO list for %Q"
+msgstr "Fin de la liste WHO pour %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:856
+msgid ""
+"Something really weird is happening: the server is refusing all the login "
+"nicknames..."
+msgstr ""
+"Quelque chose de d'étrange vient de se produire : le serveur refuse tous les "
+"pseudos d'enregistrement..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:861
+msgid ""
+"The server is refusing all the login nicknames: giving up, you must send the "
+"nickname manually"
+msgstr ""
+"Le serveur refuse tous les pseudos d'enregistrement : vous devez donc en "
+"entrer un manuellement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:871
+msgid "No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."
+msgstr ""
+"Impossible de vous enregistrer en tant que '\r!n\r%Q\r' (%d: %Q), essai de '%"
+"Q'..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:945
+msgid "Command syntax %Q: %Q"
+msgstr "Syntaxe de la commande %Q : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:973
+msgid "Tip: %Q"
+msgstr "Astuce : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:976
+msgid "Tip for %Q: %Q"
+msgstr "Astuce pour %Q : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:993
+msgid "End of help about %Q"
+msgstr "Fin de l'aide à propos de %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1037
+msgid "%c\r!n\r%Q\r%c is away: %Q"
+msgstr "%c\r!n\r%Q\r%c est absent : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1090
+msgid "%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "%c\r!n\r%Q\r%c est %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1095
+msgid "%c\r!n\r%Q\r%c's real name: %Q"
+msgstr "%c\r!n\r%Q\r%c au nom réel : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1115
+msgid "%c\r!n\r%Q\r%c was %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "%c\r!n\r%Q\r%c était %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1119
+msgid "%c\r!n\r%Q\r%c's real name was: %Q"
+msgstr "%c\r!n\r%Q\r%c au nom réel : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1183
+msgid "%c\r!n\r%Q\r%c's channels: %Q"
+msgstr "%c\r!n\r%Q\r%c est sur : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1220
+msgid "Received a broken RPL_WHOISIDLE, can't evaluate the idle time"
+msgstr ""
+"Réception d'un RPL_WHOISIDLE malformé, impossible d'évaluer le temps "
+"d'inactivité"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1230
+msgid "%c\r!n\r%Q\r%c's idle time: %ud %uh %um %us"
+msgstr "%c\r!n\r%Q\r%c au temps d'inactivité : %ud %uh %um %us"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1240
+msgid "%c\r!n\r%Q\r%c's signon time: %Q"
+msgstr "%c\r!n\r%Q\r%c s'est connecté le : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1274
+msgid "%c\r!n\r%Q\r%c's server: \r!s\r%Q\r - %Q"
+msgstr "%c\r!n\r%Q\r%c est sur le serveur : \r!s\r%Q\r - %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1293
+msgid "%c\r!n\r%Q\r%c is authenticated as %Q"
+msgstr "%c\r!n\r%Q\r%c est authentifié en tant que  %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1325
+msgid "%c\r!n\r%Q\r%c's info: %Q"
+msgstr "%c\r!n\r%Q\r%c à l'info : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1372
+msgid "%c\r!n\r%Q\r%c WHOIS info from \r!s\r%Q\r"
+msgstr "%c\r!n\r%Q\r%c au WHOIS venant de \r!s\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1389
+msgid "%c\r!n\r%Q\r%c WHOWAS info from \r!s\r%Q\r"
+msgstr "%c\r!n\r%Q\r%c au WHOWAS venant de \r!s\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1457
+msgid "Can't evaluate creation time"
+msgstr "Impossible d'évaluer la date de création"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1465
+msgid "Channel was created at %Q"
+msgstr "Le salon a été crée le %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1470
+msgid "Channel \r!c\r%Q\r was created at %Q"
+msgstr "Le salon \r!c\r%Q\r a été crée le %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1511
+msgid "USERHOST info: %Q"
+msgstr "Informations de USERHOST : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1532
+msgid "Channel list begin: channel, users, topic"
+msgstr "La liste des salon arrive : salon, utilisateurs, sujet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1559
+msgid "List: %Q"
+msgstr "Liste : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1573
+msgid "End of LIST"
+msgstr "Fin de LIST"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1597
+msgid "Link: %Q"
+msgstr "Lien : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1612
+msgid "End of LINKS"
+msgstr "Fin de LINKS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1641
+msgid "[Leaving away status after %ud %uh %um %us]: %Q"
+msgstr "[Retour après une absence de %ud %uh %um %us] : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1645
+msgid "[Leaving away status]: %Q"
+msgstr "[Retour après une absence] : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1652
+msgid "Restoring pre-away nickname (%Q)"
+msgstr "Restauration du pseudo d'avant-absence (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1672
+msgid "[Entering away status]: %Q"
+msgstr "[Passage en mode absent] : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1690
+msgid "Setting away nickname (%Q)"
+msgstr "Utilisation du pseudo d'absence (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1762
+#, c-format
+msgid "%c\r!s\r%s\r%c's server info: %s"
+msgstr "%c\r!s\r%s\r%c à l'info du serveur : %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1773
+#, c-format
+msgid "%c\r!s\r%s\r%c's administrator is %s"
+msgstr "%c\r!n\r%s\r%c à l'info : %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1784
+#, c-format
+msgid "%c\r!s\r%s\r%c's contact adress is %s"
+msgstr "%c\r!s\r%s\r%c a pour adresse de contact %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1812
+msgid "\r!n\r%Q\r invited %Q into channel %Q"
+msgstr "\r!n\r%Q\r a invité %Q sur le salon %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1834
+#, c-format
+msgid "%c\r!s\r%s\r%c's information:"
+msgstr "%c\r!s\r%s\r%c à l'info :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1844
+#, c-format
+msgid "End of %c\r!s\r%s\r%c's information"
+msgstr "Fin des informations de %c\r!s\r%s\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1855
+msgid "%c\r!s\r%s\r%c's time is %Q"
+msgstr "%c\r!s\r%s\r%c a comme heure %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1866
+msgid "%Q: no such server"
+msgstr "%Q : serveur inconnu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1877
+msgid "%Q: no such channel"
+msgstr "%Q : salon inconnu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1891
+msgid "Cannot sent to channel: %Q"
+msgstr "Envoi impossible vers le salon : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1894
+msgid "Cannot sent text to channel %Q: %Q"
+msgstr "Envoi de texte impossible vers le salon %Q : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1909
+msgid "Cannot sent to channel"
+msgstr "Envoi impossible vers le salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1912
+msgid "Cannot sent text to channel %Q"
+msgstr "Envoi de texte impossible vers le salon %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1928
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1936
+msgid "Your encoding is now %Q"
+msgstr "Votre mode utilisateur est %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1967
+msgid "%c\r!n\r%Q\r%c's codepage is %Q: %Q"
+msgstr "%c\r!n\r%Q\r%c a pour codegape %Q : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1991
+#, c-format
+msgid "Your user mode is %s"
+msgstr "Votre mode utilisateur est %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:158
+msgid "Failed to set the encoding to %Q: mapping not available."
+msgstr ""
+"Impossible de choisir %Q comme encodage : assignations non disponibles."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:175
+msgid "Changed text encoding to %Q"
+msgstr "Encodage du texte changé à %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:503
+msgid "Connection to server lost"
+msgstr "Connexion au serveur perdue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:512
+msgid "Connection to server established"
+msgstr "Connexion au serveur établie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:573
+msgid "[LINK WARNING]: Socket message truncated to 512 bytes."
+msgstr "[ATTENTION LIEN] Message du socket tronqué a 512 octets."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:640
+msgid ""
+"The server seems to support the WATCH notify list method, will try to use it"
+msgstr ""
+"Le serveur semble supporter la méthode WATCH pour les listes de "
+"notifications, on va donc essayer de l'utiliser"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:688
+msgid "Can't resolve local host address, using user supplied one (%Q)"
+msgstr ""
+"Impossible de résoudre l'adresse machine locale, utilisation de celle "
+"fournie (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:695
+msgid "Can't resolve local host address, using default 127.0.0.1"
+msgstr ""
+"Impossible de résoudre l'adresse machine locale, utilisation de celle par "
+"défaut 127.0.0.1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:701
+msgid "Local host address is %Q"
+msgstr "L'adresse machine locale est %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:749
+msgid "The server seems to have changed the idea about the local hostname"
+msgstr ""
+"Le serveur a l'air de penser que vous avez un autre nom de machine locale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:750
+msgid ""
+"You're probably using a broken bouncer or maybe something weird is happening "
+"on the IRC server"
+msgstr ""
+"Vous passez probablement par un rebondisseur (bouncer) bogué ou peut-être "
+"que le problème vient du serveur IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:776
+msgid ""
+"Here goes your \"broken bouncer hack\": The server has changed the hostname "
+"but I'll ignore the IP address change"
+msgstr ""
+"Voilà le problème au niveau du rebondisseur : Le serveur a changé le nom de "
+"la machine mais je vais ignorer le changement d'IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:791
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:801
+msgid "The local IP address as seen by the IRC server is %Q"
+msgstr "L'adresse IP locale telle qu'elle est vue par le serveur IRC est %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:815
+msgid "Can't start the DNS slave thread"
+msgstr "Impossible de lancer le suivi de la requête DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:816
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:846
+msgid "Unable to resolve the local hostname as seen by the IRC server: %Q"
+msgstr ""
+"Impossible de résoudre le nom de machine locale tel qu'il est vu par le "
+"serveur IRC : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:822
+msgid "Looking up the local hostname as seen by the IRC server (%Q)"
+msgstr ""
+"Résolution de nom de machine locale tel qu'il est vu par le serveur IRC (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:843
+msgid ""
+"Unable to resolve the local hostname as seen by the IRC server: %Q, using "
+"previously resolved %Q"
+msgstr ""
+"Impossible de résoudre le nom de machine locale tel qu'il est vu par le "
+"serveur IRC : %Q, utilisation de celui précédemment résolu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:850
+msgid "Local hostname as seen by the IRC server resolved to %Q"
+msgstr ""
+"Le nom d'hôte local tel qu'il est vu par le serveur IRC a été résolu en %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:868
+msgid "Using server specific username (%Q)"
+msgstr "Utilisation d'un nom d'utilisateur spécifique à ce serveur (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:873
+msgid "Using network specific username (%Q)"
+msgstr "Utilisation d'un nom d'utilisateur spécifique à ce serveur (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:892
+msgid "Using reconnect specific nickname (%Q)"
+msgstr "Utilisation d'un pseudo spécifique à lla reconnexion (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:898
+msgid "Using server specific nickname (%Q)"
+msgstr "Utilisation d'un pseudo spécifique à ce serveur (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:905
+msgid "Using network specific nickname (%Q)"
+msgstr "Utilisation d'un pseudo spécifique à ce serveur (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:922
+msgid "Using server specific real name (%Q)"
+msgstr "Utilisation d'un nom réel spécifique à ce serveur (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:929
+msgid "Using network specific real name (%Q)"
+msgstr "Utilisation d'un nom réel spécifique à ce serveur (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:946
+msgid "Logging in as %Q!%Q :%Q"
+msgstr "Enregistrement sous %Q!%Q :%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:962
+#, c-format
+msgid "Sending %s as password"
+msgstr "Envoi du mot de pass %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1033
+msgid "Executing scheduled network specific \"on connect\" commands"
+msgstr ""
+"Exécution programmée des commandes \"à la connexion\" spécifiques à ce "
+"serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1042
+msgid "Executing scheduled server specific \"on connect\" commands"
+msgstr "Exécution des commandes \"à la connexion\" spécifiques à ce serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1051
+msgid "Executing scheduled identity specific \"on connect\" commands"
+msgstr ""
+"Exécution programmée des commandes \"à la connexion\" spécifiques à ce "
+"serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1101
+#, c-format
+msgid "The server refused the suggested nickname (%s) and named you %s instead"
+msgstr ""
+"Le serveur refuse le pseudo que vous avez suggéré (%s) et vous a renommé en %"
+"s à la place"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1113
+msgid "Login operations complete, happy ircing!"
+msgstr "Opérations d'enregistrement sur le serveur terminées, bon tchat !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1123
+msgid "Executing scheduled network specific \"on login\" commands"
+msgstr ""
+"Exécution programmée des commandes \"à l'enregistrement\" spécifiques à ce "
+"serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1132
+msgid "Executing scheduled server specific \"on login\" commands"
+msgstr ""
+"Exécution des commandes \"à l'enregistrement\" spécifiques à ce serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1141
+msgid "Executing scheduled identity specific \"on login\" commands"
+msgstr ""
+"Exécution programmée des commandes \"à la connexion\" spécifiques à ce "
+"serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1153
+msgid "Setting configured user mode"
+msgstr "Utilisation du mode utilisateur de la configuration"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1210
+msgid "Auto-joining network specific channels"
+msgstr "Entrée automatique sur les salons spécifiques à ce réseau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1244
+msgid "Auto-joining server specific channels"
+msgstr "Entrée automatique sur des salons spécifiques à ce serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1341
+msgid "Updating away state for channel %Q"
+msgstr "Mise à jour du statut d'absence pour le salon %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_customtoolbardescriptor.cpp:230
+msgid "Backward compatibility action for toolbar.define"
+msgstr "Action pour compatibilité avec toolbar.define"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:790
+msgid "Installation problems ?"
+msgstr "Problèmes d'installation ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:791
+msgid ""
+"<b>Ooops...</b><br><br><b>There are some reasons that make me think that "
+"your KVIrc installation is incomplete.</b><br><br>I might be wrong, but you "
+"seem to miss some of the features that the default KVIrc script provides."
+"This may happen because you have upgraded to an unstable cvs version, "
+"because you have accidentally deleted or damaged your configuration files, "
+"because you have installed an incomplete script or because you have hit a "
+"bug in KVIrc.<br><br>I can repeat the installation of the default script in "
+"order to restore the missing features.<br><b>Do you want the default script "
+"to be restored ?</b><br><br><font size=\"-1\">Hint: If you're a scripter and "
+"have intentionally removed some of the scripting features then you may "
+"safely click on \"No and Don't Ask Me Again\", otherwise it might be a good "
+"idea to click \"Yes\". If you still want to choose \"No\" you can always "
+"restore the default script by choosing the appropriate entry from the "
+"\"Scripting\" menu.</font>"
+msgstr ""
+"<b>Oups...</b><br><br><b>Il y a des raisons qui m'indiquent que votre "
+"installation de KVIrc est incomplète.</b><br><br>Je peux me tromper mais il "
+"semble qu'il va vous manquer certaines fonctionnalités fournies par le "
+"script par défaut. Cela peut se produire si vous avez mise à jour une "
+"version cvs ininstalable parceque vous avez accidentellement effacé ou abimé "
+"vos fichiers de configuration, parceque vous avez installé un script "
+"incomplet ou parceque vous avez trouvé un bogue de KVIrc.<br><br>Je peux "
+"réitérer l'installation du script par défaut pour restaurer les "
+"fonctionnalités manquantes.<br><b>Voulez-vous que le script par défaut soit "
+"restauré ?</b><br><br><font size=\"-1\">Indication : si vous êtes un "
+"scripteur et avez volontairement supprimer certaines des fonctionnalités "
+"alors vous pouvez cliquer sur \"Non et ne me le redemandez pas\", sinon il "
+"serait préférable de cliquer sur \"Oui\". Si vous désirez quand même choisir "
+"\"Non\" vous pourrez toujours restaurer le script par défaut en choisissant "
+"l'entrée approprée dans le menu \"Scripting\".</font>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:805
+msgid "No and Don't Ask Me Again"
+msgstr "Non et ne me reposez plus la question"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:828
+msgid "Restore Default Script - KVIrc"
+msgstr "Restauration du Script - KVIrc par défaut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:829
+msgid ""
+"You are about to restore the default script.<br>This will erase any script "
+"changes you have made.<br>Do you wish to proceed?"
+msgstr ""
+"Vous êtes sur le point de restaurer de script par défaut.<br>Cela va écraser "
+"tous les changements de script que vous avez effectué.<br>Voulez-vous "
+"continuer ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:872
+#, c-format
+msgid "Remote command received (%s ...)"
+msgstr "Commande distante reçue (%s ...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1033
+msgid "File download failed"
+msgstr "Le téléchargement du fichier a échoué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1035
+msgid "File download from %1 failed"
+msgstr "Le téléchargement du fichier depuis %1 a échoué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1044
+msgid "File download successfully complete"
+msgstr "Le téléchargement du fichier est terminé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1046
+msgid "File download from %1 successfully complete"
+msgstr "Le téléchargement du fichier depuis %1 est terminé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1066
+msgid "Avatar download failed for %Q!%Q@%Q and url %Q: %Q"
+msgstr "Le téléchargement de l'avatar a échoué pour %Q!%Q@%Q et l'url %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2014
+#, c-format
+msgid "The commandline for media type '%s' seems to be broken"
+msgstr ""
+"La ligne de commande pour le type de média '%s' a l'air d'être corrompue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2018
+#, c-format
+msgid "Media type of file %s matched to '%s' but no commandline specified"
+msgstr ""
+"Le type de média du fichier %s correspond à '%s' mais aucune ligne de "
+"commande spécifiée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2023
+#, c-format
+msgid "No idea on how to play file %s (no media type match)"
+msgstr ""
+"Aucun idée sur le moyen d'utiliser le fichier %s (aucun type de média "
+"correspondant)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:39
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:48
+#, c-format
+msgid "[SSL]: %c%s"
+msgstr "[SSL] : %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:40
+#, c-format
+msgid "[SSL]: Cipher: %c%s"
+msgstr "[SSL] : Chiffrement %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:41
+#, c-format
+msgid "[SSL]: Version: %c%s"
+msgstr "[SSL] : Version: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:42
+#, c-format
+msgid "[SSL]: Bits: %c%d (%d used)"
+msgstr "[SSL] : Bits : %c%d (%d utilisé)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:49
+#, c-format
+msgid "[SSL]: Version: %c%d"
+msgstr "[SSL] : Version : %c%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:50
+#, c-format
+msgid "[SSL]: Serial number: %c%d"
+msgstr "[SSL] : Numéro de série : %c%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:51
+msgid "[SSL]: Subject:"
+msgstr "[SSL] : Sujet :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:59
+#, c-format
+msgid "[SSL]: Common name: %c%s"
+msgstr "[SSL] : Nom habituel : %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:60
+#, c-format
+msgid "[SSL]: Organization: %c%s"
+msgstr "[SSL]: Organisation : %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:61
+#, c-format
+msgid "[SSL]: Organizational unit: %c%s"
+msgstr "[SSL] : Unité organisatrice : %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:62
+#, c-format
+msgid "[SSL]: Country: %c%s"
+msgstr "[SSL] : Pays : %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:63
+#, c-format
+msgid "[SSL]: State or province: %c%s"
+msgstr "[SSL] : État ou province : %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:64
+#, c-format
+msgid "[SSL]: Locality: %c%s"
+msgstr "[SSL] : Localité : %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:58
+msgid "[SSL]: Issuer:"
+msgstr "[SSL] : Émetteur :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:65
+#, c-format
+msgid "[SSL]: Public key: %c%s (%d bits)"
+msgstr "[SSL] : Clé publique : %c%s (%d bits)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:66
+#, c-format
+msgid "[SSL]: Signature type: %c%s"
+msgstr "[SSL] : Type de signature : %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:73
+#, c-format
+msgid "[SSL]: Signature contents: %c%s"
+msgstr "[SSL] : Contenu de la signature : %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:82
+msgid "Peer X509 certificate"
+msgstr "Certificat X509 du correspondant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:85
+msgid "[SSL]: The peer didn't provide a certificate"
+msgstr "[SSL] : Le correspondant n'a pas fourni de certificat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1219
+msgid "Current transmission cipher"
+msgstr "Chiffrement actuel de transmission"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:92
+msgid "[SSL]: Can't find out the current cipher info"
+msgstr ""
+"[SSL] : Impossible de trouver les informations sur le chiffrement actuel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:113
+#, c-format
+msgid "[%s]: [SSL]: Using certificate file %s"
+msgstr "[%s] : [SSL] : Utilisation du fichier de certificat %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:116
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the certificate file %s"
+msgstr ""
+"[%s] : [ERREUR SSL] : Erreur d'E/S lors en essayant d'utiliser le fichier de "
+"certificat %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:146
+#, c-format
+msgid "[%s]: [SSL ERROR]: %s"
+msgstr "[%s] : [ERREUR SSL] : %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:136
+#, c-format
+msgid "[%s]: [SSL]: Using private key file %s"
+msgstr "[%s] : [SSL] : Utilisation du fichier clé privé %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:139
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the private key file %s"
+msgstr ""
+"[%s] : [ERREUR SSL] : Erreur d'E/S lors en essayant d'utiliser le fichier "
+"clé privé %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:375
+msgid "Reconnect attempt aborted"
+msgstr "Tentative de connexion interrompue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:443
+msgid ""
+"This is the first connection in this IRC context: using the global server "
+"setting"
+msgstr ""
+"C'est la première connexion dans ce contexte IRC : utilisation des "
+"paramètres de serveur globaux"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:483
+msgid ""
+"No servers available. Check the options dialog or use the /SERVER command"
+msgstr ""
+"Aucun serveur accessible. Vérifiez les options ou utilisez la commande /"
+"SERVER"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:491
+msgid ""
+"Ooops.. you've hit a bug in the servers database... I have found a server "
+"but not a network..."
+msgstr ""
+"Oups.. vous êtes tombé sur un bug de la base des serveurs... J'ai trouvé un "
+"serveur sans réseau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:504
+msgid "No proxy hosts available, resuming direct connection"
+msgstr ""
+"Aucune machine de proxy accessible, on continue avec une connexion directe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:582
+#, c-format
+msgid "Connection attempt failed [%s]"
+msgstr "La tentative de connexion a échoué [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:600
+#, c-format
+msgid "Will attempt to reconnect in %d seconds"
+msgstr "Tentative de reconnexion dans %d secondes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:604
+#, c-format
+msgid "%d"
+msgstr "%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:606
+#, c-format
+msgid "%d of %d"
+msgstr "%d sur %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:633
+#, c-format
+msgid "Maximum number of reconnect attempts reached (%d): giving up"
+msgstr "Nombre maximal de tentatives de connexion atteint (%d) : on arrête"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:647
+msgid ""
+"The connection attempt failed while using a cached IP address for the "
+"current server"
+msgstr ""
+"La tentative de connexion a échoué en utilisation l'adresse IP en cache pour "
+"le serveur actuel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:648
+msgid "The problem *might* be caused by an updated DNS entry"
+msgstr ""
+"Le problème *peut* être dû à une mise à jour de l'entrée sur le serveur DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:649
+msgid "Try reconnecting with caching disabled"
+msgstr "Tentative de reconnexion en désactivant l'utilisation du cache"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:673
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:382
+msgid "%Q established [%s (%s:%u)]"
+msgstr "%Q établie [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Secure connection"
+msgstr "Connexion sécurisée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Connection"
+msgstr "Connexion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:779
+#, c-format
+msgid "Connection terminated [%s (%s:%u)]"
+msgstr "Connexion terminée [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:791
+msgid "The connection terminated unexpectedly. Trying to reconnect..."
+msgstr ""
+"La connexion s'est terminée sans qu'on s'y attende. Tentative de "
+"reconnexion..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:874
+msgid "Sent QUIT, waiting for the server to close the connection..."
+msgstr ""
+"Envoi de QUIT, attente de la fermeture de la connexion par le serveur..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:685
+msgid "Normal text"
+msgstr "Texte normal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:686
+msgid "Selection"
+msgstr "Sélection"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:687
+msgid "Highlighted text"
+msgstr "Texte surligné"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:688
+msgid "URL foreground"
+msgstr "Premier plan d'une URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:689
+msgid "Link overlay foreground"
+msgstr "Arrière plan d'une URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:690
+msgid "Parser error"
+msgstr "Erreur de l'analyseur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:691
+msgid "Parser warning"
+msgstr "Avertissement de l'analyseur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:692
+msgid "Host lookup result"
+msgstr "Résultat de la recherche de l'hôte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:693
+msgid "Socket message"
+msgstr "Message de socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:694
+msgid "Socket warning"
+msgstr "Avertissement de socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:695
+msgid "Socket error"
+msgstr "Erreur de socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:696
+msgid "System error"
+msgstr "Erreur système"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:697
+msgid "Raw data to server"
+msgstr "Données brutes (raw)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:698
+msgid "Connection status"
+msgstr "État de la connexion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:699
+msgid "System warning"
+msgstr "Avertissement système"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:700
+msgid "System message"
+msgstr "Message système"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:701
+msgid "Unhandled server reply"
+msgstr "Réponse du serveur non gérée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:702
+msgid "Server information"
+msgstr "Information du serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:703
+msgid "Server Message of the Day"
+msgstr "Message du jour du serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:704
+msgid "Server ping"
+msgstr "Ping du serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:705
+msgid "Join message"
+msgstr "Message de Join"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:706
+msgid "Part message"
+msgstr "Message de Part"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:707
+msgid "Unrecognized/broken message"
+msgstr "Message non reconnu/mal formaté"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:708
+msgid "Topic message"
+msgstr "Sujet de salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:709
+msgid "Own private message"
+msgstr "Message personnel envoyé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:710
+msgid "Channel private message"
+msgstr "Message sur un salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:711
+msgid "Query private message"
+msgstr "Message en privé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:712
+msgid "CTCP reply"
+msgstr "Réponse de CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:713
+msgid "CTCP request replied"
+msgstr "Requête CTCP répondue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:714
+msgid "CTCP request ignored"
+msgstr "Requête CTCP ignorée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:715
+msgid "CTCP request flood warning"
+msgstr "Avertissement de flood de CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:716
+msgid "CTCP request unknown"
+msgstr "Requête CTCP inconnue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:717
+msgid "User action"
+msgstr "Action d'un utilisateur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:718
+msgid "Avatar change"
+msgstr "Changement d'avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:719
+msgid "Quit message"
+msgstr "Message de quit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:720
+msgid "Split message"
+msgstr "Message de split"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:721
+msgid "Quit on netsplit message"
+msgstr "Message de quit sur split"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:722
+msgid "Nick changes"
+msgstr "Changement de pseudo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:723
+msgid "+o mode change"
+msgstr "Changement de mode +o"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:724
+msgid "-o mode change"
+msgstr "Changement de mode -o"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:725
+msgid "+v mode change"
+msgstr "Changement de mode +v"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:726
+msgid "-v mode change"
+msgstr "Changement de mode -v"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:727
+msgid "Multiple user mode change"
+msgstr "Multiples changements de mode utilisateur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:728
+msgid "Channel key change"
+msgstr "Changement de clé de salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:729
+msgid "Channel limit change"
+msgstr "Changement de la limite d'utilisateurs du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:730
+msgid "+b mode change"
+msgstr "Changement de mode +b"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:731
+msgid "-b mode change"
+msgstr "Changement de mode -b"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:732
+msgid "+e mode change"
+msgstr "Changement de mode +e"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:733
+msgid "-e mode change"
+msgstr "Changement de mode -e"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:734
+msgid "+I mode change"
+msgstr "Changement de mode +I"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:735
+msgid "-I mode change"
+msgstr "Changement de mode -I"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:736
+msgid "Multiple channel mode change"
+msgstr "Multiples changement de mode de salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:737
+msgid "Who reply"
+msgstr "Retour de WHO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:738
+msgid "DCC request"
+msgstr "Requête DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:739
+msgid "DCC message"
+msgstr "Message DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:740
+msgid "DCC error"
+msgstr "Erreur DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:741
+msgid "Nickname problem"
+msgstr "Problème de pseudo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:742
+msgid "Whois user reply"
+msgstr "Utilisateur en retour de WHOIS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:743
+msgid "Whois channels reply"
+msgstr "Salons en retour de WHOIS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:744
+msgid "Whois idle reply"
+msgstr "Inactivité en retour de WHOIS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:745
+msgid "Whois server reply"
+msgstr "Serveur en retour de WHOIS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:746
+msgid "Whois other reply"
+msgstr "Autres types de retour de WHOIS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:747
+msgid "Channel creation time reply"
+msgstr "Retour de la date de création du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:748
+msgid "Notify list joins"
+msgstr "Arrivée d'un utilisateur en notification"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:749
+msgid "Notify list leaves"
+msgstr "Départ d'un utilisateur en notification"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:750
+msgid "Own encrypted private message"
+msgstr "Propre message personnel chiffré"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:751
+msgid "Channel encrypted private message"
+msgstr "Message chiffré sur salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:752
+msgid "Query encrypted private message"
+msgstr "Message chiffré en privé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:753
+msgid "DCC chat message"
+msgstr "Message en DCC chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:754
+msgid "Encrypted DCC chat message"
+msgstr "Message chiffré en DCC chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:755
+msgid "Login operations completed"
+msgstr "Opérations d'enregistrement effectuées"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:756
+msgid "Kick action"
+msgstr "Message de kick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:757
+msgid "Links reply"
+msgstr "Retour de LINKS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:758
+msgid "Spam report"
+msgstr "Notification de spam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:759
+msgid "ICQ message"
+msgstr "Message ICQ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:760
+msgid "ICQ user-message"
+msgstr "Message utilisateur ICQ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:761
+msgid "Outgoing ICQ user-message"
+msgstr "Message ICQ envoyé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:762
+msgid "Channel notice"
+msgstr "Notice de salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:763
+msgid "Encrypted channel notice"
+msgstr "Notice de salon chiffrée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:764
+msgid "Query notice"
+msgstr "Notice privée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:765
+msgid "Encrypted query notice"
+msgstr "Notice privée chiffrée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:766
+msgid "Server notice"
+msgstr "Notice de serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:767
+msgid "Halfop mode change"
+msgstr "Changement de mode halfop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:768
+msgid "Unknown CTCP reply"
+msgstr "Réponse de CTCP inconnue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:769
+msgid "NickServ message"
+msgstr "Message de NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:770
+msgid "ChanServ message"
+msgstr "Message de ChanServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:771
+msgid "Away message"
+msgstr "Message d'absence"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:772
+msgid "Ident message"
+msgstr "Message d'identification"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:773
+msgid "Channel list message"
+msgstr "Liste des utilisateurs du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:774
+msgid "Half-deop mode change"
+msgstr "Changement de mode dehalfop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:775
+msgid "Invite message"
+msgstr "Message d'invitation"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:776
+msgid "Multimedia message"
+msgstr "Message type multimédia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:777
+msgid "Query trace message"
+msgstr "Message de traque en privé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:778
+msgid "Wallops message"
+msgstr "Message type WALLOPS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:779
+msgid "Join error message"
+msgstr "Message d'erreur de join"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:780
+msgid "Broadcast private message"
+msgstr "Message personnel dans des fenêtres multiples"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:781
+msgid "Broadcast notice"
+msgstr "Notice dans des fenêtres multiples"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:782
+msgid "Am kicked"
+msgstr "Je suis kické"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:783
+msgid "Am op'd"
+msgstr "Je suis opé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:784
+msgid "Am voiced"
+msgstr "Je suis voicé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:785
+msgid "Am deop'd"
+msgstr "Je suis déopé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:786
+msgid "Am devoiced"
+msgstr "Je suis dévoicé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:787
+msgid "Am halfop'd"
+msgstr "Je suis halfopé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:788
+msgid "Am de-halfop'd"
+msgstr "Je suis déhalfopé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:789
+msgid "Ban matching my mask"
+msgstr "Ban couvrant mon masque"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:790
+msgid "Unban matching my mask"
+msgstr "Déban couvrant mon masque"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:791
+msgid "Ban exception matching my mask"
+msgstr "Exception de ban couvrant mon masque"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:792
+msgid "Ban unexception matching my mask"
+msgstr "Retrait d'exception de ban couvrant mon masque"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:793
+msgid "Invite exception matching my mask"
+msgstr "Exception d'invitation couvrant mon masque"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:794
+msgid "Invite unexception matching my mask"
+msgstr "Retrait d'exception d'invitation couvrant mon masque"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:795
+msgid "Ignored user message"
+msgstr "Message d'utilisateur ignoré"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:796
+msgid "Server statistics"
+msgstr "Statistique du serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:797
+msgid "SSL message"
+msgstr "Message SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:108
+msgid "Search"
+msgstr "Recherche"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:799
+msgid "Generic success"
+msgstr "Message générique de succès"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:800
+msgid "Generic status"
+msgstr "Message générique de statut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:801
+msgid "Generic verbose message"
+msgstr "Message générique d'annonce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:802
+msgid "Generic warning"
+msgstr "Message générique d'avertissement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:803
+msgid "Generic error"
+msgstr "Message générique d'erreur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:804
+msgid "Generic critical error"
+msgstr "Message générique d'erreur critique"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:805
+msgid "Chan admin status set"
+msgstr "L'utilisateur passe administrateur du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:806
+msgid "Chan admin status unset"
+msgstr "L'utilisateur n'est plus administrateur du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:807
+msgid "Own chan admin status set"
+msgstr "Je passe administrateur du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:808
+msgid "Own chan admin status unset"
+msgstr "Je ne suis plus administrateur du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:809
+msgid "Userop mode change"
+msgstr "Mode utilisateur +o"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:810
+msgid "User-deop mode change"
+msgstr "Mode utilisateur -o"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:811
+msgid "Am userop'd"
+msgstr "Mode personnel utilisateur +o"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:812
+msgid "Am de-userop'd"
+msgstr "Mode personnel utilisateur -o"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:813
+msgid "Verbose/Debug"
+msgstr "Verbose/Débogage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:814
+msgid "Chan owner status set"
+msgstr "L'utilisateur devient propriétaire du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:815
+msgid "Chan owner status unset"
+msgstr "L'utilisateur n'est plus propriétaire du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:816
+msgid "Own chan owner status set"
+msgstr "Je passe propriétaire du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:817
+msgid "Own chan owner status unset"
+msgstr "Je ne suis plus propriétaire du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:818
+msgid "Server error"
+msgstr "Erreur du serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:22
+msgid "Help"
+msgstr "Aide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:820
+msgid "Text Encoding Server message"
+msgstr "Message d'encodage de texte du serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:826
+msgid "BitTorrent message"
+msgstr "Message BitTorrent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:970
+msgid "Missing absolute directory for the theme information"
+msgstr "Il manque le chemin absolu du dossier pour les infos du thème"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:978
+msgid "Failed to create the theme directory"
+msgstr "Impossible de créer le répertoire du thème"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1061
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1096
+msgid "Failed to save one of the theme images"
+msgstr "Impossible d'enregistrer l'une des images du thème"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1074
+msgid "Failed to create the theme subdirectory"
+msgstr "Impossible de créer le sous-répertoire du thème."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1213
+msgid "Boolean options (1/0)"
+msgstr "Options de type booléen (1/0)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1214
+msgid "Rectangle options (x,y,width,height)"
+msgstr "Option de type rectangle (x,y,largeur,hauteur)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1215
+msgid "String options (string value)"
+msgstr "Option de type chaîne (chaîne de caractères)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1216
+msgid "Color options (#RRGGBB)"
+msgstr "Options relatives aux couleurs (#RRVVBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1217
+msgid "Mirccolor options (#RRGGBB)"
+msgstr "Options relatives aux couleurs mirc (#RRVVBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1218
+msgid "Irc context color options (#RRGGBB)"
+msgstr "Options relatives aux couleurs de contexte Irc (#RRVVBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1219
+msgid "Pixmap options (image path)"
+msgstr "Options de type pixmap (chemin vers l'image)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1220
+msgid "Unsigned integer options (unsigned integer constant)"
+msgstr "Options de type entier positif (constante type entier positif ou nul)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1221
+msgid "Font options (family,pointsize,style,charset,weight,flags (biusf))"
+msgstr ""
+"Options relatives aux fontes (famille,taille des points,style,poids,drapeaux "
+"(biusf))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1222
+msgid "Message color options (image_id,foreground,background,logFlag (0/1))"
+msgstr ""
+"Options relatives aux couleurs des messages (numéro de l'image,avant plan,"
+"arrière plan,drapeau de log (0/1))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1223
+msgid "String list options (comma separated list of strings)"
+msgstr ""
+"Options relatives aux listes de chaînes (chaînes de caractères séparées par "
+"des virgules)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC"
+msgstr "IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC Context related actions"
+msgstr "Actions liées à un Contexte IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic"
+msgstr "Génériques"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic actions"
+msgstr "Actions génériques"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Settings"
+msgstr "Paramètres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Actions related to settings"
+msgstr "Paramètres relatifs aux actions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:30
+msgid "Scripting"
+msgstr "Scriptage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+msgid "Scripting related actions"
+msgstr "Action liées au scriptage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "GUI"
+msgstr "Interface"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "Actions related to the Graphic User Interface"
+msgstr "Actions liées à l'Interface Utilisateur Graphique"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:77
+msgid "Channel"
+msgstr "Salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+msgid "IRC Channel related actions"
+msgstr "Actions liées à un Salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Tools"
+msgstr "Outils"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Actions that will appear in the \"Tools\" menu"
+msgstr "Actions qui apparaîtront dans le menu \"Outils\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:157
+msgid "Sending out PING based lag probe"
+msgstr "Envoi d'un PING pour évaluer le retard"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:167
+msgid "Sending out CTCP based lag probe"
+msgstr "Envoi d'un CTCP pour évaluer le retard"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:188
+#, c-format
+msgid "Registered lag check with reliability %u (%s)"
+msgstr "La vérification fiable du retard enregistré donne %u (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:220
+#, c-format
+msgid "Lag check completed (%s)"
+msgstr "Vérification du retard terminée (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:259
+#, c-format
+msgid "Lag check aborted (%s)"
+msgstr "Vérification du retard interrompue (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:143
+msgid "Hostname resolution aborted"
+msgstr "Résolution du nom de la machine interrompue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:156
+msgid "Attempting %Q to %Q (%Q) on port %u"
+msgstr "Tentative de %Q vers %Q (%Q) au port %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "secure connection"
+msgstr "connexion sécurisée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "connection"
+msgstr "connexion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:165
+#, c-format
+msgid "Attempting to 'bounce' on proxy %s on port %u (protocol %s)"
+msgstr "Essaie de 'rebondir' sur le proxy %s au port %u (protocole %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:194
+#, c-format
+msgid "Using cached proxy IP address (%s)"
+msgstr "Utilisation de l'adresse IP du proxy (%s) encore en mémoire"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:237
+msgid "Unable to look up the IRC proxy hostname: Can't start the DNS slave"
+msgstr ""
+"Impossible de résoudre le nom de machine du proxy IRC : Impossibilité de "
+"démarrer le DNS esclave"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:265
+msgid "Resuming direct server connection"
+msgstr "Poursuite de la connexion directe au serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:248
+#, c-format
+msgid "Looking up the proxy hostname (%s)..."
+msgstr "Résolution du nom de machine du proxy (%s)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:261
+msgid "Can't find the proxy IP address: %Q"
+msgstr "Impossible de trouver l'adresse IP : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:271
+msgid "Proxy hostname resolved to %Q"
+msgstr "Hôte du proxy résolu en %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:284
+msgid "Proxy %Q has a nickname: %Q"
+msgstr "Le proxy %s a le pseudonyme : %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:322
+#, c-format
+msgid "Using cached server IP address (%s)"
+msgstr "Utilisation de l'adresse IP du serveur encore en mémoire (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:354
+msgid "Unable to look up the server hostname: Can't start the DNS slave"
+msgstr ""
+"Impossible de résoudre le nom de machine du serveur : Impossible de lancer "
+"le DNS esclave"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:359
+#, c-format
+msgid "Looking up the server hostname (%s)..."
+msgstr "Résolution du nom de machine du serveur (%s)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:373
+msgid "Can't find the server IP address: %Q"
+msgstr "Impossible de trouver l'adresse IP du serveur : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:380
+msgid "If this server is an IPv6 one, try /server -i %Q"
+msgstr "Si ce serveur est de type IPV6, essayez /server -i %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:390
+msgid "Server hostname resolved to %Q"
+msgstr "Nom de machine du serveur résolu en %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:400
+msgid "Real hostname for %Q is %Q"
+msgstr "Le nom de machine réel pour %Q est %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:414
+msgid "Server %Q has a nickname: %Q"
+msgstr "Le serveur %Q a le pseudonyme : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:468
+msgid "The specified bind address (%Q) is not valid"
+msgstr "L'adresse de lien spécifiée (%Q) n'est pas valable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:473
+msgid ""
+"The specified bind address (%Q) is not valid (the interface it refers to "
+"might be down)"
+msgstr ""
+"L'adresse de lien spécifiée (%Q) n'est pas valable (l'interface associée "
+"semble désactivée)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:493
+#, c-format
+msgid "The system-wide IPv6 bind address (%s) is not valid"
+msgstr "L'adresse générale de lien IPv6 (%s) est invalide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:500
+#, c-format
+msgid ""
+"The system-wide IPv6 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+"L'adresse générale de lien IPv6 (%s) est invalide (l'interface associée est "
+"surement désactivée)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:522
+#, c-format
+msgid "The system-wide IPv4 bind address (%s) is not valid"
+msgstr "L'adresse de lien générale IPv4 spécifiée (%s) n'est pas valable "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:529
+#, c-format
+msgid ""
+"The system-wide IPv4 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+"L'adresse générale de lien IPv$ (%s) est invalide (l'interface associée est "
+"surement désactivée)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:230
+msgid "Channel operators"
+msgstr "Opérateurs de salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:231
+msgid "Voiced users"
+msgstr "Utilisateurs voicés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:232
+msgid "Half-operators"
+msgstr "Demi-opérateurs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:233
+msgid "Ban masks"
+msgstr "Masques de ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:234
+msgid "Color free (no ANSI colors)"
+msgstr "Sans couleur (pas de couleur ANSI)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:235
+msgid "Ban exception masks"
+msgstr "Masques d'exception de ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:236
+msgid "Invite exception masks or forbid /INVITE"
+msgstr "Masques d'exception d'invitation ou interdiction de /INVITE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:237
+msgid "Secret"
+msgstr "Secret"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:238
+msgid "Private"
+msgstr "Privé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:239
+msgid "Topic change restricted"
+msgstr "Changement de sujet restreint"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:240
+msgid "Invite only"
+msgstr "Sur invitation seulement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:241
+msgid "No external messages"
+msgstr "Pas de message extérieurs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:242
+msgid "Anonymous or protected user"
+msgstr "Utilisateur protégé ou anonyme"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:243
+msgid "Quiet or channel owner"
+msgstr "Silencieux ou propriétaire du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:244
+msgid "Limited number of users"
+msgstr "Nombre limité d'utilisateurs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:245
+msgid "Key"
+msgstr "Clé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:246
+msgid "Moderated"
+msgstr "Modéré"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:247
+msgid "Registered"
+msgstr "Enregistré"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:248
+msgid "Censor swear words"
+msgstr "Censure des jurons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:249
+msgid "Impossible to speak and change nick if not authenticated with NickServ"
+msgstr ""
+"Impossible de parler et de changer de pseudo si vous n'êtes pas authentifié "
+"à NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:250
+msgid "Impossible to change nick if not authenticated with NickServ"
+msgstr ""
+"Impossible de changer de pseudo si vous n'êtes pas authentifié à NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:251
+msgid "Only registered nicks can join"
+msgstr "Seuls les utilisateurs enregistrés pour venir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:252
+msgid "No kicks able (unless U-Line)"
+msgstr "Kicks impossibles (sauf si U-Line)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:253
+msgid "IRC-Op only channel"
+msgstr "Salon seulement pour IRC-Op"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:254
+msgid "Server/Network/Tech Admin only channel"
+msgstr "Salon seulement pour Administrateur de Serveur/Réseau/Technique "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:255
+msgid "Forbid /KNOCK"
+msgstr "/KNOCK interdit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:256
+msgid "Strip colors"
+msgstr "Suppression des couleurs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:257
+msgid "Redirect on channel full"
+msgstr "Redirigé si salon rempli"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:258
+msgid "Forbid channel CTCPs"
+msgstr "CTCPs de salon interdits"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:259
+msgid "User-operators OR Auditorium: /NAMES and /WHO show only ops"
+msgstr "Opérateurs OU Auditorium : /NAME et /WHO ne montrent que les ops"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:260
+msgid "Only 7-bit letters in nicknames allowed"
+msgstr "Seules les lettres codées sur 7 octets sont admises dans les pseudos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:261
+msgid "Impossible to use both 7-bit and 8-bit letters in nicknames"
+msgstr ""
+"Impossible d'utiliser à la fois les lettres codées sur 7 et 8 octets dans "
+"les pseudos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:270
+msgid "o: IRC operator (OPER)"
+msgstr "o : Opérateur IRC (OPER)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:271
+msgid "O: Local IRC operator (LOCOP)"
+msgstr "O : Local IRC opérateur (LOCOP)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:272
+msgid "i: Invisible"
+msgstr "i : invisible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:273
+msgid "w: Recipient for WALLOPS messages"
+msgstr "w : Destinataire des messages WALLOPS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:274
+msgid ""
+"r: User with restricted connection (or recipient for messages about rejected "
+"bots)"
+msgstr ""
+"r : Utilisateur avec une connexion restreinte (ou destinataire des messages "
+"sur les bots rejetés)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:275
+msgid "s: Recipient for server notices"
+msgstr "s : Destinataire des notices de serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:276
+msgid "z: Recipient for oper wallop messages"
+msgstr "z : Destinataire des messages wallops aux opers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:277
+msgid "c: Recipient for cconn messages"
+msgstr "c : Destinataire des messages de connexion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:278
+msgid "k: Recipient for server kill messages"
+msgstr "k : Destinataire des messages de kill"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:279
+msgid "f: Recipient for full server notices"
+msgstr "f : Destinataire de toutes les notices de serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:280
+msgid "y: Spy :)"
+msgstr "y : Espion :)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:281
+msgid "d: Obscure 'DEBUG' flag"
+msgstr "d : Obscur drapeau de DÉBOGUE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:282
+msgid "n: Recipient for nick changes"
+msgstr "n : Destinataire des changements de pseudo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:100
+msgid "Ops... for some reason the link filter object has been destroyed"
+msgstr ""
+"Oups... l'objet de filtre de lien a été détruit pour une raison quelconque"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:138
+msgid "Using filtered IRC protocol: Link filter is \"%Q\""
+msgstr "Utilisation filtrée du protocole IRC : Le filtre de lien est \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:143
+msgid "Failed to set up the link filter \"%Q\", will try with plain IRC"
+msgstr ""
+"Échec lors de l'initialisation du filtre de lien \"%Q\", essai avec un lien "
+"IRC direct"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:202
+msgid "Failed to start the connection: %Q"
+msgstr "Impossible de démarrer la connexion : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:368
+msgid "Contacting %Q %s (%s) on port %u"
+msgstr "Contact du%Q %s (%s) sur le port %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "proxy host"
+msgstr "serveur proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "IRC server"
+msgstr "serveur IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:375
+#, c-format
+msgid "Low-level transport connection established [%s (%s:%u)]"
+msgstr "Connexion de transport bas niveau établie [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:379
+msgid "Starting Secure Socket Layer handshake"
+msgstr "Démarrage de la Couche de socket Sécurisée (SSL)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Secure proxy connection"
+msgstr "Connexion sécurisée via proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Proxy connection"
+msgstr "Connexion par proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:387
+msgid "Negotiating relay information"
+msgstr "Information sur la négociation du relai"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:390
+msgid "Sent connection request, waiting for acknowledgement"
+msgstr "Requête de connexion effectuée, attente de l'accord"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:393
+msgid "Sent target host data, waiting for acknowledgement"
+msgstr "Données pour la machine cible envoyées, attente de l'accord"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:396
+msgid "Sent auth method request, waiting for acknowledgement"
+msgstr "Requête sur la méthode d'authentification envoyée, attente de l'accord"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:399
+msgid "Sent username and password, waiting for acknowledgement"
+msgstr "Identifiant et mot de pass envoyés, attente de l'accord"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:402
+msgid "Sent connection request, waiting for \"HTTP 200\" acknowledgement"
+msgstr "Requête de connexion lancée, attente de l'accord pour \"HTTP 200\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:176
+msgid "[SSL]: %Q"
+msgstr "[SSL]&nbsp;: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:181
+msgid "[SSL ERROR]: %Q"
+msgstr "[ERREUR SSL]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:190
+msgid "[PROXY]: %Q"
+msgstr "[PROXY]&nbsp;: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:200
+msgid "[PROXY ERROR]: %Q"
+msgstr "[ERREUR DE PROXY]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:207
+msgid "[SOCKET]: %Q"
+msgstr "[SOCKET]&nbsp;: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:212
+msgid "[SOCKET ERROR]: %Q"
+msgstr "[ERREUR DE SOCKET]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:218
+msgid "[SOCKET WARNING]: %Q"
+msgstr "[AVERTISSEMENT SOCKET] : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:337
+#, c-format
+msgid "Binding to local address %s"
+msgstr "Lien à l'adresse locale %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:341
+#, c-format
+msgid ""
+"Binding to local address %s failed: the kernel will choose the correct "
+"interface"
+msgstr ""
+"Le lien à l'adresse locale %s a échoué&nbsp;: le noyau va choisir "
+"l'interface appropriée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:637
+msgid "Using HTTP protocol."
+msgstr "Utilisation du protocole HTTP."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:683
+msgid "Using SOCKSV4 protocol."
+msgstr "Utilisation du protocole SOCKSV4."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:756
+msgid "Using SOCKSv5 protocol."
+msgstr "Utilisation du protocole SOCKSv5."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:771
+msgid "We can accept auth method 0 (no auth)"
+msgstr ""
+"Acceptation possible de la méthode d'authentification 0 (pas "
+"d'authentification)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:779
+msgid "We can accept auth method 0 (no auth) or 2 (user/pass)"
+msgstr ""
+"Acceptation possible de la méthode d'authentification 0 (pas "
+"d'authentification) ou 2 (identifiant/mot de pass)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:958
+msgid "Proxy response: auth OK: access granted"
+msgstr "Réponse du proxy : Authentification réussie : accès accordé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:993
+msgid "Proxy response: Auth method OK: using method 0 (no auth)"
+msgstr ""
+"Réponse du proxy : Authentification réussie : utilisation de ma méthode 0 "
+"(pas d'authentification)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1000
+msgid "Proxy response: Auth method OK: using method 2 (user/pass)"
+msgstr ""
+"Réponse du proxy : Authentification réussie : utilisation de ma méthode 2 "
+"(identifiant/mot de pass)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1056
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1113
+msgid "Proxy response: target data OK: request granted"
+msgstr "Réponse du proxy : données sur la cible correctes : accès accordé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1153
+msgid "Proxy response: "
+msgstr "Réponse du proxy : "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1164
+msgid "Proxy said something about: \n"
+msgstr "Le proxy a dit quelque chose à propos de : \n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1205
+msgid "Server X509 certificate"
+msgstr "Certificat de serveur X509"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1209
+msgid "The server didn't provide a certificate"
+msgstr "Le serveur n'a pas fourni un certificat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1223
+msgid "Unable to determine the current cipher"
+msgstr "Impossible de déterminer le chiffrement actuel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1768
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1788
+msgid "Partial socket write: packet broken into smaller pieces."
+msgstr "Écriture partielle du socket : paquet brisé en éléments plus petits."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:60
+msgid "The theme information file does not exist"
+msgstr "Le fichier d'infos du thème n'existe pas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:71
+msgid ""
+"This KVIrc executable is too old for this theme (minimum theme engine "
+"version required is %Q while this theme engine has version %s)"
+msgstr ""
+"Cet executable KVIrc est trop ancienpour utiliser ce thème (la version "
+"minimale requise est %Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:80
+msgid "Theme information file is not valid"
+msgstr "Les infos du thème ne sont pas valides"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:248
+msgid "Failed to load the specified screenshot image"
+msgstr "Impossible de charger la capture d'écran sélectionnée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:257
+msgid "Invalid option"
+msgstr "Option invalide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:265
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:293
+msgid "Failed to save the screenshot image"
+msgstr "Impossible d'enregistrer la capture d'écran"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:117
+msgid "Configure Servers..."
+msgstr "Configurer les Serveurs..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:118
+msgid "Allows you to configure the servers and eventually to connect to them"
+msgstr ""
+"Vous permet de configurer les serveurs et de vous y connecter éventuellement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:128
+msgid "Manage Addons..."
+msgstr "Gérer les Addons..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:129
+msgid "Allows you to manage the script-based addons"
+msgstr "Vous permet de gérer addons scripts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:139
+msgid "Configure Registered Users..."
+msgstr "Configurer les Utilisateurs Enregistrés..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:140
+msgid "Shows a dialog that allows editing the registered user entries"
+msgstr ""
+"Ouvre une fenêtre qui vous permet d'éditer les données des utilisateurs "
+"enregistrés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:150
+msgid "Configure Identity..."
+msgstr "Configurer l'Identité..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:151
+msgid "Allows you to configure nickname, username, avatar etc..."
+msgstr "Vous permet de configurer le pseudo, l'identifiant, l'avatar, etc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:161
+msgid "Show SocketSpy..."
+msgstr "Ouvrir le Socket Espion..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:162
+msgid "Shows a window that allows monitoring the socket traffic"
+msgstr "Ouvre une fenêtre qui permet de surveiller le traffic de votre socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:172
+msgid "Get Network Links"
+msgstr "Récupérer les Liens du Réseau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:173
+msgid "Shows a window that allows viewing the network links"
+msgstr "Ouvre une fenêtre qui permet de voir les liens du réseau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:183
+msgid "Get Channel List"
+msgstr "Récupérer la Liste des Salons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:184
+msgid "Shows a window that allows listing the network channels"
+msgstr "Ouvre une fenêtre qui permet de lister les salons du réseau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:194
+msgid "Configure KVIrc..."
+msgstr "Configurer KVIrc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:195
+msgid "Shows the general options dialog"
+msgstr "Ouvrir la boîte de dialogue des options générales"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:205
+msgid "Configure Theme..."
+msgstr "Configurer le Thème..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:206
+msgid "Shows the theme options dialog"
+msgstr "Ouvrir la boîte de dialogue des thèmes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:216
+msgid "Manage Themes..."
+msgstr "Configurer les Thèmes..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:217
+msgid "Allows you to manage the themes"
+msgstr "Vous permet de gérer les thèmes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:227
+msgid "Customize Toolbars..."
+msgstr "Personnalisér les Barres d'Outils..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:228
+msgid "Shows a window that allows editing script toolbars"
+msgstr ""
+"Ouvre une fenêtre qui vous permet d'éditer les scripts des barres d'outils"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:239
+msgid "Join Channels..."
+msgstr "Joindre des Salons..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:240
+msgid "Shows a dialog that allows you joing channels"
+msgstr "Ouvre une boîte de dialogue qui vous permet de rejoindre des salons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:251
+msgid "Edit Actions..."
+msgstr "Éditer les Actions..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:252
+msgid "Shows a window that allows editing actions"
+msgstr "Ouvre une fenêtre qui vous permet d'éditer les actions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:262
+msgid "Edit Aliases..."
+msgstr "Éditer les Alias..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:263
+msgid "Shows a window that allows editing aliases"
+msgstr "Ouvre une fenêtre qui vous permet d'éditer les alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:273
+msgid "Edit Events..."
+msgstr "Éditer les Événements..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:274
+msgid "Shows a window that allows editing script events"
+msgstr "Ouvre une fenêtre qui vous permet d'éditer les événements"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:284
+msgid "Edit Popups..."
+msgstr "Éditer les Popups..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:285
+msgid "Shows a window that allows editing popup menus"
+msgstr "Ouvre une fenêtre qui vous permet d'éditer les menus de popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:295
+msgid "Edit Raw Events..."
+msgstr "Éditer les Événements Raw..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:296
+msgid "Shows a window that allows editing raw scripting events"
+msgstr ""
+"Ouvre une fenêtre qui vous permet d'édtier les scripts des événements raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:306
+msgid "New Script Tester"
+msgstr "Nouveau Testeur de Script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:307
+msgid "Creates an embedded editor for long scripts"
+msgstr "Ouvre un éditeur interne pour les scripts longs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:317
+msgid "Execute Script..."
+msgstr "Executer un Script..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:318
+msgid "Allows executing a KVS script from file"
+msgstr "Permet d'executer un script KVS depuis un fichier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:328
+msgid "Help Index"
+msgstr "Index de l'Aide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:329
+msgid "Shows the documentation index"
+msgstr "Ouvre l'index de la documentaion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:340
+msgid "Allows subscribing to the KVIrc mailing list"
+msgstr "Souscrire à la Liste de Diffusion de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:350
+msgid "KVIrc WWW"
+msgstr "Site web de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:351
+msgid "Opens the KVIrc homepage"
+msgstr "Page d'Acceuil de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:361
+msgid "KVIrc Russian WWW"
+msgstr "Site Russe de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:362
+msgid "Opens the KVIrc homepage in russian"
+msgstr "Ouvrir la Page d'Acceuil de KVIrc en russe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:372
+msgid "Acquire Screenshot"
+msgstr "Faire une capture d'écran"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:373
+msgid "Acquires a Screenshot of the KVIrc main window"
+msgstr "Faire une capture d'écran de la fenêtre principale de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:385
+msgid "Cascade windows"
+msgstr "Fenêtres en cascade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:386
+msgid "Arranges the MDI windows in a maximized-cascade fashion"
+msgstr "Arranger les fenêtres MDI en cascade et maximisée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:397
+msgid "Tile windows"
+msgstr "Fenêtres en mosaïque"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:398
+msgid "Tiles the MDI windows with the currently selected tile method"
+msgstr ""
+"Forme une mosaïque de fenêtres MDI selon la méthode de mosaïque en cours"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:409
+msgid "Minimize all windows"
+msgstr "Réduire toutes les fenêtres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:410
+msgid "Minimized all the currently visible MDI windows"
+msgstr "Réduire toutes les fenêtres MDI visibles"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:421
+msgid "New IRC Context"
+msgstr "Nouveau Contexte IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:422
+msgid "Creates a new IRC context console"
+msgstr "Crée une nouvelle console de contexte IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:433
+msgid "Quit KVIrc"
+msgstr "Quitter KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:434
+msgid "Quits KVIrc closing all the current connections"
+msgstr "Quitte KVIrc en fermant toutes les connexions en cours"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:448
+msgid "IRC Context Display"
+msgstr "Afficheur de Contexte IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:449
+msgid "Shows a small display with IRC context informations"
+msgstr "Ouvre un petit afficheur avec des information sur lecontexte IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:520
+msgid "Acts as a separator for other items: performs no action"
+msgstr "Séparateur pour les autres éléments : n'effectue aucune action"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:554
+msgid "Connect/Disconnect"
+msgstr "Connexion/Déconnexion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:555
+msgid ""
+"Allows you to connect to a server or to terminate the current connection"
+msgstr ""
+"Vous permet de vous connecter à un serveur ou de terminer la session en cours"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:628
+msgid "Connect"
+msgstr "Se connecter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:629
+msgid "Abort Connection"
+msgstr "Interrompre la connexion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:790
+msgid "Join Channel"
+msgstr "Joindre un Salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:791
+msgid "Shows a popup menu that allows quickly selecting a channel to join"
+msgstr ""
+"Ouvre un menu de popup qui permet de selectionner rapidement un salon à "
+"joindre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:851
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:863
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:896
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:907
+msgid "Other..."
+msgstr "Autre..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:834
+msgid "Change Nickname"
+msgstr "Changer de Pseudo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:835
+msgid "Shows a popup menu that allows quickly changing the nickname"
+msgstr "Ouvre un menu de popup qui permet de changer rapidement de pseudo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:883
+msgid "Connect To"
+msgstr "Se Connecter à"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:884
+msgid "Shows a popup menu that allows quickly connecting to a server"
+msgstr ""
+"Ouvre un menu de popup qui permet de se connecter rapidement à un serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:929
+msgid "User Mode"
+msgstr "Mode utilisateur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:930
+msgid "Shows a popup menu that allows quickly changing user modes"
+msgstr ""
+"Ouvre un menu de popup qui permet de changer rapidement de mode utilisateur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:947
+msgid "Wallops (+w)"
+msgstr "Wallops (+w)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:949
+msgid "Server Notices (+s)"
+msgstr "Notices Serveur (+s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:951
+msgid "Invisible (+i)"
+msgstr "Invisible (+i)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:997
+msgid "Away/Back"
+msgstr "Absence/Retour"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:998
+msgid "Allows entering and leaving away state"
+msgstr "Permet d'entrer et sortir du mode d'absence"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1065
+msgid "Enter Away Mode"
+msgstr "Entrer le mode d'absence"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1066
+msgid "Leave Away Mode"
+msgstr "Sortir du mode d'absence"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1135
+msgid "Irc Tools"
+msgstr "Outils IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1136
+msgid "Shows a popup menu with some IRC Tools"
+msgstr "Ouvre un menu de popup avec quelques outils IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1171
+msgid "Irc Actions"
+msgstr "Actions IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1172
+msgid "Shows a popup menu with some IRC Actions"
+msgstr "Ouvre un menu de popup avec quelques actions IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:412
+msgid "KVIrc KVS Script"
+msgstr "KVS Script pour KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:174
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:420
+msgid "Run KVS Script"
+msgstr "Exécuter script KVS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:284
+msgid "URL:IRC Protocol"
+msgstr "URL : Protocole IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:383
+msgid "Open with KVIrc"
+msgstr "Ouvrir avec KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:436
+msgid "KVIrc Configuration File"
+msgstr "Fichier de configuration de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:453
+msgid "KVIrc Theme Package"
+msgstr "Paquet de thème KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:461
+msgid "Install Theme Package"
+msgstr "Installer un theme"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:478
+msgid "KVIrc Addon Package"
+msgstr "Paquet d'addon pour KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:486
+msgid "Install Package"
+msgstr "Installer le paquet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:749
+#, c-format
+msgid ""
+"Ops...it looks like I can't load modules on this sytem.\n"
+"I have been looking for the %s library but I haven't been able to load it\n"
+"due to the following error: \"%s\"\n"
+"Aborting."
+msgstr ""
+"Oups... il semble que je ne puisse charger les modules sur ce système.\n"
+"J'ai cherché la librairie %s mais je n'ai pas pu la trouver et la charger\n"
+"en raison de l'erreur suivante : \"%s\"\n"
+"Interruption."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:762
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_begin\" function.\n"
+"Aborting!"
+msgstr ""
+"Oups.. il semble que vous avez un distribution corrompue.\n"
+"Le module d'installation n'exporte pas la fonction \"setup_begin\" "
+"Interruption !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:776
+msgid "Setup aborted"
+msgstr "Installation interrompue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:801
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_finish\" function.\n"
+"Trying to continue anyway..."
+msgstr ""
+"Oups.. il semble que vous ayez une distribution corrompue.\n"
+"Le module d'installation n'exporte pas la fonction \"setup_begin\" Tentative "
+"malgré cela..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:186
+msgid "%Q is on IRC"
+msgstr "%Q est sur IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:248
+msgid "%Q has left IRC"
+msgstr "%Q a quitté IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:368
+msgid "Notify list: No users to check for, quitting"
+msgstr "Liste de notifications :Aucun utilisateur a vérifier, on arrête"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:414
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (15 sec)"
+msgstr ""
+"Liste de notifications : Temps d'expiration (%d sec) trop rapide, choix "
+"d'une valeur plus raisonnable (15 sec)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:428
+msgid "Notify list: Notify list empty, quitting"
+msgstr "Liste de notifications : Liste vide, donc on quitte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:455
+#, c-format
+msgid ""
+"Notify list: ISON delay (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+"Liste de notifications : Délai de ISON (%d sec) trop court, choix d'une "
+"valeur plus raisonnable (5 sec)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:491
+msgid "Notify list: Checking for: %Q"
+msgstr "Liste de notifications : Vérification de : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:535
+msgid ""
+"Notify list: Hey! You've used ISON behind my back? (I might be confused "
+"now...)"
+msgstr ""
+"Liste de notifications : Hey ! Vous avez utilisé ISON dans mon dos ? (je "
+"risque de me mélanger les pinceaux maintenant...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:682
+msgid "registration mask changed, or nickname is being used by someone else"
+msgstr ""
+"le mask d'enregistrement a changé, ou le pseudonyme est utilisé par "
+"quelqu'un d'autre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:686
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (registration mask does not match, or nickname is being used "
+"by someone else)"
+msgstr ""
+"Liste de notifications : \r!n\r%Q\r semble être connecté, mais son mask [%Q@"
+"\r!h\r%Q\r] n'est pas le bon (le mask ne correspond pas a celui de "
+"l'enregistrement, ou le pseudonyme est utilisé par quelqu'un d'autre)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:691
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? "
+"(restarting)"
+msgstr ""
+"Liste de notifications : Inconsistance inattendue, la base de donnée des "
+"utilisateurs enregistrés a été modifiée ? (rechargement)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:698
+msgid ""
+"Notify list: Unexpected inconsistency, expected \r!n\r%Q\r in the registered "
+"user DB"
+msgstr ""
+"Liste de notifications : Inconsistance, \r!n\r%Q\r aurait dû être dans la "
+"base de donnée des utilisateurs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:712
+#, c-format
+msgid ""
+"Notify list: USERHOST delay (%d sec) is too short, resetting to something "
+"more reasonable (5 sec)"
+msgstr ""
+"Liste de notifications : le délai entre USERHOST (%d sec) est trop court, "
+"choix d'une valeur plus raisonnable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:726
+msgid "Notify list: Unexpected inconsistency, userhost list is empty!"
+msgstr "Liste de notifications : Inconsistance inattendue, userhost est vide !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:761
+msgid "Notify list: Checking userhost for: %Q"
+msgstr "Liste de notifications : Vérification de l'userhost pour : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:831
+msgid ""
+"Notify list: Hey! You've used USERHOST behind my back? (I might be confused "
+"now...)"
+msgstr ""
+"Liste de notifications : Hey ! Vous avez utilisé USERHOST dans mon dos ? (Je "
+"risque de me mélanger les pinceaux maintenant...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:836
+#, c-format
+msgid "Notify list: Broken USERHOST reply from the server? (%s)"
+msgstr "Liste de notifications : réponse d'USERHOST mal formatée ? (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:860
+msgid ""
+"Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST reply "
+"was received, will recheck in the next loop"
+msgstr ""
+"Liste de notifications : \r!n\r%Q\r semble s'être déconnecté avant le retour "
+"du USERHOST, nouvelle vérification au prochain passage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:931
+msgid "Starting notify list"
+msgstr "Mise en route de la liste de notifications"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:936
+msgid "No users in the notify list"
+msgstr "Aucun utilisateur dans la liste de notifications"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:958
+msgid "Notify list: Checking for:%Q"
+msgstr "Liste de notifications : Vérification de : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1013
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+"Liste de notifications : Le temps d'expiration (%d sec) est trop court, "
+"choix d'une valeur plus raisonnable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1139
+msgid "Notify list: Adding watch entries for%Q"
+msgstr "Liste de notifications : Ajout une entrée de type watch pour %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1171
+msgid "watch entry listing requested by user"
+msgstr "listage des entrées watch demandée par l'utilisateur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1175
+msgid "possible watch list desync"
+msgstr "possible désynchronisation de la liste watch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1185
+msgid "registration mask changed or desync with the watch service"
+msgstr "le mask a changé ou désynchronisation avec le service watch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1190
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (watch: registration mask does not match, or nickname is "
+"being used by someone else)"
+msgstr ""
+"Liste de notifications : \r!n\r%Q\r semble connecté, mais le mask [%Q@\r!h\r%"
+"Q\r] ne correspond pas (watch: le mask d'enregistrement ne correspond pas, "
+"ou le pseudo est utilisé par quelqu'un d'autre)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1197
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? (watch: "
+"restarting)"
+msgstr ""
+"Liste de notifications : Inconsistance inattendue, la liste des utilisateurs "
+"enregistrés a-t-elle changé ? (watch: relance)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1207
+msgid "watch entry added by user"
+msgstr "entrée watch ajoutée par l'utilisateur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1245
+msgid "removed from watch list"
+msgstr "supprimé de la liste watch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1248
+msgid "Notify list: Stopped watching for \r!n\r%Q\r"
+msgstr ""
+"Liste de notifications : Interruption de la vérification watch de \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1258
+msgid "watch"
+msgstr "watch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1264
+msgid "Notify list: \r!n\r%Q\r is offline (watch)"
+msgstr "Liste de notifications : \r!n\r%Q\r est déconnecté (watch)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1267
+msgid "unmatched watch list entry"
+msgstr "hors liste watch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:80
+msgid "commandline::userfriendly"
+msgstr "commandline::userfriendly"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:94
+msgid "commandline::kvs"
+msgstr "commandline::kvs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:127
+msgid "You are not connected to a server"
+msgstr "Vous n'êtes pas connecté à un serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_iconmanager.cpp:372
+msgid "Icon Table"
+msgstr "Tableau d'icônes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:190
+msgid "No "
+msgstr "Aucun "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:196
+msgid "This module has no version informations: refusing to load it"
+msgstr ""
+"Ce module n'a pas d'information relative à sa version : refus de chargement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:204
+msgid ""
+"This module was compiled for a different KVIrc version and can't be loaded"
+msgstr ""
+"Ce module à été compilé pour une version différente de KVIrc et ne peut être "
+"chargé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:232
+msgid "Failed to execute the init routine"
+msgstr "Impossible d'executer la fonction d'initialisation"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:261
+#, c-format
+msgid "Loaded module '%s' (%s)"
+msgstr "Module chargé %s' (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:306
+#, c-format
+msgid "Unloaded module '%s'"
+msgstr "Module dechargé '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:45
+msgid "This window has no associated irc context"
+msgstr "Cette n'a pas de contexte IRC associé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:50
+#, c-format
+msgid "No such irc context (%d)"
+msgstr "Mauvais contexte IRC (%d)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:147
+msgid "Global idle timer must be started before using $my.globalIdle function"
+msgstr ""
+"Le chronomètre d'activité globale doit être démarré avant d'utiliser la "
+"fonction $my.globalIdle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:103
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:215
+msgid "Window %Q not found"
+msgstr "Fenêtre %Q introuvable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:108
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:220
+msgid "Missing window id after the 'w' switch"
+msgstr "Il manque l'identifiant de la fenêtre après le l'option 'w'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:121
+msgid "Can't log to file %Q"
+msgstr "Impossible de journaliser vers le fichier %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:123
+msgid "This window has no logging capabilities"
+msgstr "Cette fenêtre n'a pas de possibilité de journalisation"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:275
+msgid "Window with id '%Q' not found, returning empty string"
+msgstr ""
+"Fenêtre ayant pour identifiant '%Q introuvable, on retourne une chaîne de "
+"caractère vide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:598
+msgid "Sound file '%Q' not found"
+msgstr "Le fichier de son '%Q' est introuvable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:604
+msgid "Unable to play sound '%Q'"
+msgstr "Impossible de jouer le son '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:615
+msgid "Sorry , I can't find a sound system to use on this machine"
+msgstr ""
+"Désolé, je n'arrive pas à trouver un son système utilisable sur cette machine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:617
+#, c-format
+msgid "Sound system detected to: %s"
+msgstr "Son système détecté à : %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:141
+msgid "Show at startup"
+msgstr "Montrer au démarrage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:154
+msgid "Did you know..."
+msgstr "Saviez vous que..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:220
+msgid "<b>Can't find any tip... :(</b>"
+msgstr "<b>Impossible de trouver la moindre astuce... :(</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1544
+msgid "%Q algorytm is not supported"
+msgstr "L'algorythme %Q n'est pas disponible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1566
+msgid ""
+"KVIrc is compiled without OpenSSL support. $str.digest function disabled"
+msgstr ""
+"KVIrc a été compilé sans le support OpenSSL. La fonction $str.digest est "
+"désactivée."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2030
+msgid "Invalid argument for ?d escape sequence, 0 assumed"
+msgstr "Argument invalide pour la séquence ?d, on assume 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2034
+msgid "Missing argument for ?d escape sequence, 0 assumed"
+msgstr "Il manque l'argument de la séquence ?d, on assume 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2066
+msgid "Invalid argument for ?u escape sequence, 0 assumed"
+msgstr "Argument invalide pour la séquence ?u, on assume 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2070
+msgid "Missing argument for ?u escape sequence, 0 assumed"
+msgstr "Il manque l'argument de la séquence ?u, on assume 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2097
+msgid "Invalid argument for ?x escape sequence, 0 assumed"
+msgstr "Argument invalide pour la séquence ?x, on assume 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2101
+msgid "Missing argument for ?x escape sequence, 0 assumed"
+msgstr "Il manque l'argument de la séquence ?x, on assume 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2128
+msgid "Invalid argument for ?X escape sequence, 0 assumed"
+msgstr "Argument invalide pour la séquence ?X, on assume 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2132
+msgid "Missing argument for ?X escape sequence, 0 assumed"
+msgstr "Il manque l'argument de la séquence ?X, on assume 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2189
+msgid "Invalid argument for a floating point escape sequence, 0.0 assumed"
+msgstr "Argument invalide pour une séquence de réel flottant, on assume 0.0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2193
+msgid "Missing argument for a floating point escape sequence, 0.0 assumed"
+msgstr "Argument manquant pour une séquence de réel flottant, on assume 0.0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:87
+msgid "Show URL List"
+msgstr "Montrer la liste d'URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:88
+msgid "Shows the URL list window"
+msgstr "Montrer la fenêtre de la liste d'URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:124
+msgid "&Configure"
+msgstr "&Configurer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:126
+msgid "Clo&se"
+msgstr "&Fermer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:127
+msgid "&Module"
+msgstr "&Module"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:130
+msgid "&Load"
+msgstr "Char&ger"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:131
+msgid "&Save"
+msgstr "&Enregistrer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:132
+msgid "&Clear"
+msgstr "E&ffacer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:133
+msgid "&List"
+msgstr "&Liste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:136
+msgid "URL"
+msgstr "URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:137
+msgid "Window"
+msgstr "Fenêtre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:138
+msgid "Count"
+msgstr "Compteur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:139
+msgid "Timestamp"
+msgstr "Date"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:113
+msgid "Warning - KVIrc"
+msgstr "Attention - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+msgid "Select an URL."
+msgstr "Selectionner une URL."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:115
+msgid "&Remove"
+msgstr "&Supprimer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:269
+msgid "&Find Text"
+msgstr "C&hercher du texte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:280
+msgid "&Say to Window"
+msgstr "Le &dire dans la fenêtre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+msgid "Window not found."
+msgstr "Fenêtre introuvable."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:349
+msgid "URL Module Configuration"
+msgstr "Configuration du module d'URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:356
+msgid "Save URL list on module unload"
+msgstr "Enregistrer la liste d'URL lors du déchargement du module"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:360
+msgid "Save columns width on URL list close"
+msgstr ""
+"Enregistrer la largeur des colonnes lors de la fermeture de la liste d'URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1187
+msgid "&Cancel"
+msgstr "&Annuler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:432
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1328
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:458
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1186
+msgid "&OK"
+msgstr "&Valider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:423
+msgid "Enable URL ban list"
+msgstr "Activer la liste des bans d'URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:435
+msgid "&Add Ban"
+msgstr "&Ajouter un ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:440
+msgid "&Remove Selected"
+msgstr "&Supprimer la sélection"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "URL Ban List"
+msgstr "Liste des bans d'URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+msgid "Select a ban."
+msgstr "Sélectionner un ban."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:797
+msgid "View URL list"
+msgstr "Montrer la liste d'URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:49
+msgid "Can't find the window with id '%Q'"
+msgstr "Impossible de trouver la fenêtre ayant comme id '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:53
+msgid "The specified window (%Q) is not a channel"
+msgstr "La fenêtre spécifiée (%Q) n'est pas un salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:78
+msgid "Destinaion file exists: no copy made"
+msgstr "Le fichier destinataire existe : aucune copie effectuée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:83
+msgid "Failed to copy from %Q to %Q"
+msgstr "Copie impossible de %Q vers %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:84
+msgid "Either the source doesn't exist or the destination can not be created"
+msgstr ""
+"Soit la source n'existe pas, soit les destination de ne peut être créée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:203
+msgid "Failed to write to file %Q: the destination couldn't be opened"
+msgstr ""
+"Impossible d'écrire dans le fichier %Q : la destination ne peut être ouverte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:244
+msgid "Destination file exists: file not renamed"
+msgstr "Le fichier destinataire existe : le fichier n'a pas été renomé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:247
+msgid "Failed to rename %Q to %Q"
+msgstr "Impossible de renommer %Q en %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:281
+msgid "Failed to make the directory %Q"
+msgstr "Impossible de créer le répertoire %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:322
+msgid "Failed to remove the file %Q"
+msgstr "Impossible de supprimer le fichier %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:365
+msgid "Failed to remove the directory %Q"
+msgstr "Impossible de supprimer le répertoire %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:482
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:628
+msgid "The specified directory does not exist '%Q'"
+msgstr "Le répertoire spécifié n'existe pas (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:730
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:824
+msgid "Can't open the file \"%Q\" for reading"
+msgstr "Impossible d'ouvrir le fichier \"%Q\" en lecture"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:746
+msgid "Read error for file %Q"
+msgstr "Erreur de lecture du fichier %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:754
+msgid ""
+"Read error for file %Q (have been unable to read the requested size in 1000 "
+"retries)"
+msgstr ""
+"Erreur de lecture du fichier %Q (il a été impossible de lire la taille "
+"demandée après 1000 tentatives)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:920
+msgid "Can't open the file \"%Q\" for writing"
+msgstr "Impossible d'ouvrir le fichier \"%Q\" en écriture"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/index.cpp:473
+msgid "Untitled"
+msgstr "Sans titre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+msgid "Indexing help files"
+msgstr "Indexation des fichiers d'aide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:87
+msgid "Index"
+msgstr "Index"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:99
+msgid "Refresh index"
+msgstr "Rafraîchir l'index"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:211
+msgid "Full Text Search"
+msgstr "Recherche Texte Complet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:203
+msgid "Using a wildcard within phrases is not allowed."
+msgstr "L'utilisation de jokers dans les phrases n'est pas permise"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:212
+msgid "The closing quotation mark is missing."
+msgstr "Il manque guillemet de fermeture."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:312
+msgid "Help Browser"
+msgstr "Navigateur d'aide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:201
+msgid "Request List"
+msgstr "Demande de liste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:207
+msgid "Stop list download"
+msgstr "Stopper le téléchargement de la liste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:211
+msgid ""
+"<center><b>/LIST command parameters:</b><br>Many servers accept special "
+"parameters that allow you to filter the returned entries.<br>Commonly, "
+"masked channel names (*kvirc*) are accepted as parameters, as well as "
+"strings like <b>c&lt;n</b> or <b>c&gt;n</b> where <b>n</b> is the minimum or "
+"maximum of users on the channel.</center>"
+msgstr ""
+"<center><b>Paramètres de la commande /LIST :</b><br>Beaucoup de serveurs "
+"acceptent des paramètres spéciaux vous permettant de filtrer le retour des "
+"données.<br>Généralement, les noms de salon masqués (*kvirc*) sont acceptés "
+"comme paramètre, de même que les chaînes de caractère telle que <b>c&lt;n</"
+"b> ou <b>c&gt;n</b> où <b>n</b> est le nombre minimal ou maximal "
+"d'utilisateur du salon.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:220
+msgid "Users"
+msgstr "Utilisateurs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:221
+msgid "Topic"
+msgstr "Sujet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:262
+msgid "Sent list request, waiting for reply..."
+msgstr "Demande de liste envoyée, attente de la réponse..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:265
+msgid "Cannot request list: No active connection"
+msgstr "Impossible de demander la liste : Aucune connexion active"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:389
+msgid "Stopping the list download..."
+msgstr "Stoppage du téléchargement de la liste..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:276
+msgid "Cannot stop list download, no active connection."
+msgstr "Impossible de télécharger la liste, aucune connexion active."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:125
+#, c-format
+msgid "Connected to %s (%s)"
+msgstr "Connecté à %s (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:293
+msgid "List cannot be requested: Not connected to a server"
+msgstr "La liste de peut être demandée : Pas connecté à un serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:316
+#, c-format
+msgid "Channel List [IRC Context %u]"
+msgstr "Liste des salons [Contexte IRC %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:319
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel List</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Liste des Salons</b></font> <font color=\"%s\">"
+"[Contexte IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:326
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel list</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Liste des salons</b></font> <font color=\"%s\">"
+"[Contexte IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:342
+msgid "You cannot export an empty list"
+msgstr "Vous ne pouvez pas exporter une liste vide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:350
+msgid "Channel list for %Q - %Q"
+msgstr "Liste de salons pour %Q - %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:353
+msgid "Channel list"
+msgstr "Liste de salons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:382
+msgid "Choose filename"
+msgstr "Choisissez un Nom de Fichier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:356
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:383
+msgid "Configuration files (*.kvc)"
+msgstr "Fichiers de configuration (*.kvc)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:398
+msgid "Reset"
+msgstr "Réinitialiser"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:435
+msgid "Channels list download finished"
+msgstr "Téléchargement de la liste terminé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:472
+msgid "Processing list: %Q"
+msgstr "Traitement de la liste : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/libkvilist.cpp:63
+msgid "List window alread open for this IRC context"
+msgstr "La fenêtre des liens est déjà ouverte pour ce contexte IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:70
+msgid "Terminal"
+msgstr "Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:73
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:77
+#, c-format
+msgid "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+msgstr "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:59
+msgid "Terminal emulator"
+msgstr "Émulateur de terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:63
+msgid "Close this window"
+msgstr "Fermer cette fenêtre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:91
+msgid "Can't create the terminal emulation part"
+msgstr "Impossible de créer la partie émulatrice de terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:96
+msgid "Can't retrieve the terminal emulation factory"
+msgstr "Impossible de récupérer le matériel d'émulation de terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:95
+msgid "KVIrc"
+msgstr "KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:98
+msgid "Context"
+msgstr "Contexte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:155
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:100
+msgid "Away"
+msgstr "Absent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:102
+msgid "&Configure KVIrc..."
+msgstr "&Configurer KVIrc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:104
+msgid "&About KVIrc"
+msgstr "&A Propos de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:109
+msgid "Un&dock"
+msgstr "&Détacher"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:168
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:112
+msgid "Ctrl+Q"
+msgstr "Ctrl+Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:143
+msgid "Nothing is happening..."
+msgstr "Il ne se passe rien..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:285
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:144
+msgid "Just idling..."
+msgstr "Inactivité, quand tu nous tiens !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:145
+msgid "Dum de dum de dum..."
+msgstr "Dum de dum de dum..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:146
+msgid "Hey man... do something!"
+msgstr "Hey mec... fais quelque chose !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:147
+msgid "Umpf!"
+msgstr "Humpf !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:148
+msgid "Silence speaking"
+msgstr "Le silence est d'or"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:149
+msgid "Are ya here?"
+msgstr "T'es la ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:150
+msgid "The world has stopped?"
+msgstr "Le monde s'est arrété ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:151
+msgid "Everything is all right"
+msgstr "Tout va bien"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:152
+msgid "idle()"
+msgstr "inactivité()"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:153
+msgid "It's so cold here..."
+msgstr "Il fait si froid ici..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:295
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:154
+msgid "Do not disturb... watching TV"
+msgstr "Ne me dérangez pas... Je mate la TV"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:155
+msgid "Just vegetating"
+msgstr "Poireautage..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:156
+msgid "Hey... are ya sure that your network is up?"
+msgstr "Heu... vous êtes sur que le réseau est ok ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:298
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:157
+msgid "Seems like the world has stopped spinning"
+msgstr "On dirait que le monde s'est arrêté de tourner"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:299
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:158
+msgid "This silence is freaking me out!"
+msgstr "Ce silence n'annonce rien de bon..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:300
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:159
+msgid "Mieeeeeowww!"
+msgstr "Atchoum !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:301
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:160
+msgid "idle idle idle idle!"
+msgstr "iinnaaccttiivviittéé !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Hide Window"
+msgstr "Cacher la fenêtre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Show Window"
+msgstr "Montrer la fenêtre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:428
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:260
+msgid "Away on all"
+msgstr "Absent partout"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:263
+msgid "Back on all"
+msgstr "De retour partout"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:450
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:282
+msgid "Back on %1"
+msgstr "De retour sur %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:453
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:285
+msgid "Away on %1"
+msgstr "Absent sur %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1238
+msgid "Alias"
+msgstr "Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1217
+msgid "No item selected"
+msgstr "Aucun élément sélectionné"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:232
+msgid "Rename"
+msgstr "Renommer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:236
+msgid "Edit the alias or namespace name"
+msgstr "Éditer le nom de l'alias ou de l'espace de noms"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+msgid "Add Alias"
+msgstr "Ajouter Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:429
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Add Namespace"
+msgstr "Ajouter Espace de Noms"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:440
+msgid "Remove Selected"
+msgstr "Supprimer la Sélection"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:449
+msgid "Export Selected..."
+msgstr "Exporter la Sélection..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:455
+msgid "Export Selected in singles files..."
+msgstr "Exporter la Sélection dans des fichiers séparés..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:462
+msgid "Export All..."
+msgstr "Exporter Tout..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:470
+msgid "Find In Aliases..."
+msgstr "Chercher dans les Alias..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:476
+msgid "Collapse All Namespaces"
+msgstr "Refermer Tous les Espaces de Noms"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:508
+msgid "Find In Aliases"
+msgstr "Chercher dans les Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:509
+msgid ""
+"Please enter the text to be searched for. The matching aliases will be "
+"highlighted."
+msgstr ""
+"Entrez le texte que vous cherchez : the alias correspondant seront indiqués"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "Alias Export"
+msgstr "Exportation d'Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+msgid "There is not selection!"
+msgstr "Il n'y a pas de sélection !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:615
+msgid "The file \"%Q\" exists. Do you want to replace it ?"
+msgstr "Le fichier \"%Q\" existe déjà. Voulez-vous l'écraser ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+msgid "Replace file"
+msgstr "Remplacer le fichier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+msgid "Yes to All"
+msgstr "Oui pour Tous"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "There exported file would be empty: cowardly refusing to write it"
+msgstr ""
+"Le fichier exporté va être vide : on ne l'ecrit pas vu que cela ne sert à "
+"rien"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:786
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:411
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1133
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:398
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:745
+msgid "Choose a Filename - KVIrc"
+msgstr "Choisissez un Nom de Fichier - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Write Failed - KVIrc"
+msgstr "Écriture a Échouée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+msgid "Unable to write to the alias file."
+msgstr "Impossible d'écrire dans le fichier d'alias."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:793
+msgid "Do you really want to remove the alias \"%Q\" ?"
+msgstr "Désirez-vous vraiment supprimer l'alias \"%Q\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:795
+msgid "Do you really want to remove the namespace \"%Q\" ?"
+msgstr "Désirez-vous vraiment supprimer l'espace de noms \"%Q\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:797
+msgid "Please note that all the children items will be deleted too."
+msgstr "Notez que les éléments fils vont aussi être détruits."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+msgid "Remove item"
+msgstr "Supprimer l'élément"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:875
+msgid "Missing Alias Name"
+msgstr "Il manque le nom de l'alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:876
+msgid "You must specify a valid name for the alias"
+msgstr "Vous devez spécifier un nom valide pour l'alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:877
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:890
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:904
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:915
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:946
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:959
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:973
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1128
+msgid "Ok, Let me try again..."
+msgstr "Ok, laissez-moi recommencer..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:888
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:902
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:913
+msgid "Bad Alias Name"
+msgstr "Mauvais nom d'alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:944
+msgid "Missing Namespace Name"
+msgstr "Il manque le nom de l'espace de noms"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:945
+msgid "You must specify a valid name for the namespace"
+msgstr "Vous devez spécifier un nom valide pour l'espace de noms"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:957
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:971
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:982
+msgid "Bad Namespace Name"
+msgstr "Mauvais nom d'espace de noms"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:958
+msgid ""
+"Namespace names can contain only letters, digits, underscores and '::' "
+"namespace separators"
+msgstr ""
+"Les noms d'espace de noms ne peuvent contenir que des lettres, chiffres, "
+"underscores et séparateurs d'espaces de nom '::'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:972
+msgid ""
+"Stray ':' character in namespace name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+"Caractère ':' seul dans le nom d'alias : n'est-ce pas plutôt..."
+"<espace_de_noms>::<nom> ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:983
+msgid "Found an empty namespace in namespace name"
+msgstr "Un espace de noms vide à été trouvé dans le nom de l'espace de noms"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+msgid "Please enter the name for the new alias"
+msgstr "Spécifiez le nom du nouvel alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Please enter the name for the new namespace"
+msgstr "Spécifiez le nom du nouvel espace de noms"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+msgid "Rename Alias"
+msgstr "Renommer l'Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+msgid "Please enter the new name for the alias"
+msgstr "Spécifiez le nouveau nom de l'alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Rename Namespace"
+msgstr "Renommer le groupe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Please enter the new name for the namespace"
+msgstr "Spécifiez le nom du nouveau groupe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1126
+msgid "Alias already exists"
+msgstr "L'Alias existe déjà"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1139
+msgid "This name is already in use. Please choose another one."
+msgstr "Ce nom est déjà utilisé. Merci d'en choisir un autre."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1138
+msgid "Namespace already exists"
+msgstr "Le groupe existe déjà"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1140
+msgid "Ok, let me try again..."
+msgstr "Ok, laissez-moi recommencer..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1227
+msgid "Namespace"
+msgstr "Groupe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1332
+msgid "Alias Editor"
+msgstr "Éditeur d'Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:62
+msgid "Join Channels"
+msgstr "Joindre les Salons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:183
+msgid "Name"
+msgstr "Nom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:86
+msgid "Password"
+msgstr "Mot de passe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:641
+msgid "&Join"
+msgstr "&Joindre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:108
+msgid "Show this window after connecting"
+msgstr "Montrer cette fenêtre après la connexion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:163
+msgid "Recent Channels"
+msgstr "Salon Récents"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:182
+msgid "Registered Channels"
+msgstr "Salons Enregistrés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:133
+msgid "Choose the file to share"
+msgstr "Choisir un fichier à partager"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:178
+msgid "No such channel/netmask entry in the database"
+msgstr ""
+"Il n'y a pas d'entrée dans la base correspondant à ce salon/masque de réseau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:198
+msgid "Registered channel list:"
+msgstr "Liste des salons enregistrés :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:208
+#, c-format
+msgid "Channel: %c%s@%s"
+msgstr "Salons : %c%s@%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:213
+#, c-format
+msgid " Property: %s=%s"
+msgstr " Propriété : %s=%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:220
+#, c-format
+msgid "Total %d channels"
+msgstr "Total de %d salons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:86
+msgid "Property Editor"
+msgstr "Éditeur de Propriété"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:101
+msgid "Property"
+msgstr "Propriété"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:102
+msgid "Value"
+msgstr "Valeur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:111
+msgid "&New"
+msgstr "&Nouveau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:215
+msgid "Mask Editor"
+msgstr "Éditeur de Masque"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:219
+msgid ""
+"Insert a mask for this user.<br>It can contain the wildcard characters '*' "
+"and '?'."
+msgstr ""
+"Insérez un masque pour cet utilisateur.<br>Il peut contenir les jokers '*' "
+"et '?'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:230
+msgid ""
+"<center>This the <b>nickname</b> that will match this user, default value is "
+"the registered name.</center>"
+msgstr ""
+"<center>Il s'agit du <b>pseudo</b> qui vérifiéra cet utilisateur, avec par "
+"défaut celui l'enregistrement.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:241
+msgid ""
+"<center>This the <b>username</b> that will match this user. <b>*</b> will "
+"match any username.</center>"
+msgstr ""
+"<center>Il s'agit du <b>nom d'utilisateur</b> qui vérifiera cet utilisateur. "
+"<b>*</b> verifiera n'importe quel nom d'utilisateur.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:252
+msgid ""
+"<center>This the <b>hostname</b> that will match this user. <b>*</b> will "
+"match any hostname.</center>"
+msgstr ""
+"<center>Il s'agit du <b>nom de machine</b> qui vérifiera cet utilisateur. "
+"<b>*</b> verifiera n'importe quel nom de machine.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:333
+msgid "Registered User Entry"
+msgstr "Entrée d'Utilisateur Enregistré"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:145
+msgid "Name:"
+msgstr "Nom :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:345
+msgid "Comment:"
+msgstr "Commetaire :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:355
+msgid "Masks:"
+msgstr "Masques :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:216
+msgid "&Add..."
+msgstr "&Ajouter..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:377
+msgid "&Edit"
+msgstr "É&diter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:385
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:414
+msgid "Identity"
+msgstr "Identité"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:393
+msgid "Notify when user is online"
+msgstr "Notifier quand l'utilisateur est en ligne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:396
+msgid "Notify nicknames:"
+msgstr "Pseudos de notification :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:401
+msgid "<center>You can enter a space separated list of nicknames.</center>"
+msgstr ""
+"<center>Vous pouvez une liste de pseudos séparés par des espaces.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:426
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:383
+msgid "Avatar"
+msgstr "Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:433
+msgid "Use custom color in userlist"
+msgstr "Utiliser une couleur personnalisée dans la liste des utilisateurs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:441
+msgid "All Properties..."
+msgstr "Toutes les propriétés..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:448
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:231
+msgid "Properties"
+msgstr "Propriétés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:458
+msgid "Enable ignore for this user"
+msgstr "Ignorer cet utilisateur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:460
+msgid "Ignore features"
+msgstr "Fonctionnalités d'ignore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:465
+msgid "Ignore query-messages"
+msgstr "Ignorer les messages privés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:468
+msgid "Ignore channel-messages"
+msgstr "Ignorer les messages sur les salons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:471
+msgid "Ignore notice-messages"
+msgstr "Ignorer les messages en notice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:474
+msgid "Ignore ctcp-messages"
+msgstr "Ignorer les ctcp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:477
+msgid "Ignore invites"
+msgstr "Ignorer les invitations"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:480
+msgid "Ignore DCCs"
+msgstr "Ignorer les DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:486
+msgid "Ignore"
+msgstr "Ignorer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:94
+msgid "Notify disabled"
+msgstr "Notification désactivée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:96
+msgid "Notify as: "
+msgstr "Notifier en tant que :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:105
+msgid "No comment set"
+msgstr "Aucun commentaire saisi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:107
+msgid "Comment: "
+msgstr "Commetaire :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:176
+msgid "Registered Users - KVIrc"
+msgstr "Utilisateurs Enregistrés - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:317
+msgid "Flags"
+msgstr "Drapeaux"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:192
+msgid ""
+"<center>This is the list of registered users. KVIrc can automatically "
+"recognize and associate properties to them.<br>Use the buttons on the right "
+"to add, edit and remove entries. The \"notify\" column allows you to quickly "
+"add users to the notify list. Notify list fine-tuning can be performed by "
+"editing the entry properties.</center>"
+msgstr ""
+"<center>Il s'agit de la liste des utilisateurs enregistrés. KVIrc peut les "
+"reconnaître automatiquement et leur associer des propriétés.<br>Utiliser les "
+"boutons sur la droite pour ajouter, éditer et enlever des entrées. La "
+"colonne \"Notification\" vous permet d'ajouter rapidement des utilisateurs à "
+"la liste de notification. Cette dernière peut être re-réglée en éditant les "
+"propriétés des entrées.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:208
+msgid "Add (Wizard)..."
+msgstr "Ajouter (Assistant)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:211
+msgid "Add a registered user by means of a user-friendly wizard."
+msgstr "Ajouter un utilisateur enregistré à l'aide d'un assistant pratique."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:219
+msgid "Open the edit dialog to create a new user entry."
+msgstr ""
+"Ouvrir la boîte de dialogue d'édition pour créer une nouvelle entrée "
+"d'utilisateur."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:223
+msgid "&Add Group..."
+msgstr "&Ajouter Groupe..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:226
+msgid "Adds a new group"
+msgstr "Ajouter un nouveau groupe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:234
+msgid "Remove the currently selected entries."
+msgstr "Supprimer les entrées actuellement sélectionnées."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:239
+msgid "&Edit..."
+msgstr "É&diter..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:243
+msgid "Edit the first selected entry."
+msgstr "Éditer la première entrée sélectionnée."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:250
+msgid "Export To..."
+msgstr "Exporter Vers..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:254
+msgid ""
+"Export the selected entries to a file.<br>All the data associated with the "
+"selected registered users will be exported.<br>You (or anyone else) can "
+"later import the entries by using the \"Import\" button."
+msgstr ""
+"Exporter les entrées selectionnées vers un fichier.<br>Toutes les données "
+"associées aux utilisateurs sélectionnés seront exportées.<br>Vous (ou "
+"quelqu'un d'autre) pourra alors les importer plus tard grâce au bouton "
+"\"Importer\"."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:259
+msgid "Import From..."
+msgstr "Importer Depuis..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:262
+msgid ""
+"Import entries from a file exported earlier by the \"export\" function of "
+"this dialog."
+msgstr ""
+"Importe des entrées depuis un fichier préalablement exporté par la fonction "
+"\"Exporter\" de cette boîte de dialogue."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:399
+msgid "Group name:"
+msgstr "Nom du groupe :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:442
+msgid "Move to group"
+msgstr "Déplacer vers le groupe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:483
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:486
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:487
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:491
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:690
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_useridentity.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:962
+msgid "Default"
+msgstr "Défaut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:674
+msgid "No entries selected."
+msgstr "Aucune entrée sélectionnée."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:687
+msgid "Can't open file %Q for writing."
+msgstr "Impossible d'ouvrir le fichier %Q en écriture."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:772
+msgid "Can't export the registered users database: Write error."
+msgstr "Impossible d'exporter les utilisateurs de la base. Erreur d'écriture."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:793
+#, c-format
+msgid "Can't open file %s for reading."
+msgstr "Impossible d'ouvrir le fichier %s en lecture."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:804
+#, c-format
+msgid "The file %s doesn't appear to be a valid registered users database."
+msgstr ""
+"Le fichier %s ne semble pas être une base valide de données d'utilisateurs "
+"enregistrés."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:811
+#, c-format
+msgid "The file %s contains an invalid registered users database version."
+msgstr ""
+"Le fichier %s contient une version invalide de base de données "
+"d'utilisateurs enregistrés."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:892
+msgid "Can't import the registered users database: Read error."
+msgstr ""
+"Impossible d'importer la base de données d'utilisateurs enregistrés. Erreur "
+"de lecture."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:78
+msgid "User Registration Wizard - KVIrc"
+msgstr "Assistant Enregistrement Utilisateur - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:89
+msgid ""
+"<p>Welcome to the user registration wizard.<br>This process allows you to "
+"add an IRC user to the database and set properties for that user. KVIrc will "
+"be (hopefully) able to recognize the user, add him to the notify list, and "
+"display the associated avatar.<br><br>First of all, you must insert an "
+"<b>entry name or real name</b> for the user you're going to register. The "
+"name will be used to identify the database entry and has no specific "
+"requirements, it can be a given name, nickname, or just some text to remind "
+"you of the real person.<br>Examples: \"George W Bush\", \"Dubya\".\n"
+"</p>"
+msgstr ""
+"<p>Bienvenu à l'assistant d'enregistrement d'utilisateurs.<br>Ce processus "
+"vous permet d'ajouter un utilisateur IRC à la base de données et de lui "
+"associer des propriétés. KVIrc va être (normalement) capable de le "
+"reconnaître, de l'ajouter à la liste de notification et d'afficher son "
+"avatar.<br><br>Pour commencer, vous devez donner un <b>nom d'entrée ou un "
+"nom réel</b> pour l'utilisateur que vous allez enregistrer. Le nom va "
+"l'identifier dans la base et peut avoir n'importe quelle forme. Il peut être "
+"un patronyme, un pseudo ou un texte quelconque qui vous permette de vous "
+"rappeler de la personne réelle.<br>Exemples : \"George W Bush\", \"Dubya\"\n"
+".</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:97
+msgid "Step 1: Entry Name"
+msgstr "Étape 1 : Nom d'Entrée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:112
+msgid ""
+"<p>A registered user is identified by one or more <b>IRC masks</b>.<br>A "
+"mask must be in the following form:<br><b>nickname!username@hostname</"
+"b><br>and can contain wildcard characters '*' and '?'. Be careful in "
+"choosing the masks, as they are the only way to verify the identity of a "
+"registered user.<br><br>You can enter at most two masks here, if you wish to "
+"add more masks, use the \"<b>Edit</b>\" button in the Registered Users "
+"dialog. You must enter at least one mask.</p>"
+msgstr ""
+"<p>Un utilisateur enregistré est identifié par un ou plusieurs <b>masques "
+"IRC</b>.<br>Un masque doit être de la forme suivante :<br><b>pseudo!"
+"nomdutilisateur@machine</b><br>et peut contenir les jokers '*' et '?'. "
+"Faites attention en choisissant ces masques vu qu'ils sont le sel moyen de "
+"vérifier l'identité d'un utilisateur enregistré.<br><br>Vous pouvez entrer "
+"que deux masques ici, et si vous désirez en ajouter plus, utilisez le bouton "
+"\"<b>Éditer</b>\" de la boîte de dialogue des utilisateur enregistrés. Vous "
+"devez entrer au moins un masque.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:170
+msgid "Step 2: Mask Selection"
+msgstr "Étape 2 : Sélection de Masque"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:182
+msgid ""
+"<p>If you want to store an avatar image for this user, you can set it here. "
+"KVIrc will show the avatar in the userlist next to the user's nickname."
+"<br>An avatar can be in any supported image format (PNG is recommended). "
+"Keep in mind that KVIrc stores avatars in memory and has to resize them to "
+"fit in the userlist, thus it's better to use small, low-resolution images.</"
+"p>"
+msgstr ""
+"<p>Si vous désirez sauvegarder une image d'avatar pour cet utilisateur, vous "
+"pouvez le faire ici. KVIrc va afficher l'avatar dans la liste des "
+"utilisateurs d'un salon a la suite du pseudo de l'utilisateur.<br>Un avatar "
+"peut être dans n'importe quel format d'image supporté (PNG est recommandé). "
+"Gardez à l'esprit que KVIrc garde les avatars en mémoire et doit les "
+"redimensionner pour qu'ils entrent dans la liste des utilisateurs. Il est "
+"donc préférable d'utiliser des images petites et de basse résolution.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:190
+msgid "Store an avatar for this user"
+msgstr "Sauvegarder un avatar pour cet utilisateur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:195
+msgid "Step 3: Avatar Selection"
+msgstr "Étape 3 : Selection d'Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:206
+msgid ""
+"<p>If you want to be notified when this user is online or goes offline, you "
+"must specify the list of nicknames that KVIrc will look for.<br><br>You can "
+"enter at most two nicknames here, if you wish to add more nicknames, use the "
+"\"<b>Edit</b>\" button in the Registered Users dialog.</p>"
+msgstr ""
+"<p>Si vous désirez être averti quand est en ligne ou s'en va, vous devez "
+"spécifier la liste des pseudos que KVIrc va rechercher.<br><br>vous pouvez "
+"spécifier au plus deux pseudo, et si vous désirez en entrer plus, utiliser "
+"le bouton \"<b>Éditer</b>\" de la boîte de dialogue des utilisateurs "
+"enregistrés.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:215
+msgid "Add this user to the notify list"
+msgstr "Ajouter cet utilisateur à la liste de notifications"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:342
+msgid "Nickname:"
+msgstr "Pseudo :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:225
+msgid "Nickname 2:"
+msgstr "Pseudo 2 :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:239
+msgid "Step 4: Notify List"
+msgstr "Étape 4 : Liste de Notifications"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:251
+msgid ""
+"<p>That's it. The user registration has been completed.<br><br>Click "
+"\"<b>Finish</b>\" to close this dialog.</p>"
+msgstr ""
+"<p>Voilà, c'est terminé. L'enregistrement a été effectué.<br><br>Cliquez sur "
+"\"<b>Terminer</b>\" pour fermer cette boîte de dialogue.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:254
+msgid "Registration Complete"
+msgstr "Enregistrement Effectué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:695
+msgid "No name specified"
+msgstr "Aucun nom spécifé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:209
+msgid "User already registered: found exact name match"
+msgstr ""
+"Utilisateur déjà enregistré : une entrée a été trouvée avec exactement le "
+"même nom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:222
+msgid "Mask %Q is already used to identify user %s"
+msgstr "Le masque %Q est déjà utilisé pour identifier l'utilisateur %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:275
+msgid "User not found (%Q)"
+msgstr "Utilisateur non trouvé (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:403
+msgid "No mask specified"
+msgstr "Aucun masque spécifié"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:524
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:708
+msgid "User %Q not found"
+msgstr "Utilisateur %Q non trouvé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:355
+msgid "Mask %Q already used to identify user %Q"
+msgstr "Le masque %Q est déjà utilisé pour identifié l'utilisateur %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:410
+msgid "Mask %Q not found"
+msgstr "Masque %Q non trouvé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:701
+msgid "No property specified"
+msgstr "Aucune propriété spécifiée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:808
+msgid "Registered users database dump:"
+msgstr "Affichage de la base d'utilisateurs enregistrés :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:819
+msgid " User: %c%Q"
+msgstr " Utilisateur : %c%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:823
+msgid " Warning: this user has no registration masks"
+msgstr " Attention : cet utilisateur n'a pas de masque d'enregistrement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:827
+msgid " Mask: %Q!%Q@%Q"
+msgstr " Masque : %Q!%Q@%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:838
+msgid " Property: %Q=%Q"
+msgstr " Propriété : %Q=%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:841
+msgid " No properties"
+msgstr " Aucune propriété"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:847
+#, c-format
+msgid "Total: %d matching users (of %d in the database)"
+msgstr "Total : %d utilisateurs vérifiés (sur %d dans la base)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:197
+msgid "Manage Script-Based Addons"
+msgstr "Gérer les Addons Scriptés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1155
+msgid "Configure"
+msgstr "Configurer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:225
+msgid "Show Help"
+msgstr "Montrer l'Aide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:231
+msgid "Uninstall"
+msgstr "Désinstaller"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:243
+msgid "Install Addon..."
+msgstr "Installer un Addon..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:247
+msgid "More Addons..."
+msgstr "Plus d'Addons..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:333
+msgid "Do you really want to uninstall the addon \"%1\" ?"
+msgstr "Désirez-vous vraiment désinstaller l'addon \"%1\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+msgid "Confirm addon uninstallation"
+msgstr "Confirmer la désinstallation de l'addon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:354
+msgid "Please select the addon installation file"
+msgstr "Sélectionner le fichier d'installation d'addon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:144
+msgid "%cAddon id %Q, version %Q%c"
+msgstr "%cIdentifiant d'addon %Q, version %Q%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:145
+msgid "Name: %Q"
+msgstr "Nom : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:67
+msgid "Description: %Q"
+msgstr "Description : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:152
+#, c-format
+msgid "Total: %d addons installed"
+msgstr "Total : %d addons installés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:192
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:571
+msgid "Uninstalling existing addon version %Q"
+msgstr "Désinstallation de la version d'addon existante %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:384
+msgid "The addon \"%1\" does not exist"
+msgstr "L'addon \"%1\" n'existe pas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:238
+msgid "The addon \"%1\" has no configure callback set"
+msgstr "L'addon \"%1\" n'a pas de commande de configuration définie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:285
+msgid "The addon \"%1\" has no help callback set"
+msgstr "L'addon \"%1\" n'a pas d'aide définie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:527
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:377
+msgid "Internal error: call a head-shrinker"
+msgstr "Erreur interne : appelez un coup de tête (nawak)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:536
+msgid "The specified version \"%Q\" is not a valid version string"
+msgstr ""
+"La version spécifiée \"%Q\" n'est pas une chaîne de caractère valide pour "
+"une version"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:542
+msgid "The specified KVIrc version \"%Q\" is not a valid version string"
+msgstr ""
+"La version specifiée de KVIrc \"%Q\" n'est pas une chaîne de caractère "
+"valide pour une version"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:548
+msgid ""
+"This KVIrc executable is too old to run this addon (minimum version required "
+"is %Q)"
+msgstr ""
+"Cet executable KVIrc est trop vieux pour utiliser cet addon (la version "
+"minimale requise est %Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:553
+msgid "Attempting to register addon \"%Q\" with version %Q"
+msgstr "Tentative d'enregistrement de l'addon \"%Q\" avec la version %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:565
+msgid ""
+"The script addon \"%Q\" already exists with version %Q which is higher than %"
+"Q"
+msgstr ""
+"L'addon scripté \"%Q\" existe déjà avec la version %Q qui est plus élevée "
+"que %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:579
+msgid "Script registration failed"
+msgstr "L'enregistrement du script a échoué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:584
+msgid "Script succesfully registered"
+msgstr "Le script a été enregistré avec succès"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:102
+#, c-format
+msgid "%s (%s) (%s:%u)"
+msgstr "%s (%s) (%s:%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:104
+#, c-format
+msgid "%s (%s)"
+msgstr "%s (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:107
+#, c-format
+msgid "%s (%s:%u)"
+msgstr "%s (%s:%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:109
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:112
+#, c-format
+msgid "[IDENT]: %s"
+msgstr "[IDENT]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:119
+msgid "Shutting down identd service (spontaneous action)"
+msgstr "Coupure du service d'identd (action spontanée)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:124
+msgid "Shutting down identd service (requested action)"
+msgstr "Fermeture du service d'identd (action requise)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:225
+msgid "Can't start the ident service : socket() failed"
+msgstr "Impossible de démarrer le service d'ident : socket() échoué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:231
+msgid "Can't start the ident service : async setting failed"
+msgstr "Impossible de démarrer le service d'ident : réglage async échoué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:237
+msgid "Can't enable the ident service : can't setup the listen address"
+msgstr ""
+"Impossible d'activer le service d'ident : impossible de configurer l'adresse "
+"d'écoute"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:243
+msgid "Can't start the ident service : bind() failed"
+msgstr "Impossible de démarrer le service d'ident : bind() échoué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:249
+msgid "Can't start the ident service : listen() failed"
+msgstr "Impossible de démarrer le service d'ident : listen() échoué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:263
+msgid "Can't start the ident service on IpV6 : socket() failed"
+msgstr "Impossible de démarrer le service d'ident sur IpV6 : socket() échoué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:269
+msgid "Can't start the ident service on IpV6 : async setting failed"
+msgstr ""
+"Impossible de démarrer le service d'ident sur IpV6 : réglage async échoué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:277
+msgid "Can't enable the ident service on IpV6 : can't setup the listen address"
+msgstr ""
+"Impossible de démarrer le service d'ident sur IpV6 : impossible de "
+"configurer l'adresse d'écoute"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:285
+msgid "Can't start the ident service on IpV6 : bind() failed"
+msgstr "Impossible de démarrer le service d'ident sur IpV6 : bind() échoué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:294
+msgid "Can't start the ident service on IpV6 : listen() failed"
+msgstr "Impossible de démarrer le service d'ident sur IpV6 : listen() échoué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:310
+msgid "Starting identd service (IpV4/V6 on separate namespaces)"
+msgstr "Démarrage du service d'identd (IpV4/V6 sur des zones différentes)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:313
+msgid "Starting identd service (IpV4/V6 in IpV6 namespace)"
+msgstr "Démarrage du service d'identd (IpV4/V6 sur la zone IpV6)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:318
+msgid "Starting identd service (IpV4)"
+msgstr "Démarrage du service d'identd (IpV4)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:322
+msgid "Service startup (IpV4)"
+msgstr "Démarrage du service (IpV4)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:412
+msgid "Identd accepting connection"
+msgstr "Connection Identd acceptée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:435
+msgid "Identd socket error : dropping connection"
+msgstr "Erreur du socket d'identd : abandon de la connexion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:440
+msgid "Identd connection closed by remote host"
+msgstr "Connexion identd fermée par l'hôte distant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:461
+msgid "Identd processing request"
+msgstr "Réponse à la requête d'identd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:476
+msgid "Empty request (EOT ?)"
+msgstr "Requête vide (EOT ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:487
+msgid "Dropping connection (request too long)"
+msgstr "Abandon de la reconnexion (requête trop longue)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:500
+msgid "Timed out while waiting for the request : dropping connection"
+msgstr "Délai d'attente de la requête dépassé : abandon de la connexion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/libkvilinks.cpp:74
+msgid "Links window alread open for this IRC context"
+msgstr "La fenêtre de lien est déjà ouverte pour ce contexte IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:57
+msgid "Request Links"
+msgstr "Demande de liens"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:70
+msgid "Link"
+msgstr "Lien"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:71
+msgid "Hops"
+msgstr "Hops"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:72
+msgid "Description"
+msgstr "Description"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:90
+msgid "(None)"
+msgstr "(Aucun)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:112
+msgid "Sent links request, waiting for reply..."
+msgstr "Demande de liens envoyée, attente de la réponse..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:115
+msgid "Cannot request links: No active connection"
+msgstr "Impossible de demander les liens : Aucune connexion active"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:128
+msgid "Links cannot be requested: Not connected to a server"
+msgstr "Les liens ne peuvent être demandés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:153
+msgid "Links for %Q [IRC Context %u]"
+msgstr "Liens pour %Q [Contexte IRC %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:164
+msgid ""
+"<nobr><font color=\"%s\"><b>Links for %Q</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Liens pour %Q</b></font> <font color=\"%s\">"
+"[Contexte IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:194
+msgid "Received end of links."
+msgstr "Fin de la réception des liens."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:235
+#, c-format
+msgid ""
+"Broken link: Missing parent (%s) for %s (%d hops): %s (used /LINKS <mask> ?)"
+msgstr ""
+"Lien brisé : Il manque le parent (%s) de %s (%d hops): %s (/LINKS <mask> a "
+"été utilisé ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:238
+#, c-format
+msgid "%s: Parent link %s"
+msgstr "%s: Lien parent %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:242
+msgid "Warning: No root link was sent by the server, the stats may be invalid."
+msgstr ""
+"Attention : Aucun lien racine n'a été envoyé par le serveur, les "
+"statistiques ne sont peut-être pas viables."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:278
+msgid "%c%cLinks for %Q"
+msgstr "%c%cLiens pour %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts listed"
+msgstr "Nombre total de machines listées"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts in the network"
+msgstr "Nombre total de machines sur le réseau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:282
+#, c-format
+msgid "Wildcard servers (hubs?): %d"
+msgstr "Serveurs jokers (hubs ?) : %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:283
+msgid "Direct links: %d (~%d.%d %)"
+msgstr "Liens directs : %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:284
+msgid "Close links (1 <= hops <= 3): %d (~%d.%d %)"
+msgstr "Liens proches (1 <= hops <= 3): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:285
+msgid "Mid-range links (4 <= hops <= 6): %d (~%d.%d %)"
+msgstr "Liens moyenne distance (4 <= hops <= 6): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:286
+msgid "Distant links (7 <= hops): %d (~%d.%d %)"
+msgstr "Liens longue distance (7 <= hops): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:287
+#, c-format
+msgid "Broken (unknown) links: %d"
+msgstr "Liens cassé (inconnu) : %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:288
+#, c-format
+msgid "Maximum links per host: %d [%s]"
+msgstr "Nombre maximal de liens par machine : %d [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:289
+#, c-format
+msgid "Total links: %d"
+msgstr "Nombre total de liens : %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:290
+#, c-format
+msgid "Maximum hops: %d [%s]"
+msgstr "Hops maximal : %d [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:291
+#, c-format
+msgid "Average hops: ~%d.%d"
+msgstr "Hops moyens : ~%d.%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:294
+msgid "Incomplete LINKS result, no stats available"
+msgstr "Rétour de LINKS incomplet, aucune statistique disponible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:747
+msgid "You're not connected to a server"
+msgstr "Vous n'êtes pas connecté à un serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:404
+#, c-format
+msgid "Processing link: %s"
+msgstr "Traitement du lien : %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:419
+msgid "Broken message syntax, can't extract hops number, assuming 0"
+msgstr "Syntaxe du message cassée, impossible d'extraire l'hops, on assume 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:86
+msgid "< &Back"
+msgstr "< &Précédent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:87
+msgid "&Next >"
+msgstr "&Suivant >"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:282
+msgid "Finish"
+msgstr "Terminer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:164
+msgid ""
+"<p><h2>Welcome :)</h2>This is your first time running this version of KVIrc."
+"<br>This wizard will guide you through the few steps required to complete "
+"the setup.<br><br>If you had a previous version of KVIrc installed, no "
+"worries. You will have a chance to preserve the old configuration.</"
+"p><p>Click \"<b>Next</b>\" to proceed.</p>"
+msgstr ""
+"<p><h2>Bienvenue :)</h2>C'est la première fois que vous utilisez cette "
+"version de KVIrc.<br>Cet assistant va vous guider à travers quelques étapes "
+"nécessaires à l'installation.<br>Ne vous inquiétez pas si vous aviez une "
+"ancienne version de KVIrc installée car vous allez avoir la possibilité de "
+"préserver l'ancienne configuration.<br><p>Cliquez sur \"<b>Suivant</b>\" "
+"pour procéder.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:176
+msgid "Welcome to KVIrc"
+msgstr "Bienvenue sur KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:187
+msgid ""
+"<p>All of the files in this distribution are covered by the GPL. In human "
+"terms this can be read as follows:<br><ul><li><b>KVIrc is free</b>, use it, "
+"have fun! <b>:)</b></li><li>If you use <b>any</b> part of KVIrc in your own "
+"project, you <b>must</b> release that project under the same license.</li></"
+"ul></p><p>The \"legalese\" version of the license is shown in the box below."
+"</p>"
+msgstr ""
+"<p>Tous les fichiers de cette distribution sont couverts par la GPL. En "
+"termes humains, cela peut être interprété de la manière suivante :"
+"<br><ul><li><b>KVIrc est gratuit</b>, utilisez-le et amusez-vous !<b>:)</b></"
+"li><li>Si vous utilisez une partie <b>quelconque</b> de KVIrc dans votre "
+"propre projet, vous <b>devez</b> le diffuser sous la même license.</li></"
+"ul></p>La version \"légale\" de la license est montrée dans la boîte ci-"
+"dessous.<p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:203
+msgid ""
+"Oops... can't find the license file.\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+"Oups... impossible de trouver le fichier de la license.\n"
+"Elle DOIT être incluse dans la distribution...\n"
+"Signalez-le à <pragma at kvirc dot net>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:211
+msgid "Dreaded License Agreement"
+msgstr "Accord de License Retouté"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:215
+msgid "KVIrc Setup"
+msgstr "Initialisation de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:224
+msgid ""
+"<p>Please choose a folder for KVIrc to store its settings and other data, "
+"and another for downloaded files. Make sure that you have permission to "
+"write to both folders.<br><br>The suggested locations are fine in most "
+"cases, so if you don't know what is this about, just click \"<b>Next</b>\"."
+"<br><br>If you had a previous version of KVIrc installed, you can choose the "
+"existing directory for the settings, and your configuration will be "
+"preserved.</p>"
+msgstr ""
+"<p>Choisissez un répertoire pour que KVIrc sauvegarde ses paramètres et "
+"autres données, et un autre pour les fichiers téléchargés. Soyez sûr que "
+"vous avez la permission d'écrire dans ces deux répertoires.<br><br>Les "
+"emplacements suggérés sont adaptés dans la plupart des cas, donc si vous "
+"êtes dans le doute, cliquez juste sur \"<b>Suivant</b>\".<br><br>Si vous "
+"aviez une précédente version de KVIrc installée, vous pouvez choisir le "
+"répertoire existant pour les paramètres, et votre configuration va être "
+"préservée.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:234
+msgid "Application Folders"
+msgstr "Répertoires de l'application"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:238
+msgid "Store configuration in folder"
+msgstr "Sauvergarder la configuration dans un répertoire"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:239
+msgid "Use settings folder from previous installation"
+msgstr "Utiliser le répertoire de configuration de la précédente installation"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:251
+msgid "Use new settings folder"
+msgstr "Utiliser un nouveau répertoire de configuration"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:255
+msgid "Settings folder:"
+msgstr "Répertoire de la configuration :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:281
+msgid "Download files to folder:"
+msgstr "Télécharger les fichiers vers le répertoire :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:304
+msgid "All settings in shared program folder (portable)"
+msgstr "Tous les réglages dans le dossier partagé (mobile)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:325
+msgid ""
+"Please choose a Nickname.<br><br>Your nickname is the name that other IRC "
+"users will know you by. It can't contain spaces or punctuation. Some IRC "
+"networks will shorten your nickname if it is more than 32 characters long."
+"<br><br>If in doubt, just enter the first nick that comes to mind. You will "
+"be able to change it later in the Identity properties, or with the /NICK "
+"command."
+msgstr ""
+"Choisissez un Pseudonyme.<br><br>Votre pseudo est le nom par lequel les "
+"autres utilisateurs vont vous reconnaître. Il ne peut contenir ni espace ni "
+"ponctuation. Certains réseaux IRC vont raccourcir votre pseudo s'il dépasse "
+"32 caractères.<br><br>Si vous ne savez que choisir, entrez le premier pseudo "
+"qui vous passe par la tête. Vous aurez la possibilité de le changer plus "
+"tard dans les propriétés d'identité, ou avec la commande /NICK."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:348
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+"Ce champ est optionnel et apparaîtra comme une partie de la réponse CTCP "
+"USERINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:353
+msgid "Profile"
+msgstr "Profil"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:355
+msgid "Real name:"
+msgstr "Nom réel :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:361
+msgid "Age:"
+msgstr "Âge :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:392
+msgid "Unspecified"
+msgstr "Non spécifié"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:405
+msgid "Location:"
+msgstr "Emplacement :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:408
+msgid "Languages:"
+msgstr "Langues :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:491
+msgid ""
+"<p>Here you can choose how much KVIrc will integrate with your system."
+"<br><br>The default settings are fine for most users so if you're in doubt "
+"just click \"<b>Next</b>\" and go to the next screen.</p>"
+msgstr ""
+"<p>Ici vous pouvez déterminer combien KVIrc s'intègre à votre système."
+"<br><br>Les réglages par défaut conviennent pour l'essentiel des "
+"utilisateurs, donc en cas de doute cliques sur \"<b>Suivant</b>\" et passez "
+"à l'écran suivant.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:501
+msgid "Desktop Integration"
+msgstr "Intégration au bureau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:504
+msgid "Make KVIrc default IRC client"
+msgstr "Faire de KVIrc le client IRC par défaut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:508
+msgid "Create desktop shortcut"
+msgstr "Créer un raccourci sur le bureau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:513
+msgid "Import server list from mIRC"
+msgstr "Importer la liste de serveurs de mIRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:727
+msgid "Choose an Old Configuration Folder - KVIrc Setup"
+msgstr ""
+"Choisissez un Ancien Répertoire de Configuration - Initialisation KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:736
+msgid "Do not overwrite folder? - KVIrc"
+msgstr "Ne pas écraser le répertoire ? - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:737
+msgid ""
+"A folder %1 seems to be not a valid KVIrc settings folder.Do you want to use "
+"it anyway?"
+msgstr ""
+"Le répertoire %1 ne semble pas être un répertoire valide de configuration de "
+"KVIrc. Désirez-vous malgré tout l'utiliser ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:753
+msgid "Choose a Configuration Folder - KVIrc Setup"
+msgstr "Choisissez un répertoire de configuration - Initialisation KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:764
+msgid "Choose a Download Folder - KVIrc Setup"
+msgstr "Choisissez un répertoire de téléchargement - Initialisation KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:933
+msgid "Abort Setup - KVIrc Setup"
+msgstr "Interruption de l'initialisation - KVIrc Setup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:934
+msgid ""
+"You have chosen to abort the setup.<br>KVIrc cannot run until you complete "
+"this procedure.<br><br>Do you really wish to abort?"
+msgstr ""
+"Vous avez choisi d'interrompre l'initialisation.<br>KVIrc ne peut "
+"fonctionner jusqu'à ce que vous ayez terminé cette installation."
+"<br><br>Voulez-vous vraiment interrompre ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:965
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:996
+#, c-format
+msgid ""
+"Cannot create directory %s.\n"
+"You may not have write permission for that path. Please go back and choose "
+"another directory."
+msgstr ""
+"Impossible créer un répertoire %s.\n"
+"Vous n'avez peut-être pas la permission d'écriture pour ce chemin. Retournez "
+"choisir un autre répertoire."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+msgid "Package saved succesfully"
+msgstr "Paquet sauvegardé avec succès"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:80
+msgid "Event"
+msgstr "Événement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1046
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:92
+msgid "&Export All To..."
+msgstr "&Exporter tout vers..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:90
+msgid "Edit the event handler name."
+msgstr "Éditer le nom du gestionnaire d'événement."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:154
+msgid "&Enable Handler"
+msgstr "Activ&er Intercepteur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:158
+msgid "&Disable Handler"
+msgstr "&Désactiver Intercepteur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:162
+msgid "Re&move Handler"
+msgstr "Suppri&mer Intercepteur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:164
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:166
+msgid "&Export Handler To..."
+msgstr "&Exporter Intercepteur vers..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:171
+msgid "&New Handler"
+msgstr "&Nouvel Intercepteur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:190
+msgid "unnamed"
+msgstr "sans nom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:215
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:250
+msgid "default"
+msgstr "défaut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:314
+msgid "none"
+msgstr "aucun"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:318
+#, c-format
+msgid ""
+"\n"
+"\n"
+"\tEvent:\n"
+"\t\t%s\n"
+"\n"
+"\tParameters:\n"
+"%s"
+msgstr ""
+"\n"
+"\n"
+"\tÉvénement :\n"
+"\t\t%s\n"
+"\n"
+"\tParamètres :\n"
+"%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+msgid "Unable to write to the event file."
+msgstr "Impossible d'écrire dans le fichier d'événements."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+msgid "Unable to write to the events file."
+msgstr "Impossible d'écrire dans le fichier d'événements."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:486
+msgid "Event Editor"
+msgstr "Éditeur d'Événement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:77
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:213
+msgid "Item"
+msgstr "Élément"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:80
+msgid "Submenu"
+msgstr "Sousmenu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:83
+msgid "External Menu"
+msgstr "Menu externe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:136
+msgid "Label"
+msgstr "Étiquette"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:93
+msgid "### Epilogue ###"
+msgstr "### Épilogue ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:94
+msgid "Epilogue"
+msgstr "Épilogue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:97
+msgid "### Prologue ###"
+msgstr "### Prologue ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:98
+msgid "Prologue"
+msgstr "Prologue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:198
+msgid "Popup name"
+msgstr "Nom du popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:202
+msgid "Test"
+msgstr "Test"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:230
+msgid "Text:"
+msgstr "Texte :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:236
+msgid ""
+"<center><b>Visible text</b><br>May contain identifiers that will be "
+"evaluated at popup call time.<br>For labels, this text can contain also "
+"limited HTML tags.</center>"
+msgstr ""
+"<center><b>Texte visible</b><br>Peut contenir des identifiants qui seront "
+"évalués à l'affichage.<br>Pour les labels, ce texte peut aussi contenir des "
+"étiquettes HTML limitées.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:239
+msgid "Condition:"
+msgstr "Condition :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:245
+msgid ""
+"<center><b>Boolean condition</b><br>Will be evaluated at popup call time in "
+"order to decide if this entry has to be shown.<br>An empty condition "
+"evaluates to true.</center>"
+msgstr ""
+"<center><b>Expression booléenne</b><br>Elle sera évaluée à l'appel du popup "
+"pour décider si cette entrée doit être affichée ou non.<br>Une condition "
+"vide est considirée comme vraie.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:248
+msgid "Icon:"
+msgstr "Icône :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:254
+msgid ""
+"<center><b>Icon identifier</b><br>May be an internal icon ID, an absolute "
+"path or a relative path.<br>Portable scripts should never use absolute paths."
+"</center>"
+msgstr ""
+"<center><b>Identifiant d'icône</b><br>Peut être un identifiant d'icône "
+"interne ou un chemin absolut ou relatif.<br>Des scripts portables ne "
+"devraient jamais utiliser des chemins absoluts.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:257
+msgid "External menu:"
+msgstr "Menu externe :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:263
+msgid ""
+"<center><b>External menu name</b><br>This allows to nest externally defined "
+"popup menus. The popup menu with the specified name will be looked up at "
+"menu setup time.</center>"
+msgstr ""
+"<center><b>Nom du menu externe</b><br>Ceci permet d'imbriquer des popups "
+"définis par ailleurs. Le popup ayant ce nom sera cherché au chargement.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:266
+msgid "Item Id:"
+msgstr "Identifiant de l'élément :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:273
+msgid ""
+"<center><b>Item id</b><br>This will allow you to use delpopupitem later.</"
+"center>"
+msgstr ""
+"<center><b>Identifiant de l'élément</b><br>Il vous permettra d'utiliser "
+"delpopupitem plus tard.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:386
+msgid "New Separator Below"
+msgstr "Nouveau Séparateur Ci-Dessous"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:388
+msgid "New Separator Above"
+msgstr "Nouveau Séparateur Ci-Dessus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:391
+msgid "New Separator Inside"
+msgstr "Nouveau Séparateur à l'Intérieur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:396
+msgid "New Label Below"
+msgstr "Nouvelle Étiquette Ci-Dessous"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:398
+msgid "New Label Above"
+msgstr "Nouvelle Étiquette Ci-Dessus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:401
+msgid "New Label Inside"
+msgstr "Nouvelle Étiquette à l'Intérieur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:406
+msgid "New Item Below"
+msgstr "Nouvel Élément Ci-Dessous"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:408
+msgid "New Item Above"
+msgstr "Nouvel Élément Ci-Dessus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:411
+msgid "New Item Inside"
+msgstr "Nouvel Élément à l'Intérieur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:416
+msgid "New Menu Below"
+msgstr "Nouveau Menu Ci-Dessous"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:418
+msgid "New Menu Above"
+msgstr "Nouveau Menu Ci-Dessus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:421
+msgid "New Menu Inside"
+msgstr "Nouveau Menu à l'Intérieur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:426
+msgid "New External Menu Below"
+msgstr "Nouveau Menu Externe Ci-Dessous"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:428
+msgid "New External Menu Above"
+msgstr "Nouveau Menu Externe Ci-Dessus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:431
+msgid "New External Menu Inside"
+msgstr "Nouveau Menu Externe à l'Intérieur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:451
+msgid "&Paste Below"
+msgstr "C&oller ci-dessous"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:456
+msgid "Paste Above"
+msgstr "Coller ci-dessus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:461
+msgid "Paste Inside"
+msgstr "Coller à l'intérieur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:473
+msgid "New Menu Prologue"
+msgstr "Nouveau Prologue de Menu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:481
+msgid "New Menu Epilogue"
+msgstr "Nouvel Épilogue de Menu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1042
+msgid "Popup"
+msgstr "Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1048
+msgid "&Export selected To..."
+msgstr "&Exporter la sélection vers..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1099
+msgid "&New Popup"
+msgstr "&Nouveau Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1105
+msgid "Re&move Popup"
+msgstr "Suppri&mer Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1112
+msgid "&Export Popup To..."
+msgstr "&Exporter Popup Vers..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+msgid "Unable to write to the popup file."
+msgstr "Impossible d'écrire dans le fichier de popup."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1382
+msgid "Popup Editor"
+msgstr "Éditeur de popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:62
+msgid "%cCore action: %Q"
+msgstr "%cAction interne : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:64
+msgid "%cUser action: %Q"
+msgstr "%cAction d'utilisateur : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:65
+msgid "Label: %Q"
+msgstr "Étiquette : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:66
+msgid "Category: %Q"
+msgstr "Catégorie : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:112
+msgid "The action \"%1\" is disabled"
+msgstr "L'action \"%1\" est désactivée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:259
+msgid "The action \"%1\" does not exist"
+msgstr "L'alias \"%1\" n'existe pas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:255
+msgid "The action \"%1\" is a core action and cannot be destroyed"
+msgstr "L'action \"%1\" est une action interne and ne peut être détruite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:392
+msgid "The switch -l requires -c"
+msgstr "L'option -l nécessite -c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:409
+msgid "The switch -s requires -w with a combination of flags 'c','x' and 'q'"
+msgstr ""
+"L'option -s nécessite -w avec une combinaison des drapeaux 'c','x' et 'q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:420
+msgid ""
+"The action \"%1\" is already defined as core action and cannot be overridden"
+msgstr ""
+"L'action \"%1\" est déjà définie comme une action interne et ne peut être "
+"écrasée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:116
+msgid "Ops.. internal error"
+msgstr "Oups... erreur interne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:125
+msgid "Manage File &Transfers"
+msgstr "Gérer les &Transferts de fichier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:67
+msgid "Choose Avatar - KVIrc"
+msgstr "Choix d'un Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:72
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+"Veuillez selectionner une aimage d'avatar. Le chemin complet d'un fichier "
+"local ou d'une image sur le Web peut être utilisé.<br>Si vous désirez "
+"utilisez un fichier d'image local, cliquez sur le bouton \"<b>Parcourir</b>"
+"\" pour naviguer dans les répertoires locaux.<br>L'URL complète d'une image "
+"(inclu <b>http://</b>) peut être entrée manuellement."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:283
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:358
+msgid "Internal error: I'm not in the user database ?"
+msgstr "Erreur interne : je ne suis pas dans la base des utilisateurs ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:245
+msgid "Can't set the current avatar to '%Q': failed to start the http transfer"
+msgstr ""
+"Impossible de définir l'avatar en cours à '%Q' : le lancement du transfert "
+"http"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:249
+msgid "Can't set the current avatar to '%Q': can't load the image"
+msgstr ""
+"Impossible de définir l'avatar en cours à '%Q' : chargement de l'image "
+"impossible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:351
+msgid "Invalid timeout specified, using default"
+msgstr "Temps d'expiration invalide, utilisation de celui par défaut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:389
+msgid "Can't add a file offer for file %Q (huh ? file not readable ?)"
+msgstr ""
+"Impossible d'ajouter une offre pour le fichier %Q (le fichier est-il "
+"lisible ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:396
+msgid "Added %d secs file offer for file %Q (%Q) and receiver %Q"
+msgstr ""
+"Ajout d'une offre de %d secondes pour le fichier %Q (%Q) et le destinataire %"
+"Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:403
+msgid "Notifying avatar '%Q' to %Q"
+msgstr "Notification de l'avatar '%Q' à %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:55
+msgid "&Execute"
+msgstr "&Exécuter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:59
+msgid "Params:"
+msgstr "Paramètres :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:107
+msgid "Script Tester"
+msgstr "Testeur de Script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:220
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:413
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:543
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:628
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:765
+msgid "The config file with id '%Q' is not open"
+msgstr "Le fichier de config avec l'id '%Q' n'est pas ouvert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:538
+msgid ""
+"The config file '%Q' has been changed but is opened as read-only: changes "
+"will be lost"
+msgstr ""
+"Le fichier de config '%Q' a été modifié mais est ouvert en lecture seule : "
+"les modifications seront perdus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:583
+msgid "The config file with id '%Q' is read only"
+msgstr "Le fichier avec l'id '%Q' est en lecture seule"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:178
+msgid "Colors"
+msgstr "Couleurs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:255
+msgid "Context sensitive help"
+msgstr "Aide contextuelle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1167
+msgid "&Replace"
+msgstr "&Remplacer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:268
+msgid "Find & Repalce"
+msgstr "Chercher & Remplacer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1148
+msgid "Word to Find"
+msgstr "Mot à chercher"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1156
+msgid "Replace with"
+msgstr "Remplacer par"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1172
+msgid "&Replace in all Aliases"
+msgstr "&Remplacer dans tous les alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1176
+msgid "&Findnext"
+msgstr "S&uivant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1181
+msgid "&Replace(WIP)"
+msgstr "Remplacer(WIP)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:227
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:547
+msgid "The specified toolbar doesn't exist"
+msgstr "La barre d'outils spécifiée n'existe pas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:424
+msgid "No action name/index specified"
+msgstr "Aucun nom/identifiant d'action spécifié"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:441
+msgid "The action parameter didn't evaluate to an index"
+msgstr "Le paramètre de l'action n'a pas été évalué à un entier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:455
+msgid "The toolbar does not contain the specified item"
+msgstr "La barre d'outils ne contient pas l'élément spécifié"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:513
+msgid "The action \"%Q\" doesn't exist"
+msgstr "L'action \"%Q\" n'existe pas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:31
+msgid "Torrent Client"
+msgstr "Client de Torrent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:361
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:364
+msgid "Standalone Servers"
+msgstr "Serveurs autonomes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:112
+msgid ""
+"%Q doesn't look like a servers.ini file.\n"
+"Import failed."
+msgstr ""
+"%Q ne ressemble pas à un fichier de type servers.ini.\n"
+"Importation échouée."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:122
+msgid "Choose a servers.ini file"
+msgstr "Choisir un fichier servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:146
+msgid "Remote mIRC servers.ini Import Wizard"
+msgstr "Assistant d'importation de servers.ini mIRC distant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:154
+msgid ""
+"<center><b>Welcome!</b><br><br>This wizard will guide you in the process of "
+"downloading a list of IRC servers. Please click \"<b>Next</b>\" to begin the "
+"operation.</center>"
+msgstr ""
+"<center><b>Bienvenue !</b><br><br>Cet assistant va vous guider dans le "
+"processus de téléchargement d'une liste de serveurs IRC. Cliquez \"<b>Suite</"
+"b>\" pour commencer les opérations.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:161
+msgid ""
+"<center>Here you can modify the URL that the list will be downloaded from. "
+"In most cases the default URL is acceptable.</center>"
+msgstr ""
+"<center>Vous pouvez changer ici l'URL de téléchargement de la liste. Dans la "
+"plupart des cas, celle par défaut est acceptable.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:169
+msgid "URL Selection"
+msgstr "Choix de l'URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:173
+msgid "Please wait while the list is being downloaded"
+msgstr "SVP, attendez lors du téléchargement de la liste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:179
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:195
+msgid "List Download"
+msgstr "Téléchargement de la liste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:229
+msgid "Failed to start the server list transfer :("
+msgstr "Impossible de commencer le transfert de liste :("
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:245
+msgid "File downloaded: processing ..."
+msgstr "Fichier téléchargé : traitement..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:255
+msgid "%1 servers imported succesfully"
+msgstr "%1 serveurs importé(s) avec succès"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:257
+msgid "No servers imported"
+msgstr "Aucun serveur importé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:326
+msgid "Import from servers.ini"
+msgstr "Importation depuis servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:333
+msgid "Import from http://www.mirc.co.uk/servers.ini"
+msgstr "Importation depuis http://www.mirc.co.uk/servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lineedit.cpp:372
+msgid "Unknown echo mode %Q"
+msgstr "Mode echo inconnu %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:203
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:359
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:172
+msgid "Widget parameter is not an object"
+msgstr "Le paramètre d'objet grapphique n'est pas un objet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:230
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:250
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:449
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:485
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:177
+msgid "Widget parameter is not a valid object"
+msgstr "Le paramètre d'objet graphique n'est pas un objet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:95
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:263
+msgid "Widget object required"
+msgstr "Objet graphique requis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:151
+msgid "Unknown dock area '%Q'"
+msgstr "Aire d'incrustation inconnue '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:321
+msgid "Unknown alignment: '%Q'"
+msgstr "Alignement inconnu : '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:373
+msgid "Unknown style: '%Q'"
+msgstr "Style inconnu : '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:84
+msgid "the toolbar cannot be a parent-widget!"
+msgstr "la barre d'outils ne peut avoir de parent !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:93
+msgid "The parent-widget isn't a MainWindow."
+msgstr "Le widget parent n'est pas une MainWindow."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:999
+msgid "The array passed as parameter must contain at least 4 elements"
+msgstr "Le tableau passé en paramètre doit avoir au moins 4 éléments"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1012
+msgid "One of the geometry array parameters is empty"
+msgstr "Un des éléments du tableau de géométrie passé en paramètre est vide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1017
+msgid "One of the geometry array parameters didn't evaluate to an integer"
+msgstr ""
+"Un des éléments du tableau de géométrie passé en paramètre n'est pas un "
+"entier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:503
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1032
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1500
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1044
+msgid "The first parameter didn't evaluate to an array nor an integer"
+msgstr "Le paramètre n'a pas été évalué à un entier ou un tableau d'entiers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1419
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1476
+msgid "The array passed as parameter must contain at least 2 elements"
+msgstr "Le tableau passé en paramètre doit avoir au moins 2 éléments"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:451
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:486
+msgid "One of the array parameters is empty"
+msgstr "On des élements du tableau passé en paramètre est vide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:456
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:491
+msgid "One of the array parameters didn't evaluate to an integer"
+msgstr "On des élements du tableau passé en paramètre n'est pas un entier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:478
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:804
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:993
+msgid "The array passed as parameter must contain at least 3 elements"
+msgstr "Le tableau passé en paramètre doit contenir au moins 3 éléments"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:551
+msgid "Unknown orientation"
+msgstr "Orientation inconnue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:789
+msgid "Pixmap or Widget parameter is not an object"
+msgstr "Le pixmap ou l'objet graphique n'est pas un objet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:730
+msgid "Widget or Pixmap required "
+msgstr "Objet graphique ou Pixmap requis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:852
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:862
+msgid "Invalid mode '%Q'"
+msgstr "Mode invalide '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:886
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1701
+msgid "Pixmap parameter is not an object"
+msgstr "Le paramètre spécifié n'est pas un objet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:891
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1706
+msgid "Pixmap object required"
+msgstr "Objet pixmap requis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1027
+msgid ""
+"$setGeometry() requires either an array as first parameter or four integers"
+msgstr "$setGeometry() soit un tableau comme premier paramètre, soit 4 entiers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:813
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1002
+msgid "One of the colors array parameters is empty"
+msgstr "Un des éléments du tableau de couleurs passé en paramètre est vide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:818
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1007
+msgid "One of the colors array parameters didn't evaluate to an integer"
+msgstr ""
+"Un des éléments du tableau de couleurs passé en paramètre n'est pas un entier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1020
+msgid "A string of 6 digits hex is required"
+msgstr "Une chaîne de caractère de 6 numéros hexadécimaux est recquis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:842
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1031
+msgid "Not an hex digits"
+msgstr "Ce n'est pas un numéro hexadécimal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1144
+msgid ""
+"$setForegroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+"$setForegroundColor soit un tableau comme premier paramètre, soit une chaîne "
+"de caractères hexadécimale, soit 3 entiers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1219
+msgid ""
+"$setBackgroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+"$setBackgroundColor soit un tableau comme premier paramètre, soit une chaîne "
+"de caractères hexadécimale, soit 3 entiers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1426
+msgid "One of the move array parameters is empty"
+msgstr "Un des éléments du tableau de déplacement passé en paramètre est vide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1431
+msgid "One of the move array parameters didn't evaluate to an integer"
+msgstr ""
+"Un des éléments du tableau de déplacement passé en paramètre n'est pas un "
+"entier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1438
+msgid "$move() requires either an array as first parameter or two integers"
+msgstr ""
+"$move() nécessite soit un tableau comme premier paramètre, soit deux entiers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1483
+msgid "One of the resize array parameters is empty"
+msgstr ""
+"Un des éléments du tableau de redimensionnement passé en paramètre est vide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1488
+msgid "One of the resize array parameters didn't evaluate to an integer"
+msgstr ""
+" Un des éléments du tableau de redimensionnement passé en paramètre n'est "
+"pas un entier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1495
+msgid "$resize() requires either an array as first parameter or two integers"
+msgstr ""
+"$resize() necéssite soit un tableau comme premier paramètre, soit deux "
+"entiers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1528
+msgid "Invalid parameters"
+msgstr "Paramètres invalides"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1560
+msgid "Unknown widget flag '%Q'"
+msgstr "Type d'objet graphique inconnu : '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1592
+msgid "Unknown style '%Q'"
+msgstr "Style inconnu : '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1622
+msgid "No Layout associated to the widget "
+msgstr "Aucune Disposition (Layout) associé à ce widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:117
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:152
+msgid "Can't add a non-widget object"
+msgstr "Impossible d'ajouter un objet non graphique"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1650
+msgid "Parent must be a widget object"
+msgstr "Le parent doit être objet graphique"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1715
+msgid "Null mask"
+msgstr "Masque vide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1740
+msgid "Unknown widget attribute '%Q'"
+msgstr "Attribut de widget '%Q' inconnu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:382
+msgid "No such line number"
+msgstr "Mauvais numéro de ligne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:500
+msgid "Unknown word wrap '%Q'"
+msgstr "Mode césure inconnu '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:519
+msgid "Unknown wrap policy'%Q'"
+msgstr "Police de césure inconnue '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:850
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1039
+msgid "$setColor requires either an array as first parameter or three integers"
+msgstr ""
+"$setColor nécessite soit un tableau en premier paramètre, soit 3 entiers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:975
+msgid "Unknown text format '%Q'"
+msgstr "format de texte inconnu '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1071
+msgid " I can't find the specified file '%Q'."
+msgstr " Impossible de trouver le fichier spécifié '%Q'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1078
+msgid " I cannot read the file %Q'."
+msgstr " Impossible de lire le fichier '%Q'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1113
+msgid "Unknown alignment '%Q'"
+msgstr "Alignement inconnu '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1131
+msgid "Unknown auto formatting mode '%Q'"
+msgstr "Mode d'auto formatage inconnu '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1149
+msgid "Unknown vertical alignment '%Q'"
+msgstr "Alignement vertical inconnu '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:264
+msgid "pix '%Q' doesn't exists"
+msgstr "l'image \"%Q\" n'existe pas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:276
+msgid "Can't add a non - popupmenu object"
+msgstr "Impossible d'ajouter un objet non popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:302
+msgid "Doesn't a widget object"
+msgstr "Ce n'est pas un objet graphique"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:182
+msgid "I can't find the specified file %Q."
+msgstr "Impossible de trouver le fichier %Q."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:222
+msgid "Destination parameter is not an object"
+msgstr "Le paramètre de destination n'est pas un objet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:228
+msgid "Destination must be a pixmap object"
+msgstr "La destination doit être un objet graphique"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:238
+msgid "Area dimensions are out of destination size "
+msgstr "Les dimensions de la zone dépassent la taille de la destination"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:253
+msgid "Pixmap dimensions are out of destination size "
+msgstr "Les dimensions du Pixmap dépassent les dimensions de la destination"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:261
+msgid "Offset width area is out of pixmap size "
+msgstr "Le décalage de largeur dépasse la taille du pixmap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:266
+msgid "Offset height area is out of pixmap size "
+msgstr "Le décalage de hauteur dépasse la taille du pixmap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:121
+msgid "The widget must be a child of this hbox"
+msgstr "L'objet graphique doit être un fils de ce hbox"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:191
+msgid "No string parameter given - using empty string"
+msgstr ""
+"Aucune chaîne de caractère transmise en paramètre : on utilise une chaîne de "
+"caractère vide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:194
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:214
+#, c-format
+msgid "Item index [%d] is too big - defaulting to $count() - 1 [%d]"
+msgstr "Index d'élément [%d] trop gros - par défaut on prend $count() - 1 [%d]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:333
+msgid "Invalid insertion Policy %Q"
+msgstr "Politique d'insertion invalide %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:136
+msgid "Unknown mode "
+msgstr "Mode inconnu "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:149
+msgid "Unknown segment style "
+msgstr "Type de segment inconnu "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_process.cpp:221
+msgid "Process could not be starded."
+msgstr "Le processus ne peut être demarré."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:279
+msgid "Invalid selection mode '%Q' assuming single"
+msgstr "Mauvais mode sélection '%Q' donc on assume simple"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:316
+msgid "Unknown text position '%Q'"
+msgstr "Position de texte inconnue '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:256
+msgid "Unknown tickmark '%Q'"
+msgstr "Position de repère inconnu '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:271
+msgid "Unknown orientation '%Q'"
+msgstr "Orientation inconnue '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:500
+msgid "No socket object specified"
+msgstr "Aucun objet de socket spécifié"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:506
+msgid "Invalid socket object specified (it doesn't inherit from socket)"
+msgstr "Objet de socket spécifié invalide (il n'hérite pas du socket)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:518
+msgid "There is no connection to accept!"
+msgstr "Il n'y a aucune connexion à accpeter !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:591
+#, c-format
+msgid "Value %d for port is out of range (values allowed are from 0 to 65535"
+msgstr ""
+"La valuer %d du port est hors limites (les valeurs doivent être comprises "
+"entre 0 et 65535)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:596
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:87
+msgid "Another connection in progress"
+msgstr "Une autre connexion est en cours"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:648
+msgid "No IPV6 support in this executable"
+msgstr "Aucun support IPV6 pour cet executable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:670
+msgid "Invalid IP address specified ('%Q')"
+msgstr "Adresse IP spécifiée invalide ('%Q')"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:89
+msgid "Socket creation failed"
+msgstr "La création du socket a échoué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:706
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:727
+msgid "Invalid socket address"
+msgstr "Adresse de socket invalide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:714
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:735
+msgid "Bind failure"
+msgstr "Liaison impossible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:745
+msgid "Listen failure"
+msgstr "Écoute impossible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:812
+msgid "unknown"
+msgstr "inconnu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:876
+msgid "Invalid ip address "
+msgstr "Adresse IP invalide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:882
+msgid "Invalid ip address (%Q)"
+msgstr "Adresse IP invalide (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:906
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1013
+msgid "Failed to create the socket"
+msgstr "La création du socket a échoué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:918
+msgid "Failed to setup a nonblocking socket"
+msgstr "Impossible de configurer un socket non bloquant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:939
+msgid "Connect failure: "
+msgstr "Echec de connexion :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:967
+msgid "Connect attempt timed out"
+msgstr "La tentative de connexion a dépassé le temps imparti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:993
+msgid "Can't start the DNS thread"
+msgstr "Impossible de démarrer le fil de DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:1143
+msgid ""
+"Too much unprocessed incoming data (you've left this socket unmanaged ?)"
+msgstr ""
+"Trop de données entrantes non traitées (avez-vous laissé ce socket sans "
+"gestion ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:149
+msgid "Error in KVS class implementation: processing aborted"
+msgstr "Erreur dans l'implémentation de la classe : traitement interrompu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:154
+msgid "Processing aborted"
+msgstr "Traitement interrompu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:160
+#, c-format
+msgid "Error near line %d, column %d"
+msgstr "Erreur près de la ligne %d et de la colonne %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:162
+#, c-format
+msgid "Warning near line %d, column %d"
+msgstr "Avertissement près de la ligne %d et de la colonne %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:313
+msgid "XML support not available in the Qt library"
+msgstr "Le support XML n'est pas encore disponible dans la libraire Qt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:491
+msgid "Not a widget object"
+msgstr "Ce n'est pas un objet graphique"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:308
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:497
+msgid "Can't find the tab "
+msgstr "Impossible de trouver la tabulation "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:522
+msgid "Unknown position 'Q%'"
+msgstr "Position inconnue '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:123
+msgid "The widget must be a child of this vbox"
+msgstr "L'objet graphique doit être un fils de ce vbox"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:276
+msgid "Not Enough Parameters"
+msgstr "Pas assez de paramètres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:142
+msgid "The listviewitem cannot be parentless"
+msgstr "L'item listviewitem ne peut pas être orphelin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:152
+msgid ""
+"The parent of the listviewitem must be either another listviewitem or a "
+"listview"
+msgstr ""
+"Le parent de listviewitem doit être soit un autre listviewtiem ou un listview"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:403
+msgid "Pixmap object or image Id required"
+msgstr "Objet pixmap ou identifiant d'image requis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:413
+msgid ""
+"Error occured: the suitable file '%Q' is not of the correct format or it is "
+"not a valid icon number."
+msgstr ""
+"Erreur : le fichier '%Q' n'est pas au format correct ou n'est pas un numéro "
+"d'icône valide."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:151
+msgid ""
+"The window identifier preceeded by WinId must be the first object in the "
+"search path"
+msgstr ""
+"L'identifiant de la fenêtre précédé par Winid doit être le premier objet "
+"trouvé à travers l'arborescence recherché"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:167
+msgid "Failed to find one of the wrap path widgets (%Q::%Q)"
+msgstr ""
+"Impossible de trouver un des objets graphiques enveloppés à travers "
+"l'arborescence (%Q::%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:176
+msgid "Failed to find the widget to wrap"
+msgstr "Impossible de trouver l'objet graphique à envolopper"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:119
+msgid "The parent of a layout must be a widget!"
+msgstr "Le parent d'un layout doit etre un widget !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:269
+msgid "Invalid resize mode defaulting to Auto"
+msgstr "Mode de redimensionnement invalide donc bascule en Auto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:324
+msgid "Unknown alignment"
+msgstr "Alignement inconnu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:373
+msgid "Unknown orientation: "
+msgstr "Orientation inconnue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listview.cpp:320
+msgid "Invalid selection mode '%Q'"
+msgstr "Mode de sélection '%Q' invalide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tbrowser.cpp:99
+msgid "I can't find the specified file '%Q'."
+msgstr "Impossible de trouver le fichier spécifié '%Q'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:121
+msgid "Can't add a null object"
+msgstr "Impossible d'ajouter un objet nul"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:128
+msgid ""
+"Invalid object handle passed as parameter (the object is no longer "
+"existing ?)"
+msgstr ""
+"Identifiant d'objet invalide passé comme paramètre (l'object existe-t-il "
+"encore ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:134
+msgid "Object in invalid state"
+msgstr "Objet dans un état invalide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:140
+msgid "Can't set a non-widget object to be the main widget of a dock window"
+msgstr ""
+"Impossible de définir un objet non graphique comme étant l'objet graphique "
+"principal d'une fenêtre incrustée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:146
+msgid "The added widget is not a child of this dock window"
+msgstr "L'objet graphique ajouté n'est pas un fils de la fenêtre incrustée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:271
+msgid "Invalid dock area specified"
+msgstr "Aire d'incrustation invalide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:181
+msgid "Class '%Q' is not definited"
+msgstr "La classe '%Q' n'est pas définie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:257
+msgid "Inexisting target object for objects.connect"
+msgstr "Objet cible inexistant pour objects.connect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:262
+msgid "Inexisting source object for objects.connect"
+msgstr "Objet source inexistant pour objects.connect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:444
+msgid "The class '%Q' does not exist"
+msgstr "La classe '%Q' n'existe pas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:404
+msgid "Object does not exists"
+msgstr "L'objet n'existe pas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:557
+msgid "Inexisting target object for objects.disconnect"
+msgstr "Objet cible inexistant pour objects.disconnect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:562
+msgid "Inexisting source object for objects.disconnect"
+msgstr "Objet source inexistant pour objects.disconnect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:608
+msgid "Source is not an object"
+msgstr "La source n'est pas un objet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:614
+msgid "Destination is not an object"
+msgstr "La destination n'est pas un objet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:625
+msgid "Widget, Image or Pixmap required "
+msgstr "Objet graphique, image ou Pixmap requis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:635
+msgid "Widget or Pixmap required"
+msgstr "Objet graphique ou Pixmap requis (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:714
+msgid "One o more of background, foreground or destination aren't objects"
+msgstr ""
+"Au moins un parmis l'arrière-plan, l'avant-plan et la destination n'est pas "
+"un objet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:720
+msgid "Pixmap objects required"
+msgstr "Objet pixmap requis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:743
+msgid "Values for background are out of image size "
+msgstr "Les valeurs de position de l'arrière-plan le font sortir de l'image"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:748
+msgid "Values for foreground are out of image size "
+msgstr "Les valeurs de position de l'avant-plan le font sortir de l'image"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:226
+msgid "Empty filename string"
+msgstr "Nom de fichier vide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:271
+msgid "No such open mode: '%Q'"
+msgstr "Mode d'ouverture inconnu : '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:312
+msgid "File is not open!"
+msgstr "ULe fichier n'est pas ouvert !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:348
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:406
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:434
+msgid "File is not open !"
+msgstr "Le fichier n'est pas ouvert !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:369
+msgid "Argument to long, using only first char"
+msgstr "Argument trop long, utilisation du premier caractère uniquement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:339
+msgid "Write error occured !"
+msgstr "Une erreur d'écriture est survenue !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:352
+msgid "Read error occured !"
+msgstr "Une erreur de lecture est survenue !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:371
+msgid "An error occured !"
+msgstr "Un erreur est survenue !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:387
+msgid "Missing both encrypt and decrypt key: at least one is needed"
+msgstr ""
+"Il manque la clé de chiffrage et celle de déchiffrage : l'une au moins est "
+"nécessaire"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:168
+msgid "Error 0: Success ?"
+msgstr "Succès?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:169
+msgid "Unsupported crypt mode"
+msgstr "Mode de chiffrage non supporté"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:170
+msgid "Unsupported direction"
+msgstr "Direction non supportée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:171
+msgid "Unsupported key length"
+msgstr "Longueur de clé non supportée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:172
+msgid "Bad key data"
+msgstr "Mauvaises données pour la clé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:173
+msgid "Engine not initialized"
+msgstr "Le moteur n'est pas initialisé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:174
+msgid "Invalid direction for this engine"
+msgstr "Mauvaise direction pour ce moteur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:175
+msgid "Corrupted message data or invalid decrypt key"
+msgstr "Données du message corrompues ou clé de déchiffrage invalide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:52
+msgid "Unknown error"
+msgstr "Erreur inconnue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:184
+msgid "Ops...encrypt cipher not initialized"
+msgstr "Oups... le chiffreur du chiffrage n'est pas initialisé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:420
+msgid "Data buffer too long"
+msgstr "Tampon de données trop long"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:221
+msgid "Ops...decrypt cipher not initialized"
+msgstr "Oups... le chiffreur du déchiffrage n'est pas initialisé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:277
+msgid "The message is not a hexadecimal string: this is not my stuff"
+msgstr "Ce message n'est pas une chaîne hexadecimale : je me m'en occupe pas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:671
+msgid "The message is not a base64 string: this is not my stuff"
+msgstr "Ce message n'est pas une chaîne en base64 : je me m'en occupe pas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:676
+msgid "The message doesn't seem to be encoded with CBC Mircryption"
+msgstr "Ce message ne semble pas avoir été encodé avec CBC Mircryption"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:712
+#, c-format
+msgid ""
+"Cryptographic engine based on the\n"
+"Advanced Encryption Standard (AES)\n"
+"algorithm called Rijndael.\n"
+"The text is first encrypted with rijndael\n"
+"and then converted to %s notation.\n"
+"The keys used are %d bit long and will be padded\n"
+"with zeros if you provide shorter ones.\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"See the rijndael module documentation\n"
+"for more info on the algorithm used.\n"
+msgstr ""
+"Moteur cryptographique basé sur \n"
+"l'algorithme de Standard de Chiffrage Avançé (AES)\n"
+"appelé Rijndael. Le texte d'abord converti\n"
+"avec rijndael puis converti en une notation %s.\n"
+"Les clés utilisées sont longues %d bits et\n"
+"vont être complétées avec des zéros\n"
+"si vous en fournissez des moins longues.\n"
+"Si une seule est fournie, ce moteur va l'utiliser\n"
+"à la fois pour le chiffrage et le déchiffrage.\n"
+"Lisez la documentation du module rijndael\n"
+"pour plus d'informations sur l'algorithme utilisé.\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:739
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:749
+msgid "hexadecimal"
+msgstr "hexadecimal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:759
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:779
+msgid "base64"
+msgstr "base64"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:790
+msgid ""
+"Popular cryptographic engine based on the\n"
+"old Blowfish encryption algorithm.\n"
+"The text is first encrypted with Blowfish \n"
+"and then converted to base64 notation.\n"
+"The keys used have variable length and\n"
+"are specified as character strings.\n"
+"You can specify keys long up to 56 bytes (448 bits).\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"This engine works in ECB mode by default:\n"
+"if you want to use CBC mode you must prefix\n"
+"your key(s) with \"cbc:\".\n"
+msgstr ""
+"Moteur de chiffrage populaire basé sur\n"
+"l'ancien algorithme de chiffrage Blowfish.\n"
+"Le texte est d'abord chiffré avec Blowfish\n"
+"puis converti en notation base64.\n"
+"Les clés utilisées sont de longueur variable et\n"
+"sont spécifiées comme des chaînes de caractères.\n"
+"Vous pouvez spécifier des clés longues\n"
+"de 56 octets (448 bits).\n"
+"Si une seule clé est fournie, ce moteur va l'utiliser \n"
+"à la fois pour le chiffrage et le déchiffrage.\n"
+"Ce moteur fonctionne en mode ECB par défaut :\n"
+"si vous utilisez le mode ECB, vous devez préfixer\n"
+"votre (vos) clé(s) avec \"cbc:\".\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:61
+msgid "Drop here the icons from the toolbars to remove them"
+msgstr "Déposer ici les icônes des barres d'outils pour les enlever"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:128
+msgid "ToolBar Properties"
+msgstr "Propriétés de Barre d'Outils"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:144
+msgid "Icon"
+msgstr "Icône"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:160
+msgid "Id"
+msgstr "Identifiant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:217
+msgid "Please choose the icon for the ToolBar"
+msgstr "Choisissez l'icône pour la Barre d'Outils"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "Invalid ToolBar Label"
+msgstr "Etiquette de Barre d'Outil invalide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "The ToolBar Label can't be empty!"
+msgstr "L'étiquette de Barre d'Outil ne peut être vide !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:256
+msgid "Duplicate ToolBar Id"
+msgstr "Identifiant de Barre d'Outils en double"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:257
+msgid ""
+"The specified ToolBar Id already exists.<br>Would you like KVIrc to assign "
+"it automatically (so it doesn't collide with any other toolbar) or you "
+"prefer to do it manually ?"
+msgstr ""
+"L'identifiant de Barre d'Outils existe déjà.<br>Voulez-vous que KVIrc "
+"l'assigne automatiquement (ainsi il n'entrera pas en collision avec d'autres "
+"barres d'outils) ou préférez-vous le faire manuellement ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Manually"
+msgstr "Manuellement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Automatically"
+msgstr "Automatiquement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:278
+msgid "Hide Advanced"
+msgstr "Cacher Avancé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:287
+msgid "Customize Toolbars"
+msgstr "Personnalisér les Barres d'Outils"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:296
+msgid "New ToolBar"
+msgstr "Nouvelle Barre d'Outils"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:300
+msgid "Delete ToolBar"
+msgstr "Supprimer Barre d'Outils"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:304
+msgid "Edit ToolBar"
+msgstr "Éditer Barre d'Outils"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:312
+msgid "Export ToolBar"
+msgstr "Exporter la Barre d'Outils"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:373
+msgid "Confirm ToolBar Deletion"
+msgstr "Confirmer Suppression Barre d'Outils"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:374
+msgid "Do you really want to delete toolbar \"%1\" ?"
+msgstr "Désirez-vous vraiment supprimer la barre d'outils \"%1\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:397
+msgid "ToolBar Export"
+msgstr "Exportation de Barre d'Outils"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:398
+msgid "Do you want the associated actions to be exported with the toolbar ?"
+msgstr ""
+"Voulez-vous que les actions associées soient exportées avec la barre "
+"d'outils ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+msgid "Unable to write to the toolbar file."
+msgstr "Impossible d'écrire dans le fichier de barre d'outils."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:465
+msgid "Please specify the properties for the toolbar \"%1\""
+msgstr "Spécifiez les propriétés de la barre d'outils \"%1\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:491
+msgid "Please specify the properties for the new toolbar"
+msgstr "Spécifiez les propriétés de la nouvelle barre d'outils"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:493
+msgid "My ToolBar"
+msgstr "Ma Barre d'Outils"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:63
+msgid "Window with ID '%Q' not found"
+msgstr "Identifiant de fenêtre '%Q' introuvable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:67
+msgid "The specified window (%Q) is not a channel/query/DCC chat"
+msgstr "La fenêtre spécifiée (%Q) n'est pas un salon/privé/DCC chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:108
+msgid "File not found or empty"
+msgstr "Fichier introuvable ou vide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:114
+msgid "I can't open that file"
+msgstr "Impossible d'ouvrir le fichier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:122
+msgid "Could not paste file"
+msgstr "Impossible de recopier le fichier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:218
+msgid "The specified window (%Q) is not a channel/query/dcc"
+msgstr "La fenêtre spécifiée (%Q) n'est pas un salon/privé/dcc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:271
+msgid "Slow-paste ID:%d Window:%Q"
+msgstr "Identifiant recopiage-lent : fenêtre %d : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:240
+msgid "Plugin not found. Please check the plugin-name and path."
+msgstr "Plugin non trouvé. Merci de vérifier le nom du plugin et le chemin."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:247
+msgid "Error while loading plugin."
+msgstr "Erreur lors du chargement du module"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:311
+msgid "This plugin does not export the desired function."
+msgstr "Ce plugin n'exporte pas la fonction désirée."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:327
+msgid ""
+"The plugin has no function to free memory. This can result in Memory Leaks!"
+msgstr ""
+"Le plugin n'a pas de fonction pour libérer la mémoire. Ceci peut produire "
+"des fuites de mémoire !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:209
+#, c-format
+msgid "No environment variable found, please don't use the %% in the request"
+msgstr ""
+"Variable d'environnement non trouvée. N'utilisez pas de %% dans votre "
+"requête."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:482
+msgid "Invalid DCOP parameter syntax"
+msgstr "Synthaxe de paramètre DCOP invalide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:495
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:516
+msgid "The specified parameter is not an integer"
+msgstr "Le paramètre spécifié n'est pas un entier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:521
+#, c-format
+msgid "Unsupported DCOP parameter type %s"
+msgstr "Paramètre DCOP non supporté %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:534
+msgid "DCOP call failed"
+msgstr "L'appel DCOP à échoué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:599
+msgid "DCOP calls are available only when KDE support is compiled in"
+msgstr ""
+"Les appels DCOP ne sont disponibles qu'avec le support KDE à la compilation"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1408
+#, c-format
+msgid "The window with id '%s' does not exist"
+msgstr "La fenêtre ayant pour identifiant '%s' n'existe pas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:851
+msgid "Window type or 'all' expected as first parameter"
+msgstr "Type de fenêtre ou 'all' attendu comme premier paramètre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:938
+msgid "Invalid IRC context id '%Q'"
+msgstr "Contexte IRC '%Q' invalide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1045
+msgid "The specified IRC context is not valid: creating a context free window"
+msgstr ""
+"Le contexte IRC spécifié est ivalide : on crée une fenêtre sans contexte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1119
+msgid "The specified window is not of type \"userwnd\""
+msgstr "La fenêtre spécifiée n'est pas de type \"userwnd\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1208
+msgid "Window doesn't have input widget"
+msgstr "La fenêtre spécifiée n'a pas de zone d'entrée pour le texte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1363
+msgid "The encrypt key wasn't a valid hexadecimal string"
+msgstr ""
+"La clé de chiffrage n'est pas une chaîne de caractère hexadécimale valide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1377
+msgid "The decrypt key wasn't a valid hexadecimal string"
+msgstr ""
+"La clé de déchiffrage n'est pas une chaîne de caractère hexadécimale valide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1414
+msgid "Both -n and -m switchess specified, -n takes precedence"
+msgstr ""
+"Les options -n et -m ont toutes les deux été spécifiées, -n a la priorité"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1424
+msgid "No encrypt key specified: can't allocate engine"
+msgstr ""
+"Aucune clé de chiffrage spécifiée : impossible de lancé le moteur de "
+"chiffrage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1446
+msgid "Unknown engine error"
+msgstr "Erreur du moteur inconnue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1449
+msgid "Failed to initialize the specified crypt engine: %Q"
+msgstr "Impossible d'initialiser le moteur de chiffrage spécifié"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1453
+msgid "The crypt engine \"%Q\" does not exist"
+msgstr "L'e moteur de chiffrage \"%Q\" n'existe pas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1458
+msgid "This executable has been compiled without crypt support"
+msgstr "Cet exécutable a été compilé sans le support de chiffrage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:138
+msgid "Current window is not a channel"
+msgstr "La fenêtre courante n'est pas un salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:87
+msgid "Raw Event"
+msgstr "Événement Raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:97
+msgid "Edit the raw event handler name."
+msgstr "Éditer le nom du gestionnaire d'événement raw."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:179
+msgid "&Add Raw Event..."
+msgstr "&Ajouter Événement Raw..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "New Raw Event"
+msgstr "Nouvel Événement Raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "Enter the numeric code of the message (0-999)"
+msgstr "Entrez le code numérique du message (0-999)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+msgid "Unable to write to the raw event file."
+msgstr "Impossible d'écrire dans le fichier d'événement raw."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Unable to write to the raw events file."
+msgstr "Impossible d'écrire dans le fichier d'événements raw."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:512
+msgid "Raw Editor"
+msgstr "Éditeur de Raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:219
+msgid "A really lame text transformation engine :D"
+msgstr "Une véritable machine à transformer le texte pour lamouzes :D"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:229
+msgid "A really lame text transformation engine: Light Version."
+msgstr ""
+"Une véritable machine à transformer le texte pour lamouzes : version légère"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:82
+#, c-format
+msgid "Socket Spy [IRC Context %u]"
+msgstr "Socket Espion [Contexte IRC %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:92
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Socket Spy</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Socket Espion</b></font><font color=\"%s\">"
+"[Contexte IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:112
+msgid "Socket open"
+msgstr "Socket ouvert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:117
+msgid "Socket closed"
+msgstr "Socket fermé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:149
+msgid "Internal unique name for the action"
+msgstr "Nom unique pour une action interne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:151
+msgid "Label:"
+msgstr "Étiquette:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:155
+msgid ""
+"Visible name for this action.<br>This string will be displayed to the user "
+"so it is a good idea to use $tr() here"
+msgstr ""
+"Nom visible pour cette action.<br>Cette chaîne va être affichée à "
+"l'utilisateur, c'est donc une bonne idée d'utiliser $tr() ici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:166
+msgid "Action code"
+msgstr "Code de l'action"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:168
+msgid "Code"
+msgstr "Code"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:174
+msgid "Category:"
+msgstr "Catégorie :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:178
+msgid "Choose the category that best fits for this action"
+msgstr "Choisissez la catégorie qui convient le mieux à cette action"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:180
+msgid "Description:"
+msgstr "Description :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:184
+msgid ""
+"Visible short description for this action.<br>This string will be displayed "
+"to the user so it is a good idea to use $tr() here"
+msgstr ""
+"Description visible courte de cette action.<br>Cette chaîne va être affichée "
+"à l'utilisateur, c'est donc une bonne idée d'utiliser $tr() ici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:186
+msgid "Small Icon:"
+msgstr "Petite Icône :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:194
+msgid ""
+"The small icon associated to this action.<br>It will appear at least in the "
+"popup menus when this action is inserted.<br>It should be 16x16 pixels."
+msgstr ""
+"La petite icône associée à cette action.<br>Elle apparaîtra au moins dans "
+"les menus de popups quand quand l'action est insérée.<br>Elle doit être de "
+"16x16 pixels."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:200
+msgid "Big Icon:"
+msgstr "Grande Icône :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:209
+msgid ""
+"The big icon associated to this action.<br>It will appear at least in the "
+"toolbar buttons when this action is inserted.<br>It should be 32x32 pixels."
+msgstr ""
+"La grande icône associée à cette action.<br>Elle apparaîtra au moins dans "
+"les menus de popups quand quand l'action est insérée.<br>Elle doit être de "
+"32x32 pixels."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:215
+msgid "Key Sequence:"
+msgstr "Séquence de touches :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:219
+msgid ""
+"Optional keyboard sequence that will activate this action.<br>The sequence "
+"should be expressed as a string of up to four key codes separated by commas "
+"eventually combined with the modifiers \"Ctrl\",\"Shift\",\"Alt\" and \"Meta"
+"\".<br>Examples of such sequences are \"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl+X,"
+"Ctrl+C\" ..."
+msgstr ""
+"Séquence optionnelle de touches de clavier qui va activer cette action."
+"<br>La séquence doit avoir la forme d'une chaîne jusqu'à codes clés séparés "
+"par des virgules et eventuellement combinés avec les modifieurs\"Ctrl\","
+"\"Shift\",\"Alt\" and \"Meta\". <br>De telles séquences sont par exemple "
+"\"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl+X, Ctrl+C\" ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:240
+msgid "Needs IRC Context"
+msgstr "Besoin d'un Contexte IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:242
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window belongs to an irc context"
+msgstr ""
+"Cochez cette option si cette action doit activée seulement quand la fenêtre "
+"active dépend d'un contexte IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:250
+msgid "Needs IRC Connection"
+msgstr "Besoin d'une Connexion IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:252
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window has an active IRC connection"
+msgstr ""
+"Cochez cette option si cette action doit activée seulement quand la fenêtre "
+"active a une connexion IRC active"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:260
+msgid "Enable at Login"
+msgstr "Activer à l'Enregistrement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:261
+msgid ""
+"Check this option if this action should be enabled also during the login "
+"operations (so when the logical IRC connection hasn't been estabilished yet)"
+msgstr ""
+"Cochez cette option si cette action doit activée aussi pendant les "
+"opérations d'enregistrement (donc quand la connexion IRC n'a pas été encore "
+"effectivement établiee)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:265
+msgid "Enable Only in Specified Windows"
+msgstr "Activer dans les Fenêtres Spécifiées"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:267
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is of a specified type"
+msgstr ""
+"Cochez cette option si cette action ne doit être activée que si quand la "
+"fenêtre active est d'un type spécifié"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:271
+msgid "Enable in Console Windows"
+msgstr "Activer dans les Fenêtres de Console"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:272
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a console"
+msgstr ""
+"Cochez cette option si cette action ne doit être activée que si la fenêtre "
+"active est une console"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:277
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:299
+msgid "Only If There Are Selected Users"
+msgstr "Seulement s'il y a des Utilisateurs Selectionnés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:278
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:300
+msgid ""
+"This will enable the action only if there are selected users in the active "
+"window"
+msgstr ""
+"Cela va activer cette action seulement s'il y a des utilisateurs "
+"selectionnés dans la fenêtre active"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:282
+msgid "Enable in Channel Windows"
+msgstr "Activer dans les Fenêtres de salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:283
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a channel"
+msgstr ""
+"Cochez cette option si cette action ne doit être activée que si la fenêtre "
+"active est un salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:293
+msgid "Enable in Query Windows"
+msgstr "Activer dans les Fenêtres privées"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:294
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a query"
+msgstr ""
+"Cochez cette option si cette action ne doit être activée que si la fenêtre "
+"active est un privé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:304
+msgid "Enable in DCC Chat Windows"
+msgstr "Activer dans les Fenêtres de DCC Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:305
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a dcc chat"
+msgstr ""
+"Cochez cette option si cette action ne doit être activée que si la fenêtre "
+"active est un dcc chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:627
+msgid "Action"
+msgstr "Action"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:680
+msgid "New Action"
+msgstr "Nouvelle Action"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:683
+msgid "Delete Actions"
+msgstr "Supprimer Actions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:686
+msgid "Export Actions..."
+msgstr "Exporter Actions..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Unable to write to the actions file."
+msgstr "Impossible d'écrire dans le fichier d'actions."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:823
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:824
+msgid "My Action"
+msgstr "Action"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:825
+msgid "Put here a short description of your action"
+msgstr "Donnez ici une description courte de votre action"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:925
+msgid "Action Editor"
+msgstr "Éditeur d'Action"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:938
+msgid "Apply"
+msgstr "Appliquer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:63
+msgid "Outgoing traffic"
+msgstr "Traffic sortant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:67
+msgid "Incoming traffic"
+msgstr "Traffic entrant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_crypt.cpp:160
+msgid "Invalid crypt engine"
+msgstr "Moteur de chiffrage invalide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:296
+msgid "Directory"
+msgstr "Répertoire"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:315
+msgid "Socket"
+msgstr "Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:332
+msgid "Fifo"
+msgstr "Fifo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:349
+msgid "Block device"
+msgstr "Périphérique de bloc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:366
+msgid "Char device"
+msgstr "Périphérique de caractère"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:429
+msgid "Octet stream (unknown)"
+msgstr "Flot d'octets (inconnu)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_osinfo.cpp:413
+msgid "Unknown "
+msgstr "Inconnu "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:181
+msgid "The specified network has no server entries"
+msgstr "Le réseau specifié n'a pas d'entrée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:239
+msgid ""
+"The server specification seems to be in the net:<string> but the network "
+"couln't be found in the database"
+msgstr ""
+"La spécification du serveur semble du type net:<string>, mais le réseau "
+"correspodant n'a pu être trouvé dans la base"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:261
+msgid ""
+"The server specification seems to be in the id:<string> form but the "
+"identifier coulnd't be found in the database"
+msgstr ""
+"La spécification du serveur semble du type id:<string>, mais l'identifiant "
+"correspodant n'a pu être trouvé dans la base"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:71
+msgid "Aborted"
+msgstr "Interrompu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:96
+msgid "No request"
+msgstr "Aucune requête"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:141
+msgid "No filename specified for the \"StoreToFile\" processing type"
+msgstr "Aucun fichier spécifié pour le processus de type \"StoreToFile\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:160
+msgid "Invalid URL: Missing hostname"
+msgstr "URL non valable : L'adresse est manquante"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:167
+msgid "Unsupported protocol %1"
+msgstr "Protocole non supporté %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:189
+msgid "Unable to start the DNS lookup"
+msgstr "Impossible de commencer la vérification de DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:194
+#, c-format
+msgid "Looking up host %s"
+msgstr "Vérification de la machine %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:210
+msgid "Host %s resolved to %Q"
+msgstr "Hôte %s résolu en %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:246
+msgid "Unable to start the request slave thread"
+msgstr "Impossible de lancer le suivi de requête"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:251
+msgid "Contacting host %Q on port %u"
+msgstr "Contact de la machine %Q sur le port %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:271
+msgid "Connection established, sending request"
+msgstr "Connexion établie, envoie de la requête"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:322
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:51
+msgid "Success"
+msgstr "Succès"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:429
+msgid "Failed to rename the existing file, please rename manually and retry"
+msgstr ""
+"Le renommage du fichier existant a échoué, renommez le manuellement et "
+"retentez"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:447
+msgid "Can't open file \"%Q\" for writing"
+msgstr "Impossible d'ouvrir le fichier \"%Q\" en écriture"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:497
+#, c-format
+msgid "Invalid HTTP response: %s"
+msgstr "Réponse HTTP non valable : %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:503
+#, c-format
+msgid "Received HTTP response: %s"
+msgstr "Réponse HTTP reçue : %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:628
+msgid "Stream exceeding maximum length"
+msgstr "Le flot a atteint sa longueur maximale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:661
+msgid "Header too long: exceeded 4096 bytes"
+msgstr "Entête trop longue : elle dépasse 4096 octets"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:710
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:852
+msgid "Stream exceeded expected length"
+msgstr "Le flot a atteint sa longueur attendue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:798
+msgid "Protocol error: invalid chunk size"
+msgstr "Erreur de protocole : taille de bloc invalide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:818
+msgid "Chunk header too long: exceeded 4096 bytes"
+msgstr "Entête trop longue : elle dépasse 4096 octets"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:987
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1193
+msgid "Operation timed out"
+msgstr "L'opération a dépasse le temps imparti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1003
+msgid "Unexpected SSL error"
+msgstr "Erreur SSL inattendue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1016
+msgid "Failed to enter non blocking mode"
+msgstr "L'entrée en mode non bloquant a échouée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1021
+msgid "Invalid target address"
+msgstr "Adresse de la cible non valable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1056
+msgid "Failed to initialize the SSL context"
+msgstr "Impossible d'initialiser le contexte SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1058
+msgid "Failed to initialize the SSL connection"
+msgstr "Initialisation de la connexion SSL échouée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1075
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:99
+msgid "Remote end has closed the connection"
+msgstr "L'extrémité de la connexion a été interrompue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1087
+msgid "Unrecoverable SSL error during handshake"
+msgstr "Erreur SSL irrécupérable durant la poignée de mains"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1272
+msgid "Operation timed out (while selecting for read)"
+msgstr ""
+"L'opération a dépassé le temps imparti (durant la sélection pour l'écriture)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1382
+msgid "This KVIrc executable has no SSL support"
+msgstr "Cet exécutable KVIrc ne supporte pas le SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1147
+msgid "Back"
+msgstr "Précédent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:268
+msgid "Next"
+msgstr "Suivant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:168
+msgid "%1 bytes"
+msgstr "%1 bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:172
+msgid "%1 KB"
+msgstr "%1 KB"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:176
+msgid "%1 MB"
+msgstr "%1 MB"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:181
+msgid "%1 GB"
+msgstr "%1 GB"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:185
+msgid "%1 TB"
+msgstr "%1 TB"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:620
+msgid "Internal error"
+msgstr "Erreur interne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:54
+msgid "Unknown command"
+msgstr "Commande inconnue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:55
+msgid "Missing closing brace"
+msgstr "Accolade non fermée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:56
+msgid "Unexpected end of command in string"
+msgstr "Fin inattendue de commande dans la chaîne de caractères"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:57
+msgid "Unexpected end of command in dictionary key"
+msgstr "Fin inattendue de la commande dans la clé de dictionnaire"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:58
+msgid "Switch dash without switch letter"
+msgstr "Tiret d'option sans l'option"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:59
+msgid "Unknown function"
+msgstr "Fonction inconnue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:60
+msgid "Unexpected end of command in parenthesis"
+msgstr "Fin inattendue de la commande entre les parenthèses"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:61
+msgid "Unexpected end of command in function parameters"
+msgstr "Fin inattendue de la commande dans les paramètres de la fonction"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:62
+msgid "Missing variable name"
+msgstr "Il manque le nom de la variable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:63
+msgid "Variable or identifier expected"
+msgstr "Besoin d'une variable ou d'un identifiant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:64
+msgid "Left operand is not a number"
+msgstr "L'opérande de gauche n'est pas un nombre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:65
+msgid "Multiple operations not supported for numeric operators"
+msgstr "Opérations multiples non supportées par les opérateurs numériques"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:67
+msgid "Modulo by zero"
+msgstr "Modulo zéro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:68
+msgid "Right operand is not a number"
+msgstr "L'opérande de droite n'est pas un nombre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:69
+msgid "Unterminated expression (missing ')' ?)"
+msgstr "Expression non terminée (manque-t-il une ')' ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:70
+msgid "Unterminated subexpression (Parenthesis mismatch)"
+msgstr "Sous-expression non terminée (problème de parenthèses)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:71
+msgid "Unexpected character"
+msgstr "Caractère inattendu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:73
+msgid "No host to resolve"
+msgstr "Aucune adresse de machine à résoudre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:74
+msgid "(DNS Internal) Unsupported address family"
+msgstr "(DNS Interne) Famille d'adresses non supportée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:75
+msgid "Valid name but the host has no IP address"
+msgstr "Nom valide pour cette machine mais elle n'a pas d'adresse IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:76
+msgid "Unrecoverable nameserver error (crashed ?)"
+msgstr "Erreur irrécupérable du serveur de noms (plantage ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:77
+msgid "Dns temporaneous fault (try again)"
+msgstr "Erreur momentanée du DNS (réessayez)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:78
+msgid "(DNS Internal) Bad flags"
+msgstr "(DNS interne) Mauvais drapeaux"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:79
+msgid "(DNS Internal) Out of memory"
+msgstr "(DNS interne) Mémoire saturée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:80
+msgid "(DNS Internal) Service not supported"
+msgstr "(DNS interne) Service non supporté"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:81
+msgid "Unknown node (host not found)"
+msgstr "Noeud inconnu (adresse de la machine non trouvée)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:82
+msgid "(DNS Internal) Unsupported socket type"
+msgstr "(DNS interne) Type de socket non supporté"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:83
+msgid "Dns query failed"
+msgstr "La requête DNS a échoué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:84
+msgid "This KVIrc executable has no IPV6 support"
+msgstr "Cet exécutable KVIrc n'est pas compatible avec IPV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:85
+msgid "Host not found"
+msgstr "Adresse de machine inconnue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:86
+msgid "(DNS Internal) IPC failure (slave data corrupted)"
+msgstr "(DNS interne) problème d?IPC (données corrompues) "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:88
+msgid "Invalid IP address"
+msgstr "Adresse IP erronée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:90
+msgid "Failed to put the socket in non blocking mode"
+msgstr "Impossible de mettre le socket en mode non bloquant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:91
+msgid "Bad file descriptor"
+msgstr "Mauvais descripteur de fichier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:92
+msgid "Out of address space"
+msgstr "Adresse trop longue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:93
+msgid "Connection refused"
+msgstr "Connexion refusée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:94
+msgid "Kernel networking panic"
+msgstr "Panique des connexions réseau au niveau du noyau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:95
+msgid "Connection timed out"
+msgstr "La connexion a dépasse le temps imparti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:96
+msgid "Network is unreachable"
+msgstr "Réseau inaccessible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:97
+msgid "Broken pipe"
+msgstr "Lien brisé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:98
+msgid "Invalid proxy address"
+msgstr "Adresse de proxy erronée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:100
+msgid "Invalid irc context id"
+msgstr "Numéro de contexte irc non valable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:101
+msgid "Error in loading module"
+msgstr "Erreur lors du chargement du module"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:102
+msgid "No such module command"
+msgstr "Commande de module inconnue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:103
+msgid "No such module function"
+msgstr "Fonction de module inconnue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:104
+msgid "Left operand is not a dictionary reference"
+msgstr "L'opérande de gauche n'est pas une référence de dictionnaire"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:105
+msgid "Right operand is not a dictionary reference"
+msgstr "L'opérande de droite n'est pas une référence de dictionnaire"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:106
+msgid "Missing object class name"
+msgstr "Il manque le nom de classe de l'objet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:107
+msgid "No such object class"
+msgstr "Classe d'objet inconnue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:108
+msgid "No such object"
+msgstr "Objet inconnu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:109
+msgid "No such object function"
+msgstr "Fonction d'objet inconnue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:110
+msgid "Invalid left operand"
+msgstr "Opérande de gauche inconnu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:111
+msgid "Not enough parameters"
+msgstr "Pas assez de paramètres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:112
+msgid "Integer parameter expected"
+msgstr "Paramètre de type entier attendu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:113
+msgid "Invalid parameter"
+msgstr "Paramètre invalide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:114
+msgid "No such file"
+msgstr "Fichier inexistant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:115
+msgid "Open parenthesis expected"
+msgstr "Ouverture de parenthèses attendue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:116
+msgid "Open brace expected"
+msgstr "Ouverture d'accolade attendue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:117
+msgid "Can't kill a builtin class"
+msgstr "Impossible de tuer une classe interne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:118
+msgid "The SOCKSV4 protocol lacks IpV6 support"
+msgstr "Le protocole SOCKSV4 ne supporte pas IpV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:119
+msgid "Unrecognized proxy reply"
+msgstr "Réponse du proxy inconnue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:120
+msgid "Proxy response: auth failed: access denied"
+msgstr "Réponse du proxy : l?identification a échoué : accès interdit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:121
+msgid "Proxy response: No acceptable auth method: request rejected"
+msgstr ""
+"Réponse du proxy : aucune méthode d'identification acceptée : demande rejetée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:122
+msgid "Proxy response: request failed"
+msgstr "Réponse du proxy : la requête a échoué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:123
+msgid "Proxy response: ident failed"
+msgstr "Réponse du proxy : l'identification a échoué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:124
+msgid "Proxy response: ident not matching"
+msgstr "Réponse du proxy : mauvaise correspondance de l'identification"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:125
+msgid "Proxy response: general SOCKS failure"
+msgstr "Réponse du proxy : problème général de SOCKS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:126
+msgid "Proxy response: connection not allowed"
+msgstr "Réponse du proxy : connexion interdite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:127
+msgid "Proxy response: network unreachable"
+msgstr "Réponse du proxy : réseau inaccessible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:128
+msgid "Proxy response: host unreachable"
+msgstr "Réponse du proxy : machine inaccessible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:129
+msgid "Proxy response: connection refused"
+msgstr "Réponse du proxy : connexion refusée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:130
+msgid "Proxy response: TTL expired"
+msgstr "Réponse du proxy : expiration du TTL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:131
+msgid "Proxy response: command not supported"
+msgstr "Réponse du proxy : commande non supportée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:132
+msgid "Proxy response: address type not supported"
+msgstr "Réponse du proxy : type d'adresse non supportée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:133
+msgid "Proxy response: invalid address"
+msgstr "Réponse du proxy : adresse non supportée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:134
+msgid "Invalid port number"
+msgstr "Port invalide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:135
+msgid "Socket not connected"
+msgstr "Socket non connecté"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:136
+msgid "Insufficient resources to complete the operation"
+msgstr "Ressources insuffisantes pour terminer l'opération"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:137
+msgid "Can't setup a listening socket : bind failed"
+msgstr "Impossible de créer un socket récepteur : l'écoute ne fonctionne pas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:138
+msgid "Can't resolve the localhost name"
+msgstr "Impossible de résoudre le nom de machine local"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:139
+msgid "Unsupported image format"
+msgstr "Format d'image non supporté"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:140
+msgid "Can't open file for appending"
+msgstr "Impossible d'ouvrir le fichier pour écrire à la suite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:542
+msgid "Can't open file for writing"
+msgstr "Impossible d'ouvrir le fichier en écriture"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:142
+msgid "File I/O error"
+msgstr "Erreur d'E/S sur le fichier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:143
+msgid "Acknowledge error"
+msgstr "Erreur de reconnaissance"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:982
+msgid "Can't open file for reading"
+msgstr "Impossible d'ouvrir le fichier en lecture"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:145
+msgid "Can't send a zero-size file"
+msgstr "Impossible d'envoyer un fichier vide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:146
+msgid "Missing popup name"
+msgstr "Il manque le nom du popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:147
+msgid "'item', 'popup', 'label' or 'separator' keyword expected"
+msgstr ""
+"un mot clé de type 'item', 'popup', 'étiquette' ou 'séparateur' est attendu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:148
+msgid "Self modification not allowed"
+msgstr "Auto modification interdite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:149
+msgid "UNUSED"
+msgstr "INUTILISÉ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:150
+msgid "Feature not available"
+msgstr "Dispositif non disponible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:151
+msgid "Unexpected characters in array index"
+msgstr "Caractère incongru dans l'indice du tableau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:152
+msgid "Unexpected end in expression"
+msgstr "Fin d'expression inattendue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:153
+msgid "Unexpected end in array index"
+msgstr "Fin d'indice de tableau inattendue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:154
+msgid "Connection thru HTTP proxy failed"
+msgstr "La connexion via le proxy HTTP a échouée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:155
+msgid "Case , match , regexp , default or break keyword expected"
+msgstr "Un des mots suivant est attendu : case, match, regexp ou break"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:156
+msgid "Access denied"
+msgstr "Accès interdit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:157
+msgid "Address already in use"
+msgstr "Adresse déjà utilisée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:158
+msgid "Can't assign the requested address"
+msgstr "Impossible d'assigner l'adresse demandée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:159
+msgid "Connection reset by peer"
+msgstr "Connexion réinitialisée par le correspondant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:160
+msgid "Host unreachable (no route to host)"
+msgstr "Machine inaccessible (aucune route pour y accéder)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:161
+msgid "Variable expected"
+msgstr "Variable requise"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:162
+msgid "Invalid array index: positive integer expected"
+msgstr "Indice de tableau erroné : entier positif requis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:163
+msgid "listen() call failed"
+msgstr "l'appel listen() a échoué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:164
+msgid "This executable has been compiled without SSL support"
+msgstr "Cet exécutable a été compilé sans le support SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:165
+msgid "Secure Socket Layer error"
+msgstr "Erreur de SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:166
+msgid "Slash (/) character expected"
+msgstr "Le caractère slash (/) est requis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:167
+msgid "Unknown string manipulation operation"
+msgstr "Manipulation inconnue de la chaîne de caractères"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:168
+msgid "Operation aborted"
+msgstr "Opération interrompue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:169
+msgid "Unexpected token"
+msgstr "Marque inattendue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:170
+msgid "Scope object already defined (unexpected @)"
+msgstr "Champ d'objet déjà défini (@ inattendu)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:171
+msgid "There is no $this pointer in this scope (unexpected @)"
+msgstr "Il n'y a pas de pointeur $this dans ce champ d'objet (@ inattendu)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:140
+msgid "Operation cancelled"
+msgstr "Opération interrompue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:170
+msgid "File write error"
+msgstr "Erreur d'écriture du fichier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:176
+msgid "File read error"
+msgstr "Erreur de lecture du fichier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:324
+msgid "Packaging file %Q"
+msgstr "Paquetage du fichier %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:779
+msgid "Failed to open a source file for reading"
+msgstr "Impossible d'ouvrir un fichier source en lecture"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:817
+msgid "Compression library initialization error"
+msgstr "Erreur d'initialisation de la bibliothèque de compression"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:394
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:828
+msgid "Compression library error"
+msgstr "Erreur de la bibliothèque de compression"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:465
+msgid "Compression library internal error"
+msgstr "Erreur interne de la bibliothèque de compression"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:485
+msgid "Error while compressing a file stream"
+msgstr "Erreur pendant la compression d'un fichier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:526
+msgid "Creating package..."
+msgstr "Création du paquet..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:527
+msgid "Writing package header"
+msgstr "Écriture de l'entête du paquet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:571
+msgid "Writing informational fields"
+msgstr "Écriture des informations"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:597
+msgid "Writing package data"
+msgstr "Écriture des données du paquet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:659
+msgid "The file specified is not a valid KVIrc package"
+msgstr "Le fichier spécifié n'est pas un paquet KVIrc valide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:668
+msgid ""
+"The package has an invalid version number, it might have been created by a "
+"newer KVIrc"
+msgstr ""
+"Le paquet a un numéro de version invalide, il est possible qu'il ait été "
+"créé par une version de KVIrc plus récente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:714
+msgid "Invalid info field: the package is probably corrupt"
+msgstr "Champ d'info invalide : le paquet est probablement corrompu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:745
+msgid ""
+"The package contains compressed data but this executable does not support "
+"compression"
+msgstr ""
+"Ce paquet contient des données compressées, mais votre version de KVIrc ne "
+"supporte pas la compression"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:771
+msgid "Failed to create the target directory"
+msgstr "Impossible de créer le répertoire"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:784
+msgid "Unpacking file %Q"
+msgstr "Dépaquetage du fichier %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:916
+msgid "Error in compressed file stream"
+msgstr "Erreur dans le fichier compressé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:990
+msgid "Reading package..."
+msgstr "Lecture du paquet..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:991
+msgid "Reading package header"
+msgstr "Lecture de l'entête du paquet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:998
+msgid "Reading package data"
+msgstr "Lecture des données du paquet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:1017
+msgid "Invalid data field: the package is probably corrupt"
+msgstr "Champ de données invalide : le paquet est probablement corrompu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1127
+msgid "Select color"
+msgstr "Sélectionner une couleur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1128
+msgid "&Basic colors"
+msgstr "Couleur de &Base"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1129
+msgid "&Custom colors"
+msgstr "Couleur &Personnalisée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1130
+msgid "&Red"
+msgstr "&Rouge"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1131
+msgid "&Green"
+msgstr "&Vert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1132
+msgid "Bl&ue"
+msgstr "Ble&u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1133
+msgid "&Define Custom Colors >>"
+msgstr "&Définir Couleurs Personnalisées >>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1134
+msgid "&Add to Custom Colors"
+msgstr "&Ajouter aux Couleurs Personnalisées"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1136
+msgid "Select Font"
+msgstr "Sélection une Police"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1137
+msgid "&Font"
+msgstr "&Fontes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1138
+msgid "Font st&yle"
+msgstr "St&yle de Fonte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1139
+msgid "&Size"
+msgstr "&Taille"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1140
+msgid "Sample"
+msgstr "Échantillon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1141
+msgid "Effects"
+msgstr "Effets"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1142
+msgid "Stri&keout"
+msgstr "&Rayer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1143
+msgid "&Underline"
+msgstr "&Souligner"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1144
+msgid "Scr&ipt"
+msgstr "Scr&ipt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1146
+msgid "Parent Directory"
+msgstr "Répertoire Parent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1148
+msgid "Forward"
+msgstr "Suivant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1149
+msgid "Reload"
+msgstr "Recharger"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1150
+msgid "New Directory"
+msgstr "Nouveau Répertoire"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1151
+msgid "Bookmarks"
+msgstr "Signets"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1152
+msgid "Add Bookmark"
+msgstr "Ajouter un Signet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1153
+msgid "&Edit Bookmarks"
+msgstr "É&diter les Signets"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1154
+msgid "New Bookmark Folder..."
+msgstr "Nouveau Dossier de Signets..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1156
+msgid "Sorting"
+msgstr "Tri"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1157
+msgid "By Name"
+msgstr "Par Nom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1158
+msgid "By Date"
+msgstr "Par Date"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1159
+msgid "By Size"
+msgstr "Par Taille"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1160
+msgid "Reverse"
+msgstr "Inverser"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1161
+msgid "Directories First"
+msgstr "Répertoires en Premier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1162
+msgid "Case Insensitive"
+msgstr "Sensible à la casse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1163
+msgid "Short View"
+msgstr "Scinder la Vue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1164
+msgid "Detailed View"
+msgstr "Vue Détaillée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1165
+msgid "Show Hidden Files"
+msgstr "Montrer les Fichiers Cachés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1166
+msgid "Show Quick Access Navigation Panel"
+msgstr "Montrer le Panneau d'Accès Rapide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1167
+msgid "Show Preview"
+msgstr "Montrer un Aperçu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1168
+msgid "Separate Directories"
+msgstr "Séparer les Répertoires"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1169
+msgid "Often used directories"
+msgstr "Répertoires Souvent Utilisés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1170
+msgid "Desktop"
+msgstr "Bureau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1171
+msgid "Home Directory"
+msgstr "Répertoire Personnel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1172
+msgid "Floppy"
+msgstr "Disquette"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1173
+msgid "Temporary Files"
+msgstr "Fichiers Temporaires"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1174
+msgid "Network"
+msgstr "Réseau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1175
+msgid "New Directory..."
+msgstr "Nouveau Répertoire..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1176
+msgid "Delete"
+msgstr "Supprimer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1177
+msgid "Thumbnail Previews"
+msgstr "Aperçu par Vignettes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1178
+msgid "Large Icons"
+msgstr "Icônes Larges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1179
+msgid "Small Icons"
+msgstr "Petites icônes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1180
+msgid "Properties..."
+msgstr "Propriétés..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1181
+msgid "&Automatic Preview"
+msgstr "Aperçu A&utomatique"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1182
+msgid "&Preview"
+msgstr "A&perçu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1183
+msgid "&Location:"
+msgstr "&Emplacement :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1184
+msgid "&Filter:"
+msgstr "&Filtre :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1185
+msgid "All Files"
+msgstr "Tous les Fichiers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:104
+msgid "- d -- h -- m -- s"
+msgstr "- j -- h -- m -- s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:111
+#, c-format
+msgid "%u h %u m %u s"
+msgstr "%u h %u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:113
+#, c-format
+msgid "%u h %u%u m %u%u s"
+msgstr "%u h %u%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:118
+#, c-format
+msgid "%u m %u s"
+msgstr "%u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:120
+#, c-format
+msgid "%u m %u%u s"
+msgstr "%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:122
+#, c-format
+msgid "%u s"
+msgstr "%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:127
+#, c-format
+msgid "%u d %u h %u m %u s"
+msgstr "%u j %u h %u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:129
+#, c-format
+msgid "%u d %u%u h %u%u m %u%u s"
+msgstr "%u j %u%u h %u%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+msgid "Usage"
+msgstr "Utilisation"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+msgid "message"
+msgstr "méssage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:99
+msgid "-m: send a message instead of a notice"
+msgstr "-m : envoyez un message au lieu d'une notice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:100
+msgid "-w: send notice to all channel owners"
+msgstr "-w : envoie une notice à tous les propriétaires du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:101
+msgid "-a: send notice to all channel admins"
+msgstr "-a : envoie une notice à tous les administrateurs du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:102
+msgid "-o: send notice to all channel ops"
+msgstr "-o : envoie une notice à tous les opérateurs du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:103
+msgid "-h: send notice to all channel halfops"
+msgstr "-h : envoie une notice à tous les demi-opérateurs du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:104
+msgid "-v: send notice to all channel voices"
+msgstr "-v : envoie une notice à tous les voices du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:105
+msgid "-q: quiet mode"
+msgstr "-q : mode silencieux"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:138
+msgid "Sending wallop to"
+msgstr "Envoi du wallop à"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:314
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:410
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:493
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:535
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:593
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:653
+msgid "Usage:"
+msgstr "Utilisation :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:223
+msgid "reason"
+msgstr "raison"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:272
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:416
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:440
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:599
+msgid "This is not a channel window"
+msgstr "Ce n'est pas une fenêtre de salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:581
+msgid "Unsupported type: $0"
+msgstr "Protocole non supporté : $0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:604
+msgid "Channel Owner"
+msgstr "Propriétaire du Salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:606
+msgid "Channel Administrator"
+msgstr "Administrateur du Salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:608
+msgid "Channel Operator"
+msgstr "Opérateur du Salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:610
+msgid "Half Operator"
+msgstr "Demi-Opérateur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:612
+msgid "Voice"
+msgstr "Vocal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:614
+msgid "User Operator"
+msgstr "Utilisateur Opérateur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:616
+msgid "Normal User"
+msgstr "Utilisateur Normal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:641
+msgid "You must use DNS in an IRC context"
+msgstr "Vous devez utiliser DNS dans un contexte IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:647
+msgid "You must be connected to a server"
+msgstr "Vous devez être connecté à un serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:664
+msgid "No such user: $0"
+msgstr "Utilisateur introuvable : $0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:33
+msgid "The default script has been successfully installed."
+msgstr "Le script par défaut a été installé avec succès."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:34
+msgid "To connect to a server, type /server <server name>"
+msgstr "Pour vous connecter à un serveur, tapez /server <nom de serveur>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:36
+msgid "Happy ircing :)"
+msgstr "Bon t'chat :)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:15
+msgid "Options"
+msgstr "Options"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:40
+msgid "Window operations"
+msgstr "Fenêtres des Opérations"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMENAME@"
+msgstr "@NOMDUTHEME@"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMEDESCRIPTION@"
+msgstr "@DESCRIPTIONDUTHEME@"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:18
+msgid "Stop Highlighting (Local)"
+msgstr "Désactiver le Surlignage (Local)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:23
+msgid "Start Highlighting (Local)"
+msgstr "Activer le Surlignage (Local)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:28
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:61
+msgid "Always Highlight"
+msgstr "Tourjours Surligner"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:30
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:55
+msgid "Highlight as"
+msgstr "Surligné en tant que"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:66
+msgid "Stop Highlighting"
+msgstr "Désactiver le Surlignage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:82
+msgid "is being ignored"
+msgstr "est sous ignore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:87
+msgid "is not being ignored"
+msgstr "n'est pas sous ignore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:93
+msgid "Enable Ignore"
+msgstr "Activer l'ignore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:98
+msgid "Ignore as..."
+msgstr "Ignorer en tant que..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:240
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:282
+msgid "Ignore as"
+msgstr "Ignorer en tant que"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:290
+msgid "Unignore"
+msgstr "Ne plus ignorer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:308
+msgid "is registered as"
+msgstr "est enregistré en tant que"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:311
+msgid "is in the notify list"
+msgstr "est dans dans la liste de notifications"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:314
+msgid "has a default avatar"
+msgstr "a un avatar par défaut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:317
+msgid "is not registered"
+msgstr "n'est pas enregistré"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:323
+msgid "Register"
+msgstr "Enregistrer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:328
+msgid "Quick Registration"
+msgstr "Enregistrement Rapide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:330
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:355
+msgid "Register as"
+msgstr "Enregistrer en tant que"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:361
+msgid "Edit Registration"
+msgstr "Éditer l'Enregistrement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:366
+msgid "Unregister"
+msgstr "Supprimer Enregistrement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:373
+msgid "Add to Notify"
+msgstr "Ajouter à la Liste de Notifications"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:378
+msgid "Remove from Notify"
+msgstr "Supprimer de la liste de notification"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:385
+msgid "Choose"
+msgstr "Choisir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:387
+msgid "Choose Avatar Image File"
+msgstr "Choisir une Image pour l'Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:396
+msgid "Set as Default"
+msgstr "Choisir par Défaut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:401
+msgid "Clear Default"
+msgstr "Effacer celui par Défaut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:412
+msgid "Copy To Clipboard"
+msgstr "Copier dans le Presse-papiers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:433
+msgid "Ban"
+msgstr "Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1037
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1084
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1224
+msgid "Multiple Users"
+msgstr "Utilisateurs Multiples"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:577
+msgid "&Ban"
+msgstr "&Bannir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1089
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1229
+msgid "idle time"
+msgstr "avec inactivité"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:758
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1236
+msgid "&Information"
+msgstr "&Information"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1115
+msgid "DNS for"
+msgstr "DNS de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:499
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1120
+msgid "Mask for"
+msgstr "Masque pour"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:505
+msgid "&Control"
+msgstr "&Controler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:509
+msgid "O&wner"
+msgstr "&Proprio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:514
+msgid "&Deowner"
+msgstr "&Déproprio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:519
+msgid "&Administrator"
+msgstr "&Admin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:524
+msgid "&Deadministrator"
+msgstr "&Dé-admin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:529
+msgid "&Op"
+msgstr "&Oper"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:534
+msgid "&Deop"
+msgstr "&Déopér"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:539
+msgid "&Halfop"
+msgstr "&Mi-oper"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:544
+msgid "&Dehalfop"
+msgstr "&Mi-déoper"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:549
+msgid "&Voice"
+msgstr "&Voicer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:554
+msgid "D&evoice"
+msgstr "Dévoi&cer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:561
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "&Kick"
+msgstr "&Kicker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+msgid "K&ick"
+msgstr "K&icker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "With..."
+msgstr "Avec..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Kick Reason"
+msgstr "Raison de Kick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Enter a kick reason"
+msgstr "Entrez une raison de kick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "Kick/Ban"
+msgstr "Kick/Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Kick/Ban Reason"
+msgstr "Raison de kick/ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Enter a kick/ban reason"
+msgstr "Entrez une raison de kick/ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "&Kick/Ban"
+msgstr "&Kick/Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:604
+msgid "Configure ban mask..."
+msgstr "Configurer le masque de ban..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:612
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1263
+msgid "&Query"
+msgstr "&Privé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:625
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1136
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1276
+msgid "&Registration"
+msgstr "En&registrement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1278
+msgid "&Highlight"
+msgstr "S&urligner"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:629
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1280
+msgid "Ig&nore"
+msgstr "Ig&norer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:726
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1050
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1138
+msgid "Notify Avatar"
+msgstr "Notifier l'Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:705
+msgid "&Part"
+msgstr "&Partir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:664
+msgid "Copy Channel Address"
+msgstr "Copier l'adresse du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:749
+msgid "Channels"
+msgstr "Salons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:693
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:753
+msgid "&Join Channels..."
+msgstr "&Joindre des Salons..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:700
+msgid "&Hop"
+msgstr "&Hop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:733
+msgid "Copy Channel URL to Clipboard"
+msgstr "Copier l'URL du salon dans le Presse-papiers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:782
+msgid "l (Connections)"
+msgstr "l (Connexions)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:787
+msgid "m (Command Usage)"
+msgstr "m (Utilisation de la commande)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:792
+msgid "o (Operators)"
+msgstr "o (Opérateurs)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:797
+msgid "t (Connection stats ?)"
+msgstr "t (Statistiques de Connexion ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:802
+msgid "u (Uptime)"
+msgstr "u (Durée de charge)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:807
+msgid "y (y-Lines)"
+msgstr "y (y-Lines)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:812
+msgid "z (Debug Stats?)"
+msgstr "z (Debogage des Stats?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:909
+msgid "Chat with"
+msgstr "DCC Chat avec"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:914
+msgid "Reverse Chat with"
+msgstr "DCC Chat inversé avec"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:919
+msgid "Secure Chat with"
+msgstr "DCC Chat Sécurisé avec"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:926
+msgid "Send to"
+msgstr "Envoyé à"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:931
+msgid "Secure send to"
+msgstr "Envoi sécurisé à"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:936
+msgid "Reverse Send to"
+msgstr "Envoi Inversé à"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:941
+msgid "Secure Reverse Send to"
+msgstr "Envoi Sécurisé et Inversé à"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:948
+msgid "TDCC Send to"
+msgstr "TDCC Send à"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:953
+msgid "TDCC Reverse Send to"
+msgstr "TDCC Send Inversé à"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:960
+msgid "Voice Chat"
+msgstr "DCC Chat Vocal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1134
+msgid "&Ignore"
+msgstr "&Ignorer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1165
+msgid "Logging to"
+msgstr "Journalisation vers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1167
+msgid "Flush Log File"
+msgstr "Vider Tampon vers Journal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1174
+msgid "Stop Logging"
+msgstr "Stopper la Journalisation"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1179
+msgid "Not Logging"
+msgstr "Pas en train de Journaliser"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+msgid "Log To Default File"
+msgstr "Journal dans Fichier par Défaut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+msgid "Include Existing Buffer"
+msgstr "Inclure le tampon de données existant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+msgid "Log To..."
+msgstr "Journalisation Vers..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1201
+msgid "Choose Log Filename"
+msgstr "Choisissez un Nom de Fichier de Journalisation"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1282
+msgid "Notify avatar"
+msgstr "Notifier l'avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:50
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$copyfiles must be a "
+"source directory"
+msgstr ""
+"[Installer] Le premier argument de \\%installer->\\$copyfiles doit être un "
+"répertoire source"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:56
+#, c-format
+msgid ""
+"[Installer] The second argument to \\%installer->\\$copyfiles must be a file "
+"name or file regexp"
+msgstr ""
+"[Installer] Le second argument de \\%installer->\\$copyfiles doit être un "
+"nom de fichier ou une expression régulière"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:62
+#, c-format
+msgid ""
+"[Installer] The third argument to \\%installer->\\$copyfiles must be a "
+"destination directory"
+msgstr ""
+"[Installer] Le troisième argument de \\%installer->\\$copyfiles doit être un "
+"répertoire de destination"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:94
+msgid "[Installer] Failed to create directory"
+msgstr "[Installer] Impossible de créer le répertoire"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:104
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$includefiles must be a "
+"source directory"
+msgstr ""
+"[Installer] Le premier argument de \\%installer->\\$includefiles doit être "
+"un répertoire source"
+
+#~ msgid "Lag is"
+#~ msgstr "Le retard est de"
+
+#~ msgid "milliseconds"
+#~ msgstr "millisecondes"
+
+#~ msgid "%c\r!s\r%s\r%c: %Q"
+#~ msgstr "%c\r!s\r%s\r%c : %Q"
+
+#~ msgid "Restore from backup archive"
+#~ msgstr "Restaurer depuis une archive de sauvegarde"
+
+#~ msgid "Basic Properties"
+#~ msgstr "Propriétés de Base"
+
+#~ msgid "Other:"
+#~ msgstr "Autre :"
+
+#~ msgid "Now you should specify an IRC server, to be connected to it"
+#~ msgstr "A présent vous devez spécifier un serveur irc pour vous connecter"
+
+#~ msgid "Choose a server to connect"
+#~ msgstr "Choisissez un serveur pour vous connecter"
+
+#~ msgid "Choose from built-in server list"
+#~ msgstr "Choisir dans la liste de serveurs"
+
+#~ msgid "Specify server manually"
+#~ msgstr "Choisir manuellement le serveur"
+
+#~ msgid "Server:"
+#~ msgstr "Serveur :"
+
+#~ msgid "Port:"
+#~ msgstr "Port :"
+
+#~ msgid "Open irc:// or irc6:// URL"
+#~ msgstr "Ouvrir une URL irc:// ou irc6://"
+
+#~ msgid "URL:"
+#~ msgstr "URL :"
+
+#~ msgid "Use server config"
+#~ msgstr "Utiliser la configuration serveur"
+
+#~ msgid "Config file:"
+#~ msgstr "Fichier de configuration :"
+
+#~ msgid ""
+#~ "Setup found existing mIRC installation. It will try to import some of "
+#~ "mIRC settings and serverlist. If you don't want to do it, unselect import "
+#~ "in setup pages"
+#~ msgstr ""
+#~ "L'installation a détecté une installation existante de mIRC. Je vais "
+#~ "tenter d'importer certains réglages de mIRC ainsi que la liste de "
+#~ "serveurs. Si vous ne souhaitez pas le faire, désélectionnez l'import"
diff --git a/po/kvirc/kvirc_hr.po b/po/kvirc/kvirc_hr.po
new file mode 100644
index 00000000..fb7cfafd
--- /dev/null
+++ b/po/kvirc/kvirc_hr.po
@@ -0,0 +1,11895 @@
+# translation of kvirc_hr.po to Croatian
+# Copyright (C) 2007
+# This file is distributed under the same license as the KVIrc package.
+#
+# SpeedyGhost <[email protected]>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: kvirc_hr\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2008-02-14 02:10+0100\n"
+"Last-Translator: SpeedyGhost <[email protected]>\n"
+"Language-Team: Croatian <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"X-Poedit-Language: Croatian\n"
+"X-Poedit-Country: CROATIA\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:696
+msgid "&Cascade Windows"
+msgstr "&Stepenasti Prozori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:697
+msgid "Cascade &Maximized"
+msgstr "Stepenasto &Maksimizirano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:700
+msgid "&Tile Windows"
+msgstr "&Poploči Prozore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:703
+msgid "&Auto Tile"
+msgstr "&Automatski Poploči"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:708
+msgid "Anodine's Full Grid"
+msgstr "Andoineova Puna Mreža"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:710
+msgid "Pragma's Horizontal 4-Grid"
+msgstr "Pragmina Vodoravna 4-Mreža"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:712
+msgid "Pragma's Vertical 4-Grid"
+msgstr "Pragmina Vertikalna 4-Mreža"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:714
+msgid "Pragma's Horizontal 6-Grid"
+msgstr "Pragmina Vodoravna 6-Mreža"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:716
+msgid "Pragma's Vertical 6-Grid"
+msgstr "Pragmina Okomita 6-Mreža"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:718
+msgid "Pragma's Horizontal 9-Grid"
+msgstr "Pragmina Vodoravna 9-Mreža"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:720
+msgid "Pragma's Vertical 9-Grid"
+msgstr "Pragmina Okomita 9-Mreža"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:726
+msgid "Tile Met&hod"
+msgstr "Popločena Me&toda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:729
+msgid "Expand &Vertically"
+msgstr "Proširi &Okomito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:730
+msgid "Expand &Horizontally"
+msgstr "Proširi &Vodoravno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:733
+msgid "Mi&nimize All"
+msgstr "Sma&nji Sve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_actiondrawer.cpp:64
+msgid "Script"
+msgstr "Skripta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:581
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:634
+msgid "Unknown"
+msgstr "Nepoznato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:128
+msgid "No topic message has been received from the server yet"
+msgstr "Tema još nije primljena od servera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:495
+msgid "Channel topic:"
+msgstr "Tema sobe:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:513
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:201
+msgid "Set by"
+msgstr "Postavljeno od"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:519
+msgid "Set on"
+msgstr "Postavljeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:525
+msgid "Double-click to edit..."
+msgstr "Dvostruki klik za uređivanje..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:530
+msgid "No topic is set"
+msgstr "Tema nije postavljena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:533
+msgid "Double-click to set..."
+msgstr "Dvostruki klik za postavljanje..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:587
+msgid "History"
+msgstr "Povijest"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:596
+msgid "Commit Changes"
+msgstr "Izvrši Promjene"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:602
+msgid "Discard Changes"
+msgstr "Poništi Promjene"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:627
+msgid "Copy to clipboard"
+msgstr "Kopiraj u Međuspremnik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:988
+msgid "There are active connections, are you sure you wish to "
+msgstr "Postoje aktivne konekcije, jeste li sigurni da želite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:989
+msgid "quit KVIrc?"
+msgstr "izaći iz KVIrc-a?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:587
+msgid "Confirmation - KVIrc"
+msgstr "Potvrda - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:557
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:590
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&Yes"
+msgstr "&Da"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:556
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:589
+msgid "&Always"
+msgstr "&Uvijek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:591
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&No"
+msgstr "&Ne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1090
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1106
+msgid "Show %1"
+msgstr "Prikaži %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1134
+msgid "Customize..."
+msgstr "Prilagodi..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:149
+#, c-format
+msgid "The file %s already exists.<br>Do you wish to overwrite it?"
+msgstr "Datoteka %s već postoji.<br>Želite li ju prepisati?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:150
+msgid "File Exists - KVIrc"
+msgstr "Datoteka Postoji - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:132
+msgid "Channel mode"
+msgstr "Mod Sobe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:162
+msgid "Split View"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:207
+msgid "User List"
+msgstr "Lista Korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:167
+msgid "Ban Editor"
+msgstr "Ban Uređivač"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:172
+msgid "Ban Exception Editor"
+msgstr "Ban Iznimke Uređivač"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:179
+msgid "Invite Exception Editor"
+msgstr "Invite Iznimke Uređivač"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:184
+msgid "Mode Editor"
+msgstr "Uređivač Modova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "said something recently"
+msgstr "rek[ao/la] nešto maloprije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "is talking"
+msgstr "priča"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:684
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:699
+msgid "and"
+msgstr "i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "were talking recently"
+msgstr "su pričali maloprije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "are talking"
+msgstr "pričaju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:707
+msgid "and other %1 users"
+msgstr "i drugih %1 korisni[ka/ca]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:738
+msgid "Dead channel"
+msgstr "Mrtva soba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:753
+msgid "operator"
+msgstr "operator[ica]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:754
+msgid "operators"
+msgstr "operatori[ce]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active user"
+msgstr "aktivni korisni[k/ca]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active users"
+msgstr "aktivni korisni[ci/ce]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot user"
+msgstr "vrući korisni[k/ca]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot users"
+msgstr "vrući korisnic[i/e]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owner"
+msgstr "vlasni[k/ca] sobe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owners"
+msgstr "vlasni[ci/ce] sobe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrator"
+msgstr "administrator sobe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrators"
+msgstr "administratori sobe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operator"
+msgstr "polu-operator[ica]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operators"
+msgstr "polu-operator[i/ice]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operator"
+msgstr "korisnički operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operators"
+msgstr "korisnički operatori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "user total"
+msgstr "korisni[k/ca] ukupno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "users total"
+msgstr "korisni[ka/ce] ukupno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:931
+msgid "No activity"
+msgstr "Nema aktivnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:932
+msgid "Minimal activity"
+msgstr "Minimalna aktivnost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:933
+msgid "Very low activity"
+msgstr "Vrlo niska aktivnost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Might be low activity"
+msgstr "Moguća niska aktivnost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Low activity"
+msgstr "Niska aktivnost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Might be medium activity"
+msgstr "Moguća srednja aktivnost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Medium activity"
+msgstr "Srednja aktivnost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "Might be high activity"
+msgstr "Moguća visoka aktivnost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "High activity"
+msgstr "Visoka aktivnost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Might be very high activity"
+msgstr "Moguća vrlo visoka aktivnost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Very high activity"
+msgstr "Vrlo visoka aktivnost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Might be flooded with messages"
+msgstr "Moguća zatrpanost porukama"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Flooded with messages"
+msgstr "Zatrpanost porukama"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:946
+msgid "human"
+msgstr "ljudi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:966
+msgid "[Dead channel]"
+msgstr "[Mrtav kanal]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1020
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1122
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:459
+msgid " on "
+msgstr "u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1086
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %Q, no "
+"data sent to the server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1403
+msgid "Sent part request, waiting for reply..."
+msgstr "Poslan zahtijev za izlaz, čekam odgovor..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:610
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:647
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:293
+msgid "(Unknown)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1484
+msgid "<b>Channel mode:</b>"
+msgstr "<b>Modovi sobe:</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1498
+#, c-format
+msgid "<br><b>Key:</b> %s"
+msgstr "<br><b>Ključ:</b> %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1505
+#, c-format
+msgid "<br><b>Limit:</b> %s"
+msgstr "<br><b>Limit:</b> %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1590
+#, c-format
+msgid "Channel synchronized in %d.%d seconds"
+msgstr "Soba sinkronizirana u %d.%d sekundi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:139
+msgid "Choose an Image File - KVIrc"
+msgstr "Odaberite Sliku - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:284
+#, c-format
+msgid "Unloadable: %s"
+msgstr "Neučitljivo: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:260
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:90
+msgid "&Browse..."
+msgstr "&Pregledaj..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:364
+msgid "Choose a File - KVIrc"
+msgstr "Odaberite Datoteku - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:382
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:593
+msgid "Choose a Directory - KVIrc"
+msgstr "Odaberite Direktorij - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:764
+msgid "A&dd"
+msgstr "&Dodaj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:407
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:766
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:230
+msgid "Re&move"
+msgstr "Uklo&ni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:602
+msgid "Sample Text"
+msgstr "Primjerak Teksta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:635
+msgid "Foreground"
+msgstr "Slova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:639
+msgid "Transparent"
+msgstr "Prozirno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:652
+msgid "Background"
+msgstr "Pozadina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:715
+msgid "Play"
+msgstr "Play"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:748
+msgid "Channel name"
+msgstr "Ime sobe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:749
+msgid "Channel password"
+msgstr "Lozinka sobe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:177
+msgid "Toolbars"
+msgstr "Alatne Trake"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:84
+msgid "Orientation"
+msgstr "Orijentacija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:86
+msgid "Top"
+msgstr "Vrh"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:87
+msgid "Left"
+msgstr "Lijevo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:88
+msgid "Right"
+msgstr "Desno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:89
+msgid "Bottom"
+msgstr "Dno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:91
+msgid "Detached"
+msgstr "Odvojen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:92
+msgid "Flat"
+msgstr "Flat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:94
+msgid "Icon Size"
+msgstr "Veličina Ikone"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:96
+msgid "Small (22x22)"
+msgstr "Mala (22x22)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:97
+msgid "Large (32x32)"
+msgstr "Velika (32x32)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1333
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:463
+msgid "&Apply"
+msgstr "Prihv&ati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:830
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:113
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:251
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:319
+msgid "Close"
+msgstr "Zatvori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:102
+msgid "Channel Modes"
+msgstr "Modovi Sobe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_debugwindow.cpp:47
+msgid "Debug Messages"
+msgstr "Debug Poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:72
+msgid "CTCP Page - KVIrc"
+msgstr "CTCP Page - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:109
+msgid "You have been paged by"
+msgstr "You have been paged by"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:75
+msgid "Mask editor - KVirc"
+msgstr "Uređivanje maske - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:79
+msgid "New mask must match an *!*@* expression"
+msgstr "Nova maska mora odgovarati *!*@* izrazu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Ok"
+msgstr "Uredu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:488
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:442
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:401
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Cancel"
+msgstr "Odustani"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:157
+msgid "Active Bans"
+msgstr "Aktivni Banovi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:161
+msgid "Active Invite Exceptions"
+msgstr "Aktivne Invite Iznimke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:165
+msgid "Active Ban Exceptions"
+msgstr "Aktivne Ban Iznimke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:184
+msgid "Filter:"
+msgstr "Filter:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:188
+msgid "Use doubleclick to edit item"
+msgstr "Koristite dvostruki klik za uređivanje podatka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:200
+msgid "Mask"
+msgstr "Maska"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:202
+msgid "Set at"
+msgstr "Pustavljeno u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "Add"
+msgstr "Dodaj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:92
+msgid "Cryptography/text transformation"
+msgstr "Kriptografija/transformacija teksta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:99
+msgid "Use the crypt engine"
+msgstr "Koristi pogon za kriptiranje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:120
+msgid "Enable encryption"
+msgstr "Omogući enkripciju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:123
+msgid "Encrypt key:"
+msgstr "Ključ za enkripciju:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:141
+msgid "Hex"
+msgstr "Hex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:132
+msgid "Enable decryption"
+msgstr "Omogući dekripciju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:135
+msgid "Decrypt key:"
+msgstr "Ključ za dekripciju:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_htmldialog.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:175
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:932
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1124
+msgid "OK"
+msgstr "Uredu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:211
+msgid ""
+"If you dont want to encrypt a particular text line then just start it with "
+"the CTRL+P prefix"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:263
+msgid "Sorry, no crypt engines available"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:283
+msgid "Crypt: Can't create an engine instance: crypting disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:294
+#, c-format
+msgid "Crypt: Can't initialize the engine :%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:302
+msgid ""
+"Crypt: You have to enable encryption and/or decryption for the engine to work"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:385
+msgid "Search tools"
+msgstr "Alati za pretraživanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:539
+#, c-format
+msgid "### Log session terminated at %s ###"
+msgstr "### Log sesija zaustavljena %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:713
+#, c-format
+msgid "### Log session started at %s ###"
+msgstr "### Log sesija pokrenuta %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:717
+msgid "### Existing data buffer:"
+msgstr "### Postojeći podatkovni međuspremnik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:721
+msgid "### End of existing data buffer."
+msgstr "### Kraj postojećeg podatkovnog međuspremnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3894
+msgid "Hide Find Window"
+msgstr "Sakrij Prozor za Traženje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3896
+msgid "Show Find Window"
+msgstr "Prikaži Prozor za Traženje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3898
+msgid "Zoom In"
+msgstr "Uvećaj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3899
+msgid "Zoom Out"
+msgstr "Umanji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3900
+msgid "Choose Temporary Font..."
+msgstr "Odaberite Privremeni Font..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3901
+msgid "Choose Temporary Background..."
+msgstr "Odaberite Privremenu Pozadinu..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3902
+msgid "Reset Temporary Background"
+msgstr "Osvježi Privremenu Pozadinu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3905
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:738
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:841
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1057
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1289
+msgid "Clear Buffer"
+msgstr "Isprazni Međuspremnik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3939
+msgid "Choose the background image..."
+msgstr "Odaberite pozadinsku sliku..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+msgid "Invalid image"
+msgstr "Neispravna slika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+msgid "Failed to load the selected image"
+msgstr "Greška pri učitavanju odabrane slike"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4083
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4140
+#, c-format
+msgid "Pos %d"
+msgstr "Pos %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4156
+msgid "Not found"
+msgstr "Nije pronađeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4563
+msgid "Looking up host %Q..."
+msgstr "Pregledavanje hosta %Q..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4926
+msgid "Double-click to open this link"
+msgstr "Dvostruki klik za otvaranje ovog linka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4946
+msgid "Unable to look it up hostname: Hostname appears to be masked"
+msgstr "Nemoguć pregled imena hosta: Ime hosta pojavljuje se kao skriveno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4947
+msgid "Unable to look it up hostname: Unknown host"
+msgstr "Nemoguć pregled imena hosta: Nepoznati host"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4949
+msgid ""
+"Double-click to look up this hostname<br>Right-click to view other options"
+msgstr ""
+"Dvostruki klik za pregled imena hosta<br>Desni klik za pregled drugih opcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4972
+msgid "Server appears to be a network hub<br>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4973
+msgid "Unknown server<br>"
+msgstr "Nepoznati server<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4976
+msgid "Double-click to read the MOTD<br>Right-click to view other options"
+msgstr "Dvostruki klik za čitanje MOTD<br>Desni klik za gledanje drugih opcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4989
+msgid "Double-click to set<br>"
+msgstr "Dvostruki klik za postavljanje<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5011
+msgid "You're not an operator: You may not change channel modes"
+msgstr "Niste operator: Ne možete mijenjati modove kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5028
+msgid "Nothing known about %Q"
+msgstr "Nema podataka o %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5029
+msgid "Nothing known about %Q (no connection)"
+msgstr "Nema podataka o %Q (nema konekcije)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5054
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>): "
+"<br><nowrap>+%Q (%u users)<hr>%Q</nowrap>"
+msgstr ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>): "
+"<br><nowrap>+%Q (%u korisni[ka/ca])<hr>%Q</nowrap>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5060
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)<hr>Double-"
+"click to join %Q<br>Right click to view other options"
+msgstr ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)"
+"<hr>Dvostrukiklik za ulaz %Q<br>Desni klik za pogledati druge opcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5080
+msgid "<b>Double-click:</b><br>%Q"
+msgstr "<b>Dvostruki klik:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5085
+msgid "<b>Middle-click:</b><br>%Q"
+msgstr "<b>Srednji klik:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5090
+msgid "<b>Right-click:</b><br>%Q"
+msgstr "<b>Desni klik:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1284
+msgid "Joined on <b>%1</b>"
+msgstr "Uš[ao/la] <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1296
+msgid "Quiet for <b>%1h %2m %3s</b>"
+msgstr "Šuti <b>%1h %2m %3s</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1097
+msgid "No connection"
+msgstr "Nema konekcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:304
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:3
+msgid "IRC Context"
+msgstr "IRC Kontekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:319
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:365
+#, c-format
+msgid "Lag: %d.%d%d"
+msgstr "Lag: %d.%d%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:393
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:379
+msgid "Lag: ?.??"
+msgstr "Lag: ?.??"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:326
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:637
+msgid "No IRC context"
+msgstr "Nema IRC konteksta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:633
+msgid "Not connected"
+msgstr "Odspojen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:377
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1117
+msgid "away"
+msgstr "odsutan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:397
+msgid "In progress..."
+msgstr "U tijeku..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:458
+msgid "Crypting"
+msgstr "Kriptiranje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:466
+msgid "Private Text Encoding"
+msgstr "Kodiranje Privatnog Teksta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:566
+msgid "Ops...I've accidentally lost the crypting engine..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:582
+msgid "List of window types available in this release of KVIrc:"
+msgstr "Popis vrsta prozora dostupnih u ovoj verziji KVIrc-a:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:763
+msgid "Use Default Encoding"
+msgstr "Koristi uobičajeno kodiranje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:775
+msgid "Standard"
+msgstr "Uobičajeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:776
+msgid "Smart (Send Local)"
+msgstr "Pametno (Send Local)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:777
+msgid "Smart (Send UTF-8)"
+msgstr "Pametno (Pošalji UTF-8)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:810
+msgid "&Undock"
+msgstr "&Odvoji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:813
+msgid "&Dock"
+msgstr "&Spoji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:818
+msgid "Mi&nimize"
+msgstr "Mi&nimiziraj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:821
+msgid "Ma&ximize"
+msgstr "Ma&ksimiziraj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:824
+msgid "&Restore"
+msgstr "&Vrati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:837
+msgid "Text &Encoding"
+msgstr "&Kodiranje Teksta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:842
+msgid "Sa&ve Window Properties"
+msgstr "Pohr&ani Postavke Prozora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:86
+msgid "Taskbar"
+msgstr "Statusna Traka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:91
+#, fuzzy
+msgid "taskbar"
+msgstr "Statusna Traka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1162
+msgid "Sort"
+msgstr "Sortiranje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1163
+msgid "Reverse Sort"
+msgstr "Inverzno Sortiranje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1223
+msgid "Window List"
+msgstr "Popis Prozora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:203
+msgid "Apply to all IRC Contexts"
+msgstr "Prihvaćanje za sve IRC Kontekste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:227
+msgid "Away Indicator"
+msgstr "Indikator Odsutnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:255
+msgid "Away since"
+msgstr "Odsutan od"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:259
+msgid "Double click to leave away mode"
+msgstr "Dvostruki klik za napuštanje Away-a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:261
+msgid "Not away"
+msgstr "Prisut[an/na]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:263
+msgid "Double click to enter away mode"
+msgstr "Dvostruki klik za ulaz u Away"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:330
+#, c-format
+msgid "Last checked %d mins %d secs ago"
+msgstr "Zadnja provjera prije %d minuta %d sekundi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:332
+msgid "Lag measure not available yet"
+msgstr "Lag mjerene je još nedostupno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:336
+msgid "Lag meter engine disabled"
+msgstr "Iskljucen pokretač Lag mjerenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:338
+msgid "Double click to enable it"
+msgstr "Dvostruki klik za uključivanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:391
+msgid "Lag Indicator"
+msgstr "Lag Indikator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:461
+msgid "Simple Clock"
+msgstr "Jednostavan Sat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:512
+msgid "Show total connection time"
+msgstr "Prikaži ukupno vrijeme spajanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:536
+msgid "Connection Timer"
+msgstr "Brojač Vremena Spajanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:560
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:87
+msgid "Separator"
+msgstr "Razdjelnik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:820
+msgid "Clipboard"
+msgstr "Međuspremnik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line break"
+msgstr "prijelom reda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line breaks"
+msgstr "prijeloma redaka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:845
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:439
+msgid "Cu&t"
+msgstr "&Izreži"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:847
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:445
+msgid "&Copy"
+msgstr "&Kopiraj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:849
+msgid "&Paste"
+msgstr "Zalije&pi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:851
+msgid "Paste (Slowly)"
+msgstr "Zalijepi (Polako)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:856
+msgid "Paste &File"
+msgstr "Zalijepi &Datoteku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:863
+msgid "Stop Paste"
+msgstr "Zaustavi lijepljenje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:865
+msgid "Clear"
+msgstr "Očisti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:868
+msgid "Select All"
+msgstr "Odaberi Sve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:897
+msgid "Insert Icon"
+msgstr "Umetni Ikonu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1926
+msgid "%d matches: %Q"
+msgstr "%d rezultata: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1930
+msgid "No matches"
+msgstr "Nema rezultata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2657
+msgid "Show History<br>&lt;Ctrl+PageUp&gt;"
+msgstr "Prikaži Povijest<br>&lt;Ctrl+PageUp&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2648
+msgid "Input History Disabled"
+msgstr "Povijest Unosa Isključena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2370
+msgid "Show Icons Popup<br>&lt;Ctrl+I&gt;<br>See also /help texticons"
+msgstr ""
+"Prikaži Pop-up s Ikonama<br>&lt;Ctrl+I&gt;<br>Pogledaj također /help "
+"texticons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2382
+msgid "User friendly commandline mode<br>See also /help commandline"
+msgstr "User friendly commandline mod<br>Pogledaj također /help commandline"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2394
+msgid "Multi-line Editor<br>&lt;Alt+Backspace&gt;"
+msgstr "Višeredni Uređivač<br>&lt;Alt+Backspace&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2498
+msgid "Confirm Multiline Message"
+msgstr "Potvrdi Višerednu Poruku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2499
+msgid ""
+"You're about to send a message with %1 lines of text.<br><br>There is "
+"nothing wrong with it, this warning is<br>here to prevent you from "
+"accidentally sending<br>a really large message just because you didn't edit "
+"it<br>properly after pasting text from the clipboard.<br><br>Do you want the "
+"message to be sent?"
+msgstr ""
+"Pokušavate poslati poruku s %1 redaka teksta.<br><br>Ništa nije pogrešno s "
+"tim, ovo upozorenje je<br>ovdje da vas spriječi od slučajnog slanja<br>vrlo "
+"velikih poruka zato što ih niste uredili<be>ispravno nakon lijepljenja "
+"teksta iz međuspremnika.<br><be>Želite li da poruka bude poslana?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2505
+msgid "Yes, always"
+msgstr "Da, uvijek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2506
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:399
+msgid "Yes"
+msgstr "Da"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:806
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:375
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:400
+msgid "No"
+msgstr "Ne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2556
+msgid "<Ctrl+Return>; submits, <Alt+Backspace>; hides this editor"
+msgstr "<Ctrl+Return>; šalje, <Alt+Backspace>; sakriva ovaj uređivač"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:126
+msgid "Address:"
+msgstr "Adresa:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:140
+msgid "Current IRC URI"
+msgstr "Trenutni IRC URI"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:156
+msgid "Notify List"
+msgstr "Notify Popis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:263
+msgid "Part All Channels"
+msgstr "Napusti Sve Sobe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:265
+msgid "Close All Queries"
+msgstr "Zatvori Sve Privatne Razgovore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:270
+msgid "Unhighlight All Windows"
+msgstr "Denotiraj Sve Prozore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:273
+msgid "Unhighlight All Channels"
+msgstr "Denotiraj Sve Kanale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:275
+msgid "Unhighlight All Queries"
+msgstr "Denotiraj Sve Privatne Razgovore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:387
+msgid "Gender:"
+msgstr "Spol:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:394
+msgid "Male"
+msgstr "Muško"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:393
+msgid "Female"
+msgstr "Žensko"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:375
+msgid "Registered as"
+msgstr "Registrir[an/na] kao"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:381
+msgid "(Matched by"
+msgstr "(Odgovara kao"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:393
+msgid "On <b>"
+msgstr "Na <b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:402
+msgid "Using server <b>%1</b>"
+msgstr "Koristi server <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:407
+msgid "%1 hops"
+msgstr "%1 hops"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:417
+msgid "Probably Away"
+msgstr "Vjerojatno Odsut[an/na]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:493
+msgid ""
+"KVIrc can accept only irc://, irc6://, ircs:// or irc6s:// URL's\n"
+"Your URL is invalid. Check spelling and try again"
+msgstr ""
+"Kvirc prihvaća samo irc://, irc6://, ircs:// or irc6s:// URL-ove\n"
+"Vaš URL nije ispravan. Provjerite pravopisne greške i pokušajte ponovno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:554
+msgid ""
+"You have just attempted to close a console window with an active connection "
+"inside.\n"
+"Are you sure you wish to terminate the connection?"
+msgstr ""
+"Upravo pokušavate zatvoriti prozor konzole s aktivnom konekcijom.\n"
+" Jeste li sigurni da želite prekinuti konekciju sa serverom?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:588
+msgid ""
+"You have just attempted to close the last console window.\n"
+"Are you sure you wish to quit KVIrc?"
+msgstr ""
+"Upravo pokušavate zatvoriti prozor posljednje konzole.\n"
+" Jeste li sigurni da želite izaći iz KVIrc-a?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1019
+msgid "Failed to load avatar with name \"%Q\" and local path \"%Q\""
+msgstr ""
+"Neuspjeh pri učitavanju avatara s imenom \"%Q\" i lokalnom putanjom \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:624
+msgid "Connection in progress..."
+msgstr "Spajanje u tijeku..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1099
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:630
+msgid "Login in progress..."
+msgstr "Logiranje u tijeku..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1179
+msgid "channel"
+msgstr "soba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1180
+msgid "channels"
+msgstr "sobe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1181
+msgid "query"
+msgstr "razgovor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1182
+msgid "queries"
+msgstr "razgovori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1238
+msgid "Connected since"
+msgstr "Spojen od"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1252
+msgid "Online for"
+msgstr "Online od"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1264
+msgid "Server idle for"
+msgstr "Server neaktivan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:50
+msgid "This option is also available as"
+msgstr "Ova opcija je također dostupna kao"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:683
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:275
+msgid "Advanced..."
+msgstr "Dodatno..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:69
+msgid "Scri&pting"
+msgstr "&Skriptiranje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:74
+msgid "&Tools"
+msgstr "&Alati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:81
+msgid "&Settings"
+msgstr "&Opcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:83
+msgid "&Window"
+msgstr "&Prozori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:125
+msgid "&Help"
+msgstr "P&omoć"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:119
+msgid "&Help Browser (Panel)"
+msgstr "Preglednik Pomoći (Panel)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:121
+msgid "Help Browser (&Window)"
+msgstr "Preglednik Pomoći (Prozor)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:124
+msgid "&Tip of the Day"
+msgstr "&Savjet Dana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:127
+msgid "About &KVIrc"
+msgstr "O &Kvirc-u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:130
+msgid "KVIrc Home&page"
+msgstr "KVIrc &Početna stranica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:134
+msgid "KVIrc Russian Home&page"
+msgstr "KVIrc Russian Home&page"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:139
+msgid "KVIrc French Home&page"
+msgstr "KVIrc French Home&page"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:143
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:339
+msgid "Subscribe to the Mailing List"
+msgstr "Pretplata na Mailing Listu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:145
+msgid "Report a Bug / Propose Improvements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:148
+msgid "Join KVIrc International Channel on Freenode"
+msgstr "Uđi u KVIrc Međunarodnu Sobu na Freenode-u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:150
+msgid "Join KVIrc International Channel on IRCNet"
+msgstr "Uđi u KVIrc Međunarodnu Sobu na IRCNet-u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:155
+msgid "Join KVIrc Italian Channel on AzzurraNet"
+msgstr "Join KVIrc Italian Channel on AzzurraNet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:161
+msgid "Join KVIrc French Channel on Freenode"
+msgstr "Join KVIrc French Channel on Freenode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:164
+msgid "Join KVIrc French Channel on EuropNet"
+msgstr "Join KVIrc French Channel on EuropNet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:179
+msgid "Show StatusBar"
+msgstr "Prikaži Statusnu Traku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:194
+msgid "&Save Configuration"
+msgstr "&Spremi Postavke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:213
+msgid "Restore &Default Script"
+msgstr "Vrati &Standardnu Skriptu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:630
+msgid "Disconnect"
+msgstr "Odspoji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:228
+msgid "New &Connection To"
+msgstr "Nova &Konekcija Do"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:234
+msgid "Hide &Dock Icon"
+msgstr "Sakrij &Dock Ikonu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:237
+msgid "Show &Dock Icon"
+msgstr "Prikaži &Dock Ikonu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:111
+msgid "&Quit"
+msgstr "&Izađi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:265
+msgid "&Other..."
+msgstr "&Ostalo..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:305
+msgid "Show &Icon Table"
+msgstr "Prikaži Tablicu &Ikona"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:308
+msgid "Open &Terminal"
+msgstr "Otvori &Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:308
+msgid ""
+"<b>Shift+Drag</b> or <b>Ctrl+Drag</b> to move the applet around<br><b>Right "
+"click</b> to see the other options"
+msgstr ""
+"<b>Shift+Pomicanje</b> ili <b>Ctrl+Pomicanje</b> za micanje appleta "
+"okolo<br><b>Desni klik</b> za pregled drugih opcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:313
+msgid "<b>Right click</b> to add/remove applets"
+msgstr "<b>Desni klik</b> za dodati/ukloniti applet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:353
+msgid "Remove %Q"
+msgstr "Ukloni %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:365
+msgid "Add Applet"
+msgstr "Dodaj Applet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:404
+msgid ""
+"Drag the applet while holding the Shift or Ctrl key to move it to the "
+"desired position"
+msgstr ""
+"Prenesite applet istovremeno držeći Shift ili Ctrl tipku za prijenos na "
+"željeno mjesto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:93
+msgid "<b><font color=\"#EAEAEA\" size=\"-1\">Find Text</font></b>"
+msgstr "<b><font color=\"#EAEAEA\" size=\"-1\">Pronađi Tekstt</font></b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:118
+msgid "&Regular expression"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:121
+msgid "E&xtended regexp."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:126
+msgid "C&ase sensitive"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:129
+msgid "Find &Prev."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:133
+msgid "&Find Next"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:880
+msgid "Find"
+msgstr "Pronađi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:214
+msgid "Type"
+msgstr "Vrsta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:166
+msgid "Set &All"
+msgstr "Od&aberi Sve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:170
+msgid "Set &None"
+msgstr "Odaberi &Ništa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:174
+msgid "&Load From..."
+msgstr "&Učitaj iz..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:178
+msgid "&Save As..."
+msgstr "&Snimi kao..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:182
+msgid "Filter"
+msgstr "Filter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:234
+msgid "Select a Filter File"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:251
+#, c-format
+msgid "Can't open the filter file %s for reading."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:261
+msgid "Select a Name for the Filter File"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:272
+msgid "Failed to write the filter file %Q (IO Error)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:274
+msgid "Can't open the filter file %Q for writing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:109
+msgid "Choose image ..."
+msgstr "Odaberi sliku ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:122
+msgid "Builtin images"
+msgstr "Ugrađene slike"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:131
+msgid "Small icons"
+msgstr "Male ikone"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:138
+msgid "Full path"
+msgstr "Puna putanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:241
+msgid "Builtin $icon(%Q) [index %d]"
+msgstr "Ugrađeno $icon(%Q) [indeks %d]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:274
+msgid "directory"
+msgstr "direktorij"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:300
+msgid "pixels"
+msgstr "pixeli"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:305
+msgid "bytes"
+msgstr "bajtova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:98
+msgid "Show User List"
+msgstr "Prikaži Popis Korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:105
+msgid "Query Targets"
+msgstr "Odredišta Privatnog Razgovora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:165
+msgid "Query target:"
+msgstr "Odredište privatnog razgovora:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:170
+msgid "%1 is %2 (%3)"
+msgstr "%1 je %2 (%3)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:172
+msgid "%1 is %2"
+msgstr "%1 je %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:186
+msgid "%1 is using irc server: %2 (%3 hops)"
+msgstr "%1 koristi irc server: %2 (%3 hops)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:188
+msgid "%1 is using irc server: %2"
+msgstr "%1 koristi irc server: %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:195
+msgid "%1 is probably away"
+msgstr "%1 je vjerojatno odsutan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:200
+msgid "Common channels with %1: %2"
+msgstr "Zajedničke sobe s %1: %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:254
+msgid "[Dead Query]"
+msgstr "[Mrtav Razgovor]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:240
+msgid "Query with %1!%2 (%3)"
+msgstr "Razgovor s %1!%2 (%3)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:242
+msgid "Query with %1!%2"
+msgstr "Razgovor s %1!%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:244
+msgid ", using server %1"
+msgstr ", koristi server %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:246
+msgid " (%1 hops)"
+msgstr " (%1 hops)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:248
+msgid ", probably away"
+msgstr ", vjerojatno odsutan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:252
+msgid "Common channels: %2"
+msgstr "Zajedničke sobe: %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:320
+msgid ""
+"The target of this query has changed from \r!n\r%Q\r [%Q@\r!h\r%Q\r] to \r!n"
+"\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr ""
+"Odredište ovog privatnog razgovora se promijenilo iz \r!n\r%Q\r [%Q@\r!h\r%Q"
+"\r] u \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:389
+msgid "Common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Zajedničke sobe za \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:392
+msgid "No common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "Nema zajedničkih soba za \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:428
+msgid "[Dead query]"
+msgstr "[Mrtav razgovor]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:578
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:645
+msgid "This query has no active targets, no message sent"
+msgstr "Ovaj razgovor nema aktivnih odredišta, poruka nije poslana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:617
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %s, no "
+"data sent to the server"
+msgstr ""
+"Pogon za kriptiranje nije mogao enkriptirati trenutnu poruku (%Q): %s, "
+"podaci nisu poslani serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashcount.cpp:74
+msgid ""
+"The argument of the hash count '#' operator didn't evaluate to a hash: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:100
+msgid "DNS Lookup result for query \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:105
+msgid "Error: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:110
+msgid "Hostname %d: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:116
+msgid "IP address %d: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:870
+msgid ""
+"Broken slot '%Q' in target object '%Q::%Q' while emitting signal '%Q' from "
+"object '%Q::%Q': disconnecting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:888
+msgid ""
+"Slot target object destroyed while emitting signal '%Q' from object '%Q::%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1040
+msgid "Listing Qt properties for object named \"%Q\" of KVS class %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1046
+#, c-format
+msgid "Properties for Qt class %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1071
+msgid "Property: %c%Q%c, type %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1131
+#, c-format
+msgid "%d properties listed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1151
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1380
+msgid "The object named \"%Q\" of class %Q has no Qt properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1396
+msgid "No Qt property named \"%Q\" for object named \"%Q\" of class %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1409
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed but it doesn't really exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1417
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed and defined but the returned variant is not valid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1200
+#, c-format
+msgid ""
+"The property is of type %s but the supplied argument can't be converted to "
+"that type (expecting \"%s\")"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1331
+msgid ""
+"A pixmap object, an image_id or an image file path is required for this "
+"property"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1352
+msgid "Can't find the requested image"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1512
+msgid ""
+"Property \"%Q\" for object named \"%Q\" of class %Q has an unsupported data "
+"type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1659
+msgid "Cannot find object function $%Q for object named \"%Q\" of class %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1661
+msgid "Cannot find object function $%Q::%Q for object named \"%Q\" of class %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1669
+msgid ""
+"Cannot call internal object function $%Q (for object named \"%Q\" of class %"
+"Q) from this context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:69
+msgid "Stray dot ('.') character or invalid following module command name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:70
+msgid "Syntax error: malformed module command identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:188
+msgid "Stray '::' sequence or invalid following alias name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:95
+msgid "Syntax error: malformed alias identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:102
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:196
+msgid "Stray ':' character: did you mean '...<namespace>::<alias_name>' ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:103
+msgid "Syntax error: malformed (alias?) command identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:280
+msgid "Unknown callback command \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:465
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:44
+msgid "The current window is not a channel"
+msgstr "Trenutni prozor nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:532
+msgid ""
+"Timer name omitted but there is not current timer (this is not a timer "
+"callback)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:538
+msgid "Can't kill the timer '%Q' since it is not running"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:626
+#, fuzzy
+msgid "List of active timers"
+msgstr "aktivni korisni[ci/ce]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:637
+msgid "Persistent"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:640
+#, fuzzy
+msgid "WindowLifetime"
+msgstr "Popis Prozora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:643
+msgid "SingleShot"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:652
+#, fuzzy
+msgid "None"
+msgstr "ništa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:663
+#, c-format
+msgid "Total: %u timers running"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:849
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:872
+msgid "Found character '%q' (unicode %x) where a slash '/' was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:842
+msgid ""
+"Unexpected end of command in binding operation, at least two slashes are "
+"missing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:865
+msgid ""
+"Unexpected end of command in binding operation, at least one slash is missing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:905
+msgid "Unknown binding operation '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:926
+msgid "Missing right side operand for the binding operator '=~'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:948
+msgid "Trailing garbage ignored after operator '++'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:960
+msgid "Missing right operand for operator '+='"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:979
+msgid "Trailing garbage ignored after operator '--'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:986
+msgid ""
+"This looks a lot like an object handle dereferencing operator '->' but in "
+"fact it isn't. Maybe you forgot a '$' just after ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:994
+msgid "Missing right operand for operator '-='"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1015
+msgid "Missing right operand for operator '<<='"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1025
+msgid "Missing right operand for operator '<<'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1039
+msgid "Missing right operand for operator '<,'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1053
+msgid "Missing right operand for operator '<+'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1075
+msgid "Missing right operand for operator '>>='"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1094
+msgid "Missing right operand for operator '.='"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1113
+msgid "Missing right operand for operator '"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:72
+msgid "Unknown operator"
+msgstr "Nepoznat operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1178
+msgid "Unexpected (and senseless) read-only data evaluation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1180
+msgid "Syntax error: confused by earlier errors: bailing out"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1160
+msgid "Unexpected end of script after a variable reference: expected operator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1176
+msgid ""
+"Unexpected character '%q' (unicode %x) after a void function call: end of "
+"instruction expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1179
+msgid "Unexpected character '%q' (unicode %x)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:96
+msgid "/me can be used only in channels, queries and DCC chat windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:385
+msgid "Invalid IRC url (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:410
+msgid "The commandline for this url type seems to be broken (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:412
+msgid "No commandline specified for this type of url (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:512
+msgid "Option setting error: Unknown option or invalid value for option type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:606
+msgid "Choose a file to parse"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:639
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:643
+msgid "Failed to load the file '%Q' for parsing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:715
+msgid "Missing channel list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:753
+#, c-format
+msgid "You don't appear to be on channel %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:802
+msgid "Module command call failed: can't load the module 'snd'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:809
+msgid ""
+"Module command call failed: the module 'snd' doesn't export a command named "
+"'play'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:864
+msgid "Popup %Q is not defined"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:872
+msgid "A popup menu cannot be popped up twice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:897
+msgid "Invalid syntax for screen coordinates, using cursor position"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1011
+msgid "Empty target specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:97
+msgid "[RAW]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1237
+msgid "Window with id %Q not found: no rebinding performed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1330
+msgid "Failed to execute command '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:242
+msgid "Missing alias name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:253
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:889
+msgid ""
+"Alias names can contain only letters, digits, underscores and '::' namespace "
+"separators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:903
+msgid ""
+"Stray ':' character in alias name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:914
+msgid "Found an empty namespace in alias name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:277
+msgid "The alias %Q is not existing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:436
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:413
+msgid "The specified window has no button containers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:447
+msgid "Window button '%Q' not found"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:445
+msgid "Can't find the icon '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:532
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:540
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1197
+msgid "No such event (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:552
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1222
+msgid "No handler '%Q' for raw numeric event '%d'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1248
+msgid "No handler '%Q' for event '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:936
+msgid "The specified ping time is invalid: assuming zero (no ping)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:946
+msgid "The specified maximum run time is invalid: assuming zero (infinite)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:965
+msgid "Failed to start the process"
+msgstr "Greška pri pokretanju procesa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1010
+msgid "The specified object does not exist"
+msgstr "Odabrani objekt ne postoji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1113
+msgid "Missing timer name"
+msgstr "Nedostaje ime timera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1122
+msgid "Missing timeout delay"
+msgstr "Nedostaje vrijeme timeouta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1129
+msgid "The timeout delay didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1152
+msgid "Unable to add the timer: insufficient system resources"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_eventmanager.cpp:503
+msgid "Event handler %Q is broken: disabling"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_moduleinterface.cpp:166
+msgid "Can't unload the module: it has locked itself in memory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:123
+msgid "Unknown binary operator '=%q': did you mean '==' ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:221
+msgid "Unknown binary operator '%q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:305
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:371
+msgid "Unexpected end of script in expression"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:451
+msgid ""
+"Unexpected character %q (unicode %h) in expression. If it meant to be a "
+"string use the quotes."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:466
+msgid "Unexpected empty expression operand"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:91
+msgid "say: injected commandline"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:94
+msgid "Say parse error: Broken command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:250
+msgid ""
+"Couldn't find a suitable IRC context for the connection, try using -n or -u"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:259
+msgid "Another connection is already in progress in the selected IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:369
+msgid "No menu bar item with text '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:383
+msgid "Invalid index specified: ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:392
+msgid "The popup '%Q' is not defined"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:604
+msgid "No target channel specified and the current window is not a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:705
+msgid "No catalogue %Q for the current language found"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:744
+msgid "The catalogue %Q was not loaded"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:80
+msgid ""
+"Empty window identifier specified in the standard rebinding switch: no "
+"rebinding performed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:91
+msgid ""
+"Invalid window specified in the standard rebinding switch: no rebinding "
+"performed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:94
+msgid ""
+"The left side of the scope operator didn't evaluate as an object reference"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:100
+msgid ""
+"The left side of the scope operator evaluated to a null object reference"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:107
+msgid ""
+"The left side of the scope operator evaluated to an invalid object reference "
+"(object doesn't exist)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayreferenceassert.cpp:77
+msgid "Array reference assert failed: the variable evaluated to type '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:247
+msgid "Operand of unary operator didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:415
+msgid "Left operand didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:422
+msgid "Right operand didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:547
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:575
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:583
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:374
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:66
+msgid "Division by zero"
+msgstr "Dijeljenje s nulom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:107
+#, c-format
+msgid "line %d, near character %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:187
+msgid "This command can be used only in windows bound to an IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:193
+msgid "You're not connected to an IRC server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:199
+msgid "Missing parameter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:128
+msgid "Hash key evaluated to empty string: fix the script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:99
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:144
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash automatic "
+"conversion from %Q supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashreferenceassert.cpp:77
+msgid "Hash reference assert failed: the variable evaluated to type '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:100
+msgid "Failed to send an unknown command as /raw"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:104
+msgid "Call to undefined command '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:116
+msgid "Error in inner alias command call '%Q', called from this context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:74
+msgid "There are no extended scope variables in this scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:111
+msgid "Missing class name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:120
+msgid "A class can't be a subclass of itself"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:127
+msgid "Couln't find base class named \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:137
+msgid ""
+"Detected a loop in the inheritance tree of the base class \"%Q\": redefine "
+"that class first"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:146
+msgid "Can't override the builtin class \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:71
+msgid "Module command call failed: can't load the module '%Q': %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:77
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a command named '%"
+"Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:113
+msgid "Broken condition in menu setup: assuming false"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:220
+msgid "Broken icon parameter: ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:228
+msgid "Can't find the icon \"%Q\": ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:244
+msgid "Broken text parameter: assuming empty string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:486
+msgid "Recursive definition detected for popup '%Q': ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:500
+msgid "Can't find the external popup '%Q'; ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:853
+msgid "Broken prologue in popup menu '%Q': ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:868
+msgid "Broken epilogue in popup menu '%Q': ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:70
+msgid "Module function call failed: can't load the module '%Q': %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:77
+msgid ""
+"Module function call failed: the module '%Q' doesn't export a function named "
+"'%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_timermanager.cpp:244
+msgid "Timer '%Q' has a broken callback handler: killing the timer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:229
+msgid "The target variable didn't evaluate to an integer or real value"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:283
+msgid "The right side of operator '&=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:294
+msgid "The left side of operator '&=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:353
+msgid "The right side of operator '/=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:364
+msgid "The left side of operator '/=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:446
+msgid "The right side of operator '%=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:457
+msgid "The left side of operator '%=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:541
+msgid "The right side of operator '*=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:552
+msgid "The left side of operator '*=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:620
+msgid "The right side of operator '|=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:631
+msgid "The left side of operator '|=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:691
+msgid "The right side of operator '<<=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:702
+msgid "The left side of operator '<<=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:763
+msgid "The right side of operator '>>=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:774
+msgid "The left side of operator '>>=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:840
+msgid "The right side of operator '-=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:851
+msgid "The left side of operator '-=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:923
+msgid "The right side of operator '+=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:934
+msgid "The left side of operator '+=' didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1009
+msgid "The right side of operator '^=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1020
+msgid "The left side of operator '^=' didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1462
+msgid ""
+"The regular expression matched a zero-length substring: this is not valid in "
+"the s/// operator, skipping"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:52
+msgid "Unexpected end of script after '$' function call prefix"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:53
+msgid "Unexpected character %q (unicode %x) after '$' function call prefix"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:54
+msgid ""
+"Syntax error after '$' function call prefix. If you want to use a plain '$' "
+"in the code you need to escape it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:63
+msgid "Invalid expression evaluation in object scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:78
+msgid "Invalid command evaluation in object scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:87
+msgid "Empty instruction block for command evaluation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:101
+msgid ""
+"Parameter identifiers are forbidden in object scope (after the '->' operator)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:147
+msgid ""
+"Ending index of a multiple parameter identifier is lower or equal to the "
+"starting index. This will evaluate to a single parameter identifier."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:163
+msgid "Syntax error: invalid $$ ($this) function call in object scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:189
+msgid "Syntax error: malformed alias function call identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:197
+msgid "Syntax error: malformed (alias?) function call identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:307
+#, c-format
+msgid "Invalid data type for parameter \"%s\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:122
+#, c-format
+msgid "found empty string where type '%s' was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:129
+msgid "found string value \"%Q\" where type '%s' was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:134
+msgid "found type %Q where type '%s' was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:154
+#, c-format
+msgid "Missing non-optional parameter \"%s\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:282
+msgid "found empty string while a non empty one was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:309
+#, c-format
+msgid "found signed integer \"%d\" where type 'unsigned integer' was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:253
+msgid "This window has no associated IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:483
+#, c-format
+msgid "No such IRC context (%u)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:471
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:586
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:494
+msgid "This window is not associated to an IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:809
+msgid ""
+"The specified format string wasn't accepted by the underlying system time "
+"formatting function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:70
+msgid "Unterminated c-style multiline comment"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:71
+msgid "Unexpected end of script in multiline comment"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:88
+msgid ""
+"Unexpected character '%q' (unicode %x) after a slash (it is a typo or a "
+"malformed comment begin ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:71
+msgid "Call to undefined function '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:79
+msgid "Error in inner alias function call '%Q', called from this context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:73
+msgid "Array index didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:79
+msgid ""
+"Array index evaluated to a negative integer (non negative integer expected)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:106
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from %Q supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:142
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:219
+#, fuzzy
+msgid "Lag meter was not enabled"
+msgstr "Iskljucen pokretač Lag mjerenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:546
+msgid "No such event handler (%Q) for event %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands.cpp:153
+msgid "This is not a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:99
+msgid ""
+"Unexpected end of command buffer while looking for the \"perl.end\" statement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:147
+msgid "Trailing garbage at the end of the break command: ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:209
+msgid "The 'unset' command needs a variable list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:280
+msgid "Found character %q (unicode %x) where a variable was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:219
+msgid "'unset' command used without a variable list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:279
+msgid "The 'global' command needs a variable list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:631
+msgid "Found character %q (unicode %x) where an open parenthesis was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:439
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:538
+msgid "Unexpected end of buffer in class definition"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:474
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:501
+msgid "Found character %q (unicode %x) where a function name was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:522
+msgid "Unexpected end of buffer in function parameter list reminder"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:630
+msgid "The while command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:654
+msgid ""
+"The last while command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:655
+msgid ""
+"Unexpected end of script while looking for the instruction block of the "
+"while command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:741
+msgid ""
+"Unexpected end of command after the 'do' command block: expected 'while' "
+"keyword"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:743
+msgid "Found character %q (unicode %x) where a 'while' keyword was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:759
+msgid ""
+"The 'while' block of the 'do' command needs an expression enclosed in "
+"parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:779
+msgid "Garbage string after the expression in 'do' command: ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:825
+msgid "The 'if' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:850
+msgid ""
+"The last if command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:851
+msgid ""
+"Unexpected end of script while looking for the instruction block of the if "
+"command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:966
+msgid ""
+"Unexpected end of buffer while looking for the closing ')' in the 'for' "
+"command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1015
+msgid "The 'for' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1092
+msgid ""
+"Found char %q (unicode %x) while looking for the terminating ')' in 'for' "
+"command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1122
+msgid "Empty infinite 'for' loop: fix the script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1181
+msgid "The 'foreach' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1205
+msgid ""
+"The 'foreach' command expects a writeable iteration variable as first "
+"parameter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1196
+msgid ""
+"Found character '%q' (unicode %x) where '%' or '$' was expected: see /help "
+"foreach for the command syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1207
+msgid "Unexpected function call as 'foreach' iteration variable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1209
+msgid "Unexpected read-only variable as 'foreach' iteration variable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1219
+msgid ""
+"Unexpected end of 'foreach' parameters: at least one iteration data argument "
+"must be given"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1223
+msgid ""
+"The 'foreach' command expects a comma separated list of iteration data items "
+"after the first parameter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1244
+msgid ""
+"Found empty 'foreach' execution block: maybe you need to fix your script ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1365
+msgid "The 'switch' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1415
+msgid "Unexpected end of buffer in switch condition block"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1422
+msgid ""
+"Found character %q (unicode %x) where a 'case','match','regexp','default' or "
+"'break' label was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1460
+msgid ""
+"Found 'break' label where a 'case','match','regexp' or 'default' label was "
+"expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1465
+msgid ""
+"Found token '%Q' where a 'case','match','regexp','default' or 'break' label "
+"was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1528
+msgid "Senseless empty switch command: fix the script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1562
+msgid "Unexpected end of buffer in defpopup block"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1569
+msgid ""
+"Found character %q (unicode %x) where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1668
+msgid "Found empty prologue block: maybe you need to fix the script?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1670
+msgid "Found empty epilogue block: maybe you need to fix the script?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1703
+msgid ""
+"Unexpected empty <text> field in label parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1753
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1801
+msgid ""
+"Unexpected empty <text> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1777
+msgid ""
+"Found empty instruction for popup item: maybe you need to fix the script?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1809
+msgid ""
+"Unexpected empty <name> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1821
+msgid ""
+"Found token '%Q' where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1931
+msgid "The 'defpopup' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:109
+msgid "beginning of input"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:121
+msgid ""
+"Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %s"
+"\" for the command syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:124
+#, c-format
+msgid ""
+"Found end of input where character '%c' was expected: see \"/help %s\" for "
+"the command syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:197
+msgid "Empty script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2650
+msgid ""
+"Syntax error after '%' variable prefix. If you want to use a plain '%' in "
+"the code you need to escape it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2667
+msgid "Objects have no extended scope variables"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2727
+msgid "Found character '%q' (unicode %x) where an instruction was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2760
+msgid "Unterminated instruction block"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2761
+msgid "Unexpected end of script in instruction block (missing closing brace)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2838
+msgid ""
+"The dash after a command should be followed by a letter (switch), by a digit "
+"(negative number) or be escaped"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2842
+msgid "Unexpected character '%q' (unicode %x) after a switch dash"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2844
+msgid "Unexpected end of script after a switch dash"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2869
+msgid ""
+"The above problem might be related to the switch dash and the following "
+"equal sign"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2948
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3016
+msgid "Unexpected end of script in parameter list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2954
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3022
+msgid "Unexpected end of line in parameter list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3083
+msgid ""
+"Nested character %q corresponding to expected terminator, this might confuse "
+"me a bit: it is a good idea to enclose it in quotes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3093
+msgid "Skipping nested terminator character %q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3120
+msgid "Stray backslash at the end of the script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3393
+msgid "Unterminated hash key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3387
+msgid "Unexpected end of script in hash key (missing '}' character ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3394
+msgid ""
+"Unexpected end of line in hash key (missing '}' character or unescaped "
+"newline)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3679
+msgid "Unterminated string constant"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3673
+msgid "Unexpected end of script in string constant (missing \" character ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3680
+msgid ""
+"Unexpected end of line in string constant (missing \" character or unescaped "
+"newline)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_processmanager.cpp:225
+msgid "Error triggered from process callback handler: killing process"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arraycount.cpp:72
+msgid ""
+"The argument of the array count '#' operator didn't evaluate to an array: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:197
+msgid "This window has no associated IRC context and is not a DCC chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:293
+msgid "Class \"%Q\" is not defined"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:303
+msgid "The specified parent object does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:430
+msgid "There is no option named '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:85
+msgid "Internal error: pure virtual evaluateReadOnly called"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:91
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:104
+msgid ""
+"Internal error: trying to evaluate as read-write a read-only data location"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:98
+msgid "Internal error: pure virtual evaluateReadOnlyInObjectScope called"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:215
+msgid "[KVS]%c Warning: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:211
+msgid "[KVS]%c Compilation Error: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:219
+msgid "[KVS]%c Runtime Error: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:224
+msgid "[KVS] in script context \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:226
+msgid "[KVS] in script context \"%Q\", %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:233
+msgid "[KVS] Code listing:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:238
+msgid "[KVS] Window:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:242
+#, c-format
+msgid "[KVS] Destroyed window with pointer %x"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:246
+msgid "[KVS] Call stack:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:464
+#, c-format
+msgid "Window with ID '%s' not found, returning empty string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:130
+msgid "The specified window is not a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:392
+msgid "The $sw() function can be used only in aliases"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:302
+msgid "Invalid pitch value: using default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:312
+msgid "Invalid duration value: using default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:421
+msgid "No button with type %Q named %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:632
+msgid "Can't delete a null object reference"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:638
+msgid "Can't delete an inexisting object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:692
+msgid "Inexisting popup \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:698
+msgid ""
+"Popup menu self-modification is not allowed (the popup is probably open)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:705
+msgid "The menu item with id \"%Q\" does not exist in popup \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:860
+msgid ""
+"The argument of the -w switch did not evaluate to a valid window id: using "
+"default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:869
+msgid ""
+"The argument of the i switch did not evaluate to a number: using default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:981
+msgid "Invalid color-set specification, using default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:992
+#, c-format
+msgid "Window '%s' not found, using current one"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:78
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a callback "
+"command named '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp:401
+#, c-format
+msgid "The popup '%s' is actually locked: 'self-modifications' are not allowed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:822
+#, c-format
+msgid "Ignoring DCC from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:839
+#, c-format
+msgid "Ignoring CTCP from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:978
+msgid "The following CTCP reply has unrecognized target %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1025
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1128
+msgid "Channel CTCP"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:988
+msgid "%Q %Q reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1018
+msgid "The following CTCP request has unrecognized target %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1032
+msgid ""
+"%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignored (flood limit "
+"exceeded)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1036
+msgid "ignored (unrecognized)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "replied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1041
+msgid "%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1079
+msgid "The following CTCP PING reply has unrecognized target \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1113
+#, c-format
+msgid ""
+"The following CTCP PING reply has a broken time identifier \"%S\", don't "
+"trust the displayed time"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1132
+msgid "%Q PING reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sec %u msec"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1466
+msgid "The following CTCP ACTION has unrecognized target %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1471
+msgid "CTCP ACTION from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1517
+msgid "Unable to add file offer for file %Q (File not readable?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1521
+msgid "Added %d sec file offer for file %Q (%Q) to recipient %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "private"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "channel notification:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1579
+msgid "notification"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1584
+msgid "%Q unsets avatar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1591
+msgid "%Q changes avatar to %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1637
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (HTTP GET %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1644
+msgid ""
+": No valid local copy of avatar available; failed to start an HTTP transfer, "
+"ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1652
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (DCC GET %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1664
+msgid ""
+": No valid local copy of avatar available; flood limit exceeded, ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1669
+msgid ": No valid local copy of avatar available, ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1677
+msgid ": No such nickname in the user database, ignoring the change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1717
+msgid "Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1759
+msgid "Processing DCC %Q request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1770
+#, c-format
+msgid "Unable to process the above request: Cannot load DCC module (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1776
+msgid "Unable to process the above request: DCC module may be broken"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:132
+msgid ""
+"[Server parser]: Encountered problems while parsing the following message:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:134
+msgid "[Server parser]: [%s][%s] %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:136
+#, c-format
+msgid "[Server parser]: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:98
+msgid "Received ping from \r!s\r%Q\r (PING %Q), replied pong"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:125
+#, c-format
+msgid "Received pong from \r!s\r%s\r (PONG %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:151
+msgid "Server ERROR: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:174
+msgid "Missing channel parameter in join message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:209
+msgid "Received a join message for an unknown channel, possible desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:305
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r [implicit +%c umode change]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:310
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] je uš[ao/la] u \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:324
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just joined \r!c\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:355
+msgid "Received a part message for an unknown channel, possible desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:384
+msgid "You have left channel \r!c\r%Q\r"
+msgstr "Napustili ste sobu \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:386
+msgid "You have left channel \r!c\r%Q\r: %Q"
+msgstr "Napustili ste sobu \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:402
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] je napusti[o/la] \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:406
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] je napusti[o/la] \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:420
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r: %Q"
+msgstr "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] je upravo napusti[o/la] \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:424
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r"
+msgstr "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] je upravo napusti[o/la] \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:494
+#, c-format
+msgid "Netsplit detected: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:546
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:562
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] je napusti[o/la] IRC: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:589
+msgid "Received a kick message for an unknown channel, possible desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:626
+msgid "You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Izbačeni ste s \r!c\r%Q\r od \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:633
+msgid "Attempting to rejoin \r!c\r%Q\r..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:670
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@"
+"\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] je izbačen[a] s \r!c\r%Q\r od \r!n\r%Q\r [%Q@\r!h"
+"\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:682
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just been kicked from \r!c\r%Q\r by \r!n\r%Q"
+"\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:710
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:776
+msgid "Ignoring query-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:843
+msgid ""
+"Spam privmsg from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%s\")"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:984
+msgid "Ignoring channel-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1106
+msgid "Ignoring Notice from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1159
+msgid "NickServ requests authentication, executing scheduled command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1162
+msgid ""
+"The scheduled NickServ identification command appears to be broken, please "
+"change the setting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1213
+msgid ""
+"Spam notice from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%Q\")"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1394
+msgid "Received a topic message for an unknown channel, possible desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1413
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has changed topic to \"%Q%c\""
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] je promijeni[o/la] temu u \"%Q%c\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1512
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] je sada poznat[a] kao \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1063
+msgid "You have changed your nickname to %Q"
+msgstr "Promijenili ste nadimak u %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1477
+msgid ""
+"The target of this query was lost and has been found when \r!n\r%Q\r [%Q@\r!h"
+"\r%Q\r] changed his nickname to \r!n\r%Q\r"
+msgstr ""
+"Odredište ovog razgovora je izgubljeno i opet pronađeno kada \r!n\r%Q\r [%Q@"
+"\r!h\r%Q\r] je promijeni[o/la] svoj nadimak u \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1486
+msgid ""
+"The recent nickname change from \r!n\r%Q\r to \r!n\r%Q\r caused a query "
+"collision: merging output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1495
+msgid "End of merged output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1540
+msgid "Ignoring invite from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "autojoining"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "double-click the channel name to join"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1556
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] invites you to channel \r!c\r%Q\r (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1564
+msgid "Received an invite message directed to another nick, possible desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1584
+msgid "WALLOPS from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1648
+#, c-format
+msgid "You have set user mode %s"
+msgstr "Postavili ste korisnički mod %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1655
+msgid "Received a mode change for an unknown channel, possible desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1731
+msgid "%Q [%Q@%Q] has set channel key to \"\r!m-k\r%Q\r\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1734
+msgid "%Q [%Q@%Q] has unset the channel key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1754
+msgid "%Q [%Q@%Q] has set channel \r!m-l\rlimit to %Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1757
+msgid "%Q [%Q@%Q] has unset the channel limit"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1779
+msgid "%Q [%Q@%Q] has set mode %c%c \r!n\r%Q\r"
+msgstr "%Q [%Q@%Q] je postavi[o/la] mod %c%c \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1787
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1834
+msgid "%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1819
+msgid "%Q [%Q@%Q] has set mode %c%c \r!m%c%c\r%Q\r"
+msgstr "%Q [%Q@%Q] je postavi[o/la] mod %c%c \r!m%c%c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1860
+msgid "%Q [%Q@%Q] has set mode %s %Q"
+msgstr "%Q [%Q@%Q] je postavi[o/la] mod %s %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1863
+msgid "%Q [%Q@%Q] has set channel mode %s"
+msgstr "%Q [%Q@%Q] je postavi[o/la] modove sobe %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:147
+#, c-format
+msgid ""
+"One or more standard mode flags are missing in the server available modes.\n"
+"This is caused either by a non RFC1459-compliant IRC daemon or a broken "
+"server reply.\n"
+"Server umodes seem to be '%s' and channel modes seem to be '%s'.\n"
+"Ignoring this reply and assuming that the basic set of modes is available.\n"
+"If you have strange problems, try changing the server."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:159
+msgid "Available user modes:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:169
+msgid ": Unknown user mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:177
+msgid "Available channel modes:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:197
+msgid "Server %Q version %S supporting user modes '%S' and channel modes '%S'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:244
+msgid "This server supports the WATCH notify list method, it will be used"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:262
+msgid "The current network is %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:303
+msgid "This server supports the CODEPAGE command, it will be used"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:319
+#, c-format
+msgid "This server supports: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:375
+msgid "End of NAMES for \r!c\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:472
+msgid "Names for \r!c\r%Q\r: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:487
+msgid "(unknown)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:491
+msgid "Channel topic is: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:498
+msgid "Topic for \r!c\r%Q\r is: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:516
+msgid "No channel topic is set"
+msgstr "Tema sobe nije postavljena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:521
+msgid "No topic is set for channel \r!c\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:560
+msgid "Topic was set by %Q on %Q"
+msgstr "Temu je postavi[o/la] %Q u %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:561
+msgid "Topic was set by %Q"
+msgstr "Temu je postavi[o/la] %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:569
+msgid "Topic for \r!c\r%Q\r was set by %Q on %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:572
+msgid "Topic for \r!c\r%Q\r was set by %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:592
+msgid "Channel mode for \r!c\r%Q\r is %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:595
+msgid "User mode for \r!n\r%Q\r is %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:631
+msgid "End of channel %Q for \r!c\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:635
+msgid "ban list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:636
+msgid "invite list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:637
+msgid "ban exception list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:658
+msgid "%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:665
+msgid "Ban listing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:668
+msgid "Invite listing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:671
+msgid "Ban exception listing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:740
+msgid ""
+"WHO entry for %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cChannel%c: \r!c\r%Q\r, %"
+"cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAway%c: %Q, %cReal name"
+"%c: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:797
+msgid "End of WHO list for %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:856
+msgid ""
+"Something really weird is happening: the server is refusing all the login "
+"nicknames..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:861
+msgid ""
+"The server is refusing all the login nicknames: giving up, you must send the "
+"nickname manually"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:871
+msgid "No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:945
+msgid "Command syntax %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:973
+msgid "Tip: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:976
+msgid "Tip for %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:993
+msgid "End of help about %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1037
+msgid "%c\r!n\r%Q\r%c is away: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1090
+msgid "%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1095
+msgid "%c\r!n\r%Q\r%c's real name: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1115
+msgid "%c\r!n\r%Q\r%c was %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1119
+msgid "%c\r!n\r%Q\r%c's real name was: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1183
+msgid "%c\r!n\r%Q\r%c's channels: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1220
+msgid "Received a broken RPL_WHOISIDLE, can't evaluate the idle time"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1230
+msgid "%c\r!n\r%Q\r%c's idle time: %ud %uh %um %us"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1240
+msgid "%c\r!n\r%Q\r%c's signon time: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1274
+msgid "%c\r!n\r%Q\r%c's server: \r!s\r%Q\r - %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1293
+msgid "%c\r!n\r%Q\r%c is authenticated as %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1325
+msgid "%c\r!n\r%Q\r%c's info: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1372
+msgid "%c\r!n\r%Q\r%c WHOIS info from \r!s\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1389
+msgid "%c\r!n\r%Q\r%c WHOWAS info from \r!s\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1457
+msgid "Can't evaluate creation time"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1465
+msgid "Channel was created at %Q"
+msgstr "Soba je kreirana %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1470
+msgid "Channel \r!c\r%Q\r was created at %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1511
+msgid "USERHOST info: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1532
+msgid "Channel list begin: channel, users, topic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1559
+msgid "List: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1573
+msgid "End of LIST"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1597
+msgid "Link: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1612
+msgid "End of LINKS"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1641
+msgid "[Leaving away status after %ud %uh %um %us]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1645
+msgid "[Leaving away status]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1652
+msgid "Restoring pre-away nickname (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1672
+msgid "[Entering away status]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1690
+msgid "Setting away nickname (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1762
+#, c-format
+msgid "%c\r!s\r%s\r%c's server info: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1773
+#, c-format
+msgid "%c\r!s\r%s\r%c's administrator is %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1784
+#, c-format
+msgid "%c\r!s\r%s\r%c's contact adress is %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1812
+msgid "\r!n\r%Q\r invited %Q into channel %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1834
+#, c-format
+msgid "%c\r!s\r%s\r%c's information:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1844
+#, c-format
+msgid "End of %c\r!s\r%s\r%c's information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1855
+msgid "%c\r!s\r%s\r%c's time is %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1866
+msgid "%Q: no such server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1877
+msgid "%Q: no such channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1891
+msgid "Cannot sent to channel: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1894
+msgid "Cannot sent text to channel %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1909
+msgid "Cannot sent to channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1912
+msgid "Cannot sent text to channel %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1928
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1936
+msgid "Your encoding is now %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1967
+msgid "%c\r!n\r%Q\r%c's codepage is %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1991
+#, c-format
+msgid "Your user mode is %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:158
+msgid "Failed to set the encoding to %Q: mapping not available."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:175
+msgid "Changed text encoding to %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:503
+msgid "Connection to server lost"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:512
+msgid "Connection to server established"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:573
+msgid "[LINK WARNING]: Socket message truncated to 512 bytes."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:640
+msgid ""
+"The server seems to support the WATCH notify list method, will try to use it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:688
+msgid "Can't resolve local host address, using user supplied one (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:695
+msgid "Can't resolve local host address, using default 127.0.0.1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:701
+msgid "Local host address is %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:749
+msgid "The server seems to have changed the idea about the local hostname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:750
+msgid ""
+"You're probably using a broken bouncer or maybe something weird is happening "
+"on the IRC server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:776
+msgid ""
+"Here goes your \"broken bouncer hack\": The server has changed the hostname "
+"but I'll ignore the IP address change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:791
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:801
+msgid "The local IP address as seen by the IRC server is %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:815
+msgid "Can't start the DNS slave thread"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:816
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:846
+msgid "Unable to resolve the local hostname as seen by the IRC server: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:822
+msgid "Looking up the local hostname as seen by the IRC server (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:843
+msgid ""
+"Unable to resolve the local hostname as seen by the IRC server: %Q, using "
+"previously resolved %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:850
+msgid "Local hostname as seen by the IRC server resolved to %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:868
+msgid "Using server specific username (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:873
+msgid "Using network specific username (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:892
+msgid "Using reconnect specific nickname (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:898
+msgid "Using server specific nickname (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:905
+msgid "Using network specific nickname (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:922
+msgid "Using server specific real name (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:929
+msgid "Using network specific real name (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:946
+msgid "Logging in as %Q!%Q :%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:962
+#, c-format
+msgid "Sending %s as password"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1033
+msgid "Executing scheduled network specific \"on connect\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1042
+msgid "Executing scheduled server specific \"on connect\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1051
+msgid "Executing scheduled identity specific \"on connect\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1101
+#, c-format
+msgid "The server refused the suggested nickname (%s) and named you %s instead"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1113
+msgid "Login operations complete, happy ircing!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1123
+msgid "Executing scheduled network specific \"on login\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1132
+msgid "Executing scheduled server specific \"on login\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1141
+msgid "Executing scheduled identity specific \"on login\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1153
+msgid "Setting configured user mode"
+msgstr "Postavljanje podešenog korisničkog moda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1210
+msgid "Auto-joining network specific channels"
+msgstr "Automatski pridružene sobe ovisno o mreži"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1244
+msgid "Auto-joining server specific channels"
+msgstr "Automatski pridružene sobe ovisno o serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1341
+msgid "Updating away state for channel %Q"
+msgstr "Ažuriranje away stanja za sobu %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_customtoolbardescriptor.cpp:230
+msgid "Backward compatibility action for toolbar.define"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:790
+msgid "Installation problems ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:791
+msgid ""
+"<b>Ooops...</b><br><br><b>There are some reasons that make me think that "
+"your KVIrc installation is incomplete.</b><br><br>I might be wrong, but you "
+"seem to miss some of the features that the default KVIrc script provides."
+"This may happen because you have upgraded to an unstable cvs version, "
+"because you have accidentally deleted or damaged your configuration files, "
+"because you have installed an incomplete script or because you have hit a "
+"bug in KVIrc.<br><br>I can repeat the installation of the default script in "
+"order to restore the missing features.<br><b>Do you want the default script "
+"to be restored ?</b><br><br><font size=\"-1\">Hint: If you're a scripter and "
+"have intentionally removed some of the scripting features then you may "
+"safely click on \"No and Don't Ask Me Again\", otherwise it might be a good "
+"idea to click \"Yes\". If you still want to choose \"No\" you can always "
+"restore the default script by choosing the appropriate entry from the "
+"\"Scripting\" menu.</font>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:805
+msgid "No and Don't Ask Me Again"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:828
+msgid "Restore Default Script - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:829
+msgid ""
+"You are about to restore the default script.<br>This will erase any script "
+"changes you have made.<br>Do you wish to proceed?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:872
+#, c-format
+msgid "Remote command received (%s ...)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1033
+msgid "File download failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1035
+msgid "File download from %1 failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1044
+msgid "File download successfully complete"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1046
+msgid "File download from %1 successfully complete"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1066
+msgid "Avatar download failed for %Q!%Q@%Q and url %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2014
+#, c-format
+msgid "The commandline for media type '%s' seems to be broken"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2018
+#, c-format
+msgid "Media type of file %s matched to '%s' but no commandline specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2023
+#, c-format
+msgid "No idea on how to play file %s (no media type match)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:39
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:48
+#, c-format
+msgid "[SSL]: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:40
+#, c-format
+msgid "[SSL]: Cipher: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:41
+#, c-format
+msgid "[SSL]: Version: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:42
+#, c-format
+msgid "[SSL]: Bits: %c%d (%d used)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:49
+#, c-format
+msgid "[SSL]: Version: %c%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:50
+#, c-format
+msgid "[SSL]: Serial number: %c%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:51
+msgid "[SSL]: Subject:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:59
+#, c-format
+msgid "[SSL]: Common name: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:60
+#, c-format
+msgid "[SSL]: Organization: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:61
+#, c-format
+msgid "[SSL]: Organizational unit: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:62
+#, c-format
+msgid "[SSL]: Country: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:63
+#, c-format
+msgid "[SSL]: State or province: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:64
+#, c-format
+msgid "[SSL]: Locality: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:58
+msgid "[SSL]: Issuer:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:65
+#, c-format
+msgid "[SSL]: Public key: %c%s (%d bits)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:66
+#, c-format
+msgid "[SSL]: Signature type: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:73
+#, c-format
+msgid "[SSL]: Signature contents: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:82
+msgid "Peer X509 certificate"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:85
+msgid "[SSL]: The peer didn't provide a certificate"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1219
+msgid "Current transmission cipher"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:92
+msgid "[SSL]: Can't find out the current cipher info"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:113
+#, c-format
+msgid "[%s]: [SSL]: Using certificate file %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:116
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the certificate file %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:146
+#, c-format
+msgid "[%s]: [SSL ERROR]: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:136
+#, c-format
+msgid "[%s]: [SSL]: Using private key file %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:139
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the private key file %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:375
+msgid "Reconnect attempt aborted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:443
+msgid ""
+"This is the first connection in this IRC context: using the global server "
+"setting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:483
+msgid ""
+"No servers available. Check the options dialog or use the /SERVER command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:491
+msgid ""
+"Ooops.. you've hit a bug in the servers database... I have found a server "
+"but not a network..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:504
+msgid "No proxy hosts available, resuming direct connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:582
+#, c-format
+msgid "Connection attempt failed [%s]"
+msgstr "Connection attempt failed [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:600
+#, c-format
+msgid "Will attempt to reconnect in %d seconds"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:604
+#, c-format
+msgid "%d"
+msgstr "%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:606
+#, c-format
+msgid "%d of %d"
+msgstr "%d od %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:633
+#, c-format
+msgid "Maximum number of reconnect attempts reached (%d): giving up"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:647
+msgid ""
+"The connection attempt failed while using a cached IP address for the "
+"current server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:648
+msgid "The problem *might* be caused by an updated DNS entry"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:649
+msgid "Try reconnecting with caching disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:673
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:382
+msgid "%Q established [%s (%s:%u)]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Secure connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:779
+#, c-format
+msgid "Connection terminated [%s (%s:%u)]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:791
+msgid "The connection terminated unexpectedly. Trying to reconnect..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:874
+msgid "Sent QUIT, waiting for the server to close the connection..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:685
+msgid "Normal text"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:686
+msgid "Selection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:687
+msgid "Highlighted text"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:688
+msgid "URL foreground"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:689
+msgid "Link overlay foreground"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:690
+msgid "Parser error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:691
+msgid "Parser warning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:692
+msgid "Host lookup result"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:693
+msgid "Socket message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:694
+msgid "Socket warning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:695
+msgid "Socket error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:696
+msgid "System error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:697
+msgid "Raw data to server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:698
+msgid "Connection status"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:699
+msgid "System warning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:700
+msgid "System message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:701
+msgid "Unhandled server reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:702
+msgid "Server information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:703
+msgid "Server Message of the Day"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:704
+msgid "Server ping"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:705
+msgid "Join message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:706
+msgid "Part message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:707
+msgid "Unrecognized/broken message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:708
+msgid "Topic message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:709
+msgid "Own private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:710
+msgid "Channel private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:711
+msgid "Query private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:712
+msgid "CTCP reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:713
+msgid "CTCP request replied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:714
+msgid "CTCP request ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:715
+msgid "CTCP request flood warning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:716
+msgid "CTCP request unknown"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:717
+msgid "User action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:718
+msgid "Avatar change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:719
+msgid "Quit message"
+msgstr "Quit poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:720
+msgid "Split message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:721
+msgid "Quit on netsplit message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:722
+msgid "Nick changes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:723
+msgid "+o mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:724
+msgid "-o mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:725
+msgid "+v mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:726
+msgid "-v mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:727
+msgid "Multiple user mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:728
+msgid "Channel key change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:729
+msgid "Channel limit change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:730
+msgid "+b mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:731
+msgid "-b mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:732
+msgid "+e mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:733
+msgid "-e mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:734
+msgid "+I mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:735
+msgid "-I mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:736
+msgid "Multiple channel mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:737
+msgid "Who reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:738
+msgid "DCC request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:739
+msgid "DCC message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:740
+msgid "DCC error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:741
+msgid "Nickname problem"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:742
+msgid "Whois user reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:743
+msgid "Whois channels reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:744
+msgid "Whois idle reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:745
+msgid "Whois server reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:746
+msgid "Whois other reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:747
+msgid "Channel creation time reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:748
+msgid "Notify list joins"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:749
+msgid "Notify list leaves"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:750
+msgid "Own encrypted private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:751
+msgid "Channel encrypted private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:752
+msgid "Query encrypted private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:753
+msgid "DCC chat message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:754
+msgid "Encrypted DCC chat message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:755
+msgid "Login operations completed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:756
+msgid "Kick action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:757
+msgid "Links reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:758
+msgid "Spam report"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:759
+msgid "ICQ message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:760
+msgid "ICQ user-message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:761
+msgid "Outgoing ICQ user-message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:762
+msgid "Channel notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:763
+msgid "Encrypted channel notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:764
+msgid "Query notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:765
+msgid "Encrypted query notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:766
+msgid "Server notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:767
+msgid "Halfop mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:768
+msgid "Unknown CTCP reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:769
+msgid "NickServ message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:770
+msgid "ChanServ message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:771
+msgid "Away message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:772
+msgid "Ident message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:773
+msgid "Channel list message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:774
+msgid "Half-deop mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:775
+msgid "Invite message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:776
+msgid "Multimedia message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:777
+msgid "Query trace message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:778
+msgid "Wallops message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:779
+msgid "Join error message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:780
+msgid "Broadcast private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:781
+msgid "Broadcast notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:782
+msgid "Am kicked"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:783
+msgid "Am op'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:784
+msgid "Am voiced"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:785
+msgid "Am deop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:786
+msgid "Am devoiced"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:787
+msgid "Am halfop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:788
+msgid "Am de-halfop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:789
+msgid "Ban matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:790
+msgid "Unban matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:791
+msgid "Ban exception matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:792
+msgid "Ban unexception matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:793
+msgid "Invite exception matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:794
+msgid "Invite unexception matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:795
+msgid "Ignored user message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:796
+msgid "Server statistics"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:797
+msgid "SSL message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:108
+msgid "Search"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:799
+msgid "Generic success"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:800
+msgid "Generic status"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:801
+msgid "Generic verbose message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:802
+msgid "Generic warning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:803
+msgid "Generic error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:804
+msgid "Generic critical error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:805
+msgid "Chan admin status set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:806
+msgid "Chan admin status unset"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:807
+msgid "Own chan admin status set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:808
+msgid "Own chan admin status unset"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:809
+msgid "Userop mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:810
+msgid "User-deop mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:811
+msgid "Am userop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:812
+msgid "Am de-userop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:813
+msgid "Verbose/Debug"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:814
+msgid "Chan owner status set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:815
+msgid "Chan owner status unset"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:816
+msgid "Own chan owner status set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:817
+msgid "Own chan owner status unset"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:818
+msgid "Server error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:22
+msgid "Help"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:820
+msgid "Text Encoding Server message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:826
+msgid "BitTorrent message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:970
+msgid "Missing absolute directory for the theme information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:978
+msgid "Failed to create the theme directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1061
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1096
+msgid "Failed to save one of the theme images"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1074
+msgid "Failed to create the theme subdirectory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1213
+msgid "Boolean options (1/0)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1214
+msgid "Rectangle options (x,y,width,height)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1215
+msgid "String options (string value)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1216
+msgid "Color options (#RRGGBB)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1217
+msgid "Mirccolor options (#RRGGBB)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1218
+msgid "Irc context color options (#RRGGBB)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1219
+msgid "Pixmap options (image path)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1220
+msgid "Unsigned integer options (unsigned integer constant)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1221
+msgid "Font options (family,pointsize,style,charset,weight,flags (biusf))"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1222
+msgid "Message color options (image_id,foreground,background,logFlag (0/1))"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1223
+msgid "String list options (comma separated list of strings)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC Context related actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Settings"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Actions related to settings"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:30
+msgid "Scripting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+msgid "Scripting related actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "GUI"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "Actions related to the Graphic User Interface"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:77
+msgid "Channel"
+msgstr "Sobe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+msgid "IRC Channel related actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Tools"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Actions that will appear in the \"Tools\" menu"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:157
+msgid "Sending out PING based lag probe"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:167
+msgid "Sending out CTCP based lag probe"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:188
+#, c-format
+msgid "Registered lag check with reliability %u (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:220
+#, c-format
+msgid "Lag check completed (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:259
+#, c-format
+msgid "Lag check aborted (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:143
+msgid "Hostname resolution aborted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:156
+msgid "Attempting %Q to %Q (%Q) on port %u"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "secure connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:165
+#, c-format
+msgid "Attempting to 'bounce' on proxy %s on port %u (protocol %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:194
+#, c-format
+msgid "Using cached proxy IP address (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:237
+msgid "Unable to look up the IRC proxy hostname: Can't start the DNS slave"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:265
+msgid "Resuming direct server connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:248
+#, c-format
+msgid "Looking up the proxy hostname (%s)..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:261
+msgid "Can't find the proxy IP address: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:271
+msgid "Proxy hostname resolved to %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:284
+msgid "Proxy %Q has a nickname: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:322
+#, c-format
+msgid "Using cached server IP address (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:354
+msgid "Unable to look up the server hostname: Can't start the DNS slave"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:359
+#, c-format
+msgid "Looking up the server hostname (%s)..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:373
+msgid "Can't find the server IP address: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:380
+msgid "If this server is an IPv6 one, try /server -i %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:390
+msgid "Server hostname resolved to %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:400
+msgid "Real hostname for %Q is %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:414
+msgid "Server %Q has a nickname: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:468
+msgid "The specified bind address (%Q) is not valid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:473
+msgid ""
+"The specified bind address (%Q) is not valid (the interface it refers to "
+"might be down)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:493
+#, c-format
+msgid "The system-wide IPv6 bind address (%s) is not valid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:500
+#, c-format
+msgid ""
+"The system-wide IPv6 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:522
+#, c-format
+msgid "The system-wide IPv4 bind address (%s) is not valid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:529
+#, c-format
+msgid ""
+"The system-wide IPv4 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:230
+msgid "Channel operators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:231
+msgid "Voiced users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:232
+msgid "Half-operators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:233
+msgid "Ban masks"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:234
+msgid "Color free (no ANSI colors)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:235
+msgid "Ban exception masks"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:236
+msgid "Invite exception masks or forbid /INVITE"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:237
+msgid "Secret"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:238
+msgid "Private"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:239
+msgid "Topic change restricted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:240
+msgid "Invite only"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:241
+msgid "No external messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:242
+msgid "Anonymous or protected user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:243
+msgid "Quiet or channel owner"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:244
+msgid "Limited number of users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:245
+msgid "Key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:246
+msgid "Moderated"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:247
+msgid "Registered"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:248
+msgid "Censor swear words"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:249
+msgid "Impossible to speak and change nick if not authenticated with NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:250
+msgid "Impossible to change nick if not authenticated with NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:251
+msgid "Only registered nicks can join"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:252
+msgid "No kicks able (unless U-Line)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:253
+msgid "IRC-Op only channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:254
+msgid "Server/Network/Tech Admin only channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:255
+msgid "Forbid /KNOCK"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:256
+msgid "Strip colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:257
+msgid "Redirect on channel full"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:258
+msgid "Forbid channel CTCPs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:259
+msgid "User-operators OR Auditorium: /NAMES and /WHO show only ops"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:260
+msgid "Only 7-bit letters in nicknames allowed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:261
+msgid "Impossible to use both 7-bit and 8-bit letters in nicknames"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:270
+msgid "o: IRC operator (OPER)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:271
+msgid "O: Local IRC operator (LOCOP)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:272
+msgid "i: Invisible"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:273
+msgid "w: Recipient for WALLOPS messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:274
+msgid ""
+"r: User with restricted connection (or recipient for messages about rejected "
+"bots)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:275
+msgid "s: Recipient for server notices"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:276
+msgid "z: Recipient for oper wallop messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:277
+msgid "c: Recipient for cconn messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:278
+msgid "k: Recipient for server kill messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:279
+msgid "f: Recipient for full server notices"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:280
+msgid "y: Spy :)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:281
+msgid "d: Obscure 'DEBUG' flag"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:282
+msgid "n: Recipient for nick changes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:100
+msgid "Ops... for some reason the link filter object has been destroyed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:138
+msgid "Using filtered IRC protocol: Link filter is \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:143
+msgid "Failed to set up the link filter \"%Q\", will try with plain IRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:202
+msgid "Failed to start the connection: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:368
+msgid "Contacting %Q %s (%s) on port %u"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "proxy host"
+msgstr "proxy host"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "IRC server"
+msgstr "IRC server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:375
+#, c-format
+msgid "Low-level transport connection established [%s (%s:%u)]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:379
+msgid "Starting Secure Socket Layer handshake"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Secure proxy connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Proxy connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:387
+msgid "Negotiating relay information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:390
+msgid "Sent connection request, waiting for acknowledgement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:393
+msgid "Sent target host data, waiting for acknowledgement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:396
+msgid "Sent auth method request, waiting for acknowledgement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:399
+msgid "Sent username and password, waiting for acknowledgement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:402
+msgid "Sent connection request, waiting for \"HTTP 200\" acknowledgement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:176
+msgid "[SSL]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:181
+msgid "[SSL ERROR]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:190
+msgid "[PROXY]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:200
+msgid "[PROXY ERROR]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:207
+msgid "[SOCKET]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:212
+msgid "[SOCKET ERROR]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:218
+msgid "[SOCKET WARNING]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:337
+#, c-format
+msgid "Binding to local address %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:341
+#, c-format
+msgid ""
+"Binding to local address %s failed: the kernel will choose the correct "
+"interface"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:637
+msgid "Using HTTP protocol."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:683
+msgid "Using SOCKSV4 protocol."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:756
+msgid "Using SOCKSv5 protocol."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:771
+msgid "We can accept auth method 0 (no auth)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:779
+msgid "We can accept auth method 0 (no auth) or 2 (user/pass)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:958
+msgid "Proxy response: auth OK: access granted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:993
+msgid "Proxy response: Auth method OK: using method 0 (no auth)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1000
+msgid "Proxy response: Auth method OK: using method 2 (user/pass)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1056
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1113
+msgid "Proxy response: target data OK: request granted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1153
+msgid "Proxy response: "
+msgstr "Proxy odgovor:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1164
+msgid "Proxy said something about: \n"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1205
+msgid "Server X509 certificate"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1209
+msgid "The server didn't provide a certificate"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1223
+msgid "Unable to determine the current cipher"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1768
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1788
+msgid "Partial socket write: packet broken into smaller pieces."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:60
+msgid "The theme information file does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:71
+msgid ""
+"This KVIrc executable is too old for this theme (minimum theme engine "
+"version required is %Q while this theme engine has version %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:80
+msgid "Theme information file is not valid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:248
+msgid "Failed to load the specified screenshot image"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:257
+msgid "Invalid option"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:265
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:293
+msgid "Failed to save the screenshot image"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:117
+msgid "Configure Servers..."
+msgstr "Podešavanje Servera..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:118
+msgid "Allows you to configure the servers and eventually to connect to them"
+msgstr "Omogućuje vam podešavanje servera i eventualno spajanje na njih"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:128
+msgid "Manage Addons..."
+msgstr "Upravljanje Dodacima..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:129
+msgid "Allows you to manage the script-based addons"
+msgstr "Omogućuje vam upravljanje skript-baziranih dodataka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:139
+msgid "Configure Registered Users..."
+msgstr "Podešavanje Registriranih Korisnika..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:140
+msgid "Shows a dialog that allows editing the registered user entries"
+msgstr ""
+"Prikazuje dijaloški okvir koji omogučuje uređivanje podataka registriranih "
+"korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:150
+msgid "Configure Identity..."
+msgstr "Podešavanje Identiteta..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:151
+msgid "Allows you to configure nickname, username, avatar etc..."
+msgstr "Omogućuje vam podešavanje nadimka, korisničkog imena, avatra,..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:161
+msgid "Show SocketSpy..."
+msgstr "Prikaži Socket Nadzor..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:162
+msgid "Shows a window that allows monitoring the socket traffic"
+msgstr "Prikazuje prozor koji omogućava pregled socket prometa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:172
+msgid "Get Network Links"
+msgstr "Dohvati Linkove Mreže"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:173
+msgid "Shows a window that allows viewing the network links"
+msgstr "Prikazuje prozor koji omogučava pregled linkova mreže"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:183
+msgid "Get Channel List"
+msgstr "Dohvati Popis Soba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:184
+msgid "Shows a window that allows listing the network channels"
+msgstr "Prikazuje prozor koji omogućava popis soba mreže"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:194
+msgid "Configure KVIrc..."
+msgstr "Podešavanje KVIrc-a..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:195
+msgid "Shows the general options dialog"
+msgstr "Prikazuje dijaloški okvir za glavne opcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:205
+msgid "Configure Theme..."
+msgstr "Podešavanje Izgleda..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:206
+msgid "Shows the theme options dialog"
+msgstr "Prikazuje dijaloški okvir za uređivanje tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:216
+msgid "Manage Themes..."
+msgstr "Upravljanje Izgledima..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:217
+msgid "Allows you to manage the themes"
+msgstr "Omogućuje vam upravljanje izgledima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:227
+msgid "Customize Toolbars..."
+msgstr "Podešavanje Alatne Trake..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:228
+msgid "Shows a window that allows editing script toolbars"
+msgstr "Prikazuje prozor za editiranje skript alatnih traka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:239
+msgid "Join Channels..."
+msgstr "Uđi u sobe..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:240
+msgid "Shows a dialog that allows you joing channels"
+msgstr "Prikazuje dijaloški okvir za ulazak u sobe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:251
+msgid "Edit Actions..."
+msgstr "Uredi Akcije..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:252
+msgid "Shows a window that allows editing actions"
+msgstr "Prikazuje prozor koji omogućuje uređivanje akcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:262
+msgid "Edit Aliases..."
+msgstr "Uredi Aliase..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:263
+msgid "Shows a window that allows editing aliases"
+msgstr "Prikazuje prozor koji omogućuje uređivanje aliasa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:273
+msgid "Edit Events..."
+msgstr "Uredi Događaje..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:274
+msgid "Shows a window that allows editing script events"
+msgstr "Prikazuje prozor koji omogućuje uređivanje skript događaja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:284
+msgid "Edit Popups..."
+msgstr "Uredi Popup-e..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:285
+msgid "Shows a window that allows editing popup menus"
+msgstr "Prikazuje prozor koji omogućuje uređivanje popup izbornika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:295
+msgid "Edit Raw Events..."
+msgstr "Uredi Raw Događaje..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:296
+msgid "Shows a window that allows editing raw scripting events"
+msgstr "Prikazuje prozor koji omogućuje uređivanje raw skriptiranih događaja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:306
+msgid "New Script Tester"
+msgstr "Novi Tester Skripti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:307
+msgid "Creates an embedded editor for long scripts"
+msgstr "Kreira ugrađeni editor za duge skripte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:317
+msgid "Execute Script..."
+msgstr "Izvrši Skriptu..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:318
+msgid "Allows executing a KVS script from file"
+msgstr "Dopušta izvršavanje KVS skripte iz datoteke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:328
+msgid "Help Index"
+msgstr "Indeks Pomoći"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:329
+msgid "Shows the documentation index"
+msgstr "Prikazuje indeks dokumentacije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:340
+msgid "Allows subscribing to the KVIrc mailing list"
+msgstr "Dopušta pretplaćivanje na KVIrc mailing listu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:350
+msgid "KVIrc WWW"
+msgstr "KVIrc WWW"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:351
+msgid "Opens the KVIrc homepage"
+msgstr "Otvara KVIrc glavnu stranicu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:361
+msgid "KVIrc Russian WWW"
+msgstr "KVIrc Russian WWW"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:362
+msgid "Opens the KVIrc homepage in russian"
+msgstr "Opens the KVIrc homepage in russian"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:372
+msgid "Acquire Screenshot"
+msgstr "Napravi Screenshot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:373
+msgid "Acquires a Screenshot of the KVIrc main window"
+msgstr "Daje screenshot KVIrc glavnog prozora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:385
+msgid "Cascade windows"
+msgstr "Kaskadno posloži prozore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:386
+msgid "Arranges the MDI windows in a maximized-cascade fashion"
+msgstr "Sortira MDI prozore u maksimizirano-kaskadnom stilu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:397
+msgid "Tile windows"
+msgstr "Poploči prozore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:398
+msgid "Tiles the MDI windows with the currently selected tile method"
+msgstr "Popločava MIDI prozore trenutno odabranom metodom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:409
+msgid "Minimize all windows"
+msgstr "Smanji sve prozore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:410
+msgid "Minimized all the currently visible MDI windows"
+msgstr "Smanjuje sve trenutno vidljive MDI prozore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:421
+msgid "New IRC Context"
+msgstr "Novi IRC Kontekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:422
+msgid "Creates a new IRC context console"
+msgstr "Kreira novu IRC kontekst konzolu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:433
+msgid "Quit KVIrc"
+msgstr "Izađi iz KVIrc-a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:434
+msgid "Quits KVIrc closing all the current connections"
+msgstr "Izlazi iz KVIrc-a zatvarajući sve trenutne konekcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:448
+msgid "IRC Context Display"
+msgstr "IRC Kontekst Ekran"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:449
+msgid "Shows a small display with IRC context informations"
+msgstr "Prikazuje mali ekran s IRC kontekst informacijama"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:520
+msgid "Acts as a separator for other items: performs no action"
+msgstr "Ponaša se kao razdvojnik za elemente: ne obavlja nikakvu akciju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:554
+msgid "Connect/Disconnect"
+msgstr "Spoji/Odspoji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:555
+msgid ""
+"Allows you to connect to a server or to terminate the current connection"
+msgstr "Omogućuje vam spajanje ili odspajanje trenutne konekcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:628
+msgid "Connect"
+msgstr "Spoji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:629
+msgid "Abort Connection"
+msgstr "Prekini Spajanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:790
+msgid "Join Channel"
+msgstr "Uđi u Sobu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:791
+msgid "Shows a popup menu that allows quickly selecting a channel to join"
+msgstr "Prikazuje popup izbornik za brzi odabir kanala za ulazak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:851
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:863
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:896
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:907
+msgid "Other..."
+msgstr "Ostalo..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:834
+msgid "Change Nickname"
+msgstr "Promijeni Nadimak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:835
+msgid "Shows a popup menu that allows quickly changing the nickname"
+msgstr "Prikazuje popup izbornik koji omogućuje brzu promjenu nadimka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:883
+msgid "Connect To"
+msgstr "Spoji se na"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:884
+msgid "Shows a popup menu that allows quickly connecting to a server"
+msgstr "Prikazuje popup izbornik koji omogućuje brzu konekciju na server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:929
+msgid "User Mode"
+msgstr "Korisnički Modovi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:930
+msgid "Shows a popup menu that allows quickly changing user modes"
+msgstr ""
+"Prikazuje popup izbornik koji omogućuje brzu izmjenu korisničkih modova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:947
+msgid "Wallops (+w)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:949
+msgid "Server Notices (+s)"
+msgstr "Obavijesti Servera (s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:951
+msgid "Invisible (+i)"
+msgstr "Nevidljiv (+i)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:997
+msgid "Away/Back"
+msgstr "Away/Back"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:998
+msgid "Allows entering and leaving away state"
+msgstr "Omogućuje ulazak i izlazak iz statusa odsutnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1065
+msgid "Enter Away Mode"
+msgstr "Idi Away"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1066
+msgid "Leave Away Mode"
+msgstr "Povratak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1135
+msgid "Irc Tools"
+msgstr "Irc Alati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1136
+msgid "Shows a popup menu with some IRC Tools"
+msgstr "Prikazuje popup izbornik s IRC Alatima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1171
+msgid "Irc Actions"
+msgstr "Irc Akcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1172
+msgid "Shows a popup menu with some IRC Actions"
+msgstr "Prikazuje popup izbornik s IRC Akcijama"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:412
+msgid "KVIrc KVS Script"
+msgstr "KVIrc KVS Skripta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:174
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:420
+msgid "Run KVS Script"
+msgstr "Pokreni KVS Skriptu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:284
+msgid "URL:IRC Protocol"
+msgstr "URL:IRC Protokol"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:383
+msgid "Open with KVIrc"
+msgstr "Otvori s KVIrc-om"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:436
+msgid "KVIrc Configuration File"
+msgstr "KVIrc Konfiguracijska Datoteka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:453
+msgid "KVIrc Theme Package"
+msgstr "KVIrc Paket Teme"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:461
+msgid "Install Theme Package"
+msgstr "Instaliraj KVIrc Paket Teme"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:478
+msgid "KVIrc Addon Package"
+msgstr "KVIrc Paket Dodatka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:486
+msgid "Install Package"
+msgstr "Instaliraj Paket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:749
+#, c-format
+msgid ""
+"Ops...it looks like I can't load modules on this sytem.\n"
+"I have been looking for the %s library but I haven't been able to load it\n"
+"due to the following error: \"%s\"\n"
+"Aborting."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:762
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_begin\" function.\n"
+"Aborting!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:776
+msgid "Setup aborted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:801
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_finish\" function.\n"
+"Trying to continue anyway..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:186
+msgid "%Q is on IRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:248
+msgid "%Q has left IRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:368
+msgid "Notify list: No users to check for, quitting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:414
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (15 sec)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:428
+msgid "Notify list: Notify list empty, quitting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:455
+#, c-format
+msgid ""
+"Notify list: ISON delay (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:491
+msgid "Notify list: Checking for: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:535
+msgid ""
+"Notify list: Hey! You've used ISON behind my back? (I might be confused "
+"now...)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:682
+msgid "registration mask changed, or nickname is being used by someone else"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:686
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (registration mask does not match, or nickname is being used "
+"by someone else)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:691
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? "
+"(restarting)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:698
+msgid ""
+"Notify list: Unexpected inconsistency, expected \r!n\r%Q\r in the registered "
+"user DB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:712
+#, c-format
+msgid ""
+"Notify list: USERHOST delay (%d sec) is too short, resetting to something "
+"more reasonable (5 sec)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:726
+msgid "Notify list: Unexpected inconsistency, userhost list is empty!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:761
+msgid "Notify list: Checking userhost for: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:831
+msgid ""
+"Notify list: Hey! You've used USERHOST behind my back? (I might be confused "
+"now...)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:836
+#, c-format
+msgid "Notify list: Broken USERHOST reply from the server? (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:860
+msgid ""
+"Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST reply "
+"was received, will recheck in the next loop"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:931
+msgid "Starting notify list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:936
+msgid "No users in the notify list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:958
+msgid "Notify list: Checking for:%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1013
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1139
+msgid "Notify list: Adding watch entries for%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1171
+msgid "watch entry listing requested by user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1175
+msgid "possible watch list desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1185
+msgid "registration mask changed or desync with the watch service"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1190
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (watch: registration mask does not match, or nickname is "
+"being used by someone else)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1197
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? (watch: "
+"restarting)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1207
+msgid "watch entry added by user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1245
+msgid "removed from watch list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1248
+msgid "Notify list: Stopped watching for \r!n\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1258
+msgid "watch"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1264
+msgid "Notify list: \r!n\r%Q\r is offline (watch)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1267
+msgid "unmatched watch list entry"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:80
+msgid "commandline::userfriendly"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:94
+msgid "commandline::kvs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:127
+msgid "You are not connected to a server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_iconmanager.cpp:372
+msgid "Icon Table"
+msgstr "Tablica Ikona"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:190
+msgid "No "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:196
+msgid "This module has no version informations: refusing to load it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:204
+msgid ""
+"This module was compiled for a different KVIrc version and can't be loaded"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:232
+msgid "Failed to execute the init routine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:261
+#, c-format
+msgid "Loaded module '%s' (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:306
+#, c-format
+msgid "Unloaded module '%s'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:45
+msgid "This window has no associated irc context"
+msgstr "Ovaj prozor nema pridruženi irc kontekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:50
+#, c-format
+msgid "No such irc context (%d)"
+msgstr "Nema takvog irc konteksta (%d)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:147
+msgid "Global idle timer must be started before using $my.globalIdle function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:103
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:215
+msgid "Window %Q not found"
+msgstr "Prozor %Q nije pronađen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:108
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:220
+msgid "Missing window id after the 'w' switch"
+msgstr "Nedostaje id prozora nakon 'w' switcha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:121
+msgid "Can't log to file %Q"
+msgstr "Ne mogu evidentirati u datoteku %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:123
+msgid "This window has no logging capabilities"
+msgstr "Ovaj prozor nema mogućnost evidentiranja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:275
+msgid "Window with id '%Q' not found, returning empty string"
+msgstr "Prozor id-om '%Q' nije pronađen, vraćen prazan string"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:598
+msgid "Sound file '%Q' not found"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:604
+msgid "Unable to play sound '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:615
+msgid "Sorry , I can't find a sound system to use on this machine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:617
+#, c-format
+msgid "Sound system detected to: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:141
+msgid "Show at startup"
+msgstr "Prikaži na startupu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:154
+msgid "Did you know..."
+msgstr "Znate li..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:220
+msgid "<b>Can't find any tip... :(</b>"
+msgstr "<b>Ne mogu pronaći nijedan savjet... :(</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1544
+msgid "%Q algorytm is not supported"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1566
+msgid ""
+"KVIrc is compiled without OpenSSL support. $str.digest function disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2030
+msgid "Invalid argument for ?d escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2034
+msgid "Missing argument for ?d escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2066
+msgid "Invalid argument for ?u escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2070
+msgid "Missing argument for ?u escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2097
+msgid "Invalid argument for ?x escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2101
+msgid "Missing argument for ?x escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2128
+msgid "Invalid argument for ?X escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2132
+msgid "Missing argument for ?X escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2189
+msgid "Invalid argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2193
+msgid "Missing argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:87
+msgid "Show URL List"
+msgstr "Prikaži Popis URL-ova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:88
+msgid "Shows the URL list window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:124
+msgid "&Configure"
+msgstr "&Podesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:126
+msgid "Clo&se"
+msgstr "&Zatvori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:127
+msgid "&Module"
+msgstr "&Modul"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:130
+msgid "&Load"
+msgstr "&Učitaj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:131
+msgid "&Save"
+msgstr "Po&hrani"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:132
+msgid "&Clear"
+msgstr "&Očisti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:133
+msgid "&List"
+msgstr "Popi&s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:136
+msgid "URL"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:137
+msgid "Window"
+msgstr "Prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:138
+msgid "Count"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:139
+msgid "Timestamp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:113
+msgid "Warning - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+msgid "Select an URL."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:115
+msgid "&Remove"
+msgstr "Uklo&ni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:269
+msgid "&Find Text"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:280
+msgid "&Say to Window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+msgid "Window not found."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:349
+msgid "URL Module Configuration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:356
+msgid "Save URL list on module unload"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:360
+msgid "Save columns width on URL list close"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1187
+msgid "&Cancel"
+msgstr "Po&ništi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:432
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1328
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:458
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1186
+msgid "&OK"
+msgstr "&Uredu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:423
+msgid "Enable URL ban list"
+msgstr "Omogući URL ban popis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:435
+msgid "&Add Ban"
+msgstr "&Dodaj Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:440
+msgid "&Remove Selected"
+msgstr "&Ukloni Odabrano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "URL Ban List"
+msgstr "URL Ban Popis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+msgid "Select a ban."
+msgstr "Odaberi ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:797
+msgid "View URL list"
+msgstr "Pregledavanje popisa URL-ova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:49
+msgid "Can't find the window with id '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:53
+msgid "The specified window (%Q) is not a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:78
+msgid "Destinaion file exists: no copy made"
+msgstr "Odredišna datoteka postoji: nije napravljena kopija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:83
+msgid "Failed to copy from %Q to %Q"
+msgstr "Greška pri kopiranju iz %Q u %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:84
+msgid "Either the source doesn't exist or the destination can not be created"
+msgstr "Izvor ne postoji, ili odredište ne može biti kreirano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:203
+msgid "Failed to write to file %Q: the destination couldn't be opened"
+msgstr "Greška pri zapisivanju datoteke %Q: Odredište nije moguće otvoriti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:244
+msgid "Destination file exists: file not renamed"
+msgstr "Odredišna datoteka postoji: datoteka nije preimenovana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:247
+msgid "Failed to rename %Q to %Q"
+msgstr "Greška pri preimenovanju %Q u %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:281
+msgid "Failed to make the directory %Q"
+msgstr "Greška pri kreiranju direktorija %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:322
+msgid "Failed to remove the file %Q"
+msgstr "Greška pri uklanjanju datoteke %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:365
+msgid "Failed to remove the directory %Q"
+msgstr "Greška pri uklanjanju direktorija %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:482
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:628
+msgid "The specified directory does not exist '%Q'"
+msgstr "Navedeni direktorij ne postoji '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:730
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:824
+msgid "Can't open the file \"%Q\" for reading"
+msgstr "Ne mogu otvoriti datoteku \"%Q\" za čitanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:746
+msgid "Read error for file %Q"
+msgstr "Greška pri čitanju datoteke %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:754
+msgid ""
+"Read error for file %Q (have been unable to read the requested size in 1000 "
+"retries)"
+msgstr ""
+"Greška pri čitanju datoteke %Q (nije bilo moguće čitati zatraženu veličinu u "
+"1000 pokušaja)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:920
+msgid "Can't open the file \"%Q\" for writing"
+msgstr "Ne mogu otvoriti datoteku \"%Q\" za pisanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/index.cpp:473
+msgid "Untitled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+msgid "Indexing help files"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:87
+msgid "Index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:99
+msgid "Refresh index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:211
+msgid "Full Text Search"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:203
+msgid "Using a wildcard within phrases is not allowed."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:212
+msgid "The closing quotation mark is missing."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:312
+msgid "Help Browser"
+msgstr "Preglednik Pomoći"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:201
+msgid "Request List"
+msgstr "Zatraži Popis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:207
+msgid "Stop list download"
+msgstr "Zaustavi preuzimanje popisa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:211
+msgid ""
+"<center><b>/LIST command parameters:</b><br>Many servers accept special "
+"parameters that allow you to filter the returned entries.<br>Commonly, "
+"masked channel names (*kvirc*) are accepted as parameters, as well as "
+"strings like <b>c&lt;n</b> or <b>c&gt;n</b> where <b>n</b> is the minimum or "
+"maximum of users on the channel.</center>"
+msgstr ""
+"<center><b>/LIST komandni parametri:</b><br>Mnogi serveri prihvaćaju "
+"specijalne parametre koji omogućuju filtriranje vraćenih unosa.<br>Obično "
+"maskirani kanali (*kvirc*) su prihvaćeni kao parametri, kao i stringovi "
+"poput <b>c&lt;n</b> ili <b>c&gt;n</b> gdje <b>n</b> je minimum ili maksimum "
+"korisnika u sobi.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:220
+msgid "Users"
+msgstr "Korisnici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:221
+msgid "Topic"
+msgstr "Tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:262
+msgid "Sent list request, waiting for reply..."
+msgstr "Poslan zahtjev za popisom, čekam odgovor..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:265
+msgid "Cannot request list: No active connection"
+msgstr "Ne mogu zatražiti popis: Nema aktivne konekcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:389
+msgid "Stopping the list download..."
+msgstr "Zaustavljanje preuzimanja popisa..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:276
+msgid "Cannot stop list download, no active connection."
+msgstr "Ne mogu zaustaviti preuzimanje popisa, nema aktivne konekcije."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:125
+#, c-format
+msgid "Connected to %s (%s)"
+msgstr "Spojen kao %s (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:293
+msgid "List cannot be requested: Not connected to a server"
+msgstr "Popis ne može biti zatražen: Bez spoja na server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:316
+#, c-format
+msgid "Channel List [IRC Context %u]"
+msgstr "Popis Soba [IRC Kontekst %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:319
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel List</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Popis Soba</b></font> <font color=\"%s\">[IRC "
+"Kontekst %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:326
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel list</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Popis Soba</b></font> <font color=\"%s\">[IRC "
+"Kontekst%u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:342
+msgid "You cannot export an empty list"
+msgstr "Ne možete izvesti prazan popis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:350
+msgid "Channel list for %Q - %Q"
+msgstr "Popis soba za %Q - %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:353
+msgid "Channel list"
+msgstr "Popis soba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:382
+msgid "Choose filename"
+msgstr "Odaberi datoteku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:356
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:383
+msgid "Configuration files (*.kvc)"
+msgstr "Konfiguracijske datoteke (*.kvc)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:398
+msgid "Reset"
+msgstr "Poništi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:435
+msgid "Channels list download finished"
+msgstr "Preuzimanje popisa soba dovršeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:472
+msgid "Processing list: %Q"
+msgstr "Obrada popisa: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/libkvilist.cpp:63
+msgid "List window alread open for this IRC context"
+msgstr "Popisni prozor je već otvoren za ovaj IRC kontekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:70
+msgid "Terminal"
+msgstr "Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:73
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:77
+#, c-format
+msgid "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+msgstr "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:59
+msgid "Terminal emulator"
+msgstr "Terminal emulator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:63
+msgid "Close this window"
+msgstr "Zatvori ovaj prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:91
+msgid "Can't create the terminal emulation part"
+msgstr "Ne mogu kreirati terminal emulacijski dio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:96
+msgid "Can't retrieve the terminal emulation factory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:95
+msgid "KVIrc"
+msgstr "KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:98
+msgid "Context"
+msgstr "Kontekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:155
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:100
+msgid "Away"
+msgstr "Away"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:102
+msgid "&Configure KVIrc..."
+msgstr "&Podešavanje KVIrc-a..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:104
+msgid "&About KVIrc"
+msgstr "&O KVIrcu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:109
+msgid "Un&dock"
+msgstr "Un&dock"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:168
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:112
+msgid "Ctrl+Q"
+msgstr "Ctrl+Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:143
+msgid "Nothing is happening..."
+msgstr "Ništa se ne događa..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:285
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:144
+msgid "Just idling..."
+msgstr "Samo mirovanje..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:145
+msgid "Dum de dum de dum..."
+msgstr "Dum de dum de dum..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:146
+msgid "Hey man... do something!"
+msgstr "Hej čovječe.... radi nešto!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:147
+msgid "Umpf!"
+msgstr "Umpf!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:148
+msgid "Silence speaking"
+msgstr "Tišina govori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:149
+msgid "Are ya here?"
+msgstr "Jesi li ovdje?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:150
+msgid "The world has stopped?"
+msgstr "Svijet je stao?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:151
+msgid "Everything is all right"
+msgstr "Sve je uredu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:152
+msgid "idle()"
+msgstr "idle()"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:153
+msgid "It's so cold here..."
+msgstr "Ovdje je tako hladno..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:295
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:154
+msgid "Do not disturb... watching TV"
+msgstr "Ne ometaj... gledam TV"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:155
+msgid "Just vegetating"
+msgstr "Samo vegetiram"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:156
+msgid "Hey... are ya sure that your network is up?"
+msgstr "Hej... jesi li sigur(an/na) da radi mreža?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:298
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:157
+msgid "Seems like the world has stopped spinning"
+msgstr "Čini se da se svijet prestao vrtjeti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:299
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:158
+msgid "This silence is freaking me out!"
+msgstr "Ova tišina me izluđuje!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:300
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:159
+msgid "Mieeeeeowww!"
+msgstr "Mijauuuuuuuuuuuuuuuuuu!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:301
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:160
+msgid "idle idle idle idle!"
+msgstr "idle idle idle idle!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Hide Window"
+msgstr "Sakrij Prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Show Window"
+msgstr "Pokaži Prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:428
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:260
+msgid "Away on all"
+msgstr "Odsutan na svima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:263
+msgid "Back on all"
+msgstr "Prisut[an/na] na svima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:450
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:282
+msgid "Back on %1"
+msgstr "Prisut[an/na] na %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:453
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:285
+msgid "Away on %1"
+msgstr "Odsut[an/na] na %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1238
+msgid "Alias"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1217
+msgid "No item selected"
+msgstr "Nijedna stavka nije odabrana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:232
+msgid "Rename"
+msgstr "Preimenuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:236
+msgid "Edit the alias or namespace name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+msgid "Add Alias"
+msgstr "Dodaj Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:429
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Add Namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:440
+msgid "Remove Selected"
+msgstr "Ukloni Odabrano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:449
+msgid "Export Selected..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:455
+msgid "Export Selected in singles files..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:462
+msgid "Export All..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:470
+msgid "Find In Aliases..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:476
+msgid "Collapse All Namespaces"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:508
+msgid "Find In Aliases"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:509
+msgid ""
+"Please enter the text to be searched for. The matching aliases will be "
+"highlighted."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "Alias Export"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+msgid "There is not selection!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:615
+msgid "The file \"%Q\" exists. Do you want to replace it ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+msgid "Replace file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+msgid "Yes to All"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "There exported file would be empty: cowardly refusing to write it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:786
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:411
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1133
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:398
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:745
+msgid "Choose a Filename - KVIrc"
+msgstr "Odaberi ime Datoteke - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Write Failed - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+msgid "Unable to write to the alias file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:793
+msgid "Do you really want to remove the alias \"%Q\" ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:795
+msgid "Do you really want to remove the namespace \"%Q\" ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:797
+msgid "Please note that all the children items will be deleted too."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+msgid "Remove item"
+msgstr "Ukloni element"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:875
+msgid "Missing Alias Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:876
+msgid "You must specify a valid name for the alias"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:877
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:890
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:904
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:915
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:946
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:959
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:973
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1128
+msgid "Ok, Let me try again..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:888
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:902
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:913
+msgid "Bad Alias Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:944
+msgid "Missing Namespace Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:945
+msgid "You must specify a valid name for the namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:957
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:971
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:982
+msgid "Bad Namespace Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:958
+msgid ""
+"Namespace names can contain only letters, digits, underscores and '::' "
+"namespace separators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:972
+msgid ""
+"Stray ':' character in namespace name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:983
+msgid "Found an empty namespace in namespace name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+msgid "Please enter the name for the new alias"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Please enter the name for the new namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+msgid "Rename Alias"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+msgid "Please enter the new name for the alias"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Rename Namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Please enter the new name for the namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1126
+msgid "Alias already exists"
+msgstr "Alias već postoji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1139
+msgid "This name is already in use. Please choose another one."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1138
+msgid "Namespace already exists"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1140
+msgid "Ok, let me try again..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1227
+msgid "Namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1332
+msgid "Alias Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:62
+msgid "Join Channels"
+msgstr "Uđi u Sobe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:183
+msgid "Name"
+msgstr "Ime"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:86
+msgid "Password"
+msgstr "Lozinka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:641
+msgid "&Join"
+msgstr "&Uđi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:108
+msgid "Show this window after connecting"
+msgstr "Pokaži ovaj prozor nakon spajanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:163
+msgid "Recent Channels"
+msgstr "Nedavne Sobe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:182
+msgid "Registered Channels"
+msgstr "Registrirane Sobe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:133
+msgid "Choose the file to share"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:178
+msgid "No such channel/netmask entry in the database"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:198
+msgid "Registered channel list:"
+msgstr "Popis Registriranih Soba:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:208
+#, c-format
+msgid "Channel: %c%s@%s"
+msgstr "Sobe: %c%s@%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:213
+#, c-format
+msgid " Property: %s=%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:220
+#, c-format
+msgid "Total %d channels"
+msgstr "Ukupno %d soba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:86
+msgid "Property Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:101
+msgid "Property"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:102
+msgid "Value"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:111
+msgid "&New"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:215
+msgid "Mask Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:219
+msgid ""
+"Insert a mask for this user.<br>It can contain the wildcard characters '*' "
+"and '?'."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:230
+msgid ""
+"<center>This the <b>nickname</b> that will match this user, default value is "
+"the registered name.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:241
+msgid ""
+"<center>This the <b>username</b> that will match this user. <b>*</b> will "
+"match any username.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:252
+msgid ""
+"<center>This the <b>hostname</b> that will match this user. <b>*</b> will "
+"match any hostname.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:333
+msgid "Registered User Entry"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:145
+msgid "Name:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:345
+msgid "Comment:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:355
+msgid "Masks:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:216
+msgid "&Add..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:377
+msgid "&Edit"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:385
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:414
+msgid "Identity"
+msgstr "Identitet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:393
+msgid "Notify when user is online"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:396
+msgid "Notify nicknames:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:401
+msgid "<center>You can enter a space separated list of nicknames.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:426
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:383
+msgid "Avatar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:433
+msgid "Use custom color in userlist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:441
+msgid "All Properties..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:448
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:231
+msgid "Properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:458
+msgid "Enable ignore for this user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:460
+msgid "Ignore features"
+msgstr "Ignoriraj mogućnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:465
+msgid "Ignore query-messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:468
+msgid "Ignore channel-messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:471
+msgid "Ignore notice-messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:474
+msgid "Ignore ctcp-messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:477
+msgid "Ignore invites"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:480
+msgid "Ignore DCCs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:486
+msgid "Ignore"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:94
+msgid "Notify disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:96
+msgid "Notify as: "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:105
+msgid "No comment set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:107
+msgid "Comment: "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:176
+msgid "Registered Users - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:317
+msgid "Flags"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:192
+msgid ""
+"<center>This is the list of registered users. KVIrc can automatically "
+"recognize and associate properties to them.<br>Use the buttons on the right "
+"to add, edit and remove entries. The \"notify\" column allows you to quickly "
+"add users to the notify list. Notify list fine-tuning can be performed by "
+"editing the entry properties.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:208
+msgid "Add (Wizard)..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:211
+msgid "Add a registered user by means of a user-friendly wizard."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:219
+msgid "Open the edit dialog to create a new user entry."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:223
+msgid "&Add Group..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:226
+msgid "Adds a new group"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:234
+msgid "Remove the currently selected entries."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:239
+msgid "&Edit..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:243
+msgid "Edit the first selected entry."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:250
+msgid "Export To..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:254
+msgid ""
+"Export the selected entries to a file.<br>All the data associated with the "
+"selected registered users will be exported.<br>You (or anyone else) can "
+"later import the entries by using the \"Import\" button."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:259
+msgid "Import From..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:262
+msgid ""
+"Import entries from a file exported earlier by the \"export\" function of "
+"this dialog."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:399
+msgid "Group name:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:442
+msgid "Move to group"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:483
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:486
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:487
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:491
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:690
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_useridentity.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:962
+msgid "Default"
+msgstr "Standardno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:674
+msgid "No entries selected."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:687
+msgid "Can't open file %Q for writing."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:772
+msgid "Can't export the registered users database: Write error."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:793
+#, c-format
+msgid "Can't open file %s for reading."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:804
+#, c-format
+msgid "The file %s doesn't appear to be a valid registered users database."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:811
+#, c-format
+msgid "The file %s contains an invalid registered users database version."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:892
+msgid "Can't import the registered users database: Read error."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:78
+msgid "User Registration Wizard - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:89
+msgid ""
+"<p>Welcome to the user registration wizard.<br>This process allows you to "
+"add an IRC user to the database and set properties for that user. KVIrc will "
+"be (hopefully) able to recognize the user, add him to the notify list, and "
+"display the associated avatar.<br><br>First of all, you must insert an "
+"<b>entry name or real name</b> for the user you're going to register. The "
+"name will be used to identify the database entry and has no specific "
+"requirements, it can be a given name, nickname, or just some text to remind "
+"you of the real person.<br>Examples: \"George W Bush\", \"Dubya\".\n"
+"</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:97
+msgid "Step 1: Entry Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:112
+msgid ""
+"<p>A registered user is identified by one or more <b>IRC masks</b>.<br>A "
+"mask must be in the following form:<br><b>nickname!username@hostname</"
+"b><br>and can contain wildcard characters '*' and '?'. Be careful in "
+"choosing the masks, as they are the only way to verify the identity of a "
+"registered user.<br><br>You can enter at most two masks here, if you wish to "
+"add more masks, use the \"<b>Edit</b>\" button in the Registered Users "
+"dialog. You must enter at least one mask.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:170
+msgid "Step 2: Mask Selection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:182
+msgid ""
+"<p>If you want to store an avatar image for this user, you can set it here. "
+"KVIrc will show the avatar in the userlist next to the user's nickname."
+"<br>An avatar can be in any supported image format (PNG is recommended). "
+"Keep in mind that KVIrc stores avatars in memory and has to resize them to "
+"fit in the userlist, thus it's better to use small, low-resolution images.</"
+"p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:190
+msgid "Store an avatar for this user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:195
+msgid "Step 3: Avatar Selection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:206
+msgid ""
+"<p>If you want to be notified when this user is online or goes offline, you "
+"must specify the list of nicknames that KVIrc will look for.<br><br>You can "
+"enter at most two nicknames here, if you wish to add more nicknames, use the "
+"\"<b>Edit</b>\" button in the Registered Users dialog.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:215
+msgid "Add this user to the notify list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:342
+msgid "Nickname:"
+msgstr "Nadimak:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:225
+msgid "Nickname 2:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:239
+msgid "Step 4: Notify List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:251
+msgid ""
+"<p>That's it. The user registration has been completed.<br><br>Click "
+"\"<b>Finish</b>\" to close this dialog.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:254
+msgid "Registration Complete"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:695
+msgid "No name specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:209
+msgid "User already registered: found exact name match"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:222
+msgid "Mask %Q is already used to identify user %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:275
+msgid "User not found (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:403
+msgid "No mask specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:524
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:708
+msgid "User %Q not found"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:355
+msgid "Mask %Q already used to identify user %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:410
+msgid "Mask %Q not found"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:701
+msgid "No property specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:808
+msgid "Registered users database dump:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:819
+msgid " User: %c%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:823
+msgid " Warning: this user has no registration masks"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:827
+msgid " Mask: %Q!%Q@%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:838
+msgid " Property: %Q=%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:841
+msgid " No properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:847
+#, c-format
+msgid "Total: %d matching users (of %d in the database)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:197
+msgid "Manage Script-Based Addons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1155
+msgid "Configure"
+msgstr "Podesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:225
+msgid "Show Help"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:231
+msgid "Uninstall"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:243
+msgid "Install Addon..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:247
+msgid "More Addons..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:333
+msgid "Do you really want to uninstall the addon \"%1\" ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+msgid "Confirm addon uninstallation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:354
+msgid "Please select the addon installation file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:144
+msgid "%cAddon id %Q, version %Q%c"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:145
+msgid "Name: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:67
+msgid "Description: %Q"
+msgstr "Opis: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:152
+#, c-format
+msgid "Total: %d addons installed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:192
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:571
+msgid "Uninstalling existing addon version %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:384
+msgid "The addon \"%1\" does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:238
+msgid "The addon \"%1\" has no configure callback set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:285
+msgid "The addon \"%1\" has no help callback set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:527
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:377
+msgid "Internal error: call a head-shrinker"
+msgstr "Interna greška: pozivanje head-shrinkera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:536
+msgid "The specified version \"%Q\" is not a valid version string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:542
+msgid "The specified KVIrc version \"%Q\" is not a valid version string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:548
+msgid ""
+"This KVIrc executable is too old to run this addon (minimum version required "
+"is %Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:553
+msgid "Attempting to register addon \"%Q\" with version %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:565
+msgid ""
+"The script addon \"%Q\" already exists with version %Q which is higher than %"
+"Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:579
+msgid "Script registration failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:584
+msgid "Script succesfully registered"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:102
+#, c-format
+msgid "%s (%s) (%s:%u)"
+msgstr "%s (%s) (%s:%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:104
+#, c-format
+msgid "%s (%s)"
+msgstr "%s (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:107
+#, c-format
+msgid "%s (%s:%u)"
+msgstr "%s (%s:%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:109
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:112
+#, c-format
+msgid "[IDENT]: %s"
+msgstr "[IDENT]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:119
+msgid "Shutting down identd service (spontaneous action)"
+msgstr "Gašenje identd servisa (spontana akcija)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:124
+#, fuzzy
+msgid "Shutting down identd service (requested action)"
+msgstr "Gašenje identd servisa (zatražena akcija)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:225
+msgid "Can't start the ident service : socket() failed"
+msgstr "Ne mogu pokrenuti ident servis : socket() neuspjeh"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:231
+msgid "Can't start the ident service : async setting failed"
+msgstr "Ne mogu pokrenuti ident : async postavke neuspjele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:237
+msgid "Can't enable the ident service : can't setup the listen address"
+msgstr "Ne mogu omogućiti ident servis : ne mogu postaviti slušnu adresu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:243
+msgid "Can't start the ident service : bind() failed"
+msgstr "Ne mogu pokrenuti ident servis : bind() neuspjeh"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:249
+msgid "Can't start the ident service : listen() failed"
+msgstr "Ne mogu pokrenuti ident servis : listen() neuspjeh"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:263
+msgid "Can't start the ident service on IpV6 : socket() failed"
+msgstr "Ne mogu pokrenuti ident servis na IpV6 : socket() neuspjeh"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:269
+msgid "Can't start the ident service on IpV6 : async setting failed"
+msgstr "Ne mogu pokrenuti ident servis na IpV6 : async postavke neuspjele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:277
+msgid "Can't enable the ident service on IpV6 : can't setup the listen address"
+msgstr ""
+"Ne mogu omogućiti ident servis na IpV6 : ne mogu postaviti slušnu adresu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:285
+msgid "Can't start the ident service on IpV6 : bind() failed"
+msgstr "Ne mogu pokrenuti ident servis na IpV6 : bind() neuspjeh"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:294
+msgid "Can't start the ident service on IpV6 : listen() failed"
+msgstr "Ne mogu omogućiti ident servis na IpV6() : listen() neuspjeh"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:310
+msgid "Starting identd service (IpV4/V6 on separate namespaces)"
+msgstr "Pokretanje identd servisa (IpV4/V6 na odijeljenim prostornim imenima)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:313
+msgid "Starting identd service (IpV4/V6 in IpV6 namespace)"
+msgstr "Pokretanje identd servisa (IpV5/V6 na IpV6 prostornom imenu)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:318
+msgid "Starting identd service (IpV4)"
+msgstr "Pokretanje identd servisa (IpV4)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:322
+msgid "Service startup (IpV4)"
+msgstr "Podizanje servisa (IpV4)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:412
+msgid "Identd accepting connection"
+msgstr "Identd prihvaćanje konekcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:435
+msgid "Identd socket error : dropping connection"
+msgstr "Identd socket greška : izbacivanje konekcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:440
+msgid "Identd connection closed by remote host"
+msgstr "Identd konekcija zatvorena od udaljenog hosta "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:461
+msgid "Identd processing request"
+msgstr "Identd obrada zahtjeva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:476
+msgid "Empty request (EOT ?)"
+msgstr "Prazan zahtjev (EOT ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:487
+msgid "Dropping connection (request too long)"
+msgstr "Gašenje konekcije (zahtjev predugačak)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:500
+msgid "Timed out while waiting for the request : dropping connection"
+msgstr "Isteklo vrijeme pri čekanju zahtjeva : gašenje konekcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/libkvilinks.cpp:74
+msgid "Links window alread open for this IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:57
+msgid "Request Links"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:70
+msgid "Link"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:71
+msgid "Hops"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:72
+msgid "Description"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:90
+msgid "(None)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:112
+msgid "Sent links request, waiting for reply..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:115
+msgid "Cannot request links: No active connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:128
+msgid "Links cannot be requested: Not connected to a server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:153
+msgid "Links for %Q [IRC Context %u]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:164
+msgid ""
+"<nobr><font color=\"%s\"><b>Links for %Q</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:194
+msgid "Received end of links."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:235
+#, c-format
+msgid ""
+"Broken link: Missing parent (%s) for %s (%d hops): %s (used /LINKS <mask> ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:238
+#, c-format
+msgid "%s: Parent link %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:242
+msgid "Warning: No root link was sent by the server, the stats may be invalid."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:278
+msgid "%c%cLinks for %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts listed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts in the network"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:282
+#, c-format
+msgid "Wildcard servers (hubs?): %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:283
+msgid "Direct links: %d (~%d.%d %)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:284
+msgid "Close links (1 <= hops <= 3): %d (~%d.%d %)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:285
+msgid "Mid-range links (4 <= hops <= 6): %d (~%d.%d %)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:286
+msgid "Distant links (7 <= hops): %d (~%d.%d %)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:287
+#, c-format
+msgid "Broken (unknown) links: %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:288
+#, c-format
+msgid "Maximum links per host: %d [%s]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:289
+#, c-format
+msgid "Total links: %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:290
+#, c-format
+msgid "Maximum hops: %d [%s]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:291
+#, c-format
+msgid "Average hops: ~%d.%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:294
+msgid "Incomplete LINKS result, no stats available"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:747
+msgid "You're not connected to a server"
+msgstr "Niste spojeni na server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:404
+#, c-format
+msgid "Processing link: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:419
+msgid "Broken message syntax, can't extract hops number, assuming 0"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:86
+msgid "< &Back"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:87
+msgid "&Next >"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:282
+msgid "Finish"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:164
+msgid ""
+"<p><h2>Welcome :)</h2>This is your first time running this version of KVIrc."
+"<br>This wizard will guide you through the few steps required to complete "
+"the setup.<br><br>If you had a previous version of KVIrc installed, no "
+"worries. You will have a chance to preserve the old configuration.</"
+"p><p>Click \"<b>Next</b>\" to proceed.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:176
+msgid "Welcome to KVIrc"
+msgstr "Dobrodošli u KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:187
+msgid ""
+"<p>All of the files in this distribution are covered by the GPL. In human "
+"terms this can be read as follows:<br><ul><li><b>KVIrc is free</b>, use it, "
+"have fun! <b>:)</b></li><li>If you use <b>any</b> part of KVIrc in your own "
+"project, you <b>must</b> release that project under the same license.</li></"
+"ul></p><p>The \"legalese\" version of the license is shown in the box below."
+"</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:203
+msgid ""
+"Oops... can't find the license file.\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:211
+msgid "Dreaded License Agreement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:215
+msgid "KVIrc Setup"
+msgstr "KVIrc Instalacija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:224
+msgid ""
+"<p>Please choose a folder for KVIrc to store its settings and other data, "
+"and another for downloaded files. Make sure that you have permission to "
+"write to both folders.<br><br>The suggested locations are fine in most "
+"cases, so if you don't know what is this about, just click \"<b>Next</b>\"."
+"<br><br>If you had a previous version of KVIrc installed, you can choose the "
+"existing directory for the settings, and your configuration will be "
+"preserved.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:234
+msgid "Application Folders"
+msgstr "Mape Aplikacije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:238
+msgid "Store configuration in folder"
+msgstr "Pohrani konfiguraciju u mapu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:239
+msgid "Use settings folder from previous installation"
+msgstr "Koristi mapu s postavkama od prethodne verzije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:251
+msgid "Use new settings folder"
+msgstr "Koristi novu mapu s postavkama"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:255
+msgid "Settings folder:"
+msgstr "Mapa s postavkama:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:281
+msgid "Download files to folder:"
+msgstr "Preuzimanje datoteka u mapu (download mapa):"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:304
+msgid "All settings in shared program folder (portable)"
+msgstr ""
+"Sve postavke u dijeljenoj programskoj mapi (za pokretanje na više računala "
+"bez instalacije, s istim postavkama)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:325
+msgid ""
+"Please choose a Nickname.<br><br>Your nickname is the name that other IRC "
+"users will know you by. It can't contain spaces or punctuation. Some IRC "
+"networks will shorten your nickname if it is more than 32 characters long."
+"<br><br>If in doubt, just enter the first nick that comes to mind. You will "
+"be able to change it later in the Identity properties, or with the /NICK "
+"command."
+msgstr ""
+"Molim odaberite Nadimak.<br><br>Vaš nadimak je ime prema kojem će vas ostal"
+"[i/e] IRC korisnic[i/e] prepoznavati. Ne može sadržavati razmake ili "
+"interpunkcijske znakove. Neke IRC.mreže će skratiti vaš nadimak ako je duži "
+"od 32 znaka<br><br>Ako se ne možete odlučiti za nadimak, unesite prvi koji "
+"vam padne na pamet. Možete ga naknadno promijeniti u Opcijama identiteta, "
+"ili s /NICK naredbom."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:348
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+"Ovo polje je neobavezno i pojavljivati će se kao dio CTCP USERINFO odgovora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:353
+msgid "Profile"
+msgstr "Profil"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:355
+msgid "Real name:"
+msgstr "Stvarno ime:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:361
+msgid "Age:"
+msgstr "Dob:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:392
+msgid "Unspecified"
+msgstr "Neodređeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:405
+msgid "Location:"
+msgstr "Lokacija:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:408
+msgid "Languages:"
+msgstr "Jezici:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:491
+msgid ""
+"<p>Here you can choose how much KVIrc will integrate with your system."
+"<br><br>The default settings are fine for most users so if you're in doubt "
+"just click \"<b>Next</b>\" and go to the next screen.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:501
+msgid "Desktop Integration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:504
+msgid "Make KVIrc default IRC client"
+msgstr "Koristi KVIrc kao zadani IRC klijent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:508
+msgid "Create desktop shortcut"
+msgstr "Kreiraj ikonu na desktopu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:513
+msgid "Import server list from mIRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:727
+msgid "Choose an Old Configuration Folder - KVIrc Setup"
+msgstr "Odaberi Staru Konfiguracijsku Mapu - KVIrc Instalacija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:736
+msgid "Do not overwrite folder? - KVIrc"
+msgstr "Ne prepisati mapu? - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:737
+msgid ""
+"A folder %1 seems to be not a valid KVIrc settings folder.Do you want to use "
+"it anyway?"
+msgstr ""
+"Mapa %1 nije ispravna KVIrc mapa s postavkama. Želite li ju ipak koristiti?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:753
+msgid "Choose a Configuration Folder - KVIrc Setup"
+msgstr "Odaberi Konfiguracijsku Mapu - KVIrc Instalacija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:764
+msgid "Choose a Download Folder - KVIrc Setup"
+msgstr "Odaberi Download Mapu - KVIrc Instalacija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:933
+msgid "Abort Setup - KVIrc Setup"
+msgstr "Prekini Instalaciju - KVIrc Instalacija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:934
+msgid ""
+"You have chosen to abort the setup.<br>KVIrc cannot run until you complete "
+"this procedure.<br><br>Do you really wish to abort?"
+msgstr ""
+"Odabrali ste prekid instalacijskog postupka.<br>KVIrc se ne može pokrenuti "
+"dok ne dovršite ovaj postupak.<br><br>Želite li stvarno prekinuti?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:965
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:996
+#, c-format
+msgid ""
+"Cannot create directory %s.\n"
+"You may not have write permission for that path. Please go back and choose "
+"another directory."
+msgstr ""
+"Ne mogu kreirati direktorij %s.<br>Možda nemate prava zapisivanja na to "
+"odredište. Molim vratite se natrag i odaberite drugi direktorij."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+msgid "Package saved succesfully"
+msgstr "Paket uspješno pohranjen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:80
+msgid "Event"
+msgstr "Događaj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1046
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:92
+msgid "&Export All To..."
+msgstr "Izv&ezi sve u..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:90
+msgid "Edit the event handler name."
+msgstr "Uredi ime handlera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:154
+msgid "&Enable Handler"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:158
+msgid "&Disable Handler"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:162
+msgid "Re&move Handler"
+msgstr "Uklo&ni Držač"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:164
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:166
+msgid "&Export Handler To..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:171
+msgid "&New Handler"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:190
+msgid "unnamed"
+msgstr "neimenovan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:215
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:250
+msgid "default"
+msgstr "standardno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:314
+msgid "none"
+msgstr "ništa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:318
+#, c-format
+msgid ""
+"\n"
+"\n"
+"\tEvent:\n"
+"\t\t%s\n"
+"\n"
+"\tParameters:\n"
+"%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+msgid "Unable to write to the event file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+msgid "Unable to write to the events file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:486
+msgid "Event Editor"
+msgstr "Event Editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:77
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:213
+msgid "Item"
+msgstr "Stavka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:80
+msgid "Submenu"
+msgstr "Pod-izbornik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:83
+msgid "External Menu"
+msgstr "Vanjski Izbornik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:136
+msgid "Label"
+msgstr "Oznaka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:93
+msgid "### Epilogue ###"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:94
+msgid "Epilogue"
+msgstr "Epilog"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:97
+msgid "### Prologue ###"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:98
+msgid "Prologue"
+msgstr "Prolog"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:198
+msgid "Popup name"
+msgstr "Naziv Popup-a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:202
+msgid "Test"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:230
+msgid "Text:"
+msgstr "Tekst:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:236
+msgid ""
+"<center><b>Visible text</b><br>May contain identifiers that will be "
+"evaluated at popup call time.<br>For labels, this text can contain also "
+"limited HTML tags.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:239
+msgid "Condition:"
+msgstr "Uvjet:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:245
+msgid ""
+"<center><b>Boolean condition</b><br>Will be evaluated at popup call time in "
+"order to decide if this entry has to be shown.<br>An empty condition "
+"evaluates to true.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:248
+msgid "Icon:"
+msgstr "Ikona:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:254
+msgid ""
+"<center><b>Icon identifier</b><br>May be an internal icon ID, an absolute "
+"path or a relative path.<br>Portable scripts should never use absolute paths."
+"</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:257
+msgid "External menu:"
+msgstr "Vanjski izbornik:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:263
+msgid ""
+"<center><b>External menu name</b><br>This allows to nest externally defined "
+"popup menus. The popup menu with the specified name will be looked up at "
+"menu setup time.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:266
+msgid "Item Id:"
+msgstr "Id stavke:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:273
+msgid ""
+"<center><b>Item id</b><br>This will allow you to use delpopupitem later.</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:386
+msgid "New Separator Below"
+msgstr "Novi Razmak Ispod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:388
+msgid "New Separator Above"
+msgstr "Novi Razmak Iznad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:391
+msgid "New Separator Inside"
+msgstr "Novi Razmak Iznutra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:396
+msgid "New Label Below"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:398
+msgid "New Label Above"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:401
+msgid "New Label Inside"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:406
+msgid "New Item Below"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:408
+msgid "New Item Above"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:411
+msgid "New Item Inside"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:416
+msgid "New Menu Below"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:418
+msgid "New Menu Above"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:421
+msgid "New Menu Inside"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:426
+msgid "New External Menu Below"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:428
+msgid "New External Menu Above"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:431
+msgid "New External Menu Inside"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:451
+msgid "&Paste Below"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:456
+msgid "Paste Above"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:461
+msgid "Paste Inside"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:473
+msgid "New Menu Prologue"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:481
+msgid "New Menu Epilogue"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1042
+msgid "Popup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1048
+msgid "&Export selected To..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1099
+msgid "&New Popup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1105
+msgid "Re&move Popup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1112
+msgid "&Export Popup To..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+msgid "Unable to write to the popup file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1382
+msgid "Popup Editor"
+msgstr "Popup Editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:62
+msgid "%cCore action: %Q"
+msgstr "%cSržna akcija: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:64
+msgid "%cUser action: %Q"
+msgstr "%cKorisnička akcija: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:65
+msgid "Label: %Q"
+msgstr "Naziv: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:66
+msgid "Category: %Q"
+msgstr "Kategorija: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:112
+msgid "The action \"%1\" is disabled"
+msgstr "Akcija \"%1\" je onemogućena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:259
+msgid "The action \"%1\" does not exist"
+msgstr "Akcija \"%1\" ne postoji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:255
+msgid "The action \"%1\" is a core action and cannot be destroyed"
+msgstr "Akcija \"%1\" je sržna akcija i ne može biti uništena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:392
+msgid "The switch -l requires -c"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:409
+msgid "The switch -s requires -w with a combination of flags 'c','x' and 'q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:420
+msgid ""
+"The action \"%1\" is already defined as core action and cannot be overridden"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:116
+msgid "Ops.. internal error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:125
+msgid "Manage File &Transfers"
+msgstr "Upravljanje Prijenosom Da&toteka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:67
+msgid "Choose Avatar - KVIrc"
+msgstr "Odaberite Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:72
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:283
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:358
+msgid "Internal error: I'm not in the user database ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:245
+msgid "Can't set the current avatar to '%Q': failed to start the http transfer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:249
+msgid "Can't set the current avatar to '%Q': can't load the image"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:351
+msgid "Invalid timeout specified, using default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:389
+msgid "Can't add a file offer for file %Q (huh ? file not readable ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:396
+msgid "Added %d secs file offer for file %Q (%Q) and receiver %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:403
+msgid "Notifying avatar '%Q' to %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:55
+msgid "&Execute"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:59
+msgid "Params:"
+msgstr "Parametri:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:107
+msgid "Script Tester"
+msgstr "Script Tester"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:220
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:413
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:543
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:628
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:765
+msgid "The config file with id '%Q' is not open"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:538
+msgid ""
+"The config file '%Q' has been changed but is opened as read-only: changes "
+"will be lost"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:583
+msgid "The config file with id '%Q' is read only"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:178
+msgid "Colors"
+msgstr "Boje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:255
+msgid "Context sensitive help"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1167
+msgid "&Replace"
+msgstr "&Zamijeni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:268
+msgid "Find & Repalce"
+msgstr "Pronađi & Zamijeni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1148
+msgid "Word to Find"
+msgstr "Riječ za Pronaći"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1156
+msgid "Replace with"
+msgstr "Zamijeni sa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1172
+msgid "&Replace in all Aliases"
+msgstr "&Zamijeni u svim Aliasima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1176
+msgid "&Findnext"
+msgstr "&Pronađi iduće"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1181
+msgid "&Replace(WIP)"
+msgstr "&Zamijeni(WIP)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:227
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:547
+msgid "The specified toolbar doesn't exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:424
+msgid "No action name/index specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:441
+msgid "The action parameter didn't evaluate to an index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:455
+msgid "The toolbar does not contain the specified item"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:513
+msgid "The action \"%Q\" doesn't exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:31
+msgid "Torrent Client"
+msgstr "Torrent Klijent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:361
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:364
+msgid "Standalone Servers"
+msgstr "Samostojeći Serveri"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:112
+msgid ""
+"%Q doesn't look like a servers.ini file.\n"
+"Import failed."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:122
+msgid "Choose a servers.ini file"
+msgstr "Odaberite servers.ini datoteku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:146
+msgid "Remote mIRC servers.ini Import Wizard"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:154
+msgid ""
+"<center><b>Welcome!</b><br><br>This wizard will guide you in the process of "
+"downloading a list of IRC servers. Please click \"<b>Next</b>\" to begin the "
+"operation.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:161
+msgid ""
+"<center>Here you can modify the URL that the list will be downloaded from. "
+"In most cases the default URL is acceptable.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:169
+msgid "URL Selection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:173
+msgid "Please wait while the list is being downloaded"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:179
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:195
+msgid "List Download"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:229
+msgid "Failed to start the server list transfer :("
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:245
+msgid "File downloaded: processing ..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:255
+msgid "%1 servers imported succesfully"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:257
+msgid "No servers imported"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:326
+msgid "Import from servers.ini"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:333
+msgid "Import from http://www.mirc.co.uk/servers.ini"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lineedit.cpp:372
+msgid "Unknown echo mode %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:203
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:359
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:172
+msgid "Widget parameter is not an object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:230
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:250
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:449
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:485
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:177
+msgid "Widget parameter is not a valid object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:95
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:263
+msgid "Widget object required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:151
+msgid "Unknown dock area '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:321
+msgid "Unknown alignment: '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:373
+msgid "Unknown style: '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:84
+msgid "the toolbar cannot be a parent-widget!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:93
+msgid "The parent-widget isn't a MainWindow."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:999
+msgid "The array passed as parameter must contain at least 4 elements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1012
+msgid "One of the geometry array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1017
+msgid "One of the geometry array parameters didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:503
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1032
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1500
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1044
+msgid "The first parameter didn't evaluate to an array nor an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1419
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1476
+msgid "The array passed as parameter must contain at least 2 elements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:451
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:486
+msgid "One of the array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:456
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:491
+msgid "One of the array parameters didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:478
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:804
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:993
+msgid "The array passed as parameter must contain at least 3 elements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:551
+msgid "Unknown orientation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:789
+msgid "Pixmap or Widget parameter is not an object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:730
+msgid "Widget or Pixmap required "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:852
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:862
+msgid "Invalid mode '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:886
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1701
+msgid "Pixmap parameter is not an object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:891
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1706
+msgid "Pixmap object required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1027
+msgid ""
+"$setGeometry() requires either an array as first parameter or four integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:813
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1002
+msgid "One of the colors array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:818
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1007
+msgid "One of the colors array parameters didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1020
+msgid "A string of 6 digits hex is required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:842
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1031
+msgid "Not an hex digits"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1144
+msgid ""
+"$setForegroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1219
+msgid ""
+"$setBackgroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1426
+msgid "One of the move array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1431
+msgid "One of the move array parameters didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1438
+msgid "$move() requires either an array as first parameter or two integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1483
+msgid "One of the resize array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1488
+msgid "One of the resize array parameters didn't evaluate to an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1495
+msgid "$resize() requires either an array as first parameter or two integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1528
+msgid "Invalid parameters"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1560
+msgid "Unknown widget flag '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1592
+msgid "Unknown style '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1622
+msgid "No Layout associated to the widget "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:117
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:152
+msgid "Can't add a non-widget object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1650
+msgid "Parent must be a widget object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1715
+msgid "Null mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1740
+msgid "Unknown widget attribute '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:382
+msgid "No such line number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:500
+msgid "Unknown word wrap '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:519
+msgid "Unknown wrap policy'%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:850
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1039
+msgid "$setColor requires either an array as first parameter or three integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:975
+msgid "Unknown text format '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1071
+msgid " I can't find the specified file '%Q'."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1078
+msgid " I cannot read the file %Q'."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1113
+msgid "Unknown alignment '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1131
+msgid "Unknown auto formatting mode '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1149
+msgid "Unknown vertical alignment '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:264
+msgid "pix '%Q' doesn't exists"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:276
+msgid "Can't add a non - popupmenu object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:302
+msgid "Doesn't a widget object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:182
+msgid "I can't find the specified file %Q."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:222
+msgid "Destination parameter is not an object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:228
+msgid "Destination must be a pixmap object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:238
+msgid "Area dimensions are out of destination size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:253
+msgid "Pixmap dimensions are out of destination size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:261
+msgid "Offset width area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:266
+msgid "Offset height area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:121
+msgid "The widget must be a child of this hbox"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:191
+msgid "No string parameter given - using empty string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:194
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:214
+#, c-format
+msgid "Item index [%d] is too big - defaulting to $count() - 1 [%d]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:333
+msgid "Invalid insertion Policy %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:136
+msgid "Unknown mode "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:149
+msgid "Unknown segment style "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_process.cpp:221
+msgid "Process could not be starded."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:279
+msgid "Invalid selection mode '%Q' assuming single"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:316
+msgid "Unknown text position '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:256
+msgid "Unknown tickmark '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:271
+msgid "Unknown orientation '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:500
+msgid "No socket object specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:506
+msgid "Invalid socket object specified (it doesn't inherit from socket)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:518
+msgid "There is no connection to accept!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:591
+#, c-format
+msgid "Value %d for port is out of range (values allowed are from 0 to 65535"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:596
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:87
+msgid "Another connection in progress"
+msgstr "Oduga konekcija se obrađuje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:648
+msgid "No IPV6 support in this executable"
+msgstr "Nema IPV6 podrške u ovoj aplikaciji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:670
+msgid "Invalid IP address specified ('%Q')"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:89
+msgid "Socket creation failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:706
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:727
+msgid "Invalid socket address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:714
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:735
+msgid "Bind failure"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:745
+msgid "Listen failure"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:812
+msgid "unknown"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:876
+msgid "Invalid ip address "
+msgstr "Neispravna ip adresa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:882
+msgid "Invalid ip address (%Q)"
+msgstr "neispravna ip adresa (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:906
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1013
+msgid "Failed to create the socket"
+msgstr "Neuspjeh u kreiranju socketa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:918
+msgid "Failed to setup a nonblocking socket"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:939
+msgid "Connect failure: "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:967
+msgid "Connect attempt timed out"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:993
+msgid "Can't start the DNS thread"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:1143
+msgid ""
+"Too much unprocessed incoming data (you've left this socket unmanaged ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:149
+msgid "Error in KVS class implementation: processing aborted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:154
+msgid "Processing aborted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:160
+#, c-format
+msgid "Error near line %d, column %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:162
+#, c-format
+msgid "Warning near line %d, column %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:313
+msgid "XML support not available in the Qt library"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:491
+msgid "Not a widget object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:308
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:497
+msgid "Can't find the tab "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:522
+msgid "Unknown position 'Q%'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:123
+msgid "The widget must be a child of this vbox"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:276
+msgid "Not Enough Parameters"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:142
+msgid "The listviewitem cannot be parentless"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:152
+msgid ""
+"The parent of the listviewitem must be either another listviewitem or a "
+"listview"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:403
+msgid "Pixmap object or image Id required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:413
+msgid ""
+"Error occured: the suitable file '%Q' is not of the correct format or it is "
+"not a valid icon number."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:151
+msgid ""
+"The window identifier preceeded by WinId must be the first object in the "
+"search path"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:167
+msgid "Failed to find one of the wrap path widgets (%Q::%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:176
+msgid "Failed to find the widget to wrap"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:119
+msgid "The parent of a layout must be a widget!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:269
+msgid "Invalid resize mode defaulting to Auto"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:324
+msgid "Unknown alignment"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:373
+msgid "Unknown orientation: "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listview.cpp:320
+msgid "Invalid selection mode '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tbrowser.cpp:99
+msgid "I can't find the specified file '%Q'."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:121
+msgid "Can't add a null object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:128
+msgid ""
+"Invalid object handle passed as parameter (the object is no longer "
+"existing ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:134
+msgid "Object in invalid state"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:140
+msgid "Can't set a non-widget object to be the main widget of a dock window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:146
+msgid "The added widget is not a child of this dock window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:271
+msgid "Invalid dock area specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:181
+msgid "Class '%Q' is not definited"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:257
+msgid "Inexisting target object for objects.connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:262
+msgid "Inexisting source object for objects.connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:444
+msgid "The class '%Q' does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:404
+msgid "Object does not exists"
+msgstr "Objekt ne postoji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:557
+msgid "Inexisting target object for objects.disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:562
+msgid "Inexisting source object for objects.disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:608
+msgid "Source is not an object"
+msgstr "Izvor nije objekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:614
+msgid "Destination is not an object"
+msgstr "Odredište nije objekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:625
+msgid "Widget, Image or Pixmap required "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:635
+msgid "Widget or Pixmap required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:714
+msgid "One o more of background, foreground or destination aren't objects"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:720
+msgid "Pixmap objects required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:743
+msgid "Values for background are out of image size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:748
+msgid "Values for foreground are out of image size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:226
+msgid "Empty filename string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:271
+msgid "No such open mode: '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:312
+msgid "File is not open!"
+msgstr "Datoteka nije otvorena!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:348
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:406
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:434
+msgid "File is not open !"
+msgstr "Datoteka nije otvorena !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:369
+msgid "Argument to long, using only first char"
+msgstr "Argument je predugačak, koristim samo prvi znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:339
+msgid "Write error occured !"
+msgstr "Greška u pisanju !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:352
+msgid "Read error occured !"
+msgstr "Greška u čitanju !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:371
+msgid "An error occured !"
+msgstr "Greška !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:387
+msgid "Missing both encrypt and decrypt key: at least one is needed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:168
+msgid "Error 0: Success ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:169
+msgid "Unsupported crypt mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:170
+msgid "Unsupported direction"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:171
+msgid "Unsupported key length"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:172
+msgid "Bad key data"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:173
+msgid "Engine not initialized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:174
+msgid "Invalid direction for this engine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:175
+msgid "Corrupted message data or invalid decrypt key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:52
+msgid "Unknown error"
+msgstr "Nepoznata greška"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:184
+msgid "Ops...encrypt cipher not initialized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:420
+msgid "Data buffer too long"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:221
+msgid "Ops...decrypt cipher not initialized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:277
+msgid "The message is not a hexadecimal string: this is not my stuff"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:671
+msgid "The message is not a base64 string: this is not my stuff"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:676
+msgid "The message doesn't seem to be encoded with CBC Mircryption"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:712
+#, c-format
+msgid ""
+"Cryptographic engine based on the\n"
+"Advanced Encryption Standard (AES)\n"
+"algorithm called Rijndael.\n"
+"The text is first encrypted with rijndael\n"
+"and then converted to %s notation.\n"
+"The keys used are %d bit long and will be padded\n"
+"with zeros if you provide shorter ones.\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"See the rijndael module documentation\n"
+"for more info on the algorithm used.\n"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:739
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:749
+msgid "hexadecimal"
+msgstr "heksadecimalno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:759
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:779
+msgid "base64"
+msgstr "base64"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:790
+msgid ""
+"Popular cryptographic engine based on the\n"
+"old Blowfish encryption algorithm.\n"
+"The text is first encrypted with Blowfish \n"
+"and then converted to base64 notation.\n"
+"The keys used have variable length and\n"
+"are specified as character strings.\n"
+"You can specify keys long up to 56 bytes (448 bits).\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"This engine works in ECB mode by default:\n"
+"if you want to use CBC mode you must prefix\n"
+"your key(s) with \"cbc:\".\n"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:61
+msgid "Drop here the icons from the toolbars to remove them"
+msgstr "Spustite ovdje ikone iz alatne traka da biste ih uklonili"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:128
+msgid "ToolBar Properties"
+msgstr "Opcije Alatne Trake"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:144
+msgid "Icon"
+msgstr "Ikona"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:160
+msgid "Id"
+msgstr "Id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:217
+msgid "Please choose the icon for the ToolBar"
+msgstr "Molim odaberite ikonu za Alatnu Traku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "Invalid ToolBar Label"
+msgstr "Neispravna Oznaka Alatne Trake"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "The ToolBar Label can't be empty!"
+msgstr "Oznaka Alatne Trake ne može biti prazna!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:256
+msgid "Duplicate ToolBar Id"
+msgstr "Dvostruki Id Alatne Trake"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:257
+msgid ""
+"The specified ToolBar Id already exists.<br>Would you like KVIrc to assign "
+"it automatically (so it doesn't collide with any other toolbar) or you "
+"prefer to do it manually ?"
+msgstr ""
+"Navedeni Id Alatne Trake već postoji.<br>Želite li da ga KVIrc dodijeli "
+"automatski (tako da se ne podudara s drugom alatnom trakom) ili želite "
+"učiniti to ručno?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Manually"
+msgstr "Ručno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Automatically"
+msgstr "Automatski"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:278
+msgid "Hide Advanced"
+msgstr "Sakrij Dodatno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:287
+msgid "Customize Toolbars"
+msgstr "Prilagodi Alatne Trake"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:296
+msgid "New ToolBar"
+msgstr "Nova Alatna Traka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:300
+msgid "Delete ToolBar"
+msgstr "Obriši Alatnu Traku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:304
+msgid "Edit ToolBar"
+msgstr "Uredi Alatnu Traku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:312
+msgid "Export ToolBar"
+msgstr "Izvezi Alatnu Traku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:373
+msgid "Confirm ToolBar Deletion"
+msgstr "Potvrdite Brisanje Alatne Trake"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:374
+msgid "Do you really want to delete toolbar \"%1\" ?"
+msgstr "Stvarno želite obrisati alatnu traku \"%1\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:397
+msgid "ToolBar Export"
+msgstr "Izvoz Alatne Trake"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:398
+msgid "Do you want the associated actions to be exported with the toolbar ?"
+msgstr "Želite li da pripadajuće akcije budu izvezene s alatnom trakom?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+msgid "Unable to write to the toolbar file."
+msgstr "Nemoguće zapisati datoteku alatne trake."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:465
+msgid "Please specify the properties for the toolbar \"%1\""
+msgstr "Molim odaberite opcije alatne trake \"%1\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:491
+msgid "Please specify the properties for the new toolbar"
+msgstr "Molim odaberite opcije nove alatne trake"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:493
+msgid "My ToolBar"
+msgstr "Moja Alatna Traka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:63
+msgid "Window with ID '%Q' not found"
+msgstr "Prozor s ID '%Q' nije pronađen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:67
+msgid "The specified window (%Q) is not a channel/query/DCC chat"
+msgstr "Navedeni prozor (%Q) nije soba/razgovor/DCC razgovor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:108
+msgid "File not found or empty"
+msgstr "Datoteka nije pronađena ili je prazna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:114
+msgid "I can't open that file"
+msgstr "Ne mogu otvoriti tu datoteku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:122
+msgid "Could not paste file"
+msgstr "Ne mogu zalijepiti datoteku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:218
+msgid "The specified window (%Q) is not a channel/query/dcc"
+msgstr "Navedeni prozor (%Q) nije soba/razgovor/dcc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:271
+msgid "Slow-paste ID:%d Window:%Q"
+msgstr "Sporo lijepljenje ID:%d Prozor:%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:240
+msgid "Plugin not found. Please check the plugin-name and path."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:247
+msgid "Error while loading plugin."
+msgstr "Greška u učitavanju plugina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:311
+msgid "This plugin does not export the desired function."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:327
+msgid ""
+"The plugin has no function to free memory. This can result in Memory Leaks!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:209
+#, c-format
+msgid "No environment variable found, please don't use the %% in the request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:482
+msgid "Invalid DCOP parameter syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:495
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:516
+msgid "The specified parameter is not an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:521
+#, c-format
+msgid "Unsupported DCOP parameter type %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:534
+msgid "DCOP call failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:599
+msgid "DCOP calls are available only when KDE support is compiled in"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1408
+#, c-format
+msgid "The window with id '%s' does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:851
+msgid "Window type or 'all' expected as first parameter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:938
+msgid "Invalid IRC context id '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1045
+msgid "The specified IRC context is not valid: creating a context free window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1119
+msgid "The specified window is not of type \"userwnd\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1208
+msgid "Window doesn't have input widget"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1363
+msgid "The encrypt key wasn't a valid hexadecimal string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1377
+msgid "The decrypt key wasn't a valid hexadecimal string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1414
+msgid "Both -n and -m switchess specified, -n takes precedence"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1424
+msgid "No encrypt key specified: can't allocate engine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1446
+msgid "Unknown engine error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1449
+msgid "Failed to initialize the specified crypt engine: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1453
+msgid "The crypt engine \"%Q\" does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1458
+msgid "This executable has been compiled without crypt support"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:138
+msgid "Current window is not a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:87
+msgid "Raw Event"
+msgstr "Raw Događaj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:97
+msgid "Edit the raw event handler name."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:179
+msgid "&Add Raw Event..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "New Raw Event"
+msgstr "Novi Raw Događaj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "Enter the numeric code of the message (0-999)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+msgid "Unable to write to the raw event file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Unable to write to the raw events file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:512
+msgid "Raw Editor"
+msgstr "Raw Editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:219
+msgid "A really lame text transformation engine :D"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:229
+msgid "A really lame text transformation engine: Light Version."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:82
+#, c-format
+msgid "Socket Spy [IRC Context %u]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:92
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Socket Spy</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:112
+msgid "Socket open"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:117
+msgid "Socket closed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:149
+msgid "Internal unique name for the action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:151
+msgid "Label:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:155
+msgid ""
+"Visible name for this action.<br>This string will be displayed to the user "
+"so it is a good idea to use $tr() here"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:166
+msgid "Action code"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:168
+msgid "Code"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:174
+msgid "Category:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:178
+msgid "Choose the category that best fits for this action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:180
+msgid "Description:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:184
+msgid ""
+"Visible short description for this action.<br>This string will be displayed "
+"to the user so it is a good idea to use $tr() here"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:186
+msgid "Small Icon:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:194
+msgid ""
+"The small icon associated to this action.<br>It will appear at least in the "
+"popup menus when this action is inserted.<br>It should be 16x16 pixels."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:200
+msgid "Big Icon:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:209
+msgid ""
+"The big icon associated to this action.<br>It will appear at least in the "
+"toolbar buttons when this action is inserted.<br>It should be 32x32 pixels."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:215
+msgid "Key Sequence:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:219
+msgid ""
+"Optional keyboard sequence that will activate this action.<br>The sequence "
+"should be expressed as a string of up to four key codes separated by commas "
+"eventually combined with the modifiers \"Ctrl\",\"Shift\",\"Alt\" and \"Meta"
+"\".<br>Examples of such sequences are \"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl+X,"
+"Ctrl+C\" ..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:240
+msgid "Needs IRC Context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:242
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window belongs to an irc context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:250
+msgid "Needs IRC Connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:252
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window has an active IRC connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:260
+msgid "Enable at Login"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:261
+msgid ""
+"Check this option if this action should be enabled also during the login "
+"operations (so when the logical IRC connection hasn't been estabilished yet)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:265
+msgid "Enable Only in Specified Windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:267
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is of a specified type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:271
+msgid "Enable in Console Windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:272
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a console"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:277
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:299
+msgid "Only If There Are Selected Users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:278
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:300
+msgid ""
+"This will enable the action only if there are selected users in the active "
+"window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:282
+msgid "Enable in Channel Windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:283
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:293
+msgid "Enable in Query Windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:294
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:304
+msgid "Enable in DCC Chat Windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:305
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a dcc chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:627
+msgid "Action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:680
+msgid "New Action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:683
+msgid "Delete Actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:686
+msgid "Export Actions..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Unable to write to the actions file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:823
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:824
+msgid "My Action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:825
+msgid "Put here a short description of your action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:925
+msgid "Action Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:938
+msgid "Apply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:63
+msgid "Outgoing traffic"
+msgstr "Izlazni promet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:67
+msgid "Incoming traffic"
+msgstr "Ulazni promet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_crypt.cpp:160
+msgid "Invalid crypt engine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:296
+msgid "Directory"
+msgstr "Direktorij"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:315
+msgid "Socket"
+msgstr "Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:332
+msgid "Fifo"
+msgstr "Fifo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:349
+msgid "Block device"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:366
+msgid "Char device"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:429
+msgid "Octet stream (unknown)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_osinfo.cpp:413
+msgid "Unknown "
+msgstr "Nepoznato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:181
+msgid "The specified network has no server entries"
+msgstr "Odabrana mreža nema pohranjenih servera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:239
+msgid ""
+"The server specification seems to be in the net:<string> but the network "
+"couln't be found in the database"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:261
+msgid ""
+"The server specification seems to be in the id:<string> form but the "
+"identifier coulnd't be found in the database"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:71
+msgid "Aborted"
+msgstr "Prekinuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:96
+msgid "No request"
+msgstr "Nema zahtjeva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:141
+msgid "No filename specified for the \"StoreToFile\" processing type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:160
+msgid "Invalid URL: Missing hostname"
+msgstr "Neispravan URL: Nedostaje ime hosta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:167
+msgid "Unsupported protocol %1"
+msgstr "Nepodržan protokol %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:189
+msgid "Unable to start the DNS lookup"
+msgstr "Nemoguće pokrenuti DNS potragu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:194
+#, c-format
+msgid "Looking up host %s"
+msgstr "Traženje hosta %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:210
+msgid "Host %s resolved to %Q"
+msgstr "Host %s pronađen za %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:246
+msgid "Unable to start the request slave thread"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:251
+msgid "Contacting host %Q on port %u"
+msgstr "Kontaktiram host %Q na portu %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:271
+msgid "Connection established, sending request"
+msgstr "Konekcija ostvarena, šaljem zahtjev"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:322
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:51
+msgid "Success"
+msgstr "Uspjeh"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:429
+msgid "Failed to rename the existing file, please rename manually and retry"
+msgstr ""
+"Neuspjeh pri preimenovanju postojeće datoteke, molim preimenujte ručno i "
+"pokušajte ponovno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:447
+msgid "Can't open file \"%Q\" for writing"
+msgstr "Ne mogu otvoriti datoteku \"%Q\" za zapisivanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:497
+#, c-format
+msgid "Invalid HTTP response: %s"
+msgstr "Neispravan HTTP odgovor: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:503
+#, c-format
+msgid "Received HTTP response: %s"
+msgstr "Primljen HTTP odgovor: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:628
+msgid "Stream exceeding maximum length"
+msgstr "Niz prekoračio maksimalnu duljinu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:661
+msgid "Header too long: exceeded 4096 bytes"
+msgstr "Zaglavlje predugačko: prekoračeno 4096 bajtova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:710
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:852
+msgid "Stream exceeded expected length"
+msgstr "Niz prekoračio očekivanu duljinu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:798
+msgid "Protocol error: invalid chunk size"
+msgstr "Greška u protokolu: neispravna veličina bloka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:818
+msgid "Chunk header too long: exceeded 4096 bytes"
+msgstr "Zaglavlje bloka preveliko: prekoračeno 4086 bajtova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:987
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1193
+msgid "Operation timed out"
+msgstr "Operacija istekla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1003
+msgid "Unexpected SSL error"
+msgstr "Neočekivana SSL pogreška"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1016
+msgid "Failed to enter non blocking mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1021
+msgid "Invalid target address"
+msgstr "Neispravna adresa odredišta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1056
+msgid "Failed to initialize the SSL context"
+msgstr "Neuspjelo inicijaliziranje SSL konteksta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1058
+msgid "Failed to initialize the SSL connection"
+msgstr "Neuspjelo inicijaliziranje SSL konekcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1075
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:99
+msgid "Remote end has closed the connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1087
+msgid "Unrecoverable SSL error during handshake"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1272
+msgid "Operation timed out (while selecting for read)"
+msgstr "Operacija istekla (pri odabiru za čitanje)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1382
+msgid "This KVIrc executable has no SSL support"
+msgstr "Ovaj KVIrc nema SSL podršku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1147
+msgid "Back"
+msgstr "Nazad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:268
+msgid "Next"
+msgstr "Slijedeće"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:168
+msgid "%1 bytes"
+msgstr "%1 bajtova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:172
+msgid "%1 KB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:176
+msgid "%1 MB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:181
+msgid "%1 GB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:185
+msgid "%1 TB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:620
+msgid "Internal error"
+msgstr "Interna greška"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:54
+msgid "Unknown command"
+msgstr "Nepoznata naredba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:55
+msgid "Missing closing brace"
+msgstr "Nedostaje zatvorena zagrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:56
+msgid "Unexpected end of command in string"
+msgstr "Neočekivan kraj naredbe u stringu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:57
+msgid "Unexpected end of command in dictionary key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:58
+msgid "Switch dash without switch letter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:59
+msgid "Unknown function"
+msgstr "Nepoznata funkcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:60
+msgid "Unexpected end of command in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:61
+msgid "Unexpected end of command in function parameters"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:62
+msgid "Missing variable name"
+msgstr "Nedostaje ime varijable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:63
+msgid "Variable or identifier expected"
+msgstr "Očekivana varijabla ili identifikator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:64
+msgid "Left operand is not a number"
+msgstr "Lijevi operand nije broj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:65
+msgid "Multiple operations not supported for numeric operators"
+msgstr "Mnogostruke operacije nisu podržane za brojčane operatore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:67
+msgid "Modulo by zero"
+msgstr "Modulo od nule"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:68
+msgid "Right operand is not a number"
+msgstr "Desni operand nije broj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:69
+msgid "Unterminated expression (missing ')' ?)"
+msgstr "Nedovršen izraz (nedostaje ')' ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:70
+msgid "Unterminated subexpression (Parenthesis mismatch)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:71
+msgid "Unexpected character"
+msgstr "Neočekivan znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:73
+msgid "No host to resolve"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:74
+msgid "(DNS Internal) Unsupported address family"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:75
+msgid "Valid name but the host has no IP address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:76
+msgid "Unrecoverable nameserver error (crashed ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:77
+msgid "Dns temporaneous fault (try again)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:78
+msgid "(DNS Internal) Bad flags"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:79
+msgid "(DNS Internal) Out of memory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:80
+msgid "(DNS Internal) Service not supported"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:81
+msgid "Unknown node (host not found)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:82
+msgid "(DNS Internal) Unsupported socket type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:83
+msgid "Dns query failed"
+msgstr "Neuspješan DNS upit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:84
+msgid "This KVIrc executable has no IPV6 support"
+msgstr "Ovaj KVIrc nema IPV6 podršku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:85
+msgid "Host not found"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:86
+msgid "(DNS Internal) IPC failure (slave data corrupted)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:88
+msgid "Invalid IP address"
+msgstr "Neispravna IP adresa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:90
+msgid "Failed to put the socket in non blocking mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:91
+msgid "Bad file descriptor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:92
+msgid "Out of address space"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:93
+msgid "Connection refused"
+msgstr "Konekcija odbijena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:94
+msgid "Kernel networking panic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:95
+msgid "Connection timed out"
+msgstr "Konekcija istekla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:96
+msgid "Network is unreachable"
+msgstr "Mreža je nedostupna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:97
+msgid "Broken pipe"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:98
+msgid "Invalid proxy address"
+msgstr "Neispravna proxy adresa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:100
+msgid "Invalid irc context id"
+msgstr "Neispravan irc kontekstni id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:101
+msgid "Error in loading module"
+msgstr "Greška u učitavanju modula"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:102
+msgid "No such module command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:103
+msgid "No such module function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:104
+msgid "Left operand is not a dictionary reference"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:105
+msgid "Right operand is not a dictionary reference"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:106
+msgid "Missing object class name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:107
+msgid "No such object class"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:108
+msgid "No such object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:109
+msgid "No such object function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:110
+msgid "Invalid left operand"
+msgstr "Neispravan lijevi operand"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:111
+msgid "Not enough parameters"
+msgstr "Nema dovoljno parametara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:112
+msgid "Integer parameter expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:113
+msgid "Invalid parameter"
+msgstr "Neispravan parametar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:114
+msgid "No such file"
+msgstr "Nema takve datoteke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:115
+msgid "Open parenthesis expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:116
+msgid "Open brace expected"
+msgstr "Očekivana otvorena zagrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:117
+msgid "Can't kill a builtin class"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:118
+msgid "The SOCKSV4 protocol lacks IpV6 support"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:119
+msgid "Unrecognized proxy reply"
+msgstr "Proxy odgovor nije prepoznat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:120
+msgid "Proxy response: auth failed: access denied"
+msgstr "Proxy odgovor: auth neuspješan: pristup odbijen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:121
+msgid "Proxy response: No acceptable auth method: request rejected"
+msgstr "Proxy odgovor: Nema prihvatljive auth metode: zahtjev odbijen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:122
+msgid "Proxy response: request failed"
+msgstr "Proxy odgovor: zahtjev neuspjeh"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:123
+msgid "Proxy response: ident failed"
+msgstr "Proxy odgovor: ident neuspjeh"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:124
+msgid "Proxy response: ident not matching"
+msgstr "Proxy odgovor: ident se ne podudara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:125
+msgid "Proxy response: general SOCKS failure"
+msgstr "Proxy odgovor: obična SOCKS greška"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:126
+msgid "Proxy response: connection not allowed"
+msgstr "Proxy odgovor: konekcija nije dopuštena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:127
+msgid "Proxy response: network unreachable"
+msgstr "Proxy odgovor: mreža nedostupna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:128
+msgid "Proxy response: host unreachable"
+msgstr "Proxy odgovor: udaljeno računalo nedostupno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:129
+msgid "Proxy response: connection refused"
+msgstr "Proxy odgovor: konekcija odbijena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:130
+msgid "Proxy response: TTL expired"
+msgstr "Proxy odgovor: TTL istekao"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:131
+msgid "Proxy response: command not supported"
+msgstr "Proxy odgovor: komanda nije podržana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:132
+msgid "Proxy response: address type not supported"
+msgstr "Proxy odgovor: adresna vrsta nije podržana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:133
+msgid "Proxy response: invalid address"
+msgstr "Proxy odgovor: neispravna adresa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:134
+msgid "Invalid port number"
+msgstr "Neispravan broj porta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:135
+msgid "Socket not connected"
+msgstr "Socket nije spojen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:136
+msgid "Insufficient resources to complete the operation"
+msgstr "Nedovoljno resursa za dovršavanje operacije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:137
+msgid "Can't setup a listening socket : bind failed"
+msgstr "Ne mogu postaviti slušni socket : bind nesupjeh"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:138
+msgid "Can't resolve the localhost name"
+msgstr "Ne mogu riješiti ime localhosta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:139
+msgid "Unsupported image format"
+msgstr "Nepodržan format slike"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:140
+msgid "Can't open file for appending"
+msgstr "Ne mogu otvoriti datoteku za dodavanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:542
+msgid "Can't open file for writing"
+msgstr "Ne mogu otvoriti datoteku za zapisivanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:142
+msgid "File I/O error"
+msgstr "Datotečna I/O greška"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:143
+msgid "Acknowledge error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:982
+msgid "Can't open file for reading"
+msgstr "Ne mogu otvoriti datoteku za čitanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:145
+msgid "Can't send a zero-size file"
+msgstr "Ne mogu poslati datoteku 0-te veličine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:146
+msgid "Missing popup name"
+msgstr "Nedostaje ime popup-a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:147
+msgid "'item', 'popup', 'label' or 'separator' keyword expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:148
+msgid "Self modification not allowed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:149
+msgid "UNUSED"
+msgstr "NEKORIŠTENO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:150
+msgid "Feature not available"
+msgstr "Opcija nije dostupna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:151
+msgid "Unexpected characters in array index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:152
+msgid "Unexpected end in expression"
+msgstr "Neočekivan kraj izraza"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:153
+msgid "Unexpected end in array index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:154
+msgid "Connection thru HTTP proxy failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:155
+msgid "Case , match , regexp , default or break keyword expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:156
+msgid "Access denied"
+msgstr "Pristup odbijen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:157
+msgid "Address already in use"
+msgstr "Adresa se već koristi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:158
+msgid "Can't assign the requested address"
+msgstr "Ne mogu dodijeliti zatraženu adresu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:159
+msgid "Connection reset by peer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:160
+msgid "Host unreachable (no route to host)"
+msgstr "Host nedostupan (nema putanje do hosta)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:161
+msgid "Variable expected"
+msgstr "Očekivana varijabla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:162
+msgid "Invalid array index: positive integer expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:163
+msgid "listen() call failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:164
+msgid "This executable has been compiled without SSL support"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:165
+msgid "Secure Socket Layer error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:166
+msgid "Slash (/) character expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:167
+msgid "Unknown string manipulation operation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:168
+msgid "Operation aborted"
+msgstr "Prekinuta operacija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:169
+msgid "Unexpected token"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:170
+msgid "Scope object already defined (unexpected @)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:171
+msgid "There is no $this pointer in this scope (unexpected @)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:140
+msgid "Operation cancelled"
+msgstr "Operacija obustavljena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:170
+msgid "File write error"
+msgstr "Greška pri pisanju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:176
+msgid "File read error"
+msgstr "Greška pri čitanju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:324
+msgid "Packaging file %Q"
+msgstr "Pakiranje datoteke %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:779
+msgid "Failed to open a source file for reading"
+msgstr "Greška pri otvaranju izvor-datoteke za čitanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:817
+msgid "Compression library initialization error"
+msgstr "Inicijalizacijska greška kompresijske biblioteke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:394
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:828
+msgid "Compression library error"
+msgstr "Greška kompresijske biblioteke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:465
+msgid "Compression library internal error"
+msgstr "Interna greška kompresijske biblioteke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:485
+msgid "Error while compressing a file stream"
+msgstr "Greška pri kompresiji niza datoteka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:526
+msgid "Creating package..."
+msgstr "Kreiranje paketa..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:527
+msgid "Writing package header"
+msgstr "Zapisivanje zaglavlja paketa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:571
+msgid "Writing informational fields"
+msgstr "Zapisivanje informativnih polja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:597
+msgid "Writing package data"
+msgstr "Zapisivanje podataka paketa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:659
+msgid "The file specified is not a valid KVIrc package"
+msgstr "Odabrana datoteka nije valjani KVIrc paket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:668
+msgid ""
+"The package has an invalid version number, it might have been created by a "
+"newer KVIrc"
+msgstr ""
+"Paket ima neispravan broj verzije, možda je kreiran novijom verzijom KVIrc-a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:714
+msgid "Invalid info field: the package is probably corrupt"
+msgstr "Neispravno info polje: paket je vjerojatno pokvaren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:745
+msgid ""
+"The package contains compressed data but this executable does not support "
+"compression"
+msgstr ""
+"Ovaj paket sadrži kompresirane podatke ali ova izvršna datoteka ne podržava "
+"kompresiju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:771
+msgid "Failed to create the target directory"
+msgstr "Greška pri kreiranju odredišnog direktorija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:784
+msgid "Unpacking file %Q"
+msgstr "Raspakiravanje datoteke %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:916
+msgid "Error in compressed file stream"
+msgstr "Greška u kompresiji niza datoteka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:990
+msgid "Reading package..."
+msgstr "Čitanje paketa..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:991
+msgid "Reading package header"
+msgstr "Čitanje zaglavlja paketa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:998
+msgid "Reading package data"
+msgstr "Čitanje podataka paketa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:1017
+msgid "Invalid data field: the package is probably corrupt"
+msgstr "Neispravno podatkovno polje: paket je vjerojatno neispravan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1127
+msgid "Select color"
+msgstr "Odaberi boju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1128
+msgid "&Basic colors"
+msgstr "Osnovne &boje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1129
+msgid "&Custom colors"
+msgstr "&Prilagođene boje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1130
+msgid "&Red"
+msgstr "&Crvena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1131
+msgid "&Green"
+msgstr "&Zelena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1132
+msgid "Bl&ue"
+msgstr "&Plava"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1133
+msgid "&Define Custom Colors >>"
+msgstr "&Definiraj Korisničke Boje >>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1134
+msgid "&Add to Custom Colors"
+msgstr "&Dodaj u Korisničke Boje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1136
+msgid "Select Font"
+msgstr "Odaberi Font"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1137
+msgid "&Font"
+msgstr "&Font"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1138
+msgid "Font st&yle"
+msgstr "Sti&l Fonta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1139
+msgid "&Size"
+msgstr "&Veličina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1140
+msgid "Sample"
+msgstr "Uzorak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1141
+msgid "Effects"
+msgstr "Efekti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1142
+msgid "Stri&keout"
+msgstr "Pre&križeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1143
+msgid "&Underline"
+msgstr "Po&dvučeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1144
+msgid "Scr&ipt"
+msgstr "Skr&ipta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1146
+msgid "Parent Directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1148
+msgid "Forward"
+msgstr "Naprijed"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1149
+msgid "Reload"
+msgstr "Osvježi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1150
+msgid "New Directory"
+msgstr "Novi Direktorij"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1151
+msgid "Bookmarks"
+msgstr "Knjižne oznake"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1152
+msgid "Add Bookmark"
+msgstr "Dodaj Knjižnu Oznaku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1153
+msgid "&Edit Bookmarks"
+msgstr "Ure&edi Knjižnu Oznaku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1154
+msgid "New Bookmark Folder..."
+msgstr "Nova Mapa Knjižnih Oznaka..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1156
+msgid "Sorting"
+msgstr "Sortiranje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1157
+msgid "By Name"
+msgstr "Po Imenu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1158
+msgid "By Date"
+msgstr "Po Datumu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1159
+msgid "By Size"
+msgstr "Po Veličini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1160
+msgid "Reverse"
+msgstr "Inverzno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1161
+msgid "Directories First"
+msgstr "Prvo Direktoriji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1162
+msgid "Case Insensitive"
+msgstr "Ignoriraj veličinu Slova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1163
+msgid "Short View"
+msgstr "Kratki Pogled"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1164
+msgid "Detailed View"
+msgstr "Detaljan Pogled"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1165
+msgid "Show Hidden Files"
+msgstr "Prikaži Skrivene Datoteke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1166
+msgid "Show Quick Access Navigation Panel"
+msgstr "Prikaži brzi pristup Navigacijskom panelu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1167
+msgid "Show Preview"
+msgstr "Pregled"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1168
+msgid "Separate Directories"
+msgstr "Odvoji Direktorije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1169
+msgid "Often used directories"
+msgstr "Često korišteni Direktoriji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1170
+msgid "Desktop"
+msgstr "Desktop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1171
+msgid "Home Directory"
+msgstr "Home Direktorij"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1172
+msgid "Floppy"
+msgstr "Disketa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1173
+msgid "Temporary Files"
+msgstr "Privremene Datoteke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1174
+msgid "Network"
+msgstr "Mreža"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1175
+msgid "New Directory..."
+msgstr "Novi Direktorij..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1176
+msgid "Delete"
+msgstr "Obriši"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1177
+msgid "Thumbnail Previews"
+msgstr "Prikaz Sličica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1178
+msgid "Large Icons"
+msgstr "Velike Ikone"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1179
+msgid "Small Icons"
+msgstr "Male Ikone"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1180
+msgid "Properties..."
+msgstr "Opcije..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1181
+msgid "&Automatic Preview"
+msgstr "&Automatski Prikaz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1182
+msgid "&Preview"
+msgstr "&Prikaz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1183
+msgid "&Location:"
+msgstr "&Adresa:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1184
+msgid "&Filter:"
+msgstr "&Filter:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1185
+msgid "All Files"
+msgstr "Sve Datoteke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:104
+msgid "- d -- h -- m -- s"
+msgstr "- d -- h -- m -- s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:111
+#, c-format
+msgid "%u h %u m %u s"
+msgstr "%u h %u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:113
+#, c-format
+msgid "%u h %u%u m %u%u s"
+msgstr "%u h %u%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:118
+#, c-format
+msgid "%u m %u s"
+msgstr "%u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:120
+#, c-format
+msgid "%u m %u%u s"
+msgstr "%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:122
+#, c-format
+msgid "%u s"
+msgstr "%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:127
+#, c-format
+msgid "%u d %u h %u m %u s"
+msgstr "%u d %u h %u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:129
+#, c-format
+msgid "%u d %u%u h %u%u m %u%u s"
+msgstr "%u d %u%u h %u%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+msgid "Usage"
+msgstr "Korištenje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+msgid "message"
+msgstr "poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:99
+msgid "-m: send a message instead of a notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:100
+msgid "-w: send notice to all channel owners"
+msgstr "-w: šalje obavijest svim vlasnicima sobe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:101
+msgid "-a: send notice to all channel admins"
+msgstr "-a: šalje obavijest svim administratorima sobe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:102
+msgid "-o: send notice to all channel ops"
+msgstr "-o: šalje obavijest svim operatorima sobe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:103
+msgid "-h: send notice to all channel halfops"
+msgstr "-h: šalje obavijest svim polu-operatorima sobe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:104
+msgid "-v: send notice to all channel voices"
+msgstr "-v: šalje obavijest svim +v korisnicima sobe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:105
+msgid "-q: quiet mode"
+msgstr "-q: tihi mod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:138
+msgid "Sending wallop to"
+msgstr "Slanje udarca"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:314
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:410
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:493
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:535
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:593
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:653
+msgid "Usage:"
+msgstr "Upotreba:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:223
+msgid "reason"
+msgstr "razlog"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:272
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:416
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:440
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:599
+msgid "This is not a channel window"
+msgstr "Ovo nije prozor kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:581
+msgid "Unsupported type: $0"
+msgstr "Nepodržana vrsta: $0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:604
+msgid "Channel Owner"
+msgstr "Vlasni[k/ca] Sobe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:606
+msgid "Channel Administrator"
+msgstr "Administrator Sobe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:608
+msgid "Channel Operator"
+msgstr "Operator[ica] Sobe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:610
+msgid "Half Operator"
+msgstr "Polu-Operator[ica]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:612
+msgid "Voice"
+msgstr "Voice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:614
+msgid "User Operator"
+msgstr "Korisnički Operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:616
+msgid "Normal User"
+msgstr "Normalni Korisni[k/ca]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:641
+msgid "You must use DNS in an IRC context"
+msgstr "Morate koristiti DNS u IRC kontekstu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:647
+msgid "You must be connected to a server"
+msgstr "Morate biti spojeni na server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:664
+msgid "No such user: $0"
+msgstr "Nema takvog korisni[ka/ce]: $0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:33
+msgid "The default script has been successfully installed."
+msgstr "Standardna skripta je uspješno instalirana."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:34
+msgid "To connect to a server, type /server <server name>"
+msgstr "Za spajanje na server, utipkajte /server <ime servera>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:36
+msgid "Happy ircing :)"
+msgstr "Sretno ircanje :)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:15
+msgid "Options"
+msgstr "Opcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:40
+msgid "Window operations"
+msgstr "Operacije s Prozorima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMENAME@"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMEDESCRIPTION@"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:18
+msgid "Stop Highlighting (Local)"
+msgstr "Zaustavi Isticanje (Lokalno)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:23
+msgid "Start Highlighting (Local)"
+msgstr "Započni Isticanje (Lokalno)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:28
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:61
+msgid "Always Highlight"
+msgstr "Uvijek Istakni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:30
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:55
+msgid "Highlight as"
+msgstr "Istakni kao"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:66
+msgid "Stop Highlighting"
+msgstr "Zaustavi Isticanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:82
+msgid "is being ignored"
+msgstr "je ignoriran"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:87
+msgid "is not being ignored"
+msgstr "nije ignoriran"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:93
+msgid "Enable Ignore"
+msgstr "Uključi Ignoriranje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:98
+msgid "Ignore as..."
+msgstr "Ignoriraj kao..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:240
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:282
+msgid "Ignore as"
+msgstr "Ignoriraj kao"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:290
+msgid "Unignore"
+msgstr "DeIgnoriraj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:308
+msgid "is registered as"
+msgstr "je registriran kao"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:311
+msgid "is in the notify list"
+msgstr "je na notify listi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:314
+msgid "has a default avatar"
+msgstr "ima standardni avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:317
+msgid "is not registered"
+msgstr "nije registriran"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:323
+msgid "Register"
+msgstr "Registriraj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:328
+msgid "Quick Registration"
+msgstr "Brza Registracija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:330
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:355
+msgid "Register as"
+msgstr "Registriraj kao"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:361
+msgid "Edit Registration"
+msgstr "Uredi Registraciju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:366
+msgid "Unregister"
+msgstr "DeRegistriraj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:373
+msgid "Add to Notify"
+msgstr "Dodaj u Notificiranje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:378
+msgid "Remove from Notify"
+msgstr "Ukloni sa Notificiranja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:385
+msgid "Choose"
+msgstr "Odaberi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:387
+msgid "Choose Avatar Image File"
+msgstr "Odaberi Sliku za Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:396
+msgid "Set as Default"
+msgstr "Spremi kao Standardno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:401
+msgid "Clear Default"
+msgstr "Očisti Standardno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:412
+msgid "Copy To Clipboard"
+msgstr "Kopiraj u Međuspremnik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:433
+msgid "Ban"
+msgstr "Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1037
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1084
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1224
+msgid "Multiple Users"
+msgstr "Višestruki Korisnici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:577
+msgid "&Ban"
+msgstr "&Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1089
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1229
+msgid "idle time"
+msgstr "vrijeme neaktivnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:758
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1236
+msgid "&Information"
+msgstr "&Informacije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1115
+msgid "DNS for"
+msgstr "DNS za"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:499
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1120
+msgid "Mask for"
+msgstr "Maska za"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:505
+msgid "&Control"
+msgstr "&Kontrole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:509
+msgid "O&wner"
+msgstr "O&wner"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:514
+msgid "&Deowner"
+msgstr "&Deowner"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:519
+msgid "&Administrator"
+msgstr "&Administrator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:524
+msgid "&Deadministrator"
+msgstr "&Deadministrator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:529
+msgid "&Op"
+msgstr "&Op"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:534
+msgid "&Deop"
+msgstr "&Deop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:539
+msgid "&Halfop"
+msgstr "&Halfop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:544
+msgid "&Dehalfop"
+msgstr "&Dehalfop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:549
+msgid "&Voice"
+msgstr "&Voice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:554
+msgid "D&evoice"
+msgstr "D&evoice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:561
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "&Kick"
+msgstr "$Kick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+msgid "K&ick"
+msgstr "K&ick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "With..."
+msgstr "S..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Kick Reason"
+msgstr "Kick Razlog"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Enter a kick reason"
+msgstr "Unesi kick razlog"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "Kick/Ban"
+msgstr "Kick/Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Kick/Ban Reason"
+msgstr "Kick/Ban Razlog"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Enter a kick/ban reason"
+msgstr "Unesi kick/ban razlog"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "&Kick/Ban"
+msgstr "&Kick/Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:604
+msgid "Configure ban mask..."
+msgstr "Podesi ban masku..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:612
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1263
+msgid "&Query"
+msgstr "&Razgovor s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:625
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1136
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1276
+msgid "&Registration"
+msgstr "&Registracija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1278
+msgid "&Highlight"
+msgstr "&Isticanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:629
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1280
+msgid "Ig&nore"
+msgstr "Ig&noriraj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:726
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1050
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1138
+msgid "Notify Avatar"
+msgstr "Objavi Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:705
+msgid "&Part"
+msgstr "&Izađi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:664
+msgid "Copy Channel Address"
+msgstr "Kopiraj adresu Sobe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:749
+msgid "Channels"
+msgstr "Sobe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:693
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:753
+msgid "&Join Channels..."
+msgstr "&Uđi u sobu..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:700
+msgid "&Hop"
+msgstr "&Hop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:733
+msgid "Copy Channel URL to Clipboard"
+msgstr "Kopiraj URL Kanala u Međuspremnik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:782
+msgid "l (Connections)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:787
+msgid "m (Command Usage)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:792
+msgid "o (Operators)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:797
+msgid "t (Connection stats ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:802
+msgid "u (Uptime)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:807
+msgid "y (y-Lines)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:812
+msgid "z (Debug Stats?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:909
+msgid "Chat with"
+msgstr "Razgovor s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:914
+msgid "Reverse Chat with"
+msgstr "Reverzni Razgovor s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:919
+msgid "Secure Chat with"
+msgstr "Sigurni Razgovor s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:926
+msgid "Send to"
+msgstr "Šalji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:931
+msgid "Secure send to"
+msgstr "Sigurno šalji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:936
+msgid "Reverse Send to"
+msgstr "Reverzno Šalji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:941
+msgid "Secure Reverse Send to"
+msgstr "Sigurno Reverzno Šalji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:948
+msgid "TDCC Send to"
+msgstr "TDCC Slanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:953
+msgid "TDCC Reverse Send to"
+msgstr "TDCC Reverzno Šalji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:960
+msgid "Voice Chat"
+msgstr "Glasovni Razgovor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1134
+msgid "&Ignore"
+msgstr "&Ignoriraj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1165
+msgid "Logging to"
+msgstr "Logiram u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1167
+msgid "Flush Log File"
+msgstr "Osvježi Log Datoteku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1174
+msgid "Stop Logging"
+msgstr "Zaustavi Logiranje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1179
+msgid "Not Logging"
+msgstr "Ne Logiram"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+msgid "Log To Default File"
+msgstr "Logiraj u Standardnu Datoteku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+msgid "Include Existing Buffer"
+msgstr "Ukljući Postojeći Međuspremnik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+msgid "Log To..."
+msgstr "Logiraj u..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1201
+msgid "Choose Log Filename"
+msgstr "Odaberi ime Log Datoteke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1282
+msgid "Notify avatar"
+msgstr "Objavi avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:50
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$copyfiles must be a "
+"source directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:56
+#, c-format
+msgid ""
+"[Installer] The second argument to \\%installer->\\$copyfiles must be a file "
+"name or file regexp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:62
+#, c-format
+msgid ""
+"[Installer] The third argument to \\%installer->\\$copyfiles must be a "
+"destination directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:94
+msgid "[Installer] Failed to create directory"
+msgstr "[Installer] Neuspješno kreiranje direktorija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:104
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$includefiles must be a "
+"source directory"
+msgstr ""
+
+#~ msgid "Lag is"
+#~ msgstr "Lag je"
+
+#~ msgid "milliseconds"
+#~ msgstr "milisekundi"
+
+#~ msgid "Restore from backup archive"
+#~ msgstr "Vrati iz backup arhive"
+
+#~ msgid "Basic Properties"
+#~ msgstr "Osnovne Opcije"
+
+#~ msgid "Other:"
+#~ msgstr "Ostalo:"
+
+#~ msgid "Now you should specify an IRC server, to be connected to it"
+#~ msgstr "Sada biste trebali odrediti IRC server da se spojite na njega"
+
+#~ msgid "Choose a server to connect"
+#~ msgstr "Izbor servera za spajanje"
+
+#~ msgid "Choose from built-in server list"
+#~ msgstr "Izbor iz ugrađenog popisa servera"
+
+#~ msgid "Specify server manually"
+#~ msgstr "Ručni izbor servera"
+
+#~ msgid "Server:"
+#~ msgstr "Server:"
+
+#~ msgid "Port:"
+#~ msgstr "Port:"
+
+#~ msgid "Open irc:// or irc6:// URL"
+#~ msgstr "Otvori irc:// ili irc6:// URL"
+
+#~ msgid "URL:"
+#~ msgstr "URL:"
+
+#~ msgid "Use server config"
+#~ msgstr "Koristi server konfiguracijsku datoteku"
+
+#~ msgid "Config file:"
+#~ msgstr "Konfiguracijska datoteka:"
+
+#~ msgid "Report a Bug"
+#~ msgstr "Prijavi Bug"
+
+#~ msgid "Smart"
+#~ msgstr "Pametno"
diff --git a/po/kvirc/kvirc_hu.po b/po/kvirc/kvirc_hu.po
new file mode 100644
index 00000000..d9f6f92b
--- /dev/null
+++ b/po/kvirc/kvirc_hu.po
@@ -0,0 +1,12226 @@
+# translation of kvirc_hu.po to hungarian
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Ádám Fibinger <[email protected]>, 2006, 2007, 2008.
+# Ádám Fibinger <[email protected]>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: kvirc_hu\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2008-03-03 09:58+0100\n"
+"Last-Translator: Ádám Fibinger <[email protected]>\n"
+"Language-Team: hungarian <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:696
+msgid "&Cascade Windows"
+msgstr "Lépcsőzetes elrendezés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:697
+msgid "Cascade &Maximized"
+msgstr "Lépcsőzetes Teljes &Méret"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:700
+msgid "&Tile Windows"
+msgstr "Ablakok egymás mellé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:703
+msgid "&Auto Tile"
+msgstr "&Automatikus egymás mellé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:708
+msgid "Anodine's Full Grid"
+msgstr "Anodine teljes rács"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:710
+msgid "Pragma's Horizontal 4-Grid"
+msgstr "Pragma Vízszintes 4-es"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:712
+msgid "Pragma's Vertical 4-Grid"
+msgstr "Pragma Függőleges 4-es"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:714
+msgid "Pragma's Horizontal 6-Grid"
+msgstr "Pragma Vízszintes 6-os"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:716
+msgid "Pragma's Vertical 6-Grid"
+msgstr "Pragma Függőleges 6-os"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:718
+msgid "Pragma's Horizontal 9-Grid"
+msgstr "Pragma Vízszintes 9-es"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:720
+msgid "Pragma's Vertical 9-Grid"
+msgstr "Pragma Függőleges 9-es"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:726
+msgid "Tile Met&hod"
+msgstr "Rendezési elv"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:729
+msgid "Expand &Vertically"
+msgstr "Függőleges széttolás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:730
+msgid "Expand &Horizontally"
+msgstr "Vízszintes széttolás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:733
+msgid "Mi&nimize All"
+msgstr "Mi&ndent minimalizál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_actiondrawer.cpp:64
+msgid "Script"
+msgstr "Szkript"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:581
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:634
+msgid "Unknown"
+msgstr "Ismeretlen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:128
+msgid "No topic message has been received from the server yet"
+msgstr "Topik üzenet még nem érkezett a szervertől"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:495
+msgid "Channel topic:"
+msgstr "A csatorna topikja:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:513
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:201
+msgid "Set by"
+msgstr "Beállította:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:519
+msgid "Set on"
+msgstr "Bekapcsol"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:525
+msgid "Double-click to edit..."
+msgstr "Két kattintással szerkeszthető..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:530
+msgid "No topic is set"
+msgstr "Nincs topik beállítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:533
+msgid "Double-click to set..."
+msgstr "Két kattintással beállítható..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:587
+msgid "History"
+msgstr "Történet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:596
+msgid "Commit Changes"
+msgstr "Változások beállítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:602
+msgid "Discard Changes"
+msgstr "Változások elvetése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:627
+msgid "Copy to clipboard"
+msgstr "Vágólapra másolás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:988
+msgid "There are active connections, are you sure you wish to "
+msgstr "Kapcsolódva vagy, biztosan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:989
+msgid "quit KVIrc?"
+msgstr "kilépsz a KVIrcből?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:587
+msgid "Confirmation - KVIrc"
+msgstr "Megerősítés - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:557
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:590
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&Yes"
+msgstr "Igen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:556
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:589
+msgid "&Always"
+msgstr "Igen, Mindig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:591
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&No"
+msgstr "&Nem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1090
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1106
+msgid "Show %1"
+msgstr "Mutasd %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1134
+msgid "Customize..."
+msgstr "Testreszabás..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:149
+#, c-format
+msgid "The file %s already exists.<br>Do you wish to overwrite it?"
+msgstr "A %s fájl már létezik. <br> Szeretné felülírni?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:150
+msgid "File Exists - KVIrc"
+msgstr "Fájl létezik - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:132
+msgid "Channel mode"
+msgstr "Csatorna mód"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:162
+msgid "Split View"
+msgstr "Osztott nézet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:207
+msgid "User List"
+msgstr "Felhasználó Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:167
+msgid "Ban Editor"
+msgstr "Tiltás szerkesztő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:172
+msgid "Ban Exception Editor"
+msgstr "Tiltási kivétel szerkszető"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:179
+msgid "Invite Exception Editor"
+msgstr "Meghívási kivétel szerkesztő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:184
+msgid "Mode Editor"
+msgstr "Mód szerkesztő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "said something recently"
+msgstr "éppen mondott valamit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "is talking"
+msgstr "beszél"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:684
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:699
+msgid "and"
+msgstr "és"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "were talking recently"
+msgstr "éppen beszélget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "are talking"
+msgstr "beszélgetnek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:707
+msgid "and other %1 users"
+msgstr "és %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:738
+msgid "Dead channel"
+msgstr "Halott csatorna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:753
+msgid "operator"
+msgstr "operátor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:754
+msgid "operators"
+msgstr "operátorok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active user"
+msgstr "aktív felhasználó"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active users"
+msgstr "aktív felhasználó"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot user"
+msgstr "beszédes felhasználó"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot users"
+msgstr "beszédes felhasználó"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owner"
+msgstr "csatorna tulajdonos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owners"
+msgstr "csatorna tulajdonosok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrator"
+msgstr "csatorna adminisztrátor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrators"
+msgstr "csatorna adminisztrátorok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operator"
+msgstr "fél-operátor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operators"
+msgstr "fél-operátorok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced user"
+msgstr "voiceolt felhasználó"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced users"
+msgstr "voiceolt felhasználó"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operator"
+msgstr "felhasználó-operátor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operators"
+msgstr "felhasználó-operátorok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "user total"
+msgstr "felhasználó"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "users total"
+msgstr "összes felhasználó"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:931
+msgid "No activity"
+msgstr "Nincs aktivitás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:932
+msgid "Minimal activity"
+msgstr "Minimális aktivitás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:933
+msgid "Very low activity"
+msgstr "Nagyon alacsony aktivitás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Might be low activity"
+msgstr "Közel alacsony aktivitás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Low activity"
+msgstr "Alacsony aktivitás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Might be medium activity"
+msgstr "Közel alacsony aktivitás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Medium activity"
+msgstr "Közepes aktivitás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "Might be high activity"
+msgstr "Közel magas aktivitás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "High activity"
+msgstr "Magas aktivitás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Might be very high activity"
+msgstr "Közel nagyon magas aktivitás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Very high activity"
+msgstr "Nagyon magas aktivitás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Might be flooded with messages"
+msgstr "Közel elárasztott csatorna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Flooded with messages"
+msgstr "Üzenetekkel elárasztott csatorna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:946
+msgid "human"
+msgstr "emberi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:966
+msgid "[Dead channel]"
+msgstr "[Halott csatorna]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1020
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1122
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:459
+msgid " on "
+msgstr " - "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1086
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %Q, no "
+"data sent to the server"
+msgstr ""
+"A titkosító motor nem tudta titkosítani az üzenetet (%Q) %Q, így nem lett "
+"elküldve a szervernek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1403
+msgid "Sent part request, waiting for reply..."
+msgstr "Lelépő üzenet elküldve, válaszra várva..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:610
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:647
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:293
+msgid "(Unknown)"
+msgstr "(Ismeretlen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1484
+msgid "<b>Channel mode:</b>"
+msgstr "<b>Csatorna mód:</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1498
+#, c-format
+msgid "<br><b>Key:</b> %s"
+msgstr "<br><b>Kulcs:</b> %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1505
+#, c-format
+msgid "<br><b>Limit:</b> %s"
+msgstr "<br><b>Korlát:</b> %s felhasználó"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1590
+#, c-format
+msgid "Channel synchronized in %d.%d seconds"
+msgstr "Csatorna szinkronizálva %d.%d másodperc alatt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:139
+msgid "Choose an Image File - KVIrc"
+msgstr "Képfájl kiválasztása - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:284
+#, c-format
+msgid "Unloadable: %s"
+msgstr "Betölthetetlen: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:260
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:90
+msgid "&Browse..."
+msgstr "&Böngészés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:364
+msgid "Choose a File - KVIrc"
+msgstr "Fájl kiválasztása - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:382
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:593
+msgid "Choose a Directory - KVIrc"
+msgstr "Könyvtár kiválasztása - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:764
+msgid "A&dd"
+msgstr "Hozzáad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:407
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:766
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:230
+msgid "Re&move"
+msgstr "Eltávolít"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:602
+msgid "Sample Text"
+msgstr "Minta szöveg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:635
+msgid "Foreground"
+msgstr "Előtér"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:639
+msgid "Transparent"
+msgstr "Átlátszó"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:652
+msgid "Background"
+msgstr "Háttér"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:715
+msgid "Play"
+msgstr "Lejátszás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:748
+msgid "Channel name"
+msgstr "Csatorna név"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:749
+msgid "Channel password"
+msgstr "Csatorna Operátor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:177
+msgid "Toolbars"
+msgstr "Eszköztárak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:84
+msgid "Orientation"
+msgstr "Elhelyezkedés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:86
+msgid "Top"
+msgstr "Fent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:87
+msgid "Left"
+msgstr "Bal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:88
+msgid "Right"
+msgstr "Jobb"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:89
+msgid "Bottom"
+msgstr "Lent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:91
+msgid "Detached"
+msgstr "Lekapcsolva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:92
+msgid "Flat"
+msgstr "Sima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:94
+msgid "Icon Size"
+msgstr "Ikon Méret"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:96
+msgid "Small (22x22)"
+msgstr "Kicsi (22x22)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:97
+msgid "Large (32x32)"
+msgstr "Nagy (32x32)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1333
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:463
+msgid "&Apply"
+msgstr "Elfogad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:830
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:113
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:251
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:319
+msgid "Close"
+msgstr "Bezár"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:102
+msgid "Channel Modes"
+msgstr "Csatorna Módok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_debugwindow.cpp:47
+msgid "Debug Messages"
+msgstr "Debug Üzenetek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:72
+msgid "CTCP Page - KVIrc"
+msgstr "CTCP Page - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:109
+msgid "You have been paged by"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:75
+msgid "Mask editor - KVirc"
+msgstr "Maszk szerkesztő - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:79
+msgid "New mask must match an *!*@* expression"
+msgstr "Az új maszknak egyeznie kell a *!*@* kifejezéssel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Ok"
+msgstr "Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:488
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:442
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:401
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Cancel"
+msgstr "Mégsem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:157
+msgid "Active Bans"
+msgstr "Aktív kitiltások"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:161
+msgid "Active Invite Exceptions"
+msgstr "Aktív meghívási kivételek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:165
+msgid "Active Ban Exceptions"
+msgstr "Aktív tiltási kivételek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:184
+msgid "Filter:"
+msgstr "Szűrő:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:188
+msgid "Use doubleclick to edit item"
+msgstr "Két kattintás az elem szerkesztéséhez"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:200
+msgid "Mask"
+msgstr "Maszk"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:202
+msgid "Set at"
+msgstr "Beállítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "Add"
+msgstr "Hozzáad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:92
+msgid "Cryptography/text transformation"
+msgstr "Titkosítás / szöveg transzformáció"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:99
+msgid "Use the crypt engine"
+msgstr "Megadott titkosítás használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:120
+msgid "Enable encryption"
+msgstr "Titkosítás engedélyezése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:123
+msgid "Encrypt key:"
+msgstr "Titkosító kulcs:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:141
+msgid "Hex"
+msgstr "Hex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:132
+msgid "Enable decryption"
+msgstr "Dekódolás engedélyezése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:135
+msgid "Decrypt key:"
+msgstr "Dekódoló kulcs:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_htmldialog.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:175
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:932
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1124
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:211
+msgid ""
+"If you dont want to encrypt a particular text line then just start it with "
+"the CTRL+P prefix"
+msgstr ""
+"Ha egy szövegrészletet titkosítás nélkül szeretnél elküldeni, akkor kezd a "
+"CTRL+P előtaggal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:263
+msgid "Sorry, no crypt engines available"
+msgstr "Nincs elérhető titkosítás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:283
+msgid "Crypt: Can't create an engine instance: crypting disabled"
+msgstr "Titkosítás: Folyamat létrehozása sikertelen: titkosítás leállítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:294
+#, c-format
+msgid "Crypt: Can't initialize the engine :%s"
+msgstr "Titkosítás: Nem tudom inicializálni: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:302
+msgid ""
+"Crypt: You have to enable encryption and/or decryption for the engine to work"
+msgstr ""
+"Titkosítás: Engedélyezned vagy tiltanod kell a titkosítást, hogy az "
+"működésbe lépjen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:385
+msgid "Search tools"
+msgstr "Kereső eszközök"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:539
+#, c-format
+msgid "### Log session terminated at %s ###"
+msgstr "### Naplózás leállítva: %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:713
+#, c-format
+msgid "### Log session started at %s ###"
+msgstr "### Naplózás elindítva: %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:717
+msgid "### Existing data buffer:"
+msgstr "### Létező adat puffer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:721
+msgid "### End of existing data buffer."
+msgstr "### Létező adatpuffer vége."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3894
+msgid "Hide Find Window"
+msgstr "Kereső ablak elrejtése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3896
+msgid "Show Find Window"
+msgstr "Kereső ablak mutatása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3898
+msgid "Zoom In"
+msgstr "Közelít"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3899
+msgid "Zoom Out"
+msgstr "Távolít"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3900
+msgid "Choose Temporary Font..."
+msgstr "Átmeneti betűtípus kiválasztása..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3901
+msgid "Choose Temporary Background..."
+msgstr "Átmeneti háttér kiválasztása..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3902
+msgid "Reset Temporary Background"
+msgstr "Átmeneti háttér visszaállítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3905
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:738
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:841
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1057
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1289
+msgid "Clear Buffer"
+msgstr "Puffer törlése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3939
+msgid "Choose the background image..."
+msgstr "Háttér kiválasztása..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+msgid "Invalid image"
+msgstr "Hibás kép"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+msgid "Failed to load the selected image"
+msgstr "A kiválasztott kép betöltése sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4083
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4140
+#, c-format
+msgid "Pos %d"
+msgstr "Pozíció %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4156
+msgid "Not found"
+msgstr "Nem található"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4563
+msgid "Looking up host %Q..."
+msgstr "%Q felderítése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4926
+msgid "Double-click to open this link"
+msgstr "Dupla kattintás a link megnyitásához"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4946
+msgid "Unable to look it up hostname: Hostname appears to be masked"
+msgstr "Hosztnév felderítése sikertelen, valószínűleg maszkolt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4947
+msgid "Unable to look it up hostname: Unknown host"
+msgstr "Hosztnév felderítése sikertelen, ismeretlen hoszt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4949
+msgid ""
+"Double-click to look up this hostname<br>Right-click to view other options"
+msgstr "Dupla kattintás: felderítés <br>Jobb kattintás: egyéb opciók"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4972
+msgid "Server appears to be a network hub<br>"
+msgstr "A szerver látszólag egy hálózati hub<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4973
+msgid "Unknown server<br>"
+msgstr "Ismeretlen szerver<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4976
+msgid "Double-click to read the MOTD<br>Right-click to view other options"
+msgstr "Dupla kattintás: MOTD olvasása <br>Jobb klikk: egyéb opciók"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4989
+msgid "Double-click to set<br>"
+msgstr "Dupla kattintás a beállításhoz<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5011
+msgid "You're not an operator: You may not change channel modes"
+msgstr "Nem vagy csatorna operátor: Nem változtathatsz csatorna módot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5028
+msgid "Nothing known about %Q"
+msgstr "Semmit nem tudok róla: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5029
+msgid "Nothing known about %Q (no connection)"
+msgstr "Semmit nem tudok róla: %Q (nincs kapcsolat)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5054
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>): "
+"<br><nowrap>+%Q (%u users)<hr>%Q</nowrap>"
+msgstr ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>): "
+"<br><nowrap>+%Q (%u felhasználó)<hr>%Q</nowrap>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5060
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)<hr>Double-"
+"click to join %Q<br>Right click to view other options"
+msgstr ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)<hr>Dupla "
+"kattintás: Csatlakozás: %Q<br>Jobb kattintás: egyéb opciók"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5080
+msgid "<b>Double-click:</b><br>%Q"
+msgstr "<b>Dupla kattintás:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5085
+msgid "<b>Middle-click:</b><br>%Q"
+msgstr "<b>Középső gomb: </b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5090
+msgid "<b>Right-click:</b><br>%Q"
+msgstr "<b>Jobb gomb:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1284
+msgid "Joined on <b>%1</b>"
+msgstr "Csatlakozott <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1296
+msgid "Quiet for <b>%1h %2m %3s</b>"
+msgstr "Néma <b>%1 �%2 p %3 mp</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1097
+msgid "No connection"
+msgstr "Nincs kapcsolat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:304
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:3
+msgid "IRC Context"
+msgstr "IRC Környezet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:319
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:365
+#, c-format
+msgid "Lag: %d.%d%d"
+msgstr "Lag: %d.%d%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:393
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:379
+msgid "Lag: ?.??"
+msgstr "Lag: ?.??"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:326
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:637
+msgid "No IRC context"
+msgstr "Nincs IRC környezet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:633
+msgid "Not connected"
+msgstr "Nincs csatlakozva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:377
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1117
+msgid "away"
+msgstr "távol"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:397
+msgid "In progress..."
+msgstr "Folyamatban..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:458
+msgid "Crypting"
+msgstr "Titkosítás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:466
+msgid "Private Text Encoding"
+msgstr "Privát szöveg kódolása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:566
+msgid "Ops...I've accidentally lost the crypting engine..."
+msgstr "Upsz, véletlenül meglépett a titkosító..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:582
+msgid "List of window types available in this release of KVIrc:"
+msgstr "Elérhető ablaktípusok a KVIrc ezen verziójában:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:763
+msgid "Use Default Encoding"
+msgstr "Alapértelmezett karakterkódolás használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:775
+msgid "Standard"
+msgstr "Egyszerű"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:776
+msgid "Smart (Send Local)"
+msgstr "Okos (UTF-8 helyi küldéskor)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:777
+msgid "Smart (Send UTF-8)"
+msgstr "Okos (UTF-8 küldéskor)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:810
+msgid "&Undock"
+msgstr "Lecsatolás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:813
+msgid "&Dock"
+msgstr "Felcsatolás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:818
+msgid "Mi&nimize"
+msgstr "Mi&nimalizálás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:821
+msgid "Ma&ximize"
+msgstr "Ma&ximalizálás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:824
+msgid "&Restore"
+msgstr "Visszaállít"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:837
+msgid "Text &Encoding"
+msgstr "Szöveg kódolás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:842
+msgid "Sa&ve Window Properties"
+msgstr "Ablak tulajdonságok mentése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:86
+msgid "Taskbar"
+msgstr "Eszközlista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:91
+msgid "taskbar"
+msgstr "eszköztár"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1162
+msgid "Sort"
+msgstr "Rendezés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1163
+msgid "Reverse Sort"
+msgstr "Fordított rendezés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1223
+msgid "Window List"
+msgstr "Ablak Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:203
+msgid "Apply to all IRC Contexts"
+msgstr "Nincs IRC környezet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:227
+msgid "Away Indicator"
+msgstr "Távol kijelző"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:255
+msgid "Away since"
+msgstr "Távol: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:259
+msgid "Double click to leave away mode"
+msgstr "Dupla kattintás: Elérhető"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:261
+msgid "Not away"
+msgstr "Elérhető"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:263
+msgid "Double click to enter away mode"
+msgstr "Dupla kattintás: Nem elérhető mód"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:330
+#, c-format
+msgid "Last checked %d mins %d secs ago"
+msgstr "Utoljára ellenőrízve %d perc %d másodperce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:332
+msgid "Lag measure not available yet"
+msgstr "Lag számítás még nem elérhető"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:336
+msgid "Lag meter engine disabled"
+msgstr "Lagmérő motor kikapcsolva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:338
+msgid "Double click to enable it"
+msgstr "Dupla kattintás: engedélyezés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:391
+msgid "Lag Indicator"
+msgstr "Lag kijelző"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:461
+msgid "Simple Clock"
+msgstr "Egyszerű óra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:512
+msgid "Show total connection time"
+msgstr "Teljes kapcsolat időtartama"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:536
+msgid "Connection Timer"
+msgstr "Kapcsolat Stopper"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:560
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:87
+msgid "Separator"
+msgstr "Elválasztó"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:820
+msgid "Clipboard"
+msgstr "Vágólap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line break"
+msgstr "sortörés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line breaks"
+msgstr "sortörések"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:845
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:439
+msgid "Cu&t"
+msgstr "Kivág"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:847
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:445
+msgid "&Copy"
+msgstr "Másol"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:849
+msgid "&Paste"
+msgstr "Beilleszt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:851
+msgid "Paste (Slowly)"
+msgstr "Beilleszt (Lassan)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:856
+msgid "Paste &File"
+msgstr "&Fájl beillesztése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:863
+msgid "Stop Paste"
+msgstr "Beillesztés leállítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:865
+msgid "Clear"
+msgstr "Töröl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:868
+msgid "Select All"
+msgstr "Mindent kijelöl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:897
+msgid "Insert Icon"
+msgstr "Ikon beszúrása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1926
+msgid "%d matches: %Q"
+msgstr "%d egyezik: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1930
+msgid "No matches"
+msgstr "Nincs egyezés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2657
+msgid "Show History<br>&lt;Ctrl+PageUp&gt;"
+msgstr "Történet mutatása:<br>&lt;Ctrl+PageUp&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2648
+msgid "Input History Disabled"
+msgstr "Beviteli történet nincs naplózva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2370
+msgid "Show Icons Popup<br>&lt;Ctrl+I&gt;<br>See also /help texticons"
+msgstr "Ikon popupok mutatása <br>&lt;Ctrl+I&gt;<br>lásd még /help texticons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2382
+msgid "User friendly commandline mode<br>See also /help commandline"
+msgstr "Felhasználóbarát paranccsor <br> Lásd: /help commandline"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2394
+msgid "Multi-line Editor<br>&lt;Alt+Backspace&gt;"
+msgstr "Többsoros szerkesztő<br>&lt;Alt+Backspace&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2498
+msgid "Confirm Multiline Message"
+msgstr "Többsoros üzenetküldés megerősítése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2499
+msgid ""
+"You're about to send a message with %1 lines of text.<br><br>There is "
+"nothing wrong with it, this warning is<br>here to prevent you from "
+"accidentally sending<br>a really large message just because you didn't edit "
+"it<br>properly after pasting text from the clipboard.<br><br>Do you want the "
+"message to be sent?"
+msgstr ""
+"Most éppen egy %1 soros üzenetet próbálsz elküldeni.<br><br>Ezzel semmi "
+"probléma nincs, ez a figyelmeztetés csak <br>a véletlenül elküldött több "
+"soros üzeneteket hivatott kivédeni<br>a valóban hosszú üzeneteknél, mivel "
+"lehet, hogy<br>nem szerkesztetted, így ez problémát okozhat.<br><br>Biztosan "
+"el akarod küldeni?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2505
+msgid "Yes, always"
+msgstr "Igen, mindig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2506
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:399
+msgid "Yes"
+msgstr "Igen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:806
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:375
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:400
+msgid "No"
+msgstr "Nem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2556
+msgid "<Ctrl+Return>; submits, <Alt+Backspace>; hides this editor"
+msgstr "<Ctrl+Return>; elküldés, <Alt+Backspace>; szerkesztő elrejtése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:126
+msgid "Address:"
+msgstr "Cím:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:140
+msgid "Current IRC URI"
+msgstr "Aktuális IRC URL:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:156
+msgid "Notify List"
+msgstr "Értesítési lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:263
+msgid "Part All Channels"
+msgstr "Összes csatorna elhagyása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:265
+msgid "Close All Queries"
+msgstr "Összes Privát bezárása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:270
+msgid "Unhighlight All Windows"
+msgstr "Kiemelések törlése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:273
+msgid "Unhighlight All Channels"
+msgstr "Kiemelések törlése Csatornákon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:275
+msgid "Unhighlight All Queries"
+msgstr "Kiemelések törlése Privátokon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:387
+msgid "Gender:"
+msgstr "Nem:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:394
+msgid "Male"
+msgstr "Férfi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:393
+msgid "Female"
+msgstr "Nő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:375
+msgid "Registered as"
+msgstr "Regisztrált: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:381
+msgid "(Matched by"
+msgstr "(egyezik "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:393
+msgid "On <b>"
+msgstr "- <b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:402
+msgid "Using server <b>%1</b>"
+msgstr "Használt szervere <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:407
+msgid "%1 hops"
+msgstr "%1 ugrás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:417
+msgid "Probably Away"
+msgstr "Valószínűleg nem elérhető"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:493
+msgid ""
+"KVIrc can accept only irc://, irc6://, ircs:// or irc6s:// URL's\n"
+"Your URL is invalid. Check spelling and try again"
+msgstr ""
+"A KVIrc csak irc:// irc6:// ircs:// vagy irc6s:// URLek kezelésére képes.\n"
+"A megadott URL helytelen, ellenőrízd és próbáld újra."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:554
+msgid ""
+"You have just attempted to close a console window with an active connection "
+"inside.\n"
+"Are you sure you wish to terminate the connection?"
+msgstr ""
+"Egy Konzol ablakot készülsz bezárni, ami aktív kapcsolattal rendelkezik.\n"
+"Biztosan meg szeretnéd szakítani a kapcsolatot?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:588
+msgid ""
+"You have just attempted to close the last console window.\n"
+"Are you sure you wish to quit KVIrc?"
+msgstr ""
+"Az utolsó konzol ablakot zárod épp le.\n"
+"Biztosan kilépsz a KVIrcből?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1019
+msgid "Failed to load avatar with name \"%Q\" and local path \"%Q\""
+msgstr "\"%Q\" avatar betöltése sikertelen, útvonal: \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:624
+msgid "Connection in progress..."
+msgstr "Kapcsolódás folyamatban..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1099
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:630
+msgid "Login in progress..."
+msgstr "Belépés folyamatban..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1179
+msgid "channel"
+msgstr "csatorna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1180
+msgid "channels"
+msgstr "csatorna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1181
+msgid "query"
+msgstr "privát"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1182
+msgid "queries"
+msgstr "privát"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1238
+msgid "Connected since"
+msgstr "Kapcsolódva "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1252
+msgid "Online for"
+msgstr "Elérhető "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1264
+msgid "Server idle for"
+msgstr "Szerver szerinti tétlenség"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:50
+msgid "This option is also available as"
+msgstr "Ez az opció elérhető, mint "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:683
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:275
+msgid "Advanced..."
+msgstr "Haladó..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:69
+msgid "Scri&pting"
+msgstr "Szkri&ptelés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:74
+msgid "&Tools"
+msgstr "Eszközök"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:81
+msgid "&Settings"
+msgstr "Beállítá&sok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:83
+msgid "&Window"
+msgstr "Ablak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:125
+msgid "&Help"
+msgstr "Segítség"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:119
+msgid "&Help Browser (Panel)"
+msgstr "Segítség böngészőpanel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:121
+msgid "Help Browser (&Window)"
+msgstr "Segítség ablak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:124
+msgid "&Tip of the Day"
+msgstr "A nap &Tippje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:127
+msgid "About &KVIrc"
+msgstr "A &KVIrcről"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:130
+msgid "KVIrc Home&page"
+msgstr "A KVIrc weboldala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:134
+msgid "KVIrc Russian Home&page"
+msgstr "Orosz KVIrc weboldal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:139
+msgid "KVIrc French Home&page"
+msgstr "Francia KVIrc weboldal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:143
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:339
+msgid "Subscribe to the Mailing List"
+msgstr "Feliratkozás a levelezőlistára"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:145
+msgid "Report a Bug / Propose Improvements"
+msgstr "Hiba jelentése / Funkció kérése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:148
+msgid "Join KVIrc International Channel on Freenode"
+msgstr "Csatlakozás a Freenode-on lévő hivatalos csatornára"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:150
+msgid "Join KVIrc International Channel on IRCNet"
+msgstr "Csatlakozás az IRCNet-en lévő hivatalos csatornára"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:155
+msgid "Join KVIrc Italian Channel on AzzurraNet"
+msgstr "Csatlakozás az AzzurraNeten lévő Olasz csatornára"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:161
+msgid "Join KVIrc French Channel on Freenode"
+msgstr "Csatlakozás a Francia csatornára a Freenode-on"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:164
+msgid "Join KVIrc French Channel on EuropNet"
+msgstr "Csatlakozás az EuropNet-en lévő Francia csatornára"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:179
+msgid "Show StatusBar"
+msgstr "Állapotsor mutatása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:194
+msgid "&Save Configuration"
+msgstr "Konfiguráció Menté&se"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:213
+msgid "Restore &Default Script"
+msgstr "Alapértelmezett szkript visszaállítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:630
+msgid "Disconnect"
+msgstr "Kapcsolat lezárása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:228
+msgid "New &Connection To"
+msgstr "Új kap&csolat ->"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:234
+msgid "Hide &Dock Icon"
+msgstr "Lecsatoló ikon rejtése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:237
+msgid "Show &Dock Icon"
+msgstr "Lecsatoló ikon mutatása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:111
+msgid "&Quit"
+msgstr "Kilépés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:265
+msgid "&Other..."
+msgstr "Egyéb..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:305
+msgid "Show &Icon Table"
+msgstr "&Ikon Tábla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:308
+msgid "Open &Terminal"
+msgstr "&Terminál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:308
+msgid ""
+"<b>Shift+Drag</b> or <b>Ctrl+Drag</b> to move the applet around<br><b>Right "
+"click</b> to see the other options"
+msgstr ""
+"<b>Shift+Mozgatás</b> vagy <b>Ctrl+Mozgatás:</b> applet mozgatása,"
+"<br><b>Jobb kattintás:</b> egyéb opciók"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:313
+msgid "<b>Right click</b> to add/remove applets"
+msgstr "<b>Jobb kattintás:</b> applet hozzáadása / eltávolítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:353
+msgid "Remove %Q"
+msgstr "Eltávolít: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:365
+msgid "Add Applet"
+msgstr "Applet hozzáadása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:404
+msgid ""
+"Drag the applet while holding the Shift or Ctrl key to move it to the "
+"desired position"
+msgstr ""
+"A Shift vagy Ctrl billentyű lenyomva tartásával és húzással tudod a számodra "
+"megfelelő helyre mozgatni az appletet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:93
+msgid "<b><font color=\"#EAEAEA\" size=\"-1\">Find Text</font></b>"
+msgstr "<b><font color=\"#EAEAEA\" size=\"-1\">Szöveg keresése</font></b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:118
+msgid "&Regular expression"
+msgstr "Pontos kifejezés&R"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:121
+msgid "E&xtended regexp."
+msgstr "Kiterjesztett rege&xp."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:126
+msgid "C&ase sensitive"
+msgstr "Nagybetű érzékeny"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:129
+msgid "Find &Prev."
+msgstr "Előző &p"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:133
+msgid "&Find Next"
+msgstr "Következő &F"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:880
+msgid "Find"
+msgstr "Keres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:214
+msgid "Type"
+msgstr "Típus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:166
+msgid "Set &All"
+msgstr "Mindent kijelöl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:170
+msgid "Set &None"
+msgstr "Kijelölések törlése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:174
+msgid "&Load From..."
+msgstr "Betö&ltés..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:178
+msgid "&Save As..."
+msgstr "Menté&s másként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:182
+msgid "Filter"
+msgstr "Szűrő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:234
+msgid "Select a Filter File"
+msgstr "Szűrő kiválasztása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:251
+#, c-format
+msgid "Can't open the filter file %s for reading."
+msgstr "%s szűrő megnyitása olvasásra sikertelen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:261
+msgid "Select a Name for the Filter File"
+msgstr "Adj nevet a szűrőfájlnak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:272
+msgid "Failed to write the filter file %Q (IO Error)"
+msgstr "Hiba a szűrő (%s) írásakor (IO Hiba)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:274
+msgid "Can't open the filter file %Q for writing"
+msgstr "%s szűrő megnyitása írásra sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:109
+msgid "Choose image ..."
+msgstr "Kép kiválasztása..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:122
+msgid "Builtin images"
+msgstr "Beépített képek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:131
+msgid "Small icons"
+msgstr "Kis ikonok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:138
+msgid "Full path"
+msgstr "Teljes útvonal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:241
+msgid "Builtin $icon(%Q) [index %d]"
+msgstr "Beépített $icon(%Q) [index %d]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:274
+msgid "directory"
+msgstr "könyvtár"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:300
+msgid "pixels"
+msgstr "pixel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:305
+msgid "bytes"
+msgstr "byte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:98
+msgid "Show User List"
+msgstr "Felhasználó lista mutatása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:105
+msgid "Query Targets"
+msgstr "Privát Célok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:165
+msgid "Query target:"
+msgstr "Privát célja:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:170
+msgid "%1 is %2 (%3)"
+msgstr "%1 - %2 (%3)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:172
+msgid "%1 is %2"
+msgstr "%1 - %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:186
+msgid "%1 is using irc server: %2 (%3 hops)"
+msgstr "%1 a %2-n keresztül kapcsolódik (%3 ugrás)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:188
+msgid "%1 is using irc server: %2"
+msgstr "%1 a %2-n keresztül kapcsolódik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:195
+msgid "%1 is probably away"
+msgstr "%1 valószínűleg nem elérhető"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:200
+msgid "Common channels with %1: %2"
+msgstr "%1 -val/vel közös csatornáitok: %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:254
+msgid "[Dead Query]"
+msgstr "[Halott Privát]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:240
+msgid "Query with %1!%2 (%3)"
+msgstr "Privát: %1!%2 (%3)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:242
+msgid "Query with %1!%2"
+msgstr "Privát: %1!%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:244
+msgid ", using server %1"
+msgstr ", %1 szervert használva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:246
+msgid " (%1 hops)"
+msgstr " (%1 ugrás)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:248
+msgid ", probably away"
+msgstr ", valószínűleg távol"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:252
+msgid "Common channels: %2"
+msgstr "Közös csatornák: %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:320
+msgid ""
+"The target of this query has changed from \r!n\r%Q\r [%Q@\r!h\r%Q\r] to \r!n"
+"\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr ""
+"A privát célja megváltozott \r!n\r%Q\r [%Q@\r!h\r%Q\r] -ról/ről \r!n\r%Q\r [%"
+"Q@\r!h\r%Q\r] -ra/re."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:389
+msgid "Common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Közös csatornáitok \r!n\r%Q\r : [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:392
+msgid "No common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "Nincsen közös csatornátok: \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:428
+msgid "[Dead query]"
+msgstr "[Halott Privát]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:578
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:645
+msgid "This query has no active targets, no message sent"
+msgstr "Ennek a privátnak nincs aktív célja, üzenet blokkolva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:617
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %s, no "
+"data sent to the server"
+msgstr ""
+"A titkosító nem tudott titkosítást beállítani a következő üzenetre: (%Q): %"
+"s, nemlett elküldve a szervernek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashcount.cpp:74
+msgid ""
+"The argument of the hash count '#' operator didn't evaluate to a hash: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+"Az argumentum # hash-a nem értelmezhető hashként: automatikus konverzió %Q "
+"típusra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:100
+msgid "DNS Lookup result for query \"%Q\""
+msgstr "DNS visszafejtés eredménye: \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:105
+msgid "Error: %Q"
+msgstr "Hiba: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:110
+msgid "Hostname %d: %Q"
+msgstr "Hosztnév %d: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:116
+msgid "IP address %d: %Q"
+msgstr "IP cím: %d: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:870
+msgid ""
+"Broken slot '%Q' in target object '%Q::%Q' while emitting signal '%Q' from "
+"object '%Q::%Q': disconnecting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:888
+msgid ""
+"Slot target object destroyed while emitting signal '%Q' from object '%Q::%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1040
+msgid "Listing Qt properties for object named \"%Q\" of KVS class %Q"
+msgstr "Qt tulajdonságok listázása \"%Q\" objektumról, KVS osztály: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1046
+#, c-format
+msgid "Properties for Qt class %s"
+msgstr "Qt tulajdonságok %s osztályra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1071
+msgid "Property: %c%Q%c, type %Q"
+msgstr "Tulajdonság: %c%Q%c, típus %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1131
+#, c-format
+msgid "%d properties listed"
+msgstr "%d tulajdonság listázva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1151
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1380
+msgid "The object named \"%Q\" of class %Q has no Qt properties"
+msgstr "\"%Q\" objektum %Q osztálynak nincs Qt tulajdonsága"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1396
+msgid "No Qt property named \"%Q\" for object named \"%Q\" of class %Q"
+msgstr "Nincs Qt tulajdonsága \"%Q\" objektumra %Q néven %Q osztálynak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1409
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed but it doesn't really exist"
+msgstr ""
+"Nem található \"%Q\" %Q név osztály %Q elemére, a tulajdonság indexelt , de "
+"valójában nem létezik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1417
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed and defined but the returned variant is not valid"
+msgstr ""
+"Tulajdonság nem található \"%Q\"-ra, \"%Q\" %Q osztályban. A tulajdonság "
+"indexelt és meghatározott, de a visszatérő variáns érvénytelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1200
+#, c-format
+msgid ""
+"The property is of type %s but the supplied argument can't be converted to "
+"that type (expecting \"%s\")"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1331
+msgid ""
+"A pixmap object, an image_id or an image file path is required for this "
+"property"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1352
+msgid "Can't find the requested image"
+msgstr "A kért kép nem található"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1512
+msgid ""
+"Property \"%Q\" for object named \"%Q\" of class %Q has an unsupported data "
+"type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1659
+msgid "Cannot find object function $%Q for object named \"%Q\" of class %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1661
+msgid "Cannot find object function $%Q::%Q for object named \"%Q\" of class %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1669
+msgid ""
+"Cannot call internal object function $%Q (for object named \"%Q\" of class %"
+"Q) from this context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:69
+msgid "Stray dot ('.') character or invalid following module command name"
+msgstr "Furcsa pont karakter vagy azt követő modulnév érvénytelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:70
+msgid "Syntax error: malformed module command identifier"
+msgstr "Szintaktikai hiba: értelmezhetetlen modul parancsazonosító"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:188
+msgid "Stray '::' sequence or invalid following alias name"
+msgstr "Furcsa '::' szekvencia vagy helytelen azt követő modulnév"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:95
+msgid "Syntax error: malformed alias identifier"
+msgstr "Szintaktikai hiba: értelmezhetetlen alias azonosító"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:102
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:196
+msgid "Stray ':' character: did you mean '...<namespace>::<alias_name>' ?"
+msgstr "Helytelen ':' karakter, úgy érted: '<namespace>::<alias_name>' ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:103
+msgid "Syntax error: malformed (alias?) command identifier"
+msgstr "Szintaktikai hiba: deformált (alias?) parancs azonosító"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:280
+msgid "Unknown callback command \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:465
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:44
+msgid "The current window is not a channel"
+msgstr "Az aktuális ablak nem csatorna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:532
+msgid ""
+"Timer name omitted but there is not current timer (this is not a timer "
+"callback)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:538
+msgid "Can't kill the timer '%Q' since it is not running"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:626
+msgid "List of active timers"
+msgstr "Aktív időzítők listája"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:637
+msgid "Persistent"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:640
+msgid "WindowLifetime"
+msgstr "AblakÉlettartam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:643
+msgid "SingleShot"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:652
+msgid "None"
+msgstr "Nincs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:663
+#, c-format
+msgid "Total: %u timers running"
+msgstr "Összesen: %u időzítő fut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:849
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:872
+msgid "Found character '%q' (unicode %x) where a slash '/' was expected"
+msgstr "'%q' karakter van, ahol (unicode %x) '/' per jel szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:842
+msgid ""
+"Unexpected end of command in binding operation, at least two slashes are "
+"missing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:865
+msgid ""
+"Unexpected end of command in binding operation, at least one slash is missing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:905
+msgid "Unknown binding operation '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:926
+msgid "Missing right side operand for the binding operator '=~'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:948
+msgid "Trailing garbage ignored after operator '++'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:960
+msgid "Missing right operand for operator '+='"
+msgstr "Hiányzó jobb operandus '+=' operátornál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:979
+msgid "Trailing garbage ignored after operator '--'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:986
+msgid ""
+"This looks a lot like an object handle dereferencing operator '->' but in "
+"fact it isn't. Maybe you forgot a '$' just after ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:994
+msgid "Missing right operand for operator '-='"
+msgstr "Hiányzó jobb operandus '-=' operátornál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1015
+msgid "Missing right operand for operator '<<='"
+msgstr "Hiányzó jobb operandus '<<=' operátornál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1025
+msgid "Missing right operand for operator '<<'"
+msgstr "Hiányzó jobb operandus '<<' operátornál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1039
+msgid "Missing right operand for operator '<,'"
+msgstr "Hiányzó jobb operandus '<,' operátornál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1053
+msgid "Missing right operand for operator '<+'"
+msgstr "Hiányzó jobb operandus '<+' operátornál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1075
+msgid "Missing right operand for operator '>>='"
+msgstr "Hiányzó jobb operandus '>>=' operátornál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1094
+msgid "Missing right operand for operator '.='"
+msgstr "Hiányzó jobb operandus '.=' operátornál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1113
+msgid "Missing right operand for operator '"
+msgstr "Hiányzó jobb operandus ' operátornál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:72
+msgid "Unknown operator"
+msgstr "Ismeretlen operátor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1178
+msgid "Unexpected (and senseless) read-only data evaluation"
+msgstr "Váratlan (és értelmetlen) csak olvasási adatkiértékelés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1180
+msgid "Syntax error: confused by earlier errors: bailing out"
+msgstr "Szintaktikai hiba: Korábbi hibák zavarosak: kidőlés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1160
+msgid "Unexpected end of script after a variable reference: expected operator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1176
+msgid ""
+"Unexpected character '%q' (unicode %x) after a void function call: end of "
+"instruction expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1179
+msgid "Unexpected character '%q' (unicode %x)"
+msgstr "Váratlan karakter '%q' (unicode %x)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:96
+msgid "/me can be used only in channels, queries and DCC chat windows"
+msgstr "/me csak csatornán, priváton és DCC beszélgetés ablakokban használható"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:385
+msgid "Invalid IRC url (%Q)"
+msgstr "Helytelen IRC cím (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:410
+msgid "The commandline for this url type seems to be broken (%Q)"
+msgstr "A paranccsor ehhez a cím típushoz látszólag hibás (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:412
+msgid "No commandline specified for this type of url (%Q)"
+msgstr "Nincs meghatározva művelet ehhez a címtípushoz (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:512
+msgid "Option setting error: Unknown option or invalid value for option type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:606
+msgid "Choose a file to parse"
+msgstr "Fájl kiválasztása értelmezésre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:639
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:643
+msgid "Failed to load the file '%Q' for parsing"
+msgstr "%Q fájlt nem sikerült betölteni értelmezésre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:715
+msgid "Missing channel list"
+msgstr "Hiányzó csatorna lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:753
+#, c-format
+msgid "You don't appear to be on channel %s"
+msgstr "Nem úgy látszik, mintha a %s csatornán lennél"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:802
+msgid "Module command call failed: can't load the module 'snd'"
+msgstr "Modul parancs hívási hiba: 'snd' modul nem tölthető be"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:809
+msgid ""
+"Module command call failed: the module 'snd' doesn't export a command named "
+"'play'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:864
+msgid "Popup %Q is not defined"
+msgstr "%Q popup nincs definiálva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:872
+msgid "A popup menu cannot be popped up twice"
+msgstr "Popup menü nem ugorhat fel kétszer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:897
+msgid "Invalid syntax for screen coordinates, using cursor position"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1011
+msgid "Empty target specified"
+msgstr "A meghatározott cél üres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:97
+msgid "[RAW]: %Q"
+msgstr "[RAW]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1237
+msgid "Window with id %Q not found: no rebinding performed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1330
+msgid "Failed to execute command '%Q'"
+msgstr "%Q parancs futtatása sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:242
+msgid "Missing alias name"
+msgstr "Hiányzó alias név"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:253
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:889
+msgid ""
+"Alias names can contain only letters, digits, underscores and '::' namespace "
+"separators"
+msgstr ""
+"Alias neve karaktereket, számokat, aláhúzást és névtér elválasztókat (::)"
+"tartalmazhat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:903
+msgid ""
+"Stray ':' character in alias name: did you mean ...<namespace>::<name> ?"
+msgstr "':' karater az alias nevében: úgy érted: <névtér>::<név> ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:914
+msgid "Found an empty namespace in alias name"
+msgstr "Üres névtér az alias nevében"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:277
+msgid "The alias %Q is not existing"
+msgstr "%Q alias nem létezik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:436
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:413
+msgid "The specified window has no button containers"
+msgstr "A megadott ablaknak nincs gomb tárolója"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:447
+msgid "Window button '%Q' not found"
+msgstr "Ablak gomb '%Q' nem található"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:445
+msgid "Can't find the icon '%Q'"
+msgstr "%Q ikon nem található"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:532
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:540
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1197
+msgid "No such event (%Q)"
+msgstr "%Q esemény nem létezik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:552
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1222
+msgid "No handler '%Q' for raw numeric event '%d'"
+msgstr "Nincs kezelője '%Q' '%d' RAW eseménynek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1248
+msgid "No handler '%Q' for event '%Q'"
+msgstr "%Q -nak nincs kezelője %Q eseményre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:936
+msgid "The specified ping time is invalid: assuming zero (no ping)"
+msgstr ""
+"A meghatározott ping idő érvénytelen: feltételezem, hogy 0 (nincs ping)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:946
+msgid "The specified maximum run time is invalid: assuming zero (infinite)"
+msgstr "A megadott futási idő érvénytelen: feltételezem, hogy 0 (végtelen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:965
+msgid "Failed to start the process"
+msgstr "Folyamat indítása sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1010
+msgid "The specified object does not exist"
+msgstr "A megadott objektum nem létezik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1113
+msgid "Missing timer name"
+msgstr "Hiányzó stopper név"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1122
+msgid "Missing timeout delay"
+msgstr "Hiányzó időtúllépési késleltetés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1129
+msgid "The timeout delay didn't evaluate to an integer"
+msgstr "A késleltetési időtartam nem értelmezhető egészként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1152
+msgid "Unable to add the timer: insufficient system resources"
+msgstr "Stopper hozzáadása sikertelen: nincs elegendő erőforrás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_eventmanager.cpp:503
+msgid "Event handler %Q is broken: disabling"
+msgstr "%Q eseménykezelő hibás, letiltva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_moduleinterface.cpp:166
+msgid "Can't unload the module: it has locked itself in memory"
+msgstr ""
+"A modul által foglalt memória felszabadítása sikertelen: a modul zárolta "
+"magát"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:123
+msgid "Unknown binary operator '=%q': did you mean '==' ?"
+msgstr "Ismeretlen bináris operátor '=%q': úgy érted '==' ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:221
+msgid "Unknown binary operator '%q'"
+msgstr "Ismeretlen bináris operátor '%q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:305
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:371
+msgid "Unexpected end of script in expression"
+msgstr "A szkript kifejezés váratlanul véget ért"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:451
+msgid ""
+"Unexpected character %q (unicode %h) in expression. If it meant to be a "
+"string use the quotes."
+msgstr ""
+"Ismeretlen karakter %q (unicode %h) a kifejezésben. Ha szövegként lett "
+"megadva, használj idézőjeleket."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:466
+msgid "Unexpected empty expression operand"
+msgstr "Váratlan üres kifejezés operandus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:91
+msgid "say: injected commandline"
+msgstr "say: beszúrt paranccsor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:94
+msgid "Say parse error: Broken command"
+msgstr "Say értelmezési hiba: Hibás parancs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:250
+msgid ""
+"Couldn't find a suitable IRC context for the connection, try using -n or -u"
+msgstr ""
+"Nem található megfelelő IRC környezet a kapcsolathoz, próbáld -n vagy -u "
+"kapcsolóval"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:259
+msgid "Another connection is already in progress in the selected IRC context"
+msgstr "A kiválasztott IRC környezetben már van élő kapcsolat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:369
+msgid "No menu bar item with text '%Q'"
+msgstr "Nincs menüelem %Q szöveggel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:383
+msgid "Invalid index specified: ignored"
+msgstr "Megadott index helytelen: mellőzve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:392
+msgid "The popup '%Q' is not defined"
+msgstr "%Q popup nincs meghatározva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:604
+msgid "No target channel specified and the current window is not a channel"
+msgstr "Nincs megadott cél és az aktuális ablak nem csatorna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:705
+msgid "No catalogue %Q for the current language found"
+msgstr "Nincs %Q katalógus, az aktuális nyelvre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:744
+msgid "The catalogue %Q was not loaded"
+msgstr "%Q csomag nincs betöltve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:80
+msgid ""
+"Empty window identifier specified in the standard rebinding switch: no "
+"rebinding performed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:91
+msgid ""
+"Invalid window specified in the standard rebinding switch: no rebinding "
+"performed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:94
+msgid ""
+"The left side of the scope operator didn't evaluate as an object reference"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:100
+msgid ""
+"The left side of the scope operator evaluated to a null object reference"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:107
+msgid ""
+"The left side of the scope operator evaluated to an invalid object reference "
+"(object doesn't exist)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayreferenceassert.cpp:77
+msgid "Array reference assert failed: the variable evaluated to type '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:247
+msgid "Operand of unary operator didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:415
+msgid "Left operand didn't evaluate to a number"
+msgstr "Bal operandus nem értelmezhető számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:422
+msgid "Right operand didn't evaluate to a number"
+msgstr "Jobb operandus nem értelmezhető számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:547
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:575
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:583
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:374
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:66
+msgid "Division by zero"
+msgstr "Nullával való osztási hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:107
+#, c-format
+msgid "line %d, near character %d"
+msgstr "%d. sor, közel %d. karakterhez"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:187
+msgid "This command can be used only in windows bound to an IRC context"
+msgstr "Ez a parancs csak IRC környezettel rendelkező ablakokban használható"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:193
+msgid "You're not connected to an IRC server"
+msgstr "Nincs kapcsolat az IRC szerverrel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:199
+msgid "Missing parameter"
+msgstr "Hiányzó paraméter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:128
+msgid "Hash key evaluated to empty string: fix the script"
+msgstr "Hash kulcs nullára kiértékelve: javítsd a szkriptet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:99
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:144
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash automatic "
+"conversion from %Q supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashreferenceassert.cpp:77
+msgid "Hash reference assert failed: the variable evaluated to type '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:100
+msgid "Failed to send an unknown command as /raw"
+msgstr "Ismeretlen /raw parancs küldése sikertelen rawként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:104
+msgid "Call to undefined command '%Q'"
+msgstr "Ismeretlen parancs: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:116
+msgid "Error in inner alias command call '%Q', called from this context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:74
+msgid "There are no extended scope variables in this scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:111
+msgid "Missing class name"
+msgstr "Hiányzó osztály név"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:120
+msgid "A class can't be a subclass of itself"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:127
+msgid "Couln't find base class named \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:137
+msgid ""
+"Detected a loop in the inheritance tree of the base class \"%Q\": redefine "
+"that class first"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:146
+msgid "Can't override the builtin class \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:71
+msgid "Module command call failed: can't load the module '%Q': %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:77
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a command named '%"
+"Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:113
+msgid "Broken condition in menu setup: assuming false"
+msgstr "Hibás feltétel a menü beállításban: feltételezem, hogy hamis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:220
+msgid "Broken icon parameter: ignoring"
+msgstr "Hibás ikon paraméter: mellőzve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:228
+msgid "Can't find the icon \"%Q\": ignoring"
+msgstr "\"%Q\" ikon nem található, mellőzés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:244
+msgid "Broken text parameter: assuming empty string"
+msgstr "Hibás szöveg paraméter: feltételezett üres szöveg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:486
+msgid "Recursive definition detected for popup '%Q': ignoring"
+msgstr "Rekurzív definíció %Q popup-nál, mellőzés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:500
+msgid "Can't find the external popup '%Q'; ignoring"
+msgstr "Külső popup (%Q) nem található, mellőzés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:853
+msgid "Broken prologue in popup menu '%Q': ignoring"
+msgstr "Hibás prologóus a '%Q' felbukkanó menüben, mellőzés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:868
+msgid "Broken epilogue in popup menu '%Q': ignoring"
+msgstr "Hibás epilógus '%Q' felbukkanó menüben, mellőzés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:70
+msgid "Module function call failed: can't load the module '%Q': %Q"
+msgstr "Modul funkció hívása sikertelen: %Q:%Q betöltése sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:77
+msgid ""
+"Module function call failed: the module '%Q' doesn't export a function named "
+"'%Q'"
+msgstr "Modul funkció hívása sikertelen: a %Q modul nem exportált %Q funkciót"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_timermanager.cpp:244
+msgid "Timer '%Q' has a broken callback handler: killing the timer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:229
+msgid "The target variable didn't evaluate to an integer or real value"
+msgstr "A cél változó nem értelmezhető egész vagy valós számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:283
+msgid "The right side of operator '&=' didn't evaluate to an integer"
+msgstr "Az operátor jobb oldala '&=' nem értékelhető ki egész számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:294
+msgid "The left side of operator '&=' didn't evaluate to an integer"
+msgstr "Az operátor bal oldala '&=' nem értékelhető ki egész számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:353
+msgid "The right side of operator '/=' didn't evaluate to a number"
+msgstr "Az operátor jobb oldala '/=' nem értékelhető ki számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:364
+msgid "The left side of operator '/=' didn't evaluate to a number"
+msgstr "Az operátor bal oldala '/=' nem értékelhető ki számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:446
+msgid "The right side of operator '%=' didn't evaluate to a number"
+msgstr "Az operátor jobb oldala '%=' nem értékelhető ki számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:457
+msgid "The left side of operator '%=' didn't evaluate to a number"
+msgstr "Az operátor bal oldala '%=' nem értékelhető ki számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:541
+msgid "The right side of operator '*=' didn't evaluate to a number"
+msgstr "Az operátor jobb oldala '*=' nem értékelhető ki számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:552
+msgid "The left side of operator '*=' didn't evaluate to a number"
+msgstr "Az operátor bal oldala '*=' nem értékelhető ki számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:620
+msgid "The right side of operator '|=' didn't evaluate to an integer"
+msgstr "Az operátor jobb oldala '|=' nem értékelhető ki egész számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:631
+msgid "The left side of operator '|=' didn't evaluate to an integer"
+msgstr "Az operátor bal oldala '|=' nem értékelhető ki egész számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:691
+msgid "The right side of operator '<<=' didn't evaluate to an integer"
+msgstr "Az operátor jobb oldala '<<=' nem értékelhető ki egész számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:702
+msgid "The left side of operator '<<=' didn't evaluate to an integer"
+msgstr "Az operátor bal oldala '<<=' nem értékelhető ki egész számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:763
+msgid "The right side of operator '>>=' didn't evaluate to an integer"
+msgstr "Az operátor jobb oldala '>>=' nem értékelhető ki egész számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:774
+msgid "The left side of operator '>>=' didn't evaluate to an integer"
+msgstr "Az operátor bal oldala '>>=' nem értékelhető ki egész számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:840
+msgid "The right side of operator '-=' didn't evaluate to a number"
+msgstr "Az operátor jobb oldala '-=' nem értékelhető ki számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:851
+msgid "The left side of operator '-=' didn't evaluate to a number"
+msgstr "Az operátor bal oldala '-=' nem értékelhető ki számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:923
+msgid "The right side of operator '+=' didn't evaluate to a number"
+msgstr "Az operátor jobb oldala '+=' nem értékelhető ki számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:934
+msgid "The left side of operator '+=' didn't evaluate to a number"
+msgstr "Az operátor bal oldala '+=' nem értékelhető ki számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1009
+msgid "The right side of operator '^=' didn't evaluate to an integer"
+msgstr "Az operátor jobb oldala '^=' nem értékelhető ki egész számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1020
+msgid "The left side of operator '^=' didn't evaluate to an integer"
+msgstr "Az operátor bal oldala '^=' nem értékelhető ki egész számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1462
+msgid ""
+"The regular expression matched a zero-length substring: this is not valid in "
+"the s/// operator, skipping"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:52
+msgid "Unexpected end of script after '$' function call prefix"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:53
+msgid "Unexpected character %q (unicode %x) after '$' function call prefix"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:54
+msgid ""
+"Syntax error after '$' function call prefix. If you want to use a plain '$' "
+"in the code you need to escape it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:63
+msgid "Invalid expression evaluation in object scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:78
+msgid "Invalid command evaluation in object scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:87
+msgid "Empty instruction block for command evaluation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:101
+msgid ""
+"Parameter identifiers are forbidden in object scope (after the '->' operator)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:147
+msgid ""
+"Ending index of a multiple parameter identifier is lower or equal to the "
+"starting index. This will evaluate to a single parameter identifier."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:163
+msgid "Syntax error: invalid $$ ($this) function call in object scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:189
+msgid "Syntax error: malformed alias function call identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:197
+msgid "Syntax error: malformed (alias?) function call identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:307
+#, c-format
+msgid "Invalid data type for parameter \"%s\""
+msgstr "Helytelen adattípus \"%s\" paraméterhez"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:122
+#, c-format
+msgid "found empty string where type '%s' was expected"
+msgstr "üres sztringet találtam ahol '%s'-t vártam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:129
+msgid "found string value \"%Q\" where type '%s' was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:134
+msgid "found type %Q where type '%s' was expected"
+msgstr "%Q típus, ahol a várt %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:154
+#, c-format
+msgid "Missing non-optional parameter \"%s\""
+msgstr "Nem opcionális paraméter hiányzik: \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:282
+msgid "found empty string while a non empty one was expected"
+msgstr "üres sztring, ahol nem üres szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:309
+#, c-format
+msgid "found signed integer \"%d\" where type 'unsigned integer' was expected"
+msgstr "\"%d\" előjeles egész szám, ahol előjel nélküli szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:253
+msgid "This window has no associated IRC context"
+msgstr "Ennek az ablaknak nincs hozzárendelt IRC környezete"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:483
+#, c-format
+msgid "No such IRC context (%u)"
+msgstr "Nincs ilyen IRC környezet (%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:471
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:586
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:494
+msgid "This window is not associated to an IRC context"
+msgstr "Ez az ablak nincs hozzárendelve IRC környezethez"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:809
+msgid ""
+"The specified format string wasn't accepted by the underlying system time "
+"formatting function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:70
+msgid "Unterminated c-style multiline comment"
+msgstr "Befejezetlen c-típusú többsoros komment"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:71
+msgid "Unexpected end of script in multiline comment"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:88
+msgid ""
+"Unexpected character '%q' (unicode %x) after a slash (it is a typo or a "
+"malformed comment begin ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:71
+msgid "Call to undefined function '%Q'"
+msgstr "Ismeretlen függvény hívása: (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:79
+msgid "Error in inner alias function call '%Q', called from this context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:73
+msgid "Array index didn't evaluate to an integer"
+msgstr "Tömb index nem értelmezhető egész számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:79
+msgid ""
+"Array index evaluated to a negative integer (non negative integer expected)"
+msgstr "Az index negatív számként értelmezhető (nem negatív szükséges)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:106
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from %Q supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:142
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:219
+#, fuzzy
+msgid "Lag meter was not enabled"
+msgstr "Lagmérő motor kikapcsolva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:546
+msgid "No such event handler (%Q) for event %Q"
+msgstr "Nincs %Q eseménykezelő %Q eseményhez"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands.cpp:153
+msgid "This is not a channel"
+msgstr "Ez nem egy csatorna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:99
+msgid ""
+"Unexpected end of command buffer while looking for the \"perl.end\" statement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:147
+msgid "Trailing garbage at the end of the break command: ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:209
+msgid "The 'unset' command needs a variable list"
+msgstr "Az 'unset' parancsnak változókra van szüksége"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:280
+msgid "Found character %q (unicode %x) where a variable was expected"
+msgstr "%q karakter (unicode %x) ahol változó szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:219
+msgid "'unset' command used without a variable list"
+msgstr "'unset' parancs változók nélkül?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:279
+msgid "The 'global' command needs a variable list"
+msgstr "A 'global' parancs változók nélkül?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:631
+msgid "Found character %q (unicode %x) where an open parenthesis was expected"
+msgstr "%q karakter (unicode %x) ahol nyitó zárójel szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:439
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:538
+msgid "Unexpected end of buffer in class definition"
+msgstr "Váratlan puffer vég osztálydefiníciónál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:474
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:501
+msgid "Found character %q (unicode %x) where a function name was expected"
+msgstr "%q karakter (unicode %x) ahol egy funkció név szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:522
+msgid "Unexpected end of buffer in function parameter list reminder"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:630
+msgid "The while command needs an expression enclosed in parenthesis"
+msgstr "A 'while' parancsnak szüksége van zárójelezett kifejezésre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:654
+msgid ""
+"The last while command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+"Az utolsó while parancsnak a bufferben nincsenek utasításai: értelmetlen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:655
+msgid ""
+"Unexpected end of script while looking for the instruction block of the "
+"while command"
+msgstr "Váratlan szkript vég, ahol a while kommand utasításai szükségesek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:741
+msgid ""
+"Unexpected end of command after the 'do' command block: expected 'while' "
+"keyword"
+msgstr "Váratlan parancsvég a 'do' parancsblokk után ahol 'while' szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:743
+msgid "Found character %q (unicode %x) where a 'while' keyword was expected"
+msgstr "%q karakter (unicode %x) ahol egy kulcsszó szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:759
+msgid ""
+"The 'while' block of the 'do' command needs an expression enclosed in "
+"parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:779
+msgid "Garbage string after the expression in 'do' command: ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:825
+msgid "The 'if' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:850
+msgid ""
+"The last if command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:851
+msgid ""
+"Unexpected end of script while looking for the instruction block of the if "
+"command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:966
+msgid ""
+"Unexpected end of buffer while looking for the closing ')' in the 'for' "
+"command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1015
+msgid "The 'for' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1092
+msgid ""
+"Found char %q (unicode %x) while looking for the terminating ')' in 'for' "
+"command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1122
+msgid "Empty infinite 'for' loop: fix the script"
+msgstr "Végtelen és üres 'for' ciklus: ellenőrízd a szkriptet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1181
+msgid "The 'foreach' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1205
+msgid ""
+"The 'foreach' command expects a writeable iteration variable as first "
+"parameter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1196
+msgid ""
+"Found character '%q' (unicode %x) where '%' or '$' was expected: see /help "
+"foreach for the command syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1207
+msgid "Unexpected function call as 'foreach' iteration variable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1209
+msgid "Unexpected read-only variable as 'foreach' iteration variable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1219
+msgid ""
+"Unexpected end of 'foreach' parameters: at least one iteration data argument "
+"must be given"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1223
+msgid ""
+"The 'foreach' command expects a comma separated list of iteration data items "
+"after the first parameter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1244
+msgid ""
+"Found empty 'foreach' execution block: maybe you need to fix your script ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1365
+msgid "The 'switch' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1415
+msgid "Unexpected end of buffer in switch condition block"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1422
+msgid ""
+"Found character %q (unicode %x) where a 'case','match','regexp','default' or "
+"'break' label was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1460
+msgid ""
+"Found 'break' label where a 'case','match','regexp' or 'default' label was "
+"expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1465
+msgid ""
+"Found token '%Q' where a 'case','match','regexp','default' or 'break' label "
+"was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1528
+msgid "Senseless empty switch command: fix the script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1562
+msgid "Unexpected end of buffer in defpopup block"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1569
+msgid ""
+"Found character %q (unicode %x) where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1668
+msgid "Found empty prologue block: maybe you need to fix the script?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1670
+msgid "Found empty epilogue block: maybe you need to fix the script?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1703
+msgid ""
+"Unexpected empty <text> field in label parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1753
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1801
+msgid ""
+"Unexpected empty <text> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1777
+msgid ""
+"Found empty instruction for popup item: maybe you need to fix the script?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1809
+msgid ""
+"Unexpected empty <name> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1821
+msgid ""
+"Found token '%Q' where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1931
+msgid "The 'defpopup' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:109
+msgid "beginning of input"
+msgstr "bevitel kezdete"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:121
+msgid ""
+"Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %s"
+"\" for the command syntax"
+msgstr ""
+"'%q' karakter (unicode 0x%x), ahol '%c' szükséges: Lásd: \"/help %s\" a "
+"parancs szintaxisáért"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:124
+#, c-format
+msgid ""
+"Found end of input where character '%c' was expected: see \"/help %s\" for "
+"the command syntax"
+msgstr ""
+"A bevitelnek vége szakadt, ahol %c szükséges. Lásd \"/help %s\" a parancs "
+"helyes szintaxisáért"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:197
+msgid "Empty script"
+msgstr "Üres szkript"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2650
+msgid ""
+"Syntax error after '%' variable prefix. If you want to use a plain '%' in "
+"the code you need to escape it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2667
+msgid "Objects have no extended scope variables"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2727
+msgid "Found character '%q' (unicode %x) where an instruction was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2760
+msgid "Unterminated instruction block"
+msgstr "Befejezetlen megjegyzés blokk"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2761
+msgid "Unexpected end of script in instruction block (missing closing brace)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2838
+msgid ""
+"The dash after a command should be followed by a letter (switch), by a digit "
+"(negative number) or be escaped"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2842
+msgid "Unexpected character '%q' (unicode %x) after a switch dash"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2844
+msgid "Unexpected end of script after a switch dash"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2869
+msgid ""
+"The above problem might be related to the switch dash and the following "
+"equal sign"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2948
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3016
+msgid "Unexpected end of script in parameter list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2954
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3022
+msgid "Unexpected end of line in parameter list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3083
+msgid ""
+"Nested character %q corresponding to expected terminator, this might confuse "
+"me a bit: it is a good idea to enclose it in quotes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3093
+msgid "Skipping nested terminator character %q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3120
+msgid "Stray backslash at the end of the script"
+msgstr "Nem oda tartozó visszaperjel a szkript végén"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3393
+msgid "Unterminated hash key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3387
+msgid "Unexpected end of script in hash key (missing '}' character ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3394
+msgid ""
+"Unexpected end of line in hash key (missing '}' character or unescaped "
+"newline)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3679
+msgid "Unterminated string constant"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3673
+msgid "Unexpected end of script in string constant (missing \" character ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3680
+msgid ""
+"Unexpected end of line in string constant (missing \" character or unescaped "
+"newline)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_processmanager.cpp:225
+msgid "Error triggered from process callback handler: killing process"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arraycount.cpp:72
+msgid ""
+"The argument of the array count '#' operator didn't evaluate to an array: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:197
+msgid "This window has no associated IRC context and is not a DCC chat"
+msgstr ""
+"Ehhez az ablakhoz nincs hozzárendelt IRC környezet, illetve nem DCC chat "
+"ablak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:293
+msgid "Class \"%Q\" is not defined"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:303
+msgid "The specified parent object does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:430
+msgid "There is no option named '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:85
+msgid "Internal error: pure virtual evaluateReadOnly called"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:91
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:104
+msgid ""
+"Internal error: trying to evaluate as read-write a read-only data location"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:98
+msgid "Internal error: pure virtual evaluateReadOnlyInObjectScope called"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:215
+msgid "[KVS]%c Warning: %Q"
+msgstr "[KVS]%c Figyelmeztetés: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:211
+msgid "[KVS]%c Compilation Error: %Q"
+msgstr "[KVS]%c Fordítási hiba: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:219
+msgid "[KVS]%c Runtime Error: %Q"
+msgstr "[KVS]%c Futás idejű hiba: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:224
+msgid "[KVS] in script context \"%Q\""
+msgstr "[KVS] \"%Q\" szkript környezetben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:226
+msgid "[KVS] in script context \"%Q\", %Q"
+msgstr "[KVS] \"%Q\", %Q script környezetben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:233
+msgid "[KVS] Code listing:"
+msgstr "[KVS] Kód listázás:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:238
+msgid "[KVS] Window:"
+msgstr "[KVS] Ablak:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:242
+#, c-format
+msgid "[KVS] Destroyed window with pointer %x"
+msgstr "[KVS] Törölt ablak %x mutatóval"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:246
+msgid "[KVS] Call stack:"
+msgstr "[KVS] Hívó verem:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:464
+#, c-format
+msgid "Window with ID '%s' not found, returning empty string"
+msgstr "%s azonosítójú ablak nem található, visszatérés üres sztringgel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:130
+msgid "The specified window is not a channel"
+msgstr "A megadott ablak nem csatorna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:392
+msgid "The $sw() function can be used only in aliases"
+msgstr "Az $sw() funkció csak aliasokkal használható"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:302
+msgid "Invalid pitch value: using default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:312
+msgid "Invalid duration value: using default"
+msgstr "Helytelen időtartam: alapértelmezett használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:421
+msgid "No button with type %Q named %Q"
+msgstr "%Q típusú gomb nincs %Q névvel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:632
+msgid "Can't delete a null object reference"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:638
+msgid "Can't delete an inexisting object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:692
+msgid "Inexisting popup \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:698
+msgid ""
+"Popup menu self-modification is not allowed (the popup is probably open)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:705
+msgid "The menu item with id \"%Q\" does not exist in popup \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:860
+msgid ""
+"The argument of the -w switch did not evaluate to a valid window id: using "
+"default"
+msgstr ""
+"A -q kapcsolója nem értelmezhető ablak azonosítóként, alapértelmezett "
+"használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:869
+msgid ""
+"The argument of the i switch did not evaluate to a number: using default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:981
+msgid "Invalid color-set specification, using default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:992
+#, c-format
+msgid "Window '%s' not found, using current one"
+msgstr "%s ablak nem található, az aktuálist veszem alapértelmezettnek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:78
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a callback "
+"command named '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp:401
+#, c-format
+msgid "The popup '%s' is actually locked: 'self-modifications' are not allowed"
+msgstr "A %s felbukkanó zárolva van. Ön-módosítás nem engedélyezett"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:822
+#, c-format
+msgid "Ignoring DCC from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "CTCP mellőzve: \r!nc\r%s\r [%s@\r!h\r%s\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:839
+#, c-format
+msgid "Ignoring CTCP from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "CTCP mellőzve: \r!nc\r%s\r [%s@\r!h\r%s\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:978
+msgid "The following CTCP reply has unrecognized target %Q"
+msgstr "CTCP válasznak ismeretlen a célja (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1025
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1128
+msgid "Channel CTCP"
+msgstr "Csatorna CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:988
+msgid "%Q %Q reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "%Q %Q válasz \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1018
+msgid "The following CTCP request has unrecognized target %Q"
+msgstr "%Q CTCP kérésnek ismeretlen a címzettje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1032
+msgid ""
+"%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignored (flood limit "
+"exceeded)"
+msgstr ""
+"%Q %Q %c kérés \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), mellőzve (árasztási küszöböt "
+"meghaladta)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1036
+msgid "ignored (unrecognized)"
+msgstr "mellőzve (ismeretlen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "ignored"
+msgstr "mellőzve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "replied"
+msgstr "megválaszolva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1041
+msgid "%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+msgstr "%Q %Q %c kérés \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1079
+msgid "The following CTCP PING reply has unrecognized target \"%Q\""
+msgstr "A következő CTCP PING válasznak a célja ismeretlen: \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1113
+#, c-format
+msgid ""
+"The following CTCP PING reply has a broken time identifier \"%S\", don't "
+"trust the displayed time"
+msgstr ""
+"A következő CTCP PING válasznak hibás az időbélyege, \"%S\", ne bízza "
+"megjelenített időértékben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1132
+msgid "%Q PING reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sec %u msec"
+msgstr "%Q PING válasz \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u mp %u mmp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1466
+msgid "The following CTCP ACTION has unrecognized target %Q"
+msgstr "%Q CTCP ACTION-nak ismeretlen a célpontja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1471
+msgid "CTCP ACTION from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "CTCP ACTION \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1517
+msgid "Unable to add file offer for file %Q (File not readable?)"
+msgstr "%Q nem küldhető el. (A fájl nem olvasható?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1521
+msgid "Added %d sec file offer for file %Q (%Q) to recipient %Q"
+msgstr "%d másodperc hozzáadva %Q (%Q) fogadási időtartamhoz. Címzett: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "private"
+msgstr "privát"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "channel notification:"
+msgstr "csatorna értesítő:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1579
+msgid "notification"
+msgstr "értesítő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1584
+msgid "%Q unsets avatar"
+msgstr "%Q nem állított be avatart"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1591
+msgid "%Q changes avatar to %s"
+msgstr "%Q %s -ra/re változtatta az avatarját"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1637
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (HTTP GET %s)"
+msgstr ""
+": Nincs érvényes helyi másolata az avatarnak, érvényes letöltése: (HTTP GET %"
+"s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1644
+msgid ""
+": No valid local copy of avatar available; failed to start an HTTP transfer, "
+"ignoring"
+msgstr ""
+": Nincs érvényes helyi másolata az avatarnak, HTTP adatátvitel sikertelen, "
+"mellőzés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1652
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (DCC GET %s)"
+msgstr ""
+": Nincs érvényes helyi másolata az avatarnak, érvényes letöltése: (DCC GET %"
+"s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1664
+msgid ""
+": No valid local copy of avatar available; flood limit exceeded, ignoring"
+msgstr ""
+": Nincs érvényes helyi másolata az avatarnak, árasztási küszöb meghaladva, "
+"mellőzés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1669
+msgid ": No valid local copy of avatar available, ignoring"
+msgstr ": Nincs elérhető helyi másolat az avatarról, mellőzés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1677
+msgid ": No such nickname in the user database, ignoring the change"
+msgstr ": Nincs ilyen felhasználónév az adatbázisban, változás mellőzése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1717
+msgid "Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S)"
+msgstr "DCC kérés %S mellőzve: \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1759
+msgid "Processing DCC %Q request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s)"
+msgstr "DCC válasz: %Q kérés: \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1770
+#, c-format
+msgid "Unable to process the above request: Cannot load DCC module (%s)"
+msgstr ""
+"Fenti kérés teljesítése sikertelen. DCC modul (%s) betöltése sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1776
+msgid "Unable to process the above request: DCC module may be broken"
+msgstr "Fenti kérés teljesítése sikertelen. DCC modul valószínűleg megsérült."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:132
+msgid ""
+"[Server parser]: Encountered problems while parsing the following message:"
+msgstr "[Értelmező]: A következő üzenek feldolgozásakor hibák léptek fel:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:134
+msgid "[Server parser]: [%s][%s] %Q"
+msgstr "[Értelmező]: [%s][%s] %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:136
+#, c-format
+msgid "[Server parser]: %s"
+msgstr "[Értelmező]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:98
+msgid "Received ping from \r!s\r%Q\r (PING %Q), replied pong"
+msgstr "Ping kérés: \r!s\r%Q\r (PING %Q), megválaszolva: pong"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:125
+#, c-format
+msgid "Received pong from \r!s\r%s\r (PONG %s)"
+msgstr "Beérkezett pong: \r!s\r%s\r (PONG %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:151
+msgid "Server ERROR: %Q"
+msgstr "Szerver HIBA: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:174
+msgid "Missing channel parameter in join message"
+msgstr "Hiányzó csatorna paraméter a csatlakozó üzenetben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:209
+msgid "Received a join message for an unknown channel, possible desync"
+msgstr ""
+"Csatorna belépő üzenetet kaptam egy ismeretlen csatornáról, valószínűleg "
+"szinkron hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:305
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r [implicit +%c umode change]"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] csatlakozott: \r!c\r%Q\r [implicit +%c umode "
+"change]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:310
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] csatlakozott a(z) \r!c\r%Q\r csatornára."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:324
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just joined \r!c\r%Q\r"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] épp most csatlakozott \r!c\r%Q\r csatornára."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:355
+msgid "Received a part message for an unknown channel, possible desync"
+msgstr ""
+"Ismeretlen csatornáról lelépő üzenetet kaptam, valószínűleg szinkron hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:384
+msgid "You have left channel \r!c\r%Q\r"
+msgstr "Leléptél \r!c\r%Q\r csatornáról"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:386
+msgid "You have left channel \r!c\r%Q\r: %Q"
+msgstr "Leléptél \r!c\r%Q\r: %Q csatornáról"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:402
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] lelépett \r!c\r%Q\r: csatornáról: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:406
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] lelépett a(z) \r!c\r%Q\r csatornáról."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:420
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r: %Q"
+msgstr ""
+"\r!nc\r%Q\r [%Q@\r!h\r%Q\r] épp most lépett le \r!c\r%Q\r csatornáról: %Q "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:424
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r"
+msgstr "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] épp most lépett le \r!c\r%Q\r csatornáról."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:494
+#, c-format
+msgid "Netsplit detected: %s"
+msgstr "Netsplitet észleltem: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:546
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:562
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] kilépett IRCről: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:589
+msgid "Received a kick message for an unknown channel, possible desync"
+msgstr "Ismeretlen csatornáról kaptam kirúgó üzenetet, valószínűleg deszinkron"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:626
+msgid "You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!c\r%Q\r csatornáról ki lettél rúgva \r!n\r%Q\r [%Q@\r!h\r%Q\r] által. "
+"Indok: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:633
+msgid "Attempting to rejoin \r!c\r%Q\r..."
+msgstr "Újracsatlakozási próbálkozás \r!c\r%Q\r..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:670
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@"
+"\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] kirúgva \r!c\r%Q\r csatornáról \r!n\r%Q\r [%Q@\r!h"
+"\r%Q\r]: által, indok: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:682
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just been kicked from \r!c\r%Q\r by \r!n\r%Q"
+"\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] éppen kirúgta \r!c\r%Q\r csatornáról \r!n\r%Q\r [%"
+"Q@\r!h\r%Q\r]. Indok: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:710
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+"A következő üzenet titkosított, de a titkosító képtelen volt dekódolni: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:776
+msgid "Ignoring query-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "PRIVMSG mellőzve \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:843
+msgid ""
+"Spam privmsg from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%s\")"
+msgstr ""
+"Privát spam üzenet: \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (egyező spam-szó \"%s\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:984
+msgid "Ignoring channel-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "PRIVMSG mellőzve \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1106
+msgid "Ignoring Notice from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "PRIVMSG mellőzve \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1159
+msgid "NickServ requests authentication, executing scheduled command"
+msgstr "NickServ azonosítást kér, ütemezett feladatok végrehajtása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1162
+msgid ""
+"The scheduled NickServ identification command appears to be broken, please "
+"change the setting"
+msgstr ""
+"Az ütemezett NickServ azonosító parancs hibás, kérlek javítsd a KVIrc "
+"beállításokban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1213
+msgid ""
+"Spam notice from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%Q\")"
+msgstr ""
+"Spam éretesítés: \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (egyező spam szó \"%Q\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1394
+msgid "Received a topic message for an unknown channel, possible desync"
+msgstr ""
+"Ismeretlen csatorna topik üzenetét kaptam meg, valószínűleg szinkron hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1413
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has changed topic to \"%Q%c\""
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] megváltoztatta a csatorna topicját: \"%Q%c\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1512
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] mostantól: \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1063
+msgid "You have changed your nickname to %Q"
+msgstr "Megváltoztattad a neved: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1477
+msgid ""
+"The target of this query was lost and has been found when \r!n\r%Q\r [%Q@\r!h"
+"\r%Q\r] changed his nickname to \r!n\r%Q\r"
+msgstr ""
+"Ennek a privátnak a célját elvesztettem, és megtaláltam, amikor \r!n\r%Q\r [%"
+"Q@\r!h\r%Q\r] megváltoztatta a nevét \r!n\r%Q\r -ra/re."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1486
+msgid ""
+"The recent nickname change from \r!n\r%Q\r to \r!n\r%Q\r caused a query "
+"collision: merging output"
+msgstr ""
+"A most történt névváltás \r!n\r%Q\r -ról \r!n\r%Q\r -ra privát ütközést "
+"okozott:kimenet összevágása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1495
+msgid "End of merged output"
+msgstr "Összevágott kimenet vége"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1540
+msgid "Ignoring invite from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "Meghívás mellőzése \r!nc\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "autojoining"
+msgstr "automatikus csatlakozás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "double-click the channel name to join"
+msgstr "Dupla kattintás a csatorna nevére a csatlakozáshoz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1556
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] invites you to channel \r!c\r%Q\r (%Q)"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] meghívott a \r!c\r%Q\r (%Q) csatornára."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1564
+msgid "Received an invite message directed to another nick, possible desync"
+msgstr "Meghívó üzenet érkezett, de másnak lett címezve: szinkron hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1584
+msgid "WALLOPS from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "WALLOPS \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1648
+#, c-format
+msgid "You have set user mode %s"
+msgstr "%s módot állítottál be magadnak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1655
+msgid "Received a mode change for an unknown channel, possible desync"
+msgstr "Ismeretlen csatorna módváltását észleltem, szinkron hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1731
+msgid "%Q [%Q@%Q] has set channel key to \"\r!m-k\r%Q\r\""
+msgstr "%Q [%Q@%Q] beállította a csatorna kulcsát: \"\r!m-k\r%Q\r\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1734
+msgid "%Q [%Q@%Q] has unset the channel key"
+msgstr "%Q [%Q@%Q] eltávolította a csatorna kulcsát"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1754
+msgid "%Q [%Q@%Q] has set channel \r!m-l\rlimit to %Q\r"
+msgstr "%Q [%Q@%Q] beállította a csatorna \r!m-l\rlimitjét: %Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1757
+msgid "%Q [%Q@%Q] has unset the channel limit"
+msgstr "%Q [%Q@%Q] eltávolította a csatorna limitjét"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1779
+msgid "%Q [%Q@%Q] has set mode %c%c \r!n\r%Q\r"
+msgstr "%Q [%Q@%Q] módot váltott: %c%c \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1787
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1834
+msgid "%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"
+msgstr "%Q [%Q@%Q] beállította a \r!m%c%c\r csatorna módjait: %c%c\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1819
+msgid "%Q [%Q@%Q] has set mode %c%c \r!m%c%c\r%Q\r"
+msgstr "%Q [%Q@%Q] módot váltott %c%c \r!m%c%c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1860
+msgid "%Q [%Q@%Q] has set mode %s %Q"
+msgstr "%Q [%Q@%Q] módot váltott %s %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1863
+msgid "%Q [%Q@%Q] has set channel mode %s"
+msgstr "%Q [%Q@%Q] csatorna módot váltott %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:147
+#, c-format
+msgid ""
+"One or more standard mode flags are missing in the server available modes.\n"
+"This is caused either by a non RFC1459-compliant IRC daemon or a broken "
+"server reply.\n"
+"Server umodes seem to be '%s' and channel modes seem to be '%s'.\n"
+"Ignoring this reply and assuming that the basic set of modes is available.\n"
+"If you have strange problems, try changing the server."
+msgstr ""
+"Egy vagy több általános flag hiányzik a szerver elérhető módjai közül.\n"
+"Ezt okozhatja a nem RFC1459 kompatibilis IRC démon vagy hibás szerver "
+"válasz.\n"
+"Szerver felhasználói módjai: %s Csatorna módok: %s.\n"
+"A választ mellőzöm, és feltétezem, hogy az alap módok elérhetőek.\n"
+"Ha furcsa problémáid adódnak, javaslom válts szervert."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:159
+msgid "Available user modes:"
+msgstr "Elérhető felhasználói módok: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:169
+msgid ": Unknown user mode"
+msgstr ": Ismeretlen felhasználói mód"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:177
+msgid "Available channel modes:"
+msgstr "Elérhető csatorna módok:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:197
+msgid "Server %Q version %S supporting user modes '%S' and channel modes '%S'"
+msgstr ""
+"%Q szerver, %S verzió. Támogatott felhasználói módok: '%S' Csatorna módok: '%"
+"S'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:244
+msgid "This server supports the WATCH notify list method, it will be used"
+msgstr ""
+"Ez a szerver támogatja a WATCH értesítési metódust, ezt fogom használni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:262
+msgid "The current network is %Q"
+msgstr "Aktuális hálózat: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:303
+msgid "This server supports the CODEPAGE command, it will be used"
+msgstr "A szerver támogatja a CODEPAGE parancsot, ezt fogom használni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:319
+#, c-format
+msgid "This server supports: %s"
+msgstr "Támogatott tulajdonságok: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:375
+msgid "End of NAMES for \r!c\r%Q\r"
+msgstr "\r!c\r%Q\r NAMES lista vége."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:472
+msgid "Names for \r!c\r%Q\r: %Q"
+msgstr "Nevek a \r!c\r%Q\r-n: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:487
+msgid "(unknown)"
+msgstr "(ismeretlen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:491
+msgid "Channel topic is: %Q"
+msgstr "Csatorna topic: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:498
+msgid "Topic for \r!c\r%Q\r is: %Q"
+msgstr "\r!c\r%Q\r csatorna topicja: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:516
+msgid "No channel topic is set"
+msgstr "Nincs csatorna topik beállítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:521
+msgid "No topic is set for channel \r!c\r%Q\r"
+msgstr "Nincs topic beállítva \r!c\r%Q\r csatornán."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:560
+msgid "Topic was set by %Q on %Q"
+msgstr "A topikot %Q állította be. Beállítás ideje: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:561
+msgid "Topic was set by %Q"
+msgstr "%Q állította be a topikot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:569
+msgid "Topic for \r!c\r%Q\r was set by %Q on %Q"
+msgstr "\r!c\r%Q\r csatorna topikját %Q állította be. Beállítás ideje: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:572
+msgid "Topic for \r!c\r%Q\r was set by %Q"
+msgstr "\r!c\r%Q\r csatorna topikja: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:592
+msgid "Channel mode for \r!c\r%Q\r is %s"
+msgstr "\r!c\r%Q\r csatorna módjai: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:595
+msgid "User mode for \r!n\r%Q\r is %s"
+msgstr "\r!n\r%Q\r felhasználó módjai: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:631
+msgid "End of channel %Q for \r!c\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:635
+msgid "ban list"
+msgstr "tiltó lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:636
+msgid "invite list"
+msgstr "meghívó lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:637
+msgid "ban exception list"
+msgstr "tiltó kivétel lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:658
+msgid "%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"
+msgstr "%Q - \r!c\r%Q\r: \r!m-%c\r%Q\r (beállította %Q ~ %Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:665
+msgid "Ban listing"
+msgstr "Tiltások listázása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:668
+msgid "Invite listing"
+msgstr "Meghívások listázása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:671
+msgid "Ban exception listing"
+msgstr "Tiltó kivételek listázása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:740
+msgid ""
+"WHO entry for %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cChannel%c: \r!c\r%Q\r, %"
+"cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAway%c: %Q, %cReal name"
+"%c: %Q"
+msgstr ""
+"WHO bejegyzés: %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %c csatorna%c: \r!c\r%Q\r, %"
+"cSzerver%c: \r!s\r%Q\r, %cHop: %c: %d, %cFlagek%c: %Q, %cTávol%c: %Q, %"
+"cValósnév%c: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:797
+msgid "End of WHO list for %Q"
+msgstr "%Q WHO lista vége"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:856
+msgid ""
+"Something really weird is happening: the server is refusing all the login "
+"nicknames..."
+msgstr ""
+"Valami nagyon furcsa történik a szerveren: elutasít minden belépő "
+"becenevet..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:861
+msgid ""
+"The server is refusing all the login nicknames: giving up, you must send the "
+"nickname manually"
+msgstr ""
+"A szerver minden belépő nicket elutasít, neked kell beállítanod manuálisan (/"
+"nick becenév)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:871
+msgid "No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."
+msgstr "Belépés mint '\r!n\r%Q\r' (%d: %Q) nem lehetséges, próbálom így: '%Q'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:945
+msgid "Command syntax %Q: %Q"
+msgstr "Parancs szintakszis %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:973
+msgid "Tip: %Q"
+msgstr "Tipp: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:976
+msgid "Tip for %Q: %Q"
+msgstr "Tipp: %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:993
+msgid "End of help about %Q"
+msgstr "%Q segíség vége"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1037
+msgid "%c\r!n\r%Q\r%c is away: %Q"
+msgstr "%c\r!n\r%Q\r%c Nem elérhető: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1090
+msgid "%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "%c\r!n\r%Q\r%c - %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1095
+msgid "%c\r!n\r%Q\r%c's real name: %Q"
+msgstr "%c\r!n\r%Q\r%c valós neve: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1115
+msgid "%c\r!n\r%Q\r%c was %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "%c\r!n\r%Q\r%c volt %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1119
+msgid "%c\r!n\r%Q\r%c's real name was: %Q"
+msgstr "%c\r!n\r%Q\r%c valós neve: %Q volt."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1183
+msgid "%c\r!n\r%Q\r%c's channels: %Q"
+msgstr "%c\r!n\r%Q\r%c csatornái: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1220
+msgid "Received a broken RPL_WHOISIDLE, can't evaluate the idle time"
+msgstr "Hibás RPL_WHOISIDLE válasz, nem tudom felmérni a tétlenségi időt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1230
+msgid "%c\r!n\r%Q\r%c's idle time: %ud %uh %um %us"
+msgstr "%c\r!n\r%Q\r%c tétlen: %un %uó %up %ump"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1240
+msgid "%c\r!n\r%Q\r%c's signon time: %Q"
+msgstr "%c\r!n\r%Q\r%c kapcsolódási ideje: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1274
+msgid "%c\r!n\r%Q\r%c's server: \r!s\r%Q\r - %Q"
+msgstr "%c\r!n\r%Q\r%c szervere: \r!s\r%Q\r - %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1293
+msgid "%c\r!n\r%Q\r%c is authenticated as %Q"
+msgstr "%c\r!n\r%Q\r%c azonosítva, mint: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1325
+msgid "%c\r!n\r%Q\r%c's info: %Q"
+msgstr "%c\r!n\r%Q\r%c infó: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1372
+msgid "%c\r!n\r%Q\r%c WHOIS info from \r!s\r%Q\r"
+msgstr "%c\r!n\r%Q\r%c WHOIS infó \r!s\r%Q\r szervertől."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1389
+msgid "%c\r!n\r%Q\r%c WHOWAS info from \r!s\r%Q\r"
+msgstr "%c\r!n\r%Q\r%c WHOWAS infó \r!s\r%Q\r szervertől."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1457
+msgid "Can't evaluate creation time"
+msgstr "Létrehozási időt nem lehet meghatározni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1465
+msgid "Channel was created at %Q"
+msgstr "Csatorna létrehozva: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1470
+msgid "Channel \r!c\r%Q\r was created at %Q"
+msgstr "\r!c\r%Q\r csatorna létrehozva: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1511
+msgid "USERHOST info: %Q"
+msgstr "USERHOST infó %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1532
+msgid "Channel list begin: channel, users, topic"
+msgstr "Csatornák listázása: csatorna, felhasználók, topik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1559
+msgid "List: %Q"
+msgstr "Listázás: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1573
+msgid "End of LIST"
+msgstr "Listázás vége."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1597
+msgid "Link: %Q"
+msgstr "Kapcsolat(ok): %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1612
+msgid "End of LINKS"
+msgstr "Kapcsolat listázás vége"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1641
+msgid "[Leaving away status after %ud %uh %um %us]: %Q"
+msgstr "[Távol állapot megszakítása %un %uó %up %ump után]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1645
+msgid "[Leaving away status]: %Q"
+msgstr "[Távol állapot megszakítása]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1652
+msgid "Restoring pre-away nickname (%Q)"
+msgstr "Távollét előtti nick beállítása: (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1672
+msgid "[Entering away status]: %Q"
+msgstr "[Távol mód indítása]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1690
+msgid "Setting away nickname (%Q)"
+msgstr "Távollétet jelző nick beállítása (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1762
+#, c-format
+msgid "%c\r!s\r%s\r%c's server info: %s"
+msgstr "%c\r!s\r%s\r%c szerver infó: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1773
+#, c-format
+msgid "%c\r!s\r%s\r%c's administrator is %s"
+msgstr "%c\r!s\r%s\r%c adminisztrátora: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1784
+#, c-format
+msgid "%c\r!s\r%s\r%c's contact adress is %s"
+msgstr "%c\r!s\r%s\r%c elérhetőségei: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1812
+msgid "\r!n\r%Q\r invited %Q into channel %Q"
+msgstr "\r!n\r%Q\r meghívta '%Q'-t a %Q csatornára."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1834
+#, c-format
+msgid "%c\r!s\r%s\r%c's information:"
+msgstr "%c\r!s\r%s\r%c információi:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1844
+#, c-format
+msgid "End of %c\r!s\r%s\r%c's information"
+msgstr "%c\r!s\r%s\r%c információinak vége"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1855
+msgid "%c\r!s\r%s\r%c's time is %Q"
+msgstr "%c\r!s\r%s\r%c ideje: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1866
+msgid "%Q: no such server"
+msgstr "%Q: nincs ilyen szerver"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1877
+msgid "%Q: no such channel"
+msgstr "%Q: nincs ilyen csatorna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1891
+msgid "Cannot sent to channel: %Q"
+msgstr "%Q üzenetet nem sikerült elküldeni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1894
+msgid "Cannot sent text to channel %Q: %Q"
+msgstr "%Q: %Q ~ szöveg küldése sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1909
+msgid "Cannot sent to channel"
+msgstr "Küldés csatornára sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1912
+msgid "Cannot sent text to channel %Q"
+msgstr "%Q elküldése a csatornára sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1928
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1936
+msgid "Your encoding is now %Q"
+msgstr "A kódolásod mostantól %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1967
+msgid "%c\r!n\r%Q\r%c's codepage is %Q: %Q"
+msgstr "%c\r!n\r%Q\r%c kódlapja: %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1991
+#, c-format
+msgid "Your user mode is %s"
+msgstr "Felhasználói módjaid: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:158
+msgid "Failed to set the encoding to %Q: mapping not available."
+msgstr "Kódolás beállítása sikertelen %Q kódtábla nem elérhető"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:175
+msgid "Changed text encoding to %Q"
+msgstr "A szöveg kódolása %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:503
+msgid "Connection to server lost"
+msgstr "Kapcsolat a szerverrel megszakadt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:512
+msgid "Connection to server established"
+msgstr "Kapcsolat a szerverrel létrejött"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:573
+msgid "[LINK WARNING]: Socket message truncated to 512 bytes."
+msgstr "[Kapcsolat Figyelmeztetető]: Socket üzenet csonkolva 512 bytera."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:640
+msgid ""
+"The server seems to support the WATCH notify list method, will try to use it"
+msgstr "A szerver támogatja a WATCH értesítési metódust, megpróbálom használni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:688
+msgid "Can't resolve local host address, using user supplied one (%Q)"
+msgstr ""
+"Helyi hosztnév felderítése sikertelen, a felhasználó által megadott lesz "
+"használva(%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:695
+msgid "Can't resolve local host address, using default 127.0.0.1"
+msgstr ""
+"Helyi cím visszafejtése sikertelen, alapértelmezés használata: 127.0.0.1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:701
+msgid "Local host address is %Q"
+msgstr "A helyi cím: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:749
+msgid "The server seems to have changed the idea about the local hostname"
+msgstr "A szerver megváltoztatta a helyi hosztnevet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:750
+msgid ""
+"You're probably using a broken bouncer or maybe something weird is happening "
+"on the IRC server"
+msgstr "Hibás BNC vagy valami felettébb furcsa történik az IRC szerveren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:776
+msgid ""
+"Here goes your \"broken bouncer hack\": The server has changed the hostname "
+"but I'll ignore the IP address change"
+msgstr ""
+"Itt a \"hibás BNC hack\": A szerver megváltoztatta a hosztját, de mellőzöm "
+"az IP cím váltást"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:791
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:801
+msgid "The local IP address as seen by the IRC server is %Q"
+msgstr "A helyi IP cím az IRC szerver szerint: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:815
+msgid "Can't start the DNS slave thread"
+msgstr "Másodlagos DNS szál indítása sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:816
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:846
+msgid "Unable to resolve the local hostname as seen by the IRC server: %Q"
+msgstr "Helyi hosztnév visszafejtése az IRC szerver által nem sikerült: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:822
+msgid "Looking up the local hostname as seen by the IRC server (%Q)"
+msgstr "Helyi cím meghatározása az IRC szerveren keresztül (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:843
+msgid ""
+"Unable to resolve the local hostname as seen by the IRC server: %Q, using "
+"previously resolved %Q"
+msgstr ""
+"Nem tudom visszafejteni a helyi hosztnevet a szerveren keresztül: %Q, az "
+"előzőlegfelderítettet használom: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:850
+msgid "Local hostname as seen by the IRC server resolved to %Q"
+msgstr "A szerver szerinti helyi hosztnév: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:868
+msgid "Using server specific username (%Q)"
+msgstr "Szerverspecifikus felhasználónév alkalmazása (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:873
+msgid "Using network specific username (%Q)"
+msgstr "Hálózatspecifikus felhasználónév alkalmazása (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:892
+msgid "Using reconnect specific nickname (%Q)"
+msgstr "Hálózatspecifikus Nick alkalmazása (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:898
+msgid "Using server specific nickname (%Q)"
+msgstr "Szerverspecifikus nick alkalmazása (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:905
+msgid "Using network specific nickname (%Q)"
+msgstr "Hálózatspecifikus nicknév használata (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:922
+msgid "Using server specific real name (%Q)"
+msgstr "Szerverspecifikus valós név alkalmazása (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:929
+msgid "Using network specific real name (%Q)"
+msgstr "Hálózatspecifikus valós név alkalmazása (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:946
+msgid "Logging in as %Q!%Q :%Q"
+msgstr "Belépés, mint: %Q!%Q :%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:962
+#, c-format
+msgid "Sending %s as password"
+msgstr "%s küldése jelszóként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1033
+msgid "Executing scheduled network specific \"on connect\" commands"
+msgstr "Hálózatfüggő ütemezett parancsok futtatása (\"Kapcsolódáskor\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1042
+msgid "Executing scheduled server specific \"on connect\" commands"
+msgstr "Szerverfüggő ütemezett parancsok futtatása (\"Kapcsolódáskor\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1051
+msgid "Executing scheduled identity specific \"on connect\" commands"
+msgstr "Ütemezett azonosító parancsok futtatása (\"Kapcsolódáskor\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1101
+#, c-format
+msgid "The server refused the suggested nickname (%s) and named you %s instead"
+msgstr "A szerver visszautasította az ajánlott nicket (%s), helyette: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1113
+msgid "Login operations complete, happy ircing!"
+msgstr "Belpési műveletek elvégezve, kellemes csevegést!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1123
+msgid "Executing scheduled network specific \"on login\" commands"
+msgstr "Hálózatspecifikus parancsok futtatása (\"Belépéskor\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1132
+msgid "Executing scheduled server specific \"on login\" commands"
+msgstr "Szerverspecifikus parancsok futtatása (\"Belépéskor\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1141
+msgid "Executing scheduled identity specific \"on login\" commands"
+msgstr "Ütemezett azonosító parancsok futtatása (\"Kapcsolódáskor\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1153
+msgid "Setting configured user mode"
+msgstr "Megadott felhasználói módok beállítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1210
+msgid "Auto-joining network specific channels"
+msgstr "Automatikus csatlakozás a megadott hálózatspecifikus csatornákra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1244
+msgid "Auto-joining server specific channels"
+msgstr "Automatikus csatlakozás a megadott szerverspecifikus csatornákra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1341
+msgid "Updating away state for channel %Q"
+msgstr "Nem elérhető állapot frissítése %Q csatornán"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_customtoolbardescriptor.cpp:230
+msgid "Backward compatibility action for toolbar.define"
+msgstr "Visszafelé kompatibilis akció definiálva az eszköztárhoz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:790
+msgid "Installation problems ?"
+msgstr "Telepítési problémák?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:791
+msgid ""
+"<b>Ooops...</b><br><br><b>There are some reasons that make me think that "
+"your KVIrc installation is incomplete.</b><br><br>I might be wrong, but you "
+"seem to miss some of the features that the default KVIrc script provides."
+"This may happen because you have upgraded to an unstable cvs version, "
+"because you have accidentally deleted or damaged your configuration files, "
+"because you have installed an incomplete script or because you have hit a "
+"bug in KVIrc.<br><br>I can repeat the installation of the default script in "
+"order to restore the missing features.<br><b>Do you want the default script "
+"to be restored ?</b><br><br><font size=\"-1\">Hint: If you're a scripter and "
+"have intentionally removed some of the scripting features then you may "
+"safely click on \"No and Don't Ask Me Again\", otherwise it might be a good "
+"idea to click \"Yes\". If you still want to choose \"No\" you can always "
+"restore the default script by choosing the appropriate entry from the "
+"\"Scripting\" menu.</font>"
+msgstr ""
+"<b>Hoppá...</b><br><br><b>Van néhány ok, amiért azt gondolom, hogya te KVIrc "
+"telepítésed befejezetlen.</b><br><br>Lehet, hogy tévedek, devalószínűleg "
+"néhány dolog hiányzik, ami egyébként alapértelmezett KVIrc script.Ez "
+"valószínűleg azért történt, mert nem stabil, SVN verzióra frissítettél,"
+"véletlenül törölted vagy megsérültek a konfigurációs fájlok,esetleg nem "
+"teljes vagy hibás scriptet telepítettél, de lehet hogy teletrafáltálegy "
+"KVIrc Bugot.<br><br>Megpróbálhatom újra feltelepíteni az "
+"alapértelmezettscripteket. <br><b>Szeretnéd, ha visszaállítanám az "
+"alapértelmezett scripteket?</b><br><br><font size=\"-1\">Tipp: Ha scripter "
+"vagy és szándékosan távolítottad el ezeketakkor klikk a \"Nem és Ne kérdezd "
+"többet\" -re, egyébként valószínűlegjobban jársz az \"Igen\" -el. Ha ennek "
+"ellenére a \"Nem\"-et választanád mindig fent áll a lehetőség ezek "
+"visszaállítására a \"Scriptelés\" menüből.</font>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:805
+msgid "No and Don't Ask Me Again"
+msgstr "Nem és Ne kérdezd többet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:828
+msgid "Restore Default Script - KVIrc"
+msgstr "Alapértelmezett Scriptek visszaállítása - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:829
+msgid ""
+"You are about to restore the default script.<br>This will erase any script "
+"changes you have made.<br>Do you wish to proceed?"
+msgstr ""
+"Most visszaállítod az alapértelmezett scripteket. <br>Ez minden scriptetért "
+"változtatást törölni fog. <br>Tényleg folytatni szeretnéd?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:872
+#, c-format
+msgid "Remote command received (%s ...)"
+msgstr "Beérkezett távoli parancs (%s ...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1033
+msgid "File download failed"
+msgstr "Fájl letöltése sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1035
+msgid "File download from %1 failed"
+msgstr "Fájl letöltése %1 -tól/től sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1044
+msgid "File download successfully complete"
+msgstr "Fájl letöltése sikeresen befejeződött"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1046
+msgid "File download from %1 successfully complete"
+msgstr "Fájl letöltése sikeresen befejeződött: %1 -ról/-ről"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1066
+msgid "Avatar download failed for %Q!%Q@%Q and url %Q: %Q"
+msgstr "Avatar letöltése sikertelen %Q!%Q@%Q url: %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2014
+#, c-format
+msgid "The commandline for media type '%s' seems to be broken"
+msgstr "A %s médiatípus parancsa hibás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2018
+#, c-format
+msgid "Media type of file %s matched to '%s' but no commandline specified"
+msgstr "%s fájl típusa megfelel %s -nak/nek'de nincs hozzárendelve parancs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2023
+#, c-format
+msgid "No idea on how to play file %s (no media type match)"
+msgstr "Lövésem sincs mivel játszam le ezt: %s (média típus ismeretlen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:39
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:48
+#, c-format
+msgid "[SSL]: %c%s"
+msgstr "[SSL]: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:40
+#, c-format
+msgid "[SSL]: Cipher: %c%s"
+msgstr "[SSL]: Dekóder: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:41
+#, c-format
+msgid "[SSL]: Version: %c%s"
+msgstr "[SSL]: Verzió: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:42
+#, c-format
+msgid "[SSL]: Bits: %c%d (%d used)"
+msgstr "[SSL]: Bitek: %c%d (%d used)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:49
+#, c-format
+msgid "[SSL]: Version: %c%d"
+msgstr "[SSL]: Verzió %c%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:50
+#, c-format
+msgid "[SSL]: Serial number: %c%d"
+msgstr "[SSL]: Széria szám: %c%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:51
+msgid "[SSL]: Subject:"
+msgstr "[SSL]: Tárgy:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:59
+#, c-format
+msgid "[SSL]: Common name: %c%s"
+msgstr "[SSL]: Közös név: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:60
+#, c-format
+msgid "[SSL]: Organization: %c%s"
+msgstr "[SSL]: Szervezet: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:61
+#, c-format
+msgid "[SSL]: Organizational unit: %c%s"
+msgstr "[SSL]: Szervezeti egység: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:62
+#, c-format
+msgid "[SSL]: Country: %c%s"
+msgstr "[SSL]: Ország: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:63
+#, c-format
+msgid "[SSL]: State or province: %c%s"
+msgstr "[SSL]: Állam vagy tartomány: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:64
+#, c-format
+msgid "[SSL]: Locality: %c%s"
+msgstr "[SSL]: Elhelyezkedés: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:58
+msgid "[SSL]: Issuer:"
+msgstr "[SSL]: Hitelesítő:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:65
+#, c-format
+msgid "[SSL]: Public key: %c%s (%d bits)"
+msgstr "[SSL]: Nyilvános kulcs: %c%s (%d bit)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:66
+#, c-format
+msgid "[SSL]: Signature type: %c%s"
+msgstr "[SSL]: Aláírás típusa: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:73
+#, c-format
+msgid "[SSL]: Signature contents: %c%s"
+msgstr "[SSL]: Aláírás tartalma: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:82
+msgid "Peer X509 certificate"
+msgstr "Peer X509 hitelesítés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:85
+msgid "[SSL]: The peer didn't provide a certificate"
+msgstr "[SSL]: A peer nem rendelkezik hitelesítéssel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1219
+msgid "Current transmission cipher"
+msgstr "Aktuális átviteli titkosítás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:92
+msgid "[SSL]: Can't find out the current cipher info"
+msgstr "[SSL]: Titkosítási információk nem elérhetőek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:113
+#, c-format
+msgid "[%s]: [SSL]: Using certificate file %s"
+msgstr "[%s]: [SSL]: %s hitelesítő fájl használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:116
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the certificate file %s"
+msgstr "[%s]: [SSL HIBA]: File I/O hiba a %s hitelesítés használatakor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:146
+#, c-format
+msgid "[%s]: [SSL ERROR]: %s"
+msgstr "[%s]: [SSL HIBA]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:136
+#, c-format
+msgid "[%s]: [SSL]: Using private key file %s"
+msgstr "[%s]: [SSL]: Privát kulcs használata: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:139
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the private key file %s"
+msgstr "[%s]: [SSL HIBA]: File I/O hiba magán kulcs használatakor: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:375
+msgid "Reconnect attempt aborted"
+msgstr "Újrakapcsolódás megszakítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:443
+msgid ""
+"This is the first connection in this IRC context: using the global server "
+"setting"
+msgstr ""
+"Ez az első csatlakozás erre az IRC környezetre: globális beállítások "
+"alkalmazása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:483
+msgid ""
+"No servers available. Check the options dialog or use the /SERVER command"
+msgstr ""
+"Nincsenek elérhető szerverek. Ellenőrízd a beállításokban vagy használd a /"
+"SERVER parancsot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:491
+msgid ""
+"Ooops.. you've hit a bug in the servers database... I have found a server "
+"but not a network..."
+msgstr ""
+"Uuupsz: telibetrafáltál egy bugot a szerver adatbázisban... Szervert "
+"találtam de hálózatot azt nem..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:504
+msgid "No proxy hosts available, resuming direct connection"
+msgstr "Nincs elérhető proxy hoszt, közvetlen kapcsolódás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:582
+#, c-format
+msgid "Connection attempt failed [%s]"
+msgstr "Csatlakozási próbálkozás meghiúsult [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:600
+#, c-format
+msgid "Will attempt to reconnect in %d seconds"
+msgstr "Újracsatlakozás %d másodperc múlva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:604
+#, c-format
+msgid "%d"
+msgstr "%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:606
+#, c-format
+msgid "%d of %d"
+msgstr "%d %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:633
+#, c-format
+msgid "Maximum number of reconnect attempts reached (%d): giving up"
+msgstr "%d. újracsatlakozási kísérlet, feladtam..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:647
+msgid ""
+"The connection attempt failed while using a cached IP address for the "
+"current server"
+msgstr "A kapcsolódás sikertelen a szerver tárolt IP címének használatával"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:648
+msgid "The problem *might* be caused by an updated DNS entry"
+msgstr "A probléma valószínűleg egy frissített DNS elem miatt történt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:649
+msgid "Try reconnecting with caching disabled"
+msgstr "Újrakapcsolódás IP tárolás tiltásával"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:673
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:382
+msgid "%Q established [%s (%s:%u)]"
+msgstr "%Q létrejött, [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Secure connection"
+msgstr "Biztonságos kapcsolat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Connection"
+msgstr "Kapcsolat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:779
+#, c-format
+msgid "Connection terminated [%s (%s:%u)]"
+msgstr "Kapcsolat megszakítva [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:791
+msgid "The connection terminated unexpectedly. Trying to reconnect..."
+msgstr "A kapcsolat megszakadt, újracsatlakozás..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:874
+msgid "Sent QUIT, waiting for the server to close the connection..."
+msgstr "QUIT elküldve, várakozás a szerverre, hogy zárja a kapcsolatot..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:685
+msgid "Normal text"
+msgstr "Normál szöveg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:686
+msgid "Selection"
+msgstr "Kijelölt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:687
+msgid "Highlighted text"
+msgstr "Kiemelt szöveg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:688
+msgid "URL foreground"
+msgstr "URL előtér"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:689
+msgid "Link overlay foreground"
+msgstr "Kapcsolatot átfedő előtér"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:690
+msgid "Parser error"
+msgstr "Értelmező hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:691
+msgid "Parser warning"
+msgstr "Értelmező figyelmeztetés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:692
+msgid "Host lookup result"
+msgstr "Hoszt felderítés eredménye"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:693
+msgid "Socket message"
+msgstr "Socket üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:694
+msgid "Socket warning"
+msgstr "Socket figyelmeztetés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:695
+msgid "Socket error"
+msgstr "Socket hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:696
+msgid "System error"
+msgstr "Rendszer hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:697
+msgid "Raw data to server"
+msgstr "Raw adat a szervernek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:698
+msgid "Connection status"
+msgstr "Kapcsolat állapota"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:699
+msgid "System warning"
+msgstr "Rendszer figyelmeztetés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:700
+msgid "System message"
+msgstr "Rendszerüzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:701
+msgid "Unhandled server reply"
+msgstr "Kezeletlen szerver válasz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:702
+msgid "Server information"
+msgstr "Szerver információ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:703
+msgid "Server Message of the Day"
+msgstr "Szerver MOTD (A nap üzenete)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:704
+msgid "Server ping"
+msgstr "Szerver ping"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:705
+msgid "Join message"
+msgstr "Kapcsolódó üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:706
+msgid "Part message"
+msgstr "Lelépő üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:707
+msgid "Unrecognized/broken message"
+msgstr "Ismeretlen/hibás üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:708
+msgid "Topic message"
+msgstr "Topik üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:709
+msgid "Own private message"
+msgstr "Saját privát üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:710
+msgid "Channel private message"
+msgstr "Csatorna privát üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:711
+msgid "Query private message"
+msgstr "Privát üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:712
+msgid "CTCP reply"
+msgstr "CTCP válasz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:713
+msgid "CTCP request replied"
+msgstr "CTCP kérés megválaszolva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:714
+msgid "CTCP request ignored"
+msgstr "CTCP kérés mellőzve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:715
+msgid "CTCP request flood warning"
+msgstr "CTCP árasztás figyelmeztetés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:716
+msgid "CTCP request unknown"
+msgstr "CTCP:Ismeretlen kérés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:717
+msgid "User action"
+msgstr "Felhasználói akció"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:718
+msgid "Avatar change"
+msgstr "Avatar változtatás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:719
+msgid "Quit message"
+msgstr "Kilépő üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:720
+msgid "Split message"
+msgstr "Split üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:721
+msgid "Quit on netsplit message"
+msgstr "Netsplit üzenet kilépéskor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:722
+msgid "Nick changes"
+msgstr "Nick váltások"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:723
+msgid "+o mode change"
+msgstr "+o módváltás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:724
+msgid "-o mode change"
+msgstr "-o módváltás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:725
+msgid "+v mode change"
+msgstr "+v módváltás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:726
+msgid "-v mode change"
+msgstr "-v módváltás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:727
+msgid "Multiple user mode change"
+msgstr "Több felhasználói módváltás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:728
+msgid "Channel key change"
+msgstr "Csatorna kulcs megváltoztatása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:729
+msgid "Channel limit change"
+msgstr "Csatorna limit megváltoztatása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:730
+msgid "+b mode change"
+msgstr "+b módváltás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:731
+msgid "-b mode change"
+msgstr "-b módváltás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:732
+msgid "+e mode change"
+msgstr "+e módváltás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:733
+msgid "-e mode change"
+msgstr "-e módváltás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:734
+msgid "+I mode change"
+msgstr "+l módváltás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:735
+msgid "-I mode change"
+msgstr "-l módváltás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:736
+msgid "Multiple channel mode change"
+msgstr "Több csatornás módváltás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:737
+msgid "Who reply"
+msgstr "Who válasz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:738
+msgid "DCC request"
+msgstr "DCC kérés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:739
+msgid "DCC message"
+msgstr "DCC üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:740
+msgid "DCC error"
+msgstr "DCC hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:741
+msgid "Nickname problem"
+msgstr "Nicknév probléma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:742
+msgid "Whois user reply"
+msgstr "Whois felhasználó válasz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:743
+msgid "Whois channels reply"
+msgstr "Whois csatorna válasz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:744
+msgid "Whois idle reply"
+msgstr "Whois tétlenség válasz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:745
+msgid "Whois server reply"
+msgstr "Whois szerver válasz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:746
+msgid "Whois other reply"
+msgstr "Whois egyéb "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:747
+msgid "Channel creation time reply"
+msgstr "Csatorna létrehozási ideje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:748
+msgid "Notify list joins"
+msgstr "Értesítési lista - csatlakozás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:749
+msgid "Notify list leaves"
+msgstr "Értesítési lista - elhagyás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:750
+msgid "Own encrypted private message"
+msgstr "Titkosított saját privát üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:751
+msgid "Channel encrypted private message"
+msgstr "Titkosított csatorna üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:752
+msgid "Query encrypted private message"
+msgstr "Titkosított privát üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:753
+msgid "DCC chat message"
+msgstr "DCC beszélgetés üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:754
+msgid "Encrypted DCC chat message"
+msgstr "Titkosított DCC beszélgetés üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:755
+msgid "Login operations completed"
+msgstr "Belépési műveletek elvégezve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:756
+msgid "Kick action"
+msgstr "Kirúgás akció"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:757
+msgid "Links reply"
+msgstr "Linkek válasz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:758
+msgid "Spam report"
+msgstr "Spam jelentés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:759
+msgid "ICQ message"
+msgstr "ICQ üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:760
+msgid "ICQ user-message"
+msgstr "ICQ felhasználói üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:761
+msgid "Outgoing ICQ user-message"
+msgstr "Kimenő ICQ felhasználói üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:762
+msgid "Channel notice"
+msgstr "Csatorna értesítő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:763
+msgid "Encrypted channel notice"
+msgstr "Titkosított csatorna értesítő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:764
+msgid "Query notice"
+msgstr "Privát értesítő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:765
+msgid "Encrypted query notice"
+msgstr "Titkosított privát értesítő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:766
+msgid "Server notice"
+msgstr "Szerver értesítő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:767
+msgid "Halfop mode change"
+msgstr "Fél-operátor módváltás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:768
+msgid "Unknown CTCP reply"
+msgstr "Ismeretlen CTCP válasz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:769
+msgid "NickServ message"
+msgstr "NickServ üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:770
+msgid "ChanServ message"
+msgstr "ChanServ üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:771
+msgid "Away message"
+msgstr "\"Nem elérhető\" üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:772
+msgid "Ident message"
+msgstr "Azonosító üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:773
+msgid "Channel list message"
+msgstr "Csatorna lista üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:774
+msgid "Half-deop mode change"
+msgstr "Fél-operátor elvétel üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:775
+msgid "Invite message"
+msgstr "Meghívó üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:776
+msgid "Multimedia message"
+msgstr "Multimédia üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:777
+msgid "Query trace message"
+msgstr "Privát követő üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:778
+msgid "Wallops message"
+msgstr "Wallop üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:779
+msgid "Join error message"
+msgstr "Csatlakozási hibaüzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:780
+msgid "Broadcast private message"
+msgstr "Privát közvetített üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:781
+msgid "Broadcast notice"
+msgstr "Közvetített értesítő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:782
+msgid "Am kicked"
+msgstr "Kirúgtak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:783
+msgid "Am op'd"
+msgstr "Op lettél"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:784
+msgid "Am voiced"
+msgstr "Hangot kaptál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:785
+msgid "Am deop'd"
+msgstr "Opod elvesztetted"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:786
+msgid "Am devoiced"
+msgstr "Hangod elvesztetted"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:787
+msgid "Am halfop'd"
+msgstr "Fél-operátor lettél"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:788
+msgid "Am de-halfop'd"
+msgstr "Fél-operátorod elvesztetted"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:789
+msgid "Ban matching my mask"
+msgstr "Maszkoddal egyező tiltás hozzáadva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:790
+msgid "Unban matching my mask"
+msgstr "Maszkoddal egyező tiltás eltávolítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:791
+msgid "Ban exception matching my mask"
+msgstr "Maszkoddal egyező tiltási-kivétel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:792
+msgid "Ban unexception matching my mask"
+msgstr "Maszkoddal egyező tiltási kivétel eltávolítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:793
+msgid "Invite exception matching my mask"
+msgstr "Maszkoddal egyező meghívó-kivétel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:794
+msgid "Invite unexception matching my mask"
+msgstr "Maszkoddal egyező meghívó-kivétel eltávolítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:795
+msgid "Ignored user message"
+msgstr "Mellőzött felhasználói üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:796
+msgid "Server statistics"
+msgstr "Szerver statisztika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:797
+msgid "SSL message"
+msgstr "SSL üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:108
+msgid "Search"
+msgstr "Keresés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:799
+msgid "Generic success"
+msgstr "Általános siker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:800
+msgid "Generic status"
+msgstr "Általános állapot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:801
+msgid "Generic verbose message"
+msgstr "Általános beszédes üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:802
+msgid "Generic warning"
+msgstr "Általános figyelmeztetés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:803
+msgid "Generic error"
+msgstr "Általános hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:804
+msgid "Generic critical error"
+msgstr "Általános kritikus hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:805
+msgid "Chan admin status set"
+msgstr "Csatorna operátor beállítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:806
+msgid "Chan admin status unset"
+msgstr "Csatorna operátor elvéve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:807
+msgid "Own chan admin status set"
+msgstr "Saját csatorna operátor beállítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:808
+msgid "Own chan admin status unset"
+msgstr "Saját csatorna operátor elveszítve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:809
+msgid "Userop mode change"
+msgstr "Operátori módváltás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:810
+msgid "User-deop mode change"
+msgstr "Operátori mód elvétel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:811
+msgid "Am userop'd"
+msgstr "Felhasználói operátor lettél"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:812
+msgid "Am de-userop'd"
+msgstr "Elvesztetted a felhasználói operátor jogod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:813
+msgid "Verbose/Debug"
+msgstr "Beszédes / Hibakeresés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:814
+msgid "Chan owner status set"
+msgstr "Csatorna tulajdonos állapot megadása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:815
+msgid "Chan owner status unset"
+msgstr "Csatorna tulajdonos állapot elvétele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:816
+msgid "Own chan owner status set"
+msgstr "Csatorna tulajdonosi státusz megadva neked"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:817
+msgid "Own chan owner status unset"
+msgstr "Csatorna tulajdonosi státusz elvéve tőled"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:818
+msgid "Server error"
+msgstr "Szerver hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:22
+msgid "Help"
+msgstr "Segítség"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:820
+msgid "Text Encoding Server message"
+msgstr "Szöveg kódolási szerver üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:826
+msgid "BitTorrent message"
+msgstr "BitTorrent üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:970
+msgid "Missing absolute directory for the theme information"
+msgstr "Hiányzó teljes elérési út a kinézet információinál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:978
+msgid "Failed to create the theme directory"
+msgstr "Könyvtár létrehozása sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1061
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1096
+msgid "Failed to save one of the theme images"
+msgstr "A kinézet képeiből az egyiket nem lehetséges menteni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1074
+msgid "Failed to create the theme subdirectory"
+msgstr "Kinézet alkönyvtár létrehozása sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1213
+msgid "Boolean options (1/0)"
+msgstr "Logikai opciók (1/0)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1214
+msgid "Rectangle options (x,y,width,height)"
+msgstr "Téglalap opciók (x,y,szélesség,magasság)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1215
+msgid "String options (string value)"
+msgstr "Sztring opciók (sztring érték)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1216
+msgid "Color options (#RRGGBB)"
+msgstr "Szín opciók (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1217
+msgid "Mirccolor options (#RRGGBB)"
+msgstr "Mirc szín opciók (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1218
+msgid "Irc context color options (#RRGGBB)"
+msgstr "Irc környezeti színek (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1219
+msgid "Pixmap options (image path)"
+msgstr "Pixmap opciók (kép útvonal)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1220
+msgid "Unsigned integer options (unsigned integer constant)"
+msgstr "Előjel nélküli egész opciók (előjel nélküli egész konstans)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1221
+msgid "Font options (family,pointsize,style,charset,weight,flags (biusf))"
+msgstr ""
+"Font opciók (family, pontméret,stílus,karakterkészlet,szélesség (biusf))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1222
+msgid "Message color options (image_id,foreground,background,logFlag (0/1))"
+msgstr "Üzenet szín opciók (kép_azon,előtér,háttér,logFlag (0/1))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1223
+msgid "String list options (comma separated list of strings)"
+msgstr "Szöveges lista opciók (vesszővel elválasztott szöveges lista)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC"
+msgstr "IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC Context related actions"
+msgstr "IRC Környezet függő akciók"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic"
+msgstr "Általános"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic actions"
+msgstr "Általános akciók"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Settings"
+msgstr "Beállítások"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Actions related to settings"
+msgstr "Akciófüggő beállítások"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:30
+msgid "Scripting"
+msgstr "Szkriptelés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+msgid "Scripting related actions"
+msgstr "Szkriptfüggő akciók"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "GUI"
+msgstr "GUI"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "Actions related to the Graphic User Interface"
+msgstr "Grafikus Felhasználói Felületfüggő (GUI) akciók"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:77
+msgid "Channel"
+msgstr "Csatorna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+msgid "IRC Channel related actions"
+msgstr "IRC Csatorna függő akciók"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Tools"
+msgstr "Eszközök"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Actions that will appear in the \"Tools\" menu"
+msgstr "Eszközök menüben lévő akciók"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:157
+msgid "Sending out PING based lag probe"
+msgstr "Ping alapú lagmérő jel küldése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:167
+msgid "Sending out CTCP based lag probe"
+msgstr "CTCP alap lagmérő jel küldése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:188
+#, c-format
+msgid "Registered lag check with reliability %u (%s)"
+msgstr "Megbízható lag ellenőrzés %u (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:220
+#, c-format
+msgid "Lag check completed (%s)"
+msgstr "Lag ellenőrzés befejezve (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:259
+#, c-format
+msgid "Lag check aborted (%s)"
+msgstr "Lag ellenőrzés megszakítva (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:143
+msgid "Hostname resolution aborted"
+msgstr "Hosztnév felderítés megszakítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:156
+msgid "Attempting %Q to %Q (%Q) on port %u"
+msgstr "%Q %Q szerverhez (%Q hálózat) port: %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "secure connection"
+msgstr "biztonságos kapcsolat"
+
+# ; konzol ablak, így jön ki értelmesen magyarul kapcsolódáskor
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "connection"
+msgstr "Kapcsolódás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:165
+#, c-format
+msgid "Attempting to 'bounce' on proxy %s on port %u (protocol %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:194
+#, c-format
+msgid "Using cached proxy IP address (%s)"
+msgstr "Tárolt proxy IP használata (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:237
+msgid "Unable to look up the IRC proxy hostname: Can't start the DNS slave"
+msgstr "IRC proxy hosztnevének felderítése, másodlagos DNS indítása sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:265
+msgid "Resuming direct server connection"
+msgstr "Közvetlen kapcsolódás a szerverhez"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:248
+#, c-format
+msgid "Looking up the proxy hostname (%s)..."
+msgstr "Proxy hosztnév felderítése (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:261
+msgid "Can't find the proxy IP address: %Q"
+msgstr "Nem találom a proxy IP címét: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:271
+msgid "Proxy hostname resolved to %Q"
+msgstr "Proxy hosztnév felderítve: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:284
+msgid "Proxy %Q has a nickname: %Q"
+msgstr "Proxy %Q nicke: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:322
+#, c-format
+msgid "Using cached server IP address (%s)"
+msgstr "Szerverhez tárolt IP cím használata (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:354
+msgid "Unable to look up the server hostname: Can't start the DNS slave"
+msgstr "Szerver hosztnév feloldás: másodlagos DNS indítása sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:359
+#, c-format
+msgid "Looking up the server hostname (%s)..."
+msgstr "Szerver hosztnevének felderítése (%s)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:373
+msgid "Can't find the server IP address: %Q"
+msgstr "Nem találom a szerver IP címét: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:380
+msgid "If this server is an IPv6 one, try /server -i %Q"
+msgstr "Ha ez a szerver IPV6-os, próbáld így: /server -i %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:390
+msgid "Server hostname resolved to %Q"
+msgstr "Szerver hosztneve felderítve: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:400
+msgid "Real hostname for %Q is %Q"
+msgstr "%Q valós hosztneve %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:414
+msgid "Server %Q has a nickname: %Q"
+msgstr "%Q szerver nickneve: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:468
+msgid "The specified bind address (%Q) is not valid"
+msgstr "A megadott kapcsoló cím (%Q) nem érvényes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:473
+msgid ""
+"The specified bind address (%Q) is not valid (the interface it refers to "
+"might be down)"
+msgstr ""
+"A megadott cím (%Q) érvénytelen (a kapcsolódó eszköz valószínűleg nem él)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:493
+#, c-format
+msgid "The system-wide IPv6 bind address (%s) is not valid"
+msgstr "Rendszer oldali IPv6 kapcsoló cím (%s) érvénytelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:500
+#, c-format
+msgid ""
+"The system-wide IPv6 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+"A rendszer oldali IPv6 cím (%s) nem érvényes (az eszköz valószínűleg nem él)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:522
+#, c-format
+msgid "The system-wide IPv4 bind address (%s) is not valid"
+msgstr "A rendszer oldali IPv4 kapcsolt cím (%s) nem érvényes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:529
+#, c-format
+msgid ""
+"The system-wide IPv4 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+"A rendszer oldali IPv4 kapcsolt cím (%s) nem érvényes (az eszköz "
+"valószínűleg nem él)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:230
+msgid "Channel operators"
+msgstr "Csatorna operátorok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:231
+msgid "Voiced users"
+msgstr "Hanggal rendelkező felhasználó"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:232
+msgid "Half-operators"
+msgstr "Fél-operátor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:233
+msgid "Ban masks"
+msgstr "Tiltó maszk"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:234
+msgid "Color free (no ANSI colors)"
+msgstr "Színtelen (nincsenek ANSI színek)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:235
+msgid "Ban exception masks"
+msgstr "Tiltó kivétel maszkok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:236
+msgid "Invite exception masks or forbid /INVITE"
+msgstr "Meghívó kivétel maszkok vagy /INVITE tiltás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:237
+msgid "Secret"
+msgstr "Titkos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:238
+msgid "Private"
+msgstr "Magán"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:239
+msgid "Topic change restricted"
+msgstr "Szigorú topik váltás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:240
+msgid "Invite only"
+msgstr "Csak meghívóval"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:241
+msgid "No external messages"
+msgstr "Külső üzenetek blokkolása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:242
+msgid "Anonymous or protected user"
+msgstr "Ismeretlen vagy védett felhasználó"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:243
+msgid "Quiet or channel owner"
+msgstr "Némít vagy csatorna tulajdonos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:244
+msgid "Limited number of users"
+msgstr "Limitált felhasználószám"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:245
+msgid "Key"
+msgstr "Kulcs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:246
+msgid "Moderated"
+msgstr "Moderált"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:247
+msgid "Registered"
+msgstr "Regisztrált"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:248
+msgid "Censor swear words"
+msgstr "Kulcsszavak cenzúrája"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:249
+msgid "Impossible to speak and change nick if not authenticated with NickServ"
+msgstr ""
+"NickServ azonosítás nélkül se \n"
+" beszélni se nicket váltani nem lehet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:250
+msgid "Impossible to change nick if not authenticated with NickServ"
+msgstr ""
+"Nickváltás tiltott, ha nincs \n"
+" azonosítva NickServvel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:251
+msgid "Only registered nicks can join"
+msgstr ""
+"Csak regisztrált Nickkel \n"
+" lehet csatlakozni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:252
+msgid "No kicks able (unless U-Line)"
+msgstr "Nincs kirúgás (kivéve U-Line)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:253
+msgid "IRC-Op only channel"
+msgstr "IRC-Operátoroknak fentartva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:254
+msgid "Server/Network/Tech Admin only channel"
+msgstr "Szerver/Hálózat/Tech Adminoknak fentartva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:255
+msgid "Forbid /KNOCK"
+msgstr "/KNOCK tiltása (kopogás)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:256
+msgid "Strip colors"
+msgstr "Színek eldobása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:257
+msgid "Redirect on channel full"
+msgstr "Átirányít, ha a csatorna megtelt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:258
+msgid "Forbid channel CTCPs"
+msgstr "Csatorna CTCP tiltása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:259
+msgid "User-operators OR Auditorium: /NAMES and /WHO show only ops"
+msgstr ""
+"Felhasználó-operátorok vagy előadóterem: \n"
+"/NAMES és /WHO csak az operátorokat mutatja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:260
+msgid "Only 7-bit letters in nicknames allowed"
+msgstr ""
+"Csak 7-bites karakterek engedélyezése \n"
+"a nicknévben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:261
+msgid "Impossible to use both 7-bit and 8-bit letters in nicknames"
+msgstr "7 és 8 bites karakterek tiltása a nicknévben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:270
+msgid "o: IRC operator (OPER)"
+msgstr "o: IRC operátor (OPER)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:271
+msgid "O: Local IRC operator (LOCOP)"
+msgstr "O: Helyi IRC operátor (LOCOP)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:272
+msgid "i: Invisible"
+msgstr "i: Láthatatlan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:273
+msgid "w: Recipient for WALLOPS messages"
+msgstr "w: WALLOPS üzenetek fogadása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:274
+msgid ""
+"r: User with restricted connection (or recipient for messages about rejected "
+"bots)"
+msgstr "r: Felhasználók korlátozott kapcsolatta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:275
+msgid "s: Recipient for server notices"
+msgstr "s: Szerver értesítők fogadása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:276
+msgid "z: Recipient for oper wallop messages"
+msgstr "z: Oper wallop üzenetek fogadása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:277
+msgid "c: Recipient for cconn messages"
+msgstr "c: cconn üzenetek fogadása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:278
+msgid "k: Recipient for server kill messages"
+msgstr "k: Szerver kill üzenetek fogadása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:279
+msgid "f: Recipient for full server notices"
+msgstr "f: Minden szerver üzenet fogadása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:280
+msgid "y: Spy :)"
+msgstr "y: Kém :)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:281
+msgid "d: Obscure 'DEBUG' flag"
+msgstr "d: Instabil 'DEBUG' flag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:282
+msgid "n: Recipient for nick changes"
+msgstr "n: Értesítő nick váltásról"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:100
+msgid "Ops... for some reason the link filter object has been destroyed"
+msgstr "Hoppá, valamiért a kapcsolat szűrő objektum megsemmisült"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:138
+msgid "Using filtered IRC protocol: Link filter is \"%Q\""
+msgstr "Szűrt IRC protokoll használata: Kapcsolat szűrő: \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:143
+msgid "Failed to set up the link filter \"%Q\", will try with plain IRC"
+msgstr "Kapcsolat szűrő beállítása sikertelen \"%Q\", próbálkozás sima IRC-vel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:202
+msgid "Failed to start the connection: %Q"
+msgstr "Kapcsolat indítása sikertelen: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:368
+msgid "Contacting %Q %s (%s) on port %u"
+msgstr "Kapcsolódás: %Q %s %s:%u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "proxy host"
+msgstr "proxy hoszt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "IRC server"
+msgstr "IRC szerver"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:375
+#, c-format
+msgid "Low-level transport connection established [%s (%s:%u)]"
+msgstr "Alacsony szintű átviteli kapcsolat létrejött [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:379
+msgid "Starting Secure Socket Layer handshake"
+msgstr "Secure Socket Layer kézfogás indítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Secure proxy connection"
+msgstr "Biztonságos proxy kapcsolat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Proxy connection"
+msgstr "Proxy kapcsolat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:387
+msgid "Negotiating relay information"
+msgstr "Közvetítő információ egyeztetése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:390
+msgid "Sent connection request, waiting for acknowledgement"
+msgstr "Kapcsolódási kérelem elküldve, várakozás a válaszra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:393
+msgid "Sent target host data, waiting for acknowledgement"
+msgstr "Cél hoszt adatai elküldve, várakozás a megerősítésre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:396
+msgid "Sent auth method request, waiting for acknowledgement"
+msgstr "Azonosítás elküldve, várakozás a megerősítésre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:399
+msgid "Sent username and password, waiting for acknowledgement"
+msgstr "Felhasználónév, jelszó elküldve várakozás a megerősítésre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:402
+msgid "Sent connection request, waiting for \"HTTP 200\" acknowledgement"
+msgstr "Kapcsolódási kérés elküldve, várakozás \"HTTP 200\" megerősítésre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:176
+msgid "[SSL]: %Q"
+msgstr "[SSL]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:181
+msgid "[SSL ERROR]: %Q"
+msgstr "[SSL HIBA]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:190
+msgid "[PROXY]: %Q"
+msgstr "[PROXY]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:200
+msgid "[PROXY ERROR]: %Q"
+msgstr "[PROXY HIBA]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:207
+msgid "[SOCKET]: %Q"
+msgstr "[SOCKET]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:212
+msgid "[SOCKET ERROR]: %Q"
+msgstr "[SOCKET HIBA]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:218
+msgid "[SOCKET WARNING]: %Q"
+msgstr "[SOCKET FIGYELMEZTETÉS]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:337
+#, c-format
+msgid "Binding to local address %s"
+msgstr "Kapcsolás a helyi címhez %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:341
+#, c-format
+msgid ""
+"Binding to local address %s failed: the kernel will choose the correct "
+"interface"
+msgstr ""
+"Kapcsolás a helyi %s címhez sikertelen: a kernel fogja a helyes eszközt "
+"kiválasztani"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:637
+msgid "Using HTTP protocol."
+msgstr "HTTP protokoll alkalmazása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:683
+msgid "Using SOCKSV4 protocol."
+msgstr "SOCKSV4 protokoll alkalmazása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:756
+msgid "Using SOCKSv5 protocol."
+msgstr "SOCKSV5 protokoll alkalmazása."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:771
+msgid "We can accept auth method 0 (no auth)"
+msgstr "Azonosítás nem szükséges, nincs azonosítás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:779
+msgid "We can accept auth method 0 (no auth) or 2 (user/pass)"
+msgstr ""
+"Azonosítás nem szükséges, nincs azonosítás vagy 2 (felhasználónév/jelszó)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:958
+msgid "Proxy response: auth OK: access granted"
+msgstr "Proxy válasza: azonosítás rendben, belépés engedélyezve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:993
+msgid "Proxy response: Auth method OK: using method 0 (no auth)"
+msgstr "Proxy válasz: Azonosítás rendben, 0. metódus (nincs azonosítás)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1000
+msgid "Proxy response: Auth method OK: using method 2 (user/pass)"
+msgstr ""
+"Proxy válasz: Azonosítási metódus rendben, 2. metódus (felhasználónév/jelszó)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1056
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1113
+msgid "Proxy response: target data OK: request granted"
+msgstr "Proxy válasz: cél adat rendben, kérés engedélyezve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1153
+msgid "Proxy response: "
+msgstr "Proxy válasza:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1164
+msgid "Proxy said something about: \n"
+msgstr "Proxy válasza erről: \n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1205
+msgid "Server X509 certificate"
+msgstr "Szerver X509 hitelesítés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1209
+msgid "The server didn't provide a certificate"
+msgstr "A szerver nem rendelkezik hitelesítéssel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1223
+msgid "Unable to determine the current cipher"
+msgstr "Titkosítás meghatározása sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1768
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1788
+msgid "Partial socket write: packet broken into smaller pieces."
+msgstr "Részleges socket írás: kisebb darabokra esett a csomag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:60
+msgid "The theme information file does not exist"
+msgstr "A kinézet információk nem léteznek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:71
+msgid ""
+"This KVIrc executable is too old for this theme (minimum theme engine "
+"version required is %Q while this theme engine has version %s)"
+msgstr ""
+"Ezen KVIrc verzió túl régi ehhez a kinézethez. (a szükséges verzió legalább %"
+"Q, a jelenlegi verzió pedig %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:80
+msgid "Theme information file is not valid"
+msgstr "Kinézet információ nem érvényes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:248
+msgid "Failed to load the specified screenshot image"
+msgstr "A felvétel betöltése sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:257
+msgid "Invalid option"
+msgstr "Helytelen opció"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:265
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:293
+msgid "Failed to save the screenshot image"
+msgstr "Felvétel mentése sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:117
+msgid "Configure Servers..."
+msgstr "Szerverek beállítása..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:118
+msgid "Allows you to configure the servers and eventually to connect to them"
+msgstr "Lehetővé teszi a szerverek beállítását és a hozzájuk kapcsolódást"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:128
+msgid "Manage Addons..."
+msgstr "Addonok kezelése..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:129
+msgid "Allows you to manage the script-based addons"
+msgstr "Lehetővé teszi szkript alapú addonok kezelését"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:139
+msgid "Configure Registered Users..."
+msgstr "Regisztrált felhasználók kezelése..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:140
+msgid "Shows a dialog that allows editing the registered user entries"
+msgstr ""
+"Párbeszédablak, mely lehetővé teszi a regisztrált felhasználók szerkesztését"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:150
+msgid "Configure Identity..."
+msgstr "Azonosítók beállítása..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:151
+msgid "Allows you to configure nickname, username, avatar etc..."
+msgstr "Nicknév, felhasználónév, avatar, stb. beállítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:161
+msgid "Show SocketSpy..."
+msgstr "SocketSpy..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:162
+msgid "Shows a window that allows monitoring the socket traffic"
+msgstr "Megjeleníti a socketek forgalmát"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:172
+msgid "Get Network Links"
+msgstr "Hálózati kapcsolatok lekérése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:173
+msgid "Shows a window that allows viewing the network links"
+msgstr "Megjeleníti a hálózati kapcsolatokat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:183
+msgid "Get Channel List"
+msgstr "Csatorna lista lekérése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:184
+msgid "Shows a window that allows listing the network channels"
+msgstr "Megjeleníti az elérhető hálózati csatornákat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:194
+msgid "Configure KVIrc..."
+msgstr "KVIrc beállítása..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:195
+msgid "Shows the general options dialog"
+msgstr "Általános beállítások megjelenítése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:205
+msgid "Configure Theme..."
+msgstr "Kinézet beállítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:206
+msgid "Shows the theme options dialog"
+msgstr "KVIrc megjelenésének beállításai"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:216
+msgid "Manage Themes..."
+msgstr "Kinézetek kezelése..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:217
+msgid "Allows you to manage the themes"
+msgstr "A kinézetek kezelését teszi lehetővé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:227
+msgid "Customize Toolbars..."
+msgstr "Eszköztárak testreszabása..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:228
+msgid "Shows a window that allows editing script toolbars"
+msgstr "Szkript alapú eszköztárak szerkesztését teszi lehetővé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:239
+msgid "Join Channels..."
+msgstr "Csatlakozás csatornákhoz..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:240
+msgid "Shows a dialog that allows you joing channels"
+msgstr "Párbeszédablak, amely lehetővé teszi a csatlakozást csatornákhoz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:251
+msgid "Edit Actions..."
+msgstr "Akciók szerkesztése..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:252
+msgid "Shows a window that allows editing actions"
+msgstr "Akciók szerkesztésére"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:262
+msgid "Edit Aliases..."
+msgstr "Aliasok szerkesztése..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:263
+msgid "Shows a window that allows editing aliases"
+msgstr "Aliasok szerkesztésére"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:273
+msgid "Edit Events..."
+msgstr "Események szerkesztése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:274
+msgid "Shows a window that allows editing script events"
+msgstr "Szkript események szerkesztésére"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:284
+msgid "Edit Popups..."
+msgstr "Popupok szerkesztése..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:285
+msgid "Shows a window that allows editing popup menus"
+msgstr "Felbukkanó menük szerkesztésére"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:295
+msgid "Edit Raw Events..."
+msgstr "Raw események szerkesztése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:296
+msgid "Shows a window that allows editing raw scripting events"
+msgstr "Raw események szerkesztésére"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:306
+msgid "New Script Tester"
+msgstr "Szkript Teszter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:307
+msgid "Creates an embedded editor for long scripts"
+msgstr "Beépített szerkesztő hosszabb szkriptek írására"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:317
+msgid "Execute Script..."
+msgstr "Szkript futtatása..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:318
+msgid "Allows executing a KVS script from file"
+msgstr "KVS szkriptek futtatását teszi lehetővé fájlból"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:328
+msgid "Help Index"
+msgstr "Segítség Kezdőlap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:329
+msgid "Shows the documentation index"
+msgstr "Dokumentáció tartalomjegyzéke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:340
+msgid "Allows subscribing to the KVIrc mailing list"
+msgstr "Feliratkozás a KVIrc levelezőlistára"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:350
+msgid "KVIrc WWW"
+msgstr "KVIrc a Weben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:351
+msgid "Opens the KVIrc homepage"
+msgstr "Megnyitja a KVirc honlapját"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:361
+msgid "KVIrc Russian WWW"
+msgstr "Orosz KVIrc a Weben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:362
+msgid "Opens the KVIrc homepage in russian"
+msgstr "A KVIrc orosz honlapja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:372
+msgid "Acquire Screenshot"
+msgstr "Képfelvétel készítése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:373
+msgid "Acquires a Screenshot of the KVIrc main window"
+msgstr "Felvétel készítése a KVIrc fő ablakáról"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:385
+msgid "Cascade windows"
+msgstr "Lépcsőzetes ablakelrendezés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:386
+msgid "Arranges the MDI windows in a maximized-cascade fashion"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:397
+msgid "Tile windows"
+msgstr "Egymás mellé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:398
+msgid "Tiles the MDI windows with the currently selected tile method"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:409
+msgid "Minimize all windows"
+msgstr "Minden ablak minimalizálása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:410
+msgid "Minimized all the currently visible MDI windows"
+msgstr "Minden látható MDI ablak tálcára tétele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:421
+msgid "New IRC Context"
+msgstr "Új IRC Környezet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:422
+msgid "Creates a new IRC context console"
+msgstr "Új IRC környezet megnyitása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:433
+msgid "Quit KVIrc"
+msgstr "Kilépés a KVIrcből"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:434
+msgid "Quits KVIrc closing all the current connections"
+msgstr "Kilépéskor a KVIrc lezárja az összes kapcsolatot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:448
+msgid "IRC Context Display"
+msgstr "IRC Környezet Kijelző"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:449
+msgid "Shows a small display with IRC context informations"
+msgstr "IRC környezet információinak megjelenítése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:520
+msgid "Acts as a separator for other items: performs no action"
+msgstr "Elválasztóként viselkedik más elemek számára: nincs akciója"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:554
+msgid "Connect/Disconnect"
+msgstr "Kapcsolódás / Kapcsolat lezárása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:555
+msgid ""
+"Allows you to connect to a server or to terminate the current connection"
+msgstr "Kapcsolódás a szerverhez vagy az aktuális kapcsolat bontása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:628
+msgid "Connect"
+msgstr "Kapcsolódás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:629
+msgid "Abort Connection"
+msgstr "Kapcsolódás megszakítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:790
+msgid "Join Channel"
+msgstr "Csatlakozás csatornához"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:791
+msgid "Shows a popup menu that allows quickly selecting a channel to join"
+msgstr "Popup menüben megjelnít csatornaneveket, amikhez lehet csatlakozni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:851
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:863
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:896
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:907
+msgid "Other..."
+msgstr "Egyéb..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:834
+msgid "Change Nickname"
+msgstr "Nick váltása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:835
+msgid "Shows a popup menu that allows quickly changing the nickname"
+msgstr "Popup menü megjelenítése, ami lehetővé teszi a gyors nickváltást"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:883
+msgid "Connect To"
+msgstr "Kapcsolódás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:884
+msgid "Shows a popup menu that allows quickly connecting to a server"
+msgstr ""
+"Felbukkanó menü megjelenítése, ami lehetővé teszi gyors csatlakozást a "
+"szerverhez"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:929
+msgid "User Mode"
+msgstr "Felhasználó mód"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:930
+msgid "Shows a popup menu that allows quickly changing user modes"
+msgstr "Felhasználói módok váltása a felajánlott listából"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:947
+msgid "Wallops (+w)"
+msgstr "Wallops (+w)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:949
+msgid "Server Notices (+s)"
+msgstr "Szerver Értesítések (+s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:951
+msgid "Invisible (+i)"
+msgstr "Láthatatlan (+i)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:997
+msgid "Away/Back"
+msgstr "Távol / Elérhető"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:998
+msgid "Allows entering and leaving away state"
+msgstr "Nem elérhető üzemmód ki-be kapcsolása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1065
+msgid "Enter Away Mode"
+msgstr "Nem elérhető mód"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1066
+msgid "Leave Away Mode"
+msgstr "Elérhető mód"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1135
+msgid "Irc Tools"
+msgstr "Irc Eszközök"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1136
+msgid "Shows a popup menu with some IRC Tools"
+msgstr "Felbukkanó menü néhány IRC eszközzel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1171
+msgid "Irc Actions"
+msgstr "Irc Akció"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1172
+msgid "Shows a popup menu with some IRC Actions"
+msgstr "Felbukkanó menü néhány IRC akcióval"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:412
+msgid "KVIrc KVS Script"
+msgstr "KVIrc KVS Szkript"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:174
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:420
+msgid "Run KVS Script"
+msgstr "KVS szkript futtatása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:284
+msgid "URL:IRC Protocol"
+msgstr "URL:IRC Protokoll"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:383
+msgid "Open with KVIrc"
+msgstr "Megnyitás KVIrccel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:436
+msgid "KVIrc Configuration File"
+msgstr "KVIrc konfigurációs fájl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:453
+msgid "KVIrc Theme Package"
+msgstr "KVIrc Kinézet Csomag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:461
+msgid "Install Theme Package"
+msgstr "Kinézet csomag telepítése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:478
+msgid "KVIrc Addon Package"
+msgstr "KVIrc addon csomag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:486
+msgid "Install Package"
+msgstr "Telepítő csomag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:749
+#, c-format
+msgid ""
+"Ops...it looks like I can't load modules on this sytem.\n"
+"I have been looking for the %s library but I haven't been able to load it\n"
+"due to the following error: \"%s\"\n"
+"Aborting."
+msgstr ""
+"Uppsz, nem tudok betölteni csomagokat ezen a rendszeren.\n"
+"Próbáltam az %s libeket betölteni, de nem sikerült a következő \n"
+"hiba miatt: \"%s\"\n"
+"Megszakítás."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:762
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_begin\" function.\n"
+"Aborting!"
+msgstr ""
+"Hoppá... látszólag hibás disztribúciód van.\n"
+"A Beállító modul nem exportálta a \"setup_begin\" függvényt.\n"
+"Megszakítás!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:776
+msgid "Setup aborted"
+msgstr "Beállítás megszakítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:801
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_finish\" function.\n"
+"Trying to continue anyway..."
+msgstr ""
+"Hoppá... látszólag hibás kiadásod van.\n"
+"A Beállító modul nem exportálta a \"setup_finish\" függvényt.\n"
+"Megpróbálom folytatni..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:186
+msgid "%Q is on IRC"
+msgstr "%Q elérhető IRC-en"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:248
+msgid "%Q has left IRC"
+msgstr "%Q kilépett IRCről"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:368
+msgid "Notify list: No users to check for, quitting"
+msgstr "Értesítési lista: nincs regisztrált felhasználó, kilépés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:414
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (15 sec)"
+msgstr ""
+"Értesítési lista: A megadott időtúllépés (%d mp) túl rövid, újra "
+"próbálkozás15 másodpercenként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:428
+msgid "Notify list: Notify list empty, quitting"
+msgstr "Értesítési lista: Értesítési lista üres, kilépés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:455
+#, c-format
+msgid ""
+"Notify list: ISON delay (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+"Értesítési lista: ISON késleltetés túl rövid (%d mperc), ésszerűbb érték "
+"beállítása (5 mperc)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:491
+msgid "Notify list: Checking for: %Q"
+msgstr "Értesítési lista: %Q keresése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:535
+msgid ""
+"Notify list: Hey! You've used ISON behind my back? (I might be confused "
+"now...)"
+msgstr ""
+"Értesítési lista: Héhó! ISONt használtál nélkülem? (kicsit "
+"összezavarodtam...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:682
+msgid "registration mask changed, or nickname is being used by someone else"
+msgstr "Regisztrációs maszk megváltozott, vagy a Nevet más használja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:686
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (registration mask does not match, or nickname is being used "
+"by someone else)"
+msgstr ""
+"Értesítési lista: \r!n\r%Q\r látszólag elérhető, de a maszk [%Q@\r!h\r%Q\r] "
+"nem egyezik (maszk nem egyezik, vagy a Nevet valaki más használja)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:691
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? "
+"(restarting)"
+msgstr ""
+"Értesítési lista: Váratlan inkonzisztencia, regisztrált felhasználói "
+"adatbázis módosítva? (újraindítás)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:698
+msgid ""
+"Notify list: Unexpected inconsistency, expected \r!n\r%Q\r in the registered "
+"user DB"
+msgstr ""
+"Értesítési lista: Váratlan inkonzisztencia, hiányzó \r!n\r%Q\r a regisztrált "
+"felhasználói adatbázisban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:712
+#, c-format
+msgid ""
+"Notify list: USERHOST delay (%d sec) is too short, resetting to something "
+"more reasonable (5 sec)"
+msgstr ""
+"Értesítési lista USERHOST késleltetése (%d mp) túl kevés, visszaállítás "
+"ésszerűbbre (5 mp)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:726
+msgid "Notify list: Unexpected inconsistency, userhost list is empty!"
+msgstr "Értesítési lista: Váratlan inkonzisztencia, userhost lista üres!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:761
+msgid "Notify list: Checking userhost for: %Q"
+msgstr "Értesítési lista: userhost ellenőrzése: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:831
+msgid ""
+"Notify list: Hey! You've used USERHOST behind my back? (I might be confused "
+"now...)"
+msgstr ""
+"Értesítési lista: Hé, USERHOST-ot használtál nélkülem? (összezavarodtam...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:836
+#, c-format
+msgid "Notify list: Broken USERHOST reply from the server? (%s)"
+msgstr "Értesítési lista: Hibás USERHOST válasz a szervertől? (%s) "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:860
+msgid ""
+"Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST reply "
+"was received, will recheck in the next loop"
+msgstr ""
+"Értesítési lista: \r!n\r%Q\r látszólag eltűnt mielőtt válaszolt volna a "
+"USERHOST kérésre, újraellenőrzés legközelebbi alkalommal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:931
+msgid "Starting notify list"
+msgstr "Értesítési lista indítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:936
+msgid "No users in the notify list"
+msgstr "Értesítési lista: %Q ellenőrzése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:958
+msgid "Notify list: Checking for:%Q"
+msgstr "Értesítési lista: %Q ellenőrzése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1013
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+"Értesítési lista: Időtúllépés (%d mp) túl rövid, átállítás 5 másodpercre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1139
+msgid "Notify list: Adding watch entries for%Q"
+msgstr "Értesítési lista: %Q hozzáadása a figyeltekhez "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1171
+msgid "watch entry listing requested by user"
+msgstr "Figyeltek lekérése a felhasználó által"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1175
+msgid "possible watch list desync"
+msgstr "lehetséges figyelési lista aszinkron"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1185
+msgid "registration mask changed or desync with the watch service"
+msgstr ""
+"regisztrációs maszk megváltozott vagy aszinkron a figyelő szolgáltatásban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1190
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (watch: registration mask does not match, or nickname is "
+"being used by someone else)"
+msgstr ""
+"Értesítési lista: \r!n\r%Q\r látszólag elérhető, de a maszk [%Q@\r!h\r%Q\r] "
+"nem egyezik (regisztrációs maszk nem egyezik, vagy a Nevet valaki más "
+"használja)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1197
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? (watch: "
+"restarting)"
+msgstr ""
+"Értesítési lista: váratlan inkonzisztencia, regisztrált felhasználói "
+"adatbázis módosítva kívülről? (figyelés újraindítása)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1207
+msgid "watch entry added by user"
+msgstr "figyelt elem felhasználó által hozzáadva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1245
+msgid "removed from watch list"
+msgstr "eltávolítva a figyelő listáról"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1248
+msgid "Notify list: Stopped watching for \r!n\r%Q\r"
+msgstr "Értesítési lista: Figyelés leállítása: \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1258
+msgid "watch"
+msgstr "figyelés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1264
+msgid "Notify list: \r!n\r%Q\r is offline (watch)"
+msgstr "Értesítési lista: \r!n\r%Q\r nem elérhető (figyelt)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1267
+msgid "unmatched watch list entry"
+msgstr "nem egyező figyelőlista elem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:80
+msgid "commandline::userfriendly"
+msgstr "paranccsor::felhasználóbarát"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:94
+msgid "commandline::kvs"
+msgstr "paranccsor::kvs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:127
+msgid "You are not connected to a server"
+msgstr "Nem csatlakoztál szerverhez"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_iconmanager.cpp:372
+msgid "Icon Table"
+msgstr "Ikon Tábla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:190
+msgid "No "
+msgstr "Nem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:196
+msgid "This module has no version informations: refusing to load it"
+msgstr "A megadott modulnak nincs verziószáma, betöltés visszautasítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:204
+msgid ""
+"This module was compiled for a different KVIrc version and can't be loaded"
+msgstr ""
+"Ez a modul más KVIrc verzióhoz lett lefordítva, nem lehetséges a betöltése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:232
+msgid "Failed to execute the init routine"
+msgstr "Inicializáló rutin futtatása sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:261
+#, c-format
+msgid "Loaded module '%s' (%s)"
+msgstr "Betöltött modul '%s' (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:306
+#, c-format
+msgid "Unloaded module '%s'"
+msgstr "Eltávolított modul %s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:45
+msgid "This window has no associated irc context"
+msgstr "Az ablaknak nincs hozzárendelt IRC környezete"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:50
+#, c-format
+msgid "No such irc context (%d)"
+msgstr "Nincs ilyen IRC környezet (%d)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:147
+msgid "Global idle timer must be started before using $my.globalIdle function"
+msgstr ""
+"Globális tétlenségi stoppert a $my.globalide függvény előtt kell meghívni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:103
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:215
+msgid "Window %Q not found"
+msgstr "%Q ablak nem található"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:108
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:220
+msgid "Missing window id after the 'w' switch"
+msgstr "Ablak azonosító hiányzik a 'w' kapcsoló után"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:121
+msgid "Can't log to file %Q"
+msgstr "Nem lehet naplózni %Q fájlba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:123
+msgid "This window has no logging capabilities"
+msgstr "Ez az ablak nem logolható"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:275
+msgid "Window with id '%Q' not found, returning empty string"
+msgstr "Ablak %Q azonosítóval nem található, visszatérés üres sztringgel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:598
+msgid "Sound file '%Q' not found"
+msgstr "'%Q hangfájl nem található"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:604
+msgid "Unable to play sound '%Q'"
+msgstr "Hangot nem lehet lejátszani: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:615
+msgid "Sorry , I can't find a sound system to use on this machine"
+msgstr "Sajnálom, nem találtam használható hangrendszert ezen a gépen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:617
+#, c-format
+msgid "Sound system detected to: %s"
+msgstr "Hangrendszer meghatározva: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:141
+msgid "Show at startup"
+msgstr "Mutasd induláskor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:154
+msgid "Did you know..."
+msgstr "Tudtad-e?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:220
+msgid "<b>Can't find any tip... :(</b>"
+msgstr "<b>Nincs egy darab tipp sem.. :(</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1544
+msgid "%Q algorytm is not supported"
+msgstr "%Q algoritmus nem támogatott"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1566
+msgid ""
+"KVIrc is compiled without OpenSSL support. $str.digest function disabled"
+msgstr ""
+"KVIrc OpenSSL támogatás nélkül lett lefordítva. $str.digest függvény letiltva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2030
+msgid "Invalid argument for ?d escape sequence, 0 assumed"
+msgstr "Helytelen argumentum ?d kilépési szekvenciára, 0-ra állítás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2034
+msgid "Missing argument for ?d escape sequence, 0 assumed"
+msgstr "Hiányzó argomentum ?d kilépési szekvenciára, 0-ra állítás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2066
+msgid "Invalid argument for ?u escape sequence, 0 assumed"
+msgstr "Helytelen argumentum ?u kilépési szekvenciára, 0-ra állítás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2070
+msgid "Missing argument for ?u escape sequence, 0 assumed"
+msgstr "Hiányzó argumentum ?u kilépési szekvenciára, 0-ra állítás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2097
+msgid "Invalid argument for ?x escape sequence, 0 assumed"
+msgstr "Helytelen argumentum ?x kilépési szekvenciára, 0-ra állítás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2101
+msgid "Missing argument for ?x escape sequence, 0 assumed"
+msgstr "Hiányzó argumentum ?x kilépési szekvenciára, 0-ra állítás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2128
+msgid "Invalid argument for ?X escape sequence, 0 assumed"
+msgstr "Helytelen argumentum ?X kilépési szekvenciára, 0-ra állítás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2132
+msgid "Missing argument for ?X escape sequence, 0 assumed"
+msgstr "Hiányzó argumentum ?u kilépési szekvenciára, 0-ra állítás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2189
+msgid "Invalid argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2193
+msgid "Missing argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:87
+msgid "Show URL List"
+msgstr "URL Lista mutatása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:88
+msgid "Shows the URL list window"
+msgstr "URL listaablak mutatása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:124
+msgid "&Configure"
+msgstr "Beállítás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:126
+msgid "Clo&se"
+msgstr "Bezárás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:127
+msgid "&Module"
+msgstr "&Modul"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:130
+msgid "&Load"
+msgstr "Betö&ltés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:131
+msgid "&Save"
+msgstr "Menté&s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:132
+msgid "&Clear"
+msgstr "Töröl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:133
+msgid "&List"
+msgstr "&Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:136
+msgid "URL"
+msgstr "URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:137
+msgid "Window"
+msgstr "Ablak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:138
+msgid "Count"
+msgstr "Számlál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:139
+msgid "Timestamp"
+msgstr "Időbélyeg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:113
+msgid "Warning - KVIrc"
+msgstr "Figyelmeztetés - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+msgid "Select an URL."
+msgstr "Válassz egy URLt."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:115
+msgid "&Remove"
+msgstr "Eltávolít"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:269
+msgid "&Find Text"
+msgstr "Szöveg keresése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:280
+msgid "&Say to Window"
+msgstr "Mondd az ablakba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+msgid "Window not found."
+msgstr "Ablak nem található."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:349
+msgid "URL Module Configuration"
+msgstr "URL Modul Konfiguráció"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:356
+msgid "Save URL list on module unload"
+msgstr "URL lista mentése Modul kilépésekor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:360
+msgid "Save columns width on URL list close"
+msgstr "Oszlopszélesség mentése a Lista bezárásakor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1187
+msgid "&Cancel"
+msgstr "Mégsem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:432
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1328
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:458
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1186
+msgid "&OK"
+msgstr "&OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:423
+msgid "Enable URL ban list"
+msgstr "URL-Tilólista engedélyezése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:435
+msgid "&Add Ban"
+msgstr "Tiltás hozzáadás&a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:440
+msgid "&Remove Selected"
+msgstr "Kijelölt Törlése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "URL Ban List"
+msgstr "URL Tiltólista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+msgid "Select a ban."
+msgstr "Tiltás kiválasztása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:797
+msgid "View URL list"
+msgstr "URL lista megtekintése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:49
+msgid "Can't find the window with id '%Q'"
+msgstr "Az ablak %s azonosítóval nem létezik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:53
+msgid "The specified window (%Q) is not a channel"
+msgstr "A megadott ablak (%Q) nem csatorna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:78
+msgid "Destinaion file exists: no copy made"
+msgstr "Cél fájl létezik: másolatot nem készítek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:83
+msgid "Failed to copy from %Q to %Q"
+msgstr "Másolási hiba %Q - %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:84
+msgid "Either the source doesn't exist or the destination can not be created"
+msgstr "Amíg a forrás nem létezik, addig a célt nem hozhatom létre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:203
+msgid "Failed to write to file %Q: the destination couldn't be opened"
+msgstr "%Q írási hiba, a célt nem lehet megnyitni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:244
+msgid "Destination file exists: file not renamed"
+msgstr "Célfájl létezik: fájl átnevezés sikertlelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:247
+msgid "Failed to rename %Q to %Q"
+msgstr "Átnevezés sikertelen %Q -> %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:281
+msgid "Failed to make the directory %Q"
+msgstr "%Q könyvtár létrehozása sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:322
+msgid "Failed to remove the file %Q"
+msgstr "%Q eltávolítása sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:365
+msgid "Failed to remove the directory %Q"
+msgstr "%Q könyvtár eltávolítása sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:482
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:628
+msgid "The specified directory does not exist '%Q'"
+msgstr "A megadott %Q könyvtár nem létezik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:730
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:824
+msgid "Can't open the file \"%Q\" for reading"
+msgstr "Nem lehet megnyitni a(z) %Q fájlt olvasásra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:746
+msgid "Read error for file %Q"
+msgstr "Olvasási hiba: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:754
+msgid ""
+"Read error for file %Q (have been unable to read the requested size in 1000 "
+"retries)"
+msgstr ""
+"Írási hiba: %Q (a kért méretben a fájl nem olvasható 1000 próbálkozáson "
+"belül)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:920
+msgid "Can't open the file \"%Q\" for writing"
+msgstr "%Q fájl megnyitása írásra sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/index.cpp:473
+msgid "Untitled"
+msgstr "Névtelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+msgid "Indexing help files"
+msgstr "Segítség fájlok indexelése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:87
+msgid "Index"
+msgstr "Index"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:99
+msgid "Refresh index"
+msgstr "Index frissítése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:211
+msgid "Full Text Search"
+msgstr "Teljes szöveges keresés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:203
+msgid "Using a wildcard within phrases is not allowed."
+msgstr "Joker karakter használata szavak között nem engedélyezett."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:212
+msgid "The closing quotation mark is missing."
+msgstr "A záró idézőjel hiányzik."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:312
+msgid "Help Browser"
+msgstr "Segítség Böngésző"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:201
+msgid "Request List"
+msgstr "Lista Kérése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:207
+msgid "Stop list download"
+msgstr "Lista letöltésének megszakítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:211
+msgid ""
+"<center><b>/LIST command parameters:</b><br>Many servers accept special "
+"parameters that allow you to filter the returned entries.<br>Commonly, "
+"masked channel names (*kvirc*) are accepted as parameters, as well as "
+"strings like <b>c&lt;n</b> or <b>c&gt;n</b> where <b>n</b> is the minimum or "
+"maximum of users on the channel.</center>"
+msgstr ""
+"<center><b>/LIST parancs paraméterei:</b><br>Sok szerver elfogad "
+"különlegesamivel szűrhető a visszatérő eredmény.<br>Általában ezek maszkolt "
+"csatornanevek (*kvirc*) és sztringek, mint <b>c&lt;n</b> vagy <b>c&gt;n</b> "
+"ahol <b>n</b> a minimum vagy maximum a felhasználók száma a csatornán.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:220
+msgid "Users"
+msgstr "Felhasználók"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:221
+msgid "Topic"
+msgstr "Topik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:262
+msgid "Sent list request, waiting for reply..."
+msgstr "Lista kérése folyamatban, válaszra várva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:265
+msgid "Cannot request list: No active connection"
+msgstr "Nem tudok listát lekérni, nincs aktív kapcsolat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:389
+msgid "Stopping the list download..."
+msgstr "Lista letöltésének leállítása folyamatban..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:276
+msgid "Cannot stop list download, no active connection."
+msgstr "Nem lehet leállítani a letöltést, mivel nincs aktív kapcsolat."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:125
+#, c-format
+msgid "Connected to %s (%s)"
+msgstr "Kapcsolódva %s (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:293
+msgid "List cannot be requested: Not connected to a server"
+msgstr "Lista nem lekérhető, nincs kapcsolat a szerverrel."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:316
+#, c-format
+msgid "Channel List [IRC Context %u]"
+msgstr "Csatorna Lista [IRC Környezet %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:319
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel List</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Csatorna Lista</b></font> <font color=\"%s\">"
+"[IRC Környezet %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:326
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel list</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Csatorna Lista</b></font> <font color=\"%s\">"
+"[IRC Környezet %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:342
+msgid "You cannot export an empty list"
+msgstr "Üres listát nem lehetséges exportálni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:350
+msgid "Channel list for %Q - %Q"
+msgstr "Csatorna lista %Q - %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:353
+msgid "Channel list"
+msgstr "Csatornák"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:382
+msgid "Choose filename"
+msgstr "Fájlnév megadása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:356
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:383
+msgid "Configuration files (*.kvc)"
+msgstr "Konfigurációs fájlok (*.kvc)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:398
+msgid "Reset"
+msgstr "Újraindít"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:435
+msgid "Channels list download finished"
+msgstr "Csatorna lista letöltése befejezve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:472
+msgid "Processing list: %Q"
+msgstr "Listázás folyamatban: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/libkvilist.cpp:63
+msgid "List window alread open for this IRC context"
+msgstr "Listázó ablak már van nyitva ehhez az IRC környezethez"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:70
+msgid "Terminal"
+msgstr "Terminál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:73
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:77
+#, c-format
+msgid "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+msgstr "<nobr><font color=\"%s\"><b>Terminál</b></font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:59
+msgid "Terminal emulator"
+msgstr "Terminál emulátor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:63
+msgid "Close this window"
+msgstr "Ablak bezárása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:91
+msgid "Can't create the terminal emulation part"
+msgstr "Nem lehet létrehozni terminál emuláló részt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:96
+msgid "Can't retrieve the terminal emulation factory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:95
+msgid "KVIrc"
+msgstr "KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:98
+msgid "Context"
+msgstr "Környezet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:155
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:100
+msgid "Away"
+msgstr "Nem elérhető"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:102
+msgid "&Configure KVIrc..."
+msgstr "KVIr&c beállítása..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:104
+msgid "&About KVIrc"
+msgstr "KVircről..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:109
+msgid "Un&dock"
+msgstr "Lecsatolás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:168
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:112
+msgid "Ctrl+Q"
+msgstr "Ctrl+Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:143
+msgid "Nothing is happening..."
+msgstr "Semmi nem történik..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:285
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:144
+msgid "Just idling..."
+msgstr "Csak a tétlenség..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:145
+msgid "Dum de dum de dum..."
+msgstr "Pam para ram param pam pararam..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:146
+msgid "Hey man... do something!"
+msgstr "Ember, csinálj már valamit... \"-.-"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:147
+msgid "Umpf!"
+msgstr "Pf!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:148
+msgid "Silence speaking"
+msgstr "Némák beszéde..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:149
+msgid "Are ya here?"
+msgstr "o/ Itt vagy?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:150
+msgid "The world has stopped?"
+msgstr "A világ leállt?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:151
+msgid "Everything is all right"
+msgstr "Minden a legnagyobb rendben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:152
+msgid "idle()"
+msgstr "idle()"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:153
+msgid "It's so cold here..."
+msgstr "Marha hideg van ám erre..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:295
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:154
+msgid "Do not disturb... watching TV"
+msgstr "Ne zavarj, tévézem..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:155
+msgid "Just vegetating"
+msgstr "Vegetálok..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:156
+msgid "Hey... are ya sure that your network is up?"
+msgstr "Pszt... biztos vagy te abban, hogy a hálózatod működik?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:298
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:157
+msgid "Seems like the world has stopped spinning"
+msgstr "Kapaszkodj, a föld már szerintem nem forog..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:299
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:158
+msgid "This silence is freaking me out!"
+msgstr "Ez a csönd kikészít!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:300
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:159
+msgid "Mieeeeeowww!"
+msgstr "Mijaúúúúúúú!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:301
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:160
+msgid "idle idle idle idle!"
+msgstr "Semmi Semmi Nulla Nulla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Hide Window"
+msgstr "Ablak elrejtése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Show Window"
+msgstr "Ablak Megjelenítése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:428
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:260
+msgid "Away on all"
+msgstr "Nem elérhető: Mindenhol"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:263
+msgid "Back on all"
+msgstr "Mindenhol: Elérhető"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:450
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:282
+msgid "Back on %1"
+msgstr "Elérhető csak: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:453
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:285
+msgid "Away on %1"
+msgstr "Nem elérhető csak: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1238
+msgid "Alias"
+msgstr "Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1217
+msgid "No item selected"
+msgstr "Nincs elem kiválasztva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:232
+msgid "Rename"
+msgstr "Átnevez"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:236
+msgid "Edit the alias or namespace name"
+msgstr "Alias vagy névtér név szerkesztése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+msgid "Add Alias"
+msgstr "Alias Hozzáadása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:429
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Add Namespace"
+msgstr "Névtér Hozzáadása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:440
+msgid "Remove Selected"
+msgstr "Kijelölt Eltávolítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:449
+msgid "Export Selected..."
+msgstr "Kijelölt Exportálása..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:455
+msgid "Export Selected in singles files..."
+msgstr "Kijelöltek exportálása fájlokba..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:462
+msgid "Export All..."
+msgstr "Összes exportálása..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:470
+msgid "Find In Aliases..."
+msgstr "Keresés az Aliasokban..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:476
+msgid "Collapse All Namespaces"
+msgstr "Összes Névtér törlése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:508
+msgid "Find In Aliases"
+msgstr "Keresés Aliasokban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:509
+msgid ""
+"Please enter the text to be searched for. The matching aliases will be "
+"highlighted."
+msgstr "Add meg a keresendő szöveget. Az egyező aliasok ki lesznek emelve."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "Alias Export"
+msgstr "Alias Exportálás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+msgid "There is not selection!"
+msgstr "Nincs kiválaszva semmi!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:615
+msgid "The file \"%Q\" exists. Do you want to replace it ?"
+msgstr "A \"%Q\" fájl létezik, szeretnéd felülírni?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+msgid "Replace file"
+msgstr "Fájl cseréje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+msgid "Yes to All"
+msgstr "Igen, mindet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "There exported file would be empty: cowardly refusing to write it"
+msgstr "Az exportált fájl üres lesz, gyáván visszautasítja az írást. "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:786
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:411
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1133
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:398
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:745
+msgid "Choose a Filename - KVIrc"
+msgstr "Fájnév megadása - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Write Failed - KVIrc"
+msgstr "Írási Hiba - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+msgid "Unable to write to the alias file."
+msgstr "Nem tudom az aliast fájlba írni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:793
+msgid "Do you really want to remove the alias \"%Q\" ?"
+msgstr "Tényleg el szererntéd távolítani a(z) \"%Q\" aliast?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:795
+msgid "Do you really want to remove the namespace \"%Q\" ?"
+msgstr "Tényleg el szeretnéd távolítani a \"%Q\" névteret?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:797
+msgid "Please note that all the children items will be deleted too."
+msgstr "Vedd figyelembe, hogy az összes gyermek elem is egyúttal törölve lesz."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+msgid "Remove item"
+msgstr "Elem eltávolítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:875
+msgid "Missing Alias Name"
+msgstr "Hiányzó Alias név"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:876
+msgid "You must specify a valid name for the alias"
+msgstr "Érvényes nevet kell adnod az Aliasnak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:877
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:890
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:904
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:915
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:946
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:959
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:973
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1128
+msgid "Ok, Let me try again..."
+msgstr "Oké, próbáljuk újra.."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:888
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:902
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:913
+msgid "Bad Alias Name"
+msgstr "Hibás Alias Név"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:944
+msgid "Missing Namespace Name"
+msgstr "Hiányzó Névtér Név"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:945
+msgid "You must specify a valid name for the namespace"
+msgstr "Meg kell adnod egy érvényes nevet a névtérnek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:957
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:971
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:982
+msgid "Bad Namespace Name"
+msgstr "Hibás Névtér Név"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:958
+msgid ""
+"Namespace names can contain only letters, digits, underscores and '::' "
+"namespace separators"
+msgstr ""
+"Névtér nevek csak betűket, számokat, aláhúzást és '::' névtér elválasztókat "
+"tartalmazhatnak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:972
+msgid ""
+"Stray ':' character in namespace name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+"Elkóborolt ':' karakter a névtér nevében, úgy érted: ...<namespace>::<name> ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:983
+msgid "Found an empty namespace in namespace name"
+msgstr "Üres névtér a névtér nevében"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+msgid "Please enter the name for the new alias"
+msgstr "Adj megy egy nevez az új aliasnak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Please enter the name for the new namespace"
+msgstr "Adj meg egy nevet az új névtérnek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+msgid "Rename Alias"
+msgstr "Alias Átnevezése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+msgid "Please enter the new name for the alias"
+msgstr "Adj meg egy új nevet az aliasnak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Rename Namespace"
+msgstr "Névtér Átnevezése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Please enter the new name for the namespace"
+msgstr "Adj meg egy új nevet a névtérnek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1126
+msgid "Alias already exists"
+msgstr "Alias már létezik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1139
+msgid "This name is already in use. Please choose another one."
+msgstr "A név már használatban van. Kérlek válassz másikat."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1138
+msgid "Namespace already exists"
+msgstr "Névtér már létezik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1140
+msgid "Ok, let me try again..."
+msgstr "Oké, próbáljuk újra.."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1227
+msgid "Namespace"
+msgstr "Névtér"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1332
+msgid "Alias Editor"
+msgstr "Alias Szerkesztő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:62
+msgid "Join Channels"
+msgstr "Csatlakozás csatornákhoz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:183
+msgid "Name"
+msgstr "Név"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:86
+msgid "Password"
+msgstr "Jelszó"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:641
+msgid "&Join"
+msgstr "Csatlakozás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:108
+msgid "Show this window after connecting"
+msgstr "Ablak mutatása mindig csatlakozás után"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:163
+msgid "Recent Channels"
+msgstr "Új csatornák"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:182
+msgid "Registered Channels"
+msgstr "Regisztrált Csatornák"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:133
+msgid "Choose the file to share"
+msgstr "Fájl kiválasztása megosztásra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:178
+msgid "No such channel/netmask entry in the database"
+msgstr "Nincs ilyen csatorna/netmaszk elem az adatbázisban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:198
+msgid "Registered channel list:"
+msgstr "Regisztrált csatornák listája:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:208
+#, c-format
+msgid "Channel: %c%s@%s"
+msgstr "Csatorna: %c%s@%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:213
+#, c-format
+msgid " Property: %s=%s"
+msgstr " Tulajdonság: %s=%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:220
+#, c-format
+msgid "Total %d channels"
+msgstr "Összesen %d csatorna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:86
+msgid "Property Editor"
+msgstr "Tulajdonság szerkesztő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:101
+msgid "Property"
+msgstr "Tulajdonság"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:102
+msgid "Value"
+msgstr "Érték"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:111
+msgid "&New"
+msgstr "Új"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:215
+msgid "Mask Editor"
+msgstr "Maszk szerkesztő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:219
+msgid ""
+"Insert a mask for this user.<br>It can contain the wildcard characters '*' "
+"and '?'."
+msgstr ""
+"Maszk beszúrása ehhez a felhasználóhoz.<br>Tartalmazhat joker karaktereket, "
+"mint '*' és '?'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:230
+msgid ""
+"<center>This the <b>nickname</b> that will match this user, default value is "
+"the registered name.</center>"
+msgstr ""
+"<center>Ez a <b>nicknév</b> ami egyezik ezzel a felhasználóval, "
+"alapértelmezett érték a regisztrált név.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:241
+msgid ""
+"<center>This the <b>username</b> that will match this user. <b>*</b> will "
+"match any username.</center>"
+msgstr ""
+"<center>Ez a <b>felhasználónév</b> ami egyezik ezzel a felhasználóval. <b>*</"
+"b> egyezik minden felhasználónévvel.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:252
+msgid ""
+"<center>This the <b>hostname</b> that will match this user. <b>*</b> will "
+"match any hostname.</center>"
+msgstr ""
+"<center>Ez a <b>hosztnév</b> ami egyezik a felhasználóéval. <b>*</b> egyezik "
+"minden hosztnévvel.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:333
+msgid "Registered User Entry"
+msgstr "Regisztrált Felhasználó Bejegyzés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:145
+msgid "Name:"
+msgstr "Név:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:345
+msgid "Comment:"
+msgstr "Komment:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:355
+msgid "Masks:"
+msgstr "Maszkok:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:216
+msgid "&Add..."
+msgstr "Hozzá&adás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:377
+msgid "&Edit"
+msgstr "Sz&erkesztés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:385
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:414
+msgid "Identity"
+msgstr "Azonos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:393
+msgid "Notify when user is online"
+msgstr "Értesítés, ha a felhasználó elérhető"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:396
+msgid "Notify nicknames:"
+msgstr "Értesítő nevek:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:401
+msgid "<center>You can enter a space separated list of nicknames.</center>"
+msgstr "<center>Itt megadhatsz szóközzel elválasztott nickneveket.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:426
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:383
+msgid "Avatar"
+msgstr "Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:433
+msgid "Use custom color in userlist"
+msgstr "Saját szín használata a felhasználólistában"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:441
+msgid "All Properties..."
+msgstr "Minden Tulajdonság"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:448
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:231
+msgid "Properties"
+msgstr "Tulajdonságok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:458
+msgid "Enable ignore for this user"
+msgstr "Felhasználó mellőzése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:460
+msgid "Ignore features"
+msgstr "Mellőzés opciók"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:465
+msgid "Ignore query-messages"
+msgstr "Mellőzött privát üzenetek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:468
+msgid "Ignore channel-messages"
+msgstr "Mellőzött csatorna üzenetek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:471
+msgid "Ignore notice-messages"
+msgstr "Mellőzött értesítők"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:474
+msgid "Ignore ctcp-messages"
+msgstr "Mellőzött CTCP üzenetek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:477
+msgid "Ignore invites"
+msgstr "Meghívások mellőzése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:480
+msgid "Ignore DCCs"
+msgstr "DCCk mellőzése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:486
+msgid "Ignore"
+msgstr "Mellőz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:94
+msgid "Notify disabled"
+msgstr "Értesítés letiltva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:96
+msgid "Notify as: "
+msgstr "Értesít, mint: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:105
+msgid "No comment set"
+msgstr "Nincs megjegyzés hozzáfűzve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:107
+msgid "Comment: "
+msgstr "Komment: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:176
+msgid "Registered Users - KVIrc"
+msgstr "Regisztrált Felhasználók - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:317
+msgid "Flags"
+msgstr "Flagek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:192
+msgid ""
+"<center>This is the list of registered users. KVIrc can automatically "
+"recognize and associate properties to them.<br>Use the buttons on the right "
+"to add, edit and remove entries. The \"notify\" column allows you to quickly "
+"add users to the notify list. Notify list fine-tuning can be performed by "
+"editing the entry properties.</center>"
+msgstr ""
+"<center>Ez egy lista a regisztrált felhasználókról. A KVIrc képes "
+"automatikusan felismerni és hozzárendelni tulajdonságokat.<br>Használd a "
+"jobb oldali gombokat az elemek hozzáadására,szerkesztésére és törlésére. Az"
+"\"értesítő\" oszlop lehetővé teszi felhasználó hozzáadását egyszerűen. Az "
+"értesítési lista könnyen állítható az elemek tulajdonságainak "
+"szerkesztésével.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:208
+msgid "Add (Wizard)..."
+msgstr "Hozzáadás (Varázsló)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:211
+msgid "Add a registered user by means of a user-friendly wizard."
+msgstr "Felhasználó hozzáadása egy felhasználóbarát varázsló segítségével."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:219
+msgid "Open the edit dialog to create a new user entry."
+msgstr "Szerkesztési ablak megnyitása új felhasználó létrehozásához."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:223
+msgid "&Add Group..."
+msgstr "Csoport Hozzá&adása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:226
+msgid "Adds a new group"
+msgstr "Új csoport hozzáadása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:234
+msgid "Remove the currently selected entries."
+msgstr "Kiválasztott elemek törlése."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:239
+msgid "&Edit..."
+msgstr "Sz&erkesztés..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:243
+msgid "Edit the first selected entry."
+msgstr "Az első kiválasztott elem szerkesztése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:250
+msgid "Export To..."
+msgstr "Exportálás..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:254
+msgid ""
+"Export the selected entries to a file.<br>All the data associated with the "
+"selected registered users will be exported.<br>You (or anyone else) can "
+"later import the entries by using the \"Import\" button."
+msgstr ""
+"Kiválasztott elemek exportálása fájlba.<br>Minden kijelölt felhasználóhoz "
+"hozzárendelt adat exportálásra kerül<br> Te vagy bárki más később "
+"hozzáadhatja ezeket az elemeketaz \"Import\" gomb használatával."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:259
+msgid "Import From..."
+msgstr "Importálás..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:262
+msgid ""
+"Import entries from a file exported earlier by the \"export\" function of "
+"this dialog."
+msgstr ""
+"Importált elemek ebből a fájlból voltak exportálva, ebből a "
+"párbeszédablakból."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:399
+msgid "Group name:"
+msgstr "Csoport neve:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:442
+msgid "Move to group"
+msgstr "Mozgatás csoportba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:483
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:486
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:487
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:491
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:690
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_useridentity.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:962
+msgid "Default"
+msgstr "Alapértelmezett"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:674
+msgid "No entries selected."
+msgstr "Nincs kiválasztott elem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:687
+msgid "Can't open file %Q for writing."
+msgstr "%Q nem nyitható meg írásra."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:772
+msgid "Can't export the registered users database: Write error."
+msgstr ""
+"Nem lehet exportálni a regisztrált felhasználói adatbázist: Írási hiba."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:793
+#, c-format
+msgid "Can't open file %s for reading."
+msgstr "Nem lehet megnyitni %s f�lt olvas�ra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:804
+#, c-format
+msgid "The file %s doesn't appear to be a valid registered users database."
+msgstr "A %s fájl nem olyan, mint egy érvényes felhasználói adatbázis."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:811
+#, c-format
+msgid "The file %s contains an invalid registered users database version."
+msgstr "A %s fájl érvénytelen felhasználói adatbázis verzió."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:892
+msgid "Can't import the registered users database: Read error."
+msgstr ""
+"Nem lehet importálni a regisztrált felhasználói adatbázist: Olvasási hiba."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:78
+msgid "User Registration Wizard - KVIrc"
+msgstr "Felhasználó Regisztráló Varázsló - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:89
+msgid ""
+"<p>Welcome to the user registration wizard.<br>This process allows you to "
+"add an IRC user to the database and set properties for that user. KVIrc will "
+"be (hopefully) able to recognize the user, add him to the notify list, and "
+"display the associated avatar.<br><br>First of all, you must insert an "
+"<b>entry name or real name</b> for the user you're going to register. The "
+"name will be used to identify the database entry and has no specific "
+"requirements, it can be a given name, nickname, or just some text to remind "
+"you of the real person.<br>Examples: \"George W Bush\", \"Dubya\".\n"
+"</p>"
+msgstr ""
+"<p>Üdv a felahsználó regisztráló varázslóban.<br>Ez lehetővé teszi "
+"felhasználóhozzáadását az adatbázishoz, és a felhasználó tulajdonságainak "
+"beállítását. A KVIrc (remélhetőleg) felismeri a felhasználót, hozzáadja az "
+"értesítési listához és megjelníti a hozzárendelt avatart.<br><br>Elősször is "
+"meg kell adnod az<b>elem nevét vagy valós nevét</b> a felhasználónak, akit "
+"regisztrálni szeretnél. A név alapján lesz azonosítva az adatbázisban, "
+"nincsenek kikötései, ez lehet egy egyszerű név, becenév, vagy egy szöveg ami "
+"alapján emlékeztet az igazi felhasználóra.<br>Például: \"Gyurcsány Ferenc\", "
+"\"Ferko\".\n"
+"</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:97
+msgid "Step 1: Entry Name"
+msgstr "Első lépés: Elem Neve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:112
+msgid ""
+"<p>A registered user is identified by one or more <b>IRC masks</b>.<br>A "
+"mask must be in the following form:<br><b>nickname!username@hostname</"
+"b><br>and can contain wildcard characters '*' and '?'. Be careful in "
+"choosing the masks, as they are the only way to verify the identity of a "
+"registered user.<br><br>You can enter at most two masks here, if you wish to "
+"add more masks, use the \"<b>Edit</b>\" button in the Registered Users "
+"dialog. You must enter at least one mask.</p>"
+msgstr ""
+"<p>Egy regisztrált felhasználó azonosítása<b>IRC maszkok</b> alapján "
+"történik. <br>A maszknak egyeznie kell a következő formával:<br><b> nicknév!"
+"felhasználónév@hosztnév</b><br> és tartalmazhat joker karaktereket mint '*' "
+"és '?'. Óvatosan a maszk kiválaszásával, lehetőleg egyedi legyen és "
+"azonosítsa a kiválasztott felhasználót.<br><br> Több maszkot is megadhatsz "
+"itt, további maszkok hozzáadása a \"<b>Szerkesztés</b>\" gombbal történhet a "
+"Regisztrált Felhasználók párbeszédablakban. Legalább egy maszkot meg kell "
+"adnod.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:170
+msgid "Step 2: Mask Selection"
+msgstr "Második lépés: Maszk kiválasztása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:182
+msgid ""
+"<p>If you want to store an avatar image for this user, you can set it here. "
+"KVIrc will show the avatar in the userlist next to the user's nickname."
+"<br>An avatar can be in any supported image format (PNG is recommended). "
+"Keep in mind that KVIrc stores avatars in memory and has to resize them to "
+"fit in the userlist, thus it's better to use small, low-resolution images.</"
+"p>"
+msgstr ""
+"<p>Ha szeretnél tárolni egy avatart ehhez a felhasználóhoz, itt megteheted. "
+"A KVIrc mutatni fogja az avatart a felhasználói listában közvetlenül a "
+"felhasználó neve mellett.<br>Az avatar típusa bármilyen kép formátum lehet "
+"(PNG ajánlott). Arra figyelj, hogy az avatorokat a KVIrc a memóriában "
+"tárolja és átméretezi,hogy az megfelelő legyen a felhasználói listába, ezért "
+"érdemes kicsi, alacsony felbontású képeket használni.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:190
+msgid "Store an avatar for this user"
+msgstr "Felhasználóhoz rendelt avatar tárolása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:195
+msgid "Step 3: Avatar Selection"
+msgstr "Harmadik lépés: Avatar Kiválasztása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:206
+msgid ""
+"<p>If you want to be notified when this user is online or goes offline, you "
+"must specify the list of nicknames that KVIrc will look for.<br><br>You can "
+"enter at most two nicknames here, if you wish to add more nicknames, use the "
+"\"<b>Edit</b>\" button in the Registered Users dialog.</p>"
+msgstr ""
+"<p>Ha szeretnéd, hogy a KVIrc értesítsen a be és kilépésekor, meg kell "
+"határoznod egy listát a Nickneveiről, amit a KVIrc figyelhet.<br><br> Két "
+"nicknevet hozzá tudsz adni itt, illetve később a Regisztrált Felhasználók "
+"párbeszédablakban a \"<b>Szerkesztés</b>\" gomb segítségével akár többet is."
+"</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:215
+msgid "Add this user to the notify list"
+msgstr "Felhasználó hozzáadása az Értesítési listához"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:342
+msgid "Nickname:"
+msgstr "Nicknév:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:225
+msgid "Nickname 2:"
+msgstr "2. Nicknév:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:239
+msgid "Step 4: Notify List"
+msgstr "Negyedik lépés: Értesítési Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:251
+msgid ""
+"<p>That's it. The user registration has been completed.<br><br>Click "
+"\"<b>Finish</b>\" to close this dialog.</p>"
+msgstr ""
+"<p>Kész is vagyunk! A felhasználó regisztrációja befejeződött.<br><br> "
+"Kattints a \"<b>Befejezés</b>\" gombra, hogy ezt az ablakot bezárd.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:254
+msgid "Registration Complete"
+msgstr "Regisztráció Befejezve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:695
+msgid "No name specified"
+msgstr "Nincs név megadva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:209
+msgid "User already registered: found exact name match"
+msgstr "Felhasználó már létezik: pontos egyezést találtam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:222
+msgid "Mask %Q is already used to identify user %s"
+msgstr "Maszk: %Q már használt %s felhasználó azonosításánál."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:275
+msgid "User not found (%Q)"
+msgstr "Felhasználó nem található (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:403
+msgid "No mask specified"
+msgstr "Nincs maszk megadva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:524
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:708
+msgid "User %Q not found"
+msgstr "%Q felhasználó nem található"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:355
+msgid "Mask %Q already used to identify user %Q"
+msgstr "%Q maszk már azonosítja %Q felhasználót."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:410
+msgid "Mask %Q not found"
+msgstr "%Q maszk nem található"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:701
+msgid "No property specified"
+msgstr "Nincs tulajdonság megadva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:808
+msgid "Registered users database dump:"
+msgstr "Regisztrált felhasználó adatbázis dump:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:819
+msgid " User: %c%Q"
+msgstr " Felhasználó: %c%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:823
+msgid " Warning: this user has no registration masks"
+msgstr " Ennek a felhasználónak nincs regisztrációs maszkja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:827
+msgid " Mask: %Q!%Q@%Q"
+msgstr " Maszk: %Q!%Q@%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:838
+msgid " Property: %Q=%Q"
+msgstr " Tulajdonság: %Q=%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:841
+msgid " No properties"
+msgstr " Nincs tulajdonság"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:847
+#, c-format
+msgid "Total: %d matching users (of %d in the database)"
+msgstr "Összesen %d egyező felhasználó (%d az adatbázisban)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:197
+msgid "Manage Script-Based Addons"
+msgstr "Szkript-alapú Akciók kezelése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1155
+msgid "Configure"
+msgstr "Beállítás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:225
+msgid "Show Help"
+msgstr "Segítség Mutatása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:231
+msgid "Uninstall"
+msgstr "Eltávolítás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:243
+msgid "Install Addon..."
+msgstr "Addon hozzáadása..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:247
+msgid "More Addons..."
+msgstr "Még több addon..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:333
+msgid "Do you really want to uninstall the addon \"%1\" ?"
+msgstr "Tényleg el akarod távolítani ezt az addont? (%1)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+msgid "Confirm addon uninstallation"
+msgstr "Addon eltávolításának megerősítése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:354
+msgid "Please select the addon installation file"
+msgstr "Válaszd ki az addon telepítőjét"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:144
+msgid "%cAddon id %Q, version %Q%c"
+msgstr "%cAddon azonosító %Q, verzió: %Q%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:145
+msgid "Name: %Q"
+msgstr "Név: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:67
+msgid "Description: %Q"
+msgstr "Leírás: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:152
+#, c-format
+msgid "Total: %d addons installed"
+msgstr "Összesen %d addon van telepítve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:192
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:571
+msgid "Uninstalling existing addon version %Q"
+msgstr "Hozzáadott addon eltávolítása %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:384
+msgid "The addon \"%1\" does not exist"
+msgstr "\"%1\" addon nem létezik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:238
+msgid "The addon \"%1\" has no configure callback set"
+msgstr "Az addon \"%1\" nem rendelkezik konfigurációs felülettel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:285
+msgid "The addon \"%1\" has no help callback set"
+msgstr "Az addon \"%1\" nem rendelkezik súgó felülettel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:527
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:377
+msgid "Internal error: call a head-shrinker"
+msgstr "Belső hiba: szólj egy pszichomókusnak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:536
+msgid "The specified version \"%Q\" is not a valid version string"
+msgstr "A meagdott verzió (%Q) nem érvényes verzió sztring"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:542
+msgid "The specified KVIrc version \"%Q\" is not a valid version string"
+msgstr "A megadott KVIrc verzió \"%Q\" nem érvényes verzió sztring"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:548
+msgid ""
+"This KVIrc executable is too old to run this addon (minimum version required "
+"is %Q)"
+msgstr ""
+"A KVIrc ezen verziója túl régi az addon futtatásához (szükséges legalább: %Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:553
+msgid "Attempting to register addon \"%Q\" with version %Q"
+msgstr "%Q addon regisztrálása %Q verzióval"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:565
+msgid ""
+"The script addon \"%Q\" already exists with version %Q which is higher than %"
+"Q"
+msgstr "Az addon szkript \"%Q\" már létezik (%Q) és újabb, mint %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:579
+msgid "Script registration failed"
+msgstr "Szkript regisztráció sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:584
+msgid "Script succesfully registered"
+msgstr "Szkript regisztráció sikerült"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:102
+#, c-format
+msgid "%s (%s) (%s:%u)"
+msgstr "%s (%s) (%s:%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:104
+#, c-format
+msgid "%s (%s)"
+msgstr "%s (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:107
+#, c-format
+msgid "%s (%s:%u)"
+msgstr "%s (%s:%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:109
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:112
+#, c-format
+msgid "[IDENT]: %s"
+msgstr "[Azonosítás]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:119
+msgid "Shutting down identd service (spontaneous action)"
+msgstr "Azonosító szolgáltatás leállítása (spontán)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:124
+msgid "Shutting down identd service (requested action)"
+msgstr "Azonosító szolgáltatás leállítása (kérésre)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:225
+msgid "Can't start the ident service : socket() failed"
+msgstr "Azonosító szolgáltatás indítása: socket() sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:231
+msgid "Can't start the ident service : async setting failed"
+msgstr "Azonosító szolgáltatás indítása: aszinkron beálítás sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:237
+msgid "Can't enable the ident service : can't setup the listen address"
+msgstr ""
+"Azonosító szolgáltatás elindítása sikertelen: nem tudok kapcsolódni a "
+"megadott címhez"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:243
+msgid "Can't start the ident service : bind() failed"
+msgstr "Azonosító szolgáltatás indítása: bind() sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:249
+msgid "Can't start the ident service : listen() failed"
+msgstr "Azonosító szolgáltatás indítása: listen() sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:263
+msgid "Can't start the ident service on IpV6 : socket() failed"
+msgstr "(IpV6) Azonosító szolgáltatás indítása: socket() sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:269
+msgid "Can't start the ident service on IpV6 : async setting failed"
+msgstr "Azonosító szolgáltatás indítása: bind() sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:277
+msgid "Can't enable the ident service on IpV6 : can't setup the listen address"
+msgstr "Azonosító szolgáltatás indítása: aszinkron beálítás sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:285
+msgid "Can't start the ident service on IpV6 : bind() failed"
+msgstr "(IpV6) Azonosító szolgáltatás indítása: bind() sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:294
+msgid "Can't start the ident service on IpV6 : listen() failed"
+msgstr "(IpV6) Azonosító szolgáltatás indítása: listen() sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:310
+msgid "Starting identd service (IpV4/V6 on separate namespaces)"
+msgstr "Azonosító szolgáltatás indítása (IpV4/V6 külön névtereken)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:313
+msgid "Starting identd service (IpV4/V6 in IpV6 namespace)"
+msgstr "Azonosító szolgáltatás indítása (IpV4/V6 IpV6 névtérben)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:318
+msgid "Starting identd service (IpV4)"
+msgstr "Azonosító szolgáltatás indítása (IpV4)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:322
+msgid "Service startup (IpV4)"
+msgstr "Szolgáltatás indítása (IpV4)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:412
+msgid "Identd accepting connection"
+msgstr "Azonosítás kapcsolatra készen áll"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:435
+msgid "Identd socket error : dropping connection"
+msgstr "Azonosítási socket hiba: kapcsolat eldobása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:440
+msgid "Identd connection closed by remote host"
+msgstr "Azonosítási kapcsolódás lezárva a távoli hoszt által"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:461
+msgid "Identd processing request"
+msgstr "Azonosítási kérés folyamatban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:476
+msgid "Empty request (EOT ?)"
+msgstr "Üres kérés (Kapcsolat lezárás?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:487
+msgid "Dropping connection (request too long)"
+msgstr "Kapcsolat eldobása (kérés túl hosszú)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:500
+msgid "Timed out while waiting for the request : dropping connection"
+msgstr "Időtúllépés várakozás közben: kapcsolat eldobása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/libkvilinks.cpp:74
+msgid "Links window alread open for this IRC context"
+msgstr "Kapcsolatok ablak már nyitva ennél az IRC környezetnél"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:57
+msgid "Request Links"
+msgstr "Kapcsolatok Lekérdezése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:70
+msgid "Link"
+msgstr "Kapcsolat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:71
+msgid "Hops"
+msgstr "Hop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:72
+msgid "Description"
+msgstr "Meghatározás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:90
+msgid "(None)"
+msgstr "(Nincs)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:112
+msgid "Sent links request, waiting for reply..."
+msgstr "Kapcsolat lista lekérése folyamatban..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:115
+msgid "Cannot request links: No active connection"
+msgstr "Kapcsolatok kérése sikertelen: nincs aktív kapcsolat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:128
+msgid "Links cannot be requested: Not connected to a server"
+msgstr "Kapcsolatok nem lekérhetőek, Nincs kapcsolat a szerverrel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:153
+msgid "Links for %Q [IRC Context %u]"
+msgstr "Kapcsolatok: %Q [IRC környezet %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:164
+msgid ""
+"<nobr><font color=\"%s\"><b>Links for %Q</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>%Q kapcsolatai</b></font> <font color=\"%s\">"
+"[IRC Környezet %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:194
+msgid "Received end of links."
+msgstr "Kapcsolatok vége jel."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:235
+#, c-format
+msgid ""
+"Broken link: Missing parent (%s) for %s (%d hops): %s (used /LINKS <mask> ?)"
+msgstr "Hibás kapcsolat: hiányzó szülő (%s) %s (%d hop): %s ( /LINKS <mask> ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:238
+#, c-format
+msgid "%s: Parent link %s"
+msgstr "%s: Szülő kapcsolat %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:242
+msgid "Warning: No root link was sent by the server, the stats may be invalid."
+msgstr ""
+"Figyelmeztetés: Nincs elérhető gyökér kapcsolat, a statisztika valószínűleg "
+"érvénytelen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:278
+msgid "%c%cLinks for %Q"
+msgstr "%c%cKapcsolatok %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts listed"
+msgstr "Összes hoszt listázva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts in the network"
+msgstr "Összes hoszt a hálózatban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:282
+#, c-format
+msgid "Wildcard servers (hubs?): %d"
+msgstr "Joker szerverek (hubok?): %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:283
+msgid "Direct links: %d (~%d.%d %)"
+msgstr "Közvetlen kapcsolatok: %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:284
+msgid "Close links (1 <= hops <= 3): %d (~%d.%d %)"
+msgstr "Kapcsolatok zárása (1 <= ugrás <= 3): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:285
+msgid "Mid-range links (4 <= hops <= 6): %d (~%d.%d %)"
+msgstr "Közepes méretű linkek (4 <= ugrás <= 6): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:286
+msgid "Distant links (7 <= hops): %d (~%d.%d %)"
+msgstr "Távoli linkek (7 <= ugrás): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:287
+#, c-format
+msgid "Broken (unknown) links: %d"
+msgstr "Hibás (ismeretlen) kapcsolatok: %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:288
+#, c-format
+msgid "Maximum links per host: %d [%s]"
+msgstr "Max kapcsolat hosztonként: %d [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:289
+#, c-format
+msgid "Total links: %d"
+msgstr "Összes kapcsolat: %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:290
+#, c-format
+msgid "Maximum hops: %d [%s]"
+msgstr "Max ugrás: %d [%s] "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:291
+#, c-format
+msgid "Average hops: ~%d.%d"
+msgstr "Átlagos ugrás: ~%d.%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:294
+msgid "Incomplete LINKS result, no stats available"
+msgstr "Befejezetlen LINKS eredmény, statisztika nem elérhető"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:747
+msgid "You're not connected to a server"
+msgstr "Nincs kapcsolat szerverrel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:404
+#, c-format
+msgid "Processing link: %s"
+msgstr "Kapcsolat feltárása: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:419
+msgid "Broken message syntax, can't extract hops number, assuming 0"
+msgstr "Hibás üzenet szintaxis, ugrások száma nem meghatározható, így: 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:86
+msgid "< &Back"
+msgstr "< Előző"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:87
+msgid "&Next >"
+msgstr "Következő >"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:282
+msgid "Finish"
+msgstr "Befejezés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:164
+msgid ""
+"<p><h2>Welcome :)</h2>This is your first time running this version of KVIrc."
+"<br>This wizard will guide you through the few steps required to complete "
+"the setup.<br><br>If you had a previous version of KVIrc installed, no "
+"worries. You will have a chance to preserve the old configuration.</"
+"p><p>Click \"<b>Next</b>\" to proceed.</p>"
+msgstr ""
+"<p><h2>Üdvözlet! :)</h2>Most futtatod elősször a KVIrc ezen verzióját.<br> "
+"Ez a varázsló segít eligazodni a beállítás utolsó lépésein.<br><br>Ha már "
+"korábban telepítetted a KVIrcet, ne aggódj, a lehetőség adott, hogy "
+"megtartsd a régi beállításaidat.</p>Kattints a <p> \"<b>Következő</b>"
+"\"gombra a folytatáshoz.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:176
+msgid "Welcome to KVIrc"
+msgstr "Üdvözlünk a KVIrcben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:187
+msgid ""
+"<p>All of the files in this distribution are covered by the GPL. In human "
+"terms this can be read as follows:<br><ul><li><b>KVIrc is free</b>, use it, "
+"have fun! <b>:)</b></li><li>If you use <b>any</b> part of KVIrc in your own "
+"project, you <b>must</b> release that project under the same license.</li></"
+"ul></p><p>The \"legalese\" version of the license is shown in the box below."
+"</p>"
+msgstr ""
+"<p>Ezt a kiadást és minden fájlját a GPL védi.Emberi nyelven ez mindösszeazt "
+"jelenti:<br><ul><li><b>A KVIrc ingyenes</b>, használd, élvezd! <b>:)</b></"
+"li><li>Amennyiben<b>bármely</b> részét a KVIrcnek felhasználod a saját "
+"projektedben, <b>köteles</b> vagy azt is kiadni ugyanezen licensz alatt.</"
+"li></ul></p><p>A \"teljes\" licenszt a lenti dobozban elolvashatod.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:203
+msgid ""
+"Oops... can't find the license file.\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+"Hoppá... nem találom a licensz fájlt.\n"
+"Ennek benne KELL lennie a kiadásban...\n"
+"Kérlek jelezd ezt:a <pragma|kuk@c|kvirc|pont|net> címen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:211
+msgid "Dreaded License Agreement"
+msgstr "A Rettegett Licensz Szerződés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:215
+msgid "KVIrc Setup"
+msgstr "KVIrc Beállítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:224
+msgid ""
+"<p>Please choose a folder for KVIrc to store its settings and other data, "
+"and another for downloaded files. Make sure that you have permission to "
+"write to both folders.<br><br>The suggested locations are fine in most "
+"cases, so if you don't know what is this about, just click \"<b>Next</b>\"."
+"<br><br>If you had a previous version of KVIrc installed, you can choose the "
+"existing directory for the settings, and your configuration will be "
+"preserved.</p>"
+msgstr ""
+"<p>Kérlek most válaszd ki azt a könyvtárat, amiben a KVIrc tárolja a "
+"beállításokat és egyéb adatokat, letöltött fájlokat. Légy biztos benne, hogy "
+"van írási jogosultságod a könyvtárakra.<br><br>A felajánlott lehetőségek "
+"általában megfelelőek,szóval ha nem érted miről van szó, csak kattints a "
+"\"<b>Következő</b>\"-re.<br><br>Ha van korábbi KVIrc verziód telepítve egy "
+"létező könyvtárban megadhatod azt a korábbi beállítások használatára.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:234
+msgid "Application Folders"
+msgstr "Alkalmazás Könyvtárak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:238
+msgid "Store configuration in folder"
+msgstr "Beálíltások tárolása ebben a könyvtárban:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:239
+msgid "Use settings folder from previous installation"
+msgstr "Az előző telepítésnél megadott beállítások használta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:251
+msgid "Use new settings folder"
+msgstr "Új beállítások könyvtár"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:255
+msgid "Settings folder:"
+msgstr "Beállítások könyvtár:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:281
+msgid "Download files to folder:"
+msgstr "Letöltések mappa: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:304
+msgid "All settings in shared program folder (portable)"
+msgstr "Minden beállítást megosztott programkönyvtárba (hordozható)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:325
+msgid ""
+"Please choose a Nickname.<br><br>Your nickname is the name that other IRC "
+"users will know you by. It can't contain spaces or punctuation. Some IRC "
+"networks will shorten your nickname if it is more than 32 characters long."
+"<br><br>If in doubt, just enter the first nick that comes to mind. You will "
+"be able to change it later in the Identity properties, or with the /NICK "
+"command."
+msgstr ""
+"Kérlek válassz egy Becenevet (nicknév).<br><br> A nickneved az a név, ami "
+"alapján a többi IRC felhasználó felismer. Nem tartalmazhat szóközt és "
+"központozást.Néhány IRC hálózat lerövidíti a nevedet, ha az hosszabb, mint "
+"32 karakter.<br><br>Ha nincs ötleted, nyugodtan add meg az elsőt ami "
+"eszedbe jut. Később megváltoztathatod a /NICK paranccsal vagy az Azonosítási "
+"tulajdonságokban."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:348
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr "Ez a mező opcionális és csak a CTCP USERINFO válaszban tűnik fel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:353
+msgid "Profile"
+msgstr "Profil"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:355
+msgid "Real name:"
+msgstr "Valós név:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:361
+msgid "Age:"
+msgstr "Kor:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:392
+msgid "Unspecified"
+msgstr "Nincs megadva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:405
+msgid "Location:"
+msgstr "Hely:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:408
+msgid "Languages:"
+msgstr "Nyelvek:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:491
+msgid ""
+"<p>Here you can choose how much KVIrc will integrate with your system."
+"<br><br>The default settings are fine for most users so if you're in doubt "
+"just click \"<b>Next</b>\" and go to the next screen.</p>"
+msgstr ""
+"<p>Itt megadhatod, hogy a KVIrc mennyire épüljön be a rendszeredbe."
+"<br><br>Az alapértelmezett beállítások megfelelőek a legtöbb felhasználónak, "
+"szóval ha nem tudod mit tégy, csak kattints a \"<b>Következő</b>\" gombra.</"
+"p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:501
+msgid "Desktop Integration"
+msgstr "Asztal Integráció"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:504
+msgid "Make KVIrc default IRC client"
+msgstr "A KVIrc legyen az alapértelmezett IRC kliens"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:508
+msgid "Create desktop shortcut"
+msgstr "Parancsikon elhelyezése az asztalra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:513
+msgid "Import server list from mIRC"
+msgstr "Szerverlista importálása mIRC-ből"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:727
+msgid "Choose an Old Configuration Folder - KVIrc Setup"
+msgstr "Régebbi konfigurációs fájl megadása - KVIrc Varázsló"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:736
+msgid "Do not overwrite folder? - KVIrc"
+msgstr "Ne írja felül a könyvtárat? - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:737
+msgid ""
+"A folder %1 seems to be not a valid KVIrc settings folder.Do you want to use "
+"it anyway?"
+msgstr ""
+"%1 mappa nem úgy néz ki, mint egy szabályos KVIrc beállítások mappa. "
+"Mindenképp ezt szeretnéd használni?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:753
+msgid "Choose a Configuration Folder - KVIrc Setup"
+msgstr "Válassz Konfigurációs könyvtárat - KVIrc Varázsló"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:764
+msgid "Choose a Download Folder - KVIrc Setup"
+msgstr "Válassz letöltések könyvtárat - KVIrc Varázsló"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:933
+msgid "Abort Setup - KVIrc Setup"
+msgstr "Varázsló megszakítása - KVIrc Varázsló"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:934
+msgid ""
+"You have chosen to abort the setup.<br>KVIrc cannot run until you complete "
+"this procedure.<br><br>Do you really wish to abort?"
+msgstr ""
+"A megszakítást választottad beállítás közben.<br> A KVIrc nem képes futni, "
+"amíg nem fejezted be ezeket a beállításokat.<br><br>Tényleg meg szeretnéd "
+"szakítani?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:965
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:996
+#, c-format
+msgid ""
+"Cannot create directory %s.\n"
+"You may not have write permission for that path. Please go back and choose "
+"another directory."
+msgstr ""
+"%s könyvtár létrehozása sikertelen.\n"
+"Valószínűleg nincs írási jogod a könyvtárra. Kérlek menj vissza és válassz "
+"másik könyvtárat."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+msgid "Package saved succesfully"
+msgstr "Csomag sikeresen elmentve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:80
+msgid "Event"
+msgstr "Esemény"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1046
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:92
+msgid "&Export All To..."
+msgstr "Összes &Exportálása..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:90
+msgid "Edit the event handler name."
+msgstr "Eseménykezelő nevének szerkesztése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:154
+msgid "&Enable Handler"
+msgstr "&Esemény Engedélyezése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:158
+msgid "&Disable Handler"
+msgstr "Kezelő tiltása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:162
+msgid "Re&move Handler"
+msgstr "Kezelő eltávolítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:164
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:166
+msgid "&Export Handler To..."
+msgstr "Kezelő &exportálása..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:171
+msgid "&New Handler"
+msgstr "Új kezelő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:190
+msgid "unnamed"
+msgstr "névtelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:215
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:250
+msgid "default"
+msgstr "alapértelmezett"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:314
+msgid "none"
+msgstr "nincs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:318
+#, c-format
+msgid ""
+"\n"
+"\n"
+"\tEvent:\n"
+"\t\t%s\n"
+"\n"
+"\tParameters:\n"
+"%s"
+msgstr ""
+"\n"
+"\n"
+"\tEsemény::\n"
+"\t\t%s\n"
+"\n"
+"\tParaméterek:\n"
+"%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+msgid "Unable to write to the event file."
+msgstr "Esemény fájl írása sikertelen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+msgid "Unable to write to the events file."
+msgstr "Nem lehet írni az eseményfájlokba."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:486
+msgid "Event Editor"
+msgstr "Esemény szerkesztő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:77
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:213
+msgid "Item"
+msgstr "Elem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:80
+msgid "Submenu"
+msgstr "Almenü"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:83
+msgid "External Menu"
+msgstr "Külső menü"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:136
+msgid "Label"
+msgstr "Címke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:93
+msgid "### Epilogue ###"
+msgstr "### Epilógus ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:94
+msgid "Epilogue"
+msgstr "Epilógus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:97
+msgid "### Prologue ###"
+msgstr "### Prológus ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:98
+msgid "Prologue"
+msgstr "Prológus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:198
+msgid "Popup name"
+msgstr "Felbukkanó neve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:202
+msgid "Test"
+msgstr "Teszt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:230
+msgid "Text:"
+msgstr "Szöveg:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:236
+msgid ""
+"<center><b>Visible text</b><br>May contain identifiers that will be "
+"evaluated at popup call time.<br>For labels, this text can contain also "
+"limited HTML tags.</center>"
+msgstr ""
+"<center><b>Látható szöveg</b><br>Tartalmazhat azonosítókat amik a felbukkanó "
+"megjelnésekor értékelődnek ki.<br>Címkéknél ez tartalmazhatHTML tagokat "
+"korlátozottan.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:239
+msgid "Condition:"
+msgstr "Állapot:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:245
+msgid ""
+"<center><b>Boolean condition</b><br>Will be evaluated at popup call time in "
+"order to decide if this entry has to be shown.<br>An empty condition "
+"evaluates to true.</center>"
+msgstr ""
+"<center><b>Logikai feltétel</b><br> A felbukkanó hívásakor lesz kiértékelve, "
+"hogy az elem meg fog-e jelenni.<br>Üres feltétel igazként értékelődik ki.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:248
+msgid "Icon:"
+msgstr "Ikon:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:254
+msgid ""
+"<center><b>Icon identifier</b><br>May be an internal icon ID, an absolute "
+"path or a relative path.<br>Portable scripts should never use absolute paths."
+"</center>"
+msgstr ""
+"<center><b>Ikon azonosító</b><br> Lehet belső ikon azonosító vagy abszolút "
+"vagy relatív elérési út.<br> Hordozható szkripteknél soha ne használj "
+"abszolút elérési utat.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:257
+msgid "External menu:"
+msgstr "Külső menü:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:263
+msgid ""
+"<center><b>External menu name</b><br>This allows to nest externally defined "
+"popup menus. The popup menu with the specified name will be looked up at "
+"menu setup time.</center>"
+msgstr ""
+"<center><b>Külső menü név</b><br>This allows to nest externally defined "
+"popup menus. The popup menu with the specified name will be looked up at "
+"menu setup time.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:266
+msgid "Item Id:"
+msgstr "Elem Azonosító:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:273
+msgid ""
+"<center><b>Item id</b><br>This will allow you to use delpopupitem later.</"
+"center>"
+msgstr ""
+"<center><b>Elem Azonosító</b><br>Később ez teszi lehetővé a delpopupitem "
+"hívását.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:386
+msgid "New Separator Below"
+msgstr "Új elválasztó lent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:388
+msgid "New Separator Above"
+msgstr "Új elválasztó fent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:391
+msgid "New Separator Inside"
+msgstr "Új elválaszó bent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:396
+msgid "New Label Below"
+msgstr "Új címke lent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:398
+msgid "New Label Above"
+msgstr "Új címke fent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:401
+msgid "New Label Inside"
+msgstr "Új címke bent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:406
+msgid "New Item Below"
+msgstr "Új elem lent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:408
+msgid "New Item Above"
+msgstr "Új elem fent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:411
+msgid "New Item Inside"
+msgstr "Új elem bent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:416
+msgid "New Menu Below"
+msgstr "Új menü alul"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:418
+msgid "New Menu Above"
+msgstr "Új menü felül"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:421
+msgid "New Menu Inside"
+msgstr "Új menü belül"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:426
+msgid "New External Menu Below"
+msgstr "Új külső menü lent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:428
+msgid "New External Menu Above"
+msgstr "Új külső menü fent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:431
+msgid "New External Menu Inside"
+msgstr "Új külső menü belül"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:451
+msgid "&Paste Below"
+msgstr "Beilleszt lent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:456
+msgid "Paste Above"
+msgstr "Beilleszt fent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:461
+msgid "Paste Inside"
+msgstr "Beilleszt belül"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:473
+msgid "New Menu Prologue"
+msgstr "Új menü prológus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:481
+msgid "New Menu Epilogue"
+msgstr "Új menü epilógus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1042
+msgid "Popup"
+msgstr "Felbukkanó"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1048
+msgid "&Export selected To..."
+msgstr "Kijelölt &exportálása..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1099
+msgid "&New Popup"
+msgstr "Új felbukka&nó"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1105
+msgid "Re&move Popup"
+msgstr "Felbukkanó törlése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1112
+msgid "&Export Popup To..."
+msgstr "Felbukkanó &exprotálása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+msgid "Unable to write to the popup file."
+msgstr "Felbukkanó fájl írása sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1382
+msgid "Popup Editor"
+msgstr "Felbukkanó menü szerkesztő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:62
+msgid "%cCore action: %Q"
+msgstr "%cMag akció: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:64
+msgid "%cUser action: %Q"
+msgstr "%cFelhasználói akció: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:65
+msgid "Label: %Q"
+msgstr "Címke: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:66
+msgid "Category: %Q"
+msgstr "Kategória: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:112
+msgid "The action \"%1\" is disabled"
+msgstr "A(z) \"%1\" akció letiltva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:259
+msgid "The action \"%1\" does not exist"
+msgstr "Az akció \"%1\" nem létezik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:255
+msgid "The action \"%1\" is a core action and cannot be destroyed"
+msgstr "Az akció \"%1\" egy mag akció, nem lehetséges a megsemmisítése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:392
+msgid "The switch -l requires -c"
+msgstr "Az \"-l\" kapcsoló igényli a \"-c \"-t"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:409
+msgid "The switch -s requires -w with a combination of flags 'c','x' and 'q'"
+msgstr ""
+"Az \"<b>-s</b>\" kapcsoló igényli a \"<b>-w</b>\"-t \"<b>c</b>\",\"<b>x</b>"
+"\" és \" <b>q</b>\" kombinációjában."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:420
+msgid ""
+"The action \"%1\" is already defined as core action and cannot be overridden"
+msgstr "A(z) \"%1\" akció már definiálva van, mint mag akció, nem felülírható"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:116
+msgid "Ops.. internal error"
+msgstr "Hopsz, belső hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:125
+msgid "Manage File &Transfers"
+msgstr "Fájl á&tvitelek kezelése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:67
+msgid "Choose Avatar - KVIrc"
+msgstr "Avatar kiválasztása - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:72
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+"Kérlek válassz ki egy avatar képet. A kép teljes elérési útja vagy egy kép "
+"címe szükséges a Weben.<br>Ha helyi fájlt szeretnél használni, kattints a "
+"\"<b>Tallózás<b>\" gombra, hogy a helyi mappák között böngéssz.<br>Webes kép "
+"esetén a teljes (<b>http://-vel<b> együtt) elérési út megadható manuálisan."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:283
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:358
+msgid "Internal error: I'm not in the user database ?"
+msgstr "Belső hiba: Nem lennék a felhasználó adatbázisban?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:245
+msgid "Can't set the current avatar to '%Q': failed to start the http transfer"
+msgstr "Nem lehet beállítani az aktuális avatart, (%Q) http átvitel sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:249
+msgid "Can't set the current avatar to '%Q': can't load the image"
+msgstr ""
+"Nem lehet beállítani az aktuális avatart, (%Q) képet betöltés sikertlen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:351
+msgid "Invalid timeout specified, using default"
+msgstr "Helytelen megadott időtúllépés, alapértelmezett használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:389
+msgid "Can't add a file offer for file %Q (huh ? file not readable ?)"
+msgstr ""
+"Nem tudom felajánlani elküldésre a %Q fájlt (uhh? a fájl nem olvasható?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:396
+msgid "Added %d secs file offer for file %Q (%Q) and receiver %Q"
+msgstr "%d másodperc felajánlástól %Q (%Q) és megérkezett %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:403
+msgid "Notifying avatar '%Q' to %Q"
+msgstr "Értesítés '%Q' avatarról: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:55
+msgid "&Execute"
+msgstr "Futtatás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:59
+msgid "Params:"
+msgstr "Paraméterek:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:107
+msgid "Script Tester"
+msgstr "Szkript tesztelő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:220
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:413
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:543
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:628
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:765
+msgid "The config file with id '%Q' is not open"
+msgstr "Konfigurációs fájl %Q azonosítóval nincs nyitva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:538
+msgid ""
+"The config file '%Q' has been changed but is opened as read-only: changes "
+"will be lost"
+msgstr ""
+"%Q konfigurációs fájl megváltozott, de írásvédett, minden változtatás el fog "
+"veszni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:583
+msgid "The config file with id '%Q' is read only"
+msgstr "A konfigurációs fájl '%Q' azonosítóval írásvédett"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:178
+msgid "Colors"
+msgstr "Színek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:255
+msgid "Context sensitive help"
+msgstr "Környezetérzékeny segítség"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1167
+msgid "&Replace"
+msgstr "Cse&re"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:268
+msgid "Find & Repalce"
+msgstr "Keresés & Csere"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1148
+msgid "Word to Find"
+msgstr "Keresendő szó"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1156
+msgid "Replace with"
+msgstr "Csere erre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1172
+msgid "&Replace in all Aliases"
+msgstr "Csere minden Aliasban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1176
+msgid "&Findnext"
+msgstr "Következő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1181
+msgid "&Replace(WIP)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:227
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:547
+msgid "The specified toolbar doesn't exist"
+msgstr "A megadott eszköztár nem létezik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:424
+msgid "No action name/index specified"
+msgstr "Nincs akció név / index megadva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:441
+msgid "The action parameter didn't evaluate to an index"
+msgstr "Az akció paramétere nem értelmezhető egész számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:455
+msgid "The toolbar does not contain the specified item"
+msgstr "Az eszköztár nem tartalmazza a megadott elemet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:513
+msgid "The action \"%Q\" doesn't exist"
+msgstr "\"%Q\" akció nem létezik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:31
+msgid "Torrent Client"
+msgstr "Torrent kliens"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:361
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:364
+msgid "Standalone Servers"
+msgstr "Önálló szerverek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:112
+msgid ""
+"%Q doesn't look like a servers.ini file.\n"
+"Import failed."
+msgstr ""
+"%Q nem úgy néz ki, mint egy servers.ini fájl.\n"
+"Importálás megszakítva."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:122
+msgid "Choose a servers.ini file"
+msgstr "Válassz egy servers.ini fájlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:146
+msgid "Remote mIRC servers.ini Import Wizard"
+msgstr "Távoli mIRC servers.ini Importáló Varázsló"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:154
+msgid ""
+"<center><b>Welcome!</b><br><br>This wizard will guide you in the process of "
+"downloading a list of IRC servers. Please click \"<b>Next</b>\" to begin the "
+"operation.</center>"
+msgstr ""
+"<center><b>Üdvözlet!</b><br><br>Ez a varázsló végigvezet az IRC szerver "
+"lista letöltéséhez szükséges lépéseken. Kattints a \"<b>Következő</b>\" -re "
+"a kezdéshez.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:161
+msgid ""
+"<center>Here you can modify the URL that the list will be downloaded from. "
+"In most cases the default URL is acceptable.</center>"
+msgstr ""
+"<center>Itt módosíthatod a címet, amiről a lista le lesz töltve. Legtöbb "
+"esetben az alapértelmezett cím megfelelő.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:169
+msgid "URL Selection"
+msgstr "URL Kiválasztása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:173
+msgid "Please wait while the list is being downloaded"
+msgstr "Kérlek várj, amíg a listát letöltöm.."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:179
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:195
+msgid "List Download"
+msgstr "Lista Letöltése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:229
+msgid "Failed to start the server list transfer :("
+msgstr "Szerverlista letöltése sikertelen :("
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:245
+msgid "File downloaded: processing ..."
+msgstr "Fájl letöltése folyamatban..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:255
+msgid "%1 servers imported succesfully"
+msgstr "%1 szerver sikeresen importálva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:257
+msgid "No servers imported"
+msgstr "Nem lett szerver importálva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:326
+msgid "Import from servers.ini"
+msgstr "Importálás servers.ini-ből"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:333
+msgid "Import from http://www.mirc.co.uk/servers.ini"
+msgstr "Importálás: http://www.mirc.co.uk/servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lineedit.cpp:372
+msgid "Unknown echo mode %Q"
+msgstr "Ismeretlen visszhang mód: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:203
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:359
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:172
+msgid "Widget parameter is not an object"
+msgstr "Widget paraméter nem objektum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:230
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:250
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:449
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:485
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:177
+msgid "Widget parameter is not a valid object"
+msgstr "Widget paraméter nem érvényes objektum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:95
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:263
+msgid "Widget object required"
+msgstr "Widget objektum szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:151
+msgid "Unknown dock area '%Q'"
+msgstr "Ismeretlen csatlakozó felület %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:321
+msgid "Unknown alignment: '%Q'"
+msgstr "Ismeretlen elhelyezés: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:373
+msgid "Unknown style: '%Q'"
+msgstr "Ismeretlen stílus: '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:84
+msgid "the toolbar cannot be a parent-widget!"
+msgstr "az eszköztár nem lehet szülő-widget!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:93
+msgid "The parent-widget isn't a MainWindow."
+msgstr "A szülő-widget nem a főablakban van."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:999
+msgid "The array passed as parameter must contain at least 4 elements"
+msgstr "A tömbként átadott paraméternek legalább 4 elemet tartalmaznia kell"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1012
+msgid "One of the geometry array parameters is empty"
+msgstr "Az egyik geometriai tömb paraméter üres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1017
+msgid "One of the geometry array parameters didn't evaluate to an integer"
+msgstr "A geomteriai tömb paraméterei nem éretlmezhetőek egészként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:503
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1032
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1500
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1044
+msgid "The first parameter didn't evaluate to an array nor an integer"
+msgstr "Az első paraméter nem éretlmezhető tömbként vagy egész számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1419
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1476
+msgid "The array passed as parameter must contain at least 2 elements"
+msgstr "A paramétereként átadott tömbnek legalább 2 elemet kell tartalmaznia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:451
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:486
+msgid "One of the array parameters is empty"
+msgstr "Az egyik paramétere a tömbnek üres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:456
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:491
+msgid "One of the array parameters didn't evaluate to an integer"
+msgstr "Az egyik paramétere a tömbnek nem értelmezhető egész számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:478
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:804
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:993
+msgid "The array passed as parameter must contain at least 3 elements"
+msgstr "A paraméterként átadott tömbnek legalább 3 elemet kell tartalmaznia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:551
+msgid "Unknown orientation"
+msgstr "Ismeretlen irány"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:789
+msgid "Pixmap or Widget parameter is not an object"
+msgstr "Pixmap vagy Widget paraméter nem objektum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:730
+msgid "Widget or Pixmap required "
+msgstr "Widget vagy Pixmap szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:852
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:862
+msgid "Invalid mode '%Q'"
+msgstr "Helytelen mód: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:886
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1701
+msgid "Pixmap parameter is not an object"
+msgstr "Pixmap paraméter nem objektum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:891
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1706
+msgid "Pixmap object required"
+msgstr "Pixmap objektum szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1027
+msgid ""
+"$setGeometry() requires either an array as first parameter or four integers"
+msgstr "$setGeometry() paraméterként igényel egy tömböt vagy négy egész számot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:813
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1002
+msgid "One of the colors array parameters is empty"
+msgstr "Az egyik szín paraméter üres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:818
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1007
+msgid "One of the colors array parameters didn't evaluate to an integer"
+msgstr "A tömb egyik szín paramétere nem értelmezhető egész számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1020
+msgid "A string of 6 digits hex is required"
+msgstr "6 számjegyű hexadecimális szöveg szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:842
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1031
+msgid "Not an hex digits"
+msgstr "Nem hexadecimális számjegyek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1144
+msgid ""
+"$setForegroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+"$setForegroundColor igényel vagy egy tömböt, vagy egy hexadecimális stringet "
+"vagy három egész számot első paraméterként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1219
+msgid ""
+"$setBackgroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+"$setBackgrondColor igényel vagy egy tömböt, vagy egy hexadecimális stringet "
+"vagy három egész számot első paraméterként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1426
+msgid "One of the move array parameters is empty"
+msgstr "A mozgatási tömb egyik paramétere üres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1431
+msgid "One of the move array parameters didn't evaluate to an integer"
+msgstr "A mozgatási tömb paramétere nem értelmezhető egész számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1438
+msgid "$move() requires either an array as first parameter or two integers"
+msgstr "$move() igényel vagy egy tömböt vagy két integert első paraméterként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1483
+msgid "One of the resize array parameters is empty"
+msgstr "Az egyik átméretező tömb paraméter üres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1488
+msgid "One of the resize array parameters didn't evaluate to an integer"
+msgstr "Az egyik átméretező tömb paramétere nem értelmezhető egész számként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1495
+msgid "$resize() requires either an array as first parameter or two integers"
+msgstr "$resize() igényel vagy tömböt vagy két egész számot első paraméterként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1528
+msgid "Invalid parameters"
+msgstr "Helytelen paraméterek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1560
+msgid "Unknown widget flag '%Q'"
+msgstr "Ismeretlen widget flag '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1592
+msgid "Unknown style '%Q'"
+msgstr "Ismeretlen stílus '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1622
+msgid "No Layout associated to the widget "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:117
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:152
+msgid "Can't add a non-widget object"
+msgstr "Nem lehet nem-widget objektumot hozzáadni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1650
+msgid "Parent must be a widget object"
+msgstr "A szülőnek widget objektumnak kell lennie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1715
+msgid "Null mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1740
+msgid "Unknown widget attribute '%Q'"
+msgstr "Ismeretlen widget attribútum '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:382
+msgid "No such line number"
+msgstr "Nincs ilyen sorszámú sor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:500
+msgid "Unknown word wrap '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:519
+msgid "Unknown wrap policy'%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:850
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1039
+msgid "$setColor requires either an array as first parameter or three integers"
+msgstr ""
+"A $setColor -hoz szükséges vagy egy tömb vagy legalább 3 egész szám "
+"paraméterként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:975
+msgid "Unknown text format '%Q'"
+msgstr "Ismeretlen szövegformátum: '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1071
+msgid " I can't find the specified file '%Q'."
+msgstr "Megadott fájl nem található: '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1078
+msgid " I cannot read the file %Q'."
+msgstr "Fájl nem olvasható: '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1113
+msgid "Unknown alignment '%Q'"
+msgstr "Ismeretlen igazítás: '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1131
+msgid "Unknown auto formatting mode '%Q'"
+msgstr "Ismeretlen auto-formázási mód: '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1149
+msgid "Unknown vertical alignment '%Q'"
+msgstr "Ismeretlen vízszintes igazítás: '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:264
+msgid "pix '%Q' doesn't exists"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:276
+msgid "Can't add a non - popupmenu object"
+msgstr "Nem felbukkanó objektum hozzáadása nem lehetséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:302
+msgid "Doesn't a widget object"
+msgstr "Nem widget objektum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:182
+msgid "I can't find the specified file %Q."
+msgstr "A megadott fájl nem található: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:222
+msgid "Destination parameter is not an object"
+msgstr "A cél paraméter nem objektum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:228
+msgid "Destination must be a pixmap object"
+msgstr "A célnak egy pixmap objektumnak kell lennie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:238
+msgid "Area dimensions are out of destination size "
+msgstr "A terület méretei meghaladják a cél méretét"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:253
+msgid "Pixmap dimensions are out of destination size "
+msgstr "Pixmap mérete meghaladja a cél méretet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:261
+msgid "Offset width area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:266
+msgid "Offset height area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:121
+msgid "The widget must be a child of this hbox"
+msgstr "A widgetnek ennek a doboznak a gyermekének kell lennie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:191
+msgid "No string parameter given - using empty string"
+msgstr "Nincs szöveg paraméter - felhasználás üresként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:194
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:214
+#, c-format
+msgid "Item index [%d] is too big - defaulting to $count() - 1 [%d]"
+msgstr "Elem inxex [%d] túl nagy, alapértelmezésre állok: $count() - 1 [%d]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:333
+msgid "Invalid insertion Policy %Q"
+msgstr "Helytelen beszúrási elvek %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:136
+msgid "Unknown mode "
+msgstr "Ismeretlen mód"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:149
+msgid "Unknown segment style "
+msgstr "Ismeretlen elválasztási stílus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_process.cpp:221
+msgid "Process could not be starded."
+msgstr "Folyamat nem indítható el."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:279
+msgid "Invalid selection mode '%Q' assuming single"
+msgstr "Helytelen kijelölési mód %Q, átállás egyszerűre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:316
+msgid "Unknown text position '%Q'"
+msgstr "Ismeretlen szöveg pozíció %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:256
+msgid "Unknown tickmark '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:271
+msgid "Unknown orientation '%Q'"
+msgstr "Ismeretlen elhelyezés %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:500
+msgid "No socket object specified"
+msgstr "Nincs meghatározva socket objektum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:506
+msgid "Invalid socket object specified (it doesn't inherit from socket)"
+msgstr "Helytelenül megadott socket objektum (nem idegeníthető el a sockettől)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:518
+msgid "There is no connection to accept!"
+msgstr "Nincs elfogadható kapcsolat!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:591
+#, c-format
+msgid "Value %d for port is out of range (values allowed are from 0 to 65535"
+msgstr "%d port kívül esik a tartományon (érvényes portok: 0-tól 65535-ig)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:596
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:87
+msgid "Another connection in progress"
+msgstr "M�ik csatlakoz� m� folyamatban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:648
+msgid "No IPV6 support in this executable"
+msgstr "Nincs IpV6 támogatás ebben a verzióban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:670
+msgid "Invalid IP address specified ('%Q')"
+msgstr "Helytelen megadott IP cím: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:89
+msgid "Socket creation failed"
+msgstr "Socket létrehozása sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:706
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:727
+msgid "Invalid socket address"
+msgstr "Helytelen socket cím"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:714
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:735
+msgid "Bind failure"
+msgstr "Kapcsolási hiba (bind fail)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:745
+msgid "Listen failure"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:812
+msgid "unknown"
+msgstr "ismeretlen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:876
+msgid "Invalid ip address "
+msgstr "Helytelen ip cím"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:882
+msgid "Invalid ip address (%Q)"
+msgstr "Helytelen ip cím (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:906
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1013
+msgid "Failed to create the socket"
+msgstr "Socket létrehozása sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:918
+msgid "Failed to setup a nonblocking socket"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:939
+msgid "Connect failure: "
+msgstr "Kapcsolódási hiba: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:967
+msgid "Connect attempt timed out"
+msgstr "Kapcsolódás időtúllépés miatt megszakadt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:993
+msgid "Can't start the DNS thread"
+msgstr "DNS szál indítása sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:1143
+msgid ""
+"Too much unprocessed incoming data (you've left this socket unmanaged ?)"
+msgstr ""
+"Túl sok beérkező feldolgozatlan adat (talán a socket nem lett lekezelve?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:149
+msgid "Error in KVS class implementation: processing aborted"
+msgstr "Hiba a KVS osztály implementációjában, folyamat megszakítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:154
+msgid "Processing aborted"
+msgstr "Folyamat megszakítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:160
+#, c-format
+msgid "Error near line %d, column %d"
+msgstr "Hiba, %d. sor %d. oszlop közelében"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:162
+#, c-format
+msgid "Warning near line %d, column %d"
+msgstr "Figyelmeztetés: %d sor %d oszlop közelében"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:313
+msgid "XML support not available in the Qt library"
+msgstr "XML támogatás nem elérhető a Qt libraryban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:491
+msgid "Not a widget object"
+msgstr "Nem widget objektum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:308
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:497
+msgid "Can't find the tab "
+msgstr "Nem találom a fület"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:522
+msgid "Unknown position 'Q%'"
+msgstr "Ismeretlen helyzet %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:123
+msgid "The widget must be a child of this vbox"
+msgstr "A widgetnek ennek a vbox szülőjének kell lennie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:276
+msgid "Not Enough Parameters"
+msgstr "Nincs elég paraméter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:142
+msgid "The listviewitem cannot be parentless"
+msgstr "A lista nézet elem nem lehet árva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:152
+msgid ""
+"The parent of the listviewitem must be either another listviewitem or a "
+"listview"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:403
+msgid "Pixmap object or image Id required"
+msgstr "Pixmap objektum vagy kép azonosító szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:413
+msgid ""
+"Error occured: the suitable file '%Q' is not of the correct format or it is "
+"not a valid icon number."
+msgstr ""
+"Hiba történt: a megfelelő fájl '%Q' nem helyes formátumú vagy nem érvényes "
+"ikon szám"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:151
+msgid ""
+"The window identifier preceeded by WinId must be the first object in the "
+"search path"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:167
+msgid "Failed to find one of the wrap path widgets (%Q::%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:176
+msgid "Failed to find the widget to wrap"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:119
+msgid "The parent of a layout must be a widget!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:269
+msgid "Invalid resize mode defaulting to Auto"
+msgstr "Helytelen átméretezési mód, visszaállítás Automatikusra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:324
+msgid "Unknown alignment"
+msgstr "Ismeretlen igazítás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:373
+msgid "Unknown orientation: "
+msgstr "Ismeretlen elhelyezés: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listview.cpp:320
+msgid "Invalid selection mode '%Q'"
+msgstr "Helytelen kijelölési mód '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tbrowser.cpp:99
+msgid "I can't find the specified file '%Q'."
+msgstr "Megadott fájl nem található: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:121
+msgid "Can't add a null object"
+msgstr "Null objektum hozzáadása nem lehetséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:128
+msgid ""
+"Invalid object handle passed as parameter (the object is no longer "
+"existing ?)"
+msgstr ""
+"Helytelen objektum kezelő átadása paraméterként (az objektum talán már nem "
+"létezik?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:134
+msgid "Object in invalid state"
+msgstr "Helytelen állapotú objektum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:140
+msgid "Can't set a non-widget object to be the main widget of a dock window"
+msgstr "Nem-widget objektum nem lehet a fő widgete a dokkolóablaknak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:146
+msgid "The added widget is not a child of this dock window"
+msgstr "A hozzáadott widget nem gyermeke ennek a dokkoló ablaknak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:271
+msgid "Invalid dock area specified"
+msgstr "Helytelenül megadott csatolási felület"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:181
+msgid "Class '%Q' is not definited"
+msgstr "%Q osztály nincs meghatározva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:257
+msgid "Inexisting target object for objects.connect"
+msgstr "Nem létező célobjektum object.connect -nél"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:262
+msgid "Inexisting source object for objects.connect"
+msgstr "Nem létező forrás objektum objects.connect -nél"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:444
+msgid "The class '%Q' does not exist"
+msgstr "%Q osztály nem létezik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:404
+msgid "Object does not exists"
+msgstr "Az objektum nem létezik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:557
+msgid "Inexisting target object for objects.disconnect"
+msgstr "Nem létező célobjektum objects.disconnect -nél"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:562
+msgid "Inexisting source object for objects.disconnect"
+msgstr "Nem létező forrásobjektum objects.disconnect -nél"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:608
+msgid "Source is not an object"
+msgstr "A forrás nem objektum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:614
+msgid "Destination is not an object"
+msgstr "A cél nem objektum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:625
+msgid "Widget, Image or Pixmap required "
+msgstr "Widget, Kép vagy Pixmap szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:635
+msgid "Widget or Pixmap required"
+msgstr "Widget vagy Pixmap szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:714
+msgid "One o more of background, foreground or destination aren't objects"
+msgstr "Egy vagy több háttér, előtér vagy cél nem objektum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:720
+msgid "Pixmap objects required"
+msgstr "Pixmap objektum szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:743
+msgid "Values for background are out of image size "
+msgstr "A háttér értékei túllépték a kép méreteit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:748
+msgid "Values for foreground are out of image size "
+msgstr "Az előtér értékei túllépték a kép méreteit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:226
+msgid "Empty filename string"
+msgstr "Üres fájlnév sztring"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:271
+msgid "No such open mode: '%Q'"
+msgstr "Nincs ilyen megnyitási mód: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:312
+msgid "File is not open!"
+msgstr "Fájl Nincs nyitva!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:348
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:406
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:434
+msgid "File is not open !"
+msgstr "Fájl Nincs nyitva!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:369
+msgid "Argument to long, using only first char"
+msgstr "A kifejezés túl hosszú, csak az első karakter kerül felhasználásra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:339
+msgid "Write error occured !"
+msgstr "Írási hiba lépett fel!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:352
+msgid "Read error occured !"
+msgstr "Olvasási hiba lépett fel!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:371
+msgid "An error occured !"
+msgstr "Hiba lépett fel!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:387
+msgid "Missing both encrypt and decrypt key: at least one is needed"
+msgstr "Hiánnyzó kódoló és dekódoló titkosítási kulcs, legalább egy szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:168
+msgid "Error 0: Success ?"
+msgstr "0. Hiba: Sikerült?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:169
+msgid "Unsupported crypt mode"
+msgstr "Nem támogatott titkosítási mód"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:170
+msgid "Unsupported direction"
+msgstr "Nem támogatott irány"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:171
+msgid "Unsupported key length"
+msgstr "Nem támogatott kulcs hossz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:172
+msgid "Bad key data"
+msgstr "Hibás adatkulcs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:173
+msgid "Engine not initialized"
+msgstr "Titkosítás nincs inicializálva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:174
+msgid "Invalid direction for this engine"
+msgstr "Helytelen irány ehhez a motorhoz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:175
+msgid "Corrupted message data or invalid decrypt key"
+msgstr "Sérült üzenet, vagy érvénytelen dekódoló kulcs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:52
+msgid "Unknown error"
+msgstr "Ismeretlen hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:184
+msgid "Ops...encrypt cipher not initialized"
+msgstr "Upsz, titkosítás nincs inicializálva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:420
+msgid "Data buffer too long"
+msgstr "Adat puffer túl hosszú"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:221
+msgid "Ops...decrypt cipher not initialized"
+msgstr "Hoppá... dekódoló nincs inicializálva..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:277
+msgid "The message is not a hexadecimal string: this is not my stuff"
+msgstr "Az üzenet nem Hexadecimális sztring, ez nem az én asztalom..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:671
+msgid "The message is not a base64 string: this is not my stuff"
+msgstr "Az üzenet nem base64 sztring, ez nem az én asztalom..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:676
+msgid "The message doesn't seem to be encoded with CBC Mircryption"
+msgstr "Az üzenet nem úgy néz ki, mint egy kódolt CBC Mircryption..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:712
+#, c-format
+msgid ""
+"Cryptographic engine based on the\n"
+"Advanced Encryption Standard (AES)\n"
+"algorithm called Rijndael.\n"
+"The text is first encrypted with rijndael\n"
+"and then converted to %s notation.\n"
+"The keys used are %d bit long and will be padded\n"
+"with zeros if you provide shorter ones.\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"See the rijndael module documentation\n"
+"for more info on the algorithm used.\n"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:739
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:749
+msgid "hexadecimal"
+msgstr "Hexadecimális"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:759
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:779
+msgid "base64"
+msgstr "base64"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:790
+msgid ""
+"Popular cryptographic engine based on the\n"
+"old Blowfish encryption algorithm.\n"
+"The text is first encrypted with Blowfish \n"
+"and then converted to base64 notation.\n"
+"The keys used have variable length and\n"
+"are specified as character strings.\n"
+"You can specify keys long up to 56 bytes (448 bits).\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"This engine works in ECB mode by default:\n"
+"if you want to use CBC mode you must prefix\n"
+"your key(s) with \"cbc:\".\n"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:61
+msgid "Drop here the icons from the toolbars to remove them"
+msgstr "Dobd ide az ikonokat az Eszköztárról, hogy eltávolítsd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:128
+msgid "ToolBar Properties"
+msgstr "Eszköztár Tulajdonságai"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:144
+msgid "Icon"
+msgstr "Ikon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:160
+msgid "Id"
+msgstr "Azonosító"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:217
+msgid "Please choose the icon for the ToolBar"
+msgstr "Kérlek válassz egy ikont az Eszköztárhoz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "Invalid ToolBar Label"
+msgstr "Érvénytelen Eszköztár név"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "The ToolBar Label can't be empty!"
+msgstr "Az eszköztár neve nem lehet üres!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:256
+msgid "Duplicate ToolBar Id"
+msgstr "Duplikált Eszköztár azonosító"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:257
+msgid ""
+"The specified ToolBar Id already exists.<br>Would you like KVIrc to assign "
+"it automatically (so it doesn't collide with any other toolbar) or you "
+"prefer to do it manually ?"
+msgstr ""
+"A megadott Eszköztár Azonosító már létezik.<br>Szeretnéd, ha a KVIrc "
+"hozzárendelne egyet automatikusan (így elkerülhetőek az ütközések más "
+"Eszköztárakkal) vagy jobban szeretnéd manuálisan csinálni?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Manually"
+msgstr "Manuális"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Automatically"
+msgstr "Automatikus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:278
+msgid "Hide Advanced"
+msgstr "Haladó elrejtése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:287
+msgid "Customize Toolbars"
+msgstr "Eszköztár testreszabása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:296
+msgid "New ToolBar"
+msgstr "Új Eszköztár"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:300
+msgid "Delete ToolBar"
+msgstr "Eszköztár Törlése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:304
+msgid "Edit ToolBar"
+msgstr "Eszköztár szerkesztése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:312
+msgid "Export ToolBar"
+msgstr "Eszköztár Exportálása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:373
+msgid "Confirm ToolBar Deletion"
+msgstr "Eszköztár Törlésének megerősítése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:374
+msgid "Do you really want to delete toolbar \"%1\" ?"
+msgstr "Tényleg szeretnéd törölni a(z) \"%1\" Eszköztárat?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:397
+msgid "ToolBar Export"
+msgstr "Eszköztár Exportálás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:398
+msgid "Do you want the associated actions to be exported with the toolbar ?"
+msgstr "Szeretnéd az akciókat hozzárendelni az exportálandó Eszköztárhoz?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+msgid "Unable to write to the toolbar file."
+msgstr "Nem lehet írni az Eszköztár fájlba."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:465
+msgid "Please specify the properties for the toolbar \"%1\""
+msgstr "Add meg az Eszköztár tulajdonságait \"%1\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:491
+msgid "Please specify the properties for the new toolbar"
+msgstr "Kérlek add meg az új eszköztár tulajdonságait"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:493
+msgid "My ToolBar"
+msgstr "Saját Eszköztár"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:63
+msgid "Window with ID '%Q' not found"
+msgstr "Ablak '%Q azonosítóval nem található"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:67
+msgid "The specified window (%Q) is not a channel/query/DCC chat"
+msgstr "A megadott ablak (%Q) nem Csatorna/Privát/DCC chat ablak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:108
+msgid "File not found or empty"
+msgstr "Fájl nem található vagy üres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:114
+msgid "I can't open that file"
+msgstr "Nem tudom megnyitni ezt a fájlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:122
+msgid "Could not paste file"
+msgstr "Nem tudom beilleszteni a fájlt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:218
+msgid "The specified window (%Q) is not a channel/query/dcc"
+msgstr "A megadott ablak (%Q) nem csatorna/privát/dcc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:271
+msgid "Slow-paste ID:%d Window:%Q"
+msgstr "Másolás-azonosító: %d Ablak: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:240
+msgid "Plugin not found. Please check the plugin-name and path."
+msgstr "Plugin nem található. Ellenőrízd a plugin nevét és elérési útját."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:247
+msgid "Error while loading plugin."
+msgstr "Hiba a plugin betöltésekor."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:311
+msgid "This plugin does not export the desired function."
+msgstr "Ebben a pluginben nem áll rendelkezésre a kívánt funkció."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:327
+msgid ""
+"The plugin has no function to free memory. This can result in Memory Leaks!"
+msgstr ""
+"A pluginnak nincs memóriafelszabadító funkciója. Ez memória lyukakat "
+"eredményezhet!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:209
+#, c-format
+msgid "No environment variable found, please don't use the %% in the request"
+msgstr "Nincs környezeti változó, kérlek ne használd a %% -ot a kérésben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:482
+msgid "Invalid DCOP parameter syntax"
+msgstr "Helytelen DCOP paraméter szintaxis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:495
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:516
+msgid "The specified parameter is not an integer"
+msgstr "A megadott paraméter nem integer (egész szám)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:521
+#, c-format
+msgid "Unsupported DCOP parameter type %s"
+msgstr "Nem támogatott DCOP paraméter típus: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:534
+msgid "DCOP call failed"
+msgstr "DCOP hívás sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:599
+msgid "DCOP calls are available only when KDE support is compiled in"
+msgstr ""
+"DCOP hívások csak akkor elérhetőek, ha a KDE támogatás be lett fordítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1408
+#, c-format
+msgid "The window with id '%s' does not exist"
+msgstr "Az ablak %s azonosítóval nem létezik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:851
+msgid "Window type or 'all' expected as first parameter"
+msgstr "Ablak típusa, esetleg minden hiányzik paraméterként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:938
+msgid "Invalid IRC context id '%Q'"
+msgstr "Helytelen %Q azonosítójó IRC környezet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1045
+msgid "The specified IRC context is not valid: creating a context free window"
+msgstr "The megadott IRC k�nyezet �v�ytelen: k�nyezetfggetlen ablak l�rehoz�a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1119
+msgid "The specified window is not of type \"userwnd\""
+msgstr "A megadott ablak nem felhasználói ablak típusú"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1208
+msgid "Window doesn't have input widget"
+msgstr "Az ablak nem rendelkezik beviteli widgettel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1363
+msgid "The encrypt key wasn't a valid hexadecimal string"
+msgstr "A kódoló kulcs nem érvényes Hexadecimális sztring"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1377
+msgid "The decrypt key wasn't a valid hexadecimal string"
+msgstr "A dekódoló kulcs nem érvényes Hexadecimális sztring"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1414
+msgid "Both -n and -m switchess specified, -n takes precedence"
+msgstr "-n és -m kapcsoló megadva, -n rendelkezik elsőbbséggel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1424
+msgid "No encrypt key specified: can't allocate engine"
+msgstr "Nincs megadott kódoló kulcs: motor nem meghatározható"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1446
+msgid "Unknown engine error"
+msgstr "Ismeretlen motor hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1449
+msgid "Failed to initialize the specified crypt engine: %Q"
+msgstr "Hiba %Q kódoló motor inicializálása közben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1453
+msgid "The crypt engine \"%Q\" does not exist"
+msgstr "A kódoló motor \"%Q\" nem létezik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1458
+msgid "This executable has been compiled without crypt support"
+msgstr "Ez a kiadás kódolási támogatás nélkül lett fordítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:138
+msgid "Current window is not a channel"
+msgstr "Aktuális ablak nem csatorna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:87
+msgid "Raw Event"
+msgstr "Raw esemény"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:97
+msgid "Edit the raw event handler name."
+msgstr "Raw eseménykezelő nevének szerkesztése."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:179
+msgid "&Add Raw Event..."
+msgstr "R&aw esemény hozzáadása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "New Raw Event"
+msgstr "Új Raw esemény"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "Enter the numeric code of the message (0-999)"
+msgstr "Add meg az üzenet számkódját (0-999)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+msgid "Unable to write to the raw event file."
+msgstr "Raw eseményfájl írása sikertelen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Unable to write to the raw events file."
+msgstr "Raw eseményfájl írása nem lehetséges."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:512
+msgid "Raw Editor"
+msgstr "Raw szerkesztő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:219
+msgid "A really lame text transformation engine :D"
+msgstr "Egy kezdetleges szövegkódoló motor :)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:229
+msgid "A really lame text transformation engine: Light Version."
+msgstr "Egy kezdetleges szövegkódoló motor :) Könnyített Verzió."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:82
+#, c-format
+msgid "Socket Spy [IRC Context %u]"
+msgstr "Socket Spy [IRC Környezet %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:92
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Socket Spy</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Socket Spy</b></font> <font color=\"%s\">[IRC "
+"Környezet %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:112
+msgid "Socket open"
+msgstr "Socket nyitva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:117
+msgid "Socket closed"
+msgstr "Socket zárva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:149
+msgid "Internal unique name for the action"
+msgstr "Külső egyedi név az akció számára"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:151
+msgid "Label:"
+msgstr "Címke:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:155
+msgid ""
+"Visible name for this action.<br>This string will be displayed to the user "
+"so it is a good idea to use $tr() here"
+msgstr ""
+"Az akció látható neve.<br>Ezt a sztringet fogja a felhasználó látni, "
+"tehátjavasolt a $tr() -t használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:166
+msgid "Action code"
+msgstr "Akció kód"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:168
+msgid "Code"
+msgstr "Kód"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:174
+msgid "Category:"
+msgstr "Kategória:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:178
+msgid "Choose the category that best fits for this action"
+msgstr "Válaszd ki a kategóriát, ami legjobban illeszkedik az akcióra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:180
+msgid "Description:"
+msgstr "Leírás: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:184
+msgid ""
+"Visible short description for this action.<br>This string will be displayed "
+"to the user so it is a good idea to use $tr() here"
+msgstr ""
+"Az akció látható rövid leírása.<br>Ezt a sztringet fogja a felhasználó "
+"látni, tehát javasolt a $tr() használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:186
+msgid "Small Icon:"
+msgstr "Kis Ikon:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:194
+msgid ""
+"The small icon associated to this action.<br>It will appear at least in the "
+"popup menus when this action is inserted.<br>It should be 16x16 pixels."
+msgstr ""
+"A kis ikon hozzárendelve ehhez az akcióhoz.<br>Ez jelenik meg a felbukkanó "
+"menükben, amikor az akció be van szúrva.<br>16x16 pixel méretűnek kell "
+"lennie."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:200
+msgid "Big Icon:"
+msgstr "Nagy Ikon: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:209
+msgid ""
+"The big icon associated to this action.<br>It will appear at least in the "
+"toolbar buttons when this action is inserted.<br>It should be 32x32 pixels."
+msgstr ""
+"A nagy ikon hozzá lesz rendelve ehhez az akcióhoz.<br>Ez látható az "
+"eszköztárgombokon, ha az akció be van szúrva.<br>32x32 pixel méretűnek kell "
+"lennie."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:215
+msgid "Key Sequence:"
+msgstr "Kulcs szekvencia:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:219
+msgid ""
+"Optional keyboard sequence that will activate this action.<br>The sequence "
+"should be expressed as a string of up to four key codes separated by commas "
+"eventually combined with the modifiers \"Ctrl\",\"Shift\",\"Alt\" and \"Meta"
+"\".<br>Examples of such sequences are \"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl+X,"
+"Ctrl+C\" ..."
+msgstr ""
+"Opcionális billentyűleütés, ami aktiválja az akciót.<br>A billentyűsor "
+"lehetegy 4 kulcsú vesszővel elválasztott szöveg kombinálva a módosítókkal "
+"\"Ctrl\",\"Shift\",\"Alt\" és \"Meta\".<br>Ilyen kombinációk például a \"Ctrl"
+"+X\", \"Ctrl+Alt+Z\", \"Ctrl+X,Ctrl+C\" ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:240
+msgid "Needs IRC Context"
+msgstr "IRC környezet szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:242
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window belongs to an irc context"
+msgstr ""
+"Akkor engedélyezd ezt az opciót, ha az aktív ablaknak tartoznia kell egy IRC "
+"környezethez"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:250
+msgid "Needs IRC Connection"
+msgstr "IRC kapcsolat szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:252
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window has an active IRC connection"
+msgstr ""
+"Akkor engedélyezd ezt az opciót, ha az aktív ablaknak tartoznia kell egy "
+"aktív IRC környezetnek is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:260
+msgid "Enable at Login"
+msgstr "Engedélyezés belépéskor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:261
+msgid ""
+"Check this option if this action should be enabled also during the login "
+"operations (so when the logical IRC connection hasn't been estabilished yet)"
+msgstr ""
+"Akkor engedélyezd ezt az opciót, ha ennek a belépés közben kell lefutnia"
+"(tehát amikor még a tényleges IRC kapcsolat nem jött létre)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:265
+msgid "Enable Only in Specified Windows"
+msgstr "Csak a megadott ablakokban engedélyezve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:267
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is of a specified type"
+msgstr ""
+"Akkor engedélyezd ezt az opciót, ha az ablaknak meghatározott típusúnak kell "
+"lennie futáskor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:271
+msgid "Enable in Console Windows"
+msgstr "Engedélyezés Konzol ablakokban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:272
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a console"
+msgstr ""
+"Akkor engedélyezd ezt az opciót, ha az aktív ablaknak egy konzolnak kell "
+"lennie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:277
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:299
+msgid "Only If There Are Selected Users"
+msgstr "Csak ha van kijelölve felhasználó"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:278
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:300
+msgid ""
+"This will enable the action only if there are selected users in the active "
+"window"
+msgstr ""
+"Engedélyezett, ha több kiválasztott felhasználó is van az aktív ablakban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:282
+msgid "Enable in Channel Windows"
+msgstr "Engedélyezés Csatorna ablakokban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:283
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a channel"
+msgstr "Engedélyezés, csak ha a kiválasztott ablak csatorna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:293
+msgid "Enable in Query Windows"
+msgstr "Engedélyezés Privát Ablakoknál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:294
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a query"
+msgstr "Engedélyezés, csak ha a kiválasztott ablak Privát"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:304
+msgid "Enable in DCC Chat Windows"
+msgstr "Engedélyezés DCC chat ablakokban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:305
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a dcc chat"
+msgstr "Engedélyezés, csak ha a kiválasztott ablak DCC chat ablak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:627
+msgid "Action"
+msgstr "Akció"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:680
+msgid "New Action"
+msgstr "Új Akció"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:683
+msgid "Delete Actions"
+msgstr "Akció Törlése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:686
+msgid "Export Actions..."
+msgstr "Akciók exportálása..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Unable to write to the actions file."
+msgstr "Nem tudom az akciókat fájlba írni."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:823
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:824
+msgid "My Action"
+msgstr "Saját Akció"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:825
+msgid "Put here a short description of your action"
+msgstr "Rövid meghatározás az akciódhoz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:925
+msgid "Action Editor"
+msgstr "Akció Szerkesztő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:938
+msgid "Apply"
+msgstr "Elfogad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:63
+msgid "Outgoing traffic"
+msgstr "KImenő forgalom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:67
+msgid "Incoming traffic"
+msgstr "Bejövő forgalom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_crypt.cpp:160
+msgid "Invalid crypt engine"
+msgstr "Helytelen titkosító motor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:296
+msgid "Directory"
+msgstr "Könyvtár"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:315
+msgid "Socket"
+msgstr "Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:332
+msgid "Fifo"
+msgstr "Fifo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:349
+msgid "Block device"
+msgstr "Blokk eszköz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:366
+msgid "Char device"
+msgstr "Karakteres eszköz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:429
+msgid "Octet stream (unknown)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_osinfo.cpp:413
+msgid "Unknown "
+msgstr "Ismeretlen "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:181
+msgid "The specified network has no server entries"
+msgstr "A megadott hálózatnak nincs szerver eleme"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:239
+msgid ""
+"The server specification seems to be in the net:<string> but the network "
+"couln't be found in the database"
+msgstr ""
+"A szerver látszólag net:<string> -ben van, de a hálózatnem található az "
+"adatbázisban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:261
+msgid ""
+"The server specification seems to be in the id:<string> form but the "
+"identifier coulnd't be found in the database"
+msgstr ""
+"A szerver látszólag id:<string> -ben van, de a az azonosítónem található az "
+"adatbázisban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:71
+msgid "Aborted"
+msgstr "Megszakítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:96
+msgid "No request"
+msgstr "Nincs kérés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:141
+msgid "No filename specified for the \"StoreToFile\" processing type"
+msgstr "Nincs fájlnév megadva a \"StoreToFile\" folyamatnak."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:160
+msgid "Invalid URL: Missing hostname"
+msgstr "Helytelen URL: Hiányzó hostnév"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:167
+msgid "Unsupported protocol %1"
+msgstr "Nem támogatott protokol: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:189
+msgid "Unable to start the DNS lookup"
+msgstr "Nem lehetséges a DNS visszafejtésének elkezdése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:194
+#, c-format
+msgid "Looking up host %s"
+msgstr "Felderítés: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:210
+msgid "Host %s resolved to %Q"
+msgstr "%s hoszt felderítve: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:246
+msgid "Unable to start the request slave thread"
+msgstr "Nem tudom elindítani a kért másodlagos szálat "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:251
+msgid "Contacting host %Q on port %u"
+msgstr "Kapcsolódás %Q hosztra %u porton"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:271
+msgid "Connection established, sending request"
+msgstr "Kapcsolat létrejött, kérés küldése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:322
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:51
+msgid "Success"
+msgstr "Sikeres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:429
+msgid "Failed to rename the existing file, please rename manually and retry"
+msgstr ""
+"Átnevezés sikertelen a már létező fájlon, csináld manuálisan, majd próbáld "
+"újra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:447
+msgid "Can't open file \"%Q\" for writing"
+msgstr "\"%Q\" fájl megnyitása írásra sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:497
+#, c-format
+msgid "Invalid HTTP response: %s"
+msgstr "Helytelen HTTP válasz: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:503
+#, c-format
+msgid "Received HTTP response: %s"
+msgstr "Beérkezett HTTP válasz: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:628
+msgid "Stream exceeding maximum length"
+msgstr "Adatfolyam elérte a maximumot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:661
+msgid "Header too long: exceeded 4096 bytes"
+msgstr "Fejléc túl hosszú, nagyobb mint 4096 byte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:710
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:852
+msgid "Stream exceeded expected length"
+msgstr "Adatfolyam elérte a várt hosszt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:798
+msgid "Protocol error: invalid chunk size"
+msgstr "Protokoll hiba: helytelen tört méret"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:818
+msgid "Chunk header too long: exceeded 4096 bytes"
+msgstr "Fejléc túl hosszú, nagyobb mint 4096 byte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:987
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1193
+msgid "Operation timed out"
+msgstr "Időtúllépés a műveletnél"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1003
+msgid "Unexpected SSL error"
+msgstr "Váratlan SSL hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1016
+msgid "Failed to enter non blocking mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1021
+msgid "Invalid target address"
+msgstr "Helytelen cél cím"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1056
+msgid "Failed to initialize the SSL context"
+msgstr "SSL környezet inicializálása sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1058
+msgid "Failed to initialize the SSL connection"
+msgstr "SSL kapcsolat inicializálása sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1075
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:99
+msgid "Remote end has closed the connection"
+msgstr "A távoli kiszolgáló lezárta a kapcsolatot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1087
+msgid "Unrecoverable SSL error during handshake"
+msgstr "Visszaállíthatatlan SSL hiba kézfogás közben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1272
+msgid "Operation timed out (while selecting for read)"
+msgstr "Időtúllépés a műveletnél (miközben kiválasztottam olvasásra)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1382
+msgid "This KVIrc executable has no SSL support"
+msgstr "Ebben a KVIrcben nincs SSL támogatás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1147
+msgid "Back"
+msgstr "Vissza"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:268
+msgid "Next"
+msgstr "Következő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:168
+msgid "%1 bytes"
+msgstr "%1 bájt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:172
+msgid "%1 KB"
+msgstr "%1 KB"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:176
+msgid "%1 MB"
+msgstr "%1 MB"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:181
+msgid "%1 GB"
+msgstr "%1 GB"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:185
+msgid "%1 TB"
+msgstr "%1 TB"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:620
+msgid "Internal error"
+msgstr "Belső hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:54
+msgid "Unknown command"
+msgstr "Ismeretlen parancs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:55
+msgid "Missing closing brace"
+msgstr "Bezáró zárójel hiányzik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:56
+msgid "Unexpected end of command in string"
+msgstr "A parancs váratlanul véget ért"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:57
+msgid "Unexpected end of command in dictionary key"
+msgstr "Váratlan parancs vég a szótár kulcsban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:58
+msgid "Switch dash without switch letter"
+msgstr "Gondolatjel váltás, betűváltás nélkül"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:59
+msgid "Unknown function"
+msgstr "Ismeretlen függvény"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:60
+msgid "Unexpected end of command in parenthesis"
+msgstr "Váratlan parancsvég a zárójelben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:61
+msgid "Unexpected end of command in function parameters"
+msgstr "Váratlan parancsvég a függvény paraméterekben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:62
+msgid "Missing variable name"
+msgstr "Hiányzó változó név"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:63
+msgid "Variable or identifier expected"
+msgstr "Változó vagy azonosító szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:64
+msgid "Left operand is not a number"
+msgstr "A bal operandus nem szám"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:65
+msgid "Multiple operations not supported for numeric operators"
+msgstr "Multiple operations not supported for numeric operators"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:67
+msgid "Modulo by zero"
+msgstr "Nullával való osztási hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:68
+msgid "Right operand is not a number"
+msgstr "Jobb operandus nem szám"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:69
+msgid "Unterminated expression (missing ')' ?)"
+msgstr "Befejezetlen kifejezés (hiányzó ')' ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:70
+msgid "Unterminated subexpression (Parenthesis mismatch)"
+msgstr "Befejezetlen al-kifejezés (Zárójel eltérési hiba)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:71
+msgid "Unexpected character"
+msgstr "Váratlan karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:73
+msgid "No host to resolve"
+msgstr "Nincs felderíthető hoszt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:74
+msgid "(DNS Internal) Unsupported address family"
+msgstr "(DNS Belső) Nem támogatott címcsalád"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:75
+msgid "Valid name but the host has no IP address"
+msgstr "Érvényes név, de a hosthoz nem tartozik IP cím"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:76
+msgid "Unrecoverable nameserver error (crashed ?)"
+msgstr "Felderítetlen névszerver hiba (összeomlott ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:77
+msgid "Dns temporaneous fault (try again)"
+msgstr "Átmeneti Dns hiba, próbáld újra "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:78
+msgid "(DNS Internal) Bad flags"
+msgstr "(DNS Belső) Rossz flagek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:79
+msgid "(DNS Internal) Out of memory"
+msgstr "(DNS Belső) Nincs elég memória"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:80
+msgid "(DNS Internal) Service not supported"
+msgstr "(DNS Belső) Szolgáltatás nem támogatott"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:81
+msgid "Unknown node (host not found)"
+msgstr "Ismeretlen node, host nem található"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:82
+msgid "(DNS Internal) Unsupported socket type"
+msgstr "(DNS Belső) Nem támogatott socket típus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:83
+msgid "Dns query failed"
+msgstr "Dns lekérés sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:84
+msgid "This KVIrc executable has no IPV6 support"
+msgstr "Ebben a KVircben nincs IPV6 támogatás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:85
+msgid "Host not found"
+msgstr "Hoszt nem található"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:86
+msgid "(DNS Internal) IPC failure (slave data corrupted)"
+msgstr "(DNS Belső) IPC sikertelen (másodlagos adat hibás)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:88
+msgid "Invalid IP address"
+msgstr "Helytelen IP cím"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:90
+msgid "Failed to put the socket in non blocking mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:91
+msgid "Bad file descriptor"
+msgstr "Hibás fájlleíró"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:92
+msgid "Out of address space"
+msgstr "Kifutottunk a címekből"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:93
+msgid "Connection refused"
+msgstr "Kapcsolódás visszautasítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:94
+msgid "Kernel networking panic"
+msgstr "Hálózati kernel pánik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:95
+msgid "Connection timed out"
+msgstr "A kapcsolat időtúllépés miatt megszakadt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:96
+msgid "Network is unreachable"
+msgstr "Hálózat elérhetetlen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:97
+msgid "Broken pipe"
+msgstr "Broken pipe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:98
+msgid "Invalid proxy address"
+msgstr "Helytelen proxy-cím"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:100
+msgid "Invalid irc context id"
+msgstr "Helytelen irc környezet azonosító"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:101
+msgid "Error in loading module"
+msgstr "Hiba a modul betöltésekor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:102
+msgid "No such module command"
+msgstr "Nincs ilyen modul parancs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:103
+msgid "No such module function"
+msgstr "Nincs ilyen modul függvény"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:104
+msgid "Left operand is not a dictionary reference"
+msgstr "A bal operátor nincs az értelmezőben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:105
+msgid "Right operand is not a dictionary reference"
+msgstr "A jobb operátor nincs az értelmezőben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:106
+msgid "Missing object class name"
+msgstr "Hiányzó objektum osztálynév"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:107
+msgid "No such object class"
+msgstr "Nincs ilyen objektum osztály"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:108
+msgid "No such object"
+msgstr "Nincs ilyen objektum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:109
+msgid "No such object function"
+msgstr "Nincs ilyen objektum függvény"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:110
+msgid "Invalid left operand"
+msgstr "Helytelen bal operandus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:111
+msgid "Not enough parameters"
+msgstr "Nem elég paraméter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:112
+msgid "Integer parameter expected"
+msgstr "Integer paraméter hiányzik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:113
+msgid "Invalid parameter"
+msgstr "Helytelen paraméter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:114
+msgid "No such file"
+msgstr "Nincs ilyen fájl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:115
+msgid "Open parenthesis expected"
+msgstr "Nyitó zárójel hiányzik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:116
+msgid "Open brace expected"
+msgstr "Kapcsos zárójelnyitás hiányzik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:117
+msgid "Can't kill a builtin class"
+msgstr "Nem lőhetsz beépített osztályt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:118
+msgid "The SOCKSV4 protocol lacks IpV6 support"
+msgstr "A SOCKSV4 protokol nem támogatja az IpV6-ot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:119
+msgid "Unrecognized proxy reply"
+msgstr "Ismeretlen proxy válasz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:120
+msgid "Proxy response: auth failed: access denied"
+msgstr "Proxy válasza: azonosítás sikertelen, hozzáférés megtagadva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:121
+msgid "Proxy response: No acceptable auth method: request rejected"
+msgstr ""
+"Proxy válasza: Nincs elfogadható azonosítási eljárás, kérés visszautasítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:122
+msgid "Proxy response: request failed"
+msgstr "Proxy válasza: kérés visszautasítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:123
+msgid "Proxy response: ident failed"
+msgstr "Proxy válasza: hibás azonosítás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:124
+msgid "Proxy response: ident not matching"
+msgstr "Proxy válasza: azonosító nem egyezik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:125
+msgid "Proxy response: general SOCKS failure"
+msgstr "Proxy válasza: általános SOCKS hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:126
+msgid "Proxy response: connection not allowed"
+msgstr "Proxy válasza: kapcsolat nem engedélyezett"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:127
+msgid "Proxy response: network unreachable"
+msgstr "Proxy válasza: hálózat elérhetetlen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:128
+msgid "Proxy response: host unreachable"
+msgstr "Proxy válasza: kapcsolat visszautasítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:129
+msgid "Proxy response: connection refused"
+msgstr "Proxy válasza: kapcsolat visszautasítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:130
+msgid "Proxy response: TTL expired"
+msgstr "Proxy válasza: TTL lejárt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:131
+msgid "Proxy response: command not supported"
+msgstr "Proxy válasza: parancs nem támogatott"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:132
+msgid "Proxy response: address type not supported"
+msgstr "Proxy válasza: cím típus nem támogatott"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:133
+msgid "Proxy response: invalid address"
+msgstr "Proxy válasza: helytelen cím"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:134
+msgid "Invalid port number"
+msgstr "Helytelen portszám"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:135
+msgid "Socket not connected"
+msgstr "Socket nem kapcsolódott"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:136
+msgid "Insufficient resources to complete the operation"
+msgstr "Nincs elég erőforrás a kérés teljesítésére"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:137
+msgid "Can't setup a listening socket : bind failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:138
+msgid "Can't resolve the localhost name"
+msgstr "Localhost nevét nem sikerült visszafejteni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:139
+msgid "Unsupported image format"
+msgstr "Nem támogatott képformátum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:140
+msgid "Can't open file for appending"
+msgstr "Nem tudom megnyitni a fájlt hozzáfűzésre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:542
+msgid "Can't open file for writing"
+msgstr "Nem tudom megnyitni a fájlt írásra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:142
+msgid "File I/O error"
+msgstr "File I/O hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:143
+msgid "Acknowledge error"
+msgstr "Megerősítési hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:982
+msgid "Can't open file for reading"
+msgstr "Nem tudom megnyitni a fájlt olvasásra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:145
+msgid "Can't send a zero-size file"
+msgstr "Nulla méretű fájl küldése sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:146
+msgid "Missing popup name"
+msgstr "Hiányzó felbukkanó név"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:147
+msgid "'item', 'popup', 'label' or 'separator' keyword expected"
+msgstr "'item', 'popup', 'label' vagy 'separator' kulcsszó hiányzik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:148
+msgid "Self modification not allowed"
+msgstr "Ön-módosítás nem engedélyezett"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:149
+msgid "UNUSED"
+msgstr "NEM HASZNÁLT"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:150
+msgid "Feature not available"
+msgstr "Szolgáltatás nem elérhető"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:151
+msgid "Unexpected characters in array index"
+msgstr "Váratlan karakter a tömb indexben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:152
+msgid "Unexpected end in expression"
+msgstr "Váratlan vég a kifejezésben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:153
+msgid "Unexpected end in array index"
+msgstr "Váratlan vég a tömb indexében"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:154
+msgid "Connection thru HTTP proxy failed"
+msgstr "HTTP proxyn keresztül a kapcsolódás sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:155
+msgid "Case , match , regexp , default or break keyword expected"
+msgstr "Case , match , regexp , default vagy break kulcsszó hiányzik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:156
+msgid "Access denied"
+msgstr "Hozzáférés megtagadva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:157
+msgid "Address already in use"
+msgstr "Cím már használatban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:158
+msgid "Can't assign the requested address"
+msgstr "Nem használható a kért cím"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:159
+msgid "Connection reset by peer"
+msgstr "Connection reset by peer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:160
+msgid "Host unreachable (no route to host)"
+msgstr "Host elérhetetlen (nincs útvonal a hosthoz)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:161
+msgid "Variable expected"
+msgstr "Változó szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:162
+msgid "Invalid array index: positive integer expected"
+msgstr "Helytelen tömb index: pozitív integer szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:163
+msgid "listen() call failed"
+msgstr "listen() hívás sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:164
+msgid "This executable has been compiled without SSL support"
+msgstr "Ez a csomag SSL támogatás nélkül lett fordítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:165
+msgid "Secure Socket Layer error"
+msgstr "Secure Socket Layer hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:166
+msgid "Slash (/) character expected"
+msgstr "Per (/) karakter szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:167
+msgid "Unknown string manipulation operation"
+msgstr "Ismeretlen szövegmódosító művelet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:168
+msgid "Operation aborted"
+msgstr "Művelet megszakítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:169
+msgid "Unexpected token"
+msgstr "Váratlan jel (token)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:170
+msgid "Scope object already defined (unexpected @)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:171
+msgid "There is no $this pointer in this scope (unexpected @)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:140
+msgid "Operation cancelled"
+msgstr "Művelet megszakítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:170
+msgid "File write error"
+msgstr "Fájl írási hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:176
+msgid "File read error"
+msgstr "Fájl olvasási hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:324
+msgid "Packaging file %Q"
+msgstr "%Q csomagolása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:779
+msgid "Failed to open a source file for reading"
+msgstr "Forrás fájl megnyitása olvasásra sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:817
+msgid "Compression library initialization error"
+msgstr "Tömörítő library inicializálási hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:394
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:828
+msgid "Compression library error"
+msgstr "Tömörítési library hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:465
+msgid "Compression library internal error"
+msgstr "Belső tömörítő hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:485
+msgid "Error while compressing a file stream"
+msgstr "Hiba adatfolyam tömörítésekor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:526
+msgid "Creating package..."
+msgstr "Csomag létrehozása..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:527
+msgid "Writing package header"
+msgstr "Csomagfeljéc írása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:571
+msgid "Writing informational fields"
+msgstr "Információs mezők írása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:597
+msgid "Writing package data"
+msgstr "Csomag adatok írása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:659
+msgid "The file specified is not a valid KVIrc package"
+msgstr "A megadott fájl nem érvényes KVIrc csomag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:668
+msgid ""
+"The package has an invalid version number, it might have been created by a "
+"newer KVIrc"
+msgstr ""
+"A csomag helytelen verziószámmal rendelkezik, valószínűleg újabb KVIrccel "
+"lett elkészítve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:714
+msgid "Invalid info field: the package is probably corrupt"
+msgstr "Helytelen információs mező: a csomag valószínűleg sérült"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:745
+msgid ""
+"The package contains compressed data but this executable does not support "
+"compression"
+msgstr ""
+"A csomag tömörített adatot tartalmaz, de ez a verzió nem támogatja a "
+"kitömörítést"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:771
+msgid "Failed to create the target directory"
+msgstr "Célkönyvtár létrehozása sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:784
+msgid "Unpacking file %Q"
+msgstr "%Q kicsomagolása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:916
+msgid "Error in compressed file stream"
+msgstr "Hiba a tömörített adatfolyamban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:990
+msgid "Reading package..."
+msgstr "Csomag olvasása..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:991
+msgid "Reading package header"
+msgstr "Csomagfejléc olvasása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:998
+msgid "Reading package data"
+msgstr "Csomag adatok olvasása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:1017
+msgid "Invalid data field: the package is probably corrupt"
+msgstr "Helytelen adat mező: a csomag valószínűleg sérült"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1127
+msgid "Select color"
+msgstr "Szín kiválasztása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1128
+msgid "&Basic colors"
+msgstr "Alapszínek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1129
+msgid "&Custom colors"
+msgstr "Felhasználói színek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1130
+msgid "&Red"
+msgstr "Vö&rös"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1131
+msgid "&Green"
+msgstr "Zöld"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1132
+msgid "Bl&ue"
+msgstr "Kék"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1133
+msgid "&Define Custom Colors >>"
+msgstr "Egyéni színek >>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1134
+msgid "&Add to Custom Colors"
+msgstr "Hozzá&adás az egyéni szinekhez"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1136
+msgid "Select Font"
+msgstr "Betűtípus kiválasztása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1137
+msgid "&Font"
+msgstr "Betűtípus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1138
+msgid "Font st&yle"
+msgstr "Betűstílus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1139
+msgid "&Size"
+msgstr "Méret"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1140
+msgid "Sample"
+msgstr "Minta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1141
+msgid "Effects"
+msgstr "Effektek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1142
+msgid "Stri&keout"
+msgstr "Áthúzott"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1143
+msgid "&Underline"
+msgstr "Aláhúzott"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1144
+msgid "Scr&ipt"
+msgstr "Szkr&ipt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1146
+msgid "Parent Directory"
+msgstr "Szülő Könyvtár"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1148
+msgid "Forward"
+msgstr "Előre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1149
+msgid "Reload"
+msgstr "Újratölt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1150
+msgid "New Directory"
+msgstr "Új Könyvtár"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1151
+msgid "Bookmarks"
+msgstr "Könyvjelzők"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1152
+msgid "Add Bookmark"
+msgstr "Könyvjelző hozzáadása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1153
+msgid "&Edit Bookmarks"
+msgstr "Könyvjelzők szerkesztése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1154
+msgid "New Bookmark Folder..."
+msgstr "Új könyvjelzők könyvtár"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1156
+msgid "Sorting"
+msgstr "Rendezés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1157
+msgid "By Name"
+msgstr "Név"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1158
+msgid "By Date"
+msgstr "Dátum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1159
+msgid "By Size"
+msgstr "Méret"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1160
+msgid "Reverse"
+msgstr "Fordított"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1161
+msgid "Directories First"
+msgstr "Könyvtárak elöl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1162
+msgid "Case Insensitive"
+msgstr "Betűméret érzéketlen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1163
+msgid "Short View"
+msgstr "Rövid nézet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1164
+msgid "Detailed View"
+msgstr "Részletes nézet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1165
+msgid "Show Hidden Files"
+msgstr "Rejtett fájlok mutatása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1166
+msgid "Show Quick Access Navigation Panel"
+msgstr "Gyorsböngésző panel mutatása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1167
+msgid "Show Preview"
+msgstr "Előnézet megjelenítése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1168
+msgid "Separate Directories"
+msgstr "Könyvtárak elválasztása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1169
+msgid "Often used directories"
+msgstr "Gyakran használt könyvtárak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1170
+msgid "Desktop"
+msgstr "Asztal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1171
+msgid "Home Directory"
+msgstr "Saját könyvtár"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1172
+msgid "Floppy"
+msgstr "Kislemez"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1173
+msgid "Temporary Files"
+msgstr "Átmeneti Fájlok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1174
+msgid "Network"
+msgstr "Hálózat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1175
+msgid "New Directory..."
+msgstr "Új könyvtár..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1176
+msgid "Delete"
+msgstr "Törlés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1177
+msgid "Thumbnail Previews"
+msgstr "Ikon előnézet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1178
+msgid "Large Icons"
+msgstr "Nagy ikonok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1179
+msgid "Small Icons"
+msgstr "Kis ikonok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1180
+msgid "Properties..."
+msgstr "Tulajdonságok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1181
+msgid "&Automatic Preview"
+msgstr "&Automatikus Előnézet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1182
+msgid "&Preview"
+msgstr "Előnézet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1183
+msgid "&Location:"
+msgstr "He&ly:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1184
+msgid "&Filter:"
+msgstr "Szűrő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1185
+msgid "All Files"
+msgstr "Minden fájl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:104
+msgid "- d -- h -- m -- s"
+msgstr "- n -- ó-- p -- mp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:111
+#, c-format
+msgid "%u h %u m %u s"
+msgstr "%u ó%u p %u mp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:113
+#, c-format
+msgid "%u h %u%u m %u%u s"
+msgstr "%u ó%u%u p %u%u mp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:118
+#, c-format
+msgid "%u m %u s"
+msgstr "%u p %u mp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:120
+#, c-format
+msgid "%u m %u%u s"
+msgstr "%u p %u%u mp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:122
+#, c-format
+msgid "%u s"
+msgstr "%u mp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:127
+#, c-format
+msgid "%u d %u h %u m %u s"
+msgstr "%u n %u ó%u p %u mp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:129
+#, c-format
+msgid "%u d %u%u h %u%u m %u%u s"
+msgstr "%u n %u%u ó %u%u p %u%u mp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+msgid "Usage"
+msgstr "Használat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+msgid "message"
+msgstr "üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:99
+msgid "-m: send a message instead of a notice"
+msgstr "-m: üzenet küldése értesítő helyett"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:100
+msgid "-w: send notice to all channel owners"
+msgstr "-w: értesítő küldése minden csatorna tulajdonosnak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:101
+msgid "-a: send notice to all channel admins"
+msgstr "-a: értesítő küldése minden csatorna adminnak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:102
+msgid "-o: send notice to all channel ops"
+msgstr "-o: értesítő küldése minden csatorna operátornak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:103
+msgid "-h: send notice to all channel halfops"
+msgstr "-h: értesítő küldése minden fél-operátornak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:104
+msgid "-v: send notice to all channel voices"
+msgstr "-v: értesítő küldése minden hanggal rendelkezőnek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:105
+msgid "-q: quiet mode"
+msgstr "-q: csendes mód"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:138
+msgid "Sending wallop to"
+msgstr "Wallop küldése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:314
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:410
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:493
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:535
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:593
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:653
+msgid "Usage:"
+msgstr "Használat:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:223
+msgid "reason"
+msgstr "ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:272
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:416
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:440
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:599
+msgid "This is not a channel window"
+msgstr "Ez nem egy csatorna ablak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:581
+msgid "Unsupported type: $0"
+msgstr "Nem támogatott típus: $0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:604
+msgid "Channel Owner"
+msgstr "Csatorna Tulajdonos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:606
+msgid "Channel Administrator"
+msgstr "Csatorna Adminisztrátor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:608
+msgid "Channel Operator"
+msgstr "Csatorna Operátor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:610
+msgid "Half Operator"
+msgstr "Fél-Operátor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:612
+msgid "Voice"
+msgstr "Hang"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:614
+msgid "User Operator"
+msgstr "Felhasználó-Operátor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:616
+msgid "Normal User"
+msgstr "Normál Felhasználó"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:641
+msgid "You must use DNS in an IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:647
+msgid "You must be connected to a server"
+msgstr "Kapcsolódnod kell szerverhez"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:664
+msgid "No such user: $0"
+msgstr "Nincs ilyen felhasználó: $0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:33
+msgid "The default script has been successfully installed."
+msgstr "Az alapértelmezett szkriptek sikeresen telepítve lettek."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:34
+msgid "To connect to a server, type /server <server name>"
+msgstr ""
+"Hogy kapcsolódj egy szerverhez, használd a /server <szerver neve> parancsot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:36
+msgid "Happy ircing :)"
+msgstr "Kellemes IRKálást :)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:15
+msgid "Options"
+msgstr "Opciók"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:40
+msgid "Window operations"
+msgstr "Ablak műveletek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMENAME@"
+msgstr "@KINÉZETNÉV@"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMEDESCRIPTION@"
+msgstr "@KINÉZETLEÍRÁS@"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:18
+msgid "Stop Highlighting (Local)"
+msgstr "Kiemelés leállítása (helyi)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:23
+msgid "Start Highlighting (Local)"
+msgstr "Kiemelés indítása (Helyi)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:28
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:61
+msgid "Always Highlight"
+msgstr "Mindig kiemel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:30
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:55
+msgid "Highlight as"
+msgstr "Kiemel, mint "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:66
+msgid "Stop Highlighting"
+msgstr "Kiemelés leállítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:82
+msgid "is being ignored"
+msgstr "mellőzve lett"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:87
+msgid "is not being ignored"
+msgstr "nincs mellőzve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:93
+msgid "Enable Ignore"
+msgstr "Mellőzés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:98
+msgid "Ignore as..."
+msgstr "Mellőzés, mint..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:240
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:282
+msgid "Ignore as"
+msgstr "Mellőzés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:290
+msgid "Unignore"
+msgstr "Mellőzés visszavonása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:308
+msgid "is registered as"
+msgstr "regisztrált, mint "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:311
+msgid "is in the notify list"
+msgstr "megtalálható az értesítési listában"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:314
+msgid "has a default avatar"
+msgstr " alapértelmezett avatarja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:317
+msgid "is not registered"
+msgstr "nem regisztrált"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:323
+msgid "Register"
+msgstr "Regisztráció"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:328
+msgid "Quick Registration"
+msgstr "Gyors regisztráció"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:330
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:355
+msgid "Register as"
+msgstr "Regisztrál, mint"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:361
+msgid "Edit Registration"
+msgstr "Regisztráció szerkesztése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:366
+msgid "Unregister"
+msgstr "Regisztráció Törlése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:373
+msgid "Add to Notify"
+msgstr "Hozzáad Értesítésre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:378
+msgid "Remove from Notify"
+msgstr "Eltávolítás az értesítőről"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:385
+msgid "Choose"
+msgstr "Kiválaszt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:387
+msgid "Choose Avatar Image File"
+msgstr "Avatar kép kiválasztása - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:396
+msgid "Set as Default"
+msgstr "Beállítás alapértelmezettként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:401
+msgid "Clear Default"
+msgstr "Alapértelmezett törlése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:412
+msgid "Copy To Clipboard"
+msgstr "Vágólapra másolás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:433
+msgid "Ban"
+msgstr "Tilt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1037
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1084
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1224
+msgid "Multiple Users"
+msgstr "Több felhasználó"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:577
+msgid "&Ban"
+msgstr "Tilt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1089
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1229
+msgid "idle time"
+msgstr "tétlenségi idő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:758
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1236
+msgid "&Information"
+msgstr "&Információ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1115
+msgid "DNS for"
+msgstr "DNS "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:499
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1120
+msgid "Mask for"
+msgstr "Maszk "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:505
+msgid "&Control"
+msgstr "Vezérlés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:509
+msgid "O&wner"
+msgstr "Tulajdonos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:514
+msgid "&Deowner"
+msgstr "Tulajdonos elvétele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:519
+msgid "&Administrator"
+msgstr "&Adminisztrátor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:524
+msgid "&Deadministrator"
+msgstr "&Adminisztrátor elvétele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:529
+msgid "&Op"
+msgstr "&Op"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:534
+msgid "&Deop"
+msgstr "Op elvétele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:539
+msgid "&Halfop"
+msgstr "Félop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:544
+msgid "&Dehalfop"
+msgstr "Félop elvétele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:549
+msgid "&Voice"
+msgstr "Hang"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:554
+msgid "D&evoice"
+msgstr "Hang elvétele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:561
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "&Kick"
+msgstr "&Kirúgás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+msgid "K&ick"
+msgstr "K&irúgás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "With..."
+msgstr "okkal..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Kick Reason"
+msgstr "Kirúgás oka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Enter a kick reason"
+msgstr "Indoklás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "Kick/Ban"
+msgstr "Kirúg/Tilt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Kick/Ban Reason"
+msgstr "Kirúg/Tilt okkal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Enter a kick/ban reason"
+msgstr "Kirúgás/Tiltás indoka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "&Kick/Ban"
+msgstr "&Kirúgás/Tiltás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:604
+msgid "Configure ban mask..."
+msgstr "Tiltó maszk beállítása..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:612
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1263
+msgid "&Query"
+msgstr "Pivát"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:625
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1136
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1276
+msgid "&Registration"
+msgstr "&Regisztráció"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1278
+msgid "&Highlight"
+msgstr "Kiemelés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:629
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1280
+msgid "Ig&nore"
+msgstr "Mellőz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:726
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1050
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1138
+msgid "Notify Avatar"
+msgstr "Értesítés Avatarról"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:705
+msgid "&Part"
+msgstr "Elhagy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:664
+msgid "Copy Channel Address"
+msgstr "Csatorna címének másolása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:749
+msgid "Channels"
+msgstr "Csatornák"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:693
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:753
+msgid "&Join Channels..."
+msgstr "Csatlakozás csatornákhoz..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:700
+msgid "&Hop"
+msgstr "&Hop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:733
+msgid "Copy Channel URL to Clipboard"
+msgstr "Csatorna URL másolása vágólapra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:782
+msgid "l (Connections)"
+msgstr "l (Kapcsolatok)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:787
+msgid "m (Command Usage)"
+msgstr "m (Parancs Használat)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:792
+msgid "o (Operators)"
+msgstr "o (Operátorok)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:797
+msgid "t (Connection stats ?)"
+msgstr "t (Kapcsolat statisztika?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:802
+msgid "u (Uptime)"
+msgstr "u (Kapcsolódási idő)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:807
+msgid "y (y-Lines)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:812
+msgid "z (Debug Stats?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:909
+msgid "Chat with"
+msgstr "Beszélgetés "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:914
+msgid "Reverse Chat with"
+msgstr "Fordított beszélgetés:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:919
+msgid "Secure Chat with"
+msgstr "Biztonságos beszélgetés:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:926
+msgid "Send to"
+msgstr "Küldés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:931
+msgid "Secure send to"
+msgstr "Biztonságos küldés: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:936
+msgid "Reverse Send to"
+msgstr "Fordított küldés: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:941
+msgid "Secure Reverse Send to"
+msgstr "Biztonságos Fordított küldés:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:948
+msgid "TDCC Send to"
+msgstr "TDCC küldés:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:953
+msgid "TDCC Reverse Send to"
+msgstr "TDCC fordított küldés: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:960
+msgid "Voice Chat"
+msgstr "Beszélgetés hanggal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1134
+msgid "&Ignore"
+msgstr "Mellőz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1165
+msgid "Logging to"
+msgstr "Logolás:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1167
+msgid "Flush Log File"
+msgstr "Naplófájlok frissítése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1174
+msgid "Stop Logging"
+msgstr "Naplózás leállítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1179
+msgid "Not Logging"
+msgstr "Nem naplóz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+msgid "Log To Default File"
+msgstr "Naplózás az alapértelmezett fájlba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+msgid "Include Existing Buffer"
+msgstr "Beleértve a meglévő puffert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+msgid "Log To..."
+msgstr "Logolás..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1201
+msgid "Choose Log Filename"
+msgstr "Válassz naplófájl nevet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1282
+msgid "Notify avatar"
+msgstr "Értesítés avatarról"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:50
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$copyfiles must be a "
+"source directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:56
+#, c-format
+msgid ""
+"[Installer] The second argument to \\%installer->\\$copyfiles must be a file "
+"name or file regexp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:62
+#, c-format
+msgid ""
+"[Installer] The third argument to \\%installer->\\$copyfiles must be a "
+"destination directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:94
+msgid "[Installer] Failed to create directory"
+msgstr "[Telepítő] Könyvtár létrehozása sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:104
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$includefiles must be a "
+"source directory"
+msgstr ""
+"[Telepítő] Az első argumentumnak \\%installer->\\$includefiles forrás "
+"könyvtárnak kell lennie"
+
+#~ msgid "Lag is"
+#~ msgstr "A lag "
+
+#~ msgid "milliseconds"
+#~ msgstr "miliszekundum"
+
+#~ msgid "Restore from backup archive"
+#~ msgstr "Visszaállítás biztonsági mentésről"
+
+#~ msgid "Basic Properties"
+#~ msgstr "Alapvető Tulajdonságok"
+
+#~ msgid "Other:"
+#~ msgstr "Egyéb:"
+
+#~ msgid "Now you should specify an IRC server, to be connected to it"
+#~ msgstr "Most megadhatsz egy IRC szervert, amihez kapcsolódsz"
+
+#~ msgid "Choose a server to connect"
+#~ msgstr "Szerver kiválasztása kapcsolódáshoz"
+
+#~ msgid "Choose from built-in server list"
+#~ msgstr "Választás a beépített szerver listából"
+
+#~ msgid "Specify server manually"
+#~ msgstr "Szerver megadása manuálisan"
+
+#~ msgid "Server:"
+#~ msgstr "Szerver:"
+
+#~ msgid "Port:"
+#~ msgstr "Port:"
+
+#~ msgid "Open irc:// or irc6:// URL"
+#~ msgstr "Irc:// vagy irc6:// url megnyitása"
+
+#~ msgid "URL:"
+#~ msgstr "URL:"
+
+#~ msgid "Use server config"
+#~ msgstr "Szerver konfig használata"
+
+#~ msgid "Config file:"
+#~ msgstr "Konfigurációs fájl:"
+
+#~ msgid ""
+#~ "Setup found existing mIRC installation. It will try to import some of "
+#~ "mIRC settings and serverlist. If you don't want to do it, unselect import "
+#~ "in setup pages"
+#~ msgstr ""
+#~ "A telepítő már meglévő telepített mIRC-et észlelt. Megpróbálja importálni "
+#~ "a beállításokat és a szerverlistát. Ha ezt nem szeretnéd, tiltsd le az "
+#~ "importálást a beállítás oldalon"
diff --git a/po/kvirc/kvirc_it.po b/po/kvirc/kvirc_it.po
new file mode 100644
index 00000000..813b2c31
--- /dev/null
+++ b/po/kvirc/kvirc_it.po
@@ -0,0 +1,12396 @@
+# translation of kvirc_it.po to
+# Italian translation file for KVIrc 3.0
+# This file is distributed under the same license as the PACKAGE KVIrc.
+# Pragma:
+#
+# Ragazzi, mettetevi daccordo sulla codifica.
+# Mezzo file è in utf8 e mezzo in iso-8859-1
+# Anzi, vi metto daccordo io: da ora in poi si usa UTF8 :D
+# Ci sarà  da correggere un po di roba però.
+#
+# Szymon Stefanek <pragma at kvirc dot net>, 2004.
+# Eva Schaller <eva at cyberbeat dot it>, 2002,2003, 2004.
+# Alessio Paoletti <nate at paranoici dot org>, 2004,2005, 2006;.
+# Elvio Basello <hellvis69 at altervista dot com>, 2005, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: kvirc_it\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2008-03-21 01:05+0100\n"
+"Last-Translator: \n"
+"Language-Team: <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:696
+msgid "&Cascade Windows"
+msgstr "Finestre a &cascata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:697
+msgid "Cascade &Maximized"
+msgstr "Cascata &massimizzata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:700
+msgid "&Tile Windows"
+msgstr "Finestre affianca&te"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:703
+msgid "&Auto Tile"
+msgstr "&Affianca automaticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:708
+msgid "Anodine's Full Grid"
+msgstr "Griglia Piena di Anodine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:710
+msgid "Pragma's Horizontal 4-Grid"
+msgstr "4 Griglie Orizzontali di Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:712
+msgid "Pragma's Vertical 4-Grid"
+msgstr "4 Griglie Verticali di Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:714
+msgid "Pragma's Horizontal 6-Grid"
+msgstr "6 Griglie Orizzontali di Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:716
+msgid "Pragma's Vertical 6-Grid"
+msgstr "6 Griglie Verticali di Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:718
+msgid "Pragma's Horizontal 9-Grid"
+msgstr "9 Griglie Orizzontali di Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:720
+msgid "Pragma's Vertical 9-Grid"
+msgstr "9 Griglie Verticali di Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:726
+msgid "Tile Met&hod"
+msgstr "&Disposizione finestre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:729
+msgid "Expand &Vertically"
+msgstr "Espandi &verticalmente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:730
+msgid "Expand &Horizontally"
+msgstr "Espandi &orizzontalmente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:733
+msgid "Mi&nimize All"
+msgstr "Mi&nimizza tutte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_actiondrawer.cpp:64
+msgid "Script"
+msgstr "Script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:581
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:634
+msgid "Unknown"
+msgstr "Sconosciuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:128
+msgid "No topic message has been received from the server yet"
+msgstr "Nessun Topic è stato ancora ricevuto dal Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:495
+msgid "Channel topic:"
+msgstr "Topic del canale:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:513
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:201
+msgid "Set by"
+msgstr "Impostato da"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:519
+msgid "Set on"
+msgstr "Impostato "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:525
+msgid "Double-click to edit..."
+msgstr "Doppio click per modificare..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:530
+msgid "No topic is set"
+msgstr "Nessun Topic impostato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:533
+msgid "Double-click to set..."
+msgstr "Doppio click per impostare..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:587
+msgid "History"
+msgstr "Storico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:596
+msgid "Commit Changes"
+msgstr "Applica cambiamenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:602
+msgid "Discard Changes"
+msgstr "Ignora cambiamenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:627
+msgid "Copy to clipboard"
+msgstr "Copia negli appunti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:988
+msgid "There are active connections, are you sure you wish to "
+msgstr "Ci sono delle connessioni attive, sei sicuro di voler "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:989
+msgid "quit KVIrc?"
+msgstr "uscire da KVIrc?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:587
+msgid "Confirmation - KVIrc"
+msgstr "Conferma - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:557
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:590
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&Yes"
+msgstr "&Sì"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:556
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:589
+msgid "&Always"
+msgstr "S&empre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:591
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&No"
+msgstr "&No"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1090
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1106
+msgid "Show %1"
+msgstr "Mostra %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1134
+msgid "Customize..."
+msgstr "Personalizza..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:149
+#, c-format
+msgid "The file %s already exists.<br>Do you wish to overwrite it?"
+msgstr "Il file %s esiste già  <br>vuoi sovrascriverlo?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:150
+msgid "File Exists - KVIrc"
+msgstr "Il file esiste - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:132
+msgid "Channel mode"
+msgstr "Modo del Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:162
+msgid "Split View"
+msgstr "Dividi vista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:207
+msgid "User List"
+msgstr "Lista utenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:167
+msgid "Ban Editor"
+msgstr "Editor Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:172
+msgid "Ban Exception Editor"
+msgstr "Editor eccezioni Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:179
+msgid "Invite Exception Editor"
+msgstr "Editor eccezioni Inviti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:184
+msgid "Mode Editor"
+msgstr "Editor dei Modi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "said something recently"
+msgstr "ha detto qualcosa poco fa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "is talking"
+msgstr "sta parlando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:684
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:699
+msgid "and"
+msgstr "e"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "were talking recently"
+msgstr "stavano parlando poco fa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "are talking"
+msgstr "stanno parlando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:707
+msgid "and other %1 users"
+msgstr "e gli altri %1 utenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:738
+msgid "Dead channel"
+msgstr "Canale morto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:753
+msgid "operator"
+msgstr "operatore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:754
+msgid "operators"
+msgstr "operatori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active user"
+msgstr "utente attivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active users"
+msgstr "utenti attivi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot user"
+msgstr "utente molto attivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot users"
+msgstr "utenti molto attivi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owner"
+msgstr "Owner del Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owners"
+msgstr "Owners del Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrator"
+msgstr "Amministratore del Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrators"
+msgstr "Administratori del Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operator"
+msgstr "utente HalfOperator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operators"
+msgstr "utenti HalfOperator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced user"
+msgstr "utente Voice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced users"
+msgstr "utenti Voice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operator"
+msgstr "utente Operatore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operators"
+msgstr "utenti Operatori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "user total"
+msgstr "utenti totali"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "users total"
+msgstr "utenti totali"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:931
+msgid "No activity"
+msgstr "Nessuna attività "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:932
+msgid "Minimal activity"
+msgstr "Attività minima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:933
+msgid "Very low activity"
+msgstr "Attività molto bassa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Might be low activity"
+msgstr "Potrebbe esserci un'attività molto bassa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Low activity"
+msgstr "Attività bassa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Might be medium activity"
+msgstr "Potrebbe esserci un'attività media"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Medium activity"
+msgstr "Attività media"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "Might be high activity"
+msgstr "Potrebbe esserci molta attività "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "High activity"
+msgstr "Molta attività "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Might be very high activity"
+msgstr "Potrebbe esserci moltissima attività "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Very high activity"
+msgstr "Moltissima attività "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Might be flooded with messages"
+msgstr "Potrebbe esserci un Flood di messaggi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Flooded with messages"
+msgstr "Flood di messaggi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:946
+msgid "human"
+msgstr "umano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:966
+msgid "[Dead channel]"
+msgstr "[Canale morto]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1020
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1122
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:459
+msgid " on "
+msgstr " su "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1086
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %Q, no "
+"data sent to the server"
+msgstr ""
+"Il sistema di crittazione non è stato capace di cifrare il messaggio "
+"corrente (%Q): %Q, nessun dato inviato al server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1403
+msgid "Sent part request, waiting for reply..."
+msgstr "Inviata richiesta di uscita, attendo la risposta..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:610
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:647
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:293
+msgid "(Unknown)"
+msgstr "(Sconosciuto)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1484
+msgid "<b>Channel mode:</b>"
+msgstr "<b>Modo del canale:</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1498
+#, c-format
+msgid "<br><b>Key:</b> %s"
+msgstr "<br><b>Chiave:</b> %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1505
+#, c-format
+msgid "<br><b>Limit:</b> %s"
+msgstr "<br><b>Limite:</b> %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1590
+#, c-format
+msgid "Channel synchronized in %d.%d seconds"
+msgstr "Canale sincronizzato in %d.%d secondi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:139
+msgid "Choose an Image File - KVIrc"
+msgstr "Scegli un'immagine - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:284
+#, c-format
+msgid "Unloadable: %s"
+msgstr "Impossibile scaricare: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:260
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:90
+msgid "&Browse..."
+msgstr "&Sfoglia..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:364
+msgid "Choose a File - KVIrc"
+msgstr "Scegli un File - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:382
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:593
+msgid "Choose a Directory - KVIrc"
+msgstr "Scegli una Directory - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:764
+msgid "A&dd"
+msgstr "A&ggiungi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:407
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:766
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:230
+msgid "Re&move"
+msgstr "Ri&muovi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:602
+msgid "Sample Text"
+msgstr "Testo di esempio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:635
+msgid "Foreground"
+msgstr "Primo piano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:639
+msgid "Transparent"
+msgstr "Trasparente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:652
+msgid "Background"
+msgstr "Sfondo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:715
+msgid "Play"
+msgstr "Play"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:748
+msgid "Channel name"
+msgstr "Nome del Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:749
+msgid "Channel password"
+msgstr "Password del Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:177
+msgid "Toolbars"
+msgstr "Barre degli Strumenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:84
+msgid "Orientation"
+msgstr "Orientamento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:86
+msgid "Top"
+msgstr "Sopra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:87
+msgid "Left"
+msgstr "Sinistra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:88
+msgid "Right"
+msgstr "Destra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:89
+msgid "Bottom"
+msgstr "Sotto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:91
+msgid "Detached"
+msgstr "Staccato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:92
+msgid "Flat"
+msgstr "Piatto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:94
+msgid "Icon Size"
+msgstr "Dimensione icone"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:96
+msgid "Small (22x22)"
+msgstr "Piccole (22x22)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:97
+msgid "Large (32x32)"
+msgstr "Grandi (32x32)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1333
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:463
+msgid "&Apply"
+msgstr "&Applica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:830
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:113
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:251
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:319
+msgid "Close"
+msgstr "Chiudi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:102
+msgid "Channel Modes"
+msgstr "Modi del Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_debugwindow.cpp:47
+msgid "Debug Messages"
+msgstr "Messaggi di Debug"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:72
+msgid "CTCP Page - KVIrc"
+msgstr "CTCP Page - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:109
+msgid "You have been paged by"
+msgstr "Hai un messaggio da"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:75
+msgid "Mask editor - KVirc"
+msgstr "Editor per le maschere - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:79
+msgid "New mask must match an *!*@* expression"
+msgstr "La nuova maschera deve corrispondere ad una espressione *!*@* "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Ok"
+msgstr "Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:488
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:442
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:401
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Cancel"
+msgstr "Annulla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:157
+msgid "Active Bans"
+msgstr "Ban attivi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:161
+msgid "Active Invite Exceptions"
+msgstr "Eccezioni Inviti attive"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:165
+msgid "Active Ban Exceptions"
+msgstr "Eccezioni Ban attive"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:184
+msgid "Filter:"
+msgstr "Filtro:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:188
+msgid "Use doubleclick to edit item"
+msgstr "Doppio click per modificare l'elemento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:200
+msgid "Mask"
+msgstr "Maschera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:202
+msgid "Set at"
+msgstr "Impostato a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "Add"
+msgstr "Aggiungi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:92
+msgid "Cryptography/text transformation"
+msgstr "Cifratura/trasformazione del testo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:99
+msgid "Use the crypt engine"
+msgstr "Usa il sistema crittografico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:120
+msgid "Enable encryption"
+msgstr "Abilita cifratura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:123
+msgid "Encrypt key:"
+msgstr "Chiave di crittazione:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:141
+msgid "Hex"
+msgstr "Esa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:132
+msgid "Enable decryption"
+msgstr "Abilita decrittazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:135
+msgid "Decrypt key:"
+msgstr "Chiave di decifrazione:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_htmldialog.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:175
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:932
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1124
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:211
+msgid ""
+"If you dont want to encrypt a particular text line then just start it with "
+"the CTRL+P prefix"
+msgstr ""
+"Se non desideri cifrare una particolare linea di testo prefissala "
+"semplicemente con CTRL+P"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:263
+msgid "Sorry, no crypt engines available"
+msgstr "Spiacente, nessun metodo di cifratura disponibile"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:283
+msgid "Crypt: Can't create an engine instance: crypting disabled"
+msgstr "Crittografia: non posso creare un'istanza del metodo: cifratura disabilitata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:294
+#, c-format
+msgid "Crypt: Can't initialize the engine :%s"
+msgstr "Crittografia: impossibile inizializzare il sistema :%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:302
+msgid "Crypt: You have to enable encryption and/or decryption for the engine to work"
+msgstr ""
+"Crittografia: devi abilitare la cifratura e/o la decifratura affinchì il "
+"sistema funzioni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:385
+msgid "Search tools"
+msgstr "Strumenti per la ricerca"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:539
+#, c-format
+msgid "### Log session terminated at %s ###"
+msgstr "### Sessione di Log terminata il %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:713
+#, c-format
+msgid "### Log session started at %s ###"
+msgstr "### Sessione di Log avviata il %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:717
+msgid "### Existing data buffer:"
+msgstr "### Dati Buffer esistenti:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:721
+msgid "### End of existing data buffer."
+msgstr "### Fine dei dati Buffer esistenti."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3894
+msgid "Hide Find Window"
+msgstr "Nascondi finestra di Ricerca"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3896
+msgid "Show Find Window"
+msgstr "Mostra finestra di Ricerca"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3898
+msgid "Zoom In"
+msgstr "Zoom avanti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3899
+msgid "Zoom Out"
+msgstr "Zoom indietro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3900
+msgid "Choose Temporary Font..."
+msgstr "Scegli Font temporaneo..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3901
+msgid "Choose Temporary Background..."
+msgstr "Scegli sfondo temporaneo..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3902
+msgid "Reset Temporary Background"
+msgstr "Resetta sfondo temporaneo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3905
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:738
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:841
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1057
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1289
+msgid "Clear Buffer"
+msgstr "Pulisci Buffer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3939
+msgid "Choose the background image..."
+msgstr "Scegli un'immagine per lo sfondo..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+msgid "Invalid image"
+msgstr "Immagine non valida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+msgid "Failed to load the selected image"
+msgstr "Impossibile caricare l'immagine selezionata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4083
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4140
+#, c-format
+msgid "Pos %d"
+msgstr "Pos %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4156
+msgid "Not found"
+msgstr "Non trovato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4563
+msgid "Looking up host %Q..."
+msgstr "Risolvo l'Host %Q..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4926
+msgid "Double-click to open this link"
+msgstr "Doppio click per aprire questo link"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4946
+msgid "Unable to look it up hostname: Hostname appears to be masked"
+msgstr "Impossibile risolvere il nome dell'Hostname: sembra essere mascherato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4947
+msgid "Unable to look it up hostname: Unknown host"
+msgstr "Impossibile risolvere il nome dell'host: Host sconosciuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4949
+msgid "Double-click to look up this hostname<br>Right-click to view other options"
+msgstr ""
+"Doppio click per risolvere il nome dell'host<br>tasto destro per vedere le "
+"altre opzioni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4972
+msgid "Server appears to be a network hub<br>"
+msgstr "Il Server sembra essere un Hub di rete<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4973
+msgid "Unknown server<br>"
+msgstr "Server sconosciuto<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4976
+msgid "Double-click to read the MOTD<br>Right-click to view other options"
+msgstr "Doppio click per leggere il MOTD<br>tasto destro per vedere le altre opzioni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4989
+msgid "Double-click to set<br>"
+msgstr "Doppio click per impostare<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5011
+msgid "You're not an operator: You may not change channel modes"
+msgstr "Non sei operatore: non puoi cambiare i Modi nel Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5028
+msgid "Nothing known about %Q"
+msgstr "Niente di conosciuto su %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5029
+msgid "Nothing known about %Q (no connection)"
+msgstr "Niente di conosciuto su %Q (nessuna connessione)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5054
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>): "
+"<br><nowrap>+%Q (%u users)<hr>%Q</nowrap>"
+msgstr ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>): "
+"<br><nowrap>+%Q (%u utenti)<hr>%Q</nowrap>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5060
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)<hr>Double-"
+"click to join %Q<br>Right click to view other options"
+msgstr ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)<hr>Doppio "
+"click per entrare in %Q<br>Tasto destro per vedere le altre opzioni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5080
+msgid "<b>Double-click:</b><br>%Q"
+msgstr "<b>Doppio click:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5085
+msgid "<b>Middle-click:</b><br>%Q"
+msgstr "<b>Tasto centrale:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5090
+msgid "<b>Right-click:</b><br>%Q"
+msgstr "<b>Tasto destro:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1284
+msgid "Joined on <b>%1</b>"
+msgstr "Entrato il <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1296
+msgid "Quiet for <b>%1h %2m %3s</b>"
+msgstr "In silenzio per <b>%1h %2m %3s</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1097
+msgid "No connection"
+msgstr "Nessuna connessione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:304
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:3
+msgid "IRC Context"
+msgstr "Contesto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:319
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:365
+#, c-format
+msgid "Lag: %d.%d%d"
+msgstr "Lag: %d.%d%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:393
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:379
+msgid "Lag: ?.??"
+msgstr "Lag: ?.??"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:326
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:637
+msgid "No IRC context"
+msgstr "Nessun Contesto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:633
+msgid "Not connected"
+msgstr "Non connesso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:377
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1117
+msgid "away"
+msgstr "away"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:397
+msgid "In progress..."
+msgstr "In corso..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:458
+msgid "Crypting"
+msgstr "Crittografia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:466
+msgid "Private Text Encoding"
+msgstr "Codifica testo privato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:566
+msgid "Ops...I've accidentally lost the crypting engine..."
+msgstr "Ops... ho accidentalmente perso il sistema di crittazione..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:582
+msgid "List of window types available in this release of KVIrc:"
+msgstr "Lista dei tipi di finestre disponibili in questa versione di KVIrc:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:763
+msgid "Use Default Encoding"
+msgstr "Usa Codifica predefinita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:775
+msgid "Standard"
+msgstr "Standard"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:776
+msgid "Smart (Send Local)"
+msgstr "Intelligente (Invia UTF-8)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:777
+msgid "Smart (Send UTF-8)"
+msgstr "Intelligente (Invia UTF-8)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:810
+msgid "&Undock"
+msgstr "&Sgancia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:813
+msgid "&Dock"
+msgstr "&Aggancia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:818
+msgid "Mi&nimize"
+msgstr "Mi&nimizza"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:821
+msgid "Ma&ximize"
+msgstr "&Massimizza"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:824
+msgid "&Restore"
+msgstr "&Ripristina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:837
+msgid "Text &Encoding"
+msgstr "Codifica t&esto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:842
+msgid "Sa&ve Window Properties"
+msgstr "Sal&va le proprietà della finestra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:86
+msgid "Taskbar"
+msgstr "Taskbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:91
+msgid "taskbar"
+msgstr "Taskbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1162
+msgid "Sort"
+msgstr "Ordina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1163
+msgid "Reverse Sort"
+msgstr "Ordina al contrario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1223
+msgid "Window List"
+msgstr "Lista delle finestre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:203
+msgid "Apply to all IRC Contexts"
+msgstr "Applica a tutti i contesti IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:227
+msgid "Away Indicator"
+msgstr "Indicatore di Away"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:255
+msgid "Away since"
+msgstr "Away da"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:259
+msgid "Double click to leave away mode"
+msgstr "Doppio click per uscire dalla modalità Away"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:261
+msgid "Not away"
+msgstr "Non Away"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:263
+msgid "Double click to enter away mode"
+msgstr "Doppio click per entrare in modalità Away"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:330
+#, c-format
+msgid "Last checked %d mins %d secs ago"
+msgstr "Ultimo controllo %d min %d sec fa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:332
+msgid "Lag measure not available yet"
+msgstr "Misurazione Lag non ancora disponibile"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:336
+msgid "Lag meter engine disabled"
+msgstr "Misuratore Lag disabilitato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:338
+msgid "Double click to enable it"
+msgstr "Doppio click per abilitarlo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:391
+msgid "Lag Indicator"
+msgstr "Indicatore Lag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:461
+msgid "Simple Clock"
+msgstr "Orologio semplice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:512
+msgid "Show total connection time"
+msgstr "Mostra il tempo totale di connessione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:536
+msgid "Connection Timer"
+msgstr "Timer connessione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:560
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:87
+msgid "Separator"
+msgstr "Separatore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:820
+msgid "Clipboard"
+msgstr "Appunti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line break"
+msgstr "riga"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line breaks"
+msgstr "righe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:845
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:439
+msgid "Cu&t"
+msgstr "&Taglia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:847
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:445
+msgid "&Copy"
+msgstr "&Copia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:849
+msgid "&Paste"
+msgstr "&Incolla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:851
+msgid "Paste (Slowly)"
+msgstr "Incolla (una riga per volta)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:856
+msgid "Paste &File"
+msgstr "Incolla file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:863
+msgid "Stop Paste"
+msgstr "Interrompi incolla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:865
+msgid "Clear"
+msgstr "Pulisci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:868
+msgid "Select All"
+msgstr "Seleziona tutto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:897
+msgid "Insert Icon"
+msgstr "Inserisci Icona"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1926
+msgid "%d matches: %Q"
+msgstr "%d corrispondenze: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1930
+msgid "No matches"
+msgstr "Nessuna corrispondenza"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2657
+msgid "Show History<br>&lt;Ctrl+PageUp&gt;"
+msgstr "Mostra Cronologia<br>&lt;Ctrl+PagS&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2648
+msgid "Input History Disabled"
+msgstr "Cronologia Input disabilitata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2370
+msgid "Show Icons Popup<br>&lt;Ctrl+I&gt;<br>See also /help texticons"
+msgstr "Mostra Popup icone<br>&lt;Ctrl+I&gt;<br>vedi anche /help texticons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2382
+msgid "User friendly commandline mode<br>See also /help commandline"
+msgstr "Modalità  linea di comando User Friendly<br>vedi anche /help commandline"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2394
+msgid "Multi-line Editor<br>&lt;Alt+Backspace&gt;"
+msgstr "Editor multilinea<br>&lt;Alt+Backspace&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2498
+msgid "Confirm Multiline Message"
+msgstr "Conferma messaggio multilinea"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2499
+msgid ""
+"You're about to send a message with %1 lines of text.<br><br>There is "
+"nothing wrong with it, this warning is<br>here to prevent you from "
+"accidentally sending<br>a really large message just because you didn't edit "
+"it<br>properly after pasting text from the clipboard.<br><br>Do you want the "
+"message to be sent?"
+msgstr ""
+"Stai per inviare un messaggio contenente %1 linee di testo.<br><br>Non c'è "
+"niente di sbagliato, questo avviso è qui per prevenire che tu invii "
+"accidentalmente<br>un messaggio molto lungo solo perchì non hai modificato "
+"propriamente il testo dopo averlo incollato dagli appunti.<br><br>Vuoi che "
+"il messaggio sia inviato?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2505
+msgid "Yes, always"
+msgstr "Sì sempre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2506
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:399
+msgid "Yes"
+msgstr "Sì"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:806
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:375
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:400
+msgid "No"
+msgstr "No"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2556
+msgid "<Ctrl+Return>; submits, <Alt+Backspace>; hides this editor"
+msgstr "<Ctrl+Invio>; invia, <Alt+Backspace>; nasconde questo editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:126
+msgid "Address:"
+msgstr "Indirizzo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:140
+msgid "Current IRC URI"
+msgstr "URI IRC corrente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:156
+msgid "Notify List"
+msgstr "Notify List"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:263
+msgid "Part All Channels"
+msgstr "Esci da tutti i Canali"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:265
+msgid "Close All Queries"
+msgstr "Chiudi tutte le Query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:270
+msgid "Unhighlight All Windows"
+msgstr "Elimina segnalazione di tutte le Finestre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:273
+msgid "Unhighlight All Channels"
+msgstr "Elimina segnalazione di tutti i Canali"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:275
+msgid "Unhighlight All Queries"
+msgstr "Elimina segnalazione di tutte le Query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:387
+msgid "Gender:"
+msgstr "Sesso:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:394
+msgid "Male"
+msgstr "Maschio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:393
+msgid "Female"
+msgstr "Femmina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:375
+msgid "Registered as"
+msgstr "Registrato come"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:381
+msgid "(Matched by"
+msgstr "(Corrispondenza da"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:393
+msgid "On <b>"
+msgstr "Su <b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:402
+msgid "Using server <b>%1</b>"
+msgstr "Uso il Server <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:407
+msgid "%1 hops"
+msgstr "%1 hops"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:417
+msgid "Probably Away"
+msgstr "Probabilmente in stato di Away"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:493
+msgid ""
+"KVIrc can accept only irc://, irc6://, ircs:// or irc6s:// URL's\n"
+"Your URL is invalid. Check spelling and try again"
+msgstr ""
+"KVIrc può accettare solo URL di tipo irc://, irc6://, ircs:// o irc6s://\n"
+"Il tuo URL è invalido. Controllalo e riprova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:554
+msgid ""
+"You have just attempted to close a console window with an active connection "
+"inside.\n"
+"Are you sure you wish to terminate the connection?"
+msgstr ""
+"Hai appena tentato di chiudere una Console associata ad una Connessione "
+"attiva.\n"
+"Sei sicuro di voler terminare la connessione?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:588
+msgid ""
+"You have just attempted to close the last console window.\n"
+"Are you sure you wish to quit KVIrc?"
+msgstr ""
+"Hai tentato di chiudere l'ultima finestra di console.\n"
+"Sei sicuro di voler uscire da KVIrc?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1019
+msgid "Failed to load avatar with name \"%Q\" and local path \"%Q\""
+msgstr "Impossibile caricare l'Avatar con nome \"%Q\" e percorso \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:624
+msgid "Connection in progress..."
+msgstr "Connessione in corso..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1099
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:630
+msgid "Login in progress..."
+msgstr "Login in corso..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1179
+msgid "channel"
+msgstr "canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1180
+msgid "channels"
+msgstr "canali"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1181
+msgid "query"
+msgstr "query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1182
+msgid "queries"
+msgstr "query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1238
+msgid "Connected since"
+msgstr "Connesso da"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1252
+msgid "Online for"
+msgstr "Online per"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1264
+msgid "Server idle for"
+msgstr "Server inattivo per"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:50
+msgid "This option is also available as"
+msgstr "Questa opzione è anche disponibile come"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:683
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:275
+msgid "Advanced..."
+msgstr "Avanzate..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:69
+msgid "Scri&pting"
+msgstr "Scri&pting"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:74
+msgid "&Tools"
+msgstr "S&trumenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:81
+msgid "&Settings"
+msgstr "Impo&stazioni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:83
+msgid "&Window"
+msgstr "&Finestre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:125
+msgid "&Help"
+msgstr "A&iuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:119
+msgid "&Help Browser (Panel)"
+msgstr "Browser &Help (Pannello)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:121
+msgid "Help Browser (&Window)"
+msgstr "Browser Help (&Finestra)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:124
+msgid "&Tip of the Day"
+msgstr "&Lo sapevi che..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:127
+msgid "About &KVIrc"
+msgstr "Su &KVIrc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:130
+msgid "KVIrc Home&page"
+msgstr "KVIrc Home&page"
+
+# io leverei la stringa anche dall'originale..
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:134
+msgid "KVIrc Russian Home&page"
+msgstr "KVIrc Home&page russa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:139
+msgid "KVIrc French Home&page"
+msgstr "KVIrc Home&page francese"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:143
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:339
+msgid "Subscribe to the Mailing List"
+msgstr "Iscriviti alla Mailing List"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:145
+msgid "Report a Bug / Propose Improvements"
+msgstr "Segnala un Bug / Proponi una miglioria"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:148
+msgid "Join KVIrc International Channel on Freenode"
+msgstr "Entra nel Canale Internazionale di KVIrc su Freenode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:150
+msgid "Join KVIrc International Channel on IRCNet"
+msgstr "Entra nel Canale Internazionale di KVIrc su IRCNet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:155
+msgid "Join KVIrc Italian Channel on AzzurraNet"
+msgstr "Entra nel Canale Italiano di KVIrc su AzzurraNet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:161
+msgid "Join KVIrc French Channel on Freenode"
+msgstr "Entra nel Canale Francese di KVIrc su Freenode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:164
+msgid "Join KVIrc French Channel on EuropNet"
+msgstr "Entra nel Canale Francese di KVIrc su EuropNet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:179
+msgid "Show StatusBar"
+msgstr "Mostra la Barra di Stato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:194
+msgid "&Save Configuration"
+msgstr "&Salva configurazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:213
+msgid "Restore &Default Script"
+msgstr "Ripristina Script pre&definiti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:630
+msgid "Disconnect"
+msgstr "Disconnetti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:228
+msgid "New &Connection To"
+msgstr "Nuova &Connessione a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:234
+msgid "Hide &Dock Icon"
+msgstr "Nascondi &Icona nel pannello"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:237
+msgid "Show &Dock Icon"
+msgstr "Mostra &Icona nel pannello"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:111
+msgid "&Quit"
+msgstr "&Esci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:265
+msgid "&Other..."
+msgstr "&Altro..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:305
+msgid "Show &Icon Table"
+msgstr "Mostra Tabella delle &Icone"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:308
+msgid "Open &Terminal"
+msgstr "Apri &Terminale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:308
+msgid ""
+"<b>Shift+Drag</b> or <b>Ctrl+Drag</b> to move the applet around<br><b>Right "
+"click</b> to see the other options"
+msgstr ""
+"<b>Shift+Trascina</b> o <b>CTRL+Trascina</b> per muovere "
+"l'Applet<br><b>tasto destro</b> per vedere le altre opzioni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:313
+msgid "<b>Right click</b> to add/remove applets"
+msgstr "<b>Tasto destro</b> per aggiungere/rimuovere le Applet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:353
+msgid "Remove %Q"
+msgstr "Rimuovi %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:365
+msgid "Add Applet"
+msgstr "Aggiungi Applet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:404
+msgid ""
+"Drag the applet while holding the Shift or Ctrl key to move it to the "
+"desired position"
+msgstr ""
+"Trascina l'Applet mentre tieni premuto il tasto Shift o CTRL per spostarla "
+"nella posizione desiderata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:93
+msgid "<b><font color=\"#EAEAEA\" size=\"-1\">Find Text</font></b>"
+msgstr "<b><font color=\"#EAEAEA\" size=\"-1\">Trova testo</font></b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:118
+msgid "&Regular expression"
+msgstr "Espressione &regolare"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:121
+msgid "E&xtended regexp."
+msgstr "Regexp e&stesa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:126
+msgid "C&ase sensitive"
+msgstr "C&ase sensitive"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:129
+msgid "Find &Prev."
+msgstr "Trova &precedente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:133
+msgid "&Find Next"
+msgstr "Trova &successivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:880
+msgid "Find"
+msgstr "Trova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:214
+msgid "Type"
+msgstr "Tipo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:166
+msgid "Set &All"
+msgstr "Seleziona &tutto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:170
+msgid "Set &None"
+msgstr "&Nessuna selezione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:174
+msgid "&Load From..."
+msgstr "Carica &da..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:178
+msgid "&Save As..."
+msgstr "Salva &come..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:182
+msgid "Filter"
+msgstr "Filtro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:234
+msgid "Select a Filter File"
+msgstr "Seleziona un file di Filtro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:251
+#, c-format
+msgid "Can't open the filter file %s for reading."
+msgstr "Impossibile leggere dal file del Filtro %s."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:261
+msgid "Select a Name for the Filter File"
+msgstr "Seleziona un Nome per il file del Filtro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:272
+msgid "Failed to write the filter file %Q (IO Error)"
+msgstr "Impossibile scrivere sul file del Filtro %Q (Errore I/O)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:274
+msgid "Can't open the filter file %Q for writing"
+msgstr "Impossibile aprire il file del filtro %Q in scrittura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:109
+msgid "Choose image ..."
+msgstr "Scegli un'immagine..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:122
+msgid "Builtin images"
+msgstr "Immagini predefinite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:131
+msgid "Small icons"
+msgstr "Icone piccole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:138
+msgid "Full path"
+msgstr "Percorso completo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:241
+msgid "Builtin $icon(%Q) [index %d]"
+msgstr "Builtin $icon(%Q) [indice %d]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:274
+msgid "directory"
+msgstr "directory"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:300
+msgid "pixels"
+msgstr "pixels"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:305
+msgid "bytes"
+msgstr "bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:98
+msgid "Show User List"
+msgstr "Mostra Lista Utenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:105
+msgid "Query Targets"
+msgstr "Destinatari Query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:165
+msgid "Query target:"
+msgstr "Destinatario Query:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:170
+msgid "%1 is %2 (%3)"
+msgstr "%1 è %2 (%3)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:172
+msgid "%1 is %2"
+msgstr "%1 è %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:186
+msgid "%1 is using irc server: %2 (%3 hops)"
+msgstr "%1 sta usando il Server: %2 (%3 hop)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:188
+msgid "%1 is using irc server: %2"
+msgstr "%1 sta usando il Server: %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:195
+msgid "%1 is probably away"
+msgstr "%1 probabilmente è Away"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:200
+msgid "Common channels with %1: %2"
+msgstr "Canali in comune con %1: %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:254
+msgid "[Dead Query]"
+msgstr "[Query terminata]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:240
+msgid "Query with %1!%2 (%3)"
+msgstr "Query con %1!%2 (%3)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:242
+msgid "Query with %1!%2"
+msgstr "Query con %1!%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:244
+msgid ", using server %1"
+msgstr ", sta usando il server %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:246
+msgid " (%1 hops)"
+msgstr "(%1 hops)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:248
+msgid ", probably away"
+msgstr ", probabilmente Away"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:252
+msgid "Common channels: %2"
+msgstr "Canali in comune: %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:320
+msgid ""
+"The target of this query has changed from \r!n\r%Q\r [%Q@\r!h\r%Q\r] to \r!n"
+"\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr ""
+"Il destinarario di questa query è cambiato da \r!n\r%Q\r [%Q@\r!h\r%Q\r] a "
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:389
+msgid "Common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Canali in comune con \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:392
+msgid "No common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "Nessun Canale in comune per \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:428
+msgid "[Dead query]"
+msgstr "[Query terminata]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:578
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:645
+msgid "This query has no active targets, no message sent"
+msgstr "Questa Query non ha nessun destinatario attivo, nessun messaggio inviato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:617
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %s, no "
+"data sent to the server"
+msgstr ""
+"Il sistema di crittazione non è stato capace di cifrare il messaggio "
+"corrente (%Q): %s, nessun dato inviato al Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashcount.cpp:74
+msgid ""
+"The argument of the hash count '#' operator didn't evaluate to a hash: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+"L'argomento dell'operatore contatore hash '#' non è un hash: fornita "
+"conversione automatica dal tipo '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:100
+msgid "DNS Lookup result for query \"%Q\""
+msgstr "Risultato della richiesta DNS \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:105
+msgid "Error: %Q"
+msgstr "Errore: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:110
+msgid "Hostname %d: %Q"
+msgstr "Nome Host %d: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:116
+msgid "IP address %d: %Q"
+msgstr "Indirizzo IP %d: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:870
+msgid ""
+"Broken slot '%Q' in target object '%Q::%Q' while emitting signal '%Q' from "
+"object '%Q::%Q': disconnecting"
+msgstr ""
+"Slot '%Q' non corretto nell'Oggetto di destinazione '%Q::%Q' durante "
+"l'emissione del segnale '%Q' dall'Oggetto '%Q::%Q': disconnetto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:888
+msgid "Slot target object destroyed while emitting signal '%Q' from object '%Q::%Q'"
+msgstr ""
+"Slot dell'Oggetto di destinazione distrutto durante l'emissione del segnale "
+"'%Q' dall'Oggetto '%Q::%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1040
+msgid "Listing Qt properties for object named \"%Q\" of KVS class %Q"
+msgstr "Elenco proprietà  Qt per l'Oggetto di nome \"%Q\" della Classe KVS %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1046
+#, c-format
+msgid "Properties for Qt class %s"
+msgstr "Proprietà  della Classe Qt %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1071
+msgid "Property: %c%Q%c, type %Q"
+msgstr "Proprietà  %c%Q%c, tipo %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1131
+#, c-format
+msgid "%d properties listed"
+msgstr "%d proprietà  elencate"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1151
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1380
+msgid "The object named \"%Q\" of class %Q has no Qt properties"
+msgstr "L'oggetto di nome \"%Q\" della classe %Q non ha proprietà  Qt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1396
+msgid "No Qt property named \"%Q\" for object named \"%Q\" of class %Q"
+msgstr ""
+"Nessuna proprietà  Qt di nome \"%Q\" per l'oggetto di nome \"%Q\" della "
+"classe %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1409
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed but it doesn't really exist"
+msgstr ""
+"Impossibile trovare la proprietà  \"%Q\" dell'oggetto di nome \"%Q\" della "
+"classe %Q: la proprietà  è elencata ma non è in realtà  non esiste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1417
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed and defined but the returned variant is not valid"
+msgstr ""
+"Impossibile trovare la proprietà  \"%Q\" dell'oggetto di nome \"%Q\" della "
+"classe %Q: la proprietà  elencata è indicizzata e definita ma il valore di "
+"ritorno non è valido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1200
+#, c-format
+msgid ""
+"The property is of type %s but the supplied argument can't be converted to "
+"that type (expecting \"%s\")"
+msgstr ""
+"La proprietà  di tipo %s ma l'argomento passato non puಠessere convertito a "
+"quel tipo (atteso \"%s\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1331
+msgid ""
+"A pixmap object, an image_id or an image file path is required for this "
+"property"
+msgstr ""
+"Un Oggetto Pixmap, un image_id o il percorso ad un'immagine è richiesto per "
+"questa proprietà "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1352
+msgid "Can't find the requested image"
+msgstr "Impossibile trovare l'immagine richiesta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1512
+msgid ""
+"Property \"%Q\" for object named \"%Q\" of class %Q has an unsupported data "
+"type"
+msgstr ""
+"La proprietà  \"%Q\" per l'Oggetto di nome \"%Q\" della Classe %Q ha un tipo "
+"di dato non supportato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1659
+msgid "Cannot find object function $%Q for object named \"%Q\" of class %Q"
+msgstr ""
+"Impossibile trovare la funzione $%Q per l'Oggetto di nome \"%Q\" della "
+"Classe %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1661
+msgid "Cannot find object function $%Q::%Q for object named \"%Q\" of class %Q"
+msgstr ""
+"Impossibile trovare la funzione $%Q::%Q dell'Oggetto di nome \"%Q\" della "
+"Classe %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1669
+msgid ""
+"Cannot call internal object function $%Q (for object named \"%Q\" of class %"
+"Q) from this context"
+msgstr ""
+"Impossibile eseguire la chiamata alla funzione interna dell'Oggetto $%Q (per "
+"l'Oggetto di nome \"%Q\" della Classe %Q) da questo contesto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:69
+msgid "Stray dot ('.') character or invalid following module command name"
+msgstr "Carattere punto ('.') indefinito o nome comando del modulo non valido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:70
+msgid "Syntax error: malformed module command identifier"
+msgstr "Errore di sintassi: identificatore del comando del modulo maldefinito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:188
+msgid "Stray '::' sequence or invalid following alias name"
+msgstr "Sequenza '::' indefinita o Alias del modulo non valido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:95
+msgid "Syntax error: malformed alias identifier"
+msgstr "Errore di sintassi: identificatore di Alias maldefinito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:102
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:196
+msgid "Stray ':' character: did you mean '...<namespace>::<alias_name>' ?"
+msgstr "Carattere ':' indefinito: intendi '...<namespace>::<alias_name>' ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:103
+msgid "Syntax error: malformed (alias?) command identifier"
+msgstr "Errore di sintassi: identificatore (Alias?) del comando maldefinito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:280
+msgid "Unknown callback command \"%Q\""
+msgstr "Comando di richiamata sconosciuto \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:465
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:44
+msgid "The current window is not a channel"
+msgstr "La finestra corrente non è un canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:532
+msgid ""
+"Timer name omitted but there is not current timer (this is not a timer "
+"callback)"
+msgstr ""
+"Nome timer omesso ma non esiste un timer corrente (questa non è la "
+"richiamata di un timer)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:538
+msgid "Can't kill the timer '%Q' since it is not running"
+msgstr "Non posso terminare il timer '%Q' poichì non è in esecuzione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:626
+msgid "List of active timers"
+msgstr "Lista dei timer attivi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:637
+msgid "Persistent"
+msgstr "Persistente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:640
+msgid "WindowLifetime"
+msgstr "Durata della Finestra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:643
+msgid "SingleShot"
+msgstr "Colpo Singolo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:652
+msgid "None"
+msgstr "Nessuno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:663
+#, c-format
+msgid "Total: %u timers running"
+msgstr "Totale: %u timer in esecuzione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:849
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:872
+msgid "Found character '%q' (unicode %x) where a slash '/' was expected"
+msgstr "Trovato un carattere '%q' (unicode %x) dove era attesa uno slash '/'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:842
+msgid ""
+"Unexpected end of command in binding operation, at least two slashes are "
+"missing"
+msgstr ""
+"Inattesa fine del comando durante l'operazione di binding, almeno due "
+"'slash' mancanti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:865
+msgid "Unexpected end of command in binding operation, at least one slash is missing"
+msgstr ""
+"Inattesa fine del comando durante l'operazione di binding, almeno uno "
+"'slash' mancante"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:905
+msgid "Unknown binding operation '%Q'"
+msgstr "Operazione di binding sconosciuta '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:926
+msgid "Missing right side operand for the binding operator '=~'"
+msgstr "Operando destro mancante per l'operazione '=~'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:948
+msgid "Trailing garbage ignored after operator '++'"
+msgstr "Stralci di caratteri spazzatura ignorati dopo l'operatore '++'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:960
+msgid "Missing right operand for operator '+='"
+msgstr "Operando destro mancante per l'operatore '+='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:979
+msgid "Trailing garbage ignored after operator '--'"
+msgstr "Stralci di caratteri spazzatura ignorati dopo l'operatore '--'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:986
+msgid ""
+"This looks a lot like an object handle dereferencing operator '->' but in "
+"fact it isn't. Maybe you forgot a '$' just after ?"
+msgstr ""
+"Gestore di Oggetto atto a deferenziare l'operatore '->' non lo è. Forse hai "
+"dimenticato un '$' subito dopo?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:994
+msgid "Missing right operand for operator '-='"
+msgstr "Operando destro mancante per l'operatore '-='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1015
+msgid "Missing right operand for operator '<<='"
+msgstr "Operando destro mancante per l'operatore '<<='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1025
+msgid "Missing right operand for operator '<<'"
+msgstr "Operando destro mancante per l'operatore '<<'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1039
+msgid "Missing right operand for operator '<,'"
+msgstr "Operando destro mancante per l'operatore '<,'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1053
+msgid "Missing right operand for operator '<+'"
+msgstr "Operando destro mancante per l'operatore '<+'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1075
+msgid "Missing right operand for operator '>>='"
+msgstr "Operando destro mancante per l'operatore '>>='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1094
+msgid "Missing right operand for operator '.='"
+msgstr "Operando destro mancante per l'operatore '.='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1113
+msgid "Missing right operand for operator '"
+msgstr "Operando destro mancante per l'operatore '"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:72
+msgid "Unknown operator"
+msgstr "Operatore sconosciuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1178
+msgid "Unexpected (and senseless) read-only data evaluation"
+msgstr "Inattesa valutazione di dati in sola lettura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1180
+msgid "Syntax error: confused by earlier errors: bailing out"
+msgstr "Errore di sintassi: troppi errori precedenti - rischio elevato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1160
+msgid "Unexpected end of script after a variable reference: expected operator"
+msgstr ""
+"Inattesa fine dello Script dopo il riferimento ad una variabile: atteso un "
+"operatore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1176
+msgid ""
+"Unexpected character '%q' (unicode %x) after a void function call: end of "
+"instruction expected"
+msgstr ""
+"Carattere inatteso '%q' (unicode %x) dopo una chiamata ad una funzione "
+"'void': attesa fine dell'istruzione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1179
+msgid "Unexpected character '%q' (unicode %x)"
+msgstr "Carattere inatteso '%q' (unicode %x)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:96
+msgid "/me can be used only in channels, queries and DCC chat windows"
+msgstr ""
+"/me può essere usato solo nei Canali, nelle Query e nelle finestre di DCC "
+"Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:385
+msgid "Invalid IRC url (%Q)"
+msgstr "Url IRC non valido (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:410
+msgid "The commandline for this url type seems to be broken (%Q)"
+msgstr "La linea di comando per questo tipo di Url sembra non funzionare (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:412
+msgid "No commandline specified for this type of url (%Q)"
+msgstr "Nessuna linea di comando specificata per questo tipo di Url (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:512
+msgid "Option setting error: Unknown option or invalid value for option type"
+msgstr ""
+"Settaggio delle opzioni fallito: opzione sconosciuta o valore non valido per "
+"il tipo di opzione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:606
+msgid "Choose a file to parse"
+msgstr "Scegli un file da utilizzare"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:639
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:643
+msgid "Failed to load the file '%Q' for parsing"
+msgstr "Fallito il caricamento del file '%Q' da utilizzare"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:715
+msgid "Missing channel list"
+msgstr "Manca la Lista dei Canali"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:753
+#, c-format
+msgid "You don't appear to be on channel %s"
+msgstr "Non sei nel Canale %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:802
+msgid "Module command call failed: can't load the module 'snd'"
+msgstr "Chiamata al comando del modulo fallita: impossibile caricare il modulo 'snd'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:809
+msgid ""
+"Module command call failed: the module 'snd' doesn't export a command named "
+"'play'"
+msgstr ""
+"Chiamata al comando del modulo fallita: il modulo 'snd' non esporta un "
+"comando chiamato 'play'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:864
+msgid "Popup %Q is not defined"
+msgstr "Il popup %Q non è definito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:872
+msgid "A popup menu cannot be popped up twice"
+msgstr "Un menu popup non può essere mostrato due volte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:897
+msgid "Invalid syntax for screen coordinates, using cursor position"
+msgstr ""
+"Sintassi non valida per le coordinate dello schermo, uso la posizione del "
+"cursore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1011
+msgid "Empty target specified"
+msgstr "La destinazione specificata è vuota"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:97
+msgid "[RAW]: %Q"
+msgstr "[RAW]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1237
+msgid "Window with id %Q not found: no rebinding performed"
+msgstr "Finestra con ID %Q non trovata: rebind non eseguito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1330
+msgid "Failed to execute command '%Q'"
+msgstr "Esecuzione del comando '%Q' fallita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:242
+msgid "Missing alias name"
+msgstr "Nome dell'Alias mancante"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:253
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:889
+msgid ""
+"Alias names can contain only letters, digits, underscores and '::' namespace "
+"separators"
+msgstr ""
+"I nomi degli Alias posso contenere solo lettere, numeri, underscore e "
+"separatori di Namespace '::'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:903
+msgid "Stray ':' character in alias name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+"Carattere ':' disperso nel nome dell'Alias: forse intendevi... <namespace>::"
+"<nome>?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:914
+msgid "Found an empty namespace in alias name"
+msgstr "Trovato un Namespace vuoto nel nome dell'Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:277
+msgid "The alias %Q is not existing"
+msgstr "L'Alias %Q non esiste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:436
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:413
+msgid "The specified window has no button containers"
+msgstr "La finestra specificata non ha un contenitore per i pulsanti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:447
+msgid "Window button '%Q' not found"
+msgstr "Pulsante '%Q' della finestra non trovato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:445
+msgid "Can't find the icon '%Q'"
+msgstr "Impossibile trovare l'icona '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:532
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:540
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1197
+msgid "No such event (%Q)"
+msgstr "Evento inesistente (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:552
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1222
+msgid "No handler '%Q' for raw numeric event '%d'"
+msgstr "Nessun gestore '%Q' per l'Evento RAW numerico '%d'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1248
+msgid "No handler '%Q' for event '%Q'"
+msgstr "Nessun gestore '%Q' per l'Evento '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:936
+msgid "The specified ping time is invalid: assuming zero (no ping)"
+msgstr "Il tempo del PING specificato non è valido: prendo zero (nessun PING)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:946
+msgid "The specified maximum run time is invalid: assuming zero (infinite)"
+msgstr "Il tempo massimo di esecuzione non è valido: presumo 0 (infinito)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:965
+msgid "Failed to start the process"
+msgstr "Fallito nell'avviare il processo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1010
+msgid "The specified object does not exist"
+msgstr "L'Oggetto specificato non esiste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1113
+msgid "Missing timer name"
+msgstr "Manca il nome del Timer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1122
+msgid "Missing timeout delay"
+msgstr "Manca il tempo di scadenza"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1129
+msgid "The timeout delay didn't evaluate to an integer"
+msgstr "Il tempo di scadenza non è un numero intero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1152
+msgid "Unable to add the timer: insufficient system resources"
+msgstr "Non posso aggiungere il Timer: risorse di sistema insufficenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_eventmanager.cpp:503
+msgid "Event handler %Q is broken: disabling"
+msgstr "Il gestore dell'Evento %Q non è valido: disabilitato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_moduleinterface.cpp:166
+msgid "Can't unload the module: it has locked itself in memory"
+msgstr "Impossibile scaricare il modulo: bloccato in memoria"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:123
+msgid "Unknown binary operator '=%q': did you mean '==' ?"
+msgstr "Operatore binario sconosciuto '=%q': intendevi '==' ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:221
+msgid "Unknown binary operator '%q'"
+msgstr "Operatore binario sconosciuto '%q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:305
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:371
+msgid "Unexpected end of script in expression"
+msgstr "Fine inaspettata dello script nell'espressione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:451
+msgid ""
+"Unexpected character %q (unicode %h) in expression. If it meant to be a "
+"string use the quotes."
+msgstr ""
+"Carattere inaspettato %q (unicode %h) nell'espressione: se è una stringa usa "
+"gli apici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:466
+msgid "Unexpected empty expression operand"
+msgstr "Operando di espressione vuoto insaspettato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:91
+msgid "say: injected commandline"
+msgstr "say: linea di comando introdotta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:94
+msgid "Say parse error: Broken command"
+msgstr "Errore Parser Say: comando spezzato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:250
+msgid "Couldn't find a suitable IRC context for the connection, try using -n or -u"
+msgstr ""
+"Impossibile trovare un Contesto IRC utilizzabile per la connessione, prova "
+"usando i parametri -n o -u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:259
+msgid "Another connection is already in progress in the selected IRC context"
+msgstr "Un'altra connessione è già  in corso nel Contesto IRC selezionato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:369
+msgid "No menu bar item with text '%Q'"
+msgstr "Nessun elemento della barra del menu con testo '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:383
+msgid "Invalid index specified: ignored"
+msgstr "Indice specificato non valido: ignorato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:392
+msgid "The popup '%Q' is not defined"
+msgstr "Il popup '%Q' non è definito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:604
+msgid "No target channel specified and the current window is not a channel"
+msgstr "Nessun canale specificato e la finestra corrente non è un canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:705
+msgid "No catalogue %Q for the current language found"
+msgstr "Nessun catalogo %Q trovato per il linguaggio corrente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:744
+msgid "The catalogue %Q was not loaded"
+msgstr "Il catalogo %Q non è stato caricato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:80
+msgid ""
+"Empty window identifier specified in the standard rebinding switch: no "
+"rebinding performed"
+msgstr ""
+"Identificatore di finestra vuoto specificato nello switch di rebind: nessun "
+"rebind eseguito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:91
+msgid ""
+"Invalid window specified in the standard rebinding switch: no rebinding "
+"performed"
+msgstr ""
+"Identificatore di finestra invalido nello switch di rebind:nessun rebind "
+"eseguito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:94
+msgid "The left side of the scope operator didn't evaluate as an object reference"
+msgstr ""
+"Il membro sinistro dell'operatore di visibilità  non è un riferimento ad un "
+"Oggetto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:100
+msgid "The left side of the scope operator evaluated to a null object reference"
+msgstr ""
+"Il membro sinistro dell'operatore di visibilità  è un riferimento ad un "
+"Oggetto nullo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:107
+msgid ""
+"The left side of the scope operator evaluated to an invalid object reference "
+"(object doesn't exist)"
+msgstr ""
+"Il membro sinistro dell'operatore di visibilità  è un riferimento ad un "
+"Oggetto non valido (l'Oggetto non esiste)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayreferenceassert.cpp:77
+msgid "Array reference assert failed: the variable evaluated to type '%Q'"
+msgstr "Riferimento all'array fallito: la variabile è di tipo '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:247
+msgid "Operand of unary operator didn't evaluate to a number"
+msgstr "L'operando dell'operatore unario non è un numero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:415
+msgid "Left operand didn't evaluate to a number"
+msgstr "L'operando sinistro non è un numero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:422
+msgid "Right operand didn't evaluate to a number"
+msgstr "L'operando destro non è un numero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:547
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:575
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:583
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:374
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:66
+msgid "Division by zero"
+msgstr "Divisione per zero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:107
+#, c-format
+msgid "line %d, near character %d"
+msgstr "linea %d , vicino al carattere %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:187
+msgid "This command can be used only in windows bound to an IRC context"
+msgstr "Questo comando può essere usato solo su finestre associate ad un IRC context"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:193
+msgid "You're not connected to an IRC server"
+msgstr "Non sei connesso ad un server IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:199
+msgid "Missing parameter"
+msgstr "Manca il parametro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:128
+msgid "Hash key evaluated to empty string: fix the script"
+msgstr "La chiave Hash è una stringa vuota: correggi lo Script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:99
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+"L'argomento del blocco {} non è un Hash: fornita conversione automatica dal "
+"tipo '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:144
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash automatic "
+"conversion from %Q supplied"
+msgstr "L'argomento del blocco {} non è un Hash: fornita conversione automatica da %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashreferenceassert.cpp:77
+msgid "Hash reference assert failed: the variable evaluated to type '%Q'"
+msgstr "Riferimento all'hash fallito: la variabile è di tipo '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:100
+msgid "Failed to send an unknown command as /raw"
+msgstr "Impossibile inviare un comando sconosciuto come /raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:104
+msgid "Call to undefined command '%Q'"
+msgstr "Chiamata ad un comando non definito '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:116
+msgid "Error in inner alias command call '%Q', called from this context"
+msgstr "Errore nella chiamata interna dell'alias '%Q', eseguita da questo contesto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:74
+msgid "There are no extended scope variables in this scope"
+msgstr "In questo blocco non ci sono Variabili estese"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:111
+msgid "Missing class name"
+msgstr "Nome classe mancante"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:120
+msgid "A class can't be a subclass of itself"
+msgstr "Una classe non può essere una sottoclasse di se stessa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:127
+msgid "Couln't find base class named \"%Q\""
+msgstr "Impossibile trovare la classe di base \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:137
+msgid ""
+"Detected a loop in the inheritance tree of the base class \"%Q\": redefine "
+"that class first"
+msgstr ""
+"Loop rilevato nell'albero di ereditarietà  della classe base \"%Q\": prima "
+"ridefinisci la classe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:146
+msgid "Can't override the builtin class \"%Q\""
+msgstr "Impossibile l'override della casse interna \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:71
+msgid "Module command call failed: can't load the module '%Q': %Q"
+msgstr ""
+"Chiamata al comando del modulo fallita: impossibile caricare il modulo '%Q': "
+"%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:77
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a command named '%"
+"Q'"
+msgstr ""
+"Chiamata al comando del modulo fallita: il modulo '%Q' non esporta un "
+"comando chiamato '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:113
+msgid "Broken condition in menu setup: assuming false"
+msgstr "Condizione non valida nella configurazione del menu: presumo falso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:220
+msgid "Broken icon parameter: ignoring"
+msgstr "Parametro icona non valido: ignoro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:228
+msgid "Can't find the icon \"%Q\": ignoring"
+msgstr "Impossibile trovare l'icona \"%Q\": ignoro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:244
+msgid "Broken text parameter: assuming empty string"
+msgstr "Parametro testo non valido: presumo sia una stringa vuota"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:486
+msgid "Recursive definition detected for popup '%Q': ignoring"
+msgstr "Definizione ricorsiva rilevata nel popup '%Q': ignoro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:500
+msgid "Can't find the external popup '%Q'; ignoring"
+msgstr "Impossibile trovare il popup esterno '%Q': ignoro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:853
+msgid "Broken prologue in popup menu '%Q': ignoring"
+msgstr "Prologo non valido nel menu popup '%Q': ignoro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:868
+msgid "Broken epilogue in popup menu '%Q': ignoring"
+msgstr "Epilogo non valido nel menu popup '%Q': ignoro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:70
+msgid "Module function call failed: can't load the module '%Q': %Q"
+msgstr ""
+"Chiamata alla funzione del modulo fallita: impossibile caricare il modulo '%"
+"Q': %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:77
+msgid ""
+"Module function call failed: the module '%Q' doesn't export a function named "
+"'%Q'"
+msgstr ""
+"Chiamata alla funzione del modulo fallita:'%Q' non esporta una funzione "
+"chiamata '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_timermanager.cpp:244
+msgid "Timer '%Q' has a broken callback handler: killing the timer"
+msgstr "Il Timer '%Q' ha un gestore della richiamata non valido: termino il Timer."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:229
+msgid "The target variable didn't evaluate to an integer or real value"
+msgstr "La variabile data non è un numero intero o un valore reale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:283
+msgid "The right side of operator '&=' didn't evaluate to an integer"
+msgstr "Il membro destro dell'operatore '&=' non è un numero intero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:294
+msgid "The left side of operator '&=' didn't evaluate to an integer"
+msgstr "Il membro sinistro dell'operatore '&=' non è un numero intero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:353
+msgid "The right side of operator '/=' didn't evaluate to a number"
+msgstr "Il membro destro dell'operatore '/=' non è un numero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:364
+msgid "The left side of operator '/=' didn't evaluate to a number"
+msgstr "Il membro sinistro dell'operatore '/=' non è un numero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:446
+msgid "The right side of operator '%=' didn't evaluate to a number"
+msgstr "Il membro destro dell'operatore '%=' non è un numero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:457
+msgid "The left side of operator '%=' didn't evaluate to a number"
+msgstr "Il membro sinistro dell'operatore '%=' non è un numero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:541
+msgid "The right side of operator '*=' didn't evaluate to a number"
+msgstr "il membro destro dell'operatore '*=' non è un numero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:552
+msgid "The left side of operator '*=' didn't evaluate to a number"
+msgstr "Il membro sinistro dell'operatore '*=' non è un numero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:620
+msgid "The right side of operator '|=' didn't evaluate to an integer"
+msgstr "Il membro destro dell'operatore '|=' non è un numero intero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:631
+msgid "The left side of operator '|=' didn't evaluate to an integer"
+msgstr "Il membro sinistro dell'operatore '|=' non è un numero intero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:691
+msgid "The right side of operator '<<=' didn't evaluate to an integer"
+msgstr "Il membro destro dell'operatore '<<=' non è un numero intero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:702
+msgid "The left side of operator '<<=' didn't evaluate to an integer"
+msgstr "Il membro sinistro dell'operatore '<<=' non è un numero intero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:763
+msgid "The right side of operator '>>=' didn't evaluate to an integer"
+msgstr "Il membro destro dell'operatore '>>=' non è un numero intero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:774
+msgid "The left side of operator '>>=' didn't evaluate to an integer"
+msgstr "Il membro sinistro dell'operatore '>>=' non è un numero intero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:840
+msgid "The right side of operator '-=' didn't evaluate to a number"
+msgstr "Il membro destro dell'operatore '-=' non è un numero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:851
+msgid "The left side of operator '-=' didn't evaluate to a number"
+msgstr "Il membro sinistro dell'operatore '-=' non è un numero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:923
+msgid "The right side of operator '+=' didn't evaluate to a number"
+msgstr "Il membro destro dell'operatore '+=' non è un numero "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:934
+msgid "The left side of operator '+=' didn't evaluate to a number"
+msgstr "Il membro sinistro dell'operatore '+=' non è un numero "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1009
+msgid "The right side of operator '^=' didn't evaluate to an integer"
+msgstr "Il membro destro dell'operatore '^=' non è un numero intero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1020
+msgid "The left side of operator '^=' didn't evaluate to an integer"
+msgstr "Il membro sinistro dell'operatore '^=' non utilizza un numero intero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1462
+msgid ""
+"The regular expression matched a zero-length substring: this is not valid in "
+"the s/// operator, skipping"
+msgstr ""
+"L'espressione regolare corrisponde ad una sottostringa di lunghezza zero: "
+"questo non è possibile con l'operatore s///, ignoro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:52
+msgid "Unexpected end of script after '$' function call prefix"
+msgstr "Fine inaspettata dello script dopo il prefisso '$' di chiamata a funzione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:53
+msgid "Unexpected character %q (unicode %x) after '$' function call prefix"
+msgstr ""
+"Carattere inaspettato %q (unicode %x) dopo il prefisso '$' di chiamata a "
+"funzione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:54
+msgid ""
+"Syntax error after '$' function call prefix. If you want to use a plain '$' "
+"in the code you need to escape it"
+msgstr ""
+"Errori di sintassi dopo il prefisso '$' di chiamata a funzione. Se vuoi "
+"usare il carattere '$' nel codice devi utilizzare i caratteri di escape"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:63
+msgid "Invalid expression evaluation in object scope"
+msgstr "Valutazione espressione non valida nella visibilità  dell'oggetto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:78
+msgid "Invalid command evaluation in object scope"
+msgstr "Valutazione comando non valida nella visibilità  dell'oggetto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:87
+msgid "Empty instruction block for command evaluation"
+msgstr "Blocco di istruzioni vuoto per la valutazione del comando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:101
+msgid "Parameter identifiers are forbidden in object scope (after the '->' operator)"
+msgstr ""
+"Gli identificatori di parametro sono proibiti nella visibilità  di un "
+"oggetto (dopo l'operatore '-->')"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:147
+msgid ""
+"Ending index of a multiple parameter identifier is lower or equal to the "
+"starting index. This will evaluate to a single parameter identifier."
+msgstr ""
+"L'indice finale dell'identificatore del parametro multiplo è minore o uguale "
+"all'indice di partenza. Sarà  interpretato come un identificatore di "
+"parametro singolo."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:163
+msgid "Syntax error: invalid $$ ($this) function call in object scope"
+msgstr ""
+"Errore di sintassi: chiamata di funzione $$ ($this) invalida nello scope "
+"dell'oggeto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:189
+msgid "Syntax error: malformed alias function call identifier"
+msgstr ""
+"Errore di sintassi: alias dell'identificatore della chiamata alla funzione "
+"maldefinito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:197
+msgid "Syntax error: malformed (alias?) function call identifier"
+msgstr ""
+"Errore di sintassi: identificatore (alias?) della chiamata alla funzione "
+"maldefinito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:307
+#, c-format
+msgid "Invalid data type for parameter \"%s\""
+msgstr "Tipo di dato non valido per il parametro \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:122
+#, c-format
+msgid "found empty string where type '%s' was expected"
+msgstr "trovata stringa vuota dove era atteso il tipo '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:129
+msgid "found string value \"%Q\" where type '%s' was expected"
+msgstr "trovato valore stringa \"%Q\" dove era atteso il tipo '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:134
+msgid "found type %Q where type '%s' was expected"
+msgstr "trovato il tipo %Q dove era atteso il tipo '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:154
+#, c-format
+msgid "Missing non-optional parameter \"%s\""
+msgstr "Parametro obbligatorio mancante \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:282
+msgid "found empty string while a non empty one was expected"
+msgstr "trovata stringa vuota mentre era attesa un stringa non vuota"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:309
+#, c-format
+msgid "found signed integer \"%d\" where type 'unsigned integer' was expected"
+msgstr "trovato intero con segno \"%d\" dove era atteso il tipo 'intero senza segno'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:253
+msgid "This window has no associated IRC context"
+msgstr "Questa finestra non ha un Contesto IRC associato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:483
+#, c-format
+msgid "No such IRC context (%u)"
+msgstr "Nessun Contesto IRC (%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:471
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:586
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:494
+msgid "This window is not associated to an IRC context"
+msgstr "Questa finestra non è associata ad alcun Contesto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:809
+msgid ""
+"The specified format string wasn't accepted by the underlying system time "
+"formatting function"
+msgstr ""
+"Il formato specificato non è accettata dalla funzione di formattazione "
+"dell'orario di sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:70
+msgid "Unterminated c-style multiline comment"
+msgstr "Commento multilinea in stile C non terminato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:71
+msgid "Unexpected end of script in multiline comment"
+msgstr "Inattesa fine dello Script in un commento multiplo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:88
+msgid ""
+"Unexpected character '%q' (unicode %x) after a slash (it is a typo or a "
+"malformed comment begin ?)"
+msgstr ""
+"Inatteso carattere '%q' (unicode %x) dopo uno 'slash' (errore di scrittura o "
+"inizio di commento malformato?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:71
+msgid "Call to undefined function '%Q'"
+msgstr "Chiamata ad una funzione non definita '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:79
+msgid "Error in inner alias function call '%Q', called from this context"
+msgstr "Errore nella chiamata interna dell'Alias '%Q', richiamata da questo contesto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:73
+msgid "Array index didn't evaluate to an integer"
+msgstr "L'indice dell'Array non è un numero intero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:79
+msgid "Array index evaluated to a negative integer (non negative integer expected)"
+msgstr ""
+"L'indice dell'Array utilizza un numero intero negativo (atteso un numero "
+"intero non negativo)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:106
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from %Q supplied"
+msgstr ""
+"L'argomento del blocco [] non è un Array: fornita conversione automatica da %"
+"Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:142
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+"L'argomento del blocco [] non è un Array: fornita conversione automatica dal "
+"tipo '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:219
+msgid "Lag meter was not enabled"
+msgstr "Misuratore Lag disabilitato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:546
+msgid "No such event handler (%Q) for event %Q"
+msgstr "Nessun gestore (%Q) per l'Evento %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands.cpp:153
+msgid "This is not a channel"
+msgstr "Questo non è un Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:99
+msgid "Unexpected end of command buffer while looking for the \"perl.end\" statement"
+msgstr "Inattesa fine del Buffer durante la ricerca della sintassi \"perl.end\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:147
+msgid "Trailing garbage at the end of the break command: ignored"
+msgstr "Stralci di caratteri spazzatura al termine del comando 'break': ignorati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:209
+msgid "The 'unset' command needs a variable list"
+msgstr "Il comando 'unset' necessita di una lista di variabili"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:280
+msgid "Found character %q (unicode %x) where a variable was expected"
+msgstr "Trovato carattere %q (unicode %x) dove era attesa una variabile"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:219
+msgid "'unset' command used without a variable list"
+msgstr "Comando 'unset' utilizzato senza una lista di variabili"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:279
+msgid "The 'global' command needs a variable list"
+msgstr "Il comando 'global' necessita di una lista di variabili"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:631
+msgid "Found character %q (unicode %x) where an open parenthesis was expected"
+msgstr "Trovato carattere %q (unicode %x) dove era attesa una parentesi aperta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:439
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:538
+msgid "Unexpected end of buffer in class definition"
+msgstr "Inattesa fine del Buffer nella definizione della Classe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:474
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:501
+msgid "Found character %q (unicode %x) where a function name was expected"
+msgstr "Trovato carattere '%q' (unicode %x) dove era atteso il nome di una funzione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:522
+msgid "Unexpected end of buffer in function parameter list reminder"
+msgstr "Inattesa fine del Buffer nella lista dei parametri di funzione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:630
+msgid "The while command needs an expression enclosed in parenthesis"
+msgstr "Il comando 'while' necessita di un'espressione chiusa tra parentesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:654
+msgid ""
+"The last while command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+"L'ultimo comando 'while' nel Buffer non ha istruzioni condizionali: "
+"l'istruzione non ha senso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:655
+msgid ""
+"Unexpected end of script while looking for the instruction block of the "
+"while command"
+msgstr ""
+"Inattesa fine dello Script durante la ricerca del blocco di istruzioni del "
+"comando 'while'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:741
+msgid ""
+"Unexpected end of command after the 'do' command block: expected 'while' "
+"keyword"
+msgstr ""
+"Inattesa fine del comando dopo il blocco del comando 'do': attesa la parola "
+"chiave 'while'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:743
+msgid "Found character %q (unicode %x) where a 'while' keyword was expected"
+msgstr "Trovato carattere %q (unicode %x) dove era attesa la parola chiave 'while'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:759
+msgid ""
+"The 'while' block of the 'do' command needs an expression enclosed in "
+"parenthesis"
+msgstr ""
+"Il blocco 'while' del comando 'do' necessita di un'espressione chiusa tra "
+"parentesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:779
+msgid "Garbage string after the expression in 'do' command: ignored"
+msgstr "Stringa spazzatura dopo l'espressione nel comando 'do': ignorata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:825
+msgid "The 'if' command needs an expression enclosed in parenthesis"
+msgstr "Il comando 'if' necessita di un'espressione chiusa tra parentesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:850
+msgid ""
+"The last if command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+"L'ultimo comando 'if' nel Buffer non ha istruzioni condizionali: "
+"l'istruzione non ha senso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:851
+msgid ""
+"Unexpected end of script while looking for the instruction block of the if "
+"command"
+msgstr ""
+"Inattesa fine dello Script durante la ricerca del blocco di istruzioni del "
+"comando 'if'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:966
+msgid ""
+"Unexpected end of buffer while looking for the closing ')' in the 'for' "
+"command"
+msgstr ""
+"Inattesa fine del Buffer durante la ricerca della parentesi chiusa ')' nel "
+"comando 'for'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1015
+msgid "The 'for' command needs an expression enclosed in parenthesis"
+msgstr "Il comando 'for' necessita di un'espressione chiusa tra parentesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1092
+msgid ""
+"Found char %q (unicode %x) while looking for the terminating ')' in 'for' "
+"command"
+msgstr ""
+"Trovato carattere %q (unicode %x) durante la ricerca della parentesi chiusa "
+"')' nel comando 'for'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1122
+msgid "Empty infinite 'for' loop: fix the script"
+msgstr "Ciclo vuoto infinito 'for': correggi lo Script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1181
+msgid "The 'foreach' command needs an expression enclosed in parenthesis"
+msgstr "Il comando 'foreach' necessita di un'espressione chiusa tra parentesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1205
+msgid ""
+"The 'foreach' command expects a writeable iteration variable as first "
+"parameter"
+msgstr ""
+"Il comando 'foreach' necessita di una variabile dell'iterazione scrivibile "
+"come primo parametro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1196
+msgid ""
+"Found character '%q' (unicode %x) where '%' or '$' was expected: see /help "
+"foreach for the command syntax"
+msgstr ""
+"Trovato carattere '%q' (unicode %x) dove era atteso '%' o '$': usa il "
+"comando /HELP foreach per la sintassi corretta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1207
+msgid "Unexpected function call as 'foreach' iteration variable"
+msgstr "Inattesa chiamata alla funzione come variabile dell'iterazione 'foreach'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1209
+msgid "Unexpected read-only variable as 'foreach' iteration variable"
+msgstr "Inattesa variabile in sola lettura come variabile dell'iterazione 'foreach'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1219
+msgid ""
+"Unexpected end of 'foreach' parameters: at least one iteration data argument "
+"must be given"
+msgstr ""
+"Fine inattesa dei parametri di 'foreach': deve essere specificato almeno un "
+"argomento per l'iterazione dei dati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1223
+msgid ""
+"The 'foreach' command expects a comma separated list of iteration data items "
+"after the first parameter"
+msgstr ""
+"Il comando 'foreach' necessita di una lista di oggetti per l'iterazione dopo "
+"il primo parametro, separata da virgole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1244
+msgid "Found empty 'foreach' execution block: maybe you need to fix your script ?"
+msgstr "Trovato un blocco 'foreach' vuoto: forse devi correggere lo Script?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1365
+msgid "The 'switch' command needs an expression enclosed in parenthesis"
+msgstr "Il comando 'switch' ha bisogno di un'espressione chiusa tra parentesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1415
+msgid "Unexpected end of buffer in switch condition block"
+msgstr "Fine inattesa del Buffer nel blocco 'switch'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1422
+msgid ""
+"Found character %q (unicode %x) where a 'case','match','regexp','default' or "
+"'break' label was expected"
+msgstr ""
+"Trovato carattere %q (unicode %x) dove erano attese le etichette 'case', "
+"'match', 'regexp', 'default' o 'break'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1460
+msgid ""
+"Found 'break' label where a 'case','match','regexp' or 'default' label was "
+"expected"
+msgstr ""
+"Trovata l'etichetta 'break' dove erano attese le etichette 'case', 'match', "
+"'regexp' o 'default'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1465
+msgid ""
+"Found token '%Q' where a 'case','match','regexp','default' or 'break' label "
+"was expected"
+msgstr ""
+"Trovata la voce '%Q' dove era attesa l'etichetta 'case', 'match', 'regexp', "
+"'default' o 'break'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1528
+msgid "Senseless empty switch command: fix the script"
+msgstr "Comando Switch vuoto: correggi lo Script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1562
+msgid "Unexpected end of buffer in defpopup block"
+msgstr "Fine inaspettata del Buffer nel blocco di 'defpopup'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1569
+msgid ""
+"Found character %q (unicode %x) where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+"Trovato carattere %q (unicode %x) dove era attesa un'etichetta di "
+"'prologo','separatore','etichetta','popup','elemento','extpopup'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1668
+msgid "Found empty prologue block: maybe you need to fix the script?"
+msgstr "Blocco di prologo vuoto: forse devi correggere lo Script?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1670
+msgid "Found empty epilogue block: maybe you need to fix the script?"
+msgstr "Blocco di epilogo vuoto: forse devi correggere lo Script?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1703
+msgid ""
+"Unexpected empty <text> field in label parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Inaspettato campo <testo> vuoto nei parametri dell'etichetta. Usa il "
+"comando /HELP defpopup per la sintassi corretta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1753
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1801
+msgid ""
+"Unexpected empty <text> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Inaspettato campo <testo> vuoto nei parametri di 'extpopup'. Usa il comando /"
+"HELP defpopup per la sintassi corretta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1777
+msgid "Found empty instruction for popup item: maybe you need to fix the script?"
+msgstr "Istruzione vuota per l'elemento 'popup': forse devi correggere lo script?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1809
+msgid ""
+"Unexpected empty <name> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Inaspettato campo <nome> vuoto nei parametri di 'extpopup'. Usa il comando /"
+"HELP defpopup per la sintassi corretta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1821
+msgid ""
+"Found token '%Q' where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+"Trovata voce '%Q' dove era attesa un'etichetta di "
+"'prologo','separatore','etichetta','popup','elemento','extpopup','epilogo'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1931
+msgid "The 'defpopup' command needs an expression enclosed in parenthesis"
+msgstr "Il comando 'defpopup' necessita di un'espressione chiusa tra parentesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:109
+msgid "beginning of input"
+msgstr "inizio input"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:121
+msgid ""
+"Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %s"
+"\" for the command syntax"
+msgstr ""
+"Trovato il carattere '%q' (unicode 0x%x) dove era atteso %c: vedi \"/help %s"
+"\" per la sintassi del comando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:124
+#, c-format
+msgid ""
+"Found end of input where character '%c' was expected: see \"/help %s\" for "
+"the command syntax"
+msgstr ""
+"Fine dell'input dove era atteso il carattere '%c': vedi \"/help %s\" per la "
+"sintassi del comando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:197
+msgid "Empty script"
+msgstr "Script vuoto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2650
+msgid ""
+"Syntax error after '%' variable prefix. If you want to use a plain '%' in "
+"the code you need to escape it"
+msgstr ""
+"Errore di sintassi dopo il prefisso '%' della variabile. Se vuoi usare il "
+"carattere '%' nel codice devi utilizzare i caratteri di escape"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2667
+msgid "Objects have no extended scope variables"
+msgstr "Gli Oggetti non hanno variabili con visibilità  estesa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2727
+msgid "Found character '%q' (unicode %x) where an instruction was expected"
+msgstr "Trovato carattere '%q' (unicode %x) dove era attesa una istruzione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2760
+msgid "Unterminated instruction block"
+msgstr "Inattesa fine del blocco di istruzioni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2761
+msgid "Unexpected end of script in instruction block (missing closing brace)"
+msgstr ""
+"Fine inaspettata dello script nel blocco di istruzioni (parentesi di "
+"chiusura mancante)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2838
+msgid ""
+"The dash after a command should be followed by a letter (switch), by a digit "
+"(negative number) or be escaped"
+msgstr ""
+"Il trattino dopo un comando dovrebbe essere seguito da una lettera (switch), "
+"da un numero (numero negativo) o tra caratteri di escape"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2842
+msgid "Unexpected character '%q' (unicode %x) after a switch dash"
+msgstr "Carattere inspettato '%q' (unicode %x) dopo il trattino dello switch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2844
+msgid "Unexpected end of script after a switch dash"
+msgstr "Fine inaspettata dello script dopo il trattino dello switch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2869
+msgid ""
+"The above problem might be related to the switch dash and the following "
+"equal sign"
+msgstr ""
+"Il problema sopra può essere relativo al trattino dello switch e al segno di "
+"uguale seguente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2948
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3016
+msgid "Unexpected end of script in parameter list"
+msgstr "Fine inaspettata dell script nella lista dei parametri"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2954
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3022
+msgid "Unexpected end of line in parameter list"
+msgstr "Fine inaspettata della riga nella lista dei parametri"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3083
+msgid ""
+"Nested character %q corresponding to expected terminator, this might confuse "
+"me a bit: it is a good idea to enclose it in quotes"
+msgstr ""
+"Il carattere %q inserito corrisponde al terminatore aspettato; questo "
+"potrebbe conforndemi un po': è una buona idea metterlo tra virgolette"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3093
+msgid "Skipping nested terminator character %q"
+msgstr "Salto il carattere di terminazione %q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3120
+msgid "Stray backslash at the end of the script"
+msgstr "Backslash vagante alla fine dello script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3393
+msgid "Unterminated hash key"
+msgstr "Chiave hash non terminata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3387
+msgid "Unexpected end of script in hash key (missing '}' character ?)"
+msgstr "Fine inaspettata dello script nella chiave hash (carattere '}' mancante ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3394
+msgid ""
+"Unexpected end of line in hash key (missing '}' character or unescaped "
+"newline)"
+msgstr ""
+"Fine inaspettata della riga nella chiave hash (carattere '}' mancante o "
+"nuova riga senza carattere di escape)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3679
+msgid "Unterminated string constant"
+msgstr "Costante stringa non terminata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3673
+msgid "Unexpected end of script in string constant (missing \" character ?)"
+msgstr ""
+"Fine inaspettata dello script nella costante stringa (carattere \" "
+"mancante ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3680
+msgid ""
+"Unexpected end of line in string constant (missing \" character or unescaped "
+"newline)"
+msgstr ""
+"Fine inaspettata della riga in un costante stringa ( carattere \" mancante o "
+"nuova riga senza carattere di escape)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_processmanager.cpp:225
+msgid "Error triggered from process callback handler: killing process"
+msgstr "Errore generato dal gestore della callback del processo: uccido il processo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arraycount.cpp:72
+msgid ""
+"The argument of the array count '#' operator didn't evaluate to an array: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+"L'argomento dell'operatore contatore Array '#' non utilizza un Array: "
+"fornita conversione automatica dal tipo '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:197
+msgid "This window has no associated IRC context and is not a DCC chat"
+msgstr "Questa finestra non ha un Contesto IRC associato e non è una DCC Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:293
+msgid "Class \"%Q\" is not defined"
+msgstr "La classe %Q non è definita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:303
+msgid "The specified parent object does not exist"
+msgstr "L'oggetto padre specificato non esiste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:430
+msgid "There is no option named '%Q'"
+msgstr "Nessuna opzione chiamata '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:85
+msgid "Internal error: pure virtual evaluateReadOnly called"
+msgstr "Errore Interno: chiamata virtuale pura a evaluateReadOnly"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:91
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:104
+msgid "Internal error: trying to evaluate as read-write a read-only data location"
+msgstr ""
+"Errore interno: tentativo di utilizzare in modalità lettura-scrittura una "
+"locazione dati in sola lettura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:98
+msgid "Internal error: pure virtual evaluateReadOnlyInObjectScope called"
+msgstr ""
+"Errore Interno: chiamata virtuale pura a evaluateReadOnly nella visibilità  "
+"dell'oggetto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:215
+msgid "[KVS]%c Warning: %Q"
+msgstr "[KVS]%c Attenzione: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:211
+msgid "[KVS]%c Compilation Error: %Q"
+msgstr "[KVS]%c Errore di compilazione: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:219
+msgid "[KVS]%c Runtime Error: %Q"
+msgstr "[KVS]%c Errore Runtime: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:224
+msgid "[KVS] in script context \"%Q\""
+msgstr "[KVS] nel contesto dello Script \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:226
+msgid "[KVS] in script context \"%Q\", %Q"
+msgstr "[KVS] nel contesto dello Script \"%Q\", %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:233
+msgid "[KVS] Code listing:"
+msgstr "[KVS] Elenco codice:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:238
+msgid "[KVS] Window:"
+msgstr "[KVS] Finestra:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:242
+#, c-format
+msgid "[KVS] Destroyed window with pointer %x"
+msgstr "[KVS] Distrutta la finestra con puntatore %x"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:246
+msgid "[KVS] Call stack:"
+msgstr "[KVS] Stack della chiamata:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:464
+#, c-format
+msgid "Window with ID '%s' not found, returning empty string"
+msgstr "Finestra con ID '%s' non trovata, restituisco una stringa vuota"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:130
+msgid "The specified window is not a channel"
+msgstr "La finestra specificata non è un canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:392
+msgid "The $sw() function can be used only in aliases"
+msgstr "La funzione $sw() può essere utilizzata solo negli alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:302
+msgid "Invalid pitch value: using default"
+msgstr "Valore del pitch non valido: utilizzo il valore di default"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:312
+msgid "Invalid duration value: using default"
+msgstr "Valore della durata non valido: utilizzo il valore di default"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:421
+msgid "No button with type %Q named %Q"
+msgstr "Nessun bottone di tipo %Q chiamato %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:632
+msgid "Can't delete a null object reference"
+msgstr "Impossibile cancellare il riferimento ad un Oggetto nullo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:638
+msgid "Can't delete an inexisting object"
+msgstr "Impossibile cancellare un Oggetto non esistente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:692
+msgid "Inexisting popup \"%Q\""
+msgstr "Popup inesistente \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:698
+msgid "Popup menu self-modification is not allowed (the popup is probably open)"
+msgstr ""
+"L'auto-modifica del popup menu non è consentita (il popup è probabilmente "
+"aperto)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:705
+msgid "The menu item with id \"%Q\" does not exist in popup \"%Q\""
+msgstr "L'elemento del menu con ID \"%Q\" non esiste nel popup \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:860
+msgid ""
+"The argument of the -w switch did not evaluate to a valid window id: using "
+"default"
+msgstr ""
+"L'argomento dell'opzione '-w' non utilizza un identificativo della finestra "
+"valido: utilizzo quello predefinito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:869
+msgid "The argument of the i switch did not evaluate to a number: using default"
+msgstr ""
+"L'argomento dell'opzione 'i' non utilizza un numero: utilizzo quello "
+"predefinito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:981
+msgid "Invalid color-set specification, using default"
+msgstr "Set di colori non valido, utilizzo il set predefinito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:992
+#, c-format
+msgid "Window '%s' not found, using current one"
+msgstr "Finestra '%s' non trovata, utilizzo la finestra corrente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:78
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a callback "
+"command named '%Q'"
+msgstr ""
+"Chiamata al comando del modulo fallita: il modulo '%Q' non esporta una "
+"richiamata con nome '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp:401
+#, c-format
+msgid "The popup '%s' is actually locked: 'self-modifications' are not allowed"
+msgstr ""
+"Il menu a comparsa '%s' è attualmente bloccato: le 'auto-modifiche' non sono "
+"permesse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:822
+#, c-format
+msgid "Ignoring DCC from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "Ignorato CTCP da \r!nc\r%s\r [%s@\r!h\r%s\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:839
+#, c-format
+msgid "Ignoring CTCP from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "Ignorato CTCP da \r!nc\r%s\r [%s@\r!h\r%s\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:978
+msgid "The following CTCP reply has unrecognized target %Q"
+msgstr "La seguente risposta CTCP ha un destinatario sconosciuto %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1025
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1128
+msgid "Channel CTCP"
+msgstr "CTCP al Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:988
+msgid "%Q %Q reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "%Q %Q risposta da \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1018
+msgid "The following CTCP request has unrecognized target %Q"
+msgstr "La seguente richiesta CTCP ha un destinatario sconosciuto %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1032
+msgid ""
+"%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignored (flood limit "
+"exceeded)"
+msgstr ""
+"%Q %Q%c richiesta da \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignorata (raggiunto "
+"limite di flood)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1036
+msgid "ignored (unrecognized)"
+msgstr "ignorato (non riconosciuto)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "ignored"
+msgstr "ignorato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "replied"
+msgstr "risposto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1041
+msgid "%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+msgstr "%Q %Q%c richiesta da \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1079
+msgid "The following CTCP PING reply has unrecognized target \"%Q\""
+msgstr "La seguente risposta CTCP PING ha un destinatario sconosciuto \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1113
+#, c-format
+msgid ""
+"The following CTCP PING reply has a broken time identifier \"%S\", don't "
+"trust the displayed time"
+msgstr ""
+"La seguente risposta CTCP PING ha un identificatore del tempo sbagliato \"%S"
+"\": l'orario mostrato è inattendibile"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1132
+msgid "%Q PING reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sec %u msec"
+msgstr "%Q risposta PING da %Q [%Q@%Q]: %u sec %u msec"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1466
+msgid "The following CTCP ACTION has unrecognized target %Q"
+msgstr "La seguente CTCP ACTION ha un destinatario sconosciuto %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1471
+msgid "CTCP ACTION from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "CTCP ACTION da %Q [%Q@%Q]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1517
+msgid "Unable to add file offer for file %Q (File not readable?)"
+msgstr "Impossibile aggiungere l'offerta del file %Q (File non leggibile?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1521
+msgid "Added %d sec file offer for file %Q (%Q) to recipient %Q"
+msgstr "Aggiunti %d secondi all'offerta del file %Q (%Q) con destinatario %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "private"
+msgstr "privato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "channel notification:"
+msgstr "notifica al Canale:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1579
+msgid "notification"
+msgstr "notifica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1584
+msgid "%Q unsets avatar"
+msgstr "%Q ha rimosso l'Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1591
+msgid "%Q changes avatar to %s"
+msgstr "%Q ha cambiato l'Avatar in %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1637
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (HTTP GET %s)"
+msgstr ""
+": nessuna copia locale dell'Avatar disponibile; invio la richiesta (HTTP GET "
+"%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1644
+msgid ""
+": No valid local copy of avatar available; failed to start an HTTP transfer, "
+"ignoring"
+msgstr ""
+": nessuna copia locale dell'Avatar disponibile; impossibile iniziare un "
+"trasferimento HTTP, ignoro."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1652
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (DCC GET %s)"
+msgstr ": nessuna copia locale dell'Avatar disponibile; invio richiesta (DCC GET %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1664
+msgid ": No valid local copy of avatar available; flood limit exceeded, ignoring"
+msgstr ""
+": nessuna copia locale dell'Avatar disponibile; limite di Flood raggiunto, "
+"ignoro."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1669
+msgid ": No valid local copy of avatar available, ignoring"
+msgstr ": nessuna copia locale dell'Avatar disponibile; ignoro."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1677
+msgid ": No such nickname in the user database, ignoring the change"
+msgstr ": questo nickname non è nel database degli utenti, ignoro i cambiamenti."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1717
+msgid "Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S)"
+msgstr "Ignoro DCC %S richiesta da \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1759
+msgid "Processing DCC %Q request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s)"
+msgstr "Elaborazione DCC %Q richiesta da \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1770
+#, c-format
+msgid "Unable to process the above request: Cannot load DCC module (%s)"
+msgstr "Impossibile procedere con la richiesta: modulo DCC non caricato (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1776
+msgid "Unable to process the above request: DCC module may be broken"
+msgstr ""
+"Impossibile procedere con la richiesta: il modulo DCC sembra essere "
+"malfunzionante"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:132
+msgid "[Server parser]: Encountered problems while parsing the following message:"
+msgstr ""
+"[Server Parser]: incontrati problemi durante il Parsing del seguente "
+"messaggio:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:134
+msgid "[Server parser]: [%s][%s] %Q"
+msgstr "[Server Parser]: [%s][%s] %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:136
+#, c-format
+msgid "[Server parser]: %s"
+msgstr "[Server Parser]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:98
+msgid "Received ping from \r!s\r%Q\r (PING %Q), replied pong"
+msgstr "Ricevuto PING da \r!s\r%s\r (PING %Q), inviata risposta PONG"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:125
+#, c-format
+msgid "Received pong from \r!s\r%s\r (PONG %s)"
+msgstr "Ricevuto PONG da \r!s\r%s\r (PONG %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:151
+msgid "Server ERROR: %Q"
+msgstr "ERRORE del SERVER: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:174
+msgid "Missing channel parameter in join message"
+msgstr "Manca il parametro del Canale nel messaggio di entrata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:209
+msgid "Received a join message for an unknown channel, possible desync"
+msgstr "Ricevuto mesasggio di entrata per un Canale sconosciuto, possibile asincronia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:305
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r [implicit +%c umode change]"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] è entrato in \r!c\r%Q\r [implicito +%c cambio "
+"modo utente]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:310
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] è entrato in \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:324
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] è appena entrato in \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:355
+msgid "Received a part message for an unknown channel, possible desync"
+msgstr "Ricevuto mesasggio di uscita per un Canale sconosciuto, possibile asincronia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:384
+msgid "You have left channel \r!c\r%Q\r"
+msgstr "Sei uscito dal Canale \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:386
+msgid "You have left channel \r!c\r%Q\r: %Q"
+msgstr "Sei uscito dal Canale \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:402
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] è uscito da \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:406
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] è uscito da \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:420
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] è appena uscito da \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:424
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] è appena uscito da \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:494
+#, c-format
+msgid "Netsplit detected: %s"
+msgstr "Rilevato Netsplit: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:546
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:562
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] è uscito da IRC: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:589
+msgid "Received a kick message for an unknown channel, possible desync"
+msgstr "Ricevuto messaggio di kick per un Canale sconosciuto, possibile asincronia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:626
+msgid "You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Sei stato kickato da \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:633
+msgid "Attempting to rejoin \r!c\r%Q\r..."
+msgstr "Provo a rientrare nel Canale \r!c\r%Q\r..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:670
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@"
+"\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] è stato kickato dal canale \r!c\r%Q\r da \r!n\r%Q"
+"\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:682
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just been kicked from \r!c\r%Q\r by \r!n\r%Q"
+"\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] è appena stato kickato dal canale \r!c\r%Q\r da "
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:710
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+"Il messaggio seguente sembra essere crittato, ma il motore di cifratura ha "
+"fallito nella decodifica: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:776
+msgid "Ignoring query-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Ignorato Messaggio Privato da \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:843
+msgid "Spam privmsg from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%s\")"
+msgstr ""
+"Messaggio privato di Spam da \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (parola di Spam "
+"corrispondente \"%s\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:984
+msgid "Ignoring channel-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Ignorato Messaggio da \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1106
+msgid "Ignoring Notice from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Ignorato notice da \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1159
+msgid "NickServ requests authentication, executing scheduled command"
+msgstr "Richiesta di autenticazione NickServ, eseguo i comandi programmati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1162
+msgid ""
+"The scheduled NickServ identification command appears to be broken, please "
+"change the setting"
+msgstr ""
+"I comandi programmati per l'identificazione del NickServ sembrano essere "
+"malfunzionanti, correggili nella finestra delle opzioni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1213
+msgid "Spam notice from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%Q\")"
+msgstr ""
+"Spam Notice da \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (parola di Spam corrispondente "
+"\"%Q\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1394
+msgid "Received a topic message for an unknown channel, possible desync"
+msgstr "Ricevuto messaggio di Topic per un canale sconosciuto, possibile asincronia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1413
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has changed topic to \"%Q%c\""
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] ha cambiato il Topic in \"%Q%c\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1512
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] ha cambiato nickname in \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1063
+msgid "You have changed your nickname to %Q"
+msgstr "Hai cambiato il tuo nickname in %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1477
+msgid ""
+"The target of this query was lost and has been found when \r!n\r%Q\r [%Q@\r!h"
+"\r%Q\r] changed his nickname to \r!n\r%Q\r"
+msgstr ""
+"Il destinatario di questa Query era stato perso; è stato trovato quando \r!n"
+"\r%Q\r [%Q@\r!h\r%Q\r] ha cambiato il suo nickname in \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1486
+msgid ""
+"The recent nickname change from \r!n\r%Q\r to \r!n\r%Q\r caused a query "
+"collision: merging output"
+msgstr ""
+"Il recente cambio di nickname da \r!n\r%Q\r a \r!n\r%Q\r ha causato un "
+"conflitto tra le Query: unifico l'Output"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1495
+msgid "End of merged output"
+msgstr "Fine dell'Output unificato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1540
+msgid "Ignoring invite from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "Ignorato invito da \r!nc\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "autojoining"
+msgstr "entrata automatica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "double-click the channel name to join"
+msgstr "doppio click sul nome del Canale per entrare"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1556
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] invites you to channel \r!c\r%Q\r (%Q)"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] ti invita nel Canale \r!c\r%Q\r (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1564
+msgid "Received an invite message directed to another nick, possible desync"
+msgstr "Ricevuto un messaggio di Invito diretto a qualcun'altro, possibile asincronia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1584
+msgid "WALLOPS from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "WALLOPS da \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1648
+#, c-format
+msgid "You have set user mode %s"
+msgstr "Hai impostato il modo utente %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1655
+msgid "Received a mode change for an unknown channel, possible desync"
+msgstr "Ricevuto cambio di modo per un Canale sconosciuto, possibile asincronia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1731
+msgid "%Q [%Q@%Q] has set channel key to \"\r!m-k\r%Q\r\""
+msgstr "%Q [%Q@%Q] ha impostato la Chiave del Canale in \"\r!m-k\r%Q\r\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1734
+msgid "%Q [%Q@%Q] has unset the channel key"
+msgstr "%Q [%Q@%Q] ha rimosso la Chiave al Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1754
+msgid "%Q [%Q@%Q] has set channel \r!m-l\rlimit to %Q\r"
+msgstr "%Q [%Q@%Q] ha impostato il \r!m-l\rlimite del Canale a %Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1757
+msgid "%Q [%Q@%Q] has unset the channel limit"
+msgstr "%Q [%Q@%Q] ha rimosso il Limite del Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1779
+msgid "%Q [%Q@%Q] has set mode %c%c \r!n\r%Q\r"
+msgstr "%Q [%Q@%Q] ha impostato il modo %c%c \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1787
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1834
+msgid "%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"
+msgstr "%Q [%Q@%Q] ha impostato il \r!m%c%c\rmodo del Canale in %c%c\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1819
+msgid "%Q [%Q@%Q] has set mode %c%c \r!m%c%c\r%Q\r"
+msgstr "%Q [%Q@%Q] ha impostato il modo %c%c a \r!m%c%c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1860
+msgid "%Q [%Q@%Q] has set mode %s %Q"
+msgstr "%Q [%Q@%Q] ha impostato il modo %s a %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1863
+msgid "%Q [%Q@%Q] has set channel mode %s"
+msgstr "%Q [%Q@%Q] ha impostato il modo del Canale in %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:147
+#, c-format
+msgid ""
+"One or more standard mode flags are missing in the server available modes.\n"
+"This is caused either by a non RFC1459-compliant IRC daemon or a broken "
+"server reply.\n"
+"Server umodes seem to be '%s' and channel modes seem to be '%s'.\n"
+"Ignoring this reply and assuming that the basic set of modes is available.\n"
+"If you have strange problems, try changing the server."
+msgstr ""
+"Uno o più modi standard sono mancanti nei modi disponibili del server.\n"
+"Questo può essere causato da un demone IRC non compatibile con l'RFC1459 o "
+"da una risposta mal ricevuta del Server.\n"
+"I modi utente del Server sembrano essere '%s' e i modi per i canali '%s'.\n"
+"Ignoro questa risposta e suppongo che l'insieme di base dei modi sia "
+"disponibile.\n"
+"Se hai qualche problema, prova a cambiare Server."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:159
+msgid "Available user modes:"
+msgstr "Modi disponibili per l'utente:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:169
+msgid ": Unknown user mode"
+msgstr ": modo utente sconosciuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:177
+msgid "Available channel modes:"
+msgstr "Modi del Canale disponibili:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:197
+msgid "Server %Q version %S supporting user modes '%S' and channel modes '%S'"
+msgstr ""
+"La versione %Q del Server %S supporta i modi utente '%S' e i modi per i "
+"canali '%S'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:244
+msgid "This server supports the WATCH notify list method, it will be used"
+msgstr ""
+"Questo Server sembra supportare il metodo Watch per la Notify List, quindi "
+"verrè usato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:262
+msgid "The current network is %Q"
+msgstr "La rete corrente è %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:303
+msgid "This server supports the CODEPAGE command, it will be used"
+msgstr "Questo Server supporta il comando CODEPAGE, verrà utilizzato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:319
+#, c-format
+msgid "This server supports: %s"
+msgstr "Il Server supporta: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:375
+msgid "End of NAMES for \r!c\r%Q\r"
+msgstr "Fine dei Nomi per \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:472
+msgid "Names for \r!c\r%Q\r: %Q"
+msgstr "Nomi per \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:487
+msgid "(unknown)"
+msgstr "(sconosciuto)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:491
+msgid "Channel topic is: %Q"
+msgstr "Il Topic del canale è %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:498
+msgid "Topic for \r!c\r%Q\r is: %Q"
+msgstr "Il Topic per \r!c\r%Q\r è: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:516
+msgid "No channel topic is set"
+msgstr "Nessun Topic impostato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:521
+msgid "No topic is set for channel \r!c\r%Q\r"
+msgstr "Nessun Topic impostato per il canale \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:560
+msgid "Topic was set by %Q on %Q"
+msgstr "Il Topic è stato impostato da %Q il %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:561
+msgid "Topic was set by %Q"
+msgstr "Il Topic è stato impostato da %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:569
+msgid "Topic for \r!c\r%Q\r was set by %Q on %Q"
+msgstr "Il Topic per \r!c\r%Q\r è stato impostato da %Q il %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:572
+msgid "Topic for \r!c\r%Q\r was set by %Q"
+msgstr "Il Topic per \r!c\r%Q\r è stato impostato da %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:592
+msgid "Channel mode for \r!c\r%Q\r is %s"
+msgstr "Il modo per il canale \r!c\r%Q\r è %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:595
+msgid "User mode for \r!n\r%Q\r is %s"
+msgstr "Modo utente per \r!n\r%Q\r è %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:631
+msgid "End of channel %Q for \r!c\r%Q\r"
+msgstr "Fine del canale %Q per \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:635
+msgid "ban list"
+msgstr "lista Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:636
+msgid "invite list"
+msgstr "lista Inviti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:637
+msgid "ban exception list"
+msgstr "lista eccezioni Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:658
+msgid "%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"
+msgstr "%Q per \r!c\r%Q\r: \r!m-%c\r%Q\r (impostato da %Q su %Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:665
+msgid "Ban listing"
+msgstr "Elenco Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:668
+msgid "Invite listing"
+msgstr "Elenco Inviti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:671
+msgid "Ban exception listing"
+msgstr "Lista eccezioni Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:740
+msgid ""
+"WHO entry for %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cChannel%c: \r!c\r%Q\r, %"
+"cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAway%c: %Q, %cReal name"
+"%c: %Q"
+msgstr ""
+"Voce WHO per %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cCanale%c: \r!c\r%Q\r, %cServer"
+"%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAssente%c: %Q, %cNome Vero%c: "
+"%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:797
+msgid "End of WHO list for %Q"
+msgstr "Fine della lista WHO per %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:856
+msgid ""
+"Something really weird is happening: the server is refusing all the login "
+"nicknames..."
+msgstr ""
+"Sta succedendo qualcosa di molto strano: il Server rifiuta tutti i nickname "
+"durante il Login"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:861
+msgid ""
+"The server is refusing all the login nicknames: giving up, you must send the "
+"nickname manually"
+msgstr ""
+"Il Server rifiuta tutti i nickname durante il Login: terminato. Dovrai "
+"inviare il nickname manualmente."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:871
+msgid "No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."
+msgstr "Impossibile entrare come '\r!n\r%Q\r' (%d: %Q), provo '%Q'..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:945
+msgid "Command syntax %Q: %Q"
+msgstr "Sintassi del comando %Q: %q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:973
+msgid "Tip: %Q"
+msgstr "Aiuto: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:976
+msgid "Tip for %Q: %Q"
+msgstr "Aiuto per %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:993
+msgid "End of help about %Q"
+msgstr "Fine dell'aiuto per %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1037
+msgid "%c\r!n\r%Q\r%c is away: %Q"
+msgstr "%c\r!n\r%Q\r%c è assente: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1090
+msgid "%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "%c\r!n\r%Q\r%c è %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1095
+msgid "%c\r!n\r%Q\r%c's real name: %Q"
+msgstr "Nome vero per %c\r!n\r%Q\r%c: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1115
+msgid "%c\r!n\r%Q\r%c was %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "%c\r!n\r%Q\r%c era %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1119
+msgid "%c\r!n\r%Q\r%c's real name was: %Q"
+msgstr "%c\r!n\r%Q\r%c aveva come nome vero: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1183
+msgid "%c\r!n\r%Q\r%c's channels: %Q"
+msgstr "%c\r!n\r%Q\r%c è nei canali: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1220
+msgid "Received a broken RPL_WHOISIDLE, can't evaluate the idle time"
+msgstr ""
+"Ricevuto un RPL_WHOISIDLE spezzato, non posso valutare il tempo di "
+"inattività "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1230
+msgid "%c\r!n\r%Q\r%c's idle time: %ud %uh %um %us"
+msgstr "Il tempo di inattività  di %c\r!n\r%Q\r%c: %ud %uh %um %us"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1240
+msgid "%c\r!n\r%Q\r%c's signon time: %Q"
+msgstr "Orario di accesso di %c\r!n\r%Q\r%c: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1274
+msgid "%c\r!n\r%Q\r%c's server: \r!s\r%Q\r - %Q"
+msgstr "Il server di %c\r!n\r%Q\r%c: \r!s\r%Q\r - %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1293
+msgid "%c\r!n\r%Q\r%c is authenticated as %Q"
+msgstr "%c\\r!n\\r%Q\\r%c è autenticato come: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1325
+msgid "%c\r!n\r%Q\r%c's info: %Q"
+msgstr "Informazioni su %c\r!n\r%Q\r%c: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1372
+msgid "%c\r!n\r%Q\r%c WHOIS info from \r!s\r%Q\r"
+msgstr "Informazioni WHOIS per %c\r!n\r%Q\r%c ricevute da \r!s\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1389
+msgid "%c\r!n\r%Q\r%c WHOWAS info from \r!s\r%Q\r"
+msgstr "Informazioni WHOWAS per %c\r!n\r%Q\r%c ricevute da \r!s\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1457
+msgid "Can't evaluate creation time"
+msgstr "Impossibile valutare la data di creazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1465
+msgid "Channel was created at %Q"
+msgstr "Il canale è stato creato il %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1470
+msgid "Channel \r!c\r%Q\r was created at %Q"
+msgstr "Il canale \r!c\r%Q\r è stato creato %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1511
+msgid "USERHOST info: %Q"
+msgstr "Informazioni USERHOST: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1532
+msgid "Channel list begin: channel, users, topic"
+msgstr "Inizio Lista del canale: canale, utenti, Topic"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1559
+msgid "List: %Q"
+msgstr "Lista: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1573
+msgid "End of LIST"
+msgstr "Fine della Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1597
+msgid "Link: %Q"
+msgstr "Collegamento: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1612
+msgid "End of LINKS"
+msgstr "Fine dei LINKS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1641
+msgid "[Leaving away status after %ud %uh %um %us]: %Q"
+msgstr "[Uscito dallo stato di Away dopo %ud %uh %um %us]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1645
+msgid "[Leaving away status]: %Q"
+msgstr "[Uscito dallo stato di Away]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1652
+msgid "Restoring pre-away nickname (%Q)"
+msgstr "Ripristino nickname usato prima dell'Away (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1672
+msgid "[Entering away status]: %Q"
+msgstr "[Sei entrato nello stato di Away]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1690
+msgid "Setting away nickname (%Q)"
+msgstr "Imposto il nickname per l'Away (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1762
+#, c-format
+msgid "%c\r!s\r%s\r%c's server info: %s"
+msgstr "Le informazioni su %c\r!s\r%s\r%c sono: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1773
+#, c-format
+msgid "%c\r!s\r%s\r%c's administrator is %s"
+msgstr "L'Amministratore di %c\r!s\r%s\r%c è: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1784
+#, c-format
+msgid "%c\r!s\r%s\r%c's contact adress is %s"
+msgstr "L'indirizzo di %c\r!s\r%s\r%c è %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1812
+msgid "\r!n\r%Q\r invited %Q into channel %Q"
+msgstr "\r!n\r%Q\r invita %Q nel canale %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1834
+#, c-format
+msgid "%c\r!s\r%s\r%c's information:"
+msgstr "Informazioni per %c\r!s\r%s\r%c:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1844
+#, c-format
+msgid "End of %c\r!s\r%s\r%c's information"
+msgstr "Fine delle informazioni per %c\r!s\r%s\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1855
+msgid "%c\r!s\r%s\r%c's time is %Q"
+msgstr "L'ora su %c\r!s\r%s\r%c è: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1866
+msgid "%Q: no such server"
+msgstr "%Q: impossibile trovare il Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1877
+msgid "%Q: no such channel"
+msgstr "%Q: nessun canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1891
+msgid "Cannot sent to channel: %Q"
+msgstr "Impossibile inviare al canale: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1894
+msgid "Cannot sent text to channel %Q: %Q"
+msgstr "Impossibile inviare il testo al canale %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1909
+msgid "Cannot sent to channel"
+msgstr "Impossibile inviare al canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1912
+msgid "Cannot sent text to channel %Q"
+msgstr "Impossibile inviare il testo al canale %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1928
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1936
+msgid "Your encoding is now %Q"
+msgstr "La tua codifica adesso è %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1967
+msgid "%c\r!n\r%Q\r%c's codepage is %Q: %Q"
+msgstr "La codifica di %c\r!n\r%Q\r%c è %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1991
+#, c-format
+msgid "Your user mode is %s"
+msgstr "Il tuo modo utente è: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:158
+msgid "Failed to set the encoding to %Q: mapping not available."
+msgstr "Impossibile impostare la codifica a %Q: Mapping non disponibile"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:175
+msgid "Changed text encoding to %Q"
+msgstr "Codifica testo impostata a %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:503
+msgid "Connection to server lost"
+msgstr "Connessione al Server persa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:512
+msgid "Connection to server established"
+msgstr "Connessione al Server stabilita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:573
+msgid "[LINK WARNING]: Socket message truncated to 512 bytes."
+msgstr "[AVVISO CONNESSIONE]: messaggio del Socket troncato a 512 bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:640
+msgid "The server seems to support the WATCH notify list method, will try to use it"
+msgstr ""
+"Questo Server sembra supportare il metodo Watch per la Notify List, provo ad "
+"usarlo."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:688
+msgid "Can't resolve local host address, using user supplied one (%Q)"
+msgstr ""
+"Impossibile risolvere l'indirizzo dell'Host locale: uso quello fornito "
+"dall'utente (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:695
+msgid "Can't resolve local host address, using default 127.0.0.1"
+msgstr ""
+"Impossibile risolvere l'indirizzo locale dell'Host, uso quello predefinito "
+"(127.0.0.1)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:701
+msgid "Local host address is %Q"
+msgstr "L'indirizzo locale è %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:749
+msgid "The server seems to have changed the idea about the local hostname"
+msgstr "Sembra che il Server abbia cambiato idea sull'Hostname locale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:750
+msgid ""
+"You're probably using a broken bouncer or maybe something weird is happening "
+"on the IRC server"
+msgstr ""
+"Probabilmente stai usando un Bouncer corrotto o qualcosa è andato veramente "
+"storto sul Server IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:776
+msgid ""
+"Here goes your \"broken bouncer hack\": The server has changed the hostname "
+"but I'll ignore the IP address change"
+msgstr ""
+"Qui il \"broken bouncer hack\": il server ha cambiato il nome dell'Host ma "
+"ignora il cambio di indirizzo IP."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:791
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:801
+msgid "The local IP address as seen by the IRC server is %Q"
+msgstr "L'indirizzo IP locale visto dal Server IRC è %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:815
+msgid "Can't start the DNS slave thread"
+msgstr "Impossibile avviare il Thread DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:816
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:846
+msgid "Unable to resolve the local hostname as seen by the IRC server: %Q"
+msgstr "Impossibile risolvere l'Hostname locale come è visto dal Server IRC: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:822
+msgid "Looking up the local hostname as seen by the IRC server (%Q)"
+msgstr "Risolvo il nome dell'Host locale riconosciuto dal Server IRC (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:843
+msgid ""
+"Unable to resolve the local hostname as seen by the IRC server: %Q, using "
+"previously resolved %Q"
+msgstr ""
+"Impossibile risolvere l'Hostname locale come visto dal Server IRC: %Q, "
+"utilizzo quello precedente %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:850
+msgid "Local hostname as seen by the IRC server resolved to %Q"
+msgstr "Hostname locale visto dal server IRC come %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:868
+msgid "Using server specific username (%Q)"
+msgstr "Uso il nome utente specificato per il server (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:873
+msgid "Using network specific username (%Q)"
+msgstr "Uso il nome utente specificato per il Server (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:892
+msgid "Using reconnect specific nickname (%Q)"
+msgstr "Uso il nickname specificato per la rete (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:898
+msgid "Using server specific nickname (%Q)"
+msgstr "Uso il nickname specificato per il Server (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:905
+msgid "Using network specific nickname (%Q)"
+msgstr "Uso il nickname specificato per la rete (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:922
+msgid "Using server specific real name (%Q)"
+msgstr "Uso il vero nome specificato per il Server (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:929
+msgid "Using network specific real name (%Q)"
+msgstr "Uso il vero nome specificato per la rete (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:946
+msgid "Logging in as %Q!%Q :%Q"
+msgstr "Entro come %Q!%Q :%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:962
+#, c-format
+msgid "Sending %s as password"
+msgstr "Invio %s come password"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1033
+msgid "Executing scheduled network specific \"on connect\" commands"
+msgstr "Eseguo i comandi \"alla connessione\" definiti per il Server "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1042
+msgid "Executing scheduled server specific \"on connect\" commands"
+msgstr "Eseguo i comandi \"alla connessione\" specifici per il Server "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1051
+msgid "Executing scheduled identity specific \"on connect\" commands"
+msgstr "Eseguo i comandi \"alla connessione\" definiti per l'identità"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1101
+#, c-format
+msgid "The server refused the suggested nickname (%s) and named you %s instead"
+msgstr "Il Server ha rifiutato il nickname suggerito (%s) e ti assegna %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1113
+msgid "Login operations complete, happy ircing!"
+msgstr "Login completato, buon divertimento!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1123
+msgid "Executing scheduled network specific \"on login\" commands"
+msgstr "Eseguo i comandi \"al login\" definiti per il Server "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1132
+msgid "Executing scheduled server specific \"on login\" commands"
+msgstr "Eseguo i comandi \"al login\" specifici per il Server "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1141
+msgid "Executing scheduled identity specific \"on login\" commands"
+msgstr "Eseguo i comandi \"al login\" definiti per l'identità"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1153
+msgid "Setting configured user mode"
+msgstr "Imposto il modo utente configurato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1210
+msgid "Auto-joining network specific channels"
+msgstr "Entrata automatica nei canali specifici del Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1244
+msgid "Auto-joining server specific channels"
+msgstr "Entrata automatica nei canali specifici del Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1341
+msgid "Updating away state for channel %Q"
+msgstr "Aggiornamento dello stato di Away per il canale %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_customtoolbardescriptor.cpp:230
+msgid "Backward compatibility action for toolbar.define"
+msgstr "Azione di retrocompatibilità per toolbar.define"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:790
+msgid "Installation problems ?"
+msgstr "Problemi durante l'installazione?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:791
+msgid ""
+"<b>Ooops...</b><br><br><b>There are some reasons that make me think that "
+"your KVIrc installation is incomplete.</b><br><br>I might be wrong, but you "
+"seem to miss some of the features that the default KVIrc script provides."
+"This may happen because you have upgraded to an unstable cvs version, "
+"because you have accidentally deleted or damaged your configuration files, "
+"because you have installed an incomplete script or because you have hit a "
+"bug in KVIrc.<br><br>I can repeat the installation of the default script in "
+"order to restore the missing features.<br><b>Do you want the default script "
+"to be restored ?</b><br><br><font size=\"-1\">Hint: If you're a scripter and "
+"have intentionally removed some of the scripting features then you may "
+"safely click on \"No and Don't Ask Me Again\", otherwise it might be a good "
+"idea to click \"Yes\". If you still want to choose \"No\" you can always "
+"restore the default script by choosing the appropriate entry from the "
+"\"Scripting\" menu.</font>"
+msgstr ""
+"<b>Ooops...</b><br><br><b>Ci sono alcune ragioni che mi lasciano pensare che "
+"la tua installazione di KVIrc sia incompleta.<b><br><br>Potrei sbagliarmi, "
+"ma sembra che manchino alcune caratteristiche che lo script di default "
+"fornisce. Questo può succedere perché hai aggiornato ad una versione cvs non "
+"stabile, perché hai accidentalmente cancellato o danneggiato i tuoi file di "
+"configurazione, perché hai installato uno Script incompleto o perché hai "
+"trovato un bug in KVIrc.<br><br>Posso ripetere l'installazione dello Script "
+"di default in modo da ripristinare le caratteristiche mancanti.<br><b>Vuoi "
+"che ripristini lo Script di default?</b><br><br><font size=\"-1"
+"\">Suggerimento: se sei uno Scripter a hai intenzionalmente rimosso alcune "
+"delle caratteristiche di Scripting puoi fare click su \"No e non chiedermelo "
+"ancora\", altrimenti potrebbe essere una buona idea fare click su \"Sì\". Se "
+"vuoi scegliere \"No\" puoi sempre ripristinare lo Script di default "
+"scegliendo la voce appropriata nel menu \"Scripting\".</font>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:805
+msgid "No and Don't Ask Me Again"
+msgstr "No e non chiedermelo ancora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:828
+msgid "Restore Default Script - KVIrc"
+msgstr "Ripristina Script predefiniti - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:829
+msgid ""
+"You are about to restore the default script.<br>This will erase any script "
+"changes you have made.<br>Do you wish to proceed?"
+msgstr ""
+"Stai per ripristinare gli Script predefiniti.<br>Tutte le modifiche che "
+"avrai fatto andranno perdute.<br>Sei sicuro di voler procedere?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:872
+#, c-format
+msgid "Remote command received (%s ...)"
+msgstr "Ricevuto comando remoto (%s ...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1033
+msgid "File download failed"
+msgstr "Scaricamento file fallito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1035
+msgid "File download from %1 failed"
+msgstr "Scaricamento file da %1 fallito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1044
+msgid "File download successfully complete"
+msgstr "Scaricamento file completato con successo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1046
+msgid "File download from %1 successfully complete"
+msgstr "Scaricamento file da %1 completamente riuscito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1066
+msgid "Avatar download failed for %Q!%Q@%Q and url %Q: %Q"
+msgstr "Impossibile scaricare Avatar per %Q!%Q@%Q con URL %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2014
+#, c-format
+msgid "The commandline for media type '%s' seems to be broken"
+msgstr "La linea di comando per il tipo di file '%s' sembra essere malformata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2018
+#, c-format
+msgid "Media type of file %s matched to '%s' but no commandline specified"
+msgstr ""
+"Il tipo di file %s sembra corrispondere a '%s' ma non c'è nessuna linea di "
+"comando specificata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2023
+#, c-format
+msgid "No idea on how to play file %s (no media type match)"
+msgstr "Impossibile riprodurre il file %s (nessun tipo di file corrispondente)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:39
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:48
+#, c-format
+msgid "[SSL]: %c%s"
+msgstr "[SSL] %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:40
+#, c-format
+msgid "[SSL]: Cipher: %c%s"
+msgstr "[SSL]: Cifrario: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:41
+#, c-format
+msgid "[SSL]: Version: %c%s"
+msgstr "[SSL]: Versione: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:42
+#, c-format
+msgid "[SSL]: Bits: %c%d (%d used)"
+msgstr "[SSL]: Bit %c%d (usati %d)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:49
+#, c-format
+msgid "[SSL]: Version: %c%d"
+msgstr "[SSL]: Versione: %c%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:50
+#, c-format
+msgid "[SSL]: Serial number: %c%d"
+msgstr "[SSL]: Numero seriale: %c%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:51
+msgid "[SSL]: Subject:"
+msgstr "[SSL]: Soggetto:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:59
+#, c-format
+msgid "[SSL]: Common name: %c%s"
+msgstr "[SSL]: Nome comune: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:60
+#, c-format
+msgid "[SSL]: Organization: %c%s"
+msgstr "[SSL]: Organizzazione: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:61
+#, c-format
+msgid "[SSL]: Organizational unit: %c%s"
+msgstr "[SSL]: Unità organizzativa: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:62
+#, c-format
+msgid "[SSL]: Country: %c%s"
+msgstr "[SSL]: Paese: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:63
+#, c-format
+msgid "[SSL]: State or province: %c%s"
+msgstr "[SSL]: Stato o Provincia: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:64
+#, c-format
+msgid "[SSL]: Locality: %c%s"
+msgstr "[SSL]: Località: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:58
+msgid "[SSL]: Issuer:"
+msgstr "[SSL]: Distributore:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:65
+#, c-format
+msgid "[SSL]: Public key: %c%s (%d bits)"
+msgstr "[SSL]: Chiave pubblica: %c%s (%d bits)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:66
+#, c-format
+msgid "[SSL]: Signature type: %c%s"
+msgstr "[SSL]: Tipo di firma: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:73
+#, c-format
+msgid "[SSL]: Signature contents: %c%s"
+msgstr "[SSL]: Contenuto firma: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:82
+msgid "Peer X509 certificate"
+msgstr "Certificato X509 del Peer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:85
+msgid "[SSL]: The peer didn't provide a certificate"
+msgstr "[SSL]: il peer non ha fornito un certificato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1219
+msgid "Current transmission cipher"
+msgstr "Cifrario della trasmissione attuale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:92
+msgid "[SSL]: Can't find out the current cipher info"
+msgstr "[SSL]: non ho trovato le informazioni sul cifrario corrente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:113
+#, c-format
+msgid "[%s]: [SSL]: Using certificate file %s"
+msgstr "[%s]: [SSL]: uso il certificato %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:116
+#, c-format
+msgid "[%s]: [SSL ERROR]: File I/O error while trying to use the certificate file %s"
+msgstr "[%s]: [ERRORE SSL]: errore I/O file mentre cercavo di usare il certificato %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:146
+#, c-format
+msgid "[%s]: [SSL ERROR]: %s"
+msgstr "[%s]: [ERRORE SLL]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:136
+#, c-format
+msgid "[%s]: [SSL]: Using private key file %s"
+msgstr "[%s]: [SSL]: utilizzo il file di chiave privata %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:139
+#, c-format
+msgid "[%s]: [SSL ERROR]: File I/O error while trying to use the private key file %s"
+msgstr ""
+"[%s]: [ERRORE SSL]: errore I/O file mentre cercavo di usare il file di "
+"chiave privata %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:375
+msgid "Reconnect attempt aborted"
+msgstr "Tentativo di riconnessione annullato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:443
+msgid ""
+"This is the first connection in this IRC context: using the global server "
+"setting"
+msgstr ""
+"Questa è la prima connessione in questo Contesto IRC: utilizzo i settaggi "
+"globali del Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:483
+msgid "No servers available. Check the options dialog or use the /SERVER command"
+msgstr ""
+"Nessun Server disponibile. Controlla nella finestra delle opzioni o usa il "
+"comando /SERVER"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:491
+msgid ""
+"Ooops.. you've hit a bug in the servers database... I have found a server "
+"but not a network..."
+msgstr ""
+"Ooops... hai trovato un bug nel database dei Server: ho trovato un Server ma "
+"non la sua rete..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:504
+msgid "No proxy hosts available, resuming direct connection"
+msgstr "Nessun Host Proxy disponibile, riprendo la connessione diretta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:582
+#, c-format
+msgid "Connection attempt failed [%s]"
+msgstr "Connessione fallita [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:600
+#, c-format
+msgid "Will attempt to reconnect in %d seconds"
+msgstr "Nuovo tentativo di connessione tra %d secondi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:604
+#, c-format
+msgid "%d"
+msgstr "%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:606
+#, c-format
+msgid "%d of %d"
+msgstr "%d di %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:633
+#, c-format
+msgid "Maximum number of reconnect attempts reached (%d): giving up"
+msgstr "Ranggiunto il numero massimo di tentativi di riconnessione (%d): fine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:647
+msgid ""
+"The connection attempt failed while using a cached IP address for the "
+"current server"
+msgstr ""
+"Il tentativo di connesione è fallito per l'uso dell'indirizzo IP del Server "
+"presente nella cache"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:648
+msgid "The problem *might* be caused by an updated DNS entry"
+msgstr "Il problema *potrebbe* essere causato da una voce aggiornata del DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:649
+msgid "Try reconnecting with caching disabled"
+msgstr "Tentare nuovamente la connessione disabilitando il Caching"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:673
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:382
+msgid "%Q established [%s (%s:%u)]"
+msgstr "%Q stabilita [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Secure connection"
+msgstr "Connessione sicura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Connection"
+msgstr "Connessione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:779
+#, c-format
+msgid "Connection terminated [%s (%s:%u)]"
+msgstr "Connessione terminata [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:791
+msgid "The connection terminated unexpectedly. Trying to reconnect..."
+msgstr "La connessione è terminata inaspettatamente. Provo la riconnessione..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:874
+msgid "Sent QUIT, waiting for the server to close the connection..."
+msgstr ""
+"Inviato segnale QUIT, aspetto una risposta dal Server per chiudere la "
+"connessione..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:685
+msgid "Normal text"
+msgstr "Testo normale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:686
+msgid "Selection"
+msgstr "Selezione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:687
+msgid "Highlighted text"
+msgstr "Testo evidenziato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:688
+msgid "URL foreground"
+msgstr "URL in primo piano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:689
+msgid "Link overlay foreground"
+msgstr "Sostituzione collegamento in primo piano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:690
+msgid "Parser error"
+msgstr "Errore del Parser"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:691
+msgid "Parser warning"
+msgstr "Avviso del Parser"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:692
+msgid "Host lookup result"
+msgstr "Risultato risoluzione Host"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:693
+msgid "Socket message"
+msgstr "Messaggio dal Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:694
+msgid "Socket warning"
+msgstr "Avviso del Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:695
+msgid "Socket error"
+msgstr "Errore del Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:696
+msgid "System error"
+msgstr "Errore del sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:697
+msgid "Raw data to server"
+msgstr "Dati RAW al Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:698
+msgid "Connection status"
+msgstr "Stato della connessione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:699
+msgid "System warning"
+msgstr "Avviso del sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:700
+msgid "System message"
+msgstr "Messaggio del sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:701
+msgid "Unhandled server reply"
+msgstr "Risposta del server non gestita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:702
+msgid "Server information"
+msgstr "Informazioni del Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:703
+msgid "Server Message of the Day"
+msgstr "'MOTD - Message of the Day' del Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:704
+msgid "Server ping"
+msgstr "Ping del Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:705
+msgid "Join message"
+msgstr "Messaggio di entrata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:706
+msgid "Part message"
+msgstr "Messaggio di uscita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:707
+msgid "Unrecognized/broken message"
+msgstr "Messaggio sconosciuto/malformato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:708
+msgid "Topic message"
+msgstr "Messaggio del Topic"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:709
+msgid "Own private message"
+msgstr "Proprio messaggio privato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:710
+msgid "Channel private message"
+msgstr "Messaggio privato del canale "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:711
+msgid "Query private message"
+msgstr "Messaggio privato della Query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:712
+msgid "CTCP reply"
+msgstr "risposta CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:713
+msgid "CTCP request replied"
+msgstr "risposta alla richiesta CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:714
+msgid "CTCP request ignored"
+msgstr "richiesta CTCP ignorata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:715
+msgid "CTCP request flood warning"
+msgstr "avviso di flood per troppe richieste CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:716
+msgid "CTCP request unknown"
+msgstr "richiesta CTCP sconosciuta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:717
+msgid "User action"
+msgstr "Azioni utenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:718
+msgid "Avatar change"
+msgstr "Cambio di Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:719
+msgid "Quit message"
+msgstr "Messaggio di uscita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:720
+msgid "Split message"
+msgstr "Messaggio di Split"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:721
+msgid "Quit on netsplit message"
+msgstr "Esci in caso di messaggio di Netsplit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:722
+msgid "Nick changes"
+msgstr "Cambi di nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:723
+msgid "+o mode change"
+msgstr "modifica modo +o"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:724
+msgid "-o mode change"
+msgstr "modifica modo -o"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:725
+msgid "+v mode change"
+msgstr "modifica modo +v"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:726
+msgid "-v mode change"
+msgstr "modifica modo -v"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:727
+msgid "Multiple user mode change"
+msgstr "Cambio dei modi su utenti multipli"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:728
+msgid "Channel key change"
+msgstr "Chiave del canale cambiata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:729
+msgid "Channel limit change"
+msgstr "Limite del canale cambiato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:730
+msgid "+b mode change"
+msgstr "modifica modo +b"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:731
+msgid "-b mode change"
+msgstr "modifica modo -b"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:732
+msgid "+e mode change"
+msgstr "modifica modo +e"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:733
+msgid "-e mode change"
+msgstr "modifica modo -e"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:734
+msgid "+I mode change"
+msgstr "modifica modo +I"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:735
+msgid "-I mode change"
+msgstr "modifica modo -I"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:736
+msgid "Multiple channel mode change"
+msgstr "Modi multipli del canale cambiati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:737
+msgid "Who reply"
+msgstr "Risposta al Who"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:738
+msgid "DCC request"
+msgstr "Richiesta DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:739
+msgid "DCC message"
+msgstr "Messaggi DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:740
+msgid "DCC error"
+msgstr "Errore DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:741
+msgid "Nickname problem"
+msgstr "Problemi col Nickname"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:742
+msgid "Whois user reply"
+msgstr "Risposta al Whois utente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:743
+msgid "Whois channels reply"
+msgstr "Risposta al Whois del canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:744
+msgid "Whois idle reply"
+msgstr "Risposta al Whois Idle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:745
+msgid "Whois server reply"
+msgstr "Risposta al Whois Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:746
+msgid "Whois other reply"
+msgstr "Altra risposta al Whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:747
+msgid "Channel creation time reply"
+msgstr "Risposta al tempo di creazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:748
+msgid "Notify list joins"
+msgstr "Aggiunta alla Notify List"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:749
+msgid "Notify list leaves"
+msgstr "Uscito dalla Notify List"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:750
+msgid "Own encrypted private message"
+msgstr "Proprio messaggio privato criptato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:751
+msgid "Channel encrypted private message"
+msgstr "Messaggio privato del canale criptato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:752
+msgid "Query encrypted private message"
+msgstr "Messaggio privato della Query criptato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:753
+msgid "DCC chat message"
+msgstr "Messaggio DCC Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:754
+msgid "Encrypted DCC chat message"
+msgstr "Messaggio di DCC Chat criptato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:755
+msgid "Login operations completed"
+msgstr "Operazione di Login completata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:756
+msgid "Kick action"
+msgstr "Azione kick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:757
+msgid "Links reply"
+msgstr "Risposta Link"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:758
+msgid "Spam report"
+msgstr "Segnalazione Spam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:759
+msgid "ICQ message"
+msgstr "messaggio ICQ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:760
+msgid "ICQ user-message"
+msgstr "Messaggio utente ICQ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:761
+msgid "Outgoing ICQ user-message"
+msgstr "Messaggio utente ICQ in uscita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:762
+msgid "Channel notice"
+msgstr "Notice del canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:763
+msgid "Encrypted channel notice"
+msgstr "Notice del canale criptato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:764
+msgid "Query notice"
+msgstr "Notice Query "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:765
+msgid "Encrypted query notice"
+msgstr "Notice della Query criptato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:766
+msgid "Server notice"
+msgstr "Notice del Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:767
+msgid "Halfop mode change"
+msgstr "Cambio di modo in HalfOp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:768
+msgid "Unknown CTCP reply"
+msgstr "Risposta CTCP sconosciuta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:769
+msgid "NickServ message"
+msgstr "messaggi dal NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:770
+msgid "ChanServ message"
+msgstr "messaggi dal ChanServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:771
+msgid "Away message"
+msgstr "Messaggio di Away"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:772
+msgid "Ident message"
+msgstr "Messaggio di Ident"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:773
+msgid "Channel list message"
+msgstr "Messaggio della Lista del canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:774
+msgid "Half-deop mode change"
+msgstr "Cambio di modo in Half-Deop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:775
+msgid "Invite message"
+msgstr "Messaggio di invito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:776
+msgid "Multimedia message"
+msgstr "Messaggio multimediale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:777
+msgid "Query trace message"
+msgstr "Messaggio di Query di cui si tiene traccia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:778
+msgid "Wallops message"
+msgstr "Messaggio Wallop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:779
+msgid "Join error message"
+msgstr "Messaggio di errore d'entrata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:780
+msgid "Broadcast private message"
+msgstr "Messaggio privato in Broadcast"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:781
+msgid "Broadcast notice"
+msgstr "Notifica Broadcast"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:782
+msgid "Am kicked"
+msgstr "Sono stato kickato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:783
+msgid "Am op'd"
+msgstr "Sono stato Oppato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:784
+msgid "Am voiced"
+msgstr "Sono stato Voiced"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:785
+msgid "Am deop'd"
+msgstr "Sono stato De-Oppato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:786
+msgid "Am devoiced"
+msgstr "Sono stato De-Voiced"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:787
+msgid "Am halfop'd"
+msgstr "Sono stato HalfOppato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:788
+msgid "Am de-halfop'd"
+msgstr "Sono stato De-HalfOppato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:789
+msgid "Ban matching my mask"
+msgstr "Il Ban combacia con la mia maschera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:790
+msgid "Unban matching my mask"
+msgstr "Il modo non-Ban combacia con la mia maschera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:791
+msgid "Ban exception matching my mask"
+msgstr "L'eccezione del Ban combacia con la mia maschera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:792
+msgid "Ban unexception matching my mask"
+msgstr "La limitazione del Ban combacia con la mia maschera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:793
+msgid "Invite exception matching my mask"
+msgstr "L'eccezione d'invito combacia con la mia maschera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:794
+msgid "Invite unexception matching my mask"
+msgstr "La limitazione d'invito combacia con la mia maschera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:795
+msgid "Ignored user message"
+msgstr "Messaggi dell'utente ignorati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:796
+msgid "Server statistics"
+msgstr "Statistiche del Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:797
+msgid "SSL message"
+msgstr "Messaggio SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:108
+msgid "Search"
+msgstr "Cerca"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:799
+msgid "Generic success"
+msgstr "Successo generico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:800
+msgid "Generic status"
+msgstr "Stato generico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:801
+msgid "Generic verbose message"
+msgstr "Messaggio descrittivo generico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:802
+msgid "Generic warning"
+msgstr "Avviso generico "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:803
+msgid "Generic error"
+msgstr "Errore generico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:804
+msgid "Generic critical error"
+msgstr "Errore critico generico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:805
+msgid "Chan admin status set"
+msgstr "Impostato lo stato di Admin del canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:806
+msgid "Chan admin status unset"
+msgstr "Rimosso lo stato di Admin del canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:807
+msgid "Own chan admin status set"
+msgstr "Stato di Amministratore del canale impostato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:808
+msgid "Own chan admin status unset"
+msgstr "Stato di Amministratore del canale non impostato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:809
+msgid "Userop mode change"
+msgstr "Modo Urser-Op cambiato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:810
+msgid "User-deop mode change"
+msgstr "Modo User-Deop cambiato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:811
+msgid "Am userop'd"
+msgstr "Sono stato Oppato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:812
+msgid "Am de-userop'd"
+msgstr "Sono stato De-oppato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:813
+msgid "Verbose/Debug"
+msgstr "Dettagliato/Debug"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:814
+msgid "Chan owner status set"
+msgstr "Stato Owner del canale impostato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:815
+msgid "Chan owner status unset"
+msgstr "Stato Owner del canale rimosso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:816
+msgid "Own chan owner status set"
+msgstr "Proprio stato di Owner del canale impostato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:817
+msgid "Own chan owner status unset"
+msgstr "Proprio stato di Owner del canale rimosso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:818
+msgid "Server error"
+msgstr "Errore del Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:22
+msgid "Help"
+msgstr "Aiuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:820
+msgid "Text Encoding Server message"
+msgstr "Messaggio di codifica del server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:826
+msgid "BitTorrent message"
+msgstr "Messaggio BitTorrent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:970
+msgid "Missing absolute directory for the theme information"
+msgstr "Manca la directory assoluta per le informazioni del tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:978
+msgid "Failed to create the theme directory"
+msgstr "Impossibile creare la directory del tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1061
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1096
+msgid "Failed to save one of the theme images"
+msgstr "Impossibile salvare una delle immagini del tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1074
+msgid "Failed to create the theme subdirectory"
+msgstr "Impossibile creare la sottodirectory del tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1213
+msgid "Boolean options (1/0)"
+msgstr "Opzioni booleane (1/0)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1214
+msgid "Rectangle options (x,y,width,height)"
+msgstr "Opzioni del rettangolo (x, y, larghezza, altezza)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1215
+msgid "String options (string value)"
+msgstr "Opzioni della stringa (valore della stringa)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1216
+msgid "Color options (#RRGGBB)"
+msgstr "Opzioni dei colori (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1217
+msgid "Mirccolor options (#RRGGBB)"
+msgstr "Opzioni del mIRC-color (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1218
+msgid "Irc context color options (#RRGGBB)"
+msgstr "Opzioni dei colori del Contesto IRC (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1219
+msgid "Pixmap options (image path)"
+msgstr "Opzioni del Pixmap (percorso dell'immagine)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1220
+msgid "Unsigned integer options (unsigned integer constant)"
+msgstr "Opzioni intero senza segno (costante intera senza segno)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1221
+msgid "Font options (family,pointsize,style,charset,weight,flags (biusf))"
+msgstr ""
+"Opzioni dei Font (famiglia, dimensione, stile, charset, grandezza, flags "
+"(biusf))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1222
+msgid "Message color options (image_id,foreground,background,logFlag (0/1))"
+msgstr "Opzioni dei colori dei messaggi (image_id, primo piano, sfondo, log (0/1))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1223
+msgid "String list options (comma separated list of strings)"
+msgstr "Opzioni delle stringhe (lista di stringhe separate da virgole)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC"
+msgstr "IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC Context related actions"
+msgstr "Azione legate al Contesto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic"
+msgstr "Generico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic actions"
+msgstr "Azioni generiche"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Settings"
+msgstr "Impostazioni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Actions related to settings"
+msgstr "Azioni collegate alle opzioni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:30
+msgid "Scripting"
+msgstr "Scripting"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+msgid "Scripting related actions"
+msgstr "Azioni collegate allo Scripting"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "GUI"
+msgstr "GUI"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "Actions related to the Graphic User Interface"
+msgstr "Azioni collegate all'interfaccia grafica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:77
+msgid "Channel"
+msgstr "Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+msgid "IRC Channel related actions"
+msgstr "Azioni legate al Canale IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Tools"
+msgstr "Strumenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Actions that will appear in the \"Tools\" menu"
+msgstr "Azioni che appariranno nel menu \"Tools\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:157
+msgid "Sending out PING based lag probe"
+msgstr "Invio misurazione Lag basata su PING"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:167
+msgid "Sending out CTCP based lag probe"
+msgstr "Invio misurazione Lag basata su CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:188
+#, c-format
+msgid "Registered lag check with reliability %u (%s)"
+msgstr "Registrato controllo lag con affidabilità %u (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:220
+#, c-format
+msgid "Lag check completed (%s)"
+msgstr "Misurazione Lag completa (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:259
+#, c-format
+msgid "Lag check aborted (%s)"
+msgstr "Misurazione Lag annullata (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:143
+msgid "Hostname resolution aborted"
+msgstr "Risoluzione Hostname terminata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:156
+msgid "Attempting %Q to %Q (%Q) on port %u"
+msgstr "Tentativo di %Q a %Q (%Q) sulla porta %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "secure connection"
+msgstr "connessione sicura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "connection"
+msgstr "connessione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:165
+#, c-format
+msgid "Attempting to 'bounce' on proxy %s on port %u (protocol %s)"
+msgstr "Tento di 'rimbalzare' sul Proxy %s sulla porta %u (protocollo %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:194
+#, c-format
+msgid "Using cached proxy IP address (%s)"
+msgstr "Uso l'indirizzo IP del Proxy che ho in memoria (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:237
+msgid "Unable to look up the IRC proxy hostname: Can't start the DNS slave"
+msgstr ""
+"Impossibile risolvere l'Hostname del Proxy IRC: impossibile avviare lo slave "
+"DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:265
+msgid "Resuming direct server connection"
+msgstr "Riprendo la connessione diretta col Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:248
+#, c-format
+msgid "Looking up the proxy hostname (%s)..."
+msgstr "Cerco l'Hostname del Proxy (%s)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:261
+msgid "Can't find the proxy IP address: %Q"
+msgstr "Impossibile risolvere l'indirizzo IP del Proxy: (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:271
+msgid "Proxy hostname resolved to %Q"
+msgstr "Hostname del Proxy risolto in %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:284
+msgid "Proxy %Q has a nickname: %Q"
+msgstr "Il Proxy %Q ha il nickname: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:322
+#, c-format
+msgid "Using cached server IP address (%s)"
+msgstr "Uso l'indirizzo IP del Server che ho in memoria (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:354
+msgid "Unable to look up the server hostname: Can't start the DNS slave"
+msgstr "Impossibile risolvere l'Hostname del Server: impossibile avviare lo slave DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:359
+#, c-format
+msgid "Looking up the server hostname (%s)..."
+msgstr "Cerco l'Hostname del Server (%s)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:373
+msgid "Can't find the server IP address: %Q"
+msgstr "Impossibile trovare l'indirizzo IP del Server: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:380
+msgid "If this server is an IPv6 one, try /server -i %Q"
+msgstr "Se questo server usa IPv6, prova /server -i %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:390
+msgid "Server hostname resolved to %Q"
+msgstr "Hostname del Server risolto in %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:400
+msgid "Real hostname for %Q is %Q"
+msgstr "Vero Hostname per %Q è %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:414
+msgid "Server %Q has a nickname: %Q"
+msgstr "Il Server %Q ha il nickname %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:468
+msgid "The specified bind address (%Q) is not valid"
+msgstr "L'indirizzo specificato per il binding (%Q) non è valido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:473
+msgid ""
+"The specified bind address (%Q) is not valid (the interface it refers to "
+"might be down)"
+msgstr ""
+"L'indirizzo specificato per il binding (%Q) non è valido (l'interfaccia a "
+"cui si riferisce potrebbe non essere attiva)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:493
+#, c-format
+msgid "The system-wide IPv6 bind address (%s) is not valid"
+msgstr "L'indirizzo IPv6 per il binding (%s) non è valido "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:500
+#, c-format
+msgid ""
+"The system-wide IPv6 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+"L'indirizzo IPv6 per il binding (%s) non è valido (l'interfaccia a cui si "
+"riferisce potrebbe essere inattiva)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:522
+#, c-format
+msgid "The system-wide IPv4 bind address (%s) is not valid"
+msgstr "L'indirizzo IPv4 per il binding (%s) non è valido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:529
+#, c-format
+msgid ""
+"The system-wide IPv4 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+"L'indirizzo IPv4 per il binding (%s) non è valido (l'interfaccia a cui si "
+"riferisce potrebbe essere inattiva)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:230
+msgid "Channel operators"
+msgstr "Operatori del Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:231
+msgid "Voiced users"
+msgstr "Utenti Voice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:232
+msgid "Half-operators"
+msgstr "Half-Operators"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:233
+msgid "Ban masks"
+msgstr "Maschera Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:234
+msgid "Color free (no ANSI colors)"
+msgstr "Nessun colore (no colori ANSI)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:235
+msgid "Ban exception masks"
+msgstr "Maschera eccezioni ai Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:236
+msgid "Invite exception masks or forbid /INVITE"
+msgstr "Eccezione nella maschera di Invito o /INVITE proibito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:237
+msgid "Secret"
+msgstr "Segreto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:238
+msgid "Private"
+msgstr "Privato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:239
+msgid "Topic change restricted"
+msgstr "Topic del canale riservato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:240
+msgid "Invite only"
+msgstr "Solo invito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:241
+msgid "No external messages"
+msgstr "Nessun messaggio esterno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:242
+msgid "Anonymous or protected user"
+msgstr "Utente anonimo o protetto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:243
+msgid "Quiet or channel owner"
+msgstr "Silenzioso o Owner del Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:244
+msgid "Limited number of users"
+msgstr "Numero degli utenti limitato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:245
+msgid "Key"
+msgstr "Chiave"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:246
+msgid "Moderated"
+msgstr "Moderato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:247
+msgid "Registered"
+msgstr "Registrato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:248
+msgid "Censor swear words"
+msgstr "Censura brutte parole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:249
+msgid "Impossible to speak and change nick if not authenticated with NickServ"
+msgstr ""
+"Impossibile parlare e cambiare il nickname se non sei autenticato con "
+"NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:250
+msgid "Impossible to change nick if not authenticated with NickServ"
+msgstr "Impossibile cambiare nickname se non sei autenticato con NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:251
+msgid "Only registered nicks can join"
+msgstr "Solo i nickname registrati possono entrare"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:252
+msgid "No kicks able (unless U-Line)"
+msgstr "Non posso kickare (senza una U-Line)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:253
+msgid "IRC-Op only channel"
+msgstr "canale solo per IRC-Op "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:254
+msgid "Server/Network/Tech Admin only channel"
+msgstr "Canale solo per Server/Network/Tech Admin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:255
+msgid "Forbid /KNOCK"
+msgstr "/KNOCK proibito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:256
+msgid "Strip colors"
+msgstr "Elimina colori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:257
+msgid "Redirect on channel full"
+msgstr "Redirigi se il Canale è pieno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:258
+msgid "Forbid channel CTCPs"
+msgstr "Proibisci CTCP al Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:259
+msgid "User-operators OR Auditorium: /NAMES and /WHO show only ops"
+msgstr "Utente operatore O Auditorium: /NAMES e /WHO mostrano solo gli Operatori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:260
+msgid "Only 7-bit letters in nicknames allowed"
+msgstr "Sono consentite solo lettere a 7-bit nei nickname"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:261
+msgid "Impossible to use both 7-bit and 8-bit letters in nicknames"
+msgstr "Impossibile usare insieme lettere a 7-bit e a 8-bit nei nickname"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:270
+msgid "o: IRC operator (OPER)"
+msgstr "o: operatore IRC (OPER)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:271
+msgid "O: Local IRC operator (LOCOP)"
+msgstr "O: operatore locale IRC (LOCOP)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:272
+msgid "i: Invisible"
+msgstr "i: invisibile"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:273
+msgid "w: Recipient for WALLOPS messages"
+msgstr "w: destinatario dei messaggi Wallops"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:274
+msgid ""
+"r: User with restricted connection (or recipient for messages about rejected "
+"bots)"
+msgstr ""
+"r: utente con connessione ristretta (o destinatario dei messaggi su bot "
+"rifiutati)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:275
+msgid "s: Recipient for server notices"
+msgstr "s: destinatario dei Notice del Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:276
+msgid "z: Recipient for oper wallop messages"
+msgstr "z: destinatario dei messaggi Wallop per Operatori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:277
+msgid "c: Recipient for cconn messages"
+msgstr "c: destinatario dei messaggi cconn"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:278
+msgid "k: Recipient for server kill messages"
+msgstr "k: destinatario dei messaggi kill del Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:279
+msgid "f: Recipient for full server notices"
+msgstr "f: destinatario degli avvisi completi del Server "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:280
+msgid "y: Spy :)"
+msgstr "y: spia :)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:281
+msgid "d: Obscure 'DEBUG' flag"
+msgstr "d: flag oscura per 'DEBUG'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:282
+msgid "n: Recipient for nick changes"
+msgstr "n: destinatario dei cambi di nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:100
+msgid "Ops... for some reason the link filter object has been destroyed"
+msgstr "Ops... per qualche ragione l'oggetto è stato distrutto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:138
+msgid "Using filtered IRC protocol: Link filter is \"%Q\""
+msgstr "Uso il protocollo IRC filtrato: il collegamento filtrato è \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:143
+msgid "Failed to set up the link filter \"%Q\", will try with plain IRC"
+msgstr ""
+"Fallita attivazione del Filtro di collegamento \"%Q\", provo con il "
+"protocollo IRC semplice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:202
+msgid "Failed to start the connection: %Q"
+msgstr "Inizio connessione fallito: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:368
+msgid "Contacting %Q %s (%s) on port %u"
+msgstr "Contatto %Q %s (%s) sulla porta %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "proxy host"
+msgstr "Host Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "IRC server"
+msgstr "server IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:375
+#, c-format
+msgid "Low-level transport connection established [%s (%s:%u)]"
+msgstr "Stabilita Connessione a basso livello di trasporto [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:379
+msgid "Starting Secure Socket Layer handshake"
+msgstr "Inizio handshake per il Secure Socket Layer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Secure proxy connection"
+msgstr "Connessione sicura al Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Proxy connection"
+msgstr "Connessione al Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:387
+msgid "Negotiating relay information"
+msgstr "Negoziazione informazioni di Relay"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:390
+msgid "Sent connection request, waiting for acknowledgement"
+msgstr "Inviata richiesta di connessione, aspetto il riconoscimento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:393
+msgid "Sent target host data, waiting for acknowledgement"
+msgstr "Inviati dati dall'Host, aspetto il riconoscimento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:396
+msgid "Sent auth method request, waiting for acknowledgement"
+msgstr "Inviata richiesta del metodo di autenticazione, aspetto il riconoscimento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:399
+msgid "Sent username and password, waiting for acknowledgement"
+msgstr "Nome utente e password inviati, attendo il riconoscimento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:402
+msgid "Sent connection request, waiting for \"HTTP 200\" acknowledgement"
+msgstr "Inviata richiesta di connessione, aspetto il riconoscimento \"HTTP 200\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:176
+msgid "[SSL]: %Q"
+msgstr "[SSL] %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:181
+msgid "[SSL ERROR]: %Q"
+msgstr "[ERRORE SSL]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:190
+msgid "[PROXY]: %Q"
+msgstr "[PROXY]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:200
+msgid "[PROXY ERROR]: %Q"
+msgstr "[ERRORE del PROXY]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:207
+msgid "[SOCKET]: %Q"
+msgstr "[SOCKET]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:212
+msgid "[SOCKET ERROR]: %Q"
+msgstr "[ERRORE del SOCKET]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:218
+msgid "[SOCKET WARNING]: %Q"
+msgstr "[AVVISO del SOCKET]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:337
+#, c-format
+msgid "Binding to local address %s"
+msgstr "Binding all'indirizzo locale %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:341
+#, c-format
+msgid ""
+"Binding to local address %s failed: the kernel will choose the correct "
+"interface"
+msgstr ""
+"Fallito binding all'indirizzo locale %s: il kernel sceglierà l'interfaccia "
+"corretta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:637
+msgid "Using HTTP protocol."
+msgstr "Uso il protocollo HTTP."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:683
+msgid "Using SOCKSV4 protocol."
+msgstr "Uso il protocollo SOCKSV4."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:756
+msgid "Using SOCKSv5 protocol."
+msgstr "Uso il protocollo SOCKSv5."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:771
+msgid "We can accept auth method 0 (no auth)"
+msgstr "Possiamo accettare il metodo di autenticazione 0 (nessuna autenticazione)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:779
+msgid "We can accept auth method 0 (no auth) or 2 (user/pass)"
+msgstr ""
+"Possiamo accettare il metodo di autenticazione 0 (nessuna autenticazione) o "
+"2 (utente/parola_chiave)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:958
+msgid "Proxy response: auth OK: access granted"
+msgstr "Riposta del Proxy: autenticazione OK - accesso garantito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:993
+msgid "Proxy response: Auth method OK: using method 0 (no auth)"
+msgstr ""
+"Risposta del Proxy: metodo di autenticazione OK - utilizzo metodo 0 (nessuna "
+"autenticazione)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1000
+msgid "Proxy response: Auth method OK: using method 2 (user/pass)"
+msgstr ""
+"Risposta del Proxy: metodo di autenticazione OK - utilizzo metodo 2 (utente/"
+"parola_chiave)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1056
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1113
+msgid "Proxy response: target data OK: request granted"
+msgstr "Risposta del Proxy: destinazione dei dati OK - richiesta consentita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1153
+msgid "Proxy response: "
+msgstr "Risposta del Proxy:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1164
+msgid "Proxy said something about: \n"
+msgstr "Il Proxy ha detto qualcosa a proposito: \n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1205
+msgid "Server X509 certificate"
+msgstr "Certificato X509 del Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1209
+msgid "The server didn't provide a certificate"
+msgstr "Il Server non ha fornito alcun certificato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1223
+msgid "Unable to determine the current cipher"
+msgstr "Impossibile determinare la cifratura corrente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1768
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1788
+msgid "Partial socket write: packet broken into smaller pieces."
+msgstr "Socket parzialmente scritto: paccheti frammentati in piccoli pezzi."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:60
+msgid "The theme information file does not exist"
+msgstr "Il file di informazioni del tema non esiste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:71
+msgid ""
+"This KVIrc executable is too old for this theme (minimum theme engine "
+"version required is %Q while this theme engine has version %s)"
+msgstr ""
+"L'eseguibile di KVIrc è troppo vecchio per eseguire questo tema (la versione "
+"minima richiesta è %Q mentre quella attuale è %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:80
+msgid "Theme information file is not valid"
+msgstr "FIle di informazioni del tema non valido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:248
+msgid "Failed to load the specified screenshot image"
+msgstr "Impossibile caricare lo screenshot specificato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:257
+msgid "Invalid option"
+msgstr "Opzione invalida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:265
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:293
+msgid "Failed to save the screenshot image"
+msgstr "Impossibile salvare lo screenshot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:117
+msgid "Configure Servers..."
+msgstr "Configura Server..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:118
+msgid "Allows you to configure the servers and eventually to connect to them"
+msgstr "Permette di configurare i Server ed eventualmente di collegarti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:128
+msgid "Manage Addons..."
+msgstr "Gestisci Addon..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:129
+msgid "Allows you to manage the script-based addons"
+msgstr "Permette la gestione degli Script aggiuntivi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:139
+msgid "Configure Registered Users..."
+msgstr "Configura utenti registrati..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:140
+msgid "Shows a dialog that allows editing the registered user entries"
+msgstr "Mostra una finestra che permette la modifica degli utenti registrati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:150
+msgid "Configure Identity..."
+msgstr "Configura identità..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:151
+msgid "Allows you to configure nickname, username, avatar etc..."
+msgstr "Permette di configurare il nickname, il nome utente, l'Avatar etc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:161
+msgid "Show SocketSpy..."
+msgstr "Mostra Spia Socket..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:162
+msgid "Shows a window that allows monitoring the socket traffic"
+msgstr "Mostra una finestra che permette di monitorare il traffico sui Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:172
+msgid "Get Network Links"
+msgstr "Scarica Link della rete"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:173
+msgid "Shows a window that allows viewing the network links"
+msgstr "Mostra una finestra che abiliti la vista dei Link della rete"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:183
+msgid "Get Channel List"
+msgstr "Scarica Lista dei Canali"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:184
+msgid "Shows a window that allows listing the network channels"
+msgstr "Mostra una finestra che abiliti la lista dei canali della rete"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:194
+msgid "Configure KVIrc..."
+msgstr "Configura KVIrc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:195
+msgid "Shows the general options dialog"
+msgstr "Mostra la finestra delle Opzioni Generali"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:205
+msgid "Configure Theme..."
+msgstr "Configura Tema..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:206
+msgid "Shows the theme options dialog"
+msgstr "Mostra la finestra delle Opzioni del Tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:216
+msgid "Manage Themes..."
+msgstr "Gestisci Temi..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:217
+msgid "Allows you to manage the themes"
+msgstr "Ti permette la gestione dei temi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:227
+msgid "Customize Toolbars..."
+msgstr "Personalizza Barra degli Strumenti..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:228
+msgid "Shows a window that allows editing script toolbars"
+msgstr ""
+"Mostra una finestra che permette la modifica degli Script delle Barre degli "
+"Strumenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:239
+msgid "Join Channels..."
+msgstr "Entra nei canali..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:240
+msgid "Shows a dialog that allows you joing channels"
+msgstr "Mostra una finestra che ti permette di entrare nei canali"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:251
+msgid "Edit Actions..."
+msgstr "Modifica Azioni..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:252
+msgid "Shows a window that allows editing actions"
+msgstr "Mostra una finestra che permette la modifica delle Azioni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:262
+msgid "Edit Aliases..."
+msgstr "Modifica Alias..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:263
+msgid "Shows a window that allows editing aliases"
+msgstr "Mostra una finestra che permette la modifica degli Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:273
+msgid "Edit Events..."
+msgstr "Modifica Eventi..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:274
+msgid "Shows a window that allows editing script events"
+msgstr "Mostra una finestra che permette la modifica degli Eventi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:284
+msgid "Edit Popups..."
+msgstr "Modifica Popup..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:285
+msgid "Shows a window that allows editing popup menus"
+msgstr "Mostra una finestra che permette la modifica dei Menu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:295
+msgid "Edit Raw Events..."
+msgstr "Modifica eventi Raw..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:296
+msgid "Shows a window that allows editing raw scripting events"
+msgstr "Mostra una finestra che permette la modifica degli Eventi Raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:306
+msgid "New Script Tester"
+msgstr "Script Tester"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:307
+msgid "Creates an embedded editor for long scripts"
+msgstr "Crea un Editor integrato per gli Script molto lunghi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:317
+msgid "Execute Script..."
+msgstr "Esegui Script..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:318
+msgid "Allows executing a KVS script from file"
+msgstr "Permette l'esecuzione di uno script KVS da un file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:328
+msgid "Help Index"
+msgstr "Indice dell'Aiuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:329
+msgid "Shows the documentation index"
+msgstr "Mostra l'indice della documentazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:340
+msgid "Allows subscribing to the KVIrc mailing list"
+msgstr "Permette l'iscrizionee alla Mailing List di KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:350
+msgid "KVIrc WWW"
+msgstr "KVIrc WWW"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:351
+msgid "Opens the KVIrc homepage"
+msgstr "Apre l'Homepage di KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:361
+msgid "KVIrc Russian WWW"
+msgstr "KVIrc WWW in Russia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:362
+msgid "Opens the KVIrc homepage in russian"
+msgstr "Apre l'Homepage di KVIrc in Russo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:372
+msgid "Acquire Screenshot"
+msgstr "Acquisisci Screenshot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:373
+msgid "Acquires a Screenshot of the KVIrc main window"
+msgstr "Acquisisci uno Screenshot della finestra principale di KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:385
+msgid "Cascade windows"
+msgstr "Finestre a cascata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:386
+msgid "Arranges the MDI windows in a maximized-cascade fashion"
+msgstr "Arrangia le finestre MDI in uno stile a cascata-massimizzata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:397
+msgid "Tile windows"
+msgstr "Finestre affiancate"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:398
+msgid "Tiles the MDI windows with the currently selected tile method"
+msgstr "Affianca le finestre MDI con il metodo di affiancamento selezionato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:409
+msgid "Minimize all windows"
+msgstr "Minimizza tutte le finestre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:410
+msgid "Minimized all the currently visible MDI windows"
+msgstr "Minimizza tutte le finestre MDI visibili al momento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:421
+msgid "New IRC Context"
+msgstr "Nuovo Contesto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:422
+msgid "Creates a new IRC context console"
+msgstr "Crea una nuova Console per il Contesto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:433
+msgid "Quit KVIrc"
+msgstr "Chiudi KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:434
+msgid "Quits KVIrc closing all the current connections"
+msgstr "Esce da KVIrc chiudendo tutte le connessioni correnti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:448
+msgid "IRC Context Display"
+msgstr "Display del Contesto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:449
+msgid "Shows a small display with IRC context informations"
+msgstr "Mostra un piccolo Display con informazioni sul Contesto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:520
+msgid "Acts as a separator for other items: performs no action"
+msgstr "Agisce da separatore tra gli altri elementi: non compie alcuna azione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:554
+msgid "Connect/Disconnect"
+msgstr "Connetti/Disconnetti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:555
+msgid "Allows you to connect to a server or to terminate the current connection"
+msgstr "Permette di collegarti ad un Server o di terminare la connessione corrente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:628
+msgid "Connect"
+msgstr "Connetti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:629
+msgid "Abort Connection"
+msgstr "Annulla connessione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:790
+msgid "Join Channel"
+msgstr "Entra in un canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:791
+msgid "Shows a popup menu that allows quickly selecting a channel to join"
+msgstr ""
+"Mostra un popup che permette di selezionare rapidamente il canale in cui "
+"entrare"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:851
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:863
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:896
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:907
+msgid "Other..."
+msgstr "Altro..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:834
+msgid "Change Nickname"
+msgstr "Cambia nickname"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:835
+msgid "Shows a popup menu that allows quickly changing the nickname"
+msgstr "Mostra un popup che permette di cambiare rapidamente il nickname"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:883
+msgid "Connect To"
+msgstr "Connetti a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:884
+msgid "Shows a popup menu that allows quickly connecting to a server"
+msgstr "Mostra un popup che permette di collegarsi rapidamente ad un Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:929
+msgid "User Mode"
+msgstr "Modi utente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:930
+msgid "Shows a popup menu that allows quickly changing user modes"
+msgstr "Mostra un popup che permette di cambiare rapidamente i modi utente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:947
+msgid "Wallops (+w)"
+msgstr "Wallops (+w)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:949
+msgid "Server Notices (+s)"
+msgstr "Notice del Server (+s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:951
+msgid "Invisible (+i)"
+msgstr "Invisibile (+i)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:997
+msgid "Away/Back"
+msgstr "Away/Ritorno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:998
+msgid "Allows entering and leaving away state"
+msgstr "Permette di entrare ed uscire dallo stato di Away"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1065
+msgid "Enter Away Mode"
+msgstr "Entra nella modalità Away"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1066
+msgid "Leave Away Mode"
+msgstr "Esci dalla modalità Away"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1135
+msgid "Irc Tools"
+msgstr "Strumenti IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1136
+msgid "Shows a popup menu with some IRC Tools"
+msgstr "Mostra un menu popup con alcuni strumenti per IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1171
+msgid "Irc Actions"
+msgstr "Azioni IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1172
+msgid "Shows a popup menu with some IRC Actions"
+msgstr "Mostra un menu popup con alcune azioni per IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:412
+msgid "KVIrc KVS Script"
+msgstr "Script KVIrc KVS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:174
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:420
+msgid "Run KVS Script"
+msgstr "Esegui Script KVS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:284
+msgid "URL:IRC Protocol"
+msgstr "Protocollo URL:IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:383
+msgid "Open with KVIrc"
+msgstr "Apri con KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:436
+msgid "KVIrc Configuration File"
+msgstr "FIle di Configurazione KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:453
+msgid "KVIrc Theme Package"
+msgstr "Pacchetto Tema KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:461
+msgid "Install Theme Package"
+msgstr "Installa un Pacchetto Tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:478
+msgid "KVIrc Addon Package"
+msgstr "Pacchetto Addon KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:486
+msgid "Install Package"
+msgstr "Installa Pacchetto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:749
+#, c-format
+msgid ""
+"Ops...it looks like I can't load modules on this sytem.\n"
+"I have been looking for the %s library but I haven't been able to load it\n"
+"due to the following error: \"%s\"\n"
+"Aborting."
+msgstr ""
+"Ops... non posso caricare i moduli su questo sistema.\n"
+"Ho cercato la libreria %s ma non è stato possibile caricarla\n"
+"a causa del seguente errore: \"%s\"\n"
+"Annullato."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:762
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_begin\" function.\n"
+"Aborting!"
+msgstr ""
+"Ops... sembra che tu abbia un pacchetto malfunzionante.\n"
+"I moduli di Setup non possono esportare la funzione \"setup_begin\".\n"
+"Annullato!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:776
+msgid "Setup aborted"
+msgstr "Setup annullato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:801
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_finish\" function.\n"
+"Trying to continue anyway..."
+msgstr ""
+"Ops... sembra che tu abbia una distribuzione malfunzionante.\n"
+"I moduli di Setup non possono esportare la funzione \"setup_finish\".\n"
+"Annullato!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:186
+msgid "%Q is on IRC"
+msgstr "%Q è su IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:248
+msgid "%Q has left IRC"
+msgstr "%Q è uscito da IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:368
+msgid "Notify list: No users to check for, quitting"
+msgstr "Notify List: nessun utente da cercare, esco"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:414
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (15 sec)"
+msgstr ""
+"Notify List: il tempo di Timeout (%d sec) è veramente troppo breve, lo "
+"imposto a un tempo più ragionevole (15 secondi)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:428
+msgid "Notify list: Notify list empty, quitting"
+msgstr "Notify List: la Notify List è vuota, esco"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:455
+#, c-format
+msgid ""
+"Notify list: ISON delay (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+"Notify List: il ritardo ISON è veramente troppo breve (%d secs): lo imposto "
+"ad un tempo più ragionevole (5 secondi)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:491
+msgid "Notify list: Checking for: %Q"
+msgstr "Notify List: cerco: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:535
+msgid ""
+"Notify list: Hey! You've used ISON behind my back? (I might be confused "
+"now...)"
+msgstr ""
+"Notify List: Hey! Hai usato ISON a mia insaputa? (Potrei essere confuso "
+"ora...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:682
+msgid "registration mask changed, or nickname is being used by someone else"
+msgstr "maschera di registrazione è cambiata o qualcun'altro sta usando il suo nick)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:686
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (registration mask does not match, or nickname is being used "
+"by someone else)"
+msgstr ""
+"Notify List: \r!n\r%Q\r sembra essere online, ma la maschera [%Q@\r!h\r%Q\r]"
+"non corrisponde (qualcun'altro sta usando il suo nickname o la sua maschera "
+"di registrazione non corrisponde)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:691
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? "
+"(restarting)"
+msgstr ""
+"Notify List: inconsistenza inaspettata: il database degli utenti registrati "
+"è stato modificato? (riparto)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:698
+msgid ""
+"Notify list: Unexpected inconsistency, expected \r!n\r%Q\r in the registered "
+"user DB"
+msgstr ""
+"Notify List: inconsistenza inaspettata, atteso \r!n\r%Q\r nel database degli "
+"utenti registrati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:712
+#, c-format
+msgid ""
+"Notify list: USERHOST delay (%d sec) is too short, resetting to something "
+"more reasonable (5 sec)"
+msgstr ""
+"Il ritardo della lista USERHOST è veramente troppo breve (%d sec), lo "
+"imposto ad un tempo più ragionevole (5 secondi)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:726
+msgid "Notify list: Unexpected inconsistency, userhost list is empty!"
+msgstr "Notify List: inconsistenza inaspettata, la lista degli Userhost è vuota!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:761
+msgid "Notify list: Checking userhost for: %Q"
+msgstr "Notify List: cerco l'Userhost di: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:831
+msgid ""
+"Notify list: Hey! You've used USERHOST behind my back? (I might be confused "
+"now...)"
+msgstr ""
+"Notify List: hey! Hai usato USERHOST a mia insaputa? (Potrei essere confuso "
+"adesso...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:836
+#, c-format
+msgid "Notify list: Broken USERHOST reply from the server? (%s)"
+msgstr "Notify List: ricevuta una risposta USERHOST malfunzionante dal Server? (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:860
+msgid ""
+"Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST reply "
+"was received, will recheck in the next loop"
+msgstr ""
+"Notify List: sembra che \r!n\r%Q\r sia andato offline mentre aspettavo la "
+"sua risposta all'USERHOST, lo ricontrollerò la prossima volta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:931
+msgid "Starting notify list"
+msgstr "Avvio la Notify List"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:936
+msgid "No users in the notify list"
+msgstr "Nessun utente nella Notify List"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:958
+msgid "Notify list: Checking for:%Q"
+msgstr "Notify List: controllo: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1013
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+"Notify List: il timeout è troppo breve (%d secondi), lo imposto ad un tempo "
+"più ragionevole (5 secondi)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1139
+msgid "Notify list: Adding watch entries for%Q"
+msgstr "Notify List: aggiunta voce da controllare per %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1171
+msgid "watch entry listing requested by user"
+msgstr "Elenco elementi Watch richiesta dall'utente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1175
+msgid "possible watch list desync"
+msgstr "possibile desincronizzazione della Watch List"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1185
+msgid "registration mask changed or desync with the watch service"
+msgstr ""
+"la maschera di registrazione è cambiata o c'è una desincronizzazione con il "
+"servizio Watch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1190
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (watch: registration mask does not match, or nickname is "
+"being used by someone else)"
+msgstr ""
+"Notify List: \r!n\r%Q\r sembra essere online, ma la maschera [%Q@\r!h\r%Q\r] "
+"non corrisponde (watch: qualcun'altro sta usando il suo nickname o la sua "
+"maschera di registrazione non corrisponde)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1197
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? (watch: "
+"restarting)"
+msgstr ""
+"Notify List: inconsistenza inaspettata: il database degli utenti registrati "
+"è stato modificato? (watch: riparto)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1207
+msgid "watch entry added by user"
+msgstr "elemento Watch aggiunto dall'utente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1245
+msgid "removed from watch list"
+msgstr "rimosso dalla Lista Watch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1248
+msgid "Notify list: Stopped watching for \r!n\r%Q\r"
+msgstr "Notify List: smetto di controllare \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1258
+msgid "watch"
+msgstr "watch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1264
+msgid "Notify list: \r!n\r%Q\r is offline (watch)"
+msgstr "Notify List: \r!n\r%Q\r è offline (watch)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1267
+msgid "unmatched watch list entry"
+msgstr "elemento Lista Watch non corrispondente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:80
+msgid "commandline::userfriendly"
+msgstr "commandline::userfriendly"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:94
+msgid "commandline::kvs"
+msgstr "commandline::kvs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:127
+msgid "You are not connected to a server"
+msgstr "Non sei connesso ad alcun server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_iconmanager.cpp:372
+msgid "Icon Table"
+msgstr "Tavola delle icone"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:190
+msgid "No "
+msgstr "No "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:196
+msgid "This module has no version informations: refusing to load it"
+msgstr "Questo Modulo non ha informazioni sulla versione: non caricato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:204
+msgid "This module was compiled for a different KVIrc version and can't be loaded"
+msgstr ""
+"Questo modulo è stato compilato per una differente versione di KVIrc e non "
+"puಠessere caricato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:232
+msgid "Failed to execute the init routine"
+msgstr "Fallito nell'esecuzione della 'routine init'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:261
+#, c-format
+msgid "Loaded module '%s' (%s)"
+msgstr "Caricato modulo '%s' (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:306
+#, c-format
+msgid "Unloaded module '%s'"
+msgstr "Modulo '%s' non caricato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:45
+msgid "This window has no associated irc context"
+msgstr "Questa finestra non ha un Contesto IRC associato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:50
+#, c-format
+msgid "No such irc context (%d)"
+msgstr "Nessun Contesto IRC (%d)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:147
+msgid "Global idle timer must be started before using $my.globalIdle function"
+msgstr ""
+"Il timer di inattività globale dev'essere avviato prima dell'uso della "
+"funzione $my.globalIdle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:103
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:215
+msgid "Window %Q not found"
+msgstr "Finestra %Q non trovata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:108
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:220
+msgid "Missing window id after the 'w' switch"
+msgstr "ID della finestra mancante dopo lo switch 'w'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:121
+msgid "Can't log to file %Q"
+msgstr "Impossibile scrivere il Log nel file %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:123
+msgid "This window has no logging capabilities"
+msgstr "Questa finestra non è abilitata per il logging"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:275
+msgid "Window with id '%Q' not found, returning empty string"
+msgstr "Finestra con ID %Q non trovata, restituisco una stringa vuota"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:598
+msgid "Sound file '%Q' not found"
+msgstr "File sonoro '%Q' non trovato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:604
+msgid "Unable to play sound '%Q'"
+msgstr "Impossibile riprodurre '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:615
+msgid "Sorry , I can't find a sound system to use on this machine"
+msgstr "Spiacente, non è possibile trovare un sistema sonoro da usare"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:617
+#, c-format
+msgid "Sound system detected to: %s"
+msgstr "Rilevato sistema sonoro in: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:141
+msgid "Show at startup"
+msgstr "Mostra all'avvio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:154
+msgid "Did you know..."
+msgstr "Lo sapevi che..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:220
+msgid "<b>Can't find any tip... :(</b>"
+msgstr "<b>Impossibile trovare un suggerimento... :(</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1544
+msgid "%Q algorytm is not supported"
+msgstr "L'algoritmo %Q non è supportato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1566
+msgid "KVIrc is compiled without OpenSSL support. $str.digest function disabled"
+msgstr ""
+"KVIrc è stato compilato senza il supporto per OpenSSL. La funzione $str."
+"digest sarà  disabilitata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2030
+msgid "Invalid argument for ?d escape sequence, 0 assumed"
+msgstr "Argomento invalido per la sequenza di escape ?d, assumo 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2034
+msgid "Missing argument for ?d escape sequence, 0 assumed"
+msgstr "Argomento mancante per la sequenza di escape ?d, assumo 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2066
+msgid "Invalid argument for ?u escape sequence, 0 assumed"
+msgstr "Argomento invalido per la sequenza di escape ?u, assumo 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2070
+msgid "Missing argument for ?u escape sequence, 0 assumed"
+msgstr "Argomento mancante per la sequenza di escape ?u, assumo 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2097
+msgid "Invalid argument for ?x escape sequence, 0 assumed"
+msgstr "Argomento invalido per la sequenza di escape ?x, assumo 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2101
+msgid "Missing argument for ?x escape sequence, 0 assumed"
+msgstr "Argomento mancante per la sequenza di escape ?x, assumo 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2128
+msgid "Invalid argument for ?X escape sequence, 0 assumed"
+msgstr "Argomento invalido per la sequenza di escape ?X, assumo 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2132
+msgid "Missing argument for ?X escape sequence, 0 assumed"
+msgstr "Argomento mancante per la sequenza di escape ?X, assumo 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2189
+msgid "Invalid argument for a floating point escape sequence, 0.0 assumed"
+msgstr "Argomento invalido per la sequenza di escape in virgola mobile, assumo 0.0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2193
+msgid "Missing argument for a floating point escape sequence, 0.0 assumed"
+msgstr "Argomento mancante per la sequenza di escape in virgola mobile, assumo 0.0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:87
+msgid "Show URL List"
+msgstr "Mostra Lista URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:88
+msgid "Shows the URL list window"
+msgstr "Mostra la finestra della Lista URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:124
+msgid "&Configure"
+msgstr "&Configura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:126
+msgid "Clo&se"
+msgstr "C&hiudi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:127
+msgid "&Module"
+msgstr "&Modulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:130
+msgid "&Load"
+msgstr "C&arica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:131
+msgid "&Save"
+msgstr "&Salva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:132
+msgid "&Clear"
+msgstr "&Pulisci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:133
+msgid "&List"
+msgstr "&Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:136
+msgid "URL"
+msgstr "URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:137
+msgid "Window"
+msgstr "Finestra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:138
+msgid "Count"
+msgstr "Conta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:139
+msgid "Timestamp"
+msgstr "Timestamp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:113
+msgid "Warning - KVIrc"
+msgstr "Attenzione - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+msgid "Select an URL."
+msgstr "Seleziona un URL."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:115
+msgid "&Remove"
+msgstr "&Rimuovi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:269
+msgid "&Find Text"
+msgstr "&Trova testo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:280
+msgid "&Say to Window"
+msgstr "&Dillo nella finestra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+msgid "Window not found."
+msgstr "Finestra non trovata."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:349
+msgid "URL Module Configuration"
+msgstr "Modulo di configurazione URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:356
+msgid "Save URL list on module unload"
+msgstr "Salva la Lista URL quando il modulo non è caricato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:360
+msgid "Save columns width on URL list close"
+msgstr "Salva larghezza delle colonne alla chiusura della Lista URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1187
+msgid "&Cancel"
+msgstr "&Annulla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:432
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1328
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:458
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1186
+msgid "&OK"
+msgstr "&OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:423
+msgid "Enable URL ban list"
+msgstr "Abilita la lista URL dei Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:435
+msgid "&Add Ban"
+msgstr "&Aggiungi Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:440
+msgid "&Remove Selected"
+msgstr "&Rimuovi selezionati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "URL Ban List"
+msgstr "Lista URL bannati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+msgid "Select a ban."
+msgstr "Seleziona un Ban."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:797
+msgid "View URL list"
+msgstr "Mostra lista URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:49
+msgid "Can't find the window with id '%Q'"
+msgstr "Impossibile trovare la finestra con ID '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:53
+msgid "The specified window (%Q) is not a channel"
+msgstr "La finestra specificata (%Q) non è un canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:78
+msgid "Destinaion file exists: no copy made"
+msgstr "Il file di destinazione esiste: nessuna copia creata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:83
+msgid "Failed to copy from %Q to %Q"
+msgstr "Copia da %Q a %Q fallita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:84
+msgid "Either the source doesn't exist or the destination can not be created"
+msgstr "O la sorgente non esiste o la destinazione non può essere creata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:203
+msgid "Failed to write to file %Q: the destination couldn't be opened"
+msgstr "Impossibile scrivere sul file %Q: impossibile aprire la destinazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:244
+msgid "Destination file exists: file not renamed"
+msgstr "Il file di destinazione esiste: file non rinominato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:247
+msgid "Failed to rename %Q to %Q"
+msgstr "Rinomina %Q in %Q fallito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:281
+msgid "Failed to make the directory %Q"
+msgstr "Creazione directory %Q fallita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:322
+msgid "Failed to remove the file %Q"
+msgstr "Cancellazione file %Q fallita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:365
+msgid "Failed to remove the directory %Q"
+msgstr "Cancellazione directory %Q fallita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:482
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:628
+msgid "The specified directory does not exist '%Q'"
+msgstr "La directory specificata '%Q' non esiste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:730
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:824
+msgid "Can't open the file \"%Q\" for reading"
+msgstr "Impossibile aprire il file \"%Q\" in lettura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:746
+msgid "Read error for file %Q"
+msgstr "Errore nella lettura del file %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:754
+msgid ""
+"Read error for file %Q (have been unable to read the requested size in 1000 "
+"retries)"
+msgstr ""
+"Errore di lettura del file %Q (è stato impossibile leggere la dimensione "
+"richiesta in 1000 tentativi)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:920
+msgid "Can't open the file \"%Q\" for writing"
+msgstr "Impossibile aprire il file \"%Q\" in scrittura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/index.cpp:473
+msgid "Untitled"
+msgstr "Senza titolo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+msgid "Indexing help files"
+msgstr "Indicizzo i file di aiuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:87
+msgid "Index"
+msgstr "Indice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:99
+msgid "Refresh index"
+msgstr "Aggiorna indice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:211
+msgid "Full Text Search"
+msgstr "Ricerca globale del testo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:203
+msgid "Using a wildcard within phrases is not allowed."
+msgstr "L'utilizzo di caratteri wildcard nelle frasi non è consentito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:212
+msgid "The closing quotation mark is missing."
+msgstr "Mancano le virgolette di chiusura."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:312
+msgid "Help Browser"
+msgstr "Finestra di Aiuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:201
+msgid "Request List"
+msgstr "Richiedi Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:207
+msgid "Stop list download"
+msgstr "Interrompi scaricamento della Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:211
+msgid ""
+"<center><b>/LIST command parameters:</b><br>Many servers accept special "
+"parameters that allow you to filter the returned entries.<br>Commonly, "
+"masked channel names (*kvirc*) are accepted as parameters, as well as "
+"strings like <b>c&lt;n</b> or <b>c&gt;n</b> where <b>n</b> is the minimum or "
+"maximum of users on the channel.</center>"
+msgstr ""
+"<center><b>Parametri del comando /LIST:</b><br>molti server accettano dei "
+"parametri speciali che permettono di controllare (e di solito di ridurre) i "
+"valori restituiti.<b>Normalmente i nomi dei canali mascherati (*kvirc*) sono "
+"accettati come parametri allo stesso modo delle stringhe come <b>c&lt;n</b> "
+"o <b>c&gt;n</b> dove <b>n</b> è il minimo o il massimo degli utenti nel "
+"canale.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:220
+msgid "Users"
+msgstr "Utenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:221
+msgid "Topic"
+msgstr "Topic"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:262
+msgid "Sent list request, waiting for reply..."
+msgstr "Inviata richiesta Lista, aspetto la risposta..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:265
+msgid "Cannot request list: No active connection"
+msgstr "Impossibile richiedere la Lista: nessuna connessione attiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:389
+msgid "Stopping the list download..."
+msgstr "Scaricamento della Lista interrotto..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:276
+msgid "Cannot stop list download, no active connection."
+msgstr ""
+"Impossibile interrompere lo scaricamento della lista: Nessuna connessione "
+"attiva."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:125
+#, c-format
+msgid "Connected to %s (%s)"
+msgstr "Connesso a %s (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:293
+msgid "List cannot be requested: Not connected to a server"
+msgstr "La Lista non può essere richiesta: nessuna connessione attiva "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:316
+#, c-format
+msgid "Channel List [IRC Context %u]"
+msgstr "Lista dei Canali [Contesto IRC %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:319
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel List</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Lista dei Canali</b></font> <font color=\"%s\">"
+"[Contesto IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:326
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel list</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Lista dei Canali</b></font> <font color=\"%s\">"
+"[Contesto IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:342
+msgid "You cannot export an empty list"
+msgstr "Non puoi esportare una lista vuota"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:350
+msgid "Channel list for %Q - %Q"
+msgstr "Lista dei canali per %Q - %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:353
+msgid "Channel list"
+msgstr "Lista canali"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:382
+msgid "Choose filename"
+msgstr "Scegli il nome del file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:356
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:383
+msgid "Configuration files (*.kvc)"
+msgstr "FIle di configurazione (*.kvc)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:398
+msgid "Reset"
+msgstr "Resetta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:435
+msgid "Channels list download finished"
+msgstr "Scaricamento della Lista dei canali terminato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:472
+msgid "Processing list: %Q"
+msgstr "Elaborazione Lista: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/libkvilist.cpp:63
+msgid "List window alread open for this IRC context"
+msgstr "La lista delle finestre è già aperta per questo Contesto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:70
+msgid "Terminal"
+msgstr "Terminale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:73
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:77
+#, c-format
+msgid "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+msgstr "<nobr><font color=\"%s\"><b>Terminale</b></font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:59
+msgid "Terminal emulator"
+msgstr "Emulatore di terminale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:63
+msgid "Close this window"
+msgstr "Chiudi questa finestra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:91
+msgid "Can't create the terminal emulation part"
+msgstr "Impossibile creare la parte dell'emulazione del terminale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:96
+msgid "Can't retrieve the terminal emulation factory"
+msgstr "Impossibile avviare l'emulazione terminale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:95
+msgid "KVIrc"
+msgstr "KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:98
+msgid "Context"
+msgstr "Contesto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:155
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:100
+msgid "Away"
+msgstr "Away"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:102
+msgid "&Configure KVIrc..."
+msgstr "&Configura KVIrc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:104
+msgid "&About KVIrc"
+msgstr "Informazioni su &KVIrc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:109
+msgid "Un&dock"
+msgstr "&Sgancia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:168
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:112
+msgid "Ctrl+Q"
+msgstr "Ctrl+Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:143
+msgid "Nothing is happening..."
+msgstr "Non è accaduto niente..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:285
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:144
+msgid "Just idling..."
+msgstr "Inattivo..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:145
+msgid "Dum de dum de dum..."
+msgstr "Dum de dum de dum..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:146
+msgid "Hey man... do something!"
+msgstr "Ehi... fai qualcosa!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:147
+msgid "Umpf!"
+msgstr "Umpf!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:148
+msgid "Silence speaking"
+msgstr "Il silenzio è d'oro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:149
+msgid "Are ya here?"
+msgstr "Ci sei?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:150
+msgid "The world has stopped?"
+msgstr "Il mondo si è fermato?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:151
+msgid "Everything is all right"
+msgstr "Va tutto bene"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:152
+msgid "idle()"
+msgstr "idle()"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:153
+msgid "It's so cold here..."
+msgstr "Fa così freddo qui..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:295
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:154
+msgid "Do not disturb... watching TV"
+msgstr "Non disturbare... sto guardando la TV"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:155
+msgid "Just vegetating"
+msgstr "Sto vegetando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:156
+msgid "Hey... are ya sure that your network is up?"
+msgstr "Ehi... sei sicuro di essere connesso?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:298
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:157
+msgid "Seems like the world has stopped spinning"
+msgstr "Sembra che il mondo abbia smesso di girare"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:299
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:158
+msgid "This silence is freaking me out!"
+msgstr "Questo silenzio mi sta facendo impazzire!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:300
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:159
+msgid "Mieeeeeowww!"
+msgstr "Miaaaaaaaaaaaaoooooooo!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:301
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:160
+msgid "idle idle idle idle!"
+msgstr "idle idle idle idle!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Hide Window"
+msgstr "Nascondi Finestra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Show Window"
+msgstr "Mostra Finestra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:428
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:260
+msgid "Away on all"
+msgstr "Away su tutti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:263
+msgid "Back on all"
+msgstr "Togli away su tutti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:450
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:282
+msgid "Back on %1"
+msgstr "Togli away su %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:453
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:285
+msgid "Away on %1"
+msgstr "Away su %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1238
+msgid "Alias"
+msgstr "Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1217
+msgid "No item selected"
+msgstr "Nessun elemento selezionato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:232
+msgid "Rename"
+msgstr "Rinomina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:236
+msgid "Edit the alias or namespace name"
+msgstr "Modifica l'Alias o il nome del Namespace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+msgid "Add Alias"
+msgstr "Aggiungi Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:429
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Add Namespace"
+msgstr "Aggiungi Namespace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:440
+msgid "Remove Selected"
+msgstr "Rimuovi selezionato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:449
+msgid "Export Selected..."
+msgstr "Esporta selezionato..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:455
+msgid "Export Selected in singles files..."
+msgstr "Esporta selezionati in singoli file..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:462
+msgid "Export All..."
+msgstr "Esporta tutto..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:470
+msgid "Find In Aliases..."
+msgstr "Trova negli Alias..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:476
+msgid "Collapse All Namespaces"
+msgstr "Contrai tutti i Namespace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:508
+msgid "Find In Aliases"
+msgstr "Trova negli Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:509
+msgid ""
+"Please enter the text to be searched for. The matching aliases will be "
+"highlighted."
+msgstr "Inserisci il testo da cercare. Gli Alias trovati saranno evidenziati."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "Alias Export"
+msgstr "Esporta Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+msgid "There is not selection!"
+msgstr "Non c'è selezione!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:615
+msgid "The file \"%Q\" exists. Do you want to replace it ?"
+msgstr "Il file \"%Q\" esiste. Vuoi rimpiazzarlo?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+msgid "Replace file"
+msgstr "Sostituisci file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+msgid "Yes to All"
+msgstr "Sì a tutti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "There exported file would be empty: cowardly refusing to write it"
+msgstr "Il file esportato sarà vuoto: mi rifiuto di scriverlo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:786
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:411
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1133
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:398
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:745
+msgid "Choose a Filename - KVIrc"
+msgstr "Scegli un file - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Write Failed - KVIrc"
+msgstr "Scrittura fallita - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+msgid "Unable to write to the alias file."
+msgstr "Impossibile scrivere nel file dell'Alias."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:793
+msgid "Do you really want to remove the alias \"%Q\" ?"
+msgstr "Vuoi veramente cancellare l'Alias \"%Q\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:795
+msgid "Do you really want to remove the namespace \"%Q\" ?"
+msgstr "Vuoi veramente cancellare il Namespace \"%Q\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:797
+msgid "Please note that all the children items will be deleted too."
+msgstr "Nota: saranno cancellati anche tutti gli elementi figlio."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+msgid "Remove item"
+msgstr "Rimuovi elemento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:875
+msgid "Missing Alias Name"
+msgstr "Nome dell'Alias mancante"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:876
+msgid "You must specify a valid name for the alias"
+msgstr "Devi specificare un nome valido per l'Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:877
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:890
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:904
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:915
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:946
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:959
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:973
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1128
+msgid "Ok, Let me try again..."
+msgstr "Ok, fammi provare ancora..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:888
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:902
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:913
+msgid "Bad Alias Name"
+msgstr "Nome Alias improprio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:944
+msgid "Missing Namespace Name"
+msgstr "Nome del Namespace mancante"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:945
+msgid "You must specify a valid name for the namespace"
+msgstr "Devi specificare un nome valido per il Namespace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:957
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:971
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:982
+msgid "Bad Namespace Name"
+msgstr "Nome Namespace improprio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:958
+msgid ""
+"Namespace names can contain only letters, digits, underscores and '::' "
+"namespace separators"
+msgstr ""
+"I nomi dei Namespace possono contenere solo lettere, numeri, underscore e "
+"separatori '::' di Namespace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:972
+msgid "Stray ':' character in namespace name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+"Carattere ':' disperso nel nome del Namespace: forse intendevi ..."
+"<namespace>::<name> ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:983
+msgid "Found an empty namespace in namespace name"
+msgstr "Namespace vuoto nel nome del Namespace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+msgid "Please enter the name for the new alias"
+msgstr "Inserire il nome per il nuovo Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Please enter the name for the new namespace"
+msgstr "Inserire il nome per il nuovo Namespace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+msgid "Rename Alias"
+msgstr "Rinomina Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+msgid "Please enter the new name for the alias"
+msgstr "Inserire il nuovo nome per l'Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Rename Namespace"
+msgstr "Rinomina Namespace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Please enter the new name for the namespace"
+msgstr "Inserire il nome per il nuovo Namespace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1126
+msgid "Alias already exists"
+msgstr "L'alias esiste già"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1139
+msgid "This name is already in use. Please choose another one."
+msgstr "Questo nome è già in uso. Scegline un altro."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1138
+msgid "Namespace already exists"
+msgstr "Il namespace esiste già"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1140
+msgid "Ok, let me try again..."
+msgstr "Ok, fammi provare ancora..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1227
+msgid "Namespace"
+msgstr "Namespace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1332
+msgid "Alias Editor"
+msgstr "Editor Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:62
+msgid "Join Channels"
+msgstr "Entra in un Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:183
+msgid "Name"
+msgstr "Nome"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:86
+msgid "Password"
+msgstr "Password"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:641
+msgid "&Join"
+msgstr "&Entra in"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:108
+msgid "Show this window after connecting"
+msgstr "Mostra questa finestra dopo la Connessione al server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:163
+msgid "Recent Channels"
+msgstr "Canali Recenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:182
+msgid "Registered Channels"
+msgstr "Canali Registrati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:133
+msgid "Choose the file to share"
+msgstr "Scegli il file da condividere"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:178
+msgid "No such channel/netmask entry in the database"
+msgstr "Nessuna voce canale/netmask nel database."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:198
+msgid "Registered channel list:"
+msgstr "Lista dei canali registrati:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:208
+#, c-format
+msgid "Channel: %c%s@%s"
+msgstr "Canale: %c%s@%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:213
+#, c-format
+msgid " Property: %s=%s"
+msgstr " Proprietà: %s=%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:220
+#, c-format
+msgid "Total %d channels"
+msgstr "Totale %d canali"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:86
+msgid "Property Editor"
+msgstr "Editor Proprietà"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:101
+msgid "Property"
+msgstr "Proprietà"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:102
+msgid "Value"
+msgstr "Valore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:111
+msgid "&New"
+msgstr "&Nuovo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:215
+msgid "Mask Editor"
+msgstr "Editor Maschera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:219
+msgid ""
+"Insert a mask for this user.<br>It can contain the wildcard characters '*' "
+"and '?'."
+msgstr ""
+"Inserisci una maschera per questo utente.<br>Può contenere i caratteri jolly "
+"'*' e '?'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:230
+msgid ""
+"<center>This the <b>nickname</b> that will match this user, default value is "
+"the registered name.</center>"
+msgstr ""
+"<center>Questo è il<b>nickname</b> che corrisponderà a questo utente, il "
+"valore predefinito è il nome di registrazione.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:241
+msgid ""
+"<center>This the <b>username</b> that will match this user. <b>*</b> will "
+"match any username.</center>"
+msgstr ""
+"<center>Questo è l'<b>username</b>che corrisponderà a questo utente.<b>*</b> "
+"corrisponderà a qualsiasi utente.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:252
+msgid ""
+"<center>This the <b>hostname</b> that will match this user. <b>*</b> will "
+"match any hostname.</center>"
+msgstr ""
+"<center>Questo è l'<b>hostname</b> che corrisponderà a questo utente. <b>*</"
+"b> corrisponderà a qualsiasi hostname.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:333
+msgid "Registered User Entry"
+msgstr "Voce Utenti Registrati:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:145
+msgid "Name:"
+msgstr "Nome:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:345
+msgid "Comment:"
+msgstr "Commento:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:355
+msgid "Masks:"
+msgstr "Maschere:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:216
+msgid "&Add..."
+msgstr "&Aggiungi..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:377
+msgid "&Edit"
+msgstr "&Modifica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:385
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:414
+msgid "Identity"
+msgstr "Identità "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:393
+msgid "Notify when user is online"
+msgstr "Notifica quando l'utente è online"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:396
+msgid "Notify nicknames:"
+msgstr "Notifica nickname:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:401
+msgid "<center>You can enter a space separated list of nicknames.</center>"
+msgstr "<center>Puoi inserire una lista di nickname separata da spazi.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:426
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:383
+msgid "Avatar"
+msgstr "Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:433
+msgid "Use custom color in userlist"
+msgstr "Usa colori personalizzati per la Lista degli Utenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:441
+msgid "All Properties..."
+msgstr "Proprietà ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:448
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:231
+msgid "Properties"
+msgstr "Proprietà "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:458
+msgid "Enable ignore for this user"
+msgstr "Abilita ignore per questo utente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:460
+msgid "Ignore features"
+msgstr "Proprietà"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:465
+msgid "Ignore query-messages"
+msgstr "Ignora i messaggi in query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:468
+msgid "Ignore channel-messages"
+msgstr "Ignora i messaggi del canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:471
+msgid "Ignore notice-messages"
+msgstr "Ignora i notice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:474
+msgid "Ignore ctcp-messages"
+msgstr "Ignora i CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:477
+msgid "Ignore invites"
+msgstr "Ignora gli inviti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:480
+msgid "Ignore DCCs"
+msgstr "Ignora le DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:486
+msgid "Ignore"
+msgstr "Ignora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:94
+msgid "Notify disabled"
+msgstr "Notify disabilitato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:96
+msgid "Notify as: "
+msgstr "Notifica come: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:105
+msgid "No comment set"
+msgstr "Nessun commento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:107
+msgid "Comment: "
+msgstr "Commento:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:176
+msgid "Registered Users - KVIrc"
+msgstr "Utenti Registrati - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:317
+msgid "Flags"
+msgstr "Opzioni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:192
+msgid ""
+"<center>This is the list of registered users. KVIrc can automatically "
+"recognize and associate properties to them.<br>Use the buttons on the right "
+"to add, edit and remove entries. The \"notify\" column allows you to quickly "
+"add users to the notify list. Notify list fine-tuning can be performed by "
+"editing the entry properties.</center>"
+msgstr ""
+"<center>Questa è la lista degli Utenti Registrati. KVIrc può riconoscerli e "
+"associare loro automaticamente delle proprietà.<br>Usa il pulsante sulla "
+"destra per aggiungere, modificare e rimuovere le voci. La colonna \"notifica"
+"\" ti permette di aggiungere velocemente gli utenti alla Notify List. La "
+"configurazione dettagliata della Notify List può essere eseguita modificando "
+"le proprietà dei vari elementi.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:208
+msgid "Add (Wizard)..."
+msgstr "Aggiungi (Procedura Guidata)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:211
+msgid "Add a registered user by means of a user-friendly wizard."
+msgstr "Aggiungi un utente registrato con l'aiuto di una Procedura Guidata."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:219
+msgid "Open the edit dialog to create a new user entry."
+msgstr "Apri la finestra Modifica per creare una nuova voce per l'utente."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:223
+msgid "&Add Group..."
+msgstr "&Aggiungi Gruppo..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:226
+msgid "Adds a new group"
+msgstr "Aggiungi un nuovo Gruppo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:234
+msgid "Remove the currently selected entries."
+msgstr "Rimuovi le voci selezionate correnti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:239
+msgid "&Edit..."
+msgstr "&Modifica..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:243
+msgid "Edit the first selected entry."
+msgstr "Modifica la prima voce selezionata."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:250
+msgid "Export To..."
+msgstr "Esporta a..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:254
+msgid ""
+"Export the selected entries to a file.<br>All the data associated with the "
+"selected registered users will be exported.<br>You (or anyone else) can "
+"later import the entries by using the \"Import\" button."
+msgstr ""
+"Esporta le voci selezionate in un file.<br>Tutti i dati associati agli "
+"Utenti Registrati selezionati verranno esportati.<br>Successivamente puoi "
+"importarli attraverso il pulsante \"Importa\"."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:259
+msgid "Import From..."
+msgstr "Importa da..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:262
+msgid ""
+"Import entries from a file exported earlier by the \"export\" function of "
+"this dialog."
+msgstr ""
+"Importa voci da un file precedentemente esportato con il pulsante \"esporta"
+"\" presente in questa finestra."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:399
+msgid "Group name:"
+msgstr "Nome Gruppo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:442
+msgid "Move to group"
+msgstr "Sposta nel Gruppo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:483
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:486
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:487
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:491
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:690
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_useridentity.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:962
+msgid "Default"
+msgstr "Predefinito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:674
+msgid "No entries selected."
+msgstr "Nessuna voce selezionata."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:687
+msgid "Can't open file %Q for writing."
+msgstr "Impossibile aprire il file\"%Q\" in scrittura."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:772
+msgid "Can't export the registered users database: Write error."
+msgstr ""
+"Impossibile esportare il Database degli Utenti Registrati: errore in "
+"scrittura."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:793
+#, c-format
+msgid "Can't open file %s for reading."
+msgstr "Impossibile aprire il file %s in lettura."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:804
+#, c-format
+msgid "The file %s doesn't appear to be a valid registered users database."
+msgstr "Il file %s non sembra essere un Database valido degli Utenti Registrati."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:811
+#, c-format
+msgid "The file %s contains an invalid registered users database version."
+msgstr ""
+"Il file %s contiene una versione non valida del Database degli Utenti "
+"Registrati."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:892
+msgid "Can't import the registered users database: Read error."
+msgstr "Impossibile importare il Database degli Utenti Registrati: errore in lettura."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:78
+msgid "User Registration Wizard - KVIrc"
+msgstr "Wizard Registrazione Utente - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:89
+msgid ""
+"<p>Welcome to the user registration wizard.<br>This process allows you to "
+"add an IRC user to the database and set properties for that user. KVIrc will "
+"be (hopefully) able to recognize the user, add him to the notify list, and "
+"display the associated avatar.<br><br>First of all, you must insert an "
+"<b>entry name or real name</b> for the user you're going to register. The "
+"name will be used to identify the database entry and has no specific "
+"requirements, it can be a given name, nickname, or just some text to remind "
+"you of the real person.<br>Examples: \"George W Bush\", \"Dubya\".\n"
+"</p>"
+msgstr ""
+"<p>Benvenuto nella procedura guidata di registrazione.<br>Questa procedura "
+"ti permetterà di aggiungere un utente IRC al tuo database e settare le sue "
+"proprietà. KVIrc sarà in grado di riconoscere quell'utente, aggiungerlo alla "
+"Notify List e mostrarti gli Avatar associati.<br><br>Prima di tutto, devi "
+"inserire <b>un nome o il vero nome</b> per l'utente che vuoi registrare. Il "
+"nome verrà usato per identificare l'utente nel database. Può essere il nome "
+"vero, un nickname o anche una descrizione come promemoria della persona."
+"<br>Per esempio: \"George W Bush\", \"Dubya\".\n"
+"</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:97
+msgid "Step 1: Entry Name"
+msgstr "Punto 1: Nome"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:112
+msgid ""
+"<p>A registered user is identified by one or more <b>IRC masks</b>.<br>A "
+"mask must be in the following form:<br><b>nickname!username@hostname</"
+"b><br>and can contain wildcard characters '*' and '?'. Be careful in "
+"choosing the masks, as they are the only way to verify the identity of a "
+"registered user.<br><br>You can enter at most two masks here, if you wish to "
+"add more masks, use the \"<b>Edit</b>\" button in the Registered Users "
+"dialog. You must enter at least one mask.</p>"
+msgstr ""
+"<p>Un utente IRC registrato viene identificato tramite una o più "
+"<b>maschere</b>.<br>Una maschera deve avere la forma seguente:"
+"<br><b>nickname!username@hostname</b><br>e può contenere i caratteri jolly "
+"'*' e '?'. Fai attenzione a scegliere la maschera giusta, poiché sarà "
+"l'unico modo per verificare l'identità di un utente registrato.<br><br>Qui "
+"puoi inserire al massimo due maschere, se desideri aggiungerne altre, usa il "
+"pulsante \"<b>Modifica</b>\" nella finestra degli Utenti Registrati. Devi "
+"inserire almeno una maschera.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:170
+msgid "Step 2: Mask Selection"
+msgstr "Punto 2: Seleziona la maschera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:182
+msgid ""
+"<p>If you want to store an avatar image for this user, you can set it here. "
+"KVIrc will show the avatar in the userlist next to the user's nickname."
+"<br>An avatar can be in any supported image format (PNG is recommended). "
+"Keep in mind that KVIrc stores avatars in memory and has to resize them to "
+"fit in the userlist, thus it's better to use small, low-resolution images.</"
+"p>"
+msgstr ""
+"<p>Se vuoi memorizzare un Avatar per questo utente, puoi specificarlo qui. "
+"KVIrc mostrerà l'Avatar nella Lista degli Utenti vicino al nickname "
+"dell'utente stesso.<br>Un avatar può essere un'immagine in uno qualsiasi dei "
+"formati supportati (raccomandiamo l'uso di PNG). Ricordati che KVIrc "
+"archivia gli Avatar in memoria e deve ridimensionarli per farli entrare "
+"nella Userlist, quindi è meglio usare immagini piccole e con una bassa "
+"risoluzione.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:190
+msgid "Store an avatar for this user"
+msgstr "Imposta un Avatar per questo utente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:195
+msgid "Step 3: Avatar Selection"
+msgstr "Punto 3: Seleziona l'Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:206
+msgid ""
+"<p>If you want to be notified when this user is online or goes offline, you "
+"must specify the list of nicknames that KVIrc will look for.<br><br>You can "
+"enter at most two nicknames here, if you wish to add more nicknames, use the "
+"\"<b>Edit</b>\" button in the Registered Users dialog.</p>"
+msgstr ""
+"<p>Se vuoi essere avvisato quando questo utente è online o quando si "
+"disconnette, devi specificare la lista dei nickname a cui KVIrc dovrà fare "
+"riferimento.<br><br>Qui puoi inserire al massimo due nickname, se desideri "
+"aggiungerne altri, usa il pulsante \"<b>Modifica</b>\" nella finestra Utenti "
+"Registrati.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:215
+msgid "Add this user to the notify list"
+msgstr "Aggiungi l'utente alla Notify List"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:342
+msgid "Nickname:"
+msgstr "Nickname:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:225
+msgid "Nickname 2:"
+msgstr "Nickname 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:239
+msgid "Step 4: Notify List"
+msgstr "Punto 4: Notify List"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:251
+msgid ""
+"<p>That's it. The user registration has been completed.<br><br>Click "
+"\"<b>Finish</b>\" to close this dialog.</p>"
+msgstr ""
+"<p>La registrazione dell'utente è stata completata.<br><br>Clicca su "
+"\"<b>Fine</b>\" per chiudere questa finestra.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:254
+msgid "Registration Complete"
+msgstr "Registrazione completata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:695
+msgid "No name specified"
+msgstr "Nessun nome specificato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:209
+msgid "User already registered: found exact name match"
+msgstr "Utente già registrato: trovato nome corrispondente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:222
+msgid "Mask %Q is already used to identify user %s"
+msgstr "Maschera %Q già usata per identificare l'utente %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:275
+msgid "User not found (%Q)"
+msgstr "Utente non trovato (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:403
+msgid "No mask specified"
+msgstr "Nessuna maschera specificata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:524
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:708
+msgid "User %Q not found"
+msgstr "Utente %Q non trovato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:355
+msgid "Mask %Q already used to identify user %Q"
+msgstr "Maschera %Q già usata per identificare l'utente %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:410
+msgid "Mask %Q not found"
+msgstr "Maschera %Q non trovata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:701
+msgid "No property specified"
+msgstr "Nessuna proprietà specificata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:808
+msgid "Registered users database dump:"
+msgstr "Database degli Utenti Registrati depositato:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:819
+msgid " User: %c%Q"
+msgstr " Utente: %c%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:823
+msgid " Warning: this user has no registration masks"
+msgstr " Attenzione: questo utente non ha maschere di registrazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:827
+msgid " Mask: %Q!%Q@%Q"
+msgstr " Maschera: %Q!%Q@%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:838
+msgid " Property: %Q=%Q"
+msgstr " Proprietà: %Q=%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:841
+msgid " No properties"
+msgstr " Nessuna proprietà"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:847
+#, c-format
+msgid "Total: %d matching users (of %d in the database)"
+msgstr "Totale: %d utenti corrispondenti (su %d del database)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:197
+msgid "Manage Script-Based Addons"
+msgstr "Gestione Addon Script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1155
+msgid "Configure"
+msgstr "Configura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:225
+msgid "Show Help"
+msgstr "Mostra Aiuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:231
+msgid "Uninstall"
+msgstr "Disinstalla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:243
+msgid "Install Addon..."
+msgstr "Installa Addon..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:247
+msgid "More Addons..."
+msgstr "Altri Addon..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:333
+msgid "Do you really want to uninstall the addon \"%1\" ?"
+msgstr "Vuoi veramente disinstallare l'addon \"%1\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+msgid "Confirm addon uninstallation"
+msgstr "Conferma disinstallazione Addon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:354
+msgid "Please select the addon installation file"
+msgstr "Selezionare il file di installazione dell'Addon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:144
+msgid "%cAddon id %Q, version %Q%c"
+msgstr "%cAddon ID %Q, versione %Q%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:145
+msgid "Name: %Q"
+msgstr "Nome: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:67
+msgid "Description: %Q"
+msgstr "Descrizione: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:152
+#, c-format
+msgid "Total: %d addons installed"
+msgstr "Totale: %d Addon installati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:192
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:571
+msgid "Uninstalling existing addon version %Q"
+msgstr "Disinstallazione della versione esistente dell'Addon %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:384
+msgid "The addon \"%1\" does not exist"
+msgstr "L'Addon \"%1\" non esiste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:238
+msgid "The addon \"%1\" has no configure callback set"
+msgstr "L'Addon \"%1\" non ha impostato alcuna funzione di Configurazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:285
+msgid "The addon \"%1\" has no help callback set"
+msgstr "L'addon \"%1\" non ha impostato alcuna funzione di Aiuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:527
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:377
+msgid "Internal error: call a head-shrinker"
+msgstr "Errore interno: urge uno stgrizzacervelli.. bravo!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:536
+msgid "The specified version \"%Q\" is not a valid version string"
+msgstr "La versione specificata \"%Q\" non è una stringa valida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:542
+msgid "The specified KVIrc version \"%Q\" is not a valid version string"
+msgstr "La versione di KVIrc specificata \"%Q\" non è valida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:548
+msgid ""
+"This KVIrc executable is too old to run this addon (minimum version required "
+"is %Q)"
+msgstr ""
+"L'eseguibile di KVIrc è troppo vecchio per eseguire questo Addon (la "
+"versione recente richiesta è %Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:553
+msgid "Attempting to register addon \"%Q\" with version %Q"
+msgstr "Tentativo di registrazione dell'Addon \"%Q\" con versione %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:565
+msgid ""
+"The script addon \"%Q\" already exists with version %Q which is higher than %"
+"Q"
+msgstr "Lo Script \"%Q\" è già presente con la versione %Q che è più recente della %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:579
+msgid "Script registration failed"
+msgstr "Registrazione Script fallita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:584
+msgid "Script succesfully registered"
+msgstr "Script registrato con successo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:102
+#, c-format
+msgid "%s (%s) (%s:%u)"
+msgstr "%s (%s) (%s:%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:104
+#, c-format
+msgid "%s (%s)"
+msgstr "%s (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:107
+#, c-format
+msgid "%s (%s:%u)"
+msgstr "%s (%s:%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:109
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:112
+#, c-format
+msgid "[IDENT]: %s"
+msgstr "[IDENT]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:119
+msgid "Shutting down identd service (spontaneous action)"
+msgstr "Sto spegnendo il servizio identd (azione spontanea)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:124
+msgid "Shutting down identd service (requested action)"
+msgstr "Spegnimento servizio identd (azione richiesta)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:225
+msgid "Can't start the ident service : socket() failed"
+msgstr "Impossibile avviare il servizio ident: socket() fallita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:231
+msgid "Can't start the ident service : async setting failed"
+msgstr "Impossibile avviare il servizio ident: settaggio asincrono fallito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:237
+msgid "Can't enable the ident service : can't setup the listen address"
+msgstr ""
+"Impossibile abilitare il servizio ident: non posso settare l'indirizzo in "
+"ascolto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:243
+msgid "Can't start the ident service : bind() failed"
+msgstr "Impossibile avviare il servizio identd: bind() fallito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:249
+msgid "Can't start the ident service : listen() failed"
+msgstr "Impossibile avviare il servizio identd: listen() fallita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:263
+msgid "Can't start the ident service on IpV6 : socket() failed"
+msgstr "Non posso avviare il servizio ident su IPv6: socket() fallita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:269
+msgid "Can't start the ident service on IpV6 : async setting failed"
+msgstr "Non posso avviare il servizion ident su IPv6: settaggio asincrono fallito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:277
+msgid "Can't enable the ident service on IpV6 : can't setup the listen address"
+msgstr ""
+"Non posso avviare il servizio ident su IPv6: non posso settare l'indirizzo "
+"in ascolto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:285
+msgid "Can't start the ident service on IpV6 : bind() failed"
+msgstr "Impossibile avviare il servizio identd su IPv6: bind() fallito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:294
+msgid "Can't start the ident service on IpV6 : listen() failed"
+msgstr "Impossibile avviare il servizio identd su IPv6: listen() fallita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:310
+msgid "Starting identd service (IpV4/V6 on separate namespaces)"
+msgstr "Avviamento servizio identd (IPv4/v6 su namespace separati)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:313
+msgid "Starting identd service (IpV4/V6 in IpV6 namespace)"
+msgstr "Avviamento servizio identd (IPv4/v6 nel namespace IPv6)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:318
+msgid "Starting identd service (IpV4)"
+msgstr "Avviamento servizio identd (IPv4)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:322
+msgid "Service startup (IpV4)"
+msgstr "Avviamento servizio (IPv4)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:412
+msgid "Identd accepting connection"
+msgstr "Identd accetta connessioni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:435
+msgid "Identd socket error : dropping connection"
+msgstr "Errore nella socket identd: droppo la connessione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:440
+msgid "Identd connection closed by remote host"
+msgstr "Connessione identd chiusa dall'host remoto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:461
+msgid "Identd processing request"
+msgstr "Identd processa richiesta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:476
+msgid "Empty request (EOT ?)"
+msgstr "Richiesta vuota (EOT ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:487
+msgid "Dropping connection (request too long)"
+msgstr "Droppo la connessione (richiesta troppo lunga)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:500
+msgid "Timed out while waiting for the request : dropping connection"
+msgstr "Tempo scaduto in attesa della richiesta: droppo la connessione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/libkvilinks.cpp:74
+msgid "Links window alread open for this IRC context"
+msgstr "La finestra dei Links è già aperta per questo Contesto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:57
+msgid "Request Links"
+msgstr "Richiedi Links"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:70
+msgid "Link"
+msgstr "Link"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:71
+msgid "Hops"
+msgstr "Hops"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:72
+msgid "Description"
+msgstr "Descrizione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:90
+msgid "(None)"
+msgstr "(Nessuno)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:112
+msgid "Sent links request, waiting for reply..."
+msgstr "Inviata la richesta di Links, aspetto la risposta..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:115
+msgid "Cannot request links: No active connection"
+msgstr "Impossibile richiedere Links: nessuna connessione attiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:128
+msgid "Links cannot be requested: Not connected to a server"
+msgstr "Impossibile richiedere Links: nessuna connessione attiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:153
+msgid "Links for %Q [IRC Context %u]"
+msgstr "Links per %Q [Contesto IRC %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:164
+msgid ""
+"<nobr><font color=\"%s\"><b>Links for %Q</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Links per %Q</b></font> <font color=\"%s\">"
+"[Contesto IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:194
+msgid "Received end of links."
+msgstr "Ricevuta fine dei Links."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:235
+#, c-format
+msgid "Broken link: Missing parent (%s) for %s (%d hops): %s (used /LINKS <mask> ?)"
+msgstr ""
+"Link spezzato: manca il padre (%s) per %s (%d hops): %s (utilizzato /LINKS "
+"<mask>?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:238
+#, c-format
+msgid "%s: Parent link %s"
+msgstr "%s: Link padre %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:242
+msgid "Warning: No root link was sent by the server, the stats may be invalid."
+msgstr ""
+"Attenzione: nessun Link root inviato al server; le statistiche potrebbero "
+"non essere valide."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:278
+msgid "%c%cLinks for %Q"
+msgstr "%c%cLinks per %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts listed"
+msgstr "Totale host elencati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts in the network"
+msgstr "Totale host presenti sulla rete"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:282
+#, c-format
+msgid "Wildcard servers (hubs?): %d"
+msgstr "Wildcard server (hub?): %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:283
+msgid "Direct links: %d (~%d.%d %)"
+msgstr "Links diretti: %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:284
+msgid "Close links (1 <= hops <= 3): %d (~%d.%d %)"
+msgstr "Links vicini (1 <= hop <= 3): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:285
+msgid "Mid-range links (4 <= hops <= 6): %d (~%d.%d %)"
+msgstr "Links medi (4 <= hop <= 6): %d (~%d.%d %) "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:286
+msgid "Distant links (7 <= hops): %d (~%d.%d %)"
+msgstr "Links lontani (7 <= hop): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:287
+#, c-format
+msgid "Broken (unknown) links: %d"
+msgstr "Links spezzati (sconosciuti): %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:288
+#, c-format
+msgid "Maximum links per host: %d [%s]"
+msgstr "Links massimi per host: %d [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:289
+#, c-format
+msgid "Total links: %d"
+msgstr "Links totali: %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:290
+#, c-format
+msgid "Maximum hops: %d [%s]"
+msgstr "Hop massimi: %d [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:291
+#, c-format
+msgid "Average hops: ~%d.%d"
+msgstr "Numero medio di hop: ~%d.%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:294
+msgid "Incomplete LINKS result, no stats available"
+msgstr "Risultato LINKS incompleto; nessuna statistica disponibile"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:747
+msgid "You're not connected to a server"
+msgstr "Non sei connesso ad alcun server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:404
+#, c-format
+msgid "Processing link: %s"
+msgstr "Elaboro il collegamento: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:419
+msgid "Broken message syntax, can't extract hops number, assuming 0"
+msgstr ""
+"Sintassi del messaggio errata, impossibile estrarre il numero degli Hop, "
+"assumo il valore 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:86
+msgid "< &Back"
+msgstr "< &Precedente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:87
+msgid "&Next >"
+msgstr "&Successivo >"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:282
+msgid "Finish"
+msgstr "Fine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:164
+msgid ""
+"<p><h2>Welcome :)</h2>This is your first time running this version of KVIrc."
+"<br>This wizard will guide you through the few steps required to complete "
+"the setup.<br><br>If you had a previous version of KVIrc installed, no "
+"worries. You will have a chance to preserve the old configuration.</"
+"p><p>Click \"<b>Next</b>\" to proceed.</p>"
+msgstr ""
+"<p><h2>Benvenuto :)</h2>Hai appena installato una nuova versione di KVIrc."
+"<br>Questo wizard ti guiderà attraverso i passaggi richiesti per completare "
+"l'installazione.<br><br>Se hai già installato una precedente versione di "
+"KVIrc avrai la possibilità di conservare la vecchia configurazione.</"
+"p><p>Fai Click su \"Successivo\" per continuare.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:176
+msgid "Welcome to KVIrc"
+msgstr "Benvenuto in KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:187
+msgid ""
+"<p>All of the files in this distribution are covered by the GPL. In human "
+"terms this can be read as follows:<br><ul><li><b>KVIrc is free</b>, use it, "
+"have fun! <b>:)</b></li><li>If you use <b>any</b> part of KVIrc in your own "
+"project, you <b>must</b> release that project under the same license.</li></"
+"ul></p><p>The \"legalese\" version of the license is shown in the box below."
+"</p>"
+msgstr ""
+"<p>Tutti i file inclusi in questa distribuzione sono tutelati dalla licenza "
+"GPL. In termini umani può essere riassunto cosi: <br><ul><li><b>KVIrc è "
+"libero/gratis</b>, usalo e divertiti! <b>:)</b></li><li>Se usi una "
+"<b>qualsiasi<b> parte di KVIrc nel tuo progetto, <b>devi</b> rilasciarlo con "
+"lo stesso tipo di licenza</li></ul></p><p>La versione \"legalese\"della "
+"licenza è nel box sottostante.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:203
+msgid ""
+"Oops... can't find the license file.\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+"Ops...impossibile trovare la licenza...\n"
+"Questa DEVE essere inclusa nella distribuzione...\n"
+"Per favore avverti <pragma at kvirc dor net>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:211
+msgid "Dreaded License Agreement"
+msgstr "Il temuto Accordo di Licenza"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:215
+msgid "KVIrc Setup"
+msgstr "Configurazione di KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:224
+msgid ""
+"<p>Please choose a folder for KVIrc to store its settings and other data, "
+"and another for downloaded files. Make sure that you have permission to "
+"write to both folders.<br><br>The suggested locations are fine in most "
+"cases, so if you don't know what is this about, just click \"<b>Next</b>\"."
+"<br><br>If you had a previous version of KVIrc installed, you can choose the "
+"existing directory for the settings, and your configuration will be "
+"preserved.</p>"
+msgstr ""
+"<p>Scegli una directory dove KVIrc potrà salvare la sua configurazione ed "
+"un'altra directory per i file scaricati. Assicurati di avere i permessi di "
+"scrittura su entrambe le directory.<br><br>La posizione suggerita sarà la "
+"scelta migliore nella maggioranza dei casi; se non sai cosa fare "
+"semplicemente premi \"<b>Successivo</b>\".<br><br> Se hai già installato "
+"precedentemente KVIrc puoi scegliere le directory già esistenti, la vecchia "
+"configurazione verrà preservata.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:234
+msgid "Application Folders"
+msgstr "Directory del Programma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:238
+msgid "Store configuration in folder"
+msgstr "Salva la configurazione nella cartella"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:239
+msgid "Use settings folder from previous installation"
+msgstr "Usa la cartella delle configurazioni dall'installazione precendente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:251
+msgid "Use new settings folder"
+msgstr "Usa la nuova cartella delle configurazioni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:255
+msgid "Settings folder:"
+msgstr "Cartella configurazione:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:281
+msgid "Download files to folder:"
+msgstr "Scarica i file nella cartella:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:304
+msgid "All settings in shared program folder (portable)"
+msgstr "Tutti i settaggi nella cartella dei programmi condivisa (portabile)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:325
+msgid ""
+"Please choose a Nickname.<br><br>Your nickname is the name that other IRC "
+"users will know you by. It can't contain spaces or punctuation. Some IRC "
+"networks will shorten your nickname if it is more than 32 characters long."
+"<br><br>If in doubt, just enter the first nick that comes to mind. You will "
+"be able to change it later in the Identity properties, or with the /NICK "
+"command."
+msgstr ""
+"Scegli un Nickname.<br><br>Il tuo nickname è il nome con cui gli altri "
+"utenti IRC ti conosceranno. Il nickname non può contenere spazi, caratteri "
+"accentati o punteggiatura. Alcune reti IRC accorceranno il tuo nickname se è "
+"più lungo di 9 caratteri.<br><br>Se non sei sicuro, scrivi il primo nick che "
+"ti viene in mente, potrai cambiarlo più tardi nelle proprietà di Identità o "
+"con il comando /NICK."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:348
+msgid "This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+"Questo campo è opzionale e può apparire come parte della risposta CTCP "
+"USERINFO."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:353
+msgid "Profile"
+msgstr "Profilo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:355
+msgid "Real name:"
+msgstr "Nove vero:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:361
+msgid "Age:"
+msgstr "Età:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:392
+msgid "Unspecified"
+msgstr "Nessun nome specificato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:405
+msgid "Location:"
+msgstr "Luogo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:408
+msgid "Languages:"
+msgstr "Lingue:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:491
+msgid ""
+"<p>Here you can choose how much KVIrc will integrate with your system."
+"<br><br>The default settings are fine for most users so if you're in doubt "
+"just click \"<b>Next</b>\" and go to the next screen.</p>"
+msgstr ""
+"<p>Qui puoi scegliere quanto KVIrc si integrerà col sistema. <br><br>Il "
+"settaggio di default va bene per molti utenti quindi se sei in dubbio clicca "
+"\"<b>Avanti</b>\" e vai alla prossima pagina.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:501
+msgid "Desktop Integration"
+msgstr "Integrazione Desktop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:504
+msgid "Make KVIrc default IRC client"
+msgstr "Fai di KVIrc il client IRC predefinito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:508
+msgid "Create desktop shortcut"
+msgstr "Crea collegamento sul desktop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:513
+msgid "Import server list from mIRC"
+msgstr "Importa lista server da mIRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:727
+msgid "Choose an Old Configuration Folder - KVIrc Setup"
+msgstr "Scegli una Directory per la Configurazione - KVIrc Setup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:736
+msgid "Do not overwrite folder? - KVIrc"
+msgstr "Non sovrascrivere la cartella? - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:737
+msgid ""
+"A folder %1 seems to be not a valid KVIrc settings folder.Do you want to use "
+"it anyway?"
+msgstr ""
+"Una cartella %1 sembra non essere una valida cartella di configurazione per "
+"KVIrc. Vuoi usarla ugualmente?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:753
+msgid "Choose a Configuration Folder - KVIrc Setup"
+msgstr "Scegli una Directory per la Configurazione - KVIrc Setup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:764
+msgid "Choose a Download Folder - KVIrc Setup"
+msgstr "Scegli una Directory per i Download - KVIrc Setup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:933
+msgid "Abort Setup - KVIrc Setup"
+msgstr "Annulla il Setup - KVIrc Setup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:934
+msgid ""
+"You have chosen to abort the setup.<br>KVIrc cannot run until you complete "
+"this procedure.<br><br>Do you really wish to abort?"
+msgstr ""
+"Hai deciso di annullare il setup.<br>KVIrc non può funzionare finché non "
+"completerai questa procedura.<br><br>Sei sicuro di volerlo annullare?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:965
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:996
+#, c-format
+msgid ""
+"Cannot create directory %s.\n"
+"You may not have write permission for that path. Please go back and choose "
+"another directory."
+msgstr ""
+"Impossibile creare la directory %s\n"
+"Probabilmente non hai i permessi di scrittura. Per favore torna indietro e "
+"scegli un'altra directory."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+msgid "Package saved succesfully"
+msgstr "Pacchetto salvato con successo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:80
+msgid "Event"
+msgstr "Evento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1046
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:92
+msgid "&Export All To..."
+msgstr "&Esporta tutto..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:90
+msgid "Edit the event handler name."
+msgstr "Modifica il nome del supporto dell'evento."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:154
+msgid "&Enable Handler"
+msgstr "&Attiva Gestore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:158
+msgid "&Disable Handler"
+msgstr "&Disabilita Gestore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:162
+msgid "Re&move Handler"
+msgstr "Ri&muovi Gestore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:164
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:166
+msgid "&Export Handler To..."
+msgstr "&Esporta gestore..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:171
+msgid "&New Handler"
+msgstr "&Nuovo Gestore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:190
+msgid "unnamed"
+msgstr "senza nome"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:215
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:250
+msgid "default"
+msgstr "predefinito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:314
+msgid "none"
+msgstr "nessuno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:318
+#, c-format
+msgid ""
+"\n"
+"\n"
+"\tEvent:\n"
+"\t\t%s\n"
+"\n"
+"\tParameters:\n"
+"%s"
+msgstr ""
+"\n"
+"\n"
+"\tEvento:\n"
+"\t\t%s\n"
+"\n"
+"\tParametri:\n"
+"%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+msgid "Unable to write to the event file."
+msgstr "Impossibile scrivere nel file dell'Evento."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+msgid "Unable to write to the events file."
+msgstr "Impossibile scrivere nel file degli Eventi."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:486
+msgid "Event Editor"
+msgstr "Editor di Eventi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:77
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:213
+msgid "Item"
+msgstr "Elemento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:80
+msgid "Submenu"
+msgstr "Sottomenu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:83
+msgid "External Menu"
+msgstr "Menu esterno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:136
+msgid "Label"
+msgstr "Etichetta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:93
+msgid "### Epilogue ###"
+msgstr "### Epilogo ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:94
+msgid "Epilogue"
+msgstr "Epilogo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:97
+msgid "### Prologue ###"
+msgstr "### Prologo ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:98
+msgid "Prologue"
+msgstr "Prologo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:198
+msgid "Popup name"
+msgstr "Nome popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:202
+msgid "Test"
+msgstr "Test"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:230
+msgid "Text:"
+msgstr "Testo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:236
+msgid ""
+"<center><b>Visible text</b><br>May contain identifiers that will be "
+"evaluated at popup call time.<br>For labels, this text can contain also "
+"limited HTML tags.</center>"
+msgstr ""
+"<center><b>Testo Visibile</b><br>Può contenere identificatori che saranno "
+"valutati al momento della chiamata del popup.<br> Per le etichette, questo "
+"testo può contenere anche dei tag HTML limitati.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:239
+msgid "Condition:"
+msgstr "Condizioni:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:245
+msgid ""
+"<center><b>Boolean condition</b><br>Will be evaluated at popup call time in "
+"order to decide if this entry has to be shown.<br>An empty condition "
+"evaluates to true.</center>"
+msgstr ""
+"<center><b>Condizione Booleana</b><br>Verrà valutata al momento della "
+"chiamata del popup per permettere di decidere se questa voce dovrà essere "
+"mostrata..<br>Una condizione vuota viene valutata come vera.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:248
+msgid "Icon:"
+msgstr "Icona:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:254
+msgid ""
+"<center><b>Icon identifier</b><br>May be an internal icon ID, an absolute "
+"path or a relative path.<br>Portable scripts should never use absolute paths."
+"</center>"
+msgstr ""
+"<center><b>Identificatore Icona</b><br>Può essere un ID di un'icona interna, "
+"un percorso assoluto o un percorso relativo.<br>Gli script portabili non "
+"dovrebbero mai usare i percorsi assoluti.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:257
+msgid "External menu:"
+msgstr "Menu esterno:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:263
+msgid ""
+"<center><b>External menu name</b><br>This allows to nest externally defined "
+"popup menus. The popup menu with the specified name will be looked up at "
+"menu setup time.</center>"
+msgstr ""
+"<center><b>Nome del menu esterno</b><br>Questo permette di annidare popup-"
+"menu definiti esternamente. Il popup-menu con il nome specificato sarà "
+"ricercato all'atto della costruzione del menu.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:266
+msgid "Item Id:"
+msgstr "ID elemento:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:273
+msgid ""
+"<center><b>Item id</b><br>This will allow you to use delpopupitem later.</"
+"center>"
+msgstr ""
+"<center><b>ID elemento</b><br>Questo ti permetterà di usare delpopupitem in "
+"seguito.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:386
+msgid "New Separator Below"
+msgstr "Nuovo Separatore sotto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:388
+msgid "New Separator Above"
+msgstr "Nuovo Separatore sopra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:391
+msgid "New Separator Inside"
+msgstr "Nuovo Separatore all'interno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:396
+msgid "New Label Below"
+msgstr "Nuova Etichetta sotto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:398
+msgid "New Label Above"
+msgstr "Nuova Etichetta sopra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:401
+msgid "New Label Inside"
+msgstr "Nuova Etichetta all'interno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:406
+msgid "New Item Below"
+msgstr "Nuovo Elemento sotto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:408
+msgid "New Item Above"
+msgstr "Nuovo Elemento sopra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:411
+msgid "New Item Inside"
+msgstr "Nuovo Elemento all'interno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:416
+msgid "New Menu Below"
+msgstr "Nuovo Menu sotto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:418
+msgid "New Menu Above"
+msgstr "Nuovo Menu sopra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:421
+msgid "New Menu Inside"
+msgstr "Nuovo Menu Interno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:426
+msgid "New External Menu Below"
+msgstr "Nuovo Menu esterno sotto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:428
+msgid "New External Menu Above"
+msgstr "Nuovo Menu esterno sopra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:431
+msgid "New External Menu Inside"
+msgstr "Nuovo Menu esterno all'interno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:451
+msgid "&Paste Below"
+msgstr "&Incolla sotto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:456
+msgid "Paste Above"
+msgstr "Incolla sopra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:461
+msgid "Paste Inside"
+msgstr "Incolla all'interno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:473
+msgid "New Menu Prologue"
+msgstr "Nuovo Menu Prologo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:481
+msgid "New Menu Epilogue"
+msgstr "Nuovo Menu Epilogo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1042
+msgid "Popup"
+msgstr "Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1048
+msgid "&Export selected To..."
+msgstr "&Esporta selezione..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1099
+msgid "&New Popup"
+msgstr "&Nuovo Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1105
+msgid "Re&move Popup"
+msgstr "Ri&muovi popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1112
+msgid "&Export Popup To..."
+msgstr "&Esporta Popup..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+msgid "Unable to write to the popup file."
+msgstr "Fallito nello scrivere il file del popup."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1382
+msgid "Popup Editor"
+msgstr "Editor Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:62
+msgid "%cCore action: %Q"
+msgstr "%cAzione del nucleo (Core): %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:64
+msgid "%cUser action: %Q"
+msgstr "%cAzione dell'utente: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:65
+msgid "Label: %Q"
+msgstr "Etichetta: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:66
+msgid "Category: %Q"
+msgstr "Categoria %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:112
+msgid "The action \"%1\" is disabled"
+msgstr "L'azione \"%1\" è disabilitata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:259
+msgid "The action \"%1\" does not exist"
+msgstr "L'azione \"%1\" non esiste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:255
+msgid "The action \"%1\" is a core action and cannot be destroyed"
+msgstr "L'azione \"%1\" è una azione del Nucleo e non può essere distrutta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:392
+msgid "The switch -l requires -c"
+msgstr "L'opzione Switch -I richiede -c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:409
+msgid "The switch -s requires -w with a combination of flags 'c','x' and 'q'"
+msgstr ""
+"L'opzione Switch -s richiede -w con una combinazione delle opzioni 'c','x' e "
+"'q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:420
+msgid "The action \"%1\" is already defined as core action and cannot be overridden"
+msgstr ""
+"L'azione \"%1\" + è già  definita come azione del Nucleo e non può essere "
+"sovrascritta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:116
+msgid "Ops.. internal error"
+msgstr "Ops... errore interno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:125
+msgid "Manage File &Transfers"
+msgstr "Gestisci File &Trasferiti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:67
+msgid "Choose Avatar - KVIrc"
+msgstr "Scegli un Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:72
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+"Per favore seleziona un'immagine Avatar. Inserisci il percorso completo di "
+"un file locale o di un'immagine presente sul Web.<br>Se vuoi usare "
+"un'immagine locale fai click sul pulsante \"<b>Sfoglia</b>\" per cercare il "
+"file.<br<L'URL esteso può essere inserito manualmente (ricorda di includere "
+"il prefisso <b>http://</b>)."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:283
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:358
+msgid "Internal error: I'm not in the user database ?"
+msgstr "Errore interno: non sono nel database degli utenti?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:245
+msgid "Can't set the current avatar to '%Q': failed to start the http transfer"
+msgstr ""
+"Impossibile impostare l'Avatar a '%Q': impossibile iniziare il trasferimento "
+"HTTP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:249
+msgid "Can't set the current avatar to '%Q': can't load the image"
+msgstr "Impossibile impostare l'Avatar '%Q': impossibile caricare l'immagine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:351
+msgid "Invalid timeout specified, using default"
+msgstr "Timeout non valido, utilizzo quello predefinito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:389
+msgid "Can't add a file offer for file %Q (huh ? file not readable ?)"
+msgstr "Impossibile aggiungere l'offerta del file %Q (huh? Il file non è leggibile ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:396
+msgid "Added %d secs file offer for file %Q (%Q) and receiver %Q"
+msgstr "Aggiunti %d secondi all'offerta di file %Q (%Q) con ricevente %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:403
+msgid "Notifying avatar '%Q' to %Q"
+msgstr "Notifico Avatar '%Q' in %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:55
+msgid "&Execute"
+msgstr "&Esegui"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:59
+msgid "Params:"
+msgstr "Parametri:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:107
+msgid "Script Tester"
+msgstr "Script Tester"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:220
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:413
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:543
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:628
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:765
+msgid "The config file with id '%Q' is not open"
+msgstr "Il file di configurazione con id '%Q' non è aperto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:538
+msgid ""
+"The config file '%Q' has been changed but is opened as read-only: changes "
+"will be lost"
+msgstr ""
+"Il file di configurazione '%Q' è stato modificato ma è aperto in sola "
+"lettura: i cambiamenti verranno persi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:583
+msgid "The config file with id '%Q' is read only"
+msgstr "Il file di configurazione con id '%Q' è in modalità di sola lettura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:178
+msgid "Colors"
+msgstr "Colori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:255
+msgid "Context sensitive help"
+msgstr "Aiuto contestuale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1167
+msgid "&Replace"
+msgstr "&Sostituisci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:268
+msgid "Find & Repalce"
+msgstr "Trova & Sostituisci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1148
+msgid "Word to Find"
+msgstr "Parola da trovare"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1156
+msgid "Replace with"
+msgstr "Sostituisci con"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1172
+msgid "&Replace in all Aliases"
+msgstr "&Sostituisci in tutti gli Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1176
+msgid "&Findnext"
+msgstr "Trova successivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1181
+msgid "&Replace(WIP)"
+msgstr "&Sostituisci(WIP)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:227
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:547
+msgid "The specified toolbar doesn't exist"
+msgstr "La Barra degli Strumenti specificata non esiste "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:424
+msgid "No action name/index specified"
+msgstr "Nessun nome/indice di azione specificato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:441
+msgid "The action parameter didn't evaluate to an index"
+msgstr "Il parametro dell'azione non è un indice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:455
+msgid "The toolbar does not contain the specified item"
+msgstr "La Barra degli Strumenti non contiene l'elemento specificato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:513
+msgid "The action \"%Q\" doesn't exist"
+msgstr "L'azione \"%Q\" non esiste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:31
+msgid "Torrent Client"
+msgstr "Client Torrent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:361
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:364
+msgid "Standalone Servers"
+msgstr "Server Solitari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:112
+msgid ""
+"%Q doesn't look like a servers.ini file.\n"
+"Import failed."
+msgstr ""
+"%Q non sembra essere un file servers.ini.\n"
+"Importazione fallita."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:122
+msgid "Choose a servers.ini file"
+msgstr "Scegli un file servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:146
+msgid "Remote mIRC servers.ini Import Wizard"
+msgstr "Procedura Guidata Importazione servers.ini di mIRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:154
+msgid ""
+"<center><b>Welcome!</b><br><br>This wizard will guide you in the process of "
+"downloading a list of IRC servers. Please click \"<b>Next</b>\" to begin the "
+"operation.</center>"
+msgstr ""
+"<center><b>Benvenuto!</b><br><br> Questa procedura ti aiuterà a scaricare "
+"una lista di Server IRC. Per favore clicca su \"<b>Prosegui</b>\" per "
+"iniziare l'operazione.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:161
+msgid ""
+"<center>Here you can modify the URL that the list will be downloaded from. "
+"In most cases the default URL is acceptable.</center>"
+msgstr ""
+"<center> Qui puoi modificare gli URL dai quali la lista viene scaricata. "
+"Nella maggioranza dei casi si consiglia di lasciare gli URL predefiniti.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:169
+msgid "URL Selection"
+msgstr "Selezione URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:173
+msgid "Please wait while the list is being downloaded"
+msgstr "Attendere mentre la lista viene scaricata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:179
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:195
+msgid "List Download"
+msgstr "Scaricamento lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:229
+msgid "Failed to start the server list transfer :("
+msgstr "Impossibile avviare il trasferimento della lista :("
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:245
+msgid "File downloaded: processing ..."
+msgstr "Elaborazione file scaricato..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:255
+msgid "%1 servers imported succesfully"
+msgstr "%1 server importati con successo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:257
+msgid "No servers imported"
+msgstr "Nessun server importato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:326
+msgid "Import from servers.ini"
+msgstr "Importa la lista da server.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:333
+msgid "Import from http://www.mirc.co.uk/servers.ini"
+msgstr "Importa la lista da http://www.mirc.co.uk/servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lineedit.cpp:372
+msgid "Unknown echo mode %Q"
+msgstr "Echo mode %Q sconosciuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:203
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:359
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:172
+msgid "Widget parameter is not an object"
+msgstr "Il parametro Widget non è un oggetto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:230
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:250
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:449
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:485
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:177
+msgid "Widget parameter is not a valid object"
+msgstr "Il parametro Widget non è un oggetto valido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:95
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:263
+msgid "Widget object required"
+msgstr "Richiesto Oggetto Widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:151
+msgid "Unknown dock area '%Q'"
+msgstr "Area di dock '%Q' sconosciuta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:321
+msgid "Unknown alignment: '%Q'"
+msgstr "Allineamento '%Q' sconosciuto:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:373
+msgid "Unknown style: '%Q'"
+msgstr "Stile sconosciuto '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:84
+msgid "the toolbar cannot be a parent-widget!"
+msgstr "la barra degli strumenti non può essere un Widget padre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:93
+msgid "The parent-widget isn't a MainWindow."
+msgstr "La Widget padre non è una MainWindow."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:999
+msgid "The array passed as parameter must contain at least 4 elements"
+msgstr "L'Array passato come argomento deve contenere almeno 4 elementi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1012
+msgid "One of the geometry array parameters is empty"
+msgstr "Uno dei parametri dell'Array di geometria è vuoto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1017
+msgid "One of the geometry array parameters didn't evaluate to an integer"
+msgstr "Uno dei parametri dell'Array della geometria non è un numero intero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:503
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1032
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1500
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1044
+msgid "The first parameter didn't evaluate to an array nor an integer"
+msgstr "Il primo argomento non è un Array nì un numero intero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1419
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1476
+msgid "The array passed as parameter must contain at least 2 elements"
+msgstr "L'Array passato come argomento deve contenere almeno 2 elementi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:451
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:486
+msgid "One of the array parameters is empty"
+msgstr "Uno dei parametri dell'Array è vuoto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:456
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:491
+msgid "One of the array parameters didn't evaluate to an integer"
+msgstr "Uno dei parametri dell'Array non è un numero intero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:478
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:804
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:993
+msgid "The array passed as parameter must contain at least 3 elements"
+msgstr "L'Array passato come parametro deve contenere almeno 3 elementi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:551
+msgid "Unknown orientation"
+msgstr "Orientamento sconosciuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:789
+msgid "Pixmap or Widget parameter is not an object"
+msgstr "Il parametro Pixmap o Widget non è un Oggetto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:730
+msgid "Widget or Pixmap required "
+msgstr "Widget o Pixmap richiesto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:852
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:862
+msgid "Invalid mode '%Q'"
+msgstr "Modo non valido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:886
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1701
+msgid "Pixmap parameter is not an object"
+msgstr "Il parametro specificato non è un Oggetto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:891
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1706
+msgid "Pixmap object required"
+msgstr "Richiesto Oggetto Pixmap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1027
+msgid "$setGeometry() requires either an array as first parameter or four integers"
+msgstr "$setGeometry() richiede un Array come primo parametro o quattro numeri interi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:813
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1002
+msgid "One of the colors array parameters is empty"
+msgstr "Uno dei parametri dell'Array dei colori è vuoto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:818
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1007
+msgid "One of the colors array parameters didn't evaluate to an integer"
+msgstr "Uno dei parametri dell'Array dei colori non è un numero intero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1020
+msgid "A string of 6 digits hex is required"
+msgstr "E' richiesta un stringa di 6 cifre esadecimali"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:842
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1031
+msgid "Not an hex digits"
+msgstr "Non è una cifra esadecimale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1144
+msgid ""
+"$setForegroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+"$setBackgroundColor richiede come primo parametro un Array, una stringa "
+"esadecimale o tre numeri interi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1219
+msgid ""
+"$setBackgroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+"$setBackgroundColor richiede come primo parametro un Array, una stringa "
+"esadecimale o tre numeri interi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1426
+msgid "One of the move array parameters is empty"
+msgstr "Uno dei parametri dell'Array di Move è vuoto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1431
+msgid "One of the move array parameters didn't evaluate to an integer"
+msgstr "Uno dei parametri dell'Array di Move non è un numero intero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1438
+msgid "$move() requires either an array as first parameter or two integers"
+msgstr "$move() richiede un Array come primo parametro o due numeri interi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1483
+msgid "One of the resize array parameters is empty"
+msgstr "Uno dei parametri dell'Array di Resize è vuoto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1488
+msgid "One of the resize array parameters didn't evaluate to an integer"
+msgstr "Uno dei parametri dell'Array di Resize non è un numero intero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1495
+msgid "$resize() requires either an array as first parameter or two integers"
+msgstr "$resize() richiede un Array come primo parametro o due numeri interi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1528
+msgid "Invalid parameters"
+msgstr "Parametri non validi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1560
+msgid "Unknown widget flag '%Q'"
+msgstr "Flag Widget sconosciuta: '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1592
+msgid "Unknown style '%Q'"
+msgstr "Stile '%Q' sconosciuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1622
+msgid "No Layout associated to the widget "
+msgstr "Nessun Layout associato al parametro Widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:117
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:152
+msgid "Can't add a non-widget object"
+msgstr "Impossibile aggiungere un Oggetto non Widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1650
+msgid "Parent must be a widget object"
+msgstr "Il padre deve essere un Oggetto Widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1715
+msgid "Null mask"
+msgstr "Maschera nulla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1740
+msgid "Unknown widget attribute '%Q'"
+msgstr "Attributo widget '%Q' sconosciuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:382
+msgid "No such line number"
+msgstr "Numero di linea inesistente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:500
+msgid "Unknown word wrap '%Q'"
+msgstr "A capo automatico '%Q' sconosciuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:519
+msgid "Unknown wrap policy'%Q'"
+msgstr "Policy '%Q' sconosciuta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:850
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1039
+msgid "$setColor requires either an array as first parameter or three integers"
+msgstr "$setColor richiede un Array come primo parametro oppure 3 numeri interi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:975
+msgid "Unknown text format '%Q'"
+msgstr "Formato del testo '%Q' sconosciuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1071
+msgid " I can't find the specified file '%Q'."
+msgstr "Impossibile trovare il file specificato '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1078
+msgid " I cannot read the file %Q'."
+msgstr "Impossibile leggere il file %Q'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1113
+msgid "Unknown alignment '%Q'"
+msgstr "Allineamento sconosciuto '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1131
+msgid "Unknown auto formatting mode '%Q'"
+msgstr "Formattazione automatica '%Q' sconosciuta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1149
+msgid "Unknown vertical alignment '%Q'"
+msgstr "Allineamento verticale '%Q' sconosciuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:264
+msgid "pix '%Q' doesn't exists"
+msgstr "pix '%Q' non esiste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:276
+msgid "Can't add a non - popupmenu object"
+msgstr "Impossibile aggiungere un Oggetto non-popupmenu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:302
+msgid "Doesn't a widget object"
+msgstr "Non è un Oggetto Widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:182
+msgid "I can't find the specified file %Q."
+msgstr "Impossibile trovare il file specificato '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:222
+msgid "Destination parameter is not an object"
+msgstr "Il parametro di destinazione non è un oggetto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:228
+msgid "Destination must be a pixmap object"
+msgstr "La destinazione deve essere un oggetto pixmap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:238
+msgid "Area dimensions are out of destination size "
+msgstr "Le dimensioni dell'area vanno oltre la dimensione di destinazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:253
+msgid "Pixmap dimensions are out of destination size "
+msgstr "Le dimensioni della pixmap vanno oltre la dimensione di destinazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:261
+msgid "Offset width area is out of pixmap size "
+msgstr "La larghezza dell'area è oltre la dimensione della pixmap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:266
+msgid "Offset height area is out of pixmap size "
+msgstr "L'altezza dell'area è oltre la dimensione della pixmap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:121
+msgid "The widget must be a child of this hbox"
+msgstr "La Widget deve essere figlia di questa hbox"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:191
+msgid "No string parameter given - using empty string"
+msgstr "Nessun parametro stringa - uso una stringa vuota"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:194
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:214
+#, c-format
+msgid "Item index [%d] is too big - defaulting to $count() - 1 [%d]"
+msgstr ""
+"L'indice dell'elemento [%d] è troppo grande - uso quello predefinito $count"
+"() - 1 [%d]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:333
+msgid "Invalid insertion Policy %Q"
+msgstr "Policy di inserimento %Q non valida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:136
+msgid "Unknown mode "
+msgstr "Modalità  sconosciuta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:149
+msgid "Unknown segment style "
+msgstr "Stile segmento sconosciuto "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_process.cpp:221
+msgid "Process could not be starded."
+msgstr "Impossibile avviare il processo."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:279
+msgid "Invalid selection mode '%Q' assuming single"
+msgstr "Modo di selezione '%Q' non valido, uso singolo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:316
+msgid "Unknown text position '%Q'"
+msgstr "Posizione del testo sconosciuta '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:256
+msgid "Unknown tickmark '%Q'"
+msgstr "Tickmark sconosciuto '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:271
+msgid "Unknown orientation '%Q'"
+msgstr "Orientamento sconosciuto '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:500
+msgid "No socket object specified"
+msgstr "Nessun Oggetto Socket specificato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:506
+msgid "Invalid socket object specified (it doesn't inherit from socket)"
+msgstr "Oggetto Socket specificato non valido (non eredita dal Socket)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:518
+msgid "There is no connection to accept!"
+msgstr "Non esiste alcuna connessione da accettare!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:591
+#, c-format
+msgid "Value %d for port is out of range (values allowed are from 0 to 65535"
+msgstr ""
+"Il valore %d per una porta è fuori dall'intervallo (i valori consentiti sono "
+"da 0 a 65535"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:596
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:87
+msgid "Another connection in progress"
+msgstr "E' in corso un'altra connessione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:648
+msgid "No IPV6 support in this executable"
+msgstr "Nessun supporto IPv6 in questo eseguibile"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:670
+msgid "Invalid IP address specified ('%Q')"
+msgstr "Indirizzo IP specificato non valido ('%Q')"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:89
+msgid "Socket creation failed"
+msgstr "Creazione Socket fallita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:706
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:727
+msgid "Invalid socket address"
+msgstr "Indirizzo Socket non valido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:714
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:735
+msgid "Bind failure"
+msgstr "Binding fallito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:745
+msgid "Listen failure"
+msgstr "Ascolto fallito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:812
+msgid "unknown"
+msgstr "sconosciuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:876
+msgid "Invalid ip address "
+msgstr "Indirizzo IP non valido "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:882
+msgid "Invalid ip address (%Q)"
+msgstr "Indirizzo IP non valido (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:906
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1013
+msgid "Failed to create the socket"
+msgstr "Fallito nel creare il Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:918
+msgid "Failed to setup a nonblocking socket"
+msgstr "Fallita inizializzazione di un nonblocking-Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:939
+msgid "Connect failure: "
+msgstr "Connessione fallita: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:967
+msgid "Connect attempt timed out"
+msgstr "Tentativo di connessione fallito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:993
+msgid "Can't start the DNS thread"
+msgstr "Impossibile avviare il Thread DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:1143
+msgid "Too much unprocessed incoming data (you've left this socket unmanaged ?)"
+msgstr "Troppi dati entranti non processati (hai lasciato questo Socket non gestito?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:149
+msgid "Error in KVS class implementation: processing aborted"
+msgstr "Errore nella classe di implementazione KVS: processo annullato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:154
+msgid "Processing aborted"
+msgstr "Elaborazione annullata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:160
+#, c-format
+msgid "Error near line %d, column %d"
+msgstr "Errore vicino alla riga %d, colonna %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:162
+#, c-format
+msgid "Warning near line %d, column %d"
+msgstr "Warning vicino la linea %d, colonna %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:313
+msgid "XML support not available in the Qt library"
+msgstr "Supporto XML non disponibile nelle librerie QT"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:491
+msgid "Not a widget object"
+msgstr "Non è un Oggetto Widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:308
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:497
+msgid "Can't find the tab "
+msgstr "Impossibile trovare la scheda "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:522
+msgid "Unknown position 'Q%'"
+msgstr "Posizione sconosciuta '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:123
+msgid "The widget must be a child of this vbox"
+msgstr "Questa Widget deve essere figlia di questa vbox"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:276
+msgid "Not Enough Parameters"
+msgstr "Parametri non sufficienti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:142
+msgid "The listviewitem cannot be parentless"
+msgstr "La listviewitem deve avere un padre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:152
+msgid ""
+"The parent of the listviewitem must be either another listviewitem or a "
+"listview"
+msgstr "Il genitore di listviewitem deve essere un altro listviewitem od un listview"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:403
+msgid "Pixmap object or image Id required"
+msgstr "Richiesto Oggetto pixmap o ID dell'immagine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:413
+msgid ""
+"Error occured: the suitable file '%Q' is not of the correct format or it is "
+"not a valid icon number."
+msgstr ""
+"Errore: il file '%Q' non è nel formato corretto o non è un numero di icona "
+"valido."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:151
+msgid ""
+"The window identifier preceeded by WinId must be the first object in the "
+"search path"
+msgstr ""
+"L'identificatore della finestra preceduto da WinId deve essere il primo "
+"Oggetto nel percorso di ricerca"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:167
+msgid "Failed to find one of the wrap path widgets (%Q::%Q)"
+msgstr "Impossibile trovare uno dei percorsi Widget (%Q::%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:176
+msgid "Failed to find the widget to wrap"
+msgstr "Impossibile trovare Widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:119
+msgid "The parent of a layout must be a widget!"
+msgstr "Il padre di un layout deve essere Widget!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:269
+msgid "Invalid resize mode defaulting to Auto"
+msgstr "Modo di ridimensionamento non valido, uso il modo predefinito Auto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:324
+msgid "Unknown alignment"
+msgstr "Allineamento sconosciuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:373
+msgid "Unknown orientation: "
+msgstr "Orientamento sconosciuto: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listview.cpp:320
+msgid "Invalid selection mode '%Q'"
+msgstr "Modalità di selezione '%Q' non valida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tbrowser.cpp:99
+msgid "I can't find the specified file '%Q'."
+msgstr "Impossibile trovare il file specificato '%Q'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:121
+msgid "Can't add a null object"
+msgstr "Impossibile aggiungere un Oggetto null"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:128
+msgid ""
+"Invalid object handle passed as parameter (the object is no longer "
+"existing ?)"
+msgstr ""
+"Gestore invalido dell'Oggetto passato come parametro (l'oggetto non esiste "
+"più?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:134
+msgid "Object in invalid state"
+msgstr "Stato non valido per l'Oggetto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:140
+msgid "Can't set a non-widget object to be the main widget of a dock window"
+msgstr ""
+"Impossibile settare un Oggetto non-Widget come principale di una finestra "
+"dock"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:146
+msgid "The added widget is not a child of this dock window"
+msgstr "Il parametro Widget aggiunto non è figlio di questa finestra dock"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:271
+msgid "Invalid dock area specified"
+msgstr "L'area di dock specificata non è valida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:181
+msgid "Class '%Q' is not definited"
+msgstr "La classe '%Q' non è definita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:257
+msgid "Inexisting target object for objects.connect"
+msgstr "Oggetto destinatario inesistente per objects.connect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:262
+msgid "Inexisting source object for objects.connect"
+msgstr "Oggetto sorgente non esistente per objects.connect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:444
+msgid "The class '%Q' does not exist"
+msgstr "La classe %Q non esiste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:404
+msgid "Object does not exists"
+msgstr "L'oggetto non esiste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:557
+msgid "Inexisting target object for objects.disconnect"
+msgstr "Oggetto destinatario inesistente per objects.disconnect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:562
+msgid "Inexisting source object for objects.disconnect"
+msgstr "Oggetto sorgente non esistente per objects.disconnect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:608
+msgid "Source is not an object"
+msgstr "La sorgente non è un oggetto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:614
+msgid "Destination is not an object"
+msgstr "La destinazione non è un oggetto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:625
+msgid "Widget, Image or Pixmap required "
+msgstr "Richiesta Widget, Image o Pixmap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:635
+msgid "Widget or Pixmap required"
+msgstr "Widget o Pixmap richiesto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:714
+msgid "One o more of background, foreground or destination aren't objects"
+msgstr "Uno o più tra background, foreground o destinazione non sono oggetti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:720
+msgid "Pixmap objects required"
+msgstr "Richiesto Oggetto Pixmap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:743
+msgid "Values for background are out of image size "
+msgstr "I valori per background (sfondo) sono fuori dalla dimensione dell'immagine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:748
+msgid "Values for foreground are out of image size "
+msgstr "I valori di foreground (primo piano) sono fuori dalla grandezza dell'immagine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:226
+msgid "Empty filename string"
+msgstr "Stringa del nome del file vuota"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:271
+msgid "No such open mode: '%Q'"
+msgstr "Impossibile utilizzare tale modalità di apertura: '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:312
+msgid "File is not open!"
+msgstr "Il file non è aperto!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:348
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:406
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:434
+msgid "File is not open !"
+msgstr "Il file non è aperto!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:369
+msgid "Argument to long, using only first char"
+msgstr "Argomento troppo lungo, utilizzo solo il primo carattere"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:339
+msgid "Write error occured !"
+msgstr "Si è verificato un errore di scrittura!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:352
+msgid "Read error occured !"
+msgstr "Si è verificato un errore di lettura!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:371
+msgid "An error occured !"
+msgstr "Si è verificato un errore!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:387
+msgid "Missing both encrypt and decrypt key: at least one is needed"
+msgstr ""
+"Mancano sia la chiave per crittare che per decrittare: è necessaria almeno "
+"una chiave"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:168
+msgid "Error 0: Success ?"
+msgstr "Errore 0: nessun errore?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:169
+msgid "Unsupported crypt mode"
+msgstr "Metodo crittografico non supportato "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:170
+msgid "Unsupported direction"
+msgstr "Direzione non supportata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:171
+msgid "Unsupported key length"
+msgstr "Lunghezza della chiave non supportata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:172
+msgid "Bad key data"
+msgstr "Dati della chiave errati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:173
+msgid "Engine not initialized"
+msgstr "Motore non inizializzato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:174
+msgid "Invalid direction for this engine"
+msgstr "Direzione non valida per questo motore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:175
+msgid "Corrupted message data or invalid decrypt key"
+msgstr "Dati del messaggio corrotti o chiave di decrittazione non valida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:52
+msgid "Unknown error"
+msgstr "Errore sconosciuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:184
+msgid "Ops...encrypt cipher not initialized"
+msgstr "Ops... motore crittografico non inizializzato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:420
+msgid "Data buffer too long"
+msgstr "Buffer dei dati troppo grande"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:221
+msgid "Ops...decrypt cipher not initialized"
+msgstr "Ops... cifrario di decrittazione non inizializzato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:277
+msgid "The message is not a hexadecimal string: this is not my stuff"
+msgstr "Il messaggio non è una stringa esadecimale: non è di mia competenza"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:671
+msgid "The message is not a base64 string: this is not my stuff"
+msgstr "Il messaggio non è una stringa base64: non è di mia competenza"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:676
+msgid "The message doesn't seem to be encoded with CBC Mircryption"
+msgstr "Il messaggio non sembra essere crittato con CBC Mircryption"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:712
+#, c-format
+msgid ""
+"Cryptographic engine based on the\n"
+"Advanced Encryption Standard (AES)\n"
+"algorithm called Rijndael.\n"
+"The text is first encrypted with rijndael\n"
+"and then converted to %s notation.\n"
+"The keys used are %d bit long and will be padded\n"
+"with zeros if you provide shorter ones.\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"See the rijndael module documentation\n"
+"for more info on the algorithm used.\n"
+msgstr ""
+"Il sistema crittografico è basato sull'algoritmo\n"
+"Advanced Encryption Standard (AES)\n"
+"chiamato Rijndael.\n"
+"Il testo viene prima crittato con Rijndael\n"
+"e poi convertito con la notazione %s. Le chiavi usate sono lunghe %d bit e "
+"verranno riempite con degli\n"
+"zeri se ne sceglierai una troppo corta.\n"
+"Se viene fornita una sola chiave, questo sistema,\n"
+"la userà sia per decrittare che per crittare.\n"
+"Vedi il documento Rijndael per maggiori informazioni\n"
+"sull'algoritmo usato.\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:739
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:749
+msgid "hexadecimal"
+msgstr "Esadecimale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:759
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:779
+msgid "base64"
+msgstr "base64"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:790
+msgid ""
+"Popular cryptographic engine based on the\n"
+"old Blowfish encryption algorithm.\n"
+"The text is first encrypted with Blowfish \n"
+"and then converted to base64 notation.\n"
+"The keys used have variable length and\n"
+"are specified as character strings.\n"
+"You can specify keys long up to 56 bytes (448 bits).\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"This engine works in ECB mode by default:\n"
+"if you want to use CBC mode you must prefix\n"
+"your key(s) with \"cbc:\".\n"
+msgstr ""
+"Popolare sistema crittografico basato sul\n"
+"vecchio algoritmo crittografico Blowfish.\n"
+"Il testo è prima crittografato con Blowfish \n"
+"e poi convertito nella notazione base64.\n"
+"Le chiavi usate hanno lunghezza variabile e\n"
+"sono specificate come stringhe di caratteri.\n"
+"Puoi specificare chiavi lunghe fino a 56 bytes (448 bits).\n"
+"Se è fornita una sola chiave, il sistema\n"
+"la userà sia per la cifratura che la decifratura.\n"
+"Questo sistema lavora nel modo ECB:\n"
+"se vuoi usare il modo CDC devi prefissare\n"
+"le chiavi con \"cbc:\".\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:61
+msgid "Drop here the icons from the toolbars to remove them"
+msgstr "Rilascia qui le icone per rimuoverle dalla Barra degli Strumenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:128
+msgid "ToolBar Properties"
+msgstr "Proprietà della Barra degli Strumenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:144
+msgid "Icon"
+msgstr "Icona"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:160
+msgid "Id"
+msgstr "ID"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:217
+msgid "Please choose the icon for the ToolBar"
+msgstr "Scegliere l'icona per la Barra degli Strumenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "Invalid ToolBar Label"
+msgstr "Etichetta della Barra degli Strumenti non valida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "The ToolBar Label can't be empty!"
+msgstr "L'etichetta della Barra degli Strumenti non può essere vuota!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:256
+msgid "Duplicate ToolBar Id"
+msgstr "ID della Barra degli Strumenti già esistente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:257
+msgid ""
+"The specified ToolBar Id already exists.<br>Would you like KVIrc to assign "
+"it automatically (so it doesn't collide with any other toolbar) or you "
+"prefer to do it manually ?"
+msgstr ""
+"L'ID specificato per la Barra degli Strumenti è già esistente.<br>Vuoi che "
+"KVIrc ne assegni uno automaticamente (così da non creare conflitti con altre "
+"Barre degli Strumenti) o preferisci farlo manualmente ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Manually"
+msgstr "Manuale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Automatically"
+msgstr "Automatico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:278
+msgid "Hide Advanced"
+msgstr "Nascondi Avanzate"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:287
+msgid "Customize Toolbars"
+msgstr "Personalizza Barra degli Strumenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:296
+msgid "New ToolBar"
+msgstr "Nuova Barra degli Strumenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:300
+msgid "Delete ToolBar"
+msgstr "Elimina Barra degli Strumenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:304
+msgid "Edit ToolBar"
+msgstr "Modifica Barra degli Strumenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:312
+msgid "Export ToolBar"
+msgstr "Esporta Barra degli Strumenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:373
+msgid "Confirm ToolBar Deletion"
+msgstr "Conferma Cancellazione Barra degli Strumenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:374
+msgid "Do you really want to delete toolbar \"%1\" ?"
+msgstr "Vuoi veramente cancellare la Barra degli Strumenti \"%1\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:397
+msgid "ToolBar Export"
+msgstr "Esporta Barra degli Strumenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:398
+msgid "Do you want the associated actions to be exported with the toolbar ?"
+msgstr "Vuoi che l'azione associata venga esportata con la Barra degli Strumenti?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+msgid "Unable to write to the toolbar file."
+msgstr "Impossibile scrivere nel file della Barra degli Strumenti."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:465
+msgid "Please specify the properties for the toolbar \"%1\""
+msgstr "Specificare le proprietà della Barra degli Strumenti \"%1\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:491
+msgid "Please specify the properties for the new toolbar"
+msgstr "Specificare le proprietà per la nuova Barra degli Strumenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:493
+msgid "My ToolBar"
+msgstr "La Mia Barra degli Strumenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:63
+msgid "Window with ID '%Q' not found"
+msgstr "Finestra con ID '%Q' non trovata "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:67
+msgid "The specified window (%Q) is not a channel/query/DCC chat"
+msgstr "La finestra specificata (%Q) non è un Canale/Query/DCC Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:108
+msgid "File not found or empty"
+msgstr "File non trovato o vuoto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:114
+msgid "I can't open that file"
+msgstr "Impossibile aprire il file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:122
+msgid "Could not paste file"
+msgstr "Impossibile incollare il file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:218
+msgid "The specified window (%Q) is not a channel/query/dcc"
+msgstr "La finestra specificata (%Q) non è un Canale/Query/DCC Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:271
+msgid "Slow-paste ID:%d Window:%Q"
+msgstr "Incolla lentamente ID:%d Finestra:%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:240
+msgid "Plugin not found. Please check the plugin-name and path."
+msgstr "Plugin non trovato. Controlla il nome del plugin e il percorso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:247
+msgid "Error while loading plugin."
+msgstr "Errore nel caricare il plugin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:311
+msgid "This plugin does not export the desired function."
+msgstr "Questo plugin non esporta la funzione desiderata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:327
+msgid "The plugin has no function to free memory. This can result in Memory Leaks!"
+msgstr ""
+"Il plugin non ha funzioni per liberare la memoria. Questo può comportare "
+"perdite di memoria!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:209
+#, c-format
+msgid "No environment variable found, please don't use the %% in the request"
+msgstr ""
+"Impossibile trovare la variabile d'ambiente, per favore non usare il %% "
+"nelle richieste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:482
+msgid "Invalid DCOP parameter syntax"
+msgstr "Sintassi parametro DCOP non valido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:495
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:516
+msgid "The specified parameter is not an integer"
+msgstr "Il parametro specificato non è un numero intero"
+
+# c-format
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:521
+#, c-format
+msgid "Unsupported DCOP parameter type %s"
+msgstr "Tipo di parametro DCOP non supportato %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:534
+msgid "DCOP call failed"
+msgstr "Chiamata DCOP fallita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:599
+msgid "DCOP calls are available only when KDE support is compiled in"
+msgstr ""
+"Le chiamate DCOP sono disponibili solo dopo aver compilato il supporto per "
+"KDE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1408
+#, c-format
+msgid "The window with id '%s' does not exist"
+msgstr "Il file di configurazione con ID '%s' non esiste."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:851
+msgid "Window type or 'all' expected as first parameter"
+msgstr "Tipo della Finestra o 'all' atteso come primo parametro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:938
+msgid "Invalid IRC context id '%Q'"
+msgstr "ID del Contesto IRC non valido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1045
+msgid "The specified IRC context is not valid: creating a context free window"
+msgstr "Il Contesto IRC specificato non è valido: creo un nuovo contesto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1119
+msgid "The specified window is not of type \"userwnd\""
+msgstr "La finestra specificata non è di tipo \"userwnd\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1208
+msgid "Window doesn't have input widget"
+msgstr "La finestra non ha una Widget di input"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1363
+msgid "The encrypt key wasn't a valid hexadecimal string"
+msgstr "La chiave per crittare non è una stringa esadecimale valida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1377
+msgid "The decrypt key wasn't a valid hexadecimal string"
+msgstr "La chiave per decrittare non è una stringa esadecimale valida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1414
+msgid "Both -n and -m switchess specified, -n takes precedence"
+msgstr "Date le specifiche opzioni -n e -m insieme, -n ha la precedenza"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1424
+msgid "No encrypt key specified: can't allocate engine"
+msgstr ""
+"Nessuna chiave crittografica specificata: impossibile avviare il sistema "
+"crittografico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1446
+msgid "Unknown engine error"
+msgstr "Errore del motore sconosciuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1449
+msgid "Failed to initialize the specified crypt engine: %Q"
+msgstr "Impossibile inizializzare il motore crittografico specificato: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1453
+msgid "The crypt engine \"%Q\" does not exist"
+msgstr "Il motore crittografico \"%Q\" non esiste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1458
+msgid "This executable has been compiled without crypt support"
+msgstr "Questo eseguibile è stato compilato senza supporto alla crittografia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:138
+msgid "Current window is not a channel"
+msgstr "La finestra corrente non è un canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:87
+msgid "Raw Event"
+msgstr "Eventi Raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:97
+msgid "Edit the raw event handler name."
+msgstr "Modifica il nome del gestore di eventi Raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:179
+msgid "&Add Raw Event..."
+msgstr "&Aggiungi Eventi Raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "New Raw Event"
+msgstr "Nuovo Evento Raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "Enter the numeric code of the message (0-999)"
+msgstr "Inserisci il codice numerico del messaggio (0-999)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+msgid "Unable to write to the raw event file."
+msgstr "Impossibile scrivere nel file dell'Evento Raw."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Unable to write to the raw events file."
+msgstr "Impossibile scrivere nel file degli Eventi Raw."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:512
+msgid "Raw Editor"
+msgstr "Editor Raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:219
+msgid "A really lame text transformation engine :D"
+msgstr "Un motore/metodo veramente lamero per la trasformazione del testo :D"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:229
+msgid "A really lame text transformation engine: Light Version."
+msgstr "Un metodo di trasformazione del testo veramente da lamer: Light Version"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:82
+#, c-format
+msgid "Socket Spy [IRC Context %u]"
+msgstr "Spia Socket [Contesto IRC %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:92
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Socket Spy</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Spia Socket</b></font> <font color=\"%s\">"
+"[Contesto IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:112
+msgid "Socket open"
+msgstr "Socket aperto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:117
+msgid "Socket closed"
+msgstr "Socket chiuso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:149
+msgid "Internal unique name for the action"
+msgstr "Nome interno dell'azione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:151
+msgid "Label:"
+msgstr "Etichetta:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:155
+msgid ""
+"Visible name for this action.<br>This string will be displayed to the user "
+"so it is a good idea to use $tr() here"
+msgstr ""
+"Nome visibile per questa azione.<br>Questa è la stringa mostrata all'utente "
+"quindi sarebbe una buona idea usare $tr() qui."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:166
+msgid "Action code"
+msgstr "Codice dell'azione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:168
+msgid "Code"
+msgstr "Codice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:174
+msgid "Category:"
+msgstr "Categoria:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:178
+msgid "Choose the category that best fits for this action"
+msgstr "Scegli la categoria alla quale appartiene questa azione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:180
+msgid "Description:"
+msgstr "Descrizione:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:184
+msgid ""
+"Visible short description for this action.<br>This string will be displayed "
+"to the user so it is a good idea to use $tr() here"
+msgstr ""
+"Breve descrizione dell'azione.<br>Questa stringa sarà mostrata all'utente "
+"quindi sarebbe una buona idea usare $tr() qui."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:186
+msgid "Small Icon:"
+msgstr "Icona Piccola:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:194
+msgid ""
+"The small icon associated to this action.<br>It will appear at least in the "
+"popup menus when this action is inserted.<br>It should be 16x16 pixels."
+msgstr ""
+"Icona piccola associata a questa azione.<br>Questa icona apparirà almeno nel "
+"menu popup in cui è inserita questa azione.<br>Dovrebbe essere 16x16 pixel."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:200
+msgid "Big Icon:"
+msgstr "Icona Grande:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:209
+msgid ""
+"The big icon associated to this action.<br>It will appear at least in the "
+"toolbar buttons when this action is inserted.<br>It should be 32x32 pixels."
+msgstr ""
+"Icona grande associata a questa azione.<br>Apparirà almeno nella barra degli "
+"strumenti dove è inserita questa azione.<br>Dovrebbe essere 32x32 pixel."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:215
+msgid "Key Sequence:"
+msgstr "Sequenza Tasti:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:219
+msgid ""
+"Optional keyboard sequence that will activate this action.<br>The sequence "
+"should be expressed as a string of up to four key codes separated by commas "
+"eventually combined with the modifiers \"Ctrl\",\"Shift\",\"Alt\" and \"Meta"
+"\".<br>Examples of such sequences are \"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl+X,"
+"Ctrl+C\" ..."
+msgstr ""
+"Sequenza di tasti opzionale che attiverà questa azione.<br>La sequenza "
+"dovrebbe essere espressa come una stringa di massimo 4 tasti separati da "
+"virgole e eventualmente combinati con i tasti \"Ctrl\",\"Shift\" e \"Alt\"."
+"<br>Esempi di queste sequenze sono \"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl+X, Ctrl"
+"+C\" ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:240
+msgid "Needs IRC Context"
+msgstr "Necessita di un Contesto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:242
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window belongs to an irc context"
+msgstr ""
+"Abilita questa opzione se l'azione deve essere ammessa solo quando la "
+"finestra attiva appartiene ad un Contesto IRC."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:250
+msgid "Needs IRC Connection"
+msgstr "Necessita di una connessione IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:252
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window has an active IRC connection"
+msgstr ""
+"Abilita questa opzione se l'azione deve essere ammessa solo quando la "
+"finestra attiva ha una connessione IRC attiva."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:260
+msgid "Enable at Login"
+msgstr "Abilita al Login"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:261
+msgid ""
+"Check this option if this action should be enabled also during the login "
+"operations (so when the logical IRC connection hasn't been estabilished yet)"
+msgstr ""
+"Autorizza questa opzione se l'azione deve essere abilitata anche durante le "
+"azioni di Login (cioè quando la connessione ad IRC non è stata ancora "
+"stabilita)."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:265
+msgid "Enable Only in Specified Windows"
+msgstr "Abilita solo nelle finestre specificate"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:267
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is of a specified type"
+msgstr ""
+"Abilita questa opzione se l'azione deve essere abilitata solo quando la "
+"finestra attiva è del tipo specificato."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:271
+msgid "Enable in Console Windows"
+msgstr "Abilita nelle finestre di Console"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:272
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a console"
+msgstr ""
+"Abilita questa opzione se l'azione deve essere abilitata solo quando la "
+"finestra attiva è una Console."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:277
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:299
+msgid "Only If There Are Selected Users"
+msgstr "Solo se ci sono Utenti selezionati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:278
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:300
+msgid ""
+"This will enable the action only if there are selected users in the active "
+"window"
+msgstr ""
+"Questo abiliterà  l'azione solo se ci sono utenti selezionati nella finestra "
+"attiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:282
+msgid "Enable in Channel Windows"
+msgstr "Abilita nelle finestre dei Canali"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:283
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a channel"
+msgstr ""
+"Abilita questa opzione se questa azione deve essere abilitata solo quando la "
+"finestra attiva è un Canale."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:293
+msgid "Enable in Query Windows"
+msgstr "Abilita nelle finestre di Query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:294
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a query"
+msgstr ""
+"Abilita questa opzione se l'azione deve essere abilitata solo quando la "
+"finestra attiva è una Query."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:304
+msgid "Enable in DCC Chat Windows"
+msgstr "Abilita nelle finestre di DCC Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:305
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a dcc chat"
+msgstr ""
+"Abilita questa opzione se l'azione deve essere abilitata solo quando la "
+"finestra attiva è una DCC Chat."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:627
+msgid "Action"
+msgstr "Azioni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:680
+msgid "New Action"
+msgstr "Nuova Azione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:683
+msgid "Delete Actions"
+msgstr "Cancella Azioni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:686
+msgid "Export Actions..."
+msgstr "Esporta Azioni..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Unable to write to the actions file."
+msgstr "Impossibile scrivere nel file delle Azioni."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:823
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:824
+msgid "My Action"
+msgstr "La mia Azione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:825
+msgid "Put here a short description of your action"
+msgstr "Inserisci una breve descrizione della tua Azione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:925
+msgid "Action Editor"
+msgstr "Editor Azioni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:938
+msgid "Apply"
+msgstr "Applica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:63
+msgid "Outgoing traffic"
+msgstr "Traffico in uscita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:67
+msgid "Incoming traffic"
+msgstr "Traffico in entrata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_crypt.cpp:160
+msgid "Invalid crypt engine"
+msgstr "Motore di cifratura non valido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:296
+msgid "Directory"
+msgstr "Directory"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:315
+msgid "Socket"
+msgstr "Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:332
+msgid "Fifo"
+msgstr "Fifo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:349
+msgid "Block device"
+msgstr "Dispositivo a blocchi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:366
+msgid "Char device"
+msgstr "Dispositivo caratteri"
+
+# Nate: ci sta? =) - ethy
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:429
+msgid "Octet stream (unknown)"
+msgstr "Flusso dell'ottetto (sconosciuto)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_osinfo.cpp:413
+msgid "Unknown "
+msgstr "Sconosciuto "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:181
+msgid "The specified network has no server entries"
+msgstr "La rete specificata non ha alcun Server presente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:239
+msgid ""
+"The server specification seems to be in the net:<string> but the network "
+"couln't be found in the database"
+msgstr ""
+"Le specifiche del Server sembrano essere nella rete:<string> ma non è stato "
+"possibile trovare tale rete nel database"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:261
+msgid ""
+"The server specification seems to be in the id:<string> form but the "
+"identifier coulnd't be found in the database"
+msgstr ""
+"Le specifiche del Server sembrano essere nell'ID:<string> ma non è stato "
+"possibile trovare tale identificatore nel database"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:71
+msgid "Aborted"
+msgstr "Annullato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:96
+msgid "No request"
+msgstr "Nessuna richiesta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:141
+msgid "No filename specified for the \"StoreToFile\" processing type"
+msgstr "Nessun nome di file specificato per il processo di tipo \"StoreToFile\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:160
+msgid "Invalid URL: Missing hostname"
+msgstr "URL non valido: nome Host mancante"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:167
+msgid "Unsupported protocol %1"
+msgstr "Protocollo non supportato %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:189
+msgid "Unable to start the DNS lookup"
+msgstr "Impossibile avviare Lookup DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:194
+#, c-format
+msgid "Looking up host %s"
+msgstr "Risoluzione Host %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:210
+msgid "Host %s resolved to %Q"
+msgstr "Host %s risolto in %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:246
+msgid "Unable to start the request slave thread"
+msgstr "Impossibile avviare il Thread Slave richiesto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:251
+msgid "Contacting host %Q on port %u"
+msgstr "Contatto l'Host %Q sulla porta %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:271
+msgid "Connection established, sending request"
+msgstr "Connessione stabilita, invio richiesta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:322
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:51
+msgid "Success"
+msgstr "Nessun errore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:429
+msgid "Failed to rename the existing file, please rename manually and retry"
+msgstr "Fallito nel rinominare il file esistente, rinominalo manualmente e riprova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:447
+msgid "Can't open file \"%Q\" for writing"
+msgstr "Impossibile aprire il file\"%Q\" in scrittura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:497
+#, c-format
+msgid "Invalid HTTP response: %s"
+msgstr "Risposta HTTP non valida: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:503
+#, c-format
+msgid "Received HTTP response: %s"
+msgstr "Ricevuto responso HTTP: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:628
+msgid "Stream exceeding maximum length"
+msgstr "Il flusso ha sorpassato la lunghezza massima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:661
+msgid "Header too long: exceeded 4096 bytes"
+msgstr "Header troppo lungo: sorpassati i 4096 byte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:710
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:852
+msgid "Stream exceeded expected length"
+msgstr "Il flusso ha sorpassato la lunghezza attesa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:798
+msgid "Protocol error: invalid chunk size"
+msgstr "Errore nel protocollo: dimensione invalida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:818
+msgid "Chunk header too long: exceeded 4096 bytes"
+msgstr "Header troppo lungo: sorpassati i 4096 byte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:987
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1193
+msgid "Operation timed out"
+msgstr "Tempo per l'operazione scaduto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1003
+msgid "Unexpected SSL error"
+msgstr "Errore SSL inatteso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1016
+msgid "Failed to enter non blocking mode"
+msgstr "Fallito nell'entrare nel modo \"non blocking\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1021
+msgid "Invalid target address"
+msgstr "Destinazione dell'indirizzo non valida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1056
+msgid "Failed to initialize the SSL context"
+msgstr "Impossibile inizializzare il contesto SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1058
+msgid "Failed to initialize the SSL connection"
+msgstr "Impossibile inizializzare la connessione SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1075
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:99
+msgid "Remote end has closed the connection"
+msgstr "La connessione remota è stata terminata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1087
+msgid "Unrecoverable SSL error during handshake"
+msgstr "Errore irreversibile durante la transazione SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1272
+msgid "Operation timed out (while selecting for read)"
+msgstr "Tempo scaduto per l'operazione (durante l'attesa in lettura)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1382
+msgid "This KVIrc executable has no SSL support"
+msgstr "Questo eseguibile di KVIrc non ha il supporto SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1147
+msgid "Back"
+msgstr "Indietro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:268
+msgid "Next"
+msgstr "Prossimo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:168
+msgid "%1 bytes"
+msgstr "%1 byte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:172
+msgid "%1 KB"
+msgstr "%1 KB"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:176
+msgid "%1 MB"
+msgstr "%1 MB"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:181
+msgid "%1 GB"
+msgstr "%1 GB"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:185
+msgid "%1 TB"
+msgstr "%1 TB"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:620
+msgid "Internal error"
+msgstr "Errore interno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:54
+msgid "Unknown command"
+msgstr "Comando sconosciuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:55
+msgid "Missing closing brace"
+msgstr "Manca la parentesi graffa di chiusura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:56
+msgid "Unexpected end of command in string"
+msgstr "Inattesa fine del comando dentro la stringa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:57
+msgid "Unexpected end of command in dictionary key"
+msgstr "Inattesa fine del comando nella chiave di dizionario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:58
+msgid "Switch dash without switch letter"
+msgstr "Trattino dello Switch senza la lettera di Switch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:59
+msgid "Unknown function"
+msgstr "Funzione sconosciuta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:60
+msgid "Unexpected end of command in parenthesis"
+msgstr "Inattesa fine del comando tra parentesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:61
+msgid "Unexpected end of command in function parameters"
+msgstr "Inattesa fine del comando nei parametri della funzione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:62
+msgid "Missing variable name"
+msgstr "Nome della variabile mancante"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:63
+msgid "Variable or identifier expected"
+msgstr "Richiesta variabile o identificatore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:64
+msgid "Left operand is not a number"
+msgstr "L'operando di sinistra non è un numero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:65
+msgid "Multiple operations not supported for numeric operators"
+msgstr "Operazioni multiple non supportate per operatori numerici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:67
+msgid "Modulo by zero"
+msgstr "Modulo per zero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:68
+msgid "Right operand is not a number"
+msgstr "L'operando di destra non è un numero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:69
+msgid "Unterminated expression (missing ')' ?)"
+msgstr "Espressione non terminata (manca ')' ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:70
+msgid "Unterminated subexpression (Parenthesis mismatch)"
+msgstr "Subespressione non terminata (parentesi mancanti)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:71
+msgid "Unexpected character"
+msgstr "Carattere inatteso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:73
+msgid "No host to resolve"
+msgstr "Nessun Host da risolvere"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:74
+msgid "(DNS Internal) Unsupported address family"
+msgstr "(DNS Interno) Famiglia di indirizzi non supportata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:75
+msgid "Valid name but the host has no IP address"
+msgstr "Nome valido ma l'Host non ha un indirizzo IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:76
+msgid "Unrecoverable nameserver error (crashed ?)"
+msgstr "Errore irreversibile del Nameserver (crash?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:77
+msgid "Dns temporaneous fault (try again)"
+msgstr "Errore temporaneo del DNS (riprova)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:78
+msgid "(DNS Internal) Bad flags"
+msgstr "(DNS Interno) Flag errati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:79
+msgid "(DNS Internal) Out of memory"
+msgstr "(DNS Intero) Memoria esaurita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:80
+msgid "(DNS Internal) Service not supported"
+msgstr "(DNS Interno) Servizio non supportato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:81
+msgid "Unknown node (host not found)"
+msgstr "Nodo sconosciuto (Host non trovato)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:82
+msgid "(DNS Internal) Unsupported socket type"
+msgstr "(DNS Interno) Tipo di Socket non supportato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:83
+msgid "Dns query failed"
+msgstr "Query DNS fallita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:84
+msgid "This KVIrc executable has no IPV6 support"
+msgstr "Questo eseguibile di KVIrc non ha il supporto IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:85
+msgid "Host not found"
+msgstr "Host non trovato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:86
+msgid "(DNS Internal) IPC failure (slave data corrupted)"
+msgstr "(DNS Interno) Errore nell'IPC (dati slave corrotti)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:88
+msgid "Invalid IP address"
+msgstr "Indirizzo IP non valido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:90
+msgid "Failed to put the socket in non blocking mode"
+msgstr "Impossibile impostare il Socket in modalità non bloccante"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:91
+msgid "Bad file descriptor"
+msgstr "Descrittore del file errato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:92
+msgid "Out of address space"
+msgstr "Fuori dallo spazio degli indirizzi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:93
+msgid "Connection refused"
+msgstr "Connessione rifiutata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:94
+msgid "Kernel networking panic"
+msgstr "!!Kernel Networking Panic!!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:95
+msgid "Connection timed out"
+msgstr "Connessione scaduta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:96
+msgid "Network is unreachable"
+msgstr "Rete non raggiungibile"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:97
+msgid "Broken pipe"
+msgstr "Broken pipe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:98
+msgid "Invalid proxy address"
+msgstr "Indirizzo Proxy non valido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:100
+msgid "Invalid irc context id"
+msgstr "ID del Contesto IRC non valido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:101
+msgid "Error in loading module"
+msgstr "Errore nel caricare il modulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:102
+msgid "No such module command"
+msgstr "Nessun comando per il modulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:103
+msgid "No such module function"
+msgstr "Nessuna funzione per il modulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:104
+msgid "Left operand is not a dictionary reference"
+msgstr "L'operando sinistro non è un riferimento al dizionario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:105
+msgid "Right operand is not a dictionary reference"
+msgstr "L'operando destro non è un riferimento al dizionario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:106
+msgid "Missing object class name"
+msgstr "Nome dell'Oggetto nella classe mancante"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:107
+msgid "No such object class"
+msgstr "Nessuna classe di Oggetti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:108
+msgid "No such object"
+msgstr "Oggetto inesistente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:109
+msgid "No such object function"
+msgstr "Oggetto funzione inesistente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:110
+msgid "Invalid left operand"
+msgstr "Operando sinistro non valido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:111
+msgid "Not enough parameters"
+msgstr "Parametri non sufficienti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:112
+msgid "Integer parameter expected"
+msgstr "Richiesto un parametro di tipo intero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:113
+msgid "Invalid parameter"
+msgstr "Parametro non valido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:114
+msgid "No such file"
+msgstr "File inesistente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:115
+msgid "Open parenthesis expected"
+msgstr "Richieste parentesi aperte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:116
+msgid "Open brace expected"
+msgstr "Richieste parentesi graffe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:117
+msgid "Can't kill a builtin class"
+msgstr "Impossibile terminare una classe interna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:118
+msgid "The SOCKSV4 protocol lacks IpV6 support"
+msgstr "Il protocollo SOCKSV4 non ha il supporto per il protocollo IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:119
+msgid "Unrecognized proxy reply"
+msgstr "Risposta del Proxy sconosciuta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:120
+msgid "Proxy response: auth failed: access denied"
+msgstr "Risposta del Proxy: autenticazione fallita - accesso negato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:121
+msgid "Proxy response: No acceptable auth method: request rejected"
+msgstr ""
+"Risposta del Proxy: metodo di autenticazione non accettato - richiesta "
+"rifiutata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:122
+msgid "Proxy response: request failed"
+msgstr "Risposta del Proxy: richiesta fallita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:123
+msgid "Proxy response: ident failed"
+msgstr "Risposta del Proxy: identificazione fallita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:124
+msgid "Proxy response: ident not matching"
+msgstr "Risposta del Proxy: identificazione non corrispondente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:125
+msgid "Proxy response: general SOCKS failure"
+msgstr "Risposta del Proxy: fallimento generale del SOCKS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:126
+msgid "Proxy response: connection not allowed"
+msgstr "Risposta del Proxy: connessione non permessa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:127
+msgid "Proxy response: network unreachable"
+msgstr "Risposta del Proxy: network irraggiungibile"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:128
+msgid "Proxy response: host unreachable"
+msgstr "Risposta del Proxy: Host irraggiungibile"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:129
+msgid "Proxy response: connection refused"
+msgstr "Risposta del Proxy: connessione rifiutata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:130
+msgid "Proxy response: TTL expired"
+msgstr "Risposta del Proxy: TTL scaduto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:131
+msgid "Proxy response: command not supported"
+msgstr "Risposta del Proxy: comando non supportato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:132
+msgid "Proxy response: address type not supported"
+msgstr "Risposta del Proxy: tipo di indirizzo non supportato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:133
+msgid "Proxy response: invalid address"
+msgstr "Risposta del Proxy: indirizzo non valido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:134
+msgid "Invalid port number"
+msgstr "Numero della porta non valido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:135
+msgid "Socket not connected"
+msgstr "Socket non connesso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:136
+msgid "Insufficient resources to complete the operation"
+msgstr "Risorse insufficienti per completare l'operazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:137
+msgid "Can't setup a listening socket : bind failed"
+msgstr "Impossibile impostare un Socket in ascolto: bind fallito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:138
+msgid "Can't resolve the localhost name"
+msgstr "Impossibile risolvere il nome del localhost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:139
+msgid "Unsupported image format"
+msgstr "Formato dell'immagine non supportato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:140
+msgid "Can't open file for appending"
+msgstr "Impossibile aprire il file per aggiungere dati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:542
+msgid "Can't open file for writing"
+msgstr "Impossibile scrivere sul file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:142
+msgid "File I/O error"
+msgstr "Errore nell'I/O del file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:143
+msgid "Acknowledge error"
+msgstr "Errore nel riconoscimento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:982
+msgid "Can't open file for reading"
+msgstr "Impossibile leggere il file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:145
+msgid "Can't send a zero-size file"
+msgstr "Impossibile mandare un file di dimensione nulla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:146
+msgid "Missing popup name"
+msgstr "Nome del popup mancante"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:147
+msgid "'item', 'popup', 'label' or 'separator' keyword expected"
+msgstr "Richiesta parola chiave 'item', 'popup', 'label' o 'separator'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:148
+msgid "Self modification not allowed"
+msgstr "Automodifica non permessa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:149
+msgid "UNUSED"
+msgstr "NON USATO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:150
+msgid "Feature not available"
+msgstr "Caratteristica non disponibile"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:151
+msgid "Unexpected characters in array index"
+msgstr "Carattere inatteso nell'indice dell'Array"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:152
+msgid "Unexpected end in expression"
+msgstr "Inattesa fine nell'espressione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:153
+msgid "Unexpected end in array index"
+msgstr "Inattesa fine nell'indice dell'Array"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:154
+msgid "Connection thru HTTP proxy failed"
+msgstr "Connessione attraverso HTTP Proxy fallita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:155
+msgid "Case , match , regexp , default or break keyword expected"
+msgstr "Richiesta parola chiave 'case', 'match', 'regexp', 'default' o 'break'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:156
+msgid "Access denied"
+msgstr "Accesso vietato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:157
+msgid "Address already in use"
+msgstr "Indirizzo già in uso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:158
+msgid "Can't assign the requested address"
+msgstr "Impossibile assegnare l'indirizzo richiesto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:159
+msgid "Connection reset by peer"
+msgstr "Connessione resettata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:160
+msgid "Host unreachable (no route to host)"
+msgstr "Host irraggiungibile (no route to host)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:161
+msgid "Variable expected"
+msgstr "Attesa variabile"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:162
+msgid "Invalid array index: positive integer expected"
+msgstr "Indice dell'Array non valido: atteso un intero positivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:163
+msgid "listen() call failed"
+msgstr "chiamata listen() fallita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:164
+msgid "This executable has been compiled without SSL support"
+msgstr "Questo eseguibile è stato compilato senza supporto SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:165
+msgid "Secure Socket Layer error"
+msgstr "Errore Secure Socket Layer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:166
+msgid "Slash (/) character expected"
+msgstr "Atteso carattere barra (/)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:167
+msgid "Unknown string manipulation operation"
+msgstr "Operazione di manipolazione stringhe sconosciuta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:168
+msgid "Operation aborted"
+msgstr "Operazione annullata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:169
+msgid "Unexpected token"
+msgstr "Carattere inatteso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:170
+msgid "Scope object already defined (unexpected @)"
+msgstr "Blocco dell'Oggetto già definito (@ inaspettato)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:171
+msgid "There is no $this pointer in this scope (unexpected @)"
+msgstr "Non esiste il puntatore $this in questo blocco (@ inaspettato)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:140
+msgid "Operation cancelled"
+msgstr "Operazione annullata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:170
+msgid "File write error"
+msgstr "Errore nella scrittura del file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:176
+msgid "File read error"
+msgstr "Errore nella lettura del file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:324
+msgid "Packaging file %Q"
+msgstr "Impacchettamento file %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:779
+msgid "Failed to open a source file for reading"
+msgstr "Impossibile aprire il file in lettura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:817
+msgid "Compression library initialization error"
+msgstr "Errore nell'inizializzazione della libreria di compressione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:394
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:828
+msgid "Compression library error"
+msgstr "Errore nella libreria di compressione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:465
+msgid "Compression library internal error"
+msgstr "Errore interno nella libreria di compressione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:485
+msgid "Error while compressing a file stream"
+msgstr "Errore durante la compressione dello stream"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:526
+msgid "Creating package..."
+msgstr "Creazione pacchetto..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:527
+msgid "Writing package header"
+msgstr "Scrittura header pacchetto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:571
+msgid "Writing informational fields"
+msgstr "Scrittura informazioni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:597
+msgid "Writing package data"
+msgstr "Scrittura dati pacchetto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:659
+msgid "The file specified is not a valid KVIrc package"
+msgstr "Il file specificato non è un pacchetto KVIrc valido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:668
+msgid ""
+"The package has an invalid version number, it might have been created by a "
+"newer KVIrc"
+msgstr ""
+"Il pacchetto ha un numero di versione invalido, potrebbe essere creato da "
+"una KVIrc più recente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:714
+msgid "Invalid info field: the package is probably corrupt"
+msgstr "Campo invalido: il pacchetto è probabilmente corrotto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:745
+msgid ""
+"The package contains compressed data but this executable does not support "
+"compression"
+msgstr ""
+"Il pacchetto contiene dati compressi ma l'eseguibile non supporta la "
+"compressione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:771
+msgid "Failed to create the target directory"
+msgstr "Impossibile creare la directory di destinazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:784
+msgid "Unpacking file %Q"
+msgstr "Spacchettamento file %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:916
+msgid "Error in compressed file stream"
+msgstr "Errore nello stream compresso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:990
+msgid "Reading package..."
+msgstr "Lettura pacchetto..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:991
+msgid "Reading package header"
+msgstr "Lettura header pacchetto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:998
+msgid "Reading package data"
+msgstr "Lettura dati pacchetto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:1017
+msgid "Invalid data field: the package is probably corrupt"
+msgstr "Campo dati invalido: il pacchetto è probabilmente corrotto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1127
+msgid "Select color"
+msgstr "Selezione colore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1128
+msgid "&Basic colors"
+msgstr "Colori di &base"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1129
+msgid "&Custom colors"
+msgstr "&Colori personalizzati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1130
+msgid "&Red"
+msgstr "&Rosso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1131
+msgid "&Green"
+msgstr "&Verde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1132
+msgid "Bl&ue"
+msgstr "Bl&ue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1133
+msgid "&Define Custom Colors >>"
+msgstr "&Definisci Colori personalizzati >>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1134
+msgid "&Add to Custom Colors"
+msgstr "&Aggiungi ai Colori predefiniti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1136
+msgid "Select Font"
+msgstr "Selezione carattere"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1137
+msgid "&Font"
+msgstr "&Carattere"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1138
+msgid "Font st&yle"
+msgstr "Stile carattere"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1139
+msgid "&Size"
+msgstr "Dimen&sione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1140
+msgid "Sample"
+msgstr "File campione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1141
+msgid "Effects"
+msgstr "Effetti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1142
+msgid "Stri&keout"
+msgstr "Barrato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1143
+msgid "&Underline"
+msgstr "Sottolinea"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1144
+msgid "Scr&ipt"
+msgstr "Scr&ipt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1146
+msgid "Parent Directory"
+msgstr "Directory principale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1148
+msgid "Forward"
+msgstr "Successiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1149
+msgid "Reload"
+msgstr "Ricarica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1150
+msgid "New Directory"
+msgstr "Nuova Directory"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1151
+msgid "Bookmarks"
+msgstr "Segnalibri"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1152
+msgid "Add Bookmark"
+msgstr "&Aggiungi segnalibro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1153
+msgid "&Edit Bookmarks"
+msgstr "Modifica segnalibri"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1154
+msgid "New Bookmark Folder..."
+msgstr "Nuova cartella segnalibri"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1156
+msgid "Sorting"
+msgstr "Ordinamento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1157
+msgid "By Name"
+msgstr "Per nome"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1158
+msgid "By Date"
+msgstr "Per data"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1159
+msgid "By Size"
+msgstr "Per dimensione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1160
+msgid "Reverse"
+msgstr "Inverso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1161
+msgid "Directories First"
+msgstr "Prima le directory"
+
+# Nate: traducibile? =)
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1162
+msgid "Case Insensitive"
+msgstr "Case Insensitive"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1163
+msgid "Short View"
+msgstr "Vista in breve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1164
+msgid "Detailed View"
+msgstr "Vista dettagliata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1165
+msgid "Show Hidden Files"
+msgstr "Mostra file nascosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1166
+msgid "Show Quick Access Navigation Panel"
+msgstr "Mostra il Pannello di Navigazione accesso rapido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1167
+msgid "Show Preview"
+msgstr "Mostra anteprima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1168
+msgid "Separate Directories"
+msgstr "Directory separate"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1169
+msgid "Often used directories"
+msgstr "Directory recenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1170
+msgid "Desktop"
+msgstr "Desktop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1171
+msgid "Home Directory"
+msgstr "Directory principale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1172
+msgid "Floppy"
+msgstr "Floppy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1173
+msgid "Temporary Files"
+msgstr "File temporanei"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1174
+msgid "Network"
+msgstr "Network"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1175
+msgid "New Directory..."
+msgstr "Nuova directory..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1176
+msgid "Delete"
+msgstr "Cancella"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1177
+msgid "Thumbnail Previews"
+msgstr "Anteprime in miniatura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1178
+msgid "Large Icons"
+msgstr "Icone grandi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1179
+msgid "Small Icons"
+msgstr "Icone piccole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1180
+msgid "Properties..."
+msgstr "Proprietà..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1181
+msgid "&Automatic Preview"
+msgstr "&Anteprima automatica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1182
+msgid "&Preview"
+msgstr "Ante&prima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1183
+msgid "&Location:"
+msgstr "&Locazione:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1184
+msgid "&Filter:"
+msgstr "&Filtro:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1185
+msgid "All Files"
+msgstr "Tutti i file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:104
+msgid "- d -- h -- m -- s"
+msgstr "- g -- o -- m -- s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:111
+#, c-format
+msgid "%u h %u m %u s"
+msgstr "%u h %u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:113
+#, c-format
+msgid "%u h %u%u m %u%u s"
+msgstr "%u h %u%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:118
+#, c-format
+msgid "%u m %u s"
+msgstr "%u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:120
+#, c-format
+msgid "%u m %u%u s"
+msgstr "%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:122
+#, c-format
+msgid "%u s"
+msgstr "%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:127
+#, c-format
+msgid "%u d %u h %u m %u s"
+msgstr "%u d %u h %u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:129
+#, c-format
+msgid "%u d %u%u h %u%u m %u%u s"
+msgstr "%u d %u%u h %u%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+msgid "Usage"
+msgstr "Utilizzo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+msgid "message"
+msgstr "messaggio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:99
+msgid "-m: send a message instead of a notice"
+msgstr "-m: invia un messaggio invece di un notice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:100
+msgid "-w: send notice to all channel owners"
+msgstr "-w: invia Notice a tutti gli Owner del Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:101
+msgid "-a: send notice to all channel admins"
+msgstr "-a: invia notice a tutti gli Amministratori del Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:102
+msgid "-o: send notice to all channel ops"
+msgstr "-o: invia Notice a tutti gli Operatori del Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:103
+msgid "-h: send notice to all channel halfops"
+msgstr "-h: invia Notice a tutti gli utenti HalfOp del Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:104
+msgid "-v: send notice to all channel voices"
+msgstr "-v: invia Notice a tutti gli utenti Voice del Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:105
+msgid "-q: quiet mode"
+msgstr "-q: modalità silenziosa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:138
+msgid "Sending wallop to"
+msgstr "Invio Wallop to"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:314
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:410
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:493
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:535
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:593
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:653
+msgid "Usage:"
+msgstr "Utilizzo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:223
+msgid "reason"
+msgstr "motivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:272
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:416
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:440
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:599
+msgid "This is not a channel window"
+msgstr "Questa non è una finestra di Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:581
+msgid "Unsupported type: $0"
+msgstr "Tipologia non supportata: $0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:604
+msgid "Channel Owner"
+msgstr "Owner del Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:606
+msgid "Channel Administrator"
+msgstr "Amministratore del Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:608
+msgid "Channel Operator"
+msgstr "Operatore del Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:610
+msgid "Half Operator"
+msgstr "Half Operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:612
+msgid "Voice"
+msgstr "Voce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:614
+msgid "User Operator"
+msgstr "Utente Operatore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:616
+msgid "Normal User"
+msgstr "Utente Normale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:641
+msgid "You must use DNS in an IRC context"
+msgstr "Devi usare DNS in un Contesto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:647
+msgid "You must be connected to a server"
+msgstr "Devi essere connesso ad un Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:664
+msgid "No such user: $0"
+msgstr "Utente inesistente: $0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:33
+msgid "The default script has been successfully installed."
+msgstr "Lo Script predefinito è stato installato con successo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:34
+msgid "To connect to a server, type /server <server name>"
+msgstr "Per connetterti ad un Server digita: /server <nome_del_server>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:36
+msgid "Happy ircing :)"
+msgstr "Buona chattata :)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:15
+msgid "Options"
+msgstr "Opzioni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:40
+msgid "Window operations"
+msgstr "Sal&va le Proprietà della Finestra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMENAME@"
+msgstr "@THEMENAME@"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMEDESCRIPTION@"
+msgstr "@THEMEDESCRIPTION@"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:18
+msgid "Stop Highlighting (Local)"
+msgstr "Ferma Segnalazione (Locale)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:23
+msgid "Start Highlighting (Local)"
+msgstr "Avvia la segnalazione (locale)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:28
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:61
+msgid "Always Highlight"
+msgstr "Segnala sempre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:30
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:55
+msgid "Highlight as"
+msgstr "Evidenzia come"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:66
+msgid "Stop Highlighting"
+msgstr "Ferma la segnalazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:82
+msgid "is being ignored"
+msgstr "viene ignorato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:87
+msgid "is not being ignored"
+msgstr "non è ignorato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:93
+msgid "Enable Ignore"
+msgstr "Attiva Ignore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:98
+msgid "Ignore as..."
+msgstr "Ignora come..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:240
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:282
+msgid "Ignore as"
+msgstr "Ignora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:290
+msgid "Unignore"
+msgstr "Togli Ignore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:308
+msgid "is registered as"
+msgstr "è registrato come"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:311
+msgid "is in the notify list"
+msgstr "è nella Lista di Notifica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:314
+msgid "has a default avatar"
+msgstr "ha un Avatar predefinito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:317
+msgid "is not registered"
+msgstr "non è registrato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:323
+msgid "Register"
+msgstr "Registrato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:328
+msgid "Quick Registration"
+msgstr "Registrazione veloce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:330
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:355
+msgid "Register as"
+msgstr "Registrato come"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:361
+msgid "Edit Registration"
+msgstr "Imposta la registrazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:366
+msgid "Unregister"
+msgstr "Non registrato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:373
+msgid "Add to Notify"
+msgstr "Aggiungy alla Lista di Notifica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:378
+msgid "Remove from Notify"
+msgstr "Rimuovi dalla Lista di Notifica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:385
+msgid "Choose"
+msgstr "Scegli"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:387
+msgid "Choose Avatar Image File"
+msgstr "Scegli un'immagine per il tuo Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:396
+msgid "Set as Default"
+msgstr "Impostato come predefinito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:401
+msgid "Clear Default"
+msgstr "Elimina il predefinito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:412
+msgid "Copy To Clipboard"
+msgstr "Copia negli appunti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:433
+msgid "Ban"
+msgstr "Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1037
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1084
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1224
+msgid "Multiple Users"
+msgstr "Molteplici utenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:577
+msgid "&Ban"
+msgstr "&Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1089
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1229
+msgid "idle time"
+msgstr "tempo di inattività"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:758
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1236
+msgid "&Information"
+msgstr "Informazioni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1115
+msgid "DNS for"
+msgstr "DNS per"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:499
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1120
+msgid "Mask for"
+msgstr "Maschera per"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:505
+msgid "&Control"
+msgstr "&Controllo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:509
+msgid "O&wner"
+msgstr "O&wner"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:514
+msgid "&Deowner"
+msgstr "&Togliere lo stato di Owner"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:519
+msgid "&Administrator"
+msgstr "&Amministratore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:524
+msgid "&Deadministrator"
+msgstr "&Togliere lo stato di Amministratore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:529
+msgid "&Op"
+msgstr "&Op"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:534
+msgid "&Deop"
+msgstr "&Deop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:539
+msgid "&Halfop"
+msgstr "&HalfOp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:544
+msgid "&Dehalfop"
+msgstr "Togliere il modo HalfOp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:549
+msgid "&Voice"
+msgstr "&Voice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:554
+msgid "D&evoice"
+msgstr "Togliere il modo Voice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:561
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "&Kick"
+msgstr "Azione Kick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+msgid "K&ick"
+msgstr "Azione K&ick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "With..."
+msgstr "con..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Kick Reason"
+msgstr "Motivo del kick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Enter a kick reason"
+msgstr "Inserisci una motivazione per il Kick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "Kick/Ban"
+msgstr "Azione Kick/Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Kick/Ban Reason"
+msgstr "Motivo del Kick/Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Enter a kick/ban reason"
+msgstr "Inserisci una motivazione per il Kick/Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "&Kick/Ban"
+msgstr "&Kick/Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:604
+msgid "Configure ban mask..."
+msgstr "Configura Maschera di Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:612
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1263
+msgid "&Query"
+msgstr "&Query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:625
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1136
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1276
+msgid "&Registration"
+msgstr "Registrazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1278
+msgid "&Highlight"
+msgstr "Evidenzia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:629
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1280
+msgid "Ig&nore"
+msgstr "Ig&norato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:726
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1050
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1138
+msgid "Notify Avatar"
+msgstr "Notifica Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:705
+msgid "&Part"
+msgstr "Esci da"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:664
+msgid "Copy Channel Address"
+msgstr "Copia l'indirizzo del canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:749
+msgid "Channels"
+msgstr "Canali"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:693
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:753
+msgid "&Join Channels..."
+msgstr "Entra nei Canali..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:700
+msgid "&Hop"
+msgstr "Hop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:733
+msgid "Copy Channel URL to Clipboard"
+msgstr "Copia l'indirizzo negli appunti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:782
+msgid "l (Connections)"
+msgstr "l (Connessioni)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:787
+msgid "m (Command Usage)"
+msgstr "m (Uso Comandi)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:792
+msgid "o (Operators)"
+msgstr "o (Operatori)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:797
+msgid "t (Connection stats ?)"
+msgstr "t (Stato della connessione?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:802
+msgid "u (Uptime)"
+msgstr "u (Uptime)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:807
+msgid "y (y-Lines)"
+msgstr "y (y-Lines)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:812
+msgid "z (Debug Stats?)"
+msgstr "z (Statistiche di Debug?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:909
+msgid "Chat with"
+msgstr "Chat con"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:914
+msgid "Reverse Chat with"
+msgstr "Chat in Reverse a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:919
+msgid "Secure Chat with"
+msgstr "Chat Protetta con"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:926
+msgid "Send to"
+msgstr "Invia a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:931
+msgid "Secure send to"
+msgstr "Invio Protetto a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:936
+msgid "Reverse Send to"
+msgstr "Invio in Reverse a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:941
+msgid "Secure Reverse Send to"
+msgstr "Invio Protetto in Reverse a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:948
+msgid "TDCC Send to"
+msgstr "Invio TDCC a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:953
+msgid "TDCC Reverse Send to"
+msgstr "Invio TDCC Reverse a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:960
+msgid "Voice Chat"
+msgstr "Chat Vocale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1134
+msgid "&Ignore"
+msgstr "&Ignora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1165
+msgid "Logging to"
+msgstr "Logging su"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1167
+msgid "Flush Log File"
+msgstr "Svuota file di Log"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1174
+msgid "Stop Logging"
+msgstr "Ferma logging"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1179
+msgid "Not Logging"
+msgstr "Non loggato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+msgid "Log To Default File"
+msgstr "Log su file predefinito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+msgid "Include Existing Buffer"
+msgstr "Incluso il Buffer esistente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+msgid "Log To..."
+msgstr "Log su..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1201
+msgid "Choose Log Filename"
+msgstr "Scegli il nome del file di log"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1282
+msgid "Notify avatar"
+msgstr "Notifica Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:50
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$copyfiles must be a "
+"source directory"
+msgstr ""
+"[Installer] Il primo argomento di \\%installer->\\$copyfiles deve essere una "
+"directory sorgente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:56
+#, c-format
+msgid ""
+"[Installer] The second argument to \\%installer->\\$copyfiles must be a file "
+"name or file regexp"
+msgstr ""
+"[Installer] Il secondo argomento di \\%installer->\\$copyfiles deve essere "
+"un nome o un'espressione regolare"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:62
+#, c-format
+msgid ""
+"[Installer] The third argument to \\%installer->\\$copyfiles must be a "
+"destination directory"
+msgstr ""
+"[Installer] Il terzo argomento di \\%installer->\\$copyfiles deve essere una "
+"directory di destinazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:94
+msgid "[Installer] Failed to create directory"
+msgstr "[Installer] Creazione directory fallita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:104
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$includefiles must be a "
+"source directory"
+msgstr ""
+"[Installer] Il primo argomento di \\%installer->\\$includefiles deve essere "
+"una directory sorgente"
+
diff --git a/po/kvirc/kvirc_nl.po b/po/kvirc/kvirc_nl.po
new file mode 100644
index 00000000..88b600ed
--- /dev/null
+++ b/po/kvirc/kvirc_nl.po
@@ -0,0 +1,19199 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: kvirc 3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2002-08-09 21:21+0200\n"
+"Last-Translator: Balboy <[email protected]>\n"
+"Language-Team: Nederlands <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 0.9.6\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:696
+#, fuzzy
+msgid "&Cascade Windows"
+msgstr "Trapgewijs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:697
+#, fuzzy
+msgid "Cascade &Maximized"
+msgstr "Ge&maximaliseerde vensters trapsgewijs schikken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:700
+#, fuzzy
+msgid "&Tile Windows"
+msgstr "&Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:703
+#, fuzzy
+msgid "&Auto Tile"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:708
+#, fuzzy
+msgid "Anodine's Full Grid"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:710
+#, fuzzy
+msgid "Pragma's Horizontal 4-Grid"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:712
+#, fuzzy
+msgid "Pragma's Vertical 4-Grid"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:714
+#, fuzzy
+msgid "Pragma's Horizontal 6-Grid"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:716
+#, fuzzy
+msgid "Pragma's Vertical 6-Grid"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:718
+#, fuzzy
+msgid "Pragma's Horizontal 9-Grid"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:720
+#, fuzzy
+msgid "Pragma's Vertical 9-Grid"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:726
+msgid "Tile Met&hod"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:729
+#, fuzzy
+msgid "Expand &Vertically"
+msgstr "&Verticaal verlengen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:730
+#, fuzzy
+msgid "Expand &Horizontally"
+msgstr "&Horizontaal verbreden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:733
+#, fuzzy
+msgid "Mi&nimize All"
+msgstr "M&inimaliseren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_actiondrawer.cpp:64
+#, fuzzy
+msgid "Script"
+msgstr "Beschrijving"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:581
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:634
+msgid "Unknown"
+msgstr "Onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:128
+#, fuzzy
+msgid "No topic message has been received from the server yet"
+msgstr "Nee de."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:495
+#, fuzzy
+msgid "Channel topic:"
+msgstr "is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:513
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:201
+msgid "Set by"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:519
+#, fuzzy
+msgid "Set on"
+msgstr "(Geen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:525
+#, fuzzy
+msgid "Double-click to edit..."
+msgstr "<br> naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:530
+#, fuzzy
+msgid "No topic is set"
+msgstr "Nee is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:533
+#, fuzzy
+msgid "Double-click to set..."
+msgstr "naar<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:587
+#, fuzzy
+msgid "History"
+msgstr "Map"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:596
+#, fuzzy
+msgid "Commit Changes"
+msgstr "Vastleggen (Commit)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:602
+#, fuzzy
+msgid "Discard Changes"
+msgstr "Negeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:627
+msgid "Copy to clipboard"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:988
+#, fuzzy
+msgid "There are active connections, are you sure you wish to "
+msgstr "nee actief"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:989
+#, fuzzy
+msgid "quit KVIrc?"
+msgstr "Afsluiten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:587
+#, fuzzy
+msgid "Confirmation - KVIrc"
+msgstr "&Opties"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:557
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:590
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+#, fuzzy
+msgid "&Yes"
+msgstr "ja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:556
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:589
+#, fuzzy
+msgid "&Always"
+msgstr "Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:591
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+#, fuzzy
+msgid "&No"
+msgstr "&Ga naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1090
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1106
+#, fuzzy
+msgid "Show %1"
+msgstr "Naa&r voorgrond de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1134
+msgid "Customize..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:149
+#, fuzzy, c-format
+msgid "The file %s already exists.<br>Do you wish to overwrite it?"
+msgstr ""
+"file s\n"
+" Overschrijven it?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:150
+#, fuzzy
+msgid "File Exists - KVIrc"
+msgstr "Bestand bestaat reeds"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:132
+msgid "Channel mode"
+msgstr "Kanaal mode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:162
+#, fuzzy
+msgid "Split View"
+msgstr "samenvoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:207
+#, fuzzy
+msgid "User List"
+msgstr "Gebruikers lijst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:167
+#, fuzzy
+msgid "Ban Editor"
+msgstr "Tekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:172
+#, fuzzy
+msgid "Ban Exception Editor"
+msgstr "Omschakelen ban exceptie editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:179
+#, fuzzy
+msgid "Invite Exception Editor"
+msgstr "Omschakelen invite exceptie editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:184
+#, fuzzy
+msgid "Mode Editor"
+msgstr "Omschakelen mode editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+#, fuzzy
+msgid "said something recently"
+msgstr "Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "is talking"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:684
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:699
+msgid "and"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "were talking recently"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "are talking"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:707
+#, fuzzy
+msgid "and other %1 users"
+msgstr "Zoeken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:738
+#, fuzzy
+msgid "Dead channel"
+msgstr "Negeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:753
+#, fuzzy
+msgid "operator"
+msgstr "Scheider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:754
+#, fuzzy
+msgid "operators"
+msgstr "Scheider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+#, fuzzy
+msgid "active user"
+msgstr "Actief"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+#, fuzzy
+msgid "active users"
+msgstr "Zoeken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+#, fuzzy
+msgid "channel owner"
+msgstr "onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+#, fuzzy
+msgid "channel owners"
+msgstr "Kanaal mode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+#, fuzzy
+msgid "channel administrator"
+msgstr "notificatie:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+#, fuzzy
+msgid "channel administrators"
+msgstr "notificatie:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+#, fuzzy
+msgid "user-operator"
+msgstr "Scheider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+#, fuzzy
+msgid "user-operators"
+msgstr "Scheider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "user total"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "users total"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:931
+msgid "No activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:932
+msgid "Minimal activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:933
+msgid "Very low activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Might be low activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Low activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Might be medium activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Medium activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "Might be high activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "High activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Might be very high activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Very high activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+#, fuzzy
+msgid "Might be flooded with messages"
+msgstr "Faalde naar de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+#, fuzzy
+msgid "Flooded with messages"
+msgstr "Faalde naar de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:946
+msgid "human"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:966
+#, fuzzy
+msgid "[Dead channel]"
+msgstr "Negeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1020
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1122
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:459
+#, fuzzy
+msgid " on "
+msgstr "aan<b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1086
+#, fuzzy
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %Q, no "
+"data sent to the server"
+msgstr ""
+"De cryptie motor wat niet in staat om de huidige boodschap (%Q) te "
+"encrypteren: %s: geen data verstuurd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1403
+#, fuzzy
+msgid "Sent part request, waiting for reply..."
+msgstr "Verzonden voor."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:610
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:647
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:293
+#, fuzzy
+msgid "(Unknown)"
+msgstr "Onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1484
+#, fuzzy
+msgid "<b>Channel mode:</b>"
+msgstr "<b>Kanaal mode</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1498
+#, fuzzy, c-format
+msgid "<br><b>Key:</b> %s"
+msgstr "<br>sleutel: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1505
+#, fuzzy, c-format
+msgid "<br><b>Limit:</b> %s"
+msgstr "<br>limiet: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1590
+#, c-format
+msgid "Channel synchronized in %d.%d seconds"
+msgstr "Kanaal gesyncroniseerd in %d.%d seconden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:139
+#, fuzzy
+msgid "Choose an Image File - KVIrc"
+msgstr "file."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:284
+#, fuzzy, c-format
+msgid "Unloadable: %s"
+msgstr "module s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:260
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:90
+#, fuzzy
+msgid "&Browse..."
+msgstr "Bladeren..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:364
+#, fuzzy
+msgid "Choose a File - KVIrc"
+msgstr "file naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:382
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:593
+#, fuzzy
+msgid "Choose a Directory - KVIrc"
+msgstr "map."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:764
+#, fuzzy
+msgid "A&dd"
+msgstr "Toevoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:407
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:766
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:230
+#, fuzzy
+msgid "Re&move"
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:602
+msgid "Sample Text"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:635
+#, fuzzy
+msgid "Foreground"
+msgstr "Voorgrondkleur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:639
+#, fuzzy
+msgid "Transparent"
+msgstr "Transfer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:652
+#, fuzzy
+msgid "Background"
+msgstr "Achtergrondkleur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:715
+msgid "Play"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:748
+#, fuzzy
+msgid "Channel name"
+msgstr "Kanaal mode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:749
+#, fuzzy
+msgid "Channel password"
+msgstr "Scheider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:177
+#, fuzzy
+msgid "Toolbars"
+msgstr "H&ulpmiddelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:84
+#, fuzzy
+msgid "Orientation"
+msgstr "notificatie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:86
+msgid "Top"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:87
+msgid "Left"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:88
+msgid "Right"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:89
+msgid "Bottom"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:91
+#, fuzzy
+msgid "Detached"
+msgstr "Negeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:92
+#, fuzzy
+msgid "Flat"
+msgstr "Filter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:94
+#, fuzzy
+msgid "Icon Size"
+msgstr "P&ictogram"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:96
+msgid "Small (22x22)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:97
+msgid "Large (32x32)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1333
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:463
+msgid "&Apply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:830
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:113
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:251
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:319
+#, fuzzy
+msgid "Close"
+msgstr "Sluiten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:102
+#, fuzzy
+msgid "Channel Modes"
+msgstr "Kanaal mode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_debugwindow.cpp:47
+#, fuzzy
+msgid "Debug Messages"
+msgstr "nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:72
+#, fuzzy
+msgid "CTCP Page - KVIrc"
+msgstr "file naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:109
+msgid "You have been paged by"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:75
+#, fuzzy
+msgid "Mask editor - KVirc"
+msgstr "Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:79
+msgid "New mask must match an *!*@* expression"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+#, fuzzy
+msgid "Ok"
+msgstr "Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:488
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:442
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:401
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+#, fuzzy
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:157
+#, fuzzy
+msgid "Active Bans"
+msgstr "Actief"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:161
+#, fuzzy
+msgid "Active Invite Exceptions"
+msgstr "Actief"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:165
+#, fuzzy
+msgid "Active Ban Exceptions"
+msgstr "Actief"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:184
+#, fuzzy
+msgid "Filter:"
+msgstr "Filter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:188
+#, fuzzy
+msgid "Use doubleclick to edit item"
+msgstr "<br> naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:200
+msgid "Mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:202
+msgid "Set at"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+#, fuzzy
+msgid "Add"
+msgstr "Toevoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:92
+#, fuzzy
+msgid "Cryptography/text transformation"
+msgstr "tekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:99
+#, fuzzy
+msgid "Use the crypt engine"
+msgstr "Gebruik de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:120
+#, fuzzy
+msgid "Enable encryption"
+msgstr "Activeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:123
+#, fuzzy
+msgid "Encrypt key:"
+msgstr "Versleutelen:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:141
+#, fuzzy
+msgid "Hex"
+msgstr "Hexidecimaal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:132
+#, fuzzy
+msgid "Enable decryption"
+msgstr "Activeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:135
+msgid "Decrypt key:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_htmldialog.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:175
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:932
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1124
+#, fuzzy
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:211
+msgid ""
+"If you dont want to encrypt a particular text line then just start it with "
+"the CTRL+P prefix"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:263
+#, fuzzy
+msgid "Sorry, no crypt engines available"
+msgstr "Helaas nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:283
+msgid "Crypt: Can't create an engine instance: crypting disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:294
+#, fuzzy, c-format
+msgid "Crypt: Can't initialize the engine :%s"
+msgstr "de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:302
+#, fuzzy
+msgid ""
+"Crypt: You have to enable encryption and/or decryption for the engine to work"
+msgstr "U naar encryptie en of voor de naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:385
+#, fuzzy
+msgid "Search tools"
+msgstr "Zoeken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:539
+#, fuzzy, c-format
+msgid "### Log session terminated at %s ###"
+msgstr "Log sessie s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:713
+#, fuzzy, c-format
+msgid "### Log session started at %s ###"
+msgstr "Log sessie s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:717
+#, fuzzy
+msgid "### Existing data buffer:"
+msgstr "buffer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:721
+#, fuzzy
+msgid "### End of existing data buffer."
+msgstr "End buffer."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3894
+#, fuzzy
+msgid "Hide Find Window"
+msgstr "&Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3896
+#, fuzzy
+msgid "Show Find Window"
+msgstr "&Venster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3898
+msgid "Zoom In"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3899
+msgid "Zoom Out"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3900
+#, fuzzy
+msgid "Choose Temporary Font..."
+msgstr "file."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3901
+#, fuzzy
+msgid "Choose Temporary Background..."
+msgstr "file."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3902
+#, fuzzy
+msgid "Reset Temporary Background"
+msgstr "file."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3905
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:738
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:841
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1057
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1289
+msgid "Clear Buffer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3939
+#, fuzzy
+msgid "Choose the background image..."
+msgstr "Achtergrondafbeelding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+#, fuzzy
+msgid "Invalid image"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+#, fuzzy
+msgid "Failed to load the selected image"
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4083
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4140
+#, c-format
+msgid "Pos %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4156
+#, fuzzy
+msgid "Not found"
+msgstr "Bestand Niet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4563
+#, fuzzy
+msgid "Looking up host %Q..."
+msgstr "s."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4926
+#, fuzzy
+msgid "Double-click to open this link"
+msgstr "naar<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4946
+#, fuzzy
+msgid "Unable to look it up hostname: Hostname appears to be masked"
+msgstr "naar de de DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4947
+#, fuzzy
+msgid "Unable to look it up hostname: Unknown host"
+msgstr "naar de proxy de DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4949
+#, fuzzy
+msgid ""
+"Double-click to look up this hostname<br>Right-click to view other options"
+msgstr "naar<br> Rechts naar overig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4972
+msgid "Server appears to be a network hub<br>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4973
+#, fuzzy
+msgid "Unknown server<br>"
+msgstr "Onbekende fout"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4976
+#, fuzzy
+msgid "Double-click to read the MOTD<br>Right-click to view other options"
+msgstr "naar de<br> Rechts naar overig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4989
+#, fuzzy
+msgid "Double-click to set<br>"
+msgstr "naar<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5011
+#, fuzzy
+msgid "You're not an operator: You may not change channel modes"
+msgstr "U"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5028
+#, fuzzy
+msgid "Nothing known about %Q"
+msgstr "Niets"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5029
+#, fuzzy
+msgid "Nothing known about %Q (no connection)"
+msgstr "Niets"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5054
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>): "
+"<br><nowrap>+%Q (%u users)<hr>%Q</nowrap>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5060
+#, fuzzy
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)<hr>Double-"
+"click to join %Q<br>Right click to view other options"
+msgstr "naar samenvoegen s<br> Rechts naar overig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5080
+#, fuzzy
+msgid "<b>Double-click:</b><br>%Q"
+msgstr "<b> Midden</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5085
+#, fuzzy
+msgid "<b>Middle-click:</b><br>%Q"
+msgstr "<b> Midden</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5090
+#, fuzzy
+msgid "<b>Right-click:</b><br>%Q"
+msgstr "<b> Rechts</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1284
+#, fuzzy
+msgid "Joined on <b>%1</b>"
+msgstr "s<nobr> aan<b> s</b></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1296
+#, fuzzy
+msgid "Quiet for <b>%1h %2m %3s</b>"
+msgstr "s<nobr> sinds<b> s</b></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1097
+msgid "No connection"
+msgstr "Geen verbinding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:304
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:3
+#, fuzzy
+msgid "IRC Context"
+msgstr "&Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:319
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:365
+#, c-format
+msgid "Lag: %d.%d%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:393
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:379
+msgid "Lag: ?.??"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:326
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:637
+#, fuzzy
+msgid "No IRC context"
+msgstr "&Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:633
+#, fuzzy
+msgid "Not connected"
+msgstr "Geen verbinding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:377
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1117
+msgid "away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:397
+msgid "In progress..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:458
+#, fuzzy
+msgid "Crypting"
+msgstr "Beschrijving"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:466
+#, fuzzy
+msgid "Private Text Encoding"
+msgstr "Tekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:566
+#, fuzzy
+msgid "Ops...I've accidentally lost the crypting engine..."
+msgstr "I de."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:582
+#, fuzzy
+msgid "List of window types available in this release of KVIrc:"
+msgstr "venster beschikbaar:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:763
+#, fuzzy
+msgid "Use Default Encoding"
+msgstr "Gebruik de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:775
+#, fuzzy
+msgid "Standard"
+msgstr "Cursor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:776
+msgid "Smart (Send Local)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:777
+msgid "Smart (Send UTF-8)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:810
+#, fuzzy
+msgid "&Undock"
+msgstr "Verbergen de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:813
+#, fuzzy
+msgid "&Dock"
+msgstr "Aan&meren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:818
+#, fuzzy
+msgid "Mi&nimize"
+msgstr "M&inimaliseren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:821
+#, fuzzy
+msgid "Ma&ximize"
+msgstr "&Maximaliseren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:824
+#, fuzzy
+msgid "&Restore"
+msgstr "He&rstellen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:837
+#, fuzzy
+msgid "Text &Encoding"
+msgstr "Tekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:842
+#, fuzzy
+msgid "Sa&ve Window Properties"
+msgstr "Onbekende operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:86
+#, fuzzy
+msgid "Taskbar"
+msgstr "Takenbalk"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:91
+#, fuzzy
+msgid "taskbar"
+msgstr "Takenbalk"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1162
+#, fuzzy
+msgid "Sort"
+msgstr "Beschrijving"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1163
+#, fuzzy
+msgid "Reverse Sort"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1223
+#, fuzzy
+msgid "Window List"
+msgstr "Venster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:203
+#, fuzzy
+msgid "Apply to all IRC Contexts"
+msgstr "&Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:227
+#, fuzzy
+msgid "Away Indicator"
+msgstr "Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:255
+#, fuzzy
+msgid "Away since"
+msgstr "Bijnaam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:259
+#, fuzzy
+msgid "Double click to leave away mode"
+msgstr "<br> naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:261
+msgid "Not away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:263
+#, fuzzy
+msgid "Double click to enter away mode"
+msgstr "naar<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:330
+#, c-format
+msgid "Last checked %d mins %d secs ago"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:332
+#, fuzzy
+msgid "Lag measure not available yet"
+msgstr "Functie niet beschikbaar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:336
+msgid "Lag meter engine disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:338
+#, fuzzy
+msgid "Double click to enable it"
+msgstr "<br> naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:391
+#, fuzzy
+msgid "Lag Indicator"
+msgstr "Tekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:461
+msgid "Simple Clock"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:512
+#, fuzzy
+msgid "Show total connection time"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:536
+#, fuzzy
+msgid "Connection Timer"
+msgstr "Maximale tijd om te verbinden overschreden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:560
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:87
+#, fuzzy
+msgid "Separator"
+msgstr "Scheider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:820
+msgid "Clipboard"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line break"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line breaks"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:845
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:439
+#, fuzzy
+msgid "Cu&t"
+msgstr "Knippen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:847
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:445
+#, fuzzy
+msgid "&Copy"
+msgstr "Kopiëren..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:849
+#, fuzzy
+msgid "&Paste"
+msgstr "Plakken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:851
+#, fuzzy
+msgid "Paste (Slowly)"
+msgstr "Plakken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:856
+#, fuzzy
+msgid "Paste &File"
+msgstr "Plakken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:863
+#, fuzzy
+msgid "Stop Paste"
+msgstr "Plakken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:865
+#, fuzzy
+msgid "Clear"
+msgstr "Beginwaarde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:868
+msgid "Select All"
+msgstr "Alles selecteren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:897
+#, fuzzy
+msgid "Insert Icon"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1926
+#, fuzzy
+msgid "%d matches: %Q"
+msgstr "Nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1930
+#, fuzzy
+msgid "No matches"
+msgstr "Nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2657
+msgid "Show History<br>&lt;Ctrl+PageUp&gt;"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2648
+msgid "Input History Disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2370
+msgid "Show Icons Popup<br>&lt;Ctrl+I&gt;<br>See also /help texticons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2382
+msgid "User friendly commandline mode<br>See also /help commandline"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2394
+msgid "Multi-line Editor<br>&lt;Alt+Backspace&gt;"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2498
+#, fuzzy
+msgid "Confirm Multiline Message"
+msgstr "Bericht verzenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2499
+msgid ""
+"You're about to send a message with %1 lines of text.<br><br>There is "
+"nothing wrong with it, this warning is<br>here to prevent you from "
+"accidentally sending<br>a really large message just because you didn't edit "
+"it<br>properly after pasting text from the clipboard.<br><br>Do you want the "
+"message to be sent?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2505
+msgid "Yes, always"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2506
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:399
+#, fuzzy
+msgid "Yes"
+msgstr "ja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:806
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:375
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:400
+msgid "No"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2556
+msgid "<Ctrl+Return>; submits, <Alt+Backspace>; hides this editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:126
+#, fuzzy
+msgid "Address:"
+msgstr "IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:140
+msgid "Current IRC URI"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:156
+#, fuzzy
+msgid "Notify List"
+msgstr "Notificatie lijst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:263
+#, fuzzy
+msgid "Part All Channels"
+msgstr "Totaal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:265
+#, fuzzy
+msgid "Close All Queries"
+msgstr "Beginwaarde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:270
+#, fuzzy
+msgid "Unhighlight All Windows"
+msgstr "M&inimaliseren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:273
+#, fuzzy
+msgid "Unhighlight All Channels"
+msgstr "Totaal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:275
+#, fuzzy
+msgid "Unhighlight All Queries"
+msgstr "Beginwaarde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:387
+#, fuzzy
+msgid "Gender:"
+msgstr "Algemeen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:394
+#, fuzzy
+msgid "Male"
+msgstr "Waarde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:393
+msgid "Female"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:375
+#, fuzzy
+msgid "Registered as"
+msgstr "Negeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:381
+msgid "(Matched by"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:393
+#, fuzzy
+msgid "On <b>"
+msgstr "aan<b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:402
+#, fuzzy
+msgid "Using server <b>%1</b>"
+msgstr "<hr><nobr><b> s</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:407
+msgid "%1 hops"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:417
+msgid "Probably Away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:493
+msgid ""
+"KVIrc can accept only irc://, irc6://, ircs:// or irc6s:// URL's\n"
+"Your URL is invalid. Check spelling and try again"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:554
+msgid ""
+"You have just attempted to close a console window with an active connection "
+"inside.\n"
+"Are you sure you wish to terminate the connection?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:588
+msgid ""
+"You have just attempted to close the last console window.\n"
+"Are you sure you wish to quit KVIrc?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1019
+msgid "Failed to load avatar with name \"%Q\" and local path \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:624
+#, fuzzy
+msgid "Connection in progress..."
+msgstr "bezig met verbinden..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1099
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:630
+#, fuzzy
+msgid "Login in progress..."
+msgstr "bezig met in te loggen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1179
+#, fuzzy
+msgid "channel"
+msgstr "Annuleren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1180
+#, fuzzy
+msgid "channels"
+msgstr "Annuleren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1181
+#, fuzzy
+msgid "query"
+msgstr "Ondervraging"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1182
+#, fuzzy
+msgid "queries"
+msgstr "Ondervraging"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1238
+#, fuzzy
+msgid "Connected since"
+msgstr "Bezig met verbinden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1252
+#, fuzzy
+msgid "Online for"
+msgstr "Online"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1264
+#, fuzzy
+msgid "Server idle for"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:50
+msgid "This option is also available as"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:683
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:275
+#, fuzzy
+msgid "Advanced..."
+msgstr "Toevoegen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:69
+#, fuzzy
+msgid "Scri&pting"
+msgstr "Beschrijving"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:74
+#, fuzzy
+msgid "&Tools"
+msgstr "H&ulpmiddelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:81
+#, fuzzy
+msgid "&Settings"
+msgstr "&Status"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:83
+#, fuzzy
+msgid "&Window"
+msgstr "&Venster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:125
+#, fuzzy
+msgid "&Help"
+msgstr "&Help"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:119
+#, fuzzy
+msgid "&Help Browser (Panel)"
+msgstr "Nieuw hulp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:121
+#, fuzzy
+msgid "Help Browser (&Window)"
+msgstr "Nieuw &MDI hulp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:124
+#, fuzzy
+msgid "&Tip of the Day"
+msgstr "Wist u..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:127
+#, fuzzy
+msgid "About &KVIrc"
+msgstr "Info over."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:130
+msgid "KVIrc Home&page"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:134
+msgid "KVIrc Russian Home&page"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:139
+msgid "KVIrc French Home&page"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:143
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:339
+msgid "Subscribe to the Mailing List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:145
+msgid "Report a Bug / Propose Improvements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:148
+msgid "Join KVIrc International Channel on Freenode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:150
+msgid "Join KVIrc International Channel on IRCNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:155
+msgid "Join KVIrc Italian Channel on AzzurraNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:161
+msgid "Join KVIrc French Channel on Freenode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:164
+msgid "Join KVIrc French Channel on EuropNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:179
+#, fuzzy
+msgid "Show StatusBar"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:194
+#, fuzzy
+msgid "&Save Configuration"
+msgstr "Op&slaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:213
+msgid "Restore &Default Script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:630
+msgid "Disconnect"
+msgstr "Ophangen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:228
+#, fuzzy
+msgid "New &Connection To"
+msgstr "&Nieuw verbinding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:234
+#, fuzzy
+msgid "Hide &Dock Icon"
+msgstr "Verbergen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:237
+#, fuzzy
+msgid "Show &Dock Icon"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:111
+#, fuzzy
+msgid "&Quit"
+msgstr "&Afsluiten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:265
+msgid "&Other..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:305
+#, fuzzy
+msgid "Show &Icon Table"
+msgstr "P&ictogram"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:308
+#, fuzzy
+msgid "Open &Terminal"
+msgstr "&Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:308
+msgid ""
+"<b>Shift+Drag</b> or <b>Ctrl+Drag</b> to move the applet around<br><b>Right "
+"click</b> to see the other options"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:313
+msgid "<b>Right click</b> to add/remove applets"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:353
+#, fuzzy
+msgid "Remove %Q"
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:365
+#, fuzzy
+msgid "Add Applet"
+msgstr "Toevoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:404
+msgid ""
+"Drag the applet while holding the Shift or Ctrl key to move it to the "
+"desired position"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:93
+#, fuzzy
+msgid "<b><font color=\"#EAEAEA\" size=\"-1\">Find Text</font></b>"
+msgstr "<nobr><font color=\"%s\"><b> Help venster</b></font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:118
+msgid "&Regular expression"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:121
+#, fuzzy
+msgid "E&xtended regexp."
+msgstr "Bestand naam:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:126
+#, fuzzy
+msgid "C&ase sensitive"
+msgstr "Plakken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:129
+#, fuzzy
+msgid "Find &Prev."
+msgstr "Zoeken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:133
+#, fuzzy
+msgid "&Find Next"
+msgstr "Algemene"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:880
+#, fuzzy
+msgid "Find"
+msgstr "Zoeken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:214
+#, fuzzy
+msgid "Type"
+msgstr "Type"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:166
+#, fuzzy
+msgid "Set &All"
+msgstr "Alles selecteren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:170
+#, fuzzy
+msgid "Set &None"
+msgstr "(Geen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:174
+#, fuzzy
+msgid "&Load From..."
+msgstr "Bezig met laden van de iconen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:178
+#, fuzzy
+msgid "&Save As..."
+msgstr "Opsl&aan."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:182
+#, fuzzy
+msgid "Filter"
+msgstr "Filter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:234
+#, fuzzy
+msgid "Select a Filter File"
+msgstr "Selecteren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:251
+#, fuzzy, c-format
+msgid "Can't open the filter file %s for reading."
+msgstr "de file s voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:261
+#, fuzzy
+msgid "Select a Name for the Filter File"
+msgstr "Selecteren naam voor de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:272
+#, fuzzy
+msgid "Failed to write the filter file %Q (IO Error)"
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:274
+#, fuzzy
+msgid "Can't open the filter file %Q for writing"
+msgstr "de file s voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:109
+#, fuzzy
+msgid "Choose image ..."
+msgstr "file."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:122
+#, fuzzy
+msgid "Builtin images"
+msgstr "Achtergrondafbeelding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:131
+#, fuzzy
+msgid "Small icons"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:138
+msgid "Full path"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:241
+msgid "Builtin $icon(%Q) [index %d]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:274
+#, fuzzy
+msgid "directory"
+msgstr "Map"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:300
+msgid "pixels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:305
+#, fuzzy
+msgid "bytes"
+msgstr "ja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:98
+#, fuzzy
+msgid "Show User List"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:105
+#, fuzzy
+msgid "Query Targets"
+msgstr "Ondervraging"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:165
+#, fuzzy
+msgid "Query target:"
+msgstr "Ondervraging"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:170
+msgid "%1 is %2 (%3)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:172
+msgid "%1 is %2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:186
+#, fuzzy
+msgid "%1 is using irc server: %2 (%3 hops)"
+msgstr "<hr><nobr><b> s</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:188
+#, fuzzy
+msgid "%1 is using irc server: %2"
+msgstr "<hr><nobr><b> s</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:195
+msgid "%1 is probably away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:200
+msgid "Common channels with %1: %2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:254
+#, fuzzy
+msgid "[Dead Query]"
+msgstr "Negeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:240
+msgid "Query with %1!%2 (%3)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:242
+msgid "Query with %1!%2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:244
+#, fuzzy
+msgid ", using server %1"
+msgstr "<hr><nobr><b> s</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:246
+msgid " (%1 hops)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:248
+msgid ", probably away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:252
+#, fuzzy
+msgid "Common channels: %2"
+msgstr "is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:320
+msgid ""
+"The target of this query has changed from \r!n\r%Q\r [%Q@\r!h\r%Q\r] to \r!n"
+"\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:389
+#, fuzzy
+msgid "Common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "U s door s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:392
+#, fuzzy
+msgid "No common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "U s door s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:428
+msgid "[Dead query]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:578
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:645
+#, fuzzy
+msgid "This query has no active targets, no message sent"
+msgstr "nee actief nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:617
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %s, no "
+"data sent to the server"
+msgstr ""
+"De cryptie motor wat niet in staat om de huidige boodschap (%Q) te "
+"encrypteren: %s: geen data verstuurd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashcount.cpp:74
+msgid ""
+"The argument of the hash count '#' operator didn't evaluate to a hash: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:100
+#, fuzzy
+msgid "DNS Lookup result for query \"%Q\""
+msgstr "DNS voor s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:105
+#, fuzzy
+msgid "Error: %Q"
+msgstr "Fout"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:110
+#, fuzzy
+msgid "Hostname %d: %Q"
+msgstr "Hostnaam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:116
+#, fuzzy
+msgid "IP address %d: %Q"
+msgstr "IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:870
+#, fuzzy
+msgid ""
+"Broken slot '%Q' in target object '%Q::%Q' while emitting signal '%Q' from "
+"object '%Q::%Q': disconnecting"
+msgstr "Gebroken s s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:888
+#, fuzzy
+msgid ""
+"Slot target object destroyed while emitting signal '%Q' from object '%Q::%Q'"
+msgstr "Gebroken s s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1040
+#, fuzzy
+msgid "Listing Qt properties for object named \"%Q\" of KVS class %Q"
+msgstr "de IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1046
+#, fuzzy, c-format
+msgid "Properties for Qt class %s"
+msgstr "Eigenschappen:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1071
+#, fuzzy
+msgid "Property: %c%Q%c, type %Q"
+msgstr "Eigenschap s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1131
+#, c-format
+msgid "%d properties listed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1151
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1380
+msgid "The object named \"%Q\" of class %Q has no Qt properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1396
+msgid "No Qt property named \"%Q\" for object named \"%Q\" of class %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1409
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed but it doesn't really exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1417
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed and defined but the returned variant is not valid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1200
+#, c-format
+msgid ""
+"The property is of type %s but the supplied argument can't be converted to "
+"that type (expecting \"%s\")"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1331
+msgid ""
+"A pixmap object, an image_id or an image file path is required for this "
+"property"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1352
+#, fuzzy
+msgid "Can't find the requested image"
+msgstr "de IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1512
+msgid ""
+"Property \"%Q\" for object named \"%Q\" of class %Q has an unsupported data "
+"type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1659
+msgid "Cannot find object function $%Q for object named \"%Q\" of class %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1661
+msgid "Cannot find object function $%Q::%Q for object named \"%Q\" of class %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1669
+msgid ""
+"Cannot call internal object function $%Q (for object named \"%Q\" of class %"
+"Q) from this context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:69
+msgid "Stray dot ('.') character or invalid following module command name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:70
+msgid "Syntax error: malformed module command identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:188
+msgid "Stray '::' sequence or invalid following alias name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:95
+msgid "Syntax error: malformed alias identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:102
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:196
+msgid "Stray ':' character: did you mean '...<namespace>::<alias_name>' ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:103
+msgid "Syntax error: malformed (alias?) command identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:280
+#, fuzzy
+msgid "Unknown callback command \"%Q\""
+msgstr "Onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:465
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:44
+#, fuzzy
+msgid "The current window is not a channel"
+msgstr "venster is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:532
+msgid ""
+"Timer name omitted but there is not current timer (this is not a timer "
+"callback)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:538
+#, fuzzy
+msgid "Can't kill the timer '%Q' since it is not running"
+msgstr "de localhost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:626
+#, fuzzy
+msgid "List of active timers"
+msgstr "Nee actief file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:637
+msgid "Persistent"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:640
+#, fuzzy
+msgid "WindowLifetime"
+msgstr "Venster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:643
+msgid "SingleShot"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:652
+#, fuzzy
+msgid "None"
+msgstr "(Geen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:663
+#, fuzzy, c-format
+msgid "Total: %u timers running"
+msgstr "Totaal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:849
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:872
+#, fuzzy
+msgid "Found character '%q' (unicode %x) where a slash '/' was expected"
+msgstr "Onverwacht karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:842
+#, fuzzy
+msgid ""
+"Unexpected end of command in binding operation, at least two slashes are "
+"missing"
+msgstr "Onverwahct einde van commando in de functie parameters"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:865
+#, fuzzy
+msgid ""
+"Unexpected end of command in binding operation, at least one slash is missing"
+msgstr "Onverwahct einde van commando in de functie parameters"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:905
+#, fuzzy
+msgid "Unknown binding operation '%Q'"
+msgstr "Onbekende operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:926
+msgid "Missing right side operand for the binding operator '=~'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:948
+msgid "Trailing garbage ignored after operator '++'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:960
+msgid "Missing right operand for operator '+='"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:979
+msgid "Trailing garbage ignored after operator '--'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:986
+msgid ""
+"This looks a lot like an object handle dereferencing operator '->' but in "
+"fact it isn't. Maybe you forgot a '$' just after ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:994
+msgid "Missing right operand for operator '-='"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1015
+msgid "Missing right operand for operator '<<='"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1025
+msgid "Missing right operand for operator '<<'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1039
+msgid "Missing right operand for operator '<,'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1053
+msgid "Missing right operand for operator '<+'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1075
+msgid "Missing right operand for operator '>>='"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1094
+msgid "Missing right operand for operator '.='"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1113
+msgid "Missing right operand for operator '"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:72
+msgid "Unknown operator"
+msgstr "Onbekende operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1178
+msgid "Unexpected (and senseless) read-only data evaluation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1180
+msgid "Syntax error: confused by earlier errors: bailing out"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1160
+#, fuzzy
+msgid "Unexpected end of script after a variable reference: expected operator"
+msgstr "Onverwahct einde van commando in de functie parameters"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1176
+msgid ""
+"Unexpected character '%q' (unicode %x) after a void function call: end of "
+"instruction expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1179
+#, fuzzy
+msgid "Unexpected character '%q' (unicode %x)"
+msgstr "Onverwacht karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:96
+msgid "/me can be used only in channels, queries and DCC chat windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:385
+#, fuzzy
+msgid "Invalid IRC url (%Q)"
+msgstr "IRC url s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:410
+#, fuzzy
+msgid "The commandline for this url type seems to be broken (%Q)"
+msgstr "voor url naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:412
+#, fuzzy
+msgid "No commandline specified for this type of url (%Q)"
+msgstr "Nee voor url s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:512
+#, fuzzy
+msgid "Option setting error: Unknown option or invalid value for option type"
+msgstr "Optie onbekend of voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:606
+#, fuzzy
+msgid "Choose a file to parse"
+msgstr "file naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:639
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:643
+#, fuzzy
+msgid "Failed to load the file '%Q' for parsing"
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:715
+msgid "Missing channel list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:753
+#, fuzzy, c-format
+msgid "You don't appear to be on channel %s"
+msgstr "U"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:802
+msgid "Module command call failed: can't load the module 'snd'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:809
+msgid ""
+"Module command call failed: the module 'snd' doesn't export a command named "
+"'play'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:864
+#, fuzzy
+msgid "Popup %Q is not defined"
+msgstr "s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:872
+msgid "A popup menu cannot be popped up twice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:897
+#, fuzzy
+msgid "Invalid syntax for screen coordinates, using cursor position"
+msgstr "Ongeldige encryptie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1011
+#, fuzzy
+msgid "Empty target specified"
+msgstr "Leeg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:97
+#, fuzzy
+msgid "[RAW]: %Q"
+msgstr "FOUT"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1237
+#, fuzzy
+msgid "Window with id %Q not found: no rebinding performed"
+msgstr "Venster door id s leeg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1330
+#, fuzzy
+msgid "Failed to execute command '%Q'"
+msgstr "Faalde naar commando s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:242
+#, fuzzy
+msgid "Missing alias name"
+msgstr "Ontbrekende variabele naam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:253
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:889
+msgid ""
+"Alias names can contain only letters, digits, underscores and '::' namespace "
+"separators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:903
+msgid ""
+"Stray ':' character in alias name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:914
+msgid "Found an empty namespace in alias name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:277
+#, fuzzy
+msgid "The alias %Q is not existing"
+msgstr "bron s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:436
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:413
+#, fuzzy
+msgid "The specified window has no button containers"
+msgstr "venster is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:447
+#, fuzzy
+msgid "Window button '%Q' not found"
+msgstr "Venster s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:445
+#, fuzzy
+msgid "Can't find the icon '%Q'"
+msgstr "s de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:532
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:540
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1197
+#, fuzzy
+msgid "No such event (%Q)"
+msgstr "Nee s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:552
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1222
+#, fuzzy
+msgid "No handler '%Q' for raw numeric event '%d'"
+msgstr "Nee s voor s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1248
+#, fuzzy
+msgid "No handler '%Q' for event '%Q'"
+msgstr "Nee s voor s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:936
+#, fuzzy
+msgid "The specified ping time is invalid: assuming zero (no ping)"
+msgstr "is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:946
+msgid "The specified maximum run time is invalid: assuming zero (infinite)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:965
+#, fuzzy
+msgid "Failed to start the process"
+msgstr "Faalde naar de status"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1010
+#, fuzzy
+msgid "The specified object does not exist"
+msgstr "is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1113
+msgid "Missing timer name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1122
+msgid "Missing timeout delay"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1129
+#, fuzzy
+msgid "The timeout delay didn't evaluate to an integer"
+msgstr "Linkse operator is geen nummer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1152
+#, fuzzy
+msgid "Unable to add the timer: insufficient system resources"
+msgstr "naar toevoegen s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_eventmanager.cpp:503
+#, fuzzy
+msgid "Event handler %Q is broken: disabling"
+msgstr "Gebeurtenis s s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_moduleinterface.cpp:166
+msgid "Can't unload the module: it has locked itself in memory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:123
+#, fuzzy
+msgid "Unknown binary operator '=%q': did you mean '==' ?"
+msgstr "Onbekende operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:221
+#, fuzzy
+msgid "Unknown binary operator '%q'"
+msgstr "Onbekende operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:305
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:371
+#, fuzzy
+msgid "Unexpected end of script in expression"
+msgstr "Onverwacht einde van commando in de string"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:451
+msgid ""
+"Unexpected character %q (unicode %h) in expression. If it meant to be a "
+"string use the quotes."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:466
+#, fuzzy
+msgid "Unexpected empty expression operand"
+msgstr "Onverwacht einde van commando in de string"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:91
+msgid "say: injected commandline"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:94
+msgid "Say parse error: Broken command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:250
+msgid ""
+"Couldn't find a suitable IRC context for the connection, try using -n or -u"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:259
+#, fuzzy
+msgid "Another connection is already in progress in the selected IRC context"
+msgstr "Een andere verbinding bezig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:369
+msgid "No menu bar item with text '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:383
+#, fuzzy
+msgid "Invalid index specified: ignored"
+msgstr "pictogram s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:392
+#, fuzzy
+msgid "The popup '%Q' is not defined"
+msgstr "s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:604
+#, fuzzy
+msgid "No target channel specified and the current window is not a channel"
+msgstr "venster is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:705
+msgid "No catalogue %Q for the current language found"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:744
+#, fuzzy
+msgid "The catalogue %Q was not loaded"
+msgstr "file s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:80
+msgid ""
+"Empty window identifier specified in the standard rebinding switch: no "
+"rebinding performed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:91
+msgid ""
+"Invalid window specified in the standard rebinding switch: no rebinding "
+"performed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:94
+#, fuzzy
+msgid ""
+"The left side of the scope operator didn't evaluate as an object reference"
+msgstr "Rechts s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:100
+#, fuzzy
+msgid ""
+"The left side of the scope operator evaluated to a null object reference"
+msgstr "Rechts s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:107
+msgid ""
+"The left side of the scope operator evaluated to an invalid object reference "
+"(object doesn't exist)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayreferenceassert.cpp:77
+msgid "Array reference assert failed: the variable evaluated to type '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:247
+#, fuzzy
+msgid "Operand of unary operator didn't evaluate to a number"
+msgstr "Rechts s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:415
+#, fuzzy
+msgid "Left operand didn't evaluate to a number"
+msgstr "Linkse operator is geen nummer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:422
+#, fuzzy
+msgid "Right operand didn't evaluate to a number"
+msgstr "Rechtse operand is geen nummer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:547
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:575
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:583
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:374
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:66
+msgid "Division by zero"
+msgstr "Deling door nul"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:107
+#, c-format
+msgid "line %d, near character %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:187
+msgid "This command can be used only in windows bound to an IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:193
+#, fuzzy
+msgid "You're not connected to an IRC server"
+msgstr "U bent niet met een server verbonden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:199
+#, fuzzy
+msgid "Missing parameter"
+msgstr "Ontbrekende popup naam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:128
+msgid "Hash key evaluated to empty string: fix the script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:99
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:144
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash automatic "
+"conversion from %Q supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashreferenceassert.cpp:77
+msgid "Hash reference assert failed: the variable evaluated to type '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:100
+#, fuzzy
+msgid "Failed to send an unknown command as /raw"
+msgstr "Onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:104
+#, fuzzy
+msgid "Call to undefined command '%Q'"
+msgstr "Faalde naar commando s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:116
+msgid "Error in inner alias command call '%Q', called from this context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:74
+msgid "There are no extended scope variables in this scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:111
+#, fuzzy
+msgid "Missing class name"
+msgstr "Ontbrekende variabele naam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:120
+msgid "A class can't be a subclass of itself"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:127
+msgid "Couln't find base class named \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:137
+msgid ""
+"Detected a loop in the inheritance tree of the base class \"%Q\": redefine "
+"that class first"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:146
+msgid "Can't override the builtin class \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:71
+msgid "Module command call failed: can't load the module '%Q': %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:77
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a command named '%"
+"Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:113
+msgid "Broken condition in menu setup: assuming false"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:220
+#, fuzzy
+msgid "Broken icon parameter: ignoring"
+msgstr "Gebroken expressie voor item s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:228
+#, fuzzy
+msgid "Can't find the icon \"%Q\": ignoring"
+msgstr "s de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:244
+msgid "Broken text parameter: assuming empty string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:486
+#, fuzzy
+msgid "Recursive definition detected for popup '%Q': ignoring"
+msgstr "de localhost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:500
+#, fuzzy
+msgid "Can't find the external popup '%Q'; ignoring"
+msgstr "de localhost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:853
+#, fuzzy
+msgid "Broken prologue in popup menu '%Q': ignoring"
+msgstr "Gebroken expressie voor item s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:868
+#, fuzzy
+msgid "Broken epilogue in popup menu '%Q': ignoring"
+msgstr "Gebroken expressie voor item s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:70
+msgid "Module function call failed: can't load the module '%Q': %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:77
+msgid ""
+"Module function call failed: the module '%Q' doesn't export a function named "
+"'%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_timermanager.cpp:244
+msgid "Timer '%Q' has a broken callback handler: killing the timer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:229
+#, fuzzy
+msgid "The target variable didn't evaluate to an integer or real value"
+msgstr "Linkse operator is geen nummer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:283
+#, fuzzy
+msgid "The right side of operator '&=' didn't evaluate to an integer"
+msgstr "Rechts s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:294
+#, fuzzy
+msgid "The left side of operator '&=' didn't evaluate to an integer"
+msgstr "Rechts s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:353
+#, fuzzy
+msgid "The right side of operator '/=' didn't evaluate to a number"
+msgstr "Rechts s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:364
+#, fuzzy
+msgid "The left side of operator '/=' didn't evaluate to a number"
+msgstr "Rechts s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:446
+#, fuzzy
+msgid "The right side of operator '%=' didn't evaluate to a number"
+msgstr "Rechts s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:457
+#, fuzzy
+msgid "The left side of operator '%=' didn't evaluate to a number"
+msgstr "Rechts s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:541
+#, fuzzy
+msgid "The right side of operator '*=' didn't evaluate to a number"
+msgstr "Rechts s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:552
+#, fuzzy
+msgid "The left side of operator '*=' didn't evaluate to a number"
+msgstr "Rechts s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:620
+#, fuzzy
+msgid "The right side of operator '|=' didn't evaluate to an integer"
+msgstr "Rechts s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:631
+#, fuzzy
+msgid "The left side of operator '|=' didn't evaluate to an integer"
+msgstr "Rechts s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:691
+#, fuzzy
+msgid "The right side of operator '<<=' didn't evaluate to an integer"
+msgstr "Rechts s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:702
+#, fuzzy
+msgid "The left side of operator '<<=' didn't evaluate to an integer"
+msgstr "Rechts s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:763
+#, fuzzy
+msgid "The right side of operator '>>=' didn't evaluate to an integer"
+msgstr "Rechts s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:774
+#, fuzzy
+msgid "The left side of operator '>>=' didn't evaluate to an integer"
+msgstr "Rechts s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:840
+#, fuzzy
+msgid "The right side of operator '-=' didn't evaluate to a number"
+msgstr "Rechts s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:851
+#, fuzzy
+msgid "The left side of operator '-=' didn't evaluate to a number"
+msgstr "Rechts s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:923
+#, fuzzy
+msgid "The right side of operator '+=' didn't evaluate to a number"
+msgstr "Rechts s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:934
+#, fuzzy
+msgid "The left side of operator '+=' didn't evaluate to a number"
+msgstr "Rechts s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1009
+#, fuzzy
+msgid "The right side of operator '^=' didn't evaluate to an integer"
+msgstr "Rechts s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1020
+#, fuzzy
+msgid "The left side of operator '^=' didn't evaluate to an integer"
+msgstr "Rechts s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1462
+msgid ""
+"The regular expression matched a zero-length substring: this is not valid in "
+"the s/// operator, skipping"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:52
+#, fuzzy
+msgid "Unexpected end of script after '$' function call prefix"
+msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:53
+msgid "Unexpected character %q (unicode %x) after '$' function call prefix"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:54
+msgid ""
+"Syntax error after '$' function call prefix. If you want to use a plain '$' "
+"in the code you need to escape it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:63
+msgid "Invalid expression evaluation in object scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:78
+msgid "Invalid command evaluation in object scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:87
+msgid "Empty instruction block for command evaluation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:101
+msgid ""
+"Parameter identifiers are forbidden in object scope (after the '->' operator)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:147
+msgid ""
+"Ending index of a multiple parameter identifier is lower or equal to the "
+"starting index. This will evaluate to a single parameter identifier."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:163
+msgid "Syntax error: invalid $$ ($this) function call in object scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:189
+msgid "Syntax error: malformed alias function call identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:197
+msgid "Syntax error: malformed (alias?) function call identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:307
+#, fuzzy, c-format
+msgid "Invalid data type for parameter \"%s\""
+msgstr "Ongeldige parameter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:122
+#, c-format
+msgid "found empty string where type '%s' was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:129
+#, fuzzy
+msgid "found string value \"%Q\" where type '%s' was expected"
+msgstr "Onverwacht karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:134
+#, fuzzy
+msgid "found type %Q where type '%s' was expected"
+msgstr "Onverwacht karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:154
+#, fuzzy, c-format
+msgid "Missing non-optional parameter \"%s\""
+msgstr "Ontbrekende popup naam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:282
+msgid "found empty string while a non empty one was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:309
+#, c-format
+msgid "found signed integer \"%d\" where type 'unsigned integer' was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:253
+#, fuzzy
+msgid "This window has no associated IRC context"
+msgstr "Dit venster heeft geen irc context"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:483
+#, fuzzy, c-format
+msgid "No such IRC context (%u)"
+msgstr "Nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:471
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:586
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:494
+#, fuzzy
+msgid "This window is not associated to an IRC context"
+msgstr "Dit venster heeft geen irc context"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:809
+msgid ""
+"The specified format string wasn't accepted by the underlying system time "
+"formatting function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:70
+msgid "Unterminated c-style multiline comment"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:71
+#, fuzzy
+msgid "Unexpected end of script in multiline comment"
+msgstr "Onverwahct einde van commando in de functie parameters"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:88
+msgid ""
+"Unexpected character '%q' (unicode %x) after a slash (it is a typo or a "
+"malformed comment begin ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:71
+#, fuzzy
+msgid "Call to undefined function '%Q'"
+msgstr "s de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:79
+msgid "Error in inner alias function call '%Q', called from this context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:73
+#, fuzzy
+msgid "Array index didn't evaluate to an integer"
+msgstr "Linkse operator is geen nummer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:79
+msgid ""
+"Array index evaluated to a negative integer (non negative integer expected)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:106
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from %Q supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:142
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:219
+#, fuzzy
+msgid "Lag meter was not enabled"
+msgstr "venster is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:546
+#, fuzzy
+msgid "No such event handler (%Q) for event %Q"
+msgstr "Nee s voor s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands.cpp:153
+#, fuzzy
+msgid "This is not a channel"
+msgstr "is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:99
+#, fuzzy
+msgid ""
+"Unexpected end of command buffer while looking for the \"perl.end\" statement"
+msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:147
+msgid "Trailing garbage at the end of the break command: ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:209
+msgid "The 'unset' command needs a variable list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:280
+#, fuzzy
+msgid "Found character %q (unicode %x) where a variable was expected"
+msgstr "Onverwacht karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:219
+msgid "'unset' command used without a variable list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:279
+msgid "The 'global' command needs a variable list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:631
+msgid "Found character %q (unicode %x) where an open parenthesis was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:439
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:538
+#, fuzzy
+msgid "Unexpected end of buffer in class definition"
+msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:474
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:501
+#, fuzzy
+msgid "Found character %q (unicode %x) where a function name was expected"
+msgstr "Onverwacht karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:522
+#, fuzzy
+msgid "Unexpected end of buffer in function parameter list reminder"
+msgstr "Onverwahct einde van commando in de functie parameters"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:630
+msgid "The while command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:654
+msgid ""
+"The last while command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:655
+#, fuzzy
+msgid ""
+"Unexpected end of script while looking for the instruction block of the "
+"while command"
+msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:741
+#, fuzzy
+msgid ""
+"Unexpected end of command after the 'do' command block: expected 'while' "
+"keyword"
+msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:743
+#, fuzzy
+msgid "Found character %q (unicode %x) where a 'while' keyword was expected"
+msgstr "Onverwacht karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:759
+msgid ""
+"The 'while' block of the 'do' command needs an expression enclosed in "
+"parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:779
+msgid "Garbage string after the expression in 'do' command: ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:825
+msgid "The 'if' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:850
+msgid ""
+"The last if command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:851
+#, fuzzy
+msgid ""
+"Unexpected end of script while looking for the instruction block of the if "
+"command"
+msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:966
+#, fuzzy
+msgid ""
+"Unexpected end of buffer while looking for the closing ')' in the 'for' "
+"command"
+msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1015
+msgid "The 'for' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1092
+msgid ""
+"Found char %q (unicode %x) while looking for the terminating ')' in 'for' "
+"command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1122
+msgid "Empty infinite 'for' loop: fix the script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1181
+msgid "The 'foreach' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1205
+msgid ""
+"The 'foreach' command expects a writeable iteration variable as first "
+"parameter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1196
+#, fuzzy
+msgid ""
+"Found character '%q' (unicode %x) where '%' or '$' was expected: see /help "
+"foreach for the command syntax"
+msgstr "Onverwacht karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1207
+msgid "Unexpected function call as 'foreach' iteration variable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1209
+msgid "Unexpected read-only variable as 'foreach' iteration variable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1219
+msgid ""
+"Unexpected end of 'foreach' parameters: at least one iteration data argument "
+"must be given"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1223
+msgid ""
+"The 'foreach' command expects a comma separated list of iteration data items "
+"after the first parameter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1244
+msgid ""
+"Found empty 'foreach' execution block: maybe you need to fix your script ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1365
+msgid "The 'switch' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1415
+#, fuzzy
+msgid "Unexpected end of buffer in switch condition block"
+msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1422
+#, fuzzy
+msgid ""
+"Found character %q (unicode %x) where a 'case','match','regexp','default' or "
+"'break' label was expected"
+msgstr "Onverwacht karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1460
+msgid ""
+"Found 'break' label where a 'case','match','regexp' or 'default' label was "
+"expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1465
+#, fuzzy
+msgid ""
+"Found token '%Q' where a 'case','match','regexp','default' or 'break' label "
+"was expected"
+msgstr "Case , match , regexp , default or break keywoord verwacht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1528
+msgid "Senseless empty switch command: fix the script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1562
+#, fuzzy
+msgid "Unexpected end of buffer in defpopup block"
+msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1569
+#, fuzzy
+msgid ""
+"Found character %q (unicode %x) where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr "Onverwacht karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1668
+msgid "Found empty prologue block: maybe you need to fix the script?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1670
+msgid "Found empty epilogue block: maybe you need to fix the script?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1703
+msgid ""
+"Unexpected empty <text> field in label parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1753
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1801
+msgid ""
+"Unexpected empty <text> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1777
+msgid ""
+"Found empty instruction for popup item: maybe you need to fix the script?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1809
+msgid ""
+"Unexpected empty <name> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1821
+#, fuzzy
+msgid ""
+"Found token '%Q' where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr "Case , match , regexp , default or break keywoord verwacht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1931
+msgid "The 'defpopup' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:109
+msgid "beginning of input"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:121
+#, fuzzy
+msgid ""
+"Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %s"
+"\" for the command syntax"
+msgstr "Onverwacht karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:124
+#, fuzzy, c-format
+msgid ""
+"Found end of input where character '%c' was expected: see \"/help %s\" for "
+"the command syntax"
+msgstr "Onverwacht karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:197
+#, fuzzy
+msgid "Empty script"
+msgstr "Leeg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2650
+msgid ""
+"Syntax error after '%' variable prefix. If you want to use a plain '%' in "
+"the code you need to escape it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2667
+msgid "Objects have no extended scope variables"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2727
+msgid "Found character '%q' (unicode %x) where an instruction was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2760
+#, fuzzy
+msgid "Unterminated instruction block"
+msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2761
+#, fuzzy
+msgid "Unexpected end of script in instruction block (missing closing brace)"
+msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2838
+msgid ""
+"The dash after a command should be followed by a letter (switch), by a digit "
+"(negative number) or be escaped"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2842
+#, fuzzy
+msgid "Unexpected character '%q' (unicode %x) after a switch dash"
+msgstr "Onverwacht karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2844
+#, fuzzy
+msgid "Unexpected end of script after a switch dash"
+msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2869
+msgid ""
+"The above problem might be related to the switch dash and the following "
+"equal sign"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2948
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3016
+#, fuzzy
+msgid "Unexpected end of script in parameter list"
+msgstr "Onverwahct einde van commando in de functie parameters"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2954
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3022
+#, fuzzy
+msgid "Unexpected end of line in parameter list"
+msgstr "Onverwahct einde van commando in de functie parameters"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3083
+msgid ""
+"Nested character %q corresponding to expected terminator, this might confuse "
+"me a bit: it is a good idea to enclose it in quotes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3093
+msgid "Skipping nested terminator character %q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3120
+msgid "Stray backslash at the end of the script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3393
+msgid "Unterminated hash key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3387
+#, fuzzy
+msgid "Unexpected end of script in hash key (missing '}' character ?)"
+msgstr "Onverwahct einde van commando in de functie parameters"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3394
+msgid ""
+"Unexpected end of line in hash key (missing '}' character or unescaped "
+"newline)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3679
+msgid "Unterminated string constant"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3673
+#, fuzzy
+msgid "Unexpected end of script in string constant (missing \" character ?)"
+msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3680
+msgid ""
+"Unexpected end of line in string constant (missing \" character or unescaped "
+"newline)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_processmanager.cpp:225
+#, fuzzy
+msgid "Error triggered from process callback handler: killing process"
+msgstr "Fout s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arraycount.cpp:72
+msgid ""
+"The argument of the array count '#' operator didn't evaluate to an array: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:197
+#, fuzzy
+msgid "This window has no associated IRC context and is not a DCC chat"
+msgstr "Dit venster heeft geen irc context"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:293
+#, fuzzy
+msgid "Class \"%Q\" is not defined"
+msgstr "s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:303
+#, fuzzy
+msgid "The specified parent object does not exist"
+msgstr "is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:430
+#, fuzzy
+msgid "There is no option named '%Q'"
+msgstr "Nee s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:85
+msgid "Internal error: pure virtual evaluateReadOnly called"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:91
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:104
+msgid ""
+"Internal error: trying to evaluate as read-write a read-only data location"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:98
+msgid "Internal error: pure virtual evaluateReadOnlyInObjectScope called"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:215
+msgid "[KVS]%c Warning: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:211
+msgid "[KVS]%c Compilation Error: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:219
+msgid "[KVS]%c Runtime Error: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:224
+#, fuzzy
+msgid "[KVS] in script context \"%Q\""
+msgstr "IRC id s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:226
+#, fuzzy
+msgid "[KVS] in script context \"%Q\", %Q"
+msgstr "IRC id s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:233
+msgid "[KVS] Code listing:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:238
+#, fuzzy
+msgid "[KVS] Window:"
+msgstr "&Venster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:242
+#, c-format
+msgid "[KVS] Destroyed window with pointer %x"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:246
+msgid "[KVS] Call stack:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:464
+#, fuzzy, c-format
+msgid "Window with ID '%s' not found, returning empty string"
+msgstr "Venster door id s leeg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:130
+#, fuzzy
+msgid "The specified window is not a channel"
+msgstr "venster is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:392
+msgid "The $sw() function can be used only in aliases"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:302
+#, fuzzy
+msgid "Invalid pitch value: using default"
+msgstr "zichtbaar naam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:312
+#, fuzzy
+msgid "Invalid duration value: using default"
+msgstr "pictogram s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:421
+msgid "No button with type %Q named %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:632
+#, fuzzy
+msgid "Can't delete a null object reference"
+msgstr "de IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:638
+#, fuzzy
+msgid "Can't delete an inexisting object"
+msgstr "de IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:692
+#, fuzzy
+msgid "Inexisting popup \"%Q\""
+msgstr "Ontbrekende popup naam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:698
+msgid ""
+"Popup menu self-modification is not allowed (the popup is probably open)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:705
+#, fuzzy
+msgid "The menu item with id \"%Q\" does not exist in popup \"%Q\""
+msgstr "file s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:860
+msgid ""
+"The argument of the -w switch did not evaluate to a valid window id: using "
+"default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:869
+msgid ""
+"The argument of the i switch did not evaluate to a number: using default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:981
+#, fuzzy
+msgid "Invalid color-set specification, using default"
+msgstr "pictogram s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:992
+#, fuzzy, c-format
+msgid "Window '%s' not found, using current one"
+msgstr "Venster s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:78
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a callback "
+"command named '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp:401
+#, c-format
+msgid "The popup '%s' is actually locked: 'self-modifications' are not allowed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:822
+#, fuzzy, c-format
+msgid "Ignoring DCC from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "U s door s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:839
+#, fuzzy, c-format
+msgid "Ignoring CTCP from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "U s door s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:978
+#, fuzzy
+msgid "The following CTCP reply has unrecognized target %Q"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1025
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1128
+msgid "Channel CTCP"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:988
+#, fuzzy
+msgid "%Q %Q reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "s s s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1018
+#, fuzzy
+msgid "The following CTCP request has unrecognized target %Q"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1032
+#, fuzzy
+msgid ""
+"%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignored (flood limit "
+"exceeded)"
+msgstr "s s s s s s genegeerd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1036
+#, fuzzy
+msgid "ignored (unrecognized)"
+msgstr "genegeerd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+#, fuzzy
+msgid "ignored"
+msgstr "genegeerd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "replied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1041
+#, fuzzy
+msgid "%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+msgstr "s s s s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1079
+#, fuzzy
+msgid "The following CTCP PING reply has unrecognized target \"%Q\""
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1113
+#, fuzzy, c-format
+msgid ""
+"The following CTCP PING reply has a broken time identifier \"%S\", don't "
+"trust the displayed time"
+msgstr "tijd s de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1132
+#, fuzzy
+msgid "%Q PING reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sec %u msec"
+msgstr "s s s s seconden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1466
+#, fuzzy
+msgid "The following CTCP ACTION has unrecognized target %Q"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1471
+#, fuzzy
+msgid "CTCP ACTION from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "s s s naar onbekend s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1517
+#, fuzzy
+msgid "Unable to add file offer for file %Q (File not readable?)"
+msgstr "toevoegen file voor file s file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1521
+#, fuzzy
+msgid "Added %d sec file offer for file %Q (%Q) to recipient %Q"
+msgstr "Toegevoegd seconden file voor file s s en"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+#, fuzzy
+msgid "private"
+msgstr "private"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+#, fuzzy
+msgid "channel notification:"
+msgstr "notificatie:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1579
+#, fuzzy
+msgid "notification"
+msgstr "notificatie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1584
+#, fuzzy
+msgid "%Q unsets avatar"
+msgstr "s s s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1591
+#, fuzzy
+msgid "%Q changes avatar to %s"
+msgstr "s s s naar s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1637
+#, fuzzy, c-format
+msgid ": No valid local copy of avatar available, requesting one (HTTP GET %s)"
+msgstr "Nee lokaal beschikbaar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1644
+#, fuzzy
+msgid ""
+": No valid local copy of avatar available; failed to start an HTTP transfer, "
+"ignoring"
+msgstr "Nee lokaal beschikbaar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1652
+#, fuzzy, c-format
+msgid ": No valid local copy of avatar available, requesting one (DCC GET %s)"
+msgstr "Nee lokaal beschikbaar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1664
+#, fuzzy
+msgid ""
+": No valid local copy of avatar available; flood limit exceeded, ignoring"
+msgstr "Nee lokaal beschikbaar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1669
+#, fuzzy
+msgid ": No valid local copy of avatar available, ignoring"
+msgstr "Nee lokaal beschikbaar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1677
+#, fuzzy
+msgid ": No such nickname in the user database, ignoring the change"
+msgstr "Nee de gebruiker de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1717
+#, fuzzy
+msgid "Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S)"
+msgstr "s s s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1759
+#, fuzzy
+msgid "Processing DCC %Q request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s)"
+msgstr "s s s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1770
+#, fuzzy, c-format
+msgid "Unable to process the above request: Cannot load DCC module (%s)"
+msgstr "naar de de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1776
+#, fuzzy
+msgid "Unable to process the above request: DCC module may be broken"
+msgstr "naar de de module naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:132
+#, fuzzy
+msgid ""
+"[Server parser]: Encountered problems while parsing the following message:"
+msgstr "Server de:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:134
+#, fuzzy
+msgid "[Server parser]: [%s][%s] %Q"
+msgstr "Server s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:136
+#, fuzzy, c-format
+msgid "[Server parser]: %s"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:98
+#, fuzzy
+msgid "Received ping from \r!s\r%Q\r (PING %Q), replied pong"
+msgstr "s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:125
+#, fuzzy, c-format
+msgid "Received pong from \r!s\r%s\r (PONG %s)"
+msgstr "s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:151
+#, fuzzy
+msgid "Server ERROR: %Q"
+msgstr "FOUT"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:174
+#, fuzzy
+msgid "Missing channel parameter in join message"
+msgstr "private"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:209
+#, fuzzy
+msgid "Received a join message for an unknown channel, possible desync"
+msgstr "voor onbekend?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:305
+#, fuzzy
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r [implicit +%c umode change]"
+msgstr "s s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:310
+#, fuzzy
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r"
+msgstr "s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:324
+#, fuzzy
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just joined \r!c\r%Q\r"
+msgstr "s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:355
+#, fuzzy
+msgid "Received a part message for an unknown channel, possible desync"
+msgstr "voor onbekend?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:384
+#, fuzzy
+msgid "You have left channel \r!c\r%Q\r"
+msgstr "U s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:386
+#, fuzzy
+msgid "You have left channel \r!c\r%Q\r: %Q"
+msgstr "U s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:402
+#, fuzzy
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r: %Q"
+msgstr "s s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:406
+#, fuzzy
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r"
+msgstr "s s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:420
+#, fuzzy
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r: %Q"
+msgstr "s s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:424
+#, fuzzy
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r"
+msgstr "s s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:494
+#, c-format
+msgid "Netsplit detected: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:546
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:562
+#, fuzzy
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"
+msgstr "s s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:589
+#, fuzzy
+msgid "Received a kick message for an unknown channel, possible desync"
+msgstr "voor onbekend?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:626
+#, fuzzy
+msgid "You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "U s door s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:633
+#, fuzzy
+msgid "Attempting to rejoin \r!c\r%Q\r..."
+msgstr "naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:670
+#, fuzzy
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@"
+"\r!h\r%Q\r]: %Q"
+msgstr "s s door s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:682
+#, fuzzy
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just been kicked from \r!c\r%Q\r by \r!n\r%Q"
+"\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "s s door s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:710
+#, fuzzy
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr "de naar it"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:776
+#, fuzzy
+msgid "Ignoring query-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "U s door s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:843
+#, fuzzy
+msgid ""
+"Spam privmsg from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%s\")"
+msgstr "s s s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:984
+#, fuzzy
+msgid "Ignoring channel-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "U s door s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1106
+#, fuzzy
+msgid "Ignoring Notice from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "U s door s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1159
+msgid "NickServ requests authentication, executing scheduled command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1162
+#, fuzzy
+msgid ""
+"The scheduled NickServ identification command appears to be broken, please "
+"change the setting"
+msgstr "commando naar it de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1213
+#, fuzzy
+msgid ""
+"Spam notice from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%Q\")"
+msgstr "s s s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1394
+#, fuzzy
+msgid "Received a topic message for an unknown channel, possible desync"
+msgstr "voor onbekend?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1413
+#, fuzzy
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has changed topic to \"%Q%c\""
+msgstr "s s s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1512
+#, fuzzy
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"
+msgstr "s s s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1063
+msgid "You have changed your nickname to %Q"
+msgstr "U heeft uw nick veranderd naar %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1477
+msgid ""
+"The target of this query was lost and has been found when \r!n\r%Q\r [%Q@\r!h"
+"\r%Q\r] changed his nickname to \r!n\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1486
+msgid ""
+"The recent nickname change from \r!n\r%Q\r to \r!n\r%Q\r caused a query "
+"collision: merging output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1495
+msgid "End of merged output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1540
+#, fuzzy
+msgid "Ignoring invite from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "U s door s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "autojoining"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "double-click the channel name to join"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1556
+#, fuzzy
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] invites you to channel \r!c\r%Q\r (%Q)"
+msgstr "s s s is aan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1564
+#, fuzzy
+msgid "Received an invite message directed to another nick, possible desync"
+msgstr "voor onbekend?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1584
+#, fuzzy
+msgid "WALLOPS from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "U s door s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1648
+#, fuzzy, c-format
+msgid "You have set user mode %s"
+msgstr "U gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1655
+#, fuzzy
+msgid "Received a mode change for an unknown channel, possible desync"
+msgstr "voor onbekend?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1731
+#, fuzzy
+msgid "%Q [%Q@%Q] has set channel key to \"\r!m-k\r%Q\r\""
+msgstr "s s s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1734
+#, fuzzy
+msgid "%Q [%Q@%Q] has unset the channel key"
+msgstr "s s s de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1754
+#, fuzzy
+msgid "%Q [%Q@%Q] has set channel \r!m-l\rlimit to %Q\r"
+msgstr "s s s naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1757
+#, fuzzy
+msgid "%Q [%Q@%Q] has unset the channel limit"
+msgstr "s s s de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1779
+#, fuzzy
+msgid "%Q [%Q@%Q] has set mode %c%c \r!n\r%Q\r"
+msgstr "s s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1787
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1834
+#, fuzzy
+msgid "%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"
+msgstr "s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1819
+#, fuzzy
+msgid "%Q [%Q@%Q] has set mode %c%c \r!m%c%c\r%Q\r"
+msgstr "s s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1860
+#, fuzzy
+msgid "%Q [%Q@%Q] has set mode %s %Q"
+msgstr "s s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1863
+#, fuzzy
+msgid "%Q [%Q@%Q] has set channel mode %s"
+msgstr "s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:147
+#, fuzzy, c-format
+msgid ""
+"One or more standard mode flags are missing in the server available modes.\n"
+"This is caused either by a non RFC1459-compliant IRC daemon or a broken "
+"server reply.\n"
+"Server umodes seem to be '%s' and channel modes seem to be '%s'.\n"
+"Ignoring this reply and assuming that the basic set of modes is available.\n"
+"If you have strange problems, try changing the server."
+msgstr ""
+"Een of de beschikbaar\n"
+" is door of\n"
+" Server naar s en naar s\n"
+" en de is beschikbaar\n"
+" de."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:159
+#, fuzzy
+msgid "Available user modes:"
+msgstr "Beschikbaar gebruiker:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:169
+#, fuzzy
+msgid ": Unknown user mode"
+msgstr "onbekend gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:177
+#, fuzzy
+msgid "Available channel modes:"
+msgstr "Beschikbaar:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:197
+#, fuzzy
+msgid "Server %Q version %S supporting user modes '%S' and channel modes '%S'"
+msgstr "Server s versie s s en s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:244
+#, fuzzy
+msgid "This server supports the WATCH notify list method, it will be used"
+msgstr "naar de naar it."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:262
+#, fuzzy
+msgid "The current network is %Q"
+msgstr "nee s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:303
+#, fuzzy
+msgid "This server supports the CODEPAGE command, it will be used"
+msgstr "naar de naar it."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:319
+#, fuzzy, c-format
+msgid "This server supports: %s"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:375
+#, fuzzy
+msgid "End of NAMES for \r!c\r%Q\r"
+msgstr "End voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:472
+#, fuzzy
+msgid "Names for \r!c\r%Q\r: %Q"
+msgstr "voor s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:487
+#, fuzzy
+msgid "(unknown)"
+msgstr "Onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:491
+#, fuzzy
+msgid "Channel topic is: %Q"
+msgstr "is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:498
+#, fuzzy
+msgid "Topic for \r!c\r%Q\r is: %Q"
+msgstr "voor s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:516
+#, fuzzy
+msgid "No channel topic is set"
+msgstr "Nee is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:521
+#, fuzzy
+msgid "No topic is set for channel \r!c\r%Q\r"
+msgstr "Nee is voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:560
+#, fuzzy
+msgid "Topic was set by %Q on %Q"
+msgstr "door s aan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:561
+#, fuzzy
+msgid "Topic was set by %Q"
+msgstr "door"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:569
+#, fuzzy
+msgid "Topic for \r!c\r%Q\r was set by %Q on %Q"
+msgstr "voor s door s aan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:572
+#, fuzzy
+msgid "Topic for \r!c\r%Q\r was set by %Q"
+msgstr "voor s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:592
+#, fuzzy
+msgid "Channel mode for \r!c\r%Q\r is %s"
+msgstr "voor s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:595
+#, fuzzy
+msgid "User mode for \r!n\r%Q\r is %s"
+msgstr "voor s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:631
+#, fuzzy
+msgid "End of channel %Q for \r!c\r%Q\r"
+msgstr "End voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:635
+#, fuzzy
+msgid "ban list"
+msgstr "Activeren URL-adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:636
+#, fuzzy
+msgid "invite list"
+msgstr "Opslaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:637
+#, fuzzy
+msgid "ban exception list"
+msgstr "Actief"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:658
+#, fuzzy
+msgid "%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"
+msgstr "voor s s door s aan s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:665
+#, fuzzy
+msgid "Ban listing"
+msgstr "Activeren URL-adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:668
+#, fuzzy
+msgid "Invite listing"
+msgstr "samenvoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:671
+#, fuzzy
+msgid "Ban exception listing"
+msgstr "Actief"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:740
+#, fuzzy
+msgid ""
+"WHO entry for %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cChannel%c: \r!c\r%Q\r, %"
+"cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAway%c: %Q, %cReal name"
+"%c: %Q"
+msgstr "voor s s s s s s s naam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:797
+#, fuzzy
+msgid "End of WHO list for %Q"
+msgstr "End voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:856
+msgid ""
+"Something really weird is happening: the server is refusing all the login "
+"nicknames..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:861
+msgid ""
+"The server is refusing all the login nicknames: giving up, you must send the "
+"nickname manually"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:871
+#, fuzzy
+msgid "No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."
+msgstr "Nee naar login s s s."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:945
+msgid "Command syntax %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:973
+#, fuzzy
+msgid "Tip: %Q"
+msgstr "Koppeling"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:976
+#, fuzzy
+msgid "Tip for %Q: %Q"
+msgstr "voor s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:993
+#, fuzzy
+msgid "End of help about %Q"
+msgstr "End voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1037
+#, fuzzy
+msgid "%c\r!n\r%Q\r%c is away: %Q"
+msgstr "s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1090
+#, fuzzy
+msgid "%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "s is s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1095
+#, fuzzy
+msgid "%c\r!n\r%Q\r%c's real name: %Q"
+msgstr "s s naam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1115
+#, fuzzy
+msgid "%c\r!n\r%Q\r%c was %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "s is s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1119
+#, fuzzy
+msgid "%c\r!n\r%Q\r%c's real name was: %Q"
+msgstr "s s naam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1183
+#, fuzzy
+msgid "%c\r!n\r%Q\r%c's channels: %Q"
+msgstr "s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1220
+#, fuzzy
+msgid "Received a broken RPL_WHOISIDLE, can't evaluate the idle time"
+msgstr "de idle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1230
+#, fuzzy
+msgid "%c\r!n\r%Q\r%c's idle time: %ud %uh %um %us"
+msgstr "s s idle tijd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1240
+#, fuzzy
+msgid "%c\r!n\r%Q\r%c's signon time: %Q"
+msgstr "s s tijd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1274
+#, fuzzy
+msgid "%c\r!n\r%Q\r%c's server: \r!s\r%Q\r - %Q"
+msgstr "s s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1293
+#, fuzzy
+msgid "%c\r!n\r%Q\r%c is authenticated as %Q"
+msgstr "s s naam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1325
+#, fuzzy
+msgid "%c\r!n\r%Q\r%c's info: %Q"
+msgstr "s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1372
+#, fuzzy
+msgid "%c\r!n\r%Q\r%c WHOIS info from \r!s\r%Q\r"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1389
+#, fuzzy
+msgid "%c\r!n\r%Q\r%c WHOWAS info from \r!s\r%Q\r"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1457
+#, fuzzy
+msgid "Can't evaluate creation time"
+msgstr "de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1465
+#, fuzzy
+msgid "Channel was created at %Q"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1470
+#, fuzzy
+msgid "Channel \r!c\r%Q\r was created at %Q"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1511
+msgid "USERHOST info: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1532
+msgid "Channel list begin: channel, users, topic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1559
+#, fuzzy
+msgid "List: %Q"
+msgstr "Koppeling"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1573
+#, fuzzy
+msgid "End of LIST"
+msgstr "End"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1597
+#, fuzzy
+msgid "Link: %Q"
+msgstr "Koppeling"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1612
+msgid "End of LINKS"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1641
+msgid "[Leaving away status after %ud %uh %um %us]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1645
+msgid "[Leaving away status]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1652
+#, fuzzy
+msgid "Restoring pre-away nickname (%Q)"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1672
+msgid "[Entering away status]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1690
+#, fuzzy
+msgid "Setting away nickname (%Q)"
+msgstr "Server s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1762
+#, fuzzy, c-format
+msgid "%c\r!s\r%s\r%c's server info: %s"
+msgstr "s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1773
+#, fuzzy, c-format
+msgid "%c\r!s\r%s\r%c's administrator is %s"
+msgstr "s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1784
+#, fuzzy, c-format
+msgid "%c\r!s\r%s\r%c's contact adress is %s"
+msgstr "s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1812
+#, fuzzy
+msgid "\r!n\r%Q\r invited %Q into channel %Q"
+msgstr "s s s is aan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1834
+#, fuzzy, c-format
+msgid "%c\r!s\r%s\r%c's information:"
+msgstr "s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1844
+#, c-format
+msgid "End of %c\r!s\r%s\r%c's information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1855
+#, fuzzy
+msgid "%c\r!s\r%s\r%c's time is %Q"
+msgstr "s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1866
+msgid "%Q: no such server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1877
+#, fuzzy
+msgid "%Q: no such channel"
+msgstr "s Nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1891
+#, fuzzy
+msgid "Cannot sent to channel: %Q"
+msgstr "Nee is voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1894
+#, fuzzy
+msgid "Cannot sent text to channel %Q: %Q"
+msgstr "U s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1909
+#, fuzzy
+msgid "Cannot sent to channel"
+msgstr "venster is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1912
+#, fuzzy
+msgid "Cannot sent text to channel %Q"
+msgstr "Nee is voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1928
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1936
+#, fuzzy
+msgid "Your encoding is now %Q"
+msgstr "U gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1967
+#, fuzzy
+msgid "%c\r!n\r%Q\r%c's codepage is %Q: %Q"
+msgstr "s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1991
+#, fuzzy, c-format
+msgid "Your user mode is %s"
+msgstr "U gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:158
+msgid "Failed to set the encoding to %Q: mapping not available."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:175
+#, fuzzy
+msgid "Changed text encoding to %Q"
+msgstr "de naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:503
+#, fuzzy
+msgid "Connection to server lost"
+msgstr "Maximale tijd om te verbinden overschreden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:512
+#, fuzzy
+msgid "Connection to server established"
+msgstr "Verbinding s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:573
+#, fuzzy
+msgid "[LINK WARNING]: Socket message truncated to 512 bytes."
+msgstr "naar bytes."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:640
+#, fuzzy
+msgid ""
+"The server seems to support the WATCH notify list method, will try to use it"
+msgstr "naar de naar it."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:688
+#, fuzzy
+msgid "Can't resolve local host address, using user supplied one (%Q)"
+msgstr "lokaal gebruiker s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:695
+#, fuzzy
+msgid "Can't resolve local host address, using default 127.0.0.1"
+msgstr "lokaal standaard"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:701
+#, fuzzy
+msgid "Local host address is %Q"
+msgstr "Lokaal is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:749
+msgid "The server seems to have changed the idea about the local hostname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:750
+msgid ""
+"You're probably using a broken bouncer or maybe something weird is happening "
+"on the IRC server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:776
+msgid ""
+"Here goes your \"broken bouncer hack\": The server has changed the hostname "
+"but I'll ignore the IP address change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:791
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:801
+#, fuzzy
+msgid "The local IP address as seen by the IRC server is %Q"
+msgstr "de proxy s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:815
+#, fuzzy
+msgid "Can't start the DNS slave thread"
+msgstr "de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:816
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:846
+#, fuzzy
+msgid "Unable to resolve the local hostname as seen by the IRC server: %Q"
+msgstr "de proxy s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:822
+#, fuzzy
+msgid "Looking up the local hostname as seen by the IRC server (%Q)"
+msgstr "de proxy s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:843
+#, fuzzy
+msgid ""
+"Unable to resolve the local hostname as seen by the IRC server: %Q, using "
+"previously resolved %Q"
+msgstr "de proxy s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:850
+#, fuzzy
+msgid "Local hostname as seen by the IRC server resolved to %Q"
+msgstr "de proxy s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:868
+#, fuzzy
+msgid "Using server specific username (%Q)"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:873
+#, fuzzy
+msgid "Using network specific username (%Q)"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:892
+#, fuzzy
+msgid "Using reconnect specific nickname (%Q)"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:898
+#, fuzzy
+msgid "Using server specific nickname (%Q)"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:905
+#, fuzzy
+msgid "Using network specific nickname (%Q)"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:922
+#, fuzzy
+msgid "Using server specific real name (%Q)"
+msgstr "naam s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:929
+#, fuzzy
+msgid "Using network specific real name (%Q)"
+msgstr "naam s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:946
+#, fuzzy
+msgid "Logging in as %Q!%Q :%Q"
+msgstr "Loggen s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:962
+#, fuzzy, c-format
+msgid "Sending %s as password"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1033
+msgid "Executing scheduled network specific \"on connect\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1042
+msgid "Executing scheduled server specific \"on connect\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1051
+msgid "Executing scheduled identity specific \"on connect\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1101
+#, fuzzy, c-format
+msgid "The server refused the suggested nickname (%s) and named you %s instead"
+msgstr "de s en s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1113
+#, fuzzy
+msgid "Login operations complete, happy ircing!"
+msgstr "Login!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1123
+msgid "Executing scheduled network specific \"on login\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1132
+msgid "Executing scheduled server specific \"on login\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1141
+msgid "Executing scheduled identity specific \"on login\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1153
+#, fuzzy
+msgid "Setting configured user mode"
+msgstr "Instelling gebruiker."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1210
+#, fuzzy
+msgid "Auto-joining network specific channels"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1244
+#, fuzzy
+msgid "Auto-joining server specific channels"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1341
+#, fuzzy
+msgid "Updating away state for channel %Q"
+msgstr "Nee is voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_customtoolbardescriptor.cpp:230
+msgid "Backward compatibility action for toolbar.define"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:790
+msgid "Installation problems ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:791
+msgid ""
+"<b>Ooops...</b><br><br><b>There are some reasons that make me think that "
+"your KVIrc installation is incomplete.</b><br><br>I might be wrong, but you "
+"seem to miss some of the features that the default KVIrc script provides."
+"This may happen because you have upgraded to an unstable cvs version, "
+"because you have accidentally deleted or damaged your configuration files, "
+"because you have installed an incomplete script or because you have hit a "
+"bug in KVIrc.<br><br>I can repeat the installation of the default script in "
+"order to restore the missing features.<br><b>Do you want the default script "
+"to be restored ?</b><br><br><font size=\"-1\">Hint: If you're a scripter and "
+"have intentionally removed some of the scripting features then you may "
+"safely click on \"No and Don't Ask Me Again\", otherwise it might be a good "
+"idea to click \"Yes\". If you still want to choose \"No\" you can always "
+"restore the default script by choosing the appropriate entry from the "
+"\"Scripting\" menu.</font>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:805
+msgid "No and Don't Ask Me Again"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:828
+msgid "Restore Default Script - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:829
+msgid ""
+"You are about to restore the default script.<br>This will erase any script "
+"changes you have made.<br>Do you wish to proceed?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:872
+#, c-format
+msgid "Remote command received (%s ...)"
+msgstr "Commando van de andere kant ontvangen (%s ...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1033
+#, fuzzy
+msgid "File download failed"
+msgstr "Ophalen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1035
+#, fuzzy
+msgid "File download from %1 failed"
+msgstr "Laden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1044
+#, fuzzy
+msgid "File download successfully complete"
+msgstr "Ophalen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1046
+#, fuzzy
+msgid "File download from %1 successfully complete"
+msgstr "Laden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1066
+msgid "Avatar download failed for %Q!%Q@%Q and url %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2014
+#, fuzzy, c-format
+msgid "The commandline for media type '%s' seems to be broken"
+msgstr "voor s naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2018
+#, fuzzy, c-format
+msgid "Media type of file %s matched to '%s' but no commandline specified"
+msgstr "file s naar s nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2023
+#, fuzzy, c-format
+msgid "No idea on how to play file %s (no media type match)"
+msgstr "Nee aan naar spelen file s nee overeenkomstig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:39
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:48
+#, fuzzy, c-format
+msgid "[SSL]: %c%s"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:40
+#, c-format
+msgid "[SSL]: Cipher: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:41
+#, c-format
+msgid "[SSL]: Version: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:42
+#, c-format
+msgid "[SSL]: Bits: %c%d (%d used)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:49
+#, c-format
+msgid "[SSL]: Version: %c%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:50
+#, c-format
+msgid "[SSL]: Serial number: %c%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:51
+msgid "[SSL]: Subject:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:59
+#, c-format
+msgid "[SSL]: Common name: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:60
+#, c-format
+msgid "[SSL]: Organization: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:61
+#, c-format
+msgid "[SSL]: Organizational unit: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:62
+#, c-format
+msgid "[SSL]: Country: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:63
+#, c-format
+msgid "[SSL]: State or province: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:64
+#, c-format
+msgid "[SSL]: Locality: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:58
+msgid "[SSL]: Issuer:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:65
+#, c-format
+msgid "[SSL]: Public key: %c%s (%d bits)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:66
+#, c-format
+msgid "[SSL]: Signature type: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:73
+#, c-format
+msgid "[SSL]: Signature contents: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:82
+msgid "Peer X509 certificate"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:85
+msgid "[SSL]: The peer didn't provide a certificate"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1219
+msgid "Current transmission cipher"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:92
+msgid "[SSL]: Can't find out the current cipher info"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:113
+#, c-format
+msgid "[%s]: [SSL]: Using certificate file %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:116
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the certificate file %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:146
+#, fuzzy, c-format
+msgid "[%s]: [SSL ERROR]: %s"
+msgstr "FOUT"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:136
+#, c-format
+msgid "[%s]: [SSL]: Using private key file %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:139
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the private key file %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:375
+#, fuzzy
+msgid "Reconnect attempt aborted"
+msgstr "Maximale tijd om te verbinden overschreden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:443
+msgid ""
+"This is the first connection in this IRC context: using the global server "
+"setting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:483
+#, fuzzy
+msgid ""
+"No servers available. Check the options dialog or use the /SERVER command"
+msgstr ""
+"Geen server beschikbaar: controleer het optie venster of gebruik het /SERVER "
+"commando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:491
+msgid ""
+"Ooops.. you've hit a bug in the servers database... I have found a server "
+"but not a network..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:504
+#, fuzzy
+msgid "No proxy hosts available, resuming direct connection"
+msgstr "Geen proxy beschikbaar: verderzetten van directe verbinding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:582
+#, fuzzy, c-format
+msgid "Connection attempt failed [%s]"
+msgstr "Verbinding s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:600
+#, c-format
+msgid "Will attempt to reconnect in %d seconds"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:604
+#, c-format
+msgid "%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:606
+#, c-format
+msgid "%d of %d"
+msgstr "%d aan %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:633
+#, c-format
+msgid "Maximum number of reconnect attempts reached (%d): giving up"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:647
+msgid ""
+"The connection attempt failed while using a cached IP address for the "
+"current server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:648
+msgid "The problem *might* be caused by an updated DNS entry"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:649
+msgid "Try reconnecting with caching disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:673
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:382
+#, fuzzy
+msgid "%Q established [%s (%s:%u)]"
+msgstr "Verbinding s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+#, fuzzy
+msgid "Secure connection"
+msgstr "Geen verbinding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+#, fuzzy
+msgid "Connection"
+msgstr "Verbinding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:779
+#, fuzzy, c-format
+msgid "Connection terminated [%s (%s:%u)]"
+msgstr "Verbinding s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:791
+msgid "The connection terminated unexpectedly. Trying to reconnect..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:874
+#, fuzzy
+msgid "Sent QUIT, waiting for the server to close the connection..."
+msgstr ""
+"Verzonden van de QUIT.... wachten op de server om de verbinding te sluiten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:685
+#, fuzzy
+msgid "Normal text"
+msgstr "Normaal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:686
+#, fuzzy
+msgid "Selection"
+msgstr "Nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:687
+#, fuzzy
+msgid "Highlighted text"
+msgstr "M&inimaliseren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:688
+#, fuzzy
+msgid "URL foreground"
+msgstr "url"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:689
+#, fuzzy
+msgid "Link overlay foreground"
+msgstr "koppeling"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:690
+#, fuzzy
+msgid "Parser error"
+msgstr "Plakken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:691
+#, fuzzy
+msgid "Parser warning"
+msgstr "[parser waarschuwing in '%s'] : %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:692
+msgid "Host lookup result"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:693
+#, fuzzy
+msgid "Socket message"
+msgstr "samenvoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:694
+#, fuzzy
+msgid "Socket warning"
+msgstr "Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:695
+#, fuzzy
+msgid "Socket error"
+msgstr "Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:696
+#, fuzzy
+msgid "System error"
+msgstr "systeemfout"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:697
+#, fuzzy
+msgid "Raw data to server"
+msgstr "naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:698
+#, fuzzy
+msgid "Connection status"
+msgstr "verbinding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:699
+msgid "System warning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:700
+#, fuzzy
+msgid "System message"
+msgstr "Bericht verzenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:701
+msgid "Unhandled server reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:702
+#, fuzzy
+msgid "Server information"
+msgstr "Algemene opties"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:703
+#, fuzzy
+msgid "Server Message of the Day"
+msgstr "de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:704
+#, fuzzy
+msgid "Server ping"
+msgstr "Algemene opties"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:705
+#, fuzzy
+msgid "Join message"
+msgstr "samenvoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:706
+#, fuzzy
+msgid "Part message"
+msgstr "Bericht verzenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:707
+#, fuzzy
+msgid "Unrecognized/broken message"
+msgstr "onherkend proxy antwoord"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:708
+#, fuzzy
+msgid "Topic message"
+msgstr "samenvoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:709
+#, fuzzy
+msgid "Own private message"
+msgstr "private"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:710
+#, fuzzy
+msgid "Channel private message"
+msgstr "private"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:711
+#, fuzzy
+msgid "Query private message"
+msgstr "private"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:712
+msgid "CTCP reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:713
+msgid "CTCP request replied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:714
+msgid "CTCP request ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:715
+msgid "CTCP request flood warning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:716
+msgid "CTCP request unknown"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:717
+#, fuzzy
+msgid "User action"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:718
+#, fuzzy
+msgid "Avatar change"
+msgstr "Accepteren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:719
+#, fuzzy
+msgid "Quit message"
+msgstr "samenvoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:720
+#, fuzzy
+msgid "Split message"
+msgstr "samenvoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:721
+#, fuzzy
+msgid "Quit on netsplit message"
+msgstr "aan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:722
+#, fuzzy
+msgid "Nick changes"
+msgstr "Negeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:723
+msgid "+o mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:724
+msgid "-o mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:725
+msgid "+v mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:726
+msgid "-v mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:727
+#, fuzzy
+msgid "Multiple user mode change"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:728
+#, fuzzy
+msgid "Channel key change"
+msgstr "I"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:729
+#, fuzzy
+msgid "Channel limit change"
+msgstr "private"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:730
+msgid "+b mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:731
+msgid "-b mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:732
+msgid "+e mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:733
+#, fuzzy
+msgid "-e mode change"
+msgstr "I"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:734
+#, fuzzy
+msgid "+I mode change"
+msgstr "I"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:735
+#, fuzzy
+msgid "-I mode change"
+msgstr "I"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:736
+#, fuzzy
+msgid "Multiple channel mode change"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:737
+#, fuzzy
+msgid "Who reply"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:738
+#, fuzzy
+msgid "DCC request"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:739
+#, fuzzy
+msgid "DCC message"
+msgstr "Bericht verzenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:740
+msgid "DCC error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:741
+#, fuzzy
+msgid "Nickname problem"
+msgstr "Bijnaam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:742
+#, fuzzy
+msgid "Whois user reply"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:743
+#, fuzzy
+msgid "Whois channels reply"
+msgstr "overig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:744
+#, fuzzy
+msgid "Whois idle reply"
+msgstr "idle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:745
+#, fuzzy
+msgid "Whois server reply"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:746
+#, fuzzy
+msgid "Whois other reply"
+msgstr "overig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:747
+#, fuzzy
+msgid "Channel creation time reply"
+msgstr "tijd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:748
+#, fuzzy
+msgid "Notify list joins"
+msgstr "Notificatie lijst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:749
+#, fuzzy
+msgid "Notify list leaves"
+msgstr "Notificatie lijst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:750
+#, fuzzy
+msgid "Own encrypted private message"
+msgstr "private"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:751
+#, fuzzy
+msgid "Channel encrypted private message"
+msgstr "private"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:752
+#, fuzzy
+msgid "Query encrypted private message"
+msgstr "private"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:753
+msgid "DCC chat message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:754
+#, fuzzy
+msgid "Encrypted DCC chat message"
+msgstr "private"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:755
+#, fuzzy
+msgid "Login operations completed"
+msgstr "login"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:756
+#, fuzzy
+msgid "Kick action"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:757
+msgid "Links reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:758
+#, fuzzy
+msgid "Spam report"
+msgstr "Zoeken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:759
+msgid "ICQ message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:760
+#, fuzzy
+msgid "ICQ user-message"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:761
+#, fuzzy
+msgid "Outgoing ICQ user-message"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:762
+#, fuzzy
+msgid "Channel notice"
+msgstr "Kanaal mode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:763
+#, fuzzy
+msgid "Encrypted channel notice"
+msgstr "End voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:764
+#, fuzzy
+msgid "Query notice"
+msgstr "Ondervraging"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:765
+#, fuzzy
+msgid "Encrypted query notice"
+msgstr "s voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:766
+#, fuzzy
+msgid "Server notice"
+msgstr "s Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:767
+#, fuzzy
+msgid "Halfop mode change"
+msgstr "I"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:768
+#, fuzzy
+msgid "Unknown CTCP reply"
+msgstr "onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:769
+#, fuzzy
+msgid "NickServ message"
+msgstr "Bericht verzenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:770
+#, fuzzy
+msgid "ChanServ message"
+msgstr "private"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:771
+#, fuzzy
+msgid "Away message"
+msgstr "Bericht verzenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:772
+#, fuzzy
+msgid "Ident message"
+msgstr "samenvoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:773
+#, fuzzy
+msgid "Channel list message"
+msgstr "private"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:774
+#, fuzzy
+msgid "Half-deop mode change"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:775
+#, fuzzy
+msgid "Invite message"
+msgstr "samenvoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:776
+#, fuzzy
+msgid "Multimedia message"
+msgstr "Bericht verzenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:777
+#, fuzzy
+msgid "Query trace message"
+msgstr "private"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:778
+#, fuzzy
+msgid "Wallops message"
+msgstr "samenvoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:779
+#, fuzzy
+msgid "Join error message"
+msgstr "samenvoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:780
+#, fuzzy
+msgid "Broadcast private message"
+msgstr "private"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:781
+msgid "Broadcast notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:782
+msgid "Am kicked"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:783
+msgid "Am op'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:784
+#, fuzzy
+msgid "Am voiced"
+msgstr "Karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:785
+msgid "Am deop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:786
+#, fuzzy
+msgid "Am devoiced"
+msgstr "Karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:787
+msgid "Am halfop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:788
+msgid "Am de-halfop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:789
+msgid "Ban matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:790
+msgid "Unban matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:791
+#, fuzzy
+msgid "Ban exception matching my mask"
+msgstr "Actief"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:792
+#, fuzzy
+msgid "Ban unexception matching my mask"
+msgstr "Actief"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:793
+#, fuzzy
+msgid "Invite exception matching my mask"
+msgstr "Actief"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:794
+msgid "Invite unexception matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:795
+#, fuzzy
+msgid "Ignored user message"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:796
+#, fuzzy
+msgid "Server statistics"
+msgstr "s Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:797
+#, fuzzy
+msgid "SSL message"
+msgstr "Bericht verzenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:108
+#, fuzzy
+msgid "Search"
+msgstr "Zoeken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:799
+#, fuzzy
+msgid "Generic success"
+msgstr "verbinding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:800
+#, fuzzy
+msgid "Generic status"
+msgstr "verbinding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:801
+#, fuzzy
+msgid "Generic verbose message"
+msgstr "private"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:802
+msgid "Generic warning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:803
+#, fuzzy
+msgid "Generic error"
+msgstr "Interne fout"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:804
+#, fuzzy
+msgid "Generic critical error"
+msgstr "Interne fout"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:805
+#, fuzzy
+msgid "Chan admin status set"
+msgstr "notificatie:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:806
+#, fuzzy
+msgid "Chan admin status unset"
+msgstr "notificatie:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:807
+#, fuzzy
+msgid "Own chan admin status set"
+msgstr "notificatie:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:808
+#, fuzzy
+msgid "Own chan admin status unset"
+msgstr "notificatie:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:809
+#, fuzzy
+msgid "Userop mode change"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:810
+#, fuzzy
+msgid "User-deop mode change"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:811
+msgid "Am userop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:812
+msgid "Am de-userop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:813
+msgid "Verbose/Debug"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:814
+#, fuzzy
+msgid "Chan owner status set"
+msgstr "notificatie:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:815
+#, fuzzy
+msgid "Chan owner status unset"
+msgstr "notificatie:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:816
+#, fuzzy
+msgid "Own chan owner status set"
+msgstr "notificatie:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:817
+#, fuzzy
+msgid "Own chan owner status unset"
+msgstr "notificatie:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:818
+#, fuzzy
+msgid "Server error"
+msgstr "Plakken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:22
+#, fuzzy
+msgid "Help"
+msgstr "&Help"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:820
+#, fuzzy
+msgid "Text Encoding Server message"
+msgstr "samenvoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:826
+#, fuzzy
+msgid "BitTorrent message"
+msgstr "samenvoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:970
+msgid "Missing absolute directory for the theme information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:978
+#, fuzzy
+msgid "Failed to create the theme directory"
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1061
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1096
+#, fuzzy
+msgid "Failed to save one of the theme images"
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1074
+#, fuzzy
+msgid "Failed to create the theme subdirectory"
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1213
+msgid "Boolean options (1/0)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1214
+#, fuzzy
+msgid "Rectangle options (x,y,width,height)"
+msgstr "Rechthoek x breedte hoogte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1215
+#, fuzzy
+msgid "String options (string value)"
+msgstr "Tekenreeks"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1216
+#, fuzzy
+msgid "Color options (#RRGGBB)"
+msgstr "Kleur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1217
+msgid "Mirccolor options (#RRGGBB)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1218
+#, fuzzy
+msgid "Irc context color options (#RRGGBB)"
+msgstr "kleur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1219
+#, fuzzy
+msgid "Pixmap options (image path)"
+msgstr "Pixmap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1220
+msgid "Unsigned integer options (unsigned integer constant)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1221
+#, fuzzy
+msgid "Font options (family,pointsize,style,charset,weight,flags (biusf))"
+msgstr "Lettertype stijl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1222
+#, fuzzy
+msgid "Message color options (image_id,foreground,background,logFlag (0/1))"
+msgstr "Bericht kleur id achtergrond"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1223
+#, fuzzy
+msgid "String list options (comma separated list of strings)"
+msgstr "Tekenreeks"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+#, fuzzy
+msgid "IRC Context related actions"
+msgstr "&Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+#, fuzzy
+msgid "Generic"
+msgstr "Algemeen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+#, fuzzy
+msgid "Generic actions"
+msgstr "Algemene opties"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+#, fuzzy
+msgid "Settings"
+msgstr "&Status"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Actions related to settings"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:30
+#, fuzzy
+msgid "Scripting"
+msgstr "Beschrijving"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+msgid "Scripting related actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "GUI"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "Actions related to the Graphic User Interface"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:77
+#, fuzzy
+msgid "Channel"
+msgstr "Annuleren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+#, fuzzy
+msgid "IRC Channel related actions"
+msgstr "&Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+#, fuzzy
+msgid "Tools"
+msgstr "H&ulpmiddelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Actions that will appear in the \"Tools\" menu"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:157
+msgid "Sending out PING based lag probe"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:167
+msgid "Sending out CTCP based lag probe"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:188
+#, c-format
+msgid "Registered lag check with reliability %u (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:220
+#, c-format
+msgid "Lag check completed (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:259
+#, c-format
+msgid "Lag check aborted (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:143
+#, fuzzy
+msgid "Hostname resolution aborted"
+msgstr "Verbinding geanuleerd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:156
+#, fuzzy
+msgid "Attempting %Q to %Q (%Q) on port %u"
+msgstr "proberen te verbinding naar %w (%s) aan poort %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+#, fuzzy
+msgid "secure connection"
+msgstr "Geen verbinding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+#, fuzzy
+msgid "connection"
+msgstr "Verbinding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:165
+#, fuzzy, c-format
+msgid "Attempting to 'bounce' on proxy %s on port %u (protocol %s)"
+msgstr "naar onbestelbaar aan proxy s aan poort s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:194
+#, fuzzy, c-format
+msgid "Using cached proxy IP address (%s)"
+msgstr "proxy IP s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:237
+#, fuzzy
+msgid "Unable to look up the IRC proxy hostname: Can't start the DNS slave"
+msgstr "naar de proxy de DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:265
+#, fuzzy
+msgid "Resuming direct server connection"
+msgstr "Bezig met hervatten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:248
+#, fuzzy, c-format
+msgid "Looking up the proxy hostname (%s)..."
+msgstr "de proxy s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:261
+#, fuzzy
+msgid "Can't find the proxy IP address: %Q"
+msgstr "de proxy IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:271
+#, fuzzy
+msgid "Proxy hostname resolved to %Q"
+msgstr "Proxy naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:284
+#, fuzzy
+msgid "Proxy %Q has a nickname: %Q"
+msgstr "Proxy s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:322
+#, fuzzy, c-format
+msgid "Using cached server IP address (%s)"
+msgstr "IP s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:354
+#, fuzzy
+msgid "Unable to look up the server hostname: Can't start the DNS slave"
+msgstr "naar de de DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:359
+#, fuzzy, c-format
+msgid "Looking up the server hostname (%s)..."
+msgstr "de s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:373
+#, fuzzy
+msgid "Can't find the server IP address: %Q"
+msgstr "de IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:380
+msgid "If this server is an IPv6 one, try /server -i %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:390
+#, fuzzy
+msgid "Server hostname resolved to %Q"
+msgstr "Server naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:400
+#, fuzzy
+msgid "Real hostname for %Q is %Q"
+msgstr "Bekend voor s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:414
+#, fuzzy
+msgid "Server %Q has a nickname: %Q"
+msgstr "Server s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:468
+#, fuzzy
+msgid "The specified bind address (%Q) is not valid"
+msgstr "s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:473
+#, fuzzy
+msgid ""
+"The specified bind address (%Q) is not valid (the interface it refers to "
+"might be down)"
+msgstr "s is de it naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:493
+#, fuzzy, c-format
+msgid "The system-wide IPv6 bind address (%s) is not valid"
+msgstr "s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:500
+#, fuzzy, c-format
+msgid ""
+"The system-wide IPv6 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr "s is de it naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:522
+#, fuzzy, c-format
+msgid "The system-wide IPv4 bind address (%s) is not valid"
+msgstr "s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:529
+#, fuzzy, c-format
+msgid ""
+"The system-wide IPv4 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr "s is de it naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:230
+#, fuzzy
+msgid "Channel operators"
+msgstr "Scheider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:231
+#, fuzzy
+msgid "Voiced users"
+msgstr "Zoeken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:232
+#, fuzzy
+msgid "Half-operators"
+msgstr "Scheider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:233
+msgid "Ban masks"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:234
+msgid "Color free (no ANSI colors)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:235
+#, fuzzy
+msgid "Ban exception masks"
+msgstr "Actief"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:236
+msgid "Invite exception masks or forbid /INVITE"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:237
+#, fuzzy
+msgid "Secret"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:238
+#, fuzzy
+msgid "Private"
+msgstr "private"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:239
+msgid "Topic change restricted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:240
+msgid "Invite only"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:241
+#, fuzzy
+msgid "No external messages"
+msgstr "nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:242
+msgid "Anonymous or protected user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:243
+#, fuzzy
+msgid "Quiet or channel owner"
+msgstr "onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:244
+msgid "Limited number of users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:245
+msgid "Key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:246
+#, fuzzy
+msgid "Moderated"
+msgstr "beheerd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:247
+#, fuzzy
+msgid "Registered"
+msgstr "Negeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:248
+msgid "Censor swear words"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:249
+msgid "Impossible to speak and change nick if not authenticated with NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:250
+msgid "Impossible to change nick if not authenticated with NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:251
+msgid "Only registered nicks can join"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:252
+msgid "No kicks able (unless U-Line)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:253
+msgid "IRC-Op only channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:254
+msgid "Server/Network/Tech Admin only channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:255
+msgid "Forbid /KNOCK"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:256
+#, fuzzy
+msgid "Strip colors"
+msgstr "Cursor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:257
+#, fuzzy
+msgid "Redirect on channel full"
+msgstr "Accepteren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:258
+msgid "Forbid channel CTCPs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:259
+msgid "User-operators OR Auditorium: /NAMES and /WHO show only ops"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:260
+msgid "Only 7-bit letters in nicknames allowed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:261
+msgid "Impossible to use both 7-bit and 8-bit letters in nicknames"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:270
+#, fuzzy
+msgid "o: IRC operator (OPER)"
+msgstr "lokaal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:271
+#, fuzzy
+msgid "O: Local IRC operator (LOCOP)"
+msgstr "lokaal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:272
+#, fuzzy
+msgid "i: Invisible"
+msgstr "zichtbaar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:273
+#, fuzzy
+msgid "w: Recipient for WALLOPS messages"
+msgstr "voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:274
+#, fuzzy
+msgid ""
+"r: User with restricted connection (or recipient for messages about rejected "
+"bots)"
+msgstr "gebruiker door verbinding of voor berichten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:275
+#, fuzzy
+msgid "s: Recipient for server notices"
+msgstr "s voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:276
+#, fuzzy
+msgid "z: Recipient for oper wallop messages"
+msgstr "voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:277
+#, fuzzy
+msgid "c: Recipient for cconn messages"
+msgstr "voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:278
+#, fuzzy
+msgid "k: Recipient for server kill messages"
+msgstr "voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:279
+#, fuzzy
+msgid "f: Recipient for full server notices"
+msgstr "voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:280
+msgid "y: Spy :)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:281
+msgid "d: Obscure 'DEBUG' flag"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:282
+#, fuzzy
+msgid "n: Recipient for nick changes"
+msgstr "voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:100
+msgid "Ops... for some reason the link filter object has been destroyed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:138
+msgid "Using filtered IRC protocol: Link filter is \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:143
+msgid "Failed to set up the link filter \"%Q\", will try with plain IRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:202
+#, fuzzy
+msgid "Failed to start the connection: %Q"
+msgstr "Faalde naar de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:368
+#, fuzzy
+msgid "Contacting %Q %s (%s) on port %u"
+msgstr "s s s aan poort"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+#, fuzzy
+msgid "proxy host"
+msgstr "proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+#, fuzzy
+msgid "IRC server"
+msgstr "Kopiëren..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:375
+#, fuzzy, c-format
+msgid "Low-level transport connection established [%s (%s:%u)]"
+msgstr "Verbinding s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:379
+msgid "Starting Secure Socket Layer handshake"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+#, fuzzy
+msgid "Secure proxy connection"
+msgstr "proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+#, fuzzy
+msgid "Proxy connection"
+msgstr "Geen verbinding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:387
+#, fuzzy
+msgid "Negotiating relay information"
+msgstr "proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:390
+#, fuzzy
+msgid "Sent connection request, waiting for acknowledgement"
+msgstr "Verzonden verbinding voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:393
+#, fuzzy
+msgid "Sent target host data, waiting for acknowledgement"
+msgstr "Verzonden voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:396
+#, fuzzy
+msgid "Sent auth method request, waiting for acknowledgement"
+msgstr "Verzonden voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:399
+#, fuzzy
+msgid "Sent username and password, waiting for acknowledgement"
+msgstr "Verzonden en wachtwoord voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:402
+#, fuzzy
+msgid "Sent connection request, waiting for \"HTTP 200\" acknowledgement"
+msgstr "Verzonden verbinding voor HTTP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:176
+#, fuzzy
+msgid "[SSL]: %Q"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:181
+#, fuzzy
+msgid "[SSL ERROR]: %Q"
+msgstr "FOUT"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:190
+#, fuzzy
+msgid "[PROXY]: %Q"
+msgstr "FOUT"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:200
+#, fuzzy
+msgid "[PROXY ERROR]: %Q"
+msgstr "FOUT"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:207
+#, fuzzy
+msgid "[SOCKET]: %Q"
+msgstr "FOUT"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:212
+#, fuzzy
+msgid "[SOCKET ERROR]: %Q"
+msgstr "FOUT"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:218
+#, fuzzy
+msgid "[SOCKET WARNING]: %Q"
+msgstr "FOUT"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:337
+#, fuzzy, c-format
+msgid "Binding to local address %s"
+msgstr "naar lokaal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:341
+#, fuzzy, c-format
+msgid ""
+"Binding to local address %s failed: the kernel will choose the correct "
+"interface"
+msgstr "naar lokaal s de kiezen de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:637
+#, fuzzy
+msgid "Using HTTP protocol."
+msgstr "HTTP proxy."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:683
+#, fuzzy
+msgid "Using SOCKSV4 protocol."
+msgstr "proxy."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:756
+#, fuzzy
+msgid "Using SOCKSv5 protocol."
+msgstr "proxy."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:771
+#, fuzzy
+msgid "We can accept auth method 0 (no auth)"
+msgstr "nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:779
+#, fuzzy
+msgid "We can accept auth method 0 (no auth) or 2 (user/pass)"
+msgstr "nee of gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:958
+#, fuzzy
+msgid "Proxy response: auth OK: access granted"
+msgstr "Proxy OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:993
+#, fuzzy
+msgid "Proxy response: Auth method OK: using method 0 (no auth)"
+msgstr "Proxy OK nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1000
+#, fuzzy
+msgid "Proxy response: Auth method OK: using method 2 (user/pass)"
+msgstr "Proxy OK gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1056
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1113
+#, fuzzy
+msgid "Proxy response: target data OK: request granted"
+msgstr "Proxy OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1153
+#, fuzzy
+msgid "Proxy response: "
+msgstr "Proxy "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1164
+#, fuzzy
+msgid "Proxy said something about: \n"
+msgstr "Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1205
+msgid "Server X509 certificate"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1209
+msgid "The server didn't provide a certificate"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1223
+msgid "Unable to determine the current cipher"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1768
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1788
+msgid "Partial socket write: packet broken into smaller pieces."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:60
+#, fuzzy
+msgid "The theme information file does not exist"
+msgstr "bron s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:71
+msgid ""
+"This KVIrc executable is too old for this theme (minimum theme engine "
+"version required is %Q while this theme engine has version %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:80
+#, fuzzy
+msgid "Theme information file is not valid"
+msgstr "s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:248
+#, fuzzy
+msgid "Failed to load the specified screenshot image"
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:257
+#, fuzzy
+msgid "Invalid option"
+msgstr "ongeldig poort nummer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:265
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:293
+#, fuzzy
+msgid "Failed to save the screenshot image"
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:117
+#, fuzzy
+msgid "Configure Servers..."
+msgstr "&Opties"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:118
+msgid "Allows you to configure the servers and eventually to connect to them"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:128
+#, fuzzy
+msgid "Manage Addons..."
+msgstr "Bezig met laden van de iconen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:129
+msgid "Allows you to manage the script-based addons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:139
+#, fuzzy
+msgid "Configure Registered Users..."
+msgstr "Bezig met laden van de geregistreerd gebruikers..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:140
+msgid "Shows a dialog that allows editing the registered user entries"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:150
+#, fuzzy
+msgid "Configure Identity..."
+msgstr "Huidige"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:151
+msgid "Allows you to configure nickname, username, avatar etc..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:161
+#, fuzzy
+msgid "Show SocketSpy..."
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:162
+msgid "Shows a window that allows monitoring the socket traffic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:172
+#, fuzzy
+msgid "Get Network Links"
+msgstr "Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:173
+msgid "Shows a window that allows viewing the network links"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:183
+#, fuzzy
+msgid "Get Channel List"
+msgstr "Kanaal mode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:184
+msgid "Shows a window that allows listing the network channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:194
+#, fuzzy
+msgid "Configure KVIrc..."
+msgstr "&Opties"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:195
+#, fuzzy
+msgid "Shows the general options dialog"
+msgstr "Tonen de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:205
+#, fuzzy
+msgid "Configure Theme..."
+msgstr "&Opties"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:206
+#, fuzzy
+msgid "Shows the theme options dialog"
+msgstr "Tonen de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:216
+#, fuzzy
+msgid "Manage Themes..."
+msgstr "&Opties"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:217
+msgid "Allows you to manage the themes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:227
+#, fuzzy
+msgid "Customize Toolbars..."
+msgstr "H&ulpmiddelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:228
+msgid "Shows a window that allows editing script toolbars"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:239
+#, fuzzy
+msgid "Join Channels..."
+msgstr "is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:240
+msgid "Shows a dialog that allows you joing channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:251
+#, fuzzy
+msgid "Edit Actions..."
+msgstr "Bezig met laden van de opties..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:252
+msgid "Shows a window that allows editing actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:262
+#, fuzzy
+msgid "Edit Aliases..."
+msgstr "Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:263
+msgid "Shows a window that allows editing aliases"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:273
+#, fuzzy
+msgid "Edit Events..."
+msgstr "Gebeurtenis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:274
+msgid "Shows a window that allows editing script events"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:284
+#, fuzzy
+msgid "Edit Popups..."
+msgstr "Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:285
+msgid "Shows a window that allows editing popup menus"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:295
+#, fuzzy
+msgid "Edit Raw Events..."
+msgstr "Toevoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:296
+msgid "Shows a window that allows editing raw scripting events"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:306
+msgid "New Script Tester"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:307
+msgid "Creates an embedded editor for long scripts"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:317
+msgid "Execute Script..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:318
+msgid "Allows executing a KVS script from file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:328
+#, fuzzy
+msgid "Help Index"
+msgstr "Index"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:329
+#, fuzzy
+msgid "Shows the documentation index"
+msgstr "Tonen de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:340
+msgid "Allows subscribing to the KVIrc mailing list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:350
+#, fuzzy
+msgid "KVIrc WWW"
+msgstr "Naa&r voorgrond de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:351
+msgid "Opens the KVIrc homepage"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:361
+#, fuzzy
+msgid "KVIrc Russian WWW"
+msgstr "Naa&r voorgrond de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:362
+msgid "Opens the KVIrc homepage in russian"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:372
+msgid "Acquire Screenshot"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:373
+msgid "Acquires a Screenshot of the KVIrc main window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:385
+#, fuzzy
+msgid "Cascade windows"
+msgstr "Trapgewijs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:386
+msgid "Arranges the MDI windows in a maximized-cascade fashion"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:397
+#, fuzzy
+msgid "Tile windows"
+msgstr "&Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:398
+msgid "Tiles the MDI windows with the currently selected tile method"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:409
+#, fuzzy
+msgid "Minimize all windows"
+msgstr "M&inimaliseren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:410
+msgid "Minimized all the currently visible MDI windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:421
+#, fuzzy
+msgid "New IRC Context"
+msgstr "&Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:422
+msgid "Creates a new IRC context console"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:433
+#, fuzzy
+msgid "Quit KVIrc"
+msgstr "Afsluiten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:434
+msgid "Quits KVIrc closing all the current connections"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:448
+#, fuzzy
+msgid "IRC Context Display"
+msgstr "&Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:449
+msgid "Shows a small display with IRC context informations"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:520
+msgid "Acts as a separator for other items: performs no action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:554
+#, fuzzy
+msgid "Connect/Disconnect"
+msgstr "Verbinding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:555
+msgid ""
+"Allows you to connect to a server or to terminate the current connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:628
+msgid "Connect"
+msgstr "Verbinden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:629
+#, fuzzy
+msgid "Abort Connection"
+msgstr "geen verbinding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:790
+#, fuzzy
+msgid "Join Channel"
+msgstr "is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:791
+msgid "Shows a popup menu that allows quickly selecting a channel to join"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:851
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:863
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:896
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:907
+#, fuzzy
+msgid "Other..."
+msgstr "Be&werken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:834
+#, fuzzy
+msgid "Change Nickname"
+msgstr "Bijnaam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:835
+msgid "Shows a popup menu that allows quickly changing the nickname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:883
+#, fuzzy
+msgid "Connect To"
+msgstr "Verbinden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:884
+msgid "Shows a popup menu that allows quickly connecting to a server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:929
+#, fuzzy
+msgid "User Mode"
+msgstr "Gebr&uiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:930
+msgid "Shows a popup menu that allows quickly changing user modes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:947
+msgid "Wallops (+w)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:949
+#, fuzzy
+msgid "Server Notices (+s)"
+msgstr "s Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:951
+#, fuzzy
+msgid "Invisible (+i)"
+msgstr "zichtbaar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:997
+msgid "Away/Back"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:998
+msgid "Allows entering and leaving away state"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1065
+msgid "Enter Away Mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1066
+msgid "Leave Away Mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1135
+#, fuzzy
+msgid "Irc Tools"
+msgstr "H&ulpmiddelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1136
+msgid "Shows a popup menu with some IRC Tools"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1171
+#, fuzzy
+msgid "Irc Actions"
+msgstr "Acties"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1172
+msgid "Shows a popup menu with some IRC Actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:412
+msgid "KVIrc KVS Script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:174
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:420
+#, fuzzy
+msgid "Run KVS Script"
+msgstr "Beschrijving"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:284
+#, fuzzy
+msgid "URL:IRC Protocol"
+msgstr "Gebruik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:383
+#, fuzzy
+msgid "Open with KVIrc"
+msgstr "Afsluiten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:436
+#, fuzzy
+msgid "KVIrc Configuration File"
+msgstr "Op&slaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:453
+msgid "KVIrc Theme Package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:461
+msgid "Install Theme Package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:478
+msgid "KVIrc Addon Package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:486
+msgid "Install Package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:749
+#, c-format
+msgid ""
+"Ops...it looks like I can't load modules on this sytem.\n"
+"I have been looking for the %s library but I haven't been able to load it\n"
+"due to the following error: \"%s\"\n"
+"Aborting."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:762
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_begin\" function.\n"
+"Aborting!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:776
+#, fuzzy
+msgid "Setup aborted"
+msgstr "Setup geanuleerd."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:801
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_finish\" function.\n"
+"Trying to continue anyway..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:186
+#, fuzzy
+msgid "%Q is on IRC"
+msgstr "s is aan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:248
+#, fuzzy
+msgid "%Q has left IRC"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:368
+#, fuzzy
+msgid "Notify list: No users to check for, quitting"
+msgstr "Notificatie nee gebruikers naar voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:414
+#, fuzzy, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (15 sec)"
+msgstr "seconden is naar seconden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:428
+#, fuzzy
+msgid "Notify list: Notify list empty, quitting"
+msgstr "Notificatie leeg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:455
+#, fuzzy, c-format
+msgid ""
+"Notify list: ISON delay (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr "seconden is naar seconden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:491
+#, fuzzy
+msgid "Notify list: Checking for: %Q"
+msgstr "Notificatie voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:535
+#, fuzzy
+msgid ""
+"Notify list: Hey! You've used ISON behind my back? (I might be confused "
+"now...)"
+msgstr "Notificatie gebruikt I"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:682
+#, fuzzy
+msgid "registration mask changed, or nickname is being used by someone else"
+msgstr "s s s masker of is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:686
+#, fuzzy
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (registration mask does not match, or nickname is being used "
+"by someone else)"
+msgstr ""
+"Notificatie s naar de masker s s overeenkomstig is of masker s overeenkomstig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:691
+#, fuzzy
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? "
+"(restarting)"
+msgstr "Notificatie geregistreerd gebruiker gewijzigd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:698
+#, fuzzy
+msgid ""
+"Notify list: Unexpected inconsistency, expected \r!n\r%Q\r in the registered "
+"user DB"
+msgstr "Notificatie naar s de woordenboek."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:712
+#, fuzzy, c-format
+msgid ""
+"Notify list: USERHOST delay (%d sec) is too short, resetting to something "
+"more reasonable (5 sec)"
+msgstr "seconden is naar seconden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:726
+#, fuzzy
+msgid "Notify list: Unexpected inconsistency, userhost list is empty!"
+msgstr "Notificatie de is leeg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:761
+#, fuzzy
+msgid "Notify list: Checking userhost for: %Q"
+msgstr "Notificatie voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:831
+#, fuzzy
+msgid ""
+"Notify list: Hey! You've used USERHOST behind my back? (I might be confused "
+"now...)"
+msgstr "Notificatie gebruikt I"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:836
+#, fuzzy, c-format
+msgid "Notify list: Broken USERHOST reply from the server? (%s)"
+msgstr "Notificatie de s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:860
+#, fuzzy
+msgid ""
+"Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST reply "
+"was received, will recheck in the next loop"
+msgstr "Notificatie s de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:931
+msgid "Starting notify list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:936
+#, fuzzy
+msgid "No users in the notify list"
+msgstr "Nee gebruikers de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:958
+#, fuzzy
+msgid "Notify list: Checking for:%Q"
+msgstr "Notificatie voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1013
+#, fuzzy, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr "seconden is naar seconden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1139
+#, fuzzy
+msgid "Notify list: Adding watch entries for%Q"
+msgstr "Notificatie voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1171
+msgid "watch entry listing requested by user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1175
+msgid "possible watch list desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1185
+#, fuzzy
+msgid "registration mask changed or desync with the watch service"
+msgstr "s s s masker of door de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1190
+#, fuzzy
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (watch: registration mask does not match, or nickname is "
+"being used by someone else)"
+msgstr ""
+"Notificatie s naar de masker s s overeenkomstig is of masker s overeenkomstig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1197
+#, fuzzy
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? (watch: "
+"restarting)"
+msgstr "Notificatie geregistreerd gebruiker gewijzigd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1207
+msgid "watch entry added by user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1245
+#, fuzzy
+msgid "removed from watch list"
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1248
+#, fuzzy
+msgid "Notify list: Stopped watching for \r!n\r%Q\r"
+msgstr "Notificatie voor s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1258
+#, fuzzy
+msgid "watch"
+msgstr "Pad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1264
+#, fuzzy
+msgid "Notify list: \r!n\r%Q\r is offline (watch)"
+msgstr "Notificatie s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1267
+msgid "unmatched watch list entry"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:80
+#, fuzzy
+msgid "commandline::userfriendly"
+msgstr "Nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:94
+#, fuzzy
+msgid "commandline::kvs"
+msgstr "Nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:127
+#, fuzzy
+msgid "You are not connected to a server"
+msgstr "U bent niet met een server verbonden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_iconmanager.cpp:372
+#, fuzzy
+msgid "Icon Table"
+msgstr "P&ictogram"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:190
+#, fuzzy
+msgid "No "
+msgstr "&Ga naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:196
+msgid "This module has no version informations: refusing to load it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:204
+msgid ""
+"This module was compiled for a different KVIrc version and can't be loaded"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:232
+#, fuzzy
+msgid "Failed to execute the init routine"
+msgstr "Faalde naar de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:261
+#, fuzzy, c-format
+msgid "Loaded module '%s' (%s)"
+msgstr "module s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:306
+#, fuzzy, c-format
+msgid "Unloaded module '%s'"
+msgstr "module s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:45
+msgid "This window has no associated irc context"
+msgstr "Dit venster heeft geen irc context"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:50
+#, fuzzy, c-format
+msgid "No such irc context (%d)"
+msgstr "Nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:147
+msgid "Global idle timer must be started before using $my.globalIdle function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:103
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:215
+#, fuzzy
+msgid "Window %Q not found"
+msgstr "Venster s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:108
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:220
+#, fuzzy
+msgid "Missing window id after the 'w' switch"
+msgstr "venster id de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:121
+#, fuzzy
+msgid "Can't log to file %Q"
+msgstr "naar file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:123
+#, fuzzy
+msgid "This window has no logging capabilities"
+msgstr "venster nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:275
+#, fuzzy
+msgid "Window with id '%Q' not found, returning empty string"
+msgstr "Venster door id s leeg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:598
+#, fuzzy
+msgid "Sound file '%Q' not found"
+msgstr "Venster s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:604
+msgid "Unable to play sound '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:615
+msgid "Sorry , I can't find a sound system to use on this machine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:617
+#, c-format
+msgid "Sound system detected to: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:141
+#, fuzzy
+msgid "Show at startup"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:154
+msgid "Did you know..."
+msgstr "Wist u..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:220
+msgid "<b>Can't find any tip... :(</b>"
+msgstr "<b>Kan geen tops vinden... :(</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1544
+msgid "%Q algorytm is not supported"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1566
+msgid ""
+"KVIrc is compiled without OpenSSL support. $str.digest function disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2030
+msgid "Invalid argument for ?d escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2034
+msgid "Missing argument for ?d escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2066
+msgid "Invalid argument for ?u escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2070
+msgid "Missing argument for ?u escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2097
+msgid "Invalid argument for ?x escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2101
+msgid "Missing argument for ?x escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2128
+msgid "Invalid argument for ?X escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2132
+msgid "Missing argument for ?X escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2189
+msgid "Invalid argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2193
+msgid "Missing argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:87
+msgid "Show URL List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:88
+#, fuzzy
+msgid "Shows the URL list window"
+msgstr "Sluiten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:124
+msgid "&Configure"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:126
+#, fuzzy
+msgid "Clo&se"
+msgstr "Sluiten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:127
+msgid "&Module"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:130
+#, fuzzy
+msgid "&Load"
+msgstr "Laden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:131
+#, fuzzy
+msgid "&Save"
+msgstr "Op&slaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:132
+#, fuzzy
+msgid "&Clear"
+msgstr "Beginwaarde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:133
+#, fuzzy
+msgid "&List"
+msgstr "Be&werken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:136
+msgid "URL"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:137
+#, fuzzy
+msgid "Window"
+msgstr "&Venster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:138
+#, fuzzy
+msgid "Count"
+msgstr "Knippen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:139
+#, fuzzy
+msgid "Timestamp"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:113
+#, fuzzy
+msgid "Warning - KVIrc"
+msgstr "Delen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+#, fuzzy
+msgid "Select an URL."
+msgstr "Alles selecteren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:115
+#, fuzzy
+msgid "&Remove"
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:269
+msgid "&Find Text"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:280
+#, fuzzy
+msgid "&Say to Window"
+msgstr "&Venster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+#, fuzzy
+msgid "Window not found."
+msgstr "Venster s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:349
+#, fuzzy
+msgid "URL Module Configuration"
+msgstr "Op&slaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:356
+msgid "Save URL list on module unload"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:360
+msgid "Save columns width on URL list close"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1187
+#, fuzzy
+msgid "&Cancel"
+msgstr "Annuleren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:432
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1328
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:458
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1186
+#, fuzzy
+msgid "&OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:423
+#, fuzzy
+msgid "Enable URL ban list"
+msgstr "Activeren URL-adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:435
+#, fuzzy
+msgid "&Add Ban"
+msgstr "Toevoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:440
+#, fuzzy
+msgid "&Remove Selected"
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+#, fuzzy
+msgid "URL Ban List"
+msgstr "Activeren URL-adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+#, fuzzy
+msgid "Select a ban."
+msgstr "Alles selecteren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:797
+#, fuzzy
+msgid "View URL list"
+msgstr "Activeren URL-adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:49
+#, fuzzy
+msgid "Can't find the window with id '%Q'"
+msgstr "de commando venster door id s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:53
+#, fuzzy
+msgid "The specified window (%Q) is not a channel"
+msgstr "venster is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:78
+msgid "Destinaion file exists: no copy made"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:83
+#, fuzzy
+msgid "Failed to copy from %Q to %Q"
+msgstr "Faalde naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:84
+msgid "Either the source doesn't exist or the destination can not be created"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:203
+msgid "Failed to write to file %Q: the destination couldn't be opened"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:244
+msgid "Destination file exists: file not renamed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:247
+#, fuzzy
+msgid "Failed to rename %Q to %Q"
+msgstr "Faalde naar de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:281
+#, fuzzy
+msgid "Failed to make the directory %Q"
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:322
+#, fuzzy
+msgid "Failed to remove the file %Q"
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:365
+#, fuzzy
+msgid "Failed to remove the directory %Q"
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:482
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:628
+#, fuzzy
+msgid "The specified directory does not exist '%Q'"
+msgstr "is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:730
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:824
+#, fuzzy
+msgid "Can't open the file \"%Q\" for reading"
+msgstr "de file s voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:746
+#, fuzzy
+msgid "Read error for file %Q"
+msgstr "Gelezen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:754
+msgid ""
+"Read error for file %Q (have been unable to read the requested size in 1000 "
+"retries)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:920
+#, fuzzy
+msgid "Can't open the file \"%Q\" for writing"
+msgstr "de file s voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/index.cpp:473
+msgid "Untitled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+msgid "Indexing help files"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:87
+#, fuzzy
+msgid "Index"
+msgstr "Index"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:99
+msgid "Refresh index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:211
+msgid "Full Text Search"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:203
+msgid "Using a wildcard within phrases is not allowed."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:212
+msgid "The closing quotation mark is missing."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:312
+#, fuzzy
+msgid "Help Browser"
+msgstr "Nieuw hulp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:201
+#, fuzzy
+msgid "Request List"
+msgstr "Verzoeken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:207
+#, fuzzy
+msgid "Stop list download"
+msgstr "Faalde naar de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:211
+msgid ""
+"<center><b>/LIST command parameters:</b><br>Many servers accept special "
+"parameters that allow you to filter the returned entries.<br>Commonly, "
+"masked channel names (*kvirc*) are accepted as parameters, as well as "
+"strings like <b>c&lt;n</b> or <b>c&gt;n</b> where <b>n</b> is the minimum or "
+"maximum of users on the channel.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:220
+#, fuzzy
+msgid "Users"
+msgstr "Gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:221
+msgid "Topic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:262
+#, fuzzy
+msgid "Sent list request, waiting for reply..."
+msgstr "Verzonden voor."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:265
+#, fuzzy
+msgid "Cannot request list: No active connection"
+msgstr "nee actief"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:389
+msgid "Stopping the list download..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:276
+#, fuzzy
+msgid "Cannot stop list download, no active connection."
+msgstr "nee actief"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:125
+#, fuzzy, c-format
+msgid "Connected to %s (%s)"
+msgstr "Verbonden naar s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:293
+#, fuzzy
+msgid "List cannot be requested: Not connected to a server"
+msgstr "U bent niet met een server verbonden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:316
+#, fuzzy, c-format
+msgid "Channel List [IRC Context %u]"
+msgstr "voor s IRC Context"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:319
+#, fuzzy, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel List</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b> voor s</b></font><font color=\"%s\"> IRC "
+"Context</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:326
+#, fuzzy, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel list</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b> voor s</b></font><font color=\"%s\"> IRC "
+"Context</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:342
+msgid "You cannot export an empty list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:350
+#, fuzzy
+msgid "Channel list for %Q - %Q"
+msgstr "voor s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:353
+#, fuzzy
+msgid "Channel list"
+msgstr "Annuleren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:382
+#, fuzzy
+msgid "Choose filename"
+msgstr "file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:356
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:383
+#, fuzzy
+msgid "Configuration files (*.kvc)"
+msgstr "Op&slaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:398
+#, fuzzy
+msgid "Reset"
+msgstr "Resetten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:435
+msgid "Channels list download finished"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:472
+#, fuzzy
+msgid "Processing list: %Q"
+msgstr "koppeling"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/libkvilist.cpp:63
+#, fuzzy
+msgid "List window alread open for this IRC context"
+msgstr "venster voor IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:70
+#, fuzzy
+msgid "Terminal"
+msgstr "&Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:73
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:77
+#, fuzzy, c-format
+msgid "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+msgstr "<nobr><font color=\"%s\"><b> Terminal</b></font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:59
+#, fuzzy
+msgid "Terminal emulator"
+msgstr "Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:63
+#, fuzzy
+msgid "Close this window"
+msgstr "Sluiten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:91
+#, fuzzy
+msgid "Can't create the terminal emulation part"
+msgstr "de terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:96
+#, fuzzy
+msgid "Can't retrieve the terminal emulation factory"
+msgstr "de terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:95
+#, fuzzy
+msgid "KVIrc"
+msgstr "Naa&r voorgrond de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:98
+#, fuzzy
+msgid "Context"
+msgstr "Verbinden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:155
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:100
+#, fuzzy
+msgid "Away"
+msgstr "Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:102
+#, fuzzy
+msgid "&Configure KVIrc..."
+msgstr "&Opties"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:104
+#, fuzzy
+msgid "&About KVIrc"
+msgstr "Info over."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:109
+#, fuzzy
+msgid "Un&dock"
+msgstr "&Afmeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:168
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:112
+msgid "Ctrl+Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:143
+#, fuzzy
+msgid "Nothing is happening..."
+msgstr "Niets is."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:285
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:144
+msgid "Just idling..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:145
+#, fuzzy
+msgid "Dum de dum de dum..."
+msgstr "de de."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:146
+msgid "Hey man... do something!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:147
+msgid "Umpf!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:148
+msgid "Silence speaking"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:149
+msgid "Are ya here?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:150
+#, fuzzy
+msgid "The world has stopped?"
+msgstr "de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:151
+#, fuzzy
+msgid "Everything is all right"
+msgstr "is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:152
+#, fuzzy
+msgid "idle()"
+msgstr "idle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:153
+#, fuzzy
+msgid "It's so cold here..."
+msgstr "s."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:295
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:154
+msgid "Do not disturb... watching TV"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:155
+msgid "Just vegetating"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:156
+#, fuzzy
+msgid "Hey... are ya sure that your network is up?"
+msgstr "netwerk is?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:298
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:157
+#, fuzzy
+msgid "Seems like the world has stopped spinning"
+msgstr "de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:299
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:158
+#, fuzzy
+msgid "This silence is freaking me out!"
+msgstr "is!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:300
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:159
+msgid "Mieeeeeowww!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:301
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:160
+#, fuzzy
+msgid "idle idle idle idle!"
+msgstr "idle idle idle idle!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+#, fuzzy
+msgid "Hide Window"
+msgstr "&Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+#, fuzzy
+msgid "Show Window"
+msgstr "&Venster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:428
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:260
+msgid "Away on all"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:263
+msgid "Back on all"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:450
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:282
+msgid "Back on %1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:453
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:285
+msgid "Away on %1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1238
+#, fuzzy
+msgid "Alias"
+msgstr "Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1217
+#, fuzzy
+msgid "No item selected"
+msgstr "Beginwaarde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:232
+#, fuzzy
+msgid "Rename"
+msgstr "Hernoemen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:236
+#, fuzzy
+msgid "Edit the alias or namespace name"
+msgstr "Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+#, fuzzy
+msgid "Add Alias"
+msgstr "Toevoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:429
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Add Namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:440
+#, fuzzy
+msgid "Remove Selected"
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:449
+#, fuzzy
+msgid "Export Selected..."
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:455
+#, fuzzy
+msgid "Export Selected in singles files..."
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:462
+#, fuzzy
+msgid "Export All..."
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:470
+#, fuzzy
+msgid "Find In Aliases..."
+msgstr "Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:476
+msgid "Collapse All Namespaces"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:508
+msgid "Find In Aliases"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:509
+msgid ""
+"Please enter the text to be searched for. The matching aliases will be "
+"highlighted."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+#, fuzzy
+msgid "Alias Export"
+msgstr "Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#, fuzzy
+msgid "There is not selection!"
+msgstr "Tekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:615
+#, fuzzy
+msgid "The file \"%Q\" exists. Do you want to replace it ?"
+msgstr ""
+"file s\n"
+" Overschrijven it?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+msgid "Replace file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#, fuzzy
+msgid "Yes to All"
+msgstr "Alles selecteren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "There exported file would be empty: cowardly refusing to write it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:786
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:411
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1133
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:398
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:745
+#, fuzzy
+msgid "Choose a Filename - KVIrc"
+msgstr "file naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+#, fuzzy
+msgid "Write Failed - KVIrc"
+msgstr "file naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#, fuzzy
+msgid "Unable to write to the alias file."
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:793
+msgid "Do you really want to remove the alias \"%Q\" ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:795
+msgid "Do you really want to remove the namespace \"%Q\" ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:797
+msgid "Please note that all the children items will be deleted too."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#, fuzzy
+msgid "Remove item"
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:875
+#, fuzzy
+msgid "Missing Alias Name"
+msgstr "Ontbrekende variabele naam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:876
+msgid "You must specify a valid name for the alias"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:877
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:890
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:904
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:915
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:946
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:959
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:973
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1128
+msgid "Ok, Let me try again..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:888
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:902
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:913
+msgid "Bad Alias Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:944
+#, fuzzy
+msgid "Missing Namespace Name"
+msgstr "Ontbrekende variabele naam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:945
+msgid "You must specify a valid name for the namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:957
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:971
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:982
+msgid "Bad Namespace Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:958
+msgid ""
+"Namespace names can contain only letters, digits, underscores and '::' "
+"namespace separators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:972
+msgid ""
+"Stray ':' character in namespace name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:983
+msgid "Found an empty namespace in namespace name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+#, fuzzy
+msgid "Please enter the name for the new alias"
+msgstr "Nee gebruikers de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Please enter the name for the new namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+#, fuzzy
+msgid "Rename Alias"
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+#, fuzzy
+msgid "Please enter the new name for the alias"
+msgstr "Selecteren naam voor de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+#, fuzzy
+msgid "Rename Namespace"
+msgstr "Bekend naam:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Please enter the new name for the namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1126
+#, fuzzy
+msgid "Alias already exists"
+msgstr "Bestand"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1139
+msgid "This name is already in use. Please choose another one."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1138
+#, fuzzy
+msgid "Namespace already exists"
+msgstr "Bestand"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1140
+msgid "Ok, let me try again..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1227
+#, fuzzy
+msgid "Namespace"
+msgstr "Bericht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1332
+#, fuzzy
+msgid "Alias Editor"
+msgstr "Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:62
+#, fuzzy
+msgid "Join Channels"
+msgstr "is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:183
+#, fuzzy
+msgid "Name"
+msgstr "Naam:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:86
+#, fuzzy
+msgid "Password"
+msgstr "Wachtwoord"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:641
+#, fuzzy
+msgid "&Join"
+msgstr "&Lijn"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:108
+#, fuzzy
+msgid "Show this window after connecting"
+msgstr "U bent niet met een server verbonden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:163
+#, fuzzy
+msgid "Recent Channels"
+msgstr "Accepteren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:182
+#, fuzzy
+msgid "Registered Channels"
+msgstr "Negeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:133
+#, fuzzy
+msgid "Choose the file to share"
+msgstr "de naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:178
+msgid "No such channel/netmask entry in the database"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:198
+msgid "Registered channel list:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:208
+#, fuzzy, c-format
+msgid "Channel: %c%s@%s"
+msgstr "is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:213
+#, fuzzy, c-format
+msgid " Property: %s=%s"
+msgstr "Eigenschap s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:220
+#, fuzzy, c-format
+msgid "Total %d channels"
+msgstr "Totaal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:86
+#, fuzzy
+msgid "Property Editor"
+msgstr "Eigenschap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:101
+#, fuzzy
+msgid "Property"
+msgstr "Eigenschap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:102
+#, fuzzy
+msgid "Value"
+msgstr "Waarde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:111
+#, fuzzy
+msgid "&New"
+msgstr "&Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:215
+#, fuzzy
+msgid "Mask Editor"
+msgstr "Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:219
+msgid ""
+"Insert a mask for this user.<br>It can contain the wildcard characters '*' "
+"and '?'."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:230
+#, fuzzy
+msgid ""
+"<center>This the <b>nickname</b> that will match this user, default value is "
+"the registered name.</center>"
+msgstr "<center> is de<b></b> de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:241
+#, fuzzy
+msgid ""
+"<center>This the <b>username</b> that will match this user. <b>*</b> will "
+"match any username.</center>"
+msgstr "<center> is de<b></b> de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:252
+#, fuzzy
+msgid ""
+"<center>This the <b>hostname</b> that will match this user. <b>*</b> will "
+"match any hostname.</center>"
+msgstr "<center> is de<b></b> de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:333
+#, fuzzy
+msgid "Registered User Entry"
+msgstr "gebruikers:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:145
+#, fuzzy
+msgid "Name:"
+msgstr "Naam:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:345
+#, fuzzy
+msgid "Comment:"
+msgstr "Vastleggen (Commit)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:355
+#, fuzzy
+msgid "Masks:"
+msgstr "Maskers:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:216
+#, fuzzy
+msgid "&Add..."
+msgstr "Toevoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:377
+#, fuzzy
+msgid "&Edit"
+msgstr "Be&werken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:385
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:414
+#, fuzzy
+msgid "Identity"
+msgstr "Identiteit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:393
+#, fuzzy
+msgid "Notify when user is online"
+msgstr "Notificatie lijst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:396
+#, fuzzy
+msgid "Notify nicknames:"
+msgstr "Notificatie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:401
+msgid "<center>You can enter a space separated list of nicknames.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:426
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:383
+msgid "Avatar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:433
+#, fuzzy
+msgid "Use custom color in userlist"
+msgstr "Alles opschonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:441
+#, fuzzy
+msgid "All Properties..."
+msgstr "Eigenschappen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:448
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:231
+#, fuzzy
+msgid "Properties"
+msgstr "Eigenschappen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:458
+#, fuzzy
+msgid "Enable ignore for this user"
+msgstr "Activeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:460
+#, fuzzy
+msgid "Ignore features"
+msgstr "Interface"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:465
+#, fuzzy
+msgid "Ignore query-messages"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:468
+#, fuzzy
+msgid "Ignore channel-messages"
+msgstr "private"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:471
+#, fuzzy
+msgid "Ignore notice-messages"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:474
+#, fuzzy
+msgid "Ignore ctcp-messages"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:477
+#, fuzzy
+msgid "Ignore invites"
+msgstr "genegeerd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:480
+#, fuzzy
+msgid "Ignore DCCs"
+msgstr "genegeerd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:486
+#, fuzzy
+msgid "Ignore"
+msgstr "genegeerd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:94
+#, fuzzy
+msgid "Notify disabled"
+msgstr "Notificatie lijst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:96
+#, fuzzy
+msgid "Notify as: "
+msgstr "Notificatie lijst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:105
+#, fuzzy
+msgid "No comment set"
+msgstr "Nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:107
+#, fuzzy
+msgid "Comment: "
+msgstr "Vastleggen (Commit)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:176
+#, fuzzy
+msgid "Registered Users - KVIrc"
+msgstr "gebruikers:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:317
+#, fuzzy
+msgid "Flags"
+msgstr "Filter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:192
+msgid ""
+"<center>This is the list of registered users. KVIrc can automatically "
+"recognize and associate properties to them.<br>Use the buttons on the right "
+"to add, edit and remove entries. The \"notify\" column allows you to quickly "
+"add users to the notify list. Notify list fine-tuning can be performed by "
+"editing the entry properties.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:208
+msgid "Add (Wizard)..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:211
+msgid "Add a registered user by means of a user-friendly wizard."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:219
+msgid "Open the edit dialog to create a new user entry."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:223
+#, fuzzy
+msgid "&Add Group..."
+msgstr "Toevoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:226
+#, fuzzy
+msgid "Adds a new group"
+msgstr "Toevoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:234
+#, fuzzy
+msgid "Remove the currently selected entries."
+msgstr "<center> is de<b></b> de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:239
+#, fuzzy
+msgid "&Edit..."
+msgstr "Be&werken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:243
+msgid "Edit the first selected entry."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:250
+msgid "Export To..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:254
+msgid ""
+"Export the selected entries to a file.<br>All the data associated with the "
+"selected registered users will be exported.<br>You (or anyone else) can "
+"later import the entries by using the \"Import\" button."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:259
+#, fuzzy
+msgid "Import From..."
+msgstr "Bezig met laden van de iconen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:262
+msgid ""
+"Import entries from a file exported earlier by the \"export\" function of "
+"this dialog."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:399
+#, fuzzy
+msgid "Group name:"
+msgstr "Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:442
+msgid "Move to group"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:483
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:486
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:487
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:491
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:690
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_useridentity.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:962
+#, fuzzy
+msgid "Default"
+msgstr "standaard"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:674
+#, fuzzy
+msgid "No entries selected."
+msgstr "Beginwaarde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:687
+#, fuzzy
+msgid "Can't open file %Q for writing."
+msgstr "de file s voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:772
+msgid "Can't export the registered users database: Write error."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:793
+#, fuzzy, c-format
+msgid "Can't open file %s for reading."
+msgstr "file s voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:804
+#, c-format
+msgid "The file %s doesn't appear to be a valid registered users database."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:811
+#, c-format
+msgid "The file %s contains an invalid registered users database version."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:892
+#, fuzzy
+msgid "Can't import the registered users database: Read error."
+msgstr "gebruikers:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:78
+#, fuzzy
+msgid "User Registration Wizard - KVIrc"
+msgstr "Gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:89
+msgid ""
+"<p>Welcome to the user registration wizard.<br>This process allows you to "
+"add an IRC user to the database and set properties for that user. KVIrc will "
+"be (hopefully) able to recognize the user, add him to the notify list, and "
+"display the associated avatar.<br><br>First of all, you must insert an "
+"<b>entry name or real name</b> for the user you're going to register. The "
+"name will be used to identify the database entry and has no specific "
+"requirements, it can be a given name, nickname, or just some text to remind "
+"you of the real person.<br>Examples: \"George W Bush\", \"Dubya\".\n"
+"</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:97
+#, fuzzy
+msgid "Step 1: Entry Name"
+msgstr "Bekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:112
+msgid ""
+"<p>A registered user is identified by one or more <b>IRC masks</b>.<br>A "
+"mask must be in the following form:<br><b>nickname!username@hostname</"
+"b><br>and can contain wildcard characters '*' and '?'. Be careful in "
+"choosing the masks, as they are the only way to verify the identity of a "
+"registered user.<br><br>You can enter at most two masks here, if you wish to "
+"add more masks, use the \"<b>Edit</b>\" button in the Registered Users "
+"dialog. You must enter at least one mask.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:170
+msgid "Step 2: Mask Selection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:182
+msgid ""
+"<p>If you want to store an avatar image for this user, you can set it here. "
+"KVIrc will show the avatar in the userlist next to the user's nickname."
+"<br>An avatar can be in any supported image format (PNG is recommended). "
+"Keep in mind that KVIrc stores avatars in memory and has to resize them to "
+"fit in the userlist, thus it's better to use small, low-resolution images.</"
+"p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:190
+#, fuzzy
+msgid "Store an avatar for this user"
+msgstr "Faalde naar gebruiker."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:195
+msgid "Step 3: Avatar Selection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:206
+msgid ""
+"<p>If you want to be notified when this user is online or goes offline, you "
+"must specify the list of nicknames that KVIrc will look for.<br><br>You can "
+"enter at most two nicknames here, if you wish to add more nicknames, use the "
+"\"<b>Edit</b>\" button in the Registered Users dialog.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:215
+#, fuzzy
+msgid "Add this user to the notify list"
+msgstr "Nee gebruikers de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:342
+#, fuzzy
+msgid "Nickname:"
+msgstr "Bijnaam:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:225
+#, fuzzy
+msgid "Nickname 2:"
+msgstr "Bijnaam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:239
+#, fuzzy
+msgid "Step 4: Notify List"
+msgstr "Notificatie lijst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:251
+msgid ""
+"<p>That's it. The user registration has been completed.<br><br>Click "
+"\"<b>Finish</b>\" to close this dialog.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:254
+#, fuzzy
+msgid "Registration Complete"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:695
+#, fuzzy
+msgid "No name specified"
+msgstr "Geen naam opgegeven"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:209
+#, fuzzy
+msgid "User already registered: found exact name match"
+msgstr "Gebruiker geregistreerd naam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:222
+#, fuzzy
+msgid "Mask %Q is already used to identify user %s"
+msgstr "s is gebruikt naar gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:275
+#, fuzzy
+msgid "User not found (%Q)"
+msgstr "Gebruiker s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:403
+#, fuzzy
+msgid "No mask specified"
+msgstr "Nee masker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:524
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:708
+#, fuzzy
+msgid "User %Q not found"
+msgstr "Gebruiker s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:355
+#, fuzzy
+msgid "Mask %Q already used to identify user %Q"
+msgstr "s gebruikt naar gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:410
+#, fuzzy
+msgid "Mask %Q not found"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:701
+#, fuzzy
+msgid "No property specified"
+msgstr "Nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:808
+#, fuzzy
+msgid "Registered users database dump:"
+msgstr "gebruikers:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:819
+#, fuzzy
+msgid " User: %c%Q"
+msgstr "Gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:823
+#, fuzzy
+msgid " Warning: this user has no registration masks"
+msgstr "Waarschuwing gebruiker nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:827
+#, fuzzy
+msgid " Mask: %Q!%Q@%Q"
+msgstr "s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:838
+#, fuzzy
+msgid " Property: %Q=%Q"
+msgstr "Eigenschap s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:841
+#, fuzzy
+msgid " No properties"
+msgstr "Nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:847
+#, fuzzy, c-format
+msgid "Total: %d matching users (of %d in the database)"
+msgstr "Totaal gebruikers de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:197
+msgid "Manage Script-Based Addons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1155
+#, fuzzy
+msgid "Configure"
+msgstr "&Opties"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:225
+#, fuzzy
+msgid "Show Help"
+msgstr "Naa&r voorgrond de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:231
+msgid "Uninstall"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:243
+msgid "Install Addon..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:247
+#, fuzzy
+msgid "More Addons..."
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:333
+msgid "Do you really want to uninstall the addon \"%1\" ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+msgid "Confirm addon uninstallation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:354
+msgid "Please select the addon installation file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:144
+msgid "%cAddon id %Q, version %Q%c"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:145
+#, fuzzy
+msgid "Name: %Q"
+msgstr "Naam:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:67
+#, fuzzy
+msgid "Description: %Q"
+msgstr "Beschrijving:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:152
+#, fuzzy, c-format
+msgid "Total: %d addons installed"
+msgstr "Totaal s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:192
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:571
+msgid "Uninstalling existing addon version %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:384
+#, fuzzy
+msgid "The addon \"%1\" does not exist"
+msgstr "bron s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:238
+msgid "The addon \"%1\" has no configure callback set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:285
+#, fuzzy
+msgid "The addon \"%1\" has no help callback set"
+msgstr "bron s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:527
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:377
+msgid "Internal error: call a head-shrinker"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:536
+#, fuzzy
+msgid "The specified version \"%Q\" is not a valid version string"
+msgstr "s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:542
+#, fuzzy
+msgid "The specified KVIrc version \"%Q\" is not a valid version string"
+msgstr "s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:548
+msgid ""
+"This KVIrc executable is too old to run this addon (minimum version required "
+"is %Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:553
+msgid "Attempting to register addon \"%Q\" with version %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:565
+msgid ""
+"The script addon \"%Q\" already exists with version %Q which is higher than %"
+"Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:579
+#, fuzzy
+msgid "Script registration failed"
+msgstr "Aanmaak van een socket mislukt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:584
+msgid "Script succesfully registered"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:102
+#, fuzzy, c-format
+msgid "%s (%s) (%s:%u)"
+msgstr "%s (+%s) aan %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:104
+#, fuzzy, c-format
+msgid "%s (%s)"
+msgstr "%s [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:107
+#, c-format
+msgid "%s (%s:%u)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:109
+#, fuzzy, c-format
+msgid "%s"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:112
+#, fuzzy, c-format
+msgid "[IDENT]: %s"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:119
+#, fuzzy
+msgid "Shutting down identd service (spontaneous action)"
+msgstr "Bezig met hervatten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:124
+#, fuzzy
+msgid "Shutting down identd service (requested action)"
+msgstr "Bezig met hervatten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:225
+#, fuzzy
+msgid "Can't start the ident service : socket() failed"
+msgstr "de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:231
+msgid "Can't start the ident service : async setting failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:237
+msgid "Can't enable the ident service : can't setup the listen address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:243
+#, fuzzy
+msgid "Can't start the ident service : bind() failed"
+msgstr "de de bron is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:249
+#, fuzzy
+msgid "Can't start the ident service : listen() failed"
+msgstr "de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:263
+msgid "Can't start the ident service on IpV6 : socket() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:269
+msgid "Can't start the ident service on IpV6 : async setting failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:277
+msgid "Can't enable the ident service on IpV6 : can't setup the listen address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:285
+msgid "Can't start the ident service on IpV6 : bind() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:294
+msgid "Can't start the ident service on IpV6 : listen() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:310
+msgid "Starting identd service (IpV4/V6 on separate namespaces)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:313
+msgid "Starting identd service (IpV4/V6 in IpV6 namespace)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:318
+msgid "Starting identd service (IpV4)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:322
+msgid "Service startup (IpV4)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:412
+#, fuzzy
+msgid "Identd accepting connection"
+msgstr "Te veel ongeldige verbindingen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:435
+msgid "Identd socket error : dropping connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:440
+#, fuzzy
+msgid "Identd connection closed by remote host"
+msgstr "Verbinding door op afstand"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:461
+msgid "Identd processing request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:476
+msgid "Empty request (EOT ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:487
+#, fuzzy
+msgid "Dropping connection (request too long)"
+msgstr "netwerk"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:500
+msgid "Timed out while waiting for the request : dropping connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/libkvilinks.cpp:74
+#, fuzzy
+msgid "Links window alread open for this IRC context"
+msgstr "venster voor IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:57
+#, fuzzy
+msgid "Request Links"
+msgstr "Verzoeken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:70
+#, fuzzy
+msgid "Link"
+msgstr "Koppeling"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:71
+msgid "Hops"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:72
+#, fuzzy
+msgid "Description"
+msgstr "Beschrijving"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:90
+#, fuzzy
+msgid "(None)"
+msgstr "(Geen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:112
+#, fuzzy
+msgid "Sent links request, waiting for reply..."
+msgstr "Verzonden voor."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:115
+#, fuzzy
+msgid "Cannot request links: No active connection"
+msgstr "nee actief"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:128
+#, fuzzy
+msgid "Links cannot be requested: Not connected to a server"
+msgstr "U bent niet met een server verbonden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:153
+#, fuzzy
+msgid "Links for %Q [IRC Context %u]"
+msgstr "voor s IRC Context"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:164
+#, fuzzy
+msgid ""
+"<nobr><font color=\"%s\"><b>Links for %Q</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b> voor s</b></font><font color=\"%Q\"> IRC "
+"Context</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:194
+msgid "Received end of links."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:235
+#, fuzzy, c-format
+msgid ""
+"Broken link: Missing parent (%s) for %s (%d hops): %s (used /LINKS <mask> ?)"
+msgstr "Gebroken koppeling s voor s s gebruikt<mask>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:238
+#, fuzzy, c-format
+msgid "%s: Parent link %s"
+msgstr "s koppeling"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:242
+#, fuzzy
+msgid "Warning: No root link was sent by the server, the stats may be invalid."
+msgstr "Waarschuwing Nee root koppeling door de de."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:278
+#, fuzzy
+msgid "%c%cLinks for %Q"
+msgstr "voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+#, fuzzy
+msgid "Total hosts listed"
+msgstr "Totaal s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+#, fuzzy
+msgid "Total hosts in the network"
+msgstr "de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:282
+#, c-format
+msgid "Wildcard servers (hubs?): %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:283
+msgid "Direct links: %d (~%d.%d %)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:284
+msgid "Close links (1 <= hops <= 3): %d (~%d.%d %)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:285
+msgid "Mid-range links (4 <= hops <= 6): %d (~%d.%d %)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:286
+msgid "Distant links (7 <= hops): %d (~%d.%d %)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:287
+#, fuzzy, c-format
+msgid "Broken (unknown) links: %d"
+msgstr "Gebroken onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:288
+#, fuzzy, c-format
+msgid "Maximum links per host: %d [%s]"
+msgstr "Max s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:289
+#, fuzzy, c-format
+msgid "Total links: %d"
+msgstr "Totaal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:290
+#, fuzzy, c-format
+msgid "Maximum hops: %d [%s]"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:291
+#, fuzzy, c-format
+msgid "Average hops: ~%d.%d"
+msgstr "Gemiddeld"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:294
+#, fuzzy
+msgid "Incomplete LINKS result, no stats available"
+msgstr "Nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:747
+msgid "You're not connected to a server"
+msgstr "U bent niet met een server verbonden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:404
+#, fuzzy, c-format
+msgid "Processing link: %s"
+msgstr "koppeling"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:419
+#, fuzzy
+msgid "Broken message syntax, can't extract hops number, assuming 0"
+msgstr "Gebroken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:86
+msgid "< &Back"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:87
+#, fuzzy
+msgid "&Next >"
+msgstr "Tekst:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:282
+#, fuzzy
+msgid "Finish"
+msgstr "Zoeken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:164
+msgid ""
+"<p><h2>Welcome :)</h2>This is your first time running this version of KVIrc."
+"<br>This wizard will guide you through the few steps required to complete "
+"the setup.<br><br>If you had a previous version of KVIrc installed, no "
+"worries. You will have a chance to preserve the old configuration.</"
+"p><p>Click \"<b>Next</b>\" to proceed.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:176
+msgid "Welcome to KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:187
+msgid ""
+"<p>All of the files in this distribution are covered by the GPL. In human "
+"terms this can be read as follows:<br><ul><li><b>KVIrc is free</b>, use it, "
+"have fun! <b>:)</b></li><li>If you use <b>any</b> part of KVIrc in your own "
+"project, you <b>must</b> release that project under the same license.</li></"
+"ul></p><p>The \"legalese\" version of the license is shown in the box below."
+"</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:203
+msgid ""
+"Oops... can't find the license file.\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:211
+msgid "Dreaded License Agreement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:215
+#, fuzzy
+msgid "KVIrc Setup"
+msgstr "Kvirc setup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:224
+msgid ""
+"<p>Please choose a folder for KVIrc to store its settings and other data, "
+"and another for downloaded files. Make sure that you have permission to "
+"write to both folders.<br><br>The suggested locations are fine in most "
+"cases, so if you don't know what is this about, just click \"<b>Next</b>\"."
+"<br><br>If you had a previous version of KVIrc installed, you can choose the "
+"existing directory for the settings, and your configuration will be "
+"preserved.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:234
+#, fuzzy
+msgid "Application Folders"
+msgstr "Op&slaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:238
+#, fuzzy
+msgid "Store configuration in folder"
+msgstr "Op&slaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:239
+msgid "Use settings folder from previous installation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:251
+msgid "Use new settings folder"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:255
+#, fuzzy
+msgid "Settings folder:"
+msgstr "&Status"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:281
+#, fuzzy
+msgid "Download files to folder:"
+msgstr "Op&slaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:304
+msgid "All settings in shared program folder (portable)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:325
+msgid ""
+"Please choose a Nickname.<br><br>Your nickname is the name that other IRC "
+"users will know you by. It can't contain spaces or punctuation. Some IRC "
+"networks will shorten your nickname if it is more than 32 characters long."
+"<br><br>If in doubt, just enter the first nick that comes to mind. You will "
+"be able to change it later in the Identity properties, or with the /NICK "
+"command."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:348
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:353
+msgid "Profile"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:355
+#, fuzzy
+msgid "Real name:"
+msgstr "Bekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:361
+#, fuzzy
+msgid "Age:"
+msgstr "Bericht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:392
+#, fuzzy
+msgid "Unspecified"
+msgstr "Geen naam opgegeven"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:405
+#, fuzzy
+msgid "Location:"
+msgstr "notificatie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:408
+msgid "Languages:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:491
+msgid ""
+"<p>Here you can choose how much KVIrc will integrate with your system."
+"<br><br>The default settings are fine for most users so if you're in doubt "
+"just click \"<b>Next</b>\" and go to the next screen.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:501
+msgid "Desktop Integration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:504
+msgid "Make KVIrc default IRC client"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:508
+msgid "Create desktop shortcut"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:513
+msgid "Import server list from mIRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:727
+#, fuzzy
+msgid "Choose an Old Configuration Folder - KVIrc Setup"
+msgstr "de naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:736
+msgid "Do not overwrite folder? - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:737
+msgid ""
+"A folder %1 seems to be not a valid KVIrc settings folder.Do you want to use "
+"it anyway?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:753
+#, fuzzy
+msgid "Choose a Configuration Folder - KVIrc Setup"
+msgstr "de naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:764
+#, fuzzy
+msgid "Choose a Download Folder - KVIrc Setup"
+msgstr "de naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:933
+msgid "Abort Setup - KVIrc Setup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:934
+msgid ""
+"You have chosen to abort the setup.<br>KVIrc cannot run until you complete "
+"this procedure.<br><br>Do you really wish to abort?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:965
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:996
+#, c-format
+msgid ""
+"Cannot create directory %s.\n"
+"You may not have write permission for that path. Please go back and choose "
+"another directory."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+msgid "Package saved succesfully"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:80
+#, fuzzy
+msgid "Event"
+msgstr "Gebeurtenis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1046
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:92
+#, fuzzy
+msgid "&Export All To..."
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:90
+#, fuzzy
+msgid "Edit the event handler name."
+msgstr "Bezig met laden van de 'event handlers'..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:154
+#, fuzzy
+msgid "&Enable Handler"
+msgstr "Activeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:158
+#, fuzzy
+msgid "&Disable Handler"
+msgstr "Activeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:162
+#, fuzzy
+msgid "Re&move Handler"
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:164
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:166
+#, fuzzy
+msgid "&Export Handler To..."
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:171
+#, fuzzy
+msgid "&New Handler"
+msgstr "Toevoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:190
+#, fuzzy
+msgid "unnamed"
+msgstr "naamloos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:215
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:250
+#, fuzzy
+msgid "default"
+msgstr "standaard"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:314
+#, fuzzy
+msgid "none"
+msgstr "geen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:318
+#, fuzzy, c-format
+msgid ""
+"\n"
+"\n"
+"\tEvent:\n"
+"\t\t%s\n"
+"\n"
+"\tParameters:\n"
+"%s"
+msgstr ""
+"\n"
+"\n"
+"\tGebeurtenis:\n"
+"\t\t%s\n"
+"\n"
+"\tParameters:\n"
+"%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#, fuzzy
+msgid "Unable to write to the event file."
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#, fuzzy
+msgid "Unable to write to the events file."
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:486
+#, fuzzy
+msgid "Event Editor"
+msgstr "Tekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:77
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:213
+msgid "Item"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:80
+msgid "Submenu"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:83
+#, fuzzy
+msgid "External Menu"
+msgstr "nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:136
+#, fuzzy
+msgid "Label"
+msgstr "Label"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:93
+msgid "### Epilogue ###"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:94
+msgid "Epilogue"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:97
+msgid "### Prologue ###"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:98
+msgid "Prologue"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:198
+#, fuzzy
+msgid "Popup name"
+msgstr "Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:202
+#, fuzzy
+msgid "Test"
+msgstr "Tekst:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:230
+#, fuzzy
+msgid "Text:"
+msgstr "Tekst:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:236
+#, fuzzy
+msgid ""
+"<center><b>Visible text</b><br>May contain identifiers that will be "
+"evaluated at popup call time.<br>For labels, this text can contain also "
+"limited HTML tags.</center>"
+msgstr ""
+"<center><b> tekst</b><br> mei bevatten tijd<br> tekst bevatten</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:239
+#, fuzzy
+msgid "Condition:"
+msgstr "Conditie:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:245
+#, fuzzy
+msgid ""
+"<center><b>Boolean condition</b><br>Will be evaluated at popup call time in "
+"order to decide if this entry has to be shown.<br>An empty condition "
+"evaluates to true.</center>"
+msgstr ""
+"<center><b> conditie</b><br> tijd naar naar<br> leeg conditie naar juist</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:248
+#, fuzzy
+msgid "Icon:"
+msgstr "Pictogram:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:254
+#, fuzzy
+msgid ""
+"<center><b>Icon identifier</b><br>May be an internal icon ID, an absolute "
+"path or a relative path.<br>Portable scripts should never use absolute paths."
+"</center>"
+msgstr "<center><b> Pictogram</b><br> mei pictogram id of<br> nooit</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:257
+#, fuzzy
+msgid "External menu:"
+msgstr "Gebruikersnaam:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:263
+msgid ""
+"<center><b>External menu name</b><br>This allows to nest externally defined "
+"popup menus. The popup menu with the specified name will be looked up at "
+"menu setup time.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:266
+#, fuzzy
+msgid "Item Id:"
+msgstr "Achternaam:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:273
+msgid ""
+"<center><b>Item id</b><br>This will allow you to use delpopupitem later.</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:386
+#, fuzzy
+msgid "New Separator Below"
+msgstr "Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:388
+#, fuzzy
+msgid "New Separator Above"
+msgstr "Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:391
+#, fuzzy
+msgid "New Separator Inside"
+msgstr "Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:396
+#, fuzzy
+msgid "New Label Below"
+msgstr "Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:398
+#, fuzzy
+msgid "New Label Above"
+msgstr "Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:401
+#, fuzzy
+msgid "New Label Inside"
+msgstr "Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:406
+#, fuzzy
+msgid "New Item Below"
+msgstr "Nieuw item"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:408
+#, fuzzy
+msgid "New Item Above"
+msgstr "Nieuw item"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:411
+#, fuzzy
+msgid "New Item Inside"
+msgstr "Nieuw item"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:416
+#, fuzzy
+msgid "New Menu Below"
+msgstr "Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:418
+#, fuzzy
+msgid "New Menu Above"
+msgstr "Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:421
+#, fuzzy
+msgid "New Menu Inside"
+msgstr "Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:426
+#, fuzzy
+msgid "New External Menu Below"
+msgstr "Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:428
+#, fuzzy
+msgid "New External Menu Above"
+msgstr "Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:431
+#, fuzzy
+msgid "New External Menu Inside"
+msgstr "Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:451
+#, fuzzy
+msgid "&Paste Below"
+msgstr "Plakken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:456
+#, fuzzy
+msgid "Paste Above"
+msgstr "Plakken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:461
+#, fuzzy
+msgid "Paste Inside"
+msgstr "Plakken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:473
+#, fuzzy
+msgid "New Menu Prologue"
+msgstr "Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:481
+#, fuzzy
+msgid "New Menu Epilogue"
+msgstr "Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1042
+#, fuzzy
+msgid "Popup"
+msgstr "Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1048
+#, fuzzy
+msgid "&Export selected To..."
+msgstr "Beginwaarde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1099
+#, fuzzy
+msgid "&New Popup"
+msgstr "Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1105
+#, fuzzy
+msgid "Re&move Popup"
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1112
+#, fuzzy
+msgid "&Export Popup To..."
+msgstr "Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#, fuzzy
+msgid "Unable to write to the popup file."
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1382
+#, fuzzy
+msgid "Popup Editor"
+msgstr "Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:62
+#, fuzzy
+msgid "%cCore action: %Q"
+msgstr "Verloren verbinding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:64
+#, fuzzy
+msgid "%cUser action: %Q"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:65
+#, fuzzy
+msgid "Label: %Q"
+msgstr "Label"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:66
+#, fuzzy
+msgid "Category: %Q"
+msgstr "Categorie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:112
+msgid "The action \"%1\" is disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:259
+#, fuzzy
+msgid "The action \"%1\" does not exist"
+msgstr "bron s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:255
+msgid "The action \"%1\" is a core action and cannot be destroyed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:392
+msgid "The switch -l requires -c"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:409
+msgid "The switch -s requires -w with a combination of flags 'c','x' and 'q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:420
+msgid ""
+"The action \"%1\" is already defined as core action and cannot be overridden"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:116
+#, fuzzy
+msgid "Ops.. internal error"
+msgstr "Interne fout"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:125
+#, fuzzy
+msgid "Manage File &Transfers"
+msgstr "Bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:67
+#, fuzzy
+msgid "Choose Avatar - KVIrc"
+msgstr "map."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:72
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:283
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:358
+msgid "Internal error: I'm not in the user database ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:245
+#, fuzzy
+msgid "Can't set the current avatar to '%Q': failed to start the http transfer"
+msgstr "de naar s de nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:249
+#, fuzzy
+msgid "Can't set the current avatar to '%Q': can't load the image"
+msgstr "de naar s de nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:351
+#, fuzzy
+msgid "Invalid timeout specified, using default"
+msgstr "pictogram s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:389
+#, fuzzy
+msgid "Can't add a file offer for file %Q (huh ? file not readable ?)"
+msgstr "toevoegen file voor file s file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:396
+#, fuzzy
+msgid "Added %d secs file offer for file %Q (%Q) and receiver %Q"
+msgstr "Toegevoegd seconden file voor file s s en"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:403
+#, fuzzy
+msgid "Notifying avatar '%Q' to %Q"
+msgstr "s naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:55
+#, fuzzy
+msgid "&Execute"
+msgstr "Uitvoeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:59
+msgid "Params:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:107
+msgid "Script Tester"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:220
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:413
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:543
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:628
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:765
+#, fuzzy
+msgid "The config file with id '%Q' is not open"
+msgstr "file s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:538
+msgid ""
+"The config file '%Q' has been changed but is opened as read-only: changes "
+"will be lost"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:583
+#, fuzzy
+msgid "The config file with id '%Q' is read only"
+msgstr "file s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:178
+#, fuzzy
+msgid "Colors"
+msgstr "Sluiten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:255
+#, fuzzy
+msgid "Context sensitive help"
+msgstr "Plakken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1167
+msgid "&Replace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:268
+msgid "Find & Repalce"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1148
+msgid "Word to Find"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1156
+msgid "Replace with"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1172
+msgid "&Replace in all Aliases"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1176
+#, fuzzy
+msgid "&Findnext"
+msgstr "Algemene"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1181
+msgid "&Replace(WIP)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:227
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:547
+msgid "The specified toolbar doesn't exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:424
+#, fuzzy
+msgid "No action name/index specified"
+msgstr "Nee naam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:441
+#, fuzzy
+msgid "The action parameter didn't evaluate to an index"
+msgstr "Linkse operator is geen nummer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:455
+#, fuzzy
+msgid "The toolbar does not contain the specified item"
+msgstr "Nee naam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:513
+#, fuzzy
+msgid "The action \"%Q\" doesn't exist"
+msgstr "file s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:31
+msgid "Torrent Client"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:361
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:364
+#, fuzzy
+msgid "Standalone Servers"
+msgstr "Cursor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:112
+#, fuzzy
+msgid ""
+"%Q doesn't look like a servers.ini file.\n"
+"Import failed."
+msgstr "s file."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:122
+msgid "Choose a servers.ini file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:146
+msgid "Remote mIRC servers.ini Import Wizard"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:154
+msgid ""
+"<center><b>Welcome!</b><br><br>This wizard will guide you in the process of "
+"downloading a list of IRC servers. Please click \"<b>Next</b>\" to begin the "
+"operation.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:161
+msgid ""
+"<center>Here you can modify the URL that the list will be downloaded from. "
+"In most cases the default URL is acceptable.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:169
+#, fuzzy
+msgid "URL Selection"
+msgstr "Nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:173
+msgid "Please wait while the list is being downloaded"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:179
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:195
+msgid "List Download"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:229
+#, fuzzy
+msgid "Failed to start the server list transfer :("
+msgstr "Faalde naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:245
+msgid "File downloaded: processing ..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:255
+msgid "%1 servers imported succesfully"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:257
+msgid "No servers imported"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:326
+#, fuzzy
+msgid "Import from servers.ini"
+msgstr "Samenvoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:333
+#, fuzzy
+msgid "Import from http://www.mirc.co.uk/servers.ini"
+msgstr "Samenvoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lineedit.cpp:372
+#, fuzzy
+msgid "Unknown echo mode %Q"
+msgstr "Onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:203
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:359
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:172
+#, fuzzy
+msgid "Widget parameter is not an object"
+msgstr "venster is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:230
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:250
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:449
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:485
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:177
+#, fuzzy
+msgid "Widget parameter is not a valid object"
+msgstr "venster is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:95
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:263
+msgid "Widget object required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:151
+#, fuzzy
+msgid "Unknown dock area '%Q'"
+msgstr "Onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:321
+#, fuzzy
+msgid "Unknown alignment: '%Q'"
+msgstr "Onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:373
+#, fuzzy
+msgid "Unknown style: '%Q'"
+msgstr "onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:84
+msgid "the toolbar cannot be a parent-widget!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:93
+#, fuzzy
+msgid "The parent-widget isn't a MainWindow."
+msgstr "venster is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:999
+msgid "The array passed as parameter must contain at least 4 elements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1012
+msgid "One of the geometry array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1017
+#, fuzzy
+msgid "One of the geometry array parameters didn't evaluate to an integer"
+msgstr "Linkse operator is geen nummer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:503
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1032
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1500
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1044
+#, fuzzy
+msgid "The first parameter didn't evaluate to an array nor an integer"
+msgstr "Linkse operator is geen nummer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1419
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1476
+msgid "The array passed as parameter must contain at least 2 elements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:451
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:486
+msgid "One of the array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:456
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:491
+#, fuzzy
+msgid "One of the array parameters didn't evaluate to an integer"
+msgstr "Linkse operator is geen nummer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:478
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:804
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:993
+msgid "The array passed as parameter must contain at least 3 elements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:551
+#, fuzzy
+msgid "Unknown orientation"
+msgstr "Onbekende functie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:789
+msgid "Pixmap or Widget parameter is not an object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:730
+msgid "Widget or Pixmap required "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:852
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:862
+#, fuzzy
+msgid "Invalid mode '%Q'"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:886
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1701
+#, fuzzy
+msgid "Pixmap parameter is not an object"
+msgstr "venster is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:891
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1706
+msgid "Pixmap object required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1027
+msgid ""
+"$setGeometry() requires either an array as first parameter or four integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:813
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1002
+msgid "One of the colors array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:818
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1007
+#, fuzzy
+msgid "One of the colors array parameters didn't evaluate to an integer"
+msgstr "Linkse operator is geen nummer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1020
+msgid "A string of 6 digits hex is required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:842
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1031
+msgid "Not an hex digits"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1144
+msgid ""
+"$setForegroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1219
+msgid ""
+"$setBackgroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1426
+#, fuzzy
+msgid "One of the move array parameters is empty"
+msgstr "Linkse operator is geen nummer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1431
+#, fuzzy
+msgid "One of the move array parameters didn't evaluate to an integer"
+msgstr "Linkse operator is geen nummer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1438
+msgid "$move() requires either an array as first parameter or two integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1483
+#, fuzzy
+msgid "One of the resize array parameters is empty"
+msgstr "Linkse operator is geen nummer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1488
+#, fuzzy
+msgid "One of the resize array parameters didn't evaluate to an integer"
+msgstr "Linkse operator is geen nummer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1495
+msgid "$resize() requires either an array as first parameter or two integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1528
+#, fuzzy
+msgid "Invalid parameters"
+msgstr "Ongeldige parameter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1560
+#, fuzzy
+msgid "Unknown widget flag '%Q'"
+msgstr "Onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1592
+#, fuzzy
+msgid "Unknown style '%Q'"
+msgstr "onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1622
+msgid "No Layout associated to the widget "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:117
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:152
+msgid "Can't add a non-widget object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1650
+#, fuzzy
+msgid "Parent must be a widget object"
+msgstr "de IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1715
+#, fuzzy
+msgid "Null mask"
+msgstr "Bestand"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1740
+#, fuzzy
+msgid "Unknown widget attribute '%Q'"
+msgstr "Onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:382
+#, fuzzy
+msgid "No such line number"
+msgstr "Nee s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:500
+#, fuzzy
+msgid "Unknown word wrap '%Q'"
+msgstr "Onbekende operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:519
+msgid "Unknown wrap policy'%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:850
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1039
+msgid "$setColor requires either an array as first parameter or three integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:975
+#, fuzzy
+msgid "Unknown text format '%Q'"
+msgstr "Onbekende functie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1071
+#, fuzzy
+msgid " I can't find the specified file '%Q'."
+msgstr "de commando venster door id s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1078
+#, fuzzy
+msgid " I cannot read the file %Q'."
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1113
+#, fuzzy
+msgid "Unknown alignment '%Q'"
+msgstr "Onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1131
+#, fuzzy
+msgid "Unknown auto formatting mode '%Q'"
+msgstr "Onbekende operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1149
+#, fuzzy
+msgid "Unknown vertical alignment '%Q'"
+msgstr "Onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:264
+#, fuzzy
+msgid "pix '%Q' doesn't exists"
+msgstr "file s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:276
+#, fuzzy
+msgid "Can't add a non - popupmenu object"
+msgstr "de IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:302
+#, fuzzy
+msgid "Doesn't a widget object"
+msgstr "de IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:182
+#, fuzzy
+msgid "I can't find the specified file %Q."
+msgstr "de commando venster door id s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:222
+#, fuzzy
+msgid "Destination parameter is not an object"
+msgstr "venster is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:228
+#, fuzzy
+msgid "Destination must be a pixmap object"
+msgstr "venster is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:238
+msgid "Area dimensions are out of destination size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:253
+msgid "Pixmap dimensions are out of destination size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:261
+msgid "Offset width area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:266
+msgid "Offset height area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:121
+msgid "The widget must be a child of this hbox"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:191
+msgid "No string parameter given - using empty string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:194
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:214
+#, c-format
+msgid "Item index [%d] is too big - defaulting to $count() - 1 [%d]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:333
+#, fuzzy
+msgid "Invalid insertion Policy %Q"
+msgstr "voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:136
+#, fuzzy
+msgid "Unknown mode "
+msgstr "Onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:149
+#, fuzzy
+msgid "Unknown segment style "
+msgstr "Onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_process.cpp:221
+msgid "Process could not be starded."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:279
+#, fuzzy
+msgid "Invalid selection mode '%Q' assuming single"
+msgstr "voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:316
+#, fuzzy
+msgid "Unknown text position '%Q'"
+msgstr "Onbekende functie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:256
+#, fuzzy
+msgid "Unknown tickmark '%Q'"
+msgstr "Onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:271
+#, fuzzy
+msgid "Unknown orientation '%Q'"
+msgstr "Onbekende functie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:500
+#, fuzzy
+msgid "No socket object specified"
+msgstr "Nee masker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:506
+msgid "Invalid socket object specified (it doesn't inherit from socket)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:518
+msgid "There is no connection to accept!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:591
+#, c-format
+msgid "Value %d for port is out of range (values allowed are from 0 to 65535"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:596
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:87
+msgid "Another connection in progress"
+msgstr "Een andere verbinding bezig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:648
+msgid "No IPV6 support in this executable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:670
+#, fuzzy
+msgid "Invalid IP address specified ('%Q')"
+msgstr "Ongeldig IP adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:89
+msgid "Socket creation failed"
+msgstr "Aanmaak van een socket mislukt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:706
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:727
+#, fuzzy
+msgid "Invalid socket address"
+msgstr "Ongeldig IP adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:714
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:735
+msgid "Bind failure"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:745
+msgid "Listen failure"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:812
+msgid "unknown"
+msgstr "onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:876
+#, fuzzy
+msgid "Invalid ip address "
+msgstr "Ongeldig IP adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:882
+#, fuzzy
+msgid "Invalid ip address (%Q)"
+msgstr "Ongeldig IP adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:906
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1013
+#, fuzzy
+msgid "Failed to create the socket"
+msgstr "Faalde naar de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:918
+#, fuzzy
+msgid "Failed to setup a nonblocking socket"
+msgstr "Faalde naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:939
+#, fuzzy
+msgid "Connect failure: "
+msgstr "Verbinding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:967
+#, fuzzy
+msgid "Connect attempt timed out"
+msgstr "Maximale tijd om te verbinden overschreden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:993
+#, fuzzy
+msgid "Can't start the DNS thread"
+msgstr "de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:1143
+msgid ""
+"Too much unprocessed incoming data (you've left this socket unmanaged ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:149
+msgid "Error in KVS class implementation: processing aborted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:154
+#, fuzzy
+msgid "Processing aborted"
+msgstr "koppeling"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:160
+#, c-format
+msgid "Error near line %d, column %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:162
+#, c-format
+msgid "Warning near line %d, column %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:313
+#, fuzzy
+msgid "XML support not available in the Qt library"
+msgstr "Functie niet beschikbaar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:491
+#, fuzzy
+msgid "Not a widget object"
+msgstr "de IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:308
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:497
+#, fuzzy
+msgid "Can't find the tab "
+msgstr "s de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:522
+#, fuzzy
+msgid "Unknown position 'Q%'"
+msgstr "Onbekende functie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:123
+msgid "The widget must be a child of this vbox"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:276
+#, fuzzy
+msgid "Not Enough Parameters"
+msgstr "Niet voldoende parameters"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:142
+msgid "The listviewitem cannot be parentless"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:152
+msgid ""
+"The parent of the listviewitem must be either another listviewitem or a "
+"listview"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:403
+msgid "Pixmap object or image Id required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:413
+msgid ""
+"Error occured: the suitable file '%Q' is not of the correct format or it is "
+"not a valid icon number."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:151
+msgid ""
+"The window identifier preceeded by WinId must be the first object in the "
+"search path"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:167
+#, fuzzy
+msgid "Failed to find one of the wrap path widgets (%Q::%Q)"
+msgstr "Faalde naar de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:176
+#, fuzzy
+msgid "Failed to find the widget to wrap"
+msgstr "Faalde naar de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:119
+msgid "The parent of a layout must be a widget!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:269
+#, fuzzy
+msgid "Invalid resize mode defaulting to Auto"
+msgstr "s naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:324
+#, fuzzy
+msgid "Unknown alignment"
+msgstr "Onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:373
+#, fuzzy
+msgid "Unknown orientation: "
+msgstr "Onbekende functie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listview.cpp:320
+#, fuzzy
+msgid "Invalid selection mode '%Q'"
+msgstr "voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tbrowser.cpp:99
+#, fuzzy
+msgid "I can't find the specified file '%Q'."
+msgstr "de commando venster door id s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:121
+#, fuzzy
+msgid "Can't add a null object"
+msgstr "de IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:128
+msgid ""
+"Invalid object handle passed as parameter (the object is no longer "
+"existing ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:134
+msgid "Object in invalid state"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:140
+msgid "Can't set a non-widget object to be the main widget of a dock window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:146
+msgid "The added widget is not a child of this dock window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:271
+#, fuzzy
+msgid "Invalid dock area specified"
+msgstr "Ongeldig IP adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:181
+#, fuzzy
+msgid "Class '%Q' is not definited"
+msgstr "s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:257
+msgid "Inexisting target object for objects.connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:262
+msgid "Inexisting source object for objects.connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:444
+#, fuzzy
+msgid "The class '%Q' does not exist"
+msgstr "bron s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:404
+#, fuzzy
+msgid "Object does not exists"
+msgstr "is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:557
+msgid "Inexisting target object for objects.disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:562
+msgid "Inexisting source object for objects.disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:608
+#, fuzzy
+msgid "Source is not an object"
+msgstr "venster is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:614
+#, fuzzy
+msgid "Destination is not an object"
+msgstr "venster is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:625
+msgid "Widget, Image or Pixmap required "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:635
+msgid "Widget or Pixmap required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:714
+msgid "One o more of background, foreground or destination aren't objects"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:720
+#, fuzzy
+msgid "Pixmap objects required"
+msgstr "Tekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:743
+msgid "Values for background are out of image size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:748
+msgid "Values for foreground are out of image size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:226
+#, fuzzy
+msgid "Empty filename string"
+msgstr "Leeg bestandsnaam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:271
+#, fuzzy
+msgid "No such open mode: '%Q'"
+msgstr "Nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:312
+#, fuzzy
+msgid "File is not open!"
+msgstr "Bestand is!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:348
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:406
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:434
+#, fuzzy
+msgid "File is not open !"
+msgstr "Bestand is!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:369
+#, fuzzy
+msgid "Argument to long, using only first char"
+msgstr "naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:339
+#, fuzzy
+msgid "Write error occured !"
+msgstr "Schrijven!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:352
+#, fuzzy
+msgid "Read error occured !"
+msgstr "Gelezen!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:371
+msgid "An error occured !"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:387
+#, fuzzy
+msgid "Missing both encrypt and decrypt key: at least one is needed"
+msgstr "beide en is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:168
+#, fuzzy
+msgid "Error 0: Success ?"
+msgstr "Fout Succesvol?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:169
+msgid "Unsupported crypt mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:170
+msgid "Unsupported direction"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:171
+msgid "Unsupported key length"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:172
+msgid "Bad key data"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:173
+msgid "Engine not initialized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:174
+#, fuzzy
+msgid "Invalid direction for this engine"
+msgstr "voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:175
+#, fuzzy
+msgid "Corrupted message data or invalid decrypt key"
+msgstr "of"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:52
+msgid "Unknown error"
+msgstr "Onbekende fout"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:184
+msgid "Ops...encrypt cipher not initialized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:420
+#, fuzzy
+msgid "Data buffer too long"
+msgstr "Als gegevens-cd buffer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:221
+msgid "Ops...decrypt cipher not initialized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:277
+#, fuzzy
+msgid "The message is not a hexadecimal string: this is not my stuff"
+msgstr "is is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:671
+#, fuzzy
+msgid "The message is not a base64 string: this is not my stuff"
+msgstr "is is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:676
+msgid "The message doesn't seem to be encoded with CBC Mircryption"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:712
+#, fuzzy, c-format
+msgid ""
+"Cryptographic engine based on the\n"
+"Advanced Encryption Standard (AES)\n"
+"algorithm called Rijndael.\n"
+"The text is first encrypted with rijndael\n"
+"and then converted to %s notation.\n"
+"The keys used are %d bit long and will be padded\n"
+"with zeros if you provide shorter ones.\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"See the rijndael module documentation\n"
+"for more info on the algorithm used.\n"
+msgstr ""
+"aan de\n"
+" Geavanceerd Encryptie Standaard\n"
+"\n"
+" tekst is door\n"
+" en naar s\n"
+" gebruikt en\n"
+" door\n"
+" is\n"
+" it voor beide en\n"
+" de module documentatie\n"
+" voor aan de gebruikt\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:739
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:749
+msgid "hexadecimal"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:759
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:779
+msgid "base64"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:790
+#, fuzzy
+msgid ""
+"Popular cryptographic engine based on the\n"
+"old Blowfish encryption algorithm.\n"
+"The text is first encrypted with Blowfish \n"
+"and then converted to base64 notation.\n"
+"The keys used have variable length and\n"
+"are specified as character strings.\n"
+"You can specify keys long up to 56 bytes (448 bits).\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"This engine works in ECB mode by default:\n"
+"if you want to use CBC mode you must prefix\n"
+"your key(s) with \"cbc:\".\n"
+msgstr ""
+"aan de\n"
+" Geavanceerd Encryptie Standaard\n"
+"\n"
+" tekst is door\n"
+" en naar s\n"
+" gebruikt en\n"
+" door\n"
+" is\n"
+" it voor beide en\n"
+" de module documentatie\n"
+" voor aan de gebruikt\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:61
+msgid "Drop here the icons from the toolbars to remove them"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:128
+#, fuzzy
+msgid "ToolBar Properties"
+msgstr "H&ulpmiddelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:144
+#, fuzzy
+msgid "Icon"
+msgstr "Pictogram"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:160
+#, fuzzy
+msgid "Id"
+msgstr "Id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:217
+msgid "Please choose the icon for the ToolBar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+#, fuzzy
+msgid "Invalid ToolBar Label"
+msgstr "ongeldig poort nummer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+#, fuzzy
+msgid "The ToolBar Label can't be empty!"
+msgstr "veld"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:256
+msgid "Duplicate ToolBar Id"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:257
+msgid ""
+"The specified ToolBar Id already exists.<br>Would you like KVIrc to assign "
+"it automatically (so it doesn't collide with any other toolbar) or you "
+"prefer to do it manually ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Manually"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+#, fuzzy
+msgid "Automatically"
+msgstr "Auto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:278
+#, fuzzy
+msgid "Hide Advanced"
+msgstr "Toevoegen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:287
+#, fuzzy
+msgid "Customize Toolbars"
+msgstr "Cursor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:296
+#, fuzzy
+msgid "New ToolBar"
+msgstr "H&ulpmiddelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:300
+#, fuzzy
+msgid "Delete ToolBar"
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:304
+#, fuzzy
+msgid "Edit ToolBar"
+msgstr "Bladwijzers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:312
+#, fuzzy
+msgid "Export ToolBar"
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:373
+msgid "Confirm ToolBar Deletion"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:374
+msgid "Do you really want to delete toolbar \"%1\" ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:397
+#, fuzzy
+msgid "ToolBar Export"
+msgstr "Omschakelen ban editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:398
+msgid "Do you want the associated actions to be exported with the toolbar ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#, fuzzy
+msgid "Unable to write to the toolbar file."
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:465
+msgid "Please specify the properties for the toolbar \"%1\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:491
+msgid "Please specify the properties for the new toolbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:493
+#, fuzzy
+msgid "My ToolBar"
+msgstr "H&ulpmiddelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:63
+#, fuzzy
+msgid "Window with ID '%Q' not found"
+msgstr "Venster s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:67
+#, fuzzy
+msgid "The specified window (%Q) is not a channel/query/DCC chat"
+msgstr "venster is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:108
+#, fuzzy
+msgid "File not found or empty"
+msgstr "Bestand Niet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:114
+#, fuzzy
+msgid "I can't open that file"
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:122
+msgid "Could not paste file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:218
+#, fuzzy
+msgid "The specified window (%Q) is not a channel/query/dcc"
+msgstr "venster is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:271
+msgid "Slow-paste ID:%d Window:%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:240
+msgid "Plugin not found. Please check the plugin-name and path."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:247
+msgid "Error while loading plugin."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:311
+msgid "This plugin does not export the desired function."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:327
+msgid ""
+"The plugin has no function to free memory. This can result in Memory Leaks!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:209
+#, c-format
+msgid "No environment variable found, please don't use the %% in the request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:482
+#, fuzzy
+msgid "Invalid DCOP parameter syntax"
+msgstr "Ongeldige parameter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:495
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:516
+#, fuzzy
+msgid "The specified parameter is not an integer"
+msgstr "venster is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:521
+#, fuzzy, c-format
+msgid "Unsupported DCOP parameter type %s"
+msgstr "Gebruik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:534
+msgid "DCOP call failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:599
+msgid "DCOP calls are available only when KDE support is compiled in"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1408
+#, fuzzy, c-format
+msgid "The window with id '%s' does not exist"
+msgstr "file s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:851
+#, fuzzy
+msgid "Window type or 'all' expected as first parameter"
+msgstr "Venster of alles"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:938
+#, fuzzy
+msgid "Invalid IRC context id '%Q'"
+msgstr "IRC id s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1045
+#, fuzzy
+msgid "The specified IRC context is not valid: creating a context free window"
+msgstr "is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1119
+#, fuzzy
+msgid "The specified window is not of type \"userwnd\""
+msgstr "venster is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1208
+msgid "Window doesn't have input widget"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1363
+msgid "The encrypt key wasn't a valid hexadecimal string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1377
+msgid "The decrypt key wasn't a valid hexadecimal string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1414
+msgid "Both -n and -m switchess specified, -n takes precedence"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1424
+msgid "No encrypt key specified: can't allocate engine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1446
+#, fuzzy
+msgid "Unknown engine error"
+msgstr "Onbekende fout"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1449
+#, fuzzy
+msgid "Failed to initialize the specified crypt engine: %Q"
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1453
+#, fuzzy
+msgid "The crypt engine \"%Q\" does not exist"
+msgstr "bron s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1458
+#, fuzzy
+msgid "This executable has been compiled without crypt support"
+msgstr "De KVIrc executabele heeft geen IPV6 support"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:138
+#, fuzzy
+msgid "Current window is not a channel"
+msgstr "venster is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:87
+#, fuzzy
+msgid "Raw Event"
+msgstr "Gebeurtenis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:97
+#, fuzzy
+msgid "Edit the raw event handler name."
+msgstr "Bezig met laden van de 'event handlers'..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:179
+#, fuzzy
+msgid "&Add Raw Event..."
+msgstr "Toevoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+#, fuzzy
+msgid "New Raw Event"
+msgstr "Bezig met laden van de 'event handlers'..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "Enter the numeric code of the message (0-999)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#, fuzzy
+msgid "Unable to write to the raw event file."
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+#, fuzzy
+msgid "Unable to write to the raw events file."
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:512
+#, fuzzy
+msgid "Raw Editor"
+msgstr "Tekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:219
+msgid "A really lame text transformation engine :D"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:229
+msgid "A really lame text transformation engine: Light Version."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:82
+#, fuzzy, c-format
+msgid "Socket Spy [IRC Context %u]"
+msgstr "Bespionneren IRC Context"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:92
+#, fuzzy, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Socket Spy</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b> Bespionneren</b></font><font color=\"%s\"> IRC "
+"Context</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:112
+msgid "Socket open"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:117
+msgid "Socket closed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:149
+#, fuzzy
+msgid "Internal unique name for the action"
+msgstr "file naam voor de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:151
+#, fuzzy
+msgid "Label:"
+msgstr "Label"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:155
+msgid ""
+"Visible name for this action.<br>This string will be displayed to the user "
+"so it is a good idea to use $tr() here"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:166
+#, fuzzy
+msgid "Action code"
+msgstr "Op&slaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:168
+#, fuzzy
+msgid "Code"
+msgstr "Sluiten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:174
+#, fuzzy
+msgid "Category:"
+msgstr "Categorie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:178
+msgid "Choose the category that best fits for this action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:180
+#, fuzzy
+msgid "Description:"
+msgstr "Beschrijving:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:184
+msgid ""
+"Visible short description for this action.<br>This string will be displayed "
+"to the user so it is a good idea to use $tr() here"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:186
+#, fuzzy
+msgid "Small Icon:"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:194
+msgid ""
+"The small icon associated to this action.<br>It will appear at least in the "
+"popup menus when this action is inserted.<br>It should be 16x16 pixels."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:200
+#, fuzzy
+msgid "Big Icon:"
+msgstr "Bezig met laden van de iconen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:209
+msgid ""
+"The big icon associated to this action.<br>It will appear at least in the "
+"toolbar buttons when this action is inserted.<br>It should be 32x32 pixels."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:215
+msgid "Key Sequence:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:219
+msgid ""
+"Optional keyboard sequence that will activate this action.<br>The sequence "
+"should be expressed as a string of up to four key codes separated by commas "
+"eventually combined with the modifiers \"Ctrl\",\"Shift\",\"Alt\" and \"Meta"
+"\".<br>Examples of such sequences are \"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl+X,"
+"Ctrl+C\" ..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:240
+#, fuzzy
+msgid "Needs IRC Context"
+msgstr "&Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:242
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window belongs to an irc context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:250
+#, fuzzy
+msgid "Needs IRC Connection"
+msgstr "&Nieuw verbinding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:252
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window has an active IRC connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:260
+#, fuzzy
+msgid "Enable at Login"
+msgstr "Activeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:261
+msgid ""
+"Check this option if this action should be enabled also during the login "
+"operations (so when the logical IRC connection hasn't been estabilished yet)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:265
+msgid "Enable Only in Specified Windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:267
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is of a specified type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:271
+#, fuzzy
+msgid "Enable in Console Windows"
+msgstr "&Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:272
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a console"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:277
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:299
+msgid "Only If There Are Selected Users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:278
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:300
+msgid ""
+"This will enable the action only if there are selected users in the active "
+"window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:282
+#, fuzzy
+msgid "Enable in Channel Windows"
+msgstr "Trapgewijs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:283
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:293
+#, fuzzy
+msgid "Enable in Query Windows"
+msgstr "&Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:294
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:304
+#, fuzzy
+msgid "Enable in DCC Chat Windows"
+msgstr "Trapgewijs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:305
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a dcc chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:627
+#, fuzzy
+msgid "Action"
+msgstr "Acties"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:680
+#, fuzzy
+msgid "New Action"
+msgstr "Acties"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:683
+#, fuzzy
+msgid "Delete Actions"
+msgstr "Nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:686
+#, fuzzy
+msgid "Export Actions..."
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+#, fuzzy
+msgid "Unable to write to the actions file."
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:823
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:824
+#, fuzzy
+msgid "My Action"
+msgstr "Acties"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:825
+msgid "Put here a short description of your action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:925
+#, fuzzy
+msgid "Action Editor"
+msgstr "Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:938
+msgid "Apply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:63
+msgid "Outgoing traffic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:67
+msgid "Incoming traffic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_crypt.cpp:160
+msgid "Invalid crypt engine"
+msgstr "Ongeldige encryptie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:296
+#, fuzzy
+msgid "Directory"
+msgstr "Map"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:315
+msgid "Socket"
+msgstr "Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:332
+msgid "Fifo"
+msgstr "Fifo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:349
+msgid "Block device"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:366
+#, fuzzy
+msgid "Char device"
+msgstr "Karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:429
+msgid "Octet stream (unknown)"
+msgstr "Octet stream (onbekend)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_osinfo.cpp:413
+#, fuzzy
+msgid "Unknown "
+msgstr "Onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:181
+#, fuzzy
+msgid "The specified network has no server entries"
+msgstr "venster is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:239
+msgid ""
+"The server specification seems to be in the net:<string> but the network "
+"couln't be found in the database"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:261
+msgid ""
+"The server specification seems to be in the id:<string> form but the "
+"identifier coulnd't be found in the database"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:71
+#, fuzzy
+msgid "Aborted"
+msgstr "Afbreken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:96
+#, fuzzy
+msgid "No request"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:141
+msgid "No filename specified for the \"StoreToFile\" processing type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:160
+msgid "Invalid URL: Missing hostname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:167
+#, fuzzy
+msgid "Unsupported protocol %1"
+msgstr "Gebruik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:189
+#, fuzzy
+msgid "Unable to start the DNS lookup"
+msgstr "Faalde naar de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:194
+#, c-format
+msgid "Looking up host %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:210
+#, fuzzy
+msgid "Host %s resolved to %Q"
+msgstr "Proxy naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:246
+#, fuzzy
+msgid "Unable to start the request slave thread"
+msgstr "de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:251
+#, fuzzy
+msgid "Contacting host %Q on port %u"
+msgstr "s aan poort"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:271
+#, fuzzy
+msgid "Connection established, sending request"
+msgstr "Verbinding s s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:322
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:51
+msgid "Success"
+msgstr "Succesvol"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:429
+msgid "Failed to rename the existing file, please rename manually and retry"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:447
+#, fuzzy
+msgid "Can't open file \"%Q\" for writing"
+msgstr "de file s voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:497
+#, fuzzy, c-format
+msgid "Invalid HTTP response: %s"
+msgstr "Ongeldig IP adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:503
+#, c-format
+msgid "Received HTTP response: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:628
+msgid "Stream exceeding maximum length"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:661
+msgid "Header too long: exceeded 4096 bytes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:710
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:852
+msgid "Stream exceeded expected length"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:798
+msgid "Protocol error: invalid chunk size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:818
+msgid "Chunk header too long: exceeded 4096 bytes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:987
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1193
+#, fuzzy
+msgid "Operation timed out"
+msgstr "Handeling"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1003
+#, fuzzy
+msgid "Unexpected SSL error"
+msgstr "Onverwacht karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1016
+#, fuzzy
+msgid "Failed to enter non blocking mode"
+msgstr "Faalde naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1021
+msgid "Invalid target address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1056
+#, fuzzy
+msgid "Failed to initialize the SSL context"
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1058
+#, fuzzy
+msgid "Failed to initialize the SSL connection"
+msgstr "Faalde naar de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1075
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:99
+msgid "Remote end has closed the connection"
+msgstr "De andere kant heeft de verbinding verbroken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1087
+#, fuzzy
+msgid "Unrecoverable SSL error during handshake"
+msgstr "Onherstelbare naamserver error (vastgelopen ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1272
+#, fuzzy
+msgid "Operation timed out (while selecting for read)"
+msgstr "Handeling voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1382
+#, fuzzy
+msgid "This KVIrc executable has no SSL support"
+msgstr "De KVIrc executabele heeft geen IPV6 support"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1147
+msgid "Back"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:268
+#, fuzzy
+msgid "Next"
+msgstr "Tekst:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:168
+#, fuzzy
+msgid "%1 bytes"
+msgstr "ja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:172
+msgid "%1 KB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:176
+msgid "%1 MB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:181
+msgid "%1 GB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:185
+msgid "%1 TB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:620
+msgid "Internal error"
+msgstr "Interne fout"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:54
+msgid "Unknown command"
+msgstr "Onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:55
+msgid "Missing closing brace"
+msgstr "Ontbrekend sluitend haakje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:56
+msgid "Unexpected end of command in string"
+msgstr "Onverwacht einde van commando in de string"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:57
+msgid "Unexpected end of command in dictionary key"
+msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:58
+msgid "Switch dash without switch letter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:59
+msgid "Unknown function"
+msgstr "Onbekende functie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:60
+msgid "Unexpected end of command in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:61
+msgid "Unexpected end of command in function parameters"
+msgstr "Onverwahct einde van commando in de functie parameters"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:62
+msgid "Missing variable name"
+msgstr "Ontbrekende variabele naam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:63
+msgid "Variable or identifier expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:64
+msgid "Left operand is not a number"
+msgstr "Linkse operator is geen nummer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:65
+msgid "Multiple operations not supported for numeric operators"
+msgstr "Meerdere operaties niet beschikbaar voor numerieke operators"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:67
+msgid "Modulo by zero"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:68
+msgid "Right operand is not a number"
+msgstr "Rechtse operand is geen nummer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:69
+msgid "Unterminated expression (missing ')' ?)"
+msgstr "Onbeeindigde expressie (ontbreken van een ')' ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:70
+msgid "Unterminated subexpression (Parenthesis mismatch)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:71
+msgid "Unexpected character"
+msgstr "Onverwacht karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:73
+msgid "No host to resolve"
+msgstr "Geen host om om te zetten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:74
+msgid "(DNS Internal) Unsupported address family"
+msgstr "(DNS intern) Ongesupporteerde adres familie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:75
+msgid "Valid name but the host has no IP address"
+msgstr "Geldige naam maar de host heeft geen IP adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:76
+msgid "Unrecoverable nameserver error (crashed ?)"
+msgstr "Onherstelbare naamserver error (vastgelopen ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:77
+msgid "Dns temporaneous fault (try again)"
+msgstr "Dns tijdelijke fout (probeer opnieuw)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:78
+msgid "(DNS Internal) Bad flags"
+msgstr "(DNS intern) Verkeerde flags"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:79
+msgid "(DNS Internal) Out of memory"
+msgstr "(DNS intern) Gebrek aan geheugen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:80
+msgid "(DNS Internal) Service not supported"
+msgstr "(DNS intern) Service niet beschikbaar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:81
+msgid "Unknown node (host not found)"
+msgstr "Onbekende node (host niet gevonden)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:82
+msgid "(DNS Internal) Unsupported socket type"
+msgstr "(DNS intern) ongesupporteerd socket type"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:83
+msgid "Dns query failed"
+msgstr "Dns vraag mislukt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:84
+msgid "This KVIrc executable has no IPV6 support"
+msgstr "De KVIrc executabele heeft geen IPV6 support"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:85
+msgid "Host not found"
+msgstr "Host werd niet gevonden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:86
+msgid "(DNS Internal) IPC failure (slave data corrupted)"
+msgstr "(DNS intern)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:88
+msgid "Invalid IP address"
+msgstr "Ongeldig IP adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:90
+msgid "Failed to put the socket in non blocking mode"
+msgstr "Mislukt om de socket in niet blokkerende mode te zetten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:91
+msgid "Bad file descriptor"
+msgstr "Slechte bestands beschrijving"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:92
+msgid "Out of address space"
+msgstr "Gebrek aan aders plaatsen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:93
+msgid "Connection refused"
+msgstr "Verbinding gewijgerd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:94
+msgid "Kernel networking panic"
+msgstr "Kernel netwerk panic"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:95
+msgid "Connection timed out"
+msgstr "Maximale tijd om te verbinden overschreden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:96
+msgid "Network is unreachable"
+msgstr "Netwerk is onbereikbaar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:97
+msgid "Broken pipe"
+msgstr "Gebroken communicatiepijp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:98
+msgid "Invalid proxy address"
+msgstr "Ongeldig proxy adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:100
+msgid "Invalid irc context id"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:101
+msgid "Error in loading module"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:102
+msgid "No such module command"
+msgstr "Geen zo een module commando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:103
+msgid "No such module function"
+msgstr "Geen zo een module functie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:104
+msgid "Left operand is not a dictionary reference"
+msgstr "Linkse operand is geen woordenboek referentie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:105
+msgid "Right operand is not a dictionary reference"
+msgstr "Rechtse operand is geen woordenboek referentie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:106
+msgid "Missing object class name"
+msgstr "Ontbrekende objekt class naam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:107
+msgid "No such object class"
+msgstr "Geen zo een objekt klasse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:108
+msgid "No such object"
+msgstr "Geen zo een objekt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:109
+msgid "No such object function"
+msgstr "Geen zo een objekt funtie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:110
+msgid "Invalid left operand"
+msgstr "Ongeldige linkse operand"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:111
+msgid "Not enough parameters"
+msgstr "Niet voldoende parameters"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:112
+msgid "Integer parameter expected"
+msgstr "Integer parameter verwacht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:113
+msgid "Invalid parameter"
+msgstr "Ongeldige parameter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:114
+msgid "No such file"
+msgstr "Bestand bestaat niet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:115
+msgid "Open parenthesis expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:116
+msgid "Open brace expected"
+msgstr "Open haakje verwaht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:117
+msgid "Can't kill a builtin class"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:118
+msgid "The SOCKSV4 protocol lacks IpV6 support"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:119
+msgid "Unrecognized proxy reply"
+msgstr "onherkend proxy antwoord"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:120
+msgid "Proxy response: auth failed: access denied"
+msgstr "Proxy antwoord: auth mislukt: toegang geweigerd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:121
+msgid "Proxy response: No acceptable auth method: request rejected"
+msgstr "Proxy antword: geen aanvaardbare methode: aanvraag verworpen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:122
+msgid "Proxy response: request failed"
+msgstr "Proxy antwoord: aanvraag mislukt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:123
+msgid "Proxy response: ident failed"
+msgstr "Proxy antwoord: ident mislukt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:124
+msgid "Proxy response: ident not matching"
+msgstr "Proxy antwoord: ident stemt niet overeen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:125
+msgid "Proxy response: general SOCKS failure"
+msgstr "Proxy antwoord: algemeen SOCKS fout"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:126
+msgid "Proxy response: connection not allowed"
+msgstr "Proxy antwoord: verbinding niet toegestaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:127
+msgid "Proxy response: network unreachable"
+msgstr "Proxy antwoord: netwerk onbereikbaar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:128
+msgid "Proxy response: host unreachable"
+msgstr "Proxy antwoord: host onbereikbaar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:129
+msgid "Proxy response: connection refused"
+msgstr "Proxy antwoord: verbinding geweigerd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:130
+msgid "Proxy response: TTL expired"
+msgstr "Proxy antwoord: TTL vervallen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:131
+msgid "Proxy response: command not supported"
+msgstr "Proxy antwoord: commando niet supporteerd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:132
+msgid "Proxy response: address type not supported"
+msgstr "Proxy antwoord: address type niet supported"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:133
+msgid "Proxy response: invalid address"
+msgstr "Proxy antwoord: ongeldig adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:134
+msgid "Invalid port number"
+msgstr "ongeldig poort nummer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:135
+msgid "Socket not connected"
+msgstr "Socket niet verbonden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:136
+msgid "Insufficient resources to complete the operation"
+msgstr "Onvoldoende bronnen om de operatie af te werken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:137
+msgid "Can't setup a listening socket : bind failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:138
+msgid "Can't resolve the localhost name"
+msgstr "Kan de localhost naam niet omzetten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:139
+msgid "Unsupported image format"
+msgstr "Ongeldige afbeelding formaat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:140
+msgid "Can't open file for appending"
+msgstr "Kan het bestand niet openen om zaken toe te voegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:542
+msgid "Can't open file for writing"
+msgstr "Kan het bestand niet openen om naar te schrijven"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:142
+msgid "File I/O error"
+msgstr "Bestand I/O fout"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:143
+msgid "Acknowledge error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:982
+msgid "Can't open file for reading"
+msgstr "Kan het bestand niet openen om te lezen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:145
+msgid "Can't send a zero-size file"
+msgstr "Kan geen 0 byte groot bestand sturen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:146
+msgid "Missing popup name"
+msgstr "Ontbrekende popup naam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:147
+msgid "'item', 'popup', 'label' or 'separator' keyword expected"
+msgstr "'item' 'popup', 'label' of 'separator' keywoord verwacht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:148
+msgid "Self modification not allowed"
+msgstr "Eigen veranderingen niet toegestaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:149
+msgid "UNUSED"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:150
+msgid "Feature not available"
+msgstr "Functie niet beschikbaar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:151
+#, fuzzy
+msgid "Unexpected characters in array index"
+msgstr "Onverwacht karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:152
+#, fuzzy
+msgid "Unexpected end in expression"
+msgstr "Onverwacht einde van commando in de string"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:153
+#, fuzzy
+msgid "Unexpected end in array index"
+msgstr "Onverwacht einde van commando in de string"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:154
+msgid "Connection thru HTTP proxy failed"
+msgstr "Verbinding door HTTP proxy mislukt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:155
+msgid "Case , match , regexp , default or break keyword expected"
+msgstr "Case , match , regexp , default or break keywoord verwacht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:156
+msgid "Access denied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:157
+#, fuzzy
+msgid "Address already in use"
+msgstr "s is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:158
+#, fuzzy
+msgid "Can't assign the requested address"
+msgstr "de IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:159
+#, fuzzy
+msgid "Connection reset by peer"
+msgstr "Verbinding gewijgerd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:160
+msgid "Host unreachable (no route to host)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:161
+#, fuzzy
+msgid "Variable expected"
+msgstr "Open haakje verwaht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:162
+msgid "Invalid array index: positive integer expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:163
+msgid "listen() call failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:164
+#, fuzzy
+msgid "This executable has been compiled without SSL support"
+msgstr "De KVIrc executabele heeft geen IPV6 support"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:165
+msgid "Secure Socket Layer error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:166
+msgid "Slash (/) character expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:167
+msgid "Unknown string manipulation operation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:168
+#, fuzzy
+msgid "Operation aborted"
+msgstr "Verbinding geanuleerd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:169
+#, fuzzy
+msgid "Unexpected token"
+msgstr "Onverwacht karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:170
+msgid "Scope object already defined (unexpected @)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:171
+msgid "There is no $this pointer in this scope (unexpected @)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:140
+#, fuzzy
+msgid "Operation cancelled"
+msgstr "Verbinding geanuleerd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:170
+#, fuzzy
+msgid "File write error"
+msgstr "Bestand I/O fout"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:176
+#, fuzzy
+msgid "File read error"
+msgstr "Bestand I/O fout"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:324
+msgid "Packaging file %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:779
+#, fuzzy
+msgid "Failed to open a source file for reading"
+msgstr "Kan het bestand niet openen om te lezen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:817
+#, fuzzy
+msgid "Compression library initialization error"
+msgstr "Bezig met vroege initialiasatie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:394
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:828
+msgid "Compression library error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:465
+#, fuzzy
+msgid "Compression library internal error"
+msgstr "Interne fout"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:485
+msgid "Error while compressing a file stream"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:526
+#, fuzzy
+msgid "Creating package..."
+msgstr "Bezig met aanmaken van interne structuren..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:527
+msgid "Writing package header"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:571
+msgid "Writing informational fields"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:597
+msgid "Writing package data"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:659
+#, fuzzy
+msgid "The file specified is not a valid KVIrc package"
+msgstr "is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:668
+msgid ""
+"The package has an invalid version number, it might have been created by a "
+"newer KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:714
+msgid "Invalid info field: the package is probably corrupt"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:745
+msgid ""
+"The package contains compressed data but this executable does not support "
+"compression"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:771
+#, fuzzy
+msgid "Failed to create the target directory"
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:784
+msgid "Unpacking file %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:916
+msgid "Error in compressed file stream"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:990
+#, fuzzy
+msgid "Reading package..."
+msgstr "Bezig met laden van de aliassen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:991
+msgid "Reading package header"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:998
+msgid "Reading package data"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:1017
+msgid "Invalid data field: the package is probably corrupt"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1127
+#, fuzzy
+msgid "Select color"
+msgstr "Alles selecteren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1128
+#, fuzzy
+msgid "&Basic colors"
+msgstr "Cursor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1129
+#, fuzzy
+msgid "&Custom colors"
+msgstr "Cursor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1130
+msgid "&Red"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1131
+msgid "&Green"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1132
+msgid "Bl&ue"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1133
+msgid "&Define Custom Colors >>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1134
+msgid "&Add to Custom Colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1136
+#, fuzzy
+msgid "Select Font"
+msgstr "Nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1137
+#, fuzzy
+msgid "&Font"
+msgstr "Lettertype"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1138
+msgid "Font st&yle"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1139
+#, fuzzy
+msgid "&Size"
+msgstr "Grootte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1140
+msgid "Sample"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1141
+msgid "Effects"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1142
+msgid "Stri&keout"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1143
+msgid "&Underline"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1144
+#, fuzzy
+msgid "Scr&ipt"
+msgstr "Beschrijving"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1146
+#, fuzzy
+msgid "Parent Directory"
+msgstr "Map"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1148
+msgid "Forward"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1149
+msgid "Reload"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1150
+#, fuzzy
+msgid "New Directory"
+msgstr "Map"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1151
+#, fuzzy
+msgid "Bookmarks"
+msgstr "Bladwijzers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1152
+#, fuzzy
+msgid "Add Bookmark"
+msgstr "Toevoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1153
+#, fuzzy
+msgid "&Edit Bookmarks"
+msgstr "Bladwijzers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1154
+msgid "New Bookmark Folder..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1156
+#, fuzzy
+msgid "Sorting"
+msgstr "Beschrijving"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1157
+#, fuzzy
+msgid "By Name"
+msgstr "Naam:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1158
+msgid "By Date"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1159
+#, fuzzy
+msgid "By Size"
+msgstr "Grootte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1160
+#, fuzzy
+msgid "Reverse"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1161
+#, fuzzy
+msgid "Directories First"
+msgstr "Map"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1162
+#, fuzzy
+msgid "Case Insensitive"
+msgstr "Plakken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1163
+#, fuzzy
+msgid "Short View"
+msgstr "samenvoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1164
+msgid "Detailed View"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1165
+#, fuzzy
+msgid "Show Hidden Files"
+msgstr "Tonen verborgen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1166
+msgid "Show Quick Access Navigation Panel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1167
+#, fuzzy
+msgid "Show Preview"
+msgstr "&Venster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1168
+#, fuzzy
+msgid "Separate Directories"
+msgstr "Scheider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1169
+msgid "Often used directories"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1170
+#, fuzzy
+msgid "Desktop"
+msgstr "Verzoeken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1171
+#, fuzzy
+msgid "Home Directory"
+msgstr "Persoonlijke map"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1172
+msgid "Floppy"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1173
+msgid "Temporary Files"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1174
+#, fuzzy
+msgid "Network"
+msgstr "Netwerk"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1175
+#, fuzzy
+msgid "New Directory..."
+msgstr "Map"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1176
+#, fuzzy
+msgid "Delete"
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1177
+msgid "Thumbnail Previews"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1178
+msgid "Large Icons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1179
+#, fuzzy
+msgid "Small Icons"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1180
+#, fuzzy
+msgid "Properties..."
+msgstr "Eigenschappen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1181
+msgid "&Automatic Preview"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1182
+msgid "&Preview"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1183
+#, fuzzy
+msgid "&Location:"
+msgstr "notificatie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1184
+#, fuzzy
+msgid "&Filter:"
+msgstr "Filter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1185
+msgid "All Files"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:104
+msgid "- d -- h -- m -- s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:111
+#, fuzzy, c-format
+msgid "%u h %u m %u s"
+msgstr "s s idle tijd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:113
+#, fuzzy, c-format
+msgid "%u h %u%u m %u%u s"
+msgstr "s s idle tijd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:118
+#, fuzzy, c-format
+msgid "%u m %u s"
+msgstr "s s idle tijd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:120
+#, fuzzy, c-format
+msgid "%u m %u%u s"
+msgstr "s s idle tijd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:122
+#, fuzzy, c-format
+msgid "%u s"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:127
+#, fuzzy, c-format
+msgid "%u d %u h %u m %u s"
+msgstr "s s idle tijd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:129
+#, fuzzy, c-format
+msgid "%u d %u%u h %u%u m %u%u s"
+msgstr "s s idle tijd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+#, fuzzy
+msgid "Usage"
+msgstr "Bericht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+#, fuzzy
+msgid "message"
+msgstr "Bericht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:99
+msgid "-m: send a message instead of a notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:100
+#, fuzzy
+msgid "-w: send notice to all channel owners"
+msgstr "Nee is voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:101
+#, fuzzy
+msgid "-a: send notice to all channel admins"
+msgstr "Nee is voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:102
+#, fuzzy
+msgid "-o: send notice to all channel ops"
+msgstr "Nee is voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:103
+msgid "-h: send notice to all channel halfops"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:104
+msgid "-v: send notice to all channel voices"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:105
+msgid "-q: quiet mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:138
+msgid "Sending wallop to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:314
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:410
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:493
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:535
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:593
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:653
+#, fuzzy
+msgid "Usage:"
+msgstr "Bericht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:223
+msgid "reason"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:272
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:416
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:440
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:599
+#, fuzzy
+msgid "This is not a channel window"
+msgstr "is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:581
+#, fuzzy
+msgid "Unsupported type: $0"
+msgstr "Gebruik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:604
+#, fuzzy
+msgid "Channel Owner"
+msgstr "Kanaal mode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:606
+#, fuzzy
+msgid "Channel Administrator"
+msgstr "notificatie:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:608
+#, fuzzy
+msgid "Channel Operator"
+msgstr "Scheider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:610
+#, fuzzy
+msgid "Half Operator"
+msgstr "Scheider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:612
+msgid "Voice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:614
+#, fuzzy
+msgid "User Operator"
+msgstr "Scheider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:616
+#, fuzzy
+msgid "Normal User"
+msgstr "Normaal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:641
+msgid "You must use DNS in an IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:647
+#, fuzzy
+msgid "You must be connected to a server"
+msgstr "U bent niet met een server verbonden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:664
+#, fuzzy
+msgid "No such user: $0"
+msgstr "Geen zo een module"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:33
+msgid "The default script has been successfully installed."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:34
+msgid "To connect to a server, type /server <server name>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:36
+msgid "Happy ircing :)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:15
+#, fuzzy
+msgid "Options"
+msgstr "Acties"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:40
+#, fuzzy
+msgid "Window operations"
+msgstr "Onbekende operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMENAME@"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMEDESCRIPTION@"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:18
+#, fuzzy
+msgid "Stop Highlighting (Local)"
+msgstr "Activeren URL-adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:23
+#, fuzzy
+msgid "Start Highlighting (Local)"
+msgstr "Activeren URL-adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:28
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:61
+#, fuzzy
+msgid "Always Highlight"
+msgstr "Activeren URL-adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:30
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:55
+#, fuzzy
+msgid "Highlight as"
+msgstr "M&inimaliseren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:66
+#, fuzzy
+msgid "Stop Highlighting"
+msgstr "Activeren URL-adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:82
+#, fuzzy
+msgid "is being ignored"
+msgstr "genegeerd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:87
+#, fuzzy
+msgid "is not being ignored"
+msgstr "genegeerd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:93
+#, fuzzy
+msgid "Enable Ignore"
+msgstr "Activeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:98
+#, fuzzy
+msgid "Ignore as..."
+msgstr "genegeerd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:240
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:282
+#, fuzzy
+msgid "Ignore as"
+msgstr "genegeerd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:290
+#, fuzzy
+msgid "Unignore"
+msgstr "genegeerd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:308
+#, fuzzy
+msgid "is registered as"
+msgstr "Negeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:311
+#, fuzzy
+msgid "is in the notify list"
+msgstr "Nee gebruikers de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:314
+msgid "has a default avatar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:317
+#, fuzzy
+msgid "is not registered"
+msgstr "Negeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:323
+#, fuzzy
+msgid "Register"
+msgstr "Negeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:328
+#, fuzzy
+msgid "Quick Registration"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:330
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:355
+#, fuzzy
+msgid "Register as"
+msgstr "Negeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:361
+#, fuzzy
+msgid "Edit Registration"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:366
+#, fuzzy
+msgid "Unregister"
+msgstr "Negeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:373
+#, fuzzy
+msgid "Add to Notify"
+msgstr "Notificatie lijst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:378
+#, fuzzy
+msgid "Remove from Notify"
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:385
+#, fuzzy
+msgid "Choose"
+msgstr "Kiezen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:387
+#, fuzzy
+msgid "Choose Avatar Image File"
+msgstr "file."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:396
+#, fuzzy
+msgid "Set as Default"
+msgstr "standaard"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:401
+#, fuzzy
+msgid "Clear Default"
+msgstr "standaard"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:412
+msgid "Copy To Clipboard"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:433
+#, fuzzy
+msgid "Ban"
+msgstr "Toevoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1037
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1084
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1224
+#, fuzzy
+msgid "Multiple Users"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:577
+#, fuzzy
+msgid "&Ban"
+msgstr "Toevoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1089
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1229
+#, fuzzy
+msgid "idle time"
+msgstr "Bestandsnaam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:758
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1236
+#, fuzzy
+msgid "&Information"
+msgstr "Algemene opties"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1115
+msgid "DNS for"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:499
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1120
+#, fuzzy
+msgid "Mask for"
+msgstr "Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:505
+#, fuzzy
+msgid "&Control"
+msgstr "Verbinden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:509
+#, fuzzy
+msgid "O&wner"
+msgstr "In&voegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:514
+#, fuzzy
+msgid "&Deowner"
+msgstr "Toevoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:519
+#, fuzzy
+msgid "&Administrator"
+msgstr "notificatie:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:524
+#, fuzzy
+msgid "&Deadministrator"
+msgstr "notificatie:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:529
+#, fuzzy
+msgid "&Op"
+msgstr "&Openen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:534
+#, fuzzy
+msgid "&Deop"
+msgstr "Verzoeken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:539
+#, fuzzy
+msgid "&Halfop"
+msgstr "Scheider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:544
+#, fuzzy
+msgid "&Dehalfop"
+msgstr "Scheider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:549
+#, fuzzy
+msgid "&Voice"
+msgstr "Karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:554
+#, fuzzy
+msgid "D&evoice"
+msgstr "Karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:561
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+#, fuzzy
+msgid "&Kick"
+msgstr "Bijnaam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+#, fuzzy
+msgid "K&ick"
+msgstr "Bijnaam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+#, fuzzy
+msgid "With..."
+msgstr "Be&werken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+#, fuzzy
+msgid "Kick Reason"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Enter a kick reason"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+#, fuzzy
+msgid "Kick/Ban"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+#, fuzzy
+msgid "Kick/Ban Reason"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+#, fuzzy
+msgid "Enter a kick/ban reason"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+#, fuzzy
+msgid "&Kick/Ban"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:604
+#, fuzzy
+msgid "Configure ban mask..."
+msgstr "&Opties"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:612
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1263
+#, fuzzy
+msgid "&Query"
+msgstr "Ondervraging"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:625
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1136
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1276
+#, fuzzy
+msgid "&Registration"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1278
+#, fuzzy
+msgid "&Highlight"
+msgstr "Activeren URL-adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:629
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1280
+#, fuzzy
+msgid "Ig&nore"
+msgstr "genegeerd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:726
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1050
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1138
+#, fuzzy
+msgid "Notify Avatar"
+msgstr "Notificatie lijst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:705
+#, fuzzy
+msgid "&Part"
+msgstr "Plakken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:664
+#, fuzzy
+msgid "Copy Channel Address"
+msgstr "Kanaal mode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:749
+#, fuzzy
+msgid "Channels"
+msgstr "Annuleren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:693
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:753
+#, fuzzy
+msgid "&Join Channels..."
+msgstr "is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:700
+#, fuzzy
+msgid "&Hop"
+msgstr "&Help"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:733
+msgid "Copy Channel URL to Clipboard"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:782
+#, fuzzy
+msgid "l (Connections)"
+msgstr "Verbinding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:787
+msgid "m (Command Usage)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:792
+#, fuzzy
+msgid "o (Operators)"
+msgstr "Scheider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:797
+#, fuzzy
+msgid "t (Connection stats ?)"
+msgstr "verbinding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:802
+msgid "u (Uptime)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:807
+msgid "y (y-Lines)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:812
+msgid "z (Debug Stats?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:909
+#, fuzzy
+msgid "Chat with"
+msgstr "is?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:914
+#, fuzzy
+msgid "Reverse Chat with"
+msgstr "is?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:919
+#, fuzzy
+msgid "Secure Chat with"
+msgstr "is?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:926
+#, fuzzy
+msgid "Send to"
+msgstr "(Geen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:931
+#, fuzzy
+msgid "Secure send to"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:936
+#, fuzzy
+msgid "Reverse Send to"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:941
+#, fuzzy
+msgid "Secure Reverse Send to"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:948
+#, fuzzy
+msgid "TDCC Send to"
+msgstr "(Geen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:953
+#, fuzzy
+msgid "TDCC Reverse Send to"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:960
+msgid "Voice Chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1134
+#, fuzzy
+msgid "&Ignore"
+msgstr "genegeerd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1165
+#, fuzzy
+msgid "Logging to"
+msgstr "Loggen uit."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1167
+#, fuzzy
+msgid "Flush Log File"
+msgstr "file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1174
+#, fuzzy
+msgid "Stop Logging"
+msgstr "Loggen uit."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1179
+#, fuzzy
+msgid "Not Logging"
+msgstr "Loggen uit."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+msgid "Log To Default File"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+#, fuzzy
+msgid "Include Existing Buffer"
+msgstr "buffer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+#, fuzzy
+msgid "Log To..."
+msgstr "Bezig met laden van de iconen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1201
+#, fuzzy
+msgid "Choose Log Filename"
+msgstr "file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1282
+#, fuzzy
+msgid "Notify avatar"
+msgstr "Notificatie lijst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:50
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$copyfiles must be a "
+"source directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:56
+#, c-format
+msgid ""
+"[Installer] The second argument to \\%installer->\\$copyfiles must be a file "
+"name or file regexp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:62
+#, c-format
+msgid ""
+"[Installer] The third argument to \\%installer->\\$copyfiles must be a "
+"destination directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:94
+#, fuzzy
+msgid "[Installer] Failed to create directory"
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:104
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$includefiles must be a "
+"source directory"
+msgstr ""
+
+#, fuzzy
+#~ msgid "milliseconds"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c: %Q"
+#~ msgstr "s s"
+
+#, fuzzy
+#~ msgid "Basic Properties"
+#~ msgstr "Eigenschappen"
+
+#, fuzzy
+#~ msgid "Other:"
+#~ msgstr "Be&werken"
+
+#, fuzzy
+#~ msgid "Choose a server to connect"
+#~ msgstr "file"
+
+#, fuzzy
+#~ msgid "Server:"
+#~ msgstr "Server:"
+
+#, fuzzy
+#~ msgid "Port:"
+#~ msgstr "Poort:"
+
+#, fuzzy
+#~ msgid "Use server config"
+#~ msgstr "Gebruik de"
+
+#, fuzzy
+#~ msgid "Config file:"
+#~ msgstr "&Opties"
+
+#, fuzzy
+#~ msgid "Smart"
+#~ msgstr "Plakken"
+
+#, fuzzy
+#~ msgid "Window with ID '%s' not found"
+#~ msgstr "Venster s"
+
+#, fuzzy
+#~ msgid "Hide ignore-messages (incomplete)"
+#~ msgstr "samenvoegen"
+
+#, fuzzy
+#~ msgid "Ignore everything"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Notify"
+#~ msgstr "Notificatie lijst"
+
+#, fuzzy
+#~ msgid "Can't fill non-widget object"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Select error: %s (errno=%d)"
+#~ msgstr "Selecteren s"
+
+#, fuzzy
+#~ msgid "Connect error: %s (errno=%d)"
+#~ msgstr "Verbinden s"
+
+#, fuzzy
+#~ msgid "Write error: %s (errno=%d)"
+#~ msgstr "Schrijven s"
+
+#, fuzzy
+#~ msgid "Read error: %s (errno=%d)"
+#~ msgstr "Gelezen s"
+
+#~ msgid "WARNING : Can not load image library %s"
+#~ msgstr "WAARSCHUWING : kan de afbeelding bibliotheek niet openen %s"
+
+#, fuzzy
+#~ msgid "Load Theme - KVIrc"
+#~ msgstr "Opslaan"
+
+#, fuzzy
+#~ msgid "Unable to create theme directory."
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Version"
+#~ msgstr "Beschrijving:"
+
+#, fuzzy
+#~ msgid "Themes"
+#~ msgstr "Gedeeld"
+
+#, fuzzy
+#~ msgid "<b>%Q</b>: +%Q (%u users)<hr>%Q"
+#~ msgstr "<b> s</b> s gebruikers<hr>"
+
+#, fuzzy
+#~ msgid "What's this?"
+#~ msgstr "is?"
+
+#, fuzzy
+#~ msgid "<b>Nickname:</b>"
+#~ msgstr "Bijnaam:"
+
+#, fuzzy
+#~ msgid "Default Theme"
+#~ msgstr "Standaard"
+
+#, fuzzy
+#~ msgid "URL Handlers"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "Finish Setup"
+#~ msgstr "Zoeken"
+
+#, fuzzy
+#~ msgid "Empty string"
+#~ msgstr "Leeg"
+
+#, fuzzy
+#~ msgid "No such open mode: %s"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "Negative file index supplied !"
+#~ msgstr "Negatief file!"
+
+#, fuzzy
+#~ msgid "Argument length is 0 - empty string"
+#~ msgstr "is leeg"
+
+#, fuzzy
+#~ msgid "Length is a negative number !"
+#~ msgstr "Lengte is!"
+
+#, fuzzy
+#~ msgid "Background not found %Q "
+#~ msgstr "Achtergrondkleur"
+
+#, fuzzy
+#~ msgid ""
+#~ "Broken slot '%s' in target object '%s' while emitting signal '%s' from "
+#~ "object '%s': disconnecting"
+#~ msgstr "Gebroken s s s s"
+
+#, fuzzy
+#~ msgid ""
+#~ "No slot function '%s' exported by target object '%s' while emitting "
+#~ "signal '%s' from object '%s': disconnecting"
+#~ msgstr "Nee s door s s s"
+
+#, fuzzy
+#~ msgid "%cListing Qt Properties for widget object %s (%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Properties class: %c%s%c"
+#~ msgstr "Eigenschappen:"
+
+#, fuzzy
+#~ msgid "Property: %c%s%c, type: %s"
+#~ msgstr "Eigenschap s"
+
+#, fuzzy
+#~ msgid "Oops... no such property: %s"
+#~ msgstr "Eigenschap s"
+
+#, fuzzy
+#~ msgid "No such QT property (%s)"
+#~ msgstr "Nee s"
+
+#, fuzzy
+#~ msgid "missing parameter"
+#~ msgstr "Ontbrekende popup naam"
+
+#, fuzzy
+#~ msgid "Invalid parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Unsupported QT property (%s)"
+#~ msgstr "Gebruik"
+
+#, fuzzy
+#~ msgid "Missing parameters"
+#~ msgstr "Ontbrekende popup naam"
+
+#~ msgid "[Parser warning in '%Q']: %Q"
+#~ msgstr "[parser waarschuwing in '%Q'] : %Q"
+
+#, fuzzy
+#~ msgid "Can't find the multimedia file %s"
+#~ msgstr "de commando venster door id s"
+
+#, fuzzy
+#~ msgid "Missing target, no action taken"
+#~ msgstr "nee"
+
+#, fuzzy
+#~ msgid "Can't add a file offer for file %s (huh ? file not readable ?)"
+#~ msgstr "toevoegen file voor file s file"
+
+#, fuzzy
+#~ msgid "Added %d secs file offer for file %s (%s) and receiver %s"
+#~ msgstr "Toegevoegd seconden file voor file s s en"
+
+#, fuzzy
+#~ msgid "%s plays '%s' to %s"
+#~ msgstr "%s [%s aan %s]"
+
+#, fuzzy
+#~ msgid "Error in command: %c%c%Q"
+#~ msgstr "Fout commando"
+
+#, fuzzy
+#~ msgid "Error token: %c%Q"
+#~ msgstr "Fout"
+
+#, fuzzy
+#~ msgid "Object scope: name (%s), class (%s)"
+#~ msgstr "naam s s"
+
+#, fuzzy
+#~ msgid "This pointer: name (%s), class (%s)"
+#~ msgstr "naam s s"
+
+#, fuzzy
+#~ msgid "Error triggered from raw event handler %c%s::%Q"
+#~ msgstr "Fout s"
+
+#, fuzzy
+#~ msgid "Error triggered from event handler %c%Q::%Q"
+#~ msgstr "Fout s"
+
+#, fuzzy
+#~ msgid "Raw event handler %s::%Q is broken: disabling"
+#~ msgstr "Gebeurtenis s s is"
+
+#, fuzzy
+#~ msgid "Event handler %Q::%Q is broken: disabling"
+#~ msgstr "Gebeurtenis s s is"
+
+#, fuzzy
+#~ msgid "Variable evaluated to \"%s\""
+#~ msgstr "Variabele naar s"
+
+#, fuzzy
+#~ msgid "Window with caption %Q not found"
+#~ msgstr "Venster door s"
+
+#, fuzzy
+#~ msgid "Unknown channel mode"
+#~ msgstr "onbekend"
+
+#, fuzzy
+#~ msgid "http://www.kvirc.net/"
+#~ msgstr ""
+#~ "\n"
+#~ " Thuishttp://www.kvirc.net"
+
+#, fuzzy
+#~ msgid "My Custom Servers"
+#~ msgstr "Kopiëren..."
+
+#, fuzzy
+#~ msgid "Topic for \r!c\r%Q\r was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+#~ msgstr "voor s door"
+
+#, fuzzy
+#~ msgid "\" ...that looks like an error to me..."
+#~ msgstr "naar."
+
+#, fuzzy
+#~ msgid "Search keywords"
+#~ msgstr "Zoeken"
+
+#, fuzzy
+#~ msgid "File download terminated"
+#~ msgstr "Verbinding"
+
+#, fuzzy
+#~ msgid "Choose..."
+#~ msgstr "Kiezen..."
+
+#, fuzzy
+#~ msgid "Invalid width parameter"
+#~ msgstr "breedte"
+
+#, fuzzy
+#~ msgid "Invalid height parameter"
+#~ msgstr "hoogte"
+
+#, fuzzy
+#~ msgid "Invalid size parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Unknown widget type: %s"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Can't find the widget object assuming 0"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Invalid Parameters"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Can't find the widget object to add (%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Invalid row parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Invalid column parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Unknown frame style"
+#~ msgstr "Onbekend stijl"
+
+#, fuzzy
+#~ msgid ""
+#~ "Failed writing the kvirc home directory path to %Q.\n"
+#~ "You will need to do it manually , otherwise KVirc will restart with\n"
+#~ "the setup!"
+#~ msgstr ""
+#~ "Faalde de map naar s\n"
+#~ " U naar it door\n"
+#~ " de!"
+
+#, fuzzy
+#~ msgid "Ident Service"
+#~ msgstr "Interface"
+
+#, fuzzy
+#~ msgid "Reconnection Options"
+#~ msgstr "Verbinding"
+
+#, fuzzy
+#~ msgid "Flood Protection"
+#~ msgstr "Gebruik"
+
+#, fuzzy
+#~ msgid "File Transfer"
+#~ msgstr "Bytes"
+
+#, fuzzy
+#~ msgid "Advanced"
+#~ msgstr "Toevoegen..."
+
+#, fuzzy
+#~ msgid "General options"
+#~ msgstr "Al&gemene opties"
+
+#, fuzzy
+#~ msgid "Alert/Highlight"
+#~ msgstr "Activeren URL-adres"
+
+#, fuzzy
+#~ msgid "Interface"
+#~ msgstr "Interface"
+
+#, fuzzy
+#~ msgid "General"
+#~ msgstr "Algemeen"
+
+#, fuzzy
+#~ msgid "Transparency"
+#~ msgstr "Transfer"
+
+#, fuzzy
+#~ msgid "ToolBar Applets"
+#~ msgstr "H&ulpmiddelen"
+
+#, fuzzy
+#~ msgid "Logging"
+#~ msgstr "Loggen uit."
+
+#, fuzzy
+#~ msgid "Media Types"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "Contacts"
+#~ msgstr "Verbinden"
+
+#, fuzzy
+#~ msgid "Notifier"
+#~ msgstr "Notificatie lijst"
+
+#, fuzzy
+#~ msgid "Proxy Hosts"
+#~ msgstr "Proxy"
+
+#, fuzzy
+#~ msgid "Query"
+#~ msgstr "Ondervraging"
+
+#, fuzzy
+#~ msgid "Servers"
+#~ msgstr "Server"
+
+#, fuzzy
+#~ msgid "Sound"
+#~ msgstr "Verzenden"
+
+#, fuzzy
+#~ msgid "Tree taskbar"
+#~ msgstr "Takenbalk"
+
+#, fuzzy
+#~ msgid "Text icons"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid "Labels"
+#~ msgstr "Label"
+
+#, fuzzy
+#~ msgid "Scripting Engine"
+#~ msgstr "Beschrijving"
+
+#, fuzzy
+#~ msgid "URL handlers"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "Userlist"
+#~ msgstr "Gebruikers lijst"
+
+#, fuzzy
+#~ msgid "Protection"
+#~ msgstr "Gebruik"
+
+#, fuzzy
+#~ msgid "Avatar Handling"
+#~ msgstr "Accepteren"
+
+#, fuzzy
+#~ msgid "Invalid timeout (%s)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Invalid port specified: the kernel will choose one"
+#~ msgstr "naar lokaal s de kiezen de"
+
+#, fuzzy
+#~ msgid "Invalid port (%s)"
+#~ msgstr "IRC url s"
+
+#, fuzzy
+#~ msgid "Invalid x offset parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Invalid y offset parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Can't find the specified file '%s'."
+#~ msgstr "de commando venster door id s"
+
+#, fuzzy
+#~ msgid "Class is undefined"
+#~ msgstr "s is"
+
+#, fuzzy
+#~ msgid ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">General Preferences</font></h1></center></td></"
+#~ "tr><tr><td><br><br><center><b>These sections contain various settings for "
+#~ "KVIrc</b></center><br><br><p>When you have finished, click \"<b>OK</b>\" "
+#~ "to accept your changes or \"<b>Cancel</b>\" to discard them. Clicking "
+#~ "\"<b>Apply</b>\" will commit your changes without closing the window.</"
+#~ "td></tr><tr><td>Many settings have tooltips that can be shown by holding "
+#~ "the cursor over their label for a few seconds.</p></td></tr></table>"
+#~ msgstr ""
+#~ "<h1><b><center> Algemeen</center></b></h1><br><hr><br><center> Selecteren "
+#~ "de aan de<br> naar de<br> Ok naar<br> of Annuleren naar it</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">General Preferences</font></h1></center></td></"
+#~ "tr><tr><td><br><br>Select a category in the list view on the left to view "
+#~ "the related settings. When you have finished, click \"<b>OK</b>\" to "
+#~ "accept your changes or \"<b>Cancel</b>\" to discard them. Clicking "
+#~ "\"<b>Apply</b>\" will commit your changes without closing this window."
+#~ "<br><br></td></tr></table>"
+#~ msgstr ""
+#~ "<h1><b><center> Algemeen</center></b></h1><br><hr><br><center> Selecteren "
+#~ "de aan de<br> naar de<br> Ok naar<br> of Annuleren naar it</center>"
+
+#, fuzzy
+#~ msgid "Commit all changes immediately."
+#~ msgstr "Vastleggen (Commit)"
+
+#, fuzzy
+#~ msgid "Newbie"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "Normal user"
+#~ msgstr "Normaal"
+
+#, fuzzy
+#~ msgid "Experienced user"
+#~ msgstr "Zoeken"
+
+#, fuzzy
+#~ msgid "Quiet"
+#~ msgstr "&Afsluiten"
+
+#, fuzzy
+#~ msgid "Normal"
+#~ msgstr "Normaal"
+
+#, fuzzy
+#~ msgid "Paranoic"
+#~ msgstr "s Server"
+
+#, fuzzy
+#~ msgid "Show in active window"
+#~ msgstr "Notificatie voor"
+
+#, fuzzy
+#~ msgid "External messages"
+#~ msgstr "nee"
+
+#, fuzzy
+#~ msgid "Whois replies"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "ChanServ and NickServ notices"
+#~ msgstr "s Server"
+
+#, fuzzy
+#~ msgid "Server replies"
+#~ msgstr "Algemene opties"
+
+#, fuzzy
+#~ msgid "Server notices"
+#~ msgstr "s Server"
+
+#, fuzzy
+#~ msgid "Broadcast and WALLOPS messages"
+#~ msgstr "private"
+
+#, fuzzy
+#~ msgid "Show extended server information"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "Show server pings"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "Show own parts in the console"
+#~ msgstr "Tonen de"
+
+#, fuzzy
+#~ msgid "Show compact mode changes"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "On Channel Join"
+#~ msgstr "Kanaal mode"
+
+#, fuzzy
+#~ msgid "Echo channel topic"
+#~ msgstr "Nee is"
+
+#, fuzzy
+#~ msgid "Show channel sync time"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "Font"
+#~ msgstr "Lettertype"
+
+#, fuzzy
+#~ msgid "Foreground color"
+#~ msgstr "Voorgrondkleur"
+
+#, fuzzy
+#~ msgid "Background color"
+#~ msgstr "Achtergrondkleur"
+
+#, fuzzy
+#~ msgid "Background image"
+#~ msgstr "Achtergrondafbeelding"
+
+#, fuzzy
+#~ msgid "Theme name:"
+#~ msgstr "Achternaam:"
+
+#, fuzzy
+#~ msgid "you must select save directory"
+#~ msgstr "Onvolledige map"
+
+#, fuzzy
+#~ msgid "Unable to create theme files directory."
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Unable to create theme utils directory."
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for reading."
+#~ msgstr "file s voor"
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for writing."
+#~ msgstr "de file s voor"
+
+#, fuzzy
+#~ msgid "Refresh Theme List"
+#~ msgstr "Laden"
+
+#, fuzzy
+#~ msgid "<p>Theme: %1</p>"
+#~ msgstr "Achternaam:"
+
+#, fuzzy
+#~ msgid "<p>Version: %1</p>"
+#~ msgstr "Beschrijving"
+
+#, fuzzy
+#~ msgid "On Unexpected Disconnect"
+#~ msgstr "Auto naar"
+
+#, fuzzy
+#~ msgid "Keep channels open"
+#~ msgstr "Kanaal mode"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to keep channels open after an "
+#~ "unexpected disconnect.</center>"
+#~ msgstr "<center> is de<b></b> de</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to keep queries open after an "
+#~ "unexpected disconnect.</center>"
+#~ msgstr "<center> is de<b></b> de</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to rejoin channels after a "
+#~ "successful reconnect attempt.</center>"
+#~ msgstr "<center> is de<b></b> de</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to reopen query windows after a "
+#~ "successful reconnect attempt.</center>"
+#~ msgstr "<center> is de<b></b> de</center>"
+
+#, fuzzy
+#~ msgid "Novice"
+#~ msgstr "Karakter"
+
+#, fuzzy
+#~ msgid "No such options page class name %Q"
+#~ msgstr "Geen zo een objekt klasse"
+
+#, fuzzy
+#~ msgid "Show nicknames in bold"
+#~ msgstr "Geen naam opgegeven"
+
+#, fuzzy
+#~ msgid "Show user and host"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "Show channel mode prefix"
+#~ msgstr "onbekend"
+
+#, fuzzy
+#~ msgid "Prefix:"
+#~ msgstr "Proxy:"
+
+#, fuzzy
+#~ msgid "Postfix:"
+#~ msgstr "Conditie:"
+
+#, fuzzy
+#~ msgid "Font:"
+#~ msgstr "Lettertype"
+
+#, fuzzy
+#~ msgid "Background color:"
+#~ msgstr "Achtergrondkleur"
+
+#, fuzzy
+#~ msgid "Background image:"
+#~ msgstr "Achtergrondafbeelding"
+
+#, fuzzy
+#~ msgid "Show message icons"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "Show timestamp"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "Use UTC time for timestamp"
+#~ msgstr "Gebruik"
+
+#, fuzzy
+#~ msgid "Use special color for timestamps"
+#~ msgstr "Gebruik"
+
+#, fuzzy
+#~ msgid "Timestamp color"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "Enable URL highlighting"
+#~ msgstr "Activeren URL-adres"
+
+#, fuzzy
+#~ msgid "Use line wrap margin"
+#~ msgstr "Gebruik"
+
+#, fuzzy
+#~ msgid "Maximum buffer size:"
+#~ msgstr "buffer"
+
+#, fuzzy
+#~ msgid " lines"
+#~ msgstr "&Online"
+
+#, fuzzy
+#~ msgid "Nickname alternatives"
+#~ msgstr "Bijnaam"
+
+#, fuzzy
+#~ msgid "Alt. Nickname 1:"
+#~ msgstr "Bijnaam"
+
+#, fuzzy
+#~ msgid "Alt. Nickname 2:"
+#~ msgstr "Bijnaam"
+
+#, fuzzy
+#~ msgid "Alt. Nickname 3:"
+#~ msgstr "Bijnaam"
+
+#, fuzzy
+#~ msgid "Alternatives..."
+#~ msgstr "Eigenschappen"
+
+#, fuzzy
+#~ msgid "Username:"
+#~ msgstr "Gebruikersnaam:"
+
+#, fuzzy
+#~ msgid "Server notices (+s)"
+#~ msgstr "s Server"
+
+#, fuzzy
+#~ msgid "Default part message:"
+#~ msgstr "nee"
+
+#, fuzzy
+#~ msgid "Default quit message:"
+#~ msgstr "nee"
+
+#, fuzzy
+#~ msgid "Pattern"
+#~ msgstr "Plakken"
+
+#, fuzzy
+#~ msgid "MIME Type"
+#~ msgstr "Type"
+
+#, fuzzy
+#~ msgid "File pattern:"
+#~ msgstr "Bestandsnaam"
+
+#, fuzzy
+#~ msgid "Magic bytes:"
+#~ msgstr "bytes"
+
+#, fuzzy
+#~ msgid "Save path:"
+#~ msgstr "Opslaan"
+
+#, fuzzy
+#~ msgid "Local open command:"
+#~ msgstr "Lokaal"
+
+#, fuzzy
+#~ msgid "Remote open command:"
+#~ msgstr "Op afstand"
+
+#, fuzzy
+#~ msgid "[Unknown Media Type]"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "New Media Type"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "NickServ Authentication Rule"
+#~ msgstr "notificatie"
+
+#, fuzzy
+#~ msgid "Registered NickName"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "NickServ Mask"
+#~ msgstr "Bericht verzenden"
+
+#, fuzzy
+#~ msgid ""
+#~ "This is the mask that NickServ must match to be correctly identified as "
+#~ "the NickServ service. This usually will be something like <b>NickServ!"
+#~ "[email protected]</b>.<br>You can use wildcards for this field, but "
+#~ "generally it is a security flaw. If you're 100% sure that NO user on the "
+#~ "network can use the nickname \"NickServ\", the mask <b>NickServ!*@*</b> "
+#~ "may be safe to use in this field."
+#~ msgstr ""
+#~ "<center> is de masker overeenkomstig naar<b>[email protected]</b> U "
+#~ "voor veld it is GEEN gebruiker aan de netwerk naar<b></b> voor veld</"
+#~ "center>"
+
+#, fuzzy
+#~ msgid "Message Regexp"
+#~ msgstr "Bericht"
+
+#, fuzzy
+#~ msgid ""
+#~ "This is the command that will be executed when NickServ requests "
+#~ "authentication for the nickname described in this rule (if the both "
+#~ "server and NickServ mask are matched). This usually will be something "
+#~ "like <b>msg NickServ identify &lt;yourpassword&gt;</b>.<br>You can use "
+#~ "<b>msg -q</b> if you don't want the password echoed on the screen. Please "
+#~ "note that there is no leading slash in this command."
+#~ msgstr ""
+#~ "<center> is de commando de voor de en de en masker overeenkomstig<b>&lt;"
+#~ "&gt;</b> U de wachtwoord naar aan de is nee commando</center>"
+
+#, fuzzy
+#~ msgid "Server mask"
+#~ msgstr "Server"
+
+#, fuzzy
+#~ msgid "Invalid NickServ Rule"
+#~ msgstr "Ongeldig IP adres"
+
+#, fuzzy
+#~ msgid "The Nickname field can't be empty!"
+#~ msgstr "veld"
+
+#, fuzzy
+#~ msgid "Enable NickServ Identification"
+#~ msgstr "Activeren"
+
+#, fuzzy
+#~ msgid "Nickname"
+#~ msgstr "Bijnaam"
+
+#, fuzzy
+#~ msgid "NickServ Request Mask"
+#~ msgstr "Bericht verzenden"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is a list of NickServ identification rules. KVIrc will use "
+#~ "them to model its automatic interaction with NickServ on all the networks."
+#~ "<br>Please be aware that this feature can cause your NickServ passwords "
+#~ "to be stolen if used improperly. Make sure that you fully understand the "
+#~ "NickServ authentication protocol.<br>In other words, be sure to know what "
+#~ "you're doing.<br>Also note that the password that you provide is stored "
+#~ "as <b>PLAIN TEXT</b>.<br>KVIrc supports also per-network NickServ "
+#~ "authentication rules that can be created in the \"Advanced...\" network "
+#~ "options (accessible from the servers dialog).</center>"
+#~ msgstr ""
+#~ "<center> is naar door<br> naar it de de en de<br> overig naar<br> de "
+#~ "wachtwoord is de configuratie file<br> Rechts naar toevoegen verwijderen</"
+#~ "center>"
+
+#, fuzzy
+#~ msgid "Add Rule"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "Edit Rule"
+#~ msgstr "Bewerken"
+
+#, fuzzy
+#~ msgid "Delete Rule"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "Selection background color"
+#~ msgstr "Selectie achtergrond"
+
+#, fuzzy
+#~ msgid "Selection foreground color"
+#~ msgstr "Selectie"
+
+#, fuzzy
+#~ msgid "Control char color"
+#~ msgstr "char"
+
+#, fuzzy
+#~ msgid "Cursor color"
+#~ msgstr "Cursor"
+
+#, fuzzy
+#~ msgid "Warp cursor at the end of line when browsing history"
+#~ msgstr "cursor de regel browsen"
+
+#, fuzzy
+#~ msgid "Nick completion"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "Use proxy"
+#~ msgstr "Gebruik proxy"
+
+#, fuzzy
+#~ msgid "Proxy"
+#~ msgstr "Proxy"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the list of available proxy servers.<br>Right-click on "
+#~ "the list to add or remove proxies.</center>"
+#~ msgstr ""
+#~ "<center> is de beschikbaar IRC<br> Rechts aan de naar toevoegen of "
+#~ "verwijderen en voor overig</center>"
+
+#, fuzzy
+#~ msgid "New Proxy"
+#~ msgstr "Proxy"
+
+#, fuzzy
+#~ msgid "Remove Proxy"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "Proxy:"
+#~ msgstr "Proxy:"
+
+#, fuzzy
+#~ msgid "Password:"
+#~ msgstr "Wachtwoord:"
+
+#, fuzzy
+#~ msgid "Use IPv6 protocol"
+#~ msgstr "Gebruik"
+
+#, fuzzy
+#~ msgid "&New Proxy"
+#~ msgstr "Popup"
+
+#, fuzzy
+#~ msgid "Re&move Proxy"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "Default text encoding:"
+#~ msgstr "de naar"
+
+#, fuzzy
+#~ msgid "Use Language Encoding"
+#~ msgstr "Gebruik de"
+
+#, fuzzy
+#~ msgid "Minimize in tray"
+#~ msgstr "M&inimaliseren"
+
+#, fuzzy
+#~ msgid "Confirm quit with active connections"
+#~ msgstr "nee actief"
+
+#, fuzzy
+#~ msgid "Remember window properties"
+#~ msgstr "Onbekende operator"
+
+#, fuzzy
+#~ msgid "Disable splash screen"
+#~ msgstr "[parser waarschuwing in '%s'] : %s"
+
+#, fuzzy
+#~ msgid "Registered Users"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Disable parser warnings"
+#~ msgstr "[parser waarschuwing in '%s'] : %s"
+
+#, fuzzy
+#~ msgid "Disable broken event handlers"
+#~ msgstr "Deactiveren"
+
+#, fuzzy
+#~ msgid "Send unknown commands as /RAW"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Automatically unload unused modules"
+#~ msgstr "naar"
+
+#, fuzzy
+#~ msgid "Create minimized debug window"
+#~ msgstr "Aanmaken"
+
+#, fuzzy
+#~ msgid "Message Type"
+#~ msgstr "Bericht"
+
+#, fuzzy
+#~ msgid "Background:"
+#~ msgstr "Achtergrondkleur"
+
+#, fuzzy
+#~ msgid "Foreground:"
+#~ msgstr "Voorgrondkleur"
+
+#, fuzzy
+#~ msgid "Alert level:"
+#~ msgstr "Alles opschonen"
+
+#, fuzzy
+#~ msgid "Load From..."
+#~ msgstr "Bezig met laden van de iconen..."
+
+#, fuzzy
+#~ msgid "Save As..."
+#~ msgstr "Opsl&aan."
+
+#, fuzzy
+#~ msgid "Choose a Filename - KVIrc "
+#~ msgstr "file naar"
+
+#, fuzzy
+#~ msgid "Use global application font"
+#~ msgstr "Gebruik applicatie"
+
+#, fuzzy
+#~ msgid "Hide icons in Popup"
+#~ msgstr "&Terminal"
+
+#, fuzzy
+#~ msgid "Global application font:"
+#~ msgstr "applicatie"
+
+#, fuzzy
+#~ msgid "Enable fake transparency"
+#~ msgstr "Activeren file"
+
+#, fuzzy
+#~ msgid "Blend color:"
+#~ msgstr "Cursor"
+
+#, fuzzy
+#~ msgid "Use KDE desktop for transparency"
+#~ msgstr "Gebruik KDE"
+
+#, fuzzy
+#~ msgid "Active Background"
+#~ msgstr "Actief"
+
+#, fuzzy
+#~ msgid "Inactive Background"
+#~ msgstr "Actief"
+
+#, fuzzy
+#~ msgid "Background Image"
+#~ msgstr "Achtergrondafbeelding"
+
+#, fuzzy
+#~ msgid "Low-Contrast Foreground"
+#~ msgstr "koppeling"
+
+#, fuzzy
+#~ msgid "Mid-Contrast Foreground"
+#~ msgstr "koppeling"
+
+#, fuzzy
+#~ msgid "Default away message:"
+#~ msgstr "nee"
+
+#, fuzzy
+#~ msgid "Away Nickname"
+#~ msgstr "Bijnaam"
+
+#, fuzzy
+#~ msgid "Change nickname on away"
+#~ msgstr "Bijnaam"
+
+#, fuzzy
+#~ msgid "Custom nickname:"
+#~ msgstr "Notificatie"
+
+#, fuzzy
+#~ msgid "Enable lag meter"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Nickname Colors"
+#~ msgstr "Bijnaam"
+
+#, fuzzy
+#~ msgid "Normal:"
+#~ msgstr "Normaal"
+
+#, fuzzy
+#~ msgid "Selected:"
+#~ msgstr "Opslaan"
+
+#, fuzzy
+#~ msgid "Channel owner:"
+#~ msgstr "Kanaal mode"
+
+#, fuzzy
+#~ msgid "Channel admin:"
+#~ msgstr "Kanaal mode"
+
+#, fuzzy
+#~ msgid "Half-op:"
+#~ msgstr "Scheider"
+
+#, fuzzy
+#~ msgid "User-op:"
+#~ msgstr "Gebruiker"
+
+#, fuzzy
+#~ msgid "Background Colors"
+#~ msgstr "Achtergrondkleur"
+
+#, fuzzy
+#~ msgid "Nickname Grid"
+#~ msgstr "Bijnaam"
+
+#, fuzzy
+#~ msgid "Draw nickname grid"
+#~ msgstr "Geen naam opgegeven"
+
+#, fuzzy
+#~ msgid "Grid color:"
+#~ msgstr "Cursor"
+
+#, fuzzy
+#~ msgid "Plain Grid"
+#~ msgstr "Algemene"
+
+#, fuzzy
+#~ msgid "Show user channel icons"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "Show user channel activity indicator"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "Enable user tooltips"
+#~ msgstr "Animatie"
+
+#, fuzzy
+#~ msgid "Minimize console after successful login"
+#~ msgstr "netwerk"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to minimize the console window after "
+#~ "successfully logging into a server.</center>"
+#~ msgstr "<center> is de<b></b> de</center>"
+
+#, fuzzy
+#~ msgid "On Channel Kick"
+#~ msgstr "Kanaal mode"
+
+#, fuzzy
+#~ msgid "Keep channel open"
+#~ msgstr "Kanaal mode"
+
+#, fuzzy
+#~ msgid "Rejoin channel"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to attempt to rejoin a channel after "
+#~ "being kicked.</center>"
+#~ msgstr "<center> is de<b></b> de</center>"
+
+#, fuzzy
+#~ msgid "On Channel Part"
+#~ msgstr "Kanaal mode"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to keep the channel window open "
+#~ "after leaving it.</center>"
+#~ msgstr "<center> is de<b></b> de</center>"
+
+#, fuzzy
+#~ msgid "Automatically join channel on invite"
+#~ msgstr "naar"
+
+#, fuzzy
+#~ msgid "Do not update the away list"
+#~ msgstr "Verzoeken"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to keep the channel window open "
+#~ "after being kicked.<br>It might be a good idea to also enable the "
+#~ "\"Rejoin channel\" option.</center>"
+#~ msgstr "<center> is de<b></b> de</center>"
+
+#, fuzzy
+#~ msgid "Do not request ban list"
+#~ msgstr "Verzoeken"
+
+#, fuzzy
+#~ msgid "Certificate"
+#~ msgstr "notificatie"
+
+#, fuzzy
+#~ msgid "Certificate location:"
+#~ msgstr "notificatie"
+
+#, fuzzy
+#~ msgid "Private Key"
+#~ msgstr "private"
+
+#, fuzzy
+#~ msgid "Private key password:"
+#~ msgstr "Wachtwoord:"
+
+#, fuzzy
+#~ msgid "This executable has no SSL support."
+#~ msgstr "De KVIrc executabele heeft geen IPV6 support"
+
+#, fuzzy
+#~ msgid "Connect timeout:"
+#~ msgstr "Verbinden"
+
+#, fuzzy
+#~ msgid "Limit to 1 message every:"
+#~ msgstr "Bericht"
+
+#, fuzzy
+#~ msgid "Network Interfaces"
+#~ msgstr "Netwerk is onbereikbaar"
+
+#, fuzzy
+#~ msgid "Bind IPv4 connections to:"
+#~ msgstr "Geen verbinding"
+
+#, fuzzy
+#~ msgid "Bind IPv6 connections to:"
+#~ msgstr "Geen verbinding"
+
+#, fuzzy
+#~ msgid "Private messages"
+#~ msgstr "private"
+
+#, fuzzy
+#~ msgid "Private notices"
+#~ msgstr "s Server"
+
+#, fuzzy
+#~ msgid "Minimize new queries"
+#~ msgstr "M&inimaliseren"
+
+#, fuzzy
+#~ msgid "Enable target user tracking"
+#~ msgstr "Activeren"
+
+#, fuzzy
+#~ msgid "Popup notifier on new query message"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "Enable word highlighting"
+#~ msgstr "Activeren URL-adres"
+
+#, fuzzy
+#~ msgid "Words to highlight:"
+#~ msgstr "Activeren URL-adres"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>If this option is enabled, KVIrc will highlight any user message "
+#~ "containing your current nickname</center>"
+#~ msgstr "<center> is de<b></b> de</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>If this option is enabled, KVIrc will (attempt to) flash the "
+#~ "system taskbar entry when a highlighted message is printed and KVIrc is "
+#~ "not the active window</center>"
+#~ msgstr "<center> is de<b></b> de</center>"
+
+#, fuzzy
+#~ msgid "Popup the notifier window on highlighted messages"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>If this option is enabled, KVIrc will popup a little notifier "
+#~ "window in the low right corner of your desktop when a highlighted message "
+#~ "is printed and KVIrc is not the active window</center>"
+#~ msgstr "<center> is de<b></b> de</center>"
+
+#, fuzzy
+#~ msgid "Taskbar Alert"
+#~ msgstr "Takenbalk"
+
+#, fuzzy
+#~ msgid "Restrict alert"
+#~ msgstr "He&rstellen"
+
+#, fuzzy
+#~ msgid "Alert for query messages"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>If this option is enabled, KVIrc will alert in the taskbar only "
+#~ "if the specified alert level is reached.</center>"
+#~ msgstr "<center> is de<b></b> de</center>"
+
+#, fuzzy
+#~ msgid "Minimum alert level:"
+#~ msgstr "Alles opschonen"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option sets the minimum alert level for the taskbar.</center>"
+#~ msgstr "<center> is de<b></b> de</center>"
+
+#, fuzzy
+#~ msgid "Query windows"
+#~ msgstr "&Terminal"
+
+#, fuzzy
+#~ msgid "Channel windows"
+#~ msgstr "Trapgewijs"
+
+#, fuzzy
+#~ msgid "DCC Chat windows"
+#~ msgstr "Trapgewijs"
+
+#, fuzzy
+#~ msgid "Console windows"
+#~ msgstr "&Terminal"
+
+#, fuzzy
+#~ msgid "<b>http://</b> handler command:"
+#~ msgstr "Geen zo een module commando"
+
+#, fuzzy
+#~ msgid "<b>https://</b> handler command:"
+#~ msgstr "Geen zo een module commando"
+
+#, fuzzy
+#~ msgid "<b>ftp://</b> handler command:"
+#~ msgstr "Geen zo een module commando"
+
+#, fuzzy
+#~ msgid "<b>mailto:</b> handler command:"
+#~ msgstr "Geen zo een module commando"
+
+#, fuzzy
+#~ msgid "<b>file://</b> handler command:"
+#~ msgstr "Geen zo een module commando"
+
+#, fuzzy
+#~ msgid "Unknown protocol handler command:"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Ident username:"
+#~ msgstr "Gebruikersnaam"
+
+#, fuzzy
+#~ msgid "Service port:"
+#~ msgstr "Server"
+
+#, fuzzy
+#~ msgid "IPv6 Settings"
+#~ msgstr "&Status"
+
+#, fuzzy
+#~ msgid "Use flood protection (recommended)"
+#~ msgstr "Gebruik"
+
+#, fuzzy
+#~ msgid " requests"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Use online notify list"
+#~ msgstr "Notificatie lijst"
+
+#, fuzzy
+#~ msgid "Show notifications in active window"
+#~ msgstr "Notificatie voor"
+
+#, fuzzy
+#~ msgid "Flash window when users are going online"
+#~ msgstr "Notificatie lijst"
+
+#, fuzzy
+#~ msgid "Popup notifier when users are going online"
+#~ msgstr "Notificatie lijst"
+
+#, fuzzy
+#~ msgid "Advanced configuration"
+#~ msgstr "Op&slaan"
+
+#, fuzzy
+#~ msgid "Use \"smart\" notify list manager"
+#~ msgstr "Notificatie lijst"
+
+#, fuzzy
+#~ msgid "Use tree taskbar"
+#~ msgstr "Takenbalk"
+
+#, fuzzy
+#~ msgid "Show window icons in taskbar"
+#~ msgstr "Geen naam opgegeven"
+
+#, fuzzy
+#~ msgid "Show IRC context indicator in taskbar"
+#~ msgstr "&Nieuw"
+
+#, fuzzy
+#~ msgid "Enable window tooltips"
+#~ msgstr "Animatie"
+
+#, fuzzy
+#~ msgid "Text/Alert Colors"
+#~ msgstr "Sluiten"
+
+#, fuzzy
+#~ msgid "Alert Level 1:"
+#~ msgstr "Alles opschonen"
+
+#, fuzzy
+#~ msgid "Alert Level 2:"
+#~ msgstr "Alles opschonen"
+
+#, fuzzy
+#~ msgid "Alert Level 3:"
+#~ msgstr "Alles opschonen"
+
+#, fuzzy
+#~ msgid "Alert Level 4:"
+#~ msgstr "Alles opschonen"
+
+#, fuzzy
+#~ msgid "Alert Level 5:"
+#~ msgstr "Alles opschonen"
+
+#, fuzzy
+#~ msgid "Progress bar color:"
+#~ msgstr "voortgang"
+
+#, fuzzy
+#~ msgid "Minimum width:"
+#~ msgstr "Minimale snelheid"
+
+#, fuzzy
+#~ msgid "Maximum width:"
+#~ msgstr "Minimale snelheid"
+
+#, fuzzy
+#~ msgid "Minimized:"
+#~ msgstr "M&inimaliseren"
+
+#, fuzzy
+#~ msgid "Minimum width of buttons:"
+#~ msgstr "Minimale snelheid"
+
+#, fuzzy
+#~ msgid "Maximum number of rows:"
+#~ msgstr "buffer"
+
+#, fuzzy
+#~ msgid "Private/channel notices"
+#~ msgstr "End voor"
+
+#, fuzzy
+#~ msgid "Use verbose ignore (show messages in console)"
+#~ msgstr "acties"
+
+#, fuzzy
+#~ msgid "Network Properties"
+#~ msgstr "Eigenschappen"
+
+#, fuzzy
+#~ msgid "DCC socket timeout:"
+#~ msgstr "seconden"
+
+#, fuzzy
+#~ msgid "Listen on address/interface:"
+#~ msgstr "aan s poort"
+
+#, fuzzy
+#~ msgid "Lowest port:"
+#~ msgstr "Host poort:"
+
+#, fuzzy
+#~ msgid "Highest port:"
+#~ msgstr "Server"
+
+#, fuzzy
+#~ msgid "Maximum number of DCC sessions"
+#~ msgstr "buffer"
+
+#, fuzzy
+#~ msgid "Open all minimized"
+#~ msgstr "Aanmaken"
+
+#, fuzzy
+#~ msgid "Automatically accept"
+#~ msgstr "Auto"
+
+#, fuzzy
+#~ msgid "Open minimized when auto-accepted"
+#~ msgstr "Aanmaken auto"
+
+#, fuzzy
+#~ msgid "Automatically resume when auto-accepted"
+#~ msgstr "Aanmaken auto"
+
+#, fuzzy
+#~ msgid "Automatically close on completion"
+#~ msgstr "naar"
+
+#, fuzzy
+#~ msgid "Notify completion in console"
+#~ msgstr "Notificatie"
+
+#, fuzzy
+#~ msgid "Notify completion in notifier"
+#~ msgstr "Notificatie"
+
+#, fuzzy
+#~ msgid "Maximum number of DCC transfers"
+#~ msgstr "buffer"
+
+#, fuzzy
+#~ msgid "Download folder:"
+#~ msgstr "Ophalen"
+
+#, fuzzy
+#~ msgid "Speed limits"
+#~ msgstr "Snelheid"
+
+#, fuzzy
+#~ msgid "bytes/sec"
+#~ msgstr "bytes"
+
+#, fuzzy
+#~ msgid "Packet size:"
+#~ msgstr "grootte bytes"
+
+#, fuzzy
+#~ msgid "Idle interval:"
+#~ msgstr "Gebruikersnaam"
+
+#, fuzzy
+#~ msgid "Use fast send (send ahead)"
+#~ msgstr "Gebruik"
+
+#, fuzzy
+#~ msgid "On Chat Request"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "On Voice Request"
+#~ msgstr "Zoeken"
+
+#, fuzzy
+#~ msgid "Sound device:"
+#~ msgstr "Karakter"
+
+#, fuzzy
+#~ msgid "Mixer device:"
+#~ msgstr "Karakter"
+
+#, fuzzy
+#~ msgid "Pre-buffer size:"
+#~ msgstr "buffer"
+
+#~ msgid "Abort"
+#~ msgstr "Afbreken"
+
+#, fuzzy
+#~ msgid "Failed to start the download"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid "Hide avatars in userlist"
+#~ msgstr "Notificatie lijst"
+
+#, fuzzy
+#~ msgid "Avatar Download Failed - KVIrc"
+#~ msgstr "de naar"
+
+#, fuzzy
+#~ msgid "Scaling"
+#~ msgstr "Beschrijving"
+
+#, fuzzy
+#~ msgid "Image width:"
+#~ msgstr "Minimale snelheid"
+
+#, fuzzy
+#~ msgid "Request CTCP"
+#~ msgstr "Verzoeken"
+
+#, fuzzy
+#~ msgid "Request missing avatars"
+#~ msgstr "Verzoeken"
+
+#, fuzzy
+#~ msgid "Maximum requested file size:"
+#~ msgstr "buffer"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to send a DCC GET request when "
+#~ "someone sets an avatar and there is no cached copy available.</center>"
+#~ msgstr "<center> is de<b></b> de</center>"
+
+#, fuzzy
+#~ msgid "Automatically accept incoming avatars"
+#~ msgstr "Accepteren Inkomend"
+
+#, fuzzy
+#~ msgid "Remember avatars for registered users"
+#~ msgstr "Faalde naar gebruiker."
+
+#, fuzzy
+#~ msgid "Avatar offer timeout:"
+#~ msgstr "Verbinden"
+
+#, fuzzy
+#~ msgid "Network Details"
+#~ msgstr "Eigenschappen"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the <b>username</b> that KVIrc will use to login to "
+#~ "servers on this network.\n"
+#~ "If this field is left empty (most common case), KVIrc will use the "
+#~ "default username specified in the \"Identity\" options tab.</center>"
+#~ msgstr ""
+#~ "<center> is de<b></b> naar login naar\n"
+#~ " veld leeg de standaard de Identiteit</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>You can specify a \"special\" <b>nickname</b> that will be used "
+#~ "to log in to the servers on this network.<br>If this field is left empty "
+#~ "(most common case), the default nickname (specified in the \"Identity\" "
+#~ "settings) will be used.</center>"
+#~ msgstr ""
+#~ "<center> U<b></b> gebruikt naar login door<br> veld leeg de standaard de "
+#~ "Identiteit gebruikt</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>You can specify a \"special\" <b>real name</b> that will be used "
+#~ "to login with the servers on this network.<br>If you leave this field "
+#~ "empty (most common case), the default \"real name\" (specified in the "
+#~ "\"Identity\" settings) will be used.</center>"
+#~ msgstr ""
+#~ "<center> U<b> naam</b> gebruikt naar login door<br> veld leeg de "
+#~ "standaard naam de Identiteit gebruikt</center>"
+
+#, fuzzy
+#~ msgid "Encoding:"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid "Connect to this network at startup"
+#~ msgstr "Maximale tijd om te verbinden overschreden"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to automatically connect to this "
+#~ "network at startup</center>"
+#~ msgstr "<center> is de<b></b> de</center>"
+
+#, fuzzy
+#~ msgid "On Connect"
+#~ msgstr "Verbinden"
+
+#, fuzzy
+#~ msgid "On Login"
+#~ msgstr "Loggen uit."
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is a list of NickServ identification rules. KVIrc will use "
+#~ "them to model its automatic interaction with NickServ on this network."
+#~ "<br>Please be aware that this feature can cause your NickServ passwords "
+#~ "to be stolen if used improperly. Make sure that you fully understand the "
+#~ "NickServ authentication protocol.<br>In other words, be sure to know what "
+#~ "you're doing.<br>Also note that the password that you provide is stored "
+#~ "as <b>PLAIN TEXT</b>.</center>"
+#~ msgstr ""
+#~ "<center> is naar door<br> naar it de de en de<br> overig naar<br> de "
+#~ "wachtwoord is de configuratie file<br> Rechts naar toevoegen verwijderen</"
+#~ "center>"
+
+#, fuzzy
+#~ msgid "Server Details"
+#~ msgstr "Servers"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is a brief description of this server. This field has no "
+#~ "restrictions but many server lists use it to describe the server's "
+#~ "physical location</center>"
+#~ msgstr ""
+#~ "<center> is beschrijving de\n"
+#~ " veld nee it naar de</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the <b>username</b> that KVIrc will use to login to this "
+#~ "server.\n"
+#~ "If this field is left empty (most common case), KVIrc will first look if "
+#~ "an username is specified for the network that this server belongs to, and "
+#~ "if that is empty then KVIrc will use the default username specified in "
+#~ "the \"Identity\" options tab.</center>"
+#~ msgstr ""
+#~ "<center> is de<b></b> naar login naar\n"
+#~ " veld leeg de standaard de Identiteit</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>If this server requires a password, put it in this field, "
+#~ "otherwise leave it empty.</center>"
+#~ msgstr "<center> de wachtwoord it veld it leeg</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>You can specify a \"special\" <b>nickname</b> that will be used "
+#~ "to log in to this server.<br>If this field is left empty (most common "
+#~ "case), KVIrc will first look if a nickname is specified for the network "
+#~ "that this server belongs to, and if that is empty then the default "
+#~ "nickname (specified in the \"Identity\" settings) will be used.</center>"
+#~ msgstr ""
+#~ "<center> U<b></b> gebruikt naar login door<br> veld leeg de standaard de "
+#~ "Identiteit gebruikt</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>You can specify a \"special\" <b>real name</b> that will be used "
+#~ "to login with this server.<br>If you leave this field empty (most common "
+#~ "case), KVIrc will first look if a real name is specified for the network "
+#~ "that this server belongs to, and if that is empty the default \"real name"
+#~ "\" (specified in the \"Identity\" settings) will be used.</center>"
+#~ msgstr ""
+#~ "<center> U<b> naam</b> gebruikt naar login door<br> veld leeg de "
+#~ "standaard naam de Identiteit gebruikt</center>"
+
+#, fuzzy
+#~ msgid "Use default user mode"
+#~ msgstr "Beschikbaar gebruiker:"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the <b>IP address</b> of this server, it is here for "
+#~ "caching purposes.<br>If you leave this field empty, KVIrc will fill it in "
+#~ "the first time it connects to the server. If you enable the \"cache IP "
+#~ "address\" option below, KVIrc will use it as a \"cached result\" and "
+#~ "avoid looking it up again.</center>"
+#~ msgstr ""
+#~ "<center> is de<b> IP</b> de it is voor<br> veld leeg it de tijd it naar "
+#~ "de de it en it</center>"
+
+#, fuzzy
+#~ msgid "Cache IP address"
+#~ msgstr "Cache IP"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This check will enable <b>IP address caching</b> for this server:"
+#~ "<br>DNS lookups can be time-consuming and might be blocking on some "
+#~ "platforms; this option will cause KVIrc to look up the server hostname "
+#~ "only once.<br><br> Advanced: you can also use this option to force a "
+#~ "certain server name to resolve to a fixed ip address when either the dns "
+#~ "for that server is temporairly unreachable or you want to avoid the round-"
+#~ "robin lookups.</center>"
+#~ msgstr "<center><b> IP</b> voor<br> DNS tijd en aan naar de</center>"
+
+#, fuzzy
+#~ msgid "Connect to this server at startup"
+#~ msgstr "Maximale tijd om te verbinden overschreden"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to connect to the IRC server when it "
+#~ "is started.</center>"
+#~ msgstr "<center> is de<b></b> de</center>"
+
+#, fuzzy
+#~ msgid "Use Network Encoding"
+#~ msgstr "Gebruik de"
+
+#, fuzzy
+#~ msgid "Id:"
+#~ msgstr "Id"
+
+#, fuzzy
+#~ msgid "Proxy server:"
+#~ msgstr "Kopiëren..."
+
+#, fuzzy
+#~ msgid "Direct connection"
+#~ msgstr "geen verbinding"
+
+#, fuzzy
+#~ msgid "Server"
+#~ msgstr "Server"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the list of available IRC servers.<br>Right-click on the "
+#~ "list to add or remove servers and perform other actions.<br>Double-click "
+#~ "on a item for advanced options.</center>"
+#~ msgstr ""
+#~ "<center> is de beschikbaar IRC<br> Rechts aan de naar toevoegen of "
+#~ "verwijderen en voor overig</center>"
+
+#, fuzzy
+#~ msgid "New Network"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "New Server"
+#~ msgstr "Netwerk"
+
+#, fuzzy
+#~ msgid "Remove Network/Server"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "Paste Server"
+#~ msgstr "Plakken"
+
+#, fuzzy
+#~ msgid "Import List"
+#~ msgstr "Poort"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the name of the currently selected server or network</"
+#~ "center>"
+#~ msgstr "<center> is de<b></b> de</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This check identifies IPv6 servers.<br>If enabled, KVIrc will "
+#~ "attempt to use the IPv6 protocol (thus your OS <b>must</b> have a working "
+#~ "IPv6 stack and you <b>must</b> have an IPv6 connection).</center>"
+#~ msgstr ""
+#~ "<center><br> ingeschakeld naar de<b></b> en<b></b> verbinding</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the default <b>port</b> that this server will be "
+#~ "contacted on.<br>Usually <b>6667</b> is OK.</center>"
+#~ msgstr "<center> is de standaard<b> poort</b> aan<br><b></b> is OK</center>"
+
+#, fuzzy
+#~ msgid "Connect &Now"
+#~ msgstr "Verbinden"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>Hit this button to connect to the currently selected server.</"
+#~ "center>"
+#~ msgstr "<center> is de<b></b> de</center>"
+
+#, fuzzy
+#~ msgid "Show this dialog at startup"
+#~ msgstr "Tonen de geregistreerd gebruikers"
+
+#, fuzzy
+#~ msgid "Network:"
+#~ msgstr "Netwerk:"
+
+#, fuzzy
+#~ msgid "No selection"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "Remove Network"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "&New Server"
+#~ msgstr "Netwerk"
+
+#, fuzzy
+#~ msgid "Re&move Server"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "&Copy Server"
+#~ msgstr "Kopiëren..."
+
+#, fuzzy
+#~ msgid "&Paste Server"
+#~ msgstr "Plakken"
+
+#, fuzzy
+#~ msgid "Clear List"
+#~ msgstr "Beginwaarde"
+
+#, fuzzy
+#~ msgid "irc.unknown.net"
+#~ msgstr "onbekend"
+
+#, fuzzy
+#~ msgid "Sound System"
+#~ msgstr "systeemfout"
+
+#, fuzzy
+#~ msgid "Media Player"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "ID3 tags' encoding"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid "PAGE reply:"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "Show the CTCP replies in the active window"
+#~ msgstr "nee"
+
+#, fuzzy
+#~ msgid "%s (module %s)"
+#~ msgstr "s s"
+
+#, fuzzy
+#~ msgid "Module '%s', Command '%s'"
+#~ msgstr "Module s Commando s"
+
+#, fuzzy
+#~ msgid "Can't rebind the command: window with id %s not found"
+#~ msgstr "de commando venster door id s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Can't rebind the command: missing window identifier after the -r switch"
+#~ msgstr "de commando venster de"
+
+#, fuzzy
+#~ msgid "Module '%s', Function '%s'"
+#~ msgstr "Module s Functie s"
+
+#, fuzzy
+#~ msgid "Identifier evaluated to \"%s\""
+#~ msgstr "Indentificatie naar s"
+
+#, fuzzy
+#~ msgid "Left operand of operator %s (%s{%s}) is undefined : assuming 0"
+#~ msgstr "Links s s s is"
+
+#, fuzzy
+#~ msgid "Left operand of operator %s (%s[%s]) is undefined : assuming 0"
+#~ msgstr "Links s s s is"
+
+#, fuzzy
+#~ msgid "Left operand of operator %s (%s) is undefined : assuming 0"
+#~ msgstr "Links s s is"
+
+#, fuzzy
+#~ msgid "Variable %s{%s} evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Variabele s s naar s s"
+
+#, fuzzy
+#~ msgid "Variable %s[%s] evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Variabele s s naar s s"
+
+#, fuzzy
+#~ msgid "Variable %s evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Variabele s naar s s"
+
+#, fuzzy
+#~ msgid "Right operand of operator %s evaluated to '%s' (not a number)"
+#~ msgstr "Rechts s naar s"
+
+#, fuzzy
+#~ msgid "Encoding"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid "The config file with id '%s' is not open"
+#~ msgstr "file s is"
+
+#, fuzzy
+#~ msgid "The config file with id '%s' is read only"
+#~ msgstr "file s is"
+
+#, fuzzy
+#~ msgid "No nickname specified"
+#~ msgstr "Geen naam opgegeven"
+
+#, fuzzy
+#~ msgid "No netmask specified"
+#~ msgstr "Nee masker"
+
+#, fuzzy
+#~ msgid "No property name specified"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "Missing property name"
+#~ msgstr "Ontbrekende popup naam"
+
+#, fuzzy
+#~ msgid "The specified window (%s) is not a channel/query/DCC chat"
+#~ msgstr "venster is"
+
+#, fuzzy
+#~ msgid "No file specified"
+#~ msgstr "Nee bestandsnaam"
+
+#, fuzzy
+#~ msgid "Window %s not found"
+#~ msgstr "Venster s"
+
+#, fuzzy
+#~ msgid "Can't log to file %s"
+#~ msgstr "naar file"
+
+#, fuzzy
+#~ msgid "Window with id '%s' not found, returning empty string"
+#~ msgstr "Venster door id s leeg"
+
+#, fuzzy
+#~ msgid "Invalid progress value (%s)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Error:not enough parameters!"
+#~ msgstr "Niet voldoende parameters"
+
+#, fuzzy
+#~ msgid "The (%s) object is not a pixmap"
+#~ msgstr "bron s is"
+
+#, fuzzy
+#~ msgid "Invalid index parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Invalid parameter"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Can't find the object "
+#~ msgstr "s de"
+
+#, fuzzy
+#~ msgid "Can't set a non-widget object"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Can't find the tab object "
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Can't find the widget(%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Invalid marging value (%s)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "This object is not a toolbutton item!"
+#~ msgstr "bron s is"
+
+#, fuzzy
+#~ msgid "No value to insert"
+#~ msgstr "Nee naar"
+
+#, fuzzy
+#~ msgid "Invalid index(%s)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "No index specified"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "Invalid index (%s)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Index %u out of range"
+#~ msgstr "Index"
+
+#, fuzzy
+#~ msgid "Invalid resize mode (%s): defaulting to Auto"
+#~ msgstr "s naar"
+
+#, fuzzy
+#~ msgid "Invalid margin value (%s)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Invalid spacing value (%s)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Invalid stretch value (%s)"
+#~ msgstr "IRC url s"
+
+#, fuzzy
+#~ msgid "Invalid from_row parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Invalid to_row parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Invalid from_column parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Invalid to_column parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Invalid parameters"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Can't find the widget/pixmap (%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Can't find the widget object to remove (%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Can't remove a non-widget object"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Can't find the widget (%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Invalid zoom value (%s)"
+#~ msgstr "IRC url s"
+
+#, fuzzy
+#~ msgid "Invalid depth value (%s)"
+#~ msgstr "IRC url s"
+
+#, fuzzy
+#~ msgid "Invalid value (%s)"
+#~ msgstr "IRC url s"
+
+#, fuzzy
+#~ msgid "Invalid paragraph value (%s)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid " I can't find the specified file."
+#~ msgstr "de commando venster door id s"
+
+#, fuzzy
+#~ msgid " I cannot read the file."
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Class %s is undefined"
+#~ msgstr "s is"
+
+#, fuzzy
+#~ msgid "The source object '%s' is not existing"
+#~ msgstr "bron s is"
+
+#, fuzzy
+#~ msgid "The target object '%s' is not existing"
+#~ msgstr "s is"
+
+#, fuzzy
+#~ msgid "No signal '%s' to disconnect"
+#~ msgstr "Nee s naar"
+
+#, fuzzy
+#~ msgid "No destination specified"
+#~ msgstr "Geen naam opgegeven"
+
+#, fuzzy
+#~ msgid "Can't find the destination widget/pixmap (%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "No source specified"
+#~ msgstr "Nee bestandsnaam"
+
+#, fuzzy
+#~ msgid "Can't find the source widget/pixmap (%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Invalid x parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Invalid y parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Can't find the listviewitem object to add (%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Invalid column (%s)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Unknown alignment: %s"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Unknown frame / shadow style: %s"
+#~ msgstr "Onbekend stijl"
+
+#, fuzzy
+#~ msgid "Hey ! You wanna know my echo mode or what ?"
+#~ msgstr "U of?"
+
+#, fuzzy
+#~ msgid "Unknown echo mode"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Invalid object."
+#~ msgstr "ongeldig poort nummer"
+
+#, fuzzy
+#~ msgid "Can't setStretchableWidget a non-widget object."
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Can't find the popupmenu object to add (%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Can't find the widget object (%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Invalid columns value (%s)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Invalid size value (%s)"
+#~ msgstr "IRC url s"
+
+#, fuzzy
+#~ msgid "Invalid icon identifier"
+#~ msgstr "Ongeldige encryptie"
+
+#, fuzzy
+#~ msgid ""
+#~ "Can't set the current avatar to '%s': failed to start the http transfer"
+#~ msgstr "de naar s de nee"
+
+#, fuzzy
+#~ msgid "Can't set the current avatar to '%s': can't load the image"
+#~ msgstr "de naar s de nee"
+
+#, fuzzy
+#~ msgid "Can't find the window with id '%s'"
+#~ msgstr "de commando venster door id s"
+
+#, fuzzy
+#~ msgid "The specified window (%s) is not a channel"
+#~ msgstr "venster is"
+
+#, fuzzy
+#~ msgid "No button name specified!"
+#~ msgstr "Nee naam"
+
+#, fuzzy
+#~ msgid "No separator name specified"
+#~ msgstr "Nee naam"
+
+#, fuzzy
+#~ msgid "No toolbar id specified"
+#~ msgstr "Nee naam"
+
+#, fuzzy
+#~ msgid "The action \"%s\" doesn't exist"
+#~ msgstr "file s is"
+
+#, fuzzy
+#~ msgid "Invalid IRC context id '%s'"
+#~ msgstr "IRC id s"
+
+#, fuzzy
+#~ msgid "Background not found %s "
+#~ msgstr "Achtergrondkleur"
+
+#, fuzzy
+#~ msgid "Mask %s is already used to identify user %s"
+#~ msgstr "s is gebruikt naar gebruiker"
+
+#, fuzzy
+#~ msgid "User not found (%s)"
+#~ msgstr "Gebruiker s"
+
+#, fuzzy
+#~ msgid "User %s not found"
+#~ msgstr "Gebruiker s"
+
+#, fuzzy
+#~ msgid "Mask %s already used to identify user %s"
+#~ msgstr "s gebruikt naar gebruiker"
+
+#, fuzzy
+#~ msgid "Mask %s not found"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Sound file '%s' not found"
+#~ msgstr "Venster s"
+
+#, fuzzy
+#~ msgid "The specified name is empty"
+#~ msgstr "venster is"
+
+#, fuzzy
+#~ msgid "The specified visible name is empty"
+#~ msgstr "file grootte is"
+
+#, fuzzy
+#~ msgid "The specified description is empty"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "The specified KVIrc version \"%s\" is not a valid version string"
+#~ msgstr "s is"
+
+#, fuzzy
+#~ msgid "Failed to copy %s to %s"
+#~ msgstr "Faalde naar s"
+
+#, fuzzy
+#~ msgid "Failed to write to file %s"
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Failed to rename %s to %s"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid "Failed to make the directory %s"
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Failed to remove the file %s"
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Failed to remove the directory %s"
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "The specified directory does not exist '%s'"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "Can't open the file \"%s\" for reading"
+#~ msgstr "de file s voor"
+
+#, fuzzy
+#~ msgid "Read error for file %s"
+#~ msgstr "Gelezen"
+
+#, fuzzy
+#~ msgid "No such options page class name"
+#~ msgstr "Geen zo een objekt klasse"
+
+#, fuzzy
+#~ msgid "%Q is not an integer"
+#~ msgstr "s is"
+
+#, fuzzy
+#~ msgid "Window with caption '%s' not found, returning 0"
+#~ msgstr "Venster door s"
+
+#, fuzzy
+#~ msgid "The specified UNIX time is not valid (%s)"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "The specified time format is not valid (%s)"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "No option named '%s'"
+#~ msgstr "Nee s"
+
+#, fuzzy
+#~ msgid "No option name specified"
+#~ msgstr "Nee naam"
+
+#, fuzzy
+#~ msgid "No link text specified"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "Broken prologue code for menu '%s', error detail follows"
+#~ msgstr "Gebroken voor s"
+
+#, fuzzy
+#~ msgid "Broken expression for menu item '%Q', ignoring"
+#~ msgstr "Gebroken expressie voor item s"
+
+#, fuzzy
+#~ msgid "Can't find the external popup '%Q', ignoring"
+#~ msgstr "de localhost"
+
+#, fuzzy
+#~ msgid "Broken epilogue code for menu '%s', error details follow"
+#~ msgstr "Gebroken voor s"
+
+#, fuzzy
+#~ msgid "Function name expected"
+#~ msgstr "Functie naam"
+
+#, fuzzy
+#~ msgid "The catalogue %s was not loaded"
+#~ msgstr "file s is"
+
+#, fuzzy
+#~ msgid "Invalid icon specification '%s', using default"
+#~ msgstr "pictogram s"
+
+#, fuzzy
+#~ msgid "Missing icon number after the 'i' switch"
+#~ msgstr "pictogram de"
+
+#, fuzzy
+#~ msgid "Missing window ID after the 'w' switch"
+#~ msgstr "venster id de"
+
+#, fuzzy
+#~ msgid "No targets specified"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "No such object (%s)"
+#~ msgstr "Nee s"
+
+#, fuzzy
+#~ msgid "Invalid screen coordinates"
+#~ msgstr "Ongeldige encryptie"
+
+#, fuzzy
+#~ msgid "Invalid timeout delay '%s'"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Empty command block for timer '%s', timer not started"
+#~ msgstr "Leeg commando voor s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Internal error: Unable to add timer %s, insufficient system resources"
+#~ msgstr "naar toevoegen s"
+
+#, fuzzy
+#~ msgid "No such timer (%s)"
+#~ msgstr "Nee s"
+
+#, fuzzy
+#~ msgid "No such event (%s)"
+#~ msgstr "Nee s"
+
+#, fuzzy
+#~ msgid "No handler '%s' for raw numeric event '%d'"
+#~ msgstr "Nee s voor s"
+
+#, fuzzy
+#~ msgid "No handler '%s' for event '%s'"
+#~ msgstr "Nee s voor s"
+
+#, fuzzy
+#~ msgid "Failed to execute command '%s'"
+#~ msgstr "Faalde naar commando s"
+
+#, fuzzy
+#~ msgid "Invalid IRC url (%s)"
+#~ msgstr "IRC url s"
+
+#, fuzzy
+#~ msgid "The commandline for this url type seems to be broken (%s)"
+#~ msgstr "voor url naar s"
+
+#, fuzzy
+#~ msgid "No commandline specified for this type of url (%s)"
+#~ msgstr "Nee voor url s"
+
+#, fuzzy
+#~ msgid "Invalid pitch (%s): using default"
+#~ msgstr "zichtbaar naam"
+
+#, fuzzy
+#~ msgid "Invalid duration (%s): using default"
+#~ msgstr "pictogram s"
+
+#, fuzzy
+#~ msgid "Can't find the icon '%s'"
+#~ msgstr "s de"
+
+#, fuzzy
+#~ msgid "Window button '%s' not found"
+#~ msgstr "Venster s"
+
+#, fuzzy
+#~ msgid "Can't rebind the command sequence: missing window identifier"
+#~ msgstr "de commando venster de"
+
+#, fuzzy
+#~ msgid "Can't rebind the command sequence: window with id %s not found"
+#~ msgstr "de commando venster door id s"
+
+#, fuzzy
+#~ msgid "Unmatched parenthesis in expression body: ignoring trailing garbage"
+#~ msgstr "expressie"
+
+#, fuzzy
+#~ msgid "Error triggered from timer callback handler %c'%s'"
+#~ msgstr "Fout s"
+
+#, fuzzy
+#~ msgid "Timer callback handler '%s' is broken: killing"
+#~ msgstr "Timer s is"
+
+#, fuzzy
+#~ msgid "Initializing scripting engine..."
+#~ msgstr "Ongeldige encryptie"
+
+#, fuzzy
+#~ msgid "Loading actions..."
+#~ msgstr "Bezig met laden van de opties..."
+
+#~ msgid "Loading icons..."
+#~ msgstr "Bezig met laden van de iconen..."
+
+#~ msgid "Loading window configuration database..."
+#~ msgstr "Bezig met laden van de venster configuratie..."
+
+#~ msgid "Loading server & proxy database..."
+#~ msgstr "Bezig met laden van de server & proxy database..."
+
+#~ msgid "Loading event handlers..."
+#~ msgstr "Bezig met laden van de 'event handlers'..."
+
+#, fuzzy
+#~ msgid "Loading raw event handlers..."
+#~ msgstr "Bezig met laden van de 'event handlers'..."
+
+#~ msgid "Loading popups..."
+#~ msgstr "Bezig met laden van de popups..."
+
+#, fuzzy
+#~ msgid "Loading toolbars..."
+#~ msgstr "Bezig met laden van de opties..."
+
+#, fuzzy
+#~ msgid "Loading text icon associations..."
+#~ msgstr "Bezig met laden van de bestanden wissel configuratie."
+
+#~ msgid "Loading media types..."
+#~ msgstr "Bezig met laden van de media types..."
+
+#~ msgid "Loading registered users..."
+#~ msgstr "Bezig met laden van de geregistreerd gebruikers..."
+
+#, fuzzy
+#~ msgid "Loading registered channels..."
+#~ msgstr "Bezig met laden van de geregistreerd gebruikers..."
+
+#~ msgid "Loading file trader configuration..."
+#~ msgstr "Bezig met laden van de bestanden wissel configuratie."
+
+#~ msgid "Loading nick serv service configuration..."
+#~ msgstr "Bezig met laden van de nickserver configuratie..."
+
+#, fuzzy
+#~ msgid "Loading history entries..."
+#~ msgstr "Bezig met laden van de geregistreerd gebruikers..."
+
+#, fuzzy
+#~ msgid "Loading avatar cache..."
+#~ msgstr "Bezig met laden van de aliassen"
+
+#~ msgid "Starting up the engine..."
+#~ msgstr "De motor aanzetten..."
+
+#~ msgid "Have fun! :)"
+#~ msgstr "Veel plezier! :)"
+
+#, fuzzy
+#~ msgid "Show Ban Editor"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid "Show Crypto Controller"
+#~ msgstr "Omschakelen"
+
+#, fuzzy
+#~ msgid "Toggle Notify List"
+#~ msgstr "Omschakelen gebruikers lijst"
+
+#, fuzzy
+#~ msgid "&New Alias"
+#~ msgstr "Alias"
+
+#~ msgid "Loading options..."
+#~ msgstr "Bezig met laden van de opties..."
+
+#, fuzzy
+#~ msgid "defpopup: internal error"
+#~ msgstr "Interne fout"
+
+#, fuzzy
+#~ msgid "User Messages"
+#~ msgstr "Bericht verzenden"
+
+#, fuzzy
+#~ msgid "The specified window does not exist"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "No url specified"
+#~ msgstr "Nee bestandsnaam"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %s"
+#~ msgstr "Faalde naar de status"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %Q"
+#~ msgstr "Faalde naar de status"
+
+#, fuzzy
+#~ msgid "Input buffer: %d bytes"
+#~ msgstr "Input buffer"
+
+#, fuzzy
+#~ msgid "Output buffer: %d bytes"
+#~ msgstr "buffer"
+
+#, fuzzy
+#~ msgid "<unknown size>"
+#~ msgstr "onbekend grootte"
+
+#, fuzzy
+#~ msgid "Unable to get address of interface %Q"
+#~ msgstr "aan s poort"
+
+#, fuzzy
+#~ msgid "Missing target nickname"
+#~ msgstr "nee"
+
+#, fuzzy
+#~ msgid "-c requires -i and -p"
+#~ msgstr "en"
+
+#, fuzzy
+#~ msgid "Missing filename"
+#~ msgstr "Ontbrekende variabele naam"
+
+#, fuzzy
+#~ msgid "The file size is not an positive number"
+#~ msgstr "file grootte is"
+
+#, fuzzy
+#~ msgid "Invalid sample rate '%s', defaulting to 8000"
+#~ msgstr "s naar"
+
+#, fuzzy
+#~ msgid "The current window has no associated DCC session"
+#~ msgstr "Dit venster heeft geen irc context"
+
+#, fuzzy
+#~ msgid "The first parameter must be an unsigned number"
+#~ msgstr "file grootte is"
+
+#, fuzzy
+#~ msgid "No filename specified"
+#~ msgstr "Nee bestandsnaam"
+
+#, fuzzy
+#~ msgid "The file '%s' is not readable"
+#~ msgstr "s is"
+
+#, fuzzy
+#~ msgid "Invalid timeout, ignoring"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Invalid visible name: using default"
+#~ msgstr "zichtbaar naam"
+
+#, fuzzy
+#~ msgid "Ops..failed to add the sharedfile..."
+#~ msgstr "naar toevoegen de."
+
+#, fuzzy
+#~ msgid "The specified file size is invalid"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "No sharedfile with visible name '%s' and user mask '%s'"
+#~ msgstr "Nee door zichtbaar naam s en gebruiker masker s"
+
+#, fuzzy
+#~ msgid "[Parser warning in '%s']: %s"
+#~ msgstr "[parser waarschuwing in '%s'] : %s"
+
+#, fuzzy
+#~ msgid "Windows XP style"
+#~ msgstr "Venster"
+
+#, fuzzy
+#~ msgid " I can't find the specified file %s."
+#~ msgstr "de commando venster door id s"
+
+#, fuzzy
+#~ msgid "Missing file name to parse"
+#~ msgstr "Ontbrekende variabele naam"
+
+#, fuzzy
+#~ msgid "A popup name is expected as parameter"
+#~ msgstr "Venster of alles"
+
+#, fuzzy
+#~ msgid ""
+#~ "Can't set the current avatar to '%s' (failed to start the http transfer): "
+#~ "no message sent"
+#~ msgstr "de naar s de nee"
+
+#, fuzzy
+#~ msgid ""
+#~ "Can't set the current avatar to '%s' (can't load the image): no message "
+#~ "sent"
+#~ msgstr "de naar s de nee"
+
+#, fuzzy
+#~ msgid "No socket text specified"
+#~ msgstr "Nee masker"
+
+#, fuzzy
+#~ msgid "&Export Alias To..."
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "Avatars"
+#~ msgstr "Accepteren"
+
+#, fuzzy
+#~ msgid "The script \"%1\" does not exist"
+#~ msgstr "bron s is"
+
+#, fuzzy
+#~ msgid "Defaults"
+#~ msgstr "standaard"
+
+#, fuzzy
+#~ msgid "Folders"
+#~ msgstr "Filter"
+
+#, fuzzy
+#~ msgid "Message Format"
+#~ msgstr "Bericht"
+
+#, fuzzy
+#~ msgid "Parser"
+#~ msgstr "Plakken"
+
+#, fuzzy
+#~ msgid "runtime error"
+#~ msgstr "Interne fout"
+
+#, fuzzy
+#~ msgid "Enable automatic NickServ identification"
+#~ msgstr "Activeren"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is a list of NickServ identification rules. KVIrc will use "
+#~ "them to model its automatic interaction with NickServ.<br>Please be aware "
+#~ "that this feature can cause your NickServ passwords to be stolen if used "
+#~ "improperly. Follow the suggestions in the tooltips and make sure that you "
+#~ "fully understand the NickServ authentication protocol.<br>In other words, "
+#~ "be sure to know what you're doing.<br>Also note that the password that "
+#~ "you provide is stored as <b>PLAIN TEXT</b>.Right-click to add/remove "
+#~ "rules.</center>"
+#~ msgstr ""
+#~ "<center> is naar door<br> naar it de de en de<br> overig naar<br> de "
+#~ "wachtwoord is de configuratie file<br> Rechts naar toevoegen verwijderen</"
+#~ "center>"
+
+#, fuzzy
+#~ msgid "Identification Rule"
+#~ msgstr "notificatie"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the nickname that this rule will attempt to authenticate "
+#~ "with NickServ, i.e. the nickname that you have registered with NickServ</"
+#~ "center>"
+#~ msgstr "<center> is de naar door de geregistreerd door</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is a mask that defines the server(s) that this "
+#~ "identification rule will apply to. For a single server, this option "
+#~ "should just be a hostname like <b>irc.webchat.org</b>. You can use "
+#~ "wildcards to match multiple servers, e.g. <b>*.freenode.net</b> will work "
+#~ "on the whole freenode network (by matching any server names that end in "
+#~ "\".freenode.net\").<br>Please note that some servers have more than one "
+#~ "name. For example, <b>irc.eu.dal.net</b> redirects to a \"random\" DALNet "
+#~ "server, so the real server name will be different. You must provide the "
+#~ "name that the server calls itself, usually displayed in the console "
+#~ "window title.</center>"
+#~ msgstr ""
+#~ "<center> is masker de s aan<b></b> U naar overeenkomstig<b></b> aan de "
+#~ "netwerk alles de<br> naam voor de naam U de naam de naar U naam door de</"
+#~ "center>"
+
+#, fuzzy
+#~ msgid "NickServ mask:"
+#~ msgstr "Bericht verzenden"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the mask that NickServ must match to be correctly "
+#~ "identified as the NickServ service. This usually will be something like "
+#~ "<b>[email protected]</b>.<br>You can use wildcards for "
+#~ "this field, but generally it is a security flaw. If you're absolutely "
+#~ "sure that NO user on the network can use the nickname \"NickServ\", the "
+#~ "mask <b>NickServ!*@*</b> may be safe to use in this field.</center>"
+#~ msgstr ""
+#~ "<center> is de masker overeenkomstig naar<b>[email protected]</b> U "
+#~ "voor veld it is GEEN gebruiker aan de netwerk naar<b></b> voor veld</"
+#~ "center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the command that will be executed when NickServ requests "
+#~ "authentication for the nickname described in this rule (if the both "
+#~ "server and NickServ mask are matched). This usually will be something "
+#~ "like <b>msg NickServ identify &lt;yourpassword&gt;</b>.<br>You can use "
+#~ "<b>msg -q</b> if you don't want the password echoed on the screen. Please "
+#~ "note that there is no leading slash in this command.</center>"
+#~ msgstr ""
+#~ "<center> is de commando de voor de en de en masker overeenkomstig<b>&lt;"
+#~ "&gt;</b> U de wachtwoord naar aan de is nee commando</center>"
+
+#, fuzzy
+#~ msgid "&New Rule"
+#~ msgstr "Nieuwe regel"
+
+#, fuzzy
+#~ msgid "Re&move Rule"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "Uknown"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Main"
+#~ msgstr "E-mail"
+
+#, fuzzy
+#~ msgid "Show IRC Context Toolbar"
+#~ msgstr "&Nieuw"
+
+#, fuzzy
+#~ msgid "&User Mode"
+#~ msgstr "Gebr&uiker"
+
+#, fuzzy
+#~ msgid "&Join Channel"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "Options Toolbar"
+#~ msgstr "Opties"
+
+#, fuzzy
+#~ msgid "Change server settings"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "Change identity settings"
+#~ msgstr "ICQ opties"
+
+#, fuzzy
+#~ msgid "Configure KVIrc"
+#~ msgstr "&Opties"
+
+#, fuzzy
+#~ msgid "Cascade"
+#~ msgstr "Annuleren"
+
+#, fuzzy
+#~ msgid "Tile"
+#~ msgstr "Bestand"
+
+#, fuzzy
+#~ msgid "Minimize All"
+#~ msgstr "M&inimaliseren"
+
+#, fuzzy
+#~ msgid "The specified toolbar doesn't exist (%s)"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "The specified button doesn't exist (%s)"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "Toolbar name:"
+#~ msgstr "Bekend naam:"
+
+#, fuzzy
+#~ msgid "New &Button"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "New &Separator"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "Scripting Toolbar"
+#~ msgstr "Opties"
+
+#, fuzzy
+#~ msgid "Show alias editor"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid "Show event editor"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid "Show popup editor"
+#~ msgstr "Omschakelen mode editor"
+
+#, fuzzy
+#~ msgid "Show raw event editor"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid "Show toolbar editor"
+#~ msgstr "Omschakelen ban editor"
+
+#, fuzzy
+#~ msgid "<nobr><font color=\"%s\"><b>Help Browser</b></font></nobr>"
+#~ msgstr "<nobr><font color=\"%s\"><b> Help venster</b></font></nobr>"
+
+#, fuzzy
+#~ msgid "[USEROP]: "
+#~ msgstr "FOUT"
+
+#, fuzzy
+#~ msgid " /dns <nickname>"
+#~ msgstr "Notificatie"
+
+#, fuzzy
+#~ msgid "&Add"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "%c%Q%c's real name: %Q"
+#~ msgstr "s s naam"
+
+#~ msgid "[Parser warning in '%s']: %w"
+#~ msgstr "[parser waarschuwing in '%s'] : %w"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] has quit IRC: NETSPLIT %s"
+#~ msgstr "s s s s"
+
+#, fuzzy
+#~ msgid "%s [%s@%s] has set mode %co %s"
+#~ msgstr "s s s"
+
+#, fuzzy
+#~ msgid "%s [%s@%s] has set mode %ch %s"
+#~ msgstr "s s s"
+
+#, fuzzy
+#~ msgid "%s [%s@%s] has set mode %cv %s"
+#~ msgstr "s s s"
+
+#, fuzzy
+#~ msgid "%s [%s@%s] has set mode %cu %s"
+#~ msgstr "s s s"
+
+#, fuzzy
+#~ msgid "%s [%s@%s] has set mode %ca %s"
+#~ msgstr "s s s"
+
+#, fuzzy
+#~ msgid "%s [%s@%s] has set mode %cb \r!m%cb\r%s\r"
+#~ msgstr "s s s s"
+
+#, fuzzy
+#~ msgid "%s [%s@%s] has set mode %cI \r!m%cI\r%s\r"
+#~ msgstr "s s s s"
+
+#, fuzzy
+#~ msgid "End of channel invite list for \r!c\r%W\r"
+#~ msgstr "End voor"
+
+#, fuzzy
+#~ msgid "Invite entry for \r!c\r%W\r: \r!m-I\r%S\r (set by %S on %S)"
+#~ msgstr "Uitnodigen voor s s door s aan s"
+
+#, fuzzy
+#~ msgid "End of channel ban exception list for \r!c\r%W\r"
+#~ msgstr "End voor"
+
+#, fuzzy
+#~ msgid "Ban exception entry for \r!c\r%W\r: \r!m-e\r%S\r (set by %S on %S)"
+#~ msgstr "voor s s door s aan s"
+
+#, fuzzy
+#~ msgid "[No targets]"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "The current window is not a query: no targets added"
+#~ msgstr "venster is nee"
+
+#, fuzzy
+#~ msgid "The current query has no target '%s'"
+#~ msgstr "nee s"
+
+#, fuzzy
+#~ msgid "The current window is not a query: no targets removed"
+#~ msgstr "venster is nee"
+
+#, fuzzy
+#~ msgid "close this window?"
+#~ msgstr "Sluiten"
+
+#, fuzzy
+#~ msgid "New &Frame Window"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] is on IRC"
+#~ msgstr "s s s is aan"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] is on IRC (watch)"
+#~ msgstr "s s s is aan"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] is on IRC (watch: list requested by user)"
+#~ msgstr "s s s is aan gebruiker"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: \r!n\r%s\r [%s@\r!h\r%s\r] is on IRC (watch: possible list "
+#~ "desync)"
+#~ msgstr "Notificatie s s s is aan"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] is on IRC (watch: added by user)"
+#~ msgstr "s s s is aan"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] has left IRC (watch: removed from list)"
+#~ msgstr "s s s"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] has left IRC (watch)"
+#~ msgstr "s s s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: \r!n\r%s\r [%s@\r!h\r%s\r] has left IRC (watch: unmatched "
+#~ "notify list entry)"
+#~ msgstr "Notificatie s s s"
+
+#, fuzzy
+#~ msgid "5 minutes"
+#~ msgstr "&Online"
+
+#, fuzzy
+#~ msgid "15 minutes"
+#~ msgstr "&Online"
+
+#, fuzzy
+#~ msgid "30 minutes"
+#~ msgstr "&Online"
+
+#, fuzzy
+#~ msgid "Disable"
+#~ msgstr "zichtbaar"
+
+#, fuzzy
+#~ msgid "%s%c%s%c (%s)"
+#~ msgstr "s s"
+
+#, fuzzy
+#~ msgid "Connection attempt failed (%s): %s"
+#~ msgstr "Verbinding s"
+
+#, fuzzy
+#~ msgid "Socket message truncated to 512 bytes."
+#~ msgstr "naar bytes."
+
+#, fuzzy
+#~ msgid "File Transfers"
+#~ msgstr "Bytes"
+
+#, fuzzy
+#~ msgid "<nobr><font color=\"%s\"><b>File Transfers</b></font></nobr>"
+#~ msgstr "<nobr><font color=\"%s\"><b> Help venster</b></font></nobr>"
+
+#, fuzzy
+#~ msgid ""
+#~ "The specified bind address (%s) is not valid (the interface it refers to "
+#~ "might be down)"
+#~ msgstr "s is de it naar"
+
+#, fuzzy
+#~ msgid "Not connected to server"
+#~ msgstr "Niet naar"
+
+#, fuzzy
+#~ msgid "Be verbose (show some internal actions)"
+#~ msgstr "acties"
+
+#, fuzzy
+#~ msgid "Add new proxy"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "Ops..failed to add the offer..."
+#~ msgstr "naar toevoegen de."
+
+#, fuzzy
+#~ msgid "No offer with visible name '%s' and user mask '%s'"
+#~ msgstr "Nee door zichtbaar naam s en gebruiker masker s"
+
+#, fuzzy
+#~ msgid " File: %s (%u bytes)"
+#~ msgstr "Bestand s bytes"
+
+#, fuzzy
+#~ msgid " Expires in %d hours %d minutes %d seconds"
+#~ msgstr "minuten"
+
+#, fuzzy
+#~ msgid "Never"
+#~ msgstr "Server"
+
+#, fuzzy
+#~ msgid "Offer list window"
+#~ msgstr "Sluiten"
+
+#, fuzzy
+#~ msgid "Remove all"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "User mask"
+#~ msgstr "Bestand"
+
+#, fuzzy
+#~ msgid "Choose the file to offer"
+#~ msgstr "de naar"
+
+#, fuzzy
+#~ msgid "Active file offer list"
+#~ msgstr "Nee actief file"
+
+#, fuzzy
+#~ msgid "Animate popup menus"
+#~ msgstr "Animatie"
+
+#, fuzzy
+#~ msgid "Animate combo-boxes"
+#~ msgstr "Animatie"
+
+#, fuzzy
+#~ msgid "Frame caption"
+#~ msgstr "Richting"
+
+#, fuzzy
+#~ msgid "Activity:"
+#~ msgstr "Actief"
+
+#, fuzzy
+#~ msgid "System:"
+#~ msgstr "systeemfout"
+
+#, fuzzy
+#~ msgid "Taskbar Settings"
+#~ msgstr "Takenbalk"
+
+#, fuzzy
+#~ msgid "Nickname 2"
+#~ msgstr "Bijnaam"
+
+#, fuzzy
+#~ msgid "&Change"
+#~ msgstr "Annuleren"
+
+#, fuzzy
+#~ msgid "<br><br>Set by <b>"
+#~ msgstr "<br><br> door<b>"
+
+#, fuzzy
+#~ msgid " on <b>"
+#~ msgstr "aan<b>"
+
+#, fuzzy
+#~ msgid "<b>Channel topic:</b><br>"
+#~ msgstr "<b>Kanaal mode</b><br>"
+
+#, fuzzy
+#~ msgid "No topic is set<br>Double-click to set<br>"
+#~ msgstr "Nee is<br> naar it<br>"
+
+#, fuzzy
+#~ msgid "Show external messages in active window"
+#~ msgstr "nee"
+
+#, fuzzy
+#~ msgid "Use taskbar activity meter"
+#~ msgstr "Gebruik IRC"
+
+#, fuzzy
+#~ msgid "Load"
+#~ msgstr "Laden"
+
+#, fuzzy
+#~ msgid "Save"
+#~ msgstr "Opslaan"
+
+#, fuzzy
+#~ msgid "Windows remember properties"
+#~ msgstr "Vensters"
+
+#, fuzzy
+#~ msgid "Show the registered users dialog as toplevel window"
+#~ msgstr "Tonen de geregistreerd gebruikers"
+
+#, fuzzy
+#~ msgid "Show the join channels dialog as a toplevel window"
+#~ msgstr "Tonen de"
+
+#, fuzzy
+#~ msgid "Show the servers connect dialog as a toplevel window"
+#~ msgstr "Tonen de geregistreerd gebruikers"
+
+#, fuzzy
+#~ msgid "Show the identity dialog as a toplevel window"
+#~ msgstr "Tonen de"
+
+#, fuzzy
+#~ msgid "Use task bar IRC-context indicator"
+#~ msgstr "Gebruik IRC"
+
+#, fuzzy
+#~ msgid "Use tree-window-list task bar"
+#~ msgstr "Gebruik venster"
+
+#, fuzzy
+#~ msgid "Connections in progress"
+#~ msgstr "bezig met verbinden..."
+
+#, fuzzy
+#~ msgid "%c\r!n\r%s\r%c whowas info from \r!s\r%s\r"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Userhost info: %s"
+#~ msgstr "Gebruiker s"
+
+#, fuzzy
+#~ msgid "End of channel list"
+#~ msgstr "End voor"
+
+#, fuzzy
+#~ msgid "Failed to write the file"
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Select the file name for the exported aliases file"
+#~ msgstr "Selecteren naam voor de"
+
+#, fuzzy
+#~ msgid "You're connected to %s (%s)"
+#~ msgstr "U naar s s"
+
+#, fuzzy
+#~ msgid "You're not connected to a server: list cannot be requested"
+#~ msgstr "U naar"
+
+#, fuzzy
+#~ msgid "You're not connected to a server: links cannot be requested"
+#~ msgstr "U naar"
+
+#, fuzzy
+#~ msgid "Select the file name for the exported popup file"
+#~ msgstr "Selecteren naam voor de"
+
+#, fuzzy
+#~ msgid "Select the file name for the exported popups file"
+#~ msgstr "Selecteren naam voor de"
+
+#, fuzzy
+#~ msgid "Delete property"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "Import"
+#~ msgstr "Poort"
+
+#, fuzzy
+#~ msgid "Choose the name of the db file"
+#~ msgstr "file naam voor de"
+
+#, fuzzy
+#~ msgid "Can't open the file %s for reading"
+#~ msgstr "de file s voor"
+
+#, fuzzy
+#~ msgid "Generate \"defpopup\" Script Snippet"
+#~ msgstr "Genereren"
+
+#, fuzzy
+#~ msgid "KVIrc Scripts (*.kvs);;All Files (*)"
+#~ msgstr "Alles"
+
+#, fuzzy
+#~ msgid "Create query for server notices"
+#~ msgstr "s voor"
+
+#, fuzzy
+#~ msgid "B&rowse..."
+#~ msgstr "Bladeren..."
+
+#, fuzzy
+#~ msgid "Commit Your Settings"
+#~ msgstr "Nee"
+
+#~ msgid "Cut"
+#~ msgstr "Knippen"
+
+#~ msgid "Copy"
+#~ msgstr "Kopiëren..."
+
+#, fuzzy
+#~ msgid "New label"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "New menu"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "New external menu"
+#~ msgstr "nee"
+
+#, fuzzy
+#~ msgid "New prologue at this level"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "New epilogue at this level"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "Add separator"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "Delete item"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "Choose file for saving the definition"
+#~ msgstr "file naam voor de"
+
+#, fuzzy
+#~ msgid "Channel admin foreground color"
+#~ msgstr "Selectie"
+
+#, fuzzy
+#~ msgid "Op foreground color"
+#~ msgstr "Voorgrondkleur"
+
+#, fuzzy
+#~ msgid "Half-op foreground color"
+#~ msgstr "Selectie"
+
+#, fuzzy
+#~ msgid "Voice foreground color"
+#~ msgstr "Voorgrondkleur"
+
+#, fuzzy
+#~ msgid "User-op foreground color"
+#~ msgstr "Voorgrondkleur"
+
+#, fuzzy
+#~ msgid "Normal foreground color"
+#~ msgstr "Voorgrondkleur"
+
+#, fuzzy
+#~ msgid ""
+#~ "I'm behind a firewall (or similar): can't accept incoming DCC connections"
+#~ msgstr "I of Inkomend"
+
+#, fuzzy
+#~ msgid "Create minimized when auto-accepted (when incoming)"
+#~ msgstr "Aanmaken Inkomend"
+
+#, fuzzy
+#~ msgid "Auto close on success"
+#~ msgstr "Auto aan"
+
+#, fuzzy
+#~ msgid "Idle step (msecs)"
+#~ msgstr "Niet actief"
+
+#, fuzzy
+#~ msgid "Send zero-byte-acknowledge (when receiving files)"
+#~ msgstr "Verzenden"
+
+#, fuzzy
+#~ msgid "Use Media-Type guessed save path"
+#~ msgstr "Gebruik Type"
+
+#, fuzzy
+#~ msgid "Echo the channel topic on channel join"
+#~ msgstr "de aan"
+
+#, fuzzy
+#~ msgid "Disable who request on join"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid "Disable ban list request on join"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid "Disable ban exception list request on join"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid "Disable invite list request on join"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid "Spam words"
+#~ msgstr "Zoeken"
+
+#, fuzzy
+#~ msgid "Allow max (0-10000)"
+#~ msgstr "Toestaan"
+
+#, fuzzy
+#~ msgid "CTCP's in (1-3600) secs"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Ignore PING requests"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Ignore VERSION requests"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Ignore CLIENTINFO requests"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Ignore USERINFO requests"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Ignore SOURCE requests"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Ignore TIME requests"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Ignore PAGE requests"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Ignore AVATAR requests"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Ignore DCC/TDCC requests"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Show channel flags"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "New"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "Send/Recv"
+#~ msgstr "Verzenden"
+
+#, fuzzy
+#~ msgid "Ctcp flood protection"
+#~ msgstr "Gebruik"
+
+#, fuzzy
+#~ msgid "Disable this handler"
+#~ msgstr "Deactiveren"
+
+#, fuzzy
+#~ msgid "Join Channel - KVIrc"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "Active foreground"
+#~ msgstr "url"
+
+#, fuzzy
+#~ msgid "Minimized text"
+#~ msgstr "M&inimaliseren"
+
+#, fuzzy
+#~ msgid "1 message every (10000-10000000 usec.)"
+#~ msgstr "elke"
+
+#, fuzzy
+#~ msgid "This button adds a new network."
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "This button adds a new server to the current network."
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "Removes the current network or server."
+#~ msgstr "nee s"
+
+#, fuzzy
+#~ msgid "Double-click to open this link<br>Right-click to view other options"
+#~ msgstr "naar koppeling<br> Rechts naar overig"
+
+#, fuzzy
+#~ msgid "[Unknown]"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Server connect:"
+#~ msgstr "Geen verbinding"
+
+#, fuzzy
+#~ msgid "&Recent Channels"
+#~ msgstr "Accepteren"
+
+#, fuzzy
+#~ msgid "&Add Channel"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "Add Channel - KVIrc"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "IRC Servers"
+#~ msgstr "Servers"
+
+#, fuzzy
+#~ msgid "Ident"
+#~ msgstr "Identiteit"
+
+#, fuzzy
+#~ msgid ""
+#~ "This server seems to support the WATCH notify list method: will try to "
+#~ "use it."
+#~ msgstr "naar de naar it."
+
+#, fuzzy
+#~ msgid "Text Editor"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid "Save &As.."
+#~ msgstr "Opsl&aan."
+
+#, fuzzy
+#~ msgid "&Close"
+#~ msgstr "Sl&uiten"
+
+#, fuzzy
+#~ msgid "&Toggle find widget"
+#~ msgstr "Omschakelen"
+
+#, fuzzy
+#~ msgid "&File"
+#~ msgstr "&Bestand"
+
+#, fuzzy
+#~ msgid "Unnamed"
+#~ msgstr "Naamloos"
+
+#, fuzzy
+#~ msgid "Plain text"
+#~ msgstr "Algemene"
+
+#, fuzzy
+#~ msgid "Save to file"
+#~ msgstr "Opslaan naar bestand"
+
+#, fuzzy
+#~ msgid ""
+#~ "Save failed!\n"
+#~ "Cant open the file %s for writing"
+#~ msgstr ""
+#~ "Opslaan\n"
+#~ " de file s voor"
+
+#, fuzzy
+#~ msgid "Choose a script file to load"
+#~ msgstr "file naar"
+
+#, fuzzy
+#~ msgid "Failed to open the file %s"
+#~ msgstr "Faalde naar de file"
+
+#~ msgid "Toggle double view"
+#~ msgstr "Omschakelen double zicht"
+
+#~ msgid "Toggle user list"
+#~ msgstr "Omschakelen gebruikers lijst"
+
+#~ msgid "Toggle ban editor"
+#~ msgstr "Omschakelen ban editor"
+
+#, fuzzy
+#~ msgid "This looks like a masked hostname: can't look it up"
+#~ msgstr "it"
+
+#, fuzzy
+#~ msgid "This looks like an unknown hostname: can't look it up"
+#~ msgstr "onbekend it"
+
+#, fuzzy
+#~ msgid "This looks like an unknown server<br>"
+#~ msgstr "onbekend<br>"
+
+#, fuzzy
+#~ msgid "Show &KVIrc"
+#~ msgstr "Naa&r voorgrond de"
+
+#, fuzzy
+#~ msgid "Hide &KVIrc"
+#~ msgstr "Afsluiten"
+
+#, fuzzy
+#~ msgid "Big"
+#~ msgstr "Opstarten"
+
+#, fuzzy
+#~ msgid "s (Server notices)"
+#~ msgstr "s Server"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r (%s@\r!h\r%s\r) is on irc (user-added watch)"
+#~ msgstr "s s s is aan gebruiker"
+
+#, fuzzy
+#~ msgid "Username"
+#~ msgstr "Gebruikersnaam"
+
+#, fuzzy
+#~ msgid "Real name"
+#~ msgstr "Bekend"
+
+#, fuzzy
+#~ msgid "invalid port number %s"
+#~ msgstr "ongeldig poort nummer"
+
+#, fuzzy
+#~ msgid "invalid ip address in old format %s"
+#~ msgstr "naar de"
+
+#, fuzzy
+#~ msgid "invalid ip address %s"
+#~ msgstr "Ongeldig IP adres"
+
+#, fuzzy
+#~ msgid ""
+#~ "This executable has been compiled without SSL support: the SSL extension "
+#~ "to DCC CHAT is not available"
+#~ msgstr "De KVIrc executabele heeft geen IPV6 support"
+
+#, fuzzy
+#~ msgid ""
+#~ "This executable has been compiled without SSL support: the SSL extension "
+#~ "to DCC SEND is not available"
+#~ msgstr "De KVIrc executabele heeft geen IPV6 support"
+
+#, fuzzy
+#~ msgid ""
+#~ "can't proceed with dcc recv: transfer not initiated for file %s on port %s"
+#~ msgstr "door voor file s aan poort"
+
+#, fuzzy
+#~ msgid "invalid resume position argument '%s'"
+#~ msgstr "Ongeldige hervat positie"
+
+#, fuzzy
+#~ msgid ""
+#~ "can't proceed with dcc send: transfer not initiated for file %s on port %"
+#~ "s, or invalid resume size"
+#~ msgstr "door voor file s aan poort s of"
+
+#, fuzzy
+#~ msgid ""
+#~ "This executable has been compiled without SSL support: the SSL extension "
+#~ "to DCC RECV is not available"
+#~ msgstr "De KVIrc executabele heeft geen IPV6 support"
+
+#, fuzzy
+#~ msgid "invalid recv request: position %u is 'out of the file'"
+#~ msgstr "is de file"
+
+#, fuzzy
+#~ msgid ""
+#~ "This executable has been compiled without SSL support: the SSL extension "
+#~ "to DCC RSEND is not available"
+#~ msgstr "De KVIrc executabele heeft geen IPV6 support"
+
+#, fuzzy
+#~ msgid ""
+#~ "This executable has been compiled without SSL support: the SSL extension "
+#~ "to DCC GET is not available"
+#~ msgstr "De KVIrc executabele heeft geen IPV6 support"
+
+#, fuzzy
+#~ msgid "no file offer named '%s' (with size %s) available for %s [%s@%s]"
+#~ msgstr "nee file s door grootte s beschikbaar voor s s s"
+
+#~ msgid ""
+#~ "The server seems to support the WATCH notify list method: going to use it"
+#~ msgstr ""
+#~ "De server ondersteund blijkbaar de WATCH notificatie lijst mothode: deze "
+#~ "zal gebruikt worden"
+
+#, fuzzy
+#~ msgid "Connection started at"
+#~ msgstr "Verbinding geanuleerd"
+
+#, fuzzy
+#~ msgid "Silence from server"
+#~ msgstr "Kopiëren..."
+
+#, fuzzy
+#~ msgid "What's This?"
+#~ msgstr "is?"
+
+#, fuzzy
+#~ msgid "Default user mode:"
+#~ msgstr "Beschikbaar gebruiker:"
+
+#, fuzzy
+#~ msgid "Server Notices"
+#~ msgstr "s Server"
+
+#, fuzzy
+#~ msgid "Change now"
+#~ msgstr "Kanaal mode"
+
+#, fuzzy
+#~ msgid "Use IpV6 protocol"
+#~ msgstr "Gebruik"
+
+#, fuzzy
+#~ msgid "Connect timeout (5-6000 sec.)"
+#~ msgstr "Verbinden"
+
+#, fuzzy
+#~ msgid "Recent channels"
+#~ msgstr "Accepteren"
+
+#~ msgid "Recursion too deep"
+#~ msgstr "Recursie te diep"
+
+#, fuzzy
+#~ msgid "Icon table"
+#~ msgstr "Pictogram"
+
+#, fuzzy
+#~ msgid "Someone is joining an inexisting channel...desync ?"
+#~ msgstr "is?"
+
+#, fuzzy
+#~ msgid "Kick message to an inexisting channel...desync ?"
+#~ msgstr "naar?"
+
+#, fuzzy
+#~ msgid "Received a TOPIC message for an unknown channel...desync ?"
+#~ msgstr "voor onbekend?"
+
+#, fuzzy
+#~ msgid "Mode change for an unknown channel ?"
+#~ msgstr "Modus voor onbekend?"
+
+#~ msgid "Sent PART request , waiting for reply..."
+#~ msgstr "PART verzoek verzonden ; wachten op antwoord..."
+
+#, fuzzy
+#~ msgid "KVIrc local directory"
+#~ msgstr "lokaal"
+
+#, fuzzy
+#~ msgid "Don't show hidden files"
+#~ msgstr "verborgen"
+
+#, fuzzy
+#~ msgid "Irc context"
+#~ msgstr "&Nieuw"
+
+#, fuzzy
+#~ msgid "No irc context"
+#~ msgstr "&Nieuw"
+
+#, fuzzy
+#~ msgid "&Connect to server"
+#~ msgstr "Niet naar"
+
+#, fuzzy
+#~ msgid "&Minimize all"
+#~ msgstr "M&inimaliseren"
+
+#, fuzzy
+#~ msgid "&Restore all"
+#~ msgstr "He&rstellen"
+
+#, fuzzy
+#~ msgid "&Tile"
+#~ msgstr "&Bestand"
+
+#, fuzzy
+#~ msgid "Choose a file..."
+#~ msgstr "file."
+
+#, fuzzy
+#~ msgid "Quit KVirc ?"
+#~ msgstr "Afsluiten"
+
+#, fuzzy
+#~ msgid "File transfer window"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "Help window"
+#~ msgstr "Help"
+
+#, fuzzy
+#~ msgid "KVIrc : general options"
+#~ msgstr "algemeen"
+
+#, fuzzy
+#~ msgid "After login join channels"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "After connect execute"
+#~ msgstr "Verbinden naar"
+
+#, fuzzy
+#~ msgid "Add new network"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "Add new server"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "Ops.. can't create the theme directory"
+#~ msgstr "de terminal"
+
+#, fuzzy
+#~ msgid "Browse ..."
+#~ msgstr "Bladeren..."
+
+#, fuzzy
+#~ msgid "Choose the data folder"
+#~ msgstr "de naar"
+
+#, fuzzy
+#~ msgid "Abort setup"
+#~ msgstr "Kvirc setup"
+
+#, fuzzy
+#~ msgid "Restore all windows"
+#~ msgstr "M&inimaliseren"
+
+#, fuzzy
+#~ msgid "Close &Window"
+#~ msgstr "Sluiten"
+
+#, fuzzy
+#~ msgid "Shared files window"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "&Old Tools"
+#~ msgstr "H&ulpmiddelen"
+
+#, fuzzy
+#~ msgid "&Offer list"
+#~ msgstr "Gebruikers lijst"
+
+#, fuzzy
+#~ msgid "<nobr><font color=\"%s\"><b>Log Viewer</b></font></nobr>"
+#~ msgstr "<nobr><font color=\"%s\"><b> Help venster</b></font></nobr>"
+
+#, fuzzy
+#~ msgid "Channel:"
+#~ msgstr "Annuleren"
+
+#~ msgid "Kvirc setup"
+#~ msgstr "Kvirc setup"
+
+#, fuzzy
+#~ msgid ""
+#~ "The directory '%s' already exists.\n"
+#~ "(maybe from a previous Kvirc installation)\n"
+#~ "If you experience any problems try deleting the old directory:\n"
+#~ "the setup program will be started automatically again."
+#~ msgstr ""
+#~ "De '%s' map bestaat reeds,\n"
+#~ "misschien van een vorige Kvirc installatie.\n"
+#~ "Indien u problemen ondervind, probeer dan deze oude map te verwijderen."
+
+#, fuzzy
+#~ msgid ">>"
+#~ msgstr ">>"
+
+#, fuzzy
+#~ msgid ""
+#~ ": No valid local copy of avatar available; unacceptable/invalid avatar "
+#~ "size (%u): ignoring"
+#~ msgstr "Nee lokaal beschikbaar"
+
+#, fuzzy
+#~ msgid "About KVirc..."
+#~ msgstr "Info over."
+
+#, fuzzy
+#~ msgid "About"
+#~ msgstr "Afbreken"
+
+#, fuzzy
+#~ msgid "License"
+#~ msgstr "&Lijn"
+
+#, fuzzy
+#~ msgid ""
+#~ "Can't send the DCC %s request to %s: the connection has been terminated"
+#~ msgstr "de naar s de verbinding"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center><b>%s [%s@%s]</b> requests a<br><b>Direct Client Connection</b> "
+#~ "in <b>%s</b> mode.<br>"
+#~ msgstr ""
+#~ "<center><b> s s s</b><br><b> Cliënt Verbinding</b><b></b><br> "
+#~ "verbinding<b> s</b> aan poort<b> s</b><br><br><hr><br><br></center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "The connection target will be host <b>%s</b> on port <b>%s</"
+#~ "b><br><br><hr><br>Do you accept ?<br></center>"
+#~ msgstr ""
+#~ "<center><b> s s s</b> naar de file<br><b> s</b><b> s</b> bytes<br> "
+#~ "verbinding<b> s</b> aan poort<b> s</b><br><br><hr><br><br></center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center><b>%s [%s@%s]</b> requests a<br><b>Direct Client Connection</b> "
+#~ "in <b>VOICE</b> mode.<br>The connection target will be host <b>%s</b> on "
+#~ "port <b>%s</b><br><br><hr><br>Do you accept ?<br></center>"
+#~ msgstr ""
+#~ "<center><b> s s s</b><br><b> Cliënt Verbinding</b><b></b><br> "
+#~ "verbinding<b> s</b> aan poort<b> s</b><br><br><hr><br><br></center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center><b>%s [%s@%s]</b> requests a<br><b>Direct Client Connection</b> "
+#~ "in <b>CANVAS</b> mode.<br>The connection target will be host <b>%s</b> on "
+#~ "port <b>%s</b><br><br><hr><br>Do you accept ?<br></center>"
+#~ msgstr ""
+#~ "<center><b> s s s</b><br><b> Cliënt Verbinding</b><b></b><br> "
+#~ "verbinding<b> s</b> aan poort<b> s</b><br><br><hr><br><br></center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center><b>%s [%s@%s]</b> wants to send you the file<br>'<b>%s</b>' <b>%"
+#~ "s</b> bytes long.<br>The connection target will be host <b>%s</b> on port "
+#~ "<b>%s</b><br><br><hr><br>Do you accept ?<br></center>"
+#~ msgstr ""
+#~ "<center><b> s s s</b> naar de file<br><b> s</b><b> s</b> bytes<br> "
+#~ "verbinding<b> s</b> aan poort<b> s</b><br><br><hr><br><br></center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center><b>%s [%s@%s]</b> wants to send you the file<br>'<b>%s</b>' <b>%"
+#~ "s</b> bytes long.<br>You will be the passive side of the connection."
+#~ "<br><br><hr><br>Do you accept ?<br></center>"
+#~ msgstr ""
+#~ "<center><b> s s s</b> naar de file<br><b> s</b><b> s</b> bytes<br> U de "
+#~ "de verbinding<br><br><hr><br><br></center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<br><hr><center><b>Notes:</b><br>The file looks to be an avatar that you "
+#~ "have requested.<br>You should not change its file name and<br>save it in "
+#~ "a place where KVIrc can find it:<br>this can be the KVIrc 'avatars' "
+#~ "directory, your home directory,<br>the KVIrc 'incoming' directory, the "
+#~ "KVIrc 'pics' directory,<br>or the save directory for the incoming file "
+#~ "type...<br>Usually accepting the default save path suggested in "
+#~ "the<br>dialog will do the job.<br>You can also instruct KVirc to auto-"
+#~ "accept the incoming avatars<br>by setting the option "
+#~ "'boolAutoAcceptIncomingAvatars' to true.<br></center>"
+#~ msgstr ""
+#~ "<br><hr><center><b> Notities</b><br> file naar<br> U file naam en<br> it "
+#~ "waar it<br> de map map<br> de Inkomend map de map<br> of de map voor de "
+#~ "Inkomend file<br> de standaard de<br> de<br> U naar auto de Inkomend<br> "
+#~ "door de naar juist<br></center>"
+
+#, fuzzy
+#~ msgid "Auto-accepting DCC %s request from %s!%s@%s for file %s"
+#~ msgstr "Auto s s s s voor file"
+
+#, fuzzy
+#~ msgid "Auto-saving DCC %s file %s as \r![!dbl]play $0\r%s\r"
+#~ msgstr "Auto s file s file"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center><b>The file %s already exists</b><br>and is <b>%d</b> bytes long."
+#~ "<br>Do you want to <b>overwrite</b> it, <b>auto-rename</b> the incoming "
+#~ "one, orthreat it as an incomplete download and <b>resume</b> it ?<br></"
+#~ "center>"
+#~ msgstr ""
+#~ "<center><b> file s</b><br> en is<b></b> bytes<br> naar<b></b> it<b> auto</"
+#~ "b> de Inkomend it en<b></b> it<br></center>"
+
+#, fuzzy
+#~ msgid "File %s exists: auto-renaming to %s.rnm"
+#~ msgstr "Bestand s auto naar s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Sent DCC CANVAS request to %s...waiting for the remote client to connect"
+#~ msgstr "Verzonden naar s voor de op afstand naar"
+
+#, fuzzy
+#~ msgid "Attempting an active DCC CANVAS connection"
+#~ msgstr "actief"
+
+#, fuzzy
+#~ msgid "Contacting host %s on port %s"
+#~ msgstr "s aan poort"
+
+#, fuzzy
+#~ msgid "DCC Failed: %s"
+#~ msgstr "Faalde"
+
+#, fuzzy
+#~ msgid "Local end is %s:%s"
+#~ msgstr "Lokaal is s"
+
+#, fuzzy
+#~ msgid "&Rich text (html)"
+#~ msgstr "tekst"
+
+#, fuzzy
+#~ msgid "Attempting a passive DCC %s connection"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Attempting an active DCC %s connection"
+#~ msgstr "actief s"
+
+#, fuzzy
+#~ msgid "Sent DCC %s request to %s...waiting for the remote client to connect"
+#~ msgstr "Verzonden s naar s voor de op afstand naar"
+
+#, fuzzy
+#~ msgid "DCC %s request not sent: awaiting manual connections"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid ""
+#~ "The crypt engine was not able to encrypt the current message (%s): %s: no "
+#~ "data sent to the remote end"
+#~ msgstr "naar de s s nee naar de op afstand"
+
+#, fuzzy
+#~ msgid "ERROR: %s"
+#~ msgstr "FOUT"
+
+#, fuzzy
+#~ msgid "DCC %s Failed: %s"
+#~ msgstr "Faalde"
+
+#, fuzzy
+#~ msgid "Reject"
+#~ msgstr "Verwerpen"
+
+#, fuzzy
+#~ msgid "Accept"
+#~ msgstr "Accepteren"
+
+#, fuzzy
+#~ msgid "Choose the save file name"
+#~ msgstr "de file"
+
+#, fuzzy
+#~ msgid "Overwrite"
+#~ msgstr "Overschrijven"
+
+#, fuzzy
+#~ msgid "Resume"
+#~ msgstr "Hervatten"
+
+#, fuzzy
+#~ msgid ""
+#~ "This window has no associated irc context (you need one unless you pass -"
+#~ "c or -n)"
+#~ msgstr "venster nee of"
+
+#, fuzzy
+#~ msgid ""
+#~ "You are not connected to a server (you need a connection unless you pass -"
+#~ "c or -n)"
+#~ msgstr "U naar verbinding of"
+
+#, fuzzy
+#~ msgid "Invalid file size specified: no message sent"
+#~ msgstr "file grootte nee"
+
+#, fuzzy
+#~ msgid "this executable has no SSL support: -s switch ignored"
+#~ msgstr "De KVIrc executabele heeft geen IPV6 support"
+
+#, fuzzy
+#~ msgid "Unable to process the above request: %s: %s"
+#~ msgstr "naar de"
+
+#, fuzzy
+#~ msgid "ignoring"
+#~ msgstr "Inkomend"
+
+#, fuzzy
+#~ msgid ""
+#~ "The above request is broken: the second parameter is '%s' and shoud be "
+#~ "'chat'; trying to continue"
+#~ msgstr "is de is s en naar"
+
+#, fuzzy
+#~ msgid ""
+#~ "The above request is broken: the fourth parameter should be the file size "
+#~ "but does not look as an unsigned number; trying to continue"
+#~ msgstr "is de de file grootte naar"
+
+#, fuzzy
+#~ msgid ""
+#~ "The above request is broken: the filename contains path components; "
+#~ "stripping the leading path and trying to continue"
+#~ msgstr "is de bestandsnaam bevat de en naar"
+
+#, fuzzy
+#~ msgid ""
+#~ "The above request has resume file size missing: we assume a resume file "
+#~ "size of 0"
+#~ msgstr "file grootte file grootte"
+
+#, fuzzy
+#~ msgid "0"
+#~ msgstr "0"
+
+#, fuzzy
+#~ msgid "%s [%s@%s] is ready to receive the file \"%s\""
+#~ msgstr "s s s is naar de file s"
+
+#, fuzzy
+#~ msgid "The remote client is listening on interface %s and port %s"
+#~ msgstr "op afstand is aan s en poort"
+
+#, fuzzy
+#~ msgid ""
+#~ "Use %c\r![!dbl]dcc.send %s -i=%s -p=%s %s\r/dcc.send %s -i=%s -p=%s %s\r%"
+#~ "c to send the file (or simply double click on the link)"
+#~ msgstr "Gebruik s s s s s s s s naar de file of double aan de koppeling"
+
+#, fuzzy
+#~ msgid ""
+#~ "Accepting file request from %s [%s@%s] for '%s' (real file: %s): offering "
+#~ "DCC %s since we can't accept incoming connections (user option)"
+#~ msgstr "file s s s voor s file s s sinds Inkomend gebruiker"
+
+#, fuzzy
+#~ msgid ""
+#~ "Accepting file request from %s [%s@%s] for '%s' (real file: %s): offering "
+#~ "DCC %s"
+#~ msgstr "file s s s voor s file s"
+
+#, fuzzy
+#~ msgid "The above request can't be accepted: unsupported codec '%s'"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid ""
+#~ "The above request looks to be broken: invalid sample-rate '%s': "
+#~ "defaulting to 8000"
+#~ msgstr "naar s naar"
+
+#, fuzzy
+#~ msgid ""
+#~ "Data transfer terminated: waiting 30 secs for the peer to close the "
+#~ "connection"
+#~ msgstr ""
+#~ "Verzonden van de QUIT.... wachten op de server om de verbinding te sluiten"
+
+#, fuzzy
+#~ msgid ""
+#~ "WARNING: Received data in a DCC TSEND: there should be no acknowledges"
+#~ msgstr "nee"
+
+#, fuzzy
+#~ msgid "File: %s (%s bytes)"
+#~ msgstr "Bestand s s bytes"
+
+#, fuzzy
+#~ msgid "Local file name: %s"
+#~ msgstr "Lokaal file naam"
+
+#, fuzzy
+#~ msgid "Data progress"
+#~ msgstr "Als gegevens-cd"
+
+#, fuzzy
+#~ msgid "Bytes transferred"
+#~ msgstr "Bytes"
+
+#, fuzzy
+#~ msgid "Average transfer speed"
+#~ msgstr "Gemiddeld"
+
+#, fuzzy
+#~ msgid "Sent DCC RESUME request...waiting for ACCEPT"
+#~ msgstr "Verzonden voor"
+
+#, fuzzy
+#~ msgid "Open folder"
+#~ msgstr "Openen"
+
+#, fuzzy
+#~ msgid "Open file (/play)"
+#~ msgstr "Openen file spelen"
+
+#, fuzzy
+#~ msgid "File: %s"
+#~ msgstr "Bestand"
+
+#, fuzzy
+#~ msgid "File mask: %s"
+#~ msgstr "Bestand masker"
+
+#, fuzzy
+#~ msgid "No media type match for file \"%s\""
+#~ msgstr "Nee overeenkomstig voor file s"
+
+#, fuzzy
+#~ msgid ""
+#~ "DCC %s transfer with %s@%s:%s succesfull: file \r![!dbl]play $0\r%s\r"
+#~ msgstr "s door s s s file"
+
+#, fuzzy
+#~ msgid "Avg: %d (bytes/sec)"
+#~ msgstr "Gemiddeld bytes"
+
+#, fuzzy
+#~ msgid "Spd: %d (bytes/sec)"
+#~ msgstr "bytes"
+
+#, fuzzy
+#~ msgid "Sent %d bytes"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "RESUME accepted: the transfer will begin at position %s"
+#~ msgstr "de"
+
+#, fuzzy
+#~ msgid "Invalid RESUME request: position %u is 'out of the file'"
+#~ msgstr "is de file"
+
+#, fuzzy
+#~ msgid ""
+#~ "WARNING: failed to check the soundcard duplex capabilities: if this is a "
+#~ "half-duplex soundcard , use the DCC VOICE option to force half-duplex "
+#~ "algorithm"
+#~ msgstr "naar de geluidskaart is geluidskaart de naar"
+
+#, fuzzy
+#~ msgid ""
+#~ "Half duplex soundcard detected, you will not be able to talk and listen "
+#~ "at the same time"
+#~ msgstr "geluidskaart naar talk en de"
+
+#, fuzzy
+#~ msgid ""
+#~ "WARNING: failed to set the requested sample rate (%d): the device used "
+#~ "closest match (%d)"
+#~ msgstr "naar de de apparaat gebruikt overeenkomstig"
+
+#, fuzzy
+#~ msgid "Ops...failed to test the soundcard capabilities...expect problems..."
+#~ msgstr "naar de geluidskaart."
+
+#, fuzzy
+#~ msgid "Input buffer"
+#~ msgstr "Input"
+
+#, fuzzy
+#~ msgid "Attempting an active DCC VOICE connection"
+#~ msgstr "actief"
+
+#, fuzzy
+#~ msgid ""
+#~ "Sent DCC VOICE (%s) request to %s...waiting for the remote client to "
+#~ "connect"
+#~ msgstr "Verzonden s naar s voor de op afstand naar"
+
+#, fuzzy
+#~ msgid "Actual codec used is '%s'"
+#~ msgstr "gebruikt is s"
+
+#, fuzzy
+#~ msgid "Link suicide"
+#~ msgstr "Koppeling"
+
+#, fuzzy
+#~ msgid "Connect in new irc context"
+#~ msgstr "&Nieuw"
+
+#, fuzzy
+#~ msgid "Initial Usermode:"
+#~ msgstr "Beschikbaar gebruiker:"
+
+#~ msgid "Invalid numeric operand (wrong base or unexpected characters inside)"
+#~ msgstr ""
+#~ "Ongeldige numerieke operator (verkeerde basis of onverwachte karakters "
+#~ "binnenin)"
+
+#~ msgid ""
+#~ "Welcome to the Kvirc setup program!\n"
+#~ "You will be asked to choose an existing directory now.\n"
+#~ "A '%s' subdirectory will be created inside , and Kvirc will\n"
+#~ "use it to store its configuration files.\n"
+#~ "Make sure that you have the write permission to that directory.\n"
+#~ msgstr ""
+#~ "Welkom bij het Kvirc setup programma!\n"
+#~ "Er zal u gevraagd worden om een map te kiezen nu.\n"
+#~ "Een '%s' submap zal worden aangemaakt binnenin, en Kvir zal\n"
+#~ "deze gebruiken om zijn configuratiebestanden in op te slaan.\n"
+#~ "Wees zeker dat u ook schrijf toegang tot deze map heeft.\n"
+
+#~ msgid ""
+#~ "Could not make the directory %s.\n"
+#~ "Trying alternate default $HOME/%s"
+#~ msgstr ""
+#~ "Kon de map %s niet aanmaken\n"
+#~ "Proberen de alternatieve standaard $HOME/%s"
+
+#~ msgid ""
+#~ "The '%s' subdirectory already exists , maybe from a previous Kvirc "
+#~ "installation.\n"
+#~ "It can be used...but if you experience any problems try deleting the old "
+#~ "directory\n"
+#~ ".and repeating the setup."
+#~ msgstr ""
+#~ "De '%s' map bestaat al , misschien van een vorige Kvirc installatie.\n"
+#~ "Het kan gebruikt worden... maar als u problemen ondervind, probeer dan "
+#~ "oude map te verwijderen\n"
+#~ "en de.setup te herhalen."
+
+#~ msgid ""
+#~ "Could not make directory $HOME/%s.\n"
+#~ "Bad luck...you have some problems with you enviroinment,\n"
+#~ "the $HOME/%s path is not writable or it is not a directory.\n"
+#~ "Setup aborted."
+#~ msgstr ""
+#~ "Kan de map $HOME/%s niet aanmaken\n"
+#~ "Pech...u heeft problemen met je omgeving\n"
+#~ "$HOME/%s is geen map, of u heeft geen toegang om hiernaar te schrijven\n"
+#~ "setup afgebroken."
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>%s</b></font> <font color=\"%s\">[%s on %s]</"
+#~ "font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b> %s</b></font> <font color=\"%s\">[%s aan %s]"
+#~ "</font></nobr>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>%s</b></font> <font color=\"%s\">[%s]</font></"
+#~ "nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b> s</b></font><font color=\"%s\">%s</font></"
+#~ "nobr>"
+
+#, fuzzy
+#~ msgid "<b>No connection</b><br>(Irc context %u)"
+#~ msgstr "<b> Nee verbinding</b><br>"
+
+#, fuzzy
+#~ msgid "<b>%s</b><br>%s<br>(Irc context %u)"
+#~ msgstr "<b> s</b><br> s<br>"
+
+#, fuzzy
+#~ msgid "<center>No irc context</center>"
+#~ msgstr "<center> Nee</center>"
+
+#, fuzzy
+#~ msgid "<b>mode %s %c%c %s</b>"
+#~ msgstr "<b> s s</b>"
+
+#, fuzzy
+#~ msgid "<b>mode %s %c%c</b>"
+#~ msgstr "<b> s</b>"
+
+#, fuzzy
+#~ msgid "<b><center>%s!%s@%s</center></b>"
+#~ msgstr "<b><center> s s s</center></b>"
+
+#, fuzzy
+#~ msgid "<br><center>%s</center>"
+#~ msgstr "<br><center> s</center>"
+
+#, fuzzy
+#~ msgid "Tile : Not enouh space"
+#~ msgstr "Steen Niet"
+
+#, fuzzy
+#~ msgid "Tile : Not enough space"
+#~ msgstr "Steen Niet"
+
+#, fuzzy
+#~ msgid "&Directory browser (MDI)"
+#~ msgstr "Map M&DI"
+
+#, fuzzy
+#~ msgid "&Build info"
+#~ msgstr "&Build"
+
+#, fuzzy
+#~ msgid "This query has no active targets"
+#~ msgstr "nee actief"
+
+#, fuzzy
+#~ msgid "Private message to an inexisting channel...desync ?"
+#~ msgstr "Private naar?"
+
+#, fuzzy
+#~ msgid "%s!%s@%s: %s"
+#~ msgstr "s s s"
+
+#, fuzzy
+#~ msgid "color free"
+#~ msgstr "kleur"
+
+#, fuzzy
+#~ msgid "anonymous"
+#~ msgstr "anoniem"
+
+#, fuzzy
+#~ msgid "Nickame/Channel '%s' is temporairly unavailable"
+#~ msgstr "s is"
+
+#, fuzzy
+#~ msgid "[unknown]"
+#~ msgstr "[onbekend]"
+
+#, fuzzy
+#~ msgid ""
+#~ "Decimal numeric operand was expected (forgot double-quotes somewhere ?)"
+#~ msgstr "Decimaal double"
+
+#, fuzzy
+#~ msgid "About KVirc"
+#~ msgstr "Info over"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Script language tag: "
+#~ msgstr ""
+#~ "\n"
+#~ " taal "
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Build number: "
+#~ msgstr ""
+#~ "\n"
+#~ " Build "
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Build date: "
+#~ msgstr ""
+#~ "\n"
+#~ " Build datum "
+
+#, fuzzy
+#~ msgid ""
+#~ "Sent DCC CHAT request to %s...waiting for the remote client to connect"
+#~ msgstr "Verzonden naar s voor de op afstand naar"
+
+#, fuzzy
+#~ msgid "Attempting an active DCC CHAT connection"
+#~ msgstr "actief"
+
+#, fuzzy
+#~ msgid "Unable to process the above request: invalid port number %s"
+#~ msgstr "naar de poort"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unable to process the above request: invalid resume position argument '%s'"
+#~ msgstr "naar de s"
+
+#, fuzzy
+#~ msgid "Unable to process the above request: unknown DCC type %s"
+#~ msgstr "naar de onbekend"
+
+#, fuzzy
+#~ msgid "Can't open directory %s"
+#~ msgstr "map"
+
+#, fuzzy
+#~ msgid "&Up"
+#~ msgstr "O&mhoog"
+
+#, fuzzy
+#~ msgid "Directory browser error"
+#~ msgstr "Map"
+
+#, fuzzy
+#~ msgid "DirBrowser [%s]"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>DirBrowser</b></font> <font color=\"%s\">[%s]"
+#~ "</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b></b></font><font color=\"%s\"> s</font></nobr>"
+
+#, fuzzy
+#~ msgid "Previous document"
+#~ msgstr "Vorige"
+
+#, fuzzy
+#~ msgid "Next document"
+#~ msgstr "Volgende"
+
+#, fuzzy
+#~ msgid "Features"
+#~ msgstr "Mogelijkheden"
+
+#, fuzzy
+#~ msgid "Text output widget"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid "Look"
+#~ msgstr "Uiterlijk"
+
+#, fuzzy
+#~ msgid "Text look"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid "Show the script center as toplevel window"
+#~ msgstr "Tonen de"
+
+#, fuzzy
+#~ msgid "Use single IRC tool bar"
+#~ msgstr "Gebruik IRC"
+
+#, fuzzy
+#~ msgid "Host"
+#~ msgstr "Host"
+
+#, fuzzy
+#~ msgid "Add mask"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "Discard"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Masks"
+#~ msgstr "Maskers"
+
+#, fuzzy
+#~ msgid "New User 0"
+#~ msgstr "Nieuw Gebruiker"
+
+#, fuzzy
+#~ msgid "New User %d"
+#~ msgstr "Nieuw Gebruiker"
+
+#, fuzzy
+#~ msgid "Apply changes"
+#~ msgstr "Toepassen"
+
+#, fuzzy
+#~ msgid "Killing %u undelivered packet(s)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Connection aborted (while looking up server hostname)"
+#~ msgstr "Verbinding"
+
+#, fuzzy
+#~ msgid "Connection aborted (while attempting to get online)"
+#~ msgstr "Verbinding naar"
+
+#, fuzzy
+#~ msgid "You haven't specified the UIN"
+#~ msgstr "U de"
+
+#, fuzzy
+#~ msgid "You haven't specified the password"
+#~ msgstr "U de"
+
+#, fuzzy
+#~ msgid "You're trying to register a new user without a password"
+#~ msgstr "U naar gebruiker"
+
+#, fuzzy
+#~ msgid "You're trying to register a new user without an alias"
+#~ msgstr "U naar gebruiker"
+
+#, fuzzy
+#~ msgid "You haven't specified a server name: using icq.mirabilis.com"
+#~ msgstr "U naam"
+
+#, fuzzy
+#~ msgid "You haven't specified a port: using 4000"
+#~ msgstr "U poort"
+
+#, fuzzy
+#~ msgid "Server ip address is %s"
+#~ msgstr "Server is"
+
+#, fuzzy
+#~ msgid "Estabilishing link to %s on port %u"
+#~ msgstr "koppeling naar s aan poort"
+
+#, fuzzy
+#~ msgid "Failed to create a DGRAM socket"
+#~ msgstr "Faalde naar"
+
+#, fuzzy
+#~ msgid "Link estabilished...registering new user"
+#~ msgstr "Koppeling"
+
+#, fuzzy
+#~ msgid "Link estabilished...logging in with UIN %u (and pass)"
+#~ msgstr "Koppeling door en"
+
+#, fuzzy
+#~ msgid "Sending out packet %d bytes long: cmd=%d, seq1=%d, seq2=%d"
+#~ msgstr "bytes"
+
+#, fuzzy
+#~ msgid ""
+#~ "Write error while attempting to send out a packet (cmd=%d, seq1=%d, seq2=%"
+#~ "d)"
+#~ msgstr "Schrijven naar"
+
+#, fuzzy
+#~ msgid "Attempting to enqueue a packet while disconnected: dropping"
+#~ msgstr "naar"
+
+#, fuzzy
+#~ msgid "Lost connection: link closed by the remote end"
+#~ msgstr "Verloren verbinding koppeling door de op afstand"
+
+#, fuzzy
+#~ msgid ""
+#~ "Failed to write the ack for packet %u:%u : awaiting re-send to re-ack"
+#~ msgstr "Faalde naar de voor naar"
+
+#, fuzzy
+#~ msgid "Sent CMD_KEEP_ALIVE"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "Sent CMD_EXT_INFO_REQ"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "Sent CMD_INFO_REQ"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "Sent CMD_ACK_MESSAGES"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "Sent CMD_LOGIN"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "Sent CMD_CONTACT_LIST"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "Sent CMD_SEARCH_USER"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "Sent CMD_STATUS_CHANGE"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "Sent CMD_ADD_TO_LIST"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "Sent CMD_REG_NEW_USER"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "Sent CMD_NEW_USER_INFO"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "Sent CMD_SEND_MESSAGE"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "unknown (%u)"
+#~ msgstr "onbekend"
+
+#, fuzzy
+#~ msgid "free for chat"
+#~ msgstr "vrij voor"
+
+#, fuzzy
+#~ msgid "unknown binary flags %u"
+#~ msgstr "onbekend"
+
+#, fuzzy
+#~ msgid ""
+#~ "Received an old-style packet (version %u): ignoring (I guess that this is "
+#~ "for backward compatibility only)"
+#~ msgstr "stijl versie I is voor"
+
+#, fuzzy
+#~ msgid ""
+#~ "Duplicate packet: %d bytes, cmd=%u, seq1=%u, seq2=%u: re-acking and "
+#~ "ignoring"
+#~ msgstr "Dupliceren bytes en"
+
+#, fuzzy
+#~ msgid "Packet from server: %d bytes, cmd=%u, seq1=%u, seq2=%u"
+#~ msgstr "bytes"
+
+#, fuzzy
+#~ msgid "Hex dump: %s"
+#~ msgstr "Hexidecimaal"
+
+#, fuzzy
+#~ msgid ""
+#~ "Received a broken packet from server (session id %u != %u) : ignoring"
+#~ msgstr "sessie id"
+
+#, fuzzy
+#~ msgid "Received ack for packet %d:%d"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "Received unexpected ack for packet %d:%d: ignoring (resent ?)"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "Failed to set new user info...you will have to do it manually"
+#~ msgstr "Faalde naar gebruiker naar it"
+
+#, fuzzy
+#~ msgid ""
+#~ "Received a broken multi-packet from server (incoherent internal packet "
+#~ "size): ignoring (awaiting resend)"
+#~ msgstr "grootte"
+
+#, fuzzy
+#~ msgid "Connection interrupted while processing a multipacket: stopping"
+#~ msgstr "Verbinding"
+
+#, fuzzy
+#~ msgid "Received SRV_X1: ack for contact list"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "Received SRV_NEW_UIN: new user registered"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "New user registered with UIN %u: logging in to complete registration"
+#~ msgstr "Nieuw gebruiker geregistreerd door naar"
+
+#, fuzzy
+#~ msgid "Received an unexpected SRV_NEW_USER...doh...acking and ignoring"
+#~ msgstr "en"
+
+#, fuzzy
+#~ msgid "Received SRV_NEW_USER: new user informations updated"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "Your new user informations are:"
+#~ msgstr "gebruiker:"
+
+#, fuzzy
+#~ msgid "Password: %c%s"
+#~ msgstr "Wachtwoord"
+
+#, fuzzy
+#~ msgid "Alias: %c%s"
+#~ msgstr "Alias"
+
+#, fuzzy
+#~ msgid "First name: %c%s"
+#~ msgstr "Eerste naam"
+
+#, fuzzy
+#~ msgid "Last name: %c%s"
+#~ msgstr "Laatste naam"
+
+#, fuzzy
+#~ msgid "E-Mail: %c%s"
+#~ msgstr "Bericht"
+
+#, fuzzy
+#~ msgid ""
+#~ "You can fill these informations in the options dialog and then get online."
+#~ msgstr "U de en."
+
+#, fuzzy
+#~ msgid "no"
+#~ msgstr "nee"
+
+#, fuzzy
+#~ msgid ""
+#~ "Received a broken \"user found\" reply from server : ignoring (awaiting "
+#~ "resend)"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid ""
+#~ "End of search results: not all the matches were reported: try to refine "
+#~ "your criteria"
+#~ msgstr "End alles de naar"
+
+#, fuzzy
+#~ msgid "End of search results: all the matches were reported"
+#~ msgstr "End alles de"
+
+#, fuzzy
+#~ msgid ""
+#~ "Received a broken \"user online\" reply from server : ignoring (awaiting "
+#~ "resend)"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "User %s (%u) is %s"
+#~ msgstr "Gebruiker s is"
+
+#, fuzzy
+#~ msgid ""
+#~ "Received an \"user online\" message for an unexpected user: %u: ignoring"
+#~ msgstr "gebruiker voor gebruiker"
+
+#, fuzzy
+#~ msgid ""
+#~ "Received a broken \"user offline\" reply from server : ignoring (awaiting "
+#~ "resend)"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "User %s (%u) is offline"
+#~ msgstr "Gebruiker s is"
+
+#, fuzzy
+#~ msgid ""
+#~ "Received an \"user onffline\" message for an unexpected user: %u: ignoring"
+#~ msgstr "gebruiker voor gebruiker"
+
+#, fuzzy
+#~ msgid ""
+#~ "Received a broken \"user status update\" reply from server : ignoring "
+#~ "(awaiting resend)"
+#~ msgstr "gebruiker status"
+
+#, fuzzy
+#~ msgid ""
+#~ "Received an \"user status update\" message for an unexpected user: %u: "
+#~ "ignoring"
+#~ msgstr "gebruiker status voor gebruiker"
+
+#, fuzzy
+#~ msgid "%cOffline message from %s (%u) sent on %u.%u.%u %u%u:%u%u"
+#~ msgstr "s aan"
+
+#, fuzzy
+#~ msgid ""
+#~ "Received a broken user-message from server : ignoring (awaiting resend)"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "<%s (%u)>: url: %s"
+#~ msgstr "s url"
+
+#, fuzzy
+#~ msgid "%s (%u) requests the authorization to add you to his contact list"
+#~ msgstr "s de naar toevoegen naar"
+
+#, fuzzy
+#~ msgid "The message above looks to be broken : can't extract request data"
+#~ msgstr "naar"
+
+#, fuzzy
+#~ msgid "<%s (%u)>: alias: %s"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "<%s (%u)>: first name: %s"
+#~ msgstr "s naam"
+
+#, fuzzy
+#~ msgid "<%s (%u)>: last name: %s"
+#~ msgstr "s naam"
+
+#, fuzzy
+#~ msgid "<%s (%u)>: e-mail: %s"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid ""
+#~ "double-click \r![dbl]icq.msg -a %u Authorisation granted\rhere\r to grant "
+#~ "the authorisation"
+#~ msgstr "double naar de"
+
+#, fuzzy
+#~ msgid "or use /icq.msg -a to grant it manually"
+#~ msgstr "of naar it"
+
+#, fuzzy
+#~ msgid "%s (%u) grants you the authorisation to add him to your contact list"
+#~ msgstr "s de naar toevoegen naar"
+
+#, fuzzy
+#~ msgid "You have been added to the %s's (%u) contact list"
+#~ msgstr "U naar de s s"
+
+#, fuzzy
+#~ msgid "Unknown message type %u from %s (%u): can't extract data"
+#~ msgstr "Onbekend s"
+
+#, fuzzy
+#~ msgid "<center>No informations available</center>"
+#~ msgstr "<center> Nee beschikbaar</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<html><head><title>User informations</title></head><body bgcolor=\"#FFFFFF"
+#~ "\" text=\"#000000\"><table width=\"100%\"><tr bgcolor=\"#000000"
+#~ "\"><td>&nbsp;</td><td><font color=\"#FFFFFF\"><b>ICQ User Info</b></"
+#~ "font></td></tr><tr bgcolor=\"#E0E0E0\"><td><h2>UIN:</h2></td><td><h2>%u</"
+#~ "h2></td></tr><tr bgcolor=\"#E0E0E0\"><td><h3>Alias:</h3></td><td><h3>%s</"
+#~ "h3></td></tr><tr bgcolor=\"#000000\"><td>&nbsp;</td><td><font color="
+#~ "\"#FFFFFF\"><b>Basic Info</b></font></td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><b>First name:</b></td><td>%s</td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><b>Last name:</b></td><td>%s</td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><b>E-Mail:</b></td><td>%s</td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><b>Auth:</b></td><td>%s</td></tr><tr bgcolor=\"#000000\"><td>&nbsp;"
+#~ "</td><td><font color=\"#FFFFFF\"><b>Extended Info</b></font></td></tr><tr "
+#~ "bgcolor=\"#E0E0E0\"><td><b>Gender:</b></td><td>%s</td></tr><tr bgcolor="
+#~ "\"#E0E0E0\"><td><b>Age:</b></td><td>%s</td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><b>City:</b></td><td>%s</td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><b>State:</b></td><td>%s</td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><b>Country:</b></td><td>%s</td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><b>Timezone:</b></td><td>%s</td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><b>Phone:</b></td><td>%s</td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><b>Homepage:</b></td><td>%s</td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><b>About:</b></td><td>%s</td></tr><tr bgcolor=\"#000000"
+#~ "\"><td>&nbsp;</td><td><font color=\"#000000\">Generated with the KVIrc "
+#~ "ICQ client module at %s</font></td></tr></table></body></html>"
+#~ msgstr ""
+#~ "<html><head><title> Gebruiker</title></head> tekst<table width=\"100%"
+#~ "\"><tr bgcolor=\"#000000\"><td>&nbsp;</td><td><font color=\"#FFFFFF\"><b> "
+#~ "Gebruiker Informatie</b></font></td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><h2></h2></td><td><h2></h2></td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><h3> Alias</h3></td><td><h3> s</h3></td></tr><tr bgcolor=\"#000000"
+#~ "\"><td>&nbsp;</td><td><font color=\"#FFFFFF\"><b> Basis Informatie</b></"
+#~ "font></td></tr><tr bgcolor=\"#E0E0E0\"><td><b> Eerste naam</b></td><td> "
+#~ "s</td></tr><tr bgcolor=\"#E0E0E0\"><td><b> Laatste naam</b></td><td> s</"
+#~ "td></tr><tr bgcolor=\"#E0E0E0\"><td><b> Bericht</b></td><td> s</td></"
+#~ "tr><tr bgcolor=\"#E0E0E0\"><td><b></b></td><td> s</td></tr><tr bgcolor="
+#~ "\"#000000\"><td>&nbsp;</td><td><font color=\"#FFFFFF\"><b> Informatie</"
+#~ "b></font></td></tr><tr bgcolor=\"#E0E0E0\"><td><b> Geslacht</b></td><td> "
+#~ "s</td></tr><tr bgcolor=\"#E0E0E0\"><td><b> Leeftijd</b></td><td> s</td></"
+#~ "tr><tr bgcolor=\"#E0E0E0\"><td><b> Woonplaats</b></td><td> s</td></tr><tr "
+#~ "bgcolor=\"#E0E0E0\"><td><b> Staat</b></td><td> s</td></tr><tr bgcolor="
+#~ "\"#E0E0E0\"><td><b> Land</b></td><td> s</td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><b></b></td><td> s</td></tr><tr bgcolor=\"#E0E0E0\"><td><b> "
+#~ "Telefoon</b></td><td> s</td></tr><tr bgcolor=\"#E0E0E0\"><td><b> "
+#~ "Homepagina</b></td><td> s</td></tr><tr bgcolor=\"#E0E0E0\"><td><b> Info "
+#~ "over</b></td><td> s</td></tr><tr bgcolor=\"#000000\"><td>&nbsp;</"
+#~ "td><td><font color=\"#000000\"> door de module s</font></td></tr></"
+#~ "table></body></html>"
+
+#, fuzzy
+#~ msgid "Alias:"
+#~ msgstr "Alias:"
+
+#, fuzzy
+#~ msgid "First name:"
+#~ msgstr "Voornaam:"
+
+#, fuzzy
+#~ msgid "E-Mail:"
+#~ msgstr "E-Mail:"
+
+#, fuzzy
+#~ msgid "First name"
+#~ msgstr "Eerste"
+
+#, fuzzy
+#~ msgid "Last name"
+#~ msgstr "Laatste"
+
+#, fuzzy
+#~ msgid "Searching for \"%s:%s:%s:%s\""
+#~ msgstr "Bezig met zoeken voor s s s s"
+
+#, fuzzy
+#~ msgid "You're not online: can't initiate a search session"
+#~ msgstr "U"
+
+#, fuzzy
+#~ msgid "Search form"
+#~ msgstr "Zoeken"
+
+#, fuzzy
+#~ msgid "Info window"
+#~ msgstr "Informatie"
+
+#, fuzzy
+#~ msgid "&Configure KVIrc......"
+#~ msgstr "&Opties..."
+
+#, fuzzy
+#~ msgid "Query extended info"
+#~ msgstr "Ondervraging"
+
+#, fuzzy
+#~ msgid "Requesting informations for user %u (%s)"
+#~ msgstr "voor gebruiker s"
+
+#, fuzzy
+#~ msgid "Failed to request informations for user %u (%s)"
+#~ msgstr "Faalde naar voor gebruiker s"
+
+#, fuzzy
+#~ msgid "Requesting extended informations for user %u (%s)"
+#~ msgstr "voor gebruiker s"
+
+#, fuzzy
+#~ msgid "Failed to request extended informations for user %u (%s)"
+#~ msgstr "Faalde naar voor gebruiker s"
+
+#, fuzzy
+#~ msgid "Warning: this change will take effect the next time that you log in"
+#~ msgstr "Waarschuwing de tijd"
+
+#, fuzzy
+#~ msgid ""
+#~ "Warning: failed to send the request to server, this change will take "
+#~ "effect the next time that you log in"
+#~ msgstr "Waarschuwing naar de naar de tijd"
+
+#, fuzzy
+#~ msgid "Adding user %u (%s) to the online notify list"
+#~ msgstr "gebruiker s naar de"
+
+#, fuzzy
+#~ msgid ""
+#~ "Warning: until you log out, you might still receive status informations "
+#~ "for the removed user"
+#~ msgstr "Waarschuwing status voor de"
+
+#, fuzzy
+#~ msgid ""
+#~ "<nobr><b>%s (%d)</b></nobr><br>First name: %s<br>Last name: %s<br>E-Mail: "
+#~ "%s"
+#~ msgstr ""
+#~ "<nobr><b> s</b></nobr><br> Eerste naam s<br> Laatste naam s<br> Bericht"
+
+#, fuzzy
+#~ msgid "<br><hr>Status: <b>%s</b><br>Ip: %s<br>Real Ip: %s<br>TCP Port: %s"
+#~ msgstr "<br><hr> Status<b> s</b><br> s<br> Bekend s<br> Poort"
+
+#, fuzzy
+#~ msgid "Online &invisible"
+#~ msgstr "Onl&ine"
+
+#, fuzzy
+#~ msgid "ICQ [%s]"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>ICQ</b></font> <nobr><font color=\"%s\">[%s]</"
+#~ "font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b></b></font><nobr><font color=\"%s\"> s</"
+#~ "font></nobr>"
+
+#, fuzzy
+#~ msgid "No ICQ session available: use /icq.open"
+#~ msgstr "Nee sessie beschikbaar"
+
+#, fuzzy
+#~ msgid "User (%u) already in the contact list"
+#~ msgstr "Gebruiker de"
+
+#, fuzzy
+#~ msgid "The alias and password fields must be non-empty"
+#~ msgstr "en wachtwoord"
+
+#, fuzzy
+#~ msgid "An ICQ session is already running: get offline first"
+#~ msgstr "sessie is"
+
+#, fuzzy
+#~ msgid "You're not online"
+#~ msgstr "U"
+
+#, fuzzy
+#~ msgid "Failed to request the extended info"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid ">>> %s (%u): (authorization grant): %s"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid ">>> %s (%u): %s"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Failed to request the search"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid "(Alias)"
+#~ msgstr "Alias"
+
+#, fuzzy
+#~ msgid "Show IP address"
+#~ msgstr "Tonen IP"
+
+#~ msgid "EOF"
+#~ msgstr "EOF"
+
+#, fuzzy
+#~ msgid "Failed to connect : errno = %d (%s)"
+#~ msgstr "Faalde naar s"
+
+#, fuzzy
+#~ msgid "Write error : errno = %d (%s)"
+#~ msgstr "Schrijven s"
+
+#, fuzzy
+#~ msgid "Can't start search: failed to send all the query packets"
+#~ msgstr "naar alles de"
+
+#, fuzzy
+#~ msgid ""
+#~ "Search started for \"%s\" and minimum speed of %u KB/S: sent %d packets "
+#~ "to neighbours"
+#~ msgstr "Zoeken voor s en KB S naar"
+
+#, fuzzy
+#~ msgid "Handshake failed: unexpected handshake action \"%s\""
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Handshake failed: unexpected response \"%s\""
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Invalid payload length %u for PING descriptor (should be 0)"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "Evil: loops back my own PING packets with hops < 2"
+#~ msgstr "door"
+
+#, fuzzy
+#~ msgid "Invalid payload length %u for PONG descriptor (should be 14)"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "Invalid payload length %u for QUERY descriptor (should be >= 2)"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "Evil: loops back my own QUERY packets with hops < 2"
+#~ msgstr "door"
+
+#, fuzzy
+#~ msgid "Invalid payload length %u for QUERYHIT descriptor (should be >= 27)"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "Invalid payload length %u for QUERYHIT descriptor (should be >= %u)"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "Invalid payload length %u for PUSH descriptor (should be 26)"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid ""
+#~ "Rejecting valid PUSH request from %s for file index %u: too many outgoing "
+#~ "transfers"
+#~ msgstr "s voor file"
+
+#, fuzzy
+#~ msgid ""
+#~ "Failed to setup the listening socket: can't accept incoming network "
+#~ "connections"
+#~ msgstr "Faalde naar de Inkomend netwerk"
+
+#, fuzzy
+#~ msgid "Listening for network connections on port %u"
+#~ msgstr "voor netwerk aan poort"
+
+#, fuzzy
+#~ msgid "Listening for network connections disabled: (user option)"
+#~ msgstr "voor netwerk uitgeschakeld gebruiker"
+
+#, fuzzy
+#~ msgid ""
+#~ "Failed to setup the listening socket: can't accept incoming transfer "
+#~ "connections"
+#~ msgstr "Faalde naar de Inkomend"
+
+#, fuzzy
+#~ msgid "Listening for transfer connections on port %u"
+#~ msgstr "voor aan poort"
+
+#, fuzzy
+#~ msgid "Listening for transfer connections disabled: (user option)"
+#~ msgstr "voor uitgeschakeld gebruiker"
+
+#, fuzzy
+#~ msgid ""
+#~ "Can't connect to node %s:%u: another connection to this node is already "
+#~ "in progress"
+#~ msgstr "naar s verbinding naar is"
+
+#, fuzzy
+#~ msgid "Can't connect to node %s:%u: it is my own address"
+#~ msgstr "naar s it is"
+
+#, fuzzy
+#~ msgid "User kill request"
+#~ msgstr "Gebruiker"
+
+#, fuzzy
+#~ msgid "Can't start the PUSH request, the source node is no longer existing"
+#~ msgstr "de de bron is nee"
+
+#, fuzzy
+#~ msgid ""
+#~ "Rejecting connection from node %s:%u: not accepting connections (user "
+#~ "option)"
+#~ msgstr "verbinding s gebruiker"
+
+#, fuzzy
+#~ msgid "Rejecting connection from node %s:%u: connection limit reached"
+#~ msgstr "verbinding s verbinding"
+
+#, fuzzy
+#~ msgid ""
+#~ "Rejecting connection from node %s:%u: another connection to this node is "
+#~ "already in progress"
+#~ msgstr "verbinding s verbinding naar is"
+
+#, fuzzy
+#~ msgid "Net bandwidth: I: %d O: %d (bytes/sec)"
+#~ msgstr "I bytes"
+
+#, fuzzy
+#~ msgid "errno = %d (%s)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Too many connections: freeing bandwidth: dropping connected node"
+#~ msgstr "Te veel verbindingen: bandbreedte vrijmaken: "
+
+#, fuzzy
+#~ msgid "System select() error: errno=%d (%s)"
+#~ msgstr "Systeem s"
+
+#, fuzzy
+#~ msgid "Local DB Search: \"%s\" (%u matches)"
+#~ msgstr "Lokaal Zoeken s"
+
+#, fuzzy
+#~ msgid "Status"
+#~ msgstr "Status"
+
+#, fuzzy
+#~ msgid "Bandwidth (bytes/sec)"
+#~ msgstr "bytes"
+
+#, fuzzy
+#~ msgid "Remove selected nodes"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "Remove non connected nodes"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "ID"
+#~ msgstr "Identiteit"
+
+#, fuzzy
+#~ msgid "File size (bytes)"
+#~ msgstr "Bestand grootte bytes"
+
+#, fuzzy
+#~ msgid "Spy local search results"
+#~ msgstr "Bespionneren lokaal"
+
+#, fuzzy
+#~ msgid "On network: %d nodes connected"
+#~ msgstr "Aan netwerk"
+
+#, fuzzy
+#~ msgid "Not on network"
+#~ msgstr "Niet aan"
+
+#~ msgid "Gnutella"
+#~ msgstr "Gnutella"
+
+#, fuzzy
+#~ msgid "Connected (Incoming handshake)"
+#~ msgstr "Verbonden"
+
+#~ msgid "Just born"
+#~ msgstr "Net geboren"
+
+#, fuzzy
+#~ msgid "New %s node: %s:%s"
+#~ msgstr "Nieuw s s"
+
+#, fuzzy
+#~ msgid "Lost node: %s:%s : %s"
+#~ msgstr "Verloren s s"
+
+#, fuzzy
+#~ msgid "Connected (Handshake)"
+#~ msgstr "Verbonden"
+
+#, fuzzy
+#~ msgid "Connected (On Network)"
+#~ msgstr "Verbonden Aan Netwerk"
+
+#, fuzzy
+#~ msgid "Stats for node %d %c: %s:%u"
+#~ msgstr "voor s"
+
+#, fuzzy
+#~ msgid " Connection type %c: %s"
+#~ msgstr "Verbinding"
+
+#, fuzzy
+#~ msgid " Packets processed %c: %u"
+#~ msgstr "Pakketten"
+
+#, fuzzy
+#~ msgid " Packets enqueued %c: %u"
+#~ msgstr "Pakketten"
+
+#, fuzzy
+#~ msgid " Bytes received %c: %u"
+#~ msgstr "Bytes"
+
+#, fuzzy
+#~ msgid " Bytes sent %c: %u"
+#~ msgstr "Bytes"
+
+#, fuzzy
+#~ msgid " Unroutable (no path) %c: %u"
+#~ msgstr "nee"
+
+#, fuzzy
+#~ msgid " Unknown %c: %u"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid ""
+#~ " Pong %c: %u (%u routed, %u directed to me, %u dropped "
+#~ "(%u ttl expired, %u unroutable))"
+#~ msgstr "naar"
+
+#, fuzzy
+#~ msgid ""
+#~ " Query %c: %u (%u routed, %u dropped (%u looped back, %u "
+#~ "ttl expired, %u duplicated))"
+#~ msgstr "Ondervraging"
+
+#, fuzzy
+#~ msgid ""
+#~ " QueryHit %c: %u (%u routed, %u directed to me, %u "
+#~ "dropped (%u ttl expired, %u unroutable))"
+#~ msgstr "naar"
+
+#, fuzzy
+#~ msgid ""
+#~ " Push %c: %u (%u routed, %u directed to me, %u dropped "
+#~ "(%u ttl expired, %u unroutable, %u duplicated))"
+#~ msgstr "Duwen naar"
+
+#, fuzzy
+#~ msgid "Select the files to share"
+#~ msgstr "Selecteren de naar"
+
+#, fuzzy
+#~ msgid "No Gnutella window: use gnutella.open first"
+#~ msgstr "Nee venster"
+
+#~ msgid "Gnutella options"
+#~ msgstr "Gnutella opties"
+
+#, fuzzy
+#~ msgid "Maximum network connections"
+#~ msgstr "netwerk"
+
+#, fuzzy
+#~ msgid "Listen for network connections"
+#~ msgstr "voor netwerk"
+
+#, fuzzy
+#~ msgid "Network listen port"
+#~ msgstr "Netwerk"
+
+#, fuzzy
+#~ msgid "Connection speed (KBit/sec)"
+#~ msgstr "Verbinding"
+
+#, fuzzy
+#~ msgid "Max uploads"
+#~ msgstr "Max"
+
+#, fuzzy
+#~ msgid "Max network connections to drop per download"
+#~ msgstr "Max netwerk naar"
+
+#, fuzzy
+#~ msgid "Remove selected transfers"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "Kill"
+#~ msgstr "Beëindigen (Kill)"
+
+#, fuzzy
+#~ msgid "Retry (same host)"
+#~ msgstr "Nogmaals"
+
+#, fuzzy
+#~ msgid "Search for this filename"
+#~ msgstr "Zoeken voor"
+
+#, fuzzy
+#~ msgid "Dead (Retry killed)"
+#~ msgstr "Nogmaals"
+
+#, fuzzy
+#~ msgid "Waiting for retry (%u secs)"
+#~ msgstr "voor seconden"
+
+#~ msgid "Passive"
+#~ msgstr "pasive"
+
+#, fuzzy
+#~ msgid "Dead (Failed+Retried)"
+#~ msgstr "Faalde"
+
+#, fuzzy
+#~ msgid ""
+#~ "[smart download]: Attempting to retry transfer for file \"%s\": same "
+#~ "host , attempt %u"
+#~ msgstr "naar voor file s"
+
+#, fuzzy
+#~ msgid ""
+#~ "[smart download]: Attempting to retry transfer for file \"%s\": changing "
+#~ "host"
+#~ msgstr "naar voor file s"
+
+#, fuzzy
+#~ msgid ""
+#~ "[smart download]: No alternate hit found for file \"%s\": performing a "
+#~ "query; will retry again in 30 secs"
+#~ msgstr "Nee voor file s"
+
+#, fuzzy
+#~ msgid "Waiting for push"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "Dead (Completed)"
+#~ msgstr "Voltooid"
+
+#, fuzzy
+#~ msgid "Dead (Failed)"
+#~ msgstr "Faalde"
+
+#, fuzzy
+#~ msgid "HTTP header too long (broken client ?)"
+#~ msgstr "HTTP"
+
+#, fuzzy
+#~ msgid "Unroutable IP address"
+#~ msgstr "IP"
+
+#, fuzzy
+#~ msgid "Failed to create the listening socket"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid "Failed to retrieve the local port"
+#~ msgstr "Faalde naar de lokaal"
+
+#, fuzzy
+#~ msgid "The index specified in the header is not the expected one (%u)"
+#~ msgstr "de is de"
+
+#, fuzzy
+#~ msgid "Broken servent identifier"
+#~ msgstr "Gebroken"
+
+#, fuzzy
+#~ msgid "The servent identifier is not the expected one (%s)"
+#~ msgstr "is de s"
+
+#, fuzzy
+#~ msgid "The file name is not the expected one (%s)"
+#~ msgstr "file naam is de s"
+
+#~ msgid "Invalid request syntax"
+#~ msgstr "Ongeldige verzoek syntax"
+
+#, fuzzy
+#~ msgid "The file index requested does not match the PUSH request"
+#~ msgstr "file overeenkomstig de"
+
+#, fuzzy
+#~ msgid "The file name requested does not match the PUSH request"
+#~ msgstr "file naam overeenkomstig de"
+
+#, fuzzy
+#~ msgid "Invalid \"Range\" request"
+#~ msgstr "Bereik"
+
+#, fuzzy
+#~ msgid "Broken \"Range\" request"
+#~ msgstr "Gebroken Bereik"
+
+#, fuzzy
+#~ msgid "Accepting GET request from %s:%u for file %s (range %u-%u)"
+#~ msgstr "s voor file s"
+
+#~ msgid "Rejecting GET request: "
+#~ msgstr "Get request gewijgerd"
+
+#~ msgid ""
+#~ "\n"
+#~ "[transfer %u]: %s"
+#~ msgstr ""
+#~ "\n"
+#~ "[transfer %u]: %s"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: The server declared the data content size to be %u bytes "
+#~ "instead of %u (expected from QueryHit), trusting him, even if I'm "
+#~ "confused a bit"
+#~ msgstr "de grootte naar bytes I"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: Invalid Content-length header line sent by the server (%"
+#~ "s): trusting the QueryHit file size"
+#~ msgstr "Inhoud regel door de s de file"
+
+#, fuzzy
+#~ msgid ""
+#~ "No Content-length header line sent by the server: trusting the QueryHit "
+#~ "file size"
+#~ msgstr "Nee Inhoud regel door de de file"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: The server specified an invalid resume position (%u where %"
+#~ "u was expected), this was rather fatal"
+#~ msgstr "waar"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: Invalid Content-range header line sent by the server (%s): "
+#~ "trying to blindly trust the server"
+#~ msgstr "Inhoud regel door de s naar de"
+
+#, fuzzy
+#~ msgid ""
+#~ "No Content-range header line sent by the server: trying to blindly trust "
+#~ "the server"
+#~ msgstr "Nee Inhoud regel door de naar de"
+
+#, fuzzy
+#~ msgid "Server response to HTTP GET:"
+#~ msgstr "Server naar HTTP:"
+
+#, fuzzy
+#~ msgid "Invalid response while expecting http OK: "
+#~ msgstr "http OK "
+
+#, fuzzy
+#~ msgid "%u of %u bytes [%d% at %u (bytes/sec)%s"
+#~ msgstr "bytes bytes"
+
+#~ msgid "]: stalled"
+#~ msgstr "]: stalled"
+
+#, fuzzy
+#~ msgid "Unexpected 0 bytes transfer requested"
+#~ msgstr "bytes"
+
+#, fuzzy
+#~ msgid "File I/O Error: can't seek to the resume position"
+#~ msgstr "Bestand I Fout naar de"
+
+#, fuzzy
+#~ msgid "File I/O Error: unexpected EOF"
+#~ msgstr "Bestand I Fout"
+
+#, fuzzy
+#~ msgid "Stalled (user option kill)"
+#~ msgstr "Onderbroken gebruiker"
+
+#, fuzzy
+#~ msgid "Completed at %u (bytes/sec)"
+#~ msgstr "Voltooid bytes"
+
+#, fuzzy
+#~ msgid "Invalid empty file name"
+#~ msgstr "leeg file"
+
+#, fuzzy
+#~ msgid "Failed to seek the file to the resume position"
+#~ msgstr "Faalde naar de file naar de"
+
+#, fuzzy
+#~ msgid "The downloaded file has been saved as file:/%s"
+#~ msgstr "file file"
+
+#, fuzzy
+#~ msgid ""
+#~ "Failed to rename the downloaded file to %s, it is actually saved as file:/"
+#~ "%s (it would be a good idea to move it from there)"
+#~ msgstr "Faalde naar de file naar s it is file s it naar it"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: The file is currently locked by filelock %s, so it might "
+#~ "be actually being downloaded.If you feel this message to be in error, "
+#~ "please remove the filelock by hand and restart the download."
+#~ msgstr "file is door s it naar verwijderen de door en de."
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: The file %s exists on disk but it has size greater than "
+#~ "expected: this might be a terminated download"
+#~ msgstr "file s aan it grootte"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: The file %s exists on disk: attempting a resume from "
+#~ "position %u"
+#~ msgstr "file s aan"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: The file %s exists on disk but the expected final sizes do "
+#~ "not match"
+#~ msgstr "file s aan de"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: The file %s exists on disk but there was an arror while "
+#~ "analyzing it (stat() call failed)"
+#~ msgstr "file s aan it"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: File %s exists on disk but its lock seems to be broken"
+#~ msgstr "Bestand s aan naar"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: File %s exists: Moving it out of my way (renaming to %s."
+#~ "rnm)"
+#~ msgstr "Bestand s Bezig met verplaatsen it naar s"
+
+#, fuzzy
+#~ msgid "[transfer %u]: Failed to write the lock file (%s)"
+#~ msgstr "Faalde naar de file s"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: Failed to open the lock file for writing (%s): %s (errno=%"
+#~ "d)"
+#~ msgstr "Faalde naar de file voor s s"
+
+#, fuzzy
+#~ msgid "[transfer %u]: Failed to write the resume lock file (%s)"
+#~ msgstr "Faalde naar de file s"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: Failed to open the resume lock file for writing (%s): %s "
+#~ "(errno=%d)"
+#~ msgstr "Faalde naar de file voor s s"
+
+#, fuzzy
+#~ msgid "Can't lock the download file (Another download in progress ?)"
+#~ msgstr "de file"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %d]: Failed to connect to the remote host, attempting a PUSH"
+#~ msgstr "Faalde naar naar de op afstand"
+
+#, fuzzy
+#~ msgid "[transfer %d]: Failed to connect to the remote host, PUSH failed"
+#~ msgstr "Faalde naar naar de op afstand"
+
+#~ msgid "[transfer %u]: Succesfully terminated"
+#~ msgstr "[transfer %u] succesvol beeindigd"
+
+#, fuzzy
+#~ msgid "Size (Bytes)"
+#~ msgstr "Grootte Bytes"
+
+#, fuzzy
+#~ msgid "Apply filter"
+#~ msgstr "Toepassen"
+
+#~ msgid "Store"
+#~ msgstr "Opslaan"
+
+#, fuzzy
+#~ msgid "Lock"
+#~ msgstr "Vergrendelen"
+
+#, fuzzy
+#~ msgid "Download selected"
+#~ msgstr "Ophalen"
+
+#, fuzzy
+#~ msgid "%d hits (%d visible, %d pending)"
+#~ msgstr "zichtbaar"
+
+#, fuzzy
+#~ msgid "Out of memory for biff applet!"
+#~ msgstr "Buiten geheugen voor!"
+
+#, fuzzy
+#~ msgid "What the #$%&@^& !?!?\n"
+#~ msgstr "de\n"
+
+#, fuzzy
+#~ msgid "Already checking for mail on this account."
+#~ msgstr "voor aan."
+
+#, fuzzy
+#~ msgid "Checking for mail in %s"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "%s: %i new."
+#~ msgstr "s."
+
+#~ msgid "%s: no new messages."
+#~ msgstr "%s: geen nieuwe berichten."
diff --git a/po/kvirc/kvirc_pl.po b/po/kvirc/kvirc_pl.po
new file mode 100644
index 00000000..8b0979dd
--- /dev/null
+++ b/po/kvirc/kvirc_pl.po
@@ -0,0 +1,14086 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: KVirc 3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2001-09-11 00:28+0200\n"
+"Last-Translator: Krzysztof Godlewski <[email protected]>\n"
+"Language-Team: Polish <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"X-Generator: KBabel 0.9.6\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:696
+#, fuzzy
+msgid "&Cascade Windows"
+msgstr "Ułóż kaskadują&co"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:697
+#, fuzzy
+msgid "Cascade &Maximized"
+msgstr "Ułóż kaskadująco z&maksymalizowane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:700
+#, fuzzy
+msgid "&Tile Windows"
+msgstr "Okno &terminala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:703
+#, fuzzy
+msgid "&Auto Tile"
+msgstr "Ułożenie &Anodine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:708
+#, fuzzy
+msgid "Anodine's Full Grid"
+msgstr "Ułożenie &Anodine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:710
+#, fuzzy
+msgid "Pragma's Horizontal 4-Grid"
+msgstr "Ułożenie P&ragma (poziome)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:712
+#, fuzzy
+msgid "Pragma's Vertical 4-Grid"
+msgstr "Ułożenie &Pragma (pionowe)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:714
+#, fuzzy
+msgid "Pragma's Horizontal 6-Grid"
+msgstr "Ułożenie P&ragma (poziome)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:716
+#, fuzzy
+msgid "Pragma's Vertical 6-Grid"
+msgstr "Ułożenie &Pragma (pionowe)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:718
+#, fuzzy
+msgid "Pragma's Horizontal 9-Grid"
+msgstr "Ułożenie P&ragma (poziome)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:720
+#, fuzzy
+msgid "Pragma's Vertical 9-Grid"
+msgstr "Ułożenie &Pragma (pionowe)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:726
+msgid "Tile Met&hod"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:729
+#, fuzzy
+msgid "Expand &Vertically"
+msgstr "Rozszeż &pionowo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:730
+#, fuzzy
+msgid "Expand &Horizontally"
+msgstr "Rozszeż po&ziomo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:733
+#, fuzzy
+msgid "Mi&nimize All"
+msgstr "M&inimalizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_actiondrawer.cpp:64
+#, fuzzy
+msgid "Script"
+msgstr "Centrum &skryptów"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:581
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:634
+msgid "Unknown"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:128
+msgid "No topic message has been received from the server yet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:495
+#, fuzzy
+msgid "Channel topic:"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:513
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:201
+msgid "Set by"
+msgstr "Ustawił"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:519
+#, fuzzy
+msgid "Set on"
+msgstr "Zaznacz wszystko"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:525
+#, fuzzy
+msgid "Double-click to edit..."
+msgstr ""
+"Kliknij podwójnie by otworzyć link<br>Kliknij prawym przyciskiem aby "
+"zobaczyć inne opcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:530
+#, fuzzy
+msgid "No topic is set"
+msgstr "Brak wartości do wstawienia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:533
+#, fuzzy
+msgid "Double-click to set..."
+msgstr ""
+"Kliknij podwójnie by otworzyć link<br>Kliknij prawym przyciskiem aby "
+"zobaczyć inne opcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:587
+#, fuzzy
+msgid "History"
+msgstr "Katalog domowy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:596
+#, fuzzy
+msgid "Commit Changes"
+msgstr "Ostatnie &kanały"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:602
+#, fuzzy
+msgid "Discard Changes"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:627
+msgid "Copy to clipboard"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:988
+#, fuzzy
+msgid "There are active connections, are you sure you wish to "
+msgstr "Brak połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:989
+#, fuzzy
+msgid "quit KVIrc?"
+msgstr "Informacje o KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:587
+#, fuzzy
+msgid "Confirmation - KVIrc"
+msgstr "&Opcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:557
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:590
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&Yes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:556
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:589
+msgid "&Always"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:591
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&No"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1090
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1106
+msgid "Show %1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1134
+msgid "Customize..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:149
+#, fuzzy, c-format
+msgid "The file %s already exists.<br>Do you wish to overwrite it?"
+msgstr ""
+"Plik %s już istnieje.\n"
+"Czy chcesz go zamazać ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:150
+#, fuzzy
+msgid "File Exists - KVIrc"
+msgstr "Plik istnieje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:132
+msgid "Channel mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:162
+msgid "Split View"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:207
+#, fuzzy
+msgid "User List"
+msgstr "Wyczyść"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:167
+#, fuzzy
+msgid "Ban Editor"
+msgstr "&Narzędzia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:172
+#, fuzzy
+msgid "Ban Exception Editor"
+msgstr "Wygląd tekstu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:179
+#, fuzzy
+msgid "Invite Exception Editor"
+msgstr "Wygląd tekstu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:184
+#, fuzzy
+msgid "Mode Editor"
+msgstr "&Narzędzia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "said something recently"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "is talking"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:684
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:699
+msgid "and"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "were talking recently"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "are talking"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:707
+msgid "and other %1 users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:738
+#, fuzzy
+msgid "Dead channel"
+msgstr "Ostatnie &kanały"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:753
+#, fuzzy
+msgid "operator"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:754
+#, fuzzy
+msgid "operators"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+#, fuzzy
+msgid "channel owner"
+msgstr "Pokazuj pingi od serwera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+#, fuzzy
+msgid "channel owners"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+#, fuzzy
+msgid "user-operator"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+#, fuzzy
+msgid "user-operators"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "user total"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "users total"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:931
+msgid "No activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:932
+msgid "Minimal activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:933
+msgid "Very low activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Might be low activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Low activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Might be medium activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Medium activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "Might be high activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "High activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Might be very high activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Very high activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Might be flooded with messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+#, fuzzy
+msgid "Flooded with messages"
+msgstr "Interfejs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:946
+msgid "human"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:966
+#, fuzzy
+msgid "[Dead channel]"
+msgstr "Ostatnie &kanały"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1020
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1122
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:459
+#, fuzzy
+msgid " on "
+msgstr "%s na %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1086
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %Q, no "
+"data sent to the server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1403
+msgid "Sent part request, waiting for reply..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:610
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:647
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:293
+msgid "(Unknown)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1484
+#, fuzzy
+msgid "<b>Channel mode:</b>"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1498
+#, c-format
+msgid "<br><b>Key:</b> %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1505
+#, c-format
+msgid "<br><b>Limit:</b> %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1590
+#, c-format
+msgid "Channel synchronized in %d.%d seconds"
+msgstr "Kanał zsynchronizowany w %d.%d sekund"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:139
+msgid "Choose an Image File - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:284
+#, fuzzy, c-format
+msgid "Unloadable: %s"
+msgstr "Wyładowano moduł '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:260
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:90
+#, fuzzy
+msgid "&Browse..."
+msgstr "Przeglądaj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:364
+#, fuzzy
+msgid "Choose a File - KVIrc"
+msgstr "Wybierz katalog..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:382
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:593
+#, fuzzy
+msgid "Choose a Directory - KVIrc"
+msgstr "Wybierz katalog..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:764
+msgid "A&dd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:407
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:766
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:230
+#, fuzzy
+msgid "Re&move"
+msgstr "Usuń"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:602
+msgid "Sample Text"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:635
+msgid "Foreground"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:639
+#, fuzzy
+msgid "Transparent"
+msgstr "Transport"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:652
+msgid "Background"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:715
+msgid "Play"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:748
+#, fuzzy
+msgid "Channel name"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:749
+#, fuzzy
+msgid "Channel password"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:177
+#, fuzzy
+msgid "Toolbars"
+msgstr "&Narzędzia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:84
+msgid "Orientation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:86
+msgid "Top"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:87
+msgid "Left"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:88
+msgid "Right"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:89
+msgid "Bottom"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:91
+#, fuzzy
+msgid "Detached"
+msgstr "Ostatnie &kanały"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:92
+msgid "Flat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:94
+#, fuzzy
+msgid "Icon Size"
+msgstr "Tabela &ikon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:96
+msgid "Small (22x22)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:97
+msgid "Large (32x32)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1333
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:463
+msgid "&Apply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:830
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:113
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:251
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:319
+msgid "Close"
+msgstr "Zamknij"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:102
+#, fuzzy
+msgid "Channel Modes"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_debugwindow.cpp:47
+#, fuzzy
+msgid "Debug Messages"
+msgstr "Użytkownik:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:72
+#, fuzzy
+msgid "CTCP Page - KVIrc"
+msgstr "Wybierz katalog..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:109
+msgid "You have been paged by"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:75
+#, fuzzy
+msgid "Mask editor - KVirc"
+msgstr "&Narzędzia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:79
+msgid "New mask must match an *!*@* expression"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Ok"
+msgstr "Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:488
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:442
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:401
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Cancel"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:157
+#, fuzzy
+msgid "Active Bans"
+msgstr "Akcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:161
+msgid "Active Invite Exceptions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:165
+msgid "Active Ban Exceptions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:184
+msgid "Filter:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:188
+#, fuzzy
+msgid "Use doubleclick to edit item"
+msgstr ""
+"Kliknij podwójnie by otworzyć link<br>Kliknij prawym przyciskiem aby "
+"zobaczyć inne opcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:200
+msgid "Mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:202
+msgid "Set at"
+msgstr "Data"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "Add"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:92
+msgid "Cryptography/text transformation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:99
+msgid "Use the crypt engine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:120
+msgid "Enable encryption"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:123
+msgid "Encrypt key:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:141
+msgid "Hex"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:132
+msgid "Enable decryption"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:135
+msgid "Decrypt key:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_htmldialog.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:175
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:932
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1124
+msgid "OK"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:211
+msgid ""
+"If you dont want to encrypt a particular text line then just start it with "
+"the CTRL+P prefix"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:263
+msgid "Sorry, no crypt engines available"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:283
+msgid "Crypt: Can't create an engine instance: crypting disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:294
+#, c-format
+msgid "Crypt: Can't initialize the engine :%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:302
+msgid ""
+"Crypt: You have to enable encryption and/or decryption for the engine to work"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:385
+#, fuzzy
+msgid "Search tools"
+msgstr "Narzędzia Irc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:539
+#, c-format
+msgid "### Log session terminated at %s ###"
+msgstr "### Logowanie przerwane %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:713
+#, c-format
+msgid "### Log session started at %s ###"
+msgstr "### Logowanie rozpoczęte %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:717
+msgid "### Existing data buffer:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:721
+msgid "### End of existing data buffer."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3894
+#, fuzzy
+msgid "Hide Find Window"
+msgstr "Okno &terminala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3896
+#, fuzzy
+msgid "Show Find Window"
+msgstr "&Okno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3898
+msgid "Zoom In"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3899
+msgid "Zoom Out"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3900
+#, fuzzy
+msgid "Choose Temporary Font..."
+msgstr "Wybierz katalog..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3901
+#, fuzzy
+msgid "Choose Temporary Background..."
+msgstr "Wybierz katalog..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3902
+#, fuzzy
+msgid "Reset Temporary Background"
+msgstr "Wybierz katalog..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3905
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:738
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:841
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1057
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1289
+msgid "Clear Buffer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3939
+#, fuzzy
+msgid "Choose the background image..."
+msgstr "Wybierz katalog..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+#, fuzzy
+msgid "Invalid image"
+msgstr "Nieprawidłowy indeks (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+#, fuzzy
+msgid "Failed to load the selected image"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4083
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4140
+#, c-format
+msgid "Pos %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4156
+#, fuzzy
+msgid "Not found"
+msgstr "Tekst nie odnaleziony"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4563
+msgid "Looking up host %Q..."
+msgstr "Znajdowanie hosta %Q..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4926
+#, fuzzy
+msgid "Double-click to open this link"
+msgstr ""
+"Kliknij podwójnie by otworzyć link<br>Kliknij prawym przyciskiem aby "
+"zobaczyć inne opcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4946
+msgid "Unable to look it up hostname: Hostname appears to be masked"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4947
+msgid "Unable to look it up hostname: Unknown host"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4949
+#, fuzzy
+msgid ""
+"Double-click to look up this hostname<br>Right-click to view other options"
+msgstr ""
+"Kliknij podwójnie by otworzyć link<br>Kliknij prawym przyciskiem aby "
+"zobaczyć inne opcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4972
+msgid "Server appears to be a network hub<br>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4973
+#, fuzzy
+msgid "Unknown server<br>"
+msgstr "Nieznany błąd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4976
+#, fuzzy
+msgid "Double-click to read the MOTD<br>Right-click to view other options"
+msgstr ""
+"Kliknij podwójnie by otworzyć link<br>Kliknij prawym przyciskiem aby "
+"zobaczyć inne opcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4989
+msgid "Double-click to set<br>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5011
+msgid "You're not an operator: You may not change channel modes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5028
+msgid "Nothing known about %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5029
+msgid "Nothing known about %Q (no connection)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5054
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>): "
+"<br><nowrap>+%Q (%u users)<hr>%Q</nowrap>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5060
+#, fuzzy
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)<hr>Double-"
+"click to join %Q<br>Right click to view other options"
+msgstr ""
+"Kliknij podwójnie by otworzyć link<br>Kliknij prawym przyciskiem aby "
+"zobaczyć inne opcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5080
+msgid "<b>Double-click:</b><br>%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5085
+msgid "<b>Middle-click:</b><br>%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5090
+msgid "<b>Right-click:</b><br>%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1284
+msgid "Joined on <b>%1</b>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1296
+msgid "Quiet for <b>%1h %2m %3s</b>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1097
+msgid "No connection"
+msgstr "Brak połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:304
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:3
+#, fuzzy
+msgid "IRC Context"
+msgstr "&Nowy kontekst irc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:319
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:365
+#, c-format
+msgid "Lag: %d.%d%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:393
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:379
+msgid "Lag: ?.??"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:326
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:637
+#, fuzzy
+msgid "No IRC context"
+msgstr "&Nowy kontekst irc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:633
+#, fuzzy
+msgid "Not connected"
+msgstr "Brak połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:377
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1117
+msgid "away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:397
+msgid "In progress..."
+msgstr "Trwa łączenie..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:458
+#, fuzzy
+msgid "Crypting"
+msgstr "Skrypty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:466
+#, fuzzy
+msgid "Private Text Encoding"
+msgstr "Wygląd tekstu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:566
+msgid "Ops...I've accidentally lost the crypting engine..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:582
+msgid "List of window types available in this release of KVIrc:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:763
+#, fuzzy
+msgid "Use Default Encoding"
+msgstr "Wygląd tekstu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:775
+#, fuzzy
+msgid "Standard"
+msgstr "Zamknij"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:776
+msgid "Smart (Send Local)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:777
+msgid "Smart (Send UTF-8)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:810
+msgid "&Undock"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:813
+msgid "&Dock"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:818
+#, fuzzy
+msgid "Mi&nimize"
+msgstr "M&inimalizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:821
+#, fuzzy
+msgid "Ma&ximize"
+msgstr "&Maksymalizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:824
+#, fuzzy
+msgid "&Restore"
+msgstr "P&rzywróć"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:837
+#, fuzzy
+msgid "Text &Encoding"
+msgstr "Wygląd tekstu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:842
+#, fuzzy
+msgid "Sa&ve Window Properties"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:86
+msgid "Taskbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:91
+#, fuzzy
+msgid "taskbar"
+msgstr "Tryb &użytkownika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1162
+#, fuzzy
+msgid "Sort"
+msgstr "Centrum &skryptów"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1163
+#, fuzzy
+msgid "Reverse Sort"
+msgstr "Serwer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1223
+msgid "Window List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:203
+#, fuzzy
+msgid "Apply to all IRC Contexts"
+msgstr "&Nowy kontekst irc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:227
+msgid "Away Indicator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:255
+#, fuzzy
+msgid "Away since"
+msgstr "Ostatnie &nicki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:259
+#, fuzzy
+msgid "Double click to leave away mode"
+msgstr ""
+"Kliknij podwójnie by otworzyć link<br>Kliknij prawym przyciskiem aby "
+"zobaczyć inne opcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:261
+msgid "Not away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:263
+#, fuzzy
+msgid "Double click to enter away mode"
+msgstr ""
+"Kliknij podwójnie by otworzyć link<br>Kliknij prawym przyciskiem aby "
+"zobaczyć inne opcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:330
+#, c-format
+msgid "Last checked %d mins %d secs ago"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:332
+msgid "Lag measure not available yet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:336
+msgid "Lag meter engine disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:338
+#, fuzzy
+msgid "Double click to enable it"
+msgstr ""
+"Kliknij podwójnie by otworzyć link<br>Kliknij prawym przyciskiem aby "
+"zobaczyć inne opcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:391
+msgid "Lag Indicator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:461
+msgid "Simple Clock"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:512
+#, fuzzy
+msgid "Show total connection time"
+msgstr "Pokaż czas synchronizacji kanału"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:536
+#, fuzzy
+msgid "Connection Timer"
+msgstr "Połączenie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:560
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:87
+msgid "Separator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:820
+msgid "Clipboard"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line break"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line breaks"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:845
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:439
+#, fuzzy
+msgid "Cu&t"
+msgstr "Wytnij"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:847
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:445
+#, fuzzy
+msgid "&Copy"
+msgstr "Kopiuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:849
+#, fuzzy
+msgid "&Paste"
+msgstr "Wklej"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:851
+msgid "Paste (Slowly)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:856
+#, fuzzy
+msgid "Paste &File"
+msgstr "Serwery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:863
+#, fuzzy
+msgid "Stop Paste"
+msgstr "Wklej"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:865
+msgid "Clear"
+msgstr "Wyczyść"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:868
+msgid "Select All"
+msgstr "Zaznacz wszystko"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:897
+#, fuzzy
+msgid "Insert Icon"
+msgstr "Brak połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1926
+msgid "%d matches: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1930
+msgid "No matches"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2657
+msgid "Show History<br>&lt;Ctrl+PageUp&gt;"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2648
+msgid "Input History Disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2370
+msgid "Show Icons Popup<br>&lt;Ctrl+I&gt;<br>See also /help texticons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2382
+msgid "User friendly commandline mode<br>See also /help commandline"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2394
+msgid "Multi-line Editor<br>&lt;Alt+Backspace&gt;"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2498
+msgid "Confirm Multiline Message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2499
+msgid ""
+"You're about to send a message with %1 lines of text.<br><br>There is "
+"nothing wrong with it, this warning is<br>here to prevent you from "
+"accidentally sending<br>a really large message just because you didn't edit "
+"it<br>properly after pasting text from the clipboard.<br><br>Do you want the "
+"message to be sent?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2505
+msgid "Yes, always"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2506
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:399
+msgid "Yes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:806
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:375
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:400
+msgid "No"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2556
+msgid "<Ctrl+Return>; submits, <Alt+Backspace>; hides this editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:126
+#, fuzzy
+msgid "Address:"
+msgstr "Adres Ip:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:140
+msgid "Current IRC URI"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:156
+msgid "Notify List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:263
+#, fuzzy
+msgid "Part All Channels"
+msgstr "Ostatnie &kanały"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:265
+msgid "Close All Queries"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:270
+#, fuzzy
+msgid "Unhighlight All Windows"
+msgstr "M&inimalizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:273
+#, fuzzy
+msgid "Unhighlight All Channels"
+msgstr "Ostatnie &kanały"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:275
+msgid "Unhighlight All Queries"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:387
+#, fuzzy
+msgid "Gender:"
+msgstr "Ogólne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:394
+msgid "Male"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:393
+msgid "Female"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:375
+#, fuzzy
+msgid "Registered as"
+msgstr "Za&rejestrowani użytkownicy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:381
+msgid "(Matched by"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:393
+msgid "On <b>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:402
+msgid "Using server <b>%1</b>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:407
+msgid "%1 hops"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:417
+msgid "Probably Away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:493
+msgid ""
+"KVIrc can accept only irc://, irc6://, ircs:// or irc6s:// URL's\n"
+"Your URL is invalid. Check spelling and try again"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:554
+msgid ""
+"You have just attempted to close a console window with an active connection "
+"inside.\n"
+"Are you sure you wish to terminate the connection?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:588
+msgid ""
+"You have just attempted to close the last console window.\n"
+"Are you sure you wish to quit KVIrc?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1019
+msgid "Failed to load avatar with name \"%Q\" and local path \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:624
+#, fuzzy
+msgid "Connection in progress..."
+msgstr "łączenie..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1099
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:630
+#, fuzzy
+msgid "Login in progress..."
+msgstr "logowanie się..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1179
+#, fuzzy
+msgid "channel"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1180
+#, fuzzy
+msgid "channels"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1181
+msgid "query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1182
+msgid "queries"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1238
+#, fuzzy
+msgid "Connected since"
+msgstr "Połączenie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1252
+msgid "Online for"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1264
+#, fuzzy
+msgid "Server idle for"
+msgstr "Serwer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:50
+msgid "This option is also available as"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:683
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:275
+msgid "Advanced..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:69
+#, fuzzy
+msgid "Scri&pting"
+msgstr "Centrum &skryptów"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:74
+msgid "&Tools"
+msgstr "&Narzędzia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:81
+msgid "&Settings"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:83
+msgid "&Window"
+msgstr "&Okno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:125
+msgid "&Help"
+msgstr "Po&moc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:119
+#, fuzzy
+msgid "&Help Browser (Panel)"
+msgstr "Nowa &statyczna przeglądarka pomocy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:121
+#, fuzzy
+msgid "Help Browser (&Window)"
+msgstr "Nowa przeglądarka pomocy &MDI"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:124
+msgid "&Tip of the Day"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:127
+msgid "About &KVIrc"
+msgstr "Informacje o &KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:130
+msgid "KVIrc Home&page"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:134
+msgid "KVIrc Russian Home&page"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:139
+msgid "KVIrc French Home&page"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:143
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:339
+msgid "Subscribe to the Mailing List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:145
+msgid "Report a Bug / Propose Improvements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:148
+msgid "Join KVIrc International Channel on Freenode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:150
+msgid "Join KVIrc International Channel on IRCNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:155
+msgid "Join KVIrc Italian Channel on AzzurraNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:161
+msgid "Join KVIrc French Channel on Freenode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:164
+msgid "Join KVIrc French Channel on EuropNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:179
+msgid "Show StatusBar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:194
+msgid "&Save Configuration"
+msgstr "Zapi&sz ustawienia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:213
+msgid "Restore &Default Script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:630
+msgid "Disconnect"
+msgstr "Rozłącz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:228
+#, fuzzy
+msgid "New &Connection To"
+msgstr "Nowe &połączenie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:234
+msgid "Hide &Dock Icon"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:237
+msgid "Show &Dock Icon"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:111
+msgid "&Quit"
+msgstr "&Wyjście"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:265
+msgid "&Other..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:305
+#, fuzzy
+msgid "Show &Icon Table"
+msgstr "Tabela &ikon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:308
+#, fuzzy
+msgid "Open &Terminal"
+msgstr "Okno &terminala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:308
+msgid ""
+"<b>Shift+Drag</b> or <b>Ctrl+Drag</b> to move the applet around<br><b>Right "
+"click</b> to see the other options"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:313
+msgid "<b>Right click</b> to add/remove applets"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:353
+#, fuzzy
+msgid "Remove %Q"
+msgstr "Usuń"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:365
+msgid "Add Applet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:404
+msgid ""
+"Drag the applet while holding the Shift or Ctrl key to move it to the "
+"desired position"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:93
+msgid "<b><font color=\"#EAEAEA\" size=\"-1\">Find Text</font></b>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:118
+msgid "&Regular expression"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:121
+msgid "E&xtended regexp."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:126
+msgid "C&ase sensitive"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:129
+#, fuzzy
+msgid "Find &Prev."
+msgstr "Znajdź"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:133
+#, fuzzy
+msgid "&Find Next"
+msgstr "Znajdź"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:880
+msgid "Find"
+msgstr "Znajdź"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:214
+msgid "Type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:166
+#, fuzzy
+msgid "Set &All"
+msgstr "Zaznacz wszystko"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:170
+msgid "Set &None"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:174
+msgid "&Load From..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:178
+msgid "&Save As..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:182
+msgid "Filter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:234
+#, fuzzy
+msgid "Select a Filter File"
+msgstr "Zaznacz wszystko"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:251
+#, fuzzy, c-format
+msgid "Can't open the filter file %s for reading."
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:261
+#, fuzzy
+msgid "Select a Name for the Filter File"
+msgstr "Zaznacz wszystko"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:272
+#, fuzzy
+msgid "Failed to write the filter file %Q (IO Error)"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:274
+#, fuzzy
+msgid "Can't open the filter file %Q for writing"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:109
+#, fuzzy
+msgid "Choose image ..."
+msgstr "Wybierz katalog..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:122
+msgid "Builtin images"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:131
+msgid "Small icons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:138
+msgid "Full path"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:241
+msgid "Builtin $icon(%Q) [index %d]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:274
+#, fuzzy
+msgid "directory"
+msgstr "Katalog domowy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:300
+msgid "pixels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:305
+msgid "bytes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:98
+#, fuzzy
+msgid "Show User List"
+msgstr "Pokazuj pingi od serwera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:105
+msgid "Query Targets"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:165
+#, fuzzy
+msgid "Query target:"
+msgstr "Serwery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:170
+msgid "%1 is %2 (%3)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:172
+msgid "%1 is %2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:186
+msgid "%1 is using irc server: %2 (%3 hops)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:188
+msgid "%1 is using irc server: %2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:195
+msgid "%1 is probably away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:200
+msgid "Common channels with %1: %2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:254
+#, fuzzy
+msgid "[Dead Query]"
+msgstr "Ostatnie &kanały"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:240
+msgid "Query with %1!%2 (%3)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:242
+msgid "Query with %1!%2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:244
+msgid ", using server %1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:246
+msgid " (%1 hops)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:248
+msgid ", probably away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:252
+#, fuzzy
+msgid "Common channels: %2"
+msgstr "Ostatnie &kanały"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:320
+msgid ""
+"The target of this query has changed from \r!n\r%Q\r [%Q@\r!h\r%Q\r] to \r!n"
+"\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:389
+msgid "Common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:392
+msgid "No common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:428
+msgid "[Dead query]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:578
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:645
+msgid "This query has no active targets, no message sent"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:617
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %s, no "
+"data sent to the server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashcount.cpp:74
+msgid ""
+"The argument of the hash count '#' operator didn't evaluate to a hash: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:100
+msgid "DNS Lookup result for query \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:105
+msgid "Error: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:110
+#, fuzzy
+msgid "Hostname %d: %Q"
+msgstr "Zmień nazwę"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:116
+#, fuzzy
+msgid "IP address %d: %Q"
+msgstr "Adres Ip:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:870
+msgid ""
+"Broken slot '%Q' in target object '%Q::%Q' while emitting signal '%Q' from "
+"object '%Q::%Q': disconnecting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:888
+msgid ""
+"Slot target object destroyed while emitting signal '%Q' from object '%Q::%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1040
+#, fuzzy
+msgid "Listing Qt properties for object named \"%Q\" of KVS class %Q"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1046
+#, c-format
+msgid "Properties for Qt class %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1071
+msgid "Property: %c%Q%c, type %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1131
+#, c-format
+msgid "%d properties listed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1151
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1380
+msgid "The object named \"%Q\" of class %Q has no Qt properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1396
+msgid "No Qt property named \"%Q\" for object named \"%Q\" of class %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1409
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed but it doesn't really exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1417
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed and defined but the returned variant is not valid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1200
+#, c-format
+msgid ""
+"The property is of type %s but the supplied argument can't be converted to "
+"that type (expecting \"%s\")"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1331
+msgid ""
+"A pixmap object, an image_id or an image file path is required for this "
+"property"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1352
+#, fuzzy
+msgid "Can't find the requested image"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1512
+msgid ""
+"Property \"%Q\" for object named \"%Q\" of class %Q has an unsupported data "
+"type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1659
+msgid "Cannot find object function $%Q for object named \"%Q\" of class %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1661
+msgid "Cannot find object function $%Q::%Q for object named \"%Q\" of class %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1669
+msgid ""
+"Cannot call internal object function $%Q (for object named \"%Q\" of class %"
+"Q) from this context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:69
+msgid "Stray dot ('.') character or invalid following module command name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:70
+msgid "Syntax error: malformed module command identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:188
+msgid "Stray '::' sequence or invalid following alias name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:95
+msgid "Syntax error: malformed alias identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:102
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:196
+msgid "Stray ':' character: did you mean '...<namespace>::<alias_name>' ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:103
+msgid "Syntax error: malformed (alias?) command identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:280
+#, fuzzy
+msgid "Unknown callback command \"%Q\""
+msgstr "Nieznana komenda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:465
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:44
+msgid "The current window is not a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:532
+msgid ""
+"Timer name omitted but there is not current timer (this is not a timer "
+"callback)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:538
+msgid "Can't kill the timer '%Q' since it is not running"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:626
+msgid "List of active timers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:637
+msgid "Persistent"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:640
+#, fuzzy
+msgid "WindowLifetime"
+msgstr "&Okno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:643
+msgid "SingleShot"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:652
+msgid "None"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:663
+#, c-format
+msgid "Total: %u timers running"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:849
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:872
+#, fuzzy
+msgid "Found character '%q' (unicode %x) where a slash '/' was expected"
+msgstr "Niespodziewany znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:842
+#, fuzzy
+msgid ""
+"Unexpected end of command in binding operation, at least two slashes are "
+"missing"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:865
+#, fuzzy
+msgid ""
+"Unexpected end of command in binding operation, at least one slash is missing"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:905
+#, fuzzy
+msgid "Unknown binding operation '%Q'"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:926
+msgid "Missing right side operand for the binding operator '=~'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:948
+msgid "Trailing garbage ignored after operator '++'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:960
+msgid "Missing right operand for operator '+='"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:979
+msgid "Trailing garbage ignored after operator '--'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:986
+msgid ""
+"This looks a lot like an object handle dereferencing operator '->' but in "
+"fact it isn't. Maybe you forgot a '$' just after ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:994
+msgid "Missing right operand for operator '-='"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1015
+msgid "Missing right operand for operator '<<='"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1025
+msgid "Missing right operand for operator '<<'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1039
+msgid "Missing right operand for operator '<,'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1053
+msgid "Missing right operand for operator '<+'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1075
+msgid "Missing right operand for operator '>>='"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1094
+msgid "Missing right operand for operator '.='"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1113
+msgid "Missing right operand for operator '"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:72
+msgid "Unknown operator"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1178
+msgid "Unexpected (and senseless) read-only data evaluation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1180
+msgid "Syntax error: confused by earlier errors: bailing out"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1160
+#, fuzzy
+msgid "Unexpected end of script after a variable reference: expected operator"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1176
+msgid ""
+"Unexpected character '%q' (unicode %x) after a void function call: end of "
+"instruction expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1179
+#, fuzzy
+msgid "Unexpected character '%q' (unicode %x)"
+msgstr "Niespodziewany znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:96
+msgid "/me can be used only in channels, queries and DCC chat windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:385
+#, fuzzy
+msgid "Invalid IRC url (%Q)"
+msgstr "Nieprawidłowy indeks (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:410
+msgid "The commandline for this url type seems to be broken (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:412
+msgid "No commandline specified for this type of url (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:512
+msgid "Option setting error: Unknown option or invalid value for option type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:606
+msgid "Choose a file to parse"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:639
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:643
+#, fuzzy
+msgid "Failed to load the file '%Q' for parsing"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:715
+msgid "Missing channel list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:753
+#, c-format
+msgid "You don't appear to be on channel %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:802
+msgid "Module command call failed: can't load the module 'snd'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:809
+msgid ""
+"Module command call failed: the module 'snd' doesn't export a command named "
+"'play'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:864
+msgid "Popup %Q is not defined"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:872
+msgid "A popup menu cannot be popped up twice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:897
+#, fuzzy
+msgid "Invalid syntax for screen coordinates, using cursor position"
+msgstr "Błędny margines"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1011
+msgid "Empty target specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:97
+msgid "[RAW]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1237
+#, fuzzy
+msgid "Window with id %Q not found: no rebinding performed"
+msgstr "Tekst nie odnaleziony"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1330
+#, fuzzy
+msgid "Failed to execute command '%Q'"
+msgstr "Brak takiej komendy w module"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:242
+#, fuzzy
+msgid "Missing alias name"
+msgstr "Brak nazwy zmiennej"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:253
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:889
+msgid ""
+"Alias names can contain only letters, digits, underscores and '::' namespace "
+"separators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:903
+msgid ""
+"Stray ':' character in alias name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:914
+msgid "Found an empty namespace in alias name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:277
+msgid "The alias %Q is not existing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:436
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:413
+msgid "The specified window has no button containers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:447
+#, fuzzy
+msgid "Window button '%Q' not found"
+msgstr "Tekst nie odnaleziony"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:445
+#, fuzzy
+msgid "Can't find the icon '%Q'"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:532
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:540
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1197
+#, fuzzy
+msgid "No such event (%Q)"
+msgstr "&Nowy kontekst irc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:552
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1222
+msgid "No handler '%Q' for raw numeric event '%d'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1248
+msgid "No handler '%Q' for event '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:936
+msgid "The specified ping time is invalid: assuming zero (no ping)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:946
+msgid "The specified maximum run time is invalid: assuming zero (infinite)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:965
+msgid "Failed to start the process"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1010
+msgid "The specified object does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1113
+msgid "Missing timer name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1122
+msgid "Missing timeout delay"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1129
+#, fuzzy
+msgid "The timeout delay didn't evaluate to an integer"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1152
+msgid "Unable to add the timer: insufficient system resources"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_eventmanager.cpp:503
+msgid "Event handler %Q is broken: disabling"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_moduleinterface.cpp:166
+msgid "Can't unload the module: it has locked itself in memory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:123
+#, fuzzy
+msgid "Unknown binary operator '=%q': did you mean '==' ?"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:221
+#, fuzzy
+msgid "Unknown binary operator '%q'"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:305
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:371
+#, fuzzy
+msgid "Unexpected end of script in expression"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:451
+msgid ""
+"Unexpected character %q (unicode %h) in expression. If it meant to be a "
+"string use the quotes."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:466
+#, fuzzy
+msgid "Unexpected empty expression operand"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:91
+msgid "say: injected commandline"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:94
+msgid "Say parse error: Broken command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:250
+msgid ""
+"Couldn't find a suitable IRC context for the connection, try using -n or -u"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:259
+msgid "Another connection is already in progress in the selected IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:369
+msgid "No menu bar item with text '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:383
+#, fuzzy
+msgid "Invalid index specified: ignored"
+msgstr "Nie podano indeksu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:392
+msgid "The popup '%Q' is not defined"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:604
+msgid "No target channel specified and the current window is not a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:705
+msgid "No catalogue %Q for the current language found"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:744
+msgid "The catalogue %Q was not loaded"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:80
+msgid ""
+"Empty window identifier specified in the standard rebinding switch: no "
+"rebinding performed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:91
+msgid ""
+"Invalid window specified in the standard rebinding switch: no rebinding "
+"performed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:94
+#, fuzzy
+msgid ""
+"The left side of the scope operator didn't evaluate as an object reference"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:100
+#, fuzzy
+msgid ""
+"The left side of the scope operator evaluated to a null object reference"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:107
+msgid ""
+"The left side of the scope operator evaluated to an invalid object reference "
+"(object doesn't exist)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayreferenceassert.cpp:77
+msgid "Array reference assert failed: the variable evaluated to type '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:247
+msgid "Operand of unary operator didn't evaluate to a number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:415
+#, fuzzy
+msgid "Left operand didn't evaluate to a number"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:422
+#, fuzzy
+msgid "Right operand didn't evaluate to a number"
+msgstr "Prawy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:547
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:575
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:583
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:374
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:66
+msgid "Division by zero"
+msgstr "Dzielenie przez zero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:107
+#, c-format
+msgid "line %d, near character %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:187
+msgid "This command can be used only in windows bound to an IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:193
+#, fuzzy
+msgid "You're not connected to an IRC server"
+msgstr "Nie jesteś połączony z serwerem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:199
+#, fuzzy
+msgid "Missing parameter"
+msgstr "Brak nazwy zmiennej"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:128
+msgid "Hash key evaluated to empty string: fix the script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:99
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:144
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash automatic "
+"conversion from %Q supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashreferenceassert.cpp:77
+msgid "Hash reference assert failed: the variable evaluated to type '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:100
+#, fuzzy
+msgid "Failed to send an unknown command as /raw"
+msgstr "Nieznana komenda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:104
+#, fuzzy
+msgid "Call to undefined command '%Q'"
+msgstr "Brak takiej komendy w module"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:116
+msgid "Error in inner alias command call '%Q', called from this context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:74
+msgid "There are no extended scope variables in this scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:111
+#, fuzzy
+msgid "Missing class name"
+msgstr "Brak nazwy zmiennej"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:120
+msgid "A class can't be a subclass of itself"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:127
+msgid "Couln't find base class named \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:137
+msgid ""
+"Detected a loop in the inheritance tree of the base class \"%Q\": redefine "
+"that class first"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:146
+msgid "Can't override the builtin class \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:71
+msgid "Module command call failed: can't load the module '%Q': %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:77
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a command named '%"
+"Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:113
+msgid "Broken condition in menu setup: assuming false"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:220
+msgid "Broken icon parameter: ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:228
+#, fuzzy
+msgid "Can't find the icon \"%Q\": ignoring"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:244
+msgid "Broken text parameter: assuming empty string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:486
+msgid "Recursive definition detected for popup '%Q': ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:500
+msgid "Can't find the external popup '%Q'; ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:853
+msgid "Broken prologue in popup menu '%Q': ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:868
+msgid "Broken epilogue in popup menu '%Q': ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:70
+msgid "Module function call failed: can't load the module '%Q': %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:77
+msgid ""
+"Module function call failed: the module '%Q' doesn't export a function named "
+"'%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_timermanager.cpp:244
+msgid "Timer '%Q' has a broken callback handler: killing the timer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:229
+#, fuzzy
+msgid "The target variable didn't evaluate to an integer or real value"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:283
+#, fuzzy
+msgid "The right side of operator '&=' didn't evaluate to an integer"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:294
+#, fuzzy
+msgid "The left side of operator '&=' didn't evaluate to an integer"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:353
+#, fuzzy
+msgid "The right side of operator '/=' didn't evaluate to a number"
+msgstr "Prawy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:364
+#, fuzzy
+msgid "The left side of operator '/=' didn't evaluate to a number"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:446
+#, fuzzy
+msgid "The right side of operator '%=' didn't evaluate to a number"
+msgstr "Prawy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:457
+#, fuzzy
+msgid "The left side of operator '%=' didn't evaluate to a number"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:541
+#, fuzzy
+msgid "The right side of operator '*=' didn't evaluate to a number"
+msgstr "Prawy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:552
+#, fuzzy
+msgid "The left side of operator '*=' didn't evaluate to a number"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:620
+#, fuzzy
+msgid "The right side of operator '|=' didn't evaluate to an integer"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:631
+#, fuzzy
+msgid "The left side of operator '|=' didn't evaluate to an integer"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:691
+#, fuzzy
+msgid "The right side of operator '<<=' didn't evaluate to an integer"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:702
+#, fuzzy
+msgid "The left side of operator '<<=' didn't evaluate to an integer"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:763
+#, fuzzy
+msgid "The right side of operator '>>=' didn't evaluate to an integer"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:774
+#, fuzzy
+msgid "The left side of operator '>>=' didn't evaluate to an integer"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:840
+#, fuzzy
+msgid "The right side of operator '-=' didn't evaluate to a number"
+msgstr "Prawy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:851
+#, fuzzy
+msgid "The left side of operator '-=' didn't evaluate to a number"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:923
+#, fuzzy
+msgid "The right side of operator '+=' didn't evaluate to a number"
+msgstr "Prawy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:934
+#, fuzzy
+msgid "The left side of operator '+=' didn't evaluate to a number"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1009
+#, fuzzy
+msgid "The right side of operator '^=' didn't evaluate to an integer"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1020
+#, fuzzy
+msgid "The left side of operator '^=' didn't evaluate to an integer"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1462
+msgid ""
+"The regular expression matched a zero-length substring: this is not valid in "
+"the s/// operator, skipping"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:52
+#, fuzzy
+msgid "Unexpected end of script after '$' function call prefix"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:53
+msgid "Unexpected character %q (unicode %x) after '$' function call prefix"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:54
+msgid ""
+"Syntax error after '$' function call prefix. If you want to use a plain '$' "
+"in the code you need to escape it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:63
+msgid "Invalid expression evaluation in object scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:78
+msgid "Invalid command evaluation in object scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:87
+msgid "Empty instruction block for command evaluation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:101
+msgid ""
+"Parameter identifiers are forbidden in object scope (after the '->' operator)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:147
+msgid ""
+"Ending index of a multiple parameter identifier is lower or equal to the "
+"starting index. This will evaluate to a single parameter identifier."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:163
+msgid "Syntax error: invalid $$ ($this) function call in object scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:189
+msgid "Syntax error: malformed alias function call identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:197
+msgid "Syntax error: malformed (alias?) function call identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:307
+#, fuzzy, c-format
+msgid "Invalid data type for parameter \"%s\""
+msgstr "Błędny parametr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:122
+#, c-format
+msgid "found empty string where type '%s' was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:129
+#, fuzzy
+msgid "found string value \"%Q\" where type '%s' was expected"
+msgstr "Niespodziewany znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:134
+#, fuzzy
+msgid "found type %Q where type '%s' was expected"
+msgstr "Niespodziewany znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:154
+#, fuzzy, c-format
+msgid "Missing non-optional parameter \"%s\""
+msgstr "Brak nazwy zmiennej"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:282
+msgid "found empty string while a non empty one was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:309
+#, c-format
+msgid "found signed integer \"%d\" where type 'unsigned integer' was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:253
+msgid "This window has no associated IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:483
+#, fuzzy, c-format
+msgid "No such IRC context (%u)"
+msgstr "&Nowy kontekst irc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:471
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:586
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:494
+msgid "This window is not associated to an IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:809
+msgid ""
+"The specified format string wasn't accepted by the underlying system time "
+"formatting function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:70
+msgid "Unterminated c-style multiline comment"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:71
+#, fuzzy
+msgid "Unexpected end of script in multiline comment"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:88
+msgid ""
+"Unexpected character '%q' (unicode %x) after a slash (it is a typo or a "
+"malformed comment begin ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:71
+msgid "Call to undefined function '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:79
+msgid "Error in inner alias function call '%Q', called from this context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:73
+#, fuzzy
+msgid "Array index didn't evaluate to an integer"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:79
+msgid ""
+"Array index evaluated to a negative integer (non negative integer expected)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:106
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from %Q supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:142
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:219
+#, fuzzy
+msgid "Lag meter was not enabled"
+msgstr "Prawy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:546
+#, fuzzy
+msgid "No such event handler (%Q) for event %Q"
+msgstr "&Nowy kontekst irc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands.cpp:153
+msgid "This is not a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:99
+#, fuzzy
+msgid ""
+"Unexpected end of command buffer while looking for the \"perl.end\" statement"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:147
+msgid "Trailing garbage at the end of the break command: ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:209
+msgid "The 'unset' command needs a variable list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:280
+#, fuzzy
+msgid "Found character %q (unicode %x) where a variable was expected"
+msgstr "Niespodziewany znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:219
+msgid "'unset' command used without a variable list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:279
+msgid "The 'global' command needs a variable list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:631
+msgid "Found character %q (unicode %x) where an open parenthesis was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:439
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:538
+#, fuzzy
+msgid "Unexpected end of buffer in class definition"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:474
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:501
+#, fuzzy
+msgid "Found character %q (unicode %x) where a function name was expected"
+msgstr "Niespodziewany znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:522
+#, fuzzy
+msgid "Unexpected end of buffer in function parameter list reminder"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:630
+msgid "The while command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:654
+msgid ""
+"The last while command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:655
+#, fuzzy
+msgid ""
+"Unexpected end of script while looking for the instruction block of the "
+"while command"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:741
+#, fuzzy
+msgid ""
+"Unexpected end of command after the 'do' command block: expected 'while' "
+"keyword"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:743
+#, fuzzy
+msgid "Found character %q (unicode %x) where a 'while' keyword was expected"
+msgstr "Niespodziewany znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:759
+msgid ""
+"The 'while' block of the 'do' command needs an expression enclosed in "
+"parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:779
+msgid "Garbage string after the expression in 'do' command: ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:825
+msgid "The 'if' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:850
+msgid ""
+"The last if command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:851
+#, fuzzy
+msgid ""
+"Unexpected end of script while looking for the instruction block of the if "
+"command"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:966
+#, fuzzy
+msgid ""
+"Unexpected end of buffer while looking for the closing ')' in the 'for' "
+"command"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1015
+msgid "The 'for' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1092
+msgid ""
+"Found char %q (unicode %x) while looking for the terminating ')' in 'for' "
+"command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1122
+msgid "Empty infinite 'for' loop: fix the script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1181
+msgid "The 'foreach' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1205
+msgid ""
+"The 'foreach' command expects a writeable iteration variable as first "
+"parameter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1196
+#, fuzzy
+msgid ""
+"Found character '%q' (unicode %x) where '%' or '$' was expected: see /help "
+"foreach for the command syntax"
+msgstr "Niespodziewany znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1207
+msgid "Unexpected function call as 'foreach' iteration variable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1209
+msgid "Unexpected read-only variable as 'foreach' iteration variable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1219
+msgid ""
+"Unexpected end of 'foreach' parameters: at least one iteration data argument "
+"must be given"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1223
+msgid ""
+"The 'foreach' command expects a comma separated list of iteration data items "
+"after the first parameter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1244
+msgid ""
+"Found empty 'foreach' execution block: maybe you need to fix your script ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1365
+msgid "The 'switch' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1415
+#, fuzzy
+msgid "Unexpected end of buffer in switch condition block"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1422
+#, fuzzy
+msgid ""
+"Found character %q (unicode %x) where a 'case','match','regexp','default' or "
+"'break' label was expected"
+msgstr "Niespodziewany znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1460
+msgid ""
+"Found 'break' label where a 'case','match','regexp' or 'default' label was "
+"expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1465
+msgid ""
+"Found token '%Q' where a 'case','match','regexp','default' or 'break' label "
+"was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1528
+msgid "Senseless empty switch command: fix the script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1562
+#, fuzzy
+msgid "Unexpected end of buffer in defpopup block"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1569
+#, fuzzy
+msgid ""
+"Found character %q (unicode %x) where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr "Niespodziewany znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1668
+msgid "Found empty prologue block: maybe you need to fix the script?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1670
+msgid "Found empty epilogue block: maybe you need to fix the script?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1703
+msgid ""
+"Unexpected empty <text> field in label parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1753
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1801
+msgid ""
+"Unexpected empty <text> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1777
+msgid ""
+"Found empty instruction for popup item: maybe you need to fix the script?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1809
+msgid ""
+"Unexpected empty <name> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1821
+msgid ""
+"Found token '%Q' where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1931
+msgid "The 'defpopup' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:109
+msgid "beginning of input"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:121
+#, fuzzy
+msgid ""
+"Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %s"
+"\" for the command syntax"
+msgstr "Niespodziewany znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:124
+#, fuzzy, c-format
+msgid ""
+"Found end of input where character '%c' was expected: see \"/help %s\" for "
+"the command syntax"
+msgstr "Niespodziewany znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:197
+#, fuzzy
+msgid "Empty script"
+msgstr "Pusty łańcuch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2650
+msgid ""
+"Syntax error after '%' variable prefix. If you want to use a plain '%' in "
+"the code you need to escape it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2667
+msgid "Objects have no extended scope variables"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2727
+msgid "Found character '%q' (unicode %x) where an instruction was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2760
+#, fuzzy
+msgid "Unterminated instruction block"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2761
+#, fuzzy
+msgid "Unexpected end of script in instruction block (missing closing brace)"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2838
+msgid ""
+"The dash after a command should be followed by a letter (switch), by a digit "
+"(negative number) or be escaped"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2842
+#, fuzzy
+msgid "Unexpected character '%q' (unicode %x) after a switch dash"
+msgstr "Niespodziewany znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2844
+#, fuzzy
+msgid "Unexpected end of script after a switch dash"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2869
+msgid ""
+"The above problem might be related to the switch dash and the following "
+"equal sign"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2948
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3016
+#, fuzzy
+msgid "Unexpected end of script in parameter list"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2954
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3022
+#, fuzzy
+msgid "Unexpected end of line in parameter list"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3083
+msgid ""
+"Nested character %q corresponding to expected terminator, this might confuse "
+"me a bit: it is a good idea to enclose it in quotes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3093
+msgid "Skipping nested terminator character %q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3120
+msgid "Stray backslash at the end of the script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3393
+msgid "Unterminated hash key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3387
+#, fuzzy
+msgid "Unexpected end of script in hash key (missing '}' character ?)"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3394
+msgid ""
+"Unexpected end of line in hash key (missing '}' character or unescaped "
+"newline)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3679
+msgid "Unterminated string constant"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3673
+#, fuzzy
+msgid "Unexpected end of script in string constant (missing \" character ?)"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3680
+msgid ""
+"Unexpected end of line in string constant (missing \" character or unescaped "
+"newline)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_processmanager.cpp:225
+msgid "Error triggered from process callback handler: killing process"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arraycount.cpp:72
+msgid ""
+"The argument of the array count '#' operator didn't evaluate to an array: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:197
+msgid "This window has no associated IRC context and is not a DCC chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:293
+msgid "Class \"%Q\" is not defined"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:303
+msgid "The specified parent object does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:430
+msgid "There is no option named '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:85
+msgid "Internal error: pure virtual evaluateReadOnly called"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:91
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:104
+msgid ""
+"Internal error: trying to evaluate as read-write a read-only data location"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:98
+msgid "Internal error: pure virtual evaluateReadOnlyInObjectScope called"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:215
+msgid "[KVS]%c Warning: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:211
+msgid "[KVS]%c Compilation Error: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:219
+msgid "[KVS]%c Runtime Error: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:224
+msgid "[KVS] in script context \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:226
+msgid "[KVS] in script context \"%Q\", %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:233
+msgid "[KVS] Code listing:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:238
+#, fuzzy
+msgid "[KVS] Window:"
+msgstr "&Okno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:242
+#, c-format
+msgid "[KVS] Destroyed window with pointer %x"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:246
+msgid "[KVS] Call stack:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:464
+#, c-format
+msgid "Window with ID '%s' not found, returning empty string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:130
+msgid "The specified window is not a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:392
+msgid "The $sw() function can be used only in aliases"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:302
+#, fuzzy
+msgid "Invalid pitch value: using default"
+msgstr "Nieprawidłowy indeks (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:312
+#, fuzzy
+msgid "Invalid duration value: using default"
+msgstr "Nieprawidłowy indeks (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:421
+msgid "No button with type %Q named %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:632
+#, fuzzy
+msgid "Can't delete a null object reference"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:638
+#, fuzzy
+msgid "Can't delete an inexisting object"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:692
+msgid "Inexisting popup \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:698
+msgid ""
+"Popup menu self-modification is not allowed (the popup is probably open)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:705
+msgid "The menu item with id \"%Q\" does not exist in popup \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:860
+msgid ""
+"The argument of the -w switch did not evaluate to a valid window id: using "
+"default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:869
+msgid ""
+"The argument of the i switch did not evaluate to a number: using default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:981
+msgid "Invalid color-set specification, using default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:992
+#, c-format
+msgid "Window '%s' not found, using current one"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:78
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a callback "
+"command named '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp:401
+#, c-format
+msgid "The popup '%s' is actually locked: 'self-modifications' are not allowed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:822
+#, fuzzy, c-format
+msgid "Ignoring DCC from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:839
+#, fuzzy, c-format
+msgid "Ignoring CTCP from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:978
+msgid "The following CTCP reply has unrecognized target %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1025
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1128
+msgid "Channel CTCP"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:988
+#, fuzzy
+msgid "%Q %Q reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1018
+msgid "The following CTCP request has unrecognized target %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1032
+msgid ""
+"%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignored (flood limit "
+"exceeded)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1036
+msgid "ignored (unrecognized)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "replied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1041
+msgid "%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1079
+msgid "The following CTCP PING reply has unrecognized target \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1113
+#, c-format
+msgid ""
+"The following CTCP PING reply has a broken time identifier \"%S\", don't "
+"trust the displayed time"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1132
+msgid "%Q PING reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sec %u msec"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1466
+msgid "The following CTCP ACTION has unrecognized target %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1471
+msgid "CTCP ACTION from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1517
+msgid "Unable to add file offer for file %Q (File not readable?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1521
+msgid "Added %d sec file offer for file %Q (%Q) to recipient %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "private"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "channel notification:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1579
+msgid "notification"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1584
+#, fuzzy
+msgid "%Q unsets avatar"
+msgstr "Obraz Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1591
+msgid "%Q changes avatar to %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1637
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (HTTP GET %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1644
+msgid ""
+": No valid local copy of avatar available; failed to start an HTTP transfer, "
+"ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1652
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (DCC GET %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1664
+msgid ""
+": No valid local copy of avatar available; flood limit exceeded, ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1669
+msgid ": No valid local copy of avatar available, ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1677
+msgid ": No such nickname in the user database, ignoring the change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1717
+msgid "Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1759
+msgid "Processing DCC %Q request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1770
+#, c-format
+msgid "Unable to process the above request: Cannot load DCC module (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1776
+msgid "Unable to process the above request: DCC module may be broken"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:132
+msgid ""
+"[Server parser]: Encountered problems while parsing the following message:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:134
+msgid "[Server parser]: [%s][%s] %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:136
+#, c-format
+msgid "[Server parser]: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:98
+msgid "Received ping from \r!s\r%Q\r (PING %Q), replied pong"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:125
+#, c-format
+msgid "Received pong from \r!s\r%s\r (PONG %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:151
+#, fuzzy
+msgid "Server ERROR: %Q"
+msgstr "Serwer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:174
+msgid "Missing channel parameter in join message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:209
+msgid "Received a join message for an unknown channel, possible desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:305
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r [implicit +%c umode change]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:310
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:324
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just joined \r!c\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:355
+msgid "Received a part message for an unknown channel, possible desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:384
+msgid "You have left channel \r!c\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:386
+msgid "You have left channel \r!c\r%Q\r: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:402
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:406
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:420
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:424
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:494
+#, c-format
+msgid "Netsplit detected: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:546
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:562
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:589
+msgid "Received a kick message for an unknown channel, possible desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:626
+msgid "You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:633
+msgid "Attempting to rejoin \r!c\r%Q\r..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:670
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@"
+"\r!h\r%Q\r]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:682
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just been kicked from \r!c\r%Q\r by \r!n\r%Q"
+"\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:710
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:776
+#, fuzzy
+msgid "Ignoring query-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:843
+msgid ""
+"Spam privmsg from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%s\")"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:984
+#, fuzzy
+msgid "Ignoring channel-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1106
+#, fuzzy
+msgid "Ignoring Notice from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1159
+msgid "NickServ requests authentication, executing scheduled command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1162
+msgid ""
+"The scheduled NickServ identification command appears to be broken, please "
+"change the setting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1213
+msgid ""
+"Spam notice from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%Q\")"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1394
+msgid "Received a topic message for an unknown channel, possible desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1413
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has changed topic to \"%Q%c\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1512
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1063
+msgid "You have changed your nickname to %Q"
+msgstr "Zmieniłeś swój nickname na %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1477
+msgid ""
+"The target of this query was lost and has been found when \r!n\r%Q\r [%Q@\r!h"
+"\r%Q\r] changed his nickname to \r!n\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1486
+msgid ""
+"The recent nickname change from \r!n\r%Q\r to \r!n\r%Q\r caused a query "
+"collision: merging output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1495
+msgid "End of merged output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1540
+#, fuzzy
+msgid "Ignoring invite from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "autojoining"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "double-click the channel name to join"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1556
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] invites you to channel \r!c\r%Q\r (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1564
+msgid "Received an invite message directed to another nick, possible desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1584
+msgid "WALLOPS from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1648
+#, c-format
+msgid "You have set user mode %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1655
+msgid "Received a mode change for an unknown channel, possible desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1731
+msgid "%Q [%Q@%Q] has set channel key to \"\r!m-k\r%Q\r\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1734
+msgid "%Q [%Q@%Q] has unset the channel key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1754
+msgid "%Q [%Q@%Q] has set channel \r!m-l\rlimit to %Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1757
+msgid "%Q [%Q@%Q] has unset the channel limit"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1779
+msgid "%Q [%Q@%Q] has set mode %c%c \r!n\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1787
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1834
+msgid "%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1819
+msgid "%Q [%Q@%Q] has set mode %c%c \r!m%c%c\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1860
+msgid "%Q [%Q@%Q] has set mode %s %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1863
+msgid "%Q [%Q@%Q] has set channel mode %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:147
+#, c-format
+msgid ""
+"One or more standard mode flags are missing in the server available modes.\n"
+"This is caused either by a non RFC1459-compliant IRC daemon or a broken "
+"server reply.\n"
+"Server umodes seem to be '%s' and channel modes seem to be '%s'.\n"
+"Ignoring this reply and assuming that the basic set of modes is available.\n"
+"If you have strange problems, try changing the server."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:159
+msgid "Available user modes:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:169
+#, fuzzy
+msgid ": Unknown user mode"
+msgstr "Nieznany tryb wyświetlania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:177
+msgid "Available channel modes:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:197
+msgid "Server %Q version %S supporting user modes '%S' and channel modes '%S'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:244
+msgid "This server supports the WATCH notify list method, it will be used"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:262
+msgid "The current network is %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:303
+msgid "This server supports the CODEPAGE command, it will be used"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:319
+#, c-format
+msgid "This server supports: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:375
+msgid "End of NAMES for \r!c\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:472
+#, fuzzy
+msgid "Names for \r!c\r%Q\r: %Q"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:487
+#, fuzzy
+msgid "(unknown)"
+msgstr "nieznany"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:491
+#, fuzzy
+msgid "Channel topic is: %Q"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:498
+#, fuzzy
+msgid "Topic for \r!c\r%Q\r is: %Q"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:516
+msgid "No channel topic is set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:521
+#, fuzzy
+msgid "No topic is set for channel \r!c\r%Q\r"
+msgstr "Brak wartości do wstawienia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:560
+#, fuzzy
+msgid "Topic was set by %Q on %Q"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:561
+#, fuzzy
+msgid "Topic was set by %Q"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:569
+#, fuzzy
+msgid "Topic for \r!c\r%Q\r was set by %Q on %Q"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:572
+#, fuzzy
+msgid "Topic for \r!c\r%Q\r was set by %Q"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:592
+#, fuzzy
+msgid "Channel mode for \r!c\r%Q\r is %s"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:595
+#, fuzzy
+msgid "User mode for \r!n\r%Q\r is %s"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:631
+#, fuzzy
+msgid "End of channel %Q for \r!c\r%Q\r"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:635
+msgid "ban list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:636
+msgid "invite list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:637
+msgid "ban exception list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:658
+#, fuzzy
+msgid "%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:665
+msgid "Ban listing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:668
+#, fuzzy
+msgid "Invite listing"
+msgstr "Interfejs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:671
+msgid "Ban exception listing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:740
+msgid ""
+"WHO entry for %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cChannel%c: \r!c\r%Q\r, %"
+"cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAway%c: %Q, %cReal name"
+"%c: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:797
+msgid "End of WHO list for %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:856
+msgid ""
+"Something really weird is happening: the server is refusing all the login "
+"nicknames..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:861
+msgid ""
+"The server is refusing all the login nicknames: giving up, you must send the "
+"nickname manually"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:871
+msgid "No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:945
+msgid "Command syntax %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:973
+#, fuzzy
+msgid "Tip: %Q"
+msgstr "&Połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:976
+#, fuzzy
+msgid "Tip for %Q: %Q"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:993
+#, fuzzy
+msgid "End of help about %Q"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1037
+msgid "%c\r!n\r%Q\r%c is away: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1090
+msgid "%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1095
+msgid "%c\r!n\r%Q\r%c's real name: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1115
+msgid "%c\r!n\r%Q\r%c was %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1119
+msgid "%c\r!n\r%Q\r%c's real name was: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1183
+msgid "%c\r!n\r%Q\r%c's channels: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1220
+msgid "Received a broken RPL_WHOISIDLE, can't evaluate the idle time"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1230
+msgid "%c\r!n\r%Q\r%c's idle time: %ud %uh %um %us"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1240
+msgid "%c\r!n\r%Q\r%c's signon time: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1274
+msgid "%c\r!n\r%Q\r%c's server: \r!s\r%Q\r - %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1293
+msgid "%c\r!n\r%Q\r%c is authenticated as %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1325
+msgid "%c\r!n\r%Q\r%c's info: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1372
+msgid "%c\r!n\r%Q\r%c WHOIS info from \r!s\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1389
+msgid "%c\r!n\r%Q\r%c WHOWAS info from \r!s\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1457
+msgid "Can't evaluate creation time"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1465
+msgid "Channel was created at %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1470
+msgid "Channel \r!c\r%Q\r was created at %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1511
+msgid "USERHOST info: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1532
+msgid "Channel list begin: channel, users, topic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1559
+#, fuzzy
+msgid "List: %Q"
+msgstr "&Połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1573
+msgid "End of LIST"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1597
+msgid "Link: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1612
+msgid "End of LINKS"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1641
+msgid "[Leaving away status after %ud %uh %um %us]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1645
+msgid "[Leaving away status]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1652
+msgid "Restoring pre-away nickname (%Q)"
+msgstr "Znajdowanie hosta %Q..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1672
+msgid "[Entering away status]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1690
+msgid "Setting away nickname (%Q)"
+msgstr "Znajdowanie hosta %Q..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1762
+#, c-format
+msgid "%c\r!s\r%s\r%c's server info: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1773
+#, c-format
+msgid "%c\r!s\r%s\r%c's administrator is %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1784
+#, c-format
+msgid "%c\r!s\r%s\r%c's contact adress is %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1812
+msgid "\r!n\r%Q\r invited %Q into channel %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1834
+#, c-format
+msgid "%c\r!s\r%s\r%c's information:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1844
+#, c-format
+msgid "End of %c\r!s\r%s\r%c's information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1855
+msgid "%c\r!s\r%s\r%c's time is %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1866
+msgid "%Q: no such server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1877
+msgid "%Q: no such channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1891
+#, fuzzy
+msgid "Cannot sent to channel: %Q"
+msgstr "Brak wartości do wstawienia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1894
+msgid "Cannot sent text to channel %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1909
+#, fuzzy
+msgid "Cannot sent to channel"
+msgstr "Pokazuj skrócone zmiany trybów"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1912
+#, fuzzy
+msgid "Cannot sent text to channel %Q"
+msgstr "Brak wartości do wstawienia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1928
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1936
+msgid "Your encoding is now %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1967
+msgid "%c\r!n\r%Q\r%c's codepage is %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1991
+#, c-format
+msgid "Your user mode is %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:158
+msgid "Failed to set the encoding to %Q: mapping not available."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:175
+#, fuzzy
+msgid "Changed text encoding to %Q"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:503
+#, fuzzy
+msgid "Connection to server lost"
+msgstr "Połączenie przerwane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:512
+#, fuzzy
+msgid "Connection to server established"
+msgstr "Połączenie przerwane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:573
+msgid "[LINK WARNING]: Socket message truncated to 512 bytes."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:640
+msgid ""
+"The server seems to support the WATCH notify list method, will try to use it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:688
+msgid "Can't resolve local host address, using user supplied one (%Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:695
+msgid "Can't resolve local host address, using default 127.0.0.1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:701
+msgid "Local host address is %Q"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:749
+msgid "The server seems to have changed the idea about the local hostname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:750
+msgid ""
+"You're probably using a broken bouncer or maybe something weird is happening "
+"on the IRC server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:776
+msgid ""
+"Here goes your \"broken bouncer hack\": The server has changed the hostname "
+"but I'll ignore the IP address change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:791
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:801
+msgid "The local IP address as seen by the IRC server is %Q"
+msgstr "Znajdowanie hosta %Q..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:815
+msgid "Can't start the DNS slave thread"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:816
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:846
+msgid "Unable to resolve the local hostname as seen by the IRC server: %Q"
+msgstr "Znajdowanie hosta %Q..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:822
+#, fuzzy
+msgid "Looking up the local hostname as seen by the IRC server (%Q)"
+msgstr "Znajdowanie hosta %s..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:843
+#, fuzzy
+msgid ""
+"Unable to resolve the local hostname as seen by the IRC server: %Q, using "
+"previously resolved %Q"
+msgstr "Znajdowanie hosta %s..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:850
+#, fuzzy
+msgid "Local hostname as seen by the IRC server resolved to %Q"
+msgstr "Znajdowanie hosta %s..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:868
+msgid "Using server specific username (%Q)"
+msgstr "Znajdowanie hosta %Q..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:873
+msgid "Using network specific username (%Q)"
+msgstr "Znajdowanie hosta %Q..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:892
+#, fuzzy
+msgid "Using reconnect specific nickname (%Q)"
+msgstr "Znajdowanie hosta %Q..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:898
+msgid "Using server specific nickname (%Q)"
+msgstr "Znajdowanie hosta %Q..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:905
+msgid "Using network specific nickname (%Q)"
+msgstr "Znajdowanie hosta %Q..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:922
+msgid "Using server specific real name (%Q)"
+msgstr "Znajdowanie hosta %Q..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:929
+msgid "Using network specific real name (%Q)"
+msgstr "Znajdowanie hosta %Q..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:946
+msgid "Logging in as %Q!%Q :%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:962
+#, c-format
+msgid "Sending %s as password"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1033
+msgid "Executing scheduled network specific \"on connect\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1042
+msgid "Executing scheduled server specific \"on connect\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1051
+msgid "Executing scheduled identity specific \"on connect\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1101
+#, c-format
+msgid "The server refused the suggested nickname (%s) and named you %s instead"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1113
+msgid "Login operations complete, happy ircing!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1123
+msgid "Executing scheduled network specific \"on login\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1132
+msgid "Executing scheduled server specific \"on login\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1141
+msgid "Executing scheduled identity specific \"on login\" commands"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1153
+msgid "Setting configured user mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1210
+#, fuzzy
+msgid "Auto-joining network specific channels"
+msgstr "Znajdowanie hosta %s..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1244
+#, fuzzy
+msgid "Auto-joining server specific channels"
+msgstr "Znajdowanie hosta %s..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1341
+#, fuzzy
+msgid "Updating away state for channel %Q"
+msgstr "Brak wartości do wstawienia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_customtoolbardescriptor.cpp:230
+msgid "Backward compatibility action for toolbar.define"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:790
+msgid "Installation problems ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:791
+msgid ""
+"<b>Ooops...</b><br><br><b>There are some reasons that make me think that "
+"your KVIrc installation is incomplete.</b><br><br>I might be wrong, but you "
+"seem to miss some of the features that the default KVIrc script provides."
+"This may happen because you have upgraded to an unstable cvs version, "
+"because you have accidentally deleted or damaged your configuration files, "
+"because you have installed an incomplete script or because you have hit a "
+"bug in KVIrc.<br><br>I can repeat the installation of the default script in "
+"order to restore the missing features.<br><b>Do you want the default script "
+"to be restored ?</b><br><br><font size=\"-1\">Hint: If you're a scripter and "
+"have intentionally removed some of the scripting features then you may "
+"safely click on \"No and Don't Ask Me Again\", otherwise it might be a good "
+"idea to click \"Yes\". If you still want to choose \"No\" you can always "
+"restore the default script by choosing the appropriate entry from the "
+"\"Scripting\" menu.</font>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:805
+msgid "No and Don't Ask Me Again"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:828
+msgid "Restore Default Script - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:829
+msgid ""
+"You are about to restore the default script.<br>This will erase any script "
+"changes you have made.<br>Do you wish to proceed?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:872
+#, c-format
+msgid "Remote command received (%s ...)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1033
+msgid "File download failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1035
+msgid "File download from %1 failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1044
+msgid "File download successfully complete"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1046
+msgid "File download from %1 successfully complete"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1066
+msgid "Avatar download failed for %Q!%Q@%Q and url %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2014
+#, c-format
+msgid "The commandline for media type '%s' seems to be broken"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2018
+#, c-format
+msgid "Media type of file %s matched to '%s' but no commandline specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2023
+#, c-format
+msgid "No idea on how to play file %s (no media type match)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:39
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:48
+#, c-format
+msgid "[SSL]: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:40
+#, c-format
+msgid "[SSL]: Cipher: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:41
+#, c-format
+msgid "[SSL]: Version: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:42
+#, c-format
+msgid "[SSL]: Bits: %c%d (%d used)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:49
+#, c-format
+msgid "[SSL]: Version: %c%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:50
+#, c-format
+msgid "[SSL]: Serial number: %c%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:51
+msgid "[SSL]: Subject:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:59
+#, c-format
+msgid "[SSL]: Common name: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:60
+#, c-format
+msgid "[SSL]: Organization: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:61
+#, c-format
+msgid "[SSL]: Organizational unit: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:62
+#, c-format
+msgid "[SSL]: Country: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:63
+#, c-format
+msgid "[SSL]: State or province: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:64
+#, c-format
+msgid "[SSL]: Locality: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:58
+msgid "[SSL]: Issuer:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:65
+#, c-format
+msgid "[SSL]: Public key: %c%s (%d bits)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:66
+#, c-format
+msgid "[SSL]: Signature type: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:73
+#, c-format
+msgid "[SSL]: Signature contents: %c%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:82
+msgid "Peer X509 certificate"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:85
+msgid "[SSL]: The peer didn't provide a certificate"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1219
+msgid "Current transmission cipher"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:92
+msgid "[SSL]: Can't find out the current cipher info"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:113
+#, c-format
+msgid "[%s]: [SSL]: Using certificate file %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:116
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the certificate file %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:146
+#, c-format
+msgid "[%s]: [SSL ERROR]: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:136
+#, c-format
+msgid "[%s]: [SSL]: Using private key file %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:139
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the private key file %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:375
+#, fuzzy
+msgid "Reconnect attempt aborted"
+msgstr "Połączenie przerwane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:443
+msgid ""
+"This is the first connection in this IRC context: using the global server "
+"setting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:483
+msgid ""
+"No servers available. Check the options dialog or use the /SERVER command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:491
+msgid ""
+"Ooops.. you've hit a bug in the servers database... I have found a server "
+"but not a network..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:504
+msgid "No proxy hosts available, resuming direct connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:582
+#, fuzzy, c-format
+msgid "Connection attempt failed [%s]"
+msgstr "Połączenie przerwane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:600
+#, c-format
+msgid "Will attempt to reconnect in %d seconds"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:604
+#, c-format
+msgid "%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:606
+#, c-format
+msgid "%d of %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:633
+#, c-format
+msgid "Maximum number of reconnect attempts reached (%d): giving up"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:647
+msgid ""
+"The connection attempt failed while using a cached IP address for the "
+"current server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:648
+msgid "The problem *might* be caused by an updated DNS entry"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:649
+msgid "Try reconnecting with caching disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:673
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:382
+#, fuzzy
+msgid "%Q established [%s (%s:%u)]"
+msgstr "Połączenie przerwane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+#, fuzzy
+msgid "Secure connection"
+msgstr "Brak połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Connection"
+msgstr "Połączenie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:779
+#, fuzzy, c-format
+msgid "Connection terminated [%s (%s:%u)]"
+msgstr "Połączenie przerwane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:791
+msgid "The connection terminated unexpectedly. Trying to reconnect..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:874
+#, fuzzy
+msgid "Sent QUIT, waiting for the server to close the connection..."
+msgstr "Wysłano QUIT... oczekiwanie na zamknięcie połączenia przez serwer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:685
+msgid "Normal text"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:686
+#, fuzzy
+msgid "Selection"
+msgstr "Zaznacz wszystko"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:687
+#, fuzzy
+msgid "Highlighted text"
+msgstr "M&inimalizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:688
+msgid "URL foreground"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:689
+msgid "Link overlay foreground"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:690
+#, fuzzy
+msgid "Parser error"
+msgstr "Wewnętrzny błąd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:691
+msgid "Parser warning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:692
+msgid "Host lookup result"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:693
+msgid "Socket message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:694
+msgid "Socket warning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:695
+#, fuzzy
+msgid "Socket error"
+msgstr "&Szpieg gniazda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:696
+#, fuzzy
+msgid "System error"
+msgstr "Wewnętrzny błąd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:697
+#, fuzzy
+msgid "Raw data to server"
+msgstr "Ostatnie &serwery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:698
+#, fuzzy
+msgid "Connection status"
+msgstr "Połączenie przerwane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:699
+msgid "System warning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:700
+msgid "System message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:701
+msgid "Unhandled server reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:702
+#, fuzzy
+msgid "Server information"
+msgstr "Ogólne opcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:703
+msgid "Server Message of the Day"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:704
+#, fuzzy
+msgid "Server ping"
+msgstr "Ogólne opcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:705
+msgid "Join message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:706
+msgid "Part message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:707
+msgid "Unrecognized/broken message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:708
+msgid "Topic message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:709
+msgid "Own private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:710
+msgid "Channel private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:711
+msgid "Query private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:712
+msgid "CTCP reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:713
+msgid "CTCP request replied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:714
+msgid "CTCP request ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:715
+msgid "CTCP request flood warning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:716
+msgid "CTCP request unknown"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:717
+#, fuzzy
+msgid "User action"
+msgstr "Brak połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:718
+#, fuzzy
+msgid "Avatar change"
+msgstr "Obraz Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:719
+msgid "Quit message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:720
+msgid "Split message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:721
+msgid "Quit on netsplit message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:722
+#, fuzzy
+msgid "Nick changes"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:723
+msgid "+o mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:724
+msgid "-o mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:725
+msgid "+v mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:726
+msgid "-v mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:727
+#, fuzzy
+msgid "Multiple user mode change"
+msgstr "Pokazuj skrócone zmiany trybów"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:728
+#, fuzzy
+msgid "Channel key change"
+msgstr "Pokazuj skrócone zmiany trybów"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:729
+#, fuzzy
+msgid "Channel limit change"
+msgstr "Pokazuj skrócone zmiany trybów"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:730
+msgid "+b mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:731
+msgid "-b mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:732
+msgid "+e mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:733
+#, fuzzy
+msgid "-e mode change"
+msgstr "Pokazuj skrócone zmiany trybów"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:734
+msgid "+I mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:735
+msgid "-I mode change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:736
+#, fuzzy
+msgid "Multiple channel mode change"
+msgstr "Pokazuj skrócone zmiany trybów"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:737
+msgid "Who reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:738
+msgid "DCC request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:739
+msgid "DCC message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:740
+msgid "DCC error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:741
+msgid "Nickname problem"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:742
+msgid "Whois user reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:743
+#, fuzzy
+msgid "Whois channels reply"
+msgstr "Pokaż czas synchronizacji kanału"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:744
+msgid "Whois idle reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:745
+#, fuzzy
+msgid "Whois server reply"
+msgstr "Pokazuj pingi od serwera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:746
+msgid "Whois other reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:747
+msgid "Channel creation time reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:748
+msgid "Notify list joins"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:749
+msgid "Notify list leaves"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:750
+msgid "Own encrypted private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:751
+msgid "Channel encrypted private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:752
+msgid "Query encrypted private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:753
+msgid "DCC chat message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:754
+msgid "Encrypted DCC chat message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:755
+#, fuzzy
+msgid "Login operations completed"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:756
+msgid "Kick action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:757
+msgid "Links reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:758
+#, fuzzy
+msgid "Spam report"
+msgstr "Serwer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:759
+msgid "ICQ message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:760
+msgid "ICQ user-message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:761
+msgid "Outgoing ICQ user-message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:762
+#, fuzzy
+msgid "Channel notice"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:763
+msgid "Encrypted channel notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:764
+#, fuzzy
+msgid "Query notice"
+msgstr "Serwery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:765
+msgid "Encrypted query notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:766
+#, fuzzy
+msgid "Server notice"
+msgstr "Serwery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:767
+#, fuzzy
+msgid "Halfop mode change"
+msgstr "Pokazuj skrócone zmiany trybów"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:768
+msgid "Unknown CTCP reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:769
+msgid "NickServ message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:770
+msgid "ChanServ message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:771
+msgid "Away message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:772
+#, fuzzy
+msgid "Ident message"
+msgstr "Interfejs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:773
+msgid "Channel list message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:774
+#, fuzzy
+msgid "Half-deop mode change"
+msgstr "Pokazuj skrócone zmiany trybów"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:775
+msgid "Invite message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:776
+msgid "Multimedia message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:777
+msgid "Query trace message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:778
+msgid "Wallops message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:779
+msgid "Join error message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:780
+msgid "Broadcast private message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:781
+msgid "Broadcast notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:782
+msgid "Am kicked"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:783
+msgid "Am op'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:784
+msgid "Am voiced"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:785
+msgid "Am deop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:786
+msgid "Am devoiced"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:787
+msgid "Am halfop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:788
+msgid "Am de-halfop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:789
+msgid "Ban matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:790
+msgid "Unban matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:791
+msgid "Ban exception matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:792
+msgid "Ban unexception matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:793
+msgid "Invite exception matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:794
+msgid "Invite unexception matching my mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:795
+msgid "Ignored user message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:796
+#, fuzzy
+msgid "Server statistics"
+msgstr "Serwery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:797
+msgid "SSL message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:108
+#, fuzzy
+msgid "Search"
+msgstr "Narzędzia Irc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:799
+msgid "Generic success"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:800
+msgid "Generic status"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:801
+msgid "Generic verbose message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:802
+msgid "Generic warning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:803
+#, fuzzy
+msgid "Generic error"
+msgstr "Wewnętrzny błąd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:804
+#, fuzzy
+msgid "Generic critical error"
+msgstr "Wewnętrzny błąd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:805
+msgid "Chan admin status set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:806
+msgid "Chan admin status unset"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:807
+msgid "Own chan admin status set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:808
+msgid "Own chan admin status unset"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:809
+#, fuzzy
+msgid "Userop mode change"
+msgstr "Pokazuj skrócone zmiany trybów"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:810
+#, fuzzy
+msgid "User-deop mode change"
+msgstr "Pokazuj skrócone zmiany trybów"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:811
+msgid "Am userop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:812
+msgid "Am de-userop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:813
+msgid "Verbose/Debug"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:814
+msgid "Chan owner status set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:815
+msgid "Chan owner status unset"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:816
+msgid "Own chan owner status set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:817
+msgid "Own chan owner status unset"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:818
+#, fuzzy
+msgid "Server error"
+msgstr "Wewnętrzny błąd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:22
+#, fuzzy
+msgid "Help"
+msgstr "Po&moc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:820
+#, fuzzy
+msgid "Text Encoding Server message"
+msgstr "Wygląd tekstu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:826
+#, fuzzy
+msgid "BitTorrent message"
+msgstr "Interfejs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:970
+msgid "Missing absolute directory for the theme information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:978
+#, fuzzy
+msgid "Failed to create the theme directory"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1061
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1096
+#, fuzzy
+msgid "Failed to save one of the theme images"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1074
+#, fuzzy
+msgid "Failed to create the theme subdirectory"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1213
+msgid "Boolean options (1/0)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1214
+msgid "Rectangle options (x,y,width,height)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1215
+msgid "String options (string value)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1216
+msgid "Color options (#RRGGBB)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1217
+msgid "Mirccolor options (#RRGGBB)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1218
+msgid "Irc context color options (#RRGGBB)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1219
+msgid "Pixmap options (image path)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1220
+msgid "Unsigned integer options (unsigned integer constant)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1221
+msgid "Font options (family,pointsize,style,charset,weight,flags (biusf))"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1222
+msgid "Message color options (image_id,foreground,background,logFlag (0/1))"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1223
+msgid "String list options (comma separated list of strings)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+#, fuzzy
+msgid "IRC Context related actions"
+msgstr "&Nowy kontekst irc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+#, fuzzy
+msgid "Generic"
+msgstr "Ogólne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+#, fuzzy
+msgid "Generic actions"
+msgstr "Ogólne opcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+#, fuzzy
+msgid "Settings"
+msgstr "Centrum &skryptów"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Actions related to settings"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:30
+msgid "Scripting"
+msgstr "Skrypty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+msgid "Scripting related actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "GUI"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "Actions related to the Graphic User Interface"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:77
+msgid "Channel"
+msgstr "Kanał"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+msgid "IRC Channel related actions"
+msgstr "Nowy kontekst irc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+#, fuzzy
+msgid "Tools"
+msgstr "&Narzędzia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Actions that will appear in the \"Tools\" menu"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:157
+msgid "Sending out PING based lag probe"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:167
+msgid "Sending out CTCP based lag probe"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:188
+#, c-format
+msgid "Registered lag check with reliability %u (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:220
+#, c-format
+msgid "Lag check completed (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:259
+#, c-format
+msgid "Lag check aborted (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:143
+#, fuzzy
+msgid "Hostname resolution aborted"
+msgstr "Połączenie przerwane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:156
+#, fuzzy
+msgid "Attempting %Q to %Q (%Q) on port %u"
+msgstr "Próba nawiązania połączenia z %w (%s) na porcie %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+#, fuzzy
+msgid "secure connection"
+msgstr "Brak połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+#, fuzzy
+msgid "connection"
+msgstr "Połączenie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:165
+#, c-format
+msgid "Attempting to 'bounce' on proxy %s on port %u (protocol %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:194
+#, fuzzy, c-format
+msgid "Using cached proxy IP address (%s)"
+msgstr "Nieprawidłowy indeks (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:237
+msgid "Unable to look up the IRC proxy hostname: Can't start the DNS slave"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:265
+#, fuzzy
+msgid "Resuming direct server connection"
+msgstr "Brak połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:248
+#, fuzzy, c-format
+msgid "Looking up the proxy hostname (%s)..."
+msgstr "Znajdowanie hosta %s..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:261
+msgid "Can't find the proxy IP address: %Q"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:271
+#, fuzzy
+msgid "Proxy hostname resolved to %Q"
+msgstr "Brak nazwy hosta do odszukania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:284
+#, fuzzy
+msgid "Proxy %Q has a nickname: %Q"
+msgstr "Znajdowanie hosta %s..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:322
+#, fuzzy, c-format
+msgid "Using cached server IP address (%s)"
+msgstr "Nieprawidłowy indeks (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:354
+msgid "Unable to look up the server hostname: Can't start the DNS slave"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:359
+#, fuzzy, c-format
+msgid "Looking up the server hostname (%s)..."
+msgstr "Znajdowanie hosta %s..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:373
+msgid "Can't find the server IP address: %Q"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:380
+msgid "If this server is an IPv6 one, try /server -i %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:390
+#, fuzzy
+msgid "Server hostname resolved to %Q"
+msgstr "Brak nazwy hosta do odszukania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:400
+#, fuzzy
+msgid "Real hostname for %Q is %Q"
+msgstr "Nieprawidłowy indeks (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:414
+#, fuzzy
+msgid "Server %Q has a nickname: %Q"
+msgstr "Znajdowanie hosta %s..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:468
+msgid "The specified bind address (%Q) is not valid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:473
+msgid ""
+"The specified bind address (%Q) is not valid (the interface it refers to "
+"might be down)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:493
+#, c-format
+msgid "The system-wide IPv6 bind address (%s) is not valid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:500
+#, c-format
+msgid ""
+"The system-wide IPv6 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:522
+#, c-format
+msgid "The system-wide IPv4 bind address (%s) is not valid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:529
+#, c-format
+msgid ""
+"The system-wide IPv4 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:230
+#, fuzzy
+msgid "Channel operators"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:231
+msgid "Voiced users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:232
+#, fuzzy
+msgid "Half-operators"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:233
+msgid "Ban masks"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:234
+msgid "Color free (no ANSI colors)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:235
+msgid "Ban exception masks"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:236
+msgid "Invite exception masks or forbid /INVITE"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:237
+#, fuzzy
+msgid "Secret"
+msgstr "Serwer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:238
+#, fuzzy
+msgid "Private"
+msgstr "Wklej"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:239
+msgid "Topic change restricted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:240
+msgid "Invite only"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:241
+msgid "No external messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:242
+msgid "Anonymous or protected user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:243
+#, fuzzy
+msgid "Quiet or channel owner"
+msgstr "Pokazuj pingi od serwera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:244
+msgid "Limited number of users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:245
+msgid "Key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:246
+#, fuzzy
+msgid "Moderated"
+msgstr "Przerwij"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:247
+#, fuzzy
+msgid "Registered"
+msgstr "Za&rejestrowani użytkownicy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:248
+msgid "Censor swear words"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:249
+msgid "Impossible to speak and change nick if not authenticated with NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:250
+msgid "Impossible to change nick if not authenticated with NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:251
+msgid "Only registered nicks can join"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:252
+msgid "No kicks able (unless U-Line)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:253
+msgid "IRC-Op only channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:254
+msgid "Server/Network/Tech Admin only channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:255
+msgid "Forbid /KNOCK"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:256
+msgid "Strip colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:257
+#, fuzzy
+msgid "Redirect on channel full"
+msgstr "Za&rejestrowani użytkownicy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:258
+msgid "Forbid channel CTCPs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:259
+msgid "User-operators OR Auditorium: /NAMES and /WHO show only ops"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:260
+msgid "Only 7-bit letters in nicknames allowed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:261
+msgid "Impossible to use both 7-bit and 8-bit letters in nicknames"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:270
+msgid "o: IRC operator (OPER)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:271
+msgid "O: Local IRC operator (LOCOP)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:272
+msgid "i: Invisible"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:273
+msgid "w: Recipient for WALLOPS messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:274
+msgid ""
+"r: User with restricted connection (or recipient for messages about rejected "
+"bots)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:275
+msgid "s: Recipient for server notices"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:276
+msgid "z: Recipient for oper wallop messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:277
+msgid "c: Recipient for cconn messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:278
+msgid "k: Recipient for server kill messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:279
+msgid "f: Recipient for full server notices"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:280
+msgid "y: Spy :)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:281
+msgid "d: Obscure 'DEBUG' flag"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:282
+msgid "n: Recipient for nick changes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:100
+msgid "Ops... for some reason the link filter object has been destroyed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:138
+msgid "Using filtered IRC protocol: Link filter is \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:143
+msgid "Failed to set up the link filter \"%Q\", will try with plain IRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:202
+msgid "Failed to start the connection: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:368
+#, fuzzy
+msgid "Contacting %Q %s (%s) on port %u"
+msgstr "Próba nawiązania połączenia z %w (%s) na porcie %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+#, fuzzy
+msgid "proxy host"
+msgstr "Serwery Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+#, fuzzy
+msgid "IRC server"
+msgstr "Serwery IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:375
+#, fuzzy, c-format
+msgid "Low-level transport connection established [%s (%s:%u)]"
+msgstr "Połączenie przerwane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:379
+msgid "Starting Secure Socket Layer handshake"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+#, fuzzy
+msgid "Secure proxy connection"
+msgstr "Brak połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+#, fuzzy
+msgid "Proxy connection"
+msgstr "Brak połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:387
+#, fuzzy
+msgid "Negotiating relay information"
+msgstr "Pokazuj rozszeżone informacje o serwerze"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:390
+msgid "Sent connection request, waiting for acknowledgement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:393
+msgid "Sent target host data, waiting for acknowledgement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:396
+msgid "Sent auth method request, waiting for acknowledgement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:399
+msgid "Sent username and password, waiting for acknowledgement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:402
+msgid "Sent connection request, waiting for \"HTTP 200\" acknowledgement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:176
+msgid "[SSL]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:181
+msgid "[SSL ERROR]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:190
+msgid "[PROXY]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:200
+msgid "[PROXY ERROR]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:207
+msgid "[SOCKET]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:212
+msgid "[SOCKET ERROR]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:218
+msgid "[SOCKET WARNING]: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:337
+#, c-format
+msgid "Binding to local address %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:341
+#, c-format
+msgid ""
+"Binding to local address %s failed: the kernel will choose the correct "
+"interface"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:637
+#, fuzzy
+msgid "Using HTTP protocol."
+msgstr "Używaj IpV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:683
+#, fuzzy
+msgid "Using SOCKSV4 protocol."
+msgstr "Używaj IpV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:756
+#, fuzzy
+msgid "Using SOCKSv5 protocol."
+msgstr "Używaj IpV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:771
+msgid "We can accept auth method 0 (no auth)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:779
+msgid "We can accept auth method 0 (no auth) or 2 (user/pass)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:958
+msgid "Proxy response: auth OK: access granted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:993
+msgid "Proxy response: Auth method OK: using method 0 (no auth)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1000
+msgid "Proxy response: Auth method OK: using method 2 (user/pass)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1056
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1113
+msgid "Proxy response: target data OK: request granted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1153
+msgid "Proxy response: "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1164
+msgid "Proxy said something about: \n"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1205
+msgid "Server X509 certificate"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1209
+msgid "The server didn't provide a certificate"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1223
+msgid "Unable to determine the current cipher"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1768
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1788
+msgid "Partial socket write: packet broken into smaller pieces."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:60
+msgid "The theme information file does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:71
+msgid ""
+"This KVIrc executable is too old for this theme (minimum theme engine "
+"version required is %Q while this theme engine has version %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:80
+msgid "Theme information file is not valid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:248
+#, fuzzy
+msgid "Failed to load the specified screenshot image"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:257
+#, fuzzy
+msgid "Invalid option"
+msgstr "Błędny parametr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:265
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:293
+#, fuzzy
+msgid "Failed to save the screenshot image"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:117
+#, fuzzy
+msgid "Configure Servers..."
+msgstr "Zarejestrowani użytkownicy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:118
+msgid "Allows you to configure the servers and eventually to connect to them"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:128
+msgid "Manage Addons..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:129
+msgid "Allows you to manage the script-based addons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:139
+#, fuzzy
+msgid "Configure Registered Users..."
+msgstr "Zarejestrowani użytkownicy..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:140
+msgid "Shows a dialog that allows editing the registered user entries"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:150
+msgid "Configure Identity..."
+msgstr "Tożsamość..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:151
+msgid "Allows you to configure nickname, username, avatar etc..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:161
+msgid "Show SocketSpy..."
+msgstr "Szpieg gniazda..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:162
+msgid "Shows a window that allows monitoring the socket traffic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:172
+#, fuzzy
+msgid "Get Network Links"
+msgstr "Wygląd tekstu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:173
+msgid "Shows a window that allows viewing the network links"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:183
+#, fuzzy
+msgid "Get Channel List"
+msgstr "Za&rejestrowani użytkownicy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:184
+msgid "Shows a window that allows listing the network channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:194
+#, fuzzy
+msgid "Configure KVIrc..."
+msgstr "&Opcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:195
+#, fuzzy
+msgid "Shows the general options dialog"
+msgstr "KVIrc : Ogólne opcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:205
+#, fuzzy
+msgid "Configure Theme..."
+msgstr "Zarejestrowani użytkownicy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:206
+#, fuzzy
+msgid "Shows the theme options dialog"
+msgstr "KVIrc : Ogólne opcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:216
+#, fuzzy
+msgid "Manage Themes..."
+msgstr "Zarejestrowani użytkownicy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:217
+msgid "Allows you to manage the themes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:227
+#, fuzzy
+msgid "Customize Toolbars..."
+msgstr "&Narzędzia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:228
+msgid "Shows a window that allows editing script toolbars"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:239
+#, fuzzy
+msgid "Join Channels..."
+msgstr "Ostatnie &kanały"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:240
+msgid "Shows a dialog that allows you joing channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:251
+msgid "Edit Actions..."
+msgstr "Akcje..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:252
+msgid "Shows a window that allows editing actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:262
+#, fuzzy
+msgid "Edit Aliases..."
+msgstr "Usuń"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:263
+msgid "Shows a window that allows editing aliases"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:273
+msgid "Edit Events..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:274
+msgid "Shows a window that allows editing script events"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:284
+msgid "Edit Popups..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:285
+msgid "Shows a window that allows editing popup menus"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:295
+msgid "Edit Raw Events..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:296
+msgid "Shows a window that allows editing raw scripting events"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:306
+msgid "New Script Tester"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:307
+msgid "Creates an embedded editor for long scripts"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:317
+msgid "Execute Script..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:318
+msgid "Allows executing a KVS script from file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:328
+msgid "Help Index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:329
+#, fuzzy
+msgid "Shows the documentation index"
+msgstr "KVIrc : Ogólne opcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:340
+msgid "Allows subscribing to the KVIrc mailing list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:350
+msgid "KVIrc WWW"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:351
+msgid "Opens the KVIrc homepage"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:361
+msgid "KVIrc Russian WWW"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:362
+msgid "Opens the KVIrc homepage in russian"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:372
+msgid "Acquire Screenshot"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:373
+msgid "Acquires a Screenshot of the KVIrc main window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:385
+msgid "Cascade windows"
+msgstr "Ułóż kaskadująco"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:386
+msgid "Arranges the MDI windows in a maximized-cascade fashion"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:397
+#, fuzzy
+msgid "Tile windows"
+msgstr "Okno &terminala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:398
+msgid "Tiles the MDI windows with the currently selected tile method"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:409
+msgid "Minimize all windows"
+msgstr "Minimalizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:410
+msgid "Minimized all the currently visible MDI windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:421
+msgid "New IRC Context"
+msgstr "Nowy kontekst irc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:422
+msgid "Creates a new IRC context console"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:433
+#, fuzzy
+msgid "Quit KVIrc"
+msgstr "Informacje o KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:434
+msgid "Quits KVIrc closing all the current connections"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:448
+#, fuzzy
+msgid "IRC Context Display"
+msgstr "&Nowy kontekst irc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:449
+msgid "Shows a small display with IRC context informations"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:520
+msgid "Acts as a separator for other items: performs no action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:554
+msgid "Connect/Disconnect"
+msgstr "Połączenie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:555
+msgid ""
+"Allows you to connect to a server or to terminate the current connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:628
+msgid "Connect"
+msgstr "Połącz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:629
+#, fuzzy
+msgid "Abort Connection"
+msgstr "brak połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:790
+#, fuzzy
+msgid "Join Channel"
+msgstr "Ostatnie &kanały"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:791
+msgid "Shows a popup menu that allows quickly selecting a channel to join"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:851
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:863
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:896
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:907
+msgid "Other..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:834
+#, fuzzy
+msgid "Change Nickname"
+msgstr "Ostatnie &nicki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:835
+msgid "Shows a popup menu that allows quickly changing the nickname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:883
+#, fuzzy
+msgid "Connect To"
+msgstr "Połącz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:884
+msgid "Shows a popup menu that allows quickly connecting to a server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:929
+msgid "User Mode"
+msgstr "Tryb użytkownika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:930
+msgid "Shows a popup menu that allows quickly changing user modes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:947
+msgid "Wallops (+w)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:949
+#, fuzzy
+msgid "Server Notices (+s)"
+msgstr "Serwery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:951
+msgid "Invisible (+i)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:997
+msgid "Away/Back"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:998
+msgid "Allows entering and leaving away state"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1065
+msgid "Enter Away Mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1066
+msgid "Leave Away Mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1135
+#, fuzzy
+msgid "Irc Tools"
+msgstr "Narzędzia Irc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1136
+msgid "Shows a popup menu with some IRC Tools"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1171
+#, fuzzy
+msgid "Irc Actions"
+msgstr "Akcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1172
+msgid "Shows a popup menu with some IRC Actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:412
+msgid "KVIrc KVS Script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:174
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:420
+#, fuzzy
+msgid "Run KVS Script"
+msgstr "Centrum &skryptów"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:284
+#, fuzzy
+msgid "URL:IRC Protocol"
+msgstr "Protokół:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:383
+#, fuzzy
+msgid "Open with KVIrc"
+msgstr "Informacje o KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:436
+#, fuzzy
+msgid "KVIrc Configuration File"
+msgstr "Zapi&sz ustawienia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:453
+msgid "KVIrc Theme Package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:461
+msgid "Install Theme Package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:478
+msgid "KVIrc Addon Package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:486
+msgid "Install Package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:749
+#, c-format
+msgid ""
+"Ops...it looks like I can't load modules on this sytem.\n"
+"I have been looking for the %s library but I haven't been able to load it\n"
+"due to the following error: \"%s\"\n"
+"Aborting."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:762
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_begin\" function.\n"
+"Aborting!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:776
+#, fuzzy
+msgid "Setup aborted"
+msgstr "Połączenie przerwane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:801
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_finish\" function.\n"
+"Trying to continue anyway..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:186
+msgid "%Q is on IRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:248
+msgid "%Q has left IRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:368
+msgid "Notify list: No users to check for, quitting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:414
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (15 sec)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:428
+msgid "Notify list: Notify list empty, quitting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:455
+#, c-format
+msgid ""
+"Notify list: ISON delay (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:491
+msgid "Notify list: Checking for: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:535
+msgid ""
+"Notify list: Hey! You've used ISON behind my back? (I might be confused "
+"now...)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:682
+msgid "registration mask changed, or nickname is being used by someone else"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:686
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (registration mask does not match, or nickname is being used "
+"by someone else)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:691
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? "
+"(restarting)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:698
+msgid ""
+"Notify list: Unexpected inconsistency, expected \r!n\r%Q\r in the registered "
+"user DB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:712
+#, c-format
+msgid ""
+"Notify list: USERHOST delay (%d sec) is too short, resetting to something "
+"more reasonable (5 sec)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:726
+msgid "Notify list: Unexpected inconsistency, userhost list is empty!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:761
+msgid "Notify list: Checking userhost for: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:831
+msgid ""
+"Notify list: Hey! You've used USERHOST behind my back? (I might be confused "
+"now...)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:836
+#, c-format
+msgid "Notify list: Broken USERHOST reply from the server? (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:860
+msgid ""
+"Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST reply "
+"was received, will recheck in the next loop"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:931
+msgid "Starting notify list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:936
+msgid "No users in the notify list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:958
+msgid "Notify list: Checking for:%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1013
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1139
+msgid "Notify list: Adding watch entries for%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1171
+msgid "watch entry listing requested by user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1175
+msgid "possible watch list desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1185
+msgid "registration mask changed or desync with the watch service"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1190
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (watch: registration mask does not match, or nickname is "
+"being used by someone else)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1197
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? (watch: "
+"restarting)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1207
+msgid "watch entry added by user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1245
+msgid "removed from watch list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1248
+msgid "Notify list: Stopped watching for \r!n\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1258
+msgid "watch"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1264
+msgid "Notify list: \r!n\r%Q\r is offline (watch)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1267
+msgid "unmatched watch list entry"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:80
+msgid "commandline::userfriendly"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:94
+msgid "commandline::kvs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:127
+#, fuzzy
+msgid "You are not connected to a server"
+msgstr "Nie jesteś połączony z serwerem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_iconmanager.cpp:372
+#, fuzzy
+msgid "Icon Table"
+msgstr "Tabela &ikon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:190
+msgid "No "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:196
+msgid "This module has no version informations: refusing to load it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:204
+msgid ""
+"This module was compiled for a different KVIrc version and can't be loaded"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:232
+msgid "Failed to execute the init routine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:261
+#, c-format
+msgid "Loaded module '%s' (%s)"
+msgstr "Załadowano moduł '%s' (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:306
+#, c-format
+msgid "Unloaded module '%s'"
+msgstr "Wyładowano moduł '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:45
+msgid "This window has no associated irc context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:50
+#, fuzzy, c-format
+msgid "No such irc context (%d)"
+msgstr "&Nowy kontekst irc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:147
+msgid "Global idle timer must be started before using $my.globalIdle function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:103
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:215
+#, fuzzy
+msgid "Window %Q not found"
+msgstr "Tekst nie odnaleziony"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:108
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:220
+msgid "Missing window id after the 'w' switch"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:121
+#, fuzzy
+msgid "Can't log to file %Q"
+msgstr "Nastąpił błąd odczytu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:123
+msgid "This window has no logging capabilities"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:275
+#, fuzzy
+msgid "Window with id '%Q' not found, returning empty string"
+msgstr "Tekst nie odnaleziony"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:598
+#, fuzzy
+msgid "Sound file '%Q' not found"
+msgstr "Tekst nie odnaleziony"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:604
+msgid "Unable to play sound '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:615
+msgid "Sorry , I can't find a sound system to use on this machine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:617
+#, c-format
+msgid "Sound system detected to: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:141
+msgid "Show at startup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:154
+msgid "Did you know..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:220
+msgid "<b>Can't find any tip... :(</b>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1544
+msgid "%Q algorytm is not supported"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1566
+msgid ""
+"KVIrc is compiled without OpenSSL support. $str.digest function disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2030
+msgid "Invalid argument for ?d escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2034
+msgid "Missing argument for ?d escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2066
+msgid "Invalid argument for ?u escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2070
+msgid "Missing argument for ?u escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2097
+msgid "Invalid argument for ?x escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2101
+msgid "Missing argument for ?x escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2128
+msgid "Invalid argument for ?X escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2132
+msgid "Missing argument for ?X escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2189
+msgid "Invalid argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2193
+msgid "Missing argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:87
+msgid "Show URL List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:88
+#, fuzzy
+msgid "Shows the URL list window"
+msgstr "&Okno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:124
+msgid "&Configure"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:126
+#, fuzzy
+msgid "Clo&se"
+msgstr "Zamknij"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:127
+msgid "&Module"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:130
+msgid "&Load"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:131
+msgid "&Save"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:132
+#, fuzzy
+msgid "&Clear"
+msgstr "Wyczyść"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:133
+#, fuzzy
+msgid "&List"
+msgstr "&Połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:136
+msgid "URL"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:137
+#, fuzzy
+msgid "Window"
+msgstr "&Okno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:138
+#, fuzzy
+msgid "Count"
+msgstr "Wytnij"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:139
+msgid "Timestamp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:113
+msgid "Warning - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+#, fuzzy
+msgid "Select an URL."
+msgstr "Zaznacz wszystko"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:115
+#, fuzzy
+msgid "&Remove"
+msgstr "Usuń"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:269
+msgid "&Find Text"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:280
+#, fuzzy
+msgid "&Say to Window"
+msgstr "&Okno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+#, fuzzy
+msgid "Window not found."
+msgstr "Tekst nie odnaleziony"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:349
+#, fuzzy
+msgid "URL Module Configuration"
+msgstr "Zapi&sz ustawienia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:356
+msgid "Save URL list on module unload"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:360
+msgid "Save columns width on URL list close"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1187
+#, fuzzy
+msgid "&Cancel"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:432
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1328
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:458
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1186
+msgid "&OK"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:423
+msgid "Enable URL ban list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:435
+#, fuzzy
+msgid "&Add Ban"
+msgstr "Dodaj zakładkę"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:440
+#, fuzzy
+msgid "&Remove Selected"
+msgstr "Usuń serwer proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "URL Ban List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+#, fuzzy
+msgid "Select a ban."
+msgstr "Zaznacz wszystko"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:797
+msgid "View URL list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:49
+#, fuzzy
+msgid "Can't find the window with id '%Q'"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:53
+msgid "The specified window (%Q) is not a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:78
+msgid "Destinaion file exists: no copy made"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:83
+msgid "Failed to copy from %Q to %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:84
+msgid "Either the source doesn't exist or the destination can not be created"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:203
+msgid "Failed to write to file %Q: the destination couldn't be opened"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:244
+msgid "Destination file exists: file not renamed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:247
+msgid "Failed to rename %Q to %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:281
+#, fuzzy
+msgid "Failed to make the directory %Q"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:322
+#, fuzzy
+msgid "Failed to remove the file %Q"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:365
+#, fuzzy
+msgid "Failed to remove the directory %Q"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:482
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:628
+msgid "The specified directory does not exist '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:730
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:824
+#, fuzzy
+msgid "Can't open the file \"%Q\" for reading"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:746
+#, fuzzy
+msgid "Read error for file %Q"
+msgstr "Nastąpił błąd odczytu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:754
+msgid ""
+"Read error for file %Q (have been unable to read the requested size in 1000 "
+"retries)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:920
+#, fuzzy
+msgid "Can't open the file \"%Q\" for writing"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/index.cpp:473
+msgid "Untitled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+msgid "Indexing help files"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:87
+msgid "Index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:99
+msgid "Refresh index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:211
+msgid "Full Text Search"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:203
+msgid "Using a wildcard within phrases is not allowed."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:212
+msgid "The closing quotation mark is missing."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:312
+#, fuzzy
+msgid "Help Browser"
+msgstr "Nowa &statyczna przeglądarka pomocy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:201
+msgid "Request List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:207
+msgid "Stop list download"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:211
+msgid ""
+"<center><b>/LIST command parameters:</b><br>Many servers accept special "
+"parameters that allow you to filter the returned entries.<br>Commonly, "
+"masked channel names (*kvirc*) are accepted as parameters, as well as "
+"strings like <b>c&lt;n</b> or <b>c&gt;n</b> where <b>n</b> is the minimum or "
+"maximum of users on the channel.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:220
+msgid "Users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:221
+msgid "Topic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:262
+msgid "Sent list request, waiting for reply..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:265
+msgid "Cannot request list: No active connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:389
+msgid "Stopping the list download..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:276
+msgid "Cannot stop list download, no active connection."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:125
+#, fuzzy, c-format
+msgid "Connected to %s (%s)"
+msgstr "Połączenie przerwane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:293
+#, fuzzy
+msgid "List cannot be requested: Not connected to a server"
+msgstr "Nie jesteś połączony z serwerem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:316
+#, fuzzy, c-format
+msgid "Channel List [IRC Context %u]"
+msgstr "&Nowy kontekst irc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:319
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel List</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:326
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel list</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:342
+msgid "You cannot export an empty list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:350
+#, fuzzy
+msgid "Channel list for %Q - %Q"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:353
+#, fuzzy
+msgid "Channel list"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:382
+#, fuzzy
+msgid "Choose filename"
+msgstr "Wybierz nazwę zapisywanego pliku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:356
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:383
+#, fuzzy
+msgid "Configuration files (*.kvc)"
+msgstr "Zapi&sz ustawienia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:398
+msgid "Reset"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:435
+msgid "Channels list download finished"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:472
+msgid "Processing list: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/libkvilist.cpp:63
+msgid "List window alread open for this IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:70
+#, fuzzy
+msgid "Terminal"
+msgstr "Okno &terminala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:73
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:77
+#, c-format
+msgid "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:59
+msgid "Terminal emulator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:63
+msgid "Close this window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:91
+msgid "Can't create the terminal emulation part"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:96
+msgid "Can't retrieve the terminal emulation factory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:95
+msgid "KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:98
+#, fuzzy
+msgid "Context"
+msgstr "Połącz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:155
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:100
+msgid "Away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:102
+msgid "&Configure KVIrc..."
+msgstr "&Opcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:104
+#, fuzzy
+msgid "&About KVIrc"
+msgstr "Informacje o &KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:109
+msgid "Un&dock"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:168
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:112
+msgid "Ctrl+Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:143
+msgid "Nothing is happening..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:285
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:144
+msgid "Just idling..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:145
+msgid "Dum de dum de dum..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:146
+msgid "Hey man... do something!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:147
+msgid "Umpf!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:148
+msgid "Silence speaking"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:149
+msgid "Are ya here?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:150
+msgid "The world has stopped?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:151
+msgid "Everything is all right"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:152
+msgid "idle()"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:153
+msgid "It's so cold here..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:295
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:154
+msgid "Do not disturb... watching TV"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:155
+msgid "Just vegetating"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:156
+msgid "Hey... are ya sure that your network is up?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:298
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:157
+msgid "Seems like the world has stopped spinning"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:299
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:158
+msgid "This silence is freaking me out!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:300
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:159
+msgid "Mieeeeeowww!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:301
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:160
+msgid "idle idle idle idle!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+#, fuzzy
+msgid "Hide Window"
+msgstr "Okno &terminala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+#, fuzzy
+msgid "Show Window"
+msgstr "&Okno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:428
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:260
+msgid "Away on all"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:263
+msgid "Back on all"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:450
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:282
+msgid "Back on %1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:453
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:285
+msgid "Away on %1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1238
+msgid "Alias"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1217
+#, fuzzy
+msgid "No item selected"
+msgstr "Nie podano indeksu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:232
+msgid "Rename"
+msgstr "Zmień nazwę"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:236
+msgid "Edit the alias or namespace name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+msgid "Add Alias"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:429
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Add Namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:440
+#, fuzzy
+msgid "Remove Selected"
+msgstr "Usuń serwer proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:449
+#, fuzzy
+msgid "Export Selected..."
+msgstr "Usuń"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:455
+#, fuzzy
+msgid "Export Selected in singles files..."
+msgstr "Usuń"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:462
+#, fuzzy
+msgid "Export All..."
+msgstr "Usuń"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:470
+#, fuzzy
+msgid "Find In Aliases..."
+msgstr "Usuń"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:476
+msgid "Collapse All Namespaces"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:508
+msgid "Find In Aliases"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:509
+msgid ""
+"Please enter the text to be searched for. The matching aliases will be "
+"highlighted."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+#, fuzzy
+msgid "Alias Export"
+msgstr "&Narzędzia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#, fuzzy
+msgid "There is not selection!"
+msgstr "Plik nie jest otwarty !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:615
+#, fuzzy
+msgid "The file \"%Q\" exists. Do you want to replace it ?"
+msgstr ""
+"Plik %s już istnieje.\n"
+"Czy chcesz go zamazać ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+msgid "Replace file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#, fuzzy
+msgid "Yes to All"
+msgstr "Zaznacz wszystko"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "There exported file would be empty: cowardly refusing to write it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:786
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:411
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1133
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:398
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:745
+#, fuzzy
+msgid "Choose a Filename - KVIrc"
+msgstr "Wybierz katalog..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+#, fuzzy
+msgid "Write Failed - KVIrc"
+msgstr "Wybierz katalog..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+msgid "Unable to write to the alias file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:793
+msgid "Do you really want to remove the alias \"%Q\" ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:795
+msgid "Do you really want to remove the namespace \"%Q\" ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:797
+msgid "Please note that all the children items will be deleted too."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#, fuzzy
+msgid "Remove item"
+msgstr "Usuń"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:875
+#, fuzzy
+msgid "Missing Alias Name"
+msgstr "Brak nazwy zmiennej"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:876
+msgid "You must specify a valid name for the alias"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:877
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:890
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:904
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:915
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:946
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:959
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:973
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1128
+msgid "Ok, Let me try again..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:888
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:902
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:913
+msgid "Bad Alias Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:944
+#, fuzzy
+msgid "Missing Namespace Name"
+msgstr "Brak nazwy zmiennej"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:945
+msgid "You must specify a valid name for the namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:957
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:971
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:982
+msgid "Bad Namespace Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:958
+msgid ""
+"Namespace names can contain only letters, digits, underscores and '::' "
+"namespace separators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:972
+msgid ""
+"Stray ':' character in namespace name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:983
+msgid "Found an empty namespace in namespace name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+#, fuzzy
+msgid "Please enter the name for the new alias"
+msgstr "Zaznacz wszystko"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Please enter the name for the new namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+#, fuzzy
+msgid "Rename Alias"
+msgstr "Usuń"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+#, fuzzy
+msgid "Please enter the new name for the alias"
+msgstr "Zaznacz wszystko"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+#, fuzzy
+msgid "Rename Namespace"
+msgstr "Prawdziwe imię"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Please enter the new name for the namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1126
+msgid "Alias already exists"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1139
+msgid "This name is already in use. Please choose another one."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1138
+msgid "Namespace already exists"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1140
+msgid "Ok, let me try again..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1227
+#, fuzzy
+msgid "Namespace"
+msgstr "Typy plików"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1332
+msgid "Alias Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:62
+#, fuzzy
+msgid "Join Channels"
+msgstr "Ostatnie &kanały"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:183
+#, fuzzy
+msgid "Name"
+msgstr "Zmień nazwę"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:86
+#, fuzzy
+msgid "Password"
+msgstr "Hasło:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:641
+msgid "&Join"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:108
+#, fuzzy
+msgid "Show this window after connecting"
+msgstr "Nie jesteś połączony z serwerem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:163
+#, fuzzy
+msgid "Recent Channels"
+msgstr "Ostatnie &kanały"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:182
+#, fuzzy
+msgid "Registered Channels"
+msgstr "Za&rejestrowani użytkownicy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:133
+#, fuzzy
+msgid "Choose the file to share"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:178
+msgid "No such channel/netmask entry in the database"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:198
+#, fuzzy
+msgid "Registered channel list:"
+msgstr "Za&rejestrowani użytkownicy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:208
+#, c-format
+msgid "Channel: %c%s@%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:213
+#, c-format
+msgid " Property: %s=%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:220
+#, fuzzy, c-format
+msgid "Total %d channels"
+msgstr "Ostatnie &kanały"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:86
+#, fuzzy
+msgid "Property Editor"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:101
+msgid "Property"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:102
+msgid "Value"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:111
+#, fuzzy
+msgid "&New"
+msgstr "Wygląd tekstu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:215
+#, fuzzy
+msgid "Mask Editor"
+msgstr "&Narzędzia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:219
+msgid ""
+"Insert a mask for this user.<br>It can contain the wildcard characters '*' "
+"and '?'."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:230
+msgid ""
+"<center>This the <b>nickname</b> that will match this user, default value is "
+"the registered name.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:241
+msgid ""
+"<center>This the <b>username</b> that will match this user. <b>*</b> will "
+"match any username.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:252
+msgid ""
+"<center>This the <b>hostname</b> that will match this user. <b>*</b> will "
+"match any hostname.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:333
+#, fuzzy
+msgid "Registered User Entry"
+msgstr "Za&rejestrowani użytkownicy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:145
+msgid "Name:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:345
+#, fuzzy
+msgid "Comment:"
+msgstr "Zatwierdź"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:355
+msgid "Masks:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:216
+msgid "&Add..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:377
+#, fuzzy
+msgid "&Edit"
+msgstr "&Wyjście"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:385
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:414
+msgid "Identity"
+msgstr "Tożsamość"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:393
+msgid "Notify when user is online"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:396
+#, fuzzy
+msgid "Notify nicknames:"
+msgstr "Ostatnie &nicki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:401
+msgid "<center>You can enter a space separated list of nicknames.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:426
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:383
+#, fuzzy
+msgid "Avatar"
+msgstr "Obraz Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:433
+#, fuzzy
+msgid "Use custom color in userlist"
+msgstr "Obraz Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:441
+#, fuzzy
+msgid "All Properties..."
+msgstr "Trwa łączenie..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:448
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:231
+msgid "Properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:458
+#, fuzzy
+msgid "Enable ignore for this user"
+msgstr "Błędny parametr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:460
+#, fuzzy
+msgid "Ignore features"
+msgstr "Trwa łączenie..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:465
+#, fuzzy
+msgid "Ignore query-messages"
+msgstr "Interfejs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:468
+#, fuzzy
+msgid "Ignore channel-messages"
+msgstr "Interfejs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:471
+#, fuzzy
+msgid "Ignore notice-messages"
+msgstr "Interfejs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:474
+#, fuzzy
+msgid "Ignore ctcp-messages"
+msgstr "Interfejs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:477
+msgid "Ignore invites"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:480
+msgid "Ignore DCCs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:486
+msgid "Ignore"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:94
+#, fuzzy
+msgid "Notify disabled"
+msgstr "Ostatnie &nicki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:96
+#, fuzzy
+msgid "Notify as: "
+msgstr "Ostatnie &nicki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:105
+#, fuzzy
+msgid "No comment set"
+msgstr "Nie podano indeksu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:107
+#, fuzzy
+msgid "Comment: "
+msgstr "Zatwierdź"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:176
+#, fuzzy
+msgid "Registered Users - KVIrc"
+msgstr "Za&rejestrowani użytkownicy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:317
+msgid "Flags"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:192
+msgid ""
+"<center>This is the list of registered users. KVIrc can automatically "
+"recognize and associate properties to them.<br>Use the buttons on the right "
+"to add, edit and remove entries. The \"notify\" column allows you to quickly "
+"add users to the notify list. Notify list fine-tuning can be performed by "
+"editing the entry properties.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:208
+msgid "Add (Wizard)..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:211
+msgid "Add a registered user by means of a user-friendly wizard."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:219
+msgid "Open the edit dialog to create a new user entry."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:223
+msgid "&Add Group..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:226
+#, fuzzy
+msgid "Adds a new group"
+msgstr "Dodaj nowy serwer proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:234
+msgid "Remove the currently selected entries."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:239
+msgid "&Edit..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:243
+msgid "Edit the first selected entry."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:250
+msgid "Export To..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:254
+msgid ""
+"Export the selected entries to a file.<br>All the data associated with the "
+"selected registered users will be exported.<br>You (or anyone else) can "
+"later import the entries by using the \"Import\" button."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:259
+msgid "Import From..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:262
+msgid ""
+"Import entries from a file exported earlier by the \"export\" function of "
+"this dialog."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:399
+msgid "Group name:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:442
+msgid "Move to group"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:483
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:486
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:487
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:491
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:690
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_useridentity.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:962
+#, fuzzy
+msgid "Default"
+msgstr "Wyczyść"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:674
+#, fuzzy
+msgid "No entries selected."
+msgstr "Nie podano indeksu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:687
+#, fuzzy
+msgid "Can't open file %Q for writing."
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:772
+msgid "Can't export the registered users database: Write error."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:793
+#, fuzzy, c-format
+msgid "Can't open file %s for reading."
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:804
+#, c-format
+msgid "The file %s doesn't appear to be a valid registered users database."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:811
+#, c-format
+msgid "The file %s contains an invalid registered users database version."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:892
+msgid "Can't import the registered users database: Read error."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:78
+msgid "User Registration Wizard - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:89
+msgid ""
+"<p>Welcome to the user registration wizard.<br>This process allows you to "
+"add an IRC user to the database and set properties for that user. KVIrc will "
+"be (hopefully) able to recognize the user, add him to the notify list, and "
+"display the associated avatar.<br><br>First of all, you must insert an "
+"<b>entry name or real name</b> for the user you're going to register. The "
+"name will be used to identify the database entry and has no specific "
+"requirements, it can be a given name, nickname, or just some text to remind "
+"you of the real person.<br>Examples: \"George W Bush\", \"Dubya\".\n"
+"</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:97
+#, fuzzy
+msgid "Step 1: Entry Name"
+msgstr "Prawdziwe imię"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:112
+msgid ""
+"<p>A registered user is identified by one or more <b>IRC masks</b>.<br>A "
+"mask must be in the following form:<br><b>nickname!username@hostname</"
+"b><br>and can contain wildcard characters '*' and '?'. Be careful in "
+"choosing the masks, as they are the only way to verify the identity of a "
+"registered user.<br><br>You can enter at most two masks here, if you wish to "
+"add more masks, use the \"<b>Edit</b>\" button in the Registered Users "
+"dialog. You must enter at least one mask.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:170
+msgid "Step 2: Mask Selection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:182
+msgid ""
+"<p>If you want to store an avatar image for this user, you can set it here. "
+"KVIrc will show the avatar in the userlist next to the user's nickname."
+"<br>An avatar can be in any supported image format (PNG is recommended). "
+"Keep in mind that KVIrc stores avatars in memory and has to resize them to "
+"fit in the userlist, thus it's better to use small, low-resolution images.</"
+"p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:190
+msgid "Store an avatar for this user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:195
+msgid "Step 3: Avatar Selection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:206
+msgid ""
+"<p>If you want to be notified when this user is online or goes offline, you "
+"must specify the list of nicknames that KVIrc will look for.<br><br>You can "
+"enter at most two nicknames here, if you wish to add more nicknames, use the "
+"\"<b>Edit</b>\" button in the Registered Users dialog.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:215
+msgid "Add this user to the notify list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:342
+msgid "Nickname:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:225
+#, fuzzy
+msgid "Nickname 2:"
+msgstr "Ostatnie &nicki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:239
+msgid "Step 4: Notify List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:251
+msgid ""
+"<p>That's it. The user registration has been completed.<br><br>Click "
+"\"<b>Finish</b>\" to close this dialog.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:254
+#, fuzzy
+msgid "Registration Complete"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:695
+msgid "No name specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:209
+msgid "User already registered: found exact name match"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:222
+msgid "Mask %Q is already used to identify user %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:275
+#, fuzzy
+msgid "User not found (%Q)"
+msgstr "Brak połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:403
+msgid "No mask specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:524
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:708
+#, fuzzy
+msgid "User %Q not found"
+msgstr "Tekst nie odnaleziony"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:355
+msgid "Mask %Q already used to identify user %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:410
+#, fuzzy
+msgid "Mask %Q not found"
+msgstr "Tekst nie odnaleziony"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:701
+msgid "No property specified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:808
+msgid "Registered users database dump:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:819
+msgid " User: %c%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:823
+msgid " Warning: this user has no registration masks"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:827
+msgid " Mask: %Q!%Q@%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:838
+msgid " Property: %Q=%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:841
+msgid " No properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:847
+#, c-format
+msgid "Total: %d matching users (of %d in the database)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:197
+msgid "Manage Script-Based Addons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1155
+#, fuzzy
+msgid "Configure"
+msgstr "&Opcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:225
+#, fuzzy
+msgid "Show Help"
+msgstr "Pokaż ukryte pliki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:231
+msgid "Uninstall"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:243
+msgid "Install Addon..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:247
+#, fuzzy
+msgid "More Addons..."
+msgstr "Usuń"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:333
+msgid "Do you really want to uninstall the addon \"%1\" ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+msgid "Confirm addon uninstallation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:354
+msgid "Please select the addon installation file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:144
+msgid "%cAddon id %Q, version %Q%c"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:145
+#, fuzzy
+msgid "Name: %Q"
+msgstr "Zmień nazwę"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:67
+msgid "Description: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:152
+#, fuzzy, c-format
+msgid "Total: %d addons installed"
+msgstr "Nieprawidłowy indeks (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:192
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:571
+msgid "Uninstalling existing addon version %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:384
+msgid "The addon \"%1\" does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:238
+msgid "The addon \"%1\" has no configure callback set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:285
+msgid "The addon \"%1\" has no help callback set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:527
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:377
+msgid "Internal error: call a head-shrinker"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:536
+msgid "The specified version \"%Q\" is not a valid version string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:542
+msgid "The specified KVIrc version \"%Q\" is not a valid version string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:548
+msgid ""
+"This KVIrc executable is too old to run this addon (minimum version required "
+"is %Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:553
+msgid "Attempting to register addon \"%Q\" with version %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:565
+msgid ""
+"The script addon \"%Q\" already exists with version %Q which is higher than %"
+"Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:579
+#, fuzzy
+msgid "Script registration failed"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:584
+msgid "Script succesfully registered"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:102
+#, fuzzy, c-format
+msgid "%s (%s) (%s:%u)"
+msgstr "Połączenie przerwane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:104
+#, fuzzy, c-format
+msgid "%s (%s)"
+msgstr "%s [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:107
+#, c-format
+msgid "%s (%s:%u)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:109
+#, c-format
+msgid "%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:112
+#, c-format
+msgid "[IDENT]: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:119
+#, fuzzy
+msgid "Shutting down identd service (spontaneous action)"
+msgstr "Brak połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:124
+#, fuzzy
+msgid "Shutting down identd service (requested action)"
+msgstr "Brak połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:225
+msgid "Can't start the ident service : socket() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:231
+msgid "Can't start the ident service : async setting failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:237
+msgid "Can't enable the ident service : can't setup the listen address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:243
+msgid "Can't start the ident service : bind() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:249
+msgid "Can't start the ident service : listen() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:263
+msgid "Can't start the ident service on IpV6 : socket() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:269
+msgid "Can't start the ident service on IpV6 : async setting failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:277
+msgid "Can't enable the ident service on IpV6 : can't setup the listen address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:285
+msgid "Can't start the ident service on IpV6 : bind() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:294
+msgid "Can't start the ident service on IpV6 : listen() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:310
+msgid "Starting identd service (IpV4/V6 on separate namespaces)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:313
+msgid "Starting identd service (IpV4/V6 in IpV6 namespace)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:318
+msgid "Starting identd service (IpV4)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:322
+msgid "Service startup (IpV4)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:412
+#, fuzzy
+msgid "Identd accepting connection"
+msgstr "Brak połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:435
+msgid "Identd socket error : dropping connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:440
+msgid "Identd connection closed by remote host"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:461
+msgid "Identd processing request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:476
+msgid "Empty request (EOT ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:487
+msgid "Dropping connection (request too long)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:500
+msgid "Timed out while waiting for the request : dropping connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/libkvilinks.cpp:74
+msgid "Links window alread open for this IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:57
+msgid "Request Links"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:70
+msgid "Link"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:71
+msgid "Hops"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:72
+msgid "Description"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:90
+msgid "(None)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:112
+msgid "Sent links request, waiting for reply..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:115
+msgid "Cannot request links: No active connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:128
+#, fuzzy
+msgid "Links cannot be requested: Not connected to a server"
+msgstr "Nie jesteś połączony z serwerem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:153
+#, fuzzy
+msgid "Links for %Q [IRC Context %u]"
+msgstr "&Nowy kontekst irc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:164
+msgid ""
+"<nobr><font color=\"%s\"><b>Links for %Q</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:194
+msgid "Received end of links."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:235
+#, c-format
+msgid ""
+"Broken link: Missing parent (%s) for %s (%d hops): %s (used /LINKS <mask> ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:238
+#, c-format
+msgid "%s: Parent link %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:242
+msgid "Warning: No root link was sent by the server, the stats may be invalid."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:278
+msgid "%c%cLinks for %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+#, fuzzy
+msgid "Total hosts listed"
+msgstr "Nieprawidłowy indeks (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts in the network"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:282
+#, c-format
+msgid "Wildcard servers (hubs?): %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:283
+msgid "Direct links: %d (~%d.%d %)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:284
+msgid "Close links (1 <= hops <= 3): %d (~%d.%d %)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:285
+msgid "Mid-range links (4 <= hops <= 6): %d (~%d.%d %)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:286
+msgid "Distant links (7 <= hops): %d (~%d.%d %)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:287
+#, c-format
+msgid "Broken (unknown) links: %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:288
+#, c-format
+msgid "Maximum links per host: %d [%s]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:289
+#, c-format
+msgid "Total links: %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:290
+#, c-format
+msgid "Maximum hops: %d [%s]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:291
+#, c-format
+msgid "Average hops: ~%d.%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:294
+msgid "Incomplete LINKS result, no stats available"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:747
+msgid "You're not connected to a server"
+msgstr "Nie jesteś połączony z serwerem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:404
+#, c-format
+msgid "Processing link: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:419
+msgid "Broken message syntax, can't extract hops number, assuming 0"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:86
+msgid "< &Back"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:87
+#, fuzzy
+msgid "&Next >"
+msgstr "Wygląd tekstu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:282
+#, fuzzy
+msgid "Finish"
+msgstr "Znajdź"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:164
+msgid ""
+"<p><h2>Welcome :)</h2>This is your first time running this version of KVIrc."
+"<br>This wizard will guide you through the few steps required to complete "
+"the setup.<br><br>If you had a previous version of KVIrc installed, no "
+"worries. You will have a chance to preserve the old configuration.</"
+"p><p>Click \"<b>Next</b>\" to proceed.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:176
+msgid "Welcome to KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:187
+msgid ""
+"<p>All of the files in this distribution are covered by the GPL. In human "
+"terms this can be read as follows:<br><ul><li><b>KVIrc is free</b>, use it, "
+"have fun! <b>:)</b></li><li>If you use <b>any</b> part of KVIrc in your own "
+"project, you <b>must</b> release that project under the same license.</li></"
+"ul></p><p>The \"legalese\" version of the license is shown in the box below."
+"</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:203
+msgid ""
+"Oops... can't find the license file.\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:211
+msgid "Dreaded License Agreement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:215
+msgid "KVIrc Setup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:224
+msgid ""
+"<p>Please choose a folder for KVIrc to store its settings and other data, "
+"and another for downloaded files. Make sure that you have permission to "
+"write to both folders.<br><br>The suggested locations are fine in most "
+"cases, so if you don't know what is this about, just click \"<b>Next</b>\"."
+"<br><br>If you had a previous version of KVIrc installed, you can choose the "
+"existing directory for the settings, and your configuration will be "
+"preserved.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:234
+#, fuzzy
+msgid "Application Folders"
+msgstr "Zapi&sz ustawienia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:238
+#, fuzzy
+msgid "Store configuration in folder"
+msgstr "Zapi&sz ustawienia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:239
+msgid "Use settings folder from previous installation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:251
+msgid "Use new settings folder"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:255
+#, fuzzy
+msgid "Settings folder:"
+msgstr "Centrum &skryptów"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:281
+#, fuzzy
+msgid "Download files to folder:"
+msgstr "Zapi&sz ustawienia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:304
+msgid "All settings in shared program folder (portable)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:325
+msgid ""
+"Please choose a Nickname.<br><br>Your nickname is the name that other IRC "
+"users will know you by. It can't contain spaces or punctuation. Some IRC "
+"networks will shorten your nickname if it is more than 32 characters long."
+"<br><br>If in doubt, just enter the first nick that comes to mind. You will "
+"be able to change it later in the Identity properties, or with the /NICK "
+"command."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:348
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:353
+msgid "Profile"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:355
+#, fuzzy
+msgid "Real name:"
+msgstr "Prawdziwe imię"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:361
+#, fuzzy
+msgid "Age:"
+msgstr "Użytkownik:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:392
+#, fuzzy
+msgid "Unspecified"
+msgstr "Nie podano indeksu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:405
+#, fuzzy
+msgid "Location:"
+msgstr "Akcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:408
+msgid "Languages:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:491
+msgid ""
+"<p>Here you can choose how much KVIrc will integrate with your system."
+"<br><br>The default settings are fine for most users so if you're in doubt "
+"just click \"<b>Next</b>\" and go to the next screen.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:501
+msgid "Desktop Integration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:504
+msgid "Make KVIrc default IRC client"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:508
+msgid "Create desktop shortcut"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:513
+msgid "Import server list from mIRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:727
+#, fuzzy
+msgid "Choose an Old Configuration Folder - KVIrc Setup"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:736
+msgid "Do not overwrite folder? - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:737
+msgid ""
+"A folder %1 seems to be not a valid KVIrc settings folder.Do you want to use "
+"it anyway?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:753
+#, fuzzy
+msgid "Choose a Configuration Folder - KVIrc Setup"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:764
+#, fuzzy
+msgid "Choose a Download Folder - KVIrc Setup"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:933
+msgid "Abort Setup - KVIrc Setup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:934
+msgid ""
+"You have chosen to abort the setup.<br>KVIrc cannot run until you complete "
+"this procedure.<br><br>Do you really wish to abort?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:965
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:996
+#, c-format
+msgid ""
+"Cannot create directory %s.\n"
+"You may not have write permission for that path. Please go back and choose "
+"another directory."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+msgid "Package saved succesfully"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:80
+msgid "Event"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1046
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:92
+#, fuzzy
+msgid "&Export All To..."
+msgstr "Usuń"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:90
+msgid "Edit the event handler name."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:154
+msgid "&Enable Handler"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:158
+#, fuzzy
+msgid "&Disable Handler"
+msgstr "Usuń"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:162
+#, fuzzy
+msgid "Re&move Handler"
+msgstr "Usuń"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:164
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:166
+#, fuzzy
+msgid "&Export Handler To..."
+msgstr "Usuń"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:171
+msgid "&New Handler"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:190
+msgid "unnamed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:215
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:250
+msgid "default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:314
+msgid "none"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:318
+#, c-format
+msgid ""
+"\n"
+"\n"
+"\tEvent:\n"
+"\t\t%s\n"
+"\n"
+"\tParameters:\n"
+"%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+msgid "Unable to write to the event file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+msgid "Unable to write to the events file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:486
+msgid "Event Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:77
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:213
+msgid "Item"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:80
+msgid "Submenu"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:83
+#, fuzzy
+msgid "External Menu"
+msgstr "Użytkownik:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:136
+msgid "Label"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:93
+msgid "### Epilogue ###"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:94
+msgid "Epilogue"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:97
+msgid "### Prologue ###"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:98
+msgid "Prologue"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:198
+msgid "Popup name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:202
+msgid "Test"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:230
+msgid "Text:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:236
+msgid ""
+"<center><b>Visible text</b><br>May contain identifiers that will be "
+"evaluated at popup call time.<br>For labels, this text can contain also "
+"limited HTML tags.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:239
+msgid "Condition:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:245
+msgid ""
+"<center><b>Boolean condition</b><br>Will be evaluated at popup call time in "
+"order to decide if this entry has to be shown.<br>An empty condition "
+"evaluates to true.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:248
+msgid "Icon:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:254
+msgid ""
+"<center><b>Icon identifier</b><br>May be an internal icon ID, an absolute "
+"path or a relative path.<br>Portable scripts should never use absolute paths."
+"</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:257
+#, fuzzy
+msgid "External menu:"
+msgstr "Użytkownik:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:263
+msgid ""
+"<center><b>External menu name</b><br>This allows to nest externally defined "
+"popup menus. The popup menu with the specified name will be looked up at "
+"menu setup time.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:266
+#, fuzzy
+msgid "Item Id:"
+msgstr "Użytkownik:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:273
+msgid ""
+"<center><b>Item id</b><br>This will allow you to use delpopupitem later.</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:386
+msgid "New Separator Below"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:388
+#, fuzzy
+msgid "New Separator Above"
+msgstr "Serwery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:391
+#, fuzzy
+msgid "New Separator Inside"
+msgstr "Nie podano indeksu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:396
+msgid "New Label Below"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:398
+msgid "New Label Above"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:401
+msgid "New Label Inside"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:406
+msgid "New Item Below"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:408
+msgid "New Item Above"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:411
+msgid "New Item Inside"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:416
+msgid "New Menu Below"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:418
+msgid "New Menu Above"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:421
+msgid "New Menu Inside"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:426
+#, fuzzy
+msgid "New External Menu Below"
+msgstr "Użytkownik:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:428
+#, fuzzy
+msgid "New External Menu Above"
+msgstr "Użytkownik:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:431
+#, fuzzy
+msgid "New External Menu Inside"
+msgstr "Użytkownik:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:451
+#, fuzzy
+msgid "&Paste Below"
+msgstr "Wklej"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:456
+#, fuzzy
+msgid "Paste Above"
+msgstr "Serwery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:461
+msgid "Paste Inside"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:473
+msgid "New Menu Prologue"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:481
+msgid "New Menu Epilogue"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1042
+msgid "Popup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1048
+#, fuzzy
+msgid "&Export selected To..."
+msgstr "Usuń"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1099
+msgid "&New Popup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1105
+#, fuzzy
+msgid "Re&move Popup"
+msgstr "Usuń"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1112
+msgid "&Export Popup To..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+msgid "Unable to write to the popup file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1382
+msgid "Popup Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:62
+msgid "%cCore action: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:64
+#, fuzzy
+msgid "%cUser action: %Q"
+msgstr "Brak połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:65
+msgid "Label: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:66
+#, fuzzy
+msgid "Category: %Q"
+msgstr "Kategoria"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:112
+msgid "The action \"%1\" is disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:259
+msgid "The action \"%1\" does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:255
+msgid "The action \"%1\" is a core action and cannot be destroyed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:392
+msgid "The switch -l requires -c"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:409
+msgid "The switch -s requires -w with a combination of flags 'c','x' and 'q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:420
+msgid ""
+"The action \"%1\" is already defined as core action and cannot be overridden"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:116
+#, fuzzy
+msgid "Ops.. internal error"
+msgstr "Wewnętrzny błąd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:125
+msgid "Manage File &Transfers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:67
+#, fuzzy
+msgid "Choose Avatar - KVIrc"
+msgstr "Wybierz katalog..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:72
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:283
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:358
+msgid "Internal error: I'm not in the user database ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:245
+msgid "Can't set the current avatar to '%Q': failed to start the http transfer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:249
+msgid "Can't set the current avatar to '%Q': can't load the image"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:351
+msgid "Invalid timeout specified, using default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:389
+msgid "Can't add a file offer for file %Q (huh ? file not readable ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:396
+msgid "Added %d secs file offer for file %Q (%Q) and receiver %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:403
+#, fuzzy
+msgid "Notifying avatar '%Q' to %Q"
+msgstr "Obraz Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:55
+msgid "&Execute"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:59
+msgid "Params:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:107
+msgid "Script Tester"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:220
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:413
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:543
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:628
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:765
+msgid "The config file with id '%Q' is not open"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:538
+msgid ""
+"The config file '%Q' has been changed but is opened as read-only: changes "
+"will be lost"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:583
+msgid "The config file with id '%Q' is read only"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:178
+#, fuzzy
+msgid "Colors"
+msgstr "Zamknij"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:255
+msgid "Context sensitive help"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1167
+msgid "&Replace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:268
+msgid "Find & Repalce"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1148
+msgid "Word to Find"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1156
+msgid "Replace with"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1172
+msgid "&Replace in all Aliases"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1176
+#, fuzzy
+msgid "&Findnext"
+msgstr "Znajdź"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1181
+msgid "&Replace(WIP)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:227
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:547
+msgid "The specified toolbar doesn't exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:424
+#, fuzzy
+msgid "No action name/index specified"
+msgstr "Nie podano indeksu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:441
+#, fuzzy
+msgid "The action parameter didn't evaluate to an index"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:455
+#, fuzzy
+msgid "The toolbar does not contain the specified item"
+msgstr "Nie podano indeksu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:513
+msgid "The action \"%Q\" doesn't exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:31
+msgid "Torrent Client"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:361
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:364
+#, fuzzy
+msgid "Standalone Servers"
+msgstr "Zamknij"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:112
+msgid ""
+"%Q doesn't look like a servers.ini file.\n"
+"Import failed."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:122
+msgid "Choose a servers.ini file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:146
+msgid "Remote mIRC servers.ini Import Wizard"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:154
+msgid ""
+"<center><b>Welcome!</b><br><br>This wizard will guide you in the process of "
+"downloading a list of IRC servers. Please click \"<b>Next</b>\" to begin the "
+"operation.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:161
+msgid ""
+"<center>Here you can modify the URL that the list will be downloaded from. "
+"In most cases the default URL is acceptable.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:169
+msgid "URL Selection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:173
+msgid "Please wait while the list is being downloaded"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:179
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:195
+msgid "List Download"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:229
+msgid "Failed to start the server list transfer :("
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:245
+msgid "File downloaded: processing ..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:255
+msgid "%1 servers imported succesfully"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:257
+msgid "No servers imported"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:326
+msgid "Import from servers.ini"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:333
+msgid "Import from http://www.mirc.co.uk/servers.ini"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lineedit.cpp:372
+#, fuzzy
+msgid "Unknown echo mode %Q"
+msgstr "Nieznany tryb wyświetlania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:203
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:359
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:172
+#, fuzzy
+msgid "Widget parameter is not an object"
+msgstr "Prawy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:230
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:250
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:449
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:485
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:177
+msgid "Widget parameter is not a valid object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:95
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:263
+msgid "Widget object required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:151
+#, fuzzy
+msgid "Unknown dock area '%Q'"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:321
+#, fuzzy
+msgid "Unknown alignment: '%Q'"
+msgstr "Nieznane wyrównanie: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:373
+#, fuzzy
+msgid "Unknown style: '%Q'"
+msgstr "Nieznany styl ramki/cienia: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:84
+msgid "the toolbar cannot be a parent-widget!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:93
+msgid "The parent-widget isn't a MainWindow."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:999
+msgid "The array passed as parameter must contain at least 4 elements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1012
+msgid "One of the geometry array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1017
+#, fuzzy
+msgid "One of the geometry array parameters didn't evaluate to an integer"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:503
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1032
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1500
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1044
+#, fuzzy
+msgid "The first parameter didn't evaluate to an array nor an integer"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1419
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1476
+msgid "The array passed as parameter must contain at least 2 elements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:451
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:486
+msgid "One of the array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:456
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:491
+#, fuzzy
+msgid "One of the array parameters didn't evaluate to an integer"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:478
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:804
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:993
+msgid "The array passed as parameter must contain at least 3 elements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:551
+#, fuzzy
+msgid "Unknown orientation"
+msgstr "Nieznana funkcja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:789
+msgid "Pixmap or Widget parameter is not an object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:730
+msgid "Widget or Pixmap required "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:852
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:862
+#, fuzzy
+msgid "Invalid mode '%Q'"
+msgstr "Nieprawidłowy indeks (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:886
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1701
+msgid "Pixmap parameter is not an object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:891
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1706
+msgid "Pixmap object required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1027
+msgid ""
+"$setGeometry() requires either an array as first parameter or four integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:813
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1002
+msgid "One of the colors array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:818
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1007
+#, fuzzy
+msgid "One of the colors array parameters didn't evaluate to an integer"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1020
+msgid "A string of 6 digits hex is required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:842
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1031
+msgid "Not an hex digits"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1144
+msgid ""
+"$setForegroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1219
+msgid ""
+"$setBackgroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1426
+#, fuzzy
+msgid "One of the move array parameters is empty"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1431
+#, fuzzy
+msgid "One of the move array parameters didn't evaluate to an integer"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1438
+msgid "$move() requires either an array as first parameter or two integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1483
+#, fuzzy
+msgid "One of the resize array parameters is empty"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1488
+#, fuzzy
+msgid "One of the resize array parameters didn't evaluate to an integer"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1495
+msgid "$resize() requires either an array as first parameter or two integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1528
+#, fuzzy
+msgid "Invalid parameters"
+msgstr "Błędny parametr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1560
+#, fuzzy
+msgid "Unknown widget flag '%Q'"
+msgstr "Nieznane wyrównanie: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1592
+#, fuzzy
+msgid "Unknown style '%Q'"
+msgstr "Nieznany styl ramki/cienia: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1622
+msgid "No Layout associated to the widget "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:117
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:152
+msgid "Can't add a non-widget object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1650
+#, fuzzy
+msgid "Parent must be a widget object"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1715
+msgid "Null mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1740
+#, fuzzy
+msgid "Unknown widget attribute '%Q'"
+msgstr "Nieznane wyrównanie: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:382
+#, fuzzy
+msgid "No such line number"
+msgstr "Plik nie istnieje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:500
+#, fuzzy
+msgid "Unknown word wrap '%Q'"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:519
+msgid "Unknown wrap policy'%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:850
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1039
+msgid "$setColor requires either an array as first parameter or three integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:975
+#, fuzzy
+msgid "Unknown text format '%Q'"
+msgstr "Nieznana funkcja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1071
+#, fuzzy
+msgid " I can't find the specified file '%Q'."
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1078
+#, fuzzy
+msgid " I cannot read the file %Q'."
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1113
+#, fuzzy
+msgid "Unknown alignment '%Q'"
+msgstr "Nieznane wyrównanie: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1131
+#, fuzzy
+msgid "Unknown auto formatting mode '%Q'"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1149
+#, fuzzy
+msgid "Unknown vertical alignment '%Q'"
+msgstr "Nieznane wyrównanie: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:264
+msgid "pix '%Q' doesn't exists"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:276
+#, fuzzy
+msgid "Can't add a non - popupmenu object"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:302
+#, fuzzy
+msgid "Doesn't a widget object"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:182
+#, fuzzy
+msgid "I can't find the specified file %Q."
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:222
+#, fuzzy
+msgid "Destination parameter is not an object"
+msgstr "Prawy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:228
+#, fuzzy
+msgid "Destination must be a pixmap object"
+msgstr "Prawy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:238
+msgid "Area dimensions are out of destination size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:253
+msgid "Pixmap dimensions are out of destination size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:261
+msgid "Offset width area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:266
+msgid "Offset height area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:121
+msgid "The widget must be a child of this hbox"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:191
+msgid "No string parameter given - using empty string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:194
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:214
+#, c-format
+msgid "Item index [%d] is too big - defaulting to $count() - 1 [%d]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:333
+#, fuzzy
+msgid "Invalid insertion Policy %Q"
+msgstr "Nieprawidłowy indeks (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:136
+#, fuzzy
+msgid "Unknown mode "
+msgstr "Nieznany tryb wyświetlania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:149
+#, fuzzy
+msgid "Unknown segment style "
+msgstr "Nieznane wyrównanie: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_process.cpp:221
+msgid "Process could not be starded."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:279
+msgid "Invalid selection mode '%Q' assuming single"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:316
+#, fuzzy
+msgid "Unknown text position '%Q'"
+msgstr "Nieznana funkcja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:256
+#, fuzzy
+msgid "Unknown tickmark '%Q'"
+msgstr "Nieznana komenda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:271
+#, fuzzy
+msgid "Unknown orientation '%Q'"
+msgstr "Nieznana funkcja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:500
+#, fuzzy
+msgid "No socket object specified"
+msgstr "Nie podano indeksu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:506
+msgid "Invalid socket object specified (it doesn't inherit from socket)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:518
+msgid "There is no connection to accept!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:591
+#, c-format
+msgid "Value %d for port is out of range (values allowed are from 0 to 65535"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:596
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:87
+msgid "Another connection in progress"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:648
+msgid "No IPV6 support in this executable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:670
+#, fuzzy
+msgid "Invalid IP address specified ('%Q')"
+msgstr "Nieprawidłowy indeks (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:89
+msgid "Socket creation failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:706
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:727
+msgid "Invalid socket address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:714
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:735
+msgid "Bind failure"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:745
+msgid "Listen failure"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:812
+msgid "unknown"
+msgstr "nieznany"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:876
+#, fuzzy
+msgid "Invalid ip address "
+msgstr "Nieprawidłowy indeks (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:882
+#, fuzzy
+msgid "Invalid ip address (%Q)"
+msgstr "Nieprawidłowy indeks (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:906
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1013
+msgid "Failed to create the socket"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:918
+msgid "Failed to setup a nonblocking socket"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:939
+#, fuzzy
+msgid "Connect failure: "
+msgstr "Połączenie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:967
+msgid "Connect attempt timed out"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:993
+msgid "Can't start the DNS thread"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:1143
+msgid ""
+"Too much unprocessed incoming data (you've left this socket unmanaged ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:149
+msgid "Error in KVS class implementation: processing aborted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:154
+#, fuzzy
+msgid "Processing aborted"
+msgstr "Połączenie przerwane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:160
+#, c-format
+msgid "Error near line %d, column %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:162
+#, c-format
+msgid "Warning near line %d, column %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:313
+msgid "XML support not available in the Qt library"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:491
+#, fuzzy
+msgid "Not a widget object"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:308
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:497
+#, fuzzy
+msgid "Can't find the tab "
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:522
+#, fuzzy
+msgid "Unknown position 'Q%'"
+msgstr "Nieznana funkcja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:123
+msgid "The widget must be a child of this vbox"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:276
+#, fuzzy
+msgid "Not Enough Parameters"
+msgstr "Brak nazwy zmiennej"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:142
+msgid "The listviewitem cannot be parentless"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:152
+msgid ""
+"The parent of the listviewitem must be either another listviewitem or a "
+"listview"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:403
+msgid "Pixmap object or image Id required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:413
+msgid ""
+"Error occured: the suitable file '%Q' is not of the correct format or it is "
+"not a valid icon number."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:151
+msgid ""
+"The window identifier preceeded by WinId must be the first object in the "
+"search path"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:167
+#, fuzzy
+msgid "Failed to find one of the wrap path widgets (%Q::%Q)"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:176
+#, fuzzy
+msgid "Failed to find the widget to wrap"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:119
+msgid "The parent of a layout must be a widget!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:269
+msgid "Invalid resize mode defaulting to Auto"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:324
+#, fuzzy
+msgid "Unknown alignment"
+msgstr "Nieznane wyrównanie: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:373
+#, fuzzy
+msgid "Unknown orientation: "
+msgstr "Nieznana funkcja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listview.cpp:320
+#, fuzzy
+msgid "Invalid selection mode '%Q'"
+msgstr "Nieprawidłowy indeks (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tbrowser.cpp:99
+#, fuzzy
+msgid "I can't find the specified file '%Q'."
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:121
+#, fuzzy
+msgid "Can't add a null object"
+msgstr "Nieprawidłowy indeks (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:128
+msgid ""
+"Invalid object handle passed as parameter (the object is no longer "
+"existing ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:134
+msgid "Object in invalid state"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:140
+msgid "Can't set a non-widget object to be the main widget of a dock window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:146
+msgid "The added widget is not a child of this dock window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:271
+#, fuzzy
+msgid "Invalid dock area specified"
+msgstr "Nie podano indeksu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:181
+msgid "Class '%Q' is not definited"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:257
+msgid "Inexisting target object for objects.connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:262
+msgid "Inexisting source object for objects.connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:444
+msgid "The class '%Q' does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:404
+msgid "Object does not exists"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:557
+msgid "Inexisting target object for objects.disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:562
+msgid "Inexisting source object for objects.disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:608
+#, fuzzy
+msgid "Source is not an object"
+msgstr "Prawy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:614
+#, fuzzy
+msgid "Destination is not an object"
+msgstr "Prawy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:625
+msgid "Widget, Image or Pixmap required "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:635
+msgid "Widget or Pixmap required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:714
+msgid "One o more of background, foreground or destination aren't objects"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:720
+#, fuzzy
+msgid "Pixmap objects required"
+msgstr "Tekst nie odnaleziony"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:743
+msgid "Values for background are out of image size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:748
+msgid "Values for foreground are out of image size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:226
+msgid "Empty filename string"
+msgstr "Pusta nazwa pliku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:271
+#, fuzzy
+msgid "No such open mode: '%Q'"
+msgstr "Tryb otwarcia '%s' nie istnieje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:312
+#, fuzzy
+msgid "File is not open!"
+msgstr "Plik nie jest otwarty !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:348
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:406
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:434
+msgid "File is not open !"
+msgstr "Plik nie jest otwarty !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:369
+msgid "Argument to long, using only first char"
+msgstr "Argument zbyt długi, użyto jedynie pierwszy znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:339
+msgid "Write error occured !"
+msgstr "Nastąpił błąd zapisu!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:352
+msgid "Read error occured !"
+msgstr "Nastąpił błąd odczytu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:371
+msgid "An error occured !"
+msgstr "Nastąpił błąd!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:387
+msgid "Missing both encrypt and decrypt key: at least one is needed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:168
+msgid "Error 0: Success ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:169
+msgid "Unsupported crypt mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:170
+msgid "Unsupported direction"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:171
+msgid "Unsupported key length"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:172
+msgid "Bad key data"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:173
+msgid "Engine not initialized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:174
+msgid "Invalid direction for this engine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:175
+msgid "Corrupted message data or invalid decrypt key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:52
+msgid "Unknown error"
+msgstr "Nieznany błąd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:184
+msgid "Ops...encrypt cipher not initialized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:420
+msgid "Data buffer too long"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:221
+msgid "Ops...decrypt cipher not initialized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:277
+msgid "The message is not a hexadecimal string: this is not my stuff"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:671
+msgid "The message is not a base64 string: this is not my stuff"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:676
+msgid "The message doesn't seem to be encoded with CBC Mircryption"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:712
+#, c-format
+msgid ""
+"Cryptographic engine based on the\n"
+"Advanced Encryption Standard (AES)\n"
+"algorithm called Rijndael.\n"
+"The text is first encrypted with rijndael\n"
+"and then converted to %s notation.\n"
+"The keys used are %d bit long and will be padded\n"
+"with zeros if you provide shorter ones.\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"See the rijndael module documentation\n"
+"for more info on the algorithm used.\n"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:739
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:749
+msgid "hexadecimal"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:759
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:779
+msgid "base64"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:790
+msgid ""
+"Popular cryptographic engine based on the\n"
+"old Blowfish encryption algorithm.\n"
+"The text is first encrypted with Blowfish \n"
+"and then converted to base64 notation.\n"
+"The keys used have variable length and\n"
+"are specified as character strings.\n"
+"You can specify keys long up to 56 bytes (448 bits).\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"This engine works in ECB mode by default:\n"
+"if you want to use CBC mode you must prefix\n"
+"your key(s) with \"cbc:\".\n"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:61
+msgid "Drop here the icons from the toolbars to remove them"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:128
+#, fuzzy
+msgid "ToolBar Properties"
+msgstr "&Narzędzia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:144
+msgid "Icon"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:160
+msgid "Id"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:217
+msgid "Please choose the icon for the ToolBar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+#, fuzzy
+msgid "Invalid ToolBar Label"
+msgstr "Błędny parametr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "The ToolBar Label can't be empty!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:256
+msgid "Duplicate ToolBar Id"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:257
+msgid ""
+"The specified ToolBar Id already exists.<br>Would you like KVIrc to assign "
+"it automatically (so it doesn't collide with any other toolbar) or you "
+"prefer to do it manually ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Manually"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Automatically"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:278
+msgid "Hide Advanced"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:287
+#, fuzzy
+msgid "Customize Toolbars"
+msgstr "&Narzędzia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:296
+#, fuzzy
+msgid "New ToolBar"
+msgstr "&Narzędzia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:300
+#, fuzzy
+msgid "Delete ToolBar"
+msgstr "Usuń"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:304
+#, fuzzy
+msgid "Edit ToolBar"
+msgstr "Dodaj zakładkę"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:312
+#, fuzzy
+msgid "Export ToolBar"
+msgstr "Usuń"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:373
+msgid "Confirm ToolBar Deletion"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:374
+msgid "Do you really want to delete toolbar \"%1\" ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:397
+#, fuzzy
+msgid "ToolBar Export"
+msgstr "&Narzędzia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:398
+msgid "Do you want the associated actions to be exported with the toolbar ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+msgid "Unable to write to the toolbar file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:465
+msgid "Please specify the properties for the toolbar \"%1\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:491
+msgid "Please specify the properties for the new toolbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:493
+#, fuzzy
+msgid "My ToolBar"
+msgstr "&Narzędzia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:63
+#, fuzzy
+msgid "Window with ID '%Q' not found"
+msgstr "Tekst nie odnaleziony"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:67
+msgid "The specified window (%Q) is not a channel/query/DCC chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:108
+msgid "File not found or empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:114
+msgid "I can't open that file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:122
+msgid "Could not paste file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:218
+msgid "The specified window (%Q) is not a channel/query/dcc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:271
+msgid "Slow-paste ID:%d Window:%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:240
+msgid "Plugin not found. Please check the plugin-name and path."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:247
+msgid "Error while loading plugin."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:311
+msgid "This plugin does not export the desired function."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:327
+msgid ""
+"The plugin has no function to free memory. This can result in Memory Leaks!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:209
+#, c-format
+msgid "No environment variable found, please don't use the %% in the request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:482
+#, fuzzy
+msgid "Invalid DCOP parameter syntax"
+msgstr "Błędny parametr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:495
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:516
+msgid "The specified parameter is not an integer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:521
+#, fuzzy, c-format
+msgid "Unsupported DCOP parameter type %s"
+msgstr "Używaj IpV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:534
+msgid "DCOP call failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:599
+msgid "DCOP calls are available only when KDE support is compiled in"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1408
+#, c-format
+msgid "The window with id '%s' does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:851
+msgid "Window type or 'all' expected as first parameter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:938
+#, fuzzy
+msgid "Invalid IRC context id '%Q'"
+msgstr "Nieprawidłowy indeks (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1045
+msgid "The specified IRC context is not valid: creating a context free window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1119
+msgid "The specified window is not of type \"userwnd\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1208
+msgid "Window doesn't have input widget"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1363
+msgid "The encrypt key wasn't a valid hexadecimal string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1377
+msgid "The decrypt key wasn't a valid hexadecimal string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1414
+msgid "Both -n and -m switchess specified, -n takes precedence"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1424
+msgid "No encrypt key specified: can't allocate engine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1446
+#, fuzzy
+msgid "Unknown engine error"
+msgstr "Nieznany błąd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1449
+#, fuzzy
+msgid "Failed to initialize the specified crypt engine: %Q"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1453
+msgid "The crypt engine \"%Q\" does not exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1458
+msgid "This executable has been compiled without crypt support"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:138
+msgid "Current window is not a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:87
+msgid "Raw Event"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:97
+msgid "Edit the raw event handler name."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:179
+msgid "&Add Raw Event..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "New Raw Event"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "Enter the numeric code of the message (0-999)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+msgid "Unable to write to the raw event file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Unable to write to the raw events file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:512
+msgid "Raw Editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:219
+msgid "A really lame text transformation engine :D"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:229
+msgid "A really lame text transformation engine: Light Version."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:82
+#, c-format
+msgid "Socket Spy [IRC Context %u]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:92
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Socket Spy</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:112
+msgid "Socket open"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:117
+msgid "Socket closed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:149
+msgid "Internal unique name for the action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:151
+msgid "Label:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:155
+msgid ""
+"Visible name for this action.<br>This string will be displayed to the user "
+"so it is a good idea to use $tr() here"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:166
+#, fuzzy
+msgid "Action code"
+msgstr "Zapi&sz ustawienia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:168
+#, fuzzy
+msgid "Code"
+msgstr "Zamknij"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:174
+#, fuzzy
+msgid "Category:"
+msgstr "Kategoria"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:178
+msgid "Choose the category that best fits for this action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:180
+msgid "Description:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:184
+msgid ""
+"Visible short description for this action.<br>This string will be displayed "
+"to the user so it is a good idea to use $tr() here"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:186
+msgid "Small Icon:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:194
+msgid ""
+"The small icon associated to this action.<br>It will appear at least in the "
+"popup menus when this action is inserted.<br>It should be 16x16 pixels."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:200
+msgid "Big Icon:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:209
+msgid ""
+"The big icon associated to this action.<br>It will appear at least in the "
+"toolbar buttons when this action is inserted.<br>It should be 32x32 pixels."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:215
+msgid "Key Sequence:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:219
+msgid ""
+"Optional keyboard sequence that will activate this action.<br>The sequence "
+"should be expressed as a string of up to four key codes separated by commas "
+"eventually combined with the modifiers \"Ctrl\",\"Shift\",\"Alt\" and \"Meta"
+"\".<br>Examples of such sequences are \"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl+X,"
+"Ctrl+C\" ..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:240
+#, fuzzy
+msgid "Needs IRC Context"
+msgstr "&Nowy kontekst irc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:242
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window belongs to an irc context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:250
+#, fuzzy
+msgid "Needs IRC Connection"
+msgstr "Nowe &połączenie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:252
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window has an active IRC connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:260
+msgid "Enable at Login"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:261
+msgid ""
+"Check this option if this action should be enabled also during the login "
+"operations (so when the logical IRC connection hasn't been estabilished yet)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:265
+msgid "Enable Only in Specified Windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:267
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is of a specified type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:271
+#, fuzzy
+msgid "Enable in Console Windows"
+msgstr "Okno &terminala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:272
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a console"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:277
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:299
+msgid "Only If There Are Selected Users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:278
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:300
+msgid ""
+"This will enable the action only if there are selected users in the active "
+"window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:282
+#, fuzzy
+msgid "Enable in Channel Windows"
+msgstr "Ułóż kaskadują&co"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:283
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:293
+#, fuzzy
+msgid "Enable in Query Windows"
+msgstr "Okno &terminala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:294
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:304
+#, fuzzy
+msgid "Enable in DCC Chat Windows"
+msgstr "Ułóż kaskadują&co"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:305
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a dcc chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:627
+#, fuzzy
+msgid "Action"
+msgstr "Akcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:680
+#, fuzzy
+msgid "New Action"
+msgstr "Akcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:683
+#, fuzzy
+msgid "Delete Actions"
+msgstr "Zaznacz wszystko"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:686
+#, fuzzy
+msgid "Export Actions..."
+msgstr "Usuń"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Unable to write to the actions file."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:823
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:824
+#, fuzzy
+msgid "My Action"
+msgstr "Akcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:825
+msgid "Put here a short description of your action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:925
+#, fuzzy
+msgid "Action Editor"
+msgstr "Wygląd tekstu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:938
+msgid "Apply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:63
+msgid "Outgoing traffic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:67
+msgid "Incoming traffic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_crypt.cpp:160
+msgid "Invalid crypt engine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:296
+msgid "Directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:315
+msgid "Socket"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:332
+msgid "Fifo"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:349
+msgid "Block device"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:366
+msgid "Char device"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:429
+msgid "Octet stream (unknown)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_osinfo.cpp:413
+#, fuzzy
+msgid "Unknown "
+msgstr "nieznany"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:181
+msgid "The specified network has no server entries"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:239
+msgid ""
+"The server specification seems to be in the net:<string> but the network "
+"couln't be found in the database"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:261
+msgid ""
+"The server specification seems to be in the id:<string> form but the "
+"identifier coulnd't be found in the database"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:71
+#, fuzzy
+msgid "Aborted"
+msgstr "Przerwij"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:96
+msgid "No request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:141
+msgid "No filename specified for the \"StoreToFile\" processing type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:160
+msgid "Invalid URL: Missing hostname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:167
+#, fuzzy
+msgid "Unsupported protocol %1"
+msgstr "Używaj IpV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:189
+msgid "Unable to start the DNS lookup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:194
+#, c-format
+msgid "Looking up host %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:210
+#, fuzzy
+msgid "Host %s resolved to %Q"
+msgstr "Brak nazwy hosta do odszukania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:246
+msgid "Unable to start the request slave thread"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:251
+#, fuzzy
+msgid "Contacting host %Q on port %u"
+msgstr "Próba nawiązania połączenia z %s (%u) na porcie %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:271
+#, fuzzy
+msgid "Connection established, sending request"
+msgstr "Połączenie przerwane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:322
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:51
+msgid "Success"
+msgstr "Sukces"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:429
+msgid "Failed to rename the existing file, please rename manually and retry"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:447
+#, fuzzy
+msgid "Can't open file \"%Q\" for writing"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:497
+#, fuzzy, c-format
+msgid "Invalid HTTP response: %s"
+msgstr "Nieprawidłowy indeks (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:503
+#, c-format
+msgid "Received HTTP response: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:628
+msgid "Stream exceeding maximum length"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:661
+msgid "Header too long: exceeded 4096 bytes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:710
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:852
+msgid "Stream exceeded expected length"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:798
+msgid "Protocol error: invalid chunk size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:818
+msgid "Chunk header too long: exceeded 4096 bytes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:987
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1193
+msgid "Operation timed out"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1003
+#, fuzzy
+msgid "Unexpected SSL error"
+msgstr "Niespodziewany znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1016
+msgid "Failed to enter non blocking mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1021
+msgid "Invalid target address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1056
+#, fuzzy
+msgid "Failed to initialize the SSL context"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1058
+#, fuzzy
+msgid "Failed to initialize the SSL connection"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1075
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:99
+msgid "Remote end has closed the connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1087
+msgid "Unrecoverable SSL error during handshake"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1272
+msgid "Operation timed out (while selecting for read)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1382
+msgid "This KVIrc executable has no SSL support"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1147
+msgid "Back"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:268
+#, fuzzy
+msgid "Next"
+msgstr "Wygląd tekstu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:168
+msgid "%1 bytes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:172
+msgid "%1 KB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:176
+msgid "%1 MB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:181
+msgid "%1 GB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:185
+msgid "%1 TB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:620
+msgid "Internal error"
+msgstr "Wewnętrzny błąd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:54
+msgid "Unknown command"
+msgstr "Nieznana komenda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:55
+msgid "Missing closing brace"
+msgstr "Brak zamykającego nawiasu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:56
+msgid "Unexpected end of command in string"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:57
+msgid "Unexpected end of command in dictionary key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:58
+msgid "Switch dash without switch letter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:59
+msgid "Unknown function"
+msgstr "Nieznana funkcja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:60
+msgid "Unexpected end of command in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:61
+msgid "Unexpected end of command in function parameters"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:62
+msgid "Missing variable name"
+msgstr "Brak nazwy zmiennej"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:63
+msgid "Variable or identifier expected"
+msgstr "Oczekiwano zmiennej lub identyfikatora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:64
+msgid "Left operand is not a number"
+msgstr "Lewy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:65
+msgid "Multiple operations not supported for numeric operators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:67
+msgid "Modulo by zero"
+msgstr "Dzielenie modulo przez zero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:68
+msgid "Right operand is not a number"
+msgstr "Prawy operand nie jest liczbą"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:69
+msgid "Unterminated expression (missing ')' ?)"
+msgstr "Nie zakończone wyrażenie (brak ')' ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:70
+msgid "Unterminated subexpression (Parenthesis mismatch)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:71
+msgid "Unexpected character"
+msgstr "Niespodziewany znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:73
+msgid "No host to resolve"
+msgstr "Brak nazwy hosta do odszukania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:74
+msgid "(DNS Internal) Unsupported address family"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:75
+msgid "Valid name but the host has no IP address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:76
+msgid "Unrecoverable nameserver error (crashed ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:77
+msgid "Dns temporaneous fault (try again)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:78
+msgid "(DNS Internal) Bad flags"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:79
+msgid "(DNS Internal) Out of memory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:80
+msgid "(DNS Internal) Service not supported"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:81
+#, fuzzy
+msgid "Unknown node (host not found)"
+msgstr "Nieznany tryb wyświetlania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:82
+msgid "(DNS Internal) Unsupported socket type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:83
+msgid "Dns query failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:84
+msgid "This KVIrc executable has no IPV6 support"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:85
+msgid "Host not found"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:86
+msgid "(DNS Internal) IPC failure (slave data corrupted)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:88
+msgid "Invalid IP address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:90
+msgid "Failed to put the socket in non blocking mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:91
+msgid "Bad file descriptor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:92
+msgid "Out of address space"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:93
+msgid "Connection refused"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:94
+msgid "Kernel networking panic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:95
+msgid "Connection timed out"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:96
+msgid "Network is unreachable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:97
+msgid "Broken pipe"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:98
+msgid "Invalid proxy address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:100
+msgid "Invalid irc context id"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:101
+msgid "Error in loading module"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:102
+msgid "No such module command"
+msgstr "Brak takiej komendy w module"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:103
+msgid "No such module function"
+msgstr "Brak takiej funkcji w module"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:104
+msgid "Left operand is not a dictionary reference"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:105
+msgid "Right operand is not a dictionary reference"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:106
+msgid "Missing object class name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:107
+msgid "No such object class"
+msgstr "Nie ma takiej klasy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:108
+msgid "No such object"
+msgstr "Nie ma takiego obiektu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:109
+msgid "No such object function"
+msgstr "Nie ma takiej funkcji w obiekcie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:110
+msgid "Invalid left operand"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:111
+msgid "Not enough parameters"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:112
+msgid "Integer parameter expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:113
+msgid "Invalid parameter"
+msgstr "Błędny parametr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:114
+msgid "No such file"
+msgstr "Plik nie istnieje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:115
+msgid "Open parenthesis expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:116
+msgid "Open brace expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:117
+msgid "Can't kill a builtin class"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:118
+msgid "The SOCKSV4 protocol lacks IpV6 support"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:119
+msgid "Unrecognized proxy reply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:120
+msgid "Proxy response: auth failed: access denied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:121
+msgid "Proxy response: No acceptable auth method: request rejected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:122
+msgid "Proxy response: request failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:123
+msgid "Proxy response: ident failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:124
+msgid "Proxy response: ident not matching"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:125
+msgid "Proxy response: general SOCKS failure"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:126
+msgid "Proxy response: connection not allowed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:127
+msgid "Proxy response: network unreachable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:128
+msgid "Proxy response: host unreachable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:129
+msgid "Proxy response: connection refused"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:130
+msgid "Proxy response: TTL expired"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:131
+msgid "Proxy response: command not supported"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:132
+msgid "Proxy response: address type not supported"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:133
+msgid "Proxy response: invalid address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:134
+msgid "Invalid port number"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:135
+msgid "Socket not connected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:136
+msgid "Insufficient resources to complete the operation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:137
+msgid "Can't setup a listening socket : bind failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:138
+msgid "Can't resolve the localhost name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:139
+msgid "Unsupported image format"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:140
+msgid "Can't open file for appending"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:542
+msgid "Can't open file for writing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:142
+msgid "File I/O error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:143
+msgid "Acknowledge error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:982
+msgid "Can't open file for reading"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:145
+msgid "Can't send a zero-size file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:146
+msgid "Missing popup name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:147
+msgid "'item', 'popup', 'label' or 'separator' keyword expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:148
+msgid "Self modification not allowed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:149
+msgid "UNUSED"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:150
+msgid "Feature not available"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:151
+#, fuzzy
+msgid "Unexpected characters in array index"
+msgstr "Niespodziewany znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:152
+#, fuzzy
+msgid "Unexpected end in expression"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:153
+#, fuzzy
+msgid "Unexpected end in array index"
+msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:154
+msgid "Connection thru HTTP proxy failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:155
+msgid "Case , match , regexp , default or break keyword expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:156
+msgid "Access denied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:157
+msgid "Address already in use"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:158
+msgid "Can't assign the requested address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:159
+#, fuzzy
+msgid "Connection reset by peer"
+msgstr "Połączenie przerwane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:160
+msgid "Host unreachable (no route to host)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:161
+#, fuzzy
+msgid "Variable expected"
+msgstr "Oczekiwano zmiennej lub identyfikatora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:162
+msgid "Invalid array index: positive integer expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:163
+msgid "listen() call failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:164
+msgid "This executable has been compiled without SSL support"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:165
+msgid "Secure Socket Layer error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:166
+msgid "Slash (/) character expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:167
+msgid "Unknown string manipulation operation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:168
+#, fuzzy
+msgid "Operation aborted"
+msgstr "Połączenie przerwane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:169
+#, fuzzy
+msgid "Unexpected token"
+msgstr "Niespodziewany znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:170
+msgid "Scope object already defined (unexpected @)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:171
+msgid "There is no $this pointer in this scope (unexpected @)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:140
+#, fuzzy
+msgid "Operation cancelled"
+msgstr "Połączenie przerwane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:170
+#, fuzzy
+msgid "File write error"
+msgstr "Wewnętrzny błąd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:176
+#, fuzzy
+msgid "File read error"
+msgstr "Wewnętrzny błąd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:324
+msgid "Packaging file %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:779
+#, fuzzy
+msgid "Failed to open a source file for reading"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:817
+msgid "Compression library initialization error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:394
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:828
+msgid "Compression library error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:465
+#, fuzzy
+msgid "Compression library internal error"
+msgstr "Wewnętrzny błąd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:485
+msgid "Error while compressing a file stream"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:526
+msgid "Creating package..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:527
+msgid "Writing package header"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:571
+msgid "Writing informational fields"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:597
+msgid "Writing package data"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:659
+msgid "The file specified is not a valid KVIrc package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:668
+msgid ""
+"The package has an invalid version number, it might have been created by a "
+"newer KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:714
+msgid "Invalid info field: the package is probably corrupt"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:745
+msgid ""
+"The package contains compressed data but this executable does not support "
+"compression"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:771
+#, fuzzy
+msgid "Failed to create the target directory"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:784
+msgid "Unpacking file %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:916
+msgid "Error in compressed file stream"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:990
+msgid "Reading package..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:991
+msgid "Reading package header"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:998
+msgid "Reading package data"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:1017
+msgid "Invalid data field: the package is probably corrupt"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1127
+#, fuzzy
+msgid "Select color"
+msgstr "Zaznacz wszystko"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1128
+msgid "&Basic colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1129
+msgid "&Custom colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1130
+msgid "&Red"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1131
+msgid "&Green"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1132
+msgid "Bl&ue"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1133
+msgid "&Define Custom Colors >>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1134
+msgid "&Add to Custom Colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1136
+#, fuzzy
+msgid "Select Font"
+msgstr "Zaznacz wszystko"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1137
+#, fuzzy
+msgid "&Font"
+msgstr "Wytnij"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1138
+msgid "Font st&yle"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1139
+msgid "&Size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1140
+msgid "Sample"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1141
+msgid "Effects"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1142
+msgid "Stri&keout"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1143
+msgid "&Underline"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1144
+#, fuzzy
+msgid "Scr&ipt"
+msgstr "Centrum &skryptów"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1146
+#, fuzzy
+msgid "Parent Directory"
+msgstr "Katalog domowy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1148
+msgid "Forward"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1149
+msgid "Reload"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1150
+#, fuzzy
+msgid "New Directory"
+msgstr "Katalog domowy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1151
+#, fuzzy
+msgid "Bookmarks"
+msgstr "Dodaj zakładkę"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1152
+#, fuzzy
+msgid "Add Bookmark"
+msgstr "Dodaj zakładkę"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1153
+#, fuzzy
+msgid "&Edit Bookmarks"
+msgstr "Dodaj zakładkę"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1154
+msgid "New Bookmark Folder..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1156
+#, fuzzy
+msgid "Sorting"
+msgstr "Centrum &skryptów"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1157
+#, fuzzy
+msgid "By Name"
+msgstr "Zmień nazwę"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1158
+msgid "By Date"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1159
+#, fuzzy
+msgid "By Size"
+msgstr "Tabela &ikon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1160
+#, fuzzy
+msgid "Reverse"
+msgstr "Serwer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1161
+#, fuzzy
+msgid "Directories First"
+msgstr "Przeglądarka &katalogów"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1162
+msgid "Case Insensitive"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1163
+msgid "Short View"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1164
+msgid "Detailed View"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1165
+#, fuzzy
+msgid "Show Hidden Files"
+msgstr "Pokaż ukryte pliki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1166
+msgid "Show Quick Access Navigation Panel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1167
+#, fuzzy
+msgid "Show Preview"
+msgstr "&Okno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1168
+msgid "Separate Directories"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1169
+msgid "Often used directories"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1170
+msgid "Desktop"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1171
+#, fuzzy
+msgid "Home Directory"
+msgstr "Katalog domowy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1172
+msgid "Floppy"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1173
+msgid "Temporary Files"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1174
+#, fuzzy
+msgid "Network"
+msgstr "Usuń serwer proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1175
+#, fuzzy
+msgid "New Directory..."
+msgstr "Katalog domowy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1176
+msgid "Delete"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1177
+msgid "Thumbnail Previews"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1178
+msgid "Large Icons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1179
+msgid "Small Icons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1180
+#, fuzzy
+msgid "Properties..."
+msgstr "Trwa łączenie..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1181
+msgid "&Automatic Preview"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1182
+msgid "&Preview"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1183
+msgid "&Location:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1184
+msgid "&Filter:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1185
+msgid "All Files"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:104
+msgid "- d -- h -- m -- s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:111
+#, c-format
+msgid "%u h %u m %u s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:113
+#, c-format
+msgid "%u h %u%u m %u%u s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:118
+#, c-format
+msgid "%u m %u s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:120
+#, c-format
+msgid "%u m %u%u s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:122
+#, c-format
+msgid "%u s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:127
+#, c-format
+msgid "%u d %u h %u m %u s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:129
+#, c-format
+msgid "%u d %u%u h %u%u m %u%u s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+#, fuzzy
+msgid "Usage"
+msgstr "Użytkownik:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+#, fuzzy
+msgid "message"
+msgstr "Typy plików"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:99
+msgid "-m: send a message instead of a notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:100
+#, fuzzy
+msgid "-w: send notice to all channel owners"
+msgstr "Brak wartości do wstawienia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:101
+#, fuzzy
+msgid "-a: send notice to all channel admins"
+msgstr "Brak wartości do wstawienia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:102
+#, fuzzy
+msgid "-o: send notice to all channel ops"
+msgstr "Brak wartości do wstawienia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:103
+msgid "-h: send notice to all channel halfops"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:104
+msgid "-v: send notice to all channel voices"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:105
+msgid "-q: quiet mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:138
+msgid "Sending wallop to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:314
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:410
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:493
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:535
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:593
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:653
+#, fuzzy
+msgid "Usage:"
+msgstr "Użytkownik:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:223
+msgid "reason"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:272
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:416
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:440
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:599
+#, fuzzy
+msgid "This is not a channel window"
+msgstr "&Okno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:581
+#, fuzzy
+msgid "Unsupported type: $0"
+msgstr "Używaj IpV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:604
+#, fuzzy
+msgid "Channel Owner"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:606
+#, fuzzy
+msgid "Channel Administrator"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:608
+#, fuzzy
+msgid "Channel Operator"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:610
+#, fuzzy
+msgid "Half Operator"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:612
+msgid "Voice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:614
+#, fuzzy
+msgid "User Operator"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:616
+msgid "Normal User"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:641
+msgid "You must use DNS in an IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:647
+#, fuzzy
+msgid "You must be connected to a server"
+msgstr "Nie jesteś połączony z serwerem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:664
+#, fuzzy
+msgid "No such user: $0"
+msgstr "Nie ma takiego modułu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:33
+msgid "The default script has been successfully installed."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:34
+msgid "To connect to a server, type /server <server name>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:36
+msgid "Happy ircing :)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:15
+#, fuzzy
+msgid "Options"
+msgstr "Akcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:40
+#, fuzzy
+msgid "Window operations"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMENAME@"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMEDESCRIPTION@"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:18
+msgid "Stop Highlighting (Local)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:23
+msgid "Start Highlighting (Local)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:28
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:61
+#, fuzzy
+msgid "Always Highlight"
+msgstr "M&inimalizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:30
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:55
+#, fuzzy
+msgid "Highlight as"
+msgstr "M&inimalizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:66
+#, fuzzy
+msgid "Stop Highlighting"
+msgstr "M&inimalizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:82
+msgid "is being ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:87
+#, fuzzy
+msgid "is not being ignored"
+msgstr "Za&rejestrowani użytkownicy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:93
+#, fuzzy
+msgid "Enable Ignore"
+msgstr "Błędny parametr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:98
+#, fuzzy
+msgid "Ignore as..."
+msgstr "Trwa łączenie..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:240
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:282
+msgid "Ignore as"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:290
+msgid "Unignore"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:308
+#, fuzzy
+msgid "is registered as"
+msgstr "Za&rejestrowani użytkownicy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:311
+msgid "is in the notify list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:314
+#, fuzzy
+msgid "has a default avatar"
+msgstr "Obraz Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:317
+#, fuzzy
+msgid "is not registered"
+msgstr "Za&rejestrowani użytkownicy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:323
+#, fuzzy
+msgid "Register"
+msgstr "Za&rejestrowani użytkownicy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:328
+#, fuzzy
+msgid "Quick Registration"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:330
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:355
+#, fuzzy
+msgid "Register as"
+msgstr "Za&rejestrowani użytkownicy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:361
+#, fuzzy
+msgid "Edit Registration"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:366
+#, fuzzy
+msgid "Unregister"
+msgstr "Za&rejestrowani użytkownicy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:373
+msgid "Add to Notify"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:378
+#, fuzzy
+msgid "Remove from Notify"
+msgstr "Usuń serwer proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:385
+#, fuzzy
+msgid "Choose"
+msgstr "Zamknij"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:387
+#, fuzzy
+msgid "Choose Avatar Image File"
+msgstr "Wybierz katalog..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:396
+#, fuzzy
+msgid "Set as Default"
+msgstr "Data"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:401
+#, fuzzy
+msgid "Clear Default"
+msgstr "Wyczyść"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:412
+msgid "Copy To Clipboard"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:433
+#, fuzzy
+msgid "Ban"
+msgstr "Dodaj zakładkę"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1037
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1084
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1224
+#, fuzzy
+msgid "Multiple Users"
+msgstr "Pokazuj skrócone zmiany trybów"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:577
+#, fuzzy
+msgid "&Ban"
+msgstr "Dodaj zakładkę"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1089
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1229
+msgid "idle time"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:758
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1236
+#, fuzzy
+msgid "&Information"
+msgstr "Ogólne opcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1115
+msgid "DNS for"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:499
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1120
+#, fuzzy
+msgid "Mask for"
+msgstr "&Narzędzia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:505
+#, fuzzy
+msgid "&Control"
+msgstr "Połącz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:509
+msgid "O&wner"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:514
+#, fuzzy
+msgid "&Deowner"
+msgstr "Po&moc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:519
+#, fuzzy
+msgid "&Administrator"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:524
+#, fuzzy
+msgid "&Deadministrator"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:529
+msgid "&Op"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:534
+#, fuzzy
+msgid "&Deop"
+msgstr "Po&moc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:539
+#, fuzzy
+msgid "&Halfop"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:544
+#, fuzzy
+msgid "&Dehalfop"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:549
+msgid "&Voice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:554
+msgid "D&evoice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:561
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "&Kick"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+msgid "K&ick"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "With..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+#, fuzzy
+msgid "Kick Reason"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Enter a kick reason"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "Kick/Ban"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Kick/Ban Reason"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Enter a kick/ban reason"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+#, fuzzy
+msgid "&Kick/Ban"
+msgstr "Dodaj zakładkę"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:604
+#, fuzzy
+msgid "Configure ban mask..."
+msgstr "Zarejestrowani użytkownicy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:612
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1263
+msgid "&Query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:625
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1136
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1276
+#, fuzzy
+msgid "&Registration"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1278
+#, fuzzy
+msgid "&Highlight"
+msgstr "M&inimalizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:629
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1280
+msgid "Ig&nore"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:726
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1050
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1138
+#, fuzzy
+msgid "Notify Avatar"
+msgstr "Obraz Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:705
+#, fuzzy
+msgid "&Part"
+msgstr "Wklej"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:664
+#, fuzzy
+msgid "Copy Channel Address"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:749
+#, fuzzy
+msgid "Channels"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:693
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:753
+#, fuzzy
+msgid "&Join Channels..."
+msgstr "Ostatnie &kanały"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:700
+#, fuzzy
+msgid "&Hop"
+msgstr "Po&moc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:733
+msgid "Copy Channel URL to Clipboard"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:782
+#, fuzzy
+msgid "l (Connections)"
+msgstr "Połączenie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:787
+msgid "m (Command Usage)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:792
+#, fuzzy
+msgid "o (Operators)"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:797
+#, fuzzy
+msgid "t (Connection stats ?)"
+msgstr "Połączenie przerwane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:802
+msgid "u (Uptime)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:807
+msgid "y (y-Lines)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:812
+msgid "z (Debug Stats?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:909
+msgid "Chat with"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:914
+#, fuzzy
+msgid "Reverse Chat with"
+msgstr "Serwer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:919
+msgid "Secure Chat with"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:926
+#, fuzzy
+msgid "Send to"
+msgstr "Data"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:931
+#, fuzzy
+msgid "Secure send to"
+msgstr "Serwer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:936
+#, fuzzy
+msgid "Reverse Send to"
+msgstr "Serwer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:941
+#, fuzzy
+msgid "Secure Reverse Send to"
+msgstr "Serwer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:948
+#, fuzzy
+msgid "TDCC Send to"
+msgstr "Data"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:953
+#, fuzzy
+msgid "TDCC Reverse Send to"
+msgstr "Serwer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:960
+msgid "Voice Chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1134
+msgid "&Ignore"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1165
+#, fuzzy
+msgid "Logging to"
+msgstr "Tekst nie odnaleziony"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1167
+#, fuzzy
+msgid "Flush Log File"
+msgstr "Wybierz nazwę zapisywanego pliku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1174
+#, fuzzy
+msgid "Stop Logging"
+msgstr "Tekst nie odnaleziony"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1179
+#, fuzzy
+msgid "Not Logging"
+msgstr "Tekst nie odnaleziony"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+msgid "Log To Default File"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+msgid "Include Existing Buffer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+#, fuzzy
+msgid "Log To..."
+msgstr "Usuń"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1201
+#, fuzzy
+msgid "Choose Log Filename"
+msgstr "Wybierz nazwę zapisywanego pliku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1282
+#, fuzzy
+msgid "Notify avatar"
+msgstr "Obraz Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:50
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$copyfiles must be a "
+"source directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:56
+#, c-format
+msgid ""
+"[Installer] The second argument to \\%installer->\\$copyfiles must be a file "
+"name or file regexp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:62
+#, c-format
+msgid ""
+"[Installer] The third argument to \\%installer->\\$copyfiles must be a "
+"destination directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:94
+#, fuzzy
+msgid "[Installer] Failed to create directory"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:104
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$includefiles must be a "
+"source directory"
+msgstr ""
+
+#, fuzzy
+#~ msgid "Basic Properties"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid "Choose a server to connect"
+#~ msgstr "Brak połączenia"
+
+#~ msgid "Server:"
+#~ msgstr "Serwer:"
+
+#, fuzzy
+#~ msgid "Port:"
+#~ msgstr "Centrum &skryptów"
+
+#, fuzzy
+#~ msgid "Use server config"
+#~ msgstr "Wygląd tekstu"
+
+#, fuzzy
+#~ msgid "Config file:"
+#~ msgstr "&Opcje"
+
+#, fuzzy
+#~ msgid "Smart"
+#~ msgstr "Wklej"
+
+#, fuzzy
+#~ msgid "Window with ID '%s' not found"
+#~ msgstr "Tekst nie odnaleziony"
+
+#, fuzzy
+#~ msgid "Hide ignore-messages (incomplete)"
+#~ msgstr "Interfejs"
+
+#, fuzzy
+#~ msgid "Can't fill non-widget object"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Load Theme - KVIrc"
+#~ msgstr "Wybierz katalog..."
+
+#, fuzzy
+#~ msgid "Unable to create theme directory."
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "<b>Nickname:</b>"
+#~ msgstr "Ostatnie &nicki"
+
+#, fuzzy
+#~ msgid "URL Handlers"
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "Finish Setup"
+#~ msgstr "Znajdź"
+
+#~ msgid "Empty string"
+#~ msgstr "Pusty łańcuch"
+
+#~ msgid "No such open mode: %s"
+#~ msgstr "Tryb otwarcia '%s' nie istnieje"
+
+#~ msgid "Negative file index supplied !"
+#~ msgstr "Podano ujemny index pliku!"
+
+#~ msgid "Argument length is 0 - empty string"
+#~ msgstr "Długość argumentu wynosi 0 - pusty łańcuch"
+
+#~ msgid "Length is a negative number !"
+#~ msgstr "Długość jest liczbą ujemną!"
+
+#, fuzzy
+#~ msgid "%cListing Qt Properties for widget object %s (%s)"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "No such QT property (%s)"
+#~ msgstr "&Nowy kontekst irc"
+
+#, fuzzy
+#~ msgid "missing parameter"
+#~ msgstr "Brak nazwy zmiennej"
+
+#, fuzzy
+#~ msgid "Invalid parameter (%s)"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Unsupported QT property (%s)"
+#~ msgstr "Używaj IpV6"
+
+#, fuzzy
+#~ msgid "Missing parameters"
+#~ msgstr "Brak nazwy zmiennej"
+
+#, fuzzy
+#~ msgid "Can't find the multimedia file %s"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Missing target, no action taken"
+#~ msgstr "Brak nazwy zmiennej"
+
+#, fuzzy
+#~ msgid "%s plays '%s' to %s"
+#~ msgstr "%s (+%s) na %s"
+
+#, fuzzy
+#~ msgid "Window with caption %Q not found"
+#~ msgstr "Tekst nie odnaleziony"
+
+#, fuzzy
+#~ msgid "Unknown channel mode"
+#~ msgstr "Nieznany tryb wyświetlania"
+
+#, fuzzy
+#~ msgid "http://www.kvirc.net/"
+#~ msgstr ""
+#~ "\n"
+#~ "Strona domowa: http://www.kvirc.net"
+
+#, fuzzy
+#~ msgid "My Custom Servers"
+#~ msgstr "Serwery"
+
+#, fuzzy
+#~ msgid "Topic for \r!c\r%Q\r was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "Invalid size parameter (%s)"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Unknown widget type: %s"
+#~ msgstr "Nieznane wyrównanie: %s"
+
+#, fuzzy
+#~ msgid "Can't find the widget object assuming 0"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Invalid Parameters"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Invalid row parameter (%s)"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Invalid column parameter (%s)"
+#~ msgstr "Błędny margines"
+
+#, fuzzy
+#~ msgid "Unknown frame style"
+#~ msgstr "Nieznany styl ramki/cienia: %s"
+
+#, fuzzy
+#~ msgid "Ident Service"
+#~ msgstr "Ostatnie &serwery"
+
+#, fuzzy
+#~ msgid "Reconnection Options"
+#~ msgstr "Połączenie"
+
+#, fuzzy
+#~ msgid "Flood Protection"
+#~ msgstr "Brak połączenia"
+
+#, fuzzy
+#~ msgid "File Transfer"
+#~ msgstr "Nowe o&kno"
+
+#, fuzzy
+#~ msgid "General options"
+#~ msgstr "O&gólne opcje"
+
+#, fuzzy
+#~ msgid "Interface"
+#~ msgstr "Interfejs"
+
+#~ msgid "General"
+#~ msgstr "Ogólne"
+
+#, fuzzy
+#~ msgid "Transparency"
+#~ msgstr "Transport"
+
+#, fuzzy
+#~ msgid "ToolBar Applets"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid "Output"
+#~ msgstr "Kontrola wyjścia"
+
+#, fuzzy
+#~ msgid "Media Types"
+#~ msgstr "Typy plików"
+
+#, fuzzy
+#~ msgid "Contacts"
+#~ msgstr "Połącz"
+
+#, fuzzy
+#~ msgid "Output Style"
+#~ msgstr "Kontrola wyjścia"
+
+#, fuzzy
+#~ msgid "Proxy Hosts"
+#~ msgstr "Serwery Proxy"
+
+#, fuzzy
+#~ msgid "Servers"
+#~ msgstr "Serwer:"
+
+#, fuzzy
+#~ msgid "Text icons"
+#~ msgstr "Wygląd tekstu"
+
+#, fuzzy
+#~ msgid "Scripting Engine"
+#~ msgstr "Skrypty"
+
+#, fuzzy
+#~ msgid "Protection"
+#~ msgstr "Brak połączenia"
+
+#, fuzzy
+#~ msgid "Avatar Handling"
+#~ msgstr "Obraz Avatar"
+
+#, fuzzy
+#~ msgid "Invalid timeout (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid port (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#~ msgid "Non-negative integer length expected as parameter"
+#~ msgstr "Spodziewano się dodatniej liczby całkowitej"
+
+#, fuzzy
+#~ msgid "Invalid x offset parameter (%s)"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Invalid y offset parameter (%s)"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Can't find the specified file '%s'."
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Quiet"
+#~ msgstr "&Wyjście"
+
+#, fuzzy
+#~ msgid "Paranoic"
+#~ msgstr "Serwery"
+
+#, fuzzy
+#~ msgid "Show in active window"
+#~ msgstr "&Okno"
+
+#, fuzzy
+#~ msgid "External messages"
+#~ msgstr "Użytkownik:"
+
+#, fuzzy
+#~ msgid "Whois replies"
+#~ msgstr "Pokazuj pingi od serwera"
+
+#, fuzzy
+#~ msgid "ChanServ and NickServ notices"
+#~ msgstr "Serwery"
+
+#, fuzzy
+#~ msgid "Server replies"
+#~ msgstr "Ogólne opcje"
+
+#, fuzzy
+#~ msgid "Server notices"
+#~ msgstr "Serwery"
+
+#, fuzzy
+#~ msgid "Show extended server information"
+#~ msgstr "Pokazuj rozszeżone informacje o serwerze"
+
+#~ msgid "Show server pings"
+#~ msgstr "Pokazuj pingi od serwera"
+
+#~ msgid "Show own parts in the console"
+#~ msgstr "Pokazuj własne wyjścia z kanałów w konsoli"
+
+#~ msgid "Show compact mode changes"
+#~ msgstr "Pokazuj skrócone zmiany trybów"
+
+#, fuzzy
+#~ msgid "On Channel Join"
+#~ msgstr "Anuluj"
+
+#, fuzzy
+#~ msgid "Echo channel topic"
+#~ msgstr "Pokaż czas synchronizacji kanału"
+
+#~ msgid "Show channel sync time"
+#~ msgstr "Pokaż czas synchronizacji kanału"
+
+#, fuzzy
+#~ msgid "Theme name:"
+#~ msgstr "Użytkownik:"
+
+#, fuzzy
+#~ msgid "Unable to create theme utils directory."
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for reading."
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for writing."
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "<p>Theme: %1</p>"
+#~ msgstr "Użytkownik:"
+
+#, fuzzy
+#~ msgid "On Unexpected Disconnect"
+#~ msgstr "Niespodziewany znak"
+
+#, fuzzy
+#~ msgid "Keep channels open"
+#~ msgstr "Ostatnie &kanały"
+
+#, fuzzy
+#~ msgid "No such options page class name %Q"
+#~ msgstr "Nie ma takiej klasy"
+
+#, fuzzy
+#~ msgid "Show nicknames in bold"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "Show user and host"
+#~ msgstr "Pokazuj pingi od serwera"
+
+#, fuzzy
+#~ msgid "Show channel mode prefix"
+#~ msgstr "Nieznany tryb wyświetlania"
+
+#, fuzzy
+#~ msgid "Font:"
+#~ msgstr "Wytnij"
+
+#, fuzzy
+#~ msgid "Nickname alternatives"
+#~ msgstr "Ostatnie &nicki"
+
+#, fuzzy
+#~ msgid "Alt. Nickname 1:"
+#~ msgstr "Ostatnie &nicki"
+
+#, fuzzy
+#~ msgid "Alt. Nickname 2:"
+#~ msgstr "Ostatnie &nicki"
+
+#, fuzzy
+#~ msgid "Alt. Nickname 3:"
+#~ msgstr "Ostatnie &nicki"
+
+#, fuzzy
+#~ msgid "Alternatives..."
+#~ msgstr "Trwa łączenie..."
+
+#~ msgid "Username:"
+#~ msgstr "Użytkownik:"
+
+#, fuzzy
+#~ msgid "Server notices (+s)"
+#~ msgstr "Serwery"
+
+#, fuzzy
+#~ msgid "Pattern"
+#~ msgstr "Wklej"
+
+#, fuzzy
+#~ msgid "Save path:"
+#~ msgstr "Data"
+
+#, fuzzy
+#~ msgid "Local open command:"
+#~ msgstr "Brak takiej komendy w module"
+
+#, fuzzy
+#~ msgid "New Media Type"
+#~ msgstr "Typy plików"
+
+#, fuzzy
+#~ msgid "Registered NickName"
+#~ msgstr "Za&rejestrowani użytkownicy"
+
+#, fuzzy
+#~ msgid "Message Regexp"
+#~ msgstr "Typy plików"
+
+#, fuzzy
+#~ msgid "Server mask"
+#~ msgstr "Serwer:"
+
+#, fuzzy
+#~ msgid "Invalid NickServ Rule"
+#~ msgstr "Serwery"
+
+#, fuzzy
+#~ msgid "NickServ Request Mask"
+#~ msgstr "Tryb &użytkownika"
+
+#, fuzzy
+#~ msgid "Add Rule"
+#~ msgstr "Dodaj nowy serwer proxy"
+
+#, fuzzy
+#~ msgid "Delete Rule"
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "Nick completion"
+#~ msgstr "Brak połączenia"
+
+#, fuzzy
+#~ msgid "Use proxy"
+#~ msgstr "Usuń serwer proxy"
+
+#, fuzzy
+#~ msgid "New Proxy"
+#~ msgstr "Usuń serwer proxy"
+
+#, fuzzy
+#~ msgid "Remove Proxy"
+#~ msgstr "Usuń serwer proxy"
+
+#~ msgid "Password:"
+#~ msgstr "Hasło:"
+
+#, fuzzy
+#~ msgid "Use IPv6 protocol"
+#~ msgstr "Używaj IpV6"
+
+#, fuzzy
+#~ msgid "&New Proxy"
+#~ msgstr "Usuń serwer proxy"
+
+#, fuzzy
+#~ msgid "Re&move Proxy"
+#~ msgstr "Usuń serwer proxy"
+
+#, fuzzy
+#~ msgid "Default text encoding:"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Minimize in tray"
+#~ msgstr "M&inimalizuj"
+
+#, fuzzy
+#~ msgid "Confirm quit with active connections"
+#~ msgstr "Brak połączenia"
+
+#, fuzzy
+#~ msgid "Remember window properties"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "Registered Users"
+#~ msgstr "Za&rejestrowani użytkownicy"
+
+#, fuzzy
+#~ msgid "Send unknown commands as /RAW"
+#~ msgstr "Nieznana komenda"
+
+#, fuzzy
+#~ msgid "Create minimized debug window"
+#~ msgstr "Minimalizuj"
+
+#, fuzzy
+#~ msgid "Message Type"
+#~ msgstr "Typy plików"
+
+#, fuzzy
+#~ msgid "Choose a Filename - KVIrc "
+#~ msgstr "Wybierz katalog..."
+
+#, fuzzy
+#~ msgid "Hide icons in Popup"
+#~ msgstr "Okno &terminala"
+
+#, fuzzy
+#~ msgid "Active Background"
+#~ msgstr "Akcje"
+
+#, fuzzy
+#~ msgid "Inactive Background"
+#~ msgstr "Akcje"
+
+#, fuzzy
+#~ msgid "Away Nickname"
+#~ msgstr "Ostatnie &nicki"
+
+#, fuzzy
+#~ msgid "Change nickname on away"
+#~ msgstr "Ostatnie &nicki"
+
+#, fuzzy
+#~ msgid "Custom nickname:"
+#~ msgstr "Ostatnie &nicki"
+
+#, fuzzy
+#~ msgid "Nickname Colors"
+#~ msgstr "Ostatnie &nicki"
+
+#, fuzzy
+#~ msgid "Selected:"
+#~ msgstr "Zaznacz wszystko"
+
+#, fuzzy
+#~ msgid "Channel owner:"
+#~ msgstr "Anuluj"
+
+#, fuzzy
+#~ msgid "Channel admin:"
+#~ msgstr "Anuluj"
+
+#, fuzzy
+#~ msgid "Half-op:"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "Nickname Grid"
+#~ msgstr "Ostatnie &nicki"
+
+#, fuzzy
+#~ msgid "Draw nickname grid"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "Grid type:"
+#~ msgstr "Typy plików"
+
+#, fuzzy
+#~ msgid "Show user channel icons"
+#~ msgstr "Pokazuj pingi od serwera"
+
+#, fuzzy
+#~ msgid "Show user channel activity indicator"
+#~ msgstr "Pokaż czas synchronizacji kanału"
+
+#, fuzzy
+#~ msgid "On Channel Kick"
+#~ msgstr "Anuluj"
+
+#, fuzzy
+#~ msgid "Keep channel open"
+#~ msgstr "Ostatnie &kanały"
+
+#, fuzzy
+#~ msgid "Rejoin channel"
+#~ msgstr "Ostatnie &kanały"
+
+#, fuzzy
+#~ msgid "On Channel Part"
+#~ msgstr "Anuluj"
+
+#, fuzzy
+#~ msgid "Private Key"
+#~ msgstr "Wklej"
+
+#, fuzzy
+#~ msgid "Private key password:"
+#~ msgstr "Hasło:"
+
+#, fuzzy
+#~ msgid "Network Interfaces"
+#~ msgstr "Interfejs"
+
+#, fuzzy
+#~ msgid "Bind IPv4 connections to:"
+#~ msgstr "Brak połączenia"
+
+#, fuzzy
+#~ msgid "Bind IPv6 connections to:"
+#~ msgstr "Brak połączenia"
+
+#, fuzzy
+#~ msgid "Private messages"
+#~ msgstr "Wklej"
+
+#, fuzzy
+#~ msgid "Private notices"
+#~ msgstr "Serwery"
+
+#, fuzzy
+#~ msgid "Minimize new queries"
+#~ msgstr "M&inimalizuj"
+
+#, fuzzy
+#~ msgid "Enable target user tracking"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Restrict alert"
+#~ msgstr "P&rzywróć"
+
+#, fuzzy
+#~ msgid "Query windows"
+#~ msgstr "Okno &terminala"
+
+#, fuzzy
+#~ msgid "Channel windows"
+#~ msgstr "Ułóż kaskadują&co"
+
+#, fuzzy
+#~ msgid "DCC Chat windows"
+#~ msgstr "Ułóż kaskadują&co"
+
+#, fuzzy
+#~ msgid "Console windows"
+#~ msgstr "Okno &terminala"
+
+#, fuzzy
+#~ msgid "<b>http://</b> handler command:"
+#~ msgstr "Brak takiej komendy w module"
+
+#, fuzzy
+#~ msgid "<b>https://</b> handler command:"
+#~ msgstr "Brak takiej komendy w module"
+
+#, fuzzy
+#~ msgid "<b>ftp://</b> handler command:"
+#~ msgstr "Brak takiej komendy w module"
+
+#, fuzzy
+#~ msgid "<b>mailto:</b> handler command:"
+#~ msgstr "Brak takiej komendy w module"
+
+#, fuzzy
+#~ msgid "<b>file://</b> handler command:"
+#~ msgstr "Brak takiej komendy w module"
+
+#, fuzzy
+#~ msgid "Unknown protocol handler command:"
+#~ msgstr "Nieznana komenda"
+
+#, fuzzy
+#~ msgid "Ident username:"
+#~ msgstr "Interfejs"
+
+#, fuzzy
+#~ msgid "Service port:"
+#~ msgstr "Serwer:"
+
+#, fuzzy
+#~ msgid "Advanced configuration"
+#~ msgstr "Zapi&sz ustawienia"
+
+#, fuzzy
+#~ msgid "Show window icons in taskbar"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "Show IRC context indicator in taskbar"
+#~ msgstr "&Nowy kontekst irc"
+
+#, fuzzy
+#~ msgid "Text/Alert Colors"
+#~ msgstr "Zamknij"
+
+#, fuzzy
+#~ msgid "Minimum width:"
+#~ msgstr "M&inimalizuj"
+
+#, fuzzy
+#~ msgid "Minimized:"
+#~ msgstr "M&inimalizuj"
+
+#, fuzzy
+#~ msgid "Private/channel notices"
+#~ msgstr "Anuluj"
+
+#, fuzzy
+#~ msgid "Use verbose ignore (show messages in console)"
+#~ msgstr "Bądź gadatliwy (pokazuje wewnętrzne działanie)"
+
+#, fuzzy
+#~ msgid "Network Properties"
+#~ msgstr "Interfejs"
+
+#, fuzzy
+#~ msgid "DCC socket timeout:"
+#~ msgstr "Połączenie"
+
+#, fuzzy
+#~ msgid "Highest port:"
+#~ msgstr "Serwer:"
+
+#, fuzzy
+#~ msgid "Idle interval:"
+#~ msgstr "Interfejs"
+
+#~ msgid "Abort"
+#~ msgstr "Przerwij"
+
+#, fuzzy
+#~ msgid "Use avatar"
+#~ msgstr "Obraz Avatar"
+
+#, fuzzy
+#~ msgid "Avatar Download Failed - KVIrc"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Scaling"
+#~ msgstr "Skrypty"
+
+#, fuzzy
+#~ msgid "Image width:"
+#~ msgstr "M&inimalizuj"
+
+#, fuzzy
+#~ msgid "Avatar offer timeout:"
+#~ msgstr "Obraz Avatar"
+
+#, fuzzy
+#~ msgid "Network Details"
+#~ msgstr "Interfejs"
+
+#, fuzzy
+#~ msgid "Encoding:"
+#~ msgstr "Wygląd tekstu"
+
+#, fuzzy
+#~ msgid "Connect to this network at startup"
+#~ msgstr "Połączenie przerwane"
+
+#, fuzzy
+#~ msgid "On Connect"
+#~ msgstr "Połącz"
+
+#, fuzzy
+#~ msgid "Server Details"
+#~ msgstr "Serwery"
+
+#, fuzzy
+#~ msgid "Use SSL protocol"
+#~ msgstr "Używaj IpV6"
+
+#, fuzzy
+#~ msgid "Connect to this server at startup"
+#~ msgstr "Połączenie przerwane"
+
+#, fuzzy
+#~ msgid "Use Network Encoding"
+#~ msgstr "Wygląd tekstu"
+
+#, fuzzy
+#~ msgid "Proxy server:"
+#~ msgstr "Serwery IRC"
+
+#, fuzzy
+#~ msgid "Direct connection"
+#~ msgstr "brak połączenia"
+
+#, fuzzy
+#~ msgid "New Server"
+#~ msgstr "Serwery"
+
+#, fuzzy
+#~ msgid "Remove Network/Server"
+#~ msgstr "Usuń serwer proxy"
+
+#, fuzzy
+#~ msgid "Paste Server"
+#~ msgstr "Serwery"
+
+#, fuzzy
+#~ msgid "Import List"
+#~ msgstr "Trwa łączenie..."
+
+#, fuzzy
+#~ msgid "Connect &Now"
+#~ msgstr "Połącz"
+
+#, fuzzy
+#~ msgid "Remove Network"
+#~ msgstr "Usuń serwer proxy"
+
+#, fuzzy
+#~ msgid "&New Server"
+#~ msgstr "Serwery"
+
+#, fuzzy
+#~ msgid "Re&move Server"
+#~ msgstr "Usuń serwer proxy"
+
+#, fuzzy
+#~ msgid "&Copy Server"
+#~ msgstr "Serwery"
+
+#, fuzzy
+#~ msgid "&Paste Server"
+#~ msgstr "Serwery"
+
+#, fuzzy
+#~ msgid "Clear List"
+#~ msgstr "Wyczyść"
+
+#, fuzzy
+#~ msgid "Sound System"
+#~ msgstr "Wewnętrzny błąd"
+
+#, fuzzy
+#~ msgid "Media Player"
+#~ msgstr "Typy plików"
+
+#, fuzzy
+#~ msgid "%s (module %s)"
+#~ msgstr "%s na %s"
+
+#, fuzzy
+#~ msgid "Encoding"
+#~ msgstr "Wygląd tekstu"
+
+#, fuzzy
+#~ msgid "No nickname specified"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "No netmask specified"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "No property name specified"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "Missing property name"
+#~ msgstr "Brak nazwy zmiennej"
+
+#, fuzzy
+#~ msgid "No file specified"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "Invalid progress value (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid index parameter (%s)"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Invalid parameter"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Can't find the object "
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "Can't find the tab object "
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Can't find the widget(%s)"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Invalid marging value (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#~ msgid "No value to insert"
+#~ msgstr "Brak wartości do wstawienia"
+
+#~ msgid "Invalid index(%s)"
+#~ msgstr "Nieprawidłowy indeks(%s)"
+
+#~ msgid "index %u out of range"
+#~ msgstr "indeks %u poza zakresem"
+
+#~ msgid "Invalid index (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#~ msgid "Index %u out of range"
+#~ msgstr "Indeks %u poza zakresem"
+
+#, fuzzy
+#~ msgid "Invalid margin value (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid spacing value (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid stretch value (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid from_row parameter (%s)"
+#~ msgstr "Błędny margines"
+
+#, fuzzy
+#~ msgid "Invalid to_row parameter (%s)"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Invalid from_column parameter (%s)"
+#~ msgstr "Błędny margines"
+
+#, fuzzy
+#~ msgid "Invalid to_column parameter (%s)"
+#~ msgstr "Błędny margines"
+
+#, fuzzy
+#~ msgid "Invalid parameters"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Can't find the widget/pixmap (%s)"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Can't find the widget object to remove (%s)"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Can't remove a non-widget object"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "Can't find the widget (%s)"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Invalid zoom value (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid depth value (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid value (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid paragraph value (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid " I can't find the specified file."
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "No destination specified"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "Can't find the destination widget/pixmap (%s)"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "No source specified"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "Can't find the source widget/pixmap (%s)"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Invalid x parameter (%s)"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Invalid y parameter (%s)"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Can't find the listviewitem object to add (%s)"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "Invalid column (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#~ msgid "Invalid margin parameter"
+#~ msgstr "Błędny margines"
+
+#~ msgid "Unknown alignment: %s"
+#~ msgstr "Nieznane wyrównanie: %s"
+
+#~ msgid "Unknown frame / shadow style: %s"
+#~ msgstr "Nieznany styl ramki/cienia: %s"
+
+#~ msgid "Hey ! You wanna know my echo mode or what ?"
+#~ msgstr "Hej! Chcesz znać mój tryb wyświetlania czy co ?"
+
+#~ msgid "Unknown echo mode"
+#~ msgstr "Nieznany tryb wyświetlania"
+
+#, fuzzy
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "Invalid object."
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Can't find the popupmenu object to add (%s)"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "Can't find the widget object (%s)"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Invalid columns value (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid size value (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid icon identifier"
+#~ msgstr "Błędny margines"
+
+#, fuzzy
+#~ msgid "No button name specified!"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "No separator name specified"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "No toolbar id specified"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "Background not found %s "
+#~ msgstr "Brak połączenia"
+
+#, fuzzy
+#~ msgid "Can't open the file \"%s\" for reading"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Read error for file %s"
+#~ msgstr "Nastąpił błąd odczytu"
+
+#, fuzzy
+#~ msgid "No such options page class name"
+#~ msgstr "Nie ma takiej klasy"
+
+#, fuzzy
+#~ msgid "No link text specified"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "Invalid screen coordinates"
+#~ msgstr "Błędny margines"
+
+#, fuzzy
+#~ msgid "Show Crypto Controller"
+#~ msgstr "&Nowy kontekst irc"
+
+#, fuzzy
+#~ msgid "defpopup: internal error"
+#~ msgstr "Wewnętrzny błąd"
+
+#, fuzzy
+#~ msgid "User Messages"
+#~ msgstr "Użytkownik:"
+
+#~ msgid "Transport"
+#~ msgstr "Transport"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %s"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %Q"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "<unknown size>"
+#~ msgstr "nieznany"
+
+#, fuzzy
+#~ msgid "Missing target nickname"
+#~ msgstr "Brak nazwy zmiennej"
+
+#, fuzzy
+#~ msgid "Missing filename"
+#~ msgstr "Brak nazwy zmiennej"
+
+#, fuzzy
+#~ msgid "The first parameter must be an unsigned number"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "No filename specified"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "Invalid timeout, ignoring"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid visible name: using default"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Ops..failed to add the sharedfile..."
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid " I can't find the specified file %s."
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Missing file name to parse"
+#~ msgstr "Brak nazwy zmiennej"
+
+#, fuzzy
+#~ msgid "A popup name is expected as parameter"
+#~ msgstr "Spodziewano się dodatniej liczby całkowitej"
+
+#, fuzzy
+#~ msgid "No socket text specified"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "&Export Alias To..."
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "Avatars"
+#~ msgstr "Obraz Avatar"
+
+#, fuzzy
+#~ msgid "Parser"
+#~ msgstr "Wklej"
+
+#, fuzzy
+#~ msgid "runtime error"
+#~ msgstr "Wewnętrzny błąd"
+
+#, fuzzy
+#~ msgid "NickServ mask:"
+#~ msgstr "Tryb &użytkownika"
+
+#, fuzzy
+#~ msgid "Re&move Rule"
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "Show IRC Context Toolbar"
+#~ msgstr "&Nowy kontekst irc"
+
+#, fuzzy
+#~ msgid "IRC Tools"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid "&User Mode"
+#~ msgstr "Tryb &użytkownika"
+
+#, fuzzy
+#~ msgid "&Join Channel"
+#~ msgstr "Ostatnie &kanały"
+
+#, fuzzy
+#~ msgid "Change server settings"
+#~ msgstr "Pokazuj pingi od serwera"
+
+#, fuzzy
+#~ msgid "Change identity settings"
+#~ msgstr "Tożsamość"
+
+#, fuzzy
+#~ msgid "Configure KVIrc"
+#~ msgstr "&Opcje"
+
+#, fuzzy
+#~ msgid "Cascade"
+#~ msgstr "Anuluj"
+
+#, fuzzy
+#~ msgid "Minimize All"
+#~ msgstr "M&inimalizuj"
+
+#, fuzzy
+#~ msgid "New &Separator"
+#~ msgstr "Serwery"
+
+#, fuzzy
+#~ msgid "Scripting Toolbar"
+#~ msgstr "Centrum &skryptów"
+
+#, fuzzy
+#~ msgid "Show alias editor"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid "Show event editor"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid "Show popup editor"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid "Show raw event editor"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid "Show toolbar editor"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid " /dns <nickname>"
+#~ msgstr "Ostatnie &nicki"
+
+#~ msgid "New &Frame Window"
+#~ msgstr "Nowe o&kno"
+
+#, fuzzy
+#~ msgid "Disable"
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "Connection attempt failed (%s): %s"
+#~ msgstr "Połączenie przerwane"
+
+#, fuzzy
+#~ msgid "Be verbose (show some internal actions)"
+#~ msgstr "Bądź gadatliwy (pokazuje wewnętrzne działanie)"
+
+#, fuzzy
+#~ msgid "Never"
+#~ msgstr "Serwer:"
+
+#, fuzzy
+#~ msgid "Offer list window"
+#~ msgstr "Okno &terminala"
+
+#, fuzzy
+#~ msgid "Remove all"
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "User mask"
+#~ msgstr "Tryb &użytkownika"
+
+#, fuzzy
+#~ msgid "Choose the file to offer"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "System:"
+#~ msgstr "Wewnętrzny błąd"
+
+#, fuzzy
+#~ msgid "&Change"
+#~ msgstr "Anuluj"
+
+#, fuzzy
+#~ msgid "Connections in progress"
+#~ msgstr "łączenie..."
+
+#, fuzzy
+#~ msgid "Select the file name for the exported aliases file"
+#~ msgstr "Zaznacz wszystko"
+
+#, fuzzy
+#~ msgid "You're not connected to a server: list cannot be requested"
+#~ msgstr "Nie jesteś połączony z serwerem"
+
+#, fuzzy
+#~ msgid "Select the file name for the exported popup file"
+#~ msgstr "Zaznacz wszystko"
+
+#, fuzzy
+#~ msgid "Select the file name for the exported popups file"
+#~ msgstr "Zaznacz wszystko"
+
+#, fuzzy
+#~ msgid "Choose the name of the db file"
+#~ msgstr "Wybierz nazwę zapisywanego pliku"
+
+#, fuzzy
+#~ msgid "B&rowse..."
+#~ msgstr "Przeglądaj"
+
+#~ msgid "Cut"
+#~ msgstr "Wytnij"
+
+#~ msgid "Copy"
+#~ msgstr "Kopiuj"
+
+#, fuzzy
+#~ msgid "Add separator"
+#~ msgstr "Dodaj nowy serwer proxy"
+
+#~ msgid "Echo the channel topic on channel join"
+#~ msgstr "Wyświetlaj temat kanału po wejściu"
+
+#, fuzzy
+#~ msgid "Show channel flags"
+#~ msgstr "Pokaż czas synchronizacji kanału"
+
+#~ msgid "Avatar protocol"
+#~ msgstr "Protokół Avatar"
+
+#, fuzzy
+#~ msgid "Join Channel - KVIrc"
+#~ msgstr "Ostatnie &kanały"
+
+#, fuzzy
+#~ msgid "Minimized text"
+#~ msgstr "M&inimalizuj"
+
+#, fuzzy
+#~ msgid "&Recent Channels"
+#~ msgstr "Ostatnie &kanały"
+
+#, fuzzy
+#~ msgid "&Add Channel"
+#~ msgstr "Ostatnie &kanały"
+
+#, fuzzy
+#~ msgid "IRC Servers"
+#~ msgstr "Serwery"
+
+#, fuzzy
+#~ msgid "Ident"
+#~ msgstr "Tożsamość"
+
+#~ msgid "&Close"
+#~ msgstr "&Zamknij"
+
+#, fuzzy
+#~ msgid "Hide &KVIrc"
+#~ msgstr "Informacje o &KVirc"
+
+#~ msgid "Real name"
+#~ msgstr "Prawdziwe imię"
+
+#, fuzzy
+#~ msgid "invalid port number %s"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "invalid ip address in old format %s"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "invalid ip address %s"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "invalid resume position argument '%s'"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Connection started at"
+#~ msgstr "Połączenie przerwane"
+
+#, fuzzy
+#~ msgid "Silence from server"
+#~ msgstr "Serwery IRC"
+
+#, fuzzy
+#~ msgid "Server Notices"
+#~ msgstr "Serwery"
+
+#~ msgid "Ip address:"
+#~ msgstr "Adres Ip:"
+
+#~ msgid "Use IpV6 protocol"
+#~ msgstr "Używaj IpV6"
+
+#, fuzzy
+#~ msgid "Recent channels"
+#~ msgstr "Ostatnie &kanały"
+
+#~ msgid "Icon table"
+#~ msgstr "Tablica ikon"
+
+#~ msgid "Don't show hidden files"
+#~ msgstr "Nie pokazuj ukrytych plików"
+
+#, fuzzy
+#~ msgid "Irc context"
+#~ msgstr "&Nowy kontekst irc"
+
+#, fuzzy
+#~ msgid "No irc context"
+#~ msgstr "&Nowy kontekst irc"
+
+#~ msgid "&Links"
+#~ msgstr "&Połączenia"
+
+#, fuzzy
+#~ msgid "&Minimize all"
+#~ msgstr "M&inimalizuj"
+
+#, fuzzy
+#~ msgid "&Restore all"
+#~ msgstr "P&rzywróć"
+
+#, fuzzy
+#~ msgid "After login join channels"
+#~ msgstr "Ostatnie &kanały"
+
+#, fuzzy
+#~ msgid "Browse ..."
+#~ msgstr "Przeglądaj"
+
+#, fuzzy
+#~ msgid "Choose the data folder"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Abort setup"
+#~ msgstr "Przerwij"
+
+#, fuzzy
+#~ msgid "Restore all windows"
+#~ msgstr "M&inimalizuj"
+
+#, fuzzy
+#~ msgid "Shared files window"
+#~ msgstr "Okno &terminala"
+
+#, fuzzy
+#~ msgid "&Old Tools"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid "About KVirc..."
+#~ msgstr "Informacje o &KVirc"
+
+#, fuzzy
+#~ msgid "About"
+#~ msgstr "Przerwij"
+
+#, fuzzy
+#~ msgid "License"
+#~ msgstr "&Połączenia"
+
+#~ msgid "Reject"
+#~ msgstr "Odrzuć"
+
+#~ msgid "Accept"
+#~ msgstr "Przyjmij"
+
+#~ msgid "Choose the save file name"
+#~ msgstr "Wybierz nazwę zapisywanego pliku"
+
+#~ msgid "Overwrite"
+#~ msgstr "Zamaż"
+
+#~ msgid "Resume"
+#~ msgstr "Wznów"
+
+#, fuzzy
+#~ msgid ""
+#~ "Data transfer terminated: waiting 30 secs for the peer to close the "
+#~ "connection"
+#~ msgstr "Wysłano QUIT... oczekiwanie na zamknięcie połączenia przez serwer"
+
+#, fuzzy
+#~ msgid "Connect in new irc context"
+#~ msgstr "&Nowy kontekst irc"
+
+#~ msgid "Tile : Not enouh space"
+#~ msgstr "Ułożenie sąsiadujące : za mało miejsca"
+
+#~ msgid "Tile : Not enough space"
+#~ msgstr "Ułożenie sąsiadujące : za mało miejsca"
+
+#~ msgid "Ic&q window"
+#~ msgstr "Okno Ic&q"
+
+#~ msgid "&Gnutella window"
+#~ msgstr "Okno &Gnutelli"
+
+#~ msgid "&Directory browser (MDI)"
+#~ msgstr "&Przeglądarka katalogów (MDI)"
+
+#~ msgid "&Build info"
+#~ msgstr "&Informacje o kompilacji"
+
+#~ msgid "KVirc build info"
+#~ msgstr "Informacje o tej kompilacji KVirc"
+
+#~ msgid ""
+#~ "\n"
+#~ "Script language tag: "
+#~ msgstr ""
+#~ "\n"
+#~ "Wersja języka skryptowego: "
+
+#~ msgid ""
+#~ "\n"
+#~ "Build number: "
+#~ msgstr ""
+#~ "\n"
+#~ "Numer kompilacji: "
+
+#~ msgid ""
+#~ "\n"
+#~ "Build date: "
+#~ msgstr ""
+#~ "\n"
+#~ "Data kompilacji: "
+
+#~ msgid "Irc engine"
+#~ msgstr "Silnik Irc"
+
+#~ msgid "Global"
+#~ msgstr "Globalne"
+
+#~ msgid "Components"
+#~ msgstr "Komponenty"
+
+#~ msgid "Look"
+#~ msgstr "Wygląd"
+
+#~ msgid "Widget look"
+#~ msgstr "Wygląd elementów"
diff --git a/po/kvirc/kvirc_pt.po b/po/kvirc/kvirc_pt.po
new file mode 100644
index 00000000..2381b2ec
--- /dev/null
+++ b/po/kvirc/kvirc_pt.po
@@ -0,0 +1,12350 @@
+# translation of kvirc_pt.po to Português
+# Ze <[email protected]>, 2003.
+# Zé <[email protected]>, 2004, 2005.
+# Zé <[email protected]>, 2006, 2007, 2008.
+# Zé <[email protected]>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: kvirc_pt\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2008-03-22 20:53+0000\n"
+"Last-Translator: Zé <[email protected]>\n"
+"Language-Team: Português <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:696
+msgid "&Cascade Windows"
+msgstr "Janelas em &Cascata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:697
+msgid "Cascade &Maximized"
+msgstr "Cascata &Maximizada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:700
+msgid "&Tile Windows"
+msgstr "&Janelas Lado a Lado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:703
+msgid "&Auto Tile"
+msgstr "&Auto Lado a Lado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:708
+msgid "Anodine's Full Grid"
+msgstr "Grelha Anodine Completa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:710
+msgid "Pragma's Horizontal 4-Grid"
+msgstr "Grelha-4 Horizontal do Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:712
+msgid "Pragma's Vertical 4-Grid"
+msgstr "Grelha-4 Vertical do Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:714
+msgid "Pragma's Horizontal 6-Grid"
+msgstr "Grelha-6 Horizontal do Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:716
+msgid "Pragma's Vertical 6-Grid"
+msgstr "Grelha-6 Vertical do Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:718
+msgid "Pragma's Horizontal 9-Grid"
+msgstr "Grelha-9 Horizontal do Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:720
+msgid "Pragma's Vertical 9-Grid"
+msgstr "Grelha-9 Vertical do Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:726
+msgid "Tile Met&hod"
+msgstr "Méto&do Lado a Lado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:729
+msgid "Expand &Vertically"
+msgstr "Expandir &Verticalmente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:730
+msgid "Expand &Horizontally"
+msgstr "Expandir &Horizontalmente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:733
+msgid "Mi&nimize All"
+msgstr "Mi&nimizar Tudo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_actiondrawer.cpp:64
+msgid "Script"
+msgstr "Script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:581
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:634
+msgid "Unknown"
+msgstr "Desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:128
+msgid "No topic message has been received from the server yet"
+msgstr "Nenhuma mensagem de tópico foi ainda recebida do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:495
+msgid "Channel topic:"
+msgstr "Tópico do canal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:513
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:201
+msgid "Set by"
+msgstr "Colocado por"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:519
+msgid "Set on"
+msgstr "Posto em"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:525
+msgid "Double-click to edit..."
+msgstr "Duplo clique para editar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:530
+msgid "No topic is set"
+msgstr "Nenhum tópico definido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:533
+msgid "Double-click to set..."
+msgstr "Duplo clique para definir..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:587
+msgid "History"
+msgstr "Histórico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:596
+msgid "Commit Changes"
+msgstr "Aplicar Alterações"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:602
+msgid "Discard Changes"
+msgstr "Descartar Alterações"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:627
+msgid "Copy to clipboard"
+msgstr "Copiar para a Área de Transferência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:988
+msgid "There are active connections, are you sure you wish to "
+msgstr "Há conexões activas, tem certeza que deseja "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:989
+msgid "quit KVIrc?"
+msgstr "sair do KVIrc?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:587
+msgid "Confirmation - KVIrc"
+msgstr "Confirmação - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:557
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:590
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&Yes"
+msgstr "&Sim"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:556
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:589
+msgid "&Always"
+msgstr "&Sempre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:591
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&No"
+msgstr "&Não"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1090
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1106
+msgid "Show %1"
+msgstr "Mostrar %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1134
+msgid "Customize..."
+msgstr "Personalizar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:149
+#, c-format
+msgid "The file %s already exists.<br>Do you wish to overwrite it?"
+msgstr "O ficheiro %s já existe.<br>Deseja-o substituir?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:150
+msgid "File Exists - KVIrc"
+msgstr "O Ficheiro Existe - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:132
+msgid "Channel mode"
+msgstr "Modos do Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:162
+msgid "Split View"
+msgstr "Vista Separada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:207
+msgid "User List"
+msgstr "Lista de utilizadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:167
+msgid "Ban Editor"
+msgstr "Editor de Banimentos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:172
+msgid "Ban Exception Editor"
+msgstr "Editor de Excepções de Banimentos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:179
+msgid "Invite Exception Editor"
+msgstr "Editor de Excepções de Convites"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:184
+msgid "Mode Editor"
+msgstr "Editor de Modos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "said something recently"
+msgstr "disse alguma coisa recentemente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "is talking"
+msgstr "está a falar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:684
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:699
+msgid "and"
+msgstr "e"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "were talking recently"
+msgstr "estiveram a falar recentemente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "are talking"
+msgstr "está a falar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:707
+msgid "and other %1 users"
+msgstr "e outros %1 utilizadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:738
+msgid "Dead channel"
+msgstr "Canal morto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:753
+msgid "operator"
+msgstr "operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:754
+msgid "operators"
+msgstr "operadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active user"
+msgstr "utilizador activo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active users"
+msgstr "utilizadores activos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot user"
+msgstr "utilizador quente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot users"
+msgstr "utilizadores quentes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owner"
+msgstr "dono do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owners"
+msgstr "donos do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrator"
+msgstr "administrador do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrators"
+msgstr "administradores do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operator"
+msgstr "semi-operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operators"
+msgstr "semi-operadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced user"
+msgstr "Utilizador com voz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced users"
+msgstr "Utilizadores com voz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operator"
+msgstr "utilizador-operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operators"
+msgstr "utilizadores-operadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "user total"
+msgstr "total de utilizador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "users total"
+msgstr "total de utilizadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:931
+msgid "No activity"
+msgstr "Sem actividade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:932
+msgid "Minimal activity"
+msgstr "Actividade mínima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:933
+msgid "Very low activity"
+msgstr "Actividade muito baixa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Might be low activity"
+msgstr "Pode ser baixa actividade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Low activity"
+msgstr "Baixa actividade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Might be medium activity"
+msgstr "Pode ser média actividade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Medium activity"
+msgstr "Actividade média"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "Might be high activity"
+msgstr "Pode ser alta actividade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "High activity"
+msgstr "Actividade alta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Might be very high activity"
+msgstr "Pode ser muito alta actividade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Very high activity"
+msgstr "Actividade muito alta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Might be flooded with messages"
+msgstr "Pode ser inundado com mensagens"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Flooded with messages"
+msgstr "Inundado com mensagens"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:946
+msgid "human"
+msgstr "humano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:966
+msgid "[Dead channel]"
+msgstr "[Canal morto]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1020
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1122
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:459
+msgid " on "
+msgstr " ligado "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1086
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %Q, no "
+"data sent to the server"
+msgstr ""
+"O motor de encriptação não foi capaz de encriptar a mensagem actual (%Q): %"
+"Q, nenhuns dados enviados para o servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1403
+msgid "Sent part request, waiting for reply..."
+msgstr "A enviar pedido de saída, a aguardar resposta..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:610
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:647
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:293
+msgid "(Unknown)"
+msgstr "(Desconhecido)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1484
+msgid "<b>Channel mode:</b>"
+msgstr "<b>Modos do canal</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1498
+#, c-format
+msgid "<br><b>Key:</b> %s"
+msgstr "<br><b>Senha:</b> %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1505
+#, c-format
+msgid "<br><b>Limit:</b> %s"
+msgstr "<br><b>Limite:</b> %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1590
+#, c-format
+msgid "Channel synchronized in %d.%d seconds"
+msgstr "Canal sincronizado em %d.%d segundos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:139
+msgid "Choose an Image File - KVIrc"
+msgstr "Escolha um Ficheiro de Imagem - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:284
+#, c-format
+msgid "Unloadable: %s"
+msgstr "Descarregado: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:260
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:90
+msgid "&Browse..."
+msgstr "&Procurar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:364
+msgid "Choose a File - KVIrc"
+msgstr "Escolha um Ficheiro - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:382
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:593
+msgid "Choose a Directory - KVIrc"
+msgstr "Escolha um Directório - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:764
+msgid "A&dd"
+msgstr "A&dicionar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:407
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:766
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:230
+msgid "Re&move"
+msgstr "Re&mover"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:602
+msgid "Sample Text"
+msgstr "Texto de Exemplo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:635
+msgid "Foreground"
+msgstr "Primeiro plano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:639
+msgid "Transparent"
+msgstr "Transparente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:652
+msgid "Background"
+msgstr "Plano de fundo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:715
+msgid "Play"
+msgstr "Reproduzir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:748
+msgid "Channel name"
+msgstr "Nome do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:749
+msgid "Channel password"
+msgstr "Senha do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:177
+msgid "Toolbars"
+msgstr "Barras de Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:84
+msgid "Orientation"
+msgstr "Orientação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:86
+msgid "Top"
+msgstr "Topo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:87
+msgid "Left"
+msgstr "Esquerda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:88
+msgid "Right"
+msgstr "Direita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:89
+msgid "Bottom"
+msgstr "Fundo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:91
+msgid "Detached"
+msgstr "Destacado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:92
+msgid "Flat"
+msgstr "Plano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:94
+msgid "Icon Size"
+msgstr "Tamanho dos Ícones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:96
+msgid "Small (22x22)"
+msgstr "Pequeno (22x22)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:97
+msgid "Large (32x32)"
+msgstr "Grande (32x32)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1333
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:463
+msgid "&Apply"
+msgstr "&Aplicar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:830
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:113
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:251
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:319
+msgid "Close"
+msgstr "Fechar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:102
+msgid "Channel Modes"
+msgstr "Modos do Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_debugwindow.cpp:47
+msgid "Debug Messages"
+msgstr "Depurar Mensagens"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:72
+msgid "CTCP Page - KVIrc"
+msgstr "Resposta CTCP - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:109
+msgid "You have been paged by"
+msgstr "Foi-lhe enviado um sinal para o pager por"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:75
+msgid "Mask editor - KVirc"
+msgstr "Editor de máscaras - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:79
+msgid "New mask must match an *!*@* expression"
+msgstr "A nova máscara deve corresponder a uma expressão *!*@*"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Ok"
+msgstr "Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:488
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:442
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:401
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:157
+msgid "Active Bans"
+msgstr "Banimentos Activos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:161
+msgid "Active Invite Exceptions"
+msgstr "Excepções Activas de Convites"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:165
+msgid "Active Ban Exceptions"
+msgstr "Excepções Activas de Banimentos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:184
+msgid "Filter:"
+msgstr "Filtro:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:188
+msgid "Use doubleclick to edit item"
+msgstr "Use duplo clique para editar o item"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:200
+msgid "Mask"
+msgstr "Máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:202
+msgid "Set at"
+msgstr "Posto em"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "Add"
+msgstr "Adicionar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:92
+msgid "Cryptography/text transformation"
+msgstr "Transformação de encriptação/texto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:99
+msgid "Use the crypt engine"
+msgstr "Usar motor de encriptação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:120
+msgid "Enable encryption"
+msgstr "Activar encriptação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:123
+msgid "Encrypt key:"
+msgstr "Chave de encriptação:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:141
+msgid "Hex"
+msgstr "Hex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:132
+msgid "Enable decryption"
+msgstr "Activar desencriptação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:135
+msgid "Decrypt key:"
+msgstr "Chave de desencriptação:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_htmldialog.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:175
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:932
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1124
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:211
+msgid ""
+"If you dont want to encrypt a particular text line then just start it with "
+"the CTRL+P prefix"
+msgstr ""
+"Se não quer encriptar uma linha de texto em particular então inicie-acom o "
+"prefixo CTRL+P"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:263
+msgid "Sorry, no crypt engines available"
+msgstr "Desculpe, não há motores de encriptação disponíveis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:283
+msgid "Crypt: Can't create an engine instance: crypting disabled"
+msgstr ""
+"Encriptação: Não é possível criar uma instância/motor: encriptação "
+"desactivada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:294
+#, c-format
+msgid "Crypt: Can't initialize the engine :%s"
+msgstr "Encriptação: Não é possível inicializar o motor:%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:302
+msgid "Crypt: You have to enable encryption and/or decryption for the engine to work"
+msgstr ""
+"Criptação: Tem que activar a encriptação e/ou desencriptação para que o "
+"motor funcione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:385
+msgid "Search tools"
+msgstr "Ferramentas de procura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:539
+#, c-format
+msgid "### Log session terminated at %s ###"
+msgstr "### Sessão de registo terminada em %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:713
+#, c-format
+msgid "### Log session started at %s ###"
+msgstr "### Sessão de registo iniciada em %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:717
+msgid "### Existing data buffer:"
+msgstr "### Buffer de dados existente:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:721
+msgid "### End of existing data buffer."
+msgstr "### Fim do buffer de dados existente."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3894
+msgid "Hide Find Window"
+msgstr "Ocultar Janela de Procura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3896
+msgid "Show Find Window"
+msgstr "Mostrar Janela de Procura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3898
+msgid "Zoom In"
+msgstr "Ampliar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3899
+msgid "Zoom Out"
+msgstr "Reduzir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3900
+msgid "Choose Temporary Font..."
+msgstr "Escolher Tipo de Letra Temporário..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3901
+msgid "Choose Temporary Background..."
+msgstr "Escolher Fundo Temporário..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3902
+msgid "Reset Temporary Background"
+msgstr "Restaurar Fundo Temporário"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3905
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:738
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:841
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1057
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1289
+msgid "Clear Buffer"
+msgstr "Limpar Buffer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3939
+msgid "Choose the background image..."
+msgstr "Escolher a imagem de fundo..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+msgid "Invalid image"
+msgstr "Imagem inválida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+msgid "Failed to load the selected image"
+msgstr "Falha ao carregar a imagem seleccionada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4083
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4140
+#, c-format
+msgid "Pos %d"
+msgstr "Pos %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4156
+msgid "Not found"
+msgstr "Não encontrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4563
+msgid "Looking up host %Q..."
+msgstr "A localizar o endereço %Q..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4926
+msgid "Double-click to open this link"
+msgstr "Duplo clique para abrir esta ligação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4946
+msgid "Unable to look it up hostname: Hostname appears to be masked"
+msgstr "Não se encontrou o nome do endereço: O endereço parece ter máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4947
+msgid "Unable to look it up hostname: Unknown host"
+msgstr "Não se encontrou o nome do endereço: endereço desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4949
+msgid "Double-click to look up this hostname<br>Right-click to view other options"
+msgstr "Duplo clique para procurar este endereço<br>Clique direito para outras opcões"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4972
+msgid "Server appears to be a network hub<br>"
+msgstr "O servidor parece ser um centro de rede (hub)<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4973
+msgid "Unknown server<br>"
+msgstr "Servidor desconhecido<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4976
+msgid "Double-click to read the MOTD<br>Right-click to view other options"
+msgstr "Duplo clique para ler o MOTD<br>Clique direito para ver outras opções"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4989
+msgid "Double-click to set<br>"
+msgstr "Duplo clique para definir<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5011
+msgid "You're not an operator: You may not change channel modes"
+msgstr "Não é operador: não pode alterar os modos do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5028
+msgid "Nothing known about %Q"
+msgstr "%Q já não se encontra ligado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5029
+msgid "Nothing known about %Q (no connection)"
+msgstr "Não se sabe nada acerca %Q (sem conexão)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5054
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>): "
+"<br><nowrap>+%Q (%u users)<hr>%Q</nowrap>"
+msgstr ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>): "
+"<br><nowrap>+%Q (%u users)<hr>%Q</nowrap>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5060
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)<hr>Double-"
+"click to join %Q<br>Right click to view other options"
+msgstr ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)<hr>Duplo "
+"clique para entrar%Q<br>Clique direito para ver outras opções"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5080
+msgid "<b>Double-click:</b><br>%Q"
+msgstr "<b>Duplo clique:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5085
+msgid "<b>Middle-click:</b><br>%Q"
+msgstr "<b>Clique com o botão do meio:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5090
+msgid "<b>Right-click:</b><br>%Q"
+msgstr "<b>Clique direito:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1284
+msgid "Joined on <b>%1</b>"
+msgstr "Entrou no <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1296
+msgid "Quiet for <b>%1h %2m %3s</b>"
+msgstr "Inactivo à <b>%1h %2m %3s</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1097
+msgid "No connection"
+msgstr "Sem conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:304
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:3
+msgid "IRC Context"
+msgstr "Contexto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:319
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:365
+#, c-format
+msgid "Lag: %d.%d%d"
+msgstr "Lag: %d.%d%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:393
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:379
+msgid "Lag: ?.??"
+msgstr "Lag: ?.??"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:326
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:637
+msgid "No IRC context"
+msgstr "Nenhum contexto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:633
+msgid "Not connected"
+msgstr "Não está conectado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:377
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1117
+msgid "away"
+msgstr "ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:397
+msgid "In progress..."
+msgstr "Em progresso..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:458
+msgid "Crypting"
+msgstr "Encriptação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:466
+msgid "Private Text Encoding"
+msgstr "Codificação Privada de Texto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:566
+msgid "Ops...I've accidentally lost the crypting engine..."
+msgstr "Ups...Perdi acidentalmente o motor de encriptação..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:582
+msgid "List of window types available in this release of KVIrc:"
+msgstr "Lista dos tipos de janela disponíveis nesta versão do KVirc:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:763
+msgid "Use Default Encoding"
+msgstr "Usar Codificação Predefinida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:775
+msgid "Standard"
+msgstr "Padrão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:776
+msgid "Smart (Send Local)"
+msgstr "Inteligente (Enviar Localmente)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:777
+msgid "Smart (Send UTF-8)"
+msgstr "Inteligente (Enviar UTF-8)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:810
+msgid "&Undock"
+msgstr "&Desacoplar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:813
+msgid "&Dock"
+msgstr "&Acoplar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:818
+msgid "Mi&nimize"
+msgstr "Mi&nimizar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:821
+msgid "Ma&ximize"
+msgstr "Ma&ximizar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:824
+msgid "&Restore"
+msgstr "&Restaurar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:837
+msgid "Text &Encoding"
+msgstr "&Codificação de Texto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:842
+msgid "Sa&ve Window Properties"
+msgstr "&Gravar Propriedades da Janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:86
+msgid "Taskbar"
+msgstr "Barra de Tarefas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:91
+msgid "taskbar"
+msgstr "barra de tarefas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1162
+msgid "Sort"
+msgstr "Ordenar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1163
+msgid "Reverse Sort"
+msgstr "Reverter Ordenação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1223
+msgid "Window List"
+msgstr "Lista de Janelas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:203
+msgid "Apply to all IRC Contexts"
+msgstr "Aplicar a todos os Contextos IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:227
+msgid "Away Indicator"
+msgstr "Indicador de Ausência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:255
+msgid "Away since"
+msgstr "Ausente desde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:259
+msgid "Double click to leave away mode"
+msgstr "Duplo clique para deixar o modo ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:261
+msgid "Not away"
+msgstr "Não ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:263
+msgid "Double click to enter away mode"
+msgstr "Duplo clique para entrar em modo ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:330
+#, c-format
+msgid "Last checked %d mins %d secs ago"
+msgstr "Última verificação à %d mins %d segs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:332
+msgid "Lag measure not available yet"
+msgstr "Medição de lag ainda não disponível"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:336
+msgid "Lag meter engine disabled"
+msgstr "Medidor de lag desactivado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:338
+msgid "Double click to enable it"
+msgstr "Duplo clique para o activar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:391
+msgid "Lag Indicator"
+msgstr "Indicador de lag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:461
+msgid "Simple Clock"
+msgstr "Relógio Simples"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:512
+msgid "Show total connection time"
+msgstr "Mostrar tempo total de conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:536
+msgid "Connection Timer"
+msgstr "Temporizador da Conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:560
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:87
+msgid "Separator"
+msgstr "Separador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:820
+msgid "Clipboard"
+msgstr "Área de Transferência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line break"
+msgstr "quebra de linha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line breaks"
+msgstr "quebras de linha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:845
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:439
+msgid "Cu&t"
+msgstr "Cor&tar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:847
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:445
+msgid "&Copy"
+msgstr "&Copiar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:849
+msgid "&Paste"
+msgstr "&Colar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:851
+msgid "Paste (Slowly)"
+msgstr "Colar (lentamente)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:856
+msgid "Paste &File"
+msgstr "Colar &Ficheiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:863
+msgid "Stop Paste"
+msgstr "Parar Colagem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:865
+msgid "Clear"
+msgstr "Limpar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:868
+msgid "Select All"
+msgstr "Seleccionar Tudo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:897
+msgid "Insert Icon"
+msgstr "Inserir Ícone"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1926
+msgid "%d matches: %Q"
+msgstr "%d corresponde: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1930
+msgid "No matches"
+msgstr "Sem correspondências"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2657
+msgid "Show History<br>&lt;Ctrl+PageUp&gt;"
+msgstr "Mostrar Histórico<br>&lt;Ctrl+PageUp&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2648
+msgid "Input History Disabled"
+msgstr "Entrada de Histórico Desactivada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2370
+msgid "Show Icons Popup<br>&lt;Ctrl+I&gt;<br>See also /help texticons"
+msgstr "Mostrar Ícones<br>&lt;Ctrl+I&gt;<br>Ver também /help texticons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2382
+msgid "User friendly commandline mode<br>See also /help commandline"
+msgstr "Modo de linha comando amigável<br>Veja também /help commandline"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2394
+msgid "Multi-line Editor<br>&lt;Alt+Backspace&gt;"
+msgstr "Editor Multi-linha<br>&lt;Alt+Backspace&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2498
+msgid "Confirm Multiline Message"
+msgstr "Confirmar Mensagem Multi-linha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2499
+msgid ""
+"You're about to send a message with %1 lines of text.<br><br>There is "
+"nothing wrong with it, this warning is<br>here to prevent you from "
+"accidentally sending<br>a really large message just because you didn't edit "
+"it<br>properly after pasting text from the clipboard.<br><br>Do you want the "
+"message to be sent?"
+msgstr ""
+"Está prestes a enviar uma mensagem com %1 linhas de texto.<br><br>Não há "
+"nenhum problema, este aviso <br>está aqui para o prevenir de acidentalmente "
+"enviar<br>uma mensagem demasiado comprida só porque não a editou<br> "
+"devidamente depois de ter colado o texto da área de transferência."
+"<br><br>Deseja que a mensagem seja enviada?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2505
+msgid "Yes, always"
+msgstr "Sim, sempre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2506
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:399
+msgid "Yes"
+msgstr "Sim"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:806
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:375
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:400
+msgid "No"
+msgstr "Não"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2556
+msgid "<Ctrl+Return>; submits, <Alt+Backspace>; hides this editor"
+msgstr "<Ctrl+Return>; envia, <Alt+Backspace>; esconde este editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:126
+msgid "Address:"
+msgstr "Endereço:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:140
+msgid "Current IRC URI"
+msgstr "Actual IRC URI"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:156
+msgid "Notify List"
+msgstr "Lista de Notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:263
+msgid "Part All Channels"
+msgstr "Sair de Todos os Canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:265
+msgid "Close All Queries"
+msgstr "Fechar Todos os Privados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:270
+msgid "Unhighlight All Windows"
+msgstr "Minimizar Todas as Janelas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:273
+msgid "Unhighlight All Channels"
+msgstr "Minimizar Todos os Canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:275
+msgid "Unhighlight All Queries"
+msgstr "Minimizar Todos os Privados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:387
+msgid "Gender:"
+msgstr "Género:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:394
+msgid "Male"
+msgstr "Macho"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:393
+msgid "Female"
+msgstr "Fêmea"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:375
+msgid "Registered as"
+msgstr "Registado como"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:381
+msgid "(Matched by"
+msgstr "(Correspondido com"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:393
+msgid "On <b>"
+msgstr "Em <b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:402
+msgid "Using server <b>%1</b>"
+msgstr "A usar o servidor <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:407
+msgid "%1 hops"
+msgstr "%1 hops"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:417
+msgid "Probably Away"
+msgstr "Provavelmente Ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:493
+msgid ""
+"KVIrc can accept only irc://, irc6://, ircs:// or irc6s:// URL's\n"
+"Your URL is invalid. Check spelling and try again"
+msgstr ""
+"O KVirc aceita apenas URL's irc://, irc6://, ircs:// ou irc6s://\n"
+"O seu URL é inválido. Verifique a ortografia a tente novamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:554
+msgid ""
+"You have just attempted to close a console window with an active connection "
+"inside.\n"
+"Are you sure you wish to terminate the connection?"
+msgstr ""
+"Está a tentar fechar uma janela de consola com uma conexão activa.\n"
+"Tem certeza que deseja terminar a conexão?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:588
+msgid ""
+"You have just attempted to close the last console window.\n"
+"Are you sure you wish to quit KVIrc?"
+msgstr ""
+"Está a tentar fechar a janela da última consola.\n"
+"Tem certeza que deseja fechar o KVirc?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1019
+msgid "Failed to load avatar with name \"%Q\" and local path \"%Q\""
+msgstr "Falha ao carregar o avatar com o nome \"%Q\" e localização local \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:624
+msgid "Connection in progress..."
+msgstr "Conexão em progresso..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1099
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:630
+msgid "Login in progress..."
+msgstr "Autenticação em progresso..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1179
+msgid "channel"
+msgstr "canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1180
+msgid "channels"
+msgstr "canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1181
+msgid "query"
+msgstr "privado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1182
+msgid "queries"
+msgstr "privados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1238
+msgid "Connected since"
+msgstr "Conectado desde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1252
+msgid "Online for"
+msgstr "Conectado por"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1264
+msgid "Server idle for"
+msgstr "Servidor inactivo por"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:50
+msgid "This option is also available as"
+msgstr "Esta opção está também disponível como"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:683
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:275
+msgid "Advanced..."
+msgstr "Avançado..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:69
+msgid "Scri&pting"
+msgstr "Scri&pts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:74
+msgid "&Tools"
+msgstr "&Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:81
+msgid "&Settings"
+msgstr "&Configurações"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:83
+msgid "&Window"
+msgstr "&Janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:125
+msgid "&Help"
+msgstr "&Ajuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:119
+msgid "&Help Browser (Panel)"
+msgstr "Navegador de &Ajuda (Painel)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:121
+msgid "Help Browser (&Window)"
+msgstr "Navegador de Ajuda (&Janela)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:124
+msgid "&Tip of the Day"
+msgstr "&Dica do Dia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:127
+msgid "About &KVIrc"
+msgstr "Acerca do &KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:130
+msgid "KVIrc Home&page"
+msgstr "&Página Web KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:134
+msgid "KVIrc Russian Home&page"
+msgstr "&Página Web KVIrc Russa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:139
+msgid "KVIrc French Home&page"
+msgstr "&Página Web KVirc Francesa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:143
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:339
+msgid "Subscribe to the Mailing List"
+msgstr "Subscrever na Lista de Correio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:145
+msgid "Report a Bug / Propose Improvements"
+msgstr "Comunicar um Erro/Propor melhorias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:148
+msgid "Join KVIrc International Channel on Freenode"
+msgstr "Entrar no Canal KVirc Internacional no Freenode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:150
+msgid "Join KVIrc International Channel on IRCNet"
+msgstr "Entrar no Canal KVirc Internacional no IRCNet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:155
+msgid "Join KVIrc Italian Channel on AzzurraNet"
+msgstr "Entrar no Canal KVirc Internacional no AzzurraNet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:161
+msgid "Join KVIrc French Channel on Freenode"
+msgstr "Entrar no Canal KVirc Francês no Freenode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:164
+msgid "Join KVIrc French Channel on EuropNet"
+msgstr "Entrar no Canal KVirc Francês no EuropNet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:179
+msgid "Show StatusBar"
+msgstr "Mostrar Barra de Estado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:194
+msgid "&Save Configuration"
+msgstr "&Gravar Configuração"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:213
+msgid "Restore &Default Script"
+msgstr "Restaurar Script Pa&drão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:630
+msgid "Disconnect"
+msgstr "Desconectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:228
+msgid "New &Connection To"
+msgstr "Nova &Conexão Para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:234
+msgid "Hide &Dock Icon"
+msgstr "&Esconder Ícone na Barra de Tarefas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:237
+msgid "Show &Dock Icon"
+msgstr "&Mostrar Ícone na Barra de Tarefas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:111
+msgid "&Quit"
+msgstr "&Sair"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:265
+msgid "&Other..."
+msgstr "&Outro..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:305
+msgid "Show &Icon Table"
+msgstr "Mostrar Tabela de &Ícones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:308
+msgid "Open &Terminal"
+msgstr "Abrir &Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:308
+msgid ""
+"<b>Shift+Drag</b> or <b>Ctrl+Drag</b> to move the applet around<br><b>Right "
+"click</b> to see the other options"
+msgstr ""
+"<b>Shift+Rato</b> ou <b>Ctrl+Rato</b> para mover o componente <br><b>Clique "
+"direito do rato</b> para ver outras opções"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:313
+msgid "<b>Right click</b> to add/remove applets"
+msgstr "<b>Clique direito</b> para adicionar/remover componentes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:353
+msgid "Remove %Q"
+msgstr "Remover %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:365
+msgid "Add Applet"
+msgstr "Adicionar Componente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:404
+msgid ""
+"Drag the applet while holding the Shift or Ctrl key to move it to the "
+"desired position"
+msgstr ""
+"Arraste o componente enquanto prime a tecla Shift ou Ctrl para o mover para "
+"a posição desejada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:93
+msgid "<b><font color=\"#EAEAEA\" size=\"-1\">Find Text</font></b>"
+msgstr "<b><font color=\"#8060FF\" size=\"-1\">Procurar Texto</font></b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:118
+msgid "&Regular expression"
+msgstr "Expressão &regular"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:121
+msgid "E&xtended regexp."
+msgstr "Expressão regular e&xtendida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:126
+msgid "C&ase sensitive"
+msgstr "&Diferenciar maiúsculas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:129
+msgid "Find &Prev."
+msgstr "Procurar &Anterior"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:133
+msgid "&Find Next"
+msgstr "&Procurar Seguinte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:880
+msgid "Find"
+msgstr "Procurar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:214
+msgid "Type"
+msgstr "Tipo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:166
+msgid "Set &All"
+msgstr "Seleccionar &Tudo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:170
+msgid "Set &None"
+msgstr "Seleccionar &Nenhum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:174
+msgid "&Load From..."
+msgstr "&Carregar De..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:178
+msgid "&Save As..."
+msgstr "Gravar &Como..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:182
+msgid "Filter"
+msgstr "Filtro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:234
+msgid "Select a Filter File"
+msgstr "Seleccione um Ficheiro Filtro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:251
+#, c-format
+msgid "Can't open the filter file %s for reading."
+msgstr "Não é possível abrir o ficheiro filtro %s para leitura."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:261
+msgid "Select a Name for the Filter File"
+msgstr "Escolha um nome para o ficheiro filtro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:272
+msgid "Failed to write the filter file %Q (IO Error)"
+msgstr "Falha ao escrever no ficheiro filtro %Q (Erro E/S)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:274
+msgid "Can't open the filter file %Q for writing"
+msgstr "Não é possível abrir o ficheiro filtro %Q para escrita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:109
+msgid "Choose image ..."
+msgstr "Escolher imagem..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:122
+msgid "Builtin images"
+msgstr "Imagens próprias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:131
+msgid "Small icons"
+msgstr "Ícones pequenos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:138
+msgid "Full path"
+msgstr "Localização completa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:241
+msgid "Builtin $icon(%Q) [index %d]"
+msgstr "Integrado $icon(%Q) [índice %d]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:274
+msgid "directory"
+msgstr "directório"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:300
+msgid "pixels"
+msgstr "pixels"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:305
+msgid "bytes"
+msgstr "bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:98
+msgid "Show User List"
+msgstr "Mostrar Lista de Utilizadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:105
+msgid "Query Targets"
+msgstr "Pesquisar Destinos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:165
+msgid "Query target:"
+msgstr "Pesquisar destino:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:170
+msgid "%1 is %2 (%3)"
+msgstr "%1 é %2 (%3)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:172
+msgid "%1 is %2"
+msgstr "%1 é %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:186
+msgid "%1 is using irc server: %2 (%3 hops)"
+msgstr "%1 está a usar o servidor irc: %2 (%3 hops)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:188
+msgid "%1 is using irc server: %2"
+msgstr "%1 está a usar o servidor irc: %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:195
+msgid "%1 is probably away"
+msgstr "%1 provavelmente está ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:200
+msgid "Common channels with %1: %2"
+msgstr "Canais comuns com %1: %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:254
+msgid "[Dead Query]"
+msgstr "[Privado Inválido]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:240
+msgid "Query with %1!%2 (%3)"
+msgstr "Privado com %1!%2 (%3)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:242
+msgid "Query with %1!%2"
+msgstr "Privado com %1!%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:244
+msgid ", using server %1"
+msgstr ", a usar o servidor %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:246
+msgid " (%1 hops)"
+msgstr " (%1 hops)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:248
+msgid ", probably away"
+msgstr ", provavelmente Ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:252
+msgid "Common channels: %2"
+msgstr "Canais comuns: %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:320
+msgid ""
+"The target of this query has changed from \r!n\r%Q\r [%Q@\r!h\r%Q\r] to \r!n"
+"\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr ""
+"O alvo deste privado foi alterado desde \r!n\r%Q\r [%Q@\r!h\r%Q\r] para \r!n"
+"\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:389
+msgid "Common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Canais em comum com \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:392
+msgid "No common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "Nenhum canal em comum com \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:428
+msgid "[Dead query]"
+msgstr "[Privado morto]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:578
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:645
+msgid "This query has no active targets, no message sent"
+msgstr "O utilizador deste privado já não está em linha, nenhuma mensagem enviada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:617
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %s, no "
+"data sent to the server"
+msgstr ""
+"O motor de encriptação não foi capaz de encriptar a mensagem actual (%Q): %"
+"s, nenhuns dados enviados para o servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashcount.cpp:74
+msgid ""
+"The argument of the hash count '#' operator didn't evaluate to a hash: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+"O argumento da contagem do operador do hash '#' não avaliou para um array: "
+"conversão automática a partir do tipo fornecido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:100
+msgid "DNS Lookup result for query \"%Q\""
+msgstr "Resultado de resolução DNS para a pesquisa \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:105
+msgid "Error: %Q"
+msgstr "Erro: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:110
+msgid "Hostname %d: %Q"
+msgstr "Nome do endereço %d: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:116
+msgid "IP address %d: %Q"
+msgstr "Endereço IP %d: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:870
+msgid ""
+"Broken slot '%Q' in target object '%Q::%Q' while emitting signal '%Q' from "
+"object '%Q::%Q': disconnecting"
+msgstr ""
+"Slot '%Q' danificado no objecto de destino '%Q::%Q' enquanto emitia o sinal "
+"'%Q' do objecto '%Q::%Q': a desconectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:888
+msgid "Slot target object destroyed while emitting signal '%Q' from object '%Q::%Q'"
+msgstr "Slot de destino destruído enquanto emitia o sinal '%Q' do objecto '%Q::%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1040
+msgid "Listing Qt properties for object named \"%Q\" of KVS class %Q"
+msgstr "A listar as propriedades Qt para o objecto chamado \"%Q\" da classe KVS %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1046
+#, c-format
+msgid "Properties for Qt class %s"
+msgstr "Propriedades da classe Qt %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1071
+msgid "Property: %c%Q%c, type %Q"
+msgstr "Propriedade: %c%Q%c, tipo %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1131
+#, c-format
+msgid "%d properties listed"
+msgstr "%d propriedades listadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1151
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1380
+msgid "The object named \"%Q\" of class %Q has no Qt properties"
+msgstr "O objecto chamado \"%Q\" da classe %Q não tem propriedades Qt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1396
+msgid "No Qt property named \"%Q\" for object named \"%Q\" of class %Q"
+msgstr "Nenhuma propriedade \"%Q\" para o objecto chamado \"%Q\" da classe %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1409
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed but it doesn't really exist"
+msgstr ""
+"Não é possível encontrar a propriedade chamada \"%Q\" para o objecto chamado "
+"\"%Q\" da classe %Q: a propriedade está indexada mas na realidade não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1417
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed and defined but the returned variant is not valid"
+msgstr ""
+"Não é possível encontrar a propriedade chamada \"%Q\" para o objecto chamado "
+"\"%Q\" da classe %Q: a propriedade está indexada e definida mas a variável "
+"de retorno não é válida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1200
+#, c-format
+msgid ""
+"The property is of type %s but the supplied argument can't be converted to "
+"that type (expecting \"%s\")"
+msgstr ""
+"A propriedade é do tipo %s mas o argumento dado não se pode ser convertido "
+"no tipo (espera-se \"%s\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1331
+msgid ""
+"A pixmap object, an image_id or an image file path is required for this "
+"property"
+msgstr ""
+"Um objecto pixmap, um id_imagem ou uma localização de ficheiros de imagens é "
+"requerido para esta propriedade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1352
+msgid "Can't find the requested image"
+msgstr "Não é possível encontrar a imagem pedida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1512
+msgid ""
+"Property \"%Q\" for object named \"%Q\" of class %Q has an unsupported data "
+"type"
+msgstr ""
+"Propriedade \"%Q\" para o objecto chamado \"%Q\" da classe %Q tem um tipo de "
+"dados não suportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1659
+msgid "Cannot find object function $%Q for object named \"%Q\" of class %Q"
+msgstr ""
+"Não é possível encontrar a funções de objecto $%Q para o objecto chamado \"%Q"
+"\" da classe %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1661
+msgid "Cannot find object function $%Q::%Q for object named \"%Q\" of class %Q"
+msgstr ""
+"Não é possível encontrar a função objecto $%Q::%Q para o objecto chamado \"%Q"
+"\" da classe %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1669
+msgid ""
+"Cannot call internal object function $%Q (for object named \"%Q\" of class %"
+"Q) from this context"
+msgstr ""
+"Não é possível chamar a funções de objecto $%Q (para o objecto chamado \"%Q"
+"\" da classe %Q) a partir deste contexto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:69
+msgid "Stray dot ('.') character or invalid following module command name"
+msgstr ""
+"Caracter ponto ('.') inesperado ou nome de comando do módulo seguinte "
+"inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:70
+msgid "Syntax error: malformed module command identifier"
+msgstr "Erro de sintaxe: identificador de comando do módulo malformado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:188
+msgid "Stray '::' sequence or invalid following alias name"
+msgstr "Sequência '::' inesperada ou nome de ''alias'' seguinte inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:95
+msgid "Syntax error: malformed alias identifier"
+msgstr "Erro de sintaxe: identificador de ''alias'' mal formado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:102
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:196
+msgid "Stray ':' character: did you mean '...<namespace>::<alias_name>' ?"
+msgstr ""
+"Caracter ':' inesperado : queria dizer '...<nome de espaço>::<nome de "
+"''alias''>' ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:103
+msgid "Syntax error: malformed (alias?) command identifier"
+msgstr "Erro de sintaxe: identificador de comando (''alias''?) mal formado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:280
+msgid "Unknown callback command \"%Q\""
+msgstr "Comando desconhecido \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:465
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:44
+msgid "The current window is not a channel"
+msgstr "A janela actual não é um canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:532
+msgid ""
+"Timer name omitted but there is not current timer (this is not a timer "
+"callback)"
+msgstr ""
+"Nome do temporizador omitido mas actualmente não há um temporizador (isto "
+"não é uma chamada de temporizador)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:538
+msgid "Can't kill the timer '%Q' since it is not running"
+msgstr "Não pode matar o temporizador '%Q' já que não está a correr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:626
+msgid "List of active timers"
+msgstr "Lista de temporizadores activos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:637
+msgid "Persistent"
+msgstr "Persistente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:640
+msgid "WindowLifetime"
+msgstr "Tempo de Vida da Janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:643
+msgid "SingleShot"
+msgstr "Um Shot Único"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:652
+msgid "None"
+msgstr "Nenhum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:663
+#, c-format
+msgid "Total: %u timers running"
+msgstr "Total: %u temporizadores a correr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:849
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:872
+msgid "Found character '%q' (unicode %x) where a slash '/' was expected"
+msgstr "Caracter encontrado '%q' (unicode %x) onde uma barra '/' era esperada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:842
+msgid ""
+"Unexpected end of command in binding operation, at least two slashes are "
+"missing"
+msgstr ""
+"Inesperado fim de comando nos parametros da função, pelo menos duas barras "
+"estão em falta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:865
+msgid "Unexpected end of command in binding operation, at least one slash is missing"
+msgstr ""
+"Inesperado fim de comando nos parametros da função, pelo menos uma barra "
+"está em falta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:905
+msgid "Unknown binding operation '%Q'"
+msgstr "Operador de anexação desconhecido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:926
+msgid "Missing right side operand for the binding operator '=~'"
+msgstr "Falta o operando do lado direito para a operação de anexação '=~'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:948
+msgid "Trailing garbage ignored after operator '++'"
+msgstr "Lixo seguinte ignorado após o operador '++'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:960
+msgid "Missing right operand for operator '+='"
+msgstr "Falta o operando direito para o operador '+='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:979
+msgid "Trailing garbage ignored after operator '--'"
+msgstr "Falta o operando direito para o operador '--'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:986
+msgid ""
+"This looks a lot like an object handle dereferencing operator '->' but in "
+"fact it isn't. Maybe you forgot a '$' just after ?"
+msgstr ""
+"Isto parece um operador de referência de gestão de objectos '->' mas de "
+"facto não é. Talvez se tenha esquecido de um '$' logo a seguir?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:994
+msgid "Missing right operand for operator '-='"
+msgstr "Falta o operando direito para o operador '-='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1015
+msgid "Missing right operand for operator '<<='"
+msgstr "Falta o operando direito para o operador '<<='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1025
+msgid "Missing right operand for operator '<<'"
+msgstr "Falta o operando direito para o operador '<<'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1039
+msgid "Missing right operand for operator '<,'"
+msgstr "Falta o operando direito para o operador '<,'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1053
+msgid "Missing right operand for operator '<+'"
+msgstr "Falta o operando direito para o operador '<='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1075
+msgid "Missing right operand for operator '>>='"
+msgstr "Falta o operando direito para o operador '>>='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1094
+msgid "Missing right operand for operator '.='"
+msgstr "Falta o operando direito para o operador '.='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1113
+msgid "Missing right operand for operator '"
+msgstr "Falta o operando direito para o operador '"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:72
+msgid "Unknown operator"
+msgstr "Operador desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1178
+msgid "Unexpected (and senseless) read-only data evaluation"
+msgstr "Inesperado (inconsciente) avaliação de dados apenas de leitura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1180
+msgid "Syntax error: confused by earlier errors: bailing out"
+msgstr "Erro de sintaxe: confuso por erros anteriores: ter cuidado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1160
+msgid "Unexpected end of script after a variable reference: expected operator"
+msgstr "Inesperado fim de script depois da referência da variável: operador esperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1176
+msgid ""
+"Unexpected character '%q' (unicode %x) after a void function call: end of "
+"instruction expected"
+msgstr ""
+"Caracter inesperado '%q' (unicode %x) após a chamada da função void: fim da "
+"instrução esperada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1179
+msgid "Unexpected character '%q' (unicode %x)"
+msgstr "Caracter inesperado '%q' (unicode %x)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:96
+msgid "/me can be used only in channels, queries and DCC chat windows"
+msgstr "/me pode ser usado apenas em canais, janelas privadas ou janelas DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:385
+msgid "Invalid IRC url (%Q)"
+msgstr "URL de IRC inválido (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:410
+msgid "The commandline for this url type seems to be broken (%Q)"
+msgstr "A linha de comandos para este tipo de url parece estar danificado (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:412
+msgid "No commandline specified for this type of url (%Q)"
+msgstr "Nenhuma linha de comandos indicada para este tipo de url (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:512
+msgid "Option setting error: Unknown option or invalid value for option type"
+msgstr ""
+"Erro no ajuste da opção: opção desconhecida ou valor inválido para o tipo de "
+"opção"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:606
+msgid "Choose a file to parse"
+msgstr "Escolhe o ficheiro para analisar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:639
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:643
+msgid "Failed to load the file '%Q' for parsing"
+msgstr "Falha ao carregar o ficheiro '%Q' para analisar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:715
+msgid "Missing channel list"
+msgstr "Falta lista de janelas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:753
+#, c-format
+msgid "You don't appear to be on channel %s"
+msgstr "Não parece estar no canal %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:802
+msgid "Module command call failed: can't load the module 'snd'"
+msgstr "Chamada de comando do módulo falhada: não é possível carregar o módulo 'snd'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:809
+msgid ""
+"Module command call failed: the module 'snd' doesn't export a command named "
+"'play'"
+msgstr ""
+"Chamada de comando do módulo falhada: o módulo 'snd' não exporta um comando "
+"chamado 'play'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:864
+msgid "Popup %Q is not defined"
+msgstr "O popup %Q não está definido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:872
+msgid "A popup menu cannot be popped up twice"
+msgstr "Um menu popup não pode ser chamado duas vezes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:897
+msgid "Invalid syntax for screen coordinates, using cursor position"
+msgstr "Sintaxe inválida para as coordenadas do ecrã, a usar a posição do cursor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1011
+msgid "Empty target specified"
+msgstr "Objectivo indicado vazio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:97
+msgid "[RAW]: %Q"
+msgstr "[RAW]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1237
+msgid "Window with id %Q not found: no rebinding performed"
+msgstr "Janela com id %Q não encontrado: nenhuma religação feita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1330
+msgid "Failed to execute command '%Q'"
+msgstr "Falha ao executar o comando '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:242
+msgid "Missing alias name"
+msgstr "Falta o nome da ''alias''"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:253
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:889
+msgid ""
+"Alias names can contain only letters, digits, underscores and '::' namespace "
+"separators"
+msgstr ""
+"Os nomes das ''alias'' podem conter apenas letras, dígitos, grifos e "
+"separadores de nomes de espaços '::'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:903
+msgid "Stray ':' character in alias name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+"Caracter ':' inesperado no nome da ''alias'': queria dizer '...<nome de "
+"espaço>::<nome> ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:914
+msgid "Found an empty namespace in alias name"
+msgstr "Encontrado um nome de espaço vazio no nome da ''alias''"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:277
+msgid "The alias %Q is not existing"
+msgstr "A ''alias'' %Q não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:436
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:413
+msgid "The specified window has no button containers"
+msgstr "A janela indicada não tem recipiente de botões"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:447
+msgid "Window button '%Q' not found"
+msgstr "Botão da janela '%Q' não encontrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:445
+msgid "Can't find the icon '%Q'"
+msgstr "Não é possível encontrar o ícone '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:532
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:540
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1197
+msgid "No such event (%Q)"
+msgstr "Nenhum evento (%Q) encontrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:552
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1222
+msgid "No handler '%Q' for raw numeric event '%d'"
+msgstr "Nenhum controlador '%Q' para o evento numérico raw '%d'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1248
+msgid "No handler '%Q' for event '%Q'"
+msgstr "Nenhum controlador '%Q' para o evento '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:936
+msgid "The specified ping time is invalid: assuming zero (no ping)"
+msgstr "O tempo indicado de ping é inválido: a assumir zero (sem ping)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:946
+msgid "The specified maximum run time is invalid: assuming zero (infinite)"
+msgstr "O tempo máximo indicado de execução é inválido: a assumir zero (infinito)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:965
+msgid "Failed to start the process"
+msgstr "Falhou ao iniciar o processo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1010
+msgid "The specified object does not exist"
+msgstr "O objecto indicado não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1113
+msgid "Missing timer name"
+msgstr "Falta nome para o temporizador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1122
+msgid "Missing timeout delay"
+msgstr "Falta o intervalo de tempo do atraso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1129
+msgid "The timeout delay didn't evaluate to an integer"
+msgstr "O atraso de tempo não avaliou para um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1152
+msgid "Unable to add the timer: insufficient system resources"
+msgstr "Não é possível adicionar o temporizador: recursos de sistema insuficientes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_eventmanager.cpp:503
+msgid "Event handler %Q is broken: disabling"
+msgstr "O controlador de eventos %Q está danificado: desactivar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_moduleinterface.cpp:166
+msgid "Can't unload the module: it has locked itself in memory"
+msgstr "Não é possível descarregar o módulo: bloqueou-se a ele próprio na memória"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:123
+msgid "Unknown binary operator '=%q': did you mean '==' ?"
+msgstr "Operador binário desconhecido'=%q': queria dizer '==' ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:221
+msgid "Unknown binary operator '%q'"
+msgstr "Operador binário '%q' desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:305
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:371
+msgid "Unexpected end of script in expression"
+msgstr "Fim inesperado do script na expressão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:451
+msgid ""
+"Unexpected character %q (unicode %h) in expression. If it meant to be a "
+"string use the quotes."
+msgstr ""
+"Caracter inesperado %q (unicode %h) na expressão. Se é para ser uma string, "
+"use as citações."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:466
+msgid "Unexpected empty expression operand"
+msgstr "Inesperada expressão de operando vazia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:91
+msgid "say: injected commandline"
+msgstr "diz: linha de comando injectada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:94
+msgid "Say parse error: Broken command"
+msgstr "Diz parse error: Comando danificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:250
+msgid "Couldn't find a suitable IRC context for the connection, try using -n or -u"
+msgstr ""
+"Não foi possível encontrar um contexto IRC apropriado para a conexão, tente "
+"usar -n ou -u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:259
+msgid "Another connection is already in progress in the selected IRC context"
+msgstr "Outra conexão já em progresso no contexto IRC seleccionado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:369
+msgid "No menu bar item with text '%Q'"
+msgstr "Nenhuma barra de menus com o texto '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:383
+msgid "Invalid index specified: ignored"
+msgstr "Índice indicado inválido: a ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:392
+msgid "The popup '%Q' is not defined"
+msgstr "O menu '%Q' não está definido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:604
+msgid "No target channel specified and the current window is not a channel"
+msgstr "Nenhum canal de destino indicado e a janela actual não é um canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:705
+msgid "No catalogue %Q for the current language found"
+msgstr "Nenhum catálogo %Q para a actual linguagem encontrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:744
+msgid "The catalogue %Q was not loaded"
+msgstr "O catálogo %Q não foi carregado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:80
+msgid ""
+"Empty window identifier specified in the standard rebinding switch: no "
+"rebinding performed"
+msgstr ""
+"Identificador de janela vazio indicado na mudança padrão de religação: "
+"nenhuma religação efectuada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:91
+msgid ""
+"Invalid window specified in the standard rebinding switch: no rebinding "
+"performed"
+msgstr ""
+"Janela indicada inválida na mudançã padrão de religação: nenhuma religação "
+"efectuada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:94
+msgid "The left side of the scope operator didn't evaluate as an object reference"
+msgstr "O lado esquerdo do operador espaço não avaliou como uma referência de objecto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:100
+msgid "The left side of the scope operator evaluated to a null object reference"
+msgstr ""
+"O lado esquerdo do operador espaço avaliou para uma referência de objecto "
+"nula"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:107
+msgid ""
+"The left side of the scope operator evaluated to an invalid object reference "
+"(object doesn't exist)"
+msgstr ""
+"O lado esquerdo do operador espaço avaliado para uma referência de objecto "
+"inválida (o objecto não existe)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayreferenceassert.cpp:77
+msgid "Array reference assert failed: the variable evaluated to type '%Q'"
+msgstr "Acerto na referência do array falhado: a variável avaliou para o tipo '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:247
+msgid "Operand of unary operator didn't evaluate to a number"
+msgstr "O operando do operador unário não avaliou para um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:415
+msgid "Left operand didn't evaluate to a number"
+msgstr "O operando esquerdo não avaliou para um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:422
+msgid "Right operand didn't evaluate to a number"
+msgstr "O operando direito não avaliou para um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:547
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:575
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:583
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:374
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:66
+msgid "Division by zero"
+msgstr "Divisão por zero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:107
+#, c-format
+msgid "line %d, near character %d"
+msgstr "linha %d, caracter próximo %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:187
+msgid "This command can be used only in windows bound to an IRC context"
+msgstr ""
+"Este comando pode ser usado apenas na fronteira windows para um contexto de "
+"IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:193
+msgid "You're not connected to an IRC server"
+msgstr "Não está conectado a um servidor IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:199
+msgid "Missing parameter"
+msgstr "Falta parâmetro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:128
+msgid "Hash key evaluated to empty string: fix the script"
+msgstr "Avaliação da chave hash para string vazia: reparar o script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:99
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+"O argumento do subscript {} não avaliou para uma hash de conversão "
+"automática do tipo fornecido %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:144
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash automatic "
+"conversion from %Q supplied"
+msgstr ""
+"O argumento do subscript {} não avaliou para uma hash de conversão "
+"automática a partir do fornecido %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashreferenceassert.cpp:77
+msgid "Hash reference assert failed: the variable evaluated to type '%Q'"
+msgstr "Acerto na referência hash falhado: a variável avaliou para o tipo '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:100
+msgid "Failed to send an unknown command as /raw"
+msgstr "Falha ao enviar um comando desconhecido como /raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:104
+msgid "Call to undefined command '%Q'"
+msgstr "Chamada para comando indefinido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:116
+msgid "Error in inner alias command call '%Q', called from this context"
+msgstr "Erro na chamada do comando ''alias'' inner '%Q', chamado deste contexto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:74
+msgid "There are no extended scope variables in this scope"
+msgstr "Não há variáveis de espaço extendidas neste espaço"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:111
+msgid "Missing class name"
+msgstr "Nome da classe em falta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:120
+msgid "A class can't be a subclass of itself"
+msgstr "Uma classe não pode ser uma subclasse dela própria"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:127
+msgid "Couln't find base class named \"%Q\""
+msgstr "Não foi possível encontrar a classe base chamada \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:137
+msgid ""
+"Detected a loop in the inheritance tree of the base class \"%Q\": redefine "
+"that class first"
+msgstr ""
+"Loop detectado na árvore de sucessão da classe base \"%Q\": redefina essa "
+"classe primeiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:146
+msgid "Can't override the builtin class \"%Q\""
+msgstr "Não é possível substituir a classe embutida \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:71
+msgid "Module command call failed: can't load the module '%Q': %Q"
+msgstr ""
+"Chamada de comando do módulo falhada: não é possível carregar o módulo '%Q': "
+"%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:77
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a command named '%"
+"Q'"
+msgstr ""
+"Chamada de comando do módulo falhada: o módulo '%Q' não exporta um comando "
+"chamado '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:113
+msgid "Broken condition in menu setup: assuming false"
+msgstr "Condição falhada no menu de configuração: assumir falso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:220
+msgid "Broken icon parameter: ignoring"
+msgstr "Parâmetro de ícone falhado: ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:228
+msgid "Can't find the icon \"%Q\": ignoring"
+msgstr "Não é possível encontrar o ícone \"%Q\": ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:244
+msgid "Broken text parameter: assuming empty string"
+msgstr "Parâmetro de texto falhado: assumir string vazia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:486
+msgid "Recursive definition detected for popup '%Q': ignoring"
+msgstr "Definição recursiva detectada para o popup '%Q': ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:500
+msgid "Can't find the external popup '%Q'; ignoring"
+msgstr "Não é possível encontrar o popup externo '%Q': ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:853
+msgid "Broken prologue in popup menu '%Q': ignoring"
+msgstr "Prólogo falhado no menu do popup '%Q': a ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:868
+msgid "Broken epilogue in popup menu '%Q': ignoring"
+msgstr "Epílogo falhada no menu do popup '%Q': a ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:70
+msgid "Module function call failed: can't load the module '%Q': %Q"
+msgstr "Chamada da função módulo falhada: não é possível carregar o módulo '%Q': %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:77
+msgid ""
+"Module function call failed: the module '%Q' doesn't export a function named "
+"'%Q'"
+msgstr ""
+"Chamada da função módulo falhada: o módulo '%Q' não exporta a função chamada "
+"'%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_timermanager.cpp:244
+msgid "Timer '%Q' has a broken callback handler: killing the timer"
+msgstr "O temporizador '%Q' danificou o mani+ulador de chamadas: matar o temporizador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:229
+msgid "The target variable didn't evaluate to an integer or real value"
+msgstr "A variável de destino não avaliou para um valor inteiro ou real"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:283
+msgid "The right side of operator '&=' didn't evaluate to an integer"
+msgstr "O lado direito do operador '&=' não foi avaliado para um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:294
+msgid "The left side of operator '&=' didn't evaluate to an integer"
+msgstr "O lado esquerdo do operador '&=' não foi avaliado para um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:353
+msgid "The right side of operator '/=' didn't evaluate to a number"
+msgstr "O lado direito do operador '/=' não é um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:364
+msgid "The left side of operator '/=' didn't evaluate to a number"
+msgstr "O lado esquerdo do operador '/=' não é um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:446
+msgid "The right side of operator '%=' didn't evaluate to a number"
+msgstr "O lado direito do operador '%=' não é um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:457
+msgid "The left side of operator '%=' didn't evaluate to a number"
+msgstr "O lado esquerdo do operador '%=' não é um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:541
+msgid "The right side of operator '*=' didn't evaluate to a number"
+msgstr "O lado direito do operador '*=' não é um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:552
+msgid "The left side of operator '*=' didn't evaluate to a number"
+msgstr "O lado esquerdo do operador '*=' não é um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:620
+msgid "The right side of operator '|=' didn't evaluate to an integer"
+msgstr "O lado direito do operador '|=' não é um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:631
+msgid "The left side of operator '|=' didn't evaluate to an integer"
+msgstr "O lado esquerdo do operador '|=' não é um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:691
+msgid "The right side of operator '<<=' didn't evaluate to an integer"
+msgstr "O lado direito do operador '<<=' não é um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:702
+msgid "The left side of operator '<<=' didn't evaluate to an integer"
+msgstr "O lado esquerdo do operador '<<=' não é um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:763
+msgid "The right side of operator '>>=' didn't evaluate to an integer"
+msgstr "O lado direito do operador '>>=' não é um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:774
+msgid "The left side of operator '>>=' didn't evaluate to an integer"
+msgstr "O lado esquerdo do operador '>>=' não é um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:840
+msgid "The right side of operator '-=' didn't evaluate to a number"
+msgstr "O lado direito do operador '-=' não é um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:851
+msgid "The left side of operator '-=' didn't evaluate to a number"
+msgstr "O lado esquerdo do operador '-=' não é um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:923
+msgid "The right side of operator '+=' didn't evaluate to a number"
+msgstr "O lado direito do operador '+=' não é um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:934
+msgid "The left side of operator '+=' didn't evaluate to a number"
+msgstr "O lado esquerdo do operador '+=' não é um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1009
+msgid "The right side of operator '^=' didn't evaluate to an integer"
+msgstr "O lado direito do operador '^=' não é um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1020
+msgid "The left side of operator '^=' didn't evaluate to an integer"
+msgstr "O lado esquerdo do operador '^=' não é um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1462
+msgid ""
+"The regular expression matched a zero-length substring: this is not valid in "
+"the s/// operator, skipping"
+msgstr ""
+"A expressão regular correspondeu à substring de comprimento zero: isto não é "
+"válido no operador s///, a ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:52
+msgid "Unexpected end of script after '$' function call prefix"
+msgstr "Fim inesperado do script após o prefixo de chamada da função '$'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:53
+msgid "Unexpected character %q (unicode %x) after '$' function call prefix"
+msgstr "Caracter inespeardo %q (unicode %x) após o prefixo de chamada da função '$'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:54
+msgid ""
+"Syntax error after '$' function call prefix. If you want to use a plain '$' "
+"in the code you need to escape it"
+msgstr ""
+"Erro de sintaxe após o prefixo de chamada da função '$'. Se quiser usar '$' "
+"plano no código, precisa de se livrar dele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:63
+msgid "Invalid expression evaluation in object scope"
+msgstr "Avaliação de expressão inválida no objecto espaço"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:78
+msgid "Invalid command evaluation in object scope"
+msgstr "Avaliação de comando inválido no objecto espaço"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:87
+msgid "Empty instruction block for command evaluation"
+msgstr "Bloco de intruções vazio para avaliação de comando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:101
+msgid "Parameter identifiers are forbidden in object scope (after the '->' operator)"
+msgstr ""
+"Identificadores de parâmetros são proibidos no objecto espaço ( após o "
+"operador '->')"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:147
+msgid ""
+"Ending index of a multiple parameter identifier is lower or equal to the "
+"starting index. This will evaluate to a single parameter identifier."
+msgstr ""
+"acabar o índice de um identificador de parâmetro múltiplo é mais baixo ou "
+"igual ao índice inicial. Isto irá avaliar para um identificador de parâmetro "
+"único."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:163
+msgid "Syntax error: invalid $$ ($this) function call in object scope"
+msgstr "Erro de sintaxe: chamada de função inválida $$ ($this) no objecto de escape"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:189
+msgid "Syntax error: malformed alias function call identifier"
+msgstr "Erro de sintaxe: identificador de chamada de função ''alias'' mal formado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:197
+msgid "Syntax error: malformed (alias?) function call identifier"
+msgstr "Erro de sintaxe: identificador de chamada de função (''alias''?) mal formado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:307
+#, c-format
+msgid "Invalid data type for parameter \"%s\""
+msgstr "Tipo de dados inválido para o parâmetro \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:122
+#, c-format
+msgid "found empty string where type '%s' was expected"
+msgstr "encontrada string vazia onde era esperado o tipo '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:129
+msgid "found string value \"%Q\" where type '%s' was expected"
+msgstr "encontrado o valor de string \"%Q\" onde era esperado o tipo '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:134
+msgid "found type %Q where type '%s' was expected"
+msgstr "encontrado o tipo \"%Q\" onde era esperado o tipo '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:154
+#, c-format
+msgid "Missing non-optional parameter \"%s\""
+msgstr "Falta parâmetro não-opcional \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:282
+msgid "found empty string while a non empty one was expected"
+msgstr "encontrada string vazia onde era esperado uma não vazia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:309
+#, c-format
+msgid "found signed integer \"%d\" where type 'unsigned integer' was expected"
+msgstr ""
+"encontrado inteiro atribuído \"%d\" onde era esperado o tipo 'inteiro não "
+"atribuído'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:253
+msgid "This window has no associated IRC context"
+msgstr "Esta janela não tem contexto IRC associado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:483
+#, c-format
+msgid "No such IRC context (%u)"
+msgstr "Sem contexto do irc (%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:471
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:586
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:494
+msgid "This window is not associated to an IRC context"
+msgstr "Esta janela não está associada a um contexto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:809
+msgid ""
+"The specified format string wasn't accepted by the underlying system time "
+"formatting function"
+msgstr ""
+"O formato indicado da 'string' não foi aceite pela função de formatação do "
+"sistema horário"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:70
+msgid "Unterminated c-style multiline comment"
+msgstr "Comentário multilinha no estilo-c não terminado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:71
+msgid "Unexpected end of script in multiline comment"
+msgstr "Fim inesperado do script nos comentários multilinha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:88
+msgid ""
+"Unexpected character '%q' (unicode %x) after a slash (it is a typo or a "
+"malformed comment begin ?)"
+msgstr ""
+"Caracter inesperado '%q' (unicode %x) após a barra (é um tipo ou um começo "
+"de comentário mal formado?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:71
+msgid "Call to undefined function '%Q'"
+msgstr "Chamada para função indefinida '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:79
+msgid "Error in inner alias function call '%Q', called from this context"
+msgstr "Erro na chamada da função da ''alias'' inner '%Q', chamado deste contexto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:73
+msgid "Array index didn't evaluate to an integer"
+msgstr "O índice do array não avaliou para um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:79
+msgid "Array index evaluated to a negative integer (non negative integer expected)"
+msgstr ""
+"Índice de array avaliado para um inteiro negativo (era esperado um negativo "
+"inteiro)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:106
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from %Q supplied"
+msgstr ""
+"O argumento do subscript [] não avaliou para um array: conversão automática "
+"fornecida de %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:142
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+"O argumento do subscript [] não avaliou para um array: conversão automática "
+"do tipo fornecido %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:219
+msgid "Lag meter was not enabled"
+msgstr "O medidor de lag não foi activado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:546
+msgid "No such event handler (%Q) for event %Q"
+msgstr "Nenhum controlador de eventos (%Q) para o evento %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands.cpp:153
+msgid "This is not a channel"
+msgstr "Isto não é um canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:99
+msgid "Unexpected end of command buffer while looking for the \"perl.end\" statement"
+msgstr ""
+"Inesperado fim de comando de buffer enquanto procurava a indicação \"perl.end"
+"\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:147
+msgid "Trailing garbage at the end of the break command: ignored"
+msgstr "Lixo anexo no fim do comando break: ignorado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:209
+msgid "The 'unset' command needs a variable list"
+msgstr "O comando 'unset' precisa de uma lista variável"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:280
+msgid "Found character %q (unicode %x) where a variable was expected"
+msgstr "Caracter encontrado %q (unicode %x) onde a variável era esperada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:219
+msgid "'unset' command used without a variable list"
+msgstr "O comando 'unset' usado sem uma lista variável"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:279
+msgid "The 'global' command needs a variable list"
+msgstr "O comando 'global' precisa de uma variável lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:631
+msgid "Found character %q (unicode %x) where an open parenthesis was expected"
+msgstr "Caracter encontrado %q (unicode %x) onde era esperado um parêntesis aberto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:439
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:538
+msgid "Unexpected end of buffer in class definition"
+msgstr "Inesperado fim de buffer na definição de classe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:474
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:501
+msgid "Found character %q (unicode %x) where a function name was expected"
+msgstr "Encontrou-se o caracter %q (unicode %x) onde era esperada um nome de função"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:522
+msgid "Unexpected end of buffer in function parameter list reminder"
+msgstr "Inesperado fim do buffer no parâmetro da função lembrança de lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:630
+msgid "The while command needs an expression enclosed in parenthesis"
+msgstr "O comando while precisa de uma expressão dentro de parêntesis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:654
+msgid ""
+"The last while command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr "O último comando while no buffer não tem instruções condicionais: sem sentido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:655
+msgid ""
+"Unexpected end of script while looking for the instruction block of the "
+"while command"
+msgstr ""
+"Inesperado fim de script enquanto procurava pelo bloco de instruções do "
+"comando while"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:741
+msgid ""
+"Unexpected end of command after the 'do' command block: expected 'while' "
+"keyword"
+msgstr ""
+"Fim inesperado do comando após o bloco de comando 'do': chave 'while' "
+"esperada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:743
+msgid "Found character %q (unicode %x) where a 'while' keyword was expected"
+msgstr "Caracter encontrado %q (unicode %x) onde um 'while' era esperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:759
+msgid ""
+"The 'while' block of the 'do' command needs an expression enclosed in "
+"parenthesis"
+msgstr "O bloco 'while' do comando 'do' precisa de uma expressão dentro de parêntesis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:779
+msgid "Garbage string after the expression in 'do' command: ignored"
+msgstr "Lixo de string após a expressão no comando 'do': ignorado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:825
+msgid "The 'if' command needs an expression enclosed in parenthesis"
+msgstr "O comando 'if' precisa de uma expressão dentro de parêntesis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:850
+msgid ""
+"The last if command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr "O último comando if no buffer não tem instruções condicionais: sem sentido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:851
+msgid ""
+"Unexpected end of script while looking for the instruction block of the if "
+"command"
+msgstr ""
+"Inesperado fim de script enquanto procurava o bloco de instruções do comando "
+"if"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:966
+msgid ""
+"Unexpected end of buffer while looking for the closing ')' in the 'for' "
+"command"
+msgstr "Inesperado fim de buffer enquanto procurava o caracter ')' no comando 'for'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1015
+msgid "The 'for' command needs an expression enclosed in parenthesis"
+msgstr "O comando 'for' precisa de uma expressão dentro de parêntesis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1092
+msgid ""
+"Found char %q (unicode %x) while looking for the terminating ')' in 'for' "
+"command"
+msgstr ""
+"Caracter %q (unicode %x) encontrado enquanto procurava pela terminação ')' "
+"no comando 'for'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1122
+msgid "Empty infinite 'for' loop: fix the script"
+msgstr "Loop 'for' infinito: reparar o script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1181
+msgid "The 'foreach' command needs an expression enclosed in parenthesis"
+msgstr "O comando 'foreach' precisa de uma expressão dentro de parêntesis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1205
+msgid ""
+"The 'foreach' command expects a writeable iteration variable as first "
+"parameter"
+msgstr ""
+"O comando 'foreach' espera uma variável iteração de escrita como primeiro "
+"parâmetro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1196
+msgid ""
+"Found character '%q' (unicode %x) where '%' or '$' was expected: see /help "
+"foreach for the command syntax"
+msgstr ""
+"Caracter encontrado '%q' (unicode %x) onde '%' ou '$' era esperado: ver /"
+"help para a sintaxe de comando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1207
+msgid "Unexpected function call as 'foreach' iteration variable"
+msgstr "Função call inesperada como variável de iteração 'foreach'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1209
+msgid "Unexpected read-only variable as 'foreach' iteration variable"
+msgstr "Inesperada variável apenas de leitura como variável de iteração 'foreach'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1219
+msgid ""
+"Unexpected end of 'foreach' parameters: at least one iteration data argument "
+"must be given"
+msgstr ""
+"Inesperado fim dos parâmetros 'foreach': pelo menos uma iteração de "
+"argumento de dados tem que ser dada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1223
+msgid ""
+"The 'foreach' command expects a comma separated list of iteration data items "
+"after the first parameter"
+msgstr ""
+"O comando 'foreach' espera uma lista separada por vírgulas de iteração de "
+"item de dados após o primeiro parâmetro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1244
+msgid "Found empty 'foreach' execution block: maybe you need to fix your script ?"
+msgstr ""
+"Encontrado bloco de execução 'foreach' vazio: talvez precise reparar o seu "
+"script?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1365
+msgid "The 'switch' command needs an expression enclosed in parenthesis"
+msgstr "O comando 'switch' precisa de uma expressão dentro de parêntesis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1415
+msgid "Unexpected end of buffer in switch condition block"
+msgstr "Inesperado fim de buffer na mudança do bloco de condição"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1422
+msgid ""
+"Found character %q (unicode %x) where a 'case','match','regexp','default' or "
+"'break' label was expected"
+msgstr ""
+"Caracter encontrado %q (unicode %x) onde era esperado um 'case', 'match', "
+"'regexp', 'default' ou 'break'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1460
+msgid ""
+"Found 'break' label where a 'case','match','regexp' or 'default' label was "
+"expected"
+msgstr ""
+"Encontrado rótulo 'break' onde era esperado um rótulo "
+"'case','match','regexp' ou 'default'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1465
+msgid ""
+"Found token '%Q' where a 'case','match','regexp','default' or 'break' label "
+"was expected"
+msgstr ""
+"Encontrado '%Q' onde era esperado uma expressão do tipo 'case','match', "
+"'regexp', ou 'break'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1528
+msgid "Senseless empty switch command: fix the script"
+msgstr "Comando switch vazio sem sentido: repare o script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1562
+msgid "Unexpected end of buffer in defpopup block"
+msgstr "Inesperado fim de buffer no blobo defpopup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1569
+msgid ""
+"Found character %q (unicode %x) where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+"Caracter encontrado %q (unicode %x) onde era esperado uma expressão do tipo "
+"'prologue', 'separator', 'label', 'popup', 'item', 'extpopup' ou 'epilogue'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1668
+msgid "Found empty prologue block: maybe you need to fix the script?"
+msgstr "Encontrado bloco de prólogo vazio: talvez precise reparar o seu script?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1670
+msgid "Found empty epilogue block: maybe you need to fix the script?"
+msgstr "Encontrado bloco de epílogo vazio: talvez precise reparar o seu script?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1703
+msgid ""
+"Unexpected empty <text> field in label parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Inesperado campo vazio <texto> nos parâmetros do rótulo. Veja /help defpopup "
+"para a sintaxe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1753
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1801
+msgid ""
+"Unexpected empty <text> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Inesperado campo vazio <texto> nos parâmetros extpopup. Veja /help defpopup "
+"para a sintaxe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1777
+msgid "Found empty instruction for popup item: maybe you need to fix the script?"
+msgstr ""
+"Encontrada instrução vazia para item de popup: talvez precise reparar o seu "
+"script?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1809
+msgid ""
+"Unexpected empty <name> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Inesperado campo vazio <nome> nos parâmetros extpopup. Veja /help defpopup "
+"para a sintaxe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1821
+msgid ""
+"Found token '%Q' where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+"Encontrado '%Q' onde era esperado "
+"'prologue','separator','label','popup','item', 'extpopup' ou 'epilogue'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1931
+msgid "The 'defpopup' command needs an expression enclosed in parenthesis"
+msgstr "O comando 'defpopup' precisa de uma expressão dentro de parêntesis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:109
+msgid "beginning of input"
+msgstr "inicio da entrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:121
+msgid ""
+"Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %s"
+"\" for the command syntax"
+msgstr ""
+"Caracter encontrado '%q' (unicode 0x%x) onde '%c' era esperado: ver \"/help %"
+"s\" para a sintaxe de comando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:124
+#, c-format
+msgid ""
+"Found end of input where character '%c' was expected: see \"/help %s\" for "
+"the command syntax"
+msgstr ""
+"Encontrado o fim da entrada onde era esperado o caracter '%c': ver \"/help %s"
+"\" para a sintaxe de comando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:197
+msgid "Empty script"
+msgstr "Script vazio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2650
+msgid ""
+"Syntax error after '%' variable prefix. If you want to use a plain '%' in "
+"the code you need to escape it"
+msgstr ""
+"Erro de sintaxe a seguir ao prefixo da variável '%'. Se quiser usar um '%' "
+"plano no código precisa de lhe escapar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2667
+msgid "Objects have no extended scope variables"
+msgstr "Os objectos não têm variáveis de espaço extendidas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2727
+msgid "Found character '%q' (unicode %x) where an instruction was expected"
+msgstr "Encontrou-se o caracter '%q' (unicode %x) onde era esperada uma instrução"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2760
+msgid "Unterminated instruction block"
+msgstr "Bloco de instruções não terminado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2761
+msgid "Unexpected end of script in instruction block (missing closing brace)"
+msgstr "Inesperado fim do script no bloco de instrução (falta chaveta de fecho)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2838
+msgid ""
+"The dash after a command should be followed by a letter (switch), by a digit "
+"(negative number) or be escaped"
+msgstr ""
+"O traço a seguir ao comando deve ser seguido por uma letra (mudança), por um "
+"dígito (número negativo) ou não ter nada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2842
+msgid "Unexpected character '%q' (unicode %x) after a switch dash"
+msgstr "Caracter inesperado '%q' (unicode %x) após uma barra de troca"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2844
+msgid "Unexpected end of script after a switch dash"
+msgstr "Fim inesperado do script após uma barra de troca"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2869
+msgid ""
+"The above problem might be related to the switch dash and the following "
+"equal sign"
+msgstr ""
+"O problema em questão pode estar relacionado com a barra de troca e o "
+"seguinte sinal de igual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2948
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3016
+msgid "Unexpected end of script in parameter list"
+msgstr "Inesperado fim de script na lista de parâmetros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2954
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3022
+msgid "Unexpected end of line in parameter list"
+msgstr "Inesperado fim de linha na lista de parâmetros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3083
+msgid ""
+"Nested character %q corresponding to expected terminator, this might confuse "
+"me a bit: it is a good idea to enclose it in quotes"
+msgstr ""
+"Caracter ao lado do %q correspondente ao finalizador esperado, isto pode ser "
+"confundir um pouco: é sempre bom colocá-lo entre aspas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3093
+msgid "Skipping nested terminator character %q"
+msgstr "A ignorar caracter terminador aproximando %q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3120
+msgid "Stray backslash at the end of the script"
+msgstr "Barra de fim do script inesperada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3393
+msgid "Unterminated hash key"
+msgstr "Chave hash não terminada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3387
+msgid "Unexpected end of script in hash key (missing '}' character ?)"
+msgstr "Inesperado fim de script na chave hasg (falta o caracter '}'?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3394
+msgid ""
+"Unexpected end of line in hash key (missing '}' character or unescaped "
+"newline)"
+msgstr "Fim inesperado da linha na chave hash (falta o caracter '}' ou nova linha)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3679
+msgid "Unterminated string constant"
+msgstr "String constante não terminada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3673
+msgid "Unexpected end of script in string constant (missing \" character ?)"
+msgstr "Inesperado fim de script na string constante (falta um caracter?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3680
+msgid ""
+"Unexpected end of line in string constant (missing \" character or unescaped "
+"newline)"
+msgstr ""
+"Fim inesperado no fim da linha na string constante ( falta o caracter \" ou "
+"uma nova linha)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_processmanager.cpp:225
+msgid "Error triggered from process callback handler: killing process"
+msgstr "Erro provocado pelo manipulador do processo de chamar: matar processo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arraycount.cpp:72
+msgid ""
+"The argument of the array count '#' operator didn't evaluate to an array: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+"O argumento da contagem do operador do array '#' não avaliou para um array: "
+"conversão automática a partir do tipo fornecido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:197
+msgid "This window has no associated IRC context and is not a DCC chat"
+msgstr "Esta janela não tem um contexto IRC associado e não é um DCC Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:293
+msgid "Class \"%Q\" is not defined"
+msgstr "A classe \"%Q\" não está definida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:303
+msgid "The specified parent object does not exist"
+msgstr "O objecto relacionado indicado não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:430
+msgid "There is no option named '%Q'"
+msgstr "Não há nenhuma opção chamada '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:85
+msgid "Internal error: pure virtual evaluateReadOnly called"
+msgstr "Erro interno: chamada de avaliação apenas de leitura puramente virtual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:91
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:104
+msgid "Internal error: trying to evaluate as read-write a read-only data location"
+msgstr ""
+"Erro interno: a tentar avaliar uma localização de dados apenas de leitura "
+"como fosse de escrita e leitura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:98
+msgid "Internal error: pure virtual evaluateReadOnlyInObjectScope called"
+msgstr "Erro interno: chamada virtual pura de evaluateReadOnlyInObjectScope"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:215
+msgid "[KVS]%c Warning: %Q"
+msgstr "[KVS]%c Aviso: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:211
+msgid "[KVS]%c Compilation Error: %Q"
+msgstr "[KVS]%c Erro de Compilação: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:219
+msgid "[KVS]%c Runtime Error: %Q"
+msgstr "[KVS]%c Erro de Execução: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:224
+msgid "[KVS] in script context \"%Q\""
+msgstr "[KVS] no contexto do script \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:226
+msgid "[KVS] in script context \"%Q\", %Q"
+msgstr "[KVS] no contexto do script \"%Q\", %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:233
+msgid "[KVS] Code listing:"
+msgstr "[KVS] Listagem de código:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:238
+msgid "[KVS] Window:"
+msgstr "Janela [KVS]:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:242
+#, c-format
+msgid "[KVS] Destroyed window with pointer %x"
+msgstr "[KVS] Janela destruida pelo apontador %x"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:246
+msgid "[KVS] Call stack:"
+msgstr "[KVS] Chamada da pilha:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:464
+#, c-format
+msgid "Window with ID '%s' not found, returning empty string"
+msgstr "Janela com ID '%s' não encontrado, retornar string vazia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:130
+msgid "The specified window is not a channel"
+msgstr "A janela indicada não é um canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:392
+msgid "The $sw() function can be used only in aliases"
+msgstr "A função $sw() pode ser usada apenas nas ''alias''"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:302
+msgid "Invalid pitch value: using default"
+msgstr "Valor de pitch inválido: a usar predefinido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:312
+msgid "Invalid duration value: using default"
+msgstr "Valor de duração inválido: a usar predefinido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:421
+msgid "No button with type %Q named %Q"
+msgstr "Nenhum botão com tipo %Q chamado %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:632
+msgid "Can't delete a null object reference"
+msgstr "Não é possível apagar uma referência de objecto nula"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:638
+msgid "Can't delete an inexisting object"
+msgstr "Não é possível apagar um objecto inexistente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:692
+msgid "Inexisting popup \"%Q\""
+msgstr "Menu inexistente \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:698
+msgid "Popup menu self-modification is not allowed (the popup is probably open)"
+msgstr ""
+"A modificação própria de menus não é permitida (o menu provavelmente está "
+"aberto)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:705
+msgid "The menu item with id \"%Q\" does not exist in popup \"%Q\""
+msgstr "O item do menu com o id \"%Q\" não existe no menu \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:860
+msgid ""
+"The argument of the -w switch did not evaluate to a valid window id: using "
+"default"
+msgstr ""
+"O argumento da opção -w não foi avaliado para um id de janela válido: a usar "
+"predefinido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:869
+msgid "The argument of the i switch did not evaluate to a number: using default"
+msgstr "O argumento da opção i não foi avaliado para um numero: a usar predefinido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:981
+msgid "Invalid color-set specification, using default"
+msgstr "Especificação de escolha de cor inválida , usar predefinida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:992
+#, c-format
+msgid "Window '%s' not found, using current one"
+msgstr "Janela '%s' não encontrada, usar actual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:78
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a callback "
+"command named '%Q'"
+msgstr ""
+"Chamada de comando do módulo falhada: o módulo '%Q' não exporta um comando "
+"de chamada '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp:401
+#, c-format
+msgid "The popup '%s' is actually locked: 'self-modifications' are not allowed"
+msgstr ""
+"O popup '%s' está actualmente trancado: modificações próprias não são "
+"permitidas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:822
+#, c-format
+msgid "Ignoring DCC from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "A ignorar DCC de \r!nc\r%s\r [%s@\r!h\r%s\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:839
+#, c-format
+msgid "Ignoring CTCP from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "A ignorar CTCP de \r!nc\r%s\r [%s@\r!h\r%s\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:978
+msgid "The following CTCP reply has unrecognized target %Q"
+msgstr "A seguinte resposta CTCP não tem um alvo reconhecido %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1025
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1128
+msgid "Channel CTCP"
+msgstr "Canal CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:988
+msgid "%Q %Q reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "%Q %Q resposta de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1018
+msgid "The following CTCP request has unrecognized target %Q"
+msgstr "O seguinte pedido CTCP não tem um alvo reconhecido %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1032
+msgid ""
+"%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignored (flood limit "
+"exceeded)"
+msgstr ""
+"%Q %Q%c pedido de \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignorado (limite de flood "
+"excedido)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1036
+msgid "ignored (unrecognized)"
+msgstr "ignorado (não reconhecido)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "ignored"
+msgstr "ignorado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "replied"
+msgstr "respondido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1041
+msgid "%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+msgstr "%Q %Q%c pedido de \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1079
+msgid "The following CTCP PING reply has unrecognized target \"%Q\""
+msgstr "A seguinte resposta CTCP PING não tem um alvo reconhecido \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1113
+#, c-format
+msgid ""
+"The following CTCP PING reply has a broken time identifier \"%S\", don't "
+"trust the displayed time"
+msgstr ""
+"A seguinte resposta ctcp PING tem um identificador de tempo danificado \"%S"
+"\", não confiar na hora indicada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1132
+msgid "%Q PING reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sec %u msec"
+msgstr "%Q resposta PING de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u seg %u mseg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1466
+msgid "The following CTCP ACTION has unrecognized target %Q"
+msgstr "A seguinte CTCP ACTION não tem um alvo reconhecido %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1471
+msgid "CTCP ACTION from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "CTCP ACTION de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1517
+msgid "Unable to add file offer for file %Q (File not readable?)"
+msgstr ""
+"Não é possível adicionar a oferta de ficheiro para o ficheiro %Q (Ficheiro "
+"não legível?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1521
+msgid "Added %d sec file offer for file %Q (%Q) to recipient %Q"
+msgstr ""
+"Adicionados %d seg à oferta de ficheiro para o ficheiro %Q (%Q) para o "
+"recipiente %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "private"
+msgstr "privado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "channel notification:"
+msgstr "notificação do canal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1579
+msgid "notification"
+msgstr "notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1584
+msgid "%Q unsets avatar"
+msgstr "%Q tira o Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1591
+msgid "%Q changes avatar to %s"
+msgstr "%Q muda o avatar para %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1637
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (HTTP GET %s)"
+msgstr ": Nenhuma cópia local válida do avatar disponível, a pedir um (HTTP GET %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1644
+msgid ""
+": No valid local copy of avatar available; failed to start an HTTP transfer, "
+"ignoring"
+msgstr ""
+": Nenhuma cópia local válida do avatar disponível, falhou ao iniciar uma "
+"transferência HTTP, a ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1652
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (DCC GET %s)"
+msgstr ": Nenhuma cópia local válida do avatar disponível, a pedir um (DCC GET %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1664
+msgid ": No valid local copy of avatar available; flood limit exceeded, ignoring"
+msgstr ""
+": Nenhuma cópia local válida do avatar disponível, limite de flood excedido, "
+"a ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1669
+msgid ": No valid local copy of avatar available, ignoring"
+msgstr ": Nenhuma cópia local válida do avatar disponível, a ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1677
+msgid ": No such nickname in the user database, ignoring the change"
+msgstr ""
+": Nenhuma alcunha encontrada na base de dados de utilizadores, ignorar "
+"alteração"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1717
+msgid "Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S)"
+msgstr "A ignorar o pedido DCC %S de \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1759
+msgid "Processing DCC %Q request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s)"
+msgstr "A processar o pedido DCC %Q de \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1770
+#, c-format
+msgid "Unable to process the above request: Cannot load DCC module (%s)"
+msgstr ""
+"Não é possível processar o seguinte pedido: Não pode carregar o módulo DCC (%"
+"s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1776
+msgid "Unable to process the above request: DCC module may be broken"
+msgstr ""
+"Não é possível processar o seguinte pedido: O módulo DCC pode estar "
+"danificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:132
+msgid "[Server parser]: Encountered problems while parsing the following message:"
+msgstr ""
+"[Analisador do servidor]: Problemas encontrados enquanto analisava a "
+"seguinte mensagem:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:134
+msgid "[Server parser]: [%s][%s] %Q"
+msgstr "[Analisador do Servidor]: [%s][%s] %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:136
+#, c-format
+msgid "[Server parser]: %s"
+msgstr "[Analisador do servidor]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:98
+msgid "Received ping from \r!s\r%Q\r (PING %Q), replied pong"
+msgstr "PING recebido de \r!s\r%Q\r (PING %Q), pong respondido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:125
+#, c-format
+msgid "Received pong from \r!s\r%s\r (PONG %s)"
+msgstr "PONG recebido de \r!s\r%s\r (PONG %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:151
+msgid "Server ERROR: %Q"
+msgstr "ERRO do Servidor: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:174
+msgid "Missing channel parameter in join message"
+msgstr "Parametro de canal em falta na mensagem de entrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:209
+msgid "Received a join message for an unknown channel, possible desync"
+msgstr "Mensagem de entrada recebida para um canal desconhecido,possível desync"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:305
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r [implicit +%c umode change]"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] entrou no \r!c\r%Q\r [alteração implícita umode +%"
+"c]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:310
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] entrou no \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:324
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] acabou de entrar no \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:355
+msgid "Received a part message for an unknown channel, possible desync"
+msgstr ""
+"Mensagem de saída de canal recebida para um canal desconhecido,possível "
+"desync"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:384
+msgid "You have left channel \r!c\r%Q\r"
+msgstr "Acabou de sair do canal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:386
+msgid "You have left channel \r!c\r%Q\r: %Q"
+msgstr "Acabou de sair do canal \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:402
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] saiu do \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:406
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] saiu do \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:420
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r: %Q"
+msgstr "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] acabou de sair do \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:424
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r"
+msgstr "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] acabou de sair do \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:494
+#, c-format
+msgid "Netsplit detected: %s"
+msgstr "Netsplit detectado :%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:546
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:562
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] saiu do IRC: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:589
+msgid "Received a kick message for an unknown channel, possible desync"
+msgstr "Mensagem de expulsão recebida para um canal desconhecido, possível desync"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:626
+msgid "You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Foi expulso de \r!c\r%Q\r por \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:633
+msgid "Attempting to rejoin \r!c\r%Q\r..."
+msgstr "A tentar reentrar em \r!c\r%Q\r..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:670
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@"
+"\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] foi expulso de \r!c\r%Q\r por \r!n\r%Q\r [%Q@\r!h"
+"\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:682
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just been kicked from \r!c\r%Q\r by \r!n\r%Q"
+"\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] acabou de ser expulso de \r!c\r%Q\r por \r!n\r%Q"
+"\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:710
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+"A seguinte mensagem parece estar encriptada, mas o motor de encriptação "
+"falhou ao descodifica-la: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:776
+msgid "Ignoring query-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "A ignorar privados PRIVMSG de \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:843
+msgid "Spam privmsg from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%s\")"
+msgstr ""
+"Lixo privmsg de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (palavra lixo correspondente "
+"\"%s\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:984
+msgid "Ignoring channel-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "A ignorar PRIVMSG no canal de \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1106
+msgid "Ignoring Notice from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "A ignorar Notícia de \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1159
+msgid "NickServ requests authentication, executing scheduled command"
+msgstr "Pedido de autenticação do nickserv, a executar comando agendado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1162
+msgid ""
+"The scheduled NickServ identification command appears to be broken, please "
+"change the setting"
+msgstr ""
+"O comando de identificação do nickserv agendado parece estar danificado, por "
+"favor mude a configuração"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1213
+msgid "Spam notice from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%Q\")"
+msgstr ""
+"Noticia lixo de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (palavra lixo correspondente "
+"\"%Q\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1394
+msgid "Received a topic message for an unknown channel, possible desync"
+msgstr "Mensagem de tópico recebida para um canal desconhecido, possível desync"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1413
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has changed topic to \"%Q%c\""
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] mudou o tópico para \"%Q%c\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1512
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] é agora conhecido como \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1063
+msgid "You have changed your nickname to %Q"
+msgstr "Mudou a sua alcunha para %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1477
+msgid ""
+"The target of this query was lost and has been found when \r!n\r%Q\r [%Q@\r!h"
+"\r%Q\r] changed his nickname to \r!n\r%Q\r"
+msgstr ""
+"O alvo deste query perdeu-se e foi encontrado quando o \r!n\r%Q\r [%Q@\r!h\r%"
+"Q\r] mudou a sua alcunha para \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1486
+msgid ""
+"The recent nickname change from \r!n\r%Q\r to \r!n\r%Q\r caused a query "
+"collision: merging output"
+msgstr ""
+"A recente mudança de alcunha de \r!n\r%Q\r para \r!n\r%Q\r causou uma "
+"colisão de privados: a juntar o resultado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1495
+msgid "End of merged output"
+msgstr "Fim do resultado junto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1540
+msgid "Ignoring invite from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "A ignorar convite de \r!nc\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "autojoining"
+msgstr "auto-entrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "double-click the channel name to join"
+msgstr "duplo click no nome do canal para entrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1556
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] invites you to channel \r!c\r%Q\r (%Q)"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] convida-o a entra no canal \r!c\r%Q\r (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1564
+msgid "Received an invite message directed to another nick, possible desync"
+msgstr ""
+"Recebeu uma mensagem de convite que era dirigida a outro alcunha, possível "
+"desync"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1584
+msgid "WALLOPS from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "WALLOPS de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1648
+#, c-format
+msgid "You have set user mode %s"
+msgstr "Definiu o modo de utilizador para %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1655
+msgid "Received a mode change for an unknown channel, possible desync"
+msgstr "Mudança de modo recebida para um canal desconhecido, possível desync"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1731
+msgid "%Q [%Q@%Q] has set channel key to \"\r!m-k\r%Q\r\""
+msgstr "%Q [%Q@%Q] definiu a senha o canal para \"\r!m-k\r%Q\r\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1734
+msgid "%Q [%Q@%Q] has unset the channel key"
+msgstr "%Q [%Q@%Q] removeu a senha do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1754
+msgid "%Q [%Q@%Q] has set channel \r!m-l\rlimit to %Q\r"
+msgstr "%Q [%Q@%Q] definiu o limite do canal \r!m-l\rpara %Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1757
+msgid "%Q [%Q@%Q] has unset the channel limit"
+msgstr "%Q [%Q@%Q] removeu limite do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1779
+msgid "%Q [%Q@%Q] has set mode %c%c \r!n\r%Q\r"
+msgstr "%Q [%Q@%Q] colocou o modo %c%c \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1787
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1834
+msgid "%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"
+msgstr "%Q [%Q@%Q] colocou o canal em \r!m%c%c\rmodo %c%c\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1819
+msgid "%Q [%Q@%Q] has set mode %c%c \r!m%c%c\r%Q\r"
+msgstr "%Q [%Q@%Q] colocou o modo %c%c \r!m%c%c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1860
+msgid "%Q [%Q@%Q] has set mode %s %Q"
+msgstr "%Q [%Q@%Q] colocou em modo %s %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1863
+msgid "%Q [%Q@%Q] has set channel mode %s"
+msgstr "%Q [%Q@%Q] definiu o modo do canal %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:147
+#, c-format
+msgid ""
+"One or more standard mode flags are missing in the server available modes.\n"
+"This is caused either by a non RFC1459-compliant IRC daemon or a broken "
+"server reply.\n"
+"Server umodes seem to be '%s' and channel modes seem to be '%s'.\n"
+"Ignoring this reply and assuming that the basic set of modes is available.\n"
+"If you have strange problems, try changing the server."
+msgstr ""
+"Um ou mais modos flag padrão estão em falta nos modos disponíveis do "
+"servidor.\n"
+"Isto é causado por um RFC1459-daemon IRC não complacente ou uma resposta\n"
+"servidor danificada.\n"
+"Os umodes do servidor parecem ser '%s' e os modos do canal parecem ser '%"
+"s'.\n"
+"Ignorar esta resposta e assumir que a definição de modos básico está "
+"disponível.\n"
+"Se tiver problemas estranhos, tente mudar de servidor."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:159
+msgid "Available user modes:"
+msgstr "Modos de utilizador disponíveis:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:169
+msgid ": Unknown user mode"
+msgstr ":Modo desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:177
+msgid "Available channel modes:"
+msgstr "Modos de canal disponíveis:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:197
+msgid "Server %Q version %S supporting user modes '%S' and channel modes '%S'"
+msgstr ""
+"Servidor %Q versão %S suporta os modos de utilizador '%S' e modos de canal '%"
+"S'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:244
+msgid "This server supports the WATCH notify list method, it will be used"
+msgstr "Este servidor suporta o método WATCH da lista de notificação, será usado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:262
+msgid "The current network is %Q"
+msgstr "A rede actual é %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:303
+msgid "This server supports the CODEPAGE command, it will be used"
+msgstr "Este servidor suporta o comando CODEPAGE, será usado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:319
+#, c-format
+msgid "This server supports: %s"
+msgstr "Este servidor suporta: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:375
+msgid "End of NAMES for \r!c\r%Q\r"
+msgstr "Fim de NAMES para \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:472
+msgid "Names for \r!c\r%Q\r: %Q"
+msgstr "Nomes para \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:487
+msgid "(unknown)"
+msgstr "(Desconhecido)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:491
+msgid "Channel topic is: %Q"
+msgstr "O tópico do canal é: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:498
+msgid "Topic for \r!c\r%Q\r is: %Q"
+msgstr "Tópico para \r!c\r%Q\r é: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:516
+msgid "No channel topic is set"
+msgstr "Nenhum tópico de canal posto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:521
+msgid "No topic is set for channel \r!c\r%Q\r"
+msgstr "Nenhum tópico posto para o canal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:560
+msgid "Topic was set by %Q on %Q"
+msgstr "Tópico foi posto por %Q em %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:561
+msgid "Topic was set by %Q"
+msgstr "Tópico posto por %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:569
+msgid "Topic for \r!c\r%Q\r was set by %Q on %Q"
+msgstr "O tópico para \r!c\r%Q\r foi posto por %Q em %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:572
+msgid "Topic for \r!c\r%Q\r was set by %Q"
+msgstr "O tópico para \r!c\r%Q\r foi posto por %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:592
+msgid "Channel mode for \r!c\r%Q\r is %s"
+msgstr "Modo de canal para \r!c\r%Q\r é %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:595
+msgid "User mode for \r!n\r%Q\r is %s"
+msgstr "Modo de utilizador para \r!c\r%Q\r é %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:631
+msgid "End of channel %Q for \r!c\r%Q\r"
+msgstr "Fim do canal %Q para \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:635
+msgid "ban list"
+msgstr "lista de banimentos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:636
+msgid "invite list"
+msgstr "Lista de convites"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:637
+msgid "ban exception list"
+msgstr "lista de excepções de banimentos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:658
+msgid "%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"
+msgstr "%Q para \r!c\r%Q\r: \r!m-%c\r%Q\r (posto por %Q em %Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:665
+msgid "Ban listing"
+msgstr "Listagem de banimentos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:668
+msgid "Invite listing"
+msgstr "Listagem de convites"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:671
+msgid "Ban exception listing"
+msgstr "Listagem de excepções de banimentos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:740
+msgid ""
+"WHO entry for %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cChannel%c: \r!c\r%Q\r, %"
+"cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAway%c: %Q, %cReal name"
+"%c: %Q"
+msgstr ""
+"Entrada WHO para %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cCanal%c: \r!c\r%Q\r, %"
+"cServidor%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAusente%c: %Q, %"
+"cNome Real %c: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:797
+msgid "End of WHO list for %Q"
+msgstr "Fim da lista WHO para %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:856
+msgid ""
+"Something really weird is happening: the server is refusing all the login "
+"nicknames..."
+msgstr ""
+"Alguma coisa muito estranha está a acontecer: o servidor está a recusar a "
+"autenticação de todos os apelidos..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:861
+msgid ""
+"The server is refusing all the login nicknames: giving up, you must send the "
+"nickname manually"
+msgstr ""
+"O servidor está a recusar a autenticação de todos os apelidos: a desistir, "
+"tem que enviar o apelido manualmente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:871
+msgid "No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."
+msgstr "Não é possível entrar como '\r!n\r%Q\r' (%d: %Q), tentar '%Q'..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:945
+msgid "Command syntax %Q: %Q"
+msgstr "Sintaxe de comando %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:973
+msgid "Tip: %Q"
+msgstr "Dica: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:976
+msgid "Tip for %Q: %Q"
+msgstr "Dica para %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:993
+msgid "End of help about %Q"
+msgstr "Fim da ajuda acerca de %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1037
+msgid "%c\r!n\r%Q\r%c is away: %Q"
+msgstr "%c\r!n\r%Q\r%c ausente: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1090
+msgid "%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "%c\r!n\r%Q\r%c é %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1095
+msgid "%c\r!n\r%Q\r%c's real name: %Q"
+msgstr "%c\r!n\r%Q\r%c nome real: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1115
+msgid "%c\r!n\r%Q\r%c was %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "%c\r!n\r%Q\r%c era %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1119
+msgid "%c\r!n\r%Q\r%c's real name was: %Q"
+msgstr "%c\r!n\r%Q\r%c nome real era: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1183
+msgid "%c\r!n\r%Q\r%c's channels: %Q"
+msgstr "%c\r!n\r%Q\r%c canais: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1220
+msgid "Received a broken RPL_WHOISIDLE, can't evaluate the idle time"
+msgstr "Resposta RPL_WHOISIDLE falhada, não é possível calcular o tempo inactivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1230
+msgid "%c\r!n\r%Q\r%c's idle time: %ud %uh %um %us"
+msgstr "%c\r!n\r%Q\r%c tempo inactivo: %ud %uh %um %us"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1240
+msgid "%c\r!n\r%Q\r%c's signon time: %Q"
+msgstr "%c\r!n\r%Q\r%c data de entrada: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1274
+msgid "%c\r!n\r%Q\r%c's server: \r!s\r%Q\r - %Q"
+msgstr "%c\r!n\r%Q\r%c servidor: \r!s\r%Q\r - %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1293
+msgid "%c\r!n\r%Q\r%c is authenticated as %Q"
+msgstr "%c\r!n\r%Q\r%c está autenticado como %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1325
+msgid "%c\r!n\r%Q\r%c's info: %Q"
+msgstr "%c\r!n\r%Q\r%c informação: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1372
+msgid "%c\r!n\r%Q\r%c WHOIS info from \r!s\r%Q\r"
+msgstr "%c\r!n\r%Q\r%c informação WHOIS de \r!s\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1389
+msgid "%c\r!n\r%Q\r%c WHOWAS info from \r!s\r%Q\r"
+msgstr "%c\r!n\r%Q\r%c info WHOWAS desde \r!s\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1457
+msgid "Can't evaluate creation time"
+msgstr "Não pode avaliar o tempo de criação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1465
+msgid "Channel was created at %Q"
+msgstr "Canal criado em %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1470
+msgid "Channel \r!c\r%Q\r was created at %Q"
+msgstr "Canal \r!c\r%Q\r foi criado em %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1511
+msgid "USERHOST info: %Q"
+msgstr "Informação USERHOST: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1532
+msgid "Channel list begin: channel, users, topic"
+msgstr "Início da lista de canais: canal , utilizadores , tópico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1559
+msgid "List: %Q"
+msgstr "Lista: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1573
+msgid "End of LIST"
+msgstr "Fim de LIST"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1597
+msgid "Link: %Q"
+msgstr "Ligação: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1612
+msgid "End of LINKS"
+msgstr "Fim de LINKS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1641
+msgid "[Leaving away status after %ud %uh %um %us]: %Q"
+msgstr "[Sair do estado ausente após %ud %uh %um %us]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1645
+msgid "[Leaving away status]: %Q"
+msgstr "[Sair do estado ausente]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1652
+msgid "Restoring pre-away nickname (%Q)"
+msgstr "A restaurar alcunha de pré-ausente (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1672
+msgid "[Entering away status]: %Q"
+msgstr "[Entrar em estado ausente]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1690
+msgid "Setting away nickname (%Q)"
+msgstr "A definir alcunha de ausência (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1762
+#, c-format
+msgid "%c\r!s\r%s\r%c's server info: %s"
+msgstr "Informação do servidor %c\r!s\r%s\r%c: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1773
+#, c-format
+msgid "%c\r!s\r%s\r%c's administrator is %s"
+msgstr "O administrador de %c\r!s\r%s\r%c é %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1784
+#, c-format
+msgid "%c\r!s\r%s\r%c's contact adress is %s"
+msgstr "O endereço de contacto de %c\r!s\r%s\r%c é %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1812
+msgid "\r!n\r%Q\r invited %Q into channel %Q"
+msgstr "\r!n\r%Q\r convidou %Q para o canal %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1834
+#, c-format
+msgid "%c\r!s\r%s\r%c's information:"
+msgstr "Informação de %c\r!s\r%s\r%c:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1844
+#, c-format
+msgid "End of %c\r!s\r%s\r%c's information"
+msgstr "Fim da informação de %c\r!s\r%s\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1855
+msgid "%c\r!s\r%s\r%c's time is %Q"
+msgstr "%c\r!s\r%s\ro tempo de %c é %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1866
+msgid "%Q: no such server"
+msgstr "%Q: utilizador não encontrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1877
+msgid "%Q: no such channel"
+msgstr "%Q: canal não encontrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1891
+msgid "Cannot sent to channel: %Q"
+msgstr "Não é possível enviar para o canal: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1894
+msgid "Cannot sent text to channel %Q: %Q"
+msgstr "Não é possível enviar texto para o canal %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1909
+msgid "Cannot sent to channel"
+msgstr "Não é possível enviar para o canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1912
+msgid "Cannot sent text to channel %Q"
+msgstr "Não é possível enviar texto para o canal %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1928
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1936
+msgid "Your encoding is now %Q"
+msgstr "A sua codificação agora é %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1967
+msgid "%c\r!n\r%Q\r%c's codepage is %Q: %Q"
+msgstr "%c\r!n\r%Q\ro código de página de %c é %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1991
+#, c-format
+msgid "Your user mode is %s"
+msgstr "O seu modo de utilizador é %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:158
+msgid "Failed to set the encoding to %Q: mapping not available."
+msgstr "Falha ao definir a codificação para %Q: mapeação não disponível."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:175
+msgid "Changed text encoding to %Q"
+msgstr "Codificação de texto mudada para %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:503
+msgid "Connection to server lost"
+msgstr "Tempo de conexão esgotado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:512
+msgid "Connection to server established"
+msgstr "Conexão ao servidor estabelecida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:573
+msgid "[LINK WARNING]: Socket message truncated to 512 bytes."
+msgstr "[AVISO DE LIGAÇÃO]: Mensagem do socket truncada para 512 bytes."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:640
+msgid "The server seems to support the WATCH notify list method, will try to use it"
+msgstr "Este servidor suporta o método WATCH da lista de notificação, tentará usá-lo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:688
+msgid "Can't resolve local host address, using user supplied one (%Q)"
+msgstr "Não é possível resolver o endereço local, a usar o utilizador indicado (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:695
+msgid "Can't resolve local host address, using default 127.0.0.1"
+msgstr ""
+"Não é possível resolver o endereço endereço local: a usar predefinido "
+"127.0.0.1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:701
+msgid "Local host address is %Q"
+msgstr "Endereço local é %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:749
+msgid "The server seems to have changed the idea about the local hostname"
+msgstr "O servidor parece ter mudado de ideias acerca do nome do endereço local"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:750
+msgid ""
+"You're probably using a broken bouncer or maybe something weird is happening "
+"on the IRC server"
+msgstr ""
+"Provavelmente está a usar um bouncer danificado ou pode estar a acontecer "
+"qualquer coisa estranha no servidor IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:776
+msgid ""
+"Here goes your \"broken bouncer hack\": The server has changed the hostname "
+"but I'll ignore the IP address change"
+msgstr ""
+"Aqui vai o seu\"bouncer hack danificado\": o servidor mudou o nome do "
+"endereço mas irei ignorar a mudança do endereço IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:791
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:801
+msgid "The local IP address as seen by the IRC server is %Q"
+msgstr "O endereço local IP visto pelo servidor IRC é %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:815
+msgid "Can't start the DNS slave thread"
+msgstr "Não é possível iniciar a linha/thread DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:816
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:846
+msgid "Unable to resolve the local hostname as seen by the IRC server: %Q"
+msgstr ""
+"Não é possível resolver o nome do endereço local como visto pelo servidor "
+"IRC: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:822
+msgid "Looking up the local hostname as seen by the IRC server (%Q)"
+msgstr "A localizar o nome do endereço local como visto pelo servidor IRC (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:843
+msgid ""
+"Unable to resolve the local hostname as seen by the IRC server: %Q, using "
+"previously resolved %Q"
+msgstr ""
+"Não é possível resolver o nome de endereço local como visto pelo servidor "
+"IRC: %Q, a usar endereço previamente resolvido %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:850
+msgid "Local hostname as seen by the IRC server resolved to %Q"
+msgstr "Nome de endereço local como visto pelo servidor IRC resolvido para %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:868
+msgid "Using server specific username (%Q)"
+msgstr "A usar nome de utilizador especifico do servidor (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:873
+msgid "Using network specific username (%Q)"
+msgstr "A usar nome de utilizador especifico da rede (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:892
+msgid "Using reconnect specific nickname (%Q)"
+msgstr "A usar alcunha específica de conexão (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:898
+msgid "Using server specific nickname (%Q)"
+msgstr "A usar alcunha específica do servidor (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:905
+msgid "Using network specific nickname (%Q)"
+msgstr "A usar alcunha específica da rede (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:922
+msgid "Using server specific real name (%Q)"
+msgstr "A usar nome real específico do servidor (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:929
+msgid "Using network specific real name (%Q)"
+msgstr "A usar nome real específico na rede (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:946
+msgid "Logging in as %Q!%Q :%Q"
+msgstr "A entrar como %Q!%Q :%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:962
+#, c-format
+msgid "Sending %s as password"
+msgstr "A enviar %s como senha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1033
+msgid "Executing scheduled network specific \"on connect\" commands"
+msgstr "A executar os comandos \"ao conectar\" indicados na rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1042
+msgid "Executing scheduled server specific \"on connect\" commands"
+msgstr "A executar os comandos \"ao conectar\" indicados no servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1051
+msgid "Executing scheduled identity specific \"on connect\" commands"
+msgstr "A executar os comandos de identificação \"ao conectar\" agendados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1101
+#, c-format
+msgid "The server refused the suggested nickname (%s) and named you %s instead"
+msgstr "O servidor recusou a alcunha indicada (%s) e mudou para %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1113
+msgid "Login operations complete, happy ircing!"
+msgstr "Operações de autenticação terminadas: boas conversas!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1123
+msgid "Executing scheduled network specific \"on login\" commands"
+msgstr "A executar os comandos \"ao autenticar\" indicados na rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1132
+msgid "Executing scheduled server specific \"on login\" commands"
+msgstr "A executar os comandos \"ao autenticar\" indicados no servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1141
+msgid "Executing scheduled identity specific \"on login\" commands"
+msgstr "A executar os comandos \"ao autenticar\" agendados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1153
+msgid "Setting configured user mode"
+msgstr "A definir o modo de utilizador configurado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1210
+msgid "Auto-joining network specific channels"
+msgstr "Auto entrar nos canais indicados na rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1244
+msgid "Auto-joining server specific channels"
+msgstr "Auto entrar nos canais indicados no servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1341
+msgid "Updating away state for channel %Q"
+msgstr "A actualizar o estado ausente para o canal %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_customtoolbardescriptor.cpp:230
+msgid "Backward compatibility action for toolbar.define"
+msgstr "Retrocesso da acção de compatibilidade para toolbar.define"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:790
+msgid "Installation problems ?"
+msgstr "Problemas de instalação?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:791
+msgid ""
+"<b>Ooops...</b><br><br><b>There are some reasons that make me think that "
+"your KVIrc installation is incomplete.</b><br><br>I might be wrong, but you "
+"seem to miss some of the features that the default KVIrc script provides."
+"This may happen because you have upgraded to an unstable cvs version, "
+"because you have accidentally deleted or damaged your configuration files, "
+"because you have installed an incomplete script or because you have hit a "
+"bug in KVIrc.<br><br>I can repeat the installation of the default script in "
+"order to restore the missing features.<br><b>Do you want the default script "
+"to be restored ?</b><br><br><font size=\"-1\">Hint: If you're a scripter and "
+"have intentionally removed some of the scripting features then you may "
+"safely click on \"No and Don't Ask Me Again\", otherwise it might be a good "
+"idea to click \"Yes\". If you still want to choose \"No\" you can always "
+"restore the default script by choosing the appropriate entry from the "
+"\"Scripting\" menu.</font>"
+msgstr ""
+"<b>Ooops...</b><br><br><b>Por alguma razão faz-me pensar que a instalação "
+"KVirc não está completa.</b><br><br>Posso estar enganado, mas parecem faltar "
+"algumas opções que o script padrão KVirc fornece. Isto pode acontecer se "
+"actualizar para uma versão instável cvs, porque acidentalmente apagou ou "
+"danificou os seus ficheiros de configuração, porque instalou um script "
+"incompleto ou porque encontrou algum erro no KVirc.<br><br>Pode-se repetir a "
+"instalação do script padrão para restaurar as opções em falta. <br><b>Quer "
+"que o script padrão seja restaurado?</b><br><br><font size=\"-1\">Nota: se é "
+"um programador e removeu intencionalmente algumas opções do script pode com "
+"segurança clicar em \"Não perguntar outra vez\", ou pode ser uma boa ideia "
+"clicar em \"Sim\". Se ainda quiser escolher \"Não\" pode sempre restaurar o "
+"script padrão ao escolher a entrada apropriada do menu \"Scripting\".</font>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:805
+msgid "No and Don't Ask Me Again"
+msgstr "Não perguntar outra vez"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:828
+msgid "Restore Default Script - KVIrc"
+msgstr "Restaurar Script Padrão - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:829
+msgid ""
+"You are about to restore the default script.<br>This will erase any script "
+"changes you have made.<br>Do you wish to proceed?"
+msgstr ""
+"Está prestes a restaurar o script padrão.<br>Isto irá apagar qualquer "
+"alteração que tenha feito no script<br>Deseja continuar?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:872
+#, c-format
+msgid "Remote command received (%s ...)"
+msgstr "Comando remoto recebido (%s ...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1033
+msgid "File download failed"
+msgstr "Transferência do ficheiro falhada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1035
+msgid "File download from %1 failed"
+msgstr "Transferência do ficheiro de %1 falhada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1044
+msgid "File download successfully complete"
+msgstr "Ficheiro transferido com sucesso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1046
+msgid "File download from %1 successfully complete"
+msgstr "Ficheiro transferido com sucesso de %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1066
+msgid "Avatar download failed for %Q!%Q@%Q and url %Q: %Q"
+msgstr "Transferência do Avatar falhada para %Q!%Q@%Q e url %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2014
+#, c-format
+msgid "The commandline for media type '%s' seems to be broken"
+msgstr "A linha de comandos para o tipo de média '%s' parece estar danificada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2018
+#, c-format
+msgid "Media type of file %s matched to '%s' but no commandline specified"
+msgstr ""
+"O tipo de média do ficheiro %s correspondeu a '%s' mas sem linha de comandos "
+"indicada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2023
+#, c-format
+msgid "No idea on how to play file %s (no media type match)"
+msgstr ""
+"Nenhuma ideia em como reproduzir o ficheiro %s (nenhum tipo de média "
+"associado)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:39
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:48
+#, c-format
+msgid "[SSL]: %c%s"
+msgstr "[SSL]: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:40
+#, c-format
+msgid "[SSL]: Cipher: %c%s"
+msgstr "[SSL]: Cifra: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:41
+#, c-format
+msgid "[SSL]: Version: %c%s"
+msgstr "[SSL]: Versão: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:42
+#, c-format
+msgid "[SSL]: Bits: %c%d (%d used)"
+msgstr "[SSL]: Bits: %c%d (usado %d)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:49
+#, c-format
+msgid "[SSL]: Version: %c%d"
+msgstr "[SSL]: Versão: %c%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:50
+#, c-format
+msgid "[SSL]: Serial number: %c%d"
+msgstr "[SSL]: Número de série: %c%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:51
+msgid "[SSL]: Subject:"
+msgstr "[SSL]: Assunto:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:59
+#, c-format
+msgid "[SSL]: Common name: %c%s"
+msgstr "[SSL]: Nome comum: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:60
+#, c-format
+msgid "[SSL]: Organization: %c%s"
+msgstr "[SSL]: Organização: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:61
+#, c-format
+msgid "[SSL]: Organizational unit: %c%s"
+msgstr "[SSL]: Unidade organizacional: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:62
+#, c-format
+msgid "[SSL]: Country: %c%s"
+msgstr "[SSL]: País: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:63
+#, c-format
+msgid "[SSL]: State or province: %c%s"
+msgstr "[SSL]: Estado ou província: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:64
+#, c-format
+msgid "[SSL]: Locality: %c%s"
+msgstr "[SSL]: Localidade: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:58
+msgid "[SSL]: Issuer:"
+msgstr "[SSL]: Editor:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:65
+#, c-format
+msgid "[SSL]: Public key: %c%s (%d bits)"
+msgstr "[SSL]: Chave pública: %c%s (%d bits)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:66
+#, c-format
+msgid "[SSL]: Signature type: %c%s"
+msgstr "[SSL]: Tipo de assinatura: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:73
+#, c-format
+msgid "[SSL]: Signature contents: %c%s"
+msgstr "[SSL]: Conteúdo da assinatura: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:82
+msgid "Peer X509 certificate"
+msgstr "Certificado Peer X509"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:85
+msgid "[SSL]: The peer didn't provide a certificate"
+msgstr "[SSL]: O ponto (peer) não forneceu um certificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1219
+msgid "Current transmission cipher"
+msgstr "Cifra de transmissão actual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:92
+msgid "[SSL]: Can't find out the current cipher info"
+msgstr "[SSL]: Não é possível encontrar a informação da cifra actual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:113
+#, c-format
+msgid "[%s]: [SSL]: Using certificate file %s"
+msgstr "[%s]: [SSL]: A usar ficheiro de certificado %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:116
+#, c-format
+msgid "[%s]: [SSL ERROR]: File I/O error while trying to use the certificate file %s"
+msgstr ""
+"[%s]: [ERRO SSL]: Erro I/O do ficheiro I/O ao tentar usar o ficheiro de "
+"certificado %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:146
+#, c-format
+msgid "[%s]: [SSL ERROR]: %s"
+msgstr "[%s]: [ERRO SSL]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:136
+#, c-format
+msgid "[%s]: [SSL]: Using private key file %s"
+msgstr "[%s]: [SSL]: A usar o ficheiro da chave privada %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:139
+#, c-format
+msgid "[%s]: [SSL ERROR]: File I/O error while trying to use the private key file %s"
+msgstr ""
+"[%s]: [ERRO SSL]: Erro I/O do ficheiro enquanto se tentava usar o ficheiro "
+"da chave privada %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:375
+msgid "Reconnect attempt aborted"
+msgstr "Tentativa de reconexão abortada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:443
+msgid ""
+"This is the first connection in this IRC context: using the global server "
+"setting"
+msgstr ""
+"Esta é a primeira conexão neste contexto IRC: a usar definições globais do "
+"servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:483
+msgid "No servers available. Check the options dialog or use the /SERVER command"
+msgstr ""
+"Nenhum servidor disponível. Verifique o diálogo de opções ou use o comando /"
+"SERVER"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:491
+msgid ""
+"Ooops.. you've hit a bug in the servers database... I have found a server "
+"but not a network..."
+msgstr ""
+"Ooops... encontrou um error na base de dados dos servidores...Encontrou um "
+"servidor mas não uma rede..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:504
+msgid "No proxy hosts available, resuming direct connection"
+msgstr "Nenhum endereço proxy disponível, a resumir conexão directa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:582
+#, c-format
+msgid "Connection attempt failed [%s]"
+msgstr "Tentativa de conexão falhada [ %s ]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:600
+#, c-format
+msgid "Will attempt to reconnect in %d seconds"
+msgstr "Irá tentar reconectar em %d segundos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:604
+#, c-format
+msgid "%d"
+msgstr "%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:606
+#, c-format
+msgid "%d of %d"
+msgstr "%d de %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:633
+#, c-format
+msgid "Maximum number of reconnect attempts reached (%d): giving up"
+msgstr "O número máximo de tentativas para reconectar chegou a (%d): a desistir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:647
+msgid ""
+"The connection attempt failed while using a cached IP address for the "
+"current server"
+msgstr ""
+"A tentativa de conexão falhou enquanto usava o endereço IP para o servidor "
+"actual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:648
+msgid "The problem *might* be caused by an updated DNS entry"
+msgstr "O problema *pode* ter sido causado por uma entrada DNS actualizada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:649
+msgid "Try reconnecting with caching disabled"
+msgstr "Tentar reconectar com a cache desactivada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:673
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:382
+msgid "%Q established [%s (%s:%u)]"
+msgstr "%Q estabelecida [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Secure connection"
+msgstr "Conexão segura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Connection"
+msgstr "Conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:779
+#, c-format
+msgid "Connection terminated [%s (%s:%u)]"
+msgstr "Conexão terminada [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:791
+msgid "The connection terminated unexpectedly. Trying to reconnect..."
+msgstr "A conexão terminou inesperadamente. A tentar reconectar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:874
+msgid "Sent QUIT, waiting for the server to close the connection..."
+msgstr "QUIT enviado, a esperar pelo servidor para fechar a conexão..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:685
+msgid "Normal text"
+msgstr "Texto Normal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:686
+msgid "Selection"
+msgstr "Selecção"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:687
+msgid "Highlighted text"
+msgstr "Texto destacado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:688
+msgid "URL foreground"
+msgstr "Primeiro plano do URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:689
+msgid "Link overlay foreground"
+msgstr "Primeiro plano da ligação overlay"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:690
+msgid "Parser error"
+msgstr "Erro do analisador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:691
+msgid "Parser warning"
+msgstr "Aviso do analisador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:692
+msgid "Host lookup result"
+msgstr "Resultado da procura do endereço"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:693
+msgid "Socket message"
+msgstr "Mensagem do socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:694
+msgid "Socket warning"
+msgstr "Aviso do socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:695
+msgid "Socket error"
+msgstr "Erro do socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:696
+msgid "System error"
+msgstr "Erro do sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:697
+msgid "Raw data to server"
+msgstr "Dados brutos para o servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:698
+msgid "Connection status"
+msgstr "Estado da conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:699
+msgid "System warning"
+msgstr "Aviso do sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:700
+msgid "System message"
+msgstr "Mensagem do sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:701
+msgid "Unhandled server reply"
+msgstr "Resposta do servidor não gerida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:702
+msgid "Server information"
+msgstr "Informações do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:703
+msgid "Server Message of the Day"
+msgstr "Mensagem de Servidor do Dia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:704
+msgid "Server ping"
+msgstr "Ping do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:705
+msgid "Join message"
+msgstr "Mensagem de entrada de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:706
+msgid "Part message"
+msgstr "Mensagem de saída de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:707
+msgid "Unrecognized/broken message"
+msgstr "Mensagem desconhecida/danificada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:708
+msgid "Topic message"
+msgstr "Mensagem de Tópico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:709
+msgid "Own private message"
+msgstr "Mensagem própria privada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:710
+msgid "Channel private message"
+msgstr "Mensagem privada do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:711
+msgid "Query private message"
+msgstr "Pesquisar mensagem privada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:712
+msgid "CTCP reply"
+msgstr "Resposta CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:713
+msgid "CTCP request replied"
+msgstr "Pedido CTCP respondido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:714
+msgid "CTCP request ignored"
+msgstr "Pedido CTCP ignorado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:715
+msgid "CTCP request flood warning"
+msgstr "Aviso de flood com pedidos CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:716
+msgid "CTCP request unknown"
+msgstr "Pedido CTCP desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:717
+msgid "User action"
+msgstr "Acção do utilizador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:718
+msgid "Avatar change"
+msgstr "Mudança de imagem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:719
+msgid "Quit message"
+msgstr "Mensagem de Saída (Quit)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:720
+msgid "Split message"
+msgstr "Mensagem de separação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:721
+msgid "Quit on netsplit message"
+msgstr "Sair em mensagem de separação de rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:722
+msgid "Nick changes"
+msgstr "Mudanças de alcunha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:723
+msgid "+o mode change"
+msgstr "mudança de modo +o"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:724
+msgid "-o mode change"
+msgstr "mudança de modo -o"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:725
+msgid "+v mode change"
+msgstr "mudança de modo +v"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:726
+msgid "-v mode change"
+msgstr "mudança de modo -v"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:727
+msgid "Multiple user mode change"
+msgstr "Mudança múltipla no modo de utilizador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:728
+msgid "Channel key change"
+msgstr "Mudar chave do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:729
+msgid "Channel limit change"
+msgstr "Mudar limite do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:730
+msgid "+b mode change"
+msgstr "mudança de modo +b"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:731
+msgid "-b mode change"
+msgstr "mudança de modo -b"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:732
+msgid "+e mode change"
+msgstr "mudança de modo +e"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:733
+msgid "-e mode change"
+msgstr "mudança de modo -e"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:734
+msgid "+I mode change"
+msgstr "mudar para modo +i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:735
+msgid "-I mode change"
+msgstr "mudar para modo -i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:736
+msgid "Multiple channel mode change"
+msgstr "Mudança múltipla no modo dos canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:737
+msgid "Who reply"
+msgstr "Resposta who"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:738
+msgid "DCC request"
+msgstr "Pedido DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:739
+msgid "DCC message"
+msgstr "Mensagem DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:740
+msgid "DCC error"
+msgstr "Erro DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:741
+msgid "Nickname problem"
+msgstr "Problema de alcunha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:742
+msgid "Whois user reply"
+msgstr "Resposta whois do utilizador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:743
+msgid "Whois channels reply"
+msgstr "Resposta whois de canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:744
+msgid "Whois idle reply"
+msgstr "Resposta whois de actividade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:745
+msgid "Whois server reply"
+msgstr "Resposta whois do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:746
+msgid "Whois other reply"
+msgstr "Outras respostas whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:747
+msgid "Channel creation time reply"
+msgstr "Resposta de tempo na criação de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:748
+msgid "Notify list joins"
+msgstr "Entradas na lista de notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:749
+msgid "Notify list leaves"
+msgstr "Saídas da lista de notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:750
+msgid "Own encrypted private message"
+msgstr "Mensagem própria privada encriptada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:751
+msgid "Channel encrypted private message"
+msgstr "Mensagem privada encriptada do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:752
+msgid "Query encrypted private message"
+msgstr "Mensagem privada encriptada do query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:753
+msgid "DCC chat message"
+msgstr "Mensagem DCC chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:754
+msgid "Encrypted DCC chat message"
+msgstr "Mensagem DCC chat encriptada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:755
+msgid "Login operations completed"
+msgstr "Operações de autenticação terminadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:756
+msgid "Kick action"
+msgstr "Acção de expulsão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:757
+msgid "Links reply"
+msgstr "Resposta das ligações"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:758
+msgid "Spam report"
+msgstr "Relatório spam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:759
+msgid "ICQ message"
+msgstr "Mensagem ICQ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:760
+msgid "ICQ user-message"
+msgstr "Mensagem de utilizador ICQ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:761
+msgid "Outgoing ICQ user-message"
+msgstr "Mensagem de saída de utilizador ICQ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:762
+msgid "Channel notice"
+msgstr "Notícia do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:763
+msgid "Encrypted channel notice"
+msgstr "Noticia do canal encriptada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:764
+msgid "Query notice"
+msgstr "Noticia privada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:765
+msgid "Encrypted query notice"
+msgstr "Noticia de privado encriptada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:766
+msgid "Server notice"
+msgstr "Noticia do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:767
+msgid "Halfop mode change"
+msgstr "Mudança de modo semioperador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:768
+msgid "Unknown CTCP reply"
+msgstr "Resposta CTCP desconhecida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:769
+msgid "NickServ message"
+msgstr "Mensagem Nickserv"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:770
+msgid "ChanServ message"
+msgstr "Mensagem Chanserv"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:771
+msgid "Away message"
+msgstr "Mensagem de Ausência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:772
+msgid "Ident message"
+msgstr "Mensagem Ident"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:773
+msgid "Channel list message"
+msgstr "Mensagem lista do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:774
+msgid "Half-deop mode change"
+msgstr "Mudança de modo remover semioperador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:775
+msgid "Invite message"
+msgstr "Mensagem de convite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:776
+msgid "Multimedia message"
+msgstr "Mensagem multimédia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:777
+msgid "Query trace message"
+msgstr "Rastrear mensagem privada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:778
+msgid "Wallops message"
+msgstr "Mensagem wallops"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:779
+msgid "Join error message"
+msgstr "Mensagem de erro de entrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:780
+msgid "Broadcast private message"
+msgstr "Mensagem privada da rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:781
+msgid "Broadcast notice"
+msgstr "Noticia da rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:782
+msgid "Am kicked"
+msgstr "Fui expulso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:783
+msgid "Am op'd"
+msgstr "Sou operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:784
+msgid "Am voiced"
+msgstr "Tenho voz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:785
+msgid "Am deop'd"
+msgstr "Deixei de ser operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:786
+msgid "Am devoiced"
+msgstr "Estou sem voz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:787
+msgid "Am halfop'd"
+msgstr "Estou semioperador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:788
+msgid "Am de-halfop'd"
+msgstr "Tiraram-me de semioperador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:789
+msgid "Ban matching my mask"
+msgstr "Banimento correspondente à minha máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:790
+msgid "Unban matching my mask"
+msgstr "Remoção de banimento correspondente à minha máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:791
+msgid "Ban exception matching my mask"
+msgstr "Excepção de banimento correspondente à minha máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:792
+msgid "Ban unexception matching my mask"
+msgstr "Sem excepção de banimento correspondente à minha máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:793
+msgid "Invite exception matching my mask"
+msgstr "Excepção de convite correspondente à minha máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:794
+msgid "Invite unexception matching my mask"
+msgstr "Não excepção de convite correspondente à minha máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:795
+msgid "Ignored user message"
+msgstr "Mensagem de utilizador ignorada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:796
+msgid "Server statistics"
+msgstr "Estatísticas do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:797
+msgid "SSL message"
+msgstr "Mensagem SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:108
+msgid "Search"
+msgstr "Procurar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:799
+msgid "Generic success"
+msgstr "Sucesso genérico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:800
+msgid "Generic status"
+msgstr "Estado genérico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:801
+msgid "Generic verbose message"
+msgstr "Mensagem detalhada genérica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:802
+msgid "Generic warning"
+msgstr "Aviso genérico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:803
+msgid "Generic error"
+msgstr "Erro genérico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:804
+msgid "Generic critical error"
+msgstr "Erro critico genérico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:805
+msgid "Chan admin status set"
+msgstr "Estado de administração de canal definido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:806
+msgid "Chan admin status unset"
+msgstr "Estado de administração de canal não definido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:807
+msgid "Own chan admin status set"
+msgstr "Estado de administração definido do próprio canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:808
+msgid "Own chan admin status unset"
+msgstr "Estado de administração não definido do próprio canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:809
+msgid "Userop mode change"
+msgstr "Mudança de modo para operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:810
+msgid "User-deop mode change"
+msgstr "Mudança de modo remoção de operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:811
+msgid "Am userop'd"
+msgstr "Sou operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:812
+msgid "Am de-userop'd"
+msgstr "tiraram-me de operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:813
+msgid "Verbose/Debug"
+msgstr "Verboso/Depurar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:814
+msgid "Chan owner status set"
+msgstr "Estado definido do dono do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:815
+msgid "Chan owner status unset"
+msgstr "Estado não definido do dono do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:816
+msgid "Own chan owner status set"
+msgstr "Estado definido do dono do próprio canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:817
+msgid "Own chan owner status unset"
+msgstr "Estado não definido do dono do próprio canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:818
+msgid "Server error"
+msgstr "Erro do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:22
+msgid "Help"
+msgstr "Ajuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:820
+msgid "Text Encoding Server message"
+msgstr "Mensagem de Texto Codificada do Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:826
+msgid "BitTorrent message"
+msgstr "Mensagem BitTorrent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:970
+msgid "Missing absolute directory for the theme information"
+msgstr "Falta o directório absoluto para as informações do tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:978
+msgid "Failed to create the theme directory"
+msgstr "Falha ao criar o directório do tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1061
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1096
+msgid "Failed to save one of the theme images"
+msgstr "Falha ao gravar uma das imagens do tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1074
+msgid "Failed to create the theme subdirectory"
+msgstr "Falha ao criar o sub-directório do tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1213
+msgid "Boolean options (1/0)"
+msgstr "Opções booleanas (1/0)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1214
+msgid "Rectangle options (x,y,width,height)"
+msgstr "Opções de rectangulos (x,y,comprimento,altura)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1215
+msgid "String options (string value)"
+msgstr "Opções de string (valor da string)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1216
+msgid "Color options (#RRGGBB)"
+msgstr "Opções de cor (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1217
+msgid "Mirccolor options (#RRGGBB)"
+msgstr "Opções de cor Mirc (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1218
+msgid "Irc context color options (#RRGGBB)"
+msgstr "Opções de cor do contexto do irc (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1219
+msgid "Pixmap options (image path)"
+msgstr "Opções de imagens (localização da imagem)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1220
+msgid "Unsigned integer options (unsigned integer constant)"
+msgstr "Opções de inteiros sem sinal (constante inteira sem sinal)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1221
+msgid "Font options (family,pointsize,style,charset,weight,flags (biusf))"
+msgstr "Opções de letra (familia,tamanho,estiolo,carater,peso,bandeiras (biusf))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1222
+msgid "Message color options (image_id,foreground,background,logFlag (0/1))"
+msgstr "Opções de cor das mensagens (image_id,foreground,background,logFlag (0/1))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1223
+msgid "String list options (comma separated list of strings)"
+msgstr "Opções da lista de string (lista de strings separadas por vírgulas)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC"
+msgstr "IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC Context related actions"
+msgstr "Acções relacionadas ao Contexto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic"
+msgstr "Genérico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic actions"
+msgstr "Acções genéricas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Settings"
+msgstr "Configurações"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Actions related to settings"
+msgstr "Acções relacionadas às configurações"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:30
+msgid "Scripting"
+msgstr "Scripting"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+msgid "Scripting related actions"
+msgstr "Acções relacionadas de scripting"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "GUI"
+msgstr "GUI"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "Actions related to the Graphic User Interface"
+msgstr "Acções relacionadas ao Interface Gráfico do Utilizador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:77
+msgid "Channel"
+msgstr "Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+msgid "IRC Channel related actions"
+msgstr "Acções relacionadas ao Canal IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Tools"
+msgstr "Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Actions that will appear in the \"Tools\" menu"
+msgstr "Acções que irão aparecer no menu \"Ferramentas\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:157
+msgid "Sending out PING based lag probe"
+msgstr "A enviar PING baseado na verificação do lag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:167
+msgid "Sending out CTCP based lag probe"
+msgstr "A enviar CTCP baseado na verificação do lag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:188
+#, c-format
+msgid "Registered lag check with reliability %u (%s)"
+msgstr "Verificação de lag registada com confiabilidade %u (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:220
+#, c-format
+msgid "Lag check completed (%s)"
+msgstr "Verificação de lag terminada (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:259
+#, c-format
+msgid "Lag check aborted (%s)"
+msgstr "Verificação de lag abortada (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:143
+msgid "Hostname resolution aborted"
+msgstr "Resolução do nome do endereço abortada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:156
+msgid "Attempting %Q to %Q (%Q) on port %u"
+msgstr "A tentar %Q para %Q (%Q) na porta %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "secure connection"
+msgstr "conexão segura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "connection"
+msgstr "conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:165
+#, c-format
+msgid "Attempting to 'bounce' on proxy %s on port %u (protocol %s)"
+msgstr "A tentar 'bounce' no proxy %s na porta %u (protocolo %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:194
+#, c-format
+msgid "Using cached proxy IP address (%s)"
+msgstr "A usar o endereço IP proxy em cache (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:237
+msgid "Unable to look up the IRC proxy hostname: Can't start the DNS slave"
+msgstr ""
+"Não é possível encontrar o endereço proxy IRC: Não é possível iniciar o "
+"slave DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:265
+msgid "Resuming direct server connection"
+msgstr "A resumir conexão directa do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:248
+#, c-format
+msgid "Looking up the proxy hostname (%s)..."
+msgstr "A localizar o endereço proxy (%s)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:261
+msgid "Can't find the proxy IP address: %Q"
+msgstr "Não é possível localizar o endereço IP proxy: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:271
+msgid "Proxy hostname resolved to %Q"
+msgstr "Endereço proxy resolvido para %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:284
+msgid "Proxy %Q has a nickname: %Q"
+msgstr "O proxy %Q tem uma alcunha: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:322
+#, c-format
+msgid "Using cached server IP address (%s)"
+msgstr "A usar o endereço IP em cache do servidor (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:354
+msgid "Unable to look up the server hostname: Can't start the DNS slave"
+msgstr ""
+"Não é possível encontrar o nome do endereço do servidor: não consegue "
+"iniciar o slave DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:359
+#, c-format
+msgid "Looking up the server hostname (%s)..."
+msgstr "A localizar o servidor (%s)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:373
+msgid "Can't find the server IP address: %Q"
+msgstr "Não é possível localizar o endereço IP do servidor: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:380
+msgid "If this server is an IPv6 one, try /server -i %Q"
+msgstr "Se este servidor for um IPv6, tente /server -i %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:390
+msgid "Server hostname resolved to %Q"
+msgstr "Nome de endereço do servidor resolvido para %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:400
+msgid "Real hostname for %Q is %Q"
+msgstr "O endereço real para %Q é %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:414
+msgid "Server %Q has a nickname: %Q"
+msgstr "O servidor %Q tem uma alcunha: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:468
+msgid "The specified bind address (%Q) is not valid"
+msgstr "O endereço indicado da ligação (%Q) não é valido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:473
+msgid ""
+"The specified bind address (%Q) is not valid (the interface it refers to "
+"might be down)"
+msgstr ""
+"O endereço bind indicado (%Q) não é valido (o interface refere que pode "
+"estar em baixo)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:493
+#, c-format
+msgid "The system-wide IPv6 bind address (%s) is not valid"
+msgstr "O endereço 'bind' IPv6 do sistema (%s) não é válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:500
+#, c-format
+msgid ""
+"The system-wide IPv6 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+"O endereço 'bind' IPv6 geral do sistema (%s) não é válido (o interface "
+"refere que pode estar em baixo)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:522
+#, c-format
+msgid "The system-wide IPv4 bind address (%s) is not valid"
+msgstr "O endereço 'bind' IPv4 geral do sistema (%s) não é válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:529
+#, c-format
+msgid ""
+"The system-wide IPv4 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+"O endereço 'bind' IPv4 do sistema (%s) não é válido (o interface refere que "
+"pode estar em baixo)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:230
+msgid "Channel operators"
+msgstr "Operadores do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:231
+msgid "Voiced users"
+msgstr "Utilizadores com voz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:232
+msgid "Half-operators"
+msgstr "Semi operadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:233
+msgid "Ban masks"
+msgstr "Máscaras de banimentos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:234
+msgid "Color free (no ANSI colors)"
+msgstr "Livre de cores (sem cores ANSI)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:235
+msgid "Ban exception masks"
+msgstr "Máscaras de excepções de banimentos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:236
+msgid "Invite exception masks or forbid /INVITE"
+msgstr "Excepção de máscaras de convite ou proibir /INVITE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:237
+msgid "Secret"
+msgstr "Secreto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:238
+msgid "Private"
+msgstr "Privado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:239
+msgid "Topic change restricted"
+msgstr "Mudança de tópico restringida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:240
+msgid "Invite only"
+msgstr "Apenas por convite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:241
+msgid "No external messages"
+msgstr "Nenhuma mensagen externa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:242
+msgid "Anonymous or protected user"
+msgstr "Anónimo ou utilizador protegido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:243
+msgid "Quiet or channel owner"
+msgstr "Quieto ou dono do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:244
+msgid "Limited number of users"
+msgstr "Número limitado de utilizadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:245
+msgid "Key"
+msgstr "Chave"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:246
+msgid "Moderated"
+msgstr "Moderado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:247
+msgid "Registered"
+msgstr "Registado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:248
+msgid "Censor swear words"
+msgstr "Censorar palavras ordinárias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:249
+msgid "Impossible to speak and change nick if not authenticated with NickServ"
+msgstr "Não é possível falar e mudar a alcunha se não estiver autenticado no Nickserv"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:250
+msgid "Impossible to change nick if not authenticated with NickServ"
+msgstr "Não é possível mudar a alcunha se não estiver autenticado no Nickserv"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:251
+msgid "Only registered nicks can join"
+msgstr "Apenas utilizadores registados podem entrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:252
+msgid "No kicks able (unless U-Line)"
+msgstr "Sem permissão de expulsão (a não ser U-Line)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:253
+msgid "IRC-Op only channel"
+msgstr "Canal apenas para IRC-Op"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:254
+msgid "Server/Network/Tech Admin only channel"
+msgstr "Canal apenas para Servidor/Rede/Administração Tecnica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:255
+msgid "Forbid /KNOCK"
+msgstr "Proibir /KNOCK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:256
+msgid "Strip colors"
+msgstr "Tirar cores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:257
+msgid "Redirect on channel full"
+msgstr "Redireccionar quando o canal encher"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:258
+msgid "Forbid channel CTCPs"
+msgstr "Poibir CTCP no Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:259
+msgid "User-operators OR Auditorium: /NAMES and /WHO show only ops"
+msgstr "Utilizadores-operadores OU Auditorium: /NAMES e /WHO mostram apenas ops"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:260
+msgid "Only 7-bit letters in nicknames allowed"
+msgstr "Apenas letras de 7-bit são permitidas nos apelidos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:261
+msgid "Impossible to use both 7-bit and 8-bit letters in nicknames"
+msgstr "Não é possível usar ambas as letras de 7-bit e 8-bit nos apelidos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:270
+msgid "o: IRC operator (OPER)"
+msgstr "o: Operador IRC (OPER)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:271
+msgid "O: Local IRC operator (LOCOP)"
+msgstr "O: Operador IRC Local (LOCOP)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:272
+msgid "i: Invisible"
+msgstr "i: Invisível"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:273
+msgid "w: Recipient for WALLOPS messages"
+msgstr "w: Recipiente para mensagens WALLOPS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:274
+msgid ""
+"r: User with restricted connection (or recipient for messages about rejected "
+"bots)"
+msgstr ""
+"r: Utilizador com conexão restrita (ou recipiente para mensagens acerca de "
+"bots rejeitados)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:275
+msgid "s: Recipient for server notices"
+msgstr "s: Recipiente para noticias do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:276
+msgid "z: Recipient for oper wallop messages"
+msgstr "z: Recipiente para mensagens wallop do operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:277
+msgid "c: Recipient for cconn messages"
+msgstr "c: Recipiente para mensagens cconn"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:278
+msgid "k: Recipient for server kill messages"
+msgstr "k: Recipiente para mensagens kill do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:279
+msgid "f: Recipient for full server notices"
+msgstr "f: Recipiente para noticias cheias de servidores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:280
+msgid "y: Spy :)"
+msgstr "y: Espia :)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:281
+msgid "d: Obscure 'DEBUG' flag"
+msgstr "d: flag 'DEPURAR' obscura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:282
+msgid "n: Recipient for nick changes"
+msgstr "n: Recipiente para mudanças de apelidos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:100
+msgid "Ops... for some reason the link filter object has been destroyed"
+msgstr "Ops...por alguma razão o objecto do filtro da ligação foi destruído"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:138
+msgid "Using filtered IRC protocol: Link filter is \"%Q\""
+msgstr "A usar protocolo IRC filtrado: o filtro da ligação é \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:143
+msgid "Failed to set up the link filter \"%Q\", will try with plain IRC"
+msgstr "Falha ao definir o filtro da ligação \"%Q\", irá tentar com IRC simples"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:202
+msgid "Failed to start the connection: %Q"
+msgstr "Falha ao iniciar a conexão: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:368
+msgid "Contacting %Q %s (%s) on port %u"
+msgstr "A contactar %Q %s (%s) na porta %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "proxy host"
+msgstr "endereço do proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "IRC server"
+msgstr "Servidor IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:375
+#, c-format
+msgid "Low-level transport connection established [%s (%s:%u)]"
+msgstr "Conexão de transporte nível-baixo estabelecida [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:379
+msgid "Starting Secure Socket Layer handshake"
+msgstr "Iniciar Negociação Segura do Socket Layer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Secure proxy connection"
+msgstr "Conexão proxy segura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Proxy connection"
+msgstr "Conexão proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:387
+msgid "Negotiating relay information"
+msgstr "A negociar informação de retransmissão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:390
+msgid "Sent connection request, waiting for acknowledgement"
+msgstr "Pedido de conexão enviado, a aguardar resposta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:393
+msgid "Sent target host data, waiting for acknowledgement"
+msgstr "Dados da máquina de destino enviados, a aguardar resposta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:396
+msgid "Sent auth method request, waiting for acknowledgement"
+msgstr "Pedido de método autenticação enviado, a aguardar resposta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:399
+msgid "Sent username and password, waiting for acknowledgement"
+msgstr "Nome de utilizador e senha enviados, a aguardar resposta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:402
+msgid "Sent connection request, waiting for \"HTTP 200\" acknowledgement"
+msgstr "Pedido de conexão enviado; a aguardar resposta \"HTTP 200\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:176
+msgid "[SSL]: %Q"
+msgstr "[SSL]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:181
+msgid "[SSL ERROR]: %Q"
+msgstr "[ERRO SSL]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:190
+msgid "[PROXY]: %Q"
+msgstr "[PROXY]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:200
+msgid "[PROXY ERROR]: %Q"
+msgstr "[ERRO PROXY]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:207
+msgid "[SOCKET]: %Q"
+msgstr "[SOCKET]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:212
+msgid "[SOCKET ERROR]: %Q"
+msgstr "[ERRO SOCKET]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:218
+msgid "[SOCKET WARNING]: %Q"
+msgstr "[AVISO SOCKET]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:337
+#, c-format
+msgid "Binding to local address %s"
+msgstr "Associar ao endereço local %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:341
+#, c-format
+msgid ""
+"Binding to local address %s failed: the kernel will choose the correct "
+"interface"
+msgstr ""
+"Associação ao endereço local %s falhada : o kernel irá escolher o interface "
+"correcto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:637
+msgid "Using HTTP protocol."
+msgstr "A usar protocolo HTTP."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:683
+msgid "Using SOCKSV4 protocol."
+msgstr "A usar protocolo SOCKSV4."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:756
+msgid "Using SOCKSv5 protocol."
+msgstr "A usar protocolo SOCKSv5."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:771
+msgid "We can accept auth method 0 (no auth)"
+msgstr "Podemos aceitar o método auth 0 (sem auth)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:779
+msgid "We can accept auth method 0 (no auth) or 2 (user/pass)"
+msgstr "Podemos aceitar o método auth 0 (sem auth) ou 2 (utilizador/senha)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:958
+msgid "Proxy response: auth OK: access granted"
+msgstr "Resposta do proxy: auth OK: acesso garantido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:993
+msgid "Proxy response: Auth method OK: using method 0 (no auth)"
+msgstr "Resposta do proxy: Método auth OK: a usar método 0 (nenhum auth)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1000
+msgid "Proxy response: Auth method OK: using method 2 (user/pass)"
+msgstr "Resposta do proxy: Método auth OK: a usar método 2 (utilizador/senha)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1056
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1113
+msgid "Proxy response: target data OK: request granted"
+msgstr "Resposta do proxy: dados de destino OK: pedido garantido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1153
+msgid "Proxy response: "
+msgstr "Resposta do Proxy: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1164
+msgid "Proxy said something about: \n"
+msgstr "O proxy disse algo acerca: \n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1205
+msgid "Server X509 certificate"
+msgstr "Certificado X509 do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1209
+msgid "The server didn't provide a certificate"
+msgstr "O servidor não forneceu um certificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1223
+msgid "Unable to determine the current cipher"
+msgstr "Não é possível determinar a cifra actual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1768
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1788
+msgid "Partial socket write: packet broken into smaller pieces."
+msgstr "Escrita parcial no socket: pacote dividido em partes mais pequenas."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:60
+msgid "The theme information file does not exist"
+msgstr "O ficheiro de informação do tema não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:71
+msgid ""
+"This KVIrc executable is too old for this theme (minimum theme engine "
+"version required is %Q while this theme engine has version %s)"
+msgstr ""
+"Este executável KVirc é demasiado antigo para este tema (a versão mínima de "
+"motor do tema requerida é %Q enquanto este motor do tema tiver a versão %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:80
+msgid "Theme information file is not valid"
+msgstr "O ficheiro de informação do tema não é válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:248
+msgid "Failed to load the specified screenshot image"
+msgstr "Falha ao carregar a imagem de captura de ecrã seleccionada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:257
+msgid "Invalid option"
+msgstr "Opção inválida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:265
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:293
+msgid "Failed to save the screenshot image"
+msgstr "Falha ao gravar a imagem de captura de ecrã"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:117
+msgid "Configure Servers..."
+msgstr "Configurar Servidores..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:118
+msgid "Allows you to configure the servers and eventually to connect to them"
+msgstr "Permite-lhe configurar os servidores e eventualmente conectar a um deles"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:128
+msgid "Manage Addons..."
+msgstr "Gerir Extras..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:129
+msgid "Allows you to manage the script-based addons"
+msgstr "Permite-lhe gerir os extras baseado no script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:139
+msgid "Configure Registered Users..."
+msgstr "Configurar Utilizadores Registados..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:140
+msgid "Shows a dialog that allows editing the registered user entries"
+msgstr "Mostra uma janela que permite editar as entradas dos utilizadores registados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:150
+msgid "Configure Identity..."
+msgstr "Configurar Identidade..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:151
+msgid "Allows you to configure nickname, username, avatar etc..."
+msgstr "Permite-lhe configurar a alcunha, o nome de utilizador, o avatar, etc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:161
+msgid "Show SocketSpy..."
+msgstr "Mostrar Socket Espião..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:162
+msgid "Shows a window that allows monitoring the socket traffic"
+msgstr "Mostra uma janela que permite monitorizar o tráfego do socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:172
+msgid "Get Network Links"
+msgstr "Obter Ligações de Rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:173
+msgid "Shows a window that allows viewing the network links"
+msgstr "Mostra uma janela que permite ver as ligações da rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:183
+msgid "Get Channel List"
+msgstr "Obter Lista de Canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:184
+msgid "Shows a window that allows listing the network channels"
+msgstr "Mostra uma janela que permite listar os canais da rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:194
+msgid "Configure KVIrc..."
+msgstr "Configurar KVirc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:195
+msgid "Shows the general options dialog"
+msgstr "Mostra o diálogo de opções gerais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:205
+msgid "Configure Theme..."
+msgstr "Configurar Tema..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:206
+msgid "Shows the theme options dialog"
+msgstr "Mostra o diálogo de opções do tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:216
+msgid "Manage Themes..."
+msgstr "Gerir Temas..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:217
+msgid "Allows you to manage the themes"
+msgstr "Permite-lhe gerir os temas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:227
+msgid "Customize Toolbars..."
+msgstr "Personalizar Barra de Ferramentas..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:228
+msgid "Shows a window that allows editing script toolbars"
+msgstr "Mostra uma janela que permite editar o script das barras de ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:239
+msgid "Join Channels..."
+msgstr "Entrar em Canais..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:240
+msgid "Shows a dialog that allows you joing channels"
+msgstr "Mostra um diálogo que lhe permite entrar em canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:251
+msgid "Edit Actions..."
+msgstr "Editar Acções..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:252
+msgid "Shows a window that allows editing actions"
+msgstr "Mostra uma janela que permite editar acções"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:262
+msgid "Edit Aliases..."
+msgstr "Editar 'Alias'..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:263
+msgid "Shows a window that allows editing aliases"
+msgstr "Mostra uma janela que permite editar ''alias''"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:273
+msgid "Edit Events..."
+msgstr "Editar Eventos..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:274
+msgid "Shows a window that allows editing script events"
+msgstr "Mostra uma janela que permite editar scripts de eventos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:284
+msgid "Edit Popups..."
+msgstr "Editar Menus..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:285
+msgid "Shows a window that allows editing popup menus"
+msgstr "Mostra uma janela que permite editar menus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:295
+msgid "Edit Raw Events..."
+msgstr "Editar Eventos Raw..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:296
+msgid "Shows a window that allows editing raw scripting events"
+msgstr "Mostra uma janela que permite editar scripts dos eventos raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:306
+msgid "New Script Tester"
+msgstr "Novo Verificador de Scripts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:307
+msgid "Creates an embedded editor for long scripts"
+msgstr "Cria um editor embebido para scripts longos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:317
+msgid "Execute Script..."
+msgstr "Executar Script..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:318
+msgid "Allows executing a KVS script from file"
+msgstr "Permite executar um script KVS de um ficheiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:328
+msgid "Help Index"
+msgstr "Índice de Ajuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:329
+msgid "Shows the documentation index"
+msgstr "Mostra o índice da documentação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:340
+msgid "Allows subscribing to the KVIrc mailing list"
+msgstr "Permite subscrever na lista de correio KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:350
+msgid "KVIrc WWW"
+msgstr "KVIrc WWW"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:351
+msgid "Opens the KVIrc homepage"
+msgstr "Abre a página do KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:361
+msgid "KVIrc Russian WWW"
+msgstr "Página KVirc WWW Russa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:362
+msgid "Opens the KVIrc homepage in russian"
+msgstr "Abre a página do KVIrc em russo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:372
+msgid "Acquire Screenshot"
+msgstr "Capturar Ecrã"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:373
+msgid "Acquires a Screenshot of the KVIrc main window"
+msgstr "Captura uma imagem da janela principal do KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:385
+msgid "Cascade windows"
+msgstr "Janelas em Cascata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:386
+msgid "Arranges the MDI windows in a maximized-cascade fashion"
+msgstr "Arranja as janelas MDI num estilo cascata-maximizada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:397
+msgid "Tile windows"
+msgstr "Janelas Lado a Lado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:398
+msgid "Tiles the MDI windows with the currently selected tile method"
+msgstr "Arranja as janelas MDI com o actual método lado-a-lado seleccionado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:409
+msgid "Minimize all windows"
+msgstr "Minimizar Todas as Janelas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:410
+msgid "Minimized all the currently visible MDI windows"
+msgstr "Minimiza todas as janelas MDI actualmente visíveis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:421
+msgid "New IRC Context"
+msgstr "Novo Contexto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:422
+msgid "Creates a new IRC context console"
+msgstr "Cria uma nova consola de contexto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:433
+msgid "Quit KVIrc"
+msgstr "Sair do KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:434
+msgid "Quits KVIrc closing all the current connections"
+msgstr "Sai do KVirc fechando todas as conexões actuais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:448
+msgid "IRC Context Display"
+msgstr "Contexto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:449
+msgid "Shows a small display with IRC context informations"
+msgstr "Mostra uma pequena janela com informações do contexto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:520
+msgid "Acts as a separator for other items: performs no action"
+msgstr "Age como um separador para outros itens: não executa nenhuma acção"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:554
+msgid "Connect/Disconnect"
+msgstr "Conectar/Desconectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:555
+msgid "Allows you to connect to a server or to terminate the current connection"
+msgstr "Permite-lhe conectar a um servidor ou terminar a conexão actual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:628
+msgid "Connect"
+msgstr "Conectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:629
+msgid "Abort Connection"
+msgstr "Abortar Conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:790
+msgid "Join Channel"
+msgstr "Entrar no Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:791
+msgid "Shows a popup menu that allows quickly selecting a channel to join"
+msgstr "Mostra um menu que permite rápidamente seleccionar um canal para entrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:851
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:863
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:896
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:907
+msgid "Other..."
+msgstr "Outro..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:834
+msgid "Change Nickname"
+msgstr "Mudar Apelido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:835
+msgid "Shows a popup menu that allows quickly changing the nickname"
+msgstr "Mostra um menu que permite rapidamente mudar a alcunha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:883
+msgid "Connect To"
+msgstr "Conectar Com"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:884
+msgid "Shows a popup menu that allows quickly connecting to a server"
+msgstr "Mostra um menu que permite rápidamente conectar a um servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:929
+msgid "User Mode"
+msgstr "Modo de Utilizador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:930
+msgid "Shows a popup menu that allows quickly changing user modes"
+msgstr "Mostra um menu que permite rápidamente mudar os modos do utilizador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:947
+msgid "Wallops (+w)"
+msgstr "Wallops (+w)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:949
+msgid "Server Notices (+s)"
+msgstr "Noticias do Servidor (+s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:951
+msgid "Invisible (+i)"
+msgstr "Invisível (+i)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:997
+msgid "Away/Back"
+msgstr "Ausente/Voltar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:998
+msgid "Allows entering and leaving away state"
+msgstr "Permite entrar e sair do estado ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1065
+msgid "Enter Away Mode"
+msgstr "Entrar em Modo Ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1066
+msgid "Leave Away Mode"
+msgstr "Deixar Modo Ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1135
+msgid "Irc Tools"
+msgstr "Ferramentas IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1136
+msgid "Shows a popup menu with some IRC Tools"
+msgstr "Mostra um menu com algumas ferramentas IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1171
+msgid "Irc Actions"
+msgstr "Acções IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1172
+msgid "Shows a popup menu with some IRC Actions"
+msgstr "Mostra um menu com algumas acções IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:412
+msgid "KVIrc KVS Script"
+msgstr "Script KVS do KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:174
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:420
+msgid "Run KVS Script"
+msgstr "Executar Script KVS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:284
+msgid "URL:IRC Protocol"
+msgstr "URL:Protocolo IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:383
+msgid "Open with KVIrc"
+msgstr "Abrir com o KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:436
+msgid "KVIrc Configuration File"
+msgstr "Ficheiro de Configuração KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:453
+msgid "KVIrc Theme Package"
+msgstr "Pacote de Tema KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:461
+msgid "Install Theme Package"
+msgstr "Instalar Pacote de Tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:478
+msgid "KVIrc Addon Package"
+msgstr "Pacote Extra KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:486
+msgid "Install Package"
+msgstr "Instalar Pacote"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:749
+#, c-format
+msgid ""
+"Ops...it looks like I can't load modules on this sytem.\n"
+"I have been looking for the %s library but I haven't been able to load it\n"
+"due to the following error: \"%s\"\n"
+"Aborting."
+msgstr ""
+"Ops.. parece que não pode carregar módulos neste sistema.\n"
+"Esteve-se a procurar a livraria %s mas não não foi possível carregá-la\n"
+"devido ao seguinte erro: \"%s\"\n"
+"A abortar."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:762
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_begin\" function.\n"
+"Aborting!"
+msgstr ""
+"Ops... parece ter uma distribuição danificada.\n"
+"O módulo de configuração não exporta a função \"setup_begin\".\n"
+"A abortar!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:776
+msgid "Setup aborted"
+msgstr "Configuração abortada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:801
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_finish\" function.\n"
+"Trying to continue anyway..."
+msgstr ""
+"Ops... parece ter uma distribuição danificada.\n"
+"O módulo de configuração não exporta a função \"setup_finish\"\n"
+"Continuar apesar de tudo..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:186
+msgid "%Q is on IRC"
+msgstr "%Q está no IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:248
+msgid "%Q has left IRC"
+msgstr "%Q saiu do IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:368
+msgid "Notify list: No users to check for, quitting"
+msgstr "Lista de notificação: Nenhum utilizador para verificar, parar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:414
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (15 sec)"
+msgstr ""
+"Lista de notificação: o intervalo de tempo (%d segundos) é demasiado "
+"pequeno, restaurar para algo mais razoável (15 segundos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:428
+msgid "Notify list: Notify list empty, quitting"
+msgstr "Lista de notificação: lista de notificação vazia, parar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:455
+#, c-format
+msgid ""
+"Notify list: ISON delay (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+"Lista de notificação: o atraso ISON (%d segundos) é demasiado curto, "
+"restaurar para algo mais razoável (5 segundos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:491
+msgid "Notify list: Checking for: %Q"
+msgstr "Lista de notificação: A verificar para: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:535
+msgid ""
+"Notify list: Hey! You've used ISON behind my back? (I might be confused "
+"now...)"
+msgstr ""
+"Lista de notificação: Ei! Usou o ISON nas minhas costas ? (posso estar agora "
+"confuso...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:682
+msgid "registration mask changed, or nickname is being used by someone else"
+msgstr "máscara de registo modificada, ou a alcunha está a ser usada por outra pessoa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:686
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (registration mask does not match, or nickname is being used "
+"by someone else)"
+msgstr ""
+"Lista de notificação: \r!n\r%Q\r parece estar ligado, mas a máscara [%Q@\r!h"
+"\r%Q\r] não corresponde (a máscara de registo não corresponde, ou a alcunha "
+"está a ser usada por outra pessoa)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:691
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? "
+"(restarting)"
+msgstr ""
+"Lista de notificação: inesperada inconsistência, Base de Dados do utilizador "
+"registado modificada?(reiniciar)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:698
+msgid ""
+"Notify list: Unexpected inconsistency, expected \r!n\r%Q\r in the registered "
+"user DB"
+msgstr ""
+"Lista de notificação: inesperada inconsistência, esperava-se \r!n\r%Q\r na "
+"Base de Dados do utilizador registado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:712
+#, c-format
+msgid ""
+"Notify list: USERHOST delay (%d sec) is too short, resetting to something "
+"more reasonable (5 sec)"
+msgstr ""
+"Lista de notificação: atraso USERHOST(%d segs) é demasiado curto, restaurar "
+"para algo mais razoável (5 segs)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:726
+msgid "Notify list: Unexpected inconsistency, userhost list is empty!"
+msgstr "Lista de notificação: inesperada inconsistência, a lista userhost está vazia!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:761
+msgid "Notify list: Checking userhost for: %Q"
+msgstr "Lista de notificação: A verificar userhost para: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:831
+msgid ""
+"Notify list: Hey! You've used USERHOST behind my back? (I might be confused "
+"now...)"
+msgstr ""
+"Lista de notificação: Hei! Usou o USERHOST nas minhas costas? (posso estar "
+"agora confuso...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:836
+#, c-format
+msgid "Notify list: Broken USERHOST reply from the server? (%s)"
+msgstr "Lista de notificação: resposta USERHOST danificado do servidor? (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:860
+msgid ""
+"Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST reply "
+"was received, will recheck in the next loop"
+msgstr ""
+"Lista de notificação: \r!n\r%Q\r parece ter-se desligado antes da resposta "
+"USERHOST, será verificado no próximo passo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:931
+msgid "Starting notify list"
+msgstr "A iniciar lista de notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:936
+msgid "No users in the notify list"
+msgstr "Nenhum utilizador na lista de notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:958
+msgid "Notify list: Checking for:%Q"
+msgstr "Lista de notificação: A verificar por: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1013
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+"Lista de notificação: o intervalo de tempo (%d segs) é demasiado pequeno, "
+"restaurar para algo mais razoável (5 seg)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1139
+msgid "Notify list: Adding watch entries for%Q"
+msgstr "Lista de notificação: A adicionar entradas de vigia para %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1171
+msgid "watch entry listing requested by user"
+msgstr "listagem das entrada da vigia pedida pelo utilizador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1175
+msgid "possible watch list desync"
+msgstr "possível 'desync' na lista vigiar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1185
+msgid "registration mask changed or desync with the watch service"
+msgstr "máscara de registo modificada ou 'desync' com o serviço vigiar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1190
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (watch: registration mask does not match, or nickname is "
+"being used by someone else)"
+msgstr ""
+"Lista de notificação: \r!n\r%Q\r parece estar ligado, mas a máscara [%Q@\r!h"
+"\r%Q\r] não corresponde (vigiar: a máscara de registo não corresponde, ou a "
+"alcunha está a ser usada por outra pessoa)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1197
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? (watch: "
+"restarting)"
+msgstr ""
+"Lista de notificação: inconsistência inesperada, base de dados do utilizador "
+"registado modificada?(vigiar: a reiniciar)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1207
+msgid "watch entry added by user"
+msgstr "entrada de vigiar adicionada pelo utilizador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1245
+msgid "removed from watch list"
+msgstr "removido da lista de vigiar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1248
+msgid "Notify list: Stopped watching for \r!n\r%Q\r"
+msgstr "Lista de notificação: Parou de vigiar para \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1258
+msgid "watch"
+msgstr "vigiar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1264
+msgid "Notify list: \r!n\r%Q\r is offline (watch)"
+msgstr "Lista de notificação: \r!n\r%Q\r está desligado (vigiar)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1267
+msgid "unmatched watch list entry"
+msgstr "entrada na lista de vigiar não correspondente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:80
+msgid "commandline::userfriendly"
+msgstr "commandline::userfriendly"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:94
+msgid "commandline::kvs"
+msgstr "commandline::kvs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:127
+msgid "You are not connected to a server"
+msgstr "Não está conectado num servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_iconmanager.cpp:372
+msgid "Icon Table"
+msgstr "Tabela de Ícones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:190
+msgid "No "
+msgstr "Não "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:196
+msgid "This module has no version informations: refusing to load it"
+msgstr "Este módulo não tem informação acerca da versão: a recusar o seu carregamento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:204
+msgid "This module was compiled for a different KVIrc version and can't be loaded"
+msgstr ""
+"Este módulo foi compilado para uma versão KVirc diferente e não pode ser "
+"carregado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:232
+msgid "Failed to execute the init routine"
+msgstr "Falha ao executar a rotina init"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:261
+#, c-format
+msgid "Loaded module '%s' (%s)"
+msgstr "Módulo carregado '%s' (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:306
+#, c-format
+msgid "Unloaded module '%s'"
+msgstr "Módulo descarregado '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:45
+msgid "This window has no associated irc context"
+msgstr "Esta janela não tem um contexto irc associado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:50
+#, c-format
+msgid "No such irc context (%d)"
+msgstr "Sem contexto irc (%d)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:147
+msgid "Global idle timer must be started before using $my.globalIdle function"
+msgstr ""
+"O temporizador inactivo global deve começar antes de usar a função $my."
+"globalIdle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:103
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:215
+msgid "Window %Q not found"
+msgstr "Janela %Q não encontrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:108
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:220
+msgid "Missing window id after the 'w' switch"
+msgstr "ID de janela em falta após opção 'w'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:121
+msgid "Can't log to file %Q"
+msgstr "Não é possível registar no ficheiro %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:123
+msgid "This window has no logging capabilities"
+msgstr "Esta janela não tem capacidades de registo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:275
+msgid "Window with id '%Q' not found, returning empty string"
+msgstr "Janela com id '%Q' não encontrada, retornar string vazia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:598
+msgid "Sound file '%Q' not found"
+msgstr "Ficheiro de som '%Q' não encontrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:604
+msgid "Unable to play sound '%Q'"
+msgstr "Não é possível reproduzir o som '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:615
+msgid "Sorry , I can't find a sound system to use on this machine"
+msgstr ""
+"Desculpe, não se conseguiu encontrar um sistema de som para usar nesta "
+"máquina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:617
+#, c-format
+msgid "Sound system detected to: %s"
+msgstr "Sistema de som detectado para: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:141
+msgid "Show at startup"
+msgstr "Mostrar ao iniciar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:154
+msgid "Did you know..."
+msgstr "Sabias que..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:220
+msgid "<b>Can't find any tip... :(</b>"
+msgstr " <b>Não é possível encontrar nenhuma dica... :(</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1544
+msgid "%Q algorytm is not supported"
+msgstr "%Q algoritmo não suportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1566
+msgid "KVIrc is compiled without OpenSSL support. $str.digest function disabled"
+msgstr "O KVirc é compilado sem suporte OpenSSL. $str.digest função desactivada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2030
+msgid "Invalid argument for ?d escape sequence, 0 assumed"
+msgstr "Argumento inválido para a sequência de escape ?d, assumir 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2034
+msgid "Missing argument for ?d escape sequence, 0 assumed"
+msgstr "Falta um argumento para a sequência de escape ?d, assumir 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2066
+msgid "Invalid argument for ?u escape sequence, 0 assumed"
+msgstr "Argumento inválido para a sequência de escape ?u, assumir 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2070
+msgid "Missing argument for ?u escape sequence, 0 assumed"
+msgstr "Falta um argumento para a sequência de escape ?u, assumir 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2097
+msgid "Invalid argument for ?x escape sequence, 0 assumed"
+msgstr "Argumento inválido para a sequência de escape ?x, assumir 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2101
+msgid "Missing argument for ?x escape sequence, 0 assumed"
+msgstr "Falta um argumento para a sequência de escape ?x, assumir 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2128
+msgid "Invalid argument for ?X escape sequence, 0 assumed"
+msgstr "Argumento inválido para a sequência de escape ?X, assumir 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2132
+msgid "Missing argument for ?X escape sequence, 0 assumed"
+msgstr "Falta um argumento para a sequência de escape ?X, assumir 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2189
+msgid "Invalid argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+"Argumento inválido para uma sequência de escape em ponto flutuante, assumir "
+"0.0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2193
+msgid "Missing argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+"Falta um argumento para uma sequência de escape em ponto flutuante, assumir "
+"0.0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:87
+msgid "Show URL List"
+msgstr "Mostrar Lista URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:88
+msgid "Shows the URL list window"
+msgstr "Mostrar janela de listagem URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:124
+msgid "&Configure"
+msgstr "&Configurar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:126
+msgid "Clo&se"
+msgstr "&Fechar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:127
+msgid "&Module"
+msgstr "&Módulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:130
+msgid "&Load"
+msgstr "&Carregar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:131
+msgid "&Save"
+msgstr "&Gravar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:132
+msgid "&Clear"
+msgstr "&Limpar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:133
+msgid "&List"
+msgstr "&Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:136
+msgid "URL"
+msgstr "URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:137
+msgid "Window"
+msgstr "Janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:138
+msgid "Count"
+msgstr "Contagem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:139
+msgid "Timestamp"
+msgstr "Hora nas mensagnes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:113
+msgid "Warning - KVIrc"
+msgstr "Aviso - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+msgid "Select an URL."
+msgstr "Seleccionar uma URL."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:115
+msgid "&Remove"
+msgstr "&Remover"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:269
+msgid "&Find Text"
+msgstr "&Procurar Texto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:280
+msgid "&Say to Window"
+msgstr "&Mostrar na Janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+msgid "Window not found."
+msgstr "Janela não encontrada."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:349
+msgid "URL Module Configuration"
+msgstr "Configuração de Módulo URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:356
+msgid "Save URL list on module unload"
+msgstr "Gravar lista URL ao descarregar módulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:360
+msgid "Save columns width on URL list close"
+msgstr "Gravar comprimento das colunas ao fechar lista URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1187
+msgid "&Cancel"
+msgstr "&Cancelar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:432
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1328
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:458
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1186
+msgid "&OK"
+msgstr "&OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:423
+msgid "Enable URL ban list"
+msgstr "Activar Lista URL de banimentos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:435
+msgid "&Add Ban"
+msgstr "&Adicionar Banimento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:440
+msgid "&Remove Selected"
+msgstr "&Remover Seleccionados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "URL Ban List"
+msgstr "Lista URL de Banimentos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+msgid "Select a ban."
+msgstr "Seleccionar um banimento."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:797
+msgid "View URL list"
+msgstr "Ver Lista URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:49
+msgid "Can't find the window with id '%Q'"
+msgstr "Não é possível encontrar a janela com id '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:53
+msgid "The specified window (%Q) is not a channel"
+msgstr "A janela indicada (%Q) não é um canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:78
+msgid "Destinaion file exists: no copy made"
+msgstr "O ficheiro de destino existe: nenhuma cópia feita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:83
+msgid "Failed to copy from %Q to %Q"
+msgstr "Falha ao copiar de %Q para %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:84
+msgid "Either the source doesn't exist or the destination can not be created"
+msgstr "O código-fonte não existe ou a localização de destino não pode ser criada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:203
+msgid "Failed to write to file %Q: the destination couldn't be opened"
+msgstr "Não é possível escrever no ficheiro%Q: o destino não pode ser aberto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:244
+msgid "Destination file exists: file not renamed"
+msgstr "O ficheiro de destino existe: ficheiro não renomeado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:247
+msgid "Failed to rename %Q to %Q"
+msgstr "Falha ao renomear %Q para %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:281
+msgid "Failed to make the directory %Q"
+msgstr "Falha ao criar o directório %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:322
+msgid "Failed to remove the file %Q"
+msgstr "Falha ao remover o ficheiro %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:365
+msgid "Failed to remove the directory %Q"
+msgstr "Falha ao remover o directório %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:482
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:628
+msgid "The specified directory does not exist '%Q'"
+msgstr "O directório indicado não existe '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:730
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:824
+msgid "Can't open the file \"%Q\" for reading"
+msgstr "Não é possível abrir o ficheiro \"%Q\" para leitura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:746
+msgid "Read error for file %Q"
+msgstr "Erro de leitura no ficheiro %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:754
+msgid ""
+"Read error for file %Q (have been unable to read the requested size in 1000 "
+"retries)"
+msgstr ""
+"Erro de leitura no ficheiro %Q (não foi possível ver o tamanho pedido em "
+"1000 tentativas)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:920
+msgid "Can't open the file \"%Q\" for writing"
+msgstr "Não é possível abrir ficheiro \"%Q\" para escrita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/index.cpp:473
+msgid "Untitled"
+msgstr "Sem Título"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+msgid "Indexing help files"
+msgstr "A indexar ficheiros de ajuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:87
+msgid "Index"
+msgstr "Índice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:99
+msgid "Refresh index"
+msgstr "Actualizar índice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:211
+msgid "Full Text Search"
+msgstr "Procurar no Texto Todo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:203
+msgid "Using a wildcard within phrases is not allowed."
+msgstr "Não é permitido usar asteriscos dentro de frases."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:212
+msgid "The closing quotation mark is missing."
+msgstr "Falta o fecho das marcas de quotização."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:312
+msgid "Help Browser"
+msgstr "Navegador de Ajuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:201
+msgid "Request List"
+msgstr "Obter Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:207
+msgid "Stop list download"
+msgstr "Parar transferência da lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:211
+msgid ""
+"<center><b>/LIST command parameters:</b><br>Many servers accept special "
+"parameters that allow you to filter the returned entries.<br>Commonly, "
+"masked channel names (*kvirc*) are accepted as parameters, as well as "
+"strings like <b>c&lt;n</b> or <b>c&gt;n</b> where <b>n</b> is the minimum or "
+"maximum of users on the channel.</center>"
+msgstr ""
+"<center><b>Parâmetros do comando /LIST:</b><br>Muitos servidores aceitam "
+"parâmetros especiais que lhe permitem filtrar as entradas retornadas. "
+"<br>Normalmente, os nomes de canais mascarados (*kvirc*) são aceites como "
+"parâmetros, assim como tipos de strings<b>c&lt;n</b> ou <b>c&gt;n</b> onde "
+"<b>n</b> é o mínimo ou o máximo de utilizadores no canal.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:220
+msgid "Users"
+msgstr "Utilizadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:221
+msgid "Topic"
+msgstr "Tópico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:262
+msgid "Sent list request, waiting for reply..."
+msgstr "Pedido de lista enviado: a aguardar resposta..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:265
+msgid "Cannot request list: No active connection"
+msgstr "Não é possível pedir a lista: Nenhuma conexão activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:389
+msgid "Stopping the list download..."
+msgstr "A parar a transferência da lista..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:276
+msgid "Cannot stop list download, no active connection."
+msgstr "Não é possível pedir a lista, nenhuma conexão activa."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:125
+#, c-format
+msgid "Connected to %s (%s)"
+msgstr "Conectado a %s (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:293
+msgid "List cannot be requested: Not connected to a server"
+msgstr "Não é possível pedir a lista: Não está conectado a um servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:316
+#, c-format
+msgid "Channel List [IRC Context %u]"
+msgstr "Lista de Canais [Contexto IRC %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:319
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel List</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Lista de Canais</b></font> <font color=\"%s\">"
+"[Contexto IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:326
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel list</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Lista de canais</b></font> <font color=\"%s\">"
+"[Contexto IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:342
+msgid "You cannot export an empty list"
+msgstr "Não pode exportar uma lista vazia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:350
+msgid "Channel list for %Q - %Q"
+msgstr "Lista de canais para %Q - %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:353
+msgid "Channel list"
+msgstr "Lista de canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:382
+msgid "Choose filename"
+msgstr "Escolher nome de ficheiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:356
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:383
+msgid "Configuration files (*.kvc)"
+msgstr "Ficheiros de configuração (*.kvc)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:398
+msgid "Reset"
+msgstr "Restaurar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:435
+msgid "Channels list download finished"
+msgstr "Transferência da lista de canais terminada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:472
+msgid "Processing list: %Q"
+msgstr "A processar a lista: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/libkvilist.cpp:63
+msgid "List window alread open for this IRC context"
+msgstr "Janela de listagem já aberta para este contexto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:70
+msgid "Terminal"
+msgstr "Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:73
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:77
+#, c-format
+msgid "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+msgstr "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:59
+msgid "Terminal emulator"
+msgstr "Emulador de Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:63
+msgid "Close this window"
+msgstr "Fechar esta Janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:91
+msgid "Can't create the terminal emulation part"
+msgstr "Não é possível criar a parte de emulação do terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:96
+msgid "Can't retrieve the terminal emulation factory"
+msgstr "Não é possível recuperar a fábrica de emulação do terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:95
+msgid "KVIrc"
+msgstr "KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:98
+msgid "Context"
+msgstr "Contexto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:155
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:100
+msgid "Away"
+msgstr "Ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:102
+msgid "&Configure KVIrc..."
+msgstr "&Configurar KVirc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:104
+msgid "&About KVIrc"
+msgstr "Acerca do &KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:109
+msgid "Un&dock"
+msgstr "&Desacoplar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:168
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:112
+msgid "Ctrl+Q"
+msgstr "Ctrl+Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:143
+msgid "Nothing is happening..."
+msgstr "Não aconteceu nada..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:285
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:144
+msgid "Just idling..."
+msgstr "Á espera..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:145
+msgid "Dum de dum de dum..."
+msgstr "O burro o burro o burro..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:146
+msgid "Hey man... do something!"
+msgstr "Opá...faz alguma coisa!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:147
+msgid "Umpf!"
+msgstr "Umpf!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:148
+msgid "Silence speaking"
+msgstr "Silêncio falador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:149
+msgid "Are ya here?"
+msgstr "Estás aí?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:150
+msgid "The world has stopped?"
+msgstr "O mundo parou?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:151
+msgid "Everything is all right"
+msgstr "Está tudo bem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:152
+msgid "idle()"
+msgstr "inactivo()"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:153
+msgid "It's so cold here..."
+msgstr "Aqui está muito frio..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:295
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:154
+msgid "Do not disturb... watching TV"
+msgstr "Não incomodar...estou a ver televisão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:155
+msgid "Just vegetating"
+msgstr "A vegetar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:156
+msgid "Hey... are ya sure that your network is up?"
+msgstr "Hey...tens a certeza que a tua net está ok?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:298
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:157
+msgid "Seems like the world has stopped spinning"
+msgstr "Parece que o mundo parou de rodar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:299
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:158
+msgid "This silence is freaking me out!"
+msgstr "Este silêncio está-me assustar!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:300
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:159
+msgid "Mieeeeeowww!"
+msgstr "Miauuuuuuuu!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:301
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:160
+msgid "idle idle idle idle!"
+msgstr "inactivo inactivo inactivo!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Hide Window"
+msgstr "Ocultar Janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Show Window"
+msgstr "Mostrar Janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:428
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:260
+msgid "Away on all"
+msgstr "Ausente em todos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:263
+msgid "Back on all"
+msgstr "Voltou em todos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:450
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:282
+msgid "Back on %1"
+msgstr "Voltou %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:453
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:285
+msgid "Away on %1"
+msgstr "Ausente %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1238
+msgid "Alias"
+msgstr "'Alias'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1217
+msgid "No item selected"
+msgstr "Nenhum item seleccionado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:232
+msgid "Rename"
+msgstr "Renomear"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:236
+msgid "Edit the alias or namespace name"
+msgstr "Edita a ''alias'' ou o nome do nome de espaço"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+msgid "Add Alias"
+msgstr "Adicionar 'Alias'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:429
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Add Namespace"
+msgstr "Adicionar Nome de Espaço"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:440
+msgid "Remove Selected"
+msgstr "Remover Seleccionado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:449
+msgid "Export Selected..."
+msgstr "Exportar Seleccionado..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:455
+msgid "Export Selected in singles files..."
+msgstr "Exportar Seleccionado em ficheiros únicos..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:462
+msgid "Export All..."
+msgstr "Exportar Tudo..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:470
+msgid "Find In Aliases..."
+msgstr "Procurar Nas 'Alias'..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:476
+msgid "Collapse All Namespaces"
+msgstr "Fechar Todos os Nomes de Espaços"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:508
+msgid "Find In Aliases"
+msgstr "Procurar Nas 'Alias'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:509
+msgid ""
+"Please enter the text to be searched for. The matching aliases will be "
+"highlighted."
+msgstr ""
+"Por favor indique o texto a procurar. A ''alias'' correspondente será "
+"destacada."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "Alias Export"
+msgstr "Exportar 'Alias'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+msgid "There is not selection!"
+msgstr "Não existe nenhuma selecção!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:615
+msgid "The file \"%Q\" exists. Do you want to replace it ?"
+msgstr "O ficheiro %Q já existe. Deseja-o substituir?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+msgid "Replace file"
+msgstr "Substituir ficheiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+msgid "Yes to All"
+msgstr "Sim a Tudo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "There exported file would be empty: cowardly refusing to write it"
+msgstr "O ficheiro exportado está vazio: a recusar cobardemente escrever o ficheiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:786
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:411
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1133
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:398
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:745
+msgid "Choose a Filename - KVIrc"
+msgstr "Escolher um Ficheiro - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Write Failed - KVIrc"
+msgstr "Escrita Falhada - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+msgid "Unable to write to the alias file."
+msgstr "Não é possível escrever no ficheiro de 'alias'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:793
+msgid "Do you really want to remove the alias \"%Q\" ?"
+msgstr "Deseja realmente remover a ''alias'' \"%Q\"?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:795
+msgid "Do you really want to remove the namespace \"%Q\" ?"
+msgstr "Deseja realmente remover o nome de espaço \"%Q\"?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:797
+msgid "Please note that all the children items will be deleted too."
+msgstr "Por favor note que todos os itens filhos serão também apagados."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+msgid "Remove item"
+msgstr "Remover item"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:875
+msgid "Missing Alias Name"
+msgstr "Nome de 'Alias' em Falta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:876
+msgid "You must specify a valid name for the alias"
+msgstr "Deve indicar um nome válido para a ''alias''"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:877
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:890
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:904
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:915
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:946
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:959
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:973
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1128
+msgid "Ok, Let me try again..."
+msgstr "Ok, deixe-me tentar novamente..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:888
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:902
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:913
+msgid "Bad Alias Name"
+msgstr "Nome de 'Alias' Inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:944
+msgid "Missing Namespace Name"
+msgstr "Nome do Nome de Espaço em Falta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:945
+msgid "You must specify a valid name for the namespace"
+msgstr "Deve indicar um nome válido para o nome de espaço"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:957
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:971
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:982
+msgid "Bad Namespace Name"
+msgstr "Nome do Nome de Espaço Inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:958
+msgid ""
+"Namespace names can contain only letters, digits, underscores and '::' "
+"namespace separators"
+msgstr ""
+"Os nomes dos nomes de espaços podem apenas conter letras, dígitos, grifos e "
+"separadores de nome de espaço '::'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:972
+msgid "Stray ':' character in namespace name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+"Caracter ':' inesperado no nome de espaço: queria dizer ...<nome de espaço>::"
+"<nome>?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:983
+msgid "Found an empty namespace in namespace name"
+msgstr "Encontrado um nome de espaço vazio no nome do nome de espaço"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+msgid "Please enter the name for the new alias"
+msgstr "Por favor indique o nome para a nova 'alias'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Please enter the name for the new namespace"
+msgstr "Por favor indique o nome para o novo nome de espaço"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+msgid "Rename Alias"
+msgstr "Renomear 'Alias'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+msgid "Please enter the new name for the alias"
+msgstr "Por favor indique o novo nome para a 'alias'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Rename Namespace"
+msgstr "Renomear Nome de Espaço"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Please enter the new name for the namespace"
+msgstr "Por favor indique o novo nome para o nome de espaço"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1126
+msgid "Alias already exists"
+msgstr "'Alias' já existente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1139
+msgid "This name is already in use. Please choose another one."
+msgstr "Este nome já está em uso. Por favor escolha outro."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1138
+msgid "Namespace already exists"
+msgstr "Nome de espaço já existente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1140
+msgid "Ok, let me try again..."
+msgstr "Ok, deixe-me tentar novamente..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1227
+msgid "Namespace"
+msgstr "Nome de Espaço"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1332
+msgid "Alias Editor"
+msgstr "Editor de 'Alias'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:62
+msgid "Join Channels"
+msgstr "Entrar em Canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:183
+msgid "Name"
+msgstr "Nome"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:86
+msgid "Password"
+msgstr "Senha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:641
+msgid "&Join"
+msgstr "&Entrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:108
+msgid "Show this window after connecting"
+msgstr "Mostrar esta janela após conectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:163
+msgid "Recent Channels"
+msgstr "Canais Recentes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:182
+msgid "Registered Channels"
+msgstr "Canais Registados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:133
+msgid "Choose the file to share"
+msgstr "Escolher o ficheiro para partilhar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:178
+msgid "No such channel/netmask entry in the database"
+msgstr "Nenhuma entrada de canal/máscara encontrada na base de dados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:198
+msgid "Registered channel list:"
+msgstr "Lista de canais registados:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:208
+#, c-format
+msgid "Channel: %c%s@%s"
+msgstr "Canal: %c%s@%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:213
+#, c-format
+msgid " Property: %s=%s"
+msgstr " Propriedade: %s=%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:220
+#, c-format
+msgid "Total %d channels"
+msgstr "Total %d canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:86
+msgid "Property Editor"
+msgstr "Editor de Propriedades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:101
+msgid "Property"
+msgstr "Propriedade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:102
+msgid "Value"
+msgstr "Valor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:111
+msgid "&New"
+msgstr "&Novo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:215
+msgid "Mask Editor"
+msgstr "Editor de Máscaras"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:219
+msgid ""
+"Insert a mask for this user.<br>It can contain the wildcard characters '*' "
+"and '?'."
+msgstr ""
+"Inserir uma máscara para este utilizador.<br>Pode conter asteriscos '*' e "
+"'?'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:230
+msgid ""
+"<center>This the <b>nickname</b> that will match this user, default value is "
+"the registered name.</center>"
+msgstr ""
+"<center>Esta é a <b>alcunha</b> que irá corresponder a este utilizador,o "
+"valor predefinido é o nome registado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:241
+msgid ""
+"<center>This the <b>username</b> that will match this user. <b>*</b> will "
+"match any username.</center>"
+msgstr ""
+"<center>Este é o <b>nome de utilizador</b> que irá coincidir com este "
+"utilizador. <b>*</b> irá coincidir com qualquer nome de utilizador.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:252
+msgid ""
+"<center>This the <b>hostname</b> that will match this user. <b>*</b> will "
+"match any hostname.</center>"
+msgstr ""
+"<center>Este é o <b>servidor</b> que irá combinar com este utilizador. <b>*</"
+"b>irá combinar com qualquer servidor.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:333
+msgid "Registered User Entry"
+msgstr "Entrada de Utilizadores Registados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:145
+msgid "Name:"
+msgstr "Nome:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:345
+msgid "Comment:"
+msgstr "Comentário:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:355
+msgid "Masks:"
+msgstr "Máscaras:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:216
+msgid "&Add..."
+msgstr "&Adicionar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:377
+msgid "&Edit"
+msgstr "&Editar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:385
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:414
+msgid "Identity"
+msgstr "Identidade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:393
+msgid "Notify when user is online"
+msgstr "Notificar quando o utilizador estiver ligado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:396
+msgid "Notify nicknames:"
+msgstr "Apelidos de notificação:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:401
+msgid "<center>You can enter a space separated list of nicknames.</center>"
+msgstr "<center>Pode digitar um espaço a separar a lista dos apelidos.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:426
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:383
+msgid "Avatar"
+msgstr "Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:433
+msgid "Use custom color in userlist"
+msgstr "Usar cores personalizadas na lista de utilizadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:441
+msgid "All Properties..."
+msgstr "Todas as Propriedades..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:448
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:231
+msgid "Properties"
+msgstr "Propriedades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:458
+msgid "Enable ignore for this user"
+msgstr "Activar ignorar para este utilizador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:460
+msgid "Ignore features"
+msgstr "Ignorar opções"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:465
+msgid "Ignore query-messages"
+msgstr "Ignorar mensagens privadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:468
+msgid "Ignore channel-messages"
+msgstr "Ignorar mensagens de canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:471
+msgid "Ignore notice-messages"
+msgstr "Ignorar mensagens de notícias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:474
+msgid "Ignore ctcp-messages"
+msgstr "Ignorar mensagens ctcp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:477
+msgid "Ignore invites"
+msgstr "Ignorar convites"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:480
+msgid "Ignore DCCs"
+msgstr "Ignorar DCCs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:486
+msgid "Ignore"
+msgstr "Ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:94
+msgid "Notify disabled"
+msgstr "Notificação desactivada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:96
+msgid "Notify as: "
+msgstr "Notificar como: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:105
+msgid "No comment set"
+msgstr "Sem comentário definido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:107
+msgid "Comment: "
+msgstr "Comentário: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:176
+msgid "Registered Users - KVIrc"
+msgstr "Utilizadores Registados - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:317
+msgid "Flags"
+msgstr "Opções"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:192
+msgid ""
+"<center>This is the list of registered users. KVIrc can automatically "
+"recognize and associate properties to them.<br>Use the buttons on the right "
+"to add, edit and remove entries. The \"notify\" column allows you to quickly "
+"add users to the notify list. Notify list fine-tuning can be performed by "
+"editing the entry properties.</center>"
+msgstr ""
+"<center>Esta é a lista de utilizadores registados. O KVirc pode "
+"automaticamente reconhecer e associar-lhes as propriedades. <br>Use os "
+"botões à direita para adicionar, editar e remover entradas. A coluna "
+"\"notificação\" permite rápidamente adicionar utilizadores à lista de "
+"notificação. O fino ajuste da lista de notificação pode ser feito por editar "
+"as entradas das propriedades.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:208
+msgid "Add (Wizard)..."
+msgstr "Adicionar (Assistente)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:211
+msgid "Add a registered user by means of a user-friendly wizard."
+msgstr "Adiciona um utilizador registado através de um assistente \"amigável\"."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:219
+msgid "Open the edit dialog to create a new user entry."
+msgstr "Abre o diálogo editado para criar uma nova entrada de utilizador."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:223
+msgid "&Add Group..."
+msgstr "&Adicionar Grupo..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:226
+msgid "Adds a new group"
+msgstr "Adiciona um novo grupo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:234
+msgid "Remove the currently selected entries."
+msgstr "Remove as entradas seleccionadas."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:239
+msgid "&Edit..."
+msgstr "&Editar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:243
+msgid "Edit the first selected entry."
+msgstr "Edita a primeira entrada seleccionada."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:250
+msgid "Export To..."
+msgstr "Exportar Para..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:254
+msgid ""
+"Export the selected entries to a file.<br>All the data associated with the "
+"selected registered users will be exported.<br>You (or anyone else) can "
+"later import the entries by using the \"Import\" button."
+msgstr ""
+"Exporta as entradas seleccionadas para um ficheiro.<br>todos os dados "
+"associados com os utilizadores registados serão exportados.<br>Você (ou "
+"qualquer outro) podem mais tarde importar as entradas ai usar o botão "
+"\"Importar\"."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:259
+msgid "Import From..."
+msgstr "Importar De..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:262
+msgid ""
+"Import entries from a file exported earlier by the \"export\" function of "
+"this dialog."
+msgstr ""
+"Importa entradas de um ficheiro exportado anteriormente pela função "
+"\"exportar\" deste diálogo."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:399
+msgid "Group name:"
+msgstr "Nome do grupo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:442
+msgid "Move to group"
+msgstr "Mover para o grupo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:483
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:486
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:487
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:491
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:690
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_useridentity.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:962
+msgid "Default"
+msgstr "Predefinido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:674
+msgid "No entries selected."
+msgstr "Nenhuma entrada seleccionada."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:687
+msgid "Can't open file %Q for writing."
+msgstr "Não é possível abrir o ficheiro %Q para escrita."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:772
+msgid "Can't export the registered users database: Write error."
+msgstr ""
+"Não é possível exportar a base de dados de utilizadores registados: Erro de "
+"escrita."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:793
+#, c-format
+msgid "Can't open file %s for reading."
+msgstr "Não pode abrir o ficheiro %s para leitura."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:804
+#, c-format
+msgid "The file %s doesn't appear to be a valid registered users database."
+msgstr ""
+"O ficheiro %s não parece ser uma base de dados válida de utilizadores "
+"registados."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:811
+#, c-format
+msgid "The file %s contains an invalid registered users database version."
+msgstr ""
+"O ficheiro %s contém uma versão de base de dados inválida de utilizadores "
+"registados."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:892
+msgid "Can't import the registered users database: Read error."
+msgstr ""
+"Não é possível importar a base de dados dos utilizadores registados: Erro de "
+"leitura."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:78
+msgid "User Registration Wizard - KVIrc"
+msgstr "Assistente de Registo dos Utilizadores - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:89
+msgid ""
+"<p>Welcome to the user registration wizard.<br>This process allows you to "
+"add an IRC user to the database and set properties for that user. KVIrc will "
+"be (hopefully) able to recognize the user, add him to the notify list, and "
+"display the associated avatar.<br><br>First of all, you must insert an "
+"<b>entry name or real name</b> for the user you're going to register. The "
+"name will be used to identify the database entry and has no specific "
+"requirements, it can be a given name, nickname, or just some text to remind "
+"you of the real person.<br>Examples: \"George W Bush\", \"Dubya\".\n"
+"</p>"
+msgstr ""
+"<p>Bem-vindo ao assistente de registo do utilizador.<br>Este processo "
+"permite adicionar um utilizador IRC à sua base de dados e definir as suas "
+"propriedades. O KVIrc irá ser capaz de reconhecer o utilizador, e de o "
+"adicionar á lista de notificação e de mostrar o avatar associado. <br><br>Em "
+"primeiro lugar, deve digitar <b>um nome ou nome real</b> para o utilizador "
+"que vai registar. O nome irá ser usado para identificar a entrada da base de "
+"dados e não tem pedidos específicos, pode ser um nome dado, uma alcunha, ou "
+"apenas algum texto para o lembrar da pessoa em questão. <br>Exemplos: "
+"\"George W Bush\", \"Dubya\".\n"
+"</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:97
+msgid "Step 1: Entry Name"
+msgstr "Passo 1: Indicar Nome"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:112
+msgid ""
+"<p>A registered user is identified by one or more <b>IRC masks</b>.<br>A "
+"mask must be in the following form:<br><b>nickname!username@hostname</"
+"b><br>and can contain wildcard characters '*' and '?'. Be careful in "
+"choosing the masks, as they are the only way to verify the identity of a "
+"registered user.<br><br>You can enter at most two masks here, if you wish to "
+"add more masks, use the \"<b>Edit</b>\" button in the Registered Users "
+"dialog. You must enter at least one mask.</p>"
+msgstr ""
+"<p>Um utilizador registado é identificado por uma ou mais <b>máscaras</b>. "
+"<br>Uma máscara deve estar na seguinte forma: <br><b>alcunha!"
+"nomedeutilizador@endereço</b><br> e pode conter caracteres '*' e '?'. Tenha "
+"cuidado ao escolher a máscara, pois é a única maneira de verificar a "
+"identidade de um utilizador registado.<br><br>Pode ter um máximo de duas "
+"máscaras, se quiser ter mais máscaras, clique em \"<b>Editar</b>\" na janela "
+"de diálogo dos utilizadores registados. Tem que digitar pelo menos uma "
+"máscara.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:170
+msgid "Step 2: Mask Selection"
+msgstr "Passo 2: Seleccionar Máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:182
+msgid ""
+"<p>If you want to store an avatar image for this user, you can set it here. "
+"KVIrc will show the avatar in the userlist next to the user's nickname."
+"<br>An avatar can be in any supported image format (PNG is recommended). "
+"Keep in mind that KVIrc stores avatars in memory and has to resize them to "
+"fit in the userlist, thus it's better to use small, low-resolution images.</"
+"p>"
+msgstr ""
+"<p>Se deseja guardar uma imagem avatar para este utilizador, pode-o fazer "
+"aqui.O KVIrc irá mostrar a imagem a seguir à alcunha do utilizador, na lista "
+"de utilizadores ao lado da alcunha.<br>Um avatar pode ser qualquer tipo de "
+"imagem suportado (é recomendada a extensão PNG). De notar que o KVirc guarda "
+"as avatares em memória e tem que as dimensionar de modo a que possam caber "
+"na lista de utilizadores, claro que é preferível usar imagens de tamanho "
+"pequeno e de baixa resolução.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:190
+msgid "Store an avatar for this user"
+msgstr "Guardar avatar para este Utilizador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:195
+msgid "Step 3: Avatar Selection"
+msgstr "Passo 3: Seleccionar Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:206
+msgid ""
+"<p>If you want to be notified when this user is online or goes offline, you "
+"must specify the list of nicknames that KVIrc will look for.<br><br>You can "
+"enter at most two nicknames here, if you wish to add more nicknames, use the "
+"\"<b>Edit</b>\" button in the Registered Users dialog.</p>"
+msgstr ""
+"<p>Se deseja ser notificado quando este utilizador está ligado, deve indicar "
+"a lista de apelidos para que o KVirc os possa procurar.<br><br> Pode digitar "
+"aqui um máximo de dois apelidos, se desejar adicionar mais apelidos, clique "
+"em \"<b>Editar</b>\" na janela de diálogo dos Utilizadores Registados.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:215
+msgid "Add this user to the notify list"
+msgstr "Adicionar este utilizador à lista de notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:342
+msgid "Nickname:"
+msgstr "Apelido:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:225
+msgid "Nickname 2:"
+msgstr "Apelido 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:239
+msgid "Step 4: Notify List"
+msgstr "Passo 4: Lista de Notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:251
+msgid ""
+"<p>That's it. The user registration has been completed.<br><br>Click "
+"\"<b>Finish</b>\" to close this dialog.</p>"
+msgstr ""
+"<p>Terminado. O registo do utilizador está completo<br><br>Clique em"
+"\"<b>Finalizar</b>\" para fechar este diálogo.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:254
+msgid "Registration Complete"
+msgstr "Registo Completo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:695
+msgid "No name specified"
+msgstr "Nenhum nome indicado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:209
+msgid "User already registered: found exact name match"
+msgstr "Utilizador já registado: nome correspondente encontrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:222
+msgid "Mask %Q is already used to identify user %s"
+msgstr "Máscara %Q já em uso para identificar o utilizador %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:275
+msgid "User not found (%Q)"
+msgstr "Utilizador não encontrado (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:403
+msgid "No mask specified"
+msgstr "Nenhuma máscara indicada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:524
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:708
+msgid "User %Q not found"
+msgstr "Utilizador %Q não encontrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:355
+msgid "Mask %Q already used to identify user %Q"
+msgstr "Máscara %Q já em uso para identificar o utilizador %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:410
+msgid "Mask %Q not found"
+msgstr "Máscara %Q não encontrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:701
+msgid "No property specified"
+msgstr "Nenhuma propriedade indicada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:808
+msgid "Registered users database dump:"
+msgstr "Lixeira da base de dados dos utilizadores registados:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:819
+msgid " User: %c%Q"
+msgstr " Utilizador: %c%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:823
+msgid " Warning: this user has no registration masks"
+msgstr " Aviso: este utilizador não tem máscara registada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:827
+msgid " Mask: %Q!%Q@%Q"
+msgstr " Máscara: %Q!%Q@%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:838
+msgid " Property: %Q=%Q"
+msgstr " Propriedade: %Q=%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:841
+msgid " No properties"
+msgstr " Nenhuma propriedade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:847
+#, c-format
+msgid "Total: %d matching users (of %d in the database)"
+msgstr "Total: %d utilizadores que coincidem (com %d na base de dados)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:197
+msgid "Manage Script-Based Addons"
+msgstr "Gerir Extras Baseados no Script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1155
+msgid "Configure"
+msgstr "Configurar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:225
+msgid "Show Help"
+msgstr "Mostrar Ajuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:231
+msgid "Uninstall"
+msgstr "Desinstalar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:243
+msgid "Install Addon..."
+msgstr "Instalar Extra..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:247
+msgid "More Addons..."
+msgstr "Mais Extras..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:333
+msgid "Do you really want to uninstall the addon \"%1\" ?"
+msgstr "Deseja realmente desinstalar o extra \"%1\"?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+msgid "Confirm addon uninstallation"
+msgstr "Confirmar desinstalação do extra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:354
+msgid "Please select the addon installation file"
+msgstr "Por favor seleccione o ficheiro de instalação do extra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:144
+msgid "%cAddon id %Q, version %Q%c"
+msgstr "%cExtra id %Q, versão %Q%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:145
+msgid "Name: %Q"
+msgstr "Nome: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:67
+msgid "Description: %Q"
+msgstr "Descrição: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:152
+#, c-format
+msgid "Total: %d addons installed"
+msgstr "Total: %d extras instalados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:192
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:571
+msgid "Uninstalling existing addon version %Q"
+msgstr "A desinstalar o extra existente versão%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:384
+msgid "The addon \"%1\" does not exist"
+msgstr "O extra \"%1\" não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:238
+msgid "The addon \"%1\" has no configure callback set"
+msgstr "O extra \"%1\" não tem nenhuma chamada definida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:285
+msgid "The addon \"%1\" has no help callback set"
+msgstr "O extra \"%1\" não tem nenhuma ajuda definida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:527
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:377
+msgid "Internal error: call a head-shrinker"
+msgstr "Erro interno: chame um psiquiatra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:536
+msgid "The specified version \"%Q\" is not a valid version string"
+msgstr "A versão indicada \"%Q\" não é uma versão de string válida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:542
+msgid "The specified KVIrc version \"%Q\" is not a valid version string"
+msgstr "A versão KVirc indicada \"Qs\" não é uma versão de string válida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:548
+msgid ""
+"This KVIrc executable is too old to run this addon (minimum version required "
+"is %Q)"
+msgstr ""
+"Este executável KVirc é demasiado antigo para correr este extra (a versão "
+"mínima requerida é %Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:553
+msgid "Attempting to register addon \"%Q\" with version %Q"
+msgstr "A tentar registar o extra \"%Q\" com a versão %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:565
+msgid ""
+"The script addon \"%Q\" already exists with version %Q which is higher than %"
+"Q"
+msgstr "O extra do script \"%Q\" já existe com a versão %Q que é maior que a %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:579
+msgid "Script registration failed"
+msgstr "Registo do script falhado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:584
+msgid "Script succesfully registered"
+msgstr "Script registado com suceso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:102
+#, c-format
+msgid "%s (%s) (%s:%u)"
+msgstr "%s (%s) (%s:%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:104
+#, c-format
+msgid "%s (%s)"
+msgstr "%s (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:107
+#, c-format
+msgid "%s (%s:%u)"
+msgstr "%s (%s:%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:109
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:112
+#, c-format
+msgid "[IDENT]: %s"
+msgstr "[IDENT]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:119
+msgid "Shutting down identd service (spontaneous action)"
+msgstr "A desligar o serviço de identificação (acção espontãnea)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:124
+msgid "Shutting down identd service (requested action)"
+msgstr "A desligar serviço de identificação (acção requerida)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:225
+msgid "Can't start the ident service : socket() failed"
+msgstr "Não é possível iniciar o serviço de identificação: socket() falhado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:231
+msgid "Can't start the ident service : async setting failed"
+msgstr "Não é possível iniciar o serviço de identificação: definição async falhada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:237
+msgid "Can't enable the ident service : can't setup the listen address"
+msgstr ""
+"Não é possível activar o serviçode identificação: nãoé possível configurar o "
+"endereço de escuta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:243
+msgid "Can't start the ident service : bind() failed"
+msgstr "Não é possível iniciar o serviço de identificação: bind() falhado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:249
+msgid "Can't start the ident service : listen() failed"
+msgstr "Não é possível iniciar o serviço de identificação: listen() falhado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:263
+msgid "Can't start the ident service on IpV6 : socket() failed"
+msgstr "Não é possível iniciar o serviço de identificação em IpV6: socket() falhado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:269
+msgid "Can't start the ident service on IpV6 : async setting failed"
+msgstr ""
+"Não é possível iniciar o serviço de identificação em IpV6: definição async "
+"falhada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:277
+msgid "Can't enable the ident service on IpV6 : can't setup the listen address"
+msgstr ""
+"Não é possível activar o serviço de identificaçãoem IpV6: não é possível "
+"configurar o endereço de escuta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:285
+msgid "Can't start the ident service on IpV6 : bind() failed"
+msgstr "Não é possível iniciar o serviço de identificação em IpV6: bind() falhado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:294
+msgid "Can't start the ident service on IpV6 : listen() failed"
+msgstr "Não é possível iniciar o serviço de identificação em IpV6: listen() falhado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:310
+msgid "Starting identd service (IpV4/V6 on separate namespaces)"
+msgstr "A iniciar o serviço de identificação (IpV4/V6 em nomes de espaços separados)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:313
+msgid "Starting identd service (IpV4/V6 in IpV6 namespace)"
+msgstr "A iniciar o serviço de identificação (IpV4/V6 no nome de espaço IpV6)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:318
+msgid "Starting identd service (IpV4)"
+msgstr "A iniciar o serviço de identificação (IpV4)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:322
+msgid "Service startup (IpV4)"
+msgstr "Inicio do serviço (IpV4)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:412
+msgid "Identd accepting connection"
+msgstr "conexão de aceitação da identificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:435
+msgid "Identd socket error : dropping connection"
+msgstr "Erro do socket de identificação: a desligar conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:440
+msgid "Identd connection closed by remote host"
+msgstr "Conexão de identificação fgechado por endereço remoto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:461
+msgid "Identd processing request"
+msgstr "Pedido de processamento de identificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:476
+msgid "Empty request (EOT ?)"
+msgstr "Pedido vazio (EOT ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:487
+msgid "Dropping connection (request too long)"
+msgstr "A desligar conexão (pedido demasiado longo)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:500
+msgid "Timed out while waiting for the request : dropping connection"
+msgstr "Tempo expirado ao esperar pelo pedido: a desligar conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/libkvilinks.cpp:74
+msgid "Links window alread open for this IRC context"
+msgstr "Janela de ligações já aberta para este contexto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:57
+msgid "Request Links"
+msgstr "Pedir Ligações"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:70
+msgid "Link"
+msgstr "Ligação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:71
+msgid "Hops"
+msgstr "Hops"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:72
+msgid "Description"
+msgstr "Descrição"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:90
+msgid "(None)"
+msgstr "(Nenhum)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:112
+msgid "Sent links request, waiting for reply..."
+msgstr "Pedido de ligações enviado, a aguardar resposta..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:115
+msgid "Cannot request links: No active connection"
+msgstr "Não é possível pedir ligações: Nenhuma conexão activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:128
+msgid "Links cannot be requested: Not connected to a server"
+msgstr "Não é possível pedir ligações: Não está conectado a um servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:153
+msgid "Links for %Q [IRC Context %u]"
+msgstr "Ligações para %Q [Contexto IRC %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:164
+msgid ""
+"<nobr><font color=\"%s\"><b>Links for %Q</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Ligações para %Q</b></font> <font color=\"%s\">"
+"[Contexto IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:194
+msgid "Received end of links."
+msgstr "Recebido fim das ligações."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:235
+#, c-format
+msgid "Broken link: Missing parent (%s) for %s (%d hops): %s (used /LINKS <mask> ?)"
+msgstr ""
+"Ligação danificada: Parêntesis (%s) em falta para %s (%d hops): %s (usado /"
+"LINKS <mascara> ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:238
+#, c-format
+msgid "%s: Parent link %s"
+msgstr "%s: Ligação parente %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:242
+msgid "Warning: No root link was sent by the server, the stats may be invalid."
+msgstr ""
+"Aviso: Não foi enviada nenhuma ligação de raiz pelo servidor, a estatística "
+"pode ser inválida."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:278
+msgid "%c%cLinks for %Q"
+msgstr "%c%cLigações para %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts listed"
+msgstr "Total de endereços listados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts in the network"
+msgstr "Total de endereços na rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:282
+#, c-format
+msgid "Wildcard servers (hubs?): %d"
+msgstr "Servidores com asteriscos (hubs?): %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:283
+msgid "Direct links: %d (~%d.%d %)"
+msgstr "Ligações directas: %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:284
+msgid "Close links (1 <= hops <= 3): %d (~%d.%d %)"
+msgstr "Ligações próximas (1 <= hops <= 3): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:285
+msgid "Mid-range links (4 <= hops <= 6): %d (~%d.%d %)"
+msgstr "Ligações de médio alcance (1 <= hops <= 3): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:286
+msgid "Distant links (7 <= hops): %d (~%d.%d %)"
+msgstr "Ligações distantes (7 <= hops): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:287
+#, c-format
+msgid "Broken (unknown) links: %d"
+msgstr "Ligações (desconhecidas) danificadas: %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:288
+#, c-format
+msgid "Maximum links per host: %d [%s]"
+msgstr "Ligações máximas por endereço: %d [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:289
+#, c-format
+msgid "Total links: %d"
+msgstr "Ligações totais: %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:290
+#, c-format
+msgid "Maximum hops: %d [%s]"
+msgstr "Hops máximo: %d [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:291
+#, c-format
+msgid "Average hops: ~%d.%d"
+msgstr "Média de Hops: ~%d.%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:294
+msgid "Incomplete LINKS result, no stats available"
+msgstr "Resultado de LINKS incompleto : nenhum estatística disponível"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:747
+msgid "You're not connected to a server"
+msgstr "Não está conectado a um servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:404
+#, c-format
+msgid "Processing link: %s"
+msgstr "A processar a ligação: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:419
+msgid "Broken message syntax, can't extract hops number, assuming 0"
+msgstr ""
+"Sintaxe de mensagem danificada, não é possível extrair o número de hops, "
+"assumir 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:86
+msgid "< &Back"
+msgstr "< &Voltar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:87
+msgid "&Next >"
+msgstr "&Seguinte >"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:282
+msgid "Finish"
+msgstr "Finalizar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:164
+msgid ""
+"<p><h2>Welcome :)</h2>This is your first time running this version of KVIrc."
+"<br>This wizard will guide you through the few steps required to complete "
+"the setup.<br><br>If you had a previous version of KVIrc installed, no "
+"worries. You will have a chance to preserve the old configuration.</"
+"p><p>Click \"<b>Next</b>\" to proceed.</p>"
+msgstr ""
+"<p><h2>Bem-vindo :)</h2>Esta é a primeira vez que executa esta versão do "
+"KVirc.<br>Este assistente irá guiá-lo através de alguns passos necessários "
+"para terminar a configuração.<br><br>Se tem uma versão KVirc anterior "
+"instalada, não há problema. Irá poder preservar a configuração antiga . </"
+"p><p>Clique em \"<b>Seguinte</b>\" para prosseguir.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:176
+msgid "Welcome to KVIrc"
+msgstr "Bem-vindo ao KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:187
+msgid ""
+"<p>All of the files in this distribution are covered by the GPL. In human "
+"terms this can be read as follows:<br><ul><li><b>KVIrc is free</b>, use it, "
+"have fun! <b>:)</b></li><li>If you use <b>any</b> part of KVIrc in your own "
+"project, you <b>must</b> release that project under the same license.</li></"
+"ul></p><p>The \"legalese\" version of the license is shown in the box below."
+"</p>"
+msgstr ""
+"<p>Todos os ficheiros nesta distribuição são cobertos pela GPL. Em termos "
+"humanos isto pode ser lido como se segue:<br><ul><li><b>O KVirc é livre</b>, "
+"use-o e divirta-se! <b>:)</b></li><li>Se usar <b>qualquer</b> parte do KVirc "
+"no seu próprio projecto, <b>deve</b> distribuir esse projecto sob a mesma "
+"licença.</li></ul></p><p>A versão \"legal\" da licença é mostrada na caixa "
+"em baixo.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:203
+msgid ""
+"Oops... can't find the license file.\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+"Oops...não consegue encontrar o ficheiro da licença.\n"
+"DEVE estar incluído na distribuição...\n"
+"Por favor comunique para <pragma em kvirc ponto net>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:211
+msgid "Dreaded License Agreement"
+msgstr "Temível Acordo de Licença"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:215
+msgid "KVIrc Setup"
+msgstr "Configuração KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:224
+msgid ""
+"<p>Please choose a folder for KVIrc to store its settings and other data, "
+"and another for downloaded files. Make sure that you have permission to "
+"write to both folders.<br><br>The suggested locations are fine in most "
+"cases, so if you don't know what is this about, just click \"<b>Next</b>\"."
+"<br><br>If you had a previous version of KVIrc installed, you can choose the "
+"existing directory for the settings, and your configuration will be "
+"preserved.</p>"
+msgstr ""
+"<p>Por favor escolha uma pasta para o KVirc guardar as suas definições e "
+"outros dados, e ainda para a transferência de ficheiros. Certifique-se que "
+"tem permissões de escrita em ambas as pastas.<br><br>As localizações "
+"sugeridas são boas na maior parte dos casos, se não sabe do que se trata, "
+"clique apenas em \"<b>Seguinte</b>\".<br><br>Se já teve uma versão do KVirc "
+"instalada, pode escolher o directório existente para as definições, e a sua "
+"configuração será preservada.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:234
+msgid "Application Folders"
+msgstr "Pastas de Aplicação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:238
+msgid "Store configuration in folder"
+msgstr "Gravar configuração na pasta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:239
+msgid "Use settings folder from previous installation"
+msgstr "Usar definições de pastas da anterior instalação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:251
+msgid "Use new settings folder"
+msgstr "Usar novas definições de pastas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:255
+msgid "Settings folder:"
+msgstr "Definições de pastas:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:281
+msgid "Download files to folder:"
+msgstr "Transferir ficheiros para a pasta:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:304
+msgid "All settings in shared program folder (portable)"
+msgstr "Todas as definições na pasta do programa partilhado (portável)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:325
+msgid ""
+"Please choose a Nickname.<br><br>Your nickname is the name that other IRC "
+"users will know you by. It can't contain spaces or punctuation. Some IRC "
+"networks will shorten your nickname if it is more than 32 characters long."
+"<br><br>If in doubt, just enter the first nick that comes to mind. You will "
+"be able to change it later in the Identity properties, or with the /NICK "
+"command."
+msgstr ""
+"Por favor escolha um Apelido.<br><br>A sua alcunha é o nome que o irá "
+"identificar no IRC perante outros utilizadores. Pode conter espaços ou "
+"pontuação. Algumas redes IRC irão encurtar a sua alcunha se tiver mais de 32 "
+"caracteres de comprimento. <br><br>Se tiver dúvidas, indique apenas a "
+"primeira alcunha que lhe vier à cabeça. Poderá mudá-la mais tarde nas "
+"propriedades de Identidade, ou com o comando /NICK."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:348
+msgid "This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr "Este campo é opcional e irá aparecer como parte da resposta CTCP USERINFO."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:353
+msgid "Profile"
+msgstr "Perfil"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:355
+msgid "Real name:"
+msgstr "Nome real:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:361
+msgid "Age:"
+msgstr "Idade:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:392
+msgid "Unspecified"
+msgstr "Não especificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:405
+msgid "Location:"
+msgstr "Localização:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:408
+msgid "Languages:"
+msgstr "Linguagens:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:491
+msgid ""
+"<p>Here you can choose how much KVIrc will integrate with your system."
+"<br><br>The default settings are fine for most users so if you're in doubt "
+"just click \"<b>Next</b>\" and go to the next screen.</p>"
+msgstr ""
+"<p>Aqui pode escolher como o KVirc se irá integrar no seu sistema. "
+"<br><br>As configurações predefinidas estão correctas para a maioria dos "
+"utilizadores, mas se estiver em dúvida clique em \"<b>Próximo</b>\" e vá "
+"para o próximo ecrã.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:501
+msgid "Desktop Integration"
+msgstr "Integração do Ecrã"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:504
+msgid "Make KVIrc default IRC client"
+msgstr "Tornar o KVirc o cliente IRC predefinido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:508
+msgid "Create desktop shortcut"
+msgstr "Criar atalho no ecrã"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:513
+msgid "Import server list from mIRC"
+msgstr "Importar lista de servidores do mIRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:727
+msgid "Choose an Old Configuration Folder - KVIrc Setup"
+msgstr "Escolha uma Pasta da Configuração Antiga- Configuração KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:736
+msgid "Do not overwrite folder? - KVIrc"
+msgstr "Não substituir pasta? - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:737
+msgid ""
+"A folder %1 seems to be not a valid KVIrc settings folder.Do you want to use "
+"it anyway?"
+msgstr ""
+"Uma pasta %1 não parece ser uma pasta de definições KVirc válida. Deseja usá-"
+"la na mesma?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:753
+msgid "Choose a Configuration Folder - KVIrc Setup"
+msgstr "Escolha uma Pasta de Configuração - Configuração KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:764
+msgid "Choose a Download Folder - KVIrc Setup"
+msgstr "Escolha uma Pasta de Transferências - Configuração KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:933
+msgid "Abort Setup - KVIrc Setup"
+msgstr "Abortar Configuração - Configuração KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:934
+msgid ""
+"You have chosen to abort the setup.<br>KVIrc cannot run until you complete "
+"this procedure.<br><br>Do you really wish to abort?"
+msgstr ""
+"Escolheu abortar a configuração.<br>O KVirc não pode ser executado até que "
+"complete este procedimento.<br><br>Deseja realmente abortar?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:965
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:996
+#, c-format
+msgid ""
+"Cannot create directory %s.\n"
+"You may not have write permission for that path. Please go back and choose "
+"another directory."
+msgstr ""
+"Não é possível criar o directório %s.\n"
+"Pode não ter permissões de escrita para essa localização. Por favor volte "
+"atrás e escolha outro directório."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+msgid "Package saved succesfully"
+msgstr "Paocte gravado com sucesso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:80
+msgid "Event"
+msgstr "Evento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1046
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:92
+msgid "&Export All To..."
+msgstr "&Exportar Todos Para..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:90
+msgid "Edit the event handler name."
+msgstr "Editar o nome do controlador de eventos."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:154
+msgid "&Enable Handler"
+msgstr "&Activar Manipulador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:158
+msgid "&Disable Handler"
+msgstr "&Desactivar Manipulador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:162
+msgid "Re&move Handler"
+msgstr "Re&mover Manipulador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:164
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:166
+msgid "&Export Handler To..."
+msgstr "&Exportar Manipulador Para..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:171
+msgid "&New Handler"
+msgstr "&Novo Manipulador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:190
+msgid "unnamed"
+msgstr "Sem nome"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:215
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:250
+msgid "default"
+msgstr "padrão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:314
+msgid "none"
+msgstr "nenhum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:318
+#, c-format
+msgid ""
+"\n"
+"\n"
+"\tEvent:\n"
+"\t\t%s\n"
+"\n"
+"\tParameters:\n"
+"%s"
+msgstr ""
+"\n"
+"\n"
+"\tEvento:\n"
+"\t\t%s\n"
+"\n"
+"\tParâmetros:\n"
+"%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+msgid "Unable to write to the event file."
+msgstr "Não é possível escrever no ficheiro de eventos."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+msgid "Unable to write to the events file."
+msgstr "Não é possível escrever no ficheiro de eventos."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:486
+msgid "Event Editor"
+msgstr "Editor de Eventos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:77
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:213
+msgid "Item"
+msgstr "Item"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:80
+msgid "Submenu"
+msgstr "Submenu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:83
+msgid "External Menu"
+msgstr "Menu Externo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:136
+msgid "Label"
+msgstr "Etiqueta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:93
+msgid "### Epilogue ###"
+msgstr "### Epílogo ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:94
+msgid "Epilogue"
+msgstr "Epílogo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:97
+msgid "### Prologue ###"
+msgstr "### Prólogo ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:98
+msgid "Prologue"
+msgstr "Prólogo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:198
+msgid "Popup name"
+msgstr "Nome do popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:202
+msgid "Test"
+msgstr "Teste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:230
+msgid "Text:"
+msgstr "Texto:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:236
+msgid ""
+"<center><b>Visible text</b><br>May contain identifiers that will be "
+"evaluated at popup call time.<br>For labels, this text can contain also "
+"limited HTML tags.</center>"
+msgstr ""
+"<center><b>Texto visível</b><br>Pode conter identificadores que irão ser "
+"avaliados na hora de chamada do popup.<br>Para rótulos, este texto pode "
+"conter também marcas HTML limitadas.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:239
+msgid "Condition:"
+msgstr "Condição:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:245
+msgid ""
+"<center><b>Boolean condition</b><br>Will be evaluated at popup call time in "
+"order to decide if this entry has to be shown.<br>An empty condition "
+"evaluates to true.</center>"
+msgstr ""
+"<center><b>Condição booleana</b><br>Irá ser avaliada na hora de chamada do "
+"popup para decidir se esta entrada tem que ser mostrada.<br>Uma condição "
+"vazia avalia para verdade.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:248
+msgid "Icon:"
+msgstr "Ícone:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:254
+msgid ""
+"<center><b>Icon identifier</b><br>May be an internal icon ID, an absolute "
+"path or a relative path.<br>Portable scripts should never use absolute paths."
+"</center>"
+msgstr ""
+"<center><b>Identificador de ícones</b><br>Pode ser um ID de um ícone "
+"interno, uma localização absoluta ou relativa.<br>Os scripts portáteis nunca "
+"devem usar localizações absolutas.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:257
+msgid "External menu:"
+msgstr "Menu externo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:263
+msgid ""
+"<center><b>External menu name</b><br>This allows to nest externally defined "
+"popup menus. The popup menu with the specified name will be looked up at "
+"menu setup time.</center>"
+msgstr ""
+"<center><b>Nome do menu externo</b><br>Isto permite aninhar (um dentro do "
+"outro) menus definidos externamente. O menu com o nome indicado irá ser "
+"procurado quando estiver configurar o menu.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:266
+msgid "Item Id:"
+msgstr "Id do Item:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:273
+msgid ""
+"<center><b>Item id</b><br>This will allow you to use delpopupitem later.</"
+"center>"
+msgstr ""
+"<center><b>Item id</b><br>Isto irá-lhe permitir usar mais tarde o "
+"delpopupitem later.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:386
+msgid "New Separator Below"
+msgstr "Novo Separador por Baixo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:388
+msgid "New Separator Above"
+msgstr "Novo Separador por Cima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:391
+msgid "New Separator Inside"
+msgstr "Novo Separador Dentro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:396
+msgid "New Label Below"
+msgstr "Nova Etiqueta por Baixo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:398
+msgid "New Label Above"
+msgstr "Nova Etiqueta porCima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:401
+msgid "New Label Inside"
+msgstr "Nova Etiqueta Dentro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:406
+msgid "New Item Below"
+msgstr "Novo Ítem por Baixo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:408
+msgid "New Item Above"
+msgstr "Novo Ítem por Cima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:411
+msgid "New Item Inside"
+msgstr "Novo Ítem Dentro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:416
+msgid "New Menu Below"
+msgstr "Novo Menu por Baixo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:418
+msgid "New Menu Above"
+msgstr "Novo Menu por Cima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:421
+msgid "New Menu Inside"
+msgstr "Novo Menu Dentro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:426
+msgid "New External Menu Below"
+msgstr "Novo Menu Externo por Baixo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:428
+msgid "New External Menu Above"
+msgstr "Novo Menu Externo por Cima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:431
+msgid "New External Menu Inside"
+msgstr "Novo Menu Externo Dentro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:451
+msgid "&Paste Below"
+msgstr "&Colar por Baixo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:456
+msgid "Paste Above"
+msgstr "Colar por Cima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:461
+msgid "Paste Inside"
+msgstr "Colar Dentro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:473
+msgid "New Menu Prologue"
+msgstr "Novo Menu Prólogo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:481
+msgid "New Menu Epilogue"
+msgstr "Novo Menu Epílogo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1042
+msgid "Popup"
+msgstr "Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1048
+msgid "&Export selected To..."
+msgstr "&Exportar Seleccionado Para..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1099
+msgid "&New Popup"
+msgstr "&Novo Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1105
+msgid "Re&move Popup"
+msgstr "Re&mover Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1112
+msgid "&Export Popup To..."
+msgstr "&Exportar Popup Para..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+msgid "Unable to write to the popup file."
+msgstr "Falha ao escrever no ficheiro do menu."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1382
+msgid "Popup Editor"
+msgstr "Editor de Menus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:62
+msgid "%cCore action: %Q"
+msgstr "%cAcção do núcleo: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:64
+msgid "%cUser action: %Q"
+msgstr "%cAcção do utilizador: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:65
+msgid "Label: %Q"
+msgstr "Rótulo: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:66
+msgid "Category: %Q"
+msgstr "Categoria: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:112
+msgid "The action \"%1\" is disabled"
+msgstr "A acção \"%1\" está desactivada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:259
+msgid "The action \"%1\" does not exist"
+msgstr "A acção \"%1\" não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:255
+msgid "The action \"%1\" is a core action and cannot be destroyed"
+msgstr "A acção \"%1\" é uma acção do núcleo e não pode ser destruída"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:392
+msgid "The switch -l requires -c"
+msgstr "A opção -l requer -c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:409
+msgid "The switch -s requires -w with a combination of flags 'c','x' and 'q'"
+msgstr "A opção -s requer -w com a combinação das opções 'c','x' e 'q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:420
+msgid "The action \"%1\" is already defined as core action and cannot be overridden"
+msgstr ""
+"A acção \"%1\" já está definida como acção do núcleo e não pode ser "
+"substituída"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:116
+msgid "Ops.. internal error"
+msgstr "Ops... erro interno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:125
+msgid "Manage File &Transfers"
+msgstr "Gerir Transferências de &Ficheiros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:67
+msgid "Choose Avatar - KVIrc"
+msgstr "Escolher Avatar - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:72
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+"Por favor escolha uma imagem Avatar. Pode usar uma localização completa para "
+"um ficheiro local ou para uma imagem na Web.<br>Se quiser usar um ficheiro "
+"local, clique no botão \"<b>Procurar</b>\" para procurar ficheiros locais."
+"<br>O URL completo para uma imagem (incluindo <b>http://</b>) pode ser "
+"indicado manualmente."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:283
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:358
+msgid "Internal error: I'm not in the user database ?"
+msgstr "Erro interno: Não estou na base de dados?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:245
+msgid "Can't set the current avatar to '%Q': failed to start the http transfer"
+msgstr ""
+"Não é possível definir o actual avatar para '%Q': falha ao iniciar a "
+"transferência http"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:249
+msgid "Can't set the current avatar to '%Q': can't load the image"
+msgstr ""
+"Não é possível definir o avatar actual para '%Q': não consegue carregar a "
+"imagem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:351
+msgid "Invalid timeout specified, using default"
+msgstr "Intervalo de tempo indicado inválido: usar predefinido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:389
+msgid "Can't add a file offer for file %Q (huh ? file not readable ?)"
+msgstr "Não é possível adicionar o ficheiro enviado %Q (huh ? ficheiro não legível ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:396
+msgid "Added %d secs file offer for file %Q (%Q) and receiver %Q"
+msgstr "Adicionado %d seg ao envio por ficheiro %Q (%Q) e receptor %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:403
+msgid "Notifying avatar '%Q' to %Q"
+msgstr "Avatar de notificação '%Q' para %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:55
+msgid "&Execute"
+msgstr "&Executar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:59
+msgid "Params:"
+msgstr "Parâmetros:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:107
+msgid "Script Tester"
+msgstr "Verificador de Scripts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:220
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:413
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:543
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:628
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:765
+msgid "The config file with id '%Q' is not open"
+msgstr "O ficheiro de configuração com o id '%Q' não está aberto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:538
+msgid ""
+"The config file '%Q' has been changed but is opened as read-only: changes "
+"will be lost"
+msgstr ""
+"O ficheiro de configuração '%Q' foi alterado mas está aberto como apenas "
+"leitura: as alterações serão perdidas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:583
+msgid "The config file with id '%Q' is read only"
+msgstr "O ficheiro de configuração com o id '%Q' é apenas de leitura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:178
+msgid "Colors"
+msgstr "Cores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:255
+msgid "Context sensitive help"
+msgstr "Ajuda de contexto sensitiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1167
+msgid "&Replace"
+msgstr "&Substituir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:268
+msgid "Find & Repalce"
+msgstr "Procurar e Substituir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1148
+msgid "Word to Find"
+msgstr "Palavra a Procurar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1156
+msgid "Replace with"
+msgstr "Substituir por"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1172
+msgid "&Replace in all Aliases"
+msgstr "&Substituir em todas as 'Alias'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1176
+msgid "&Findnext"
+msgstr "&Procurar Seguinte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1181
+msgid "&Replace(WIP)"
+msgstr "&Substituir(WIP)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:227
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:547
+msgid "The specified toolbar doesn't exist"
+msgstr "A barra de ferramentas indicada não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:424
+msgid "No action name/index specified"
+msgstr "Nenhum nome/índice de acção indicado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:441
+msgid "The action parameter didn't evaluate to an index"
+msgstr "O parâmetro da acção não avaliou para um índice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:455
+msgid "The toolbar does not contain the specified item"
+msgstr "A barra de ferramentas não contém o item indicado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:513
+msgid "The action \"%Q\" doesn't exist"
+msgstr "A acção \"%Q\" não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:31
+msgid "Torrent Client"
+msgstr "Cliente Torrent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:361
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:364
+msgid "Standalone Servers"
+msgstr "Servidores Únicos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:112
+msgid ""
+"%Q doesn't look like a servers.ini file.\n"
+"Import failed."
+msgstr ""
+"%Q não parece ser um ficheiro servers.ini.\n"
+"Importação falhada."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:122
+msgid "Choose a servers.ini file"
+msgstr "Escolha um ficheiro servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:146
+msgid "Remote mIRC servers.ini Import Wizard"
+msgstr "Assistente de Importação remota do servers.ini do mIRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:154
+msgid ""
+"<center><b>Welcome!</b><br><br>This wizard will guide you in the process of "
+"downloading a list of IRC servers. Please click \"<b>Next</b>\" to begin the "
+"operation.</center>"
+msgstr ""
+"<center><b>Bem-vindo!</b><br><br>Este assistente irá guiá-lo no processo de "
+"transferência de uma lista de servidores IRC. Por favor clique em "
+"\"<b>Seguinte</b>\" para iniciar a operação.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:161
+msgid ""
+"<center>Here you can modify the URL that the list will be downloaded from. "
+"In most cases the default URL is acceptable.</center>"
+msgstr ""
+"<center>Aqui pode modificar o URL de onde a lista será transferida. Na maior "
+"parte dos casos o URL predefinido é aceitável.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:169
+msgid "URL Selection"
+msgstr "Selecção URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:173
+msgid "Please wait while the list is being downloaded"
+msgstr "Por favor aguarde enquanto a lista é transferida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:179
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:195
+msgid "List Download"
+msgstr "Lista de Transferências"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:229
+msgid "Failed to start the server list transfer :("
+msgstr "Falha ao iniciar a transferência da lista de servidores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:245
+msgid "File downloaded: processing ..."
+msgstr "Ficheiro transferido: a processar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:255
+msgid "%1 servers imported succesfully"
+msgstr "%1 servidores importados com sucesso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:257
+msgid "No servers imported"
+msgstr "Nenhum servidor importado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:326
+msgid "Import from servers.ini"
+msgstr "Importar lista a partir de servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:333
+msgid "Import from http://www.mirc.co.uk/servers.ini"
+msgstr "Importar de http://www.mirc.co.uk/servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lineedit.cpp:372
+msgid "Unknown echo mode %Q"
+msgstr "Modo eco desconhecido%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:203
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:359
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:172
+msgid "Widget parameter is not an object"
+msgstr "O parâmetro widget não é um objecto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:230
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:250
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:449
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:485
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:177
+msgid "Widget parameter is not a valid object"
+msgstr "O parâmetro widget não é um objecto válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:95
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:263
+msgid "Widget object required"
+msgstr "Objecto widget requerido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:151
+msgid "Unknown dock area '%Q'"
+msgstr "Área de acoplagem desconhecida '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:321
+msgid "Unknown alignment: '%Q'"
+msgstr "Alinhamento desconhecido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:373
+msgid "Unknown style: '%Q'"
+msgstr "Estilo desconhecido: '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:84
+msgid "the toolbar cannot be a parent-widget!"
+msgstr "a barra de ferramentas não pode ser parente do widget!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:93
+msgid "The parent-widget isn't a MainWindow."
+msgstr "O parente do elemento (widget) não é uma nanela principal (MainWindow)."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:999
+msgid "The array passed as parameter must contain at least 4 elements"
+msgstr "O array passado como parâmetro deve conter pelo menos 4 elementos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1012
+msgid "One of the geometry array parameters is empty"
+msgstr "Um dos parâmetros da geometria do array está vazio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1017
+msgid "One of the geometry array parameters didn't evaluate to an integer"
+msgstr "Um dos parâmetros da geometria do array avaliou para um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:503
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1032
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1500
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1044
+msgid "The first parameter didn't evaluate to an array nor an integer"
+msgstr "O primeiro parâmetro não avaliou para um array ou para um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1419
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1476
+msgid "The array passed as parameter must contain at least 2 elements"
+msgstr "O array passado como parâmetro deve conter pelo menos 2 elementos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:451
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:486
+msgid "One of the array parameters is empty"
+msgstr "Um dos parâmetros do array está vazio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:456
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:491
+msgid "One of the array parameters didn't evaluate to an integer"
+msgstr "Um dos parâmetros do array não avaliou para um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:478
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:804
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:993
+msgid "The array passed as parameter must contain at least 3 elements"
+msgstr "O array passado como parâmetro deve conter pelo menos 3 elementos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:551
+msgid "Unknown orientation"
+msgstr "Orientação desconhecida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:789
+msgid "Pixmap or Widget parameter is not an object"
+msgstr "O parâmetro Pixmap ou Widget não é um objecto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:730
+msgid "Widget or Pixmap required "
+msgstr "Widget ou Pixmap requerido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:852
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:862
+msgid "Invalid mode '%Q'"
+msgstr "Modo inválido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:886
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1701
+msgid "Pixmap parameter is not an object"
+msgstr "O parâmetro pixmap não é um objecto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:891
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1706
+msgid "Pixmap object required"
+msgstr "Objecto pixmap requerido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1027
+msgid "$setGeometry() requires either an array as first parameter or four integers"
+msgstr "$setGeometry() requer um array como primeiro parâmetro ou quatro inteiros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:813
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1002
+msgid "One of the colors array parameters is empty"
+msgstr "Uma das cores dos parâmetros do array está vazia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:818
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1007
+msgid "One of the colors array parameters didn't evaluate to an integer"
+msgstr "Uma das cores dos parâmetros do array não avaliou para um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1020
+msgid "A string of 6 digits hex is required"
+msgstr "É precisa Uma string de 6 dígitos hex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:842
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1031
+msgid "Not an hex digits"
+msgstr "Não dígitos hex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1144
+msgid ""
+"$setForegroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+"$setForegroundColor requer um array como primeiro parâmetro, uma string hex "
+"ou três inteiros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1219
+msgid ""
+"$setBackgroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+"$setBackgroundColor requer um array como primeiro parâmetro, uma string hex "
+"ou três inteiros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1426
+msgid "One of the move array parameters is empty"
+msgstr "Um dos parâmetros do array de movimento está vazio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1431
+msgid "One of the move array parameters didn't evaluate to an integer"
+msgstr "Um dos parâmetros do array de movimento não avaliou para um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1438
+msgid "$move() requires either an array as first parameter or two integers"
+msgstr "$move() requer um array como primeiro parâmetro ou dois inteiros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1483
+msgid "One of the resize array parameters is empty"
+msgstr "Um dos parâmetros do array de redimensionamento está vazio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1488
+msgid "One of the resize array parameters didn't evaluate to an integer"
+msgstr "Um dos parâmetros do array de redimensionamento não avaliou para um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1495
+msgid "$resize() requires either an array as first parameter or two integers"
+msgstr "$resize() requer um array como primeiro parâmetro ou dois inteiros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1528
+msgid "Invalid parameters"
+msgstr "Parâmetros inválidos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1560
+msgid "Unknown widget flag '%Q'"
+msgstr "Opção widget desconhecida '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1592
+msgid "Unknown style '%Q'"
+msgstr "Estilo desconhecido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1622
+msgid "No Layout associated to the widget "
+msgstr "Nenhuma disposição associada ao widget "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:117
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:152
+msgid "Can't add a non-widget object"
+msgstr "Não é possível adicionar um objecto não widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1650
+msgid "Parent must be a widget object"
+msgstr "O parente tem que ser um objecto widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1715
+msgid "Null mask"
+msgstr "Máscara nula"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1740
+msgid "Unknown widget attribute '%Q'"
+msgstr "Atributo de elemento desconhecido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:382
+msgid "No such line number"
+msgstr "Número de linha não encontrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:500
+msgid "Unknown word wrap '%Q'"
+msgstr "Modo de mudança de linha dinâmica desconhecido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:519
+msgid "Unknown wrap policy'%Q'"
+msgstr "Politica de mudança de linha dinâmica desconhecida '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:850
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1039
+msgid "$setColor requires either an array as first parameter or three integers"
+msgstr "$setColor requer um array com primeiro parâmetro ou três inteiros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:975
+msgid "Unknown text format '%Q'"
+msgstr "Formato de texto desconhecido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1071
+msgid " I can't find the specified file '%Q'."
+msgstr " Não é possível encontrar o ficheiro indicado '%Q'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1078
+msgid " I cannot read the file %Q'."
+msgstr " Não é possível ler o ficheiro '%Q'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1113
+msgid "Unknown alignment '%Q'"
+msgstr "Alinhamento desconhecido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1131
+msgid "Unknown auto formatting mode '%Q'"
+msgstr "Modo de auto formatação desconhecido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1149
+msgid "Unknown vertical alignment '%Q'"
+msgstr "Alinhamento vertical desconhecido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:264
+msgid "pix '%Q' doesn't exists"
+msgstr "A imagem '%Q' não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:276
+msgid "Can't add a non - popupmenu object"
+msgstr "Não é possível adicionar um objecto que não menu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:302
+msgid "Doesn't a widget object"
+msgstr "Não é um objecto widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:182
+msgid "I can't find the specified file %Q."
+msgstr " Não é possível encontrar o ficheiro indicado %Q."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:222
+msgid "Destination parameter is not an object"
+msgstr "O parâmetro de destino não é um objecto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:228
+msgid "Destination must be a pixmap object"
+msgstr "O destino deve ser um objecto pixmap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:238
+msgid "Area dimensions are out of destination size "
+msgstr "As dimensões da área excedem o tamanho de destino"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:253
+msgid "Pixmap dimensions are out of destination size "
+msgstr "As dimensões do pixmap excedem o tamanho de destino "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:261
+msgid "Offset width area is out of pixmap size "
+msgstr "O comprimento da área está fora dos limites do tamanho do pixmap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:266
+msgid "Offset height area is out of pixmap size "
+msgstr "A altura área está fora dos limites do tamanho do pixmap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:121
+msgid "The widget must be a child of this hbox"
+msgstr "O elemento deve ser um filho desta hbox"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:191
+msgid "No string parameter given - using empty string"
+msgstr "Nenhuma string de parâmetro dada: a usar string vazia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:194
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:214
+#, c-format
+msgid "Item index [%d] is too big - defaulting to $count() - 1 [%d]"
+msgstr "O índice do item [%d] é demasiado antigo - a mudar para $count() - 1 [%d]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:333
+msgid "Invalid insertion Policy %Q"
+msgstr "Política de inserção inválida %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:136
+msgid "Unknown mode "
+msgstr "Modo desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:149
+msgid "Unknown segment style "
+msgstr "Estilo de segmento desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_process.cpp:221
+msgid "Process could not be starded."
+msgstr "Não foi possível iniciar o processo."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:279
+msgid "Invalid selection mode '%Q' assuming single"
+msgstr "Modo de selecção inválido '%Q', a assumir único"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:316
+msgid "Unknown text position '%Q'"
+msgstr "Posição de texto desconhecida '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:256
+msgid "Unknown tickmark '%Q'"
+msgstr "Marca desconhecida '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:271
+msgid "Unknown orientation '%Q'"
+msgstr "Orientação desconhecida '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:500
+msgid "No socket object specified"
+msgstr "Objecto socket não indicado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:506
+msgid "Invalid socket object specified (it doesn't inherit from socket)"
+msgstr "Objecto socket indicado inválido (não herdou do socket)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:518
+msgid "There is no connection to accept!"
+msgstr "Não há nenhuma conexão para aceitar!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:591
+#, c-format
+msgid "Value %d for port is out of range (values allowed are from 0 to 65535"
+msgstr ""
+"O valor %d da porta está fora do limite (os valores permitidos vão de 0 a "
+"65535)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:596
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:87
+msgid "Another connection in progress"
+msgstr "Outra conexão em progresso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:648
+msgid "No IPV6 support in this executable"
+msgstr "Sem suporte IPV6 neste executável"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:670
+msgid "Invalid IP address specified ('%Q')"
+msgstr "Endereço IP indicado inválido ('%Q')"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:89
+msgid "Socket creation failed"
+msgstr "Criação de socket falhada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:706
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:727
+msgid "Invalid socket address"
+msgstr "Endereço de socket inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:714
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:735
+msgid "Bind failure"
+msgstr "Junta (bind) falhada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:745
+msgid "Listen failure"
+msgstr "Escuta falhada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:812
+msgid "unknown"
+msgstr "desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:876
+msgid "Invalid ip address "
+msgstr "Endereço ip inválido "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:882
+msgid "Invalid ip address (%Q)"
+msgstr "Endereço ip inválido (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:906
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1013
+msgid "Failed to create the socket"
+msgstr "Falha ao criar o socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:918
+msgid "Failed to setup a nonblocking socket"
+msgstr "Falha ao configurar um socket de não bloqueio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:939
+msgid "Connect failure: "
+msgstr "Conexão falhada: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:967
+msgid "Connect attempt timed out"
+msgstr "Tentativa de conexão expirada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:993
+msgid "Can't start the DNS thread"
+msgstr "Não é possível iniciar a linha/thread DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:1143
+msgid "Too much unprocessed incoming data (you've left this socket unmanaged ?)"
+msgstr "Demasiados dados recebidos por processar (deixou este socket sem vigia?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:149
+msgid "Error in KVS class implementation: processing aborted"
+msgstr "Erro na implementação de classes KVS: processo abortado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:154
+msgid "Processing aborted"
+msgstr "Processamento abortado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:160
+#, c-format
+msgid "Error near line %d, column %d"
+msgstr "Erro perto da linha %d, coluna %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:162
+#, c-format
+msgid "Warning near line %d, column %d"
+msgstr "Aviso perto da linha %d, coluna %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:313
+msgid "XML support not available in the Qt library"
+msgstr "Suporte XML não disponível na livraria Qt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:491
+msgid "Not a widget object"
+msgstr "Não é um objecto widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:308
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:497
+msgid "Can't find the tab "
+msgstr "Não é possível encontrar a aba "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:522
+msgid "Unknown position 'Q%'"
+msgstr "Posição desconhecida 'Q%'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:123
+msgid "The widget must be a child of this vbox"
+msgstr "O elemento deve ser um filho desta vbox"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:276
+msgid "Not Enough Parameters"
+msgstr "Parâmetros insuficientes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:142
+msgid "The listviewitem cannot be parentless"
+msgstr "O item da lista de visualização não pode estar entre parêntesis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:152
+msgid ""
+"The parent of the listviewitem must be either another listviewitem or a "
+"listview"
+msgstr "O parente do listviewitem deve ser outro listviewitem ou um listview"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:403
+msgid "Pixmap object or image Id required"
+msgstr "Objecto pixmap ou imagem requerido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:413
+msgid ""
+"Error occured: the suitable file '%Q' is not of the correct format or it is "
+"not a valid icon number."
+msgstr ""
+"Ocorreu um erro: o ficheiro '%Q' não está no formato correcto ou não é um "
+"número de ícone válido."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:151
+msgid ""
+"The window identifier preceeded by WinId must be the first object in the "
+"search path"
+msgstr ""
+"O identificador da janela precedido por WinId deve ser o primeiro objecto na "
+"localização de procura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:167
+msgid "Failed to find one of the wrap path widgets (%Q::%Q)"
+msgstr ""
+"Não é possível encontrar um dos widgets de localização de envolvimento (%Q::%"
+"Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:176
+msgid "Failed to find the widget to wrap"
+msgstr "Não é possível encontrar o widget para envolver"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:119
+msgid "The parent of a layout must be a widget!"
+msgstr "O parente de um layout deve ser um widget!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:269
+msgid "Invalid resize mode defaulting to Auto"
+msgstr "Modo de redimensionamento inválido, a mudar para Auto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:324
+msgid "Unknown alignment"
+msgstr "Alinhamento desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:373
+msgid "Unknown orientation: "
+msgstr "Orientação desconhecida: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listview.cpp:320
+msgid "Invalid selection mode '%Q'"
+msgstr "Modo de selecção inválido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tbrowser.cpp:99
+msgid "I can't find the specified file '%Q'."
+msgstr "Não é possível encontrar o ficheiro indicado '%Q'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:121
+msgid "Can't add a null object"
+msgstr "Não é possível adicionar um objecto nulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:128
+msgid ""
+"Invalid object handle passed as parameter (the object is no longer "
+"existing ?)"
+msgstr "Gestão inválida de objecto passada como parâmetro (o objecto já não existe?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:134
+msgid "Object in invalid state"
+msgstr "Objecto em estado inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:140
+msgid "Can't set a non-widget object to be the main widget of a dock window"
+msgstr ""
+"Não é possível definir um objecto não widget para ser o widget principal de "
+"uma janela de acoplamento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:146
+msgid "The added widget is not a child of this dock window"
+msgstr "O elemento adicionado não provém desta janela de acoplamento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:271
+msgid "Invalid dock area specified"
+msgstr "Área de acoplagem indicada inválida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:181
+msgid "Class '%Q' is not definited"
+msgstr "A classe '%Q' não está definida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:257
+msgid "Inexisting target object for objects.connect"
+msgstr "Objecto de destino inexistente para objects.connect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:262
+msgid "Inexisting source object for objects.connect"
+msgstr "Objecto fonte inexistente para objects.connect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:444
+msgid "The class '%Q' does not exist"
+msgstr "A classe '%Q' não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:404
+msgid "Object does not exists"
+msgstr "O objecto não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:557
+msgid "Inexisting target object for objects.disconnect"
+msgstr "Objecto de destino inexistente para objects.disconnect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:562
+msgid "Inexisting source object for objects.disconnect"
+msgstr "Objecto fonte inexistente para objects.disconnect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:608
+msgid "Source is not an object"
+msgstr "A fonte não é um objecto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:614
+msgid "Destination is not an object"
+msgstr "O destino não é um objecto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:625
+msgid "Widget, Image or Pixmap required "
+msgstr "Widget, Imagem ou Pixmap requerido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:635
+msgid "Widget or Pixmap required"
+msgstr "Widget ou Pixmap requerido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:714
+msgid "One o more of background, foreground or destination aren't objects"
+msgstr "Um ou mais imagens de fundo, de primeiro plano ou de destino não são objectos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:720
+msgid "Pixmap objects required"
+msgstr "Objectos pixmap requeridos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:743
+msgid "Values for background are out of image size "
+msgstr "Os valores para imagens de fundo estão fora do tamanho da imagem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:748
+msgid "Values for foreground are out of image size "
+msgstr "Os valores para imagens de primeiro plano estão fora do tamanho da imagem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:226
+msgid "Empty filename string"
+msgstr "String de nome de ficheiro vazia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:271
+msgid "No such open mode: '%Q'"
+msgstr "Sem modo de abertura: '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:312
+msgid "File is not open!"
+msgstr "O ficheiro não está aberto!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:348
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:406
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:434
+msgid "File is not open !"
+msgstr "O ficheiro não está aberto!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:369
+msgid "Argument to long, using only first char"
+msgstr "Argumento muito longo, a usar apenas o primeiro caracter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:339
+msgid "Write error occured !"
+msgstr "Ocorreu um erro de escrita!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:352
+msgid "Read error occured !"
+msgstr "Ocorreu um erro de leitura!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:371
+msgid "An error occured !"
+msgstr "Ocorreu um erro!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:387
+msgid "Missing both encrypt and decrypt key: at least one is needed"
+msgstr "Faltam a encriptação e a chave: pelo menos um é necessário"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:168
+msgid "Error 0: Success ?"
+msgstr "Erro 0: Sucesso ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:169
+msgid "Unsupported crypt mode"
+msgstr "Modo de encriptação não suportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:170
+msgid "Unsupported direction"
+msgstr "Direcção não suportada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:171
+msgid "Unsupported key length"
+msgstr "Comprimento de chave não suportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:172
+msgid "Bad key data"
+msgstr "Dados da chave danificados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:173
+msgid "Engine not initialized"
+msgstr "Engenho não inicializado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:174
+msgid "Invalid direction for this engine"
+msgstr "Direcção inválida para este engenho"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:175
+msgid "Corrupted message data or invalid decrypt key"
+msgstr "Dados da mensagem corrompidos ou chave de desencriptação inválida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:52
+msgid "Unknown error"
+msgstr "Erro desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:184
+msgid "Ops...encrypt cipher not initialized"
+msgstr "Ops...cifra de encriptação não inicializada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:420
+msgid "Data buffer too long"
+msgstr "bufer de dados demasiado longo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:221
+msgid "Ops...decrypt cipher not initialized"
+msgstr "Ops...cifra de desencriptação não inicializada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:277
+msgid "The message is not a hexadecimal string: this is not my stuff"
+msgstr "A mensagem não é uma string hexadecimal: este não é o meu campo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:671
+msgid "The message is not a base64 string: this is not my stuff"
+msgstr "A mensagem não é uma string base64: este não é o meu campo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:676
+msgid "The message doesn't seem to be encoded with CBC Mircryption"
+msgstr "A mensagem não parece ser codificada com CBC Mircryption"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:712
+#, c-format
+msgid ""
+"Cryptographic engine based on the\n"
+"Advanced Encryption Standard (AES)\n"
+"algorithm called Rijndael.\n"
+"The text is first encrypted with rijndael\n"
+"and then converted to %s notation.\n"
+"The keys used are %d bit long and will be padded\n"
+"with zeros if you provide shorter ones.\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"See the rijndael module documentation\n"
+"for more info on the algorithm used.\n"
+msgstr ""
+"Motor de encriptação baseado no AES\n"
+"(Advanced Encryption Standard) algoritmo chamado\n"
+"Rijndael. O texto é primeiro encriptado com rijndael\n"
+"e depois convertido para notação %s.\n"
+"As chaves usadas são%d compridas e serão\n"
+"aconchegadas com zeros se as fornecer mais curtas.\n"
+"Se apenas uma chave é fornecida, este motor irá\n"
+"usá-la para encriptação e desencriptação de ambos.\n"
+"Veja o módulo de documentação para mais\n"
+"informação no algoritmo usado.\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:739
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:749
+msgid "hexadecimal"
+msgstr "hexadecimal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:759
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:779
+msgid "base64"
+msgstr "base64"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:790
+msgid ""
+"Popular cryptographic engine based on the\n"
+"old Blowfish encryption algorithm.\n"
+"The text is first encrypted with Blowfish \n"
+"and then converted to base64 notation.\n"
+"The keys used have variable length and\n"
+"are specified as character strings.\n"
+"You can specify keys long up to 56 bytes (448 bits).\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"This engine works in ECB mode by default:\n"
+"if you want to use CBC mode you must prefix\n"
+"your key(s) with \"cbc:\".\n"
+msgstr ""
+"Motor de encriptação popular baseado na\n"
+"antiga encriptação de algoritmo Blowfish.\n"
+"O texto é primeiro encriptado com Blowfish\n"
+"e depois convertido para a notação base64.\n"
+"As chaves usadas têm o comprimento duma\n"
+"variável e são indicadas como strings de\n"
+"caracteres. Pode indicar chaves com\n"
+"comprimento até 56 bytes (448 bits).\n"
+"Se apenas uma chave é indicada, este motor irá\n"
+"usá-la para encriptação e desencriptação de ambos.\n"
+"Este motor trabalha em modo ECB por omissão:\n"
+"se quiser usar o modo CBC deve ter as suas\n"
+"chaves com o prefixo\"cbc:\".\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:61
+msgid "Drop here the icons from the toolbars to remove them"
+msgstr "Largue aqui os ícones da barra de ferramentas para os remover"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:128
+msgid "ToolBar Properties"
+msgstr "Propriedades da Barra de Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:144
+msgid "Icon"
+msgstr "Ícone"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:160
+msgid "Id"
+msgstr "Id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:217
+msgid "Please choose the icon for the ToolBar"
+msgstr "Por favor escolha o ícone para a barra de ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "Invalid ToolBar Label"
+msgstr "Rótulo da Barra de Ferramentas Inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "The ToolBar Label can't be empty!"
+msgstr "O Rótulo da Barra de Ferramentas não pode estar vazio!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:256
+msgid "Duplicate ToolBar Id"
+msgstr "Duplicar Id da Barra de Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:257
+msgid ""
+"The specified ToolBar Id already exists.<br>Would you like KVIrc to assign "
+"it automatically (so it doesn't collide with any other toolbar) or you "
+"prefer to do it manually ?"
+msgstr ""
+"O Id indicado já existe.<br>Deseja que o KVirc o atribua automáticamente "
+"(para que não colida com outra barra de ferramentas) ou prefere-o fazer "
+"manualmente?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Manually"
+msgstr "Manualmente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Automatically"
+msgstr "Automaticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:278
+msgid "Hide Advanced"
+msgstr "Ocultar Avançado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:287
+msgid "Customize Toolbars"
+msgstr "Personalizar Barra de Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:296
+msgid "New ToolBar"
+msgstr "Nova Barra de Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:300
+msgid "Delete ToolBar"
+msgstr "Apagar Barra de Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:304
+msgid "Edit ToolBar"
+msgstr "Editar Barra de Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:312
+msgid "Export ToolBar"
+msgstr "Exportar Barra de Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:373
+msgid "Confirm ToolBar Deletion"
+msgstr "Confirmar remoção da Barra de Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:374
+msgid "Do you really want to delete toolbar \"%1\" ?"
+msgstr "Deseja realmente apagar a barra de ferramentas \"%1\"?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:397
+msgid "ToolBar Export"
+msgstr "Exportação de Barra de Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:398
+msgid "Do you want the associated actions to be exported with the toolbar ?"
+msgstr "Deseja que as acções associadas sejam exportadas com a barra de ferramentas?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+msgid "Unable to write to the toolbar file."
+msgstr "Não é possível escrever no ficheiro da barra de ferramentas."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:465
+msgid "Please specify the properties for the toolbar \"%1\""
+msgstr "Por favor indique as propriedades para a barra de ferramentas \"%1\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:491
+msgid "Please specify the properties for the new toolbar"
+msgstr "Por favor indique as propriedades para a nova barra de ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:493
+msgid "My ToolBar"
+msgstr "A Minha Barra de Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:63
+msgid "Window with ID '%Q' not found"
+msgstr "Janela com ID '%Q' não encontrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:67
+msgid "The specified window (%Q) is not a channel/query/DCC chat"
+msgstr "A janela indicada (%Q) não é um canal/privado/DCC chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:108
+msgid "File not found or empty"
+msgstr "Ficheiro não encontrado ou vazio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:114
+msgid "I can't open that file"
+msgstr "Não é possível abrir este ficheiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:122
+msgid "Could not paste file"
+msgstr "Não é possível colar o ficheiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:218
+msgid "The specified window (%Q) is not a channel/query/dcc"
+msgstr "A janela indicada (%Q) não é um canal/privado/dcc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:271
+msgid "Slow-paste ID:%d Window:%Q"
+msgstr "ID de Colagem-lenta:%d Janela:%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:240
+msgid "Plugin not found. Please check the plugin-name and path."
+msgstr ""
+"'Plugin' não encontrado. Por favor verifique o nome e localização do "
+"'plugin'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:247
+msgid "Error while loading plugin."
+msgstr "Erro ao carregar 'plugin'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:311
+msgid "This plugin does not export the desired function."
+msgstr "Este 'plugin' não exporta a função desejada."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:327
+msgid "The plugin has no function to free memory. This can result in Memory Leaks!"
+msgstr ""
+"O 'plugin' não tem função para libertar memória. Isto pode resultar em "
+"Perdas de Memória!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:209
+#, c-format
+msgid "No environment variable found, please don't use the %% in the request"
+msgstr "Nenhuma variável de ambiente encontrada, por favor não use %% no formulário"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:482
+msgid "Invalid DCOP parameter syntax"
+msgstr "Sintaxe do parâmetro DCOP inválida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:495
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:516
+msgid "The specified parameter is not an integer"
+msgstr "O parâmetro indicado não é um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:521
+#, c-format
+msgid "Unsupported DCOP parameter type %s"
+msgstr "Tipo de parâmetro DCOP não suportado %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:534
+msgid "DCOP call failed"
+msgstr "Chamada DCOP falhada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:599
+msgid "DCOP calls are available only when KDE support is compiled in"
+msgstr ""
+"As chamadas DCOP estão disponíveis apenas quando o suporte KDE é compilado "
+"dentro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1408
+#, c-format
+msgid "The window with id '%s' does not exist"
+msgstr "A janela com o ID '%s' não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:851
+msgid "Window type or 'all' expected as first parameter"
+msgstr "Tipo de janela ou 'all' como primeiro parâmetro esperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:938
+msgid "Invalid IRC context id '%Q'"
+msgstr "Id de contexto IRC inválido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1045
+msgid "The specified IRC context is not valid: creating a context free window"
+msgstr "O contexto IRC indicadoo não é válido: a criar uma janela de contexto livre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1119
+msgid "The specified window is not of type \"userwnd\""
+msgstr "A janela indicada não é do tipo \"userwnd\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1208
+msgid "Window doesn't have input widget"
+msgstr "A janela não tem um elemento de entrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1363
+msgid "The encrypt key wasn't a valid hexadecimal string"
+msgstr "A chave de encriptação não era uma string hexadecimal válida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1377
+msgid "The decrypt key wasn't a valid hexadecimal string"
+msgstr "A chave de desencriptação não era uma string hexadecimal válida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1414
+msgid "Both -n and -m switchess specified, -n takes precedence"
+msgstr "Ambas as opções -n e -m indicadas, -n tem precedência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1424
+msgid "No encrypt key specified: can't allocate engine"
+msgstr "Nenhuma chave de encriptação indicada: não é possível alocar o motor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1446
+msgid "Unknown engine error"
+msgstr "Erro de motor desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1449
+msgid "Failed to initialize the specified crypt engine: %Q"
+msgstr "Falha ao inicializar o motor de encriptação indicado: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1453
+msgid "The crypt engine \"%Q\" does not exist"
+msgstr "O motor de encriptação \"%Q\" não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1458
+msgid "This executable has been compiled without crypt support"
+msgstr "Este executável foi compilado sem suporte de encriptação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:138
+msgid "Current window is not a channel"
+msgstr "A janela actual não é um canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:87
+msgid "Raw Event"
+msgstr "Evento Raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:97
+msgid "Edit the raw event handler name."
+msgstr "Editar o nome do controlador de eventos raw."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:179
+msgid "&Add Raw Event..."
+msgstr "&Adicionar Eventos Raw..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "New Raw Event"
+msgstr "Novo Evento Raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "Enter the numeric code of the message (0-999)"
+msgstr "Digite o código númerico da mensagem (0-999)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+msgid "Unable to write to the raw event file."
+msgstr "Não é possível escrever no ficheiro de eventos raw."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Unable to write to the raw events file."
+msgstr "Não é possível escrever no ficheiro de eventos raw."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:512
+msgid "Raw Editor"
+msgstr "Editor Raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:219
+msgid "A really lame text transformation engine :D"
+msgstr "Um motor realmente coxo na transformação do texto :P"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:229
+msgid "A really lame text transformation engine: Light Version."
+msgstr "Um motor realmente coxo de transformação de texto :Versão Leve."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:82
+#, c-format
+msgid "Socket Spy [IRC Context %u]"
+msgstr "Socket Espião [Contexto IRC %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:92
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Socket Spy</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Socket Espião</b></font> <font color=\"%s\">"
+"[Contexto IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:112
+msgid "Socket open"
+msgstr "Socket aberto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:117
+msgid "Socket closed"
+msgstr "Socket fechado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:149
+msgid "Internal unique name for the action"
+msgstr "Nome interno único para a acção"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:151
+msgid "Label:"
+msgstr "Etiqueta:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:155
+msgid ""
+"Visible name for this action.<br>This string will be displayed to the user "
+"so it is a good idea to use $tr() here"
+msgstr ""
+"Nome visível para esta acção.<br>Esta string será mostrada para o utilizador "
+"então é boa ideiausar aqui $tr()"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:166
+msgid "Action code"
+msgstr "Código de acção"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:168
+msgid "Code"
+msgstr "Código"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:174
+msgid "Category:"
+msgstr "Categoria:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:178
+msgid "Choose the category that best fits for this action"
+msgstr "Escolha a categoria que seja melhor para esta acção"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:180
+msgid "Description:"
+msgstr "Descrição:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:184
+msgid ""
+"Visible short description for this action.<br>This string will be displayed "
+"to the user so it is a good idea to use $tr() here"
+msgstr ""
+"Pequena descrição visível para esta acção.<br>Esta string será mostrada para "
+"o utilizador então é boa ideia usar aqui $tr()"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:186
+msgid "Small Icon:"
+msgstr "Ícone Pequeno:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:194
+msgid ""
+"The small icon associated to this action.<br>It will appear at least in the "
+"popup menus when this action is inserted.<br>It should be 16x16 pixels."
+msgstr ""
+"O ícone pequeno associado a esta acção.<br>Irá aparecer pelo menos nos menus "
+"quando esta acção é inserida.<br>Deve ser 16x16 pixels."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:200
+msgid "Big Icon:"
+msgstr "Ícone Grande:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:209
+msgid ""
+"The big icon associated to this action.<br>It will appear at least in the "
+"toolbar buttons when this action is inserted.<br>It should be 32x32 pixels."
+msgstr ""
+"O ícone grande associado a esta acção.<br>Irá aparecer pelo menos nos botões "
+"da barra de ferramentas quando esta acção é inserida. <br>Deve ser 32x32 "
+"pixels."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:215
+msgid "Key Sequence:"
+msgstr "Sequência de Chave:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:219
+msgid ""
+"Optional keyboard sequence that will activate this action.<br>The sequence "
+"should be expressed as a string of up to four key codes separated by commas "
+"eventually combined with the modifiers \"Ctrl\",\"Shift\",\"Alt\" and \"Meta"
+"\".<br>Examples of such sequences are \"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl+X,"
+"Ctrl+C\" ..."
+msgstr ""
+"A sequência de teclado opcional que irá activar esta acção.<br>Esta "
+"sequência deve ser expressa como uma string de um até quatro códigos de "
+"chaves separados por vírgulas eventualmente combinadas com os modificadores "
+"\"Ctrl\",\"Shift\",\"Alt\" e \"Meta\".<br>Exemplos de tais sequências são "
+"\"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl+X, Ctrl+C\" ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:240
+msgid "Needs IRC Context"
+msgstr "Precisa de Contexto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:242
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window belongs to an irc context"
+msgstr ""
+"Marque esta opção apenas se esta acção deve estar activada quando a janela "
+"activa pertence ao contexto irc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:250
+msgid "Needs IRC Connection"
+msgstr "Precisa de Conexão IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:252
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window has an active IRC connection"
+msgstr ""
+"Marque esta opção se esta acção deve estar activada apenas quando a janela "
+"activa tem uma conexão IRC activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:260
+msgid "Enable at Login"
+msgstr "Permitir na autenticação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:261
+msgid ""
+"Check this option if this action should be enabled also during the login "
+"operations (so when the logical IRC connection hasn't been estabilished yet)"
+msgstr ""
+"Marque esta opção se esta acção deve estar activada também durante as "
+"operações de autenticação (enquanto a conexão IRC ainda não estiver "
+"estabelecida)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:265
+msgid "Enable Only in Specified Windows"
+msgstr "Permitir Apenas nas Janelas Especificadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:267
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is of a specified type"
+msgstr ""
+"Marque esta opção se esta acção deve estar activada apenas quando a janela "
+"activa é de um tipo específico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:271
+msgid "Enable in Console Windows"
+msgstr "Permitir nas Janelas de Consola"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:272
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a console"
+msgstr ""
+"Marque esta opção se esta acção deve estar activada apenas quando a janela "
+"activa é uma consola"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:277
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:299
+msgid "Only If There Are Selected Users"
+msgstr "Apenas Se Houver Utilizadores Selecionados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:278
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:300
+msgid ""
+"This will enable the action only if there are selected users in the active "
+"window"
+msgstr ""
+"Isto irá permitir a acção apenas se houver utilizadores seleccionados na "
+"janela activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:282
+msgid "Enable in Channel Windows"
+msgstr "Permitir nas Janelas do Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:283
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a channel"
+msgstr ""
+"Marque esta opção se esta acção deve estar activada apenas quando a janela "
+"activa é um canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:293
+msgid "Enable in Query Windows"
+msgstr "Permitir nas Janelas de Privados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:294
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a query"
+msgstr ""
+"Marque esta opção se esta acção deve estar activada apenas quando a janela é "
+"um privado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:304
+msgid "Enable in DCC Chat Windows"
+msgstr "Permitir nas Janelas DCC Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:305
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a dcc chat"
+msgstr ""
+"Marque esta opção se esta acção deve estar activada apenas quando a janela "
+"activa é um dcc chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:627
+msgid "Action"
+msgstr "Acção"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:680
+msgid "New Action"
+msgstr "Nova Acção"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:683
+msgid "Delete Actions"
+msgstr "Apagar Acções"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:686
+msgid "Export Actions..."
+msgstr "Exportar Acções..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Unable to write to the actions file."
+msgstr "Não é possível escrever no ficheiro de acções."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:823
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:824
+msgid "My Action"
+msgstr "Minha Acção"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:825
+msgid "Put here a short description of your action"
+msgstr "Ponha aqui uma breve descrição da sua acção"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:925
+msgid "Action Editor"
+msgstr "Editor de Acção"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:938
+msgid "Apply"
+msgstr "Aplicar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:63
+msgid "Outgoing traffic"
+msgstr "Tráfego de saida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:67
+msgid "Incoming traffic"
+msgstr "Tráfego de entrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_crypt.cpp:160
+msgid "Invalid crypt engine"
+msgstr "Motor de encriptação inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:296
+msgid "Directory"
+msgstr "Directório"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:315
+msgid "Socket"
+msgstr "Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:332
+msgid "Fifo"
+msgstr "Fifo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:349
+msgid "Block device"
+msgstr "Dispositivo de bloco"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:366
+msgid "Char device"
+msgstr "Dispositivo de caracteres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:429
+msgid "Octet stream (unknown)"
+msgstr "Fluxo de bytes (desconhecido)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_osinfo.cpp:413
+msgid "Unknown "
+msgstr "Desconhecido "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:181
+msgid "The specified network has no server entries"
+msgstr "A janela indicada não tem entradas de servidores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:239
+msgid ""
+"The server specification seems to be in the net:<string> but the network "
+"couln't be found in the database"
+msgstr ""
+"As especificações dos servidores parecem estar na rede:<string> mas não é "
+"possível encontrar a rede na base de dados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:261
+msgid ""
+"The server specification seems to be in the id:<string> form but the "
+"identifier coulnd't be found in the database"
+msgstr ""
+"As especificações dos servidores parecem estar na forma id: <string> mas não "
+"é possível encontrar o identificador na base de dados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:71
+msgid "Aborted"
+msgstr "Abortado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:96
+msgid "No request"
+msgstr "Sem pedido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:141
+msgid "No filename specified for the \"StoreToFile\" processing type"
+msgstr "Nenhum nome indicado para o tipo de processamento \"GuardarParaFicheiro\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:160
+msgid "Invalid URL: Missing hostname"
+msgstr "URL inválido: falta o nome do endereço"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:167
+msgid "Unsupported protocol %1"
+msgstr "Protocolo não suportado %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:189
+msgid "Unable to start the DNS lookup"
+msgstr "Não é possível iniciar a procura DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:194
+#, c-format
+msgid "Looking up host %s"
+msgstr "A localizar o endereço %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:210
+msgid "Host %s resolved to %Q"
+msgstr "Endereço %s resolvido para %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:246
+msgid "Unable to start the request slave thread"
+msgstr "Não é possível iniciar a linha secundária pedida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:251
+msgid "Contacting host %Q on port %u"
+msgstr "A contactar endereço %Q no porto %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:271
+msgid "Connection established, sending request"
+msgstr "Conexão estabelecida: a enviar pedido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:322
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:51
+msgid "Success"
+msgstr "Sucesso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:429
+msgid "Failed to rename the existing file, please rename manually and retry"
+msgstr ""
+"Falha ao renomear o ficheiro existente, renomeie manualmente e tente "
+"novamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:447
+msgid "Can't open file \"%Q\" for writing"
+msgstr "Não é possível abrir ficheiro \"%Q\" para escrita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:497
+#, c-format
+msgid "Invalid HTTP response: %s"
+msgstr "Resposta HTTP inválida: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:503
+#, c-format
+msgid "Received HTTP response: %s"
+msgstr "Resposta HTTP recebida: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:628
+msgid "Stream exceeding maximum length"
+msgstr "Stream a exceder o comprimento máximo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:661
+msgid "Header too long: exceeded 4096 bytes"
+msgstr "Cabeçalho demasiado comprido: excedeu 4096 bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:710
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:852
+msgid "Stream exceeded expected length"
+msgstr "A stream excedeu o comprimento previsto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:798
+msgid "Protocol error: invalid chunk size"
+msgstr "Erro de protocolo: tamanho inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:818
+msgid "Chunk header too long: exceeded 4096 bytes"
+msgstr "Cabeçalho demasiado longo: excedeu 4096 bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:987
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1193
+msgid "Operation timed out"
+msgstr "Tempo para operação terminado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1003
+msgid "Unexpected SSL error"
+msgstr "Erro SSL inesperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1016
+msgid "Failed to enter non blocking mode"
+msgstr "Falha ao entrar em modo: não bloquear"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1021
+msgid "Invalid target address"
+msgstr "Endereço de destino inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1056
+msgid "Failed to initialize the SSL context"
+msgstr "Falha ao inicializar o contexto SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1058
+msgid "Failed to initialize the SSL connection"
+msgstr "Falha ao inicializar a conexão SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1075
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:99
+msgid "Remote end has closed the connection"
+msgstr "A máquina remota fechou a conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1087
+msgid "Unrecoverable SSL error during handshake"
+msgstr "Erro SSL irrecuperável durante negociação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1272
+msgid "Operation timed out (while selecting for read)"
+msgstr "Tempo para operação terminado (enquanto selecciona para leitura)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1382
+msgid "This KVIrc executable has no SSL support"
+msgstr "Este executável KVIrc não tem suporte SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1147
+msgid "Back"
+msgstr "Voltar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:268
+msgid "Next"
+msgstr "Seguinte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:168
+msgid "%1 bytes"
+msgstr "%1 bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:172
+msgid "%1 KB"
+msgstr "%1 KB"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:176
+msgid "%1 MB"
+msgstr "%1 MB"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:181
+msgid "%1 GB"
+msgstr "%1 GB"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:185
+msgid "%1 TB"
+msgstr "%1 TB"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:620
+msgid "Internal error"
+msgstr "Erro interno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:54
+msgid "Unknown command"
+msgstr "Comando desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:55
+msgid "Missing closing brace"
+msgstr "Falta chaveta de fecho"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:56
+msgid "Unexpected end of command in string"
+msgstr "Fim de comando inesperado na string"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:57
+msgid "Unexpected end of command in dictionary key"
+msgstr "Fim de comando inesperado na chave do dicionário"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:58
+msgid "Switch dash without switch letter"
+msgstr "Mudança de traço/barra sem troca de letra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:59
+msgid "Unknown function"
+msgstr "Função desconhecida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:60
+msgid "Unexpected end of command in parenthesis"
+msgstr "Fim de comando inesperado nos parênteses"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:61
+msgid "Unexpected end of command in function parameters"
+msgstr "Fim de comando inesperado nos parâmetros da função"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:62
+msgid "Missing variable name"
+msgstr "Falta nome da variável"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:63
+msgid "Variable or identifier expected"
+msgstr "Variável ou identificador esperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:64
+msgid "Left operand is not a number"
+msgstr "O operando esquerdo não é um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:65
+msgid "Multiple operations not supported for numeric operators"
+msgstr "Operações múltiplas não suportadas para operadores numéricos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:67
+msgid "Modulo by zero"
+msgstr "Módulo por zero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:68
+msgid "Right operand is not a number"
+msgstr "O operando direito não é um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:69
+msgid "Unterminated expression (missing ')' ?)"
+msgstr "Expressão não terminada (Falta ')' ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:70
+msgid "Unterminated subexpression (Parenthesis mismatch)"
+msgstr "Subexpressão não terminada (os parênteses não correspondem)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:71
+msgid "Unexpected character"
+msgstr "Caracter inesperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:73
+msgid "No host to resolve"
+msgstr "Nenhum endereço para resolver"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:74
+msgid "(DNS Internal) Unsupported address family"
+msgstr "(DNS Interno) Família de endereços não suportada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:75
+msgid "Valid name but the host has no IP address"
+msgstr "Nome válido mas endereço sem endereço IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:76
+msgid "Unrecoverable nameserver error (crashed ?)"
+msgstr "Erro irrecuperável no servidor de nomes (bloqueado?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:77
+msgid "Dns temporaneous fault (try again)"
+msgstr "DNS falhado temporariamente (tente novamente)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:78
+msgid "(DNS Internal) Bad flags"
+msgstr "(DNS Interno) Opções inválidas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:79
+msgid "(DNS Internal) Out of memory"
+msgstr "(DNS Interno) Sem memória"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:80
+msgid "(DNS Internal) Service not supported"
+msgstr "(DNS Interno) Serviço não suportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:81
+msgid "Unknown node (host not found)"
+msgstr "Nó desconhecido (endereço não encontrado)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:82
+msgid "(DNS Internal) Unsupported socket type"
+msgstr "(DNS Interno) Tipo de socket não suportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:83
+msgid "Dns query failed"
+msgstr "Pesquisa DNS falhada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:84
+msgid "This KVIrc executable has no IPV6 support"
+msgstr "Este executável KVIrc não tem suporte IPV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:85
+msgid "Host not found"
+msgstr "Endereço não encontrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:86
+msgid "(DNS Internal) IPC failure (slave data corrupted)"
+msgstr "(Dns Interno) Falha IPC (dados slave corrompidos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:88
+msgid "Invalid IP address"
+msgstr "Endereço IP inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:90
+msgid "Failed to put the socket in non blocking mode"
+msgstr "Falha ao colocar o socket em modo não bloquear"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:91
+msgid "Bad file descriptor"
+msgstr "Descritor de ficheiros inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:92
+msgid "Out of address space"
+msgstr "Sem espaço de endereço"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:93
+msgid "Connection refused"
+msgstr "Conexão recusada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:94
+msgid "Kernel networking panic"
+msgstr "Rede kernel em pânico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:95
+msgid "Connection timed out"
+msgstr "Tempo de conexão esgotado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:96
+msgid "Network is unreachable"
+msgstr "A rede está inalcançável"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:97
+msgid "Broken pipe"
+msgstr "Pipe danificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:98
+msgid "Invalid proxy address"
+msgstr "Endereço proxy inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:100
+msgid "Invalid irc context id"
+msgstr "ID de contexto IRC inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:101
+msgid "Error in loading module"
+msgstr "Erro ao carregar módulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:102
+msgid "No such module command"
+msgstr "Comando do módulo não encontrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:103
+msgid "No such module function"
+msgstr "Função do módulo não encontrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:104
+msgid "Left operand is not a dictionary reference"
+msgstr "O operando esquerdo não é uma referência de dicionário"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:105
+msgid "Right operand is not a dictionary reference"
+msgstr "O operando direito não é uma referência de dicionário"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:106
+msgid "Missing object class name"
+msgstr "Falta nome da classe do objecto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:107
+msgid "No such object class"
+msgstr "Classe do objecto não encontrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:108
+msgid "No such object"
+msgstr "Objecto não encontrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:109
+msgid "No such object function"
+msgstr "Função do objecto não encontrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:110
+msgid "Invalid left operand"
+msgstr "Operando esquerdo inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:111
+msgid "Not enough parameters"
+msgstr "Parâmetros insuficientes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:112
+msgid "Integer parameter expected"
+msgstr "Parâmetro inteiro esperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:113
+msgid "Invalid parameter"
+msgstr "Parâmetro inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:114
+msgid "No such file"
+msgstr "Ficheiro não encontrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:115
+msgid "Open parenthesis expected"
+msgstr "Abertura de parênteses esperada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:116
+msgid "Open brace expected"
+msgstr "Abertura de chaveta esperada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:117
+msgid "Can't kill a builtin class"
+msgstr "Não é possível matar a classe interna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:118
+msgid "The SOCKSV4 protocol lacks IpV6 support"
+msgstr "O protocolo SOCKSV4 não tem suporte IPV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:119
+msgid "Unrecognized proxy reply"
+msgstr "Resposta proxy não reconhecida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:120
+msgid "Proxy response: auth failed: access denied"
+msgstr "Resposta proxy: auth falhada: acesso negado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:121
+msgid "Proxy response: No acceptable auth method: request rejected"
+msgstr "Resposta proxy: Método de autenticação não aceitável: pedido rejeitado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:122
+msgid "Proxy response: request failed"
+msgstr "Resposta Proxy: pedido falhado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:123
+msgid "Proxy response: ident failed"
+msgstr "Resposta Proxy: ident falhado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:124
+msgid "Proxy response: ident not matching"
+msgstr "Resposta Proxy: o ident não corresponde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:125
+msgid "Proxy response: general SOCKS failure"
+msgstr "Resposta Proxy: falha SOCKS geral"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:126
+msgid "Proxy response: connection not allowed"
+msgstr "Resposta Proxy: conexão não permitida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:127
+msgid "Proxy response: network unreachable"
+msgstr "Resposta proxy: rede inalcançável"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:128
+msgid "Proxy response: host unreachable"
+msgstr "Resposta proxy: endereço inalcançável"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:129
+msgid "Proxy response: connection refused"
+msgstr "Resposta proxy: conexão recusada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:130
+msgid "Proxy response: TTL expired"
+msgstr "Resposta proxy: TTL expirado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:131
+msgid "Proxy response: command not supported"
+msgstr "Resposta Proxy: comando não suportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:132
+msgid "Proxy response: address type not supported"
+msgstr "Resposta proxy: tipo de endereço não suportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:133
+msgid "Proxy response: invalid address"
+msgstr "Resposta proxy: endereço inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:134
+msgid "Invalid port number"
+msgstr "Número de porta inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:135
+msgid "Socket not connected"
+msgstr "Socket não conectado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:136
+msgid "Insufficient resources to complete the operation"
+msgstr "Recursos insuficientes para terminar a operação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:137
+msgid "Can't setup a listening socket : bind failed"
+msgstr "Não é possível configurar um socket de escuta: ligação falhada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:138
+msgid "Can't resolve the localhost name"
+msgstr "Não é possível resolver o nome do servidor local"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:139
+msgid "Unsupported image format"
+msgstr "Formato de imagem não suportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:140
+msgid "Can't open file for appending"
+msgstr "Não é possível abrir ficheiro para juntar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:542
+msgid "Can't open file for writing"
+msgstr "Não é possível abrir ficheiro para escrever"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:142
+msgid "File I/O error"
+msgstr "Erro E/S do Ficheiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:143
+msgid "Acknowledge error"
+msgstr "Erro reconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:982
+msgid "Can't open file for reading"
+msgstr "Não é possível abrir o ficheiro para leitura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:145
+msgid "Can't send a zero-size file"
+msgstr "Não é possível enviar um ficheiro de tamanho zero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:146
+msgid "Missing popup name"
+msgstr "Falta o nome do menu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:147
+msgid "'item', 'popup', 'label' or 'separator' keyword expected"
+msgstr "Palavra esperada 'item', 'popup', 'label' ou 'separator'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:148
+msgid "Self modification not allowed"
+msgstr "Auto modificação não permitida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:149
+msgid "UNUSED"
+msgstr "NÃO USADO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:150
+msgid "Feature not available"
+msgstr "Característica não disponível"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:151
+msgid "Unexpected characters in array index"
+msgstr "Caracteres inesperados no índice do array"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:152
+msgid "Unexpected end in expression"
+msgstr "Fim inesperado na expressão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:153
+msgid "Unexpected end in array index"
+msgstr "Fim inesperado no índice do array"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:154
+msgid "Connection thru HTTP proxy failed"
+msgstr "Conexão através do proxy HTTP falhada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:155
+msgid "Case , match , regexp , default or break keyword expected"
+msgstr "Case , match, regexp , padrão ou chave de ruptura esperada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:156
+msgid "Access denied"
+msgstr "Acesso negado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:157
+msgid "Address already in use"
+msgstr "Endereço já em uso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:158
+msgid "Can't assign the requested address"
+msgstr "Não é possível atribuir o endereço pedido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:159
+msgid "Connection reset by peer"
+msgstr "Conexão reiniciada pela outro máquina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:160
+msgid "Host unreachable (no route to host)"
+msgstr "Endereço inalcançável (no route to host)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:161
+msgid "Variable expected"
+msgstr "Variável esperada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:162
+msgid "Invalid array index: positive integer expected"
+msgstr "Índice do array inválido: positivo inteiro esperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:163
+msgid "listen() call failed"
+msgstr "Falha na chamada de escuta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:164
+msgid "This executable has been compiled without SSL support"
+msgstr "Este executável foi compilado sem suporte SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:165
+msgid "Secure Socket Layer error"
+msgstr "Erro no Layer Seguro do Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:166
+msgid "Slash (/) character expected"
+msgstr "Caracter barra (/) esperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:167
+msgid "Unknown string manipulation operation"
+msgstr "Operação de string desconhecida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:168
+msgid "Operation aborted"
+msgstr "Operação abortada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:169
+msgid "Unexpected token"
+msgstr "Simbolo inesperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:170
+msgid "Scope object already defined (unexpected @)"
+msgstr "Objecto Scope já definido (inesperado @)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:171
+msgid "There is no $this pointer in this scope (unexpected @)"
+msgstr "Não existe apontador $this neste scope (inesperado @)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:140
+msgid "Operation cancelled"
+msgstr "Operação cancelada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:170
+msgid "File write error"
+msgstr "Erro de escrita do ficheiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:176
+msgid "File read error"
+msgstr "Erro de leitura do ficheiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:324
+msgid "Packaging file %Q"
+msgstr "A empacotar ficheiro %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:779
+msgid "Failed to open a source file for reading"
+msgstr "Não é possível abrir o ficheiro fonte para leitura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:817
+msgid "Compression library initialization error"
+msgstr "Erro na inicialização da biblioteca de compressão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:394
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:828
+msgid "Compression library error"
+msgstr "Erro da biblioteca de compressão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:465
+msgid "Compression library internal error"
+msgstr "Erro interno na biblioteca de compressão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:485
+msgid "Error while compressing a file stream"
+msgstr "Erro ao comprimir um ficheiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:526
+msgid "Creating package..."
+msgstr "A criar pacote..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:527
+msgid "Writing package header"
+msgstr "A escrever cabeçalho do pacote"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:571
+msgid "Writing informational fields"
+msgstr "A escrever os campos de informação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:597
+msgid "Writing package data"
+msgstr "A escrever os dados do pacote"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:659
+msgid "The file specified is not a valid KVIrc package"
+msgstr "O ficheiro indicado não é um pacote KVirc válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:668
+msgid ""
+"The package has an invalid version number, it might have been created by a "
+"newer KVIrc"
+msgstr ""
+"O pacote tem um número de versão inválido, pode ter sido criado por um novo "
+"KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:714
+msgid "Invalid info field: the package is probably corrupt"
+msgstr "Campo de informação inválido: o pacote provavelmente está corrompido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:745
+msgid ""
+"The package contains compressed data but this executable does not support "
+"compression"
+msgstr "O pacote contém dados comprimidos mas este executável não suporta compressão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:771
+msgid "Failed to create the target directory"
+msgstr "Não é possível criar o directório de destino"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:784
+msgid "Unpacking file %Q"
+msgstr "A desempacotar ficheiro %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:916
+msgid "Error in compressed file stream"
+msgstr "Erro ao comprimir ficheiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:990
+msgid "Reading package..."
+msgstr "A ler pacote..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:991
+msgid "Reading package header"
+msgstr "A ler cabeçalho do pacote"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:998
+msgid "Reading package data"
+msgstr "A ler dados do pacote"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:1017
+msgid "Invalid data field: the package is probably corrupt"
+msgstr "Campo de dados inválido: o pacote provavelmente está corrompido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1127
+msgid "Select color"
+msgstr "Escolher cor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1128
+msgid "&Basic colors"
+msgstr "Cores &Básicas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1129
+msgid "&Custom colors"
+msgstr "&Cores personalizadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1130
+msgid "&Red"
+msgstr "&Vermelho"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1131
+msgid "&Green"
+msgstr "Ver&de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1132
+msgid "Bl&ue"
+msgstr "A&zul"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1133
+msgid "&Define Custom Colors >>"
+msgstr "&Definir Cores Personalizadas >>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1134
+msgid "&Add to Custom Colors"
+msgstr "&Adicionar Cores Personalizadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1136
+msgid "Select Font"
+msgstr "Seleccionar Tipo de Letra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1137
+msgid "&Font"
+msgstr "&Tipo de Letra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1138
+msgid "Font st&yle"
+msgstr "Es&tilo do Tipo de Letra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1139
+msgid "&Size"
+msgstr "T&amanho"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1140
+msgid "Sample"
+msgstr "Exemplo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1141
+msgid "Effects"
+msgstr "Efeitos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1142
+msgid "Stri&keout"
+msgstr "&Rasurado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1143
+msgid "&Underline"
+msgstr "&Sublinhado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1144
+msgid "Scr&ipt"
+msgstr "Scri&pt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1146
+msgid "Parent Directory"
+msgstr "Directório Principal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1148
+msgid "Forward"
+msgstr "Seguinte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1149
+msgid "Reload"
+msgstr "Recarregar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1150
+msgid "New Directory"
+msgstr "Novo Directório"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1151
+msgid "Bookmarks"
+msgstr "Favoritos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1152
+msgid "Add Bookmark"
+msgstr "Adicionar Favorito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1153
+msgid "&Edit Bookmarks"
+msgstr "&Editar Favoritos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1154
+msgid "New Bookmark Folder..."
+msgstr "Nova Pasta de Favoritos..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1156
+msgid "Sorting"
+msgstr "Ordenar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1157
+msgid "By Name"
+msgstr "Por Nome"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1158
+msgid "By Date"
+msgstr "Por Data"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1159
+msgid "By Size"
+msgstr "Por Tamanho"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1160
+msgid "Reverse"
+msgstr "Reverter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1161
+msgid "Directories First"
+msgstr "Directórios Primeiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1162
+msgid "Case Insensitive"
+msgstr "Não Distinguir Maiúsculas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1163
+msgid "Short View"
+msgstr "Vista Abreviada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1164
+msgid "Detailed View"
+msgstr "Vista Detalhada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1165
+msgid "Show Hidden Files"
+msgstr "Mostrar Ficheiros Escondidos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1166
+msgid "Show Quick Access Navigation Panel"
+msgstr "Mostrar Painel de Navegação Rápida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1167
+msgid "Show Preview"
+msgstr "Mostrar Previsão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1168
+msgid "Separate Directories"
+msgstr "Separar Directórios"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1169
+msgid "Often used directories"
+msgstr "Directórios muito usados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1170
+msgid "Desktop"
+msgstr "Ecrã"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1171
+msgid "Home Directory"
+msgstr "Pasta Pessoal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1172
+msgid "Floppy"
+msgstr "Disquete"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1173
+msgid "Temporary Files"
+msgstr "Ficheiros Temporários"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1174
+msgid "Network"
+msgstr "Rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1175
+msgid "New Directory..."
+msgstr "Novo Directório..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1176
+msgid "Delete"
+msgstr "Apagar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1177
+msgid "Thumbnail Previews"
+msgstr "Previsões em Miniatura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1178
+msgid "Large Icons"
+msgstr "Ícones Grandes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1179
+msgid "Small Icons"
+msgstr "Ícones Pequenos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1180
+msgid "Properties..."
+msgstr "Propriedades..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1181
+msgid "&Automatic Preview"
+msgstr "&Previsão Automática"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1182
+msgid "&Preview"
+msgstr "Pr&evisão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1183
+msgid "&Location:"
+msgstr "&Localização:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1184
+msgid "&Filter:"
+msgstr "&Filtro:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1185
+msgid "All Files"
+msgstr "Todos os Ficheiros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:104
+msgid "- d -- h -- m -- s"
+msgstr "- d -- h -- m -- s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:111
+#, c-format
+msgid "%u h %u m %u s"
+msgstr "%u h %u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:113
+#, c-format
+msgid "%u h %u%u m %u%u s"
+msgstr "%u h %u%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:118
+#, c-format
+msgid "%u m %u s"
+msgstr "%u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:120
+#, c-format
+msgid "%u m %u%u s"
+msgstr "%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:122
+#, c-format
+msgid "%u s"
+msgstr "%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:127
+#, c-format
+msgid "%u d %u h %u m %u s"
+msgstr "%u d %u h %u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:129
+#, c-format
+msgid "%u d %u%u h %u%u m %u%u s"
+msgstr "%u d %u%u h %u%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+msgid "Usage"
+msgstr "Uso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+msgid "message"
+msgstr "mensagem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:99
+msgid "-m: send a message instead of a notice"
+msgstr "-m: envia uma mensagem em vez de uma notícia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:100
+msgid "-w: send notice to all channel owners"
+msgstr "-w: envia uma noticia para todos os donos de canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:101
+msgid "-a: send notice to all channel admins"
+msgstr "-a: envia uma noticia para todos os administradores de canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:102
+msgid "-o: send notice to all channel ops"
+msgstr "-o: envia a noticia para todos os operadores de canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:103
+msgid "-h: send notice to all channel halfops"
+msgstr "-h: envia a noticia para os meios operadores de canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:104
+msgid "-v: send notice to all channel voices"
+msgstr "-v: envia a noticia para os utilizadores com voz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:105
+msgid "-q: quiet mode"
+msgstr "-q: modo silencioso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:138
+msgid "Sending wallop to"
+msgstr "A enviar wallop para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:314
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:410
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:493
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:535
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:593
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:653
+msgid "Usage:"
+msgstr "Uso:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:223
+msgid "reason"
+msgstr "razão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:272
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:416
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:440
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:599
+msgid "This is not a channel window"
+msgstr "Esta não é uma janela de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:581
+msgid "Unsupported type: $0"
+msgstr "Tipo não suportado: $0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:604
+msgid "Channel Owner"
+msgstr "Dono de Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:606
+msgid "Channel Administrator"
+msgstr "Administrador de Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:608
+msgid "Channel Operator"
+msgstr "Operador de Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:610
+msgid "Half Operator"
+msgstr "Semi Operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:612
+msgid "Voice"
+msgstr "Voz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:614
+msgid "User Operator"
+msgstr "Utilizador Operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:616
+msgid "Normal User"
+msgstr "Utilizador Normal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:641
+msgid "You must use DNS in an IRC context"
+msgstr "Precisa usar DNS num contexto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:647
+msgid "You must be connected to a server"
+msgstr "Precisa estar conectado num servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:664
+msgid "No such user: $0"
+msgstr "Utilizador não encontrado: $0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:33
+msgid "The default script has been successfully installed."
+msgstr "O script predefinido foi instalado com sucesso."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:34
+msgid "To connect to a server, type /server <server name>"
+msgstr "Para se conectar a um servidor, digite /server <nome do servidor>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:36
+msgid "Happy ircing :)"
+msgstr "Boas conversas :)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:15
+msgid "Options"
+msgstr "Opções"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:40
+msgid "Window operations"
+msgstr "Operações de janelas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMENAME@"
+msgstr "@NOMEDOTEMA@"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMEDESCRIPTION@"
+msgstr "@DESCRIÇÃODOTEMA@"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:18
+msgid "Stop Highlighting (Local)"
+msgstr "Parar Destaque (Local)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:23
+msgid "Start Highlighting (Local)"
+msgstr "Iniciar Destaque (Local)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:28
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:61
+msgid "Always Highlight"
+msgstr "Destacar Sempre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:30
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:55
+msgid "Highlight as"
+msgstr "Destacar como"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:66
+msgid "Stop Highlighting"
+msgstr "Parar Destaque"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:82
+msgid "is being ignored"
+msgstr "está a ser ignorado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:87
+msgid "is not being ignored"
+msgstr "não está a ser ignorado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:93
+msgid "Enable Ignore"
+msgstr "Activar Ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:98
+msgid "Ignore as..."
+msgstr "Ignorar como..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:240
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:282
+msgid "Ignore as"
+msgstr "Ignorar como"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:290
+msgid "Unignore"
+msgstr "Não ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:308
+msgid "is registered as"
+msgstr "está registado como"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:311
+msgid "is in the notify list"
+msgstr "está na lista de notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:314
+msgid "has a default avatar"
+msgstr "como um avatar predefinido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:317
+msgid "is not registered"
+msgstr "não está registado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:323
+msgid "Register"
+msgstr "Registos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:328
+msgid "Quick Registration"
+msgstr "Registo Rápido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:330
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:355
+msgid "Register as"
+msgstr "Registar como"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:361
+msgid "Edit Registration"
+msgstr "Editar Registo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:366
+msgid "Unregister"
+msgstr "Remover Registo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:373
+msgid "Add to Notify"
+msgstr "Adicionar Notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:378
+msgid "Remove from Notify"
+msgstr "Remover Notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:385
+msgid "Choose"
+msgstr "Escolher"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:387
+msgid "Choose Avatar Image File"
+msgstr "Escolher Ficheiro de Imagem Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:396
+msgid "Set as Default"
+msgstr "Posto como Predefinido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:401
+msgid "Clear Default"
+msgstr "Limpar Predefinido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:412
+msgid "Copy To Clipboard"
+msgstr "Copiar Para Área de Transferência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:433
+msgid "Ban"
+msgstr "Banir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1037
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1084
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1224
+msgid "Multiple Users"
+msgstr "Utilizadores Múltiplos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:577
+msgid "&Ban"
+msgstr "&Banir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1089
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1229
+msgid "idle time"
+msgstr "tempo inactivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:758
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1236
+msgid "&Information"
+msgstr "&Informação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1115
+msgid "DNS for"
+msgstr "DNS para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:499
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1120
+msgid "Mask for"
+msgstr "Máscara para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:505
+msgid "&Control"
+msgstr "&Controlo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:509
+msgid "O&wner"
+msgstr "&Dono"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:514
+msgid "&Deowner"
+msgstr "&Remover Dono"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:519
+msgid "&Administrator"
+msgstr "&Administrador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:524
+msgid "&Deadministrator"
+msgstr "R&emover Administrador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:529
+msgid "&Op"
+msgstr "&Operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:534
+msgid "&Deop"
+msgstr "&Remover Operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:539
+msgid "&Halfop"
+msgstr "&Semi Operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:544
+msgid "&Dehalfop"
+msgstr "&Remover Semi Operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:549
+msgid "&Voice"
+msgstr "&Voz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:554
+msgid "D&evoice"
+msgstr "R&emover Voz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:561
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "&Kick"
+msgstr "&Expulsar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+msgid "K&ick"
+msgstr "E&xpulsar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "With..."
+msgstr "Com..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Kick Reason"
+msgstr "Razão de expulsão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Enter a kick reason"
+msgstr "Indique a razão de expulsão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "Kick/Ban"
+msgstr "Expulsar/Banir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Kick/Ban Reason"
+msgstr "Razão Expulsar/Banir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Enter a kick/ban reason"
+msgstr "Indique a razão de expulsão/banimento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "&Kick/Ban"
+msgstr "&Expulsar/Banir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:604
+msgid "Configure ban mask..."
+msgstr "Configurar máscara de banir..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:612
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1263
+msgid "&Query"
+msgstr "&Privado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:625
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1136
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1276
+msgid "&Registration"
+msgstr "&Registo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1278
+msgid "&Highlight"
+msgstr "&Destacar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:629
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1280
+msgid "Ig&nore"
+msgstr "Ig&norar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:726
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1050
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1138
+msgid "Notify Avatar"
+msgstr "Avatar de Notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:705
+msgid "&Part"
+msgstr "&Sair"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:664
+msgid "Copy Channel Address"
+msgstr "Copiar Endereço do Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:749
+msgid "Channels"
+msgstr "Canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:693
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:753
+msgid "&Join Channels..."
+msgstr "&Entrar em Canais..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:700
+msgid "&Hop"
+msgstr "&Hop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:733
+msgid "Copy Channel URL to Clipboard"
+msgstr "Copiar URL do Canal para a Área de Transferência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:782
+msgid "l (Connections)"
+msgstr "I (Conexões)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:787
+msgid "m (Command Usage)"
+msgstr "m (Uso de Comandos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:792
+msgid "o (Operators)"
+msgstr "o (Operadores)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:797
+msgid "t (Connection stats ?)"
+msgstr "t (Estatística da conexão?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:802
+msgid "u (Uptime)"
+msgstr "u (Tempo de conexão)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:807
+msgid "y (y-Lines)"
+msgstr "y (Linhas-y)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:812
+msgid "z (Debug Stats?)"
+msgstr "z (Estatística Detalhada?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:909
+msgid "Chat with"
+msgstr "Conversar com"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:914
+msgid "Reverse Chat with"
+msgstr "Conversa Revertida com"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:919
+msgid "Secure Chat with"
+msgstr "Conversa Segura com"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:926
+msgid "Send to"
+msgstr "Enviar para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:931
+msgid "Secure send to"
+msgstr "Envio seguro para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:936
+msgid "Reverse Send to"
+msgstr "Envio Revertido para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:941
+msgid "Secure Reverse Send to"
+msgstr "Envio Revertido Seguro para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:948
+msgid "TDCC Send to"
+msgstr "Enviar TDCC para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:953
+msgid "TDCC Reverse Send to"
+msgstr "Envio TDCC Revertido para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:960
+msgid "Voice Chat"
+msgstr "Conversa com Voz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1134
+msgid "&Ignore"
+msgstr "&Ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1165
+msgid "Logging to"
+msgstr "A registar para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1167
+msgid "Flush Log File"
+msgstr "Apagar Ficheiro de Registo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1174
+msgid "Stop Logging"
+msgstr "Parar Registo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1179
+msgid "Not Logging"
+msgstr "Não Registar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+msgid "Log To Default File"
+msgstr "Registar Para Ficheiro Predefinido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+msgid "Include Existing Buffer"
+msgstr "Incluir Buffer Existente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+msgid "Log To..."
+msgstr "Registar Para..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1201
+msgid "Choose Log Filename"
+msgstr "Escolher Nome do Ficheiro de Registo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1282
+msgid "Notify avatar"
+msgstr "Avatar de notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:50
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$copyfiles must be a "
+"source directory"
+msgstr ""
+"[Instalador] O primeiro argumento para \\%installer->\\$copyfiles deve ser "
+"um directório do código fonte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:56
+#, c-format
+msgid ""
+"[Installer] The second argument to \\%installer->\\$copyfiles must be a file "
+"name or file regexp"
+msgstr ""
+"[Instalador] O segundo argumento para \\%installer->\\$copyfiles deve ser um "
+"nome de ficheiro ou uma expressão regular"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:62
+#, c-format
+msgid ""
+"[Installer] The third argument to \\%installer->\\$copyfiles must be a "
+"destination directory"
+msgstr ""
+"[Instalador] O terceiro argumento para \\%installer->\\$copyfiles deve ser "
+"um directório de destino"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:94
+msgid "[Installer] Failed to create directory"
+msgstr "[Instalador] Falha ao criar o directório"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:104
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$includefiles must be a "
+"source directory"
+msgstr ""
+"[Instalador] O primeiro argumento para \\%installer->\\$includefiles deve "
+"ser um directório do código fonte"
+
diff --git a/po/kvirc/kvirc_pt_BR.po b/po/kvirc/kvirc_pt_BR.po
new file mode 100644
index 00000000..4f821987
--- /dev/null
+++ b/po/kvirc/kvirc_pt_BR.po
@@ -0,0 +1,16842 @@
+# translation of kvirc_pt_BR.po to
+# translation of kvirc_pt_BR.po to
+# translation of kvirc_pt_BR.po to
+# translation of kvirc.po to Brazilian-Protugues
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Adilson Gonçalves Soares Junior <[email protected]>, 2004, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: kvirc_pt_BR\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-05-26 22:52+0000\n"
+"Last-Translator: \n"
+"Language-Team: <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:696
+msgid "&Cascade Windows"
+msgstr "Janela em &Cascata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:697
+msgid "Cascade &Maximized"
+msgstr "Cascata &maximizada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:700
+msgid "&Tile Windows"
+msgstr "Janelas &Lado a Lado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:703
+msgid "&Auto Tile"
+msgstr "Lado a Lado &Automático"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:708
+msgid "Anodine's Full Grid"
+msgstr "Grade-cheia do Anodine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:710
+msgid "Pragma's Horizontal 4-Grid"
+msgstr "4-Grades Horizontais do Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:712
+msgid "Pragma's Vertical 4-Grid"
+msgstr "4-Grades Verticais do Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:714
+msgid "Pragma's Horizontal 6-Grid"
+msgstr "6-Grades Horizontais do Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:716
+msgid "Pragma's Vertical 6-Grid"
+msgstr "6-Grades Verticais do Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:718
+msgid "Pragma's Horizontal 9-Grid"
+msgstr "9-Grades Horizontais do Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:720
+msgid "Pragma's Vertical 9-Grid"
+msgstr "9-Grades Verticais do Pragma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:726
+msgid "Tile Met&hod"
+msgstr "Mét&odos Lado a Lado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:729
+msgid "Expand &Vertically"
+msgstr "Expandir &verticalmente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:730
+msgid "Expand &Horizontally"
+msgstr "Expandir &Horizontalmente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:733
+msgid "Mi&nimize All"
+msgstr "Mi&nimizar Todas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_actiondrawer.cpp:64
+msgid "Script"
+msgstr "Script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:581
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:634
+msgid "Unknown"
+msgstr "Desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:128
+msgid "No topic message has been received from the server yet"
+msgstr "Nenhuma mensagem do tópico foi recebida do servidor ainda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:495
+msgid "Channel topic:"
+msgstr "Tópico do Canal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:513
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:201
+msgid "Set by"
+msgstr "Colocado pôr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:519
+msgid "Set on"
+msgstr "Posto em"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:525
+msgid "Double-click to edit..."
+msgstr "Dois cliques para editar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:530
+msgid "No topic is set"
+msgstr "Nenhum tópico definido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:533
+msgid "Double-click to set..."
+msgstr "Clique duas vezes para definir..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:587
+#, fuzzy
+msgid "History"
+msgstr "diretório"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:596
+msgid "Commit Changes"
+msgstr "Aplicar Mudanças"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:602
+msgid "Discard Changes"
+msgstr "Cancelar Mudanças"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:627
+msgid "Copy to clipboard"
+msgstr "Copiar para a Área de Transferência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:988
+msgid "There are active connections, are you sure you wish to "
+msgstr "Existem conexões ativas, tem certeza de que deseja "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:989
+msgid "quit KVIrc?"
+msgstr "fechar o KVIrc?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:587
+msgid "Confirmation - KVIrc"
+msgstr "Confirmação - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:557
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:590
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&Yes"
+msgstr "&Sim"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:556
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:589
+msgid "&Always"
+msgstr "&Sempre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:591
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&No"
+msgstr "&Não"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1090
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1106
+msgid "Show %1"
+msgstr "Exibir %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1134
+msgid "Customize..."
+msgstr "Personalizar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:149
+#, c-format
+msgid "The file %s already exists.<br>Do you wish to overwrite it?"
+msgstr "O arquivo %s já existe.<br>Deseja sobrescrever?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:150
+msgid "File Exists - KVIrc"
+msgstr "Arquivo já existe - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:132
+msgid "Channel mode"
+msgstr "Modos do Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:162
+msgid "Split View"
+msgstr "Visão Separada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:207
+msgid "User List"
+msgstr "Lista de Usuários"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:167
+#, fuzzy
+msgid "Ban Editor"
+msgstr "Editor de Raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:172
+#, fuzzy
+msgid "Ban Exception Editor"
+msgstr "Exibir Editor de Execeções de Bans"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:179
+#, fuzzy
+msgid "Invite Exception Editor"
+msgstr "Exibir Editor de Execeção de Convite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:184
+#, fuzzy
+msgid "Mode Editor"
+msgstr "Exibir Editor de Modos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "said something recently"
+msgstr "disse alguma coisa recentemente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "is talking"
+msgstr "está falando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:684
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:699
+msgid "and"
+msgstr "e"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "were talking recently"
+msgstr "esteve/estiveram falando recentemente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "are talking"
+msgstr "estão falando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:707
+msgid "and other %1 users"
+msgstr "e outros %1 usuários"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:738
+msgid "Dead channel"
+msgstr "Canal morto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:753
+msgid "operator"
+msgstr "operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:754
+msgid "operators"
+msgstr "operadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active user"
+msgstr "usuário ativo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active users"
+msgstr "usuários ativos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot user"
+msgstr "usuário quente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot users"
+msgstr "usuários quentes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owner"
+msgstr "proprietário do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owners"
+msgstr "proprietários do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrator"
+msgstr "Administrador do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrators"
+msgstr "Administradores do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operator"
+msgstr "meio-operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operators"
+msgstr "meio-operadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced user"
+msgstr "usuário com voice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced users"
+msgstr "Usuários com voice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operator"
+msgstr "usuário-operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operators"
+msgstr "usuários-operadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "user total"
+msgstr "usuário total"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "users total"
+msgstr "usuários totais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:931
+msgid "No activity"
+msgstr "Sem atividade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:932
+msgid "Minimal activity"
+msgstr "Atividade mínima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:933
+msgid "Very low activity"
+msgstr "Atividade muito baixa "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Might be low activity"
+msgstr "Pode ser baixa atividade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Low activity"
+msgstr "Baixa atividade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Might be medium activity"
+msgstr "Pode ser atividade média"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Medium activity"
+msgstr "Atividade média"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "Might be high activity"
+msgstr "Pode ser alta atividade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "High activity"
+msgstr "Alta atividade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Might be very high activity"
+msgstr "Pode ser atividade muito alta "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Very high activity"
+msgstr "Atividade muito alta "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Might be flooded with messages"
+msgstr "Pode ser floodado/inundado com mensagens"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Flooded with messages"
+msgstr "Flooded/inundado com mensagens"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:946
+msgid "human"
+msgstr "humano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:966
+msgid "[Dead channel]"
+msgstr "[Canal morto]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1020
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1122
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:459
+msgid " on "
+msgstr " em "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1086
+#, fuzzy
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %Q, no "
+"data sent to the server"
+msgstr ""
+"O motor de criptografia foi incapaz de criptografar a mensagem atual (%Q): %"
+"s, nenhum dado enviado para o servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1403
+msgid "Sent part request, waiting for reply..."
+msgstr "Enviado pedido de PART, aguardando resposta..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:610
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:647
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:293
+msgid "(Unknown)"
+msgstr "(desconhecido)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1484
+msgid "<b>Channel mode:</b>"
+msgstr "<b>Modos do Canal:</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1498
+#, c-format
+msgid "<br><b>Key:</b> %s"
+msgstr "<br><b>Chave:</b> %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1505
+#, c-format
+msgid "<br><b>Limit:</b> %s"
+msgstr "<br><b>Limite:</b> %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1590
+#, c-format
+msgid "Channel synchronized in %d.%d seconds"
+msgstr "Canal sincronizado em %d.%d segundos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:139
+msgid "Choose an Image File - KVIrc"
+msgstr "Escolha um arquivo de Imagem - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:284
+#, c-format
+msgid "Unloadable: %s"
+msgstr "Descarregado: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:260
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:90
+msgid "&Browse..."
+msgstr "&Procurar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:364
+msgid "Choose a File - KVIrc"
+msgstr "Escolha um Arquivo - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:382
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:593
+msgid "Choose a Directory - KVIrc"
+msgstr "Escolha um Diretório - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:764
+msgid "A&dd"
+msgstr "A&dicionar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:407
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:766
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:230
+msgid "Re&move"
+msgstr "Re&mover"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:602
+msgid "Sample Text"
+msgstr "Exemplo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:635
+msgid "Foreground"
+msgstr "Primeiro Plano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:639
+msgid "Transparent"
+msgstr "Transparente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:652
+msgid "Background"
+msgstr "Plano de fundo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:715
+msgid "Play"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:748
+#, fuzzy
+msgid "Channel name"
+msgstr "Modos do Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:749
+#, fuzzy
+msgid "Channel password"
+msgstr "Operador do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:177
+msgid "Toolbars"
+msgstr "Barras de ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:84
+msgid "Orientation"
+msgstr "Orientação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:86
+msgid "Top"
+msgstr "Topo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:87
+msgid "Left"
+msgstr "Esquerda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:88
+msgid "Right"
+msgstr "Direita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:89
+msgid "Bottom"
+msgstr "Abaixo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:91
+msgid "Detached"
+msgstr "Desatachado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:92
+msgid "Flat"
+msgstr "Liso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:94
+msgid "Icon Size"
+msgstr "Tamanho do Icone"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:96
+msgid "Small (22x22)"
+msgstr "Pequeno (22x22)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:97
+msgid "Large (32x32)"
+msgstr "Grande (32x32)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1333
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:463
+msgid "&Apply"
+msgstr "&Aplicar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:830
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:113
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:251
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:319
+msgid "Close"
+msgstr "Fechar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:102
+msgid "Channel Modes"
+msgstr "Modos de Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_debugwindow.cpp:47
+#, fuzzy
+msgid "Debug Messages"
+msgstr "Mensagem de ausência padrão:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:72
+msgid "CTCP Page - KVIrc"
+msgstr "CTCP Page - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:109
+msgid "You have been paged by"
+msgstr "Você foi paginado por"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:75
+#, fuzzy
+msgid "Mask editor - KVirc"
+msgstr "Editor de Máscaras"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:79
+msgid "New mask must match an *!*@* expression"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Ok"
+msgstr "Aceitar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:488
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:442
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:401
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:157
+msgid "Active Bans"
+msgstr "Bans Ativos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:161
+msgid "Active Invite Exceptions"
+msgstr "Exceções de convites ativas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:165
+msgid "Active Ban Exceptions"
+msgstr "Exceções de Bans ativas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:184
+#, fuzzy
+msgid "Filter:"
+msgstr "&Filtro:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:188
+#, fuzzy
+msgid "Use doubleclick to edit item"
+msgstr "Dois cliques para editar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:200
+msgid "Mask"
+msgstr "Máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:202
+msgid "Set at"
+msgstr "Posto em"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "Add"
+msgstr "Adicionar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:92
+msgid "Cryptography/text transformation"
+msgstr "Transforção de texto/criptográfica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:99
+msgid "Use the crypt engine"
+msgstr "Usar motor de criptografia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:120
+msgid "Enable encryption"
+msgstr "Habilitar criptografia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:123
+msgid "Encrypt key:"
+msgstr "Chave criptográfica:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:141
+msgid "Hex"
+msgstr "Hex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:132
+msgid "Enable decryption"
+msgstr "Habilitar descriptografia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:135
+msgid "Decrypt key:"
+msgstr "Chave descriptográfica:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_htmldialog.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:175
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:932
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1124
+msgid "OK"
+msgstr "Aceitar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:211
+msgid ""
+"If you dont want to encrypt a particular text line then just start it with "
+"the CTRL+P prefix"
+msgstr ""
+"Se não quiser criptografar uma linha de texto em particular então inicie-a "
+"com o prefixo CTRL+P"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:263
+msgid "Sorry, no crypt engines available"
+msgstr "Lamento, nenhum motror de criptografia disponível"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:283
+msgid "Crypt: Can't create an engine instance: crypting disabled"
+msgstr ""
+"Criptografia: Não foi possivel criar uma instância de motor: criptografia "
+"desabilitada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:294
+#, c-format
+msgid "Crypt: Can't initialize the engine :%s"
+msgstr "Criptografia: Não foi possível inicializar o motor: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:302
+msgid ""
+"Crypt: You have to enable encryption and/or decryption for the engine to work"
+msgstr ""
+"Criptografia: Você tem que permitir criptografia e/ou a descriptografia para "
+"queo motor trabalhe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:385
+msgid "Search tools"
+msgstr "Ferrametas de pesquisa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:539
+#, c-format
+msgid "### Log session terminated at %s ###"
+msgstr "### Sessão de log terminada em %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:713
+#, c-format
+msgid "### Log session started at %s ###"
+msgstr "### Sessão de log iniciada em %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:717
+msgid "### Existing data buffer:"
+msgstr "### Buffer de dados existente:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:721
+msgid "### End of existing data buffer."
+msgstr "### Fim do buffer de dados existentes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3894
+msgid "Hide Find Window"
+msgstr "Ocultar Janela de Procura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3896
+msgid "Show Find Window"
+msgstr "Exibir Janela de Procura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3898
+msgid "Zoom In"
+msgstr "Ampliar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3899
+msgid "Zoom Out"
+msgstr "Reduzir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3900
+msgid "Choose Temporary Font..."
+msgstr "Escolha a Fonte Temporária..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3901
+msgid "Choose Temporary Background..."
+msgstr "Escolha um Plano de Fundo Temporário..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3902
+msgid "Reset Temporary Background"
+msgstr "Restaurar Plano de Fundo Temporário..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3905
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:738
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:841
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1057
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1289
+msgid "Clear Buffer"
+msgstr "Limpar Buffer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3939
+msgid "Choose the background image..."
+msgstr "Escolha a imagem de fundo..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+msgid "Invalid image"
+msgstr "imagem inválida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+msgid "Failed to load the selected image"
+msgstr "Falhou ao carregar a imagem selecionada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4083
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4140
+#, c-format
+msgid "Pos %d"
+msgstr "Pos %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4156
+msgid "Not found"
+msgstr "Não encontrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4563
+msgid "Looking up host %Q..."
+msgstr "Localizando máquina %Q..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4926
+msgid "Double-click to open this link"
+msgstr "Clique duas vezes para abrir esta ligação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4946
+msgid "Unable to look it up hostname: Hostname appears to be masked"
+msgstr ""
+"Não foi possível encontrar o nome da máquina: o nome da máquina parece estar "
+"máscarado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4947
+msgid "Unable to look it up hostname: Unknown host"
+msgstr ""
+"Não foi possível encontrar o nome da máquina: nome de máquina desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4949
+msgid ""
+"Double-click to look up this hostname<br>Right-click to view other options"
+msgstr ""
+"Clique duas vezes para procurar este nome de máquina<br>Clique com o botão "
+"direito para ver outras opcões"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4972
+msgid "Server appears to be a network hub<br>"
+msgstr "O servidor parece ser um centro de rede (hub)<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4973
+msgid "Unknown server<br>"
+msgstr "Servidor desconhecido<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4976
+msgid "Double-click to read the MOTD<br>Right-click to view other options"
+msgstr ""
+"Clique duas vezes para ler o MOTD<br>Clique com o botão direito para outras "
+"opções"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4989
+msgid "Double-click to set<br>"
+msgstr "Clique duas vezes para definir<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5011
+msgid "You're not an operator: You may not change channel modes"
+msgstr "Você não é um operador: Você não pode alterar os modos do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5028
+msgid "Nothing known about %Q"
+msgstr "Não sabe-se nada sobre %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5029
+msgid "Nothing known about %Q (no connection)"
+msgstr "Não sabe-se nada sobre %Q (no connection)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5054
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>): "
+"<br><nowrap>+%Q (%u users)<hr>%Q</nowrap>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5060
+#, fuzzy
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)<hr>Double-"
+"click to join %Q<br>Right click to view other options"
+msgstr ""
+"Clique duas vezes para entrar %Q<br>Clique com o botão direito para outras "
+"opções"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5080
+msgid "<b>Double-click:</b><br>%Q"
+msgstr "<b>Clique duplo:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5085
+msgid "<b>Middle-click:</b><br>%Q"
+msgstr "<b>Clique com o botão do meio:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5090
+msgid "<b>Right-click:</b><br>%Q"
+msgstr "<b>Clique com botão direito:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1284
+msgid "Joined on <b>%1</b>"
+msgstr "Entrou no <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1296
+msgid "Quiet for <b>%1h %2m %3s</b>"
+msgstr "Silêncioso por <b>%1h %2m %3s</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1097
+msgid "No connection"
+msgstr "Desconectado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:304
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:3
+msgid "IRC Context"
+msgstr "Contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:319
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:365
+#, c-format
+msgid "Lag: %d.%d%d"
+msgstr "Lag: %d.%d%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:393
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:379
+msgid "Lag: ?.??"
+msgstr "Lag: ?.??"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:326
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:637
+msgid "No IRC context"
+msgstr "Sem contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:633
+msgid "Not connected"
+msgstr "Desconectado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:377
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1117
+msgid "away"
+msgstr "ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:397
+msgid "In progress..."
+msgstr "Em progresso..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:458
+#, fuzzy
+msgid "Crypting"
+msgstr "Criptografia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:466
+msgid "Private Text Encoding"
+msgstr "Codificação de Texto Privada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:566
+msgid "Ops...I've accidentally lost the crypting engine..."
+msgstr "Opa... eu perdi acidentalmente o motor de crypting..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:582
+msgid "List of window types available in this release of KVIrc:"
+msgstr "Lista dos tipos da janela disponíveis nesta liberação de KVIrc:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:763
+msgid "Use Default Encoding"
+msgstr "Usar Codificação Padrão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:775
+msgid "Standard"
+msgstr "Padrão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:776
+msgid "Smart (Send Local)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:777
+msgid "Smart (Send UTF-8)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:810
+msgid "&Undock"
+msgstr "&Desacoplar a janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:813
+msgid "&Dock"
+msgstr "&Acoplar a janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:818
+msgid "Mi&nimize"
+msgstr "Mi&nimizar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:821
+msgid "Ma&ximize"
+msgstr "Ma&ximizar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:824
+msgid "&Restore"
+msgstr "&Restaurar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:837
+msgid "Text &Encoding"
+msgstr "&Codificação do Texto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:842
+msgid "Sa&ve Window Properties"
+msgstr "Sal&var Propriedades da Janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:86
+msgid "Taskbar"
+msgstr "Barra de tarefas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:91
+#, fuzzy
+msgid "taskbar"
+msgstr "Barra de tarefas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1162
+#, fuzzy
+msgid "Sort"
+msgstr "Ordenar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1163
+#, fuzzy
+msgid "Reverse Sort"
+msgstr "Enviar arquivo em modo Reverso para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1223
+msgid "Window List"
+msgstr "Lista de Janelas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:203
+#, fuzzy
+msgid "Apply to all IRC Contexts"
+msgstr "Sem contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:227
+msgid "Away Indicator"
+msgstr "Indicador de Ausência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:255
+msgid "Away since"
+msgstr "Ausente desde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:259
+msgid "Double click to leave away mode"
+msgstr "Clique duas vezes para deixar o modo ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:261
+msgid "Not away"
+msgstr "Não ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:263
+msgid "Double click to enter away mode"
+msgstr "Clique duas vezes para entrar em modo ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:330
+#, c-format
+msgid "Last checked %d mins %d secs ago"
+msgstr "Última verificação à %d mins %d segs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:332
+msgid "Lag measure not available yet"
+msgstr "Medição de Lag ainda não disponível"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:336
+msgid "Lag meter engine disabled"
+msgstr "Medidor de Lag desativado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:338
+msgid "Double click to enable it"
+msgstr "Clique duas vezes para ativar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:391
+msgid "Lag Indicator"
+msgstr "Indicador de Lag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:461
+msgid "Simple Clock"
+msgstr "Relógio Simples"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:512
+#, fuzzy
+msgid "Show total connection time"
+msgstr "Exibir o tempo de sincronização do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:536
+msgid "Connection Timer"
+msgstr "Cronometro da Conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:560
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:87
+msgid "Separator"
+msgstr "Separador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:820
+msgid "Clipboard"
+msgstr "Área de Transferência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line break"
+msgstr "quebra de linha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line breaks"
+msgstr "quebras de linha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:845
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:439
+msgid "Cu&t"
+msgstr "Recor&tar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:847
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:445
+msgid "&Copy"
+msgstr "&Copiar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:849
+msgid "&Paste"
+msgstr "C&olar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:851
+msgid "Paste (Slowly)"
+msgstr "Colar (Devagar)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:856
+msgid "Paste &File"
+msgstr "Colar &Arquivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:863
+msgid "Stop Paste"
+msgstr "Parar Colagem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:865
+msgid "Clear"
+msgstr "Limpar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:868
+msgid "Select All"
+msgstr "Selecionar todos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:897
+#, fuzzy
+msgid "Insert Icon"
+msgstr "Ação do Usuário"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1926
+msgid "%d matches: %Q"
+msgstr "%d combina com: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1930
+msgid "No matches"
+msgstr "Sem combinaçoes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2657
+msgid "Show History<br>&lt;Ctrl+PageUp&gt;"
+msgstr "Exibir Histórico<br>&lt;Ctrl+PageUp&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2648
+msgid "Input History Disabled"
+msgstr "Entrada de Histórico Desativada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2370
+msgid "Show Icons Popup<br>&lt;Ctrl+I&gt;<br>See also /help texticons"
+msgstr "Exibir Popup de Ícones<br>&lt;Ctrl+I&gt;<br>Ver também /help texticons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2382
+msgid "User friendly commandline mode<br>See also /help commandline"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2394
+#, fuzzy
+msgid "Multi-line Editor<br>&lt;Alt+Backspace&gt;"
+msgstr "Editor Multi-linha<br>&lt;Ctrl+Backspace&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2498
+msgid "Confirm Multiline Message"
+msgstr "Confirmar Mensagem Multilinhas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2499
+msgid ""
+"You're about to send a message with %1 lines of text.<br><br>There is "
+"nothing wrong with it, this warning is<br>here to prevent you from "
+"accidentally sending<br>a really large message just because you didn't edit "
+"it<br>properly after pasting text from the clipboard.<br><br>Do you want the "
+"message to be sent?"
+msgstr ""
+"Você está prestes a enviar uma mensagem com %1 linhas de texto.<br><br>Não "
+"há nenhum problema, este aviso <br>aqui é para o prevenir enviar de "
+"acidentalmente <br> uma mensagem muito comprida só porque não a editou<br> "
+"devidamente antes de ter colado o texto da área de transferência. "
+"<br><br>Deseja que a mensagem seja enviada?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2505
+msgid "Yes, always"
+msgstr "Sim, sempre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2506
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:399
+msgid "Yes"
+msgstr "Sim"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:806
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:375
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:400
+msgid "No"
+msgstr "Não"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2556
+#, fuzzy
+msgid "<Ctrl+Return>; submits, <Alt+Backspace>; hides this editor"
+msgstr "&lt;Ctrl+Return&gt; envia, &lt;Ctrl+Backspace&gt; Oculta este editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:126
+#, fuzzy
+msgid "Address:"
+msgstr "Endereço IP:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:140
+msgid "Current IRC URI"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:156
+msgid "Notify List"
+msgstr "Lista de Notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:263
+msgid "Part All Channels"
+msgstr "Sair de todos os canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:265
+msgid "Close All Queries"
+msgstr "Fechar todos os queries"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:270
+msgid "Unhighlight All Windows"
+msgstr "Remover destaque de todas as janelas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:273
+msgid "Unhighlight All Channels"
+msgstr "Remover destaque de todos os canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:275
+msgid "Unhighlight All Queries"
+msgstr "Remover Destaque de Todos os Queries"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:387
+#, fuzzy
+msgid "Gender:"
+msgstr "Genérico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:394
+#, fuzzy
+msgid "Male"
+msgstr "Valor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:393
+msgid "Female"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:375
+msgid "Registered as"
+msgstr "Registrado como"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:381
+#, fuzzy
+msgid "(Matched by"
+msgstr "Coincide por"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:393
+msgid "On <b>"
+msgstr "Em <b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:402
+msgid "Using server <b>%1</b>"
+msgstr "Usando servidor <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:407
+msgid "%1 hops"
+msgstr "%1 saltos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:417
+msgid "Probably Away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:493
+msgid ""
+"KVIrc can accept only irc://, irc6://, ircs:// or irc6s:// URL's\n"
+"Your URL is invalid. Check spelling and try again"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:554
+msgid ""
+"You have just attempted to close a console window with an active connection "
+"inside.\n"
+"Are you sure you wish to terminate the connection?"
+msgstr ""
+"Você acabou de tentar fechar uma janela de console com uma conexão ativa "
+"dentro.\n"
+"Tem certeza de que quer terminar conexão?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:588
+msgid ""
+"You have just attempted to close the last console window.\n"
+"Are you sure you wish to quit KVIrc?"
+msgstr ""
+"Você acaba de tentar fechar a janela do último console.\n"
+"Tem certeza de que quer fechar o KVirc?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1019
+msgid "Failed to load avatar with name \"%Q\" and local path \"%Q\""
+msgstr "Falha ao carregar avatar com o nome \"%Q\" e caminho local \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:624
+msgid "Connection in progress..."
+msgstr "Conexão em progresso..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1099
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:630
+msgid "Login in progress..."
+msgstr "Login em progresso..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1179
+msgid "channel"
+msgstr "Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1180
+msgid "channels"
+msgstr "Canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1181
+msgid "query"
+msgstr "query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1182
+msgid "queries"
+msgstr "queries"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1238
+msgid "Connected since"
+msgstr "Conectado desde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1252
+msgid "Online for"
+msgstr "Conectado durante"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1264
+msgid "Server idle for"
+msgstr "Servidor inativo durante"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:50
+msgid "This option is also available as"
+msgstr "Esta opção também está disponível como"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:683
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:275
+msgid "Advanced..."
+msgstr "Avançado..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:69
+msgid "Scri&pting"
+msgstr "Scri&pts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:74
+msgid "&Tools"
+msgstr "&Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:81
+msgid "&Settings"
+msgstr "&Configurações"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:83
+msgid "&Window"
+msgstr "&Janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:125
+msgid "&Help"
+msgstr "&Ajuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:119
+msgid "&Help Browser (Panel)"
+msgstr "&Navegador de Ajuda(Painel)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:121
+msgid "Help Browser (&Window)"
+msgstr "Navegador de Ajuda(&Janela)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:124
+msgid "&Tip of the Day"
+msgstr "&Dica do dia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:127
+msgid "About &KVIrc"
+msgstr "Sobre o &KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:130
+msgid "KVIrc Home&page"
+msgstr "&Página do KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:134
+#, fuzzy
+msgid "KVIrc Russian Home&page"
+msgstr "&Página do KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:139
+#, fuzzy
+msgid "KVIrc French Home&page"
+msgstr "&Página do KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:143
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:339
+msgid "Subscribe to the Mailing List"
+msgstr "Inscrever-se na Lista de E-mail"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:145
+msgid "Report a Bug / Propose Improvements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:148
+msgid "Join KVIrc International Channel on Freenode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:150
+msgid "Join KVIrc International Channel on IRCNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:155
+msgid "Join KVIrc Italian Channel on AzzurraNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:161
+msgid "Join KVIrc French Channel on Freenode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:164
+msgid "Join KVIrc French Channel on EuropNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:179
+msgid "Show StatusBar"
+msgstr "Exibir Barra de Status"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:194
+msgid "&Save Configuration"
+msgstr "&Salvar Configuração"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:213
+msgid "Restore &Default Script"
+msgstr "Restaurar Script &Padrão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:630
+msgid "Disconnect"
+msgstr "Desconectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:228
+msgid "New &Connection To"
+msgstr "Nova &Conexão para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:234
+msgid "Hide &Dock Icon"
+msgstr "Ocultar &Icone do Painel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:237
+msgid "Show &Dock Icon"
+msgstr "Exibir &Icone do Painel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:111
+msgid "&Quit"
+msgstr "&Sair do KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:265
+msgid "&Other..."
+msgstr "&Outro..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:305
+msgid "Show &Icon Table"
+msgstr "Exibir Tabela de &Icones "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:308
+msgid "Open &Terminal"
+msgstr "Abrir &Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:308
+msgid ""
+"<b>Shift+Drag</b> or <b>Ctrl+Drag</b> to move the applet around<br><b>Right "
+"click</b> to see the other options"
+msgstr ""
+"<b>Shift+Arraste</b> ou <b>Ctrl+Arraste</b> para mover a applet ao "
+"redor<br><b>Clique com o botão direito </b> para ver as outras opções"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:313
+msgid "<b>Right click</b> to add/remove applets"
+msgstr "<b>Clique com o botão direito</b> para adicionar/remover applets"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:353
+msgid "Remove %Q"
+msgstr "Remover %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:365
+msgid "Add Applet"
+msgstr "Adicionar Applet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:404
+msgid ""
+"Drag the applet while holding the Shift or Ctrl key to move it to the "
+"desired position"
+msgstr ""
+"Arraste a applet enquanto pressiona a tecla Shift ou Ctrl para a mover para "
+"a posição desejada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:93
+msgid "<b><font color=\"#EAEAEA\" size=\"-1\">Find Text</font></b>"
+msgstr "<b><font color=\"#EAEAEA\" size=\"-1\">Procurar Texto</font></b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:118
+msgid "&Regular expression"
+msgstr "Expressão &Regular "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:121
+msgid "E&xtended regexp."
+msgstr "Expressão regular e&stendida."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:126
+msgid "C&ase sensitive"
+msgstr "&Diferenciar Maiúsculas/minúsculas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:129
+msgid "Find &Prev."
+msgstr "&Procurar Anterior"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:133
+msgid "&Find Next"
+msgstr "&Procurar próximo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:880
+msgid "Find"
+msgstr "Procurar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:214
+msgid "Type"
+msgstr "Tipo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:166
+msgid "Set &All"
+msgstr "Selecionar &Todos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:170
+msgid "Set &None"
+msgstr "Selecionar &Nenhum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:174
+msgid "&Load From..."
+msgstr "&Carrgar de..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:178
+msgid "&Save As..."
+msgstr "&Salvas Como..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:182
+msgid "Filter"
+msgstr "Filtro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:234
+msgid "Select a Filter File"
+msgstr "Selecionar um arquivo de filtro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:251
+#, c-format
+msgid "Can't open the filter file %s for reading."
+msgstr "Impossível abrir o arquivo filtro %s para leitura."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:261
+msgid "Select a Name for the Filter File"
+msgstr "Escolha um nome para o arquivo filtro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:272
+#, fuzzy
+msgid "Failed to write the filter file %Q (IO Error)"
+msgstr "Falha ao escrever no arquivo de filtro %s (Erro E/S)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:274
+#, fuzzy
+msgid "Can't open the filter file %Q for writing"
+msgstr "Impossível abrir o arquivo de filtro %s para escrita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:109
+msgid "Choose image ..."
+msgstr "Escolha a imagem..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:122
+msgid "Builtin images"
+msgstr "Imagens embutidas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:131
+msgid "Small icons"
+msgstr "Ícones pequenos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:138
+msgid "Full path"
+msgstr "Caminho completo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:241
+msgid "Builtin $icon(%Q) [index %d]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:274
+msgid "directory"
+msgstr "diretório"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:300
+msgid "pixels"
+msgstr "pixels"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:305
+msgid "bytes"
+msgstr "bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:98
+msgid "Show User List"
+msgstr "Exibir Lista de Usuários"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:105
+msgid "Query Targets"
+msgstr "Destinos do Query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:165
+#, fuzzy
+msgid "Query target:"
+msgstr "Destinos do Query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:170
+msgid "%1 is %2 (%3)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:172
+msgid "%1 is %2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:186
+#, fuzzy
+msgid "%1 is using irc server: %2 (%3 hops)"
+msgstr "Usando servidor <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:188
+#, fuzzy
+msgid "%1 is using irc server: %2"
+msgstr "Usando servidor <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:195
+msgid "%1 is probably away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:200
+msgid "Common channels with %1: %2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:254
+#, fuzzy
+msgid "[Dead Query]"
+msgstr "[Query morto]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:240
+msgid "Query with %1!%2 (%3)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:242
+msgid "Query with %1!%2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:244
+#, fuzzy
+msgid ", using server %1"
+msgstr "Usando servidor <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:246
+#, fuzzy
+msgid " (%1 hops)"
+msgstr "%1 saltos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:248
+msgid ", probably away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:252
+#, fuzzy
+msgid "Common channels: %2"
+msgstr "Entrar nos Canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:320
+msgid ""
+"The target of this query has changed from \r!n\r%Q\r [%Q@\r!h\r%Q\r] to \r!n"
+"\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr ""
+"O destino deste query foi alterado de \r!n\r%Q\r [%Q@\r!h\r%Q\r] para \r!n\r%"
+"Q\r [%Q@\r!h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:389
+msgid "Common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Canais em comum com \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:392
+msgid "No common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "Nenhum canal em comum com \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:428
+msgid "[Dead query]"
+msgstr "[Query morto]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:578
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:645
+msgid "This query has no active targets, no message sent"
+msgstr "O usuário deste query não está mais online, nenhuma mensagem enviada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:617
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %s, no "
+"data sent to the server"
+msgstr ""
+"O motor de criptografia foi incapaz de criptografar a mensagem atual (%Q): %"
+"s, nenhum dado enviado para o servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashcount.cpp:74
+msgid ""
+"The argument of the hash count '#' operator didn't evaluate to a hash: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+"O operador de contagem hash '#' não foi avaliado como um hash: conversão "
+"automática a partir do tipo '%Q' fornecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:100
+#, fuzzy
+msgid "DNS Lookup result for query \"%Q\""
+msgstr "Resultado da pesquisa do DNS para a pergunta \"%s \""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:105
+msgid "Error: %Q"
+msgstr "Erro: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:110
+#, fuzzy
+msgid "Hostname %d: %Q"
+msgstr "Nome do host %d: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:116
+#, fuzzy
+msgid "IP address %d: %Q"
+msgstr "Endereço IP %d: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:870
+msgid ""
+"Broken slot '%Q' in target object '%Q::%Q' while emitting signal '%Q' from "
+"object '%Q::%Q': disconnecting"
+msgstr ""
+"Slot quebrado '%Q' no objeto de destino '%Q::%Q' ao emitir o sinal '%Q' do "
+"objeto '%Q::%Q': desconectando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:888
+msgid ""
+"Slot target object destroyed while emitting signal '%Q' from object '%Q::%Q'"
+msgstr ""
+"Slot do objeto de destino destruido ao emitir o sinal '%Q' do objeto '%Q::%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1040
+msgid "Listing Qt properties for object named \"%Q\" of KVS class %Q"
+msgstr "Listando propriedades Qt para o objeto \"%Q\" da classe KVS %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1046
+#, c-format
+msgid "Properties for Qt class %s"
+msgstr "Propriedades para classe Qt %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1071
+#, fuzzy
+msgid "Property: %c%Q%c, type %Q"
+msgstr "Propriedade: %c%Q%c, tipo %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1131
+#, c-format
+msgid "%d properties listed"
+msgstr "%d propriedades listadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1151
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1380
+msgid "The object named \"%Q\" of class %Q has no Qt properties"
+msgstr "O objeto \"%Q\" da classe %Q não tem propriedades Qt "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1396
+msgid "No Qt property named \"%Q\" for object named \"%Q\" of class %Q"
+msgstr "Não existe propriedade Qt \"%Q\" para o objeto \"%Q\" da classe %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1409
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed but it doesn't really exist"
+msgstr ""
+"Não foi possível encontrar a propriedade \"%Q\" para o objeto \"%Q\" da "
+"classe %Q: a propriedade está indexada, mas nao existe realmente."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1417
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed and defined but the returned variant is not valid"
+msgstr ""
+"Não foi possível encontrar a propriedade \"%Q\" para o objeto \"%Q\" da "
+"classe %Q: a propriedade esta indexada e definida mas a variante retornada é "
+"invalida."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1200
+#, c-format
+msgid ""
+"The property is of type %s but the supplied argument can't be converted to "
+"that type (expecting \"%s\")"
+msgstr ""
+"A propriedade é do tipo %s mas o argumento fornecido nao pode ser convertido "
+"para este tipo (esperando \"%s\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1331
+msgid ""
+"A pixmap object, an image_id or an image file path is required for this "
+"property"
+msgstr ""
+"Um objeto do pixmap, uma image_id ou um caminho de arquivo de imagem são "
+"requeridos para esta propriedade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1352
+msgid "Can't find the requested image"
+msgstr "Não foi possível encontrar a imagem requisitada."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1512
+msgid ""
+"Property \"%Q\" for object named \"%Q\" of class %Q has an unsupported data "
+"type"
+msgstr ""
+"Propriedade \"%Q\" para objeto \"%Q\" da classe %Q tem um tipo de dados não "
+"suportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1659
+msgid "Cannot find object function $%Q for object named \"%Q\" of class %Q"
+msgstr ""
+"Não foi possível encontrar a função de objeto $%Q para o objeto \"%Q\" da "
+"classe %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1661
+msgid "Cannot find object function $%Q::%Q for object named \"%Q\" of class %Q"
+msgstr ""
+"Não foi possível encontra a função de obejto $%Q::%Q para o objeto \"%Q\" da "
+"classe %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1669
+#, fuzzy
+msgid ""
+"Cannot call internal object function $%Q (for object named \"%Q\" of class %"
+"Q) from this context"
+msgstr ""
+"Não foi possível encontrar a função de objeto $%Q para o objeto \"%Q\" da "
+"classe %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:69
+msgid "Stray dot ('.') character or invalid following module command name"
+msgstr ""
+"Caracter ponto ('.') disperso ou após um nome de comando do módulo inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:70
+msgid "Syntax error: malformed module command identifier"
+msgstr "Erro de sintaxe: identificador de comando do módulo malformado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:188
+#, fuzzy
+msgid "Stray '::' sequence or invalid following alias name"
+msgstr ""
+"Caracter ponto ('.') disperso ou após um nome de comando do módulo inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:95
+#, fuzzy
+msgid "Syntax error: malformed alias identifier"
+msgstr "Erro de sintaxe: identificador de comando do módulo malformado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:102
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:196
+msgid "Stray ':' character: did you mean '...<namespace>::<alias_name>' ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:103
+#, fuzzy
+msgid "Syntax error: malformed (alias?) command identifier"
+msgstr "Erro de sintaxe: identificador de comando do módulo malformado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:280
+msgid "Unknown callback command \"%Q\""
+msgstr "Comando de retorno de chamada \"%Q\" desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:465
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:44
+msgid "The current window is not a channel"
+msgstr "A janela corrente não é um canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:532
+msgid ""
+"Timer name omitted but there is not current timer (this is not a timer "
+"callback)"
+msgstr ""
+"Nome do cronomêtro omitido, mas não é um cronomêtro atual (isto não é um "
+"retorno dechamada do cronomêtro)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:538
+msgid "Can't kill the timer '%Q' since it is not running"
+msgstr "Não foi possível matar o cronomêtro '%Q' já que não está em execução"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:626
+#, fuzzy
+msgid "List of active timers"
+msgstr "usuários ativos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:637
+msgid "Persistent"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:640
+#, fuzzy
+msgid "WindowLifetime"
+msgstr "Lista de Janelas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:643
+msgid "SingleShot"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:652
+#, fuzzy
+msgid "None"
+msgstr "(Nenhum)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:663
+#, c-format
+msgid "Total: %u timers running"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:849
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:872
+msgid "Found character '%q' (unicode %x) where a slash '/' was expected"
+msgstr "Caracter '%q' (unicode %x) encontrado onde uma barra '/' era esperada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:842
+msgid ""
+"Unexpected end of command in binding operation, at least two slashes are "
+"missing"
+msgstr ""
+"Fim de comando inesperado na operação de associação pelo menos duas barras "
+"estão faltando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:865
+msgid ""
+"Unexpected end of command in binding operation, at least one slash is missing"
+msgstr ""
+"Fim de comando inesperado na operação de associação pelo menos uma barra "
+"está faltando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:905
+msgid "Unknown binding operation '%Q'"
+msgstr "Operação de associação desconhecida '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:926
+msgid "Missing right side operand for the binding operator '=~'"
+msgstr "Faltando o operando do lado direito para a operação de associação '=~'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:948
+msgid "Trailing garbage ignored after operator '++'"
+msgstr "Os caracteres após o operador '++' foram ignorados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:960
+msgid "Missing right operand for operator '+='"
+msgstr "Faltando o operando do lado direito para o operador '+='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:979
+msgid "Trailing garbage ignored after operator '--'"
+msgstr "Os caracteres após o operador '--' foram ignorados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:986
+msgid ""
+"This looks a lot like an object handle dereferencing operator '->' but in "
+"fact it isn't. Maybe you forgot a '$' just after ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:994
+msgid "Missing right operand for operator '-='"
+msgstr "Faltando o operando do lado direito para o operador '-='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1015
+msgid "Missing right operand for operator '<<='"
+msgstr "Faltando o operando do lado direito para o operador '<<='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1025
+msgid "Missing right operand for operator '<<'"
+msgstr "Faltando o operando do lado direito para o operador '<<'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1039
+msgid "Missing right operand for operator '<,'"
+msgstr "Faltando o operando do lado direito para o operador '<,'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1053
+#, fuzzy
+msgid "Missing right operand for operator '<+'"
+msgstr "Faltando o operando do lado direito para o operador '+='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1075
+msgid "Missing right operand for operator '>>='"
+msgstr "Faltando o operando do lado direito para o operador '>>='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1094
+msgid "Missing right operand for operator '.='"
+msgstr "Faltando o operando do lado direito para o operador '.='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1113
+msgid "Missing right operand for operator '"
+msgstr "Faltando o operando do lado direito para o operador '"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:72
+msgid "Unknown operator"
+msgstr "Operador desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1178
+msgid "Unexpected (and senseless) read-only data evaluation"
+msgstr "Avaliação de dados somente leitura inesperada (sem sentido)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1180
+msgid "Syntax error: confused by earlier errors: bailing out"
+msgstr "Erro de sintaxe: confundido por erros anteriores: alucinando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1160
+msgid "Unexpected end of script after a variable reference: expected operator"
+msgstr ""
+"Fim de script inesperado depois da referência da variável: operador esperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1176
+msgid ""
+"Unexpected character '%q' (unicode %x) after a void function call: end of "
+"instruction expected"
+msgstr ""
+"Caracter '%q' inesperado (unicode %x) após a chamada da função void: fim da "
+"instrução esperada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1179
+msgid "Unexpected character '%q' (unicode %x)"
+msgstr "Caracter '%q' inesperado (unicode %x)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:96
+msgid "/me can be used only in channels, queries and DCC chat windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:385
+#, fuzzy
+msgid "Invalid IRC url (%Q)"
+msgstr "url de IRC (%s) Inválida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:410
+#, fuzzy
+msgid "The commandline for this url type seems to be broken (%Q)"
+msgstr "A linha de comando para este tipo de URL parece estar quebrado (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:412
+#, fuzzy
+msgid "No commandline specified for this type of url (%Q)"
+msgstr "Nenhuma linha de comando especificada para este tipo de URL (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:512
+msgid "Option setting error: Unknown option or invalid value for option type"
+msgstr ""
+"Erro no ajuste da opção: opção desconhecida ou valor inválido para o tipo de "
+"opção"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:606
+msgid "Choose a file to parse"
+msgstr "Escolha o arquivo para analisar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:639
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:643
+msgid "Failed to load the file '%Q' for parsing"
+msgstr "Falhou ao carregar o arquivo '%Q' para analise"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:715
+msgid "Missing channel list"
+msgstr "Faltando lista de canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:753
+#, c-format
+msgid "You don't appear to be on channel %s"
+msgstr "Você não parece estar no canal %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:802
+#, fuzzy
+msgid "Module command call failed: can't load the module 'snd'"
+msgstr ""
+"Chamada de comando do módulo falhou: não foi possível carregar o módulo '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:809
+#, fuzzy
+msgid ""
+"Module command call failed: the module 'snd' doesn't export a command named "
+"'play'"
+msgstr ""
+"Chamada de comando do módulo falhou: o módulo '%Q' não exporta um comando "
+"chamado '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:864
+msgid "Popup %Q is not defined"
+msgstr "Popup %Q não esta definido."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:872
+msgid "A popup menu cannot be popped up twice"
+msgstr "Um menu popup não pode ser chamado duas vezes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:897
+msgid "Invalid syntax for screen coordinates, using cursor position"
+msgstr ""
+"Sintaxe inválida para as coordenadas da tela, usando a posição do cursor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1011
+msgid "Empty target specified"
+msgstr "Destino especificado está vazio "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:97
+msgid "[RAW]: %Q"
+msgstr "[RAW]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1237
+msgid "Window with id %Q not found: no rebinding performed"
+msgstr "Janela com id %Q não encontrado: nenhuma religação feita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1330
+#, fuzzy
+msgid "Failed to execute command '%Q'"
+msgstr "Falhou ao executar o comando '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:242
+msgid "Missing alias name"
+msgstr "Faltando o nome do alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:253
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:889
+msgid ""
+"Alias names can contain only letters, digits, underscores and '::' namespace "
+"separators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:903
+msgid ""
+"Stray ':' character in alias name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:914
+msgid "Found an empty namespace in alias name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:277
+msgid "The alias %Q is not existing"
+msgstr "O alias %Q não existe."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:436
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:413
+msgid "The specified window has no button containers"
+msgstr "A janela especificada não tem recepiente de botões"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:447
+#, fuzzy
+msgid "Window button '%Q' not found"
+msgstr "Botão de janela '%s' não encontrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:445
+#, fuzzy
+msgid "Can't find the icon '%Q'"
+msgstr "Não foi possível encontrar o icone '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:532
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:540
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1197
+#, fuzzy
+msgid "No such event (%Q)"
+msgstr "Nenhum evento (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:552
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1222
+#, fuzzy
+msgid "No handler '%Q' for raw numeric event '%d'"
+msgstr "Sem manipulador '%s' para o evento númerico raw '%d'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1248
+#, fuzzy
+msgid "No handler '%Q' for event '%Q'"
+msgstr "Sem manipulador '%s' para o evento '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:936
+msgid "The specified ping time is invalid: assuming zero (no ping)"
+msgstr "O tempo de ping especificado é inválido: assumindo zero (sem ping)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:946
+msgid "The specified maximum run time is invalid: assuming zero (infinite)"
+msgstr ""
+"O tempo máximo de execução especificado é inválido: assumindo zero (infinito)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:965
+msgid "Failed to start the process"
+msgstr "Falhou ao iniciar o processo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1010
+#, fuzzy
+msgid "The specified object does not exist"
+msgstr "O objeto pai especificado não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1113
+msgid "Missing timer name"
+msgstr "Faltando nome do timer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1122
+msgid "Missing timeout delay"
+msgstr "Faltando intervalo de atraso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1129
+msgid "The timeout delay didn't evaluate to an integer"
+msgstr "O atraso do tempo de expiracão não é um número inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1152
+msgid "Unable to add the timer: insufficient system resources"
+msgstr "Incapaz de adicionar o cronomêtro: recursos do sistema insuficientes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_eventmanager.cpp:503
+msgid "Event handler %Q is broken: disabling"
+msgstr "Manipulador de eventos %Q está quebrado: desativando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_moduleinterface.cpp:166
+msgid "Can't unload the module: it has locked itself in memory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:123
+msgid "Unknown binary operator '=%q': did you mean '==' ?"
+msgstr "Operador binário desconhecido'=%q': você queria dizer que '==' ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:221
+msgid "Unknown binary operator '%q'"
+msgstr "Operador binário '%q' desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:305
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:371
+msgid "Unexpected end of script in expression"
+msgstr "Fim do script inesperado na expressão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:451
+msgid ""
+"Unexpected character %q (unicode %h) in expression. If it meant to be a "
+"string use the quotes."
+msgstr ""
+"Caracter inesperado %q (unicode %h) na expressão. Se é para ser uma string, "
+"use as citações."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:466
+#, fuzzy
+msgid "Unexpected empty expression operand"
+msgstr "Fim inesperado na expressão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:91
+msgid "say: injected commandline"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:94
+msgid "Say parse error: Broken command"
+msgstr "Diz erro do analisador: comando quebrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:250
+msgid ""
+"Couldn't find a suitable IRC context for the connection, try using -n or -u"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:259
+#, fuzzy
+msgid "Another connection is already in progress in the selected IRC context"
+msgstr "Outra conexão em progresso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:369
+#, fuzzy
+msgid "No menu bar item with text '%Q'"
+msgstr "Nenhum ítem da barra de menu com texto ' %s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:383
+#, fuzzy
+msgid "Invalid index specified: ignored"
+msgstr "Intervalo de tempo especificado inválido: usar pre-definido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:392
+#, fuzzy
+msgid "The popup '%Q' is not defined"
+msgstr "O popup '%s' não está definido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:604
+#, fuzzy
+msgid "No target channel specified and the current window is not a channel"
+msgstr "A janela especificada não é um canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:705
+#, fuzzy
+msgid "No catalogue %Q for the current language found"
+msgstr "Não foi possível encontrar o catálogo %s para a línguagem atual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:744
+#, fuzzy
+msgid "The catalogue %Q was not loaded"
+msgstr "O catálogo '%s' não foi carregado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:80
+msgid ""
+"Empty window identifier specified in the standard rebinding switch: no "
+"rebinding performed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:91
+msgid ""
+"Invalid window specified in the standard rebinding switch: no rebinding "
+"performed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:94
+msgid ""
+"The left side of the scope operator didn't evaluate as an object reference"
+msgstr ""
+"O lado esquerdo do operador do espaço não foi avaliado para uma referência "
+"de objeto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:100
+msgid ""
+"The left side of the scope operator evaluated to a null object reference"
+msgstr ""
+"O lado esquerdo do operador do espaço foi avaliado para uma referência de "
+"objeto nula "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:107
+msgid ""
+"The left side of the scope operator evaluated to an invalid object reference "
+"(object doesn't exist)"
+msgstr ""
+"O lado esquerdo do operador do espaço foi avaliado para uma referência de "
+"objeto inválida (objeto não existe)."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayreferenceassert.cpp:77
+msgid "Array reference assert failed: the variable evaluated to type '%Q'"
+msgstr ""
+"Falhou a comprovação da referência do array: a variável foi avaliada como do "
+"tipo '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:247
+msgid "Operand of unary operator didn't evaluate to a number"
+msgstr "O operando do operador unário não avaliou para um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:415
+msgid "Left operand didn't evaluate to a number"
+msgstr "O operando esquerdo não avaliou para um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:422
+msgid "Right operand didn't evaluate to a number"
+msgstr "O operando direito não avaliou para um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:547
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:575
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:583
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:374
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:66
+msgid "Division by zero"
+msgstr "Divisão por zero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:107
+#, c-format
+msgid "line %d, near character %d"
+msgstr "linha %d, caracter aproximando %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:187
+msgid "This command can be used only in windows bound to an IRC context"
+msgstr ""
+"Este comando só pode ser usado nas janelas associadas para um contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:193
+msgid "You're not connected to an IRC server"
+msgstr "Você não está conectado a um servidor IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:199
+msgid "Missing parameter"
+msgstr "Parâmetro faltando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:128
+msgid "Hash key evaluated to empty string: fix the script"
+msgstr "Avaliação da chave hash para string vazia: reparar o script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:99
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+"O argumento do subscript {} não avaliou para uma hash de conversão "
+"automática do tipo %Q fornecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:144
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash automatic "
+"conversion from %Q supplied"
+msgstr ""
+"O argumento do subscript {} não avaliou para uma hash de conversão "
+"automática a partir do %Q fornecido "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashreferenceassert.cpp:77
+msgid "Hash reference assert failed: the variable evaluated to type '%Q'"
+msgstr ""
+"Falhou a verificação da referencia hash: a variável foi avaliada como do "
+"tipo '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:100
+#, fuzzy
+msgid "Failed to send an unknown command as /raw"
+msgstr "Enviar comando desconhecido como /RAW"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:104
+msgid "Call to undefined command '%Q'"
+msgstr "Chamada para comando indefinido '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:116
+msgid "Error in inner alias command call '%Q', called from this context"
+msgstr ""
+"Erro na chamada ao comando interno de álias '%Q', chamado a partir deste "
+"contexto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:74
+msgid "There are no extended scope variables in this scope"
+msgstr "Não há variáveis de espaço extendidas neste espaço"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:111
+#, fuzzy
+msgid "Missing class name"
+msgstr "Faltando o nome do alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:120
+msgid "A class can't be a subclass of itself"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:127
+msgid "Couln't find base class named \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:137
+msgid ""
+"Detected a loop in the inheritance tree of the base class \"%Q\": redefine "
+"that class first"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:146
+#, fuzzy
+msgid "Can't override the builtin class \"%Q\""
+msgstr "Não pode matar uma classe interna "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:71
+#, fuzzy
+msgid "Module command call failed: can't load the module '%Q': %Q"
+msgstr ""
+"Chamada de comando do módulo falhou: não foi possível carregar o módulo '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:77
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a command named '%"
+"Q'"
+msgstr ""
+"Chamada de comando do módulo falhou: o módulo '%Q' não exporta um comando "
+"chamado '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:113
+msgid "Broken condition in menu setup: assuming false"
+msgstr "Condição falhou na configuração do menu: assumindo falso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:220
+msgid "Broken icon parameter: ignoring"
+msgstr "Parâmetro de ícone quebrado: ignorando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:228
+msgid "Can't find the icon \"%Q\": ignoring"
+msgstr "Não foi possível encontrar o icone \"%Q\": ignorando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:244
+msgid "Broken text parameter: assuming empty string"
+msgstr "Parâmetro de texto quebrado: assumindo string vazia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:486
+msgid "Recursive definition detected for popup '%Q': ignoring"
+msgstr "Definição recursiva detectada para o popup '%Q': ignorando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:500
+msgid "Can't find the external popup '%Q'; ignoring"
+msgstr "Não foi possível encontrar o popup externo '%Q': ignorando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:853
+msgid "Broken prologue in popup menu '%Q': ignoring"
+msgstr "Prólogo quebrado no menu popup '%Q': ignorando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:868
+msgid "Broken epilogue in popup menu '%Q': ignoring"
+msgstr "Epílogo quebrado no menu popup '%Q': ignorando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:70
+#, fuzzy
+msgid "Module function call failed: can't load the module '%Q': %Q"
+msgstr ""
+"A chamada da função módulo falhou: não foi possível carregar o módulo '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:77
+msgid ""
+"Module function call failed: the module '%Q' doesn't export a function named "
+"'%Q'"
+msgstr ""
+"A chamada da função módulo falhou: o módulo '%Q' não exporta a função "
+"chamada '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_timermanager.cpp:244
+msgid "Timer '%Q' has a broken callback handler: killing the timer"
+msgstr ""
+"O cronômetro '%Q' danificou o manipulador de chamadas: matar o cronômetro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:229
+msgid "The target variable didn't evaluate to an integer or real value"
+msgstr "A variável de destino não avaliou para um valor inteiro ou real"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:283
+msgid "The right side of operator '&=' didn't evaluate to an integer"
+msgstr "O lado direito do operador '&=' não foi avaliado como um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:294
+msgid "The left side of operator '&=' didn't evaluate to an integer"
+msgstr "O lado esquerdo do operador '&=' não foi avaliado como um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:353
+msgid "The right side of operator '/=' didn't evaluate to a number"
+msgstr "O lado direito do operador '/=' não foi avaliado como um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:364
+msgid "The left side of operator '/=' didn't evaluate to a number"
+msgstr "O lado esquerdo do operador '/=' não foi avaliado como um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:446
+msgid "The right side of operator '%=' didn't evaluate to a number"
+msgstr "O lado direito do operador '%=' não foi avaliado como um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:457
+msgid "The left side of operator '%=' didn't evaluate to a number"
+msgstr "O lado esquerdo do operador '%=' não foi avaliado como um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:541
+msgid "The right side of operator '*=' didn't evaluate to a number"
+msgstr "O lado direito do operador '*=' não foi avaliado como um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:552
+msgid "The left side of operator '*=' didn't evaluate to a number"
+msgstr "O lado esquerdo do operador '*=' não foi avaliado como um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:620
+msgid "The right side of operator '|=' didn't evaluate to an integer"
+msgstr "O lado direito do operador '|=' não foi avaliado como um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:631
+msgid "The left side of operator '|=' didn't evaluate to an integer"
+msgstr "O lado esquerdo do operador '|=' não foi avaliado como um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:691
+msgid "The right side of operator '<<=' didn't evaluate to an integer"
+msgstr "O lado direito do operador '<<=' não foi avaliado como um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:702
+msgid "The left side of operator '<<=' didn't evaluate to an integer"
+msgstr "O lado esquerdo do operador '<<=' não foi avaliado como um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:763
+msgid "The right side of operator '>>=' didn't evaluate to an integer"
+msgstr "O lado direito do operador '>>=' não foi avaliado como um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:774
+msgid "The left side of operator '>>=' didn't evaluate to an integer"
+msgstr "O lado esquerdo do operador '>>=' não foi avaliado como um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:840
+msgid "The right side of operator '-=' didn't evaluate to a number"
+msgstr "O lado direito do operador '-=' não foi avaliado como um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:851
+msgid "The left side of operator '-=' didn't evaluate to a number"
+msgstr "O lado esquerdo do operador '-=' não foi avaliado como um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:923
+msgid "The right side of operator '+=' didn't evaluate to a number"
+msgstr "O lado direito do operador '+=' não foi avaliado como um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:934
+msgid "The left side of operator '+=' didn't evaluate to a number"
+msgstr "O lado esquerdo do operador '+=' não foi avaliado como um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1009
+msgid "The right side of operator '^=' didn't evaluate to an integer"
+msgstr "O lado direito do operador '^=' não foi avaliado como um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1020
+msgid "The left side of operator '^=' didn't evaluate to an integer"
+msgstr "O lado esquerdo do operador '^=' não foi avaliado como um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1462
+msgid ""
+"The regular expression matched a zero-length substring: this is not valid in "
+"the s/// operator, skipping"
+msgstr ""
+"A expressão regular se assemelha a uma substring zero-comprimento: isto é "
+"inválido no operador s///, pulando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:52
+msgid "Unexpected end of script after '$' function call prefix"
+msgstr "Fim do script inesperado após o prefixo '$' de chamada da função"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:53
+msgid "Unexpected character %q (unicode %x) after '$' function call prefix"
+msgstr ""
+"Caracter inespeardo %q (unicode %x) após o prefixo '$' de chamada da função"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:54
+msgid ""
+"Syntax error after '$' function call prefix. If you want to use a plain '$' "
+"in the code you need to escape it"
+msgstr ""
+"Erro de sintaxe após o prefixo '$' de chamada da função. Se quiser usar uma "
+"'$' no código, precisa escapá-lo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:63
+msgid "Invalid expression evaluation in object scope"
+msgstr "Avaliação de expressão inválida no objecto espaço"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:78
+msgid "Invalid command evaluation in object scope"
+msgstr "Avaliação de comando inválido no objecto espaço"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:87
+msgid "Empty instruction block for command evaluation"
+msgstr "Bloco de intruções vazio para avaliação de comando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:101
+msgid ""
+"Parameter identifiers are forbidden in object scope (after the '->' operator)"
+msgstr ""
+"Identificadores de parâmetros são proibidos no objecto espaço ( após o "
+"operador '->')"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:147
+msgid ""
+"Ending index of a multiple parameter identifier is lower or equal to the "
+"starting index. This will evaluate to a single parameter identifier."
+msgstr ""
+"O índice final de um identificador de parâmetro múltiplo é mais baixo ou "
+"igual ao índice inicial. Isto avaliará para um identificador de parâmetro "
+"simples."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:163
+msgid "Syntax error: invalid $$ ($this) function call in object scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:189
+#, fuzzy
+msgid "Syntax error: malformed alias function call identifier"
+msgstr "Erro de sintaxe: identificador de comando do módulo malformado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:197
+#, fuzzy
+msgid "Syntax error: malformed (alias?) function call identifier"
+msgstr "Erro de sintaxe: identificador de comando do módulo malformado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:307
+#, c-format
+msgid "Invalid data type for parameter \"%s\""
+msgstr "Tipo de dado inválido pra o parâmetro \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:122
+#, c-format
+msgid "found empty string where type '%s' was expected"
+msgstr "encontrada uma string vazia onde o tipo '%s' era esperado "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:129
+msgid "found string value \"%Q\" where type '%s' was expected"
+msgstr "encontrado um valor de string \"%Q\" onde o tipo '%s' era esperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:134
+msgid "found type %Q where type '%s' was expected"
+msgstr "encontrado tipo \"%Q\" onde o tipo '%s' era esperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:154
+#, c-format
+msgid "Missing non-optional parameter \"%s\""
+msgstr "faltando parâmetro \"%s\" não-opcional"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:282
+msgid "found empty string while a non empty one was expected"
+msgstr "encontrada uma string vazia onde se era esperado uma não vazia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:309
+#, c-format
+msgid "found signed integer \"%d\" where type 'unsigned integer' was expected"
+msgstr ""
+"encontrado inteiro assinado \"%d\" onde o tipo 'inteiro não assinado' era "
+"esperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:253
+msgid "This window has no associated IRC context"
+msgstr "Esta janela não tem contexto de IRC associado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:483
+#, c-format
+msgid "No such IRC context (%u)"
+msgstr "Sem contexto de irc (%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:471
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:586
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:494
+#, fuzzy
+msgid "This window is not associated to an IRC context"
+msgstr "Esta janela não tem contexto de IRC associado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:809
+msgid ""
+"The specified format string wasn't accepted by the underlying system time "
+"formatting function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:70
+msgid "Unterminated c-style multiline comment"
+msgstr "Comentário multilinha no estilo-c não terminado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:71
+msgid "Unexpected end of script in multiline comment"
+msgstr "Fim do script inesperado nos comentários multilinha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:88
+msgid ""
+"Unexpected character '%q' (unicode %x) after a slash (it is a typo or a "
+"malformed comment begin ?)"
+msgstr ""
+"Caracter inesperado '%q' (unicode %x) após a barra (é um tipo ou um começo "
+"de comentário mal formado?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:71
+msgid "Call to undefined function '%Q'"
+msgstr "Chamada para função indefinida '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:79
+msgid "Error in inner alias function call '%Q', called from this context"
+msgstr "Erro na chamada a função interna de alias '%Q', chamada deste contexto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:73
+msgid "Array index didn't evaluate to an integer"
+msgstr "O índice do array não avaliou para um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:79
+msgid ""
+"Array index evaluated to a negative integer (non negative integer expected)"
+msgstr ""
+"Índice de array avaliado para um inteiro negativo (era esperado um inteiro "
+"não negativo )"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:106
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from %Q supplied"
+msgstr ""
+"O argumento do subscript [] não avaliou para um array: conversão automática "
+"de %Q fornecida "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:142
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+"O argumento do subscript [] não avaliou para um array: conversão automática "
+"do tipo %Q fornecida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:219
+msgid "Lag meter was not enabled"
+msgstr "O medidor de Lag não foi ativado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:546
+#, fuzzy
+msgid "No such event handler (%Q) for event %Q"
+msgstr "Sem manipulador '%s' para o evento '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands.cpp:153
+msgid "This is not a channel"
+msgstr "Isto não é um canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:99
+#, fuzzy
+msgid ""
+"Unexpected end of command buffer while looking for the \"perl.end\" statement"
+msgstr ""
+"Fim de buffer Inesperado enquanto procurava o caracter ')' no comando 'for'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:147
+msgid "Trailing garbage at the end of the break command: ignored"
+msgstr "Os caracteres sobrando após o final do comando break: ignorando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:209
+msgid "The 'unset' command needs a variable list"
+msgstr "O comando 'unset' precisa de uma lista variável"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:280
+msgid "Found character %q (unicode %x) where a variable was expected"
+msgstr "Caracter %q (unicode %x) encontrado onde a variável era esperada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:219
+msgid "'unset' command used without a variable list"
+msgstr "o comando 'unset' utilizado sem uma lista variável"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:279
+msgid "The 'global' command needs a variable list"
+msgstr "O comando 'global' precisa de uma lista variável"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:631
+msgid "Found character %q (unicode %x) where an open parenthesis was expected"
+msgstr ""
+"Caracter '%q' (unicode %x) encontrado onde era esperado um parênteses aberto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:439
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:538
+#, fuzzy
+msgid "Unexpected end of buffer in class definition"
+msgstr "Fim de buffer Inesperado na mudança do bloco de condição"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:474
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:501
+#, fuzzy
+msgid "Found character %q (unicode %x) where a function name was expected"
+msgstr "Caracter '%q' (unicode %x) encontrado onde era esperado uma instrução"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:522
+#, fuzzy
+msgid "Unexpected end of buffer in function parameter list reminder"
+msgstr "Fim de linha inesperado na lista de parâmetros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:630
+#, fuzzy
+msgid "The while command needs an expression enclosed in parenthesis"
+msgstr "O comando while precisa de uma expressão entre parênteses"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:654
+msgid ""
+"The last while command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+"O último comando while em buffer não tem instruções condicionais: sem sentido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:655
+msgid ""
+"Unexpected end of script while looking for the instruction block of the "
+"while command"
+msgstr ""
+"Fim de script inesperado enquanto procurava pelo bloco de instruções do "
+"comando while"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:741
+#, fuzzy
+msgid ""
+"Unexpected end of command after the 'do' command block: expected 'while' "
+"keyword"
+msgstr ""
+"Fim de comando Inesperado após o bloco de comando 'do': palavra chave "
+"'while' esperada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:743
+msgid "Found character %q (unicode %x) where a 'while' keyword was expected"
+msgstr ""
+"Caracter '%q' (unicode %x) encontrado onde uma palavra chave 'while' era "
+"esperada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:759
+#, fuzzy
+msgid ""
+"The 'while' block of the 'do' command needs an expression enclosed in "
+"parenthesis"
+msgstr ""
+"O bloco 'while' do comando 'do' precisa de uma expressão entre parênteses"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:779
+msgid "Garbage string after the expression in 'do' command: ignored"
+msgstr "Strings sobrando depois da expressão do comando 'do': ignorando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:825
+#, fuzzy
+msgid "The 'if' command needs an expression enclosed in parenthesis"
+msgstr "O comando 'if' precisa de uma expressão entre parênteses"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:850
+msgid ""
+"The last if command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+"O último comando if em buffer não tem instruções condicionais: sem sentido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:851
+msgid ""
+"Unexpected end of script while looking for the instruction block of the if "
+"command"
+msgstr ""
+"Fim de script Inesperado enquanto procurava o bloco de instruções do comando "
+"if"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:966
+msgid ""
+"Unexpected end of buffer while looking for the closing ')' in the 'for' "
+"command"
+msgstr ""
+"Fim de buffer Inesperado enquanto procurava o caracter ')' no comando 'for'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1015
+#, fuzzy
+msgid "The 'for' command needs an expression enclosed in parenthesis"
+msgstr "O comando 'for' precisa de uma expressão entre parênteses"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1092
+msgid ""
+"Found char %q (unicode %x) while looking for the terminating ')' in 'for' "
+"command"
+msgstr ""
+"Caracter %q (unicode %x) encontrado enquanto procurava pela terminação ')' "
+"no comando 'for'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1122
+msgid "Empty infinite 'for' loop: fix the script"
+msgstr "Loop 'for' infinito: reparar o script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1181
+#, fuzzy
+msgid "The 'foreach' command needs an expression enclosed in parenthesis"
+msgstr "O comando 'foreach' precisa de uma expressão entre parênteses"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1205
+msgid ""
+"The 'foreach' command expects a writeable iteration variable as first "
+"parameter"
+msgstr ""
+"O comando 'foreach' espera uma variável iteração de escrita como primeiro "
+"parâmetro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1196
+msgid ""
+"Found character '%q' (unicode %x) where '%' or '$' was expected: see /help "
+"foreach for the command syntax"
+msgstr ""
+"Caracter '%q' (unicode %x) encontrado onde '%' ou '$' era esperado: ver /"
+"help para a sintaxe de comando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1207
+msgid "Unexpected function call as 'foreach' iteration variable"
+msgstr "Chamada inesperada a função como variável de iteração 'foreach'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1209
+msgid "Unexpected read-only variable as 'foreach' iteration variable"
+msgstr ""
+"Variável somente leitura inesperada como variável de iteração 'foreach'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1219
+msgid ""
+"Unexpected end of 'foreach' parameters: at least one iteration data argument "
+"must be given"
+msgstr ""
+"Fim de parâmetros 'foreach' Inesperado: pelo menos uma interação de "
+"argumento de dados tem que ser dada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1223
+msgid ""
+"The 'foreach' command expects a comma separated list of iteration data items "
+"after the first parameter"
+msgstr ""
+"O comando 'foreach' espera uma lista de elementos de iteração separados por "
+"virgulas depois do primeiro parâmetro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1244
+#, fuzzy
+msgid ""
+"Found empty 'foreach' execution block: maybe you need to fix your script ?"
+msgstr "Bloco de execução 'foreach' vazio: reparar o script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1365
+#, fuzzy
+msgid "The 'switch' command needs an expression enclosed in parenthesis"
+msgstr "O comando 'switch' precisa de uma expressão entre parênteses"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1415
+msgid "Unexpected end of buffer in switch condition block"
+msgstr "Fim de buffer Inesperado na mudança do bloco de condição"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1422
+msgid ""
+"Found character %q (unicode %x) where a 'case','match','regexp','default' or "
+"'break' label was expected"
+msgstr ""
+"Caracter %q (unicode %x) encontrado onde se esperava um "
+"'case','match','regexp', 'default' ou 'break'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1460
+msgid ""
+"Found 'break' label where a 'case','match','regexp' or 'default' label was "
+"expected"
+msgstr ""
+"Encontrado o rótulo 'break' onde um rótulo 'case','match','regexp' ou "
+"'default' era esperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1465
+msgid ""
+"Found token '%Q' where a 'case','match','regexp','default' or 'break' label "
+"was expected"
+msgstr ""
+"Encontrado '%Q' onde se esperava uma expressao do tipo 'case','match', "
+"'regexp', ou 'break'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1528
+msgid "Senseless empty switch command: fix the script"
+msgstr "Comando switch vazio sem sentido: reparar o script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1562
+msgid "Unexpected end of buffer in defpopup block"
+msgstr "Fim de buffer Inesperado no blobo defpopup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1569
+msgid ""
+"Found character %q (unicode %x) where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+"Caracter %q (unicode %x) encontrado onde uma expressão do "
+"tipo'prologue','separator','label','popup','item','extpopup' ou 'epilogue' "
+"era esperada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1668
+#, fuzzy
+msgid "Found empty prologue block: maybe you need to fix the script?"
+msgstr "Bloco prólogo vazio sem sentido: reparar o script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1670
+#, fuzzy
+msgid "Found empty epilogue block: maybe you need to fix the script?"
+msgstr "Bloco epílogo vazio sem sentido: reparar o script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1703
+msgid ""
+"Unexpected empty <text> field in label parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Campo <texto> vazio inesperado nos parâmetros do rótulo. Veja o /help "
+"defpopup para a sintaxe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1753
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1801
+msgid ""
+"Unexpected empty <text> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Campo <texto> vazio inesperado nos parâmetros exrpopup. Veja /help defpopup "
+"para a sintaxe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1777
+#, fuzzy
+msgid ""
+"Found empty instruction for popup item: maybe you need to fix the script?"
+msgstr "Instrução vazia sem sentido para o item do popup: reparar o script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1809
+msgid ""
+"Unexpected empty <name> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Campo <nome> vazio inesperado nos parâmetros extpopup. Veja /help defpopup "
+"para a sintaxe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1821
+msgid ""
+"Found token '%Q' where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+"Símbolo '%Q' encontrado onde "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"era esperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1931
+#, fuzzy
+msgid "The 'defpopup' command needs an expression enclosed in parenthesis"
+msgstr "O comando 'defpopup' precisa de uma expressão entre parênteses"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:109
+msgid "beginning of input"
+msgstr "Ínicio da entrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:121
+msgid ""
+"Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %s"
+"\" for the command syntax"
+msgstr ""
+"Caracter '%q' (unicode 0x%x) encontrado onde '%c' era esperado: ver \"/help %"
+"s\" para a sintax de comando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:124
+#, fuzzy, c-format
+msgid ""
+"Found end of input where character '%c' was expected: see \"/help %s\" for "
+"the command syntax"
+msgstr ""
+"Caracter '%q' (unicode 0x%x) encontrado onde '%c' era esperado: ver \"/help %"
+"s\" para a sintax de comando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:197
+msgid "Empty script"
+msgstr "Script vazio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2650
+msgid ""
+"Syntax error after '%' variable prefix. If you want to use a plain '%' in "
+"the code you need to escape it"
+msgstr ""
+"Erro de sintaxe após o prefixo '%' de variável. Se quiser usar um '%' código "
+"precisa escapá-lo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2667
+msgid "Objects have no extended scope variables"
+msgstr "O objeto não tem variáveis de espaço extendidas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2727
+msgid "Found character '%q' (unicode %x) where an instruction was expected"
+msgstr "Caracter '%q' (unicode %x) encontrado onde era esperado uma instrução"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2760
+msgid "Unterminated instruction block"
+msgstr "Bloco de instruções indeterminado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2761
+msgid "Unexpected end of script in instruction block (missing closing brace)"
+msgstr ""
+"Fim do script inesperado no bloco de instrução (falta chave de fechamento)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2838
+#, fuzzy
+msgid ""
+"The dash after a command should be followed by a letter (switch), by a digit "
+"(negative number) or be escaped"
+msgstr ""
+"O traço após o comando deve ser seguido por uma letra ou um número ou não "
+"ter nada (alternando)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2842
+msgid "Unexpected character '%q' (unicode %x) after a switch dash"
+msgstr "Caracter inesperado '%q' (unicode %x) após uma barra de troca"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2844
+msgid "Unexpected end of script after a switch dash"
+msgstr "Fim do script inesperado após uma barra de troca"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2869
+msgid ""
+"The above problem might be related to the switch dash and the following "
+"equal sign"
+msgstr ""
+"O problema em questão pode estar relacionado com a barra de troca e o "
+"seguinte sinal de igual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2948
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3016
+msgid "Unexpected end of script in parameter list"
+msgstr "Fim do script inesperado na lista de parâmetros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2954
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3022
+msgid "Unexpected end of line in parameter list"
+msgstr "Fim de linha inesperado na lista de parâmetros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3083
+msgid ""
+"Nested character %q corresponding to expected terminator, this might confuse "
+"me a bit: it is a good idea to enclose it in quotes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3093
+#, fuzzy
+msgid "Skipping nested terminator character %q"
+msgstr "linha %d, caracter aproximando %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3120
+msgid "Stray backslash at the end of the script"
+msgstr "Barra no fim do script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3393
+msgid "Unterminated hash key"
+msgstr "Chave hash não terminada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3387
+msgid "Unexpected end of script in hash key (missing '}' character ?)"
+msgstr "Fim de script inesperado na chave hash (falta o caracter '}'?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3394
+msgid ""
+"Unexpected end of line in hash key (missing '}' character or unescaped "
+"newline)"
+msgstr ""
+"Fim da linha inesperado na chave hash (falta o caracter '}' ou nova linha)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3679
+msgid "Unterminated string constant"
+msgstr "String constante não terminada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3673
+msgid "Unexpected end of script in string constant (missing \" character ?)"
+msgstr "Fim de script inesperado na string constante (falta um caracter?))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3680
+msgid ""
+"Unexpected end of line in string constant (missing \" character or unescaped "
+"newline)"
+msgstr ""
+"Fim de linha inesperado na string constante ( faltando o caracter \" ou uma "
+"nova linha)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_processmanager.cpp:225
+msgid "Error triggered from process callback handler: killing process"
+msgstr ""
+"Erro provocado pelo manipulador do processo de chamadas: matando processo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arraycount.cpp:72
+msgid ""
+"The argument of the array count '#' operator didn't evaluate to an array: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+"O argumento da contagem do operador do array '#' não avaliou para um array: "
+"conversão automática a partir do tipo '%Q' fornecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:197
+msgid "This window has no associated IRC context and is not a DCC chat"
+msgstr "Esta janela não tem um contexto de IRC associado e não é um DCC Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:293
+msgid "Class \"%Q\" is not defined"
+msgstr "Classe \"%Q\" indefinida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:303
+msgid "The specified parent object does not exist"
+msgstr "O objeto pai especificado não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:430
+#, fuzzy
+msgid "There is no option named '%Q'"
+msgstr "Nenhuma opção chamada '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:85
+msgid "Internal error: pure virtual evaluateReadOnly called"
+msgstr "Error interno: se chamou o método virtual puro evaluateReadOnly"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:91
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:104
+msgid ""
+"Internal error: trying to evaluate as read-write a read-only data location"
+msgstr ""
+"Erro interno: tentando avaliar uma posição de dados de somente leitura como "
+"de leitura-escrita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:98
+msgid "Internal error: pure virtual evaluateReadOnlyInObjectScope called"
+msgstr "Erro interno: método virtual puro evaluateReadOnly chamado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:215
+msgid "[KVS]%c Warning: %Q"
+msgstr "[KVS]%c Aviso: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:211
+msgid "[KVS]%c Compilation Error: %Q"
+msgstr "[KVS]%c Erro de compilação: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:219
+msgid "[KVS]%c Runtime Error: %Q"
+msgstr "[KVS]%c Erro de execução: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:224
+msgid "[KVS] in script context \"%Q\""
+msgstr "[KVS] no contexto do script \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:226
+msgid "[KVS] in script context \"%Q\", %Q"
+msgstr "[KVS] no contexto do script \"%Q\", %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:233
+msgid "[KVS] Code listing:"
+msgstr "[KVS] Lista de códigos:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:238
+#, fuzzy
+msgid "[KVS] Window:"
+msgstr "Exibir a Janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:242
+#, c-format
+msgid "[KVS] Destroyed window with pointer %x"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:246
+msgid "[KVS] Call stack:"
+msgstr "[KVS] Chamada de pilha:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:464
+#, c-format
+msgid "Window with ID '%s' not found, returning empty string"
+msgstr "Janela com ID '%s' não encontrado, retornando string vazia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:130
+msgid "The specified window is not a channel"
+msgstr "A janela especificada não é um canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:392
+msgid "The $sw() function can be used only in aliases"
+msgstr "A função $sw() só pode ser usada em aliases"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:302
+#, fuzzy
+msgid "Invalid pitch value: using default"
+msgstr "Caminho (%s) inválido: usando padrão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:312
+#, fuzzy
+msgid "Invalid duration value: using default"
+msgstr "Duração (%s) inválida: usando padrão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:421
+#, fuzzy
+msgid "No button with type %Q named %Q"
+msgstr "Nenhum botão com tipo %s chamado %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:632
+msgid "Can't delete a null object reference"
+msgstr "Não é possível deletar uma referência nula do objeto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:638
+msgid "Can't delete an inexisting object"
+msgstr "Não é possível deletar um objeto inexistente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:692
+#, fuzzy
+msgid "Inexisting popup \"%Q\""
+msgstr "popup \"%s\" inexistente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:698
+msgid ""
+"Popup menu self-modification is not allowed (the popup is probably open)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:705
+#, fuzzy
+msgid "The menu item with id \"%Q\" does not exist in popup \"%Q\""
+msgstr "O itém de menu com id \"%s\" não existe no popup \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:860
+msgid ""
+"The argument of the -w switch did not evaluate to a valid window id: using "
+"default"
+msgstr ""
+"O argumento da opção -w não foi avaliado como id de janela válido: usando o "
+"valor padrão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:869
+msgid ""
+"The argument of the i switch did not evaluate to a number: using default"
+msgstr ""
+"O argumento da opção i não foi avaliado para um numero: usando o valor padrão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:981
+#, fuzzy
+msgid "Invalid color-set specification, using default"
+msgstr "Especificação do ícone inválida ' %s', usando o padrão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:992
+#, c-format
+msgid "Window '%s' not found, using current one"
+msgstr "Janela ' %s' não encontrada, usando somente a atual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:78
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a callback "
+"command named '%Q'"
+msgstr ""
+"Chamada de comando do módulo falhou: o módulo '%Q' não exporta um retorno de "
+"chamada chamado '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp:401
+#, c-format
+msgid "The popup '%s' is actually locked: 'self-modifications' are not allowed"
+msgstr ""
+"O popup '%s' está atualmente bloqueado: modificações automáticas não "
+"estãopermitidas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:822
+#, fuzzy, c-format
+msgid "Ignoring DCC from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "Ignorando PRIVMSG de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:839
+#, fuzzy, c-format
+msgid "Ignoring CTCP from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "Ignorando PRIVMSG de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:978
+msgid "The following CTCP reply has unrecognized target %Q"
+msgstr "A seguinte resposta CTCP não tem um destino reconhecido %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1025
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1128
+msgid "Channel CTCP"
+msgstr "CTCP de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:988
+#, fuzzy
+msgid "%Q %Q reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "%Q %S resposta de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1018
+msgid "The following CTCP request has unrecognized target %Q"
+msgstr "O seguinte pedido CTCP não tem um destino reconhecido %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1032
+#, fuzzy
+msgid ""
+"%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignored (flood limit "
+"exceeded)"
+msgstr ""
+"%Q %S pedido de \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignorado (limite de flood "
+"excedido)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1036
+msgid "ignored (unrecognized)"
+msgstr "ignorado (desconhecido)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "ignored"
+msgstr "ignorado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "replied"
+msgstr "respondido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1041
+#, fuzzy
+msgid "%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+msgstr "%Q %S pedido de \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1079
+msgid "The following CTCP PING reply has unrecognized target \"%Q\""
+msgstr "A seguinte resposta CTCP PING não tem um destino reconhecido \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1113
+#, c-format
+msgid ""
+"The following CTCP PING reply has a broken time identifier \"%S\", don't "
+"trust the displayed time"
+msgstr ""
+"A seguente resposta CTCP PING tem um identificador de tempo quebrado \"%S\", "
+"não confie no tempo exibido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1132
+msgid "%Q PING reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sec %u msec"
+msgstr "%Q resposta PING de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u seg %u mseg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1466
+msgid "The following CTCP ACTION has unrecognized target %Q"
+msgstr "A seguinte CTCP ACTION não tem um destino reconhecido %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1471
+msgid "CTCP ACTION from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "CTCP ACTION de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1517
+msgid "Unable to add file offer for file %Q (File not readable?)"
+msgstr ""
+"Não foi possível adicionar um compartilhamento de arquivo para %Q (Arquivo "
+"ilegível?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1521
+msgid "Added %d sec file offer for file %Q (%Q) to recipient %Q"
+msgstr ""
+"Adicionado(s) %d seg(s) ao pedido de envio para o arquivo %Q (%Q) para %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "private"
+msgstr "notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "channel notification:"
+msgstr "notificação do canal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1579
+msgid "notification"
+msgstr "privada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1584
+msgid "%Q unsets avatar"
+msgstr "%Q remover avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1591
+msgid "%Q changes avatar to %s"
+msgstr "%Q mudou o avatar para %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1637
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (HTTP GET %s)"
+msgstr ""
+": Não existe copia local válida do avatar disponível, pedindo um (HTTP GET %"
+"s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1644
+msgid ""
+": No valid local copy of avatar available; failed to start an HTTP transfer, "
+"ignoring"
+msgstr ""
+": Não existe copia local válida do avatar disponível; falhou o inicio de uma "
+"transferência HTTP, ignorando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1652
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (DCC GET %s)"
+msgstr ""
+": Não existe copia local válida do avatar disponível; pedindo um (DCC GET %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1664
+msgid ""
+": No valid local copy of avatar available; flood limit exceeded, ignoring"
+msgstr ""
+": Não existe copia local válida do avatar disponível; limite de flood "
+"excedido, ignorando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1669
+msgid ": No valid local copy of avatar available, ignoring"
+msgstr ": Não existe copia local válida do avatar disponível; ignorando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1677
+msgid ": No such nickname in the user database, ignoring the change"
+msgstr ""
+": Não existe tal apelido na base de dados de usuarios, ignorando a mudança"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1717
+#, fuzzy
+msgid "Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S)"
+msgstr "Ignorando o pedido DCC %S de \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%S %S)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1759
+#, fuzzy
+msgid "Processing DCC %Q request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s)"
+msgstr "Processando o pedido DCC %S de \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%S %S)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1770
+#, c-format
+msgid "Unable to process the above request: Cannot load DCC module (%s)"
+msgstr ""
+"Impossível processar o pedido anterior: Não foi possível carregar o módulo "
+"DCC (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1776
+msgid "Unable to process the above request: DCC module may be broken"
+msgstr ""
+"Impossível processar o pedido anterior: O módulo DCC pode estar quebrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:132
+msgid ""
+"[Server parser]: Encountered problems while parsing the following message:"
+msgstr ""
+"[Parser do servidor ]: Problemas encontrados enquanto se analisava a "
+"seguinte mensagem:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:134
+msgid "[Server parser]: [%s][%s] %Q"
+msgstr "[Parser do servidor ]: [%s][%s] %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:136
+#, c-format
+msgid "[Server parser]: %s"
+msgstr "[Parser do servidor ]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:98
+#, fuzzy
+msgid "Received ping from \r!s\r%Q\r (PING %Q), replied pong"
+msgstr "Ping recebido de \r!s\r%s\r (PING %s), respondendo com pong"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:125
+#, c-format
+msgid "Received pong from \r!s\r%s\r (PONG %s)"
+msgstr "Pong recebido de \r!s\r%s\r (PONG %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:151
+msgid "Server ERROR: %Q"
+msgstr "ERRO do Servidor : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:174
+msgid "Missing channel parameter in join message"
+msgstr "Faltando parâmetro do canal na mensagem de entrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:209
+msgid "Received a join message for an unknown channel, possible desync"
+msgstr ""
+"Recebida uma mensagem de entrada de um canal desconhecido, possível "
+"dessincronização?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:305
+#, fuzzy
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r [implicit +%c umode change]"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] entrou no \r!c\r%Q\r [implicito +%c umode "
+"alterado]]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:310
+#, fuzzy
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] entrou no \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:324
+#, fuzzy
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] acabou de entrar em \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:355
+msgid "Received a part message for an unknown channel, possible desync"
+msgstr ""
+"Recebida uma mensagem de saída de um canal desconhecido, possível "
+"dessincronização?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:384
+msgid "You have left channel \r!c\r%Q\r"
+msgstr "Acabou de sair do canal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:386
+msgid "You have left channel \r!c\r%Q\r: %Q"
+msgstr "Acabou de sair do canal \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:402
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] saiu do \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:406
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] acabou de sair do \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:420
+#, fuzzy
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] acabou de sair do \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:424
+#, fuzzy
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] acabou de sair do \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:494
+#, c-format
+msgid "Netsplit detected: %s"
+msgstr "Netsplit detectado: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:546
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:562
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] saiu do irc %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:589
+msgid "Received a kick message for an unknown channel, possible desync"
+msgstr ""
+"Recebida uma mensagem de chute de um canal desconhecido, possível "
+"dessincronização?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:626
+msgid "You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Você foi chutado de \r!c\r%Q\r por \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:633
+msgid "Attempting to rejoin \r!c\r%Q\r..."
+msgstr "Tentando reentrar em \r!c\r%Q\r..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:670
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@"
+"\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] foi chutadado de \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h"
+"\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:682
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just been kicked from \r!c\r%Q\r by \r!n\r%Q"
+"\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] acabou de ser kickado de \r!c\r%Q\r por \r!n\r%Q"
+"\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:710
+#, fuzzy
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+"A seguinte mensagem parece estar criptografada, mas o motor de criptografia "
+"falhou ao decodificá-la: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:776
+#, fuzzy
+msgid "Ignoring query-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Ignorando PRIVMSG de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:843
+msgid ""
+"Spam privmsg from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%s\")"
+msgstr ""
+"Spam privmsg de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (palavra spam coincidente \"%s"
+"\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:984
+#, fuzzy
+msgid "Ignoring channel-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Ignorando PRIVMSG de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1106
+#, fuzzy
+msgid "Ignoring Notice from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Ignorando PRIVMSG de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1159
+msgid "NickServ requests authentication, executing scheduled command"
+msgstr "NickServ pediu autenticação, executando comando programado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1162
+msgid ""
+"The scheduled NickServ identification command appears to be broken, please "
+"change the setting"
+msgstr ""
+"O comando de identificação NickServ programado parece estar incorreto, por "
+"favor altere a configuração"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1213
+msgid ""
+"Spam notice from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%Q\")"
+msgstr ""
+"Noticia spam de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (palavra spam coincidente \"%s"
+"\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1394
+msgid "Received a topic message for an unknown channel, possible desync"
+msgstr ""
+"Recebida uma mensagem de tópico de um canal desconhecido, possível "
+"dessincronização?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1413
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has changed topic to \"%Q%c\""
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] mudou o tópico para \"%Q%c\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1512
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] é agora conhecido como \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1063
+msgid "You have changed your nickname to %Q"
+msgstr "Você alterou seu apelido para %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1477
+msgid ""
+"The target of this query was lost and has been found when \r!n\r%Q\r [%Q@\r!h"
+"\r%Q\r] changed his nickname to \r!n\r%Q\r"
+msgstr ""
+"O destino deste query se perdeu e foi encontrado quando \r!n\r%Q\r [%Q@\r!h\r"
+"%Q\r] aletrou seu apelido para \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1486
+#, fuzzy
+msgid ""
+"The recent nickname change from \r!n\r%Q\r to \r!n\r%Q\r caused a query "
+"collision: merging output"
+msgstr ""
+"A mudança recente de apelido de \r!n\r%Q\r para \r!n\r%Q\r causou uma "
+"colisãode query: mesclando a saída"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1495
+msgid "End of merged output"
+msgstr "Final de saída mesclada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1540
+#, fuzzy
+msgid "Ignoring invite from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "Ignorando PRIVMSG de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "autojoining"
+msgstr "autoentar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "double-click the channel name to join"
+msgstr "Clique duas vezes no nome do canal para entrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1556
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] invites you to channel \r!c\r%Q\r (%Q)"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] convidou você para o canal \r!c\r%Q\r (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1564
+msgid "Received an invite message directed to another nick, possible desync"
+msgstr ""
+"Recebida uma mensagem INVITE dirigida a outro apelido, possível "
+"dessincronização"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1584
+msgid "WALLOPS from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "WALLOPS de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1648
+#, c-format
+msgid "You have set user mode %s"
+msgstr "Você setou o modo de usuário %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1655
+msgid "Received a mode change for an unknown channel, possible desync"
+msgstr ""
+"Recebida uma mudança de modo de um canal desconhecido, possível "
+"dessincronização"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1731
+msgid "%Q [%Q@%Q] has set channel key to \"\r!m-k\r%Q\r\""
+msgstr "%Q [%Q@%Q] colocou a senha \"\r!m-k\r%Q\r\" no canal "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1734
+msgid "%Q [%Q@%Q] has unset the channel key"
+msgstr "%Q [%Q@%Q] removeu a senha do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1754
+msgid "%Q [%Q@%Q] has set channel \r!m-l\rlimit to %Q\r"
+msgstr "%Q [%Q@%Q] colocou o limite do canal \r!m-l\rpara %Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1757
+msgid "%Q [%Q@%Q] has unset the channel limit"
+msgstr "%Q [%Q@%Q] removeu limite do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1779
+msgid "%Q [%Q@%Q] has set mode %c%c \r!n\r%Q\r"
+msgstr "%Q [%Q@%Q] colocou o modo %c%c \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1787
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1834
+msgid "%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"
+msgstr "%Q [%Q@%Q] colocou o canal \r!m%c%c\rmodo %c%c\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1819
+msgid "%Q [%Q@%Q] has set mode %c%c \r!m%c%c\r%Q\r"
+msgstr "%Q [%Q@%Q] colocou o modo %c%c \r!m%c%c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1860
+msgid "%Q [%Q@%Q] has set mode %s %Q"
+msgstr "%Q [%Q@%Q] colocou o modo %s %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1863
+msgid "%Q [%Q@%Q] has set channel mode %s"
+msgstr "%Q [%Q@%Q] colocou o modo de canal %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:147
+#, c-format
+msgid ""
+"One or more standard mode flags are missing in the server available modes.\n"
+"This is caused either by a non RFC1459-compliant IRC daemon or a broken "
+"server reply.\n"
+"Server umodes seem to be '%s' and channel modes seem to be '%s'.\n"
+"Ignoring this reply and assuming that the basic set of modes is available.\n"
+"If you have strange problems, try changing the server."
+msgstr ""
+"Um ou mais modos de flags padrões estão faltando nos modos de servidor "
+"disponiveis.\n"
+"Isto é causado por um daemon RFC1459 não compatível ou uma resposta de "
+"servidor quebrada.\n"
+"Os umodes do servidor parecem ser '%s' e os modos de canal parecem ser '%"
+"s'.\n"
+"Ignorando esta resposta e assumindo que o ajuste de modos básico está "
+"disponível.\n"
+"Se você tiver problemas estranhos, tente mudar de servidor."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:159
+msgid "Available user modes:"
+msgstr "Modos de usuário disponíveis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:169
+msgid ": Unknown user mode"
+msgstr ":Modo de usuário desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:177
+msgid "Available channel modes:"
+msgstr "Modos de canal disponíveis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:197
+msgid "Server %Q version %S supporting user modes '%S' and channel modes '%S'"
+msgstr ""
+"Servidor %Q na versão %S suportando os modos de usuário '%S' e modos de "
+"canal '%S'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:244
+msgid "This server supports the WATCH notify list method, it will be used"
+msgstr ""
+"Este servidor suporta o método WATCH da lista de notificação, e será "
+"utilizado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:262
+msgid "The current network is %Q"
+msgstr "A rede atual é %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:303
+msgid "This server supports the CODEPAGE command, it will be used"
+msgstr "Este servidor suporta o comando CODEPAGE, e será utilizado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:319
+#, c-format
+msgid "This server supports: %s"
+msgstr "Este servidor suporta: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:375
+msgid "End of NAMES for \r!c\r%Q\r"
+msgstr "Fim de NAMES para \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:472
+msgid "Names for \r!c\r%Q\r: %Q"
+msgstr "Nomes para \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:487
+msgid "(unknown)"
+msgstr "(Desconhecido)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:491
+msgid "Channel topic is: %Q"
+msgstr "O tópico do canal é: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:498
+msgid "Topic for \r!c\r%Q\r is: %Q"
+msgstr "Tópico para \r!c\r%Q\r é: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:516
+msgid "No channel topic is set"
+msgstr "O canal não possui um tópico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:521
+msgid "No topic is set for channel \r!c\r%Q\r"
+msgstr "Nenhum tópico posto para o canal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:560
+#, fuzzy
+msgid "Topic was set by %Q on %Q"
+msgstr "Tópico foi posto por \r!n\r%Q\r!%Q@\r!h\r%Q\r em %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:561
+#, fuzzy
+msgid "Topic was set by %Q"
+msgstr "Tópico foi posto por \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:569
+#, fuzzy
+msgid "Topic for \r!c\r%Q\r was set by %Q on %Q"
+msgstr "Tópico para \r!c\r%Q\r foi posto por \r!n\r%Q\r!%Q@\r!h\r%Q\r em %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:572
+#, fuzzy
+msgid "Topic for \r!c\r%Q\r was set by %Q"
+msgstr "Tópico para \r!c\r%Q\r é: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:592
+msgid "Channel mode for \r!c\r%Q\r is %s"
+msgstr "Modo de canal para \r!c\r%Q\r é %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:595
+msgid "User mode for \r!n\r%Q\r is %s"
+msgstr "Modo de usuário para \r!c\r%Q\r é %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:631
+msgid "End of channel %Q for \r!c\r%Q\r"
+msgstr "Fim do canal %Q para \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:635
+msgid "ban list"
+msgstr "Lista de bans"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:636
+msgid "invite list"
+msgstr "Lista de convites"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:637
+msgid "ban exception list"
+msgstr "Lista de exceções de bans"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:658
+msgid "%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"
+msgstr "%Q para \r!c\r%Q\r: \r!m-%c\r%Q\r (posto por %Q em %Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:665
+msgid "Ban listing"
+msgstr "Listagem de bans"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:668
+msgid "Invite listing"
+msgstr "Listagem de convites"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:671
+msgid "Ban exception listing"
+msgstr "Listagem de excepções de bans"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:740
+msgid ""
+"WHO entry for %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cChannel%c: \r!c\r%Q\r, %"
+"cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAway%c: %Q, %cReal name"
+"%c: %Q"
+msgstr ""
+"Entrada WHO para %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cCanal%c: \r!c\r%Q\r, %"
+"cServidor%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAusente%c: %Q, %"
+"cNome Real %c: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:797
+msgid "End of WHO list for %Q"
+msgstr "Fim da lista WHO para %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:856
+msgid ""
+"Something really weird is happening: the server is refusing all the login "
+"nicknames..."
+msgstr ""
+"Alguma coisa muito esquisita está acontecendo: o servidor está "
+"recusandologin de todos os nicks..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:861
+msgid ""
+"The server is refusing all the login nicknames: giving up, you must send the "
+"nickname manually"
+msgstr ""
+"O servidor está a recusando o login de todos os nicks: desistindo, você tem "
+"que enviar o nick manualmente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:871
+msgid "No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."
+msgstr ""
+"Não há meio de fazer login como '\r!n\r%Q\r' (%d: %Q), tentando '%Q'..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:945
+msgid "Command syntax %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:973
+#, fuzzy
+msgid "Tip: %Q"
+msgstr "Lista: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:976
+#, fuzzy
+msgid "Tip for %Q: %Q"
+msgstr "Tópico para \r!c\r%Q\r é: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:993
+#, fuzzy
+msgid "End of help about %Q"
+msgstr "Fim da lista WHO para %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1037
+msgid "%c\r!n\r%Q\r%c is away: %Q"
+msgstr "%c\r!n\r%Q\r%c está ausente: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1090
+msgid "%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "%c\r!n\r%Q\r%c é %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1095
+msgid "%c\r!n\r%Q\r%c's real name: %Q"
+msgstr "Nome real de %c\r!n\r%Q\r%c : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1115
+msgid "%c\r!n\r%Q\r%c was %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "%c\r!n\r%Q\r%c era %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1119
+msgid "%c\r!n\r%Q\r%c's real name was: %Q"
+msgstr "Nome real de %c\r!n\r%Q\r%c era: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1183
+msgid "%c\r!n\r%Q\r%c's channels: %Q"
+msgstr "%c\r!n\r%Q\r%c está nos canais: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1220
+msgid "Received a broken RPL_WHOISIDLE, can't evaluate the idle time"
+msgstr ""
+"Recebido um RPL_WHOISIDLE quebrado, não possível calcular o tempo que esteve "
+"inativo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1230
+msgid "%c\r!n\r%Q\r%c's idle time: %ud %uh %um %us"
+msgstr "Tempo inativo de %c\r!n\r%Q\r%c : %ud %uh %um %us"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1240
+msgid "%c\r!n\r%Q\r%c's signon time: %Q"
+msgstr "%c\r!n\r%Q\r%c entrou em: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1274
+msgid "%c\r!n\r%Q\r%c's server: \r!s\r%Q\r - %Q"
+msgstr "Servidor em que %c\r!n\r%Q\r%c está: \r!s\r%Q\r - %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1293
+msgid "%c\r!n\r%Q\r%c is authenticated as %Q"
+msgstr "%c\r!n\r%Q\r%c está autenticado como %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1325
+msgid "%c\r!n\r%Q\r%c's info: %Q"
+msgstr "Informações de %c\r!n\r%Q\r%c : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1372
+msgid "%c\r!n\r%Q\r%c WHOIS info from \r!s\r%Q\r"
+msgstr "Informção do WHOIS de %c\r!n\r%Q\r%c vinda de \r!s\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1389
+msgid "%c\r!n\r%Q\r%c WHOWAS info from \r!s\r%Q\r"
+msgstr "Informção do WHOWAS de %c\r!n\r%Q\r%c vinda de \r!s\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1457
+msgid "Can't evaluate creation time"
+msgstr "Impossivel avaliar o tempo de criação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1465
+msgid "Channel was created at %Q"
+msgstr "Canal criado em %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1470
+msgid "Channel \r!c\r%Q\r was created at %Q"
+msgstr "Canal \r!c\r%Q\r foi criado em %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1511
+msgid "USERHOST info: %Q"
+msgstr "Informação USERHOST: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1532
+msgid "Channel list begin: channel, users, topic"
+msgstr "Início da lista de canais: canal, usuarios, tópico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1559
+msgid "List: %Q"
+msgstr "Lista: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1573
+msgid "End of LIST"
+msgstr "Fim de LIST"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1597
+msgid "Link: %Q"
+msgstr "Link: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1612
+msgid "End of LINKS"
+msgstr "Fim de LINKS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1641
+msgid "[Leaving away status after %ud %uh %um %us]: %Q"
+msgstr "[Saindo do estado de ausente após %ud %uh %um %us]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1645
+msgid "[Leaving away status]: %Q"
+msgstr "[Saindo do estado de ausente]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1652
+msgid "Restoring pre-away nickname (%Q)"
+msgstr "Restaurando apelido pré-ausente (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1672
+msgid "[Entering away status]: %Q"
+msgstr "[Entrando em estado ausente]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1690
+msgid "Setting away nickname (%Q)"
+msgstr "Definindo apelido de ausente (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1762
+#, fuzzy, c-format
+msgid "%c\r!s\r%s\r%c's server info: %s"
+msgstr "Informações de %c\r!n\r%Q\r%c : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1773
+#, fuzzy, c-format
+msgid "%c\r!s\r%s\r%c's administrator is %s"
+msgstr "Informações de %c\r!n\r%Q\r%c : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1784
+#, fuzzy, c-format
+msgid "%c\r!s\r%s\r%c's contact adress is %s"
+msgstr "%c\r!n\r%Q\r%c está nos canais: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1812
+#, fuzzy
+msgid "\r!n\r%Q\r invited %Q into channel %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] convidou você para o canal \r!c\r%Q\r (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1834
+#, fuzzy, c-format
+msgid "%c\r!s\r%s\r%c's information:"
+msgstr "Informações de %c\r!n\r%Q\r%c : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1844
+#, c-format
+msgid "End of %c\r!s\r%s\r%c's information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1855
+#, fuzzy
+msgid "%c\r!s\r%s\r%c's time is %Q"
+msgstr "Informações de %c\r!n\r%Q\r%c : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1866
+msgid "%Q: no such server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1877
+msgid "%Q: no such channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1891
+#, fuzzy
+msgid "Cannot sent to channel: %Q"
+msgstr "Nenhum tópico posto para o canal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1894
+#, fuzzy
+msgid "Cannot sent text to channel %Q: %Q"
+msgstr "Acabou de sair do canal \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1909
+#, fuzzy
+msgid "Cannot sent to channel"
+msgstr "A Janela atual não é um canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1912
+#, fuzzy
+msgid "Cannot sent text to channel %Q"
+msgstr "Nenhum tópico posto para o canal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1928
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1936
+msgid "Your encoding is now %Q"
+msgstr "Sua codificação agora é %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1967
+#, fuzzy
+msgid "%c\r!n\r%Q\r%c's codepage is %Q: %Q"
+msgstr "%c\r!n\r%Q\r%c está nos canais: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1991
+#, c-format
+msgid "Your user mode is %s"
+msgstr "Seu modo de usuário é %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:158
+msgid "Failed to set the encoding to %Q: mapping not available."
+msgstr "Falhou ao configurar a codificação para %Q: mapeamento não disponível."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:175
+msgid "Changed text encoding to %Q"
+msgstr "Codificação do texto alterada para %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:503
+msgid "Connection to server lost"
+msgstr "Conexão com servidor foi perdida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:512
+msgid "Connection to server established"
+msgstr "Conexão com servidor estabelecida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:573
+msgid "[LINK WARNING]: Socket message truncated to 512 bytes."
+msgstr "[AVISO DO LINK]: Mensagem do socket truncada a 512 bytes."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:640
+msgid ""
+"The server seems to support the WATCH notify list method, will try to use it"
+msgstr ""
+"Este servidor parece suportar o método de lista de notificação WATCH, "
+"tentarei usar isto."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:688
+msgid "Can't resolve local host address, using user supplied one (%Q)"
+msgstr ""
+"Não foi possível resolver o endereço de máquina local, usando o fornecido "
+"pelo usuário (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:695
+msgid "Can't resolve local host address, using default 127.0.0.1"
+msgstr ""
+"Não foi possível resolver o endereço de máquina local, usando o padrão "
+"127.0.0.1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:701
+msgid "Local host address is %Q"
+msgstr "O endereço de máquina local é %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:749
+msgid "The server seems to have changed the idea about the local hostname"
+msgstr "O servidor parece ter mudado de idéia sobre o nome da máquina local"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:750
+msgid ""
+"You're probably using a broken bouncer or maybe something weird is happening "
+"on the IRC server"
+msgstr ""
+"Provavelmente você esta usando um bouncer quebarado ou algo muito estranho "
+"está acontecendo no servidor de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:776
+msgid ""
+"Here goes your \"broken bouncer hack\": The server has changed the hostname "
+"but I'll ignore the IP address change"
+msgstr ""
+"Aqui vai seu \"hack do bouncer quebarado\": O servidor mudou seu nome de "
+"máquina, mas vou ignorou a mudança de endereço IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:791
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:801
+msgid "The local IP address as seen by the IRC server is %Q"
+msgstr "O endereço IP local visto pelo servidor IRC é %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:815
+msgid "Can't start the DNS slave thread"
+msgstr "Não foi possível iniciar o processo escravo do DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:816
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:846
+msgid "Unable to resolve the local hostname as seen by the IRC server: %Q"
+msgstr ""
+"Não foi possível resolver o nome da máquina local como foi visto pelo "
+"servidor de IRC: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:822
+msgid "Looking up the local hostname as seen by the IRC server (%Q)"
+msgstr ""
+"Buscando o nome de máquina local como o visto pelo servidor de IRC (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:843
+#, fuzzy
+msgid ""
+"Unable to resolve the local hostname as seen by the IRC server: %Q, using "
+"previously resolved %Q"
+msgstr ""
+"Não foi possível resolver o nome da máquina local como foi visto pelo "
+"servidor de IRC: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:850
+#, fuzzy
+msgid "Local hostname as seen by the IRC server resolved to %Q"
+msgstr "O endereço IP local visto pelo servidor de IRC foi resolvido como %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:868
+msgid "Using server specific username (%Q)"
+msgstr "Utilizando nome de usuário especifico do servidor (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:873
+msgid "Using network specific username (%Q)"
+msgstr "Utilizando nome de usuário especifico da rede (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:892
+#, fuzzy
+msgid "Using reconnect specific nickname (%Q)"
+msgstr "Utilizando apelido especifico da rede (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:898
+msgid "Using server specific nickname (%Q)"
+msgstr "Utilizando apelido especifico do servidor (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:905
+msgid "Using network specific nickname (%Q)"
+msgstr "Utilizando apelido especifico da rede (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:922
+msgid "Using server specific real name (%Q)"
+msgstr "Utilizando nome real especifico do servidor (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:929
+msgid "Using network specific real name (%Q)"
+msgstr "Utilizando nome real especifico da rede (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:946
+msgid "Logging in as %Q!%Q :%Q"
+msgstr "Entrando como %Q!%Q :%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:962
+#, c-format
+msgid "Sending %s as password"
+msgstr "Enviando %s como senha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1033
+msgid "Executing scheduled network specific \"on connect\" commands"
+msgstr "Executando os comandos específicos da rede programados \"ao conectar\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1042
+msgid "Executing scheduled server specific \"on connect\" commands"
+msgstr ""
+"Executando os comandos específicos do servidor programados \"ao conectar\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1051
+#, fuzzy
+msgid "Executing scheduled identity specific \"on connect\" commands"
+msgstr "Executando os comandos específicos da rede programados \"ao conectar\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1101
+#, c-format
+msgid "The server refused the suggested nickname (%s) and named you %s instead"
+msgstr ""
+"O servidor recusou o apelido sugerido (%s) e nomeou-o %s preferivelmente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1113
+msgid "Login operations complete, happy ircing!"
+msgstr "Operações de entrada concluídas: bom bate-papo :)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1123
+msgid "Executing scheduled network specific \"on login\" commands"
+msgstr ""
+"Executando os comandos específicos da rede programados \"ao entrar/login\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1132
+msgid "Executing scheduled server specific \"on login\" commands"
+msgstr ""
+"Executando os comandos específicos do servidor programados \"ao entrar/login"
+"\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1141
+#, fuzzy
+msgid "Executing scheduled identity specific \"on login\" commands"
+msgstr ""
+"Executando os comandos específicos da rede programados \"ao entrar/login\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1153
+msgid "Setting configured user mode"
+msgstr "Colocando os modos de usuário configurados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1210
+msgid "Auto-joining network specific channels"
+msgstr "Entrando automaticamente nos canais específicos da rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1244
+msgid "Auto-joining server specific channels"
+msgstr "Entrando automáticamente nos canais específicos do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1341
+#, fuzzy
+msgid "Updating away state for channel %Q"
+msgstr "Nenhum tópico posto para o canal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_customtoolbardescriptor.cpp:230
+msgid "Backward compatibility action for toolbar.define"
+msgstr "Ação de compatibilidade inversa para toolbar.define"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:790
+msgid "Installation problems ?"
+msgstr "Problemas na instalação ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:791
+msgid ""
+"<b>Ooops...</b><br><br><b>There are some reasons that make me think that "
+"your KVIrc installation is incomplete.</b><br><br>I might be wrong, but you "
+"seem to miss some of the features that the default KVIrc script provides."
+"This may happen because you have upgraded to an unstable cvs version, "
+"because you have accidentally deleted or damaged your configuration files, "
+"because you have installed an incomplete script or because you have hit a "
+"bug in KVIrc.<br><br>I can repeat the installation of the default script in "
+"order to restore the missing features.<br><b>Do you want the default script "
+"to be restored ?</b><br><br><font size=\"-1\">Hint: If you're a scripter and "
+"have intentionally removed some of the scripting features then you may "
+"safely click on \"No and Don't Ask Me Again\", otherwise it might be a good "
+"idea to click \"Yes\". If you still want to choose \"No\" you can always "
+"restore the default script by choosing the appropriate entry from the "
+"\"Scripting\" menu.</font>"
+msgstr ""
+"<b>Ooopa...</b><br><br><b>Por alguma razão me fez pensar que a sua "
+"instalação do KVirc não está completa.</b><br><br>Eu posso estar errado, mas "
+"parecem faltar algumas opções que o script padrão do KVirc fornece. Isto "
+"pode acontecer porque vocêatualizou para uma versão cvs instável, porque "
+"acidentalmente você apagou ou danificou os seus arquivos de configuração, "
+"porque você instalou um script incompleto ou porque você encontrou algum "
+"erro no KVirc.<br><br>Eu posso repetir a instalação do script padrão para "
+"restaurar as opções que faltam. <br><b>Deseja restaurar o script padrão ?</"
+"b><br><br><font size=\"-1\">Nota: se você for um programador e removeu "
+"intencionalmente algumas opções do script pode seguramente clicar em \"Não e "
+"Não me pergunte novamente\", ou pode ser uma boa ideia clicar em \"Sim\". Se "
+"ainda quiser escolher \"Não\" sempre poderá restaurar o script padrão ao "
+"escolher a entrada apropriada no menu \"Scripting\".</font>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:805
+msgid "No and Don't Ask Me Again"
+msgstr "Não e Não me pergunte novamente."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:828
+msgid "Restore Default Script - KVIrc"
+msgstr "Restaurar Script Padrão - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:829
+msgid ""
+"You are about to restore the default script.<br>This will erase any script "
+"changes you have made.<br>Do you wish to proceed?"
+msgstr ""
+"Você está prestes a restaurar o script padrão.<br>Isto apagará todas as "
+"mudanças no script que voce tenha feito.<br>Você deseja proseguir? "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:872
+#, c-format
+msgid "Remote command received (%s ...)"
+msgstr "Comando remoto recebido (%s ...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1033
+msgid "File download failed"
+msgstr "Download do arquivo falhou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1035
+msgid "File download from %1 failed"
+msgstr "Download do arquivo de %1 falhou "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1044
+#, fuzzy
+msgid "File download successfully complete"
+msgstr "Download do arquivo falhou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1046
+#, fuzzy
+msgid "File download from %1 successfully complete"
+msgstr "Download do arquivo de %1 falhou "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1066
+msgid "Avatar download failed for %Q!%Q@%Q and url %Q: %Q"
+msgstr "Download do avatar falhou para %Q!%Q@%Q e url %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2014
+#, c-format
+msgid "The commandline for media type '%s' seems to be broken"
+msgstr "A linha de comando para tipo de mídia '%s' parece estar quebrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2018
+#, c-format
+msgid "Media type of file %s matched to '%s' but no commandline specified"
+msgstr ""
+"O tipo de mídia %s é semelhante a '%s' mas a linha de comando não foi "
+"especificada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2023
+#, c-format
+msgid "No idea on how to play file %s (no media type match)"
+msgstr ""
+"Sem idéia de como reproduzir o arquivo %s (Tipo de mídia não reconhecida)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:39
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:48
+#, c-format
+msgid "[SSL]: %c%s"
+msgstr "[SSL]: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:40
+#, c-format
+msgid "[SSL]: Cipher: %c%s"
+msgstr "[SSL]: Cifra: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:41
+#, c-format
+msgid "[SSL]: Version: %c%s"
+msgstr "[SSL]: Versão: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:42
+#, c-format
+msgid "[SSL]: Bits: %c%d (%d used)"
+msgstr "[SSL]: Bits: %c%d (%d usado(s))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:49
+#, c-format
+msgid "[SSL]: Version: %c%d"
+msgstr "[SSL]: Versão: %c%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:50
+#, c-format
+msgid "[SSL]: Serial number: %c%d"
+msgstr "[SSL]: Número de série: %c%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:51
+msgid "[SSL]: Subject:"
+msgstr "[SSL]: Assunto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:59
+#, c-format
+msgid "[SSL]: Common name: %c%s"
+msgstr "[SSL]: Nome comum: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:60
+#, c-format
+msgid "[SSL]: Organization: %c%s"
+msgstr "[SSL]:: Organização: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:61
+#, c-format
+msgid "[SSL]: Organizational unit: %c%s"
+msgstr "[SSL]: Unidade organizacional: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:62
+#, c-format
+msgid "[SSL]: Country: %c%s"
+msgstr "[SSL]: País: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:63
+#, c-format
+msgid "[SSL]: State or province: %c%s"
+msgstr "[SSL]: Estado ou província: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:64
+#, c-format
+msgid "[SSL]: Locality: %c%s"
+msgstr "[SSL]: Localidade: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:58
+msgid "[SSL]: Issuer:"
+msgstr "[SSL]: Emissor:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:65
+#, c-format
+msgid "[SSL]: Public key: %c%s (%d bits)"
+msgstr "[SSL]: Chave pública : %c%s (%d bits)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:66
+#, c-format
+msgid "[SSL]: Signature type: %c%s"
+msgstr "[SSL]: Tipo da assinatura: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:73
+#, c-format
+msgid "[SSL]: Signature contents: %c%s"
+msgstr "[SSL]: Conteúdo da assinatura: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:82
+msgid "Peer X509 certificate"
+msgstr "Ponta X509 certificada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:85
+msgid "[SSL]: The peer didn't provide a certificate"
+msgstr "[SSL]: A ponta não forneceu um certificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1219
+msgid "Current transmission cipher"
+msgstr "Cifra atual da transmissão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:92
+msgid "[SSL]: Can't find out the current cipher info"
+msgstr "[SSL]: Não foi possível encontrar fora a informação da cifra atual "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:113
+#, c-format
+msgid "[%s]: [SSL]: Using certificate file %s"
+msgstr "[%s]: [SSL]: Usando arquivo de certificado %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:116
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the certificate file %s"
+msgstr ""
+"[%s]: [ERRO de SSL]: Erro de E/S de arquivo enquanto tentava-se usar o "
+"arquivo de certificado %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:146
+#, c-format
+msgid "[%s]: [SSL ERROR]: %s"
+msgstr "[%s]: [ERRO de SSL]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:136
+#, c-format
+msgid "[%s]: [SSL]: Using private key file %s"
+msgstr "[%s]: [SSL]: Usando arquivo de chave privada %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:139
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the private key file %s"
+msgstr ""
+"[%s]: [ERRO de SSL]: Erro de E/S de arquivo enquanto tentava-se usar o "
+"arquivo de chave privada %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:375
+msgid "Reconnect attempt aborted"
+msgstr "Tentativa de reconexão abortada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:443
+msgid ""
+"This is the first connection in this IRC context: using the global server "
+"setting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:483
+msgid ""
+"No servers available. Check the options dialog or use the /SERVER command"
+msgstr ""
+"Não existem servidores disponíveis. Verifique o diálogo de opções ou utilize "
+"o comando /SERVER"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:491
+msgid ""
+"Ooops.. you've hit a bug in the servers database... I have found a server "
+"but not a network..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:504
+msgid "No proxy hosts available, resuming direct connection"
+msgstr "Não existem servidores proxy disponíveis, continuando conexão direta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:582
+#, c-format
+msgid "Connection attempt failed [%s]"
+msgstr "A tentativa de conexão falhou [ %s ]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:600
+#, c-format
+msgid "Will attempt to reconnect in %d seconds"
+msgstr "Tentar reconectar em %d segundos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:604
+#, c-format
+msgid "%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:606
+#, c-format
+msgid "%d of %d"
+msgstr "%d de %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:633
+#, c-format
+msgid "Maximum number of reconnect attempts reached (%d): giving up"
+msgstr ""
+"O número máximo de tentativas para reconectar chegaram a (%d): desistindo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:647
+msgid ""
+"The connection attempt failed while using a cached IP address for the "
+"current server"
+msgstr ""
+"A tentativa de conexão falhou enquanto se utiizava um endereço IP armazenado "
+"para o servidor atual "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:648
+msgid "The problem *might* be caused by an updated DNS entry"
+msgstr "O problema *poderia* ser causado por uma entrada DNS atualizada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:649
+msgid "Try reconnecting with caching disabled"
+msgstr "Tentando reconectar com armazenamento desabilitado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:673
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:382
+msgid "%Q established [%s (%s:%u)]"
+msgstr "%Q estabelecida [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Secure connection"
+msgstr "Conexão segura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Connection"
+msgstr "Conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:779
+#, c-format
+msgid "Connection terminated [%s (%s:%u)]"
+msgstr "Conexão terminada [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:791
+msgid "The connection terminated unexpectedly. Trying to reconnect..."
+msgstr "A conexão terminou inesperadamente, tentando reconectar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:874
+msgid "Sent QUIT, waiting for the server to close the connection..."
+msgstr "QUIT enviado, esperando servidor fechar a conexão..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:685
+msgid "Normal text"
+msgstr "Texto Normal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:686
+msgid "Selection"
+msgstr "Seleção"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:687
+msgid "Highlighted text"
+msgstr "Texto destacado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:688
+msgid "URL foreground"
+msgstr "Cor de primeiro plano da URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:689
+msgid "Link overlay foreground"
+msgstr "Link da capa de primeiro plano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:690
+msgid "Parser error"
+msgstr "Erro do analisador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:691
+msgid "Parser warning"
+msgstr "Aviso do analisador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:692
+msgid "Host lookup result"
+msgstr "Resultado da pesquisa da máquina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:693
+msgid "Socket message"
+msgstr "Mensagem de socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:694
+msgid "Socket warning"
+msgstr "Aviso de socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:695
+msgid "Socket error"
+msgstr "Erro de socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:696
+msgid "System error"
+msgstr "Erro do sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:697
+msgid "Raw data to server"
+msgstr "Dados raw para o servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:698
+msgid "Connection status"
+msgstr "Estado da conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:699
+msgid "System warning"
+msgstr "Aviso do sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:700
+msgid "System message"
+msgstr "Mensagem do sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:701
+msgid "Unhandled server reply"
+msgstr "Resposta não manipulada do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:702
+msgid "Server information"
+msgstr "Informação do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:703
+msgid "Server Message of the Day"
+msgstr "Mensagem do Dia do Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:704
+msgid "Server ping"
+msgstr "Ping do Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:705
+msgid "Join message"
+msgstr "Mensagem de entrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:706
+msgid "Part message"
+msgstr "Messagem de partida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:707
+msgid "Unrecognized/broken message"
+msgstr "Mensagem desconhecida/quebrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:708
+msgid "Topic message"
+msgstr "Mensagem de tópico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:709
+msgid "Own private message"
+msgstr "Mensagem do privado próprio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:710
+msgid "Channel private message"
+msgstr "Mensagem privada ao canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:711
+msgid "Query private message"
+msgstr "Mensagem de pergunta privada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:712
+msgid "CTCP reply"
+msgstr "Resposta de CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:713
+msgid "CTCP request replied"
+msgstr "Pedido de CTCP respondido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:714
+msgid "CTCP request ignored"
+msgstr "Pedido de CTCP ignorado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:715
+msgid "CTCP request flood warning"
+msgstr "Aviso de flood de pedido CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:716
+msgid "CTCP request unknown"
+msgstr "Pedido de CTCP desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:717
+msgid "User action"
+msgstr "Ação do Usuário"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:718
+msgid "Avatar change"
+msgstr "Mudança de avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:719
+msgid "Quit message"
+msgstr "Mensagem de saída"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:720
+msgid "Split message"
+msgstr "Messagem de separação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:721
+msgid "Quit on netsplit message"
+msgstr "Sair com a mensagem de separação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:722
+msgid "Nick changes"
+msgstr "Mudanças de apelido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:723
+msgid "+o mode change"
+msgstr "mudou o modo para +o"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:724
+msgid "-o mode change"
+msgstr "mudou o modo para -o"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:725
+msgid "+v mode change"
+msgstr "mudou o modo para +v"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:726
+msgid "-v mode change"
+msgstr "mudou o modo para -v"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:727
+msgid "Multiple user mode change"
+msgstr "Mudança múltipla do modo de usuário"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:728
+msgid "Channel key change"
+msgstr "Mudança da senha do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:729
+msgid "Channel limit change"
+msgstr "Mudança do limite do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:730
+msgid "+b mode change"
+msgstr "mudar modo para +b"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:731
+msgid "-b mode change"
+msgstr "mudar modo para -b"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:732
+msgid "+e mode change"
+msgstr "mudar modo para +e"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:733
+#, fuzzy
+msgid "-e mode change"
+msgstr "mudou o modo para -o"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:734
+msgid "+I mode change"
+msgstr "mudar modo para +i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:735
+msgid "-I mode change"
+msgstr "mudar modo para -i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:736
+msgid "Multiple channel mode change"
+msgstr "Mudança múltipla do modo de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:737
+msgid "Who reply"
+msgstr "Resposta de Who"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:738
+msgid "DCC request"
+msgstr "Pedido de DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:739
+msgid "DCC message"
+msgstr "Mensagem de DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:740
+msgid "DCC error"
+msgstr "Erro de DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:741
+msgid "Nickname problem"
+msgstr "Problema no apelido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:742
+msgid "Whois user reply"
+msgstr "Resposta whois do usuário"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:743
+msgid "Whois channels reply"
+msgstr "Resposta Whois dos canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:744
+msgid "Whois idle reply"
+msgstr "Resposta Whois inativo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:745
+msgid "Whois server reply"
+msgstr "Resposta Whois do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:746
+msgid "Whois other reply"
+msgstr "Outras respostas de Whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:747
+msgid "Channel creation time reply"
+msgstr "Resposta de tempo na criação do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:748
+msgid "Notify list joins"
+msgstr "Notificar entradas na lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:749
+msgid "Notify list leaves"
+msgstr "Notificar saídas da lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:750
+msgid "Own encrypted private message"
+msgstr "Mensagem privada própria criptografada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:751
+msgid "Channel encrypted private message"
+msgstr "Mensagem privada criptografada do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:752
+msgid "Query encrypted private message"
+msgstr "Mensagem privada criptografada do privado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:753
+msgid "DCC chat message"
+msgstr "Mensagem de DCC chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:754
+msgid "Encrypted DCC chat message"
+msgstr "Mensagem de DCC chat criptografada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:755
+msgid "Login operations completed"
+msgstr "Operações de entrada completas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:756
+msgid "Kick action"
+msgstr "Ação de chute"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:757
+msgid "Links reply"
+msgstr "Resposta de Links"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:758
+msgid "Spam report"
+msgstr "Reportar spam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:759
+msgid "ICQ message"
+msgstr "Mensagem de ICQ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:760
+msgid "ICQ user-message"
+msgstr "Mensagem de usuário do ICQ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:761
+msgid "Outgoing ICQ user-message"
+msgstr "Mensagem de saida de usuário do ICQ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:762
+msgid "Channel notice"
+msgstr "Notícia do Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:763
+msgid "Encrypted channel notice"
+msgstr "Notícia do Canal criptografada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:764
+msgid "Query notice"
+msgstr "Notícia de privado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:765
+msgid "Encrypted query notice"
+msgstr "Notícia de privado criptografada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:766
+msgid "Server notice"
+msgstr "Notícia do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:767
+msgid "Halfop mode change"
+msgstr "Mudaça de modo semioperador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:768
+msgid "Unknown CTCP reply"
+msgstr "Resposta CTCP desconhecida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:769
+msgid "NickServ message"
+msgstr "Mensagem do NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:770
+msgid "ChanServ message"
+msgstr "Mensagem do ChanServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:771
+msgid "Away message"
+msgstr "Mensagem de ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:772
+msgid "Ident message"
+msgstr "Mensagem de ident"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:773
+msgid "Channel list message"
+msgstr "Mensagem da lista de canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:774
+msgid "Half-deop mode change"
+msgstr "Mudança de modo deop semioperador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:775
+msgid "Invite message"
+msgstr "Mensagem de convite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:776
+msgid "Multimedia message"
+msgstr "Mensagem multimídia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:777
+msgid "Query trace message"
+msgstr "Rastrear mensagem de privado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:778
+msgid "Wallops message"
+msgstr "Mensagem wallops"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:779
+msgid "Join error message"
+msgstr "Mensagem de erro ao entrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:780
+msgid "Broadcast private message"
+msgstr "Mensagem de privado difundida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:781
+msgid "Broadcast notice"
+msgstr "Difundir notícia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:782
+msgid "Am kicked"
+msgstr "Am chutado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:783
+msgid "Am op'd"
+msgstr "Am \"opado\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:784
+msgid "Am voiced"
+msgstr "Am \"voiceado\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:785
+msgid "Am deop'd"
+msgstr "Am \"desopado\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:786
+msgid "Am devoiced"
+msgstr "\"Am devoiceado\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:787
+msgid "Am halfop'd"
+msgstr "Am \"semiopado\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:788
+msgid "Am de-halfop'd"
+msgstr "Am \"semidesopado\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:789
+msgid "Ban matching my mask"
+msgstr "Banir semelhança com minha máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:790
+msgid "Unban matching my mask"
+msgstr "Desbanir semelhança com minha máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:791
+msgid "Ban exception matching my mask"
+msgstr "Exceção de ban semelhante a minha máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:792
+msgid "Ban unexception matching my mask"
+msgstr "Ban sem exceção combina com minha máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:793
+msgid "Invite exception matching my mask"
+msgstr "A exceção de convite combina com minha máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:794
+msgid "Invite unexception matching my mask"
+msgstr "Convite sem exceção combina com minha máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:795
+msgid "Ignored user message"
+msgstr "Mensagem de usuário ignorada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:796
+msgid "Server statistics"
+msgstr "Estatisticas do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:797
+msgid "SSL message"
+msgstr "Mensagem SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:108
+msgid "Search"
+msgstr "Procurar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:799
+msgid "Generic success"
+msgstr "Sucesso genérico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:800
+msgid "Generic status"
+msgstr "Estado genérico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:801
+msgid "Generic verbose message"
+msgstr "Mensagem genérica detalhada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:802
+msgid "Generic warning"
+msgstr "Aviso genérico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:803
+msgid "Generic error"
+msgstr "Erro genérico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:804
+msgid "Generic critical error"
+msgstr "Erro crítico genérico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:805
+msgid "Chan admin status set"
+msgstr "Colocado estado de admin de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:806
+msgid "Chan admin status unset"
+msgstr "Retirado estado de admin de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:807
+msgid "Own chan admin status set"
+msgstr "Colocado estado de admin proprietário do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:808
+msgid "Own chan admin status unset"
+msgstr "Removido estado de admin proprietário do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:809
+msgid "Userop mode change"
+msgstr "Mudança de modo usuario operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:810
+msgid "User-deop mode change"
+msgstr "Mudança de modo usuario não operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:811
+msgid "Am userop'd"
+msgstr "Am \"opado\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:812
+msgid "Am de-userop'd"
+msgstr "Am \"desopado\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:813
+msgid "Verbose/Debug"
+msgstr "Verbose/Depurar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:814
+msgid "Chan owner status set"
+msgstr "Posto estado de proprietário do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:815
+msgid "Chan owner status unset"
+msgstr "Removido estado de propietario do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:816
+msgid "Own chan owner status set"
+msgstr "Posto o estado de proprietário do canal "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:817
+msgid "Own chan owner status unset"
+msgstr "Removido estado de proprietário do canal "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:818
+msgid "Server error"
+msgstr "Erro do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:22
+#, fuzzy
+msgid "Help"
+msgstr "&Ajuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:820
+#, fuzzy
+msgid "Text Encoding Server message"
+msgstr "Mensagem de erro ao entrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:826
+#, fuzzy
+msgid "BitTorrent message"
+msgstr "Mensagem de ident"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:970
+msgid "Missing absolute directory for the theme information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:978
+#, fuzzy
+msgid "Failed to create the theme directory"
+msgstr "Impossível de criar o diretório de tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1061
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1096
+#, fuzzy
+msgid "Failed to save one of the theme images"
+msgstr "Falhou ao carregar a imagem selecionada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1074
+#, fuzzy
+msgid "Failed to create the theme subdirectory"
+msgstr "Impossível de criar o diretório de tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1213
+msgid "Boolean options (1/0)"
+msgstr "Opções booleanas (1/0)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1214
+msgid "Rectangle options (x,y,width,height)"
+msgstr "Opções do retângulo (x, y, largura, altura)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1215
+msgid "String options (string value)"
+msgstr "Opções da string (valor da string)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1216
+msgid "Color options (#RRGGBB)"
+msgstr "Opções de cor (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1217
+msgid "Mirccolor options (#RRGGBB)"
+msgstr "Opções de Mirccolor (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1218
+msgid "Irc context color options (#RRGGBB)"
+msgstr "Opções da cor do contexto do IRC (# RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1219
+msgid "Pixmap options (image path)"
+msgstr "Opções de Pixmap (caminho da imagem)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1220
+msgid "Unsigned integer options (unsigned integer constant)"
+msgstr "Opções do inteiro não assinadas (constante de inteiro não assinada)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1221
+msgid "Font options (family,pointsize,style,charset,weight,flags (biusf))"
+msgstr "Opções de fonte (family,pointsize,style,charset,weight,flags (biusf))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1222
+msgid "Message color options (image_id,foreground,background,logFlag (0/1))"
+msgstr ""
+"Opções de cor da mensagem (image_id, primeiro plano, fundo, logFlag (0/1))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1223
+msgid "String list options (comma separated list of strings)"
+msgstr "Opções da lista de strings (lista de strings separadas por vírgulas)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC"
+msgstr "IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC Context related actions"
+msgstr "Ações Relacionadas ao Contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic"
+msgstr "Genérico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic actions"
+msgstr "Ações genéricas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Settings"
+msgstr "Configurações"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Actions related to settings"
+msgstr "Acões relacionadas às configurações"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:30
+msgid "Scripting"
+msgstr "Scripting"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+msgid "Scripting related actions"
+msgstr "Acões relacionadas ao Scripting"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "GUI"
+msgstr "GUI"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "Actions related to the Graphic User Interface"
+msgstr "Acões relacionadas à Interface Gráfica do Usuário (GUI)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:77
+msgid "Channel"
+msgstr "Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+msgid "IRC Channel related actions"
+msgstr "Ações Relacionadas ao Contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Tools"
+msgstr "Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Actions that will appear in the \"Tools\" menu"
+msgstr "Ações que aparecerão no menu \"Ferramentas\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:157
+msgid "Sending out PING based lag probe"
+msgstr "Enviando um PING baseado na verificação do lag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:167
+msgid "Sending out CTCP based lag probe"
+msgstr "Enviando um CTCP baseado na verificação do lag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:188
+#, c-format
+msgid "Registered lag check with reliability %u (%s)"
+msgstr "Verificação do lag registada com confiabilidade %u (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:220
+#, c-format
+msgid "Lag check completed (%s)"
+msgstr "Verificação do lag completa (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:259
+#, c-format
+msgid "Lag check aborted (%s)"
+msgstr "Verificação do lag abortaeda (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:143
+msgid "Hostname resolution aborted"
+msgstr "Resolução do nome do host abortada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:156
+msgid "Attempting %Q to %Q (%Q) on port %u"
+msgstr "Tentando %Q com %Q (%Q) na porta %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "secure connection"
+msgstr "conexão segura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "connection"
+msgstr "conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:165
+#, c-format
+msgid "Attempting to 'bounce' on proxy %s on port %u (protocol %s)"
+msgstr "Tentar 'bounce' no proxy %s na porta %u (protocolo %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:194
+#, c-format
+msgid "Using cached proxy IP address (%s)"
+msgstr "Usando ENDEREÇO IP do proxy armazenado (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:237
+msgid "Unable to look up the IRC proxy hostname: Can't start the DNS slave"
+msgstr ""
+"Não foi possível encontrar o nome de máquina do proxy IRC: não pude iniciar "
+"o DNS escravo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:265
+msgid "Resuming direct server connection"
+msgstr "Recomeçando a conexão direta do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:248
+#, c-format
+msgid "Looking up the proxy hostname (%s)..."
+msgstr "Localizando nome de host do proxy (%s)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:261
+msgid "Can't find the proxy IP address: %Q"
+msgstr "Não foi possível encontrar o endereço IP do proxy: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:271
+#, fuzzy
+msgid "Proxy hostname resolved to %Q"
+msgstr "O nome do host do proxy foi resolvido para %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:284
+#, fuzzy
+msgid "Proxy %Q has a nickname: %Q"
+msgstr "Proxy %s tem um apelido: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:322
+#, c-format
+msgid "Using cached server IP address (%s)"
+msgstr "Usando o ENDEREÇO IP (%s) armazenado do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:354
+msgid "Unable to look up the server hostname: Can't start the DNS slave"
+msgstr ""
+"Não foi possível encontrar o nome de máquina do servidor: não pude iniciar o "
+"DNS escravo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:359
+#, c-format
+msgid "Looking up the server hostname (%s)..."
+msgstr "Localizando nome de máquina do servidor (%s)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:373
+msgid "Can't find the server IP address: %Q"
+msgstr "Não foi possível encontrar o endereço IP do servidor: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:380
+#, fuzzy
+msgid "If this server is an IPv6 one, try /server -i %Q"
+msgstr "Se este servidor utilizar somente IPv6, tente /server -i %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:390
+#, fuzzy
+msgid "Server hostname resolved to %Q"
+msgstr "O nome de máquina do servidor foi resolvido como %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:400
+#, fuzzy
+msgid "Real hostname for %Q is %Q"
+msgstr "O nome do host real para %s é %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:414
+#, fuzzy
+msgid "Server %Q has a nickname: %Q"
+msgstr "Servidor %s tem um apelido: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:468
+msgid "The specified bind address (%Q) is not valid"
+msgstr "O endereço (%Q) especificado para fazer conexões não é válido."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:473
+msgid ""
+"The specified bind address (%Q) is not valid (the interface it refers to "
+"might be down)"
+msgstr ""
+"O endereço (%Q) especificado para fazer conexões não é válido (A interface a "
+"que ele se refere pode estar desativada)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:493
+#, c-format
+msgid "The system-wide IPv6 bind address (%s) is not valid"
+msgstr ""
+"O endereço (%s) do sistema especificado para fazer conexões IPv6 não é válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:500
+#, c-format
+msgid ""
+"The system-wide IPv6 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+"O endereço (%s) do sistema especificado para fazer conexões IPv6 não é "
+"válido (A interface a que ele se refere pode estar desativada)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:522
+#, c-format
+msgid "The system-wide IPv4 bind address (%s) is not valid"
+msgstr ""
+"O endereço (%s) do sistema especificado para fazer conexões IPv4 não é válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:529
+#, c-format
+msgid ""
+"The system-wide IPv4 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+"O endereço (%s) do sistema especificado para fazer conexões IPv4 não é "
+"válido (A interface a que ele se refere pode estar desativada)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:230
+msgid "Channel operators"
+msgstr "Operadores de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:231
+msgid "Voiced users"
+msgstr "Usuarios com voice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:232
+msgid "Half-operators"
+msgstr "semioperadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:233
+msgid "Ban masks"
+msgstr "Máscaras de Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:234
+msgid "Color free (no ANSI colors)"
+msgstr "Livre de cores (sem cores ANSI)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:235
+msgid "Ban exception masks"
+msgstr "Máscaras de exceções de ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:236
+msgid "Invite exception masks or forbid /INVITE"
+msgstr "Máscaras de exceção de invite ou proibir /INVITE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:237
+msgid "Secret"
+msgstr "Secreto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:238
+msgid "Private"
+msgstr "Privado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:239
+msgid "Topic change restricted"
+msgstr "Mudança de tópico restringida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:240
+msgid "Invite only"
+msgstr "Somente por convite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:241
+msgid "No external messages"
+msgstr "Sem mensagens externas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:242
+msgid "Anonymous or protected user"
+msgstr "Usuário anônimo ou protegido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:243
+msgid "Quiet or channel owner"
+msgstr "Quieto ou proprietário do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:244
+msgid "Limited number of users"
+msgstr "Número de usuários limitado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:245
+msgid "Key"
+msgstr "Senha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:246
+msgid "Moderated"
+msgstr "Moderado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:247
+msgid "Registered"
+msgstr "Registrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:248
+msgid "Censor swear words"
+msgstr "Palavrões censurados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:249
+msgid "Impossible to speak and change nick if not authenticated with NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:250
+msgid "Impossible to change nick if not authenticated with NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:251
+msgid "Only registered nicks can join"
+msgstr "Somentes apelidos registrados podem entar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:252
+msgid "No kicks able (unless U-Line)"
+msgstr "Sem poder de chute (exceto U-line)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:253
+msgid "IRC-Op only channel"
+msgstr "Canal somente para IRC-Op"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:254
+msgid "Server/Network/Tech Admin only channel"
+msgstr "Canal somente para Administrador de Servidor/Rede/Técnico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:255
+msgid "Forbid /KNOCK"
+msgstr "Proibido /KNOCK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:256
+msgid "Strip colors"
+msgstr "Tirar cores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:257
+msgid "Redirect on channel full"
+msgstr "Redirecionar em canais cheios"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:258
+msgid "Forbid channel CTCPs"
+msgstr "Poibido CTCP no Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:259
+msgid "User-operators OR Auditorium: /NAMES and /WHO show only ops"
+msgstr "Usuários-operadores OU Auditorium: /NAMES e /WHO mostram apenas ops"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:260
+msgid "Only 7-bit letters in nicknames allowed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:261
+msgid "Impossible to use both 7-bit and 8-bit letters in nicknames"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:270
+msgid "o: IRC operator (OPER)"
+msgstr "Modos de usuário disponiveis:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:271
+msgid "O: Local IRC operator (LOCOP)"
+msgstr "O: Operador de IRC Local (LOCOP)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:272
+msgid "i: Invisible"
+msgstr "i: Invisível"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:273
+msgid "w: Recipient for WALLOPS messages"
+msgstr "w: Receptor de mensagens WALLOPS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:274
+msgid ""
+"r: User with restricted connection (or recipient for messages about rejected "
+"bots)"
+msgstr ""
+"r: Usuário com conexão restrita (ou recepiente para mensagens sobre bots "
+"rejeitados)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:275
+msgid "s: Recipient for server notices"
+msgstr "s: Recipiente para noticias de servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:276
+msgid "z: Recipient for oper wallop messages"
+msgstr "z: Receptor de mensagens wallop do operador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:277
+msgid "c: Recipient for cconn messages"
+msgstr "c: Receptor de mensagens cconn"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:278
+msgid "k: Recipient for server kill messages"
+msgstr "k: Receptor de mensagens kill do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:279
+msgid "f: Recipient for full server notices"
+msgstr "f: Recipiente para noticias cheias de servidores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:280
+msgid "y: Spy :)"
+msgstr "y: Espião :)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:281
+msgid "d: Obscure 'DEBUG' flag"
+msgstr "d: flag 'DEPURAR' obscura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:282
+msgid "n: Recipient for nick changes"
+msgstr "n: Recipiente para mudanças de nicks"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:100
+#, fuzzy
+msgid "Ops... for some reason the link filter object has been destroyed"
+msgstr "Opa... por alguma razão o objeto de ligação foi destruido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:138
+msgid "Using filtered IRC protocol: Link filter is \"%Q\""
+msgstr "Usando protocolo IRC filtrado: O filtro de link é \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:143
+msgid "Failed to set up the link filter \"%Q\", will try with plain IRC"
+msgstr "Falha ao iniciar filtro de link \"%Q\", se tentará com IRC puro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:202
+msgid "Failed to start the connection: %Q"
+msgstr "Falha ao iniciar a conexão: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:368
+msgid "Contacting %Q %s (%s) on port %u"
+msgstr "Contactando %Q %s (%s) na porta %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "proxy host"
+msgstr "Servidor proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "IRC server"
+msgstr "Servidor IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:375
+#, c-format
+msgid "Low-level transport connection established [%s (%s:%u)]"
+msgstr "Estabelecida conexão de transporte de baixo nível [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:379
+msgid "Starting Secure Socket Layer handshake"
+msgstr "Iniciando negociação do Secure Socket Layer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Secure proxy connection"
+msgstr "Conexão de proxy segura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Proxy connection"
+msgstr "Conexão de proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:387
+msgid "Negotiating relay information"
+msgstr "Negociando informoção de retransmissão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:390
+msgid "Sent connection request, waiting for acknowledgement"
+msgstr "Pedido de conexão enviado, esperando a confirmação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:393
+msgid "Sent target host data, waiting for acknowledgement"
+msgstr "Dados enviados à maquina de destino, esperando a confirmação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:396
+msgid "Sent auth method request, waiting for acknowledgement"
+msgstr "Enviado pedido de autenticação, esperando a confirmação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:399
+msgid "Sent username and password, waiting for acknowledgement"
+msgstr "Enviados usuário e senha, esperando a confirmação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:402
+msgid "Sent connection request, waiting for \"HTTP 200\" acknowledgement"
+msgstr "Enviado pedido de conexão, esperando a confirmação \"HTTP 200\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:176
+msgid "[SSL]: %Q"
+msgstr "[SSL]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:181
+msgid "[SSL ERROR]: %Q"
+msgstr "[ERROR de SSL ]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:190
+msgid "[PROXY]: %Q"
+msgstr "[PROXY]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:200
+msgid "[PROXY ERROR]: %Q"
+msgstr "[ERROR de PROXY]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:207
+msgid "[SOCKET]: %Q"
+msgstr "[SOCKET]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:212
+msgid "[SOCKET ERROR]: %Q"
+msgstr "[ERRO DE SOCKET]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:218
+msgid "[SOCKET WARNING]: %Q"
+msgstr "[AVISO DE SOCKET]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:337
+#, c-format
+msgid "Binding to local address %s"
+msgstr "Associando ao endereço %s "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:341
+#, c-format
+msgid ""
+"Binding to local address %s failed: the kernel will choose the correct "
+"interface"
+msgstr ""
+"Associação ao endereço local %s falhou : o núcleo escolherá a "
+"corretainterface"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:637
+msgid "Using HTTP protocol."
+msgstr "Usando protocolo HTTP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:683
+msgid "Using SOCKSV4 protocol."
+msgstr "Usando protocolo SOCKSV4."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:756
+#, fuzzy
+msgid "Using SOCKSv5 protocol."
+msgstr "Usando protocolo SOCKSV5."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:771
+msgid "We can accept auth method 0 (no auth)"
+msgstr "Podemos aceitar o método 0 do auth (sem auth)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:779
+msgid "We can accept auth method 0 (no auth) or 2 (user/pass)"
+msgstr "Podemos aceitar o método 0 do auth (sem auth) ou 2 (usuário/senha)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:958
+msgid "Proxy response: auth OK: access granted"
+msgstr "Resposta do proxy: auth OK : acesso garantido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:993
+msgid "Proxy response: Auth method OK: using method 0 (no auth)"
+msgstr "Resposta do proxy: Método auth Ok usando método 0 (sem auth)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1000
+msgid "Proxy response: Auth method OK: using method 2 (user/pass)"
+msgstr "Resposta do proxy: Método auth Ok usando método 2 (usuário/senha)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1056
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1113
+msgid "Proxy response: target data OK: request granted"
+msgstr "Resposta do proxy: dados de destino OK: pedido garantido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1153
+msgid "Proxy response: "
+msgstr "Resposta do Proxy:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1164
+#, fuzzy
+msgid "Proxy said something about: \n"
+msgstr "O proxy disse algo sobre \""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1205
+msgid "Server X509 certificate"
+msgstr "Servidor X509 certificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1209
+msgid "The server didn't provide a certificate"
+msgstr "O Servidor não provê um certificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1223
+msgid "Unable to determine the current cipher"
+msgstr "Impossível de determinar a cifra atual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1768
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1788
+msgid "Partial socket write: packet broken into smaller pieces."
+msgstr "Escrita parcial em socket: pacote dividido em partes menores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:60
+#, fuzzy
+msgid "The theme information file does not exist"
+msgstr "A ação \"%1\" não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:71
+#, fuzzy
+msgid ""
+"This KVIrc executable is too old for this theme (minimum theme engine "
+"version required is %Q while this theme engine has version %s)"
+msgstr ""
+"O executável do KVirc é muito antigo para executar este script (a versão "
+"mínima requerida é %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:80
+#, fuzzy
+msgid "Theme information file is not valid"
+msgstr "O endereço (%Q) especificado para fazer conexões não é válido."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:248
+#, fuzzy
+msgid "Failed to load the specified screenshot image"
+msgstr "Falhou ao carregar a imagem selecionada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:257
+#, fuzzy
+msgid "Invalid option"
+msgstr "Intervalo inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:265
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:293
+#, fuzzy
+msgid "Failed to save the screenshot image"
+msgstr "Falhou ao carregar a imagem selecionada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:117
+msgid "Configure Servers..."
+msgstr "Configurar Servidores..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:118
+msgid "Allows you to configure the servers and eventually to connect to them"
+msgstr ""
+"Permite a você configurar aos servidores e eventualmente conectar-se a eles"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:128
+msgid "Manage Addons..."
+msgstr "Gerênciar Addons..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:129
+msgid "Allows you to manage the script-based addons"
+msgstr "Permite a você gerenciar os addons baseados no script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:139
+msgid "Configure Registered Users..."
+msgstr "Configurar Usuários Registrados..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:140
+msgid "Shows a dialog that allows editing the registered user entries"
+msgstr ""
+"Exibe a janela que permite a você editar entradas de usuários registrados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:150
+msgid "Configure Identity..."
+msgstr "Configurar Identidade..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:151
+msgid "Allows you to configure nickname, username, avatar etc..."
+msgstr "Permite a você configurar o apelido, nome de usuário, avatar e etc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:161
+msgid "Show SocketSpy..."
+msgstr "Exibir Socket espião..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:162
+msgid "Shows a window that allows monitoring the socket traffic"
+msgstr "Exibe a janela que permite a você monitorar o tráfego do socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:172
+msgid "Get Network Links"
+msgstr "Requisitar Links da Rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:173
+msgid "Shows a window that allows viewing the network links"
+msgstr "Exibe a janela que permite a você ver os links da rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:183
+msgid "Get Channel List"
+msgstr "Requisitar Lista de Canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:184
+msgid "Shows a window that allows listing the network channels"
+msgstr "Exibe a janela que permite a você listar os canais da rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:194
+msgid "Configure KVIrc..."
+msgstr "Configurar KVIrc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:195
+msgid "Shows the general options dialog"
+msgstr "Exibir o dialogo geral de opções"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:205
+#, fuzzy
+msgid "Configure Theme..."
+msgstr "Configurar Servidores..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:206
+#, fuzzy
+msgid "Shows the theme options dialog"
+msgstr "Exibir o dialogo geral de opções"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:216
+#, fuzzy
+msgid "Manage Themes..."
+msgstr "Configurar Servidores..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:217
+#, fuzzy
+msgid "Allows you to manage the themes"
+msgstr "Permite a você gerenciar os addons baseados no script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:227
+msgid "Customize Toolbars..."
+msgstr "Personalizar Barras de Ferramentas..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:228
+msgid "Shows a window that allows editing script toolbars"
+msgstr ""
+"Exibe a janela que permite a você editar script de barra de ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:239
+msgid "Join Channels..."
+msgstr "Entrar nos Canais..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:240
+msgid "Shows a dialog that allows you joing channels"
+msgstr "Exibe o diálogo que permite a você entrar nos canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:251
+msgid "Edit Actions..."
+msgstr "Editando ações..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:252
+msgid "Shows a window that allows editing actions"
+msgstr "Exibe a janela que permite a você editar as ações"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:262
+msgid "Edit Aliases..."
+msgstr "Aliases..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:263
+msgid "Shows a window that allows editing aliases"
+msgstr "Exibe a janela que permite a você editar os aliases"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:273
+msgid "Edit Events..."
+msgstr "Eventos..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:274
+msgid "Shows a window that allows editing script events"
+msgstr "Exibe a janela que permite a você editar eventos do script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:284
+msgid "Edit Popups..."
+msgstr "Popups..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:285
+msgid "Shows a window that allows editing popup menus"
+msgstr "Exibe a janela que permite a você editar menus popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:295
+msgid "Edit Raw Events..."
+msgstr "Eventos Raw..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:296
+msgid "Shows a window that allows editing raw scripting events"
+msgstr "Exibe a janela que permite a você editar eventos de script raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:306
+msgid "New Script Tester"
+msgstr "Testar Script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:307
+msgid "Creates an embedded editor for long scripts"
+msgstr "Cría um editor embutido para scripts longos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:317
+msgid "Execute Script..."
+msgstr "Executar Script..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:318
+msgid "Allows executing a KVS script from file"
+msgstr "Permite executar um script KVS a partir de um arquivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:328
+msgid "Help Index"
+msgstr "Índice da Ajuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:329
+msgid "Shows the documentation index"
+msgstr "Exibir o índice da documentação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:340
+msgid "Allows subscribing to the KVIrc mailing list"
+msgstr "Inscrever-se na Lista de E-mail"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:350
+msgid "KVIrc WWW"
+msgstr "KVIrc WWW"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:351
+msgid "Opens the KVIrc homepage"
+msgstr "Página do KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:361
+#, fuzzy
+msgid "KVIrc Russian WWW"
+msgstr "&Página do KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:362
+#, fuzzy
+msgid "Opens the KVIrc homepage in russian"
+msgstr "Página do KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:372
+msgid "Acquire Screenshot"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:373
+msgid "Acquires a Screenshot of the KVIrc main window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:385
+msgid "Cascade windows"
+msgstr "Janela em cascata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:386
+msgid "Arranges the MDI windows in a maximized-cascade fashion"
+msgstr "Organiza as janelas MDI na forma de casata-maximizada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:397
+msgid "Tile windows"
+msgstr "Janelas lado a lado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:398
+msgid "Tiles the MDI windows with the currently selected tile method"
+msgstr "Organiza as janelas MDI no método Lado a Lado atualmente selecionado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:409
+msgid "Minimize all windows"
+msgstr "Minimizar todas las janelas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:410
+msgid "Minimized all the currently visible MDI windows"
+msgstr "Minimiza todas as janelas MDI atualmente visíveis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:421
+msgid "New IRC Context"
+msgstr "Nova janela de servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:422
+msgid "Creates a new IRC context console"
+msgstr "Cría um novo console de contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:433
+msgid "Quit KVIrc"
+msgstr "Fechar o KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:434
+msgid "Quits KVIrc closing all the current connections"
+msgstr "Fecha o KVIrc encerrando todas as conexões ativas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:448
+msgid "IRC Context Display"
+msgstr "Barra de Ferramentas de Contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:449
+msgid "Shows a small display with IRC context informations"
+msgstr "Exibe uma pequena janela com as informações de contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:520
+msgid "Acts as a separator for other items: performs no action"
+msgstr "Atua como um separador para outros elementos: não realiza nenhuma ação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:554
+msgid "Connect/Disconnect"
+msgstr "Conectar/Desconectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:555
+msgid ""
+"Allows you to connect to a server or to terminate the current connection"
+msgstr "Permite a você se conectar a um servidor ou terminar a conexão atual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:628
+msgid "Connect"
+msgstr "Conectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:629
+msgid "Abort Connection"
+msgstr "Abortar Conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:790
+msgid "Join Channel"
+msgstr "Entrar no Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:791
+msgid "Shows a popup menu that allows quickly selecting a channel to join"
+msgstr ""
+"Exibe menu popup que permite selecionar rapidamente um canal para entrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:851
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:863
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:896
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:907
+msgid "Other..."
+msgstr "Outro..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:834
+msgid "Change Nickname"
+msgstr "Alterar Apelido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:835
+msgid "Shows a popup menu that allows quickly changing the nickname"
+msgstr "Exibe um menu popup que permite alterar rapidamente o apelido "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:883
+msgid "Connect To"
+msgstr "Conectar para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:884
+msgid "Shows a popup menu that allows quickly connecting to a server"
+msgstr "Exibe um menu popup que permite conectar rapidamente a um servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:929
+msgid "User Mode"
+msgstr "Modo de Usuário"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:930
+msgid "Shows a popup menu that allows quickly changing user modes"
+msgstr ""
+"Exibe um menu popup que permite alterar rapidamente os modos de usuário"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:947
+msgid "Wallops (+w)"
+msgstr "Wallops (+w)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:949
+msgid "Server Notices (+s)"
+msgstr "Noticias do Servidor (+s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:951
+msgid "Invisible (+i)"
+msgstr "Invisivel (+i)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:997
+msgid "Away/Back"
+msgstr "Ausente/Voltar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:998
+msgid "Allows entering and leaving away state"
+msgstr "Pemite entrar e sair do estado de ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1065
+msgid "Enter Away Mode"
+msgstr "Entrar no Modos de Ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1066
+msgid "Leave Away Mode"
+msgstr "Sair do Modo de Ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1135
+msgid "Irc Tools"
+msgstr "Ferramentas de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1136
+msgid "Shows a popup menu with some IRC Tools"
+msgstr "Exibe um menu popup com algumas Ferramentas de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1171
+msgid "Irc Actions"
+msgstr "Ações"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1172
+msgid "Shows a popup menu with some IRC Actions"
+msgstr "Exibe um menu popup com algumas Ações de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:412
+msgid "KVIrc KVS Script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:174
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:420
+#, fuzzy
+msgid "Run KVS Script"
+msgstr "Script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:284
+#, fuzzy
+msgid "URL:IRC Protocol"
+msgstr "Protocolo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:383
+#, fuzzy
+msgid "Open with KVIrc"
+msgstr "Página do KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:436
+#, fuzzy
+msgid "KVIrc Configuration File"
+msgstr "Configuração"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:453
+#, fuzzy
+msgid "KVIrc Theme Package"
+msgstr "&Página do KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:461
+msgid "Install Theme Package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:478
+msgid "KVIrc Addon Package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:486
+#, fuzzy
+msgid "Install Package"
+msgstr "Desinstalar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:749
+#, c-format
+msgid ""
+"Ops...it looks like I can't load modules on this sytem.\n"
+"I have been looking for the %s library but I haven't been able to load it\n"
+"due to the following error: \"%s\"\n"
+"Aborting."
+msgstr ""
+"Opa.. parece que não posso carregar módulos nesse sistema.procurei pela "
+"biblioteca %s mas não fui capaz de carrega-la\n"
+"devido ao seguinte erro: \"%s\"\n"
+"Abortando."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:762
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_begin\" function.\n"
+"Aborting!"
+msgstr ""
+"Ops... parece que você tem uma distribuição defeituosa.\n"
+"O módulo de configuração não exporta a função \"setup_begin\".\n"
+"Abortando!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:776
+msgid "Setup aborted"
+msgstr "Configuração abortada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:801
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_finish\" function.\n"
+"Trying to continue anyway..."
+msgstr ""
+"Ops... parece que você tem uma distribuição defeituosa.\n"
+"O módulo de configuração não exporta a função \"setup_finish\" Tentando "
+"continuar de todas as maneiras..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:186
+msgid "%Q is on IRC"
+msgstr "%Q está no IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:248
+msgid "%Q has left IRC"
+msgstr "%Q saiu do IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:368
+msgid "Notify list: No users to check for, quitting"
+msgstr "Lista de Notificação: Não existem usuários para verificar, saindo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:414
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (15 sec)"
+msgstr ""
+"Lista de Notificação: Intervalo de tempo (%d segundos) é muito pequeno, "
+"configurando um valor mais razoável (15 segundos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:428
+msgid "Notify list: Notify list empty, quitting"
+msgstr "Lista de Notificação: lista de notificação vazia, saindo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:455
+#, c-format
+msgid ""
+"Notify list: ISON delay (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+"Lista de Notificação: O intervalo de tempo para o ISON (%d segundoss) é "
+"muito pequeno, configurando algo mais razoável (5 segundos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:491
+msgid "Notify list: Checking for: %Q"
+msgstr "Lista de Notificação: Verificando: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:535
+msgid ""
+"Notify list: Hey! You've used ISON behind my back? (I might be confused "
+"now...)"
+msgstr ""
+"Lista de Notificação: Ei! Você utilizou ISON pelas minhas costas? (Agora "
+"posso estar confuso...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:682
+msgid "registration mask changed, or nickname is being used by someone else"
+msgstr "máscara de registro alterada, ou apelido está sendo usado por alguém"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:686
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (registration mask does not match, or nickname is being used "
+"by someone else)"
+msgstr ""
+"Lista de Notificação: \r!n\r%Q\r parece estar conectado, mas a máscara (%Q@"
+"\r!h\r%Q\r) não coincide (a máscara de registo não combina, ou o nick está "
+"sendo utilizado por outra pessoa)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:691
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? "
+"(restarting)"
+msgstr ""
+"Lista de Notificação: inconsistência inesperada, A base de dados de usuários "
+"registrados foi modificada? (reiniciando)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:698
+msgid ""
+"Notify list: Unexpected inconsistency, expected \r!n\r%Q\r in the registered "
+"user DB"
+msgstr ""
+"Lista de Notificação: Inconsistência inesperada, o esperado era \r!n\r%Q\r "
+"no registo de usuário da Base de Dados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:712
+#, c-format
+msgid ""
+"Notify list: USERHOST delay (%d sec) is too short, resetting to something "
+"more reasonable (5 sec)"
+msgstr ""
+"Lista de Notificação: O intervalo de tempo para USERHOST (%d segundos) é "
+"muito pequeno, configurando para algo mais razoável (5 segundos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:726
+msgid "Notify list: Unexpected inconsistency, userhost list is empty!"
+msgstr ""
+"Lista de Notificação: Inconsistência inesperada, a lista usuario-máquina "
+"está vazia!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:761
+msgid "Notify list: Checking userhost for: %Q"
+msgstr "Lista de Notificação: Verificando userhost para: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:831
+msgid ""
+"Notify list: Hey! You've used USERHOST behind my back? (I might be confused "
+"now...)"
+msgstr ""
+"Lista de Notificação: Ei! Você utilizou USERHOST pelas minhas costas? (Agora "
+"posso estar confuso...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:836
+#, c-format
+msgid "Notify list: Broken USERHOST reply from the server? (%s)"
+msgstr ""
+"Lista de Notificação: Resposta USERHOST do servidor esta quebrada? (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:860
+msgid ""
+"Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST reply "
+"was received, will recheck in the next loop"
+msgstr ""
+"Lista de Notificação: parece que \r!n\r%Q\r ficou offline antes da resposta "
+"USERHOST, será verificado no próximo passo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:931
+msgid "Starting notify list"
+msgstr "Iniciando lista de notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:936
+msgid "No users in the notify list"
+msgstr "Não existem usuários na lista de notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:958
+msgid "Notify list: Checking for:%Q"
+msgstr "Lista de Notificação: Verificando: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1013
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+"Lista de Notificação: O tempo para expiracão (%d segundos) é muito pequeno, "
+"configurando para algo mais razoável (5 segundos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1139
+msgid "Notify list: Adding watch entries for%Q"
+msgstr "Lista de Notificação: Adicionando entradas watch para %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1171
+msgid "watch entry listing requested by user"
+msgstr "listagem watch requisitada pelo usuário"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1175
+msgid "possible watch list desync"
+msgstr "possível dessincronização da lista de watch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1185
+msgid "registration mask changed or desync with the watch service"
+msgstr "máscara de registro alterada ou se dessincronizou com o serviço watch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1190
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (watch: registration mask does not match, or nickname is "
+"being used by someone else)"
+msgstr ""
+"Lista de Notificação: \r!n\r%Q\r parece estar conectado, mas a máscara (%Q@"
+"\r!h\r%Q\r) não coincide (a máscara de registo não combina, ou o nick está "
+"sendo utilizado por outra pessoa)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1197
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? (watch: "
+"restarting)"
+msgstr ""
+"Lista de Notificação: inconsistência inesperada, A base de dados de usuários "
+"registrados foi modificada? (watch: reiniciando)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1207
+msgid "watch entry added by user"
+msgstr "entrada watch adicionada pelo usuário"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1245
+msgid "removed from watch list"
+msgstr "removido da lista watch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1248
+msgid "Notify list: Stopped watching for \r!n\r%Q\r"
+msgstr "Lista de Notificação: Parou de verificar por \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1258
+msgid "watch"
+msgstr "watch"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1264
+msgid "Notify list: \r!n\r%Q\r is offline (watch)"
+msgstr "Lista de Notificação: \r!n\r%Q\r está desconectado (watch)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1267
+msgid "unmatched watch list entry"
+msgstr "entrada da lista watch não bate."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:80
+#, fuzzy
+msgid "commandline::userfriendly"
+msgstr "Nenhuma linha de comando especificada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:94
+#, fuzzy
+msgid "commandline::kvs"
+msgstr "Nenhuma linha de comando especificada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:127
+msgid "You are not connected to a server"
+msgstr "Você não está conectado a um servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_iconmanager.cpp:372
+msgid "Icon Table"
+msgstr "Tabela de Icones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:190
+msgid "No "
+msgstr "Não "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:196
+msgid "This module has no version informations: refusing to load it"
+msgstr "Este módulo não tem informação de versão: recusando seu carregamento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:204
+msgid ""
+"This module was compiled for a different KVIrc version and can't be loaded"
+msgstr ""
+"Este módulo foi compilado para uma versão diferente do KVirc e não pode ser "
+"carregado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:232
+msgid "Failed to execute the init routine"
+msgstr "Falha ao executar a rotina de inicialização"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:261
+#, c-format
+msgid "Loaded module '%s' (%s)"
+msgstr "Módulo carregado '%s' (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:306
+#, c-format
+msgid "Unloaded module '%s'"
+msgstr "Módulo descarregado '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:45
+msgid "This window has no associated irc context"
+msgstr "Esta janela no tem um contexto de irc associado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:50
+#, c-format
+msgid "No such irc context (%d)"
+msgstr "Sem contexto de irc (%d)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:147
+msgid "Global idle timer must be started before using $my.globalIdle function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:103
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:215
+#, fuzzy
+msgid "Window %Q not found"
+msgstr "Janela %s não encontrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:108
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:220
+msgid "Missing window id after the 'w' switch"
+msgstr "Faltando id da janela após o alternador 'w'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:121
+#, fuzzy
+msgid "Can't log to file %Q"
+msgstr "Não foi possível registar no arquivo %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:123
+msgid "This window has no logging capabilities"
+msgstr "Esta janela não tem capacidades de registo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:275
+#, fuzzy
+msgid "Window with id '%Q' not found, returning empty string"
+msgstr "Janela com id '%s' não encontrada, retornar string vazia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:598
+#, fuzzy
+msgid "Sound file '%Q' not found"
+msgstr "Arquivo de som '%s' não encontrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:604
+#, fuzzy
+msgid "Unable to play sound '%Q'"
+msgstr "Não foi possível tocar o som '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:615
+msgid "Sorry , I can't find a sound system to use on this machine"
+msgstr ""
+"Desculpe, não foi possível encontrar um sistema de som para usar nesta "
+"máquina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:617
+#, c-format
+msgid "Sound system detected to: %s"
+msgstr "Sistema de som detectado :%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:141
+msgid "Show at startup"
+msgstr "Exibir ao iniciar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:154
+msgid "Did you know..."
+msgstr "Você sabia..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:220
+msgid "<b>Can't find any tip... :(</b>"
+msgstr "<b>Não foi possível encontrar nenhuma dica...: (</b."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1544
+msgid "%Q algorytm is not supported"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1566
+msgid ""
+"KVIrc is compiled without OpenSSL support. $str.digest function disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2030
+msgid "Invalid argument for ?d escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2034
+msgid "Missing argument for ?d escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2066
+msgid "Invalid argument for ?u escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2070
+msgid "Missing argument for ?u escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2097
+msgid "Invalid argument for ?x escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2101
+msgid "Missing argument for ?x escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2128
+msgid "Invalid argument for ?X escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2132
+msgid "Missing argument for ?X escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2189
+msgid "Invalid argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2193
+msgid "Missing argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:87
+msgid "Show URL List"
+msgstr "Exibir Lista de URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:88
+msgid "Shows the URL list window"
+msgstr "Exibir janela da lista de URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:124
+msgid "&Configure"
+msgstr "&Configurar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:126
+msgid "Clo&se"
+msgstr "Fec&har"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:127
+msgid "&Module"
+msgstr "&Módulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:130
+msgid "&Load"
+msgstr "&Carregar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:131
+msgid "&Save"
+msgstr "&Salvar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:132
+msgid "&Clear"
+msgstr "&Limpar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:133
+msgid "&List"
+msgstr "&Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:136
+msgid "URL"
+msgstr "URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:137
+msgid "Window"
+msgstr "Janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:138
+msgid "Count"
+msgstr "Contador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:139
+msgid "Timestamp"
+msgstr "Marca de tempo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:113
+msgid "Warning - KVIrc"
+msgstr "Aviso - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+msgid "Select an URL."
+msgstr "Selecionar uma URL."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:115
+msgid "&Remove"
+msgstr "&Remover"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:269
+msgid "&Find Text"
+msgstr "&Procurar texto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:280
+msgid "&Say to Window"
+msgstr "&Dizer para Janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+msgid "Window not found."
+msgstr "Janela não encontrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:349
+msgid "URL Module Configuration"
+msgstr "Configuração do Módulo URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:356
+msgid "Save URL list on module unload"
+msgstr "Salvar lista de URL ao descarregar o módulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:360
+msgid "Save columns width on URL list close"
+msgstr "Salvar a largura das colunas ao fechar a lista de URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1187
+msgid "&Cancel"
+msgstr "&Cancelar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:432
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1328
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:458
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1186
+msgid "&OK"
+msgstr "&Aceitar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:423
+msgid "Enable URL ban list"
+msgstr "Habilitar a lista de URL proibidas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:435
+msgid "&Add Ban"
+msgstr "&Adicionar Proibição"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:440
+msgid "&Remove Selected"
+msgstr "&Remover Selecionada(s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "URL Ban List"
+msgstr "Lista de URL proibidas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+msgid "Select a ban."
+msgstr "Selecionar proibição"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:797
+#, fuzzy
+msgid "View URL list"
+msgstr "Exibir Lista de URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:49
+#, fuzzy
+msgid "Can't find the window with id '%Q'"
+msgstr "A janela com id '%s' não foi encontrada."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:53
+#, fuzzy
+msgid "The specified window (%Q) is not a channel"
+msgstr "A janela (%s) especificada não é um canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:78
+msgid "Destinaion file exists: no copy made"
+msgstr "O arquivo de destino existe: nenhuma cópia feita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:83
+msgid "Failed to copy from %Q to %Q"
+msgstr "Falhou copiar %Q para %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:84
+msgid "Either the source doesn't exist or the destination can not be created"
+msgstr "Ou a origem não existe ou o destino não pode ser criado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:203
+msgid "Failed to write to file %Q: the destination couldn't be opened"
+msgstr "Falhou ao escrever o arquivo %Q: o destino não pode ser aberto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:244
+msgid "Destination file exists: file not renamed"
+msgstr "O arquivo de destino existe: arquivo não renomeado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:247
+msgid "Failed to rename %Q to %Q"
+msgstr "Falhou ao renomear %Q para %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:281
+msgid "Failed to make the directory %Q"
+msgstr "Falhou ao criar o diretório %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:322
+msgid "Failed to remove the file %Q"
+msgstr "Falhou ao remover o arquivo %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:365
+msgid "Failed to remove the directory %Q"
+msgstr "Falhou ao remover o diretório %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:482
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:628
+msgid "The specified directory does not exist '%Q'"
+msgstr "O directório especificado não existe '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:730
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:824
+msgid "Can't open the file \"%Q\" for reading"
+msgstr "Não foi possível abrir o arquivo \"%Q\" para leitura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:746
+msgid "Read error for file %Q"
+msgstr "Erro de leitura para o arquivo %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:754
+msgid ""
+"Read error for file %Q (have been unable to read the requested size in 1000 "
+"retries)"
+msgstr ""
+"Erro de leitura para o arquivo %Q (não foi possível ler o tamanho pedido em "
+"1000 tentativas)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:920
+#, fuzzy
+msgid "Can't open the file \"%Q\" for writing"
+msgstr "Não foi possível abrir o arquivo \"%Q\" para leitura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/index.cpp:473
+msgid "Untitled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+msgid "Indexing help files"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:87
+#, fuzzy
+msgid "Index"
+msgstr "Índice da Ajuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:99
+msgid "Refresh index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:211
+msgid "Full Text Search"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:203
+msgid "Using a wildcard within phrases is not allowed."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:212
+msgid "The closing quotation mark is missing."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:312
+msgid "Help Browser"
+msgstr "Navegador de Ajuda "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:201
+msgid "Request List"
+msgstr "Pedir Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:207
+msgid "Stop list download"
+msgstr "Parar recebimento da lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:211
+msgid ""
+"<center><b>/LIST command parameters:</b><br>Many servers accept special "
+"parameters that allow you to filter the returned entries.<br>Commonly, "
+"masked channel names (*kvirc*) are accepted as parameters, as well as "
+"strings like <b>c&lt;n</b> or <b>c&gt;n</b> where <b>n</b> is the minimum or "
+"maximum of users on the channel.</center>"
+msgstr ""
+"<center><b>Parâmetros do comando /LIST:</b><br>Muitos servidores aceitam "
+"parâmetros especiais que permitem filtrar as entradas retornadas. "
+"<br>Normalmente, os nomes de canais mascarados (*kvirc*) são aceitos como "
+"parâmetros, assim como strings tipo <b>c&lt;n</b> ou <b>c&gt;n</b> onde "
+"<b>n</b> é o mínimo ou o máximo de usuários no canal.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:220
+msgid "Users"
+msgstr "Usuários"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:221
+msgid "Topic"
+msgstr "Tópico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:262
+msgid "Sent list request, waiting for reply..."
+msgstr "Pedido de lista enviado: aguardando resposta..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:265
+msgid "Cannot request list: No active connection"
+msgstr "Não foi possível pedir a lista: Nenhuma conexão ativa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:389
+msgid "Stopping the list download..."
+msgstr "Parando o recebimento da lista..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:276
+msgid "Cannot stop list download, no active connection."
+msgstr "Não foi possível parar o recebimento da lista: Nenhuma conexão ativa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:125
+#, c-format
+msgid "Connected to %s (%s)"
+msgstr "Conectedo em %s (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:293
+msgid "List cannot be requested: Not connected to a server"
+msgstr "Não foi possível pedir a lista: Não estás conectado a um servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:316
+#, c-format
+msgid "Channel List [IRC Context %u]"
+msgstr "Lista de Canais [Contexto de IRC %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:319
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel List</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Lista de Canais</b></font> <font color=\"%s\">"
+"[Contexto de IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:326
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel list</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Lista de canais </b></font> <font color=\"%s\">"
+"[Contexto de IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:342
+#, fuzzy
+msgid "You cannot export an empty list"
+msgstr "Não pedir lista com excepções de bans"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:350
+#, fuzzy
+msgid "Channel list for %Q - %Q"
+msgstr "Modo de canal para \r!c\r%Q\r é %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:353
+#, fuzzy
+msgid "Channel list"
+msgstr "Canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:382
+#, fuzzy
+msgid "Choose filename"
+msgstr "Escolha Arquivo de Registro - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:356
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:383
+#, fuzzy
+msgid "Configuration files (*.kvc)"
+msgstr "Configuração"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:398
+msgid "Reset"
+msgstr "Reinicializar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:435
+msgid "Channels list download finished"
+msgstr "Recebimento da lista de canais terminou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:472
+msgid "Processing list: %Q"
+msgstr "Processando a lista: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/libkvilist.cpp:63
+msgid "List window alread open for this IRC context"
+msgstr "Lista de janelas já esta aberta para o contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:70
+msgid "Terminal"
+msgstr "Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:73
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:77
+#, c-format
+msgid "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+msgstr "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:59
+msgid "Terminal emulator"
+msgstr "Emulador de terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:63
+msgid "Close this window"
+msgstr "Fechar esta janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:91
+msgid "Can't create the terminal emulation part"
+msgstr "impossível criar uma parte da emulação de terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:96
+msgid "Can't retrieve the terminal emulation factory"
+msgstr "Impossível recuperar a fábrica de emulação terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:95
+msgid "KVIrc"
+msgstr "KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:98
+msgid "Context"
+msgstr "Contexto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:155
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:100
+msgid "Away"
+msgstr "Ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:102
+msgid "&Configure KVIrc..."
+msgstr "&Configurar KVIrc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:104
+msgid "&About KVIrc"
+msgstr "Sobre o &KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:109
+msgid "Un&dock"
+msgstr "&Remover Ícone do panel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:168
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:112
+msgid "Ctrl+Q"
+msgstr "Ctrl+Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:143
+msgid "Nothing is happening..."
+msgstr "Nada esta acontecendo..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:285
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:144
+msgid "Just idling..."
+msgstr "Apenas Inativo...."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:145
+msgid "Dum de dum de dum..."
+msgstr "Dum de dum de dum..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:146
+msgid "Hey man... do something!"
+msgstr "Ei!...faz alguma coisa!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:147
+msgid "Umpf!"
+msgstr "Umpf!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:148
+msgid "Silence speaking"
+msgstr "Falando em silêncio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:149
+msgid "Are ya here?"
+msgstr "Estás aí?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:150
+msgid "The world has stopped?"
+msgstr "O mundo parou?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:151
+msgid "Everything is all right"
+msgstr "Está tudo bem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:152
+msgid "idle()"
+msgstr "inativo()"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:153
+msgid "It's so cold here..."
+msgstr "Aqui está muito frio..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:295
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:154
+msgid "Do not disturb... watching TV"
+msgstr "Não incomode...estou vendo televisão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:155
+msgid "Just vegetating"
+msgstr "Apenas vegetando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:156
+msgid "Hey... are ya sure that your network is up?"
+msgstr "Ei!...tem certeza que a sua internet está ok?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:298
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:157
+msgid "Seems like the world has stopped spinning"
+msgstr "Parece que o mundo parou de rodar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:299
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:158
+msgid "This silence is freaking me out!"
+msgstr "Este silêncio está me assustando!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:300
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:159
+msgid "Mieeeeeowww!"
+msgstr "Miaaaaauuuu!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:301
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:160
+msgid "idle idle idle idle!"
+msgstr "inativo inativo inativo inativo!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Hide Window"
+msgstr "Ocultar a Janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Show Window"
+msgstr "Exibir a Janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:428
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:260
+msgid "Away on all"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:263
+msgid "Back on all"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:450
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:282
+msgid "Back on %1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:453
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:285
+msgid "Away on %1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1238
+msgid "Alias"
+msgstr "Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1217
+#, fuzzy
+msgid "No item selected"
+msgstr "Não existem entradas selecionadas."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:232
+#, fuzzy
+msgid "Rename"
+msgstr "Nome Real:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:236
+#, fuzzy
+msgid "Edit the alias or namespace name"
+msgstr "Editar o nome do alias."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+#, fuzzy
+msgid "Add Alias"
+msgstr "Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:429
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Add Namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:440
+#, fuzzy
+msgid "Remove Selected"
+msgstr "&Remover Selecionada(s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:449
+#, fuzzy
+msgid "Export Selected..."
+msgstr "&Exportar Selecionado Para..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:455
+#, fuzzy
+msgid "Export Selected in singles files..."
+msgstr "&Exportar Selecionado Para..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:462
+#, fuzzy
+msgid "Export All..."
+msgstr "&Exportar Todos Para..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:470
+#, fuzzy
+msgid "Find In Aliases..."
+msgstr "Aliases..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:476
+msgid "Collapse All Namespaces"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:508
+msgid "Find In Aliases"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:509
+msgid ""
+"Please enter the text to be searched for. The matching aliases will be "
+"highlighted."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+#, fuzzy
+msgid "Alias Export"
+msgstr "Editor de Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#, fuzzy
+msgid "There is not selection!"
+msgstr "Não há nenhum widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:615
+#, fuzzy
+msgid "The file \"%Q\" exists. Do you want to replace it ?"
+msgstr "O arquivo %s já existe.<br>Deseja sobrescrever?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#, fuzzy
+msgid "Replace file"
+msgstr "Respostas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#, fuzzy
+msgid "Yes to All"
+msgstr "Selecionar &Todos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "There exported file would be empty: cowardly refusing to write it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:786
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:411
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1133
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:398
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:745
+msgid "Choose a Filename - KVIrc"
+msgstr "Escolha um arquivo - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Write Failed - KVIrc"
+msgstr "Escrita Falhou - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+msgid "Unable to write to the alias file."
+msgstr "Incapaz de escrever no arquivo de alias."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:793
+#, fuzzy
+msgid "Do you really want to remove the alias \"%Q\" ?"
+msgstr "Você deseja realmente deletar a barra de ferramentas \"%1\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:795
+#, fuzzy
+msgid "Do you really want to remove the namespace \"%Q\" ?"
+msgstr "Você deseja realmente deletar a barra de ferramentas \"%1\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:797
+msgid "Please note that all the children items will be deleted too."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#, fuzzy
+msgid "Remove item"
+msgstr "Remover %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:875
+#, fuzzy
+msgid "Missing Alias Name"
+msgstr "Faltando o nome do alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:876
+msgid "You must specify a valid name for the alias"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:877
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:890
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:904
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:915
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:946
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:959
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:973
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1128
+msgid "Ok, Let me try again..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:888
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:902
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:913
+msgid "Bad Alias Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:944
+#, fuzzy
+msgid "Missing Namespace Name"
+msgstr "Faltando nome do timer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:945
+msgid "You must specify a valid name for the namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:957
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:971
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:982
+msgid "Bad Namespace Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:958
+msgid ""
+"Namespace names can contain only letters, digits, underscores and '::' "
+"namespace separators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:972
+msgid ""
+"Stray ':' character in namespace name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:983
+msgid "Found an empty namespace in namespace name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+#, fuzzy
+msgid "Please enter the name for the new alias"
+msgstr "Por favor especifique as propriedades para a barra de ferramentas nova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+#, fuzzy
+msgid "Please enter the name for the new namespace"
+msgstr "Por favor especifique as propriedades para a barra de ferramentas nova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+#, fuzzy
+msgid "Rename Alias"
+msgstr "Re&mover Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+#, fuzzy
+msgid "Please enter the new name for the alias"
+msgstr "Por favor escolha o ícone da Barra de Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Rename Namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Please enter the new name for the namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1126
+#, fuzzy
+msgid "Alias already exists"
+msgstr "Endereço já esta em uso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1139
+msgid "This name is already in use. Please choose another one."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1138
+msgid "Namespace already exists"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1140
+msgid "Ok, let me try again..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1227
+#, fuzzy
+msgid "Namespace"
+msgstr "Tipo de Mensagem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1332
+msgid "Alias Editor"
+msgstr "Editor de Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:62
+msgid "Join Channels"
+msgstr "Entrar nos Canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:183
+msgid "Name"
+msgstr "Nome"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:86
+msgid "Password"
+msgstr "Senha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:641
+msgid "&Join"
+msgstr "&Entrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:108
+msgid "Show this window after connecting"
+msgstr "Exibir esta janela após conectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:163
+msgid "Recent Channels"
+msgstr "Canais Recentes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:182
+msgid "Registered Channels"
+msgstr "Canais Registrados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:133
+msgid "Choose the file to share"
+msgstr "Escolha o arquivo para compartilhar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:178
+msgid "No such channel/netmask entry in the database"
+msgstr ""
+"Não existe uma entrada para esse canal/máscara de rede na base de dados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:198
+msgid "Registered channel list:"
+msgstr "Lista de canais registrados:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:208
+#, c-format
+msgid "Channel: %c%s@%s"
+msgstr "Canal: %c%s@%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:213
+#, c-format
+msgid " Property: %s=%s"
+msgstr " Propriedade: %s=%s "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:220
+#, c-format
+msgid "Total %d channels"
+msgstr "Canais totais %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:86
+msgid "Property Editor"
+msgstr "Editor de Propriedade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:101
+msgid "Property"
+msgstr "Propriedade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:102
+msgid "Value"
+msgstr "Valor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:111
+msgid "&New"
+msgstr "&Novo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:215
+msgid "Mask Editor"
+msgstr "Editor de Máscaras"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:219
+msgid ""
+"Insert a mask for this user.<br>It can contain the wildcard characters '*' "
+"and '?'."
+msgstr ""
+"Inserir uma máscara para este usuário.<br>Esta pode conter carácteres "
+"wildcard como '*' e '?'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:230
+msgid ""
+"<center>This the <b>nickname</b> that will match this user, default value is "
+"the registered name.</center>"
+msgstr ""
+"<center>Este é o <b>Apelido</b> que coincidirá com este usuário, o valor "
+"padrão é o nome registrado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:241
+msgid ""
+"<center>This the <b>username</b> that will match this user. <b>*</b> will "
+"match any username.</center>"
+msgstr ""
+"<center>Este é o <b>nome de usuário</b> que coincidirá com este usuário. "
+"<b>*</b> coincidirá com qualquer nome de usuário.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:252
+msgid ""
+"<center>This the <b>hostname</b> that will match this user. <b>*</b> will "
+"match any hostname.</center>"
+msgstr ""
+"<center>Este é o <b>nome de máquina</b> que coincidirá com este usuário. "
+"<b>*</b> coincidirá com qualquer nome de máquina.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:333
+msgid "Registered User Entry"
+msgstr "Entrada de Usuários Registrados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:145
+msgid "Name:"
+msgstr "Nome:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:345
+#, fuzzy
+msgid "Comment:"
+msgstr "Contador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:355
+msgid "Masks:"
+msgstr "Máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:216
+msgid "&Add..."
+msgstr "&Adicionar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:377
+msgid "&Edit"
+msgstr "&Editar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:385
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:414
+msgid "Identity"
+msgstr "Identidade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:393
+msgid "Notify when user is online"
+msgstr "Notificar quando o usuário ficar online"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:396
+msgid "Notify nicknames:"
+msgstr "Notificar apelidos:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:401
+msgid "<center>You can enter a space separated list of nicknames.</center>"
+msgstr ""
+"<center>Você pode digitar uma lista de apelidos separados por espaços.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:426
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:383
+msgid "Avatar"
+msgstr "Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:433
+#, fuzzy
+msgid "Use custom color in userlist"
+msgstr "Usar nível de alerta personalizado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:441
+msgid "All Properties..."
+msgstr "Todas às propriedades ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:448
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:231
+msgid "Properties"
+msgstr "Propriedades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:458
+#, fuzzy
+msgid "Enable ignore for this user"
+msgstr "Habilitar Ignore para "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:460
+#, fuzzy
+msgid "Ignore features"
+msgstr "Ignorar como"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:465
+#, fuzzy
+msgid "Ignore query-messages"
+msgstr "Mensagem de usuário ignorada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:468
+#, fuzzy
+msgid "Ignore channel-messages"
+msgstr "Mensagens Privada/Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:471
+#, fuzzy
+msgid "Ignore notice-messages"
+msgstr "Mensagem de usuário ignorada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:474
+#, fuzzy
+msgid "Ignore ctcp-messages"
+msgstr "Mensagem de usuário ignorada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:477
+#, fuzzy
+msgid "Ignore invites"
+msgstr "Ignorar como"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:480
+#, fuzzy
+msgid "Ignore DCCs"
+msgstr "Ignorar como"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:486
+msgid "Ignore"
+msgstr "Ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:94
+#, fuzzy
+msgid "Notify disabled"
+msgstr "Lista de Notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:96
+#, fuzzy
+msgid "Notify as: "
+msgstr "Lista de Notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:105
+#, fuzzy
+msgid "No comment set"
+msgstr "Nenhum comando especificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:107
+#, fuzzy
+msgid "Comment: "
+msgstr "Contador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:176
+msgid "Registered Users - KVIrc"
+msgstr "Usuários registrados - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:317
+msgid "Flags"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:192
+msgid ""
+"<center>This is the list of registered users. KVIrc can automatically "
+"recognize and associate properties to them.<br>Use the buttons on the right "
+"to add, edit and remove entries. The \"notify\" column allows you to quickly "
+"add users to the notify list. Notify list fine-tuning can be performed by "
+"editing the entry properties.</center>"
+msgstr ""
+"<center>Esta é a lista de usuários registrados. O KVIrc pode reconhecer e "
+"associar propriedades de forma automática.<br>Utilizar os botões da direita "
+"para adicionar, editar ou remover entradas.<br>A columna \"notificação\" te "
+"permite adicionarr usuários a lista de notificações rápidamente. O ajuste "
+"da lista de notificações pode ser feito se editando a entrada da "
+"propriedades.</center> "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:208
+msgid "Add (Wizard)..."
+msgstr "Adicionar (assistente)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:211
+msgid "Add a registered user by means of a user-friendly wizard."
+msgstr "Adicionar um usuário registrado por meio de um amigável assistente."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:219
+msgid "Open the edit dialog to create a new user entry."
+msgstr "Abrir a diálogo de edição para criar uma nova entrada de usuário."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:223
+#, fuzzy
+msgid "&Add Group..."
+msgstr "&Adicionar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:226
+msgid "Adds a new group"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:234
+msgid "Remove the currently selected entries."
+msgstr "Remover às entradas atualmente selecionadas."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:239
+msgid "&Edit..."
+msgstr "&Editar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:243
+msgid "Edit the first selected entry."
+msgstr "Editar a primeira entrada selecionada."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:250
+msgid "Export To..."
+msgstr "Exportar Para..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:254
+msgid ""
+"Export the selected entries to a file.<br>All the data associated with the "
+"selected registered users will be exported.<br>You (or anyone else) can "
+"later import the entries by using the \"Import\" button."
+msgstr ""
+"Exporta às entradas selecionadas para um arquivo.<br>Todos os dados "
+"associados aos usuários registrados selecionados serão exportados.<br>Você, "
+"ou qualquer outro, pode importar as entradas mais tarde usando o botão "
+"\"Importar\"."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:259
+msgid "Import From..."
+msgstr "Importar de..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:262
+msgid ""
+"Import entries from a file exported earlier by the \"export\" function of "
+"this dialog."
+msgstr ""
+"Importa às entradas de um arquivo exportado anteriormente pela função "
+"\"Exportar\" deste diálogo."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:399
+#, fuzzy
+msgid "Group name:"
+msgstr "Nome do popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:442
+msgid "Move to group"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:483
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:486
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:487
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:491
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:690
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_useridentity.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:962
+msgid "Default"
+msgstr "Padrão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:674
+msgid "No entries selected."
+msgstr "Não existem entradas selecionadas."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:687
+#, fuzzy
+msgid "Can't open file %Q for writing."
+msgstr "Não foi possível abrir o arquivo \"%s\" em modo de escrita."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:772
+msgid "Can't export the registered users database: Write error."
+msgstr ""
+"Não foi possível exportar a base de dados de usuários registrados: Erro de "
+"escrita."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:793
+#, c-format
+msgid "Can't open file %s for reading."
+msgstr "Não foi possível abrir o arquivo %s para leitura."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:804
+#, c-format
+msgid "The file %s doesn't appear to be a valid registered users database."
+msgstr ""
+"O arquivo %s não parece ser uma base de dados de usuários registrados válida."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:811
+#, c-format
+msgid "The file %s contains an invalid registered users database version."
+msgstr ""
+"O arquivo %s contém uma versão inválida da base de dados de usuários "
+"registrados."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:892
+msgid "Can't import the registered users database: Read error."
+msgstr ""
+"Não foi possível importar a base de dados de usuários registrados: Erro de "
+"leitura."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:78
+msgid "User Registration Wizard - KVIrc"
+msgstr "Assistente de Registro de usuários - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:89
+msgid ""
+"<p>Welcome to the user registration wizard.<br>This process allows you to "
+"add an IRC user to the database and set properties for that user. KVIrc will "
+"be (hopefully) able to recognize the user, add him to the notify list, and "
+"display the associated avatar.<br><br>First of all, you must insert an "
+"<b>entry name or real name</b> for the user you're going to register. The "
+"name will be used to identify the database entry and has no specific "
+"requirements, it can be a given name, nickname, or just some text to remind "
+"you of the real person.<br>Examples: \"George W Bush\", \"Dubya\".\n"
+"</p>"
+msgstr ""
+"<p>Bem vindo ao assistente de registro de usuários.<br>Este processo permite "
+"adicionar um usuário de IRC a base de dados do KVIrc e configurar algumas de "
+"suas propriedades. O KVIrc será capaz (confiantemente) de reconhecer o "
+"usuário, adicioná-lo a lista de notificações, exibir seu avatar associado, "
+"etc...<br><br>Primeiramente, deve escrever o <b>nome de entrada ou o nome "
+"Real</b> do usuário que será registrado. O nome será usado para identificar "
+"a entrada da base de dados e não tem nenhum requerimento específico, pode "
+"ser um nome, um apelido ou somente um texto que te lembre a pessoa."
+"<br>Exemplos: \"Luis Inácio Lula da Silva\", \"Lula\".\n"
+"</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:97
+msgid "Step 1: Entry Name"
+msgstr "Passo 1: Nome de Entrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:112
+msgid ""
+"<p>A registered user is identified by one or more <b>IRC masks</b>.<br>A "
+"mask must be in the following form:<br><b>nickname!username@hostname</"
+"b><br>and can contain wildcard characters '*' and '?'. Be careful in "
+"choosing the masks, as they are the only way to verify the identity of a "
+"registered user.<br><br>You can enter at most two masks here, if you wish to "
+"add more masks, use the \"<b>Edit</b>\" button in the Registered Users "
+"dialog. You must enter at least one mask.</p>"
+msgstr ""
+"<p>Um usuário registrado é identificado por uma ou mais <b>máscaras de IRC</"
+"b>.<br>A máscara deve estar no seguinte formato:<br><b>apelido!"
+"nome_de_usuário@máquina</b><br>e pode conter wildcards '*' e '?'. Seja "
+"cuidadoso ao escolher às máscaras: são o único método para verificar a "
+"identidade de um usuário registrado.<br><br>Aqui você só pode digitar duas "
+"máscaras; se desejar adicionar mais, utilize o botão \"<b>Editar</b>\" no "
+"diálogo de Usuários Registrados. Você precisa digitar pelo menos uma máscara."
+"</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:170
+msgid "Step 2: Mask Selection"
+msgstr "Passo 2: Seleção da máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:182
+msgid ""
+"<p>If you want to store an avatar image for this user, you can set it here. "
+"KVIrc will show the avatar in the userlist next to the user's nickname."
+"<br>An avatar can be in any supported image format (PNG is recommended). "
+"Keep in mind that KVIrc stores avatars in memory and has to resize them to "
+"fit in the userlist, thus it's better to use small, low-resolution images.</"
+"p>"
+msgstr ""
+"<p>Se você quiser armazenar uma imagem de avatar para este usuário, você "
+"pode configurar aqui. O KVIrc a exibirá junto ao apelido na lista de "
+"usuários.<br>Um avatar pode estar em qualquer formato de imagem reconhecido "
+"(se recomenda usar PNG). Tenha em mente que o KVIrc mantém os avatares na "
+"memória e tem que redimensioná-los para caber na lista de usuários, de modo "
+"que é melhor usar pequenas imagens de baixa resolução.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:190
+msgid "Store an avatar for this user"
+msgstr "Armazenar um avatar para este usuário"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:195
+msgid "Step 3: Avatar Selection"
+msgstr "Paso 3: Seleção do Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:206
+msgid ""
+"<p>If you want to be notified when this user is online or goes offline, you "
+"must specify the list of nicknames that KVIrc will look for.<br><br>You can "
+"enter at most two nicknames here, if you wish to add more nicknames, use the "
+"\"<b>Edit</b>\" button in the Registered Users dialog.</p>"
+msgstr ""
+"<p>Se você deseja ser avisado quando este usuário se conectar ou "
+"desconectar, Você deve especificar a lista de apelidos na qual o KVIrc irá "
+"procurar por ele.<br><br>Aqui você só pode digitar dois nicks; se desejar "
+"adicionar mais, utilize o botão \"<b>Editar</b>\" no Diálogo de Usuários "
+"Registrados.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:215
+msgid "Add this user to the notify list"
+msgstr "Adicionar este usuário na lista de notificações"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:342
+msgid "Nickname:"
+msgstr "Apelido:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:225
+msgid "Nickname 2:"
+msgstr "Apelido 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:239
+msgid "Step 4: Notify List"
+msgstr "Paso 4: Lista de Notificações"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:251
+msgid ""
+"<p>That's it. The user registration has been completed.<br><br>Click "
+"\"<b>Finish</b>\" to close this dialog.</p>"
+msgstr ""
+"<p>Iste é tudo. O registro de usuário foi concluido correctamente."
+"<br><br>Clique em \"Finalizar\" para fechar este diálogo.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:254
+msgid "Registration Complete"
+msgstr "Registro concluido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:695
+msgid "No name specified"
+msgstr "Nenhum nome especificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:209
+msgid "User already registered: found exact name match"
+msgstr "O usuário ja está registrado: um nome semelhante foi encontrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:222
+#, fuzzy
+msgid "Mask %Q is already used to identify user %s"
+msgstr "A máscara %s já esta em uso para identificar o usuário %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:275
+#, fuzzy
+msgid "User not found (%Q)"
+msgstr "Usuário não encontrado (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:403
+msgid "No mask specified"
+msgstr "Máscara não especificada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:524
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:708
+#, fuzzy
+msgid "User %Q not found"
+msgstr "Usuário %s não encontrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:355
+#, fuzzy
+msgid "Mask %Q already used to identify user %Q"
+msgstr "Máscara %s já está sendo usada para identificar o usuário %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:410
+#, fuzzy
+msgid "Mask %Q not found"
+msgstr "Máscara %s não encontrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:701
+msgid "No property specified"
+msgstr "Nenhuma propiedade especificada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:808
+msgid "Registered users database dump:"
+msgstr "Despejar base de datos de usuários registrados:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:819
+msgid " User: %c%Q"
+msgstr " Usurário: %c%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:823
+msgid " Warning: this user has no registration masks"
+msgstr " Atenção: este usuário não tem máscaras de registro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:827
+msgid " Mask: %Q!%Q@%Q"
+msgstr " Máscara: %Q!%Q@%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:838
+msgid " Property: %Q=%Q"
+msgstr " Propriedade: %Q=%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:841
+msgid " No properties"
+msgstr " Sem propriedades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:847
+#, c-format
+msgid "Total: %d matching users (of %d in the database)"
+msgstr "Total: %d usuários semelhantes (de %d na base de datos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:197
+msgid "Manage Script-Based Addons"
+msgstr "Gerênciar Addons Script-Based"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1155
+msgid "Configure"
+msgstr "Configurar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:225
+msgid "Show Help"
+msgstr "Exibir Ajuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:231
+msgid "Uninstall"
+msgstr "Desinstalar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:243
+msgid "Install Addon..."
+msgstr "Instalar Addon..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:247
+msgid "More Addons..."
+msgstr "Mais Addons..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:333
+msgid "Do you really want to uninstall the addon \"%1\" ?"
+msgstr "Você deseja realmente desinstalar o addon \"%1\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+msgid "Confirm addon uninstallation"
+msgstr "Confirmar desinstalação do addon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:354
+msgid "Please select the addon installation file"
+msgstr "Por favor selecione o arquivo de instalação do addon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:144
+msgid "%cAddon id %Q, version %Q%c"
+msgstr "%cAddon id %Q, versão %Q%"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:145
+msgid "Name: %Q"
+msgstr "Nome: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:67
+msgid "Description: %Q"
+msgstr "Descrição: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:152
+#, c-format
+msgid "Total: %d addons installed"
+msgstr "Total: %d addons instalados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:192
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:571
+msgid "Uninstalling existing addon version %Q"
+msgstr "Desinstalando a versão %Q do addon existente "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:384
+msgid "The addon \"%1\" does not exist"
+msgstr "O addon \"%1\" não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:238
+msgid "The addon \"%1\" has no configure callback set"
+msgstr "O addon \"%1\" não tem nenhum retorno de chamada definido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:285
+msgid "The addon \"%1\" has no help callback set"
+msgstr ""
+"O addon \"%1 \" não tem nenhum retorno de chamada de ajuda configurada."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:527
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:377
+msgid "Internal error: call a head-shrinker"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:536
+msgid "The specified version \"%Q\" is not a valid version string"
+msgstr "A versão \"%Q\" especificada não é uma string de versão válida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:542
+#, fuzzy
+msgid "The specified KVIrc version \"%Q\" is not a valid version string"
+msgstr ""
+"A versão \"%s\" do KVIrc especificada não é uma string de versão válida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:548
+#, fuzzy
+msgid ""
+"This KVIrc executable is too old to run this addon (minimum version required "
+"is %Q)"
+msgstr ""
+"O executável do KVirc é muito antigo para executar este script (a versão "
+"mínima requerida é %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:553
+msgid "Attempting to register addon \"%Q\" with version %Q"
+msgstr "Tentando registar o addon \"%Q\" com a versão %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:565
+msgid ""
+"The script addon \"%Q\" already exists with version %Q which is higher than %"
+"Q"
+msgstr "O script addon \"%Q\" já existe com a versão %Q que é maior que a %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:579
+msgid "Script registration failed"
+msgstr "Instalação do script falhou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:584
+msgid "Script succesfully registered"
+msgstr "Script registado com suceso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:102
+#, fuzzy, c-format
+msgid "%s (%s) (%s:%u)"
+msgstr "%Q estabelecida [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:104
+#, fuzzy, c-format
+msgid "%s (%s)"
+msgstr "%s (modulo %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:107
+#, c-format
+msgid "%s (%s:%u)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:109
+#, fuzzy, c-format
+msgid "%s"
+msgstr "%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:112
+#, fuzzy, c-format
+msgid "[IDENT]: %s"
+msgstr "[SOCKET]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:119
+#, fuzzy
+msgid "Shutting down identd service (spontaneous action)"
+msgstr "Recomeçando a conexão direta do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:124
+#, fuzzy
+msgid "Shutting down identd service (requested action)"
+msgstr "Recomeçando a conexão direta do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:225
+#, fuzzy
+msgid "Can't start the ident service : socket() failed"
+msgstr "Não pude configurar um socket de escuta : ligação falhou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:231
+#, fuzzy
+msgid "Can't start the ident service : async setting failed"
+msgstr "Não pude configurar um socket de escuta : ligação falhou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:237
+msgid "Can't enable the ident service : can't setup the listen address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:243
+#, fuzzy
+msgid "Can't start the ident service : bind() failed"
+msgstr "Não pude configurar um socket de escuta : ligação falhou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:249
+#, fuzzy
+msgid "Can't start the ident service : listen() failed"
+msgstr "Não pude configurar um socket de escuta : ligação falhou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:263
+msgid "Can't start the ident service on IpV6 : socket() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:269
+msgid "Can't start the ident service on IpV6 : async setting failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:277
+msgid "Can't enable the ident service on IpV6 : can't setup the listen address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:285
+#, fuzzy
+msgid "Can't start the ident service on IpV6 : bind() failed"
+msgstr "Não pude configurar um socket de escuta : ligação falhou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:294
+#, fuzzy
+msgid "Can't start the ident service on IpV6 : listen() failed"
+msgstr "Não pude configurar um socket de escuta : ligação falhou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:310
+msgid "Starting identd service (IpV4/V6 on separate namespaces)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:313
+msgid "Starting identd service (IpV4/V6 in IpV6 namespace)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:318
+msgid "Starting identd service (IpV4)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:322
+msgid "Service startup (IpV4)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:412
+#, fuzzy
+msgid "Identd accepting connection"
+msgstr "conexão segura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:435
+msgid "Identd socket error : dropping connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:440
+msgid "Identd connection closed by remote host"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:461
+#, fuzzy
+msgid "Identd processing request"
+msgstr "Enviar um endereço fixo nos pedidos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:476
+msgid "Empty request (EOT ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:487
+msgid "Dropping connection (request too long)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:500
+msgid "Timed out while waiting for the request : dropping connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/libkvilinks.cpp:74
+msgid "Links window alread open for this IRC context"
+msgstr "Janela de links já aberta para este contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:57
+msgid "Request Links"
+msgstr "Requisitar Links"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:70
+msgid "Link"
+msgstr "Link"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:71
+msgid "Hops"
+msgstr "Saltos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:72
+msgid "Description"
+msgstr "Descrição"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:90
+msgid "(None)"
+msgstr "(Nenhum)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:112
+msgid "Sent links request, waiting for reply..."
+msgstr "Requisição de links enviada, aguardando resposta..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:115
+msgid "Cannot request links: No active connection"
+msgstr "Não foi possível pedir links: Nenhuma conexão ativa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:128
+msgid "Links cannot be requested: Not connected to a server"
+msgstr "Os links não podem ser requisitados: Não estás conectado a um servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:153
+msgid "Links for %Q [IRC Context %u]"
+msgstr "Links para %Q [Contexto de IRC %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:164
+msgid ""
+"<nobr><font color=\"%s\"><b>Links for %Q</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Links para %Q</b></font> <font color=\"%s\">"
+"[Contexto de IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:194
+msgid "Received end of links."
+msgstr "Fim dos links recebido."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:235
+#, c-format
+msgid ""
+"Broken link: Missing parent (%s) for %s (%d hops): %s (used /LINKS <mask> ?)"
+msgstr ""
+"Link quebrado: Falta o pai (%s) para %s (%d saltos): %s (/LINKS usado "
+"<mascara> ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:238
+#, c-format
+msgid "%s: Parent link %s"
+msgstr "%s:Link Pai %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:242
+msgid "Warning: No root link was sent by the server, the stats may be invalid."
+msgstr ""
+"Aviso: Nenhum link de raiz foi enviado pelo servidor, as estatísticas podem "
+"ser inválidas."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:278
+msgid "%c%cLinks for %Q"
+msgstr "%c%cLinks para %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts listed"
+msgstr "Total de máquinas listadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts in the network"
+msgstr "Total de máquinas na rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:282
+#, c-format
+msgid "Wildcard servers (hubs?): %d"
+msgstr "Servidores Wildcard (hubs?): %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:283
+msgid "Direct links: %d (~%d.%d %)"
+msgstr "Links Diretos : %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:284
+msgid "Close links (1 <= hops <= 3): %d (~%d.%d %)"
+msgstr "Links próximos (1 <= saltos <= 3): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:285
+msgid "Mid-range links (4 <= hops <= 6): %d (~%d.%d %)"
+msgstr "Links de médio alcance (1 <= saltos <= 3): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:286
+msgid "Distant links (7 <= hops): %d (~%d.%d %)"
+msgstr "Links distantes (7 <= saltos): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:287
+#, c-format
+msgid "Broken (unknown) links: %d"
+msgstr "Links (desconhecidos) quebrados: %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:288
+#, c-format
+msgid "Maximum links per host: %d [%s]"
+msgstr "Máximo de links por máquina: %d [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:289
+#, c-format
+msgid "Total links: %d"
+msgstr "Total de links : %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:290
+#, c-format
+msgid "Maximum hops: %d [%s]"
+msgstr "Saltos máximos: %d [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:291
+#, c-format
+msgid "Average hops: ~%d.%d"
+msgstr "Saltos médios: ~%d.%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:294
+msgid "Incomplete LINKS result, no stats available"
+msgstr "Resultado incompleto de LINKS: nenhuma estatística disponível"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:747
+msgid "You're not connected to a server"
+msgstr "Você não esta conectado em um servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:404
+#, c-format
+msgid "Processing link: %s"
+msgstr "Processando link: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:419
+msgid "Broken message syntax, can't extract hops number, assuming 0"
+msgstr ""
+"Sintaxe da mensagem danificada, não se pode extrair o número de saltos, "
+"assumindo 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:86
+msgid "< &Back"
+msgstr "< &Voltar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:87
+msgid "&Next >"
+msgstr "&Próximo >"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:282
+msgid "Finish"
+msgstr "Finalizar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:164
+msgid ""
+"<p><h2>Welcome :)</h2>This is your first time running this version of KVIrc."
+"<br>This wizard will guide you through the few steps required to complete "
+"the setup.<br><br>If you had a previous version of KVIrc installed, no "
+"worries. You will have a chance to preserve the old configuration.</"
+"p><p>Click \"<b>Next</b>\" to proceed.</p>"
+msgstr ""
+"<p><h2>Bem vindo :)</h2>Esta é a primeira execução desta versão do KVIrc."
+"<br>Este assistente lhe ajudará através dos poucos passos necessários para "
+"completar a configuração.<br><br>Caso tenha instalado uma versão anterior do "
+"KVIrc não se preocupe, terá oportunidade de manter sua configuração antiga.</"
+"p><p>Clique em \"<b>Próximo</b>\" para continuar.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:176
+msgid "Welcome to KVIrc"
+msgstr "Bem vindo ao KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:187
+msgid ""
+"<p>All of the files in this distribution are covered by the GPL. In human "
+"terms this can be read as follows:<br><ul><li><b>KVIrc is free</b>, use it, "
+"have fun! <b>:)</b></li><li>If you use <b>any</b> part of KVIrc in your own "
+"project, you <b>must</b> release that project under the same license.</li></"
+"ul></p><p>The \"legalese\" version of the license is shown in the box below."
+"</p>"
+msgstr ""
+"<p>Todos os arquivos desta distribuição estão protegidos pela GPL.<br>Em "
+"termos humanos isto quer dizer o seguinte:<br><ul><li><b>O KVIrc é livre</"
+"b>, use e divirta-se <b>:)</b></li><li>Se utilizar <b>qualquer</b> parte do "
+"KVIrc em seu projeto, <b>DEVE</b> liberá-lo com a mesma licença.</li></ul></"
+"p><p>A versão \"legal\" da licença se encontra no Quadro abaixo.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:203
+msgid ""
+"Oops... can't find the license file.\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+"Oopa... não foi possível encontrar o arquivo de licença.\n"
+"Isto DEVE estar incluso na distribuição...\n"
+"Por favor, informe isto para <pragma at kvirc dot net>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:211
+msgid "Dreaded License Agreement"
+msgstr "Acordo De Licença Temido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:215
+msgid "KVIrc Setup"
+msgstr "Configuração do KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:224
+msgid ""
+"<p>Please choose a folder for KVIrc to store its settings and other data, "
+"and another for downloaded files. Make sure that you have permission to "
+"write to both folders.<br><br>The suggested locations are fine in most "
+"cases, so if you don't know what is this about, just click \"<b>Next</b>\"."
+"<br><br>If you had a previous version of KVIrc installed, you can choose the "
+"existing directory for the settings, and your configuration will be "
+"preserved.</p>"
+msgstr ""
+"<p>Por favor, escolha um diretório para que o KVIrc salve suas configurações "
+"e outros dados, e outro para os arquivos baixados. Tenha certeza de que "
+"possui permissões de escrita em ambos os diretórios.<br><br>A configuração "
+"sugerida estará correta, em muitos casos, se você não souber o que é isto, "
+"Apenas clique em \"<b>Próximo</b>\".<br><br>Se você tiver instalado uma "
+"versão anterior do KVIrc pode escolher os diretórios existentes e sua "
+"configuração será preservada.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:234
+msgid "Application Folders"
+msgstr "Diretórios da Aplicação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:238
+#, fuzzy
+msgid "Store configuration in folder"
+msgstr "<b>Salvar a configuração no diretório:</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:239
+msgid "Use settings folder from previous installation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:251
+msgid "Use new settings folder"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:255
+#, fuzzy
+msgid "Settings folder:"
+msgstr "Configurações"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:281
+#, fuzzy
+msgid "Download files to folder:"
+msgstr "<b>Diretório para arquivos baixados:</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:304
+msgid "All settings in shared program folder (portable)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:325
+#, fuzzy
+msgid ""
+"Please choose a Nickname.<br><br>Your nickname is the name that other IRC "
+"users will know you by. It can't contain spaces or punctuation. Some IRC "
+"networks will shorten your nickname if it is more than 32 characters long."
+"<br><br>If in doubt, just enter the first nick that comes to mind. You will "
+"be able to change it later in the Identity properties, or with the /NICK "
+"command."
+msgstr ""
+"Por favor, escolha um apelido.<br><br>Seu apelido é o nome que você será "
+"conhecido pelos outros usuários do IRC. Não pode conter espaços ou "
+"carácteres de pontuação. Algumas redes de IRC reduzirão seu apelido se tiver "
+"mais de 9 carácteres.<br><br>Em caso de dúvida, digite o primeiro apelido "
+"que vier à cabeça. Você poderá trocá-lo mais tarde nas propriedades do "
+"diálogo de Identidade, ou com o comando /NICK."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:348
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:353
+#, fuzzy
+msgid "Profile"
+msgstr "Prólogo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:355
+msgid "Real name:"
+msgstr "Nome Real:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:361
+#, fuzzy
+msgid "Age:"
+msgstr "Utilização"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:392
+#, fuzzy
+msgid "Unspecified"
+msgstr "Nenhum nome especificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:405
+#, fuzzy
+msgid "Location:"
+msgstr "&Localização:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:408
+msgid "Languages:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:491
+msgid ""
+"<p>Here you can choose how much KVIrc will integrate with your system."
+"<br><br>The default settings are fine for most users so if you're in doubt "
+"just click \"<b>Next</b>\" and go to the next screen.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:501
+msgid "Desktop Integration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:504
+msgid "Make KVIrc default IRC client"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:508
+#, fuzzy
+msgid "Create desktop shortcut"
+msgstr "Atalho na Área de Trabalho"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:513
+msgid "Import server list from mIRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:727
+#, fuzzy
+msgid "Choose an Old Configuration Folder - KVIrc Setup"
+msgstr "Escolha um Diretório de Configuração - Asistente do KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:736
+msgid "Do not overwrite folder? - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:737
+msgid ""
+"A folder %1 seems to be not a valid KVIrc settings folder.Do you want to use "
+"it anyway?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:753
+msgid "Choose a Configuration Folder - KVIrc Setup"
+msgstr "Escolha um Diretório de Configuração - Asistente do KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:764
+msgid "Choose a Download Folder - KVIrc Setup"
+msgstr "Escolha um Diretório de Download - Asistente do KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:933
+msgid "Abort Setup - KVIrc Setup"
+msgstr "Abortar Configuração - Asistente do KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:934
+msgid ""
+"You have chosen to abort the setup.<br>KVIrc cannot run until you complete "
+"this procedure.<br><br>Do you really wish to abort?"
+msgstr ""
+"Você escolheu abortar a configuração.<br>O KVIrc não funcionará até que "
+"complete este procedimento.<br><br>Deseja Realmente abortar?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:965
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:996
+#, c-format
+msgid ""
+"Cannot create directory %s.\n"
+"You may not have write permission for that path. Please go back and choose "
+"another directory."
+msgstr ""
+"Não foi possível criar o diretório %s.\n"
+"É possível que não tenha permissão de escrita para este caminho. Por favor, "
+"Volte e escolha outro diretório."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+#, fuzzy
+msgid "Package saved succesfully"
+msgstr "O tema foi salvo com sucesso em "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:80
+msgid "Event"
+msgstr "Evento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1046
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:92
+msgid "&Export All To..."
+msgstr "&Exportar Todos Para..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:90
+msgid "Edit the event handler name."
+msgstr "Editar o nome dos manipuladores de eventos."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:154
+msgid "&Enable Handler"
+msgstr "&Ativar Manipulador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:158
+msgid "&Disable Handler"
+msgstr "&Desativar Manipulador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:162
+msgid "Re&move Handler"
+msgstr "Re&mover Manipulador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:164
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:166
+msgid "&Export Handler To..."
+msgstr "&Exportar Manipulador Para..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:171
+msgid "&New Handler"
+msgstr "&Novo Manipulador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:190
+msgid "unnamed"
+msgstr "Semnome"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:215
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:250
+msgid "default"
+msgstr "padrão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:314
+msgid "none"
+msgstr "nenhum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:318
+#, c-format
+msgid ""
+"\n"
+"\n"
+"\tEvent:\n"
+"\t\t%s\n"
+"\n"
+"\tParameters:\n"
+"%s"
+msgstr ""
+"\n"
+"\n"
+"\tEvento:\n"
+"\t\t%s\n"
+"\n"
+"\tParâmetros:\n"
+"%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+msgid "Unable to write to the event file."
+msgstr "Incapaz de escrever no arquivo de evento."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+msgid "Unable to write to the events file."
+msgstr "Incapaz de escrever no arquivo de eventos."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:486
+msgid "Event Editor"
+msgstr "Editor de Eventos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:77
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:213
+msgid "Item"
+msgstr "Ítem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:80
+msgid "Submenu"
+msgstr "Submenu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:83
+msgid "External Menu"
+msgstr "Menu Externo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:136
+msgid "Label"
+msgstr "Rótulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:93
+msgid "### Epilogue ###"
+msgstr "### Epílogo ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:94
+msgid "Epilogue"
+msgstr "Epílogo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:97
+msgid "### Prologue ###"
+msgstr "### Prólogo ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:98
+msgid "Prologue"
+msgstr "Prólogo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:198
+msgid "Popup name"
+msgstr "Nome do popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:202
+msgid "Test"
+msgstr "Testar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:230
+msgid "Text:"
+msgstr "Texto:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:236
+msgid ""
+"<center><b>Visible text</b><br>May contain identifiers that will be "
+"evaluated at popup call time.<br>For labels, this text can contain also "
+"limited HTML tags.</center>"
+msgstr ""
+"<center><b>Texto Visível</b><br>Pode conter identificadores que serão "
+"avaliados no momento da chamada ao popup.<br>Para rótulos, este texto pode "
+"conter também alguns marcadores html.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:239
+msgid "Condition:"
+msgstr "Condição:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:245
+msgid ""
+"<center><b>Boolean condition</b><br>Will be evaluated at popup call time in "
+"order to decide if this entry has to be shown.<br>An empty condition "
+"evaluates to true.</center>"
+msgstr ""
+"<center><b>Condição Lógica</b><br>Será avaliada no momento da chamada ao "
+"popup para decidir se deve exibir esta opção.<br>Uma condição vazia se "
+"avalia como certa.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:248
+msgid "Icon:"
+msgstr "Ícone:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:254
+msgid ""
+"<center><b>Icon identifier</b><br>May be an internal icon ID, an absolute "
+"path or a relative path.<br>Portable scripts should never use absolute paths."
+"</center>"
+msgstr ""
+"<center><b>Ícone Identificador</b><br>Pode ser um ID de ícone interno, um "
+"caminho absoluto ou um relativo<br>. Os scripts portáveis nunca deveriam "
+"usar caminhos absolutos.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:257
+msgid "External menu:"
+msgstr "Menu externo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:263
+msgid ""
+"<center><b>External menu name</b><br>This allows to nest externally defined "
+"popup menus. The popup menu with the specified name will be looked up at "
+"menu setup time.</center>"
+msgstr ""
+"<center><b>Nome de menu externo</b><br>Isto permite aninhar menus popups "
+"definidos externamente. O menu com o nome especificado será pesquisado no "
+"momento de configuração do mesmo.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:266
+msgid "Item Id:"
+msgstr "Id do Ítem:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:273
+msgid ""
+"<center><b>Item id</b><br>This will allow you to use delpopupitem later.</"
+"center>"
+msgstr ""
+"<center><b>Itém id</b><br>Isto permitirá você a utilizar delpopupitem mais "
+"tarde.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:386
+msgid "New Separator Below"
+msgstr "Novo Separator Abaixo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:388
+msgid "New Separator Above"
+msgstr "Novo Separador Acima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:391
+msgid "New Separator Inside"
+msgstr "Novo Separador Interno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:396
+msgid "New Label Below"
+msgstr "Novo Rótulo Abaixo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:398
+msgid "New Label Above"
+msgstr "Novo Rótulo Acima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:401
+msgid "New Label Inside"
+msgstr "Novo Rótulo Interno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:406
+msgid "New Item Below"
+msgstr "Novo Item Abaixo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:408
+msgid "New Item Above"
+msgstr "Novo Item Acima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:411
+msgid "New Item Inside"
+msgstr "Novo Item Interno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:416
+msgid "New Menu Below"
+msgstr "Novo Menu Abaixo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:418
+msgid "New Menu Above"
+msgstr "Novo Menu Acima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:421
+msgid "New Menu Inside"
+msgstr "Novo Menu Interno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:426
+msgid "New External Menu Below"
+msgstr "Novo Menu Externo Abaixo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:428
+msgid "New External Menu Above"
+msgstr "Novo Menu Externo Acima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:431
+msgid "New External Menu Inside"
+msgstr "Novo Menu Externo Interno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:451
+msgid "&Paste Below"
+msgstr "Co&lar Abaixo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:456
+msgid "Paste Above"
+msgstr "Colar acima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:461
+msgid "Paste Inside"
+msgstr "Colar dentro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:473
+msgid "New Menu Prologue"
+msgstr "Novo Prólogo de Menu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:481
+msgid "New Menu Epilogue"
+msgstr "Novo Epílogo de Menu "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1042
+msgid "Popup"
+msgstr "Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1048
+msgid "&Export selected To..."
+msgstr "&Exportar selecionado Para..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1099
+msgid "&New Popup"
+msgstr "&Novo Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1105
+msgid "Re&move Popup"
+msgstr "Re&mover Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1112
+msgid "&Export Popup To..."
+msgstr "&Exportar Popup para..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+msgid "Unable to write to the popup file."
+msgstr "Impossível escrever no arquivo de popup."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1382
+msgid "Popup Editor"
+msgstr "Editor de Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:62
+msgid "%cCore action: %Q"
+msgstr "%cAção do núcleo: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:64
+msgid "%cUser action: %Q"
+msgstr "%cAção de Usuário: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:65
+msgid "Label: %Q"
+msgstr "Rótulo: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:66
+msgid "Category: %Q"
+msgstr "Categoria: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:112
+msgid "The action \"%1\" is disabled"
+msgstr "A ação \"%1\" está desabilitada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:259
+msgid "The action \"%1\" does not exist"
+msgstr "A ação \"%1\" não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:255
+msgid "The action \"%1\" is a core action and cannot be destroyed"
+msgstr "A ação \"%1\" é uma ação do núcleo e não pode ser destruída"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:392
+msgid "The switch -l requires -c"
+msgstr "A opção -l requer -c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:409
+msgid "The switch -s requires -w with a combination of flags 'c','x' and 'q'"
+msgstr "A opção -s requer -w com a combinação das opções 'c','x' e 'q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:420
+msgid ""
+"The action \"%1\" is already defined as core action and cannot be overridden"
+msgstr ""
+"A ação \"%1 \" já está definida como ação do núcleo e não pode ser sobreposta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:116
+msgid "Ops.. internal error"
+msgstr "Opa.. erro interno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:125
+msgid "Manage File &Transfers"
+msgstr "Gerênciar Transferências de arquivos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:67
+msgid "Choose Avatar - KVIrc"
+msgstr "Escolha o Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:72
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+"Escolhe uma imagem Avatar. O caminho completo para o arquivo local ou uma "
+"imagem na web, podem ser usados.<br>Se quiseres usar um arquivo local, "
+"clique no botão \"<b>Procurar</b>\" para procurar arquivos locais.<br>A URL "
+"completa para uma imagem (incluindo <b>http://</b>) pode ser digitada "
+"manualmente."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:283
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:358
+msgid "Internal error: I'm not in the user database ?"
+msgstr "Erro interno: Eu não estou na base de dados de usuários ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:245
+#, fuzzy
+msgid "Can't set the current avatar to '%Q': failed to start the http transfer"
+msgstr ""
+"Não foi possivel colocar o avatar atual para '%s': falha ao iniciar a "
+"transferência http"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:249
+#, fuzzy
+msgid "Can't set the current avatar to '%Q': can't load the image"
+msgstr ""
+"Não foi possivel colocar o avatar atual para '%s': não foi possivel carregar "
+"a imagem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:351
+msgid "Invalid timeout specified, using default"
+msgstr "Intervalo de tempo especificado inválido: usar pre-definido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:389
+#, fuzzy
+msgid "Can't add a file offer for file %Q (huh ? file not readable ?)"
+msgstr ""
+"Não foi possível adicionar o compartilhamento do arquivo %s (huh? arquivo "
+"não legível?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:396
+#, fuzzy
+msgid "Added %d secs file offer for file %Q (%Q) and receiver %Q"
+msgstr "Adicionado %d seg ao envío do arquivo %s (%s) e receptor %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:403
+#, fuzzy
+msgid "Notifying avatar '%Q' to %Q"
+msgstr "Notificando avatar ' %s' para %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:55
+msgid "&Execute"
+msgstr "&Executar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:59
+msgid "Params:"
+msgstr "Parâmetros:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:107
+msgid "Script Tester"
+msgstr "Testar Script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:220
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:413
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:543
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:628
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:765
+#, fuzzy
+msgid "The config file with id '%Q' is not open"
+msgstr "O arquivo de configuração com id '%s' não está aberto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:538
+#, fuzzy
+msgid ""
+"The config file '%Q' has been changed but is opened as read-only: changes "
+"will be lost"
+msgstr ""
+"O arquivo de configuração '%s' foi alterado mas está aberto como somente "
+"leitura: as alterações serão perdidas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:583
+#, fuzzy
+msgid "The config file with id '%Q' is read only"
+msgstr "O arquivo de configuração com id '%s' é somente leitura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:178
+msgid "Colors"
+msgstr "Cores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:255
+#, fuzzy
+msgid "Context sensitive help"
+msgstr "&Diferenciar Maiúsculas/minúsculas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1167
+#, fuzzy
+msgid "&Replace"
+msgstr "Respostas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:268
+#, fuzzy
+msgid "Find & Repalce"
+msgstr "Respostas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1148
+msgid "Word to Find"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1156
+#, fuzzy
+msgid "Replace with"
+msgstr "Respostas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1172
+msgid "&Replace in all Aliases"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1176
+#, fuzzy
+msgid "&Findnext"
+msgstr "&Procurar próximo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1181
+#, fuzzy
+msgid "&Replace(WIP)"
+msgstr "Respostas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:227
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:547
+msgid "The specified toolbar doesn't exist"
+msgstr "A barra de ferramentas especificada não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:424
+#, fuzzy
+msgid "No action name/index specified"
+msgstr "Nenhum nome de opção especificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:441
+msgid "The action parameter didn't evaluate to an index"
+msgstr "O parâmetro da ação não avaliou para um índice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:455
+msgid "The toolbar does not contain the specified item"
+msgstr "A Barra de Ferramentas não contém o ítem especificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:513
+#, fuzzy
+msgid "The action \"%Q\" doesn't exist"
+msgstr "A ação \"%s\" não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:31
+msgid "Torrent Client"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:361
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:364
+#, fuzzy
+msgid "Standalone Servers"
+msgstr "Cores Padrão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:112
+#, fuzzy
+msgid ""
+"%Q doesn't look like a servers.ini file.\n"
+"Import failed."
+msgstr ""
+"%s não parece ser um arquivo servers.ini.\n"
+"Importação falhou."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:122
+msgid "Choose a servers.ini file"
+msgstr "Escolha o arquivo servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:146
+msgid "Remote mIRC servers.ini Import Wizard"
+msgstr "Assistente de Importação remota do servers.ini do mIRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:154
+msgid ""
+"<center><b>Welcome!</b><br><br>This wizard will guide you in the process of "
+"downloading a list of IRC servers. Please click \"<b>Next</b>\" to begin the "
+"operation.</center>"
+msgstr ""
+"<center><b>Bem vindo!</b><br><br>Este assistente irá guiá-lo no processo de "
+"transferência de uma lista de servidores IRC. Por favor clique em "
+"\"<b>Próximo</b>\" para iniciar a operação.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:161
+msgid ""
+"<center>Here you can modify the URL that the list will be downloaded from. "
+"In most cases the default URL is acceptable.</center>"
+msgstr ""
+"<center>Aqui você pode modificar a URL de onde a lista será transferida. Na "
+"maior parte dos casos a URL padrão é aceitável.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:169
+msgid "URL Selection"
+msgstr "Seleção de URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:173
+msgid "Please wait while the list is being downloaded"
+msgstr "Por favor aguarde enquanto a lista é transferida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:179
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:195
+msgid "List Download"
+msgstr "Lista de Transferências"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:229
+msgid "Failed to start the server list transfer :("
+msgstr "Falhou ao iniciar a transferência da lista de servidores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:245
+msgid "File downloaded: processing ..."
+msgstr "Arquivo transferido: processando..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:255
+msgid "%1 servers imported succesfully"
+msgstr "%1 servidor(es) importado(s) com sucesso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:257
+msgid "No servers imported"
+msgstr "Nenhum servidor importado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:326
+msgid "Import from servers.ini"
+msgstr "Importar de servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:333
+msgid "Import from http://www.mirc.co.uk/servers.ini"
+msgstr "Importar de http://www.mirc.co.uk/servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lineedit.cpp:372
+#, fuzzy
+msgid "Unknown echo mode %Q"
+msgstr "Modo eco desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:203
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:359
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:172
+#, fuzzy
+msgid "Widget parameter is not an object"
+msgstr "O parâmetro especificado não é um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:230
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:250
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:449
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:485
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:177
+#, fuzzy
+msgid "Widget parameter is not a valid object"
+msgstr "O parâmetro especificado não é um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:95
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:263
+msgid "Widget object required"
+msgstr "Objeto widget requerido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:151
+#, fuzzy
+msgid "Unknown dock area '%Q'"
+msgstr "Operador desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:321
+#, fuzzy
+msgid "Unknown alignment: '%Q'"
+msgstr "Alinhamento desconhecido: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:373
+#, fuzzy
+msgid "Unknown style: '%Q'"
+msgstr "Frame desconhecido / estilo sombra: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:84
+msgid "the toolbar cannot be a parent-widget!"
+msgstr "a barra de ferramentas não pode ser parent-widget!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:93
+msgid "The parent-widget isn't a MainWindow."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:999
+msgid "The array passed as parameter must contain at least 4 elements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1012
+msgid "One of the geometry array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1017
+#, fuzzy
+msgid "One of the geometry array parameters didn't evaluate to an integer"
+msgstr "O parâmetro da ação não avaliou para um índice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:503
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1032
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1500
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1044
+#, fuzzy
+msgid "The first parameter didn't evaluate to an array nor an integer"
+msgstr "O parâmetro da ação não avaliou para um índice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1419
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1476
+msgid "The array passed as parameter must contain at least 2 elements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:451
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:486
+msgid "One of the array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:456
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:491
+#, fuzzy
+msgid "One of the array parameters didn't evaluate to an integer"
+msgstr "O parâmetro da ação não avaliou para um índice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:478
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:804
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:993
+msgid "The array passed as parameter must contain at least 3 elements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:551
+#, fuzzy
+msgid "Unknown orientation"
+msgstr "Função desconhecida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:789
+msgid "Pixmap or Widget parameter is not an object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:730
+#, fuzzy
+msgid "Widget or Pixmap required "
+msgstr "Widget ou Pixmap requerido (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:852
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:862
+#, fuzzy
+msgid "Invalid mode '%Q'"
+msgstr "imagem inválida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:886
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1701
+#, fuzzy
+msgid "Pixmap parameter is not an object"
+msgstr "O parâmetro especificado não é um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:891
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1706
+msgid "Pixmap object required"
+msgstr "Objeto pixmap requerido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1027
+msgid ""
+"$setGeometry() requires either an array as first parameter or four integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:813
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1002
+msgid "One of the colors array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:818
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1007
+#, fuzzy
+msgid "One of the colors array parameters didn't evaluate to an integer"
+msgstr "O parâmetro da ação não avaliou para um índice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1020
+msgid "A string of 6 digits hex is required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:842
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1031
+msgid "Not an hex digits"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1144
+msgid ""
+"$setForegroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1219
+msgid ""
+"$setBackgroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1426
+#, fuzzy
+msgid "One of the move array parameters is empty"
+msgstr "O parâmetro da ação não avaliou para um índice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1431
+#, fuzzy
+msgid "One of the move array parameters didn't evaluate to an integer"
+msgstr "O parâmetro da ação não avaliou para um índice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1438
+msgid "$move() requires either an array as first parameter or two integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1483
+#, fuzzy
+msgid "One of the resize array parameters is empty"
+msgstr "O parâmetro da ação não avaliou para um índice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1488
+#, fuzzy
+msgid "One of the resize array parameters didn't evaluate to an integer"
+msgstr "O parâmetro da ação não avaliou para um índice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1495
+msgid "$resize() requires either an array as first parameter or two integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1528
+msgid "Invalid parameters"
+msgstr "Parâmetros inválidos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1560
+#, fuzzy
+msgid "Unknown widget flag '%Q'"
+msgstr "Tipo de widget desconhecido: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1592
+#, fuzzy
+msgid "Unknown style '%Q'"
+msgstr "Frame desconhecido / estilo sombra: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1622
+msgid "No Layout associated to the widget "
+msgstr "Nenhuma Disposição associada ao widget "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:117
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:152
+msgid "Can't add a non-widget object"
+msgstr "Não foi possível adicionar um objeto não widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1650
+#, fuzzy
+msgid "Parent must be a widget object"
+msgstr "Não é um objeto do widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1715
+msgid "Null mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1740
+#, fuzzy
+msgid "Unknown widget attribute '%Q'"
+msgstr "Tipo de widget desconhecido: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:382
+#, fuzzy
+msgid "No such line number"
+msgstr "Nenhum timer (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:500
+#, fuzzy
+msgid "Unknown word wrap '%Q'"
+msgstr "Operação de associação desconhecida '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:519
+msgid "Unknown wrap policy'%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:850
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1039
+msgid "$setColor requires either an array as first parameter or three integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:975
+#, fuzzy
+msgid "Unknown text format '%Q'"
+msgstr "Função desconhecida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1071
+#, fuzzy
+msgid " I can't find the specified file '%Q'."
+msgstr "Eu não posso encontrar o arquivo especificado."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1078
+#, fuzzy
+msgid " I cannot read the file %Q'."
+msgstr " Eu não posso ler o arquivo."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1113
+#, fuzzy
+msgid "Unknown alignment '%Q'"
+msgstr "Alinhamento desconhecido: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1131
+#, fuzzy
+msgid "Unknown auto formatting mode '%Q'"
+msgstr "Operação de associação desconhecida '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1149
+#, fuzzy
+msgid "Unknown vertical alignment '%Q'"
+msgstr "Alinhamento desconhecido: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:264
+#, fuzzy
+msgid "pix '%Q' doesn't exists"
+msgstr "A ação \"%s\" não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:276
+#, fuzzy
+msgid "Can't add a non - popupmenu object"
+msgstr "Não foi possível adicionar um objeto não widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:302
+msgid "Doesn't a widget object"
+msgstr "Não é um objeto do widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:182
+#, fuzzy
+msgid "I can't find the specified file %Q."
+msgstr "Eu não posso encontrar o arquivo especificado."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:222
+#, fuzzy
+msgid "Destination parameter is not an object"
+msgstr "O parâmetro especificado não é um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:228
+#, fuzzy
+msgid "Destination must be a pixmap object"
+msgstr "O parâmetro especificado não é um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:238
+msgid "Area dimensions are out of destination size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:253
+msgid "Pixmap dimensions are out of destination size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:261
+msgid "Offset width area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:266
+msgid "Offset height area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:121
+msgid "The widget must be a child of this hbox"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:191
+#, fuzzy
+msgid "No string parameter given - using empty string"
+msgstr "Parâmetro de texto quebrado: assumindo string vazia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:194
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:214
+#, c-format
+msgid "Item index [%d] is too big - defaulting to $count() - 1 [%d]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:333
+#, fuzzy
+msgid "Invalid insertion Policy %Q"
+msgstr "id inválida do timer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:136
+#, fuzzy
+msgid "Unknown mode "
+msgstr "Modo eco desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:149
+#, fuzzy
+msgid "Unknown segment style "
+msgstr "Tipo de widget desconhecido: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_process.cpp:221
+msgid "Process could not be starded."
+msgstr "O processo nao pode ser iniciado."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:279
+#, fuzzy
+msgid "Invalid selection mode '%Q' assuming single"
+msgstr "Direção inválida para este motor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:316
+#, fuzzy
+msgid "Unknown text position '%Q'"
+msgstr "Função desconhecida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:256
+#, fuzzy
+msgid "Unknown tickmark '%Q'"
+msgstr "Comando desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:271
+#, fuzzy
+msgid "Unknown orientation '%Q'"
+msgstr "Função desconhecida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:500
+msgid "No socket object specified"
+msgstr "Nenhum objeto socket especificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:506
+msgid "Invalid socket object specified (it doesn't inherit from socket)"
+msgstr "Objecto socket especificado inválido (não herdou do socket)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:518
+msgid "There is no connection to accept!"
+msgstr "Não há nenhuma conexão para aceitar!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:591
+#, c-format
+msgid "Value %d for port is out of range (values allowed are from 0 to 65535"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:596
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:87
+msgid "Another connection in progress"
+msgstr "Outra conexão em progresso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:648
+msgid "No IPV6 support in this executable"
+msgstr "Sem suporte IPV6 neste executável"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:670
+#, fuzzy
+msgid "Invalid IP address specified ('%Q')"
+msgstr "endereço ip (%s) especificado inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:89
+msgid "Socket creation failed"
+msgstr "Criação do socket falhou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:706
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:727
+msgid "Invalid socket address"
+msgstr "Endereço inválido de socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:714
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:735
+msgid "Bind failure"
+msgstr "Associação (bind) falhou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:745
+msgid "Listen failure"
+msgstr "Escuta falhou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:812
+msgid "unknown"
+msgstr "desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:876
+#, fuzzy
+msgid "Invalid ip address "
+msgstr "endereço ip (%s) inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:882
+#, fuzzy
+msgid "Invalid ip address (%Q)"
+msgstr "endereço ip (%s) inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:906
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1013
+msgid "Failed to create the socket"
+msgstr "Falha ao criar o socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:918
+msgid "Failed to setup a nonblocking socket"
+msgstr "Falhou ao configurar um socket de não bloqueio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:939
+#, fuzzy
+msgid "Connect failure: "
+msgstr "Conexão falhou: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:967
+msgid "Connect attempt timed out"
+msgstr "Tentativa de conexão expirou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:993
+msgid "Can't start the DNS thread"
+msgstr "Não foi possível iniciar o processo DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:1143
+msgid ""
+"Too much unprocessed incoming data (you've left this socket unmanaged ?)"
+msgstr ""
+"Muitos dados recebidos não foram processados (Você deixou este socket sem "
+"gerenciamento?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:149
+msgid "Error in KVS class implementation: processing aborted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:154
+#, fuzzy
+msgid "Processing aborted"
+msgstr "Processando a lista: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:160
+#, c-format
+msgid "Error near line %d, column %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:162
+#, c-format
+msgid "Warning near line %d, column %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:313
+#, fuzzy
+msgid "XML support not available in the Qt library"
+msgstr "Medição de Lag ainda não disponível"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:491
+#, fuzzy
+msgid "Not a widget object"
+msgstr "Não é um objeto do widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:308
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:497
+msgid "Can't find the tab "
+msgstr "Não foi possível encontrar a tab "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:522
+#, fuzzy
+msgid "Unknown position 'Q%'"
+msgstr "Função desconhecida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:123
+msgid "The widget must be a child of this vbox"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:276
+#, fuzzy
+msgid "Not Enough Parameters"
+msgstr "Parâmetros insuficientes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:142
+msgid "The listviewitem cannot be parentless"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:152
+msgid ""
+"The parent of the listviewitem must be either another listviewitem or a "
+"listview"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:403
+#, fuzzy
+msgid "Pixmap object or image Id required"
+msgstr "Objeto pixmap requerido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:413
+#, fuzzy
+msgid ""
+"Error occured: the suitable file '%Q' is not of the correct format or it is "
+"not a valid icon number."
+msgstr ""
+"Ocorreu um erro: o arquivo não é do formato correto ou não é um número de "
+"ícone válido."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:151
+msgid ""
+"The window identifier preceeded by WinId must be the first object in the "
+"search path"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:167
+#, fuzzy
+msgid "Failed to find one of the wrap path widgets (%Q::%Q)"
+msgstr "Não foi possível encontrar o widget (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:176
+#, fuzzy
+msgid "Failed to find the widget to wrap"
+msgstr "Não foi possível encontrar o widget (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:119
+msgid "The parent of a layout must be a widget!"
+msgstr "O pai de um layout deve ser um widget!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:269
+#, fuzzy
+msgid "Invalid resize mode defaulting to Auto"
+msgstr "Modo de redimensionamento invalido (%s): usando padrão automaticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:324
+#, fuzzy
+msgid "Unknown alignment"
+msgstr "Alinhamento desconhecido: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:373
+#, fuzzy
+msgid "Unknown orientation: "
+msgstr "Função desconhecida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listview.cpp:320
+#, fuzzy
+msgid "Invalid selection mode '%Q'"
+msgstr "Direção inválida para este motor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tbrowser.cpp:99
+#, fuzzy
+msgid "I can't find the specified file '%Q'."
+msgstr "Eu não posso encontrar o arquivo especificado."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:121
+#, fuzzy
+msgid "Can't add a null object"
+msgstr "Não foi possível adicionar um objeto não widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:128
+msgid ""
+"Invalid object handle passed as parameter (the object is no longer "
+"existing ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:134
+msgid "Object in invalid state"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:140
+msgid "Can't set a non-widget object to be the main widget of a dock window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:146
+msgid "The added widget is not a child of this dock window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:271
+#, fuzzy
+msgid "Invalid dock area specified"
+msgstr "endereço ip (%s) especificado inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:181
+#, fuzzy
+msgid "Class '%Q' is not definited"
+msgstr "Classe \"%Q\" indefinida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:257
+msgid "Inexisting target object for objects.connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:262
+msgid "Inexisting source object for objects.connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:444
+#, fuzzy
+msgid "The class '%Q' does not exist"
+msgstr "O alias %Q não existe."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:404
+#, fuzzy
+msgid "Object does not exists"
+msgstr "O objeto pai especificado não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:557
+msgid "Inexisting target object for objects.disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:562
+msgid "Inexisting source object for objects.disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:608
+#, fuzzy
+msgid "Source is not an object"
+msgstr "O parâmetro especificado não é um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:614
+#, fuzzy
+msgid "Destination is not an object"
+msgstr "O parâmetro especificado não é um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:625
+#, fuzzy
+msgid "Widget, Image or Pixmap required "
+msgstr "Widget ou Pixmap requerido (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:635
+#, fuzzy
+msgid "Widget or Pixmap required"
+msgstr "Widget ou Pixmap requerido (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:714
+msgid "One o more of background, foreground or destination aren't objects"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:720
+#, fuzzy
+msgid "Pixmap objects required"
+msgstr "Objeto pixmap requerido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:743
+msgid "Values for background are out of image size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:748
+msgid "Values for foreground are out of image size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:226
+msgid "Empty filename string"
+msgstr "String de nome de arquivo vazia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:271
+#, fuzzy
+msgid "No such open mode: '%Q'"
+msgstr "Sem modo aberto: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:312
+#, fuzzy
+msgid "File is not open!"
+msgstr "O arquivo não está aberto !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:348
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:406
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:434
+msgid "File is not open !"
+msgstr "O arquivo não está aberto !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:369
+msgid "Argument to long, using only first char"
+msgstr "Argumento muito longo, usando apenas o caracter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:339
+msgid "Write error occured !"
+msgstr "Ocorreu um erro de escrita!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:352
+msgid "Read error occured !"
+msgstr "Ocorreu um erro de leitura!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:371
+msgid "An error occured !"
+msgstr "Ocorreu um erro!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:387
+msgid "Missing both encrypt and decrypt key: at least one is needed"
+msgstr ""
+"Faltando tanto a chave de criptografia quanto a de descriptografia: é "
+"necessário pelo menos uma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:168
+msgid "Error 0: Success ?"
+msgstr "Erro 0: Sucesso ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:169
+msgid "Unsupported crypt mode"
+msgstr "Mode de criptografia não suportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:170
+msgid "Unsupported direction"
+msgstr "Direção não suportada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:171
+msgid "Unsupported key length"
+msgstr "Tamanho de chave não suportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:172
+msgid "Bad key data"
+msgstr "Dados de chave errados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:173
+msgid "Engine not initialized"
+msgstr "Motor não inicializado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:174
+msgid "Invalid direction for this engine"
+msgstr "Direção inválida para este motor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:175
+msgid "Corrupted message data or invalid decrypt key"
+msgstr "Dados da mensagem corrompidos ou chave de descriptografia inválida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:52
+msgid "Unknown error"
+msgstr "Erro desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:184
+msgid "Ops...encrypt cipher not initialized"
+msgstr "Opa...motor de criptografia não inicializado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:420
+msgid "Data buffer too long"
+msgstr "Buffer de dados muito grande"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:221
+msgid "Ops...decrypt cipher not initialized"
+msgstr "Opa...motor de descriptografia não inicializado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:277
+msgid "The message is not a hexadecimal string: this is not my stuff"
+msgstr "A mensagem não é uma string hexadecimal: Isto não é meu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:671
+msgid "The message is not a base64 string: this is not my stuff"
+msgstr "A mensagem não é uma string de base64: Isto não é meu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:676
+msgid "The message doesn't seem to be encoded with CBC Mircryption"
+msgstr "A mensagem não parece estar codificada com CBC Mircryption"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:712
+#, c-format
+msgid ""
+"Cryptographic engine based on the\n"
+"Advanced Encryption Standard (AES)\n"
+"algorithm called Rijndael.\n"
+"The text is first encrypted with rijndael\n"
+"and then converted to %s notation.\n"
+"The keys used are %d bit long and will be padded\n"
+"with zeros if you provide shorter ones.\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"See the rijndael module documentation\n"
+"for more info on the algorithm used.\n"
+msgstr ""
+"Motor criptográfico baseado em \n"
+"Advanced Encryption Standard (AES)\n"
+"algoritmo chamado Rijndael.\n"
+"O texto é encriptado primero com rijndael\n"
+"e depois convertido a notação %s.\n"
+"As chaves usadas são de tamanho %d bits e serão completadas\n"
+"com zeros se você fornecer uma mais curta.\n"
+"Se você só fornecer uma chave, este motor\n"
+"a utilizará para encriptação e desencriptação.\n"
+"Leia a documentação do módulo rijndael\n"
+"para obter mais informações sobre o algoritmo usado.\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:739
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:749
+msgid "hexadecimal"
+msgstr "hexadecimal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:759
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:779
+msgid "base64"
+msgstr "base64"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:790
+msgid ""
+"Popular cryptographic engine based on the\n"
+"old Blowfish encryption algorithm.\n"
+"The text is first encrypted with Blowfish \n"
+"and then converted to base64 notation.\n"
+"The keys used have variable length and\n"
+"are specified as character strings.\n"
+"You can specify keys long up to 56 bytes (448 bits).\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"This engine works in ECB mode by default:\n"
+"if you want to use CBC mode you must prefix\n"
+"your key(s) with \"cbc:\".\n"
+msgstr ""
+"Motor de criptografia popular baseado no\n"
+"antigo algoritmo de criptografia chamado Blowfish.\n"
+"O texto é encriptado primero com Blowfish\n"
+"e depois convertido a notação base64\n"
+"As chaves utilizadas tem comprimento variável e\n"
+"e são especificadas como carácteres string\n"
+"Você pode fornecer chaves com até 56 bytes (448 bits).\n"
+"Se apenas uma chave for fornecida, este motor a utilizará para as operações "
+"de criptografia e descriptografia.\n"
+"Este motor trabalha no modo ECB por padrão \n"
+"Se você quiser utilizarar o modo CBC você deve prefixar\n"
+" sua(s) chaves(s) com \"cbc:\".\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:61
+msgid "Drop here the icons from the toolbars to remove them"
+msgstr "Arraste para cá os ícones que deseja remover da barra de ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:128
+msgid "ToolBar Properties"
+msgstr "Propriedades da Barra de Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:144
+msgid "Icon"
+msgstr "Ícone"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:160
+msgid "Id"
+msgstr "Id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:217
+msgid "Please choose the icon for the ToolBar"
+msgstr "Por favor escolha o ícone da Barra de Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "Invalid ToolBar Label"
+msgstr "Rótulo da Barras de Ferramentas inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "The ToolBar Label can't be empty!"
+msgstr "O Rótulo da Barra de Ferramentas não pode estar vazio!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:256
+msgid "Duplicate ToolBar Id"
+msgstr "id da Barras de Ferramentas Duplicada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:257
+msgid ""
+"The specified ToolBar Id already exists.<br>Would you like KVIrc to assign "
+"it automatically (so it doesn't collide with any other toolbar) or you "
+"prefer to do it manually ?"
+msgstr ""
+"A Id especificada para Barra de Ferramentas já existe.<br>Deseja que o KVirc "
+"atribua isto automáticamente (para que não colida com outra barra de "
+"ferramentas) ou você prefere fazer manualmente?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Manually"
+msgstr "Manualmente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Automatically"
+msgstr "Automaticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:278
+msgid "Hide Advanced"
+msgstr "Ocultar Avançado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:287
+msgid "Customize Toolbars"
+msgstr "Personalizar Barras de Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:296
+msgid "New ToolBar"
+msgstr "Nova Barra de Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:300
+msgid "Delete ToolBar"
+msgstr "Deletar Barras de Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:304
+msgid "Edit ToolBar"
+msgstr "Editar Barra de Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:312
+msgid "Export ToolBar"
+msgstr "Exportar Barra de Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:373
+msgid "Confirm ToolBar Deletion"
+msgstr "Confirmar a deleção da barra de ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:374
+msgid "Do you really want to delete toolbar \"%1\" ?"
+msgstr "Você deseja realmente deletar a barra de ferramentas \"%1\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:397
+msgid "ToolBar Export"
+msgstr "Exportar Barra de Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:398
+msgid "Do you want the associated actions to be exported with the toolbar ?"
+msgstr ""
+"Você deseja que as ações associadas sejam exportadas com a barra de "
+"ferramentas ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+msgid "Unable to write to the toolbar file."
+msgstr "Não foi possível escrever no arquivo de barra de ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:465
+msgid "Please specify the properties for the toolbar \"%1\""
+msgstr ""
+"Por favor especifique as propriedades para a barra de ferramentas \"%1\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:491
+msgid "Please specify the properties for the new toolbar"
+msgstr "Por favor especifique as propriedades para a barra de ferramentas nova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:493
+msgid "My ToolBar"
+msgstr "Minha Barra de Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:63
+#, fuzzy
+msgid "Window with ID '%Q' not found"
+msgstr "Janela com ID '%s' não encontrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:67
+#, fuzzy
+msgid "The specified window (%Q) is not a channel/query/DCC chat"
+msgstr "A Janela especificada (%s) não é um canal/privado/DCC de chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:108
+msgid "File not found or empty"
+msgstr "Arquivo não encontrado ou vazio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:114
+msgid "I can't open that file"
+msgstr "Não foi possível abrir este arquivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:122
+msgid "Could not paste file"
+msgstr "Não foi possível colar arquivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:218
+#, fuzzy
+msgid "The specified window (%Q) is not a channel/query/dcc"
+msgstr "A janela especificada (%s) não é um canal/privado/dcc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:271
+#, fuzzy
+msgid "Slow-paste ID:%d Window:%Q"
+msgstr "Colar devagar ID:%d Janela:%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:240
+msgid "Plugin not found. Please check the plugin-name and path."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:247
+#, fuzzy
+msgid "Error while loading plugin."
+msgstr "Erro ao carregar módulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:311
+msgid "This plugin does not export the desired function."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:327
+msgid ""
+"The plugin has no function to free memory. This can result in Memory Leaks!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:209
+#, c-format
+msgid "No environment variable found, please don't use the %% in the request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:482
+msgid "Invalid DCOP parameter syntax"
+msgstr "Sintaxe inválida do parâmetro de DCOP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:495
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:516
+msgid "The specified parameter is not an integer"
+msgstr "O parâmetro especificado não é um inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:521
+#, c-format
+msgid "Unsupported DCOP parameter type %s"
+msgstr "Não suportado parâmetro DCOP do tipo %s "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:534
+msgid "DCOP call failed"
+msgstr "Chamada DCOP falhou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:599
+msgid "DCOP calls are available only when KDE support is compiled in"
+msgstr ""
+"Chamadas DCOP estão disponíveis apenas quando compilado com suporte KDE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1408
+#, c-format
+msgid "The window with id '%s' does not exist"
+msgstr "A Janela com id '%s' não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:851
+msgid "Window type or 'all' expected as first parameter"
+msgstr "Tipo de janela ou ' todas ' se esperava como primeiro parâmetro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:938
+#, fuzzy
+msgid "Invalid IRC context id '%Q'"
+msgstr "Id '%s' de contexto de IRC inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1045
+msgid "The specified IRC context is not valid: creating a context free window"
+msgstr ""
+"O contexto de IRC especificado não é válido: criando uma janela de contexto "
+"livre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1119
+msgid "The specified window is not of type \"userwnd\""
+msgstr "A janela especificada não é do tipo \"userwnd\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1208
+msgid "Window doesn't have input widget"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1363
+msgid "The encrypt key wasn't a valid hexadecimal string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1377
+msgid "The decrypt key wasn't a valid hexadecimal string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1414
+msgid "Both -n and -m switchess specified, -n takes precedence"
+msgstr "Ambas as opções -n e -m especificadas, -n toma precedência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1424
+msgid "No encrypt key specified: can't allocate engine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1446
+#, fuzzy
+msgid "Unknown engine error"
+msgstr "Erro desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1449
+#, fuzzy
+msgid "Failed to initialize the specified crypt engine: %Q"
+msgstr "Falhou ao alocar motor de criptografia especificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1453
+#, fuzzy
+msgid "The crypt engine \"%Q\" does not exist"
+msgstr "A ação \"%1\" não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1458
+msgid "This executable has been compiled without crypt support"
+msgstr "Este executável está compilado sem suporte a criptografia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:138
+msgid "Current window is not a channel"
+msgstr "A Janela atual não é um canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:87
+msgid "Raw Event"
+msgstr "Evento Raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:97
+#, fuzzy
+msgid "Edit the raw event handler name."
+msgstr "Editar o nome dos manipuladores de eventos."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:179
+msgid "&Add Raw Event..."
+msgstr "&Adicionar Evento Raw..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "New Raw Event"
+msgstr "Novo Evento Raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "Enter the numeric code of the message (0-999)"
+msgstr "Digite o código numérico da mensagem (0-999)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#, fuzzy
+msgid "Unable to write to the raw event file."
+msgstr "Incapaz de escrever no arquivo de evento."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+#, fuzzy
+msgid "Unable to write to the raw events file."
+msgstr "Incapaz de escrever no arquivo de eventos."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:512
+msgid "Raw Editor"
+msgstr "Editor de Raw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:219
+msgid "A really lame text transformation engine :D"
+msgstr "Um motor de transformação de texto realmente simple :D"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:229
+#, fuzzy
+msgid "A really lame text transformation engine: Light Version."
+msgstr "Um motor de transformação de texto realmente simple :D"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:82
+#, c-format
+msgid "Socket Spy [IRC Context %u]"
+msgstr "Espião de Sockets [Contexto de IRC de %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:92
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Socket Spy</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Espião de Sockets</b></font> <font color=\"%s\">"
+"[Contexto de IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:112
+msgid "Socket open"
+msgstr "Socket aberto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:117
+msgid "Socket closed"
+msgstr "Socket fechado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:149
+msgid "Internal unique name for the action"
+msgstr "Nome interno único para a ação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:151
+msgid "Label:"
+msgstr "Rótulo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:155
+msgid ""
+"Visible name for this action.<br>This string will be displayed to the user "
+"so it is a good idea to use $tr() here"
+msgstr ""
+"Nome visível para esta ação.<br>Esta string será exibida para o usuárioentão "
+"é uma boa ideia utilizar $tr() aqui "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:166
+msgid "Action code"
+msgstr "Código da ação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:168
+msgid "Code"
+msgstr "Código"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:174
+msgid "Category:"
+msgstr "Categoria:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:178
+msgid "Choose the category that best fits for this action"
+msgstr "Escolha a categoria que seja melhor para esta ação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:180
+msgid "Description:"
+msgstr "Descrição:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:184
+msgid ""
+"Visible short description for this action.<br>This string will be displayed "
+"to the user so it is a good idea to use $tr() here"
+msgstr ""
+"Pequena descrição visível para esta ação.<br>Esta string será exibida para o "
+"usuário então é uma boa ideia utilizar $tr() aqui"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:186
+msgid "Small Icon:"
+msgstr "Ícones Pequenos:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:194
+msgid ""
+"The small icon associated to this action.<br>It will appear at least in the "
+"popup menus when this action is inserted.<br>It should be 16x16 pixels."
+msgstr ""
+"O ícone pequeno associado a esta ação.<br>Irá aparecer pelo menos nos botões "
+"do menu popup quando esta ação for inserida. <br>Deve ser 16x16 pixels."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:200
+msgid "Big Icon:"
+msgstr "Ícones Grandes:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:209
+msgid ""
+"The big icon associated to this action.<br>It will appear at least in the "
+"toolbar buttons when this action is inserted.<br>It should be 32x32 pixels."
+msgstr ""
+"O ícone grande associado a esta ação.<br>Irá aparecer pelo menos nos botões "
+"da barra de ferramentas quando esta ação for inserida. <br>Deve ser 32x32 "
+"pixels."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:215
+msgid "Key Sequence:"
+msgstr "Sequência de Chave:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:219
+msgid ""
+"Optional keyboard sequence that will activate this action.<br>The sequence "
+"should be expressed as a string of up to four key codes separated by commas "
+"eventually combined with the modifiers \"Ctrl\",\"Shift\",\"Alt\" and \"Meta"
+"\".<br>Examples of such sequences are \"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl+X,"
+"Ctrl+C\" ..."
+msgstr ""
+"A sequência de teclado opcional que irá ativar esta ação.<br>Esta sequência "
+"deve ser expressa como uma string de até quatro códigos chaves separados por "
+"vírgulas eventualmente combinadas com os modificadores \"Ctrl\",\"Shift\","
+"\"Alt\" e \"Meta\".<br>Exemplos de tais sequências são \"Ctrl+X\", \"Ctrl+Alt"
+"+Z\", \"Ctrl+X, Ctrl+C\" ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:240
+msgid "Needs IRC Context"
+msgstr "Precisa de um Contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:242
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window belongs to an irc context"
+msgstr ""
+"Marque esta opção se esta ação deve ser habilitada apenas quando a janela "
+"ativa pertence a um contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:250
+msgid "Needs IRC Connection"
+msgstr "Precisa de uma Conexão de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:252
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window has an active IRC connection"
+msgstr ""
+"Marque esta opção se esta ação deve ser habilitada apenas quando a janela "
+"ativa tiver uma conexão IRC activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:260
+msgid "Enable at Login"
+msgstr "Habilitar no Login"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:261
+msgid ""
+"Check this option if this action should be enabled also during the login "
+"operations (so when the logical IRC connection hasn't been estabilished yet)"
+msgstr ""
+"Marque esta opção se esta ação deve ser habilitada também durante as "
+"operações de login (enquanto a conexão IRC ainda não estiver estabelecida)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:265
+msgid "Enable Only in Specified Windows"
+msgstr "Habilitar Apenas nas Janelas Especificadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:267
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is of a specified type"
+msgstr ""
+"Marque esta opção se esta ação deve ser habilitada apenas quando a "
+"janelaativa for um console"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:271
+msgid "Enable in Console Windows"
+msgstr "Habilitar nas Janelas de Console"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:272
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a console"
+msgstr ""
+"Marque esta opção se esta ação deve ser habilitada apenas quando a "
+"janelaativa for um console"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:277
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:299
+msgid "Only If There Are Selected Users"
+msgstr "Apenas Se Existir Usuários Selecionados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:278
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:300
+msgid ""
+"This will enable the action only if there are selected users in the active "
+"window"
+msgstr ""
+"Isto habilitará a ação apenas se existirem usuários selecionados na janela "
+"ativa "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:282
+msgid "Enable in Channel Windows"
+msgstr "Habilitar nas Janelas de Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:283
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a channel"
+msgstr ""
+"Marque esta opção se esta ação deve ser habilitada apenas quando a "
+"janelaativa for um canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:293
+msgid "Enable in Query Windows"
+msgstr "Habilitar nas Janelas de Privado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:294
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a query"
+msgstr ""
+"Marque esta opção se esta ação deve ser habilitada apenas quando a "
+"janelaativa for um privado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:304
+msgid "Enable in DCC Chat Windows"
+msgstr "Permitir nas Janelas de DCC Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:305
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a dcc chat"
+msgstr ""
+"Marque esta opção se esta ação deve ser habilitada apenas quando a "
+"janelaativa for um dcc chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:627
+msgid "Action"
+msgstr "Ação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:680
+msgid "New Action"
+msgstr "Nova Ações"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:683
+msgid "Delete Actions"
+msgstr "Deletar Ações"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:686
+msgid "Export Actions..."
+msgstr "Exportar Ações..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Unable to write to the actions file."
+msgstr "Não foi possível escrever no arquivo de ações."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:823
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:824
+msgid "My Action"
+msgstr "Minhas Ações"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:825
+msgid "Put here a short description of your action"
+msgstr "Digite aqui uma breve descrição da sua ação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:925
+msgid "Action Editor"
+msgstr "Editor de Ações"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:938
+msgid "Apply"
+msgstr "Aplicar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:63
+msgid "Outgoing traffic"
+msgstr "Tráfego de saída"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:67
+msgid "Incoming traffic"
+msgstr "Tráfego de entrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_crypt.cpp:160
+msgid "Invalid crypt engine"
+msgstr "Mecanismo criptográfico inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:296
+msgid "Directory"
+msgstr "Diretório"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:315
+msgid "Socket"
+msgstr "Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:332
+msgid "Fifo"
+msgstr "FIFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:349
+msgid "Block device"
+msgstr "Dispositivo de bloco"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:366
+msgid "Char device"
+msgstr "Dispositivo de caracteres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:429
+msgid "Octet stream (unknown)"
+msgstr "Fluxo de bytes (desconhecido)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_osinfo.cpp:413
+#, fuzzy
+msgid "Unknown "
+msgstr "Desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:181
+#, fuzzy
+msgid "The specified network has no server entries"
+msgstr "A janela especificada não tem recepiente de botões"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:239
+msgid ""
+"The server specification seems to be in the net:<string> but the network "
+"couln't be found in the database"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:261
+msgid ""
+"The server specification seems to be in the id:<string> form but the "
+"identifier coulnd't be found in the database"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:71
+msgid "Aborted"
+msgstr "Abortado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:96
+msgid "No request"
+msgstr "Nenhum pedido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:141
+msgid "No filename specified for the \"StoreToFile\" processing type"
+msgstr ""
+"Nenhum arquivo especificado para o tipo de processamento \"StoreToFile\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:160
+msgid "Invalid URL: Missing hostname"
+msgstr "URL invalida: Faltando nome da máquina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:167
+#, fuzzy
+msgid "Unsupported protocol %1"
+msgstr "Protocolo %s não suportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:189
+msgid "Unable to start the DNS lookup"
+msgstr "Impossível iniciar a pesquisa DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:194
+#, c-format
+msgid "Looking up host %s"
+msgstr "Localizando máquina %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:210
+#, fuzzy
+msgid "Host %s resolved to %Q"
+msgstr "Nomde de máquina %s resolvido para %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:246
+msgid "Unable to start the request slave thread"
+msgstr "Não foi possível iniciar processo de requisição"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:251
+#, fuzzy
+msgid "Contacting host %Q on port %u"
+msgstr "Contatando máquina %s na porta %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:271
+msgid "Connection established, sending request"
+msgstr "Conexão estabelecida, enviando pedido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:322
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:51
+msgid "Success"
+msgstr "Sucesso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:429
+msgid "Failed to rename the existing file, please rename manually and retry"
+msgstr ""
+"Falha ao renomear o arquivo existente, por favor renomeie manualmente e "
+"tente de novo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:447
+#, fuzzy
+msgid "Can't open file \"%Q\" for writing"
+msgstr "Não foi possível abrir o arquivo \"%s\" em modo de escrita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:497
+#, c-format
+msgid "Invalid HTTP response: %s"
+msgstr "Resposta HTTP Inválida: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:503
+#, c-format
+msgid "Received HTTP response: %s"
+msgstr "Resposta HTTP recebida: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:628
+msgid "Stream exceeding maximum length"
+msgstr "Stream excedeu o tamanho máximo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:661
+msgid "Header too long: exceeded 4096 bytes"
+msgstr "Cabeçalho muito longo: Excedeu 4096 bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:710
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:852
+msgid "Stream exceeded expected length"
+msgstr "Stream excedeu o comprimento esperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:798
+msgid "Protocol error: invalid chunk size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:818
+#, fuzzy
+msgid "Chunk header too long: exceeded 4096 bytes"
+msgstr "Cabeçalho muito longo: Excedeu 4096 bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:987
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1193
+msgid "Operation timed out"
+msgstr "Tempo esgotado para a operação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1003
+#, fuzzy
+msgid "Unexpected SSL error"
+msgstr "Símbolo inesperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1016
+msgid "Failed to enter non blocking mode"
+msgstr "Falha ao entrar no modo desbloqueado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1021
+msgid "Invalid target address"
+msgstr "Endereço de destino inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1056
+#, fuzzy
+msgid "Failed to initialize the SSL context"
+msgstr "Falhou ao alocar motor de criptografia especificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1058
+#, fuzzy
+msgid "Failed to initialize the SSL connection"
+msgstr "Falha ao iniciar a conexão: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1075
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:99
+msgid "Remote end has closed the connection"
+msgstr "O computador remoto fechou a conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1087
+#, fuzzy
+msgid "Unrecoverable SSL error during handshake"
+msgstr "Erro irrecuperável do servidor de nomes (Deixou de funcionar ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1272
+msgid "Operation timed out (while selecting for read)"
+msgstr "Tempo esgotado para a operação (enquanto selecionava para leitura)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1382
+#, fuzzy
+msgid "This KVIrc executable has no SSL support"
+msgstr "Este executável do KVIrc não tem suporte a IPV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1147
+msgid "Back"
+msgstr "Voltar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:268
+#, fuzzy
+msgid "Next"
+msgstr "Texto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:168
+#, fuzzy
+msgid "%1 bytes"
+msgstr " bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:172
+msgid "%1 KB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:176
+msgid "%1 MB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:181
+msgid "%1 GB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:185
+msgid "%1 TB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:620
+msgid "Internal error"
+msgstr "Erro interno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:54
+msgid "Unknown command"
+msgstr "Comando desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:55
+msgid "Missing closing brace"
+msgstr "chave de fechamento ( '`}' ) faltando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:56
+msgid "Unexpected end of command in string"
+msgstr "Fim de comando inesperado na string"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:57
+msgid "Unexpected end of command in dictionary key"
+msgstr "Fim de comando inesperado na chave do dicionário"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:58
+msgid "Switch dash without switch letter"
+msgstr "Troque o hífen sem trocar a letra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:59
+msgid "Unknown function"
+msgstr "Função desconhecida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:60
+msgid "Unexpected end of command in parenthesis"
+msgstr "Fim de comando inesperado no parênteses"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:61
+msgid "Unexpected end of command in function parameters"
+msgstr "Fim de comando inesperado nos parâmetros da função"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:62
+msgid "Missing variable name"
+msgstr "Faltando o nome da variável"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:63
+msgid "Variable or identifier expected"
+msgstr "Variável ou identificador esperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:64
+msgid "Left operand is not a number"
+msgstr "O operador esquerdo não é um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:65
+msgid "Multiple operations not supported for numeric operators"
+msgstr "Operações múltiplas não suportadas para operadores numéricos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:67
+msgid "Modulo by zero"
+msgstr "Módulo por zero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:68
+msgid "Right operand is not a number"
+msgstr "O operador direito não é um número"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:69
+msgid "Unterminated expression (missing ')' ?)"
+msgstr "Expressão não terminada (Faltando ')' ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:70
+msgid "Unterminated subexpression (Parenthesis mismatch)"
+msgstr "Subexpressão não terminada (Má combinação de parênteses)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:71
+msgid "Unexpected character"
+msgstr "Caracter Inesperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:73
+msgid "No host to resolve"
+msgstr "Sem host para resolver"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:74
+msgid "(DNS Internal) Unsupported address family"
+msgstr "(DNS Interno) Familia de endereços não suportada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:75
+msgid "Valid name but the host has no IP address"
+msgstr "Nome válido mas a maquina não tem um endereço IP "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:76
+msgid "Unrecoverable nameserver error (crashed ?)"
+msgstr "Erro irrecuperável do servidor de nomes (Deixou de funcionar ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:77
+msgid "Dns temporaneous fault (try again)"
+msgstr "DNS falhou temporariamente (tente outra vez)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:78
+msgid "(DNS Internal) Bad flags"
+msgstr "(DNS Interno) Opções inválidas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:79
+msgid "(DNS Internal) Out of memory"
+msgstr "(DNS Interno) Sem memória"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:80
+msgid "(DNS Internal) Service not supported"
+msgstr "(DNS Interno) Serviço não suportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:81
+msgid "Unknown node (host not found)"
+msgstr "Nó desconhecido (host não encontrado)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:82
+msgid "(DNS Internal) Unsupported socket type"
+msgstr "(DNS Interno) tipo de socket não suportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:83
+msgid "Dns query failed"
+msgstr "Consulta de DNS falhou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:84
+msgid "This KVIrc executable has no IPV6 support"
+msgstr "Este executável do KVIrc não tem suporte a IPV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:85
+msgid "Host not found"
+msgstr "Host não encontrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:86
+msgid "(DNS Internal) IPC failure (slave data corrupted)"
+msgstr "(Dns Interno) IPC Falhou (dados escravo corrompidos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:88
+msgid "Invalid IP address"
+msgstr "Endereço IP inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:90
+msgid "Failed to put the socket in non blocking mode"
+msgstr "Falha ao por o socket em modo não bloqueante"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:91
+msgid "Bad file descriptor"
+msgstr "Descritor de arquivo inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:92
+msgid "Out of address space"
+msgstr "Fim do espaço de endereço"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:93
+msgid "Connection refused"
+msgstr "Conexão recusada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:94
+msgid "Kernel networking panic"
+msgstr "Rede do núcleo em pânico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:95
+msgid "Connection timed out"
+msgstr "Tempo esgotado para conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:96
+msgid "Network is unreachable"
+msgstr "Rede inalcançavel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:97
+msgid "Broken pipe"
+msgstr "Pipe quebrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:98
+msgid "Invalid proxy address"
+msgstr "Endereço de proxy invalido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:100
+msgid "Invalid irc context id"
+msgstr "id de contexto do IRC inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:101
+msgid "Error in loading module"
+msgstr "Erro ao carregar módulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:102
+msgid "No such module command"
+msgstr "Não existe tal comando de módulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:103
+msgid "No such module function"
+msgstr "Não existe tal função de módulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:104
+msgid "Left operand is not a dictionary reference"
+msgstr "O operador esquerdo não é uma referência do dicionário"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:105
+msgid "Right operand is not a dictionary reference"
+msgstr "O operador direito não é uma referência do dicionário"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:106
+msgid "Missing object class name"
+msgstr "Falta o nome da classe do objeto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:107
+msgid "No such object class"
+msgstr "Não existe essa classe de objeto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:108
+msgid "No such object"
+msgstr "Não existe esse objeto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:109
+msgid "No such object function"
+msgstr "Não existe essa função de objeto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:110
+msgid "Invalid left operand"
+msgstr "Operador esquerdo invalido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:111
+msgid "Not enough parameters"
+msgstr "Parâmetros insuficientes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:112
+msgid "Integer parameter expected"
+msgstr "Se esperava parâmetro inteiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:113
+msgid "Invalid parameter"
+msgstr "Parâmetro inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:114
+msgid "No such file"
+msgstr "Arquivo não existe "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:115
+msgid "Open parenthesis expected"
+msgstr "Abertura de parênteses esperada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:116
+msgid "Open brace expected"
+msgstr "Abertura de chave('{') esperada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:117
+msgid "Can't kill a builtin class"
+msgstr "Não pode matar uma classe interna "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:118
+msgid "The SOCKSV4 protocol lacks IpV6 support"
+msgstr "O protocolo SOCKSV4 não tem suporte a IpV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:119
+msgid "Unrecognized proxy reply"
+msgstr "Resposta do proxy desconhecida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:120
+msgid "Proxy response: auth failed: access denied"
+msgstr "Resposta do proxy: auth Falhou : Acesso negado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:121
+msgid "Proxy response: No acceptable auth method: request rejected"
+msgstr "Resposta do proxy: auth não aceito: requisição rejeitada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:122
+msgid "Proxy response: request failed"
+msgstr "Resposta do Proxy: requisição falhou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:123
+msgid "Proxy response: ident failed"
+msgstr "Resposta do Proxy: ident falhou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:124
+msgid "Proxy response: ident not matching"
+msgstr "Resposta do Proxy: ident não combina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:125
+msgid "Proxy response: general SOCKS failure"
+msgstr "Resposta do Proxy: Falha geral do SOCKS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:126
+msgid "Proxy response: connection not allowed"
+msgstr "Resposta do Proxy: conexão não permitida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:127
+msgid "Proxy response: network unreachable"
+msgstr "Resposta do proxy: Rede inalcançavel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:128
+msgid "Proxy response: host unreachable"
+msgstr "Resposta do proxy: host inalcançavel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:129
+msgid "Proxy response: connection refused"
+msgstr "Resposta do Proxy: conexão recusada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:130
+msgid "Proxy response: TTL expired"
+msgstr "Resposta do Proxy: TTL expirada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:131
+msgid "Proxy response: command not supported"
+msgstr "Resposta do Proxy: comando não suportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:132
+msgid "Proxy response: address type not supported"
+msgstr "Resposta do Proxy: tipo de endereço não suportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:133
+msgid "Proxy response: invalid address"
+msgstr "Resposta do Proxy: endereço inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:134
+msgid "Invalid port number"
+msgstr "Número de porta inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:135
+msgid "Socket not connected"
+msgstr "Socket não conectado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:136
+msgid "Insufficient resources to complete the operation"
+msgstr "Recursos insuficientes para completar a operação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:137
+msgid "Can't setup a listening socket : bind failed"
+msgstr "Não pude configurar um socket de escuta : ligação falhou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:138
+msgid "Can't resolve the localhost name"
+msgstr "Não foi possível resolver o nome do host local"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:139
+msgid "Unsupported image format"
+msgstr "Formato de imagem não suportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:140
+msgid "Can't open file for appending"
+msgstr "Não foi possível abrir o arquivo para adicionar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:542
+msgid "Can't open file for writing"
+msgstr "Não foi possível abrir o arquivo para escrever"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:142
+msgid "File I/O error"
+msgstr "Arquivo I/O erro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:143
+msgid "Acknowledge error"
+msgstr "Erro na confirmação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:982
+msgid "Can't open file for reading"
+msgstr "Não foi possível abrir o arquivo para ler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:145
+msgid "Can't send a zero-size file"
+msgstr "Não foi possível enviar arquivo tamanho-zero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:146
+msgid "Missing popup name"
+msgstr "Nome do popup faltando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:147
+msgid "'item', 'popup', 'label' or 'separator' keyword expected"
+msgstr "'ítem', 'popup', 'label' ou 'separador' palavra esperada "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:148
+msgid "Self modification not allowed"
+msgstr "Automodificação não permitida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:149
+msgid "UNUSED"
+msgstr "NÃO UTILIZADO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:150
+msgid "Feature not available"
+msgstr "Característica não disponível"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:151
+msgid "Unexpected characters in array index"
+msgstr "Caráteres inesperados no índice do array"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:152
+msgid "Unexpected end in expression"
+msgstr "Fim inesperado na expressão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:153
+msgid "Unexpected end in array index"
+msgstr "Finalização inesperada no índice do array"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:154
+msgid "Connection thru HTTP proxy failed"
+msgstr "Conexão através do proxy HTTP falhou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:155
+msgid "Case , match , regexp , default or break keyword expected"
+msgstr "Se esperava uma palavra clave case, match, regexp, default ou break"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:156
+msgid "Access denied"
+msgstr "Acesso negado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:157
+msgid "Address already in use"
+msgstr "Endereço já esta em uso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:158
+msgid "Can't assign the requested address"
+msgstr "Não foi possível atribuir o endereço requisitado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:159
+msgid "Connection reset by peer"
+msgstr "Conexão reiniciada pelo outro lado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:160
+msgid "Host unreachable (no route to host)"
+msgstr "Host inalcançavel (sem rota para o host)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:161
+msgid "Variable expected"
+msgstr "Variável esperada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:162
+msgid "Invalid array index: positive integer expected"
+msgstr "Índice inválido do array: inteiro positivo esperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:163
+msgid "listen() call failed"
+msgstr "chamada listen() falhou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:164
+msgid "This executable has been compiled without SSL support"
+msgstr "Este executável está compilado sem suporte a SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:165
+msgid "Secure Socket Layer error"
+msgstr "Erro do Secure Socket Layer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:166
+msgid "Slash (/) character expected"
+msgstr "Slash (/) caráter esperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:167
+msgid "Unknown string manipulation operation"
+msgstr "Operação de manipulação de string desconhecida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:168
+msgid "Operation aborted"
+msgstr "Operação abortada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:169
+msgid "Unexpected token"
+msgstr "Símbolo inesperado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:170
+msgid "Scope object already defined (unexpected @)"
+msgstr "Já se definiu o escopo do objeto (@ inesperado)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:171
+msgid "There is no $this pointer in this scope (unexpected @)"
+msgstr "Não há um ponteiro $this neste escopo (@ inesperado)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:140
+#, fuzzy
+msgid "Operation cancelled"
+msgstr "Operação abortada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:170
+#, fuzzy
+msgid "File write error"
+msgstr "Arquivo I/O erro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:176
+#, fuzzy
+msgid "File read error"
+msgstr "Arquivo I/O erro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:324
+msgid "Packaging file %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:779
+#, fuzzy
+msgid "Failed to open a source file for reading"
+msgstr "Não foi possível abrir o arquivo para ler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:817
+#, fuzzy
+msgid "Compression library initialization error"
+msgstr "Executando iniciações adiantadas..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:394
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:828
+msgid "Compression library error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:465
+#, fuzzy
+msgid "Compression library internal error"
+msgstr "Opa.. erro interno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:485
+msgid "Error while compressing a file stream"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:526
+#, fuzzy
+msgid "Creating package..."
+msgstr "Criando estruturas internas..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:527
+msgid "Writing package header"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:571
+msgid "Writing informational fields"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:597
+msgid "Writing package data"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:659
+#, fuzzy
+msgid "The file specified is not a valid KVIrc package"
+msgstr "O formato de tempo especificado não é valido (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:668
+msgid ""
+"The package has an invalid version number, it might have been created by a "
+"newer KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:714
+msgid "Invalid info field: the package is probably corrupt"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:745
+msgid ""
+"The package contains compressed data but this executable does not support "
+"compression"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:771
+#, fuzzy
+msgid "Failed to create the target directory"
+msgstr "Impossível de criar o diretório de tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:784
+msgid "Unpacking file %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:916
+msgid "Error in compressed file stream"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:990
+#, fuzzy
+msgid "Reading package..."
+msgstr "Carregando aliases..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:991
+msgid "Reading package header"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:998
+#, fuzzy
+msgid "Reading package data"
+msgstr "Dados de chave errados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:1017
+msgid "Invalid data field: the package is probably corrupt"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1127
+msgid "Select color"
+msgstr "Selecionar cor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1128
+msgid "&Basic colors"
+msgstr "Cores &Básicas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1129
+msgid "&Custom colors"
+msgstr "&Cores personalizadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1130
+msgid "&Red"
+msgstr "Verme&lho"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1131
+msgid "&Green"
+msgstr "&Verde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1132
+msgid "Bl&ue"
+msgstr "Az&ul"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1133
+msgid "&Define Custom Colors >>"
+msgstr "&Definir Cores Personalizadas >>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1134
+msgid "&Add to Custom Colors"
+msgstr "&Adicionar às Cores Personalizadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1136
+msgid "Select Font"
+msgstr "Selecionar Fonte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1137
+msgid "&Font"
+msgstr "&Fonte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1138
+msgid "Font st&yle"
+msgstr "Est&ilo de Fonte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1139
+msgid "&Size"
+msgstr "&Tamanho"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1140
+msgid "Sample"
+msgstr "Exemplo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1141
+msgid "Effects"
+msgstr "Efeitos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1142
+msgid "Stri&keout"
+msgstr "Stri&keout"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1143
+msgid "&Underline"
+msgstr "&Sublinhado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1144
+msgid "Scr&ipt"
+msgstr "Scr&ipt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1146
+msgid "Parent Directory"
+msgstr "Diretório Acima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1148
+msgid "Forward"
+msgstr "Próximo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1149
+msgid "Reload"
+msgstr "Recarregar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1150
+msgid "New Directory"
+msgstr "Novo Diretório"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1151
+msgid "Bookmarks"
+msgstr "Favoritos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1152
+msgid "Add Bookmark"
+msgstr "Adicionar Favorito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1153
+msgid "&Edit Bookmarks"
+msgstr "&Editar Favoritos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1154
+msgid "New Bookmark Folder..."
+msgstr "Nova Pasta de Favoritos..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1156
+msgid "Sorting"
+msgstr "Ordenar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1157
+msgid "By Name"
+msgstr "Por Nome"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1158
+msgid "By Date"
+msgstr "Por Data"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1159
+msgid "By Size"
+msgstr "Por Tamanho"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1160
+msgid "Reverse"
+msgstr "Reverso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1161
+msgid "Directories First"
+msgstr "Diretórios Primeiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1162
+msgid "Case Insensitive"
+msgstr "Não Distinguir Maiúsculas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1163
+msgid "Short View"
+msgstr "Visão Abreviada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1164
+msgid "Detailed View"
+msgstr "Visão Detalhada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1165
+msgid "Show Hidden Files"
+msgstr "Exibir Arquivos Ocultos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1166
+msgid "Show Quick Access Navigation Panel"
+msgstr "Exibir Painel de Navegação Rápida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1167
+msgid "Show Preview"
+msgstr "Exibir Pré-visão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1168
+msgid "Separate Directories"
+msgstr "Separar Diretórios"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1169
+msgid "Often used directories"
+msgstr "Diretórios frequentemente usados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1170
+msgid "Desktop"
+msgstr "Área de Trabalho"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1171
+msgid "Home Directory"
+msgstr "Pasta Pessoal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1172
+msgid "Floppy"
+msgstr "Disquete"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1173
+msgid "Temporary Files"
+msgstr "Arquivos Temporários"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1174
+msgid "Network"
+msgstr "Rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1175
+msgid "New Directory..."
+msgstr "Novo Diretório..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1176
+msgid "Delete"
+msgstr "Deletar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1177
+msgid "Thumbnail Previews"
+msgstr "Pré-Visualizações"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1178
+msgid "Large Icons"
+msgstr "Icones Grandes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1179
+msgid "Small Icons"
+msgstr "Ícones Pequenos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1180
+msgid "Properties..."
+msgstr "Propriedades..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1181
+msgid "&Automatic Preview"
+msgstr "Pré-visão &Automática"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1182
+msgid "&Preview"
+msgstr "&Pre-visão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1183
+msgid "&Location:"
+msgstr "&Localização:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1184
+msgid "&Filter:"
+msgstr "&Filtro:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1185
+msgid "All Files"
+msgstr "Todos os arquivos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:104
+msgid "- d -- h -- m -- s"
+msgstr "- d -- h -- m -- s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:111
+#, c-format
+msgid "%u h %u m %u s"
+msgstr "%u h %u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:113
+#, c-format
+msgid "%u h %u%u m %u%u s"
+msgstr "%u h %u%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:118
+#, c-format
+msgid "%u m %u s"
+msgstr "%u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:120
+#, c-format
+msgid "%u m %u%u s"
+msgstr "%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:122
+#, c-format
+msgid "%u s"
+msgstr "%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:127
+#, c-format
+msgid "%u d %u h %u m %u s"
+msgstr "%u d %u h %u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:129
+#, c-format
+msgid "%u d %u%u h %u%u m %u%u s"
+msgstr "%u d %u%u h %u%u m %u%u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+#, fuzzy
+msgid "Usage"
+msgstr "Utilização"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+#, fuzzy
+msgid "message"
+msgstr "Tipo de Mensagem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:99
+msgid "-m: send a message instead of a notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:100
+#, fuzzy
+msgid "-w: send notice to all channel owners"
+msgstr "Nenhum tópico posto para o canal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:101
+#, fuzzy
+msgid "-a: send notice to all channel admins"
+msgstr "Nenhum tópico posto para o canal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:102
+#, fuzzy
+msgid "-o: send notice to all channel ops"
+msgstr "Nenhum tópico posto para o canal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:103
+msgid "-h: send notice to all channel halfops"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:104
+msgid "-v: send notice to all channel voices"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:105
+msgid "-q: quiet mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:138
+msgid "Sending wallop to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:314
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:410
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:493
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:535
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:593
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:653
+msgid "Usage:"
+msgstr "Utilização"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:223
+msgid "reason"
+msgstr "razão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:272
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:416
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:440
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:599
+msgid "This is not a channel window"
+msgstr "Isto não é uma janela de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:581
+msgid "Unsupported type: $0"
+msgstr "Tipo não suportado: $0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:604
+msgid "Channel Owner"
+msgstr "Proprietário do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:606
+msgid "Channel Administrator"
+msgstr "Administrador do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:608
+msgid "Channel Operator"
+msgstr "Operador do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:610
+msgid "Half Operator"
+msgstr "Semioperador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:612
+msgid "Voice"
+msgstr "Voice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:614
+msgid "User Operator"
+msgstr "Usuário Ooperador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:616
+msgid "Normal User"
+msgstr "Usuário Normal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:641
+msgid "You must use DNS in an IRC context"
+msgstr "Você deve usar DNS em um contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:647
+msgid "You must be connected to a server"
+msgstr "Você deve estar conectado em um servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:664
+msgid "No such user: $0"
+msgstr "Não existe o usuário: $0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:33
+msgid "The default script has been successfully installed."
+msgstr "O Script padrão foi instalado com sucesso."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:34
+msgid "To connect to a server, type /server <server name>"
+msgstr "Para conectar em um servidor, digite /sever <nome do servidor>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:36
+msgid "Happy ircing :)"
+msgstr "Bom bate-papo :)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:15
+msgid "Options"
+msgstr "Opções"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:40
+msgid "Window operations"
+msgstr "Operações de Janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMENAME@"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMEDESCRIPTION@"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:18
+msgid "Stop Highlighting (Local)"
+msgstr "Parar Destaque (Local)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:23
+msgid "Start Highlighting (Local)"
+msgstr "Iniciar Destaque (Local)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:28
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:61
+msgid "Always Highlight"
+msgstr "Sempre Destacar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:30
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:55
+msgid "Highlight as"
+msgstr "Destaque como"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:66
+msgid "Stop Highlighting"
+msgstr "Parar Destaque"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:82
+msgid "is being ignored"
+msgstr "esta sendo ignorado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:87
+msgid "is not being ignored"
+msgstr "não está sendo ignorado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:93
+#, fuzzy
+msgid "Enable Ignore"
+msgstr "&Ativar Manipulador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:98
+#, fuzzy
+msgid "Ignore as..."
+msgstr "Ignorar como"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:240
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:282
+msgid "Ignore as"
+msgstr "Ignorar como"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:290
+msgid "Unignore"
+msgstr "Designorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:308
+msgid "is registered as"
+msgstr "registrado como"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:311
+msgid "is in the notify list"
+msgstr "está na lista de notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:314
+msgid "has a default avatar"
+msgstr "tem um avatar padrão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:317
+msgid "is not registered"
+msgstr "não está registrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:323
+msgid "Register"
+msgstr "Registrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:328
+msgid "Quick Registration"
+msgstr "Registro Rápido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:330
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:355
+msgid "Register as"
+msgstr "Registrar como"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:361
+msgid "Edit Registration"
+msgstr "Editar Registro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:366
+msgid "Unregister"
+msgstr "Desregistrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:373
+msgid "Add to Notify"
+msgstr "Adicionar para Notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:378
+msgid "Remove from Notify"
+msgstr "Remover da Notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:385
+msgid "Choose"
+msgstr "Escolher"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:387
+msgid "Choose Avatar Image File"
+msgstr "Escolha o Arquivo de Imagem Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:396
+msgid "Set as Default"
+msgstr "Colocar como Padrão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:401
+msgid "Clear Default"
+msgstr "Apagar Padrão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:412
+#, fuzzy
+msgid "Copy To Clipboard"
+msgstr "Copiar para a Área de Transferência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:433
+msgid "Ban"
+msgstr "Banir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1037
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1084
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1224
+msgid "Multiple Users"
+msgstr "Múltiplos Usuários"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:577
+msgid "&Ban"
+msgstr "&Banir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1089
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1229
+msgid "idle time"
+msgstr "Tempo de inatividade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:758
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1236
+msgid "&Information"
+msgstr "&Informação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1115
+msgid "DNS for"
+msgstr "DNS de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:499
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1120
+msgid "Mask for"
+msgstr "Máscara de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:505
+msgid "&Control"
+msgstr "&Controle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:509
+msgid "O&wner"
+msgstr "&Proprietário para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:514
+msgid "&Deowner"
+msgstr "Remover proprietário de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:519
+msgid "&Administrator"
+msgstr "&Administrador para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:524
+msgid "&Deadministrator"
+msgstr "Remover Administrador de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:529
+msgid "&Op"
+msgstr "&Op para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:534
+msgid "&Deop"
+msgstr "Remover Op de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:539
+msgid "&Halfop"
+msgstr "&Semioperador para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:544
+msgid "&Dehalfop"
+msgstr "Remover semioperador de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:549
+msgid "&Voice"
+msgstr "&Voice para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:554
+msgid "D&evoice"
+msgstr "Remover Voice de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:561
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "&Kick"
+msgstr "&Chutar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+msgid "K&ick"
+msgstr "C&hutar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "With..."
+msgstr "Com..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Kick Reason"
+msgstr "Razão do chute"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Enter a kick reason"
+msgstr "Digite a razão do chute"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "Kick/Ban"
+msgstr "Chutar/Banir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Kick/Ban Reason"
+msgstr "Razão do chute/banimento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Enter a kick/ban reason"
+msgstr "Digite a razão do chute/banimento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "&Kick/Ban"
+msgstr "&Chutar/Banir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:604
+#, fuzzy
+msgid "Configure ban mask..."
+msgstr "Configurar Servidores..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:612
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1263
+msgid "&Query"
+msgstr "&Abrir privado com"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:625
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1136
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1276
+msgid "&Registration"
+msgstr "&Registro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1278
+msgid "&Highlight"
+msgstr "&Destaque"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:629
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1280
+msgid "Ig&nore"
+msgstr "Ig&norar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:726
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1050
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1138
+msgid "Notify Avatar"
+msgstr "Notificar Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:705
+msgid "&Part"
+msgstr "&Sair do"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:664
+#, fuzzy
+msgid "Copy Channel Address"
+msgstr "Modos de Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:749
+msgid "Channels"
+msgstr "Canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:693
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:753
+msgid "&Join Channels..."
+msgstr "&Entrar nos Canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:700
+msgid "&Hop"
+msgstr "&Saltar do"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:733
+#, fuzzy
+msgid "Copy Channel URL to Clipboard"
+msgstr "Copiar para a Área de Transferência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:782
+msgid "l (Connections)"
+msgstr "l (Conexões)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:787
+msgid "m (Command Usage)"
+msgstr "m (Utilização dos Comandos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:792
+msgid "o (Operators)"
+msgstr "o (Operadores)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:797
+msgid "t (Connection stats ?)"
+msgstr "t (Estatisticas da conexão?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:802
+msgid "u (Uptime)"
+msgstr "u (Tempo de Funcionamento)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:807
+msgid "y (y-Lines)"
+msgstr "y (Linhas-y)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:812
+msgid "z (Debug Stats?)"
+msgstr "z (Estatisticas de depuraração)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:909
+msgid "Chat with"
+msgstr "Chat com"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:914
+#, fuzzy
+msgid "Reverse Chat with"
+msgstr "Chat Seguro com"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:919
+msgid "Secure Chat with"
+msgstr "Chat Seguro com"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:926
+msgid "Send to"
+msgstr "Enviar arquivo para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:931
+#, fuzzy
+msgid "Secure send to"
+msgstr "Enviar arquivo em modo Reverso para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:936
+msgid "Reverse Send to"
+msgstr "Enviar arquivo em modo Reverso para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:941
+#, fuzzy
+msgid "Secure Reverse Send to"
+msgstr "Enviar arquivo em modo Reverso para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:948
+msgid "TDCC Send to"
+msgstr "Enviar TDCC para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:953
+msgid "TDCC Reverse Send to"
+msgstr "Enviar TDCC Reverso para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:960
+msgid "Voice Chat"
+msgstr "Chat com voz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1134
+msgid "&Ignore"
+msgstr "&Ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1165
+msgid "Logging to"
+msgstr "Registrando em"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1167
+msgid "Flush Log File"
+msgstr "Nivelar o Arquivo de Log"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1174
+msgid "Stop Logging"
+msgstr "Parar o Registro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1179
+msgid "Not Logging"
+msgstr "Não está Registrando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+msgid "Log To Default File"
+msgstr "Registrar Para Arquivo Padrão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+msgid "Include Existing Buffer"
+msgstr "Incluir Buffer Existente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+msgid "Log To..."
+msgstr "Registrar em..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1201
+msgid "Choose Log Filename"
+msgstr "Escolha Arquivo de Registro - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1282
+msgid "Notify avatar"
+msgstr "Notificar Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:50
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$copyfiles must be a "
+"source directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:56
+#, c-format
+msgid ""
+"[Installer] The second argument to \\%installer->\\$copyfiles must be a file "
+"name or file regexp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:62
+#, c-format
+msgid ""
+"[Installer] The third argument to \\%installer->\\$copyfiles must be a "
+"destination directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:94
+#, fuzzy
+msgid "[Installer] Failed to create directory"
+msgstr "Falhou ao remover o diretório %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:104
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$includefiles must be a "
+"source directory"
+msgstr ""
+
+#~ msgid "Lag is"
+#~ msgstr "Lag é"
+
+#~ msgid "milliseconds"
+#~ msgstr "milisegundos"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c: %Q"
+#~ msgstr "Informações de %c\r!n\r%Q\r%c : %Q"
+
+#, fuzzy
+#~ msgid "Basic Properties"
+#~ msgstr "Propriedades"
+
+#, fuzzy
+#~ msgid "Other:"
+#~ msgstr "Outro..."
+
+#, fuzzy
+#~ msgid "Choose a server to connect"
+#~ msgstr "Escolha o arquivo servers.ini"
+
+#~ msgid "Server:"
+#~ msgstr "Servidor:"
+
+#~ msgid "Port:"
+#~ msgstr "Porta:"
+
+#, fuzzy
+#~ msgid "URL:"
+#~ msgstr "URL"
+
+#, fuzzy
+#~ msgid "Use server config"
+#~ msgstr "Usar Codificação do Sistema"
+
+#, fuzzy
+#~ msgid "Config file:"
+#~ msgstr "Configurar"
+
+#~ msgid "Report a Bug"
+#~ msgstr "Reportar um Erro"
+
+#~ msgid "Smart"
+#~ msgstr "Esperto"
+
+#~ msgid "Window with ID '%s' not found"
+#~ msgstr "Janela com ID '%s' não encontrada"
+
+#, fuzzy
+#~ msgid "Module function call failed: can't load the module 'str'"
+#~ msgstr ""
+#~ "A chamada da função módulo falhou: não foi possível carregar o módulo '%Q'"
+
+#, fuzzy
+#~ msgid ""
+#~ "Module function call failed: the module 'str' doesn't export a function "
+#~ "named 'split'"
+#~ msgstr ""
+#~ "A chamada da função módulo falhou: o módulo '%Q' não exporta a função "
+#~ "chamada '%Q'"
+
+#, fuzzy
+#~ msgid "Hide ignore-messages (incomplete)"
+#~ msgstr "Mensagens de convite"
+
+#, fuzzy
+#~ msgid "Ignore everything"
+#~ msgstr "Pedidos Ignorados"
+
+#~ msgid "Notify"
+#~ msgstr "Notificar"
+
+#, fuzzy
+#~ msgid "Image parameter is not an object"
+#~ msgstr "O parâmetro especificado não é um inteiro"
+
+#, fuzzy
+#~ msgid "Image object required"
+#~ msgstr "Objeto pixmap requerido"
+
+#, fuzzy
+#~ msgid "Image objects required"
+#~ msgstr "Objeto pixmap requerido"
+
+#~ msgid "Select error: %s (errno=%d)"
+#~ msgstr "Erro em Select: %s (errno=%d)"
+
+#~ msgid "Connect error: %s (errno=%d)"
+#~ msgstr "Erro de conexão: %s (errno=%d)"
+
+#~ msgid "Write error: %s (errno=%d)"
+#~ msgstr "Erro de escrita: %s (errno=%d)"
+
+#~ msgid "Read error: %s (errno=%d)"
+#~ msgstr "Erro de leitura: %s (errno=%d)"
+
+#~ msgid "WARNING : Can not load image library %s"
+#~ msgstr "AVISO: Não foi possível carregar a biblioteca de imagem %s"
+
+#, fuzzy
+#~ msgid "Load Theme - KVIrc"
+#~ msgstr "Salvar Tema - KVIrc"
+
+#~ msgid "Unable to create theme directory."
+#~ msgstr "Impossível de criar o diretório de tema"
+
+#, fuzzy
+#~ msgid "Version"
+#~ msgstr "Versão:"
+
+#, fuzzy
+#~ msgid "Themes"
+#~ msgstr "Tema"
+
+#~ msgid "[IDENT]: Service shutdown (spontaneous)"
+#~ msgstr "[IDENT]: Serviço desligado (espontâneo)"
+
+#~ msgid "[IDENT]: Service shutdown (on request)"
+#~ msgstr "[IDENT]: Serviço desligado (a pedido)"
+
+#~ msgid "<b>%Q</b>: +%Q (%u users)<hr>%Q"
+#~ msgstr "<b>%Q</b>: +%Q (%u usuários)<hr>%Q"
+
+#~ msgid "What's this?"
+#~ msgstr "O que é isto?"
+
+#~ msgid "<b>Nickname:</b>"
+#~ msgstr "<b>Apelido:</b>"
+
+#~ msgid ""
+#~ "<p>Here you can choose the default appearance of KVIrc.<br><br>The Fancy "
+#~ "Theme uses icons, a transparent background and a lot of colors. The "
+#~ "Minimalist Theme is designed for low-color displays or for \"console\" "
+#~ "extremists; it's more or less white text on a black background.<br><br>If "
+#~ "you had a previous version of KVIrc installed, you can choose to not "
+#~ "apply any theme in order to preserve your current visual settings."
+#~ "<br><br>If you don't know what to choose, just use the default.</p>"
+#~ msgstr ""
+#~ "<p>Aqui você pode escolher a aparência padrão do KVIrc.<br><br>O Tema "
+#~ "Fantasia usa ícones, um fundo transparente e um monte de cores. O Tema "
+#~ "Minimalista está projetado para monitores com poucas cores ou para "
+#~ "extremistas do \"console\"; mais ou menos é texto branco sobre fundo "
+#~ "preto.<br><br>Se tiver instalado uma versão anterior do KVIrc, você pode "
+#~ "escolher não aplicar nenhum tema para preservar suas configurações "
+#~ "visuais atuais.<br><br>Se não souber o que quer, escolha a configuração "
+#~ "padrão.</p>"
+
+#~ msgid "&Fancy Theme"
+#~ msgstr "&Tema Fantasia"
+
+#~ msgid "&Minimalist Theme"
+#~ msgstr "Tema &Minimalista"
+
+#~ msgid "&Don't apply any theme"
+#~ msgstr "&Não aplicar tema algum"
+
+#~ msgid "Default Theme"
+#~ msgstr "Tema Padrão"
+
+#~ msgid ""
+#~ "<p>Setup can make a shortcut to the KVIrc program on your desktop, so you "
+#~ "can access it quickly.</p><p>Do you want this shortcut to be created?</p>"
+#~ msgstr ""
+#~ "<p>A configuração pode criar um atalho, em sua Área de Trabalho, direto "
+#~ "para o executável do KVIrc. </p><p>Deseja criá-lo?</p>"
+
+#~ msgid "<p>If you're unsure just say \"Yes\"</p>"
+#~ msgstr "<p>Se você não estiver seguro, simplesmente diga \"Sim\"</p>"
+
+#~ msgid ""
+#~ "<p>Setup can now set KVIrc as default application for the irc:// and "
+#~ "irc6:// urls.</p><p>Do you want these settings to be applied?</p>"
+#~ msgstr ""
+#~ "<p>Você pode configurar KVIrc como aplicação padrão para as urls irc:// "
+#~ "e irc6://.</p><p>Deseja aplicar essas mudanças?</p>"
+
+#~ msgid "URL Handlers"
+#~ msgstr "Manipuladores de URL"
+
+#~ msgid ""
+#~ "<p><h2>Setup Complete</h2>Setup now has all the necessary information to "
+#~ "configure KVIrc.</p><p>Please click the \"<b>Finish</b>\" button to save "
+#~ "your choices and start KVIrc.</p>"
+#~ msgstr ""
+#~ "<p><h2>Configuração Concluida</h2>O assistente terá agora toda a "
+#~ "informação necessária para configurar o KVIrc.</p><p>Por favor, clique no "
+#~ "botão \"<b>Finalizar</b>\" para salvar suas preferências e iniciar o "
+#~ "KVIrc.</p>"
+
+#~ msgid "Finish Setup"
+#~ msgstr "Finalizar Configuração"
+
+#~ msgid "Empty string"
+#~ msgstr "String vazia"
+
+#~ msgid "No such open mode: %s"
+#~ msgstr "Sem modo aberto: %s"
+
+#~ msgid "Negative file index supplied !"
+#~ msgstr "Índice de arquivo negativo fornecido!"
+
+#~ msgid "Argument length is 0 - empty string"
+#~ msgstr "O comprimento do argumento é 0 - string vazia"
+
+#~ msgid "Length is a negative number !"
+#~ msgstr "Comprimento é um número negativo!"
+
+#~ msgid "Nothing to write"
+#~ msgstr "Nada para escrever"
+
+#, fuzzy
+#~ msgid "Background not found %Q "
+#~ msgstr "Cor de fundo"
+
+#, fuzzy
+#~ msgid "Pixmap objects required !"
+#~ msgstr "Objeto pixmap requerido"
+
+#~ msgid ""
+#~ "Broken slot '%s' in target object '%s' while emitting signal '%s' from "
+#~ "object '%s': disconnecting"
+#~ msgstr ""
+#~ "Slot quebrado ' %s' no objeto de destino ' %s' ao emitir o sinal ' %s' "
+#~ "do objeto ' %s': desconectando"
+
+#~ msgid ""
+#~ "No slot function '%s' exported by target object '%s' while emitting "
+#~ "signal '%s' from object '%s': disconnecting"
+#~ msgstr ""
+#~ "Nenhuma função do slot ' %s' exportada pelo objeto de destino ' %s' ao "
+#~ "emitir sinal '%s' do objeto ' %s': desconectando"
+
+#~ msgid "Invalid timer id"
+#~ msgstr "id inválida do timer"
+
+#~ msgid "%cListing Qt Properties for widget object %s (%s)"
+#~ msgstr "%cListando Propriedades Qt para obejeto widget %s (%s)"
+
+#~ msgid "Properties class: %c%s%c"
+#~ msgstr "Classe das propriedades : %c%s%c"
+
+#~ msgid "Property: %c%s%c, type: %s"
+#~ msgstr "Propriedade: %c%s%c, tipo: %s"
+
+#~ msgid ", enum ("
+#~ msgstr ", enum ("
+
+#~ msgid ", set"
+#~ msgstr ", definir"
+
+#~ msgid ", writeable"
+#~ msgstr ", modificável"
+
+#~ msgid "Oops... no such property: %s"
+#~ msgstr "Oopa... nenhuma propriedade encontrada: %s"
+
+#~ msgid "No such QT property (%s)"
+#~ msgstr "Nenhuma propriedade Qt (%s)"
+
+#~ msgid "missing parameter"
+#~ msgstr "parâmetro faltando"
+
+#~ msgid "Invalid parameter (%s)"
+#~ msgstr "Parâmetro inválido (%s)"
+
+#~ msgid "Pixmap Object required"
+#~ msgstr "Objeto Pixmap requerido"
+
+#~ msgid "Pixmap not found"
+#~ msgstr "Pixmap não encontrado"
+
+#~ msgid "Unsupported QT property (%s)"
+#~ msgstr "Protocolo %s não suportado"
+
+#~ msgid "Missing parameters"
+#~ msgstr "Parâmetros faltando"
+
+#~ msgid "[Parser warning in '%Q']: %Q"
+#~ msgstr "[Aviso do Analisador em '%Q']: %Q"
+
+#~ msgid "Can't find the multimedia file %s"
+#~ msgstr "Não foi possível encontrar o arquivo multimidia %s"
+
+#~ msgid "Missing target, no action taken"
+#~ msgstr "Destino faltando, nenhuma ação tomada"
+
+#~ msgid "Invalid timeout specified , using default"
+#~ msgstr "Intervalo especificado iválido, usando padrão"
+
+#~ msgid "Can't add a file offer for file %s (huh ? file not readable ?)"
+#~ msgstr ""
+#~ "Não foi possível adicionar o compartilhamento do arquivo %s (huh? arquivo "
+#~ "não legível?)"
+
+#~ msgid "Added %d secs file offer for file %s (%s) and receiver %s"
+#~ msgstr "Adicionado %d seg ao envío do arquivo %s (%s) e receptor %s"
+
+#~ msgid "%s plays '%s'"
+#~ msgstr "%s reproduz '%s'"
+
+#~ msgid "%s plays '%s' to %s"
+#~ msgstr "%s reproduz '%s' para %s"
+
+#~ msgid "Error in command: %c%c%Q"
+#~ msgstr "Erro no comando: %c%c%Q"
+
+#, fuzzy
+#~ msgid "Error token: %c%Q"
+#~ msgstr "Símbolo do erro: %c%s"
+
+#~ msgid "Parsing stopped at %cline %d , character %d"
+#~ msgstr "A análise parou em %cline %d, caracter %d"
+
+#~ msgid " %s"
+#~ msgstr " %s"
+
+#~ msgid "Object scope: name (%s), class (%s)"
+#~ msgstr "Objeto espaço: nome (%s), classe (%s)"
+
+#~ msgid "Object scope: deleted object"
+#~ msgstr "Objeto espaço: objeto deletado"
+
+#~ msgid "This pointer: name (%s), class (%s)"
+#~ msgstr "Este ponteiro: nome (%s), classe (%s)"
+
+#~ msgid "This pointer: deleted object"
+#~ msgstr "Este ponteiro: objeto deletado"
+
+#~ msgid "Internal call stack:"
+#~ msgstr "Pilha de chamadas internas:"
+
+#~ msgid ""
+#~ " Current command stack depth: %d frames (stopping output at 25th frame)"
+#~ msgstr ""
+#~ " Profundidade da pilha do comando atual: %d frames (parando saída no "
+#~ "frame 25)"
+
+#~ msgid " Parent command stack depth: %d frames"
+#~ msgstr " Profundidade da piha de comandos pai: %d frames"
+
+#~ msgid "Error triggered from raw event handler %c%s::%Q"
+#~ msgstr "Erro provocado pelo manipulador do evento raw %c%s::%Q"
+
+#~ msgid "Error triggered from event handler %c%Q::%Q"
+#~ msgstr "Erro provocado pelo manipulador do evento %c%Q::%Q"
+
+#~ msgid "Raw event handler %s::%Q is broken: disabling"
+#~ msgstr "Manipulador do evento raw %s::%Q está quebrado: desativando"
+
+#~ msgid "Event handler %Q::%Q is broken: disabling"
+#~ msgstr "Manipulador do evento %Q::%Q está quebrado: desativando"
+
+#~ msgid "Variable evaluated to \"%s\""
+#~ msgstr "Variável avaliada para \"%s\""
+
+#~ msgid "Window with caption %Q not found"
+#~ msgstr "Janela com título %Q não encontrada"
+
+#~ msgid "='"
+#~ msgstr "='"
+
+#~ msgid "Ignoring NOTICE from %Q (%Q)"
+#~ msgstr "Ignorando NOTICE de %Q (%Q)"
+
+#~ msgid "Unknown channel mode"
+#~ msgstr "Modo de canal desconhecido"
+
+#~ msgid " symbol exported: not a kvirc module ?"
+#~ msgstr " símbolo exportado: não é um módulo do kvirc?"
+
+#~ msgid ""
+#~ "Declaring global variables with an uppercase letter is deprecated. Global "
+#~ "variables should be declared with 'global'"
+#~ msgstr ""
+#~ "Declarar variáveis globais com uma letra máiuscula é depreciado. "
+#~ "Variáveis globais devem ser declaradas com 'global'"
+
+#, fuzzy
+#~ msgid "My Custom Servers"
+#~ msgstr "Copiar Servidor"
+
+#~ msgid "orphan_servers"
+#~ msgstr "servidores_órfãos"
+
+#~ msgid "Topic for \r!c\r%Q\r was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+#~ msgstr "Tópico para \r!c\r%Q\r foi posto por \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+
+#~ msgid "\" ...that looks like an error to me..."
+#~ msgstr "\" ...isso me parece um erro..."
+
+#~ msgid "Search keywords"
+#~ msgstr "Procurar palavras-chave"
+
+#~ msgid "File download terminated"
+#~ msgstr "Download do arquivo terminou"
+
+#~ msgid "File download from %1 terminated"
+#~ msgstr "Download do arquivo de %1 terminou"
+
+#~ msgid "Choose..."
+#~ msgstr "Escolher..."
+
+#~ msgid "Invalid width parameter"
+#~ msgstr "Comprimento de parâmetro inválido"
+
+#~ msgid "Invalid height parameter"
+#~ msgstr "Altura de parâmetro inválida"
+
+#~ msgid "The parameters do not define a rectangle"
+#~ msgstr "Os parâmetros não definem um rectângulo"
+
+#~ msgid "The parameters do not define a point"
+#~ msgstr "Os parâmetros não definem um ponto"
+
+#~ msgid "The parameters are do not define a valid size"
+#~ msgstr "Os parâmetros não definem um tamanho válido"
+
+#~ msgid "Invalid size parameter (%s)"
+#~ msgstr "Tamanho de parâmetro inválido (%s)"
+
+#~ msgid "Unknown widget type: %s"
+#~ msgstr "Tipo de widget desconhecido: %s"
+
+#, fuzzy
+#~ msgid "Can't find the widget object assuming 0"
+#~ msgstr "Não foi possível encontrar o objeto widget (%s)"
+
+#~ msgid "Invalid object"
+#~ msgstr "Objeto inválido"
+
+#~ msgid "Invalid Parameters"
+#~ msgstr "Parâmetros inválidos"
+
+#~ msgid "Can't find the widget object to add (%s)"
+#~ msgstr "Não foi possível encontrar o objeto widget para adicionar %s"
+
+#~ msgid "Invalid row parameter (%s)"
+#~ msgstr "Linha de parâmetro inválida (%s)"
+
+#~ msgid "Invalid column parameter (%s)"
+#~ msgstr "Coluna de parâmetro inválida (%s)"
+
+#, fuzzy
+#~ msgid "Unknown frame style"
+#~ msgstr "Frame desconhecido / estilo sombra: %s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Failed writing the kvirc home directory path to %Q.\n"
+#~ "You will need to do it manually , otherwise KVirc will restart with\n"
+#~ "the setup!"
+#~ msgstr ""
+#~ "Falha ao escrever no diretório do kvirc %s.\n"
+#~ " Você precisará fazê-lo manualmente, se não o KVirc reiniciará o com\n"
+#~ "o processo de configuração!"
+
+#~ msgid "Ident Service"
+#~ msgstr "Serviço de ident"
+
+#~ msgid "Anti-spam"
+#~ msgstr "Anti-spam"
+
+#, fuzzy
+#~ msgid "Reconnection Options"
+#~ msgstr "conexão"
+
+#~ msgid "CTCP"
+#~ msgstr "CTCP"
+
+#~ msgid "Flood Protection"
+#~ msgstr "Proteção de Flood"
+
+#~ msgid "DCC"
+#~ msgstr "DCC"
+
+#~ msgid "File Transfer"
+#~ msgstr "Transferência de Arquivo"
+
+#~ msgid "Advanced"
+#~ msgstr "Avançado"
+
+#~ msgid "Chat"
+#~ msgstr "Chat"
+
+#, fuzzy
+#~ msgid "General options"
+#~ msgstr "Ações genéricas"
+
+#~ msgid "Alert/Highlight"
+#~ msgstr "Alerta/Destaque"
+
+#~ msgid "Input"
+#~ msgstr "Entrada"
+
+#~ msgid "Interface"
+#~ msgstr "Interface"
+
+#~ msgid "General"
+#~ msgstr "Geral"
+
+#~ msgid "Transparency"
+#~ msgstr "Transparência"
+
+#~ msgid "MDI Captions"
+#~ msgstr "Subtítulos de MDI"
+
+#~ msgid "MDI Area"
+#~ msgstr "Área MDI"
+
+#~ msgid "ToolBar Applets"
+#~ msgstr "Applet da Barra de Ferramentas"
+
+#~ msgid "Output"
+#~ msgstr "Saída"
+
+#~ msgid "Lag"
+#~ msgstr "Lag"
+
+#~ msgid "Logging"
+#~ msgstr "Registro"
+
+#~ msgid "Media Types"
+#~ msgstr "Tipos de Midias"
+
+#~ msgid "NickServ"
+#~ msgstr "NickServ"
+
+#, fuzzy
+#~ msgid "Contacts"
+#~ msgstr "Conectar"
+
+#~ msgid "Notifier"
+#~ msgstr "Notificador"
+
+#, fuzzy
+#~ msgid "Output Style"
+#~ msgstr "Saída"
+
+#~ msgid "Proxy Hosts"
+#~ msgstr "Servidores Proxy"
+
+#~ msgid "Query"
+#~ msgstr "Privado"
+
+#~ msgid "Servers"
+#~ msgstr "Servidores"
+
+#~ msgid "Sound"
+#~ msgstr "Som"
+
+#~ msgid "Tree taskbar"
+#~ msgstr "Barra de tarefas em árvore"
+
+#~ msgid "Classic taskbar"
+#~ msgstr "Barra de tarefas clássica"
+
+#~ msgid "Text icons"
+#~ msgstr "Ícones de texto"
+
+#~ msgid "Labels"
+#~ msgstr "Rótulos"
+
+#, fuzzy
+#~ msgid "Scripting Engine"
+#~ msgstr "Scripting"
+
+#~ msgid "URL handlers"
+#~ msgstr "Manipuladores de URL"
+
+#~ msgid "Userlist"
+#~ msgstr "Lista de Usuários"
+
+#, fuzzy
+#~ msgid "Protection"
+#~ msgstr "Proteção de Flood"
+
+#, fuzzy
+#~ msgid "Avatar Handling"
+#~ msgstr "Mudança de avatar"
+
+#~ msgid "Invalid timeout (%s)"
+#~ msgstr "Intervalo de tempo inválido (%s)"
+
+#~ msgid "Invalid port specified: the kernel will choose one"
+#~ msgstr "Porta especificada inválida: o kernel irá escolher uma"
+
+#~ msgid "Invalid port (%s)"
+#~ msgstr "Porta (%s) inválida"
+
+#~ msgid "Non-negative integer length expected as parameter"
+#~ msgstr ""
+#~ "Esperava-se para o parâmetro o comprimentodeeum inteiro não negativo"
+
+#~ msgid "Non-negative integer index expected as first parameter"
+#~ msgstr ""
+#~ "Esperava-se para primeiro parâmetro o índice de um inteiro não negativo"
+
+#~ msgid "Non-negative integer length expected as second parameter"
+#~ msgstr ""
+#~ "Esperava-se para segundo parâmetro o comprimento de um inteiro não "
+#~ "negativo"
+
+#, fuzzy
+#~ msgid "Can't find the specified file '%s'."
+#~ msgstr "Eu não posso encontrar o arquivo especificado."
+
+#, fuzzy
+#~ msgid "Class is undefined"
+#~ msgstr "Classe %s é indefinida"
+
+#~ msgid ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">General Preferences</font></h1></center></td></"
+#~ "tr><tr><td><br><br><center><b>These sections contain various settings for "
+#~ "KVIrc</b></center><br><br><p>When you have finished, click \"<b>OK</b>\" "
+#~ "to accept your changes or \"<b>Cancel</b>\" to discard them. Clicking "
+#~ "\"<b>Apply</b>\" will commit your changes without closing the window.</"
+#~ "td></tr><tr><td>Many settings have tooltips that can be shown by holding "
+#~ "the cursor over their label for a few seconds.</p></td></tr></table>"
+#~ msgstr ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font "
+#~ "color= \"#FFFFFF\">Preferências Gerais</font></h1></center></td></"
+#~ "tr><tr><td><br><br><center><b>Estas seções contém várias configurações "
+#~ "para o KVIrc</b></center><br><br><p>Quando tiver acabado clique em "
+#~ "\"<b>Aceitar</b>\" para aceitar as alterações ou \"<b>Cancelar</b>\" para "
+#~ "rejeitar. Ao clicar em \"<b>Aplicar</b>\" irá efetuar as alterações, sem "
+#~ "que a janela seja fechada.</td></tr><tr><td>Muitas configurações têm "
+#~ "dicas que são exibidas ao passar o cursor do mouse por cima delas por "
+#~ "alguns segundos.</p></td></tr></table>"
+
+#~ msgid ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">General Preferences</font></h1></center></td></"
+#~ "tr><tr><td><br><br>Select a category in the list view on the left to view "
+#~ "the related settings. When you have finished, click \"<b>OK</b>\" to "
+#~ "accept your changes or \"<b>Cancel</b>\" to discard them. Clicking "
+#~ "\"<b>Apply</b>\" will commit your changes without closing this window."
+#~ "<br><br></td></tr></table>"
+#~ msgstr ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">Preferências Gerais</font></h1></center></td></"
+#~ "tr><tr><td><br><br>Selecione uma categoria da parte esquerda da lista "
+#~ "para ver as configurações associadas. Quando tiver acabado, clique em "
+#~ "\"<b>Aceitar</b>\" para aceitar as alterações ou \"<b>Cancelar</b>\" para "
+#~ "rejeitar. Ao clicar em \"<b>Aplicar</b>\" irá efetuar as alterações sem "
+#~ "que a janela seja fechada.<br><br></td></tr></table>"
+
+#~ msgid "Preferences - KVIrc"
+#~ msgstr "Preferências - KVirc"
+
+#~ msgid "General Preferences"
+#~ msgstr "Preferências Gerais"
+
+#~ msgid "Close this dialog, accepting all changes."
+#~ msgstr "Fecha esta caixa de diálogo, aceitando todas as alterações."
+
+#~ msgid "Commit all changes immediately."
+#~ msgstr "Aplicar as alterações imediatamente."
+
+#~ msgid "Close this dialog, discarding all changes."
+#~ msgstr "Fecha esta caixa de diálogo, rejeitando todas as alterações."
+
+#, fuzzy
+#~ msgid "Normal user"
+#~ msgstr "Usuário Normal"
+
+#, fuzzy
+#~ msgid "Experienced user"
+#~ msgstr "usuário com voice"
+
+#~ msgid "Output verbosity"
+#~ msgstr "Saída detalhada"
+
+#~ msgid "Mute"
+#~ msgstr "Mudo"
+
+#~ msgid "Quiet"
+#~ msgstr "Quieto"
+
+#~ msgid "Normal"
+#~ msgstr "Normal"
+
+#~ msgid "Verbose"
+#~ msgstr "Verbose"
+
+#~ msgid "Paranoic"
+#~ msgstr "Paranoico"
+
+#~ msgid "Show in active window"
+#~ msgstr "Exibir na janela ativa"
+
+#~ msgid "External messages"
+#~ msgstr "Mensagens externas"
+
+#~ msgid "External CTCP replies"
+#~ msgstr "Resposta CTCP externas"
+
+#~ msgid "Whois replies"
+#~ msgstr "Respostas whois"
+
+#~ msgid "ChanServ and NickServ notices"
+#~ msgstr "Noticias do Chanserv e Nickserv"
+
+#~ msgid "Server replies"
+#~ msgstr "Respostas do servidor"
+
+#~ msgid "Server notices"
+#~ msgstr "Noticias do servidor"
+
+#~ msgid "Broadcast and WALLOPS messages"
+#~ msgstr "Mensagens de difusão da rede e WALLOPS"
+
+#~ msgid "Show extended server information"
+#~ msgstr "Exibir informações extendidas do servidor"
+
+#~ msgid "Show server pings"
+#~ msgstr "Exibir pings do Servidor"
+
+#~ msgid "Show own parts in the console"
+#~ msgstr "Exibir saídas próprias no console"
+
+#~ msgid "Show compact mode changes"
+#~ msgstr "Exibir mudanças de modo compactas"
+
+#~ msgid "On Channel Join"
+#~ msgstr "Ao Entrar em um Canal"
+
+#~ msgid "Echo channel topic"
+#~ msgstr "Exibir tópico do canal"
+
+#~ msgid "Show channel sync time"
+#~ msgstr "Exibir o tempo de sincronização do canal"
+
+#~ msgid "Font"
+#~ msgstr "Fonte"
+
+#~ msgid "Foreground color"
+#~ msgstr "Cor de primeiro plano"
+
+#~ msgid "Background color"
+#~ msgstr "Cor de fundo"
+
+#~ msgid "Background image"
+#~ msgstr "Imagem de fundo"
+
+#~ msgid "Save Current Theme"
+#~ msgstr "Salvar Tema Atual"
+
+#~ msgid "Theme name:"
+#~ msgstr "Nome do Tema:"
+
+#~ msgid "Author:"
+#~ msgstr "Autor:"
+
+#~ msgid "You must choose a theme name!"
+#~ msgstr "Você deve escolher um nome do tema!"
+
+#, fuzzy
+#~ msgid "Unable to create theme files directory."
+#~ msgstr "Impossível de criar o diretório de tema"
+
+#, fuzzy
+#~ msgid "Unable to create theme utils directory."
+#~ msgstr "Impossível de criar o diretório de tema"
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for reading."
+#~ msgstr "Não foi possível abrir o arquivo %s para leitura."
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for writing."
+#~ msgstr "Não foi possível abrir o arquivo \"%s\" em modo de escrita."
+
+#~ msgid ""
+#~ "The list below shows the currently installed themes. To apply a theme "
+#~ "select it and click \"Ok\" or \"Apply\". Please note that the message "
+#~ "text colors are applied only to new messages in each window.<br>To "
+#~ "install a new theme, unpack it to:<br><b>"
+#~ msgstr ""
+#~ "A lista inferior exibe os temas instalados atualmente. Para aplicar um "
+#~ "tema, selecione-o e clique em \"Aceitar\" ou \"Aplicar\". Por favor, "
+#~ "observe que as cores do texto das mensagens serão aplicadas somente às "
+#~ "novas mensagens em cada janela.<br>Para instalar um novo tema, "
+#~ "descompacte-o em:<br><b>"
+
+#~ msgid "Refresh Theme List"
+#~ msgstr "Atualizar Lista de Temas"
+
+#~ msgid "Save Current Theme..."
+#~ msgstr "Salvar Tema Atual..."
+
+#~ msgid "Get More Themes..."
+#~ msgstr "Baixar Mais Temas..."
+
+#~ msgid "Current Theme"
+#~ msgstr "Tema Atual"
+
+#~ msgid "<p>The active theme settings</p>"
+#~ msgstr "<p>Configurações do tema ativo</p>"
+
+#~ msgid "<p>Theme: %1</p>"
+#~ msgstr "<p>Tema: %1</p>"
+
+#~ msgid "<p>Version: %1</p>"
+#~ msgstr "<p>Versão: %1</p>"
+
+#~ msgid "<p>Date: %1</p>"
+#~ msgstr "<p>Data: %1</p>"
+
+#~ msgid "<p>Author: %1</p>"
+#~ msgstr "<p>Autor: %1</p>"
+
+#~ msgid "On Unexpected Disconnect"
+#~ msgstr "Ao Desconectar Inesperadamente "
+
+#~ msgid "Keep channels open"
+#~ msgstr "Manter canais abertos"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to keep channels open after an "
+#~ "unexpected disconnect.</center>"
+#~ msgstr ""
+#~ "<center>Esta opção faz com que o KVIrc mantenha os canais abertos após "
+#~ "uma desconexão inesperada.</center>"
+
+#~ msgid "Keep queries open"
+#~ msgstr "Manter conversas abertas"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to keep queries open after an "
+#~ "unexpected disconnect.</center>"
+#~ msgstr ""
+#~ "<center>Esta opção faz com que o KVIrc mantenha os queries abertos após "
+#~ "uma desconexão inesperada.</center>"
+
+#~ msgid "Rejoin channels after reconnect"
+#~ msgstr "Voltar aos canais após reconectar"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to rejoin channels after a "
+#~ "successful reconnect attempt.</center>"
+#~ msgstr ""
+#~ "<center>Esta opção faz com que o KVIrc volte aos canais após uma "
+#~ "tentativa de reconexão bem sucedida.</center>"
+
+#~ msgid "Reopen queries after reconnect"
+#~ msgstr "Reabrir queries após reconectar"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to reopen query windows after a "
+#~ "successful reconnect attempt.</center>"
+#~ msgstr ""
+#~ "<center>Esta opção faz o KVIrc abrir novamente os queries após uma "
+#~ "tentativa de reconexão bem sucedida.</center>"
+
+#~ msgid "Automatically reconnect"
+#~ msgstr "Reconectar automaticamente"
+
+#~ msgid ""
+#~ "<center>This option will enable auto-reconnecting after an unexpected "
+#~ "disconnect. An unexpected disconnect is the <b>termination</b> of a "
+#~ "<b>fully connected IRC session</b> that was <b>not requested by the user</"
+#~ "b> by the means of the QUIT message.<p><b>Warning:</b> If you use /RAW to "
+#~ "send a QUIT message to the server, this option will not behave correctly, "
+#~ "since does not detect the outgoing QUIT message and will attempt to "
+#~ "reconnect after the server has closed the connection. For this reason, "
+#~ "always use the /QUIT command to close your connections. This option may "
+#~ "also behave incorrectly with bouncers that support detaching, in this "
+#~ "case a solution could be to prepare an alias that sends the bouncer "
+#~ "\"detach\" command immediately before the \"quit\" command.<br><tt>alias"
+#~ "(bncdetach){ raw bouncer detach; quit; }</tt></p></center>"
+#~ msgstr ""
+#~ "<center>Esta opção ativa a auto-reconexão após uma desconexão inesperada. "
+#~ "Uma desconexão inesperada é a <b>finalização</b> de uma<b> sessão de IRC "
+#~ "completa </b>que não foi <b>pedida pelo usuário</b> por meio de uma "
+#~ "mensagem QUIT.<p><b>Aviso:</b> se utilizar o /RAW para enviar uma "
+#~ "mensagem QUIT para o servidor, esta opção não irá funcionar corretamente, "
+#~ "isto porque não será detectada a saida de uma mensagem QUIT e tentará "
+#~ "reconectar depois que o servidor fechar a conexão. Por esta razão, use "
+#~ "sempre o comando /QUIT para fechar as suas conexões. Esta opção também "
+#~ "pode se comportar incorretamente com 'bouncers' que suportem 'detaching', "
+#~ "neste caso a solução pode ser preparar um alias que envie o comando "
+#~ "\"detach\" do 'bouncer' imediatamente antes do comando \"quit\"."
+#~ "<br><tt>alias(bncdetach){ raw bouncer detach; quit; }</tt></p></center>"
+
+#~ msgid "Maximum attempts (0: unlimited):"
+#~ msgstr "Máximo de tentativas (0: ilimitadas):"
+
+#~ msgid "Delay between attempts:"
+#~ msgstr "Intervalo de tempo entre às tentativas:"
+
+#~ msgid " sec"
+#~ msgstr " segundos"
+
+#~ msgid ""
+#~ "<center>Minimum value: <b>0 sec</b><br>Maximum value: <b>86400 sec</b></"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Valor mínimo: <b>0 segundos</b><br>Valor máximo: <b>86400 "
+#~ "segundos</b></center>"
+
+#, fuzzy
+#~ msgid "Novice"
+#~ msgstr "Voice"
+
+#, fuzzy
+#~ msgid "No such options page class name %Q"
+#~ msgstr "Sem opções de nome de classe na página"
+
+#~ msgid "\"Smart\" nickname colors"
+#~ msgstr "Cores de apelido \"espertas\" "
+
+#~ msgid "Show nicknames in bold"
+#~ msgstr "Exibir apelidos em negrito"
+
+#~ msgid "Show user and host"
+#~ msgstr "Mostra usuário e máquina"
+
+#~ msgid "Show channel mode prefix"
+#~ msgstr "Exibir prefixo do modo do canal"
+
+#~ msgid "User-defined prefix and postfix"
+#~ msgstr "Prefixo e sufixo definidos pelo usuário"
+
+#~ msgid "[PREFIX]nickname[!user@host][POSTFIX] message"
+#~ msgstr "[PREFIXO]apelido[!usuário@máquina][SUFIXO] mensagem"
+
+#~ msgid "Prefix:"
+#~ msgstr "Prefixo:"
+
+#~ msgid "Postfix:"
+#~ msgstr "Sufixo:"
+
+#~ msgid "Don't show colors in user messages"
+#~ msgstr "Não exibir cores nas mensagens de usuários"
+
+#~ msgid "Font:"
+#~ msgstr "Fonte:"
+
+#~ msgid "Background color:"
+#~ msgstr "Cor de fundo:"
+
+#~ msgid "Background image:"
+#~ msgstr "Imagem de fundo:"
+
+#~ msgid "Mark Line:"
+#~ msgstr "Linha de Marcação:"
+
+#~ msgid "Show message icons"
+#~ msgstr "Exibir ícones nas mensagens"
+
+#~ msgid "Draw some emoticons (smileys) as pictures"
+#~ msgstr "Desenhar alguns icones emotivos (carinhas) como figuras."
+
+#~ msgid "Show timestamp"
+#~ msgstr "Exibir marca de tempo"
+
+#~ msgid "Use UTC time for timestamp"
+#~ msgstr "Usar horário UTC na marca de tempo"
+
+#~ msgid "Use special color for timestamps"
+#~ msgstr "Usar cor especial na marca de tempo"
+
+#~ msgid "Timestamp color"
+#~ msgstr "Cor da marca de tempo"
+
+#~ msgid "Enable URL highlighting"
+#~ msgstr "Habilitar destaque de URLs"
+
+#~ msgid "Use line wrap margin"
+#~ msgstr "Usar margem para quebra de linha"
+
+#~ msgid "Maximum buffer size:"
+#~ msgstr "Tamanho máximo de buffer:"
+
+#~ msgid " lines"
+#~ msgstr " linhas"
+
+#~ msgid "Link tooltip show delay:"
+#~ msgstr "Tempo de espera para exibir descriçoes de links :"
+
+#~ msgid " msec"
+#~ msgstr " mseg"
+
+#~ msgid "Link tooltip hide delay:"
+#~ msgstr "Tempo de espera para ocultar descriçoes de links :"
+
+#~ msgid "Track last read text line"
+#~ msgstr "Marcar a última linha de texto lida"
+
+#~ msgid "Nickname alternatives"
+#~ msgstr "Apelidos alternativos"
+
+#~ msgid ""
+#~ "<center>Here you can choose up to three nicknames alternative to the "
+#~ "primary one. KVIrc will use the alternatives if the primary nick is "
+#~ "already used by someone else on a particular IRC network.</center>"
+#~ msgstr ""
+#~ "<center>Aqui você pode escolher até três apelidos alternativos ao "
+#~ "preliminar. O KVIrc usará as alternativas se o apelido preliminar estiver "
+#~ "em uso por alguma outra pessoa em uma rede particular de IRC.</center>"
+
+#~ msgid "Alt. Nickname 1:"
+#~ msgstr "Apelido Alt. 1:"
+
+#~ msgid "Alt. Nickname 2:"
+#~ msgstr "Apelido Alt. 2:"
+
+#~ msgid "Alt. Nickname 3:"
+#~ msgstr "Apelido Alt. 3:"
+
+#~ msgid ""
+#~ "<center>Your <b>nickname</b> is your primary form of identification on "
+#~ "IRC.<br>Since servers cannot accept multiple users sharing the same "
+#~ "nickname (case insensitive), you can provide alternative nicknames to be "
+#~ "used in casethe server refuses to accept the default one.</center>"
+#~ msgstr ""
+#~ "<center>Seu <b>apelido</b> é seu formulário preliminar de identificação "
+#~ "no IRC.<br>Desde de que os servidores não podem aceitar multiplos "
+#~ "usuários compartilhando o mesmo apelido (caso isso ocorra), você pode "
+#~ "prover apelidos alternativos que podem ser usados caso o servidor recuse "
+#~ "o seu apelido padrão.</center> "
+
+#~ msgid "Alternatives..."
+#~ msgstr "Alternativos..."
+
+#~ msgid "Username:"
+#~ msgstr "Nome de usuário:"
+
+#~ msgid ""
+#~ "<center>This is the <b>username</b> that you will use to connect to the "
+#~ "server.<br>In the past, it was used as a form of authentication, but it "
+#~ "normally has no special use now.<br>In addition to your nickname, you are "
+#~ "identified on IRC by your <b>username@hostname</b>.</br>Basically, you "
+#~ "can enter any word you like here. :D</center>"
+#~ msgstr ""
+#~ "<center>Este é o <b>nome de usuário</b> que você irá usar para se "
+#~ "conectar ao servidor.<br>No passado, foi usado como formulário de "
+#~ "autenticação, mas agora nao tem nenhum uso especial.<br>Além de seu "
+#~ "apelido você é identificado no IRC pelo seu <b>nomedeusuário@hostname</b>."
+#~ "</br>Basicamente, você pode preencher com alguma palavra que você goste "
+#~ "aqui. :D</center>"
+
+#~ msgid ""
+#~ "<center>This text will appear when someone does a /WHOIS on you.<br>It is "
+#~ "intended to be your real name, but people tend to put random quotes and "
+#~ "phrases here too.</center>"
+#~ msgstr ""
+#~ "<center>Este texto aparecerá quando alguém fizer um /WHOIS em você."
+#~ "<br>Pretende-se que seja seu nome real, mas as pessoas tendem a pôr aqui "
+#~ "citações e frases aleatórias .</center>"
+
+#~ msgid "Server notices (+s)"
+#~ msgstr "Notícias do Servidor (+s)"
+
+#~ msgid "Default part message:"
+#~ msgstr "Mensagem padrão de saída de canal:"
+
+#~ msgid ""
+#~ "<center>This is the default part message that will be used when "
+#~ "you<br>leave a channel by closing a channel window.</center>"
+#~ msgstr ""
+#~ "<center>Esta é a mensagem padrão de saída que será usada quando "
+#~ "<br>deixar um canal ao fechar a janela do canal.</center>"
+
+#~ msgid "Default quit message:"
+#~ msgstr "Mensagem quit padrão:"
+
+#~ msgid ""
+#~ "<center>This is the default quit message that will be used when "
+#~ "you<br>quit your IRC session by closing the console window or "
+#~ "disconnecting by pressing the disconnect button.</center>"
+#~ msgstr ""
+#~ "<center>Esta é a mensagem quit padrão que será usada quando <br>fechar a "
+#~ "sua sessão IRC ao fechar a janela do console ou desconectar ao clicar no "
+#~ "botão desconectar.</center>"
+
+#~ msgid "Pattern"
+#~ msgstr "Padrão"
+
+#~ msgid "MIME Type"
+#~ msgstr "Tipo de MIME"
+
+#~ msgid "MIME type:"
+#~ msgstr "Tipo de MIME:"
+
+#~ msgid "File pattern:"
+#~ msgstr "Padrão de Arquivo:"
+
+#~ msgid "Magic bytes:"
+#~ msgstr "Bytes mágicos:"
+
+#~ msgid "Save path:"
+#~ msgstr "Salvar caminho:"
+
+#~ msgid "Local open command:"
+#~ msgstr "Comando de abertura local:"
+
+#~ msgid ""
+#~ "<center>This field contains the command to execute to open a local file."
+#~ "<br><tt>$0</tt> is used in place of the filename</center>"
+#~ msgstr ""
+#~ "<center>Este campo contem o comando para executar a abertura de um "
+#~ "arquivo local.<br><tt>$0</tt> é usado no lugar do nome do arquivo</center>"
+
+#~ msgid "Remote open command:"
+#~ msgstr "Comando de abertura remota:"
+
+#~ msgid ""
+#~ "<center>This field contains the command to execute when automatically "
+#~ "opening a received file.<br><tt>$0</tt> is used in place of the filename</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Este campo contem o comando para executar automaticamente a "
+#~ "abertura um arquivo recebido.<br><tt>$0</tt> é usado no lugar do nome do "
+#~ "arquivo</center>"
+
+#~ msgid "[Unknown Media Type]"
+#~ msgstr "[Tipo de Midia Desconhecida]"
+
+#~ msgid "New Media Type"
+#~ msgstr "Novo Tipo de Midia"
+
+#~ msgid "NickServ Authentication Rule"
+#~ msgstr "Rugras de Autenticação do NickServ"
+
+#~ msgid "Registered NickName"
+#~ msgstr "Apelido Registrado"
+
+#~ msgid "Put here the nickname that you have registered with NickServ"
+#~ msgstr "Coloque aqui o apelido que você registou com o Nickserv"
+
+#~ msgid "NickServ Mask"
+#~ msgstr "Máscara do NickServ"
+
+#~ msgid ""
+#~ "This is the mask that NickServ must match to be correctly identified as "
+#~ "the NickServ service. This usually will be something like <b>NickServ!"
+#~ "[email protected]</b>.<br>You can use wildcards for this field, but "
+#~ "generally it is a security flaw. If you're 100% sure that NO user on the "
+#~ "network can use the nickname \"NickServ\", the mask <b>NickServ!*@*</b> "
+#~ "may be safe to use in this field."
+#~ msgstr ""
+#~ "Esta é a máscara que deve concordar com NickServ para ser corretamente "
+#~ "identificado como o servicio NickServ. Habitualmente será algo como "
+#~ "<b>[email protected]</b>.<br>Você pode usar comodines para "
+#~ "este campo, mas isto é considerado um falha de segurança. Se estiver 100% "
+#~ "seguro que NENHUM usuario na rede pode utilizar o apelido \"NickServ\", "
+#~ "pode ser seguro utilizar a máscara <b>NickServ!*@*</b> neste campo."
+
+#~ msgid "Message Regexp"
+#~ msgstr "Mensagem Regexp"
+
+#~ msgid ""
+#~ "This is the simple regular expression that the identification request "
+#~ "message from NickServ must match in order to be correctly recognized."
+#~ "<br>The message is usually something like \"To identify yourself please "
+#~ "use /ns IDENTIFY password\" and it is sent when the NickServ wants you to "
+#~ "authenticate yourself. You can use the * and ? wildcards."
+#~ msgstr ""
+#~ "Esta é a expressão regular simples que o pedido/mensagem de identificação "
+#~ "do Nickserv tem que coincidir para que seja corretamente reconhecido."
+#~ "<br>A mensagem normalmente é qualquer coisa como \"Para se identificar "
+#~ "por favor use /ns IDENTIFY password\" e é enviado quando o Nickserv quer "
+#~ "que você se identifique. Pode usar os caracteres * e ?."
+
+#~ msgid "Identify Command"
+#~ msgstr "Comando de Identificação"
+
+#~ msgid ""
+#~ "This is the command that will be executed when NickServ requests "
+#~ "authentication for the nickname described in this rule (if the both "
+#~ "server and NickServ mask are matched). This usually will be something "
+#~ "like <b>msg NickServ identify &lt;yourpassword&gt;</b>.<br>You can use "
+#~ "<b>msg -q</b> if you don't want the password echoed on the screen. Please "
+#~ "note that there is no leading slash in this command."
+#~ msgstr ""
+#~ "Este é o comando que irá ser executado quando o NickServ pedir "
+#~ "autenticação para o apelido descrito nesta regra (se ambas as máscaras do "
+#~ "servidor e do NickServ coincidem). Isto normalmente será algo como <b>msg "
+#~ "NickServ identify &lt;senha&gt;</b>. <br>Pode usar <b>msg -q</b> se não "
+#~ "quiser que a senha seja exibida na tela. Por favor note que este comando "
+#~ "não utiliza barra no inicio.</center>"
+
+#~ msgid "Server mask"
+#~ msgstr "Máscara do servidor"
+
+#~ msgid ""
+#~ "This is the mask that the current server must match in order for this "
+#~ "rule to apply. It can contain * and ? wildcards.<br>Do NOT use simply \"*"
+#~ "\" here..."
+#~ msgstr ""
+#~ "Esta é a máscara a que o servidor atual deve corresponder para que esta "
+#~ "regra seja aplicada. Pode conter caracteres \"*\" e \"?\".<br>NÃO use "
+#~ "simplesmente o \"*\" aqui..."
+
+#~ msgid "Hint: Move the mouse cursor over the fields to get help"
+#~ msgstr "Sugestão: Mova o cursor do mouse sobre os campos para obter ajuda"
+
+#~ msgid "Invalid NickServ Rule"
+#~ msgstr "Regra Nickserv Inválida"
+
+#~ msgid "The Nickname field can't be empty!"
+#~ msgstr "O campo do Apelido não pode estar vazio!"
+
+#~ msgid "The Nickname field can't contain spaces!"
+#~ msgstr "O campo do Apelido não pode conter espaços!"
+
+#~ msgid "The NickServ mask can't be empty!<br>You must put at least * there."
+#~ msgstr ""
+#~ "A mascara do Nickserv não pode estar vazia!<br>Tem que ter pelo menos um "
+#~ "*."
+
+#~ msgid "The Message Regexp can't be empty!<br>You must put at least * there."
+#~ msgstr ""
+#~ "A Mensagem Regexp não pode estar vazia!<br>Tem que ter pelo menos um *."
+
+#~ msgid "The Identify Command can't be empty!"
+#~ msgstr "O Comando de Identificação não pode estar vazio!"
+
+#~ msgid "Enable NickServ Identification"
+#~ msgstr "Ativar Identificação do NickServ"
+
+#~ msgid "This check enables the automatic identification with NickServ"
+#~ msgstr "Esta caixa ativa a identificação automática do Nickserv"
+
+#~ msgid "Nickname"
+#~ msgstr "Apelido"
+
+#~ msgid "NickServ Request Mask"
+#~ msgstr "Pedido da Máscara do NickServ"
+
+#~ msgid ""
+#~ "<center>This is a list of NickServ identification rules. KVIrc will use "
+#~ "them to model its automatic interaction with NickServ on all the networks."
+#~ "<br>Please be aware that this feature can cause your NickServ passwords "
+#~ "to be stolen if used improperly. Make sure that you fully understand the "
+#~ "NickServ authentication protocol.<br>In other words, be sure to know what "
+#~ "you're doing.<br>Also note that the password that you provide is stored "
+#~ "as <b>PLAIN TEXT</b>.<br>KVIrc supports also per-network NickServ "
+#~ "authentication rules that can be created in the \"Advanced...\" network "
+#~ "options (accessible from the servers dialog).</center>"
+#~ msgstr ""
+#~ "<center>Esta é a lista das regras de identificação do NickServ. O KVirc "
+#~ "irá utilizá-las para modelar a sua interação automática com o NickServ em "
+#~ "todas as redes.<br>Por favor tenha atenção porque esta característica "
+#~ "pode causar o roubo da sua senha do NickServ se for utilizada "
+#~ "inaprópriadamente. Certifique-se que compreendeu completamente o "
+#~ "protocolo de autenticação do NickServ. <br>Em outras palavras, tenha a "
+#~ "certeza do que fazendo.<br>Note também que a senha que você forneceu é "
+#~ "salva como<b>TEXTO SIMPLES</b><br>KVIrc suporta também, regras de "
+#~ "autenticação NickServ per-network e pode ser criada em opções "
+#~ "\"Advançadas...\" derede (acessível a partir da janela de servidores).</"
+#~ "center>"
+
+#~ msgid "Add Rule"
+#~ msgstr "Adicionar Regra"
+
+#~ msgid "Edit Rule"
+#~ msgstr "Editar Regra"
+
+#~ msgid "Delete Rule"
+#~ msgstr "Deletar Regra"
+
+#~ msgid "Selection background color"
+#~ msgstr "Selecionar cor de fundo"
+
+#~ msgid "Selection foreground color"
+#~ msgstr "Selecionar cor de primeiro plano"
+
+#~ msgid "Control char color"
+#~ msgstr "Cor dos caracteres de controle"
+
+#~ msgid "Cursor color"
+#~ msgstr "Cor do Curso"
+
+#~ msgid "Warp cursor at the end of line when browsing history"
+#~ msgstr "Mover o cursor para o final da linha quando navegar pelo histórico"
+
+#~ msgid "Disable the input history window and it's log memory."
+#~ msgstr ""
+#~ "Desabilitar a janela de entrada no histórico e o seu registo de memória."
+
+#~ msgid "Nick completion"
+#~ msgstr "Complemento de Apelido"
+
+#~ msgid "Use bash-like nick completion"
+#~ msgstr "Usar complemento de apelido no estilo bash"
+
+#~ msgid "Nick completion postfix string"
+#~ msgstr "String de sufixo para o complemento de apelido"
+
+#~ msgid "Use the completion postfix string for the first word only"
+#~ msgstr ""
+#~ "Usar a string de sufixo somente para o complemento da primeira palavra"
+
+#~ msgid "Use proxy"
+#~ msgstr "Usar proxy"
+
+#~ msgid "Proxy"
+#~ msgstr "Proxy"
+
+#~ msgid ""
+#~ "<center>This is the list of available proxy servers.<br>Right-click on "
+#~ "the list to add or remove proxies.</center>"
+#~ msgstr ""
+#~ "<center>Esta é a lista de servidores proxy disponíveis.<br>Clique com o "
+#~ "botão direito- na lista para adicionar ou remover proxies.</center>"
+
+#~ msgid "New Proxy"
+#~ msgstr "Novo Proxy"
+
+#~ msgid "Remove Proxy"
+#~ msgstr "Remover Proxy"
+
+#~ msgid "Proxy:"
+#~ msgstr "Proxy:"
+
+#~ msgid "Password:"
+#~ msgstr "Senha:"
+
+#~ msgid "Use IPv6 protocol"
+#~ msgstr "Usar protocolo IPv6"
+
+#~ msgid "&New Proxy"
+#~ msgstr "&Novo Proxy"
+
+#~ msgid "Re&move Proxy"
+#~ msgstr "&Novo Proxy"
+
+#~ msgid "Default text encoding:"
+#~ msgstr "Codificação de texto padrão:"
+
+#~ msgid "Use Language Encoding"
+#~ msgstr "Usar Codificação de Língua"
+
+#, fuzzy
+#~ msgid "Minimize in tray"
+#~ msgstr "Minimizar novos privados"
+
+#~ msgid "Confirm quit with active connections"
+#~ msgstr "Confirmar quit com conexões ativas"
+
+#~ msgid "Remember window properties"
+#~ msgstr "Lembrar propriedades da janela"
+
+#, fuzzy
+#~ msgid "Disable splash screen"
+#~ msgstr "Desabilitar avisos de parser"
+
+#~ msgid "Open Dialog Window For"
+#~ msgstr "Abrir Janela de Diálogo Para"
+
+#~ msgid "Preferences"
+#~ msgstr "Preferências"
+
+#~ msgid "Registered Users"
+#~ msgstr "Usuários Registados"
+
+#~ msgid "Disable parser warnings"
+#~ msgstr "Desabilitar avisos de parser"
+
+#~ msgid "Disable broken event handlers"
+#~ msgstr "Desativar manipuladores de eventos errados"
+
+#~ msgid "Kill broken timers"
+#~ msgstr "Matar timers errados"
+
+#~ msgid "Send unknown commands as /RAW"
+#~ msgstr "Enviar comando desconhecido como /RAW"
+
+#~ msgid "Automatically unload unused modules"
+#~ msgstr "Descarregar automaticamente módulos não utilizados"
+
+#~ msgid "Ignore module versions (dangerous)"
+#~ msgstr "Ignorar versões de módulos (perigoso)"
+
+#, fuzzy
+#~ msgid "Create minimized debug window"
+#~ msgstr "Minimizar todas las janelas"
+
+#~ msgid "Message Type"
+#~ msgstr "Tipo de Mensagem"
+
+#~ msgid "Background:"
+#~ msgstr "Plano de Fundo:"
+
+#~ msgid "Foreground:"
+#~ msgstr "Primeiro Plano:"
+
+#~ msgid "Alert level:"
+#~ msgstr "Nível de alerta"
+
+#~ msgid "Log this"
+#~ msgstr "Log isto"
+
+#~ msgid "Load From..."
+#~ msgstr "Carregar de...."
+
+#~ msgid "Save As..."
+#~ msgstr "Salvar Como..."
+
+#~ msgid "Choose a Filename - KVIrc "
+#~ msgstr "Escolher Nome de Arquivo - KVIrc "
+
+#~ msgid "Use global application font"
+#~ msgstr "Usar fonte global para aplicação"
+
+#, fuzzy
+#~ msgid "Hide icons in Popup"
+#~ msgstr "Ocultar Janela de Procura"
+
+#~ msgid "Global application font:"
+#~ msgstr "Fonte global da aplicação:"
+
+#~ msgid "Enable fake transparency"
+#~ msgstr "Ativar transparência falsa"
+
+#~ msgid ""
+#~ "<center>This option makes all KVIrc windows look transparent.<br>You must "
+#~ "choose a blending background image to below or check the \"Use KDE "
+#~ "desktop for transparency\" option.</center>"
+#~ msgstr ""
+#~ "<center>Esta opção faz com que a janela do KVirc pareça transparente. "
+#~ "<br>Você deve escolher uma imagem para misturar com o fundo ou marcar a "
+#~ "opção \"Usar a Área de Trabalho KDE para transparência\".</center>"
+
+#~ msgid ""
+#~ "<center>This option makes all KVIrc windows look like transparent.<br>You "
+#~ "must choose a blending background image to below.</center>"
+#~ msgstr ""
+#~ "<center>Esta opção faz com que a janela do KVirc pareça transparente. "
+#~ "<br>Deve escolher uma imagem para misturar com o fundo.</center> "
+
+#~ msgid "Child window opacity:"
+#~ msgstr "Opacidade da janela criada:"
+
+#~ msgid "Parent window opacity:"
+#~ msgstr "Opacidade da janela principal:"
+
+#~ msgid "Blend color:"
+#~ msgstr "Cor de Mistura:"
+
+#~ msgid "Use KDE desktop for transparency"
+#~ msgstr "Usar o ambiente KDE para transparência"
+
+#~ msgid "Keep in sync with KDE background changes"
+#~ msgstr "Sincronizar mudanças com o plano de fundo do KDE"
+
+#~ msgid "Transparency blend image:"
+#~ msgstr "Imagem de mistura da transparência:"
+
+#~ msgid "Active Background"
+#~ msgstr "Plano de fundo ativo"
+
+#~ msgid "Inactive Background"
+#~ msgstr "Plano de fundo inativo"
+
+#~ msgid "Active Text (Primary)"
+#~ msgstr "Texto Ativo (Primário)"
+
+#~ msgid "Active Text (Secondary)"
+#~ msgstr "Texto Ativo (Secundário)"
+
+#~ msgid "Inactive Text (Primary)"
+#~ msgstr "Texto Inativo (Primário)"
+
+#~ msgid "Inactive Text (Secondary)"
+#~ msgstr "Texto Inativo (Secundário)"
+
+#~ msgid "Background Image"
+#~ msgstr "Imagem de Fundo"
+
+#~ msgid "Low-Contrast Foreground"
+#~ msgstr "Contraste Baixo do Primeiro Plano"
+
+#~ msgid "Mid-Contrast Foreground"
+#~ msgstr "Contraste Médio do Primeiro Plano"
+
+#~ msgid "Active High-Contrast Foreground (Primary)"
+#~ msgstr "Contraste Alto Ativo do Primeiro Plano (Primário)"
+
+#~ msgid "Active High-Contrast Foreground (Secondary)"
+#~ msgstr "Contraste Alto Ativo do Primeiro Plano (Secundário)"
+
+#~ msgid "Inactive High-Contrast Foreground (Primary)"
+#~ msgstr "Contraste Alto Inativo do Primeiro Plano (Primário)"
+
+#~ msgid "Inactive High-Contrast Foreground (Secondary)"
+#~ msgstr "Contraste Alto Inativo do Primeiro Plano (Secundário)"
+
+#~ msgid "Default away message:"
+#~ msgstr "Mensagem de ausência padrão:"
+
+#~ msgid "User input exits away mode"
+#~ msgstr "Sair do \"ausente\" ao digitar algo"
+
+#~ msgid "Away Nickname"
+#~ msgstr "Apelido de Ausência"
+
+#~ msgid "Change nickname on away"
+#~ msgstr "Mudar apelido ao ficar ausente"
+
+#~ msgid "Use automatic nickname ([5 letters]AWAY)"
+#~ msgstr "Usar apelido gerado automaticamente ([5 letras] AWAY)"
+
+#~ msgid "Custom nickname:"
+#~ msgstr "Apelido personalizado"
+
+#~ msgid "Enable lag meter"
+#~ msgstr "Habilitar medidor de lag"
+
+#~ msgid ""
+#~ "<center>This enables the lag meter engine, which checks at regular "
+#~ "intervals how much lag (latency) the server has.</center>"
+#~ msgstr ""
+#~ "<center>Isto habilita o medidor de lag, que verificará em intervalos "
+#~ "regulares quanto de lag (latência) o servidor tem.</center>"
+
+#~ msgid "Lag meter heartbeat:"
+#~ msgstr "Medição da frequência do lag:"
+
+#~ msgid ""
+#~ "<center>This option allows you to set the lag meter heartbeat interval."
+#~ "<br>The lower the heartbeat interval the higher will be the accuracy of "
+#~ "the lag check but also higher cpu usage and data traffic to the server."
+#~ "<br>Please note that this is NOT the interval between pings sent to the "
+#~ "server: the pings (if any) will be sent really less often. 5000 is a "
+#~ "reasonable value.</center>"
+#~ msgstr ""
+#~ "<center>Esta opção lhe permite definir o intervalo de batimento do "
+#~ "medidor de lag.<br>Quanto mais baixo for o intervalo de batimento maior "
+#~ "será a exatidão da verificação do lag mas também maior será o uso do CPU "
+#~ "e tráfego de dados para o servidor.<br>Por favor note que NÃO é o "
+#~ "intervalo entre os pings enviados para o servidor: os pings (se algum) "
+#~ "serão enviados com muito menos frequência. 5000 é o valor razoável .</"
+#~ "center>"
+
+#~ msgid "Trigger event if lag exceeds:"
+#~ msgstr "Disparar evento se o lag exceder:"
+
+#~ msgid ""
+#~ "<center>This option controls the threshold for the OnLagAlarmTimeUp and "
+#~ "OnLagAlarmTimeDown events. When the lag goes above the threshold "
+#~ "OnLagAlarmTimeUp will be triggered and when the lag falls back below the "
+#~ "threshold then OnLagAlarmTimeDown will be triggered</center>"
+#~ msgstr ""
+#~ "<center>Esta opção controla o ponto inicial para os eventos "
+#~ "OnLagAlarmTimeUp e OnLagAlarmTimeDown. Quando o lag exceder o ponto "
+#~ "inicial se disparará o evento OnLagAlarmTimeUp e quando o lag cair abaixo "
+#~ "do ponto inicial se disparará OnLagAlarmTimeDown</center>"
+
+#~ msgid "Show lag in IRC context display"
+#~ msgstr "Exibir lag no monitor de contexto de IRC"
+
+#~ msgid ""
+#~ "<center>This makes the IRC context display applet show the current lag "
+#~ "after the user's nickname (in seconds)</center>"
+#~ msgstr ""
+#~ "<center>Isto faz com que o applet monitor de contexto de IRC exiba o lag "
+#~ "atual depois do apelido dos usuários (em segundos)</center>"
+
+#~ msgid "Nickname Colors"
+#~ msgstr "Cores de Apelido"
+
+#~ msgid "Normal:"
+#~ msgstr "Normal:"
+
+#~ msgid "Selected:"
+#~ msgstr "Selecionado:"
+
+#~ msgid "Channel owner:"
+#~ msgstr "Proprietário do canal:"
+
+#~ msgid "Channel admin:"
+#~ msgstr "Administrador do Canal:"
+
+#~ msgid "Op:"
+#~ msgstr "Op:"
+
+#~ msgid "Half-op:"
+#~ msgstr "Semioperador:"
+
+#~ msgid "Voice:"
+#~ msgstr "Voice:"
+
+#~ msgid "User-op:"
+#~ msgstr "Usuários operadores:"
+
+#, fuzzy
+#~ msgid "Away:"
+#~ msgstr "Ausente"
+
+#~ msgid "Background Colors"
+#~ msgstr "Cores de fundo"
+
+#~ msgid "Nickname Grid"
+#~ msgstr "Grade de Apelido"
+
+#~ msgid "Draw nickname grid"
+#~ msgstr "Desenhar grade de apelido"
+
+#~ msgid "Grid color:"
+#~ msgstr "Cor da grade"
+
+#~ msgid "Grid type:"
+#~ msgstr "Tipo de Grade:"
+
+#~ msgid "3D Grid"
+#~ msgstr "Grade-3D"
+
+#~ msgid "3D Buttons"
+#~ msgstr "Botões-3D"
+
+#~ msgid "Plain Grid"
+#~ msgstr "Grade Plana"
+
+#~ msgid "Dotted Grid"
+#~ msgstr "Grade Pontilhada"
+
+#~ msgid "Show user channel icons"
+#~ msgstr "Exibir ícones de usuário do canal"
+
+#~ msgid "Show user channel activity indicator"
+#~ msgstr "Exibir indicador de atividade de usuários do canal"
+
+#~ msgid "Enable user tooltips"
+#~ msgstr "Habilitar dicas de usuário"
+
+#~ msgid "Minimize console after successful login"
+#~ msgstr "Minimizar console após entrar corretamente"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to minimize the console window after "
+#~ "successfully logging into a server.</center>"
+#~ msgstr ""
+#~ "<center>Esta opção irá fazer com que o KVirc minimize a janela de console "
+#~ "depois de entrar com sucesso em um servidor.</center>"
+
+#~ msgid "On Channel Kick"
+#~ msgstr "Ao ser Chutado do Canal"
+
+#~ msgid "Keep channel open"
+#~ msgstr "Manter janela de canal aberta"
+
+#~ msgid "Rejoin channel"
+#~ msgstr "Reentrar no canal"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to attempt to rejoin a channel after "
+#~ "being kicked.</center>"
+#~ msgstr ""
+#~ "<center>Esta opção faz com que o KVirc tente reentrar em um canal depois "
+#~ "de ser chutado.</center>"
+
+#~ msgid "On Channel Part"
+#~ msgstr "Ao Sair do Canal"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to keep the channel window open "
+#~ "after leaving it.</center>"
+#~ msgstr ""
+#~ "<center>Esta opção fará com que o KVirc mantenha a janela do canal aberta "
+#~ "depois de sair do canal.</center>"
+
+#~ msgid "Automatically join channel on invite"
+#~ msgstr "Entrar automaticamente no canal quando convidado"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to automatically join a channel when "
+#~ "an INVITE message for that channel is received.<br><b>Warning:</b> This "
+#~ "may help spammers harass you. :)</center>"
+#~ msgstr ""
+#~ "<center>Esta opção fará com que o KVirc entre automaticamente em um canal "
+#~ "quando uma mensagem de CONVITE para esse canal for recebida.<br><b>Aviso:"
+#~ "</b>Isto pode ajudar alguns spammers a te chatear. :)</center>"
+
+#, fuzzy
+#~ msgid "Do not update the away list"
+#~ msgstr "Não enviar pedido de lista"
+
+#~ msgid "Force immediate quit"
+#~ msgstr "Forçar quit imediato"
+
+#~ msgid ""
+#~ "<center>This option causes KVIrc to close the connection immediately "
+#~ "after sending the QUIT message.<br>When this option is disabled, KVIrc "
+#~ "will wait for the server to close the connection.<br>Note that if you use "
+#~ "this, your QUIT message may be not displayed.</center>"
+#~ msgstr ""
+#~ "<center>Esta opção faz com que o KVirc feche a conexão imediatamente após "
+#~ "enviar a mensagem QUIT.<br>Quando esta opção está desativada, o KVirc irá "
+#~ "esperar que servidor feche a conexão.<br>Note que se utilizar isto, a "
+#~ "mensagem de QUIT pode não ser exibida.</center>"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to keep the channel window open "
+#~ "after being kicked.<br>It might be a good idea to also enable the "
+#~ "\"Rejoin channel\" option.</center>"
+#~ msgstr ""
+#~ "<center>Esta opção fará com que o KVirc mantenha a janela do canal aberta "
+#~ "após ser chutado.<br>Pode ser uma boa ideia também ativar a opção"
+#~ "\"Reentrar no canal\".</center>"
+
+#~ msgid "Do not send /WHO request"
+#~ msgstr "Não enviar pedido /WHO"
+
+#~ msgid "Do not request ban list"
+#~ msgstr "Não enviar pedido de lista"
+
+#~ msgid "Do not request invite list"
+#~ msgstr "Não pedir lista de convites"
+
+#~ msgid "Certificate"
+#~ msgstr "Certificado"
+
+#~ msgid "Use SSL certificate (PEM format only)"
+#~ msgstr "Usar certificado SSL (somente formato PEM)"
+
+#~ msgid "Certificate location:"
+#~ msgstr "Local do certificado:"
+
+#~ msgid "Certificate password:"
+#~ msgstr "Senha do certificado:"
+
+#~ msgid "Private Key"
+#~ msgstr "Chave privada"
+
+#~ msgid "Use SSL private key"
+#~ msgstr "Usar chave SSL privada"
+
+#~ msgid "Private key location:"
+#~ msgstr "Local da chave privada:"
+
+#~ msgid "Private key password:"
+#~ msgstr "Senha da chave privada:"
+
+#~ msgid "This executable has no SSL support."
+#~ msgstr "Este executavel nao tem suporte SSL."
+
+#~ msgid "Timeout Values"
+#~ msgstr "Valores de Limite deTempo"
+
+#~ msgid "Connect timeout:"
+#~ msgstr "Limite de tempo para conectar:"
+
+#~ msgid "Outgoing data queue flush timeout:"
+#~ msgstr "Limite de Tempo para voltar com a saída de dados:"
+
+#~ msgid "Limit outgoing traffic"
+#~ msgstr "Limitar trafego de saida"
+
+#~ msgid "Limit to 1 message every:"
+#~ msgstr "Limite a 1 mensagem cada:"
+
+#~ msgid " usec"
+#~ msgstr " microsegundos"
+
+#~ msgid ""
+#~ "<center>Minimum value: <b>10000 usec</b><br>Maximum value: <b>10000000 "
+#~ "usec</b></center>"
+#~ msgstr ""
+#~ "<center>Valor mínimo: <b>10000 microsegundos</b><br>Valor máximo: "
+#~ "<b>10000000 microsegundos</b></center>"
+
+#~ msgid "Network Interfaces"
+#~ msgstr "Interfaces de Rede"
+
+#~ msgid "Bind IPv4 connections to:"
+#~ msgstr "Fazer conexões IPv4 usando:"
+
+#~ msgid "Bind IPv6 connections to:"
+#~ msgstr "Fazer conexões IPv4 usando:"
+
+#~ msgid "Open Query For"
+#~ msgstr "Abrir privado com"
+
+#~ msgid "Private messages"
+#~ msgstr "Mensagens privadas"
+
+#~ msgid ""
+#~ "<center>This option enables query window creation when a private message "
+#~ "(PRIVMSG) is received.<br>If you disable this, private messages will be "
+#~ "shown in the active window or a common channel.</center>"
+#~ msgstr ""
+#~ "<center>Esta opção permite a criação da janela de privado quando uma "
+#~ "mensagem privada (PRIVMSG) for recebida.<br>Se você desabilitar isto, as "
+#~ "mensagens privadas serão exibidas na janela ativa ou em um canal comum.</"
+#~ "center>"
+
+#~ msgid "Private notices"
+#~ msgstr "Noticias privadas"
+
+#~ msgid ""
+#~ "<center>This option enables query window creation when a private notice "
+#~ "(NOTICE) is received.<br>If you disable this, private notices will be "
+#~ "shown in the active window or a common channel.</center>"
+#~ msgstr ""
+#~ "<center>Esta opção permite a criação da janela de privado quando uma "
+#~ "notícia privada (NOTICE) for recebida.<br>Se você desabilitar isto, as "
+#~ "notícias privadas serão exibidas na janela ativa ou em um canal comum.</"
+#~ "center>"
+
+#~ msgid "Minimize new queries"
+#~ msgstr "Minimizar novos privados"
+
+#~ msgid ""
+#~ "<center>This option causes newly created query windows to be immediately "
+#~ "minimized.<br>Enable this if you don't like queries popping up while "
+#~ "you're typing something in a channel. :D</center>"
+#~ msgstr ""
+#~ "<center>Esta opção faz com que a janela de privado seja minimizada "
+#~ "imediatamente após ser criada. <br>Habilite isto se você não gosta que "
+#~ "janelas de query sejam instantaneamente exibidas enquanto esitiver "
+#~ "digitando algo em um canal. :D</center>"
+
+#~ msgid "Enable target user tracking"
+#~ msgstr "Habilitar perseguição usuário"
+
+#~ msgid ""
+#~ "<center>This option will enable target user tracking.<br>Some actions of "
+#~ "the target user (e.g. joins and parts) will be displayed in the window."
+#~ "<br></center>"
+#~ msgstr ""
+#~ "<center>Esta opção permitirá seguir um usuário. Algumas ações do usuário "
+#~ "(ex: entrar e sair de um canal) serão exibidas na janela.<br></center>"
+
+#~ msgid "Flash system taskbar on new query message"
+#~ msgstr ""
+#~ "Piscar barra de tarefas do sistema ao receber uma nova mensagem de privado"
+
+#~ msgid ""
+#~ "<center>This option causes the system taskbar entry for KVIrc to flash "
+#~ "when a new query message is received and the KVIrc window is not the "
+#~ "active.</center>"
+#~ msgstr ""
+#~ "<center>Esta opção faz com que a entrada do KVIrc na barra de tarefas do "
+#~ "sistema pisque quando uma nova mensagem de privado for recebida e a "
+#~ "janela do KVIrc não for a ativa.</center>"
+
+#~ msgid "Popup notifier on new query message"
+#~ msgstr "Popup do notificador ao receber uma nova mensagem de privado"
+
+#~ msgid ""
+#~ "<center>This option causes a small notifier window to pop up in the low "
+#~ "right corner of the screen when a new message is received and the KVIrc "
+#~ "window is not active.</center>"
+#~ msgstr ""
+#~ "<center>Esta opção faz com que uma pequena janela de notificação seja "
+#~ "exibida instantaneamente no canto direito inferior da tela quando uma "
+#~ "nova mensagem for recebida e a janela do KVIrc não for a ativa.</center>"
+
+#~ msgid "Enable word highlighting"
+#~ msgstr "Habilitar destaque de palavras"
+
+#~ msgid "Words to highlight:"
+#~ msgstr "Palavras a destacar:"
+
+#~ msgid "Highlight messages containing my nickname"
+#~ msgstr "Destacar mensagens que contenham o meu apelido"
+
+#~ msgid ""
+#~ "<center>If this option is enabled, KVIrc will highlight any user message "
+#~ "containing your current nickname</center>"
+#~ msgstr ""
+#~ "<center>Se esta opção estiver ativa, o KVirc irá destacar qualquer "
+#~ "mensagem de usuário que tenha o seu apelido atual</center>"
+
+#~ msgid "Flash the system taskbar entry on highlighted messages"
+#~ msgstr "Piscar a barra de tarefas do sistema nas mensagens destacadas"
+
+#~ msgid ""
+#~ "<center>If this option is enabled, KVIrc will (attempt to) flash the "
+#~ "system taskbar entry when a highlighted message is printed and KVIrc is "
+#~ "not the active window</center>"
+#~ msgstr ""
+#~ "<center>Se esta opção estiver ativa, o KVirc irá (tentar) piscar a "
+#~ "entrada na barra de tarefas do sistema quando uma mensagem destacada for "
+#~ "exibida e a janela do KVirc não estiver ativa.</center>"
+
+#~ msgid "Popup the notifier window on highlighted messages"
+#~ msgstr "Exibir a janela de notificação nas mensagens destacadas"
+
+#~ msgid ""
+#~ "<center>If this option is enabled, KVIrc will popup a little notifier "
+#~ "window in the low right corner of your desktop when a highlighted message "
+#~ "is printed and KVIrc is not the active window</center>"
+#~ msgstr ""
+#~ "<center>Se esta opção estiver ativa, o KVirc irá mostrar uma pequena "
+#~ "janela de notificação no canto inferior direito do seu Área de Trabalho, "
+#~ "quando uma mensagem destacada for exibida e o KVirc não for a janela "
+#~ "ativa</center>"
+
+#~ msgid "Taskbar Alert"
+#~ msgstr "Alerta da Barra de Tarefas"
+
+#~ msgid "Restrict alert"
+#~ msgstr "Alerta restrito"
+
+#~ msgid ""
+#~ "<center>If this option is enabled, KVIrc will alert in the taskbar only "
+#~ "if a normal message is received in a channel.<br>Actions like joins, "
+#~ "parts and mode changes will be ignored.<br> This is useful if you are in "
+#~ "channels with a high rate of traffic and only want to be alerted for "
+#~ "messages that are interesting to you.</center>"
+#~ msgstr ""
+#~ "<center>Se esta opção estíver ativa, o KVirc irá alertar na barra de "
+#~ "tarefas apenas se uma mensagem normal for recebida em um canal.<br>Ações "
+#~ "como entrar, partir e mudança de modos serão ignoradas.<br> Isto é útil "
+#~ "se estiver em canais com uma alta taxa de tráfego e você quiser ser "
+#~ "alertado apenas por mensagens que lhe interessam.</center>"
+
+#~ msgid "Alert for highlighted words"
+#~ msgstr "Alerta para palavras destacadas"
+
+#~ msgid ""
+#~ "<center>If this option is enabled, the taskbar will also alert for "
+#~ "messages which contain a word from the highlighted words list above.</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Se esta opção estiver ativa, a barra de tarefas também irá "
+#~ "alertar para mensagens que contenham uma palavra da lista de palavras "
+#~ "destacadas.</center>"
+
+#~ msgid "Alert for query messages"
+#~ msgstr "Alerta para mensagens query"
+
+#~ msgid ""
+#~ "<center>If this option is enabled, the taskbar will also alert for "
+#~ "messages which are shown in queries.</center>"
+#~ msgstr ""
+#~ "<center>Se esta opção estiver ativa, a barra de tarefas também irá "
+#~ "alertar para mensagens exibidas nos queries.</center>"
+
+#~ msgid ""
+#~ "<center>If this option is enabled, KVIrc will alert in the taskbar only "
+#~ "if the specified alert level is reached.</center>"
+#~ msgstr ""
+#~ "<center>Se esta opção estiver ativa, o KVirc irá alertar na barra de "
+#~ "tarefas apenas se o nível de alerta especificado for alcançado.</center>"
+
+#~ msgid "Minimum alert level:"
+#~ msgstr "Nível de alerta mínimo:"
+
+#~ msgid ""
+#~ "<center>This option sets the minimum alert level for the taskbar.</center>"
+#~ msgstr ""
+#~ "<center>Esta opção define o nível de alerta mínimo para a barra de "
+#~ "tarefas.</center>"
+
+#~ msgid "Automatically Log"
+#~ msgstr "Log Automático"
+
+#~ msgid "Query windows"
+#~ msgstr "Janelas de Privado"
+
+#~ msgid "Channel windows"
+#~ msgstr "Janelas de canal"
+
+#~ msgid "DCC Chat windows"
+#~ msgstr "Janelas de DCC Chat"
+
+#~ msgid "Console windows"
+#~ msgstr "Janelas de console"
+
+#~ msgid "<b>http://</b> handler command:"
+#~ msgstr "Manipulador de comando <b>http://</b>:"
+
+#~ msgid "<b>https://</b> handler command:"
+#~ msgstr "Manipulador de comando <b>https://</b>:"
+
+#~ msgid "<b>ftp://</b> handler command:"
+#~ msgstr "Manipulador de comando <b>ftp://</b>:"
+
+#~ msgid "<b>mailto:</b> handler command:"
+#~ msgstr "Manipulador de comando <b>mailto:</b>:"
+
+#~ msgid "<b>file://</b> handler command:"
+#~ msgstr "Manipulador de comando <b> file://</b>:"
+
+#~ msgid "Unknown protocol handler command:"
+#~ msgstr "Manipulador de protocolo desconhecido:"
+
+#~ msgid "Enable ident service (bad practice on UNIX!)"
+#~ msgstr "Habilitar serviço de ident (não recomendado no UNIX)"
+
+#~ msgid "Ident username:"
+#~ msgstr "Nome de usuário do ident:"
+
+#~ msgid "Service port:"
+#~ msgstr "Porta do serviço:"
+
+#~ msgid "IPv6 Settings"
+#~ msgstr "Configurações do IPv6"
+
+#~ msgid "Enable service for IPv6"
+#~ msgstr "Habilitar serviço para IPv6"
+
+#~ msgid "IP stack treats IPv4 as part of IPv6 namespace"
+#~ msgstr "A pilha do sistema trata IPv4 como parte do espaço de nomes IPv6"
+
+#~ msgid ""
+#~ "<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident "
+#~ "daemon that implements only a limited subset of the Identification "
+#~ "Protocol specifications. If it is possible, install a real ident daemon.</"
+#~ "p>"
+#~ msgstr ""
+#~ "<p><b>Aviso:</b><br>Isto é um <b>daemon ident</b> não RFC 1413 "
+#~ "complilante que implementa apenas um sub grupo de especificações do "
+#~ "Protocolo de Identificação. Se possível, instale um daemon ident real.</p>"
+
+#~ msgid ""
+#~ "<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident "
+#~ "daemon that implements only a limited subset of the Identification "
+#~ "Protocol specifications.<br>On UNIX, you may also need root privileges to "
+#~ "bind to the auth port (113).<br>It is <b>highly recommended</b> that a "
+#~ "<b>real</b> system-wide ident daemon be used instead, or none at all if "
+#~ "ident is not required.</p>"
+#~ msgstr ""
+#~ "<p><b>Aviso:</b><br>Isto é um daemon ident <b>não RFC 1413 complacente</"
+#~ "b> que implementa apenas um limite de sub definições das especificações "
+#~ "do Protocolo de Identificação. <br>Em UNIX, você pode também precisar de "
+#~ "privilégios root para ligar à porta de autenticação (113).<br>É "
+#~ "<b>altamente recomendado</b> que um daemon ident <b>real</b> do sistema "
+#~ "seja usado, ou nenhum se o ident não for requerido.</p>"
+
+#~ msgid "Use flood protection (recommended)"
+#~ msgstr "Usar proteção contra flood (recomendado)"
+
+#~ msgid ""
+#~ "<center>This option makes KVIrc only respond to a limited number of CTCP "
+#~ "requests within a specified time interval, to prevent \"flooding\" CTCP "
+#~ "messages.</center>"
+#~ msgstr ""
+#~ "<center>Esta opção faz com que o KVirc apenas responda a número limitado "
+#~ "de pedidos CTCP dentro de um intervalo de tempo especificado, para "
+#~ "prevenir o \"flood\" de mensagens CTCP.</center>"
+
+#~ msgid "Allow up to:"
+#~ msgstr "Permitir até:"
+
+#~ msgid " requests"
+#~ msgstr " pedidos"
+
+#~ msgid ""
+#~ "<center>Minimum value: <b>0 requests</b><br>Maximum value: <b>10000 "
+#~ "requests</b></center>"
+#~ msgstr ""
+#~ "<center>Valor mínimo: <b>0 pedidos</b><br>Valor máximo: <b>10000 pedidos</"
+#~ "b></center>"
+
+#~ msgid "within:"
+#~ msgstr "dentro de:"
+
+#~ msgid ""
+#~ "<center>Minimum value: <b>1 sec</b><br>Maximum value: <b>3600 sec</b></"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Valor mínimo: <b>1 seg</b><br>Valor máximo: <b>3600 seg</b></"
+#~ "center>"
+
+#~ msgid "PING"
+#~ msgstr "PING"
+
+#~ msgid "FINGER"
+#~ msgstr "FINGER"
+
+#~ msgid "CLIENTINFO"
+#~ msgstr "CLIENTINFO"
+
+#~ msgid "USERINFO"
+#~ msgstr "USERINFO"
+
+#~ msgid "VERSION"
+#~ msgstr "VERSION"
+
+#~ msgid "SOURCE"
+#~ msgstr "SOURCE"
+
+#~ msgid "TIME"
+#~ msgstr "TIME"
+
+#~ msgid "PAGE"
+#~ msgstr "PAGE"
+
+#~ msgid "AVATAR"
+#~ msgstr "AVATAR"
+
+#~ msgid "DCC/TDCC"
+#~ msgstr "DCC/TDCC"
+
+#~ msgid "Use online notify list"
+#~ msgstr "Usar lista de notificação online"
+
+#~ msgid "Show notifications in active window"
+#~ msgstr "Exibir notificações na janela ativa"
+
+#~ msgid "Flash window when users are going online"
+#~ msgstr "Piscar janela quando usuários ficarem online"
+
+#~ msgid "Popup notifier when users are going online"
+#~ msgstr "Notificador por popup quando usuários ficarm online"
+
+#~ msgid "Advanced configuration"
+#~ msgstr "Configuração avançada"
+
+#~ msgid "Check USERHOST for online users"
+#~ msgstr "Verificar USERHOSTpara usuários online"
+
+#~ msgid "Use \"smart\" notify list manager"
+#~ msgstr "Usar gerenciador da lista de notificação \"esperto\""
+
+#~ msgid "Use the WATCH method if available"
+#~ msgstr "Usar o método WATCH se disponível"
+
+#~ msgid "Check interval (in seconds)"
+#~ msgstr "Intervalo de Verificação (em segundos)"
+
+#~ msgid "ISON delay (in seconds)"
+#~ msgstr "Intervalo para ISON (em segundos)"
+
+#~ msgid "USERHOST delay (in seconds)"
+#~ msgstr "Intervalo para USERHOST(em segundos)"
+
+#~ msgid ""
+#~ "<p><b>Note:</b><br>The notify list is managed using the \"Registered Users"
+#~ "\" settings.</p>"
+#~ msgstr ""
+#~ "<p><b>Nota:</b><br>A lista de notificação é gerenciada usando as "
+#~ "configurações dos \"Usuários Registrados\".</p>"
+
+#~ msgid "Forcibly and completely disable the notifier"
+#~ msgstr "Force a desativação completa do notificador"
+
+#~ msgid ""
+#~ "This is an option for the impatient: it allows to forcibly and "
+#~ "permanently disable the notifier window. Please note that if this option "
+#~ "is activated then the notifier will NOT popup even if all the other "
+#~ "options around specify to use it in response to particular events. Also "
+#~ "note that this option will make all the /notifier.* commands fail "
+#~ "silently."
+#~ msgstr ""
+#~ "Esta é uma opção para os impacientes: permite a desativação forçada e "
+#~ "permanente da janela de notificação. Por favor note que se esta opção for "
+#~ "ativada o notificador não exibirá o popup mesmo que todas as opções "
+#~ "restantes especifiquem para usá-lo em resposta as eventos particulares. "
+#~ "Note também que esta opção fará com que todos os comandos /notifier. * "
+#~ "falhem silenciosamente."
+
+#~ msgid "Use tree taskbar"
+#~ msgstr "Usar Barra de tarefas em árvore"
+
+#~ msgid "Sort windows by name"
+#~ msgstr "Ordenar janelas por nome"
+
+#~ msgid "Show window icons in taskbar"
+#~ msgstr "Exibir icones na barra de tarefas"
+
+#~ msgid "Show activity meter in taskbar"
+#~ msgstr "Exibir medidor de atividade na barra de tarefas"
+
+#~ msgid ""
+#~ "<center>This option enables the usage of the taskbar activity meter. Each "
+#~ "window entry will have a small indicator of the activity that is going on "
+#~ "in that window. The indicator is a small square that changes colors, dark "
+#~ "colors mean low activity, while bright colors signal high activity. KVIrc "
+#~ "also uses some heuristics to determine whether the activity is somewhat "
+#~ "\"human\" or it is generated by automated entities (such as bots or IRC "
+#~ "servers). \"Human\" activity causes the indicator to be shaded red while "
+#~ "automated activity causes the indicator to be shaded blue.</center>"
+#~ msgstr ""
+#~ "<center>Esta opção habilita o uso do medidor de atividade na barra de "
+#~ "tarefas. Cada janela terá um pequeno indicador de atividade. O indicador "
+#~ "é um pequeno retângulo que alterna de cor; preto significa baixa "
+#~ "atividade e as cores mais brillantes indicam alta atividade. O KVIrc "
+#~ "utiliza algumas heurísticas para averiguar quando se trata de atividade "
+#~ "\"humana\" ou se é atividade gerada por entidades automáticas (como bots "
+#~ "ou servidores de IRC). A atividade \"humana\" faz com o que o indicador "
+#~ "fique sombreado em vermelho enquanto que a atividade automática faz com "
+#~ "que o indicador fique sombreado em azul.</center>"
+
+#~ msgid "Show IRC context indicator in taskbar"
+#~ msgstr "Exibir incador do contexto de IRC na barra de tarefas"
+
+#~ msgid "Enable window tooltips"
+#~ msgstr "Habilitar dicas de janela"
+
+#~ msgid "Text/Alert Colors"
+#~ msgstr "Texto/Cores de Alerta"
+
+#~ msgid "Alert Level 1:"
+#~ msgstr "Nível de alerta 1:"
+
+#~ msgid "Alert Level 2:"
+#~ msgstr "Nível de alerta 2:"
+
+#~ msgid "Alert Level 3:"
+#~ msgstr "Nível de alerta 3:"
+
+#~ msgid "Alert Level 4:"
+#~ msgstr "Nível de alerta 4:"
+
+#~ msgid "Alert Level 5:"
+#~ msgstr "Nível de alerta 5:"
+
+#~ msgid "Progress bar color:"
+#~ msgstr "Cor da barra de progresso:"
+
+#~ msgid "Minimum width:"
+#~ msgstr "Largura mínima:"
+
+#~ msgid "Maximum width:"
+#~ msgstr "Largura máxima:"
+
+#~ msgid "Minimized:"
+#~ msgstr "Minimizado:"
+
+#~ msgid "Minimum width of buttons:"
+#~ msgstr "Largura mínima dos botões:"
+
+#~ msgid "Maximum number of rows:"
+#~ msgstr "Número máximo de fileiras:"
+
+#~ msgid "Private/channel notices"
+#~ msgstr "Noticias Privada/Canal"
+
+#~ msgid "Use verbose ignore (show messages in console)"
+#~ msgstr "Usar ignore explicito (exibe mensagens no console)"
+
+#~ msgid "Enable Anti-spam For"
+#~ msgstr "Ativar Anti-spam Para"
+
+#~ msgid "Silent anti-spam (no warnings)"
+#~ msgstr "Anti-spam Silencioso (sem avisos)"
+
+#~ msgid "Words considered spam:"
+#~ msgstr "Palavras consideradas spam:"
+
+#~ msgid "Use workaround for firewall"
+#~ msgstr "Tentar funcionar atrás de firewall"
+
+#~ msgid ""
+#~ "<center>Enable this option if you can't accept incoming connections."
+#~ "<br>KVIrc will try to use different methods to send and receive files."
+#~ "<br>Please note that these methods may NOT work when communicating with a "
+#~ "non-KVIrc client.</center>"
+#~ msgstr ""
+#~ "<center>Ative esta opção se não consegue aceitar conexões.<br>O KVirc irá "
+#~ "tentar usar diferentes métodos para enviar e receber arquivos.<br>Por "
+#~ "favor note que este método pode NÃO funcionar quando estiver se "
+#~ "comunicando com clientes que não utilizem o KVirc.</center>"
+
+#~ msgid "Network Properties"
+#~ msgstr "Propriedades da Rede"
+
+#~ msgid "DCC socket timeout:"
+#~ msgstr "Tempo limite do Socket DCC:"
+
+#~ msgid ""
+#~ "<center>This is the amount of time that KVIrc will wait for a response "
+#~ "before assuming that a DCC has failed because the remote client was "
+#~ "unable to connect to our listening socket.</center>"
+#~ msgstr ""
+#~ "<center>Este é o tempo que o KVirc irá esperar por uma resposta antes de "
+#~ "assumir que o DCC falhou, porque o cliente remoto não foi capaz de "
+#~ "conectar ao nosso socket em escuta.</center>"
+
+#~ msgid "Use user-defined address or network interface"
+#~ msgstr "Usar o endereço definido pelo usuário ou uma interface de rede"
+
+#~ msgid ""
+#~ "<center>Enable this option if you are on a multihost machine and want to "
+#~ "force one of the available IP addresses to be used for outgoing DCCs."
+#~ "<br>This is especially useful when you use IPv6 and IPv4 addresses."
+#~ "<br>You can force KVIrc to always choose the IPv4 interface.</center>"
+#~ msgstr ""
+#~ "<center>Ative esta opção se ester em uma máquina multihost e quer forçar "
+#~ "um dos endereços IP disponiveis para ser usado no envio de DCCs.<br>Isto "
+#~ "é especialmente util quando se utiliza endereço IPv6 e IPv4. <br>Você "
+#~ "pode forçar o KVirc para sempre escolher um interface IPv4.</center>"
+
+#~ msgid "Listen on address/interface:"
+#~ msgstr "Escutar em um endereço/interface:"
+
+#~ msgid ""
+#~ "<center>This is the IP address or name of the interface to use by default "
+#~ "for outgoing DCC transfers.<br>On UNIX systems that support it, you can "
+#~ "also specify IPv4 interface names (such as <b>ppp0</b>).<br>If you set it "
+#~ "to <b>0.0.0.0</b>, KVIrc will try to use the first available IPv4 "
+#~ "interface</center>"
+#~ msgstr ""
+#~ "<center>Este é o endereço IP ou nome de interface para ser usada por "
+#~ "padrão para envio de transferências DCC. <br>Em sistemas UNIX que "
+#~ "suportam isto, você também pode especificar nomes de interfaces IPv4 "
+#~ "(tais como <b>ppp0</b>).<br>Se você definir para utilizar <b>0.0.0.0</b>, "
+#~ "o KVirc irá tentar usar a primeira interface IPv4 disponível.</center>"
+
+#~ msgid "Use user-defined port range"
+#~ msgstr "Usar intervalo de portas definido"
+
+#~ msgid ""
+#~ "<center>Enable this option if you want specify a local port range for DCC."
+#~ "</center>"
+#~ msgstr ""
+#~ "<center>Ative esta opção se quiser especificar um intervalo de portas "
+#~ "locais para DCC.</center>"
+
+#~ msgid "Lowest port:"
+#~ msgstr "Porta mais baixa:"
+
+#~ msgid "Highest port:"
+#~ msgstr "Porta mais alta:"
+
+#~ msgid ""
+#~ "<center>Enable this option if you want to always send a fake IP address "
+#~ "in your DCC requests.<br>This might be useful if you're behind a router "
+#~ "with a static address that does network address translation (NAT) and "
+#~ "forwards all or a range of ports.</center>"
+#~ msgstr ""
+#~ "<center>Ative esta opção se quiser enviar sempre um endereço IP falso nos "
+#~ "seus pedidos DCC. <br>Isto pode ser útil se estiver atrás de um router "
+#~ "com um endereço estático que faz traduções de endereços de rede (NAT) e "
+#~ "adianta todas ou apenas uma extensão de portas.</center>"
+
+#~ msgid "Send address/interface:"
+#~ msgstr "Enviar endereço/interface:"
+
+#~ msgid ""
+#~ "<center>This is the fixed address that will be sent with all DCC requests "
+#~ "if you enable the option above.</center>"
+#~ msgstr ""
+#~ "<center>Este é o endereço fixo que será enviado a todos os pedidos DCC se "
+#~ "você ativar a opção acima.</center>"
+
+#~ msgid "Guess address from IRC server if unroutable"
+#~ msgstr "Adivinhar o endereço do servidor de IRC se fora de alcance"
+
+#~ msgid ""
+#~ "<center>You can enable this option if you are behind a router that "
+#~ "forwards all or a range of ports.<br>KVIrc will try to guess the IP "
+#~ "address to use for DCC by looking up the local hostname as seen by the "
+#~ "IRC server you're connected to.<br>This method is an exclusive "
+#~ "alternative to the \"fixed address\" above.<br>It might guess the correct "
+#~ "address automatically if certain conditions are met (e.g. the IRC server "
+#~ "does not mask hostnames).</center>"
+#~ msgstr ""
+#~ "<center>Você pode ativar esta opção se estiver atrás de um router que "
+#~ "envia tudo ou um intervalo de portas.<br>O KVirc irá tentar adivinhar o "
+#~ "endereço IP a usar para DCC ao procurar o nome do servidor local como "
+#~ "visto pelo servidor IRC onde está ligado.<br>Este método é uma "
+#~ "alternativa exclusiva ao \"endereço fixo\" indicado.<br>Voc pode "
+#~ "adivinhar automaticamente o endereço correto se verificarem certas "
+#~ "condições(por ex: o servidor de IRC não mascára os nomes dos servidores)."
+#~ "</center>"
+
+#~ msgid "Use \"broken bouncer hack\" to detect address"
+#~ msgstr "Usar \"broken bouncer hack\" para detectar endereços"
+
+#~ msgid ""
+#~ "<center>When you're behind a dialup router and also tunneling through a "
+#~ "psyBNC bouncer, you can use a bug in the bouncer to force KVIrc to bind "
+#~ "the DCC connections to the dialup router's address.<br>It's an ugly hack "
+#~ "- use it only if nothing else works.</center>"
+#~ msgstr ""
+#~ "<center>Quando estiver atrás de um roteador dialup, e também passa "
+#~ "através de um bouncer psyBNC, você pode usar um erro no bouncer para "
+#~ "forçar o KVirc a juntar as ligações DCC ao endereço do modem de onde o "
+#~ "roteador se liga.<br>É um hack feio, use-o apenas se nada mais tiver dado "
+#~ "resultado.</center>"
+
+#~ msgid "Notify failed DCC handshakes to the remote end"
+#~ msgstr "Notificar ao outro extremo as negociações de DCC que falharem"
+
+#~ msgid ""
+#~ "<center>If you enable this option, when a DCC request from a remote user "
+#~ "can't be satisfied KVIrc will notify him by a CTCP ERRMSG. This is a nice "
+#~ "feature so it is a good idea to leave it on unless for some reason you "
+#~ "have deactivated the antiflood system: in this case turning off this "
+#~ "option might help if you often get attacked by CTCP floods.</center>"
+#~ msgstr ""
+#~ "<center>Se ativar esta opção, quando não puder satisfazer um pedido DCC "
+#~ "de um usuário remoto, KVIrc o notificará mediante um CTCP ERRMSG. Esta é "
+#~ "uma característica agradável por isso é uma boa idéia deixa-la ativa a "
+#~ "menos que por alguma razão tenha desativado o sistema antiflood: neste "
+#~ "caso desativar esta opção pode ajudar se você for frequentemente atacado "
+#~ "por CTCP floods</center>"
+
+#~ msgid "Maximum number of DCC sessions"
+#~ msgstr "Número máximo de sessões DCC"
+
+#~ msgid ""
+#~ "<center>This is the maximum number of concurrent DCC sessions and it "
+#~ "includes all the DCC types (send,chat,recv...). KVIrc will refuse the "
+#~ "requests when this limit is reached.</center>"
+#~ msgstr ""
+#~ "<center>Este é o número máximo de sessões DCC simultâneas e inclue todos "
+#~ "os tipos de DCC (envío, chat, recepção...). KVIrc irá recusar os pedidos "
+#~ "quando este límite for alcançado.</center>"
+
+#~ msgid "Open all minimized"
+#~ msgstr "Abrir todos minimizados"
+
+#~ msgid "On Incoming File"
+#~ msgstr "Ao Receber Arquivo"
+
+#~ msgid "Automatically accept"
+#~ msgstr "Aceitar automaticamente"
+
+#~ msgid "Open minimized when auto-accepted"
+#~ msgstr "Abrir minimizado quando aceitar automaticamente"
+
+#~ msgid "Automatically resume when auto-accepted"
+#~ msgstr "Resumir automaticamente quando auto-aceitar"
+
+#~ msgid "Automatically close on completion"
+#~ msgstr "Fechar automaticamente ao completar"
+
+#~ msgid "Notify completion in console"
+#~ msgstr "Notificar no console ao completar"
+
+#~ msgid "Notify completion in notifier"
+#~ msgstr "Notificar a conclusão no notificador"
+
+#~ msgid ""
+#~ "<center>The \"send ahead\" DCC method allows data to be sent faster by "
+#~ "breaking some of the rules of the original DCC SEND protocol "
+#~ "specification.<br>Most clients can handle this kind of optimisation so "
+#~ "disable it only if you have problems.</center>"
+#~ msgstr ""
+#~ "<center>O método DCC \"send ahead\" permite que os dados sejam enviados "
+#~ "rápidamente ao quebrar algumas das regras do protocolo original DCC SEND."
+#~ "<br>Muitos clientes podem tratar este tipo de otimização, então desative-"
+#~ "o apenas se tiver problemas.</center>"
+
+#~ msgid "Guess save path from media type"
+#~ msgstr "Adivinhar o caminho de gravação pelo tipo de mídia"
+
+#~ msgid "Maximum number of DCC transfers"
+#~ msgstr "Número máximo de transferências DCC"
+
+#~ msgid "Download folder:"
+#~ msgstr "Diretório de Download:"
+
+#~ msgid ""
+#~ "<center>This is the maximum number of concurrent DCC transfers. KVIrc "
+#~ "will refuse the requests when this limit is reached.</center>"
+#~ msgstr ""
+#~ "<center>Este é o número máximo de transferências DCC simultâneas. KVIrc "
+#~ "irá recusar os pedidos quando este límite for alcançado.</center>"
+
+#~ msgid "Bug Compatibility"
+#~ msgstr "Compatibilidade de Erro"
+
+#~ msgid "Send ACK for byte 0"
+#~ msgstr "Enviar ACK para o byte 0"
+
+#~ msgid ""
+#~ "<center>This option causes KVIrc to send a zero-byte acknowledge to kick-"
+#~ "start the DCC transfer with some buggy IRC clients.<br>Use it only if "
+#~ "your DCC transfers stall just after establishing a connection without "
+#~ "sending any data.</center>"
+#~ msgstr ""
+#~ "<center>Esta opção fará com que o KVIrc envie um reconhecimento zero-"
+#~ "bytepara iniciar rápidamente transferências DCC com alguns clientes IRC "
+#~ "problemáticos.<br>Utilize-o apenas se sua transferência DCC parar logo "
+#~ "após estabelecer uma conexão sem enviar quaisquer dados.</center> "
+
+#~ msgid "Accept broken RESUME (mIRC file.ext)"
+#~ msgstr "Aceitar RESUME quebrado (arquivo.ext mIRC)"
+
+#~ msgid ""
+#~ "<center>This option causes KVIrc to accept RESUME requests with invalid "
+#~ "filenames.<br>Use it if KVIrc fails to accept RESUME requests from other "
+#~ "clients (e.g. some versions of mIRC).</center>"
+#~ msgstr ""
+#~ "<center>Esta opção faz com que o KVirc aceite pedidos RESUME com arquivos "
+#~ "inválidos.<br>Utilize-o se o KVirc falhar ao aceitar pedido de RESUME de "
+#~ "outros clientes (ex: outras versões do mIRC).</center>"
+
+#~ msgid "Speed limits"
+#~ msgstr "Limtes de velocidade"
+
+#~ msgid "Limit upload bandwidth to"
+#~ msgstr "Limitar a largura de banda de envio para"
+
+#~ msgid "bytes/sec"
+#~ msgstr "bytes/sec"
+
+#~ msgid "Limit download bandwidth to"
+#~ msgstr "Limitar a largura de banda de recebimento para"
+
+#~ msgid "Packet size:"
+#~ msgstr "Tamanho dos pacotes:"
+
+#~ msgid ""
+#~ "<center>This parameter controls the packet size used for DCC SEND."
+#~ "<br>With bigger packets you will be probably send data faster, but you "
+#~ "will also saturate your bandwidth and in some cases cause more disk "
+#~ "activity.<br>Reasonable values are from 512 to 4096 bytes.</center>"
+#~ msgstr ""
+#~ "<center>Este parâmetro controla o tamanho do pacote usado para o DCC "
+#~ "SEND. <br>Com pacotes maiores irá provavelmente enviar dados rápidamente, "
+#~ "mas também irá saturar a largura de banda e em alguns casos causar mais "
+#~ "atividade em disco.<br>Os valores razoáveis vão de 512 a 4096 bytes.</"
+#~ "center>"
+
+#~ msgid "Force idle step"
+#~ msgstr "Forçar Inatividade"
+
+#~ msgid ""
+#~ "<center>Enable this option when the dcc file transfers tend to block your "
+#~ "computer by consuming too much CPU time. When this option is enabled the "
+#~ "idle interval below will be forcibly inserted between each sent/received "
+#~ "data packet.</center>"
+#~ msgstr ""
+#~ "<center>Ative esta opção quando a transferência de arquivos por DCC tenda "
+#~ "a bloquear o seu computador ao consumir demasiadamente o tempo da CPU. "
+#~ "Quando esta opção está ativa o intervalo de inatividade será forçadamente "
+#~ "inserido entre os pacotes de dados enviados/recebidos.</center>"
+
+#~ msgid "Idle interval:"
+#~ msgstr "Intervalo de inatividade:"
+
+#~ msgid ""
+#~ "<center>This parameter controls the average delay between two packets "
+#~ "sent or received.<br>A smaller interval will cause you to send data "
+#~ "faster but will also add load to your CPU, disk and network interface."
+#~ "<br>Reasonable values are from 5 to 50 milliseconds.</center>"
+#~ msgstr ""
+#~ "<center>Este parâmetro controla a média de atraso entre dois pacotes "
+#~ "enviados ou recebidos.<br>Um intervalo pequeno faz com que dados sejam "
+#~ "enviados mais rápidamente mas também adiciona carga à CPU, ao disco e a "
+#~ "interface da rede.<br>Valores razoáveis vão de 5 a 50 milisegundos.</"
+#~ "center>"
+
+#~ msgid "Use fast send (send ahead)"
+#~ msgstr "Usar envio rápido (send ahead)"
+
+#~ msgid "On Chat Request"
+#~ msgstr "Em Pedido de Chat"
+
+#~ msgid "On Voice Request"
+#~ msgstr "Em Pedido de Voice"
+
+#~ msgid "Force half-duplex mode on sound device"
+#~ msgstr "Forçar modo Half-duplex no dispositivo de som"
+
+#~ msgid "Volume slider controls PCM, not Master"
+#~ msgstr "Controle de Volume PCM, não Master"
+
+#~ msgid "Sound device:"
+#~ msgstr "Dispositivo de som:"
+
+#~ msgid "Mixer device:"
+#~ msgstr "Dispositivo misturador:"
+
+#~ msgid "Pre-buffer size:"
+#~ msgstr "Tamanho do Pre-buffer:"
+
+#~ msgid "Avatar Download - KVIrc"
+#~ msgstr "Transferência de Avatar - KVIrc"
+
+#~ msgid "<center>Please wait while the avatar is being downloaded</center>"
+#~ msgstr ""
+#~ "<center>Por favor aguarde enquanto o avatar esta sendo transferido</"
+#~ "center>"
+
+#~ msgid "Abort"
+#~ msgstr "Abortar"
+
+#~ msgid "Failed to start the download"
+#~ msgstr "Falhou ao iniciar a transferência"
+
+#~ msgid "Download aborted by user"
+#~ msgstr "Transferência cancelada pelo usuário"
+
+#, fuzzy
+#~ msgid "Hide avatars in userlist"
+#~ msgstr "Usar avatar"
+
+#~ msgid "Use avatar"
+#~ msgstr "Usar avatar"
+
+#~ msgid "Failed to Load Avatar - KVIrc"
+#~ msgstr "Falhou ao carregar o avatar - KVIrc"
+
+#~ msgid ""
+#~ "Failed to load the avatar image.<br>It may be an unaccessible file or an "
+#~ "unsupported image format."
+#~ msgstr ""
+#~ "Falhou ao carregar a imagem de avatar.<br>Pode ser um arquivo inacessível "
+#~ "ou um formato de imagem não suportado."
+
+#~ msgid "Failed to download the avatar image.<br><b>%Q</b>"
+#~ msgstr "Falhou o download da imagem de avatar.<br><b>%Q</b>"
+
+#~ msgid "Avatar Download Failed - KVIrc"
+#~ msgstr "Houve um erro no download do avatar - KVIrc"
+
+#, fuzzy
+#~ msgid "Scaling"
+#~ msgstr "Scripting"
+
+#~ msgid "Scale avatar images (recommended)"
+#~ msgstr "Dimensionar imagens avatar (recomendado)"
+
+#~ msgid ""
+#~ "<center>This option will force KVIrc to scale avatars shown in the "
+#~ "userlist.<br>Avatars will be scaled to fit the constraints set below. "
+#~ "Better keep this option on. :)</center>"
+#~ msgstr ""
+#~ "<center>Esta opção obrigará o KVIrc a dimensionar os avatares exibidos na "
+#~ "lista de usuários.<br>Os Avatares serão dimensionados para caber nos "
+#~ "limites definidos abaixo. Melhor deixar esta opção ativada. :)</center>"
+
+#~ msgid "Image width:"
+#~ msgstr "Largura da Imagem:"
+
+#~ msgid "Image height:"
+#~ msgstr "Altura da Imagem:"
+
+#, fuzzy
+#~ msgid "Request CTCP"
+#~ msgstr "Pedir Lista"
+
+#~ msgid "Request missing avatars"
+#~ msgstr "Requisitar avatars que faltam"
+
+#~ msgid "Maximum requested file size:"
+#~ msgstr "Tamanho máximo do arquivo pedido:"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to send a DCC GET request when "
+#~ "someone sets an avatar and there is no cached copy available.</center>"
+#~ msgstr ""
+#~ "<center>Esta opção faz com que o KVIrc envie um pedido de DCC GET quando "
+#~ "alguém tiver um avatar sem uma cópia disponível armazenada .</center>"
+
+#~ msgid ""
+#~ "<center>This is the maximum size for avatar images that will be "
+#~ "automatically requested.<br>A reasonable value might be 102400 bytes (100 "
+#~ "K).</center>"
+#~ msgstr ""
+#~ "<center>Este é o tamanho máximo para imagens avatar que serão "
+#~ "automaticamente requisitadas.<br>Um valor razoável pode ser de 102400 "
+#~ "bytes (100 K).</center>"
+
+#~ msgid "Automatically accept incoming avatars"
+#~ msgstr "Aceitar automaticamente avatars"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to auto-accept DCC SEND requests for "
+#~ "incoming avatars.<br>If you're using the \"Request missing avatars\" "
+#~ "option above, enabling this may by useful.<br>Avatars will be saved in "
+#~ "the local KVIrc directory.</center>"
+#~ msgstr ""
+#~ "<center>Esta opção irá fazer com que o KVirc auto aceite pedidos DCC SEND "
+#~ "para avatars. <br>Se estiver usando a opção \"Pedir avatars que faltam\", "
+#~ "ativar isto pode ser útil.<br> Os avatars serão gravados na diretório "
+#~ "KVIrc local .</center>"
+
+#, fuzzy
+#~ msgid "Remember avatars for registered users"
+#~ msgstr "Armazenar avatar para usuários registados"
+
+#~ msgid ""
+#~ "<center>Use a user's last known avatar by default (only for users that "
+#~ "are registered).</center>"
+#~ msgstr ""
+#~ "<center>Utilize o último avatar conhecido do usuário por padrão (somente "
+#~ "para usuários registados).</center>"
+
+#~ msgid "Avatar offer timeout:"
+#~ msgstr "Tempo límite de compartilhamento do Avatar:"
+
+#~ msgid ""
+#~ "<center>This is the amount of time to make an avatar available for "
+#~ "transfer when requested.<br>When someone sends a CTCP AVATAR request, "
+#~ "KVIrc will reply with a CTCP AVATAR message containing the name and size "
+#~ "of your avatar image.<br>A time-limited file offer is added for the image "
+#~ "file to the requesting user.</center>"
+#~ msgstr ""
+#~ "<center>Este é o límite de tempo para colocar um avatar disponível para "
+#~ "transferência, quando pedido. <br>Quando alguém envia um pedido de CTCP "
+#~ "AVATAR, o KVirc irá responder com uma mensagem CTCP AVATAR que contenha o "
+#~ "nome e o tamanho da sua imagem avatar.<br> Será adicionado um tempo "
+#~ "límite de envio do arquivo de imagem para o usuário em questão.</center>"
+
+#~ msgid "Ignore requests if no avatar is set"
+#~ msgstr "Ignorar pedidos se nenhum avatar estiver definido"
+
+#~ msgid ""
+#~ "This option will cause KVIrc to ignore channel CTCP AVATAR requests when "
+#~ "you have no avatar set. This is usually a good practice since it helps in "
+#~ "reducing traffic by not sending a reply that would be empty."
+#~ msgstr ""
+#~ "Esta opção faz com que o KVirc ignore um pedido de canal CTCP AVATAR "
+#~ "quando não tiver nenhum avatar definido. Geralmente isto é uma boa "
+#~ "prática já que ajuda a reduzir o tráfego ao não enviar uma resposta que "
+#~ "estaria vazia."
+
+#~ msgid "Network Details"
+#~ msgstr "Detalhes da Rede"
+
+#~ msgid "<center>Put here a brief description of the network.</center>"
+#~ msgstr "<center>Digite aqui uma breve descrição da rede</center>"
+
+#~ msgid ""
+#~ "<center>This is the <b>username</b> that KVIrc will use to login to "
+#~ "servers on this network.\n"
+#~ "If this field is left empty (most common case), KVIrc will use the "
+#~ "default username specified in the \"Identity\" options tab.</center>"
+#~ msgstr ""
+#~ "<center>Este é o <b>nome de usuário</b> que o KVirc irá utilizar para "
+#~ "entrar nos servidores desta rede.\n"
+#~ "Se este campo for deixado vazio, o KVirc irá usar o nome de usuário "
+#~ "padrão especificado nas opções de \"Identidade\".</center>"
+
+#~ msgid ""
+#~ "<center>You can specify a \"special\" <b>nickname</b> that will be used "
+#~ "to log in to the servers on this network.<br>If this field is left empty "
+#~ "(most common case), the default nickname (specified in the \"Identity\" "
+#~ "settings) will be used.</center>"
+#~ msgstr ""
+#~ "<center>Pode especificar um <b>Apelido</b> \"especial\" que será usado "
+#~ "para entrar nos servidores desta rede.<br>Se este campo for deixado vazio "
+#~ "(caso mais comum), o nick padrão (especificado nas configurações de "
+#~ "\"Identidade\") será usado.</center>"
+
+#~ msgid ""
+#~ "<center>You can specify a \"special\" <b>real name</b> that will be used "
+#~ "to login with the servers on this network.<br>If you leave this field "
+#~ "empty (most common case), the default \"real name\" (specified in the "
+#~ "\"Identity\" settings) will be used.</center>"
+#~ msgstr ""
+#~ "<center>Pode especificar um <b>nome real</b> \"especial\" que irá ser "
+#~ "usado para entrar nos servidores desta rede.<br>Se deixar este campo "
+#~ "vazio (caso mais comum), o \"nome real\" padrão (especificado nas "
+#~ "configurações de \"Identidade\") será usado.</center>"
+
+#~ msgid "Encoding:"
+#~ msgstr "Codificação:"
+
+#~ msgid ""
+#~ "<center>This box allows you to choose the preferred encoding for the "
+#~ "servers in this network. If you choose \"Use System Encoding\" then the "
+#~ "encoding will be set to the systemwide value that you choose in the "
+#~ "\"Encoding\" page of the options dialog.</center>"
+#~ msgstr ""
+#~ "<center>Esta caixa permite-lhe escolher a codificação preferida para os "
+#~ "servidores desta rede. Se você escolher \"Usar Codificação do Sistema\" "
+#~ "então a codificação irá ser definida para o valor global do sistema que "
+#~ "você escolheu no diálogo de opções da página de \"Codificação\".</center>"
+
+#, fuzzy
+#~ msgid "Connect to this network at startup"
+#~ msgstr "Conectar ao servidor ao iniciar"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to automatically connect to this "
+#~ "network at startup</center>"
+#~ msgstr ""
+#~ "<center>Esta opção fará com que o KVIrc conecte ao servidor de IRC quando "
+#~ "for iniciado.</center>"
+
+#~ msgid "Channels to join automatically upon connect:"
+#~ msgstr "Canais para entrar automaticamente ao conectar:"
+
+#~ msgid ""
+#~ "<center>Here you can set a list of channels to be joined automatically "
+#~ "after a connection to a server in this network has been established. To "
+#~ "add a channel, type its name in the text input below and click \"<b>Add</"
+#~ "b>\".</center>"
+#~ msgstr ""
+#~ "<center>Aqui você pode definir a lista de canais para entrar "
+#~ "automaticamente após a conexão com um servidor desta rede estiver "
+#~ "estabelecida. Para adicionar um canal, escreva o seu nome na entrada de "
+#~ "texto abaixo e clique \"<b>Adicionar</b>\".</center>"
+
+#~ msgid ""
+#~ "<center>The following commands will be executed after a connection to a "
+#~ "server in this network has been established.<br><b>Important:</b> Enter "
+#~ "commands <b>without</b> a preceding slash (e.g. <tt>quote pass secret</"
+#~ "tt> instead of <tt>/quote pass secret</tt>).<br>KVIrc will first send the "
+#~ "USER command, then eventually PASS and NICK and then execute this command "
+#~ "sequence.</center>"
+#~ msgstr ""
+#~ "<center>Os seguintes comandos serão executados após a conexão com um "
+#~ "servidor for estabelecida.<br><b>Importante:</b> Indique os comandos "
+#~ "<b>sem</b> uma barra precedente (p.ex.<tt>quote pass secret</tt> em vez "
+#~ "de <tt>/quote pass secret</tt>).<br>O KVirc primeiro enviará o comando "
+#~ "USER, depois eventualmente PASS e NICK e então executar esta sequência de "
+#~ "comandos.<br>Isto é particularmente útil para bouncers IRC que requerem "
+#~ "comandos de entrada.</center>"
+
+#~ msgid "On Connect"
+#~ msgstr "Em Conexão"
+
+#~ msgid ""
+#~ "<center>The following commands will be executed after a successful login "
+#~ "to a server in this network.<br><b>Important:</b> Enter commands "
+#~ "<b>without</b> a preceding slash (e.g. <tt>quote privatelog</tt> instead "
+#~ "of <tt>/quote privatelog</tt>).<br>This is useful for automatically "
+#~ "opening queries, setting variables, etc.</center>"
+#~ msgstr ""
+#~ "<center>Os seguintes comandos irão ser executados após uma entrada bem "
+#~ "sucedida neste servidor.<br><b>Importante:</b> Digitar comandos <b>sem</"
+#~ "b> barra precedente (p.ex. <tt>quote privatelog</tt> em vez de <tt>/quote "
+#~ "privatelog</tt>).<br>Isto é útil para automaticamente abrir queries, "
+#~ "definir variáveis, etc.</center>"
+
+#~ msgid "On Login"
+#~ msgstr "Em Login"
+
+#~ msgid ""
+#~ "<center>This is a list of NickServ identification rules. KVIrc will use "
+#~ "them to model its automatic interaction with NickServ on this network."
+#~ "<br>Please be aware that this feature can cause your NickServ passwords "
+#~ "to be stolen if used improperly. Make sure that you fully understand the "
+#~ "NickServ authentication protocol.<br>In other words, be sure to know what "
+#~ "you're doing.<br>Also note that the password that you provide is stored "
+#~ "as <b>PLAIN TEXT</b>.</center>"
+#~ msgstr ""
+#~ "<center>Esta é a lista das regras de identificação do NickServ. O KVirc "
+#~ "irá utilizá-las para modelar a sua interacção automática com o NickServ."
+#~ "<br>Por favor tenha atenção porque esta característica pode causar o "
+#~ "roubo da sua senha do NickServ se for utilizada inaprópriadamente. "
+#~ "Certifique-se que compreendeu completamente o protocolo de autenticação "
+#~ "do NickServ. <br>Em outras palavras, tenha a certeza do que fazendo."
+#~ "<br>Note também que a senha que você forneceu é salva como<b>TEXTO "
+#~ "SIMPLES</b></center>"
+
+#~ msgid "Server Details"
+#~ msgstr "Detalhes do Servidor"
+
+#~ msgid ""
+#~ "<center>This is a brief description of this server. This field has no "
+#~ "restrictions but many server lists use it to describe the server's "
+#~ "physical location</center>"
+#~ msgstr ""
+#~ "<center>Esta é uma breve descrição deste servidor. Este campo não tem "
+#~ "nenhuma restrição, mas muitas listas de servidores usam-no para descrever "
+#~ "a posição física dos servidores</center>"
+
+#~ msgid ""
+#~ "<center>This is the <b>username</b> that KVIrc will use to login to this "
+#~ "server.\n"
+#~ "If this field is left empty (most common case), KVIrc will first look if "
+#~ "an username is specified for the network that this server belongs to, and "
+#~ "if that is empty then KVIrc will use the default username specified in "
+#~ "the \"Identity\" options tab.</center>"
+#~ msgstr ""
+#~ "<center>Este é o <b>nome de usuário</b> que o KVirc irá usar para entrar "
+#~ "neste servidor.\n"
+#~ "Se este campo estiver vazio, o KVirc irá primeiro procurar se um nome de "
+#~ "usuário está especificado para a rede que este servidor pertence, e se "
+#~ "estiver vazio então o KVirc irá usar o nome de usuário padrão "
+#~ "especificado nas opções de \"Identidade\".</center>"
+
+#~ msgid ""
+#~ "<center>If this server requires a password, put it in this field, "
+#~ "otherwise leave it empty.</center>"
+#~ msgstr ""
+#~ "<center>Se este servidor requer uma senha, insira-a neste campo, se não "
+#~ "deixe-o vazio.</center>"
+
+#~ msgid ""
+#~ "<center>You can specify a \"special\" <b>nickname</b> that will be used "
+#~ "to log in to this server.<br>If this field is left empty (most common "
+#~ "case), KVIrc will first look if a nickname is specified for the network "
+#~ "that this server belongs to, and if that is empty then the default "
+#~ "nickname (specified in the \"Identity\" settings) will be used.</center>"
+#~ msgstr ""
+#~ "<center>Você pode especificar um <b>Apelido</b> \"especial\" que será "
+#~ "utilizado para entrar neste servidor.<br>Se deixar este campo vazio (caso "
+#~ "mais comum), o KVirc irá primeiro procurar se um apelido está "
+#~ "especificado para a rede que este servidor pertence, e se estiver vazio o "
+#~ "Apelido padrão (especificado nas configuraçoes de \"Identidade\") será "
+#~ "usado.</center>"
+
+#~ msgid ""
+#~ "<center>You can specify a \"special\" <b>real name</b> that will be used "
+#~ "to login with this server.<br>If you leave this field empty (most common "
+#~ "case), KVIrc will first look if a real name is specified for the network "
+#~ "that this server belongs to, and if that is empty the default \"real name"
+#~ "\" (specified in the \"Identity\" settings) will be used.</center>"
+#~ msgstr ""
+#~ "<center>Pode especificar um <b>nome real</b> \"especial\" que será "
+#~ "utilizado para entrar neste servidor.<br>Se deixar este campo vazio (caso "
+#~ "mais comum), o KVirc irá primeiro procurar se um nome real está "
+#~ "especificado para a rede que este servidor pertence, e se estiver vazio o"
+#~ "\"nome real\" padrão (especificado nas configurações de \"Identidade\") "
+#~ "será usado.</center>"
+
+#~ msgid "Use default user mode"
+#~ msgstr "Usar modo de usuário padrão"
+
+#~ msgid ""
+#~ "<center>If this is enabled, the global initial <b>user mode</b> "
+#~ "(configured from the identity dialog) will be used. If disabled, you can "
+#~ "configure an initial user mode for this server"
+#~ msgstr ""
+#~ "<center>Se isto for habilitado, o <b>modo de usuário</b> global inicial "
+#~ "(configurarado no diálogo de identificação) será usado. Se estiver "
+#~ "desabilitado, você pode configurarar um modo de usuário inicial para este "
+#~ "servidor."
+
+#~ msgid ""
+#~ "<center>This is the <b>IP address</b> of this server, it is here for "
+#~ "caching purposes.<br>If you leave this field empty, KVIrc will fill it in "
+#~ "the first time it connects to the server. If you enable the \"cache IP "
+#~ "address\" option below, KVIrc will use it as a \"cached result\" and "
+#~ "avoid looking it up again.</center>"
+#~ msgstr ""
+#~ "<center>Este é o <b>endereço IP</b> deste servidor, ele está aqui para "
+#~ "ser armazenado.<br>Se este campo estiver vazio, o KVIrc irá preenchê-lo "
+#~ "na primeira vez que conectar ao servidor. Se você habilitar o "
+#~ "\"armazenamento do endereço IP\" na opção abaixo, o KVIrc irá utilizá-lo "
+#~ "como \"resultado de armazenamento\" e evitará de pesquisá-lo outra vez.</"
+#~ "center>"
+
+#~ msgid "Cache IP address"
+#~ msgstr "Armazenar endereço IP"
+
+#~ msgid ""
+#~ "<center>This check will enable <b>IP address caching</b> for this server:"
+#~ "<br>DNS lookups can be time-consuming and might be blocking on some "
+#~ "platforms; this option will cause KVIrc to look up the server hostname "
+#~ "only once.<br><br> Advanced: you can also use this option to force a "
+#~ "certain server name to resolve to a fixed ip address when either the dns "
+#~ "for that server is temporairly unreachable or you want to avoid the round-"
+#~ "robin lookups.</center>"
+#~ msgstr ""
+#~ "<center>Esta caixa irá ativar o <b>armazenamento do endereço IP</b> para "
+#~ "este servidor:<br> As procuras de DNS podem consumir muito tempo e também "
+#~ "estarbloqueando em algumas plataformas; esta opção irá fazer com que o "
+#~ "KVirc procure o nome de máquina do servidor apenas uma vez."
+#~ "<br><br>Avançado: você também pode usar esta opção para forçar um certo "
+#~ "nome de servidor a resolver para um endereço IP fixo quando o dns para "
+#~ "esse servidor estiver temporariamente indisponível ou quiser evitar uma "
+#~ "procura demorada.</center>"
+
+#~ msgid "Use SSL protocol"
+#~ msgstr "Usar protocolo SSL"
+
+#~ msgid ""
+#~ "<center>This check will cause the connection to use the <b>Secure Socket "
+#~ "Layer</b> encryption support. Obviously, this server must have support "
+#~ "for this, too. :)</center>"
+#~ msgstr ""
+#~ "<center>Esta opção obrigará a utilização do suporte de cripitografia do "
+#~ "<b>Secure Socket Layer</b> na conexão. Obviamente, este servidor deve ter "
+#~ "suporte também. :)</center>"
+
+#~ msgid "Connect to this server at startup"
+#~ msgstr "Conectar ao servidor ao iniciar"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to connect to the IRC server when it "
+#~ "is started.</center>"
+#~ msgstr ""
+#~ "<center>Esta opção fará com que o KVIrc conecte ao servidor de IRC quando "
+#~ "for iniciado.</center>"
+
+#~ msgid ""
+#~ "<center>This box allows you to choose the preferred encoding for this "
+#~ "sever. If you choose \"Use Network Encoding\" then the encoding will be "
+#~ "inherited from the network that this server belongs to.</center>"
+#~ msgstr ""
+#~ "<center>Esta caixa lhe permite escolher a codificação preferida para este "
+#~ "servidor. Se você escolher \"Usar Codificação da Rede\" então a "
+#~ "codificação será herdada da rede que este servidor pertence.</center>"
+
+#~ msgid "Use Network Encoding"
+#~ msgstr "Usar Codificação da Rede"
+
+#~ msgid "Link filter:"
+#~ msgstr "Filtro de link:"
+
+#~ msgid ""
+#~ "<center>This field specifies the name of a module that exports a link "
+#~ "filter for this type of server.<br>For plain IRC connections, you don't "
+#~ "need any link filters; this is used for incompatible protocols.</center>"
+#~ msgstr ""
+#~ "<center>Este campo especifica o nome de um módulo que exporte um filtro "
+#~ "de link para este tipo de servidor.<br>Para conexões normais de IRC, você "
+#~ "não precisa de nenhum filtro de link; isto é usado para protocolos "
+#~ "incompatíveis.</center>"
+
+#, fuzzy
+#~ msgid "Id:"
+#~ msgstr "Id"
+
+#, fuzzy
+#~ msgid "Proxy server:"
+#~ msgstr "Copiar Servidor"
+
+#, fuzzy
+#~ msgid "Direct connection"
+#~ msgstr "conexão segura"
+
+#~ msgid ""
+#~ "<center>Here you can set a list of channels to be joined automatically "
+#~ "after a connection to this server has been established. To add a channel, "
+#~ "type its name in the text input below and click \"<b>Add</b>\".</center>"
+#~ msgstr ""
+#~ "<center>Aqui você pode configurar uma lista de canais para entrar "
+#~ "automaticamente após que a conexão com este servidor for estabelecida. "
+#~ "Para adicionar um canal, digite seu nome na caixa de texto abaixo e "
+#~ "clique em \" <b>Adicionar</b> \".</center>"
+
+#~ msgid ""
+#~ "<center>The following commands will be executed after a connection has "
+#~ "been established.<br><b>Important:</b> Enter commands <b>without</b> a "
+#~ "preceding slash (e.g. <tt>quote pass secret</tt> instead of <tt>/quote "
+#~ "pass secret</tt>).<br>KVIrc will first send the USER command, then "
+#~ "eventually PASS and NICK and then execute this command sequence.<br>This "
+#~ "is particularly useful for IRC bouncers that require login commands.</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Os seguintes comandos serão executados depois que uma conexão for "
+#~ "estabelecida.<br><b>Importante:</b> Digite os comandos <b>sem</b> uma "
+#~ "barra precedente (ex: <tt>quote pass secret</tt> ao invés de <tt>/"
+#~ "quotepass secret</tt>).<br> O KVIrc primeiramente eviará um comando USER, "
+#~ "então eventualmente PASS e NICK executando então esta seqüência de "
+#~ "comandos. Isto é particularmente útil para os bouncers de IRC que "
+#~ "requerem comandos no início de uma sessão.</center>"
+
+#~ msgid ""
+#~ "<center>The following commands will be executed after a successful login "
+#~ "to this server.<br><b>Important:</b> Enter commands <b>without</b> a "
+#~ "preceding slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote "
+#~ "privatelog</tt>).<br>This is useful for automatically opening queries, "
+#~ "setting variables, etc.</center>"
+#~ msgstr ""
+#~ "<center>Os seguintes comandos serão executados depois que se tiver "
+#~ "iniciado corretamente uma sessão com este servidor.<br><b>Importante:</b> "
+#~ "Digite os comandos <b>sem</b> uma barra precedente (ex:. <tt>quote "
+#~ "privatelog</tt> ao invés de <tt>/quote privatelog</tt>).<br>Isto é útil "
+#~ "para abrir queries automaticamente, inicializar variáveis, etc.</center>"
+
+#~ msgid "Server"
+#~ msgstr "Servidor"
+
+#~ msgid ""
+#~ "<center>This is the list of available IRC servers.<br>Right-click on the "
+#~ "list to add or remove servers and perform other actions.<br>Double-click "
+#~ "on a item for advanced options.</center>"
+#~ msgstr ""
+#~ "<center>Esta é a lista de servidores IRC disponíveis.<br>Clique duas "
+#~ "vezes na lista para adicionar ou remover servidores e realizar outras "
+#~ "ações.<br>Clique duas vezes em um elemento para exibir as opções "
+#~ "avançadas.</center>"
+
+#~ msgid "New Network"
+#~ msgstr "Nova Rede"
+
+#~ msgid "New Server"
+#~ msgstr "Novo Servidor"
+
+#~ msgid "Remove Network/Server"
+#~ msgstr "Remover Rede/Servidor"
+
+#~ msgid "Paste Server"
+#~ msgstr "Colar Servidor"
+
+#~ msgid "Import List"
+#~ msgstr "Importar Lista"
+
+#~ msgid ""
+#~ "<center>This is the name of the currently selected server or network</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Este é o nome do servidor ou da rede atualmente selecionado.</"
+#~ "center>"
+
+#~ msgid ""
+#~ "<center>This check identifies IPv6 servers.<br>If enabled, KVIrc will "
+#~ "attempt to use the IPv6 protocol (thus your OS <b>must</b> have a working "
+#~ "IPv6 stack and you <b>must</b> have an IPv6 connection).</center>"
+#~ msgstr ""
+#~ "<center>Esta opção identifica os servidores IPv6.<br>Se estiver "
+#~ "habilitada, o KVIrc tentará usar o protocólo IPv6 (seu S.O. <b>deve</b> "
+#~ "ter uma pila IPv6 funcionando e <b>deve</b> ter uma conexão IPv6).</"
+#~ "center>"
+
+#~ msgid ""
+#~ "<center>This is the default <b>port</b> that this server will be "
+#~ "contacted on.<br>Usually <b>6667</b> is OK.</center>"
+#~ msgstr ""
+#~ "<center>Esta é a <b>porta</b> padrão em que este servidor será contactado."
+#~ "<br>Geralmente, <b>6667</b> é a correta.</center>"
+
+#~ msgid "<center>Click here to edit advanced options for this entry</center>"
+#~ msgstr ""
+#~ "<center>Clique aqui para editar as opções avançadas para esta entrada</"
+#~ "center>"
+
+#~ msgid "Connect &Now"
+#~ msgstr "Co&nectar Agora"
+
+#~ msgid ""
+#~ "<center>Hit this button to connect to the currently selected server.</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Aperte este botão para conectar ao servidor atualmente "
+#~ "selecionado.</center>"
+
+#~ msgid ""
+#~ "<center>This button shows a list of recently used servers. It allows you "
+#~ "to quickly find them in the list.</center>"
+#~ msgstr ""
+#~ "<center>Este botão exibe a lista de servidores usados recentemente. Isto "
+#~ "permite que você encontre-os rapidamente na lista..</center>"
+
+#~ msgid "Show this dialog at startup"
+#~ msgstr "Exibir esta janela ao iniciar"
+
+#~ msgid ""
+#~ "<center>If this option is enabled, the Servers dialog will appear every "
+#~ "time you start KVIrc</center>"
+#~ msgstr ""
+#~ "<center>Se esta opção estiver habilitada, a Janela de Servidores "
+#~ "aparecerá toda vez que você executar o KVIrc</center>"
+
+#~ msgid "Network:"
+#~ msgstr "Rede:"
+
+#~ msgid "No selection"
+#~ msgstr "Sem Seleção"
+
+#~ msgid "UnknownNet"
+#~ msgstr "RedeDesconhecida"
+
+#~ msgid "Remove Network"
+#~ msgstr "Remove Rede"
+
+#~ msgid "&New Server"
+#~ msgstr "&Novo Servidor"
+
+#~ msgid "Re&move Server"
+#~ msgstr "Re&mover Servidor"
+
+#~ msgid "&Copy Server"
+#~ msgstr "&Copiar Servidor"
+
+#~ msgid "&Paste Server"
+#~ msgstr "&Colar Servidor"
+
+#~ msgid "Clear List"
+#~ msgstr "Limpar Lista"
+
+#~ msgid ""
+#~ "Oops... something weird happened:<br>Can't find any module capable of "
+#~ "importing servers."
+#~ msgstr ""
+#~ "Oopa... algo estranho aconteceu:<br>Não foi possível encontrar um módulo "
+#~ "responsável pela importação dos servidores."
+
+#~ msgid ""
+#~ "Oops... something weird happened:<br>Can't find the module that was "
+#~ "capable of this import action. :("
+#~ msgstr ""
+#~ "Oopa... algo estranho aconteceu:<br>Não foi possível encontrar um módulo "
+#~ "responsável por esta ação de importação."
+
+#~ msgid "irc.unknown.net"
+#~ msgstr "irc.desconhecido.net"
+
+#~ msgid ""
+#~ "This table contains the text icon associations.<br>KVirc will use them to "
+#~ "display the CTRL+I escape sequences and eventually the emoticons."
+#~ msgstr ""
+#~ "Esta tabela contém as associações de ícones de texto.<br>O KVIrc os "
+#~ "utilizará para visualizar às sequências de escape CTRL+I e eventualmente "
+#~ "os ícones emotivos."
+
+#~ msgid "Sound System"
+#~ msgstr "Sistema de Som"
+
+#~ msgid "This allows you to select the sound system to be used with KVIrc."
+#~ msgstr ""
+#~ "Isto permite a você selecionar o sistema de som para ser usado com o "
+#~ "KVIrc."
+
+#~ msgid "Auto-detect"
+#~ msgstr "Auto-detectar"
+
+#~ msgid "Media Player"
+#~ msgstr "Leitor Multimedia"
+
+#~ msgid ""
+#~ "This allows you to select the preferred media player to be used with the "
+#~ "mediaplayer.* module commands and functions."
+#~ msgstr ""
+#~ "Isto permite a você selecionar seu leitor de multimédia preferido para "
+#~ "ser usado com os comandos e funções do módulo mediaplayer.*."
+
+#, fuzzy
+#~ msgid "This allows you to select encoding of mp3 tags."
+#~ msgstr ""
+#~ "Isto permite a você selecionar o sistema de som para ser usado com o "
+#~ "KVIrc."
+
+#, fuzzy
+#~ msgid "This allows you to select encoding of winamp messages."
+#~ msgstr ""
+#~ "Isto permite a você selecionar o sistema de som para ser usado com o "
+#~ "KVIrc."
+
+#, fuzzy
+#~ msgid ""
+#~ "<center><b>Settings for CTCP.</b></center><p>The <b>Client-To-Client "
+#~ "Protocol</b> (CTCP) is used to transmit special control messages over an "
+#~ "IRC connection. These messages can request information from clients or "
+#~ "negotiate file transfers.<br><br></p>"
+#~ msgstr ""
+#~ "<center><b>Esta seção contém as configurações para CTCP</b></"
+#~ "center><br><br><p>O <b>Protocolo Cliente-Para-Cliente</b> (CTCP) é usado "
+#~ "para transmitir mensagens especias de controle em uma conexão IRC. Estas "
+#~ "mensagens podem pedir informação de clientes ou negociar transferências "
+#~ "de arquivos.</p>"
+
+#, fuzzy
+#~ msgid "CTCP Replies"
+#~ msgstr "Respostas"
+
+#~ msgid "Append to VERSION reply:"
+#~ msgstr "Anexar à resposta VERSION:"
+
+#~ msgid ""
+#~ "<center>This text will be appended to the CTCP VERSION reply.<br>For "
+#~ "example, you can place a script name here.</center>"
+#~ msgstr ""
+#~ "<center>Este texto será anexado à resposta CTCP VERSION. <br>Por exemplo, "
+#~ "você pode substituir o nome do script aqui.</center>"
+
+#~ msgid "Append to SOURCE reply:"
+#~ msgstr "Anexar à resposta SOURCE:"
+
+#~ msgid ""
+#~ "<center>This text will be appended to the CTCP SOURCE reply.<br>For "
+#~ "example, you can place the source URL for a script here.</center>"
+#~ msgstr ""
+#~ "<center>Este texto será anexado à resposta CTCP SOURCE. <br>Por exemplo, "
+#~ "pode substituir aqui a URL da origem de um script.</center>"
+
+#~ msgid "USERINFO reply:"
+#~ msgstr "Resposta USERINFO:"
+
+#~ msgid ""
+#~ "<center>This is the CTCP USERINFO reply.<br>It can contain some "
+#~ "information about yourself.</center>"
+#~ msgstr ""
+#~ "<center>Esta é a resposta CTCP USERINFO. <br>Pode conter alguma "
+#~ "informação sobre você mesmo.</center>"
+
+#~ msgid "PAGE reply:"
+#~ msgstr "Resposta PAGE:"
+
+#~ msgid ""
+#~ "<center>This is the CTCP PAGE reply.<br>It should contain some sort of "
+#~ "acknowledgement for CTCP PAGE messages.</center>"
+#~ msgstr ""
+#~ "<center>Esta é a resposta CTCP PAGE. <br>Deve conter algum tipo de "
+#~ "reconhecimento para mensagens CTCP PAGE.</center>"
+
+#~ msgid "Show the CTCP replies in the active window"
+#~ msgstr "Exibe as respostas CTCP na janela ativa"
+
+#~ msgid "Show dialog for CTCP page requests"
+#~ msgstr "Exibir janela de dialogo para pedidos de CTCP page"
+
+#~ msgid "Module '%s', Command '%s'"
+#~ msgstr "Modulo '%s', Comando '%s'"
+
+#~ msgid "Can't rebind the command: window with id %s not found"
+#~ msgstr "Não foi possível religar o comando: janela com id %s não encontrado"
+
+#~ msgid ""
+#~ "Can't rebind the command: missing window identifier after the -r switch"
+#~ msgstr ""
+#~ "Não foi possível religar o comando: faltando o identificador da janela a "
+#~ "após à opção -r"
+
+#~ msgid "Module '%s', Function '%s'"
+#~ msgstr "Modulo '%s', Função '%s'"
+
+#~ msgid "Identifier evaluated to \"%s\""
+#~ msgstr "Identificador avaliado para \"%s\""
+
+#~ msgid ""
+#~ "The regular expression matched a zero-length substring: this is not valid "
+#~ "in the s/// operator"
+#~ msgstr ""
+#~ "A expressão regular se assemelha a uma substring zero-comprimento: isto é "
+#~ "inválido no operador s///"
+
+#~ msgid "Skipping the substitution"
+#~ msgstr "Pulando a substituição"
+
+#~ msgid "Left operand of operator %s (%s{%s}) is undefined : assuming 0"
+#~ msgstr ""
+#~ "Operando esquerdo do operador %s (%s{%s}) está indefinido: assumir 0"
+
+#~ msgid "Left operand of operator %s (%s[%s]) is undefined : assuming 0"
+#~ msgstr ""
+#~ "Operando esquerdo do operador %s (%s[%s]) está indefinido: assumir 0"
+
+#~ msgid "Left operand of operator %s (%s) is undefined : assuming 0"
+#~ msgstr "Operando esquerdo do operador %s (%s) está indefinido: assumir 0"
+
+#~ msgid "Variable %s{%s} evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Variável %s{%s} avaliada para '%s' no operador %s (não é um número)"
+
+#~ msgid "Variable %s[%s] evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Variável %s[%s] avaliada para'%s' no operador %s (não é um número)"
+
+#~ msgid "Variable %s evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Variável %s avaliada para'%s' no operador %s (não é um número)"
+
+#~ msgid "Right operand of operator %s evaluated to '%s' (not a number)"
+#~ msgstr ""
+#~ "Operando direito do operador %s avaliado para '%s' (não é um número)"
+
+#~ msgid "operator %c%c"
+#~ msgstr "operador %c%c"
+
+#~ msgid "Encoding"
+#~ msgstr "Codificação"
+
+#~ msgid "The config file with id '%s' is not open"
+#~ msgstr "O arquivo de configuração com id '%s' não está aberto"
+
+#~ msgid "The config file with id '%s' is read only"
+#~ msgstr "O arquivo de configuração com id '%s' é somente leitura"
+
+#~ msgid "No nickname specified"
+#~ msgstr "Nenhum apelido especificado"
+
+#~ msgid "No netmask specified"
+#~ msgstr "Nenhuma máscara de rede especificada"
+
+#~ msgid "No property name specified"
+#~ msgstr "Nenhuma propriedade especificada"
+
+#~ msgid "Missing property name"
+#~ msgstr "Faltando nome da propriedade"
+
+#~ msgid "The specified window (%s) is not a channel/query/DCC chat"
+#~ msgstr "A Janela especificada (%s) não é um canal/privado/DCC de chat"
+
+#~ msgid "No file specified"
+#~ msgstr "Nenhum arquivo especifico"
+
+#~ msgid "Window %s not found"
+#~ msgstr "Janela %s não encontrada"
+
+#~ msgid "Can't log to file %s"
+#~ msgstr "Não foi possível registar no arquivo %s"
+
+#~ msgid "Window with id '%s' not found, returning empty string"
+#~ msgstr "Janela com id '%s' não encontrada, retornar string vazia"
+
+#~ msgid "Invalid progress value (%s)"
+#~ msgstr "Valor de progresso inválido (%s)"
+
+#~ msgid "Error:not enough parameters!"
+#~ msgstr "Erro: Parâmetros insuficientes!"
+
+#~ msgid "The (%s) object is not a pixmap"
+#~ msgstr "O objeto (%s) não é um pixmap"
+
+#~ msgid "Invalid index parameter (%s)"
+#~ msgstr "Parâmetro de índice inválido (%s)"
+
+#~ msgid "Invalid parameter"
+#~ msgstr "Parâmetro inválido"
+
+#~ msgid "Can't find the object "
+#~ msgstr "Não foi possível encontrar o obejeto "
+
+#~ msgid "Can't find the tab object "
+#~ msgstr "Não foi possível encontrar o objeto tab "
+
+#~ msgid "Can't find the widget(%s)"
+#~ msgstr "Não foi possível encontrar o widget %s"
+
+#~ msgid "Invalid marging value (%s)"
+#~ msgstr "Valor de margem inválido (%s)"
+
+#, fuzzy
+#~ msgid "This object is not a toolbutton item!"
+#~ msgstr "Este objeto não é um ítem PopupMenu!"
+
+#~ msgid "No value to insert"
+#~ msgstr "Nenhum valor a inserir"
+
+#~ msgid "Invalid index(%s)"
+#~ msgstr "Índice inválido (%s)"
+
+#~ msgid "No index specified"
+#~ msgstr "Nenhum índice especificado"
+
+#~ msgid "index %u out of range"
+#~ msgstr "Índice %u fora de alcance"
+
+#~ msgid "Invalid index (%s)"
+#~ msgstr "Índice inválido (%s)"
+
+#~ msgid "Index %u out of range"
+#~ msgstr "Índice %u fora de alcance"
+
+#~ msgid "Invalid resize mode (%s): defaulting to Auto"
+#~ msgstr ""
+#~ "Modo de redimensionamento invalido (%s): usando padrão automaticamente"
+
+#~ msgid "Invalid margin value (%s)"
+#~ msgstr "Valor de margem inválido (%s)"
+
+#~ msgid "Invalid spacing value (%s)"
+#~ msgstr "Valor de espaço inválido (%s)"
+
+#~ msgid "Invalid stretch value (%s)"
+#~ msgstr "Valor de esticar inválido (%s)"
+
+#~ msgid "Invalid from_row parameter (%s)"
+#~ msgstr "Parâmetro de_linha inválido (%s)"
+
+#~ msgid "Invalid to_row parameter (%s)"
+#~ msgstr "Parâmetro para_linha inválido (%s)"
+
+#~ msgid "Invalid from_column parameter (%s)"
+#~ msgstr "Parâmetro de_coluna inválido (%s)"
+
+#~ msgid "Invalid to_column parameter (%s)"
+#~ msgstr "Parâmetro para_coluna inválido (%s)"
+
+#~ msgid "Invalid parameters"
+#~ msgstr "Parâmetros inválido"
+
+#~ msgid "Invalid XCor or YCor range:[min=0] [max=99]"
+#~ msgstr "Escala XCor ou YCor inválida:[min=0] [max=99]"
+
+#~ msgid "$begin() function MUST take 1 parmeter."
+#~ msgstr "A função $begin() DEVE ter 1 parametro."
+
+#~ msgid "Can't find the widget/pixmap (%s)"
+#~ msgstr "Não foi possível encontrar o widget/pixmap %s"
+
+#~ msgid "Widget or Pixmap required (%s)"
+#~ msgstr "Widget ou Pixmap requerido (%s)"
+
+#~ msgid "Invalid bgMode: valid values are Transparent and Opaque"
+#~ msgstr "bgMode inválido: os valores válidos são Transparente e Opaco"
+
+#~ msgid "Can't find the widget object to remove (%s)"
+#~ msgstr "Não foi possível encontrar o objeto widget para remover (%s)"
+
+#~ msgid "Can't remove a non-widget object"
+#~ msgstr "Não foi possível remover um objeto não widget"
+
+#~ msgid "Can't find the widget (%s)"
+#~ msgstr "Não foi possível encontrar o widget (%s)"
+
+#~ msgid "Widget type object required"
+#~ msgstr "Tipo de objeto widget requerido"
+
+#~ msgid "Invalid zoom value (%s)"
+#~ msgstr "Valor zoom inválido (%s)"
+
+#~ msgid "Invalid depth value (%s)"
+#~ msgstr "Valor de profundidade inválido (%s)"
+
+#~ msgid "Invalid value (%s)"
+#~ msgstr "Valor inválido (%s)"
+
+#~ msgid "Invalid paragraph value (%s)"
+#~ msgstr "Valor de parágrafo inválido (%s)"
+
+#~ msgid " I can't find the specified file."
+#~ msgstr "Eu não posso encontrar o arquivo especificado."
+
+#~ msgid " I cannot read the file."
+#~ msgstr " Eu não posso ler o arquivo."
+
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "Não foi possível encontrar o objeto para adicionar (%s)"
+
+#~ msgid "Class %s is undefined"
+#~ msgstr "Classe %s é indefinida"
+
+#~ msgid "The source object '%s' is not existing"
+#~ msgstr "A origem do objeto ' %s' não existe"
+
+#~ msgid "The target object '%s' is not existing"
+#~ msgstr "O objeto de destino ' %s' não existe"
+
+#~ msgid "No signal '%s' to disconnect"
+#~ msgstr "Nenhum sinal '%s' para desconectar"
+
+#~ msgid "No destination specified"
+#~ msgstr "Nenhum destino especificado"
+
+#~ msgid "Can't find the destination widget/pixmap (%s)"
+#~ msgstr "Não foi possível encontrar o destino widget/pixmap (%s)"
+
+#~ msgid "No source specified"
+#~ msgstr "Nenhuma origem especificada"
+
+#~ msgid "Can't find the source widget/pixmap (%s)"
+#~ msgstr "Não foi possível encontrar a origem widget/pixmap (%s)"
+
+#~ msgid "Invalid x parameter (%s)"
+#~ msgstr "Parâmetro x inválido (%s)"
+
+#~ msgid "Invalid y parameter (%s)"
+#~ msgstr "Parâmetro y inválido (%s)"
+
+#~ msgid "Can't find the listviewitem object to add (%s)"
+#~ msgstr ""
+#~ "Não foi possível encontrar o objeto listviewitem para adicionar (%s)"
+
+#~ msgid "Invalid column (%s)"
+#~ msgstr "Coluna inválida (%s)"
+
+#~ msgid "Invalid margin parameter"
+#~ msgstr "Parâmetro de margem inválido"
+
+#~ msgid "Unknown alignment: %s"
+#~ msgstr "Alinhamento desconhecido: %s"
+
+#~ msgid "Unknown frame / shadow style: %s"
+#~ msgstr "Frame desconhecido / estilo sombra: %s"
+
+#~ msgid "Hey ! You wanna know my echo mode or what ?"
+#~ msgstr "Hei ! Você quer saber o meu modo eco ou o que ?"
+
+#~ msgid "Unknown echo mode"
+#~ msgstr "Modo eco desconhecido"
+
+#~ msgid "No toolbar to add separator."
+#~ msgstr "Nenhuma barra de ferramentas para adicionar separador."
+
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "Não foi possível encontrar o objeto para adicionar (%s)"
+
+#~ msgid "Invalid object."
+#~ msgstr "Objeto inválido."
+
+#~ msgid "Can't find the popupmenu object to add (%s)"
+#~ msgstr "Não foi possível encontrar o objeto popupmenu para adicionar (%s)"
+
+#~ msgid "Doesn't a popupmenu object"
+#~ msgstr "Não é um objecto popupmenu"
+
+#~ msgid "Can't find the widget object (%s)"
+#~ msgstr "Não foi possível encontrar o objeto widget (%s)"
+
+#~ msgid "Invalid columns value (%s)"
+#~ msgstr "Valor de coluna inválido (%s)"
+
+#~ msgid "Invalid size value (%s)"
+#~ msgstr "Valor de tamanho inválido (%s)"
+
+#~ msgid "Invalid icon identifier"
+#~ msgstr "Identificador de ícone inválido"
+
+#~ msgid ""
+#~ "Can't set the current avatar to '%s': failed to start the http transfer"
+#~ msgstr ""
+#~ "Não foi possivel colocar o avatar atual para '%s': falha ao iniciar a "
+#~ "transferência http"
+
+#~ msgid "Can't set the current avatar to '%s': can't load the image"
+#~ msgstr ""
+#~ "Não foi possivel colocar o avatar atual para '%s': não foi possivel "
+#~ "carregar a imagem"
+
+#~ msgid "No environment variable name given"
+#~ msgstr "Não foi possível encontra a variável de ambiente dada"
+
+#~ msgid "Can't find the window with id '%s'"
+#~ msgstr "A janela com id '%s' não foi encontrada."
+
+#~ msgid "The specified window (%s) is not a channel"
+#~ msgstr "A janela (%s) especificada não é um canal"
+
+#~ msgid "No button name specified!"
+#~ msgstr "Nenhum nome de botão especificado"
+
+#~ msgid ""
+#~ "The action \"%1\" is already defined as core action: choosing an "
+#~ "alternate name"
+#~ msgstr ""
+#~ "A ação \"%1\" já está definida como uma ação de núcleo: escolhendo um "
+#~ "nome alternativo"
+
+#~ msgid "No separator name specified"
+#~ msgstr "Nenhum nome de separador especificado"
+
+#~ msgid "No toolbar id specified"
+#~ msgstr "Nenhum id de barra de ferramentas especificado"
+
+#~ msgid "The action \"%s\" doesn't exist"
+#~ msgstr "A ação \"%s\" não existe"
+
+#~ msgid "Invalid IRC context id '%s'"
+#~ msgstr "Id '%s' de contexto de IRC inválido"
+
+#, fuzzy
+#~ msgid "Background not found %s "
+#~ msgstr "Cor de fundo"
+
+#~ msgid "Mask %s is already used to identify user %s"
+#~ msgstr "A máscara %s já esta em uso para identificar o usuário %s"
+
+#~ msgid "User not found (%s)"
+#~ msgstr "Usuário não encontrado (%s)"
+
+#~ msgid "User %s not found"
+#~ msgstr "Usuário %s não encontrado"
+
+#~ msgid "Mask %s already used to identify user %s"
+#~ msgstr "Máscara %s já está sendo usada para identificar o usuário %s"
+
+#~ msgid "Mask %s not found"
+#~ msgstr "Máscara %s não encontrada"
+
+#~ msgid "Sound file '%s' not found"
+#~ msgstr "Arquivo de som '%s' não encontrado"
+
+#~ msgid "Unable to play sound '%s'"
+#~ msgstr "Não foi possível tocar o som '%s'"
+
+#~ msgid "The specified name is empty"
+#~ msgstr "O nome especificado está vazio"
+
+#~ msgid "The specified visible name is empty"
+#~ msgstr "O nome visível especificado está vazio"
+
+#~ msgid "The specified description is empty"
+#~ msgstr "A descrição especificada está vazia"
+
+#~ msgid "The specified KVIrc version \"%s\" is not a valid version string"
+#~ msgstr ""
+#~ "A versão \"%s\" do KVIrc especificada não é uma string de versão válida"
+
+#~ msgid ""
+#~ "This KVIrc executable is too old to run this addon (minimum version "
+#~ "required is %s)"
+#~ msgstr ""
+#~ "O executável do KVirc é muito antigo para executar este script (a versão "
+#~ "mínima requerida é %s)"
+
+#~ msgid "Destination file exists: no copy made"
+#~ msgstr "O arquivo de destino existe: nenhuma cópia feita"
+
+#~ msgid "Failed to copy %s to %s"
+#~ msgstr "Falhou copiar %s para %s"
+
+#~ msgid "Failed to write to file %s"
+#~ msgstr "Falhou ao escrever no arquivo %s"
+
+#~ msgid "Failed to rename %s to %s"
+#~ msgstr "Falhou ao renomear %s para %s"
+
+#~ msgid "Failed to make the directory %s"
+#~ msgstr "Falhou ao criar o diretório %s"
+
+#~ msgid "Failed to remove the file %s"
+#~ msgstr "Falhou ao remover o arquivo %s"
+
+#~ msgid "Failed to remove the directory %s"
+#~ msgstr "Falhou ao remover o diretório %s"
+
+#~ msgid "The specified directory does not exist '%s'"
+#~ msgstr "O directório especificado não existe '%s'"
+
+#~ msgid "Can't open the file \"%s\" for reading"
+#~ msgstr "Não foi possível abrir o arquivo \"%s\" para leitura"
+
+#~ msgid "Read error for file %s"
+#~ msgstr "Erro de leitura para o arquivo %s"
+
+#~ msgid ""
+#~ "Read error for file %s (have been unable to read the requested size in "
+#~ "1000 retries)"
+#~ msgstr ""
+#~ "Erro de leitura para o arquivo %s (foi incapaz de ler o tamanho pedido em "
+#~ "1000 tentativas)"
+
+#~ msgid "No such options page class name"
+#~ msgstr "Sem opções de nome de classe na página"
+
+#, fuzzy
+#~ msgid "%Q is not an integer"
+#~ msgstr "Popup %Q não esta definido."
+
+#~ msgid "Window with caption '%s' not found, returning 0"
+#~ msgstr "Janela com título '%s' não encontrada, retornando 0"
+
+#~ msgid "The specified UNIX time is not valid (%s)"
+#~ msgstr "O tempo UNIX especificado não é válido (%s)"
+
+#~ msgid "The specified time format is not valid (%s)"
+#~ msgstr "O formato de tempo especificado não é valido (%s)"
+
+#~ msgid "No option named '%s'"
+#~ msgstr "Nenhuma opção chamada '%s'"
+
+#~ msgid "No option name specified"
+#~ msgstr "Nenhum nome de opção especificado"
+
+#, fuzzy
+#~ msgid "No link text specified"
+#~ msgstr "Nenhum índice especificado"
+
+#~ msgid "$sw should be called only in aliases"
+#~ msgstr "$sw devia ser apenas chamado nas aliases"
+
+#~ msgid "Broken prologue code for menu '%s', error detail follows"
+#~ msgstr ""
+#~ "Código prologo quebrado para o menu '%s', os detalhes do erro seguem"
+
+#~ msgid "Broken expression for menu item '%Q', ignoring"
+#~ msgstr "Expressão quebrada para o item do menu '%Q', ignorando"
+
+#~ msgid "Can't find the external popup '%Q', ignoring"
+#~ msgstr "Não foi possel encontrar o popup externo '%Q', ignorando"
+
+#~ msgid "Broken epilogue code for menu '%s', error details follow"
+#~ msgstr "Código epílogo para o menu '%s' quebrado, detalhes do erro a seguir"
+
+#~ msgid "Function name expected"
+#~ msgstr "Nome da função esperado"
+
+#~ msgid "No catalogue %s for the current language found"
+#~ msgstr "Não foi possível encontrar o catálogo %s para a línguagem atual"
+
+#~ msgid "The catalogue %s was not loaded"
+#~ msgstr "O catálogo '%s' não foi carregado"
+
+#~ msgid "Invalid icon specification '%s', using default"
+#~ msgstr "Especificação do ícone inválida ' %s', usando o padrão"
+
+#~ msgid "Missing icon number after the 'i' switch"
+#~ msgstr "Faltando número do ícone após o alternador 'i'"
+
+#~ msgid "Missing window ID after the 'w' switch"
+#~ msgstr "Faltando ID da janela a seguir à letra 'w'"
+
+#~ msgid "No targets specified"
+#~ msgstr "Sem objetivo especifico"
+
+#~ msgid "Missing new nickname"
+#~ msgstr "Novo apelido faltando"
+
+#~ msgid "Missing target"
+#~ msgstr "Objetivo faltando"
+
+#~ msgid "Missing target channel"
+#~ msgstr "Faltando canal de destino"
+
+#~ msgid "No such object (%s)"
+#~ msgstr "Nenhum objeto (%s)"
+
+#~ msgid "Invalid screen coordinates"
+#~ msgstr "Coordenadas inválidas da tela"
+
+#~ msgid "Invalid syntax for the screen coordinates"
+#~ msgstr "Sintaxe inválida para as coordenadas de tela"
+
+#~ msgid "Invalid timeout delay '%s'"
+#~ msgstr "Intervalo de atraso '%s' inválido"
+
+#~ msgid "Empty command block for timer '%s', timer not started"
+#~ msgstr ""
+#~ "Bloco de comandos vazio para o cronômetro '%s', contagem não iniciada"
+
+#~ msgid ""
+#~ "Internal error: Unable to add timer %s, insufficient system resources"
+#~ msgstr ""
+#~ "Erro interno: Incapaz de adicionar cronômetro %s, recursos do sistema "
+#~ "insuficientes"
+
+#~ msgid "No such timer (%s)"
+#~ msgstr "Nenhum timer (%s)"
+
+#~ msgid "No such event (%s)"
+#~ msgstr "Nenhum evento (%s)"
+
+#~ msgid "No handler '%s' for raw numeric event '%d'"
+#~ msgstr "Sem manipulador '%s' para o evento númerico raw '%d'"
+
+#~ msgid "No handler '%s' for event '%s'"
+#~ msgstr "Sem manipulador '%s' para o evento '%s'"
+
+#~ msgid "Failed to execute command '%s'"
+#~ msgstr "Falhou ao executar o comando '%s'"
+
+#~ msgid "Invalid IRC url (%s)"
+#~ msgstr "url de IRC (%s) Inválida"
+
+#~ msgid "The commandline for this url type seems to be broken (%s)"
+#~ msgstr "A linha de comando para este tipo de URL parece estar quebrado (%s)"
+
+#~ msgid "No commandline specified for this type of url (%s)"
+#~ msgstr "Nenhuma linha de comando especificada para este tipo de URL (%s)"
+
+#~ msgid "Invalid pitch (%s): using default"
+#~ msgstr "Caminho (%s) inválido: usando padrão"
+
+#~ msgid "Invalid duration (%s): using default"
+#~ msgstr "Duração (%s) inválida: usando padrão"
+
+#~ msgid "Can't find the icon '%s'"
+#~ msgstr "Não foi possível encontrar o icone '%s'"
+
+#~ msgid "Window button '%s' not found"
+#~ msgstr "Botão de janela '%s' não encontrado"
+
+#~ msgid "Can't rebind the command sequence: missing window identifier"
+#~ msgstr ""
+#~ "Não posso religar a sequência de comandos: faltando o identificador da "
+#~ "janela"
+
+#~ msgid "Can't rebind the command sequence: window with id %s not found"
+#~ msgstr ""
+#~ "Não foi possível religar a sequência de comandos: janela com id %s não "
+#~ "encontrado"
+
+#~ msgid "Unmatched parenthesis in expression body: ignoring trailing garbage"
+#~ msgstr ""
+#~ "Os parênteses não coincidem no corpo da expressão: ignorando caracteres "
+#~ "seguintes "
+
+#~ msgid "Error triggered from timer callback handler %c'%s'"
+#~ msgstr "Erro provocado pelo cronômetro de chamadas %c'%s'"
+
+#~ msgid "Timer callback handler '%s' is broken: killing"
+#~ msgstr "cronômetro de chamadas '%s' está quebrado: finalizando"
+
+#, fuzzy
+#~ msgid "Initializing scripting engine..."
+#~ msgstr "Mecanismo criptográfico inválido"
+
+#~ msgid "Loading actions..."
+#~ msgstr "Carregando ações..."
+
+#~ msgid "Loading icons..."
+#~ msgstr "Carregando ícones..."
+
+#~ msgid "Loading window configuration database..."
+#~ msgstr "Carregando a base de dados da configuração de janela..."
+
+#~ msgid "Loading server & proxy database..."
+#~ msgstr "Carregando base de dados de servidores e proxys..."
+
+#~ msgid "Loading event handlers..."
+#~ msgstr "Carregando manipuladores de eventos..."
+
+#~ msgid "Loading raw event handlers..."
+#~ msgstr "Carregando manipuladores de eventos planos..."
+
+#~ msgid "Loading popups..."
+#~ msgstr "Carregando popups..."
+
+#~ msgid "Loading toolbars..."
+#~ msgstr "Carregando barras de ferramentas..."
+
+#~ msgid "Loading text icon associations..."
+#~ msgstr "Carregando associações de ícones dos textos..."
+
+#~ msgid "Loading recent entries..."
+#~ msgstr "Carregando entradas recentes..."
+
+#~ msgid "Loading media types..."
+#~ msgstr "Carregando tipos de mídia...."
+
+#~ msgid "Loading registered users..."
+#~ msgstr "Carregando usuários registrados..."
+
+#~ msgid "Loading registered channels..."
+#~ msgstr "Carregando canais registrados..."
+
+#~ msgid "Loading file trader configuration..."
+#~ msgstr "Carregando configuração de compartilhamento de arquivos..."
+
+#~ msgid "Loading nick serv service configuration..."
+#~ msgstr "Carregando configuração do servidor de apelido..."
+
+#~ msgid "Loading history entries..."
+#~ msgstr "Carregando entradas do histórico..."
+
+#~ msgid "Loading avatar cache..."
+#~ msgstr "Carregando avatares armazenados..."
+
+#~ msgid "Starting up the engine..."
+#~ msgstr "Inicializando o reator nuclear..."
+
+#~ msgid "Have fun! :)"
+#~ msgstr "Divirta-se :) "
+
+#~ msgid "Show Ban Editor"
+#~ msgstr "Exibir Editor de Ban"
+
+#~ msgid "Show Crypto Controller"
+#~ msgstr "Exibir Controlador de Cripitografia"
+
+#~ msgid "Toggle Notify List"
+#~ msgstr "Alternar lista de notificação"
+
+#~ msgid "Initiating startup sequence..."
+#~ msgstr "Iniciando seqüência de inicio..."
+
+#~ msgid "&New Alias"
+#~ msgstr "&Novo Alias"
+
+#~ msgid "Loading options..."
+#~ msgstr "Carregando as opções..."
+
+#~ msgid "defpopup: internal error"
+#~ msgstr "defpopup: erro interno"
+
+#, fuzzy
+#~ msgid "User Messages"
+#~ msgstr "Mensagem do sistema"
+
+#~ msgid "Transport"
+#~ msgstr "Transporte"
+
+#, fuzzy
+#~ msgid "The specified window does not exist"
+#~ msgstr "O objeto pai especificado não existe"
+
+#, fuzzy
+#~ msgid "No url specified"
+#~ msgstr "Nenhuma origem especificada"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %s"
+#~ msgstr "Falhou ao iniciar o processo"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %Q"
+#~ msgstr "Falhou ao iniciar o processo"
+
+#, fuzzy
+#~ msgid "<unknown size>"
+#~ msgstr "desconhecido"
+
+#, fuzzy
+#~ msgid "Unable to get address of interface %Q"
+#~ msgstr "Escutar em um endereço/interface:"
+
+#, fuzzy
+#~ msgid "Missing target nickname"
+#~ msgstr "Novo apelido faltando"
+
+#, fuzzy
+#~ msgid "Missing filename"
+#~ msgstr "Faltando nome do timer"
+
+#, fuzzy
+#~ msgid "The file size is not an positive number"
+#~ msgstr "O parâmetro especificado não é um inteiro"
+
+#, fuzzy
+#~ msgid "Invalid sample rate '%s', defaulting to 8000"
+#~ msgstr ""
+#~ "Modo de redimensionamento invalido (%s): usando padrão automaticamente"
+
+#, fuzzy
+#~ msgid "The current window has no associated DCC session"
+#~ msgstr "Esta janela não tem contexto de IRC associado"
+
+#, fuzzy
+#~ msgid "The first parameter must be an unsigned number"
+#~ msgstr "O parâmetro especificado não é um inteiro"
+
+#, fuzzy
+#~ msgid "No filename specified"
+#~ msgstr "Nenhum nome especificado"
+
+#, fuzzy
+#~ msgid "The file '%s' is not readable"
+#~ msgstr "O popup '%s' não está definido"
+
+#, fuzzy
+#~ msgid "Invalid timeout, ignoring"
+#~ msgstr "Intervalo inválido"
+
+#, fuzzy
+#~ msgid "Invalid visible name: using default"
+#~ msgstr "Caminho (%s) inválido: usando padrão"
+
+#, fuzzy
+#~ msgid "Ops..failed to add the sharedfile..."
+#~ msgstr "Falhou ao carregar a imagem selecionada"
+
+#, fuzzy
+#~ msgid "The specified file size is invalid"
+#~ msgstr "O tempo UNIX especificado não é válido (%s)"
+
+#~ msgid "[Parser warning in '%s']: %s"
+#~ msgstr "[Aviso do analisador em '%s']: %s"
+
+#, fuzzy
+#~ msgid "Windows XP style"
+#~ msgstr "Lista de Janelas"
+
+#, fuzzy
+#~ msgid " I can't find the specified file %s."
+#~ msgstr "Eu não posso encontrar o arquivo especificado."
+
+#~ msgid "-e mode change change"
+#~ msgstr "mudar modo para -e"
+
+#~ msgid ""
+#~ "Can't set the current avatar to '%s' (failed to start the http transfer): "
+#~ "no message sent"
+#~ msgstr ""
+#~ "Não foi possivel colocar o avatar corrente para '%s' (falha ao iniciar a "
+#~ "transferência http): mensagem não enviada"
+
+#~ msgid ""
+#~ "Can't set the current avatar to '%s' (can't load the image): no message "
+#~ "sent"
+#~ msgstr ""
+#~ "Não foi possivel colocar avatar atual para '%s' (não foi possivel "
+#~ "carregar a imagem): nenhuma mensagem enviada"
+
+#~ msgid "No socket text specified"
+#~ msgstr "Nenhum texto do socket especificado"
+
+#~ msgid "Avatars"
+#~ msgstr "Avatares"
+
+#~ msgid "Parser"
+#~ msgstr "Analisador"
+
+#~ msgid "Defaults"
+#~ msgstr "Padrões"
+
+#~ msgid "Folders"
+#~ msgstr "Diretórios"
+
+#~ msgid "Message Format"
+#~ msgstr "Formato da Mensagem"
diff --git a/po/kvirc/kvirc_ru.po b/po/kvirc/kvirc_ru.po
new file mode 100644
index 00000000..d3acfeeb
--- /dev/null
+++ b/po/kvirc/kvirc_ru.po
@@ -0,0 +1,12490 @@
+# translation of kvirc_ru.po to Russian
+# translation of kvirc_ru.po to
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Valerius <[email protected]>, 2004, 2005.
+# Valeriy Girchenko <[email protected]>, 2005.
+# root <[email protected]>, 2005, 2006.
+# Alexey <[email protected]>, 2005.
+# Alexey Uzhva <alexey ar kvirc dot ru>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: kvirc_ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-03-31 10:23+0400\n"
+"Last-Translator: Alexey Uzhva <alexey ar kvirc dot ru>\n"
+"Language-Team: Russian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1: 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1: 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1: 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1: 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1: 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1: 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1: 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1: 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1: 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1: 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1: 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1: 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1: 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1: 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1: 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1: 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1: 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1: 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1: 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1: 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1: 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1: 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1: 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1: 2);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:696
+msgid "&Cascade Windows"
+msgstr "Окна &каскадом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:697
+msgid "Cascade &Maximized"
+msgstr "&Максимизировать каскадом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:700
+msgid "&Tile Windows"
+msgstr "&Замостить окна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:703
+msgid "&Auto Tile"
+msgstr "&Автоматически"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:708
+msgid "Anodine's Full Grid"
+msgstr "Anodine's заполнить по сетке"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:710
+msgid "Pragma's Horizontal 4-Grid"
+msgstr "Pragma's горизонтально 4 ячейки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:712
+msgid "Pragma's Vertical 4-Grid"
+msgstr "Pragma's вертикально 4 ячейки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:714
+msgid "Pragma's Horizontal 6-Grid"
+msgstr "Pragma's горизонтально 6 ячеек"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:716
+msgid "Pragma's Vertical 6-Grid"
+msgstr "Pragma's вертикально 6 ячеек"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:718
+msgid "Pragma's Horizontal 9-Grid"
+msgstr "Pragma's горизонтально 9 ячеек"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:720
+msgid "Pragma's Vertical 9-Grid"
+msgstr "Pragma's вертикально 9 ячеек"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:726
+msgid "Tile Met&hod"
+msgstr "Способ расположения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:729
+msgid "Expand &Vertically"
+msgstr "Растянуть по &вертикали"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:730
+msgid "Expand &Horizontally"
+msgstr "Растянуть по &горизонтали"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:733
+msgid "Mi&nimize All"
+msgstr "Ми&нимизировать все"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_actiondrawer.cpp:64
+msgid "Script"
+msgstr "Скрипт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:581
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:634
+msgid "Unknown"
+msgstr "Неизвестный"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:128
+msgid "No topic message has been received from the server yet"
+msgstr "тема канала пока не получена с сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:495
+msgid "Channel topic:"
+msgstr "Тема канала:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:513
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:201
+msgid "Set by"
+msgstr "Установил"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:519
+msgid "Set on"
+msgstr "Дата установки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:525
+msgid "Double-click to edit..."
+msgstr "Двойной клик для редактирования..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:530
+msgid "No topic is set"
+msgstr "Тема отсутствует"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:533
+msgid "Double-click to set..."
+msgstr "Двойной клик для установки..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:587
+msgid "History"
+msgstr "История"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:596
+msgid "Commit Changes"
+msgstr "Внести изменения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:602
+msgid "Discard Changes"
+msgstr "Отменить изменения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:627
+msgid "Copy to clipboard"
+msgstr "Копировать в буфер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:988
+msgid "There are active connections, are you sure you wish to "
+msgstr "Имеются активные соединения, вы действительно хотите "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:989
+msgid "quit KVIrc?"
+msgstr "выйти из KVIrc?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:587
+msgid "Confirmation - KVIrc"
+msgstr "Подтверждение - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:557
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:590
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&Yes"
+msgstr "&Да"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:556
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:589
+msgid "&Always"
+msgstr "&Всегда"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:591
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&No"
+msgstr "&Нет"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1090
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1106
+msgid "Show %1"
+msgstr "Показать %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1134
+msgid "Customize..."
+msgstr "Настроить..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:149
+#, c-format
+msgid "The file %s already exists.<br>Do you wish to overwrite it?"
+msgstr "Файл %s существует.<br>Хотите переписать его?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:150
+msgid "File Exists - KVIrc"
+msgstr "Файл существует - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:132
+msgid "Channel mode"
+msgstr "Режим канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:162
+msgid "Split View"
+msgstr "Разделить вид"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:207
+msgid "User List"
+msgstr "Список пользователей"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:167
+msgid "Ban Editor"
+msgstr "Редактор банов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:172
+msgid "Ban Exception Editor"
+msgstr "Редактор исключений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:179
+msgid "Invite Exception Editor"
+msgstr "Редактор исключений из списка приглашений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:184
+msgid "Mode Editor"
+msgstr "Редактор режимов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "said something recently"
+msgstr "недавно говорил"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "is talking"
+msgstr "говорит"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:684
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:699
+msgid "and"
+msgstr "и"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "were talking recently"
+msgstr "недавно говорили"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "are talking"
+msgstr "говорят"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:707
+msgid "and other %1 users"
+msgstr "и ещё %1 пользователей"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:738
+msgid "Dead channel"
+msgstr "Канал мёртв"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:753
+msgid "operator"
+msgstr "оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:754
+msgid "operators"
+msgstr "операторы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active user"
+msgstr "активный пользователь"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active users"
+msgstr "активные пользователи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot user"
+msgstr "горячий пользователь"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot users"
+msgstr "горячие пользователи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owner"
+msgstr "владелец канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owners"
+msgstr "владельцы канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrator"
+msgstr "администратор канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrators"
+msgstr "администраторы канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operator"
+msgstr "полу-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operators"
+msgstr "полу-операторы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced user"
+msgstr "войс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced users"
+msgstr "войсы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operator"
+msgstr "пользователь-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operators"
+msgstr "пользователь-операторы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "user total"
+msgstr "пользователя всего"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "users total"
+msgstr "пользователей всего"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:931
+msgid "No activity"
+msgstr "Нет активности"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:932
+msgid "Minimal activity"
+msgstr "Минимальная активность"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:933
+msgid "Very low activity"
+msgstr "Очень низкая активность"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Might be low activity"
+msgstr "Возможно низкая активность"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Low activity"
+msgstr "Низкая активность"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Might be medium activity"
+msgstr "Возможно средняя активность"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Medium activity"
+msgstr "Средняя активность"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "Might be high activity"
+msgstr "Возможно высокая активность"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "High activity"
+msgstr "Высокая активность"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Might be very high activity"
+msgstr "Возможно очень высокая активность"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Very high activity"
+msgstr "Очень высокая активность"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Might be flooded with messages"
+msgstr "Возможно подвергается флуду в сообщениях"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Flooded with messages"
+msgstr "Флуд в сообщениях"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:946
+msgid "human"
+msgstr "человек"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:966
+msgid "[Dead channel]"
+msgstr "[Канал мёртв]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1020
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1122
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:459
+msgid " on "
+msgstr " на "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1086
+#, fuzzy
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %Q, no "
+"data sent to the server"
+msgstr ""
+"Криптовальная машина не в состоянии зашифровать текущее сообщение (%Q): %s, "
+"данные не отосланы на сервер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1403
+msgid "Sent part request, waiting for reply..."
+msgstr "Запрос PART отослан, ожидаю ответ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:610
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:647
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:293
+msgid "(Unknown)"
+msgstr "(Неизвестный)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1484
+msgid "<b>Channel mode:</b>"
+msgstr "<b>Режим канала:</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1498
+#, c-format
+msgid "<br><b>Key:</b> %s"
+msgstr "<br><b>Ключ:</b> %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1505
+#, c-format
+msgid "<br><b>Limit:</b> %s"
+msgstr "<br><b>Лимит:</b> %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1590
+#, c-format
+msgid "Channel synchronized in %d.%d seconds"
+msgstr "Канал синхронизирован за %d.%d секунд"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:139
+msgid "Choose an Image File - KVIrc"
+msgstr "Выберите файл картинки - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:284
+#, c-format
+msgid "Unloadable: %s"
+msgstr "Выгружено: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:260
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:90
+msgid "&Browse..."
+msgstr "&Выбрать..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:364
+msgid "Choose a File - KVIrc"
+msgstr "Выберите файл - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:382
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:593
+msgid "Choose a Directory - KVIrc"
+msgstr "Выберите каталог - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:764
+msgid "A&dd"
+msgstr "&Добавить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:407
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:766
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:230
+msgid "Re&move"
+msgstr "&Удалить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:602
+msgid "Sample Text"
+msgstr "Образец текста"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:635
+msgid "Foreground"
+msgstr "Передний план"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:639
+msgid "Transparent"
+msgstr "Прозрачность"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:652
+msgid "Background"
+msgstr "Фон"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:715
+msgid "Play"
+msgstr "Играть"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:748
+msgid "Channel name"
+msgstr "Имя канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:749
+msgid "Channel password"
+msgstr "Пароль канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:177
+msgid "Toolbars"
+msgstr "Панели инструментов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:84
+msgid "Orientation"
+msgstr "Ориентация"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:86
+msgid "Top"
+msgstr "Сверху"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:87
+msgid "Left"
+msgstr "Слева"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:88
+msgid "Right"
+msgstr "Справа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:89
+msgid "Bottom"
+msgstr "Снизу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:91
+msgid "Detached"
+msgstr "Отделено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:92
+msgid "Flat"
+msgstr "Плоский"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:94
+msgid "Icon Size"
+msgstr "Размер иконок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:96
+msgid "Small (22x22)"
+msgstr "Маленькие (22x22)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:97
+msgid "Large (32x32)"
+msgstr "Большие (32x32)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1333
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:463
+msgid "&Apply"
+msgstr "&Применить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:830
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:113
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:251
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:319
+msgid "Close"
+msgstr "Закрыть"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:102
+msgid "Channel Modes"
+msgstr "Режимы канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_debugwindow.cpp:47
+msgid "Debug Messages"
+msgstr "Отладочные сообщения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:72
+msgid "CTCP Page - KVIrc"
+msgstr "CTCP пейджер - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:109
+msgid "You have been paged by"
+msgstr "Вы получили сообщение по пейджеру"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:75
+msgid "Mask editor - KVirc"
+msgstr "Редактор маски - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:79
+msgid "New mask must match an *!*@* expression"
+msgstr "Новая маска должны удовлетворять выражению *!*@*"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Ok"
+msgstr "Ок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:488
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:442
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:401
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Cancel"
+msgstr "О&тмена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:157
+msgid "Active Bans"
+msgstr "Активные баны"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:161
+msgid "Active Invite Exceptions"
+msgstr "Активные исключения из приглашений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:165
+msgid "Active Ban Exceptions"
+msgstr "Активные исключения из банов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:184
+#, fuzzy
+msgid "Filter:"
+msgstr "&Фильтр:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:188
+msgid "Use doubleclick to edit item"
+msgstr "Двойной клик для редактирования"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:200
+msgid "Mask"
+msgstr "Маска"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:202
+msgid "Set at"
+msgstr "Дата"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "Add"
+msgstr "Добавить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:92
+msgid "Cryptography/text transformation"
+msgstr "Криптографическое/текстовое преобразование"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:99
+msgid "Use the crypt engine"
+msgstr "Использование криптовальной машины"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:120
+msgid "Enable encryption"
+msgstr "Включить криптование"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:123
+msgid "Encrypt key:"
+msgstr "Ключ для зашифровки:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:141
+msgid "Hex"
+msgstr "Шестнадцатеричный"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:132
+msgid "Enable decryption"
+msgstr "Включить дешифрацию"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:135
+msgid "Decrypt key:"
+msgstr "Ключ для расшифровки:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_htmldialog.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:175
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:932
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1124
+msgid "OK"
+msgstr "Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:211
+msgid ""
+"If you dont want to encrypt a particular text line then just start it with "
+"the CTRL+P prefix"
+msgstr ""
+"Если вы не хотите зашифровать конкретную строку, тогда запускайте с "
+"префиксом CTRL+P"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:263
+msgid "Sorry, no crypt engines available"
+msgstr "Извините, нет доступных криптовальных машин"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:283
+msgid "Crypt: Can't create an engine instance: crypting disabled"
+msgstr ""
+"Шифрование: Не возможно создать криптовальный образец: криптование выключено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:294
+#, c-format
+msgid "Crypt: Can't initialize the engine :%s"
+msgstr "Шифрование: Не возможно инициализировать :%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:302
+msgid ""
+"Crypt: You have to enable encryption and/or decryption for the engine to work"
+msgstr ""
+"Шифрование: Вы должны включить машину шифрования и/или дешифрования для "
+"работы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:385
+msgid "Search tools"
+msgstr "Инструменты поиска"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:539
+#, c-format
+msgid "### Log session terminated at %s ###"
+msgstr "### Журналирование завершено %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:713
+#, c-format
+msgid "### Log session started at %s ###"
+msgstr "### Журналирование начато %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:717
+msgid "### Existing data buffer:"
+msgstr "### Существующий буфер данных:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:721
+msgid "### End of existing data buffer."
+msgstr "### Конец существующего буфера данных."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3894
+msgid "Hide Find Window"
+msgstr "Скрыть окно поиска"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3896
+msgid "Show Find Window"
+msgstr "Показать окно поиска"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3898
+msgid "Zoom In"
+msgstr "Увеличить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3899
+msgid "Zoom Out"
+msgstr "Уменьшить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3900
+msgid "Choose Temporary Font..."
+msgstr "Выберите временный шрифт..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3901
+msgid "Choose Temporary Background..."
+msgstr "Выберите временный фон..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3902
+msgid "Reset Temporary Background"
+msgstr "Сбросить временный фон"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3905
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:738
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:841
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1057
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1289
+msgid "Clear Buffer"
+msgstr "Очистить буфер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3939
+msgid "Choose the background image..."
+msgstr "Выберите фоновое изображение..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+msgid "Invalid image"
+msgstr "Не является изображением"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+msgid "Failed to load the selected image"
+msgstr "Ошибка загрузки выбранной картинки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4083
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4140
+#, c-format
+msgid "Pos %d"
+msgstr "Позиция %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4156
+msgid "Not found"
+msgstr "Не найден"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4563
+msgid "Looking up host %Q..."
+msgstr "Определяю адрес %Q..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4926
+msgid "Double-click to open this link"
+msgstr "Двойной клик для открытия ссылки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4946
+msgid "Unable to look it up hostname: Hostname appears to be masked"
+msgstr "Не могу найти хост: Хост замаскирован"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4947
+msgid "Unable to look it up hostname: Unknown host"
+msgstr "Не могу найти хост: Неизвестный хост"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4949
+msgid ""
+"Double-click to look up this hostname<br>Right-click to view other options"
+msgstr ""
+"Двойной клик для определения IP этого<br>Клик на правой кнопке - другие опции"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4972
+msgid "Server appears to be a network hub<br>"
+msgstr "Сервер является сетевым хабом<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4973
+msgid "Unknown server<br>"
+msgstr "Неизвестный сервер<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4976
+msgid "Double-click to read the MOTD<br>Right-click to view other options"
+msgstr "Двойной клик для чтения MOTD<br>Клик правой клавишей - другие опции"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4989
+msgid "Double-click to set<br>"
+msgstr "Двойной клик для установки<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5011
+msgid "You're not an operator: You may not change channel modes"
+msgstr "Вы не оператор: Вы не можете изменять режимы канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5028
+msgid "Nothing known about %Q"
+msgstr "Ничего не известно о %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5029
+msgid "Nothing known about %Q (no connection)"
+msgstr "Ничего не известно о %Q (нет соединения)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5054
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>): "
+"<br><nowrap>+%Q (%u users)<hr>%Q</nowrap>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5060
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)<hr>Double-"
+"click to join %Q<br>Right click to view other options"
+msgstr ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)"
+"<hr>Двойной клик для захода на %Q<br>Клик правой кнопкой - другие опции"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5080
+msgid "<b>Double-click:</b><br>%Q"
+msgstr "<b>Двойной клик:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5085
+msgid "<b>Middle-click:</b><br>%Q"
+msgstr "<b>Клик на средней кнопке:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5090
+msgid "<b>Right-click:</b><br>%Q"
+msgstr "<b>Клик на правой кнопке:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1284
+msgid "Joined on <b>%1</b>"
+msgstr "Вошел на канал <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1296
+msgid "Quiet for <b>%1h %2m %3s</b>"
+msgstr "Неактивность <b>%1 ч %2 м %3 с</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1097
+msgid "No connection"
+msgstr "Не подключен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:304
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:3
+msgid "IRC Context"
+msgstr "IRC Контекст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:319
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:365
+#, c-format
+msgid "Lag: %d.%d%d"
+msgstr "Задержка: %d.%d%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:393
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:379
+msgid "Lag: ?.??"
+msgstr "Задержка: ?.??"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:326
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:637
+msgid "No IRC context"
+msgstr "Нет контекста IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:633
+msgid "Not connected"
+msgstr "Отключен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:377
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1117
+msgid "away"
+msgstr "отошёл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:397
+msgid "In progress..."
+msgstr "в процессе..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:458
+msgid "Crypting"
+msgstr "Шифрование"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:466
+msgid "Private Text Encoding"
+msgstr "Кодировка приватов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:566
+msgid "Ops...I've accidentally lost the crypting engine..."
+msgstr "Упс...Я неожиданно потерял криптовальную машину..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:582
+msgid "List of window types available in this release of KVIrc:"
+msgstr "Список типов окон, доступных в этой версии KVIrc:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:763
+msgid "Use Default Encoding"
+msgstr "Использовать кодировку по умолчанию"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:775
+msgid "Standard"
+msgstr "Стандартные"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:776
+msgid "Smart (Send Local)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:777
+msgid "Smart (Send UTF-8)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:810
+msgid "&Undock"
+msgstr "&Отделить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:813
+msgid "&Dock"
+msgstr "&Док"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:818
+msgid "Mi&nimize"
+msgstr "&Свернуть"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:821
+msgid "Ma&ximize"
+msgstr "Раз&вернуть"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:824
+msgid "&Restore"
+msgstr "&Восстановить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:837
+msgid "Text &Encoding"
+msgstr "&Кодировка текста"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:842
+msgid "Sa&ve Window Properties"
+msgstr "&Сохранить свойства окон"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:86
+msgid "Taskbar"
+msgstr "Панель задач(панель списка окон)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:91
+#, fuzzy
+msgid "taskbar"
+msgstr "Панель задач(панель списка окон)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1162
+msgid "Sort"
+msgstr "Сортировка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1163
+msgid "Reverse Sort"
+msgstr "Обратная сортировка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1223
+msgid "Window List"
+msgstr "Список окон"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:203
+msgid "Apply to all IRC Contexts"
+msgstr "Применить ко всем IRC контекстам"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:227
+msgid "Away Indicator"
+msgstr "Индикатор режима \"Отошёл\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:255
+msgid "Away since"
+msgstr "Отошёл с"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:259
+msgid "Double click to leave away mode"
+msgstr "Двойной клик возвращает из режима Отошёл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:261
+msgid "Not away"
+msgstr "режим Отошёл не включен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:263
+msgid "Double click to enter away mode"
+msgstr "Двойной клик включает режим Отошёл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:330
+#, c-format
+msgid "Last checked %d mins %d secs ago"
+msgstr "Последняя проверка %d мин. %d сек. назад"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:332
+msgid "Lag measure not available yet"
+msgstr "Измерение задержки пока не доступно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:336
+msgid "Lag meter engine disabled"
+msgstr "Выключено измерение задержки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:338
+msgid "Double click to enable it"
+msgstr "Двойной клик для включения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:391
+msgid "Lag Indicator"
+msgstr "Индикатор задержки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:461
+msgid "Simple Clock"
+msgstr "Простые часы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:512
+msgid "Show total connection time"
+msgstr "Показывать полное время в сети"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:536
+msgid "Connection Timer"
+msgstr "Таймер соединения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:560
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:87
+msgid "Separator"
+msgstr "Разделитель"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:820
+msgid "Clipboard"
+msgstr "Буфер обмена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line break"
+msgstr "конец строки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line breaks"
+msgstr "окончаний строк"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:845
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:439
+msgid "Cu&t"
+msgstr "Вы&резать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:847
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:445
+msgid "&Copy"
+msgstr "&Копировать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:849
+msgid "&Paste"
+msgstr "&Вставить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:851
+msgid "Paste (Slowly)"
+msgstr "Вставить (медленно)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:856
+msgid "Paste &File"
+msgstr "Вставить файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:863
+msgid "Stop Paste"
+msgstr "Остановить вставку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:865
+msgid "Clear"
+msgstr "Очистить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:868
+msgid "Select All"
+msgstr "Выбрать всё"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:897
+msgid "Insert Icon"
+msgstr "Вставить иконку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1926
+msgid "%d matches: %Q"
+msgstr "%d соответствует: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1930
+msgid "No matches"
+msgstr "Не соответствует"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2657
+msgid "Show History<br>&lt;Ctrl+PageUp&gt;"
+msgstr "Показать историю<br>&lt;Ctrl+PageUp&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2648
+msgid "Input History Disabled"
+msgstr "История ввода не активирована"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2370
+msgid "Show Icons Popup<br>&lt;Ctrl+I&gt;<br>See also /help texticons"
+msgstr ""
+"Показать всплывающего меню с иконками<br>&lt;Ctrl+I&gt;<br>Смотри также /"
+"help texticons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2382
+msgid "User friendly commandline mode<br>See also /help commandline"
+msgstr ""
+"Командная строка в дружественном пользователю режиме <br> Также смотри /help "
+"commandline"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2394
+#, fuzzy
+msgid "Multi-line Editor<br>&lt;Alt+Backspace&gt;"
+msgstr "Многострочный редактор<br>&lt;Ctrl+Backspace&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2498
+msgid "Confirm Multiline Message"
+msgstr "Подтвердить многострочное сообщение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2499
+msgid ""
+"You're about to send a message with %1 lines of text.<br><br>There is "
+"nothing wrong with it, this warning is<br>here to prevent you from "
+"accidentally sending<br>a really large message just because you didn't edit "
+"it<br>properly after pasting text from the clipboard.<br><br>Do you want the "
+"message to be sent?"
+msgstr ""
+"Вы собираетесь послать сообщение, в котором %1 строк текста.<br><br>Здесь "
+"нет ошибки, это предупреждение здесь для того,<br>что бы предотвратить "
+"случайную передачу большого сообщения,<br>не отредактированного после "
+"вставки из буфера обмена.<br><br>Вы хотите отослать сообщение?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2505
+msgid "Yes, always"
+msgstr "Да, всегда"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2506
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:399
+msgid "Yes"
+msgstr "Да"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:806
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:375
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:400
+msgid "No"
+msgstr "Нет"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2556
+#, fuzzy
+msgid "<Ctrl+Return>; submits, <Alt+Backspace>; hides this editor"
+msgstr "<Ctrl+Return> отправить, <Ctrl+Backspace> скрыть этот редактор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:126
+msgid "Address:"
+msgstr "Адрес:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:140
+msgid "Current IRC URI"
+msgstr "Текущий IRC URI"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:156
+msgid "Notify List"
+msgstr "Список уведомлений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:263
+msgid "Part All Channels"
+msgstr "Выйти со всех каналов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:265
+msgid "Close All Queries"
+msgstr "Закрыть все приваты"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:270
+msgid "Unhighlight All Windows"
+msgstr "Снять подсветку со всех окон"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:273
+msgid "Unhighlight All Channels"
+msgstr "Снять подсветку со всех каналов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:275
+msgid "Unhighlight All Queries"
+msgstr "Снять подсветку со всех приватов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:387
+msgid "Gender:"
+msgstr "Пол:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:394
+msgid "Male"
+msgstr "Мужской"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:393
+msgid "Female"
+msgstr "Женский"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:375
+msgid "Registered as"
+msgstr "Зарегистрирован как"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:381
+msgid "(Matched by"
+msgstr "Соответственно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:393
+msgid "On <b>"
+msgstr "На <b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:402
+msgid "Using server <b>%1</b>"
+msgstr "Используется сервер <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:407
+msgid "%1 hops"
+msgstr "%1 прыжков"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:417
+msgid "Probably Away"
+msgstr "Возможно отошел"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:493
+msgid ""
+"KVIrc can accept only irc://, irc6://, ircs:// or irc6s:// URL's\n"
+"Your URL is invalid. Check spelling and try again"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:554
+msgid ""
+"You have just attempted to close a console window with an active connection "
+"inside.\n"
+"Are you sure you wish to terminate the connection?"
+msgstr ""
+"Вы пытаетесь закрыть консоль с активным соединением.\n"
+"Хотите разорвать соединение?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:588
+msgid ""
+"You have just attempted to close the last console window.\n"
+"Are you sure you wish to quit KVIrc?"
+msgstr ""
+"Вы пытаетесь закрыть последнее окно сервера.\n"
+"Хотите выйти из KVIrc?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1019
+msgid "Failed to load avatar with name \"%Q\" and local path \"%Q\""
+msgstr "Ошибка загрузки аватара с именем \"%Q\" и локальным путём \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:624
+msgid "Connection in progress..."
+msgstr "Соединяемся..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1099
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:630
+msgid "Login in progress..."
+msgstr "Вход в сеть..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1179
+msgid "channel"
+msgstr "канал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1180
+msgid "channels"
+msgstr "каналы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1181
+msgid "query"
+msgstr "приват"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1182
+msgid "queries"
+msgstr "приваты"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1238
+msgid "Connected since"
+msgstr "Подключен с"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1252
+msgid "Online for"
+msgstr "В сети в течение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1264
+msgid "Server idle for"
+msgstr "На сервере отсутствует активность в течение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:50
+msgid "This option is also available as"
+msgstr "Эта опция также доступна как"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:683
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:275
+msgid "Advanced..."
+msgstr "Дополнительно..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:69
+msgid "Scri&pting"
+msgstr "С&ценарии"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:74
+msgid "&Tools"
+msgstr "&Инструменты"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:81
+msgid "&Settings"
+msgstr "&Настройки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:83
+msgid "&Window"
+msgstr "&Окна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:125
+msgid "&Help"
+msgstr "&Справка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:119
+msgid "&Help Browser (Panel)"
+msgstr "Броузер &помощи (панель)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:121
+msgid "Help Browser (&Window)"
+msgstr "Броузер помощи (&окно)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:124
+msgid "&Tip of the Day"
+msgstr "&Совет дня"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:127
+msgid "About &KVIrc"
+msgstr "О &KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:130
+msgid "KVIrc Home&page"
+msgstr "&Домашняя страница KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:134
+msgid "KVIrc Russian Home&page"
+msgstr "&Домашняя страница KVIrc на русском"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:139
+#, fuzzy
+msgid "KVIrc French Home&page"
+msgstr "&Домашняя страница KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:143
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:339
+msgid "Subscribe to the Mailing List"
+msgstr "Подписаться на список рассылки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:145
+msgid "Report a Bug / Propose Improvements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:148
+msgid "Join KVIrc International Channel on Freenode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:150
+msgid "Join KVIrc International Channel on IRCNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:155
+msgid "Join KVIrc Italian Channel on AzzurraNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:161
+msgid "Join KVIrc French Channel on Freenode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:164
+msgid "Join KVIrc French Channel on EuropNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:179
+msgid "Show StatusBar"
+msgstr "Показать строку статуса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:194
+msgid "&Save Configuration"
+msgstr "&Сохранить настройки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:213
+msgid "Restore &Default Script"
+msgstr "Восстановить сценарии по &умолчанию"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:630
+msgid "Disconnect"
+msgstr "Отключиться"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:228
+msgid "New &Connection To"
+msgstr "Новое &подключение к"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:234
+msgid "Hide &Dock Icon"
+msgstr "Скрыть &иконку в трее"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:237
+msgid "Show &Dock Icon"
+msgstr "Показать &иконку в трее"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:111
+msgid "&Quit"
+msgstr "&Выход"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:265
+msgid "&Other..."
+msgstr "&Другой..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:305
+msgid "Show &Icon Table"
+msgstr "Показать таблицу &иконок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:308
+msgid "Open &Terminal"
+msgstr "Открыть &терминал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:308
+msgid ""
+"<b>Shift+Drag</b> or <b>Ctrl+Drag</b> to move the applet around<br><b>Right "
+"click</b> to see the other options"
+msgstr ""
+"<b>Shift+Перетаскивание</b> или <b>Ctrl+Перетаскивание</b>для перемещения "
+"апплета.<br><b>Клик правой кнопкой</b> для других опций"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:313
+msgid "<b>Right click</b> to add/remove applets"
+msgstr "<b>Правая кнопка</b> - добавить/удалить апплеты"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:353
+msgid "Remove %Q"
+msgstr "Удалить %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:365
+msgid "Add Applet"
+msgstr "Добавить апплет"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:404
+msgid ""
+"Drag the applet while holding the Shift or Ctrl key to move it to the "
+"desired position"
+msgstr "Перетащить апплет можно при нажатой клавише Shift или Ctrl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:93
+msgid "<b><font color=\"#EAEAEA\" size=\"-1\">Find Text</font></b>"
+msgstr "<b><font color=\"#EAEAEA\" size=\"-1\">Найти текст</font></b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:118
+msgid "&Regular expression"
+msgstr "&Регулярное выражение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:121
+msgid "E&xtended regexp."
+msgstr "&Расширенное регулярное выражение."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:126
+msgid "C&ase sensitive"
+msgstr "С &учётом регистра"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:129
+msgid "Find &Prev."
+msgstr "Найти &предыдущий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:133
+msgid "&Find Next"
+msgstr "Найти &следующий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:880
+msgid "Find"
+msgstr "Найти"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:214
+msgid "Type"
+msgstr "Тип"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:166
+msgid "Set &All"
+msgstr "Выбрать &все"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:170
+msgid "Set &None"
+msgstr "С&бросить все"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:174
+msgid "&Load From..."
+msgstr "&Загрузить из..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:178
+msgid "&Save As..."
+msgstr "&Сохранить как..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:182
+msgid "Filter"
+msgstr "Фильтр"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:234
+msgid "Select a Filter File"
+msgstr "Выберите файл фильтра"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:251
+#, c-format
+msgid "Can't open the filter file %s for reading."
+msgstr "Не могу открыть файл фильтра %s на чтение."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:261
+msgid "Select a Name for the Filter File"
+msgstr "Выберите имя для файла фильтра"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:272
+msgid "Failed to write the filter file %Q (IO Error)"
+msgstr "Ошибка записи в файл фильтра %Q (Ошибка IO)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:274
+msgid "Can't open the filter file %Q for writing"
+msgstr "Не могу открыть файл фильтра %Q на запись"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:109
+msgid "Choose image ..."
+msgstr "Выберите изображение ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:122
+msgid "Builtin images"
+msgstr "Встроенные картинки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:131
+msgid "Small icons"
+msgstr "Маленькие иконки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:138
+msgid "Full path"
+msgstr "Полный путь"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:241
+msgid "Builtin $icon(%Q) [index %d]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:274
+msgid "directory"
+msgstr "каталог"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:300
+msgid "pixels"
+msgstr "пикселей"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:305
+msgid "bytes"
+msgstr "байты"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:98
+msgid "Show User List"
+msgstr "Показать список пользователей"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:105
+msgid "Query Targets"
+msgstr "Цели приватов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:165
+msgid "Query target:"
+msgstr "Цель привата:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:170
+msgid "%1 is %2 (%3)"
+msgstr "%1 это %2 (%3)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:172
+msgid "%1 is %2"
+msgstr "%1 это %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:186
+msgid "%1 is using irc server: %2 (%3 hops)"
+msgstr "%1 использует сервер %2 (%3 прыжка)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:188
+msgid "%1 is using irc server: %2"
+msgstr "%1 использует сервер %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:195
+msgid "%1 is probably away"
+msgstr "%1 возможно отошел"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:200
+msgid "Common channels with %1: %2"
+msgstr "Общие каналы с %1: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:254
+msgid "[Dead Query]"
+msgstr "[Мёртвый приват]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:240
+msgid "Query with %1!%2 (%3)"
+msgstr "Приват с %1!%2 (%3)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:242
+msgid "Query with %1!%2"
+msgstr "Приват с %1!%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:244
+msgid ", using server %1"
+msgstr ", использует сервер %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:246
+msgid " (%1 hops)"
+msgstr " (%1 прыжков)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:248
+msgid ", probably away"
+msgstr ", возможно отошел"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:252
+msgid "Common channels: %2"
+msgstr "Общие каналы: %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:320
+msgid ""
+"The target of this query has changed from \r!n\r%Q\r [%Q@\r!h\r%Q\r] to \r!n"
+"\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr ""
+"Цель привата изменена с \r!n\r%Q\r [%Q@\r!h\r%Q\r] на \r!n\r%Q\r [%Q@\r!h\r%Q"
+"\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:389
+msgid "Common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Общие каналы для \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:392
+msgid "No common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "Нет общих каналов для \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:428
+msgid "[Dead query]"
+msgstr "[Мёртвый приват]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:578
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:645
+msgid "This query has no active targets, no message sent"
+msgstr "Этот приват не имеет активных целей, сообщение не отослано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:617
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %s, no "
+"data sent to the server"
+msgstr ""
+"Криптовальная машина не в состоянии зашифровать текущее сообщение (%Q): %s, "
+"данные не отосланы на сервер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashcount.cpp:74
+msgid ""
+"The argument of the hash count '#' operator didn't evaluate to a hash: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+"Аргумент счёта хеша не определяется как хеш: автоматически преобразовано в "
+"тип %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:100
+#, fuzzy
+msgid "DNS Lookup result for query \"%Q\""
+msgstr "Результат DNS-запроса для \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:105
+msgid "Error: %Q"
+msgstr "Ошибка: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:110
+msgid "Hostname %d: %Q"
+msgstr "Адрес %d: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:116
+msgid "IP address %d: %Q"
+msgstr "IP адрес %d: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:870
+msgid ""
+"Broken slot '%Q' in target object '%Q::%Q' while emitting signal '%Q' from "
+"object '%Q::%Q': disconnecting"
+msgstr ""
+"Битый слот '%Q' в целевом объекте '%Q::%Q' при посылании сигнала '%Q' из "
+"объекта '%Q::%Q': отключен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:888
+msgid ""
+"Slot target object destroyed while emitting signal '%Q' from object '%Q::%Q'"
+msgstr ""
+"Слот целевого объекта разрушился при испускании сигнала '%Q' из объекта '%Q::"
+"%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1040
+msgid "Listing Qt properties for object named \"%Q\" of KVS class %Q"
+msgstr "Список QT-свойств для объекта \"%Q\" KVS класса %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1046
+#, c-format
+msgid "Properties for Qt class %s"
+msgstr "Свойства QT-класса %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1071
+msgid "Property: %c%Q%c, type %Q"
+msgstr "Свойство: %c%Q%c, тип %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1131
+#, c-format
+msgid "%d properties listed"
+msgstr "%d свойств"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1151
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1380
+msgid "The object named \"%Q\" of class %Q has no Qt properties"
+msgstr "Объект \"%Q\" класса %Q не является Qt-свойством"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1396
+msgid "No Qt property named \"%Q\" for object named \"%Q\" of class %Q"
+msgstr "Нет QT-свойства с именем \"%Q\" для объекта \"%Q\" класса %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1409
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed but it doesn't really exist"
+msgstr ""
+"Невозможно найти свойство с именем \"%Q\" для объекта \"%Q\" класса %Q: "
+"свойство проиндексировано, но в действительности не существует"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1417
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed and defined but the returned variant is not valid"
+msgstr ""
+"Невозможно найти свойство с именем \"%Q\" для объекта \"%Q\" класса %Q: "
+"свойство приндексировано и определено, но возвращаемое значение не "
+"действительно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1200
+#, c-format
+msgid ""
+"The property is of type %s but the supplied argument can't be converted to "
+"that type (expecting \"%s\")"
+msgstr ""
+"Свойство имеет тип %s, но предоставляемый аргумент не может быть приведён "
+"этому типу (ожидается \"%s\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1331
+msgid ""
+"A pixmap object, an image_id or an image file path is required for this "
+"property"
+msgstr ""
+"Объект pixmap, image_id или файл изображения требуется для этого свойства"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1352
+msgid "Can't find the requested image"
+msgstr "Немогу найти запрошенное изображение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1512
+msgid ""
+"Property \"%Q\" for object named \"%Q\" of class %Q has an unsupported data "
+"type"
+msgstr ""
+"Свойство \"%Q\" для объекта \"%Q\" класса %Q имеет не поддерживаемый тип даты"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1659
+msgid "Cannot find object function $%Q for object named \"%Q\" of class %Q"
+msgstr "Не могу найти объект функции $%Q для объекта с именем \"%Q\" класса %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1661
+msgid "Cannot find object function $%Q::%Q for object named \"%Q\" of class %Q"
+msgstr ""
+"Не могу найти объект функции $%Q::%Q для объекта с именем \"%Q\" класса %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1669
+msgid ""
+"Cannot call internal object function $%Q (for object named \"%Q\" of class %"
+"Q) from this context"
+msgstr ""
+"Не могу найти объект функции $%Q для объекта с именем \"%Q\" класса %Qиз "
+"этого контекста"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:69
+msgid "Stray dot ('.') character or invalid following module command name"
+msgstr ""
+"Лишняя точка ('.'), символ или недействительное последующее имя команды "
+"модуля"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:70
+msgid "Syntax error: malformed module command identifier"
+msgstr ""
+"Синтаксическая ошибка: неверно сформированный командный идентификатор модуля"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:188
+msgid "Stray '::' sequence or invalid following alias name"
+msgstr ""
+"Потерянная последовательность '::' или недопустимое последующее имя алиаса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:95
+msgid "Syntax error: malformed alias identifier"
+msgstr "Синтаксическая ошибка: неверно сформировано имя алиаса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:102
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:196
+msgid "Stray ':' character: did you mean '...<namespace>::<alias_name>' ?"
+msgstr ""
+"Символ ':' не на своём месте: он должен быть в середине выражения ."
+"<namespace>::<alias_name>'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:103
+msgid "Syntax error: malformed (alias?) command identifier"
+msgstr "Синтаксическая ошибка: неверный (алиас?) идентификатор команды"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:280
+msgid "Unknown callback command \"%Q\""
+msgstr "Неизвестный ответ от команды \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:465
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:44
+msgid "The current window is not a channel"
+msgstr "Текущее окно не является каналом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:532
+msgid ""
+"Timer name omitted but there is not current timer (this is not a timer "
+"callback)"
+msgstr "Имя таймера не принадлежит текущему таймеру (это не возврат таймера)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:538
+msgid "Can't kill the timer '%Q' since it is not running"
+msgstr "Не могу убить таймер '%Q' так как он не запущен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:626
+#, fuzzy
+msgid "List of active timers"
+msgstr "активные пользователи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:637
+msgid "Persistent"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:640
+#, fuzzy
+msgid "WindowLifetime"
+msgstr "Список окон"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:643
+msgid "SingleShot"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:652
+#, fuzzy
+msgid "None"
+msgstr "(Ничего)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:663
+#, c-format
+msgid "Total: %u timers running"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:849
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:872
+msgid "Found character '%q' (unicode %x) where a slash '/' was expected"
+msgstr "Найден символ '%q' (уникод %x) там где ожидался слеш '/'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:842
+msgid ""
+"Unexpected end of command in binding operation, at least two slashes are "
+"missing"
+msgstr ""
+"Неожиданный конец команды в обёртке операции, по крайней мере два слеша "
+"пропущены"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:865
+msgid ""
+"Unexpected end of command in binding operation, at least one slash is missing"
+msgstr ""
+"Неожиданный конец команды в обёртке операции, по крайней мере один слеш "
+"пропущен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:905
+msgid "Unknown binding operation '%Q'"
+msgstr "Неизвестная операция '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:926
+msgid "Missing right side operand for the binding operator '=~'"
+msgstr "Отсутствует крайний правый операнд для оператора '=~'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:948
+msgid "Trailing garbage ignored after operator '++'"
+msgstr "Остальной мусор проигнорирован после оператора '++'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:960
+msgid "Missing right operand for operator '+='"
+msgstr "Отсутствует правый операнд для оператора '+='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:979
+msgid "Trailing garbage ignored after operator '--'"
+msgstr "Остальной мусор проигнорирован после оператора '--'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:986
+msgid ""
+"This looks a lot like an object handle dereferencing operator '->' but in "
+"fact it isn't. Maybe you forgot a '$' just after ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:994
+msgid "Missing right operand for operator '-='"
+msgstr "Отсутствует правый операнд для оператора '-='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1015
+msgid "Missing right operand for operator '<<='"
+msgstr "Отсутствует правый операнд для оператора '<<='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1025
+msgid "Missing right operand for operator '<<'"
+msgstr "Отсутствует правый операнд для оператора '<<'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1039
+msgid "Missing right operand for operator '<,'"
+msgstr "Отсутствует правый операнд для оператора '<,'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1053
+msgid "Missing right operand for operator '<+'"
+msgstr "Отсутствует правый операнд для оператора '<+'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1075
+msgid "Missing right operand for operator '>>='"
+msgstr "Отсутствует правый операнд для оператора '>>='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1094
+msgid "Missing right operand for operator '.='"
+msgstr "Отсутствует правый операнд для оператора '.='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1113
+msgid "Missing right operand for operator '"
+msgstr "Отсутствует правый операнд для оператора '"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:72
+msgid "Unknown operator"
+msgstr "Неизвестный оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1178
+msgid "Unexpected (and senseless) read-only data evaluation"
+msgstr "Неожиданные (и бессмысленные) данные только для чтения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1180
+msgid "Syntax error: confused by earlier errors: bailing out"
+msgstr "Синтаксическая ошибка: обусловлена более ранними ошибками: bailing out"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1160
+msgid "Unexpected end of script after a variable reference: expected operator"
+msgstr ""
+"Неожиданный конец сценария после ссылки на переменную: ожидается оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1176
+msgid ""
+"Unexpected character '%q' (unicode %x) after a void function call: end of "
+"instruction expected"
+msgstr ""
+"Неожиданный символ '%q' (уникод %x) после вызова void функции: ожидается "
+"конец директивы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1179
+msgid "Unexpected character '%q' (unicode %x)"
+msgstr "Неожиданный символ '%q' (уникод %x)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:96
+msgid "/me can be used only in channels, queries and DCC chat windows"
+msgstr ""
+"/me может быть использовано только в окнах каналов, приватов и DCC чатов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:385
+msgid "Invalid IRC url (%Q)"
+msgstr "Недействительный url IRC (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:410
+msgid "The commandline for this url type seems to be broken (%Q)"
+msgstr "Команда для этого типа url кажется битая (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:412
+msgid "No commandline specified for this type of url (%Q)"
+msgstr "Не определена для типа url (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:512
+msgid "Option setting error: Unknown option or invalid value for option type"
+msgstr ""
+"Ошибка опции настроек: Неизвестная опция или недействительное значение для "
+"опции этого типа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:606
+msgid "Choose a file to parse"
+msgstr "Выберите файл грамматического разбора"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:639
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:643
+msgid "Failed to load the file '%Q' for parsing"
+msgstr "Ошибка загрузки файла '%Q' для грамматического разбора"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:715
+msgid "Missing channel list"
+msgstr "Утерян список каналов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:753
+#, c-format
+msgid "You don't appear to be on channel %s"
+msgstr "Вы не находитесь на канале %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:802
+msgid "Module command call failed: can't load the module 'snd'"
+msgstr "Ошибка команды вызова модуля: не возможно загрузить модуль 'snd'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:809
+msgid ""
+"Module command call failed: the module 'snd' doesn't export a command named "
+"'play'"
+msgstr ""
+"Ошибка команды вызова модуля: модуль 'snd' не может предоставить команду с "
+"именем 'play'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:864
+msgid "Popup %Q is not defined"
+msgstr "Всплывающее меню %Q не определено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:872
+msgid "A popup menu cannot be popped up twice"
+msgstr "Всплывающее меню не может быть показано дважды"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:897
+msgid "Invalid syntax for screen coordinates, using cursor position"
+msgstr ""
+"Недействительный синтаксис координат экрана, используется позиция курсора"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1011
+msgid "Empty target specified"
+msgstr "Определена пустая цель"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:97
+msgid "[RAW]: %Q"
+msgstr "[RAW]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1237
+msgid "Window with id %Q not found: no rebinding performed"
+msgstr "Окно с ID %Q не найдено: не возможно выполнить увязку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1330
+msgid "Failed to execute command '%Q'"
+msgstr "Ошибка при запуске команды '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:242
+msgid "Missing alias name"
+msgstr "Отсутствует имя псевдонима"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:253
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:889
+msgid ""
+"Alias names can contain only letters, digits, underscores and '::' namespace "
+"separators"
+msgstr ""
+"Имя алиаса может содержать только цифры, буквы, нижние подчеркивания и '::' "
+"как разделитель пространств имен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:903
+msgid ""
+"Stray ':' character in alias name: did you mean ...<namespace>::<name> ?"
+msgstr "':' в имени алиаса. Может быть вы имели ввиду <namespace>::<name> ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:914
+msgid "Found an empty namespace in alias name"
+msgstr "Найдено пустое пространство имен в имени алиаса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:277
+msgid "The alias %Q is not existing"
+msgstr "Псевдоним %Q не существует"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:436
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:413
+msgid "The specified window has no button containers"
+msgstr "Заданное окно не имеет контейнеров с кнопками"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:447
+msgid "Window button '%Q' not found"
+msgstr "Кнопка окна '%Q' не найдена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:445
+msgid "Can't find the icon '%Q'"
+msgstr "Не найдена иконка '%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:532
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:540
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1197
+msgid "No such event (%Q)"
+msgstr "Нет такого события (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:552
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1222
+msgid "No handler '%Q' for raw numeric event '%d'"
+msgstr "Нет обработчика '%Q' для заготовки события с номером '%d'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1248
+msgid "No handler '%Q' for event '%Q'"
+msgstr "Нет обработчика '%Q' для события '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:936
+msgid "The specified ping time is invalid: assuming zero (no ping)"
+msgstr "Заданное время пинга не действительно: принимается 0 (без пинга)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:946
+msgid "The specified maximum run time is invalid: assuming zero (infinite)"
+msgstr ""
+"Заданное максимальное время выполнения не действительно: принимается 0 "
+"(бесконечно)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:965
+msgid "Failed to start the process"
+msgstr "Ошибка при запуске процесса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1010
+msgid "The specified object does not exist"
+msgstr "Указанный объект не существует"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1113
+msgid "Missing timer name"
+msgstr "Отсутствует имя таймера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1122
+msgid "Missing timeout delay"
+msgstr "Отсутствует задержка времени"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1129
+msgid "The timeout delay didn't evaluate to an integer"
+msgstr "Таймаут не является целым числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1152
+msgid "Unable to add the timer: insufficient system resources"
+msgstr "Не могу добавить таймер: недостаточно системных ресурсов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_eventmanager.cpp:503
+msgid "Event handler %Q is broken: disabling"
+msgstr "Обработчик события %Q битый: выключено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_moduleinterface.cpp:166
+msgid "Can't unload the module: it has locked itself in memory"
+msgstr "Невозможно выгрузить модуль: модуль заблокировал свою память"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:123
+msgid "Unknown binary operator '=%q': did you mean '==' ?"
+msgstr "Неизвестный бинарный оператор '=%q': наверное хотите '==' ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:221
+msgid "Unknown binary operator '%q'"
+msgstr "Неизвестный бинарный оператор '%q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:305
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:371
+msgid "Unexpected end of script in expression"
+msgstr "Неожиданный конец сценария в выражении"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:451
+msgid ""
+"Unexpected character %q (unicode %h) in expression. If it meant to be a "
+"string use the quotes."
+msgstr ""
+"Неожиданный символ %q (уникод %h) в выражении. Если вы хотите это "
+"использовать, ставьте кавычки."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:466
+msgid "Unexpected empty expression operand"
+msgstr "Неожиданный пустой операнд выражения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:91
+msgid "say: injected commandline"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:94
+msgid "Say parse error: Broken command"
+msgstr "Ошибка грамматического разбора: Битая команда"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:250
+msgid ""
+"Couldn't find a suitable IRC context for the connection, try using -n or -u"
+msgstr ""
+"Невозможно найти подходящий IRC контекст для соединения, используйте -n или -"
+"u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:259
+msgid "Another connection is already in progress in the selected IRC context"
+msgstr "Другое соединение уже запущено в заданном IRC контексте"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:369
+msgid "No menu bar item with text '%Q'"
+msgstr "Нет пункта меню с текстом '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:383
+msgid "Invalid index specified: ignored"
+msgstr "Неверно определён индекс: проигнорировано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:392
+msgid "The popup '%Q' is not defined"
+msgstr "Всплывающее меню '%Q' не определено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:604
+msgid "No target channel specified and the current window is not a channel"
+msgstr "Не задан канал, и текущее окно не является окном канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:705
+msgid "No catalogue %Q for the current language found"
+msgstr "Каталог текущего языка %Q не найден"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:744
+msgid "The catalogue %Q was not loaded"
+msgstr "Каталог %Q не загружен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:80
+msgid ""
+"Empty window identifier specified in the standard rebinding switch: no "
+"rebinding performed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:91
+msgid ""
+"Invalid window specified in the standard rebinding switch: no rebinding "
+"performed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:94
+msgid ""
+"The left side of the scope operator didn't evaluate as an object reference"
+msgstr "В левой части оператора не задана ссылка на объект"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:100
+msgid ""
+"The left side of the scope operator evaluated to a null object reference"
+msgstr "В левой части оператора задана нулевая ссылка на объект"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:107
+msgid ""
+"The left side of the scope operator evaluated to an invalid object reference "
+"(object doesn't exist)"
+msgstr ""
+"В левой части оператора задана недействительная ссылка на объект (объект не "
+"существует)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayreferenceassert.cpp:77
+msgid "Array reference assert failed: the variable evaluated to type '%Q'"
+msgstr "Ошибка в ссылке массива: переменная определена как типа '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:247
+msgid "Operand of unary operator didn't evaluate to a number"
+msgstr "Операнд унарного оператора не определён как число"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:415
+msgid "Left operand didn't evaluate to a number"
+msgstr "Левый операнд не определён как число"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:422
+msgid "Right operand didn't evaluate to a number"
+msgstr "Правый операнд не определён как число"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:547
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:575
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:583
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:374
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:66
+msgid "Division by zero"
+msgstr "Деление на нуль"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:107
+#, c-format
+msgid "line %d, near character %d"
+msgstr "Строка %d, около символа %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:187
+msgid "This command can be used only in windows bound to an IRC context"
+msgstr "Эта команда может быть использована только в IRC контексте"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:193
+msgid "You're not connected to an IRC server"
+msgstr "Вы не подключены к IRC серверу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:199
+msgid "Missing parameter"
+msgstr "Параметр отсутствует"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:128
+msgid "Hash key evaluated to empty string: fix the script"
+msgstr "Хеш ключ является пустой строкой: исправьте сценарий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:99
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+"Аргумент с {} не определяется как хеш: автоматически преобразовано в тип %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:144
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash automatic "
+"conversion from %Q supplied"
+msgstr ""
+"Аргумент с {} не определяется как хеш: автоматически преобразовано в %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashreferenceassert.cpp:77
+msgid "Hash reference assert failed: the variable evaluated to type '%Q'"
+msgstr "Ошибочная ссылка на хеш: переменная определена как типа '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:100
+msgid "Failed to send an unknown command as /raw"
+msgstr "Ошибка при отправке неизвестной команды как /RAW"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:104
+msgid "Call to undefined command '%Q'"
+msgstr "Вызываемая команда '%Q' не определена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:116
+msgid "Error in inner alias command call '%Q', called from this context"
+msgstr "Ошибка в псевдониме при обращении к '%Q', вызов из этого контекста"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:74
+msgid "There are no extended scope variables in this scope"
+msgstr "Нет переменных расширенной области в этой области"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:111
+msgid "Missing class name"
+msgstr "Пропущено имя класса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:120
+msgid "A class can't be a subclass of itself"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:127
+msgid "Couln't find base class named \"%Q\""
+msgstr "Не найдено имя базового класса \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:137
+msgid ""
+"Detected a loop in the inheritance tree of the base class \"%Q\": redefine "
+"that class first"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:146
+msgid "Can't override the builtin class \"%Q\""
+msgstr "Невозможно отменить встроенный класс \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:71
+msgid "Module command call failed: can't load the module '%Q': %Q"
+msgstr "Ошибка команды вызова модуля: не возможно загрузить модуль '%Q': %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:77
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a command named '%"
+"Q'"
+msgstr ""
+"Ошибка команды вызова модуля: модуль '%Q' не может предоставить команду с "
+"именем '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:113
+msgid "Broken condition in menu setup: assuming false"
+msgstr "Битое условие в установке меню: принимается ложь"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:220
+msgid "Broken icon parameter: ignoring"
+msgstr "Битый аргумент иконки: проигнорировано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:228
+msgid "Can't find the icon \"%Q\": ignoring"
+msgstr "Не могу найти иконку \"%Q\": проигнорировано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:244
+msgid "Broken text parameter: assuming empty string"
+msgstr "Битый аргумент текста: очевидно пустая строка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:486
+msgid "Recursive definition detected for popup '%Q': ignoring"
+msgstr ""
+"Рекурсивное определение обнаружено для всплывающего меню '%Q': "
+"проигнорировано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:500
+msgid "Can't find the external popup '%Q'; ignoring"
+msgstr "Не найдено всплывающее меню '%Q': проигнорировано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:853
+msgid "Broken prologue in popup menu '%Q': ignoring"
+msgstr "Битое начало во всплывающего меню '%Q': проигнорировано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:868
+msgid "Broken epilogue in popup menu '%Q': ignoring"
+msgstr "Битое окончание во всплывающего меню '%Q': проигнорировано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:70
+msgid "Module function call failed: can't load the module '%Q': %Q"
+msgstr ""
+"Ошибка обращения к функциональному модулю: не могу загрузить модуль '%Q': %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:77
+msgid ""
+"Module function call failed: the module '%Q' doesn't export a function named "
+"'%Q'"
+msgstr ""
+"Ошибка обращения к функциональному модулю: модуль '%Q' не предоставляет "
+"функцию с именем '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_timermanager.cpp:244
+msgid "Timer '%Q' has a broken callback handler: killing the timer"
+msgstr "Таймер '%Q' имеет битый возврат из обработчика: таймер убит"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:229
+msgid "The target variable didn't evaluate to an integer or real value"
+msgstr "Целевая переменная не определена как целое или реальное значение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:283
+msgid "The right side of operator '&=' didn't evaluate to an integer"
+msgstr "Правая часть оператора '&=' не является целым числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:294
+msgid "The left side of operator '&=' didn't evaluate to an integer"
+msgstr "Левая часть оператора '&=' не является целым числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:353
+msgid "The right side of operator '/=' didn't evaluate to a number"
+msgstr "Правая часть оператора '/=' не является числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:364
+msgid "The left side of operator '/=' didn't evaluate to a number"
+msgstr "Левая часть оператора '/=' не является числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:446
+msgid "The right side of operator '%=' didn't evaluate to a number"
+msgstr "Правая часть оператора '%=' не является числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:457
+msgid "The left side of operator '%=' didn't evaluate to a number"
+msgstr "Левая часть оператора '%=' не является числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:541
+msgid "The right side of operator '*=' didn't evaluate to a number"
+msgstr "Правая часть оператора '*=' не является числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:552
+msgid "The left side of operator '*=' didn't evaluate to a number"
+msgstr "Левая часть оператора '*=' не является числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:620
+msgid "The right side of operator '|=' didn't evaluate to an integer"
+msgstr "Правая часть оператора '|=' не является целым числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:631
+msgid "The left side of operator '|=' didn't evaluate to an integer"
+msgstr "Левая часть оператора '|=' не является целым числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:691
+msgid "The right side of operator '<<=' didn't evaluate to an integer"
+msgstr "Правая часть оператора '<<=' не является целым числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:702
+msgid "The left side of operator '<<=' didn't evaluate to an integer"
+msgstr "Левая часть оператора '<<=' не является целым числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:763
+msgid "The right side of operator '>>=' didn't evaluate to an integer"
+msgstr "Правая часть оператора '>>=' не является целым числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:774
+msgid "The left side of operator '>>=' didn't evaluate to an integer"
+msgstr "Левая часть оператора '>>=' не является целым числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:840
+msgid "The right side of operator '-=' didn't evaluate to a number"
+msgstr "Правая часть оператора '-=' не является числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:851
+msgid "The left side of operator '-=' didn't evaluate to a number"
+msgstr "Левая часть оператора '-=' не является числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:923
+msgid "The right side of operator '+=' didn't evaluate to a number"
+msgstr "Правая часть оператора '+=' не является числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:934
+msgid "The left side of operator '+=' didn't evaluate to a number"
+msgstr "Левая часть оператора '+=' не является числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1009
+msgid "The right side of operator '^=' didn't evaluate to an integer"
+msgstr "Правая часть оператора '^=' не является целым числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1020
+msgid "The left side of operator '^=' didn't evaluate to an integer"
+msgstr "Левая часть оператора '^=' не является целым числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1462
+msgid ""
+"The regular expression matched a zero-length substring: this is not valid in "
+"the s/// operator, skipping"
+msgstr ""
+"Регулярное выражение содержит подстроку нулевой длинны: это недействительно "
+"в операторе s/// , пропущено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:52
+msgid "Unexpected end of script after '$' function call prefix"
+msgstr "Неожиданный конец сценария после после префикса функции '$'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:53
+msgid "Unexpected character %q (unicode %x) after '$' function call prefix"
+msgstr "Неожиданный символ %q (уникод %x) после префикса функции '$'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:54
+msgid ""
+"Syntax error after '$' function call prefix. If you want to use a plain '$' "
+"in the code you need to escape it"
+msgstr ""
+"Синтаксическая ошибка после префикса функции '$'. Если вы хотите "
+"использовать просто символ '$' в вашем коде - используйте escape-"
+"последовательность"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:63
+msgid "Invalid expression evaluation in object scope"
+msgstr "Недействительна оценка выражения в области объекта"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:78
+msgid "Invalid command evaluation in object scope"
+msgstr "Недействительна оценка команды в области объекта"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:87
+msgid "Empty instruction block for command evaluation"
+msgstr "Пустой блок инструкций для оценки команды"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:101
+msgid ""
+"Parameter identifiers are forbidden in object scope (after the '->' operator)"
+msgstr ""
+"Идентификаторы параметров запрещены в области объекта (после оператора '->')"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:147
+msgid ""
+"Ending index of a multiple parameter identifier is lower or equal to the "
+"starting index. This will evaluate to a single parameter identifier."
+msgstr ""
+"Конечный индекс в множестве идентификаторов параметра меньше или равен "
+"начальному индексу. Это принимается как единственный идентификатор параметра."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:163
+msgid "Syntax error: invalid $$ ($this) function call in object scope"
+msgstr ""
+"Синтаксическая ошибка: недействительный $$ ($this) вызов функции в пределах "
+"объекта"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:189
+msgid "Syntax error: malformed alias function call identifier"
+msgstr "Синтаксическая ошибка: неверный идентификатор вызова функции"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:197
+msgid "Syntax error: malformed (alias?) function call identifier"
+msgstr "Синтаксическая ошибка: неверный (алиас?) идентификатор вызова функции"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:307
+#, c-format
+msgid "Invalid data type for parameter \"%s\""
+msgstr "Недействительный тип даты для параметра \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:122
+#, c-format
+msgid "found empty string where type '%s' was expected"
+msgstr "найдена пустая строка там где ожидается тип '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:129
+msgid "found string value \"%Q\" where type '%s' was expected"
+msgstr "найдена строка \"%Q\" там где ожидается тип '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:134
+msgid "found type %Q where type '%s' was expected"
+msgstr "найден тип %Q там где ожидается тип '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:154
+#, c-format
+msgid "Missing non-optional parameter \"%s\""
+msgstr "Отсутствует обязательный параметр \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:282
+msgid "found empty string while a non empty one was expected"
+msgstr "найдена пустая строка там где ожидается непустая"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:309
+#, c-format
+msgid "found signed integer \"%d\" where type 'unsigned integer' was expected"
+msgstr "найдено знаковое целое \"%d\" там где ожидается беззнаковое целое"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:253
+msgid "This window has no associated IRC context"
+msgstr "Это окно не ассоциировано с контекстом IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:483
+#, c-format
+msgid "No such IRC context (%u)"
+msgstr "Нет такого контекста IRC (%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:471
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:586
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:494
+msgid "This window is not associated to an IRC context"
+msgstr "Это окно не ассоциировано с контекстом IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:809
+msgid ""
+"The specified format string wasn't accepted by the underlying system time "
+"formatting function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:70
+msgid "Unterminated c-style multiline comment"
+msgstr "С-стиль многострочных комментариев"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:71
+msgid "Unexpected end of script in multiline comment"
+msgstr "Неожиданный конец сценария в многострочном комментарии"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:88
+msgid ""
+"Unexpected character '%q' (unicode %x) after a slash (it is a typo or a "
+"malformed comment begin ?)"
+msgstr ""
+"Неожиданный символ '%q' (уникод %x) после слеша (это опечатка или начало "
+"комментария?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:71
+msgid "Call to undefined function '%Q'"
+msgstr "Обращение к неопределённой функции '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:79
+msgid "Error in inner alias function call '%Q', called from this context"
+msgstr ""
+"Ошибка в псевдониме при обращении к функции '%Q', вызов из этого контекста"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:73
+msgid "Array index didn't evaluate to an integer"
+msgstr "Индекс массива не определяется как целое число"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:79
+msgid ""
+"Array index evaluated to a negative integer (non negative integer expected)"
+msgstr ""
+"Индекс массива определяется как отрицательное число (а должно быть "
+"положительное)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:106
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from %Q supplied"
+msgstr ""
+"Аргумент с индексом [] не определяется как массив: автоматически "
+"преобразовано в %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:142
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+"Аргумент с индексом [] не определяется как массив: автоматически "
+"преобразовано в тип %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:219
+msgid "Lag meter was not enabled"
+msgstr "Измерение задержки не включено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:546
+msgid "No such event handler (%Q) for event %Q"
+msgstr "Нет обработчика '%Q для события '%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands.cpp:153
+msgid "This is not a channel"
+msgstr "Это не канал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:99
+msgid ""
+"Unexpected end of command buffer while looking for the \"perl.end\" statement"
+msgstr "Неожиданный конец буфера команд при поиске инструкции \"perl.end\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:147
+msgid "Trailing garbage at the end of the break command: ignored"
+msgstr "Мусор в конце команды: проигнорировано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:209
+msgid "The 'unset' command needs a variable list"
+msgstr "Команда 'unset' требует список переменных"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:280
+msgid "Found character %q (unicode %x) where a variable was expected"
+msgstr "Найден символ %q (уникод %x) там где ожидалась переменная"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:219
+msgid "'unset' command used without a variable list"
+msgstr "команда 'unset' используется без списка переменных"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:279
+msgid "The 'global' command needs a variable list"
+msgstr "Команде 'global' нужен список переменных"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:631
+msgid "Found character %q (unicode %x) where an open parenthesis was expected"
+msgstr "Найден символ %q (уникод %x) там где ожидается открытие скобок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:439
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:538
+msgid "Unexpected end of buffer in class definition"
+msgstr "Неожиданный конец буфера в объявлении класса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:474
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:501
+msgid "Found character %q (unicode %x) where a function name was expected"
+msgstr "Найден символ '%q' (уникод %x) там где ожидалась инструкция"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:522
+msgid "Unexpected end of buffer in function parameter list reminder"
+msgstr "Неожиданный конец строки в списке параметров"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:630
+msgid "The while command needs an expression enclosed in parenthesis"
+msgstr "Команде while необходимо выражение в круглых скобках"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:654
+msgid ""
+"The last while command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+"Последняя команда в буфере не имеет условной инструкции: это бессмысленно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:655
+msgid ""
+"Unexpected end of script while looking for the instruction block of the "
+"while command"
+msgstr "Неожиданный конец сценария при поиске блока инструкций команды"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:741
+msgid ""
+"Unexpected end of command after the 'do' command block: expected 'while' "
+"keyword"
+msgstr ""
+"Неожиданный конец команды после блока 'do': ожидается ключевое слово 'while'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:743
+msgid "Found character %q (unicode %x) where a 'while' keyword was expected"
+msgstr "Найден символ %q (уникод %x) там где ожидается ключевое слово 'while'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:759
+msgid ""
+"The 'while' block of the 'do' command needs an expression enclosed in "
+"parenthesis"
+msgstr "Блоку 'while' команды 'do' требуется выражение в круглых скобках"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:779
+msgid "Garbage string after the expression in 'do' command: ignored"
+msgstr "Неправильная строка после выражения в команде 'do': проигнорировано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:825
+msgid "The 'if' command needs an expression enclosed in parenthesis"
+msgstr "Команде 'if' требуется выражение в круглых скобках"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:850
+msgid ""
+"The last if command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+"Последняя команда в буфере не имеет условных инструкций: это бессмысленно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:851
+msgid ""
+"Unexpected end of script while looking for the instruction block of the if "
+"command"
+msgstr "Неожиданный конец сценария при поиске блока инструкций команды"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:966
+msgid ""
+"Unexpected end of buffer while looking for the closing ')' in the 'for' "
+"command"
+msgstr ""
+"Неожиданный конец буфера при поиске закрывающей скобки ')' в команде 'for'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1015
+msgid "The 'for' command needs an expression enclosed in parenthesis"
+msgstr "Команде 'for' требуется выражение в круглых скобках"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1092
+msgid ""
+"Found char %q (unicode %x) while looking for the terminating ')' in 'for' "
+"command"
+msgstr ""
+"Найден символ %q (уникод %x) при поиске закрывающей скобки ')' в команде "
+"'for'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1122
+msgid "Empty infinite 'for' loop: fix the script"
+msgstr "Пустой бесконечный цикл 'for': исправьте сценарий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1181
+msgid "The 'foreach' command needs an expression enclosed in parenthesis"
+msgstr "Команде 'foreach' требуется выражение в круглых скобках"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1205
+msgid ""
+"The 'foreach' command expects a writeable iteration variable as first "
+"parameter"
+msgstr ""
+"Команда 'foreach' ожидает для записи переменную итерации как первый аргумент"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1196
+msgid ""
+"Found character '%q' (unicode %x) where '%' or '$' was expected: see /help "
+"foreach for the command syntax"
+msgstr ""
+"Найден символ '%q' (уникод %x) там где ожидался '%' или '$' : смотри /help "
+"foreach для справки по синтаксису"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1207
+msgid "Unexpected function call as 'foreach' iteration variable"
+msgstr "Неожиданный вызов функции как переменной итерации 'foreach'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1209
+msgid "Unexpected read-only variable as 'foreach' iteration variable"
+msgstr ""
+"Неожиданная переменная только для чтения как переменная итерации 'foreach"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1219
+msgid ""
+"Unexpected end of 'foreach' parameters: at least one iteration data argument "
+"must be given"
+msgstr ""
+"Неожиданное окончание аргументов 'foreach' : по крайней мере один аргумент "
+"данных итерации должен быть"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1223
+msgid ""
+"The 'foreach' command expects a comma separated list of iteration data items "
+"after the first parameter"
+msgstr ""
+"Команда 'foreach' ожидает запятую, разделяющую список пунктов данных "
+"итерации после первого аргумента"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1244
+msgid ""
+"Found empty 'foreach' execution block: maybe you need to fix your script ?"
+msgstr ""
+"Найден пустой исполняемый блок для 'foreach' : может вам нужно поправить "
+"скрипт?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1365
+msgid "The 'switch' command needs an expression enclosed in parenthesis"
+msgstr "Команде 'switch' требуется выражение в круглых скобках"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1415
+msgid "Unexpected end of buffer in switch condition block"
+msgstr "Неожиданный конец буфера в блоке условий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1422
+msgid ""
+"Found character %q (unicode %x) where a 'case','match','regexp','default' or "
+"'break' label was expected"
+msgstr ""
+"Найден символ %q (уникод %x) там где ожидается "
+"'case','match','regexp','default' или 'break'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1460
+msgid ""
+"Found 'break' label where a 'case','match','regexp' or 'default' label was "
+"expected"
+msgstr "Найден 'break' там где ожидается 'case','match','regexp' или 'default'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1465
+msgid ""
+"Found token '%Q' where a 'case','match','regexp','default' or 'break' label "
+"was expected"
+msgstr ""
+"Найден знак '%Q' там где ожидается 'case','match','regexp','default' или "
+"'break'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1528
+msgid "Senseless empty switch command: fix the script"
+msgstr "Бессмысленная пустая команда: исправьте сценарий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1562
+msgid "Unexpected end of buffer in defpopup block"
+msgstr "Неожиданный конец буфера в defpopup блоке"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1569
+msgid ""
+"Found character %q (unicode %x) where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+"Найден символ %q (уникод %x) там где ожидается "
+"prologue','separator','label','popup','item','extpopup' или 'epilogue'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1668
+msgid "Found empty prologue block: maybe you need to fix the script?"
+msgstr ""
+"Бессмысленный пустой предварительный блок: может вам надо поправить сценарий?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1670
+msgid "Found empty epilogue block: maybe you need to fix the script?"
+msgstr ""
+"Бессмысленный пустой заключительный блок: может вам нужно исправить скрипт?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1703
+msgid ""
+"Unexpected empty <text> field in label parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Неожиданная пустая область <text> в аргументе label. Смотри /help defpopup "
+"для справки по синтаксису"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1753
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1801
+msgid ""
+"Unexpected empty <text> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Неожиданная пустая область <text> в аргументе extpopup. Смотри /help "
+"defpopup для справки по синтаксису"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1777
+msgid ""
+"Found empty instruction for popup item: maybe you need to fix the script?"
+msgstr ""
+"Бессмысленная пустая инструкция в пункте всплывающего меню: может вам нужно "
+"исправить сценарий?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1809
+msgid ""
+"Unexpected empty <name> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Неожиданная пустая область <name> в аргументе extpopup. Смотри /help "
+"defpopup для справки по синтаксису"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1821
+msgid ""
+"Found token '%Q' where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+"Найден знак '%Q' там где ожидается "
+"'prologue','separator','label','popup','item','extpopup' или 'epilogue'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1931
+msgid "The 'defpopup' command needs an expression enclosed in parenthesis"
+msgstr "Команде 'defpopup' требуется выражение в круглых скобках"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:109
+msgid "beginning of input"
+msgstr "Начало ввода"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:121
+msgid ""
+"Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %s"
+"\" for the command syntax"
+msgstr ""
+"Найденный символ '%q' (уникод 0x%x) где ожидался '%c': смотри \"/help %s\" "
+"для помощи по синтаксису команды"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:124
+#, c-format
+msgid ""
+"Found end of input where character '%c' was expected: see \"/help %s\" for "
+"the command syntax"
+msgstr ""
+"Найден конец строки где ожидается символ '%c': смотри \"/help %s\" для "
+"справки по синтаксису команды"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:197
+msgid "Empty script"
+msgstr "Сценарий пуст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2650
+msgid ""
+"Syntax error after '%' variable prefix. If you want to use a plain '%' in "
+"the code you need to escape it"
+msgstr ""
+"Синтаксическая ошибка в начале переменной '%'. Если вы хотите использовать "
+"просто '%' в вашем коде, вам нужно использовать escape-последовательность"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2667
+msgid "Objects have no extended scope variables"
+msgstr "Объект не имеет расширенных значений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2727
+msgid "Found character '%q' (unicode %x) where an instruction was expected"
+msgstr "Найден символ '%q' (уникод %x) там где ожидалась инструкция"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2760
+msgid "Unterminated instruction block"
+msgstr "Незаконченный блок инструкций"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2761
+msgid "Unexpected end of script in instruction block (missing closing brace)"
+msgstr "Неожиданный конец сценария в блоке инструкций (нет закрывающей скобки)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2838
+msgid ""
+"The dash after a command should be followed by a letter (switch), by a digit "
+"(negative number) or be escaped"
+msgstr ""
+"Черта после команды должна сопровождаться буквой (ключ), цифрой "
+"(отрицательное число) или escaped"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2842
+msgid "Unexpected character '%q' (unicode %x) after a switch dash"
+msgstr "Неожиданный символ '%q' (уникод %x) после тире"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2844
+msgid "Unexpected end of script after a switch dash"
+msgstr "Неожиданный конец сценария после тире"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2869
+msgid ""
+"The above problem might be related to the switch dash and the following "
+"equal sign"
+msgstr ""
+"Указанная проблема могла быть обусловлена тире и следующим знаком равенства"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2948
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3016
+msgid "Unexpected end of script in parameter list"
+msgstr "Неожиданный конец сценария в списке параметров"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2954
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3022
+msgid "Unexpected end of line in parameter list"
+msgstr "Неожиданный конец строки в списке параметров"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3083
+msgid ""
+"Nested character %q corresponding to expected terminator, this might confuse "
+"me a bit: it is a good idea to enclose it in quotes"
+msgstr ""
+"Вложенный символ %q соответствует ожидаемому признаку окончания, лучше "
+"заключать это в кавычки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3093
+msgid "Skipping nested terminator character %q"
+msgstr "Пропуск вложенного символа окончания %q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3120
+msgid "Stray backslash at the end of the script"
+msgstr "Лишний обратный слеш в конце сценария"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3393
+msgid "Unterminated hash key"
+msgstr "Не закрытый хеш ключа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3387
+msgid "Unexpected end of script in hash key (missing '}' character ?)"
+msgstr "Неожиданный конец сценария в хеше ключа (не хватает символа '}' ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3394
+msgid ""
+"Unexpected end of line in hash key (missing '}' character or unescaped "
+"newline)"
+msgstr ""
+"Неожиданный конец строки в хеше ключа (не хватает символа '}' или новой "
+"строки)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3679
+msgid "Unterminated string constant"
+msgstr "Строка с константой не закрыта"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3673
+msgid "Unexpected end of script in string constant (missing \" character ?)"
+msgstr ""
+"Неожиданный конец сценария в строковой константе (отсутствует символ \" ? )"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3680
+msgid ""
+"Unexpected end of line in string constant (missing \" character or unescaped "
+"newline)"
+msgstr ""
+"Неожиданный конец строки в строковой константе (отсутствует символ \" или "
+"новой строки)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_processmanager.cpp:225
+msgid "Error triggered from process callback handler: killing process"
+msgstr "Ошибка запуска процесса из обработчика: процесс убит"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arraycount.cpp:72
+msgid ""
+"The argument of the array count '#' operator didn't evaluate to an array: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+"Аргумент счёта массива '#' не определяется как массив: автоматически "
+"преобразовано в тип %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:197
+msgid "This window has no associated IRC context and is not a DCC chat"
+msgstr "Это окно не связано с контекстом IRC и не является DCC чатом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:293
+msgid "Class \"%Q\" is not defined"
+msgstr "Класс %Q не определён"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:303
+msgid "The specified parent object does not exist"
+msgstr "Заданный родительский объект не существует"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:430
+msgid "There is no option named '%Q'"
+msgstr "Нет опции с именем '%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:85
+msgid "Internal error: pure virtual evaluateReadOnly called"
+msgstr "Внутренняя ошибка: вызов чистой виртуальной evaluateReadOnly"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:91
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:104
+msgid ""
+"Internal error: trying to evaluate as read-write a read-only data location"
+msgstr ""
+"Внутренняя ошибка: попытка использовать данные в режиме чтение-запись "
+"которые доступны только на чтение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:98
+msgid "Internal error: pure virtual evaluateReadOnlyInObjectScope called"
+msgstr "Внутренняя ошибка: pure virtual evaluateReadOnlyInObjectScope called"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:215
+msgid "[KVS]%c Warning: %Q"
+msgstr "[KVS]%c Предупреждение: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:211
+msgid "[KVS]%c Compilation Error: %Q"
+msgstr "[KVS]%c Ошибка при компиляции: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:219
+msgid "[KVS]%c Runtime Error: %Q"
+msgstr "[KVS]%c Ошибка при выполнении: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:224
+msgid "[KVS] in script context \"%Q\""
+msgstr "[KVS] В контексте сценария \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:226
+msgid "[KVS] in script context \"%Q\", %Q"
+msgstr "[KVS] в контексте скрипта \"%Q\", %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:233
+msgid "[KVS] Code listing:"
+msgstr "[KVS] Листинг кода:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:238
+msgid "[KVS] Window:"
+msgstr "[KVS] окно:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:242
+#, c-format
+msgid "[KVS] Destroyed window with pointer %x"
+msgstr "[KVS] Уничтожено окно с адресом %x"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:246
+msgid "[KVS] Call stack:"
+msgstr "[KVS] Стек вызовов:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:464
+#, c-format
+msgid "Window with ID '%s' not found, returning empty string"
+msgstr "Окно с ID '%s' не найдено, возвращается пустая строка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:130
+msgid "The specified window is not a channel"
+msgstr "Заданное окно не является каналом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:392
+msgid "The $sw() function can be used only in aliases"
+msgstr "Функция $sw() может использоваться только в псевдонимах"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:302
+msgid "Invalid pitch value: using default"
+msgstr "Недействительное значение тона: используется умолчательное"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:312
+msgid "Invalid duration value: using default"
+msgstr ""
+"Недействительное значение продолжительности: используется умолчательное"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:421
+msgid "No button with type %Q named %Q"
+msgstr "Нет кнопки типа %Q с именем %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:632
+msgid "Can't delete a null object reference"
+msgstr "Невозможно удалить ссылку на нулевой объект"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:638
+msgid "Can't delete an inexisting object"
+msgstr "Невозможно удалить несуществующий объект"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:692
+msgid "Inexisting popup \"%Q\""
+msgstr "В существующем всплывающем меню \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:698
+msgid ""
+"Popup menu self-modification is not allowed (the popup is probably open)"
+msgstr ""
+"Самомодификация всплывающего меню не допускается (всплывающее меню вероятно "
+"открыто)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:705
+msgid "The menu item with id \"%Q\" does not exist in popup \"%Q\""
+msgstr "Пункт меню с ID \"%Q\" не существует во всплывающем меню \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:860
+msgid ""
+"The argument of the -w switch did not evaluate to a valid window id: using "
+"default"
+msgstr ""
+"Аргумент ключа -w не является действительным ID окна: используется дефолтный"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:869
+msgid ""
+"The argument of the i switch did not evaluate to a number: using default"
+msgstr "Аргумент ключа i не является числом: используется по умолчанию"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:981
+msgid "Invalid color-set specification, using default"
+msgstr "Недействительное определение цвета, используется значение по умолчанию"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:992
+#, c-format
+msgid "Window '%s' not found, using current one"
+msgstr "Окно '%s' не найдено, используется текущее"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:78
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a callback "
+"command named '%Q'"
+msgstr ""
+"Ошибка команды вызова модуля: модуль '%Q' не может предоставить команду с "
+"именем '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp:401
+#, c-format
+msgid "The popup '%s' is actually locked: 'self-modifications' are not allowed"
+msgstr ""
+"Всплывающее меню '%s' фактически заблокировано: самомодификация не допустима"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:822
+#, fuzzy, c-format
+msgid "Ignoring DCC from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "Проигнорировано CTCP от \r!nс\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:839
+#, fuzzy, c-format
+msgid "Ignoring CTCP from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "Проигнорировано CTCP от \r!nс\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:978
+msgid "The following CTCP reply has unrecognized target %Q"
+msgstr "Ответ CTCP имеет неопознанную цель %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1025
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1128
+msgid "Channel CTCP"
+msgstr "CTCP в канал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:988
+msgid "%Q %Q reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "%Q %Q ответ от \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1018
+msgid "The following CTCP request has unrecognized target %Q"
+msgstr "Запрос CTCP имеет неопознанную цель %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1032
+msgid ""
+"%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignored (flood limit "
+"exceeded)"
+msgstr ""
+"%Q %Q%c запрос от \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), проигнорирован (сработала "
+"защита от флуда)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1036
+msgid "ignored (unrecognized)"
+msgstr "проигнорировано (неопознан)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "ignored"
+msgstr "проигнорировано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "replied"
+msgstr "ответ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1041
+msgid "%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+msgstr "%Q %Q%c запрос от \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1079
+msgid "The following CTCP PING reply has unrecognized target \"%Q\""
+msgstr "Ответ PING CTCP имеет неопознанную цель \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1113
+#, c-format
+msgid ""
+"The following CTCP PING reply has a broken time identifier \"%S\", don't "
+"trust the displayed time"
+msgstr "Ответ PING CTCP имеет битый идентификатор времени \"%S\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1132
+msgid "%Q PING reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sec %u msec"
+msgstr "%Q ответ PING от \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u сек %u мсек"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1466
+msgid "The following CTCP ACTION has unrecognized target %Q"
+msgstr "CTCP ACTION имеет неопознанную цель %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1471
+msgid "CTCP ACTION from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "CTCP ACTION от \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1517
+msgid "Unable to add file offer for file %Q (File not readable?)"
+msgstr ""
+"Не могу добавить файл в список открытого доступа %Q (Файл не читается?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1521
+msgid "Added %d sec file offer for file %Q (%Q) to recipient %Q"
+msgstr "Добавлено %d сек файла к файлу %Q (%Q) получатель %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "private"
+msgstr "приват"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "channel notification:"
+msgstr "уведомление канала:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1579
+msgid "notification"
+msgstr "уведомление"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1584
+msgid "%Q unsets avatar"
+msgstr "%Q отменил аватар"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1591
+msgid "%Q changes avatar to %s"
+msgstr "%Q изменил аватар на %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1637
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (HTTP GET %s)"
+msgstr ":Аватар не найден в кэше, скачиваем его (HTTP GET %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1644
+msgid ""
+": No valid local copy of avatar available; failed to start an HTTP transfer, "
+"ignoring"
+msgstr ": Аватар не найден в кэше. Не могу открыть HTTP соединение."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1652
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (DCC GET %s)"
+msgstr ": Аватар не найден в кэше, скачиваем его (DCC GET %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1664
+msgid ""
+": No valid local copy of avatar available; flood limit exceeded, ignoring"
+msgstr ": Аватар не найден в кэше, превышен лимит флуда, проигнорировано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1669
+msgid ": No valid local copy of avatar available, ignoring"
+msgstr ": Аватар не найден в кэше, проигнорировано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1677
+msgid ": No such nickname in the user database, ignoring the change"
+msgstr ": Не найден ник в базе пользователей, изменения проигнорированы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1717
+msgid "Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S)"
+msgstr "Проигнорирован DCC %S запрос от \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1759
+msgid "Processing DCC %Q request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s)"
+msgstr "Обработка DCC %Q запроса от \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1770
+#, c-format
+msgid "Unable to process the above request: Cannot load DCC module (%s)"
+msgstr ""
+"Не могу обработать поступивший запрос: Невозможно загрузить модуль DCC (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1776
+msgid "Unable to process the above request: DCC module may be broken"
+msgstr "Не могу обработать поступивший запрос: Модуль DCC повреждён"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:132
+msgid ""
+"[Server parser]: Encountered problems while parsing the following message:"
+msgstr ""
+"[Синтаксический анализатор сервера]: Возникли проблемы при разборе "
+"следующего сообщения:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:134
+msgid "[Server parser]: [%s][%s] %Q"
+msgstr "[Синтаксический анализатор сервера]: [%s][%s] %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:136
+#, c-format
+msgid "[Server parser]: %s"
+msgstr "[Синтаксический анализатор сервера]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:98
+msgid "Received ping from \r!s\r%Q\r (PING %Q), replied pong"
+msgstr "Получен пинг от \r!s\r%Q\r (PING %Q), отсылаю pong"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:125
+#, c-format
+msgid "Received pong from \r!s\r%s\r (PONG %s)"
+msgstr "Получен pong от \r!s\r%s\r (PONG %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:151
+msgid "Server ERROR: %Q"
+msgstr "ОШИБКА Сервера: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:174
+msgid "Missing channel parameter in join message"
+msgstr "Не указано имя канала в JOIN-сообщении"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:209
+msgid "Received a join message for an unknown channel, possible desync"
+msgstr ""
+"Получено JOIN-сообщение для неизвестного канала. Возможно, рассинхронизация"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:305
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r [implicit +%c umode change]"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] зашел на \r!c\r%Q\r [implicit +%c umode change]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:310
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] зашел на \r!c\r%Q\r "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:324
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] только что зашел на \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:355
+msgid "Received a part message for an unknown channel, possible desync"
+msgstr ""
+"Получена часть сообщения от неизвестного канала, возможна рассинхронизация"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:384
+msgid "You have left channel \r!c\r%Q\r"
+msgstr "Вы покидаете канал \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:386
+msgid "You have left channel \r!c\r%Q\r: %Q"
+msgstr "Вы покидаете канал \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:402
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] покинул \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:406
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] покинул \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:420
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r: %Q"
+msgstr "\r!nс\r%Q\r [%Q@\r!h\r%Q\r] только что покинул \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:424
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r"
+msgstr "\r!nс\r%Q\r [%Q@\r!h\r%Q\r] только что покинул \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:494
+#, c-format
+msgid "Netsplit detected: %s"
+msgstr "Обнаружен обрыв сети: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:546
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:562
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] вышел из IRC: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:589
+msgid "Received a kick message for an unknown channel, possible desync"
+msgstr ""
+"получено сообщение о кике от неизвестного канала, возможна рассинхронизация"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:626
+msgid "You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Вас кикнули \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:633
+msgid "Attempting to rejoin \r!c\r%Q\r..."
+msgstr "Попытка вернуться \r!c\r%Q\r..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:670
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@"
+"\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] кикнут на \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q"
+"\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:682
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just been kicked from \r!c\r%Q\r by \r!n\r%Q"
+"\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] только что был кикнут на \r!c\r%Q\r by \r!n\r%Q\r "
+"[%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:710
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+"Появилось следующее шифрованное сообщение, но криптовальная машина не может "
+"его декодировать: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:776
+msgid "Ignoring query-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Проигнорировано приватное сообщение от \r!nс\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:843
+msgid ""
+"Spam privmsg from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%s\")"
+msgstr ""
+"Спам сообщение от \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (совпадает со спам-словом "
+"\"%s\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:984
+msgid "Ignoring channel-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Проигнорировано сообщение в канал от \r!nс\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1106
+msgid "Ignoring Notice from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Проигнорировано уведомление от \r!nс\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1159
+msgid "NickServ requests authentication, executing scheduled command"
+msgstr "NickServ запросил аутентификацию, запущена соответствующая команда"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1162
+msgid ""
+"The scheduled NickServ identification command appears to be broken, please "
+"change the setting"
+msgstr ""
+"Плановая идентификация NickServ не прошла, пожалуйста откорректируйте "
+"настройки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1213
+msgid ""
+"Spam notice from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%Q\")"
+msgstr ""
+"Спам извещение от \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (совпадает со спам-словом "
+"\"%Q\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1394
+msgid "Received a topic message for an unknown channel, possible desync"
+msgstr ""
+"Получено сообщение с темой от неизвестного канала, возможна рассинхронизация"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1413
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has changed topic to \"%Q%c\""
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] изменил тему на \"%Q%c\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1512
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] теперь известен как \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1063
+msgid "You have changed your nickname to %Q"
+msgstr "Вы изменили свой ник на %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1477
+msgid ""
+"The target of this query was lost and has been found when \r!n\r%Q\r [%Q@\r!h"
+"\r%Q\r] changed his nickname to \r!n\r%Q\r"
+msgstr ""
+"Цель привата была утеряна и обнаружилась когда \r!n\r%Q\r [%Q@\r!h\r%Q\r] "
+"сменил свой ник на \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1486
+msgid ""
+"The recent nickname change from \r!n\r%Q\r to \r!n\r%Q\r caused a query "
+"collision: merging output"
+msgstr ""
+"Недавнее изменение ника у \r!n\r%Q\r to \r!n\r%Q\r является причиной "
+"противоречия окнах приватов: слияние вывода"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1495
+msgid "End of merged output"
+msgstr "Конец слияния вывода"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1540
+msgid "Ignoring invite from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "Проигнорировано приглашение от \r!nс\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "autojoining"
+msgstr "автоматический вход"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "double-click the channel name to join"
+msgstr "для входа используйте двойной клик"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1556
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] invites you to channel \r!c\r%Q\r (%Q)"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] приглашает вас на канал \r!c\r%Q\r (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1564
+msgid "Received an invite message directed to another nick, possible desync"
+msgstr ""
+"Полученное сообщение о приглашение предназначено другому нику, возможна "
+"рассинхронизация"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1584
+msgid "WALLOPS from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "WALLOPS от \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1648
+#, c-format
+msgid "You have set user mode %s"
+msgstr "У вас установлен режим %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1655
+msgid "Received a mode change for an unknown channel, possible desync"
+msgstr ""
+"Получено изменение режима от неизвестного канала, возможна рассинхронизация"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1731
+msgid "%Q [%Q@%Q] has set channel key to \"\r!m-k\r%Q\r\""
+msgstr "%Q [%Q@%Q] включил ключ канала \"\r!m-k\r%Q\r\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1734
+msgid "%Q [%Q@%Q] has unset the channel key"
+msgstr "%Q [%Q@%Q] выключил ключ канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1754
+msgid "%Q [%Q@%Q] has set channel \r!m-l\rlimit to %Q\r"
+msgstr "%Q [%Q@%Q] установил на канале \r!m-l\rлимит в %Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1757
+msgid "%Q [%Q@%Q] has unset the channel limit"
+msgstr "%Q [%Q@%Q] выключил лимит на канале"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1779
+msgid "%Q [%Q@%Q] has set mode %c%c \r!n\r%Q\r"
+msgstr "%Q [%Q@%Q] включил режим %c%c \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1787
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1834
+msgid "%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"
+msgstr "%Q [%Q@%Q] включил на канале \r!m%c%c\r режим %c%c\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1819
+msgid "%Q [%Q@%Q] has set mode %c%c \r!m%c%c\r%Q\r"
+msgstr "%Q [%Q@%Q] включил режим %c%c \r!m%c%c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1860
+msgid "%Q [%Q@%Q] has set mode %s %Q"
+msgstr "%Q [%Q@%Q] включил режим %s %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1863
+msgid "%Q [%Q@%Q] has set channel mode %s"
+msgstr "%Q [%Q@%Q] включил на канале режим %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:147
+#, c-format
+msgid ""
+"One or more standard mode flags are missing in the server available modes.\n"
+"This is caused either by a non RFC1459-compliant IRC daemon or a broken "
+"server reply.\n"
+"Server umodes seem to be '%s' and channel modes seem to be '%s'.\n"
+"Ignoring this reply and assuming that the basic set of modes is available.\n"
+"If you have strange problems, try changing the server."
+msgstr ""
+"Один или несколько флагов стандартных режимов недоступны.\n"
+"Это вызвано или несовместимым с RFC1459 IRC демоном или битым ответом "
+"сервера.\n"
+" Сервер не может предоставить режим '%s' и канал предоставляет '%s'.\n"
+"Эти ответы проигнорированы и сделано допущение, что основные режимы "
+"доступны.\n"
+"Если у вас такие проблемы, лучше смените сервер."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:159
+msgid "Available user modes:"
+msgstr "Доступные пользовательские режимы:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:169
+msgid ": Unknown user mode"
+msgstr ": Неизвестный пользовательский режим"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:177
+msgid "Available channel modes:"
+msgstr "Доступные режимы канала:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:197
+msgid "Server %Q version %S supporting user modes '%S' and channel modes '%S'"
+msgstr ""
+"Сервер %Q версии %S поддерживает пользовательские режимы '%S' и режимы "
+"канала '%S'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:244
+msgid "This server supports the WATCH notify list method, it will be used"
+msgstr ""
+"Сервер поддерживает метод списка извещений WATCH , он будет использоваться"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:262
+msgid "The current network is %Q"
+msgstr "Текущая сеть - %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:303
+msgid "This server supports the CODEPAGE command, it will be used"
+msgstr "Сервер поддерживает команду CODEPAGE , она будет использоваться"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:319
+#, c-format
+msgid "This server supports: %s"
+msgstr "Этот сервер поддерживает: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:375
+msgid "End of NAMES for \r!c\r%Q\r"
+msgstr "Окончание NAMES для \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:472
+msgid "Names for \r!c\r%Q\r: %Q"
+msgstr "Имена для \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:487
+msgid "(unknown)"
+msgstr "(неизвестный)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:491
+msgid "Channel topic is: %Q"
+msgstr "Тема канала: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:498
+msgid "Topic for \r!c\r%Q\r is: %Q"
+msgstr "Тема канала \r!c\r%Q\r - %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:516
+msgid "No channel topic is set"
+msgstr "Тема канала не установлена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:521
+msgid "No topic is set for channel \r!c\r%Q\r"
+msgstr "Тема канала \r!c\r%Q\r не установлена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:560
+msgid "Topic was set by %Q on %Q"
+msgstr "Тема установлена %Q на %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:561
+msgid "Topic was set by %Q"
+msgstr "Тема установлена %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:569
+msgid "Topic for \r!c\r%Q\r was set by %Q on %Q"
+msgstr "Тема канала \r!c\r%Q\r установлена %Q на %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:572
+msgid "Topic for \r!c\r%Q\r was set by %Q"
+msgstr "Тема канала \r!c\r%Q\r установлена %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:592
+msgid "Channel mode for \r!c\r%Q\r is %s"
+msgstr "Режим канала \r!c\r%Q\r - %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:595
+msgid "User mode for \r!n\r%Q\r is %s"
+msgstr "Режим канала \r!n\r%Q\r - %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:631
+msgid "End of channel %Q for \r!c\r%Q\r"
+msgstr "Окончание канала %Q для \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:635
+msgid "ban list"
+msgstr "бан-лист"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:636
+msgid "invite list"
+msgstr "список приглашений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:637
+msgid "ban exception list"
+msgstr "список исключений из банов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:658
+msgid "%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"
+msgstr "%Q для \r!c\r%Q\r: \r!m-%c\r%Q\r (установлено %Q из %Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:665
+msgid "Ban listing"
+msgstr "Список банов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:668
+msgid "Invite listing"
+msgstr "Список приглашений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:671
+msgid "Ban exception listing"
+msgstr "Список исключений из банов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:740
+msgid ""
+"WHO entry for %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cChannel%c: \r!c\r%Q\r, %"
+"cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAway%c: %Q, %cReal name"
+"%c: %Q"
+msgstr ""
+"Ответ WHO от %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %c Канал %c: \r!c\r%Q\r, %c "
+"Сервер %c: \r!s\r%Q\r, %c Прыжков %c: %d, %c Флаги %c: %Q, %c Отошёл %c: %Q, "
+"%c Реальное имя %c: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:797
+msgid "End of WHO list for %Q"
+msgstr "Конец WHO списка для %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:856
+msgid ""
+"Something really weird is happening: the server is refusing all the login "
+"nicknames..."
+msgstr "Происходит что то странное: сервер отклоняет вход со всеми никами..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:861
+msgid ""
+"The server is refusing all the login nicknames: giving up, you must send the "
+"nickname manually"
+msgstr "Сервер отклоняет вход по всем никам, вы должны послать ник вручную"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:871
+msgid "No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."
+msgstr "Невозможно войти под ником '\r!n\r%Q\r' (%d: %Q), пробую '%Q'..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:945
+msgid "Command syntax %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:973
+#, fuzzy
+msgid "Tip: %Q"
+msgstr "Список: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:976
+#, fuzzy
+msgid "Tip for %Q: %Q"
+msgstr "Тема канала \r!c\r%Q\r - %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:993
+#, fuzzy
+msgid "End of help about %Q"
+msgstr "Конец WHO списка для %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1037
+msgid "%c\r!n\r%Q\r%c is away: %Q"
+msgstr "%c\r!n\r%Q\r%c отошёл: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1090
+msgid "%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "%c\r!n\r%Q\r%c является %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1095
+msgid "%c\r!n\r%Q\r%c's real name: %Q"
+msgstr "%c\r!n\r%Q\r%c реальное имя: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1115
+msgid "%c\r!n\r%Q\r%c was %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "%c\r!n\r%Q\r%c был %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1119
+msgid "%c\r!n\r%Q\r%c's real name was: %Q"
+msgstr "%c\r!n\r%Q\r%c было реальное имя: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1183
+msgid "%c\r!n\r%Q\r%c's channels: %Q"
+msgstr "%c\r!n\r%Q\r%c каналы: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1220
+msgid "Received a broken RPL_WHOISIDLE, can't evaluate the idle time"
+msgstr "Получен битый RPL_WHOISIDLE, не могу определить время простоя"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1230
+msgid "%c\r!n\r%Q\r%c's idle time: %ud %uh %um %us"
+msgstr "%c\r!n\r%Q\r%c время простоя: %u д %u ч %u м %u с"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1240
+msgid "%c\r!n\r%Q\r%c's signon time: %Q"
+msgstr "%c\r!n\r%Q\r%c время авторизации: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1274
+msgid "%c\r!n\r%Q\r%c's server: \r!s\r%Q\r - %Q"
+msgstr "%c\r!n\r%Q\r%c сервер: \r!s\r%Q\r - %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1293
+msgid "%c\r!n\r%Q\r%c is authenticated as %Q"
+msgstr "%c\r!n\r%Q\r%c идентифицирован как: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1325
+msgid "%c\r!n\r%Q\r%c's info: %Q"
+msgstr "%c\r!n\r%Q\r%c информация: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1372
+msgid "%c\r!n\r%Q\r%c WHOIS info from \r!s\r%Q\r"
+msgstr "%c\r!n\r%Q\r%c WHOIS информация от \r!s\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1389
+msgid "%c\r!n\r%Q\r%c WHOWAS info from \r!s\r%Q\r"
+msgstr "%c\r!n\r%Q\r%c WHOWAS информация от \r!s\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1457
+msgid "Can't evaluate creation time"
+msgstr "Не возможно определить время создания"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1465
+msgid "Channel was created at %Q"
+msgstr "Канал создан %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1470
+msgid "Channel \r!c\r%Q\r was created at %Q"
+msgstr "Канал \r!c\r%Q\r создан %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1511
+msgid "USERHOST info: %Q"
+msgstr "Информация USERHOST: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1532
+msgid "Channel list begin: channel, users, topic"
+msgstr "Начало канального списка: канал, пользователи, тема"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1559
+msgid "List: %Q"
+msgstr "Список: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1573
+msgid "End of LIST"
+msgstr "Конец LIST"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1597
+msgid "Link: %Q"
+msgstr "Ссылка: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1612
+msgid "End of LINKS"
+msgstr "Конец LINKS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1641
+msgid "[Leaving away status after %ud %uh %um %us]: %Q"
+msgstr "[Выход из статуса Отошёл после %u д %u ч %u м %u с]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1645
+msgid "[Leaving away status]: %Q"
+msgstr "[Выход из статуса Отошёл]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1652
+msgid "Restoring pre-away nickname (%Q)"
+msgstr "Восстановление ника (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1672
+msgid "[Entering away status]: %Q"
+msgstr "[Включение статуса Отошёл]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1690
+msgid "Setting away nickname (%Q)"
+msgstr "Установка ника в режиме Отошёл (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1762
+#, c-format
+msgid "%c\r!s\r%s\r%c's server info: %s"
+msgstr "%c\r!s\r%s\r%c информация о сервере: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1773
+#, c-format
+msgid "%c\r!s\r%s\r%c's administrator is %s"
+msgstr "%c\r!s\r%s\r%c администратор %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1784
+#, c-format
+msgid "%c\r!s\r%s\r%c's contact adress is %s"
+msgstr "%c\r!s\r%s\r%c контактный адрес %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1812
+msgid "\r!n\r%Q\r invited %Q into channel %Q"
+msgstr "\r!n\r%Q\r приглашает %Q на канал %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1834
+#, c-format
+msgid "%c\r!s\r%s\r%c's information:"
+msgstr "%c\r!s\r%s\r%c's информация:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1844
+#, c-format
+msgid "End of %c\r!s\r%s\r%c's information"
+msgstr "Конец %c\r!s\r%s\r%c's информации"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1855
+msgid "%c\r!s\r%s\r%c's time is %Q"
+msgstr "%c\r!s\r%s\r%c's время %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1866
+msgid "%Q: no such server"
+msgstr "%Q: нет такого сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1877
+msgid "%Q: no such channel"
+msgstr "%Q: нет такого канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1891
+msgid "Cannot sent to channel: %Q"
+msgstr "Не могу отослать данные на канал: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1894
+msgid "Cannot sent text to channel %Q: %Q"
+msgstr "Не могу отослать данные на канал %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1909
+msgid "Cannot sent to channel"
+msgstr "Не могу отослать данные на канал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1912
+msgid "Cannot sent text to channel %Q"
+msgstr "Не могу отослать текст на канал %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1928
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1936
+msgid "Your encoding is now %Q"
+msgstr "Используемая кодировка %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1967
+msgid "%c\r!n\r%Q\r%c's codepage is %Q: %Q"
+msgstr "%c\r!n\r%Q\r%c использует кодировку %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1991
+#, c-format
+msgid "Your user mode is %s"
+msgstr "Ваш пользовательский режим %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:158
+msgid "Failed to set the encoding to %Q: mapping not available."
+msgstr ""
+"Невозможно установить кодировку %Q: данные об этой кодировке не доступны"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:175
+msgid "Changed text encoding to %Q"
+msgstr "кодировка текста изменена на %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:503
+msgid "Connection to server lost"
+msgstr "Соединение с сервером утеряно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:512
+msgid "Connection to server established"
+msgstr "Соединение с сервером установлено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:573
+msgid "[LINK WARNING]: Socket message truncated to 512 bytes."
+msgstr "[ПРЕДУПРЕЖДЕНИЕ СОЕДИНЕНИЯ]: Сообщение сокета обрезано до 512 байт."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:640
+msgid ""
+"The server seems to support the WATCH notify list method, will try to use it"
+msgstr ""
+"Сервер кажется поддерживает метод WATCH списка уведомлений, пытаюсь это "
+"использовать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:688
+msgid "Can't resolve local host address, using user supplied one (%Q)"
+msgstr ""
+"Не могу определить локальный адрес, использую только предоставленный "
+"пользователем (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:695
+msgid "Can't resolve local host address, using default 127.0.0.1"
+msgstr "Не могу определить локальный адрес, использую 127.0.0.1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:701
+msgid "Local host address is %Q"
+msgstr "Локальный адрес %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:749
+msgid "The server seems to have changed the idea about the local hostname"
+msgstr "Сервер кажется хочет изменить хостмаску"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:750
+msgid ""
+"You're probably using a broken bouncer or maybe something weird is happening "
+"on the IRC server"
+msgstr ""
+"Вы вероятно используете баунсер или на IRC сервере происходит что-то странное"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:776
+msgid ""
+"Here goes your \"broken bouncer hack\": The server has changed the hostname "
+"but I'll ignore the IP address change"
+msgstr ""
+"Здесь идёт ваш \"broken bouncer hack\": Сервер изменил имя хоста но я "
+"проигнорировал изменение IP адреса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:791
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:801
+msgid "The local IP address as seen by the IRC server is %Q"
+msgstr "Локальный IP адрес видимый IRC сервером %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:815
+msgid "Can't start the DNS slave thread"
+msgstr "Не могу запустить вторичную нить DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:816
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:846
+msgid "Unable to resolve the local hostname as seen by the IRC server: %Q"
+msgstr ""
+"Не могу определить, какой IP соответствует мне по данным IRC сервера: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:822
+msgid "Looking up the local hostname as seen by the IRC server (%Q)"
+msgstr "Определение локального адреса через IRC сервер (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:843
+msgid ""
+"Unable to resolve the local hostname as seen by the IRC server: %Q, using "
+"previously resolved %Q"
+msgstr ""
+"Не могу определить, какой мой IP видит IRC сервер: %Q, использую "
+"определенный ранее %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:850
+msgid "Local hostname as seen by the IRC server resolved to %Q"
+msgstr "IRC сервер видит нас как %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:868
+msgid "Using server specific username (%Q)"
+msgstr "Используемое специфичное имя для сервера (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:873
+msgid "Using network specific username (%Q)"
+msgstr "Используемое специфичное имя для сети (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:892
+#, fuzzy
+msgid "Using reconnect specific nickname (%Q)"
+msgstr "Используемый специфичный ник для сети (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:898
+msgid "Using server specific nickname (%Q)"
+msgstr "Используемый специфичный ник для сервера (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:905
+msgid "Using network specific nickname (%Q)"
+msgstr "Используемый специфичный ник для сети (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:922
+msgid "Using server specific real name (%Q)"
+msgstr "Используемое специфичное реальное имя для сервера (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:929
+msgid "Using network specific real name (%Q)"
+msgstr "Используемое специфичное реальное имя для сети (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:946
+msgid "Logging in as %Q!%Q :%Q"
+msgstr "Вошел как %Q!%Q :%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:962
+#, c-format
+msgid "Sending %s as password"
+msgstr "Отправка %s как пароля"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1033
+msgid "Executing scheduled network specific \"on connect\" commands"
+msgstr "Выполнение запланированной \"при соединении\" с сетью команды"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1042
+msgid "Executing scheduled server specific \"on connect\" commands"
+msgstr "Выполнение запланированной \"при соединении\" с сервером команды"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1051
+#, fuzzy
+msgid "Executing scheduled identity specific \"on connect\" commands"
+msgstr "Выполнение запланированной \"при соединении\" с сетью команды"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1101
+#, c-format
+msgid "The server refused the suggested nickname (%s) and named you %s instead"
+msgstr "Сервер отклонил предложенный вами ник (%s) и назвал вас %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1113
+msgid "Login operations complete, happy ircing!"
+msgstr "Подключение прошло успешно, добро пожаловать в IRC!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1123
+msgid "Executing scheduled network specific \"on login\" commands"
+msgstr "Запуск команды \"при входе\" в сеть"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1132
+msgid "Executing scheduled server specific \"on login\" commands"
+msgstr "Запуск команды \"при входе\" на сервер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1141
+#, fuzzy
+msgid "Executing scheduled identity specific \"on login\" commands"
+msgstr "Запуск команды \"при входе\" в сеть"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1153
+msgid "Setting configured user mode"
+msgstr "Настройка конфигурации пользовательского режима"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1210
+msgid "Auto-joining network specific channels"
+msgstr "Автовход на специфичные для сети каналы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1244
+msgid "Auto-joining server specific channels"
+msgstr "Автовход на специфичные для сервера каналы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1341
+msgid "Updating away state for channel %Q"
+msgstr "Обновляю away списки для канала %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_customtoolbardescriptor.cpp:230
+msgid "Backward compatibility action for toolbar.define"
+msgstr "Действие обратной совместимости для toolbar.define"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:790
+msgid "Installation problems ?"
+msgstr "Проблемы с инсталляцией?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:791
+msgid ""
+"<b>Ooops...</b><br><br><b>There are some reasons that make me think that "
+"your KVIrc installation is incomplete.</b><br><br>I might be wrong, but you "
+"seem to miss some of the features that the default KVIrc script provides."
+"This may happen because you have upgraded to an unstable cvs version, "
+"because you have accidentally deleted or damaged your configuration files, "
+"because you have installed an incomplete script or because you have hit a "
+"bug in KVIrc.<br><br>I can repeat the installation of the default script in "
+"order to restore the missing features.<br><b>Do you want the default script "
+"to be restored ?</b><br><br><font size=\"-1\">Hint: If you're a scripter and "
+"have intentionally removed some of the scripting features then you may "
+"safely click on \"No and Don't Ask Me Again\", otherwise it might be a good "
+"idea to click \"Yes\". If you still want to choose \"No\" you can always "
+"restore the default script by choosing the appropriate entry from the "
+"\"Scripting\" menu.</font>"
+msgstr ""
+"<b>Упс...</b><br><br><b>Есть некоторые причины полагать, что ваша "
+"инсталляция KVIrc не полная.</b><br><br>Я могу ошибаться, но у вас кажется "
+"отсутствуют некоторые возможности которые предоставляются сценариями KVIrc "
+"по умолчанию. Это может произойти, если вы обновили нестабильную cvs-версию, "
+"если вы случайно удалили или изменили ваши конфигурационные файлы, если вы "
+"не полностью установили сценарии или если вы нашли баг в KVIrc.<br><br>Я "
+"могу повторить установку сценариев по умолчанию, чтобы восстановить "
+"потерянные возможности.<br><b>Вы хотите восстановить сценарии по умолчанию ?"
+"</b><br><br><font size=\"-1\">Совет: если вы пишите сценарии и умышлено "
+"удалили некоторые сценарии, вы можете щёлкнуть на \"Нет и больше меня не "
+"спрашивать\", в противном случае лучше сказать \"Да\". Если вы всё таки "
+"хотите ответить \"Нет\" вы всегда сможете восстановить сценарии по умолчанию "
+"выбрав соответствующий пункт в меню \"Сценарии\".</font>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:805
+msgid "No and Don't Ask Me Again"
+msgstr "Нет и больше меня не спрашивать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:828
+msgid "Restore Default Script - KVIrc"
+msgstr "Восстановление сценариев по умолчанию - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:829
+msgid ""
+"You are about to restore the default script.<br>This will erase any script "
+"changes you have made.<br>Do you wish to proceed?"
+msgstr ""
+"Вы собираетесь восстановить сценарии по умолчанию.<br>Это приведёт к "
+"удалению внесённых ранее изменений.<br>Хотите продолжить?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:872
+#, c-format
+msgid "Remote command received (%s ...)"
+msgstr "Дистанционная команда получила (%s ...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1033
+msgid "File download failed"
+msgstr "Ошибка загрузки файла"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1035
+msgid "File download from %1 failed"
+msgstr "Скачивание файла от %1 завершилось ошибкой"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1044
+msgid "File download successfully complete"
+msgstr "Скачивание файла успешно завершено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1046
+msgid "File download from %1 successfully complete"
+msgstr "Скачивание файла от %1 успешно завершено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1066
+msgid "Avatar download failed for %Q!%Q@%Q and url %Q: %Q"
+msgstr "Ошибка загрузки аватара для %Q!%Q@%Q и url %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2014
+#, c-format
+msgid "The commandline for media type '%s' seems to be broken"
+msgstr "Команда для медиа типа '%s' битая"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2018
+#, c-format
+msgid "Media type of file %s matched to '%s' but no commandline specified"
+msgstr "Медиа тип для файла %s привязан к %s но нет команды"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2023
+#, c-format
+msgid "No idea on how to play file %s (no media type match)"
+msgstr "Невозможно воспроизвести файл %s (нет соответствующего медиа типа)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:39
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:48
+#, c-format
+msgid "[SSL]: %c%s"
+msgstr "[SSL]: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:40
+#, c-format
+msgid "[SSL]: Cipher: %c%s"
+msgstr "[SSL]: Шифр: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:41
+#, c-format
+msgid "[SSL]: Version: %c%s"
+msgstr "[SSL]: Версия: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:42
+#, c-format
+msgid "[SSL]: Bits: %c%d (%d used)"
+msgstr "[SSL]: Биты: %c%d (%d используется)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:49
+#, c-format
+msgid "[SSL]: Version: %c%d"
+msgstr "[SSL]: Версия: %c%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:50
+#, c-format
+msgid "[SSL]: Serial number: %c%d"
+msgstr "[SSL]: Серийный номер: %c%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:51
+msgid "[SSL]: Subject:"
+msgstr "[SSL]: Тема:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:59
+#, c-format
+msgid "[SSL]: Common name: %c%s"
+msgstr "[SSL]: Общее имя: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:60
+#, c-format
+msgid "[SSL]: Organization: %c%s"
+msgstr "[SSL]: Организация: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:61
+#, c-format
+msgid "[SSL]: Organizational unit: %c%s"
+msgstr "[SSL]: Подразделение: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:62
+#, c-format
+msgid "[SSL]: Country: %c%s"
+msgstr "[SSL]: Страна: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:63
+#, c-format
+msgid "[SSL]: State or province: %c%s"
+msgstr "[SSL]: Штат или провинция: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:64
+#, c-format
+msgid "[SSL]: Locality: %c%s"
+msgstr "[SSL]: Местонахождение: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:58
+msgid "[SSL]: Issuer:"
+msgstr "[SSL]: Исходящее:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:65
+#, c-format
+msgid "[SSL]: Public key: %c%s (%d bits)"
+msgstr "[SSL]: Общедоступный ключ: %c%s (%d бит)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:66
+#, c-format
+msgid "[SSL]: Signature type: %c%s"
+msgstr "[SSL]: Тип сигнатуры: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:73
+#, c-format
+msgid "[SSL]: Signature contents: %c%s"
+msgstr "[SSL]: Контекст сигнатуры: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:82
+msgid "Peer X509 certificate"
+msgstr "Сертификат идентичный X509"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:85
+msgid "[SSL]: The peer didn't provide a certificate"
+msgstr "[SSL]: Собеседник не предоставил сертификат"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1219
+msgid "Current transmission cipher"
+msgstr "Текущий шифр передачи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:92
+msgid "[SSL]: Can't find out the current cipher info"
+msgstr "[SSL]: Не могу найти информацию о текущем шифре"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:113
+#, c-format
+msgid "[%s]: [SSL]: Using certificate file %s"
+msgstr "[%s]: [SSL]: Использование файла сертификата %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:116
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the certificate file %s"
+msgstr ""
+"[%s]: [ОШИБКА SSL]: Ошибка файлового I/O при попытке использовании файла "
+"сертификата %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:146
+#, c-format
+msgid "[%s]: [SSL ERROR]: %s"
+msgstr "[%s]: [ОШИБКА SSL]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:136
+#, c-format
+msgid "[%s]: [SSL]: Using private key file %s"
+msgstr "[%s]: [SSL]: Используется файл приватного ключа %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:139
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the private key file %s"
+msgstr ""
+"[%s]: [ОШИБКА SSL]: Ошибка файлового I/O при попытке использовании файла "
+"приватного ключа %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:375
+msgid "Reconnect attempt aborted"
+msgstr "Попытка переподключения прервана"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:443
+msgid ""
+"This is the first connection in this IRC context: using the global server "
+"setting"
+msgstr ""
+"Это первое подключение в данном IRC контексте: использую глобальные "
+"настройки серверов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:483
+msgid ""
+"No servers available. Check the options dialog or use the /SERVER command"
+msgstr ""
+"Нет доступных серверов. Проверьте настройки или используйте команду /SERVER"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:491
+msgid ""
+"Ooops.. you've hit a bug in the servers database... I have found a server "
+"but not a network..."
+msgstr ""
+"Упс.. Вы допустили ошибку в базе данных серверов... Я нашёл сервер, но не "
+"сеть..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:504
+msgid "No proxy hosts available, resuming direct connection"
+msgstr "Нет доступных прокси, используется прямое подключение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:582
+#, c-format
+msgid "Connection attempt failed [%s]"
+msgstr "Ошибка при попытке соединения [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:600
+#, c-format
+msgid "Will attempt to reconnect in %d seconds"
+msgstr "Попытка повторного подключения через %d секунд"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:604
+#, c-format
+msgid "%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:606
+#, c-format
+msgid "%d of %d"
+msgstr "%d из %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:633
+#, c-format
+msgid "Maximum number of reconnect attempts reached (%d): giving up"
+msgstr ""
+"Достигнуто максимальное количество попыток переподключения (%d): "
+"останавливаемся"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:647
+msgid ""
+"The connection attempt failed while using a cached IP address for the "
+"current server"
+msgstr ""
+"Ошибка при попытке подключения с использованием кеша IP адресов текущего "
+"сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:648
+msgid "The problem *might* be caused by an updated DNS entry"
+msgstr "Проблема *возможно* вызвана обновлением DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:649
+msgid "Try reconnecting with caching disabled"
+msgstr "Попробуйте подключиться с выключенным кешированием"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:673
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:382
+msgid "%Q established [%s (%s:%u)]"
+msgstr "%Q установлено [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Secure connection"
+msgstr "Безопасное подключение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Connection"
+msgstr "Соединение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:779
+#, c-format
+msgid "Connection terminated [%s (%s:%u)]"
+msgstr "Соединение разорвано [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:791
+msgid "The connection terminated unexpectedly. Trying to reconnect..."
+msgstr "Соединение неожиданно разорвалось. Пытаюсь подключиться повторно..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:874
+msgid "Sent QUIT, waiting for the server to close the connection..."
+msgstr "Отправлен QUIT, жду когда сервер закроет соединение.."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:685
+msgid "Normal text"
+msgstr "Нормальный текст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:686
+msgid "Selection"
+msgstr "Выбор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:687
+msgid "Highlighted text"
+msgstr "Подсветка текста"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:688
+msgid "URL foreground"
+msgstr "Начальный URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:689
+msgid "Link overlay foreground"
+msgstr "Начальная ссылка оверлея"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:690
+msgid "Parser error"
+msgstr "Ошибка синтаксического анализатора"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:691
+msgid "Parser warning"
+msgstr "Предупреждение синтаксического анализатора"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:692
+msgid "Host lookup result"
+msgstr "Результат поиска адреса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:693
+msgid "Socket message"
+msgstr "Сообщение сокета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:694
+msgid "Socket warning"
+msgstr "Предупреждение сокета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:695
+msgid "Socket error"
+msgstr "Ошибка сокета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:696
+msgid "System error"
+msgstr "Системная ошибка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:697
+msgid "Raw data to server"
+msgstr "Исходные данные сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:698
+msgid "Connection status"
+msgstr "Статус соединения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:699
+msgid "System warning"
+msgstr "Системное предупреждение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:700
+msgid "System message"
+msgstr "Системное сообщение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:701
+msgid "Unhandled server reply"
+msgstr "Ответ сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:702
+msgid "Server information"
+msgstr "Информация сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:703
+msgid "Server Message of the Day"
+msgstr "Сообщение дня сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:704
+msgid "Server ping"
+msgstr "Пинг сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:705
+msgid "Join message"
+msgstr "Сообщение о входе"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:706
+msgid "Part message"
+msgstr "Сообщение о покидании"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:707
+msgid "Unrecognized/broken message"
+msgstr "Неопознанное/битое сообщение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:708
+msgid "Topic message"
+msgstr "Тема"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:709
+msgid "Own private message"
+msgstr "Приватное сообщение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:710
+msgid "Channel private message"
+msgstr "Сообщение приватного канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:711
+msgid "Query private message"
+msgstr "Сообщение приватного чата"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:712
+msgid "CTCP reply"
+msgstr "Ответ CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:713
+msgid "CTCP request replied"
+msgstr "Ответ на запрос CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:714
+msgid "CTCP request ignored"
+msgstr "Запрос CTCP проигнорирован"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:715
+msgid "CTCP request flood warning"
+msgstr "Предупреждение флуда запросов CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:716
+msgid "CTCP request unknown"
+msgstr "Неизвестный запрос CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:717
+msgid "User action"
+msgstr "Действие пользователя"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:718
+msgid "Avatar change"
+msgstr "Смена аватара"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:719
+msgid "Quit message"
+msgstr "Сообщение о выходе"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:720
+msgid "Split message"
+msgstr "Расщеплённое сообщение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:721
+msgid "Quit on netsplit message"
+msgstr "Сообщение о выходе из-за потери сети"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:722
+msgid "Nick changes"
+msgstr "Ник изменён"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:723
+msgid "+o mode change"
+msgstr "изменение режима +o"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:724
+msgid "-o mode change"
+msgstr "изменение режима -o"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:725
+msgid "+v mode change"
+msgstr "изменение режима +v"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:726
+msgid "-v mode change"
+msgstr "изменение режима -v"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:727
+msgid "Multiple user mode change"
+msgstr "Изменение режима нескольких пользователей"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:728
+msgid "Channel key change"
+msgstr "Смена ключа канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:729
+msgid "Channel limit change"
+msgstr "Смена лимита канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:730
+msgid "+b mode change"
+msgstr "изменение режима +b"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:731
+msgid "-b mode change"
+msgstr "изменение режима -b"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:732
+msgid "+e mode change"
+msgstr "изменение режима +e"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:733
+msgid "-e mode change"
+msgstr "изменение режима -e"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:734
+msgid "+I mode change"
+msgstr "изменение режима +I"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:735
+msgid "-I mode change"
+msgstr "изменение режима -I"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:736
+msgid "Multiple channel mode change"
+msgstr "Изменение многоканального режима"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:737
+msgid "Who reply"
+msgstr "Кто ответил"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:738
+msgid "DCC request"
+msgstr "Запрос DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:739
+msgid "DCC message"
+msgstr "Сообщение DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:740
+msgid "DCC error"
+msgstr "Ошибка DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:741
+msgid "Nickname problem"
+msgstr "Проблема с ником"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:742
+msgid "Whois user reply"
+msgstr "Ответ пользователя Whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:743
+msgid "Whois channels reply"
+msgstr "Ответ канала Whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:744
+msgid "Whois idle reply"
+msgstr "Whois строка о бездействии"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:745
+msgid "Whois server reply"
+msgstr "Ответ севера Whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:746
+msgid "Whois other reply"
+msgstr "Другой ответ Whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:747
+msgid "Channel creation time reply"
+msgstr "Ответ о времени создания канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:748
+msgid "Notify list joins"
+msgstr "Вход в сеть пользователя из списка уведомлений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:749
+msgid "Notify list leaves"
+msgstr "Список уведомлений покинут"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:750
+msgid "Own encrypted private message"
+msgstr "Приватное сообщение с собственным криптованием"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:751
+msgid "Channel encrypted private message"
+msgstr "Приватное сообщение с криптованием канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:752
+msgid "Query encrypted private message"
+msgstr "Закодированное сообщение приватного чата"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:753
+msgid "DCC chat message"
+msgstr "Сообщение чата DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:754
+msgid "Encrypted DCC chat message"
+msgstr "Криптованое сообщение чата DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:755
+msgid "Login operations completed"
+msgstr "Действия при входе завершены"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:756
+msgid "Kick action"
+msgstr "Действие кикнуть"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:757
+msgid "Links reply"
+msgstr "Ответ ссылок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:758
+msgid "Spam report"
+msgstr "Спам отчёт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:759
+msgid "ICQ message"
+msgstr "Сообщение ICQ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:760
+msgid "ICQ user-message"
+msgstr "Сообщение пользователя ICQ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:761
+msgid "Outgoing ICQ user-message"
+msgstr "Сообщение пользователя ICQ о выходе"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:762
+msgid "Channel notice"
+msgstr "Извещение канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:763
+msgid "Encrypted channel notice"
+msgstr "Криптованое извещение канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:764
+msgid "Query notice"
+msgstr "Извещение привата"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:765
+msgid "Encrypted query notice"
+msgstr "Криптованое извещение привата"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:766
+msgid "Server notice"
+msgstr "Извещение сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:767
+msgid "Halfop mode change"
+msgstr "Смена режима полу-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:768
+msgid "Unknown CTCP reply"
+msgstr "Неизвестный ответ CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:769
+msgid "NickServ message"
+msgstr "Сообщение NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:770
+msgid "ChanServ message"
+msgstr "Сообщение ChanServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:771
+msgid "Away message"
+msgstr "Сообщение отошёл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:772
+msgid "Ident message"
+msgstr "Сообщение идентификации"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:773
+msgid "Channel list message"
+msgstr "Сообщение списка каналов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:774
+msgid "Half-deop mode change"
+msgstr "Смена режима не полу-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:775
+msgid "Invite message"
+msgstr "Сообщение о приглашении"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:776
+msgid "Multimedia message"
+msgstr "Мультимедийное сообщение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:777
+msgid "Query trace message"
+msgstr "Сообщение о запросе трассировки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:778
+msgid "Wallops message"
+msgstr "Сообщение Wallops"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:779
+msgid "Join error message"
+msgstr "Сообщение об ошибке входа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:780
+msgid "Broadcast private message"
+msgstr "Приватное широковещательное сообщение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:781
+msgid "Broadcast notice"
+msgstr "Широковещательное извещение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:782
+msgid "Am kicked"
+msgstr "Кикнут"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:783
+msgid "Am op'd"
+msgstr "Оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:784
+msgid "Am voiced"
+msgstr "Мне дан войс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:785
+msgid "Am deop'd"
+msgstr "Снят оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:786
+msgid "Am devoiced"
+msgstr "Снят войс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:787
+msgid "Am halfop'd"
+msgstr "Полу-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:788
+msgid "Am de-halfop'd"
+msgstr "Снят полу-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:789
+msgid "Ban matching my mask"
+msgstr "Бан по моей маске"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:790
+msgid "Unban matching my mask"
+msgstr "Снят бан по моей маске"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:791
+msgid "Ban exception matching my mask"
+msgstr "Исключение из бана соответствует моей маске"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:792
+msgid "Ban unexception matching my mask"
+msgstr "Снятое исключение из соответствует моей маске"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:793
+msgid "Invite exception matching my mask"
+msgstr "Исключение из приглашения соответствует моей маске"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:794
+msgid "Invite unexception matching my mask"
+msgstr "Снятое исключение из приглашения соответствует моей маске"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:795
+msgid "Ignored user message"
+msgstr "Сообщение игнорируемого пользователя"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:796
+msgid "Server statistics"
+msgstr "Статистика сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:797
+msgid "SSL message"
+msgstr "Сообщение SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:108
+msgid "Search"
+msgstr "Поиск"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:799
+msgid "Generic success"
+msgstr "Общий успех"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:800
+msgid "Generic status"
+msgstr "Общий статус"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:801
+msgid "Generic verbose message"
+msgstr "Общее расширенное сообщение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:802
+msgid "Generic warning"
+msgstr "Общее предупреждение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:803
+msgid "Generic error"
+msgstr "Общая ошибка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:804
+msgid "Generic critical error"
+msgstr "Общая критическая ошибка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:805
+msgid "Chan admin status set"
+msgstr "Включение статуса администратора канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:806
+msgid "Chan admin status unset"
+msgstr "Выключение статуса администратора канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:807
+msgid "Own chan admin status set"
+msgstr "Включение статуса владельца канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:808
+msgid "Own chan admin status unset"
+msgstr "Выключение статуса владельца канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:809
+msgid "Userop mode change"
+msgstr "Изменение режима пользователь-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:810
+msgid "User-deop mode change"
+msgstr "Изменение режима не пользователь-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:811
+msgid "Am userop'd"
+msgstr "Пользователь-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:812
+msgid "Am de-userop'd"
+msgstr "Не пользователь-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:813
+msgid "Verbose/Debug"
+msgstr "Многословный/Отладка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:814
+msgid "Chan owner status set"
+msgstr "Включение статуса владельца канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:815
+msgid "Chan owner status unset"
+msgstr "Выключение статуса владельца канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:816
+msgid "Own chan owner status set"
+msgstr "Включение статуса владельца канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:817
+msgid "Own chan owner status unset"
+msgstr "Выключение статуса владельца канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:818
+msgid "Server error"
+msgstr "Ошибка сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:22
+msgid "Help"
+msgstr "&Справка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:820
+msgid "Text Encoding Server message"
+msgstr "Сообщение сервера о кодировке"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:826
+#, fuzzy
+msgid "BitTorrent message"
+msgstr "Сообщение идентификации"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:970
+msgid "Missing absolute directory for the theme information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:978
+msgid "Failed to create the theme directory"
+msgstr "Не могу создать папку для хранения файлов темы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1061
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1096
+#, fuzzy
+msgid "Failed to save one of the theme images"
+msgstr "Ошибка загрузки выбранной картинки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1074
+#, fuzzy
+msgid "Failed to create the theme subdirectory"
+msgstr "Не могу создать папку для хранения файлов темы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1213
+msgid "Boolean options (1/0)"
+msgstr "Булева опция (1/0)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1214
+msgid "Rectangle options (x,y,width,height)"
+msgstr "Опция прямоугольник (x,y,ширина,высота)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1215
+msgid "String options (string value)"
+msgstr "Строковая опция (значение string)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1216
+msgid "Color options (#RRGGBB)"
+msgstr "Опция цвета (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1217
+msgid "Mirccolor options (#RRGGBB)"
+msgstr "Опция цвета IRC (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1218
+msgid "Irc context color options (#RRGGBB)"
+msgstr "Опция контекстного цвета IRC (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1219
+msgid "Pixmap options (image path)"
+msgstr "Опция картинка (путь к изображению)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1220
+msgid "Unsigned integer options (unsigned integer constant)"
+msgstr "Опция беззнаковое целое (unsigned integer constant)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1221
+msgid "Font options (family,pointsize,style,charset,weight,flags (biusf))"
+msgstr "Опция шрифт (family,pointsize,style,charset,weight,flags (biusf))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1222
+msgid "Message color options (image_id,foreground,background,logFlag (0/1))"
+msgstr "Опция цвета сообщений (image_id,foreground,background,logFlag (0/1))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1223
+msgid "String list options (comma separated list of strings)"
+msgstr "Опция списка строк (разделённые запятыми строки)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC"
+msgstr "IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC Context related actions"
+msgstr "Действия связанные с IRC контекстом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic"
+msgstr "Общие"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic actions"
+msgstr "Общие действия"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Settings"
+msgstr "Настройки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Actions related to settings"
+msgstr "Действия, связанные с настройками"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:30
+msgid "Scripting"
+msgstr "Сценарии"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+msgid "Scripting related actions"
+msgstr "Действия, связанные со сценариями"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "GUI"
+msgstr "Интерфейс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "Actions related to the Graphic User Interface"
+msgstr "Действия, связанные с графическим интерфейсом пользователя"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:77
+msgid "Channel"
+msgstr "Канал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+msgid "IRC Channel related actions"
+msgstr "Действия связанные с IRC каналом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Tools"
+msgstr "Инструменты"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Actions that will appear in the \"Tools\" menu"
+msgstr "Действия, который будут представлены в меню \"Инструменты\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:157
+msgid "Sending out PING based lag probe"
+msgstr "Отсылаю пинг для определения задержки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:167
+msgid "Sending out CTCP based lag probe"
+msgstr "Отсылаю CTCP для определения задержки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:188
+#, c-format
+msgid "Registered lag check with reliability %u (%s)"
+msgstr "Определена гарантированная задержка %u (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:220
+#, c-format
+msgid "Lag check completed (%s)"
+msgstr "Задержка определена (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:259
+#, c-format
+msgid "Lag check aborted (%s)"
+msgstr "Определение задержки прервано (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:143
+msgid "Hostname resolution aborted"
+msgstr "Определение адреса прервано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:156
+msgid "Attempting %Q to %Q (%Q) on port %u"
+msgstr "Попытка %Q к %Q (%Q) через порт %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "secure connection"
+msgstr "безопасное подключение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "connection"
+msgstr "подключение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:165
+#, c-format
+msgid "Attempting to 'bounce' on proxy %s on port %u (protocol %s)"
+msgstr "Попытка использования прокси %s на порту %u (протокол %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:194
+#, c-format
+msgid "Using cached proxy IP address (%s)"
+msgstr "Используется кешированый IP адрес прокси (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:237
+msgid "Unable to look up the IRC proxy hostname: Can't start the DNS slave"
+msgstr "Не могу найти имя IRC прокси: Не запускается вторичный DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:265
+msgid "Resuming direct server connection"
+msgstr "Прямое подключение к серверу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:248
+#, c-format
+msgid "Looking up the proxy hostname (%s)..."
+msgstr "Поиск прокси (%s)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:261
+msgid "Can't find the proxy IP address: %Q"
+msgstr "Не найден IP адрес прокси: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:271
+#, fuzzy
+msgid "Proxy hostname resolved to %Q"
+msgstr "Найден прокси %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:284
+#, fuzzy
+msgid "Proxy %Q has a nickname: %Q"
+msgstr "Прокси %s имеет ник: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:322
+#, c-format
+msgid "Using cached server IP address (%s)"
+msgstr "Используется кешированый адрес сервера (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:354
+msgid "Unable to look up the server hostname: Can't start the DNS slave"
+msgstr "Не могу найти имя сервера: Не запускается вторичный DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:359
+#, c-format
+msgid "Looking up the server hostname (%s)..."
+msgstr "Поиск сервера (%s)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:373
+msgid "Can't find the server IP address: %Q"
+msgstr "Не найден IP адрес сервера: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:380
+#, fuzzy
+msgid "If this server is an IPv6 one, try /server -i %Q"
+msgstr "Если это IPv6 сервер, используйте /server -i %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:390
+#, fuzzy
+msgid "Server hostname resolved to %Q"
+msgstr "Адрес сервера %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:400
+#, fuzzy
+msgid "Real hostname for %Q is %Q"
+msgstr "Реальное имя хоста %s - %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:414
+#, fuzzy
+msgid "Server %Q has a nickname: %Q"
+msgstr "Сервер %s имеет ник: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:468
+msgid "The specified bind address (%Q) is not valid"
+msgstr "Связующий адрес (%Q) не действителен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:473
+msgid ""
+"The specified bind address (%Q) is not valid (the interface it refers to "
+"might be down)"
+msgstr "Связующий адрес (%Q) не действителен (возможно его интерфейс выключен)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:493
+#, c-format
+msgid "The system-wide IPv6 bind address (%s) is not valid"
+msgstr "IPv6 адрес (%s) не действительный"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:500
+#, c-format
+msgid ""
+"The system-wide IPv6 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr "IPv6 адрес (%s) не действительный (возможно его интерфейс выключен)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:522
+#, c-format
+msgid "The system-wide IPv4 bind address (%s) is not valid"
+msgstr "IPv4 адрес (%s) не действительный"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:529
+#, c-format
+msgid ""
+"The system-wide IPv4 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr "IPv6 адрес (%s) не действительный (возможно его интерфейс выключен)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:230
+msgid "Channel operators"
+msgstr "Операторы канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:231
+msgid "Voiced users"
+msgstr "Войсы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:232
+msgid "Half-operators"
+msgstr "Полу-операторы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:233
+msgid "Ban masks"
+msgstr "Маска бана"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:234
+msgid "Color free (no ANSI colors)"
+msgstr "Свободный цвет (без цветов ANSI)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:235
+msgid "Ban exception masks"
+msgstr "Маски исключений из банов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:236
+msgid "Invite exception masks or forbid /INVITE"
+msgstr "Маски исключений из приглашений или запрет /INVITE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:237
+msgid "Secret"
+msgstr "Секретный"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:238
+msgid "Private"
+msgstr "Приватный"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:239
+msgid "Topic change restricted"
+msgstr "Ограничение изменения темы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:240
+msgid "Invite only"
+msgstr "Только по приглашению"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:241
+msgid "No external messages"
+msgstr "Нет внешних сообщений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:242
+msgid "Anonymous or protected user"
+msgstr "Анонимный или защищённый пользователь"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:243
+msgid "Quiet or channel owner"
+msgstr "Тихий или владелец канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:244
+msgid "Limited number of users"
+msgstr "Количество пользователей ограничено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:245
+msgid "Key"
+msgstr "Ключ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:246
+msgid "Moderated"
+msgstr "Модерируемый"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:247
+msgid "Registered"
+msgstr "Зарегистрированный"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:248
+msgid "Censor swear words"
+msgstr "Слова подвергаются цензуре"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:249
+msgid "Impossible to speak and change nick if not authenticated with NickServ"
+msgstr "Невозможно говорить и менять ник если не идентифицирован на NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:250
+msgid "Impossible to change nick if not authenticated with NickServ"
+msgstr "Невозможно сменить ник если не идентифицирован на NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:251
+msgid "Only registered nicks can join"
+msgstr "Для входа требуется зарегистрировать ник"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:252
+msgid "No kicks able (unless U-Line)"
+msgstr "Нельзя кикнуть (за исключением U-Line)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:253
+msgid "IRC-Op only channel"
+msgstr "Канал только для операторов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:254
+msgid "Server/Network/Tech Admin only channel"
+msgstr "Канал только для серверных/сетевых/технических администраторов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:255
+msgid "Forbid /KNOCK"
+msgstr "Запрет /KNOCK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:256
+msgid "Strip colors"
+msgstr "Вырезать цвета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:257
+msgid "Redirect on channel full"
+msgstr "Перенаправлено на полный канал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:258
+msgid "Forbid channel CTCPs"
+msgstr "CTCP запрещены на канале"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:259
+msgid "User-operators OR Auditorium: /NAMES and /WHO show only ops"
+msgstr "Операторам или аудиторам: /NAMES и /WHO показывается только опам"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:260
+msgid "Only 7-bit letters in nicknames allowed"
+msgstr "Только 7-ми битные буквы в никах могут быть использованы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:261
+msgid "Impossible to use both 7-bit and 8-bit letters in nicknames"
+msgstr ""
+"Невозможно использовать одновременно 7-ми и 8-ми битные символы в никах"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:270
+msgid "o: IRC operator (OPER)"
+msgstr "o: Оператор IRC (OPER)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:271
+msgid "O: Local IRC operator (LOCOP)"
+msgstr "O: Локальный оператор IRC (LOCOP)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:272
+msgid "i: Invisible"
+msgstr "i: Невидимый"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:273
+msgid "w: Recipient for WALLOPS messages"
+msgstr "w: Получатель сообщения WALLOPS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:274
+msgid ""
+"r: User with restricted connection (or recipient for messages about rejected "
+"bots)"
+msgstr ""
+"r: Пользователь ограничен в соединении (или получатель сообщений отвергает "
+"ботов)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:275
+msgid "s: Recipient for server notices"
+msgstr "s: Получатель извещений сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:276
+msgid "z: Recipient for oper wallop messages"
+msgstr "z: Получатель сообщений wallop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:277
+msgid "c: Recipient for cconn messages"
+msgstr "c: Получатель сообщений cconn"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:278
+msgid "k: Recipient for server kill messages"
+msgstr "k: Получить сведения о киллах"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:279
+msgid "f: Recipient for full server notices"
+msgstr "f: Получать все извещения сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:280
+msgid "y: Spy :)"
+msgstr "y: Шпион :)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:281
+msgid "d: Obscure 'DEBUG' flag"
+msgstr "d: возможно 'DEBUG' флаг"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:282
+msgid "n: Recipient for nick changes"
+msgstr "n: Получать сведения об изменениях ника"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:100
+#, fuzzy
+msgid "Ops... for some reason the link filter object has been destroyed"
+msgstr "Упс... по какой-то причине связанный объект был уничтожен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:138
+msgid "Using filtered IRC protocol: Link filter is \"%Q\""
+msgstr "Использование фильтра протоколов IRC: \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:143
+msgid "Failed to set up the link filter \"%Q\", will try with plain IRC"
+msgstr "Не могу подключить фильтр \"%Q\", пытаюсь попробовать с простым IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:202
+msgid "Failed to start the connection: %Q"
+msgstr "Не могу подключиться: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:368
+msgid "Contacting %Q %s (%s) on port %u"
+msgstr "Подключение к %Q %s (%s) через порт %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "proxy host"
+msgstr "адрес прокси"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "IRC server"
+msgstr "IRC серверу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:375
+#, c-format
+msgid "Low-level transport connection established [%s (%s:%u)]"
+msgstr "Установлена низкоуровневая связь [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:379
+msgid "Starting Secure Socket Layer handshake"
+msgstr "Запуск соединения SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Secure proxy connection"
+msgstr "Подключение к безопасному прокси"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Proxy connection"
+msgstr "Подключение к прокси"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:387
+msgid "Negotiating relay information"
+msgstr "Договариваться об обмене информацией"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:390
+msgid "Sent connection request, waiting for acknowledgement"
+msgstr "Отослан запрос соединения, ожидаю подтверждение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:393
+msgid "Sent target host data, waiting for acknowledgement"
+msgstr "Данные отправлены целевому хосту, ожидаю подтверждение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:396
+msgid "Sent auth method request, waiting for acknowledgement"
+msgstr "Отослан запрос метода аутентификации, ожидаю подтверждение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:399
+msgid "Sent username and password, waiting for acknowledgement"
+msgstr "Отосланы имя пользователя и пароль, ожидаю ответа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:402
+msgid "Sent connection request, waiting for \"HTTP 200\" acknowledgement"
+msgstr "Отослан запрос связи, ожидаю подтверждение \"HTTP 200\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:176
+msgid "[SSL]: %Q"
+msgstr "[SSL]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:181
+msgid "[SSL ERROR]: %Q"
+msgstr "[ОШИБКА SSL]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:190
+msgid "[PROXY]: %Q"
+msgstr "[ПРОКСИ]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:200
+msgid "[PROXY ERROR]: %Q"
+msgstr "[ОШИБКА ПРОКСИ]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:207
+msgid "[SOCKET]: %Q"
+msgstr "[СОКЕТ]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:212
+msgid "[SOCKET ERROR]: %Q"
+msgstr "[ОШИБКА СОКЕТА]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:218
+msgid "[SOCKET WARNING]: %Q"
+msgstr "[ПРЕДУПРЕЖДЕНИЕ СОКЕТА]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:337
+#, c-format
+msgid "Binding to local address %s"
+msgstr "Прослушиваю локальный адрес %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:341
+#, c-format
+msgid ""
+"Binding to local address %s failed: the kernel will choose the correct "
+"interface"
+msgstr ""
+"Не могу привязаться к локальному адресу %s : ядро попытается выбрать "
+"правильный интерфейс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:637
+msgid "Using HTTP protocol."
+msgstr "Используется протокол HTTP."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:683
+msgid "Using SOCKSV4 protocol."
+msgstr "Используется протокол SOCKSV4."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:756
+#, fuzzy
+msgid "Using SOCKSv5 protocol."
+msgstr "Используется протокол SOCKSV5."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:771
+msgid "We can accept auth method 0 (no auth)"
+msgstr "Неприемлемый метод аутентификации 0 (без аутентификации)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:779
+msgid "We can accept auth method 0 (no auth) or 2 (user/pass)"
+msgstr ""
+"Неприемлемый метод аутентификации 0 (без аутентификации) или 2 (логин/пароль)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:958
+msgid "Proxy response: auth OK: access granted"
+msgstr "Прокси ответило: Аутентификация прошла успешно, доступ открыт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:993
+msgid "Proxy response: Auth method OK: using method 0 (no auth)"
+msgstr ""
+"Прокси ответило: Аутентификация прошла успешно,использовался метод 0 (без "
+"аутентификации)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1000
+msgid "Proxy response: Auth method OK: using method 2 (user/pass)"
+msgstr ""
+"Прокси ответило: Аутентификация прошла успешно, использовался метод 2 (логин/"
+"пароль)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1056
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1113
+msgid "Proxy response: target data OK: request granted"
+msgstr "Прокси ответило: Данные получены, запрос удовлетворён"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1153
+msgid "Proxy response: "
+msgstr "Прокси ответило: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1164
+msgid "Proxy said something about: \n"
+msgstr "Прокси сказало что-то в роде: \n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1205
+msgid "Server X509 certificate"
+msgstr "Сертификат сервера X509"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1209
+msgid "The server didn't provide a certificate"
+msgstr "Сервер не имеет сертификата"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1223
+msgid "Unable to determine the current cipher"
+msgstr "Не могу определить используемый шифр"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1768
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1788
+msgid "Partial socket write: packet broken into smaller pieces."
+msgstr "Не полная запись сокета: пакет разбит на более мелкие куски."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:60
+#, fuzzy
+msgid "The theme information file does not exist"
+msgstr "Действие \"%1\" не существует"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:71
+#, fuzzy
+msgid ""
+"This KVIrc executable is too old for this theme (minimum theme engine "
+"version required is %Q while this theme engine has version %s)"
+msgstr ""
+"Установлен KVIrc слишком старой версии. Минимальная требуемая версия для "
+"этого скрипта %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:80
+#, fuzzy
+msgid "Theme information file is not valid"
+msgstr "Файл назначения существует: файл не переименован"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:248
+#, fuzzy
+msgid "Failed to load the specified screenshot image"
+msgstr "Ошибка загрузки выбранной картинки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:257
+#, fuzzy
+msgid "Invalid option"
+msgstr "Ошибка криптовальной машины"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:265
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:293
+#, fuzzy
+msgid "Failed to save the screenshot image"
+msgstr "Ошибка загрузки выбранной картинки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:117
+msgid "Configure Servers..."
+msgstr "Конфигурация серверов..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:118
+msgid "Allows you to configure the servers and eventually to connect to them"
+msgstr "Позволяет вам сконфигурировать сервера и подключиться к ним"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:128
+msgid "Manage Addons..."
+msgstr "Управление дополнениями..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:129
+msgid "Allows you to manage the script-based addons"
+msgstr "Позволяет управлять скриптовыми дополнениями"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:139
+msgid "Configure Registered Users..."
+msgstr "Конфигурация регистрации пользователей..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:140
+msgid "Shows a dialog that allows editing the registered user entries"
+msgstr "Показывает диалог, позволяющий редактировать регистрацию пользователей"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:150
+msgid "Configure Identity..."
+msgstr "Конфигурация идентификации..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:151
+msgid "Allows you to configure nickname, username, avatar etc..."
+msgstr "Позволяет вам сконфигурировать ник, имя, аватар и т.п."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:161
+msgid "Show SocketSpy..."
+msgstr "Показать сокет агент..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:162
+msgid "Shows a window that allows monitoring the socket traffic"
+msgstr ""
+"Показывает окно позволяющее наблюдать за данные, которыми KVirc обменивается "
+"с IRC сервером"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:172
+msgid "Get Network Links"
+msgstr "Получить карту сети"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:173
+msgid "Shows a window that allows viewing the network links"
+msgstr "Показывает окно просмотра карты сети"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:183
+msgid "Get Channel List"
+msgstr "Получить список каналов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:184
+msgid "Shows a window that allows listing the network channels"
+msgstr "Показывает окно, позволяющее получить список каналов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:194
+msgid "Configure KVIrc..."
+msgstr "Настроить KVirc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:195
+msgid "Shows the general options dialog"
+msgstr "Показывает диалог настроек программы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:205
+msgid "Configure Theme..."
+msgstr "Конфигурация темы..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:206
+msgid "Shows the theme options dialog"
+msgstr "Показывает диалог настроек темы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:216
+msgid "Manage Themes..."
+msgstr "Управление темами..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:217
+msgid "Allows you to manage the themes"
+msgstr "Позволяет управлять темами"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:227
+msgid "Customize Toolbars..."
+msgstr "Пользовательские панели инструментов..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:228
+msgid "Shows a window that allows editing script toolbars"
+msgstr ""
+"Показывает окно позволяющее редактировать сценарии панелей инструментов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:239
+msgid "Join Channels..."
+msgstr "Зайти на каналы..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:240
+msgid "Shows a dialog that allows you joing channels"
+msgstr "Показывает диалог, позволяющий вам войти на каналы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:251
+msgid "Edit Actions..."
+msgstr "Редактировать действия..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:252
+msgid "Shows a window that allows editing actions"
+msgstr "Показывает окно позволяющее редактировать действия"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:262
+msgid "Edit Aliases..."
+msgstr "Редактировать алиасы..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:263
+msgid "Shows a window that allows editing aliases"
+msgstr "Показывает окно позволяющее редактировать алиасы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:273
+msgid "Edit Events..."
+msgstr "Редактировать события..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:274
+msgid "Shows a window that allows editing script events"
+msgstr "Показывает окно позволяющее редактировать обработчики событий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:284
+msgid "Edit Popups..."
+msgstr "Редактировать всплывающие меню..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:285
+msgid "Shows a window that allows editing popup menus"
+msgstr "Показывает окно позволяющее редактировать всплывающие меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:295
+msgid "Edit Raw Events..."
+msgstr "Редактировать низкоуровневые события..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:296
+msgid "Shows a window that allows editing raw scripting events"
+msgstr ""
+"Показывает окно позволяющее редактировать обработчики событий, вызываемых "
+"при получении определенных данных сервером"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:306
+msgid "New Script Tester"
+msgstr "Новый тестер сценариев"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:307
+msgid "Creates an embedded editor for long scripts"
+msgstr "Создаёт встроенный редактор для длинных скриптов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:317
+msgid "Execute Script..."
+msgstr "Выполнить сценарий..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:318
+msgid "Allows executing a KVS script from file"
+msgstr "Позволяет выполнять KVS сценарий из файла"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:328
+msgid "Help Index"
+msgstr "Индекс справки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:329
+msgid "Shows the documentation index"
+msgstr "Показывает индекс документации"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:340
+msgid "Allows subscribing to the KVIrc mailing list"
+msgstr "Позволяет подписаться на список рассылки KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:350
+msgid "KVIrc WWW"
+msgstr "KVIrc в интернете"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:351
+msgid "Opens the KVIrc homepage"
+msgstr "Открывает домашнюю страницу KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:361
+msgid "KVIrc Russian WWW"
+msgstr "Домашняя страница KVIrc на русском"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:362
+msgid "Opens the KVIrc homepage in russian"
+msgstr "Открывает домашнюю страницу KVIrc на русском"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:372
+msgid "Acquire Screenshot"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:373
+msgid "Acquires a Screenshot of the KVIrc main window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:385
+msgid "Cascade windows"
+msgstr "Окна каскадом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:386
+msgid "Arranges the MDI windows in a maximized-cascade fashion"
+msgstr "Расположить MDI окна способом максимизировать каскадом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:397
+msgid "Tile windows"
+msgstr "Замостить окна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:398
+msgid "Tiles the MDI windows with the currently selected tile method"
+msgstr "Замостить MDI окна текущим выбранным методом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:409
+msgid "Minimize all windows"
+msgstr "Свернуть все окна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:410
+msgid "Minimized all the currently visible MDI windows"
+msgstr "Минимизировать все текущие видимые MDI окна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:421
+msgid "New IRC Context"
+msgstr "Новый IRC контекст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:422
+msgid "Creates a new IRC context console"
+msgstr "Создать новую консоль IRC контекста"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:433
+msgid "Quit KVIrc"
+msgstr "Выход из KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:434
+msgid "Quits KVIrc closing all the current connections"
+msgstr "Выход из KVIrc с закрытием всех текущих соединений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:448
+msgid "IRC Context Display"
+msgstr "Дисплей IRC контекста"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:449
+msgid "Shows a small display with IRC context informations"
+msgstr "Показывает небольшой дисплей информацией об IRC контексте"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:520
+msgid "Acts as a separator for other items: performs no action"
+msgstr "Это разделитель для других пунктов: никакое действие не выполняется"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:554
+msgid "Connect/Disconnect"
+msgstr "Подключиться/Отключиться"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:555
+msgid ""
+"Allows you to connect to a server or to terminate the current connection"
+msgstr "Позволяет вам подключиться к серверу или закрыть текущее соединение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:628
+msgid "Connect"
+msgstr "Подключиться"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:629
+msgid "Abort Connection"
+msgstr "Прервать соединение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:790
+msgid "Join Channel"
+msgstr "Войти на канал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:791
+msgid "Shows a popup menu that allows quickly selecting a channel to join"
+msgstr ""
+"Показывает всплывающее меню, позволяющее быстро выбрать канал и зайти на него"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:851
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:863
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:896
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:907
+msgid "Other..."
+msgstr "Другой..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:834
+msgid "Change Nickname"
+msgstr "Изменить ник"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:835
+msgid "Shows a popup menu that allows quickly changing the nickname"
+msgstr "Показывает всплывающее меню, позволяющее изменить ник"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:883
+msgid "Connect To"
+msgstr "Подключиться к"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:884
+msgid "Shows a popup menu that allows quickly connecting to a server"
+msgstr "Показывает всплывающее меню, позволяющее быстро подключиться к серверу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:929
+msgid "User Mode"
+msgstr "Режим пользователя"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:930
+msgid "Shows a popup menu that allows quickly changing user modes"
+msgstr ""
+"Показывает всплывающее меню, позволяющее быстро изменять режимы пользователя"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:947
+msgid "Wallops (+w)"
+msgstr "Wallops (+w)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:949
+msgid "Server Notices (+s)"
+msgstr "Извещения сервера (+s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:951
+msgid "Invisible (+i)"
+msgstr "Невидимый (+i)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:997
+msgid "Away/Back"
+msgstr "Отошёл/Вернулся"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:998
+msgid "Allows entering and leaving away state"
+msgstr "Позволяет включать и выключать режим Отошёл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1065
+msgid "Enter Away Mode"
+msgstr "Войти в режим Отошёл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1066
+msgid "Leave Away Mode"
+msgstr "Выйти из режима Отошёл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1135
+msgid "Irc Tools"
+msgstr "Инструменты IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1136
+msgid "Shows a popup menu with some IRC Tools"
+msgstr "Показывает всплывающее меню некоторых инструментов IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1171
+msgid "Irc Actions"
+msgstr "Действия IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1172
+msgid "Shows a popup menu with some IRC Actions"
+msgstr "Показывать всплывающие меню для некоторых действий IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:412
+msgid "KVIrc KVS Script"
+msgstr "KVIrc KVS скрипт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:174
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:420
+msgid "Run KVS Script"
+msgstr "Запустить KVS скрипт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:284
+msgid "URL:IRC Protocol"
+msgstr "URL:IRC Протокол"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:383
+msgid "Open with KVIrc"
+msgstr "Открыть при помощи KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:436
+msgid "KVIrc Configuration File"
+msgstr "Файл конфигурации KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:453
+msgid "KVIrc Theme Package"
+msgstr "Пакет темы KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:461
+msgid "Install Theme Package"
+msgstr "Установить пакет темы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:478
+msgid "KVIrc Addon Package"
+msgstr "KVIrc пакет дополнений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:486
+msgid "Install Package"
+msgstr "Установить пакет"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:749
+#, c-format
+msgid ""
+"Ops...it looks like I can't load modules on this sytem.\n"
+"I have been looking for the %s library but I haven't been able to load it\n"
+"due to the following error: \"%s\"\n"
+"Aborting."
+msgstr ""
+"Упс... похоже я не могу загрузить этот модуль в систему.\n"
+"Я искал для %s библиотеку, но её невозможно загрузить\n"
+"из-за следующей ошибки: \"%s\"\n"
+"Прервано."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:762
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_begin\" function.\n"
+"Aborting!"
+msgstr ""
+"Упс... похоже у вас битый дистрибутив.\n"
+"Модуль установки не может экспортировать \"setup_begin\" функцию.\n"
+"Прервано!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:776
+msgid "Setup aborted"
+msgstr "Установка прервана"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:801
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_finish\" function.\n"
+"Trying to continue anyway..."
+msgstr ""
+"Упс... похоже у вас битый дистрибутив.\n"
+"Модуль установки не может экспортировать \"setup_finish\" функцию.\n"
+"Пытаюсь продолжить..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:186
+msgid "%Q is on IRC"
+msgstr "%Q в IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:248
+msgid "%Q has left IRC"
+msgstr "%Q покинул IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:368
+msgid "Notify list: No users to check for, quitting"
+msgstr "Список уведомлений: Нет проверенных пользователей, выход"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:414
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (15 sec)"
+msgstr ""
+"Список уведомлений: Времени (%d сек) слишком мало, установите более разумное "
+"значение (15 сек)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:428
+msgid "Notify list: Notify list empty, quitting"
+msgstr "Список уведомлений: список пуст, выход"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:455
+#, c-format
+msgid ""
+"Notify list: ISON delay (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+"Список уведомлений: задержка ISON (%d сек) слишком мала, установите более "
+"разумное значение (5 сек)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:491
+msgid "Notify list: Checking for: %Q"
+msgstr "Список уведомлений: Проверка для: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:535
+msgid ""
+"Notify list: Hey! You've used ISON behind my back? (I might be confused "
+"now...)"
+msgstr ""
+"Список уведомлений: Эй! Вы использовали ISON за моей спиной? (Я могу теперь "
+"запутаться...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:682
+msgid "registration mask changed, or nickname is being used by someone else"
+msgstr "Регистрационная маска изменилась или ник используется кем то ещё"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:686
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (registration mask does not match, or nickname is being used "
+"by someone else)"
+msgstr ""
+"Список уведомлений: \r!n\r%Q\r в онлайне, но маска [%Q@\r!h\r%Q\r] не "
+"соответствует ( маска не соответствует, или ник используется кем то ещё)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:691
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? "
+"(restarting)"
+msgstr ""
+"Список уведомлений: Неожиданное противоречие, регистрация пользователя в "
+"базе изменилась? (перезапуск)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:698
+msgid ""
+"Notify list: Unexpected inconsistency, expected \r!n\r%Q\r in the registered "
+"user DB"
+msgstr ""
+"Список уведомлений: Неожиданное противоречие, предположительно \r!n\r%Q\r "
+"зарегистрирован в базе данных пользователей"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:712
+#, c-format
+msgid ""
+"Notify list: USERHOST delay (%d sec) is too short, resetting to something "
+"more reasonable (5 sec)"
+msgstr ""
+"Список уведомлений: задержка USERHOST (%d сек) слишком мала, установите "
+"более разумное значение (5 сек)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:726
+msgid "Notify list: Unexpected inconsistency, userhost list is empty!"
+msgstr "Список уведомлений: Неожиданное противоречие, список хостов пуст!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:761
+msgid "Notify list: Checking userhost for: %Q"
+msgstr "Список уведомлений: Проверка хоста для: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:831
+msgid ""
+"Notify list: Hey! You've used USERHOST behind my back? (I might be confused "
+"now...)"
+msgstr ""
+"Список уведомлений: Эй! Вы использовали USERHOST за моей спиной? (Я могу "
+"запутаться...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:836
+#, c-format
+msgid "Notify list: Broken USERHOST reply from the server? (%s)"
+msgstr "Список уведомлений: Битый ответ USERHOST от сервера? (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:860
+msgid ""
+"Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST reply "
+"was received, will recheck in the next loop"
+msgstr ""
+"Список уведомлений: \r!n\r%Q\r ушёл в оффлайне прежде, чем был получен ответ "
+"от USERHOST, будет перепроверен в следующем цикле"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:931
+msgid "Starting notify list"
+msgstr "Запуск списка уведомлений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:936
+msgid "No users in the notify list"
+msgstr "Нет пользователей в списке уведомлений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:958
+msgid "Notify list: Checking for:%Q"
+msgstr "Список уведомлений: Проверка для:%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1013
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+"Список уведомлений: Таймаут (%d сек) слишком мал, установите более разумное "
+"значение (5 сек)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1139
+msgid "Notify list: Adding watch entries for%Q"
+msgstr "Список уведомлений: Добавлены временные данные для %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1171
+msgid "watch entry listing requested by user"
+msgstr "внесение в список наблюдения по запросу пользователя"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1175
+msgid "possible watch list desync"
+msgstr "возможна рассинхронизация списка наблюдения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1185
+msgid "registration mask changed or desync with the watch service"
+msgstr ""
+"регистрационная маска изменилась или рассинхронизировался сервис наблюдения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1190
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (watch: registration mask does not match, or nickname is "
+"being used by someone else)"
+msgstr ""
+"Список уведомлений: \r!n\r%Q\r появился в онлайн, но маска [%Q@\r!h\r%Q\r] "
+"не соответствует (наблюдение:маска не соответствует, или ник уже "
+"используется)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1197
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? (watch: "
+"restarting)"
+msgstr ""
+"Список уведомлений: Неожиданное противоречие, база пользователей изменилась? "
+"(наблюдение: перезапуск)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1207
+msgid "watch entry added by user"
+msgstr "пользователь добавлен в список наблюдения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1245
+msgid "removed from watch list"
+msgstr "удалён из списка наблюдения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1248
+msgid "Notify list: Stopped watching for \r!n\r%Q\r"
+msgstr "Список уведомлений: Остановлено наблюдение за \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1258
+msgid "watch"
+msgstr "наблюдение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1264
+msgid "Notify list: \r!n\r%Q\r is offline (watch)"
+msgstr "Список уведомлений: \r!n\r%Q\r в оффлайне (наблюдение)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1267
+msgid "unmatched watch list entry"
+msgstr "несогласованный вход в список наблюдения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:80
+msgid "commandline::userfriendly"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:94
+msgid "commandline::kvs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:127
+msgid "You are not connected to a server"
+msgstr "Вы не подключены к серверу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_iconmanager.cpp:372
+msgid "Icon Table"
+msgstr "Таблица Иконок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:190
+msgid "No "
+msgstr "Нет "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:196
+msgid "This module has no version informations: refusing to load it"
+msgstr "В этом модуле нет информации о версии: отказываюсь загрузить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:204
+msgid ""
+"This module was compiled for a different KVIrc version and can't be loaded"
+msgstr ""
+"Этот модуль скомпилирован для другой версии KVIrc и не может быть загружен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:232
+msgid "Failed to execute the init routine"
+msgstr "Невозможно выполнить команды инициализации"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:261
+#, c-format
+msgid "Loaded module '%s' (%s)"
+msgstr "Загрузка модуля '%s' (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:306
+#, c-format
+msgid "Unloaded module '%s'"
+msgstr "Выгрузка модуля '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:45
+msgid "This window has no associated irc context"
+msgstr "Это окно не связано с IRC контекстом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:50
+#, c-format
+msgid "No such irc context (%d)"
+msgstr "Нет такого IRC контекста (%d)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:147
+msgid "Global idle timer must be started before using $my.globalIdle function"
+msgstr ""
+"Общий таймер простоя по-видимому начат перед использованием функции $my."
+"globalIdle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:103
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:215
+msgid "Window %Q not found"
+msgstr "Окно %Q не найдено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:108
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:220
+msgid "Missing window id after the 'w' switch"
+msgstr "Отсутствует ID окна после ключа 'w'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:121
+msgid "Can't log to file %Q"
+msgstr "Не могу записать лог в файл %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:123
+msgid "This window has no logging capabilities"
+msgstr "Это окно не имеет возможности журналирования"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:275
+msgid "Window with id '%Q' not found, returning empty string"
+msgstr "Окно с ID '%Q' не найдено, возвращается пустая строка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:598
+msgid "Sound file '%Q' not found"
+msgstr "Звуковой файл '%Q'не найден"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:604
+msgid "Unable to play sound '%Q'"
+msgstr "Не могу проиграть звук '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:615
+msgid "Sorry , I can't find a sound system to use on this machine"
+msgstr ""
+"Простите, я не нашёл звуковую систему, которую можно было бы использовать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:617
+#, c-format
+msgid "Sound system detected to: %s"
+msgstr "Обнаружена звуковая система: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:141
+msgid "Show at startup"
+msgstr "Показывать при запуске"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:154
+msgid "Did you know..."
+msgstr "Знаете ли вы..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:220
+msgid "<b>Can't find any tip... :(</b>"
+msgstr "<b>Не могу найти какого-либо совета... :(</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1544
+msgid "%Q algorytm is not supported"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1566
+msgid ""
+"KVIrc is compiled without OpenSSL support. $str.digest function disabled"
+msgstr "KVIrc собран без поддержки OpenSSL. Функция $str.digest отключена."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2030
+msgid "Invalid argument for ?d escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2034
+msgid "Missing argument for ?d escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2066
+msgid "Invalid argument for ?u escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2070
+msgid "Missing argument for ?u escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2097
+msgid "Invalid argument for ?x escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2101
+msgid "Missing argument for ?x escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2128
+msgid "Invalid argument for ?X escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2132
+msgid "Missing argument for ?X escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2189
+msgid "Invalid argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2193
+msgid "Missing argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:87
+msgid "Show URL List"
+msgstr "Показать список URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:88
+msgid "Shows the URL list window"
+msgstr "Показывает окно списка URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:124
+msgid "&Configure"
+msgstr "&Конфигурация"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:126
+msgid "Clo&se"
+msgstr "За&крыть"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:127
+msgid "&Module"
+msgstr "&Модуль"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:130
+msgid "&Load"
+msgstr "&Загрузить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:131
+msgid "&Save"
+msgstr "&Сохранить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:132
+msgid "&Clear"
+msgstr "&Очистить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:133
+msgid "&List"
+msgstr "&Список"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:136
+msgid "URL"
+msgstr "URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:137
+msgid "Window"
+msgstr "Окно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:138
+msgid "Count"
+msgstr "Счёт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:139
+msgid "Timestamp"
+msgstr "Отметка времени"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:113
+msgid "Warning - KVIrc"
+msgstr "Внимание - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+msgid "Select an URL."
+msgstr "Выбрать URL."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:115
+msgid "&Remove"
+msgstr "&Удалить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:269
+msgid "&Find Text"
+msgstr "&Найти текст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:280
+msgid "&Say to Window"
+msgstr "Окно &разговора"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+msgid "Window not found."
+msgstr "Окно не найдено."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:349
+msgid "URL Module Configuration"
+msgstr "Конфигурация модуля URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:356
+msgid "Save URL list on module unload"
+msgstr "Сохранить список URL при выгрузке модуля"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:360
+msgid "Save columns width on URL list close"
+msgstr "Сохранить ширину колонок в списке URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1187
+msgid "&Cancel"
+msgstr "О&тмена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:432
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1328
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:458
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1186
+msgid "&OK"
+msgstr "&Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:423
+msgid "Enable URL ban list"
+msgstr "Включить URL бан лист"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:435
+msgid "&Add Ban"
+msgstr "&Добавить бан"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:440
+msgid "&Remove Selected"
+msgstr "&Удалить выбранное"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "URL Ban List"
+msgstr "URL бан лист"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+msgid "Select a ban."
+msgstr "Выберите бан."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:797
+msgid "View URL list"
+msgstr "Показать список URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:49
+msgid "Can't find the window with id '%Q'"
+msgstr "Невозможно найти окно с ID '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:53
+msgid "The specified window (%Q) is not a channel"
+msgstr "Заданное окно (%Q) не является каналом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:78
+msgid "Destinaion file exists: no copy made"
+msgstr "Файл назначения существует: копия не сделана"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:83
+msgid "Failed to copy from %Q to %Q"
+msgstr "Ошибка при копировании из %Q в %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:84
+msgid "Either the source doesn't exist or the destination can not be created"
+msgstr "Либо источник не существует, либо назначение не может быть создано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:203
+msgid "Failed to write to file %Q: the destination couldn't be opened"
+msgstr "Ошибка записи в файл %Q: файл не может быть открыт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:244
+msgid "Destination file exists: file not renamed"
+msgstr "Файл назначения существует: файл не переименован"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:247
+msgid "Failed to rename %Q to %Q"
+msgstr "Ошибка переименования %Q в %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:281
+msgid "Failed to make the directory %Q"
+msgstr "Ошибка при создании каталога %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:322
+msgid "Failed to remove the file %Q"
+msgstr "Ошибка удаления файла %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:365
+msgid "Failed to remove the directory %Q"
+msgstr "Ошибка удаления каталога %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:482
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:628
+msgid "The specified directory does not exist '%Q'"
+msgstr "Заданный каталог не существует '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:730
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:824
+msgid "Can't open the file \"%Q\" for reading"
+msgstr "Не могу открыть файл \"%Q\" для чтения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:746
+msgid "Read error for file %Q"
+msgstr "Ошибка при чтении файла %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:754
+msgid ""
+"Read error for file %Q (have been unable to read the requested size in 1000 "
+"retries)"
+msgstr "Ошибка при чтении файла %Q (невозможно прочитать после 1000 попыток)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:920
+msgid "Can't open the file \"%Q\" for writing"
+msgstr "Невозможно открыть файл \"%Q\" для записи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/index.cpp:473
+msgid "Untitled"
+msgstr "Без названия"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+msgid "Indexing help files"
+msgstr "Индексация файлов справки..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:87
+msgid "Index"
+msgstr "Индекс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:99
+msgid "Refresh index"
+msgstr "Обновить список"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:211
+msgid "Full Text Search"
+msgstr "Поиск в тексте"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:203
+msgid "Using a wildcard within phrases is not allowed."
+msgstr "Использование регулярных выражений во фразах недопустимо"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:212
+msgid "The closing quotation mark is missing."
+msgstr "Пропущена закрывающая кавычка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:312
+msgid "Help Browser"
+msgstr "Броузер помощи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:201
+msgid "Request List"
+msgstr "Получить список"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:207
+msgid "Stop list download"
+msgstr "Остановить загрузку списка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:211
+msgid ""
+"<center><b>/LIST command parameters:</b><br>Many servers accept special "
+"parameters that allow you to filter the returned entries.<br>Commonly, "
+"masked channel names (*kvirc*) are accepted as parameters, as well as "
+"strings like <b>c&lt;n</b> or <b>c&gt;n</b> where <b>n</b> is the minimum or "
+"maximum of users on the channel.</center>"
+msgstr ""
+"<center><b>Аргументы команды /LIST:</b><br>Многие сервера принимают "
+"специальные аргументы, которые позволяют вам фильтровать получаемые данные."
+"<br>Обычно маски имён каналов (напр. *kvirc*) принимаются как аргументы, а "
+"также строки типа <b>c&lt;n</b> или <b>c&gt;n</b> где <b>n</b> - минимальное "
+"или максимальное количество пользователей на канале.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:220
+msgid "Users"
+msgstr "Пользователи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:221
+msgid "Topic"
+msgstr "Тема"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:262
+msgid "Sent list request, waiting for reply..."
+msgstr "Отослан запрос списка, ожидаю ответ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:265
+msgid "Cannot request list: No active connection"
+msgstr "Невозможно получить список: Нет активных соединений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:389
+msgid "Stopping the list download..."
+msgstr "Завершаем загрузку списка.."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:276
+msgid "Cannot stop list download, no active connection."
+msgstr "остановить загрузку списка: Нет активных соединений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:125
+#, c-format
+msgid "Connected to %s (%s)"
+msgstr "Подключен к %s (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:293
+msgid "List cannot be requested: Not connected to a server"
+msgstr "Список не получен: Нет соединения с сервером"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:316
+#, c-format
+msgid "Channel List [IRC Context %u]"
+msgstr "Список каналов [IRC Контекст %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:319
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel List</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Список каналов</b></font> <font color=\"%s\">"
+"[IRC Контекст %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:326
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel list</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Список каналов</b></font> <font color=\"%s\">"
+"[IRC Контекст %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:342
+msgid "You cannot export an empty list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:350
+#, fuzzy
+msgid "Channel list for %Q - %Q"
+msgstr "Режим канала \r!c\r%Q\r - %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:353
+#, fuzzy
+msgid "Channel list"
+msgstr "Каналы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:382
+#, fuzzy
+msgid "Choose filename"
+msgstr "Выберете имя файла журнала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:356
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:383
+#, fuzzy
+msgid "Configuration files (*.kvc)"
+msgstr "Файл конфигурации KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:398
+msgid "Reset"
+msgstr "Сброс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:435
+msgid "Channels list download finished"
+msgstr "Завершено обновление списка каналов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:472
+msgid "Processing list: %Q"
+msgstr "Обработка списка: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/libkvilist.cpp:63
+msgid "List window alread open for this IRC context"
+msgstr "Окно списка уже открыто для этого контекста IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:70
+msgid "Terminal"
+msgstr "Консоль"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:73
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:77
+#, c-format
+msgid "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+msgstr "<nobr><font color=\"%s\"><b>Консоль</b></font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:59
+msgid "Terminal emulator"
+msgstr "Эмулятор терминала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:63
+msgid "Close this window"
+msgstr "Закрыть это окно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:91
+msgid "Can't create the terminal emulation part"
+msgstr "Не могу создать эмулятор терминала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:96
+msgid "Can't retrieve the terminal emulation factory"
+msgstr "Не могу вернуть эмулятор терминала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:95
+msgid "KVIrc"
+msgstr "KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:98
+msgid "Context"
+msgstr "Контекст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:155
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:100
+msgid "Away"
+msgstr "отошёл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:102
+msgid "&Configure KVIrc..."
+msgstr "&Настроить KVirc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:104
+msgid "&About KVIrc"
+msgstr "&О KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:109
+msgid "Un&dock"
+msgstr "От&делить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:168
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:112
+msgid "Ctrl+Q"
+msgstr "Ctrl+Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:143
+msgid "Nothing is happening..."
+msgstr "Ничего не происходит..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:285
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:144
+msgid "Just idling..."
+msgstr "Обычное простаивание..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:145
+msgid "Dum de dum de dum..."
+msgstr "Там тара там тырым бум бум..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:146
+msgid "Hey man... do something!"
+msgstr "Эй товарищ... не спи, замерзнешь!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:147
+msgid "Umpf!"
+msgstr "Ай-ай-ай!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:148
+msgid "Silence speaking"
+msgstr "Тишина.."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:149
+msgid "Are ya here?"
+msgstr "Здесь?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:150
+msgid "The world has stopped?"
+msgstr "Неужели мир остановился?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:151
+msgid "Everything is all right"
+msgstr "Всё хорошо"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:152
+msgid "idle()"
+msgstr "idle()"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:153
+msgid "It's so cold here..."
+msgstr "Как здесь холодно..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:295
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:154
+msgid "Do not disturb... watching TV"
+msgstr "Не мешайте... смотрю телевизор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:155
+msgid "Just vegetating"
+msgstr "Просто расти"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:156
+msgid "Hey... are ya sure that your network is up?"
+msgstr "Эй... это ваша сеть то?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:298
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:157
+msgid "Seems like the world has stopped spinning"
+msgstr "Кажется земля прекращает вертеться.."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:299
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:158
+msgid "This silence is freaking me out!"
+msgstr "Эта странная тишина!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:300
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:159
+msgid "Mieeeeeowww!"
+msgstr "Эгэгеееей!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:301
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:160
+msgid "idle idle idle idle!"
+msgstr "бездельничаю!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Hide Window"
+msgstr "Скрыть окно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Show Window"
+msgstr "Показать окно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:428
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:260
+msgid "Away on all"
+msgstr "Away везде"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:263
+msgid "Back on all"
+msgstr "Вернуться везде"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:450
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:282
+msgid "Back on %1"
+msgstr "Выйти из Away на %1 "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:453
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:285
+msgid "Away on %1"
+msgstr "Away на %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1238
+msgid "Alias"
+msgstr "Алиас"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1217
+msgid "No item selected"
+msgstr "Ничего не выбрано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:232
+msgid "Rename"
+msgstr "Переименовать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:236
+msgid "Edit the alias or namespace name"
+msgstr "Редактировать имя алиаса или пространства имен."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+msgid "Add Alias"
+msgstr "Добавить алиас"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:429
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Add Namespace"
+msgstr "Добавить пространство имен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:440
+msgid "Remove Selected"
+msgstr "&Удалить выбранное"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:449
+msgid "Export Selected..."
+msgstr "&Экспортировать выделенное..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:455
+msgid "Export Selected in singles files..."
+msgstr "Экспортировать выделенное в отдельыне файлы..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:462
+msgid "Export All..."
+msgstr "&Экспортировать всё..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:470
+msgid "Find In Aliases..."
+msgstr "Найти в алиасах..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:476
+msgid "Collapse All Namespaces"
+msgstr "Свернуть все пространства имен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:508
+msgid "Find In Aliases"
+msgstr "Найти в алиасах"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:509
+msgid ""
+"Please enter the text to be searched for. The matching aliases will be "
+"highlighted."
+msgstr ""
+"Пожалуйста, введите текст, который нужно найти. Алиасы, содержащие этот "
+"текст будут подсвечены."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "Alias Export"
+msgstr "Экспорт алиаса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#, fuzzy
+msgid "There is not selection!"
+msgstr "Соединение не принято!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:615
+msgid "The file \"%Q\" exists. Do you want to replace it ?"
+msgstr "Файл \"%Q\" существует.<br>Хотите переписать его?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+msgid "Replace file"
+msgstr "Заменить файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+msgid "Yes to All"
+msgstr "Да для всех"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "There exported file would be empty: cowardly refusing to write it"
+msgstr "Экспортируемый файл будет пустым: отменяю запись в него"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:786
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:411
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1133
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:398
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:745
+msgid "Choose a Filename - KVIrc"
+msgstr "Выберите имя файла - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Write Failed - KVIrc"
+msgstr "Ошибка записи - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+msgid "Unable to write to the alias file."
+msgstr "Невозможно сохранить файл алиасов."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:793
+msgid "Do you really want to remove the alias \"%Q\" ?"
+msgstr "Вы действительно хотите удалить алиас \"%Q\"?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:795
+msgid "Do you really want to remove the namespace \"%Q\" ?"
+msgstr "Вы действительно хотите удалить пространство имен \"%Q\"?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:797
+msgid "Please note that all the children items will be deleted too."
+msgstr "Пожалуйста учтите, что все дочерние элементы будут тоже удалены."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+msgid "Remove item"
+msgstr "Удалить элемент"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:875
+msgid "Missing Alias Name"
+msgstr "Не задано имя алиаса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:876
+msgid "You must specify a valid name for the alias"
+msgstr "Вы должны указать корректное имя алиаса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:877
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:890
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:904
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:915
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:946
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:959
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:973
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1128
+msgid "Ok, Let me try again..."
+msgstr "Хорошо, давайте попробую еще раз..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:888
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:902
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:913
+msgid "Bad Alias Name"
+msgstr "Некорректное имя алиаса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:944
+msgid "Missing Namespace Name"
+msgstr "Отсутствует имя пространства имен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:945
+msgid "You must specify a valid name for the namespace"
+msgstr "Вы должны определить корректное имя для пространства имен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:957
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:971
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:982
+msgid "Bad Namespace Name"
+msgstr "Некорректное имя для пространства имен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:958
+msgid ""
+"Namespace names can contain only letters, digits, underscores and '::' "
+"namespace separators"
+msgstr ""
+"Название пространства имен может содержать только буквы, цифры, нижние "
+"подчеркивания и разделитель пространств имен '::'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:972
+msgid ""
+"Stray ':' character in namespace name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+"Одиночный символ ':' найден. Может быть вы имели ввиду ...<namespace>::"
+"<name> ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:983
+msgid "Found an empty namespace in namespace name"
+msgstr "Найдена пустая строка в имени пространства имен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+msgid "Please enter the name for the new alias"
+msgstr "Пожалуйста введите имя нового алиаса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Please enter the name for the new namespace"
+msgstr "Пожалуйста введите имя нового пространства имен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+msgid "Rename Alias"
+msgstr "Переименовать алиас"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+msgid "Please enter the new name for the alias"
+msgstr "Пожалуйста введите новое имя алиаса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Rename Namespace"
+msgstr "Переименовать пространство имен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Please enter the new name for the namespace"
+msgstr "Пожалуйста, введите новое название пространства имен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1126
+#, fuzzy
+msgid "Alias already exists"
+msgstr "Адрес уже используется"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1139
+msgid "This name is already in use. Please choose another one."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1138
+msgid "Namespace already exists"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1140
+#, fuzzy
+msgid "Ok, let me try again..."
+msgstr "Хорошо, давайте попробую еще раз..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1227
+msgid "Namespace"
+msgstr "Пространство имен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1332
+msgid "Alias Editor"
+msgstr "Редактор алиасов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:62
+msgid "Join Channels"
+msgstr "Входить на каналы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:183
+msgid "Name"
+msgstr "Имя"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:86
+msgid "Password"
+msgstr "Пароль"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:641
+msgid "&Join"
+msgstr "&Войти"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:108
+msgid "Show this window after connecting"
+msgstr "Показать это окно после соединения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:163
+msgid "Recent Channels"
+msgstr "Недавние каналы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:182
+msgid "Registered Channels"
+msgstr "Зарегистрированные каналы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:133
+msgid "Choose the file to share"
+msgstr "Выберите файл для предоставления в свободный доступ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:178
+msgid "No such channel/netmask entry in the database"
+msgstr "Не найдены канал/маска в базе"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:198
+msgid "Registered channel list:"
+msgstr "Зарегистрированный список каналов:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:208
+#, c-format
+msgid "Channel: %c%s@%s"
+msgstr "Канал: %c%s@%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:213
+#, c-format
+msgid " Property: %s=%s"
+msgstr " Свойство: %s=%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:220
+#, c-format
+msgid "Total %d channels"
+msgstr "Всего %d каналов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:86
+msgid "Property Editor"
+msgstr "Редактор свойств"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:101
+msgid "Property"
+msgstr "Свойства"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:102
+msgid "Value"
+msgstr "Значение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:111
+msgid "&New"
+msgstr "&Новый"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:215
+msgid "Mask Editor"
+msgstr "Редактор маски"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:219
+msgid ""
+"Insert a mask for this user.<br>It can contain the wildcard characters '*' "
+"and '?'."
+msgstr ""
+"Вставьте маску для этого пользователя.<br>Она может содержать символы "
+"шаблонов '*' и '?'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:230
+msgid ""
+"<center>This the <b>nickname</b> that will match this user, default value is "
+"the registered name.</center>"
+msgstr ""
+"<center>Это <b>ник</b> соответствующий этому пользователю, является "
+"зарегистрированным и используется по умолчанию.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:241
+msgid ""
+"<center>This the <b>username</b> that will match this user. <b>*</b> will "
+"match any username.</center>"
+msgstr ""
+"<center>Это <b>ник</b> соответствующий этому пользователю. <b>*</b> будет "
+"соответствовать любому имени пользователя.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:252
+msgid ""
+"<center>This the <b>hostname</b> that will match this user. <b>*</b> will "
+"match any hostname.</center>"
+msgstr ""
+"<center>Это <b>хост</b> соответствующий этому пользователю. <b>*</b> будет "
+"соответствовать любому хосту.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:333
+msgid "Registered User Entry"
+msgstr "Регистрация пользователя"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:145
+msgid "Name:"
+msgstr "Имя:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:345
+msgid "Comment:"
+msgstr "Комментарий:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:355
+msgid "Masks:"
+msgstr "Маска:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:216
+msgid "&Add..."
+msgstr "&Добавить..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:377
+msgid "&Edit"
+msgstr "&Редактировать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:385
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:414
+msgid "Identity"
+msgstr "Идентификация"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:393
+msgid "Notify when user is online"
+msgstr "Уведомлять когда пользователь в онлайне"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:396
+msgid "Notify nicknames:"
+msgstr "Уведомление ников:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:401
+msgid "<center>You can enter a space separated list of nicknames.</center>"
+msgstr "<center>Вы можете ввести через пробел список ников.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:426
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:383
+msgid "Avatar"
+msgstr "Аватар"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:433
+msgid "Use custom color in userlist"
+msgstr "Использовать другой цвет в списке пользователей"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:441
+msgid "All Properties..."
+msgstr "Все свойства..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:448
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:231
+msgid "Properties"
+msgstr "Свойства"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:458
+msgid "Enable ignore for this user"
+msgstr "Игнорировать этого пользователя"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:460
+#, fuzzy
+msgid "Ignore features"
+msgstr "Игнорировать как"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:465
+msgid "Ignore query-messages"
+msgstr "Игнорировать приватные сообщения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:468
+msgid "Ignore channel-messages"
+msgstr "Игнорировать сообщения в канале"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:471
+msgid "Ignore notice-messages"
+msgstr "Игнорировать уведомления"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:474
+msgid "Ignore ctcp-messages"
+msgstr "Игнорировать CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:477
+msgid "Ignore invites"
+msgstr "Игнорировать приглашения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:480
+msgid "Ignore DCCs"
+msgstr "Игнорировать DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:486
+msgid "Ignore"
+msgstr "Игнор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:94
+#, fuzzy
+msgid "Notify disabled"
+msgstr "Список уведомлений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:96
+#, fuzzy
+msgid "Notify as: "
+msgstr "Список уведомлений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:105
+#, fuzzy
+msgid "No comment set"
+msgstr "Нет контекста IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:107
+#, fuzzy
+msgid "Comment: "
+msgstr "Комментарий:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:176
+msgid "Registered Users - KVIrc"
+msgstr "Регистрация пользователей - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:317
+msgid "Flags"
+msgstr "Флаги"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:192
+msgid ""
+"<center>This is the list of registered users. KVIrc can automatically "
+"recognize and associate properties to them.<br>Use the buttons on the right "
+"to add, edit and remove entries. The \"notify\" column allows you to quickly "
+"add users to the notify list. Notify list fine-tuning can be performed by "
+"editing the entry properties.</center>"
+msgstr ""
+"<center>Это список зарегистрированных пользователей. KVIrc может "
+"автоматически узнавать и ассоциировать с ними свойства.<br>Используйте "
+"кнопки справа для добавления, удаления и редактирования пунктов. Колонка "
+"\"Уведомления\" позволяет вам быстро добавлять пользователей в список "
+"уведомлений. Тонкая настройка списка выполняется при редактировании свойств."
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:208
+msgid "Add (Wizard)..."
+msgstr "Добавить (Мастер)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:211
+msgid "Add a registered user by means of a user-friendly wizard."
+msgstr "Добавьте регистрацию пользователя при помощи дружественного мастера."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:219
+msgid "Open the edit dialog to create a new user entry."
+msgstr "Откройте диалог редактирования чтобы создать нового пользователя."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:223
+msgid "&Add Group..."
+msgstr "&Добавить группу..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:226
+msgid "Adds a new group"
+msgstr "Добавить новую групу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:234
+msgid "Remove the currently selected entries."
+msgstr "Удалить текущий выбранный пункт."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:239
+msgid "&Edit..."
+msgstr "&Редактировать..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:243
+msgid "Edit the first selected entry."
+msgstr "Редактировать первый выбранный пункт."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:250
+msgid "Export To..."
+msgstr "Экспортировать в..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:254
+msgid ""
+"Export the selected entries to a file.<br>All the data associated with the "
+"selected registered users will be exported.<br>You (or anyone else) can "
+"later import the entries by using the \"Import\" button."
+msgstr ""
+"Экспортировать выбранные данные в файл.<br>Все данные связанные с выбранными "
+"регистрациями пользователей будут экспортированы.<br> Вы (или кто-нибудь "
+"ещё) можете позже импортировать эти данные используя кнопку \"Импорт\"."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:259
+msgid "Import From..."
+msgstr "Импортировать из..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:262
+msgid ""
+"Import entries from a file exported earlier by the \"export\" function of "
+"this dialog."
+msgstr ""
+"Импортировать данные из файла которые были ранее экспортированы функцией "
+"\"Экспорт\" этого диалога."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:399
+msgid "Group name:"
+msgstr "Имя группы:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:442
+msgid "Move to group"
+msgstr "Переместить в группу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:483
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:486
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:487
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:491
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:690
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_useridentity.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:962
+msgid "Default"
+msgstr "По умолчанию"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:674
+msgid "No entries selected."
+msgstr "Ничего не выбрано."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:687
+msgid "Can't open file %Q for writing."
+msgstr "Не могу открыть файл %Q для записи."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:772
+msgid "Can't export the registered users database: Write error."
+msgstr ""
+"Невозможно экспортировать базу данных регистрации пользователей: Ошибка "
+"записи."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:793
+#, c-format
+msgid "Can't open file %s for reading."
+msgstr "Не могу открыть файл %s для чтения."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:804
+#, c-format
+msgid "The file %s doesn't appear to be a valid registered users database."
+msgstr "Файл %s не является действительной базой регистрации пользователей."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:811
+#, c-format
+msgid "The file %s contains an invalid registered users database version."
+msgstr "Файл %s содержит базу данных пользователей недействительной версии."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:892
+msgid "Can't import the registered users database: Read error."
+msgstr "Не могу импортировать базу регистрации пользователей: Ошибка чтения."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:78
+msgid "User Registration Wizard - KVIrc"
+msgstr "Мастер регистрации пользователя - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:89
+msgid ""
+"<p>Welcome to the user registration wizard.<br>This process allows you to "
+"add an IRC user to the database and set properties for that user. KVIrc will "
+"be (hopefully) able to recognize the user, add him to the notify list, and "
+"display the associated avatar.<br><br>First of all, you must insert an "
+"<b>entry name or real name</b> for the user you're going to register. The "
+"name will be used to identify the database entry and has no specific "
+"requirements, it can be a given name, nickname, or just some text to remind "
+"you of the real person.<br>Examples: \"George W Bush\", \"Dubya\".\n"
+"</p>"
+msgstr ""
+"<p>Добро пожаловать в мастер регистрации пользователя.<br>Эта процедура "
+"позволит вам добавить пользователя IRC к базе данных и определить свойства "
+"этого пользователя. KVIrc сможет идентифицировать пользователя, добавить его "
+"в список уведомлений и покажет связанный с ним аватар.<br><br>Прежде всего "
+"вы должны <b>ввести реальное имя</b> для пользователя которого вы пытаетесь "
+"зарегистрировать. Это имя будет использоваться для идентификации в базе "
+"данных и не имеет никаких специфичных требований, оно может быть просто "
+"отвлечённым именем, ником или каким-либо текстом который будет напоминать "
+"вам об этом человеке.<br>Например: \"Вася Пупкин\", \"Бритни Спирс\".\n"
+"</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:97
+msgid "Step 1: Entry Name"
+msgstr "Шаг 1: Выберите имя"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:112
+msgid ""
+"<p>A registered user is identified by one or more <b>IRC masks</b>.<br>A "
+"mask must be in the following form:<br><b>nickname!username@hostname</"
+"b><br>and can contain wildcard characters '*' and '?'. Be careful in "
+"choosing the masks, as they are the only way to verify the identity of a "
+"registered user.<br><br>You can enter at most two masks here, if you wish to "
+"add more masks, use the \"<b>Edit</b>\" button in the Registered Users "
+"dialog. You must enter at least one mask.</p>"
+msgstr ""
+"<p>Зарегистрированный пользователь идентифицируется по одной или нескольким "
+"<b>маскам IRC</b>.<br>Маска должна быть следующего вида: <br><b>ник!"
+"имя@хост</b><br> и может содержать символы шаблонов '*' и '?'. Будьте "
+"внимательны при выборе маски, так как она единственный способ "
+"идентифицировать пользователя.<br><br>Здесь вы можете определить не больше "
+"двух масок, если вам нужно больше используйте кнопку \"<b>Редактировать</b>"
+"\" в диалоге регистрации пользователей. Вы должны определить хотя бы одну "
+"маску.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:170
+msgid "Step 2: Mask Selection"
+msgstr "Шаг 2: Выбор маски"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:182
+msgid ""
+"<p>If you want to store an avatar image for this user, you can set it here. "
+"KVIrc will show the avatar in the userlist next to the user's nickname."
+"<br>An avatar can be in any supported image format (PNG is recommended). "
+"Keep in mind that KVIrc stores avatars in memory and has to resize them to "
+"fit in the userlist, thus it's better to use small, low-resolution images.</"
+"p>"
+msgstr ""
+"<p>Если вы хотите ассоциировать с этим пользователем аватар, вы можете "
+"сделать это здесь. KVIrc будет показывать этот аватар в списке пользователей "
+"рядом с ником.<br>В качестве аватаров поддерживаются любые форматы картинок "
+"(рекомендуется PNG). Имейте ввиду, что KVIrc загружает аватары в память и "
+"там их масштабирует чтобы поместить в список пользователей, поэтому лучше "
+"выбирать картинки небольших размеров с низким разрешением.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:190
+msgid "Store an avatar for this user"
+msgstr "Использовать аватар для этого пользователя"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:195
+msgid "Step 3: Avatar Selection"
+msgstr "Шаг 3: Выбор аватара"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:206
+msgid ""
+"<p>If you want to be notified when this user is online or goes offline, you "
+"must specify the list of nicknames that KVIrc will look for.<br><br>You can "
+"enter at most two nicknames here, if you wish to add more nicknames, use the "
+"\"<b>Edit</b>\" button in the Registered Users dialog.</p>"
+msgstr ""
+"<p>Если вы хотите получать уведомления когда пользователь появляется в "
+"онлайне или уходит в оффлайн, вы должны определить здесь список ников "
+"которые будет искать KVIrc<br><br>Здесь вы можете определить не больше двух "
+"ников, если вам нужно больше используйте кнопку \"<b>Редактировать</b>\" в "
+"диалоге регистрации пользователей.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:215
+msgid "Add this user to the notify list"
+msgstr "Добавить этого пользователя в список уведомлений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:342
+msgid "Nickname:"
+msgstr "Ник:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:225
+msgid "Nickname 2:"
+msgstr "2-й ник:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:239
+msgid "Step 4: Notify List"
+msgstr "Шаг 4: Список уведомлений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:251
+msgid ""
+"<p>That's it. The user registration has been completed.<br><br>Click "
+"\"<b>Finish</b>\" to close this dialog.</p>"
+msgstr ""
+"<p>Регистрация пользователя завершена.<br><br>Щёлкните на \"<b>Готово</b>\" "
+"для закрытия этого диалога.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:254
+msgid "Registration Complete"
+msgstr "Регистрация завершена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:695
+msgid "No name specified"
+msgstr "Имя не определено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:209
+msgid "User already registered: found exact name match"
+msgstr "Пользователь уже зарегистрирован: обнаружено такое же имя"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:222
+msgid "Mask %Q is already used to identify user %s"
+msgstr "Маска %Q уже имеется у пользователя %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:275
+msgid "User not found (%Q)"
+msgstr "Пользователь не найден (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:403
+msgid "No mask specified"
+msgstr "Маска не определена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:524
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:708
+msgid "User %Q not found"
+msgstr "Пользователь %Q не найден"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:355
+msgid "Mask %Q already used to identify user %Q"
+msgstr "Маска %Q уже используется для идентификации пользователя %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:410
+msgid "Mask %Q not found"
+msgstr "Маска %Q не найдена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:701
+msgid "No property specified"
+msgstr "Не определено свойство"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:808
+msgid "Registered users database dump:"
+msgstr "Дамп базы зарегистрированных пользователей:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:819
+msgid " User: %c%Q"
+msgstr " Пользователь: %c%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:823
+msgid " Warning: this user has no registration masks"
+msgstr " Предупреждение: этот пользователь не имеет регистрационной маски"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:827
+msgid " Mask: %Q!%Q@%Q"
+msgstr " Маска: %Q!%Q@%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:838
+msgid " Property: %Q=%Q"
+msgstr " Свойство: %Q=%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:841
+msgid " No properties"
+msgstr " Нет свойств"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:847
+#, c-format
+msgid "Total: %d matching users (of %d in the database)"
+msgstr "Итого: %d пользователей (%d в базе данных)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:197
+msgid "Manage Script-Based Addons"
+msgstr "Управление скриптовыми дополненими"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1155
+msgid "Configure"
+msgstr "Конфигурация"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:225
+msgid "Show Help"
+msgstr "Показать помощь"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:231
+msgid "Uninstall"
+msgstr "Удалить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:243
+msgid "Install Addon..."
+msgstr "Установить дополнение..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:247
+msgid "More Addons..."
+msgstr "Еще дополнения..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:333
+msgid "Do you really want to uninstall the addon \"%1\" ?"
+msgstr "Вы действительно хотите удалить дополнение \"%1\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+msgid "Confirm addon uninstallation"
+msgstr "Подтвердите удаление дополнения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:354
+msgid "Please select the addon installation file"
+msgstr "Пожалуйста, укажите установочный файл дополнения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:144
+msgid "%cAddon id %Q, version %Q%c"
+msgstr "%cДополнение %Q, версия %Q%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:145
+msgid "Name: %Q"
+msgstr "Имя: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:67
+msgid "Description: %Q"
+msgstr "Описание: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:152
+#, c-format
+msgid "Total: %d addons installed"
+msgstr "Всего установлено %d дополнений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:192
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:571
+msgid "Uninstalling existing addon version %Q"
+msgstr "Удаление имеющегося дополнения версии %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:384
+msgid "The addon \"%1\" does not exist"
+msgstr "Дополнение \"%1\" не существует"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:238
+msgid "The addon \"%1\" has no configure callback set"
+msgstr "Дополнение \"%1\" не имеет конфигурационных функций"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:285
+msgid "The addon \"%1\" has no help callback set"
+msgstr "Действие \"%1\" не имеет помощи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:527
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:377
+msgid "Internal error: call a head-shrinker"
+msgstr "Внутренняя ошибка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:536
+msgid "The specified version \"%Q\" is not a valid version string"
+msgstr "Заданная версия \"%Q\" не имеет формата строки версии"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:542
+msgid "The specified KVIrc version \"%Q\" is not a valid version string"
+msgstr "Заданная версия KVirc \"%Q\" не является корректной"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:548
+msgid ""
+"This KVIrc executable is too old to run this addon (minimum version required "
+"is %Q)"
+msgstr ""
+"Установлен KVIrc слишком старой версии. Минимальная требуемая версия для "
+"этого скрипта %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:553
+msgid "Attempting to register addon \"%Q\" with version %Q"
+msgstr "Попытка зарегистрировать дополнение \"%Q\" версии %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:565
+msgid ""
+"The script addon \"%Q\" already exists with version %Q which is higher than %"
+"Q"
+msgstr "Дополнение \"%Q\" уже установлено версии %Q, которая новее чем %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:579
+msgid "Script registration failed"
+msgstr "Не удалось зарегистрировать скрипт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:584
+msgid "Script succesfully registered"
+msgstr "Скрипт успешно зарегистрирован"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:102
+#, fuzzy, c-format
+msgid "%s (%s) (%s:%u)"
+msgstr "%Q установлено [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:104
+#, fuzzy, c-format
+msgid "%s (%s)"
+msgstr "%1 это %2 (%3)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:107
+#, c-format
+msgid "%s (%s:%u)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:109
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:112
+#, fuzzy, c-format
+msgid "[IDENT]: %s"
+msgstr "[СОКЕТ]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:119
+#, fuzzy
+msgid "Shutting down identd service (spontaneous action)"
+msgstr "Прямое подключение к серверу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:124
+#, fuzzy
+msgid "Shutting down identd service (requested action)"
+msgstr "Прямое подключение к серверу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:225
+#, fuzzy
+msgid "Can't start the ident service : socket() failed"
+msgstr "Не могу запустить прослушивание сокета: Ошибка связи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:231
+#, fuzzy
+msgid "Can't start the ident service : async setting failed"
+msgstr "Не могу запустить прослушивание сокета: Ошибка связи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:237
+msgid "Can't enable the ident service : can't setup the listen address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:243
+#, fuzzy
+msgid "Can't start the ident service : bind() failed"
+msgstr "Не могу запустить прослушивание сокета: Ошибка связи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:249
+#, fuzzy
+msgid "Can't start the ident service : listen() failed"
+msgstr "Не могу запустить прослушивание сокета: Ошибка связи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:263
+msgid "Can't start the ident service on IpV6 : socket() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:269
+msgid "Can't start the ident service on IpV6 : async setting failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:277
+msgid "Can't enable the ident service on IpV6 : can't setup the listen address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:285
+#, fuzzy
+msgid "Can't start the ident service on IpV6 : bind() failed"
+msgstr "Не могу запустить прослушивание сокета: Ошибка связи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:294
+#, fuzzy
+msgid "Can't start the ident service on IpV6 : listen() failed"
+msgstr "Не могу запустить прослушивание сокета: Ошибка связи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:310
+msgid "Starting identd service (IpV4/V6 on separate namespaces)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:313
+msgid "Starting identd service (IpV4/V6 in IpV6 namespace)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:318
+msgid "Starting identd service (IpV4)"
+msgstr "Стартую Identd сервис (IpV4)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:322
+msgid "Service startup (IpV4)"
+msgstr "Стартую сервис (IpV4)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:412
+msgid "Identd accepting connection"
+msgstr "Identd принял подключение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:435
+msgid "Identd socket error : dropping connection"
+msgstr "ошибка сокета Identd, закрываю соединение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:440
+msgid "Identd connection closed by remote host"
+msgstr "Identd соединение закрыто удаленным сервером"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:461
+msgid "Identd processing request"
+msgstr "Identd обрабатывает запрос"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:476
+msgid "Empty request (EOT ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:487
+msgid "Dropping connection (request too long)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:500
+msgid "Timed out while waiting for the request : dropping connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/libkvilinks.cpp:74
+msgid "Links window alread open for this IRC context"
+msgstr "Окно ссылок уже открыто для этого контекста IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:57
+msgid "Request Links"
+msgstr "Запросить соединения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:70
+msgid "Link"
+msgstr "Связь"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:71
+msgid "Hops"
+msgstr "Прыжок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:72
+msgid "Description"
+msgstr "Описание"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:90
+msgid "(None)"
+msgstr "(Ничего)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:112
+msgid "Sent links request, waiting for reply..."
+msgstr "Отослан запрос связей серверов, ожидаю ответ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:115
+msgid "Cannot request links: No active connection"
+msgstr "Невозможно запросить данные о связи серверов: Нет активных соединений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:128
+msgid "Links cannot be requested: Not connected to a server"
+msgstr ""
+"Невозможно запросить данные о связи серверов: Нет подключения к серверу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:153
+msgid "Links for %Q [IRC Context %u]"
+msgstr "Карта сети для %Q [IRC контекст %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:164
+msgid ""
+"<nobr><font color=\"%s\"><b>Links for %Q</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Ссылки для %Q</b></font> <font color=\"%s\">[IRC "
+"Контекст %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:194
+msgid "Received end of links."
+msgstr "Конец получения данных о связях серверов."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:235
+#, c-format
+msgid ""
+"Broken link: Missing parent (%s) for %s (%d hops): %s (used /LINKS <mask> ?)"
+msgstr ""
+"Битая связь: Отсутствует родитель (%s) для %s (%d прыжков): %s "
+"(используется /LINKS <mask> ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:238
+#, c-format
+msgid "%s: Parent link %s"
+msgstr "%s: Родительская связь %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:242
+msgid "Warning: No root link was sent by the server, the stats may be invalid."
+msgstr ""
+"Предупреждение: Не корневая связь была послана сервером, статистика может "
+"быть не действительной."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:278
+msgid "%c%cLinks for %Q"
+msgstr "%c%c Соединения для %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts listed"
+msgstr "Всего серверов в списке"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts in the network"
+msgstr "Общее количество серверов в сети"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:282
+#, c-format
+msgid "Wildcard servers (hubs?): %d"
+msgstr "Неуправляемые сервера (хабы?): %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:283
+msgid "Direct links: %d (~%d.%d %)"
+msgstr "Прямые соединения: %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:284
+msgid "Close links (1 <= hops <= 3): %d (~%d.%d %)"
+msgstr "Близкие сервера (1 <= прыжков <= 3): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:285
+msgid "Mid-range links (4 <= hops <= 6): %d (~%d.%d %)"
+msgstr "Сервера средней дальности (4 <= прыжков <= 6): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:286
+msgid "Distant links (7 <= hops): %d (~%d.%d %)"
+msgstr "Далекие сервера (7 <= прыжков): %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:287
+#, c-format
+msgid "Broken (unknown) links: %d"
+msgstr "Битые (неизвестные соединения): %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:288
+#, c-format
+msgid "Maximum links per host: %d [%s]"
+msgstr ""
+"Хаб, который содержит максимальное количество подключенных серверов: %d [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:289
+#, c-format
+msgid "Total links: %d"
+msgstr "Всего соединений: %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:290
+#, c-format
+msgid "Maximum hops: %d [%s]"
+msgstr "Максимум прыжков: %d [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:291
+#, c-format
+msgid "Average hops: ~%d.%d"
+msgstr "Среднее количество прыжков: ~%d.%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:294
+msgid "Incomplete LINKS result, no stats available"
+msgstr "Неполный результат LINKS, статистика недоступна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:747
+msgid "You're not connected to a server"
+msgstr "Вы не подключены к серверу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:404
+#, c-format
+msgid "Processing link: %s"
+msgstr "Обработка соединений: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:419
+msgid "Broken message syntax, can't extract hops number, assuming 0"
+msgstr ""
+"Битый синтаксис сообщения, невозможно извлечь количество прыжков, принимаю 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:86
+msgid "< &Back"
+msgstr "< &Назад"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:87
+msgid "&Next >"
+msgstr "&Дальше >"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:282
+msgid "Finish"
+msgstr "Готово"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:164
+msgid ""
+"<p><h2>Welcome :)</h2>This is your first time running this version of KVIrc."
+"<br>This wizard will guide you through the few steps required to complete "
+"the setup.<br><br>If you had a previous version of KVIrc installed, no "
+"worries. You will have a chance to preserve the old configuration.</"
+"p><p>Click \"<b>Next</b>\" to proceed.</p>"
+msgstr ""
+"<p><h2>Добро пожаловать :)</h2>Это ваш первый запуск этой версии KVIrc."
+"<br>Мастер проведёт вас через несколько шагов, необходимых для завершения "
+"установки.<br><br>Если у вас установлена предыдущая версия KVIrc, не "
+"беспокойтесь. У вас будет возможность сохранить предыдущую конфигурацию.</"
+"p><p>Кликните на \"<b>Дальше</b>\" чтобы продолжить.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:176
+msgid "Welcome to KVIrc"
+msgstr "Добро пожаловать в KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:187
+msgid ""
+"<p>All of the files in this distribution are covered by the GPL. In human "
+"terms this can be read as follows:<br><ul><li><b>KVIrc is free</b>, use it, "
+"have fun! <b>:)</b></li><li>If you use <b>any</b> part of KVIrc in your own "
+"project, you <b>must</b> release that project under the same license.</li></"
+"ul></p><p>The \"legalese\" version of the license is shown in the box below."
+"</p>"
+msgstr ""
+"<p>Все файлы этого приложения выпущены под лицензией GPL. Проще говоря это "
+"означает следующее:<br><ul><li><b>KVIrc является свободным ПО</b>, "
+"используйте его в своё удовольствие! <b>:)</b></li><li>Если вы будете "
+"использовать <b>любые</b> части KVIrc в вашем проекте, вы <b>обязаны</b> "
+"выпустить проект под этой же лицензией.</li></ul></p><p>\"Legalese\" версия "
+"лицензии показана внизу.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:203
+msgid ""
+"Oops... can't find the license file.\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+"Упс... не найден файл лицензии.\n"
+"Он ДОЛЖЕН быть в дистрибутиве...\n"
+"Пожалуйста сообщите по адресу <pragma собака kvirc точка net>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:211
+msgid "Dreaded License Agreement"
+msgstr "Ужасное лицензионное соглашение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:215
+msgid "KVIrc Setup"
+msgstr "Установка KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:224
+msgid ""
+"<p>Please choose a folder for KVIrc to store its settings and other data, "
+"and another for downloaded files. Make sure that you have permission to "
+"write to both folders.<br><br>The suggested locations are fine in most "
+"cases, so if you don't know what is this about, just click \"<b>Next</b>\"."
+"<br><br>If you had a previous version of KVIrc installed, you can choose the "
+"existing directory for the settings, and your configuration will be "
+"preserved.</p>"
+msgstr ""
+"<p>Пожалуйста выберите каталог в котором KVirc будет хранить настройки и "
+"данные, а также каталог для скачиваемых файлов. Убедитесь, что у вас есть "
+"доступ на запись в оба каталога.<br><br>Предложенные варианты подходят для "
+"большинства случаев, так что если вы сомневаетесь, просто кликните "
+"\"<b>Дальше</b>\".<br><br>Если у вас была установлена предыдущая версия "
+"KVIrc, вы можете выбрать существующий каталог настроек, и ваша конфигурация "
+"будет сохранена.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:234
+msgid "Application Folders"
+msgstr "Каталоги приложения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:238
+msgid "Store configuration in folder"
+msgstr "Хранить конфигурацию в каталоге"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:239
+msgid "Use settings folder from previous installation"
+msgstr "Использовать уже существующую папку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:251
+msgid "Use new settings folder"
+msgstr "Новая папка настроек"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:255
+msgid "Settings folder:"
+msgstr "Папка настроек:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:281
+msgid "Download files to folder:"
+msgstr "Папка для скачиваемых файлов:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:304
+msgid "All settings in shared program folder (portable)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:325
+msgid ""
+"Please choose a Nickname.<br><br>Your nickname is the name that other IRC "
+"users will know you by. It can't contain spaces or punctuation. Some IRC "
+"networks will shorten your nickname if it is more than 32 characters long."
+"<br><br>If in doubt, just enter the first nick that comes to mind. You will "
+"be able to change it later in the Identity properties, or with the /NICK "
+"command."
+msgstr ""
+"Пожалуйста выберите себе Ник.<br><br>По вашему нику другие пользователи IRC "
+"будут вас узнавать. Он не должен содержать пробелов или знаков препинания. "
+"Некоторые IRC обрежут ваш ник, если он содержит больше 32 символов."
+"<br><br>Если вы сомневаетесь, просто введите первый ник, который придёт вам "
+"в голову. Вы сможете изменить его позже в настройках, или введя команду /"
+"NICK ."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:348
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr "Это поле не обязательно и будет использовано в CTCP USERINFO ответе"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:353
+msgid "Profile"
+msgstr "Профиль"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:355
+msgid "Real name:"
+msgstr "Настоящее имя:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:361
+msgid "Age:"
+msgstr "Возраст:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:392
+msgid "Unspecified"
+msgstr "Не указано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:405
+msgid "Location:"
+msgstr "Страна:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:408
+msgid "Languages:"
+msgstr "Языки:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:491
+msgid ""
+"<p>Here you can choose how much KVIrc will integrate with your system."
+"<br><br>The default settings are fine for most users so if you're in doubt "
+"just click \"<b>Next</b>\" and go to the next screen.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:501
+msgid "Desktop Integration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:504
+msgid "Make KVIrc default IRC client"
+msgstr "Сделать KVIrc IRC клиентом по умолчанию"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:508
+msgid "Create desktop shortcut"
+msgstr "Создать ярлык на рабочем столе"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:513
+msgid "Import server list from mIRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:727
+msgid "Choose an Old Configuration Folder - KVIrc Setup"
+msgstr "Выберите старый каталог конфигурации - Установщик KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:736
+msgid "Do not overwrite folder? - KVIrc"
+msgstr "Не перезаписывать папку? - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:737
+msgid ""
+"A folder %1 seems to be not a valid KVIrc settings folder.Do you want to use "
+"it anyway?"
+msgstr ""
+"Похоже что папка %1 является папкой со старыми настройками KVIrc. Вы "
+"действительно хотите ее использовать?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:753
+msgid "Choose a Configuration Folder - KVIrc Setup"
+msgstr "Выберите каталог конфигурации - Установщик KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:764
+msgid "Choose a Download Folder - KVIrc Setup"
+msgstr "Выберите каталог для закачек - Установщик KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:933
+msgid "Abort Setup - KVIrc Setup"
+msgstr "Установка прервана - Установщик KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:934
+msgid ""
+"You have chosen to abort the setup.<br>KVIrc cannot run until you complete "
+"this procedure.<br><br>Do you really wish to abort?"
+msgstr ""
+"Вы собираетесь прервать установку.<br>KVIrc не сможет работать до тех пор "
+"пока вы не завершите эту процедуру.<br><br>Вы действительно хотите прервать?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:965
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:996
+#, c-format
+msgid ""
+"Cannot create directory %s.\n"
+"You may not have write permission for that path. Please go back and choose "
+"another directory."
+msgstr ""
+"Не могу создать каталог %s.\n"
+"У вас нет доступа на запись по выбранному пути. Пожалуйста вернитесь и "
+"выберите другой каталог."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+msgid "Package saved succesfully"
+msgstr "Пакет успешно сохранен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:80
+msgid "Event"
+msgstr "Событие"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1046
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:92
+msgid "&Export All To..."
+msgstr "&Экспортировать всё в..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:90
+msgid "Edit the event handler name."
+msgstr "Редактирование имени обработчика события."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:154
+msgid "&Enable Handler"
+msgstr "&Включить обработчик"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:158
+msgid "&Disable Handler"
+msgstr "В&ыключить обработчик"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:162
+msgid "Re&move Handler"
+msgstr "У&далить обработчик"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:164
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:166
+msgid "&Export Handler To..."
+msgstr "&Экспорт обработчика в..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:171
+msgid "&New Handler"
+msgstr "&Новый обработчик"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:190
+msgid "unnamed"
+msgstr "без имени"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:215
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:250
+msgid "default"
+msgstr "по умолчанию"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:314
+msgid "none"
+msgstr "нет"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:318
+#, c-format
+msgid ""
+"\n"
+"\n"
+"\tEvent:\n"
+"\t\t%s\n"
+"\n"
+"\tParameters:\n"
+"%s"
+msgstr ""
+"\n"
+"\n"
+"\tСобытие:\n"
+"\t\t%s\n"
+"\n"
+"\tПараметры:\n"
+"%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+msgid "Unable to write to the event file."
+msgstr "Не могу записать событие в файл."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+msgid "Unable to write to the events file."
+msgstr "Не могу записать события в файл."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:486
+msgid "Event Editor"
+msgstr "Редактор событий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:77
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:213
+msgid "Item"
+msgstr "Пункт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:80
+msgid "Submenu"
+msgstr "Подменю"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:83
+msgid "External Menu"
+msgstr "Внешнее меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:136
+msgid "Label"
+msgstr "Метка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:93
+msgid "### Epilogue ###"
+msgstr "### Эпилог ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:94
+msgid "Epilogue"
+msgstr "Эпилог"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:97
+msgid "### Prologue ###"
+msgstr "### Пролог ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:98
+msgid "Prologue"
+msgstr "Пролог"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:198
+msgid "Popup name"
+msgstr "Имя всплывающего меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:202
+msgid "Test"
+msgstr "Тест"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:230
+msgid "Text:"
+msgstr "Текст:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:236
+msgid ""
+"<center><b>Visible text</b><br>May contain identifiers that will be "
+"evaluated at popup call time.<br>For labels, this text can contain also "
+"limited HTML tags.</center>"
+msgstr ""
+"<center><b>Видимый текст</b><br>Может содержать идентификаторы которые "
+"определены при вызове всплывающего меню.<br>Этот текст также может содержать "
+"некоторые HTML теги.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:239
+msgid "Condition:"
+msgstr "Условие:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:245
+msgid ""
+"<center><b>Boolean condition</b><br>Will be evaluated at popup call time in "
+"order to decide if this entry has to be shown.<br>An empty condition "
+"evaluates to true.</center>"
+msgstr ""
+"<center><b>Булево условие</b><br>Будет определять показывать ли всплывающее "
+"меню во время вызова.<br>Пустое условие принимается за истину.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:248
+msgid "Icon:"
+msgstr "Иконка:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:254
+msgid ""
+"<center><b>Icon identifier</b><br>May be an internal icon ID, an absolute "
+"path or a relative path.<br>Portable scripts should never use absolute paths."
+"</center>"
+msgstr ""
+"<center><b>Идентификатор иконки</b><br>Может быть внутренним ID иконки, "
+"абсолютным или относительным путём.<br>Переносимые сценарии не должны "
+"содержать абсолютных путей</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:257
+msgid "External menu:"
+msgstr "Внешнее меню:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:263
+msgid ""
+"<center><b>External menu name</b><br>This allows to nest externally defined "
+"popup menus. The popup menu with the specified name will be looked up at "
+"menu setup time.</center>"
+msgstr ""
+"<center><b>Имя внешнего меню</b><br>Это позволит вставить внешнее "
+"всплывающее меню. Меню с этим именем будет искаться во время установки</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:266
+msgid "Item Id:"
+msgstr "Id пункта:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:273
+msgid ""
+"<center><b>Item id</b><br>This will allow you to use delpopupitem later.</"
+"center>"
+msgstr ""
+"<center><b>ID Пункта</b><br>Это позволит вам использовать delpopupitem позже."
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:386
+msgid "New Separator Below"
+msgstr "Новый разделитель внизу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:388
+msgid "New Separator Above"
+msgstr "Новый разделитель вверху"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:391
+msgid "New Separator Inside"
+msgstr "Новый разделитель по середине"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:396
+msgid "New Label Below"
+msgstr "Новая метка внизу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:398
+msgid "New Label Above"
+msgstr "Новая метка вверху"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:401
+msgid "New Label Inside"
+msgstr "Новая метка по середине"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:406
+msgid "New Item Below"
+msgstr "Новый пункт внизу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:408
+msgid "New Item Above"
+msgstr "Новый пункт вверху"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:411
+msgid "New Item Inside"
+msgstr "Новый пункт по середине"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:416
+msgid "New Menu Below"
+msgstr "Новое меню внизу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:418
+msgid "New Menu Above"
+msgstr "Новое меню вверху"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:421
+msgid "New Menu Inside"
+msgstr "Новое меню по середине"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:426
+msgid "New External Menu Below"
+msgstr "Новое внешнее меню внизу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:428
+msgid "New External Menu Above"
+msgstr "Новое внешнее меню вверху"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:431
+msgid "New External Menu Inside"
+msgstr "Новое внешнее меню по середине"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:451
+msgid "&Paste Below"
+msgstr "&Вставить снизу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:456
+msgid "Paste Above"
+msgstr "Вставить сверху"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:461
+msgid "Paste Inside"
+msgstr "Вставить по средине"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:473
+msgid "New Menu Prologue"
+msgstr "Новое пролог меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:481
+msgid "New Menu Epilogue"
+msgstr "Новое эпилог меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1042
+msgid "Popup"
+msgstr "Всплывающее меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1048
+msgid "&Export selected To..."
+msgstr "&Экспортировать выделеннов в..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1099
+msgid "&New Popup"
+msgstr "&Новое всплывающее меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1105
+msgid "Re&move Popup"
+msgstr "У&далить всплывающее меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1112
+msgid "&Export Popup To..."
+msgstr "&Экспортировать всплывающее меню в..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+msgid "Unable to write to the popup file."
+msgstr "Не могу записать всплывающее меню в файл."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1382
+msgid "Popup Editor"
+msgstr "Редактор всплывающих меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:62
+msgid "%cCore action: %Q"
+msgstr "%cДействие ядра: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:64
+msgid "%cUser action: %Q"
+msgstr "%cДействие пользователя: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:65
+msgid "Label: %Q"
+msgstr "Метка: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:66
+msgid "Category: %Q"
+msgstr "Категория: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:112
+msgid "The action \"%1\" is disabled"
+msgstr "Действие \"%1\" выключено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:259
+msgid "The action \"%1\" does not exist"
+msgstr "Действие \"%1\" не существует"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:255
+msgid "The action \"%1\" is a core action and cannot be destroyed"
+msgstr "Действие \"%1\" является действием ядра и не может быть удалено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:392
+msgid "The switch -l requires -c"
+msgstr "Ключу -l требуется -c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:409
+msgid "The switch -s requires -w with a combination of flags 'c','x' and 'q'"
+msgstr "Ключу -s требуется -w в сочетании с флагами 'c','x' и 'q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:420
+msgid ""
+"The action \"%1\" is already defined as core action and cannot be overridden"
+msgstr ""
+"Действие \"%1\" уже определено как действие ядра и не может быть отменено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:116
+msgid "Ops.. internal error"
+msgstr "Упс.. внутренняя ошибка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:125
+msgid "Manage File &Transfers"
+msgstr "Менеджер &закачек"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:67
+msgid "Choose Avatar - KVIrc"
+msgstr "Выбор аватара - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:72
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+"Пожалуйста выберите картинку аватара. Это может быть полный путь к "
+"локальному файлу или Web-адрес.<br>Если вы хотите использовать локальный "
+"файл, щёлкните по кнопке \"<b>Выбрать</b>\" чтобы просмотреть локальные "
+"каталоги.<br>Полный URL картинки (включая <b>http://</b>) можно ввести "
+"вручную."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:283
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:358
+msgid "Internal error: I'm not in the user database ?"
+msgstr "Внутренняя ошибка: Это не база данных пользователей?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:245
+msgid "Can't set the current avatar to '%Q': failed to start the http transfer"
+msgstr ""
+"Невозможно установить текущий аватар в '%Q': не могу открыть HTTP соединение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:249
+msgid "Can't set the current avatar to '%Q': can't load the image"
+msgstr "Невозможно установить текущий аватар в '%Q': ошибка загрузки картинки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:351
+msgid "Invalid timeout specified, using default"
+msgstr "Неверно определён таймаут, используется умолчательный"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:389
+msgid "Can't add a file offer for file %Q (huh ? file not readable ?)"
+msgstr "Невозможно добавить файл к файлу %Q ( файл нечитаемый?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:396
+msgid "Added %d secs file offer for file %Q (%Q) and receiver %Q"
+msgstr "На время %d сек файл %Q (%Q) доступен для %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:403
+msgid "Notifying avatar '%Q' to %Q"
+msgstr "Извещение об аватаре '%Q' для %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:55
+msgid "&Execute"
+msgstr "&Выполнить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:59
+msgid "Params:"
+msgstr "Параметры:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:107
+msgid "Script Tester"
+msgstr "Тестер сценариев"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:220
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:413
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:543
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:628
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:765
+msgid "The config file with id '%Q' is not open"
+msgstr "Конфигурационный файл с ID '%Q' не открыт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:538
+msgid ""
+"The config file '%Q' has been changed but is opened as read-only: changes "
+"will be lost"
+msgstr ""
+"Конфигурационный файл '%Q' изменён, но открыт только для чтения: изменения "
+"будут утеряны"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:583
+msgid "The config file with id '%Q' is read only"
+msgstr "Конфигурационный файл с ID '%Q' доступен только для чтения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:178
+msgid "Colors"
+msgstr "Цвета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:255
+msgid "Context sensitive help"
+msgstr "Контекстная подсказка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1167
+msgid "&Replace"
+msgstr "Замена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:268
+msgid "Find & Repalce"
+msgstr "Найти и заменить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1148
+msgid "Word to Find"
+msgstr "Слово для поиска"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1156
+msgid "Replace with"
+msgstr "Заменить на"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1172
+msgid "&Replace in all Aliases"
+msgstr "Заменить во всех алиасах"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1176
+msgid "&Findnext"
+msgstr "Найти &следующий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1181
+msgid "&Replace(WIP)"
+msgstr "Замена(WIP)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:227
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:547
+msgid "The specified toolbar doesn't exist"
+msgstr "Выбранная панель инструментов не существует"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:424
+msgid "No action name/index specified"
+msgstr "Не задано имя/номер действия"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:441
+msgid "The action parameter didn't evaluate to an index"
+msgstr "Параметр действия не является индексом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:455
+msgid "The toolbar does not contain the specified item"
+msgstr "Панель инструментов не содержит заданного пункта"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:513
+msgid "The action \"%Q\" doesn't exist"
+msgstr "Действие \"%Q\" не существует"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:31
+msgid "Torrent Client"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:361
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:364
+msgid "Standalone Servers"
+msgstr "Одиночные сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:112
+#, fuzzy
+msgid ""
+"%Q doesn't look like a servers.ini file.\n"
+"Import failed."
+msgstr ""
+"%s не похож на servers.ini файл.\n"
+"Импорт не выполнен."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:122
+msgid "Choose a servers.ini file"
+msgstr "Выберите servers.ini файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:146
+msgid "Remote mIRC servers.ini Import Wizard"
+msgstr "Мастер удалённого импорта mIRC servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:154
+msgid ""
+"<center><b>Welcome!</b><br><br>This wizard will guide you in the process of "
+"downloading a list of IRC servers. Please click \"<b>Next</b>\" to begin the "
+"operation.</center>"
+msgstr ""
+"<center><b>Добро пожаловать!</b><br><br>Этот мастер проведёт вас по "
+"процедуре загрузки списка IRC серверов. Пожалуйста кликните \"<b>Дальше</b>"
+"\" чтобы начать операцию.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:161
+msgid ""
+"<center>Here you can modify the URL that the list will be downloaded from. "
+"In most cases the default URL is acceptable.</center>"
+msgstr ""
+"<center>Здесь вы можете изменить URL из которого будет загружен список. Для "
+"большинства случаев можно оставить предложенное значение.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:169
+msgid "URL Selection"
+msgstr "Выберите URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:173
+msgid "Please wait while the list is being downloaded"
+msgstr "Пожалуйста подождите пока список загрузится"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:179
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:195
+msgid "List Download"
+msgstr "Загрузка списка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:229
+msgid "Failed to start the server list transfer :("
+msgstr "Не могу начать закачку файла с сервера :("
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:245
+msgid "File downloaded: processing ..."
+msgstr "Загрузка файла: выполняю ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:255
+msgid "%1 servers imported succesfully"
+msgstr "%1 серверов импортировано успешно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:257
+msgid "No servers imported"
+msgstr "Сервера не импортированы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:326
+msgid "Import from servers.ini"
+msgstr "Импорт из servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:333
+msgid "Import from http://www.mirc.co.uk/servers.ini"
+msgstr "Импорт из http://www.mirc.co.uk/servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lineedit.cpp:372
+msgid "Unknown echo mode %Q"
+msgstr "Неизвестный echo режим %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:203
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:359
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:172
+msgid "Widget parameter is not an object"
+msgstr "Параметр Widget не является объектом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:230
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:250
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:449
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:485
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:177
+msgid "Widget parameter is not a valid object"
+msgstr "Параметр Widget не является правильным объектом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:95
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:263
+msgid "Widget object required"
+msgstr "Требуется Widget объект"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:151
+msgid "Unknown dock area '%Q'"
+msgstr "Неизвестная область для прикрепления %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:321
+msgid "Unknown alignment: '%Q'"
+msgstr "Неизвестное выравнивание: '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:373
+msgid "Unknown style: '%Q'"
+msgstr "Неизвестный стиль %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:84
+msgid "the toolbar cannot be a parent-widget!"
+msgstr "панель инструментов не может быть родительским виджетом!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:93
+msgid "The parent-widget isn't a MainWindow."
+msgstr "Родительский виджет - не MainWindow."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:999
+msgid "The array passed as parameter must contain at least 4 elements"
+msgstr "Массив, переданный как параметр, должен иметь как минимум 4 элемента"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1012
+msgid "One of the geometry array parameters is empty"
+msgstr "Один из параметров в массиве геометрии пуст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1017
+msgid "One of the geometry array parameters didn't evaluate to an integer"
+msgstr "Один из параметров массива геометрии не является числовым"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:503
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1032
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1500
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1044
+msgid "The first parameter didn't evaluate to an array nor an integer"
+msgstr "Первый параметр не определяет множество и не является целым числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1419
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1476
+msgid "The array passed as parameter must contain at least 2 elements"
+msgstr "Массив, переданный как параметр, должен иметь как минимум 2 элемента"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:451
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:486
+msgid "One of the array parameters is empty"
+msgstr "Один из параметров масива пуст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:456
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:491
+msgid "One of the array parameters didn't evaluate to an integer"
+msgstr "Один из параметров массива не является целым числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:478
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:804
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:993
+msgid "The array passed as parameter must contain at least 3 elements"
+msgstr "Массив, переданный как параметр, должен иметь как минимум 3 элемента"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:551
+msgid "Unknown orientation"
+msgstr "Неизвестная ориентация"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:789
+msgid "Pixmap or Widget parameter is not an object"
+msgstr "Pixmap или Widget параметры не являются объектом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:730
+msgid "Widget or Pixmap required "
+msgstr "Требуется Widget или Pixmap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:852
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:862
+msgid "Invalid mode '%Q'"
+msgstr "Неправильный режим %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:886
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1701
+msgid "Pixmap parameter is not an object"
+msgstr "Параметр Pixmap не является объектом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:891
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1706
+msgid "Pixmap object required"
+msgstr "Требуется Pixmap обьект"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1027
+msgid ""
+"$setGeometry() requires either an array as first parameter or four integers"
+msgstr ""
+"$setGeometry() требует или массива как первый параметр или четырёх целых "
+"чисел"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:813
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1002
+msgid "One of the colors array parameters is empty"
+msgstr "Один из цветов в массиве параметров пуст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:818
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1007
+msgid "One of the colors array parameters didn't evaluate to an integer"
+msgstr "Один из цветов в массиве параметров не является целым числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1020
+msgid "A string of 6 digits hex is required"
+msgstr "Требуется строка из 6 шестнадцатеричных символов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:842
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1031
+msgid "Not an hex digits"
+msgstr "Не шестнадцатеричные символы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1144
+msgid ""
+"$setForegroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+"$setBackgroundColor требует или массива как первый параметр, либо "
+"шестнадцатиричную строку или трёх целых чисел"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1219
+msgid ""
+"$setBackgroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+"$setBackgroundColor требует или массива как первый параметр, либо "
+"шестнадцатиричную строку или трёх целых чисел"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1426
+msgid "One of the move array parameters is empty"
+msgstr "Один из параметров масива пуст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1431
+msgid "One of the move array parameters didn't evaluate to an integer"
+msgstr "Один из параметров массива не является целым числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1438
+msgid "$move() requires either an array as first parameter or two integers"
+msgstr ""
+"$move() требует или массива как первый параметр или четырёх целых чисел"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1483
+msgid "One of the resize array parameters is empty"
+msgstr "Один из параметров масива пуст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1488
+msgid "One of the resize array parameters didn't evaluate to an integer"
+msgstr "Один из параметров массива не является целым числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1495
+msgid "$resize() requires either an array as first parameter or two integers"
+msgstr "$resize() требует или массива как первый параметр или два целых числа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1528
+msgid "Invalid parameters"
+msgstr "Неверные параметры"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1560
+msgid "Unknown widget flag '%Q'"
+msgstr "Неизвестный флаг widget`a: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1592
+msgid "Unknown style '%Q'"
+msgstr "Неизвестный стиль %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1622
+msgid "No Layout associated to the widget "
+msgstr "Нет Layout-а ассоциированного с widget-ом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:117
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:152
+msgid "Can't add a non-widget object"
+msgstr "Невозможно добавить не видет объект"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1650
+msgid "Parent must be a widget object"
+msgstr "Родитель должен быть widget-объектом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1715
+msgid "Null mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1740
+#, fuzzy
+msgid "Unknown widget attribute '%Q'"
+msgstr "Неизвестный флаг widget`a: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:382
+msgid "No such line number"
+msgstr "Нет такого номера строки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:500
+msgid "Unknown word wrap '%Q'"
+msgstr "Неизвестное слово '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:519
+msgid "Unknown wrap policy'%Q'"
+msgstr "Неизвестная политика '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:850
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1039
+msgid "$setColor requires either an array as first parameter or three integers"
+msgstr "$setColor требует или массива как первый параметр или трех целых чисел"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:975
+msgid "Unknown text format '%Q'"
+msgstr "Неизвестный формат текста %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1071
+msgid " I can't find the specified file '%Q'."
+msgstr "Не могу найти файл %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1078
+msgid " I cannot read the file %Q'."
+msgstr " Я не могу прочитать файл.%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1113
+msgid "Unknown alignment '%Q'"
+msgstr "Неизвестное выравнивание '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1131
+msgid "Unknown auto formatting mode '%Q'"
+msgstr "Неизвестный режим автоматического форматирования '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1149
+msgid "Unknown vertical alignment '%Q'"
+msgstr "Неизвестное вертикальное выравнивание '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:264
+msgid "pix '%Q' doesn't exists"
+msgstr "'%Q' не существует"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:276
+msgid "Can't add a non - popupmenu object"
+msgstr "Невозможно добавить объект, не являющийся всплывающим меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:302
+msgid "Doesn't a widget object"
+msgstr "Это не объект виджета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:182
+msgid "I can't find the specified file %Q."
+msgstr "Не могу найти файл %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:222
+#, fuzzy
+msgid "Destination parameter is not an object"
+msgstr "Параметр Widget не является объектом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:228
+#, fuzzy
+msgid "Destination must be a pixmap object"
+msgstr "Параметр Widget не является объектом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:238
+msgid "Area dimensions are out of destination size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:253
+msgid "Pixmap dimensions are out of destination size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:261
+msgid "Offset width area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:266
+msgid "Offset height area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:121
+msgid "The widget must be a child of this hbox"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:191
+msgid "No string parameter given - using empty string"
+msgstr "Не задано строкового параметра - используем пустую строку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:194
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:214
+#, c-format
+msgid "Item index [%d] is too big - defaulting to $count() - 1 [%d]"
+msgstr "Индекс элемента [%d] слишком большой - должен быть $count() - 1 [%d]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:333
+#, fuzzy
+msgid "Invalid insertion Policy %Q"
+msgstr "Недействительный ввод Policy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:136
+msgid "Unknown mode "
+msgstr "Неизвестный режим"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:149
+msgid "Unknown segment style "
+msgstr "Неизвестный стиль сегмента"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_process.cpp:221
+msgid "Process could not be starded."
+msgstr "Процесс не мог быть запущен."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:279
+msgid "Invalid selection mode '%Q' assuming single"
+msgstr "Недопустимый режим '%Q', принимаю одиночный"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:316
+msgid "Unknown text position '%Q'"
+msgstr "Неизвестная позиция в тексте %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:256
+msgid "Unknown tickmark '%Q'"
+msgstr "Неизвестная отметка '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:271
+msgid "Unknown orientation '%Q'"
+msgstr "Неизвестная ориентация %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:500
+msgid "No socket object specified"
+msgstr "Не определён объект сокета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:506
+msgid "Invalid socket object specified (it doesn't inherit from socket)"
+msgstr "Не действительный объект сокета (он не наследуется от сокета)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:518
+msgid "There is no connection to accept!"
+msgstr "Соединение не принято!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:591
+#, c-format
+msgid "Value %d for port is out of range (values allowed are from 0 to 65535"
+msgstr ""
+"Значение %d для порта выходит за рамки (значения могут быть от 0 до 65535)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:596
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:87
+msgid "Another connection in progress"
+msgstr "Запускается следующее соединение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:648
+msgid "No IPV6 support in this executable"
+msgstr "Нет поддержки IPV6 в этой сборке программы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:670
+msgid "Invalid IP address specified ('%Q')"
+msgstr "Задан неверный IP адрес('Q')"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:89
+msgid "Socket creation failed"
+msgstr "Создание сокета не удалось"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:706
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:727
+msgid "Invalid socket address"
+msgstr "Недействительный адрес сокета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:714
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:735
+msgid "Bind failure"
+msgstr "Ошибка связывания"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:745
+msgid "Listen failure"
+msgstr "Ошибка приёма"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:812
+msgid "unknown"
+msgstr "неизвестный"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:876
+msgid "Invalid ip address "
+msgstr "Неверный IP адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:882
+msgid "Invalid ip address (%Q)"
+msgstr "Неверный IP адрес (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:906
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1013
+msgid "Failed to create the socket"
+msgstr "Ошибка создания сокета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:918
+msgid "Failed to setup a nonblocking socket"
+msgstr "Не могу выполнить разблокировку сокета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:939
+msgid "Connect failure: "
+msgstr "Ошибка соединения:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:967
+msgid "Connect attempt timed out"
+msgstr "Закончилось время попыток соединения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:993
+msgid "Can't start the DNS thread"
+msgstr "Не возможно запустить DNS нить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:1143
+msgid ""
+"Too much unprocessed incoming data (you've left this socket unmanaged ?)"
+msgstr "Слишком много необработанных входящих данных (вы оставили этот сокет?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:149
+msgid "Error in KVS class implementation: processing aborted"
+msgstr "Ошибка в KVS классе реализации: обработка прервана."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:154
+msgid "Processing aborted"
+msgstr "Обработка прервана"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:160
+#, c-format
+msgid "Error near line %d, column %d"
+msgstr "Ошибка в строке %d, символ %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:162
+#, c-format
+msgid "Warning near line %d, column %d"
+msgstr "Предупреждение в строке %d, символ %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:313
+msgid "XML support not available in the Qt library"
+msgstr "XML поддержка не возможна в библиотеке Qt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:491
+msgid "Not a widget object"
+msgstr "Не widget объект"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:308
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:497
+msgid "Can't find the tab "
+msgstr "Не найдена закладка "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:522
+msgid "Unknown position 'Q%'"
+msgstr "Неизвестная позиция 'Q%'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:123
+msgid "The widget must be a child of this vbox"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:276
+msgid "Not Enough Parameters"
+msgstr "Не достаточно параметров"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:142
+msgid "The listviewitem cannot be parentless"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:152
+msgid ""
+"The parent of the listviewitem must be either another listviewitem or a "
+"listview"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:403
+msgid "Pixmap object or image Id required"
+msgstr "Требуется Pixmap обьект или рисунок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:413
+msgid ""
+"Error occured: the suitable file '%Q' is not of the correct format or it is "
+"not a valid icon number."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:151
+msgid ""
+"The window identifier preceeded by WinId must be the first object in the "
+"search path"
+msgstr ""
+"Идентификатор окна, которому предшествует WinId должен быть первым объектом "
+"в пути поиска"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:167
+msgid "Failed to find one of the wrap path widgets (%Q::%Q)"
+msgstr "Не один из путей до widgets (%Q::%Q) неверны"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:176
+msgid "Failed to find the widget to wrap"
+msgstr "Виджет не найден"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:119
+msgid "The parent of a layout must be a widget!"
+msgstr "Родитель должен быть виджетом!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:269
+msgid "Invalid resize mode defaulting to Auto"
+msgstr "Недействительный режим изменения размера. Используем режим Auto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:324
+msgid "Unknown alignment"
+msgstr "Неизвестное выравнивание"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:373
+msgid "Unknown orientation: "
+msgstr "Неизвестная ориентация: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listview.cpp:320
+#, fuzzy
+msgid "Invalid selection mode '%Q'"
+msgstr "Неправильный способ выбора '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tbrowser.cpp:99
+msgid "I can't find the specified file '%Q'."
+msgstr "Не могу найти файл %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:121
+msgid "Can't add a null object"
+msgstr "Невозможно добавить не видет объект"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:128
+msgid ""
+"Invalid object handle passed as parameter (the object is no longer "
+"existing ?)"
+msgstr ""
+"В качестве параметра передана битая ссылка на объект (возможно объект удален "
+"до передачи в качестве параметра?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:134
+msgid "Object in invalid state"
+msgstr "Объект в неизвестном состоянии"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:140
+msgid "Can't set a non-widget object to be the main widget of a dock window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:146
+msgid "The added widget is not a child of this dock window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:271
+msgid "Invalid dock area specified"
+msgstr "Неправильная область"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:181
+msgid "Class '%Q' is not definited"
+msgstr "Класс %Q не определён"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:257
+msgid "Inexisting target object for objects.connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:262
+msgid "Inexisting source object for objects.connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:444
+#, fuzzy
+msgid "The class '%Q' does not exist"
+msgstr "Псевдоним %Q не существует"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:404
+#, fuzzy
+msgid "Object does not exists"
+msgstr "Указанный объект не существует"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:557
+msgid "Inexisting target object for objects.disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:562
+msgid "Inexisting source object for objects.disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:608
+#, fuzzy
+msgid "Source is not an object"
+msgstr "Параметр Widget не является объектом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:614
+#, fuzzy
+msgid "Destination is not an object"
+msgstr "Параметр Widget не является объектом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:625
+msgid "Widget, Image or Pixmap required "
+msgstr "Требуется Widget или Pixmap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:635
+msgid "Widget or Pixmap required"
+msgstr "Требуется Widget или Pixmap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:714
+msgid "One o more of background, foreground or destination aren't objects"
+msgstr "Один или более из фонов не являются объектами"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:720
+#, fuzzy
+msgid "Pixmap objects required"
+msgstr "Требуется Pixmap обьект"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:743
+msgid "Values for background are out of image size "
+msgstr "Значения для заднего плана больше размера изображения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:748
+msgid "Values for foreground are out of image size "
+msgstr "Значения для переднего плана больше размера изображения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:226
+msgid "Empty filename string"
+msgstr "Пустое имя файла"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:271
+msgid "No such open mode: '%Q'"
+msgstr "Нет такого режима открытия: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:312
+msgid "File is not open!"
+msgstr "Файл не открыт!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:348
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:406
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:434
+msgid "File is not open !"
+msgstr "Файл не открыт!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:369
+msgid "Argument to long, using only first char"
+msgstr "Аргумент слишком длинный, используется только первый символ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:339
+msgid "Write error occured !"
+msgstr "Произошла ошибка записи!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:352
+msgid "Read error occured !"
+msgstr "Произошла ошибка чтения!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:371
+msgid "An error occured !"
+msgstr "Ошибка!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:387
+msgid "Missing both encrypt and decrypt key: at least one is needed"
+msgstr ""
+"Отсутствует ключ кодирования и декодирования: требуется по крайней мере один"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:168
+msgid "Error 0: Success ?"
+msgstr "Ошибка 0: Успешно ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:169
+msgid "Unsupported crypt mode"
+msgstr "Неподдерживаемый режим криптования"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:170
+msgid "Unsupported direction"
+msgstr "Неподдерживаемая директива"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:171
+msgid "Unsupported key length"
+msgstr "Неподдерживаемая длина ключа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:172
+msgid "Bad key data"
+msgstr "Данные ключа непригодны"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:173
+msgid "Engine not initialized"
+msgstr "Машина не инициализирована"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:174
+msgid "Invalid direction for this engine"
+msgstr "Недействительная директива"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:175
+msgid "Corrupted message data or invalid decrypt key"
+msgstr "Испорчено сообщение с данными или неверный ключ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:52
+msgid "Unknown error"
+msgstr "Неизвестная ошибка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:184
+msgid "Ops...encrypt cipher not initialized"
+msgstr "Упс...криптовальный шифр не инициализирован"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:420
+msgid "Data buffer too long"
+msgstr "Буфер данных слишком велик"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:221
+msgid "Ops...decrypt cipher not initialized"
+msgstr "Упс...декриптовальный шифр не инициализирован"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:277
+msgid "The message is not a hexadecimal string: this is not my stuff"
+msgstr "Сообщение не является шестнадцатеричной строкой"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:671
+msgid "The message is not a base64 string: this is not my stuff"
+msgstr "Сообщение не является строкой base64"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:676
+msgid "The message doesn't seem to be encoded with CBC Mircryption"
+msgstr "Это сообщение похоже не зашифровано CBC Mircryption"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:712
+#, c-format
+msgid ""
+"Cryptographic engine based on the\n"
+"Advanced Encryption Standard (AES)\n"
+"algorithm called Rijndael.\n"
+"The text is first encrypted with rijndael\n"
+"and then converted to %s notation.\n"
+"The keys used are %d bit long and will be padded\n"
+"with zeros if you provide shorter ones.\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"See the rijndael module documentation\n"
+"for more info on the algorithm used.\n"
+msgstr ""
+"Шифровальная машина основана на\n"
+"Advanced Encryption Standard (AES)\n"
+"алгоритм называется Rijndael.\n"
+"Текст сначала шифруется rijndael\n"
+"и конвертируется в %s код.\n"
+"Используется %d-ти битный ключ.\n"
+"Если есть только один ключ,\n"
+"он будет использоваться и для шифрования и для дешифрования.\n"
+"Смотрите документацию модуля rijndael\n"
+"для получения более подробной информации.\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:739
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:749
+msgid "hexadecimal"
+msgstr "шестнадцатеричный"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:759
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:779
+msgid "base64"
+msgstr "base64"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:790
+msgid ""
+"Popular cryptographic engine based on the\n"
+"old Blowfish encryption algorithm.\n"
+"The text is first encrypted with Blowfish \n"
+"and then converted to base64 notation.\n"
+"The keys used have variable length and\n"
+"are specified as character strings.\n"
+"You can specify keys long up to 56 bytes (448 bits).\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"This engine works in ECB mode by default:\n"
+"if you want to use CBC mode you must prefix\n"
+"your key(s) with \"cbc:\".\n"
+msgstr ""
+"Популярная шифровальная машина основана на\n"
+"старом алгоритме шифрования Blowfish\n"
+"Текст сначала шифруется Blowfish\n"
+"и конвертируется в запись base64.\n"
+"Используемый ключ имеет переменную длинну.\n"
+"Вы можете определить ключ длинной до 56 байт (448 бит).\n"
+"Если задать только один ключ, то он будет использоваться\n"
+"и для шифрования и для дешифрования\n"
+"Машина работает в режиме ECB по умолчанию:\n"
+"если вы хотите работать с CBC режимом, вы должны\n"
+"использовать ключ(и) \"cbc:\".\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:61
+msgid "Drop here the icons from the toolbars to remove them"
+msgstr "Перетащите сюда иконки из панели инструментов чтобы удалить их"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:128
+msgid "ToolBar Properties"
+msgstr "Свойства панели инструментов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:144
+msgid "Icon"
+msgstr "Иконка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:160
+msgid "Id"
+msgstr "Id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:217
+msgid "Please choose the icon for the ToolBar"
+msgstr "Пожалуйста выберите иконку для панели инструментов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "Invalid ToolBar Label"
+msgstr "Неверная метка панели инструментов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "The ToolBar Label can't be empty!"
+msgstr "Метка панели инструментов не может быть пустой!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:256
+msgid "Duplicate ToolBar Id"
+msgstr "Дубликат Id панели инструментов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:257
+msgid ""
+"The specified ToolBar Id already exists.<br>Would you like KVIrc to assign "
+"it automatically (so it doesn't collide with any other toolbar) or you "
+"prefer to do it manually ?"
+msgstr ""
+"Заданный Id панели инструментов уже существует.<br> Вы хотите чтобы KVIrc "
+"назначил его автоматически (при этом будут исключены противоречия с другими "
+"панелями) или сделаете это вручную?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Manually"
+msgstr "Вручную"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Automatically"
+msgstr "Автоматически"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:278
+msgid "Hide Advanced"
+msgstr "Скрыть дополнительные настройки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:287
+msgid "Customize Toolbars"
+msgstr "Пользовательские панели инструментов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:296
+msgid "New ToolBar"
+msgstr "Новая панель инструментов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:300
+msgid "Delete ToolBar"
+msgstr "Удалить панель инструментов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:304
+msgid "Edit ToolBar"
+msgstr "Редактировать панель инструментов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:312
+msgid "Export ToolBar"
+msgstr "Экспорт панели инструментов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:373
+msgid "Confirm ToolBar Deletion"
+msgstr "Подтвердите удаление панели инструментов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:374
+msgid "Do you really want to delete toolbar \"%1\" ?"
+msgstr "Вы действительно хотите удалить панель инструментов \"%1\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:397
+msgid "ToolBar Export"
+msgstr "Экспорт панели инструментов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:398
+msgid "Do you want the associated actions to be exported with the toolbar ?"
+msgstr "Вы хотите экспортировать действия, связанные с панелью инструментов ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+msgid "Unable to write to the toolbar file."
+msgstr "Невозможно сохранить панель инструментов в файл."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:465
+msgid "Please specify the properties for the toolbar \"%1\""
+msgstr "Пожалуйста определите свойства для панели инструментов \"%1\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:491
+msgid "Please specify the properties for the new toolbar"
+msgstr "Пожалуйста определите свойства для новой панели инструментов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:493
+msgid "My ToolBar"
+msgstr "Моя панель инструментов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:63
+msgid "Window with ID '%Q' not found"
+msgstr "Окно с ID '%Q' не найдено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:67
+msgid "The specified window (%Q) is not a channel/query/DCC chat"
+msgstr "Заданное окно (%Q) не является каналом/приватом/DCC чатом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:108
+msgid "File not found or empty"
+msgstr "Файл не найден или пуст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:114
+msgid "I can't open that file"
+msgstr "Я не могу открыть этот файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:122
+msgid "Could not paste file"
+msgstr "Не могу вставить файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:218
+#, fuzzy
+msgid "The specified window (%Q) is not a channel/query/dcc"
+msgstr "Заданное окно (%s) не является каналом/приватом/dcc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:271
+#, fuzzy
+msgid "Slow-paste ID:%d Window:%Q"
+msgstr "Медленная вставка ID:%d Окно:%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:240
+msgid "Plugin not found. Please check the plugin-name and path."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:247
+#, fuzzy
+msgid "Error while loading plugin."
+msgstr "Ошибка загрузки модуля"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:311
+msgid "This plugin does not export the desired function."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:327
+msgid ""
+"The plugin has no function to free memory. This can result in Memory Leaks!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:209
+#, c-format
+msgid "No environment variable found, please don't use the %% in the request"
+msgstr "Никакой переменной не найденно, пожалуйста не используйте %% "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:482
+msgid "Invalid DCOP parameter syntax"
+msgstr "Недействительный синтаксис аргумента DCOP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:495
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:516
+msgid "The specified parameter is not an integer"
+msgstr "Заданный аргумент не является целым числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:521
+#, c-format
+msgid "Unsupported DCOP parameter type %s"
+msgstr "Неподдерживаемый тип аргумента DCOP %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:534
+msgid "DCOP call failed"
+msgstr "Ошибка обращения к DCOP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:599
+msgid "DCOP calls are available only when KDE support is compiled in"
+msgstr ""
+"Обращения к DCOP доступны только при сборке приложения с поддержкой КДЕ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1408
+#, c-format
+msgid "The window with id '%s' does not exist"
+msgstr "Окно с ID '%s' не существует"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:851
+msgid "Window type or 'all' expected as first parameter"
+msgstr "Тип окна или 'all' ожидается как первый аргумент"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:938
+msgid "Invalid IRC context id '%Q'"
+msgstr "Неверный IRC контекст '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1045
+msgid "The specified IRC context is not valid: creating a context free window"
+msgstr ""
+"Указанный IRC контекст не действителен: создаётся свободное контекстное окно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1119
+msgid "The specified window is not of type \"userwnd\""
+msgstr "Указанное окно не относится к типу \"userwnd\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1208
+msgid "Window doesn't have input widget"
+msgstr "Окно не имеет виджета ввода"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1363
+msgid "The encrypt key wasn't a valid hexadecimal string"
+msgstr "Ключ был кодированн не правильной шестнадцатеричной строкой"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1377
+msgid "The decrypt key wasn't a valid hexadecimal string"
+msgstr "Ключ был декодированн не правильной шестнадцатеричной строкой"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1414
+msgid "Both -n and -m switchess specified, -n takes precedence"
+msgstr "Определены флаги -m и -n, флаг -n имеет приоритет"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1424
+msgid "No encrypt key specified: can't allocate engine"
+msgstr "Не задан ключ для шифрования: не могу стартовать движок шифрования"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1446
+msgid "Unknown engine error"
+msgstr "Неизвестная ошибка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1449
+msgid "Failed to initialize the specified crypt engine: %Q"
+msgstr "Не могу запустить заданную шифровальную машину: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1453
+msgid "The crypt engine \"%Q\" does not exist"
+msgstr "Действие \"%Q\" не существует"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1458
+msgid "This executable has been compiled without crypt support"
+msgstr "Эта сборка программы не поддерживает шифрование"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:138
+msgid "Current window is not a channel"
+msgstr "Текущее окно не является каналом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:87
+msgid "Raw Event"
+msgstr "Заготовки событий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:97
+msgid "Edit the raw event handler name."
+msgstr "Редактирование имени обработчика события."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:179
+msgid "&Add Raw Event..."
+msgstr "&Добавить заготовку события..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "New Raw Event"
+msgstr "Новая заготовка события"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "Enter the numeric code of the message (0-999)"
+msgstr "Введите числовой код сообщения (0-999)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+msgid "Unable to write to the raw event file."
+msgstr "Не могу записать событие в файл."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Unable to write to the raw events file."
+msgstr "Не могу записать события в файл."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:512
+msgid "Raw Editor"
+msgstr "Редактор заготовок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:219
+msgid "A really lame text transformation engine :D"
+msgstr "Действительно ламерский текстовый преобразователь"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:229
+msgid "A really lame text transformation engine: Light Version."
+msgstr "Действительно ламерский текстовый преобразователь: облегченная версия"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:82
+#, c-format
+msgid "Socket Spy [IRC Context %u]"
+msgstr "Сокет агент [Контекст IRC %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:92
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Socket Spy</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Сокет агент</b></font> <font color=\"%s\">"
+"[Контекст IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:112
+msgid "Socket open"
+msgstr "Сокет открыт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:117
+msgid "Socket closed"
+msgstr "Сокет закрыт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:149
+msgid "Internal unique name for the action"
+msgstr "Внутреннее уникальное имя действия"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:151
+msgid "Label:"
+msgstr "Метка:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:155
+msgid ""
+"Visible name for this action.<br>This string will be displayed to the user "
+"so it is a good idea to use $tr() here"
+msgstr ""
+"Видимое имя для этого действия.<br>Эта строка будет показана пользователю, "
+"хорошей идеей будет использование здесь $tr()"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:166
+msgid "Action code"
+msgstr "Код действия"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:168
+msgid "Code"
+msgstr "Код"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:174
+msgid "Category:"
+msgstr "Категория:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:178
+msgid "Choose the category that best fits for this action"
+msgstr "Выберите категорию, наиболее пригодную для этого действия"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:180
+msgid "Description:"
+msgstr "Описание:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:184
+msgid ""
+"Visible short description for this action.<br>This string will be displayed "
+"to the user so it is a good idea to use $tr() here"
+msgstr ""
+"Видимое краткое описание этого действия.<br>Эта строка будет показана "
+"пользователю, хорошей идеей будет использование здесь $tr()"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:186
+msgid "Small Icon:"
+msgstr "Маленькая иконка:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:194
+msgid ""
+"The small icon associated to this action.<br>It will appear at least in the "
+"popup menus when this action is inserted.<br>It should be 16x16 pixels."
+msgstr ""
+"Маленькая иконка, ассоциированная с этим действием.<br>Она будет "
+"показываться по крайней мере во всплывающих меню при вставке этого действия."
+"<br>Должна быть 16х16 пикселей."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:200
+msgid "Big Icon:"
+msgstr "Большая иконка:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:209
+msgid ""
+"The big icon associated to this action.<br>It will appear at least in the "
+"toolbar buttons when this action is inserted.<br>It should be 32x32 pixels."
+msgstr ""
+"Большая иконка, ассоциированная с этим действием.<br>Она будет показываться "
+"по крайней мере на кнопках панели инструментов при вставке этого действия."
+"<br>Должна быть 32х32 пикселя."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:215
+msgid "Key Sequence:"
+msgstr "Комбинация клавиш:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:219
+msgid ""
+"Optional keyboard sequence that will activate this action.<br>The sequence "
+"should be expressed as a string of up to four key codes separated by commas "
+"eventually combined with the modifiers \"Ctrl\",\"Shift\",\"Alt\" and \"Meta"
+"\".<br>Examples of such sequences are \"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl+X,"
+"Ctrl+C\" ..."
+msgstr ""
+"Необязательная комбинация клавиш которая активирует это действие.<br> "
+"Комбинация должна быть определена как строка содержащая до четырёх клавиш, "
+"объединённых с модификаторами \"Ctrl\",\"Shift\",\"Alt\" и \"Meta\". Если вы "
+"задаёте несколько комбинаций, их нужно разделить запятыми.<br>Примеры таких "
+"комбинаций: \"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl+X,Ctrl+C\" ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:240
+msgid "Needs IRC Context"
+msgstr "Требуется IRC контекст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:242
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window belongs to an irc context"
+msgstr ""
+"Включите эту опцию если действие должно быть доступно только в случае когда "
+"активное окно принадлежит IRC контексту."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:250
+msgid "Needs IRC Connection"
+msgstr "Требуется IRC соединение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:252
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window has an active IRC connection"
+msgstr ""
+"Включите эту опцию если действие должно быть доступно только в случае когда "
+"активное окно имеет активное IRC соединение."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:260
+msgid "Enable at Login"
+msgstr "Доступно при входе"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:261
+msgid ""
+"Check this option if this action should be enabled also during the login "
+"operations (so when the logical IRC connection hasn't been estabilished yet)"
+msgstr ""
+"Включите эту опцию если действие должно быть доступно уже во время входа "
+"(когда IRC соединение ещё не установлено)."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:265
+msgid "Enable Only in Specified Windows"
+msgstr "Доступно только в заданных окнах"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:267
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is of a specified type"
+msgstr ""
+"Включите эту опцию если действие должно быть доступно только в активных "
+"окнах заданных типов."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:271
+msgid "Enable in Console Windows"
+msgstr "В окнах терминалов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:272
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a console"
+msgstr ""
+"Включите эту опцию если действие должно быть доступно только в активном окне "
+"терминала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:277
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:299
+msgid "Only If There Are Selected Users"
+msgstr "Только если есть выбранные пользователи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:278
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:300
+msgid ""
+"This will enable the action only if there are selected users in the active "
+"window"
+msgstr ""
+"Это сделает доступным действие только если есть выбранные пользователи в "
+"активном окне"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:282
+msgid "Enable in Channel Windows"
+msgstr "В окнах каналов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:283
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a channel"
+msgstr ""
+"Включите эту опцию если действие должно быть доступно только в активном окне "
+"канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:293
+msgid "Enable in Query Windows"
+msgstr "В окнах приватов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:294
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a query"
+msgstr ""
+"Включите эту опцию если действие должно быть доступно только в активном окне "
+"привата"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:304
+msgid "Enable in DCC Chat Windows"
+msgstr "В окнах DCC Чатов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:305
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a dcc chat"
+msgstr ""
+"Включите эту опцию если действие должно быть доступно только в активном окне "
+"DCC чата"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:627
+msgid "Action"
+msgstr "Действие"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:680
+msgid "New Action"
+msgstr "Новое действие"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:683
+msgid "Delete Actions"
+msgstr "Удалить действия"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:686
+msgid "Export Actions..."
+msgstr "Экспортировать действия..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Unable to write to the actions file."
+msgstr "Невозможно сохранить файл с действиями."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:823
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:824
+msgid "My Action"
+msgstr "Моё действие"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:825
+msgid "Put here a short description of your action"
+msgstr "Укажите здесь краткое описание вашего действия"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:925
+msgid "Action Editor"
+msgstr "Редактор действий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:938
+msgid "Apply"
+msgstr "Применить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:63
+msgid "Outgoing traffic"
+msgstr "Исходящий трафик"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:67
+msgid "Incoming traffic"
+msgstr "Входящий траффик"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_crypt.cpp:160
+msgid "Invalid crypt engine"
+msgstr "Ошибка криптовальной машины"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:296
+msgid "Directory"
+msgstr "Каталог"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:315
+msgid "Socket"
+msgstr "Сокет"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:332
+msgid "Fifo"
+msgstr "FiFo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:349
+msgid "Block device"
+msgstr "Блочное устройство"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:366
+msgid "Char device"
+msgstr "Символьное устройство"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:429
+msgid "Octet stream (unknown)"
+msgstr "Octet поток (неизвестный)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_osinfo.cpp:413
+msgid "Unknown "
+msgstr "Неизвестный"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:181
+msgid "The specified network has no server entries"
+msgstr "Заданная сеть не имеет серверов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:239
+msgid ""
+"The server specification seems to be in the net:<string> but the network "
+"couln't be found in the database"
+msgstr ""
+"Спецификация сервера, кажется, находится в net:<string> но сеть не найдена в "
+"базе данных"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:261
+msgid ""
+"The server specification seems to be in the id:<string> form but the "
+"identifier coulnd't be found in the database"
+msgstr ""
+"Спецификация сервера, кажется, находится в id:<string> но идентификатор не "
+"найден в базе данных"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:71
+msgid "Aborted"
+msgstr "Прервано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:96
+msgid "No request"
+msgstr "Нет запроса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:141
+msgid "No filename specified for the \"StoreToFile\" processing type"
+msgstr "Нет соответствующего файла"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:160
+msgid "Invalid URL: Missing hostname"
+msgstr "Неверный URL: Хост не найден"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:167
+msgid "Unsupported protocol %1"
+msgstr "Неподдерживаемый протокол %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:189
+msgid "Unable to start the DNS lookup"
+msgstr "Не могу запустить поиск DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:194
+#, c-format
+msgid "Looking up host %s"
+msgstr "Определение IP для адреса %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:210
+#, fuzzy
+msgid "Host %s resolved to %Q"
+msgstr "Хост %s имеет адрес %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:246
+msgid "Unable to start the request slave thread"
+msgstr "Невозможно отослать запрос вторичной нити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:251
+#, fuzzy
+msgid "Contacting host %Q on port %u"
+msgstr "Подключение к серверу %s на порт %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:271
+msgid "Connection established, sending request"
+msgstr "Соединение установлено, отсылаю запрос"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:322
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:51
+msgid "Success"
+msgstr "Успешно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:429
+msgid "Failed to rename the existing file, please rename manually and retry"
+msgstr ""
+"Не могу переименовать существующий файл, переименуйте вручную и попробуйте "
+"снова"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:447
+#, fuzzy
+msgid "Can't open file \"%Q\" for writing"
+msgstr "Невозможно открыть файл \"%s\" для записи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:497
+#, c-format
+msgid "Invalid HTTP response: %s"
+msgstr "Получена ошибка HTTP: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:503
+#, c-format
+msgid "Received HTTP response: %s"
+msgstr "Получен ответ HTTP: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:628
+msgid "Stream exceeding maximum length"
+msgstr "Размер потока превысил максимальную длину"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:661
+msgid "Header too long: exceeded 4096 bytes"
+msgstr "Заголовок слишком длинный, превышает 4096 байт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:710
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:852
+msgid "Stream exceeded expected length"
+msgstr "Размер потока превысил ожидаемую длину"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:798
+msgid "Protocol error: invalid chunk size"
+msgstr "Ошибка протокола: ошибочный размер блока данных"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:818
+#, fuzzy
+msgid "Chunk header too long: exceeded 4096 bytes"
+msgstr "Заголовок слишком длинный, превышает 4096 байт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:987
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1193
+msgid "Operation timed out"
+msgstr "Время операции истекло"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1003
+#, fuzzy
+msgid "Unexpected SSL error"
+msgstr "Неожиданный символ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1016
+msgid "Failed to enter non blocking mode"
+msgstr "Невозможно ввести в не-блочном режиме"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1021
+msgid "Invalid target address"
+msgstr "Неверный адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1056
+#, fuzzy
+msgid "Failed to initialize the SSL context"
+msgstr "Не могу запустить заданную шифровальную машину: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1058
+#, fuzzy
+msgid "Failed to initialize the SSL connection"
+msgstr "Не могу подключиться: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1075
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:99
+msgid "Remote end has closed the connection"
+msgstr "Сервер закрыл соединение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1087
+#, fuzzy
+msgid "Unrecoverable SSL error during handshake"
+msgstr "Фатальная ошибка DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1272
+msgid "Operation timed out (while selecting for read)"
+msgstr "Время операции истекло (при чтении)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1382
+msgid "This KVIrc executable has no SSL support"
+msgstr "KVirc собран без поддержки SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1147
+msgid "Back"
+msgstr "Назад"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:268
+#, fuzzy
+msgid "Next"
+msgstr "&Дальше >"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:168
+#, fuzzy
+msgid "%1 bytes"
+msgstr "байты"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:172
+msgid "%1 KB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:176
+msgid "%1 MB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:181
+msgid "%1 GB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:185
+msgid "%1 TB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:620
+msgid "Internal error"
+msgstr "Внутренняя ошибка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:54
+msgid "Unknown command"
+msgstr "Неизвестная команда"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:55
+msgid "Missing closing brace"
+msgstr "Нет закрывающей скобки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:56
+msgid "Unexpected end of command in string"
+msgstr "Неожиданное окончание команды в строке"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:57
+msgid "Unexpected end of command in dictionary key"
+msgstr "Неожиданное окончание команды в ключе словаря"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:58
+msgid "Switch dash without switch letter"
+msgstr "Попытка переключения без соответствующей букв"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:59
+msgid "Unknown function"
+msgstr "Неизвестная функция"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:60
+msgid "Unexpected end of command in parenthesis"
+msgstr "Неожиданный конец команды в предложении"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:61
+msgid "Unexpected end of command in function parameters"
+msgstr "Неожиданный конец команды в аргументах функции"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:62
+msgid "Missing variable name"
+msgstr "Не найдено имя переменной"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:63
+msgid "Variable or identifier expected"
+msgstr "Ожидается переменная или идентификатор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:64
+msgid "Left operand is not a number"
+msgstr "Левый операнд не число"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:65
+msgid "Multiple operations not supported for numeric operators"
+msgstr "Множественные операции не поддерживаются для числовых операндов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:67
+msgid "Modulo by zero"
+msgstr "Нуль по модулю"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:68
+msgid "Right operand is not a number"
+msgstr "Правый оператор не число"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:69
+msgid "Unterminated expression (missing ')' ?)"
+msgstr "Выражение не закрыто (отсутствует ')' ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:70
+msgid "Unterminated subexpression (Parenthesis mismatch)"
+msgstr "Подвыражение не закрыто (Несовпадение слов)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:71
+msgid "Unexpected character"
+msgstr "Неожиданный символ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:73
+msgid "No host to resolve"
+msgstr "Невозможно определить IP адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:74
+msgid "(DNS Internal) Unsupported address family"
+msgstr "(Внутренний DNS) Не поддерживаемое семейство адресов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:75
+msgid "Valid name but the host has no IP address"
+msgstr "Имя хоста верно, но для него нет IP адреса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:76
+msgid "Unrecoverable nameserver error (crashed ?)"
+msgstr "Фатальная ошибка DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:77
+msgid "Dns temporaneous fault (try again)"
+msgstr "Случайная ошибка DNS (пытаюсь снова)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:78
+msgid "(DNS Internal) Bad flags"
+msgstr "(Внутренний DNS) Неверные флаги"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:79
+msgid "(DNS Internal) Out of memory"
+msgstr "(Внутренний DNS) Не хватает памяти"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:80
+msgid "(DNS Internal) Service not supported"
+msgstr "(Внутренний DNS) Сервис не поддерживается"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:81
+msgid "Unknown node (host not found)"
+msgstr "Хост не найден"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:82
+msgid "(DNS Internal) Unsupported socket type"
+msgstr "(Внутренний DNS) Неподдерживаемый тип сокета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:83
+msgid "Dns query failed"
+msgstr "Ошибка запроса DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:84
+msgid "This KVIrc executable has no IPV6 support"
+msgstr "KVirc собран без поддержки IPV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:85
+msgid "Host not found"
+msgstr "Адрес не найден"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:86
+msgid "(DNS Internal) IPC failure (slave data corrupted)"
+msgstr "(Внутренний DNS) Ошибка IPC (вторичные данные не верны)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:88
+msgid "Invalid IP address"
+msgstr "Неверный IP адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:90
+msgid "Failed to put the socket in non blocking mode"
+msgstr "Невозможно подключить сокет в не-блочном режиме"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:91
+msgid "Bad file descriptor"
+msgstr "Неверный дескриптор файла"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:92
+msgid "Out of address space"
+msgstr "Выход за адресное пространство"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:93
+msgid "Connection refused"
+msgstr "В соединении отказано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:94
+msgid "Kernel networking panic"
+msgstr "Паника сетевого ядра"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:95
+msgid "Connection timed out"
+msgstr "Закончилось время соединения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:96
+msgid "Network is unreachable"
+msgstr "Сеть не доступна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:97
+msgid "Broken pipe"
+msgstr "Поток разрушен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:98
+msgid "Invalid proxy address"
+msgstr "Неверный адрес прокси"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:100
+msgid "Invalid irc context id"
+msgstr "Неверный идентификатор в irc контекста"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:101
+msgid "Error in loading module"
+msgstr "Ошибка загрузки модуля"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:102
+msgid "No such module command"
+msgstr "Не найдена команда модуля"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:103
+msgid "No such module function"
+msgstr "Не найдена функция модуля"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:104
+msgid "Left operand is not a dictionary reference"
+msgstr "Левый операнд не является словарной ссылкой"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:105
+msgid "Right operand is not a dictionary reference"
+msgstr "Правый операнд не является словарной ссылкой"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:106
+msgid "Missing object class name"
+msgstr "Отсутствует класс объекта"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:107
+msgid "No such object class"
+msgstr "Нет такого класса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:108
+msgid "No such object"
+msgstr "Нет такого объекта"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:109
+msgid "No such object function"
+msgstr "Нет такой функции у объекта"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:110
+msgid "Invalid left operand"
+msgstr "Неверный левый операнд"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:111
+msgid "Not enough parameters"
+msgstr "Не достаточно аргументов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:112
+msgid "Integer parameter expected"
+msgstr "Ожидается аргумент целое число"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:113
+msgid "Invalid parameter"
+msgstr "Неверный аргумент"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:114
+msgid "No such file"
+msgstr "Нет такого файла"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:115
+msgid "Open parenthesis expected"
+msgstr "Ожидается ключевое слово"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:116
+msgid "Open brace expected"
+msgstr "Ожидается открытие скобок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:117
+msgid "Can't kill a builtin class"
+msgstr "Не могу удалить созданный класс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:118
+msgid "The SOCKSV4 protocol lacks IpV6 support"
+msgstr "В протоколе SOCKSV4 нет поддержки IpV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:119
+msgid "Unrecognized proxy reply"
+msgstr "Ответ прокси не признан"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:120
+msgid "Proxy response: auth failed: access denied"
+msgstr "Прокси ответило: Ошибка аутентификации, доступ закрыт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:121
+msgid "Proxy response: No acceptable auth method: request rejected"
+msgstr "Прокси ответило: Недопустимый метод аутентификации, запрос отвергнут"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:122
+msgid "Proxy response: request failed"
+msgstr "Прокси ответило: Ошибка запроса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:123
+msgid "Proxy response: ident failed"
+msgstr "Прокси ответило: Ошибка идентификации"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:124
+msgid "Proxy response: ident not matching"
+msgstr "Прокси ответило: Идентификация не сопоставима"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:125
+msgid "Proxy response: general SOCKS failure"
+msgstr "Прокси ответило: Ошибка SOCKS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:126
+msgid "Proxy response: connection not allowed"
+msgstr "Прокси ответило: Соединение запрещено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:127
+msgid "Proxy response: network unreachable"
+msgstr "Прокси ответило: Сеть не доступна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:128
+msgid "Proxy response: host unreachable"
+msgstr "Прокси ответило: Хост не доступен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:129
+msgid "Proxy response: connection refused"
+msgstr "Прокси ответило: В соединении отказано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:130
+msgid "Proxy response: TTL expired"
+msgstr "Прокси ответило: TTL истёк"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:131
+msgid "Proxy response: command not supported"
+msgstr "Прокси ответило: Команда не поддерживается"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:132
+msgid "Proxy response: address type not supported"
+msgstr "Прокси ответило: Тип адреса не поддерживается"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:133
+msgid "Proxy response: invalid address"
+msgstr "Прокси ответило: Неверный адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:134
+msgid "Invalid port number"
+msgstr "Неверный номер порта"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:135
+msgid "Socket not connected"
+msgstr "Сокет не подключен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:136
+msgid "Insufficient resources to complete the operation"
+msgstr "Недостаточно ресурсов для завершения операции"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:137
+msgid "Can't setup a listening socket : bind failed"
+msgstr "Не могу запустить прослушивание сокета: Ошибка связи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:138
+msgid "Can't resolve the localhost name"
+msgstr "Не могу получить имя локального адреса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:139
+msgid "Unsupported image format"
+msgstr "Неподдерживаемый формат картинки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:140
+msgid "Can't open file for appending"
+msgstr "Не могу открыть файл для дозаписи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:542
+msgid "Can't open file for writing"
+msgstr "Не могу открыть файл на запись"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:142
+msgid "File I/O error"
+msgstr "Ошибка файлового ввода/вывода"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:143
+msgid "Acknowledge error"
+msgstr "Признано ошибкой"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:982
+msgid "Can't open file for reading"
+msgstr "Не могу открыть файл для чтения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:145
+msgid "Can't send a zero-size file"
+msgstr "Не могу отправить файл нулевого размера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:146
+msgid "Missing popup name"
+msgstr "Не найдено имя всплывающего меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:147
+msgid "'item', 'popup', 'label' or 'separator' keyword expected"
+msgstr "Ожидается ключевое слово 'item', 'popup', 'label' или 'separator'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:148
+msgid "Self modification not allowed"
+msgstr "Автомодификация не допустима"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:149
+msgid "UNUSED"
+msgstr "НЕ ИСПОЛЬЗУЕТСЯ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:150
+msgid "Feature not available"
+msgstr "Эта возможность не доступна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:151
+msgid "Unexpected characters in array index"
+msgstr "Неожиданный символ в индексе массива"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:152
+msgid "Unexpected end in expression"
+msgstr "Неожиданное окончание выражения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:153
+msgid "Unexpected end in array index"
+msgstr "Неожиданное окончание в индексе массива"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:154
+msgid "Connection thru HTTP proxy failed"
+msgstr "Подключение к HTTP прокси завершилась неудачей"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:155
+msgid "Case , match , regexp , default or break keyword expected"
+msgstr "Ожидаются ключевые слова Case , match , regexp , default или break "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:156
+msgid "Access denied"
+msgstr "Доступ закрыт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:157
+msgid "Address already in use"
+msgstr "Адрес уже используется"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:158
+msgid "Can't assign the requested address"
+msgstr "Не могу получить запрашиваемый адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:159
+msgid "Connection reset by peer"
+msgstr "Соединение разорвано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:160
+msgid "Host unreachable (no route to host)"
+msgstr "Хост недоступен (нет маршрута)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:161
+msgid "Variable expected"
+msgstr "Ожидается переменная"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:162
+msgid "Invalid array index: positive integer expected"
+msgstr "Неверный индекс массива: ожидается положительное целое число"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:163
+msgid "listen() call failed"
+msgstr "Ошибка обращения к listen()"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:164
+msgid "This executable has been compiled without SSL support"
+msgstr "Эта сборка программы не поддерживает SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:165
+msgid "Secure Socket Layer error"
+msgstr "Ошибка SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:166
+msgid "Slash (/) character expected"
+msgstr "Ожидается символ слеша (/)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:167
+msgid "Unknown string manipulation operation"
+msgstr "Операция обработки неизвестной строки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:168
+msgid "Operation aborted"
+msgstr "Операция прервана"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:169
+msgid "Unexpected token"
+msgstr "Неожиданный символ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:170
+msgid "Scope object already defined (unexpected @)"
+msgstr "Объект уже определён (неожиданный @)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:171
+msgid "There is no $this pointer in this scope (unexpected @)"
+msgstr "Нет указателя $this (неожиданный @)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:140
+msgid "Operation cancelled"
+msgstr "Операция отменена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:170
+msgid "File write error"
+msgstr "Ошибка записи в файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:176
+msgid "File read error"
+msgstr "Ошибка чтения файла"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:324
+msgid "Packaging file %Q"
+msgstr "Упаковываю файл %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:779
+#, fuzzy
+msgid "Failed to open a source file for reading"
+msgstr "Не могу открыть файл для чтения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:817
+msgid "Compression library initialization error"
+msgstr "Ошибка инициализации библиотеки сжатия"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:394
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:828
+msgid "Compression library error"
+msgstr "Ошибка библиотеки сжатия"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:465
+#, fuzzy
+msgid "Compression library internal error"
+msgstr "Упс.. внутренняя ошибка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:485
+msgid "Error while compressing a file stream"
+msgstr "Ошибка сжатия потока"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:526
+msgid "Creating package..."
+msgstr "Создаю пакет..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:527
+msgid "Writing package header"
+msgstr "Записываю заголовок пакета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:571
+msgid "Writing informational fields"
+msgstr "Записываю информацию"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:597
+msgid "Writing package data"
+msgstr "Записываю данные"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:659
+#, fuzzy
+msgid "The file specified is not a valid KVIrc package"
+msgstr "Заданная версия \"%Q\" не имеет формата строки версии"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:668
+msgid ""
+"The package has an invalid version number, it might have been created by a "
+"newer KVIrc"
+msgstr ""
+"Пакет имеет не верный номер версии. Возможно, он создан более новой версией "
+"KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:714
+msgid "Invalid info field: the package is probably corrupt"
+msgstr "Пакет поврежден"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:745
+msgid ""
+"The package contains compressed data but this executable does not support "
+"compression"
+msgstr "Пакет содержит сжатые данные, но эта сборка не поддерживает сжатие"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:771
+#, fuzzy
+msgid "Failed to create the target directory"
+msgstr "Не могу создать папку для хранения файлов темы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:784
+msgid "Unpacking file %Q"
+msgstr "Распаковываю файл %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:916
+msgid "Error in compressed file stream"
+msgstr "Ошибка в сжатом потоке"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:990
+msgid "Reading package..."
+msgstr "Считываю пакет..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:991
+msgid "Reading package header"
+msgstr "Считываю заголовок пакета..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:998
+msgid "Reading package data"
+msgstr "Читаю данные о пакете"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:1017
+msgid "Invalid data field: the package is probably corrupt"
+msgstr "Повреждены данные пакета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1127
+msgid "Select color"
+msgstr "Выбор цвета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1128
+msgid "&Basic colors"
+msgstr "&Базовые цвета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1129
+msgid "&Custom colors"
+msgstr "&Пользовательские цвета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1130
+msgid "&Red"
+msgstr "&Красный"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1131
+msgid "&Green"
+msgstr "&Зелёный"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1132
+msgid "Bl&ue"
+msgstr "&Синий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1133
+msgid "&Define Custom Colors >>"
+msgstr "&Определите пользовательские цвета >>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1134
+msgid "&Add to Custom Colors"
+msgstr "&Добавить к пользовательским цветам"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1136
+msgid "Select Font"
+msgstr "Выбор шрифта"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1137
+msgid "&Font"
+msgstr "&Шрифт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1138
+msgid "Font st&yle"
+msgstr "&Стиль шрифта"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1139
+msgid "&Size"
+msgstr "&Размер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1140
+msgid "Sample"
+msgstr "Образец"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1141
+msgid "Effects"
+msgstr "Эффекты"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1142
+msgid "Stri&keout"
+msgstr "&Разрядка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1143
+msgid "&Underline"
+msgstr "&Подчёркивание"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1144
+msgid "Scr&ipt"
+msgstr "&Сценарий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1146
+msgid "Parent Directory"
+msgstr "Родительский каталог"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1148
+msgid "Forward"
+msgstr "Вперёд"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1149
+msgid "Reload"
+msgstr "Обновить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1150
+msgid "New Directory"
+msgstr "Новый каталог"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1151
+msgid "Bookmarks"
+msgstr "Закладки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1152
+msgid "Add Bookmark"
+msgstr "Добавить закладку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1153
+msgid "&Edit Bookmarks"
+msgstr "&Редактировать закладки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1154
+msgid "New Bookmark Folder..."
+msgstr "Новый каталог закладок..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1156
+msgid "Sorting"
+msgstr "Сортировка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1157
+msgid "By Name"
+msgstr "По имени"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1158
+msgid "By Date"
+msgstr "По дате"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1159
+msgid "By Size"
+msgstr "По размеру"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1160
+msgid "Reverse"
+msgstr "Инвертировать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1161
+msgid "Directories First"
+msgstr "Каталоги в начале"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1162
+msgid "Case Insensitive"
+msgstr "Не учитывать регистр"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1163
+msgid "Short View"
+msgstr "Краткое представление"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1164
+msgid "Detailed View"
+msgstr "Детальное представление"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1165
+msgid "Show Hidden Files"
+msgstr "Показывать скрытые файлы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1166
+msgid "Show Quick Access Navigation Panel"
+msgstr "Показать панель быстрого доступа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1167
+msgid "Show Preview"
+msgstr "Предварительный просмотр"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1168
+msgid "Separate Directories"
+msgstr "Отделить каталоги"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1169
+msgid "Often used directories"
+msgstr "Часто используемые каталоги"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1170
+msgid "Desktop"
+msgstr "Рабочий стол"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1171
+msgid "Home Directory"
+msgstr "Домашний каталог"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1172
+msgid "Floppy"
+msgstr "Дисковод"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1173
+msgid "Temporary Files"
+msgstr "Временные файлы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1174
+msgid "Network"
+msgstr "Сеть"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1175
+msgid "New Directory..."
+msgstr "Новый каталог..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1176
+msgid "Delete"
+msgstr "Удалить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1177
+msgid "Thumbnail Previews"
+msgstr "Предварительный просмотр эскизов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1178
+msgid "Large Icons"
+msgstr "Большие иконки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1179
+msgid "Small Icons"
+msgstr "Маленькие иконки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1180
+msgid "Properties..."
+msgstr "Свойства..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1181
+msgid "&Automatic Preview"
+msgstr "&Автоматический предпросмотр"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1182
+msgid "&Preview"
+msgstr "&Предварительный просмотр"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1183
+msgid "&Location:"
+msgstr "&Расположение:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1184
+msgid "&Filter:"
+msgstr "&Фильтр:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1185
+msgid "All Files"
+msgstr "Все файлы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:104
+msgid "- d -- h -- m -- s"
+msgstr "- д -- ч -- м -- с"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:111
+#, c-format
+msgid "%u h %u m %u s"
+msgstr "%u ч %u м %u с"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:113
+#, c-format
+msgid "%u h %u%u m %u%u s"
+msgstr "%u ч %u%u м %u%u с"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:118
+#, c-format
+msgid "%u m %u s"
+msgstr "%u м %u с"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:120
+#, c-format
+msgid "%u m %u%u s"
+msgstr "%u м %u%u с"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:122
+#, c-format
+msgid "%u s"
+msgstr "%u с"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:127
+#, c-format
+msgid "%u d %u h %u m %u s"
+msgstr "%u д %u ч %u м %u с"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:129
+#, c-format
+msgid "%u d %u%u h %u%u m %u%u s"
+msgstr "%u д %u%u ч %u%u м %u%u с"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+msgid "Usage"
+msgstr "Использование"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+msgid "message"
+msgstr "сообщение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:99
+msgid "-m: send a message instead of a notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:100
+#, fuzzy
+msgid "-w: send notice to all channel owners"
+msgstr "-o: отослать уведомление всем операторам канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:101
+#, fuzzy
+msgid "-a: send notice to all channel admins"
+msgstr "-o: отослать уведомление всем операторам канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:102
+msgid "-o: send notice to all channel ops"
+msgstr "-o: отослать уведомление всем операторам канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:103
+msgid "-h: send notice to all channel halfops"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:104
+msgid "-v: send notice to all channel voices"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:105
+msgid "-q: quiet mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:138
+msgid "Sending wallop to"
+msgstr "Отправляем wallop для"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:314
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:410
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:493
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:535
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:593
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:653
+msgid "Usage:"
+msgstr "Использование:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:223
+msgid "reason"
+msgstr "причина"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:272
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:416
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:440
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:599
+msgid "This is not a channel window"
+msgstr "Это не окно канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:581
+msgid "Unsupported type: $0"
+msgstr "Неподдерживаемый тип: $0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:604
+msgid "Channel Owner"
+msgstr "Хозяин канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:606
+msgid "Channel Administrator"
+msgstr "Администратор канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:608
+msgid "Channel Operator"
+msgstr "Оператор канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:610
+msgid "Half Operator"
+msgstr "Полу-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:612
+msgid "Voice"
+msgstr "Войс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:614
+msgid "User Operator"
+msgstr "Пользователь-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:616
+msgid "Normal User"
+msgstr "Обычный пользователь"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:641
+msgid "You must use DNS in an IRC context"
+msgstr "Вы должны использовать DNS в контексте IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:647
+msgid "You must be connected to a server"
+msgstr "Вы должны быть подключены к серверу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:664
+msgid "No such user: $0"
+msgstr "Нет такого пользователя: $0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:33
+msgid "The default script has been successfully installed."
+msgstr "Скрипт по умолчанию был успешно установлен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:34
+msgid "To connect to a server, type /server <server name>"
+msgstr "Для подключения к серверу наберите /server <имя сервера>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:36
+msgid "Happy ircing :)"
+msgstr "Счастливо початиться:)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:15
+msgid "Options"
+msgstr "Настройки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:40
+msgid "Window operations"
+msgstr "Опрерации с окнами"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMENAME@"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMEDESCRIPTION@"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:18
+msgid "Stop Highlighting (Local)"
+msgstr "Отключить локальную подсветку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:23
+msgid "Start Highlighting (Local)"
+msgstr "Включить локальную подсветку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:28
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:61
+msgid "Always Highlight"
+msgstr "Всегда подсвечивать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:30
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:55
+msgid "Highlight as"
+msgstr "Подсвечивать как"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:66
+msgid "Stop Highlighting"
+msgstr "Отключить подсветку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:82
+msgid "is being ignored"
+msgstr "игнорируется"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:87
+msgid "is not being ignored"
+msgstr "не игнорируется"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:93
+#, fuzzy
+msgid "Enable Ignore"
+msgstr "&Включить обработчик"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:98
+#, fuzzy
+msgid "Ignore as..."
+msgstr "Игнорировать как"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:240
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:282
+msgid "Ignore as"
+msgstr "Игнорировать как"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:290
+msgid "Unignore"
+msgstr "Не игнорировать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:308
+msgid "is registered as"
+msgstr "зарегистрирован как"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:311
+msgid "is in the notify list"
+msgstr "в списке уведомлений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:314
+msgid "has a default avatar"
+msgstr "имеет аватар по умолчанию"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:317
+msgid "is not registered"
+msgstr "не зарегистрирован"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:323
+msgid "Register"
+msgstr "Зарегистрировать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:328
+msgid "Quick Registration"
+msgstr "Быстрая регистрация"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:330
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:355
+msgid "Register as"
+msgstr "Зарегистрировать как"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:361
+msgid "Edit Registration"
+msgstr "Редактировать регистрацию"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:366
+msgid "Unregister"
+msgstr "Разрегистрировать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:373
+msgid "Add to Notify"
+msgstr "Добавить в уведомления"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:378
+msgid "Remove from Notify"
+msgstr "Удалить из уведомлений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:385
+msgid "Choose"
+msgstr "Выбрать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:387
+msgid "Choose Avatar Image File"
+msgstr "Выбрать файл аватара"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:396
+msgid "Set as Default"
+msgstr "Установить по молчанию"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:401
+msgid "Clear Default"
+msgstr "Отменить умолчания"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:412
+msgid "Copy To Clipboard"
+msgstr "Копировать в буфер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:433
+msgid "Ban"
+msgstr "Бан"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1037
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1084
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1224
+msgid "Multiple Users"
+msgstr "Несколько пользователей"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:577
+msgid "&Ban"
+msgstr "&Бан"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1089
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1229
+msgid "idle time"
+msgstr "время простоя"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:758
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1236
+msgid "&Information"
+msgstr "Информация"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1115
+msgid "DNS for"
+msgstr "DNS для"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:499
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1120
+msgid "Mask for"
+msgstr "Маска для"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:505
+msgid "&Control"
+msgstr "Управление"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:509
+msgid "O&wner"
+msgstr "Владелец"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:514
+msgid "&Deowner"
+msgstr "Снять флаг владельца"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:519
+msgid "&Administrator"
+msgstr "Администратор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:524
+msgid "&Deadministrator"
+msgstr "Снять флаг администратора"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:529
+msgid "&Op"
+msgstr "&Оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:534
+msgid "&Deop"
+msgstr "Снять флаг оператора"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:539
+msgid "&Halfop"
+msgstr "Полу-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:544
+msgid "&Dehalfop"
+msgstr "Снять флаг полу-оператора"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:549
+msgid "&Voice"
+msgstr "Войс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:554
+msgid "D&evoice"
+msgstr "Снять флаг войса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:561
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "&Kick"
+msgstr "Кик"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+msgid "K&ick"
+msgstr "Кик"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "With..."
+msgstr "с причиной..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Kick Reason"
+msgstr "Причина кика"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Enter a kick reason"
+msgstr "Введите причину кика"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "Kick/Ban"
+msgstr "Кикбан"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Kick/Ban Reason"
+msgstr "Причина кикбана"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Enter a kick/ban reason"
+msgstr "Введите причину кикбана"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "&Kick/Ban"
+msgstr "Кикбан"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:604
+msgid "Configure ban mask..."
+msgstr "Конфигурация маски бана..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:612
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1263
+msgid "&Query"
+msgstr "Приват"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:625
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1136
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1276
+msgid "&Registration"
+msgstr "Регистрация"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1278
+msgid "&Highlight"
+msgstr "Подсветка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:629
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1280
+msgid "Ig&nore"
+msgstr "Игнор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:726
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1050
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1138
+msgid "Notify Avatar"
+msgstr "Уведомить об изменении аватара"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:705
+msgid "&Part"
+msgstr "&Выйти с канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:664
+msgid "Copy Channel Address"
+msgstr "Копировать адрес канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:749
+msgid "Channels"
+msgstr "Каналы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:693
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:753
+msgid "&Join Channels..."
+msgstr "Зайти на каналы..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:700
+msgid "&Hop"
+msgstr "Прыжок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:733
+msgid "Copy Channel URL to Clipboard"
+msgstr "Копировать URL канала в буфер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:782
+msgid "l (Connections)"
+msgstr "l (Соединения)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:787
+msgid "m (Command Usage)"
+msgstr "m (Использование команд)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:792
+msgid "o (Operators)"
+msgstr "o (Операторы)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:797
+msgid "t (Connection stats ?)"
+msgstr "t (Статус соединения?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:802
+msgid "u (Uptime)"
+msgstr "u (Аптайм)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:807
+msgid "y (y-Lines)"
+msgstr "y (y-Линии)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:812
+msgid "z (Debug Stats?)"
+msgstr "z (Статистика отладки?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:909
+msgid "Chat with"
+msgstr "Чат с"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:914
+msgid "Reverse Chat with"
+msgstr "Обратный чат с"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:919
+msgid "Secure Chat with"
+msgstr "Защищенный чат с"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:926
+msgid "Send to"
+msgstr "Отослать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:931
+#, fuzzy
+msgid "Secure send to"
+msgstr "Обратная передача для"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:936
+msgid "Reverse Send to"
+msgstr "Обратная передача для"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:941
+#, fuzzy
+msgid "Secure Reverse Send to"
+msgstr "Обратная передача для"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:948
+msgid "TDCC Send to"
+msgstr "TDCC передача"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:953
+msgid "TDCC Reverse Send to"
+msgstr "TDCC обратная передача"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:960
+msgid "Voice Chat"
+msgstr "Голосовой чат"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1134
+msgid "&Ignore"
+msgstr "Игнор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1165
+msgid "Logging to"
+msgstr "Журналирую в"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1167
+msgid "Flush Log File"
+msgstr "Записать данные в логфайл немедленно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1174
+msgid "Stop Logging"
+msgstr "Остановить журналирование"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1179
+msgid "Not Logging"
+msgstr "Не журналирую"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+msgid "Log To Default File"
+msgstr "Журналировать в файл по умолчанию"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+msgid "Include Existing Buffer"
+msgstr "Включая текущий буффер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+msgid "Log To..."
+msgstr "Журналировать в..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1201
+msgid "Choose Log Filename"
+msgstr "Выберете имя файла журнала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1282
+msgid "Notify avatar"
+msgstr "Уведомить о смене аватара"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:50
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$copyfiles must be a "
+"source directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:56
+#, c-format
+msgid ""
+"[Installer] The second argument to \\%installer->\\$copyfiles must be a file "
+"name or file regexp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:62
+#, c-format
+msgid ""
+"[Installer] The third argument to \\%installer->\\$copyfiles must be a "
+"destination directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:94
+msgid "[Installer] Failed to create directory"
+msgstr "Установщик не смог создать папку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:104
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$includefiles must be a "
+"source directory"
+msgstr ""
+
+#~ msgid "Lag is"
+#~ msgstr "Задержка "
+
+#~ msgid "milliseconds"
+#~ msgstr "милисекунд"
+
+#~ msgid "%c\r!s\r%s\r%c: %Q"
+#~ msgstr "%c\r!n\r%s\r%c: %Q"
+
+#~ msgid "Restore from backup archive"
+#~ msgstr "Восстановить из резервной копии"
+
+#~ msgid "Basic Properties"
+#~ msgstr "Основные параметры"
+
+#~ msgid "Other:"
+#~ msgstr "Другое:"
+
+#~ msgid "Now you should specify an IRC server, to be connected to it"
+#~ msgstr ""
+#~ "Теперь вы должны сказать, к какому IRC серверу вы хотите подключиться"
+
+#~ msgid "Choose a server to connect"
+#~ msgstr "Выберите сервер для подключения"
+
+#~ msgid "Choose from built-in server list"
+#~ msgstr "Выбрать из встроенного списка серверов"
+
+#~ msgid "Specify server manually"
+#~ msgstr "Указать сервер вручную"
+
+#~ msgid "Server:"
+#~ msgstr "Сервер:"
+
+#~ msgid "Port:"
+#~ msgstr "Порт:"
+
+#~ msgid "Open irc:// or irc6:// URL"
+#~ msgstr "Открыть irc:// или irc6:// ссылку"
+
+#~ msgid "URL:"
+#~ msgstr "URL:"
+
+#~ msgid "Use server config"
+#~ msgstr "Использовать заранее определенную конфигурацию"
+
+#~ msgid "Config file:"
+#~ msgstr "Файл конфигурации:"
+
+#~ msgid "Report a Bug"
+#~ msgstr "Сообщить об ошибке"
+
+#~ msgid "Smart"
+#~ msgstr "Быстро"
+
+#~ msgid "Window with ID '%s' not found"
+#~ msgstr "Окно с ID '%s' не найдено"
+
+#~ msgid "Module function call failed: can't load the module 'str'"
+#~ msgstr ""
+#~ "Ошибка обращения к функциональному модулю: не могу загрузить модуль 'str'"
+
+#~ msgid ""
+#~ "Module function call failed: the module 'str' doesn't export a function "
+#~ "named 'split'"
+#~ msgstr ""
+#~ "Ошибка обращения к функциональному модулю: модуль 'str' не предоставляет "
+#~ "функцию с именем 'split'"
diff --git a/po/kvirc/kvirc_sr.po b/po/kvirc/kvirc_sr.po
new file mode 100644
index 00000000..498e07e4
--- /dev/null
+++ b/po/kvirc/kvirc_sr.po
@@ -0,0 +1,19751 @@
+# SOME DESCRIPTIVE TITLE. Copyright (C) YEAR Free Software Foundation, Inc.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: kvirc_sr\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2002-06-08 21:44GMT+1\n"
+"Last-Translator: Prethorian <[email protected]>\n"
+"Language-Team: Serbian <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 0.9.5\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:696
+#, fuzzy
+msgid "&Cascade Windows"
+msgstr "&Naslai prozore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:697
+#, fuzzy
+msgid "Cascade &Maximized"
+msgstr "Naslai &maksimizirano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:700
+#, fuzzy
+msgid "&Tile Windows"
+msgstr "&Terminal prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:703
+#, fuzzy
+msgid "&Auto Tile"
+msgstr "&Auto par�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:708
+#, fuzzy
+msgid "Anodine's Full Grid"
+msgstr "Anodineova puna-mrea"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:710
+#, fuzzy
+msgid "Pragma's Horizontal 4-Grid"
+msgstr "Pragmin horizontalan 4-mreni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:712
+#, fuzzy
+msgid "Pragma's Vertical 4-Grid"
+msgstr "Pragmin vertikalan 4-mreni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:714
+#, fuzzy
+msgid "Pragma's Horizontal 6-Grid"
+msgstr "Pragmin horizontalan 6-mreni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:716
+#, fuzzy
+msgid "Pragma's Vertical 6-Grid"
+msgstr "Pragmin vertikalan 6-mreni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:718
+#, fuzzy
+msgid "Pragma's Horizontal 9-Grid"
+msgstr "Pragmin horizontalan 9-mreni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:720
+#, fuzzy
+msgid "Pragma's Vertical 9-Grid"
+msgstr "Pragmin vertikalan 9-mreni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:726
+#, fuzzy
+msgid "Tile Met&hod"
+msgstr "Par� met&oda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:729
+#, fuzzy
+msgid "Expand &Vertically"
+msgstr "Rairi &vertikalno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:730
+#, fuzzy
+msgid "Expand &Horizontally"
+msgstr "Rairi &horizontalno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:733
+#, fuzzy
+msgid "Mi&nimize All"
+msgstr "M&inimizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_actiondrawer.cpp:64
+#, fuzzy
+msgid "Script"
+msgstr "Opis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:581
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:634
+msgid "Unknown"
+msgstr "Nepoznato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:128
+#, fuzzy
+msgid "No topic message has been received from the server yet"
+msgstr "Nije jo primljena poruka za naslov (topic) od servera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:495
+#, fuzzy
+msgid "Channel topic:"
+msgstr "Naslov kanala (topic) je: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:513
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:201
+msgid "Set by"
+msgstr "Postavljeno od"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:519
+#, fuzzy
+msgid "Set on"
+msgstr "Nijedan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:525
+#, fuzzy
+msgid "Double-click to edit..."
+msgstr "<br>Dupli klik za editovanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:530
+#, fuzzy
+msgid "No topic is set"
+msgstr "Nema postavljenog naslova kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:533
+#, fuzzy
+msgid "Double-click to set..."
+msgstr "Dupli klik za postavljanje<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:587
+#, fuzzy
+msgid "History"
+msgstr "Direktorijum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:596
+#, fuzzy
+msgid "Commit Changes"
+msgstr "Izvri promene"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:602
+#, fuzzy
+msgid "Discard Changes"
+msgstr "Odbaci izmene"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:627
+msgid "Copy to clipboard"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:988
+#, fuzzy
+msgid "There are active connections, are you sure you wish to "
+msgstr "Ne mogu da poaljem podatke: nema aktivne konekcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:989
+#, fuzzy
+msgid "quit KVIrc?"
+msgstr "&Zavri Kvirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:587
+#, fuzzy
+msgid "Confirmation - KVIrc"
+msgstr "&Opcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:557
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:590
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+#, fuzzy
+msgid "&Yes"
+msgstr "Da"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:556
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:589
+#, fuzzy
+msgid "&Always"
+msgstr "&Odsutnost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:591
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+#, fuzzy
+msgid "&No"
+msgstr "Ne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1090
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1106
+#, fuzzy
+msgid "Show %1"
+msgstr "&Pove�j KVIrc przor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1134
+msgid "Customize..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:149
+#, fuzzy, c-format
+msgid "The file %s already exists.<br>Do you wish to overwrite it?"
+msgstr ""
+"Fajl %s ve�pstoji.\n"
+"Prepisati ga ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:150
+#, fuzzy
+msgid "File Exists - KVIrc"
+msgstr "Fajl postoji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:132
+msgid "Channel mode"
+msgstr "Mod kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:162
+#, fuzzy
+msgid "Split View"
+msgstr "poruka razdvajanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:207
+#, fuzzy
+msgid "User List"
+msgstr "Lista korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:167
+#, fuzzy
+msgid "Ban Editor"
+msgstr "Tekstualni editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:172
+#, fuzzy
+msgid "Ban Exception Editor"
+msgstr "Uklju�/isklju� editor izuzetaka zabrana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:179
+#, fuzzy
+msgid "Invite Exception Editor"
+msgstr "Uklju�/isklju� editor izuzetaka poziva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:184
+#, fuzzy
+msgid "Mode Editor"
+msgstr "Uklju�/isklju� editor modova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+#, fuzzy
+msgid "said something recently"
+msgstr "Proksi govori neto o \""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "is talking"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:684
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:699
+msgid "and"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "were talking recently"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+#, fuzzy
+msgid "are talking"
+msgstr "Upozorenje parsera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:707
+#, fuzzy
+msgid "and other %1 users"
+msgstr "voiced korisnici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:738
+#, fuzzy
+msgid "Dead channel"
+msgstr "Odbaci izmene"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:753
+#, fuzzy
+msgid "operator"
+msgstr "operator %c%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:754
+#, fuzzy
+msgid "operators"
+msgstr "operator %c%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+#, fuzzy
+msgid "active user"
+msgstr "Aktivne zabrane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+#, fuzzy
+msgid "active users"
+msgstr "voiced korisnici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+#, fuzzy
+msgid "hot user"
+msgstr "voiced korisnici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+#, fuzzy
+msgid "hot users"
+msgstr "voiced korisnici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+#, fuzzy
+msgid "channel owner"
+msgstr "tiho ili vlasnik kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+#, fuzzy
+msgid "channel owners"
+msgstr "Modovi kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+#, fuzzy
+msgid "channel administrator"
+msgstr "Operatori kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+#, fuzzy
+msgid "channel administrators"
+msgstr "Operatori kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+#, fuzzy
+msgid "half-operator"
+msgstr "Operatori kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+#, fuzzy
+msgid "half-operators"
+msgstr "Operatori kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+#, fuzzy
+msgid "voiced user"
+msgstr "voiced korisnici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced users"
+msgstr "voiced korisnici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+#, fuzzy
+msgid "user-operator"
+msgstr "operator %c%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+#, fuzzy
+msgid "user-operators"
+msgstr "operator %c%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "user total"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "users total"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:931
+msgid "No activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:932
+msgid "Minimal activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:933
+msgid "Very low activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Might be low activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Low activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Might be medium activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Medium activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "Might be high activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "High activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Might be very high activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Very high activity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Might be flooded with messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+#, fuzzy
+msgid "Flooded with messages"
+msgstr "poruka razdvajanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:946
+msgid "human"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:966
+#, fuzzy
+msgid "[Dead channel]"
+msgstr "Odbaci izmene"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1020
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1122
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:459
+msgid " on "
+msgstr " na "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1086
+#, fuzzy
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %Q, no "
+"data sent to the server"
+msgstr ""
+"Maina za ifrovanje nije u mogu�osti da ifruje trenutnu poruku (%Q): %s nema "
+"podataka poslatih serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1403
+#, fuzzy
+msgid "Sent part request, waiting for reply..."
+msgstr "Poslat zahtev za listu: �kam odgovor..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:610
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:647
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:293
+msgid "(Unknown)"
+msgstr "(Nepoznat)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1484
+#, fuzzy
+msgid "<b>Channel mode:</b>"
+msgstr "<b>Mod kanala</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1498
+#, fuzzy, c-format
+msgid "<br><b>Key:</b> %s"
+msgstr "<br>klju� %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1505
+#, fuzzy, c-format
+msgid "<br><b>Limit:</b> %s"
+msgstr "<br>ograni�nje: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1590
+#, c-format
+msgid "Channel synchronized in %d.%d seconds"
+msgstr "Kanal sinhronizovan za %d.%d sekundi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:139
+#, fuzzy
+msgid "Choose an Image File - KVIrc"
+msgstr "Izaberite jednu sliku..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:284
+#, fuzzy, c-format
+msgid "Unloadable: %s"
+msgstr "Iz�tan modul '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:260
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:90
+#, fuzzy
+msgid "&Browse..."
+msgstr "Pregledaj..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:364
+#, fuzzy
+msgid "Choose a File - KVIrc"
+msgstr "Izaberi fajl za parseovanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:382
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:593
+#, fuzzy
+msgid "Choose a Directory - KVIrc"
+msgstr "Izaberite direktorijum..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:764
+#, fuzzy
+msgid "A&dd"
+msgstr "Dodaj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:407
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:766
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:230
+#, fuzzy
+msgid "Re&move"
+msgstr "Ukloni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:602
+#, fuzzy
+msgid "Sample Text"
+msgstr "&Oblik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:635
+#, fuzzy
+msgid "Foreground"
+msgstr "Boja ispisa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:639
+msgid "Transparent"
+msgstr "Transparentno "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:652
+#, fuzzy
+msgid "Background"
+msgstr "Pozadina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:715
+msgid "Play"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:748
+#, fuzzy
+msgid "Channel name"
+msgstr "Mod kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:749
+#, fuzzy
+msgid "Channel password"
+msgstr "Operatori kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:177
+#, fuzzy
+msgid "Toolbars"
+msgstr "&Alati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:84
+#, fuzzy
+msgid "Orientation"
+msgstr "obavetenje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:86
+#, fuzzy
+msgid "Top"
+msgstr "Naslov"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:87
+msgid "Left"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:88
+msgid "Right"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:89
+msgid "Bottom"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:91
+#, fuzzy
+msgid "Detached"
+msgstr "Odbaci izmene"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:92
+#, fuzzy
+msgid "Flat"
+msgstr "Filter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:94
+#, fuzzy
+msgid "Icon Size"
+msgstr "&Ikone widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:96
+msgid "Small (22x22)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:97
+msgid "Large (32x32)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1333
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:463
+#, fuzzy
+msgid "&Apply"
+msgstr "Primeni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:830
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:113
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:251
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:319
+msgid "Close"
+msgstr "Zatvori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:102
+#, fuzzy
+msgid "Channel Modes"
+msgstr "Modovi kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_debugwindow.cpp:47
+#, fuzzy
+msgid "Debug Messages"
+msgstr "Predefinisana poruka odsutnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:72
+#, fuzzy
+msgid "CTCP Page - KVIrc"
+msgstr "CTCP Page"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:109
+msgid "You have been paged by"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:75
+#, fuzzy
+msgid "Mask editor - KVirc"
+msgstr "Ime alijasa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:79
+msgid "New mask must match an *!*@* expression"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Ok"
+msgstr "Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:488
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:442
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:401
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Cancel"
+msgstr "Poniti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:157
+#, fuzzy
+msgid "Active Bans"
+msgstr "Aktivne zabrane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:161
+#, fuzzy
+msgid "Active Invite Exceptions"
+msgstr "Aktivni izuzeci poziva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:165
+#, fuzzy
+msgid "Active Ban Exceptions"
+msgstr "Aktivni izuzeci zabrane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:184
+#, fuzzy
+msgid "Filter:"
+msgstr "Filter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:188
+#, fuzzy
+msgid "Use doubleclick to edit item"
+msgstr "<br>Dupli klik za editovanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:200
+msgid "Mask"
+msgstr "Maska"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:202
+msgid "Set at"
+msgstr "Postavljeno u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "Add"
+msgstr "Dodaj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:92
+msgid "Cryptography/text transformation"
+msgstr "Kriptografija/tekst transformacija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:99
+msgid "Use the crypt engine"
+msgstr "Koristi mainu za ifrovanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:120
+msgid "Enable encryption"
+msgstr "Omogu� ifrovanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:123
+msgid "Encrypt key:"
+msgstr "Klju�za ifrovanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:141
+msgid "Hex"
+msgstr "Hex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:132
+msgid "Enable decryption"
+msgstr "Omogu� deifrovanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:135
+msgid "Decrypt key:"
+msgstr "Klju�za deifrovanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_htmldialog.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:175
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:932
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1124
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:211
+msgid ""
+"If you dont want to encrypt a particular text line then just start it with "
+"the CTRL+P prefix"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:263
+msgid "Sorry, no crypt engines available"
+msgstr "ao mi je, nema dostupne maine za ifrovanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:283
+msgid "Crypt: Can't create an engine instance: crypting disabled"
+msgstr "ifrovanje: Ne mogu da napravim interfejs za mainu; ifrovanje isklju�no"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:294
+#, c-format
+msgid "Crypt: Can't initialize the engine :%s"
+msgstr "ifrovanje: Ne mogu da inicijalizujem mainu :%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:302
+msgid ""
+"Crypt: You have to enable encryption and/or decryption for the engine to work"
+msgstr ""
+"ifrovanje: Morate da omogu�te ifrovanje i/ili deifrovanje da bi maina radila"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:385
+msgid "Search tools"
+msgstr "Alati za pretraivanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:539
+#, c-format
+msgid "### Log session terminated at %s ###"
+msgstr "### Sesija beleenja prekinuta u %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:713
+#, c-format
+msgid "### Log session started at %s ###"
+msgstr "### Sesija beleenja pokrenuta u %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:717
+msgid "### Existing data buffer:"
+msgstr "### Postoje� bufer podataka:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:721
+msgid "### End of existing data buffer."
+msgstr "### Kraj postoje�g bufera podataka."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3894
+#, fuzzy
+msgid "Hide Find Window"
+msgstr "&Terminal prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3896
+#, fuzzy
+msgid "Show Find Window"
+msgstr "&Kazi u prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3898
+msgid "Zoom In"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3899
+msgid "Zoom Out"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3900
+#, fuzzy
+msgid "Choose Temporary Font..."
+msgstr "Izaberite jednu sliku..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3901
+#, fuzzy
+msgid "Choose Temporary Background..."
+msgstr "Izaberite jednu sliku..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3902
+#, fuzzy
+msgid "Reset Temporary Background"
+msgstr "Izaberite jednu sliku..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3905
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:738
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:841
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1057
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1289
+msgid "Clear Buffer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3939
+#, fuzzy
+msgid "Choose the background image..."
+msgstr "Globalna slika pozadine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+#, fuzzy
+msgid "Invalid image"
+msgstr "Pogreno vreme isteka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+#, fuzzy
+msgid "Failed to load the selected image"
+msgstr "Ne mogu da otvorim fajl %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4083
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4140
+#, c-format
+msgid "Pos %d"
+msgstr "Poz %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4156
+msgid "Not found"
+msgstr "Nije na�no"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4563
+msgid "Looking up host %Q..."
+msgstr "Traim host %Q..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4926
+#, fuzzy
+msgid "Double-click to open this link"
+msgstr "Dupli klik za postavljanje<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4946
+#, fuzzy
+msgid "Unable to look it up hostname: Hostname appears to be masked"
+msgstr ""
+"Ne mogu da pronadjem ime hosta IRC servera: Ne mogu da pokrenem DNS slave"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4947
+#, fuzzy
+msgid "Unable to look it up hostname: Unknown host"
+msgstr ""
+"Ne mogu da pronadjem ime hosta IRC proksija: Ne mogu da pokrenem DNS slave"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4949
+#, fuzzy
+msgid ""
+"Double-click to look up this hostname<br>Right-click to view other options"
+msgstr ""
+"Dupli klik za reavanje ovog hosta<br>Desni klik za pregled ostalih opcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4972
+msgid "Server appears to be a network hub<br>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4973
+#, fuzzy
+msgid "Unknown server<br>"
+msgstr "Nepoznata greka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4976
+#, fuzzy
+msgid "Double-click to read the MOTD<br>Right-click to view other options"
+msgstr "Dupli klik za �tanje MOTD-a<br>Desni klik za pregled ostalih opcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4989
+#, fuzzy
+msgid "Double-click to set<br>"
+msgstr "Dupli klik za postavljanje<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5011
+#, fuzzy
+msgid "You're not an operator: You may not change channel modes"
+msgstr "Niste operator; ne moete da menjate modove kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5028
+msgid "Nothing known about %Q"
+msgstr "Nita poznato o %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5029
+msgid "Nothing known about %Q (no connection)"
+msgstr "Nita poznato o %Q (mi nismo na vezi)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5054
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>): "
+"<br><nowrap>+%Q (%u users)<hr>%Q</nowrap>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5060
+#, fuzzy
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)<hr>Double-"
+"click to join %Q<br>Right click to view other options"
+msgstr "Dupli klik za ulazak na %Q<br>Desni klik za pregled ostalih opcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5080
+msgid "<b>Double-click:</b><br>%Q"
+msgstr "<b>Dupli klik:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5085
+msgid "<b>Middle-click:</b><br>%Q"
+msgstr "<b>Srednji klik:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5090
+msgid "<b>Right-click:</b><br>%Q"
+msgstr "<b>Desni klik:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1284
+msgid "Joined on <b>%1</b>"
+msgstr "<hr><nobr>Uao na kanal <b>%1</b></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1296
+#, fuzzy
+msgid "Quiet for <b>%1h %2m %3s</b>"
+msgstr "<%1><nobr>Tiho jos od <b>%2 h %3 m %d s</b></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1097
+msgid "No connection"
+msgstr "Nema konekcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:304
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:3
+#, fuzzy
+msgid "IRC Context"
+msgstr "&Nov irc kontekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:319
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:365
+#, c-format
+msgid "Lag: %d.%d%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:393
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:379
+msgid "Lag: ?.??"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:326
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:637
+#, fuzzy
+msgid "No IRC context"
+msgstr "&Nov irc kontekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:633
+#, fuzzy
+msgid "Not connected"
+msgstr "Nema konekcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:377
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1117
+#, fuzzy
+msgid "away"
+msgstr " odsutnost)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:397
+msgid "In progress..."
+msgstr "U toku..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:458
+#, fuzzy
+msgid "Crypting"
+msgstr "Opis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:466
+#, fuzzy
+msgid "Private Text Encoding"
+msgstr "Tekstualni editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:566
+msgid "Ops...I've accidentally lost the crypting engine..."
+msgstr "Ups...Slu�jno sam izgubio mainu za ifrovanje..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:582
+msgid "List of window types available in this release of KVIrc:"
+msgstr "Lista vrste prozora mogu�h u ovoj verziji KVIrc-a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:763
+#, fuzzy
+msgid "Use Default Encoding"
+msgstr "Koristi mainu za ifrovanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:775
+#, fuzzy
+msgid "Standard"
+msgstr "uske boje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:776
+msgid "Smart (Send Local)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:777
+msgid "Smart (Send UTF-8)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:810
+msgid "&Undock"
+msgstr "&Sakrij sputen widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:813
+#, fuzzy
+msgid "&Dock"
+msgstr "&Spusti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:818
+#, fuzzy
+msgid "Mi&nimize"
+msgstr "M&inimizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:821
+#, fuzzy
+msgid "Ma&ximize"
+msgstr "&Maksimizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:824
+#, fuzzy
+msgid "&Restore"
+msgstr "&Obnovi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:837
+#, fuzzy
+msgid "Text &Encoding"
+msgstr "Tekstualni editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:842
+#, fuzzy
+msgid "Sa&ve Window Properties"
+msgstr "Prozor nije prona�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:86
+msgid "Taskbar"
+msgstr "Taskbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:91
+#, fuzzy
+msgid "taskbar"
+msgstr "Taskbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1162
+#, fuzzy
+msgid "Sort"
+msgstr "Port"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1163
+#, fuzzy
+msgid "Reverse Sort"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1223
+msgid "Window List"
+msgstr "Lista prozora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:203
+#, fuzzy
+msgid "Apply to all IRC Contexts"
+msgstr "&Nov irc kontekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:227
+#, fuzzy
+msgid "Away Indicator"
+msgstr "Ime alijasa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:255
+#, fuzzy
+msgid "Away since"
+msgstr "Nadimak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:259
+#, fuzzy
+msgid "Double click to leave away mode"
+msgstr "<br>Dupli klik za editovanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:261
+#, fuzzy
+msgid "Not away"
+msgstr " odsutnost)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:263
+#, fuzzy
+msgid "Double click to enter away mode"
+msgstr "Dupli klik za postavljanje<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:330
+#, c-format
+msgid "Last checked %d mins %d secs ago"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:332
+#, fuzzy
+msgid "Lag measure not available yet"
+msgstr "Mogu�ost nije dostupna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:336
+msgid "Lag meter engine disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:338
+#, fuzzy
+msgid "Double click to enable it"
+msgstr "<br>Dupli klik za editovanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:391
+#, fuzzy
+msgid "Lag Indicator"
+msgstr "Tekstualni editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:461
+msgid "Simple Clock"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:512
+#, fuzzy
+msgid "Show total connection time"
+msgstr "Pokai vreme sinhronizovanja kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:536
+#, fuzzy
+msgid "Connection Timer"
+msgstr "Isteklo je vreme za povezivanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:560
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:87
+msgid "Separator"
+msgstr "Razdvaja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:820
+msgid "Clipboard"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line break"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line breaks"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:845
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:439
+#, fuzzy
+msgid "Cu&t"
+msgstr "Iseci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:847
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:445
+#, fuzzy
+msgid "&Copy"
+msgstr "Kopiraj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:849
+#, fuzzy
+msgid "&Paste"
+msgstr "Prenesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:851
+#, fuzzy
+msgid "Paste (Slowly)"
+msgstr "Prenesi (polako)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:856
+#, fuzzy
+msgid "Paste &File"
+msgstr "Prenesi unutar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:863
+#, fuzzy
+msgid "Stop Paste"
+msgstr "Prenesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:865
+msgid "Clear"
+msgstr "O�sti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:868
+msgid "Select All"
+msgstr "Izaberi sve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:897
+#, fuzzy
+msgid "Insert Icon"
+msgstr "akcija korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1926
+msgid "%d matches: %Q"
+msgstr "%d podudara: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1930
+msgid "No matches"
+msgstr "Nema podudaranja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2657
+msgid "Show History<br>&lt;Ctrl+PageUp&gt;"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2648
+msgid "Input History Disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2370
+msgid "Show Icons Popup<br>&lt;Ctrl+I&gt;<br>See also /help texticons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2382
+msgid "User friendly commandline mode<br>See also /help commandline"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2394
+msgid "Multi-line Editor<br>&lt;Alt+Backspace&gt;"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2498
+#, fuzzy
+msgid "Confirm Multiline Message"
+msgstr "multimedijalna poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2499
+msgid ""
+"You're about to send a message with %1 lines of text.<br><br>There is "
+"nothing wrong with it, this warning is<br>here to prevent you from "
+"accidentally sending<br>a really large message just because you didn't edit "
+"it<br>properly after pasting text from the clipboard.<br><br>Do you want the "
+"message to be sent?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2505
+msgid "Yes, always"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2506
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:399
+msgid "Yes"
+msgstr "Da"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:806
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:375
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:400
+msgid "No"
+msgstr "Ne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2556
+msgid "<Ctrl+Return>; submits, <Alt+Backspace>; hides this editor"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:126
+#, fuzzy
+msgid "Address:"
+msgstr "IP Adresa:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:140
+msgid "Current IRC URI"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:156
+#, fuzzy
+msgid "Notify List"
+msgstr "Lista obavetenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:263
+#, fuzzy
+msgid "Part All Channels"
+msgstr "Napusti sve kanale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:265
+#, fuzzy
+msgid "Close All Queries"
+msgstr "Zatvori sve upite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:270
+#, fuzzy
+msgid "Unhighlight All Windows"
+msgstr "M&inimizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:273
+#, fuzzy
+msgid "Unhighlight All Channels"
+msgstr "Napusti sve kanale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:275
+#, fuzzy
+msgid "Unhighlight All Queries"
+msgstr "Zatvori sve upite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:387
+#, fuzzy
+msgid "Gender:"
+msgstr "Generalne opcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:394
+#, fuzzy
+msgid "Male"
+msgstr "Vrednost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:393
+msgid "Female"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:375
+#, fuzzy
+msgid "Registered as"
+msgstr "Registrovani korisnici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:381
+msgid "(Matched by"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:393
+#, fuzzy
+msgid "On <b>"
+msgstr " na <b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:402
+msgid "Using server <b>%1</b>"
+msgstr "<nobr>Koristi server <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:407
+msgid "%1 hops"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:417
+msgid "Probably Away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:493
+msgid ""
+"KVIrc can accept only irc://, irc6://, ircs:// or irc6s:// URL's\n"
+"Your URL is invalid. Check spelling and try again"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:554
+msgid ""
+"You have just attempted to close a console window with an active connection "
+"inside.\n"
+"Are you sure you wish to terminate the connection?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:588
+msgid ""
+"You have just attempted to close the last console window.\n"
+"Are you sure you wish to quit KVIrc?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1019
+msgid "Failed to load avatar with name \"%Q\" and local path \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:624
+#, fuzzy
+msgid "Connection in progress..."
+msgstr "konektovanje u toku..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1099
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:630
+#, fuzzy
+msgid "Login in progress..."
+msgstr "prijavljivanje u toku..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1179
+#, fuzzy
+msgid "channel"
+msgstr "Kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1180
+#, fuzzy
+msgid "channels"
+msgstr "Kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1181
+#, fuzzy
+msgid "query"
+msgstr "upit obavetenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1182
+#, fuzzy
+msgid "queries"
+msgstr "upit obavetenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1238
+#, fuzzy
+msgid "Connected since"
+msgstr "Povezivanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1252
+msgid "Online for"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1264
+#, fuzzy
+msgid "Server idle for"
+msgstr "Port servisa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:50
+msgid "This option is also available as"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:683
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:275
+#, fuzzy
+msgid "Advanced..."
+msgstr "Napredno ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:69
+#, fuzzy
+msgid "Scri&pting"
+msgstr "Opis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:74
+msgid "&Tools"
+msgstr "&Alati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:81
+msgid "&Settings"
+msgstr "&Podeavanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:83
+msgid "&Window"
+msgstr "&Prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:125
+msgid "&Help"
+msgstr "&Pomo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:119
+msgid "&Help Browser (Panel)"
+msgstr "&Pomo�(stati�i �ta�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:121
+msgid "Help Browser (&Window)"
+msgstr "Pomo�(&MDI �ta�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:124
+msgid "&Tip of the Day"
+msgstr "&Da li ste znali..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:127
+msgid "About &KVIrc"
+msgstr "O &KVIrc-u..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:130
+msgid "KVIrc Home&page"
+msgstr "KVIrc po�tna &stranica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:134
+#, fuzzy
+msgid "KVIrc Russian Home&page"
+msgstr "KVIrc po�tna &stranica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:139
+#, fuzzy
+msgid "KVIrc French Home&page"
+msgstr "KVIrc po�tna &stranica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:143
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:339
+msgid "Subscribe to the Mailing List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:145
+msgid "Report a Bug / Propose Improvements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:148
+msgid "Join KVIrc International Channel on Freenode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:150
+msgid "Join KVIrc International Channel on IRCNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:155
+msgid "Join KVIrc Italian Channel on AzzurraNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:161
+msgid "Join KVIrc French Channel on Freenode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:164
+msgid "Join KVIrc French Channel on EuropNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:179
+#, fuzzy
+msgid "Show StatusBar"
+msgstr "Pokai na po�tku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:194
+msgid "&Save Configuration"
+msgstr "&Sa�vaj podeavanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:213
+msgid "Restore &Default Script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:630
+msgid "Disconnect"
+msgstr "Prekini vezu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:228
+#, fuzzy
+msgid "New &Connection To"
+msgstr "&Novo konektovanje na"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:234
+msgid "Hide &Dock Icon"
+msgstr "Sakrij &sputaju� widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:237
+msgid "Show &Dock Icon"
+msgstr "Pokai &sputaju� widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:111
+msgid "&Quit"
+msgstr "&Zavri"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:265
+msgid "&Other..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:305
+#, fuzzy
+msgid "Show &Icon Table"
+msgstr "&Ikone widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:308
+#, fuzzy
+msgid "Open &Terminal"
+msgstr "&Terminal prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:308
+msgid ""
+"<b>Shift+Drag</b> or <b>Ctrl+Drag</b> to move the applet around<br><b>Right "
+"click</b> to see the other options"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:313
+msgid "<b>Right click</b> to add/remove applets"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:353
+#, fuzzy
+msgid "Remove %Q"
+msgstr "Ukloni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:365
+#, fuzzy
+msgid "Add Applet"
+msgstr "Dodaj osobinu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:404
+msgid ""
+"Drag the applet while holding the Shift or Ctrl key to move it to the "
+"desired position"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:93
+#, fuzzy
+msgid "<b><font color=\"#EAEAEA\" size=\"-1\">Find Text</font></b>"
+msgstr "<font color=\"#8060FF\" size=\"-1\">Alati za pretraivanje</font>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:118
+#, fuzzy
+msgid "&Regular expression"
+msgstr "Regularni izraz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:121
+#, fuzzy
+msgid "E&xtended regexp."
+msgstr "Proireni regularni izraz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:126
+#, fuzzy
+msgid "C&ase sensitive"
+msgstr "Razlikuj velika i mala slova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:129
+#, fuzzy
+msgid "Find &Prev."
+msgstr "Na� prethodno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:133
+#, fuzzy
+msgid "&Find Next"
+msgstr "&Na� tekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:880
+msgid "Find"
+msgstr "Na�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:214
+msgid "Type"
+msgstr "Vrsta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:166
+#, fuzzy
+msgid "Set &All"
+msgstr "Izaberi sve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:170
+#, fuzzy
+msgid "Set &None"
+msgstr "Nijedan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:174
+#, fuzzy
+msgid "&Load From..."
+msgstr "U�tavanje ikona..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:178
+#, fuzzy
+msgid "&Save As..."
+msgstr "S&a�vaj kao..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:182
+msgid "Filter"
+msgstr "Filter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:234
+#, fuzzy
+msgid "Select a Filter File"
+msgstr "Izaberite filter fajla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:251
+#, fuzzy, c-format
+msgid "Can't open the filter file %s for reading."
+msgstr "Ne mogu da otvorim filter fajla %s za �tanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:261
+#, fuzzy
+msgid "Select a Name for the Filter File"
+msgstr "Izaberite ime za filter fajla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:272
+#, fuzzy
+msgid "Failed to write the filter file %Q (IO Error)"
+msgstr "Neuspeno pisanje filter fajla %s (IO greka)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:274
+#, fuzzy
+msgid "Can't open the filter file %Q for writing"
+msgstr "Ne mogu da otvorim filter fajl %s za pisanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:109
+#, fuzzy
+msgid "Choose image ..."
+msgstr "Izaberite jednu sliku..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:122
+#, fuzzy
+msgid "Builtin images"
+msgstr "poruka prekida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:131
+#, fuzzy
+msgid "Small icons"
+msgstr "Pokai ikone poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:138
+msgid "Full path"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:241
+msgid "Builtin $icon(%Q) [index %d]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:274
+#, fuzzy
+msgid "directory"
+msgstr "Direktorijum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:300
+#, fuzzy
+msgid "pixels"
+msgstr "Isti�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:305
+#, fuzzy
+msgid "bytes"
+msgstr "0 bajtova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:98
+#, fuzzy
+msgid "Show User List"
+msgstr "URL lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:105
+#, fuzzy
+msgid "Query Targets"
+msgstr "Upit za ciljeve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:165
+#, fuzzy
+msgid "Query target:"
+msgstr "Upit za ciljeve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:170
+msgid "%1 is %2 (%3)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:172
+msgid "%1 is %2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:186
+#, fuzzy
+msgid "%1 is using irc server: %2 (%3 hops)"
+msgstr "<nobr>Koristi server <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:188
+#, fuzzy
+msgid "%1 is using irc server: %2"
+msgstr "<nobr>Koristi server <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:195
+msgid "%1 is probably away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:200
+msgid "Common channels with %1: %2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:254
+#, fuzzy
+msgid "[Dead Query]"
+msgstr "Odbaci izmene"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:240
+msgid "Query with %1!%2 (%3)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:242
+msgid "Query with %1!%2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:244
+#, fuzzy
+msgid ", using server %1"
+msgstr "<nobr>Koristi server <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:246
+#, fuzzy
+msgid " (%1 hops)"
+msgstr " (%d skokova)</nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:248
+msgid ", probably away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:252
+#, fuzzy
+msgid "Common channels: %2"
+msgstr "Komandna linija: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:320
+msgid ""
+"The target of this query has changed from \r!n\r%Q\r [%Q@\r!h\r%Q\r] to \r!n"
+"\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:389
+msgid "Common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Uobi�jeni kanali za \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:392
+msgid "No common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "Nema uobi�jenih kanala za \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:428
+msgid "[Dead query]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:578
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:645
+#, fuzzy
+msgid "This query has no active targets, no message sent"
+msgstr "Ovaj upit nema aktivnih ciljeva: nije poslata poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:617
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %s, no "
+"data sent to the server"
+msgstr ""
+"Maina za ifrovanje nije u mogu�osti da ifruje trenutnu poruku (%Q): %s nema "
+"podataka poslatih serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashcount.cpp:74
+msgid ""
+"The argument of the hash count '#' operator didn't evaluate to a hash: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:100
+#, fuzzy
+msgid "DNS Lookup result for query \"%Q\""
+msgstr "DNS rezultat pregleda za upit \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:105
+msgid "Error: %Q"
+msgstr "Greka: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:110
+#, fuzzy
+msgid "Hostname %d: %Q"
+msgstr "Ime hosta %d: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:116
+#, fuzzy
+msgid "IP address %d: %Q"
+msgstr "IP adresa %d: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:870
+#, fuzzy
+msgid ""
+"Broken slot '%Q' in target object '%Q::%Q' while emitting signal '%Q' from "
+"object '%Q::%Q': disconnecting"
+msgstr ""
+"Prekinut slot '%s' u odredinom objektu '%s' dok je emitovan signal '%s' od"
+"\robjekta '%s': prekidam vezu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:888
+#, fuzzy
+msgid ""
+"Slot target object destroyed while emitting signal '%Q' from object '%Q::%Q'"
+msgstr ""
+"Prekinut slot '%s' u odredinom objektu '%s' dok je emitovan signal '%s' od"
+"\robjekta '%s': prekidam vezu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1040
+#, fuzzy
+msgid "Listing Qt properties for object named \"%Q\" of KVS class %Q"
+msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1046
+#, fuzzy, c-format
+msgid "Properties for Qt class %s"
+msgstr "Svojstva:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1071
+#, fuzzy
+msgid "Property: %c%Q%c, type %Q"
+msgstr " Vlasnitvo: %s=%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1131
+#, c-format
+msgid "%d properties listed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1151
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1380
+msgid "The object named \"%Q\" of class %Q has no Qt properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1396
+msgid "No Qt property named \"%Q\" for object named \"%Q\" of class %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1409
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed but it doesn't really exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1417
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed and defined but the returned variant is not valid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1200
+#, c-format
+msgid ""
+"The property is of type %s but the supplied argument can't be converted to "
+"that type (expecting \"%s\")"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1331
+msgid ""
+"A pixmap object, an image_id or an image file path is required for this "
+"property"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1352
+#, fuzzy
+msgid "Can't find the requested image"
+msgstr "Ne mogu da dodelim traenu adresu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1512
+msgid ""
+"Property \"%Q\" for object named \"%Q\" of class %Q has an unsupported data "
+"type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1659
+msgid "Cannot find object function $%Q for object named \"%Q\" of class %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1661
+msgid "Cannot find object function $%Q::%Q for object named \"%Q\" of class %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1669
+msgid ""
+"Cannot call internal object function $%Q (for object named \"%Q\" of class %"
+"Q) from this context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:69
+msgid "Stray dot ('.') character or invalid following module command name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:70
+msgid "Syntax error: malformed module command identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:188
+msgid "Stray '::' sequence or invalid following alias name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:95
+msgid "Syntax error: malformed alias identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:102
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:196
+msgid "Stray ':' character: did you mean '...<namespace>::<alias_name>' ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:103
+msgid "Syntax error: malformed (alias?) command identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:280
+#, fuzzy
+msgid "Unknown callback command \"%Q\""
+msgstr "Nepoznata komanda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:465
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:44
+msgid "The current window is not a channel"
+msgstr "Trenutni prozor nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:532
+msgid ""
+"Timer name omitted but there is not current timer (this is not a timer "
+"callback)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:538
+msgid "Can't kill the timer '%Q' since it is not running"
+msgstr "Ne mogu da na�m spoljni popup '%Q': ignoriem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:626
+#, fuzzy
+msgid "List of active timers"
+msgstr "Nema aktivnih fajl ponuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:637
+msgid "Persistent"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:640
+#, fuzzy
+msgid "WindowLifetime"
+msgstr "Lista prozora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:643
+msgid "SingleShot"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:652
+#, fuzzy
+msgid "None"
+msgstr "(Nijedan)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:663
+#, fuzzy, c-format
+msgid "Total: %u timers running"
+msgstr "Ukupno: %d ponuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:849
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:872
+#, fuzzy
+msgid "Found character '%q' (unicode %x) where a slash '/' was expected"
+msgstr "Neo�kivani karakteri u nizu indeksa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:842
+#, fuzzy
+msgid ""
+"Unexpected end of command in binding operation, at least two slashes are "
+"missing"
+msgstr "Neo�kivan kraj komande u funkcijskim parametrima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:865
+#, fuzzy
+msgid ""
+"Unexpected end of command in binding operation, at least one slash is missing"
+msgstr "Neo�kivan kraj komande u funkcijskim parametrima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:905
+#, fuzzy
+msgid "Unknown binding operation '%Q'"
+msgstr "Nepoznat operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:926
+msgid "Missing right side operand for the binding operator '=~'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:948
+msgid "Trailing garbage ignored after operator '++'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:960
+msgid "Missing right operand for operator '+='"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:979
+msgid "Trailing garbage ignored after operator '--'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:986
+msgid ""
+"This looks a lot like an object handle dereferencing operator '->' but in "
+"fact it isn't. Maybe you forgot a '$' just after ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:994
+msgid "Missing right operand for operator '-='"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1015
+msgid "Missing right operand for operator '<<='"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1025
+msgid "Missing right operand for operator '<<'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1039
+msgid "Missing right operand for operator '<,'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1053
+msgid "Missing right operand for operator '<+'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1075
+msgid "Missing right operand for operator '>>='"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1094
+msgid "Missing right operand for operator '.='"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1113
+msgid "Missing right operand for operator '"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:72
+msgid "Unknown operator"
+msgstr "Nepoznat operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1178
+msgid "Unexpected (and senseless) read-only data evaluation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1180
+msgid "Syntax error: confused by earlier errors: bailing out"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1160
+#, fuzzy
+msgid "Unexpected end of script after a variable reference: expected operator"
+msgstr "Neo�kivan kraj komande u funkcijskim parametrima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1176
+msgid ""
+"Unexpected character '%q' (unicode %x) after a void function call: end of "
+"instruction expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1179
+#, fuzzy
+msgid "Unexpected character '%q' (unicode %x)"
+msgstr "Neo�kivani znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:96
+msgid "/me can be used only in channels, queries and DCC chat windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:385
+#, fuzzy
+msgid "Invalid IRC url (%Q)"
+msgstr "Pogrean IRC url (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:410
+#, fuzzy
+msgid "The commandline for this url type seems to be broken (%Q)"
+msgstr "Komandna linija za ovaj url izgleda da je prekinuta (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:412
+#, fuzzy
+msgid "No commandline specified for this type of url (%Q)"
+msgstr "Nema navedene komandne linije za ovu vrstu url-a (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:512
+#, fuzzy
+msgid "Option setting error: Unknown option or invalid value for option type"
+msgstr ""
+"Neuspena postavka ocije: nepoznata opcija ili pogrena tip vrednosti za tip "
+"opcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:606
+msgid "Choose a file to parse"
+msgstr "Izaberi fajl za parseovanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:639
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:643
+msgid "Failed to load the file '%Q' for parsing"
+msgstr "Ne mogu da otvorim fajl %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:715
+msgid "Missing channel list"
+msgstr "Nedostaje lista kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:753
+#, fuzzy, c-format
+msgid "You don't appear to be on channel %s"
+msgstr "Niste operator; ne moete da menjate modove kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:802
+msgid "Module command call failed: can't load the module 'snd'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:809
+msgid ""
+"Module command call failed: the module 'snd' doesn't export a command named "
+"'play'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:864
+msgid "Popup %Q is not defined"
+msgstr "Iska�� meni (popup) '%Q' nije definisan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:872
+msgid "A popup menu cannot be popped up twice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:897
+#, fuzzy
+msgid "Invalid syntax for screen coordinates, using cursor position"
+msgstr "Neispravna sintaksa ta koordinate ekrana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1011
+msgid "Empty target specified"
+msgstr "Definisan prazno odredite (meta)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:97
+msgid "[RAW]: %Q"
+msgstr "[RAW]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1237
+msgid "Window with id %Q not found: no rebinding performed"
+msgstr "Prozor sa ID-om '%Q' nije na�n, vra�m prazan znakovni niz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1330
+#, fuzzy
+msgid "Failed to execute command '%Q'"
+msgstr "Ne mogu da izvrim komandu '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:242
+#, fuzzy
+msgid "Missing alias name"
+msgstr "Nedostaje ime promenljive"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:253
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:889
+msgid ""
+"Alias names can contain only letters, digits, underscores and '::' namespace "
+"separators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:903
+msgid ""
+"Stray ':' character in alias name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:914
+msgid "Found an empty namespace in alias name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:277
+msgid "The alias %Q is not existing"
+msgstr "Izvorni objekat '%Q' je ne postoje�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:436
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:413
+msgid "The specified window has no button containers"
+msgstr "Navedeni prozor nema pripadaju�h dugmadi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:447
+#, fuzzy
+msgid "Window button '%Q' not found"
+msgstr "Dugme prozora '%s' nije na�no"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:445
+#, fuzzy
+msgid "Can't find the icon '%Q'"
+msgstr "Ne mogu da prona�m ikonu '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:532
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:540
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1197
+#, fuzzy
+msgid "No such event (%Q)"
+msgstr "Nema takvog doga�ja (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:552
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1222
+#, fuzzy
+msgid "No handler '%Q' for raw numeric event '%d'"
+msgstr "Nema upravlja� '%s' za sirov (raw) brojni doga�j '%d'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1248
+#, fuzzy
+msgid "No handler '%Q' for event '%Q'"
+msgstr "Nema upravlja� '%s' za doga�j '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:936
+#, fuzzy
+msgid "The specified ping time is invalid: assuming zero (no ping)"
+msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:946
+msgid "The specified maximum run time is invalid: assuming zero (infinite)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:965
+#, fuzzy
+msgid "Failed to start the process"
+msgstr "Ne mogu da po�em da sluam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1010
+#, fuzzy
+msgid "The specified object does not exist"
+msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1113
+msgid "Missing timer name"
+msgstr "Nedostaje ime tajmera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1122
+msgid "Missing timeout delay"
+msgstr "Nedostaje kanjenje odziva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1129
+#, fuzzy
+msgid "The timeout delay didn't evaluate to an integer"
+msgstr "Levi operator nije broj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1152
+#, fuzzy
+msgid "Unable to add the timer: insufficient system resources"
+msgstr ""
+"Interna greka: ne mogu da dodam tajmer %s, nedovoljno sistemskih resursa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_eventmanager.cpp:503
+#, fuzzy
+msgid "Event handler %Q is broken: disabling"
+msgstr "Upravlja�doga�ja %Q::%s je prekinut: isklju�jem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_moduleinterface.cpp:166
+msgid "Can't unload the module: it has locked itself in memory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:123
+#, fuzzy
+msgid "Unknown binary operator '=%q': did you mean '==' ?"
+msgstr "Nepoznat operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:221
+#, fuzzy
+msgid "Unknown binary operator '%q'"
+msgstr "Nepoznat operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:305
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:371
+#, fuzzy
+msgid "Unexpected end of script in expression"
+msgstr "Neo�kivan kraj u izrazu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:451
+msgid ""
+"Unexpected character %q (unicode %h) in expression. If it meant to be a "
+"string use the quotes."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:466
+#, fuzzy
+msgid "Unexpected empty expression operand"
+msgstr "Neo�kivan kraj u izrazu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:91
+msgid "say: injected commandline"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:94
+msgid "Say parse error: Broken command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:250
+msgid ""
+"Couldn't find a suitable IRC context for the connection, try using -n or -u"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:259
+#, fuzzy
+msgid "Another connection is already in progress in the selected IRC context"
+msgstr "Jo jedna konekcija je u toku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:369
+#, fuzzy
+msgid "No menu bar item with text '%Q'"
+msgstr "Nema stavke meni trake sa tekstom '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:383
+#, fuzzy
+msgid "Invalid index specified: ignored"
+msgstr "Pogreno definisan odziv , koristim predefinisano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:392
+#, fuzzy
+msgid "The popup '%Q' is not defined"
+msgstr "Iska�� meni (popup) '%s' nije definisan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:604
+#, fuzzy
+msgid "No target channel specified and the current window is not a channel"
+msgstr "Naveden prozor nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:705
+msgid "No catalogue %Q for the current language found"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:744
+#, fuzzy
+msgid "The catalogue %Q was not loaded"
+msgstr "Fajl '%s' nije �tljiv"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:80
+msgid ""
+"Empty window identifier specified in the standard rebinding switch: no "
+"rebinding performed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:91
+msgid ""
+"Invalid window specified in the standard rebinding switch: no rebinding "
+"performed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:94
+#, fuzzy
+msgid ""
+"The left side of the scope operator didn't evaluate as an object reference"
+msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:100
+#, fuzzy
+msgid ""
+"The left side of the scope operator evaluated to a null object reference"
+msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:107
+msgid ""
+"The left side of the scope operator evaluated to an invalid object reference "
+"(object doesn't exist)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayreferenceassert.cpp:77
+msgid "Array reference assert failed: the variable evaluated to type '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:247
+#, fuzzy
+msgid "Operand of unary operator didn't evaluate to a number"
+msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:415
+#, fuzzy
+msgid "Left operand didn't evaluate to a number"
+msgstr "Levi operator nije broj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:422
+#, fuzzy
+msgid "Right operand didn't evaluate to a number"
+msgstr "Desni operator nije broj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:547
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:575
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:583
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:374
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:66
+msgid "Division by zero"
+msgstr "Deljenje sa nulom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:107
+#, fuzzy, c-format
+msgid "line %d, near character %d"
+msgstr "Obrada zaustavljena u %cliniji %d , karakter %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:187
+msgid "This command can be used only in windows bound to an IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:193
+#, fuzzy
+msgid "You're not connected to an IRC server"
+msgstr "Niste zaka�ni na IRC server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:199
+#, fuzzy
+msgid "Missing parameter"
+msgstr "Nedostaje odredite (meta)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:128
+msgid "Hash key evaluated to empty string: fix the script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:99
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:144
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash automatic "
+"conversion from %Q supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashreferenceassert.cpp:77
+msgid "Hash reference assert failed: the variable evaluated to type '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:100
+#, fuzzy
+msgid "Failed to send an unknown command as /raw"
+msgstr "Posalji nepoznatu komandu kao /RAW"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:104
+msgid "Call to undefined command '%Q'"
+msgstr "Ne mogu da izvrim komandu '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:116
+msgid "Error in inner alias command call '%Q', called from this context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:74
+msgid "There are no extended scope variables in this scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:111
+#, fuzzy
+msgid "Missing class name"
+msgstr "Nedostaje ime promenljive"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:120
+msgid "A class can't be a subclass of itself"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:127
+msgid "Couln't find base class named \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:137
+msgid ""
+"Detected a loop in the inheritance tree of the base class \"%Q\": redefine "
+"that class first"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:146
+#, fuzzy
+msgid "Can't override the builtin class \"%Q\""
+msgstr "Ne mogu da ubijem ugra�nu klasu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:71
+msgid "Module command call failed: can't load the module '%Q': %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:77
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a command named '%"
+"Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:113
+msgid "Broken condition in menu setup: assuming false"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:220
+#, fuzzy
+msgid "Broken icon parameter: ignoring"
+msgstr "Prekinut izraz sa stavku menija '%s': ignoriem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:228
+msgid "Can't find the icon \"%Q\": ignoring"
+msgstr "Ne mogu da prona�m ikonu '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:244
+msgid "Broken text parameter: assuming empty string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:486
+msgid "Recursive definition detected for popup '%Q': ignoring"
+msgstr "Ne mogu da na�m spoljni popup '%Q': ignoriem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:500
+msgid "Can't find the external popup '%Q'; ignoring"
+msgstr "Ne mogu da na�m spoljni popup '%Q': ignoriem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:853
+msgid "Broken prologue in popup menu '%Q': ignoring"
+msgstr "Prekinut izraz sa stavku menija '%Q': ignoriem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:868
+msgid "Broken epilogue in popup menu '%Q': ignoring"
+msgstr "Prekinut izraz sa stavku menija '%Q': ignoriem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:70
+msgid "Module function call failed: can't load the module '%Q': %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:77
+msgid ""
+"Module function call failed: the module '%Q' doesn't export a function named "
+"'%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_timermanager.cpp:244
+msgid "Timer '%Q' has a broken callback handler: killing the timer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:229
+#, fuzzy
+msgid "The target variable didn't evaluate to an integer or real value"
+msgstr "Levi operator nije broj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:283
+#, fuzzy
+msgid "The right side of operator '&=' didn't evaluate to an integer"
+msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:294
+#, fuzzy
+msgid "The left side of operator '&=' didn't evaluate to an integer"
+msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:353
+#, fuzzy
+msgid "The right side of operator '/=' didn't evaluate to a number"
+msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:364
+#, fuzzy
+msgid "The left side of operator '/=' didn't evaluate to a number"
+msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:446
+#, fuzzy
+msgid "The right side of operator '%=' didn't evaluate to a number"
+msgstr "Desni operand operatora %= procenjen na '%s' (nije broj)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:457
+#, fuzzy
+msgid "The left side of operator '%=' didn't evaluate to a number"
+msgstr "Desni operand operatora %= procenjen na '%s' (nije broj)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:541
+#, fuzzy
+msgid "The right side of operator '*=' didn't evaluate to a number"
+msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:552
+#, fuzzy
+msgid "The left side of operator '*=' didn't evaluate to a number"
+msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:620
+#, fuzzy
+msgid "The right side of operator '|=' didn't evaluate to an integer"
+msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:631
+#, fuzzy
+msgid "The left side of operator '|=' didn't evaluate to an integer"
+msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:691
+#, fuzzy
+msgid "The right side of operator '<<=' didn't evaluate to an integer"
+msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:702
+#, fuzzy
+msgid "The left side of operator '<<=' didn't evaluate to an integer"
+msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:763
+#, fuzzy
+msgid "The right side of operator '>>=' didn't evaluate to an integer"
+msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:774
+#, fuzzy
+msgid "The left side of operator '>>=' didn't evaluate to an integer"
+msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:840
+#, fuzzy
+msgid "The right side of operator '-=' didn't evaluate to a number"
+msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:851
+#, fuzzy
+msgid "The left side of operator '-=' didn't evaluate to a number"
+msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:923
+#, fuzzy
+msgid "The right side of operator '+=' didn't evaluate to a number"
+msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:934
+#, fuzzy
+msgid "The left side of operator '+=' didn't evaluate to a number"
+msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1009
+#, fuzzy
+msgid "The right side of operator '^=' didn't evaluate to an integer"
+msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1020
+#, fuzzy
+msgid "The left side of operator '^=' didn't evaluate to an integer"
+msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1462
+msgid ""
+"The regular expression matched a zero-length substring: this is not valid in "
+"the s/// operator, skipping"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:52
+#, fuzzy
+msgid "Unexpected end of script after '$' function call prefix"
+msgstr "Neo�kivan kraj komande u klju� re�ika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:53
+msgid "Unexpected character %q (unicode %x) after '$' function call prefix"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:54
+msgid ""
+"Syntax error after '$' function call prefix. If you want to use a plain '$' "
+"in the code you need to escape it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:63
+msgid "Invalid expression evaluation in object scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:78
+msgid "Invalid command evaluation in object scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:87
+msgid "Empty instruction block for command evaluation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:101
+msgid ""
+"Parameter identifiers are forbidden in object scope (after the '->' operator)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:147
+msgid ""
+"Ending index of a multiple parameter identifier is lower or equal to the "
+"starting index. This will evaluate to a single parameter identifier."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:163
+msgid "Syntax error: invalid $$ ($this) function call in object scope"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:189
+msgid "Syntax error: malformed alias function call identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:197
+msgid "Syntax error: malformed (alias?) function call identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:307
+#, fuzzy, c-format
+msgid "Invalid data type for parameter \"%s\""
+msgstr "Pogrean parametar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:122
+#, c-format
+msgid "found empty string where type '%s' was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:129
+#, fuzzy
+msgid "found string value \"%Q\" where type '%s' was expected"
+msgstr "Neo�kivani karakteri u nizu indeksa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:134
+#, fuzzy
+msgid "found type %Q where type '%s' was expected"
+msgstr "Neo�kivani karakteri u nizu indeksa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:154
+#, fuzzy, c-format
+msgid "Missing non-optional parameter \"%s\""
+msgstr "Nedostaje odredite (meta)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:282
+msgid "found empty string while a non empty one was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:309
+#, fuzzy, c-format
+msgid "found signed integer \"%d\" where type 'unsigned integer' was expected"
+msgstr "Neozna�ne celobrojne opcije (neozna�na celobrojna konstanta)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:253
+#, fuzzy
+msgid "This window has no associated IRC context"
+msgstr "Ovaj prozor nema odgovaraju� IRC kontekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:483
+#, fuzzy, c-format
+msgid "No such IRC context (%u)"
+msgstr "Nema takvog IRC konteksta (%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:471
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:586
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:494
+#, fuzzy
+msgid "This window is not associated to an IRC context"
+msgstr "Ovaj prozor nema odgovaraju� IRC kontekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:809
+msgid ""
+"The specified format string wasn't accepted by the underlying system time "
+"formatting function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:70
+msgid "Unterminated c-style multiline comment"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:71
+#, fuzzy
+msgid "Unexpected end of script in multiline comment"
+msgstr "Neo�kivan kraj komande u funkcijskim parametrima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:88
+msgid ""
+"Unexpected character '%q' (unicode %x) after a slash (it is a typo or a "
+"malformed comment begin ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:71
+msgid "Call to undefined function '%Q'"
+msgstr "Ne mogu da prona�m ikonu '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:79
+msgid "Error in inner alias function call '%Q', called from this context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:73
+#, fuzzy
+msgid "Array index didn't evaluate to an integer"
+msgstr "Levi operator nije broj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:79
+msgid ""
+"Array index evaluated to a negative integer (non negative integer expected)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:106
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from %Q supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:142
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:219
+#, fuzzy
+msgid "Lag meter was not enabled"
+msgstr "Naveden prozor nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:546
+#, fuzzy
+msgid "No such event handler (%Q) for event %Q"
+msgstr "Nema upravlja� '%s' za doga�j '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands.cpp:153
+msgid "This is not a channel"
+msgstr "Ovo nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:99
+#, fuzzy
+msgid ""
+"Unexpected end of command buffer while looking for the \"perl.end\" statement"
+msgstr "Neo�kivan kraj komande u klju� re�ika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:147
+msgid "Trailing garbage at the end of the break command: ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:209
+msgid "The 'unset' command needs a variable list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:280
+#, fuzzy
+msgid "Found character %q (unicode %x) where a variable was expected"
+msgstr "Neo�kivani karakteri u nizu indeksa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:219
+msgid "'unset' command used without a variable list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:279
+msgid "The 'global' command needs a variable list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:631
+msgid "Found character %q (unicode %x) where an open parenthesis was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:439
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:538
+#, fuzzy
+msgid "Unexpected end of buffer in class definition"
+msgstr "Neo�kivan kraj komande u klju� re�ika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:474
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:501
+#, fuzzy
+msgid "Found character %q (unicode %x) where a function name was expected"
+msgstr "Neo�kivani karakteri u nizu indeksa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:522
+#, fuzzy
+msgid "Unexpected end of buffer in function parameter list reminder"
+msgstr "Neo�kivan kraj komande u funkcijskim parametrima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:630
+msgid "The while command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:654
+msgid ""
+"The last while command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:655
+#, fuzzy
+msgid ""
+"Unexpected end of script while looking for the instruction block of the "
+"while command"
+msgstr "Neo�kivan kraj komande u klju� re�ika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:741
+#, fuzzy
+msgid ""
+"Unexpected end of command after the 'do' command block: expected 'while' "
+"keyword"
+msgstr "Neo�kivan kraj komande u klju� re�ika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:743
+#, fuzzy
+msgid "Found character %q (unicode %x) where a 'while' keyword was expected"
+msgstr "Neo�kivani karakteri u nizu indeksa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:759
+msgid ""
+"The 'while' block of the 'do' command needs an expression enclosed in "
+"parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:779
+msgid "Garbage string after the expression in 'do' command: ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:825
+msgid "The 'if' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:850
+msgid ""
+"The last if command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:851
+#, fuzzy
+msgid ""
+"Unexpected end of script while looking for the instruction block of the if "
+"command"
+msgstr "Neo�kivan kraj komande u klju� re�ika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:966
+#, fuzzy
+msgid ""
+"Unexpected end of buffer while looking for the closing ')' in the 'for' "
+"command"
+msgstr "Neo�kivan kraj komande u klju� re�ika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1015
+msgid "The 'for' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1092
+msgid ""
+"Found char %q (unicode %x) while looking for the terminating ')' in 'for' "
+"command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1122
+msgid "Empty infinite 'for' loop: fix the script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1181
+msgid "The 'foreach' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1205
+msgid ""
+"The 'foreach' command expects a writeable iteration variable as first "
+"parameter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1196
+#, fuzzy
+msgid ""
+"Found character '%q' (unicode %x) where '%' or '$' was expected: see /help "
+"foreach for the command syntax"
+msgstr "Neo�kivani karakteri u nizu indeksa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1207
+msgid "Unexpected function call as 'foreach' iteration variable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1209
+msgid "Unexpected read-only variable as 'foreach' iteration variable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1219
+msgid ""
+"Unexpected end of 'foreach' parameters: at least one iteration data argument "
+"must be given"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1223
+msgid ""
+"The 'foreach' command expects a comma separated list of iteration data items "
+"after the first parameter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1244
+msgid ""
+"Found empty 'foreach' execution block: maybe you need to fix your script ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1365
+msgid "The 'switch' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1415
+#, fuzzy
+msgid "Unexpected end of buffer in switch condition block"
+msgstr "Neo�kivan kraj komande u klju� re�ika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1422
+#, fuzzy
+msgid ""
+"Found character %q (unicode %x) where a 'case','match','regexp','default' or "
+"'break' label was expected"
+msgstr "Neo�kivani karakteri u nizu indeksa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1460
+msgid ""
+"Found 'break' label where a 'case','match','regexp' or 'default' label was "
+"expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1465
+#, fuzzy
+msgid ""
+"Found token '%Q' where a 'case','match','regexp','default' or 'break' label "
+"was expected"
+msgstr "Case , match , regexp , default ili break su o�kivane klju�e re�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1528
+msgid "Senseless empty switch command: fix the script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1562
+#, fuzzy
+msgid "Unexpected end of buffer in defpopup block"
+msgstr "Neo�kivan kraj komande u klju� re�ika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1569
+#, fuzzy
+msgid ""
+"Found character %q (unicode %x) where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr "Neo�kivani karakteri u nizu indeksa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1668
+msgid "Found empty prologue block: maybe you need to fix the script?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1670
+msgid "Found empty epilogue block: maybe you need to fix the script?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1703
+msgid ""
+"Unexpected empty <text> field in label parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1753
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1801
+msgid ""
+"Unexpected empty <text> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1777
+msgid ""
+"Found empty instruction for popup item: maybe you need to fix the script?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1809
+msgid ""
+"Unexpected empty <name> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1821
+#, fuzzy
+msgid ""
+"Found token '%Q' where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr "Case , match , regexp , default ili break su o�kivane klju�e re�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1931
+msgid "The 'defpopup' command needs an expression enclosed in parenthesis"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:109
+msgid "beginning of input"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:121
+#, fuzzy
+msgid ""
+"Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %s"
+"\" for the command syntax"
+msgstr "Neo�kivani karakteri u nizu indeksa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:124
+#, fuzzy, c-format
+msgid ""
+"Found end of input where character '%c' was expected: see \"/help %s\" for "
+"the command syntax"
+msgstr "Neo�kivani karakteri u nizu indeksa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:197
+#, fuzzy
+msgid "Empty script"
+msgstr "Prazan string"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2650
+msgid ""
+"Syntax error after '%' variable prefix. If you want to use a plain '%' in "
+"the code you need to escape it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2667
+msgid "Objects have no extended scope variables"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2727
+msgid "Found character '%q' (unicode %x) where an instruction was expected"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2760
+#, fuzzy
+msgid "Unterminated instruction block"
+msgstr "Neo�kivan kraj komande u klju� re�ika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2761
+#, fuzzy
+msgid "Unexpected end of script in instruction block (missing closing brace)"
+msgstr "Neo�kivan kraj komande u klju� re�ika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2838
+msgid ""
+"The dash after a command should be followed by a letter (switch), by a digit "
+"(negative number) or be escaped"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2842
+#, fuzzy
+msgid "Unexpected character '%q' (unicode %x) after a switch dash"
+msgstr "Neo�kivani karakteri u nizu indeksa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2844
+#, fuzzy
+msgid "Unexpected end of script after a switch dash"
+msgstr "Neo�kivan kraj komande u klju� re�ika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2869
+msgid ""
+"The above problem might be related to the switch dash and the following "
+"equal sign"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2948
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3016
+#, fuzzy
+msgid "Unexpected end of script in parameter list"
+msgstr "Neo�kivan kraj komande u funkcijskim parametrima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2954
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3022
+#, fuzzy
+msgid "Unexpected end of line in parameter list"
+msgstr "Neo�kivan kraj komande u funkcijskim parametrima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3083
+msgid ""
+"Nested character %q corresponding to expected terminator, this might confuse "
+"me a bit: it is a good idea to enclose it in quotes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3093
+#, fuzzy
+msgid "Skipping nested terminator character %q"
+msgstr "Obrada zaustavljena u %cliniji %d , karakter %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3120
+msgid "Stray backslash at the end of the script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3393
+msgid "Unterminated hash key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3387
+#, fuzzy
+msgid "Unexpected end of script in hash key (missing '}' character ?)"
+msgstr "Neo�kivan kraj komande u funkcijskim parametrima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3394
+msgid ""
+"Unexpected end of line in hash key (missing '}' character or unescaped "
+"newline)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3679
+msgid "Unterminated string constant"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3673
+#, fuzzy
+msgid "Unexpected end of script in string constant (missing \" character ?)"
+msgstr "Neo�kivan kraj komande u klju� re�ika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3680
+msgid ""
+"Unexpected end of line in string constant (missing \" character or unescaped "
+"newline)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_processmanager.cpp:225
+#, fuzzy
+msgid "Error triggered from process callback handler: killing process"
+msgstr "Greka nastala od upravlja� vremeskog odziva %c'%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arraycount.cpp:72
+msgid ""
+"The argument of the array count '#' operator didn't evaluate to an array: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:197
+#, fuzzy
+msgid "This window has no associated IRC context and is not a DCC chat"
+msgstr "Ovaj prozor nema odgovaraju� IRC kontekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:293
+#, fuzzy
+msgid "Class \"%Q\" is not defined"
+msgstr "Klasa %s nije definisana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:303
+#, fuzzy
+msgid "The specified parent object does not exist"
+msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:430
+#, fuzzy
+msgid "There is no option named '%Q'"
+msgstr "Nema opcije sa imenom '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:85
+msgid "Internal error: pure virtual evaluateReadOnly called"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:91
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:104
+msgid ""
+"Internal error: trying to evaluate as read-write a read-only data location"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:98
+msgid "Internal error: pure virtual evaluateReadOnlyInObjectScope called"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:215
+#, fuzzy
+msgid "[KVS]%c Warning: %Q"
+msgstr "KVIrc : Upozorenje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:211
+msgid "[KVS]%c Compilation Error: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:219
+msgid "[KVS]%c Runtime Error: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:224
+#, fuzzy
+msgid "[KVS] in script context \"%Q\""
+msgstr "Pogrean ID IRC konteksta '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:226
+#, fuzzy
+msgid "[KVS] in script context \"%Q\", %Q"
+msgstr "Pogrean ID IRC konteksta '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:233
+msgid "[KVS] Code listing:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:238
+#, fuzzy
+msgid "[KVS] Window:"
+msgstr "&Kazi u prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:242
+#, c-format
+msgid "[KVS] Destroyed window with pointer %x"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:246
+msgid "[KVS] Call stack:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:464
+#, fuzzy, c-format
+msgid "Window with ID '%s' not found, returning empty string"
+msgstr "Prozor sa ID-om '%s' nije na�n, vra�m prazan znakovni niz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:130
+msgid "The specified window is not a channel"
+msgstr "Naveden prozor nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:392
+msgid "The $sw() function can be used only in aliases"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:302
+#, fuzzy
+msgid "Invalid pitch value: using default"
+msgstr "Pogrean nivo (%s): koristim predefinisano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:312
+#, fuzzy
+msgid "Invalid duration value: using default"
+msgstr "Pogreno trajanje (%s): koristim predefinisano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:421
+#, fuzzy
+msgid "No button with type %Q named %Q"
+msgstr "Nema dugmeta sa %s tipom i %s imenom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:632
+#, fuzzy
+msgid "Can't delete a null object reference"
+msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:638
+#, fuzzy
+msgid "Can't delete an inexisting object"
+msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:692
+#, fuzzy
+msgid "Inexisting popup \"%Q\""
+msgstr "Nedostaje ime iska��g menija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:698
+msgid ""
+"Popup menu self-modification is not allowed (the popup is probably open)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:705
+#, fuzzy
+msgid "The menu item with id \"%Q\" does not exist in popup \"%Q\""
+msgstr "Fajl podeavanja sa ID-om '%s' nije otvoren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:860
+msgid ""
+"The argument of the -w switch did not evaluate to a valid window id: using "
+"default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:869
+msgid ""
+"The argument of the i switch did not evaluate to a number: using default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:981
+#, fuzzy
+msgid "Invalid color-set specification, using default"
+msgstr "Pogreno navedena ikona '%s', koristim predefinisano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:992
+#, c-format
+msgid "Window '%s' not found, using current one"
+msgstr "Prozor '%s' nije na�n, koristim trenutni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:78
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a callback "
+"command named '%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp:401
+#, c-format
+msgid "The popup '%s' is actually locked: 'self-modifications' are not allowed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:822
+#, fuzzy, c-format
+msgid "Ignoring DCC from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "Ignoriem PRIVMSG od %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:839
+#, fuzzy, c-format
+msgid "Ignoring CTCP from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "Ignoriem PRIVMSG od %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:978
+msgid "The following CTCP reply has unrecognized target %Q"
+msgstr "Slede� CTCP odgovor ima nepoznatu metu \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1025
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1128
+msgid "Channel CTCP"
+msgstr "CTCP Kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:988
+#, fuzzy
+msgid "%Q %Q reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "%Q %S odgovor od %Q [%Q@%Q]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1018
+msgid "The following CTCP request has unrecognized target %Q"
+msgstr "Slede� CTCP zahtev ima nepoznatu metu %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1032
+#, fuzzy
+msgid ""
+"%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignored (flood limit "
+"exceeded)"
+msgstr "%Q %S zahtev od %Q [%Q@%Q] (%Q): ignorisan (flood limit ostvaren)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1036
+#, fuzzy
+msgid "ignored (unrecognized)"
+msgstr "ignorisan (nije prepoznat)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "ignored"
+msgstr "ignorisano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "replied"
+msgstr "odgovoreno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1041
+#, fuzzy
+msgid "%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+msgstr "%Q %S zahtev od %Q [%Q@%Q] (%Q): %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1079
+msgid "The following CTCP PING reply has unrecognized target \"%Q\""
+msgstr "Slede� CTCP PING odgovor ima nepoznatu metu \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1113
+#, c-format
+msgid ""
+"The following CTCP PING reply has a broken time identifier \"%S\", don't "
+"trust the displayed time"
+msgstr ""
+"Slede� CTCP PING odgovor ima prekinut identifikator vremena \"%S\": ne "
+"verujte prikazanom vremenu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1132
+msgid "%Q PING reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sec %u msec"
+msgstr "%Q PING odgovor od %Q [%Q@%Q]: ~ %u sekundi %u msekundi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1466
+msgid "The following CTCP ACTION has unrecognized target %Q"
+msgstr "Slede� CTCP zahtev ima nepoznatu metu %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1471
+#, fuzzy
+msgid "CTCP ACTION from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "CTCP ACTION od %Q [%Q@%Q] ka nepoznatoj meti %Q: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1517
+#, fuzzy
+msgid "Unable to add file offer for file %Q (File not readable?)"
+msgstr "Ne mogu da dodam ponudu fajla za fajl %s (huh ? fajl nije �tljiv ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1521
+#, fuzzy
+msgid "Added %d sec file offer for file %Q (%Q) to recipient %Q"
+msgstr "Dodato %d sekundi ponude fajla za fajl %s (%s) i prima� %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "private"
+msgstr "privatno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "channel notification:"
+msgstr "obavetenje kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1579
+msgid "notification"
+msgstr "obavetenje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1584
+#, fuzzy
+msgid "%Q unsets avatar"
+msgstr "Avatar slika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1591
+#, fuzzy
+msgid "%Q changes avatar to %s"
+msgstr "%Q [%Q@%Q] menja avatar u %s (%Q bajtova, %Q %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1637
+#, fuzzy, c-format
+msgid ": No valid local copy of avatar available, requesting one (HTTP GET %s)"
+msgstr ""
+": Nema validne lokalne kopije avatar slike; zahtevaj jednu (DCC GET %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1644
+#, fuzzy
+msgid ""
+": No valid local copy of avatar available; failed to start an HTTP transfer, "
+"ignoring"
+msgstr ""
+": Nema validne lokalne kopije avatar slike; flood limit postignut: ignoriem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1652
+#, fuzzy, c-format
+msgid ": No valid local copy of avatar available, requesting one (DCC GET %s)"
+msgstr ""
+": Nema validne lokalne kopije avatar slike; zahtevaj jednu (DCC GET %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1664
+#, fuzzy
+msgid ""
+": No valid local copy of avatar available; flood limit exceeded, ignoring"
+msgstr ""
+": Nema validne lokalne kopije avatar slike; flood limit postignut: ignoriem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1669
+#, fuzzy
+msgid ": No valid local copy of avatar available, ignoring"
+msgstr ": Nema validne lokalne kopije avatar slike; ignoriem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1677
+#, fuzzy
+msgid ": No such nickname in the user database, ignoring the change"
+msgstr ": Nema takvog nadimka u bazi korisnika; ignoriem promene"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1717
+#, fuzzy
+msgid "Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S)"
+msgstr "Ignoriem DCC %S zahtev od %Q [%Q@%Q] (%S %S)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1759
+#, fuzzy
+msgid "Processing DCC %Q request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s)"
+msgstr "Obra�jem DCC %S zahtev od %Q [%Q@%Q] (%S %S)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1770
+#, fuzzy, c-format
+msgid "Unable to process the above request: Cannot load DCC module (%s)"
+msgstr "Ne mogu da odradim navedeni zahtev: ne mogu da u�tam dcc modul (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1776
+#, fuzzy
+msgid "Unable to process the above request: DCC module may be broken"
+msgstr "Ne mogu da odradim gornji zahtev: dcc modul izgleda da je ote�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:132
+#, fuzzy
+msgid ""
+"[Server parser]: Encountered problems while parsing the following message:"
+msgstr ""
+"[Serverov parser]: naiao sam na probleme dok sam parseovao sledecu poruku:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:134
+#, fuzzy
+msgid "[Server parser]: [%s][%s] %Q"
+msgstr "[Serverov parser]: [%s][%s] %W"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:136
+#, c-format
+msgid "[Server parser]: %s"
+msgstr "[Serverov parser]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:98
+#, fuzzy
+msgid "Received ping from \r!s\r%Q\r (PING %Q), replied pong"
+msgstr "Primljen ping od \r!s\r%s\r (PING %s) : odgovoren pong"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:125
+#, fuzzy, c-format
+msgid "Received pong from \r!s\r%s\r (PONG %s)"
+msgstr "Primljen ping od \r!s\r%s\r (PING %s) : odgovoren pong"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:151
+#, fuzzy
+msgid "Server ERROR: %Q"
+msgstr "[SSL GREKA]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:174
+#, fuzzy
+msgid "Missing channel parameter in join message"
+msgstr "Nedostaje parametar kanala u JOIN poruci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:209
+#, fuzzy
+msgid "Received a join message for an unknown channel, possible desync"
+msgstr "Primljena PART poruka za nepoznat kanal...desinhronizovano?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:305
+#, fuzzy
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r [implicit +%c umode change]"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] ulazi na \r!c\r%Q\r [implicitno +%c promena umoda]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:310
+#, fuzzy
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] ulazi na \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:324
+#, fuzzy
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] upravo ulazi na \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:355
+#, fuzzy
+msgid "Received a part message for an unknown channel, possible desync"
+msgstr "Primljena PART poruka za nepoznat kanal...desinhronizovano?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:384
+#, fuzzy
+msgid "You have left channel \r!c\r%Q\r"
+msgstr "Napustio si kanal \r!c\r%Q\r :%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:386
+msgid "You have left channel \r!c\r%Q\r: %Q"
+msgstr "Napustio si kanal \r!c\r%Q\r :%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:402
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] je napustio \r!c\r%Q\r :%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:406
+#, fuzzy
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] je napustio \r!c\r%Q\r :%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:420
+#, fuzzy
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] je upravo napustio \r!c\r%Q\r :%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:424
+#, fuzzy
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] je upravo napustio \r!c\r%Q\r :%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:494
+#, fuzzy, c-format
+msgid "Netsplit detected: %s"
+msgstr "Detektovano razdvajanje mrea :%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:546
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:562
+#, fuzzy
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] je prekinuo IRC %Q%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:589
+#, fuzzy
+msgid "Received a kick message for an unknown channel, possible desync"
+msgstr "Primljena PART poruka za nepoznat kanal...desinhronizovano?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:626
+msgid "You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Izba�ni ste sa \r!c\r%Q\r od \r!n\r%Q\r [%Q@\r!h\r%Q\r] :%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:633
+msgid "Attempting to rejoin \r!c\r%Q\r..."
+msgstr "Pokuavam da ponovo u�m na \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:670
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@"
+"\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] je izba�n sa \r!c\r%Q\r od \r!n\r%Q\r [%Q@\r!h\r%Q"
+"\r] :%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:682
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just been kicked from \r!c\r%Q\r by \r!n\r%Q"
+"\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] je upravo izba�n sa \r!c\r%Q\r od \r!n\r%Q\r [%Q@"
+"\r!h\r%Q\r] :%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:710
+#, fuzzy
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+"Prate� poruka izgleda da je ifrovana, ali maina za deifrovanje ne moe da je "
+"deifruje: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:776
+#, fuzzy
+msgid "Ignoring query-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Ignoriem PRIVMSG od %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:843
+msgid ""
+"Spam privmsg from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%s\")"
+msgstr ""
+"Spam privatna poruka od \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (poklapa se sa spam "
+"re�u \"%s\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:984
+#, fuzzy
+msgid "Ignoring channel-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Ignoriem PRIVMSG od %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1106
+#, fuzzy
+msgid "Ignoring Notice from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Ignoriem PRIVMSG od %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1159
+#, fuzzy
+msgid "NickServ requests authentication, executing scheduled command"
+msgstr "NickServ zahteva auttentifikaciju; izvravam zadatu komandu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1162
+#, fuzzy
+msgid ""
+"The scheduled NickServ identification command appears to be broken, please "
+"change the setting"
+msgstr ""
+"Zadata NickServ identifikaciona komanda izgleda da je prekinuta; molim "
+"popravite to u dijalogu opcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1213
+msgid ""
+"Spam notice from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%Q\")"
+msgstr ""
+"Spam obavetenje od \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (poklapa se sa spam re�u "
+"\"%Q\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1394
+#, fuzzy
+msgid "Received a topic message for an unknown channel, possible desync"
+msgstr "Primljena PART poruka za nepoznat kanal...desinhronizovano?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1413
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has changed topic to \"%Q%c\""
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] je promenio topic (naslov) u \"%Q%c\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1512
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] je sad poznat kao \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1063
+msgid "You have changed your nickname to %Q"
+msgstr "Promenili ste va nadimak u %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1477
+msgid ""
+"The target of this query was lost and has been found when \r!n\r%Q\r [%Q@\r!h"
+"\r%Q\r] changed his nickname to \r!n\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1486
+msgid ""
+"The recent nickname change from \r!n\r%Q\r to \r!n\r%Q\r caused a query "
+"collision: merging output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1495
+msgid "End of merged output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1540
+#, fuzzy
+msgid "Ignoring invite from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "Ignoriem PRIVMSG od %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "autojoining"
+msgstr "autoulazak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+#, fuzzy
+msgid "double-click the channel name to join"
+msgstr "dupli klik na ima kanala za ulazak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1556
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] invites you to channel \r!c\r%Q\r (%Q)"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] vas poziva na kanal \r!c\r%Q\r (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1564
+#, fuzzy
+msgid "Received an invite message directed to another nick, possible desync"
+msgstr "Primljena je INVITE poruka namenjena nekom drugom...hmmm"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1584
+msgid "WALLOPS from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "WALLOPS od \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1648
+#, c-format
+msgid "You have set user mode %s"
+msgstr "Postavili ste korisnikov mod %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1655
+#, fuzzy
+msgid "Received a mode change for an unknown channel, possible desync"
+msgstr "Primljena PART poruka za nepoznat kanal...desinhronizovano?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1731
+msgid "%Q [%Q@%Q] has set channel key to \"\r!m-k\r%Q\r\""
+msgstr "%Q [%Q@%Q] je postavio klju�kanala u \"\r!m-k\r%Q\r\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1734
+msgid "%Q [%Q@%Q] has unset the channel key"
+msgstr "%Q [%Q@%Q] je sklonio klju�kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1754
+msgid "%Q [%Q@%Q] has set channel \r!m-l\rlimit to %Q\r"
+msgstr "%Q [%Q@%Q] je postavio na kanalu \r!m-l\rograni�nje na %Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1757
+msgid "%Q [%Q@%Q] has unset the channel limit"
+msgstr "%Q [%Q@%Q] je uklonio ograni�nje kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1779
+msgid "%Q [%Q@%Q] has set mode %c%c \r!n\r%Q\r"
+msgstr "%Q [%Q@%Q] je postavio mod %ce \r!m%ce\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1787
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1834
+msgid "%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"
+msgstr "%Q [%Q@%Q] je postavio na kanalu \r!m%c%c\rmod %c%c\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1819
+#, fuzzy
+msgid "%Q [%Q@%Q] has set mode %c%c \r!m%c%c\r%Q\r"
+msgstr "%Q [%Q@%Q] je postavio mod %ce \r!m%ce\r%c\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1860
+msgid "%Q [%Q@%Q] has set mode %s %Q"
+msgstr "%Q [%Q@%Q] je postavio mod %s %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1863
+msgid "%Q [%Q@%Q] has set channel mode %s"
+msgstr "%Q [%Q@%Q] je postavio mod kanala %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:147
+#, fuzzy, c-format
+msgid ""
+"One or more standard mode flags are missing in the server available modes.\n"
+"This is caused either by a non RFC1459-compliant IRC daemon or a broken "
+"server reply.\n"
+"Server umodes seem to be '%s' and channel modes seem to be '%s'.\n"
+"Ignoring this reply and assuming that the basic set of modes is available.\n"
+"If you have strange problems, try changing the server."
+msgstr ""
+"Jedna ili vie nod zastavica nedostaje u mogu�m modovima servera.\n"
+"Ovo je prouzrokovano IRC serverom koji nije RFC1459 kompatibilan ili je "
+"prekinut odgovor servera.\n"
+"Server modovi korisnika mogu biti '%s' a modovi kanala mogu biti ?%s'.\n"
+"Ako imate �dne probleme, probajte da promenite server."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:159
+msgid "Available user modes:"
+msgstr "Mogu� modovi korisnika:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:169
+#, fuzzy
+msgid ": Unknown user mode"
+msgstr ": nepoznat korisni�i mod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:177
+msgid "Available channel modes:"
+msgstr "Mogu� modovi kanala:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:197
+msgid "Server %Q version %S supporting user modes '%S' and channel modes '%S'"
+msgstr "Server %Q verzija %S podrani modovi '%S' i '%S'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:244
+#, fuzzy
+msgid "This server supports the WATCH notify list method, it will be used"
+msgstr ""
+"Server izgleda podrava WATCH listu obavetenja: probacemo da je koristimo."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:262
+msgid "The current network is %Q"
+msgstr "Trenutni upit nema metu '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:303
+#, fuzzy
+msgid "This server supports the CODEPAGE command, it will be used"
+msgstr ""
+"Server izgleda podrava WATCH listu obavetenja: probacemo da je koristimo."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:319
+#, fuzzy, c-format
+msgid "This server supports: %s"
+msgstr "[Serverov parser]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:375
+msgid "End of NAMES for \r!c\r%Q\r"
+msgstr "Kraj imena za \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:472
+msgid "Names for \r!c\r%Q\r: %Q"
+msgstr "Imena za \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:487
+#, fuzzy
+msgid "(unknown)"
+msgstr "(Nepoznat)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:491
+msgid "Channel topic is: %Q"
+msgstr "Naslov kanala (topic) je: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:498
+msgid "Topic for \r!c\r%Q\r is: %Q"
+msgstr "Naslov (topic) za \r!c\r%Q\r je: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:516
+msgid "No channel topic is set"
+msgstr "Nema postavljenog naslova kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:521
+msgid "No topic is set for channel \r!c\r%Q\r"
+msgstr "Nema postavljenog naslova za kanal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:560
+#, fuzzy
+msgid "Topic was set by %Q on %Q"
+msgstr "Naslov je postavljen od \r!n\r%Q\r u %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:561
+#, fuzzy
+msgid "Topic was set by %Q"
+msgstr "Naslov je postavljen od \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:569
+#, fuzzy
+msgid "Topic for \r!c\r%Q\r was set by %Q on %Q"
+msgstr "Naslov za \r!c\r%Q\r je postavljen od \r!n\r%Q\r u %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:572
+#, fuzzy
+msgid "Topic for \r!c\r%Q\r was set by %Q"
+msgstr "Naslov (topic) za \r!c\r%Q\r je: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:592
+msgid "Channel mode for \r!c\r%Q\r is %s"
+msgstr "Mod kanala za \r!c\r%Q\r je %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:595
+msgid "User mode for \r!n\r%Q\r is %s"
+msgstr "Mod kanala za \r!c\r%Q\r je %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:631
+#, fuzzy
+msgid "End of channel %Q for \r!c\r%Q\r"
+msgstr "Kraj liste zabrana (ban) za \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:635
+#, fuzzy
+msgid "ban list"
+msgstr "Lista URL zabrane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:636
+#, fuzzy
+msgid "invite list"
+msgstr "Sa�vaj listu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:637
+#, fuzzy
+msgid "ban exception list"
+msgstr "maske izuzetaka zabrane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:658
+#, fuzzy
+msgid "%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"
+msgstr "Unos zabrane (ban) za \r!c\r%Q\r: \r!m-b\r%Q\r (postavljen od %c u %Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:665
+#, fuzzy
+msgid "Ban listing"
+msgstr "Lista URL zabrane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:668
+#, fuzzy
+msgid "Invite listing"
+msgstr "poruka pozivanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:671
+#, fuzzy
+msgid "Ban exception listing"
+msgstr "maske izuzetaka zabrane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:740
+#, fuzzy
+msgid ""
+"WHO entry for %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cChannel%c: \r!c\r%Q\r, %"
+"cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAway%c: %Q, %cReal name"
+"%c: %Q"
+msgstr ""
+"Ko (WHO) unos za %c\r!n\r%Q\r%c[%Q@\r!h\r%Q\r]: %cKanal:%c \r!c\r%Q\r, %"
+"cServer%c: \r!s\r%Q\r, %cSkokova:%c %d, %cOdsutnost:%c %Q. %cStvarno ime:%c %"
+"Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:797
+#, fuzzy
+msgid "End of WHO list for %Q"
+msgstr "Kraj /WHO liste za %W"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:856
+msgid ""
+"Something really weird is happening: the server is refusing all the login "
+"nicknames..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:861
+msgid ""
+"The server is refusing all the login nicknames: giving up, you must send the "
+"nickname manually"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:871
+msgid "No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."
+msgstr "Nema anse da se logujete kao '\r!n\r%Q\r' (%d:%Q): pokuavam '%Q'..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:945
+msgid "Command syntax %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:973
+#, fuzzy
+msgid "Tip: %Q"
+msgstr "Lista: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:976
+#, fuzzy
+msgid "Tip for %Q: %Q"
+msgstr "Naslov (topic) za \r!c\r%Q\r je: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:993
+#, fuzzy
+msgid "End of help about %Q"
+msgstr "Kraj /WHO liste za %W"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1037
+msgid "%c\r!n\r%Q\r%c is away: %Q"
+msgstr "%c\r!n\r%Q\r%c je odsutan: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1090
+msgid "%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "%c\r!n\r%Q\r%c je %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1095
+#, fuzzy
+msgid "%c\r!n\r%Q\r%c's real name: %Q"
+msgstr "%c\r!n\r%Q\r%c - pravo ime je: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1115
+msgid "%c\r!n\r%Q\r%c was %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "%c\r!n\r%Q\r%c je %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1119
+msgid "%c\r!n\r%Q\r%c's real name was: %Q"
+msgstr "%c\r!n\r%Q\r%c - pravo ime je: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1183
+msgid "%c\r!n\r%Q\r%c's channels: %Q"
+msgstr "%c\r!n\r%Q\r%c - kanali: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1220
+#, fuzzy
+msgid "Received a broken RPL_WHOISIDLE, can't evaluate the idle time"
+msgstr "Primljen prekinut RPL_WHOISIDLE: nemogu da procenim vreme neaktivnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1230
+msgid "%c\r!n\r%Q\r%c's idle time: %ud %uh %um %us"
+msgstr "%c\r!n\r%Q\r%c - vreme neaktivnosti: %u d %u h %u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1240
+msgid "%c\r!n\r%Q\r%c's signon time: %Q"
+msgstr "%c\r!n\r%Q\r%c - vreme logovanja: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1274
+msgid "%c\r!n\r%Q\r%c's server: \r!s\r%Q\r - %Q"
+msgstr "%c\r!n\r%Q\r%c - server: \r!s\r%Q\r : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1293
+#, fuzzy
+msgid "%c\r!n\r%Q\r%c is authenticated as %Q"
+msgstr "%c\r!n\r%Q\r%c - pravo ime je: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1325
+msgid "%c\r!n\r%Q\r%c's info: %Q"
+msgstr "%c\r!n\r%Q\r%c - informacije: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1372
+msgid "%c\r!n\r%Q\r%c WHOIS info from \r!s\r%Q\r"
+msgstr "%c\r!n\r%Q\r%c ko je (whois) informacije od \r!s\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1389
+msgid "%c\r!n\r%Q\r%c WHOWAS info from \r!s\r%Q\r"
+msgstr "%c\r!n\r%Q\r%c ko je (whois) informacije od \r!s\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1457
+#, fuzzy
+msgid "Can't evaluate creation time"
+msgstr "Ne mogu da prora�nam vreme kreiranja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1465
+msgid "Channel was created at %Q"
+msgstr "Kanal je kreiran u %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1470
+msgid "Channel \r!c\r%Q\r was created at %Q"
+msgstr "Kanal \r!c\r%Q\r je bio kreiran u %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1511
+msgid "USERHOST info: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1532
+#, fuzzy
+msgid "Channel list begin: channel, users, topic"
+msgstr "Po�tak liste kanala: Kamal , korisnika , naslov"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1559
+msgid "List: %Q"
+msgstr "Lista: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1573
+#, fuzzy
+msgid "End of LIST"
+msgstr "Kraj linkova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1597
+msgid "Link: %Q"
+msgstr "Link: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1612
+msgid "End of LINKS"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1641
+msgid "[Leaving away status after %ud %uh %um %us]: %Q"
+msgstr "[Naputa status odsutnosti posle %u d %u h %u m %u s]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1645
+msgid "[Leaving away status]: %Q"
+msgstr "[Napusta status odsutnosti]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1652
+msgid "Restoring pre-away nickname (%Q)"
+msgstr "Koristim serverski naveden nadimak (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1672
+msgid "[Entering away status]: %Q"
+msgstr "[Prelazi u status odsutnosti]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1690
+#, fuzzy
+msgid "Setting away nickname (%Q)"
+msgstr "Server %Q ima nadimak: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1762
+#, fuzzy, c-format
+msgid "%c\r!s\r%s\r%c's server info: %s"
+msgstr "%c\r!n\r%Q\r%c - informacije: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1773
+#, fuzzy, c-format
+msgid "%c\r!s\r%s\r%c's administrator is %s"
+msgstr "%c\r!n\r%Q\r%c - informacije: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1784
+#, fuzzy, c-format
+msgid "%c\r!s\r%s\r%c's contact adress is %s"
+msgstr "%c\r!n\r%Q\r%c - kanali: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1812
+#, fuzzy
+msgid "\r!n\r%Q\r invited %Q into channel %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] vas poziva na kanal \r!c\r%Q\r (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1834
+#, fuzzy, c-format
+msgid "%c\r!s\r%s\r%c's information:"
+msgstr "%c\r!n\r%Q\r%c - informacije: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1844
+#, c-format
+msgid "End of %c\r!s\r%s\r%c's information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1855
+#, fuzzy
+msgid "%c\r!s\r%s\r%c's time is %Q"
+msgstr "[\r!s\r%s\r]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1866
+msgid "%Q: no such server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1877
+msgid "%Q: no such channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1891
+#, fuzzy
+msgid "Cannot sent to channel: %Q"
+msgstr "Nema postavljenog naslova za kanal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1894
+#, fuzzy
+msgid "Cannot sent text to channel %Q: %Q"
+msgstr "Napustio si kanal \r!c\r%Q\r :%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1909
+#, fuzzy
+msgid "Cannot sent to channel"
+msgstr "Trenutni prozor nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1912
+#, fuzzy
+msgid "Cannot sent text to channel %Q"
+msgstr "Nema postavljenog naslova za kanal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1928
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1936
+#, fuzzy
+msgid "Your encoding is now %Q"
+msgstr "Va korisni�i mod je %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1967
+#, fuzzy
+msgid "%c\r!n\r%Q\r%c's codepage is %Q: %Q"
+msgstr "%c\r!n\r%Q\r%c - kanali: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1991
+#, c-format
+msgid "Your user mode is %s"
+msgstr "Va korisni�i mod je %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:158
+msgid "Failed to set the encoding to %Q: mapping not available."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:175
+#, fuzzy
+msgid "Changed text encoding to %Q"
+msgstr "Izaberi fajlove za slanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:503
+#, fuzzy
+msgid "Connection to server lost"
+msgstr "Isteklo je vreme za povezivanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:512
+#, fuzzy
+msgid "Connection to server established"
+msgstr "Povei na izabrano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:573
+#, fuzzy
+msgid "[LINK WARNING]: Socket message truncated to 512 bytes."
+msgstr "Poruka priklju�a skra�na na 512 bajtova."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:640
+#, fuzzy
+msgid ""
+"The server seems to support the WATCH notify list method, will try to use it"
+msgstr ""
+"Server izgleda podrava WATCH listu obavetenja: probacemo da je koristimo."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:688
+msgid "Can't resolve local host address, using user supplied one (%Q)"
+msgstr ""
+"Ne mogu da reim adresu lokalnog hosta : koristim postavku krisnika (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:695
+#, fuzzy
+msgid "Can't resolve local host address, using default 127.0.0.1"
+msgstr ""
+"Ne mogu da reim adresu lokalnog hosta : koristim predefinisanu 127.0.0.1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:701
+msgid "Local host address is %Q"
+msgstr "Adresa lokalnog hosta je %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:749
+msgid "The server seems to have changed the idea about the local hostname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:750
+msgid ""
+"You're probably using a broken bouncer or maybe something weird is happening "
+"on the IRC server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:776
+msgid ""
+"Here goes your \"broken bouncer hack\": The server has changed the hostname "
+"but I'll ignore the IP address change"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:791
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:801
+msgid "The local IP address as seen by the IRC server is %Q"
+msgstr "Traim ime hosta za proksi (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:815
+#, fuzzy
+msgid "Can't start the DNS slave thread"
+msgstr "Ne mogu da pokrenem DNS traganje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:816
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:846
+msgid "Unable to resolve the local hostname as seen by the IRC server: %Q"
+msgstr "Traim ime hosta za proksi (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:822
+#, fuzzy
+msgid "Looking up the local hostname as seen by the IRC server (%Q)"
+msgstr "Traim ime hosta za proksi (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:843
+#, fuzzy
+msgid ""
+"Unable to resolve the local hostname as seen by the IRC server: %Q, using "
+"previously resolved %Q"
+msgstr "Traim ime hosta za proksi (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:850
+#, fuzzy
+msgid "Local hostname as seen by the IRC server resolved to %Q"
+msgstr "Traim ime hosta za proksi (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:868
+msgid "Using server specific username (%Q)"
+msgstr "Koristim serverski navedeno ime korisnika (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:873
+msgid "Using network specific username (%Q)"
+msgstr "Koristim serverski navedeno ime korisnika (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:892
+#, fuzzy
+msgid "Using reconnect specific nickname (%Q)"
+msgstr "Koristim serverski naveden nadimak (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:898
+msgid "Using server specific nickname (%Q)"
+msgstr "Koristim serverski naveden nadimak (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:905
+msgid "Using network specific nickname (%Q)"
+msgstr "Koristim serverski naveden nadimak (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:922
+msgid "Using server specific real name (%Q)"
+msgstr "Koristim serverski navedeno stvarno ime (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:929
+msgid "Using network specific real name (%Q)"
+msgstr "Koristim serverski navedeno stvarno ime (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:946
+msgid "Logging in as %Q!%Q :%Q"
+msgstr "Prijavljeni ste kao %Q!%Q :%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:962
+#, c-format
+msgid "Sending %s as password"
+msgstr "aljem %s kao lozinku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1033
+#, fuzzy
+msgid "Executing scheduled network specific \"on connect\" commands"
+msgstr "Izvravam raspore�ne \"on connect\" komande specifi�e za server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1042
+msgid "Executing scheduled server specific \"on connect\" commands"
+msgstr "Izvravam raspore�ne \"on connect\" komande specifi�e za server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1051
+#, fuzzy
+msgid "Executing scheduled identity specific \"on connect\" commands"
+msgstr "Izvravam raspore�ne \"on connect\" komande specifi�e za server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1101
+#, c-format
+msgid "The server refused the suggested nickname (%s) and named you %s instead"
+msgstr "Server odbija predloeni nadimak (%s) i umesto toga vas imenuje sa %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1113
+#, fuzzy
+msgid "Login operations complete, happy ircing!"
+msgstr "Operacija prijavljivanja je kompletna: prijatno ircanje!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1123
+#, fuzzy
+msgid "Executing scheduled network specific \"on login\" commands"
+msgstr "Izvravam raspore�ne \"on connect\" komande specifi�e za server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1132
+#, fuzzy
+msgid "Executing scheduled server specific \"on login\" commands"
+msgstr "Izvravam raspore�ne \"on connect\" komande specifi�e za server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1141
+#, fuzzy
+msgid "Executing scheduled identity specific \"on login\" commands"
+msgstr "Izvravam raspore�ne \"on connect\" komande specifi�e za server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1153
+msgid "Setting configured user mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1210
+#, fuzzy
+msgid "Auto-joining network specific channels"
+msgstr "Koristim serverski naveden nadimak (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1244
+#, fuzzy
+msgid "Auto-joining server specific channels"
+msgstr "Koristim serverski naveden nadimak (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1341
+#, fuzzy
+msgid "Updating away state for channel %Q"
+msgstr "Nema postavljenog naslova za kanal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_customtoolbardescriptor.cpp:230
+msgid "Backward compatibility action for toolbar.define"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:790
+msgid "Installation problems ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:791
+msgid ""
+"<b>Ooops...</b><br><br><b>There are some reasons that make me think that "
+"your KVIrc installation is incomplete.</b><br><br>I might be wrong, but you "
+"seem to miss some of the features that the default KVIrc script provides."
+"This may happen because you have upgraded to an unstable cvs version, "
+"because you have accidentally deleted or damaged your configuration files, "
+"because you have installed an incomplete script or because you have hit a "
+"bug in KVIrc.<br><br>I can repeat the installation of the default script in "
+"order to restore the missing features.<br><b>Do you want the default script "
+"to be restored ?</b><br><br><font size=\"-1\">Hint: If you're a scripter and "
+"have intentionally removed some of the scripting features then you may "
+"safely click on \"No and Don't Ask Me Again\", otherwise it might be a good "
+"idea to click \"Yes\". If you still want to choose \"No\" you can always "
+"restore the default script by choosing the appropriate entry from the "
+"\"Scripting\" menu.</font>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:805
+msgid "No and Don't Ask Me Again"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:828
+msgid "Restore Default Script - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:829
+msgid ""
+"You are about to restore the default script.<br>This will erase any script "
+"changes you have made.<br>Do you wish to proceed?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:872
+#, c-format
+msgid "Remote command received (%s ...)"
+msgstr "Primljena je udaljena komanda (%s ...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1033
+#, fuzzy
+msgid "File download failed"
+msgstr "Direktorijum za svla�nje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1035
+#, fuzzy
+msgid "File download from %1 failed"
+msgstr "U�taj iz fajla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1044
+#, fuzzy
+msgid "File download successfully complete"
+msgstr "Direktorijum za svla�nje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1046
+#, fuzzy
+msgid "File download from %1 successfully complete"
+msgstr "U�taj iz fajla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1066
+msgid "Avatar download failed for %Q!%Q@%Q and url %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2014
+#, c-format
+msgid "The commandline for media type '%s' seems to be broken"
+msgstr "Komandna linija za '%s' tip medija izgleda da je prekinuta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2018
+#, c-format
+msgid "Media type of file %s matched to '%s' but no commandline specified"
+msgstr ""
+"Tip medija fajla %s se poklapa sa %s ali nije definisana komandna linija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2023
+#, c-format
+msgid "No idea on how to play file %s (no media type match)"
+msgstr "Nemam ideju kako da pustim fajl %s (nema odgovaraju�g tipa medija)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:39
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:48
+#, c-format
+msgid "[SSL]: %c%s"
+msgstr "[SSL]: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:40
+#, c-format
+msgid "[SSL]: Cipher: %c%s"
+msgstr "[SSL]: ifra: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:41
+#, c-format
+msgid "[SSL]: Version: %c%s"
+msgstr "[SSL]: Verzija: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:42
+#, c-format
+msgid "[SSL]: Bits: %c%d (%d used)"
+msgstr "[SSL]: Bitova: %c%d (%d kori�no)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:49
+#, c-format
+msgid "[SSL]: Version: %c%d"
+msgstr "[SSL]: Verzija: %c%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:50
+#, c-format
+msgid "[SSL]: Serial number: %c%d"
+msgstr "[SSL]: Serijski broj: %c%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:51
+msgid "[SSL]: Subject:"
+msgstr "[SSL]: Tema:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:59
+#, c-format
+msgid "[SSL]: Common name: %c%s"
+msgstr "[SSL]: Uobi�jeno ime: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:60
+#, c-format
+msgid "[SSL]: Organization: %c%s"
+msgstr "[SSL]: Organizacija: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:61
+#, c-format
+msgid "[SSL]: Organizational unit: %c%s"
+msgstr "[SSL]: Organizaciona jedinica: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:62
+#, c-format
+msgid "[SSL]: Country: %c%s"
+msgstr "[SSL]: Zemlja: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:63
+#, c-format
+msgid "[SSL]: State or province: %c%s"
+msgstr "[SSL]: Drava ili provincija: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:64
+#, c-format
+msgid "[SSL]: Locality: %c%s"
+msgstr "[SSL]: Mesto: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:58
+msgid "[SSL]: Issuer:"
+msgstr "[SSL]: Emitent:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:65
+#, c-format
+msgid "[SSL]: Public key: %c%s (%d bits)"
+msgstr "[SSL]: Javni klju� %c%s (%d bitova)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:66
+#, c-format
+msgid "[SSL]: Signature type: %c%s"
+msgstr "[SSL]: Vrsta potpisa: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:73
+#, c-format
+msgid "[SSL]: Signature contents: %c%s"
+msgstr "[SSL]: Sadraj potpisa: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:82
+#, fuzzy
+msgid "Peer X509 certificate"
+msgstr "Server X509 sertifikat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:85
+#, fuzzy
+msgid "[SSL]: The peer didn't provide a certificate"
+msgstr "Server nije obezbedio sertifikat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1219
+msgid "Current transmission cipher"
+msgstr "Trenutna ifra prenoenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:92
+msgid "[SSL]: Can't find out the current cipher info"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:113
+#, c-format
+msgid "[%s]: [SSL]: Using certificate file %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:116
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the certificate file %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:146
+#, fuzzy, c-format
+msgid "[%s]: [SSL ERROR]: %s"
+msgstr "[SSL GREKA]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:136
+#, c-format
+msgid "[%s]: [SSL]: Using private key file %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:139
+#, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the private key file %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:375
+#, fuzzy
+msgid "Reconnect attempt aborted"
+msgstr "Isteklo je vreme za povezivanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:443
+msgid ""
+"This is the first connection in this IRC context: using the global server "
+"setting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:483
+#, fuzzy
+msgid ""
+"No servers available. Check the options dialog or use the /SERVER command"
+msgstr ""
+"Nema mogu�g servera: proverite u server opcijama ili koristite /SERVER "
+"komandu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:491
+msgid ""
+"Ooops.. you've hit a bug in the servers database... I have found a server "
+"but not a network..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:504
+#, fuzzy
+msgid "No proxy hosts available, resuming direct connection"
+msgstr "Nema mogu�g proksi hosta: prebacujem na direktno konektovanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:582
+#, c-format
+msgid "Connection attempt failed [%s]"
+msgstr "Neuspean pokuaj ka�nja [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:600
+#, c-format
+msgid "Will attempt to reconnect in %d seconds"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:604
+#, c-format
+msgid "%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:606
+#, c-format
+msgid "%d of %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:633
+#, c-format
+msgid "Maximum number of reconnect attempts reached (%d): giving up"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:647
+#, fuzzy
+msgid ""
+"The connection attempt failed while using a cached IP address for the "
+"current server"
+msgstr ""
+"Pokuak konektovanja neuspean doje je keiranje IP adrese za ovaj server "
+"uklju�no"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:648
+#, fuzzy
+msgid "The problem *might* be caused by an updated DNS entry"
+msgstr "Problem *moe* biti prouzrokovan promenom DNS unosa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:649
+msgid "Try reconnecting with caching disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:673
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:382
+#, fuzzy
+msgid "%Q established [%s (%s:%u)]"
+msgstr "%w uspostavljen [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Secure connection"
+msgstr "Sigurna konekcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Connection"
+msgstr "Konekcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:779
+#, c-format
+msgid "Connection terminated [%s (%s:%u)]"
+msgstr "Konekcija prekinuta [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:791
+#, fuzzy
+msgid "The connection terminated unexpectedly. Trying to reconnect..."
+msgstr "Konekcija je neo�kivano prekinuta: pokuavam da rekonektujem..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:874
+#, fuzzy
+msgid "Sent QUIT, waiting for the server to close the connection..."
+msgstr "Poslat QUIT...�kam da server zatvori konekciju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:685
+msgid "Normal text"
+msgstr "Normalni tekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:686
+#, fuzzy
+msgid "Selection"
+msgstr "selekcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:687
+#, fuzzy
+msgid "Highlighted text"
+msgstr "Naglaeni tekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:688
+#, fuzzy
+msgid "URL foreground"
+msgstr "URL ispis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:689
+#, fuzzy
+msgid "Link overlay foreground"
+msgstr "Veza prekriva ispis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:690
+#, fuzzy
+msgid "Parser error"
+msgstr "Greka parsera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:691
+#, fuzzy
+msgid "Parser warning"
+msgstr "Upozorenje parsera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:692
+#, fuzzy
+msgid "Host lookup result"
+msgstr "Rezultat potrage hosta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:693
+#, fuzzy
+msgid "Socket message"
+msgstr "poruka priklju�a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:694
+#, fuzzy
+msgid "Socket warning"
+msgstr "upozorenje priklju�a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:695
+#, fuzzy
+msgid "Socket error"
+msgstr "greka priklju�a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:696
+#, fuzzy
+msgid "System error"
+msgstr "sistemska greka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:697
+#, fuzzy
+msgid "Raw data to server"
+msgstr "sirovi podaci ka serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:698
+#, fuzzy
+msgid "Connection status"
+msgstr "status konekcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:699
+#, fuzzy
+msgid "System warning"
+msgstr "sistemsko upozorenje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:700
+#, fuzzy
+msgid "System message"
+msgstr "sistemska poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:701
+#, fuzzy
+msgid "Unhandled server reply"
+msgstr "nepodran odgovor servera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:702
+#, fuzzy
+msgid "Server information"
+msgstr "informacije servera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:703
+#, fuzzy
+msgid "Server Message of the Day"
+msgstr "serverska poruka dana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:704
+#, fuzzy
+msgid "Server ping"
+msgstr "serverov ping"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:705
+#, fuzzy
+msgid "Join message"
+msgstr "poruka ulaska"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:706
+#, fuzzy
+msgid "Part message"
+msgstr "poruka izlaska"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:707
+#, fuzzy
+msgid "Unrecognized/broken message"
+msgstr "neprepoznatljiva/prekinuta poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:708
+#, fuzzy
+msgid "Topic message"
+msgstr "poruka teme (topic-a)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:709
+#, fuzzy
+msgid "Own private message"
+msgstr "li�a privatna poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:710
+#, fuzzy
+msgid "Channel private message"
+msgstr "privatna poruka kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:711
+#, fuzzy
+msgid "Query private message"
+msgstr "upit privatne poruke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:712
+msgid "CTCP reply"
+msgstr "CTCP odgovor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:713
+msgid "CTCP request replied"
+msgstr "CTCP zahtev odgovoren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:714
+msgid "CTCP request ignored"
+msgstr "CTCP zahtev ignorisan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:715
+msgid "CTCP request flood warning"
+msgstr "CTCP zahtev upozorenje na poplavu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:716
+msgid "CTCP request unknown"
+msgstr "CTCP zahtev nepoznat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:717
+#, fuzzy
+msgid "User action"
+msgstr "akcija korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:718
+#, fuzzy
+msgid "Avatar change"
+msgstr "promena avatara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:719
+#, fuzzy
+msgid "Quit message"
+msgstr "poruka prekida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:720
+#, fuzzy
+msgid "Split message"
+msgstr "poruka razdvajanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:721
+#, fuzzy
+msgid "Quit on netsplit message"
+msgstr "poruka prekida pri razdvajanju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:722
+#, fuzzy
+msgid "Nick changes"
+msgstr "promena nadimka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:723
+msgid "+o mode change"
+msgstr "+o promena moda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:724
+msgid "-o mode change"
+msgstr "-o promena moda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:725
+msgid "+v mode change"
+msgstr "+v promena moda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:726
+msgid "-v mode change"
+msgstr "-v promena moda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:727
+#, fuzzy
+msgid "Multiple user mode change"
+msgstr "promena moda za vie korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:728
+#, fuzzy
+msgid "Channel key change"
+msgstr "promena klju� kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:729
+#, fuzzy
+msgid "Channel limit change"
+msgstr "promena limita kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:730
+msgid "+b mode change"
+msgstr "+b promena moda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:731
+msgid "-b mode change"
+msgstr "-b promena moda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:732
+msgid "+e mode change"
+msgstr "+e promena moda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:733
+#, fuzzy
+msgid "-e mode change"
+msgstr "-o promena moda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:734
+msgid "+I mode change"
+msgstr "+i promena moda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:735
+msgid "-I mode change"
+msgstr "-i promena moda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:736
+#, fuzzy
+msgid "Multiple channel mode change"
+msgstr "promena moda za vie kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:737
+#, fuzzy
+msgid "Who reply"
+msgstr "ko (who) odgovor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:738
+#, fuzzy
+msgid "DCC request"
+msgstr "DCC %s zahtev"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:739
+#, fuzzy
+msgid "DCC message"
+msgstr "ICQ poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:740
+#, fuzzy
+msgid "DCC error"
+msgstr "DCC greka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:741
+#, fuzzy
+msgid "Nickname problem"
+msgstr "problem nadimka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:742
+#, fuzzy
+msgid "Whois user reply"
+msgstr "koje (whois) odgovor korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:743
+#, fuzzy
+msgid "Whois channels reply"
+msgstr "koje (whois) odgovor kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:744
+#, fuzzy
+msgid "Whois idle reply"
+msgstr "koje (whois) neuposlen odgovor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:745
+#, fuzzy
+msgid "Whois server reply"
+msgstr "koje (whois) odgovor servera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:746
+#, fuzzy
+msgid "Whois other reply"
+msgstr "koje (whois) ostali odgovori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:747
+#, fuzzy
+msgid "Channel creation time reply"
+msgstr "odgovor vremena stvaranja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:748
+#, fuzzy
+msgid "Notify list joins"
+msgstr "lista obavetenja ulasci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:749
+#, fuzzy
+msgid "Notify list leaves"
+msgstr "lista obavetenja odlasci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:750
+#, fuzzy
+msgid "Own encrypted private message"
+msgstr "vlastita privatna ifrovana poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:751
+#, fuzzy
+msgid "Channel encrypted private message"
+msgstr "ifrovana privatna poruka kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:752
+#, fuzzy
+msgid "Query encrypted private message"
+msgstr "upit privatne ifrovane poruke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:753
+msgid "DCC chat message"
+msgstr "DCC poruka za razgovor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:754
+#, fuzzy
+msgid "Encrypted DCC chat message"
+msgstr "ifrovana poruka DCC razgovora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:755
+#, fuzzy
+msgid "Login operations completed"
+msgstr "login operacija kompletna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:756
+#, fuzzy
+msgid "Kick action"
+msgstr "akcija izbacivanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:757
+#, fuzzy
+msgid "Links reply"
+msgstr "odgovor linkova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:758
+#, fuzzy
+msgid "Spam report"
+msgstr "spam izvetaj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:759
+msgid "ICQ message"
+msgstr "ICQ poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:760
+msgid "ICQ user-message"
+msgstr "ICQ poruka korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:761
+#, fuzzy
+msgid "Outgoing ICQ user-message"
+msgstr "odlaze� IRC korisni�a-poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:762
+#, fuzzy
+msgid "Channel notice"
+msgstr "obavetenje kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:763
+#, fuzzy
+msgid "Encrypted channel notice"
+msgstr "ifrovano obavetenje kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:764
+#, fuzzy
+msgid "Query notice"
+msgstr "upit obavetenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:765
+#, fuzzy
+msgid "Encrypted query notice"
+msgstr "ifrovano obavetenje kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:766
+#, fuzzy
+msgid "Server notice"
+msgstr "obavetenje servera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:767
+#, fuzzy
+msgid "Halfop mode change"
+msgstr "half op promena moda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:768
+#, fuzzy
+msgid "Unknown CTCP reply"
+msgstr "nepoznat CTCP odgovor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:769
+msgid "NickServ message"
+msgstr "NickServ poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:770
+msgid "ChanServ message"
+msgstr "ChanServ poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:771
+#, fuzzy
+msgid "Away message"
+msgstr "poruka odsutnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:772
+#, fuzzy
+msgid "Ident message"
+msgstr "ident poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:773
+#, fuzzy
+msgid "Channel list message"
+msgstr "poruka liste kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:774
+#, fuzzy
+msgid "Half-deop mode change"
+msgstr "half deop promena moda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:775
+#, fuzzy
+msgid "Invite message"
+msgstr "poruka pozivanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:776
+#, fuzzy
+msgid "Multimedia message"
+msgstr "multimedijalna poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:777
+#, fuzzy
+msgid "Query trace message"
+msgstr "upit prati poruke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:778
+#, fuzzy
+msgid "Wallops message"
+msgstr "wallops poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:779
+#, fuzzy
+msgid "Join error message"
+msgstr "poruka greke ulaza"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:780
+#, fuzzy
+msgid "Broadcast private message"
+msgstr "privatna poruka prenosa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:781
+#, fuzzy
+msgid "Broadcast notice"
+msgstr "obavetenje prenosa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:782
+#, fuzzy
+msgid "Am kicked"
+msgstr "ja isteran"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:783
+#, fuzzy
+msgid "Am op'd"
+msgstr "me oped"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:784
+#, fuzzy
+msgid "Am voiced"
+msgstr "me voiced"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:785
+#, fuzzy
+msgid "Am deop'd"
+msgstr "me de-oped"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:786
+#, fuzzy
+msgid "Am devoiced"
+msgstr "me de-voiced"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:787
+#, fuzzy
+msgid "Am halfop'd"
+msgstr "me half-oped"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:788
+#, fuzzy
+msgid "Am de-halfop'd"
+msgstr "me de-half-oped"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:789
+#, fuzzy
+msgid "Ban matching my mask"
+msgstr "poklapanje zabrane (ban) po masci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:790
+#, fuzzy
+msgid "Unban matching my mask"
+msgstr "poklapanje unban-a po masci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:791
+#, fuzzy
+msgid "Ban exception matching my mask"
+msgstr "izuzetak zabrane (ban-a) po masci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:792
+#, fuzzy
+msgid "Ban unexception matching my mask"
+msgstr "neizuzetna zabrana po masci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:793
+#, fuzzy
+msgid "Invite exception matching my mask"
+msgstr "izuzetak poziva koji se poklapa po masci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:794
+#, fuzzy
+msgid "Invite unexception matching my mask"
+msgstr "neizuzetak poziva koji se poklapa po masci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:795
+#, fuzzy
+msgid "Ignored user message"
+msgstr "ignorisana poruka korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:796
+#, fuzzy
+msgid "Server statistics"
+msgstr "statistike servera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:797
+#, fuzzy
+msgid "SSL message"
+msgstr "DCC poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:108
+#, fuzzy
+msgid "Search"
+msgstr "Pretrai"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:799
+#, fuzzy
+msgid "Generic success"
+msgstr "status konekcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:800
+#, fuzzy
+msgid "Generic status"
+msgstr "status konekcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:801
+#, fuzzy
+msgid "Generic verbose message"
+msgstr "ignorisana poruka korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:802
+#, fuzzy
+msgid "Generic warning"
+msgstr "Upozorenje parsera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:803
+#, fuzzy
+msgid "Generic error"
+msgstr "Interna greka."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:804
+#, fuzzy
+msgid "Generic critical error"
+msgstr "Interna greka."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:805
+#, fuzzy
+msgid "Chan admin status set"
+msgstr "Operatori kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:806
+#, fuzzy
+msgid "Chan admin status unset"
+msgstr "Operatori kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:807
+#, fuzzy
+msgid "Own chan admin status set"
+msgstr "Operatori kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:808
+#, fuzzy
+msgid "Own chan admin status unset"
+msgstr "Operatori kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:809
+#, fuzzy
+msgid "Userop mode change"
+msgstr "+o promena moda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:810
+#, fuzzy
+msgid "User-deop mode change"
+msgstr "-o promena moda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:811
+msgid "Am userop'd"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:812
+#, fuzzy
+msgid "Am de-userop'd"
+msgstr "me de-oped"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:813
+msgid "Verbose/Debug"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:814
+#, fuzzy
+msgid "Chan owner status set"
+msgstr "Operatori kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:815
+#, fuzzy
+msgid "Chan owner status unset"
+msgstr "Operatori kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:816
+#, fuzzy
+msgid "Own chan owner status set"
+msgstr "Operatori kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:817
+#, fuzzy
+msgid "Own chan owner status unset"
+msgstr "Operatori kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:818
+#, fuzzy
+msgid "Server error"
+msgstr "Greka parsera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:22
+msgid "Help"
+msgstr "Pomo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:820
+#, fuzzy
+msgid "Text Encoding Server message"
+msgstr "poruka greke ulaza"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:826
+#, fuzzy
+msgid "BitTorrent message"
+msgstr "ident poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:970
+msgid "Missing absolute directory for the theme information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:978
+#, fuzzy
+msgid "Failed to create the theme directory"
+msgstr "Neuspeno uklanjanje direktorijuma %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1061
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1096
+#, fuzzy
+msgid "Failed to save one of the theme images"
+msgstr "Ne mogu da otvorim fajl %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1074
+#, fuzzy
+msgid "Failed to create the theme subdirectory"
+msgstr "Neuspeno uklanjanje direktorijuma %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1213
+msgid "Boolean options (1/0)"
+msgstr "Boolean opcije (1/0)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1214
+msgid "Rectangle options (x,y,width,height)"
+msgstr "Opcije pravougaonika (x,y,irina,visina)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1215
+msgid "String options (string value)"
+msgstr "Opcije znakova (znakovna vrednost)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1216
+msgid "Color options (#RRGGBB)"
+msgstr "Opcije boja (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1217
+msgid "Mirccolor options (#RRGGBB)"
+msgstr "Opcije mirc boja (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1218
+msgid "Irc context color options (#RRGGBB)"
+msgstr "Opcije boja IRC konteksta (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1219
+msgid "Pixmap options (image path)"
+msgstr "Pixmap opcije (putanja slike)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1220
+msgid "Unsigned integer options (unsigned integer constant)"
+msgstr "Neozna�ne celobrojne opcije (neozna�na celobrojna konstanta)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1221
+msgid "Font options (family,pointsize,style,charset,weight,flags (biusf))"
+msgstr "Opcije fontova (vrsta,veli�na.stil.karakterset,irina,zastavice)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1222
+msgid "Message color options (image_id,foreground,background,logFlag (0/1))"
+msgstr "Opcije boja poruka (id_slike,pozadina,ispis,logFlag (0/1))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1223
+msgid "String list options (comma separated list of strings)"
+msgstr "Opcije liste znakova (zarezom razdvojena lista znakova)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+#, fuzzy
+msgid "IRC Context related actions"
+msgstr "&Nov irc kontekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+#, fuzzy
+msgid "Generic"
+msgstr "Generalne opcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+#, fuzzy
+msgid "Generic actions"
+msgstr "status konekcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+#, fuzzy
+msgid "Settings"
+msgstr "&Podeavanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Actions related to settings"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:30
+#, fuzzy
+msgid "Scripting"
+msgstr "Opis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+msgid "Scripting related actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "GUI"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "Actions related to the Graphic User Interface"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:77
+msgid "Channel"
+msgstr "Kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+#, fuzzy
+msgid "IRC Channel related actions"
+msgstr "&Nov irc kontekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+#, fuzzy
+msgid "Tools"
+msgstr "&Alati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Actions that will appear in the \"Tools\" menu"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:157
+msgid "Sending out PING based lag probe"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:167
+msgid "Sending out CTCP based lag probe"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:188
+#, c-format
+msgid "Registered lag check with reliability %u (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:220
+#, c-format
+msgid "Lag check completed (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:259
+#, c-format
+msgid "Lag check aborted (%s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:143
+#, fuzzy
+msgid "Hostname resolution aborted"
+msgstr "Konektovanje prekinuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:156
+#, fuzzy
+msgid "Attempting %Q to %Q (%Q) on port %u"
+msgstr "Pokuavam %w ka %s (%s) na portu %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "secure connection"
+msgstr "sigurna konekcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "connection"
+msgstr "konekcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:165
+#, c-format
+msgid "Attempting to 'bounce' on proxy %s on port %u (protocol %s)"
+msgstr "Pokuavam 'skok' na proksi %s na portu %u (protokol %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:194
+#, c-format
+msgid "Using cached proxy IP address (%s)"
+msgstr "Koristim keiranu IP adresu proksija (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:237
+#, fuzzy
+msgid "Unable to look up the IRC proxy hostname: Can't start the DNS slave"
+msgstr ""
+"Ne mogu da pronadjem ime hosta IRC proksija: Ne mogu da pokrenem DNS slave"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:265
+msgid "Resuming direct server connection"
+msgstr "Nastavljam direktno konektovanje na server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:248
+#, fuzzy, c-format
+msgid "Looking up the proxy hostname (%s)..."
+msgstr "Traim ime hosta za proksi (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:261
+msgid "Can't find the proxy IP address: %Q"
+msgstr "Ne mogu da na�m IP adresu proksija: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:271
+#, fuzzy
+msgid "Proxy hostname resolved to %Q"
+msgstr "Ime hosta proksija pronadjeno kao %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:284
+#, fuzzy
+msgid "Proxy %Q has a nickname: %Q"
+msgstr "Proksi %s ima nadimak: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:322
+#, c-format
+msgid "Using cached server IP address (%s)"
+msgstr "Koristim keiranu IP adresu servera (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:354
+#, fuzzy
+msgid "Unable to look up the server hostname: Can't start the DNS slave"
+msgstr ""
+"Ne mogu da pronadjem ime hosta IRC servera: Ne mogu da pokrenem DNS slave"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:359
+#, fuzzy, c-format
+msgid "Looking up the server hostname (%s)..."
+msgstr "Traim ime hosta za irc server (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:373
+msgid "Can't find the server IP address: %Q"
+msgstr "Ne mogu da na�m IP adresu servera: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:380
+#, fuzzy
+msgid "If this server is an IPv6 one, try /server -i %Q"
+msgstr "Ako je ovaj server IPV6, probajte /server -i %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:390
+#, fuzzy
+msgid "Server hostname resolved to %Q"
+msgstr "Ime hosta servera prona�no kao %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:400
+#, fuzzy
+msgid "Real hostname for %Q is %Q"
+msgstr "Stvarno ime hosta za %s je %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:414
+#, fuzzy
+msgid "Server %Q has a nickname: %Q"
+msgstr "Server %s ima nadimak: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:468
+msgid "The specified bind address (%Q) is not valid"
+msgstr "Specifi�a bind adresa (%Q) nije validna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:473
+msgid ""
+"The specified bind address (%Q) is not valid (the interface it refers to "
+"might be down)"
+msgstr ""
+"Specifi�a bind adresa (%Q) nije validna (interfejs izgleda da je otkazao)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:493
+#, fuzzy, c-format
+msgid "The system-wide IPv6 bind address (%s) is not valid"
+msgstr "Sistemsko globalno IPV6 povezivanje adrese (%s) nije vae�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:500
+#, fuzzy, c-format
+msgid ""
+"The system-wide IPv6 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+"Sistemsko globalno IPV6 povezivanje adrese (%s) nije vae�: izgleda da je "
+"interfejs pao"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:522
+#, fuzzy, c-format
+msgid "The system-wide IPv4 bind address (%s) is not valid"
+msgstr "Sistemsko globalno IPV4 povezivanje adrese (%s) nije vae�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:529
+#, fuzzy, c-format
+msgid ""
+"The system-wide IPv4 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr ""
+"Sistemsko globalno IPV4 povezivanje adrese (%s) nije vae�: izgleda da je "
+"interfejs pao"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:230
+#, fuzzy
+msgid "Channel operators"
+msgstr "Operatori kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:231
+#, fuzzy
+msgid "Voiced users"
+msgstr "voiced korisnici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:232
+#, fuzzy
+msgid "Half-operators"
+msgstr "Operatori kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:233
+#, fuzzy
+msgid "Ban masks"
+msgstr "maske zabrana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:234
+#, fuzzy
+msgid "Color free (no ANSI colors)"
+msgstr "bez boje (nema ANSI boja)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:235
+#, fuzzy
+msgid "Ban exception masks"
+msgstr "maske izuzetaka zabrane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:236
+#, fuzzy
+msgid "Invite exception masks or forbid /INVITE"
+msgstr "maske izuzetka poziva ili odbij /INVITE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:237
+#, fuzzy
+msgid "Secret"
+msgstr "tajno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:238
+#, fuzzy
+msgid "Private"
+msgstr "privatno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:239
+#, fuzzy
+msgid "Topic change restricted"
+msgstr "ograni�na promena naslova (topic-a)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:240
+#, fuzzy
+msgid "Invite only"
+msgstr "samo pozvani"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:241
+#, fuzzy
+msgid "No external messages"
+msgstr "nema spoljnih poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:242
+#, fuzzy
+msgid "Anonymous or protected user"
+msgstr "anonimni ili zati�ni korisnici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:243
+#, fuzzy
+msgid "Quiet or channel owner"
+msgstr "tiho ili vlasnik kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:244
+#, fuzzy
+msgid "Limited number of users"
+msgstr "ograni�n broj korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:245
+#, fuzzy
+msgid "Key"
+msgstr "klju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:246
+#, fuzzy
+msgid "Moderated"
+msgstr "moderisano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:247
+#, fuzzy
+msgid "Registered"
+msgstr "registrovano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:248
+#, fuzzy
+msgid "Censor swear words"
+msgstr "cenzurisane re�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:249
+msgid "Impossible to speak and change nick if not authenticated with NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:250
+msgid "Impossible to change nick if not authenticated with NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:251
+#, fuzzy
+msgid "Only registered nicks can join"
+msgstr "samo registrovani nadimci mogu da u�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:252
+#, fuzzy
+msgid "No kicks able (unless U-Line)"
+msgstr "nije mogu� isteravanje (kick) (osim U-Line)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:253
+msgid "IRC-Op only channel"
+msgstr "Kanal samo za IRC-Opove"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:254
+#, fuzzy
+msgid "Server/Network/Tech Admin only channel"
+msgstr "Kanal samo za Server Admine | Admine Mree | Admine Podu�vanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:255
+#, fuzzy
+msgid "Forbid /KNOCK"
+msgstr "odbi /KNOCK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:256
+#, fuzzy
+msgid "Strip colors"
+msgstr "uske boje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:257
+#, fuzzy
+msgid "Redirect on channel full"
+msgstr "preusmeri ako je kanal pun"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:258
+#, fuzzy
+msgid "Forbid channel CTCPs"
+msgstr "odbi CTCP kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:259
+#, fuzzy
+msgid "User-operators OR Auditorium: /NAMES and /WHO show only ops"
+msgstr "auditorijum : /NAMES i /WHO pokazuje samo operatore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:260
+msgid "Only 7-bit letters in nicknames allowed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:261
+msgid "Impossible to use both 7-bit and 8-bit letters in nicknames"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:270
+#, fuzzy
+msgid "o: IRC operator (OPER)"
+msgstr "o: IRC operator (OPER)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:271
+#, fuzzy
+msgid "O: Local IRC operator (LOCOP)"
+msgstr "O: lokalni irc operator (LOCOP)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:272
+#, fuzzy
+msgid "i: Invisible"
+msgstr "i: nevidljiv"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:273
+#, fuzzy
+msgid "w: Recipient for WALLOPS messages"
+msgstr "w: primalac WALLOPS poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:274
+#, fuzzy
+msgid ""
+"r: User with restricted connection (or recipient for messages about rejected "
+"bots)"
+msgstr ""
+"r: korisnik sa ograni�nom konekcijom (ili primalac poruka o odbijenim "
+"botovima)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:275
+#, fuzzy
+msgid "s: Recipient for server notices"
+msgstr "s: prima�serverskih obavetenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:276
+#, fuzzy
+msgid "z: Recipient for oper wallop messages"
+msgstr "z: prima�oper wallop poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:277
+#, fuzzy
+msgid "c: Recipient for cconn messages"
+msgstr "c: prima�cconn poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:278
+#, fuzzy
+msgid "k: Recipient for server kill messages"
+msgstr "k: primalac serverskih kill poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:279
+#, fuzzy
+msgid "f: Recipient for full server notices"
+msgstr "f: primalac za puna serverska obavetenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:280
+#, fuzzy
+msgid "y: Spy :)"
+msgstr "y: pijun :-)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:281
+#, fuzzy
+msgid "d: Obscure 'DEBUG' flag"
+msgstr "d: kori�nje 'DEBUG' zastavice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:282
+#, fuzzy
+msgid "n: Recipient for nick changes"
+msgstr "n: primalac za promenu nadimka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:100
+msgid "Ops... for some reason the link filter object has been destroyed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:138
+msgid "Using filtered IRC protocol: Link filter is \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:143
+msgid "Failed to set up the link filter \"%Q\", will try with plain IRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:202
+#, fuzzy
+msgid "Failed to start the connection: %Q"
+msgstr "Ne mogu da odredim lokalni port"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:368
+#, fuzzy
+msgid "Contacting %Q %s (%s) on port %u"
+msgstr "Kontaktiram %w %s (%s) na portu %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "proxy host"
+msgstr "proksi host"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+#, fuzzy
+msgid "IRC server"
+msgstr "irc server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:375
+#, fuzzy, c-format
+msgid "Low-level transport connection established [%s (%s:%u)]"
+msgstr "Uspostavljena konekcija niskog nivoa transporta [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:379
+msgid "Starting Secure Socket Layer handshake"
+msgstr "Pokrenuto rukovanje Sigurnog Nivoa Priklju�a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Secure proxy connection"
+msgstr "Sigurna proksi konekcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Proxy connection"
+msgstr "Proksi konekcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:387
+#, fuzzy
+msgid "Negotiating relay information"
+msgstr "Informacije relejnog pregovaranja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:390
+#, fuzzy
+msgid "Sent connection request, waiting for acknowledgement"
+msgstr "Poslat zahtev konektovanja, �kam potvr�vanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:393
+#, fuzzy
+msgid "Sent target host data, waiting for acknowledgement"
+msgstr "Poslati podaci eljenom hostu, �kam potvr�vanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:396
+#, fuzzy
+msgid "Sent auth method request, waiting for acknowledgement"
+msgstr "Poslata zahtev za auth metodu, �kam potvr�vanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:399
+#, fuzzy
+msgid "Sent username and password, waiting for acknowledgement"
+msgstr "Poslato ime korisnika i ifra, �kam potvr�vanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:402
+#, fuzzy
+msgid "Sent connection request, waiting for \"HTTP 200\" acknowledgement"
+msgstr "Poslat zahtev za konektovanje, �kam za \"HTTP 200\" potvrdom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:176
+msgid "[SSL]: %Q"
+msgstr "[SSL]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:181
+msgid "[SSL ERROR]: %Q"
+msgstr "[SSL GREKA]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:190
+msgid "[PROXY]: %Q"
+msgstr "[PROKSI]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:200
+msgid "[PROXY ERROR]: %Q"
+msgstr "[PROKSI GREKA]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:207
+msgid "[SOCKET]: %Q"
+msgstr "[PRIKLJU�K]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:212
+msgid "[SOCKET ERROR]: %Q"
+msgstr "[GREKA PRIKLJU�A]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:218
+msgid "[SOCKET WARNING]: %Q"
+msgstr "[UPOZORENJE PRIKLJU�A]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:337
+#, c-format
+msgid "Binding to local address %s"
+msgstr "Ugra�vanje na lokalnu adresu %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:341
+#, c-format
+msgid ""
+"Binding to local address %s failed: the kernel will choose the correct "
+"interface"
+msgstr ""
+"Ugra�vanje na lokalnu adresu %s neuspeno: kernel ce izabrati korektan "
+"interfejs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:637
+msgid "Using HTTP protocol."
+msgstr "Kori�nje HTTP protokola."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:683
+msgid "Using SOCKSV4 protocol."
+msgstr "Kori�nje SOCKSV4 protokola."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:756
+#, fuzzy
+msgid "Using SOCKSv5 protocol."
+msgstr "Kori�nje SOCKSV5 protokola."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:771
+msgid "We can accept auth method 0 (no auth)"
+msgstr "Mi moemo prihvatiti auth metodu 0 (nema auth)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:779
+msgid "We can accept auth method 0 (no auth) or 2 (user/pass)"
+msgstr "Mi moemo prihvatiti auth metodu 0 (nema auth) ili 2 (user/pass)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:958
+msgid "Proxy response: auth OK: access granted"
+msgstr "Odgovor proksija: auth OK: pristup odobren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:993
+msgid "Proxy response: Auth method OK: using method 0 (no auth)"
+msgstr "Odgovor proksija: Auth metoda je OK: kori�na metoda 0 (nema auth)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1000
+msgid "Proxy response: Auth method OK: using method 2 (user/pass)"
+msgstr "Odgovor proksija: Auth metoda je OK: kori�na metoda 2 (user/pass)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1056
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1113
+msgid "Proxy response: target data OK: request granted"
+msgstr "Odgovor proksija: ciljni podaci OK: zahtev je odobren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1153
+msgid "Proxy response: "
+msgstr "Odgovor proksija: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1164
+#, fuzzy
+msgid "Proxy said something about: \n"
+msgstr "Proksi govori neto o \""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1205
+msgid "Server X509 certificate"
+msgstr "Server X509 sertifikat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1209
+msgid "The server didn't provide a certificate"
+msgstr "Server nije obezbedio sertifikat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1223
+msgid "Unable to determine the current cipher"
+msgstr "Ne mogu da ustanovim trenutnu ifru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1768
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1788
+msgid "Partial socket write: packet broken into smaller pieces."
+msgstr "Parcijalni zapis priklju�a: paket razbijen na manje par��."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:60
+#, fuzzy
+msgid "The theme information file does not exist"
+msgstr "Izvorni objekat '%Q' je ne postoje�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:71
+msgid ""
+"This KVIrc executable is too old for this theme (minimum theme engine "
+"version required is %Q while this theme engine has version %s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:80
+#, fuzzy
+msgid "Theme information file is not valid"
+msgstr "Specifi�a bind adresa (%Q) nije validna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:248
+#, fuzzy
+msgid "Failed to load the specified screenshot image"
+msgstr "Ne mogu da otvorim fajl %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:257
+#, fuzzy
+msgid "Invalid option"
+msgstr "Pogreno vreme isteka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:265
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:293
+#, fuzzy
+msgid "Failed to save the screenshot image"
+msgstr "Ne mogu da otvorim fajl %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:117
+#, fuzzy
+msgid "Configure Servers..."
+msgstr "&Podesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:118
+msgid "Allows you to configure the servers and eventually to connect to them"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:128
+#, fuzzy
+msgid "Manage Addons..."
+msgstr "U�tavanje ikona..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:129
+msgid "Allows you to manage the script-based addons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:139
+msgid "Configure Registered Users..."
+msgstr "Registrovani korisnici..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:140
+msgid "Shows a dialog that allows editing the registered user entries"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:150
+#, fuzzy
+msgid "Configure Identity..."
+msgstr "&Podesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:151
+msgid "Allows you to configure nickname, username, avatar etc..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:161
+#, fuzzy
+msgid "Show SocketSpy..."
+msgstr "&pijun priklju�a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:162
+msgid "Shows a window that allows monitoring the socket traffic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:172
+#, fuzzy
+msgid "Get Network Links"
+msgstr "Nova Mrea"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:173
+msgid "Shows a window that allows viewing the network links"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:183
+msgid "Get Channel List"
+msgstr "Lista kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:184
+msgid "Shows a window that allows listing the network channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:194
+msgid "Configure KVIrc..."
+msgstr "Opcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:195
+#, fuzzy
+msgid "Shows the general options dialog"
+msgstr "Pokai dijalog opcija kao toplevel prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:205
+#, fuzzy
+msgid "Configure Theme..."
+msgstr "&Podesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:206
+#, fuzzy
+msgid "Shows the theme options dialog"
+msgstr "Pokai dijalog opcija kao toplevel prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:216
+#, fuzzy
+msgid "Manage Themes..."
+msgstr "&Podesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:217
+msgid "Allows you to manage the themes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:227
+#, fuzzy
+msgid "Customize Toolbars..."
+msgstr "&Alati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:228
+msgid "Shows a window that allows editing script toolbars"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:239
+#, fuzzy
+msgid "Join Channels..."
+msgstr "Ovo nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:240
+msgid "Shows a dialog that allows you joing channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:251
+#, fuzzy
+msgid "Edit Actions..."
+msgstr "U�tavanje opcija..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:252
+msgid "Shows a window that allows editing actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:262
+msgid "Edit Aliases..."
+msgstr "Alijasi..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:263
+msgid "Shows a window that allows editing aliases"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:273
+msgid "Edit Events..."
+msgstr "Doga�ji..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:274
+msgid "Shows a window that allows editing script events"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:284
+msgid "Edit Popups..."
+msgstr "Iska�� meni..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:285
+msgid "Shows a window that allows editing popup menus"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:295
+msgid "Edit Raw Events..."
+msgstr "Sirovi doga�ji..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:296
+msgid "Shows a window that allows editing raw scripting events"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:306
+#, fuzzy
+msgid "New Script Tester"
+msgstr "Centar za skripte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:307
+msgid "Creates an embedded editor for long scripts"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:317
+msgid "Execute Script..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:318
+msgid "Allows executing a KVS script from file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:328
+#, fuzzy
+msgid "Help Index"
+msgstr "Prozor za pomo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:329
+#, fuzzy
+msgid "Shows the documentation index"
+msgstr "Pokai dijalog opcija kao toplevel prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:340
+msgid "Allows subscribing to the KVIrc mailing list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:350
+#, fuzzy
+msgid "KVIrc WWW"
+msgstr "&Pove�j KVIrc przor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:351
+#, fuzzy
+msgid "Opens the KVIrc homepage"
+msgstr "KVIrc po�tna &stranica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:361
+#, fuzzy
+msgid "KVIrc Russian WWW"
+msgstr "KVIrc po�tna &stranica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:362
+#, fuzzy
+msgid "Opens the KVIrc homepage in russian"
+msgstr "KVIrc po�tna &stranica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:372
+msgid "Acquire Screenshot"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:373
+msgid "Acquires a Screenshot of the KVIrc main window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:385
+#, fuzzy
+msgid "Cascade windows"
+msgstr "&Naslai prozore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:386
+msgid "Arranges the MDI windows in a maximized-cascade fashion"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:397
+#, fuzzy
+msgid "Tile windows"
+msgstr "&Terminal prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:398
+msgid "Tiles the MDI windows with the currently selected tile method"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:409
+#, fuzzy
+msgid "Minimize all windows"
+msgstr "M&inimizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:410
+msgid "Minimized all the currently visible MDI windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:421
+#, fuzzy
+msgid "New IRC Context"
+msgstr "&Nov irc kontekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:422
+msgid "Creates a new IRC context console"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:433
+#, fuzzy
+msgid "Quit KVIrc"
+msgstr "&Zavri Kvirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:434
+msgid "Quits KVIrc closing all the current connections"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:448
+#, fuzzy
+msgid "IRC Context Display"
+msgstr "&Nov irc kontekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:449
+msgid "Shows a small display with IRC context informations"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:520
+msgid "Acts as a separator for other items: performs no action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:554
+#, fuzzy
+msgid "Connect/Disconnect"
+msgstr "Konekcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:555
+msgid ""
+"Allows you to connect to a server or to terminate the current connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:628
+msgid "Connect"
+msgstr "Povei se"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:629
+#, fuzzy
+msgid "Abort Connection"
+msgstr "nema konekcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:790
+#, fuzzy
+msgid "Join Channel"
+msgstr "Ovo nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:791
+msgid "Shows a popup menu that allows quickly selecting a channel to join"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:851
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:863
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:896
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:907
+#, fuzzy
+msgid "Other..."
+msgstr "Izm&ena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:834
+#, fuzzy
+msgid "Change Nickname"
+msgstr "Promeni nadimak pri odsutnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:835
+msgid "Shows a popup menu that allows quickly changing the nickname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:883
+#, fuzzy
+msgid "Connect To"
+msgstr "Povei se"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:884
+msgid "Shows a popup menu that allows quickly connecting to a server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:929
+#, fuzzy
+msgid "User Mode"
+msgstr "&Mod korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:930
+msgid "Shows a popup menu that allows quickly changing user modes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:947
+#, fuzzy
+msgid "Wallops (+w)"
+msgstr "w (Wallops)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:949
+#, fuzzy
+msgid "Server Notices (+s)"
+msgstr "s (Obavetenja servera)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:951
+#, fuzzy
+msgid "Invisible (+i)"
+msgstr "i (nevidljivost)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:997
+#, fuzzy
+msgid "Away/Back"
+msgstr "&Odsutnost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:998
+msgid "Allows entering and leaving away state"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1065
+#, fuzzy
+msgid "Enter Away Mode"
+msgstr "&Odsutnost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1066
+#, fuzzy
+msgid "Leave Away Mode"
+msgstr "&Odsutnost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1135
+#, fuzzy
+msgid "Irc Tools"
+msgstr "Irc alati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1136
+msgid "Shows a popup menu with some IRC Tools"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1171
+#, fuzzy
+msgid "Irc Actions"
+msgstr "Akcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1172
+msgid "Shows a popup menu with some IRC Actions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:412
+msgid "KVIrc KVS Script"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:174
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:420
+#, fuzzy
+msgid "Run KVS Script"
+msgstr "Opis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:284
+#, fuzzy
+msgid "URL:IRC Protocol"
+msgstr "Protokol:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:383
+#, fuzzy
+msgid "Open with KVIrc"
+msgstr "KVIrc po�tna &stranica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:436
+#, fuzzy
+msgid "KVIrc Configuration File"
+msgstr "&Sa�vaj podeavanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:453
+#, fuzzy
+msgid "KVIrc Theme Package"
+msgstr "KVIrc po�tna &stranica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:461
+msgid "Install Theme Package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:478
+msgid "KVIrc Addon Package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:486
+msgid "Install Package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:749
+#, c-format
+msgid ""
+"Ops...it looks like I can't load modules on this sytem.\n"
+"I have been looking for the %s library but I haven't been able to load it\n"
+"due to the following error: \"%s\"\n"
+"Aborting."
+msgstr ""
+"Ups... izgleda da ne mogu da u�tam module na ovom sistemu.\n"
+"Gledao sam za %s biblioteku ali nisam u mogu�osti da je u�tam\n"
+"uz prate� greku: \"%s\"\n"
+"Prekidam."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:762
+#, fuzzy
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_begin\" function.\n"
+"Aborting!"
+msgstr ""
+"Ups...izgleda da imate ote�nu distribuciju.\n"
+"Modul za podeavanje nije izvezo \"setup_wizard\" funkciju.\n"
+"Prekidam!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:776
+msgid "Setup aborted"
+msgstr "Podeavanje prekinuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:801
+#, fuzzy
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_finish\" function.\n"
+"Trying to continue anyway..."
+msgstr ""
+"Ups...izgleda da imate ote�nu distribuciju.\n"
+"Modul za podeavanje nije izvezo \"setup_wizard\" funkciju.\n"
+"Prekidam!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:186
+msgid "%Q is on IRC"
+msgstr "\r!n\r%Q\r je na IRC-u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:248
+msgid "%Q has left IRC"
+msgstr "\r!n\r%Q\r je napustio IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:368
+#, fuzzy
+msgid "Notify list: No users to check for, quitting"
+msgstr "Lista obavetenja: nema korisnika za proveru: zaustavljam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:414
+#, fuzzy, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (15 sec)"
+msgstr ""
+"Vreme isteka liste obavetenja (%d sek) je stvarno premalo: resetujem na neto "
+"mnogo prihvatljivije (15 sekundi)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:428
+#, fuzzy
+msgid "Notify list: Notify list empty, quitting"
+msgstr "Lista obavestenja: lista obavetenja je prazna: zaustavljam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:455
+#, fuzzy, c-format
+msgid ""
+"Notify list: ISON delay (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+"ISON kanjenje liste obavetenja (%d sek) je premalo: resetujema na neto mnogo "
+"prihvatljivije (5 sekundi)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:491
+msgid "Notify list: Checking for: %Q"
+msgstr "Lista obavetenja: proveravam za: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:535
+#, fuzzy
+msgid ""
+"Notify list: Hey! You've used ISON behind my back? (I might be confused "
+"now...)"
+msgstr ""
+"Lista obavetenja: hej! koristili ste ISON iza mojih le� ? (sada mogu biti "
+"zbunjen....)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:682
+#, fuzzy
+msgid "registration mask changed, or nickname is being used by someone else"
+msgstr ""
+"\r!n\r%s\r (%s@\r!h\r%s\r) je napustio IRC (registrovana maska je promenjena "
+"ili neko drugi sad koristi njegov pseudonim)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:686
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (registration mask does not match, or nickname is being used "
+"by someone else)"
+msgstr ""
+"Lista obavetenja: \r!n\r%Q\r izgleda da je na vezi , ali maska (%Q@\r!h\r%Q"
+"\r) se ne poklapa (neko drugi koristi njegov pseudonim ili se tvoja "
+"registrovana maska(e) ne poklapa)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:691
+#, fuzzy
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? "
+"(restarting)"
+msgstr ""
+"Lista obavetenja: neo�kivana nedoslednost: baza registrovanih korisnika "
+"modifikovana ? (restartujem)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:698
+msgid ""
+"Notify list: Unexpected inconsistency, expected \r!n\r%Q\r in the registered "
+"user DB"
+msgstr ""
+"Lista obavetenja: neo�kivana nedoslednost: mislim da imamo \r!n\r%Q\r u "
+"re�iku registrovanik korisnika..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:712
+#, fuzzy, c-format
+msgid ""
+"Notify list: USERHOST delay (%d sec) is too short, resetting to something "
+"more reasonable (5 sec)"
+msgstr ""
+"USERHOST kanjenje liste obavetenja (%d sek) je stvarno premalo: resetujem na "
+"neto mnogo prihvatljivije (5 sekundi)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:726
+#, fuzzy
+msgid "Notify list: Unexpected inconsistency, userhost list is empty!"
+msgstr ""
+"Lista obavetenja: neo�kivana nedoslednost: userhost lista je prazna....mhhhh"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:761
+msgid "Notify list: Checking userhost for: %Q"
+msgstr "Lista obavetenja: proveravam userhost za: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:831
+#, fuzzy
+msgid ""
+"Notify list: Hey! You've used USERHOST behind my back? (I might be confused "
+"now...)"
+msgstr ""
+"Lista obavetenja: hej! koristili ste USERHOST iza mojih le� ? (sada mogu "
+"biti zbunjen....)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:836
+#, fuzzy, c-format
+msgid "Notify list: Broken USERHOST reply from the server? (%s)"
+msgstr ""
+"Lista obavetenja: mmmg...primljen prekinut USERHOST odgovor od servera ? (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:860
+msgid ""
+"Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST reply "
+"was received, will recheck in the next loop"
+msgstr ""
+"Lista obavetenja: izgleda da je \r!n\r%Q\r otiao dok sam cekao njegov "
+"USERHOST odgovor, proveri� u slede�m krugu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:931
+msgid "Starting notify list"
+msgstr "Pokre�m listu obavetenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:936
+msgid "No users in the notify list"
+msgstr "Nema korisnika u listi obavetenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:958
+msgid "Notify list: Checking for:%Q"
+msgstr "Lista obavetenja: proveravam za: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1013
+#, fuzzy, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+"Vreme isteka liste obavetenja (%d sek) je stvarno malo: resetujem na neto "
+"mnogo prihvatljivije (5 sekundi)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1139
+msgid "Notify list: Adding watch entries for%Q"
+msgstr "Lista obavetenja: dodajem zapis za pra�nje za %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1171
+msgid "watch entry listing requested by user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1175
+msgid "possible watch list desync"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1185
+#, fuzzy
+msgid "registration mask changed or desync with the watch service"
+msgstr ""
+"\r!n\r%s\r (%s@\r!h\r%s\r) je napustio IRC (traga� registrovana maska "
+"promenjena ili nije sinhronizovana sa traga�'watch' servisom)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1190
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (watch: registration mask does not match, or nickname is "
+"being used by someone else)"
+msgstr ""
+"Lista obavetenja: \r!n\r%Q\r izgleda da je na vezi , ali maska (%Q@\r!h\r%Q"
+"\r) se ne poklapa (traga� neko drugi koristi njegov nadimak ili se vaa "
+"registrovana maska ne poklapa)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1197
+#, fuzzy
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? (watch: "
+"restarting)"
+msgstr ""
+"Lista obavetenja: neo�kivana nedoslednost: modifikovana baza registrovanih "
+"korisnika ? (traga� restartujem)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1207
+msgid "watch entry added by user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1245
+msgid "removed from watch list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1248
+msgid "Notify list: Stopped watching for \r!n\r%Q\r"
+msgstr "Lista obavetenja: zaustavljeno traganje za \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1258
+#, fuzzy
+msgid "watch"
+msgstr "Putanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1264
+msgid "Notify list: \r!n\r%Q\r is offline (watch)"
+msgstr "Lista obavetenja: \r!n\r%Q\r nej na vezi (traga�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1267
+msgid "unmatched watch list entry"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:80
+#, fuzzy
+msgid "commandline::userfriendly"
+msgstr "Nije definisana komandna linija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:94
+#, fuzzy
+msgid "commandline::kvs"
+msgstr "Nije definisana komandna linija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:127
+#, fuzzy
+msgid "You are not connected to a server"
+msgstr "Niste zaka�ni na IRC server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_iconmanager.cpp:372
+#, fuzzy
+msgid "Icon Table"
+msgstr "&Ikone widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:190
+#, fuzzy
+msgid "No "
+msgstr "Ne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:196
+msgid "This module has no version informations: refusing to load it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:204
+msgid ""
+"This module was compiled for a different KVIrc version and can't be loaded"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:232
+msgid "Failed to execute the init routine"
+msgstr "Ne mogu da izvrim init rutinu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:261
+#, c-format
+msgid "Loaded module '%s' (%s)"
+msgstr "U�tan modul '%s' (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:306
+#, c-format
+msgid "Unloaded module '%s'"
+msgstr "Iz�tan modul '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:45
+msgid "This window has no associated irc context"
+msgstr "Ovaj prozor nema odgovaraju� IRC kontekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:50
+#, c-format
+msgid "No such irc context (%d)"
+msgstr "Nema takvog IRC konteksta (%d)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:147
+msgid "Global idle timer must be started before using $my.globalIdle function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:103
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:215
+#, fuzzy
+msgid "Window %Q not found"
+msgstr "Prozor %s nije na�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:108
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:220
+msgid "Missing window id after the 'w' switch"
+msgstr "Nedostaje ID prozora posle 'w' prekida�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:121
+#, fuzzy
+msgid "Can't log to file %Q"
+msgstr "Ne mogu da logujem u fajl %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:123
+msgid "This window has no logging capabilities"
+msgstr "Ovaj prozor nema mogu�ost logovanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:275
+#, fuzzy
+msgid "Window with id '%Q' not found, returning empty string"
+msgstr "Prozor sa ID-om '%s' nije na�n, vra�m prazan znakovni niz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:598
+#, fuzzy
+msgid "Sound file '%Q' not found"
+msgstr "Prozor %s nije na�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:604
+#, fuzzy
+msgid "Unable to play sound '%Q'"
+msgstr "Ne mogu da kopiram %s u %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:615
+msgid "Sorry , I can't find a sound system to use on this machine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:617
+#, fuzzy, c-format
+msgid "Sound system detected to: %s"
+msgstr "Detektovano razdvajanje mrea :%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:141
+msgid "Show at startup"
+msgstr "Pokai na po�tku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:154
+msgid "Did you know..."
+msgstr "Da li ste znali..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:220
+msgid "<b>Can't find any tip... :(</b>"
+msgstr "<b>Ne mogu da nadjem nikakav savet... :-(</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1544
+msgid "%Q algorytm is not supported"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1566
+msgid ""
+"KVIrc is compiled without OpenSSL support. $str.digest function disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2030
+msgid "Invalid argument for ?d escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2034
+msgid "Missing argument for ?d escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2066
+msgid "Invalid argument for ?u escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2070
+msgid "Missing argument for ?u escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2097
+msgid "Invalid argument for ?x escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2101
+msgid "Missing argument for ?x escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2128
+msgid "Invalid argument for ?X escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2132
+msgid "Missing argument for ?X escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2189
+msgid "Invalid argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2193
+msgid "Missing argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:87
+#, fuzzy
+msgid "Show URL List"
+msgstr "URL lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:88
+#, fuzzy
+msgid "Shows the URL list window"
+msgstr "Zatvori ovaj prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:124
+msgid "&Configure"
+msgstr "&Podesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:126
+#, fuzzy
+msgid "Clo&se"
+msgstr "Zatvori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:127
+msgid "&Module"
+msgstr "&Modul"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:130
+msgid "&Load"
+msgstr "&U�taj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:131
+msgid "&Save"
+msgstr "&Sa�vaj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:132
+msgid "&Clear"
+msgstr "&O�sti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:133
+msgid "&List"
+msgstr "&Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:136
+msgid "URL"
+msgstr "URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:137
+msgid "Window"
+msgstr "Prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:138
+msgid "Count"
+msgstr "Broj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:139
+msgid "Timestamp"
+msgstr "Datum i vreme"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:113
+#, fuzzy
+msgid "Warning - KVIrc"
+msgstr "Upozorenje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+#, fuzzy
+msgid "Select an URL."
+msgstr "Izaberi neki URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:115
+msgid "&Remove"
+msgstr "&Ukloni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:269
+msgid "&Find Text"
+msgstr "&Na� tekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:280
+msgid "&Say to Window"
+msgstr "&Kazi u prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+#, fuzzy
+msgid "Window not found."
+msgstr "Prozor nije prona�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:349
+msgid "URL Module Configuration"
+msgstr "URL Konfiguracija Modula"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:356
+msgid "Save URL list on module unload"
+msgstr "Sa�vaj URL listu po iz�tavanju modula"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:360
+msgid "Save columns width on URL list close"
+msgstr "Sa�vaj irinu kolona po zatvaranju URL liste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1187
+#, fuzzy
+msgid "&Cancel"
+msgstr "Poniti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:432
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1328
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:458
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1186
+#, fuzzy
+msgid "&OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:423
+msgid "Enable URL ban list"
+msgstr "Aktiviraj listu URL zabrane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:435
+#, fuzzy
+msgid "&Add Ban"
+msgstr "Dodaj zabranu (ban)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:440
+#, fuzzy
+msgid "&Remove Selected"
+msgstr "Ukloni izabrano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+#, fuzzy
+msgid "URL Ban List"
+msgstr "Lista URL zabrane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+#, fuzzy
+msgid "Select a ban."
+msgstr "Izaberi zabranu (ban)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:797
+#, fuzzy
+msgid "View URL list"
+msgstr "URL lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:49
+#, fuzzy
+msgid "Can't find the window with id '%Q'"
+msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:53
+#, fuzzy
+msgid "The specified window (%Q) is not a channel"
+msgstr "Navedeni prozor (%s) nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:78
+#, fuzzy
+msgid "Destinaion file exists: no copy made"
+msgstr "Odredini fajl postoji: nije napravljena kopija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:83
+#, fuzzy
+msgid "Failed to copy from %Q to %Q"
+msgstr "Ne mogu da kopiram %s u %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:84
+msgid "Either the source doesn't exist or the destination can not be created"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:203
+msgid "Failed to write to file %Q: the destination couldn't be opened"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:244
+msgid "Destination file exists: file not renamed"
+msgstr "Odredini fajl postoji; fajl nije preimenovan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:247
+#, fuzzy
+msgid "Failed to rename %Q to %Q"
+msgstr "Ne mogu da preimenujem %s u %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:281
+#, fuzzy
+msgid "Failed to make the directory %Q"
+msgstr "Ne mogu da napravim direktorijum %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:322
+#, fuzzy
+msgid "Failed to remove the file %Q"
+msgstr "Neuspeno uklanjanje fajla %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:365
+#, fuzzy
+msgid "Failed to remove the directory %Q"
+msgstr "Neuspeno uklanjanje direktorijuma %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:482
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:628
+#, fuzzy
+msgid "The specified directory does not exist '%Q'"
+msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:730
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:824
+#, fuzzy
+msgid "Can't open the file \"%Q\" for reading"
+msgstr "Ne mogu da otvorim fajl \"%s\" za �tanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:746
+#, fuzzy
+msgid "Read error for file %Q"
+msgstr "Greka u �tanju za fajl %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:754
+#, fuzzy
+msgid ""
+"Read error for file %Q (have been unable to read the requested size in 1000 "
+"retries)"
+msgstr ""
+"Greka u �tanju za fajl %s (nisam mogao da pro�tam zahtevanu veli�nu u 1000 "
+"pokuaja)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:920
+#, fuzzy
+msgid "Can't open the file \"%Q\" for writing"
+msgstr "Ne mogu da otvorim fajl %s za upisivanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/index.cpp:473
+msgid "Untitled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+msgid "Indexing help files"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:87
+#, fuzzy
+msgid "Index"
+msgstr "Prozor za pomo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:99
+msgid "Refresh index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:211
+msgid "Full Text Search"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:203
+msgid "Using a wildcard within phrases is not allowed."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:212
+msgid "The closing quotation mark is missing."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:312
+#, fuzzy
+msgid "Help Browser"
+msgstr "&Pomo�(stati�i �ta�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:201
+#, fuzzy
+msgid "Request List"
+msgstr "Zahtevaj listu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:207
+#, fuzzy
+msgid "Stop list download"
+msgstr "Ne mogu da odredim lokalni port"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:211
+#, fuzzy
+msgid ""
+"<center><b>/LIST command parameters:</b><br>Many servers accept special "
+"parameters that allow you to filter the returned entries.<br>Commonly, "
+"masked channel names (*kvirc*) are accepted as parameters, as well as "
+"strings like <b>c&lt;n</b> or <b>c&gt;n</b> where <b>n</b> is the minimum or "
+"maximum of users on the channel.</center>"
+msgstr ""
+"/LIST parametri komande\n"
+"Mnogi serveri prihvataju specijalne parametre koji vam omogu�ju da "
+"kontroliete (obi�o redukovane) vra�ne odgovore.\n"
+"Uglavnom , maske imena kanala su o�kivani parametri isto kao i stringovi\n"
+"nalik \"c<n\" ili \"c>n\" gde je 'n' minimum ili maksimum korisnika na "
+"kanalu."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:220
+msgid "Users"
+msgstr "Korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:221
+msgid "Topic"
+msgstr "Naslov"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:262
+#, fuzzy
+msgid "Sent list request, waiting for reply..."
+msgstr "Poslat zahtev za listu: �kam odgovor..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:265
+#, fuzzy
+msgid "Cannot request list: No active connection"
+msgstr "Ne mogu da zahtevam listu: nema aktivne konekcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:389
+msgid "Stopping the list download..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:276
+#, fuzzy
+msgid "Cannot stop list download, no active connection."
+msgstr "Ne mogu da zahtevam listu: nema aktivne konekcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:125
+#, fuzzy, c-format
+msgid "Connected to %s (%s)"
+msgstr "Povezan na %s:%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:293
+#, fuzzy
+msgid "List cannot be requested: Not connected to a server"
+msgstr "Niste zaka�ni na IRC server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:316
+#, fuzzy, c-format
+msgid "Channel List [IRC Context %u]"
+msgstr "Lista kanala [IRC Kontekst %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:319
+#, fuzzy, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel List</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Lista kanala</b></font> <font color=\"%s\">[IRC "
+"Kontekst %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:326
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel list</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Lista kanala</b></font> <font color=\"%s\">[IRC "
+"Kontekst %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:342
+msgid "You cannot export an empty list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:350
+#, fuzzy
+msgid "Channel list for %Q - %Q"
+msgstr "Mod kanala za \r!c\r%Q\r je %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:353
+#, fuzzy
+msgid "Channel list"
+msgstr "Kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:382
+#, fuzzy
+msgid "Choose filename"
+msgstr "Izaberi ime konfiguracionog fajla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:356
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:383
+#, fuzzy
+msgid "Configuration files (*.kvc)"
+msgstr "Direktorijum podeavanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:398
+msgid "Reset"
+msgstr "Resetuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:435
+msgid "Channels list download finished"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:472
+msgid "Processing list: %Q"
+msgstr "Obra�jem listu %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/libkvilist.cpp:63
+msgid "List window alread open for this IRC context"
+msgstr "Prozor liste ve�otvoren za ovaj IRC kontekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:70
+#, fuzzy
+msgid "Terminal"
+msgstr "&Terminal prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:73
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:77
+#, fuzzy, c-format
+msgid "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+msgstr "<nobr><font color=\"%s\"><b>Terminal emulator</b></font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:59
+msgid "Terminal emulator"
+msgstr "Terminal emulator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:63
+msgid "Close this window"
+msgstr "Zatvori ovaj prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:91
+msgid "Can't create the terminal emulation part"
+msgstr "Ne mogu da kreiram deo terminal emulatora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:96
+msgid "Can't retrieve the terminal emulation factory"
+msgstr "Ne mogu da preuzmem fabriku za emulaciju terminala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:95
+#, fuzzy
+msgid "KVIrc"
+msgstr "&Pove�j KVIrc przor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:98
+#, fuzzy
+msgid "Context"
+msgstr "Povei se"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:155
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:100
+#, fuzzy
+msgid "Away"
+msgstr "&Odsutnost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:102
+msgid "&Configure KVIrc..."
+msgstr "&Opcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:104
+#, fuzzy
+msgid "&About KVIrc"
+msgstr "O &KVIrc-u..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:109
+#, fuzzy
+msgid "Un&dock"
+msgstr "&Pove�j"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:168
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:112
+msgid "Ctrl+Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:143
+msgid "Nothing is happening..."
+msgstr "Nita se ne deava..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:285
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:144
+msgid "Just idling..."
+msgstr "Samo neaktivan..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:145
+msgid "Dum de dum de dum..."
+msgstr "Dum dum dum..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:146
+#, fuzzy
+msgid "Hey man... do something!"
+msgstr "Hej �ve�...radi neto!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:147
+msgid "Umpf!"
+msgstr "Umpf!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:148
+msgid "Silence speaking"
+msgstr "Tihi razgovor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:149
+#, fuzzy
+msgid "Are ya here?"
+msgstr "Da li si ovde ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:150
+#, fuzzy
+msgid "The world has stopped?"
+msgstr "Svet je zaustavljen ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:151
+#, fuzzy
+msgid "Everything is all right"
+msgstr "Sve je u redu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:152
+msgid "idle()"
+msgstr "neaktivnost()"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:153
+#, fuzzy
+msgid "It's so cold here..."
+msgstr "Tako je hladno ovde...."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:295
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:154
+#, fuzzy
+msgid "Do not disturb... watching TV"
+msgstr "Ne uznemiravaj....gledam TV"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:155
+msgid "Just vegetating"
+msgstr "Upravo vegetiram"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:156
+#, fuzzy
+msgid "Hey... are ya sure that your network is up?"
+msgstr "Hej...da li si siguran da ti je mrea podignuta ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:298
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:157
+msgid "Seems like the world has stopped spinning"
+msgstr "Izgleda da je svet prestao da se okre�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:299
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:158
+msgid "This silence is freaking me out!"
+msgstr "Tiina me �dno tera napolje!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:300
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:159
+msgid "Mieeeeeowww!"
+msgstr "Mijaoooooooo!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:301
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:160
+msgid "idle idle idle idle!"
+msgstr "Mirno mirno mirno!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+#, fuzzy
+msgid "Hide Window"
+msgstr "&Terminal prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+#, fuzzy
+msgid "Show Window"
+msgstr "&Kazi u prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:428
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:260
+#, fuzzy
+msgid "Away on all"
+msgstr " odsutnost) na "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:263
+msgid "Back on all"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:450
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:282
+msgid "Back on %1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:453
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:285
+#, fuzzy
+msgid "Away on %1"
+msgstr " odsutnost) na "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1238
+msgid "Alias"
+msgstr "Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1217
+#, fuzzy
+msgid "No item selected"
+msgstr "Nema izabranih stavki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:232
+msgid "Rename"
+msgstr "Preimenuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:236
+#, fuzzy
+msgid "Edit the alias or namespace name"
+msgstr "Ime alijasa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+#, fuzzy
+msgid "Add Alias"
+msgstr "Dodaj novi alijas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:429
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Add Namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:440
+#, fuzzy
+msgid "Remove Selected"
+msgstr "Ukloni izabrano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:449
+#, fuzzy
+msgid "Export Selected..."
+msgstr "Ukloni ovaj alijas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:455
+#, fuzzy
+msgid "Export Selected in singles files..."
+msgstr "Ukloni ovaj alijas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:462
+#, fuzzy
+msgid "Export All..."
+msgstr "Ukloni ovaj alijas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:470
+#, fuzzy
+msgid "Find In Aliases..."
+msgstr "Alijasi..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:476
+msgid "Collapse All Namespaces"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:508
+msgid "Find In Aliases"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:509
+msgid ""
+"Please enter the text to be searched for. The matching aliases will be "
+"highlighted."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+#, fuzzy
+msgid "Alias Export"
+msgstr "Ime alijasa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#, fuzzy
+msgid "There is not selection!"
+msgstr "&Uklju�/isklju� widget traenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:615
+#, fuzzy
+msgid "The file \"%Q\" exists. Do you want to replace it ?"
+msgstr ""
+"Fajl %s ve�pstoji.\n"
+"Prepisati ga ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#, fuzzy
+msgid "Replace file"
+msgstr "odgovoreno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#, fuzzy
+msgid "Yes to All"
+msgstr "Izaberi sve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "There exported file would be empty: cowardly refusing to write it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:786
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:411
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1133
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:398
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:745
+#, fuzzy
+msgid "Choose a Filename - KVIrc"
+msgstr "Izaberi fajl za parseovanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+#, fuzzy
+msgid "Write Failed - KVIrc"
+msgstr "Izaberi fajl za parseovanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#, fuzzy
+msgid "Unable to write to the alias file."
+msgstr "Neuspeno pisanje u fajl %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:793
+msgid "Do you really want to remove the alias \"%Q\" ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:795
+msgid "Do you really want to remove the namespace \"%Q\" ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:797
+msgid "Please note that all the children items will be deleted too."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#, fuzzy
+msgid "Remove item"
+msgstr "Ukloni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:875
+#, fuzzy
+msgid "Missing Alias Name"
+msgstr "Nedostaje ime promenljive"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:876
+msgid "You must specify a valid name for the alias"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:877
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:890
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:904
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:915
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:946
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:959
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:973
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1128
+msgid "Ok, Let me try again..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:888
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:902
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:913
+msgid "Bad Alias Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:944
+#, fuzzy
+msgid "Missing Namespace Name"
+msgstr "Nedostaje ime tajmera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:945
+msgid "You must specify a valid name for the namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:957
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:971
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:982
+msgid "Bad Namespace Name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:958
+msgid ""
+"Namespace names can contain only letters, digits, underscores and '::' "
+"namespace separators"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:972
+msgid ""
+"Stray ':' character in namespace name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:983
+msgid "Found an empty namespace in namespace name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+#, fuzzy
+msgid "Please enter the name for the new alias"
+msgstr "Nema korisnika u listi obavetenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Please enter the name for the new namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+#, fuzzy
+msgid "Rename Alias"
+msgstr "Ukloni ovaj alijas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+#, fuzzy
+msgid "Please enter the new name for the alias"
+msgstr "Izaberi ime za hit listu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+#, fuzzy
+msgid "Rename Namespace"
+msgstr "Pravo Ime: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Please enter the new name for the namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1126
+#, fuzzy
+msgid "Alias already exists"
+msgstr "DCC: Fajl ve�postoji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1139
+msgid "This name is already in use. Please choose another one."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1138
+#, fuzzy
+msgid "Namespace already exists"
+msgstr "DCC: Fajl ve�postoji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1140
+msgid "Ok, let me try again..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1227
+#, fuzzy
+msgid "Namespace"
+msgstr "Tip poruke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1332
+#, fuzzy
+msgid "Alias Editor"
+msgstr "Ime alijasa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:62
+#, fuzzy
+msgid "Join Channels"
+msgstr "Ovo nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:183
+msgid "Name"
+msgstr "Naziv"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:86
+#, fuzzy
+msgid "Password"
+msgstr "Lozinka:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:641
+#, fuzzy
+msgid "&Join"
+msgstr "U�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:108
+#, fuzzy
+msgid "Show this window after connecting"
+msgstr "Prikai posle konekcije na server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:163
+#, fuzzy
+msgid "Recent Channels"
+msgstr "&Skoranji kanali"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:182
+#, fuzzy
+msgid "Registered Channels"
+msgstr "Registrovani korisnici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:133
+#, fuzzy
+msgid "Choose the file to share"
+msgstr "Izaberi fajlove za slanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:178
+msgid "No such channel/netmask entry in the database"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:198
+#, fuzzy
+msgid "Registered channel list:"
+msgstr "Nedostaje lista kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:208
+#, fuzzy, c-format
+msgid "Channel: %c%s@%s"
+msgstr "Kanali: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:213
+#, fuzzy, c-format
+msgid " Property: %s=%s"
+msgstr " Vlasnitvo: %s=%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:220
+#, fuzzy, c-format
+msgid "Total %d channels"
+msgstr "Napusti sve kanale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:86
+#, fuzzy
+msgid "Property Editor"
+msgstr "Vlasnitvo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:101
+msgid "Property"
+msgstr "Vlasnitvo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:102
+msgid "Value"
+msgstr "Vrednost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:111
+msgid "&New"
+msgstr "&Novi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:215
+#, fuzzy
+msgid "Mask Editor"
+msgstr "Ime alijasa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:219
+msgid ""
+"Insert a mask for this user.<br>It can contain the wildcard characters '*' "
+"and '?'."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:230
+#, fuzzy
+msgid ""
+"<center>This the <b>nickname</b> that will match this user, default value is "
+"the registered name.</center>"
+msgstr "<center>Ovo je <b>ime hosta</b> trenutno izabranog servera.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:241
+#, fuzzy
+msgid ""
+"<center>This the <b>username</b> that will match this user. <b>*</b> will "
+"match any username.</center>"
+msgstr "<center>Ovo je <b>ime hosta</b> trenutno izabranog servera.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:252
+#, fuzzy
+msgid ""
+"<center>This the <b>hostname</b> that will match this user. <b>*</b> will "
+"match any hostname.</center>"
+msgstr "<center>Ovo je <b>ime hosta</b> trenutno izabranog servera.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:333
+#, fuzzy
+msgid "Registered User Entry"
+msgstr "Registrovan korisnik:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:145
+msgid "Name:"
+msgstr "Naziv:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:345
+#, fuzzy
+msgid "Comment:"
+msgstr "Izvri"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:355
+msgid "Masks:"
+msgstr "Maske:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:216
+#, fuzzy
+msgid "&Add..."
+msgstr "Dodaj..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:377
+msgid "&Edit"
+msgstr "Izm&ena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:385
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:414
+msgid "Identity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:393
+#, fuzzy
+msgid "Notify when user is online"
+msgstr "lista obavetenja ulasci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:396
+#, fuzzy
+msgid "Notify nicknames:"
+msgstr "Nickname (nadimak):"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:401
+msgid "<center>You can enter a space separated list of nicknames.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:426
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:383
+#, fuzzy
+msgid "Avatar"
+msgstr "Avatar slika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:433
+#, fuzzy
+msgid "Use custom color in userlist"
+msgstr "Pokai srazmernu avatar sliku u listi korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:441
+#, fuzzy
+msgid "All Properties..."
+msgstr "Podeavanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:448
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:231
+msgid "Properties"
+msgstr "Podeavanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:458
+#, fuzzy
+msgid "Enable ignore for this user"
+msgstr "Omogu� ignorisanje za NOTICE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:460
+#, fuzzy
+msgid "Ignore features"
+msgstr "Adresa interfejsa (ili ime)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:465
+#, fuzzy
+msgid "Ignore query-messages"
+msgstr "ignorisana poruka korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:468
+#, fuzzy
+msgid "Ignore channel-messages"
+msgstr "li�a privatna poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:471
+#, fuzzy
+msgid "Ignore notice-messages"
+msgstr "ignorisana poruka korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:474
+#, fuzzy
+msgid "Ignore ctcp-messages"
+msgstr "ignorisana poruka korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:477
+#, fuzzy
+msgid "Ignore invites"
+msgstr "ignorisano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:480
+#, fuzzy
+msgid "Ignore DCCs"
+msgstr "ignorisano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:486
+#, fuzzy
+msgid "Ignore"
+msgstr "ignorisano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:94
+#, fuzzy
+msgid "Notify disabled"
+msgstr "Lista obavetenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:96
+#, fuzzy
+msgid "Notify as: "
+msgstr "Lista obavetenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:105
+#, fuzzy
+msgid "No comment set"
+msgstr "Nije navedena komanda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:107
+#, fuzzy
+msgid "Comment: "
+msgstr "Izvri"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:176
+#, fuzzy
+msgid "Registered Users - KVIrc"
+msgstr "Registrovani korisnici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:317
+#, fuzzy
+msgid "Flags"
+msgstr "Filter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:192
+msgid ""
+"<center>This is the list of registered users. KVIrc can automatically "
+"recognize and associate properties to them.<br>Use the buttons on the right "
+"to add, edit and remove entries. The \"notify\" column allows you to quickly "
+"add users to the notify list. Notify list fine-tuning can be performed by "
+"editing the entry properties.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:208
+msgid "Add (Wizard)..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:211
+msgid "Add a registered user by means of a user-friendly wizard."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:219
+msgid "Open the edit dialog to create a new user entry."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:223
+#, fuzzy
+msgid "&Add Group..."
+msgstr "Dodaj..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:226
+#, fuzzy
+msgid "Adds a new group"
+msgstr "Dodaj nov iska�� meni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:234
+#, fuzzy
+msgid "Remove the currently selected entries."
+msgstr "<center>Ovo je <b>ime hosta</b> trenutno izabranog servera.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:239
+#, fuzzy
+msgid "&Edit..."
+msgstr "Izm&ena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:243
+msgid "Edit the first selected entry."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:250
+msgid "Export To..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:254
+msgid ""
+"Export the selected entries to a file.<br>All the data associated with the "
+"selected registered users will be exported.<br>You (or anyone else) can "
+"later import the entries by using the \"Import\" button."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:259
+#, fuzzy
+msgid "Import From..."
+msgstr "U�tavanje ikona..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:262
+msgid ""
+"Import entries from a file exported earlier by the \"export\" function of "
+"this dialog."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:399
+#, fuzzy
+msgid "Group name:"
+msgstr "Naziv iska��g menija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:442
+msgid "Move to group"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:483
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:486
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:487
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:491
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:690
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_useridentity.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:962
+#, fuzzy
+msgid "Default"
+msgstr "predefinisano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:674
+#, fuzzy
+msgid "No entries selected."
+msgstr "Nema izabranih stavki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:687
+#, fuzzy
+msgid "Can't open file %Q for writing."
+msgstr "Ne mogu da otvorim fajl %s za upisivanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:772
+#, fuzzy
+msgid "Can't export the registered users database: Write error."
+msgstr "Ne mogu da izvezem databazu registrovanih korisnika: greka u pisanju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:793
+#, fuzzy, c-format
+msgid "Can't open file %s for reading."
+msgstr "Ne mogu da otvorim fajl %s za �tanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:804
+#, fuzzy, c-format
+msgid "The file %s doesn't appear to be a valid registered users database."
+msgstr ""
+"Fajl %s ne izgleda da ce da bude validna databaza registrovanih korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:811
+#, fuzzy, c-format
+msgid "The file %s contains an invalid registered users database version."
+msgstr "Fajl %s sadri pogrenu verziju databaze registrovanih korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:892
+#, fuzzy
+msgid "Can't import the registered users database: Read error."
+msgstr "Ne mogu da uvezem databazu registrovanih korisnika: greka u �tanju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:78
+#, fuzzy
+msgid "User Registration Wizard - KVIrc"
+msgstr "akcija korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:89
+msgid ""
+"<p>Welcome to the user registration wizard.<br>This process allows you to "
+"add an IRC user to the database and set properties for that user. KVIrc will "
+"be (hopefully) able to recognize the user, add him to the notify list, and "
+"display the associated avatar.<br><br>First of all, you must insert an "
+"<b>entry name or real name</b> for the user you're going to register. The "
+"name will be used to identify the database entry and has no specific "
+"requirements, it can be a given name, nickname, or just some text to remind "
+"you of the real person.<br>Examples: \"George W Bush\", \"Dubya\".\n"
+"</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:97
+#, fuzzy
+msgid "Step 1: Entry Name"
+msgstr "Stvarno ime"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:112
+msgid ""
+"<p>A registered user is identified by one or more <b>IRC masks</b>.<br>A "
+"mask must be in the following form:<br><b>nickname!username@hostname</"
+"b><br>and can contain wildcard characters '*' and '?'. Be careful in "
+"choosing the masks, as they are the only way to verify the identity of a "
+"registered user.<br><br>You can enter at most two masks here, if you wish to "
+"add more masks, use the \"<b>Edit</b>\" button in the Registered Users "
+"dialog. You must enter at least one mask.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:170
+msgid "Step 2: Mask Selection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:182
+msgid ""
+"<p>If you want to store an avatar image for this user, you can set it here. "
+"KVIrc will show the avatar in the userlist next to the user's nickname."
+"<br>An avatar can be in any supported image format (PNG is recommended). "
+"Keep in mind that KVIrc stores avatars in memory and has to resize them to "
+"fit in the userlist, thus it's better to use small, low-resolution images.</"
+"p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:190
+#, fuzzy
+msgid "Store an avatar for this user"
+msgstr "Postavi zadnji avatar kao predefinisani za registrovanog korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:195
+msgid "Step 3: Avatar Selection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:206
+msgid ""
+"<p>If you want to be notified when this user is online or goes offline, you "
+"must specify the list of nicknames that KVIrc will look for.<br><br>You can "
+"enter at most two nicknames here, if you wish to add more nicknames, use the "
+"\"<b>Edit</b>\" button in the Registered Users dialog.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:215
+#, fuzzy
+msgid "Add this user to the notify list"
+msgstr "Nema korisnika u listi obavetenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:342
+msgid "Nickname:"
+msgstr "Nickname (nadimak):"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:225
+#, fuzzy
+msgid "Nickname 2:"
+msgstr "Nadimak 2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:239
+#, fuzzy
+msgid "Step 4: Notify List"
+msgstr "Lista obavetenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:251
+msgid ""
+"<p>That's it. The user registration has been completed.<br><br>Click "
+"\"<b>Finish</b>\" to close this dialog.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:254
+#, fuzzy
+msgid "Registration Complete"
+msgstr "login operacija kompletna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:695
+msgid "No name specified"
+msgstr "Nije navedeno ime"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:209
+msgid "User already registered: found exact name match"
+msgstr "Korisnik je ve�registrovan: nadjeno tacno ime da se poklapa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:222
+#, fuzzy
+msgid "Mask %Q is already used to identify user %s"
+msgstr "Maska %s je ve�iskori�na da identifikuje korisnika %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:275
+#, fuzzy
+msgid "User not found (%Q)"
+msgstr "Korisnik nije na�n (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:403
+msgid "No mask specified"
+msgstr "Nema navedena maska"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:524
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:708
+#, fuzzy
+msgid "User %Q not found"
+msgstr "Korisnik %s nije prona�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:355
+#, fuzzy
+msgid "Mask %Q already used to identify user %Q"
+msgstr "Maska %s je ve�iskori�na da identifikuje korisnika %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:410
+#, fuzzy
+msgid "Mask %Q not found"
+msgstr "Maska %s nije na�na"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:701
+msgid "No property specified"
+msgstr "Nije navedena osobina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:808
+msgid "Registered users database dump:"
+msgstr "Prikazbaze podataka registrovanih korisnika:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:819
+msgid " User: %c%Q"
+msgstr "Korisnik: %c%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:823
+msgid " Warning: this user has no registration masks"
+msgstr " Upozorenje: ovaj korisnik nema registrovane maske"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:827
+msgid " Mask: %Q!%Q@%Q"
+msgstr " Maska: %Q!%Q@%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:838
+msgid " Property: %Q=%Q"
+msgstr " Vlasnitvo: %Q=%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:841
+msgid " No properties"
+msgstr " Nema svojstava"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:847
+#, c-format
+msgid "Total: %d matching users (of %d in the database)"
+msgstr "Ukupno: %d odgovaraju�h korisnika (od %d u bazi podataka)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:197
+msgid "Manage Script-Based Addons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1155
+#, fuzzy
+msgid "Configure"
+msgstr "&Podesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:225
+#, fuzzy
+msgid "Show Help"
+msgstr "&Pove�j KVIrc przor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:231
+msgid "Uninstall"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:243
+msgid "Install Addon..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:247
+#, fuzzy
+msgid "More Addons..."
+msgstr "Ukloni ovaj alijas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:333
+msgid "Do you really want to uninstall the addon \"%1\" ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+msgid "Confirm addon uninstallation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:354
+msgid "Please select the addon installation file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:144
+msgid "%cAddon id %Q, version %Q%c"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:145
+#, fuzzy
+msgid "Name: %Q"
+msgstr "Naziv:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:67
+#, fuzzy
+msgid "Description: %Q"
+msgstr "Opis: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:152
+#, fuzzy, c-format
+msgid "Total: %d addons installed"
+msgstr "Ukupno hostova %s : %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:192
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:571
+msgid "Uninstalling existing addon version %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:384
+#, fuzzy
+msgid "The addon \"%1\" does not exist"
+msgstr "Izvorni objekat '%Q' je ne postoje�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:238
+msgid "The addon \"%1\" has no configure callback set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:285
+#, fuzzy
+msgid "The addon \"%1\" has no help callback set"
+msgstr "Izvorni objekat '%Q' je ne postoje�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:527
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:377
+msgid "Internal error: call a head-shrinker"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:536
+#, fuzzy
+msgid "The specified version \"%Q\" is not a valid version string"
+msgstr "Specifi�a bind adresa (%Q) nije validna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:542
+#, fuzzy
+msgid "The specified KVIrc version \"%Q\" is not a valid version string"
+msgstr "Specifi�a bind adresa (%s) nije validna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:548
+msgid ""
+"This KVIrc executable is too old to run this addon (minimum version required "
+"is %Q)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:553
+msgid "Attempting to register addon \"%Q\" with version %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:565
+msgid ""
+"The script addon \"%Q\" already exists with version %Q which is higher than %"
+"Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:579
+#, fuzzy
+msgid "Script registration failed"
+msgstr "Neuspeno kreiranje priklju�a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:584
+msgid "Script succesfully registered"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:102
+#, fuzzy, c-format
+msgid "%s (%s) (%s:%u)"
+msgstr "Strana %s%c%s (%c)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:104
+#, fuzzy, c-format
+msgid "%s (%s)"
+msgstr "%s [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:107
+#, c-format
+msgid "%s (%s:%u)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:109
+#, c-format
+msgid "%s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:112
+#, fuzzy, c-format
+msgid "[IDENT]: %s"
+msgstr "[SSL]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:119
+#, fuzzy
+msgid "Shutting down identd service (spontaneous action)"
+msgstr "Nastavljam direktno konektovanje na server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:124
+#, fuzzy
+msgid "Shutting down identd service (requested action)"
+msgstr "Nastavljam direktno konektovanje na server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:225
+#, fuzzy
+msgid "Can't start the ident service : socket() failed"
+msgstr "Ne mogu da postavim sluaju� priklju�k: dodeljivanje neuspeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:231
+#, fuzzy
+msgid "Can't start the ident service : async setting failed"
+msgstr "Ne mogu da postavim sluaju� priklju�k: dodeljivanje neuspeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:237
+msgid "Can't enable the ident service : can't setup the listen address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:243
+#, fuzzy
+msgid "Can't start the ident service : bind() failed"
+msgstr "Ne mogu da postavim sluaju� priklju�k: dodeljivanje neuspeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:249
+#, fuzzy
+msgid "Can't start the ident service : listen() failed"
+msgstr "Ne mogu da postavim sluaju� priklju�k: dodeljivanje neuspeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:263
+msgid "Can't start the ident service on IpV6 : socket() failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:269
+msgid "Can't start the ident service on IpV6 : async setting failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:277
+msgid "Can't enable the ident service on IpV6 : can't setup the listen address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:285
+#, fuzzy
+msgid "Can't start the ident service on IpV6 : bind() failed"
+msgstr "Ne mogu da postavim sluaju� priklju�k: dodeljivanje neuspeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:294
+#, fuzzy
+msgid "Can't start the ident service on IpV6 : listen() failed"
+msgstr "Ne mogu da postavim sluaju� priklju�k: dodeljivanje neuspeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:310
+msgid "Starting identd service (IpV4/V6 on separate namespaces)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:313
+msgid "Starting identd service (IpV4/V6 in IpV6 namespace)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:318
+msgid "Starting identd service (IpV4)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:322
+msgid "Service startup (IpV4)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:412
+#, fuzzy
+msgid "Identd accepting connection"
+msgstr "Prihvati dolaze� konekcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:435
+msgid "Identd socket error : dropping connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:440
+#, fuzzy
+msgid "Identd connection closed by remote host"
+msgstr "Konekciju zatvorio udaljeni host"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:461
+msgid "Identd processing request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:476
+msgid "Empty request (EOT ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:487
+#, fuzzy
+msgid "Dropping connection (request too long)"
+msgstr "Odba�ne mrene konekcije za vreme svla�nja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:500
+msgid "Timed out while waiting for the request : dropping connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/libkvilinks.cpp:74
+msgid "Links window alread open for this IRC context"
+msgstr "Linkovi prozor je ve�otvoren za ovaj IRC kontekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:57
+#, fuzzy
+msgid "Request Links"
+msgstr "Zahtevaj linkove"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:70
+msgid "Link"
+msgstr "Link"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:71
+msgid "Hops"
+msgstr "Hops"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:72
+msgid "Description"
+msgstr "Opis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:90
+msgid "(None)"
+msgstr "(Nijedan)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:112
+#, fuzzy
+msgid "Sent links request, waiting for reply..."
+msgstr "Poslat zahtev za linkove: �kam odgovor..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:115
+#, fuzzy
+msgid "Cannot request links: No active connection"
+msgstr "Ne mogu da zahtevam linkove: nema aktivne konekcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:128
+#, fuzzy
+msgid "Links cannot be requested: Not connected to a server"
+msgstr "Niste zaka�ni na IRC server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:153
+msgid "Links for %Q [IRC Context %u]"
+msgstr "Linkovi za %Q [IRC Kontekst %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:164
+msgid ""
+"<nobr><font color=\"%s\"><b>Links for %Q</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Linkovi za %Q</b></font> <font color=\"%s\">[IRC "
+"Kontekst %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:194
+msgid "Received end of links."
+msgstr "Primljen kraj linkova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:235
+#, fuzzy, c-format
+msgid ""
+"Broken link: Missing parent (%s) for %s (%d hops): %s (used /LINKS <mask> ?)"
+msgstr ""
+"Prekinut link : nedostaje glavni (%s) za %s (%d hops): %s (koriceno /LINKS "
+"<maska> ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:238
+#, fuzzy, c-format
+msgid "%s: Parent link %s"
+msgstr "%s : Mati�i link %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:242
+#, fuzzy
+msgid "Warning: No root link was sent by the server, the stats may be invalid."
+msgstr ""
+"Upozorenje : Nije poslat glavni link od servera : statistika moe biti "
+"pogrena."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:278
+msgid "%c%cLinks for %Q"
+msgstr "%c%cLinkovi za %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+#, fuzzy
+msgid "Total hosts listed"
+msgstr "Ukupno hostova %s : %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+#, fuzzy
+msgid "Total hosts in the network"
+msgstr "u mrei"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:282
+#, fuzzy, c-format
+msgid "Wildcard servers (hubs?): %d"
+msgstr "Divlji serveri (hubovi ?) : %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:283
+#, fuzzy
+msgid "Direct links: %d (~%d.%d %)"
+msgstr "Direktni linkovi : %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:284
+#, fuzzy
+msgid "Close links (1 <= hops <= 3): %d (~%d.%d %)"
+msgstr "Najblii linkovi (1<= skokova <= 3) : %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:285
+#, fuzzy
+msgid "Mid-range links (4 <= hops <= 6): %d (~%d.%d %)"
+msgstr "Srednji rang linkova (4<= skokova <= 6) : %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:286
+#, fuzzy
+msgid "Distant links (7 <= hops): %d (~%d.%d %)"
+msgstr "Daleki linkovi (7 <= skokova) : %d (~%d.%d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:287
+#, fuzzy, c-format
+msgid "Broken (unknown) links: %d"
+msgstr "Prekinutih (nepoznatih) linkova : %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:288
+#, fuzzy, c-format
+msgid "Maximum links per host: %d [%s]"
+msgstr "Maksimum linkova po hostu : %d [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:289
+#, fuzzy, c-format
+msgid "Total links: %d"
+msgstr "Ukupno linkova : %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:290
+#, fuzzy, c-format
+msgid "Maximum hops: %d [%s]"
+msgstr "Maksimum skokova : %d [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:291
+#, fuzzy, c-format
+msgid "Average hops: ~%d.%d"
+msgstr "Prose�ih skokova : ~%d.%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:294
+#, fuzzy
+msgid "Incomplete LINKS result, no stats available"
+msgstr "Parcijalni LINKS rezultat : Nema mogu� statistike"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:747
+msgid "You're not connected to a server"
+msgstr "Niste zaka�ni na IRC server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:404
+#, c-format
+msgid "Processing link: %s"
+msgstr "Obra�no linkova: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:419
+#, fuzzy
+msgid "Broken message syntax, can't extract hops number, assuming 0"
+msgstr ""
+"Prekinuta sintaksa poruke: ne mogu da izdvojim broj skokova, dodeljujem 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:86
+msgid "< &Back"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:87
+#, fuzzy
+msgid "&Next >"
+msgstr "Tekst:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:282
+msgid "Finish"
+msgstr "Zavri"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:164
+#, fuzzy
+msgid ""
+"<p><h2>Welcome :)</h2>This is your first time running this version of KVIrc."
+"<br>This wizard will guide you through the few steps required to complete "
+"the setup.<br><br>If you had a previous version of KVIrc installed, no "
+"worries. You will have a chance to preserve the old configuration.</"
+"p><p>Click \"<b>Next</b>\" to proceed.</p>"
+msgstr ""
+"<h2>Donrodoli :-)</h2><br><br>Upravo ste instalirali novu verziju KVIrc-a i "
+"pokre�te je po prvi put.<br><br>Ovaj �robnjak � Vas voditi kroz nekoliko "
+"koraka potrebnih za kompletiranje setup-a.<br><br>Klikni \"Slede�\" za "
+"nastavak."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:176
+#, fuzzy
+msgid "Welcome to KVIrc"
+msgstr "Dobrodoli"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:187
+#, fuzzy
+msgid ""
+"<p>All of the files in this distribution are covered by the GPL. In human "
+"terms this can be read as follows:<br><ul><li><b>KVIrc is free</b>, use it, "
+"have fun! <b>:)</b></li><li>If you use <b>any</b> part of KVIrc in your own "
+"project, you <b>must</b> release that project under the same license.</li></"
+"ul></p><p>The \"legalese\" version of the license is shown in the box below."
+"</p>"
+msgstr ""
+"Svi fajlovi u ovoj distribuciji su pokriveni GPL licencom.<br> U ljudskim "
+"terminima ovo moe biti shva�no na slede� na�n:<br><ul><li><b>KVIrc je "
+"besplatan</b> , koristite ga i zabavljajte se! <b> :-)</b></li><li>Ako "
+"koristite <b> bilo koji</b> deo KVIrc-a u Vaem li�om projektu MORATE da "
+"izdate taj projekat sa istom licencom</li></ul><br>\"Pravilo\" verzije ove "
+"licence je u boxu ispod.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:203
+#, fuzzy
+msgid ""
+"Oops... can't find the license file.\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+"Ups...ne mogu da pronadjem fajl licence...\n"
+"Fajl MORA biti uklju�n u distribuciju...\n"
+"molim posaljite report na <pragma at kvirc dot net>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:211
+msgid "Dreaded License Agreement"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:215
+#, fuzzy
+msgid "KVIrc Setup"
+msgstr "KVIrc podeavanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:224
+#, fuzzy
+msgid ""
+"<p>Please choose a folder for KVIrc to store its settings and other data, "
+"and another for downloaded files. Make sure that you have permission to "
+"write to both folders.<br><br>The suggested locations are fine in most "
+"cases, so if you don't know what is this about, just click \"<b>Next</b>\"."
+"<br><br>If you had a previous version of KVIrc installed, you can choose the "
+"existing directory for the settings, and your configuration will be "
+"preserved.</p>"
+msgstr ""
+"Morate sad da izaberete direktorijum.<br>KVIrc ce ga koristiti da u njemu "
+"sa�va podeavanja a takodje i svu�ne fajlove.<br>Budite sigurni da imate "
+"dozvolu za pisanje u tom direktorijumu.<br>Savet: izaberite putanju koju �te "
+"biti u mogu�osti da kasnije brzo prona�te<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:234
+#, fuzzy
+msgid "Application Folders"
+msgstr "Fascikla podeavanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:238
+#, fuzzy
+msgid "Store configuration in folder"
+msgstr "Fascikla podeavanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:239
+msgid "Use settings folder from previous installation"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:251
+msgid "Use new settings folder"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:255
+#, fuzzy
+msgid "Settings folder:"
+msgstr "&Podeavanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:281
+#, fuzzy
+msgid "Download files to folder:"
+msgstr "Fascikla podeavanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:304
+msgid "All settings in shared program folder (portable)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:325
+msgid ""
+"Please choose a Nickname.<br><br>Your nickname is the name that other IRC "
+"users will know you by. It can't contain spaces or punctuation. Some IRC "
+"networks will shorten your nickname if it is more than 32 characters long."
+"<br><br>If in doubt, just enter the first nick that comes to mind. You will "
+"be able to change it later in the Identity properties, or with the /NICK "
+"command."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:348
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:353
+#, fuzzy
+msgid "Profile"
+msgstr "Uvod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:355
+#, fuzzy
+msgid "Real name:"
+msgstr "Stvarno ime"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:361
+#, fuzzy
+msgid "Age:"
+msgstr "Tip poruke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:392
+#, fuzzy
+msgid "Unspecified"
+msgstr "Nije navedeno ime"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:405
+#, fuzzy
+msgid "Location:"
+msgstr "obavetenje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:408
+msgid "Languages:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:491
+msgid ""
+"<p>Here you can choose how much KVIrc will integrate with your system."
+"<br><br>The default settings are fine for most users so if you're in doubt "
+"just click \"<b>Next</b>\" and go to the next screen.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:501
+msgid "Desktop Integration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:504
+msgid "Make KVIrc default IRC client"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:508
+msgid "Create desktop shortcut"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:513
+msgid "Import server list from mIRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:727
+#, fuzzy
+msgid "Choose an Old Configuration Folder - KVIrc Setup"
+msgstr "Izaberi fajl za ponudu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:736
+msgid "Do not overwrite folder? - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:737
+msgid ""
+"A folder %1 seems to be not a valid KVIrc settings folder.Do you want to use "
+"it anyway?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:753
+#, fuzzy
+msgid "Choose a Configuration Folder - KVIrc Setup"
+msgstr "Izaberi fajl za ponudu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:764
+#, fuzzy
+msgid "Choose a Download Folder - KVIrc Setup"
+msgstr "Izaberi fajl za ponudu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:933
+msgid "Abort Setup - KVIrc Setup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:934
+msgid ""
+"You have chosen to abort the setup.<br>KVIrc cannot run until you complete "
+"this procedure.<br><br>Do you really wish to abort?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:965
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:996
+#, fuzzy, c-format
+msgid ""
+"Cannot create directory %s.\n"
+"You may not have write permission for that path. Please go back and choose "
+"another directory."
+msgstr ""
+"Ups...ne mogu da napravim direktorijum %s, verovatno nedostaju dozvole za "
+"pisanje negde u putanji. Molim vratite se i izaberite drugi direktorijum."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+#, fuzzy
+msgid "Package saved succesfully"
+msgstr "Prenos uspean"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:80
+msgid "Event"
+msgstr "Doga�j"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1046
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:92
+#, fuzzy
+msgid "&Export All To..."
+msgstr "Ukloni ovaj alijas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:90
+#, fuzzy
+msgid "Edit the event handler name."
+msgstr "U�tavam upravlja�doga�ja...."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:154
+#, fuzzy
+msgid "&Enable Handler"
+msgstr "Omogu� ovaj manipulator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:158
+#, fuzzy
+msgid "&Disable Handler"
+msgstr "Omogu� ovaj manipulator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:162
+#, fuzzy
+msgid "Re&move Handler"
+msgstr "Ukloni ovaj manipulator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:164
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:166
+#, fuzzy
+msgid "&Export Handler To..."
+msgstr "Ukloni ovaj alijas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:171
+#, fuzzy
+msgid "&New Handler"
+msgstr "Dodaj manipulator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:190
+msgid "unnamed"
+msgstr "bezimena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:215
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:250
+msgid "default"
+msgstr "predefinisano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:314
+msgid "none"
+msgstr "nita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:318
+#, c-format
+msgid ""
+"\n"
+"\n"
+"\tEvent:\n"
+"\t\t%s\n"
+"\n"
+"\tParameters:\n"
+"%s"
+msgstr ""
+"\n"
+"\n"
+"\tDoga�j:\n"
+"\t\t%s\n"
+"\n"
+"\tParametri:\n"
+"%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#, fuzzy
+msgid "Unable to write to the event file."
+msgstr "Neuspeno pisanje u fajl %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#, fuzzy
+msgid "Unable to write to the events file."
+msgstr "Neuspeno pisanje u fajl %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:486
+#, fuzzy
+msgid "Event Editor"
+msgstr "Tekstualni editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:77
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:213
+msgid "Item"
+msgstr "Stavka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:80
+msgid "Submenu"
+msgstr "Podmeni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:83
+#, fuzzy
+msgid "External Menu"
+msgstr "Spoljanji meni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:136
+msgid "Label"
+msgstr "Labela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:93
+msgid "### Epilogue ###"
+msgstr "### Zaklju�k ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:94
+msgid "Epilogue"
+msgstr "Zaklju�k"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:97
+msgid "### Prologue ###"
+msgstr "### Uvod ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:98
+msgid "Prologue"
+msgstr "Uvod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:198
+msgid "Popup name"
+msgstr "Naziv iska��g menija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:202
+#, fuzzy
+msgid "Test"
+msgstr "Tester"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:230
+msgid "Text:"
+msgstr "Tekst:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:236
+#, fuzzy
+msgid ""
+"<center><b>Visible text</b><br>May contain identifiers that will be "
+"evaluated at popup call time.<br>For labels, this text can contain also "
+"limited HTML tags.</center>"
+msgstr ""
+"<center><b>Vidljiv tekst</b><br>Moe sadrati identifikatore koji ce biti "
+"vredni za vreme pozivanja popup-a.<br>Za labele ovaj tekst moe imati takodje "
+"ograni�ne html tagove.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:239
+msgid "Condition:"
+msgstr "Uslov:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:245
+msgid ""
+"<center><b>Boolean condition</b><br>Will be evaluated at popup call time in "
+"order to decide if this entry has to be shown.<br>An empty condition "
+"evaluates to true.</center>"
+msgstr ""
+"<center><b>Boolean uslov</b><br>Ovo � biti upotrebljeno u vreme pozivanja "
+"popup-a u slu�ju da treba odlu�ti da li ovaj ulaz treba biti pokazan.<br> "
+"Prazan uslov se tretira kao ta�n (Buulean true).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:248
+msgid "Icon:"
+msgstr "Ikona:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:254
+#, fuzzy
+msgid ""
+"<center><b>Icon identifier</b><br>May be an internal icon ID, an absolute "
+"path or a relative path.<br>Portable scripts should never use absolute paths."
+"</center>"
+msgstr ""
+"<center><b>Identifikator Ikone</b><br>Moe biti ID interne ikone, ili neka "
+"apsolutna ili relativna putanja<br>Prenosiva skripta ne bi trebalo da "
+"koristi apsolutne putanje</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:257
+msgid "External menu:"
+msgstr "Spoljanji meni:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:263
+msgid ""
+"<center><b>External menu name</b><br>This allows to nest externally defined "
+"popup menus. The popup menu with the specified name will be looked up at "
+"menu setup time.</center>"
+msgstr ""
+"<center><b>Ime spoljnog menija</b><br>Ovo omogu�va utedu na definisanju "
+"spoljnih iska�cih menija. Iska�� meni sa navedenim imenom � biti zaklju�n u "
+"setup vremenu menija.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:266
+#, fuzzy
+msgid "Item Id:"
+msgstr "Stvarno ime"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:273
+msgid ""
+"<center><b>Item id</b><br>This will allow you to use delpopupitem later.</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:386
+#, fuzzy
+msgid "New Separator Below"
+msgstr "Nov razdvaja�ispod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:388
+#, fuzzy
+msgid "New Separator Above"
+msgstr "Nov razdvaja�iznad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:391
+#, fuzzy
+msgid "New Separator Inside"
+msgstr "Nov razdvaja�unutar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:396
+#, fuzzy
+msgid "New Label Below"
+msgstr "Nova labela ispod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:398
+#, fuzzy
+msgid "New Label Above"
+msgstr "Nova labela iznad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:401
+#, fuzzy
+msgid "New Label Inside"
+msgstr "Nova labela unutar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:406
+#, fuzzy
+msgid "New Item Below"
+msgstr "Nova stavka ispod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:408
+#, fuzzy
+msgid "New Item Above"
+msgstr "Nova stavka iznad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:411
+#, fuzzy
+msgid "New Item Inside"
+msgstr "Nova stavka unutar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:416
+#, fuzzy
+msgid "New Menu Below"
+msgstr "Nov meni ispod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:418
+#, fuzzy
+msgid "New Menu Above"
+msgstr "Nov meni iznad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:421
+#, fuzzy
+msgid "New Menu Inside"
+msgstr "Nov meni unutar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:426
+#, fuzzy
+msgid "New External Menu Below"
+msgstr "Nov spoljni meni ispod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:428
+#, fuzzy
+msgid "New External Menu Above"
+msgstr "Nov spoljni meni iznad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:431
+#, fuzzy
+msgid "New External Menu Inside"
+msgstr "Nov spoljni meni unutar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:451
+#, fuzzy
+msgid "&Paste Below"
+msgstr "Prenesi ispod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:456
+#, fuzzy
+msgid "Paste Above"
+msgstr "Prenesi iznad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:461
+#, fuzzy
+msgid "Paste Inside"
+msgstr "Prenesi unutar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:473
+#, fuzzy
+msgid "New Menu Prologue"
+msgstr "Nov meni ispod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:481
+#, fuzzy
+msgid "New Menu Epilogue"
+msgstr "Nov meni ispod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1042
+msgid "Popup"
+msgstr "Iska�� meni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1048
+#, fuzzy
+msgid "&Export selected To..."
+msgstr "Izvezi selektovano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1099
+#, fuzzy
+msgid "&New Popup"
+msgstr "Iska�� meni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1105
+#, fuzzy
+msgid "Re&move Popup"
+msgstr "Ukloni ovaj iska�� meni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1112
+#, fuzzy
+msgid "&Export Popup To..."
+msgstr "Iska�� meniji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#, fuzzy
+msgid "Unable to write to the popup file."
+msgstr "Neuspeno pisanje u fajl %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1382
+#, fuzzy
+msgid "Popup Editor"
+msgstr "Naziv iska��g menija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:62
+msgid "%cCore action: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:64
+#, fuzzy
+msgid "%cUser action: %Q"
+msgstr "akcija korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:65
+#, fuzzy
+msgid "Label: %Q"
+msgstr "Labela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:66
+#, fuzzy
+msgid "Category: %Q"
+msgstr "Kategorija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:112
+msgid "The action \"%1\" is disabled"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:259
+#, fuzzy
+msgid "The action \"%1\" does not exist"
+msgstr "Izvorni objekat '%Q' je ne postoje�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:255
+msgid "The action \"%1\" is a core action and cannot be destroyed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:392
+msgid "The switch -l requires -c"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:409
+msgid "The switch -s requires -w with a combination of flags 'c','x' and 'q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:420
+msgid ""
+"The action \"%1\" is already defined as core action and cannot be overridden"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:116
+#, fuzzy
+msgid "Ops.. internal error"
+msgstr "Ups...interna greka ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:125
+#, fuzzy
+msgid "Manage File &Transfers"
+msgstr "Obrii mrtve prenose"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:67
+#, fuzzy
+msgid "Choose Avatar - KVIrc"
+msgstr "Izaberite direktorijum..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:72
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:283
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:358
+msgid "Internal error: I'm not in the user database ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:245
+#, fuzzy
+msgid "Can't set the current avatar to '%Q': failed to start the http transfer"
+msgstr ""
+"Ne mogu da postavim trenutni avatar na '%s' (ne mogu da u�tam sliku): nije "
+"poslata poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:249
+#, fuzzy
+msgid "Can't set the current avatar to '%Q': can't load the image"
+msgstr ""
+"Ne mogu da postavim trenutni avatar na '%s' (ne mogu da u�tam sliku): nije "
+"poslata poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:351
+#, fuzzy
+msgid "Invalid timeout specified, using default"
+msgstr "Pogreno definisan odziv , koristim predefinisano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:389
+#, fuzzy
+msgid "Can't add a file offer for file %Q (huh ? file not readable ?)"
+msgstr "Ne mogu da dodam ponudu fajla za fajl %s (huh ? fajl nije �tljiv ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:396
+#, fuzzy
+msgid "Added %d secs file offer for file %Q (%Q) and receiver %Q"
+msgstr "Dodato %d sekundi ponude fajla za fajl %s (%s) i prima� %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:403
+#, fuzzy
+msgid "Notifying avatar '%Q' to %Q"
+msgstr "Avatar obavetenje '%s' za %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:55
+#, fuzzy
+msgid "&Execute"
+msgstr "Izvri"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:59
+msgid "Params:"
+msgstr "Parametri:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:107
+#, fuzzy
+msgid "Script Tester"
+msgstr "Centar za skripte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:220
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:413
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:543
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:628
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:765
+#, fuzzy
+msgid "The config file with id '%Q' is not open"
+msgstr "Fajl podeavanja sa ID-om '%s' nije otvoren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:538
+#, fuzzy
+msgid ""
+"The config file '%Q' has been changed but is opened as read-only: changes "
+"will be lost"
+msgstr ""
+"Fajl sa podeavanjem '%s' je promenjen ali je otvorn samo za �tanje: promene "
+"ce biti izgubljene"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:583
+#, fuzzy
+msgid "The config file with id '%Q' is read only"
+msgstr "Fajl sa podeavanjima sa ID-om '%s' je samo za �tanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:178
+#, fuzzy
+msgid "Colors"
+msgstr "Zatvori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:255
+#, fuzzy
+msgid "Context sensitive help"
+msgstr "Razlikuj velika i mala slova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1167
+#, fuzzy
+msgid "&Replace"
+msgstr "odgovoreno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:268
+#, fuzzy
+msgid "Find & Repalce"
+msgstr "odgovoreno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1148
+msgid "Word to Find"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1156
+#, fuzzy
+msgid "Replace with"
+msgstr "odgovoreno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1172
+msgid "&Replace in all Aliases"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1176
+#, fuzzy
+msgid "&Findnext"
+msgstr "Na� slede�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1181
+#, fuzzy
+msgid "&Replace(WIP)"
+msgstr "odgovoreno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:227
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:547
+msgid "The specified toolbar doesn't exist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:424
+#, fuzzy
+msgid "No action name/index specified"
+msgstr "Nije navedeno ime opcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:441
+#, fuzzy
+msgid "The action parameter didn't evaluate to an index"
+msgstr "Levi operator nije broj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:455
+#, fuzzy
+msgid "The toolbar does not contain the specified item"
+msgstr "Nije navedeno ime opcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:513
+#, fuzzy
+msgid "The action \"%Q\" doesn't exist"
+msgstr "Fajl podeavanja sa ID-om '%s' nije otvoren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:31
+msgid "Torrent Client"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:361
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:364
+#, fuzzy
+msgid "Standalone Servers"
+msgstr "uske boje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:112
+#, fuzzy
+msgid ""
+"%Q doesn't look like a servers.ini file.\n"
+"Import failed."
+msgstr "%s ne izgleda kao server.ini fajl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:122
+msgid "Choose a servers.ini file"
+msgstr "Izaberi server.ini fajl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:146
+msgid "Remote mIRC servers.ini Import Wizard"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:154
+msgid ""
+"<center><b>Welcome!</b><br><br>This wizard will guide you in the process of "
+"downloading a list of IRC servers. Please click \"<b>Next</b>\" to begin the "
+"operation.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:161
+msgid ""
+"<center>Here you can modify the URL that the list will be downloaded from. "
+"In most cases the default URL is acceptable.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:169
+#, fuzzy
+msgid "URL Selection"
+msgstr "selekcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:173
+msgid "Please wait while the list is being downloaded"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:179
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:195
+msgid "List Download"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:229
+#, fuzzy
+msgid "Failed to start the server list transfer :("
+msgstr "Ne mogu da po�em da sluam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:245
+msgid "File downloaded: processing ..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:255
+msgid "%1 servers imported succesfully"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:257
+#, fuzzy
+msgid "No servers imported"
+msgstr "obavetenje servera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:326
+#, fuzzy
+msgid "Import from servers.ini"
+msgstr "Spoj listu iz server.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:333
+#, fuzzy
+msgid "Import from http://www.mirc.co.uk/servers.ini"
+msgstr "Spoj listu iz server.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lineedit.cpp:372
+#, fuzzy
+msgid "Unknown echo mode %Q"
+msgstr "Nepoznat eho mod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:203
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:359
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:172
+#, fuzzy
+msgid "Widget parameter is not an object"
+msgstr "Naveden prozor nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:230
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:250
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:449
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:485
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:177
+#, fuzzy
+msgid "Widget parameter is not a valid object"
+msgstr "Naveden prozor nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:95
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:263
+msgid "Widget object required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:151
+#, fuzzy
+msgid "Unknown dock area '%Q'"
+msgstr "Nepoznat mod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:321
+#, fuzzy
+msgid "Unknown alignment: '%Q'"
+msgstr "Nepoznato poravnanje: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:373
+#, fuzzy
+msgid "Unknown style: '%Q'"
+msgstr "nepoznata vrsta DCC-a '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:84
+msgid "the toolbar cannot be a parent-widget!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:93
+#, fuzzy
+msgid "The parent-widget isn't a MainWindow."
+msgstr "Trenutni prozor nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:999
+msgid "The array passed as parameter must contain at least 4 elements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1012
+msgid "One of the geometry array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1017
+#, fuzzy
+msgid "One of the geometry array parameters didn't evaluate to an integer"
+msgstr "Levi operator nije broj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:503
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1032
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1500
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1044
+#, fuzzy
+msgid "The first parameter didn't evaluate to an array nor an integer"
+msgstr "Levi operator nije broj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1419
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1476
+msgid "The array passed as parameter must contain at least 2 elements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:451
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:486
+msgid "One of the array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:456
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:491
+#, fuzzy
+msgid "One of the array parameters didn't evaluate to an integer"
+msgstr "Levi operator nije broj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:478
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:804
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:993
+msgid "The array passed as parameter must contain at least 3 elements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:551
+#, fuzzy
+msgid "Unknown orientation"
+msgstr "Nepoznata funkcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:789
+msgid "Pixmap or Widget parameter is not an object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:730
+msgid "Widget or Pixmap required "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:852
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:862
+#, fuzzy
+msgid "Invalid mode '%Q'"
+msgstr "Pogreno vreme isteka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:886
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1701
+#, fuzzy
+msgid "Pixmap parameter is not an object"
+msgstr "Naveden prozor nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:891
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1706
+msgid "Pixmap object required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1027
+msgid ""
+"$setGeometry() requires either an array as first parameter or four integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:813
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1002
+msgid "One of the colors array parameters is empty"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:818
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1007
+#, fuzzy
+msgid "One of the colors array parameters didn't evaluate to an integer"
+msgstr "Levi operator nije broj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1020
+msgid "A string of 6 digits hex is required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:842
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1031
+msgid "Not an hex digits"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1144
+msgid ""
+"$setForegroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1219
+msgid ""
+"$setBackgroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1426
+#, fuzzy
+msgid "One of the move array parameters is empty"
+msgstr "Levi operator nije broj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1431
+#, fuzzy
+msgid "One of the move array parameters didn't evaluate to an integer"
+msgstr "Levi operator nije broj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1438
+msgid "$move() requires either an array as first parameter or two integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1483
+#, fuzzy
+msgid "One of the resize array parameters is empty"
+msgstr "Levi operator nije broj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1488
+#, fuzzy
+msgid "One of the resize array parameters didn't evaluate to an integer"
+msgstr "Levi operator nije broj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1495
+msgid "$resize() requires either an array as first parameter or two integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1528
+#, fuzzy
+msgid "Invalid parameters"
+msgstr "Pogrean parametar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1560
+#, fuzzy
+msgid "Unknown widget flag '%Q'"
+msgstr "Nepoznato poravnanje: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1592
+#, fuzzy
+msgid "Unknown style '%Q'"
+msgstr "nepoznata vrsta DCC-a '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1622
+msgid "No Layout associated to the widget "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:117
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:152
+msgid "Can't add a non-widget object"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1650
+#, fuzzy
+msgid "Parent must be a widget object"
+msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1715
+#, fuzzy
+msgid "Null mask"
+msgstr "Maska fajla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1740
+#, fuzzy
+msgid "Unknown widget attribute '%Q'"
+msgstr "Nepoznato poravnanje: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:382
+#, fuzzy
+msgid "No such line number"
+msgstr "Nema takvog tajmera (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:500
+#, fuzzy
+msgid "Unknown word wrap '%Q'"
+msgstr "Nepoznat operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:519
+msgid "Unknown wrap policy'%Q'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:850
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1039
+msgid "$setColor requires either an array as first parameter or three integers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:975
+#, fuzzy
+msgid "Unknown text format '%Q'"
+msgstr "Nepoznata funkcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1071
+#, fuzzy
+msgid " I can't find the specified file '%Q'."
+msgstr "Ne mogu da na�m multimedijalni fajl %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1078
+#, fuzzy
+msgid " I cannot read the file %Q'."
+msgstr "I ne mogu da otvorim taj fajl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1113
+#, fuzzy
+msgid "Unknown alignment '%Q'"
+msgstr "Nepoznato poravnanje: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1131
+#, fuzzy
+msgid "Unknown auto formatting mode '%Q'"
+msgstr "Nepoznat operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1149
+#, fuzzy
+msgid "Unknown vertical alignment '%Q'"
+msgstr "Nepoznato poravnanje: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:264
+#, fuzzy
+msgid "pix '%Q' doesn't exists"
+msgstr "Fajl podeavanja sa ID-om '%s' nije otvoren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:276
+#, fuzzy
+msgid "Can't add a non - popupmenu object"
+msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:302
+#, fuzzy
+msgid "Doesn't a widget object"
+msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:182
+#, fuzzy
+msgid "I can't find the specified file %Q."
+msgstr "Ne mogu da na�m multimedijalni fajl %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:222
+#, fuzzy
+msgid "Destination parameter is not an object"
+msgstr "Naveden prozor nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:228
+#, fuzzy
+msgid "Destination must be a pixmap object"
+msgstr "Naveden prozor nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:238
+msgid "Area dimensions are out of destination size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:253
+msgid "Pixmap dimensions are out of destination size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:261
+msgid "Offset width area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:266
+msgid "Offset height area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:121
+msgid "The widget must be a child of this hbox"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:191
+msgid "No string parameter given - using empty string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:194
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:214
+#, c-format
+msgid "Item index [%d] is too big - defaulting to $count() - 1 [%d]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:333
+#, fuzzy
+msgid "Invalid insertion Policy %Q"
+msgstr "Pogrean ID tajmera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:136
+#, fuzzy
+msgid "Unknown mode "
+msgstr "Nepoznat mod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:149
+#, fuzzy
+msgid "Unknown segment style "
+msgstr "Nepoznato poravnanje: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_process.cpp:221
+msgid "Process could not be starded."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:279
+#, fuzzy
+msgid "Invalid selection mode '%Q' assuming single"
+msgstr "Pogrean pravac za ovu mainu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:316
+#, fuzzy
+msgid "Unknown text position '%Q'"
+msgstr "Nepoznata funkcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:256
+#, fuzzy
+msgid "Unknown tickmark '%Q'"
+msgstr "Nepoznata komanda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:271
+#, fuzzy
+msgid "Unknown orientation '%Q'"
+msgstr "Nepoznata funkcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:500
+msgid "No socket object specified"
+msgstr "Nije naveden objekat priklju�a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:506
+msgid "Invalid socket object specified (it doesn't inherit from socket)"
+msgstr "Neispravno naveden objekat priklju�a (nije nasle�n od priklju�a)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:518
+msgid "There is no connection to accept!"
+msgstr "Nema konekcije za prihvatanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:591
+#, c-format
+msgid "Value %d for port is out of range (values allowed are from 0 to 65535"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:596
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:87
+msgid "Another connection in progress"
+msgstr "Jo jedna konekcija je u toku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:648
+msgid "No IPV6 support in this executable"
+msgstr "Nema IPV6 podrke u ovom KVIrc izvrnom fajlu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:670
+#, fuzzy
+msgid "Invalid IP address specified ('%Q')"
+msgstr "Pogreno navedena IP adesa (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:89
+msgid "Socket creation failed"
+msgstr "Neuspeno kreiranje priklju�a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:706
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:727
+msgid "Invalid socket address"
+msgstr "Pogrena adresa priklju�a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:714
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:735
+msgid "Bind failure"
+msgstr "Greka u vezivanju (bind)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:745
+msgid "Listen failure"
+msgstr "Sluanje neuspeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:812
+msgid "unknown"
+msgstr "nepoznat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:876
+#, fuzzy
+msgid "Invalid ip address "
+msgstr "Neispravna IP adresa (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:882
+#, fuzzy
+msgid "Invalid ip address (%Q)"
+msgstr "Neispravna IP adresa (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:906
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1013
+msgid "Failed to create the socket"
+msgstr "Ne mogu da napravim priklju�k"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:918
+msgid "Failed to setup a nonblocking socket"
+msgstr "Nisam uspeo da postavim neblokiraju� priklju�k"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:939
+#, fuzzy
+msgid "Connect failure: "
+msgstr "Povezivanje neuspeno: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:967
+msgid "Connect attempt timed out"
+msgstr "Isteklo je vreme za povezivanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:993
+msgid "Can't start the DNS thread"
+msgstr "Ne mogu da pokrenem DNS traganje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:1143
+msgid ""
+"Too much unprocessed incoming data (you've left this socket unmanaged ?)"
+msgstr ""
+"Previe neobra�nih dolaze�h podataka (ostavili ste ovaj priklju�k bez "
+"upravljanja ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:149
+msgid "Error in KVS class implementation: processing aborted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:154
+#, fuzzy
+msgid "Processing aborted"
+msgstr "Obra�jem listu %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:160
+#, c-format
+msgid "Error near line %d, column %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:162
+#, c-format
+msgid "Warning near line %d, column %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:313
+#, fuzzy
+msgid "XML support not available in the Qt library"
+msgstr "Mogu�ost nije dostupna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:491
+#, fuzzy
+msgid "Not a widget object"
+msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:308
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:497
+#, fuzzy
+msgid "Can't find the tab "
+msgstr "Ne mogu da prona�m ikonu '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:522
+#, fuzzy
+msgid "Unknown position 'Q%'"
+msgstr "Nepoznata funkcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:123
+msgid "The widget must be a child of this vbox"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:276
+#, fuzzy
+msgid "Not Enough Parameters"
+msgstr "Nema dovoljno parametara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:142
+msgid "The listviewitem cannot be parentless"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:152
+msgid ""
+"The parent of the listviewitem must be either another listviewitem or a "
+"listview"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:403
+msgid "Pixmap object or image Id required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:413
+msgid ""
+"Error occured: the suitable file '%Q' is not of the correct format or it is "
+"not a valid icon number."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:151
+msgid ""
+"The window identifier preceeded by WinId must be the first object in the "
+"search path"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:167
+#, fuzzy
+msgid "Failed to find one of the wrap path widgets (%Q::%Q)"
+msgstr "Ne mogu da poveem priklju�k"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:176
+#, fuzzy
+msgid "Failed to find the widget to wrap"
+msgstr "Ne mogu da poveem priklju�k"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:119
+msgid "The parent of a layout must be a widget!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:269
+#, fuzzy
+msgid "Invalid resize mode defaulting to Auto"
+msgstr "Neispravan koder '%s': predefiniem u 'adpcm'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:324
+#, fuzzy
+msgid "Unknown alignment"
+msgstr "Nepoznato poravnanje: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:373
+#, fuzzy
+msgid "Unknown orientation: "
+msgstr "Nepoznata funkcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listview.cpp:320
+#, fuzzy
+msgid "Invalid selection mode '%Q'"
+msgstr "Pogrean pravac za ovu mainu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tbrowser.cpp:99
+#, fuzzy
+msgid "I can't find the specified file '%Q'."
+msgstr "Ne mogu da na�m multimedijalni fajl %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:121
+#, fuzzy
+msgid "Can't add a null object"
+msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:128
+msgid ""
+"Invalid object handle passed as parameter (the object is no longer "
+"existing ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:134
+msgid "Object in invalid state"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:140
+msgid "Can't set a non-widget object to be the main widget of a dock window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:146
+msgid "The added widget is not a child of this dock window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:271
+#, fuzzy
+msgid "Invalid dock area specified"
+msgstr "Pogreno navedena IP adesa (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:181
+#, fuzzy
+msgid "Class '%Q' is not definited"
+msgstr "Klasa %s nije definisana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:257
+msgid "Inexisting target object for objects.connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:262
+msgid "Inexisting source object for objects.connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:444
+#, fuzzy
+msgid "The class '%Q' does not exist"
+msgstr "Izvorni objekat '%Q' je ne postoje�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:404
+#, fuzzy
+msgid "Object does not exists"
+msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:557
+msgid "Inexisting target object for objects.disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:562
+msgid "Inexisting source object for objects.disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:608
+#, fuzzy
+msgid "Source is not an object"
+msgstr "Naveden prozor nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:614
+#, fuzzy
+msgid "Destination is not an object"
+msgstr "Naveden prozor nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:625
+msgid "Widget, Image or Pixmap required "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:635
+msgid "Widget or Pixmap required"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:714
+msgid "One o more of background, foreground or destination aren't objects"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:720
+#, fuzzy
+msgid "Pixmap objects required"
+msgstr "Host nije prona�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:743
+msgid "Values for background are out of image size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:748
+msgid "Values for foreground are out of image size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:226
+msgid "Empty filename string"
+msgstr "Prazan string imena fajla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:271
+#, fuzzy
+msgid "No such open mode: '%Q'"
+msgstr "Nema takvog moda otvaranja: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:312
+#, fuzzy
+msgid "File is not open!"
+msgstr "Fajl nije otvoren !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:348
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:406
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:434
+msgid "File is not open !"
+msgstr "Fajl nije otvoren !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:369
+msgid "Argument to long, using only first char"
+msgstr "Argument je preduga�k, koristim samo prvi znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:339
+msgid "Write error occured !"
+msgstr "Dogodila se greka u pisanju !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:352
+msgid "Read error occured !"
+msgstr "Dogodila se greka u �tanju !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:371
+msgid "An error occured !"
+msgstr "Dogodila se greka !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:387
+msgid "Missing both encrypt and decrypt key: at least one is needed"
+msgstr ""
+"Nedostaju oba kriptuju� i dekriptuju� klju�: najmanje jedan je potreban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:168
+msgid "Error 0: Success ?"
+msgstr "Greaka 0: Uspeno ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:169
+msgid "Unsupported crypt mode"
+msgstr "Nepodran mod kriptovanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:170
+msgid "Unsupported direction"
+msgstr "Nepodran pravac"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:171
+msgid "Unsupported key length"
+msgstr "Nepodrana duina klju�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:172
+msgid "Bad key data"
+msgstr "Loi podaci klju�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:173
+msgid "Engine not initialized"
+msgstr "Maina nije inicijalizovana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:174
+msgid "Invalid direction for this engine"
+msgstr "Pogrean pravac za ovu mainu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:175
+msgid "Corrupted message data or invalid decrypt key"
+msgstr "Ote�ni podaci poruke ili pogrean klju�za deifrovanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:52
+msgid "Unknown error"
+msgstr "Nepoznata greka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:184
+msgid "Ops...encrypt cipher not initialized"
+msgstr "Ups...kriptuju� ifra nije inicijalizovana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:420
+msgid "Data buffer too long"
+msgstr "Bafer podataka je preduga�k"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:221
+msgid "Ops...decrypt cipher not initialized"
+msgstr "Ups...dekriptuju� ifra nije inicijalizovana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:277
+msgid "The message is not a hexadecimal string: this is not my stuff"
+msgstr "Poruka nije heksadecimalni znakovni niz: ovo nije moja stvar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:671
+msgid "The message is not a base64 string: this is not my stuff"
+msgstr "Poruka nije base64 znakovni niz: ovo nije moja stvar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:676
+msgid "The message doesn't seem to be encoded with CBC Mircryption"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:712
+#, c-format
+msgid ""
+"Cryptographic engine based on the\n"
+"Advanced Encryption Standard (AES)\n"
+"algorithm called Rijndael.\n"
+"The text is first encrypted with rijndael\n"
+"and then converted to %s notation.\n"
+"The keys used are %d bit long and will be padded\n"
+"with zeros if you provide shorter ones.\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"See the rijndael module documentation\n"
+"for more info on the algorithm used.\n"
+msgstr ""
+"Kriptografska maina bazirana na\n"
+"Advanced Encryption Standard (AES)\n"
+"algoritmu zvanom Rijndael.\n"
+"Tekst je prvo ifrovan sa rijndael\n"
+"a onda konvertovan u %s notaciju.\n"
+"Klju�vi koji su kori�ni su %d bita duga�i i bi� umetnuti\n"
+"sa nulama ako navedete kra� klju�ve.\n"
+"Ako je samo jedan klju�naveden, ova maina\n"
+"� ga koristiti i za ifrovanje i za deifrovanje.\n"
+"Pogledajte dokumentaciju rijndael modula\n"
+"za vie informacija o kori�nom algoritmu.\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:739
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:749
+msgid "hexadecimal"
+msgstr "heksadecimalno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:759
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:779
+msgid "base64"
+msgstr "base64"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:790
+#, fuzzy
+msgid ""
+"Popular cryptographic engine based on the\n"
+"old Blowfish encryption algorithm.\n"
+"The text is first encrypted with Blowfish \n"
+"and then converted to base64 notation.\n"
+"The keys used have variable length and\n"
+"are specified as character strings.\n"
+"You can specify keys long up to 56 bytes (448 bits).\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"This engine works in ECB mode by default:\n"
+"if you want to use CBC mode you must prefix\n"
+"your key(s) with \"cbc:\".\n"
+msgstr ""
+"Kriptografska maina bazirana na\n"
+"Advanced Encryption Standard (AES)\n"
+"algoritmu zvanom Rijndael.\n"
+"Tekst je prvo ifrovan sa rijndael\n"
+"a onda konvertovan u %s notaciju.\n"
+"Klju�vi koji su kori�ni su %d bita duga�i i bi� umetnuti\n"
+"sa nulama ako navedete kra� klju�ve.\n"
+"Ako je samo jedan klju�naveden, ova maina\n"
+"� ga koristiti i za ifrovanje i za deifrovanje.\n"
+"Pogledajte dokumentaciju rijndael modula\n"
+"za vie informacija o kori�nom algoritmu.\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:61
+msgid "Drop here the icons from the toolbars to remove them"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:128
+#, fuzzy
+msgid "ToolBar Properties"
+msgstr "&Alati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:144
+msgid "Icon"
+msgstr "Ikona"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:160
+msgid "Id"
+msgstr "Id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:217
+msgid "Please choose the icon for the ToolBar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+#, fuzzy
+msgid "Invalid ToolBar Label"
+msgstr "Pogrean broj porta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+#, fuzzy
+msgid "The ToolBar Label can't be empty!"
+msgstr "Komanda predstavljanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:256
+msgid "Duplicate ToolBar Id"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:257
+msgid ""
+"The specified ToolBar Id already exists.<br>Would you like KVIrc to assign "
+"it automatically (so it doesn't collide with any other toolbar) or you "
+"prefer to do it manually ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Manually"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+#, fuzzy
+msgid "Automatically"
+msgstr "Automatski prihvati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:278
+#, fuzzy
+msgid "Hide Advanced"
+msgstr "Napredno ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:287
+#, fuzzy
+msgid "Customize Toolbars"
+msgstr "Boja kursora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:296
+#, fuzzy
+msgid "New ToolBar"
+msgstr "Irc Traka sa alatima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:300
+#, fuzzy
+msgid "Delete ToolBar"
+msgstr "Obrii ovo pravilo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:304
+#, fuzzy
+msgid "Edit ToolBar"
+msgstr "Markeri"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:312
+#, fuzzy
+msgid "Export ToolBar"
+msgstr "Irc Traka sa alatima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:373
+msgid "Confirm ToolBar Deletion"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:374
+msgid "Do you really want to delete toolbar \"%1\" ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:397
+#, fuzzy
+msgid "ToolBar Export"
+msgstr "Uklju�/isklju� editor zabrana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:398
+msgid "Do you want the associated actions to be exported with the toolbar ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#, fuzzy
+msgid "Unable to write to the toolbar file."
+msgstr "Neuspeno pisanje u fajl %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:465
+msgid "Please specify the properties for the toolbar \"%1\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:491
+msgid "Please specify the properties for the new toolbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:493
+#, fuzzy
+msgid "My ToolBar"
+msgstr "Irc Traka sa alatima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:63
+#, fuzzy
+msgid "Window with ID '%Q' not found"
+msgstr "Dugme prozora '%s' nije na�no"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:67
+#, fuzzy
+msgid "The specified window (%Q) is not a channel/query/DCC chat"
+msgstr "Navedeni prozor (%s) nije kanal/upit/dcc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:108
+msgid "File not found or empty"
+msgstr "Fajl nije na�n ili je prazan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:114
+msgid "I can't open that file"
+msgstr "I ne mogu da otvorim taj fajl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:122
+msgid "Could not paste file"
+msgstr "Ne mogu da prenesem fajl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:218
+#, fuzzy
+msgid "The specified window (%Q) is not a channel/query/dcc"
+msgstr "Navedeni prozor (%s) nije kanal/upit/dcc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:271
+#, fuzzy
+msgid "Slow-paste ID:%d Window:%Q"
+msgstr "Spor prenos ID:%d Prozor:%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:240
+msgid "Plugin not found. Please check the plugin-name and path."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:247
+#, fuzzy
+msgid "Error while loading plugin."
+msgstr "Greka u u�tavanju modula"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:311
+msgid "This plugin does not export the desired function."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:327
+msgid ""
+"The plugin has no function to free memory. This can result in Memory Leaks!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:209
+#, c-format
+msgid "No environment variable found, please don't use the %% in the request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:482
+#, fuzzy
+msgid "Invalid DCOP parameter syntax"
+msgstr "Pogrean parametar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:495
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:516
+#, fuzzy
+msgid "The specified parameter is not an integer"
+msgstr "Naveden prozor nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:521
+#, fuzzy, c-format
+msgid "Unsupported DCOP parameter type %s"
+msgstr "Nepodran pravac"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:534
+#, fuzzy
+msgid "DCOP call failed"
+msgstr "listen() poziv neuspean"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:599
+msgid "DCOP calls are available only when KDE support is compiled in"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1408
+#, fuzzy, c-format
+msgid "The window with id '%s' does not exist"
+msgstr "Fajl podeavanja sa ID-om '%s' nije otvoren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:851
+msgid "Window type or 'all' expected as first parameter"
+msgstr "Vrsta prozora ili 'all' o�kivano kao prvi parametar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:938
+#, fuzzy
+msgid "Invalid IRC context id '%Q'"
+msgstr "Pogrean ID IRC konteksta '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1045
+#, fuzzy
+msgid "The specified IRC context is not valid: creating a context free window"
+msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1119
+#, fuzzy
+msgid "The specified window is not of type \"userwnd\""
+msgstr "Naveden prozor nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1208
+msgid "Window doesn't have input widget"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1363
+msgid "The encrypt key wasn't a valid hexadecimal string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1377
+msgid "The decrypt key wasn't a valid hexadecimal string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1414
+msgid "Both -n and -m switchess specified, -n takes precedence"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1424
+msgid "No encrypt key specified: can't allocate engine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1446
+#, fuzzy
+msgid "Unknown engine error"
+msgstr "Nepoznata greka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1449
+#, fuzzy
+msgid "Failed to initialize the specified crypt engine: %Q"
+msgstr "Ne mogu da otvorim fajl %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1453
+#, fuzzy
+msgid "The crypt engine \"%Q\" does not exist"
+msgstr "Izvorni objekat '%Q' je ne postoje�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1458
+#, fuzzy
+msgid "This executable has been compiled without crypt support"
+msgstr "Ovaj KVIrc je kompajliran bez SSL podrke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:138
+#, fuzzy
+msgid "Current window is not a channel"
+msgstr "Trenutni prozor nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:87
+#, fuzzy
+msgid "Raw Event"
+msgstr "Sirovi doga�ji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:97
+#, fuzzy
+msgid "Edit the raw event handler name."
+msgstr "U�tavam upravlja�doga�ja...."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:179
+#, fuzzy
+msgid "&Add Raw Event..."
+msgstr "Sirovi doga�ji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+#, fuzzy
+msgid "New Raw Event"
+msgstr "Sirovi doga�ji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "Enter the numeric code of the message (0-999)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#, fuzzy
+msgid "Unable to write to the raw event file."
+msgstr "Neuspeno pisanje u fajl %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+#, fuzzy
+msgid "Unable to write to the raw events file."
+msgstr "Neuspeno pisanje u fajl %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:512
+#, fuzzy
+msgid "Raw Editor"
+msgstr "Tekstualni editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:219
+msgid "A really lame text transformation engine :D"
+msgstr "Maina za tranformisanje stvarno lamerskog teksta :D"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:229
+#, fuzzy
+msgid "A really lame text transformation engine: Light Version."
+msgstr "Maina za tranformisanje stvarno lamerskog teksta :D"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:82
+#, c-format
+msgid "Socket Spy [IRC Context %u]"
+msgstr "pijun Priklju�a [IRC Kontekst %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:92
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Socket Spy</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>pijun Priklju�a</b></font> <font color=\"%s\">"
+"[IRC Kontekst %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:112
+msgid "Socket open"
+msgstr "Priklju�k otvoren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:117
+msgid "Socket closed"
+msgstr "Priklju�k zatvoren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:149
+#, fuzzy
+msgid "Internal unique name for the action"
+msgstr "Izaberi ime fajla za skriptu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:151
+#, fuzzy
+msgid "Label:"
+msgstr "Labela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:155
+msgid ""
+"Visible name for this action.<br>This string will be displayed to the user "
+"so it is a good idea to use $tr() here"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:166
+#, fuzzy
+msgid "Action code"
+msgstr "Fascikla podeavanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:168
+#, fuzzy
+msgid "Code"
+msgstr "Cpp mod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:174
+#, fuzzy
+msgid "Category:"
+msgstr "Kategorija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:178
+msgid "Choose the category that best fits for this action"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:180
+msgid "Description:"
+msgstr "Opis:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:184
+msgid ""
+"Visible short description for this action.<br>This string will be displayed "
+"to the user so it is a good idea to use $tr() here"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:186
+#, fuzzy
+msgid "Small Icon:"
+msgstr "Pokai ikone poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:194
+msgid ""
+"The small icon associated to this action.<br>It will appear at least in the "
+"popup menus when this action is inserted.<br>It should be 16x16 pixels."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:200
+#, fuzzy
+msgid "Big Icon:"
+msgstr "U�tavanje ikona..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:209
+msgid ""
+"The big icon associated to this action.<br>It will appear at least in the "
+"toolbar buttons when this action is inserted.<br>It should be 32x32 pixels."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:215
+msgid "Key Sequence:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:219
+msgid ""
+"Optional keyboard sequence that will activate this action.<br>The sequence "
+"should be expressed as a string of up to four key codes separated by commas "
+"eventually combined with the modifiers \"Ctrl\",\"Shift\",\"Alt\" and \"Meta"
+"\".<br>Examples of such sequences are \"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl+X,"
+"Ctrl+C\" ..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:240
+#, fuzzy
+msgid "Needs IRC Context"
+msgstr "&Nov irc kontekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:242
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window belongs to an irc context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:250
+#, fuzzy
+msgid "Needs IRC Connection"
+msgstr "&Novo konektovanje na"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:252
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window has an active IRC connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:260
+#, fuzzy
+msgid "Enable at Login"
+msgstr "Omogu� ifrovanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:261
+msgid ""
+"Check this option if this action should be enabled also during the login "
+"operations (so when the logical IRC connection hasn't been estabilished yet)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:265
+msgid "Enable Only in Specified Windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:267
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is of a specified type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:271
+#, fuzzy
+msgid "Enable in Console Windows"
+msgstr "&Terminal prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:272
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a console"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:277
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:299
+msgid "Only If There Are Selected Users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:278
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:300
+msgid ""
+"This will enable the action only if there are selected users in the active "
+"window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:282
+#, fuzzy
+msgid "Enable in Channel Windows"
+msgstr "&Naslai prozore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:283
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:293
+#, fuzzy
+msgid "Enable in Query Windows"
+msgstr "Auto-uklju�nje logovanja u upit prozoru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:294
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:304
+#, fuzzy
+msgid "Enable in DCC Chat Windows"
+msgstr "&Naslai prozore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:305
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a dcc chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:627
+#, fuzzy
+msgid "Action"
+msgstr "Akcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:680
+#, fuzzy
+msgid "New Action"
+msgstr "Akcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:683
+#, fuzzy
+msgid "Delete Actions"
+msgstr "selekcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:686
+#, fuzzy
+msgid "Export Actions..."
+msgstr "Ukloni ovaj alijas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+#, fuzzy
+msgid "Unable to write to the actions file."
+msgstr "Neuspeno pisanje u fajl %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:823
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:824
+#, fuzzy
+msgid "My Action"
+msgstr "Akcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:825
+#, fuzzy
+msgid "Put here a short description of your action"
+msgstr ""
+"<center>Klikni ovde za editovanje naprednih opcija za ovaj server...</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:925
+#, fuzzy
+msgid "Action Editor"
+msgstr "Ime alijasa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:938
+msgid "Apply"
+msgstr "Primeni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:63
+msgid "Outgoing traffic"
+msgstr "Odlaze� saobra�j"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:67
+msgid "Incoming traffic"
+msgstr "Dolaze� saobra�j"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_crypt.cpp:160
+msgid "Invalid crypt engine"
+msgstr "Pogrena maina za kriptovanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:296
+msgid "Directory"
+msgstr "Direktorijum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:315
+msgid "Socket"
+msgstr "Priklju�k"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:332
+msgid "Fifo"
+msgstr "Fifo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:349
+msgid "Block device"
+msgstr "Blok ure�j"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:366
+msgid "Char device"
+msgstr "Karakter ure�j"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:429
+msgid "Octet stream (unknown)"
+msgstr "Oktet strim (nepoznat)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_osinfo.cpp:413
+#, fuzzy
+msgid "Unknown "
+msgstr "Nepoznato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:181
+#, fuzzy
+msgid "The specified network has no server entries"
+msgstr "Navedeni prozor nema pripadaju�h dugmadi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:239
+msgid ""
+"The server specification seems to be in the net:<string> but the network "
+"couln't be found in the database"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:261
+msgid ""
+"The server specification seems to be in the id:<string> form but the "
+"identifier coulnd't be found in the database"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:71
+#, fuzzy
+msgid "Aborted"
+msgstr "Prekini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:96
+#, fuzzy
+msgid "No request"
+msgstr "DCC zahtev"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:141
+msgid "No filename specified for the \"StoreToFile\" processing type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:160
+msgid "Invalid URL: Missing hostname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:167
+#, fuzzy
+msgid "Unsupported protocol %1"
+msgstr "Nepodran pravac"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:189
+#, fuzzy
+msgid "Unable to start the DNS lookup"
+msgstr "Ne mogu da pokrenem DNS traganje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:194
+#, c-format
+msgid "Looking up host %s"
+msgstr "Traim host %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:210
+#, fuzzy
+msgid "Host %s resolved to %Q"
+msgstr "Ime hosta proksija pronadjeno kao %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:246
+#, fuzzy
+msgid "Unable to start the request slave thread"
+msgstr "Ne mogu da pokrenem DNS traganje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:251
+#, fuzzy
+msgid "Contacting host %Q on port %u"
+msgstr "Kontaktiram host %s na portu %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:271
+#, fuzzy
+msgid "Connection established, sending request"
+msgstr "Povei na izabrano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:322
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:51
+msgid "Success"
+msgstr "Uspeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:429
+msgid "Failed to rename the existing file, please rename manually and retry"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:447
+#, fuzzy
+msgid "Can't open file \"%Q\" for writing"
+msgstr "Ne mogu da otvorim fajl %s za upisivanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:497
+#, fuzzy, c-format
+msgid "Invalid HTTP response: %s"
+msgstr "Neispravna IP adresa (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:503
+#, c-format
+msgid "Received HTTP response: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:628
+msgid "Stream exceeding maximum length"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:661
+msgid "Header too long: exceeded 4096 bytes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:710
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:852
+msgid "Stream exceeded expected length"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:798
+msgid "Protocol error: invalid chunk size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:818
+msgid "Chunk header too long: exceeded 4096 bytes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:987
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1193
+msgid "Operation timed out"
+msgstr "Isteklo vreme za operaciju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1003
+#, fuzzy
+msgid "Unexpected SSL error"
+msgstr "Neo�kivani znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1016
+msgid "Failed to enter non blocking mode"
+msgstr "Ne mogu da u�m u ne-blokiraju� mod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1021
+msgid "Invalid target address"
+msgstr "Pogrena odredina adresa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1056
+#, fuzzy
+msgid "Failed to initialize the SSL context"
+msgstr "Ne mogu da otvorim fajl %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1058
+#, fuzzy
+msgid "Failed to initialize the SSL connection"
+msgstr "Ne mogu da odredim lokalni port"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1075
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:99
+msgid "Remote end has closed the connection"
+msgstr "Udaljeni krajnji je zatvorio konekciju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1087
+#, fuzzy
+msgid "Unrecoverable SSL error during handshake"
+msgstr "Fatalna greka DNS servera (sruen ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1272
+msgid "Operation timed out (while selecting for read)"
+msgstr "Operacija istekla (dok je birano za �tanje)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1382
+#, fuzzy
+msgid "This KVIrc executable has no SSL support"
+msgstr "Ovaj KVIrc nema IPV6 podrku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1147
+msgid "Back"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:268
+#, fuzzy
+msgid "Next"
+msgstr "Tekst:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:168
+#, fuzzy
+msgid "%1 bytes"
+msgstr "0 bajtova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:172
+msgid "%1 KB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:176
+msgid "%1 MB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:181
+msgid "%1 GB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:185
+msgid "%1 TB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:620
+msgid "Internal error"
+msgstr "Interna greka."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:54
+msgid "Unknown command"
+msgstr "Nepoznata komanda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:55
+msgid "Missing closing brace"
+msgstr "Nedostaje zatvorena zagrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:56
+msgid "Unexpected end of command in string"
+msgstr "Neo�kivan kraj komande u nizu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:57
+msgid "Unexpected end of command in dictionary key"
+msgstr "Neo�kivan kraj komande u klju� re�ika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:58
+msgid "Switch dash without switch letter"
+msgstr "Kosa kontrolna crta bez kontrolnog slova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:59
+msgid "Unknown function"
+msgstr "Nepoznata funkcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:60
+msgid "Unexpected end of command in parenthesis"
+msgstr "Neo�kivan kraj komande u zagradama"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:61
+msgid "Unexpected end of command in function parameters"
+msgstr "Neo�kivan kraj komande u funkcijskim parametrima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:62
+msgid "Missing variable name"
+msgstr "Nedostaje ime promenljive"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:63
+msgid "Variable or identifier expected"
+msgstr "O�kivana promenljiva ili identifikator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:64
+msgid "Left operand is not a number"
+msgstr "Levi operator nije broj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:65
+msgid "Multiple operations not supported for numeric operators"
+msgstr "Visetruke operacije nisu podrane za numeri�e operatore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:67
+msgid "Modulo by zero"
+msgstr "Mnoenje sa nulom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:68
+msgid "Right operand is not a number"
+msgstr "Desni operator nije broj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:69
+msgid "Unterminated expression (missing ')' ?)"
+msgstr "Nedovren izraz (nedostaje ')' ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:70
+msgid "Unterminated subexpression (Parenthesis mismatch)"
+msgstr "Besprekidni podizraz (Neodgovaraju� zagrade)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:71
+msgid "Unexpected character"
+msgstr "Neo�kivani znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:73
+msgid "No host to resolve"
+msgstr "Nema hosta za reavanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:74
+msgid "(DNS Internal) Unsupported address family"
+msgstr "(DNS Interni) Nepodrana vrsta adrese"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:75
+msgid "Valid name but the host has no IP address"
+msgstr "Ispravno ime ali host nema IP adresu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:76
+msgid "Unrecoverable nameserver error (crashed ?)"
+msgstr "Fatalna greka DNS servera (sruen ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:77
+msgid "Dns temporaneous fault (try again)"
+msgstr "DNS privremena greka (probaj ponovo)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:78
+msgid "(DNS Internal) Bad flags"
+msgstr "(DNS Interni) Loe zastavice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:79
+msgid "(DNS Internal) Out of memory"
+msgstr "(DNS Interni) Nema vie memorije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:80
+msgid "(DNS Internal) Service not supported"
+msgstr "(DNS Interni\b) Servis nije podran"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:81
+msgid "Unknown node (host not found)"
+msgstr "Nepoznat �or (host nije prona�n)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:82
+msgid "(DNS Internal) Unsupported socket type"
+msgstr "(DNS Interni) Nepodran tip priklju�a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:83
+msgid "Dns query failed"
+msgstr "DNS upit neuspean"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:84
+msgid "This KVIrc executable has no IPV6 support"
+msgstr "Ovaj KVIrc nema IPV6 podrku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:85
+msgid "Host not found"
+msgstr "Host nije prona�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:86
+msgid "(DNS Internal) IPC failure (slave data corrupted)"
+msgstr "(DNS Interni) IPC greka (ote�ni podaci)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:88
+msgid "Invalid IP address"
+msgstr "Pogrena IP adresa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:90
+msgid "Failed to put the socket in non blocking mode"
+msgstr "Nisam uspeo da stavim priklju�k u ne blokiraju� mod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:91
+msgid "Bad file descriptor"
+msgstr "Lo opisiva�fajla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:92
+msgid "Out of address space"
+msgstr "Van adresnog prostora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:93
+msgid "Connection refused"
+msgstr "Konekcija odbijena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:94
+msgid "Kernel networking panic"
+msgstr "Kernelov mreni deo je u panici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:95
+msgid "Connection timed out"
+msgstr "Isteklo je vreme za povezivanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:96
+msgid "Network is unreachable"
+msgstr "Mrea je nedostupna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:97
+msgid "Broken pipe"
+msgstr "Prekinuto prosle�vanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:98
+msgid "Invalid proxy address"
+msgstr "Neispravna adresa proksija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:100
+msgid "Invalid irc context id"
+msgstr "Pogrean ID irc konteksta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:101
+msgid "Error in loading module"
+msgstr "Greka u u�tavanju modula"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:102
+msgid "No such module command"
+msgstr "Nema takve komande modula"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:103
+msgid "No such module function"
+msgstr "Nema takve funkcije modula"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:104
+msgid "Left operand is not a dictionary reference"
+msgstr "Levi operand nije referenca re�ika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:105
+msgid "Right operand is not a dictionary reference"
+msgstr "Desni operand nije referenca re�ika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:106
+msgid "Missing object class name"
+msgstr "Nedostaje ime klase objekta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:107
+msgid "No such object class"
+msgstr "Nema takve klase objekta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:108
+msgid "No such object"
+msgstr "Nema takvog objekta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:109
+msgid "No such object function"
+msgstr "Nema takve funkcije objekta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:110
+msgid "Invalid left operand"
+msgstr "Neispravan levi operand"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:111
+msgid "Not enough parameters"
+msgstr "Nema dovoljno parametara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:112
+msgid "Integer parameter expected"
+msgstr "Celobrojni parametar je o�kivan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:113
+msgid "Invalid parameter"
+msgstr "Pogrean parametar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:114
+msgid "No such file"
+msgstr "Nema takvog fajla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:115
+msgid "Open parenthesis expected"
+msgstr "Otvorena iskaz o�kivan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:116
+msgid "Open brace expected"
+msgstr "Otvorena zagrada o�kivana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:117
+msgid "Can't kill a builtin class"
+msgstr "Ne mogu da ubijem ugra�nu klasu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:118
+msgid "The SOCKSV4 protocol lacks IpV6 support"
+msgstr "SOCKSV4 protokol nedostaje u IpV6 podrci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:119
+msgid "Unrecognized proxy reply"
+msgstr "Nepoznat odgovor proksija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:120
+msgid "Proxy response: auth failed: access denied"
+msgstr "Odgovor proksija: autentifikacija neuspena: zabranjen pristup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:121
+msgid "Proxy response: No acceptable auth method: request rejected"
+msgstr ""
+"Odgovor proksija: Nema prihvatljive metode autorizacije: zahtev odbijen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:122
+msgid "Proxy response: request failed"
+msgstr "Odgovor proksija: zahtev neuspean"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:123
+msgid "Proxy response: ident failed"
+msgstr "Odgovor proksija: pogrean ident"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:124
+msgid "Proxy response: ident not matching"
+msgstr "Odgovor proksija: ident se ne poklapa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:125
+msgid "Proxy response: general SOCKS failure"
+msgstr "Odgovor proksija: Opta SOCKS greka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:126
+msgid "Proxy response: connection not allowed"
+msgstr "Odgovor proksija: konekcija nije dozvoljena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:127
+msgid "Proxy response: network unreachable"
+msgstr "Odgovor proksija: mrea nedostupna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:128
+msgid "Proxy response: host unreachable"
+msgstr "Odgovor proksija: host nedostupan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:129
+msgid "Proxy response: connection refused"
+msgstr "Odgovor proksija: Konekcija odbijena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:130
+msgid "Proxy response: TTL expired"
+msgstr "Odgovor proksija: TTL istekao"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:131
+msgid "Proxy response: command not supported"
+msgstr "Odgovor proksija: komanda nije podrana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:132
+msgid "Proxy response: address type not supported"
+msgstr "Odgovor proksija: tip adrese nije podran"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:133
+msgid "Proxy response: invalid address"
+msgstr "Odgovor proksija: pogrena adresa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:134
+msgid "Invalid port number"
+msgstr "Pogrean broj porta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:135
+msgid "Socket not connected"
+msgstr "Priklju�k nije povezan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:136
+msgid "Insufficient resources to complete the operation"
+msgstr "Nedovoljno resursa za kompletiranje operacije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:137
+msgid "Can't setup a listening socket : bind failed"
+msgstr "Ne mogu da postavim sluaju� priklju�k: dodeljivanje neuspeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:138
+msgid "Can't resolve the localhost name"
+msgstr "Ne mogu da reim ime lokalnog hosta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:139
+msgid "Unsupported image format"
+msgstr "Nepodran format slike"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:140
+msgid "Can't open file for appending"
+msgstr "Ne mogu da otvof\brim fajl za dodavanje\b"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:542
+msgid "Can't open file for writing"
+msgstr "Ne mogu da otvorim fajl za upisivanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:142
+msgid "File I/O error"
+msgstr "Ulazno-izlazna greka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:143
+msgid "Acknowledge error"
+msgstr "Primljena greka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:982
+msgid "Can't open file for reading"
+msgstr "Ne mogu da otvorim fajl za �tanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:145
+msgid "Can't send a zero-size file"
+msgstr "Ne mogu da poaljem prazan fajl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:146
+msgid "Missing popup name"
+msgstr "Nedostaje ime iska��g menija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:147
+msgid "'item', 'popup', 'label' or 'separator' keyword expected"
+msgstr "'item', 'popup', 'label' ili 'separator' su o�kivane re�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:148
+msgid "Self modification not allowed"
+msgstr "Automodifikovanje nije dozvoljeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:149
+msgid "UNUSED"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:150
+msgid "Feature not available"
+msgstr "Mogu�ost nije dostupna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:151
+msgid "Unexpected characters in array index"
+msgstr "Neo�kivani karakteri u nizu indeksa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:152
+msgid "Unexpected end in expression"
+msgstr "Neo�kivan kraj u izrazu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:153
+msgid "Unexpected end in array index"
+msgstr "Neo�kivani kraj u nizu indeksa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:154
+msgid "Connection thru HTTP proxy failed"
+msgstr "Konekcija kroz HTTP proksi neuspena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:155
+msgid "Case , match , regexp , default or break keyword expected"
+msgstr "Case , match , regexp , default ili break su o�kivane klju�e re�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:156
+msgid "Access denied"
+msgstr "Pristup odbijen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:157
+msgid "Address already in use"
+msgstr "Adresa se ve�koristi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:158
+msgid "Can't assign the requested address"
+msgstr "Ne mogu da dodelim traenu adresu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:159
+msgid "Connection reset by peer"
+msgstr "Konekcija resetovana od peer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:160
+msgid "Host unreachable (no route to host)"
+msgstr "Host nedostupan (nema rute ka hostu)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:161
+msgid "Variable expected"
+msgstr "Promenljiva o�kivana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:162
+msgid "Invalid array index: positive integer expected"
+msgstr "Pogrean niz indeksa: o�kivan pozitivni ceo broj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:163
+msgid "listen() call failed"
+msgstr "listen() poziv neuspean"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:164
+msgid "This executable has been compiled without SSL support"
+msgstr "Ovaj KVIrc je kompajliran bez SSL podrke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:165
+msgid "Secure Socket Layer error"
+msgstr "Grea Sigurnog Nivo-a Priklju�a (SSL-a)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:166
+msgid "Slash (/) character expected"
+msgstr "Kosa crta (/) je o�kivani znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:167
+msgid "Unknown string manipulation operation"
+msgstr "Nepoznata operacija manipulacije znakom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:168
+#, fuzzy
+msgid "Operation aborted"
+msgstr "Konektovanje prekinuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:169
+#, fuzzy
+msgid "Unexpected token"
+msgstr "Neo�kivani znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:170
+msgid "Scope object already defined (unexpected @)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:171
+msgid "There is no $this pointer in this scope (unexpected @)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:140
+#, fuzzy
+msgid "Operation cancelled"
+msgstr "Konektovanje prekinuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:170
+#, fuzzy
+msgid "File write error"
+msgstr "Ulazno-izlazna greka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:176
+#, fuzzy
+msgid "File read error"
+msgstr "Ulazno-izlazna greka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:324
+msgid "Packaging file %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:779
+#, fuzzy
+msgid "Failed to open a source file for reading"
+msgstr "Ne mogu da otvorim fajl za �tanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:817
+#, fuzzy
+msgid "Compression library initialization error"
+msgstr "Izvravam prethodnu inicijalizaciju..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:394
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:828
+msgid "Compression library error"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:465
+#, fuzzy
+msgid "Compression library internal error"
+msgstr "Ups...interna greka ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:485
+msgid "Error while compressing a file stream"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:526
+#, fuzzy
+msgid "Creating package..."
+msgstr "Kreiram interne strukture..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:527
+msgid "Writing package header"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:571
+msgid "Writing informational fields"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:597
+msgid "Writing package data"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:659
+#, fuzzy
+msgid "The file specified is not a valid KVIrc package"
+msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:668
+msgid ""
+"The package has an invalid version number, it might have been created by a "
+"newer KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:714
+msgid "Invalid info field: the package is probably corrupt"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:745
+msgid ""
+"The package contains compressed data but this executable does not support "
+"compression"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:771
+#, fuzzy
+msgid "Failed to create the target directory"
+msgstr "Neuspeno uklanjanje direktorijuma %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:784
+msgid "Unpacking file %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:916
+msgid "Error in compressed file stream"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:990
+#, fuzzy
+msgid "Reading package..."
+msgstr "U�tavam alijase..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:991
+msgid "Reading package header"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:998
+#, fuzzy
+msgid "Reading package data"
+msgstr "Loi podaci klju�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:1017
+msgid "Invalid data field: the package is probably corrupt"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1127
+#, fuzzy
+msgid "Select color"
+msgstr "Izaberi sve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1128
+#, fuzzy
+msgid "&Basic colors"
+msgstr "uske boje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1129
+#, fuzzy
+msgid "&Custom colors"
+msgstr "Boja kursora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1130
+msgid "&Red"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1131
+msgid "&Green"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1132
+msgid "Bl&ue"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1133
+msgid "&Define Custom Colors >>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1134
+msgid "&Add to Custom Colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1136
+#, fuzzy
+msgid "Select Font"
+msgstr "selekcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1137
+#, fuzzy
+msgid "&Font"
+msgstr "Font"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1138
+msgid "Font st&yle"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1139
+#, fuzzy
+msgid "&Size"
+msgstr "Veli�na"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1140
+#, fuzzy
+msgid "Sample"
+msgstr "&Oblik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1141
+msgid "Effects"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1142
+msgid "Stri&keout"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1143
+msgid "&Underline"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1144
+#, fuzzy
+msgid "Scr&ipt"
+msgstr "Opis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1146
+#, fuzzy
+msgid "Parent Directory"
+msgstr "Direktorijum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1148
+msgid "Forward"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1149
+msgid "Reload"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1150
+#, fuzzy
+msgid "New Directory"
+msgstr "Direktorijum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1151
+msgid "Bookmarks"
+msgstr "Markeri"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1152
+#, fuzzy
+msgid "Add Bookmark"
+msgstr "Dodaj marker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1153
+#, fuzzy
+msgid "&Edit Bookmarks"
+msgstr "Markeri"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1154
+msgid "New Bookmark Folder..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1156
+#, fuzzy
+msgid "Sorting"
+msgstr "Deljenje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1157
+#, fuzzy
+msgid "By Name"
+msgstr "Naziv"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1158
+msgid "By Date"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1159
+#, fuzzy
+msgid "By Size"
+msgstr "Veli�na"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1160
+#, fuzzy
+msgid "Reverse"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1161
+#, fuzzy
+msgid "Directories First"
+msgstr "&Direktorijum �ta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1162
+#, fuzzy
+msgid "Case Insensitive"
+msgstr "Razlikuj velika i mala slova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1163
+#, fuzzy
+msgid "Short View"
+msgstr "poruka razdvajanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1164
+msgid "Detailed View"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1165
+#, fuzzy
+msgid "Show Hidden Files"
+msgstr "Prikai skrivene fajlove"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1166
+msgid "Show Quick Access Navigation Panel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1167
+#, fuzzy
+msgid "Show Preview"
+msgstr "&Kazi u prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1168
+#, fuzzy
+msgid "Separate Directories"
+msgstr "Razdvaja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1169
+msgid "Often used directories"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1170
+#, fuzzy
+msgid "Desktop"
+msgstr "Link radne povrine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1171
+#, fuzzy
+msgid "Home Directory"
+msgstr "Korisni�i direktorijum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1172
+msgid "Floppy"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1173
+msgid "Temporary Files"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1174
+msgid "Network"
+msgstr "Mrea"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1175
+#, fuzzy
+msgid "New Directory..."
+msgstr "Direktorijum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1176
+msgid "Delete"
+msgstr "Obrii"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1177
+msgid "Thumbnail Previews"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1178
+msgid "Large Icons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1179
+#, fuzzy
+msgid "Small Icons"
+msgstr "Pokai ikone poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1180
+#, fuzzy
+msgid "Properties..."
+msgstr "Podeavanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1181
+msgid "&Automatic Preview"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1182
+#, fuzzy
+msgid "&Preview"
+msgstr "&Pita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1183
+#, fuzzy
+msgid "&Location:"
+msgstr "obavetenje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1184
+#, fuzzy
+msgid "&Filter:"
+msgstr "Filter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1185
+#, fuzzy
+msgid "All Files"
+msgstr "Fajl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:104
+msgid "- d -- h -- m -- s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:111
+#, c-format
+msgid "%u h %u m %u s"
+msgstr "%u h %u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:113
+#, fuzzy, c-format
+msgid "%u h %u%u m %u%u s"
+msgstr "%u h %u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:118
+#, fuzzy, c-format
+msgid "%u m %u s"
+msgstr "%u h %u m %d s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:120
+#, c-format
+msgid "%u m %u%u s"
+msgstr "%u h %u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:122
+#, c-format
+msgid "%u s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:127
+#, fuzzy, c-format
+msgid "%u d %u h %u m %u s"
+msgstr "%u h %u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:129
+#, fuzzy, c-format
+msgid "%u d %u%u h %u%u m %u%u s"
+msgstr "%u h %u m %u s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+#, fuzzy
+msgid "Usage"
+msgstr "Tip poruke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+#, fuzzy
+msgid "message"
+msgstr "Tip poruke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:99
+msgid "-m: send a message instead of a notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:100
+#, fuzzy
+msgid "-w: send notice to all channel owners"
+msgstr "Nema postavljenog naslova za kanal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:101
+#, fuzzy
+msgid "-a: send notice to all channel admins"
+msgstr "Nema postavljenog naslova za kanal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:102
+#, fuzzy
+msgid "-o: send notice to all channel ops"
+msgstr "Nema postavljenog naslova za kanal \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:103
+msgid "-h: send notice to all channel halfops"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:104
+msgid "-v: send notice to all channel voices"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:105
+msgid "-q: quiet mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:138
+msgid "Sending wallop to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:314
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:410
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:493
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:535
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:593
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:653
+#, fuzzy
+msgid "Usage:"
+msgstr "Tip poruke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:223
+msgid "reason"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:272
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:416
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:440
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:599
+#, fuzzy
+msgid "This is not a channel window"
+msgstr "Ovo nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:581
+#, fuzzy
+msgid "Unsupported type: $0"
+msgstr "Nepodran mod kriptovanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:604
+#, fuzzy
+msgid "Channel Owner"
+msgstr "Mod kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:606
+#, fuzzy
+msgid "Channel Administrator"
+msgstr "Operatori kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:608
+#, fuzzy
+msgid "Channel Operator"
+msgstr "Operatori kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:610
+#, fuzzy
+msgid "Half Operator"
+msgstr "Operatori kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:612
+#, fuzzy
+msgid "Voice"
+msgstr "Naslov"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:614
+#, fuzzy
+msgid "User Operator"
+msgstr "operator %c%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:616
+#, fuzzy
+msgid "Normal User"
+msgstr "Normalni tekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:641
+msgid "You must use DNS in an IRC context"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:647
+#, fuzzy
+msgid "You must be connected to a server"
+msgstr "Niste zaka�ni na IRC server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:664
+#, fuzzy
+msgid "No such user: $0"
+msgstr "Nema takvog tajmera (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:33
+msgid "The default script has been successfully installed."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:34
+msgid "To connect to a server, type /server <server name>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:36
+msgid "Happy ircing :)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:15
+#, fuzzy
+msgid "Options"
+msgstr "Akcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:40
+#, fuzzy
+msgid "Window operations"
+msgstr "Prozor nije prona�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMENAME@"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMEDESCRIPTION@"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:18
+#, fuzzy
+msgid "Stop Highlighting (Local)"
+msgstr "Omogu� naglaavanje re�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:23
+#, fuzzy
+msgid "Start Highlighting (Local)"
+msgstr "Omogu� naglaavanje re�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:28
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:61
+#, fuzzy
+msgid "Always Highlight"
+msgstr "Omogu� URL isticanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:30
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:55
+#, fuzzy
+msgid "Highlight as"
+msgstr "Naglaeni tekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:66
+#, fuzzy
+msgid "Stop Highlighting"
+msgstr "Omogu� naglaavanje re�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:82
+#, fuzzy
+msgid "is being ignored"
+msgstr "ignorisano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:87
+#, fuzzy
+msgid "is not being ignored"
+msgstr "ignorisano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:93
+#, fuzzy
+msgid "Enable Ignore"
+msgstr "Omogu� ignorisanje za PRIVMSG"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:98
+#, fuzzy
+msgid "Ignore as..."
+msgstr "ignorisano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:240
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:282
+#, fuzzy
+msgid "Ignore as"
+msgstr "ignorisano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:290
+#, fuzzy
+msgid "Unignore"
+msgstr "ignorisano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:308
+#, fuzzy
+msgid "is registered as"
+msgstr "Registrovani korisnici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:311
+#, fuzzy
+msgid "is in the notify list"
+msgstr "Nema korisnika u listi obavetenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:314
+#, fuzzy
+msgid "has a default avatar"
+msgstr "Avatar slika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:317
+#, fuzzy
+msgid "is not registered"
+msgstr "registrovano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:323
+#, fuzzy
+msgid "Register"
+msgstr "registrovano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:328
+#, fuzzy
+msgid "Quick Registration"
+msgstr "akcija izbacivanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:330
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:355
+#, fuzzy
+msgid "Register as"
+msgstr "Registrovani korisnici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:361
+#, fuzzy
+msgid "Edit Registration"
+msgstr "login operacija kompletna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:366
+#, fuzzy
+msgid "Unregister"
+msgstr "registrovano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:373
+#, fuzzy
+msgid "Add to Notify"
+msgstr "Lista obavetenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:378
+#, fuzzy
+msgid "Remove from Notify"
+msgstr "Ukloni proksi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:385
+#, fuzzy
+msgid "Choose"
+msgstr "Izaberi..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:387
+#, fuzzy
+msgid "Choose Avatar Image File"
+msgstr "Izaberite jednu sliku..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:396
+#, fuzzy
+msgid "Set as Default"
+msgstr "predefinisano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:401
+#, fuzzy
+msgid "Clear Default"
+msgstr "Obrii sve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:412
+msgid "Copy To Clipboard"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:433
+#, fuzzy
+msgid "Ban"
+msgstr "Dodaj zabranu (ban)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1037
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1084
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1224
+#, fuzzy
+msgid "Multiple Users"
+msgstr "promena moda za vie korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:577
+#, fuzzy
+msgid "&Ban"
+msgstr "Dodaj zabranu (ban)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1089
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1229
+#, fuzzy
+msgid "idle time"
+msgstr "Proteklo vreme"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:758
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1236
+#, fuzzy
+msgid "&Information"
+msgstr "informacije servera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1115
+msgid "DNS for"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:499
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1120
+#, fuzzy
+msgid "Mask for"
+msgstr "Ime alijasa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:505
+#, fuzzy
+msgid "&Control"
+msgstr "Povei se"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:509
+#, fuzzy
+msgid "O&wner"
+msgstr "&Umetni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:514
+#, fuzzy
+msgid "&Deowner"
+msgstr "Dodaj manipulator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:519
+#, fuzzy
+msgid "&Administrator"
+msgstr "Operatori kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:524
+#, fuzzy
+msgid "&Deadministrator"
+msgstr "Operatori kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:529
+#, fuzzy
+msgid "&Op"
+msgstr "&Otvori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:534
+#, fuzzy
+msgid "&Deop"
+msgstr "Link radne povrine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:539
+#, fuzzy
+msgid "&Halfop"
+msgstr "Operatori kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:544
+#, fuzzy
+msgid "&Dehalfop"
+msgstr "me de-half-oped"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:549
+#, fuzzy
+msgid "&Voice"
+msgstr "Naslov"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:554
+#, fuzzy
+msgid "D&evoice"
+msgstr "me de-voiced"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:561
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+#, fuzzy
+msgid "&Kick"
+msgstr "Nadimak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+#, fuzzy
+msgid "K&ick"
+msgstr "Nadimak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+#, fuzzy
+msgid "With..."
+msgstr "Izm&ena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+#, fuzzy
+msgid "Kick Reason"
+msgstr "akcija izbacivanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Enter a kick reason"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+#, fuzzy
+msgid "Kick/Ban"
+msgstr "akcija izbacivanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+#, fuzzy
+msgid "Kick/Ban Reason"
+msgstr "akcija izbacivanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+#, fuzzy
+msgid "Enter a kick/ban reason"
+msgstr "akcija izbacivanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+#, fuzzy
+msgid "&Kick/Ban"
+msgstr "akcija izbacivanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:604
+#, fuzzy
+msgid "Configure ban mask..."
+msgstr "&Podesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:612
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1263
+#, fuzzy
+msgid "&Query"
+msgstr "upit obavetenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:625
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1136
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1276
+#, fuzzy
+msgid "&Registration"
+msgstr "login operacija kompletna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1278
+#, fuzzy
+msgid "&Highlight"
+msgstr "Omogu� URL isticanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:629
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1280
+#, fuzzy
+msgid "Ig&nore"
+msgstr "ignorisano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:726
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1050
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1138
+#, fuzzy
+msgid "Notify Avatar"
+msgstr "Lista obavetenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:705
+#, fuzzy
+msgid "&Part"
+msgstr "Prenesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:664
+#, fuzzy
+msgid "Copy Channel Address"
+msgstr "Modovi kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:749
+#, fuzzy
+msgid "Channels"
+msgstr "Kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:693
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:753
+#, fuzzy
+msgid "&Join Channels..."
+msgstr "Ovo nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:700
+#, fuzzy
+msgid "&Hop"
+msgstr "Hops"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:733
+msgid "Copy Channel URL to Clipboard"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:782
+#, fuzzy
+msgid "l (Connections)"
+msgstr "Konekcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:787
+msgid "m (Command Usage)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:792
+#, fuzzy
+msgid "o (Operators)"
+msgstr "operator %c%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:797
+#, fuzzy
+msgid "t (Connection stats ?)"
+msgstr "status konekcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:802
+msgid "u (Uptime)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:807
+msgid "y (y-Lines)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:812
+msgid "z (Debug Stats?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:909
+#, fuzzy
+msgid "Chat with"
+msgstr "Izmeni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:914
+#, fuzzy
+msgid "Reverse Chat with"
+msgstr "Izmeni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:919
+#, fuzzy
+msgid "Secure Chat with"
+msgstr "Izmeni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:926
+#, fuzzy
+msgid "Send to"
+msgstr "Postavljeno u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:931
+#, fuzzy
+msgid "Secure send to"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:936
+#, fuzzy
+msgid "Reverse Send to"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:941
+#, fuzzy
+msgid "Secure Reverse Send to"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:948
+#, fuzzy
+msgid "TDCC Send to"
+msgstr "Postavljeno u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:953
+#, fuzzy
+msgid "TDCC Reverse Send to"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:960
+#, fuzzy
+msgid "Voice Chat"
+msgstr "Naslov"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1134
+#, fuzzy
+msgid "&Ignore"
+msgstr "ignorisano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1165
+#, fuzzy
+msgid "Logging to"
+msgstr "odlaze�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1167
+#, fuzzy
+msgid "Flush Log File"
+msgstr "Izaberi ime konfiguracionog fajla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1174
+#, fuzzy
+msgid "Stop Logging"
+msgstr "odlaze�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1179
+#, fuzzy
+msgid "Not Logging"
+msgstr "odlaze�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+msgid "Log To Default File"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+#, fuzzy
+msgid "Include Existing Buffer"
+msgstr "### Postoje� bufer podataka:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+#, fuzzy
+msgid "Log To..."
+msgstr "U�tavanje ikona..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1201
+#, fuzzy
+msgid "Choose Log Filename"
+msgstr "Izaberi ime konfiguracionog fajla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1282
+#, fuzzy
+msgid "Notify avatar"
+msgstr "Lista obavetenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:50
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$copyfiles must be a "
+"source directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:56
+#, c-format
+msgid ""
+"[Installer] The second argument to \\%installer->\\$copyfiles must be a file "
+"name or file regexp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:62
+#, c-format
+msgid ""
+"[Installer] The third argument to \\%installer->\\$copyfiles must be a "
+"destination directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:94
+#, fuzzy
+msgid "[Installer] Failed to create directory"
+msgstr "Neuspeno uklanjanje direktorijuma %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:104
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$includefiles must be a "
+"source directory"
+msgstr ""
+
+#, fuzzy
+#~ msgid "Lag is"
+#~ msgstr "Beleke"
+
+#, fuzzy
+#~ msgid "milliseconds"
+#~ msgstr "sekundi"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c: %Q"
+#~ msgstr "[\r!s\r%s\r]: %s"
+
+#, fuzzy
+#~ msgid "Basic Properties"
+#~ msgstr "Podeavanja"
+
+#, fuzzy
+#~ msgid "Other:"
+#~ msgstr "Izm&ena"
+
+#, fuzzy
+#~ msgid "Choose a server to connect"
+#~ msgstr "Izaberi server.ini fajl"
+
+#~ msgid "Server:"
+#~ msgstr "Server:"
+
+#~ msgid "Port:"
+#~ msgstr "Port:"
+
+#, fuzzy
+#~ msgid "URL:"
+#~ msgstr "URL"
+
+#, fuzzy
+#~ msgid "Use server config"
+#~ msgstr "Koristi mainu za ifrovanje"
+
+#, fuzzy
+#~ msgid "Config file:"
+#~ msgstr "&Podesi"
+
+#, fuzzy
+#~ msgid "Smart"
+#~ msgstr "Prenesi"
+
+#, fuzzy
+#~ msgid "Window with ID '%s' not found"
+#~ msgstr "Dugme prozora '%s' nije na�no"
+
+#, fuzzy
+#~ msgid "Hide ignore-messages (incomplete)"
+#~ msgstr "poruka pozivanja"
+
+#, fuzzy
+#~ msgid "Ignore everything"
+#~ msgstr "Ignorii FINGER zahteve"
+
+#, fuzzy
+#~ msgid "Notify"
+#~ msgstr "Lista obavetenja"
+
+#, fuzzy
+#~ msgid "Can't fill non-widget object"
+#~ msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#~ msgid "Select error: %s (errno=%d)"
+#~ msgstr "Greka selektovanja: %s (broj greke=%d)"
+
+#~ msgid "Connect error: %s (errno=%d)"
+#~ msgstr "Greka konektovanja: %s (broj greke=%d)"
+
+#~ msgid "Write error: %s (errno=%d)"
+#~ msgstr "Greka u pisanju: %s (broj greke=%d)"
+
+#~ msgid "Read error: %s (errno=%d)"
+#~ msgstr "Greka �tanja: %s (broj greke=%d)"
+
+#~ msgid "WARNING : Can not load image library %s"
+#~ msgstr "UPOZORENJE : Ne mogu da u�tam biblioteku slike %s"
+
+#, fuzzy
+#~ msgid "Load Theme - KVIrc"
+#~ msgstr "Sa�vaj putanju"
+
+#, fuzzy
+#~ msgid "Unable to create theme directory."
+#~ msgstr "Neuspeno uklanjanje direktorijuma %s"
+
+#, fuzzy
+#~ msgid "Version"
+#~ msgstr "Opis:"
+
+#, fuzzy
+#~ msgid "Themes"
+#~ msgstr "Fajlovi"
+
+#~ msgid "[IDENT]: Service shutdown (spontaneous)"
+#~ msgstr "[IDENT]: Gaenje servisa (spontano)"
+
+#~ msgid "[IDENT]: Service shutdown (on request)"
+#~ msgstr "[IDENT]: Gaenje servisa (na zahtev)"
+
+#~ msgid "<b>%Q</b>: +%Q (%u users)<hr>%Q"
+#~ msgstr "<b>%Q</b>: +%Q (%u korisnika)<hr>%Q"
+
+#, fuzzy
+#~ msgid "What's this?"
+#~ msgstr "ta je ovo ?"
+
+#, fuzzy
+#~ msgid "<b>Nickname:</b>"
+#~ msgstr "Nickname (nadimak):"
+
+#, fuzzy
+#~ msgid "Default Theme"
+#~ msgstr "Predefinisani TTL"
+
+#, fuzzy
+#~ msgid ""
+#~ "<p>Setup can make a shortcut to the KVIrc program on your desktop, so you "
+#~ "can access it quickly.</p><p>Do you want this shortcut to be created?</p>"
+#~ msgstr ""
+#~ "KVIrc moe da napravi pre�cu do KVIrc programa na Vaem desktop-u , dakle "
+#~ "bi�te u mogu�osti da ga pokrenete brzo.<br>Da li elite da bude "
+#~ "napravljena pre�ca ?"
+
+#, fuzzy
+#~ msgid "URL Handlers"
+#~ msgstr "Dodaj manipulator"
+
+#, fuzzy
+#~ msgid ""
+#~ "<p><h2>Setup Complete</h2>Setup now has all the necessary information to "
+#~ "configure KVIrc.</p><p>Please click the \"<b>Finish</b>\" button to save "
+#~ "your choices and start KVIrc.</p>"
+#~ msgstr ""
+#~ "<b>Prikupljanje informacija zavreno</b><br><br>Sve informacije su "
+#~ "prikupljene uspeno.<br>Molim kliknite na \"Zavri\" da stvarno izvrite "
+#~ "operacije i pokrenete KVIrc."
+
+#, fuzzy
+#~ msgid "Finish Setup"
+#~ msgstr "Zavri"
+
+#~ msgid "Empty string"
+#~ msgstr "Prazan string"
+
+#~ msgid "No such open mode: %s"
+#~ msgstr "Nema takvog moda otvaranja: %s"
+
+#~ msgid "Negative file index supplied !"
+#~ msgstr "Dobavljen negativan indeks fajla"
+
+#~ msgid "Argument length is 0 - empty string"
+#~ msgstr "Duina argumenta je 0 - prazan string"
+
+#~ msgid "Length is a negative number !"
+#~ msgstr "Duina je negativan broj !"
+
+#~ msgid "Nothing to write"
+#~ msgstr "Nema nita za pisanje"
+
+#, fuzzy
+#~ msgid "Background not found %Q "
+#~ msgstr "Boja pozadine"
+
+#~ msgid ""
+#~ "Broken slot '%s' in target object '%s' while emitting signal '%s' from "
+#~ "object '%s': disconnecting"
+#~ msgstr ""
+#~ "Prekinut slot '%s' u odredinom objektu '%s' dok je emitovan signal '%s' od"
+#~ "\robjekta '%s': prekidam vezu"
+
+#~ msgid ""
+#~ "No slot function '%s' exported by target object '%s' while emitting "
+#~ "signal '%s' from object '%s': disconnecting"
+#~ msgstr ""
+#~ "Nema slot funkcije '%s' izvezene od odredinog objekta '%s' dok je "
+#~ "emitovan '%s' signal od objekta '%s': prekidam vezu"
+
+#~ msgid "Invalid timer id"
+#~ msgstr "Pogrean ID tajmera"
+
+#, fuzzy
+#~ msgid "%cListing Qt Properties for widget object %s (%s)"
+#~ msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Properties class: %c%s%c"
+#~ msgstr "Svojstva:"
+
+#, fuzzy
+#~ msgid "Property: %c%s%c, type: %s"
+#~ msgstr " Vlasnitvo: %s=%s"
+
+#, fuzzy
+#~ msgid "Oops... no such property: %s"
+#~ msgstr " Vlasnitvo: %s=%s"
+
+#, fuzzy
+#~ msgid "No such QT property (%s)"
+#~ msgstr "Nema takvog objekta (%s)"
+
+#, fuzzy
+#~ msgid "missing parameter"
+#~ msgstr "Nedostaje odredite (meta)"
+
+#, fuzzy
+#~ msgid "Invalid parameter (%s)"
+#~ msgstr "Pogrean parametar"
+
+#, fuzzy
+#~ msgid "Unsupported QT property (%s)"
+#~ msgstr "Nepodran pravac"
+
+#, fuzzy
+#~ msgid "Missing parameters"
+#~ msgstr "Nedostaje odredite (meta)"
+
+#~ msgid "[Parser warning in '%Q']: %Q"
+#~ msgstr "[parser upozorenje u '%Q'] : %Q"
+
+#, fuzzy
+#~ msgid "Can't find the multimedia file %s"
+#~ msgstr "Ne mogu da na�m multimedijalni fajl %s"
+
+#, fuzzy
+#~ msgid "Missing target, no action taken"
+#~ msgstr "Nedostaje odredite; nema preuzete akcije"
+
+#~ msgid "Invalid timeout specified , using default"
+#~ msgstr "Pogreno definisan odziv , koristim predefinisano"
+
+#~ msgid "Can't add a file offer for file %s (huh ? file not readable ?)"
+#~ msgstr "Ne mogu da dodam ponudu fajla za fajl %s (huh ? fajl nije �tljiv ?)"
+
+#~ msgid "Added %d secs file offer for file %s (%s) and receiver %s"
+#~ msgstr "Dodato %d sekundi ponude fajla za fajl %s (%s) i prima� %s"
+
+#~ msgid "%s plays '%s'"
+#~ msgstr "%s reprodukuje '%s'"
+
+#~ msgid "%s plays '%s' to %s"
+#~ msgstr "%s reprodukuje '%s' u %s"
+
+#~ msgid "Error in command: %c%c%Q"
+#~ msgstr "Greka u komandi: %c%c%Q"
+
+#, fuzzy
+#~ msgid "Error token: %c%Q"
+#~ msgstr "Greka simbola: %c%s"
+
+#~ msgid "Parsing stopped at %cline %d , character %d"
+#~ msgstr "Obrada zaustavljena u %cliniji %d , karakter %d"
+
+#~ msgid " %s"
+#~ msgstr " %s"
+
+#~ msgid "Object scope: name (%s), class (%s)"
+#~ msgstr "Podru�e objekta: ime (%s), klasa (%s)"
+
+#~ msgid "Object scope: deleted object"
+#~ msgstr "Podru�e objekta: obrisan objekat"
+
+#~ msgid "This pointer: name (%s), class (%s)"
+#~ msgstr "Ovaj pokaziva� ime (%s), klasa (%s)"
+
+#~ msgid "This pointer: deleted object"
+#~ msgstr "Ovaj pokaziva� obrisan objekat"
+
+#~ msgid "Internal call stack:"
+#~ msgstr "Interni poziv stek-a:"
+
+#~ msgid "Error triggered from raw event handler %c%s::%Q"
+#~ msgstr "Greka nastala od upravlja� sirovog (raw) doga�ja %c%s::%Q"
+
+#~ msgid "Error triggered from event handler %c%Q::%Q"
+#~ msgstr "Greka nastala od upravlja� doga�ja %c%Q::%Q"
+
+#~ msgid "Raw event handler %s::%Q is broken: disabling"
+#~ msgstr "Upravlja�sirovog (raw) doga�ja %s::%Q je prekinut: isklju�jem"
+
+#~ msgid "Event handler %Q::%Q is broken: disabling"
+#~ msgstr "Upravlja�doga�ja %Q::%Q je prekinut: isklju�jem"
+
+#~ msgid "Variable evaluated to \"%s\""
+#~ msgstr "Promenljiva procenjena na \"%s\""
+
+#~ msgid "Window with caption %Q not found"
+#~ msgstr "Prozor sa naslovom '%Q' nije na�n, vra�m 0"
+
+#~ msgid "Ignoring NOTICE from %Q (%Q)"
+#~ msgstr "Ignoriem PRIVMSG od %Q: %Q"
+
+#, fuzzy
+#~ msgid "Unknown channel mode"
+#~ msgstr "nepoznat mod kanala"
+
+#, fuzzy
+#~ msgid " symbol exported: not a kvirc module ?"
+#~ msgstr "Nije izvezen kvirc_module_info simbol: nije kvirc modul ?"
+
+#, fuzzy
+#~ msgid "http://www.kvirc.net/"
+#~ msgstr ""
+#~ "\n"
+#~ "Glavna stranica: http://www.kvirc.net"
+
+#, fuzzy
+#~ msgid "My Custom Servers"
+#~ msgstr "Kopiraj server"
+
+#~ msgid "orphan_servers"
+#~ msgstr "orphan_servers"
+
+#, fuzzy
+#~ msgid "Topic for \r!c\r%Q\r was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+#~ msgstr "Naslov za \r!c\r%Q\r je postavljen od \r!n\r%Q\r"
+
+#~ msgid "\" ...that looks like an error to me..."
+#~ msgstr "\" ...to izgleda kao greka za mene..."
+
+#~ msgid "Search keywords"
+#~ msgstr "Pretrai klju�e re�"
+
+#~ msgid "Choose..."
+#~ msgstr "Izaberi..."
+
+#~ msgid "Invalid width parameter"
+#~ msgstr "Neispravan parametar irine"
+
+#~ msgid "Invalid height parameter"
+#~ msgstr "Neispravan parametar visine"
+
+#~ msgid "The parameters do not define a rectangle"
+#~ msgstr "Parametri ne definiu pravougaonik"
+
+#~ msgid "The parameters do not define a point"
+#~ msgstr "Parametri ne definiu ta�u"
+
+#~ msgid "The parameters are do not define a valid size"
+#~ msgstr "Parametri ne definiu vae� veli�nu"
+
+#, fuzzy
+#~ msgid "Invalid size parameter (%s)"
+#~ msgstr "Pogrean parametar"
+
+#, fuzzy
+#~ msgid "Unknown widget type: %s"
+#~ msgstr "Nepoznato poravnanje: %s"
+
+#, fuzzy
+#~ msgid "Can't find the widget object assuming 0"
+#~ msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Invalid object"
+#~ msgstr "Pogreno vreme isteka"
+
+#, fuzzy
+#~ msgid "Invalid Parameters"
+#~ msgstr "Pogrean parametar"
+
+#, fuzzy
+#~ msgid "Can't find the widget object to add (%s)"
+#~ msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Invalid row parameter (%s)"
+#~ msgstr "Pogrean parametar"
+
+#, fuzzy
+#~ msgid "Invalid column parameter (%s)"
+#~ msgstr "Pogrean parametar ivice"
+
+#, fuzzy
+#~ msgid "Unknown frame style"
+#~ msgstr "Nepoznat okvir / stila senke: %s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Failed writing the kvirc home directory path to %Q.\n"
+#~ "You will need to do it manually , otherwise KVirc will restart with\n"
+#~ "the setup!"
+#~ msgstr ""
+#~ "Neuspeno zapisivanje putanje kvirc home direktorijuma u %s.\n"
+#~ "Mora�te to da uradite ru�o , u protivnom KVIrc � ponoviti\n"
+#~ "podesavanje!"
+
+#, fuzzy
+#~ msgid "SSL"
+#~ msgstr "Koristi SSL"
+
+#, fuzzy
+#~ msgid "Ident Service"
+#~ msgstr "Ident korisni�o ime"
+
+#, fuzzy
+#~ msgid "Reconnection Options"
+#~ msgstr "konekcija"
+
+#, fuzzy
+#~ msgid "CTCP"
+#~ msgstr "CTCP Page"
+
+#, fuzzy
+#~ msgid "Flood Protection"
+#~ msgstr "Koristi flood zatitu"
+
+#, fuzzy
+#~ msgid "File Transfer"
+#~ msgstr "Obrii mrtve prenose"
+
+#, fuzzy
+#~ msgid "Advanced"
+#~ msgstr "Napredno ..."
+
+#, fuzzy
+#~ msgid "Chat"
+#~ msgstr "Izmeni"
+
+#, fuzzy
+#~ msgid "General options"
+#~ msgstr "Gnutella opcije"
+
+#, fuzzy
+#~ msgid "Alert/Highlight"
+#~ msgstr "Omogu� URL isticanje"
+
+#, fuzzy
+#~ msgid "Interface"
+#~ msgstr "Adresa interfejsa (ili ime)"
+
+#, fuzzy
+#~ msgid "General"
+#~ msgstr "Generalne opcije"
+
+#, fuzzy
+#~ msgid "Transparency"
+#~ msgstr "Transparentno "
+
+#, fuzzy
+#~ msgid "ToolBar Applets"
+#~ msgstr "&Alati"
+
+#, fuzzy
+#~ msgid "Output"
+#~ msgstr "Izlazni bafer"
+
+#, fuzzy
+#~ msgid "Lag"
+#~ msgstr "Beleke"
+
+#, fuzzy
+#~ msgid "Logging"
+#~ msgstr "odlaze�"
+
+#, fuzzy
+#~ msgid "Media Types"
+#~ msgstr "Nov tip medija"
+
+#, fuzzy
+#~ msgid "NickServ"
+#~ msgstr "NickServ maska"
+
+#, fuzzy
+#~ msgid "Contacts"
+#~ msgstr "Povei se"
+
+#, fuzzy
+#~ msgid "Notifier"
+#~ msgstr "Lista obavetenja"
+
+#, fuzzy
+#~ msgid "Output Style"
+#~ msgstr "Izlazni bafer"
+
+#, fuzzy
+#~ msgid "Proxy Hosts"
+#~ msgstr "proksi host"
+
+#, fuzzy
+#~ msgid "Servers"
+#~ msgstr "Server"
+
+#, fuzzy
+#~ msgid "Sound"
+#~ msgstr "Poalji"
+
+#, fuzzy
+#~ msgid "Tree taskbar"
+#~ msgstr "Taskbar"
+
+#, fuzzy
+#~ msgid "Text icons"
+#~ msgstr "Tekstualni editor"
+
+#, fuzzy
+#~ msgid "Labels"
+#~ msgstr "Labela"
+
+#, fuzzy
+#~ msgid "Scripting Engine"
+#~ msgstr "Opis"
+
+#, fuzzy
+#~ msgid "URL handlers"
+#~ msgstr "Dodaj manipulator"
+
+#, fuzzy
+#~ msgid "Userlist"
+#~ msgstr "Lista korisnika"
+
+#, fuzzy
+#~ msgid "Protection"
+#~ msgstr "Koristi flood zatitu"
+
+#, fuzzy
+#~ msgid "Avatar Handling"
+#~ msgstr "promena avatara"
+
+#~ msgid "Invalid timeout (%s)"
+#~ msgstr "Pogreno vreme isteka (%s)"
+
+#~ msgid "Invalid port specified: the kernel will choose one"
+#~ msgstr "Pogreno definisan port: kernel � da izabere jedan"
+
+#~ msgid "Invalid port (%s)"
+#~ msgstr "Neispravan port (%s)"
+
+#~ msgid "Non-negative integer length expected as parameter"
+#~ msgstr "Ne-negativna duina celog broja je o�kivana kao parametar"
+
+#~ msgid "Non-negative integer index expected as first parameter"
+#~ msgstr "Ne-negativan indeks celog broja je o�kivana kao prvi parametar"
+
+#~ msgid "Non-negative integer length expected as second parameter"
+#~ msgstr "Ne-negativna duina celog broja je o�kivana kao drugi parametar"
+
+#, fuzzy
+#~ msgid "Invalid x offset parameter (%s)"
+#~ msgstr "Pogrean parametar"
+
+#, fuzzy
+#~ msgid "Invalid y offset parameter (%s)"
+#~ msgstr "Pogrean parametar"
+
+#, fuzzy
+#~ msgid "Can't find the specified file '%s'."
+#~ msgstr "Ne mogu da na�m multimedijalni fajl %s"
+
+#, fuzzy
+#~ msgid "Class is undefined"
+#~ msgstr "Klasa %s nije definisana"
+
+#, fuzzy
+#~ msgid ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">General Preferences</font></h1></center></td></"
+#~ "tr><tr><td><br><br><center><b>These sections contain various settings for "
+#~ "KVIrc</b></center><br><br><p>When you have finished, click \"<b>OK</b>\" "
+#~ "to accept your changes or \"<b>Cancel</b>\" to discard them. Clicking "
+#~ "\"<b>Apply</b>\" will commit your changes without closing the window.</"
+#~ "td></tr><tr><td>Many settings have tooltips that can be shown by holding "
+#~ "the cursor over their label for a few seconds.</p></td></tr></table>"
+#~ msgstr ""
+#~ "<h1><b><center>Generalne opcije</center></b></"
+#~ "h1><br><hr><br><center>Izaberite kategoriju u listi na levoj strani za "
+#~ "pregled vezanih opcija.Kada budete zavrili kliknite na 'OK' za "
+#~ "prihvatanje Vaih promena ili 'Poniti' za odbacivanje. Klikom na 'Primeni' "
+#~ "�te izvriti Vae promene bez zatvaranja ovog prozora.</"
+#~ "center><br><br><center>Mnoge opcije imaju \"brza pomo\" mogu�ost kojoj se "
+#~ "moe pristupiti stavljanjem pokaziva� mia preko selektora opcije na "
+#~ "nekoliko sekundi.</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">General Preferences</font></h1></center></td></"
+#~ "tr><tr><td><br><br>Select a category in the list view on the left to view "
+#~ "the related settings. When you have finished, click \"<b>OK</b>\" to "
+#~ "accept your changes or \"<b>Cancel</b>\" to discard them. Clicking "
+#~ "\"<b>Apply</b>\" will commit your changes without closing this window."
+#~ "<br><br></td></tr></table>"
+#~ msgstr ""
+#~ "<h1><b><center>Generalne opcije</center></b></"
+#~ "h1><br><hr><br><center>Izaberite kategoriju u listi na levoj strani<br>za "
+#~ "pregled srodnih opcija.<br>Kada zavrite kliknite Ok za prihvatanje Vaih "
+#~ "promena<br>ili Poniti za odbacivanje.<br>Klik na Primeni � aktivirati Vae "
+#~ "promene bez zatvaranja ovog prozora.<br><br></center>"
+
+#, fuzzy
+#~ msgid "Commit all changes immediately."
+#~ msgstr "Izvri promene"
+
+#, fuzzy
+#~ msgid "Newbie"
+#~ msgstr "Nova stavka"
+
+#, fuzzy
+#~ msgid "Normal user"
+#~ msgstr "Normalni tekst"
+
+#, fuzzy
+#~ msgid "Experienced user"
+#~ msgstr "voiced korisnici"
+
+#, fuzzy
+#~ msgid "Output verbosity"
+#~ msgstr "Izlazni bafer"
+
+#, fuzzy
+#~ msgid "Quiet"
+#~ msgstr "&Zavri"
+
+#, fuzzy
+#~ msgid "Normal"
+#~ msgstr "Normalni mod"
+
+#, fuzzy
+#~ msgid "Paranoic"
+#~ msgstr "obavetenje servera"
+
+#, fuzzy
+#~ msgid "Show in active window"
+#~ msgstr "Promene liste obavetenja u aktivni prozor"
+
+#, fuzzy
+#~ msgid "External messages"
+#~ msgstr "nema spoljnih poruka"
+
+#, fuzzy
+#~ msgid "Whois replies"
+#~ msgstr "ko (who) odgovor"
+
+#, fuzzy
+#~ msgid "ChanServ and NickServ notices"
+#~ msgstr "obavetenje servera"
+
+#, fuzzy
+#~ msgid "Server replies"
+#~ msgstr "serverov ping"
+
+#, fuzzy
+#~ msgid "Server notices"
+#~ msgstr "obavetenje servera"
+
+#, fuzzy
+#~ msgid "Broadcast and WALLOPS messages"
+#~ msgstr "privatna poruka prenosa"
+
+#, fuzzy
+#~ msgid "Show extended server information"
+#~ msgstr "Prikai dodatne informacije servera"
+
+#~ msgid "Show server pings"
+#~ msgstr "Prikazi pingove servera"
+
+#~ msgid "Show own parts in the console"
+#~ msgstr "Prikai vlastite odlaske sa kanala u konzoli"
+
+#~ msgid "Show compact mode changes"
+#~ msgstr "Pokai skraceno promene moda"
+
+#, fuzzy
+#~ msgid "On Channel Join"
+#~ msgstr "obavetenje kanala"
+
+#, fuzzy
+#~ msgid "Echo channel topic"
+#~ msgstr "Nema postavljenog naslova kanala"
+
+#~ msgid "Show channel sync time"
+#~ msgstr "Pokai vreme sinhronizovanja kanala"
+
+#~ msgid "Font"
+#~ msgstr "Font"
+
+#~ msgid "Foreground color"
+#~ msgstr "Boja ispisa"
+
+#~ msgid "Background color"
+#~ msgstr "Boja pozadine"
+
+#~ msgid "Background image"
+#~ msgstr "Pozadinska slika"
+
+#, fuzzy
+#~ msgid "Theme name:"
+#~ msgstr "Stvarno ime"
+
+#, fuzzy
+#~ msgid "you must select save directory"
+#~ msgstr "Nekompletan direktorijum"
+
+#, fuzzy
+#~ msgid "Unable to create theme files directory."
+#~ msgstr "Neuspeno uklanjanje direktorijuma %s"
+
+#, fuzzy
+#~ msgid "Unable to create theme utils directory."
+#~ msgstr "Neuspeno uklanjanje direktorijuma %s"
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for reading."
+#~ msgstr "Ne mogu da otvorim fajl %s za �tanje"
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for writing."
+#~ msgstr "Ne mogu da otvorim fajl %s za upisivanje"
+
+#, fuzzy
+#~ msgid "Refresh Theme List"
+#~ msgstr "U�taj listu"
+
+#, fuzzy
+#~ msgid "Current Theme"
+#~ msgstr "Trenutni direktorijum"
+
+#, fuzzy
+#~ msgid "<p>Theme: %1</p>"
+#~ msgstr "Stvarno ime"
+
+#, fuzzy
+#~ msgid "<p>Version: %1</p>"
+#~ msgstr "[SSL]: Verzija: %1%s"
+
+#, fuzzy
+#~ msgid "On Unexpected Disconnect"
+#~ msgstr "Automatski zaka� na neo�kivano odka�njanje"
+
+#, fuzzy
+#~ msgid "Keep channels open"
+#~ msgstr "Zadri kanal otvoren kad te izbace (KICK)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to keep channels open after an "
+#~ "unexpected disconnect.</center>"
+#~ msgstr ""
+#~ "Ova opcina omogu�va da se KVIrc vrati na kanale posle uspenog ponovnog "
+#~ "konektovanja."
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to keep queries open after an "
+#~ "unexpected disconnect.</center>"
+#~ msgstr ""
+#~ "Ova opcija omogu�va da KVIrc ponovo otvori upit prozore posle uspenog "
+#~ "ponovnog konektovanja."
+
+#~ msgid "Rejoin channels after reconnect"
+#~ msgstr "Ponovo u� na kanale po ponovnom ka�nju"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to rejoin channels after a "
+#~ "successful reconnect attempt.</center>"
+#~ msgstr ""
+#~ "Ova opcina omogu�va da se KVIrc vrati na kanale posle uspenog ponovnog "
+#~ "konektovanja."
+
+#~ msgid "Reopen queries after reconnect"
+#~ msgstr "Ponovo otvori upite po ponovnom ka�nju"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to reopen query windows after a "
+#~ "successful reconnect attempt.</center>"
+#~ msgstr ""
+#~ "Ova opcija omogu�va da KVIrc ponovo otvori upit prozore posle uspenog "
+#~ "ponovnog konektovanja."
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will enable auto-reconnecting after an unexpected "
+#~ "disconnect. An unexpected disconnect is the <b>termination</b> of a "
+#~ "<b>fully connected IRC session</b> that was <b>not requested by the user</"
+#~ "b> by the means of the QUIT message.<p><b>Warning:</b> If you use /RAW to "
+#~ "send a QUIT message to the server, this option will not behave correctly, "
+#~ "since does not detect the outgoing QUIT message and will attempt to "
+#~ "reconnect after the server has closed the connection. For this reason, "
+#~ "always use the /QUIT command to close your connections. This option may "
+#~ "also behave incorrectly with bouncers that support detaching, in this "
+#~ "case a solution could be to prepare an alias that sends the bouncer "
+#~ "\"detach\" command immediately before the \"quit\" command.<br><tt>alias"
+#~ "(bncdetach){ raw bouncer detach; quit; }</tt></p></center>"
+#~ msgstr ""
+#~ "Ova opcija omogu�va auto-ka�nje posle neo�kivanog odka�njanja.<br>Jedno "
+#~ "\"neo�kivano odka�njanje\" je prekid <b>kompletne IRC sesije</b><br>koje "
+#~ "nije <b>zahtevano od korisnika</b> na ta se misli na KRAJ (QUIT) poruku."
+#~ "<br>UPOZORENJE: Ako koristite /RAW za slanje KRAJ (QUIT) poruke "
+#~ "serveru<br>ova opcija � biti nekorektna, jer ne� detektovati odlaze� KRAJ "
+#~ "(QUIT) poruku i pokua� da se ponovo zaka� kad server zatvori konekciju."
+#~ "<br>Zbog ovog razloga , uvek koristite /QUIT komandu da bi ste zatvorili "
+#~ "vau konekciju.<br>Ova opcija tako� moe biti nekorektna sa bouncerima koji "
+#~ "podravaju<br>odvajanje: u ovom slu�ju jedna ideja je da se pripremi "
+#~ "alijas koji � poslati<br>bounceru \"detach\" (odvajanje) komandu i odmah "
+#~ "zatik i \"quit\" (kraj) komandu.<br><b>alias(bncdetach){ raw bouncer "
+#~ "detach; quit }</b>"
+
+#, fuzzy
+#~ msgid "Novice"
+#~ msgstr "Naslov"
+
+#, fuzzy
+#~ msgid "No such options page class name %Q"
+#~ msgstr "Nema takvog imena klase za stranicu opcija"
+
+#, fuzzy
+#~ msgid "\"Smart\" nickname colors"
+#~ msgstr "Pametno bojenje nadimaka"
+
+#, fuzzy
+#~ msgid "Show nicknames in bold"
+#~ msgstr "Pokai zadebljane nadimke"
+
+#~ msgid "Show user and host"
+#~ msgstr "Pokai korisnika i host"
+
+#, fuzzy
+#~ msgid "Show channel mode prefix"
+#~ msgstr "nepoznat mod kanala"
+
+#~ msgid "User-defined prefix and postfix"
+#~ msgstr "Korisni�i-definisan prefiks i postfiks"
+
+#~ msgid "[PREFIX]nickname[!user@host][POSTFIX] message"
+#~ msgstr "[PREFIKS]nadimak[!korisnik@host][POSTFIKS] poruka"
+
+#, fuzzy
+#~ msgid "Prefix:"
+#~ msgstr "Prefiks"
+
+#, fuzzy
+#~ msgid "Postfix:"
+#~ msgstr "Postfiks"
+
+#, fuzzy
+#~ msgid "Font:"
+#~ msgstr "Font"
+
+#, fuzzy
+#~ msgid "Background color:"
+#~ msgstr "Boja pozadine"
+
+#, fuzzy
+#~ msgid "Background image:"
+#~ msgstr "Pozadinska slika"
+
+#~ msgid "Show message icons"
+#~ msgstr "Pokai ikone poruka"
+
+#, fuzzy
+#~ msgid "Draw some emoticons (smileys) as pictures"
+#~ msgstr "Nacrtaj neke emocije kao stvarne ikone"
+
+#~ msgid "Show timestamp"
+#~ msgstr "Pokai datum i vreme"
+
+#, fuzzy
+#~ msgid "Use UTC time for timestamp"
+#~ msgstr "Koristi UTC datum i vreme"
+
+#, fuzzy
+#~ msgid "Use special color for timestamps"
+#~ msgstr "Koristi UTC datum i vreme"
+
+#, fuzzy
+#~ msgid "Timestamp color"
+#~ msgstr "Datum i vreme"
+
+#~ msgid "Enable URL highlighting"
+#~ msgstr "Omogu� URL isticanje"
+
+#, fuzzy
+#~ msgid "Use line wrap margin"
+#~ msgstr "Koristi prelamaju� marginu"
+
+#, fuzzy
+#~ msgid "Maximum buffer size:"
+#~ msgstr "Maksimalna veli�na bafera"
+
+#, fuzzy
+#~ msgid " lines"
+#~ msgstr "odgovoreno"
+
+#, fuzzy
+#~ msgid "Nickname alternatives"
+#~ msgstr "Nadimak 4"
+
+#, fuzzy
+#~ msgid "Alt. Nickname 1:"
+#~ msgstr "Nadimak 1"
+
+#, fuzzy
+#~ msgid "Alt. Nickname 2:"
+#~ msgstr "Nadimak 2"
+
+#, fuzzy
+#~ msgid "Alt. Nickname 3:"
+#~ msgstr "Nadimak 3"
+
+#, fuzzy
+#~ msgid "Alternatives..."
+#~ msgstr "Podeavanja"
+
+#~ msgid "Username:"
+#~ msgstr "Korisnik:"
+
+#, fuzzy
+#~ msgid "Server notices (+s)"
+#~ msgstr "s (Obavetenja servera)"
+
+#, fuzzy
+#~ msgid "Default part message:"
+#~ msgstr "Predefinisana poruka odsutnosti"
+
+#, fuzzy
+#~ msgid "Default quit message:"
+#~ msgstr "Predefinisana poruka odsutnosti"
+
+#, fuzzy
+#~ msgid "Pattern"
+#~ msgstr "Prenesi"
+
+#, fuzzy
+#~ msgid "MIME Type"
+#~ msgstr "Vrsta"
+
+#, fuzzy
+#~ msgid "MIME type:"
+#~ msgstr "IANA tip"
+
+#, fuzzy
+#~ msgid "File pattern:"
+#~ msgstr "Naziv fajla"
+
+#, fuzzy
+#~ msgid "Magic bytes:"
+#~ msgstr "Magi�i bajtovi"
+
+#, fuzzy
+#~ msgid "Save path:"
+#~ msgstr "Sa�vaj putanju"
+
+#, fuzzy
+#~ msgid "Local open command:"
+#~ msgstr "Lokalna izvrna komanda"
+
+#, fuzzy
+#~ msgid "Remote open command:"
+#~ msgstr "Daljinska izvrna komanda"
+
+#, fuzzy
+#~ msgid "[Unknown Media Type]"
+#~ msgstr "Nepoznat tip medija"
+
+#, fuzzy
+#~ msgid "New Media Type"
+#~ msgstr "Nov tip medija"
+
+#, fuzzy
+#~ msgid "NickServ Authentication Rule"
+#~ msgstr "NickServ identifikaciona pravila"
+
+#, fuzzy
+#~ msgid "Registered NickName"
+#~ msgstr "Registrovani korisnici"
+
+#, fuzzy
+#~ msgid "NickServ Mask"
+#~ msgstr "NickServ maska"
+
+#, fuzzy
+#~ msgid ""
+#~ "This is the mask that NickServ must match to be correctly identified as "
+#~ "the NickServ service. This usually will be something like <b>NickServ!"
+#~ "[email protected]</b>.<br>You can use wildcards for this field, but "
+#~ "generally it is a security flaw. If you're 100% sure that NO user on the "
+#~ "network can use the nickname \"NickServ\", the mask <b>NickServ!*@*</b> "
+#~ "may be safe to use in this field."
+#~ msgstr ""
+#~ "<center>Ovo je maska koja mora da se ta�o poklopi sa NickServ-om da bi se "
+#~ "korektno identifikovali NickServ servisu. Ovo je obi�o neto nalik <b> "
+#~ "[email protected]</b>...Moete koristiti �kere za ovo "
+#~ "polje, ali generalno to je sigurnosno slabo. Ako ste 100% sigurni da NI "
+#~ "JEDAN korisnik na mrei ne moe da promeni svoj nadimak kod NickServ-a onda "
+#~ "verovatno <b>NickServ!*@*</b> � biti u redu za ovo polje.</center>"
+
+#, fuzzy
+#~ msgid "Message Regexp"
+#~ msgstr "Tip poruke"
+
+#, fuzzy
+#~ msgid "Identify Command"
+#~ msgstr "Komanda predstavljanja"
+
+#, fuzzy
+#~ msgid ""
+#~ "This is the command that will be executed when NickServ requests "
+#~ "authentication for the nickname described in this rule (if the both "
+#~ "server and NickServ mask are matched). This usually will be something "
+#~ "like <b>msg NickServ identify &lt;yourpassword&gt;</b>.<br>You can use "
+#~ "<b>msg -q</b> if you don't want the password echoed on the screen. Please "
+#~ "note that there is no leading slash in this command."
+#~ msgstr ""
+#~ "<center>Ovo je komanda koja � biti izvrena kad NickServ zatrai "
+#~ "autentifikaciju za nadimak opisan u ovom pravilu (ako se poklapa i server "
+#~ "i NickServ maska). Ovo � biti obi�o neto kao <b>msg NickServ identify &lt;"
+#~ "vaalozinka&gt; </b>.Moete koristiti \"msg -q\" ako ne elite da lozinka "
+#~ "bude vidljiva na ekranu. Molim imajte na umu da ovde nema po�tne kose "
+#~ "crte u ovoj komandi.</center>"
+
+#, fuzzy
+#~ msgid "Server mask"
+#~ msgstr "Server"
+
+#, fuzzy
+#~ msgid "Invalid NickServ Rule"
+#~ msgstr "Pogrean ID tajmera"
+
+#, fuzzy
+#~ msgid "The Identify Command can't be empty!"
+#~ msgstr "Komanda predstavljanja"
+
+#, fuzzy
+#~ msgid "Enable NickServ Identification"
+#~ msgstr "Omogu� automatsku NickServ identifikaciju"
+
+#~ msgid "Nickname"
+#~ msgstr "Nadimak"
+
+#, fuzzy
+#~ msgid "NickServ Request Mask"
+#~ msgstr "NickServ maska"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is a list of NickServ identification rules. KVIrc will use "
+#~ "them to model its automatic interaction with NickServ on all the networks."
+#~ "<br>Please be aware that this feature can cause your NickServ passwords "
+#~ "to be stolen if used improperly. Make sure that you fully understand the "
+#~ "NickServ authentication protocol.<br>In other words, be sure to know what "
+#~ "you're doing.<br>Also note that the password that you provide is stored "
+#~ "as <b>PLAIN TEXT</b>.<br>KVIrc supports also per-network NickServ "
+#~ "authentication rules that can be created in the \"Advanced...\" network "
+#~ "options (accessible from the servers dialog).</center>"
+#~ msgstr ""
+#~ "<center>Ovo je lista NickServ identifikacionih pravila. KVIrc � ih "
+#~ "koristiti da napravi svoju automatsku interakciju sa NickServ-om."
+#~ "<br>Molim imajte na umu da ova mogu�ost moe prouzrokovati da vaa NickServ "
+#~ "lozinka bude ukradena, ako je koristite neoprezno: molim pratite "
+#~ "sugestije u savetima i budite sigurni da ste potpuno razumeli protokol "
+#~ "NickServ autorizacije.<br> Drugim re�ma: budite sigurni da znate ta "
+#~ "radite.<br>Takodje imajte na umu da lozinke koje se �vaju su u �TLJIV "
+#~ "TEKST u KVIrc konfiguracionom fajlu. <br>Desni klik za dodavanje/"
+#~ "uklanjanje pravila.</center>"
+
+#, fuzzy
+#~ msgid "Add Rule"
+#~ msgstr "Dodaj zabranu (ban)"
+
+#, fuzzy
+#~ msgid "Edit Rule"
+#~ msgstr "Izmeni"
+
+#, fuzzy
+#~ msgid "Delete Rule"
+#~ msgstr "Obrii ovo pravilo"
+
+#~ msgid "Selection background color"
+#~ msgstr "Biranje boje pozadine"
+
+#~ msgid "Selection foreground color"
+#~ msgstr "Biranje boje ispisa"
+
+#~ msgid "Control char color"
+#~ msgstr "Boja kontrolnog znaka"
+
+#~ msgid "Cursor color"
+#~ msgstr "Boja kursora"
+
+#~ msgid "Warp cursor at the end of line when browsing history"
+#~ msgstr "Postavi kursor na kraj linije kad se pregleda istorija"
+
+#, fuzzy
+#~ msgid "Nick completion"
+#~ msgstr "akcija izbacivanja"
+
+#, fuzzy
+#~ msgid "Use proxy"
+#~ msgstr "Koristi proksi host"
+
+#~ msgid "Proxy"
+#~ msgstr "Proxy"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the list of available proxy servers.<br>Right-click on "
+#~ "the list to add or remove proxies.</center>"
+#~ msgstr ""
+#~ "<center>Ovo je lista mogu�h IRC servera.<br>Desni klik na listu za "
+#~ "dodavanje ili uklanjanje servera ili za druge opcije</center>"
+
+#, fuzzy
+#~ msgid "New Proxy"
+#~ msgstr "Proxy"
+
+#, fuzzy
+#~ msgid "Remove Proxy"
+#~ msgstr "Ukloni proksi"
+
+#~ msgid "Proxy:"
+#~ msgstr "Proxy:"
+
+#~ msgid "Password:"
+#~ msgstr "Lozinka:"
+
+#, fuzzy
+#~ msgid "Use IPv6 protocol"
+#~ msgstr "Koristi IpV6 protokol"
+
+#, fuzzy
+#~ msgid "&New Proxy"
+#~ msgstr "Iska�� meni"
+
+#, fuzzy
+#~ msgid "Re&move Proxy"
+#~ msgstr "Ukloni proksi"
+
+#, fuzzy
+#~ msgid "Default text encoding:"
+#~ msgstr "Izaberi fajlove za slanje"
+
+#, fuzzy
+#~ msgid "Use Language Encoding"
+#~ msgstr "Koristi mainu za ifrovanje"
+
+#, fuzzy
+#~ msgid "Minimize in tray"
+#~ msgstr "M&inimizuj"
+
+#, fuzzy
+#~ msgid "Confirm quit with active connections"
+#~ msgstr "Ne mogu da zahtevam listu: nema aktivne konekcije"
+
+#, fuzzy
+#~ msgid "Remember window properties"
+#~ msgstr "Prozor nije prona�n"
+
+#, fuzzy
+#~ msgid "Disable splash screen"
+#~ msgstr "Isklju� upozorenja parsera"
+
+#, fuzzy
+#~ msgid "Registered Users"
+#~ msgstr "Registrovani korisnici"
+
+#, fuzzy
+#~ msgid "Disable parser warnings"
+#~ msgstr "Isklju� upozorenja parsera"
+
+#~ msgid "Disable broken event handlers"
+#~ msgstr "Isklju� prekinute upravlja� doga�jima"
+
+#~ msgid "Kill broken timers"
+#~ msgstr "Ubij prekinute tajmere"
+
+#~ msgid "Send unknown commands as /RAW"
+#~ msgstr "Posalji nepoznatu komandu kao /RAW"
+
+#, fuzzy
+#~ msgid "Automatically unload unused modules"
+#~ msgstr "Automatski u� na kanal na koi si pozvan (INVITE)"
+
+#, fuzzy
+#~ msgid "Create minimized debug window"
+#~ msgstr "Kreiraj minimizirane upit prozore"
+
+#, fuzzy
+#~ msgid "Message Type"
+#~ msgstr "Tip poruke"
+
+#, fuzzy
+#~ msgid "Background:"
+#~ msgstr "Pozadina"
+
+#, fuzzy
+#~ msgid "Foreground:"
+#~ msgstr "Boja ispisa"
+
+#, fuzzy
+#~ msgid "Alert level:"
+#~ msgstr "Nivo upozorenja"
+
+#, fuzzy
+#~ msgid "Load From..."
+#~ msgstr "U�tavanje ikona..."
+
+#, fuzzy
+#~ msgid "Save As..."
+#~ msgstr "S&a�vaj kao..."
+
+#, fuzzy
+#~ msgid "Choose a Filename - KVIrc "
+#~ msgstr "Izaberi fajl za parseovanje"
+
+#~ msgid "Use global application font"
+#~ msgstr "Koristi globalni font aplikacije"
+
+#, fuzzy
+#~ msgid "Hide icons in Popup"
+#~ msgstr "&Terminal prozor"
+
+#, fuzzy
+#~ msgid "Global application font:"
+#~ msgstr "Globalni font aplikacije"
+
+#, fuzzy
+#~ msgid "Enable fake transparency"
+#~ msgstr "Omogu� deljenje (share) fajlova"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option makes all KVIrc windows look transparent.<br>You must "
+#~ "choose a blending background image to below or check the \"Use KDE "
+#~ "desktop for transparency\" option.</center>"
+#~ msgstr ""
+#~ "Ova opcija pravi sve KVIrc prozore da budu transparentni (providni)"
+#~ "<br>Morate izabrati globalnu pixmapu pozadine ispod ili "
+#~ "uklju�te<br>Preuzmi globalnu pozadinu od KDE\" opciju."
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option makes all KVIrc windows look like transparent.<br>You "
+#~ "must choose a blending background image to below.</center>"
+#~ msgstr ""
+#~ "Ova opcija � da napravi da svi KVIrc prozori budu providni.<br>Morate "
+#~ "izabrati tako� globalnu pozadinsku sliku ispod."
+
+#, fuzzy
+#~ msgid "Parent window opacity:"
+#~ msgstr "Stariji fade faktor"
+
+#, fuzzy
+#~ msgid "Blend color:"
+#~ msgstr "uske boje"
+
+#, fuzzy
+#~ msgid "Active Background"
+#~ msgstr "Aktivna pozadina"
+
+#, fuzzy
+#~ msgid "Inactive Background"
+#~ msgstr "Aktivna pozadina"
+
+#, fuzzy
+#~ msgid "Background Image"
+#~ msgstr "Pozadinska slika"
+
+#, fuzzy
+#~ msgid "Low-Contrast Foreground"
+#~ msgstr "Veza prekriva ispis"
+
+#, fuzzy
+#~ msgid "Mid-Contrast Foreground"
+#~ msgstr "Veza prekriva ispis"
+
+#, fuzzy
+#~ msgid "Default away message:"
+#~ msgstr "Predefinisana poruka odsutnosti"
+
+#~ msgid "User input exits away mode"
+#~ msgstr "Korisnikov unos izlaska iz moda odsutnosti"
+
+#, fuzzy
+#~ msgid "Away Nickname"
+#~ msgstr "Nadimak"
+
+#, fuzzy
+#~ msgid "Change nickname on away"
+#~ msgstr "Promeni nadimak pri odsutnosti"
+
+#, fuzzy
+#~ msgid "Use automatic nickname ([5 letters]AWAY)"
+#~ msgstr ""
+#~ "Koristi automatski generisan nadimak za odsutnost (prvih 5 slova + AWAY)"
+
+#, fuzzy
+#~ msgid "Custom nickname:"
+#~ msgstr "Nickname (nadimak):"
+
+#, fuzzy
+#~ msgid "Enable lag meter"
+#~ msgstr "Pogrean parametar"
+
+#, fuzzy
+#~ msgid "Nickname Colors"
+#~ msgstr "Nadimak 4"
+
+#, fuzzy
+#~ msgid "Normal:"
+#~ msgstr "Normalni mod"
+
+#, fuzzy
+#~ msgid "Selected:"
+#~ msgstr "Sa�vaj selektovano"
+
+#, fuzzy
+#~ msgid "Channel owner:"
+#~ msgstr "Mod kanala"
+
+#, fuzzy
+#~ msgid "Channel admin:"
+#~ msgstr "Mod kanala"
+
+#, fuzzy
+#~ msgid "Half-op:"
+#~ msgstr "Operatori kanala"
+
+#, fuzzy
+#~ msgid "Voice:"
+#~ msgstr "Naslov"
+
+#, fuzzy
+#~ msgid "User-op:"
+#~ msgstr "Korisnik"
+
+#, fuzzy
+#~ msgid "Away:"
+#~ msgstr "&Odsutnost"
+
+#, fuzzy
+#~ msgid "Background Colors"
+#~ msgstr "Boja pozadine"
+
+#, fuzzy
+#~ msgid "Nickname Grid"
+#~ msgstr "Nadimak 1"
+
+#, fuzzy
+#~ msgid "Draw nickname grid"
+#~ msgstr "Nije dat nadimak"
+
+#, fuzzy
+#~ msgid "Grid color:"
+#~ msgstr "uske boje"
+
+#, fuzzy
+#~ msgid "Grid type:"
+#~ msgstr "Nov tip medija"
+
+#, fuzzy
+#~ msgid "3D Buttons"
+#~ msgstr "Dodaj zabranu (ban)"
+
+#, fuzzy
+#~ msgid "Plain Grid"
+#~ msgstr "Na� slede�"
+
+#~ msgid "Show user channel icons"
+#~ msgstr "Pokai kanalne ikone korisnika"
+
+#, fuzzy
+#~ msgid "Show user channel activity indicator"
+#~ msgstr "Pokazi kanalno stanje korisnika"
+
+#, fuzzy
+#~ msgid "Enable user tooltips"
+#~ msgstr "GUI Efekat: Animiraj savete-alata"
+
+#, fuzzy
+#~ msgid "Minimize console after successful login"
+#~ msgstr "Ponovo u� na kanale po ponovnom ka�nju"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to minimize the console window after "
+#~ "successfully logging into a server.</center>"
+#~ msgstr ""
+#~ "Ova opcija omogu�va da KVIrc ponovo otvori upit prozore posle uspenog "
+#~ "ponovnog konektovanja."
+
+#, fuzzy
+#~ msgid "On Channel Kick"
+#~ msgstr "obavetenje kanala"
+
+#, fuzzy
+#~ msgid "Keep channel open"
+#~ msgstr "Zadri kanal otvoren kad te izbace (KICK)"
+
+#, fuzzy
+#~ msgid "Rejoin channel"
+#~ msgstr "Ovo nije kanal"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to attempt to rejoin a channel after "
+#~ "being kicked.</center>"
+#~ msgstr ""
+#~ "<center>Ova opcija ce prouzrokovati da KVIrc pokua<br>da ponovo u� na "
+#~ "kanal sa koga ste izba�ni.</center>"
+
+#, fuzzy
+#~ msgid "On Channel Part"
+#~ msgstr "obavetenje kanala"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to keep the channel window open "
+#~ "after leaving it.</center>"
+#~ msgstr ""
+#~ "Ova opcina omogu�va da se KVIrc vrati na kanale posle uspenog ponovnog "
+#~ "konektovanja."
+
+#, fuzzy
+#~ msgid "Automatically join channel on invite"
+#~ msgstr "Automatski u� na kanal na koi si pozvan (INVITE)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to automatically join a channel when "
+#~ "an INVITE message for that channel is received.<br><b>Warning:</b> This "
+#~ "may help spammers harass you. :)</center>"
+#~ msgstr ""
+#~ "<center>Ova opcija � prouzrokovati da KVIrc automatski<br>u� na kanal kad "
+#~ "primi INVITE poruku za taj kanal.<br>Imajte na umu da ovo moe pomo� "
+#~ "spamerima da vam dosa�ju :-)</center>"
+
+#, fuzzy
+#~ msgid "Do not update the away list"
+#~ msgstr "Zahtevaj listu"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option causes KVIrc to close the connection immediately "
+#~ "after sending the QUIT message.<br>When this option is disabled, KVIrc "
+#~ "will wait for the server to close the connection.<br>Note that if you use "
+#~ "this, your QUIT message may be not displayed.</center>"
+#~ msgstr ""
+#~ "<center>Ova opcija izaziva da KVIrc zatvori<br>konekciju momentalno posle "
+#~ "slanja QUIT (KRAJ) poruke.<br>Kad je ova opcija isklju�na , KVIrc � �kati "
+#~ "da server<br>zatvori konekciju.<br>Imajte na umu da ako koristite ovu "
+#~ "opciju, Vaa QUIT poruka moe da ne bude prikazana.</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to keep the channel window open "
+#~ "after being kicked.<br>It might be a good idea to also enable the "
+#~ "\"Rejoin channel\" option.</center>"
+#~ msgstr ""
+#~ "<center>Ova opcija � prouzrokovati da KVIrc dri<br>prozore kanala "
+#~ "otvorenim i ako Vas neko izbaci sa tih kanala.<br>Dobra je ideja da uz "
+#~ "ovu opciju aktivirate tako�<br>\"Ponovo u� na kanal po KICK-u\" opciju.</"
+#~ "center>"
+
+#, fuzzy
+#~ msgid "Do not request ban list"
+#~ msgstr "Zahtevaj listu"
+
+#, fuzzy
+#~ msgid "Certificate"
+#~ msgstr "Server X509 sertifikat"
+
+#, fuzzy
+#~ msgid "Certificate location:"
+#~ msgstr "Server X509 sertifikat"
+
+#, fuzzy
+#~ msgid "Certificate password:"
+#~ msgstr "Server X509 sertifikat"
+
+#, fuzzy
+#~ msgid "Private Key"
+#~ msgstr "privatno"
+
+#, fuzzy
+#~ msgid "Private key password:"
+#~ msgstr "Lozinka:"
+
+#, fuzzy
+#~ msgid "This executable has no SSL support."
+#~ msgstr "Ovaj KVIrc nema IPV6 podrku"
+
+#, fuzzy
+#~ msgid "Connect timeout:"
+#~ msgstr "Konektovanje isteklo"
+
+#, fuzzy
+#~ msgid "Outgoing data queue flush timeout:"
+#~ msgstr "Odlaze� red podataka -vreme isteka (100-2000 msekundi)"
+
+#, fuzzy
+#~ msgid "Limit outgoing traffic"
+#~ msgstr "Odlaze� saobra�j"
+
+#, fuzzy
+#~ msgid "Limit to 1 message every:"
+#~ msgstr "Tip poruke"
+
+#, fuzzy
+#~ msgid " usec"
+#~ msgstr "voiced korisnici"
+
+#, fuzzy
+#~ msgid "Network Interfaces"
+#~ msgstr "Mrea je nedostupna"
+
+#, fuzzy
+#~ msgid "Bind IPv4 connections to:"
+#~ msgstr "Povei IRC IPv4 konekcije na prate� interfejs"
+
+#, fuzzy
+#~ msgid "Bind IPv6 connections to:"
+#~ msgstr "Povei IRC IPv4 konekcije na prate� interfejs"
+
+#, fuzzy
+#~ msgid "Private messages"
+#~ msgstr "li�a privatna poruka"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option enables query window creation when a private message "
+#~ "(PRIVMSG) is received.<br>If you disable this, private messages will be "
+#~ "shown in the active window or a common channel.</center>"
+#~ msgstr ""
+#~ "<center>Ova opcija omogu�va kreiranje upit prozora<br>kada je primljena "
+#~ "privatna poruka.<br>Ako je isklju�te, privatna poruka � biti<br> "
+#~ "prikazana u aktivnom prozoru.</center>"
+
+#, fuzzy
+#~ msgid "Private notices"
+#~ msgstr "obavetenje servera"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option enables query window creation when a private notice "
+#~ "(NOTICE) is received.<br>If you disable this, private notices will be "
+#~ "shown in the active window or a common channel.</center>"
+#~ msgstr ""
+#~ "<center>Ova opcija omogu�va kreiranje upit prozora<br>kada je primljeno "
+#~ "privatno obavetenje.<br>Ako je isklju�te, privatna obavetenja �<br>biti "
+#~ "prikazana u aktivnom prozoru.</center>"
+
+#, fuzzy
+#~ msgid "Minimize new queries"
+#~ msgstr "M&inimizuj"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option causes newly created query windows to be immediately "
+#~ "minimized.<br>Enable this if you don't like queries popping up while "
+#~ "you're typing something in a channel. :D</center>"
+#~ msgstr ""
+#~ "<center>Ova opcija prouzrukuje da novo kreirani<br>upit prozor bude "
+#~ "momentalno minimiziran.<br>Uklju�te je ako ne volite da upiti<br>iska� "
+#~ "dok ste zauzeti vaim pisanjem na kanalu :D</center>"
+
+#, fuzzy
+#~ msgid "Enable target user tracking"
+#~ msgstr "Uklju� upit-korisnik pre�nje"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will enable target user tracking.<br>Some actions of "
+#~ "the target user (e.g. joins and parts) will be displayed in the window."
+#~ "<br></center>"
+#~ msgstr ""
+#~ "<center>Ova opcija omogu�va upit-korisnikov pra�nje:<br>acije kostisnika "
+#~ "u aktuelnom upitu<br>� biti prikazane u aktivnom prozoru.<br>(Na primer "
+#~ "ovim moete da znate kad on ulazi i izlazi sa kanala).</center>"
+
+#, fuzzy
+#~ msgid "Popup notifier on new query message"
+#~ msgstr "ignorisana poruka korisnika"
+
+#~ msgid "Enable word highlighting"
+#~ msgstr "Omogu� naglaavanje re�"
+
+#, fuzzy
+#~ msgid "Words to highlight:"
+#~ msgstr "Omogu� URL isticanje"
+
+#, fuzzy
+#~ msgid "Highlight messages containing my nickname"
+#~ msgstr "Uvek naglasi poruke sa mojim nadimkom u njima"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>If this option is enabled, KVIrc will highlight any user message "
+#~ "containing your current nickname</center>"
+#~ msgstr ""
+#~ "<center>Ako ozna�te ovu opciju , vide�te ovaj dijalog svaki put kad "
+#~ "pokrenete KVIrc</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>If this option is enabled, KVIrc will (attempt to) flash the "
+#~ "system taskbar entry when a highlighted message is printed and KVIrc is "
+#~ "not the active window</center>"
+#~ msgstr ""
+#~ "<center>Ako ozna�te ovu opciju , vide�te ovaj dijalog svaki put kad "
+#~ "pokrenete KVIrc</center>"
+
+#, fuzzy
+#~ msgid "Popup the notifier window on highlighted messages"
+#~ msgstr "ignorisana poruka korisnika"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>If this option is enabled, KVIrc will popup a little notifier "
+#~ "window in the low right corner of your desktop when a highlighted message "
+#~ "is printed and KVIrc is not the active window</center>"
+#~ msgstr ""
+#~ "<center>Ako ozna�te ovu opciju , vide�te ovaj dijalog svaki put kad "
+#~ "pokrenete KVIrc</center>"
+
+#, fuzzy
+#~ msgid "Taskbar Alert"
+#~ msgstr "Taskbar"
+
+#, fuzzy
+#~ msgid "Restrict alert"
+#~ msgstr "&Obnovi"
+
+#, fuzzy
+#~ msgid "Alert for highlighted words"
+#~ msgstr "Naglaene re�"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>If this option is enabled, the taskbar will also alert for "
+#~ "messages which contain a word from the highlighted words list above.</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Ako ozna�te ovu opciju , vide�te ovaj dijalog svaki put kad "
+#~ "pokrenete KVIrc</center>"
+
+#, fuzzy
+#~ msgid "Alert for query messages"
+#~ msgstr "ignorisana poruka korisnika"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>If this option is enabled, the taskbar will also alert for "
+#~ "messages which are shown in queries.</center>"
+#~ msgstr ""
+#~ "<center>Ako ozna�te ovu opciju , vide�te ovaj dijalog svaki put kad "
+#~ "pokrenete KVIrc</center>"
+
+#, fuzzy
+#~ msgid "Use custom alert level"
+#~ msgstr "Nivo upozorenja"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>If this option is enabled, KVIrc will alert in the taskbar only "
+#~ "if the specified alert level is reached.</center>"
+#~ msgstr ""
+#~ "<center>Ako ozna�te ovu opciju , vide�te ovaj dijalog svaki put kad "
+#~ "pokrenete KVIrc</center>"
+
+#, fuzzy
+#~ msgid "Minimum alert level:"
+#~ msgstr "Nivo upozorenja"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option sets the minimum alert level for the taskbar.</center>"
+#~ msgstr ""
+#~ "<center>Ova opcija ce prouzrokovati da KVIrc pokua<br>da ponovo u� na "
+#~ "kanal sa koga ste izba�ni.</center>"
+
+#, fuzzy
+#~ msgid "Query windows"
+#~ msgstr "&Terminal prozor"
+
+#, fuzzy
+#~ msgid "Channel windows"
+#~ msgstr "&Naslai prozore"
+
+#, fuzzy
+#~ msgid "DCC Chat windows"
+#~ msgstr "&Naslai prozore"
+
+#, fuzzy
+#~ msgid "Console windows"
+#~ msgstr "&Terminal prozor"
+
+#, fuzzy
+#~ msgid "<b>http://</b> handler command:"
+#~ msgstr "Nema takve komande modula"
+
+#, fuzzy
+#~ msgid "<b>https://</b> handler command:"
+#~ msgstr "Nema takve komande modula"
+
+#, fuzzy
+#~ msgid "<b>ftp://</b> handler command:"
+#~ msgstr "Nema takve komande modula"
+
+#, fuzzy
+#~ msgid "<b>mailto:</b> handler command:"
+#~ msgstr "Nema takve komande modula"
+
+#, fuzzy
+#~ msgid "<b>file://</b> handler command:"
+#~ msgstr "Nema takve komande modula"
+
+#, fuzzy
+#~ msgid "Unknown protocol handler command:"
+#~ msgstr "Nepoznata komanda"
+
+#~ msgid "Enable ident service (bad practice on UNIX!)"
+#~ msgstr "Omogu� ident servis (loa praksa na UNIX-u!)"
+
+#, fuzzy
+#~ msgid "Ident username:"
+#~ msgstr "Ident korisni�o ime"
+
+#, fuzzy
+#~ msgid "Service port:"
+#~ msgstr "Port servisa"
+
+#, fuzzy
+#~ msgid "IPv6 Settings"
+#~ msgstr "&Podeavanja"
+
+#, fuzzy
+#~ msgid "Enable service for IPv6"
+#~ msgstr "Omogu� IPV6 servis"
+
+#, fuzzy
+#~ msgid "IP stack treats IPv4 as part of IPv6 namespace"
+#~ msgstr "Sistemov stek tretira IPV4 kao deo IPV6 prostora za ime"
+
+#, fuzzy
+#~ msgid ""
+#~ "<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident "
+#~ "daemon that implements only a limited subset of the Identification "
+#~ "Protocol specifications. If it is possible, install a real ident daemon.</"
+#~ "p>"
+#~ msgstr ""
+#~ "<center>Upozorenje: ovo je <b>RFC1413/913 nekompatibilan</b> ident demon "
+#~ "koji implementira samo odre�ne podsetove IDENTD servis specifikacija. Ako "
+#~ "je mogu�, instalirajte stvarni ident demon.</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident "
+#~ "daemon that implements only a limited subset of the Identification "
+#~ "Protocol specifications.<br>On UNIX, you may also need root privileges to "
+#~ "bind to the auth port (113).<br>It is <b>highly recommended</b> that a "
+#~ "<b>real</b> system-wide ident daemon be used instead, or none at all if "
+#~ "ident is not required.</p>"
+#~ msgstr ""
+#~ "<center>Upozorenje: ovo je <b>RFC1413/913 nekompatibilan</b> ident demon "
+#~ "koji implementira samo odre�ne podsetove IDENTD servis specifikacija. "
+#~ "<br>Na UNIX-u moe vam tako� budu potrebne root privilegije da spojite "
+#~ "port 113.<br> To je definitivno dobra ideja da se koristi <b>stvarni</b> "
+#~ "sistem-wide ident demon.</center>"
+
+#, fuzzy
+#~ msgid "Use flood protection (recommended)"
+#~ msgstr "Koristi flood zatitu"
+
+#, fuzzy
+#~ msgid " requests"
+#~ msgstr "DCC zahtev"
+
+#, fuzzy
+#~ msgid "Use online notify list"
+#~ msgstr "Koristi listu obavetenja"
+
+#, fuzzy
+#~ msgid "Show notifications in active window"
+#~ msgstr "Promene liste obavetenja u aktivni prozor"
+
+#, fuzzy
+#~ msgid "Flash window when users are going online"
+#~ msgstr "lista obavetenja ulasci"
+
+#, fuzzy
+#~ msgid "Popup notifier when users are going online"
+#~ msgstr "lista obavetenja ulasci"
+
+#, fuzzy
+#~ msgid "Advanced configuration"
+#~ msgstr "&Sa�vaj podeavanja"
+
+#~ msgid "Check USERHOST for online users"
+#~ msgstr "Proveri USERHOST za korisnike na vezi"
+
+#, fuzzy
+#~ msgid "Use \"smart\" notify list manager"
+#~ msgstr "Koristi \"inteligentan\" upravlja�liste obavetenja"
+
+#, fuzzy
+#~ msgid "Use the WATCH method if available"
+#~ msgstr "Koristi \"WATCH\" metodu ako je server podrava"
+
+#, fuzzy
+#~ msgid "Check interval (in seconds)"
+#~ msgstr "Vreme isteka ka�nja (u milisek)"
+
+#, fuzzy
+#~ msgid "Use tree taskbar"
+#~ msgstr "Taskbar"
+
+#, fuzzy
+#~ msgid "Show window icons in taskbar"
+#~ msgstr "Pokai zadebljane nadimke"
+
+#, fuzzy
+#~ msgid "Show IRC context indicator in taskbar"
+#~ msgstr "&Nov irc kontekst"
+
+#, fuzzy
+#~ msgid "Enable window tooltips"
+#~ msgstr "GUI Efekat: Animiraj savete-alata"
+
+#, fuzzy
+#~ msgid "Text/Alert Colors"
+#~ msgstr "Zatvori"
+
+#, fuzzy
+#~ msgid "Alert Level 1:"
+#~ msgstr "Nivo upozorenja"
+
+#, fuzzy
+#~ msgid "Alert Level 2:"
+#~ msgstr "Nivo upozorenja"
+
+#, fuzzy
+#~ msgid "Alert Level 3:"
+#~ msgstr "Nivo upozorenja"
+
+#, fuzzy
+#~ msgid "Alert Level 4:"
+#~ msgstr "Nivo upozorenja"
+
+#, fuzzy
+#~ msgid "Alert Level 5:"
+#~ msgstr "Nivo upozorenja"
+
+#, fuzzy
+#~ msgid "Progress bar color:"
+#~ msgstr "Linija progresa"
+
+#, fuzzy
+#~ msgid "Minimum width:"
+#~ msgstr "Minimalna irina"
+
+#, fuzzy
+#~ msgid "Maximum width:"
+#~ msgstr "Maksimalna irina"
+
+#, fuzzy
+#~ msgid "Minimized:"
+#~ msgstr "M&inimizuj"
+
+#, fuzzy
+#~ msgid "Minimum width of buttons:"
+#~ msgstr "Minimalna irina"
+
+#, fuzzy
+#~ msgid "Maximum number of rows:"
+#~ msgstr "ograni�n broj korisnika"
+
+#, fuzzy
+#~ msgid "Private/channel notices"
+#~ msgstr "ifrovano obavetenje kanala"
+
+#, fuzzy
+#~ msgid "Use verbose ignore (show messages in console)"
+#~ msgstr "Preopirno ignorisanje: (pokai ignorisane poruke u konzoli)"
+
+#, fuzzy
+#~ msgid "Silent anti-spam (no warnings)"
+#~ msgstr "Tihi anti-spam (nema povratnih stvari za sve: samo ignorii)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>Enable this option if you can't accept incoming connections."
+#~ "<br>KVIrc will try to use different methods to send and receive files."
+#~ "<br>Please note that these methods may NOT work when communicating with a "
+#~ "non-KVIrc client.</center>"
+#~ msgstr ""
+#~ "Uklju�te ovu opciju ako ne moete da prihvatate dolaze� konekcije<br> "
+#~ "KVIrc � probati da koristi razli�te tehnike za slanje i primanje fajlova."
+#~ "<br> Imajte na umu ove tehnike mogu da NE funkcioniu sa drugim "
+#~ "klijentima...."
+
+#, fuzzy
+#~ msgid "Network Properties"
+#~ msgstr "Podeavanja"
+
+#, fuzzy
+#~ msgid "DCC socket timeout:"
+#~ msgstr "DCC vreme isteka priklju�a (sek)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the amount of time that KVIrc will wait for a response "
+#~ "before assuming that a DCC has failed because the remote client was "
+#~ "unable to connect to our listening socket.</center>"
+#~ msgstr ""
+#~ "Ovo je vreme za koje � KVIrc da �ka pre nego sto shvati da je DCC "
+#~ "neuspe�n zbog toga to udaljeni krajnji nije u mogu�osti da se zaka� na na "
+#~ "sluaju� priklju�k."
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>Enable this option if you are on a multihost machine and want to "
+#~ "force one of the available IP addresses to be used for outgoing DCCs."
+#~ "<br>This is especially useful when you use IPv6 and IPv4 addresses."
+#~ "<br>You can force KVIrc to always choose the IPv4 interface.</center>"
+#~ msgstr ""
+#~ "Uklju�te ovu opciju ako ste na multi-ip masini i elite da forsirate jednu "
+#~ "od IP da bude kori�na za odlaze� DCC-ove.<br>Ovo je naro�to korisno kada "
+#~ "koristite IPV6 i IPV4 adrese.<br>Moete naterati KVIrc da uvek izabere "
+#~ "IPV4 interfejs. Stavite ime interfejsa ili adresu u polje ispod (moe biti "
+#~ "tako� neto kao ppp0 !)"
+
+#, fuzzy
+#~ msgid "Listen on address/interface:"
+#~ msgstr "Ne mogu da dobijem adresu interfejsa %s"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the IP address or name of the interface to use by default "
+#~ "for outgoing DCC transfers.<br>On UNIX systems that support it, you can "
+#~ "also specify IPv4 interface names (such as <b>ppp0</b>).<br>If you set it "
+#~ "to <b>0.0.0.0</b>, KVIrc will try to use the first available IPv4 "
+#~ "interface</center>"
+#~ msgstr ""
+#~ "Ovo je adresa ili ime interfejsa za kori�nje za odlaze� DCC prenose.<br> "
+#~ "Na UNIX sistemima koji ga podravaju , tako� moete koristiti IPV4 imena "
+#~ "interfejsa (kao to je ppp0).<br>Ako ga podesite na 0.0.0.0 , KVIrc � "
+#~ "pokuati da prona� prvi mogu� IPV4 interfejs."
+
+#, fuzzy
+#~ msgid "Use user-defined port range"
+#~ msgstr "Korisni�i definisan default opseg portova"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>Enable this option if you want specify a local port range for DCC."
+#~ "</center>"
+#~ msgstr ""
+#~ "Uklju�te ovu opciju ako elite da definiete opseg lokalnog porta za DCC"
+
+#, fuzzy
+#~ msgid "Lowest port:"
+#~ msgstr " Host (ip:port) :"
+
+#, fuzzy
+#~ msgid "Highest port:"
+#~ msgstr "Port servisa"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>Enable this option if you want to always send a fake IP address "
+#~ "in your DCC requests.<br>This might be useful if you're behind a router "
+#~ "with a static address that does network address translation (NAT) and "
+#~ "forwards all or a range of ports.</center>"
+#~ msgstr ""
+#~ "Uklju�te ovu opciju ako elite da se uvek alje lana IP adresa u Vaim DCC "
+#~ "zahtevima.<br>Ovo moe biti korisno ako ste iza rutera koji ima prevo�nje "
+#~ "mrenih adresa.<br>Tako� ce vam biti potreban gornji opseg portova..."
+
+#, fuzzy
+#~ msgid "Send address/interface:"
+#~ msgstr "Ne mogu da dobijem adresu interfejsa %s"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the fixed address that will be sent with all DCC requests "
+#~ "if you enable the option above.</center>"
+#~ msgstr ""
+#~ "Ovo je lana adresa koja � biti poslata sa svim DCC zahtevima ako uklju�te "
+#~ "gornju opciju"
+
+#, fuzzy
+#~ msgid "Maximum number of DCC sessions"
+#~ msgstr "ograni�n broj korisnika"
+
+#, fuzzy
+#~ msgid "Open all minimized"
+#~ msgstr "Kreiraj minimizirano"
+
+#, fuzzy
+#~ msgid "On Incoming File"
+#~ msgstr "Dolaze� saobra�j"
+
+#, fuzzy
+#~ msgid "Automatically accept"
+#~ msgstr "Automatski prihvati"
+
+#, fuzzy
+#~ msgid "Open minimized when auto-accepted"
+#~ msgstr "Napravi minimizirano kad automatski-prihvata"
+
+#, fuzzy
+#~ msgid "Automatically resume when auto-accepted"
+#~ msgstr "Napravi minimizirano kad automatski-prihvata"
+
+#, fuzzy
+#~ msgid "Automatically close on completion"
+#~ msgstr "Automatski u� na kanal na koi si pozvan (INVITE)"
+
+#, fuzzy
+#~ msgid "Notify completion in console"
+#~ msgstr "Obavesti o uspenom u konzoli"
+
+#, fuzzy
+#~ msgid "Notify completion in notifier"
+#~ msgstr "Obavesti o uspenom u konzoli"
+
+#, fuzzy
+#~ msgid "Guess save path from media type"
+#~ msgstr "Smatrana vrsta medija"
+
+#, fuzzy
+#~ msgid "Maximum number of DCC transfers"
+#~ msgstr "ograni�n broj korisnika"
+
+#, fuzzy
+#~ msgid "Download folder:"
+#~ msgstr "Direktorijum za svla�nje"
+
+#, fuzzy
+#~ msgid "Speed limits"
+#~ msgstr "Brzina (KBit/sek)"
+
+#, fuzzy
+#~ msgid "bytes/sec"
+#~ msgstr "0 bajtova/sek"
+
+#, fuzzy
+#~ msgid "Packet size:"
+#~ msgstr "Veli�na paketa (bajtova)"
+
+#, fuzzy
+#~ msgid "Idle interval:"
+#~ msgstr "Ident korisni�o ime"
+
+#, fuzzy
+#~ msgid "Use fast send (send ahead)"
+#~ msgstr "Koristi brzo slanja (ili slanje napred)"
+
+#, fuzzy
+#~ msgid "On Chat Request"
+#~ msgstr "DCC %s zahtev"
+
+#, fuzzy
+#~ msgid "On Voice Request"
+#~ msgstr "voiced korisnici"
+
+#~ msgid "Force half-duplex mode on sound device"
+#~ msgstr "Forsiraj half-duplex mod na muzi�om ure�ju"
+
+#, fuzzy
+#~ msgid "Volume slider controls PCM, not Master"
+#~ msgstr "Kliza�ja�ne tona kontrolie PCM, ne glavnu ja�nu"
+
+#, fuzzy
+#~ msgid "Sound device:"
+#~ msgstr "Muzi�i ure�j"
+
+#, fuzzy
+#~ msgid "Mixer device:"
+#~ msgstr "Mikser ure�j"
+
+#, fuzzy
+#~ msgid "Pre-buffer size:"
+#~ msgstr "Veli�na pre-bafera"
+
+#~ msgid "Abort"
+#~ msgstr "Prekini"
+
+#, fuzzy
+#~ msgid "Failed to start the download"
+#~ msgstr "Ne mogu da odredim lokalni port"
+
+#, fuzzy
+#~ msgid "Hide avatars in userlist"
+#~ msgstr "Avatar slika"
+
+#, fuzzy
+#~ msgid "Use avatar"
+#~ msgstr "Avatar slika"
+
+#, fuzzy
+#~ msgid "Avatar Download Failed - KVIrc"
+#~ msgstr "Izaberi fajl za ponudu"
+
+#, fuzzy
+#~ msgid "Scaling"
+#~ msgstr "Opis"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will force KVIrc to scale avatars shown in the "
+#~ "userlist.<br>Avatars will be scaled to fit the constraints set below. "
+#~ "Better keep this option on. :)</center>"
+#~ msgstr ""
+#~ "<center>Ova opcija ce forsirati KVIrc da prilagodi veli�nu avatara<br>da "
+#~ "bi je prikazao u listi korisnika.<br>Avatari � biti smanjeni da bi "
+#~ "popunili <br> pravougaonik definisan ispod. Bolje da drite ovu opciju "
+#~ "uklju�nom :-).</center>"
+
+#, fuzzy
+#~ msgid "Image width:"
+#~ msgstr "Minimalna irina"
+
+#, fuzzy
+#~ msgid "Request CTCP"
+#~ msgstr "Zahtevaj listu"
+
+#~ msgid "Request missing avatars"
+#~ msgstr "Zahtevaj avatare koji nedostaju"
+
+#, fuzzy
+#~ msgid "Maximum requested file size:"
+#~ msgstr "Maksimalna veli�na bafera"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to send a DCC GET request when "
+#~ "someone sets an avatar and there is no cached copy available.</center>"
+#~ msgstr ""
+#~ "Ova opcija omogu�va da KVIrc ponovo otvori upit prozore posle uspenog "
+#~ "ponovnog konektovanja."
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the maximum size for avatar images that will be "
+#~ "automatically requested.<br>A reasonable value might be 102400 bytes (100 "
+#~ "K).</center>"
+#~ msgstr ""
+#~ "<center>Ovo je maksimalna veli�na za avatar slike <br>koji � biti "
+#~ "automatski zahtevani.(Pogledajte opciju ispod)<br>Rezonska vrednost moe "
+#~ "biti 1024000 Bajtova=100 KB</center>"
+
+#, fuzzy
+#~ msgid "Automatically accept incoming avatars"
+#~ msgstr "Automatsko prihvatanje dolaze�h avatara"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to auto-accept DCC SEND requests for "
+#~ "incoming avatars.<br>If you're using the \"Request missing avatars\" "
+#~ "option above, enabling this may by useful.<br>Avatars will be saved in "
+#~ "the local KVIrc directory.</center>"
+#~ msgstr ""
+#~ "<center>Ova opcija omogu�va KVIrc-u da auto-prihvata<br> DCC SEND zahteve "
+#~ "za dolaze� avatare<br>(one koji mogu biti zahtevani)<br>ako ste koristili "
+#~ "\"Zahtevaj nedostaju� avatare\" opciju<br>iznad, kori�nje ove moe biti "
+#~ "dobra ideja.<br>Avatari � biti sa�vani u KVIrc lokalnom direktorijumu<br> "
+#~ "i automatski podeeni za izvornog korisnika (vlasnika).</center>"
+
+#, fuzzy
+#~ msgid "Remember avatars for registered users"
+#~ msgstr "Postavi zadnji avatar kao predefinisani za registrovanog korisnika"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>Use a user's last known avatar by default (only for users that "
+#~ "are registered).</center>"
+#~ msgstr ""
+#~ "<center>Postavlja poslednji korisnikov avatar kao predefinisan<br>(ali "
+#~ "samo za korisnike koje su registrovani.<br>"
+
+#, fuzzy
+#~ msgid "Avatar offer timeout:"
+#~ msgstr "Vreme isteka avatar ponude u sekundama"
+
+#, fuzzy
+#~ msgid "Network Details"
+#~ msgstr "Podeavanja"
+
+#, fuzzy
+#~ msgid "<center>Put here a brief description of the network.</center>"
+#~ msgstr ""
+#~ "<center>Klikni ovde za editovanje naprednih opcija za ovaj server...</"
+#~ "center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the <b>username</b> that KVIrc will use to login to "
+#~ "servers on this network.\n"
+#~ "If this field is left empty (most common case), KVIrc will use the "
+#~ "default username specified in the \"Identity\" options tab.</center>"
+#~ msgstr ""
+#~ "<center>Ovo je <b>korisni�o ime</b> koje � KVIrc koristiti za login na "
+#~ "ovaj server.\n"
+#~ "Ako ostavite ovo polje prazno (veoma vaan slu�j), KVIrc � koristiti "
+#~ "predefinisano korisni�o ime navedeno u \"Identitet\" jezi�u u opcijama.</"
+#~ "center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>You can specify a \"special\" <b>nickname</b> that will be used "
+#~ "to log in to the servers on this network.<br>If this field is left empty "
+#~ "(most common case), the default nickname (specified in the \"Identity\" "
+#~ "settings) will be used.</center>"
+#~ msgstr ""
+#~ "<center> Moete definisati \"specijalan\" <b>nadimak</b> koji moe biti "
+#~ "kori�n za logovanje na ovaj server. <br> Ako ostavite ovo polje prazno "
+#~ "(veoma �st slu�j), predefinisan nadimak (definisan u \"identity\" tab-u) "
+#~ "� biti kori�n. </center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>You can specify a \"special\" <b>real name</b> that will be used "
+#~ "to login with the servers on this network.<br>If you leave this field "
+#~ "empty (most common case), the default \"real name\" (specified in the "
+#~ "\"Identity\" settings) will be used.</center>"
+#~ msgstr ""
+#~ "<center>Moete definisati \"specijalno <b>stvarno ime</b> koje ce biti "
+#~ "kori�no za logovanje na ovaj server. <br> Ako ostavite ovo polje prazno "
+#~ "(�sto kori�n slu�j), predefinisano \"stvarno ime\" (definisano u "
+#~ "\"identity\" tab-u) � biti kori�no.</center>"
+
+#, fuzzy
+#~ msgid "Encoding:"
+#~ msgstr "dolaze�"
+
+#, fuzzy
+#~ msgid "Connect to this network at startup"
+#~ msgstr "Isteklo je vreme za povezivanje"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to automatically connect to this "
+#~ "network at startup</center>"
+#~ msgstr ""
+#~ "<center>Ova opcija ce prouzrokovati da KVIrc pokua<br>da ponovo u� na "
+#~ "kanal sa koga ste izba�ni.</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>The following commands will be executed after a connection to a "
+#~ "server in this network has been established.<br><b>Important:</b> Enter "
+#~ "commands <b>without</b> a preceding slash (e.g. <tt>quote pass secret</"
+#~ "tt> instead of <tt>/quote pass secret</tt>).<br>KVIrc will first send the "
+#~ "USER command, then eventually PASS and NICK and then execute this command "
+#~ "sequence.</center>"
+#~ msgstr ""
+#~ "<center>Prate� komande � biti izvrene posle uspostavljene konekcije.<br> "
+#~ "KVIrc � prvo poslati USER komandu , onda eventualno PASS i NICK i onda � "
+#~ "izvriti ovu<br>sekvencu komandi.<br>Ovo je prvenstveno korisno za "
+#~ "bouncere</center>"
+
+#, fuzzy
+#~ msgid "On Connect"
+#~ msgstr "Povei se"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>The following commands will be executed after a successful login "
+#~ "to a server in this network.<br><b>Important:</b> Enter commands "
+#~ "<b>without</b> a preceding slash (e.g. <tt>quote privatelog</tt> instead "
+#~ "of <tt>/quote privatelog</tt>).<br>This is useful for automatically "
+#~ "opening queries, setting variables, etc.</center>"
+#~ msgstr ""
+#~ "<center>Prate� komande � biti izvrene posle uspostavljene konekcije.<br> "
+#~ "KVIrc � prvo poslati USER komandu , onda eventualno PASS i NICK i onda � "
+#~ "izvriti ovu<br>sekvencu komandi.<br>Ovo je prvenstveno korisno za "
+#~ "bouncere</center>"
+
+#, fuzzy
+#~ msgid "On Login"
+#~ msgstr "odlaze�"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is a list of NickServ identification rules. KVIrc will use "
+#~ "them to model its automatic interaction with NickServ on this network."
+#~ "<br>Please be aware that this feature can cause your NickServ passwords "
+#~ "to be stolen if used improperly. Make sure that you fully understand the "
+#~ "NickServ authentication protocol.<br>In other words, be sure to know what "
+#~ "you're doing.<br>Also note that the password that you provide is stored "
+#~ "as <b>PLAIN TEXT</b>.</center>"
+#~ msgstr ""
+#~ "<center>Ovo je lista NickServ identifikacionih pravila. KVIrc � ih "
+#~ "koristiti da napravi svoju automatsku interakciju sa NickServ-om."
+#~ "<br>Molim imajte na umu da ova mogu�ost moe prouzrokovati da vaa NickServ "
+#~ "lozinka bude ukradena, ako je koristite neoprezno: molim pratite "
+#~ "sugestije u savetima i budite sigurni da ste potpuno razumeli protokol "
+#~ "NickServ autorizacije.<br> Drugim re�ma: budite sigurni da znate ta "
+#~ "radite.<br>Takodje imajte na umu da lozinke koje se �vaju su u �TLJIV "
+#~ "TEKST u KVIrc konfiguracionom fajlu. <br>Desni klik za dodavanje/"
+#~ "uklanjanje pravila.</center>"
+
+#, fuzzy
+#~ msgid "Server Details"
+#~ msgstr "Detalji servera"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is a brief description of this server. This field has no "
+#~ "restrictions but many server lists use it to describe the server's "
+#~ "physical location</center>"
+#~ msgstr ""
+#~ "<center>Ovo je kratak opis servera: ovo polje nema ograni�nja ali mnoge "
+#~ "liste servera ga koriste za opis fizi�e lokacije servera</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the <b>username</b> that KVIrc will use to login to this "
+#~ "server.\n"
+#~ "If this field is left empty (most common case), KVIrc will first look if "
+#~ "an username is specified for the network that this server belongs to, and "
+#~ "if that is empty then KVIrc will use the default username specified in "
+#~ "the \"Identity\" options tab.</center>"
+#~ msgstr ""
+#~ "<center>Ovo je <b>korisni�o ime</b> koje � KVIrc koristiti za login na "
+#~ "ovaj server.\n"
+#~ "Ako ostavite ovo polje prazno (veoma vaan slu�j), KVIrc � koristiti "
+#~ "predefinisano korisni�o ime navedeno u \"Identitet\" jezi�u u opcijama.</"
+#~ "center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>If this server requires a password, put it in this field, "
+#~ "otherwise leave it empty.</center>"
+#~ msgstr ""
+#~ "<center>Ako server zahteva lozinku, stavite je u ovo polje, u protivnom "
+#~ "nek ostane prazno.</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>You can specify a \"special\" <b>nickname</b> that will be used "
+#~ "to log in to this server.<br>If this field is left empty (most common "
+#~ "case), KVIrc will first look if a nickname is specified for the network "
+#~ "that this server belongs to, and if that is empty then the default "
+#~ "nickname (specified in the \"Identity\" settings) will be used.</center>"
+#~ msgstr ""
+#~ "<center> Moete definisati \"specijalan\" <b>nadimak</b> koji moe biti "
+#~ "kori�n za logovanje na ovaj server. <br> Ako ostavite ovo polje prazno "
+#~ "(veoma �st slu�j), predefinisan nadimak (definisan u \"identity\" tab-u) "
+#~ "� biti kori�n. </center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>You can specify a \"special\" <b>real name</b> that will be used "
+#~ "to login with this server.<br>If you leave this field empty (most common "
+#~ "case), KVIrc will first look if a real name is specified for the network "
+#~ "that this server belongs to, and if that is empty the default \"real name"
+#~ "\" (specified in the \"Identity\" settings) will be used.</center>"
+#~ msgstr ""
+#~ "<center>Moete definisati \"specijalno <b>stvarno ime</b> koje ce biti "
+#~ "kori�no za logovanje na ovaj server. <br> Ako ostavite ovo polje prazno "
+#~ "(�sto kori�n slu�j), predefinisano \"stvarno ime\" (definisano u "
+#~ "\"identity\" tab-u) � biti kori�no.</center>"
+
+#, fuzzy
+#~ msgid "Use default user mode"
+#~ msgstr "Mogu� modovi korisnika:"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the <b>IP address</b> of this server, it is here for "
+#~ "caching purposes.<br>If you leave this field empty, KVIrc will fill it in "
+#~ "the first time it connects to the server. If you enable the \"cache IP "
+#~ "address\" option below, KVIrc will use it as a \"cached result\" and "
+#~ "avoid looking it up again.</center>"
+#~ msgstr ""
+#~ "<center>Ovo je <b>IP adresa</b> servera, ona je ovde u svrsi keiranja. "
+#~ "<br>Ako ostavite ovo polje prazno, KVIrc � ga popuniti prvi put kada se "
+#~ "zaka� na server: Iako ste omogu�li \"keiraj IP adrese\" u opciji ispod, "
+#~ "KVIrc � je koristiti kao \"keiran rezultat\" i izbe� ponovni pregled "
+#~ "servera za njegovom IP adresom.</center>"
+
+#~ msgid "Cache IP address"
+#~ msgstr "Keiraj IP adresu"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This check will enable <b>IP address caching</b> for this server:"
+#~ "<br>DNS lookups can be time-consuming and might be blocking on some "
+#~ "platforms; this option will cause KVIrc to look up the server hostname "
+#~ "only once.<br><br> Advanced: you can also use this option to force a "
+#~ "certain server name to resolve to a fixed ip address when either the dns "
+#~ "for that server is temporairly unreachable or you want to avoid the round-"
+#~ "robin lookups.</center>"
+#~ msgstr ""
+#~ "<center>Ova potvrda � omogu�ti <b>Keiranje IP adrese</b> za ovaj server:"
+#~ "<br>DNS provera moe biti gubljenje vremena i moe biti blokirana na "
+#~ "pojedinim platformama; ova opcija � prouzrokovati da KViIrc proveri "
+#~ "serverovo ime hosta samo jednom.</center>"
+
+#, fuzzy
+#~ msgid "Use SSL protocol"
+#~ msgstr "Kori�nje IpV6 protokola"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This check will cause the connection to use the <b>Secure Socket "
+#~ "Layer</b> encryption support. Obviously, this server must have support "
+#~ "for this, too. :)</center>"
+#~ msgstr ""
+#~ "<center>Ova opcija ce omogu�ti da kod konektovanja koristite <b>Sigurni "
+#~ "Nivo Priklju�a (SSL)</b><br>podrku. O�gledno server tako� mora imati "
+#~ "podrku za SSL :-)</center>"
+
+#, fuzzy
+#~ msgid "Connect to this server at startup"
+#~ msgstr "Isteklo je vreme za povezivanje"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to connect to the IRC server when it "
+#~ "is started.</center>"
+#~ msgstr ""
+#~ "<center>Ova opcija ce prouzrokovati da KVIrc pokua<br>da ponovo u� na "
+#~ "kanal sa koga ste izba�ni.</center>"
+
+#, fuzzy
+#~ msgid "Use Network Encoding"
+#~ msgstr "Koristi mainu za ifrovanje"
+
+#, fuzzy
+#~ msgid "Link filter:"
+#~ msgstr "Sluanje neuspeno"
+
+#, fuzzy
+#~ msgid "Id:"
+#~ msgstr "Id"
+
+#, fuzzy
+#~ msgid "Proxy server:"
+#~ msgstr "irc server"
+
+#, fuzzy
+#~ msgid "Direct connection"
+#~ msgstr "nema konekcije"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>The following commands will be executed after a connection has "
+#~ "been established.<br><b>Important:</b> Enter commands <b>without</b> a "
+#~ "preceding slash (e.g. <tt>quote pass secret</tt> instead of <tt>/quote "
+#~ "pass secret</tt>).<br>KVIrc will first send the USER command, then "
+#~ "eventually PASS and NICK and then execute this command sequence.<br>This "
+#~ "is particularly useful for IRC bouncers that require login commands.</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Prate� komande � biti izvrene posle uspostavljene konekcije.<br> "
+#~ "KVIrc � prvo poslati USER komandu , onda eventualno PASS i NICK i onda � "
+#~ "izvriti ovu<br>sekvencu komandi.<br>Ovo je prvenstveno korisno za "
+#~ "bouncere</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>The following commands will be executed after a successful login "
+#~ "to this server.<br><b>Important:</b> Enter commands <b>without</b> a "
+#~ "preceding slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote "
+#~ "privatelog</tt>).<br>This is useful for automatically opening queries, "
+#~ "setting variables, etc.</center>"
+#~ msgstr ""
+#~ "<center>Prate� komande � biti izvrene posle uspostavljene konekcije.<br> "
+#~ "KVIrc � prvo poslati USER komandu , onda eventualno PASS i NICK i onda � "
+#~ "izvriti ovu<br>sekvencu komandi.<br>Ovo je prvenstveno korisno za "
+#~ "bouncere</center>"
+
+#~ msgid "Server"
+#~ msgstr "Server"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the list of available IRC servers.<br>Right-click on the "
+#~ "list to add or remove servers and perform other actions.<br>Double-click "
+#~ "on a item for advanced options.</center>"
+#~ msgstr ""
+#~ "<center>Ovo je lista mogu�h IRC servera.<br>Desni klik na listu za "
+#~ "dodavanje ili uklanjanje servera ili za druge opcije</center>"
+
+#~ msgid "New Network"
+#~ msgstr "Nova Mrea"
+
+#, fuzzy
+#~ msgid "New Server"
+#~ msgstr "Mrea/Server"
+
+#, fuzzy
+#~ msgid "Remove Network/Server"
+#~ msgstr "Ukloni mreu"
+
+#, fuzzy
+#~ msgid "Paste Server"
+#~ msgstr "Prenesi server"
+
+#, fuzzy
+#~ msgid "Import List"
+#~ msgstr "Uvezi"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the name of the currently selected server or network</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Ovo je <b>ime hosta</b> trenutno izabranog servera.</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This check identifies IPv6 servers.<br>If enabled, KVIrc will "
+#~ "attempt to use the IPv6 protocol (thus your OS <b>must</b> have a working "
+#~ "IPv6 stack and you <b>must</b> have an IPv6 connection).</center>"
+#~ msgstr ""
+#~ "<center>Ova opcija identifikuje IPV6 servere.<br>Ako je uklju�na, KVIrc � "
+#~ "pokuati da koristi IPV6 protokol (naravno Va kernel <b>mora imati</b> "
+#~ "upotrebljiv IPV6 stek i Vi <b>morate imati</b> IPV6 konekciju). </center>"
+
+#~ msgid ""
+#~ "<center>This is the default <b>port</b> that this server will be "
+#~ "contacted on.<br>Usually <b>6667</b> is OK.</center>"
+#~ msgstr ""
+#~ "<center>Ovo je predefinisan <b>port</b> na koji � se server kontaktirati. "
+#~ "<br>Obi�o <b>6667</b> je OK.</center>"
+
+#, fuzzy
+#~ msgid "<center>Click here to edit advanced options for this entry</center>"
+#~ msgstr ""
+#~ "<center>Klikni ovde za editovanje naprednih opcija za ovaj server...</"
+#~ "center>"
+
+#, fuzzy
+#~ msgid "Connect &Now"
+#~ msgstr "Povei se"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>Hit this button to connect to the currently selected server.</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Pritisnite ovo dugme za konektovanje na trenutno izabran server u "
+#~ "trenutnom IRC kontekstu</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This button shows a list of recently used servers. It allows you "
+#~ "to quickly find them in the list.</center>"
+#~ msgstr ""
+#~ "<center>Ovo dugme prikazuje listu naj�� kori�nih servera, omogu�va Vam da "
+#~ "brzo ih brzo prona�te u listi</center>"
+
+#, fuzzy
+#~ msgid "Show this dialog at startup"
+#~ msgstr "Pokai ovaj dijalog za servere uvek kada se pokrene KVIrc"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>If this option is enabled, the Servers dialog will appear every "
+#~ "time you start KVIrc</center>"
+#~ msgstr ""
+#~ "<center>Ako ozna�te ovu opciju , vide�te ovaj dijalog svaki put kad "
+#~ "pokrenete KVIrc</center>"
+
+#~ msgid "Network:"
+#~ msgstr "Mrea"
+
+#~ msgid "No selection"
+#~ msgstr "Bez izbora"
+
+#~ msgid "UnknownNet"
+#~ msgstr "NepoznataMrea"
+
+#, fuzzy
+#~ msgid "Remove Network"
+#~ msgstr "Ukloni mreu"
+
+#, fuzzy
+#~ msgid "&New Server"
+#~ msgstr "Mrea/Server"
+
+#, fuzzy
+#~ msgid "Re&move Server"
+#~ msgstr "Ukloni server"
+
+#, fuzzy
+#~ msgid "&Copy Server"
+#~ msgstr "Kopiraj server"
+
+#, fuzzy
+#~ msgid "&Paste Server"
+#~ msgstr "Prenesi server"
+
+#, fuzzy
+#~ msgid "Clear List"
+#~ msgstr "Isprazni listu"
+
+#~ msgid "irc.unknown.net"
+#~ msgstr "irc.nepoznat.net"
+
+#~ msgid ""
+#~ "This table contains the text icon associations.<br>KVirc will use them to "
+#~ "display the CTRL+I escape sequences and eventually the emoticons."
+#~ msgstr ""
+#~ "Ova tabla sadri asocijacije teks\bt ikona.<br>KVIrc � ih koristiti za "
+#~ "prikazivanja CTRL+I pomo�e sekvence i eventualno za emocije."
+
+#, fuzzy
+#~ msgid "Sound System"
+#~ msgstr "Muzi�i sistem"
+
+#, fuzzy
+#~ msgid "Media Player"
+#~ msgstr "Nov tip medija"
+
+#, fuzzy
+#~ msgid "ID3 tags' encoding"
+#~ msgstr "Tekstualni editor"
+
+#, fuzzy
+#~ msgid "CTCP Replies"
+#~ msgstr "odgovoreno"
+
+#, fuzzy
+#~ msgid "USERINFO reply:"
+#~ msgstr "CTCP odgovor"
+
+#, fuzzy
+#~ msgid "PAGE reply:"
+#~ msgstr "CTCP odgovor"
+
+#, fuzzy
+#~ msgid "Show the CTCP replies in the active window"
+#~ msgstr "nema spoljnih poruka"
+
+#~ msgid "%s (module %s)"
+#~ msgstr "%s (modul %s)"
+
+#~ msgid "Module '%s', Command '%s'"
+#~ msgstr "Modul '%s', Komanda '%s'"
+
+#~ msgid "Can't rebind the command: window with id %s not found"
+#~ msgstr "Ne mogu da poveem komandu: prozor sa ID-om %s nije na�n"
+
+#~ msgid ""
+#~ "Can't rebind the command: missing window identifier after the -r switch"
+#~ msgstr ""
+#~ "Ne mogu da poveem komandu: nedostaje identifikator prozora posle -r "
+#~ "prekida�"
+
+#~ msgid "Module '%s', Function '%s'"
+#~ msgstr "Modul '%s', Funkcija '%s'"
+
+#~ msgid "Identifier evaluated to \"%s\""
+#~ msgstr "Pokazitelj procenjen u \"%s\""
+
+#~ msgid "Left operand of operator %s (%s{%s}) is undefined : assuming 0"
+#~ msgstr "Levi operand operatora %s (%s{%s}) je nedefinisan : podrazumevam 0"
+
+#~ msgid "Left operand of operator %s (%s[%s]) is undefined : assuming 0"
+#~ msgstr "Levi operand operatora %s (%s[%s]) nije definisan : podrazumevam 0"
+
+#~ msgid "Left operand of operator %s (%s) is undefined : assuming 0"
+#~ msgstr "Levi operand operatora %s (%s) nije definisan : podrazumevam 0"
+
+#~ msgid "Variable %s{%s} evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Promenljiva %s{%s} procenjena na '%s' u operatoru %s (nije broj)"
+
+#~ msgid "Variable %s[%s] evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Promenljiva %s[%s] procenjena na '%s' u operatoru %s (nije broj)"
+
+#~ msgid "Variable %s evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Promenljiva %s procenjena na '%s' u operatoru %s (nije broj)"
+
+#~ msgid "Right operand of operator %s evaluated to '%s' (not a number)"
+#~ msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#~ msgid "operator %c%c"
+#~ msgstr "operator %c%c"
+
+#, fuzzy
+#~ msgid "Encoding"
+#~ msgstr "dolaze�"
+
+#~ msgid "The config file with id '%s' is not open"
+#~ msgstr "Fajl podeavanja sa ID-om '%s' nije otvoren"
+
+#~ msgid "The config file with id '%s' is read only"
+#~ msgstr "Fajl sa podeavanjima sa ID-om '%s' je samo za �tanje"
+
+#, fuzzy
+#~ msgid "No nickname specified"
+#~ msgstr "Nije navedeno ime"
+
+#, fuzzy
+#~ msgid "No netmask specified"
+#~ msgstr "Nema navedena maska"
+
+#, fuzzy
+#~ msgid "No property name specified"
+#~ msgstr "Nije navedena osobina"
+
+#, fuzzy
+#~ msgid "Missing property name"
+#~ msgstr "Nedostaje ime iska��g menija"
+
+#, fuzzy
+#~ msgid "The specified window (%s) is not a channel/query/DCC chat"
+#~ msgstr "Navedeni prozor (%s) nije kanal/upit/dcc"
+
+#~ msgid "No file specified"
+#~ msgstr "Nije naveden fajl"
+
+#~ msgid "Window %s not found"
+#~ msgstr "Prozor %s nije na�n"
+
+#~ msgid "Can't log to file %s"
+#~ msgstr "Ne mogu da logujem u fajl %s"
+
+#~ msgid "Window with id '%s' not found, returning empty string"
+#~ msgstr "Prozor sa ID-om '%s' nije na�n, vra�m prazan znakovni niz"
+
+#, fuzzy
+#~ msgid "Invalid progress value (%s)"
+#~ msgstr "neispravan indeks (%s)"
+
+#, fuzzy
+#~ msgid "Error:not enough parameters!"
+#~ msgstr "Nema dovoljno parametara"
+
+#, fuzzy
+#~ msgid "The (%s) object is not a pixmap"
+#~ msgstr "Izvorni objekat '%s' je ne postoje�"
+
+#, fuzzy
+#~ msgid "Invalid index parameter (%s)"
+#~ msgstr "Pogrean parametar"
+
+#, fuzzy
+#~ msgid "Invalid parameter"
+#~ msgstr "Pogrean parametar"
+
+#, fuzzy
+#~ msgid "Can't find the object "
+#~ msgstr "Ne mogu da prona�m ikonu '%s'"
+
+#, fuzzy
+#~ msgid "Can't set a non-widget object"
+#~ msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Can't find the tab object "
+#~ msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Can't find the widget(%s)"
+#~ msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Invalid marging value (%s)"
+#~ msgstr "neispravan indeks (%s)"
+
+#, fuzzy
+#~ msgid "This object is not a toolbutton item!"
+#~ msgstr "Izvorni objekat '%s' je ne postoje�"
+
+#~ msgid "No value to insert"
+#~ msgstr "Nema vrednosti za ubacivanje"
+
+#~ msgid "Invalid index(%s)"
+#~ msgstr "Neispravan indeks(%s)"
+
+#~ msgid "No index specified"
+#~ msgstr "Nije definisan index"
+
+#~ msgid "index %u out of range"
+#~ msgstr "indeks %u je van opsega"
+
+#~ msgid "Invalid index (%s)"
+#~ msgstr "neispravan indeks (%s)"
+
+#~ msgid "Index %u out of range"
+#~ msgstr "Indeks %u je van opsega"
+
+#, fuzzy
+#~ msgid "Invalid resize mode (%s): defaulting to Auto"
+#~ msgstr "Neispravan koder '%s': predefiniem u 'adpcm'"
+
+#, fuzzy
+#~ msgid "Invalid margin value (%s)"
+#~ msgstr "neispravan indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid spacing value (%s)"
+#~ msgstr "neispravan indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid stretch value (%s)"
+#~ msgstr "Neispravan port (%s)"
+
+#, fuzzy
+#~ msgid "Invalid from_row parameter (%s)"
+#~ msgstr "Pogrean parametar ivice"
+
+#, fuzzy
+#~ msgid "Invalid to_row parameter (%s)"
+#~ msgstr "Pogrean parametar"
+
+#, fuzzy
+#~ msgid "Invalid from_column parameter (%s)"
+#~ msgstr "Pogrean parametar ivice"
+
+#, fuzzy
+#~ msgid "Invalid to_column parameter (%s)"
+#~ msgstr "Pogrean parametar ivice"
+
+#, fuzzy
+#~ msgid "Invalid parameters"
+#~ msgstr "Pogrean parametar"
+
+#, fuzzy
+#~ msgid "Can't find the widget/pixmap (%s)"
+#~ msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Can't find the widget object to remove (%s)"
+#~ msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Can't remove a non-widget object"
+#~ msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Can't find the widget (%s)"
+#~ msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Invalid zoom value (%s)"
+#~ msgstr "Neispravan port (%s)"
+
+#, fuzzy
+#~ msgid "Invalid depth value (%s)"
+#~ msgstr "Neispravan port (%s)"
+
+#, fuzzy
+#~ msgid "Invalid value (%s)"
+#~ msgstr "Neispravan port (%s)"
+
+#, fuzzy
+#~ msgid "Invalid paragraph value (%s)"
+#~ msgstr "neispravan indeks (%s)"
+
+#, fuzzy
+#~ msgid " I can't find the specified file."
+#~ msgstr "Ne mogu da na�m multimedijalni fajl %s"
+
+#, fuzzy
+#~ msgid " I cannot read the file."
+#~ msgstr "I ne mogu da otvorim taj fajl"
+
+#, fuzzy
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#~ msgid "Class %s is undefined"
+#~ msgstr "Klasa %s nije definisana"
+
+#~ msgid "The source object '%s' is not existing"
+#~ msgstr "Izvorni objekat '%s' je ne postoje�"
+
+#~ msgid "The target object '%s' is not existing"
+#~ msgstr "Odredini objekat '%s' je ne postoje�"
+
+#~ msgid "No signal '%s' to disconnect"
+#~ msgstr "Nema signala '%s' za prekid veze"
+
+#, fuzzy
+#~ msgid "No destination specified"
+#~ msgstr "Nije navedeno ime"
+
+#, fuzzy
+#~ msgid "Can't find the destination widget/pixmap (%s)"
+#~ msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "No source specified"
+#~ msgstr "Nije naveden fajl"
+
+#, fuzzy
+#~ msgid "Can't find the source widget/pixmap (%s)"
+#~ msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Invalid x parameter (%s)"
+#~ msgstr "Pogrean parametar"
+
+#, fuzzy
+#~ msgid "Invalid y parameter (%s)"
+#~ msgstr "Pogrean parametar"
+
+#, fuzzy
+#~ msgid "Can't find the listviewitem object to add (%s)"
+#~ msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Invalid column (%s)"
+#~ msgstr "neispravan indeks (%s)"
+
+#~ msgid "Invalid margin parameter"
+#~ msgstr "Pogrean parametar ivice"
+
+#~ msgid "Unknown alignment: %s"
+#~ msgstr "Nepoznato poravnanje: %s"
+
+#~ msgid "Unknown frame / shadow style: %s"
+#~ msgstr "Nepoznat okvir / stila senke: %s"
+
+#~ msgid "Hey ! You wanna know my echo mode or what ?"
+#~ msgstr "Hej ! eli da zna moj mod ili ta ve�?"
+
+#~ msgid "Unknown echo mode"
+#~ msgstr "Nepoznat eho mod"
+
+#, fuzzy
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Invalid object."
+#~ msgstr "Pogreno vreme isteka"
+
+#, fuzzy
+#~ msgid "Can't setStretchableWidget a non-widget object."
+#~ msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Can't find the popupmenu object to add (%s)"
+#~ msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Can't find the widget object (%s)"
+#~ msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Invalid columns value (%s)"
+#~ msgstr "neispravan indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid size value (%s)"
+#~ msgstr "Neispravan port (%s)"
+
+#, fuzzy
+#~ msgid "Invalid icon identifier"
+#~ msgstr "Pogrean usluni identifikator"
+
+#, fuzzy
+#~ msgid ""
+#~ "Can't set the current avatar to '%s': failed to start the http transfer"
+#~ msgstr ""
+#~ "Ne mogu da postavim trenutni avatar na '%s' (ne mogu da u�tam sliku): "
+#~ "nije poslata poruka"
+
+#, fuzzy
+#~ msgid "Can't set the current avatar to '%s': can't load the image"
+#~ msgstr ""
+#~ "Ne mogu da postavim trenutni avatar na '%s' (ne mogu da u�tam sliku): "
+#~ "nije poslata poruka"
+
+#~ msgid "No environment variable name given"
+#~ msgstr "Nije dato ime prmenljive okruenja"
+
+#~ msgid "Can't find the window with id '%s'"
+#~ msgstr "Ne mogu da prona�m prozor sa ID-om '%s'"
+
+#~ msgid "The specified window (%s) is not a channel"
+#~ msgstr "Navedeni prozor (%s) nije kanal"
+
+#, fuzzy
+#~ msgid "No button name specified!"
+#~ msgstr "Nije navedeno ime opcije"
+
+#, fuzzy
+#~ msgid "No separator name specified"
+#~ msgstr "Nije navedeno ime opcije"
+
+#, fuzzy
+#~ msgid "No toolbar id specified"
+#~ msgstr "Nije navedeno ime opcije"
+
+#, fuzzy
+#~ msgid "The action \"%s\" doesn't exist"
+#~ msgstr "Fajl podeavanja sa ID-om '%s' nije otvoren"
+
+#~ msgid "Invalid IRC context id '%s'"
+#~ msgstr "Pogrean ID IRC konteksta '%s'"
+
+#, fuzzy
+#~ msgid "Background not found %s "
+#~ msgstr "Boja pozadine"
+
+#~ msgid "Mask %s is already used to identify user %s"
+#~ msgstr "Maska %s je ve�iskori�na da identifikuje korisnika %s"
+
+#~ msgid "User not found (%s)"
+#~ msgstr "Korisnik nije na�n (%s)"
+
+#~ msgid "User %s not found"
+#~ msgstr "Korisnik %s nije prona�n"
+
+#~ msgid "Mask %s already used to identify user %s"
+#~ msgstr "Maska %s je ve�iskori�na da identifikuje korisnika %s"
+
+#~ msgid "Mask %s not found"
+#~ msgstr "Maska %s nije na�na"
+
+#, fuzzy
+#~ msgid "Sound file '%s' not found"
+#~ msgstr "Prozor %s nije na�n"
+
+#, fuzzy
+#~ msgid "Unable to play sound '%s'"
+#~ msgstr "Ne mogu da kopiram %s u %s"
+
+#, fuzzy
+#~ msgid "The specified name is empty"
+#~ msgstr "Naveden prozor nije kanal"
+
+#, fuzzy
+#~ msgid "The specified visible name is empty"
+#~ msgstr "Navedena veli�na fajla je neispravna"
+
+#, fuzzy
+#~ msgid "The specified description is empty"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#, fuzzy
+#~ msgid "The specified KVIrc version \"%s\" is not a valid version string"
+#~ msgstr "Specifi�a bind adresa (%s) nije validna"
+
+#~ msgid "Destination file exists: no copy made"
+#~ msgstr "Odredini fajl postoji: nije napravljena kopija"
+
+#~ msgid "Failed to copy %s to %s"
+#~ msgstr "Ne mogu da kopiram %s u %s"
+
+#~ msgid "Failed to write to file %s"
+#~ msgstr "Neuspeno pisanje u fajl %s"
+
+#~ msgid "Failed to rename %s to %s"
+#~ msgstr "Ne mogu da preimenujem %s u %s"
+
+#~ msgid "Failed to make the directory %s"
+#~ msgstr "Ne mogu da napravim direktorijum %s"
+
+#~ msgid "Failed to remove the file %s"
+#~ msgstr "Neuspeno uklanjanje fajla %s"
+
+#~ msgid "Failed to remove the directory %s"
+#~ msgstr "Neuspeno uklanjanje direktorijuma %s"
+
+#, fuzzy
+#~ msgid "The specified directory does not exist '%s'"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#~ msgid "Can't open the file \"%s\" for reading"
+#~ msgstr "Ne mogu da otvorim fajl \"%s\" za �tanje"
+
+#~ msgid "Read error for file %s"
+#~ msgstr "Greka u �tanju za fajl %s"
+
+#~ msgid ""
+#~ "Read error for file %s (have been unable to read the requested size in "
+#~ "1000 retries)"
+#~ msgstr ""
+#~ "Greka u �tanju za fajl %s (nisam mogao da pro�tam zahtevanu veli�nu u "
+#~ "1000 pokuaja)"
+
+#~ msgid "No such options page class name"
+#~ msgstr "Nema takvog imena klase za stranicu opcija"
+
+#, fuzzy
+#~ msgid "%Q is not an integer"
+#~ msgstr "Iska�� meni (popup) '%Q' nije definisan"
+
+#~ msgid "Window with caption '%s' not found, returning 0"
+#~ msgstr "Prozor sa naslovom '%s' nije na�n, vra�m 0"
+
+#, fuzzy
+#~ msgid "The specified UNIX time is not valid (%s)"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#, fuzzy
+#~ msgid "The specified time format is not valid (%s)"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#~ msgid "No option named '%s'"
+#~ msgstr "Nema opcije sa imenom '%s'"
+
+#~ msgid "No option name specified"
+#~ msgstr "Nije navedeno ime opcije"
+
+#~ msgid "No link text specified"
+#~ msgstr "Nije naveden tekst za link"
+
+#, fuzzy
+#~ msgid "Broken prologue code for menu '%s', error detail follows"
+#~ msgstr "Prekinut kod predgovora za meni '%s': prate� detalji greke"
+
+#~ msgid "Broken expression for menu item '%Q', ignoring"
+#~ msgstr "Prekinut izraz sa stavku menija '%Q': ignoriem"
+
+#~ msgid "Can't find the external popup '%Q', ignoring"
+#~ msgstr "Ne mogu da na�m spoljni popup '%Q': ignoriem"
+
+#, fuzzy
+#~ msgid "Broken epilogue code for menu '%s', error details follow"
+#~ msgstr "Prekinut kod zaklju�a za meni '%s': prate� detalji o greci"
+
+#~ msgid "Function name expected"
+#~ msgstr "Ime funkcije o�kivano"
+
+#, fuzzy
+#~ msgid "The catalogue %s was not loaded"
+#~ msgstr "Fajl '%s' nije �tljiv"
+
+#~ msgid "Invalid icon specification '%s', using default"
+#~ msgstr "Pogreno navedena ikona '%s', koristim predefinisano"
+
+#~ msgid "Missing icon number after the 'i' switch"
+#~ msgstr "Nedostaje broj ikone posle 'i' prekida�"
+
+#, fuzzy
+#~ msgid "Missing window ID after the 'w' switch"
+#~ msgstr "Nedostaje ID prozora posle 'w' prekida�"
+
+#~ msgid "No targets specified"
+#~ msgstr "Nema definisanih odredita (meta)"
+
+#~ msgid "Missing new nickname"
+#~ msgstr "Nedostaje nov nadimak"
+
+#~ msgid "Missing target"
+#~ msgstr "Nedostaje odredite (meta)"
+
+#~ msgid "Missing target channel"
+#~ msgstr "Nedostaje odredite kanala"
+
+#~ msgid "No such object (%s)"
+#~ msgstr "Nema takvog objekta (%s)"
+
+#~ msgid "Invalid screen coordinates"
+#~ msgstr "Neispravne koordinate ekrana"
+
+#~ msgid "Invalid syntax for the screen coordinates"
+#~ msgstr "Neispravna sintaksa ta koordinate ekrana"
+
+#~ msgid "Invalid timeout delay '%s'"
+#~ msgstr "Pogreno kanjenje odziva '%s'"
+
+#, fuzzy
+#~ msgid "Empty command block for timer '%s', timer not started"
+#~ msgstr "Prazan komandni blok za tajmer '%s': tajmer nije pokrenut"
+
+#, fuzzy
+#~ msgid ""
+#~ "Internal error: Unable to add timer %s, insufficient system resources"
+#~ msgstr ""
+#~ "Interna greka: ne mogu da dodam tajmer %s, nedovoljno sistemskih resursa"
+
+#~ msgid "No such timer (%s)"
+#~ msgstr "Nema takvog tajmera (%s)"
+
+#~ msgid "No such event (%s)"
+#~ msgstr "Nema takvog doga�ja (%s)"
+
+#~ msgid "No handler '%s' for raw numeric event '%d'"
+#~ msgstr "Nema upravlja� '%s' za sirov (raw) brojni doga�j '%d'"
+
+#~ msgid "No handler '%s' for event '%s'"
+#~ msgstr "Nema upravlja� '%s' za doga�j '%s'"
+
+#~ msgid "Failed to execute command '%s'"
+#~ msgstr "Ne mogu da izvrim komandu '%s'"
+
+#~ msgid "Invalid IRC url (%s)"
+#~ msgstr "Pogrean IRC url (%s)"
+
+#~ msgid "The commandline for this url type seems to be broken (%s)"
+#~ msgstr "Komandna linija za ovaj url izgleda da je prekinuta (%s)"
+
+#~ msgid "No commandline specified for this type of url (%s)"
+#~ msgstr "Nema navedene komandne linije za ovu vrstu url-a (%s)"
+
+#~ msgid "Invalid pitch (%s): using default"
+#~ msgstr "Pogrean nivo (%s): koristim predefinisano"
+
+#~ msgid "Invalid duration (%s): using default"
+#~ msgstr "Pogreno trajanje (%s): koristim predefinisano"
+
+#~ msgid "Can't find the icon '%s'"
+#~ msgstr "Ne mogu da prona�m ikonu '%s'"
+
+#~ msgid "Window button '%s' not found"
+#~ msgstr "Dugme prozora '%s' nije na�no"
+
+#, fuzzy
+#~ msgid "Can't rebind the command sequence: missing window identifier"
+#~ msgstr ""
+#~ "Ne mogu da poveem komandu: nedostaje identifikator prozora posle -r "
+#~ "prekida�"
+
+#, fuzzy
+#~ msgid "Can't rebind the command sequence: window with id %s not found"
+#~ msgstr "Ne mogu da poveem komandu: prozor sa ID-om %s nije na�n"
+
+#~ msgid "Unmatched parenthesis in expression body: ignoring trailing garbage"
+#~ msgstr "Nepodudaraju� zagrade u telu izraza: ignoriem teku� �bre"
+
+#~ msgid "Error triggered from timer callback handler %c'%s'"
+#~ msgstr "Greka nastala od upravlja� vremeskog odziva %c'%s'"
+
+#~ msgid "Timer callback handler '%s' is broken: killing"
+#~ msgstr "Upravlja�vremenskog odziva '%s' je prekinut: ubijam"
+
+#, fuzzy
+#~ msgid "Initializing scripting engine..."
+#~ msgstr "Pogrena maina za kriptovanje"
+
+#, fuzzy
+#~ msgid "Loading actions..."
+#~ msgstr "U�tavanje opcija..."
+
+#~ msgid "Loading icons..."
+#~ msgstr "U�tavanje ikona..."
+
+#~ msgid "Loading window configuration database..."
+#~ msgstr "U�tavam bazu konfiguracije prozora"
+
+#~ msgid "Loading server & proxy database..."
+#~ msgstr "U�tavam server & proksi bazu podataka..."
+
+#~ msgid "Loading event handlers..."
+#~ msgstr "U�tavam upravlja�doga�ja...."
+
+#~ msgid "Loading raw event handlers..."
+#~ msgstr "U�tavam upravlja�osnovnim doga�jima..."
+
+#~ msgid "Loading popups..."
+#~ msgstr "U�tavam iska�� menije..."
+
+#, fuzzy
+#~ msgid "Loading toolbars..."
+#~ msgstr "U�tavanje opcija..."
+
+#~ msgid "Loading text icon associations..."
+#~ msgstr "U�tavasocijacije tekst ikona..."
+
+#~ msgid "Loading recent entries..."
+#~ msgstr "U�tavam skoranje unose..."
+
+#~ msgid "Loading media types..."
+#~ msgstr "U�tavam tipove medija..."
+
+#~ msgid "Loading registered users..."
+#~ msgstr "U�tavam registrovane korisnike..."
+
+#, fuzzy
+#~ msgid "Loading registered channels..."
+#~ msgstr "U�tavam registrovane korisnike..."
+
+#~ msgid "Loading file trader configuration..."
+#~ msgstr "U�tavam konfiguraciju fajl razmenjiva� ..."
+
+#~ msgid "Loading nick serv service configuration..."
+#~ msgstr "U�tavam konfiguraciju NickServ servisa..."
+
+#, fuzzy
+#~ msgid "Loading history entries..."
+#~ msgstr "U�tavam skoranje unose..."
+
+#, fuzzy
+#~ msgid "Loading avatar cache..."
+#~ msgstr "U�tavam alijase..."
+
+#~ msgid "Starting up the engine..."
+#~ msgstr "Startujem mainu..."
+
+#~ msgid "Have fun! :)"
+#~ msgstr "Puno zabave! :-)"
+
+#, fuzzy
+#~ msgid "Show Ban Editor"
+#~ msgstr "Tekstualni editor"
+
+#, fuzzy
+#~ msgid "Show Crypto Controller"
+#~ msgstr "Uklju�/isklju� kontroler za kriptovanje"
+
+#, fuzzy
+#~ msgid "Toggle Notify List"
+#~ msgstr "Uklju�/isklju� listu obavetenja"
+
+#~ msgid "Initiating startup sequence..."
+#~ msgstr "Iniciram po�tnu sekvencu"
+
+#, fuzzy
+#~ msgid "&New Alias"
+#~ msgstr "Alias"
+
+#~ msgid "Loading options..."
+#~ msgstr "U�tavanje opcija..."
+
+#, fuzzy
+#~ msgid "defpopup: internal error"
+#~ msgstr "Ups...interna greka ?"
+
+#, fuzzy
+#~ msgid "User Messages"
+#~ msgstr "sistemska poruka"
+
+#, fuzzy
+#~ msgid "Transport"
+#~ msgstr "Transparentno "
+
+#, fuzzy
+#~ msgid "The specified window does not exist"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#, fuzzy
+#~ msgid "No url specified"
+#~ msgstr "Nije naveden fajl"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %s"
+#~ msgstr "Ne mogu da po�em da sluam"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %Q"
+#~ msgstr "Ne mogu da po�em da sluam"
+
+#~ msgid "Input buffer: %d bytes"
+#~ msgstr "Ulazni bafer: %d bajtova"
+
+#~ msgid "Output buffer: %d bytes"
+#~ msgstr "Izlazni bafer: %d bajtova"
+
+#~ msgid "Volume: %i"
+#~ msgstr "Ja�na: %i"
+
+#~ msgid "<unknown size>"
+#~ msgstr "<nepoznata veli�na>"
+
+#~ msgid "\"any\""
+#~ msgstr "\"bilo koji\""
+
+#, fuzzy
+#~ msgid "Unable to get address of interface %Q"
+#~ msgstr "Ne mogu da dobijem adresu interfejsa %s"
+
+#, fuzzy
+#~ msgid "No suitable interfaces to listen on, use -i"
+#~ msgstr "Nema pogodnog interfejsa za sluanje: koristi -i"
+
+#~ msgid "Missing target nickname"
+#~ msgstr "Nedostaje odredini nadimak"
+
+#~ msgid "-c requires -i and -p"
+#~ msgstr "-c zahteva -i i -p"
+
+#~ msgid "Missing filename"
+#~ msgstr "Nedostaje ime fajla"
+
+#, fuzzy
+#~ msgid "The file size is not an positive number"
+#~ msgstr "Veli�na fajla nije neobeleeni broj"
+
+#, fuzzy
+#~ msgid "Invalid sample rate '%s', defaulting to 8000"
+#~ msgstr "Neispravna brzina semplovanja '%s' predefiniem na 8000"
+
+#, fuzzy
+#~ msgid "The current window has no associated DCC session"
+#~ msgstr "Ovaj prozor nema odgovaraju� IRC kontekst"
+
+#, fuzzy
+#~ msgid "The first parameter must be an unsigned number"
+#~ msgstr "Veli�na fajla nije neobeleeni broj"
+
+#~ msgid "No filename specified"
+#~ msgstr "Nije navedeno ime fajla"
+
+#, fuzzy
+#~ msgid "The file '%s' is not readable"
+#~ msgstr "Iska�� meni (popup) '%s' nije definisan"
+
+#~ msgid "Invalid timeout, ignoring"
+#~ msgstr "Neispravno vreme isteka, ignoriem"
+
+#~ msgid "Invalid visible name: using default"
+#~ msgstr "Neispravno vidljivo ime: koristim predefinisano"
+
+#, fuzzy
+#~ msgid "Ops..failed to add the sharedfile..."
+#~ msgstr "Ups...Ne mogu da dodam ponudu...."
+
+#, fuzzy
+#~ msgid "The specified file size is invalid"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#, fuzzy
+#~ msgid "No sharedfile with visible name '%s' and user mask '%s'"
+#~ msgstr "Nema ponude sa vidljivim imenom '%s' i maskom korisnika '%s'"
+
+#, fuzzy
+#~ msgid "[Parser warning in '%s']: %s"
+#~ msgstr "[parser upozorenje u '%s'] : %s"
+
+#, fuzzy
+#~ msgid "Windows XP style"
+#~ msgstr "Lista prozora"
+
+#, fuzzy
+#~ msgid " I can't find the specified file %s."
+#~ msgstr "Ne mogu da na�m multimedijalni fajl %s"
+
+#~ msgid "-e mode change change"
+#~ msgstr "-e promena moda"
+
+#, fuzzy
+#~ msgid "Missing file name to parse"
+#~ msgstr "Nedostaje ime fajla"
+
+#, fuzzy
+#~ msgid "A popup name is expected as parameter"
+#~ msgstr "Ne-negativna duina celog broja je o�kivana kao parametar"
+
+#~ msgid "%Q [%Q@%Q] unsets avatar (%Q %Q)"
+#~ msgstr "%Q [%Q@%Q] sklonio avatar (%Q %Q)"
+
+#, fuzzy
+#~ msgid ""
+#~ "Can't set the current avatar to '%s' (failed to start the http transfer): "
+#~ "no message sent"
+#~ msgstr ""
+#~ "Ne mogu da postavim trenutni avatar na '%s' (ne mogu da u�tam sliku): "
+#~ "nije poslata poruka"
+
+#~ msgid ""
+#~ "Can't set the current avatar to '%s' (can't load the image): no message "
+#~ "sent"
+#~ msgstr ""
+#~ "Ne mogu da postavim trenutni avatar na '%s' (ne mogu da u�tam sliku): "
+#~ "nije poslata poruka"
+
+#, fuzzy
+#~ msgid "No socket text specified"
+#~ msgstr "Nije naveden objekat priklju�a"
+
+#, fuzzy
+#~ msgid "&Export Alias To..."
+#~ msgstr "Ukloni ovaj alijas"
+
+#, fuzzy
+#~ msgid "Avatars"
+#~ msgstr "Avatar slika"
+
+#, fuzzy
+#~ msgid "The script \"%1\" does not exist"
+#~ msgstr "Izvorni objekat '%Q' je ne postoje�"
+
+#, fuzzy
+#~ msgid "Defaults"
+#~ msgstr "predefinisano"
+
+#, fuzzy
+#~ msgid "Folders"
+#~ msgstr "Filter"
+
+#, fuzzy
+#~ msgid "Message Format"
+#~ msgstr "Tip poruke"
+
+#, fuzzy
+#~ msgid "Parser"
+#~ msgstr "Prenesi"
+
+#, fuzzy
+#~ msgid "runtime warning"
+#~ msgstr "Upozorenje parsera"
+
+#, fuzzy
+#~ msgid "compilation warning"
+#~ msgstr "Upozorenje parsera"
+
+#, fuzzy
+#~ msgid "runtime error"
+#~ msgstr "Interna greka."
+
+#, fuzzy
+#~ msgid "Missing data to evaluate"
+#~ msgstr "Nedostaje odredite (meta)"
+
+#~ msgid "Can't find a running winamp window"
+#~ msgstr "Ne mogu da pronadjem pokrenut winamp prozor"
+
+#~ msgid "Can't load the xmms library (libxmms.so)"
+#~ msgstr "Ne mogu da u�tam xmms biblioteku (libxmms.so)"
+
+#~ msgid "Can't find symbol %s in libxmms.so"
+#~ msgstr "Ne mogu da na�m simbol %s u libxmms.so"
+
+#~ msgid ""
+#~ "The winamp plugin has not been installed properly. Check /help $mp3player."
+#~ "gettitle"
+#~ msgstr ""
+#~ "Winamp dodatak nije pravilno instaliran: proveri /help $mp3player.gettitle"
+
+#~ msgid "Enable automatic NickServ identification"
+#~ msgstr "Omogu� automatsku NickServ identifikaciju"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is a list of NickServ identification rules. KVIrc will use "
+#~ "them to model its automatic interaction with NickServ.<br>Please be aware "
+#~ "that this feature can cause your NickServ passwords to be stolen if used "
+#~ "improperly. Follow the suggestions in the tooltips and make sure that you "
+#~ "fully understand the NickServ authentication protocol.<br>In other words, "
+#~ "be sure to know what you're doing.<br>Also note that the password that "
+#~ "you provide is stored as <b>PLAIN TEXT</b>.Right-click to add/remove "
+#~ "rules.</center>"
+#~ msgstr ""
+#~ "<center>Ovo je lista NickServ identifikacionih pravila. KVIrc � ih "
+#~ "koristiti da napravi svoju automatsku interakciju sa NickServ-om."
+#~ "<br>Molim imajte na umu da ova mogu�ost moe prouzrokovati da vaa NickServ "
+#~ "lozinka bude ukradena, ako je koristite neoprezno: molim pratite "
+#~ "sugestije u savetima i budite sigurni da ste potpuno razumeli protokol "
+#~ "NickServ autorizacije.<br> Drugim re�ma: budite sigurni da znate ta "
+#~ "radite.<br>Takodje imajte na umu da lozinke koje se �vaju su u �TLJIV "
+#~ "TEKST u KVIrc konfiguracionom fajlu. <br>Desni klik za dodavanje/"
+#~ "uklanjanje pravila.</center>"
+
+#, fuzzy
+#~ msgid "Identification Rule"
+#~ msgstr "obavetenje"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the nickname that this rule will attempt to authenticate "
+#~ "with NickServ, i.e. the nickname that you have registered with NickServ</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Ovo je nadimak za koji � ovo pravilo pokuati da identifikuje sa "
+#~ "NickServ-om: na primer nadimak koji ste registrovali sa NickServ-om</"
+#~ "center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is a mask that defines the server(s) that this "
+#~ "identification rule will apply to. For a single server, this option "
+#~ "should just be a hostname like <b>irc.webchat.org</b>. You can use "
+#~ "wildcards to match multiple servers, e.g. <b>*.freenode.net</b> will work "
+#~ "on the whole freenode network (by matching any server names that end in "
+#~ "\".freenode.net\").<br>Please note that some servers have more than one "
+#~ "name. For example, <b>irc.eu.dal.net</b> redirects to a \"random\" DALNet "
+#~ "server, so the real server name will be different. You must provide the "
+#~ "name that the server calls itself, usually displayed in the console "
+#~ "window title.</center>"
+#~ msgstr ""
+#~ "<center>Ovo je maska koja definie server(e) na kojima � raditi ovo "
+#~ "identifikaciono pravilo. Za jedan server, ova opcija bi bila neto kao "
+#~ "<b>irc.kvsky.net</b>. Moete koristiti �kere da poklopite vie servera: "
+#~ "<b>*.openprojects.net</b> i radi� na celoj OpenProjects mrei.(poklapa "
+#~ "samo sva imena servera koja imaju na kraju \".openprojects.net\")."
+#~ "<br>Molim imajte na umu da neki serveri imaju vie od jednog imena: kao "
+#~ "primer , irc.eu.dal.net predstavlja \"random\" DalNer server, ali stvarno "
+#~ "ime servera ce biti druga�je. Morate definisati ime servera koji elite "
+#~ "koristiti da ga \"identifikujete\". Moete pogledati njegovo ime koriste� "
+#~ "pijun Priklju�a.</center>"
+
+#, fuzzy
+#~ msgid "NickServ mask:"
+#~ msgstr "NickServ maska"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the mask that NickServ must match to be correctly "
+#~ "identified as the NickServ service. This usually will be something like "
+#~ "<b>[email protected]</b>.<br>You can use wildcards for "
+#~ "this field, but generally it is a security flaw. If you're absolutely "
+#~ "sure that NO user on the network can use the nickname \"NickServ\", the "
+#~ "mask <b>NickServ!*@*</b> may be safe to use in this field.</center>"
+#~ msgstr ""
+#~ "<center>Ovo je maska koja mora da se ta�o poklopi sa NickServ-om da bi se "
+#~ "korektno identifikovali NickServ servisu. Ovo je obi�o neto nalik <b> "
+#~ "[email protected]</b>...Moete koristiti �kere za ovo "
+#~ "polje, ali generalno to je sigurnosno slabo. Ako ste 100% sigurni da NI "
+#~ "JEDAN korisnik na mrei ne moe da promeni svoj nadimak kod NickServ-a onda "
+#~ "verovatno <b>NickServ!*@*</b> � biti u redu za ovo polje.</center>"
+
+#, fuzzy
+#~ msgid "Identify command:"
+#~ msgstr "Komanda predstavljanja"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the command that will be executed when NickServ requests "
+#~ "authentication for the nickname described in this rule (if the both "
+#~ "server and NickServ mask are matched). This usually will be something "
+#~ "like <b>msg NickServ identify &lt;yourpassword&gt;</b>.<br>You can use "
+#~ "<b>msg -q</b> if you don't want the password echoed on the screen. Please "
+#~ "note that there is no leading slash in this command.</center>"
+#~ msgstr ""
+#~ "<center>Ovo je komanda koja � biti izvrena kad NickServ zatrai "
+#~ "autentifikaciju za nadimak opisan u ovom pravilu (ako se poklapa i server "
+#~ "i NickServ maska). Ovo � biti obi�o neto kao <b>msg NickServ identify &lt;"
+#~ "vaalozinka&gt; </b>.Moete koristiti \"msg -q\" ako ne elite da lozinka "
+#~ "bude vidljiva na ekranu. Molim imajte na umu da ovde nema po�tne kose "
+#~ "crte u ovoj komandi.</center>"
+
+#, fuzzy
+#~ msgid "&New Rule"
+#~ msgstr "Novo pravilo"
+
+#, fuzzy
+#~ msgid "Re&move Rule"
+#~ msgstr "Ukloni"
+
+#, fuzzy
+#~ msgid "Uknown"
+#~ msgstr "Nepoznato"
+
+#, fuzzy
+#~ msgid "Main"
+#~ msgstr "Mini"
+
+#, fuzzy
+#~ msgid "Show IRC Context Toolbar"
+#~ msgstr "&Nov irc kontekst"
+
+#, fuzzy
+#~ msgid "IRC Tools"
+#~ msgstr "&Alati"
+
+#, fuzzy
+#~ msgid "&User Mode"
+#~ msgstr "&Mod korisnika"
+
+#, fuzzy
+#~ msgid "&Join Channel"
+#~ msgstr "Ovo nije kanal"
+
+#~ msgid "Tool bar button '%s' not found"
+#~ msgstr "Dugme trake alata '%s' nije na�no"
+
+#, fuzzy
+#~ msgid "Options Toolbar"
+#~ msgstr "Opcije"
+
+#, fuzzy
+#~ msgid "Change server settings"
+#~ msgstr "Prikazi pingove servera"
+
+#, fuzzy
+#~ msgid "Change identity settings"
+#~ msgstr "Generalne opcije"
+
+#, fuzzy
+#~ msgid "Configure KVIrc"
+#~ msgstr "&Opcije"
+
+#, fuzzy
+#~ msgid "Window Toolbar"
+#~ msgstr "&Alati"
+
+#, fuzzy
+#~ msgid "Cascade"
+#~ msgstr "Poniti"
+
+#, fuzzy
+#~ msgid "Tile"
+#~ msgstr "&Par�"
+
+#, fuzzy
+#~ msgid "Minimize All"
+#~ msgstr "M&inimizuj"
+
+#, fuzzy
+#~ msgid ""
+#~ "The specified name is assigned to an item that is not a separator (%s)"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#, fuzzy
+#~ msgid "The specified toolbar doesn't exist (%s)"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#, fuzzy
+#~ msgid "The specified button doesn't exist (%s)"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#, fuzzy
+#~ msgid "The specified name is assigned to an item that is not a button (%s)"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#, fuzzy
+#~ msgid "Toolbar name:"
+#~ msgstr "Ime alijasa"
+
+#, fuzzy
+#~ msgid "New &Button"
+#~ msgstr "Nova Mrea"
+
+#, fuzzy
+#~ msgid "New &Separator"
+#~ msgstr "Nov razdvaja"
+
+#, fuzzy
+#~ msgid "URL List Toolbar"
+#~ msgstr "URL lista"
+
+#, fuzzy
+#~ msgid "Scripting Toolbar"
+#~ msgstr "Opcije"
+
+#, fuzzy
+#~ msgid "Show alias editor"
+#~ msgstr "Tekstualni editor"
+
+#, fuzzy
+#~ msgid "Show event editor"
+#~ msgstr "Tekstualni editor"
+
+#, fuzzy
+#~ msgid "Show popup editor"
+#~ msgstr "Uklju�/isklju� editor modova"
+
+#, fuzzy
+#~ msgid "Show raw event editor"
+#~ msgstr "Tekstualni editor"
+
+#, fuzzy
+#~ msgid "Show toolbar editor"
+#~ msgstr "Uklju�/isklju� editor zabrana"
+
+#, fuzzy
+#~ msgid "<nobr><font color=\"%s\"><b>Help Browser</b></font></nobr>"
+#~ msgstr "<nobr><font color=\"%s\"><b>Prozor za pomo�/b></font></nobr>"
+
+#, fuzzy
+#~ msgid "[USEROP]: "
+#~ msgstr "[SSL GREKA]: %Q"
+
+#, fuzzy
+#~ msgid " /dns <nickname>"
+#~ msgstr "Dodaj nadimak"
+
+#, fuzzy
+#~ msgid "&Add"
+#~ msgstr "Dodaj"
+
+#~ msgid "%c%Q%c's real name: %Q"
+#~ msgstr "%c%Q%c - pravo ime: %Q"
+
+#~ msgid "[Parser warning in '%s']: %w"
+#~ msgstr "[parser upozorenje u '%s'] : %w"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] has quit IRC: NETSPLIT %s"
+#~ msgstr "\r!n\r%s\r [%s@\r!h\r%s\r] je prekinuo IRC %s%s"
+
+#~ msgid ""
+#~ "\r!n\r%s\r, a target of this query, has just quit IRC and has been "
+#~ "removed from the target list. Use \r![!dbl]addtarget %s[!txt]Double click "
+#~ "here to re-add %s to the target list\r/addtarget %s\r to add him again"
+#~ msgstr ""
+#~ "\r!n\r%s\r, meta ovog upita, je upravo prekinula IRC i bi� uklonjena sa "
+#~ "liste meta. Koristi \r![!dbl]addtarget %s[!txt] Kliknite duplo da ponovo "
+#~ "dodate %s u listu meta ili \r/addtarget %s\r da ga ponovo dodate"
+
+#~ msgid "%s [%s@%s] has set mode %co %s"
+#~ msgstr "%s [%s@%s] je postavio mod %co %s"
+
+#~ msgid "%s [%s@%s] has set mode %ch %s"
+#~ msgstr "%s [%s@%s] je postavio mod %ch %s"
+
+#~ msgid "%s [%s@%s] has set mode %cv %s"
+#~ msgstr "%s [%s@%s] je postavio mod %cv %s"
+
+#, fuzzy
+#~ msgid "%s [%s@%s] has set mode %cu %s"
+#~ msgstr "%s [%s@%s] je postavio mod %co %s"
+
+#, fuzzy
+#~ msgid "%s [%s@%s] has set mode %ca %s"
+#~ msgstr "%s [%s@%s] je postavio mod %co %s"
+
+#~ msgid "%s [%s@%s] has set mode %cb \r!m%cb\r%s\r"
+#~ msgstr "%s [%s@%s] je postavio mod %cb \r!m%cb\r%s\r"
+
+#~ msgid "%s [%s@%s] has set mode %cI \r!m%cI\r%s\r"
+#~ msgstr "%s [%s@%s] je postavio mod %cI \r!m%cI\r%s\r"
+
+#~ msgid "End of channel invite list for \r!c\r%W\r"
+#~ msgstr "Kraj liste poziva (invite) na kanal za \r!c\r%W\r"
+
+#~ msgid "Invite entry for \r!c\r%W\r: \r!m-I\r%S\r (set by %S on %S)"
+#~ msgstr ""
+#~ "Unos poziva (invite) za \r!c\r%W\r: \r!m-I\r%S\r (postavljen od %S u %S)"
+
+#~ msgid "End of channel ban exception list for \r!c\r%W\r"
+#~ msgstr "Kraj liste izuzetaka zabrane za \r!c\r%W\r"
+
+#~ msgid "Ban exception entry for \r!c\r%W\r: \r!m-e\r%S\r (set by %S on %S)"
+#~ msgstr ""
+#~ "Unos izuzetka zabrane za \r!c\r%W\r: \r!m-e\r%S\r (postavljen od %S u %S)"
+
+#, fuzzy
+#~ msgid "[No targets]"
+#~ msgstr "Nema ciljeva"
+
+#~ msgid "The current window is not a query: no targets added"
+#~ msgstr "Trenutni prozor nije upit: nema dodatih meta"
+
+#~ msgid "The current query has no target '%s'"
+#~ msgstr "Trenutni upit nema metu '%s'"
+
+#~ msgid "The current window is not a query: no targets removed"
+#~ msgstr "Trenutni prozor nije upit: nema uklonjenih meta"
+
+#, fuzzy
+#~ msgid "close this window?"
+#~ msgstr "Zatvori ovaj prozor"
+
+#~ msgid "New &Frame Window"
+#~ msgstr "Nov &okvir prozora"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] is on IRC"
+#~ msgstr "\r!n\r%s\r (%s@\r!h\r%s\r) je na IRC-u"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] is on IRC (watch)"
+#~ msgstr "\r!n\r%s\r (%s@\r!h\r%s\r) je na irc-u (traga�"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] is on IRC (watch: list requested by user)"
+#~ msgstr ""
+#~ "\r!n\r%s\r (%s@\r!h\r%s\r) je na irc-u (traga� korisnik zahteva listu)"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: \r!n\r%s\r [%s@\r!h\r%s\r] is on IRC (watch: possible list "
+#~ "desync)"
+#~ msgstr ""
+#~ "Lista obavetenja: \r!n\r%s\r (%s@\r!h\r%s\r) je na IRC-u (traga� lista "
+#~ "traganja nije sinhronizovana ?)"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] is on IRC (watch: added by user)"
+#~ msgstr "\r!n\r%s\r (%s@\r!h\r%s\r) je na irc-u (traga�"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] has left IRC (watch: removed from list)"
+#~ msgstr ""
+#~ "\r!n\r%s\r (%s@\r!h\r%s\r) je napustio IRC (traga� zaustavljam potragu)"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] has left IRC (watch)"
+#~ msgstr "\r!n\r%s\r (%s@\r!h\r%s\r) je napustio IRC (traga�"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: \r!n\r%s\r [%s@\r!h\r%s\r] has left IRC (watch: unmatched "
+#~ "notify list entry)"
+#~ msgstr ""
+#~ "Lista obavetenja: \r!n\r%s\r (%s@\r!h\r%s\r) je napustio IRC (traga� "
+#~ "neodgovaraju� ulaz u listi obavetenja)"
+
+#, fuzzy
+#~ msgid "5 minutes"
+#~ msgstr "odgovoreno"
+
+#, fuzzy
+#~ msgid "15 minutes"
+#~ msgstr "odgovoreno"
+
+#, fuzzy
+#~ msgid "30 minutes"
+#~ msgstr "odgovoreno"
+
+#, fuzzy
+#~ msgid "Disable"
+#~ msgstr "i (nevidljivost)"
+
+#, fuzzy
+#~ msgid "Connection attempt failed (%s): %s"
+#~ msgstr "Pokuaj konektovanja neuspean (%s) : %s"
+
+#~ msgid "Socket message truncated to 512 bytes."
+#~ msgstr "Poruka priklju�a skra�na na 512 bajtova."
+
+#~ msgid "listed"
+#~ msgstr "izlistano"
+
+#, fuzzy
+#~ msgid "File Transfers"
+#~ msgstr "Obrii mrtve prenose"
+
+#, fuzzy
+#~ msgid "<nobr><font color=\"%s\"><b>File Transfers</b></font></nobr>"
+#~ msgstr "<nobr><font color=\"%s\"><b>Pregleda�Logova</b></font></nobr>"
+
+#~ msgid ""
+#~ "The specified bind address (%s) is not valid (the interface it refers to "
+#~ "might be down)"
+#~ msgstr ""
+#~ "Specifi�a bind adresa (%s) nije validna (interfejs izgleda da je otkazao)"
+
+#~ msgid "Not connected to server"
+#~ msgstr "Nije zaka�n na server"
+
+#, fuzzy
+#~ msgid "Be verbose (show some internal actions)"
+#~ msgstr "Budi preopiran (prikai neke interne akcije)"
+
+#~ msgid "Add new proxy"
+#~ msgstr "Dodaj nov proksi"
+
+#~ msgid "Ops..failed to add the offer..."
+#~ msgstr "Ups...Ne mogu da dodam ponudu...."
+
+#~ msgid "No offer with visible name '%s' and user mask '%s'"
+#~ msgstr "Nema ponude sa vidljivim imenom '%s' i maskom korisnika '%s'"
+
+#~ msgid "%c%d. %s"
+#~ msgstr "%c%d. %s"
+
+#~ msgid " File: %s (%u bytes)"
+#~ msgstr " Fajl: %s (%u bajtova)"
+
+#~ msgid " Mask: %s"
+#~ msgstr " Maska: %s"
+
+#~ msgid " Expires in %d hours %d minutes %d seconds"
+#~ msgstr " Isti� u %d sati %d minuta %d sekundi"
+
+#~ msgid "Never"
+#~ msgstr "Nikad"
+
+#~ msgid "Offer list window"
+#~ msgstr "Prozor liste ponuda"
+
+#~ msgid "Expires"
+#~ msgstr "Isti�"
+
+#~ msgid "File name"
+#~ msgstr "Naziv fajla"
+
+#~ msgid ""
+#~ "<center>Files in this list can be requested by remote users with the "
+#~ "folliwing commandline:<br><b>CTCP &lt;yournick&gt; DCC GET &lt;name&gt;</"
+#~ "b><br>If DCC doesn't work , XDCC can be used instead.</center>"
+#~ msgstr ""
+#~ "<center>Fajlovi u ovoj listi mogu biti zahtevani od udaljenih korisnika "
+#~ "sa prate�m komandnom linijom:<br><b>CTCP &lt;vasnadimak&gt; DCC GET &lt;"
+#~ "naziv&gt;</b><br>Ako DCC ne radi , XDCC moe tako� biti kori�n.</center>"
+
+#~ msgid "Remove all"
+#~ msgstr "Ukloni sve"
+
+#~ msgid "User mask"
+#~ msgstr "Korisni�a maska"
+
+#~ msgid "Expires in"
+#~ msgstr "Isti� u"
+
+#~ msgid "Choose the file to offer"
+#~ msgstr "Izaberi fajl za ponudu"
+
+#~ msgid "Active file offer list"
+#~ msgstr "Aktivna lista ponu�nih fajlova"
+
+#, fuzzy
+#~ msgid "Animate popup menus"
+#~ msgstr "GUI Efekat: Animiraj iska�� menije"
+
+#, fuzzy
+#~ msgid "Fade popup menus"
+#~ msgstr "GUI Efekat: Fade iska��h menija"
+
+#, fuzzy
+#~ msgid "Fade tool-tips"
+#~ msgstr "GUI Efekat: Fade za savet-alata"
+
+#, fuzzy
+#~ msgid "Animate combo-boxes"
+#~ msgstr "GUI Efekat: Animiraj combo-box-ove"
+
+#, fuzzy
+#~ msgid "Frame caption"
+#~ msgstr "Smer"
+
+#~ msgid "Use pseudo transparency (use a global background image)"
+#~ msgstr "Koristi pseudo transparentnost (koristi globalnu sliku pozadine)"
+
+#~ msgid "Child fade factor"
+#~ msgstr "Mla� fade faktor"
+
+#~ msgid "Fade color"
+#~ msgstr "Boja prelaska"
+
+#~ msgid "Obtain global background from KDE"
+#~ msgstr "Preuzmi globalnu pozadinu od KDE"
+
+#~ msgid "Global background image (you need it)"
+#~ msgstr "Globalna slika pozadine (potrebna je)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center><b>This section contains settings for the tree and classic "
+#~ "taskbars</b></center>"
+#~ msgstr ""
+#~ "<center>Stranica ispod sadri stari stil i stablo taskbar opcija</center>"
+
+#, fuzzy
+#~ msgid "Activity:"
+#~ msgstr "Aktivan"
+
+#, fuzzy
+#~ msgid "System:"
+#~ msgstr "sistemska greka"
+
+#~ msgid "Tool tip show timeout (in msecs)"
+#~ msgstr "Saveti alata vreme prikaza (u milisek)"
+
+#~ msgid "Tool tip hide timeout (in msecs)"
+#~ msgstr "Saveti alata vreme skrivanja (u milisek)"
+
+#, fuzzy
+#~ msgid "Taskbar Settings"
+#~ msgstr "Taskbar"
+
+#~ msgid "Nickname 2"
+#~ msgstr "Nadimak 2"
+
+#, fuzzy
+#~ msgid "&Change"
+#~ msgstr "Kanal"
+
+#, fuzzy
+#~ msgid "<br><br>Set by <b>"
+#~ msgstr "<br><br>Postavljeno od <b>"
+
+#~ msgid " on <b>"
+#~ msgstr " na <b>"
+
+#, fuzzy
+#~ msgid "<b>Channel topic:</b><br>"
+#~ msgstr "<b>Naslov kanala</b><br>"
+
+#, fuzzy
+#~ msgid "No topic is set<br>Double-click to set<br>"
+#~ msgstr "Nema postavljenog naslova<br>Dupli klik za postavljanje<br>"
+
+#, fuzzy
+#~ msgid "Show external messages in active window"
+#~ msgstr "nema spoljnih poruka"
+
+#, fuzzy
+#~ msgid "Use taskbar activity meter"
+#~ msgstr "Koristi indikator taskbar-a za IRC-kontekst"
+
+#~ msgid "Logging enabled"
+#~ msgstr "Logovanje omogu�no"
+
+#~ msgid "Load"
+#~ msgstr "U�taj"
+
+#~ msgid "Save"
+#~ msgstr "Sa�vaj"
+
+#~ msgid "Windows remember properties"
+#~ msgstr "Prilago�vanje pam�nja prozora"
+
+#~ msgid "Show the registered users dialog as toplevel window"
+#~ msgstr "Pokai dijalog registrovanih korisnika kao toplevel prozor"
+
+#~ msgid "Show the join channels dialog as a toplevel window"
+#~ msgstr "Pokai dijalog ulaska na kanale kao toplevel prozor"
+
+#~ msgid "Show the servers connect dialog as a toplevel window"
+#~ msgstr "Pokai dijalog konektovanja na server kao toplevel prozor"
+
+#~ msgid "Show the identity dialog as a toplevel window"
+#~ msgstr "Pokazi dijalog identifikovanja kao toplevel prozor"
+
+#~ msgid "Use task bar IRC-context indicator"
+#~ msgstr "Koristi indikator taskbar-a za IRC-kontekst"
+
+#~ msgid "Use tree-window-list task bar"
+#~ msgstr "Koristi stablo-liste-prozora za taskbar"
+
+#, fuzzy
+#~ msgid "Connections in progress"
+#~ msgstr "konektovanje u toku..."
+
+#~ msgid "%c\r!n\r%s\r%c whowas info from \r!s\r%s\r"
+#~ msgstr "%c\r!n\r%s\r%c whowas informacije od \r!s\r%s\r"
+
+#, fuzzy
+#~ msgid "Userhost info: %s"
+#~ msgstr "Korisnik nije na�n (%s)"
+
+#~ msgid "End of channel list"
+#~ msgstr "Kraj liste kanala"
+
+#, fuzzy
+#~ msgid "Failed to write the file"
+#~ msgstr "Neuspeno pisanje u fajl %s"
+
+#, fuzzy
+#~ msgid "Select the file name for the exported aliases file"
+#~ msgstr "Izaberi ime za hit listu"
+
+#~ msgid "You're connected to %s (%s)"
+#~ msgstr "Vi ste zaka�ni na %s (%s)"
+
+#~ msgid "You're not connected to a server: list cannot be requested"
+#~ msgstr "Niste zaka�ni na server: lista ne moe biti zahtevana"
+
+#~ msgid "You're not connected to a server: links cannot be requested"
+#~ msgstr "Niste zaka�ni na server: linkovi ne mogu biti zahtevani"
+
+#, fuzzy
+#~ msgid "Select the file name for the exported popup file"
+#~ msgstr "Izaberite ime za filter fajla"
+
+#, fuzzy
+#~ msgid "Select the file name for the exported popups file"
+#~ msgstr "Izaberite ime za filter fajla"
+
+#~ msgid "Delete property"
+#~ msgstr "Obrii osobinu"
+
+#~ msgid "Import"
+#~ msgstr "Uvezi"
+
+#~ msgid "Choose the name of the db file"
+#~ msgstr "Unesite ime fajla databaze"
+
+#~ msgid "Can't open the file %s for reading"
+#~ msgstr "Ne mogu da otvorim fajl %s za �tanje"
+
+#, fuzzy
+#~ msgid "Generate \"defpopup\" Script Snippet"
+#~ msgstr "Generii ise�k defpopup skripte"
+
+#, fuzzy
+#~ msgid "KVIrc Scripts (*.kvs);;All Files (*)"
+#~ msgstr "KVIrc skripte (*.kvs);;Svi fajlovi (*)"
+
+#~ msgid "Create query for server notices"
+#~ msgstr "Kreiraj upit za poruke servera"
+
+#, fuzzy
+#~ msgid "Legalese: The License"
+#~ msgstr "Pravilo: Licenca"
+
+#, fuzzy
+#~ msgid "B&rowse..."
+#~ msgstr "Pregledaj..."
+
+#, fuzzy
+#~ msgid "Commit Your Settings"
+#~ msgstr "Izvravanje Vaih izbora"
+
+#~ msgid "Choose a save file name"
+#~ msgstr "Izaberi ime fajla za �vanje"
+
+#~ msgid "Cut"
+#~ msgstr "Iseci"
+
+#~ msgid "Copy"
+#~ msgstr "Kopiraj"
+
+#~ msgid "New label"
+#~ msgstr "Nova oznaka"
+
+#~ msgid "New menu"
+#~ msgstr "Nov meni"
+
+#~ msgid "New external menu"
+#~ msgstr "Nov spoljanji meni"
+
+#~ msgid "New prologue at this level"
+#~ msgstr "Nov prolog u ovom nivou"
+
+#~ msgid "New epilogue at this level"
+#~ msgstr "Nov zaklju�k u ovom nivou"
+
+#, fuzzy
+#~ msgid "Add button"
+#~ msgstr "Dodaj zabranu (ban)"
+
+#, fuzzy
+#~ msgid "Add separator"
+#~ msgstr "Nov razdvaja"
+
+#, fuzzy
+#~ msgid "Delete item"
+#~ msgstr "Obrii masku"
+
+#, fuzzy
+#~ msgid "Choose file for saving the definition"
+#~ msgstr "Izaberi ime fajla za skriptu"
+
+#, fuzzy
+#~ msgid "Channel admin foreground color"
+#~ msgstr "Biranje boje ispisa"
+
+#~ msgid "Op foreground color"
+#~ msgstr "OP boja ispisa"
+
+#~ msgid "Half-op foreground color"
+#~ msgstr "Half-OP boja ispisa"
+
+#~ msgid "Voice foreground color"
+#~ msgstr "VOICE boja ispisa"
+
+#, fuzzy
+#~ msgid "User-op foreground color"
+#~ msgstr "OP boja ispisa"
+
+#~ msgid "Normal foreground color"
+#~ msgstr "Normalna boja ispisa"
+
+#~ msgid ""
+#~ "I'm behind a firewall (or similar): can't accept incoming DCC connections"
+#~ msgstr ""
+#~ "Ja sam iza firewall-a (ili sli�o): ne mogu da prihvatim dolaze� DCC "
+#~ "konekcije"
+
+#~ msgid "Force the following interface for listening (unless -i is used)"
+#~ msgstr "Forsiraj prate� interfejs za sluanje (izuzev ako je -i kori�no)"
+
+#~ msgid "Interface address (or name)"
+#~ msgstr "Adresa interfejsa (ili ime)"
+
+#~ msgid "Max"
+#~ msgstr "Maks"
+
+#~ msgid "Always send the following fake IP (unless -a is used)"
+#~ msgstr "Uvek alji slede� lanu IP (izuzev ako je -a kori�no)"
+
+#~ msgid "Create minimized when auto-accepted (when incoming)"
+#~ msgstr "Napravi minimizirano kad je automatsko prihvatanje (kod dolaze�h)"
+
+#~ msgid "Auto close on success"
+#~ msgstr "Automatski zatvori ako je uspeno"
+
+#~ msgid "Idle step (msecs)"
+#~ msgstr "Korak mirovanja (msek)"
+
+#~ msgid "Send zero-byte-acknowledge (when receiving files)"
+#~ msgstr "Poalji nula-bajtnu-potvrdu prijema (kad prima fajlove)"
+
+#~ msgid "Use Media-Type guessed save path"
+#~ msgstr "Koristi smatran Tip-Medija putanje za �vanje"
+
+#~ msgid "Echo the channel topic on channel join"
+#~ msgstr "Eho naslova kanala po ulasku na kanal"
+
+#~ msgid "Use anti-spam on PRIVMSG"
+#~ msgstr "Koristi ANTI-SPAM na PRIVMSG"
+
+#~ msgid "Use anti-spam on NOTICE"
+#~ msgstr "Koristi ANTI-SPAM na NOTICE"
+
+#~ msgid "Spam words"
+#~ msgstr "Spam re�"
+
+#~ msgid "Auto-enable logging in channel windows"
+#~ msgstr "Auto-uklju�nje logovanja u kanal prozoru"
+
+#~ msgid "Auto-enable logging in dcc-chat windows"
+#~ msgstr "Auto-uklju�nje logovanja u dcc-chat prozoru"
+
+#~ msgid "Auto-enable logging in console windows"
+#~ msgstr "Auto-uklju�nje logovanja u konzolnom prozoru"
+
+#~ msgid "Allow max (0-10000)"
+#~ msgstr "Dozvoli maksimum (0-1000)"
+
+#~ msgid "CTCP's in (1-3600) secs"
+#~ msgstr "CTCP-a u (1-3600) sekundi"
+
+#~ msgid "Ignore PING requests"
+#~ msgstr "Ignorii PING zahteve"
+
+#~ msgid "Ignore VERSION requests"
+#~ msgstr "Ignorii VERSION zahteve"
+
+#~ msgid "Ignore CLIENTINFO requests"
+#~ msgstr "Ignorii CLIENTINFO zahteve"
+
+#~ msgid "Ignore USERINFO requests"
+#~ msgstr "Ignorii USERINFO zahteve"
+
+#~ msgid "Ignore SOURCE requests"
+#~ msgstr "Ignorii SOURCE zahteve"
+
+#~ msgid "Ignore TIME requests"
+#~ msgstr "Ignorii TIME zahteve"
+
+#, fuzzy
+#~ msgid "Ignore PAGE requests"
+#~ msgstr "Ignorii PING zahteve"
+
+#, fuzzy
+#~ msgid "Ignore AVATAR requests"
+#~ msgstr "Ignorii TIME zahteve"
+
+#~ msgid "Ignore DCC/TDCC requests"
+#~ msgstr "Ignorii DCC/TDCC zahteve"
+
+#~ msgid "Show channel flags"
+#~ msgstr "Pokai zastavice kanala"
+
+#~ msgid "Create query on PRIVMSG"
+#~ msgstr "Kreiraj upit na PRIVMSG"
+
+#~ msgid "Create query on NOTICE"
+#~ msgstr "Kreiraj upit na NOTICE"
+
+#~ msgid ""
+#~ "To add someone to the notify list, use the /notify command.\n"
+#~ "Tecnically speaking: you must register\n"
+#~ "his mask in the registered users database and then set his \"notify\"\n"
+#~ "property to the nicknames that you want to be notified."
+#~ msgstr ""
+#~ "Za dodavanje nekoga u listu obavetenja, koristi /notify komandu.\n"
+#~ "Tehni�i govore�: moete registrovati\n"
+#~ "njegovu masku u databazi registrovanih korisnika i onda da postavite "
+#~ "njegovo \"notify\"\n"
+#~ "svojstvo nadimku koji zelite da bude notiran."
+
+#~ msgid ""
+#~ "<center><b>CTCP</b> stands for <b>C</b>lient <b>t</b>o <b>C</b>lient "
+#~ "<b>p</b>rotocol.<br><br>It is used to transmit special control messages "
+#~ "over an IRC connection.<br>The options in this section will modify the "
+#~ "KVIrc behaviour regarding the CTCP requests and replies.<br><br>Tip: do "
+#~ "NOT totally disable CTCP's: they are useful and fun. KVIrc has a builtin "
+#~ "CTCP-flood protection system: use that instead.</center>"
+#~ msgstr ""
+#~ "<center><b>CTCP</b> postoji za <b>K</b>lijent <b>k</b>a <b>K</b>lijentu "
+#~ "<b>p</b>rotokol.<br><br>Koristi se za prenos specijalnih kontrolnih "
+#~ "poruka preko IRC konekcije.<br>Opcije u ovoj sekciji � izmeniti ponaanje "
+#~ "KVIrc-a po pitanju CTCP zahteva i odgovora.<br><br>Savet: NEMOJTE totalno "
+#~ "isklju�ti CTCP-ove: oni su korisni i zabavni. KVIrc ima ugra�n sistem "
+#~ "CTCP flood zatite: koristite je.</center>"
+
+#~ msgid "New"
+#~ msgstr "Novi"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to send a DCC GET<br>when someone "
+#~ "sets an avatar and there is no local copy available.<br>There is a "
+#~ "maximum file size for the avatars that will get requested<br>(it can be "
+#~ "set below) , make sure that the value is not too big.</center>"
+#~ msgstr ""
+#~ "<center>Ova opcija omogu�va KVIrc-u da alje DCC GET<br>kad neko postavi "
+#~ "svoj avatar i kad nema lokalne kopije.<br>Ovde je i maksimalna veli�na "
+#~ "fajla za avatar koji je zahtevan<br>(moe biti podeeno ispod) , budite "
+#~ "sigurni vrednost nije previe velika.</center>"
+
+#~ msgid "Maximum requested avatar size (in bytes)"
+#~ msgstr "Maksimalna veli�na zahtevanog avatara (u bajtovima)"
+
+#~ msgid ""
+#~ "<center>When someone sends you a CTCP AVATAR request,<br>KVIrc will reply "
+#~ "with a CTCP AVATAR containing the name<br>of your avatar file and its "
+#~ "size.<br>A time-limited file offer will be added for the avatar "
+#~ "file<br>and the requesting user (so he will be able to download "
+#~ "your<br>avatar by issuing a DCC GET message).<br>This is the offer "
+#~ "timeout: the time after that the offer will expire.</center>"
+#~ msgstr ""
+#~ "<center>Kada Vam neko poalje CTCP AVATAR zahtev,<br>KVIrc � odgovoriti sa "
+#~ "CTCP AVATAR koji sadri ime<br>Vaeg avatara i njegovu veli�nu."
+#~ "<br>Vremenski ograni�na ponuda � biti dodata za avatar fajl<br> i zahteve "
+#~ "korisnika (da bi mogli da preuzmu Va <br>avatar koriste� DCC GET poruku)."
+#~ "<br>Ovo je vreme ponude: posle ovoga ponuda � iste�-</center>"
+
+#~ msgid "Bounding rectangle width"
+#~ msgstr "Krajnja irina pravougaonika"
+
+#~ msgid "Bounding rectangle height"
+#~ msgstr "Krajnja visina pravougaonika"
+
+#, fuzzy
+#~ msgid "Send/Recv"
+#~ msgstr "Poalji"
+
+#, fuzzy
+#~ msgid "Secure sockets layer"
+#~ msgstr "Grea Sigurnog Nivo-a Priklju�a (SSL-a)"
+
+#, fuzzy
+#~ msgid "Ctcp flood protection"
+#~ msgstr "Koristi flood zatitu"
+
+#~ msgid "Disable this handler"
+#~ msgstr "Onemogu� ovaj manipulator"
+
+#, fuzzy
+#~ msgid "Join Channel - KVIrc"
+#~ msgstr "Dodaj nov server"
+
+#~ msgid "Handler name"
+#~ msgstr "Ime manipulatora"
+
+#~ msgid "Add raw event"
+#~ msgstr "Dodaj sirov doga�j"
+
+#~ msgid "New raw event handler"
+#~ msgstr "Nov upravlja�raw doga�ja"
+
+#~ msgid "Please enter the RAW message number (0-999)"
+#~ msgstr "Molim unesite broj RAW poruke (0-999)"
+
+#~ msgid "Active foreground"
+#~ msgstr "Aktivni ispis"
+
+#~ msgid "Highlight level 1"
+#~ msgstr "Nivo naglaenosti 1"
+
+#~ msgid "Highlight level 2"
+#~ msgstr "Nivo naglaenosti 2"
+
+#~ msgid "Highlight level 3"
+#~ msgstr "Nivo naglaenosti 3"
+
+#~ msgid "Highlight level 4"
+#~ msgstr "Nivo naglaenosti 4"
+
+#~ msgid "Highlight level 5"
+#~ msgstr "Nivo naglaenosti 5"
+
+#~ msgid "Minimized text"
+#~ msgstr "Minimizirani tekst"
+
+#~ msgid "Force brutal QUIT"
+#~ msgstr "Forsiraj brutalni IZLAZAK (QUIT)"
+
+#~ msgid "Attempt to rejoin channel when kicked"
+#~ msgstr "Pokuaj da u� na kanal kad si izba�n"
+
+#~ msgid "Keep channel open on KICK"
+#~ msgstr "Zadri kanal otvoren kad te izbace (KICK)"
+
+#~ msgid "1 message every (10000-10000000 usec.)"
+#~ msgstr "1 poruka na svakuh (10000-10000000 usec.)"
+
+#, fuzzy
+#~ msgid "Default /PART message"
+#~ msgstr "Predefinisana poruka odsutnosti"
+
+#, fuzzy
+#~ msgid "Default /QUIT message"
+#~ msgstr "Predefinisana poruka odsutnosti"
+
+#, fuzzy
+#~ msgid "This button adds a new network."
+#~ msgstr "Dodaj novu mreu"
+
+#, fuzzy
+#~ msgid "This button adds a new server to the current network."
+#~ msgstr "Dodaj novu mreu"
+
+#, fuzzy
+#~ msgid "Removes the current network or server."
+#~ msgstr "Trenutni upit nema metu '%s'"
+
+#~ msgid "Custom away nick"
+#~ msgstr "Obi�n nadimak odsutnosti"
+
+#, fuzzy
+#~ msgid "Double-click to open this link<br>Right-click to view other options"
+#~ msgstr ""
+#~ "Dupli klik za otvaranje ovog linka<br>Desni klik za pregled ostalih opcija"
+
+#~ msgid "[Unknown]"
+#~ msgstr "[Nepoznat]"
+
+#~ msgid ""
+#~ "<center>The options in the pages below will modify the look & feel of the "
+#~ "KVIrc components</center>"
+#~ msgstr ""
+#~ "<center>Ova opcija na donjoj strani � promeniti izgled & ose�j za KVIrc "
+#~ "komponente</center>"
+
+#, fuzzy
+#~ msgid "Server connect:"
+#~ msgstr "Sigurna konekcija"
+
+#, fuzzy
+#~ msgid "Limit outgoing"
+#~ msgstr "Ograni� odlaze� saobra�j na"
+
+#, fuzzy
+#~ msgid "&Recent Channels"
+#~ msgstr "&Skoranji kanali"
+
+#, fuzzy
+#~ msgid "&Add Channel"
+#~ msgstr "Dodaj novi alijas"
+
+#, fuzzy
+#~ msgid "Add Channel - KVIrc"
+#~ msgstr "Dodaj nov server"
+
+#, fuzzy
+#~ msgid "IRC Servers"
+#~ msgstr "Server"
+
+#, fuzzy
+#~ msgid "Ident"
+#~ msgstr "Indeks"
+
+#~ msgid ""
+#~ "This server seems to support the WATCH notify list method: will try to "
+#~ "use it."
+#~ msgstr ""
+#~ "Server izgleda podrava WATCH listu obavetenja: probacemo da je koristimo."
+
+#, fuzzy
+#~ msgid "Text Editor"
+#~ msgstr "Tekstualni editor"
+
+#~ msgid "Row:0 Col:0"
+#~ msgstr "Red:0 Kolona:0"
+
+#~ msgid "Save &As.."
+#~ msgstr "S&a�vaj kao..."
+
+#~ msgid "&Close"
+#~ msgstr "&Zatvori"
+
+#~ msgid "&Switch mode"
+#~ msgstr "&Promena moda"
+
+#~ msgid "&File"
+#~ msgstr "&Fajl"
+
+#~ msgid "Unnamed"
+#~ msgstr "Bezimeni"
+
+#~ msgid "Row:%d Col:%d"
+#~ msgstr "Red:%d Kolona %d"
+
+#, fuzzy
+#~ msgid "Plain text"
+#~ msgstr "Na� slede�"
+
+#~ msgid ", modified"
+#~ msgstr ", izmenjen"
+
+#~ msgid "Save to file"
+#~ msgstr "Sa�vaj u fajl"
+
+#~ msgid ""
+#~ "Save failed!\n"
+#~ "Cant open the file %s for writing"
+#~ msgstr ""
+#~ "Snimanje nije uspelo!\n"
+#~ "Ne mogu da otvorim fajl %s za pisanje"
+
+#~ msgid "Choose a script file to load"
+#~ msgstr "Izaberi fajl skripte za u�tavanje"
+
+#~ msgid "Failed to open the file %s"
+#~ msgstr "Ne mogu da otvorim fajl %s"
+
+#~ msgid "Toggle double view"
+#~ msgstr "Uklju�/isklju� dupli prikaz"
+
+#~ msgid "Toggle user list"
+#~ msgstr "Uklju�/isklju� korisni�u listu"
+
+#~ msgid "Toggle ban editor"
+#~ msgstr "Uklju�/isklju� editor zabrana"
+
+#~ msgid "What is this ?"
+#~ msgstr "ta je ovo ?"
+
+#~ msgid "This looks like a masked hostname: can't look it up"
+#~ msgstr "Ovo li� na maskirano ime hosta: ne mogu da ga reim"
+
+#~ msgid "This looks like an unknown hostname: can't look it up"
+#~ msgstr "Ovo li� na nepoznato ime hosta: ne mogu da ga reim"
+
+#~ msgid "This looks like a hub server<br>"
+#~ msgstr "Ovo izgleda kao HUB server<br>"
+
+#~ msgid "This looks like an unknown server<br>"
+#~ msgstr "Ovo izgleda kao nepoznat server<br>"
+
+#~ msgid "Show &KVIrc"
+#~ msgstr "&Pove�j KVIrc przor"
+
+#, fuzzy
+#~ msgid "Hide &KVIrc"
+#~ msgstr "&Zavri Kvirc"
+
+#, fuzzy
+#~ msgid "Big"
+#~ msgstr "Podizanje"
+
+#, fuzzy
+#~ msgid "Position"
+#~ msgstr "Uslov:"
+
+#~ msgid "w (Wallops)"
+#~ msgstr "w (Wallops)"
+
+#~ msgid "s (Server notices)"
+#~ msgstr "s (Obavetenja servera)"
+
+#~ msgid "i (Invisible)"
+#~ msgstr "i (nevidljivost)"
+
+#~ msgid "\r!n\r%s\r (%s@\r!h\r%s\r) is on irc (user-added watch)"
+#~ msgstr "\r!n\r%s\r (%s@\r!h\r%s\r) je na IRC-u (kosrisnik dodat traga�)"
+
+#, fuzzy
+#~ msgid "Manage S&hared Files"
+#~ msgstr "Nema deljenih fajlova"
+
+#~ msgid "Username"
+#~ msgstr "Korisni�o ime"
+
+#~ msgid "Real name"
+#~ msgstr "Stvarno ime"
+
+#~ msgid "concurrent transfers limit reached (%u of %u transfers running)"
+#~ msgstr "Dostignut limit istovremenih prenosa (%u od %u prenosa pokrenuto)"
+
+#~ msgid "slots limit reached (%u slots of %u)"
+#~ msgstr "dostignut limit slotova (%u slotova od %u)"
+
+#~ msgid "too many pending connections"
+#~ msgstr "previe nereenih konekcija"
+
+#~ msgid "invalid port number %s"
+#~ msgstr "pogrean broj porta %s"
+
+#~ msgid "invalid ip address in old format %s"
+#~ msgstr "pogrena IP adresa u starom formatu %s"
+
+#~ msgid "invalid ip address %s"
+#~ msgstr "pogrena IP adresa %s"
+
+#~ msgid ""
+#~ "This executable has been compiled without SSL support: the SSL extension "
+#~ "to DCC CHAT is not available"
+#~ msgstr ""
+#~ "KVIrc je kompajliran bez SSL podrke: SSL ekstenzija u DCC �SKANJU (CHAT-"
+#~ "u) nije mogu�"
+
+#~ msgid ""
+#~ "This executable has been compiled without SSL support: the SSL extension "
+#~ "to DCC SEND is not available"
+#~ msgstr ""
+#~ "KVIrc je kompajliran bez SSL podrke: SSL ekstenzija u DCC SLANJU (SEND) "
+#~ "nije mogu�"
+
+#~ msgid ""
+#~ "can't proceed with dcc recv: transfer not initiated for file %s on port %s"
+#~ msgstr ""
+#~ "ne mogu da odradim DCC primanje: prenos nije otpo�o za fajl %s na portu %s"
+
+#~ msgid "invalid resume position argument '%s'"
+#~ msgstr "neispravan argument pozicije za nastavak %s"
+
+#~ msgid ""
+#~ "can't proceed with dcc send: transfer not initiated for file %s on port %"
+#~ "s, or invalid resume size"
+#~ msgstr ""
+#~ "ne mogu da odradim DCC slanje: nije otpo�o prenos za fajl %s ma portu %s, "
+#~ "ili je pogrena veli�na za nastavak"
+
+#~ msgid ""
+#~ "This executable has been compiled without SSL support: the SSL extension "
+#~ "to DCC RECV is not available"
+#~ msgstr ""
+#~ "KVIrc je kompajliran bez SSL podrke: SSL ekstenzija u DCC PRIMANJU (RECV) "
+#~ "nije mogu�"
+
+#~ msgid "invalid recv request: position %u is 'out of the file'"
+#~ msgstr "pogrean zahtev za primanje: pozicija %u je 'premaila fajl'"
+
+#~ msgid ""
+#~ "This executable has been compiled without SSL support: the SSL extension "
+#~ "to DCC RSEND is not available"
+#~ msgstr ""
+#~ "KVIrc je kompajliran bez SSL podrke: SSL ekstenzija u DCC RSEND nije mogu�"
+
+#~ msgid ""
+#~ "This executable has been compiled without SSL support: the SSL extension "
+#~ "to DCC GET is not available"
+#~ msgstr ""
+#~ "KVIrc je kompajliran bez SSL podrke: SSL ekstenzija u DCC GET nije mogu"
+
+#~ msgid "no file offer named '%s' (with size %s) available for %s [%s@%s]"
+#~ msgstr ""
+#~ "nema ponu�nog imena fajla '%s' (sa veli�nom %s) dostupnog za %s [%s@%s]"
+
+#, fuzzy
+#~ msgid "total users"
+#~ msgstr "voiced korisnici"
+
+#~ msgid ""
+#~ "The server seems to support the WATCH notify list method: going to use it"
+#~ msgstr ""
+#~ "Izgleda da server podrava WATCH metodu liste obavetenja: upotrebi� to"
+
+#, fuzzy
+#~ msgid "Connection started at"
+#~ msgstr "Konektovanje prekinuto"
+
+#, fuzzy
+#~ msgid "Silence from server"
+#~ msgstr "irc server"
+
+#~ msgid "You might try to disable caching and reconnect again"
+#~ msgstr "Moete isklju�ti keiranje i probati konektovanje ponovo"
+
+#, fuzzy
+#~ msgid "What's This?"
+#~ msgstr "ta je ovo ?"
+
+#~ msgid ""
+#~ "(IpV6 support is disabled: the identd will listen only on IpV4 interfaces)"
+#~ msgstr ""
+#~ "(IPV6 podrka je isklju�na: identd ce sluati samo na IPV4 interfejsima)"
+
+#, fuzzy
+#~ msgid "Default user mode:"
+#~ msgstr "Mogu� modovi korisnika:"
+
+#, fuzzy
+#~ msgid "Wallops"
+#~ msgstr "w (Wallops)"
+
+#, fuzzy
+#~ msgid "Server Notices"
+#~ msgstr "obavetenje servera"
+
+#~ msgid "Avatar image"
+#~ msgstr "Avatar slika"
+
+#~ msgid "Change now"
+#~ msgstr "Promeni sad"
+
+#~ msgid "Ip address:"
+#~ msgstr "IP Adresa:"
+
+#~ msgid "Use IpV6 protocol"
+#~ msgstr "Koristi IpV6 protokol"
+
+#~ msgid "Connect timeout (5-6000 sec.)"
+#~ msgstr "Vreme isteka konekcije (5-6000 sek.)"
+
+#, fuzzy
+#~ msgid "Recent channels"
+#~ msgstr "&Skoranji kanali"
+
+#~ msgid "Recursion too deep"
+#~ msgstr "Rekurzija je preduboka"
+
+#~ msgid "Icon table"
+#~ msgstr "Tabela ikona"
+
+#~ msgid "normal text"
+#~ msgstr "normalni tekst"
+
+#~ msgid "dcc request"
+#~ msgstr "DCC zahtev"
+
+#~ msgid "query notice crypted"
+#~ msgstr "ifrovan upit obavetenja"
+
+#~ msgid "ssl message"
+#~ msgstr "ssl poruka"
+
+#~ msgid "Someone is joining an inexisting channel...desync ?"
+#~ msgstr "Neko je uao na nepostoje� kanal...desinhronizacija ?"
+
+#~ msgid "Kick message to an inexisting channel...desync ?"
+#~ msgstr "Kick poruka na nepostoje�m kanalu...desinhronizacija ?"
+
+#~ msgid "Received a TOPIC message for an unknown channel...desync ?"
+#~ msgstr "Primljena TOPIC poruka za nepoznat kanal...desinhronizacija ?"
+
+#~ msgid "Mode change for an unknown channel ?"
+#~ msgstr "Promena moda za nepoznati kanal ?"
+
+#~ msgid "Sent PART request , waiting for reply..."
+#~ msgstr "Poslat PART zahtev , �kam odgovor..."
+
+#~ msgid "KVIrc local directory"
+#~ msgstr "KVirc lokalni direktorijum"
+
+#~ msgid "Don't show hidden files"
+#~ msgstr "Ne prikazuj skrivene fajlove"
+
+#, fuzzy
+#~ msgid "Irc context"
+#~ msgstr "Nema irc konteksta"
+
+#~ msgid "No irc context"
+#~ msgstr "Nema irc konteksta"
+
+#~ msgid "&Links"
+#~ msgstr "&Linkovi"
+
+#, fuzzy
+#~ msgid "&Connect to server"
+#~ msgstr "Nije zaka�n na server"
+
+#~ msgid "All"
+#~ msgstr "Sve"
+
+#~ msgid " - Mask - List - "
+#~ msgstr " - Maska - Lista - "
+
+#, fuzzy
+#~ msgid "&Minimize all"
+#~ msgstr "M&inimizuj"
+
+#, fuzzy
+#~ msgid "&Restore all"
+#~ msgstr "&Obnovi"
+
+#~ msgid "&Tile"
+#~ msgstr "&Par�"
+
+#, fuzzy
+#~ msgid "Choose a file..."
+#~ msgstr "Izaberite jednu sliku..."
+
+#, fuzzy
+#~ msgid "Save properties as default for this window type"
+#~ msgstr "&Sa�vaj podeavanja kao predefinisana za ovu vrstu prozora"
+
+#, fuzzy
+#~ msgid "Quit KVirc ?"
+#~ msgstr "&Zavri Kvirc"
+
+#~ msgid "Html mode"
+#~ msgstr "Html mod"
+
+#, fuzzy
+#~ msgid "File transfer window"
+#~ msgstr "Nov &okvir prozora"
+
+#~ msgid "KVIrc : general options"
+#~ msgstr "KVIrc : generalne opcije"
+
+#, fuzzy
+#~ msgid "After login join channels"
+#~ msgstr "Auto-uklju�nje logovanja u kanal prozoru"
+
+#, fuzzy
+#~ msgid "After connect execute"
+#~ msgstr "Po konektovanju izvri:"
+
+#~ msgid "Uses IpV6 protocol"
+#~ msgstr "Kori�nje IpV6 protokola"
+
+#~ msgid "Add new network"
+#~ msgstr "Dodaj novu mreu"
+
+#~ msgid "Add new server"
+#~ msgstr "Dodaj nov server"
+
+#, fuzzy
+#~ msgid "Ops.. can't create the theme directory"
+#~ msgstr "Ne mogu da kreiram deo terminal emulatora"
+
+#~ msgid "Limit alias recursion (Bad practice TM)"
+#~ msgstr "Ograni� alijas rekurziju (Loa praksa TM)"
+
+#, fuzzy
+#~ msgid "Browse ..."
+#~ msgstr "Pregledaj..."
+
+#, fuzzy
+#~ msgid "Choose the data folder"
+#~ msgstr "Izaberi fajl za ponudu"
+
+#, fuzzy
+#~ msgid "Abort setup"
+#~ msgstr "Kvirc podeavanja"
+
+#, fuzzy
+#~ msgid "Server options"
+#~ msgstr "Generalne opcije"
+
+#, fuzzy
+#~ msgid "Restore all windows"
+#~ msgstr "M&inimizuj"
+
+#~ msgid "Close &Window"
+#~ msgstr "Zatvori pr&ozor"
+
+#~ msgid "Accept changes"
+#~ msgstr "Prihvati izmene"
+
+#~ msgid "URL List Window"
+#~ msgstr "Prozor URL liste"
+
+#, fuzzy
+#~ msgid "Log viewer"
+#~ msgstr "&Prikaziva�zapisa"
+
+#, fuzzy
+#~ msgid "Shared files window"
+#~ msgstr "Zajedni�i (shared) fajlovi"
+
+#, fuzzy
+#~ msgid "&Old Tools"
+#~ msgstr "&Alati"
+
+#, fuzzy
+#~ msgid ""
+#~ "Check this option if you want to get the IP for dcc requests by using "
+#~ "the /dns <mynick> irc command."
+#~ msgstr ""
+#~ "Uklju�te ovu opciju ako elite da se uvek alje lana IP adresa u Vaim DCC "
+#~ "zahtevima.<br>Ovo moe biti korisno ako ste iza rutera koji ima prevo�nje "
+#~ "mrenih adresa.<br>Tako� ce vam biti potreban gornji opseg portova..."
+
+#, fuzzy
+#~ msgid "Current Interface address (got by /dns)"
+#~ msgstr "Adresa interfejsa (ili ime)"
+
+#, fuzzy
+#~ msgid ""
+#~ "This is the IP that will be sent with all the dcc requests if you check "
+#~ "the option above"
+#~ msgstr ""
+#~ "Ovo je lana adresa koja � biti poslata sa svim DCC zahtevima ako uklju�te "
+#~ "gornju opciju"
+
+#, fuzzy
+#~ msgid "&Log viewer (toplevel)"
+#~ msgstr "Prikaziva�zapisa (&MDI)"
+
+#~ msgid "Log viewer (&MDI)"
+#~ msgstr "Prikaziva�zapisa (&MDI)"
+
+#~ msgid "&Offer list"
+#~ msgstr "&Lista ponuda"
+
+#~ msgid "Log Viewer"
+#~ msgstr "Pregleda�Logova"
+
+#~ msgid "<nobr><font color=\"%s\"><b>Log Viewer</b></font></nobr>"
+#~ msgstr "<nobr><font color=\"%s\"><b>Pregleda�Logova</b></font></nobr>"
+
+#~ msgid "Log"
+#~ msgstr "Beleke"
+
+#~ msgid "Channel:"
+#~ msgstr "Kanal:"
+
+#~ msgid ""
+#~ "You need to choose a folder now.<br>KVIrc will use it to store its "
+#~ "configuration and to save the downloaded files.<br>Tip: choose a folder "
+#~ "that you will be able to find easily later<br>"
+#~ msgstr ""
+#~ "Morate sada da izaberete fasciklu.<br>KVIrc � da je koristi za svoja "
+#~ "podeavanja i za �vanje svu�nih fajlova.<br>Savet: izaberite fasciklu koju "
+#~ "�te kasnije biti u mogu�osti da brzo i lako pronadjete<br>"
+
+#~ msgid "Kvirc setup"
+#~ msgstr "Kvirc podeavanja"
+
+#~ msgid ""
+#~ "The directory '%s' already exists.\n"
+#~ "(maybe from a previous Kvirc installation)\n"
+#~ "If you experience any problems try deleting the old directory:\n"
+#~ "the setup program will be started automatically again."
+#~ msgstr ""
+#~ "Direktorijum '%s' ve�postoji.\n"
+#~ "(moda od prethodne instalacije KVIrc-a)\n"
+#~ "Ako o�kujete ili imate probleme probajte da obriete stari direktorijum:\n"
+#~ "setup program � se automatski ponovo pokrenuti."
+
+#~ msgid ">>"
+#~ msgstr ">>"
+
+#~ msgid ""
+#~ ": No valid local copy of avatar available; unacceptable/invalid avatar "
+#~ "size (%u): ignoring"
+#~ msgstr ""
+#~ ": Nema mogu� ispravne lokalne kopije avatara; neprihvatljiva/pogrena "
+#~ "veli�na avatara (%u): ignoriem"
+
+#, fuzzy
+#~ msgid "About KVirc..."
+#~ msgstr "O &KVIrc-u..."
+
+#, fuzzy
+#~ msgid "About"
+#~ msgstr "Prekini"
+
+#, fuzzy
+#~ msgid "License"
+#~ msgstr "&Linija"
+
+#~ msgid ""
+#~ "Can't send the DCC %s request to %s: the connection has been terminated"
+#~ msgstr "Ne mogu da poaljem DCC %s zahtev za %s: konekcija je bila prekinuta"
+
+#~ msgid ""
+#~ "<center><b>%s [%s@%s]</b> requests a<br><b>Direct Client Connection</b> "
+#~ "in <b>%s</b> mode.<br>"
+#~ msgstr ""
+#~ "<center><b>%s [%s@%s]</b> zahteva <br><b>Direktnu Konekciju Klijenta (DCC)"
+#~ "</b> u <b>%s</b> modu.<br>"
+
+#~ msgid "The connection will be secured using SSL.<br>"
+#~ msgstr "Konekcija � biti osigurana kori�njem SSL-a.<br>"
+
+#~ msgid ""
+#~ "The connection target will be host <b>%s</b> on port <b>%s</"
+#~ "b><br><br><hr><br>Do you accept ?<br></center>"
+#~ msgstr ""
+#~ "Odredite konekcije � biti host <b>%s</b> na portu <b>%s</"
+#~ "<br><br><hr><br>Da li prihvatate ?<br></center>"
+
+#~ msgid ""
+#~ "<center><b>%s [%s@%s]</b> requests a<br><b>Direct Client Connection</b> "
+#~ "in <b>VOICE</b> mode.<br>The connection target will be host <b>%s</b> on "
+#~ "port <b>%s</b><br><br><hr><br>Do you accept ?<br></center>"
+#~ msgstr ""
+#~ "<center><b>%s [%s@%s]</b> zahteva <br><b>Direktno Konektovanje Klijena</"
+#~ "b> u <b>VOICE</b> modu.<br>Meta konektovanja ce biti host <b>%s</b> na "
+#~ "portu <b>%s</b><br><br><hr><br>Da li prihvatate ?<br></center>"
+
+#~ msgid "DCC VOICE request"
+#~ msgstr "DCC VOICE zahtev"
+
+#~ msgid ""
+#~ "<center><b>%s [%s@%s]</b> requests a<br><b>Direct Client Connection</b> "
+#~ "in <b>CANVAS</b> mode.<br>The connection target will be host <b>%s</b> on "
+#~ "port <b>%s</b><br><br><hr><br>Do you accept ?<br></center>"
+#~ msgstr ""
+#~ "<center><b>%s [%s@%s]</b> zahteva <br><b>Direktno konektovanje klijenata</"
+#~ "b> u <b>CANVAS</b> modu.<br>Meta konektovanja � biti host <b>%s</b> na "
+#~ "portu <b>%s</b><br><br><hr><br>Da li prihvatate ?<br></center>"
+
+#~ msgid "DCC CANVAS request"
+#~ msgstr "DCC CANVAS zahtev"
+
+#~ msgid ""
+#~ "<center><b>%s [%s@%s]</b> wants to send you the file<br>'<b>%s</b>' <b>%"
+#~ "s</b> bytes long.<br>The connection target will be host <b>%s</b> on port "
+#~ "<b>%s</b><br><br><hr><br>Do you accept ?<br></center>"
+#~ msgstr ""
+#~ "<center><b>%s [%s@%s]</b> eli da Vam poalje fajl<br>'<b>%s</b>' <b>%s</b> "
+#~ "bajtova duga�k.<br>Meta konektovanja � biti host <b>%s</b> na portu <b>%"
+#~ "s</b><br><br><hr><br>Da li prihvatate ?<br></center>"
+
+#~ msgid ""
+#~ "<center><b>%s [%s@%s]</b> wants to send you the file<br>'<b>%s</b>' <b>%"
+#~ "s</b> bytes long.<br>You will be the passive side of the connection."
+#~ "<br><br><hr><br>Do you accept ?<br></center>"
+#~ msgstr ""
+#~ "<center><b>%s [%s@%s]</b> eli da Vam poalje fajl<br>'<b>%s</b>' <b>%s</b> "
+#~ "bajtova duga�k.<br>Vi �te biti pasivna strana konekcije."
+#~ "<br><br><hr><br>Da li prihvatate ?<br></center>"
+
+#~ msgid ""
+#~ "<br><hr><center><b>Notes:</b><br>The file looks to be an avatar that you "
+#~ "have requested.<br>You should not change its file name and<br>save it in "
+#~ "a place where KVIrc can find it:<br>this can be the KVIrc 'avatars' "
+#~ "directory, your home directory,<br>the KVIrc 'incoming' directory, the "
+#~ "KVIrc 'pics' directory,<br>or the save directory for the incoming file "
+#~ "type...<br>Usually accepting the default save path suggested in "
+#~ "the<br>dialog will do the job.<br>You can also instruct KVirc to auto-"
+#~ "accept the incoming avatars<br>by setting the option "
+#~ "'boolAutoAcceptIncomingAvatars' to true.<br></center>"
+#~ msgstr ""
+#~ "<br><hr><center><b>Obavetenje:</b><br>Fajl izgleda kao da je avatar koji "
+#~ "imate zahtevan .<br>Ne biste trebali da menjate njegovo ime i<br>sa�vajte "
+#~ "ga na mesto gde ga KVIrc moe na�:<br>ovo moe biti KVIrc 'avatars' "
+#~ "direktorijum, Va home direktorijum,<br>KVIrc 'incoming' direktorijum, "
+#~ "KVIrc 'pics' direktorijum,<br>ili direktorijum za �vanje dolaze�h "
+#~ "fajlova...<br>Obi�o je prihvatljiva predefinisana putanja predloena u "
+#~ "br>dijalogu, i zavri� posao.<br>Moete tako� navesti KVirc-u da automatski "
+#~ "prihvata dolaze� avatare<br> postavkom opcije "
+#~ "'boolAutoAcceptIncomingAvatars' na tacno.<br></center>"
+
+#~ msgid "Auto-accepting DCC %s request from %s!%s@%s for file %s"
+#~ msgstr "Auto-prihvatanje DCC %s zahteva od %s!%s@%s za fajl %s"
+
+#~ msgid "Auto-saving DCC %s file %s as \r![!dbl]play $0\r%s\r"
+#~ msgstr "Automatsko snimanje DCC %s fajla %s kao \r![!dbl]play $0\r%s\r"
+
+#~ msgid ""
+#~ "<center><b>The file %s already exists</b><br>and is <b>%d</b> bytes long."
+#~ "<br>Do you want to <b>overwrite</b> it, <b>auto-rename</b> the incoming "
+#~ "one, orthreat it as an incomplete download and <b>resume</b> it ?<br></"
+#~ "center>"
+#~ msgstr ""
+#~ "<center><b>Fajl %s ve�postoji</b><br>i duga�k je<b>%d</b> bajtova.<br>Da "
+#~ "li elite da <b>prepiete</b> it, <b>auto-reimenujete</b> dolaze�, ili da "
+#~ "ga tretirate kao nekompletno svu�n i <b>nastavite</b> sa njim ?<br></"
+#~ "center>"
+
+#~ msgid "File %s exists: auto-renaming to %s.rnm"
+#~ msgstr "Fajl %s postoji: suto-preimenovanje u %s.rnm"
+
+#~ msgid "Attempting a passive DCC CANVAS connection"
+#~ msgstr "Pokuavam pasivnu DCC CANVAS konekciju"
+
+#~ msgid "Listening on interface %s port %s"
+#~ msgstr "Sluam interfejs %s na portu %s"
+
+#~ msgid ""
+#~ "Sent DCC CANVAS request to %s...waiting for the remote client to connect"
+#~ msgstr ""
+#~ "Poslat DCC CANVAS zahtev u %s...�kam udaljenog klijenta da se konektuje"
+
+#~ msgid "DCC CANVAS request not sent: awaiting manual connections"
+#~ msgstr "DCC CANVAS zahtev nije poslat: �kanje ru�e konekcije"
+
+#~ msgid "Attempting an active DCC CANVAS connection"
+#~ msgstr "Pokuavam da primim DCC CANVAS konekciju"
+
+#~ msgid "Contacting host %s on port %s"
+#~ msgstr "Kontaktiram host %s na portu %s"
+
+#~ msgid "DCC Failed: %s"
+#~ msgstr "DCC Neuspean: %s"
+
+#~ msgid "Local end is %s:%s"
+#~ msgstr "Lokalni krajnji je %s:%s"
+
+#~ msgid "&Line"
+#~ msgstr "&Linija"
+
+#~ msgid "&Rectangle"
+#~ msgstr "&Pravougaonik"
+
+#~ msgid "&Ellipse"
+#~ msgstr "&Elipsa"
+
+#~ msgid "&Chord"
+#~ msgstr "&Akord"
+
+#~ msgid "&Rich text (html)"
+#~ msgstr "&Oboga�ni tekst (html)"
+
+#~ msgid "&Triangle"
+#~ msgstr "&Trougao"
+
+#~ msgid "&Pentagon"
+#~ msgstr "&Petougao"
+
+#~ msgid "&Hexagon"
+#~ msgstr "e&stougao"
+
+#~ msgid "&Item"
+#~ msgstr "&Stavka"
+
+#~ msgid "&Polygons"
+#~ msgstr "&Poligoni"
+
+#~ msgid "Attempting a passive DCC %s connection"
+#~ msgstr "Pokuavam pasivnu DCC %s konekciju"
+
+#~ msgid "Attempting an active DCC %s connection"
+#~ msgstr "Pokuavam aktivnu DCC %s konekciju"
+
+#~ msgid "Sent DCC %s request to %s...waiting for the remote client to connect"
+#~ msgstr ""
+#~ "Poslat DCC %s zahtev za %s...�kam udaljenog klijenta da se konektuje"
+
+#~ msgid "DCC %s request not sent: awaiting manual connections"
+#~ msgstr "DCC %s zahtev nije poslat: o�kujem ru�o konektovanje"
+
+#, fuzzy
+#~ msgid "Low lewel transport connection estabilished"
+#~ msgstr "Uspostavljena konekcija niskog nivoa transporta [%s (%s:%u)]"
+
+#~ msgid ""
+#~ "The crypt engine was not able to encrypt the current message (%s): %s: no "
+#~ "data sent to the remote end"
+#~ msgstr ""
+#~ "Maina za ifrovanje nije u mogu�osti da ifruje trenutnu poruku (%s): %s: "
+#~ "nisu poslati podaci udaljenom krajnjem"
+
+#~ msgid "ERROR: %s"
+#~ msgstr "GREKA: %s"
+
+#~ msgid "DCC %s Failed: %s"
+#~ msgstr "DCC %s Neuspean: %s"
+
+#~ msgid "Reject"
+#~ msgstr "Odbaci"
+
+#~ msgid "Accept"
+#~ msgstr "Prihvati"
+
+#~ msgid "Choose the save file name"
+#~ msgstr "Izaberi ime fajla za �vanje"
+
+#~ msgid "Overwrite"
+#~ msgstr "Prepii"
+
+#~ msgid "Resume"
+#~ msgstr "Nastavi"
+
+#~ msgid ""
+#~ "This window has no associated irc context (you need one unless you pass -"
+#~ "c or -n)"
+#~ msgstr ""
+#~ "Ovaj prozor nema asociraju� IRC kontekst (potreban Vam je jedan da bi "
+#~ "prolo -c ili -n)"
+
+#~ msgid ""
+#~ "You are not connected to a server (you need a connection unless you pass -"
+#~ "c or -n)"
+#~ msgstr ""
+#~ "Niste zaka�ni na server (potrebna vam je konekcija da bi prolo -c ili -n)"
+
+#~ msgid "This executable was build without SSL support: -s switch ignored"
+#~ msgstr "Ovaj KVIrc je napravljen bez SSL podrke: ignorisan -s prekida"
+
+#~ msgid ""
+#~ "This executable has been compiled without SSL support: -s switch ignored"
+#~ msgstr "Ovaj KVIrc je kompajliran bez SSL podrke: ignorisan -s prekida"
+
+#~ msgid "Invalid file size specified: no message sent"
+#~ msgstr "Neispravna veli�na fajla: nije poslata poruka"
+
+#~ msgid "this executable has no SSL support: -s switch ignored"
+#~ msgstr "ovaj KVIrc nema SSL podrku: ignorisan -s prekida"
+
+#~ msgid "Unable to process the above request: %s: %s"
+#~ msgstr "Ne mogu da odradim navedeni zahtev: %s: %s"
+
+#~ msgid "ignoring and notifying failure"
+#~ msgstr "ignoriem i obavetavam o neuspehu"
+
+#~ msgid "ignoring"
+#~ msgstr "ignorisanje"
+
+#~ msgid ""
+#~ "The above request is broken: the second parameter is '%s' and shoud be "
+#~ "'chat'; trying to continue"
+#~ msgstr ""
+#~ "Nevedeni zahtev je prekinut: drugi parametar je '%s' a trebao bi biti "
+#~ "'chat'; pokuavam da nastavim"
+
+#~ msgid ""
+#~ "The above request is broken: the fourth parameter should be the file size "
+#~ "but does not look as an unsigned number; trying to continue"
+#~ msgstr ""
+#~ "Navedeni zahtev je prekinut: �tvrti parametar bi trebalo da bude veli�na "
+#~ "fajla ali ne izgleda kao potreban broj; pokuavam da nastavim"
+
+#~ msgid ""
+#~ "The above request is broken: the filename contains path components; "
+#~ "stripping the leading path and trying to continue"
+#~ msgstr ""
+#~ "Navedeni zahtev je prekinut: ime fajla sadri komponente putanje; izdvajam "
+#~ "vode� putanju i pokuavam da nastavim"
+
+#~ msgid ""
+#~ "The above request has resume file size missing: we assume a resume file "
+#~ "size of 0"
+#~ msgstr ""
+#~ "Navedeni zahtev nema veli�nu fajla za nastavljanje: dodeljujemo fajlu "
+#~ "veli�nu 0"
+
+#~ msgid "0"
+#~ msgstr "0"
+
+#~ msgid "%s [%s@%s] is ready to receive the file \"%s\""
+#~ msgstr "%s [%s@%s] je spreman da primi fajl \"%s\""
+
+#~ msgid "The remote client is listening on interface %s and port %s"
+#~ msgstr "Udaljeni klijent je sluao na intefejsu %s i portu %s"
+
+#~ msgid ""
+#~ "Use %c\r![!dbl]dcc.send %s -i=%s -p=%s %s\r/dcc.send %s -i=%s -p=%s %s\r%"
+#~ "c to send the file (or simply double click on the link)"
+#~ msgstr ""
+#~ "Koristite %c\r![!dbl]dcc.send %s -i=%s -p=%s %s\r/dcc.send %s -i=%s -p=%s "
+#~ "%s\r%c za slanje fajla (ili prosto dupli klik na link)"
+
+#~ msgid ""
+#~ "No suitable interface to listen on: Trying to continue anyway... but "
+#~ "don't expect nice results"
+#~ msgstr ""
+#~ "Nema odgovaraju�g intefrejsa za sluanje: Pokuavam da nastavim...ali ne "
+#~ "o�kujem dobre rezultate"
+
+#~ msgid ""
+#~ "Accepting file request from %s [%s@%s] for '%s' (real file: %s): offering "
+#~ "DCC %s since we can't accept incoming connections (user option)"
+#~ msgstr ""
+#~ "Prihvatanje zahteva od %s [%s@%s] za '%s' (pravi fajl: %s): Predlae DCC %"
+#~ "s iako mi ne moemo da prihvatimo dolaze� konekcije (opcije korisnika)"
+
+#~ msgid ""
+#~ "Accepting file request from %s [%s@%s] for '%s' (real file: %s): offering "
+#~ "DCC %s"
+#~ msgstr ""
+#~ "Prihvatanje zahteva za fajl od %s [%s@%s] za '%s' (stvarni fajl: %s): "
+#~ "predlae DCC %s"
+
+#~ msgid "The above request can't be accepted: unsupported codec '%s'"
+#~ msgstr "Navedeni zahtev nije prihvatljiv: nepodran koder '%s'"
+
+#~ msgid ""
+#~ "The above request looks to be broken: invalid sample-rate '%s': "
+#~ "defaulting to 8000"
+#~ msgstr ""
+#~ "Navedeni zahtev izgleda da je prekinut: neispravna brzina semplovanja '%"
+#~ "s': predefiniem na 8000"
+
+#~ msgid "WARNING: The peer is sending garbage data past the end of the file"
+#~ msgstr ""
+#~ "UPOZORENJE: Udaljeni je poslao podatke koji su �bre posle kraja fajla"
+
+#~ msgid ""
+#~ "WARNING: Ignoring data after the declared length and forcibly closing the "
+#~ "connection"
+#~ msgstr ""
+#~ "UPOZORENJE; Ignoriem podatke posle deklarisane duine i forsirano zatvaram "
+#~ "konekciju"
+
+#~ msgid ""
+#~ "Data transfer terminated: waiting 30 secs for the peer to close the "
+#~ "connection"
+#~ msgstr ""
+#~ "Prenos podataka prekinut: �kam 30 sekundi za udaljenog da zatvori "
+#~ "konekciju"
+
+#~ msgid ""
+#~ "Data transfer was terminated 30 secs ago: forcibly closing the connection"
+#~ msgstr ""
+#~ "Prenos podataka je prekinut pre 30 sekundi: forsirano zatvaranje konekcije"
+
+#~ msgid ""
+#~ "WARNING: Received data in a DCC TSEND: there should be no acknowledges"
+#~ msgstr ""
+#~ "UPOZORENJE: Primljen podatak u DCC TSEND: ovde bi trebalo da nema "
+#~ "rukovanja"
+
+#~ msgid "File: %s (%s bytes)"
+#~ msgstr "Fajl: %s (%s bajtova)"
+
+#~ msgid "Local file name: %s"
+#~ msgstr "Naziv lokalnog fajla: %s"
+
+#~ msgid "Data progress"
+#~ msgstr "Napredak podataka"
+
+#~ msgid "Acknowledge progress"
+#~ msgstr "Napredak potvrde"
+
+#~ msgid "0 h 0 m 0 s"
+#~ msgstr "0 h 0 m 0 s"
+
+#~ msgid "Bytes transferred"
+#~ msgstr "Bajtova preneeno"
+
+#~ msgid "Average transfer speed"
+#~ msgstr "Prose�a brzina prenosa"
+
+#~ msgid "Instant transfer speed"
+#~ msgstr "Trenutna brzina prenosa"
+
+#~ msgid "Sent DCC RESUME request...waiting for ACCEPT"
+#~ msgstr "Poslat DCC RESUME zahtev...�kam ACCEPT"
+
+#~ msgid "Open folder"
+#~ msgstr "Otvori fasciklu"
+
+#~ msgid "Open file (/play)"
+#~ msgstr "Otvori fajl (/play)"
+
+#~ msgid "File: %s"
+#~ msgstr "Fajl: %s"
+
+#~ msgid "Iana type: %s"
+#~ msgstr "Iana tip: %s"
+
+#~ msgid "File mask: %s"
+#~ msgstr "Maska fajla: %s"
+
+#~ msgid "Magic bytes: %s"
+#~ msgstr "Magi�ih bajtova: %s"
+
+#~ msgid "No media type match for file \"%s\""
+#~ msgstr "Nema vrste medija za fajl \"%s\""
+
+#~ msgid "Close all terminated transfers"
+#~ msgstr "Zatvori sve prekinute prenose"
+
+#~ msgid ""
+#~ "DCC %s transfer with %s@%s:%s succesfull: file \r![!dbl]play $0\r%s\r"
+#~ msgstr "DCC %s prenos sa %s@%s:%s je uspean: fajl \r![!dbl]play $0\r%s\r"
+
+#~ msgid "Received %d bytes"
+#~ msgstr "Primljeno %d bajtova"
+
+#~ msgid "%d h %d m %d s"
+#~ msgstr "%d h %d m %d s"
+
+#~ msgid "Avg: %d (bytes/sec)"
+#~ msgstr "Prosek: %d (bajtova/sek)"
+
+#~ msgid "Spd: %d (bytes/sec)"
+#~ msgstr "Brzina: %d (bajtova/sek)"
+
+#~ msgid "Sent %d bytes"
+#~ msgstr "Poslato %d bajtova"
+
+#~ msgid "RESUME accepted: the transfer will begin at position %s"
+#~ msgstr "NASTAVAK (RESUME) prihva�n: prenos � po�ti od pozicije %s"
+
+#~ msgid "Internal error in RESUME request"
+#~ msgstr "Interna greka u NASTAVAK (RESUME) zahtevu"
+
+#~ msgid "Invalid RESUME request: position %u is 'out of the file'"
+#~ msgstr "Neispravan NASTAVAK (RESUME) zahtev: pozicija %u je 'premaen fajl'"
+
+#~ msgid "Accepting RESUME request: transfer will initiate at position %u"
+#~ msgstr "Prihva�n NASTAVAK (RESUME) zahtev: prenos � odpo�ti od pozicije %u"
+
+#~ msgid "Can't retrieve a suitable local IPV4 address"
+#~ msgstr "Ne mogu da uspostavim pogodnu lokalnu IPV4 adresu"
+
+#~ msgid ""
+#~ "Can't listen on default interface '%s': fix it in the options dialog, "
+#~ "disabling the option (so the next dcc will work)"
+#~ msgstr ""
+#~ "Ne mogu da sluam na predefinisanom interfejsu '%s'; popravite to u "
+#~ "dijalogu opcija, isklju�te opciju (pa � slede� dcc raditi)"
+
+#~ msgid ""
+#~ "WARNING: failed to check the soundcard duplex capabilities: if this is a "
+#~ "half-duplex soundcard , use the DCC VOICE option to force half-duplex "
+#~ "algorithm"
+#~ msgstr ""
+#~ "UPOZORENJE: Ne mogu da proverim dupleks mogu�ost muzi�e kartice: ako je "
+#~ "ovo half-dupleks muzi�a, koristite DCC VOICE opcije za forsiranje half-"
+#~ "dupleks algoritma"
+
+#~ msgid ""
+#~ "Half duplex soundcard detected, you will not be able to talk and listen "
+#~ "at the same time"
+#~ msgstr ""
+#~ "Detektovana half-dupleks muzi�a kartica, ne�te mo� da govorite i sluate u "
+#~ "isto vreme"
+
+#~ msgid ""
+#~ "WARNING: failed to set the requested sample rate (%d): the device used "
+#~ "closest match (%d)"
+#~ msgstr ""
+#~ "UPOZORENJE: ne mogu da postavim zahtevano semplovanje (%d): ure�j koristi "
+#~ "najblii predvi�n (%d)"
+
+#~ msgid "Ops...failed to test the soundcard capabilities...expect problems..."
+#~ msgstr ""
+#~ "Ups...Ne mogu da testiram sposobnost mozi�e kartice...o�kujem probleme..."
+
+#~ msgid "Input buffer"
+#~ msgstr "Ulazni bafer"
+
+#~ msgid "Attempting a passive DCC VOICE connection"
+#~ msgstr "Pokuavam pasivnu DCC VOICE konekciju"
+
+#~ msgid "Attempting an active DCC VOICE connection"
+#~ msgstr "Pokuavam aktivnu DCC VOICE konekciju"
+
+#~ msgid ""
+#~ "Sent DCC VOICE (%s) request to %s...waiting for the remote client to "
+#~ "connect"
+#~ msgstr ""
+#~ "Poslat DCC VOICE (%s) zahtev %s...�kam da se udaljeni klijent konektuje"
+
+#~ msgid "DCC VOICE request not sent: awaiting manual connections"
+#~ msgstr "DCC VOICE zahtev nije poslat: o�kujem ru�o konektovanje"
+
+#~ msgid "Actual codec used is '%s'"
+#~ msgstr "Aktuelni koriceni koder je '%s'"
+
+#, fuzzy
+#~ msgid "Link suicide"
+#~ msgstr "Link: %s"
+
+#~ msgid "Connect in new irc context"
+#~ msgstr "Konektuj u novom IRC kontekstu"
+
+#~ msgid ""
+#~ "<center>Hit this button to connect to the currently selected server in a "
+#~ "new irc context.<br>(as a new additional connection)</center>"
+#~ msgstr ""
+#~ "<center>Pritisnite ovo dugme za konektovanje na trenutno izabran server u "
+#~ "novom IRC kontekstu<br>(kao dodatna konekcija)</center>"
+
+#~ msgid "Details for server %s"
+#~ msgstr "Detalji za server %s"
+
+#~ msgid "Use SSL"
+#~ msgstr "Koristi SSL"
+
+#, fuzzy
+#~ msgid "Initial Usermode:"
+#~ msgstr "Mogu� modovi korisnika:"
+
+#~ msgid ""
+#~ "<hr>\n"
+#~ "Registered as %s<br>\n"
+#~ "(Matched by %s)"
+#~ msgstr ""
+#~ "<hr>\n"
+#~ "Registerovan kao %s<br>\n"
+#~ "(Poklapa se sa %s)"
+
+#~ msgid "<hr>On <b>"
+#~ msgstr "<hr>Na <b>"
+
+#~ msgid "[>> %s] %s"
+#~ msgstr "[>> %s] %s"
+
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r]: %s"
+#~ msgstr "\r!n\r%s\r [%s@\r!h\r%s\r]: %s"
+
+#~ msgid "\r!n\r%s\r: %s"
+#~ msgstr "\r!n\r%s\r: %s"
+
+#~ msgid "%c%s [%s on %s]"
+#~ msgstr "%c%s [%s na %s]"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>%c%s</b></font> <font color=\"%s\">[%s on %s]"
+#~ "</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>%c%s</b></font> <font color=\"%s\">[%s na %s]"
+#~ "</font></nobr>"
+
+#~ msgid "%s [%s on %s]"
+#~ msgstr "%s [%s na %s]"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>%s</b></font> <font color=\"%s\">[%s on %s]</"
+#~ "font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>%s</b></font> <font color=\"%s\">[%s na %s]</"
+#~ "font></nobr>"
+
+#~ msgid "<b>mode %s %c%c %s</b>"
+#~ msgstr "<b>mod %s %c%c %s</b>"
+
+#~ msgid "<b>mode %s %c%c</b>"
+#~ msgstr "<b>mod %s %c%c</b>"
+
+#~ msgid "&Script center"
+#~ msgstr "&Skriptni centar"
+
+#~ msgid "&Gnutella window"
+#~ msgstr "&Gnutella prozor"
+
+#~ msgid "&Directory browser (MDI)"
+#~ msgstr "&Direktorijum �ta�(MDI)"
+
+#~ msgid "&Build info"
+#~ msgstr "&Informacije o pravljenju"
+
+#~ msgid "[unknown]"
+#~ msgstr "[nepoznat]"
+
+#~ msgid ") on "
+#~ msgstr ") na "
+
+#~ msgid " (away) on "
+#~ msgstr " (odsutnost) na "
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>%s</b></font> <font color=\"%s\">[%s]</font></"
+#~ "nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>%s</b></font> <font color=\"%s\">[%s]</font></"
+#~ "nobr>"
+
+#~ msgid "<b>No connection</b><br>(Irc context %u)"
+#~ msgstr "<b>Nema konekcije</b><br>(Irc kontekst %u)"
+
+#~ msgid "<b>%s</b><br>%s<br>(Irc context %u)"
+#~ msgstr "<b>%s</b><br>%s<br>(Irc kontekst %u)"
+
+#~ msgid " (away)"
+#~ msgstr " (odsutnost)"
+
+#~ msgid "&Recent nicknames"
+#~ msgstr "&Skoranji nadimci"
+
+#~ msgid "&Recent servers"
+#~ msgstr "&Skoranji serveri"
+
+#~ msgid ""
+#~ "<center>You have been paged by<br><b>%s [%s@%s]</b><br>on %s:<br><br><b>%"
+#~ "s</b></center>"
+#~ msgstr ""
+#~ "<center>Upravo ste pageovani od<br><b>%s [%s@%s]</b><br>na %s:<br><br><b>%"
+#~ "s</b></center>"
+
+#~ msgid "Tile : Not enouh space"
+#~ msgstr "Par� : Nema dovoljno prostora"
+
+#~ msgid "Tile : Not enough space"
+#~ msgstr "Par� : Nema dovoljno prostora"
+
+#~ msgid "About KVirc"
+#~ msgstr "O KVIrc-u"
+
+#~ msgid "KVirc build info"
+#~ msgstr "Informacije o pravljenju KVIrc-a"
+
+#~ msgid ""
+#~ "\n"
+#~ "Script language tag: "
+#~ msgstr ""
+#~ "\n"
+#~ "Tag skriptnog jezika: "
+
+#~ msgid ""
+#~ "\n"
+#~ "Build number: "
+#~ msgstr ""
+#~ "\n"
+#~ "Broj pravljenja: "
+
+#~ msgid ""
+#~ "\n"
+#~ "Build date: "
+#~ msgstr ""
+#~ "\n"
+#~ "Datum pravljenja: "
+
+#~ msgid "What the #$%&@^& !?!?\n"
+#~ msgstr "ta je bre ovo, #$%&@^& !?!?\n"
+
+#~ msgid "Out of memory for biff applet!"
+#~ msgstr "Nema vie memorije za udarni aplet!"
+
+#~ msgid "Already checking for mail on this account."
+#~ msgstr "Ve�proveravam potu za ovaj nalog."
+
+#~ msgid "Checking for mail in %s"
+#~ msgstr "Provera pote u %s"
+
+#~ msgid "%s: %i new."
+#~ msgstr "%s: %i novo."
+
+#~ msgid "%s: no new messages."
+#~ msgstr "%s: nema novih poruka."
+
+#~ msgid "Close after joining"
+#~ msgstr "Zatvori posle ulaska"
+
+#~ msgid "Can't open directory %s"
+#~ msgstr "Ne mogu da otvorim direktorijum %s"
+
+#~ msgid "&Home"
+#~ msgstr "&Po�tni direktorijum"
+
+#~ msgid "&Up"
+#~ msgstr "&Gore"
+
+#~ msgid "&Go"
+#~ msgstr "&Kreni"
+
+#~ msgid "."
+#~ msgstr "."
+
+#~ msgid "Directory browser error"
+#~ msgstr "Greka pretraiva� direktorijuma"
+
+#~ msgid "DirBrowser [%s]"
+#~ msgstr "DirPretraiva�[%s]"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>DirBrowser</b></font> <font color=\"%s\">[%s]"
+#~ "</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>DirPretraiva�/b></font> <font color=\"%s\">[%"
+#~ "s]</font></nobr>"
+
+#~ msgid "Huh ?"
+#~ msgstr "Huh ?"
+
+#~ msgid "EOF"
+#~ msgstr "EOF"
+
+#~ msgid "Read error: %s"
+#~ msgstr "Greka u �tanju: %s"
+
+#~ msgid "Failed to connect : errno = %d (%s)"
+#~ msgstr "Neuspeno konektovanje : broj-greke = %d (%s)"
+
+#~ msgid "Write error : errno = %d (%s)"
+#~ msgstr "Greka u pisanju : broj-greke = %d (%s)"
+
+#~ msgid "Minimum network connections"
+#~ msgstr "Minimum mrenih konekcija"
+
+#~ msgid "Maximum network connections"
+#~ msgstr "Maksimum mrenih konekcija"
+
+#~ msgid "Listen for network connections"
+#~ msgstr "Sluanje mrenih konekcija"
+
+#~ msgid "Network listen port"
+#~ msgstr "Mreni sluaju� port"
+
+#~ msgid "Handshake timeout (in msecs)"
+#~ msgstr "Vreme isteka rukovanja (u milisek)"
+
+#~ msgid "Connection speed (KBit/sec)"
+#~ msgstr "Brzina konekcije (KBit/sek)"
+
+#~ msgid "Transfer listen port"
+#~ msgstr "Port za sluanje prenosa"
+
+#~ msgid "Max uploads"
+#~ msgstr "Maksimum uploada"
+
+#~ msgid "Max network connections to drop per download"
+#~ msgstr "Maksimum mrenih konekcija za odbacivanje po svla�nju"
+
+#~ msgid "Can't start search: failed to send all the query packets"
+#~ msgstr "Ne mogu da pokrenem pretragu: neuspeno slanje svih upit paketa"
+
+#~ msgid ""
+#~ "Search started for \"%s\" and minimum speed of %u KB/S: sent %d packets "
+#~ "to neighbours"
+#~ msgstr ""
+#~ "Pokrenuta pretraga za \"%s\" i minimalna brzina je %u KB/S: poslato %d "
+#~ "paketa komiluku"
+
+#~ msgid "Handshake failed: response header longer than 1024 bytes"
+#~ msgstr "Rukovanje neuspeno: odzivno zaglavlje due od 1024 bajtova"
+
+#~ msgid "Handshake failed: unexpected handshake action \"%s\""
+#~ msgstr "Rukovanje neuspeno; neo�kivana akcija rukovanja \"%s\""
+
+#~ msgid ""
+#~ "Handshake failed: unexpected response (proto 6 step 2):\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Rukovanje neuspeno: neo�kivan odgovor (proto 6 korak 2):\n"
+#~ "%s"
+
+#~ msgid "Internal error: inconsistent handshaking node state"
+#~ msgstr "Interna greka: neusaglaeno stanje ta�e rukovanja"
+
+#~ msgid ""
+#~ "Handshake failed: invalid response:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Rukovanje neuspeno: pogrean odgovor:\n"
+#~ "%s"
+
+#~ msgid ""
+#~ "Handshake failed: unexpected response:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Rukovanje neuspeno: neo�kivan odgovor:\n"
+#~ "%s"
+
+#~ msgid "Invalid payload length %u for PING descriptor (should be 0)"
+#~ msgstr ""
+#~ "Pogrena duina %u korisnog materijala za PING opisiva�(treba da bude 0)"
+
+#~ msgid "Evil: loops back my own PING packets with hops < 2"
+#~ msgstr "�vo: vra� moje PING pakete sa skokom < 2"
+
+#~ msgid "Invalid payload length %u for PONG descriptor (should be 14)"
+#~ msgstr ""
+#~ "Pogrena duina %u korisnog materijala PONG opisiva� (treba da bude 14)"
+
+#~ msgid "Invalid payload length %u for QUERY descriptor (should be >= 2)"
+#~ msgstr ""
+#~ "Pogrena duina %u korisnog materijala UPIT (QUERY) opisiva� (mora da bude "
+#~ ">= 2)"
+
+#~ msgid "Evil: loops back my own QUERY packets with hops < 2"
+#~ msgstr "�vo: vraca nazad moje UPIT (QUERY) pakete sa skokom < 2"
+
+#~ msgid "Invalid payload length %u for QUERYHIT descriptor (should be >= 27)"
+#~ msgstr "Pogrena korisna duina %u za QUERYHIT opisiva�(treba da bude >=27)"
+
+#~ msgid "Invalid payload length %u for QUERYHIT descriptor (should be >= %u)"
+#~ msgstr "Pogrena korisna duina %u za QUERYHIT opisiva�(treba da bude >= %u)"
+
+#~ msgid "Invalid payload length %u for PUSH descriptor (should be 26)"
+#~ msgstr "Pogrena korisna duina %u za PUSH opisiva�(treba da bude 26)"
+
+#~ msgid "Hanshake timeout"
+#~ msgstr "Vreme isteka za rukovanje"
+
+#~ msgid "Size (Bytes)"
+#~ msgstr "Veli�na (bajtova)"
+
+#~ msgid "Host"
+#~ msgstr "Host"
+
+#~ msgid "Extra info"
+#~ msgstr "Dodatni info"
+
+#~ msgid "File name regexp:"
+#~ msgstr "Ime fajla regexp"
+
+#~ msgid "Apply filter"
+#~ msgstr "Primeni filter"
+
+#~ msgid "Clear duplicates"
+#~ msgstr "Obrii duplikate"
+
+#~ msgid "Store"
+#~ msgstr "Smesti"
+
+#~ msgid "Lock"
+#~ msgstr "Zaklju�j"
+
+#~ msgid "Search for"
+#~ msgstr "Pretrai za:"
+
+#~ msgid "Minimum speed"
+#~ msgstr "Minimalna brzina"
+
+#~ msgid "Clear selected"
+#~ msgstr "Obrii selektovano"
+
+#~ msgid "Download selected"
+#~ msgstr "Svuci selektovano"
+
+#~ msgid "%d hits (%d visible, %d pending)"
+#~ msgstr "%d pogodaka (%d vidljivo, %d neizbenih)"
+
+#~ msgid "Select a hit list file"
+#~ msgstr "Izaberi fajl hit liste"
+
+#~ msgid ""
+#~ "Failed to setup the listening socket: can't accept incoming network "
+#~ "connections"
+#~ msgstr ""
+#~ "Nisam uspeo da postavim sluaju� priklju�k: ne mogu da prihvatim dolaze� "
+#~ "mrene konekcije"
+
+#~ msgid "Listening for network connections on port %u"
+#~ msgstr "Sluam za mrene konekcije na portu %u"
+
+#~ msgid "Listening for network connections disabled: (user option)"
+#~ msgstr "Sluanje za mrene konekcije onemogu�no: (opcije korisnika)"
+
+#~ msgid ""
+#~ "Failed to setup the listening socket: can't accept incoming transfer "
+#~ "connections"
+#~ msgstr ""
+#~ "Neuspeno postavljanje sluaju�g priklju�a: ne mogu da prihvatim dolaze� "
+#~ "prenosne konekcije"
+
+#~ msgid "Listening for transfer connections on port %u"
+#~ msgstr "Sluam za prenosne konekcije na portu %u"
+
+#~ msgid "Listening for transfer connections disabled: (user option)"
+#~ msgstr "Sluanje za prenosne konekcije onemogu�no: (opcije korisnika)"
+
+#~ msgid ""
+#~ "Can't connect to node %s:%u: another connection to this node is already "
+#~ "in progress"
+#~ msgstr ""
+#~ "Ne mogu da se poveem na �or %s:%u: jo jedna konekcija na ovaj �or je ve�u "
+#~ "toku"
+
+#~ msgid "Can't connect to node %s:%u: it is my own address"
+#~ msgstr "Ne mogu da se poveem na �or %s:%u: to je moja vlastita adresa"
+
+#~ msgid "Can't find node %d"
+#~ msgstr "Ne mogu da na�m �or %d"
+
+#~ msgid "User kill request"
+#~ msgstr "Korisnik ubija zahtev"
+
+#~ msgid "Can't start the PUSH request: the source node is dead"
+#~ msgstr "Ne mogu da pokrenem PUSH zahtev: izvorni �or je mrtav"
+
+#~ msgid "Can't start the PUSH request, the source node is no longer existing"
+#~ msgstr "Ne mogu da pokrenem PUSH zahtev: izvorni �or vie ne postoji"
+
+#~ msgid ""
+#~ "Rejecting connection from node %s:%u: not accepting connections (user "
+#~ "option)"
+#~ msgstr ""
+#~ "Odbijam konekciju od �ora %s:%u: ne prihvatam konekcije (opcije korisnika)"
+
+#~ msgid "Rejecting connection from node %s:%u: connection limit reached"
+#~ msgstr "Odbijam konekciju od �ora %s:%u:: dostignuto ograni�nje konekcija"
+
+#~ msgid ""
+#~ "Rejecting connection from node %s:%u: another connection to this node is "
+#~ "already in progress"
+#~ msgstr ""
+#~ "Odbijam konekciju od �ora %s:%u:: jo jedna konekcija ka ovom �oru je ve�u "
+#~ "toku"
+
+#~ msgid "Net bandwidth: I: %d O: %d (bytes/sec)"
+#~ msgstr "mrena irina opsega: I: %d O: %d (bajtova/sek)"
+
+#~ msgid "errno = %d (%s)"
+#~ msgstr "broj greke = %d (%s)"
+
+#~ msgid "Too many connections: freeing bandwidth: dropping handshaking node"
+#~ msgstr "Previe konekcija: rastere�jem irinu opsega: odbacujem rukuju� �or"
+
+#~ msgid "Too many connections: freeing bandwidth: dropping connected node"
+#~ msgstr "Previe konekcija: rastere�jem irinu opsega:: odbacujem zaka�n �or"
+
+#~ msgid "System select() error: errno=%d (%s)"
+#~ msgstr "Sistemska select() greka: broj greke=%d (%s)"
+
+#~ msgid "Local DB Search: \"%s\" (%u matches)"
+#~ msgstr "Lokalna DB pretraga: \"%s\" (%u poklapanja)"
+
+#~ msgid "Status"
+#~ msgstr "Status"
+
+#~ msgid "Progress"
+#~ msgstr "Napredak"
+
+#~ msgid "Remove selected transfers"
+#~ msgstr "Ukloni izabrane prenose"
+
+#~ msgid "Kill"
+#~ msgstr "Ubij"
+
+#~ msgid "Retry (same host)"
+#~ msgstr "Ponovi (isti host)"
+
+#~ msgid "Search for this filename"
+#~ msgstr "Pretrai za ovo ime fajla"
+
+#~ msgid "Dead (Retry killed)"
+#~ msgstr "Mrtav (Ponavljanje ubijeno)"
+
+#~ msgid "Waiting for retry (%u secs)"
+#~ msgstr "�kam ponavljanje (%u sekundi)"
+
+#~ msgid "Passive"
+#~ msgstr "Pasivan"
+
+#~ msgid "Recv"
+#~ msgstr "Primi"
+
+#~ msgid "Dead (Failed+Retried)"
+#~ msgstr "Mrtav (Neuspeno+Ponovljeno)"
+
+#~ msgid ""
+#~ "[smart download]: Attempting to retry transfer for file \"%s\": same "
+#~ "host , attempt %u"
+#~ msgstr ""
+#~ "[pametni download]: Pokuavam da ponovim prenos za fajl \"%s\": isti "
+#~ "host , pokuaj %u"
+
+#~ msgid ""
+#~ "[smart download]: Attempting to retry transfer for file \"%s\": changing "
+#~ "host"
+#~ msgstr ""
+#~ "[pametni download]: Pokuavam da ponovim renos za fajl \"%s\": menjanje "
+#~ "host-a"
+
+#~ msgid ""
+#~ "[smart download]: No alternate hit found for file \"%s\": performing a "
+#~ "query; will retry again in 30 secs"
+#~ msgstr ""
+#~ "[pametno svla�nje] Nema alternativnog hit-a za fajl \"%s\": izvravanje "
+#~ "upit; ponovi� za 30 sekundi"
+
+#~ msgid "Waiting for push"
+#~ msgstr "�kam za push"
+
+#~ msgid "Handshaking"
+#~ msgstr "Rukovanje"
+
+#~ msgid "Transferring"
+#~ msgstr "Prenoenje"
+
+#~ msgid "Dead (Completed)"
+#~ msgstr "Mrtav (Kompletiran)"
+
+#~ msgid "Dead (Failed)"
+#~ msgstr "Mrtav (Neuspeno)"
+
+#~ msgid "HTTP header too long (broken client ?)"
+#~ msgstr "HTTP zaglavlje preduga�o (prekinut klijent ?)"
+
+#~ msgid "[transfer %u]: %s"
+#~ msgstr "[prenos %u]: %s"
+
+#~ msgid "Unroutable IP address"
+#~ msgstr "Ne rutiraju� IP adresa"
+
+#~ msgid "Failed to create the listening socket"
+#~ msgstr "Neuspeno kreiranje sluaju�g priklju�a"
+
+#~ msgid "Too many invalid connections"
+#~ msgstr "Previe pogrenih konekcija"
+
+#~ msgid "Invalid GIV header"
+#~ msgstr "Pogreno GIV zaglavlje"
+
+#~ msgid "The index specified in the header is not the expected one (%u)"
+#~ msgstr "Indeks definisan u zaglavlju nije kao o�kivani (%u)"
+
+#~ msgid "Broken servent identifier"
+#~ msgstr "Prekinut usluni identifikator"
+
+#~ msgid "The servent identifier is not the expected one (%s)"
+#~ msgstr "Neo�kivani usluni identifikator (%s)"
+
+#~ msgid "The file name is not the expected one (%s)"
+#~ msgstr "Ime fajla nije o�kivano (%s)"
+
+#~ msgid "Rejecting PUSH: Invalid GIV request: %s"
+#~ msgstr "Odbijanje PUSH: Pogrean GIV zahtev: %s"
+
+#~ msgid "Invalid request syntax"
+#~ msgstr "Neispravna sintaksa zahteva"
+
+#~ msgid "File Not Found"
+#~ msgstr "Fajl nije prona�n"
+
+#~ msgid "The file index requested does not match the PUSH request"
+#~ msgstr "Zahtevani indeks fajla se ne poklapa sa PUSH zahtevom"
+
+#~ msgid "The file name requested does not match the PUSH request"
+#~ msgstr "Zahtevano ime fajla se ne poklapa sa PUSH zahtevom"
+
+#~ msgid "Invalid \"Range\" request"
+#~ msgstr "Neispravan \"Opseg\" zahtev"
+
+#~ msgid "Broken \"Range\" request"
+#~ msgstr "Prekinut \"Opseg\" zahtev"
+
+#~ msgid "Too many uploads"
+#~ msgstr "Previe upload-a"
+
+#~ msgid "Accepting GET request from %s:%u for file %s (range %u-%u)"
+#~ msgstr "Prihvatanje GET zahteva od %s:%u za fajl %s (opseg %u-%u)"
+
+#~ msgid "Rejecting GET request: "
+#~ msgstr "Odbijanje GET zahteva: "
+
+#~ msgid ""
+#~ "\n"
+#~ "[transfer %u]: %s"
+#~ msgstr ""
+#~ "\n"
+#~ "[prenos %u]: %s"
+
+#~ msgid ""
+#~ "[transfer %u]: The server declared the data content size to be %u bytes "
+#~ "instead of %u (expected from QueryHit), trusting him, even if I'm "
+#~ "confused a bit"
+#~ msgstr ""
+#~ "[prenos %u]: Veli�na serverski deklarisanih podataka je %u bajtova "
+#~ "umesto %u (o�kivano od QueryHtt), verujem mu, iako sam malo zbunjen"
+
+#~ msgid ""
+#~ "[transfer %u]: Invalid Content-length header line sent by the server (%"
+#~ "s): trusting the QueryHit file size"
+#~ msgstr ""
+#~ "[prenos %u]: Pogreno zaglavlje duine sadraja boslato od servera (%s): "
+#~ "verujem QueryHit veli�ni fajla"
+
+#~ msgid ""
+#~ "No Content-length header line sent by the server: trusting the QueryHit "
+#~ "file size"
+#~ msgstr ""
+#~ "Nema zaglavlja veli�ne sadraja poslatog od servera: verujem QueryHit "
+#~ "veli�ni fajla"
+
+#~ msgid ""
+#~ "[transfer %u]: The server specified an invalid resume position (%u where %"
+#~ "u was expected), this was rather fatal"
+#~ msgstr ""
+#~ "[prenos %u]: Server je definisao pogrenu poziciju nastavka (%u gde je %u "
+#~ "o�kivano), ovo je prili�o fatalno"
+
+#~ msgid "Invalid resume position"
+#~ msgstr "Neispravna pozicija nastavka"
+
+#~ msgid ""
+#~ "[transfer %u]: Invalid Content-range header line sent by the server (%s): "
+#~ "trying to blindly trust the server"
+#~ msgstr ""
+#~ "[prenos %u] Pogresno zaglavlje veli�ne sadraja poslato od servera (%s): "
+#~ "pokuavam da slepo verujem serveru"
+
+#~ msgid ""
+#~ "No Content-range header line sent by the server: trying to blindly trust "
+#~ "the server"
+#~ msgstr ""
+#~ "Nema zaglavlja veli�ne sadraja poslatog od servera: pokuavam da slepo "
+#~ "verujem serveru"
+
+#~ msgid "Server response to HTTP GET:"
+#~ msgstr "Server odgovara na HTTP GET:"
+
+#~ msgid "Invalid response while expecting http OK: "
+#~ msgstr "Pogrean odgovor dok je o�kivan http OK: "
+
+#~ msgid "%u of %u bytes [%d% at %u (bytes/sec)%s"
+#~ msgstr "%u od %u bajtova [%d% pri %u (bajtova/sek)%s"
+
+#~ msgid "]: stalled"
+#~ msgstr "]: zastoj"
+
+#~ msgid "Unexpected 0 bytes transfer requested"
+#~ msgstr "Neo�kivano zahtevan 0 bajtni prenos"
+
+#~ msgid "File I/O Error: can't seek to the resume position"
+#~ msgstr "Fajl I/O Greka: ne mogu da istraim poziciju nastavka"
+
+#~ msgid "File I/O Error: unexpected EOF"
+#~ msgstr "Fajl I/O Greka: neo�kivani EOF"
+
+#~ msgid "Stalled (user option kill)"
+#~ msgstr "Zastoj (ubila opcija korisnika)"
+
+#~ msgid "Completed at %u (bytes/sec)"
+#~ msgstr "Kompletirano sa %u (bajtova/sek)"
+
+#~ msgid "Invalid empty file name"
+#~ msgstr "Neispravno prazno ime fajla"
+
+#~ msgid "Failed to seek the file to the resume position"
+#~ msgstr "Neuspeno istraivanje pozicije nastavka fajla"
+
+#~ msgid "The downloaded file has been saved as file:/%s"
+#~ msgstr "Svu�n fajl je sa�van kao :/%s"
+
+#~ msgid ""
+#~ "Failed to rename the downloaded file to %s, it is actually saved as file:/"
+#~ "%s (it would be a good idea to move it from there)"
+#~ msgstr ""
+#~ "Ne mogu da preimenujem svu�ni fajl u %s, in je trenutno sa�van kao fajl: /"
+#~ "%s (bila bi dobra ideja da se pomeri odatle)"
+
+#~ msgid ""
+#~ "[transfer %u]: The file is currently locked by filelock %s, so it might "
+#~ "be actually being downloaded.If you feel this message to be in error, "
+#~ "please remove the filelock by hand and restart the download."
+#~ msgstr ""
+#~ "[prenos %u]: Fajl je trenutno zaklju�n on filelock-a %s, zna� da moe da "
+#~ "bude da je trenutno svu�n. Ako ose�te da je ova poruka mogu� greka, molim "
+#~ "uklonite filelock ru�o i restartujte svla�nje (download)"
+
+#~ msgid ""
+#~ "[transfer %u]: The file %s exists on disk but it has size greater than "
+#~ "expected: this might be a terminated download"
+#~ msgstr ""
+#~ "[prenos %u]: Fajl %s postoji na disku ali je veli�na ve� od o�kivane: ovo "
+#~ "moe biti zbog prekinutog svla�nja"
+
+#~ msgid ""
+#~ "[transfer %u]: The file %s exists on disk: attempting a resume from "
+#~ "position %u"
+#~ msgstr ""
+#~ "[prenos %u]: Fajl %s postoji na disku: pokuavam da nastavim od pozicije %u"
+
+#~ msgid ""
+#~ "[transfer %u]: The file %s exists on disk but the expected final sizes do "
+#~ "not match"
+#~ msgstr ""
+#~ "[prenos %u]: Fajl %s postoji na disku ali o�kivana krjnja veli�na se ne "
+#~ "poklapa"
+
+#~ msgid ""
+#~ "[transfer %u]: The file %s exists on disk but there was an arror while "
+#~ "analyzing it (stat() call failed)"
+#~ msgstr ""
+#~ "[prenos %u]: Fajl %s postoji na disku ali postoji greka dok je analiziran "
+#~ "(stat() poziv neuspean)"
+
+#~ msgid ""
+#~ "[transfer %u]: File %s exists on disk but its lock seems to be broken"
+#~ msgstr ""
+#~ "[prenos %u]: Fajl %s postoji na disku ali je zaklju�n, izgleda da je "
+#~ "prekinut"
+
+#~ msgid ""
+#~ "[transfer %u]: File %s exists: Moving it out of my way (renaming to %s."
+#~ "rnm)"
+#~ msgstr ""
+#~ "[prenos %u]: Fajl %s postoji: Sklanjam ga sa puta (preimenujem u %s.rnm)"
+
+#~ msgid "[transfer %u]: Failed to write the lock file (%s)"
+#~ msgstr "[prenos %u]: Ne mogu da zapisem zaklju�n fajl (%s)"
+
+#~ msgid ""
+#~ "[transfer %u]: Failed to open the lock file for writing (%s): %s (errno=%"
+#~ "d)"
+#~ msgstr ""
+#~ "[prenos %u]: Ne mogu da otvorim zaklju�n fajl za pisanje (%s): %s (broj "
+#~ "greke=%d)"
+
+#~ msgid "[transfer %u]: Failed to write the resume lock file (%s)"
+#~ msgstr "[prenos %u]: Ne mogu da zapiem nastavak zaklju�nog fajla (%s)"
+
+#~ msgid ""
+#~ "[transfer %u]: Failed to open the resume lock file for writing (%s): %s "
+#~ "(errno=%d)"
+#~ msgstr ""
+#~ "[prenos %u]: Ne mogu da otvorim nastavljen zaklju�n fajl za pisanje (%s): "
+#~ "%s (broj greke=%d)"
+
+#~ msgid "Can't lock the download file (Another download in progress ?)"
+#~ msgstr "Ne mogu da zaklju�m svla�� fajl (Jo jedno svla�nje u toku ?)"
+
+#~ msgid ""
+#~ "[transfer %d]: Failed to connect to the remote host, attempting a PUSH"
+#~ msgstr "[prenos %d]: Ne mogu da se zaka�m na udaljeni host, pokuavam PUSH"
+
+#~ msgid "[transfer %d]: Failed to connect to the remote host, PUSH failed"
+#~ msgstr "[prenos %d]: Ne mogu da se zaka�m na udaljeni host, PUSH neuspean"
+
+#~ msgid "[transfer %u]: Succesfully terminated"
+#~ msgstr "[prenos %u]: Uspeno prekinut"
+
+#~ msgid "Bandwidth (bytes/sec)"
+#~ msgstr "Propusni opseg (bajtova/sek)"
+
+#~ msgid "Remove selected nodes"
+#~ msgstr "Ukloni izabrane �orove"
+
+#~ msgid "Remove non connected nodes"
+#~ msgstr "Ukloni �orove koji nisu zaka�ni"
+
+#~ msgid "Auto-connect to reach min-connections"
+#~ msgstr "Auto-ka�nje da ostvarim min-konekcija"
+
+#~ msgid "ID"
+#~ msgstr "ID"
+
+#~ msgid "File size (bytes)"
+#~ msgstr "Veli�na fajla (bajtova)"
+
+#~ msgid "Spy local search results"
+#~ msgstr "pijuniraj rezultate lokalne pretrage"
+
+#~ msgid "Transfer"
+#~ msgstr "Prenos"
+
+#~ msgid "ops..can't start the slave gnutella thread"
+#~ msgstr "ups..ne mogu da pokrenem pomo�u gnutella nit"
+
+#~ msgid "On network: %d nodes connected"
+#~ msgstr "Na mrei: %d �orova zaka�no"
+
+#~ msgid "Not on network"
+#~ msgstr "Nije na mrei"
+
+#~ msgid "Failed to lookup host %s: %s"
+#~ msgstr "Ne mogu da prona�m host %s: %s"
+
+#~ msgid "Gnutella"
+#~ msgstr "Gnutella"
+
+#~ msgid "<nobr><font color=\"%s\"><b>Gnutella</b></font></nobr>"
+#~ msgstr "<nobr><font color=\"%s\"><b>Gnutella</b></font></nobr>"
+
+#~ msgid "Connected (Incoming handshake)"
+#~ msgstr "Povezan (Dolaze� rukovanje)"
+
+#~ msgid "Just born"
+#~ msgstr "Upravo ro�n"
+
+#~ msgid "New %s node: %s:%s"
+#~ msgstr "Nov %s �or: %s:%s"
+
+#~ msgid "Lost node: %s:%s : %s"
+#~ msgstr "Izgubljen �or: %s:%s : %s"
+
+#~ msgid "Connecting (proto 0.4)"
+#~ msgstr "Povezivanje (proto 0.4)"
+
+#~ msgid "Connecting (proto 0.6)"
+#~ msgstr "Povezivanje (proto 0.6)"
+
+#~ msgid "Connected (Handshake)"
+#~ msgstr "Povezan (Rukovanje)"
+
+#~ msgid "Connected (On Network) (0.4)"
+#~ msgstr "Povezan (Na Mreu) (0.4)"
+
+#~ msgid "Connected (On Network) (0.6)"
+#~ msgstr "Povezan (Na Mreu) (0.6)"
+
+#~ msgid "Stats for node %d %c: %s:%u"
+#~ msgstr "Statistika za �or %d %c: %s:%u"
+
+#~ msgid " Connection type %c: %s"
+#~ msgstr " Vrsta konekcije %c: %s"
+
+#~ msgid " Protocol %c: %s"
+#~ msgstr " Protokol %c: %s"
+
+#~ msgid ""
+#~ " Public headers :\n"
+#~ "%s"
+#~ msgstr ""
+#~ " Javnih zaglavlja :\n"
+#~ "%s"
+
+#~ msgid " Packets processed %c: %u"
+#~ msgstr " Paketa obra�no %c: %u"
+
+#~ msgid " Packets enqueued %c: %u"
+#~ msgstr " Paketa dodato %c: %u"
+
+#~ msgid " Bytes received %c: %u"
+#~ msgstr " Bajtova primljeno %c: %u"
+
+#~ msgid " Bytes sent %c: %u"
+#~ msgstr " Bajtova poslato %c: %u"
+
+#~ msgid " Dropped packets:"
+#~ msgstr " Odba�ni paketi:"
+
+#~ msgid " Duplicated %c: %u"
+#~ msgstr " Duplirano %c: %u"
+
+#~ msgid " Looped-back %c: %u"
+#~ msgstr " Vra�no-nazad %c: %u"
+
+#~ msgid " Expired %c: %u"
+#~ msgstr " Isteklo %c: %u"
+
+#~ msgid " Unroutable (no path) %c: %u"
+#~ msgstr " Neusmerljivo (nema putanje) %c: %u"
+
+#~ msgid " Unknown %c: %u"
+#~ msgstr " Nepoznato %c: %u"
+
+#~ msgid " Incoming packet types:"
+#~ msgstr " Vrste dolaze�h paketa:"
+
+#~ msgid ""
+#~ " Ping %c: %u (%u routed, %u dropped (%u looped back, %u "
+#~ "ttl expired, %u duplicated))"
+#~ msgstr ""
+#~ " Ping %c: %u (%u usmerenih, %u odbijenih (%u vra�nih "
+#~ "nazad, %u ttl istekao, %u duplranih))"
+
+#~ msgid ""
+#~ " Pong %c: %u (%u routed, %u directed to me, %u dropped "
+#~ "(%u ttl expired, %u unroutable))"
+#~ msgstr ""
+#~ " Pong %c: %u (%u usmerenih, %u upu�nih meni, %u "
+#~ "odbijenih (%u ttl istekao, %u neusmerljivih))"
+
+#~ msgid ""
+#~ " Query %c: %u (%u routed, %u dropped (%u looped back, %u "
+#~ "ttl expired, %u duplicated))"
+#~ msgstr ""
+#~ " Upit %c: %u (%u usmerenih, %u odbijenih (%u vra�nih "
+#~ "nazad, %u ttl istekao, %u duplranih))"
+
+#~ msgid ""
+#~ " QueryHit %c: %u (%u routed, %u directed to me, %u "
+#~ "dropped (%u ttl expired, %u unroutable))"
+#~ msgstr ""
+#~ " QueryHit %c: %u (%u usmerenih, %u upu�nih meni, %u "
+#~ "odbijenih (%u ttl istekao, %u neusmerljivih))"
+
+#~ msgid ""
+#~ " Push %c: %u (%u routed, %u directed to me, %u dropped "
+#~ "(%u ttl expired, %u unroutable, %u duplicated))"
+#~ msgstr ""
+#~ " Guraj %c: %u (%u trasirano, %u direktno meni, %u "
+#~ "odba�no (%u ttl istekao, %u netrasiraju�, %u duplirano))"
+
+#~ msgid "Select the files to share"
+#~ msgstr "Izaberite fajlove za deljenje"
+
+#~ msgid "No Gnutella window: use gnutella.open first"
+#~ msgstr "Nema Gnutella prozora: koristi prvo otvaranje gnutella"
+
+#~ msgid "Invalid node address"
+#~ msgstr "Pogrena adresa �ora"
+
+#~ msgid "The editor page is already open"
+#~ msgstr "Editorska stranica je ve�otvorena"
+
+#~ msgid "Show the script center as toplevel window"
+#~ msgstr "Pokai skriptni centar kao toplevel prozor"
+
+#~ msgid "Use single IRC tool bar"
+#~ msgstr "Koristi samu IRC traku alata"
+
+#~ msgid "Connect in current irc context"
+#~ msgstr "Konektuj u trenutnom IRC kontekstu"
+
+#~ msgid "Add mask"
+#~ msgstr "Dodaj masku"
+
+#~ msgid "Remove nickname"
+#~ msgstr "Ukloni nadimak"
+
+#~ msgid "Masks"
+#~ msgstr "Maske"
+
+#~ msgid "New User 0"
+#~ msgstr "Nov korsnik 0"
+
+#~ msgid "New User %d"
+#~ msgstr "Nov korisnik %d"
+
+#~ msgid "Apply changes"
+#~ msgstr "Primeni izmene"
+
+#~ msgid "%cTracking database entry for \r!n\r%s\r"
+#~ msgstr "%c Traim stavku u bazi podataka za \r!n\r%s\r"
+
+#~ msgid "Created on %c%s"
+#~ msgstr "Napravljen %c%s"
+
+#~ msgid "Last updated on %c%s"
+#~ msgstr "Poslednji put aurirano u %c%s"
+
+#~ msgid "Last event: %c%s"
+#~ msgstr "Poslednji doga�j: %c%s"
+
+#~ msgid ""
+#~ "\r![!dbl]tracker.info $0[!txt]Double click the nickname to see the info "
+#~ "entry\r"
+#~ msgstr ""
+#~ "\r![!dbl]tracker.info $0[!txt]Dupli klik na nadimak za gledanje info "
+#~ "stavke\r"
+
+#~ msgid "Chained nicknames: %c%s"
+#~ msgstr "Lan�ni nadimci: %c%s"
+
+#~ msgid "Usernames: %c%s"
+#~ msgstr "Korisni�a imena: %c%s"
+
+#~ msgid "Hosts: %c%s"
+#~ msgstr "Hostovi: %c%s"
+
+#~ msgid "Was observed from: %c%s"
+#~ msgstr "Je preuzet od: %c%s"
+
+#~ msgid "Event counts (total tracking time: %u d %u h %u m %u s)"
+#~ msgstr "Broja�doga�ja (ukupno vreme motanja:%u d %u h %u m %u s)"
+
+#~ msgid "Joins count: %c%u"
+#~ msgstr "Broj ulazaka: %c%u"
+
+#~ msgid "Parts count: %c%u"
+#~ msgstr "Broj izlazaka: %c%u"
+
+#~ msgid "Quits count: %c%u"
+#~ msgstr "Broj prekida (quit): %c%u"
+
+#~ msgid "Chan privmsgs count: %c%u"
+#~ msgstr "Broj privatnih poruka kanala: %c%u"
+
+#~ msgid "Me privmsgs count: %c%u"
+#~ msgstr "Broj privatnih poruka za mene: %c%u"
+
+#~ msgid "Last %d private messages directed to me"
+#~ msgstr "Zadnjih %d privatnih poruka upu�nih meni"
+
+#~ msgid "[%s]: %s"
+#~ msgstr "[%s]: %s"
+
+#~ msgid "%cEnd of tracking database entry for \r!n\r%s\r"
+#~ msgstr "%cKraj premotavanja po databzi za \r!n\r%s\r"
+
+#~ msgid "No database entry for %s"
+#~ msgstr "Nema stavki u databazi za %s"
+
+#~ msgid "Show URL list button on frame window created"
+#~ msgstr "Prikai dugme URL liste na okviru kreiranog prozora"
diff --git a/po/kvirc/kvirc_uk.po b/po/kvirc/kvirc_uk.po
new file mode 100644
index 00000000..2ed8ba8e
--- /dev/null
+++ b/po/kvirc/kvirc_uk.po
@@ -0,0 +1,12449 @@
+# translation of kvirc_ua.po to Ukrainian
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE' COPYRIGHT HOLDER.
+#
+# Belyaev Stanislav <[email protected]>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: kvirc_ua\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-12-19 10:23+0200\n"
+"Last-Translator: Belyaev Stanislav <[email protected]>\n"
+"Language-Team: Ukrainian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:696
+msgid "&Cascade Windows"
+msgstr "Вікна &каскадом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:697
+msgid "Cascade &Maximized"
+msgstr "&Максимізувати каскадом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:700
+msgid "&Tile Windows"
+msgstr "&Забрукувати вікна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:703
+msgid "&Auto Tile"
+msgstr "&Автоматично"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:708
+msgid "Anodine's Full Grid"
+msgstr "Anodine's заповнити по сітці"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:710
+msgid "Pragma's Horizontal 4-Grid"
+msgstr "Pragma's горизонтально 4 осередку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:712
+msgid "Pragma's Vertical 4-Grid"
+msgstr "Pragma's вертикально 4 осередку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:714
+msgid "Pragma's Horizontal 6-Grid"
+msgstr "Pragma's горизонтально 6 осередків"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:716
+msgid "Pragma's Vertical 6-Grid"
+msgstr "Pragma's вертикально 6 осередків"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:718
+msgid "Pragma's Horizontal 9-Grid"
+msgstr "Pragma's горизонтально 9 осередків"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:720
+msgid "Pragma's Vertical 9-Grid"
+msgstr "Pragma's вертикально 9 осередків"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:726
+msgid "Tile Met&hod"
+msgstr "Спосіб розташування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:729
+msgid "Expand &Vertically"
+msgstr "Розтягти по &вертикалі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:730
+msgid "Expand &Horizontally"
+msgstr "Розтягти по &горизонталі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_mdimanager.cpp:733
+msgid "Mi&nimize All"
+msgstr "Мі&німізувати всі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_actiondrawer.cpp:64
+msgid "Script"
+msgstr "Скріпт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:581
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_ssl.cpp:634
+msgid "Unknown"
+msgstr "Невідомий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:128
+msgid "No topic message has been received from the server yet"
+msgstr "тема каналу поки не отримана із сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:495
+msgid "Channel topic:"
+msgstr "Тема каналу:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:513
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:201
+msgid "Set by"
+msgstr "Установив"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:519
+msgid "Set on"
+msgstr "Дата установки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:525
+msgid "Double-click to edit..."
+msgstr "Подвійний клич для редагування..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:530
+msgid "No topic is set"
+msgstr "Тема відсутня"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:533
+msgid "Double-click to set..."
+msgstr "Подвійний клич для установки..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:587
+msgid "History"
+msgstr "Історія"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:596
+msgid "Commit Changes"
+msgstr "Внести зміни"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:602
+msgid "Discard Changes"
+msgstr "Скасувати зміни"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_topicw.cpp:627
+msgid "Copy to clipboard"
+msgstr "Копіювати в буфер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:988
+msgid "There are active connections, are you sure you wish to "
+msgstr "Є активні з'єднання, ви дійсно хочете "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:989
+msgid "quit KVIrc?"
+msgstr "вийти з KVIrc?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:587
+msgid "Confirmation - KVIrc"
+msgstr "Підтвердження - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:557
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:590
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&Yes"
+msgstr "&Так"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:556
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:589
+msgid "&Always"
+msgstr "&Завжди"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:992
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:591
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:740
+msgid "&No"
+msgstr "&Ні"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1090
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1106
+msgid "Show %1"
+msgstr "Показати %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_frame.cpp:1134
+msgid "Customize..."
+msgstr "Настроїти..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:149
+#, c-format
+msgid "The file %s already exists.<br>Do you wish to overwrite it?"
+msgstr "Файл %s існує<br>Хочете переписати його?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_filedialog.cpp:150
+msgid "File Exists - KVIrc"
+msgstr "Файл існує - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:132
+msgid "Channel mode"
+msgstr "Режим каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:162
+msgid "Split View"
+msgstr "Розділити вид"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:207
+msgid "User List"
+msgstr "Список користувачів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:167
+msgid "Ban Editor"
+msgstr "Редактор банів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:172
+msgid "Ban Exception Editor"
+msgstr "Редактор виключень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:179
+msgid "Invite Exception Editor"
+msgstr "Редактор виключень зі списку запрошень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:184
+msgid "Mode Editor"
+msgstr "Редактор режимів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "said something recently"
+msgstr "недавно говорив"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:678
+msgid "is talking"
+msgstr "говорить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:684
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:699
+msgid "and"
+msgstr "і"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "were talking recently"
+msgstr "недавно говорили"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:710
+msgid "are talking"
+msgstr "говорять"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:707
+msgid "and other %1 users"
+msgstr "і ще %1 користувачів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:738
+msgid "Dead channel"
+msgstr "Канал мертвий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:753
+msgid "operator"
+msgstr "оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:754
+msgid "operators"
+msgstr "оператори"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active user"
+msgstr "активний користувач"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:767
+msgid "active users"
+msgstr "активні користувачі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot user"
+msgstr "гарячий користувач"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:810
+msgid "hot users"
+msgstr "гарячі користувачі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owner"
+msgstr "власник каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:837
+msgid "channel owners"
+msgstr "власники каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrator"
+msgstr "адміністратор каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:848
+msgid "channel administrators"
+msgstr "адміністратори каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operator"
+msgstr "стат-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:870
+msgid "half-operators"
+msgstr "стат-оператори"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced user"
+msgstr "войс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:881
+msgid "voiced users"
+msgstr "войси"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operator"
+msgstr "користувач-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:892
+msgid "user-operators"
+msgstr "користувачі-оператори"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "user total"
+msgstr "користувача всього"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:901
+msgid "users total"
+msgstr "користувачів усього"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:931
+msgid "No activity"
+msgstr "Немає активності"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:932
+msgid "Minimal activity"
+msgstr "Мінімальна активність"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:933
+msgid "Very low activity"
+msgstr "Дуже низька активність"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Might be low activity"
+msgstr "Можливо низька активність"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:934
+msgid "Low activity"
+msgstr "Низька активність"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Might be medium activity"
+msgstr "Можливо середня активність"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:935
+msgid "Medium activity"
+msgstr "Середня активність"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "Might be high activity"
+msgstr "Можливо висока активність"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:936
+msgid "High activity"
+msgstr "Висока активність"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Might be very high activity"
+msgstr "Можливо дуже висока активність"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:937
+msgid "Very high activity"
+msgstr "Дуже висока активність"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Might be flooded with messages"
+msgstr "Можливо піддається флуду в повідомленнях"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:938
+msgid "Flooded with messages"
+msgstr "Флуд у повідомленнях"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:946
+msgid "human"
+msgstr "людина"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:966
+msgid "[Dead channel]"
+msgstr "[Канал мертвий]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1020
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1122
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:459
+msgid " on "
+msgstr " на "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1086
+#, fuzzy
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %Q, no "
+"data sent to the server"
+msgstr ""
+"Криптовальна машина не в змозі зашифрувати поточне повідомлення (%Q): %s, "
+"дані не відіслані на сервер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1403
+msgid "Sent part request, waiting for reply..."
+msgstr "Запит PART відісланий, очікую відповідь..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:610
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:647
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:293
+msgid "(Unknown)"
+msgstr "(Невідомий)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1484
+msgid "<b>Channel mode:</b>"
+msgstr "<b>Режим каналу:</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1498
+#, c-format
+msgid "<br><b>Key:</b> %s"
+msgstr "<br><b>Ключ:</b> %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1505
+#, c-format
+msgid "<br><b>Limit:</b> %s"
+msgstr "<br><b>Ліміт:</b> %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_channel.cpp:1590
+#, fuzzy, c-format
+msgid "Channel synchronized in %d.%d seconds"
+msgstr "Канал синхронізований за %d. %d секунд"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:139
+msgid "Choose an Image File - KVIrc"
+msgstr "Виберіть файл картинки - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:284
+#, c-format
+msgid "Unloadable: %s"
+msgstr "Вивантажено: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:260
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:90
+msgid "&Browse..."
+msgstr "&Вибрати..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:364
+msgid "Choose a File - KVIrc"
+msgstr "Виберіть файл - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:382
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:593
+msgid "Choose a Directory - KVIrc"
+msgstr "Виберіть каталог - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:764
+msgid "A&dd"
+msgstr "&Додати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:407
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:766
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:230
+msgid "Re&move"
+msgstr "&Видалити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:602
+msgid "Sample Text"
+msgstr "Зразок тексту"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:635
+msgid "Foreground"
+msgstr "Передній план"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:639
+msgid "Transparent"
+msgstr "Прозорість"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:652
+msgid "Background"
+msgstr "Тло"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:715
+msgid "Play"
+msgstr "Грати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:748
+msgid "Channel name"
+msgstr "Ім'я каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_selectors.cpp:749
+msgid "Channel password"
+msgstr "Пароль каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:177
+msgid "Toolbars"
+msgstr "Панелі інструментів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:84
+msgid "Orientation"
+msgstr "Орієнтація"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:86
+msgid "Top"
+msgstr "Зверху"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:87
+msgid "Left"
+msgstr "Ліворуч"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:88
+msgid "Right"
+msgstr "Праворуч"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:89
+msgid "Bottom"
+msgstr "Знизу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:91
+msgid "Detached"
+msgstr "Відділено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:92
+msgid "Flat"
+msgstr "Плоский"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:94
+msgid "Icon Size"
+msgstr "Розмір іконок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:96
+msgid "Small (22x22)"
+msgstr "Маленькі (22x22)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_toolbar.cpp:97
+msgid "Large (32x32)"
+msgstr "Більші (32x32)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1333
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:463
+msgid "&Apply"
+msgstr "&Застосувати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:830
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:113
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:251
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:319
+msgid "Close"
+msgstr "Закрити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_modeeditor.cpp:102
+msgid "Channel Modes"
+msgstr "Режими каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_debugwindow.cpp:47
+msgid "Debug Messages"
+msgstr "Отладочні повідомлення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:72
+msgid "CTCP Page - KVIrc"
+msgstr "CTCP пейджер - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ctcppagedialog.cpp:109
+msgid "You have been paged by"
+msgstr "Ви одержали повідомлення по пейджеру"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:75
+msgid "Mask editor - KVirc"
+msgstr "Редактор маски - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:79
+msgid "New mask must match an *!*@* expression"
+msgstr "Нова маска повинні задовольняти вираженню *!*@*"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Ok"
+msgstr "Ок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:488
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:442
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:401
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:944
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Cancel"
+msgstr "С&касування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:157
+msgid "Active Bans"
+msgstr "Активні бани"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:161
+msgid "Active Invite Exceptions"
+msgstr "Активні виключення із запрошень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:165
+msgid "Active Ban Exceptions"
+msgstr "Активні виключення з банів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:184
+#, fuzzy
+msgid "Filter:"
+msgstr "&Фільтр:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:188
+msgid "Use doubleclick to edit item"
+msgstr "Подвійний клич для редагування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:200
+msgid "Mask"
+msgstr "Маска"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:202
+msgid "Set at"
+msgstr "Дата"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_maskeditor.cpp:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "Add"
+msgstr "Додати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:92
+msgid "Cryptography/text transformation"
+msgstr "Криптографічне/текстове перетворення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:99
+msgid "Use the crypt engine"
+msgstr "Використання криптовальной машини"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:120
+msgid "Enable encryption"
+msgstr "Включити криптовання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:123
+msgid "Encrypt key:"
+msgstr "Ключ для зашифровки:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:141
+msgid "Hex"
+msgstr "Шістнадцятерічний"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:132
+msgid "Enable decryption"
+msgstr "Включити дешифрацію"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:135
+msgid "Decrypt key:"
+msgstr "Ключ для розшифровки:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_htmldialog.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:175
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:932
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1124
+msgid "OK"
+msgstr "Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:211
+msgid ""
+"If you dont want to encrypt a particular text line then just start it with "
+"the CTRL+P prefix"
+msgstr ""
+"Якщо ви не хочете зашифрувати конкретний рядок, тоді запускайте з префіксом "
+"CTRL+P"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:263
+msgid "Sorry, no crypt engines available"
+msgstr "Вибачите, немає доступних криптовальних машин"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:283
+msgid "Crypt: Can't create an engine instance: crypting disabled"
+msgstr ""
+"Шифрування: Не можливо створити криптовальний зразок: криптовання виключено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:294
+#, c-format
+msgid "Crypt: Can't initialize the engine :%s"
+msgstr "Шифрування: Не можливо ініціалізувати :%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_cryptcontroller.cpp:302
+msgid ""
+"Crypt: You have to enable encryption and/or decryption for the engine to work"
+msgstr ""
+"Шифрування: Ви повинні включити машину шифрування й/або дешифрування для "
+"роботи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:385
+msgid "Search tools"
+msgstr "Інструменти пошуку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:539
+#, c-format
+msgid "### Log session terminated at %s ###"
+msgstr "### Журналювання завершено %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:713
+#, c-format
+msgid "### Log session started at %s ###"
+msgstr "### Журналювання почато %s ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:717
+msgid "### Existing data buffer:"
+msgstr "### Існуючий буфер даних:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:721
+msgid "### End of existing data buffer."
+msgstr "### Кінець існуючого буфера даних."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3894
+msgid "Hide Find Window"
+msgstr "Сховати вікно пошуку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3896
+msgid "Show Find Window"
+msgstr "Показати вікно пошуку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3898
+msgid "Zoom In"
+msgstr "Збільшити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3899
+msgid "Zoom Out"
+msgstr "Зменшити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3900
+msgid "Choose Temporary Font..."
+msgstr "Виберіть тимчасовий шрифт..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3901
+msgid "Choose Temporary Background..."
+msgstr "Виберіть тимчасове тло..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3902
+msgid "Reset Temporary Background"
+msgstr "Скинути тимчасове тло"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3905
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:738
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:841
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1057
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1289
+msgid "Clear Buffer"
+msgstr "Очистити буфер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3939
+msgid "Choose the background image..."
+msgstr "Виберіть фонове зображення..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+msgid "Invalid image"
+msgstr "Не є зображенням"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:3944
+msgid "Failed to load the selected image"
+msgstr "Помилка завантаження обраної картинки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4083
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4140
+#, c-format
+msgid "Pos %d"
+msgstr "Позиція %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4156
+msgid "Not found"
+msgstr "Не знайдений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4563
+msgid "Looking up host %Q..."
+msgstr "Визначаю адресу %Q..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4926
+msgid "Double-click to open this link"
+msgstr "Подвійний клич для відкриття посилання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4946
+msgid "Unable to look it up hostname: Hostname appears to be masked"
+msgstr "Не можу знайти хост: Хост замаскований"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4947
+msgid "Unable to look it up hostname: Unknown host"
+msgstr "Не можу знайти хост: Невідомий хост"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4949
+msgid ""
+"Double-click to look up this hostname<br>Right-click to view other options"
+msgstr ""
+"Подвійний клич для визначення IP цього<br>Клич на правій кнопці - інші опції"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4972
+msgid "Server appears to be a network hub<br>"
+msgstr "Сервер є мережним хабом<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4973
+msgid "Unknown server<br>"
+msgstr "Невідомий сервер<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4976
+msgid "Double-click to read the MOTD<br>Right-click to view other options"
+msgstr "Подвійний клич для читання MOTD<br>Клич правою клавішею - інші опції"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:4989
+msgid "Double-click to set<br>"
+msgstr "Подвійний клич для установки<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5011
+msgid "You're not an operator: You may not change channel modes"
+msgstr "Ви не оператор: Ви не можете змінювати режими каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5028
+msgid "Nothing known about %Q"
+msgstr "Нічого не відомо про %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5029
+msgid "Nothing known about %Q (no connection)"
+msgstr "Нічого не відомо про %Q (немає з'єднання)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5054
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>): "
+"<br><nowrap>+%Q (%u users)<hr>%Q</nowrap>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5060
+msgid ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)<hr>Double-"
+"click to join %Q<br>Right click to view other options"
+msgstr ""
+"<b>%Q</b> (<u><font color=\"blue\"><nowrap>%Q</nowrap></font></u>)"
+"<hr>Подвійний клич для заходу на %Q<br>Клич правою кнопкою - інші опції"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5080
+msgid "<b>Double-click:</b><br>%Q"
+msgstr "<b>Подвійний клич:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5085
+msgid "<b>Middle-click:</b><br>%Q"
+msgstr "<b>Клич на середній кнопці:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircview.cpp:5090
+msgid "<b>Right-click:</b><br>%Q"
+msgstr "<b>Клич на правій кнопці:</b><br>%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1284
+msgid "Joined on <b>%1</b>"
+msgstr "Увійшов на канал <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_userlistview.cpp:1296
+msgid "Quiet for <b>%1h %2m %3s</b>"
+msgstr "Неактивність <b>%1 ч %2 м %3 з</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1097
+msgid "No connection"
+msgstr "Не підключений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:304
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:3
+msgid "IRC Context"
+msgstr "IRC Контекст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:319
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:365
+#, fuzzy, c-format
+msgid "Lag: %d.%d%d"
+msgstr "Затримка: %d. %d%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:393
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:379
+msgid "Lag: ?.??"
+msgstr "Затримка: ?.??"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:326
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:637
+msgid "No IRC context"
+msgstr "Немає контексту IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:633
+msgid "Not connected"
+msgstr "Відключений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:377
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1117
+msgid "away"
+msgstr "відійшов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_irctoolbar.cpp:397
+msgid "In progress..."
+msgstr "у процесі..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:458
+msgid "Crypting"
+msgstr "Шифрування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:466
+msgid "Private Text Encoding"
+msgstr "Кодування приватів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:566
+msgid "Ops...I've accidentally lost the crypting engine..."
+msgstr "Упс...Я зненацька втратив криптовальну машину..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:582
+msgid "List of window types available in this release of KVIrc:"
+msgstr "Список типів вікон, доступних у цій версії KVIrc:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:763
+msgid "Use Default Encoding"
+msgstr "Використати кодування за замовчуванням"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:775
+msgid "Standard"
+msgstr "Стандартні"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:776
+msgid "Smart (Send Local)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:777
+msgid "Smart (Send UTF-8)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:810
+msgid "&Undock"
+msgstr "&Відокремити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:813
+msgid "&Dock"
+msgstr "&Дока"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:818
+msgid "Mi&nimize"
+msgstr "&Згорнути"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:821
+msgid "Ma&ximize"
+msgstr "Раз&повернути"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:824
+msgid "&Restore"
+msgstr "&Відновити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:837
+msgid "Text &Encoding"
+msgstr "&Кодування тексту"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_window.cpp:842
+msgid "Sa&ve Window Properties"
+msgstr "&Зберегти властивості вікон"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:86
+msgid "Taskbar"
+msgstr "Панель завдань(панель списку вікон)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:91
+#, fuzzy
+msgid "taskbar"
+msgstr "Панель завдань(панель списку вікон)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1162
+msgid "Sort"
+msgstr "Сортування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1163
+msgid "Reverse Sort"
+msgstr "Зворотне сортування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_taskbar.cpp:1223
+msgid "Window List"
+msgstr "Список вікон"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:203
+msgid "Apply to all IRC Contexts"
+msgstr "Застосувати до всім IRC контекстам"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:227
+msgid "Away Indicator"
+msgstr "Індикатор режиму \"Відійшов\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:255
+msgid "Away since"
+msgstr "Відійшов з"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:259
+msgid "Double click to leave away mode"
+msgstr "Подвійний клич повертає з режиму Відійшов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:261
+msgid "Not away"
+msgstr "режим Відійшов не включений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:263
+msgid "Double click to enter away mode"
+msgstr "Подвійний клич включає режим Відійшов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:330
+#, c-format
+msgid "Last checked %d mins %d secs ago"
+msgstr "Остання перевірка %d хв. %d сек. назад"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:332
+msgid "Lag measure not available yet"
+msgstr "Вимір затримки поки не доступно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:336
+msgid "Lag meter engine disabled"
+msgstr "Виключений вимір затримки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:338
+msgid "Double click to enable it"
+msgstr "Подвійний клич для включення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:391
+msgid "Lag Indicator"
+msgstr "Індикатор затримки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:461
+msgid "Simple Clock"
+msgstr "Прості годинники"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:512
+msgid "Show total connection time"
+msgstr "Показувати повний час у мережі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:536
+msgid "Connection Timer"
+msgstr "Таймер з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbarapplet.cpp:560
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:87
+msgid "Separator"
+msgstr "Роздільник"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:820
+msgid "Clipboard"
+msgstr "Буфер обміну"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line break"
+msgstr "кінець рядка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:830
+msgid "line breaks"
+msgstr "закінчень рядків"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:845
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:439
+msgid "Cu&t"
+msgstr "Ви&різати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:847
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:445
+msgid "&Copy"
+msgstr "&Копіювати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:849
+msgid "&Paste"
+msgstr "&Вставити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:851
+msgid "Paste (Slowly)"
+msgstr "Вставити (повільно)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:856
+msgid "Paste &File"
+msgstr "Вставити файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:863
+msgid "Stop Paste"
+msgstr "Зупинити вставку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:865
+msgid "Clear"
+msgstr "Очистити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:868
+msgid "Select All"
+msgstr "Вибрати всі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:897
+msgid "Insert Icon"
+msgstr "Вставити іконку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1926
+msgid "%d matches: %Q"
+msgstr "%d відповідає: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:1930
+msgid "No matches"
+msgstr "Не відповідає"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2657
+msgid "Show History<br>&lt;Ctrl+PageUp&gt;"
+msgstr "Показати історію<br>&lt;Ctrl+PageUp&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2648
+msgid "Input History Disabled"
+msgstr "Історія уведення не активована"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2370
+msgid "Show Icons Popup<br>&lt;Ctrl+I&gt;<br>See also /help texticons"
+msgstr ""
+"Показати спливаючого меню з іконками<br>&lt;Ctrl+I&gt;<br>Дивися також /help "
+"texticons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2382
+msgid "User friendly commandline mode<br>See also /help commandline"
+msgstr ""
+"Командний рядок у дружньому користувачеві режимі <br> Також дивися /help "
+"commandline"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2394
+#, fuzzy
+msgid "Multi-line Editor<br>&lt;Alt+Backspace&gt;"
+msgstr "Многостроковий редактор<br>&lt;Ctrl+Backspace&gt;"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2498
+msgid "Confirm Multiline Message"
+msgstr "Підтвердити многострокове повідомлення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2499
+msgid ""
+"You're about to send a message with %1 lines of text.<br><br>There is "
+"nothing wrong with it, this warning is<br>here to prevent you from "
+"accidentally sending<br>a really large message just because you didn't edit "
+"it<br>properly after pasting text from the clipboard.<br><br>Do you want the "
+"message to be sent?"
+msgstr ""
+"Ви збираєтеся послати повідомлення, у якому %1 рядків тексту<br><br>Тут "
+"немає помилки, це попередження тут для того,<br>що б запобігти випадкову "
+"передачу великого повідомлення,<br>не відредагованого після вставки з буфера "
+"обміну<br><br>Ви хочете відіслати повідомлення?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2505
+msgid "Yes, always"
+msgstr "Так, завжди"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2506
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:399
+msgid "Yes"
+msgstr "Так"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:737
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:806
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:375
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:400
+msgid "No"
+msgstr "Ні"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_input.cpp:2556
+#, fuzzy
+msgid "<Ctrl+Return>; submits, <Alt+Backspace>; hides this editor"
+msgstr "<Ctrl+Return> відправити, <Ctrl+Backspace> сховати цей редактор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:126
+msgid "Address:"
+msgstr "Адреса:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:140
+msgid "Current IRC URI"
+msgstr "Поточний IRC URI"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:153
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:156
+msgid "Notify List"
+msgstr "Список повідомлень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:263
+msgid "Part All Channels"
+msgstr "Вийти із всіх каналів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:265
+msgid "Close All Queries"
+msgstr "Закрити всі привати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:270
+msgid "Unhighlight All Windows"
+msgstr "Зняти підсвічування із всіх вікон"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:273
+msgid "Unhighlight All Channels"
+msgstr "Зняти підсвічування із всіх каналів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:275
+msgid "Unhighlight All Queries"
+msgstr "Зняти підсвічування із всіх приватів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:387
+msgid "Gender:"
+msgstr "Стать:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:394
+msgid "Male"
+msgstr "Чоловічий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:393
+msgid "Female"
+msgstr "Жіночий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:375
+msgid "Registered as"
+msgstr "Зареєстрований як"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:381
+msgid "(Matched by"
+msgstr "Відповідно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:393
+msgid "On <b>"
+msgstr "На <b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:402
+msgid "Using server <b>%1</b>"
+msgstr "Використається сервер <b>%1</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:407
+msgid "%1 hops"
+msgstr "%1 стрибків"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:417
+msgid "Probably Away"
+msgstr "Можливо відійшов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:493
+msgid ""
+"KVIrc can accept only irc://, irc6://, ircs:// or irc6s:// URL's\n"
+"Your URL is invalid. Check spelling and try again"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:554
+msgid ""
+"You have just attempted to close a console window with an active connection "
+"inside.\n"
+"Are you sure you wish to terminate the connection?"
+msgstr ""
+"Ви намагаєтеся закрити консоль із активним з'єднанням.\n"
+"Хочете розірвати з'єднання?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:588
+msgid ""
+"You have just attempted to close the last console window.\n"
+"Are you sure you wish to quit KVIrc?"
+msgstr ""
+"Ви намагаєтеся закрити останнє вікно сервера.\n"
+"Хочете вийти з KVIrc?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1019
+msgid "Failed to load avatar with name \"%Q\" and local path \"%Q\""
+msgstr "Помилка завантаження аватара з ім'ям \"%Q\" і локальним шляхом \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1098
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:624
+msgid "Connection in progress..."
+msgstr "З'єднуємося..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1099
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:630
+msgid "Login in progress..."
+msgstr "Вхід у мережу..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1179
+msgid "channel"
+msgstr "канал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1180
+msgid "channels"
+msgstr "канали"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1181
+msgid "query"
+msgstr "приват"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1182
+msgid "queries"
+msgstr "привати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1238
+msgid "Connected since"
+msgstr "Підключений з"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1252
+msgid "Online for"
+msgstr "У мережі протягом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_console.cpp:1264
+msgid "Server idle for"
+msgstr "На сервері відсутня активність протягом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:50
+msgid "This option is also available as"
+msgstr "Ця опція також доступна як"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_optionswidget.cpp:683
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:275
+msgid "Advanced..."
+msgstr "Додатково..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:69
+msgid "Scri&pting"
+msgstr "З&ценарії"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:74
+msgid "&Tools"
+msgstr "&Інструменти"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:81
+msgid "&Settings"
+msgstr "&Настроювання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:83
+msgid "&Window"
+msgstr "&Вікна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:125
+msgid "&Help"
+msgstr "&Довідка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:119
+msgid "&Help Browser (Panel)"
+msgstr "Браузер &допомоги (панель)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:121
+msgid "Help Browser (&Window)"
+msgstr "Браузер допомоги (&вікно)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:124
+msgid "&Tip of the Day"
+msgstr "&Рада дня"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:127
+msgid "About &KVIrc"
+msgstr "ПРО &KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:130
+msgid "KVIrc Home&page"
+msgstr "&Домашня сторінка KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:134
+msgid "KVIrc Russian Home&page"
+msgstr "&Домашня сторінка KVIrc на російському"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:139
+#, fuzzy
+msgid "KVIrc French Home&page"
+msgstr "&Домашня сторінка KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:143
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:339
+msgid "Subscribe to the Mailing List"
+msgstr "Підписатися на список розсилання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:145
+msgid "Report a Bug / Propose Improvements"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:148
+msgid "Join KVIrc International Channel on Freenode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:150
+msgid "Join KVIrc International Channel on IRCNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:155
+msgid "Join KVIrc Italian Channel on AzzurraNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:161
+msgid "Join KVIrc French Channel on Freenode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:164
+msgid "Join KVIrc French Channel on EuropNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:179
+msgid "Show StatusBar"
+msgstr "Показати рядок статусу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:194
+msgid "&Save Configuration"
+msgstr "&Зберегти настроювання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:213
+msgid "Restore &Default Script"
+msgstr "Відновити сценарії по &умовчанню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:630
+msgid "Disconnect"
+msgstr "Відключитися"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:228
+msgid "New &Connection To"
+msgstr "Нове &підключення до"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:234
+msgid "Hide &Dock Icon"
+msgstr "Сховати &іконку в треє"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:237
+msgid "Show &Dock Icon"
+msgstr "Показати &іконку в треє"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:111
+msgid "&Quit"
+msgstr "&Вихід"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:265
+msgid "&Other..."
+msgstr "&Іншої..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:305
+msgid "Show &Icon Table"
+msgstr "Показати таблицю &іконок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_menubar.cpp:308
+msgid "Open &Terminal"
+msgstr "Відкрити &термінал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:308
+msgid ""
+"<b>Shift+Drag</b> or <b>Ctrl+Drag</b> to move the applet around<br><b>Right "
+"click</b> to see the other options"
+msgstr ""
+"<b>Shift+Перетаскування</b> або <b>Ctrl+Перетаскування</b>для переміщення "
+"аплета.<br><b>Клич правою кнопкою</b> для інших опцій"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:313
+msgid "<b>Right click</b> to add/remove applets"
+msgstr "<b>Права кнопка</b> - додати/видалити аплети"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:353
+msgid "Remove %Q"
+msgstr "Видалити %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:365
+msgid "Add Applet"
+msgstr "Додати апплет"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_statusbar.cpp:404
+msgid ""
+"Drag the applet while holding the Shift or Ctrl key to move it to the "
+"desired position"
+msgstr "Перетягнути аплет можна при натиснутій клавіші Shift або Ctrl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:93
+msgid "<b><font color=\"#EAEAEA\" size=\"-1\">Find Text</font></b>"
+msgstr "<b><font color=\"#EAEAEA\" size=\"-1\">Знайти текст</font></b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:118
+msgid "&Regular expression"
+msgstr "&Регулярне вираження"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:121
+msgid "E&xtended regexp."
+msgstr "&Розширене регулярне вираження."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:126
+msgid "C&ase sensitive"
+msgstr "З &обліком регістра"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:129
+msgid "Find &Prev."
+msgstr "Знайти &попередній"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:133
+msgid "&Find Next"
+msgstr "Знайти &наступний"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:880
+msgid "Find"
+msgstr "Знайти"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:214
+msgid "Type"
+msgstr "Тип"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:166
+msgid "Set &All"
+msgstr "Вибрати &всі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:170
+msgid "Set &None"
+msgstr "З&кинути всі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:174
+msgid "&Load From..."
+msgstr "&Завантажити з..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:178
+msgid "&Save As..."
+msgstr "&Зберегти як..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:182
+msgid "Filter"
+msgstr "Фільтр"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:234
+msgid "Select a Filter File"
+msgstr "Виберіть файл фільтра"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:251
+#, c-format
+msgid "Can't open the filter file %s for reading."
+msgstr "Не можу відкрити файл фільтра %s на читання."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:261
+msgid "Select a Name for the Filter File"
+msgstr "Виберіть ім'я для файлу фільтра"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:272
+msgid "Failed to write the filter file %Q (IO Error)"
+msgstr "Помилка запису у файл фільтра %Q (Помилка IO)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_ircviewtools.cpp:274
+msgid "Can't open the filter file %Q for writing"
+msgstr "Не можу відкрити файл фільтра %Q на запис"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:109
+msgid "Choose image ..."
+msgstr "Виберіть зображення ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:122
+msgid "Builtin images"
+msgstr "Убудовані картинки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:131
+msgid "Small icons"
+msgstr "Маленькі іконки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:138
+msgid "Full path"
+msgstr "Повний шлях"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:241
+msgid "Builtin $icon(%Q) [index %d]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:274
+msgid "directory"
+msgstr "каталог"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:300
+msgid "pixels"
+msgstr "пікселей"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_imagedialog.cpp:305
+msgid "bytes"
+msgstr "байти"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:98
+msgid "Show User List"
+msgstr "Показати список користувачів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:105
+msgid "Query Targets"
+msgstr "Мети приватів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:165
+msgid "Query target:"
+msgstr "Ціль привата:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:170
+msgid "%1 is %2 (%3)"
+msgstr "%1 це %2 (%3)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:172
+msgid "%1 is %2"
+msgstr "%1 це %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:186
+msgid "%1 is using irc server: %2 (%3 hops)"
+msgstr "%1 використає сервер %2 (%3 стрибки)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:188
+msgid "%1 is using irc server: %2"
+msgstr "%1 використає сервер %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:195
+msgid "%1 is probably away"
+msgstr "%1 можливо відійшов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:200
+msgid "Common channels with %1: %2"
+msgstr "Загальні канали з %1: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:254
+msgid "[Dead Query]"
+msgstr "[Мертвий приват]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:240
+#, fuzzy
+msgid "Query with %1!%2 (%3)"
+msgstr "Приват з %1! %2 (%3)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:242
+#, fuzzy
+msgid "Query with %1!%2"
+msgstr "Приват з %1! %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:244
+msgid ", using server %1"
+msgstr ", використає сервер %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:246
+msgid " (%1 hops)"
+msgstr " (%1 стрибків)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:248
+msgid ", probably away"
+msgstr ", можливо відійшов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:252
+msgid "Common channels: %2"
+msgstr "Загальні канали: %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:320
+msgid ""
+"The target of this query has changed from \r!n\r%Q\r [%Q@\r!h\r%Q\r] to \r!n"
+"\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr ""
+"Ціль привата змінена з \r!n\r%Q\r [%Q@\r!h\r%Q\r] на \r!n\r%Q\r [%Q@\r!h\r%Q"
+"\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:389
+msgid "Common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Загальні канали для \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:392
+msgid "No common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "Немає загальних каналів для \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:428
+msgid "[Dead query]"
+msgstr "[Мертвий приват]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:578
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:645
+msgid "This query has no active targets, no message sent"
+msgstr "Цей приват не має активних цілей, повідомлення не відіслане"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/ui/kvi_query.cpp:617
+msgid ""
+"The crypto engine was unable to encrypt the current message (%Q): %s, no "
+"data sent to the server"
+msgstr ""
+"Криптовальна машина не в змозі зашифрувати поточне повідомлення (%Q): %s, "
+"дані не відіслані на сервер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashcount.cpp:74
+msgid ""
+"The argument of the hash count '#' operator didn't evaluate to a hash: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+"Аргумент рахунку хеша не визначається як хеш: автоматично перетворене в тип %"
+"Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:100
+#, fuzzy
+msgid "DNS Lookup result for query \"%Q\""
+msgstr "Результат DNS-запиту для \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:105
+msgid "Error: %Q"
+msgstr "Помилка: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:110
+msgid "Hostname %d: %Q"
+msgstr "Адреса %d: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp:116
+msgid "IP address %d: %Q"
+msgstr "IP адреса %d: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:870
+msgid ""
+"Broken slot '%Q' in target object '%Q::%Q' while emitting signal '%Q' from "
+"object '%Q::%Q': disconnecting"
+msgstr ""
+"Битий слот '%Q' у цільовому об'єкті '%Q::%Q' при посланні сигналу '%Q' з "
+"об'єкта '%Q::%Q': відключений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:888
+msgid ""
+"Slot target object destroyed while emitting signal '%Q' from object '%Q::%Q'"
+msgstr ""
+"Слот цільового об'єкта зруйнувався при випущенні сигналу '%Q' з об'єкта '%"
+"Q:: %Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1040
+msgid "Listing Qt properties for object named \"%Q\" of KVS class %Q"
+msgstr "Список QT-властивостей для об'єкта \"%Q\" KVS класу %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1046
+#, c-format
+msgid "Properties for Qt class %s"
+msgstr "Властивості QT-класу %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1071
+msgid "Property: %c%Q%c, type %Q"
+msgstr "Властивість: %c%Q%c, тип %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1131
+#, c-format
+msgid "%d properties listed"
+msgstr "%d властивостей"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1151
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1380
+msgid "The object named \"%Q\" of class %Q has no Qt properties"
+msgstr "Об'єкт \"%Q\" класу %Q не є Qt-властивістю"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1396
+msgid "No Qt property named \"%Q\" for object named \"%Q\" of class %Q"
+msgstr "Немає QT-властивості з ім'ям \"%Q\" для об'єкта \"%Q\" класу %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1409
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed but it doesn't really exist"
+msgstr ""
+"Неможливо знайти властивість із ім'ям \"%Q\" для об'єкта \"%Q\" класу %Q: "
+"властивість проіндексована, але в дійсності не існує"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1417
+msgid ""
+"Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+"property is indexed and defined but the returned variant is not valid"
+msgstr ""
+"Неможливо знайти властивість із ім'ям \"%Q\" для об'єкта \"%Q\" класу %Q: "
+"властивість проіндексовано й визначена, але повертає значение, що, не дійсно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1200
+#, c-format
+msgid ""
+"The property is of type %s but the supplied argument can't be converted to "
+"that type (expecting \"%s\")"
+msgstr ""
+"Властивість має тип %s, але надаваний аргумент не може бути наведений цьому "
+"типу (очікується \"%s\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1331
+msgid ""
+"A pixmap object, an image_id or an image file path is required for this "
+"property"
+msgstr ""
+"Об'єкт pixmap, image_id або файл зображення потрібно для цієї властивості"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1352
+msgid "Can't find the requested image"
+msgstr " НеМожу знайти запитане зображення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1358
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1512
+msgid ""
+"Property \"%Q\" for object named \"%Q\" of class %Q has an unsupported data "
+"type"
+msgstr ""
+"Властивість \"%Q\" для об'єкта \"%Q\" класу %Q має не підтримуваний тип дати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1659
+msgid "Cannot find object function $%Q for object named \"%Q\" of class %Q"
+msgstr "Не можу знайти об'єкт функції $%Q для об'єкта з ім'ям \"%Q\" класу %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1661
+msgid "Cannot find object function $%Q::%Q for object named \"%Q\" of class %Q"
+msgstr ""
+"Не можу знайти об'єкт функції $%Q::%Q для об'єкта з ім'ям \"%Q\" класу %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_object.cpp:1669
+msgid ""
+"Cannot call internal object function $%Q (for object named \"%Q\" of class %"
+"Q) from this context"
+msgstr ""
+"Не можу знайти об'єкт функції $%Q для об'єкта з ім'ям \"%Q\" класу %Qиз "
+"цього контексту"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:69
+msgid "Stray dot ('.') character or invalid following module command name"
+msgstr "Зайва крапка ('.'), символ або недійсне наступне ім'я команди модуля"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:70
+msgid "Syntax error: malformed module command identifier"
+msgstr ""
+"Синтаксична помилка: невірно сформований командний ідентифікатор модуля"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:188
+msgid "Stray '::' sequence or invalid following alias name"
+msgstr "Загублена послідовність '::' або неприпустиме наступне ім'я аліаса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:95
+msgid "Syntax error: malformed alias identifier"
+msgstr "Синтаксична помилка: невірно сформована ім'я аліаса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:102
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:196
+msgid "Stray ':' character: did you mean '...<namespace>::<alias_name>' ?"
+msgstr ""
+"Символ ':' не на своєму місці: він повинен бути в середині вираження ."
+"<namespace>::<alias_name>'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:103
+msgid "Syntax error: malformed (alias?) command identifier"
+msgstr "Синтаксична помилка: невірний (аліас?) ідентифікатор команди"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_command.cpp:280
+msgid "Unknown callback command \"%Q\""
+msgstr "Невідома відповідь від команди \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:465
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:44
+msgid "The current window is not a channel"
+msgstr "Поточне вікно не є каналом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:532
+msgid ""
+"Timer name omitted but there is not current timer (this is not a timer "
+"callback)"
+msgstr "Ім'я таймера не належить поточному таймеру (це не повернення таймера)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:538
+msgid "Can't kill the timer '%Q' since it is not running"
+msgstr "Не можу вбити таймер '%Q' тому що він не запущений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:626
+#, fuzzy
+msgid "List of active timers"
+msgstr "активні користувачі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:637
+msgid "Persistent"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:640
+#, fuzzy
+msgid "WindowLifetime"
+msgstr "Список вікон"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:643
+msgid "SingleShot"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:652
+#, fuzzy
+msgid "None"
+msgstr "(Нічого)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp:663
+#, c-format
+msgid "Total: %u timers running"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:849
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:872
+msgid "Found character '%q' (unicode %x) where a slash '/' was expected"
+msgstr "Знайдений символ '%q' (унікод %x) там де очікувався слеш '/'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:842
+msgid ""
+"Unexpected end of command in binding operation, at least two slashes are "
+"missing"
+msgstr ""
+"Несподіваний кінець команди в обгортці операції, принаймні два слеша "
+"пропущені"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:865
+msgid ""
+"Unexpected end of command in binding operation, at least one slash is missing"
+msgstr ""
+"Несподіваний кінець команди в обгортці операції, принаймні один слеш "
+"пропущений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:905
+msgid "Unknown binding operation '%Q'"
+msgstr "Невідома операція '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:926
+msgid "Missing right side operand for the binding operator '=~'"
+msgstr "Відсутній крайній правий операнд для оператора '=~'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:948
+msgid "Trailing garbage ignored after operator '++'"
+msgstr "Інше сміття зігнороване після оператора '++'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:960
+msgid "Missing right operand for operator '+='"
+msgstr "Відсутній правий операнд для оператора '+='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:979
+#, fuzzy
+msgid "Trailing garbage ignored after operator '--'"
+msgstr "Інше сміття зігнороване після оператора '-і'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:986
+msgid ""
+"This looks a lot like an object handle dereferencing operator '->' but in "
+"fact it isn't. Maybe you forgot a '$' just after ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:994
+msgid "Missing right operand for operator '-='"
+msgstr "Відсутній правий операнд для оператора '-='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1015
+msgid "Missing right operand for operator '<<='"
+msgstr "Відсутній правий операнд для оператора '<<='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1025
+msgid "Missing right operand for operator '<<'"
+msgstr "Відсутній правий операнд для оператора '<<'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1039
+msgid "Missing right operand for operator '<,'"
+msgstr "Відсутній правий операнд для оператора '<,'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1053
+msgid "Missing right operand for operator '<+'"
+msgstr "Відсутній правий операнд для оператора '<+'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1075
+msgid "Missing right operand for operator '>>='"
+msgstr "Відсутній правий операнд для оператора '>>='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1094
+msgid "Missing right operand for operator '.='"
+msgstr "Відсутній правий операнд для оператора '.='"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1113
+msgid "Missing right operand for operator '"
+msgstr "Відсутній правий операнд для оператора '"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:72
+msgid "Unknown operator"
+msgstr "Невідомий оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1178
+msgid "Unexpected (and senseless) read-only data evaluation"
+msgstr "Несподівані (і безглузді) дані тільки для читання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1180
+msgid "Syntax error: confused by earlier errors: bailing out"
+msgstr "Синтаксична помилка: обумовлена більше ранніми помилками: bailing out"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1160
+msgid "Unexpected end of script after a variable reference: expected operator"
+msgstr ""
+"Несподіваний кінець сценарію після посилання на змінну: очікується оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1176
+msgid ""
+"Unexpected character '%q' (unicode %x) after a void function call: end of "
+"instruction expected"
+msgstr ""
+"Несподіваний символ '%q' (унікод %x) після виклику void функції: очікується "
+"кінець директиви"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_lside.cpp:1179
+msgid "Unexpected character '%q' (unicode %x)"
+msgstr "Несподіваний символ '%q' (унікод %x)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:96
+msgid "/me can be used only in channels, queries and DCC chat windows"
+msgstr ""
+"/me може бути використано тільки у вікнах каналів, приватів і DCC чатів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:385
+msgid "Invalid IRC url (%Q)"
+msgstr "Недійсний url IRC (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:410
+msgid "The commandline for this url type seems to be broken (%Q)"
+msgstr "Команда для цього типу url здається бита (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:412
+msgid "No commandline specified for this type of url (%Q)"
+msgstr "Не визначена для типу url (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:512
+msgid "Option setting error: Unknown option or invalid value for option type"
+msgstr ""
+"Помилка опції настроювань: Невідома опція або недійсне значення для опції "
+"цього типу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:606
+msgid "Choose a file to parse"
+msgstr "Виберіть файл граматичного розбору"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:639
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:643
+msgid "Failed to load the file '%Q' for parsing"
+msgstr "Помилка завантаження файлу '%Q' для граматичного розбору"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:715
+msgid "Missing channel list"
+msgstr "Загублений список каналів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:753
+#, c-format
+msgid "You don't appear to be on channel %s"
+msgstr "Ви не перебуваєте на каналі %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:802
+msgid "Module command call failed: can't load the module 'snd'"
+msgstr "Помилка команди виклику модуля: не можливо завантажити модуль 'snd'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:809
+msgid ""
+"Module command call failed: the module 'snd' doesn't export a command named "
+"'play'"
+msgstr ""
+"Помилка команди виклику модуля: модуль 'snd' не може надати команду з ім'ям "
+"'play'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:864
+msgid "Popup %Q is not defined"
+msgstr "Спливаюче меню %Q не визначено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:872
+msgid "A popup menu cannot be popped up twice"
+msgstr "Спливаюче меню не може бути показане двічі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:897
+msgid "Invalid syntax for screen coordinates, using cursor position"
+msgstr "Недійсний синтаксис координат екрана, використається позиція курсору"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1011
+msgid "Empty target specified"
+msgstr "Визначена порожня мета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:97
+msgid "[RAW]: %Q"
+msgstr "[RAW]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1237
+msgid "Window with id %Q not found: no rebinding performed"
+msgstr "Вікно з ID %Q не знайдено: не можливо виконати вв'язування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp:1330
+msgid "Failed to execute command '%Q'"
+msgstr "Помилка при запуску команди '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:242
+msgid "Missing alias name"
+msgstr "Відсутнє ім'я псевдоніма"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:253
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:889
+msgid ""
+"Alias names can contain only letters, digits, underscores and '::' namespace "
+"separators"
+msgstr ""
+"Ім'я аліаса може містити тільки цифри, букви, нижні підкреслення й '::' як "
+"роздільник просторів імен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:903
+msgid ""
+"Stray ':' character in alias name: did you mean ...<namespace>::<name> ?"
+msgstr "':' в імені аліаса. Може бути ви мали через <namespace>::<name> ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:914
+msgid "Found an empty namespace in alias name"
+msgstr "Знайдене порожній простір імен в імені аліаса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:277
+msgid "The alias %Q is not existing"
+msgstr "Псевдонім %Q не існує"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:436
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:413
+msgid "The specified window has no button containers"
+msgstr "Задане вікно не має контейнерів із кнопками"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:447
+msgid "Window button '%Q' not found"
+msgstr "Кнопка вікна '%Q' не знайдена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:445
+msgid "Can't find the icon '%Q'"
+msgstr "Не знайдена іконка '%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:532
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:540
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1197
+msgid "No such event (%Q)"
+msgstr "Немає такої події (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:552
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1222
+msgid "No handler '%Q' for raw numeric event '%d'"
+msgstr "Немає оброблювача '%Q' для заготівлі події з номером '%d'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:558
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:1248
+msgid "No handler '%Q' for event '%Q'"
+msgstr "Немає оброблювача '%Q' для події '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:936
+msgid "The specified ping time is invalid: assuming zero (no ping)"
+msgstr "Заданий час пінга не дійсно: приймається 0 (без пінга)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:946
+msgid "The specified maximum run time is invalid: assuming zero (infinite)"
+msgstr ""
+"Заданий максимальний час виконання не дійсно: приймається 0 (нескінченно)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:965
+msgid "Failed to start the process"
+msgstr "Помилка при запуску процесу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1010
+msgid "The specified object does not exist"
+msgstr "Зазначений об'єкт не існує"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1113
+msgid "Missing timer name"
+msgstr "Відсутнє ім'я таймера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1122
+msgid "Missing timeout delay"
+msgstr "Відсутня затримка часу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1129
+msgid "The timeout delay didn't evaluate to an integer"
+msgstr "Таймаут не є цілим числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp:1152
+msgid "Unable to add the timer: insufficient system resources"
+msgstr "Не можу додати таймер: недостатньо системних ресурсів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_eventmanager.cpp:503
+msgid "Event handler %Q is broken: disabling"
+msgstr "Оброблювач події %Q битий: виключене"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_moduleinterface.cpp:166
+msgid "Can't unload the module: it has locked itself in memory"
+msgstr "Неможливо вивантажити модуль: модуль заблокував свою пам'ять"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:123
+msgid "Unknown binary operator '=%q': did you mean '==' ?"
+msgstr "Невідомий бінарний оператор '=%q': напевно хочете '==' ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:221
+msgid "Unknown binary operator '%q'"
+msgstr "Невідомий бінарний оператор '%q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:305
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:371
+msgid "Unexpected end of script in expression"
+msgstr "Несподіваний кінець сценарію у вираженні"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:451
+msgid ""
+"Unexpected character %q (unicode %h) in expression. If it meant to be a "
+"string use the quotes."
+msgstr ""
+"Несподіваний символ %q (унікод %h) у вираженні. Якщо ви хочете це "
+"використати, ставте лапки."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_expression.cpp:466
+msgid "Unexpected empty expression operand"
+msgstr "Несподіваний порожній операнд вираження"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:91
+msgid "say: injected commandline"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:94
+msgid "Say parse error: Broken command"
+msgstr "Помилка граматичного розбору: Бита команда"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:250
+msgid ""
+"Couldn't find a suitable IRC context for the connection, try using -n or -u"
+msgstr ""
+"Неможливо знайти підходящий IRC контекст для з'єднання, використайте -n або -"
+"u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:259
+msgid "Another connection is already in progress in the selected IRC context"
+msgstr "Інше з'єднання вже запущене в заданому IRC контексті"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:369
+msgid "No menu bar item with text '%Q'"
+msgstr "Немає пункту меню з текстом '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:383
+msgid "Invalid index specified: ignored"
+msgstr "Невірно визначений індекс: зігнорований"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:392
+msgid "The popup '%Q' is not defined"
+msgstr "Спливаюче меню '%Q' не визначено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:604
+msgid "No target channel specified and the current window is not a channel"
+msgstr "Не заданий канал, і поточне вікно не є вікном каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:705
+msgid "No catalogue %Q for the current language found"
+msgstr "Каталог поточної мови %Q не знайдений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp:744
+msgid "The catalogue %Q was not loaded"
+msgstr "Каталог %Q не завантажений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:80
+msgid ""
+"Empty window identifier specified in the standard rebinding switch: no "
+"rebinding performed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp:91
+msgid ""
+"Invalid window specified in the standard rebinding switch: no rebinding "
+"performed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:94
+msgid ""
+"The left side of the scope operator didn't evaluate as an object reference"
+msgstr "У лівій частині оператора не задане посилання на об'єкт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:100
+msgid ""
+"The left side of the scope operator evaluated to a null object reference"
+msgstr "У лівій частині оператора задане нульове посилання на об'єкт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp:107
+msgid ""
+"The left side of the scope operator evaluated to an invalid object reference "
+"(object doesn't exist)"
+msgstr ""
+"У лівій частині оператора задане недійсне посилання на об'єкт (об'єкт не "
+"існує)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayreferenceassert.cpp:77
+msgid "Array reference assert failed: the variable evaluated to type '%Q'"
+msgstr "Помилка в посиланні масиву: змінна визначена як типу '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:247
+msgid "Operand of unary operator didn't evaluate to a number"
+msgstr "Операнд унарного оператора не визначене як число"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:415
+msgid "Left operand didn't evaluate to a number"
+msgstr "Лівий операнд не визначений як число"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:422
+msgid "Right operand didn't evaluate to a number"
+msgstr "Правий операнд не визначений як число"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:547
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:575
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp:583
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:374
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:66
+msgid "Division by zero"
+msgstr "Розподіл на нуль"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:107
+#, c-format
+msgid "line %d, near character %d"
+msgstr "Рядок %d, біля символу %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:187
+msgid "This command can be used only in windows bound to an IRC context"
+msgstr "Ця команда може бути використана тільки в IRC контексті"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:193
+msgid "You're not connected to an IRC server"
+msgstr "Ви не підключені до IRC сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp:199
+msgid "Missing parameter"
+msgstr "Параметр відсутній"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:128
+msgid "Hash key evaluated to empty string: fix the script"
+msgstr "Хеш ключ є порожнім рядком: виправте сценарій"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:99
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+"Аргумент із {} не визначається як хеш: автоматично перетворено в тип %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp:144
+msgid ""
+"The argument of the {} subscript didn't evaluate to a hash automatic "
+"conversion from %Q supplied"
+msgstr "Аргумент із {} не визначається як хеш: автоматично перетворене в %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_hashreferenceassert.cpp:77
+msgid "Hash reference assert failed: the variable evaluated to type '%Q'"
+msgstr "Помилкове посилання на хеш: змінна визначена як типу '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:100
+msgid "Failed to send an unknown command as /raw"
+msgstr "Помилка при відправленні невідомої команди як /RAW"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:104
+msgid "Call to undefined command '%Q'"
+msgstr "Викликувана команда '%Q' не визначена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp:116
+msgid "Error in inner alias command call '%Q', called from this context"
+msgstr "Помилка в псевдонімі при звертанні до '%Q', виклик із цього контексту"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp:74
+msgid "There are no extended scope variables in this scope"
+msgstr "Немає змінних розширеної області в цій області"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:111
+msgid "Missing class name"
+msgstr "Пропущене ім'я класу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:120
+msgid "A class can't be a subclass of itself"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:127
+msgid "Couln't find base class named \"%Q\""
+msgstr "Не знайдене ім'я базового класу \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:137
+msgid ""
+"Detected a loop in the inheritance tree of the base class \"%Q\": redefine "
+"that class first"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp:146
+msgid "Can't override the builtin class \"%Q\""
+msgstr "Неможливо скасувати убудований клас \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:71
+msgid "Module command call failed: can't load the module '%Q': %Q"
+msgstr "Помилка команди виклику модуля: не можливо завантажити модуль '%Q': %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp:77
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a command named '%"
+"Q'"
+msgstr ""
+"Помилка команди виклику модуля: модуль '%Q' не може надати команду з ім'ям '%"
+"Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:113
+msgid "Broken condition in menu setup: assuming false"
+msgstr "Бита умова в установці меню: приймається неправда"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:220
+msgid "Broken icon parameter: ignoring"
+msgstr "Битий аргумент іконки: зігнороване"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:228
+msgid "Can't find the icon \"%Q\": ignoring"
+msgstr "Не можу знайти іконку \"%Q\": зігноровано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:244
+msgid "Broken text parameter: assuming empty string"
+msgstr "Битий аргумент тексту: очевидно порожній рядок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:486
+msgid "Recursive definition detected for popup '%Q': ignoring"
+msgstr "Рекурсивне визначення виявлене для спливаючі меню '%Q': зігноровано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:500
+msgid "Can't find the external popup '%Q'; ignoring"
+msgstr "Не знайдене спливаюче меню '%Q': зігноровано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:853
+msgid "Broken prologue in popup menu '%Q': ignoring"
+msgstr "Битий початок у спливаючого меню '%Q': зігноровано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_popupmenu.cpp:868
+msgid "Broken epilogue in popup menu '%Q': ignoring"
+msgstr "Бите закінчення в спливаючого меню '%Q': зігноровано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:70
+msgid "Module function call failed: can't load the module '%Q': %Q"
+msgstr ""
+"Помилка звертання до функціонального модуля: не можу завантажити модуль '%"
+"Q': %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp:77
+msgid ""
+"Module function call failed: the module '%Q' doesn't export a function named "
+"'%Q'"
+msgstr ""
+"Помилка звертання до функціонального модуля: модуль '%Q' не надає функцію з "
+"ім'ям '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_timermanager.cpp:244
+msgid "Timer '%Q' has a broken callback handler: killing the timer"
+msgstr "Таймер '%Q' має бите повернення з оброблювача: таймер убитий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:229
+msgid "The target variable didn't evaluate to an integer or real value"
+msgstr "Цільова змінна не визначена як ціле або реальне значення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:283
+msgid "The right side of operator '&=' didn't evaluate to an integer"
+msgstr "Права частина оператора '&=' не є цілим числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:294
+msgid "The left side of operator '&=' didn't evaluate to an integer"
+msgstr "Ліва частина оператора '&=' не є цілим числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:353
+msgid "The right side of operator '/=' didn't evaluate to a number"
+msgstr "Права частина оператора '/=' не є числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:364
+msgid "The left side of operator '/=' didn't evaluate to a number"
+msgstr "Ліва частина оператора '/=' не є числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:446
+msgid "The right side of operator '%=' didn't evaluate to a number"
+msgstr "Права частина оператора '%=' не є числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:457
+msgid "The left side of operator '%=' didn't evaluate to a number"
+msgstr "Ліва частина оператора '%=' не є числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:541
+msgid "The right side of operator '*=' didn't evaluate to a number"
+msgstr "Права частина оператора '*=' не є числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:552
+msgid "The left side of operator '*=' didn't evaluate to a number"
+msgstr "Ліва частина оператора '*=' не є числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:620
+msgid "The right side of operator '|=' didn't evaluate to an integer"
+msgstr "Права частина оператора '|=' не є цілим числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:631
+msgid "The left side of operator '|=' didn't evaluate to an integer"
+msgstr "Ліва частина оператора '|=' не є цілим числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:691
+msgid "The right side of operator '<<=' didn't evaluate to an integer"
+msgstr "Права частина оператора '<<=' не є цілим числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:702
+msgid "The left side of operator '<<=' didn't evaluate to an integer"
+msgstr "Ліва частина оператора '<<=' не є цілим числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:763
+msgid "The right side of operator '>>=' didn't evaluate to an integer"
+msgstr "Права частина оператора '>>=' не є цілим числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:774
+msgid "The left side of operator '>>=' didn't evaluate to an integer"
+msgstr "Ліва частина оператора '>>=' не є цілим числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:840
+msgid "The right side of operator '-=' didn't evaluate to a number"
+msgstr "Права частина оператора '-=' не є числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:851
+msgid "The left side of operator '-=' didn't evaluate to a number"
+msgstr "Ліва частина оператора '-=' не є числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:923
+msgid "The right side of operator '+=' didn't evaluate to a number"
+msgstr "Права частина оператора '+=' не є числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:934
+msgid "The left side of operator '+=' didn't evaluate to a number"
+msgstr "Ліва частина оператора '+=' не є числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1009
+msgid "The right side of operator '^=' didn't evaluate to an integer"
+msgstr "Права частина оператора '^=' не є цілим числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1020
+msgid "The left side of operator '^=' didn't evaluate to an integer"
+msgstr "Ліва частина оператора '^=' не є цілим числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp:1462
+msgid ""
+"The regular expression matched a zero-length substring: this is not valid in "
+"the s/// operator, skipping"
+msgstr ""
+"Регулярне вираження містить підстрочку нульовий довгі: це недійсно в "
+"операторі s/// , пропущене"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:52
+msgid "Unexpected end of script after '$' function call prefix"
+msgstr "Несподіваний кінець сценарію після послу префікса функції '$'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:53
+msgid "Unexpected character %q (unicode %x) after '$' function call prefix"
+msgstr "Несподіваний символ %q (унікод %x) після префікса функції '$'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:54
+msgid ""
+"Syntax error after '$' function call prefix. If you want to use a plain '$' "
+"in the code you need to escape it"
+msgstr ""
+"Синтаксична помилка після префікса функції '$'. Якщо ви хочете використати "
+"просто символ '$' у вашому коді - використайте escape-послідовність"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:63
+msgid "Invalid expression evaluation in object scope"
+msgstr "Недійсна оцінка вираження в області об'єкта"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:78
+msgid "Invalid command evaluation in object scope"
+msgstr "Недійсна оцінка команди в області об'єкта"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:87
+msgid "Empty instruction block for command evaluation"
+msgstr "Порожній блок інструкцій для оцінки команди"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:101
+msgid ""
+"Parameter identifiers are forbidden in object scope (after the '->' operator)"
+msgstr ""
+"Ідентифікатори параметрів заборонені в області об'єкта (після оператора '->')"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:147
+msgid ""
+"Ending index of a multiple parameter identifier is lower or equal to the "
+"starting index. This will evaluate to a single parameter identifier."
+msgstr ""
+"Кінцевий індекс у безлічі ідентифікаторів параметра менше або дорівнює "
+"початковому індексу. Це приймається як єдиний ідентифікатор параметра."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:163
+msgid "Syntax error: invalid $$ ($this) function call in object scope"
+msgstr ""
+"Синтаксична помилка: недійсний $$ ($this) виклик функції в межах об'єкта"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:189
+msgid "Syntax error: malformed alias function call identifier"
+msgstr "Синтаксична помилка: невірний ідентифікатор виклику функції"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp:197
+msgid "Syntax error: malformed (alias?) function call identifier"
+msgstr "Синтаксична помилка: невірний (аліас?) ідентифікатор виклику функції"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:307
+#, c-format
+msgid "Invalid data type for parameter \"%s\""
+msgstr "Недійсний тип дати для параметра \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:122
+#, c-format
+msgid "found empty string where type '%s' was expected"
+msgstr "знайдена порожній рядок там де очікується тип '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:129
+msgid "found string value \"%Q\" where type '%s' was expected"
+msgstr "знайдений рядок \"%Q\" там де очікується тип '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:134
+msgid "found type %Q where type '%s' was expected"
+msgstr "знайдений тип %Q там де очікується тип '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:154
+#, c-format
+msgid "Missing non-optional parameter \"%s\""
+msgstr "Відсутній обов'язковий параметр \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:282
+msgid "found empty string while a non empty one was expected"
+msgstr "знайдена порожній рядок там де очікується непуста"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp:309
+#, c-format
+msgid "found signed integer \"%d\" where type 'unsigned integer' was expected"
+msgstr "знайдене знакове ціле \"%d\" там де очікується беззнакове ціле"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:253
+msgid "This window has no associated IRC context"
+msgstr "Це вікно не асоційоване з контекстом IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:483
+#, c-format
+msgid "No such IRC context (%u)"
+msgstr "Немає такого контексту IRC (%u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:471
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:586
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:494
+msgid "This window is not associated to an IRC context"
+msgstr "Це вікно не асоційоване з контекстом IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp:809
+msgid ""
+"The specified format string wasn't accepted by the underlying system time "
+"formatting function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:70
+msgid "Unterminated c-style multiline comment"
+msgstr "З-стиль многострочних коментарів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:71
+msgid "Unexpected end of script in multiline comment"
+msgstr "Несподіваний кінець сценарію в многострочному коментарі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_comment.cpp:88
+msgid ""
+"Unexpected character '%q' (unicode %x) after a slash (it is a typo or a "
+"malformed comment begin ?)"
+msgstr ""
+"Несподіваний символ '%q' (унікод %x) після слеша (це помилка або початок "
+"коментарю?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:71
+msgid "Call to undefined function '%Q'"
+msgstr "Звертання до невизначеної функції '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp:79
+msgid "Error in inner alias function call '%Q', called from this context"
+msgstr ""
+"Помилка в псевдонімі при звертанні до функції '%Q', виклик із цього контексту"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:73
+msgid "Array index didn't evaluate to an integer"
+msgstr "Індекс масиву не визначається як ціле число"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:79
+msgid ""
+"Array index evaluated to a negative integer (non negative integer expected)"
+msgstr ""
+"Індекс масиву визначається як негативне число (а повинне бути позитивне)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:106
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from %Q supplied"
+msgstr ""
+"Аргумент із індексом [] не визначається як масив: автоматично перетворено в %"
+"Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp:142
+msgid ""
+"The argument of the [] subscript didn't evaluate to an array: automatic "
+"conversion from type '%Q' supplied"
+msgstr ""
+"Аргумент із індексом [] не визначається як масив: автоматично перетворено в "
+"тип %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:219
+msgid "Lag meter was not enabled"
+msgstr "Вимір затримки не включене"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp:546
+msgid "No such event handler (%Q) for event %Q"
+msgstr "Немає оброблювача '%Q для події '%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands.cpp:153
+msgid "This is not a channel"
+msgstr "Це не канал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:99
+msgid ""
+"Unexpected end of command buffer while looking for the \"perl.end\" statement"
+msgstr "Несподіваний кінець буфера команд при пошуку інструкції \"perl.end\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:147
+msgid "Trailing garbage at the end of the break command: ignored"
+msgstr "Сміття наприкінці команди: зігнороване"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:209
+msgid "The 'unset' command needs a variable list"
+msgstr "Команда 'unset' вимагає список змінних"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:210
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:280
+msgid "Found character %q (unicode %x) where a variable was expected"
+msgstr "Знайдений символ %q (унікод %x) там де очікувалася змінна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:219
+msgid "'unset' command used without a variable list"
+msgstr "команда 'unset' використається без списку змінних"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:279
+msgid "The 'global' command needs a variable list"
+msgstr "Команді 'global' потрібний список змінних"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:631
+msgid "Found character %q (unicode %x) where an open parenthesis was expected"
+msgstr "Знайдений символ %q (унікод %x) там де очікується відкриття дужок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:439
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:538
+msgid "Unexpected end of buffer in class definition"
+msgstr "Несподіваний кінець буфера в оголошенні класу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:474
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:501
+msgid "Found character %q (unicode %x) where a function name was expected"
+msgstr "Знайдений символ '%q' (унікод %x) там де очікувалася інструкція"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:522
+msgid "Unexpected end of buffer in function parameter list reminder"
+msgstr "Несподіваний кінець рядка в списку параметрів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:630
+msgid "The while command needs an expression enclosed in parenthesis"
+msgstr "Команді while необхідне вираження в круглих дужках"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:654
+msgid ""
+"The last while command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr "Остання команда в буфері не має умовної інструкції: це безглуздо"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:655
+msgid ""
+"Unexpected end of script while looking for the instruction block of the "
+"while command"
+msgstr "Несподіваний кінець сценарію при пошуку блоку інструкцій команди"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:741
+msgid ""
+"Unexpected end of command after the 'do' command block: expected 'while' "
+"keyword"
+msgstr ""
+"Несподіваний кінець команди після блоку 'do': очікується ключове слово "
+"'while'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:743
+msgid "Found character %q (unicode %x) where a 'while' keyword was expected"
+msgstr ""
+"Знайдений символ %q (унікод %x) там де очікується ключове слово 'while'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:759
+msgid ""
+"The 'while' block of the 'do' command needs an expression enclosed in "
+"parenthesis"
+msgstr "Блоку 'while' команди 'do' потрібне вираження в круглих дужках"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:779
+msgid "Garbage string after the expression in 'do' command: ignored"
+msgstr "Неправильний рядок після вираження в команді 'do': зігнорований"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:825
+msgid "The 'if' command needs an expression enclosed in parenthesis"
+msgstr "Команді 'if' потрібне вираження в круглих дужках"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:850
+msgid ""
+"The last if command in the buffer has no conditional instructions: it's "
+"senseless"
+msgstr "Остання команда в буфері не має умовних інструкцій: це безглуздо"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:851
+msgid ""
+"Unexpected end of script while looking for the instruction block of the if "
+"command"
+msgstr "Несподіваний кінець сценарію при пошуку блоку інструкцій команди"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:966
+msgid ""
+"Unexpected end of buffer while looking for the closing ')' in the 'for' "
+"command"
+msgstr ""
+"Несподіваний кінець буфера при пошуку закриваючої дужки ')' у команді 'for'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1015
+msgid "The 'for' command needs an expression enclosed in parenthesis"
+msgstr "Команді 'for' потрібне вираження в круглих дужках"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1092
+msgid ""
+"Found char %q (unicode %x) while looking for the terminating ')' in 'for' "
+"command"
+msgstr ""
+"Знайдений символ %q (унікод %x) при пошуку закриваючої дужки ')' у команді "
+"'for'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1122
+msgid "Empty infinite 'for' loop: fix the script"
+msgstr "Порожній нескінченний цикл 'for': виправте сценарій"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1181
+msgid "The 'foreach' command needs an expression enclosed in parenthesis"
+msgstr "Команді 'foreach' потрібне вираження в круглих дужках"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1205
+msgid ""
+"The 'foreach' command expects a writeable iteration variable as first "
+"parameter"
+msgstr "Команда 'foreach' очікує для запису змінну ітерації як перший аргумент"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1196
+msgid ""
+"Found character '%q' (unicode %x) where '%' or '$' was expected: see /help "
+"foreach for the command syntax"
+msgstr ""
+"Знайдений символ '%q' (унікод %x) там де очікувався '%' або '$' : дивися /"
+"help foreach для довідки по синтаксисі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1207
+msgid "Unexpected function call as 'foreach' iteration variable"
+msgstr "Несподіваний виклик функції як змінної ітерації 'foreach'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1209
+msgid "Unexpected read-only variable as 'foreach' iteration variable"
+msgstr "Несподівана змінна тільки для читання як змінна ітерації 'foreach"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1219
+msgid ""
+"Unexpected end of 'foreach' parameters: at least one iteration data argument "
+"must be given"
+msgstr ""
+"Несподіване закінчення аргументів 'foreach' : принаймні один аргумент дані "
+"ітерації повинен бути"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1223
+msgid ""
+"The 'foreach' command expects a comma separated list of iteration data items "
+"after the first parameter"
+msgstr ""
+"Команда 'foreach' очікує кому, що розділяє список пунктів даних ітерації "
+"після першого аргументу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1244
+msgid ""
+"Found empty 'foreach' execution block: maybe you need to fix your script ?"
+msgstr ""
+"Знайдений порожній виконува блок, що, для 'foreach' : може вам потрібно "
+"поправити Скріпт?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1365
+msgid "The 'switch' command needs an expression enclosed in parenthesis"
+msgstr "Команді 'switch' потрібне вираження в круглих дужках"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1415
+msgid "Unexpected end of buffer in switch condition block"
+msgstr "Несподіваний кінець буфера в блоці умов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1422
+msgid ""
+"Found character %q (unicode %x) where a 'case','match','regexp','default' or "
+"'break' label was expected"
+msgstr ""
+"Знайдений символ %q (унікод %x) там де очікується "
+"'case','match','regexp','default' або 'break'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1460
+msgid ""
+"Found 'break' label where a 'case','match','regexp' or 'default' label was "
+"expected"
+msgstr ""
+"Знайдений 'break' там де очікується 'case','match','regexp' або 'default'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1465
+msgid ""
+"Found token '%Q' where a 'case','match','regexp','default' or 'break' label "
+"was expected"
+msgstr ""
+"Знайдений знак '%Q' там де очікується 'case','match','regexp','default' або "
+"'break'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1528
+msgid "Senseless empty switch command: fix the script"
+msgstr "Безглузда порожня команда: виправте сценарій"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1562
+msgid "Unexpected end of buffer in defpopup block"
+msgstr "Несподіваний кінець буфера в defpopup блоці"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1569
+msgid ""
+"Found character %q (unicode %x) where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+"Знайдений символ %q (унікод %x) там де очікується "
+"prologue','separator','label','popup','item','extpopup' або 'epilogue'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1668
+msgid "Found empty prologue block: maybe you need to fix the script?"
+msgstr ""
+"Безглуздий порожній попередній блок: може вам треба поправити сценарій?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1670
+msgid "Found empty epilogue block: maybe you need to fix the script?"
+msgstr ""
+"Безглуздий порожній заключний блок: може вам потрібно виправити Скріпт?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1703
+msgid ""
+"Unexpected empty <text> field in label parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Несподівана порожня область <text> в аргументі label. Дивися /help defpopup "
+"для довідки по синтаксисі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1753
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1801
+msgid ""
+"Unexpected empty <text> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Несподівана порожня область <text> в аргументі extpopup. Дивися /help "
+"defpopup для довідки по синтаксисі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1777
+msgid ""
+"Found empty instruction for popup item: maybe you need to fix the script?"
+msgstr ""
+"Безглузда порожня інструкція в пункті спливаючого меню: може вам потрібно "
+"виправити сценарій?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1809
+msgid ""
+"Unexpected empty <name> field in extpopup parameters. See /help defpopup for "
+"the syntax"
+msgstr ""
+"Несподівана порожня область <name> в аргументі extpopup. Дивися /help "
+"defpopup для довідки по синтаксисі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1821
+msgid ""
+"Found token '%Q' where a "
+"'prologue','separator','label','popup','item','extpopup' or 'epilogue' label "
+"was expected"
+msgstr ""
+"Знайдений знак '%Q' там де очікується "
+"'prologue','separator','label','popup','item','extpopup' або 'epilogue'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp:1931
+msgid "The 'defpopup' command needs an expression enclosed in parenthesis"
+msgstr "Команді 'defpopup' потрібне вираження в круглих дужках"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:109
+msgid "beginning of input"
+msgstr "Початок уведення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:121
+msgid ""
+"Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %s"
+"\" for the command syntax"
+msgstr ""
+"Знайдений символ '%q' (унікод 0x%x) де очікувався '%c': дивися \"/help %s\" "
+"для допомоги по синтаксисі команди"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:124
+#, c-format
+msgid ""
+"Found end of input where character '%c' was expected: see \"/help %s\" for "
+"the command syntax"
+msgstr ""
+"Знайдений кінець рядка де очікується символ '%c': дивися \"/help %s\" для "
+"довідки по синтаксисі команди"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:197
+msgid "Empty script"
+msgstr "Сценарій порожній"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2650
+msgid ""
+"Syntax error after '%' variable prefix. If you want to use a plain '%' in "
+"the code you need to escape it"
+msgstr ""
+"Синтаксична помилка на початку змінної '%'. Якщо ви хочете використати "
+"просто '%' у вашому коді, вам потрібно використати escape-послідовність"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2667
+msgid "Objects have no extended scope variables"
+msgstr "Об'єкт не має розширених значень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2727
+msgid "Found character '%q' (unicode %x) where an instruction was expected"
+msgstr "Знайдений символ '%q' (унікод %x) там де очікувалася інструкція"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2760
+msgid "Unterminated instruction block"
+msgstr "Незакінчений блок інструкцій"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2761
+msgid "Unexpected end of script in instruction block (missing closing brace)"
+msgstr ""
+"Несподіваний кінець сценарію в блоці інструкцій (немає закриваючої дужки)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2838
+msgid ""
+"The dash after a command should be followed by a letter (switch), by a digit "
+"(negative number) or be escaped"
+msgstr ""
+"Риса після команди повинна супроводжуватися буквою (ключ), цифрою (негативне "
+"число) або escaped"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2842
+msgid "Unexpected character '%q' (unicode %x) after a switch dash"
+msgstr "Несподіваний символ '%q' (унікод %x) після тирі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2844
+msgid "Unexpected end of script after a switch dash"
+msgstr "Несподіваний кінець сценарію після тирі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2869
+msgid ""
+"The above problem might be related to the switch dash and the following "
+"equal sign"
+msgstr ""
+"Зазначена проблема могла бути обумовлена тире й наступним знаком рівності"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2948
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3016
+msgid "Unexpected end of script in parameter list"
+msgstr "Несподіваний кінець сценарію в списку параметрів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:2954
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3022
+msgid "Unexpected end of line in parameter list"
+msgstr "Несподіваний кінець рядка в списку параметрів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3083
+msgid ""
+"Nested character %q corresponding to expected terminator, this might confuse "
+"me a bit: it is a good idea to enclose it in quotes"
+msgstr ""
+"Вкладений символ %q відповідає очікуваній ознаці закінчення, краще укладати "
+"це в лапки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3093
+msgid "Skipping nested terminator character %q"
+msgstr "Пропуск вкладеного символу закінчення %q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3120
+msgid "Stray backslash at the end of the script"
+msgstr "Зайвий зворотний слеш наприкінці сценарію"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3393
+msgid "Unterminated hash key"
+msgstr "Не закритий хеш ключа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3387
+msgid "Unexpected end of script in hash key (missing '}' character ?)"
+msgstr "Несподіваний кінець сценарію в хеше ключа (не вистачає символу '}' ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3394
+msgid ""
+"Unexpected end of line in hash key (missing '}' character or unescaped "
+"newline)"
+msgstr ""
+"Несподіваний кінець рядка в хеше ключа (не вистачає символу '}' або нової "
+"рядка)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3679
+msgid "Unterminated string constant"
+msgstr "Рядок з константою не закритий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3673
+msgid "Unexpected end of script in string constant (missing \" character ?)"
+msgstr ""
+"Несподіваний кінець сценарію в строковій константі (відсутній символ \" ? )"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_parser.cpp:3680
+msgid ""
+"Unexpected end of line in string constant (missing \" character or unescaped "
+"newline)"
+msgstr ""
+"Несподіваний кінець рядка в строковій константі (відсутній символ \" або "
+"нового рядка)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_processmanager.cpp:225
+msgid "Error triggered from process callback handler: killing process"
+msgstr "Помилка запуску процесу з оброблювача: процес убитий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_arraycount.cpp:72
+msgid ""
+"The argument of the array count '#' operator didn't evaluate to an array: "
+"automatic conversion from type '%Q' supplied"
+msgstr ""
+"Аргумент рахунку масиву '#' не визначається як масив: автоматично "
+"перетворено в тип %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:197
+msgid "This window has no associated IRC context and is not a DCC chat"
+msgstr "Це вікно не пов'язане з контекстом IRC і не є DCC чатом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:293
+msgid "Class \"%Q\" is not defined"
+msgstr "Клас %Q не визначений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:303
+msgid "The specified parent object does not exist"
+msgstr "Заданий батьківський об'єкт не існує"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp:430
+msgid "There is no option named '%Q'"
+msgstr "Немає опції з ім'ям '%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:85
+msgid "Internal error: pure virtual evaluateReadOnly called"
+msgstr "Внутрішня помилка: виклик чистої віртуальної evaluateReadOnly"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:91
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:104
+msgid ""
+"Internal error: trying to evaluate as read-write a read-only data location"
+msgstr ""
+"Внутрішня помилка: спроба використати дані в режимі читання-запис які "
+"доступні тільки на читання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_data.cpp:98
+msgid "Internal error: pure virtual evaluateReadOnlyInObjectScope called"
+msgstr "Внутрішня помилка: pure virtual evaluateReadOnlyInObjectScope called"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:215
+msgid "[KVS]%c Warning: %Q"
+msgstr "[KVS]%c Попередження: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:211
+msgid "[KVS]%c Compilation Error: %Q"
+msgstr "[KVS]%c Помилка при компіляції: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:219
+msgid "[KVS]%c Runtime Error: %Q"
+msgstr "[KVS]%c Помилка при виконанні: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:224
+msgid "[KVS] in script context \"%Q\""
+msgstr "[KVS] У контексті сценарію \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:226
+msgid "[KVS] in script context \"%Q\", %Q"
+msgstr "[KVS] у контексті Скріпта \"%Q\", %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:233
+msgid "[KVS] Code listing:"
+msgstr "[KVS] Лістінг коду:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:238
+msgid "[KVS] Window:"
+msgstr "[KVS] вікно:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:242
+#, c-format
+msgid "[KVS] Destroyed window with pointer %x"
+msgstr "[KVS] Знищене вікно з адресою %x"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_report.cpp:246
+msgid "[KVS] Call stack:"
+msgstr "[KVS] Стік викликів:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:464
+#, c-format
+msgid "Window with ID '%s' not found, returning empty string"
+msgstr "Вікно з ID '%s' не знайдено, повертається порожній рядок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:130
+msgid "The specified window is not a channel"
+msgstr "Задане вікно не є каналом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp:392
+msgid "The $sw() function can be used only in aliases"
+msgstr "Функція $sw() може використатися тільки в псевдонімах"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:302
+msgid "Invalid pitch value: using default"
+msgstr "Недійсне значення тону: використається за замовчуванняме"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:312
+msgid "Invalid duration value: using default"
+msgstr "Недійсне значення тривалості: використається за замовчуванняме"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:421
+msgid "No button with type %Q named %Q"
+msgstr "Немає кнопки типу %Q з ім'ям %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:632
+msgid "Can't delete a null object reference"
+msgstr "Неможливо видалити посилання на нульовий об'єкт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:638
+msgid "Can't delete an inexisting object"
+msgstr "Неможливо видалити неіснуючий об'єкт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:692
+msgid "Inexisting popup \"%Q\""
+msgstr "В існуючому спливаючому меню \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:698
+msgid ""
+"Popup menu self-modification is not allowed (the popup is probably open)"
+msgstr ""
+"Самомодифікація спливаючого меню не допускається (спливаюче меню ймовірно "
+"відкрито)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:705
+msgid "The menu item with id \"%Q\" does not exist in popup \"%Q\""
+msgstr "Пункт меню з ID \"%Q\" не існує в спливаючому меню \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:860
+msgid ""
+"The argument of the -w switch did not evaluate to a valid window id: using "
+"default"
+msgstr "Аргумент ключа -w не є дійсним ID вікна: використається дефолтний"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:869
+msgid ""
+"The argument of the i switch did not evaluate to a number: using default"
+msgstr "Аргумент ключа i не є числом: використається за замовчуванням"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:981
+msgid "Invalid color-set specification, using default"
+msgstr "Недійсне визначення кольорів, використається значення за замовчуванням"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp:992
+#, c-format
+msgid "Window '%s' not found, using current one"
+msgstr "Вікно '%s' не знайдене, використається поточне"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp:78
+msgid ""
+"Module command call failed: the module '%Q' doesn't export a callback "
+"command named '%Q'"
+msgstr ""
+"Помилка команди виклику модуля: модуль '%Q' не може надати команду з ім'ям '%"
+"Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp:401
+#, c-format
+msgid "The popup '%s' is actually locked: 'self-modifications' are not allowed"
+msgstr "Спливаюче меню '%s' фактично заблоковано: самомодифікація не припустим"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:822
+#, fuzzy, c-format
+msgid "Ignoring DCC from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "Зігноровано CTCP від \r!nс\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:839
+#, fuzzy, c-format
+msgid "Ignoring CTCP from \r!nc\r%s\r [%s@\r!h\r%s\r]"
+msgstr "Зігноровано CTCP від \r!nс\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:978
+msgid "The following CTCP reply has unrecognized target %Q"
+msgstr "Відповідь CTCP має непізнану мету %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1025
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1128
+msgid "Channel CTCP"
+msgstr "CTCP у канал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:988
+msgid "%Q %Q reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "%Q %Q відповідь від \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1018
+msgid "The following CTCP request has unrecognized target %Q"
+msgstr "Запит CTCP має непізнану мету %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1032
+#, fuzzy
+msgid ""
+"%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignored (flood limit "
+"exceeded)"
+msgstr ""
+" %Q %Q%c запит від \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), зігнорований (спрацювала "
+"захист від флуда)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1036
+msgid "ignored (unrecognized)"
+msgstr "зігноровано (непізнаний)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "ignored"
+msgstr "зігноровано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1037
+msgid "replied"
+msgstr "відповідь"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1041
+msgid "%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+msgstr "%Q %Q%c запит від \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1079
+msgid "The following CTCP PING reply has unrecognized target \"%Q\""
+msgstr "Відповідь PING CTCP має непізнану мету \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1113
+#, c-format
+msgid ""
+"The following CTCP PING reply has a broken time identifier \"%S\", don't "
+"trust the displayed time"
+msgstr "Відповідь PING CTCP має битий ідентифікатор часу \"%S\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1132
+msgid "%Q PING reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sec %u msec"
+msgstr "%Q відповідь PING від \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u сек %u мсек"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1466
+msgid "The following CTCP ACTION has unrecognized target %Q"
+msgstr "CTCP ACTION має непізнану мету %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1471
+msgid "CTCP ACTION from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "CTCP ACTION від \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1517
+msgid "Unable to add file offer for file %Q (File not readable?)"
+msgstr ""
+"Не можу додати файл у список відкритого доступу %Q (Файл не читається?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1521
+msgid "Added %d sec file offer for file %Q (%Q) to recipient %Q"
+msgstr "Додано %d сек файлу до файлу %Q (%Q) одержувач %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "private"
+msgstr "приват"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1578
+msgid "channel notification:"
+msgstr "повідомлення каналу:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1579
+msgid "notification"
+msgstr "повідомлення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1584
+msgid "%Q unsets avatar"
+msgstr "%Q скасував аватар"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1591
+msgid "%Q changes avatar to %s"
+msgstr "%Q змінив аватар на %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1637
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (HTTP GET %s)"
+msgstr ":Аватар не знайдений у кэші, загружаємо його (HTTP GET %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1644
+msgid ""
+": No valid local copy of avatar available; failed to start an HTTP transfer, "
+"ignoring"
+msgstr ": Аватар не знайдений у кэше. Не можу відкрити HTTP з'єднання."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1652
+#, c-format
+msgid ": No valid local copy of avatar available, requesting one (DCC GET %s)"
+msgstr ": Аватар не знайдений у кэше, загружаємо його (DCC GET %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1664
+msgid ""
+": No valid local copy of avatar available; flood limit exceeded, ignoring"
+msgstr ": Аватар не знайдений у кэше, перевищений ліміт флуда, зігнороване"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1669
+msgid ": No valid local copy of avatar available, ignoring"
+msgstr ": Аватар не знайдений у кэше, зігнороване"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1677
+msgid ": No such nickname in the user database, ignoring the change"
+msgstr ": Не знайдений Нік у базі користувачів, зміни зігноровані"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1717
+msgid "Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S)"
+msgstr "Зігнорований DCC %S запит від \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1759
+msgid "Processing DCC %Q request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s)"
+msgstr "Обробка DCC %Q запиту від \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1770
+#, c-format
+msgid "Unable to process the above request: Cannot load DCC module (%s)"
+msgstr ""
+"Не можу обробити запит, що надійшов: Неможливо завантажити модуль DCC (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_ctcp.cpp:1776
+msgid "Unable to process the above request: DCC module may be broken"
+msgstr "Не можу обробити запит, що надійшов: Модуль DCC ушкоджений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:132
+msgid ""
+"[Server parser]: Encountered problems while parsing the following message:"
+msgstr ""
+"[Синтаксичний аналізатор сервера]: Виникли проблеми при розборі наступного "
+"повідомлення:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:134
+msgid "[Server parser]: [%s][%s] %Q"
+msgstr "[Синтаксичний аналізатор сервера]: [%s][%s] %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sparser.cpp:136
+#, c-format
+msgid "[Server parser]: %s"
+msgstr "[Синтаксичний аналізатор сервера]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:98
+msgid "Received ping from \r!s\r%Q\r (PING %Q), replied pong"
+msgstr "Отриманий пінг від \r!s\r%Q\r (PING %Q), відсилаю pong"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:125
+#, c-format
+msgid "Received pong from \r!s\r%s\r (PONG %s)"
+msgstr "Отриманий pong від \r!s\r%s\r (PONG %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:151
+msgid "Server ERROR: %Q"
+msgstr "ПОМИЛКА Сервера: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:174
+msgid "Missing channel parameter in join message"
+msgstr "Не зазначене ім'я каналу в JOIN-повідомленні"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:209
+msgid "Received a join message for an unknown channel, possible desync"
+msgstr ""
+"Отримане JOIN-повідомлення для невідомого каналу. Можливо, розсинхрозування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:305
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r [implicit +%c umode change]"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] зайшов на \r!c\r%Q\r [implicit +%c umode change]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:310
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] зайшов на \r!c\r%Q\r "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:324
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just joined \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] тільки що зайшов на \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:355
+msgid "Received a part message for an unknown channel, possible desync"
+msgstr ""
+"Отримана частина повідомлення від невідомого каналу, можлива розсинхрузування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:384
+msgid "You have left channel \r!c\r%Q\r"
+msgstr "Ви залишаєте канал \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:386
+msgid "You have left channel \r!c\r%Q\r: %Q"
+msgstr "Ви залишаєте канал \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:402
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] покинув \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:406
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] покинув \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:420
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r: %Q"
+msgstr "\r!nс\r%Q\r [%Q@\r!h\r%Q\r] тільки що покинув \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:424
+msgid "\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r"
+msgstr "\r!nс\r%Q\r [%Q@\r!h\r%Q\r] тільки що покинув \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:494
+#, c-format
+msgid "Netsplit detected: %s"
+msgstr "Виявлений обрив мережі: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:546
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:562
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] вийшов з IRC: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:589
+msgid "Received a kick message for an unknown channel, possible desync"
+msgstr ""
+"отримане повідомлення про кіке від невідомого каналу, можлива "
+"розсинхрузування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:626
+msgid "You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Вас кікнули \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:633
+msgid "Attempting to rejoin \r!c\r%Q\r..."
+msgstr "Спроба повернутися \r!c\r%Q\r..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:670
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@"
+"\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] кікнут на \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q"
+"\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:682
+msgid ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just been kicked from \r!c\r%Q\r by \r!n\r%Q"
+"\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr ""
+"\r!n\r%Q\r [%Q@\r!h\r%Q\r] тільки що був кікнут на \r!c\r%Q\r by \r!n\r%Q\r "
+"[ %Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:710
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+"З'явилося наступне шифроване повідомлення, але кріптовальна машина не може "
+"його декодувати: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:776
+msgid "Ignoring query-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Зігнороване приватне повідомлення від \r!nс\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:843
+msgid ""
+"Spam privmsg from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%s\")"
+msgstr ""
+"Спам повідомлення від \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (збігається зі спам-"
+"словом \" %s\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:984
+msgid "Ignoring channel-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Зігнороване повідомлення в канал від \r!nс\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1106
+msgid "Ignoring Notice from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "Зігнороване повідомлення від \r!nс\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1159
+msgid "NickServ requests authentication, executing scheduled command"
+msgstr "NickServ запросив аутентификацію, запущена відповідна команда"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1162
+msgid ""
+"The scheduled NickServ identification command appears to be broken, please "
+"change the setting"
+msgstr ""
+"Планова ідентифікація NickServ не пройшла, будь ласка відкоригуйте "
+"настроювання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1213
+msgid ""
+"Spam notice from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%Q\")"
+msgstr ""
+"Спам повідомлення від \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (збігається зі спам-"
+"словом \" %Q\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1394
+msgid "Received a topic message for an unknown channel, possible desync"
+msgstr ""
+"Отримане повідомлення з темою від невідомого каналу, можлива розсинхрузування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1413
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has changed topic to \"%Q%c\""
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] змінив тему на \"%Q%c\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1512
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] тепер відомий як \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1063
+msgid "You have changed your nickname to %Q"
+msgstr "Ви змінили свій Нік на %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1477
+msgid ""
+"The target of this query was lost and has been found when \r!n\r%Q\r [%Q@\r!h"
+"\r%Q\r] changed his nickname to \r!n\r%Q\r"
+msgstr ""
+"Ціль привата була загублена й виявилася коли \r!n\r%Q\r [%Q@\r!h\r%Q\r] "
+"перемінив свій Нік на \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1486
+msgid ""
+"The recent nickname change from \r!n\r%Q\r to \r!n\r%Q\r caused a query "
+"collision: merging output"
+msgstr ""
+"Недавня зміна ніка в \r!n\r%Q\r to \r!n\r%Q\r є причиною протиріччя вікнах "
+"приватів: злиття висновку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1495
+msgid "End of merged output"
+msgstr "Кінець злиття висновку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1540
+msgid "Ignoring invite from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]"
+msgstr "Зігнороване запрошення від \r!nс\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "autojoining"
+msgstr "автоматичний вхід"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1555
+msgid "double-click the channel name to join"
+msgstr "для входу використайте подвійний клич"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1556
+msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] invites you to channel \r!c\r%Q\r (%Q)"
+msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] запрошує вас на канал \r!c\r%Q\r (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1564
+msgid "Received an invite message directed to another nick, possible desync"
+msgstr ""
+"Отримане повідомлення об запрошення призначене іншому нику, можлива "
+"розсинхрузування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1584
+msgid "WALLOPS from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+msgstr "WALLOPS від \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1648
+#, c-format
+msgid "You have set user mode %s"
+msgstr "У вас установлений режим %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1655
+msgid "Received a mode change for an unknown channel, possible desync"
+msgstr "Отримана зміна режиму від невідомого каналу, можлива розсинхрузування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1731
+msgid "%Q [%Q@%Q] has set channel key to \"\r!m-k\r%Q\r\""
+msgstr "%Q [%Q@%Q] включив ключ каналу \"\r!m-k\r%Q\r\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1734
+msgid "%Q [%Q@%Q] has unset the channel key"
+msgstr "%Q [%Q@%Q] виключив ключ каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1754
+msgid "%Q [%Q@%Q] has set channel \r!m-l\rlimit to %Q\r"
+msgstr "%Q [%Q@%Q] установив на каналі \r!m-l\rлимит в %Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1757
+msgid "%Q [%Q@%Q] has unset the channel limit"
+msgstr "%Q [%Q@%Q] виключив ліміт на каналі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1779
+msgid "%Q [%Q@%Q] has set mode %c%c \r!n\r%Q\r"
+msgstr "%Q [%Q@%Q] включив режим %c%c \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1787
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1834
+msgid "%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"
+msgstr "%Q [%Q@%Q] включив на каналі \r!m%c%c\r режим %c%c\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1819
+msgid "%Q [%Q@%Q] has set mode %c%c \r!m%c%c\r%Q\r"
+msgstr "%Q [%Q@%Q] включив режим %c%c \r!m%c%c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1860
+msgid "%Q [%Q@%Q] has set mode %s %Q"
+msgstr "%Q [%Q@%Q] включив режим %s %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_literal.cpp:1863
+msgid "%Q [%Q@%Q] has set channel mode %s"
+msgstr "%Q [%Q@%Q] включив на каналі режим %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:147
+#, c-format
+msgid ""
+"One or more standard mode flags are missing in the server available modes.\n"
+"This is caused either by a non RFC1459-compliant IRC daemon or a broken "
+"server reply.\n"
+"Server umodes seem to be '%s' and channel modes seem to be '%s'.\n"
+"Ignoring this reply and assuming that the basic set of modes is available.\n"
+"If you have strange problems, try changing the server."
+msgstr ""
+"Один або кілька прапорів стандартних режимів недоступні.\n"
+"Це викликано або несумісним з RFC1459 IRC демоном або битою відповіддю "
+"сервера.\n"
+" Сервер не може надати режим '%s' і канал надає '%s'.\n"
+"Ці відповіді зігноровані й зроблене допущення, що основні режими доступні.\n"
+"Якщо у вас такі проблеми, краще переміните сервер."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:159
+msgid "Available user modes:"
+msgstr "Доступні користувальницькі режими:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:169
+msgid ": Unknown user mode"
+msgstr ": Невідомий користувальницький режим"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:177
+msgid "Available channel modes:"
+msgstr "Доступні режими каналу:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:197
+msgid "Server %Q version %S supporting user modes '%S' and channel modes '%S'"
+msgstr ""
+"Сервер %Q версії %S підтримує користувальницькі режими '%S' і режими каналу "
+"'%S'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:244
+msgid "This server supports the WATCH notify list method, it will be used"
+msgstr ""
+"Сервер підтримує метод списку повідомлень WATCH , він буде використатися"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:262
+msgid "The current network is %Q"
+msgstr "Поточна мережа - %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:303
+msgid "This server supports the CODEPAGE command, it will be used"
+msgstr "Сервер підтримує команду CODEPAGE , вона буде використатися"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:319
+#, c-format
+msgid "This server supports: %s"
+msgstr "Цей сервер підтримує: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:375
+msgid "End of NAMES for \r!c\r%Q\r"
+msgstr "Закінчення NAMES для \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:472
+msgid "Names for \r!c\r%Q\r: %Q"
+msgstr "Імена для \r!c\r%Q\r: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:487
+msgid "(unknown)"
+msgstr "(невідомий)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:491
+msgid "Channel topic is: %Q"
+msgstr "Тема каналу: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:498
+msgid "Topic for \r!c\r%Q\r is: %Q"
+msgstr "Тема каналу \r!c\r%Q\r - %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:516
+msgid "No channel topic is set"
+msgstr "Тема каналу не встановлена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:521
+msgid "No topic is set for channel \r!c\r%Q\r"
+msgstr "Тема каналу \r!c\r%Q\r не встановлена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:560
+msgid "Topic was set by %Q on %Q"
+msgstr "Тема встановлена %Q на %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:561
+msgid "Topic was set by %Q"
+msgstr "Тема встановлена %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:569
+msgid "Topic for \r!c\r%Q\r was set by %Q on %Q"
+msgstr "Тема каналу \r!c\r%Q\r установлена %Q на %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:572
+msgid "Topic for \r!c\r%Q\r was set by %Q"
+msgstr "Тема каналу \r!c\r%Q\r установлена %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:592
+msgid "Channel mode for \r!c\r%Q\r is %s"
+msgstr "Режим каналу \r!c\r%Q\r - %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:595
+msgid "User mode for \r!n\r%Q\r is %s"
+msgstr "Режим каналу \r!n\r%Q\r - %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:631
+msgid "End of channel %Q for \r!c\r%Q\r"
+msgstr "Закінчення каналу %Q для \r!c\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:635
+msgid "ban list"
+msgstr "бан-ліст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:636
+msgid "invite list"
+msgstr "список запрошень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:637
+msgid "ban exception list"
+msgstr "список виключень із банів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:658
+msgid "%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"
+msgstr "%Q для \r!c\r%Q\r: \r!m-%c\r%Q\r (установлено %Q з %Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:665
+msgid "Ban listing"
+msgstr "Список банів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:668
+msgid "Invite listing"
+msgstr "Список запрошень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:671
+msgid "Ban exception listing"
+msgstr "Список виключень із банів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:740
+#, fuzzy
+msgid ""
+"WHO entry for %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cChannel%c: \r!c\r%Q\r, %"
+"cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAway%c: %Q, %cReal name"
+"%c: %Q"
+msgstr ""
+"Відповідь WHO від %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %c Канал %c: \r!c\r%Q\r, %"
+"c Сервер %c: \r!s\r%Q\r, %c Стрибків %c: %d, %c Прапори %c: %Q, %c Відійшов %"
+"c: %Q, %c Реальне ім'я %c: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:797
+msgid "End of WHO list for %Q"
+msgstr "Кінець WHO списку для %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:856
+msgid ""
+"Something really weird is happening: the server is refusing all the login "
+"nicknames..."
+msgstr "Відбувається що те дивне: сервер відхиляє вхід з усіма ніками..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:861
+msgid ""
+"The server is refusing all the login nicknames: giving up, you must send the "
+"nickname manually"
+msgstr "Сервер відхиляє вхід по всім нікам, ви повинні послати Нік вручну"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:871
+msgid "No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."
+msgstr "Неможливо ввійти під ніком '\r!n\r%Q\r' (%d: %Q), пробую '%Q'..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:945
+msgid "Command syntax %Q: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:973
+#, fuzzy
+msgid "Tip: %Q"
+msgstr "Список: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:976
+#, fuzzy
+msgid "Tip for %Q: %Q"
+msgstr "Тема каналу \r!c\r%Q\r - %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:993
+#, fuzzy
+msgid "End of help about %Q"
+msgstr "Кінець WHO списку для %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1037
+msgid "%c\r!n\r%Q\r%c is away: %Q"
+msgstr "%c\r!n\r%Q\r%c відійшов: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1090
+#, fuzzy
+msgid "%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "%c\r!n\r%Q\r%c є %c\r!n\r%Q\r! %Q@\r!h\r%Q\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1095
+msgid "%c\r!n\r%Q\r%c's real name: %Q"
+msgstr "%c\r!n\r%Q\r%c реальне ім'я: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1115
+#, fuzzy
+msgid "%c\r!n\r%Q\r%c was %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+msgstr "%c\r!n\r%Q\r%c був %c\r!n\r%Q\r! %Q@\r!h\r%Q\r%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1119
+msgid "%c\r!n\r%Q\r%c's real name was: %Q"
+msgstr "%c\r!n\r%Q\r%c було реальне ім'я: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1183
+msgid "%c\r!n\r%Q\r%c's channels: %Q"
+msgstr "%c\r!n\r%Q\r%c канали: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1220
+msgid "Received a broken RPL_WHOISIDLE, can't evaluate the idle time"
+msgstr "Отриманий битий RPL_WHOISIDLE, не можу визначити час простою"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1230
+msgid "%c\r!n\r%Q\r%c's idle time: %ud %uh %um %us"
+msgstr "%c\r!n\r%Q\r%c час простою: %u д %u год %u м %u з"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1240
+msgid "%c\r!n\r%Q\r%c's signon time: %Q"
+msgstr "%c\r!n\r%Q\r%c час авторизації: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1274
+msgid "%c\r!n\r%Q\r%c's server: \r!s\r%Q\r - %Q"
+msgstr "%c\r!n\r%Q\r%c сервер: \r!s\r%Q\r - %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1293
+msgid "%c\r!n\r%Q\r%c is authenticated as %Q"
+msgstr "%c\r!n\r%Q\r%c ідентифікований як: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1325
+msgid "%c\r!n\r%Q\r%c's info: %Q"
+msgstr "%c\r!n\r%Q\r%c інформація: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1372
+msgid "%c\r!n\r%Q\r%c WHOIS info from \r!s\r%Q\r"
+msgstr "%c\r!n\r%Q\r%c WHOIS інформація від \r!s\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1389
+msgid "%c\r!n\r%Q\r%c WHOWAS info from \r!s\r%Q\r"
+msgstr "%c\r!n\r%Q\r%c WHOWAS інформація від \r!s\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1457
+msgid "Can't evaluate creation time"
+msgstr "Не можливо визначити час створення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1465
+msgid "Channel was created at %Q"
+msgstr "Канал створений %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1470
+msgid "Channel \r!c\r%Q\r was created at %Q"
+msgstr "Канал \r!c\r%Q\r створений %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1511
+msgid "USERHOST info: %Q"
+msgstr "Інформація USERHOST: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1532
+msgid "Channel list begin: channel, users, topic"
+msgstr "Початок канального списку: канал, користувачі, тема"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1559
+msgid "List: %Q"
+msgstr "Список: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1573
+msgid "End of LIST"
+msgstr "Кінець LIST"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1597
+msgid "Link: %Q"
+msgstr "Посилання: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1612
+msgid "End of LINKS"
+msgstr "Кінець LINKS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1641
+msgid "[Leaving away status after %ud %uh %um %us]: %Q"
+msgstr "[Вихід зі статусу Відійшов після %u д %u год %u м %u з]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1645
+msgid "[Leaving away status]: %Q"
+msgstr "[Вихід зі статусу Відійшов]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1652
+msgid "Restoring pre-away nickname (%Q)"
+msgstr "Відновлення ніка (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1672
+msgid "[Entering away status]: %Q"
+msgstr "[Включення статусу Відійшов]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1690
+msgid "Setting away nickname (%Q)"
+msgstr "Установка ніка в режимі Відійшов (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1762
+#, c-format
+msgid "%c\r!s\r%s\r%c's server info: %s"
+msgstr "%c\r!s\r%s\r%c інформація про сервер: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1773
+#, c-format
+msgid "%c\r!s\r%s\r%c's administrator is %s"
+msgstr "%c\r!s\r%s\r%c адміністратор %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1784
+#, c-format
+msgid "%c\r!s\r%s\r%c's contact adress is %s"
+msgstr "%c\r!s\r%s\r%c контактна адреса %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1812
+msgid "\r!n\r%Q\r invited %Q into channel %Q"
+msgstr "\r!n\r%Q\r запрошує %Q на канал %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1834
+#, c-format
+msgid "%c\r!s\r%s\r%c's information:"
+msgstr "%c\r!s\r%s\r%c's інформація:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1844
+#, c-format
+msgid "End of %c\r!s\r%s\r%c's information"
+msgstr "Кінець %c\r!s\r%s\r%c's інформації"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1855
+msgid "%c\r!s\r%s\r%c's time is %Q"
+msgstr "%c\r!s\r%s\r%c's час %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1866
+msgid "%Q: no such server"
+msgstr "%Q: немає такого сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1877
+msgid "%Q: no such channel"
+msgstr "%Q: немає такого каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1891
+msgid "Cannot sent to channel: %Q"
+msgstr "Не можу відіслати дані на канал: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1894
+msgid "Cannot sent text to channel %Q: %Q"
+msgstr "Не можу відіслати дані на канал %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1909
+msgid "Cannot sent to channel"
+msgstr "Не можу відіслати дані на канал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1912
+msgid "Cannot sent text to channel %Q"
+msgstr "Не можу відіслати текст на канал %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1928
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1936
+msgid "Your encoding is now %Q"
+msgstr "Використовуване кодування %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1967
+msgid "%c\r!n\r%Q\r%c's codepage is %Q: %Q"
+msgstr "%c\r!n\r%Q\r%c використає кодування %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/sparser/kvi_sp_numeric.cpp:1991
+#, c-format
+msgid "Your user mode is %s"
+msgstr "Ваш користувальницький режим %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:158
+msgid "Failed to set the encoding to %Q: mapping not available."
+msgstr "Неможливо встановити кодування %Q: дані про це кодування не доступні"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:175
+msgid "Changed text encoding to %Q"
+msgstr "кодування тексту змінене на %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:503
+msgid "Connection to server lost"
+msgstr "З'єднання із сервером загублене"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:512
+msgid "Connection to server established"
+msgstr "З'єднання із сервером установлене"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:553
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:573
+msgid "[LINK WARNING]: Socket message truncated to 512 bytes."
+msgstr "[ПОПЕРЕДЖЕННЯ З'ЄДНАННЯ]: Повідомлення сокета обрізане до 512 байт."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:640
+msgid ""
+"The server seems to support the WATCH notify list method, will try to use it"
+msgstr ""
+"Сервер здається підтримує метод WATCH списку повідомлень, намагаюся це "
+"використати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:688
+msgid "Can't resolve local host address, using user supplied one (%Q)"
+msgstr ""
+"Не можу визначити локальну адресу, використаю тільки наданий користувачем (%"
+"Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:695
+msgid "Can't resolve local host address, using default 127.0.0.1"
+msgstr "Не можу визначити локальну адресу, використаю 127.0.0.1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:701
+msgid "Local host address is %Q"
+msgstr "Локальна адреса %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:749
+msgid "The server seems to have changed the idea about the local hostname"
+msgstr "Сервер здається хоче змінити хостмаску"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:750
+msgid ""
+"You're probably using a broken bouncer or maybe something weird is happening "
+"on the IRC server"
+msgstr ""
+"Ви ймовірно використаєте баунсер або на IRC сервері відбувається щось дивне"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:776
+msgid ""
+"Here goes your \"broken bouncer hack\": The server has changed the hostname "
+"but I'll ignore the IP address change"
+msgstr ""
+"Тут іде ваш \"broken bouncer hack\": Сервер змінив ім'я хоста але я "
+"проігнорував зміну IP адреси"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:791
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:801
+msgid "The local IP address as seen by the IRC server is %Q"
+msgstr "Локальний IP адреса видимий IRC сервером %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:815
+msgid "Can't start the DNS slave thread"
+msgstr "Не можу запустити вторинну нитку DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:816
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:846
+msgid "Unable to resolve the local hostname as seen by the IRC server: %Q"
+msgstr "Не можу визначити, який IP відповідає мені по даним IRC сервера: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:822
+msgid "Looking up the local hostname as seen by the IRC server (%Q)"
+msgstr "Визначення локальної адреси через IRC сервер (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:843
+msgid ""
+"Unable to resolve the local hostname as seen by the IRC server: %Q, using "
+"previously resolved %Q"
+msgstr ""
+"Не можу визначити, який мій IP бачить IRC сервер: %Q, використаю певний "
+"раніше %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:850
+msgid "Local hostname as seen by the IRC server resolved to %Q"
+msgstr "IRC сервер бачить нас як %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:868
+msgid "Using server specific username (%Q)"
+msgstr "Використовуване специфічне ім'я для сервера (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:873
+msgid "Using network specific username (%Q)"
+msgstr "Використовуване специфічне ім'я для мережі (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:892
+#, fuzzy
+msgid "Using reconnect specific nickname (%Q)"
+msgstr "Використовуваний специфічний Нік для мережі (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:898
+msgid "Using server specific nickname (%Q)"
+msgstr "Використовуваний специфічний Нік для сервера (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:905
+msgid "Using network specific nickname (%Q)"
+msgstr "Використовуваний специфічний Нік для мережі (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:922
+msgid "Using server specific real name (%Q)"
+msgstr "Використовуване специфічне реальне ім'я для сервера (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:929
+msgid "Using network specific real name (%Q)"
+msgstr "Використовуване специфічне реальне ім'я для мережі (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:946
+#, fuzzy
+msgid "Logging in as %Q!%Q :%Q"
+msgstr "Увійшов як %Q! %Q :%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:962
+#, c-format
+msgid "Sending %s as password"
+msgstr "Відправлення %s як пароля"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1033
+msgid "Executing scheduled network specific \"on connect\" commands"
+msgstr "Виконання запланованої \"при з'єднанні\" з мережею команди"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1042
+msgid "Executing scheduled server specific \"on connect\" commands"
+msgstr "Виконання запланованої \"при з'єднанні\" із сервером команди"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1051
+#, fuzzy
+msgid "Executing scheduled identity specific \"on connect\" commands"
+msgstr "Виконання запланованої \"при з'єднанні\" з мережею команди"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1101
+#, c-format
+msgid "The server refused the suggested nickname (%s) and named you %s instead"
+msgstr "Сервер відхилив запропонований вами Нік (%s) і назвав вас %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1113
+msgid "Login operations complete, happy ircing!"
+msgstr "Підключення пройшло успішно, ласкаво просимо в IRC!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1123
+msgid "Executing scheduled network specific \"on login\" commands"
+msgstr "Запуск команди \"при вході\" у мережу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1132
+msgid "Executing scheduled server specific \"on login\" commands"
+msgstr "Запуск команди \"при вході\" на сервер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1141
+#, fuzzy
+msgid "Executing scheduled identity specific \"on login\" commands"
+msgstr "Запуск команди \"при вході\" у мережу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1153
+msgid "Setting configured user mode"
+msgstr "Настроювання конфігурації користувальницького режиму"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1210
+msgid "Auto-joining network specific channels"
+msgstr "Автовхід на специфічні для мережі канали"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1244
+msgid "Auto-joining server specific channels"
+msgstr "Автовхід на специфічні для сервера канали"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnection.cpp:1341
+msgid "Updating away state for channel %Q"
+msgstr "Обновляю away списки для каналу %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_customtoolbardescriptor.cpp:230
+msgid "Backward compatibility action for toolbar.define"
+msgstr "Дія зворотної сумісності для toolbar.define"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:790
+msgid "Installation problems ?"
+msgstr "Проблеми з інсталяцією?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:791
+msgid ""
+"<b>Ooops...</b><br><br><b>There are some reasons that make me think that "
+"your KVIrc installation is incomplete.</b><br><br>I might be wrong, but you "
+"seem to miss some of the features that the default KVIrc script provides."
+"This may happen because you have upgraded to an unstable cvs version, "
+"because you have accidentally deleted or damaged your configuration files, "
+"because you have installed an incomplete script or because you have hit a "
+"bug in KVIrc.<br><br>I can repeat the installation of the default script in "
+"order to restore the missing features.<br><b>Do you want the default script "
+"to be restored ?</b><br><br><font size=\"-1\">Hint: If you're a scripter and "
+"have intentionally removed some of the scripting features then you may "
+"safely click on \"No and Don't Ask Me Again\", otherwise it might be a good "
+"idea to click \"Yes\". If you still want to choose \"No\" you can always "
+"restore the default script by choosing the appropriate entry from the "
+"\"Scripting\" menu.</font>"
+msgstr ""
+"<b>Упс...</b><br><br><b>Є деякі причини думати, що ваша інсталяція KVIrc не "
+"повна</b><br><br>Я можу помилятися, але у вас здається відсутні деякі "
+"можливості які надаються сценаріями KVIrc за замовчуванням. Це може "
+"відбутися, якщо ви обновили нестабільну cvs-версію, якщо ви випадково "
+"видалили або змінили ваші конфігураційні файли, якщо ви не повністю "
+"встановили сценарії або якщо ви знайшли баг В KVIrc.<br><br>Я можу повторити "
+"установку сценаріїв за замовчуванням, щоб відновити загублені "
+"можливості<br><b>Ви хочете відновити сценарії за замовчуванням ?</"
+"b><br><br><font size=\"-1\">Рада: якщо ви пишіть сценарії й навмисно "
+"видалили деякі сценарії, ви можете клацнути на \"Немає й більше мене не "
+"запитувати\", у противному випадку краще сказати \"Так\". Якщо ви всі таки "
+"хочете відповісти \"Немає\" ви завжди зможете відновити сценарії за "
+"замовчуванням вибравши відповідний пункт у меню \"Сценарії\".</font>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:805
+msgid "No and Don't Ask Me Again"
+msgstr "Немає й більше мене не запитувати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:828
+msgid "Restore Default Script - KVIrc"
+msgstr "Відновлення сценаріїв за замовчуванням - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:829
+msgid ""
+"You are about to restore the default script.<br>This will erase any script "
+"changes you have made.<br>Do you wish to proceed?"
+msgstr ""
+"Ви збираєтеся відновити сценарії по умовчанню<br>Це приведе до видаленню "
+"внесених раніше змін<br>Хочете продовжити?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:872
+#, c-format
+msgid "Remote command received (%s ...)"
+msgstr "Дистанційна команда одержала (%s ...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1033
+msgid "File download failed"
+msgstr "Помилка завантаження файлу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1035
+msgid "File download from %1 failed"
+msgstr "Скачування файлу від %1 завершилося помилкою"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1044
+msgid "File download successfully complete"
+msgstr "Скачування файлу успішно завершене"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1046
+msgid "File download from %1 successfully complete"
+msgstr "Скачування файлу від %1 успішно завершено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:1066
+#, fuzzy
+msgid "Avatar download failed for %Q!%Q@%Q and url %Q: %Q"
+msgstr "Помилка завантаження аватара для %Q! %Q@%Q і url %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2014
+#, c-format
+msgid "The commandline for media type '%s' seems to be broken"
+msgstr "Команда для медіа типу '%s' бита"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2018
+#, c-format
+msgid "Media type of file %s matched to '%s' but no commandline specified"
+msgstr "Медіа тип для файлу %s прив'язаний до %s але немає команди"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app.cpp:2023
+#, c-format
+msgid "No idea on how to play file %s (no media type match)"
+msgstr "Неможливо відтворити файл %s (немає відповідного медіа типу)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:39
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:48
+#, c-format
+msgid "[SSL]: %c%s"
+msgstr "[SSL]: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:40
+#, c-format
+msgid "[SSL]: Cipher: %c%s"
+msgstr "[SSL]: Шифр: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:41
+#, c-format
+msgid "[SSL]: Version: %c%s"
+msgstr "[SSL]: Версія: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:42
+#, c-format
+msgid "[SSL]: Bits: %c%d (%d used)"
+msgstr "[SSL]: Біти: %c%d (%d використається)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:49
+#, c-format
+msgid "[SSL]: Version: %c%d"
+msgstr "[SSL]: Версія: %c%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:50
+#, c-format
+msgid "[SSL]: Serial number: %c%d"
+msgstr "[SSL]: Серійний номер: %c%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:51
+msgid "[SSL]: Subject:"
+msgstr "[SSL]: Тема:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:59
+#, c-format
+msgid "[SSL]: Common name: %c%s"
+msgstr "[SSL]: Загальне ім'я: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:60
+#, c-format
+msgid "[SSL]: Organization: %c%s"
+msgstr "[SSL]: Організація: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:61
+#, c-format
+msgid "[SSL]: Organizational unit: %c%s"
+msgstr "[SSL]: Підрозділ: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:62
+#, c-format
+msgid "[SSL]: Country: %c%s"
+msgstr "[SSL]: Країна: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:63
+#, c-format
+msgid "[SSL]: State or province: %c%s"
+msgstr "[SSL]: Штат або провінція: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:64
+#, c-format
+msgid "[SSL]: Locality: %c%s"
+msgstr "[SSL]: Місцезнаходження: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:58
+msgid "[SSL]: Issuer:"
+msgstr "[SSL]: Вихідне:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:65
+#, c-format
+msgid "[SSL]: Public key: %c%s (%d bits)"
+msgstr "[SSL]: Загальнодоступний ключ: %c%s (%d біт)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:66
+#, c-format
+msgid "[SSL]: Signature type: %c%s"
+msgstr "[SSL]: Тип сигнатури: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:73
+#, c-format
+msgid "[SSL]: Signature contents: %c%s"
+msgstr "[SSL]: Контекст сигнатури: %c%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:82
+msgid "Peer X509 certificate"
+msgstr "Сертифікат ідентичний X509"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:85
+msgid "[SSL]: The peer didn't provide a certificate"
+msgstr "[SSL]: Співрозмовник не надав сертифікат"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1219
+msgid "Current transmission cipher"
+msgstr "Поточний шифр передачі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:92
+msgid "[SSL]: Can't find out the current cipher info"
+msgstr "[SSL]: Не можу знайти інформацію про поточний шифр"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:113
+#, c-format
+msgid "[%s]: [SSL]: Using certificate file %s"
+msgstr "[%s]: [SSL]: Використання файлу сертифіката %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:116
+#, fuzzy, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the certificate file %s"
+msgstr ""
+"[ %s]: [ПОМИЛКА SSL]: Помилка файлового I/O при спробі використанні файлу "
+"сертифіката %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:146
+#, c-format
+msgid "[%s]: [SSL ERROR]: %s"
+msgstr "[%s]: [ПОМИЛКА SSL]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:136
+#, c-format
+msgid "[%s]: [SSL]: Using private key file %s"
+msgstr "[%s]: [SSL]: Використається файл приватного ключа %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_sslmaster.cpp:139
+#, fuzzy, c-format
+msgid ""
+"[%s]: [SSL ERROR]: File I/O error while trying to use the private key file %s"
+msgstr ""
+"[ %s]: [ПОМИЛКА SSL]: Помилка файлового I/O при спробі використанні файлу "
+"приватного ключа %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:375
+msgid "Reconnect attempt aborted"
+msgstr "Спроба перепідключення перервана"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:443
+msgid ""
+"This is the first connection in this IRC context: using the global server "
+"setting"
+msgstr ""
+"Це перше підключення в даному IRC контексті: використаю глобальні "
+"настроювання серверів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:483
+msgid ""
+"No servers available. Check the options dialog or use the /SERVER command"
+msgstr ""
+"Немає доступних серверів. Перевірте настроювання або використайте команду /"
+"SERVER"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:491
+msgid ""
+"Ooops.. you've hit a bug in the servers database... I have found a server "
+"but not a network..."
+msgstr ""
+"Упс.. Ви припустилися помилки в базі даних серверів... Я знайшов сервер, але "
+"не мережа..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:504
+msgid "No proxy hosts available, resuming direct connection"
+msgstr "Немає доступних проксі, використається пряме підключення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:582
+#, c-format
+msgid "Connection attempt failed [%s]"
+msgstr "Помилка при спробі з'єднання [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:600
+#, c-format
+msgid "Will attempt to reconnect in %d seconds"
+msgstr "Спроба повторного підключення через %d секунд"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:604
+#, c-format
+msgid "%d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:606
+#, c-format
+msgid "%d of %d"
+msgstr "%d з %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:633
+#, c-format
+msgid "Maximum number of reconnect attempts reached (%d): giving up"
+msgstr ""
+"Досягнуте максимальна кількість спроб перепідключення (%d): зупиняємося"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:647
+msgid ""
+"The connection attempt failed while using a cached IP address for the "
+"current server"
+msgstr ""
+"Помилка при спробі підключення з використанням кеша IP адрес поточного "
+"сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:648
+msgid "The problem *might* be caused by an updated DNS entry"
+msgstr "Проблема *можливо* викликана відновленням DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:649
+msgid "Try reconnecting with caching disabled"
+msgstr "Спробуйте підключитися з виключеним кешированням"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:673
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:382
+msgid "%Q established [%s (%s:%u)]"
+msgstr "%Q установлено [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Secure connection"
+msgstr "Безпечне підключення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:674
+msgid "Connection"
+msgstr "З'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:779
+#, c-format
+msgid "Connection terminated [%s (%s:%u)]"
+msgstr "З'єднання розірване [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:791
+msgid "The connection terminated unexpectedly. Trying to reconnect..."
+msgstr "З'єднання зненацька розірвалося. Намагаюся підключитися повторно..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irccontext.cpp:874
+msgid "Sent QUIT, waiting for the server to close the connection..."
+msgstr "Відправлений QUIT, чекаю коли сервер закриє з'єднання.."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:685
+msgid "Normal text"
+msgstr "Нормальний текст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:686
+msgid "Selection"
+msgstr "Вибір"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:687
+msgid "Highlighted text"
+msgstr "Підсвічування тексту"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:688
+msgid "URL foreground"
+msgstr "Початковий URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:689
+msgid "Link overlay foreground"
+msgstr "Початкове посилання оверлея"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:690
+msgid "Parser error"
+msgstr "Помилка синтаксичного аналізатора"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:691
+msgid "Parser warning"
+msgstr "Попередження синтаксичного аналізатора"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:692
+msgid "Host lookup result"
+msgstr "Результат пошуку адреси"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:693
+msgid "Socket message"
+msgstr "Повідомлення сокета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:694
+msgid "Socket warning"
+msgstr "Попередження сокета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:695
+msgid "Socket error"
+msgstr "Помилка сокета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:696
+msgid "System error"
+msgstr "Системна помилка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:697
+msgid "Raw data to server"
+msgstr "Вихідні дані сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:698
+msgid "Connection status"
+msgstr "Статус з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:699
+msgid "System warning"
+msgstr "Системне попередження"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:700
+msgid "System message"
+msgstr "Системне повідомлення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:701
+msgid "Unhandled server reply"
+msgstr "Відповідь сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:702
+msgid "Server information"
+msgstr "Інформація сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:703
+msgid "Server Message of the Day"
+msgstr "Повідомлення дня сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:704
+msgid "Server ping"
+msgstr "Пінг сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:705
+msgid "Join message"
+msgstr "Повідомлення про вхід"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:706
+msgid "Part message"
+msgstr "Повідомлення про покидання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:707
+msgid "Unrecognized/broken message"
+msgstr "Непізнане/бите повідомлення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:708
+msgid "Topic message"
+msgstr "Тема"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:709
+msgid "Own private message"
+msgstr "Приватне повідомлення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:710
+msgid "Channel private message"
+msgstr "Повідомлення приватного каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:711
+msgid "Query private message"
+msgstr "Повідомлення приватного чата"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:712
+msgid "CTCP reply"
+msgstr "Відповідь CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:713
+msgid "CTCP request replied"
+msgstr "Відповідь на запит CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:714
+msgid "CTCP request ignored"
+msgstr "Запит CTCP зігнорований"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:715
+msgid "CTCP request flood warning"
+msgstr "Попередження флуда запитів CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:716
+msgid "CTCP request unknown"
+msgstr "Невідомий запит CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:717
+msgid "User action"
+msgstr "Дія користувача"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:718
+msgid "Avatar change"
+msgstr "Зміна аватара"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:719
+msgid "Quit message"
+msgstr "Повідомлення про вихід"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:720
+msgid "Split message"
+msgstr "Розщеплене повідомлення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:721
+msgid "Quit on netsplit message"
+msgstr "Повідомлення про вихід через втрату мережі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:722
+msgid "Nick changes"
+msgstr "Нік змінений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:723
+msgid "+o mode change"
+msgstr "зміна режиму +o"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:724
+msgid "-o mode change"
+msgstr "зміна режиму -o"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:725
+msgid "+v mode change"
+msgstr "зміна режиму +v"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:726
+msgid "-v mode change"
+msgstr "зміна режиму -v"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:727
+msgid "Multiple user mode change"
+msgstr "Зміна режиму декількох користувачів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:728
+msgid "Channel key change"
+msgstr "Зміна ключа каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:729
+msgid "Channel limit change"
+msgstr "Зміна ліміту каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:730
+msgid "+b mode change"
+msgstr "зміна режиму +b"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:731
+msgid "-b mode change"
+msgstr "зміна режиму -b"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:732
+msgid "+e mode change"
+msgstr "зміна режиму +e"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:733
+msgid "-e mode change"
+msgstr "зміна режиму -e"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:734
+msgid "+I mode change"
+msgstr "зміна режиму +I"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:735
+msgid "-I mode change"
+msgstr "зміна режиму -I"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:736
+msgid "Multiple channel mode change"
+msgstr "Зміна многоканального режиму"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:737
+msgid "Who reply"
+msgstr "Хто відповів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:738
+msgid "DCC request"
+msgstr "Запит DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:739
+msgid "DCC message"
+msgstr "Повідомлення DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:740
+msgid "DCC error"
+msgstr "Помилка DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:741
+msgid "Nickname problem"
+msgstr "Проблема з ніком"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:742
+msgid "Whois user reply"
+msgstr "Відповідь користувача Whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:743
+msgid "Whois channels reply"
+msgstr "Відповідь каналу Whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:744
+msgid "Whois idle reply"
+msgstr "Whois рядок про бездіяльність"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:745
+msgid "Whois server reply"
+msgstr "Відповідь півночі Whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:746
+msgid "Whois other reply"
+msgstr "Інша відповідь Whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:747
+msgid "Channel creation time reply"
+msgstr "Відповідь про час створення каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:748
+msgid "Notify list joins"
+msgstr "Вхід у мережу користувача зі списку повідомлень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:749
+msgid "Notify list leaves"
+msgstr "Список повідомлень покинуть"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:750
+msgid "Own encrypted private message"
+msgstr "Приватне повідомлення із власним кріптовання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:751
+msgid "Channel encrypted private message"
+msgstr "Приватне повідомлення із кріптовання каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:752
+msgid "Query encrypted private message"
+msgstr "Закодоване повідомлення приватного чата"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:753
+msgid "DCC chat message"
+msgstr "Повідомлення чата DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:754
+msgid "Encrypted DCC chat message"
+msgstr "Кріптоване повідомлення чата DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:755
+msgid "Login operations completed"
+msgstr "Дії при вході завершені"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:756
+msgid "Kick action"
+msgstr "Дія кікнуть"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:757
+msgid "Links reply"
+msgstr "Відповідь посилань"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:758
+msgid "Spam report"
+msgstr "Спам звіт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:759
+msgid "ICQ message"
+msgstr "Повідомлення ICQ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:760
+msgid "ICQ user-message"
+msgstr "Повідомлення користувача ICQ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:761
+msgid "Outgoing ICQ user-message"
+msgstr "Повідомлення користувача ICQ про вихід"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:762
+msgid "Channel notice"
+msgstr "Повідомлення каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:763
+msgid "Encrypted channel notice"
+msgstr "Криптоване повідомлення каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:764
+msgid "Query notice"
+msgstr "Повідомлення привата"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:765
+msgid "Encrypted query notice"
+msgstr "Криптоване повідомлення привата"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:766
+msgid "Server notice"
+msgstr "Повідомлення сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:767
+msgid "Halfop mode change"
+msgstr "Зміна режиму стат-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:768
+msgid "Unknown CTCP reply"
+msgstr "Невідома відповідь CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:769
+msgid "NickServ message"
+msgstr "Повідомлення NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:770
+msgid "ChanServ message"
+msgstr "Повідомлення ChanServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:771
+msgid "Away message"
+msgstr "Повідомлення відійшов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:772
+msgid "Ident message"
+msgstr "Повідомлення ідентифікації"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:773
+msgid "Channel list message"
+msgstr "Повідомлення списку каналів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:774
+msgid "Half-deop mode change"
+msgstr "Зміна режиму не стат-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:775
+msgid "Invite message"
+msgstr "Повідомлення про запрошення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:776
+msgid "Multimedia message"
+msgstr "Мультімедійное повідомлення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:777
+msgid "Query trace message"
+msgstr "Повідомлення про запит трасування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:778
+msgid "Wallops message"
+msgstr "Повідомлення Wallops"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:779
+msgid "Join error message"
+msgstr "Повідомлення про помилку входу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:780
+msgid "Broadcast private message"
+msgstr "Приватне широкомовне повідомлення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:781
+msgid "Broadcast notice"
+msgstr "Широкомовне повідомлення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:782
+msgid "Am kicked"
+msgstr "Кікнут"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:783
+msgid "Am op'd"
+msgstr "Оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:784
+msgid "Am voiced"
+msgstr "Мені даний войс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:785
+msgid "Am deop'd"
+msgstr "Снять оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:786
+msgid "Am devoiced"
+msgstr "Снять войс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:787
+msgid "Am halfop'd"
+msgstr "Стат-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:788
+msgid "Am de-halfop'd"
+msgstr "Снять стат-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:789
+msgid "Ban matching my mask"
+msgstr "Бан по моїй масці"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:790
+msgid "Unban matching my mask"
+msgstr "Снять бан по моїй масці"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:791
+msgid "Ban exception matching my mask"
+msgstr "Виключення з бана відповідає моїй масці"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:792
+msgid "Ban unexception matching my mask"
+msgstr "Зняте виключення з відповідає моїй масці"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:793
+msgid "Invite exception matching my mask"
+msgstr "Виключення із запрошення відповідає моїй масці"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:794
+msgid "Invite unexception matching my mask"
+msgstr "Зняте виключення із запрошення відповідає моїй масці"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:795
+msgid "Ignored user message"
+msgstr "Повідомлення ігнорованого користувача"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:796
+msgid "Server statistics"
+msgstr "Статистика сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:797
+msgid "SSL message"
+msgstr "Повідомлення SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:108
+msgid "Search"
+msgstr "Пошук"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:799
+msgid "Generic success"
+msgstr "Загальний успіх"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:800
+msgid "Generic status"
+msgstr "Загальний статус"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:801
+msgid "Generic verbose message"
+msgstr "Загальне розширене повідомлення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:802
+msgid "Generic warning"
+msgstr "Загальне попередження"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:803
+msgid "Generic error"
+msgstr "Загальна помилка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:804
+msgid "Generic critical error"
+msgstr "Загальна критична помилка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:805
+msgid "Chan admin status set"
+msgstr "Включення статусу адміністратора каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:806
+msgid "Chan admin status unset"
+msgstr "Вимикання статусу адміністратора каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:807
+msgid "Own chan admin status set"
+msgstr "Включення статусу власніка каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:808
+msgid "Own chan admin status unset"
+msgstr "Вимикання статусу власніка каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:809
+msgid "Userop mode change"
+msgstr "Зміна режиму користувач-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:810
+msgid "User-deop mode change"
+msgstr "Зміна режиму не користувач-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:811
+msgid "Am userop'd"
+msgstr "Користувач-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:812
+msgid "Am de-userop'd"
+msgstr "Не користувач-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:813
+msgid "Verbose/Debug"
+msgstr "Багатослівний/Налагодження"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:814
+msgid "Chan owner status set"
+msgstr "Включення статусу власніка каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:815
+msgid "Chan owner status unset"
+msgstr "Вимикання статусу власніка каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:816
+msgid "Own chan owner status set"
+msgstr "Включення статусу власніка каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:817
+msgid "Own chan owner status unset"
+msgstr "Вимикання статусу власніка каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:818
+msgid "Server error"
+msgstr "Помилка сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:22
+msgid "Help"
+msgstr "&Довідка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:820
+msgid "Text Encoding Server message"
+msgstr "Повідомлення сервера про кодування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:826
+#, fuzzy
+msgid "BitTorrent message"
+msgstr "Повідомлення ідентифікації"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:970
+msgid "Missing absolute directory for the theme information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:978
+msgid "Failed to create the theme directory"
+msgstr "Не можу створити папку для зберігання файлів теми"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1061
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1096
+#, fuzzy
+msgid "Failed to save one of the theme images"
+msgstr "Помилка завантаження обраної картинки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1074
+#, fuzzy
+msgid "Failed to create the theme subdirectory"
+msgstr "Не можу створити папку для зберігання файлів теми"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1213
+msgid "Boolean options (1/0)"
+msgstr "Булева опція (1/0)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1214
+msgid "Rectangle options (x,y,width,height)"
+msgstr "Опція прямокутник (x,y,ширина,висота)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1215
+msgid "String options (string value)"
+msgstr "Строкова опція (значення string)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1216
+msgid "Color options (#RRGGBB)"
+msgstr "Опція кольорів (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1217
+msgid "Mirccolor options (#RRGGBB)"
+msgstr "Опція кольорів IRC (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1218
+msgid "Irc context color options (#RRGGBB)"
+msgstr "Опція контекстних кольорів IRC (#RRGGBB)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1219
+msgid "Pixmap options (image path)"
+msgstr "Опція картинка (шлях до зображення)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1220
+msgid "Unsigned integer options (unsigned integer constant)"
+msgstr "Опція беззнакове ціле (unsigned integer constant)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1221
+msgid "Font options (family,pointsize,style,charset,weight,flags (biusf))"
+msgstr "Опція шрифт (family,pointsize,style,charset,weight,flags (biusf))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1222
+msgid "Message color options (image_id,foreground,background,logFlag (0/1))"
+msgstr ""
+"Опція кольорів повідомлень (image_id,foreground,background,logFlag (0/1))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_options.cpp:1223
+msgid "String list options (comma separated list of strings)"
+msgstr "Опція списку рядків (розділені комами рядка)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC"
+msgstr "IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:65
+msgid "IRC Context related actions"
+msgstr "Дії пов'язані з IRC контекстом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic"
+msgstr "Загальні"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:66
+msgid "Generic actions"
+msgstr "Загальні дії"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Settings"
+msgstr "Настроювання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:67
+msgid "Actions related to settings"
+msgstr "Дії, пов'язані з настроюваннями"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:30
+msgid "Scripting"
+msgstr "Сценарії"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:68
+msgid "Scripting related actions"
+msgstr "Дії, зв'язані зі сценаріями"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "GUI"
+msgstr "Інтерфейс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:69
+msgid "Actions related to the Graphic User Interface"
+msgstr "Дії, пов'язані із графічним інтерфейсом користувача"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:77
+msgid "Channel"
+msgstr "Канал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:70
+msgid "IRC Channel related actions"
+msgstr "Дії пов'язані з IRC каналом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Tools"
+msgstr "Інструменти"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_actionmanager.cpp:71
+msgid "Actions that will appear in the \"Tools\" menu"
+msgstr "Дії, що будуть представлені в меню \"Інструменти\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:157
+msgid "Sending out PING based lag probe"
+msgstr "Відсилаю пінг для визначення затримки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:167
+msgid "Sending out CTCP based lag probe"
+msgstr "Відсилаю CTCP для визначення затримки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:188
+#, c-format
+msgid "Registered lag check with reliability %u (%s)"
+msgstr "Визначена гарантована затримка %u (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:220
+#, c-format
+msgid "Lag check completed (%s)"
+msgstr "Затримка визначена (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_lagmeter.cpp:259
+#, c-format
+msgid "Lag check aborted (%s)"
+msgstr "Визначення затримки перерване (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:143
+msgid "Hostname resolution aborted"
+msgstr "Визначення адреси перерване"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:156
+msgid "Attempting %Q to %Q (%Q) on port %u"
+msgstr "Спроба %Q до %Q (%Q) через порт %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "secure connection"
+msgstr "безпечне підключення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:157
+msgid "connection"
+msgstr "підключення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:165
+#, c-format
+msgid "Attempting to 'bounce' on proxy %s on port %u (protocol %s)"
+msgstr "Спроба використання проксі %s на порту %u (протокол %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:194
+#, c-format
+msgid "Using cached proxy IP address (%s)"
+msgstr "Використається кеширований IP адреса проксі (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:237
+msgid "Unable to look up the IRC proxy hostname: Can't start the DNS slave"
+msgstr "Не можу знайти ім'я IRC проксі: Не запускається вторинний DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:265
+msgid "Resuming direct server connection"
+msgstr "Пряме підключення до сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:248
+#, c-format
+msgid "Looking up the proxy hostname (%s)..."
+msgstr "Пошук проксі (%s)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:261
+msgid "Can't find the proxy IP address: %Q"
+msgstr "Не знайдений IP адреса проксі: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:271
+#, fuzzy
+msgid "Proxy hostname resolved to %Q"
+msgstr "Знайдений проксі %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:284
+#, fuzzy
+msgid "Proxy %Q has a nickname: %Q"
+msgstr "Проксі %s має Нік: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:322
+#, c-format
+msgid "Using cached server IP address (%s)"
+msgstr "Використається кеширована адреса сервера (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:354
+msgid "Unable to look up the server hostname: Can't start the DNS slave"
+msgstr "Не можу знайти ім'я сервера: Не запускається вторинний DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:359
+#, c-format
+msgid "Looking up the server hostname (%s)..."
+msgstr "Пошук сервера (%s)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:373
+msgid "Can't find the server IP address: %Q"
+msgstr "Не знайдений IP адреса сервера: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:380
+#, fuzzy
+msgid "If this server is an IPv6 one, try /server -i %Q"
+msgstr "Якщо це IPv6 сервер, використайте /server -i %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:390
+#, fuzzy
+msgid "Server hostname resolved to %Q"
+msgstr "Адреса сервера %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:400
+#, fuzzy
+msgid "Real hostname for %Q is %Q"
+msgstr "Реальне ім'я хоста %s - %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:414
+#, fuzzy
+msgid "Server %Q has a nickname: %Q"
+msgstr "Сервер %s має Нік: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:468
+msgid "The specified bind address (%Q) is not valid"
+msgstr "Сполучна адреса (%Q) не дійсний"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:473
+msgid ""
+"The specified bind address (%Q) is not valid (the interface it refers to "
+"might be down)"
+msgstr "Сполучна адреса (%Q) не дійсний (можливо його інтерфейс виключений)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:493
+#, c-format
+msgid "The system-wide IPv6 bind address (%s) is not valid"
+msgstr "IPv6 адреса (%s) не дійсний"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:500
+#, c-format
+msgid ""
+"The system-wide IPv6 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr "IPv6 адреса (%s) не дійсний (можливо його інтерфейс виключений)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:522
+#, c-format
+msgid "The system-wide IPv4 bind address (%s) is not valid"
+msgstr "IPv4 адреса (%s) не дійсний"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp:529
+#, c-format
+msgid ""
+"The system-wide IPv4 bind address (%s) is not valid (the interface it refers "
+"to might be down)"
+msgstr "IPv6 адреса (%s) не дійсний (можливо його інтерфейс виключений)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:230
+msgid "Channel operators"
+msgstr "Оператори каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:231
+msgid "Voiced users"
+msgstr "Войси"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:232
+msgid "Half-operators"
+msgstr "Стат-оператори"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:233
+msgid "Ban masks"
+msgstr "Маска бана"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:234
+msgid "Color free (no ANSI colors)"
+msgstr "Вільні кольори (без квітів ANSI)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:235
+msgid "Ban exception masks"
+msgstr "Маски виключень із банів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:236
+msgid "Invite exception masks or forbid /INVITE"
+msgstr "Маски виключень із запрошень або заборона /INVITE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:237
+msgid "Secret"
+msgstr "Секретний"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:238
+msgid "Private"
+msgstr "Приватний"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:239
+msgid "Topic change restricted"
+msgstr "Обмеження зміни теми"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:240
+msgid "Invite only"
+msgstr "Тільки за запрошенням"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:241
+msgid "No external messages"
+msgstr "Немає зовнішніх повідомлень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:242
+msgid "Anonymous or protected user"
+msgstr "Анонімний або захищений користувач"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:243
+msgid "Quiet or channel owner"
+msgstr "Тихий або власник каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:244
+msgid "Limited number of users"
+msgstr "Кількість користувачів обмежена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:245
+msgid "Key"
+msgstr "Ключ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:246
+msgid "Moderated"
+msgstr "Модеруємий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:247
+msgid "Registered"
+msgstr "Зареєстрований"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:248
+msgid "Censor swear words"
+msgstr "Слова піддаються цензурі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:249
+msgid "Impossible to speak and change nick if not authenticated with NickServ"
+msgstr "Неможливо говорити й міняти Нік якщо не ідентифікований на NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:250
+msgid "Impossible to change nick if not authenticated with NickServ"
+msgstr "Неможливо перемінити Нік якщо не ідентифікований на NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:251
+msgid "Only registered nicks can join"
+msgstr "Для входу потрібно зареєструвати Нік"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:252
+msgid "No kicks able (unless U-Line)"
+msgstr "Не можна кікнуть (за винятком U-Line)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:253
+msgid "IRC-Op only channel"
+msgstr "Канал тільки для операторів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:254
+msgid "Server/Network/Tech Admin only channel"
+msgstr "Канал тільки для серверних/мережних/технічних адміністраторів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:255
+msgid "Forbid /KNOCK"
+msgstr "Заборона /KNOCK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:256
+msgid "Strip colors"
+msgstr "Вирізати кольори"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:257
+msgid "Redirect on channel full"
+msgstr "Переспрямовано на повний канал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:258
+msgid "Forbid channel CTCPs"
+msgstr "CTCP заборонені на каналі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:259
+msgid "User-operators OR Auditorium: /NAMES and /WHO show only ops"
+msgstr "Операторам або аудиторам: /NAMES і /WHO показується тільки опам"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:260
+msgid "Only 7-bit letters in nicknames allowed"
+msgstr "Тільки 7-ми бітні букви в ніках можуть бути використані"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:261
+msgid "Impossible to use both 7-bit and 8-bit letters in nicknames"
+msgstr "Неможливо використати одночасно 7-ми й 8-ми бітні символи в ніках"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:270
+msgid "o: IRC operator (OPER)"
+msgstr "o: Оператор IRC (OPER)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:271
+msgid "O: Local IRC operator (LOCOP)"
+msgstr "O: Локальний оператор IRC (LOCOP)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:272
+msgid "i: Invisible"
+msgstr "i: Невидимий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:273
+msgid "w: Recipient for WALLOPS messages"
+msgstr "w: Одержувач повідомлення WALLOPS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:274
+msgid ""
+"r: User with restricted connection (or recipient for messages about rejected "
+"bots)"
+msgstr ""
+"r: Користувач обмежений у з'єднанні (або одержувач повідомлень відкидає "
+"ботів)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:275
+msgid "s: Recipient for server notices"
+msgstr "s: Одержувач повідомлень сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:276
+msgid "z: Recipient for oper wallop messages"
+msgstr "z: Одержувач повідомлень wallop"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:277
+msgid "c: Recipient for cconn messages"
+msgstr "c: Одержувач повідомлень cconn"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:278
+msgid "k: Recipient for server kill messages"
+msgstr "k: Одержати відомості про киллах"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:279
+msgid "f: Recipient for full server notices"
+msgstr "f: Одержувати всі повідомлення сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:280
+msgid "y: Spy :)"
+msgstr "y: Шпигун :)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:281
+msgid "d: Obscure 'DEBUG' flag"
+msgstr "d: можливо 'DEBUG' прапор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp:282
+msgid "n: Recipient for nick changes"
+msgstr "n: Одержувати відомості про зміни ніка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:100
+#, fuzzy
+msgid "Ops... for some reason the link filter object has been destroyed"
+msgstr "Упс... з якоїсь причини зв'язаний об'єкт був знищений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:138
+msgid "Using filtered IRC protocol: Link filter is \"%Q\""
+msgstr "Використання фільтра протоколів IRC: \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:143
+msgid "Failed to set up the link filter \"%Q\", will try with plain IRC"
+msgstr "Не можу підключити фільтр \"%Q\", намагаюся спробувати із простим IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:202
+msgid "Failed to start the connection: %Q"
+msgstr "Не можу підключитися: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:368
+msgid "Contacting %Q %s (%s) on port %u"
+msgstr "Підключення до %Q %s (%s) через порт %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "proxy host"
+msgstr "адреса проксі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:369
+msgid "IRC server"
+msgstr "IRC серверу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:375
+#, c-format
+msgid "Low-level transport connection established [%s (%s:%u)]"
+msgstr "Установлена низькорівневий зв'язок [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:379
+msgid "Starting Secure Socket Layer handshake"
+msgstr "Запуск з'єднання SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Secure proxy connection"
+msgstr "Підключення до безпечного проксі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:383
+msgid "Proxy connection"
+msgstr "Підключення до проксі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:387
+msgid "Negotiating relay information"
+msgstr "Домовлятися про обмін інформацією"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:390
+msgid "Sent connection request, waiting for acknowledgement"
+msgstr "Відісланий запит з'єднання, очікую підтвердження"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:393
+msgid "Sent target host data, waiting for acknowledgement"
+msgstr "Дані відправлені цільовому хосту, очікую підтвердження"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:396
+msgid "Sent auth method request, waiting for acknowledgement"
+msgstr "Відісланий запит методу аутентифікації, очікую підтвердження"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:399
+msgid "Sent username and password, waiting for acknowledgement"
+msgstr "Відіслані ім'я користувача й пароль, очікую відповіді"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_irclink.cpp:402
+msgid "Sent connection request, waiting for \"HTTP 200\" acknowledgement"
+msgstr "Відісланий запит зв'язку, очікую підтвердження \"HTTP 200\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:176
+msgid "[SSL]: %Q"
+msgstr "[SSL]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:181
+msgid "[SSL ERROR]: %Q"
+msgstr "[ПОМИЛКА SSL]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:190
+msgid "[PROXY]: %Q"
+msgstr "[ПРОКСІ]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:200
+msgid "[PROXY ERROR]: %Q"
+msgstr "[ПОМИЛКА ПРОКСІ]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:207
+msgid "[SOCKET]: %Q"
+msgstr "[СОКЕТ]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:212
+msgid "[SOCKET ERROR]: %Q"
+msgstr "[ПОМИЛКА СОКЕТА]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:218
+msgid "[SOCKET WARNING]: %Q"
+msgstr "[ПОПЕРЕДЖЕННЯ СОКЕТА]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:337
+#, c-format
+msgid "Binding to local address %s"
+msgstr "Прослуховую локальну адресу %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:341
+#, c-format
+msgid ""
+"Binding to local address %s failed: the kernel will choose the correct "
+"interface"
+msgstr ""
+"Не можу прив'язатися до локальної адреси %s : ядро спробує вибрати "
+"правильний інтерфейс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:637
+msgid "Using HTTP protocol."
+msgstr "Використається протокол HTTP."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:683
+msgid "Using SOCKSV4 protocol."
+msgstr "Використається протокол SOCKSV4."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:756
+#, fuzzy
+msgid "Using SOCKSv5 protocol."
+msgstr "Використається протокол SOCKSV5."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:771
+msgid "We can accept auth method 0 (no auth)"
+msgstr "Неприйнятний метод аутентифікації 0 (без аутентифікації)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:779
+msgid "We can accept auth method 0 (no auth) or 2 (user/pass)"
+msgstr ""
+"Неприйнятний метод аутентифікації 0 (без аутентифікації) або 2 (логин/пароль)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:958
+msgid "Proxy response: auth OK: access granted"
+msgstr "Проксі відповіло: Аутентификация пройшла успішно, доступ відкритий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:993
+msgid "Proxy response: Auth method OK: using method 0 (no auth)"
+msgstr ""
+"Проксі відповіло: Аутентификация пройшла успішно,використався метод 0 (без "
+"аутентифікації)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1000
+msgid "Proxy response: Auth method OK: using method 2 (user/pass)"
+msgstr ""
+"Проксі відповіло: Аутентифікація пройшла успішно, використався метод 2 "
+"(логин/пароль)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1056
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1113
+msgid "Proxy response: target data OK: request granted"
+msgstr "Проксі відповіли: Дані отримані, запит удоволений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1153
+msgid "Proxy response: "
+msgstr "Проксі відповіло: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1164
+msgid "Proxy said something about: \n"
+msgstr "Проксі сказало щось у роді: \n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1205
+msgid "Server X509 certificate"
+msgstr "Сертифікат сервера X509"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1209
+msgid "The server didn't provide a certificate"
+msgstr "Сервер не має сертифіката"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1223
+msgid "Unable to determine the current cipher"
+msgstr "Не можу визначити використовуваний шифр"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1768
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_ircsocket.cpp:1788
+msgid "Partial socket write: packet broken into smaller pieces."
+msgstr "Не повний запис сокета: пакет розбитий на більше дрібні шматки."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:60
+#, fuzzy
+msgid "The theme information file does not exist"
+msgstr "Дія \"%1\" не існує"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:71
+#, fuzzy
+msgid ""
+"This KVIrc executable is too old for this theme (minimum theme engine "
+"version required is %Q while this theme engine has version %s)"
+msgstr ""
+"Установлений KVIrc занадто старої версії. Мінімальна необхідна версія для "
+"цього Скріпта %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:80
+#, fuzzy
+msgid "Theme information file is not valid"
+msgstr "Файл призначення існує: файл не перейменований"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:248
+#, fuzzy
+msgid "Failed to load the specified screenshot image"
+msgstr "Помилка завантаження обраної картинки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:257
+#, fuzzy
+msgid "Invalid option"
+msgstr "Помилка криптовальной машини"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:265
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:279
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_theme.cpp:293
+#, fuzzy
+msgid "Failed to save the screenshot image"
+msgstr "Помилка завантаження обраної картинки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:117
+msgid "Configure Servers..."
+msgstr "Конфігурація серверів..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:118
+msgid "Allows you to configure the servers and eventually to connect to them"
+msgstr "Дозволяє вам сконфигурувати сервера й підключитися до них"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:128
+msgid "Manage Addons..."
+msgstr "Керування доповненнями..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:129
+msgid "Allows you to manage the script-based addons"
+msgstr "Дозволяє управляти Скріптовими доповненнями"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:139
+msgid "Configure Registered Users..."
+msgstr "Конфігурація реєстрації користувачів..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:140
+msgid "Shows a dialog that allows editing the registered user entries"
+msgstr "Показує діалог, що дозволяє редагувати реєстрацію користувачів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:150
+msgid "Configure Identity..."
+msgstr "Конфігурація ідентифікації..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:151
+msgid "Allows you to configure nickname, username, avatar etc..."
+msgstr "Дозволяє вам сконфігурувати Нік, ім'я, аватар і т.п."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:161
+msgid "Show SocketSpy..."
+msgstr "Показати сокет агент..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:162
+msgid "Shows a window that allows monitoring the socket traffic"
+msgstr ""
+"Показує вікно що дозволяє спостерігати за дані, якими KVirc обмінюється с "
+"IRC сервером"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:172
+msgid "Get Network Links"
+msgstr "Одержати карту мережі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:173
+msgid "Shows a window that allows viewing the network links"
+msgstr "Показує вікно перегляду карти мережі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:183
+msgid "Get Channel List"
+msgstr "Одержати список каналів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:184
+msgid "Shows a window that allows listing the network channels"
+msgstr "Показує вікно, що дозволяє одержати список каналів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:194
+msgid "Configure KVIrc..."
+msgstr "Настроїти KVirc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:195
+msgid "Shows the general options dialog"
+msgstr "Показує діалог настроювань програми"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:205
+msgid "Configure Theme..."
+msgstr "Конфігурація теми..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:206
+msgid "Shows the theme options dialog"
+msgstr "Показує діалог настроювань теми"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:216
+msgid "Manage Themes..."
+msgstr "Керування темами..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:217
+msgid "Allows you to manage the themes"
+msgstr "Дозволяє управляти темами"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:227
+msgid "Customize Toolbars..."
+msgstr "Користувальницькі панелі інструментів..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:228
+msgid "Shows a window that allows editing script toolbars"
+msgstr "Показує вікно що дозволяє редагувати сценарії панелей інструментів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:239
+msgid "Join Channels..."
+msgstr "Зайти на канали..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:240
+msgid "Shows a dialog that allows you joing channels"
+msgstr "Показує діалог, що дозволяє вам увійти на канали"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:251
+msgid "Edit Actions..."
+msgstr "Редагувати дії..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:252
+msgid "Shows a window that allows editing actions"
+msgstr "Показує вікно що дозволяє редагувати дії"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:262
+msgid "Edit Aliases..."
+msgstr "Редагувати аліасы..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:263
+msgid "Shows a window that allows editing aliases"
+msgstr "Показує вікно що дозволяє редагувати аліасы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:273
+msgid "Edit Events..."
+msgstr "Редагувати події..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:274
+msgid "Shows a window that allows editing script events"
+msgstr "Показує вікно що дозволяє редагувати оброблювачі подій"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:284
+msgid "Edit Popups..."
+msgstr "Редагувати спливаючі меню..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:285
+msgid "Shows a window that allows editing popup menus"
+msgstr "Показує вікно що дозволяє редагувати спливаючі меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:295
+msgid "Edit Raw Events..."
+msgstr "Редагувати низькорівневі події..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:296
+msgid "Shows a window that allows editing raw scripting events"
+msgstr ""
+"Показує вікно що дозволяє редагувати оброблювачі подій, викликуваних при "
+"одержанні певних даних сервером"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:306
+msgid "New Script Tester"
+msgstr "Новий тестер сценаріїв"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:307
+msgid "Creates an embedded editor for long scripts"
+msgstr "Створює убудований редактор для довгих Скріптов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:317
+msgid "Execute Script..."
+msgstr "Виконати сценарій..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:318
+msgid "Allows executing a KVS script from file"
+msgstr "Дозволяє виконувати KVS сценарій з файлу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:328
+msgid "Help Index"
+msgstr "Індекс довідки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:329
+msgid "Shows the documentation index"
+msgstr "Показує індекс документації"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:340
+msgid "Allows subscribing to the KVIrc mailing list"
+msgstr "Дозволяє підписатися на список розсилання KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:350
+msgid "KVIrc WWW"
+msgstr "KVIrc в інтернеті"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:351
+msgid "Opens the KVIrc homepage"
+msgstr "Відкриває домашню сторінку KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:361
+msgid "KVIrc Russian WWW"
+msgstr "Домашня сторінка KVIrc на російському"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:362
+msgid "Opens the KVIrc homepage in russian"
+msgstr "Відкриває домашню сторінку KVIrc на російському"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:372
+msgid "Acquire Screenshot"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:373
+msgid "Acquires a Screenshot of the KVIrc main window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:385
+msgid "Cascade windows"
+msgstr "Вікна каскадом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:386
+msgid "Arranges the MDI windows in a maximized-cascade fashion"
+msgstr "Розташувати MDI вікна способом максимізувати каскадом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:397
+msgid "Tile windows"
+msgstr "Забрукувати вікна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:398
+msgid "Tiles the MDI windows with the currently selected tile method"
+msgstr "Забрукувати MDI вікна поточним обраним методом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:409
+msgid "Minimize all windows"
+msgstr "Згорнути всі вікна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:410
+msgid "Minimized all the currently visible MDI windows"
+msgstr "Мінімізувати всі поточні видимі MDI вікна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:421
+msgid "New IRC Context"
+msgstr "Новий IRC контекст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:422
+msgid "Creates a new IRC context console"
+msgstr "Створити нову консоль IRC контексту"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:433
+msgid "Quit KVIrc"
+msgstr "Вихід з KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:434
+msgid "Quits KVIrc closing all the current connections"
+msgstr "Вихід з KVIrc із закриттям всіх поточних з'єднань"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:448
+msgid "IRC Context Display"
+msgstr "Дисплей IRC контексту"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:449
+msgid "Shows a small display with IRC context informations"
+msgstr "Показує невеликий дисплей інформацією про IRC контекст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:520
+msgid "Acts as a separator for other items: performs no action"
+msgstr "Це роздільник для інших пунктів: ніяка дія не виконується"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:554
+msgid "Connect/Disconnect"
+msgstr "Підключитися/Відключитися"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:555
+msgid ""
+"Allows you to connect to a server or to terminate the current connection"
+msgstr "Дозволяє вам підключитися до сервера або закрити поточне з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:628
+msgid "Connect"
+msgstr "Підключитися"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:629
+msgid "Abort Connection"
+msgstr "Перервати з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:790
+msgid "Join Channel"
+msgstr "Увійти на канал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:791
+msgid "Shows a popup menu that allows quickly selecting a channel to join"
+msgstr ""
+"Показує спливаюче меню, що дозволяє швидко вибрати канал і зайти на нього"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:819
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:851
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:863
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:896
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:907
+msgid "Other..."
+msgstr "Іншої..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:834
+msgid "Change Nickname"
+msgstr "Змінити Нік"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:835
+msgid "Shows a popup menu that allows quickly changing the nickname"
+msgstr "Показує спливаюче меню, що дозволяє змінити Нік"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:883
+msgid "Connect To"
+msgstr "Підключитися до"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:884
+msgid "Shows a popup menu that allows quickly connecting to a server"
+msgstr "Показує спливаюче меню, що дозволяє швидко підключитися до сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:929
+msgid "User Mode"
+msgstr "Режим користувача"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:930
+msgid "Shows a popup menu that allows quickly changing user modes"
+msgstr ""
+"Показує спливаюче меню, що дозволяє швидко змінювати режими користувача"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:947
+msgid "Wallops (+w)"
+msgstr "Wallops (+w)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:949
+msgid "Server Notices (+s)"
+msgstr "Повідомлення сервера (+s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:951
+msgid "Invisible (+i)"
+msgstr "Невидимий (+i)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:997
+msgid "Away/Back"
+msgstr "Відійшов/Повернувся"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:998
+msgid "Allows entering and leaving away state"
+msgstr "Дозволяє включати й виключати режим Відійшов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1065
+msgid "Enter Away Mode"
+msgstr "Увійти в режим Відійшов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1066
+msgid "Leave Away Mode"
+msgstr "Вийти з режиму Відійшов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1135
+msgid "Irc Tools"
+msgstr "Інструменти IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1136
+msgid "Shows a popup menu with some IRC Tools"
+msgstr "Показує спливаюче меню деяких інструментів IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1171
+msgid "Irc Actions"
+msgstr "Дії IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_coreactions.cpp:1172
+msgid "Shows a popup menu with some IRC Actions"
+msgstr "Показувати спливаючі меню для деяких дій IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:412
+msgid "KVIrc KVS Script"
+msgstr "KVIrc KVS Скріпт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:174
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:420
+msgid "Run KVS Script"
+msgstr "Запустити KVS Скріпт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:284
+msgid "URL:IRC Protocol"
+msgstr "URL:IRC Протокол"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:325
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:383
+msgid "Open with KVIrc"
+msgstr "Відкрити за допомогою KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:436
+msgid "KVIrc Configuration File"
+msgstr "Файл конфігурації KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:453
+msgid "KVIrc Theme Package"
+msgstr "Пакет теми KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:461
+msgid "Install Theme Package"
+msgstr "Установити пакет теми"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:478
+msgid "KVIrc Addon Package"
+msgstr "KVIrc пакет доповнень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:486
+msgid "Install Package"
+msgstr "Установити пакет"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:749
+#, c-format
+msgid ""
+"Ops...it looks like I can't load modules on this sytem.\n"
+"I have been looking for the %s library but I haven't been able to load it\n"
+"due to the following error: \"%s\"\n"
+"Aborting."
+msgstr ""
+"Упс... схоже я не можу завантажити цей модуль у систему.\n"
+"Я шукав для %s бібліотеку, але її неможливо завантажити\n"
+"через наступну помилку: \"%s\"\n"
+"Перервано."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:762
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_begin\" function.\n"
+"Aborting!"
+msgstr ""
+"Упс... схоже у вас битий дистрибутив.\n"
+"Модуль установки не може експортувати \"setup_begin\" функцію.\n"
+"Перервано!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:776
+msgid "Setup aborted"
+msgstr "Установка перервана"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_app_setup.cpp:801
+msgid ""
+"Ops...it looks like you have a broken distribution.\n"
+"The setup module does not export the \"setup_finish\" function.\n"
+"Trying to continue anyway..."
+msgstr ""
+"Упс... схоже у вас битий дистрибутив.\n"
+"Модуль установки не може експортувати \"setup_finish\" функцію.\n"
+"Намагаюся продовжити..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:186
+msgid "%Q is on IRC"
+msgstr "%Q в IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:248
+msgid "%Q has left IRC"
+msgstr "%Q покинув IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:368
+msgid "Notify list: No users to check for, quitting"
+msgstr "Список повідомлень: Немає перевірених користувачів, вихід"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:414
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (15 sec)"
+msgstr ""
+"Список повідомлень: Часу (%d сек) занадто мало, установите більше розумне "
+"значення (15 сек)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:428
+msgid "Notify list: Notify list empty, quitting"
+msgstr "Список повідомлень: список порожній, вихід"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:455
+#, c-format
+msgid ""
+"Notify list: ISON delay (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+"Список повідомлень: затримка ISON (%d сек) занадто мала, установите більше "
+"розумне значення (5 сек)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:491
+msgid "Notify list: Checking for: %Q"
+msgstr "Список повідомлень: Перевірка для: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:535
+msgid ""
+"Notify list: Hey! You've used ISON behind my back? (I might be confused "
+"now...)"
+msgstr ""
+"Список повідомлень: Агов! Ви використали ISON за моєю спиною? (Я можу тепер "
+"заплутатися...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:682
+msgid "registration mask changed, or nickname is being used by someone else"
+msgstr "Реєстраційна маска змінилася або Нік використається ким те ще"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:686
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (registration mask does not match, or nickname is being used "
+"by someone else)"
+msgstr ""
+"Список повідомлень: \r!n\r%Q\r в онлайне, але маска [%Q@\r!h\r%Q\r] не "
+"відповідає ( маска не відповідає, або Нік використається ким те ще)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:691
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? "
+"(restarting)"
+msgstr ""
+"Список повідомлень: Несподіване протиріччя, реєстрація користувача в базі "
+"змінилася? (перезапуск)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:698
+msgid ""
+"Notify list: Unexpected inconsistency, expected \r!n\r%Q\r in the registered "
+"user DB"
+msgstr ""
+"Список повідомлень: Несподіване протиріччя, приблизно \r!n\r%Q\r "
+"зареєстрований у базі даних користувачів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:712
+#, c-format
+msgid ""
+"Notify list: USERHOST delay (%d sec) is too short, resetting to something "
+"more reasonable (5 sec)"
+msgstr ""
+"Список повідомлень: затримка USERHOST (%d сек) занадто мала, установите "
+"більше розумне значення (5 сек)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:726
+msgid "Notify list: Unexpected inconsistency, userhost list is empty!"
+msgstr "Список повідомлень: Несподіване протиріччя, список хостов порожній!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:761
+msgid "Notify list: Checking userhost for: %Q"
+msgstr "Список повідомлень: Перевірка хоста для: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:831
+msgid ""
+"Notify list: Hey! You've used USERHOST behind my back? (I might be confused "
+"now...)"
+msgstr ""
+"Список повідомлень: Агов! Ви використали USERHOST за моєю спиною? (Я можу "
+"заплутатися...)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:836
+#, fuzzy, c-format
+msgid "Notify list: Broken USERHOST reply from the server? (%s)"
+msgstr "Список повідомлень: Бита відповідь USERHOST від сервера? ( %s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:860
+msgid ""
+"Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST reply "
+"was received, will recheck in the next loop"
+msgstr ""
+"Список повідомлень: \r!n\r%Q\r пішов в оффлайне перш, ніж була отримана "
+"відповідь від USERHOST, буде переперевірений у наступному циклі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:931
+msgid "Starting notify list"
+msgstr "Запуск списку повідомлень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:936
+msgid "No users in the notify list"
+msgstr "Немає користувачів у списку повідомлень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:958
+msgid "Notify list: Checking for:%Q"
+msgstr "Список повідомлень: Перевірка для:%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1013
+#, c-format
+msgid ""
+"Notify list: Timeout (%d sec) is too short, resetting to something more "
+"reasonable (5 sec)"
+msgstr ""
+"Список повідомлень: Таймаут (%d сек) занадто малий, установите більше "
+"розумне значення (5 сек)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1139
+msgid "Notify list: Adding watch entries for%Q"
+msgstr "Список повідомлень: Додані тимчасові дані для %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1171
+msgid "watch entry listing requested by user"
+msgstr "внесення в список спостереження по запиті користувача"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1175
+msgid "possible watch list desync"
+msgstr "можлива розсинхрузування списку спостереження"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1185
+msgid "registration mask changed or desync with the watch service"
+msgstr ""
+"реєстраційна маска змінилася або розсинхронузувався сервіс спостереження"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1190
+msgid ""
+"Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] "
+"does not match (watch: registration mask does not match, or nickname is "
+"being used by someone else)"
+msgstr ""
+"Список повідомлень: \r!n\r%Q\r з'явився в онлайн, але маска [%Q@\r!h\r%Q\r] "
+"не відповідає (спостереження:маска не відповідає, або Нік уже використається)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1197
+msgid ""
+"Notify list: Unexpected inconsistency, registered user DB modified? (watch: "
+"restarting)"
+msgstr ""
+"Список повідомлень: Несподіване протиріччя, база користувачів змінилася? "
+"(спостереження: перезапуск)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1207
+msgid "watch entry added by user"
+msgstr "користувач доданий у список спостереження"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1245
+msgid "removed from watch list"
+msgstr "вилучений зі списку спостереження"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1248
+msgid "Notify list: Stopped watching for \r!n\r%Q\r"
+msgstr "Список повідомлень: Зупинене спостереження за \r!n\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1258
+msgid "watch"
+msgstr "спостереження"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1264
+msgid "Notify list: \r!n\r%Q\r is offline (watch)"
+msgstr "Список повідомлень: \r!n\r%Q\r в оффлайне (спостереження)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_notifylist.cpp:1267
+msgid "unmatched watch list entry"
+msgstr "неузгоджений вхід у список спостереження"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:80
+msgid "commandline::userfriendly"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:94
+msgid "commandline::kvs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_userinput.cpp:127
+msgid "You are not connected to a server"
+msgstr "Ви не підключені до сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/kernel/kvi_iconmanager.cpp:372
+msgid "Icon Table"
+msgstr "Таблиця Іконок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:190
+msgid "No "
+msgstr "Ні "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:196
+msgid "This module has no version informations: refusing to load it"
+msgstr "У цьому модулі немає інформації про версії: відмовляюся завантажити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:204
+msgid ""
+"This module was compiled for a different KVIrc version and can't be loaded"
+msgstr ""
+"Цей модуль скомпільований для іншої версії KVIrc і не може бути завантажений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:232
+msgid "Failed to execute the init routine"
+msgstr "Неможливо виконати команди ініціалізації"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:261
+#, c-format
+msgid "Loaded module '%s' (%s)"
+msgstr "Завантаження модуля '%s' (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvirc/module/kvi_modulemanager.cpp:306
+#, c-format
+msgid "Unloaded module '%s'"
+msgstr "Вивантаження модуля '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:45
+msgid "This window has no associated irc context"
+msgstr "Це вікно не пов'язане з IRC контекстом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:50
+#, c-format
+msgid "No such irc context (%d)"
+msgstr "Немає такого IRC контексту (%d)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/my/libkvimy.cpp:147
+msgid "Global idle timer must be started before using $my.globalIdle function"
+msgstr ""
+"Загальний таймер простою очевидно початий перед використанням функції $my."
+"globalIdle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:103
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:162
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:215
+msgid "Window %Q not found"
+msgstr "Вікно %Q не знайдено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:108
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:220
+msgid "Missing window id after the 'w' switch"
+msgstr "Відсутній ID вікна після ключа 'w'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:121
+msgid "Can't log to file %Q"
+msgstr "Не можу записати балку у файл %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:123
+msgid "This window has no logging capabilities"
+msgstr "Це вікно не має можливості журналювання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/log/libkvilog.cpp:275
+msgid "Window with id '%Q' not found, returning empty string"
+msgstr "Вікно з ID '%Q' не знайдено, повертається порожній рядок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:598
+msgid "Sound file '%Q' not found"
+msgstr "Звуковий файл '%Q'не знайдений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:604
+msgid "Unable to play sound '%Q'"
+msgstr "Не можу програти звук '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:615
+msgid "Sorry , I can't find a sound system to use on this machine"
+msgstr "Простите, я не знайшов звукову систему, яку можна було б використати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/snd/libkvisnd.cpp:617
+#, c-format
+msgid "Sound system detected to: %s"
+msgstr "Виявлена звукова система: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:141
+msgid "Show at startup"
+msgstr "Показувати при запуску"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:154
+msgid "Did you know..."
+msgstr " чиЗнаєте ви..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tip/libkvitip.cpp:220
+msgid "<b>Can't find any tip... :(</b>"
+msgstr "<b>Не можу знайти якої-небудь ради... :(</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1544
+msgid "%Q algorytm is not supported"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:1566
+msgid ""
+"KVIrc is compiled without OpenSSL support. $str.digest function disabled"
+msgstr "KVIrc зібраний без підтримки OpenSSL. Функція $str.digest відключена."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2030
+msgid "Invalid argument for ?d escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2034
+msgid "Missing argument for ?d escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2066
+msgid "Invalid argument for ?u escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2070
+msgid "Missing argument for ?u escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2097
+msgid "Invalid argument for ?x escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2101
+msgid "Missing argument for ?x escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2128
+msgid "Invalid argument for ?X escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2132
+msgid "Missing argument for ?X escape sequence, 0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2189
+msgid "Invalid argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/str/libkvistr.cpp:2193
+msgid "Missing argument for a floating point escape sequence, 0.0 assumed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:87
+msgid "Show URL List"
+msgstr "Показати список URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:88
+msgid "Shows the URL list window"
+msgstr "Показує вікно списку URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:124
+msgid "&Configure"
+msgstr "&Конфігурація"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:126
+msgid "Clo&se"
+msgstr "За&крити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:127
+msgid "&Module"
+msgstr "&Модуль"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:130
+msgid "&Load"
+msgstr "&Завантажити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:131
+msgid "&Save"
+msgstr "&Зберегти"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:132
+msgid "&Clear"
+msgstr "&Очистити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:133
+msgid "&List"
+msgstr "&Список"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:136
+msgid "URL"
+msgstr "URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:137
+msgid "Window"
+msgstr "Вікно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:138
+msgid "Count"
+msgstr "Рахунок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:139
+msgid "Timestamp"
+msgstr "Оцінка часу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:113
+msgid "Warning - KVIrc"
+msgstr "Увага - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:216
+msgid "Select an URL."
+msgstr "Вибрати URL."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:115
+msgid "&Remove"
+msgstr "&Видалити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:269
+msgid "&Find Text"
+msgstr "&Знайти текст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:280
+msgid "&Say to Window"
+msgstr "Вікно &розмови"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:294
+msgid "Window not found."
+msgstr "Вікно не знайдене."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:349
+msgid "URL Module Configuration"
+msgstr "Конфігурація модуля URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:356
+msgid "Save URL list on module unload"
+msgstr "Зберегти список URL при вивантаженні модуля"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:360
+msgid "Save columns width on URL list close"
+msgstr "Зберегти ширину стовпчиків у списку URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1187
+msgid "&Cancel"
+msgstr "С&касування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:432
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1328
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:94
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:458
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1186
+msgid "&OK"
+msgstr "&Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:423
+msgid "Enable URL ban list"
+msgstr "Включити URL бан аркуш"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:435
+msgid "&Add Ban"
+msgstr "&Додати бан"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:440
+msgid "&Remove Selected"
+msgstr "&Видалити обране"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:456
+msgid "URL Ban List"
+msgstr "URL бан аркуш"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:468
+msgid "Select a ban."
+msgstr "Виберіть бан."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/url/libkviurl.cpp:797
+msgid "View URL list"
+msgstr "Показати список URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:49
+msgid "Can't find the window with id '%Q'"
+msgstr "Неможливо знайти вікно з ID '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/chan/libkvichan.cpp:53
+msgid "The specified window (%Q) is not a channel"
+msgstr "Задане вікно (%Q) не є каналом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:78
+msgid "Destinaion file exists: no copy made"
+msgstr "Файл призначення існує: копія не зроблена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:83
+msgid "Failed to copy from %Q to %Q"
+msgstr "Помилка при копіюванні з %Q в %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:84
+msgid "Either the source doesn't exist or the destination can not be created"
+msgstr "Або джерело не існує, або призначення не може бути створене"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:203
+msgid "Failed to write to file %Q: the destination couldn't be opened"
+msgstr "Помилка запису у файл %Q: файл не може бути відкритий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:244
+msgid "Destination file exists: file not renamed"
+msgstr "Файл призначення існує: файл не перейменований"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:247
+msgid "Failed to rename %Q to %Q"
+msgstr "Помилка перейменування %Q в %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:281
+msgid "Failed to make the directory %Q"
+msgstr "Помилка при створенні каталогу %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:322
+msgid "Failed to remove the file %Q"
+msgstr "Помилка видалення файлу %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:365
+msgid "Failed to remove the directory %Q"
+msgstr "Помилка видалення каталогу %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:482
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:628
+msgid "The specified directory does not exist '%Q'"
+msgstr "Заданий каталог не існує '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:730
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:824
+msgid "Can't open the file \"%Q\" for reading"
+msgstr "Не можу відкрити файл \"%Q\" для читання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:746
+msgid "Read error for file %Q"
+msgstr "Помилка при читанні файлу %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:754
+msgid ""
+"Read error for file %Q (have been unable to read the requested size in 1000 "
+"retries)"
+msgstr "Помилка при читанні файлу %Q (неможливо прочитати після 1000 спроб)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/file/libkvifile.cpp:920
+msgid "Can't open the file \"%Q\" for writing"
+msgstr "Неможливо відкрити файл \"%Q\" для запису"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/index.cpp:473
+msgid "Untitled"
+msgstr "Без назви"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:152
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:154
+msgid "Indexing help files"
+msgstr "Індексація файлів довідки..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:87
+msgid "Index"
+msgstr "Індекс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:99
+msgid "Refresh index"
+msgstr "Обновити список"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:211
+msgid "Full Text Search"
+msgstr "Пошук у тексті"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:203
+msgid "Using a wildcard within phrases is not allowed."
+msgstr "Використання регулярних виражень у фразах неприпустимо"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:212
+msgid "The closing quotation mark is missing."
+msgstr "Пропущена закриваючі лапки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/help/helpwindow.cpp:312
+msgid "Help Browser"
+msgstr "Браузер допомоги"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:201
+msgid "Request List"
+msgstr "Одержати список"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:207
+msgid "Stop list download"
+msgstr "Зупинити завантаження списку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:211
+msgid ""
+"<center><b>/LIST command parameters:</b><br>Many servers accept special "
+"parameters that allow you to filter the returned entries.<br>Commonly, "
+"masked channel names (*kvirc*) are accepted as parameters, as well as "
+"strings like <b>c&lt;n</b> or <b>c&gt;n</b> where <b>n</b> is the minimum or "
+"maximum of users on the channel.</center>"
+msgstr ""
+"<center><b>Аргументи команди /LIST:</b><br>Багато серверів приймають "
+"спеціальні аргументи, які дозволяють вам фільтрувати одержувані дані."
+"<br>Звичайно маски імен каналів (напр. *kvirc*) приймаються як аргументи, а "
+"також рядка типу <b>c&lt;n</b> або <b>c&gt;n</b> де <b>n</b> - мінімальне "
+"або максимальна кількість користувачів на каналі</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:220
+msgid "Users"
+msgstr "Користувачі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:221
+msgid "Topic"
+msgstr "Тема"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:262
+msgid "Sent list request, waiting for reply..."
+msgstr "Відісланий запит списку, очікую відповідь..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:265
+msgid "Cannot request list: No active connection"
+msgstr "Неможливо одержати список: Немає активних з'єднань"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:274
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:389
+msgid "Stopping the list download..."
+msgstr "Завершуємо завантаження списку.."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:276
+msgid "Cannot stop list download, no active connection."
+msgstr "зупинити завантаження списку: Немає активних з'єднань"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:125
+#, c-format
+msgid "Connected to %s (%s)"
+msgstr "Підключений до %s (%s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:293
+msgid "List cannot be requested: Not connected to a server"
+msgstr "Список не отриманий: Немає з'єднання із сервером"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:316
+#, c-format
+msgid "Channel List [IRC Context %u]"
+msgstr "Список каналів [IRC Контекст %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:319
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel List</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Список каналів</b></font> <font color=\"%s\">"
+"[IRC Контекст %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:326
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Channel list</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Список каналів</b></font> <font color=\"%s\">"
+"[IRC Контекст %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:342
+msgid "You cannot export an empty list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:350
+#, fuzzy
+msgid "Channel list for %Q - %Q"
+msgstr "Режим каналу \r!c\r%Q\r - %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:353
+#, fuzzy
+msgid "Channel list"
+msgstr "Канали"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:382
+#, fuzzy
+msgid "Choose filename"
+msgstr "Виберете ім'я файлу журналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:356
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:383
+#, fuzzy
+msgid "Configuration files (*.kvc)"
+msgstr "Файл конфігурації KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:398
+msgid "Reset"
+msgstr "Скидання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:435
+msgid "Channels list download finished"
+msgstr "Завершене відновлення списку каналів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/listwindow.cpp:472
+msgid "Processing list: %Q"
+msgstr "Обробка списку: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/list/libkvilist.cpp:63
+msgid "List window alread open for this IRC context"
+msgstr "Вікно списку вже відкрито для цього контексту IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:70
+msgid "Terminal"
+msgstr "Консоль"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:73
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwindow.cpp:77
+#, c-format
+msgid "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+msgstr "<nobr><font color=\"%s\"><b>Консоль</b></font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:59
+msgid "Terminal emulator"
+msgstr "Емулятор термінала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:63
+msgid "Close this window"
+msgstr "Закрити це вікно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:91
+msgid "Can't create the terminal emulation part"
+msgstr "Не можу створити емулятор термінала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/term/termwidget.cpp:96
+msgid "Can't retrieve the terminal emulation factory"
+msgstr "Не можу повернути емулятор термінала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:95
+msgid "KVIrc"
+msgstr "KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:98
+msgid "Context"
+msgstr "Контекст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:155
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:100
+msgid "Away"
+msgstr "відійшов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:102
+msgid "&Configure KVIrc..."
+msgstr "&Настроїти KVirc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:104
+msgid "&About KVIrc"
+msgstr "&Про KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:109
+msgid "Un&dock"
+msgstr "Від&ділити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:168
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:112
+msgid "Ctrl+Q"
+msgstr "Ctrl+Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:143
+msgid "Nothing is happening..."
+msgstr "Нічого не відбувається..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:285
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:144
+msgid "Just idling..."
+msgstr "Звичайне простоювання..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:286
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:145
+msgid "Dum de dum de dum..."
+msgstr "Там тара там тирим бум бум..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:146
+msgid "Hey man... do something!"
+msgstr "Агов товариш... не спи, змерзнеш!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:147
+msgid "Umpf!"
+msgstr "Ай-ай-ай!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:148
+msgid "Silence speaking"
+msgstr "Тиша.."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:149
+msgid "Are ya here?"
+msgstr "Тут?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:150
+msgid "The world has stopped?"
+msgstr "Невже мир зупинився?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:151
+msgid "Everything is all right"
+msgstr "Всі добре"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:152
+msgid "idle()"
+msgstr "idle()"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:153
+msgid "It's so cold here..."
+msgstr "Як тут холодно..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:295
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:154
+msgid "Do not disturb... watching TV"
+msgstr "Не заважайте... дивлюся телевізор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:155
+msgid "Just vegetating"
+msgstr "Просто рости"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:156
+msgid "Hey... are ya sure that your network is up?"
+msgstr "Эй... це ваша мережа те?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:298
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:157
+msgid "Seems like the world has stopped spinning"
+msgstr "Здається земля припиняє вертітися.."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:299
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:158
+msgid "This silence is freaking me out!"
+msgstr "Ця дивна тиша!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:300
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:159
+msgid "Mieeeeeowww!"
+msgstr "Егегеееей!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:301
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:160
+msgid "idle idle idle idle!"
+msgstr "ледарюю!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Hide Window"
+msgstr "Сховати вікно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:254
+msgid "Show Window"
+msgstr "Показати вікно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:428
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:260
+msgid "Away on all"
+msgstr "Away скрізь"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:263
+msgid "Back on all"
+msgstr "Повернутися скрізь"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:450
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:282
+msgid "Back on %1"
+msgstr "Вийти з Away на %1 "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt3.cpp:453
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dockwidget/libkvidockwidget_qt4.cpp:285
+msgid "Away on %1"
+msgstr "Away на %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1238
+msgid "Alias"
+msgstr "Аліас"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:231
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1217
+msgid "No item selected"
+msgstr "Нічого не обрано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:232
+msgid "Rename"
+msgstr "Перейменувати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:236
+msgid "Edit the alias or namespace name"
+msgstr "Редагувати ім'я аліаса або простору імен."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:424
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+msgid "Add Alias"
+msgstr "Додати аліас"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:429
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Add Namespace"
+msgstr "Додати простір імен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:440
+msgid "Remove Selected"
+msgstr "&Видалити обране"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:449
+msgid "Export Selected..."
+msgstr "&Експортувати виділене..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:455
+msgid "Export Selected in singles files..."
+msgstr "Експортувати виділене в отдельыне файли..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:462
+msgid "Export All..."
+msgstr "&Експортувати все..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:470
+msgid "Find In Aliases..."
+msgstr "Знайти в аліасах..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:476
+msgid "Collapse All Namespaces"
+msgstr "Згорнути всі простори імен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:508
+msgid "Find In Aliases"
+msgstr "Знайти в аліасах"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:509
+msgid ""
+"Please enter the text to be searched for. The matching aliases will be "
+"highlighted."
+msgstr ""
+"Будь ласка, уведіть текст, якому потрібно знайти. Аліасы, що містять цей "
+"текст будуть підсвічені."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "Alias Export"
+msgstr "Експорт аліаса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:587
+#, fuzzy
+msgid "There is not selection!"
+msgstr "З'єднання не прийняте!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:615
+msgid "The file \"%Q\" exists. Do you want to replace it ?"
+msgstr "Файл \"%Q\" існує<br>Хочете переписати його?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+msgid "Replace file"
+msgstr "Замінити файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+msgid "Yes to All"
+msgstr "Так для всіх"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:661
+msgid "There exported file would be empty: cowardly refusing to write it"
+msgstr "Експортований файл буде порожнім: скасовую запис у нього"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:680
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:786
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:372
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:411
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1133
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1187
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:398
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:745
+msgid "Choose a Filename - KVIrc"
+msgstr "Виберіть ім'я файлу - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Write Failed - KVIrc"
+msgstr "Помилка запису - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1191
+msgid "Unable to write to the alias file."
+msgstr "Неможливо зберегти файл аліасов."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:793
+msgid "Do you really want to remove the alias \"%Q\" ?"
+msgstr "Ви дійсно хочете видалити аліас \"%Q\"?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:795
+msgid "Do you really want to remove the namespace \"%Q\" ?"
+msgstr "Ви дійсно хочете видалити простір імен \"%Q\"?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:797
+msgid "Please note that all the children items will be deleted too."
+msgstr "Будь ласка врахуйте, що всі дочірні елементи будуть теж вилучені."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:801
+msgid "Remove item"
+msgstr "Видалити елемент"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:875
+msgid "Missing Alias Name"
+msgstr "Не задане ім'я аліаса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:876
+msgid "You must specify a valid name for the alias"
+msgstr "Ви повинні вказати коректне ім'я аліаса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:877
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:890
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:904
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:915
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:946
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:959
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:973
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:984
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1128
+msgid "Ok, Let me try again..."
+msgstr "Добре, давайте спробую ще раз..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:888
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:902
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:913
+msgid "Bad Alias Name"
+msgstr "Некоректне ім'я аліаса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:944
+msgid "Missing Namespace Name"
+msgstr "Відсутнє ім'я простору імен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:945
+msgid "You must specify a valid name for the namespace"
+msgstr "Ви повинні визначити коректне ім'я для простору імен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:957
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:971
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:982
+msgid "Bad Namespace Name"
+msgstr "Некоректне ім'я для простору імен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:958
+msgid ""
+"Namespace names can contain only letters, digits, underscores and '::' "
+"namespace separators"
+msgstr ""
+"Назва простору імен може містити тільки букви, цифри, нижні підкреслення й "
+"роздільник просторів імен '::'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:972
+msgid ""
+"Stray ':' character in namespace name: did you mean ...<namespace>::<name> ?"
+msgstr ""
+"Одиночний символ ':' знайдений. Може бути ви мали через ...<namespace>::"
+"<name> ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:983
+msgid "Found an empty namespace in namespace name"
+msgstr "Знайдена порожній рядок в імені простору імен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1030
+msgid "Please enter the name for the new alias"
+msgstr "Будь ласка введіть ім'я нового аліаса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1055
+msgid "Please enter the name for the new namespace"
+msgstr "Будь ласка введіть ім'я нового простору імен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+msgid "Rename Alias"
+msgstr "Перейменувати аліас"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1112
+msgid "Please enter the new name for the alias"
+msgstr "Будь ласка введіть нове ім'я аліаса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Rename Namespace"
+msgstr "Перейменувати простір імен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1114
+msgid "Please enter the new name for the namespace"
+msgstr "Будь ласка, уведіть нову назву простору імен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1126
+#, fuzzy
+msgid "Alias already exists"
+msgstr "Адреса вже використається"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1139
+msgid "This name is already in use. Please choose another one."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1138
+msgid "Namespace already exists"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1140
+#, fuzzy
+msgid "Ok, let me try again..."
+msgstr "Добре, давайте спробую ще раз..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1227
+msgid "Namespace"
+msgstr "Простір імен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/aliaseditor/aliaseditor.cpp:1332
+msgid "Alias Editor"
+msgstr "Редактор аліасов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:62
+msgid "Join Channels"
+msgstr "Входити на канали"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:183
+msgid "Name"
+msgstr "Ім'я"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:86
+msgid "Password"
+msgstr "Пароль"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:641
+msgid "&Join"
+msgstr "&Увійти"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:108
+msgid "Show this window after connecting"
+msgstr "Показати це вікно після з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:163
+msgid "Recent Channels"
+msgstr "Недавні канали"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/channelsjoin/channelsjoinwindow.cpp:182
+msgid "Registered Channels"
+msgstr "Зареєстровані канали"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:133
+msgid "Choose the file to share"
+msgstr "Виберіть файл для надання у вільний доступ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:178
+msgid "No such channel/netmask entry in the database"
+msgstr "Не знайдені канал/маска в базі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:198
+msgid "Registered channel list:"
+msgstr "Зареєстрований список каналів:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:208
+#, c-format
+msgid "Channel: %c%s@%s"
+msgstr "Канал: %c%s@%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:213
+#, c-format
+msgid " Property: %s=%s"
+msgstr " Властивість: %s=%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/regchan/libkviregchan.cpp:220
+#, c-format
+msgid "Total %d channels"
+msgstr "Усього %d каналів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:86
+msgid "Property Editor"
+msgstr "Редактор властивостей"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:101
+msgid "Property"
+msgstr "Властивості"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:102
+msgid "Value"
+msgstr "Значення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:111
+msgid "&New"
+msgstr "&Новий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:215
+msgid "Mask Editor"
+msgstr "Редактор маски"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:219
+msgid ""
+"Insert a mask for this user.<br>It can contain the wildcard characters '*' "
+"and '?'."
+msgstr ""
+"Вставте маску для цього користувача<br>Вона може містити символи шаблонів "
+"'*' і '?'."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:230
+msgid ""
+"<center>This the <b>nickname</b> that will match this user, default value is "
+"the registered name.</center>"
+msgstr ""
+"<center>Це <b>Нік</b> відповідному цьому користувачеві, є зареєстрованим і "
+"використається по умовчанню</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:241
+msgid ""
+"<center>This the <b>username</b> that will match this user. <b>*</b> will "
+"match any username.</center>"
+msgstr ""
+"<center>Це <b>Нік</b> відповідному цьому користувачеві. <b>*</b> буде "
+"відповідати будь-якому імені користувача</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:252
+msgid ""
+"<center>This the <b>hostname</b> that will match this user. <b>*</b> will "
+"match any hostname.</center>"
+msgstr ""
+"<center>Це <b>хост</b> відповідному цьому користувачеві. <b>*</b> буде "
+"відповідати кожному хосту.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:333
+msgid "Registered User Entry"
+msgstr "Реєстрація користувача"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:339
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:145
+msgid "Name:"
+msgstr "Ім'я:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:345
+msgid "Comment:"
+msgstr "Коментар:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:355
+msgid "Masks:"
+msgstr "Маска:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:216
+msgid "&Add..."
+msgstr "&Додати..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:377
+msgid "&Edit"
+msgstr "&Редагувати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:385
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:414
+msgid "Identity"
+msgstr "Ідентифікація"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:393
+msgid "Notify when user is online"
+msgstr "Повідомляти коли користувач в онлайне"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:396
+msgid "Notify nicknames:"
+msgstr "Повідомлення ніків:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:401
+msgid "<center>You can enter a space separated list of nicknames.</center>"
+msgstr "<center>Ви можете ввести через пробіл список ніків.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:426
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:383
+msgid "Avatar"
+msgstr "Аватар"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:433
+msgid "Use custom color in userlist"
+msgstr "Використати інші кольори в списку користувачів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:441
+msgid "All Properties..."
+msgstr "Всі властивості..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:448
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:231
+msgid "Properties"
+msgstr "Властивості"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:458
+msgid "Enable ignore for this user"
+msgstr "Ігнорувати цього користувача"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:460
+#, fuzzy
+msgid "Ignore features"
+msgstr "Ігнорувати як"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:465
+msgid "Ignore query-messages"
+msgstr "Ігнорувати приватні повідомлення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:468
+msgid "Ignore channel-messages"
+msgstr "Ігнорувати повідомлення в каналі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:471
+msgid "Ignore notice-messages"
+msgstr "Ігнорувати повідомлення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:474
+msgid "Ignore ctcp-messages"
+msgstr "Ігнорувати CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:477
+msgid "Ignore invites"
+msgstr "Ігнорувати запрошення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:480
+msgid "Ignore DCCs"
+msgstr "Ігнорувати DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/edituser.cpp:486
+msgid "Ignore"
+msgstr "Ігнор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:94
+#, fuzzy
+msgid "Notify disabled"
+msgstr "Список повідомлень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:96
+#, fuzzy
+msgid "Notify as: "
+msgstr "Список повідомлень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:105
+#, fuzzy
+msgid "No comment set"
+msgstr "Немає контексту IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:107
+#, fuzzy
+msgid "Comment: "
+msgstr "Коментар:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:176
+msgid "Registered Users - KVIrc"
+msgstr "Реєстрація користувачів - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:317
+msgid "Flags"
+msgstr "Прапори"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:192
+msgid ""
+"<center>This is the list of registered users. KVIrc can automatically "
+"recognize and associate properties to them.<br>Use the buttons on the right "
+"to add, edit and remove entries. The \"notify\" column allows you to quickly "
+"add users to the notify list. Notify list fine-tuning can be performed by "
+"editing the entry properties.</center>"
+msgstr ""
+"<center>Це список зареєстрованих користувачів. KVIrc може автоматично "
+"дізнаватися й асоціювати з ними властивості<br>Використайте кнопки праворуч "
+"для додавання, видалення й редагування пунктів. Стовпчик \"Повідомлення\" "
+"дозволяє вам швидко додавати користувачів у список повідомлень. Тонке "
+"настроювання списку виконується при редагуванні властивостей.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:208
+msgid "Add (Wizard)..."
+msgstr "Додати (Майстер)..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:211
+msgid "Add a registered user by means of a user-friendly wizard."
+msgstr "Додайте реєстрацію користувача за допомогою дружнього майстра."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:219
+msgid "Open the edit dialog to create a new user entry."
+msgstr "Відкрийте діалог редагування щоб створити нового користувача."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:223
+msgid "&Add Group..."
+msgstr "&Додати групу..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:226
+msgid "Adds a new group"
+msgstr "Додати нову групу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:234
+msgid "Remove the currently selected entries."
+msgstr "Видалити поточний обраний пункт."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:239
+msgid "&Edit..."
+msgstr "&Редагувати..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:243
+msgid "Edit the first selected entry."
+msgstr "Редагувати перший обраний пункт."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:250
+msgid "Export To..."
+msgstr "Експортувати в..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:254
+msgid ""
+"Export the selected entries to a file.<br>All the data associated with the "
+"selected registered users will be exported.<br>You (or anyone else) can "
+"later import the entries by using the \"Import\" button."
+msgstr ""
+"Експортувати обрані дані в файл.<br>Всі дані пов'язані з обраними "
+"реєстраціями користувачів будуть експортовані<br> Ви (або хто-небудь ще) "
+"можете пізніше імпортувати ці дані використовуючи кнопку \"Імпорт\"."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:259
+msgid "Import From..."
+msgstr "Імпортувати з..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:262
+msgid ""
+"Import entries from a file exported earlier by the \"export\" function of "
+"this dialog."
+msgstr ""
+"Імпортувати дані з файлу які були раніше експортовані функцією \"Експорт\" "
+"цього діалогу."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:399
+msgid "Group name:"
+msgstr "Ім'я групи:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:442
+msgid "Move to group"
+msgstr "Перемістити в групу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:483
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:486
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:487
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:489
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:491
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:689
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_regusersdb.cpp:690
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_useridentity.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:962
+msgid "Default"
+msgstr "За замовчуванням"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:674
+msgid "No entries selected."
+msgstr "Нічого не обрано."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:687
+msgid "Can't open file %Q for writing."
+msgstr "Не можу відкрити файл %Q для запису."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:772
+msgid "Can't export the registered users database: Write error."
+msgstr ""
+"Неможливо експортувати базу дані реєстрації користувачів: Помилка запису."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:793
+#, c-format
+msgid "Can't open file %s for reading."
+msgstr "Не можу відкрити файл %s для читання."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:804
+#, c-format
+msgid "The file %s doesn't appear to be a valid registered users database."
+msgstr "Файл %s не є дійсною базою реєстрації користувачів."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:811
+#, c-format
+msgid "The file %s contains an invalid registered users database version."
+msgstr "Файл %s містить базу даних користувачів недійсної версії."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/dialog.cpp:892
+msgid "Can't import the registered users database: Read error."
+msgstr "Не можу імпортувати базу реєстрації користувачів: Помилка читання."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:78
+msgid "User Registration Wizard - KVIrc"
+msgstr "Майстер реєстрації користувача - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:89
+msgid ""
+"<p>Welcome to the user registration wizard.<br>This process allows you to "
+"add an IRC user to the database and set properties for that user. KVIrc will "
+"be (hopefully) able to recognize the user, add him to the notify list, and "
+"display the associated avatar.<br><br>First of all, you must insert an "
+"<b>entry name or real name</b> for the user you're going to register. The "
+"name will be used to identify the database entry and has no specific "
+"requirements, it can be a given name, nickname, or just some text to remind "
+"you of the real person.<br>Examples: \"George W Bush\", \"Dubya\".\n"
+"</p>"
+msgstr ""
+"<p>Ласкаво просимо в майстер реєстрації користувача<br>Ця процедура "
+"дозволить вам додати користувача IRC до бази даних і визначити властивості "
+"цього користувача. KVIrc зможе ідентифікувати користувача, додати його у "
+"список повідомлень і покаже пов'язаний з ним аватар.<br><br>Насамперед ви "
+"повинні <b>увести реальне ім'я</b> для користувача якого ви намагаєтеся "
+"зареєструвати. Це ім'я буде використатися для ідентифікації в базі даних і "
+"не має ніяких специфічних вимог, воно може бути просто відверненим ім'ям, "
+"ніком або яким-небудь текстом який буде нагадувати вам про це "
+"людині<br>Наприклад: \"Вася Пупкін\", \"Брітні Спірс\".\n"
+"</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:97
+msgid "Step 1: Entry Name"
+msgstr "Крок 1: Виберіть ім'я"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:112
+msgid ""
+"<p>A registered user is identified by one or more <b>IRC masks</b>.<br>A "
+"mask must be in the following form:<br><b>nickname!username@hostname</"
+"b><br>and can contain wildcard characters '*' and '?'. Be careful in "
+"choosing the masks, as they are the only way to verify the identity of a "
+"registered user.<br><br>You can enter at most two masks here, if you wish to "
+"add more masks, use the \"<b>Edit</b>\" button in the Registered Users "
+"dialog. You must enter at least one mask.</p>"
+msgstr ""
+"<p>Зареєстрований користувач ідентифікується по однієї або декількох "
+"<b>маскам IRC</b>.<br>Маска повинна бути наступного виду: <br><b>Нік!"
+"ім'я@хост</b><br> і може містити символи шаблонів '*' і '?'. Будьте уважні "
+"при виборі маски, тому що вона єдиний спосіб ідентифікувати "
+"користувача<br><br>Тут ви можете визначити не більше двох масок, якщо вам "
+"потрібно більше використайте кнопку \"<b>Редагувати</b>\" у діалозі "
+"реєстрації користувачів. Ви повинні визначити хоча б одну маску</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:170
+msgid "Step 2: Mask Selection"
+msgstr "Крок 2: Вибір маски"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:182
+msgid ""
+"<p>If you want to store an avatar image for this user, you can set it here. "
+"KVIrc will show the avatar in the userlist next to the user's nickname."
+"<br>An avatar can be in any supported image format (PNG is recommended). "
+"Keep in mind that KVIrc stores avatars in memory and has to resize them to "
+"fit in the userlist, thus it's better to use small, low-resolution images.</"
+"p>"
+msgstr ""
+"<p>Якщо ви хочете асоціювати із цим користувачем аватар, ви можете зробити "
+"це тут. KVIrc буде показувати цей аватар у списку користувачів поруч з ніком."
+"<br>У якості аватарів підтримуються будь-які формати картинок "
+"(рекомендується PNG). Майте через, що KVIrc завантажує аватари на згадку й "
+"там їх масштабує щоб помістити в список користувачів, тому краще вибирати "
+"картинки невеликих розмірів з низьким дозволом</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:190
+msgid "Store an avatar for this user"
+msgstr "Використати аватар для цього користувача"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:195
+msgid "Step 3: Avatar Selection"
+msgstr "Крок 3: Вибір аватара"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:206
+msgid ""
+"<p>If you want to be notified when this user is online or goes offline, you "
+"must specify the list of nicknames that KVIrc will look for.<br><br>You can "
+"enter at most two nicknames here, if you wish to add more nicknames, use the "
+"\"<b>Edit</b>\" button in the Registered Users dialog.</p>"
+msgstr ""
+"<p>Якщо ви хочете одержувати повідомлення коли користувач з'являється в "
+"онлайне або йде в оффлайн, ви повинні визначити тут список ніків які буде "
+"шукати KVIrc<br><br>Тут ви можете визначити не більше двох ніків, якщо вам "
+"потрібно більше використайте кнопку \"<b>Редагувати</b>\" в діалозі "
+"реєстрації користувачів</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:215
+msgid "Add this user to the notify list"
+msgstr "Додати цього користувача в список повідомлень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:342
+msgid "Nickname:"
+msgstr "Нік:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:225
+msgid "Nickname 2:"
+msgstr "2-й Нік:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:239
+msgid "Step 4: Notify List"
+msgstr "Крок 4: Список повідомлень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:251
+msgid ""
+"<p>That's it. The user registration has been completed.<br><br>Click "
+"\"<b>Finish</b>\" to close this dialog.</p>"
+msgstr ""
+"<p>Реєстрація користувача завершена<br><br>Клацніть на \"<b>Готово</b>\" для "
+"закриття цього діалогу</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/wizard.cpp:254
+msgid "Registration Complete"
+msgstr "Реєстрація завершена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:189
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:695
+msgid "No name specified"
+msgstr "Ім'я не визначене"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:209
+msgid "User already registered: found exact name match"
+msgstr "Користувач уже зареєстрований: виявлене таке ж ім'я"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:222
+msgid "Mask %Q is already used to identify user %s"
+msgstr "Маска %Q уже є в користувача %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:275
+msgid "User not found (%Q)"
+msgstr "Користувач не знайдений (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:403
+msgid "No mask specified"
+msgstr "Маска не визначена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:524
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:708
+msgid "User %Q not found"
+msgstr "Користувач %Q не знайдений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:355
+msgid "Mask %Q already used to identify user %Q"
+msgstr "Маска %Q уже використається для ідентифікації користувача %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:410
+msgid "Mask %Q not found"
+msgstr "Маска %Q не знайдена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:701
+msgid "No property specified"
+msgstr "Не визначена властивість"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:808
+msgid "Registered users database dump:"
+msgstr "Дамп бази зареєстрованих користувачів:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:819
+msgid " User: %c%Q"
+msgstr " Користувач: %c%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:823
+msgid " Warning: this user has no registration masks"
+msgstr " Попередження: цей користувач не має реєстраційної маски"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:827
+#, fuzzy
+msgid " Mask: %Q!%Q@%Q"
+msgstr " Маска: %Q! %Q@%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:838
+msgid " Property: %Q=%Q"
+msgstr " Властивість: %Q=%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:841
+msgid " No properties"
+msgstr " Немає властивостей"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/reguser/libkvireguser.cpp:847
+#, c-format
+msgid "Total: %d matching users (of %d in the database)"
+msgstr "Разом: %d користувачів (%d у базі даних)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:197
+msgid "Manage Script-Based Addons"
+msgstr "Керування Скріптовими доповненнями"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:221
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1155
+msgid "Configure"
+msgstr "Конфігурація"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:225
+msgid "Show Help"
+msgstr "Показати допомога"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:231
+msgid "Uninstall"
+msgstr "Видалити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:243
+msgid "Install Addon..."
+msgstr "Установити доповнення..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:247
+msgid "More Addons..."
+msgstr "Ще доповнення..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:333
+msgid "Do you really want to uninstall the addon \"%1\" ?"
+msgstr "Ви дійсно хочете видалити доповнення \"%1\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:337
+msgid "Confirm addon uninstallation"
+msgstr "Підтвердите видалення доповнення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/managementdialog.cpp:354
+msgid "Please select the addon installation file"
+msgstr "Будь ласка, укажіть настановний файл доповнення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:144
+msgid "%cAddon id %Q, version %Q%c"
+msgstr "%cдополнение %Q, версія %Q%c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:145
+msgid "Name: %Q"
+msgstr "Ім'я: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:67
+msgid "Description: %Q"
+msgstr "Опис: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:152
+#, c-format
+msgid "Total: %d addons installed"
+msgstr "Усього встановлено %d доповнень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:192
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:571
+msgid "Uninstalling existing addon version %Q"
+msgstr "Видалення наявного доповнення версії %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:291
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:384
+msgid "The addon \"%1\" does not exist"
+msgstr "Доповнення \"%1\" не існує"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:238
+msgid "The addon \"%1\" has no configure callback set"
+msgstr "Доповнення \"%1\" не має конфігураційних функцій"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:285
+msgid "The addon \"%1\" has no help callback set"
+msgstr "Дія \"%1\" не має допомоги"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:527
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:377
+msgid "Internal error: call a head-shrinker"
+msgstr "Внутрішня помилка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:536
+msgid "The specified version \"%Q\" is not a valid version string"
+msgstr "Задана версія \"%Q\" не має формату рядка версії"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:542
+msgid "The specified KVIrc version \"%Q\" is not a valid version string"
+msgstr "Задана версія KVirc \"%Q\" не є коректної"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:548
+msgid ""
+"This KVIrc executable is too old to run this addon (minimum version required "
+"is %Q)"
+msgstr ""
+"Установлений KVIrc занадто старої версії. Мінімальна необхідна версія для "
+"цього Скріпта %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:553
+msgid "Attempting to register addon \"%Q\" with version %Q"
+msgstr "Спроба зареєструвати доповнення \"%Q\" версії %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:565
+msgid ""
+"The script addon \"%Q\" already exists with version %Q which is higher than %"
+"Q"
+msgstr "Доповнення \"%Q\" уже встановлено версії %Q, що новіше ніж %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:579
+msgid "Script registration failed"
+msgstr "Не вдалося зареєструвати Скріпт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/addon/libkviaddon.cpp:584
+msgid "Script succesfully registered"
+msgstr "Скріпт успішно зареєстрований"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:102
+#, fuzzy, c-format
+msgid "%s (%s) (%s:%u)"
+msgstr "%Q установлено [%s (%s:%u)]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:104
+#, fuzzy, c-format
+msgid "%s (%s)"
+msgstr "%1 це %2 (%3)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:107
+#, c-format
+msgid "%s (%s:%u)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:109
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:112
+#, fuzzy, c-format
+msgid "[IDENT]: %s"
+msgstr "[СОКЕТ]: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:119
+#, fuzzy
+msgid "Shutting down identd service (spontaneous action)"
+msgstr "Пряме підключення до сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:124
+#, fuzzy
+msgid "Shutting down identd service (requested action)"
+msgstr "Пряме підключення до сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:225
+#, fuzzy
+msgid "Can't start the ident service : socket() failed"
+msgstr "Не можу запустити прослуховування сокета: Помилка зв'язку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:231
+#, fuzzy
+msgid "Can't start the ident service : async setting failed"
+msgstr "Не можу запустити прослуховування сокета: Помилка зв'язку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:237
+msgid "Can't enable the ident service : can't setup the listen address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:243
+#, fuzzy
+msgid "Can't start the ident service : bind() failed"
+msgstr "Не можу запустити прослуховування сокета: Помилка зв'язку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:249
+#, fuzzy
+msgid "Can't start the ident service : listen() failed"
+msgstr "Не можу запустити прослуховування сокета: Помилка зв'язку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:263
+#, fuzzy
+msgid "Can't start the ident service on IpV6 : socket() failed"
+msgstr "Не можу запустити прослуховування сокета: Помилка зв'язку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:269
+#, fuzzy
+msgid "Can't start the ident service on IpV6 : async setting failed"
+msgstr "Не можу запустити прослуховування сокета: Помилка зв'язку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:277
+#, fuzzy
+msgid "Can't enable the ident service on IpV6 : can't setup the listen address"
+msgstr "Не можу запустити прослуховування сокета: Помилка зв'язку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:285
+#, fuzzy
+msgid "Can't start the ident service on IpV6 : bind() failed"
+msgstr "Не можу запустити прослуховування сокета: Помилка зв'язку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:294
+#, fuzzy
+msgid "Can't start the ident service on IpV6 : listen() failed"
+msgstr "Не можу запустити прослуховування сокета: Помилка зв'язку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:310
+#, fuzzy
+msgid "Starting identd service (IpV4/V6 on separate namespaces)"
+msgstr "Стартую Identd сервіс (Ip4)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:313
+#, fuzzy
+msgid "Starting identd service (IpV4/V6 in IpV6 namespace)"
+msgstr "Стартую Identd сервіс (Ip4)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:318
+#, fuzzy
+msgid "Starting identd service (IpV4)"
+msgstr "Стартую Identd сервіс (Ip4)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:322
+#, fuzzy
+msgid "Service startup (IpV4)"
+msgstr "Стартую сервіс (Ip4)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:412
+msgid "Identd accepting connection"
+msgstr "Identd прийняв підключення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:435
+msgid "Identd socket error : dropping connection"
+msgstr "помилка сокета Identd, закриваю з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:440
+msgid "Identd connection closed by remote host"
+msgstr "Identd з'єднання закрите вилученим сервером"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:461
+msgid "Identd processing request"
+msgstr "Identd обробляє запит"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:476
+msgid "Empty request (EOT ?)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:487
+msgid "Dropping connection (request too long)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/ident/libkviident.cpp:500
+msgid "Timed out while waiting for the request : dropping connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/libkvilinks.cpp:74
+msgid "Links window alread open for this IRC context"
+msgstr "Вікно посилань уже відкрито для цього контексту IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:57
+msgid "Request Links"
+msgstr "Запросити з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:70
+msgid "Link"
+msgstr "Зв'язок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:71
+msgid "Hops"
+msgstr "Стрибок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:72
+msgid "Description"
+msgstr "Опис"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:90
+msgid "(None)"
+msgstr "(Нічого)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:112
+msgid "Sent links request, waiting for reply..."
+msgstr "Відісланий запит зв'язків серверів, очікую відповідь..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:115
+msgid "Cannot request links: No active connection"
+msgstr "Неможливо запросити дані про зв'язок серверів: Немає активних з'єднань"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:128
+msgid "Links cannot be requested: Not connected to a server"
+msgstr ""
+"Неможливо запросити дані про зв'язок серверів: Немає підключення до сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:153
+msgid "Links for %Q [IRC Context %u]"
+msgstr "Карта мережі для %Q [IRC контекст %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:164
+msgid ""
+"<nobr><font color=\"%s\"><b>Links for %Q</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Посилання для %Q</b></font> <font color=\"%s\">"
+"[IRC Контекст %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:194
+msgid "Received end of links."
+msgstr "Кінець одержання даних про зв'язки серверів."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:235
+#, c-format
+msgid ""
+"Broken link: Missing parent (%s) for %s (%d hops): %s (used /LINKS <mask> ?)"
+msgstr ""
+"Битий зв'язок: Відсутній батько (%s) для %s (%d стрибків): %s "
+"(використається /LINKS <mask> ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:238
+#, c-format
+msgid "%s: Parent link %s"
+msgstr "%s: Батьківський зв'язок %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:242
+msgid "Warning: No root link was sent by the server, the stats may be invalid."
+msgstr ""
+"Попередження: Не кореневий зв'язок був посланий сервером, статистика може "
+"бути не дійсної."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:278
+msgid "%c%cLinks for %Q"
+msgstr "%c%c З'єднання для %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts listed"
+msgstr "Усього серверів у списку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:280
+msgid "Total hosts in the network"
+msgstr "Загальна кількість серверів у мережі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:282
+#, c-format
+msgid "Wildcard servers (hubs?): %d"
+msgstr "Некеровані сервера (хаби?): %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:283
+#, fuzzy
+msgid "Direct links: %d (~%d.%d %)"
+msgstr "Прямі з'єднання: %d (~%d. %d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:284
+#, fuzzy
+msgid "Close links (1 <= hops <= 3): %d (~%d.%d %)"
+msgstr "Близькі сервера (1 <= стрибків <= 3): %d (~%d. %d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:285
+#, fuzzy
+msgid "Mid-range links (4 <= hops <= 6): %d (~%d.%d %)"
+msgstr "Сервера середньої дальності (4 <= стрибків <= 6): %d (~%d. %d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:286
+#, fuzzy
+msgid "Distant links (7 <= hops): %d (~%d.%d %)"
+msgstr "Далекі сервера (7 <= стрибків): %d (~%d. %d %)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:287
+#, c-format
+msgid "Broken (unknown) links: %d"
+msgstr "Биті (невідомі з'єднання): %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:288
+#, c-format
+msgid "Maximum links per host: %d [%s]"
+msgstr "Хаб, що містить максимальна кількість підключених серверів: %d [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:289
+#, c-format
+msgid "Total links: %d"
+msgstr "Усього з'єднань: %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:290
+#, c-format
+msgid "Maximum hops: %d [%s]"
+msgstr "Максимум стрибків: %d [%s]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:291
+#, fuzzy, c-format
+msgid "Average hops: ~%d.%d"
+msgstr "Середня кількість стрибків: ~%d. %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:294
+msgid "Incomplete LINKS result, no stats available"
+msgstr "Неповний результат LINKS, статистика недоступна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:391
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:747
+msgid "You're not connected to a server"
+msgstr "Ви не підключені до сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:404
+#, c-format
+msgid "Processing link: %s"
+msgstr "Обробка з'єднань: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/links/linkswindow.cpp:419
+msgid "Broken message syntax, can't extract hops number, assuming 0"
+msgstr ""
+"Битий синтаксис повідомлення, неможливо витягти кількість стрибків, приймаю 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:86
+msgid "< &Back"
+msgstr "< &Назад"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:87
+msgid "&Next >"
+msgstr "&Далі >"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:282
+msgid "Finish"
+msgstr "Готово"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:164
+msgid ""
+"<p><h2>Welcome :)</h2>This is your first time running this version of KVIrc."
+"<br>This wizard will guide you through the few steps required to complete "
+"the setup.<br><br>If you had a previous version of KVIrc installed, no "
+"worries. You will have a chance to preserve the old configuration.</"
+"p><p>Click \"<b>Next</b>\" to proceed.</p>"
+msgstr ""
+"<p><h2>Ласкаво просимо :)</h2>Це ваш перший запуск цієї версії KVIrc."
+"<br>Майстер проведе вас через кілька кроків, необхідних для завершення "
+"установки<br><br>Якщо у вас установлена попередня версія KVIrc, не "
+"турбуйтеся. У вас буде можливість зберегти попередню конфігурацію</"
+"p><p>Кликніть на \"<b>Далі</b>\" щоб продовжитися</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:176
+msgid "Welcome to KVIrc"
+msgstr "Ласкаво просимо в KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:187
+msgid ""
+"<p>All of the files in this distribution are covered by the GPL. In human "
+"terms this can be read as follows:<br><ul><li><b>KVIrc is free</b>, use it, "
+"have fun! <b>:)</b></li><li>If you use <b>any</b> part of KVIrc in your own "
+"project, you <b>must</b> release that project under the same license.</li></"
+"ul></p><p>The \"legalese\" version of the license is shown in the box below."
+"</p>"
+msgstr ""
+"<p>Всі файли цього додатка випущені під ліцензією GPL. Простіше говорячи це "
+"означає наступне:<br><ul><li><b>KVIrc є вільним ПО</b>, використайте його "
+"собі на втіху! <b>:)</b></li><li>Якщо ви будете використати <b>будь-які</b> "
+"частини KVIrc у вашому проекті, ви <b>зобов'язані</b> випустити проект під "
+"цією же ліцензією</li></ul></p><p>\"Legalese\" версія ліцензії показана "
+"внизу.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:203
+msgid ""
+"Oops... can't find the license file.\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+"Упс... не знайдений файл ліцензії.\n"
+"Він ПОВИНЕН бути в дистрибутиві...\n"
+"Будь ласка повідомите за адресою <pragma собака kvirc крапка net>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:211
+msgid "Dreaded License Agreement"
+msgstr "Жахлива ліцензійна угода"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:215
+msgid "KVIrc Setup"
+msgstr "Установка KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:224
+msgid ""
+"<p>Please choose a folder for KVIrc to store its settings and other data, "
+"and another for downloaded files. Make sure that you have permission to "
+"write to both folders.<br><br>The suggested locations are fine in most "
+"cases, so if you don't know what is this about, just click \"<b>Next</b>\"."
+"<br><br>If you had a previous version of KVIrc installed, you can choose the "
+"existing directory for the settings, and your configuration will be "
+"preserved.</p>"
+msgstr ""
+"<p>Будь ласка виберіть каталог у якому KVirc буде зберігати настроювання й "
+"дані, а також каталог для загружаємих файлів. Переконаєтеся, що у вас є "
+"доступ на запис в обидва каталоги<br><br>Запропоновані варіанти підходять "
+"для більшості випадків, тому якщо ви сумніваєтеся, просто кликніть "
+"\"<b>Далі</b>\".<br><br>Якщо у вас була встановлена попередня версія KVIrc, "
+"ви можете вибрати існуючий каталог настроювань, і ваша конфігурація буде "
+"збережена</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:234
+msgid "Application Folders"
+msgstr "Каталоги додатка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:238
+msgid "Store configuration in folder"
+msgstr "Зберігати конфігурацію в каталозі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:239
+msgid "Use settings folder from previous installation"
+msgstr "Використати вже існуючу папку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:251
+msgid "Use new settings folder"
+msgstr "Нова папка настроювань"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:255
+msgid "Settings folder:"
+msgstr "Папка настроювань:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:281
+msgid "Download files to folder:"
+msgstr "Папка для загружаємих файлів:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:304
+msgid "All settings in shared program folder (portable)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:325
+msgid ""
+"Please choose a Nickname.<br><br>Your nickname is the name that other IRC "
+"users will know you by. It can't contain spaces or punctuation. Some IRC "
+"networks will shorten your nickname if it is more than 32 characters long."
+"<br><br>If in doubt, just enter the first nick that comes to mind. You will "
+"be able to change it later in the Identity properties, or with the /NICK "
+"command."
+msgstr ""
+"Будь ласка виберіть собі Нік<br><br>По вашому ніку інші користувачі IRC "
+"будуть вас дізнаватися. Він не повинен містити пробілів або розділових "
+"знаків. Деякі IRC обрізають ваш Нік, якщо він містить більше 32 символів."
+"<br><br>Якщо ви сумніваєтеся, просто введіть перший Нік, що прийде вам у "
+"голову. Ви зможете змінити його пізніше в настроюваннях, або ввівши команду /"
+"NICK ."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:348
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr "Це поле не обов'язково й буде використане в CTCP USERINFO відповіді"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:353
+msgid "Profile"
+msgstr "Профіль"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:355
+msgid "Real name:"
+msgstr "Сьогодення ім'я:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:361
+msgid "Age:"
+msgstr "Вік:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:392
+msgid "Unspecified"
+msgstr "Не зазначено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:405
+msgid "Location:"
+msgstr "Країна:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:408
+msgid "Languages:"
+msgstr "Мови:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:491
+msgid ""
+"<p>Here you can choose how much KVIrc will integrate with your system."
+"<br><br>The default settings are fine for most users so if you're in doubt "
+"just click \"<b>Next</b>\" and go to the next screen.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:501
+msgid "Desktop Integration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:504
+msgid "Make KVIrc default IRC client"
+msgstr "Зробити KVIrc IRC клієнтом за замовчуванням"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:508
+msgid "Create desktop shortcut"
+msgstr "Створити ярлик на робочому столі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:513
+msgid "Import server list from mIRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:727
+msgid "Choose an Old Configuration Folder - KVIrc Setup"
+msgstr "Виберіть старий каталог конфігурації - Установник KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:736
+msgid "Do not overwrite folder? - KVIrc"
+msgstr "Не перезаписувати папку? - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:737
+msgid ""
+"A folder %1 seems to be not a valid KVIrc settings folder.Do you want to use "
+"it anyway?"
+msgstr ""
+"Схоже що папка %1 є папкою зі старими настроюваннями KVIrc. Ви дійсно хочете "
+"неї використати?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:753
+msgid "Choose a Configuration Folder - KVIrc Setup"
+msgstr "Виберіть каталог конфігурації - Установник KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:764
+msgid "Choose a Download Folder - KVIrc Setup"
+msgstr "Виберіть каталог для накачувань - Установник KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:933
+msgid "Abort Setup - KVIrc Setup"
+msgstr "Установка перервана - Установник KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:934
+msgid ""
+"You have chosen to abort the setup.<br>KVIrc cannot run until you complete "
+"this procedure.<br><br>Do you really wish to abort?"
+msgstr ""
+"Ви збираєтеся перервати установку<br>KVIrc не зможе працювати доти поки ви "
+"не завершите цю процедуру<br><br>Ви дійсно хочете перервати?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:965
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/setup/setupwizard.cpp:996
+#, c-format
+msgid ""
+"Cannot create directory %s.\n"
+"You may not have write permission for that path. Please go back and choose "
+"another directory."
+msgstr ""
+"Не можу створити каталог %s.\n"
+"У вас немає доступу на запис по обраному шляху. Будь ласка поверніться й "
+"виберіть інший каталог."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+msgid "Package saved succesfully"
+msgstr "Пакет успішно збережений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:80
+msgid "Event"
+msgstr "Подія"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1046
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:92
+msgid "&Export All To..."
+msgstr "&Експортувати все в..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:90
+msgid "Edit the event handler name."
+msgstr "Редагування імені оброблювача події."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:154
+msgid "&Enable Handler"
+msgstr "&Включити оброблювач"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:158
+msgid "&Disable Handler"
+msgstr "В&иключити оброблювач"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:160
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:162
+msgid "Re&move Handler"
+msgstr "В&идалити оброблювач"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:164
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:166
+msgid "&Export Handler To..."
+msgstr "&Експорт оброблювача в..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:171
+msgid "&New Handler"
+msgstr "&Новий оброблювач"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:190
+msgid "unnamed"
+msgstr "без імені"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:215
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:250
+msgid "default"
+msgstr "за замовчуванням"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:314
+msgid "none"
+msgstr "ні"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:318
+#, fuzzy, c-format
+msgid ""
+"\n"
+"\n"
+"\tEvent:\n"
+"\t\t%s\n"
+"\n"
+"\tParameters:\n"
+"%s"
+msgstr ""
+"\n"
+"\n"
+"\tсобытие:\n"
+"\t\t%s\n"
+"\n"
+"\tпараметры:\n"
+" %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:379
+msgid "Unable to write to the event file."
+msgstr "Не можу записати подію у файл."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:415
+msgid "Unable to write to the events file."
+msgstr "Не можу записати події у файл."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/eventeditor/eventeditor.cpp:486
+msgid "Event Editor"
+msgstr "Редактор подій"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:77
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:213
+msgid "Item"
+msgstr "Пункт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:80
+msgid "Submenu"
+msgstr "Підміню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:83
+msgid "External Menu"
+msgstr "Зовнішнє меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:136
+msgid "Label"
+msgstr "Мітка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:93
+msgid "### Epilogue ###"
+msgstr "### Епілог ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:94
+msgid "Epilogue"
+msgstr "Епілог"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:97
+msgid "### Prologue ###"
+msgstr "### Пролог ###"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:98
+msgid "Prologue"
+msgstr "Пролог"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:198
+msgid "Popup name"
+msgstr "Ім'я спливаючого меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:202
+msgid "Test"
+msgstr "Тест"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:230
+msgid "Text:"
+msgstr "Текст:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:236
+msgid ""
+"<center><b>Visible text</b><br>May contain identifiers that will be "
+"evaluated at popup call time.<br>For labels, this text can contain also "
+"limited HTML tags.</center>"
+msgstr ""
+"<center><b>Видимий текст</b><br>Може містити ідентифікатори які визначені "
+"при виклику спливаючі меню.<br>Цей текст також може містити деякі HTML теги</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:239
+msgid "Condition:"
+msgstr "Умова:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:245
+msgid ""
+"<center><b>Boolean condition</b><br>Will be evaluated at popup call time in "
+"order to decide if this entry has to be shown.<br>An empty condition "
+"evaluates to true.</center>"
+msgstr ""
+"<center><b>Булево умова</b><br>Буде визначати чи показувати спливаюче меню "
+"під час виклику<br>Порожня умова приймається за істину</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:248
+msgid "Icon:"
+msgstr "Іконка:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:254
+msgid ""
+"<center><b>Icon identifier</b><br>May be an internal icon ID, an absolute "
+"path or a relative path.<br>Portable scripts should never use absolute paths."
+"</center>"
+msgstr ""
+"<center><b>Ідентифікатор іконки</b><br>Може бути внутрішнім ID іконки, "
+"абсолютним або відносним шляхом.<br>Стерпні сценарії не повинні містити "
+"абсолютних шляхів</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:257
+msgid "External menu:"
+msgstr "Зовнішнє меню:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:263
+msgid ""
+"<center><b>External menu name</b><br>This allows to nest externally defined "
+"popup menus. The popup menu with the specified name will be looked up at "
+"menu setup time.</center>"
+msgstr ""
+"<center><b>Ім'я зовнішнього меню</b><br>Це дозволить вставити зовнішнє "
+"спливаюче меню. Меню із цим ім'ям буде шукатися під час установки</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:266
+msgid "Item Id:"
+msgstr "Id пункту:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:273
+msgid ""
+"<center><b>Item id</b><br>This will allow you to use delpopupitem later.</"
+"center>"
+msgstr ""
+"<center><b>ID Пункту</b><br>Це дозволить вам використати delpopupitem "
+"пізніше.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:386
+msgid "New Separator Below"
+msgstr "Новий роздільник унизу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:388
+msgid "New Separator Above"
+msgstr "Новий роздільник угорі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:391
+msgid "New Separator Inside"
+msgstr "Новий роздільник по середині"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:396
+msgid "New Label Below"
+msgstr "Нова мітка внизу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:398
+msgid "New Label Above"
+msgstr "Нова мітка вгорі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:401
+msgid "New Label Inside"
+msgstr "Нова мітка по середині"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:406
+msgid "New Item Below"
+msgstr "Новий пункт унизу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:408
+msgid "New Item Above"
+msgstr "Новий пункт угорі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:411
+msgid "New Item Inside"
+msgstr "Новий пункт по середині"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:416
+msgid "New Menu Below"
+msgstr "Нове меню внизу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:418
+msgid "New Menu Above"
+msgstr "Нове меню вгорі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:421
+msgid "New Menu Inside"
+msgstr "Нове меню по середині"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:426
+msgid "New External Menu Below"
+msgstr "Нове зовнішнє меню внизу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:428
+msgid "New External Menu Above"
+msgstr "Нове зовнішнє меню вгорі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:431
+msgid "New External Menu Inside"
+msgstr "Нове зовнішнє меню по середині"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:451
+msgid "&Paste Below"
+msgstr "&Вставити знизу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:456
+msgid "Paste Above"
+msgstr "Вставити зверху"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:461
+msgid "Paste Inside"
+msgstr "Вставити по середині"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:473
+msgid "New Menu Prologue"
+msgstr "Нове пролог меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:481
+msgid "New Menu Epilogue"
+msgstr "Нове епілог меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1042
+msgid "Popup"
+msgstr "Спливаюче меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1048
+msgid "&Export selected To..."
+msgstr "&Експортувати виділене в..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1099
+msgid "&New Popup"
+msgstr "&Нове спливаюче меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1105
+msgid "Re&move Popup"
+msgstr "В&идалити спливаюче меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1112
+msgid "&Export Popup To..."
+msgstr "&Експортувати спливаюче меню в..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1140
+msgid "Unable to write to the popup file."
+msgstr "Не можу записати спливаюче меню у файл."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/popupeditor/popupeditor.cpp:1382
+msgid "Popup Editor"
+msgstr "Редактор спливаючих меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:62
+msgid "%cCore action: %Q"
+msgstr "%cдействие ядра: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:64
+msgid "%cUser action: %Q"
+msgstr "%cдействие користувача: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:65
+msgid "Label: %Q"
+msgstr "Мітка: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:66
+msgid "Category: %Q"
+msgstr "Категорія: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:112
+msgid "The action \"%1\" is disabled"
+msgstr "Дія \"%1\" виключене"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:161
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:259
+msgid "The action \"%1\" does not exist"
+msgstr "Дія \"%1\" не існує"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:255
+msgid "The action \"%1\" is a core action and cannot be destroyed"
+msgstr "Дія \"%1\" є дією ядра й не може бути вилучене"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:392
+msgid "The switch -l requires -c"
+msgstr "Ключу -l потрібно -c"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:409
+msgid "The switch -s requires -w with a combination of flags 'c','x' and 'q'"
+msgstr "Ключу -s потрібно -w у сполученні із прапорами 'c','x' і 'q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/action/libkviaction.cpp:420
+msgid ""
+"The action \"%1\" is already defined as core action and cannot be overridden"
+msgstr "Дія \"%1\" уже визначено як дія ядра й не може бути скасоване"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:116
+msgid "Ops.. internal error"
+msgstr "Упс.. внутрішня помилка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/libkvifiletransferwindow.cpp:125
+msgid "Manage File &Transfers"
+msgstr "Менеджер &накачувань"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:67
+msgid "Choose Avatar - KVIrc"
+msgstr "Вибір аватара - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:72
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+"Будь ласка виберіть картинку аватара. Це може бути повний шлях до локальному "
+"файлу або Web-адреса<br>Якщо ви хочете використати локальний файл, клацніть "
+"по кнопці \"<b>Вибрати</b>\" щоб переглянути локальні каталоги<br>Повний URL "
+"картинки (включаючи <b>http://</b>) можна ввести вручну."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:283
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:358
+msgid "Internal error: I'm not in the user database ?"
+msgstr "Внутрішня помилка: Це не база даних користувачів?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:245
+msgid "Can't set the current avatar to '%Q': failed to start the http transfer"
+msgstr ""
+"Неможливо встановити поточний аватар в '%Q': не можу відкрити HTTP з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:249
+msgid "Can't set the current avatar to '%Q': can't load the image"
+msgstr ""
+"Неможливо встановити поточний аватар в '%Q': помилка завантаження картинки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:351
+msgid "Invalid timeout specified, using default"
+msgstr "Невірно визначений таймаут, використається за замовчуванням"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:389
+msgid "Can't add a file offer for file %Q (huh ? file not readable ?)"
+msgstr "Неможливо додати файл до файлу %Q ( файл що не читає?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:396
+msgid "Added %d secs file offer for file %Q (%Q) and receiver %Q"
+msgstr "На час %d сек файл %Q (%Q) доступний для %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/avatar/libkviavatar.cpp:403
+msgid "Notifying avatar '%Q' to %Q"
+msgstr "Повідомлення про аватаре '%Q' для %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:55
+msgid "&Execute"
+msgstr "&Виконати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:59
+msgid "Params:"
+msgstr "Параметри:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/codetester/codetester.cpp:107
+msgid "Script Tester"
+msgstr "Тестер сценаріїв"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:220
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:294
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:369
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:413
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:543
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:628
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:672
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:722
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:765
+msgid "The config file with id '%Q' is not open"
+msgstr "Конфігураційний файл із ID '%Q' не відкритий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:538
+msgid ""
+"The config file '%Q' has been changed but is opened as read-only: changes "
+"will be lost"
+msgstr ""
+"Конфігураційний файл '%Q' змінений, але відкритий тільки для читання: зміни "
+"будуть загублені"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/config/libkviconfig.cpp:583
+msgid "The config file with id '%Q' is read only"
+msgstr "Конфігураційний файл із ID '%Q' доступний тільки для читання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:178
+msgid "Colors"
+msgstr "Кольори"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:255
+msgid "Context sensitive help"
+msgstr "Контекстна підказка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:256
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1167
+msgid "&Replace"
+msgstr "Заміна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:268
+msgid "Find & Repalce"
+msgstr "Знайти й замінити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1148
+msgid "Word to Find"
+msgstr "Слово для пошуку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1156
+msgid "Replace with"
+msgstr "Замінити на"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1172
+msgid "&Replace in all Aliases"
+msgstr "Замінити у всіх аліасах"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1176
+msgid "&Findnext"
+msgstr "Знайти &наступний"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1181
+msgid "&Replace(WIP)"
+msgstr "Заміна(WIP)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:227
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:431
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:507
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:547
+msgid "The specified toolbar doesn't exist"
+msgstr "Обрана панель інструментів не існує"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:424
+msgid "No action name/index specified"
+msgstr "Не задане ім'я/номер дії"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:441
+msgid "The action parameter didn't evaluate to an index"
+msgstr "Параметр дії не є індексом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:446
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:455
+msgid "The toolbar does not contain the specified item"
+msgstr "Панель інструментів не містить заданого пункту"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbar/libkvitoolbar.cpp:513
+msgid "The action \"%Q\" doesn't exist"
+msgstr "Дія \"%Q\" не існує"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:31
+msgid "Torrent Client"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:361
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:364
+msgid "Standalone Servers"
+msgstr "Одиночні сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:112
+#, fuzzy
+msgid ""
+"%Q doesn't look like a servers.ini file.\n"
+"Import failed."
+msgstr ""
+" %s не схожий на servers.ini файл.\n"
+"Імпорт не виконаний."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:122
+msgid "Choose a servers.ini file"
+msgstr "Виберіть servers.ini файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:146
+msgid "Remote mIRC servers.ini Import Wizard"
+msgstr "Майстер вилученого імпорту mIRC servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:154
+msgid ""
+"<center><b>Welcome!</b><br><br>This wizard will guide you in the process of "
+"downloading a list of IRC servers. Please click \"<b>Next</b>\" to begin the "
+"operation.</center>"
+msgstr ""
+"<center><b>Ласкаво просимо!</b><br><br>Цей майстер проведе вас по процедурі "
+"завантаження списку IRC серверів. Будь ласка кликніть \"<b>Далі</b>\" щоб "
+"почати операцію</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:161
+msgid ""
+"<center>Here you can modify the URL that the list will be downloaded from. "
+"In most cases the default URL is acceptable.</center>"
+msgstr ""
+"<center>Тут ви можете змінити URL з якого буде завантажений список. Для "
+"більшості випадків можна залишити запропоноване значення</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:169
+msgid "URL Selection"
+msgstr "Виберіть URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:173
+msgid "Please wait while the list is being downloaded"
+msgstr "Будь ласка почекайте поки список завантажиться"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:179
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:195
+msgid "List Download"
+msgstr "Завантаження списку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:229
+msgid "Failed to start the server list transfer :("
+msgstr "Не можу почати накачування файлу із сервера :("
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:245
+msgid "File downloaded: processing ..."
+msgstr "Завантаження файлу: виконую ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:255
+msgid "%1 servers imported succesfully"
+msgstr "%1 серверів імпортовано успішно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:257
+msgid "No servers imported"
+msgstr "Сервера не імпортовані"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:326
+msgid "Import from servers.ini"
+msgstr "Імпорт із servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mircimport/libkvimircimport.cpp:333
+msgid "Import from http://www.mirc.co.uk/servers.ini"
+msgstr "Імпорт із http://www.mirc.co.uk/servers.ini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lineedit.cpp:372
+msgid "Unknown echo mode %Q"
+msgstr "Невідомий echo режим %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1611
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:203
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:292
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:359
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:172
+msgid "Widget parameter is not an object"
+msgstr "Параметр Widget не є об'єктом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1616
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:230
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:271
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:250
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:297
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:449
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:485
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:177
+msgid "Widget parameter is not a valid object"
+msgstr "Параметр Widget не є правильним об'єктом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:95
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:115
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:225
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:263
+msgid "Widget object required"
+msgstr "Потрібно Widget об'єкт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_mainwindow.cpp:151
+msgid "Unknown dock area '%Q'"
+msgstr "Невідома область для прикріплення %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:321
+msgid "Unknown alignment: '%Q'"
+msgstr "Невідоме вирівнювання: '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_label.cpp:373
+msgid "Unknown style: '%Q'"
+msgstr "Невідомий стиль %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:84
+msgid "the toolbar cannot be a parent-widget!"
+msgstr "панель інструментів не може бути батьківським віджетом!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbar.cpp:93
+msgid "The parent-widget isn't a MainWindow."
+msgstr "Батьківський віджет - не MainWindow."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:999
+msgid "The array passed as parameter must contain at least 4 elements"
+msgstr "Масив, переданий як параметр, повинен мати як мінімум 4 елементи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1012
+msgid "One of the geometry array parameters is empty"
+msgstr "Один з параметрів у масиві геометрії порожній"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:422
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1017
+msgid "One of the geometry array parameters didn't evaluate to an integer"
+msgstr "Один з параметрів масиву геометрії не є числовим"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:468
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:503
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1032
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1224
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1500
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1044
+msgid "The first parameter didn't evaluate to an array nor an integer"
+msgstr "Перший параметр не визначає безліч і не є цілим числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1419
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1476
+msgid "The array passed as parameter must contain at least 2 elements"
+msgstr "Масив, переданий як параметр, повинен мати як мінімум 2 елементи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:451
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:486
+msgid "One of the array parameters is empty"
+msgstr "Один з параметрів масиву порожній"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:456
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:491
+msgid "One of the array parameters didn't evaluate to an integer"
+msgstr "Один з параметрів масиву не є цілим числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:478
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:804
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:993
+msgid "The array passed as parameter must contain at least 3 elements"
+msgstr "Масив, переданий як параметр, повинен мати як мінімум 3 елементи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:551
+msgid "Unknown orientation"
+msgstr "Невідома орієнтація"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:789
+msgid "Pixmap or Widget parameter is not an object"
+msgstr "Pixmap або Widget параметри не є об'єктом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:798
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:730
+msgid "Widget or Pixmap required "
+msgstr "Потрібно Widget або Pixmap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:852
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:862
+msgid "Invalid mode '%Q'"
+msgstr "Неправильний режим %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:886
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1701
+msgid "Pixmap parameter is not an object"
+msgstr "Параметр Pixmap не є об'єктом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_painter.cpp:891
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1706
+msgid "Pixmap object required"
+msgstr "Потрібно Pixmap об’єкт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1027
+msgid ""
+"$setGeometry() requires either an array as first parameter or four integers"
+msgstr ""
+"$setGeometry() вимагає або масиву як перший параметр або чотирьох цілих чисел"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1180
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:813
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1002
+msgid "One of the colors array parameters is empty"
+msgstr "Один із квітів у масиві параметрів порожній"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1185
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:818
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1007
+msgid "One of the colors array parameters didn't evaluate to an integer"
+msgstr "Один із квітів у масиві параметрів не є цілим числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1123
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:831
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1020
+msgid "A string of 6 digits hex is required"
+msgstr "Потрібна рядок з 6 шестнадцатерічних символів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:842
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1031
+msgid "Not an hex digits"
+msgstr "Не шестнадцятеричні символи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1144
+msgid ""
+"$setForegroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+"$setBackgroundColor вимагає або масиву як перший параметр, або "
+"шестнадцатиричну рядок або трьох цілих чисел"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1219
+msgid ""
+"$setBackgroundColor requires either an array as first parameter, one hex "
+"string or three integers"
+msgstr ""
+"$setBackgroundColor вимагає або масиву як перший параметр, або "
+"шестнадцатиричну рядок або трьох цілих чисел"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1426
+msgid "One of the move array parameters is empty"
+msgstr "Один з параметрів масива порожній"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1431
+msgid "One of the move array parameters didn't evaluate to an integer"
+msgstr "Один з параметрів масиву не є цілим числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1438
+msgid "$move() requires either an array as first parameter or two integers"
+msgstr "$move() вимагає або масиву як перший параметр або чотирьох цілих чисел"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1483
+msgid "One of the resize array parameters is empty"
+msgstr "Один з параметрів масива порожній"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1488
+msgid "One of the resize array parameters didn't evaluate to an integer"
+msgstr "Один з параметрів масиву не є цілим числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1495
+msgid "$resize() requires either an array as first parameter or two integers"
+msgstr "$resize() вимагає або масиву як перший параметр або два цілих числа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1528
+msgid "Invalid parameters"
+msgstr "Невірні параметри"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1560
+msgid "Unknown widget flag '%Q'"
+msgstr "Невідомий прапор widget'a: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1592
+msgid "Unknown style '%Q'"
+msgstr "Невідомий стиль %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1622
+msgid "No Layout associated to the widget "
+msgstr "Немає Layout-а асоційованого з widget-ом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wizard.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:213
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:117
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:150
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_window.cpp:152
+msgid "Can't add a non-widget object"
+msgstr "Неможливо додати не баче об'єкт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1650
+msgid "Parent must be a widget object"
+msgstr "Батько повинен бути widget-об'єктом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1715
+msgid "Null mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_widget.cpp:1740
+#, fuzzy
+msgid "Unknown widget attribute '%Q'"
+msgstr "Невідомий прапор widget'a: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:382
+msgid "No such line number"
+msgstr "Немає такого номера рядка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:500
+msgid "Unknown word wrap '%Q'"
+msgstr "Невідоме слово '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:519
+msgid "Unknown wrap policy'%Q'"
+msgstr "Невідома політика '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:850
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1039
+msgid "$setColor requires either an array as first parameter or three integers"
+msgstr "$setColor вимагає або масиву як перший параметр або трьох цілих чисел"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:975
+msgid "Unknown text format '%Q'"
+msgstr "Невідомий формат тексту %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1071
+msgid " I can't find the specified file '%Q'."
+msgstr "Не можу знайти файл %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1078
+msgid " I cannot read the file %Q'."
+msgstr " Я не можу прочитати файл. %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1113
+msgid "Unknown alignment '%Q'"
+msgstr "Невідоме вирівнювання '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1131
+msgid "Unknown auto formatting mode '%Q'"
+msgstr "Невідомий режим автоматичного форматування '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_multilineedit.cpp:1149
+msgid "Unknown vertical alignment '%Q'"
+msgstr "Невідоме вертикальне вирівнювання '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:207
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:264
+msgid "pix '%Q' doesn't exists"
+msgstr "'%Q' не існує"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:276
+msgid "Can't add a non - popupmenu object"
+msgstr "Неможливо додати об'єкт, що не є спливаючої меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_popupmenu.cpp:302
+msgid "Doesn't a widget object"
+msgstr "Це не об'єкт виджета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:182
+msgid "I can't find the specified file %Q."
+msgstr "Не можу знайти файл %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:222
+#, fuzzy
+msgid "Destination parameter is not an object"
+msgstr "Параметр Widget не є об'єктом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:228
+#, fuzzy
+msgid "Destination must be a pixmap object"
+msgstr "Параметр Widget не є об'єктом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:238
+msgid "Area dimensions are out of destination size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:253
+msgid "Pixmap dimensions are out of destination size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:261
+msgid "Offset width area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_pixmap.cpp:266
+msgid "Offset height area is out of pixmap size "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_hbox.cpp:121
+msgid "The widget must be a child of this hbox"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:191
+msgid "No string parameter given - using empty string"
+msgstr "Не задано строкового параметра - використаємо порожній рядок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:173
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:194
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:214
+#, c-format
+msgid "Item index [%d] is too big - defaulting to $count() - 1 [%d]"
+msgstr "Індекс елемента [%d] занадто великий - повинен бути $count() - 1 [%d]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_combobox.cpp:333
+#, fuzzy
+msgid "Invalid insertion Policy %Q"
+msgstr "Недійсне уведення Policy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:136
+msgid "Unknown mode "
+msgstr "Невідомий режим"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_lcd.cpp:149
+msgid "Unknown segment style "
+msgstr "Невідомий стиль сегмента"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_process.cpp:221
+msgid "Process could not be starded."
+msgstr "Процес не міг бути запущений."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listbox.cpp:279
+msgid "Invalid selection mode '%Q' assuming single"
+msgstr "Неприпустимий режим '%Q', приймаю одиночний"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_toolbutton.cpp:316
+msgid "Unknown text position '%Q'"
+msgstr "Невідома позиція в тексті %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:256
+msgid "Unknown tickmark '%Q'"
+msgstr "Невідома оцінка '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_slider.cpp:271
+msgid "Unknown orientation '%Q'"
+msgstr "Невідома орієнтація %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:500
+msgid "No socket object specified"
+msgstr "Не визначений об'єкт сокета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:506
+msgid "Invalid socket object specified (it doesn't inherit from socket)"
+msgstr "Не дійсний об'єкт сокета (він не успадковується від сокета)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:518
+msgid "There is no connection to accept!"
+msgstr "З'єднання не прийняте!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:591
+#, c-format
+msgid "Value %d for port is out of range (values allowed are from 0 to 65535"
+msgstr ""
+"Значення %d для порту виходить за рамки (значення можуть бути від 0 до 65535)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:596
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:87
+msgid "Another connection in progress"
+msgstr "Запускається наступне з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:648
+msgid "No IPV6 support in this executable"
+msgstr "Немає підтримки IPV6 у цій зборці програми"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:670
+msgid "Invalid IP address specified ('%Q')"
+msgstr "Заданий невірний IP адреса('Q')"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:89
+msgid "Socket creation failed"
+msgstr "Створення сокета не вдалося"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:706
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:727
+msgid "Invalid socket address"
+msgstr "Недійсна адреса сокета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:714
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:735
+msgid "Bind failure"
+msgstr "Помилка зв'язування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:745
+msgid "Listen failure"
+msgstr "Помилка прийому"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:807
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:812
+msgid "unknown"
+msgstr "невідомий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:876
+msgid "Invalid ip address "
+msgstr "Невірний IP адреса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:882
+msgid "Invalid ip address (%Q)"
+msgstr "Невірний IP адреса (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:906
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1013
+msgid "Failed to create the socket"
+msgstr "Помилка створення сокета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:918
+msgid "Failed to setup a nonblocking socket"
+msgstr "Не можу виконати розблокування сокета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:939
+msgid "Connect failure: "
+msgstr "Помилка з'єднання:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:967
+msgid "Connect attempt timed out"
+msgstr "Закінчився час спроб з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:993
+msgid "Can't start the DNS thread"
+msgstr "Не можливо запустити DNS нитка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_socket.cpp:1143
+msgid ""
+"Too much unprocessed incoming data (you've left this socket unmanaged ?)"
+msgstr "Занадто багато неопрацьованих вхідних даних (ви залишили цей сокет?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:149
+msgid "Error in KVS class implementation: processing aborted"
+msgstr "Помилка в KVS класі реалізації: обробка перервана."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:154
+msgid "Processing aborted"
+msgstr "Обробка перервана"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:160
+#, c-format
+msgid "Error near line %d, column %d"
+msgstr "Помилка в рядку %d, символ %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:162
+#, c-format
+msgid "Warning near line %d, column %d"
+msgstr "Попередження в рядку %d, символ %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_xmlreader.cpp:313
+msgid "XML support not available in the Qt library"
+msgstr "XML підтримка не можлива в бібліотеці Qt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:454
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:491
+msgid "Not a widget object"
+msgstr "Не widget об'єкт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:308
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:376
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:460
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:497
+msgid "Can't find the tab "
+msgstr "Не знайдена закладка "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tabwidget.cpp:522
+msgid "Unknown position 'Q%'"
+msgstr "Невідома позиція 'Q%'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_vbox.cpp:123
+msgid "The widget must be a child of this vbox"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_urllabel.cpp:276
+msgid "Not Enough Parameters"
+msgstr "Не досить параметрів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:142
+msgid "The listviewitem cannot be parentless"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:152
+msgid ""
+"The parent of the listviewitem must be either another listviewitem or a "
+"listview"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:403
+msgid "Pixmap object or image Id required"
+msgstr "Потрібно Pixmap об’єкт або малюнок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listviewitem.cpp:413
+msgid ""
+"Error occured: the suitable file '%Q' is not of the correct format or it is "
+"not a valid icon number."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:151
+msgid ""
+"The window identifier preceeded by WinId must be the first object in the "
+"search path"
+msgstr ""
+"Ідентифікатор вікна, якому передує WinId повинен бути першим об'єктом у "
+"шляху пошуку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:167
+msgid "Failed to find one of the wrap path widgets (%Q::%Q)"
+msgstr "Не один зі шляхів до widgets (%Q::%Q) невірні"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_wrapper.cpp:176
+msgid "Failed to find the widget to wrap"
+msgstr "Виджет не знайдений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:119
+msgid "The parent of a layout must be a widget!"
+msgstr "Батько повинен бути виджетом!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_layout.cpp:269
+msgid "Invalid resize mode defaulting to Auto"
+msgstr "Недійсний режим зміни розміру. Використаємо режим Auto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:324
+msgid "Unknown alignment"
+msgstr "Невідоме вирівнювання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_groupbox.cpp:373
+msgid "Unknown orientation: "
+msgstr "Невідома орієнтація: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_listview.cpp:320
+#, fuzzy
+msgid "Invalid selection mode '%Q'"
+msgstr "Неправильний спосіб вибору '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_tbrowser.cpp:99
+msgid "I can't find the specified file '%Q'."
+msgstr "Не можу знайти файл %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:121
+msgid "Can't add a null object"
+msgstr "Неможливо додати не баче об'єкт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:128
+msgid ""
+"Invalid object handle passed as parameter (the object is no longer "
+"existing ?)"
+msgstr ""
+"Як параметр переданий бите посилання на об'єкт (можливо об'єкт вилучений до "
+"передачі як параметр?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:134
+msgid "Object in invalid state"
+msgstr "Об'єкт у невідомому стані"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:140
+msgid "Can't set a non-widget object to be the main widget of a dock window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:146
+msgid "The added widget is not a child of this dock window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_dockwindow.cpp:271
+msgid "Invalid dock area specified"
+msgstr "Неправильна область"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:181
+msgid "Class '%Q' is not definited"
+msgstr "Клас %Q не визначений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:257
+msgid "Inexisting target object for objects.connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:262
+msgid "Inexisting source object for objects.connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:349
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:444
+#, fuzzy
+msgid "The class '%Q' does not exist"
+msgstr "Псевдонім %Q не існує"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:404
+#, fuzzy
+msgid "Object does not exists"
+msgstr "Зазначений об'єкт не існує"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:557
+msgid "Inexisting target object for objects.disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:562
+msgid "Inexisting source object for objects.disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:608
+#, fuzzy
+msgid "Source is not an object"
+msgstr "Параметр Widget не є об'єктом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:614
+#, fuzzy
+msgid "Destination is not an object"
+msgstr "Параметр Widget не є об'єктом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:625
+msgid "Widget, Image or Pixmap required "
+msgstr "Потрібно Widget або Pixmap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:635
+msgid "Widget or Pixmap required"
+msgstr "Потрібно Widget або Pixmap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:714
+msgid "One o more of background, foreground or destination aren't objects"
+msgstr "Один або більше з фонів не є об'єктами"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:720
+#, fuzzy
+msgid "Pixmap objects required"
+msgstr "Потрібно Pixmap об’єкт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:743
+msgid "Values for background are out of image size "
+msgstr "Значення для заднього плану більше розміру зображення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/libkviobjects.cpp:748
+msgid "Values for foreground are out of image size "
+msgstr "Значення для переднього плану більше розміру зображення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:226
+msgid "Empty filename string"
+msgstr "Порожнє ім'я файлу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:271
+msgid "No such open mode: '%Q'"
+msgstr "Немає такого режиму відкриття: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:287
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:293
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:312
+msgid "File is not open!"
+msgstr "Файл не відкритий!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:324
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:348
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:366
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:406
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:417
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:434
+msgid "File is not open !"
+msgstr "Файл не відкритий!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:337
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:369
+msgid "Argument to long, using only first char"
+msgstr "Аргумент занадто довгий, використається тільки перший символ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:339
+msgid "Write error occured !"
+msgstr "Відбулася помилка запису!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:352
+msgid "Read error occured !"
+msgstr "Відбулася помилка читання!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/objects/class_file.cpp:371
+msgid "An error occured !"
+msgstr "Помилка!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:387
+msgid "Missing both encrypt and decrypt key: at least one is needed"
+msgstr "Відсутній ключ кодування й декодування: потрібно принаймні один"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:168
+msgid "Error 0: Success ?"
+msgstr "Помилка 0: Успішно ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:169
+msgid "Unsupported crypt mode"
+msgstr "Непідтримуваний режим криптовання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:170
+msgid "Unsupported direction"
+msgstr "Непідтримувана директива"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:171
+msgid "Unsupported key length"
+msgstr "Непідтримувана довжина ключа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:172
+msgid "Bad key data"
+msgstr "Дані ключа непридатні"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:173
+msgid "Engine not initialized"
+msgstr "Машина не ініціалізована"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:174
+msgid "Invalid direction for this engine"
+msgstr "Недійсна директива"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:175
+msgid "Corrupted message data or invalid decrypt key"
+msgstr "Зіпсоване повідомлення з даними або невірний ключ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:176
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:52
+msgid "Unknown error"
+msgstr "Невідома помилка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:184
+msgid "Ops...encrypt cipher not initialized"
+msgstr "Упс...криптовальный шифр не ініціалізован"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:420
+msgid "Data buffer too long"
+msgstr "Буфер даних занадто великий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:221
+msgid "Ops...decrypt cipher not initialized"
+msgstr "Упс...декриптовальний шифр не ініціалізован"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:277
+msgid "The message is not a hexadecimal string: this is not my stuff"
+msgstr "Повідомлення не є шестнадцатеричним рядком"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:671
+msgid "The message is not a base64 string: this is not my stuff"
+msgstr "Повідомлення не є рядком base64"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:676
+msgid "The message doesn't seem to be encoded with CBC Mircryption"
+msgstr "Це повідомлення схоже не зашифроване CBC Mircryption"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:712
+#, c-format
+msgid ""
+"Cryptographic engine based on the\n"
+"Advanced Encryption Standard (AES)\n"
+"algorithm called Rijndael.\n"
+"The text is first encrypted with rijndael\n"
+"and then converted to %s notation.\n"
+"The keys used are %d bit long and will be padded\n"
+"with zeros if you provide shorter ones.\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"See the rijndael module documentation\n"
+"for more info on the algorithm used.\n"
+msgstr ""
+"Шифрувальна машина заснована на\n"
+"Advanced Encryption Standard (AES)\n"
+"алгоритм називається Rijndael.\n"
+"Текст спочатку шифрується rijndael\n"
+"і конвертується в %s код.\n"
+"Використається %d-ти бітний ключ.\n"
+"Якщо є тільки один ключ,\n"
+"він буде використатися й для шифрування й для дешифрування.\n"
+"Дивитеся документацію модуля rijndael\n"
+"для одержання більше докладної інформації.\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:739
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:749
+msgid "hexadecimal"
+msgstr "шестнадцатеричний"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:759
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:779
+msgid "base64"
+msgstr "base64"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/rijndael/libkvirijndael.cpp:790
+msgid ""
+"Popular cryptographic engine based on the\n"
+"old Blowfish encryption algorithm.\n"
+"The text is first encrypted with Blowfish \n"
+"and then converted to base64 notation.\n"
+"The keys used have variable length and\n"
+"are specified as character strings.\n"
+"You can specify keys long up to 56 bytes (448 bits).\n"
+"If only one key is provided, this engine\n"
+"will use it for both encrypting and decrypting.\n"
+"This engine works in ECB mode by default:\n"
+"if you want to use CBC mode you must prefix\n"
+"your key(s) with \"cbc:\".\n"
+msgstr ""
+"Популярна шифрувальна машина заснована на\n"
+"старому алгоритмі шифрування Blowfish\n"
+"Текст спочатку шифрується Blowfish\n"
+"і конвертується в запис base64.\n"
+"Використовуваний ключ має змінну длинну.\n"
+"Ви можете визначити ключ довгої до 56 байт (448 біт).\n"
+"Якщо задати тільки один ключ, то він буде використатися\n"
+"і для шифрування й для дешифрування\n"
+"Машина працює в режимі ECB за замовчуванням:\n"
+"якщо ви хочете працювати з CBC режимом, ви повинні\n"
+"використати ключ(і) \"cbc:\".\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:61
+msgid "Drop here the icons from the toolbars to remove them"
+msgstr "Перетягнете сюди іконки з панелі інструментів щоб видалити їх"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:128
+msgid "ToolBar Properties"
+msgstr "Властивості панелі інструментів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:144
+msgid "Icon"
+msgstr "Іконка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:160
+msgid "Id"
+msgstr "Id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:217
+msgid "Please choose the icon for the ToolBar"
+msgstr "Будь ласка виберіть іконку для панелі інструментів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "Invalid ToolBar Label"
+msgstr "Невірна мітка панелі інструментів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:243
+msgid "The ToolBar Label can't be empty!"
+msgstr "Мітка панелі інструментів не може бути порожній!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:256
+msgid "Duplicate ToolBar Id"
+msgstr "Дублікат Id панелі інструментів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:257
+msgid ""
+"The specified ToolBar Id already exists.<br>Would you like KVIrc to assign "
+"it automatically (so it doesn't collide with any other toolbar) or you "
+"prefer to do it manually ?"
+msgstr ""
+"Заданий Id панелі інструментів уже існує<br> Ви хочете щоб KVIrc призначив "
+"його автоматично (при цьому будуть виключені протиріччя з іншими панелями) "
+"або зробите це вручну?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Manually"
+msgstr "Вручну"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:260
+msgid "Automatically"
+msgstr "Автоматично"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:278
+msgid "Hide Advanced"
+msgstr "Сховати додаткові настроювання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:287
+msgid "Customize Toolbars"
+msgstr "Користувальницькі панелі інструментів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:296
+msgid "New ToolBar"
+msgstr "Нова панель інструментів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:300
+msgid "Delete ToolBar"
+msgstr "Видалити панель інструментів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:304
+msgid "Edit ToolBar"
+msgstr "Редагувати панель інструментів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:312
+msgid "Export ToolBar"
+msgstr "Експорт панелі інструментів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:373
+msgid "Confirm ToolBar Deletion"
+msgstr "Підтвердите видалення панелі інструментів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:374
+msgid "Do you really want to delete toolbar \"%1\" ?"
+msgstr "Ви дійсно хочете видалити панель інструментів \"%1\" ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:397
+msgid "ToolBar Export"
+msgstr "Експорт панелі інструментів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:398
+msgid "Do you want the associated actions to be exported with the toolbar ?"
+msgstr "Ви хочете експортувати дії, пов'язані з панеллю інструментів ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:454
+msgid "Unable to write to the toolbar file."
+msgstr "Неможливо зберегти панель інструментів у файл."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:465
+msgid "Please specify the properties for the toolbar \"%1\""
+msgstr "Будь ласка визначите властивості для панелі інструментів \"%1\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:491
+msgid "Please specify the properties for the new toolbar"
+msgstr "Будь ласка визначите властивості для нової панелі інструментів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:492
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/toolbareditor/toolbareditor.cpp:493
+msgid "My ToolBar"
+msgstr "Моя панель інструментів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:63
+msgid "Window with ID '%Q' not found"
+msgstr "Вікно з ID '%Q' не знайдено"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:67
+msgid "The specified window (%Q) is not a channel/query/DCC chat"
+msgstr "Задане вікно (%Q) не є каналом/приватом/DCC чатом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:108
+msgid "File not found or empty"
+msgstr "Файл не знайдений або порожній"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:114
+msgid "I can't open that file"
+msgstr "Я не можу відкрити цей файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:122
+msgid "Could not paste file"
+msgstr "Не можу вставити файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:218
+#, fuzzy
+msgid "The specified window (%Q) is not a channel/query/dcc"
+msgstr "Задане вікно (%s) не є каналом/приватом/dcc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/spaste/libkvispaste.cpp:271
+#, fuzzy
+msgid "Slow-paste ID:%d Window:%Q"
+msgstr "Повільна вставка ID:%d Вікно:%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:240
+msgid "Plugin not found. Please check the plugin-name and path."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:247
+#, fuzzy
+msgid "Error while loading plugin."
+msgstr "Помилка завантаження модуля"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:311
+msgid "This plugin does not export the desired function."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/plugin.cpp:327
+msgid ""
+"The plugin has no function to free memory. This can result in Memory Leaks!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:209
+#, c-format
+msgid "No environment variable found, please don't use the %% in the request"
+msgstr "Ніякий змінної не найденно, будь ласка не використайте %% "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:482
+msgid "Invalid DCOP parameter syntax"
+msgstr "Недійсний синтаксис аргументу DCOP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:495
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:516
+msgid "The specified parameter is not an integer"
+msgstr "Заданий аргумент не є цілим числом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:521
+#, c-format
+msgid "Unsupported DCOP parameter type %s"
+msgstr "Непідтримуваний тип аргументу DCOP %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:534
+msgid "DCOP call failed"
+msgstr "Помилка звертання до DCOP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/system/libkvisystem.cpp:599
+msgid "DCOP calls are available only when KDE support is compiled in"
+msgstr "Звертання до DCOP доступні тільки при зборці додатка з підтримкою КДЕ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1157
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1202
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1408
+#, c-format
+msgid "The window with id '%s' does not exist"
+msgstr "Вікно з ID '%s' не існує"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:851
+msgid "Window type or 'all' expected as first parameter"
+msgstr "Тип вікна або 'all' очікується як перший аргумент"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:938
+msgid "Invalid IRC context id '%Q'"
+msgstr "Невірний IRC контекст '%Q'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1045
+msgid "The specified IRC context is not valid: creating a context free window"
+msgstr ""
+"Зазначений IRC контекст не дійсний: створюється вільне контекстне вікно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1119
+msgid "The specified window is not of type \"userwnd\""
+msgstr "Зазначене вікно не ставиться до типу \"userwnd\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1208
+msgid "Window doesn't have input widget"
+msgstr "Вікно не має виджета уведення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1363
+msgid "The encrypt key wasn't a valid hexadecimal string"
+msgstr "Ключ був кодирован не правильної шестнадцатеричной рядком"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1377
+msgid "The decrypt key wasn't a valid hexadecimal string"
+msgstr "Ключ був декодирован не правильної шестнадцатеричной рядком"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1414
+msgid "Both -n and -m switchess specified, -n takes precedence"
+msgstr "Визначені прапори -m і -n, прапор -n має пріоритет"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1424
+msgid "No encrypt key specified: can't allocate engine"
+msgstr "Не заданий ключ для шифрування: не можу стартувати движок шифрування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1446
+msgid "Unknown engine error"
+msgstr "Невідома помилка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1449
+msgid "Failed to initialize the specified crypt engine: %Q"
+msgstr "Не можу запустити задану шифрувальну машину: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1453
+msgid "The crypt engine \"%Q\" does not exist"
+msgstr "Дія \"%Q\" не існує"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/window/libkviwindow.cpp:1458
+msgid "This executable has been compiled without crypt support"
+msgstr "Ця зборка програми не підтримує шифрування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/tmphighlight/libkvitmphighlight.cpp:138
+msgid "Current window is not a channel"
+msgstr "Поточне вікно не є каналом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:87
+msgid "Raw Event"
+msgstr "Заготівлі подій"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:97
+msgid "Edit the raw event handler name."
+msgstr "Редагування імені оброблювача події."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:179
+msgid "&Add Raw Event..."
+msgstr "&Додати заготівлю події..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "New Raw Event"
+msgstr "Нова заготівля події"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:219
+msgid "Enter the numeric code of the message (0-999)"
+msgstr "Уведіть числовий код повідомлення (0-999)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:405
+msgid "Unable to write to the raw event file."
+msgstr "Не можу записати подію у файл."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:441
+msgid "Unable to write to the raw events file."
+msgstr "Не можу записати події у файл."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/raweditor/raweditor.cpp:512
+msgid "Raw Editor"
+msgstr "Редактор заготівель"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:219
+msgid "A really lame text transformation engine :D"
+msgstr "Дійсно ламерский текстовий перетворювач"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/lamerizer/libkvilamerizer.cpp:229
+msgid "A really lame text transformation engine: Light Version."
+msgstr "Дійсно ламерский текстовий перетворювач: полегшена версія"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:82
+#, c-format
+msgid "Socket Spy [IRC Context %u]"
+msgstr "Сокет агент [Контекст IRC %u]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:92
+#, c-format
+msgid ""
+"<nobr><font color=\"%s\"><b>Socket Spy</b></font> <font color=\"%s\">[IRC "
+"Context %u]</font></nobr>"
+msgstr ""
+"<nobr><font color=\"%s\"><b>Сокет агент</b></font> <font color=\"%s\">"
+"[Контекст IRC %u]</font></nobr>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:112
+msgid "Socket open"
+msgstr "Сокет відкритий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/socketspy/socketspywindow.cpp:117
+msgid "Socket closed"
+msgstr "Сокет закритий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:149
+msgid "Internal unique name for the action"
+msgstr "Внутрішнє унікальне ім'я дії"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:151
+msgid "Label:"
+msgstr "Мітка:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:155
+msgid ""
+"Visible name for this action.<br>This string will be displayed to the user "
+"so it is a good idea to use $tr() here"
+msgstr ""
+"Видиме ім'я для цього дії<br>Цей рядок буде показана користувачеві, гарною "
+"ідеєю буде використання тут $tr()"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:166
+msgid "Action code"
+msgstr "Код дії"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:168
+msgid "Code"
+msgstr "Код"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:174
+msgid "Category:"
+msgstr "Категорія:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:178
+msgid "Choose the category that best fits for this action"
+msgstr "Виберіть категорію, найбільш придатну для цієї дії"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:180
+msgid "Description:"
+msgstr "Опис:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:184
+msgid ""
+"Visible short description for this action.<br>This string will be displayed "
+"to the user so it is a good idea to use $tr() here"
+msgstr ""
+"Видимий короткий опис цього дії<br>Цей рядок буде показана користувачеві, "
+"гарною ідеєю буде використання тут $tr()"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:186
+msgid "Small Icon:"
+msgstr "Маленька іконка:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:194
+msgid ""
+"The small icon associated to this action.<br>It will appear at least in the "
+"popup menus when this action is inserted.<br>It should be 16x16 pixels."
+msgstr ""
+"Маленька іконка, асоційована із цим дією<br>Вона буде показуватися принаймні "
+"в спливаючим меню при вставці цієї дії.<br>Повинна бути 16х16 пікселей."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:200
+msgid "Big Icon:"
+msgstr "Більша іконка:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:209
+msgid ""
+"The big icon associated to this action.<br>It will appear at least in the "
+"toolbar buttons when this action is inserted.<br>It should be 32x32 pixels."
+msgstr ""
+"Більша іконка, асоційована із цим дією<br>Вона буде показуватися принаймні "
+"на кнопках панелі інструментів при вставці цієї дії.<br>Повинна бути 32х32 "
+"пикселя."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:215
+msgid "Key Sequence:"
+msgstr "Комбінація клавіш:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:219
+msgid ""
+"Optional keyboard sequence that will activate this action.<br>The sequence "
+"should be expressed as a string of up to four key codes separated by commas "
+"eventually combined with the modifiers \"Ctrl\",\"Shift\",\"Alt\" and \"Meta"
+"\".<br>Examples of such sequences are \"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl+X,"
+"Ctrl+C\" ..."
+msgstr ""
+"Необов'язкова комбінація клавіш яка активує це дія<br> Комбінація повинна "
+"бути визначена як рядок утримуюча до чотирьох клавіш, об'єднаних з "
+"модифікаторами \"Ctrl\",\"Shift\",\"Alt\" і \"Meta\". Якщо ви задаєте кілька "
+"комбінацій, їх потрібно розділити комами<br>Приклади таких комбінацій: \"Ctrl"
+"+X\", \"Ctrl+Alt+Z\", \"Ctrl+X,Ctrl+C\" ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:240
+msgid "Needs IRC Context"
+msgstr "Потрібно IRC контекст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:242
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window belongs to an irc context"
+msgstr ""
+"Включите цю опцію якщо дія повинне бути доступно тільки у випадку коли "
+"активне вікно належить IRC контексту."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:250
+msgid "Needs IRC Connection"
+msgstr "Потрібно IRC з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:252
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window has an active IRC connection"
+msgstr ""
+"Включите цю опцію якщо дія повинне бути доступно тільки у випадку коли "
+"активне вікно має активне IRC з'єднання."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:260
+msgid "Enable at Login"
+msgstr "Доступно при вході"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:261
+msgid ""
+"Check this option if this action should be enabled also during the login "
+"operations (so when the logical IRC connection hasn't been estabilished yet)"
+msgstr ""
+"Включите цю опцію якщо дія повинне бути доступно вже під час входу (коли IRC "
+"з'єднання ще не встановлене)."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:265
+msgid "Enable Only in Specified Windows"
+msgstr "Доступно тільки в заданих вікнах"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:267
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is of a specified type"
+msgstr ""
+"Включите цю опцію якщо дія повинне бути доступно тільки в активних вікнах "
+"заданих типів."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:271
+msgid "Enable in Console Windows"
+msgstr "У вікнах терміналів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:272
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a console"
+msgstr ""
+"Включите цю опцію якщо дія повинне бути доступно тільки в активному вікні "
+"термінала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:277
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:288
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:299
+msgid "Only If There Are Selected Users"
+msgstr "Тільки якщо є обрані користувачі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:278
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:300
+msgid ""
+"This will enable the action only if there are selected users in the active "
+"window"
+msgstr ""
+"Це зробить доступним дію тільки якщо є обрані користувачі в активному вікні"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:282
+msgid "Enable in Channel Windows"
+msgstr "У вікнах каналів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:283
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a channel"
+msgstr ""
+"Включите цю опцію якщо дія повинне бути доступно тільки в активному вікні "
+"каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:293
+msgid "Enable in Query Windows"
+msgstr "У вікнах приватів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:294
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a query"
+msgstr ""
+"Включите цю опцію якщо дія повинне бути доступно тільки в активному вікні "
+"привата"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:304
+msgid "Enable in DCC Chat Windows"
+msgstr "У вікнах DCC Чатів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:305
+msgid ""
+"Check this option if this action should be enabled only when the active "
+"window is a dcc chat"
+msgstr ""
+"Включите цю опцію якщо дія повинне бути доступно тільки в активному вікні "
+"DCC чата"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:627
+msgid "Action"
+msgstr "Дія"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:680
+msgid "New Action"
+msgstr "Нова дія"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:683
+msgid "Delete Actions"
+msgstr "Видалити дії"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:686
+msgid "Export Actions..."
+msgstr "Експортувати дії..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:773
+msgid "Unable to write to the actions file."
+msgstr "Неможливо зберегти файл із діями."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:823
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:824
+msgid "My Action"
+msgstr "Моя дія"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:825
+msgid "Put here a short description of your action"
+msgstr "Укажіть тут короткий опис вашої дії"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:925
+msgid "Action Editor"
+msgstr "Редактор дій"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/actioneditor/actioneditor.cpp:938
+msgid "Apply"
+msgstr "Застосувати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:63
+msgid "Outgoing traffic"
+msgstr "Вихідний трафік"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/iograph/libkviiograph.cpp:67
+msgid "Incoming traffic"
+msgstr "Вхідний трафік"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_crypt.cpp:160
+msgid "Invalid crypt engine"
+msgstr "Помилка криптовальної машини"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:296
+msgid "Directory"
+msgstr "Каталог"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:315
+msgid "Socket"
+msgstr "Сокет"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:332
+msgid "Fifo"
+msgstr "FiFo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:349
+msgid "Block device"
+msgstr "Блоковий устрій"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:366
+msgid "Char device"
+msgstr "Символьний устрій"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_mediatype.cpp:429
+msgid "Octet stream (unknown)"
+msgstr "Octet потік (невідомий)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/ext/kvi_osinfo.cpp:413
+msgid "Unknown "
+msgstr "Невідомий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:181
+msgid "The specified network has no server entries"
+msgstr "Задана мережа не має серверів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:239
+msgid ""
+"The server specification seems to be in the net:<string> but the network "
+"couln't be found in the database"
+msgstr ""
+"Специфікація сервера, здається, перебуває в net:<string> але мережа не "
+"знайдена в базі даних"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/irc/kvi_ircserverdb.cpp:261
+msgid ""
+"The server specification seems to be in the id:<string> form but the "
+"identifier coulnd't be found in the database"
+msgstr ""
+"Специфікація сервера, здається, перебуває в id:<string> але ідентифікатор не "
+"знайдений у базі даних"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:71
+msgid "Aborted"
+msgstr "Перервано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:96
+msgid "No request"
+msgstr "Немає запиту"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:141
+msgid "No filename specified for the \"StoreToFile\" processing type"
+msgstr "Немає відповідного файлу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:160
+msgid "Invalid URL: Missing hostname"
+msgstr "Невірний URL: Хост не знайдений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:167
+msgid "Unsupported protocol %1"
+msgstr "Непідтримуваний протокол %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:189
+msgid "Unable to start the DNS lookup"
+msgstr "Не можу запустити пошук DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:194
+#, c-format
+msgid "Looking up host %s"
+msgstr "Визначення IP для адреси %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:210
+#, fuzzy
+msgid "Host %s resolved to %Q"
+msgstr "Хост %s має адреса %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:246
+msgid "Unable to start the request slave thread"
+msgstr "Неможливо відіслати запит вторинної нитки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:251
+#, fuzzy
+msgid "Contacting host %Q on port %u"
+msgstr "Підключення до сервера %s на порт %u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:271
+msgid "Connection established, sending request"
+msgstr "З'єднання встановлене, відсилаю запит"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:322
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:51
+msgid "Success"
+msgstr "Успішно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:429
+msgid "Failed to rename the existing file, please rename manually and retry"
+msgstr ""
+"Не можу перейменувати існуючий файл, перейменуйте вручну й спробуйте знову"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:447
+#, fuzzy
+msgid "Can't open file \"%Q\" for writing"
+msgstr "Неможливо відкрити файл \"%s\" для запису"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:497
+#, c-format
+msgid "Invalid HTTP response: %s"
+msgstr "Отримана помилка HTTP: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:503
+#, c-format
+msgid "Received HTTP response: %s"
+msgstr "Отримана відповідь HTTP: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:628
+msgid "Stream exceeding maximum length"
+msgstr "Розмір потоку перевищив максимальну довжину"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:661
+msgid "Header too long: exceeded 4096 bytes"
+msgstr "Заголовок занадто довгий, перевищує 4096 байт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:710
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:852
+msgid "Stream exceeded expected length"
+msgstr "Розмір потоку перевищив очікувану довжину"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:798
+msgid "Protocol error: invalid chunk size"
+msgstr "Помилка протоколу: помилковий розмір блоку даних"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:818
+#, fuzzy
+msgid "Chunk header too long: exceeded 4096 bytes"
+msgstr "Заголовок занадто довгий, перевищує 4096 байт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:987
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1193
+msgid "Operation timed out"
+msgstr "Час операції минув"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1003
+#, fuzzy
+msgid "Unexpected SSL error"
+msgstr "Несподіваний символ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1016
+msgid "Failed to enter non blocking mode"
+msgstr "Неможливо ввести в не-блоковому режимі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1021
+msgid "Invalid target address"
+msgstr "Невірна адреса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1056
+#, fuzzy
+msgid "Failed to initialize the SSL context"
+msgstr "Не можу запустити задану шифрувальну машину: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1058
+#, fuzzy
+msgid "Failed to initialize the SSL connection"
+msgstr "Не можу підключитися: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1075
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:99
+msgid "Remote end has closed the connection"
+msgstr "Сервер закрив з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1087
+#, fuzzy
+msgid "Unrecoverable SSL error during handshake"
+msgstr "Фатальна помилка DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1272
+msgid "Operation timed out (while selecting for read)"
+msgstr "Час операції минув (при читанні)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/net/kvi_http.cpp:1382
+msgid "This KVIrc executable has no SSL support"
+msgstr "KVirc зібраний без підтримки SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1147
+msgid "Back"
+msgstr "Назад"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/tal/kvi_tal_wizard.cpp:268
+#, fuzzy
+msgid "Next"
+msgstr "&Далі >"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:168
+#, fuzzy
+msgid "%1 bytes"
+msgstr "байти"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:172
+msgid "%1 KB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:176
+msgid "%1 MB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:181
+msgid "%1 GB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_qstring.cpp:185
+msgid "%1 TB"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:53
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:620
+msgid "Internal error"
+msgstr "Внутрішня помилка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:54
+msgid "Unknown command"
+msgstr "Невідома команда"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:55
+msgid "Missing closing brace"
+msgstr "Немає закриваючої дужки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:56
+msgid "Unexpected end of command in string"
+msgstr "Несподіване закінчення команди в рядку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:57
+msgid "Unexpected end of command in dictionary key"
+msgstr "Несподіване закінчення команди в ключі словніка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:58
+msgid "Switch dash without switch letter"
+msgstr "Спроба перемикання без відповідних букв"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:59
+msgid "Unknown function"
+msgstr "Невідома функція"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:60
+msgid "Unexpected end of command in parenthesis"
+msgstr "Несподіваний кінець команди в пропозиції"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:61
+msgid "Unexpected end of command in function parameters"
+msgstr "Несподіваний кінець команди в аргументах функції"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:62
+msgid "Missing variable name"
+msgstr "Не знайдене ім'я змінної"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:63
+msgid "Variable or identifier expected"
+msgstr "Очікується змінна або ідентифікатор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:64
+msgid "Left operand is not a number"
+msgstr "Лівий операнд не число"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:65
+msgid "Multiple operations not supported for numeric operators"
+msgstr "Множинні операції не підтримуються для числових операндов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:67
+msgid "Modulo by zero"
+msgstr "Нуль по модулі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:68
+msgid "Right operand is not a number"
+msgstr "Правий оператор не число"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:69
+msgid "Unterminated expression (missing ')' ?)"
+msgstr "Вираження не закрите (відсутній ')' ?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:70
+msgid "Unterminated subexpression (Parenthesis mismatch)"
+msgstr "Подвираження не закрите (Розбіжність слів)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:71
+msgid "Unexpected character"
+msgstr "Несподіваний символ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:73
+msgid "No host to resolve"
+msgstr "Неможливо визначити IP адреса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:74
+msgid "(DNS Internal) Unsupported address family"
+msgstr "(Внутрішній DNS) Не підтримуване сімейство адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:75
+msgid "Valid name but the host has no IP address"
+msgstr "Ім'я хоста вірно, але для нього немає IP адреси"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:76
+msgid "Unrecoverable nameserver error (crashed ?)"
+msgstr "Фатальна помилка DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:77
+msgid "Dns temporaneous fault (try again)"
+msgstr "Випадкова помилка DNS (намагаюся знову)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:78
+msgid "(DNS Internal) Bad flags"
+msgstr "(Внутрішній DNS) Невірні прапори"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:79
+msgid "(DNS Internal) Out of memory"
+msgstr "(Внутрішній DNS) Не вистачає пам'яті"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:80
+msgid "(DNS Internal) Service not supported"
+msgstr "(Внутрішній DNS) Сервіс не підтримується"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:81
+msgid "Unknown node (host not found)"
+msgstr "Хост не знайдений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:82
+msgid "(DNS Internal) Unsupported socket type"
+msgstr "(Внутрішній DNS) Непідтримуваний тип сокета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:83
+msgid "Dns query failed"
+msgstr "Помилка запиту DNS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:84
+msgid "This KVIrc executable has no IPV6 support"
+msgstr "KVirc зібраний без підтримки IPV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:85
+msgid "Host not found"
+msgstr "Адреса не знайдена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:86
+msgid "(DNS Internal) IPC failure (slave data corrupted)"
+msgstr "(Внутрішній DNS) Помилка IPC (вторинні дані не вірні)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:88
+msgid "Invalid IP address"
+msgstr "Невірний IP адреса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:90
+msgid "Failed to put the socket in non blocking mode"
+msgstr "Неможливо підключити сокет у не-блоковому режимі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:91
+msgid "Bad file descriptor"
+msgstr "Невірний деСкріптор файлу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:92
+msgid "Out of address space"
+msgstr "Вихід за адресний простір"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:93
+msgid "Connection refused"
+msgstr "У з'єднанні відмовлене"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:94
+msgid "Kernel networking panic"
+msgstr "Паніка мережного ядра"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:95
+msgid "Connection timed out"
+msgstr "Закінчився час з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:96
+msgid "Network is unreachable"
+msgstr "Мережа не доступна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:97
+msgid "Broken pipe"
+msgstr "Потік зруйнований"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:98
+msgid "Invalid proxy address"
+msgstr "Невірна адреса проксі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:100
+msgid "Invalid irc context id"
+msgstr "Невірний ідентифікатор в irc контексту"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:101
+msgid "Error in loading module"
+msgstr "Помилка завантаження модуля"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:102
+msgid "No such module command"
+msgstr "Не знайдена команда модуля"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:103
+msgid "No such module function"
+msgstr "Не знайдена функція модуля"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:104
+msgid "Left operand is not a dictionary reference"
+msgstr "Лівий операнд не є словніківим посиланням"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:105
+msgid "Right operand is not a dictionary reference"
+msgstr "Правий операнд не є словніківим посиланням"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:106
+msgid "Missing object class name"
+msgstr "Відсутній клас об'єкта"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:107
+msgid "No such object class"
+msgstr "Немає такого класу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:108
+msgid "No such object"
+msgstr "Немає такого об'єкта"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:109
+msgid "No such object function"
+msgstr "Немає такої функції в об'єкта"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:110
+msgid "Invalid left operand"
+msgstr "Невірний лівий операнд"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:111
+msgid "Not enough parameters"
+msgstr "Не досить аргументів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:112
+msgid "Integer parameter expected"
+msgstr "Очікується аргумент ціле число"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:113
+msgid "Invalid parameter"
+msgstr "Невірний аргумент"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:114
+msgid "No such file"
+msgstr "Немає такого файлу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:115
+msgid "Open parenthesis expected"
+msgstr "Очікується ключове слово"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:116
+msgid "Open brace expected"
+msgstr "Очікується відкриття дужок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:117
+msgid "Can't kill a builtin class"
+msgstr "Не можу видалити створений клас"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:118
+#, fuzzy
+msgid "The SOCKSV4 protocol lacks IpV6 support"
+msgstr "У протоколі SOCKSV4 немає підтримки Ip6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:119
+msgid "Unrecognized proxy reply"
+msgstr "Відповідь проксі не визнана"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:120
+msgid "Proxy response: auth failed: access denied"
+msgstr "Проксі відповіла: Помилка аутентифікації, доступ закритий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:121
+msgid "Proxy response: No acceptable auth method: request rejected"
+msgstr "Проксі відповіло: Неприпустимий метод аутентифікації, запит відкинуть"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:122
+msgid "Proxy response: request failed"
+msgstr "Проксі відповіла: Помилка запиту"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:123
+msgid "Proxy response: ident failed"
+msgstr "Проксі відповіла: Помилка ідентифікації"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:124
+msgid "Proxy response: ident not matching"
+msgstr "Проксі відповіла: Ідентифікація не порівнянна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:125
+msgid "Proxy response: general SOCKS failure"
+msgstr "Проксі відповіла: Помилка SOCKS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:126
+msgid "Proxy response: connection not allowed"
+msgstr "Проксі відповіло: З'єднання заборонене"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:127
+msgid "Proxy response: network unreachable"
+msgstr "Проксі відповіла: Мережа не доступна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:128
+msgid "Proxy response: host unreachable"
+msgstr "Проксі відповіло: Хост не доступне"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:129
+msgid "Proxy response: connection refused"
+msgstr "Проксі відповіло: У з'єднанні відмовлене"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:130
+msgid "Proxy response: TTL expired"
+msgstr "Проксі відповіло: TTL минув"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:131
+msgid "Proxy response: command not supported"
+msgstr "Проксі відповіла: Команда не підтримується"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:132
+msgid "Proxy response: address type not supported"
+msgstr "Проксі відповіло: Тип адреси не підтримується"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:133
+msgid "Proxy response: invalid address"
+msgstr "Проксі відповіло: Невірну адресу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:134
+msgid "Invalid port number"
+msgstr "Невірний номер порту"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:135
+msgid "Socket not connected"
+msgstr "Сокет не підключений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:136
+msgid "Insufficient resources to complete the operation"
+msgstr "Недостатньо ресурсів для завершення операції"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:137
+msgid "Can't setup a listening socket : bind failed"
+msgstr "Не можу запустити прослуховування сокета: Помилка зв'язку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:138
+msgid "Can't resolve the localhost name"
+msgstr "Не можу одержати ім'я локальної адреси"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:139
+msgid "Unsupported image format"
+msgstr "Непідтримуваний формат картинки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:140
+msgid "Can't open file for appending"
+msgstr "Не можу відкрити файл для дозаписи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:542
+msgid "Can't open file for writing"
+msgstr "Не можу відкрити файл на запис"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:142
+msgid "File I/O error"
+msgstr "Помилка файлового уведення/висновку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:143
+msgid "Acknowledge error"
+msgstr "Визнано помилкою"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:729
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:982
+msgid "Can't open file for reading"
+msgstr "Не можу відкрити файл для читання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:145
+msgid "Can't send a zero-size file"
+msgstr "Не можу відправити файл нульового розміру"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:146
+msgid "Missing popup name"
+msgstr "Не знайдене ім'я спливаючого меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:147
+msgid "'item', 'popup', 'label' or 'separator' keyword expected"
+msgstr "Очікується ключове слово 'item', 'popup', 'label' або 'separator'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:148
+msgid "Self modification not allowed"
+msgstr "Автомодифікація не припустима"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:149
+msgid "UNUSED"
+msgstr "НЕ ВИКОРИСТАЄТЬСЯ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:150
+msgid "Feature not available"
+msgstr "Ця можливість не доступна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:151
+msgid "Unexpected characters in array index"
+msgstr "Несподіваний символ в індексі масиву"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:152
+msgid "Unexpected end in expression"
+msgstr "Несподіване закінчення вираження"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:153
+msgid "Unexpected end in array index"
+msgstr "Несподіване закінчення в індексі масиву"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:154
+msgid "Connection thru HTTP proxy failed"
+msgstr "Підключення до HTTP проксі завершилася невдачею"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:155
+msgid "Case , match , regexp , default or break keyword expected"
+msgstr "Очікуються ключові слова Case , match , regexp , default або break "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:156
+msgid "Access denied"
+msgstr "Доступ закритий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:157
+msgid "Address already in use"
+msgstr "Адреса вже використається"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:158
+msgid "Can't assign the requested address"
+msgstr "Не можу одержати запитувану адресу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:159
+msgid "Connection reset by peer"
+msgstr "З'єднання розірване"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:160
+msgid "Host unreachable (no route to host)"
+msgstr "Хост недоступний (немає маршруту)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:161
+msgid "Variable expected"
+msgstr "Очікується змінна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:162
+msgid "Invalid array index: positive integer expected"
+msgstr "Невірний індекс масиву: очікується позитивне ціле число"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:163
+msgid "listen() call failed"
+msgstr "Помилка звертання до listen()"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:164
+msgid "This executable has been compiled without SSL support"
+msgstr "Ця зборка програми не підтримує SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:165
+msgid "Secure Socket Layer error"
+msgstr "Помилка SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:166
+msgid "Slash (/) character expected"
+msgstr "Очікується символ слеша (/)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:167
+msgid "Unknown string manipulation operation"
+msgstr "Операція обробки невідомого рядка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:168
+msgid "Operation aborted"
+msgstr "Операція перервана"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:169
+msgid "Unexpected token"
+msgstr "Несподіваний символ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:170
+msgid "Scope object already defined (unexpected @)"
+msgstr "Об'єкт уже визначений (несподіваний @)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/core/kvi_error.cpp:171
+msgid "There is no $this pointer in this scope (unexpected @)"
+msgstr "Немає покажчика $this (несподіваний @)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:140
+msgid "Operation cancelled"
+msgstr "Операція скасована"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:170
+msgid "File write error"
+msgstr "Помилка запису у файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:176
+msgid "File read error"
+msgstr "Помилка читання файлу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:324
+msgid "Packaging file %Q"
+msgstr "Упаковую файл %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:332
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:779
+#, fuzzy
+msgid "Failed to open a source file for reading"
+msgstr "Не можу відкрити файл для читання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:383
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:817
+msgid "Compression library initialization error"
+msgstr "Помилка ініціалізації бібліотеки стиску"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:394
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:828
+msgid "Compression library error"
+msgstr "Помилка бібліотеки стиску"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:465
+#, fuzzy
+msgid "Compression library internal error"
+msgstr "Упс.. внутрішня помилка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:485
+msgid "Error while compressing a file stream"
+msgstr "Помилка стиску потоку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:526
+msgid "Creating package..."
+msgstr "Створюю пакет..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:527
+msgid "Writing package header"
+msgstr "Записую заголовок пакета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:571
+msgid "Writing informational fields"
+msgstr "Записую інформацію"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:597
+msgid "Writing package data"
+msgstr "Записую дані"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:659
+#, fuzzy
+msgid "The file specified is not a valid KVIrc package"
+msgstr "Задана версія \"%Q\" не має формату рядка версії"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:668
+msgid ""
+"The package has an invalid version number, it might have been created by a "
+"newer KVIrc"
+msgstr ""
+"Пакет має не вірний номер версії. Можливо, він створений більше новою "
+"версією KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:714
+msgid "Invalid info field: the package is probably corrupt"
+msgstr "Пакет ушкоджений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:745
+msgid ""
+"The package contains compressed data but this executable does not support "
+"compression"
+msgstr "Пакет містить стислі дані, але ця зборка не підтримує стиск"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:771
+#, fuzzy
+msgid "Failed to create the target directory"
+msgstr "Не можу створити папку для зберігання файлів теми"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:784
+msgid "Unpacking file %Q"
+msgstr "Розпаковую файл %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:916
+msgid "Error in compressed file stream"
+msgstr "Помилка в стислому потоці"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:990
+msgid "Reading package..."
+msgstr "Зчитую пакет..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:991
+msgid "Reading package header"
+msgstr "Зчитую заголовок пакета..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:998
+msgid "Reading package data"
+msgstr "Читаю дані про пакет"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/file/kvi_packagefile.cpp:1017
+msgid "Invalid data field: the package is probably corrupt"
+msgstr "Ушкоджені дані пакета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1127
+msgid "Select color"
+msgstr "Вибір кольорів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1128
+msgid "&Basic colors"
+msgstr "&Базові кольори"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1129
+msgid "&Custom colors"
+msgstr "&Користувальницькі кольори"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1130
+msgid "&Red"
+msgstr "&Червоний"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1131
+msgid "&Green"
+msgstr "&Зелений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1132
+msgid "Bl&ue"
+msgstr "&Синій"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1133
+msgid "&Define Custom Colors >>"
+msgstr "&Визначите користувальницькі кольори >>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1134
+msgid "&Add to Custom Colors"
+msgstr "&Додати до користувальницьких квітів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1136
+msgid "Select Font"
+msgstr "Вибір шрифту"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1137
+msgid "&Font"
+msgstr "&Шрифт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1138
+msgid "Font st&yle"
+msgstr "&Стиль шрифту"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1139
+msgid "&Size"
+msgstr "&Розмір"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1140
+msgid "Sample"
+msgstr "Зразок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1141
+msgid "Effects"
+msgstr "Ефекти"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1142
+msgid "Stri&keout"
+msgstr "&Розрядка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1143
+msgid "&Underline"
+msgstr "&Підкреслення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1144
+msgid "Scr&ipt"
+msgstr "&Сценарій"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1146
+msgid "Parent Directory"
+msgstr "Батьківський каталог"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1148
+msgid "Forward"
+msgstr "Уперед"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1149
+msgid "Reload"
+msgstr "Обновити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1150
+msgid "New Directory"
+msgstr "Новий каталог"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1151
+msgid "Bookmarks"
+msgstr "Закладки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1152
+msgid "Add Bookmark"
+msgstr "Додати закладку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1153
+msgid "&Edit Bookmarks"
+msgstr "&Редагувати закладки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1154
+msgid "New Bookmark Folder..."
+msgstr "Новий каталог закладок..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1156
+msgid "Sorting"
+msgstr "Сортування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1157
+msgid "By Name"
+msgstr "По імені"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1158
+msgid "By Date"
+msgstr "По даті"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1159
+msgid "By Size"
+msgstr "По розмірі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1160
+msgid "Reverse"
+msgstr "Інвертувати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1161
+msgid "Directories First"
+msgstr "Каталоги на початку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1162
+msgid "Case Insensitive"
+msgstr "Не враховувати регістр"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1163
+msgid "Short View"
+msgstr "Коротке подання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1164
+msgid "Detailed View"
+msgstr "Детальне подання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1165
+msgid "Show Hidden Files"
+msgstr "Показувати сховані файли"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1166
+msgid "Show Quick Access Navigation Panel"
+msgstr "Показати панель швидкого доступу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1167
+msgid "Show Preview"
+msgstr "Попередній перегляд"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1168
+msgid "Separate Directories"
+msgstr "Відокремити каталоги"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1169
+msgid "Often used directories"
+msgstr "Часто використовувані каталоги"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1170
+msgid "Desktop"
+msgstr "Робітник стіл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1171
+msgid "Home Directory"
+msgstr "Домашній каталог"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1172
+msgid "Floppy"
+msgstr "Дисковід"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1173
+msgid "Temporary Files"
+msgstr "Тимчасові файли"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1174
+msgid "Network"
+msgstr "Мережа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1175
+msgid "New Directory..."
+msgstr "Новий каталог..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1176
+msgid "Delete"
+msgstr "Видалити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1177
+msgid "Thumbnail Previews"
+msgstr "Попередній перегляд ескізів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1178
+msgid "Large Icons"
+msgstr "Більші іконки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1179
+msgid "Small Icons"
+msgstr "Маленькі іконки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1180
+msgid "Properties..."
+msgstr "Властивості..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1181
+msgid "&Automatic Preview"
+msgstr "&Автоматичний предпросмотр"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1182
+msgid "&Preview"
+msgstr "&Попередній перегляд"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1183
+msgid "&Location:"
+msgstr "&Розташування:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1184
+msgid "&Filter:"
+msgstr "&Фільтр:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_locale.cpp:1185
+msgid "All Files"
+msgstr "Всі файли"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:104
+#, fuzzy
+msgid "- d -- h -- m -- s"
+msgstr "- д -і год -і м -і з"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:111
+#, c-format
+msgid "%u h %u m %u s"
+msgstr "%u год %u м %u з"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:113
+#, c-format
+msgid "%u h %u%u m %u%u s"
+msgstr "%u год %u%u м %u%u з"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:118
+#, c-format
+msgid "%u m %u s"
+msgstr "%u м %u з"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:120
+#, c-format
+msgid "%u m %u%u s"
+msgstr "%u м %u%u з"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:122
+#, c-format
+msgid "%u s"
+msgstr "%u з"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:127
+#, c-format
+msgid "%u d %u h %u m %u s"
+msgstr "%u д %u год %u м %u з"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/kvilib/system/kvi_time.cpp:129
+#, c-format
+msgid "%u d %u%u h %u%u m %u%u s"
+msgstr "%u д %u%u год %u%u м %u%u з"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+msgid "Usage"
+msgstr "Використання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:98
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:133
+msgid "message"
+msgstr "повідомлення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:99
+msgid "-m: send a message instead of a notice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:100
+#, fuzzy
+msgid "-w: send notice to all channel owners"
+msgstr "-o: відіслати повідомлення всім операторам каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:101
+#, fuzzy
+msgid "-a: send notice to all channel admins"
+msgstr "-o: відіслати повідомлення всім операторам каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:102
+msgid "-o: send notice to all channel ops"
+msgstr "-o: відіслати повідомлення всім операторам каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:103
+msgid "-h: send notice to all channel halfops"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:104
+msgid "-v: send notice to all channel voices"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:105
+msgid "-q: quiet mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:138
+msgid "Sending wallop to"
+msgstr "Відправляємо wallop для"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:208
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:222
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:266
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:290
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:314
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:338
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:362
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:386
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:410
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:493
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:535
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:593
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:653
+msgid "Usage:"
+msgstr "Використання:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:223
+msgid "reason"
+msgstr "причина"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:229
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:272
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:296
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:344
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:368
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:392
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:416
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:440
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:599
+msgid "This is not a channel window"
+msgstr "Це не вікно каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:581
+msgid "Unsupported type: $0"
+msgstr "Непідтримуваний тип: $0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:604
+msgid "Channel Owner"
+msgstr "Хазяїн каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:606
+msgid "Channel Administrator"
+msgstr "Адміністратор каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:608
+msgid "Channel Operator"
+msgstr "Оператор каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:610
+msgid "Half Operator"
+msgstr "Стат-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:612
+msgid "Voice"
+msgstr "Войс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:614
+msgid "User Operator"
+msgstr "Користувач-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:616
+msgid "Normal User"
+msgstr "Звичайний користувач"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:641
+msgid "You must use DNS in an IRC context"
+msgstr "Ви повинні використати DNS у контексті IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:647
+msgid "You must be connected to a server"
+msgstr "Ви повинні бути підключені до сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/aliases.kvs:664
+msgid "No such user: $0"
+msgstr "Немає такого користувача: $0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:33
+msgid "The default script has been successfully installed."
+msgstr "Скріпт за замовчуванням був успішно встановлений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:34
+msgid "To connect to a server, type /server <server name>"
+msgstr "Для підключення до сервера наберіть /server <ім'я сервера>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/default.kvs:36
+msgid "Happy ircing :)"
+msgstr "Щасливо початиться:)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:15
+msgid "Options"
+msgstr "Настроювання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/toolbars.kvs:40
+msgid "Window operations"
+msgstr "Опрерації з вікнами"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMENAME@"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/theme-install.kvs:1
+msgid "@THEMEDESCRIPTION@"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:18
+msgid "Stop Highlighting (Local)"
+msgstr "Відключити локальне підсвічування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:23
+msgid "Start Highlighting (Local)"
+msgstr "Включити локальне підсвічування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:28
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:61
+msgid "Always Highlight"
+msgstr "Завжди подсвічувати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:30
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:55
+msgid "Highlight as"
+msgstr "Подсвічувати як"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:66
+msgid "Stop Highlighting"
+msgstr "Відключити підсвічування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:82
+msgid "is being ignored"
+msgstr "ігнорується"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:87
+msgid "is not being ignored"
+msgstr "не ігнорується"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:93
+#, fuzzy
+msgid "Enable Ignore"
+msgstr "&Включити оброблювач"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:98
+#, fuzzy
+msgid "Ignore as..."
+msgstr "Ігнорувати як"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:107
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:128
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:163
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:170
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:198
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:205
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:219
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:226
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:233
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:240
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:268
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:275
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:282
+msgid "Ignore as"
+msgstr "Ігнорувати як"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:290
+msgid "Unignore"
+msgstr "Не ігнорувати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:308
+msgid "is registered as"
+msgstr "зареєстрований як"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:311
+msgid "is in the notify list"
+msgstr "у списку повідомлень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:314
+msgid "has a default avatar"
+msgstr "має аватар за замовчуванням"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:317
+msgid "is not registered"
+msgstr "не зареєстрований"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:323
+msgid "Register"
+msgstr "Зареєструвати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:328
+msgid "Quick Registration"
+msgstr "Швидка реєстрація"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:330
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:335
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:340
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:345
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:355
+msgid "Register as"
+msgstr "Зареєструвати як"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:361
+msgid "Edit Registration"
+msgstr "Редагувати реєстрацію"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:366
+msgid "Unregister"
+msgstr "Разрегіструровати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:373
+msgid "Add to Notify"
+msgstr "Додати в повідомлення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:378
+msgid "Remove from Notify"
+msgstr "Видалити з повідомлень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:385
+msgid "Choose"
+msgstr "Вибрати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:387
+msgid "Choose Avatar Image File"
+msgstr "Вибрати файл аватара"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:396
+msgid "Set as Default"
+msgstr "Установити по мовчанню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:401
+msgid "Clear Default"
+msgstr "Скасувати умовчання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:412
+msgid "Copy To Clipboard"
+msgstr "Копіювати в буфер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:433
+msgid "Ban"
+msgstr "Бан"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:437
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1037
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1084
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1224
+msgid "Multiple Users"
+msgstr "Трохи користувачів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:577
+msgid "&Ban"
+msgstr "&Бан"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:467
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1089
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1229
+msgid "idle time"
+msgstr "час простою"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:475
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:758
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1096
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1236
+msgid "&Information"
+msgstr "Інформація"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:494
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1115
+msgid "DNS for"
+msgstr "DNS для"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:499
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1120
+msgid "Mask for"
+msgstr "Маска для"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:505
+msgid "&Control"
+msgstr "Керування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:509
+msgid "O&wner"
+msgstr "Власник"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:514
+msgid "&Deowner"
+msgstr "Зняти прапор власніка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:519
+msgid "&Administrator"
+msgstr "Адміністратор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:524
+msgid "&Deadministrator"
+msgstr "Зняти прапор адміністратора"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:529
+msgid "&Op"
+msgstr "&Оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:534
+msgid "&Deop"
+msgstr "Зняти прапор оператора"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:539
+msgid "&Halfop"
+msgstr "Стат-оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:544
+msgid "&Dehalfop"
+msgstr "Зняти прапор стат-оператора"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:549
+msgid "&Voice"
+msgstr "Войс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:554
+msgid "D&evoice"
+msgstr "Зняти прапор войса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:561
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "&Kick"
+msgstr "Кік"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+msgid "K&ick"
+msgstr "Кік"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:566
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "With..."
+msgstr "із причиною..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Kick Reason"
+msgstr "Причина кіка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:568
+msgid "Enter a kick reason"
+msgstr "Уведіть причину кіка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:587
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:592
+msgid "Kick/Ban"
+msgstr "Кікбан"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Kick/Ban Reason"
+msgstr "Причина кікбана"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "Enter a kick/ban reason"
+msgstr "Уведіть причину кікбана"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:594
+msgid "&Kick/Ban"
+msgstr "Кікбан"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:604
+msgid "Configure ban mask..."
+msgstr "Конфігурація маски бана..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:612
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1263
+msgid "&Query"
+msgstr "Приват"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:625
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1136
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1276
+msgid "&Registration"
+msgstr "Реєстрація"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:627
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1278
+msgid "&Highlight"
+msgstr "Підсвічування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:629
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1280
+msgid "Ig&nore"
+msgstr "Ігнор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:631
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:726
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1050
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1138
+msgid "Notify Avatar"
+msgstr "Повідомити про зміну аватара"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:646
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:705
+msgid "&Part"
+msgstr "&Вийти з каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:664
+msgid "Copy Channel Address"
+msgstr "Копіювати адреса каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:691
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:749
+msgid "Channels"
+msgstr "Канали"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:693
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:753
+msgid "&Join Channels..."
+msgstr "Зайти на канали..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:700
+msgid "&Hop"
+msgstr "Стрибок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:733
+msgid "Copy Channel URL to Clipboard"
+msgstr "Копіювати URL каналу в буфер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:782
+msgid "l (Connections)"
+msgstr "l (З'єднання)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:787
+msgid "m (Command Usage)"
+msgstr "m (Використання команд)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:792
+msgid "o (Operators)"
+msgstr "o (Оператори)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:797
+msgid "t (Connection stats ?)"
+msgstr "t (Статус з'єднання?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:802
+msgid "u (Uptime)"
+msgstr "u (Аптайм)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:807
+msgid "y (y-Lines)"
+msgstr "y (y-лінії)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:812
+msgid "z (Debug Stats?)"
+msgstr "z (Статистика налагодження?)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:909
+msgid "Chat with"
+msgstr "Чат з"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:914
+msgid "Reverse Chat with"
+msgstr "Зворотний чат з"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:919
+msgid "Secure Chat with"
+msgstr "Захищений чат з"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:926
+msgid "Send to"
+msgstr "Відіслати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:931
+#, fuzzy
+msgid "Secure send to"
+msgstr "Зворотна передача для"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:936
+msgid "Reverse Send to"
+msgstr "Зворотна передача для"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:941
+#, fuzzy
+msgid "Secure Reverse Send to"
+msgstr "Зворотна передача для"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:948
+msgid "TDCC Send to"
+msgstr "TDCC передача"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:953
+msgid "TDCC Reverse Send to"
+msgstr "TDCC зворотна передача"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:960
+msgid "Voice Chat"
+msgstr "Голосовий чат"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1134
+msgid "&Ignore"
+msgstr "Ігнор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1165
+msgid "Logging to"
+msgstr "Журналирую в"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1167
+msgid "Flush Log File"
+msgstr "Записати дані в логфайл негайно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1174
+msgid "Stop Logging"
+msgstr "Зупинити Журналювання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1179
+msgid "Not Logging"
+msgstr "Не журналирую"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1181
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+msgid "Log To Default File"
+msgstr "Журналировать у файл за замовчуванням"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1186
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+msgid "Include Existing Buffer"
+msgstr "Включаючи поточний буффер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1191
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1199
+msgid "Log To..."
+msgstr "Журналировать в..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1193
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1201
+msgid "Choose Log Filename"
+msgstr "Виберете ім'я файлу журналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/popups.kvs:1282
+msgid "Notify avatar"
+msgstr "Повідомити про зміну аватара"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:50
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$copyfiles must be a "
+"source directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:56
+#, c-format
+msgid ""
+"[Installer] The second argument to \\%installer->\\$copyfiles must be a file "
+"name or file regexp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:62
+#, c-format
+msgid ""
+"[Installer] The third argument to \\%installer->\\$copyfiles must be a "
+"destination directory"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:94
+msgid "[Installer] Failed to create directory"
+msgstr "Установник не зміг створити папку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/data/defscript/installer.kvs:104
+#, c-format
+msgid ""
+"[Installer] The first argument to \\%installer->\\$includefiles must be a "
+"source directory"
+msgstr ""
+
+#~ msgid "Lag is"
+#~ msgstr "Затримка "
+
+#~ msgid "milliseconds"
+#~ msgstr "мілісекунд"
+
+#~ msgid "%c\r!s\r%s\r%c: %Q"
+#~ msgstr "%c\r!n\r%s\r%c: %Q"
+
+#~ msgid "Restore from backup archive"
+#~ msgstr "Відновити з резервної копії"
+
+#~ msgid "Basic Properties"
+#~ msgstr "Основні параметри"
+
+#~ msgid "Other:"
+#~ msgstr "Інше:"
+
+#~ msgid "Now you should specify an IRC server, to be connected to it"
+#~ msgstr ""
+#~ "Тепер ви повинні сказати, до якому IRC серверу ви хочете підключитися"
+
+#~ msgid "Choose a server to connect"
+#~ msgstr "Виберіть сервер для підключення"
+
+#~ msgid "Choose from built-in server list"
+#~ msgstr "Вибрати з убудованого списку серверів"
+
+#~ msgid "Specify server manually"
+#~ msgstr "Указати сервер вручну"
+
+#~ msgid "Server:"
+#~ msgstr "Сервер:"
+
+#~ msgid "Port:"
+#~ msgstr "Порт:"
+
+#~ msgid "Open irc:// or irc6:// URL"
+#~ msgstr "Відкрити irc:// або irc6:// посилання"
+
+#~ msgid "URL:"
+#~ msgstr "URL:"
+
+#~ msgid "Use server config"
+#~ msgstr "Використати заздалегідь певну конфігурацію"
+
+#~ msgid "Config file:"
+#~ msgstr "Файл конфігурації:"
+
+#~ msgid "Report a Bug"
+#~ msgstr "Повідомити про помилку"
+
+#~ msgid "Smart"
+#~ msgstr "Швидко"
+
+#~ msgid "Window with ID '%s' not found"
+#~ msgstr "Вікно з ID '%s' не знайдено"
+
+#~ msgid "Module function call failed: can't load the module 'str'"
+#~ msgstr ""
+#~ "Помилка звертання до функціонального модуля: не можу завантажити модуль "
+#~ "'str'"
+
+#~ msgid ""
+#~ "Module function call failed: the module 'str' doesn't export a function "
+#~ "named 'split'"
+#~ msgstr ""
+#~ "Помилка звертання до функціонального модуля: модуль 'str' не надає "
+#~ "функцію з ім'ям 'split'"
diff --git a/po/modules/Makefile.am b/po/modules/Makefile.am
new file mode 100644
index 00000000..f7c52543
--- /dev/null
+++ b/po/modules/Makefile.am
@@ -0,0 +1,14 @@
+
+SUBDIRS = about \
+ dcc \
+ editor \
+ filetransferwindow \
+ logview \
+ mediaplayer \
+ notifier \
+ options \
+ perl \
+ perlcore \
+ sharedfileswindow \
+ theme \
+ torrent
diff --git a/po/modules/about/Makefile.am b/po/modules/about/Makefile.am
new file mode 100644
index 00000000..54d0dd7c
--- /dev/null
+++ b/po/modules/about/Makefile.am
@@ -0,0 +1,76 @@
+###############################################################################
+# KVirc IRC client Makefile - 18.09.99 Szymon Stefanek <pragma at kvirc dot net>
+###############################################################################
+
+# The name of this module
+THISMODULE = about
+
+# Don't touch this
+tmpdir = $(localedir)
+
+# The *.mo files to generate
+tmp_DATA = about_ca.mo \
+ about_cs.mo \
+ about_de.mo \
+ about_es.mo \
+ about_it.mo \
+ about_pt.mo \
+ about_ru.mo \
+ about_pt_BR.mo \
+ about_fr.mo \
+ about_hu.mo \
+ about_fi.mo \
+ about_hr.mo \
+ about_uk.mo
+
+# The *.po files to generate
+POFILES = about_ca.po \
+ about_cs.po \
+ about_de.po \
+ about_es.po \
+ about_it.po \
+ about_pt.po \
+ about_ru.po \
+ about_pt_BR.po \
+ about_fr.po \
+ about_hu.po \
+ about_fi.po \
+ about_hr.po \
+ about_uk.po
+
+
+###############################################################################
+# STOP EDITING HERE
+###############################################################################
+
+# Killed the fuzzy entries: don't use them , they may SEGV
+# - touch $@ && $(SS_MSGFMT) -fvo $@ $<
+
+CLEANFILES = $(tmp_DATA)
+EXTRA_DIST = $(POFILES)
+
+%.mo: %.po
+ -touch $@ && $(SS_MSGFMT) -vo $@ $<
+
+messages-extract:
+ @find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.cpp > files; \
+ find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.h >> files; \
+ xgettext -o $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot -k__tr_ctx -k__tr_no_lookup_ctx -k__tr2qs_ctx -k__tr2wc_ctx -k__tr2ws_ctx -f files; \
+ rm files; \
+ echo "Messages extracted to $(THISMODULE).pot";
+
+messages-update:
+ @old=_old; \
+ if test -f "$(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot"; then \
+ for lang in $(POFILES); do \
+ echo "Updating file $$lang"; \
+ mv -f $$lang $$lang$$old; \
+ msgmerge -o $$lang $$lang$$old $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot && rm -f $$lang$$old; \
+ done; \
+ else \
+ echo "----------------------------------------------------"; \
+ echo "- WARNING: ./$(THISMODULE).pot does not exist"; \
+ echo "- WARNING: You must run make messages-extract first"; \
+ echo "----------------------------------------------------"; \
+ fi
+messages: messages-extract messages-update
diff --git a/po/modules/about/about_ca.po b/po/modules/about/about_ca.po
new file mode 100644
index 00000000..8d342443
--- /dev/null
+++ b/po/modules/about/about_ca.po
@@ -0,0 +1,61 @@
+# translation of about_ca.po to Catal�
+# translation of about_es.po to deutsch
+# KVIrc about module Spanish translation file
+# Copyright (C) Juanjo Alvarez
+# This file is distributed under the same license as the KVirc package.
+# Juanjo Alvarez <juanjux at yahoo.es>, 2003.
+# Christoph Thielecke <[email protected]>, 2003.
+# Marc Serra Romero <[email protected]>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: about_ca\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-02-24 14:50+0100\n"
+"Last-Translator: Marc Serra Romero <[email protected]>\n"
+"Language-Team: Catal� <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"yahoo.es>\n"
+"X-Generator: KBabel 1.2\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:75
+msgid "About KVIrc..."
+msgstr "Sobre KVIrc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:76
+msgid "Close"
+msgstr "Tancar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:95
+#, fuzzy
+msgid "Forged by the <b>KVIrc Development Team</b>"
+msgstr " portat a tu per l<b>Equip de desenvolupament de KVIrc</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:97
+msgid "Sources date"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:105
+msgid "About"
+msgstr "Sobre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:118
+msgid "Honor && Glory"
+msgstr "Honor i Gl�ria"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:137
+msgid ""
+"Oops... Can't find the license file...\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+"Ups...no puc trobar l'arxiu de la llic�ncia...\n"
+"HA d'estar adjunt a la distribuci�...\n"
+"Si us plau, informe de l'errada a <pragma at kvirc dot net>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:144
+msgid "License"
+msgstr "Llic�ncia"
diff --git a/po/modules/about/about_cs.po b/po/modules/about/about_cs.po
new file mode 100644
index 00000000..602afe5c
--- /dev/null
+++ b/po/modules/about/about_cs.po
@@ -0,0 +1,57 @@
+# Czech translation of Kvirc.
+# Copyright (C) 2004 THE Kvirc'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the Kvirc package.
+# Dušan Hokův <[email protected]>, 2004.
+# , fuzzy
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Kvirc\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2004-08-08 15:44+0200\n"
+"Last-Translator: Dušan Hokův <[email protected]>\n"
+"Language-Team: Czech <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:75
+msgid "About KVIrc..."
+msgstr "O aplikaci KVIrc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:76
+msgid "Close"
+msgstr "Zavřít"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:95
+#, fuzzy
+msgid "Forged by the <b>KVIrc Development Team</b>"
+msgstr " vám přináší <b>Vývojový tým KVIrc</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:97
+msgid "Sources date"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:105
+msgid "About"
+msgstr "O aplikaci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:118
+msgid "Honor && Glory"
+msgstr "Čest && Sláva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:137
+msgid ""
+"Oops... Can't find the license file...\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+"Oops... Nelze nalézt soubor s licencí...\n"
+"MUSÍ být součástí distribuce...\n"
+"Prosím nahlaste to na <pragma at kvirc dot net>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:144
+msgid "License"
+msgstr "Licence"
diff --git a/po/modules/about/about_de.po b/po/modules/about/about_de.po
new file mode 100644
index 00000000..ee7bc14e
--- /dev/null
+++ b/po/modules/about/about_de.po
@@ -0,0 +1,55 @@
+# translation of about_de.po to german
+# Christoph Thielecke <[email protected]>, 2003, 2004.
+# Markus Rennings <[email protected]>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: about_de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-11-13 00:48+0100\n"
+"Last-Translator: Markus Rennings <[email protected]>\n"
+"Language-Team: german <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"MIME-Version 1.0\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:75
+msgid "About KVIrc..."
+msgstr "Über KVirc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:76
+msgid "Close"
+msgstr "Schließen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:95
+msgid "Forged by the <b>KVIrc Development Team</b>"
+msgstr " wurde Ihnen gebracht vom <b>KVIrc-Entwicklungsteam</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:97
+msgid "Sources date"
+msgstr "Datum der Quelldateien"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:105
+msgid "About"
+msgstr "Über"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:118
+msgid "Honor && Glory"
+msgstr "Ruhm && Ehre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:137
+msgid ""
+"Oops... Can't find the license file...\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+"Ups... Lizenzdatei kann nicht gefunden werden...\n"
+"Diese MUSS in der Distribution enthalten sein...\n"
+"bitte <pragma at kvirc dot net> melden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:144
+msgid "License"
+msgstr "Lizenz"
diff --git a/po/modules/about/about_es.po b/po/modules/about/about_es.po
new file mode 100644
index 00000000..286ec579
--- /dev/null
+++ b/po/modules/about/about_es.po
@@ -0,0 +1,59 @@
+# translation of about_es.po to deutsch
+# KVIrc about module Spanish translation file
+# Copyright (C) Juanjo Alvarez
+# This file is distributed under the same license as the KVirc package.
+# Juanjo Alvarez <juanjux at yahoo.es>, 2003.
+# Christoph Thielecke <[email protected]>, 2003.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: about_es\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2004-04-06 19:05+0200\n"
+"Last-Translator: Jos� Luis S�nchez <[email protected]>\n"
+"Language-Team: espa�ol <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"yahoo.es>\n"
+"X-Generator: KBabel 1.0.2\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:75
+msgid "About KVIrc..."
+msgstr "Acerca de KVIrc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:76
+msgid "Close"
+msgstr "Cerrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:95
+#, fuzzy
+msgid "Forged by the <b>KVIrc Development Team</b>"
+msgstr " tra�do hasta ti por el <b>Equipo de Desarrollo de KVIrc</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:97
+msgid "Sources date"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:105
+msgid "About"
+msgstr "Acerca de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:118
+msgid "Honor && Glory"
+msgstr "Honor y Gloria"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:137
+msgid ""
+"Oops... Can't find the license file...\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+"Ops...no puedo encontrar el archivo de la licencia...\n"
+"DEBE estar incluido en la distribuci�n...\n"
+"Por favor, informe del fallo a <pragma at kvirc dot net>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:144
+msgid "License"
+msgstr "Licencia"
diff --git a/po/modules/about/about_fi.po b/po/modules/about/about_fi.po
new file mode 100644
index 00000000..4a51318b
--- /dev/null
+++ b/po/modules/about/about_fi.po
@@ -0,0 +1,55 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Santeri Piippo <[email protected]>, 2007.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: about_fi\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-11-21 17:09+0100\n"
+"PO-Revision-Date: 2007-11-21 19:08+0200\n"
+"Last-Translator: Santeri Piippo <[email protected]>\n"
+"Language-Team: LANGUAGE <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:75
+msgid "About KVIrc..."
+msgstr "Tietoja KVIrcistä..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:76
+msgid "Close"
+msgstr "Sulje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:95
+msgid "Forged by the <b>KVIrc Development Team</b>"
+msgstr "<b>KVIrc Development Team</b>in työstämä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:97
+msgid "Sources date"
+msgstr "Lähdepäiväys"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:105
+msgid "About"
+msgstr "Tietoja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:118
+msgid "Honor && Glory"
+msgstr "Tekijät"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:137
+msgid ""
+"Oops... Can't find the license file...\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+"Hups... Ei voida löytää lisenssitiedostoa...\n"
+"Sen TÄYTYY olla jakelussa mukana...\n"
+"Lähetä viesti osoitteeseen <pragma at kvirc piste net>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:144
+msgid "License"
+msgstr "Lisenssi"
diff --git a/po/modules/about/about_fr.po b/po/modules/about/about_fr.po
new file mode 100644
index 00000000..61e97f10
--- /dev/null
+++ b/po/modules/about/about_fr.po
@@ -0,0 +1,56 @@
+# translation of about_fr.po to Français
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Ahinu <[email protected]>, 2005.
+# Ahinu <[email protected]>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: about_fr\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2006-07-31 14:55+0200\n"
+"Last-Translator: Ahinu <[email protected]>\n"
+"Language-Team: Français <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10.2\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:75
+msgid "About KVIrc..."
+msgstr "À propos de KVIrc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:76
+msgid "Close"
+msgstr "Fermer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:95
+msgid "Forged by the <b>KVIrc Development Team</b>"
+msgstr "Forgé par l'<b>Équipe de Développement de KVIrc</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:97
+msgid "Sources date"
+msgstr "Date des sources"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:105
+msgid "About"
+msgstr "À propos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:118
+msgid "Honor && Glory"
+msgstr "Honneur && Gloire"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:137
+msgid ""
+"Oops... Can't find the license file...\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+"Oups... Impossible de trouver le fichier de licence...\n"
+"Il DOIT être inclu dans la distribution...\n"
+"Rapportez cela à <pragma at kvirc dot net>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:144
+msgid "License"
+msgstr "Licence"
diff --git a/po/modules/about/about_hr.po b/po/modules/about/about_hr.po
new file mode 100644
index 00000000..48cf799c
--- /dev/null
+++ b/po/modules/about/about_hr.po
@@ -0,0 +1,55 @@
+# translation of about.po to Croatian
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# SpeedyGhost <[email protected]>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: about\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2008-01-12 03:48+0100\n"
+"Last-Translator: SpeedyGhost <[email protected]>\n"
+"Language-Team: Croatian <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:75
+msgid "About KVIrc..."
+msgstr "O KVIrc-u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:76
+msgid "Close"
+msgstr "Zatvori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:95
+msgid "Forged by the <b>KVIrc Development Team</b>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:97
+msgid "Sources date"
+msgstr "Datum izvora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:105
+msgid "About"
+msgstr "O"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:118
+msgid "Honor && Glory"
+msgstr "Čast && Slava"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:137
+msgid ""
+"Oops... Can't find the license file...\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+"Ups... Ne mogu pronaći licensnu datoteku...\n"
+"MORA biti ukljućena u distribuciju...\n"
+"Molim prijavite na <pragma at kvirc dot net>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:144
+msgid "License"
+msgstr ""
diff --git a/po/modules/about/about_hu.po b/po/modules/about/about_hu.po
new file mode 100644
index 00000000..a41dd0ce
--- /dev/null
+++ b/po/modules/about/about_hu.po
@@ -0,0 +1,55 @@
+# translation of about_hu.po to hungarian
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Ádám Fibinger <[email protected]>, 2006, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: about_hu\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-10-27 22:50+0200\n"
+"Last-Translator: Ádám Fibinger <[email protected]>\n"
+"Language-Team: hungarian <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:75
+msgid "About KVIrc..."
+msgstr "A KVIrcről..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:76
+msgid "Close"
+msgstr "Bezárás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:95
+msgid "Forged by the <b>KVIrc Development Team</b>"
+msgstr "Edzette a <b>KVIrc Fejlesztő Csapata</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:97
+msgid "Sources date"
+msgstr "Létrehozás ideje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:105
+msgid "About"
+msgstr "Névjegy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:118
+msgid "Honor && Glory"
+msgstr "Dicsőségcsarnok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:137
+msgid ""
+"Oops... Can't find the license file...\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+"Hoppá, nem találom a licensz fájlt...\n"
+"Ennek benne KELL lennie a kiadásban...\n"
+"Kérlek jelezd ezt:<pragma at kvirc dot net>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:144
+msgid "License"
+msgstr "Liszensz"
diff --git a/po/modules/about/about_it.po b/po/modules/about/about_it.po
new file mode 100644
index 00000000..2bcc6f11
--- /dev/null
+++ b/po/modules/about/about_it.po
@@ -0,0 +1,62 @@
+# translation of about_it.po to
+# KVIrc About module Italian translation file
+# Italian translation file for KVIrc 3.0
+# Copyright (C) Szymon Stefanek , Eva Schaller
+# This file is distributed under the same license as the KVirc package.
+#
+# Eva Schaller <eva at cyberbeat dot it>, 2003.
+# Eva <[email protected]>, 2004.
+# Elvio Basello <[email protected]>, 2005, 2006.
+# Etherea <cle at virg0 dot org>, 2006.
+# Nate Grey <[email protected]>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: about_it\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-01-09 03:16+0100\n"
+"Last-Translator: \n"
+"Language-Team: <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:75
+msgid "About KVIrc..."
+msgstr "Informazioni su KVIrc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:76
+msgid "Close"
+msgstr "Chiudi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:95
+msgid "Forged by the <b>KVIrc Development Team</b>"
+msgstr "Forgiato da <b>KVIrc Development Team</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:97
+msgid "Sources date"
+msgstr "Data dei sorgenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:105
+msgid "About"
+msgstr "Informazioni su"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:118
+msgid "Honor && Glory"
+msgstr "Onore && Gloria"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:137
+msgid ""
+"Oops... Can't find the license file...\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+"Ops... non riesco a trovare il file della licenza...\n"
+"Questo file DEVE essere incluso nella distribuzione...\n"
+"Scrivi a <pragma at kvirc dot net> riportando questo problema."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:144
+msgid "License"
+msgstr "Licenza"
diff --git a/po/modules/about/about_pt.po b/po/modules/about/about_pt.po
new file mode 100644
index 00000000..d1f47d6f
--- /dev/null
+++ b/po/modules/about/about_pt.po
@@ -0,0 +1,65 @@
+# translation of about_pt.po to Português
+# translation of about_pt.po to
+# translation of about_es.po to
+# KVIrc about module Spanish translation file
+# Copyright (C) Juanjo Alvarez
+# This file is distributed under the same license as the KVirc package.
+#
+# Juanjo Alvarez <juanjux at yahoo.es>, 2003.
+# Christoph Thielecke <[email protected]>, 2003.
+# Ze <[email protected]>, 2004.
+# José Melo <[email protected]>, 2005, 2006.
+# Zé <[email protected]>, 2006.
+# Zé <[email protected]>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: about_pt\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2006-05-05 02:46+0100\n"
+"Last-Translator: José Melo <[email protected]>\n"
+"Language-Team: Português <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"yahoo.es>\n"
+"X-Generator: KBabel 1.11.2\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:75
+msgid "About KVIrc..."
+msgstr "Acerca do KVIrc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:76
+msgid "Close"
+msgstr "Fechar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:95
+msgid "Forged by the <b>KVIrc Development Team</b>"
+msgstr "Desenvolvido pela <b>Equipa de Programação KVirc</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:97
+msgid "Sources date"
+msgstr "Data do código fonte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:105
+msgid "About"
+msgstr "Acerca"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:118
+msgid "Honor && Glory"
+msgstr "Honra e Glória"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:137
+msgid ""
+"Oops... Can't find the license file...\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+"Ops...Não é possível encontrar o ficheiro de licença...\n"
+"DEVE estar contido ou incluído na distribuição...\n"
+"Por favor comunique a <pragma at kvirc dot net>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:144
+msgid "License"
+msgstr "Licença"
diff --git a/po/modules/about/about_pt_BR.po b/po/modules/about/about_pt_BR.po
new file mode 100644
index 00000000..bae966a7
--- /dev/null
+++ b/po/modules/about/about_pt_BR.po
@@ -0,0 +1,58 @@
+# translation of about_pt_BR.po to Português
+# translation of about.pot to Brazilian-Protugues
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Adilson GonAalves Soares Junior <[email protected]>, 2004.
+# Zé <[email protected]>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: about_pt_BR\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-08-25 18:45+0100\n"
+"Last-Translator: Zé <[email protected]>\n"
+"Language-Team: Português <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:75
+msgid "About KVIrc..."
+msgstr "Sobre o KVIrc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:76
+msgid "Close"
+msgstr "Fechar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:95
+msgid "Forged by the <b>KVIrc Development Team</b>"
+msgstr "Feito pela <b>Equipa de Programação KVirc</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:97
+msgid "Sources date"
+msgstr "Data da Fonte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:105
+msgid "About"
+msgstr "Sobre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:118
+msgid "Honor && Glory"
+msgstr "Honra && Glória"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:137
+msgid ""
+"Oops... Can't find the license file...\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+"Opa...não consigo encontrar o arquivo da licença...\n"
+"DEVE estar incluído na distribuição...\n"
+"Por favor, reporte isto para <pragma at kvirc dot net>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:144
+msgid "License"
+msgstr "Licença"
diff --git a/po/modules/about/about_ru.po b/po/modules/about/about_ru.po
new file mode 100644
index 00000000..152e0cfa
--- /dev/null
+++ b/po/modules/about/about_ru.po
@@ -0,0 +1,63 @@
+# translation of about_ru.po to
+# translation of about_ru.po to russian
+# translation of about_ru.po to русский
+# translation of about.po to русский
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Valerius <[email protected]>, 2004.
+# Valeriy Girchenko <[email protected]>, 2005.
+# root <[email protected]>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: about_ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2006-04-10 13:02+0400\n"
+"Last-Translator: root <[email protected]>\n"
+"Language-Team: <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:75
+msgid "About KVIrc..."
+msgstr "О программе KVIrc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:76
+msgid "Close"
+msgstr "Закрыть"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:95
+msgid "Forged by the <b>KVIrc Development Team</b>"
+msgstr "Выковано в <b>KVIrc Development Team</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:97
+msgid "Sources date"
+msgstr "Дата исходных текстов программы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:105
+msgid "About"
+msgstr "О программе"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:118
+msgid "Honor && Glory"
+msgstr "Слава и почёт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:137
+msgid ""
+"Oops... Can't find the license file...\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+"Упс... Не могу найти файл лицензии...\n"
+"Он ДОЛЖЕН быть в дистрибутиве...\n"
+"Пожалуйста сообщите по адресу <pragma at kvirc dot net>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:144
+msgid "License"
+msgstr "Лицензия"
diff --git a/po/modules/about/about_uk.po b/po/modules/about/about_uk.po
new file mode 100644
index 00000000..b3671360
--- /dev/null
+++ b/po/modules/about/about_uk.po
@@ -0,0 +1,61 @@
+# translation of about_ua.po to
+# translation of about_ua.po to ukrainian
+# translation of about_ua.po to українська
+# translation of about.po to українська
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE' COPYRIGHT HOLDER.
+# Belyaev Stanislav <[email protected]>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: about_ua\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-12-19 15:00+0200\n"
+"Last-Translator: Belyaev Stanislav <[email protected]>\n"
+"Language-Team: Ukrainian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1:2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1:2);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:75
+msgid "About KVIrc..."
+msgstr "Про програму KVIrc..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:76
+msgid "Close"
+msgstr "Закрити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:95
+msgid "Forged by the <b>KVIrc Development Team</b>"
+msgstr "Викувано в <b>KVIrc Development Team</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:97
+msgid "Sources date"
+msgstr "Дата вихідних текстів програми"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:105
+msgid "About"
+msgstr "Про програму"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:118
+msgid "Honor && Glory"
+msgstr "Слава й пошана"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:137
+msgid ""
+"Oops... Can't find the license file...\n"
+"It MUST be included in the distribution...\n"
+"Please report to <pragma at kvirc dot net>"
+msgstr ""
+"Упс... Не можу знайти файл ліцензії...\n"
+"Він ПОВИНЕН бути в дистрибутиві...\n"
+"Будь ласка повідомите за адресою <pragma at kvirc dot net>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/about/aboutdialog.cpp:144
+msgid "License"
+msgstr "Ліцензія"
diff --git a/po/modules/dcc/Makefile.am b/po/modules/dcc/Makefile.am
new file mode 100644
index 00000000..00a42f54
--- /dev/null
+++ b/po/modules/dcc/Makefile.am
@@ -0,0 +1,80 @@
+###############################################################################
+# KVirc IRC client Makefile - 18.09.99 Szymon Stefanek <pragma at kvirc dot net>
+###############################################################################
+
+# The name of this module
+THISMODULE = dcc
+
+# Don't touch this
+tmpdir = $(localedir)
+
+# The *.mo files to generate
+tmp_DATA = dcc_ca.mo \
+ dcc_it.mo \
+ dcc_de.mo \
+ dcc_es.mo \
+ dcc_cs.mo \
+ dcc_pt.mo \
+ dcc_ru.mo \
+ dcc_pt_BR.mo \
+ dcc_hu.mo \
+ dcc_fr.mo \
+ dcc_fi.mo \
+ dcc_uk.mo
+
+# The *.po files to generate
+POFILES = dcc_ca.po \
+ dcc_it.po \
+ dcc_de.po \
+ dcc_es.po \
+ dcc_cs.po \
+ dcc_pt.po \
+ dcc_ru.po \
+ dcc_pt_BR.po \
+ dcc_hu.po \
+ dcc_fr.po \
+ dcc_fi.po \
+ dcc_uk.po
+
+# The *.po -> *.mo rules
+dcc_it.mo: dcc_it.po
+dcc_de.mo: dcc_de.po
+dcc_es.mo: dcc_es.po
+dcc_cs.mo: dcc_cs.po
+dcc_pt_BR.mo: dcc_pt_BR.po
+###############################################################################
+# STOP EDITING HERE
+###############################################################################
+
+# Killed the fuzzy entries: don't use them , they may SEGV
+# - touch $@ && $(SS_MSGFMT) -fvo $@ $<
+
+CLEANFILES = $(tmp_DATA)
+EXTRA_DIST = $(POFILES)
+
+%.mo: %.po
+ -touch $@ && $(SS_MSGFMT) -vo $@ $<
+
+messages-extract:
+ @find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.cpp > files; \
+ find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.h >> files; \
+ xgettext -o $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot -k__tr_ctx -k__tr_no_lookup_ctx -k__tr2qs_ctx -k__tr2wc_ctx -k__tr2ws_ctx -f files; \
+ rm files; \
+ echo "Messages extracted to $(THISMODULE).pot";
+
+messages-update:
+ @old=_old; \
+ if test -f "$(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot"; then \
+ for lang in $(POFILES); do \
+ echo "Updating file $$lang"; \
+ mv -f $$lang $$lang$$old; \
+ msgmerge -o $$lang $$lang$$old $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot && rm -f $$lang$$old; \
+ done; \
+ else \
+ echo "----------------------------------------------------"; \
+ echo "- WARNING: ./$(THISMODULE).pot does not exist"; \
+ echo "- WARNING: You must run make messages-extract first"; \
+ echo "----------------------------------------------------"; \
+ fi
+
+messages: messages-extract messages-update
diff --git a/po/modules/dcc/dcc_ca.po b/po/modules/dcc/dcc_ca.po
new file mode 100644
index 00000000..adc745c0
--- /dev/null
+++ b/po/modules/dcc/dcc_ca.po
@@ -0,0 +1,1063 @@
+# translation of dcc_ca.po to Catal�
+# translation of dcc_es.po to spanish
+# Jos� Luis S�nchez <[email protected]>, 2004.
+# Marc Serra Romero <[email protected]>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: dcc_ca\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-02-24 23:18+0100\n"
+"Last-Translator: Marc Serra Romero <[email protected]>\n"
+"Language-Team: Catal� <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"First-Translator: Jos� Luis S�nchez <[email protected]>\n"
+"X-Generator: KBabel 1.2\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/descriptor.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:642
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:666
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:803
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:805
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:484
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:514
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:136
+msgid "unknown"
+msgstr "desconegut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:783
+msgid "Choose Files to Send - KVIrc"
+msgstr "Esculli els Arxius a Enviar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:189
+#, fuzzy
+msgid "Can't send DCC %Q request to %Q: IRC connection has been terminated"
+msgstr ""
+"No he pogut enviar la petici� DCC %s a %s: la connexi� IRC ha estat "
+"finalitzada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:821
+#, fuzzy
+msgid "Can't open file %Q for reading"
+msgstr "No he pogut obrir l'arxiu %s per a lectura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:269
+msgid ""
+"<b>%1 [%2@%3]</b> requests a <b>Direct Client Connection</b> in <b>%4</b> "
+"mode.<br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> demana una <b>Connexi� Directa a Client (DCC)</b> en mode "
+"<b>%4</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:274
+msgid "The connection will be secured using SSL.<br>"
+msgstr "La connexi� ser� assegurada emprant SSL.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:280
+msgid "You will be the passive side of the connection.<br>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:284
+msgid "The connection target will be host <b>%1</b> on port <b>%2</b><br>"
+msgstr ""
+"El dest� de la connexi� ser� la m�quina <b>%1</b> en el port <b>%2</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:543
+msgid "DCC %1 Request - KVIrc"
+msgstr "Petici� DCC %1 - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:340
+msgid ""
+"<b>%1 [%2@%3]</b> requests a<br><b>Direct Client Connection</b> in <b>VOICE</"
+"b> mode.<br>The connection target will be host <b>%4</b> on port <b>%5</"
+"b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> peticions a<br><b>Connexi� Directa a Client (DCC)</b> en "
+"modo <b>VOICE</b>.<br>El dest� de la connexi� ser� la m�quina <b>%4</b> en "
+"el port <b>%5</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:346
+msgid "DCC VOICE request"
+msgstr "Petici� de DCC VOICE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:411
+msgid ""
+"<b>%1 [%2@%3]</b> requests a<br><b>Direct Client Connection</b> in "
+"<b>CANVAS</b> mode.<br>The connection target will be host <b>%4</b> on port "
+"<b>%5</b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> peticions a<br><b>Connexi� Directa a Client (DCC)</b> en "
+"mode <b>CANVAS</b>.<br>El dest� de la connexi� ser� la m�quina <b>%4</b> en "
+"el port <b>%5</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:417
+msgid "DCC CANVAS request"
+msgstr "Petici� de DCC CANVAS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:502
+#, fuzzy
+msgid ""
+"<b>%1 [%2@%3]</b> wants to send you the file '<b>%4</b>', <b>%5</b> large."
+"<br>The connection target will be host <b>%6</b> on port <b>%7</b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> vol enviar-li l'arxiu '<b>%4</b>', de <b>%5</b> bytes de "
+"longitud.<br>El dest� de la connexi� ser� la m�quina <b>%6</b> en el port <b>"
+"%7</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:515
+#, fuzzy
+msgid ""
+"<b>%1 [%2@%3]</b> wants to send you the file '<b>%4</b>', <b>%5</b> large."
+"<br>You will be the passive side of the connection.<br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> vol enviar-li l'arxiu '<b>%4</b>', de <b>%5</b> bytes de "
+"longitud.<br>Ser�s el cant� passiu de la connexi�.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:528
+msgid ""
+"<center><b>Note:</b></center>The file appears to be an avatar that you have "
+"requested. You should not change its filename. Save it in a location where "
+"KVIrc can find it, such as the 'avatars', 'incoming', or 'pics' directories, "
+"your home directory, or the save directory for the incoming file type. The "
+"default save path will probably work. You can instruct KVIrc to accept "
+"incoming avatars automatically by setting the option "
+"<tt>boolAutoAcceptIncomingAvatars</tt> to true.<br>"
+msgstr ""
+"<center><b>Nota:</b></center>El arxiu sembla ser un avatar que ha solicitat. "
+"No hauria de canviar el nom de l'arxiu. Guardi-ho en un lloc on pugui trobar-"
+"lo KVIrc, com els directoris 'avatars', 'incoming' o 'pics' del teu "
+"directori personal o en el directori de gravaci� pel tipus d'arxiu entrant. "
+"Provablement, la ruta de gravaci� per defecte funcionar�. Pot demanar a "
+"KVIrc que accepti avatars autom�ticament activant l'opci� <tt>Acceptar "
+"autom�ticament avatars entrants</tt>.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:557
+#, fuzzy
+msgid "Auto-accepting DCC %Q request from %Q!%Q@%Q for file %Q"
+msgstr "Acceptant autom�ticament petici� DCC %s de %s!%s@%s per l'arxiu %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:618
+#, fuzzy
+msgid "Choose Files to Save - KVIrc"
+msgstr "Esculli els Arxius a Enviar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:631
+#, fuzzy
+msgid "Auto-saving DCC %Q file %Q as \r![!dbl]play $0\r%Q\r"
+msgstr ""
+"Guardant autom�ticament el DCC %s arxiu %s com a \r![!dbl]play $0\r%s\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:665
+#, fuzzy
+msgid ""
+"The file '<b>%1</b>' already exists and is <b>%2</b> large.<br>Do you wish "
+"to<br><b>overwrite</b> the existing file,<br> <b>auto-rename</b> the new "
+"file, or<br><b>resume</b> an incomplete download?"
+msgstr ""
+"L'arxiu '<b>%1</b>' ja existeix i t� <b>%2</b> bytes de longitud."
+"<br>�Dessitja<br><b>sobreescriure</b> l'arxiu existent,<br> <b>renombrar "
+"autom�ticament</b> el nou arxiu, o<br><b>continuar</b> una transfer�ncia "
+"incompleta?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:677
+#, fuzzy
+msgid ""
+"The file '<b>%1</b>' already existsand is larger than the offered one.<br>Do "
+"you wish to<br><b>overwrite</b> the existing file, or<br> <b>auto-rename</b> "
+"the new file ?"
+msgstr ""
+"L'arxiu '<b>%1</b>' ja existeix i t� <b>%2</b> bytes de longitud."
+"<br>�Dessitja<br><b>sobreescriure</b> l'arxiu existent,<br> <b>renombrar "
+"autom�ticament</b> el nou arxiu, o<br><b>continuar</b> una transfer�ncia "
+"incompleta?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:747
+#, fuzzy
+msgid "File %s exists, auto-renaming to %Q"
+msgstr "L'arxiu %s ja existeix, renombrant autom�ticament a %s.rnm"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:158
+#, c-format
+msgid "Attempting a passive DCC %s connection"
+msgstr "Intentant una connexi� %s DCC pasiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:168
+#, c-format
+msgid "Attempting an active DCC %s connection"
+msgstr "Intentant una connexi� %s DCC activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:761
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:107
+#, fuzzy
+msgid "Contacting host %Q on port %Q"
+msgstr "Contactant amb la m�quina %s en el port %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:83
+#, fuzzy
+msgid "Listening on interface %Q port %Q"
+msgstr "Escoltant en la interf�cie %s port %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:207
+#, c-format
+msgid "The local IP address is private, determining from IRC server: %s"
+msgstr "L'adre�a IP local �s privada, determinant des del servidor IRC: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1512
+msgid ""
+"The local IP address is private, but unable to determine it from the IRC "
+"server"
+msgstr ""
+"L'adre�a IP local �s privada, per� �s impossible determinar-la des del "
+"servidor IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1515
+msgid ""
+"The local IP address is private, but have no IRC server to determine it from"
+msgstr ""
+"L'adre�a IP local �s privada, per� no tinc un servidor IRC des d'on "
+"determinar-la"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:234
+#, fuzzy
+msgid "Sent DCC %Q request to %Q, waiting for the remote client to connect..."
+msgstr "Enviada petici� DCC %s a %s, esperant la connexi� del client remot..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:237
+#, fuzzy
+msgid "DCC %Q request not sent, awaiting manual connection"
+msgstr "La petici� DCC %s no ha estat enviada, esperant connexi� manual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1574
+msgid "Low-level transport connection established"
+msgstr "Establerta la connexi� de transport de baix nivell"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1575
+msgid "Starting Secure Socket Layer handshake"
+msgstr "Iniciant negociaci� del protocol SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:254
+#, c-format
+msgid "[SSL ERROR]: %s"
+msgstr "[ERROR SSL]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:388
+msgid "Cannot send data: No active connection"
+msgstr "No puc enviar dades: No hi ha una connexi� activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:344
+#, fuzzy
+msgid ""
+"The crypto engine was not able to encrypt the current message (%Q): %Q, no "
+"data was sent to the remote end"
+msgstr ""
+"El motor de xifrat no ha estat capa� de desxifrar el missatge actual (%Q): %"
+"s, no s'han enviat dades a l'extrem remot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:403
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:827
+msgid "ERROR: %Q"
+msgstr "ERROR: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:447
+#, fuzzy
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+"El seg�ent missatge semblar estar xifrat, per� el motor de xifrat ha fallat "
+"al descodificar-lo: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:493
+#, fuzzy
+msgid "DCC %Q failed: %Q"
+msgstr "DCC %s ha fallat: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:521
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:919
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:282
+#, fuzzy
+msgid "Connected to %Q:%Q"
+msgstr "Conectat a %s:%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:523
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:921
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:284
+#, fuzzy
+msgid "Local end is %Q:%Q"
+msgstr "El extrem final �s %s:%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:164
+msgid ""
+"WARNING: failed to check the soundcard duplex capabilities: if this is a "
+"half-duplex soundcard , use the DCC VOICE option to force half-duplex "
+"algorithm"
+msgstr ""
+"ATENCIO: ha fallat la comprovaci� de la caracter�stica duplex de la tarja de "
+"so: si aquesta �s una tarja half-duplex, empra l'opci� DCC VOICE per a "
+"for�ar l'algoritme half-duplex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:172
+msgid ""
+"Half duplex soundcard detected, you will not be able to talk and listen at "
+"the same time"
+msgstr ""
+"Detectada tarja de so half-duplex, no ser�s capa� de parlar i escoltar al "
+"mateix temps"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:213
+#, c-format
+msgid ""
+"WARNING: failed to set the requested sample rate (%d): the device used "
+"closest match (%d)"
+msgstr ""
+"ATENCIO: ha fallat la configuraci� de la freq��ncia de mostreig solicitada (%"
+"d): el dispositiu ha emprat el valor m�s proper (%d)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:271
+msgid "Ops...failed to test the soundcard capabilities...expect problems..."
+msgstr ""
+"Ups...ha fallat la prova de les capacitats de la tarja de so...pots esperar "
+"problemes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:662
+msgid "Input buffer"
+msgstr "Buffer d'entrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:664
+msgid "Output buffer"
+msgstr "Buffer de sortida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:746
+msgid "Attempting a passive DCC VOICE connection"
+msgstr "Intentant una connexi� pasiva DCC VOICE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:751
+msgid "Attempting an active DCC VOICE connection"
+msgstr "Intentant una connexi� activa DCC VOICE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:779
+#, fuzzy
+msgid ""
+"Sent DCC VOICE (%s) request to %Q, waiting for the remote client to "
+"connect..."
+msgstr ""
+"Enviada petici� DCC VOICE (%s) a %s, esperant la connexi� del client remot..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:781
+msgid "DCC VOICE request not sent: awaiting manual connections"
+msgstr "No s'ha enviat la petici� DCC: esperant connexions manuals"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:885
+#, c-format
+msgid "Input buffer: %d bytes"
+msgstr "Buffer d'entrada: %d bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:887
+#, c-format
+msgid "Output buffer: %d bytes"
+msgstr "Buffer de sortida: %d bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:910
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:277
+msgid "DCC Failed: %Q"
+msgstr "Ha fallat el DCC: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:939
+#, c-format
+msgid "Actual codec used is '%s'"
+msgstr "El c�dec actual �s '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:1023
+#, c-format
+msgid "Volume: %i"
+msgstr "Volum: %i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:91
+msgid ""
+"This window has no associated IRC context (an IRC context is required unless "
+"-c or -n are passed)"
+msgstr ""
+"Aquesta finestra no t� context IRC associat (es necessita un context IRC a "
+"menys que es passin els modificadors -c o -n)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:104
+msgid ""
+"You're not connected to a server (an active connection is required unless -c "
+"or -n are passed)"
+msgstr ""
+"No est� connectat a un servidor (es necessita una connexi� activa a menys "
+"que es passin els modificadors -c o -n)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:129
+#, fuzzy
+msgid "Unable to get address of interface %Q"
+msgstr "Impossible obtenir l'adre�a de la interf�cie %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:139
+msgid "No suitable interfaces to listen on, use -i"
+msgstr "No hi ha interf�cies adequades per a escoltar, empra -i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:172
+msgid "This executable was built without SSL support, -s switch ignored"
+msgstr ""
+"Aquest executable s'ha constru�t sense suport SSL, el modificador -s ser� "
+"ignorat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:657
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1159
+msgid "-c requires -i and -p"
+msgstr "-c necessita -i i -p"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:634
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:730
+msgid "<unknown size>"
+msgstr "<mida desconeguda>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:890
+msgid "This executable has been built without SSL support, -s switch ignored"
+msgstr ""
+"Aquest executable ha estat constru�t sense suport SSL, el modificador -s "
+"ser� ignorat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:960
+msgid "This executable has no SSL support, -s switch ignored"
+msgstr "Aquest executable no t� suport SSL, modificador -s ignorat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1114
+msgid "DCC VOICE support not enabled at compilation time"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1132
+#, fuzzy
+msgid "Invalid sample rate specified, defaulting to 8000"
+msgstr "Freq��ncia de motreig '%s' no v�lida, posant a 8000 per defecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1148
+#, fuzzy
+msgid "Invalid codec specified, defaulting to 'adpcm'"
+msgstr "C�dec '%s' no v�lid, posant per defecte 'adpcm'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1577
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2542
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2562
+msgid "The current window has no associated DCC session"
+msgstr "La finestra actual no t� una sessi� DCC associada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1582
+msgid "The specified parameter is not a valid DCC identifier"
+msgstr "El par�metre especificat no �s un identificador DCC v�lid"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1662
+msgid "This DCC session is not a DCC transfer session"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2553
+msgid "The specified window identifier is not valid"
+msgstr "L'identificador de finestra especificat no �s v�lid"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:260
+msgid "WARNING: The peer is sending garbage data past the end of the file"
+msgstr ""
+"ATENCIO: El altre extrem est� enviant dades escombraria passant el final de "
+"l'arxiu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:261
+msgid ""
+"WARNING: Ignoring data past the declared end of file and closing the "
+"connection"
+msgstr ""
+"ATENCIO: Ignorant les dades que excedeixen del final d'arxiu declarat i "
+"tancant la connexi�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:362
+msgid ""
+"Data transfer terminated, waiting 30 seconds for the peer to close the "
+"connection..."
+msgstr ""
+"Transfer�ncia de dades acabada, esperant 30 segons per a que l'altre extrem "
+"tanqui la connexi�..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:369
+msgid "Data transfer was terminated 30 seconds ago, closing the connection"
+msgstr "La transfer�ncia de dades ha acabat fa 30 segons, tancant la connexi�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:600
+msgid "WARNING: Received data in a DCC TSEND, there should be no acknowledges"
+msgstr ""
+"ATENCIO: Rebent dades en un DCC TSEND, aqu� no hauria d'haver confirmacions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:732
+#, c-format
+msgid "TRANSFER %d"
+msgstr "TRANSFERIR %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:755
+msgid "Setting up the connection"
+msgstr "Configurant la connexi�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:814
+msgid "Attempting a passive DCC %1 connection"
+msgstr "Intentant una connexi� DCC pasiva %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:818
+msgid "Attempting an active DCC %1 connection"
+msgstr "Intentant una connexi� DCC activa %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:844
+msgid "Sent DCC RESUME request to %1, waiting for ACCEPT"
+msgstr "Enviada petici� DCC RESUME a %1, esperant el ACCEPT"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:914
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:925
+msgid "Aborted"
+msgstr "Interrumpuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:924
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1603
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1678
+msgid "Transfer failed: "
+msgstr "Ha fallat la transfer�ncia: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:936
+msgid "Configure Bandwidth..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:938
+msgid "Resend DCC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:939
+msgid "Resend TDCC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:940
+msgid "Resend RevDCC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:944
+msgid "Abort"
+msgstr "Interrompre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1135
+msgid "From: "
+msgstr "Des de: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1136
+msgid "To: "
+msgstr "A: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1246
+#, fuzzy
+msgid "%1 of %2 (%3%)"
+msgstr "%1 de %2 bytes (%3%)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1250
+msgid "%1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1263
+msgid "Spd:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1278
+msgid "Avg:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1349
+msgid "Transfer Log"
+msgstr "Registre de Transfer�ncia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1480
+msgid "Contacting host %1 on port %2"
+msgstr "Contactant amb la m�quina %1 en el port %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1487
+msgid "Listening on interface %1 port %2"
+msgstr "Escoltant en la interf�cie %1 port %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1510
+msgid "The local IP address is private, determining from IRC server: %1"
+msgstr "L'adre�a IP local �s privada, determinant-la des del servidor IRC: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1561
+msgid "Sent DCC %1 request to %2, waiting for remote client to connect..."
+msgstr ""
+"Enviada petici� DCC %1 a %2, esperant la connexi� des del client remot..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1563
+msgid "DCC %1 request not sent, awaiting manual connection"
+msgstr "Petici� DCC %1 no enviada, esperant connexi� manual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1582
+msgid "[SSL ERROR]: %1"
+msgstr "[ERROR SSL]: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1625
+#, fuzzy
+msgid "DCC %s transfer with %Q@%Q:%Q completed: \r![!dbl]play $0\r%s\r"
+msgstr "Transfer�ncia DCC %s amb %s@%s:%s completada: \r![!dbl]play $0\r%s\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1640
+msgid "Transfer completed"
+msgstr "Transfer�ncia completada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1687
+msgid "Connected to %1:%2"
+msgstr "Conectat a %1:%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1688
+msgid "Local end is %1:%2"
+msgstr "El extrem local �s %1:%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1732
+msgid "Transferring data"
+msgstr "Transferint dades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1758
+msgid "RESUME accepted, transfer will begin at position %1"
+msgstr "S'ha acceptat RESUME, la transfer�ncia s'iniciar� a la posici� %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1789
+msgid "Internal error in RESUME request"
+msgstr "Error intern a la petici� RESUME"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1794
+msgid "Invalid RESUME request: Position %1 is larger than file size"
+msgstr ""
+"Petici� RESUME no v�lida: la posici� %1 �s major que la mida de l'arxiu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1798
+msgid "Accepting RESUME request, transfer will begin at position %1"
+msgstr "Acceptant petici� RESUM, la transfer�ncia comen�ara a la posici� %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1830
+msgid "Configure bandwidth for DCC transfer %1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1833
+msgid "Limit upload bandwidth to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1833
+msgid "Limit download bandwidth to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1846
+#, fuzzy
+msgid "bytes/sec"
+msgstr "Mitja: ? bytes/seg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1850
+msgid "OK"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:142
+msgid "Cancel"
+msgstr "Cancel�lar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:78
+msgid "Attempting a passive DCC CANVAS connection"
+msgstr "Intentant una connexi� pasiva DCC CANVAS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:98
+#, fuzzy
+msgid ""
+"Sent DCC CANVAS request to %Q, waiting for the remote client to connect..."
+msgstr ""
+"Enviada petici� DCC CANVAS a %s, esperant la connexi� des del client remot..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:100
+msgid "DCC CANVAS request not sent: awaiting manual connections"
+msgstr "Petici� DCC CANVAS no enviada; esperant connexions manuals"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:104
+msgid "Attempting an active DCC CANVAS connection"
+msgstr "Intentant una connexi� DCC CANVAS activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1563
+msgid "&Line"
+msgstr "&L�nia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1564
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1572
+msgid "&Rectangle"
+msgstr "&Rectangle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1565
+msgid "&Ellipse"
+msgstr "&Elipse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1566
+msgid "&Pie"
+msgstr "Past�s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1567
+msgid "&Chord"
+msgstr "A&cord"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1569
+msgid "&Rich text (html)"
+msgstr "Text en&riquit (html)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1571
+msgid "&Triangle"
+msgstr "&Triangle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1573
+msgid "&Pentagon"
+msgstr "&Pentagon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1574
+msgid "&Hexagon"
+msgstr "&Hexagon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1576
+msgid "&Shape"
+msgstr "Figura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1577
+msgid "&Item"
+msgstr "Element"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1578
+msgid "&Polygons"
+msgstr "&Pol�gons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1580
+msgid "&Insert"
+msgstr "&Inserir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:77
+#, fuzzy
+msgid "Unable to process the above request: %Q, %Q"
+msgstr "No �s possible processar la petici� anterior: %s, %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:79
+msgid "Ignoring and notifying failure"
+msgstr "Ignorant i notificant l'errada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:79
+msgid "Ignoring"
+msgstr "Ignorant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:95
+#, c-format
+msgid "Concurrent transfer limit reached (%u of %u transfers running)"
+msgstr ""
+"Arribant al l�mit de transfer�ncies concurrents (%u de %u transfer�ncies "
+"funcionant)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:111
+#, c-format
+msgid "Slot limit reached (%u slots of %u)"
+msgstr "Arribat al l�mit d'slots (%u slots de %u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:120
+msgid "Too many pending connections"
+msgstr "Masses connexions pendents"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:156
+#, c-format
+msgid "Invalid port number %s"
+msgstr "N�mero de port no v�lid %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:172
+#, c-format
+msgid "Invalid IP address in old format %s"
+msgstr "L'adre�a IP en format antic no �s v�lida %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:191
+#, c-format
+msgid "Invalid IP address %s"
+msgstr "Adre�a IP no v�lida %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:258
+#, c-format
+msgid ""
+"The above request is broken: The second parameter is '%s' and should be "
+"'chat', trying to continue"
+msgstr ""
+"La petici� anterior no �s connecta: el segon par�metre �s '%s' i hauria de "
+"ser xat, intentant continuar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:270
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC CHAT is not available"
+msgstr ""
+"Aquest executable ha estat compilat sense suport SSL, no est� disponible "
+"l'extenssi� per a DCC CHAT"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:321
+msgid ""
+"The above request is broken: it looks like a zero port tag acknowledge but I "
+"have either never seen this tag or it was sent more than 120 seconds ago"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:322
+msgid "It seems that I haven't requested this dcc chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:442
+msgid ""
+"The above request is broken: The fourth parameter should be the file size "
+"but does not appear to be an unsigned number, trying to continue"
+msgstr ""
+"La petici� anterior no es connecta: el quart par�metre hauria de ser la mida "
+"de l'arxiu per� no sembla ser un n�mero enter sense signe, intentant "
+"continuar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:600
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:738
+msgid ""
+"The above request is broken: The filename contains path components, "
+"stripping the leading path and trying to continue"
+msgstr ""
+"La petici� anterior no �s correcta: el nom de l'arxiu cont� una ruta, "
+"traient la ruta i intentant continuar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:466
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC SEND is not available"
+msgstr ""
+"Aquest executable ha estat compilat sense suport SSL, no est� disposable "
+"l'extenssi� per a DCC SEND"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:528
+#, c-format
+msgid ""
+"Can't proceed with DCC RECV: Transfer not initiated for file %s on port %s"
+msgstr ""
+"No puc realitzar el DCC REVC: la transfer�ncia de l'arxiu %s en el port %s "
+"no s'ha iniciat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:553
+#, c-format
+msgid "Invalid resume position argument '%s'"
+msgstr "L'argument de posici� de resum '%s' no �s v�lid"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:565
+#, c-format
+msgid ""
+"Can't proceed with DCC SEND: Transfer not initiated for file %s on port %s, "
+"or invalid resume size"
+msgstr ""
+"No he pogut realitzar en DCC SEND: la transfer�ncia de l'arxiu %s en el port "
+"%s no s'ha iniciat o t� una mida de resum no v�lida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:590
+msgid ""
+"The above request has resume file size missing, assuming a resume file size "
+"of 0"
+msgstr ""
+"La petici� anterior no t� una mida d'arxiu per a continuar, assumint 0 com a "
+"mida d'arxiu de reanudaci�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:614
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC RECV is not available"
+msgstr ""
+"Aquest executable ha estat compilat sense suport SSL, no est� disponible "
+"l'extensi� SSL per a DCC RECV"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:629
+#, c-format
+msgid "Invalid RECV request: Position %u is is larger than file size"
+msgstr ""
+"Petici� RECV no v�lida: la posici� %u �s m�s gran que la mida de l'arxiu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:683
+msgid "%Q [%Q@%Q] is ready to receive the file \"%s\""
+msgstr "%Q [%Q@%Q] est� preparat per a rebre l'arxiu \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:689
+#, c-format
+msgid "The remote client is listening on interface %s and port %s"
+msgstr "El client remot est� escoltant en la interf�cie %s i port %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:696
+msgid ""
+"Use %c\r![!dbl]dcc.send %s -i=%s -p=%s %Q\r/dcc.send %s -i=%s -p=%s %Q\r%c "
+"to send the file (or double-click on the socket)"
+msgstr ""
+"Emprar %c\r![!dbl]dcc.send %s -i=%s -p=%s %Q\r/dcc.send %s -i=%s -p=%s %Q\r%"
+"c per a enviar l'arxiu (o doble click al socket)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:728
+msgid ""
+"The above request is broken: The fourth parameter should be the file size "
+"but does not appear to be an unsigned number; trying to continue"
+msgstr ""
+"La petici� anterior �s err�nia: el quart par�metre hauria de ser la mida de "
+"l'arxiu per� no sembla ser un enter sense signe;intentant continuar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:752
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC RSEND is not available"
+msgstr ""
+"Aquest executable ha estat compilat sense suport SSL, no est� disponible "
+"l'extensi� SSL per a DCC RSEND"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:763
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:932
+msgid "(unknown)"
+msgstr "(desconegut)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:918
+msgid "No suitable interface to listen on, trying to continue anyway..."
+msgstr ""
+"No hi ha una interf�cie adequant en el que escoltar, intentant continuar de "
+"totes formes..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:835
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC GET is not available"
+msgstr ""
+"Aquest executable ha estat compilat sense suport SSL, no est� disponible "
+"l'extensi� per a DCC GET"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:846
+msgid "No file offer named '%s' (with size %s) available for %Q [%Q@%Q]"
+msgstr ""
+"No hi ha una oferta de l'arxiu '%s' (amb mida %s) disponible per a %Q [%Q@%Q]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:847
+msgid "\"any\""
+msgstr "\"qualsevol\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:891
+msgid ""
+"Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering "
+"DCC %s since we can't accept incoming connections (user option)"
+msgstr ""
+"Acceptant una petici� d'arxiu des de %Q [%Q@%Q] per a '%s' (arxiu real: %Q), "
+"oferint DCC %s perque no podem acceptar connexions entrants (opci� d'usuari)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:948
+#, fuzzy
+msgid ""
+"Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering "
+"DCC %Q"
+msgstr ""
+"Acceptant una petici� d'arxiu des de %Q [%Q@%Q] per a '%s' (arxiu real: %Q), "
+"oferint DCC %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:982
+#, fuzzy
+msgid ""
+"The above request cannot be accepted: DCC VOICE support not enabled at "
+"compilation time "
+msgstr "La petici� anterior no pot ser acceptada: c�dec no suportat '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:992
+#, c-format
+msgid "The above request cannot be accepted: Unsupported codec '%s'"
+msgstr "La petici� anterior no pot ser acceptada: c�dec no suportat '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:1005
+#, c-format
+msgid ""
+"The above request appears to be broken: Invalid sample-rate '%s', defaulting "
+"to 8000"
+msgstr ""
+"La petici� anterior sembla err�nia: freq��ncia de motreig '%s' no v�lida, "
+"posant a 8000 per defecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:1151
+#, c-format
+msgid "Unknown DCC type '%s'"
+msgstr "Tipus DCC desconegut '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:64
+msgid "&Accept"
+msgstr "&Acceptar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:69
+msgid "&Reject"
+msgstr "&Rebutjar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:129
+msgid "&Rename"
+msgstr "&Renombrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:133
+msgid "Over&write"
+msgstr "Sobreescriure"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:137
+msgid "Re&sume"
+msgstr "Continuar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:149
+msgid "File Already Exists - KVIrc"
+msgstr "L'Arxiu Ja Existeix - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/utils.cpp:122
+msgid "Can't retrieve a suitable local IPV4 address"
+msgstr "No puc trobar una adre�a IPv4 apropiada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/utils.cpp:140
+#, c-format
+msgid ""
+"Can't listen on default interface '%s': fix it in the options dialog, "
+"disabling the option (so the next dcc will work)"
+msgstr ""
+"No puc escoltar en la interf�cie per defecte '%s': arregla-ho en el di�leg "
+"d'opcions deshabilitant l'opci� (per a que funcioni el pr�xim dcc)"
+
+#~ msgid "%1 bytes"
+#~ msgstr "%1 bytes"
+
+#~ msgid "Choose Save Location - KVIrc"
+#~ msgstr "Esculli el Lloc de la Grabaci� - KVIrc"
+
+#~ msgid "Contacting host %s on port %s"
+#~ msgstr "Contactant amb la m�quina %s en el port %s"
+
+#~ msgid "Missing target nickname"
+#~ msgstr "Falta nick de dest�"
+
+#~ msgid "Missing filename"
+#~ msgstr "Falta el nom d'arxiu"
+
+#~ msgid "The file size is not an positive number"
+#~ msgstr "La mida de l'arxiu no �s un n�mero positiu"
+
+#~ msgid "Invalid file size specified, no message sent"
+#~ msgstr ""
+#~ "La mida de l'arxiu especificat no �s v�lida, no s'ha enviat el missatge"
+
+#~ msgid "Avg: %1 bytes/sec"
+#~ msgstr "Mitja: %1 bytes/seg"
diff --git a/po/modules/dcc/dcc_cs.po b/po/modules/dcc/dcc_cs.po
new file mode 100644
index 00000000..731b5470
--- /dev/null
+++ b/po/modules/dcc/dcc_cs.po
@@ -0,0 +1,1011 @@
+# Czech translation of Kvirc.
+# Copyright (C) 2004 THE Kvirc'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the Kvirc package.
+# Dusan Hokuv <[email protected]>, 2004.
+# , fuzzy
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Kvirc\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-12-05 17:57+0100\n"
+"Last-Translator: Dusan Hokuv <[email protected]>\n"
+"Language-Team: Czech <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/descriptor.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:642
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:666
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:803
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:805
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:484
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:514
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:136
+msgid "unknown"
+msgstr "neznámý"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:783
+msgid "Choose Files to Send - KVIrc"
+msgstr "Vyberte soubory k odeslání - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:189
+msgid "Can't send DCC %Q request to %Q: IRC connection has been terminated"
+msgstr "Nelze poslat DCC %Q požadavek %Q: IRC spojení bylo přerušeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:821
+msgid "Can't open file %Q for reading"
+msgstr "Nelze otevřít soubor %Q pro čtení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:269
+msgid ""
+"<b>%1 [%2@%3]</b> requests a <b>Direct Client Connection</b> in <b>%4</b> "
+"mode.<br>"
+msgstr "<b>%1 [%2@%3]</b> požadavek <b>DCC</b> v <b>%4</b> módu.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:274
+msgid "The connection will be secured using SSL.<br>"
+msgstr "Spojení bude zabezpečeno pužitím SSL.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:280
+msgid "You will be the passive side of the connection.<br>"
+msgstr "Budete na pasivní straně spojení.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:284
+msgid "The connection target will be host <b>%1</b> on port <b>%2</b><br>"
+msgstr "Cílový hostitel je <b>%1</b> na portu <b>%2</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:543
+msgid "DCC %1 Request - KVIrc"
+msgstr "DCC %1 požadavek - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:340
+msgid ""
+"<b>%1 [%2@%3]</b> requests a<br><b>Direct Client Connection</b> in <b>VOICE</"
+"b> mode.<br>The connection target will be host <b>%4</b> on port <b>%5</"
+"b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> požadavky<br><b>DCC</b> v <b>VOICE</b> modu.<br>Cílový "
+"hostitel je <b>%4</b> na portu <b>%5</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:346
+msgid "DCC VOICE request"
+msgstr "DCC VOICE požadavek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:411
+msgid ""
+"<b>%1 [%2@%3]</b> requests a<br><b>Direct Client Connection</b> in "
+"<b>CANVAS</b> mode.<br>The connection target will be host <b>%4</b> on port "
+"<b>%5</b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> požadavky<br><b>DCC</b> v <b>CANVAS</b> modu.<br>Cílový "
+"hostitel je <b>%4</b> na portu <b>%5</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:417
+msgid "DCC CANVAS request"
+msgstr "DCC CANVAS požadavek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:502
+msgid ""
+"<b>%1 [%2@%3]</b> wants to send you the file '<b>%4</b>', <b>%5</b> large."
+"<br>The connection target will be host <b>%6</b> on port <b>%7</b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> ti chce poslat soubor '<b>%4</b>', <b>%5</b> bajtů veliký."
+"<br>Cílový hostitel je <b>%6</b> na portu <b>%7</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:515
+msgid ""
+"<b>%1 [%2@%3]</b> wants to send you the file '<b>%4</b>', <b>%5</b> large."
+"<br>You will be the passive side of the connection.<br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> ti chce poslat soubor '<b>%4</b>', <b>%5</b> bajtů veliký."
+"<br>Budete pasivní stranou spojení.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:528
+msgid ""
+"<center><b>Note:</b></center>The file appears to be an avatar that you have "
+"requested. You should not change its filename. Save it in a location where "
+"KVIrc can find it, such as the 'avatars', 'incoming', or 'pics' directories, "
+"your home directory, or the save directory for the incoming file type. The "
+"default save path will probably work. You can instruct KVIrc to accept "
+"incoming avatars automatically by setting the option "
+"<tt>boolAutoAcceptIncomingAvatars</tt> to true.<br>"
+msgstr ""
+"<center><b>Poznámka:</b></center>Soubor vypadá jako avatar, který jste "
+"požadovali. Neměli byste měnit jeho název. Uložte jej v lokaci, kde ho bude "
+"moci KVIrc najít, jako např. 'avatars', 'incoming', nebo 'pics' adresáře, "
+"vašeho domovského adresáře, nebo adresář pro ukládání stažených souborů "
+"tohoto typu. Výchozí cesta pro ukládání souborů by měla také fungovat. "
+"Můžete nastavit KVIrc, aby přijímalo avatary automaticky pomocí "
+"nastavení<tt>boolAutoAcceptIncomingAvatars</tt> jako true.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:557
+msgid "Auto-accepting DCC %Q request from %Q!%Q@%Q for file %Q"
+msgstr "Automatické přijímání DCC %Q požadavku od %Q!%Q@%Q pro soubor %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:618
+msgid "Choose Files to Save - KVIrc"
+msgstr "Vyberte soubory k uložení - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:631
+msgid "Auto-saving DCC %Q file %Q as \r![!dbl]play $0\r%Q\r"
+msgstr "Automatické ukládání DCC %Q souboru %Q jako \r![!dbl]play $0\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:665
+msgid ""
+"The file '<b>%1</b>' already exists and is <b>%2</b> large.<br>Do you wish "
+"to<br><b>overwrite</b> the existing file,<br> <b>auto-rename</b> the new "
+"file, or<br><b>resume</b> an incomplete download?"
+msgstr ""
+"Soubor '<b>%1</b>' již existuje a je <b>%2</b> bajtů veliký.<br>Přejete "
+"si<br><b>přepsat</b> stávající soubor,<br> <b>automaticky přejmenovat</b> "
+"nový soubor, nebo<br><b>pokračovat</b> v nedokončeném stahování?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:677
+msgid ""
+"The file '<b>%1</b>' already existsand is larger than the offered one.<br>Do "
+"you wish to<br><b>overwrite</b> the existing file, or<br> <b>auto-rename</b> "
+"the new file ?"
+msgstr ""
+"Soubor '<b>%1</b>' již existuje a je delší než nabízený.<br>Přejete "
+"si<br><b>přepsat</b> stávající soubor, nebo <br> <b>automaticky přejmenovat</"
+"b> nový soubor ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:747
+msgid "File %s exists, auto-renaming to %Q"
+msgstr "Soubor %s již existuje, automaticky přejmenovávám na %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:158
+#, c-format
+msgid "Attempting a passive DCC %s connection"
+msgstr "Pokouším se o pasivní DCC %s připojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:168
+#, c-format
+msgid "Attempting an active DCC %s connection"
+msgstr "Pokouším se o aktivní DCC %s připojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:761
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:107
+msgid "Contacting host %Q on port %Q"
+msgstr "Kontaktuje se hostitel %Q na portu %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:83
+msgid "Listening on interface %Q port %Q"
+msgstr "Naslouchám na interfacu %Q port %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:207
+#, c-format
+msgid "The local IP address is private, determining from IRC server: %s"
+msgstr "Lokální IP adresa je privátní, zjišťuji z IRC serveru: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1512
+msgid ""
+"The local IP address is private, but unable to determine it from the IRC "
+"server"
+msgstr "Lokální IP adresa je privátní, ale nemohu ji zjistit z IRC serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1515
+msgid ""
+"The local IP address is private, but have no IRC server to determine it from"
+msgstr ""
+"Lokální IP adresa je privátní, ale nemám žádné IRC servery k jejímu zjištění"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:234
+msgid "Sent DCC %Q request to %Q, waiting for the remote client to connect..."
+msgstr ""
+"Odeslán DCC %Q požadavek na %Q, čekám na připojení vzdáleného klienta..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:237
+msgid "DCC %Q request not sent, awaiting manual connection"
+msgstr "DCC %Q požadavek nebyl odeslán, očekává se manuální připojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1574
+msgid "Low-level transport connection established"
+msgstr "Nízkoúrovňové přenosové spojení navázáno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1575
+msgid "Starting Secure Socket Layer handshake"
+msgstr "Startuji SSL spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:254
+#, c-format
+msgid "[SSL ERROR]: %s"
+msgstr "[SSL CHYBA]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:388
+msgid "Cannot send data: No active connection"
+msgstr "Nelze poslat data: Žádné aktivní připojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:344
+msgid ""
+"The crypto engine was not able to encrypt the current message (%Q): %Q, no "
+"data was sent to the remote end"
+msgstr ""
+"Šifrovací program nebyl schopen zašifrovat aktuální zprávu (%Q): %Q, žadná "
+"data nebyla odeslána na vzdálený konec"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:403
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:827
+msgid "ERROR: %Q"
+msgstr "CHYBA: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:447
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+"Následující zpráva se zdá být zašifrovaná, ale šifrovací program nebyl "
+"schopen ji dešifrovat: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:493
+msgid "DCC %Q failed: %Q"
+msgstr "DCC %Q selhalo: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:521
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:919
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:282
+msgid "Connected to %Q:%Q"
+msgstr "Spojeno s %Q:%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:523
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:921
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:284
+msgid "Local end is %Q:%Q"
+msgstr "Lokální konec je %Q:%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:164
+msgid ""
+"WARNING: failed to check the soundcard duplex capabilities: if this is a "
+"half-duplex soundcard , use the DCC VOICE option to force half-duplex "
+"algorithm"
+msgstr ""
+"VAROVÁNÍ: selhalo ověřování duplexních schopností zvukové karty: pokud máte "
+"poloduplexní zvukovou kartu, použijte DCC VOICE volbu k nastavení polo-"
+"duplexu "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:172
+msgid ""
+"Half duplex soundcard detected, you will not be able to talk and listen at "
+"the same time"
+msgstr ""
+"Byla detekována poloduplexní zvuková karta, nebudete moci mluvit a "
+"poslouchat v ten samý moment"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:213
+#, c-format
+msgid ""
+"WARNING: failed to set the requested sample rate (%d): the device used "
+"closest match (%d)"
+msgstr ""
+"VAROVÁNÍ: selhal pokus o nastavení požadované vzorkovací frekvence (%d): "
+"zařízení použilo nejbližší shodnou frekvenci (%d)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:271
+msgid "Ops...failed to test the soundcard capabilities...expect problems..."
+msgstr "Ups...selhal test schopností zvukové karty...očekávejte problémy..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:662
+msgid "Input buffer"
+msgstr "Vstupní buffer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:664
+msgid "Output buffer"
+msgstr "Výstupní buffer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:746
+msgid "Attempting a passive DCC VOICE connection"
+msgstr "Pokouším se o pasivní DCC VOICE spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:751
+msgid "Attempting an active DCC VOICE connection"
+msgstr "Pokouším se o aktivní DCC VOICE spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:779
+msgid ""
+"Sent DCC VOICE (%s) request to %Q, waiting for the remote client to "
+"connect..."
+msgstr ""
+"Zaslán DCC VOICE (%s) požadavek na %Q, čekám na připojení vzdáleného "
+"klienta..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:781
+msgid "DCC VOICE request not sent: awaiting manual connections"
+msgstr "DCC VOICE požadavek nebyl odeslán: očekávám manuální připojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:885
+#, c-format
+msgid "Input buffer: %d bytes"
+msgstr "Vstupní buffer: %d bajtů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:887
+#, c-format
+msgid "Output buffer: %d bytes"
+msgstr "Výstupní buffer: %d bajtů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:910
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:277
+msgid "DCC Failed: %Q"
+msgstr "DCC Selhání: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:939
+#, c-format
+msgid "Actual codec used is '%s'"
+msgstr "Aktuálně použitý kodek je '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:1023
+#, c-format
+msgid "Volume: %i"
+msgstr "Hlasitost: %i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:91
+msgid ""
+"This window has no associated IRC context (an IRC context is required unless "
+"-c or -n are passed)"
+msgstr ""
+"Toto okno nemá žádnou souvislost s IRC (souvislost s IRC je nutná nejsou-li "
+"zadány -c nebo -n parametry)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:104
+msgid ""
+"You're not connected to a server (an active connection is required unless -c "
+"or -n are passed)"
+msgstr ""
+"Nejste připojeni k žádnému serveru (aktivní připojení je požadováno, pokud "
+"nejsou zadány -c nebo -n parametry)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:129
+msgid "Unable to get address of interface %Q"
+msgstr "Nelze získat adresu rozhraní %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:139
+msgid "No suitable interfaces to listen on, use -i"
+msgstr "Žádné vhodné rozhraní k naslouchání, použijte -i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:172
+msgid "This executable was built without SSL support, -s switch ignored"
+msgstr ""
+"Tento spustitelný soubor byl zkompilován bez podpory SSL, přepínač -s bude "
+"ignorován"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:657
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1159
+msgid "-c requires -i and -p"
+msgstr "-c vyžaduje -i a -p"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:634
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:730
+msgid "<unknown size>"
+msgstr "<neznámá velikost>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:890
+msgid "This executable has been built without SSL support, -s switch ignored"
+msgstr ""
+"Tento spustitelný soubor byl zkompilován bez podpory SSL, přepínač -s bude "
+"ignorován"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:960
+msgid "This executable has no SSL support, -s switch ignored"
+msgstr "Tento spustitelný soubor nemá podporu SSL, přepínač -s ignorován"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1114
+msgid "DCC VOICE support not enabled at compilation time"
+msgstr "DCC VOICE podpora nebyla zapnuta během kompilace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1132
+msgid "Invalid sample rate specified, defaulting to 8000"
+msgstr "Určena nesprávná vzorkovací frekvence, nastavuji výchozí na 8000"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1148
+msgid "Invalid codec specified, defaulting to 'adpcm'"
+msgstr "Určen nesprávný kodek, nastavuji výchozí na 'adpcm'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1577
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2542
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2562
+msgid "The current window has no associated DCC session"
+msgstr "Současné okno nemá asociováno DCC sezení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1582
+msgid "The specified parameter is not a valid DCC identifier"
+msgstr "Určený parametr není platným DCC identifikátorem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1662
+msgid "This DCC session is not a DCC transfer session"
+msgstr "Tato DCC relace není DCC přenosová relace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2553
+msgid "The specified window identifier is not valid"
+msgstr "Určený identifikátor okna je neplatný"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:260
+msgid "WARNING: The peer is sending garbage data past the end of the file"
+msgstr "VAROVÁNÍ: Za koncem souboru jsou posílána data nepatřící k souboru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:261
+msgid ""
+"WARNING: Ignoring data past the declared end of file and closing the "
+"connection"
+msgstr ""
+"VAROVÁNÍ: Ignoruji data za deklarovaným koncem souboru a ukončuji spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:362
+msgid ""
+"Data transfer terminated, waiting 30 seconds for the peer to close the "
+"connection..."
+msgstr ""
+"Přenos dat byl stornován, čekám 30 sekund, než druhá strana uzavře spojení..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:369
+msgid "Data transfer was terminated 30 seconds ago, closing the connection"
+msgstr "Přenos dat byl stornován před 30-ti sekundami, uzavírám spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:600
+msgid "WARNING: Received data in a DCC TSEND, there should be no acknowledges"
+msgstr ""
+"VAROVÁNÍ: Přijímaná data v DCC TSEND, tady by neměla být žádná potvrzení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:732
+#, c-format
+msgid "TRANSFER %d"
+msgstr "PŘENOS %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:755
+msgid "Setting up the connection"
+msgstr "Nastavuji spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:814
+msgid "Attempting a passive DCC %1 connection"
+msgstr "Pokouším se o pasivní DCC %1 spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:818
+msgid "Attempting an active DCC %1 connection"
+msgstr "Pokouším se o aktivní DCC %1 spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:844
+msgid "Sent DCC RESUME request to %1, waiting for ACCEPT"
+msgstr "Zaslán DCC RESUME požadavek na %1, vyčkávám na ACCEPT"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:914
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:925
+msgid "Aborted"
+msgstr "Přerušeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:924
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1603
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1678
+msgid "Transfer failed: "
+msgstr "Přenos selhal: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:936
+msgid "Configure Bandwidth..."
+msgstr "Konfigurovat přenosové pásmo..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:938
+msgid "Resend DCC"
+msgstr "Znovu poslat DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:939
+msgid "Resend TDCC"
+msgstr "Znovu poslat TDCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:940
+msgid "Resend RevDCC"
+msgstr "Znovu poslat RevDCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:944
+msgid "Abort"
+msgstr "Přerušit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1135
+msgid "From: "
+msgstr "Od:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1136
+msgid "To: "
+msgstr "k:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1246
+msgid "%1 of %2 (%3%)"
+msgstr "%1 z %2 (%3%)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1250
+msgid "%1"
+msgstr "%1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1263
+msgid "Spd:"
+msgstr "Rych:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1278
+msgid "Avg:"
+msgstr "Prům:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1349
+msgid "Transfer Log"
+msgstr "Log Přenosů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1480
+msgid "Contacting host %1 on port %2"
+msgstr "Kontaktuji hosta %1 na portu %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1487
+msgid "Listening on interface %1 port %2"
+msgstr "Naslouchám na rozhraní %1 port %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1510
+msgid "The local IP address is private, determining from IRC server: %1"
+msgstr "Lokální IP adresa je privátní, určuji z IRC serveru: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1561
+msgid "Sent DCC %1 request to %2, waiting for remote client to connect..."
+msgstr ""
+"Zaslán DCC %1 požadavek na %2, očekávám připojení vzdáleného klienta..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1563
+msgid "DCC %1 request not sent, awaiting manual connection"
+msgstr "DCC %1 požadavek nebyl odeslán, očekávám manuální připojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1582
+msgid "[SSL ERROR]: %1"
+msgstr "[SSL CHYBA]: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1625
+msgid "DCC %s transfer with %Q@%Q:%Q completed: \r![!dbl]play $0\r%s\r"
+msgstr "DCC %s přenos s %Q@%Q:%Q kompletní: \r![!dbl]play $0\r%s\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1640
+msgid "Transfer completed"
+msgstr "Přenos kompletní"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1687
+msgid "Connected to %1:%2"
+msgstr "Připojen k %1:%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1688
+msgid "Local end is %1:%2"
+msgstr "Lokální konec je %1:%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1732
+msgid "Transferring data"
+msgstr "Přenáším data"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1758
+msgid "RESUME accepted, transfer will begin at position %1"
+msgstr "RESUME přijato, přenos začne na pozici %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1789
+msgid "Internal error in RESUME request"
+msgstr "Vnitřní chyba v RESUME požadavku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1794
+msgid "Invalid RESUME request: Position %1 is larger than file size"
+msgstr "Nesprávný RESUME požadavek: Pozice %1 je větší než velikost souboru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1798
+msgid "Accepting RESUME request, transfer will begin at position %1"
+msgstr "Přijímám RESUME požadavek, přenos začne na pozici %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1830
+msgid "Configure bandwidth for DCC transfer %1"
+msgstr "Konfigurovat přenosové pásmo pro DCC přenos %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1833
+msgid "Limit upload bandwidth to"
+msgstr "Omezit odchozí šířku pásma na"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1833
+msgid "Limit download bandwidth to"
+msgstr "Omezit příchozí šířku pásma na"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1846
+msgid "bytes/sec"
+msgstr "bajtů/sek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1850
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:142
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:78
+msgid "Attempting a passive DCC CANVAS connection"
+msgstr "Pokouším se o pasivní DCC CANVAS připojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:98
+msgid ""
+"Sent DCC CANVAS request to %Q, waiting for the remote client to connect..."
+msgstr ""
+"Zaslán DCC CANVAS požadavek na %Q, vyčkávám na připojení vzdáleného "
+"klienta..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:100
+msgid "DCC CANVAS request not sent: awaiting manual connections"
+msgstr "DCC CANVAS požadavek nebyl odeslán: očekává se manuální připojeni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:104
+msgid "Attempting an active DCC CANVAS connection"
+msgstr "Pokouším se o aktivní DCC CANVAS připojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1563
+msgid "&Line"
+msgstr "&Line"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1564
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1572
+msgid "&Rectangle"
+msgstr "&Rectangle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1565
+msgid "&Ellipse"
+msgstr "&Ellipse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1566
+msgid "&Pie"
+msgstr "&Pie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1567
+msgid "&Chord"
+msgstr "&Chord"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1569
+msgid "&Rich text (html)"
+msgstr "&Rich text (html)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1571
+msgid "&Triangle"
+msgstr "&Triangle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1573
+msgid "&Pentagon"
+msgstr "&Pentagon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1574
+msgid "&Hexagon"
+msgstr "&Hexagon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1576
+msgid "&Shape"
+msgstr "&Shape"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1577
+msgid "&Item"
+msgstr "&Item"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1578
+msgid "&Polygons"
+msgstr "&Polygons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1580
+msgid "&Insert"
+msgstr "&Insert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:77
+msgid "Unable to process the above request: %Q, %Q"
+msgstr "Nemohu zpracovat předchozí požadavek: %Q, %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:79
+msgid "Ignoring and notifying failure"
+msgstr "Ignoruji a ohlašuji selhání"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:79
+msgid "Ignoring"
+msgstr "Ignoruji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:95
+#, c-format
+msgid "Concurrent transfer limit reached (%u of %u transfers running)"
+msgstr ""
+"Limit současně probíhajících přenosů dosažen (%u z %u probíhajících přenosů)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:111
+#, c-format
+msgid "Slot limit reached (%u slots of %u)"
+msgstr "Limit slotů dosažen (%u slotů z %u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:120
+msgid "Too many pending connections"
+msgstr "Příliš mnoho čekajících spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:156
+#, c-format
+msgid "Invalid port number %s"
+msgstr "Nesprávné číslo portu %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:172
+#, c-format
+msgid "Invalid IP address in old format %s"
+msgstr "Nesprávná IP adresa ve starém formátu %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:191
+#, c-format
+msgid "Invalid IP address %s"
+msgstr "Nesprávná IP adresa %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:258
+#, c-format
+msgid ""
+"The above request is broken: The second parameter is '%s' and should be "
+"'chat', trying to continue"
+msgstr ""
+"Předchozí požadavek je přerušený: Druhý parametr je '%s' a měl by být "
+"'chat', pokouším se pokračovat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:270
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC CHAT is not available"
+msgstr ""
+"Tento spustitelný soubor byl zkompilován bez podpory SSL, rozšíření o SSL "
+"DCC CHAT není dostupné"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:321
+msgid ""
+"The above request is broken: it looks like a zero port tag acknowledge but I "
+"have either never seen this tag or it was sent more than 120 seconds ago"
+msgstr ""
+"Výše uvedený požadavek je poškozený; vypadá to na dohodnutý nulový port, ale "
+"nikde není tento požadavek vidět v průběhu předchozích 120 sekund"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:322
+msgid "It seems that I haven't requested this dcc chat"
+msgstr "Vypadá to, že nemám požadavek na tento dcc chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:442
+msgid ""
+"The above request is broken: The fourth parameter should be the file size "
+"but does not appear to be an unsigned number, trying to continue"
+msgstr ""
+"Předchozí požadavek je přerušený: Čtvrtý parametr by měl být velikost "
+"souboru, ale nevypadá jako neoznačené číslo, pokouším se pokračovat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:600
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:738
+msgid ""
+"The above request is broken: The filename contains path components, "
+"stripping the leading path and trying to continue"
+msgstr ""
+"Předchozí požadavek je přerušený: Název souboru obsahuje cestu, odstraňuji "
+"počáteční cestu a snažím se pokračovat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:466
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC SEND is not available"
+msgstr ""
+"Tento spustitelný soubor byl zkompilován bez podpory SSL, rozšíření o SSL "
+"DCC SEND není dostupné"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:528
+#, c-format
+msgid ""
+"Can't proceed with DCC RECV: Transfer not initiated for file %s on port %s"
+msgstr ""
+"Nemohu pokračovat v DCC RECV: Přenos nebyl zahájen pro soubor %s na portu %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:553
+#, c-format
+msgid "Invalid resume position argument '%s'"
+msgstr "Nesprávný parametr pro pokračování '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:565
+#, c-format
+msgid ""
+"Can't proceed with DCC SEND: Transfer not initiated for file %s on port %s, "
+"or invalid resume size"
+msgstr ""
+"Nemohu pokračovat v DCC SEND: Přenos nebyl zahájen pro soubor %s na portu %"
+"s, nebo je nesprávná velikost pro pokračování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:590
+msgid ""
+"The above request has resume file size missing, assuming a resume file size "
+"of 0"
+msgstr ""
+"Následujícímu požadavku navázání chybí velikost souboru, předpokládá se "
+"velikost souboru 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:614
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC RECV is not available"
+msgstr ""
+"Tento spustitelný soubor byl zkompilován bez podpory SSL, rozšíření o SSL "
+"DCC RECV není dostupné"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:629
+#, c-format
+msgid "Invalid RECV request: Position %u is is larger than file size"
+msgstr "Nesprávný RECV požadavek: Pozice %u je větší než velikost souboru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:683
+msgid "%Q [%Q@%Q] is ready to receive the file \"%s\""
+msgstr "%Q [%Q@%Q] je připraven k přijmutí souboru \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:689
+#, c-format
+msgid "The remote client is listening on interface %s and port %s"
+msgstr "Vzdálený klient naslouchá na rozhraní %s a portu %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:696
+msgid ""
+"Use %c\r![!dbl]dcc.send %s -i=%s -p=%s %Q\r/dcc.send %s -i=%s -p=%s %Q\r%c "
+"to send the file (or double-click on the socket)"
+msgstr ""
+"Použijte %c\r![!dbl]dcc.send %s -i=%s -p=%s %Q\r/dcc.send %s -i=%s -p=%s %Q\r"
+"%c k poslání souboru (nebo dvojklikem na soket)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:728
+msgid ""
+"The above request is broken: The fourth parameter should be the file size "
+"but does not appear to be an unsigned number; trying to continue"
+msgstr ""
+"Předchozí požadavek je přerušený: Čtvrtý parametr by měl být velikost "
+"souboru, ale nevypadá jako neoznačené číslo, pokouším se pokračovat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:752
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC RSEND is not available"
+msgstr ""
+"Tento spustitelný soubor byl zkompilován bez podpory SSL, rozšíření o SSL "
+"DCC RSEND není dostupné"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:763
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:932
+msgid "(unknown)"
+msgstr "(neznámý)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:918
+msgid "No suitable interface to listen on, trying to continue anyway..."
+msgstr "Žádné vhodné rozhraní pro naslouchání, snažím se pokračovat..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:835
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC GET is not available"
+msgstr ""
+"Tento spustitelný soubor byl zkompilován bez podpory SSL, rozšíření o SSL "
+"DCC GET není dostupné"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:846
+msgid "No file offer named '%s' (with size %s) available for %Q [%Q@%Q]"
+msgstr ""
+"Žádná nabídka souboru s názvem '%s' (s velikostí %s) není dostupná pro %Q [%"
+"Q@%Q]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:847
+msgid "\"any\""
+msgstr "\"jakýkoliv\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:891
+msgid ""
+"Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering "
+"DCC %s since we can't accept incoming connections (user option)"
+msgstr ""
+"Příjem požadavku souboru od %Q [%Q@%Q] pro '%s' (skutečný soubor: %Q), "
+"nabízí DCC %s, dokud nebude možné přijmout příchozí spojení (uživatelská "
+"možnost)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:948
+msgid ""
+"Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering "
+"DCC %Q"
+msgstr ""
+"Přijímám požadavky na soubor od %Q [%Q@%Q] pro '%Q' (skutečný soubor: %Q), "
+"nabízím DCC %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:982
+msgid ""
+"The above request cannot be accepted: DCC VOICE support not enabled at "
+"compilation time "
+msgstr ""
+"Předchozí požadavek nemůže být přijat: DCC VOICE nebylo povoleno při "
+"kompilaci "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:992
+#, c-format
+msgid "The above request cannot be accepted: Unsupported codec '%s'"
+msgstr "Předchozí požadavek nemůže být přijat: Kodek není podporován '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:1005
+#, c-format
+msgid ""
+"The above request appears to be broken: Invalid sample-rate '%s', defaulting "
+"to 8000"
+msgstr ""
+"Předchozí požadavek výpadá jako přerušený: Nesprávná vzorkovací frekvence '%"
+"s', nastavuji výchozí na 8000"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:1151
+#, c-format
+msgid "Unknown DCC type '%s'"
+msgstr "Neznámý DCC typ '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:64
+msgid "&Accept"
+msgstr "&Přijmout"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:69
+msgid "&Reject"
+msgstr "&Odmítnout"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:129
+msgid "&Rename"
+msgstr "&Přejmenovat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:133
+msgid "Over&write"
+msgstr "Př&epsat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:137
+msgid "Re&sume"
+msgstr "&Navázat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:149
+msgid "File Already Exists - KVIrc"
+msgstr "Soubor již existuje - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/utils.cpp:122
+msgid "Can't retrieve a suitable local IPV4 address"
+msgstr "Nelze získat použitelnou lokální IPV4 adresu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/utils.cpp:140
+#, c-format
+msgid ""
+"Can't listen on default interface '%s': fix it in the options dialog, "
+"disabling the option (so the next dcc will work)"
+msgstr ""
+"Nelze naslouchat na výchozím rozhraní '%s': opravte to v dialogu možností, "
+"zakázáním možnosti (pak možná bude dcc fungovat)"
+
+#~ msgid "%1 bytes"
+#~ msgstr "%1 bajtů"
+
+#~ msgid "Choose Save Location - KVIrc"
+#~ msgstr "Vyberte místo pro uložení - KVIrc"
+
+#~ msgid "Contacting host %s on port %s"
+#~ msgstr "Kontaktuje se hostitel %s na portu %s"
+
+#~ msgid "Missing target nickname"
+#~ msgstr "Chybí přezdívka cíle"
+
+#~ msgid "Missing filename"
+#~ msgstr "Chybí jméno souboru"
+
+#~ msgid "The file size is not an positive number"
+#~ msgstr "Velikost souboru není kladné číslo"
+
+#~ msgid "Invalid file size specified, no message sent"
+#~ msgstr "Nesprávně zadaná velikost souboru, žádná zpráva nebyla odeslána"
diff --git a/po/modules/dcc/dcc_de.po b/po/modules/dcc/dcc_de.po
new file mode 100644
index 00000000..80d02ee3
--- /dev/null
+++ b/po/modules/dcc/dcc_de.po
@@ -0,0 +1,1045 @@
+# translation of dcc_de.po to german
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Christoph Thielecke <[email protected]>, 2002,2003, 2004, 2005.
+# Christoph Thielecke <[email protected]>, 2003.
+# Markus Rennings <[email protected]>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: dcc_de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-11-13 22:32+0100\n"
+"Last-Translator: Markus Rennings <[email protected]>\n"
+"Language-Team: german <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/descriptor.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:642
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:666
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:803
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:805
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:484
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:514
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:136
+msgid "unknown"
+msgstr "unbekannt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:783
+msgid "Choose Files to Send - KVIrc"
+msgstr "Dateien zum Senden auswählen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:189
+msgid "Can't send DCC %Q request to %Q: IRC connection has been terminated"
+msgstr ""
+"DCC %Q-Anfrage kann nicht an %Q gestellt werden: Die IRC-Verbindung wurde "
+"beendet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:821
+msgid "Can't open file %Q for reading"
+msgstr "Kann Datei %Q nicht zum Lesen öffnen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:269
+msgid ""
+"<b>%1 [%2@%3]</b> requests a <b>Direct Client Connection</b> in <b>%4</b> "
+"mode.<br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> fragt eine <br><b>DCC-Verbindung</b> im <b>%4</b>-Modus an."
+"<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:274
+msgid "The connection will be secured using SSL.<br>"
+msgstr "Die Verbindung wird mit SSL gesichert.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:280
+msgid "You will be the passive side of the connection.<br>"
+msgstr "Du wirst das passive Ende der Verbindung sein.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:284
+msgid "The connection target will be host <b>%1</b> on port <b>%2</b><br>"
+msgstr "Das Verbindungsziel wird Host <b>%1</b> an Port <b>%2</b> sein<br><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:543
+msgid "DCC %1 Request - KVIrc"
+msgstr "DCC %1-Anfrage - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:340
+msgid ""
+"<b>%1 [%2@%3]</b> requests a<br><b>Direct Client Connection</b> in <b>VOICE</"
+"b> mode.<br>The connection target will be host <b>%4</b> on port <b>%5</"
+"b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> fordert eine <br><b>DCC-Verbindung</b> im <b>VOICE</b>-"
+"Modus an.<br>Das Verbindungsziel wird Host <b>%4</b> an Port <b>%5</b> sein."
+"<br><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:346
+msgid "DCC VOICE request"
+msgstr "DCC VOICE-Anfrage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:411
+msgid ""
+"<b>%1 [%2@%3]</b> requests a<br><b>Direct Client Connection</b> in "
+"<b>CANVAS</b> mode.<br>The connection target will be host <b>%4</b> on port "
+"<b>%5</b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> fordert eine <br><b>DCC-Verbindung</b> im <b>CANVAS</b>-"
+"Modus an.<br>Das Verbindungsziel wird Host <b>%4</b> an Port <b>%5</b> sein."
+"<br><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:417
+msgid "DCC CANVAS request"
+msgstr "DCC CANVAS-Anfrage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:502
+msgid ""
+"<b>%1 [%2@%3]</b> wants to send you the file '<b>%4</b>', <b>%5</b> large."
+"<br>The connection target will be host <b>%6</b> on port <b>%7</b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> möchte die Datei<br>'<b>%4</b>' senden, die <b>%5</b> "
+"gross ist. <br>Das Verbindungsziel wird Host <b>%6</b> an Port <b>%7</b> "
+"sein.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:515
+msgid ""
+"<b>%1 [%2@%3]</b> wants to send you the file '<b>%4</b>', <b>%5</b> large."
+"<br>You will be the passive side of the connection.<br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> möchte die Datei '<b>%4</b>' senden, die <b>%5</b> groß "
+"ist. <br>Sie werden die passive Seite der Verbindung sein.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:528
+msgid ""
+"<center><b>Note:</b></center>The file appears to be an avatar that you have "
+"requested. You should not change its filename. Save it in a location where "
+"KVIrc can find it, such as the 'avatars', 'incoming', or 'pics' directories, "
+"your home directory, or the save directory for the incoming file type. The "
+"default save path will probably work. You can instruct KVIrc to accept "
+"incoming avatars automatically by setting the option "
+"<tt>boolAutoAcceptIncomingAvatars</tt> to true.<br>"
+msgstr ""
+"<center><b>Hinweis:</b><center>Die Datei scheint ein Avatar zu sein, den Sie "
+"angefordert haben. Es sollte der Dateiname nicht ge&auml;ndert werden. Die "
+"Datei sollte an einem Ort gespeichert werden, wo KVIrc es finden kann,z.B. "
+"'avatars', 'incoming' oder 'pics'-Verzeichnis, im Heimatverzeichnis oder das "
+"Speichern-Verzeichnis für die ankommenden Dateitypen.Der Standard-"
+"Speicherpfad wird wahrscheinlich funktionieren. Es kann auch KVIrc "
+"angewiesen werden, durch Setzen der Option "
+"<tt>boolAutoAcceptIncomingAvatars</tt> auf true die ankommenden Avatare "
+"automatisch zu akzeptieren.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:557
+msgid "Auto-accepting DCC %Q request from %Q!%Q@%Q for file %Q"
+msgstr "Automatisches Akzeptieren der DCC-%Q-Anfrage von %Q!%Q@%Q für Datei %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:618
+msgid "Choose Files to Save - KVIrc"
+msgstr "Dateien zum Speichern auswählen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:631
+msgid "Auto-saving DCC %Q file %Q as \r![!dbl]play $0\r%Q\r"
+msgstr "Automatisches Speichern der DCC-%Q-Datei %Q als \r![!dbl]play $0\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:665
+msgid ""
+"The file '<b>%1</b>' already exists and is <b>%2</b> large.<br>Do you wish "
+"to<br><b>overwrite</b> the existing file,<br> <b>auto-rename</b> the new "
+"file, or<br><b>resume</b> an incomplete download?"
+msgstr ""
+"Die Datei '<b>%1</b>' existiert bereits und ist <b>%2</b> gross.<br>Soll "
+"<br>die Datei <b>überschrieben</b><br>, die ankommende Datei <b>automatisch "
+"umbenannt</b><br> oder als unfertiger Download angenommen und "
+"<b>fortgesetzt</b> werden?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:677
+msgid ""
+"The file '<b>%1</b>' already existsand is larger than the offered one.<br>Do "
+"you wish to<br><b>overwrite</b> the existing file, or<br> <b>auto-rename</b> "
+"the new file ?"
+msgstr ""
+"Die Datei '<b>%1</b>' existiert bereits und ist größer als die angebotene."
+"<br>Soll die Datei<br><b>überschrieben</b>, die ankommende Datei "
+"<b>automatisch umbenannt</b> werden?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:747
+msgid "File %s exists, auto-renaming to %Q"
+msgstr "Datei %s existiert: wird automatisch nach %Q umbenannt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:158
+#, c-format
+msgid "Attempting a passive DCC %s connection"
+msgstr "Passive DCC-%s-Verbindung wird versucht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:168
+#, c-format
+msgid "Attempting an active DCC %s connection"
+msgstr "Aktive DCC %s-Verbindung wird versucht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:761
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:107
+msgid "Contacting host %Q on port %Q"
+msgstr "Host %Q wird an Port %Q kontaktiert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:83
+msgid "Listening on interface %Q port %Q"
+msgstr "Es wird an Schnittstelle %Q Port %Q gewartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:207
+#, c-format
+msgid "The local IP address is private, determining from IRC server: %s"
+msgstr "Die lokale IP-Adresse ist privat, vom IRC-Server ermittelt: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1512
+msgid ""
+"The local IP address is private, but unable to determine it from the IRC "
+"server"
+msgstr ""
+"Die lokale IP-Adresse ist privat, kann aber nicht vom IRC-Server bekommen "
+"werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1515
+msgid ""
+"The local IP address is private, but have no IRC server to determine it from"
+msgstr ""
+"Die lokale IP-Adresse ist privat, aber kein IRC-Server, von dem die IP-"
+"Adresse geholt werden kann"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:234
+msgid "Sent DCC %Q request to %Q, waiting for the remote client to connect..."
+msgstr ""
+"DCC-%Q-Anfrage an %Q gesendet, warte, das sich der entfernten Client "
+"verbindet..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:237
+msgid "DCC %Q request not sent, awaiting manual connection"
+msgstr "DCC %Q-Anfrage nicht gesendet: Manuelle Verbindung wird erwartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1574
+msgid "Low-level transport connection established"
+msgstr "Verbindung auf niedriger Ebene hergestellt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1575
+msgid "Starting Secure Socket Layer handshake"
+msgstr "SSL-Handshake wird gestartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:254
+#, c-format
+msgid "[SSL ERROR]: %s"
+msgstr "[SSL-FEHLER]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:388
+msgid "Cannot send data: No active connection"
+msgstr "Daten können nicht gesendet werden: keine aktive Verbindung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:344
+msgid ""
+"The crypto engine was not able to encrypt the current message (%Q): %Q, no "
+"data was sent to the remote end"
+msgstr ""
+"Die Verschlüsselungsroutine war nicht in der Lage, die aktuelle Nachricht (%"
+"Q): %Q zu verschlüsseln: keine Daten an das enfernte Ende gesendet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:403
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:827
+msgid "ERROR: %Q"
+msgstr "FEHLER: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:447
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+"Die folgende Nachricht sieht wie eine verschlüsselte aus, aber die "
+"Verschlüsselungsroutine konnte sie nicht dekodieren: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:493
+msgid "DCC %Q failed: %Q"
+msgstr "DCC %Q fehlgeschlagen: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:521
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:919
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:282
+msgid "Connected to %Q:%Q"
+msgstr "Verbunden zu %Q:%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:523
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:921
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:284
+msgid "Local end is %Q:%Q"
+msgstr "Lokales Ende ist %Q:%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:164
+msgid ""
+"WARNING: failed to check the soundcard duplex capabilities: if this is a "
+"half-duplex soundcard , use the DCC VOICE option to force half-duplex "
+"algorithm"
+msgstr ""
+"WARNUNG: Prüfung der Soundkartenfähigkeiten fehlgeschlagen: Wenn dies eine "
+"halbduplex-Soundkarte ist, die DCC-VOICE-Option zum Erzwingen des "
+"Halbduplexalorithmus benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:172
+msgid ""
+"Half duplex soundcard detected, you will not be able to talk and listen at "
+"the same time"
+msgstr ""
+"Halb-duplex Soundkarte erkannt, es wird nicht möglich sein, zur gleichen "
+"Zeit zu sprechen und zu hören"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:213
+#, c-format
+msgid ""
+"WARNING: failed to set the requested sample rate (%d): the device used "
+"closest match (%d)"
+msgstr ""
+"WARNUNG: Setzen der angeforderten Sampelrate (%d) fehlgeschlagen: das Gerät "
+"benutzt die nächstliegende (%d)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:271
+msgid "Ops...failed to test the soundcard capabilities...expect problems..."
+msgstr ""
+"Ops...Test der Soundkartenfähigkeiten fehlgeschlagen... Probleme werden "
+"erwartet..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:662
+msgid "Input buffer"
+msgstr "Eingabepuffer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:664
+msgid "Output buffer"
+msgstr "Ausgabepuffer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:746
+msgid "Attempting a passive DCC VOICE connection"
+msgstr "Passive DCC VOICE-Verbindung wird versucht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:751
+msgid "Attempting an active DCC VOICE connection"
+msgstr "Aktive DCC VOICE-Verbindung wird versucht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:779
+msgid ""
+"Sent DCC VOICE (%s) request to %Q, waiting for the remote client to "
+"connect..."
+msgstr ""
+"DCC VOICE-(%s)-Anfrage an %Q gesendet, warte, dass sich der entfernteClient "
+"verbindet..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:781
+msgid "DCC VOICE request not sent: awaiting manual connections"
+msgstr "DCC-VOICE-Anfrage nicht gesendet: erwarte manuelle Verbindungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:885
+#, c-format
+msgid "Input buffer: %d bytes"
+msgstr "Eingabepuffer: %d Byte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:887
+#, c-format
+msgid "Output buffer: %d bytes"
+msgstr "Ausgabepuffer: %d Byte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:910
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:277
+msgid "DCC Failed: %Q"
+msgstr "DCC fehlgeschlagen: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:939
+#, c-format
+msgid "Actual codec used is '%s'"
+msgstr "Aktueller benutzter Codec ist '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:1023
+#, c-format
+msgid "Volume: %i"
+msgstr "Lautstärke: %i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:91
+msgid ""
+"This window has no associated IRC context (an IRC context is required unless "
+"-c or -n are passed)"
+msgstr ""
+"Dieses Fenster hat keinen zugeordneten IRC-Kontext (Es wird einer benötigt, "
+"wenn -c oder -n übergeben wird)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:104
+msgid ""
+"You're not connected to a server (an active connection is required unless -c "
+"or -n are passed)"
+msgstr ""
+"Es besteht keine Serververbindung verbunden. (Eine Verbindung ist "
+"erforderlich, wenn kein -c oder -n angegeben wurde)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:129
+msgid "Unable to get address of interface %Q"
+msgstr "Adresse von Schnittstelle %Q kann nicht ermittelt werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:139
+msgid "No suitable interfaces to listen on, use -i"
+msgstr "Keine benutzbare Schnittstelle zum Warten: Bitte -i benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:172
+msgid "This executable was built without SSL support, -s switch ignored"
+msgstr ""
+"Diese Version von KVirc hat keine SSL-Unterstützung: -s Schalter ignoriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:657
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1159
+msgid "-c requires -i and -p"
+msgstr "-c benötigt -i und -p"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:634
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:730
+msgid "<unknown size>"
+msgstr "<unbekannte Grösse>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:890
+msgid "This executable has been built without SSL support, -s switch ignored"
+msgstr ""
+"Diese Version von KVirc hat keine SSL-Unterstützung: -s Schalter ignoriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:960
+msgid "This executable has no SSL support, -s switch ignored"
+msgstr ""
+"Diese Version von KVirc hat keine SSL-Unterstützung: -s Schalter ignoriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1114
+msgid "DCC VOICE support not enabled at compilation time"
+msgstr "DCC-VOICE-Unterstützung wurde beim Kompilieren nicht aktiviert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1132
+msgid "Invalid sample rate specified, defaulting to 8000"
+msgstr "Ungültige Samplerate angegeben: Benutze die Voreinstellung 8000"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1148
+msgid "Invalid codec specified, defaulting to 'adpcm'"
+msgstr "Ungültiger Codec angegeben: Wird auf Voreinstellung 'adpcm' gesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1577
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2542
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2562
+msgid "The current window has no associated DCC session"
+msgstr "Das aktuelle Fenster hat keine zugeordnete DCC-Sitzung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1582
+msgid "The specified parameter is not a valid DCC identifier"
+msgstr "Der angegebene Parameter ist kein gültiger DCC-Bezeichner"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1662
+msgid "This DCC session is not a DCC transfer session"
+msgstr "Diese DCC-Sitzung ist keine DCC-Übertragungs (transfer)-Sitzung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2553
+msgid "The specified window identifier is not valid"
+msgstr "Der angegebene Fensterbezeichner ist ungültig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:260
+msgid "WARNING: The peer is sending garbage data past the end of the file"
+msgstr "WARNUNG: Die Leitung sendet Mülldaten nach dem Ende der Datei"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:261
+msgid ""
+"WARNING: Ignoring data past the declared end of file and closing the "
+"connection"
+msgstr ""
+"Daten nach der deklarierten Länge werden ignoriert und das Schliessen der "
+"Verbindung wird erzwungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:362
+msgid ""
+"Data transfer terminated, waiting 30 seconds for the peer to close the "
+"connection..."
+msgstr ""
+"Datenübertragung beendet: es wird 30 Sekunden auf das Netzwerk zum "
+"Schliessen der Verbindung gewartet..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:369
+msgid "Data transfer was terminated 30 seconds ago, closing the connection"
+msgstr ""
+"Datenübertragung wurde vor 30 Sekunden beendet: Das Schliessen der "
+"Verbindung wird erzwungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:600
+msgid "WARNING: Received data in a DCC TSEND, there should be no acknowledges"
+msgstr ""
+"WARNUNG: Empfangende Daten in einem DCC-TSEND, dort sollten keine "
+"Bestätigungen enthalten sein"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:732
+#, c-format
+msgid "TRANSFER %d"
+msgstr "ÜBERTRAGUNG %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:755
+msgid "Setting up the connection"
+msgstr "Verbindungsaufbau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:814
+msgid "Attempting a passive DCC %1 connection"
+msgstr "Passive DCC %1-Verbindung wird versucht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:818
+msgid "Attempting an active DCC %1 connection"
+msgstr "Aktive DCC %1-Verbindung wird versucht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:844
+msgid "Sent DCC RESUME request to %1, waiting for ACCEPT"
+msgstr "DCC-RESUME-Anfrage wird an %1 gesendet... es wird auf ACCEPT gewartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:914
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:925
+msgid "Aborted"
+msgstr "Abgebrochen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:924
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1603
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1678
+msgid "Transfer failed: "
+msgstr "Übertragung fehlgeschlagen: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:936
+msgid "Configure Bandwidth..."
+msgstr "Bandbreite konfigurieren..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:938
+msgid "Resend DCC"
+msgstr "Sende DCC erneut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:939
+msgid "Resend TDCC"
+msgstr "Sende TDCC erneut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:940
+msgid "Resend RevDCC"
+msgstr "Sende RevDCC erneut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:944
+msgid "Abort"
+msgstr "Abbrechen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1135
+msgid "From: "
+msgstr "Von: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1136
+msgid "To: "
+msgstr "An: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1246
+msgid "%1 of %2 (%3%)"
+msgstr "%1 von %2 (%3%)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1250
+msgid "%1"
+msgstr "%1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1263
+msgid "Spd:"
+msgstr "Geschw:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1278
+msgid "Avg:"
+msgstr "Mittel:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1349
+msgid "Transfer Log"
+msgstr "Übertragungslog"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1480
+msgid "Contacting host %1 on port %2"
+msgstr "Host %1 wird an Port %2 kontaktiert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1487
+msgid "Listening on interface %1 port %2"
+msgstr "Es wird an Schnittstelle %1 Port %2 gewartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1510
+msgid "The local IP address is private, determining from IRC server: %1"
+msgstr "Die lokale IP-Adresse ist privat, Ermittlung vom IRC-Server: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1561
+msgid "Sent DCC %1 request to %2, waiting for remote client to connect..."
+msgstr ""
+"DCC %1-Anfrage wird an %2 gesendet... es wird auf den entfernten Client zum "
+"Verbinden gewartet..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1563
+msgid "DCC %1 request not sent, awaiting manual connection"
+msgstr "DCC %1-Anfrage nicht gesendet: manuelle Verbindung wird erwartet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1582
+msgid "[SSL ERROR]: %1"
+msgstr "[SSL-FEHLER]: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1625
+msgid "DCC %s transfer with %Q@%Q:%Q completed: \r![!dbl]play $0\r%s\r"
+msgstr ""
+"DCC %s-Übertragung mit %Q@%Q:%Q abgeschlossen: \r![!dbl]spiele $0\r%s\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1640
+msgid "Transfer completed"
+msgstr "Übertragung abgeschlossen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1687
+msgid "Connected to %1:%2"
+msgstr "Verbunden zu %1:%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1688
+msgid "Local end is %1:%2"
+msgstr "Lokales Ende ist %1:%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1732
+msgid "Transferring data"
+msgstr "Daten werden übertragen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1758
+msgid "RESUME accepted, transfer will begin at position %1"
+msgstr "RESUME akzeptiert: Die Übertragung wird an Position %1 beginnen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1789
+msgid "Internal error in RESUME request"
+msgstr "Interner Fehler in der RESUME-Anfrage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1794
+msgid "Invalid RESUME request: Position %1 is larger than file size"
+msgstr "Ungültige RESUME-Anfrage: Position %1 ist grösser als Dateigrösse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1798
+msgid "Accepting RESUME request, transfer will begin at position %1"
+msgstr ""
+"RESUME-Anfrage wird akzeptiert: Übertragung wird an Position %1 beginnen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1830
+msgid "Configure bandwidth for DCC transfer %1"
+msgstr "Bandbreite für DCC-Übertragung %1 konfigurieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1833
+msgid "Limit upload bandwidth to"
+msgstr "Bandbreite zum Hochladen beschränken auf"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1833
+msgid "Limit download bandwidth to"
+msgstr "Bandbreite zum Herunterladen beschränken auf"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1846
+msgid "bytes/sec"
+msgstr "Byte/s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1850
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:142
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:78
+msgid "Attempting a passive DCC CANVAS connection"
+msgstr "Passive DCC CANVAS-Verbindung wird versucht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:98
+msgid ""
+"Sent DCC CANVAS request to %Q, waiting for the remote client to connect..."
+msgstr ""
+"DCC CANVAS-Anfrage an %Q gesendet, es wird auf den entfernten Client zum "
+"Verbinden gewartet..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:100
+msgid "DCC CANVAS request not sent: awaiting manual connections"
+msgstr "DCC CANVAS-Anfrage nicht gesendet: erwarte manuelle Verbindungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:104
+msgid "Attempting an active DCC CANVAS connection"
+msgstr "Aktive DCC CANVAS-Verbindung wird versucht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1563
+msgid "&Line"
+msgstr "&Linie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1564
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1572
+msgid "&Rectangle"
+msgstr "&Rechteck"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1565
+msgid "&Ellipse"
+msgstr "&Ellipse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1566
+msgid "&Pie"
+msgstr "&Tortengraphik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1567
+msgid "&Chord"
+msgstr "&Akkord"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1569
+msgid "&Rich text (html)"
+msgstr "&Rich Text (html)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1571
+msgid "&Triangle"
+msgstr "&Triangel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1573
+msgid "&Pentagon"
+msgstr "&Pentagon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1574
+msgid "&Hexagon"
+msgstr "&Sechseck"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1576
+msgid "&Shape"
+msgstr "&Form"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1577
+msgid "&Item"
+msgstr "&Element"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1578
+msgid "&Polygons"
+msgstr "&Pologone"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1580
+msgid "&Insert"
+msgstr "Ein&fügen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:77
+msgid "Unable to process the above request: %Q, %Q"
+msgstr "Die obige Anfrage konnte nicht verarbeitet werden: %Q, %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:79
+msgid "Ignoring and notifying failure"
+msgstr "Ignorieren- und Benachrichtigungsfehler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:79
+msgid "Ignoring"
+msgstr "Wird ignoriert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:95
+#, c-format
+msgid "Concurrent transfer limit reached (%u of %u transfers running)"
+msgstr ""
+"Gleichzeitige Übertragungen-Begrenzung erreicht (%u von %u Übertragungen "
+"laufen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:111
+#, c-format
+msgid "Slot limit reached (%u slots of %u)"
+msgstr "Slotgrenze erreicht (%u Slots von %u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:120
+msgid "Too many pending connections"
+msgstr "Zuviele wartende Verbindungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:156
+#, c-format
+msgid "Invalid port number %s"
+msgstr "Ungültige Portnummer %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:172
+#, c-format
+msgid "Invalid IP address in old format %s"
+msgstr "Ungültige IP-Adresse im alten Format %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:191
+#, c-format
+msgid "Invalid IP address %s"
+msgstr "Ungültige IP-Adresse %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:258
+#, c-format
+msgid ""
+"The above request is broken: The second parameter is '%s' and should be "
+"'chat', trying to continue"
+msgstr ""
+"Die obige Anfrage ist fehlerhaft: Der zweite Parameter ist '%s' und sollte "
+"'chat' sein; es wird versucht fortzusetzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:270
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC CHAT is not available"
+msgstr ""
+"Diese Version von KVirc wurde ohne SSL-Unterstützung kompiliert: SSL-"
+"Erweiterung für DCC CHAT nicht verfügbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:321
+msgid ""
+"The above request is broken: it looks like a zero port tag acknowledge but I "
+"have either never seen this tag or it was sent more than 120 seconds ago"
+msgstr ""
+"Die obige Anfrage ist kaputt: Sie sieht aus wie ein Null Port Tag-"
+"Bestätigung (zero port tag acknowledge), aber ich habe diesen Tag entweder "
+"nie gesehen oder es ist vor mehr als 120 Sekunden gesendet worden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:322
+msgid "It seems that I haven't requested this dcc chat"
+msgstr "Es scheint, dass ich diesen DCC-Caht nicht angefordert habe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:442
+msgid ""
+"The above request is broken: The fourth parameter should be the file size "
+"but does not appear to be an unsigned number, trying to continue"
+msgstr ""
+"Die obige Anfrage ist fehlerhaft: Der vierte Parameter sollte die "
+"Dateigrösse sein, aber dieser sieht nicht wie eine vorzeichenlose Zahl aus; "
+"es wird versucht fortzusetzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:600
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:738
+msgid ""
+"The above request is broken: The filename contains path components, "
+"stripping the leading path and trying to continue"
+msgstr ""
+"Die obige Anfrage ist fehlerhaft: Der Dateiname enthält Pfadkomponenten; "
+"Führender Pfad wird entfernt und es wird versucht fortzusetzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:466
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC SEND is not available"
+msgstr ""
+"Diese Version von KVirc wurde ohne SSL-Unterstützung kompiliert: SSL-"
+"Erweiterung für DCC SEND nicht verfügbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:528
+#, c-format
+msgid ""
+"Can't proceed with DCC RECV: Transfer not initiated for file %s on port %s"
+msgstr ""
+"Es kann nicht mit DCC-RECV fortgesetzt werden: Übertragung für Datei %s an "
+"Port %s nicht begonnen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:553
+#, c-format
+msgid "Invalid resume position argument '%s'"
+msgstr "Ungültiges Fortsetzen-Positionsargument '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:565
+#, c-format
+msgid ""
+"Can't proceed with DCC SEND: Transfer not initiated for file %s on port %s, "
+"or invalid resume size"
+msgstr ""
+"Es kann nicht mit DCC-RECV fortgesetzt werden: Übertragung für Datei %s an "
+"Port %s nicht begonnen, oder ungültige Fortsetzengrösse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:590
+msgid ""
+"The above request has resume file size missing, assuming a resume file size "
+"of 0"
+msgstr ""
+"Der obigen Anfrage fehlt die Fortsetzengrösse: Es wird 0 als "
+"Fortsetzengrösse für Datei angenommen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:614
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC RECV is not available"
+msgstr ""
+"Diese Version von KVirc wurde ohne SSL-Unterstützung kompiliert: SSL-"
+"Erweiterung für DCC RECV nicht verfügbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:629
+#, c-format
+msgid "Invalid RECV request: Position %u is is larger than file size"
+msgstr "Ungültige RECV-Anfrage: Position %u ist grösser als Dateigrösse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:683
+msgid "%Q [%Q@%Q] is ready to receive the file \"%s\""
+msgstr "%Q [%Q@%Q] ist bereit zum Empfangen der Datei \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:689
+#, c-format
+msgid "The remote client is listening on interface %s and port %s"
+msgstr "Der entfernte Client wartet an Schnittstelle %s und Port %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:696
+msgid ""
+"Use %c\r![!dbl]dcc.send %s -i=%s -p=%s %Q\r/dcc.send %s -i=%s -p=%s %Q\r%c "
+"to send the file (or double-click on the socket)"
+msgstr ""
+"%c\r![!dbl]dcc.send %s -i=%s -p=%s %Q\r/dcc.send %s -i=%s -p=%s %Q\r%c zum "
+"Senden der Datei benutzen (oder doppelt auf den Socket klicken)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:728
+msgid ""
+"The above request is broken: The fourth parameter should be the file size "
+"but does not appear to be an unsigned number; trying to continue"
+msgstr ""
+"Die obige Anfrage ist fehlerhaft: Der vierte Parameter sollte die "
+"Dateigrösse sein, aber dieser sieht nicht wie eine vorzeichenlose Zahl aus; "
+"es wird versucht fortzusetzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:752
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC RSEND is not available"
+msgstr ""
+"Diese Version von KVirc wurde ohne SSL-Unterstützung kompiliert: SSL-"
+"Erweiterung für DCC RSEND nicht verfügbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:763
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:932
+msgid "(unknown)"
+msgstr "(unbekannt)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:918
+msgid "No suitable interface to listen on, trying to continue anyway..."
+msgstr ""
+"Keine benutzbare Schnittstelle zum Hören gefunden: Es wird versucht "
+"fortzusetzen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:835
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC GET is not available"
+msgstr ""
+"Diese Version von KVirc wurde ohne SSL-Unterstützung kompiliert: SSL-"
+"Erweiterung für DCC GET nicht verfügbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:846
+msgid "No file offer named '%s' (with size %s) available for %Q [%Q@%Q]"
+msgstr ""
+"Kein Dateiangebot mit Namen '%s' (mit Grösse %s) verfügbar von %Q [%Q@%Q]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:847
+msgid "\"any\""
+msgstr "\"jeder\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:891
+msgid ""
+"Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering "
+"DCC %s since we can't accept incoming connections (user option)"
+msgstr ""
+"Dateianfrage von %Q [%Q@%Q] für '%s' (reale Datei: %Q) wird akzeptiert: DCC %"
+"s wird angeboten, da keine ankommenden Verbindungen angenommen werden können "
+"(Benutzeroption)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:948
+msgid ""
+"Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering "
+"DCC %Q"
+msgstr ""
+"Dateianfrage von %Q [%Q@%Q] für '%s' (reale Datei: %Q) wird akzeptiert: DCC %"
+"Q wird angeboten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:982
+msgid ""
+"The above request cannot be accepted: DCC VOICE support not enabled at "
+"compilation time "
+msgstr ""
+"Die obige Anfrage kann nicht akzeptiert werden: DCC VOICE-Unterstützung bei "
+"Kompilierung nicht aktiviert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:992
+#, c-format
+msgid "The above request cannot be accepted: Unsupported codec '%s'"
+msgstr ""
+"Die obige Anfrage kann nicht akzeptiert werden: Nicht unterstützter Codec '%"
+"s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:1005
+#, c-format
+msgid ""
+"The above request appears to be broken: Invalid sample-rate '%s', defaulting "
+"to 8000"
+msgstr ""
+"Die obige Anfrage scheint fehlerhaft zu sein: Ungültige Samplerate '%s': "
+"wird auf Voreinstellung 8000 gesetzt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:1151
+#, c-format
+msgid "Unknown DCC type '%s'"
+msgstr "Unbekannter DCC-Typ '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:64
+msgid "&Accept"
+msgstr "&Akzeptieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:69
+msgid "&Reject"
+msgstr "Ab&lehnen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:129
+msgid "&Rename"
+msgstr "&Umbenennen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:133
+msgid "Over&write"
+msgstr "Über&schreiben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:137
+msgid "Re&sume"
+msgstr "&Wiederaufnehmen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:149
+msgid "File Already Exists - KVIrc"
+msgstr "Datei existiert bereits - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/utils.cpp:122
+msgid "Can't retrieve a suitable local IPV4 address"
+msgstr "Aktzeptable lokale IPv4-Adressse kann nicht bekommen werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/utils.cpp:140
+#, c-format
+msgid ""
+"Can't listen on default interface '%s': fix it in the options dialog, "
+"disabling the option (so the next dcc will work)"
+msgstr ""
+"Es kann nicht an Schnittstelle '%s' gewartet werden: bitte in den Optionen-"
+"Dialog ändern, Option wird deaktiviert (so dass nächster DCC funktionieren "
+"wird)"
+
+#~ msgid "%1 bytes"
+#~ msgstr "%1 Byte"
+
+#~ msgid "Choose Save Location - KVIrc"
+#~ msgstr "Speicherungsort schliessen - KVIrc"
+
+#~ msgid "Contacting host %s on port %s"
+#~ msgstr "Host %s wird an Port %s kontaktiert"
+
+#~ msgid "Missing target nickname"
+#~ msgstr "Zielspitzname fehlt"
+
+#~ msgid "Missing filename"
+#~ msgstr "Dateiname fehlt"
+
+#~ msgid "The file size is not an positive number"
+#~ msgstr "Die Dateigrösse ist keine vorzeichenlose Zahl"
+
+#~ msgid "Invalid file size specified, no message sent"
+#~ msgstr "Ungültige Dateigrösse angegeben: keine Nachricht gesendet"
diff --git a/po/modules/dcc/dcc_es.po b/po/modules/dcc/dcc_es.po
new file mode 100644
index 00000000..9b8ce707
--- /dev/null
+++ b/po/modules/dcc/dcc_es.po
@@ -0,0 +1,1064 @@
+# translation of dcc_es.po to spanish
+# Jos� Luis S�nchez <[email protected]>, 2004-2005
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: dcc_es\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-02-10 18:45+0100\n"
+"Last-Translator: Jos� Luis S�nchez <[email protected]>\n"
+"Language-Team: spanish\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"First-Translator: Jos� Luis S�nchez <[email protected]>\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/descriptor.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:642
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:666
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:803
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:805
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:484
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:514
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:136
+msgid "unknown"
+msgstr "desconocido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:783
+msgid "Choose Files to Send - KVIrc"
+msgstr "Escoja los Archivos a Enviar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:189
+#, fuzzy
+msgid "Can't send DCC %Q request to %Q: IRC connection has been terminated"
+msgstr ""
+"No pude enviar la petici�n DCC %s a %s: la conexi�n IRC ha sido finalizada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:821
+#, fuzzy
+msgid "Can't open file %Q for reading"
+msgstr "No pude abrir el archivo %s para lectura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:269
+msgid ""
+"<b>%1 [%2@%3]</b> requests a <b>Direct Client Connection</b> in <b>%4</b> "
+"mode.<br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> pide una <b>Conexi�n Directa a Cliente (DCC)</b> en modo "
+"<b>%4</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:274
+msgid "The connection will be secured using SSL.<br>"
+msgstr "La conexi�n ser� asegurada usando SSL.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:280
+msgid "You will be the passive side of the connection.<br>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:284
+msgid "The connection target will be host <b>%1</b> on port <b>%2</b><br>"
+msgstr ""
+"El destino de la conexi�n ser� la m�quina <b>%1</b> en el puerto <b>%2</"
+"b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:543
+msgid "DCC %1 Request - KVIrc"
+msgstr "Petici�n DCC %1 - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:340
+msgid ""
+"<b>%1 [%2@%3]</b> requests a<br><b>Direct Client Connection</b> in <b>VOICE</"
+"b> mode.<br>The connection target will be host <b>%4</b> on port <b>%5</"
+"b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> peticiones a<br><b>Conexi�n Directa a Cliente (DCC)</b> en "
+"modo <b>VOICE</b>.<br>El destino de la conexi�n ser� la m�quina <b>%4</b> en "
+"el puerto <b>%5</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:346
+msgid "DCC VOICE request"
+msgstr "Petici�n de DCC VOICE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:411
+msgid ""
+"<b>%1 [%2@%3]</b> requests a<br><b>Direct Client Connection</b> in "
+"<b>CANVAS</b> mode.<br>The connection target will be host <b>%4</b> on port "
+"<b>%5</b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> peticiones a<br><b>Conexi�n Directa a Cliente (DCC)</b> en "
+"modo <b>CANVAS</b>.<br>El destino de la conexi�n ser� la m�quina <b>%4</b> "
+"en el puerto <b>%5</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:417
+msgid "DCC CANVAS request"
+msgstr "Petici�n de DCC CANVAS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:502
+#, fuzzy
+msgid ""
+"<b>%1 [%2@%3]</b> wants to send you the file '<b>%4</b>', <b>%5</b> large."
+"<br>The connection target will be host <b>%6</b> on port <b>%7</b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> quiere enviarte el archivo '<b>%4</b>', de <b>%5</b> bytes "
+"de longitud.<br>El destino de la conexi�n ser� la m�quina <b>%6</b> en el "
+"puerto <b>%7</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:515
+#, fuzzy
+msgid ""
+"<b>%1 [%2@%3]</b> wants to send you the file '<b>%4</b>', <b>%5</b> large."
+"<br>You will be the passive side of the connection.<br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> quiere enviarte el archivo '<b>%4</b>', de <b>%5</b> bytes "
+"de longitud.<br>Ser�s el lado pasivo de la conexi�n.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:528
+msgid ""
+"<center><b>Note:</b></center>The file appears to be an avatar that you have "
+"requested. You should not change its filename. Save it in a location where "
+"KVIrc can find it, such as the 'avatars', 'incoming', or 'pics' directories, "
+"your home directory, or the save directory for the incoming file type. The "
+"default save path will probably work. You can instruct KVIrc to accept "
+"incoming avatars automatically by setting the option "
+"<tt>boolAutoAcceptIncomingAvatars</tt> to true.<br>"
+msgstr ""
+"<center><b>Nota:</b></center>El archivo parece ser un avatar que t� has "
+"solicitado. No deber�as cambiar el nombre de archivo. Gu�rdalo en un lugar "
+"donde pueda encontrarlo KVIrc, como los directorios 'avatares', 'entrantes' "
+"o 'pics' de tu directorio personal o en el directorio de grabaci�n para el "
+"tipo archivo entrante. Probablemente, la ruta de grabaci�n por defecto "
+"funcionar�. Puedes pedir a KVIrc para que acepte avatares autom�ticamente "
+"activando la opci�n <tt>Aceptar automaticamente avatares entrantes</tt>.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:557
+#, fuzzy
+msgid "Auto-accepting DCC %Q request from %Q!%Q@%Q for file %Q"
+msgstr ""
+"Aceptando autom�ticamente petici�n DCC %s de %s!%s@%s para el archivo %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:618
+#, fuzzy
+msgid "Choose Files to Save - KVIrc"
+msgstr "Escoja los Archivos a Enviar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:631
+#, fuzzy
+msgid "Auto-saving DCC %Q file %Q as \r![!dbl]play $0\r%Q\r"
+msgstr ""
+"Guardando autom�ticamente el DCC %s archivo %s como \r![!dbl]play $0\r%s\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:665
+#, fuzzy
+msgid ""
+"The file '<b>%1</b>' already exists and is <b>%2</b> large.<br>Do you wish "
+"to<br><b>overwrite</b> the existing file,<br> <b>auto-rename</b> the new "
+"file, or<br><b>resume</b> an incomplete download?"
+msgstr ""
+"El archivo '<b>%1</b>' ya existe y tiene <b>%2</b> bytes de longitud."
+"<br>�Desea<br><b>sobreescribir</b> el archivo existente,<br> <b>renombrar "
+"automaticamente</b> el nuevo archivo, o<br><b>continuar</b> una "
+"transferencia incompleta?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:677
+msgid ""
+"The file '<b>%1</b>' already existsand is larger than the offered one.<br>Do "
+"you wish to<br><b>overwrite</b> the existing file, or<br> <b>auto-rename</b> "
+"the new file ?"
+msgstr ""
+"El archivo '<b>%1</b>' ya existe y es m�s largo que el ofrecido."
+"<br>�Desea<br><b>sobreescribir</b> el archivo existente o<br> <b>renombrar "
+"automaticamente</b> el nuevo archivo?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:747
+#, fuzzy
+msgid "File %s exists, auto-renaming to %Q"
+msgstr "El archivo %s ya existe, renombrando autom�ticamente a %m"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:158
+#, c-format
+msgid "Attempting a passive DCC %s connection"
+msgstr "Intentando una conexi�n %s DCC pasiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:168
+#, c-format
+msgid "Attempting an active DCC %s connection"
+msgstr "Intentando una conexi�n %s DCC activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:761
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:107
+#, fuzzy
+msgid "Contacting host %Q on port %Q"
+msgstr "Contactando con la m�quina %s en el puerto %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:83
+#, fuzzy
+msgid "Listening on interface %Q port %Q"
+msgstr "Escuchando en el interfaz %s puerto %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:207
+#, c-format
+msgid "The local IP address is private, determining from IRC server: %s"
+msgstr ""
+"La direcci�n IP local es privada, determinando desde el servidor IRC: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1512
+msgid ""
+"The local IP address is private, but unable to determine it from the IRC "
+"server"
+msgstr ""
+"La direcci�n IP local es privada, pero es imposible determinarla desde el "
+"servidor IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1515
+msgid ""
+"The local IP address is private, but have no IRC server to determine it from"
+msgstr ""
+"La direcci�n IP local es privada, pero no tengo un servidor IRC desde el "
+"quedeterminarla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:234
+#, fuzzy
+msgid "Sent DCC %Q request to %Q, waiting for the remote client to connect..."
+msgstr ""
+"Enviada petici�n DCC %s a %s, esperando la conexi�n del cliente remoto..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:237
+#, fuzzy
+msgid "DCC %Q request not sent, awaiting manual connection"
+msgstr "La petici�n DCC %s no fu� enviada, esperando conexi�n manual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1574
+msgid "Low-level transport connection established"
+msgstr "Establecida la conexi�n de transporte de bajo nivel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1575
+msgid "Starting Secure Socket Layer handshake"
+msgstr "Iniciando negociaci�n del protocolo SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:254
+#, c-format
+msgid "[SSL ERROR]: %s"
+msgstr "[ERROR SSL]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:388
+msgid "Cannot send data: No active connection"
+msgstr "No puedo enviar datos: No hay una conexi�n activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:344
+#, fuzzy
+msgid ""
+"The crypto engine was not able to encrypt the current message (%Q): %Q, no "
+"data was sent to the remote end"
+msgstr ""
+"El motor de cifrado no fu� capaz de descifrar el mensaje actual (%Q): %s, no "
+"se enviaron datos al extremo remoto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:403
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:827
+msgid "ERROR: %Q"
+msgstr "ERROR: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:447
+#, fuzzy
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+"El siguiente mensaje parece estar cifrado, pero el motor de cifrado fall� al "
+"decodificarlo: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:493
+#, fuzzy
+msgid "DCC %Q failed: %Q"
+msgstr "DCC %s fall�: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:521
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:919
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:282
+#, fuzzy
+msgid "Connected to %Q:%Q"
+msgstr "Conectado a %s:%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:523
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:921
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:284
+#, fuzzy
+msgid "Local end is %Q:%Q"
+msgstr "El extremo final es %s:%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:164
+msgid ""
+"WARNING: failed to check the soundcard duplex capabilities: if this is a "
+"half-duplex soundcard , use the DCC VOICE option to force half-duplex "
+"algorithm"
+msgstr ""
+"ATENCION: fall� la comprobaci�n de la caracter�stica duplex de la tarjeta de "
+"sonido: si esta es una tarjeta half-duplex, usa la opci�n DCC VOICE para "
+"forzar el algoritmo half-duplex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:172
+msgid ""
+"Half duplex soundcard detected, you will not be able to talk and listen at "
+"the same time"
+msgstr ""
+"Detectada tarjeta de sonido half-duplex, no ser�s capaz de hablar y escuchar "
+"al mismo tiempo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:213
+#, c-format
+msgid ""
+"WARNING: failed to set the requested sample rate (%d): the device used "
+"closest match (%d)"
+msgstr ""
+"ATENCI�N: fall� la configuraci�n de la frecuencia de muestreo solicitada (%"
+"d): el dispositivo us� el valor m�s cercano (%d)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:271
+msgid "Ops...failed to test the soundcard capabilities...expect problems..."
+msgstr ""
+"Ops...fall� la prueba de las capacidades de la tarjeta de sonido...puedes "
+"esperar problemas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:662
+msgid "Input buffer"
+msgstr "Buffer de entrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:664
+msgid "Output buffer"
+msgstr "Buffer de salida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:746
+msgid "Attempting a passive DCC VOICE connection"
+msgstr "Intentando una conexi�n pasiva DCC VOICE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:751
+msgid "Attempting an active DCC VOICE connection"
+msgstr "Intentando una conexi�n activa DCC VOICE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:779
+#, fuzzy
+msgid ""
+"Sent DCC VOICE (%s) request to %Q, waiting for the remote client to "
+"connect..."
+msgstr ""
+"Enviada petici�n DCC VOICE (%s) a %s, esperando la conexi�n del cliente "
+"remoto..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:781
+msgid "DCC VOICE request not sent: awaiting manual connections"
+msgstr "No se envi� la petici�n DCC: esperando conexiones manuales"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:885
+#, c-format
+msgid "Input buffer: %d bytes"
+msgstr "Buffer de entrada: %d bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:887
+#, c-format
+msgid "Output buffer: %d bytes"
+msgstr "Buffer de salida: %d bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:910
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:277
+msgid "DCC Failed: %Q"
+msgstr "Fall� el DCC: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:939
+#, c-format
+msgid "Actual codec used is '%s'"
+msgstr "El codec actual es '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:1023
+#, c-format
+msgid "Volume: %i"
+msgstr "Volumen: %i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:91
+msgid ""
+"This window has no associated IRC context (an IRC context is required unless "
+"-c or -n are passed)"
+msgstr ""
+"Esta ventana no tiene conexto IRC asociado (se necesita un contexto IRC a "
+"menos que se pasen los modificadores -c o -n)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:104
+msgid ""
+"You're not connected to a server (an active connection is required unless -c "
+"or -n are passed)"
+msgstr ""
+"No est� conectado a un servidor (se necesita una conexi�n activa a menos que "
+"se pasen los modificadores -c o -n)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:129
+#, fuzzy
+msgid "Unable to get address of interface %Q"
+msgstr "Imposible obtener la direcci�n del interfaz %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:139
+msgid "No suitable interfaces to listen on, use -i"
+msgstr "No hay interfaces adecuados para escuchar, use -i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:172
+msgid "This executable was built without SSL support, -s switch ignored"
+msgstr ""
+"Este ejecutable se construy� sin soporte SSL, el modificador -s ser� ignorado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:657
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1159
+msgid "-c requires -i and -p"
+msgstr "-c necesita -i y -p"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:634
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:730
+msgid "<unknown size>"
+msgstr "<tama�o desconocido>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:890
+msgid "This executable has been built without SSL support, -s switch ignored"
+msgstr ""
+"Este ejecutable ha sido contru�do sin soporte SSL, el modificador -s ser� "
+"ignorado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:960
+msgid "This executable has no SSL support, -s switch ignored"
+msgstr "Este ejecutable no tiene soporte SSL, modificador -s ignorado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1114
+msgid "DCC VOICE support not enabled at compilation time"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1132
+#, fuzzy
+msgid "Invalid sample rate specified, defaulting to 8000"
+msgstr "Frecuencia de muestreo '%s' no v�lida, poniendo a 8000 por defecto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1148
+#, fuzzy
+msgid "Invalid codec specified, defaulting to 'adpcm'"
+msgstr "Codec '%s' no v�lido, poniendo por defecto 'adpcm'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1577
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2542
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2562
+msgid "The current window has no associated DCC session"
+msgstr "La ventana actual no tiene una sesi�n DCC asociada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1582
+msgid "The specified parameter is not a valid DCC identifier"
+msgstr "El par�metro especificado no es un identificador DCC v�lido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1662
+msgid "This DCC session is not a DCC transfer session"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2553
+msgid "The specified window identifier is not valid"
+msgstr "El identificador de ventana especificado no es v�lido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:260
+msgid "WARNING: The peer is sending garbage data past the end of the file"
+msgstr ""
+"ATENCION: El otro extremo est� enviando datos basura pasado el final del "
+"archivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:261
+msgid ""
+"WARNING: Ignoring data past the declared end of file and closing the "
+"connection"
+msgstr ""
+"ATENCION: Ignorando los datos que exceden del final de archivo declarado y "
+"cerrando la conexi�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:362
+msgid ""
+"Data transfer terminated, waiting 30 seconds for the peer to close the "
+"connection..."
+msgstr ""
+"Transferencia de datos terminada, esperando 30 segundos para que el otro "
+"extremo cierre la conexi�n..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:369
+msgid "Data transfer was terminated 30 seconds ago, closing the connection"
+msgstr ""
+"La transferencia de datos termin� hace 30 segundos, cerrando la conexi�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:600
+msgid "WARNING: Received data in a DCC TSEND, there should be no acknowledges"
+msgstr ""
+"ATENCION: Recibiendo datos en un DCC TSEND, aqu� no deber�an haber "
+"confirmaciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:732
+#, c-format
+msgid "TRANSFER %d"
+msgstr "TRANSFERENCIA %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:755
+msgid "Setting up the connection"
+msgstr "Configurando la conexi�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:814
+msgid "Attempting a passive DCC %1 connection"
+msgstr "Intentando una conexi�n DCC pasiva %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:818
+msgid "Attempting an active DCC %1 connection"
+msgstr "Intentando una conexi�n DCC activa %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:844
+msgid "Sent DCC RESUME request to %1, waiting for ACCEPT"
+msgstr "Enviada petici�n DCC RESUME a %1, esperando el ACCEPT"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:914
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:925
+msgid "Aborted"
+msgstr "Interrumpida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:924
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1603
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1678
+msgid "Transfer failed: "
+msgstr "Fall� la transferencia: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:936
+msgid "Configure Bandwidth..."
+msgstr "Configurar Caudal..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:938
+msgid "Resend DCC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:939
+msgid "Resend TDCC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:940
+msgid "Resend RevDCC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:944
+msgid "Abort"
+msgstr "Interrumpir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1135
+msgid "From: "
+msgstr "Desde: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1136
+msgid "To: "
+msgstr "A: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1246
+#, fuzzy
+msgid "%1 of %2 (%3%)"
+msgstr "%1 de %2 bytes (%3%)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1250
+msgid "%1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1263
+msgid "Spd:"
+msgstr "Vel:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1278
+msgid "Avg:"
+msgstr "Media:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1349
+msgid "Transfer Log"
+msgstr "Registro de Transferencia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1480
+msgid "Contacting host %1 on port %2"
+msgstr "Contactando con la m�quina %1 en el puerto %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1487
+msgid "Listening on interface %1 port %2"
+msgstr "Escuchando en el interfaz %1 puerto %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1510
+msgid "The local IP address is private, determining from IRC server: %1"
+msgstr ""
+"La direcci�n IP local es privada, determin�ndola desde el servidor IRC: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1561
+msgid "Sent DCC %1 request to %2, waiting for remote client to connect..."
+msgstr ""
+"Enviada petici�n DCC %1 a %2, esperando la conexi�n desde el cliente "
+"remoto..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1563
+msgid "DCC %1 request not sent, awaiting manual connection"
+msgstr "Petici�n DCC %1 no enviada, esperando conexi�n manual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1582
+msgid "[SSL ERROR]: %1"
+msgstr "[ERROR SSL]: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1625
+#, fuzzy
+msgid "DCC %s transfer with %Q@%Q:%Q completed: \r![!dbl]play $0\r%s\r"
+msgstr "Transferencia DCC %s con %s@%s:%s completada: \r![!dbl]play $0\r%s\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1640
+msgid "Transfer completed"
+msgstr "Transferencia completada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1687
+msgid "Connected to %1:%2"
+msgstr "Conectado a %1:%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1688
+msgid "Local end is %1:%2"
+msgstr "El extremo local es %1:%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1732
+msgid "Transferring data"
+msgstr "Transfiriendo datos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1758
+msgid "RESUME accepted, transfer will begin at position %1"
+msgstr "Se acept� RESUME, la transferencia comenzar� en la posici�n %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1789
+msgid "Internal error in RESUME request"
+msgstr "Error interno en la petici�n RESUME"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1794
+msgid "Invalid RESUME request: Position %1 is larger than file size"
+msgstr ""
+"Petici�n RESUME no v�lida: la posici�n %1 es mayor que el tama�o del archivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1798
+msgid "Accepting RESUME request, transfer will begin at position %1"
+msgstr ""
+"Aceptando petici�n RESUME, la transferencia comenzar� en la posici�n %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1830
+msgid "Configure bandwidth for DCC transfer %1"
+msgstr "Configurar el caudal para la transferencia DCC %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1833
+msgid "Limit upload bandwidth to"
+msgstr "Limitar el caudal de subida a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1833
+msgid "Limit download bandwidth to"
+msgstr "Limitar el caudal de bajada a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1846
+msgid "bytes/sec"
+msgstr "bytes/seg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1850
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:142
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:78
+msgid "Attempting a passive DCC CANVAS connection"
+msgstr "Intentando una conexi�n pasiva DCC CANVAS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:98
+#, fuzzy
+msgid ""
+"Sent DCC CANVAS request to %Q, waiting for the remote client to connect..."
+msgstr ""
+"Enviada petici�n DCC CANVAS a %s, esperando la conexi�n desde el cliente "
+"remoto..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:100
+msgid "DCC CANVAS request not sent: awaiting manual connections"
+msgstr "Petici�n DCC CANVAS no enviada; esperando conexiones manuales"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:104
+msgid "Attempting an active DCC CANVAS connection"
+msgstr "Intentando una conexi�n DCC CANVAS activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1563
+msgid "&Line"
+msgstr "&L�nea"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1564
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1572
+msgid "&Rectangle"
+msgstr "&Rect�ngulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1565
+msgid "&Ellipse"
+msgstr "&Elipse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1566
+msgid "&Pie"
+msgstr "Tarta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1567
+msgid "&Chord"
+msgstr "A&corde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1569
+msgid "&Rich text (html)"
+msgstr "Texto en&riquecido (html)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1571
+msgid "&Triangle"
+msgstr "&Tri�ngulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1573
+msgid "&Pentagon"
+msgstr "&Pent�gono"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1574
+msgid "&Hexagon"
+msgstr "&Hex�gono"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1576
+msgid "&Shape"
+msgstr "Figura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1577
+msgid "&Item"
+msgstr "Elemento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1578
+msgid "&Polygons"
+msgstr "&Pol�gonos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1580
+msgid "&Insert"
+msgstr "&Insertar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:77
+#, fuzzy
+msgid "Unable to process the above request: %Q, %Q"
+msgstr "No es posible procesar la petici�n anterior: %s, %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:79
+msgid "Ignoring and notifying failure"
+msgstr "Ignorando y notificando el fallo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:79
+msgid "Ignoring"
+msgstr "Ignorando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:95
+#, c-format
+msgid "Concurrent transfer limit reached (%u of %u transfers running)"
+msgstr ""
+"Alcanzado el l�mite de transferencias concurrentes (%u de %u transferencias "
+"funcionando)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:111
+#, c-format
+msgid "Slot limit reached (%u slots of %u)"
+msgstr "L�mite de ranuras alcanzado (%u ranuras de %u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:120
+msgid "Too many pending connections"
+msgstr "Demasiadas conexiones pendientes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:156
+#, c-format
+msgid "Invalid port number %s"
+msgstr "N�mero de puerto no v�lido %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:172
+#, c-format
+msgid "Invalid IP address in old format %s"
+msgstr "La direcci�n IP en formato antiguo no es v�lida %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:191
+#, c-format
+msgid "Invalid IP address %s"
+msgstr "Direcci�n IP no v�lida %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:258
+#, c-format
+msgid ""
+"The above request is broken: The second parameter is '%s' and should be "
+"'chat', trying to continue"
+msgstr ""
+"La petici�n anterior no es correcta: el segundo par�metro es '%s' y deber�a "
+"ser 'chat', intentando continuar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:270
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC CHAT is not available"
+msgstr ""
+"Este ejecutable ha sido compilado sin soporte SSL, no est� disponible la "
+"extensi�n SSL para DCC CHAT"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:321
+msgid ""
+"The above request is broken: it looks like a zero port tag acknowledge but I "
+"have either never seen this tag or it was sent more than 120 seconds ago"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:322
+msgid "It seems that I haven't requested this dcc chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:442
+msgid ""
+"The above request is broken: The fourth parameter should be the file size "
+"but does not appear to be an unsigned number, trying to continue"
+msgstr ""
+"La petici�n anterior no es correcta: el cuarto par�metro deber�a ser el "
+"tama�o del archivo pero no parece ser un n�mero entero sin signo, intentando "
+"continuar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:600
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:738
+msgid ""
+"The above request is broken: The filename contains path components, "
+"stripping the leading path and trying to continue"
+msgstr ""
+"La petici�n anterior no es correcta: el nombre del archivo contiene una "
+"ruta, quitando la ruta e intentando continuar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:466
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC SEND is not available"
+msgstr ""
+"Este ejecutable ha sido compilado sin soporte SSL, no est� disponible la "
+"extensi�n SSL para DCC SEND"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:528
+#, c-format
+msgid ""
+"Can't proceed with DCC RECV: Transfer not initiated for file %s on port %s"
+msgstr ""
+"No pude realizar el DCC REVC: la transferencia del archivo %s en el puerto %"
+"s no se inici�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:553
+#, c-format
+msgid "Invalid resume position argument '%s'"
+msgstr "El argumento de posici�n de reanudaci�n '%s' no es v�lido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:565
+#, c-format
+msgid ""
+"Can't proceed with DCC SEND: Transfer not initiated for file %s on port %s, "
+"or invalid resume size"
+msgstr ""
+"No pude realizar el DCC SEND: la transferencia del archivo %s en el puerto %"
+"s no se inici� o tiene un tama�o de reanudaci�n no v�lido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:590
+msgid ""
+"The above request has resume file size missing, assuming a resume file size "
+"of 0"
+msgstr ""
+"La petici�n anterior no tiene un tama�o de archivo para continuar, asumiendo "
+"0 como tama�o de archivo de reanudaci�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:614
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC RECV is not available"
+msgstr ""
+"Este ejecutable ha sido compilado sin soporte SSL, no est� disponible la "
+"extensi�n SSL para DCC RECV"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:629
+#, c-format
+msgid "Invalid RECV request: Position %u is is larger than file size"
+msgstr ""
+"Petici�n RECV no v�lida: la posici�n %u es mayor que el tama�o del archivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:683
+msgid "%Q [%Q@%Q] is ready to receive the file \"%s\""
+msgstr "%Q [%Q@%Q] est� preparado para recibir el archivo \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:689
+#, c-format
+msgid "The remote client is listening on interface %s and port %s"
+msgstr "El cliente remoto est� escuchando en el interfaz %s y puerto %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:696
+msgid ""
+"Use %c\r![!dbl]dcc.send %s -i=%s -p=%s %Q\r/dcc.send %s -i=%s -p=%s %Q\r%c "
+"to send the file (or double-click on the socket)"
+msgstr ""
+"Usar %c\r![!dbl]dcc.send %s -i=%s -p=%s %Q\r/dcc.send %s -i=%s -p=%s %Q\r%c "
+"para enviar el archivo (o doble click en el socket)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:728
+msgid ""
+"The above request is broken: The fourth parameter should be the file size "
+"but does not appear to be an unsigned number; trying to continue"
+msgstr ""
+"La petici�n anterior es erronea: el cuarto par�metro deber�a ser el tama�o "
+"del archivo pero no parece ser un entero sin signo; intentando continuar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:752
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC RSEND is not available"
+msgstr ""
+"Este ejecutable ha sido compilado sin soporte SSL, no est� disponible la "
+"extensi�n SSL para DCC RSEND"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:763
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:932
+msgid "(unknown)"
+msgstr "(desconocido)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:918
+msgid "No suitable interface to listen on, trying to continue anyway..."
+msgstr ""
+"No hay un interfaz adecuando en el que escuchar, intentando continuar de "
+"todas formas..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:835
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC GET is not available"
+msgstr ""
+"Este ejecutable ha sido compilado sin soporte SSL, no est� disponible la "
+"extensi�n SSL para DCC GET"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:846
+msgid "No file offer named '%s' (with size %s) available for %Q [%Q@%Q]"
+msgstr ""
+"No hay una oferta del archivo '%s' (con tama�o %s) disponible para %Q [%Q@%Q]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:847
+msgid "\"any\""
+msgstr "\"cualquiera\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:891
+msgid ""
+"Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering "
+"DCC %s since we can't accept incoming connections (user option)"
+msgstr ""
+"Aceptando una petici�n de archivo desde %Q [%Q@%Q] para '%s' (archivo real: %"
+"Q), ofreciendo DCC %s porque no podemos aceptar conexiones entrantes (opci�n "
+"de usuario)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:948
+#, fuzzy
+msgid ""
+"Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering "
+"DCC %Q"
+msgstr ""
+"Aceptando una petici�n de archivo desde %Q [%Q@%Q] para '%s' (archivo real: %"
+"Q), ofreciendo DCC %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:982
+#, fuzzy
+msgid ""
+"The above request cannot be accepted: DCC VOICE support not enabled at "
+"compilation time "
+msgstr "La petici�n anterior no puede ser aceptada: codec no soportado '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:992
+#, c-format
+msgid "The above request cannot be accepted: Unsupported codec '%s'"
+msgstr "La petici�n anterior no puede ser aceptada: codec no soportado '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:1005
+#, c-format
+msgid ""
+"The above request appears to be broken: Invalid sample-rate '%s', defaulting "
+"to 8000"
+msgstr ""
+"La petici�n anterior parece erronea: frecuencia de muestreo '%s' no v�lida, "
+"poniendo a 8000 por defecto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:1151
+#, c-format
+msgid "Unknown DCC type '%s'"
+msgstr "Tipo DCC desconocido '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:64
+msgid "&Accept"
+msgstr "&Aceptar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:69
+msgid "&Reject"
+msgstr "&Rechazar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:129
+msgid "&Rename"
+msgstr "&Renombrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:133
+msgid "Over&write"
+msgstr "Sobreescribir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:137
+msgid "Re&sume"
+msgstr "Continuar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:149
+msgid "File Already Exists - KVIrc"
+msgstr "El Archivo ya Existe - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/utils.cpp:122
+msgid "Can't retrieve a suitable local IPV4 address"
+msgstr "No pude encontrar una direcci�n IPv4 apropiada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/utils.cpp:140
+#, c-format
+msgid ""
+"Can't listen on default interface '%s': fix it in the options dialog, "
+"disabling the option (so the next dcc will work)"
+msgstr ""
+"No puedo escuchar en el interfaz por defecto '%s': arr�glalo en el di�logo "
+"de opciones deshabilitando la opci�n (para que funcione el pr�ximo dcc)"
+
+#~ msgid "%1 bytes"
+#~ msgstr "%1 bytes"
+
+#~ msgid "Choose Save Location - KVIrc"
+#~ msgstr "Escoge el Lugar de la Grabaci�n - KVIrc"
+
+#~ msgid "Contacting host %s on port %s"
+#~ msgstr "Contactando con la m�quina %s en el puerto %s"
+
+#~ msgid "Missing target nickname"
+#~ msgstr "Falta nick de destino"
+
+#~ msgid "Missing filename"
+#~ msgstr "Falta el nombre de archivo"
+
+#~ msgid "The file size is not an positive number"
+#~ msgstr "El tama�o del archivo no es un n�mero positivo"
+
+#~ msgid "Invalid file size specified, no message sent"
+#~ msgstr ""
+#~ "El tama�o del archivo especificado no es v�lido, no se envi� mensaje"
diff --git a/po/modules/dcc/dcc_fi.po b/po/modules/dcc/dcc_fi.po
new file mode 100644
index 00000000..821a2363
--- /dev/null
+++ b/po/modules/dcc/dcc_fi.po
@@ -0,0 +1,898 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/descriptor.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:642
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:666
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:803
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:805
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:484
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:514
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:136
+msgid "unknown"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:783
+msgid "Choose Files to Send - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:189
+msgid "Can't send DCC %Q request to %Q: IRC connection has been terminated"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:821
+msgid "Can't open file %Q for reading"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:269
+msgid ""
+"<b>%1 [%2@%3]</b> requests a <b>Direct Client Connection</b> in <b>%4</b> "
+"mode.<br>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:274
+msgid "The connection will be secured using SSL.<br>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:280
+msgid "You will be the passive side of the connection.<br>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:284
+msgid "The connection target will be host <b>%1</b> on port <b>%2</b><br>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:543
+msgid "DCC %1 Request - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:340
+msgid ""
+"<b>%1 [%2@%3]</b> requests a<br><b>Direct Client Connection</b> in <b>VOICE</"
+"b> mode.<br>The connection target will be host <b>%4</b> on port <b>%5</"
+"b><br>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:346
+msgid "DCC VOICE request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:411
+msgid ""
+"<b>%1 [%2@%3]</b> requests a<br><b>Direct Client Connection</b> in "
+"<b>CANVAS</b> mode.<br>The connection target will be host <b>%4</b> on port "
+"<b>%5</b><br>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:417
+msgid "DCC CANVAS request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:502
+msgid ""
+"<b>%1 [%2@%3]</b> wants to send you the file '<b>%4</b>', <b>%5</b> large."
+"<br>The connection target will be host <b>%6</b> on port <b>%7</b><br>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:515
+msgid ""
+"<b>%1 [%2@%3]</b> wants to send you the file '<b>%4</b>', <b>%5</b> large."
+"<br>You will be the passive side of the connection.<br>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:528
+msgid ""
+"<center><b>Note:</b></center>The file appears to be an avatar that you have "
+"requested. You should not change its filename. Save it in a location where "
+"KVIrc can find it, such as the 'avatars', 'incoming', or 'pics' directories, "
+"your home directory, or the save directory for the incoming file type. The "
+"default save path will probably work. You can instruct KVIrc to accept "
+"incoming avatars automatically by setting the option "
+"<tt>boolAutoAcceptIncomingAvatars</tt> to true.<br>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:557
+msgid "Auto-accepting DCC %Q request from %Q!%Q@%Q for file %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:618
+msgid "Choose Files to Save - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:631
+msgid "Auto-saving DCC %Q file %Q as \r![!dbl]play $0\r%Q\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:665
+msgid ""
+"The file '<b>%1</b>' already exists and is <b>%2</b> large.<br>Do you wish "
+"to<br><b>overwrite</b> the existing file,<br> <b>auto-rename</b> the new "
+"file, or<br><b>resume</b> an incomplete download?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:677
+msgid ""
+"The file '<b>%1</b>' already existsand is larger than the offered one.<br>Do "
+"you wish to<br><b>overwrite</b> the existing file, or<br> <b>auto-rename</b> "
+"the new file ?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:747
+msgid "File %s exists, auto-renaming to %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:158
+#, c-format
+msgid "Attempting a passive DCC %s connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:168
+#, c-format
+msgid "Attempting an active DCC %s connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:761
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:107
+msgid "Contacting host %Q on port %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:83
+msgid "Listening on interface %Q port %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:207
+#, c-format
+msgid "The local IP address is private, determining from IRC server: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1507
+msgid ""
+"The local IP address is private, but unable to determine it from the IRC "
+"server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1510
+msgid ""
+"The local IP address is private, but have no IRC server to determine it from"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:234
+msgid "Sent DCC %Q request to %Q, waiting for the remote client to connect..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:237
+msgid "DCC %Q request not sent, awaiting manual connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1569
+msgid "Low-level transport connection established"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1570
+msgid "Starting Secure Socket Layer handshake"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:254
+#, c-format
+msgid "[SSL ERROR]: %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:388
+msgid "Cannot send data: No active connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:344
+msgid ""
+"The crypto engine was not able to encrypt the current message (%Q): %Q, no "
+"data was sent to the remote end"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:403
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:827
+msgid "ERROR: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:447
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:493
+msgid "DCC %Q failed: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:521
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:919
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:282
+msgid "Connected to %Q:%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:523
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:921
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:284
+msgid "Local end is %Q:%Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:164
+msgid ""
+"WARNING: failed to check the soundcard duplex capabilities: if this is a "
+"half-duplex soundcard , use the DCC VOICE option to force half-duplex "
+"algorithm"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:172
+msgid ""
+"Half duplex soundcard detected, you will not be able to talk and listen at "
+"the same time"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:213
+#, c-format
+msgid ""
+"WARNING: failed to set the requested sample rate (%d): the device used "
+"closest match (%d)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:271
+msgid "Ops...failed to test the soundcard capabilities...expect problems..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:662
+msgid "Input buffer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:664
+msgid "Output buffer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:746
+msgid "Attempting a passive DCC VOICE connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:751
+msgid "Attempting an active DCC VOICE connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:779
+msgid ""
+"Sent DCC VOICE (%s) request to %Q, waiting for the remote client to "
+"connect..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:781
+msgid "DCC VOICE request not sent: awaiting manual connections"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:885
+#, c-format
+msgid "Input buffer: %d bytes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:887
+#, c-format
+msgid "Output buffer: %d bytes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:910
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:277
+msgid "DCC Failed: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:939
+#, c-format
+msgid "Actual codec used is '%s'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:1023
+#, c-format
+msgid "Volume: %i"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:91
+msgid ""
+"This window has no associated IRC context (an IRC context is required unless "
+"-c or -n are passed)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:104
+msgid ""
+"You're not connected to a server (an active connection is required unless -c "
+"or -n are passed)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:129
+msgid "Unable to get address of interface %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:139
+msgid "No suitable interfaces to listen on, use -i"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:172
+msgid "This executable was built without SSL support, -s switch ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:657
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1159
+msgid "-c requires -i and -p"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:634
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:730
+msgid "<unknown size>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:890
+msgid "This executable has been built without SSL support, -s switch ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:960
+msgid "This executable has no SSL support, -s switch ignored"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1114
+msgid "DCC VOICE support not enabled at compilation time"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1132
+msgid "Invalid sample rate specified, defaulting to 8000"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1148
+msgid "Invalid codec specified, defaulting to 'adpcm'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1577
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2543
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2563
+msgid "The current window has no associated DCC session"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1582
+msgid "The specified parameter is not a valid DCC identifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1662
+msgid "This DCC session is not a DCC transfer session"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2554
+msgid "The specified window identifier is not valid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:258
+msgid "WARNING: The peer is sending garbage data past the end of the file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:259
+msgid ""
+"WARNING: Ignoring data past the declared end of file and closing the "
+"connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:358
+msgid ""
+"Data transfer terminated, waiting 30 seconds for the peer to close the "
+"connection..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:365
+msgid "Data transfer was terminated 30 seconds ago, closing the connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:595
+msgid "WARNING: Received data in a DCC TSEND, there should be no acknowledges"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:727
+#, c-format
+msgid "TRANSFER %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:750
+msgid "Setting up the connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:809
+msgid "Attempting a passive DCC %1 connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:813
+msgid "Attempting an active DCC %1 connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:839
+msgid "Sent DCC RESUME request to %1, waiting for ACCEPT"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:909
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:920
+msgid "Aborted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:919
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1598
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1673
+msgid "Transfer failed: "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:931
+msgid "Configure Bandwidth..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:933
+msgid "Resend DCC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:934
+msgid "Resend TDCC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:935
+msgid "Resend RevDCC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:939
+msgid "Abort"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1130
+msgid "From: "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1131
+msgid "To: "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1241
+msgid "%1 of %2 (%3%)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1245
+msgid "%1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1258
+msgid "Spd:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1273
+msgid "Avg:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1344
+msgid "Transfer Log"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1475
+msgid "Contacting host %1 on port %2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1482
+msgid "Listening on interface %1 port %2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1505
+msgid "The local IP address is private, determining from IRC server: %1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1556
+msgid "Sent DCC %1 request to %2, waiting for remote client to connect..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1558
+msgid "DCC %1 request not sent, awaiting manual connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1577
+msgid "[SSL ERROR]: %1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1620
+msgid "DCC %s transfer with %Q@%Q:%Q completed: \r![!dbl]play $0\r%s\r"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1635
+msgid "Transfer completed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1682
+msgid "Connected to %1:%2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1683
+msgid "Local end is %1:%2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1727
+msgid "Transferring data"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1753
+msgid "RESUME accepted, transfer will begin at position %1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1784
+msgid "Internal error in RESUME request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1789
+msgid "Invalid RESUME request: Position %1 is larger than file size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1793
+msgid "Accepting RESUME request, transfer will begin at position %1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1825
+msgid "Configure bandwidth for DCC transfer %1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1828
+msgid "Limit upload bandwidth to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1828
+msgid "Limit download bandwidth to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1841
+msgid "bytes/sec"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1845
+msgid "OK"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1850
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:142
+msgid "Cancel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:78
+msgid "Attempting a passive DCC CANVAS connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:98
+msgid ""
+"Sent DCC CANVAS request to %Q, waiting for the remote client to connect..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:100
+msgid "DCC CANVAS request not sent: awaiting manual connections"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:104
+msgid "Attempting an active DCC CANVAS connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1563
+msgid "&Line"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1564
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1572
+msgid "&Rectangle"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1565
+msgid "&Ellipse"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1566
+msgid "&Pie"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1567
+msgid "&Chord"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1569
+msgid "&Rich text (html)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1571
+msgid "&Triangle"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1573
+msgid "&Pentagon"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1574
+msgid "&Hexagon"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1576
+msgid "&Shape"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1577
+msgid "&Item"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1578
+msgid "&Polygons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1580
+msgid "&Insert"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:77
+msgid "Unable to process the above request: %Q, %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:79
+msgid "Ignoring and notifying failure"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:79
+msgid "Ignoring"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:95
+#, c-format
+msgid "Concurrent transfer limit reached (%u of %u transfers running)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:111
+#, c-format
+msgid "Slot limit reached (%u slots of %u)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:120
+msgid "Too many pending connections"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:156
+#, c-format
+msgid "Invalid port number %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:172
+#, c-format
+msgid "Invalid IP address in old format %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:191
+#, c-format
+msgid "Invalid IP address %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:258
+#, c-format
+msgid ""
+"The above request is broken: The second parameter is '%s' and should be "
+"'chat', trying to continue"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:270
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC CHAT is not available"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:321
+msgid ""
+"The above request is broken: it looks like a zero port tag acknowledge but I "
+"have either never seen this tag or it was sent more than 120 seconds ago"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:322
+msgid "It seems that I haven't requested this dcc chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:442
+msgid ""
+"The above request is broken: The fourth parameter should be the file size "
+"but does not appear to be an unsigned number, trying to continue"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:600
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:738
+msgid ""
+"The above request is broken: The filename contains path components, "
+"stripping the leading path and trying to continue"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:466
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC SEND is not available"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:528
+#, c-format
+msgid ""
+"Can't proceed with DCC RECV: Transfer not initiated for file %s on port %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:553
+#, c-format
+msgid "Invalid resume position argument '%s'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:565
+#, c-format
+msgid ""
+"Can't proceed with DCC SEND: Transfer not initiated for file %s on port %s, "
+"or invalid resume size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:590
+msgid ""
+"The above request has resume file size missing, assuming a resume file size "
+"of 0"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:614
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC RECV is not available"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:629
+#, c-format
+msgid "Invalid RECV request: Position %u is is larger than file size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:683
+msgid "%Q [%Q@%Q] is ready to receive the file \"%s\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:689
+#, c-format
+msgid "The remote client is listening on interface %s and port %s"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:696
+msgid ""
+"Use %c\r![!dbl]dcc.send %s -i=%s -p=%s %Q\r/dcc.send %s -i=%s -p=%s %Q\r%c "
+"to send the file (or double-click on the socket)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:728
+msgid ""
+"The above request is broken: The fourth parameter should be the file size "
+"but does not appear to be an unsigned number; trying to continue"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:752
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC RSEND is not available"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:763
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:932
+msgid "(unknown)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:918
+msgid "No suitable interface to listen on, trying to continue anyway..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:835
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC GET is not available"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:846
+msgid "No file offer named '%s' (with size %s) available for %Q [%Q@%Q]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:847
+msgid "\"any\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:891
+msgid ""
+"Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering "
+"DCC %s since we can't accept incoming connections (user option)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:948
+msgid ""
+"Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering "
+"DCC %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:982
+msgid ""
+"The above request cannot be accepted: DCC VOICE support not enabled at "
+"compilation time "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:992
+#, c-format
+msgid "The above request cannot be accepted: Unsupported codec '%s'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:1005
+#, c-format
+msgid ""
+"The above request appears to be broken: Invalid sample-rate '%s', defaulting "
+"to 8000"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:1151
+#, c-format
+msgid "Unknown DCC type '%s'"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:64
+msgid "&Accept"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:69
+msgid "&Reject"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:129
+msgid "&Rename"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:133
+msgid "Over&write"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:137
+msgid "Re&sume"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:149
+msgid "File Already Exists - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/utils.cpp:122
+msgid "Can't retrieve a suitable local IPV4 address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/utils.cpp:140
+#, c-format
+msgid ""
+"Can't listen on default interface '%s': fix it in the options dialog, "
+"disabling the option (so the next dcc will work)"
+msgstr ""
diff --git a/po/modules/dcc/dcc_fr.po b/po/modules/dcc/dcc_fr.po
new file mode 100644
index 00000000..f64b7ce2
--- /dev/null
+++ b/po/modules/dcc/dcc_fr.po
@@ -0,0 +1,1022 @@
+# translation of dcc_fr.po to Français
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Ahinu <[email protected]>, 2006.
+# Elephantman <[email protected]>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: dcc_fr\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2008-03-06 17:50+0100\n"
+"Last-Translator: Elephantman <[email protected]>\n"
+"Language-Team: Français <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/descriptor.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:642
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:666
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:803
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:805
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:484
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:514
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:136
+msgid "unknown"
+msgstr "inconnu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:783
+msgid "Choose Files to Send - KVIrc"
+msgstr "Choisir Fichiers à Envoyer - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:189
+msgid "Can't send DCC %Q request to %Q: IRC connection has been terminated"
+msgstr ""
+"Impossible d'envoyer les requête DCC %Q à %Q : la connexion IRC a été "
+"interrompue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:821
+msgid "Can't open file %Q for reading"
+msgstr "Impossible d'ouvrir en lecture le fichier %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:269
+msgid ""
+"<b>%1 [%2@%3]</b> requests a <b>Direct Client Connection</b> in <b>%4</b> "
+"mode.<br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> demande une <b>Connexion Direct au Client (DCC)</b> en "
+"mode <b>%4</b>.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:274
+msgid "The connection will be secured using SSL.<br>"
+msgstr "La connexion sera securisée en utilisant SSL.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:280
+msgid "You will be the passive side of the connection.<br>"
+msgstr "Vous serez l'extrémité passive de la connexion.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:284
+msgid "The connection target will be host <b>%1</b> on port <b>%2</b><br>"
+msgstr ""
+"La connexion aura pour cible la machine <b>%1</b> sur le port <b>%2</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:543
+msgid "DCC %1 Request - KVIrc"
+msgstr "Requête DCC %1 - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:340
+msgid ""
+"<b>%1 [%2@%3]</b> requests a<br><b>Direct Client Connection</b> in <b>VOICE</"
+"b> mode.<br>The connection target will be host <b>%4</b> on port <b>%5</"
+"b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> demande une <b>Connexion Direct au Client (DCC)</b> en "
+"mode <b>VOICE</b>.<br>La connexion aura pour cible la machine <b>%4</b> sur "
+"le port <b>%5</b>.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:346
+msgid "DCC VOICE request"
+msgstr "Requête DCC VOICE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:411
+msgid ""
+"<b>%1 [%2@%3]</b> requests a<br><b>Direct Client Connection</b> in "
+"<b>CANVAS</b> mode.<br>The connection target will be host <b>%4</b> on port "
+"<b>%5</b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> demande une <b>Connexion Direct au Client (DCC)</b> en "
+"mode <b>CANVAS</b>.<br>La connexion aura pour cible la machine <b>%4</b> sur "
+"le port <b>%5</b>.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:417
+msgid "DCC CANVAS request"
+msgstr "Requête DCC CANVAS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:502
+msgid ""
+"<b>%1 [%2@%3]</b> wants to send you the file '<b>%4</b>', <b>%5</b> large."
+"<br>The connection target will be host <b>%6</b> on port <b>%7</b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> veut vous envoyer le fichier '<b>%4</b>', de <b>%5</b> "
+"octets.<br>La connexion aura pour cible la machine <b>%6</b> sur le port <b>%"
+"7</b>.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:515
+msgid ""
+"<b>%1 [%2@%3]</b> wants to send you the file '<b>%4</b>', <b>%5</b> large."
+"<br>You will be the passive side of the connection.<br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> veut vous envoyer le fichier '<b>%4</b>', de <b>%5</b> "
+"octets.<br>Vous serez l'extrémité passive de la connexion.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:528
+msgid ""
+"<center><b>Note:</b></center>The file appears to be an avatar that you have "
+"requested. You should not change its filename. Save it in a location where "
+"KVIrc can find it, such as the 'avatars', 'incoming', or 'pics' directories, "
+"your home directory, or the save directory for the incoming file type. The "
+"default save path will probably work. You can instruct KVIrc to accept "
+"incoming avatars automatically by setting the option "
+"<tt>boolAutoAcceptIncomingAvatars</tt> to true.<br>"
+msgstr ""
+"<center><b>Note :</b></center>Le fichier semble être un avatar que vous avez "
+"demandé. Vous ne devez pas changer son nom. Sauvegardez-le dans un endroit "
+"où KVIrc peut le trouver, tels que les répertoires 'avatars', 'incoming', ou "
+"'pics', votre répertoire personnel, ou le répertoire de sauvegarde des "
+"fichiers entrants. Le chemin de sauvegarde par défaut devrait probablement "
+"fonctionner. Vous pouvez faire en sorte que KVIrc accepte automatiquement "
+"les avatars en mettant l'option <tt>boolAutoAcceptIncomingAvatars</tt> à "
+"vrai (1).<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:557
+msgid "Auto-accepting DCC %Q request from %Q!%Q@%Q for file %Q"
+msgstr ""
+"Acceptation automatique de la requête DCC %Q de %Q!%Q@%Q pour le fichier %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:618
+msgid "Choose Files to Save - KVIrc"
+msgstr "Choisir Fichiers à Enregistrer - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:631
+msgid "Auto-saving DCC %Q file %Q as \r![!dbl]play $0\r%Q\r"
+msgstr ""
+"Sauvegarde automatique le fichier de DCC %Q %Q en \r![!dbl]play $0\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:665
+msgid ""
+"The file '<b>%1</b>' already exists and is <b>%2</b> large.<br>Do you wish "
+"to<br><b>overwrite</b> the existing file,<br> <b>auto-rename</b> the new "
+"file, or<br><b>resume</b> an incomplete download?"
+msgstr ""
+"Le fichier '<b>%1</b>' existe déjà et a une taille de <b>%2</b> octets."
+"<br>Désirez-vous <br><b>écraser</b> le fichier existant,<br> <b>renommer "
+"automatiquement</b> le nouveau fichier, ou<br><b>reprendre</b> un "
+"téléchargement incomplet ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:677
+msgid ""
+"The file '<b>%1</b>' already existsand is larger than the offered one.<br>Do "
+"you wish to<br><b>overwrite</b> the existing file, or<br> <b>auto-rename</b> "
+"the new file ?"
+msgstr ""
+"Le fichier '<b>%1</b>' existe déjà et a une taille plus grande que celle du "
+"fichier offert.<br>Désirez-vous <br><b>écrire par dessus</b> le fichier "
+"existant,<br> <b>renommer automatiquement</b> le nouveau fichier ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:747
+msgid "File %s exists, auto-renaming to %Q"
+msgstr "Le fichier %s existe déjà, renommage automatique en %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:158
+#, c-format
+msgid "Attempting a passive DCC %s connection"
+msgstr "Tentative de connexion DCC %s passive"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:168
+#, c-format
+msgid "Attempting an active DCC %s connection"
+msgstr "Tentative de connexion DCC %s active"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:761
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:107
+msgid "Contacting host %Q on port %Q"
+msgstr "Contact de la machine %Q sur le port %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:83
+msgid "Listening on interface %Q port %Q"
+msgstr "Écoute de l'interface %Q port %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:207
+#, c-format
+msgid "The local IP address is private, determining from IRC server: %s"
+msgstr "L'adresse IP locale est privée, récupération par le serveur IRC : %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1512
+msgid ""
+"The local IP address is private, but unable to determine it from the IRC "
+"server"
+msgstr ""
+"L'adresse IP locale est privée, et il n'a pas été possible de la récupérée "
+"par le serveur IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1515
+msgid ""
+"The local IP address is private, but have no IRC server to determine it from"
+msgstr ""
+"L'adresse IP locale est privée, et il n'y a aucun serveur IRC pour la "
+"récupérer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:234
+msgid "Sent DCC %Q request to %Q, waiting for the remote client to connect..."
+msgstr "Requête DCC %Q envoyée à %Q, attente de connexion du client distant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:237
+msgid "DCC %Q request not sent, awaiting manual connection"
+msgstr ""
+"La requête DCC %Q n'a pas été envoyée, attente d'une connexion manuelle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1574
+msgid "Low-level transport connection established"
+msgstr "Connexion établie avec un transport de bas niveau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1575
+msgid "Starting Secure Socket Layer handshake"
+msgstr "Démarrage du protocole de couche de connexion sécurisée (SSL)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:254
+#, c-format
+msgid "[SSL ERROR]: %s"
+msgstr "[ERREUR SSL] : %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:388
+msgid "Cannot send data: No active connection"
+msgstr "Impossible d'envoyer les données : aucune connexion active"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:344
+msgid ""
+"The crypto engine was not able to encrypt the current message (%Q): %Q, no "
+"data was sent to the remote end"
+msgstr ""
+"La moteur de cryto n'a pas été capable de crypter le message courant (%Q) : %"
+"Q, aucune donnée n'a été envoyée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:403
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:827
+msgid "ERROR: %Q"
+msgstr "ERREUR : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:447
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+"Le message suivant semble être crypté, mais le moteur de cryptagen'a pu le "
+"décoder : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:493
+msgid "DCC %Q failed: %Q"
+msgstr "Le DCC %Q a échoué : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:521
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:919
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:282
+msgid "Connected to %Q:%Q"
+msgstr "Connecté à %Q %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:523
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:921
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:284
+msgid "Local end is %Q:%Q"
+msgstr "L'extrémité locale est %Q :%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:164
+msgid ""
+"WARNING: failed to check the soundcard duplex capabilities: if this is a "
+"half-duplex soundcard , use the DCC VOICE option to force half-duplex "
+"algorithm"
+msgstr ""
+"ATTENTION : il n'a pas été possible de vérifier les possibilité de duplex de "
+"la carte son : s'il s'agit d'une carte semi-duplex, utilisez l'option de DCC "
+"VOICE permettant de forcer l'utilisation de l'algorithme semi-duplex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:172
+msgid ""
+"Half duplex soundcard detected, you will not be able to talk and listen at "
+"the same time"
+msgstr ""
+"Carte semi-duplex déctectée, vous n'allez pas pouvoir parler et écouter en "
+"même temps"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:213
+#, c-format
+msgid ""
+"WARNING: failed to set the requested sample rate (%d): the device used "
+"closest match (%d)"
+msgstr ""
+"ATTENTION : il n'a pas été possible de choisir le taux d'échantillonage "
+"demandé (%d) : le périphérique a choisi celui qui s'en rapproche le plus (%d)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:271
+msgid "Ops...failed to test the soundcard capabilities...expect problems..."
+msgstr ""
+"Ouch... impossible de tester la capacités de la carte son... il faut "
+"s'attendre à des problèmes..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:662
+msgid "Input buffer"
+msgstr "Tampon d'entrée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:664
+msgid "Output buffer"
+msgstr "Tampon de sortie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:746
+msgid "Attempting a passive DCC VOICE connection"
+msgstr "Tentative d'une connexion DCC VOICE passive"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:751
+msgid "Attempting an active DCC VOICE connection"
+msgstr "Tentative d'une connexion DCC VOICE active"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:779
+msgid ""
+"Sent DCC VOICE (%s) request to %Q, waiting for the remote client to "
+"connect..."
+msgstr ""
+"Requête DCC VOICE (%s) envoyée à %Q, attente de connexion du client "
+"distant..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:781
+msgid "DCC VOICE request not sent: awaiting manual connections"
+msgstr ""
+"La requête DCC VOICE n'a pas été envoyée : attente d'une connexion manuelle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:885
+#, c-format
+msgid "Input buffer: %d bytes"
+msgstr "Tampon d'entrée : %d octets"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:887
+#, c-format
+msgid "Output buffer: %d bytes"
+msgstr "Tampon de sortie : %d octets"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:910
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:277
+msgid "DCC Failed: %Q"
+msgstr "Le DCC a échoué : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:939
+#, c-format
+msgid "Actual codec used is '%s'"
+msgstr "Le codec actuellement utilisé est '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:1023
+#, c-format
+msgid "Volume: %i"
+msgstr "Volume : %i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:91
+msgid ""
+"This window has no associated IRC context (an IRC context is required unless "
+"-c or -n are passed)"
+msgstr ""
+"Cette fenêtre n'a pas de contexte IRC associé (un contexte IRC est "
+"nécessaire sauf si les options -c ou -n ont été passées)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:104
+msgid ""
+"You're not connected to a server (an active connection is required unless -c "
+"or -n are passed)"
+msgstr ""
+"Vous n 'êtes pas connecté à un serveur (une connexion active est nécessaire "
+"sauf si les options -c ou -n ont été passée)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:129
+msgid "Unable to get address of interface %Q"
+msgstr "Impossible de récupérer l'adresse de l'interface %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:139
+msgid "No suitable interfaces to listen on, use -i"
+msgstr "Aucune interface valable à écouter, utilisez -i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:172
+msgid "This executable was built without SSL support, -s switch ignored"
+msgstr ""
+"Cet exécutable n'a pas été construit avec le support SSL, l'option -s est "
+"ignorée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:657
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1159
+msgid "-c requires -i and -p"
+msgstr "-c nécessite -i et -p"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:634
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:730
+msgid "<unknown size>"
+msgstr "<taille inconnue>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:890
+msgid "This executable has been built without SSL support, -s switch ignored"
+msgstr ""
+"Cet exécutable n'a pas été construit avec le support SSL, l'option -s est "
+"ignorée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:960
+msgid "This executable has no SSL support, -s switch ignored"
+msgstr "Cet exécutable ne supporte pas SSL, l'option -s est ignorée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1114
+msgid "DCC VOICE support not enabled at compilation time"
+msgstr "Le support du DCC VOICE n'a pas été activé à la compilation"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1132
+msgid "Invalid sample rate specified, defaulting to 8000"
+msgstr ""
+"Le taux d'échantillonage spécifié est invalide, la valeur par défaut de 8000 "
+"est choisie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1148
+msgid "Invalid codec specified, defaulting to 'adpcm'"
+msgstr "Le codec spécifié est invalide, celui par défaut 'adpcm' est choisi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1577
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2542
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2562
+msgid "The current window has no associated DCC session"
+msgstr "La fenêtre courante n'a pas de session DCC associée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1582
+msgid "The specified parameter is not a valid DCC identifier"
+msgstr "Le paramètre spécifié n'est pas un identifiant de DCC valide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1662
+msgid "This DCC session is not a DCC transfer session"
+msgstr "Cette session de DCC n'est pas une session de transfert DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2553
+msgid "The specified window identifier is not valid"
+msgstr "L'identifiant de fenêtre spécifié n'est pas valide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:260
+msgid "WARNING: The peer is sending garbage data past the end of the file"
+msgstr ""
+"ATTENTION : Réception de données supplémentaires après la fin du fichier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:261
+msgid ""
+"WARNING: Ignoring data past the declared end of file and closing the "
+"connection"
+msgstr "ATTENTION : On ignore ces données superflues et on ferme la connexion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:362
+msgid ""
+"Data transfer terminated, waiting 30 seconds for the peer to close the "
+"connection..."
+msgstr ""
+"Le transfert des données est terminé, on attend 30s secondes que "
+"l'utilisateur distant ferme la connexion..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:369
+msgid "Data transfer was terminated 30 seconds ago, closing the connection"
+msgstr ""
+"Le transfert des données a été terminé il y a 30s, on ferme la connexion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:600
+msgid "WARNING: Received data in a DCC TSEND, there should be no acknowledges"
+msgstr ""
+"ATTENTION : Données reçues via un DCC TSEND, il n'est pas sensé y avoir de "
+"confirmation"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:732
+#, c-format
+msgid "TRANSFER %d"
+msgstr "TRANSFERT %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:755
+msgid "Setting up the connection"
+msgstr "Établissement de la connexion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:814
+msgid "Attempting a passive DCC %1 connection"
+msgstr "Tentative de connexion DCC %1 passive"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:818
+msgid "Attempting an active DCC %1 connection"
+msgstr "Tentative de connexion DCC %1 active"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:844
+msgid "Sent DCC RESUME request to %1, waiting for ACCEPT"
+msgstr "Requête de DCC RESUME envoyée à %1, attente d'ACCEPT"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:914
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:925
+msgid "Aborted"
+msgstr "Avorté"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:924
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1603
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1678
+msgid "Transfer failed: "
+msgstr "Le transfert a échoué : "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:936
+msgid "Configure Bandwidth..."
+msgstr "Configurer bande passante..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:938
+msgid "Resend DCC"
+msgstr "Ré-envoyer DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:939
+msgid "Resend TDCC"
+msgstr "Ré-envoyer TDCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:940
+msgid "Resend RevDCC"
+msgstr "Ré-envoyer RevDCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:944
+msgid "Abort"
+msgstr "Avorter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1135
+msgid "From: "
+msgstr "Depuis :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1136
+msgid "To: "
+msgstr "À :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1246
+msgid "%1 of %2 (%3%)"
+msgstr "%1 octets sur %2 (%3%)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1250
+msgid "%1"
+msgstr "%1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1263
+msgid "Spd:"
+msgstr "Vit. :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1278
+msgid "Avg:"
+msgstr "Moy. :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1349
+msgid "Transfer Log"
+msgstr "Journal de transfert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1480
+msgid "Contacting host %1 on port %2"
+msgstr "Contact de la machine %1 sur le port %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1487
+msgid "Listening on interface %1 port %2"
+msgstr "Écoute de l'interface %1 port %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1510
+msgid "The local IP address is private, determining from IRC server: %1"
+msgstr "L'adresse IP locale est privée, récupération par le serveur IRC : %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1561
+msgid "Sent DCC %1 request to %2, waiting for remote client to connect..."
+msgstr ""
+"Requête DCC %1 envoyée à %2, attente de la connexion du client distant..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1563
+msgid "DCC %1 request not sent, awaiting manual connection"
+msgstr "Requête DCC %1 n'a pas été envoyée, attente d'une connexion manuelle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1582
+msgid "[SSL ERROR]: %1"
+msgstr "[ERREUR SSL] : %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1625
+msgid "DCC %s transfer with %Q@%Q:%Q completed: \r![!dbl]play $0\r%s\r"
+msgstr "Le transfert DCC %s avec %Q@%Q:%Q est terminé : \r![!dbl]play $0\r%s\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1640
+msgid "Transfer completed"
+msgstr "Transfert terminé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1687
+msgid "Connected to %1:%2"
+msgstr "Connecté à %1 :%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1688
+msgid "Local end is %1:%2"
+msgstr "L'extrémité locale est %1 :%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1732
+msgid "Transferring data"
+msgstr "Transfert des données"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1758
+msgid "RESUME accepted, transfer will begin at position %1"
+msgstr "RESUME accepté, le transfert va débuter à la position %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1789
+msgid "Internal error in RESUME request"
+msgstr "Erreur interne lors de la requête de RESUME"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1794
+msgid "Invalid RESUME request: Position %1 is larger than file size"
+msgstr ""
+"Requête de RESUME invalide : la position %1 est plus grande que la taille du "
+"fichier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1798
+msgid "Accepting RESUME request, transfer will begin at position %1"
+msgstr ""
+"Acceptation de la requête de RESUME, le transfert va débuter à la position %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1830
+msgid "Configure bandwidth for DCC transfer %1"
+msgstr "Configuration de la bande passante pour le transfert DCC %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1833
+msgid "Limit upload bandwidth to"
+msgstr "Limiter la bande passante d'envoi à"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1833
+msgid "Limit download bandwidth to"
+msgstr "Limiter la bande passante de réception à"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1846
+msgid "bytes/sec"
+msgstr "octets/sec"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1850
+msgid "OK"
+msgstr "Valider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:142
+msgid "Cancel"
+msgstr "Annuler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:78
+msgid "Attempting a passive DCC CANVAS connection"
+msgstr "Tentative de connexion DCC CANVAS passive"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:98
+msgid ""
+"Sent DCC CANVAS request to %Q, waiting for the remote client to connect..."
+msgstr ""
+"Requête DCC CANVAS envoyée à %Q, attente de connexion du client distant..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:100
+msgid "DCC CANVAS request not sent: awaiting manual connections"
+msgstr ""
+"La requête DCC CANVAS n'a pas été envoyée : attente de connexions manuelles"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:104
+msgid "Attempting an active DCC CANVAS connection"
+msgstr "Tentative de connexion DCC CANVAS active"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1563
+msgid "&Line"
+msgstr "&Ligne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1564
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1572
+msgid "&Rectangle"
+msgstr "&Rectangle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1565
+msgid "&Ellipse"
+msgstr "&Ellipse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1566
+msgid "&Pie"
+msgstr "&Courbe fermée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1567
+msgid "&Chord"
+msgstr "&Courbe ouverte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1569
+msgid "&Rich text (html)"
+msgstr "Texte &riche (html)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1571
+msgid "&Triangle"
+msgstr "&Triangle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1573
+msgid "&Pentagon"
+msgstr "&Pentagone"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1574
+msgid "&Hexagon"
+msgstr "&Hexagone"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1576
+msgid "&Shape"
+msgstr "&Forme"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1577
+msgid "&Item"
+msgstr "Élé&ment"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1578
+msgid "&Polygons"
+msgstr "&Polygones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1580
+msgid "&Insert"
+msgstr "&Insérer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:77
+msgid "Unable to process the above request: %Q, %Q"
+msgstr "Impossible d'exécuter la requête ci-dessus : %Q, %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:79
+msgid "Ignoring and notifying failure"
+msgstr "On ignore et informe du problème"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:79
+msgid "Ignoring"
+msgstr "On ignore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:95
+#, c-format
+msgid "Concurrent transfer limit reached (%u of %u transfers running)"
+msgstr ""
+"Nombre limite de transferts simultanés atteint (%u transferts en cours sur %"
+"u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:111
+#, c-format
+msgid "Slot limit reached (%u slots of %u)"
+msgstr "Nombre maximal de connecteurs atteint (%u connecteurs sur %u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:120
+msgid "Too many pending connections"
+msgstr "Trop de connexions en attente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:156
+#, c-format
+msgid "Invalid port number %s"
+msgstr "Port invalide : %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:172
+#, c-format
+msgid "Invalid IP address in old format %s"
+msgstr "Adresse IP en ancien format invalide : %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:191
+#, c-format
+msgid "Invalid IP address %s"
+msgstr "Adresse IP invalide : %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:258
+#, c-format
+msgid ""
+"The above request is broken: The second parameter is '%s' and should be "
+"'chat', trying to continue"
+msgstr ""
+"La requête ci-dessus est cassée : le second paramètre est '%s' et devrait "
+"être 'chat', on essaie de poursuivre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:270
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC CHAT is not available"
+msgstr ""
+"Cet exécutable n'a pas été compilé avec le support SSL, l'extension SSL du "
+"DCC CHAT n'est donc pas disponible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:321
+msgid ""
+"The above request is broken: it looks like a zero port tag acknowledge but I "
+"have either never seen this tag or it was sent more than 120 seconds ago"
+msgstr ""
+"La requête ci-dessus est brisée : il semble qu'une étiquette à port nul est "
+"utilisée pour la confirmation de réception mais je n'ai jamais vu passé "
+"étiquette ou celle-ci a été envoyée il y a plus de 120 secondes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:322
+msgid "It seems that I haven't requested this dcc chat"
+msgstr "Il semble que je n'ai jamais demandé ce dcc chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:442
+msgid ""
+"The above request is broken: The fourth parameter should be the file size "
+"but does not appear to be an unsigned number, trying to continue"
+msgstr ""
+"La requête ci-dessus est brisée : le quatrième paramètre doit être la taille "
+"du fichier, mais il semble que ce ne soit pas un nombre positif, on essaie "
+"de poursuivre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:600
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:738
+msgid ""
+"The above request is broken: The filename contains path components, "
+"stripping the leading path and trying to continue"
+msgstr ""
+"La requête ci-dessus est brisée : le fichier contient éléments de chemin, on "
+"supprime la partie répertoire et on essaie de poursuivre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:466
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC SEND is not available"
+msgstr ""
+"Cet exécutable n'a pas été compilé avec le support SSL, l'extension SSL du "
+"DCC SEND n'est donc pas disponible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:528
+#, c-format
+msgid ""
+"Can't proceed with DCC RECV: Transfer not initiated for file %s on port %s"
+msgstr ""
+"Impossible de procéder au DCC RECV : transfert non initialisé pour le "
+"fichier %s sur le port %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:553
+#, c-format
+msgid "Invalid resume position argument '%s'"
+msgstr "Argument de position de reprise invalide '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:565
+#, c-format
+msgid ""
+"Can't proceed with DCC SEND: Transfer not initiated for file %s on port %s, "
+"or invalid resume size"
+msgstr ""
+"Impossible de procéder au DCC SEND : le transfert n'a pas été initialiser "
+"pour le fichier %s sur le port %s, ou taille de reprise invalide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:590
+msgid ""
+"The above request has resume file size missing, assuming a resume file size "
+"of 0"
+msgstr ""
+"La requête ci-dessus n'a pas de fichier de reprise, on suppose que la taille "
+"de ce dernier est nulle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:614
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC RECV is not available"
+msgstr ""
+"Cet exécutable n'a pas été compilé avec le support SSL, l'extension SSL du "
+"DCC RECV n'est donc pas disponible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:629
+#, c-format
+msgid "Invalid RECV request: Position %u is is larger than file size"
+msgstr ""
+"Requête de DCC RECV invalide : la position %u est plus grande que la taille "
+"du fichier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:683
+msgid "%Q [%Q@%Q] is ready to receive the file \"%s\""
+msgstr "%Q [%Q@%Q] est prêt à recevoir le fichier \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:689
+#, c-format
+msgid "The remote client is listening on interface %s and port %s"
+msgstr "Le client distant écoute sur l'interface %s et le port %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:696
+msgid ""
+"Use %c\r![!dbl]dcc.send %s -i=%s -p=%s %Q\r/dcc.send %s -i=%s -p=%s %Q\r%c "
+"to send the file (or double-click on the socket)"
+msgstr ""
+"Utilisez %c\r![!dbl]dcc.send %s -i=%s -p=%s %Q\r/dcc.send %s -i=%s -p=%s %Q\r"
+"%c pour envoyer le fichier (ou double-cliquez sur le lien)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:728
+msgid ""
+"The above request is broken: The fourth parameter should be the file size "
+"but does not appear to be an unsigned number; trying to continue"
+msgstr ""
+"La requête ci-dessus est brisée : le quatrième paramètre doit être la taille "
+"du fichier, mais il semble que ce ne soit pas un nombre positif, on essaie "
+"de poursuivre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:752
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC RSEND is not available"
+msgstr ""
+"Cet exécutable n'a pas été compilé avec le support SSL, l'extension SSL du "
+"DCC RSEND n'est donc pas disponible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:763
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:932
+msgid "(unknown)"
+msgstr "(inconnue)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:918
+msgid "No suitable interface to listen on, trying to continue anyway..."
+msgstr "Aucune interface valide à écouter, on essaie de poursuivre..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:835
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC GET is not available"
+msgstr ""
+"Cet exécutable n'a pas été compilé avec le support SSL, l'extension SSL du "
+"DCC GET n'est donc pas disponible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:846
+msgid "No file offer named '%s' (with size %s) available for %Q [%Q@%Q]"
+msgstr ""
+"Aucune offre nommée '%s' (de taille %s) n'est disponible pour %Q [%Q@%Q]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:847
+msgid "\"any\""
+msgstr "\"tous\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:891
+msgid ""
+"Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering "
+"DCC %s since we can't accept incoming connections (user option)"
+msgstr ""
+"Acceptation de la demande de fichier de %Q [%Q@%Q] pour '%s' (fichier réel : "
+"%Q), offre de DCC %s car on ne peut accepter les connexions entrantes "
+"(option utilisateur)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:948
+msgid ""
+"Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering "
+"DCC %Q"
+msgstr ""
+"Acceptation de la demande de fichier de %Q [%Q@%Q] pour '%s' (fichier réel : "
+"%Q), offre de DCC %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:982
+msgid ""
+"The above request cannot be accepted: DCC VOICE support not enabled at "
+"compilation time "
+msgstr ""
+"La requête ci-dessus ne peut être acceptée : le support du DCC VOICE n'a pas "
+"été activé à la compilation"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:992
+#, c-format
+msgid "The above request cannot be accepted: Unsupported codec '%s'"
+msgstr "La requête ci-dessus ne peut être acceptée : codec '%s' non supporté"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:1005
+#, c-format
+msgid ""
+"The above request appears to be broken: Invalid sample-rate '%s', defaulting "
+"to 8000"
+msgstr ""
+"La requête ci-dessus semble cassée : taux d'échantillonage '%s' invalide, "
+"utilisation de celui par défaut 8000"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:1151
+#, c-format
+msgid "Unknown DCC type '%s'"
+msgstr "Type de DCC '%s' inconnu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:64
+msgid "&Accept"
+msgstr "&Accepter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:69
+msgid "&Reject"
+msgstr "&Rejeter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:129
+msgid "&Rename"
+msgstr "&Renommer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:133
+msgid "Over&write"
+msgstr "Écrire par &Dessus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:137
+msgid "Re&sume"
+msgstr "Re&prendre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:149
+msgid "File Already Exists - KVIrc"
+msgstr "Fichier Déjà Existant - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/utils.cpp:122
+msgid "Can't retrieve a suitable local IPV4 address"
+msgstr "Impossible de récupérer une adresse IPV4 locale viable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/utils.cpp:140
+#, c-format
+msgid ""
+"Can't listen on default interface '%s': fix it in the options dialog, "
+"disabling the option (so the next dcc will work)"
+msgstr ""
+"Écoute de l'interface par défaut '%s' : réglez cela dans fenêtre de réglage "
+"des options, en désactivant cette option (ainsi le prochain dcc fonctionera)"
diff --git a/po/modules/dcc/dcc_hu.po b/po/modules/dcc/dcc_hu.po
new file mode 100644
index 00000000..cd395402
--- /dev/null
+++ b/po/modules/dcc/dcc_hu.po
@@ -0,0 +1,992 @@
+# translation of dcc_hu.po to hungarian
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Ádám Fibinger <[email protected]>, 2006, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: dcc_hu\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-10-27 23:04+0200\n"
+"Last-Translator: Ádám Fibinger <[email protected]>\n"
+"Language-Team: hungarian <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/descriptor.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:642
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:666
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:803
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:805
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:484
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:514
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:136
+msgid "unknown"
+msgstr "ismertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:783
+msgid "Choose Files to Send - KVIrc"
+msgstr "Küldendő Fájl Kiválaszása - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:189
+msgid "Can't send DCC %Q request to %Q: IRC connection has been terminated"
+msgstr "Nem lehet DCC %Q kérést küldeni %Q: felé, IRC kapcsolat megszakadt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:821
+msgid "Can't open file %Q for reading"
+msgstr "Nem lehet megnyitni %Q fájlt olvasásra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:269
+msgid ""
+"<b>%1 [%2@%3]</b> requests a <b>Direct Client Connection</b> in <b>%4</b> "
+"mode.<br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> kérte <b>Közvetlen Kliens Kapcsolat (DCC) létrehozását %4 "
+"</b>módban</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:274
+msgid "The connection will be secured using SSL.<br>"
+msgstr "A kapcsolat titkosítva SSL segítségével.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:280
+msgid "You will be the passive side of the connection.<br>"
+msgstr "Te leszel a passzív oldal a kapcsolatban.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:284
+msgid "The connection target will be host <b>%1</b> on port <b>%2</b><br>"
+msgstr "A kapcsolat célja: <b>%1</b> <b>%2</b> porton keresztül <br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:543
+msgid "DCC %1 Request - KVIrc"
+msgstr "DCC %1 Kérés - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:340
+msgid ""
+"<b>%1 [%2@%3]</b> requests a<br><b>Direct Client Connection</b> in <b>VOICE</"
+"b> mode.<br>The connection target will be host <b>%4</b> on port <b>%5</"
+"b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> kérte <br><b>DCC kapcsolat létrehozását</b>VOICE "
+"módban<b></b><br>A kapcsolat célja: <b>%4</b> címen <b>%5</b>porton "
+"keresztül történne.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:346
+msgid "DCC VOICE request"
+msgstr "DCC VOICE (hang) kérés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:411
+msgid ""
+"<b>%1 [%2@%3]</b> requests a<br><b>Direct Client Connection</b> in "
+"<b>CANVAS</b> mode.<br>The connection target will be host <b>%4</b> on port "
+"<b>%5</b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> kérte <br><b>DCC kapcsolat létrehozását</b> <b>CANVAS "
+"(vászon)</b> módban.<br>A kapcsolat célja:<b>%4</b> címen <b>%5</b> porton "
+"keresztül történne<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:417
+msgid "DCC CANVAS request"
+msgstr "DCC CANVAS (vászon) kérés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:502
+msgid ""
+"<b>%1 [%2@%3]</b> wants to send you the file '<b>%4</b>', <b>%5</b> large."
+"<br>The connection target will be host <b>%6</b> on port <b>%7</b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> küldeni akar egy fájlt neked:'<b>%4</b>', ami <b>%5</b>."
+"<br>A kapcsolat célja a <b>%6</b> a <b>%7</b> porton.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:515
+msgid ""
+"<b>%1 [%2@%3]</b> wants to send you the file '<b>%4</b>', <b>%5</b> large."
+"<br>You will be the passive side of the connection.<br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> küldeni akar egy fájlt neked:'<b>%4</b>', ami <b>%5</b>."
+"<br>Te lennél a passzív a kapcsolaton belül.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:528
+msgid ""
+"<center><b>Note:</b></center>The file appears to be an avatar that you have "
+"requested. You should not change its filename. Save it in a location where "
+"KVIrc can find it, such as the 'avatars', 'incoming', or 'pics' directories, "
+"your home directory, or the save directory for the incoming file type. The "
+"default save path will probably work. You can instruct KVIrc to accept "
+"incoming avatars automatically by setting the option "
+"<tt>boolAutoAcceptIncomingAvatars</tt> to true.<br>"
+msgstr ""
+"<center><b>Megjegyzés:</b></center>A fájl látszólag egy avatar, amit te "
+"kértél. A fájl nevét nem szabad megváltoztatnod. Ments ezt oda, ahol a KVIrc "
+"megtalálja, mint pédául az 'avatarok', 'bejövő' vagy 'képek' könyvtárakbaa "
+"saját könyvtáradba, vagy mentsd a letöltések könyvtárba a bejövő fájlokhoz."
+"Az alapértelmezett mentési könyvtár valószínűleg megfelelő. Tudod utasítani "
+"a KVIrcet, hogy elfogadja és elhelyezze a bejövő avatarokat, automatikusan "
+"a /<tt>boolAutoAcceptIncomingAvatars</tt> true -ra állításával.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:557
+msgid "Auto-accepting DCC %Q request from %Q!%Q@%Q for file %Q"
+msgstr "Automatikus DCC fogadás %Q kérésre %Q!%Q@%Q -tól/től %Q fájlra."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:618
+msgid "Choose Files to Save - KVIrc"
+msgstr "Fájlnév megadása mentéshez - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:631
+msgid "Auto-saving DCC %Q file %Q as \r![!dbl]play $0\r%Q\r"
+msgstr "Automatikus DCC mentés: Fájl: %Q %Q mint: \r![!dbl]play $0\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:665
+msgid ""
+"The file '<b>%1</b>' already exists and is <b>%2</b> large.<br>Do you wish "
+"to<br><b>overwrite</b> the existing file,<br> <b>auto-rename</b> the new "
+"file, or<br><b>resume</b> an incomplete download?"
+msgstr ""
+"A fájl '<b>%1</b>' már létezik, és <b>%2</b>.<br>Szeretnéd <br><b>felülírni</"
+"b> a létező fájlt,<br> <b>automatikusan átnevezni</b> az új fájlt, "
+"vagy<br><b>folytatni</b> egy befejezetlen letöltést?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:677
+msgid ""
+"The file '<b>%1</b>' already existsand is larger than the offered one.<br>Do "
+"you wish to<br><b>overwrite</b> the existing file, or<br> <b>auto-rename</b> "
+"the new file ?"
+msgstr ""
+"A fájl'<b>%1</b>' már létezik és nagyobb, mint a felajánlott.<br>Szeretnéd "
+"<br><b>felülírni</b> a már létezőt, vagy<br> <b>automatikusan átnevezni</b> "
+"az új fájlt?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:747
+msgid "File %s exists, auto-renaming to %Q"
+msgstr "Fájl: %s létezik, automatikus átnevezés: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:158
+#, c-format
+msgid "Attempting a passive DCC %s connection"
+msgstr "Próbálkozás passzív DCC %s kapcsolat létrehozására"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:168
+#, c-format
+msgid "Attempting an active DCC %s connection"
+msgstr "Próbálkozás aktív DCC %s kapcsolat létrehozására"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:761
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:107
+msgid "Contacting host %Q on port %Q"
+msgstr "Kapcsolódás %Q -ra/re %Q porton keresztül"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:83
+msgid "Listening on interface %Q port %Q"
+msgstr "Hallgatózás %Q eszközön, %Q porton"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:207
+#, c-format
+msgid "The local IP address is private, determining from IRC server: %s"
+msgstr "A helyi IP magáncím, meghatározás az IRC-szerver által: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1512
+msgid ""
+"The local IP address is private, but unable to determine it from the IRC "
+"server"
+msgstr "A helyi IP privát cím, de az IRC szerver által nem lehet meghatározni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1515
+msgid ""
+"The local IP address is private, but have no IRC server to determine it from"
+msgstr "A helyi IP cím privát, de nincs IRC szerver, ami meghatározná"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:234
+msgid "Sent DCC %Q request to %Q, waiting for the remote client to connect..."
+msgstr ""
+"DCC %Q kérés elküldve %Q -nak/nek, várakozás a távoli kliens "
+"kapcsolódására..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:237
+msgid "DCC %Q request not sent, awaiting manual connection"
+msgstr "DCC %Q kérés küldése sikertelen, manuális kapcsolat szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1574
+msgid "Low-level transport connection established"
+msgstr "Alacsony szintű adatátviteli kapcsolat létrejött"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1575
+msgid "Starting Secure Socket Layer handshake"
+msgstr "SSL kézfogás megkezdése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:254
+#, c-format
+msgid "[SSL ERROR]: %s"
+msgstr "[SSL HIBA]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:388
+msgid "Cannot send data: No active connection"
+msgstr "Nem lehet adatot küldeni: Nincs aktív kapcsolat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:344
+msgid ""
+"The crypto engine was not able to encrypt the current message (%Q): %Q, no "
+"data was sent to the remote end"
+msgstr ""
+"A titkosító motor nem képes titkosítani az aktuális üzenetet (%Q): %Q, adat "
+"nem lett elküldve."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:403
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:827
+msgid "ERROR: %Q"
+msgstr "HIBA: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:447
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+"A következő üzenet valószínűleg titkosított, de a titkosító motor nem tudja "
+"visszafejteni: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:493
+msgid "DCC %Q failed: %Q"
+msgstr "DCC %Q sikertelen: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:521
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:919
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:282
+msgid "Connected to %Q:%Q"
+msgstr "Kapcsolódva %Q:%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:523
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:921
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:284
+msgid "Local end is %Q:%Q"
+msgstr "Local end is %Q:%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:164
+msgid ""
+"WARNING: failed to check the soundcard duplex capabilities: if this is a "
+"half-duplex soundcard , use the DCC VOICE option to force half-duplex "
+"algorithm"
+msgstr ""
+"FIGYELMEZTETÉS: a hangkártya sikertelen ellenőrzése full-duplex "
+"meghatározásnál: ha ez a kártya half-duplex hangkártya, használd a DCC VOICE "
+"opciót kényszerített half-duplex algoritmussal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:172
+msgid ""
+"Half duplex soundcard detected, you will not be able to talk and listen at "
+"the same time"
+msgstr ""
+"Half duplex hangkártya detektálva, nem tudsz majd egyidőben beszélni és "
+"hallgatni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:213
+#, c-format
+msgid ""
+"WARNING: failed to set the requested sample rate (%d): the device used "
+"closest match (%d)"
+msgstr ""
+"FIGYELMEZTETÉS: a kért mintavételi-korrekció érvénytelen: (%d): a "
+"legközelebbi egyezés: %d, ezt használom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:271
+msgid "Ops...failed to test the soundcard capabilities...expect problems..."
+msgstr ""
+"Hoppá, hangkártya képességeinek tesztelése sikertelen... várhatóak "
+"problémák..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:662
+msgid "Input buffer"
+msgstr "Beviteli puffer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:664
+msgid "Output buffer"
+msgstr "Kimeneti puffer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:746
+msgid "Attempting a passive DCC VOICE connection"
+msgstr "Passzív DCC VOICE kapcsolat létrehozása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:751
+msgid "Attempting an active DCC VOICE connection"
+msgstr "Aktív DCC VOICE kapcsolat létrehozása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:779
+msgid ""
+"Sent DCC VOICE (%s) request to %Q, waiting for the remote client to "
+"connect..."
+msgstr ""
+"DCC VOICE kérés (%s) elküldve %Q felé, várakozás a távoli kliens "
+"kapcsolódására.."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:781
+msgid "DCC VOICE request not sent: awaiting manual connections"
+msgstr "DCC VOICE kérés nem lett elküldve, várakozás manuális kapcsolódásra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:885
+#, c-format
+msgid "Input buffer: %d bytes"
+msgstr "Beviteli puffer: %d bájt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:887
+#, c-format
+msgid "Output buffer: %d bytes"
+msgstr "Kimeneti puffer: %d bájt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:910
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:277
+msgid "DCC Failed: %Q"
+msgstr "DCC Sikertelen %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:939
+#, c-format
+msgid "Actual codec used is '%s'"
+msgstr "Aktuális codec: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:1023
+#, c-format
+msgid "Volume: %i"
+msgstr "Hangerő: %i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:91
+msgid ""
+"This window has no associated IRC context (an IRC context is required unless "
+"-c or -n are passed)"
+msgstr ""
+"Az ablaknak nincs hozzárendelt IRC környezete (IRC környezet szükséges, "
+"kivéve -c vagy -n esetén)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:104
+msgid ""
+"You're not connected to a server (an active connection is required unless -c "
+"or -n are passed)"
+msgstr ""
+"Nem csatlakoztál a szerverhez, (aktív kapcsolat szükséges, vagy legalább -c "
+"vagy -n szükséges)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:129
+msgid "Unable to get address of interface %Q"
+msgstr "%Q eszköz címének meghatározása sikertleen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:139
+msgid "No suitable interfaces to listen on, use -i"
+msgstr "Nincs hallgatásra alkalmas eszköz, használd: -i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:172
+msgid "This executable was built without SSL support, -s switch ignored"
+msgstr "Ez a kiadás SSL támogatás nélkül lett lefordítva, -s kapcsoló mellőzve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:657
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1159
+msgid "-c requires -i and -p"
+msgstr "a '-c' igényli '-i' és '-p' -t"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:634
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:730
+msgid "<unknown size>"
+msgstr "<ismeretlen méret>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:890
+msgid "This executable has been built without SSL support, -s switch ignored"
+msgstr "Ez a kiadás SSL támogatás nélkül lesz lefordítva, -s kapcsoló mellőzve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:960
+msgid "This executable has no SSL support, -s switch ignored"
+msgstr "Ez SSL támogatás nélküli kiadás, '-s' kapcsoló mellőzve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1114
+msgid "DCC VOICE support not enabled at compilation time"
+msgstr "DCC VOICE nem volt engedélyezve fordításkor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1132
+msgid "Invalid sample rate specified, defaulting to 8000"
+msgstr "Helytelen meghatározott mintavételi ráta, váltás 8000-re"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1148
+msgid "Invalid codec specified, defaulting to 'adpcm'"
+msgstr "Helytelen kodek meghatározása, váltás 'adpcm'-re"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1577
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2542
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2562
+msgid "The current window has no associated DCC session"
+msgstr "Az aktuális ablaknak nincs hozzárendelt DCC 'session'-ja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1582
+msgid "The specified parameter is not a valid DCC identifier"
+msgstr "A megadott paraméterek nem érvényes DCC azonosítók"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1662
+msgid "This DCC session is not a DCC transfer session"
+msgstr "Ez a DCC kapcsolat nem DCC átviteli kapcsolat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2553
+msgid "The specified window identifier is not valid"
+msgstr "A megadott ablak azonosító nem érvényes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:260
+msgid "WARNING: The peer is sending garbage data past the end of the file"
+msgstr "FIGYELMEZTETÉS: A peer szemét adatot küldött a fájl végén"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:261
+msgid ""
+"WARNING: Ignoring data past the declared end of file and closing the "
+"connection"
+msgstr ""
+"FIGYELMEZTETÉS: Fájlvég után további bejövő adatok mellőzése, kapcsolat "
+"lezárása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:362
+msgid ""
+"Data transfer terminated, waiting 30 seconds for the peer to close the "
+"connection..."
+msgstr ""
+"Adatátvitel megszakítva, 30 másodperc várkozás a peerre, hogy zárja a "
+"kapcsolatot..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:369
+msgid "Data transfer was terminated 30 seconds ago, closing the connection"
+msgstr "Adatátvitel megszakítva 30 másodperce, kapcsolat zárása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:600
+msgid "WARNING: Received data in a DCC TSEND, there should be no acknowledges"
+msgstr ""
+"FIGYELMEZTETÉS: beérkező adat DCC TSEND-ként, nem kellene elismervénynek "
+"lennie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:732
+#, c-format
+msgid "TRANSFER %d"
+msgstr "ADATÁTVITEL: %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:755
+msgid "Setting up the connection"
+msgstr "Kapcsolat beállítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:814
+msgid "Attempting a passive DCC %1 connection"
+msgstr "Passzív DCC %1 kapcsolat létrehozása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:818
+msgid "Attempting an active DCC %1 connection"
+msgstr "Aktív DCC %1 kapcsolat létrehozása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:844
+msgid "Sent DCC RESUME request to %1, waiting for ACCEPT"
+msgstr "DCC RESUME elküldve, kérés %1 felé, várakozás Elfogadásra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:914
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:925
+msgid "Aborted"
+msgstr "Megszakítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:924
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1603
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1678
+msgid "Transfer failed: "
+msgstr "Adatátvitel megszakadt: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:936
+msgid "Configure Bandwidth..."
+msgstr "Sávszélesség beállítása..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:938
+msgid "Resend DCC"
+msgstr "DCC újraküldés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:939
+msgid "Resend TDCC"
+msgstr "TDCC újraküldés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:940
+msgid "Resend RevDCC"
+msgstr "RevDCC újraküldés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:944
+msgid "Abort"
+msgstr "Megszakítás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1135
+msgid "From: "
+msgstr "Feladó: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1136
+msgid "To: "
+msgstr "Címzett:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1246
+msgid "%1 of %2 (%3%)"
+msgstr "%2 van hátra %1 bájtból (%3%)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1250
+msgid "%1"
+msgstr "%1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1263
+msgid "Spd:"
+msgstr "Seb:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1278
+msgid "Avg:"
+msgstr "Átl:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1349
+msgid "Transfer Log"
+msgstr "Adatátviteli napló"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1480
+msgid "Contacting host %1 on port %2"
+msgstr "Kapcsolódás a %1 hosthoz %2 porton keresztül"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1487
+msgid "Listening on interface %1 port %2"
+msgstr "Hallgatózás %1 eszközön %2 porton keresztül"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1510
+msgid "The local IP address is private, determining from IRC server: %1"
+msgstr "A helyi IP magáncím, meghatárizás az IRC szerverrel: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1561
+msgid "Sent DCC %1 request to %2, waiting for remote client to connect..."
+msgstr ""
+"DCC %1 kérés küldése %2 felé, várakozás a távoli kliens kapcsolódására..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1563
+msgid "DCC %1 request not sent, awaiting manual connection"
+msgstr "DCC %1 kérés nem lett elküldve, manuális kapcsolódás szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1582
+msgid "[SSL ERROR]: %1"
+msgstr "[SSL HIBA]: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1625
+msgid "DCC %s transfer with %Q@%Q:%Q completed: \r![!dbl]play $0\r%s\r"
+msgstr "DCC %s adatátvitel %Q@%Q:%Q felől, kész: \r![!dbl]play $0\r%s\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1640
+msgid "Transfer completed"
+msgstr "Adatátvitel kész"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1687
+msgid "Connected to %1:%2"
+msgstr "Kapcsolódva %1:%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1688
+msgid "Local end is %1:%2"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1732
+msgid "Transferring data"
+msgstr "Adatátvitel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1758
+msgid "RESUME accepted, transfer will begin at position %1"
+msgstr "RESUME(folytatás) elfogadva, az átvitel %1 pozíciótól kezdődik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1789
+msgid "Internal error in RESUME request"
+msgstr "Belső hiba RESUME (folytatás) kérésnél"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1794
+msgid "Invalid RESUME request: Position %1 is larger than file size"
+msgstr ""
+"Helytelen RESUME (folytatás)kérés, %1 pozíció nagyobb, mint a fájl mérete"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1798
+msgid "Accepting RESUME request, transfer will begin at position %1"
+msgstr "Elfogadott RESUME (folytatás), adatátvitel %1 pozíciótól kezdődik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1830
+msgid "Configure bandwidth for DCC transfer %1"
+msgstr "Sávszélesség beállítása DCC %1 átvitelhez"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1833
+msgid "Limit upload bandwidth to"
+msgstr "Feltöltési sávszélesség korlátozása "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1833
+msgid "Limit download bandwidth to"
+msgstr "Letöltési sávszélesség korlátozása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1846
+msgid "bytes/sec"
+msgstr "bájt/másodperc "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1850
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:142
+msgid "Cancel"
+msgstr "Mégsem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:78
+msgid "Attempting a passive DCC CANVAS connection"
+msgstr "Próbálkozás: passzív DCC CANAVAS (vászon) kapcsolat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:98
+msgid ""
+"Sent DCC CANVAS request to %Q, waiting for the remote client to connect..."
+msgstr ""
+"Elküldött DCC CANVAS (vászon) kérés -> %Q, várakozás a távoli kliens "
+"kapcsolódására..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:100
+msgid "DCC CANVAS request not sent: awaiting manual connections"
+msgstr ""
+"DCC CANVAS (vászon) kérés nem lett elküldve, manuális csatlakozás szükséges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:104
+msgid "Attempting an active DCC CANVAS connection"
+msgstr "Próbálkozás aktív DCC CANAVAS (vászon) kapcsolat létrehozására"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1563
+msgid "&Line"
+msgstr "Vona&l"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1564
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1572
+msgid "&Rectangle"
+msgstr "Téglalap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1565
+msgid "&Ellipse"
+msgstr "Ellipszis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1566
+msgid "&Pie"
+msgstr "Pite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1567
+msgid "&Chord"
+msgstr "&Hurok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1569
+msgid "&Rich text (html)"
+msgstr "&Rich text (html)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1571
+msgid "&Triangle"
+msgstr "Háromszög"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1573
+msgid "&Pentagon"
+msgstr "Ötszög"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1574
+msgid "&Hexagon"
+msgstr "Hatszög"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1576
+msgid "&Shape"
+msgstr "Körvonal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1577
+msgid "&Item"
+msgstr "Elem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1578
+msgid "&Polygons"
+msgstr "Poligonok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1580
+msgid "&Insert"
+msgstr "Beszúr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:77
+msgid "Unable to process the above request: %Q, %Q"
+msgstr "Az alábbi folyamat teljesítése sikertelen: %Q, %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:79
+msgid "Ignoring and notifying failure"
+msgstr "Mellőző és értesítő hiba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:79
+msgid "Ignoring"
+msgstr "Mellőzés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:95
+#, c-format
+msgid "Concurrent transfer limit reached (%u of %u transfers running)"
+msgstr "Konkurens átviteli korlát elérve (%u -ból/ből %u átvitel fut)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:111
+#, c-format
+msgid "Slot limit reached (%u slots of %u)"
+msgstr "Slot korlát elérve (%u slot a %u -ból/ből)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:120
+msgid "Too many pending connections"
+msgstr "Túl sok függő kapcsolat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:156
+#, c-format
+msgid "Invalid port number %s"
+msgstr "Helytelen port szám %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:172
+#, c-format
+msgid "Invalid IP address in old format %s"
+msgstr "Érvénytelen IP cím, régi formátumban %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:191
+#, c-format
+msgid "Invalid IP address %s"
+msgstr "Helytelen IP adress %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:258
+#, c-format
+msgid ""
+"The above request is broken: The second parameter is '%s' and should be "
+"'chat', trying to continue"
+msgstr ""
+"Az alábbi kérés hibás. A második paraméter %s és ennek 'chat'-nek kellene "
+"lennie, megpróbálom folytatni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:270
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC CHAT is not available"
+msgstr ""
+"Ez a verzió SSL támogatás nélkül lett fordítva, az SSL kiterjesztés DCC CHAT-"
+"re nem elérhető"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:321
+msgid ""
+"The above request is broken: it looks like a zero port tag acknowledge but I "
+"have either never seen this tag or it was sent more than 120 seconds ago"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:322
+msgid "It seems that I haven't requested this dcc chat"
+msgstr "Látszólag nem kértem ezt a dcc beszélgetést"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:442
+msgid ""
+"The above request is broken: The fourth parameter should be the file size "
+"but does not appear to be an unsigned number, trying to continue"
+msgstr ""
+"Az alábbi kérés hibás. A negyedik paraméternek a fájl méretének kellene "
+"lennie, de ez nem úgy néz ki, mint egy előjel nélküli szám, megpróbálom "
+"folytatni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:600
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:738
+msgid ""
+"The above request is broken: The filename contains path components, "
+"stripping the leading path and trying to continue"
+msgstr ""
+"Az alábbi kérés hibás. A fájlnév tartalmaz elérési út elemeket, a fő rész "
+"kivágása, és folytatási próbálkozás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:466
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC SEND is not available"
+msgstr ""
+"Ez a verzió SSL támogatás nélkül lett fordítva, az SSL kiterjesztés DCC SEND-"
+"re nem elérhető"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:528
+#, c-format
+msgid ""
+"Can't proceed with DCC RECV: Transfer not initiated for file %s on port %s"
+msgstr ""
+"Sikertelen DCC RECV folyamat: Adatátvitel nincs inicializálva %s fájlnak, %s "
+"porton keresztül"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:553
+#, c-format
+msgid "Invalid resume position argument '%s'"
+msgstr "Helytelen folytatási kifejezés: '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:565
+#, c-format
+msgid ""
+"Can't proceed with DCC SEND: Transfer not initiated for file %s on port %s, "
+"or invalid resume size"
+msgstr ""
+"Sikertelen DCC SEND folyamat: Adatátvitel nincs inicializálva %s fájlnak, %s "
+"porton keresztül, vagy hibás a folytatás mérete"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:590
+msgid ""
+"The above request has resume file size missing, assuming a resume file size "
+"of 0"
+msgstr ""
+"Az alábbi folytatási kérés mérete hiányzik, a fájl 0-tól lesz folytatva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:614
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC RECV is not available"
+msgstr ""
+"Ez a verzió SSL támogatás nélkül lett fordítva, az SSL kiterjesztés DCC RECV-"
+"re nem elérhető"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:629
+#, c-format
+msgid "Invalid RECV request: Position %u is is larger than file size"
+msgstr "Helytelen RECV kérés, Pozíció: %u nagyobb mint a fájlméret"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:683
+msgid "%Q [%Q@%Q] is ready to receive the file \"%s\""
+msgstr "%Q [%Q@%Q] készen áll \"%s\" fájl fogadására"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:689
+#, c-format
+msgid "The remote client is listening on interface %s and port %s"
+msgstr "A távoli kliens hallgatózik %s eszközön, %s porton keresztül"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:696
+msgid ""
+"Use %c\r![!dbl]dcc.send %s -i=%s -p=%s %Q\r/dcc.send %s -i=%s -p=%s %Q\r%c "
+"to send the file (or double-click on the socket)"
+msgstr ""
+"Használd %c\r![!dbl]dcc.send %s -i=%s -p=%s %Q\r/dcc.send %s -i=%s -p=%s %Q\r"
+"%c fájlküldéshez (vagy duplka katt a Socketen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:728
+msgid ""
+"The above request is broken: The fourth parameter should be the file size "
+"but does not appear to be an unsigned number; trying to continue"
+msgstr ""
+"A fenti kérés hibás: A negyedik paraméternek a fájlméretnek kellene lennie "
+"de ez nem úgy néz ki, mint egy előjel nélküli szám. Folytatás..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:752
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC RSEND is not available"
+msgstr ""
+"Ez a verzió SSL támogatás nélkül lett fordítva, az SSL kiterjesztés DCC "
+"RSEND-re nem elérhető"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:763
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:932
+msgid "(unknown)"
+msgstr "(ismeretlen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:918
+msgid "No suitable interface to listen on, trying to continue anyway..."
+msgstr "Nincs megfelelő eszköz, amin hallgatóznék, további próbálkozások..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:835
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC GET is not available"
+msgstr ""
+"Ez a verzió SSL támogatás nélkül lett fordítva, az SSL kiterjesztések DCC "
+"GET-re nem elérhetőek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:846
+msgid "No file offer named '%s' (with size %s) available for %Q [%Q@%Q]"
+msgstr "Nincs felajánlott '%s' fájl (%s méretben) ami elérhető %Q [%Q@%Q]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:847
+msgid "\"any\""
+msgstr "\"bármilyen\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:891
+msgid ""
+"Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering "
+"DCC %s since we can't accept incoming connections (user option)"
+msgstr ""
+"Elfogadott fájlkérés %Q [%Q@%Q] felől, '%s' fájlra (valós fájl: %Q), "
+"felajánlás DCC %s mióta nincs engedélyezve a bejövő kapcsolat (felhasználói "
+"beállítás)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:948
+msgid ""
+"Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering "
+"DCC %Q"
+msgstr ""
+"Fájl kérése elfogadva %Q [%Q@%Q] felől '%s' fájlra (valós fájl: %Q), "
+"felajánlásDCC %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:982
+msgid ""
+"The above request cannot be accepted: DCC VOICE support not enabled at "
+"compilation time "
+msgstr ""
+"A következő kérést nem tudom teljesíteni: DCC VOICE támogatás nem volt "
+"engedélyezve fodításkor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:992
+#, c-format
+msgid "The above request cannot be accepted: Unsupported codec '%s'"
+msgstr "A következő kérést nem tudom teljesíteni: Nem támogatott codec'%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:1005
+#, c-format
+msgid ""
+"The above request appears to be broken: Invalid sample-rate '%s', defaulting "
+"to 8000"
+msgstr ""
+"A következő kérés valószínűleg hibás: Helytelen mintavétel-ráta '%s', "
+"alkalmazás alapértelmezésre: 8000"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:1151
+#, c-format
+msgid "Unknown DCC type '%s'"
+msgstr "Ismeretlen DCC típus: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:64
+msgid "&Accept"
+msgstr "Elfogadás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:69
+msgid "&Reject"
+msgstr "Elutasítás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:129
+msgid "&Rename"
+msgstr "Átnevezés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:133
+msgid "Over&write"
+msgstr "Felülírás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:137
+msgid "Re&sume"
+msgstr "&Folytatás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:149
+msgid "File Already Exists - KVIrc"
+msgstr "Fájl Már Létezik - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/utils.cpp:122
+msgid "Can't retrieve a suitable local IPV4 address"
+msgstr "Nincs megfelelő helyi IPv4 cím"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/utils.cpp:140
+#, c-format
+msgid ""
+"Can't listen on default interface '%s': fix it in the options dialog, "
+"disabling the option (so the next dcc will work)"
+msgstr ""
+"Nem tudok hallgatózni az alapértelmezett '%s' eszközön, javítsd tiltással az "
+"opciókban (a következő DCC már működni fog)"
diff --git a/po/modules/dcc/dcc_it.po b/po/modules/dcc/dcc_it.po
new file mode 100644
index 00000000..def93458
--- /dev/null
+++ b/po/modules/dcc/dcc_it.po
@@ -0,0 +1,1018 @@
+# translation of dcc_it.po to
+# KVIrc DCC module Italian translation file
+# Italian translation file for KVIrc 3.0
+# Copyright (C) Szymon Stefanek
+# This file is distributed under the same license as the KVIrc package.
+#
+# Eva Schaller <[email protected]>, 2002,2003,2004.
+# Elvio Basello <[email protected]>, 2005, 2006.
+# Etherea <cle at virg0 dot org>, 2006.
+# Nate Grey <[email protected]>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: dcc_it\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-11-08 01:45+0100\n"
+"Last-Translator: \n"
+"Language-Team: <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/descriptor.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:642
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:666
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:803
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:805
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:484
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:514
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:136
+msgid "unknown"
+msgstr "sconosciuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:783
+msgid "Choose Files to Send - KVIrc"
+msgstr "Scegli i Files da Inviare - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:189
+msgid "Can't send DCC %Q request to %Q: IRC connection has been terminated"
+msgstr ""
+"Impossibile inviare la richiesta di DCC %Q a %Q: la connessione IRC � stata "
+"terminata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:821
+msgid "Can't open file %Q for reading"
+msgstr "Impossibile aprire il file %Q in lettura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:269
+msgid ""
+"<b>%1 [%2@%3]</b> requests a <b>Direct Client Connection</b> in <b>%4</b> "
+"mode.<br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> richiede una<br><b>Connessione Diretta con il Client</b> "
+"in modalit� <b>%4</b>.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:274
+msgid "The connection will be secured using SSL.<br>"
+msgstr "La connessione sar� resa sicura utilizzando SSL.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:280
+msgid "You will be the passive side of the connection.<br>"
+msgstr "Sarai il lato passivo della connessione.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:284
+msgid "The connection target will be host <b>%1</b> on port <b>%2</b><br>"
+msgstr ""
+"Il target della connessione sar� l'host <b>%1</b> sulla porta <b>%2</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:543
+msgid "DCC %1 Request - KVIrc"
+msgstr "Richiesta DCC %1 - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:340
+msgid ""
+"<b>%1 [%2@%3]</b> requests a<br><b>Direct Client Connection</b> in <b>VOICE</"
+"b> mode.<br>The connection target will be host <b>%4</b> on port <b>%5</"
+"b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> richiede una <br><b>Connessione Diretta con il Client</b> "
+"in modalit� <b>VOICE</b>.<br>Il target della connessione sar� l'host <b>%4</"
+"b> sulla porta <b>%5</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:346
+msgid "DCC VOICE request"
+msgstr "Richiesta DCC VOICE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:411
+msgid ""
+"<b>%1 [%2@%3]</b> requests a<br><b>Direct Client Connection</b> in "
+"<b>CANVAS</b> mode.<br>The connection target will be host <b>%4</b> on port "
+"<b>%5</b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> richiede una <br><b>Conessione Diretta con il Client</b> "
+"in modalit� <b>CANVAS</b>.<br>Il target della connessione sar� l'host <b>%4</"
+"b> sulla porta <b>%5</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:417
+msgid "DCC CANVAS request"
+msgstr "Richiesta DCC CANVAS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:502
+msgid ""
+"<b>%1 [%2@%3]</b> wants to send you the file '<b>%4</b>', <b>%5</b> large."
+"<br>The connection target will be host <b>%6</b> on port <b>%7</b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> vuole inviarti il file '<b>%4</b>' di <b>%5</b>byte.<br>Il "
+"target della connessione sar� l'host <b>%6</b> sulla porta <b>%7</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:515
+msgid ""
+"<b>%1 [%2@%3]</b> wants to send you the file '<b>%4</b>', <b>%5</b> large."
+"<br>You will be the passive side of the connection.<br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> vuole inviarti il file'<b>%4</b>', di <b>%5</b>byte.<br>Tu "
+"sarai la parte passiva della connessione.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:528
+msgid ""
+"<center><b>Note:</b></center>The file appears to be an avatar that you have "
+"requested. You should not change its filename. Save it in a location where "
+"KVIrc can find it, such as the 'avatars', 'incoming', or 'pics' directories, "
+"your home directory, or the save directory for the incoming file type. The "
+"default save path will probably work. You can instruct KVIrc to accept "
+"incoming avatars automatically by setting the option "
+"<tt>boolAutoAcceptIncomingAvatars</tt> to true.<br>"
+msgstr ""
+"<center><b>Nota:</b></center>il file che hai richiesto sembra essere un "
+"avatar. Non devi cambiarne il nome. Salvalo in una posizione dove KVIrc pu� "
+"trovarlo, questa potrebbe essere la directory 'avatar' di KVIrc, la tua "
+"directory home, la directory 'incoming' di KVIrc, la directory 'pics' di "
+"KVIrc, o la directory dove salvi i file in entrata. Di solito accettando il "
+"percorso di default suggerito, tutto funziona. Altrimenti puoi fare in modo "
+"che KVIrc accetti automaticamente tutti gli avatar in entrata impostando "
+"l'opzione <tt>boolAutoAcceptIncomingAvatars</tt> come vera.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:557
+msgid "Auto-accepting DCC %Q request from %Q!%Q@%Q for file %Q"
+msgstr ""
+"Accetto in automatico la richiesta di DCC %Q da %Q!%Q@%Q per il file %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:618
+msgid "Choose Files to Save - KVIrc"
+msgstr "Scegli i Files da Salvare - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:631
+msgid "Auto-saving DCC %Q file %Q as \r![!dbl]play $0\r%Q\r"
+msgstr "Salvo automaticamente il file DCC %Q come \r![!dbl]play $0\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:665
+msgid ""
+"The file '<b>%1</b>' already exists and is <b>%2</b> large.<br>Do you wish "
+"to<br><b>overwrite</b> the existing file,<br> <b>auto-rename</b> the new "
+"file, or<br><b>resume</b> an incomplete download?"
+msgstr ""
+"Il file '<b>%1</b>' esiste gi� ed � grande <b>%2</b> byte.<br>Vuoi "
+"<br><b>sovrascriverlo</b> e <b>rinominare automaticamente</b> il nuovo file, "
+"o considerarlo come un download incompleto e attivare il <b>resume</b>?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:677
+msgid ""
+"The file '<b>%1</b>' already existsand is larger than the offered one.<br>Do "
+"you wish to<br><b>overwrite</b> the existing file, or<br> <b>auto-rename</b> "
+"the new file ?"
+msgstr ""
+"Il file '<b>%1</b>' esiste gi� ed � grande <b>%2</b> byte.<br>Vuoi "
+"<br><b>sovrascriverlo</b> e <b>rinominare automaticamente</b> quello in "
+"entrata, o considerarlo come un download incompleto e attivare la modalit� "
+"<b>resume</b>?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:747
+msgid "File %s exists, auto-renaming to %Q"
+msgstr "Il file %s esiste: lo rinomino automaticamente in %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:158
+#, c-format
+msgid "Attempting a passive DCC %s connection"
+msgstr "Tento di stabilire una connessione DCC %s passiva "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:168
+#, c-format
+msgid "Attempting an active DCC %s connection"
+msgstr "Tento di stabilire una connessione DCC %s attiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:761
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:107
+msgid "Contacting host %Q on port %Q"
+msgstr "Contatto l'host %Q sulla porta %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:83
+msgid "Listening on interface %Q port %Q"
+msgstr "In ascolto sull'interfaccia %Q sulla porta %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:207
+#, c-format
+msgid "The local IP address is private, determining from IRC server: %s"
+msgstr "L'indirizzo IP locale � privato, lo determino dal server IRC: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1512
+msgid ""
+"The local IP address is private, but unable to determine it from the IRC "
+"server"
+msgstr ""
+"L'indirizzo IP locale � privato, impossibile determinarlo dal server IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1515
+msgid ""
+"The local IP address is private, but have no IRC server to determine it from"
+msgstr ""
+"L'indirizzo IP locale � privato, non c'� nessun server IRC da cui "
+"determinarlo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:234
+msgid "Sent DCC %Q request to %Q, waiting for the remote client to connect..."
+msgstr ""
+"Inviata richiesta di DCC %Q a %Q, attendo la connessione del client remoto..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:237
+msgid "DCC %Q request not sent, awaiting manual connection"
+msgstr "Richiesta di DCC %Q non inviata, attendo una connessione manuale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1574
+msgid "Low-level transport connection established"
+msgstr "Connessione stabilita ad un basso livello di trasporto dati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1575
+msgid "Starting Secure Socket Layer handshake"
+msgstr "Avvio del protocollo di scambio con Socket sicuro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:254
+#, c-format
+msgid "[SSL ERROR]: %s"
+msgstr "[ERRORE SSL]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:388
+msgid "Cannot send data: No active connection"
+msgstr "Impossibile inviare dati: nessuna connessione attiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:344
+msgid ""
+"The crypto engine was not able to encrypt the current message (%Q): %Q, no "
+"data was sent to the remote end"
+msgstr ""
+"Il motore di cifratura non riesce a criptare il messaggio corrente (%Q): %Q, "
+"nessun dato inviato all'utente remoto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:403
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:827
+msgid "ERROR: %Q"
+msgstr "ERRORE: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:447
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+"Il seguente messaggio sembra essere crittato, ma il motore di cifratura non "
+"riesce a decrittarlo: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:493
+msgid "DCC %Q failed: %Q"
+msgstr "DCC %Q fallita: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:521
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:919
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:282
+msgid "Connected to %Q:%Q"
+msgstr "Connesso a %Q:%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:523
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:921
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:284
+msgid "Local end is %Q:%Q"
+msgstr "L'indirizzo locale � %Q:%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:164
+msgid ""
+"WARNING: failed to check the soundcard duplex capabilities: if this is a "
+"half-duplex soundcard , use the DCC VOICE option to force half-duplex "
+"algorithm"
+msgstr ""
+"ATTENZIONE: fallito il controllo delle capacit� duplex della scheda audio: "
+"se la scheda ha capacit� half-duplex, utilizza l'opzione DCC VOICE per "
+"imporre l'algoritmo half-duplex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:172
+msgid ""
+"Half duplex soundcard detected, you will not be able to talk and listen at "
+"the same time"
+msgstr ""
+"Rilevata scheda audio half-duplex, non sarai in grado di parlare e di "
+"ascoltare contemporaneamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:213
+#, c-format
+msgid ""
+"WARNING: failed to set the requested sample rate (%d): the device used "
+"closest match (%d)"
+msgstr ""
+"ATTENZIONE: impossibile impostare il sample-rate richiesto (%d): il "
+"dispositivo ha utilizzato quello pi� simile (%d)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:271
+msgid "Ops...failed to test the soundcard capabilities...expect problems..."
+msgstr ""
+"Ops... fallito il test della scheda sonora... potrebbero verificarsi alcuni "
+"problemi.."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:662
+msgid "Input buffer"
+msgstr "Input buffer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:664
+msgid "Output buffer"
+msgstr "Output buffer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:746
+msgid "Attempting a passive DCC VOICE connection"
+msgstr "Tento di stabilire una connessione DCC VOICE passiva "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:751
+msgid "Attempting an active DCC VOICE connection"
+msgstr "Tento di stabilire una connessione DCC VOICE attiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:779
+msgid ""
+"Sent DCC VOICE (%s) request to %Q, waiting for the remote client to "
+"connect..."
+msgstr ""
+"Inviata richiesta di DCC VOICE (%s) a %Q, attendo che il client remoto si "
+"connetta..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:781
+msgid "DCC VOICE request not sent: awaiting manual connections"
+msgstr "Richiesta di DCC VOICE non inviata: attendo una connessione manuale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:885
+#, c-format
+msgid "Input buffer: %d bytes"
+msgstr "Input buffer: %d bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:887
+#, c-format
+msgid "Output buffer: %d bytes"
+msgstr "Output buffer: %d bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:910
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:277
+msgid "DCC Failed: %Q"
+msgstr "DCC Fallita: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:939
+#, c-format
+msgid "Actual codec used is '%s'"
+msgstr "Il codec attualmente in uso � '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:1023
+#, c-format
+msgid "Volume: %i"
+msgstr "Volume: %i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:91
+msgid ""
+"This window has no associated IRC context (an IRC context is required unless "
+"-c or -n are passed)"
+msgstr ""
+"Questa finestra non ha un Contesto IRC associato (ne necessiti almeno uno, a "
+"meno che tu non scelga l'opzione -c o -n)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:104
+msgid ""
+"You're not connected to a server (an active connection is required unless -c "
+"or -n are passed)"
+msgstr ""
+"Non sei connesso ad un server (hai bisogno di una connessione attiva a meno "
+"che tu non scelga l'opzione -c o -n)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:129
+msgid "Unable to get address of interface %Q"
+msgstr "Impossibile trovare l'indirizzo dell'interfaccia %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:139
+msgid "No suitable interfaces to listen on, use -i"
+msgstr "Nessuna interfaccia su cui stare in ascolto, usa -i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:172
+msgid "This executable was built without SSL support, -s switch ignored"
+msgstr ""
+"Questo eseguibile � stato compilato senza il supporto SSL, opzione -s "
+"ignorata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:657
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1159
+msgid "-c requires -i and -p"
+msgstr "-c richiede -i e -p"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:634
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:730
+msgid "<unknown size>"
+msgstr "<dimensione sconosciuta>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:890
+msgid "This executable has been built without SSL support, -s switch ignored"
+msgstr ""
+"Questo eseguibile � stato compilato senza il supporto SSL, opzione -s "
+"ignorata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:960
+msgid "This executable has no SSL support, -s switch ignored"
+msgstr "Questo eseguibile non ha il supporto SSL, opzione -s ignorata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1114
+msgid "DCC VOICE support not enabled at compilation time"
+msgstr "Supporto DCC VOICE non abilitato durante la compilazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1132
+msgid "Invalid sample rate specified, defaulting to 8000"
+msgstr ""
+"Il sample-rate specificato non � valido, utilizzo quello predefinito di 8000"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1148
+msgid "Invalid codec specified, defaulting to 'adpcm'"
+msgstr "Il codec specificato non � valido, utilizzo quello predefinito 'adpcm'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1577
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2542
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2562
+msgid "The current window has no associated DCC session"
+msgstr "La finestra corrente non ha sessioni DCC associate"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1582
+msgid "The specified parameter is not a valid DCC identifier"
+msgstr "Il parametro specificato non � un identificativo valido per una DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1662
+msgid "This DCC session is not a DCC transfer session"
+msgstr "Questa sessione DCC non � una sessione di trasferimento DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2553
+msgid "The specified window identifier is not valid"
+msgstr "L'identificativo per la finestra specificata non � valido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:260
+msgid "WARNING: The peer is sending garbage data past the end of the file"
+msgstr "ATTENZIONE: il peer sta inviando dati spazzatura alla fine del file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:261
+msgid ""
+"WARNING: Ignoring data past the declared end of file and closing the "
+"connection"
+msgstr ""
+"ATTENZIONE: sto ignorando i dati ricevuti dopo la fine del file e sto "
+"chiudendo la connessione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:362
+msgid ""
+"Data transfer terminated, waiting 30 seconds for the peer to close the "
+"connection..."
+msgstr ""
+"Trasferimento dei dati terminato, attendo 30 secondi che il peer chiuda la "
+"connessione..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:369
+msgid "Data transfer was terminated 30 seconds ago, closing the connection"
+msgstr "Trasferimento dei dati terminato 30 secondi fa, chiudo la connessione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:600
+msgid "WARNING: Received data in a DCC TSEND, there should be no acknowledges"
+msgstr ""
+"ATTENZIONE: ricevuti dati in una DCC TSEND, non esiste alcun riconoscimento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:732
+#, c-format
+msgid "TRANSFER %d"
+msgstr "TRASFERIMENTO %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:755
+msgid "Setting up the connection"
+msgstr "Tento di stabilire una connessione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:814
+msgid "Attempting a passive DCC %1 connection"
+msgstr "Tento di stabilire una connessione DCC %1 passiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:818
+msgid "Attempting an active DCC %1 connection"
+msgstr "Tento di stabilire una connessione DCC %1 attiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:844
+msgid "Sent DCC RESUME request to %1, waiting for ACCEPT"
+msgstr "Inviata richiesta di DCC RESUME a %1, attendo ACCEPT"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:914
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:925
+msgid "Aborted"
+msgstr "Annullato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:924
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1603
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1678
+msgid "Transfer failed: "
+msgstr "Trasferimento fallito: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:936
+msgid "Configure Bandwidth..."
+msgstr "Configurazione della larghezza di banda..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:938
+msgid "Resend DCC"
+msgstr "Reinvio DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:939
+msgid "Resend TDCC"
+msgstr "Reinvio TDCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:940
+msgid "Resend RevDCC"
+msgstr "Reinvio RevDCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:944
+msgid "Abort"
+msgstr "Annullato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1135
+msgid "From: "
+msgstr "Da: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1136
+msgid "To: "
+msgstr "A: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1246
+msgid "%1 of %2 (%3%)"
+msgstr "%1 di %2 (%3%)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1250
+msgid "%1"
+msgstr "%1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1263
+msgid "Spd:"
+msgstr "Velocit�:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1278
+msgid "Avg:"
+msgstr "Media:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1349
+msgid "Transfer Log"
+msgstr "Log del Trasferimento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1480
+msgid "Contacting host %1 on port %2"
+msgstr "Contatto l'host %1 sulla porta %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1487
+msgid "Listening on interface %1 port %2"
+msgstr "In ascolto sull'interfaccia %1 sulla porta %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1510
+msgid "The local IP address is private, determining from IRC server: %1"
+msgstr "L'indirizzo IP locale � privato, lo determino dal server IRC: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1561
+msgid "Sent DCC %1 request to %2, waiting for remote client to connect..."
+msgstr ""
+"Inviata richiesta di DCC %1 a %2, aspetto la connessione del client remoto..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1563
+msgid "DCC %1 request not sent, awaiting manual connection"
+msgstr "Richiesta di DCC %1 non inviata: attendo una connessione manuale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1582
+msgid "[SSL ERROR]: %1"
+msgstr "[ERRORE SSL]: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1625
+msgid "DCC %s transfer with %Q@%Q:%Q completed: \r![!dbl]play $0\r%s\r"
+msgstr "Trasferimento DCC %s con %Q@%Q:%Q completato: \r![!dbl]play $0\r%s\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1640
+msgid "Transfer completed"
+msgstr "Trasferimento completato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1687
+msgid "Connected to %1:%2"
+msgstr "Connesso a %1:%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1688
+msgid "Local end is %1:%2"
+msgstr "L'indirizzo locale � %1:%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1732
+msgid "Transferring data"
+msgstr "Trasferimento dati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1758
+msgid "RESUME accepted, transfer will begin at position %1"
+msgstr "RESUME accettato, il trasferimento inizier� dalla posizione %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1789
+msgid "Internal error in RESUME request"
+msgstr "Errore interno nella richiesta di RESUME"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1794
+msgid "Invalid RESUME request: Position %1 is larger than file size"
+msgstr ""
+"Richiesta di RESUME non valida: la posizione %1 � pi� grande della "
+"dimensione del file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1798
+msgid "Accepting RESUME request, transfer will begin at position %1"
+msgstr ""
+"Accettata richiesta di RESUME: il trasferimento inizier� dalla posizione %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1830
+msgid "Configure bandwidth for DCC transfer %1"
+msgstr "Configurazione larghezza di banda per il trasferimento DCC %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1833
+msgid "Limit upload bandwidth to"
+msgstr "Limita la banda in upload a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1833
+msgid "Limit download bandwidth to"
+msgstr "Limita la banda in download a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1846
+msgid "bytes/sec"
+msgstr "bytes/sec"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1850
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:142
+msgid "Cancel"
+msgstr "Annulla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:78
+msgid "Attempting a passive DCC CANVAS connection"
+msgstr "Tento una connessione DCC CANVAS passiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:98
+msgid ""
+"Sent DCC CANVAS request to %Q, waiting for the remote client to connect..."
+msgstr ""
+"Inviata richiesta di DCC CANVAS a %Q, aspetto la connessione dal client "
+"remoto..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:100
+msgid "DCC CANVAS request not sent: awaiting manual connections"
+msgstr "Richiesta di DCC CANVAS non inviata: attendo una connessione manuale."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:104
+msgid "Attempting an active DCC CANVAS connection"
+msgstr "Tento una connessione DCC CANVAS attiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1563
+msgid "&Line"
+msgstr "&Linea"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1564
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1572
+msgid "&Rectangle"
+msgstr "&Rettangolo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1565
+msgid "&Ellipse"
+msgstr "&Ellisse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1566
+msgid "&Pie"
+msgstr "&Grafico a torta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1567
+msgid "&Chord"
+msgstr "Gr&afo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1569
+msgid "&Rich text (html)"
+msgstr "H&ypertesto (html)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1571
+msgid "&Triangle"
+msgstr "&Triangolo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1573
+msgid "&Pentagon"
+msgstr "&Pentagono"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1574
+msgid "&Hexagon"
+msgstr "&Esagono"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1576
+msgid "&Shape"
+msgstr "&Forma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1577
+msgid "&Item"
+msgstr "&Oggetto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1578
+msgid "&Polygons"
+msgstr "&Poligoni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1580
+msgid "&Insert"
+msgstr "&Inserisci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:77
+msgid "Unable to process the above request: %Q, %Q"
+msgstr "Impossibile processare la richiesta: %Q, %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:79
+msgid "Ignoring and notifying failure"
+msgstr "Ignora e notifica il fallimento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:79
+msgid "Ignoring"
+msgstr "Ignorato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:95
+#, c-format
+msgid "Concurrent transfer limit reached (%u of %u transfers running)"
+msgstr "Limite dei trasferimenti raggiunto (%u di %u trasferimenti attivi)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:111
+#, c-format
+msgid "Slot limit reached (%u slots of %u)"
+msgstr "Limite degli slots raggiunto (%u slots su %u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:120
+msgid "Too many pending connections"
+msgstr "Troppe connessioni in sospeso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:156
+#, c-format
+msgid "Invalid port number %s"
+msgstr "Numero della porta %s non valido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:172
+#, c-format
+msgid "Invalid IP address in old format %s"
+msgstr "Vecchio formato dell'indirizzo IP %s non valido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:191
+#, c-format
+msgid "Invalid IP address %s"
+msgstr "Indirizzo IP %s non valido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:258
+#, c-format
+msgid ""
+"The above request is broken: The second parameter is '%s' and should be "
+"'chat', trying to continue"
+msgstr ""
+"La richiesta � sbagliata: il secondo parametro � '%s' mentre dovrebbe essere "
+"'chat'; provo a continuare"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:270
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC CHAT is not available"
+msgstr ""
+"Questo eseguibile � stato compilato senza il supporto SSL: l'estensione SSL "
+"per DCC CHAT non � disponibile"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:321
+msgid ""
+"The above request is broken: it looks like a zero port tag acknowledge but I "
+"have either never seen this tag or it was sent more than 120 seconds ago"
+msgstr ""
+"La richiesta � fallita: sembra un tag di accettazione su porta zero ma non "
+"ho mai visto questo tag oppure fu spedita pi� di 120 secondi fa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:322
+msgid "It seems that I haven't requested this dcc chat"
+msgstr "Sembra che non ho richiesto questa dcc chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:442
+msgid ""
+"The above request is broken: The fourth parameter should be the file size "
+"but does not appear to be an unsigned number, trying to continue"
+msgstr ""
+"La richiesta � sbagliata: il quarto parametro deve essere la dimensione del "
+"file ma non sembra essere un numero; provo a continuare"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:600
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:738
+msgid ""
+"The above request is broken: The filename contains path components, "
+"stripping the leading path and trying to continue"
+msgstr ""
+"La richiesta � sbagliata: il nome del file contiene degli elementi del "
+"percorso; rimuovo il percorso e tento di continuare"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:466
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC SEND is not available"
+msgstr ""
+"Questo eseguibile � stato compilato senza il supporto SSL: l'estensione SSL "
+"per DCC SEND non � disponibile"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:528
+#, c-format
+msgid ""
+"Can't proceed with DCC RECV: Transfer not initiated for file %s on port %s"
+msgstr ""
+"Impossibile procedere con DCC RECV: trasferimento non inizializzato per il "
+"file %s sulla porta %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:553
+#, c-format
+msgid "Invalid resume position argument '%s'"
+msgstr "Argomento della posizione del resume non valido '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:565
+#, c-format
+msgid ""
+"Can't proceed with DCC SEND: Transfer not initiated for file %s on port %s, "
+"or invalid resume size"
+msgstr ""
+"Impossibile procedere con DCC SEND: trasferimento non inizializzato per il "
+"file %s sulla porta %s, o dimensione del resume non valida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:590
+msgid ""
+"The above request has resume file size missing, assuming a resume file size "
+"of 0"
+msgstr ""
+"Manca la dimensione del file nella richiesta di resume: assumo la dimensione "
+"del resume come 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:614
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC RECV is not available"
+msgstr ""
+"Questo eseguibile � stato compilato senza il supporto SSL: l'estensione SSL "
+"per DCC RECV non � disponibile"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:629
+#, c-format
+msgid "Invalid RECV request: Position %u is is larger than file size"
+msgstr ""
+"Richiesta di RECV non valida: la posizione %u � pi� grande della dimensione "
+"del file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:683
+msgid "%Q [%Q@%Q] is ready to receive the file \"%s\""
+msgstr "%Q [%Q@%Q] � pronto per ricevere il file \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:689
+#, c-format
+msgid "The remote client is listening on interface %s and port %s"
+msgstr "Il client remoto � in ascolto sull'interfaccia %s e porta %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:696
+msgid ""
+"Use %c\r![!dbl]dcc.send %s -i=%s -p=%s %Q\r/dcc.send %s -i=%s -p=%s %Q\r%c "
+"to send the file (or double-click on the socket)"
+msgstr ""
+"Usa %c\r [!dbl]dcc.send %s -i=%s -p=%s %Q\r/dcc.send %s -i=%s -p=%s %Q\r%c "
+"per inviare il file (o doppio click sul link)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:728
+msgid ""
+"The above request is broken: The fourth parameter should be the file size "
+"but does not appear to be an unsigned number; trying to continue"
+msgstr ""
+"La richiesta � sbagliata: il quarto parametro deve essere la dimensione del "
+"file ma non sembra essere un numero; provo a continuare"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:752
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC RSEND is not available"
+msgstr ""
+"Questo eseguibile � stato compilato senza il supporto SSL: l'estensione SSL "
+"non � disponibile per DCC RSEND"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:763
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:932
+msgid "(unknown)"
+msgstr "(sconosciuto)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:918
+msgid "No suitable interface to listen on, trying to continue anyway..."
+msgstr "Nessuna interfaccia disponibile in ascolto: provo a continuare..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:835
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC GET is not available"
+msgstr ""
+"Questo eseguibile � stato compilato senza il supporto SSL: l'estensione SSL "
+"per DCC GET non � disponibile"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:846
+msgid "No file offer named '%s' (with size %s) available for %Q [%Q@%Q]"
+msgstr ""
+"Nessun file offerto chiamato '%s' (con dimensione %s) � disponibile per %Q [%"
+"Q@%Q]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:847
+msgid "\"any\""
+msgstr "\"qualsiasi\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:891
+msgid ""
+"Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering "
+"DCC %s since we can't accept incoming connections (user option)"
+msgstr ""
+"Accetto richiesta di file da %Q [%Q@%Q] per '%s' (file reale: %Q), offerta "
+"DCC %s poich� impossibile accettare connessioni in entrata (opzione "
+"dell'utente)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:948
+msgid ""
+"Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering "
+"DCC %Q"
+msgstr ""
+"Accettata richesta di file da %Q [%Q@%Q] per '%s' (file reale: %Q), offerta "
+"DCC %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:982
+msgid ""
+"The above request cannot be accepted: DCC VOICE support not enabled at "
+"compilation time "
+msgstr ""
+"La richiesta fatta non pu� essere accettata: DCC VOICE non abilitato al "
+"momento della compilazione "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:992
+#, c-format
+msgid "The above request cannot be accepted: Unsupported codec '%s'"
+msgstr "La richiesta fatta non pu� essere accettata: codec non supportato '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:1005
+#, c-format
+msgid ""
+"The above request appears to be broken: Invalid sample-rate '%s', defaulting "
+"to 8000"
+msgstr ""
+"La richiesta fatta � sbagliata: sample-rate '%s' non valido: utilizzo quello "
+"predefinito (8000)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:1151
+#, c-format
+msgid "Unknown DCC type '%s'"
+msgstr "Tipo di DCC sconosciuto '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:64
+msgid "&Accept"
+msgstr "&Accetta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:69
+msgid "&Reject"
+msgstr "&Rifiuta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:129
+msgid "&Rename"
+msgstr "&Rinomina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:133
+msgid "Over&write"
+msgstr "So&vrascrivi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:137
+msgid "Re&sume"
+msgstr "Ri&prendi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:149
+msgid "File Already Exists - KVIrc"
+msgstr "Il file esiste gi� - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/utils.cpp:122
+msgid "Can't retrieve a suitable local IPV4 address"
+msgstr "Impossibile trovare un indirizzo IPv4 locale disponibile"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/utils.cpp:140
+#, c-format
+msgid ""
+"Can't listen on default interface '%s': fix it in the options dialog, "
+"disabling the option (so the next dcc will work)"
+msgstr ""
+"Impossibile attivare l'ascolto sull'interfaccia di default '%s': correggi "
+"nella finestra delle opzioni, disabilitando l'opzione stessa (la prossima "
+"DCC sar� in grado di funzionare)"
diff --git a/po/modules/dcc/dcc_pt.po b/po/modules/dcc/dcc_pt.po
new file mode 100644
index 00000000..6160ab10
--- /dev/null
+++ b/po/modules/dcc/dcc_pt.po
@@ -0,0 +1,1002 @@
+# translation of dcc_pt.po to Português
+# translation of dcc_pt.po to
+# translation of dcc_pt(vai a meio).po to
+# translation of dcc_pt(vai a meio).po to
+# translation of dcc_es.po to
+#
+# José Luis Sánchez <[email protected]>, 2004.
+# Ze <[email protected]>, 2004.
+# Zé <[email protected]>, 2004, 2006.
+# Américo José Melo <[email protected]>, 2005.
+# José Melo <[email protected]>, 2005.
+# Zé <[email protected]>, 2006, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: dcc_pt\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-11-09 20:15+0000\n"
+"Last-Translator: Zé <[email protected]>\n"
+"Language-Team: Português <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"First-Translator: José Luis Sánchez <[email protected]>\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/descriptor.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:642
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:666
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:803
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:805
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:484
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:514
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:136
+msgid "unknown"
+msgstr "desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:783
+msgid "Choose Files to Send - KVIrc"
+msgstr "Escolher Ficheiros para Enviar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:189
+msgid "Can't send DCC %Q request to %Q: IRC connection has been terminated"
+msgstr ""
+"Não é possível enviar o pedido DCC %Q a %Q: a conexão IRC foi terminada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:821
+msgid "Can't open file %Q for reading"
+msgstr "Não é possível abrir o ficheiro %Q para leitura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:269
+msgid ""
+"<b>%1 [%2@%3]</b> requests a <b>Direct Client Connection</b> in <b>%4</b> "
+"mode.<br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> pede uma <b>Conexão Directa ao Cliente (DCC)</b> em modo."
+"<b>%4</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:274
+msgid "The connection will be secured using SSL.<br>"
+msgstr "A conexão será segura ao usar SSL.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:280
+msgid "You will be the passive side of the connection.<br>"
+msgstr "Irá ser o lado passivo da conexão.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:284
+msgid "The connection target will be host <b>%1</b> on port <b>%2</b><br>"
+msgstr "O destino da conexão será o endereço <b>%1</b> na porta <b>%2</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:543
+msgid "DCC %1 Request - KVIrc"
+msgstr "Pedido DCC %1 - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:340
+msgid ""
+"<b>%1 [%2@%3]</b> requests a<br><b>Direct Client Connection</b> in <b>VOICE</"
+"b> mode.<br>The connection target will be host <b>%4</b> on port <b>%5</"
+"b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> pedida uma<br><b>Conexão Directa ao Cliente (DCC)</b> em "
+"modo <b>VOICE</b>.<br>O destino da conexão será o endereço <b>%4</b> na "
+"porta <b>%5</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:346
+msgid "DCC VOICE request"
+msgstr "Pedido DCC VOICE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:411
+msgid ""
+"<b>%1 [%2@%3]</b> requests a<br><b>Direct Client Connection</b> in "
+"<b>CANVAS</b> mode.<br>The connection target will be host <b>%4</b> on port "
+"<b>%5</b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> pedida uma<br><b>Conexão Directa ao Cliente (DCC)</b> em "
+"modo <b>CANVAS</b>.<br>O destino da conexão será o endereço <b>%4</b> na "
+"porta <b>%5</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:417
+msgid "DCC CANVAS request"
+msgstr "Pedido DCC CANVAS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:502
+msgid ""
+"<b>%1 [%2@%3]</b> wants to send you the file '<b>%4</b>', <b>%5</b> large."
+"<br>The connection target will be host <b>%6</b> on port <b>%7</b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> deseja-lhe enviar o ficheiro '<b>%4</b>', de <b>%5</b> de "
+"tamanho.<br>O destino da conexão será o endereço <b>%6</b> na porta <b>%7</"
+"b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:515
+msgid ""
+"<b>%1 [%2@%3]</b> wants to send you the file '<b>%4</b>', <b>%5</b> large."
+"<br>You will be the passive side of the connection.<br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> deseja-lhe enviar o ficheiro '<b>%4</b>', com <b>%5</b> de "
+"tamanho.<br>Você será o lado passivo da conexão.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:528
+msgid ""
+"<center><b>Note:</b></center>The file appears to be an avatar that you have "
+"requested. You should not change its filename. Save it in a location where "
+"KVIrc can find it, such as the 'avatars', 'incoming', or 'pics' directories, "
+"your home directory, or the save directory for the incoming file type. The "
+"default save path will probably work. You can instruct KVIrc to accept "
+"incoming avatars automatically by setting the option "
+"<tt>boolAutoAcceptIncomingAvatars</tt> to true.<br>"
+msgstr ""
+"<center><b>Nota:</b></center>O ficheiro parece ser um avatar que solicitou. "
+"Não deve mudar o nome do ficheiro. Guarde-o numa pasta onde o KVirc o possa "
+"encontrar, como os 'avatares', pastas de 'fotos', a stua pasta pessoal, ou a "
+"pasta que guarda os tipos de ficheiros recebidos. Provavelmente que a pasta "
+"predefinida para guardar ficheiros irá funcionar. Pode fazer com que o KVIrc "
+"aceite os avatares recebidos automáticamente ao configurar/activar a opção "
+"<tt>Aceitar automaticamente avatares recebidos</tt>.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:557
+msgid "Auto-accepting DCC %Q request from %Q!%Q@%Q for file %Q"
+msgstr "Auto-aceitar pedidos DCC %Q de %Q!%Q@%Q para o ficheiro %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:618
+msgid "Choose Files to Save - KVIrc"
+msgstr "Escolher Ficheiros para Gravar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:631
+msgid "Auto-saving DCC %Q file %Q as \r![!dbl]play $0\r%Q\r"
+msgstr "Auto-guardar DCC %Q ficheiro %Q como \r![!dbl]play $0\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:665
+msgid ""
+"The file '<b>%1</b>' already exists and is <b>%2</b> large.<br>Do you wish "
+"to<br><b>overwrite</b> the existing file,<br> <b>auto-rename</b> the new "
+"file, or<br><b>resume</b> an incomplete download?"
+msgstr ""
+"O ficheiro '<b>%1</b>' já existe e tem <b>%2</b> de tamanho."
+"<br>Deseja<br><b>substituir</b> o ficheiro existente,<br> <b>auto-renomear</"
+"b> o ficheiro novo, ou<br><b>resumir</b> uma transferência incompleta?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:677
+msgid ""
+"The file '<b>%1</b>' already existsand is larger than the offered one.<br>Do "
+"you wish to<br><b>overwrite</b> the existing file, or<br> <b>auto-rename</b> "
+"the new file ?"
+msgstr ""
+"O ficheiro '<b>%1</b>' já existe e é maior do que o oferecido."
+"<br>Deseja<br><b>sobrescrever</b> o ficheiro existente, ou<br> <b>auto-"
+"renomear</b> o ficheiro novo?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:747
+msgid "File %s exists, auto-renaming to %Q"
+msgstr "O ficheiro %s já existe, auto-renomear para %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:158
+#, c-format
+msgid "Attempting a passive DCC %s connection"
+msgstr "A tentar uma conexão DCC %s passiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:168
+#, c-format
+msgid "Attempting an active DCC %s connection"
+msgstr "A tentar uma conexão DCC %s activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:761
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:107
+msgid "Contacting host %Q on port %Q"
+msgstr "A contactar o endereço %Q na porta %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:83
+msgid "Listening on interface %Q port %Q"
+msgstr "A escutar no interface %Q na porta %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:207
+#, c-format
+msgid "The local IP address is private, determining from IRC server: %s"
+msgstr "O endereço IP local é privado, a determinar pelo servidor IRC: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1512
+msgid ""
+"The local IP address is private, but unable to determine it from the IRC "
+"server"
+msgstr ""
+"O endereço IP local é privado, mas não é possível determiná-lo pelo servidor "
+"de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1515
+msgid ""
+"The local IP address is private, but have no IRC server to determine it from"
+msgstr ""
+"O endereço IP local é privado, mas não tem nenhum servidor de IRC para o "
+"determinar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:234
+msgid "Sent DCC %Q request to %Q, waiting for the remote client to connect..."
+msgstr "Enviado pedido DCC %Q a %Q, a esperar que o cliente remoto conecte..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:237
+msgid "DCC %Q request not sent, awaiting manual connection"
+msgstr "Pedido DCC %s não enviado, a esperar conexão manual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1574
+msgid "Low-level transport connection established"
+msgstr "Conexão de transporte de baixo nível estabelecida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1575
+msgid "Starting Secure Socket Layer handshake"
+msgstr "A iniciar negociação do protocolo SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:254
+#, c-format
+msgid "[SSL ERROR]: %s"
+msgstr "[ERRO SSL]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:388
+msgid "Cannot send data: No active connection"
+msgstr "Não é possível enviar dados: Não há uma conexão activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:344
+msgid ""
+"The crypto engine was not able to encrypt the current message (%Q): %Q, no "
+"data was sent to the remote end"
+msgstr ""
+"O motor de encriptação não é capaz de desencriptar a mensagem actual (%Q): %"
+"Q, nenhuns dados enviados para o extremo remoto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:403
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:827
+msgid "ERROR: %Q"
+msgstr "ERRO: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:447
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+"A seguinte mensagem parece estar encriptada, mas o motor de encriptação "
+"falhou ao descodifica-la: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:493
+msgid "DCC %Q failed: %Q"
+msgstr "DCC %Q falhado: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:521
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:919
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:282
+msgid "Connected to %Q:%Q"
+msgstr "Conectado a %Q:%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:523
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:921
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:284
+msgid "Local end is %Q:%Q"
+msgstr "O extremo local é %Q:%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:164
+msgid ""
+"WARNING: failed to check the soundcard duplex capabilities: if this is a "
+"half-duplex soundcard , use the DCC VOICE option to force half-duplex "
+"algorithm"
+msgstr ""
+"AVISO: falha ao verificar se a placa de som é duplex: se esta é uma placa de "
+"som half-duplex, usa a opção DCC VOICE para forçar um algorítmo half-duplex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:172
+msgid ""
+"Half duplex soundcard detected, you will not be able to talk and listen at "
+"the same time"
+msgstr ""
+"Detectada placa de som half-duplex, não será capaz de falar e ouvir ao mesmo "
+"tempo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:213
+#, c-format
+msgid ""
+"WARNING: failed to set the requested sample rate (%d): the device used "
+"closest match (%d)"
+msgstr ""
+"AVISO: falha ao configurar a frequência de amostra solicitada (%d): o "
+"dispositivo usou a combinação mais próxima (%d)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:271
+msgid "Ops...failed to test the soundcard capabilities...expect problems..."
+msgstr ""
+"Ops...falha ao testar as capacidades da placa de som...pode ter problemas..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:662
+msgid "Input buffer"
+msgstr "Buffer de entrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:664
+msgid "Output buffer"
+msgstr "Buffer de saída"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:746
+msgid "Attempting a passive DCC VOICE connection"
+msgstr "A tentar uma conexão DCC VOICE passiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:751
+msgid "Attempting an active DCC VOICE connection"
+msgstr "A tentar uma conexão DCC VOICE activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:779
+msgid ""
+"Sent DCC VOICE (%s) request to %Q, waiting for the remote client to "
+"connect..."
+msgstr "Enviado DCC VOICE (%s) a Qs, à espera que o cliente remoto conecte..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:781
+msgid "DCC VOICE request not sent: awaiting manual connections"
+msgstr "Pedido DCC VOICE não enviado: a esperar conexões manuais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:885
+#, c-format
+msgid "Input buffer: %d bytes"
+msgstr "Buffer de entrada: %d bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:887
+#, c-format
+msgid "Output buffer: %d bytes"
+msgstr "Buffer de saída: %d bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:910
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:277
+msgid "DCC Failed: %Q"
+msgstr "DCC falhado: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:939
+#, c-format
+msgid "Actual codec used is '%s'"
+msgstr "O codec actual usado é '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:1023
+#, c-format
+msgid "Volume: %i"
+msgstr "Volume: %i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:91
+msgid ""
+"This window has no associated IRC context (an IRC context is required unless "
+"-c or -n are passed)"
+msgstr ""
+"Esta janela não tem contexto de IRC associado (é preciso um contexto IRC a "
+"não ser que as opções -c ou -n passem)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:104
+msgid ""
+"You're not connected to a server (an active connection is required unless -c "
+"or -n are passed)"
+msgstr ""
+"Não está conectado num servidor (é precisa uma conexão activa a não ser que "
+"as opções -c ou -n passem)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:129
+msgid "Unable to get address of interface %Q"
+msgstr "Não é possível obter o endereço do interface %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:139
+msgid "No suitable interfaces to listen on, use -i"
+msgstr "Não há interfaces adequados para escutar, use -i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:172
+msgid "This executable was built without SSL support, -s switch ignored"
+msgstr "Este executável foi compilado sem suporte SSL, opção -s ignorada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:657
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1159
+msgid "-c requires -i and -p"
+msgstr "-c requer -i e -p"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:634
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:730
+msgid "<unknown size>"
+msgstr "<tamanho desconhecido>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:890
+msgid "This executable has been built without SSL support, -s switch ignored"
+msgstr "Este executável foi compilado sem suporte SSL, opção -s ignorada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:960
+msgid "This executable has no SSL support, -s switch ignored"
+msgstr "Este executável não tem suporte SSL, opção -s ignorada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1114
+msgid "DCC VOICE support not enabled at compilation time"
+msgstr "Suporte DCC VOICE não activado na compilação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1132
+msgid "Invalid sample rate specified, defaulting to 8000"
+msgstr "Frequência de exemplo indicada inválida, a predefinir para 8000"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1148
+msgid "Invalid codec specified, defaulting to 'adpcm'"
+msgstr "Codec indicado inválido, a predefinir para 'adpcm'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1577
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2542
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2562
+msgid "The current window has no associated DCC session"
+msgstr "A janela actual não tem uma sessão DCC associada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1582
+msgid "The specified parameter is not a valid DCC identifier"
+msgstr "O parâmetro indicado não é um identificador DCC válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1662
+msgid "This DCC session is not a DCC transfer session"
+msgstr "Esta sessão DCC não é uma sessão de transferência DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2553
+msgid "The specified window identifier is not valid"
+msgstr "O identificador de janelas indicado não é válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:260
+msgid "WARNING: The peer is sending garbage data past the end of the file"
+msgstr ""
+"AVISO: A máquina remota está a enviar lixo após o fim do envio do ficheiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:261
+msgid ""
+"WARNING: Ignoring data past the declared end of file and closing the "
+"connection"
+msgstr "AVISO: A ignorar envio de dados da máquina remota e a fechar a conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:362
+msgid ""
+"Data transfer terminated, waiting 30 seconds for the peer to close the "
+"connection..."
+msgstr ""
+"Transferência de dados terminada, a esperar 30 segundos para que a máquina "
+"remota feche a conexão..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:369
+msgid "Data transfer was terminated 30 seconds ago, closing the connection"
+msgstr "A transferência de dados terminou à 30 segundos, a fechar a conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:600
+msgid "WARNING: Received data in a DCC TSEND, there should be no acknowledges"
+msgstr ""
+"AVISO: Nos dados recebidos de um DCC TSEND, não deve haver confirmações"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:732
+#, c-format
+msgid "TRANSFER %d"
+msgstr "TRANSFERÊNCIA %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:755
+msgid "Setting up the connection"
+msgstr "A configurar a conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:814
+msgid "Attempting a passive DCC %1 connection"
+msgstr "A tentar uma conexão DCC %1 passiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:818
+msgid "Attempting an active DCC %1 connection"
+msgstr "A tentar uma conexão DCC %1 activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:844
+msgid "Sent DCC RESUME request to %1, waiting for ACCEPT"
+msgstr "Enviado um DCC RESUME pedido por %1, a esperar por ACCEPT"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:914
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:925
+msgid "Aborted"
+msgstr "Abortado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:924
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1603
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1678
+msgid "Transfer failed: "
+msgstr "Transferência falhada: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:936
+msgid "Configure Bandwidth..."
+msgstr "Configurar Largura de Banda..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:938
+msgid "Resend DCC"
+msgstr "Reenviar DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:939
+msgid "Resend TDCC"
+msgstr "Reenviar TDCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:940
+msgid "Resend RevDCC"
+msgstr "Reenviar RevDCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:944
+msgid "Abort"
+msgstr "Abortar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1135
+msgid "From: "
+msgstr "De: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1136
+msgid "To: "
+msgstr "Para: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1246
+msgid "%1 of %2 (%3%)"
+msgstr "%1 de %2 (%3%)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1250
+msgid "%1"
+msgstr "%1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1263
+msgid "Spd:"
+msgstr "Vel:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1278
+msgid "Avg:"
+msgstr "Média:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1349
+msgid "Transfer Log"
+msgstr "Registo de Transferência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1480
+msgid "Contacting host %1 on port %2"
+msgstr "A contactar o endereço %1 no porto %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1487
+msgid "Listening on interface %1 port %2"
+msgstr "A escutar no interface %1 porto %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1510
+msgid "The local IP address is private, determining from IRC server: %1"
+msgstr "O endereço IP local é privado, a determinar do servidor IRC: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1561
+msgid "Sent DCC %1 request to %2, waiting for remote client to connect..."
+msgstr "Enviado DCC %1 a %2, à espera que o cliente remoto conecte..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1563
+msgid "DCC %1 request not sent, awaiting manual connection"
+msgstr "Pedido DCC %1 não enviado, a esperar conexão manual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1582
+msgid "[SSL ERROR]: %1"
+msgstr "[ERRO SSL]: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1625
+msgid "DCC %s transfer with %Q@%Q:%Q completed: \r![!dbl]play $0\r%s\r"
+msgstr "Transferência DCC %s com %Q@%Q:%Q completa: \r![!dbl]play $0\r%s\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1640
+msgid "Transfer completed"
+msgstr "Transferência completa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1687
+msgid "Connected to %1:%2"
+msgstr "Conectado a %1:%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1688
+msgid "Local end is %1:%2"
+msgstr "Extremo local é %1:%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1732
+msgid "Transferring data"
+msgstr "A transferir dados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1758
+msgid "RESUME accepted, transfer will begin at position %1"
+msgstr "RESUME aceite, a transferência começará na posição %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1789
+msgid "Internal error in RESUME request"
+msgstr "Erro interno no pedido RESUME"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1794
+msgid "Invalid RESUME request: Position %1 is larger than file size"
+msgstr "Pedido RESUME inválido: a posição %1 é maior que o tamanho do ficheiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1798
+msgid "Accepting RESUME request, transfer will begin at position %1"
+msgstr "Aceitar pedido RESUME, a transferência começará na posição %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1830
+msgid "Configure bandwidth for DCC transfer %1"
+msgstr "Configurar largura de banda para a transferência DCC %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1833
+msgid "Limit upload bandwidth to"
+msgstr "Limitar largura de banda de envio para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1833
+msgid "Limit download bandwidth to"
+msgstr "Limitar largura de banda de transferência para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1846
+msgid "bytes/sec"
+msgstr "bytes/seg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1850
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:142
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:78
+msgid "Attempting a passive DCC CANVAS connection"
+msgstr "A tentar uma conexão passiva DCC CANVAS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:98
+msgid ""
+"Sent DCC CANVAS request to %Q, waiting for the remote client to connect..."
+msgstr ""
+"Pedido DCC CANVAS enviado a %Q, a esperar que o cliente remoto conecte..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:100
+msgid "DCC CANVAS request not sent: awaiting manual connections"
+msgstr "Pedido DCC CANVAS não enviado: a esperar conexões manuais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:104
+msgid "Attempting an active DCC CANVAS connection"
+msgstr "A tentar uma conexão DCC CANVAS activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1563
+msgid "&Line"
+msgstr "&Linha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1564
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1572
+msgid "&Rectangle"
+msgstr "&Rectângulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1565
+msgid "&Ellipse"
+msgstr "&Elipse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1566
+msgid "&Pie"
+msgstr "&Tarte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1567
+msgid "&Chord"
+msgstr "A&corde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1569
+msgid "&Rich text (html)"
+msgstr "Texto en&riquecido (html)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1571
+msgid "&Triangle"
+msgstr "&Triângulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1573
+msgid "&Pentagon"
+msgstr "&Pentágono"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1574
+msgid "&Hexagon"
+msgstr "&Hexágono"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1576
+msgid "&Shape"
+msgstr "&Figura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1577
+msgid "&Item"
+msgstr "&Item"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1578
+msgid "&Polygons"
+msgstr "&Polígonos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1580
+msgid "&Insert"
+msgstr "&Inserir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:77
+msgid "Unable to process the above request: %Q, %Q"
+msgstr "Não é possível processar o pedido anterior: %Q, %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:79
+msgid "Ignoring and notifying failure"
+msgstr "Ignorar e notificar falha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:79
+msgid "Ignoring"
+msgstr "Ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:95
+#, c-format
+msgid "Concurrent transfer limit reached (%u of %u transfers running)"
+msgstr ""
+"Limite de transferências concorrentes alcançado (%u de %u transferências a "
+"correr)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:111
+#, c-format
+msgid "Slot limit reached (%u slots of %u)"
+msgstr "Limite de Slots alcançado (%u slots de %u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:120
+msgid "Too many pending connections"
+msgstr "Demasiadas conexões pendentes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:156
+#, c-format
+msgid "Invalid port number %s"
+msgstr "Número de porta inválido %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:172
+#, c-format
+msgid "Invalid IP address in old format %s"
+msgstr "Endereço de IP inválido em formato antigo %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:191
+#, c-format
+msgid "Invalid IP address %s"
+msgstr "Endereço de IP inválido %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:258
+#, c-format
+msgid ""
+"The above request is broken: The second parameter is '%s' and should be "
+"'chat', trying to continue"
+msgstr ""
+"O pedido anterior é incorrecto: o segundo parâmetro é '%s' e deveria ser "
+"'chat', a tentar continuar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:270
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC CHAT is not available"
+msgstr ""
+"Este executável foi compilado sem suporte SSL, a extensão SSL para DCC CHAT "
+"não está disponível"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:321
+msgid ""
+"The above request is broken: it looks like a zero port tag acknowledge but I "
+"have either never seen this tag or it was sent more than 120 seconds ago"
+msgstr ""
+"O pedido seguinte está danificado: parece uma marca de porta zero "
+"reconhecida, mas nunca se viu esta marca ou já foi enviado à mais de 120 "
+"segundos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:322
+msgid "It seems that I haven't requested this dcc chat"
+msgstr "Parece que não foi pedido este dcc chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:442
+msgid ""
+"The above request is broken: The fourth parameter should be the file size "
+"but does not appear to be an unsigned number, trying to continue"
+msgstr ""
+"O seguinte pedido é incorrecto: o quarto parâmetro deveria ser o tamanhodo "
+"ficheiro, mas não parece ser um número sem sinal, a tentar continuar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:600
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:738
+msgid ""
+"The above request is broken: The filename contains path components, "
+"stripping the leading path and trying to continue"
+msgstr ""
+"O seguinte pedido é incorrecto: o nome do ficheiro contém um componentes da "
+"localização, a remover a localização indicada e a tentar continuar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:466
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC SEND is not available"
+msgstr ""
+"Este executável foi compilado sem suporte SSL, a extensão SSL para DCC CHAT "
+"não está disponível"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:528
+#, c-format
+msgid ""
+"Can't proceed with DCC RECV: Transfer not initiated for file %s on port %s"
+msgstr ""
+"Não é possível com DCC REVC: transferência não iniciada do ficheiro %s na "
+"porta %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:553
+#, c-format
+msgid "Invalid resume position argument '%s'"
+msgstr "Resumo inválido do argumento de posição '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:565
+#, c-format
+msgid ""
+"Can't proceed with DCC SEND: Transfer not initiated for file %s on port %s, "
+"or invalid resume size"
+msgstr ""
+"Não é possível prosseguir com o DCC SEND: transferência não iniciada do "
+"ficheiro %s, na porta %s, ou resumo de tamanho inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:590
+msgid ""
+"The above request has resume file size missing, assuming a resume file size "
+"of 0"
+msgstr ""
+"O seguinte pedido tem falta de tamanho para continuar o resumo, assumir 0 "
+"como tamanho de ficheiro para resumo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:614
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC RECV is not available"
+msgstr ""
+"Este executável foi compilado sem suporte SSL, extensão SSL para DCC RECV "
+"não disponível"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:629
+#, c-format
+msgid "Invalid RECV request: Position %u is is larger than file size"
+msgstr "Pedido RECV inválido: a posição %u é maior que o tamanho do ficheiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:683
+msgid "%Q [%Q@%Q] is ready to receive the file \"%s\""
+msgstr "%Q [%Q@%Q] está pronto para receber o ficheiro \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:689
+#, c-format
+msgid "The remote client is listening on interface %s and port %s"
+msgstr "O cliente remoto está a escutar no interface %s e porta %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:696
+msgid ""
+"Use %c\r![!dbl]dcc.send %s -i=%s -p=%s %Q\r/dcc.send %s -i=%s -p=%s %Q\r%c "
+"to send the file (or double-click on the socket)"
+msgstr ""
+"Usar %c\r![!dbl]dcc.send %s -i=%s -p=%s %Q\r/dcc.send %s -i=%s -p=%s %Q\r%c "
+"para enviar o ficheiro (ou duplo clique no socket)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:728
+msgid ""
+"The above request is broken: The fourth parameter should be the file size "
+"but does not appear to be an unsigned number; trying to continue"
+msgstr ""
+"O pedido anterior está falhado: o quarto parâmetro devia ser o tamanho do "
+"arquivo mas não parece ser um número sem sinal; tentar continuar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:752
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC RSEND is not available"
+msgstr ""
+"Este executavel foi compilado sem suporte SSL, a extensão SSL para DCC RSEND "
+"não está disponivel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:763
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:932
+msgid "(unknown)"
+msgstr "(desconhecido)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:918
+msgid "No suitable interface to listen on, trying to continue anyway..."
+msgstr "Sem interface onde fazer escutas, a tentar continuar apesar de tudo..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:835
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC GET is not available"
+msgstr ""
+"Este executavel foi compilado sem suporte SSL, a extenão SSL para DCC GET "
+"não está disponivel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:846
+msgid "No file offer named '%s' (with size %s) available for %Q [%Q@%Q]"
+msgstr ""
+"Nenhuma oferta de ficheiro chamada '%s' (com tamanho %s) disponível para %Q "
+"[%Q@%Q]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:847
+msgid "\"any\""
+msgstr "\"qualquer\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:891
+msgid ""
+"Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering "
+"DCC %s since we can't accept incoming connections (user option)"
+msgstr ""
+"A aceitar uma petição do ficheiro de %Q [%Q@%Q] para '%s' (ficheiro real: %"
+"Q), a oferecer DCC %s já que não é possível aceitar conexões (opção do "
+"utilizador)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:948
+msgid ""
+"Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering "
+"DCC %Q"
+msgstr ""
+"A aceitar um pedido de ficheiro de %Q [%Q@%Q] para '%s' (ficheiro real: %Q), "
+"a oferecer DCC %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:982
+msgid ""
+"The above request cannot be accepted: DCC VOICE support not enabled at "
+"compilation time "
+msgstr ""
+"O seguinte pedido não pode ser aceite: o suporte DCC VOICE não foi activado "
+"na compilação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:992
+#, c-format
+msgid "The above request cannot be accepted: Unsupported codec '%s'"
+msgstr "O seguinte pedido não pode ser aceite: codec '%s' não suportado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:1005
+#, c-format
+msgid ""
+"The above request appears to be broken: Invalid sample-rate '%s', defaulting "
+"to 8000"
+msgstr ""
+"O seguinte pedido parece estar falhado: frequencia de amostra '%s' inválida, "
+"a predefinir para 8000"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:1151
+#, c-format
+msgid "Unknown DCC type '%s'"
+msgstr "Tipo de DCC desconhecido '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:64
+msgid "&Accept"
+msgstr "&Aceitar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:69
+msgid "&Reject"
+msgstr "&Rejeitar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:129
+msgid "&Rename"
+msgstr "&Renomear"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:133
+msgid "Over&write"
+msgstr "&Sobregravar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:137
+msgid "Re&sume"
+msgstr "Re&sumir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:149
+msgid "File Already Exists - KVIrc"
+msgstr "O Ficheiro Já Existe - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/utils.cpp:122
+msgid "Can't retrieve a suitable local IPV4 address"
+msgstr "Não é possível obter um endereço IPV4 local apropriado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/utils.cpp:140
+#, c-format
+msgid ""
+"Can't listen on default interface '%s': fix it in the options dialog, "
+"disabling the option (so the next dcc will work)"
+msgstr ""
+"Não é possível escutar no interface predefinido '%s': corrija-o no diálogo "
+"de opções, a desactivar a opção (para que o próximo dcc funcione)"
diff --git a/po/modules/dcc/dcc_pt_BR.po b/po/modules/dcc/dcc_pt_BR.po
new file mode 100644
index 00000000..f50a2269
--- /dev/null
+++ b/po/modules/dcc/dcc_pt_BR.po
@@ -0,0 +1,1052 @@
+# translation of dcc_pt_BR.po to
+# translation of dcc_pt_BR.po to
+# translation of dcc.pot to Brazilian-Protugues
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Adilson GonAalves Soares Junior <[email protected]>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: dcc_pt_BR\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2004-11-15 19:17+0000\n"
+"Last-Translator: \n"
+"Language-Team: <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/descriptor.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:642
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:666
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:803
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:805
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:484
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:514
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:136
+msgid "unknown"
+msgstr "desconhecido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:783
+msgid "Choose Files to Send - KVIrc"
+msgstr "Escolha os arquivos para enviar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:189
+#, fuzzy
+msgid "Can't send DCC %Q request to %Q: IRC connection has been terminated"
+msgstr ""
+"Não foi possível enviar o pedido de DCC %s para %s: A conexão de IRC foi "
+"terminada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:821
+#, fuzzy
+msgid "Can't open file %Q for reading"
+msgstr "Não foi possível abrir o arquivo %s para leitura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:269
+msgid ""
+"<b>%1 [%2@%3]</b> requests a <b>Direct Client Connection</b> in <b>%4</b> "
+"mode.<br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> pedida uma <b>Conexão Direta com o Cliente (DCC)</b> em "
+"modo <b>%4</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:274
+msgid "The connection will be secured using SSL.<br>"
+msgstr "A conexão estará segura se utilizar SSL.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:280
+msgid "You will be the passive side of the connection.<br>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:284
+msgid "The connection target will be host <b>%1</b> on port <b>%2</b><br>"
+msgstr "O destino da conexão será a máquina <b>%1</b> na porta <b>%2</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:543
+msgid "DCC %1 Request - KVIrc"
+msgstr "Pedido de DCC %1 - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:340
+msgid ""
+"<b>%1 [%2@%3]</b> requests a<br><b>Direct Client Connection</b> in <b>VOICE</"
+"b> mode.<br>The connection target will be host <b>%4</b> on port <b>%5</"
+"b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> pedida uma<br><b>Conexão Directa com o Cliente (DCC)</b> "
+"em modo <b>VOICE</b>.<br>O destino da conexão será a máquina <b>%4</b> na "
+"porta <b>%5</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:346
+msgid "DCC VOICE request"
+msgstr "Pedido de DCC VOICE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:411
+msgid ""
+"<b>%1 [%2@%3]</b> requests a<br><b>Direct Client Connection</b> in "
+"<b>CANVAS</b> mode.<br>The connection target will be host <b>%4</b> on port "
+"<b>%5</b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> pedida uma<br><b>Conexão Direta com o Cliente (DCC)</b> em "
+"modo <b>CANVAS</b>.<br>O destino da conexão será a máquina <b>%4</b> na "
+"porta <b>%5</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:417
+msgid "DCC CANVAS request"
+msgstr "Pedido de DCC CANVAS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:502
+#, fuzzy
+msgid ""
+"<b>%1 [%2@%3]</b> wants to send you the file '<b>%4</b>', <b>%5</b> large."
+"<br>The connection target will be host <b>%6</b> on port <b>%7</b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> quer te enviar um arquivo '<b>%4</b>', de <b>%5</b> bytes "
+"de tamanho.<br>O destino da conexão será a máquina <b>%6</b> na porta <b>%7</"
+"b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:515
+#, fuzzy
+msgid ""
+"<b>%1 [%2@%3]</b> wants to send you the file '<b>%4</b>', <b>%5</b> large."
+"<br>You will be the passive side of the connection.<br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> quer te enviar um arquivo '<b>%4</b>', de <b>%5</b> bytes "
+"de tamanho.<br>Você será o lado passivo da conexão.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:528
+msgid ""
+"<center><b>Note:</b></center>The file appears to be an avatar that you have "
+"requested. You should not change its filename. Save it in a location where "
+"KVIrc can find it, such as the 'avatars', 'incoming', or 'pics' directories, "
+"your home directory, or the save directory for the incoming file type. The "
+"default save path will probably work. You can instruct KVIrc to accept "
+"incoming avatars automatically by setting the option "
+"<tt>boolAutoAcceptIncomingAvatars</tt> to true.<br>"
+msgstr ""
+"<center><b>Nota:</b></center>O arquivo parece ser um avatar que você "
+"solicitou. Você não deve mudar o nome do arquivo. Salve-o em um diretório "
+"onde o KVirc o possa encontrar, como 'avatares', diretórios de 'fotos', seu "
+"diretório pessoal, ou o diretório que estão os arquivos recebidos. "
+"Provavelmente o diretório pré -definido para salvar arquivos irá funcionar. "
+"Você pode fazer com que o KVIrc receba avatares automáticamente ao "
+"configurar/ativar a opção <tt>Aceitar receber avatares automaticamente</tt>."
+"<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:557
+#, fuzzy
+msgid "Auto-accepting DCC %Q request from %Q!%Q@%Q for file %Q"
+msgstr ""
+"Aceitar automaticamente pedidos de DCC %s de %s!%s@%s para o arquivo %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:618
+#, fuzzy
+msgid "Choose Files to Save - KVIrc"
+msgstr "Escolha os arquivos para enviar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:631
+#, fuzzy
+msgid "Auto-saving DCC %Q file %Q as \r![!dbl]play $0\r%Q\r"
+msgstr "Salvar automaticamente o DCC %s arquivo %s como \r![!dbl]play $0\r%s\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:665
+#, fuzzy
+msgid ""
+"The file '<b>%1</b>' already exists and is <b>%2</b> large.<br>Do you wish "
+"to<br><b>overwrite</b> the existing file,<br> <b>auto-rename</b> the new "
+"file, or<br><b>resume</b> an incomplete download?"
+msgstr ""
+"O arquivo '<b>%1</b>' já existe e tem <b>%2</b> bytes de tamanho."
+"<br>Deseja<br><b>sobrescrever</b> o arquivo existente,<br> <b>auto-renomear</"
+"b> o arquivo novo, ou<br><b>resumir</b> uma transferência incompleta?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:677
+#, fuzzy
+msgid ""
+"The file '<b>%1</b>' already existsand is larger than the offered one.<br>Do "
+"you wish to<br><b>overwrite</b> the existing file, or<br> <b>auto-rename</b> "
+"the new file ?"
+msgstr ""
+"O arquivo '<b>%1</b>' já existe e tem <b>%2</b> bytes de tamanho."
+"<br>Deseja<br><b>sobrescrever</b> o arquivo existente,<br> <b>auto-renomear</"
+"b> o arquivo novo, ou<br><b>resumir</b> uma transferência incompleta?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:747
+#, fuzzy
+msgid "File %s exists, auto-renaming to %Q"
+msgstr "O arquivo %s já existe, auto-renomear para %m"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:158
+#, c-format
+msgid "Attempting a passive DCC %s connection"
+msgstr "Tentando uma conexão %s DCC passiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:168
+#, c-format
+msgid "Attempting an active DCC %s connection"
+msgstr "Tentando uma conexão %s DCC ativa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:761
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:107
+#, fuzzy
+msgid "Contacting host %Q on port %Q"
+msgstr "Contactando com a máquina %s na porta %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:83
+#, fuzzy
+msgid "Listening on interface %Q port %Q"
+msgstr "Escutar a interface %s na porta %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:207
+#, c-format
+msgid "The local IP address is private, determining from IRC server: %s"
+msgstr "O endereço IP local é privado, determinando pelo servidor IRC: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1512
+msgid ""
+"The local IP address is private, but unable to determine it from the IRC "
+"server"
+msgstr ""
+"O endereço IP local é privado, e não foi possível determinar pelo servidor "
+"IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1515
+msgid ""
+"The local IP address is private, but have no IRC server to determine it from"
+msgstr ""
+"O endereço IP local é privado, mas não tem nenhum servidor IRC para o "
+"determinar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:234
+#, fuzzy
+msgid "Sent DCC %Q request to %Q, waiting for the remote client to connect..."
+msgstr "DCC %s enviado para %s, esperando que o cliente remoto conecte..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:237
+#, fuzzy
+msgid "DCC %Q request not sent, awaiting manual connection"
+msgstr "Pedido de DCC %s não foi enviado, esperando conexão manual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1574
+msgid "Low-level transport connection established"
+msgstr "Conexão de transporte de baixo nível estabelecida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1575
+msgid "Starting Secure Socket Layer handshake"
+msgstr "Iniciando negociação do Secure Socket Layer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:254
+#, c-format
+msgid "[SSL ERROR]: %s"
+msgstr "[ERRO de SSL]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:388
+msgid "Cannot send data: No active connection"
+msgstr "Não foi possível enviar dados: Não há uma conexão ativa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:344
+#, fuzzy
+msgid ""
+"The crypto engine was not able to encrypt the current message (%Q): %Q, no "
+"data was sent to the remote end"
+msgstr ""
+"O motor de criptografia não é capaz de descriptografar a mensagem atual (%"
+"Q): %s, os dados não foram enviados ao destino remoto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:403
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:827
+msgid "ERROR: %Q"
+msgstr "ERRO: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:447
+#, fuzzy
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+"A seguinte mensagem parece estar criptografada, mas o motor de criptografia "
+"falhou ao decodificá-la: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:493
+#, fuzzy
+msgid "DCC %Q failed: %Q"
+msgstr "DCC %s falhou: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:521
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:919
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:282
+#, fuzzy
+msgid "Connected to %Q:%Q"
+msgstr "Conectado a %s:%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:523
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:921
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:284
+#, fuzzy
+msgid "Local end is %Q:%Q"
+msgstr "Local de destino é %s:%s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:164
+msgid ""
+"WARNING: failed to check the soundcard duplex capabilities: if this is a "
+"half-duplex soundcard , use the DCC VOICE option to force half-duplex "
+"algorithm"
+msgstr ""
+"ATENÇÃO: falhou ao verificar se a placa de som é duplex: se esta é uma placa "
+"de som half-duplex, utilize a opção DCC VOICE para forçar um algorítmo half-"
+"duplex"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:172
+msgid ""
+"Half duplex soundcard detected, you will not be able to talk and listen at "
+"the same time"
+msgstr ""
+"Detectada placa de som half-duplex, você não será capaz de falar e ouvir ao "
+"mesmo tempo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:213
+#, c-format
+msgid ""
+"WARNING: failed to set the requested sample rate (%d): the device used "
+"closest match (%d)"
+msgstr ""
+"ATENÇÃO: falhou ao configurar a frequência de amostra solicitada (%d): o "
+"dispositivo usou a combinação mais próxima (%d)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:271
+msgid "Ops...failed to test the soundcard capabilities...expect problems..."
+msgstr ""
+"Opa...falhou ao testar as capacidades da placa de som...pode esperar "
+"problemas..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:662
+msgid "Input buffer"
+msgstr "Buffer de entrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:664
+msgid "Output buffer"
+msgstr "Buffer de saída"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:746
+msgid "Attempting a passive DCC VOICE connection"
+msgstr "Tentar uma conexão DCC VOICE passiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:751
+msgid "Attempting an active DCC VOICE connection"
+msgstr "Tentar uma conexão DCC VOICE ativa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:779
+#, fuzzy
+msgid ""
+"Sent DCC VOICE (%s) request to %Q, waiting for the remote client to "
+"connect..."
+msgstr ""
+"Enviado DCC VOICE (%s) para %s, esperando que o cliente remoto conecte..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:781
+msgid "DCC VOICE request not sent: awaiting manual connections"
+msgstr "Pedido de DCC VOICE não enviado: esperando conexões manuais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:885
+#, c-format
+msgid "Input buffer: %d bytes"
+msgstr "Buffer de entrada: %d bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:887
+#, c-format
+msgid "Output buffer: %d bytes"
+msgstr "Buffer de saída: %d bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:910
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:277
+msgid "DCC Failed: %Q"
+msgstr "DCC falhou: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:939
+#, c-format
+msgid "Actual codec used is '%s'"
+msgstr "O codec atual usado é '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:1023
+#, c-format
+msgid "Volume: %i"
+msgstr "Volume: %i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:91
+msgid ""
+"This window has no associated IRC context (an IRC context is required unless "
+"-c or -n are passed)"
+msgstr ""
+"Esta janela não tem contexto IRC associado (é necessário um contexto IRC a "
+"menos que -c ou -n sejam passado(s))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:104
+msgid ""
+"You're not connected to a server (an active connection is required unless -c "
+"or -n are passed)"
+msgstr ""
+"Você não está conectado a um servidor (uma conexão ativa é necessária a "
+"menos que -c ou -n sejam passado(s))"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:129
+#, fuzzy
+msgid "Unable to get address of interface %Q"
+msgstr "Não foi possível obter o endereço da interface %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:139
+msgid "No suitable interfaces to listen on, use -i"
+msgstr "Não existem interfaces adequadas para escutar, use -i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:172
+msgid "This executable was built without SSL support, -s switch ignored"
+msgstr "Este executável foi compilado sem suporte SSL, opção -s ignorada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:657
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1159
+msgid "-c requires -i and -p"
+msgstr "-c requer -i e -p"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:634
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:730
+msgid "<unknown size>"
+msgstr "<tamanho desconhecido>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:890
+msgid "This executable has been built without SSL support, -s switch ignored"
+msgstr "Este executável foi compilado sem suporte SSL, opção -s ignorada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:960
+msgid "This executable has no SSL support, -s switch ignored"
+msgstr "Este executável não tem suporte SSL, opção -s ignorada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1114
+msgid "DCC VOICE support not enabled at compilation time"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1132
+#, fuzzy
+msgid "Invalid sample rate specified, defaulting to 8000"
+msgstr "Frequência de exemplo '%s' inválida, passando para 8000 por padrão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1148
+#, fuzzy
+msgid "Invalid codec specified, defaulting to 'adpcm'"
+msgstr "Codec '%s' inválido, passando para 'adpcm' por padrão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1577
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2542
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2562
+msgid "The current window has no associated DCC session"
+msgstr "A janela corrente nao esta associada a uma sessão DCC "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1582
+msgid "The specified parameter is not a valid DCC identifier"
+msgstr "O paramêtro especificado nao é um identificador DCC válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1662
+msgid "This DCC session is not a DCC transfer session"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2553
+msgid "The specified window identifier is not valid"
+msgstr "O identificador de janela especificado nao é válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:260
+msgid "WARNING: The peer is sending garbage data past the end of the file"
+msgstr ""
+"ATENÇÃO: O destino (outro usuário) está enviando dados (lixo) que entram "
+"depois do fim do arquivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:261
+msgid ""
+"WARNING: Ignoring data past the declared end of file and closing the "
+"connection"
+msgstr ""
+"ATENCÃO: Ignorando dados que venham depois do envío do arquivo e fechando a "
+"conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:362
+msgid ""
+"Data transfer terminated, waiting 30 seconds for the peer to close the "
+"connection..."
+msgstr ""
+"Transferência de dados terminada, esperar 30 segundos para quem enviou "
+"fechar a conexão..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:369
+msgid "Data transfer was terminated 30 seconds ago, closing the connection"
+msgstr "Transferência de dados terminou à 30 segundos, fechando a conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:600
+msgid "WARNING: Received data in a DCC TSEND, there should be no acknowledges"
+msgstr "ATENÇÃO: Dados recebidos de um DCC TSEND, não devia haver confirmações"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:732
+#, c-format
+msgid "TRANSFER %d"
+msgstr "TRANSFERÊNCIA %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:755
+msgid "Setting up the connection"
+msgstr "Configurar a conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:814
+msgid "Attempting a passive DCC %1 connection"
+msgstr "Tentar uma conexão DCC passiva %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:818
+msgid "Attempting an active DCC %1 connection"
+msgstr "Tentar uma conexão DCC ativa %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:844
+msgid "Sent DCC RESUME request to %1, waiting for ACCEPT"
+msgstr "DCC RESUME enviado pedido por %1, esperando que aceite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:914
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:925
+msgid "Aborted"
+msgstr "Abortado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:924
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1603
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1678
+msgid "Transfer failed: "
+msgstr "Transferência falhou: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:936
+msgid "Configure Bandwidth..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:938
+msgid "Resend DCC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:939
+msgid "Resend TDCC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:940
+msgid "Resend RevDCC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:944
+msgid "Abort"
+msgstr "Abortar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1135
+msgid "From: "
+msgstr "De: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1136
+msgid "To: "
+msgstr "Para: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1246
+#, fuzzy
+msgid "%1 of %2 (%3%)"
+msgstr "%1 de %2 bytes (%3%)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1250
+msgid "%1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1263
+msgid "Spd:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1278
+msgid "Avg:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1349
+msgid "Transfer Log"
+msgstr "Registo de Transferências"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1480
+msgid "Contacting host %1 on port %2"
+msgstr "Contactar a máquina %1 na porta %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1487
+msgid "Listening on interface %1 port %2"
+msgstr "Escutar a interface %1 na porta %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1510
+msgid "The local IP address is private, determining from IRC server: %1"
+msgstr "O endereço IP local é privado, determinando pelo servidor IRC: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1561
+msgid "Sent DCC %1 request to %2, waiting for remote client to connect..."
+msgstr "DCC %1 enviado para %2, esperando que o cliente remoto conecte..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1563
+msgid "DCC %1 request not sent, awaiting manual connection"
+msgstr "DCC %1 não enviado, esperando conexão manual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1582
+msgid "[SSL ERROR]: %1"
+msgstr "[ERRO SSL]: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1625
+#, fuzzy
+msgid "DCC %s transfer with %Q@%Q:%Q completed: \r![!dbl]play $0\r%s\r"
+msgstr "Transferência DCC %s com %s@%s:%s completa: \r![!dbl]play $0\r%s\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1640
+msgid "Transfer completed"
+msgstr "Transferência completa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1687
+msgid "Connected to %1:%2"
+msgstr "Conectado a %1:%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1688
+msgid "Local end is %1:%2"
+msgstr "A extremidade local é %1:%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1732
+msgid "Transferring data"
+msgstr "Transferindo dados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1758
+msgid "RESUME accepted, transfer will begin at position %1"
+msgstr "RESUME aceito, a transferência começará na posição %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1789
+msgid "Internal error in RESUME request"
+msgstr "Erro interno no pedido RESUME"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1794
+msgid "Invalid RESUME request: Position %1 is larger than file size"
+msgstr "Pedido RESUME inválido: a posição %1 é maior que o tamanho do arquivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1798
+msgid "Accepting RESUME request, transfer will begin at position %1"
+msgstr "Aceitar pedido RESUME, a transferência começará na posição %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1830
+msgid "Configure bandwidth for DCC transfer %1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1833
+msgid "Limit upload bandwidth to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1833
+msgid "Limit download bandwidth to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1846
+#, fuzzy
+msgid "bytes/sec"
+msgstr "Media: ? bytes/seg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1850
+msgid "OK"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:142
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:78
+msgid "Attempting a passive DCC CANVAS connection"
+msgstr "Tentando uma conexão passiva DCC CANVAS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:98
+#, fuzzy
+msgid ""
+"Sent DCC CANVAS request to %Q, waiting for the remote client to connect..."
+msgstr ""
+"Enviado pedido DCC CANVAS para %s, esperando que o cliente remoto conecte..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:100
+msgid "DCC CANVAS request not sent: awaiting manual connections"
+msgstr "Pedido DCC CANVAS não enviado; esperando conexões manuais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:104
+msgid "Attempting an active DCC CANVAS connection"
+msgstr "Tentando uma conexão DCC CANVAS ativa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1563
+msgid "&Line"
+msgstr "&Linha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1564
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1572
+msgid "&Rectangle"
+msgstr "&Retângulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1565
+msgid "&Ellipse"
+msgstr "&Elipse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1566
+msgid "&Pie"
+msgstr "&Torta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1567
+msgid "&Chord"
+msgstr "&Corda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1569
+msgid "&Rich text (html)"
+msgstr "Texto en&riquecido (html)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1571
+msgid "&Triangle"
+msgstr "&Triângulo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1573
+msgid "&Pentagon"
+msgstr "&Pentágono"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1574
+msgid "&Hexagon"
+msgstr "&Hexágono"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1576
+msgid "&Shape"
+msgstr "&Figura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1577
+msgid "&Item"
+msgstr "&Item"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1578
+msgid "&Polygons"
+msgstr "&Polígonos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1580
+msgid "&Insert"
+msgstr "&Inserir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:77
+#, fuzzy
+msgid "Unable to process the above request: %Q, %Q"
+msgstr "Incapaz de processar o pedido anterior: %s, %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:79
+msgid "Ignoring and notifying failure"
+msgstr "Ignorando e notificando a falha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:79
+msgid "Ignoring"
+msgstr "Ignorando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:95
+#, c-format
+msgid "Concurrent transfer limit reached (%u of %u transfers running)"
+msgstr ""
+"Limite de transferências correntes alcançado (%u de %u transferências em "
+"execução)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:111
+#, c-format
+msgid "Slot limit reached (%u slots of %u)"
+msgstr "Limite de Slots alcançado (%u slots de %u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:120
+msgid "Too many pending connections"
+msgstr "Muitas conexões pendentes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:156
+#, c-format
+msgid "Invalid port number %s"
+msgstr "Número de porta inválido %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:172
+#, c-format
+msgid "Invalid IP address in old format %s"
+msgstr "Endereço de IP Inválido em formato antigo %s "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:191
+#, c-format
+msgid "Invalid IP address %s"
+msgstr "Endereço de IP inválido %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:258
+#, c-format
+msgid ""
+"The above request is broken: The second parameter is '%s' and should be "
+"'chat', trying to continue"
+msgstr ""
+"O pedido anterior é incorrecto: o segundo parâmetro é '%s' e deveria ser "
+"'chat', tentando continuar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:270
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC CHAT is not available"
+msgstr ""
+"Este executável foi compilado sem suporte SSL, a extensão SSL para DCC CHAT "
+"não está disponível"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:321
+msgid ""
+"The above request is broken: it looks like a zero port tag acknowledge but I "
+"have either never seen this tag or it was sent more than 120 seconds ago"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:322
+msgid "It seems that I haven't requested this dcc chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:442
+msgid ""
+"The above request is broken: The fourth parameter should be the file size "
+"but does not appear to be an unsigned number, trying to continue"
+msgstr ""
+"O seguinte pedido esta quebrado: o quarto parâmetro deveria ser o tamanhodo "
+"arquivo, mas não parece ser um número sem sinal, tentando continuar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:600
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:738
+msgid ""
+"The above request is broken: The filename contains path components, "
+"stripping the leading path and trying to continue"
+msgstr ""
+"O seguinte pedido esta quebrado: o nome do arquivo contém um caminho de "
+"componentes, tirando o caminho indicado e tentando continuar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:466
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC SEND is not available"
+msgstr ""
+"Este executável foi compilado sem suporte SSL, a extensão SSL para DCC CHAT "
+"não está disponível"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:528
+#, c-format
+msgid ""
+"Can't proceed with DCC RECV: Transfer not initiated for file %s on port %s"
+msgstr ""
+"Não foi possível prosseguir com DCC REVC: transferência do arquivo %s na "
+"porta %s não iniciada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:553
+#, c-format
+msgid "Invalid resume position argument '%s'"
+msgstr "Argumento '%s' da posição de resume inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:565
+#, c-format
+msgid ""
+"Can't proceed with DCC SEND: Transfer not initiated for file %s on port %s, "
+"or invalid resume size"
+msgstr ""
+"Não foi possível prosseguir com o DCC SEND: transferência do arquivo %s, na "
+"porta %s não iniciada, ou resumo de tamanho inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:590
+msgid ""
+"The above request has resume file size missing, assuming a resume file size "
+"of 0"
+msgstr ""
+"O pedido acima falta o tamanho do arquivo para continuar o resumo, assumindo "
+"0 como tamanho de arquivo para resumo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:614
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC RECV is not available"
+msgstr ""
+"Este executável foi compilado sem suporte SSL, extensão SSL para DCC RECV "
+"não disponível"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:629
+#, c-format
+msgid "Invalid RECV request: Position %u is is larger than file size"
+msgstr "Pedido RECV inválido: posição %u é maior que o tamanho do arquivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:683
+msgid "%Q [%Q@%Q] is ready to receive the file \"%s\""
+msgstr "%s [%s@%s] está pronto para receber o arquivo \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:689
+#, c-format
+msgid "The remote client is listening on interface %s and port %s"
+msgstr "O cliente remoto está escutando na interface %s e porta %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:696
+msgid ""
+"Use %c\r![!dbl]dcc.send %s -i=%s -p=%s %Q\r/dcc.send %s -i=%s -p=%s %Q\r%c "
+"to send the file (or double-click on the socket)"
+msgstr ""
+"Usar %c\r![!dbl]dcc.send %s -i=%s -p=%s %s\r/dcc.send %s -i=%s -p=%s %s\r%"
+"cpara enviar o arquivo (ou clique duas vezes no socket)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:728
+msgid ""
+"The above request is broken: The fourth parameter should be the file size "
+"but does not appear to be an unsigned number; trying to continue"
+msgstr ""
+"O pedido anterior está errado: o quarto parâmetro devia ser o tamanho do "
+"arquivo mas não parece ser um inteiro sem sinal; tentando continuar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:752
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC RSEND is not available"
+msgstr ""
+"Este executavel foi compilado sem suporte SSL, a extensão SSL para DCC RSEND "
+"não está disponivel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:763
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:932
+msgid "(unknown)"
+msgstr "(Desconhecido)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:918
+msgid "No suitable interface to listen on, trying to continue anyway..."
+msgstr ""
+"Sem interface apropriada para escutar, tentando continuar de qualquer modo..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:835
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC GET is not available"
+msgstr ""
+"Este executavel foi compilado sem suporte SSL, a extenão SSL para DCC GET "
+"não está disponivel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:846
+msgid "No file offer named '%s' (with size %s) available for %Q [%Q@%Q]"
+msgstr ""
+"Nenhum arquivo compartilhado chamado '%s' (com tamanho %s) disponivel para %"
+"Q [%Q@%Q]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:847
+msgid "\"any\""
+msgstr "\"qualquer\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:891
+msgid ""
+"Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering "
+"DCC %s since we can't accept incoming connections (user option)"
+msgstr ""
+"Aceitando pedido de arquivo de %Q [%Q@%Q] para '%s' (arquivo real: %Q), "
+"oferecendo DCC %s já que não podemos aceitar conexões (opção do usuário)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:948
+#, fuzzy
+msgid ""
+"Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering "
+"DCC %Q"
+msgstr ""
+"Aceitando pedido do arquivo de %Q [%Q@%Q] para '%s' (arquivo real: %Q),"
+"oferecendo DCC %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:982
+#, fuzzy
+msgid ""
+"The above request cannot be accepted: DCC VOICE support not enabled at "
+"compilation time "
+msgstr "O seguinte pedido não pode ser aceito: codec não suportado '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:992
+#, c-format
+msgid "The above request cannot be accepted: Unsupported codec '%s'"
+msgstr "O seguinte pedido não pode ser aceito: codec não suportado '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:1005
+#, c-format
+msgid ""
+"The above request appears to be broken: Invalid sample-rate '%s', defaulting "
+"to 8000"
+msgstr ""
+"O seguinte pedido parece estar quebrado: frequência de amostra '%s' "
+"inválida, colocar 8000 por padrão "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:1151
+#, c-format
+msgid "Unknown DCC type '%s'"
+msgstr "Tipo DCC desconhecido '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:64
+msgid "&Accept"
+msgstr "&Aceitar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:69
+msgid "&Reject"
+msgstr "&Rejeitar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:129
+msgid "&Rename"
+msgstr "&Renomear"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:133
+msgid "Over&write"
+msgstr "&Sobrescrever"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:137
+msgid "Re&sume"
+msgstr "Re&sumir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:149
+msgid "File Already Exists - KVIrc"
+msgstr "O arquivo já existe - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/utils.cpp:122
+msgid "Can't retrieve a suitable local IPV4 address"
+msgstr "Não foi possível encontrar um endereço IPV4 local apropriado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/utils.cpp:140
+#, c-format
+msgid ""
+"Can't listen on default interface '%s': fix it in the options dialog, "
+"disabling the option (so the next dcc will work)"
+msgstr ""
+"Impossivel escutar a interface padrão '%s': corrija isto no diálogo de "
+"opções, desativando a opção (para que o próximo dcc funcione)"
+
+#~ msgid "%1 bytes"
+#~ msgstr "%1 bytes"
+
+#~ msgid "Choose Save Location - KVIrc"
+#~ msgstr "Escolha o diretório para salvar - KVIrc"
+
+#~ msgid "Contacting host %s on port %s"
+#~ msgstr "Contactando com a máquina %s na porta %s"
+
+#~ msgid "Missing target nickname"
+#~ msgstr "Faltando apelido de destino"
+
+#~ msgid "Missing filename"
+#~ msgstr "Faltando o nome do arquivo"
+
+#~ msgid "The file size is not an positive number"
+#~ msgstr "O tamanho do arquivo não é um número positivo"
+
+#~ msgid "Invalid file size specified, no message sent"
+#~ msgstr "Tamanho do arquivo especificado é inválido, mensagem não enviada"
+
+#~ msgid "Avg: %1 bytes/sec"
+#~ msgstr "Media: %1 bytes/seg"
diff --git a/po/modules/dcc/dcc_ru.po b/po/modules/dcc/dcc_ru.po
new file mode 100644
index 00000000..7d892d3e
--- /dev/null
+++ b/po/modules/dcc/dcc_ru.po
@@ -0,0 +1,1020 @@
+# translation of dcc_ru.po to russian
+# translation of dcc_ru.po to русский
+# translation of dcc.po to русский
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Valerius <[email protected]>, 2004, 2005.
+# Valeriy Girchenko <[email protected]>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: dcc_ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-12-27 23:02+0200\n"
+"Last-Translator: Valerius <[email protected]>\n"
+"Language-Team: russian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10.2\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/descriptor.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:642
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:666
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:803
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:805
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:484
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:514
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:136
+msgid "unknown"
+msgstr "неизвестный"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:783
+msgid "Choose Files to Send - KVIrc"
+msgstr "Выберите файл для передачи - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:189
+msgid "Can't send DCC %Q request to %Q: IRC connection has been terminated"
+msgstr "Невозможно отослать DCC %Q запрос в %Q: IRC соединение закрыто"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:821
+msgid "Can't open file %Q for reading"
+msgstr "Невозможно открыть файл %Q на чтение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:269
+msgid ""
+"<b>%1 [%2@%3]</b> requests a <b>Direct Client Connection</b> in <b>%4</b> "
+"mode.<br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> запрос <b>Direct Client Connection</b> в <b>%4</b> режиме."
+"<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:274
+msgid "The connection will be secured using SSL.<br>"
+msgstr "Соединение будет использовать SSL.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:280
+msgid "You will be the passive side of the connection.<br>"
+msgstr "Вы будете пассивной стороной связи.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:284
+msgid "The connection target will be host <b>%1</b> on port <b>%2</b><br>"
+msgstr "Подключение к хосту <b>%1</b> на порт <b>%2</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:543
+msgid "DCC %1 Request - KVIrc"
+msgstr "Запрос DCC %1 - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:340
+msgid ""
+"<b>%1 [%2@%3]</b> requests a<br><b>Direct Client Connection</b> in <b>VOICE</"
+"b> mode.<br>The connection target will be host <b>%4</b> on port <b>%5</"
+"b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> запрос <br><b>Direct Client Connection</b> в <b>VOICE</b> "
+"режиме.<br> Целью соединения является хост <b>%4</b> через порт <b>%5</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:346
+msgid "DCC VOICE request"
+msgstr "Запрос DCC VOICE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:411
+msgid ""
+"<b>%1 [%2@%3]</b> requests a<br><b>Direct Client Connection</b> in "
+"<b>CANVAS</b> mode.<br>The connection target will be host <b>%4</b> on port "
+"<b>%5</b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> запрос <br><b>Direct Client Connection</b> в <b>CANVAS</b> "
+"режиме.<br>Целью соединения является хост <b>%4</b> через порт <b>%5</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:417
+msgid "DCC CANVAS request"
+msgstr "Запрос DCC CANVAS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:502
+#, fuzzy
+msgid ""
+"<b>%1 [%2@%3]</b> wants to send you the file '<b>%4</b>', <b>%5</b> large."
+"<br>The connection target will be host <b>%6</b> on port <b>%7</b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> хочет выслать вам файл '<b>%4</b>', размером <b>%5</b> "
+"байт.<br>Целью соединения является хост <b>%6</b> через порт <b>%7</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:515
+#, fuzzy
+msgid ""
+"<b>%1 [%2@%3]</b> wants to send you the file '<b>%4</b>', <b>%5</b> large."
+"<br>You will be the passive side of the connection.<br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> хочет выслать вам файл '<b>%4</b>', размером <b>%5</b> "
+"байт.<br> Вы будете пассивной стороной соединения.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:528
+msgid ""
+"<center><b>Note:</b></center>The file appears to be an avatar that you have "
+"requested. You should not change its filename. Save it in a location where "
+"KVIrc can find it, such as the 'avatars', 'incoming', or 'pics' directories, "
+"your home directory, or the save directory for the incoming file type. The "
+"default save path will probably work. You can instruct KVIrc to accept "
+"incoming avatars automatically by setting the option "
+"<tt>boolAutoAcceptIncomingAvatars</tt> to true.<br>"
+msgstr ""
+"<center><b>Примечание:</b></center> Файл является аватаром, который вы "
+"запросили. Вам не следует изменять его имя файла. Сохраните его там, где "
+"KVIrc может его найти, например в каталогах 'avatars', 'incoming', или "
+"'pics', в домашнем каталоге или в каталоге для сохранения входящих файлов. "
+"Предложенный по умолчанию путь вероятно будет лучшим вариантом. Вы можете "
+"указать KVIrc чтобы он автоматически принимал входящие аватары установив "
+"опцию <tt>boolAutoAcceptIncomingAvatars</tt> в true.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:557
+msgid "Auto-accepting DCC %Q request from %Q!%Q@%Q for file %Q"
+msgstr "Автоматический приём DCC %Q запроса из %Q!%Q@%Q для файла %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:618
+#, fuzzy
+msgid "Choose Files to Save - KVIrc"
+msgstr "Выберите файл для передачи - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:631
+msgid "Auto-saving DCC %Q file %Q as \r![!dbl]play $0\r%Q\r"
+msgstr "Автосохранение DCC %Q файла %Q как \r![!dbl]play $0\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:665
+#, fuzzy
+msgid ""
+"The file '<b>%1</b>' already exists and is <b>%2</b> large.<br>Do you wish "
+"to<br><b>overwrite</b> the existing file,<br> <b>auto-rename</b> the new "
+"file, or<br><b>resume</b> an incomplete download?"
+msgstr ""
+"Файл '<b>%1</b>' уже существует, размер - <b>%2</b> байт.<br>Вы хотите "
+"<br><b>переписать</b> существующий файл,<br> <b>автоматически переименовать</"
+"b> новый файл, или<br><b>продолжить</b> незавершённую загрузку?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:677
+msgid ""
+"The file '<b>%1</b>' already existsand is larger than the offered one.<br>Do "
+"you wish to<br><b>overwrite</b> the existing file, or<br> <b>auto-rename</b> "
+"the new file ?"
+msgstr ""
+"Файл большего размера '<b>%1</b>' уже существует.<br>Вы хотите "
+"<br><b>переписать</b> существующий файл, или<br> <b>автоматически "
+"переименовать</b> новый файл?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:747
+msgid "File %s exists, auto-renaming to %Q"
+msgstr "Файл %s существует, автоматическое переименование в %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:158
+#, c-format
+msgid "Attempting a passive DCC %s connection"
+msgstr "Попытка пассивного DCC %s соединения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:168
+#, c-format
+msgid "Attempting an active DCC %s connection"
+msgstr "Попытка активного DCC %s соединения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:761
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:107
+msgid "Contacting host %Q on port %Q"
+msgstr "Подключение к хосту %Q на порт %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:83
+msgid "Listening on interface %Q port %Q"
+msgstr "Прослушивание на интерфейсе %Q порта %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:207
+#, c-format
+msgid "The local IP address is private, determining from IRC server: %s"
+msgstr "Локальный IP адрес является приватным, определение из IRC сервера: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1512
+msgid ""
+"The local IP address is private, but unable to determine it from the IRC "
+"server"
+msgstr ""
+"Локальный IP адрес является приватным и его невозможно определить на IRC "
+"сервере"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1515
+msgid ""
+"The local IP address is private, but have no IRC server to determine it from"
+msgstr ""
+"Локальный IP адрес является приватным и нет IRC сервера для его определения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:234
+msgid "Sent DCC %Q request to %Q, waiting for the remote client to connect..."
+msgstr "Отправка DCC %Q запроса %Q, ожидаю соединения от удалённого клиента..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:237
+msgid "DCC %Q request not sent, awaiting manual connection"
+msgstr "DCC %Q запрос не отослан, ожидаю ручного соединения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1574
+msgid "Low-level transport connection established"
+msgstr "Установлено соединение по низкоуровневому транспорту"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1575
+msgid "Starting Secure Socket Layer handshake"
+msgstr "Запуск соединения через SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:254
+#, c-format
+msgid "[SSL ERROR]: %s"
+msgstr "[ОШИБКА SSL]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:388
+msgid "Cannot send data: No active connection"
+msgstr "Невозможно отослать данные: Нет активных соединений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:344
+#, fuzzy
+msgid ""
+"The crypto engine was not able to encrypt the current message (%Q): %Q, no "
+"data was sent to the remote end"
+msgstr ""
+"Крипто машина не способна зашифровать текущее сообщение(%Q): %s, никакие "
+"данные не отосланы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:403
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:827
+msgid "ERROR: %Q"
+msgstr "ОШИБКА: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:447
+#, fuzzy
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+"Следующее сообщение зашифровано, но криптовальная машина не может его "
+"расшифровать: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:493
+msgid "DCC %Q failed: %Q"
+msgstr "Ошибка DCC %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:521
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:919
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:282
+msgid "Connected to %Q:%Q"
+msgstr "Подключение к %Q:%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:523
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:921
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:284
+msgid "Local end is %Q:%Q"
+msgstr "Локальное окончание %Q:%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:164
+msgid ""
+"WARNING: failed to check the soundcard duplex capabilities: if this is a "
+"half-duplex soundcard , use the DCC VOICE option to force half-duplex "
+"algorithm"
+msgstr ""
+"ПРЕДУПРЕЖДЕНИЕ: невозможно проверить дуплексные возможности звуковой карты: "
+"если это полудуплексная карта, используйте опцию DCC VOICE чтобы форсировать "
+"полудуплексный алгоритм."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:172
+msgid ""
+"Half duplex soundcard detected, you will not be able to talk and listen at "
+"the same time"
+msgstr ""
+"Обнаружена полудуплексная звуковая карта, вы не сможете говорить и слушать "
+"одновременно."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:213
+#, c-format
+msgid ""
+"WARNING: failed to set the requested sample rate (%d): the device used "
+"closest match (%d)"
+msgstr ""
+"ПРЕДУПРЕЖДЕНИЕ: не могу установить запрошенное значение скорости (%d): "
+"устройство использует ближайшее подходящее (%d)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:271
+msgid "Ops...failed to test the soundcard capabilities...expect problems..."
+msgstr ""
+"Упс... не могу протестировать возможности звуковой карты... ожидаются "
+"проблемы..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:662
+msgid "Input buffer"
+msgstr "Входной буфер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:664
+msgid "Output buffer"
+msgstr "Выходной буфер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:746
+msgid "Attempting a passive DCC VOICE connection"
+msgstr "Попытка пассивного соединения DCC VOICE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:751
+msgid "Attempting an active DCC VOICE connection"
+msgstr "Попытка активного соединения DCC VOICE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:779
+msgid ""
+"Sent DCC VOICE (%s) request to %Q, waiting for the remote client to "
+"connect..."
+msgstr ""
+"Отослан DCC VOICE (%s) запрос %Q, ожидаю соединение удалённого клиента..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:781
+msgid "DCC VOICE request not sent: awaiting manual connections"
+msgstr "Запрос DCC VOICE не отослан: ожидается ручное соединение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:885
+#, c-format
+msgid "Input buffer: %d bytes"
+msgstr "Входной буфер: %d байт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:887
+#, c-format
+msgid "Output buffer: %d bytes"
+msgstr "Выходной буфер: %d байт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:910
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:277
+msgid "DCC Failed: %Q"
+msgstr "Ошибка DCC: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:939
+#, c-format
+msgid "Actual codec used is '%s'"
+msgstr "Текущий используемый кодек - '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:1023
+#, c-format
+msgid "Volume: %i"
+msgstr "Громкость: %i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:91
+msgid ""
+"This window has no associated IRC context (an IRC context is required unless "
+"-c or -n are passed)"
+msgstr ""
+"Это окно не ассоциируется с IRC контекстом (IRC контекст требуется при -c "
+"или -n)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:104
+msgid ""
+"You're not connected to a server (an active connection is required unless -c "
+"or -n are passed)"
+msgstr ""
+"Вы не подключены к серверу (активное соединение требуется при -c или -n)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:129
+msgid "Unable to get address of interface %Q"
+msgstr "Невозможно получить адрес интерфейса %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:139
+msgid "No suitable interfaces to listen on, use -i"
+msgstr "Интерфейс непригоден для прослушивания, используйте -i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:172
+msgid "This executable was built without SSL support, -s switch ignored"
+msgstr "Эта сборка программы не имеет поддержки SSL, ключ -s проигнорирован"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:657
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1159
+msgid "-c requires -i and -p"
+msgstr "-c требуется -i и -p"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:634
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:730
+msgid "<unknown size>"
+msgstr "<неизвестный размер>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:890
+msgid "This executable has been built without SSL support, -s switch ignored"
+msgstr "Эта сборка программы не имеет поддержки SSL, ключ -s проигнорирован"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:960
+msgid "This executable has no SSL support, -s switch ignored"
+msgstr "Эта сборка не поддерживает SSL, ключ -s проигнорирован"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1114
+msgid "DCC VOICE support not enabled at compilation time"
+msgstr "Поддержка DCC VOICE не включена во время компиляции"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1132
+msgid "Invalid sample rate specified, defaulting to 8000"
+msgstr "Недействительная скорость, принимается по умолчанию 8000"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1148
+msgid "Invalid codec specified, defaulting to 'adpcm'"
+msgstr "Недействительный кодек, принимается по умолчанию 'adpcm'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1577
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2542
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2562
+msgid "The current window has no associated DCC session"
+msgstr "Текущее окно не ассоциируется с DCC сессией"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1582
+msgid "The specified parameter is not a valid DCC identifier"
+msgstr "Заданный параметр не является действительным идентификатором DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1662
+msgid "This DCC session is not a DCC transfer session"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2553
+msgid "The specified window identifier is not valid"
+msgstr "Заданный идентификатор окна недействителен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:260
+msgid "WARNING: The peer is sending garbage data past the end of the file"
+msgstr "ПРЕДУПРЕЖДЕНИЕ: Собеседник посылает какие-то данные после конца файла"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:261
+msgid ""
+"WARNING: Ignoring data past the declared end of file and closing the "
+"connection"
+msgstr ""
+"ПРЕДУПРЕЖДЕНИЕ: Игнорирование данных после объявления конца файла и закрытия "
+"соединения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:362
+msgid ""
+"Data transfer terminated, waiting 30 seconds for the peer to close the "
+"connection..."
+msgstr ""
+"Передача данных завершена, ожидаю 30 сек. чтобы собеседник закрыл "
+"соединение..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:369
+msgid "Data transfer was terminated 30 seconds ago, closing the connection"
+msgstr "Передача данных завершилась 30 сек. назад, закрываю соединение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:600
+msgid "WARNING: Received data in a DCC TSEND, there should be no acknowledges"
+msgstr "ПРЕДУПРЕЖДЕНИЕ: Получены данные в DCC TSEND, это не признаётся"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:732
+#, c-format
+msgid "TRANSFER %d"
+msgstr "ПЕРЕДАЧА %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:755
+msgid "Setting up the connection"
+msgstr "Установка соединения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:814
+msgid "Attempting a passive DCC %1 connection"
+msgstr "Попытка пассивного DCC %1 соединения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:818
+msgid "Attempting an active DCC %1 connection"
+msgstr "Попытка активного DCC %1 соединения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:844
+msgid "Sent DCC RESUME request to %1, waiting for ACCEPT"
+msgstr "Отослан DCC RESUME запрос %1, ожидаю ACCEPT"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:914
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:925
+msgid "Aborted"
+msgstr "Прервано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:924
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1603
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1678
+msgid "Transfer failed: "
+msgstr "Ошибка передачи: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:936
+msgid "Configure Bandwidth..."
+msgstr "Конфигурирование пропускной способности..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:938
+msgid "Resend DCC"
+msgstr "Повторная отправка DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:939
+msgid "Resend TDCC"
+msgstr "Повторная отправка TDCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:940
+msgid "Resend RevDCC"
+msgstr "Повторная отправка RevDCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:944
+msgid "Abort"
+msgstr "Прервать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1135
+msgid "From: "
+msgstr "От: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1136
+msgid "To: "
+msgstr "Кому: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1246
+#, fuzzy
+msgid "%1 of %2 (%3%)"
+msgstr "%1 к %2 байт (%3%)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1250
+msgid "%1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1263
+msgid "Spd:"
+msgstr "Скорость:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1278
+msgid "Avg:"
+msgstr "В среднем:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1349
+msgid "Transfer Log"
+msgstr "Журнал передачи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1480
+msgid "Contacting host %1 on port %2"
+msgstr "Подключение к хосту %1 на порт %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1487
+msgid "Listening on interface %1 port %2"
+msgstr "Прослушивание интерфейса %1 на порту %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1510
+msgid "The local IP address is private, determining from IRC server: %1"
+msgstr "Локальный IP адрес является приватным, определяю из IRC сервера: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1561
+msgid "Sent DCC %1 request to %2, waiting for remote client to connect..."
+msgstr "Отослан DCC %1 запрос %2, ожидаю соединения от удалённого клиента..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1563
+msgid "DCC %1 request not sent, awaiting manual connection"
+msgstr "DCC %1 запрос не отослан, ожидаю ручного соединения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1582
+msgid "[SSL ERROR]: %1"
+msgstr "[ОШИБКА SSL]: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1625
+msgid "DCC %s transfer with %Q@%Q:%Q completed: \r![!dbl]play $0\r%s\r"
+msgstr "DCC %s передача с %Q@%Q:%Q завершена: \r![!dbl]play $0\r%s\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1640
+msgid "Transfer completed"
+msgstr "Передача завершена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1687
+msgid "Connected to %1:%2"
+msgstr "Подключение к%1:%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1688
+msgid "Local end is %1:%2"
+msgstr "Локальное окончание %1:%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1732
+msgid "Transferring data"
+msgstr "Передача данных"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1758
+msgid "RESUME accepted, transfer will begin at position %1"
+msgstr "RESUME принят, передача начинается с позиции %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1789
+msgid "Internal error in RESUME request"
+msgstr "Внутренняя ошибка в запросе RESUME"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1794
+msgid "Invalid RESUME request: Position %1 is larger than file size"
+msgstr "Недействительный RESUME запрос: позиция %1 больше чем размер файла"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1798
+msgid "Accepting RESUME request, transfer will begin at position %1"
+msgstr "Запрос RESUME принят, передача начинается с позиции %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1830
+msgid "Configure bandwidth for DCC transfer %1"
+msgstr "Конфигурирование пропускной способности для DCC передачи %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1833
+msgid "Limit upload bandwidth to"
+msgstr "Предел при передаче"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1833
+msgid "Limit download bandwidth to"
+msgstr "Предел при загрузке"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1846
+msgid "bytes/sec"
+msgstr "байт/сек"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1850
+msgid "OK"
+msgstr "Ок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:142
+msgid "Cancel"
+msgstr "Отмена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:78
+msgid "Attempting a passive DCC CANVAS connection"
+msgstr "Попытка пассивного DCC CANVAS соединения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:98
+msgid ""
+"Sent DCC CANVAS request to %Q, waiting for the remote client to connect..."
+msgstr ""
+"Отослан DCC CANVAS запрос %Q, ожидаю соединения от удалённого клиента..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:100
+msgid "DCC CANVAS request not sent: awaiting manual connections"
+msgstr "DCC CANVAS запрос не отослан: ожидаю ручного соединения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:104
+msgid "Attempting an active DCC CANVAS connection"
+msgstr "Попытка активного DCC CANVAS соединения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1563
+msgid "&Line"
+msgstr "&Линия"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1564
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1572
+msgid "&Rectangle"
+msgstr "&Прямоугольник"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1565
+msgid "&Ellipse"
+msgstr "&Эллипс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1566
+#, fuzzy
+msgid "&Pie"
+msgstr "&Pie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1567
+msgid "&Chord"
+msgstr "&Хорда"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1569
+msgid "&Rich text (html)"
+msgstr "&Rich текст (html)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1571
+msgid "&Triangle"
+msgstr "&Треугольник"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1573
+msgid "&Pentagon"
+msgstr "&Пятиугольник"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1574
+msgid "&Hexagon"
+msgstr "&Шестиугольник"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1576
+msgid "&Shape"
+msgstr "&Форма"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1577
+msgid "&Item"
+msgstr "&Пункт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1578
+msgid "&Polygons"
+msgstr "&Многоугольники"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1580
+msgid "&Insert"
+msgstr "&Вставить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:77
+msgid "Unable to process the above request: %Q, %Q"
+msgstr "Не могу обработать указанный запрос: %Q, %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:79
+msgid "Ignoring and notifying failure"
+msgstr "Игнорирование и извещение об ошибке"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:79
+msgid "Ignoring"
+msgstr "Игнорировать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:95
+#, c-format
+msgid "Concurrent transfer limit reached (%u of %u transfers running)"
+msgstr ""
+"Количество параллельных передач достигло лимита (%u из %u передач запущено)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:111
+#, c-format
+msgid "Slot limit reached (%u slots of %u)"
+msgstr "Достигнут лимит слотов (%u слотов из %u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:120
+msgid "Too many pending connections"
+msgstr "Слишком много незавершённых соединений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:156
+#, c-format
+msgid "Invalid port number %s"
+msgstr "Недействительный номер порта %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:172
+#, c-format
+msgid "Invalid IP address in old format %s"
+msgstr "Недействительный IP адрес в старом формате %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:191
+#, c-format
+msgid "Invalid IP address %s"
+msgstr "Недействительный IP адрес %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:258
+#, c-format
+msgid ""
+"The above request is broken: The second parameter is '%s' and should be "
+"'chat', trying to continue"
+msgstr ""
+"Указанный запрос является битым: Второй параметр '%s' должен быть 'chat', "
+"пытаюсь продолжить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:270
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC CHAT is not available"
+msgstr ""
+"Эта сборка программы не имеет поддержки SSL, SSL расширение DCC CHAT не "
+"доступно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:321
+msgid ""
+"The above request is broken: it looks like a zero port tag acknowledge but I "
+"have either never seen this tag or it was sent more than 120 seconds ago"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:322
+msgid "It seems that I haven't requested this dcc chat"
+msgstr "Похоже, что вы не запрашивали этот dcc чат"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:442
+msgid ""
+"The above request is broken: The fourth parameter should be the file size "
+"but does not appear to be an unsigned number, trying to continue"
+msgstr ""
+"Указанный запрос является битым: Четвёртый параметр должен быть размером "
+"файла но он не является беззнаковым числом, пытаюсь продолжить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:600
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:738
+msgid ""
+"The above request is broken: The filename contains path components, "
+"stripping the leading path and trying to continue"
+msgstr ""
+"Указанный запрос является битым: Имя файла содержит компоненты пути, удаляю "
+"их и пытаюсь продолжить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:466
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC SEND is not available"
+msgstr ""
+"Эта сборка программы не имеет поддержки SSL, SSL расширение DCC SEND не "
+"доступно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:528
+#, c-format
+msgid ""
+"Can't proceed with DCC RECV: Transfer not initiated for file %s on port %s"
+msgstr ""
+"Не могу выполнить DCC RECV: Передача не инициирована для файла %s через порт "
+"%s "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:553
+#, c-format
+msgid "Invalid resume position argument '%s'"
+msgstr "Недействительный аргумент итоговой позиции '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:565
+#, c-format
+msgid ""
+"Can't proceed with DCC SEND: Transfer not initiated for file %s on port %s, "
+"or invalid resume size"
+msgstr ""
+"Не могу выполнить DCC SEND: Передача не инициирована для файла %s через порт "
+"%s или неверный итоговый размер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:590
+msgid ""
+"The above request has resume file size missing, assuming a resume file size "
+"of 0"
+msgstr ""
+"В указанном запросе отсутствует размер файла, принимаю итоговый размер 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:614
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC RECV is not available"
+msgstr ""
+"Эта сборка программы не имеет поддержки SSL, SSL расширение DCC RECV не "
+"доступно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:629
+#, c-format
+msgid "Invalid RECV request: Position %u is is larger than file size"
+msgstr "Недействительный RECV запрос: Позиция %u больше размера файла"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:683
+msgid "%Q [%Q@%Q] is ready to receive the file \"%s\""
+msgstr "%Q [%Q@%Q] готов получить файл \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:689
+#, c-format
+msgid "The remote client is listening on interface %s and port %s"
+msgstr "Удалённый клиент прослушивает интерфейс %s на порту %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:696
+msgid ""
+"Use %c\r![!dbl]dcc.send %s -i=%s -p=%s %Q\r/dcc.send %s -i=%s -p=%s %Q\r%c "
+"to send the file (or double-click on the socket)"
+msgstr ""
+"Используется %c\r![!dbl]dcc.send %s -i=%s -p=%s %Q\r/dcc.send %s -i=%s -p=%s "
+"%Q\r%c для отправки файла (или двойной клик на сокете)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:728
+msgid ""
+"The above request is broken: The fourth parameter should be the file size "
+"but does not appear to be an unsigned number; trying to continue"
+msgstr ""
+"Указанный запрос является битым: Четвёртый параметр должен быть размером "
+"файла но он не является беззнаковым числом, пытаюсь продолжить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:752
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC RSEND is not available"
+msgstr ""
+"Эта сборка программы не имеет поддержки SSL, SSL расширение DCC RSEND не "
+"доступно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:763
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:932
+msgid "(unknown)"
+msgstr "(неизвестно)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:918
+msgid "No suitable interface to listen on, trying to continue anyway..."
+msgstr ""
+"Не подходящий интерфейс для прослушивания, пытаюсь продолжить в любом "
+"случае..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:835
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC GET is not available"
+msgstr ""
+"Эта сборка программы не имеет поддержки SSL, SSL расширение DCC GET не "
+"доступно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:846
+msgid "No file offer named '%s' (with size %s) available for %Q [%Q@%Q]"
+msgstr "Нет файла с именем '%s' (размером %s) доступного для %Q [%Q@%Q]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:847
+msgid "\"any\""
+msgstr "\"любой\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:891
+msgid ""
+"Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering "
+"DCC %s since we can't accept incoming connections (user option)"
+msgstr ""
+"Принимаю запрос файла из %Q [%Q@%Q] для '%s' (реальный файл: %Q), предлагаю "
+"DCC %s поскольку мы не можем принимать входящие соединения (опция "
+"пользователя)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:948
+msgid ""
+"Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering "
+"DCC %Q"
+msgstr ""
+"Принимаю запрос файла из %Q [%Q@%Q] для '%s' (реальный файл: %Q), предлагаю "
+"DCC %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:982
+msgid ""
+"The above request cannot be accepted: DCC VOICE support not enabled at "
+"compilation time "
+msgstr ""
+"Невозможно принять указанный запрос: Поддержка DCC VOICE не включена во "
+"время компиляции"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:992
+#, c-format
+msgid "The above request cannot be accepted: Unsupported codec '%s'"
+msgstr "Невозможно принять указанный запрос: Неподдерживаемый кодек '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:1005
+#, c-format
+msgid ""
+"The above request appears to be broken: Invalid sample-rate '%s', defaulting "
+"to 8000"
+msgstr ""
+"Указанный запрос битый: Недействительное значение '%s', принимаю по "
+"умолчанию 8000"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:1151
+#, c-format
+msgid "Unknown DCC type '%s'"
+msgstr "Неизвестный DCC тип '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:64
+msgid "&Accept"
+msgstr "&Принять"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:69
+msgid "&Reject"
+msgstr "&Отвергнуть"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:129
+msgid "&Rename"
+msgstr "&Переименовать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:133
+msgid "Over&write"
+msgstr "Пе&реписать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:137
+msgid "Re&sume"
+msgstr "&Докачка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:149
+msgid "File Already Exists - KVIrc"
+msgstr "Файл уже существует - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/utils.cpp:122
+msgid "Can't retrieve a suitable local IPV4 address"
+msgstr "Не могу найти пригодный локальный IPV4 адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/utils.cpp:140
+#, c-format
+msgid ""
+"Can't listen on default interface '%s': fix it in the options dialog, "
+"disabling the option (so the next dcc will work)"
+msgstr ""
+"Не могу слушать интерфейс '%s': исправьте его в диалоге опций, или выключите "
+"опцию (тогда вероятно dcc будет работать)"
+
+#~ msgid "%1 bytes"
+#~ msgstr "%1 байт"
+
+#~ msgid "Choose Save Location - KVIrc"
+#~ msgstr "Выберите путь сохранения - KVIrc"
+
+#~ msgid "Contacting host %s on port %s"
+#~ msgstr "Подключение к хосту %s на порт %s"
+
+#~ msgid "Missing target nickname"
+#~ msgstr "Целевой ник потерян"
+
+#~ msgid "Missing filename"
+#~ msgstr "Отсутствует имя файла"
+
+#~ msgid "The file size is not an positive number"
+#~ msgstr "Размер файла не является положительным числом"
+
+#~ msgid "Invalid file size specified, no message sent"
+#~ msgstr "Задан недействительный размер файла, сообщение не отослано"
diff --git a/po/modules/dcc/dcc_uk.po b/po/modules/dcc/dcc_uk.po
new file mode 100644
index 00000000..5ecc3122
--- /dev/null
+++ b/po/modules/dcc/dcc_uk.po
@@ -0,0 +1,1012 @@
+# translation of dcc_ua.po to
+# translation of dcc_ua.po to ukrainian
+# translation of dcc_ua.po to українська
+# translation of dcc.po to українська
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE' COPYRIGHT HOLDER.
+# Belyaev Stanislav <[email protected]>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: about_ua\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-12-19 15:00+0200\n"
+"Last-Translator: Belyaev Stanislav <[email protected]>\n"
+"Language-Team: Ukrainian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10.2\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1:2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1:2);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/descriptor.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:408
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:443
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:642
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:666
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:803
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:805
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1171
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:484
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:514
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/marshal.cpp:519
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:136
+msgid "unknown"
+msgstr "невідомий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:783
+msgid "Choose Files to Send - KVIrc"
+msgstr "Виберіть файл для передачі - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:189
+msgid "Can't send DCC %Q request to %Q: IRC connection has been terminated"
+msgstr "Неможливо відіслати DCC %Q запит в %Q: IRC з'єднання закрите"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:821
+msgid "Can't open file %Q for reading"
+msgstr "Неможливо відкрити файл %Q на читання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:269
+msgid ""
+"<b>%1 [%2@%3]</b> requests a <b>Direct Client Connection</b> in <b>%4</b> "
+"mode.<br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> запит <b>Direct Client Connection</b> в <b>%4</b> режимі."
+"<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:274
+msgid "The connection will be secured using SSL.<br>"
+msgstr "З'єднання буде використати SSL.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:280
+msgid "You will be the passive side of the connection.<br>"
+msgstr "Ви будете пасивною стороною зв'язку<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:284
+msgid "The connection target will be host <b>%1</b> on port <b>%2</b><br>"
+msgstr "Підключення до хосту <b>%1</b> на порт <b>%2</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:289
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:543
+msgid "DCC %1 Request - KVIrc"
+msgstr "Запит DCC %1 - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:340
+msgid ""
+"<b>%1 [%2@%3]</b> requests a<br><b>Direct Client Connection</b> in <b>VOICE</"
+"b> mode.<br>The connection target will be host <b>%4</b> on port <b>%5</"
+"b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> запит <br><b>Direct Client Connection</b> в <b>VOICE</b> "
+"режимі<br> Метою з'єднання є хост <b>%4</b> через порт <b>%5</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:346
+msgid "DCC VOICE request"
+msgstr "Запит DCC VOICE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:411
+msgid ""
+"<b>%1 [%2@%3]</b> requests a<br><b>Direct Client Connection</b> in "
+"<b>CANVAS</b> mode.<br>The connection target will be host <b>%4</b> on port "
+"<b>%5</b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> запит <br><b>Direct Client Connection</b> в <b>CANVAS</b> "
+"режимі<br>Метою з'єднання є хост <b>%4</b> через порт <b>%5</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:417
+msgid "DCC CANVAS request"
+msgstr "Запит DCC CANVAS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:502
+#, fuzzy
+msgid ""
+"<b>%1 [%2@%3]</b> wants to send you the file '<b>%4</b>', <b>%5</b> large."
+"<br>The connection target will be host <b>%6</b> on port <b>%7</b><br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> хоче вислати вам файл '<b>%4</b>', розміром <b>%5</b> "
+"байт<br>Метою з'єднання є хост <b>%6</b> через порт <b>%7</b><br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:515
+#, fuzzy
+msgid ""
+"<b>%1 [%2@%3]</b> wants to send you the file '<b>%4</b>', <b>%5</b> large."
+"<br>You will be the passive side of the connection.<br>"
+msgstr ""
+"<b>%1 [%2@%3]</b> хоче вислати вам файл '<b>%4</b>', розміром <b>%5</b> "
+"байт<br> Ви будете пасивною стороною з'єднання<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:528
+msgid ""
+"<center><b>Note:</b></center>The file appears to be an avatar that you have "
+"requested. You should not change its filename. Save it in a location where "
+"KVIrc can find it, such as the 'avatars', 'incoming', or 'pics' directories, "
+"your home directory, or the save directory for the incoming file type. The "
+"default save path will probably work. You can instruct KVIrc to accept "
+"incoming avatars automatically by setting the option "
+"<tt>boolAutoAcceptIncomingAvatars</tt> to true.<br>"
+msgstr ""
+"<center><b>Примітка:</b></center> Файл є аватаром, що ви запросили. Вам не "
+"слід змінювати його ім'я файлу. Збережете його там, де KVIrc може його "
+"знайти, наприклад у каталогах 'avatars', 'incoming', або 'pics', у "
+"домашньому каталозі або в каталозі для збереження вхідних файлів. "
+"Запропонований за замовчуванням шлях імовірно буде кращим варіантом. Ви "
+"можете указати KVIrc щоб він автоматично приймав вхідні аватари встановивши "
+"опцію <tt>boolAutoAcceptIncomingAvatars</tt> в true.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:557
+#, fuzzy
+msgid "Auto-accepting DCC %Q request from %Q!%Q@%Q for file %Q"
+msgstr "Автоматичний прийом DCC %Q запиту з %Q! %Q@%Q для файлу %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:618
+#, fuzzy
+msgid "Choose Files to Save - KVIrc"
+msgstr "Виберіть файл для передачі - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:631
+msgid "Auto-saving DCC %Q file %Q as \r![!dbl]play $0\r%Q\r"
+msgstr "Автозбереження DCC %Q файлу %Q як \r![!dbl]play $0\r%Q\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:665
+#, fuzzy
+msgid ""
+"The file '<b>%1</b>' already exists and is <b>%2</b> large.<br>Do you wish "
+"to<br><b>overwrite</b> the existing file,<br> <b>auto-rename</b> the new "
+"file, or<br><b>resume</b> an incomplete download?"
+msgstr ""
+"Файл '<b>%1</b>' уже існує, розмір - <b>%2</b> байт<br>Ви хочете "
+"<br><b>переписати</b> існуючий файл,<br> <b>автоматично перейменувати</b> "
+"новий файл, або<br><b>продовжити</b> незавершене завантаження?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:677
+msgid ""
+"The file '<b>%1</b>' already existsand is larger than the offered one.<br>Do "
+"you wish to<br><b>overwrite</b> the existing file, or<br> <b>auto-rename</b> "
+"the new file ?"
+msgstr ""
+"Файл більшого розміру '<b>%1</b>' уже існує<br>Ви хочете <br><b>переписати</"
+"b> існуючий файл, або<br> <b>автоматично перейменувати</b> новий файл?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/broker.cpp:747
+msgid "File %s exists, auto-renaming to %Q"
+msgstr "Файл %s існує, автоматичне перейменування в %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:158
+#, c-format
+msgid "Attempting a passive DCC %s connection"
+msgstr "Спроба пасивного DCC %s з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:168
+#, c-format
+msgid "Attempting an active DCC %s connection"
+msgstr "Спроба активного DCC %s з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:182
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:761
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:107
+msgid "Contacting host %Q on port %Q"
+msgstr "Підключення до хосту %Q на порт %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:83
+msgid "Listening on interface %Q port %Q"
+msgstr "Прослуховування на інтерфейсі %Q порту %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:207
+#, c-format
+msgid "The local IP address is private, determining from IRC server: %s"
+msgstr "Локальний IP адреса є приватним, визначення з IRC сервера: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1512
+msgid ""
+"The local IP address is private, but unable to determine it from the IRC "
+"server"
+msgstr ""
+"Локальний IP адреса є приватним і його неможливо визначити на IRC сервері"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:212
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1515
+msgid ""
+"The local IP address is private, but have no IRC server to determine it from"
+msgstr ""
+"Локальний IP адреса є приватним і немає IRC сервера для його визначення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:234
+msgid "Sent DCC %Q request to %Q, waiting for the remote client to connect..."
+msgstr ""
+"Відправлення DCC %Q запиту %Q, очікую з'єднання від вилученого клієнта..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:237
+msgid "DCC %Q request not sent, awaiting manual connection"
+msgstr "DCC %Q запит не відісланий, очікую ручного з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:245
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1574
+msgid "Low-level transport connection established"
+msgstr "Установлене з'єднання по низькорівневому транспорті"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:246
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1575
+msgid "Starting Secure Socket Layer handshake"
+msgstr "Запуск з'єднання через SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:254
+#, c-format
+msgid "[SSL ERROR]: %s"
+msgstr "[ПОМИЛКА SSL]: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:302
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:388
+msgid "Cannot send data: No active connection"
+msgstr "Неможливо відіслати дані: Немає активних з'єднань"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:344
+#, fuzzy
+msgid ""
+"The crypto engine was not able to encrypt the current message (%Q): %Q, no "
+"data was sent to the remote end"
+msgstr ""
+"Крипто машина не здатна зашифрувати поточне повідомлення(%Q): %s, ніякі дані "
+"не відіслані"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:403
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:827
+msgid "ERROR: %Q"
+msgstr "ПОМИЛКА: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:447
+#, fuzzy
+msgid ""
+"The following message appears to be encrypted, but the crypto engine failed "
+"to decode it: %Q"
+msgstr ""
+"Наступне повідомлення зашифроване, але криптовальна машина не може його "
+"розшифрувати: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:493
+msgid "DCC %Q failed: %Q"
+msgstr "Помилка DCC %Q: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:521
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:919
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:282
+msgid "Connected to %Q:%Q"
+msgstr "Підключення до %Q:%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/chat.cpp:523
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:921
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:284
+msgid "Local end is %Q:%Q"
+msgstr "Локальне закінчення %Q:%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:164
+msgid ""
+"WARNING: failed to check the soundcard duplex capabilities: if this is a "
+"half-duplex soundcard , use the DCC VOICE option to force half-duplex "
+"algorithm"
+msgstr ""
+"ПОПЕРЕДЖЕННЯ: неможливо перевірити дуплексні можливості звукової карти: якщо "
+"це напівдуплексна карта, використайте опцію DCC VOICE щоб форсувати "
+"напівдуплексний алгоритм."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:172
+msgid ""
+"Half duplex soundcard detected, you will not be able to talk and listen at "
+"the same time"
+msgstr ""
+"Виявлена напівдуплексна звукова карта, ви не зможете говорити й слухати "
+"одночасно."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:213
+#, c-format
+msgid ""
+"WARNING: failed to set the requested sample rate (%d): the device used "
+"closest match (%d)"
+msgstr ""
+"ПОПЕРЕДЖЕННЯ: не можу встановити запитане значення швидкості (%d): устрій "
+"використає найближче підходяще (%d)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:271
+msgid "Ops...failed to test the soundcard capabilities...expect problems..."
+msgstr ""
+"Упс... не можу протестувати можливості звукової карти... очікуються "
+"проблеми..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:662
+msgid "Input buffer"
+msgstr "Вхідний буфер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:664
+msgid "Output buffer"
+msgstr "Вихідний буфер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:746
+msgid "Attempting a passive DCC VOICE connection"
+msgstr "Спроба пасивного з'єднання DCC VOICE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:751
+msgid "Attempting an active DCC VOICE connection"
+msgstr "Спроба активного з'єднання DCC VOICE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:779
+msgid ""
+"Sent DCC VOICE (%s) request to %Q, waiting for the remote client to "
+"connect..."
+msgstr ""
+"Відісланий DCC VOICE (%s) запит %Q, очікую з'єднання вилученого клієнта..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:781
+msgid "DCC VOICE request not sent: awaiting manual connections"
+msgstr "Запит DCC VOICE не відісланий: очікується ручне з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:885
+#, c-format
+msgid "Input buffer: %d bytes"
+msgstr "Вхідний буфер: %d байт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:887
+#, c-format
+msgid "Output buffer: %d bytes"
+msgstr "Вихідний буфер: %d байт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:910
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:277
+msgid "DCC Failed: %Q"
+msgstr "Помилка DCC: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:939
+#, c-format
+msgid "Actual codec used is '%s'"
+msgstr "Поточний використовуваний кодек - '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/voice.cpp:1023
+#, c-format
+msgid "Volume: %i"
+msgstr "Гучність: %i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:91
+msgid ""
+"This window has no associated IRC context (an IRC context is required unless "
+"-c or -n are passed)"
+msgstr ""
+"Це вікно не асоціюється з IRC контекстом (IRC контекст потрібно при -c або -"
+"n)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:104
+msgid ""
+"You're not connected to a server (an active connection is required unless -c "
+"or -n are passed)"
+msgstr "Ви не підключені до сервера (активне з'єднання потрібно при -c або -n)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:129
+msgid "Unable to get address of interface %Q"
+msgstr "Неможливо одержати адресу інтерфейсу %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:139
+msgid "No suitable interfaces to listen on, use -i"
+msgstr "Інтерфейс непридатний для прослуховування, використайте -i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:172
+msgid "This executable was built without SSL support, -s switch ignored"
+msgstr "Ця зборка програми не має підтримки SSL, ключ -s зігнорований"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:434
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:657
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1159
+msgid "-c requires -i and -p"
+msgstr "-c потрібно -i і -p"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:634
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:444
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:730
+msgid "<unknown size>"
+msgstr "<невідомий розмір>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:890
+msgid "This executable has been built without SSL support, -s switch ignored"
+msgstr "Ця зборка програми не має підтримки SSL, ключ -s зігнорований"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:960
+msgid "This executable has no SSL support, -s switch ignored"
+msgstr "Ця зборка не підтримує SSL, ключ -s зігнорований"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1114
+msgid "DCC VOICE support not enabled at compilation time"
+msgstr "Підтримка DCC VOICE не включена під час компіляції"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1132
+msgid "Invalid sample rate specified, defaulting to 8000"
+msgstr "Недійсна швидкість, приймається за замовчуванням 8000"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1148
+msgid "Invalid codec specified, defaulting to 'adpcm'"
+msgstr "Недійсний кодек, приймається за замовчуванням 'adpcm'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1577
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2542
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2562
+msgid "The current window has no associated DCC session"
+msgstr "Поточне вікно не асоціюється з DCC сесією"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1582
+msgid "The specified parameter is not a valid DCC identifier"
+msgstr "Заданий параметр не є дійсним ідентифікатором DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:1662
+msgid "This DCC session is not a DCC transfer session"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/libkvidcc.cpp:2553
+msgid "The specified window identifier is not valid"
+msgstr "Заданий ідентифікатор вікна недійсний"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:260
+msgid "WARNING: The peer is sending garbage data past the end of the file"
+msgstr "ПОПЕРЕДЖЕННЯ: Співрозмовник посилає якісь дані після кінця файлу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:261
+msgid ""
+"WARNING: Ignoring data past the declared end of file and closing the "
+"connection"
+msgstr ""
+"ПОПЕРЕДЖЕННЯ: Ігнорування даних після оголошення кінця файлу й закриття "
+"з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:362
+msgid ""
+"Data transfer terminated, waiting 30 seconds for the peer to close the "
+"connection..."
+msgstr ""
+"Передача даних завершена, очікую 30 сек. щоб співрозмовник закрив "
+"з'єднання..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:369
+msgid "Data transfer was terminated 30 seconds ago, closing the connection"
+msgstr "Передача даних завершилася 30 сек. назад, закриваю з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:600
+msgid "WARNING: Received data in a DCC TSEND, there should be no acknowledges"
+msgstr "ПОПЕРЕДЖЕННЯ: Отримані дані в DCC TSEND, це не зізнається"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:732
+#, c-format
+msgid "TRANSFER %d"
+msgstr "ПЕРЕДАЧА %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:755
+msgid "Setting up the connection"
+msgstr "Установка з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:814
+msgid "Attempting a passive DCC %1 connection"
+msgstr "Спроба пасивного DCC %1 з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:818
+msgid "Attempting an active DCC %1 connection"
+msgstr "Спроба активного DCC %1 з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:844
+msgid "Sent DCC RESUME request to %1, waiting for ACCEPT"
+msgstr "Відісланий DCC RESUME запит %1, очікую ACCEPT"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:914
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:925
+msgid "Aborted"
+msgstr "Перервано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:924
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1603
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1678
+msgid "Transfer failed: "
+msgstr "Помилка передачі: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:936
+msgid "Configure Bandwidth..."
+msgstr "Конфігурування пропускної здатності..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:938
+msgid "Resend DCC"
+msgstr "Повторне відправлення DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:939
+msgid "Resend TDCC"
+msgstr "Повторне відправлення TDCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:940
+msgid "Resend RevDCC"
+msgstr "Повторне відправлення RevDCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:944
+msgid "Abort"
+msgstr "Перервати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1135
+msgid "From: "
+msgstr "Від: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1136
+msgid "To: "
+msgstr "Кому: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1239
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1246
+#, fuzzy
+msgid "%1 of %2 (%3%)"
+msgstr "%1 до %2 байт (%3%)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1250
+msgid "%1"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1263
+msgid "Spd:"
+msgstr "Швидкість:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1278
+msgid "Avg:"
+msgstr "У середньому:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1349
+msgid "Transfer Log"
+msgstr "Журнал передачі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1480
+msgid "Contacting host %1 on port %2"
+msgstr "Підключення до хосту %1 на порт %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1487
+msgid "Listening on interface %1 port %2"
+msgstr "Прослуховування інтерфейсу %1 на порту %2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1510
+msgid "The local IP address is private, determining from IRC server: %1"
+msgstr "Локальний IP адреса є приватним, визначаю з IRC сервера: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1561
+msgid "Sent DCC %1 request to %2, waiting for remote client to connect..."
+msgstr "Відісланий DCC %1 запит %2, очікую з'єднання від вилученого клієнта..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1563
+msgid "DCC %1 request not sent, awaiting manual connection"
+msgstr "DCC %1 запит не відісланий, очікую ручного з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1582
+msgid "[SSL ERROR]: %1"
+msgstr "[ПОМИЛКА SSL]: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1625
+msgid "DCC %s transfer with %Q@%Q:%Q completed: \r![!dbl]play $0\r%s\r"
+msgstr "DCC %s передача з %Q@%Q:%Q завершена: \r![!dbl]play $0\r%s\r"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1640
+msgid "Transfer completed"
+msgstr "Передача завершена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1687
+msgid "Connected to %1:%2"
+msgstr "Підключення до%1:%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1688
+msgid "Local end is %1:%2"
+msgstr "Локальне закінчення %1:%2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1732
+msgid "Transferring data"
+msgstr "Передача даних"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1758
+msgid "RESUME accepted, transfer will begin at position %1"
+msgstr "RESUME прийнятий, передача починається з позиції %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1789
+msgid "Internal error in RESUME request"
+msgstr "Внутрішня помилка в запиті RESUME"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1794
+msgid "Invalid RESUME request: Position %1 is larger than file size"
+msgstr "Недійсний RESUME запит: позиція %1 більше чим розмір файлу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1798
+msgid "Accepting RESUME request, transfer will begin at position %1"
+msgstr "Запит RESUME прийнятий, передача починається з позиції %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1830
+msgid "Configure bandwidth for DCC transfer %1"
+msgstr "Конфігурування пропускної здатності для DCC передачі %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1833
+msgid "Limit upload bandwidth to"
+msgstr "Межа при передачі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1833
+msgid "Limit download bandwidth to"
+msgstr "Межа при завантаженні"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1846
+msgid "bytes/sec"
+msgstr "байт/сек"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1850
+msgid "OK"
+msgstr "Ок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/send.cpp:1855
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:142
+msgid "Cancel"
+msgstr "Скасування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:78
+msgid "Attempting a passive DCC CANVAS connection"
+msgstr "Спроба пасивного DCC CANVAS з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:98
+msgid ""
+"Sent DCC CANVAS request to %Q, waiting for the remote client to connect..."
+msgstr ""
+"Відісланий DCC CANVAS запит %Q, очікую з'єднання від вилученого клієнта..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:100
+msgid "DCC CANVAS request not sent: awaiting manual connections"
+msgstr "DCC CANVAS запит не відісланий: очікую ручного з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvas.cpp:104
+msgid "Attempting an active DCC CANVAS connection"
+msgstr "Спроба активного DCC CANVAS з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1563
+msgid "&Line"
+msgstr "&Лінія"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1564
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1572
+msgid "&Rectangle"
+msgstr "&Прямокутник"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1565
+msgid "&Ellipse"
+msgstr "&Еліпс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1566
+#, fuzzy
+msgid "&Pie"
+msgstr "&Pie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1567
+msgid "&Chord"
+msgstr "&Хорда"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1569
+msgid "&Rich text (html)"
+msgstr "&Rich текст (html)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1571
+msgid "&Triangle"
+msgstr "&Трикутник"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1573
+msgid "&Pentagon"
+msgstr "&П'ятикутник"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1574
+msgid "&Hexagon"
+msgstr "&Шестикутник"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1576
+msgid "&Shape"
+msgstr "&Форма"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1577
+msgid "&Item"
+msgstr "&Пункт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1578
+msgid "&Polygons"
+msgstr "&Багатокутники"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/canvaswidget.cpp:1580
+msgid "&Insert"
+msgstr "&Вставити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:77
+msgid "Unable to process the above request: %Q, %Q"
+msgstr "Не можу обробити зазначений запит: %Q, %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:79
+msgid "Ignoring and notifying failure"
+msgstr "Ігнорування й повідомлення про помилку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:79
+msgid "Ignoring"
+msgstr "Ігнорувати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:95
+#, c-format
+msgid "Concurrent transfer limit reached (%u of %u transfers running)"
+msgstr ""
+"Кількість паралельних передач досяглася ліміту (%u з %u передач запущена)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:111
+#, c-format
+msgid "Slot limit reached (%u slots of %u)"
+msgstr "Досягнуть ліміт слотів (%u слотів з %u)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:120
+msgid "Too many pending connections"
+msgstr "Занадто багато незавершених з'єднань"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:156
+#, c-format
+msgid "Invalid port number %s"
+msgstr "Недійсний номер порту %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:172
+#, c-format
+msgid "Invalid IP address in old format %s"
+msgstr "Недійсний IP адреса в старому форматі %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:191
+#, c-format
+msgid "Invalid IP address %s"
+msgstr "Недійсний IP адреса %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:258
+#, c-format
+msgid ""
+"The above request is broken: The second parameter is '%s' and should be "
+"'chat', trying to continue"
+msgstr ""
+"Зазначений запит є битим: Другий параметр '%s' повинен бути 'chat', "
+"намагаюся продовжити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:270
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC CHAT is not available"
+msgstr ""
+"Ця зборка програми не має підтримки SSL, SSL розширення DCC CHAT не доступно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:321
+msgid ""
+"The above request is broken: it looks like a zero port tag acknowledge but I "
+"have either never seen this tag or it was sent more than 120 seconds ago"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:322
+msgid "It seems that I haven't requested this dcc chat"
+msgstr "Схоже, що ви не запитували цей dcc чат"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:442
+msgid ""
+"The above request is broken: The fourth parameter should be the file size "
+"but does not appear to be an unsigned number, trying to continue"
+msgstr ""
+"Зазначений запит є битим: Четвертий параметр повинен бути розміром файлу але "
+"він не є беззнаковим числом, намагаюся продовжити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:452
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:600
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:738
+msgid ""
+"The above request is broken: The filename contains path components, "
+"stripping the leading path and trying to continue"
+msgstr ""
+"Зазначений запит є битим: Ім'я файлу містить компоненти шляху, видаляю їх і "
+"намагаюся продовжити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:466
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC SEND is not available"
+msgstr ""
+"Ця зборка програми не має підтримки SSL, SSL розширення DCC SEND не доступно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:528
+#, c-format
+msgid ""
+"Can't proceed with DCC RECV: Transfer not initiated for file %s on port %s"
+msgstr ""
+"Не можу виконати DCC RECV: Передача не ініційована для файлу %s через порт %"
+"s "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:553
+#, c-format
+msgid "Invalid resume position argument '%s'"
+msgstr "Недійсний аргумент підсумкової позиції '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:565
+#, c-format
+msgid ""
+"Can't proceed with DCC SEND: Transfer not initiated for file %s on port %s, "
+"or invalid resume size"
+msgstr ""
+"Не можу виконати DCC SEND: Передача не ініційована для файлу %s через порт %"
+"s або невірний підсумковий розмір"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:590
+msgid ""
+"The above request has resume file size missing, assuming a resume file size "
+"of 0"
+msgstr ""
+"У зазначеному запиті відсутній розмір файлу, приймаю підсумковий розмір 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:614
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC RECV is not available"
+msgstr ""
+"Ця зборка програми не має підтримки SSL, SSL розширення DCC RECV не доступно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:629
+#, c-format
+msgid "Invalid RECV request: Position %u is is larger than file size"
+msgstr "Недійсний RECV запит: Позиція %u більше розміру файлу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:683
+msgid "%Q [%Q@%Q] is ready to receive the file \"%s\""
+msgstr "%Q [%Q@%Q] готовий одержати файл \"%s\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:689
+#, c-format
+msgid "The remote client is listening on interface %s and port %s"
+msgstr "Вилучений клієнт прослуховує інтерфейс %s на порту %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:696
+msgid ""
+"Use %c\r![!dbl]dcc.send %s -i=%s -p=%s %Q\r/dcc.send %s -i=%s -p=%s %Q\r%c "
+"to send the file (or double-click on the socket)"
+msgstr ""
+"Використається %c\r![!dbl]dcc.send %s -i=%s -p=%s %Q\r/dcc.send %s -i=%s -p=%"
+"s %Q\r%c для відправлення файлу (або подвійний клич на сокете)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:728
+msgid ""
+"The above request is broken: The fourth parameter should be the file size "
+"but does not appear to be an unsigned number; trying to continue"
+msgstr ""
+"Зазначений запит є битим: Четвертий параметр повинен бути розміром файлу але "
+"він не є беззнаковим числом, намагаюся продовжити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:752
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC RSEND is not available"
+msgstr ""
+"Ця зборка програми не має підтримки SSL, SSL розширення DCC RSEND не доступно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:763
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:932
+msgid "(unknown)"
+msgstr "(невідомо)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:769
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:918
+msgid "No suitable interface to listen on, trying to continue anyway..."
+msgstr ""
+"Не підходящий інтерфейс для прослуховування, намагаюся продовжити в будь-"
+"якому випадку..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:835
+msgid ""
+"This executable has been compiled without SSL support, the SSL extension to "
+"DCC GET is not available"
+msgstr ""
+"Ця зборка програми не має підтримки SSL, SSL розширення DCC GET не доступно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:846
+msgid "No file offer named '%s' (with size %s) available for %Q [%Q@%Q]"
+msgstr "Немає файлу з ім'ям '%s' (розміром %s) доступного для %Q [%Q@%Q]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:847
+msgid "\"any\""
+msgstr "\"будь-який\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:891
+msgid ""
+"Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering "
+"DCC %s since we can't accept incoming connections (user option)"
+msgstr ""
+"Приймаю запит файлу з %Q [%Q@%Q] для '%s' (реальний файл: %Q), пропоную DCC %"
+"s оскільки ми не можемо приймати вхідні з'єднання (опція користувача)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:948
+msgid ""
+"Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering "
+"DCC %Q"
+msgstr ""
+"Приймаю запит файлу з %Q [%Q@%Q] для '%s' (реальний файл: %Q), пропоную DCC %"
+"Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:982
+msgid ""
+"The above request cannot be accepted: DCC VOICE support not enabled at "
+"compilation time "
+msgstr ""
+"Неможливо прийняти зазначений запит: Підтримка DCC VOICE не включена в час "
+"компіляції"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:992
+#, c-format
+msgid "The above request cannot be accepted: Unsupported codec '%s'"
+msgstr "Неможливо прийняти зазначений запит: Непідтримуваний кодек '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:1005
+#, c-format
+msgid ""
+"The above request appears to be broken: Invalid sample-rate '%s', defaulting "
+"to 8000"
+msgstr ""
+"Зазначений запит битий: Недійсне значення '%s', приймаю по умовчанню 8000"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/requests.cpp:1151
+#, c-format
+msgid "Unknown DCC type '%s'"
+msgstr "Невідомий DCC тип '%s'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:64
+msgid "&Accept"
+msgstr "&Прийняти"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:69
+msgid "&Reject"
+msgstr "&Відкинути"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:129
+msgid "&Rename"
+msgstr "&Перейменувати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:133
+msgid "Over&write"
+msgstr "Пе&реписати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:137
+msgid "Re&sume"
+msgstr "&Докачка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/dialogs.cpp:149
+msgid "File Already Exists - KVIrc"
+msgstr "Файл уже існує - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/utils.cpp:122
+msgid "Can't retrieve a suitable local IPV4 address"
+msgstr "Не можу знайти придатний локальний IPV4 адреса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/dcc/utils.cpp:140
+#, c-format
+msgid ""
+"Can't listen on default interface '%s': fix it in the options dialog, "
+"disabling the option (so the next dcc will work)"
+msgstr ""
+"Не можу слухати інтерфейс '%s': виправте його в діалозі опцій, або виключите "
+"опцію (тоді ймовірно dcc буде працювати)"
+
+#~ msgid "%1 bytes"
+#~ msgstr "%1 байт"
+
+#~ msgid "Choose Save Location - KVIrc"
+#~ msgstr "Виберіть шлях збереження - KVIrc"
+
+#~ msgid "Contacting host %s on port %s"
+#~ msgstr "Підключення до хосту %s на порт %s"
+
+#~ msgid "Missing target nickname"
+#~ msgstr "Цільовий никнув загублений"
+
+#~ msgid "Missing filename"
+#~ msgstr "Відсутнє ім'я файлу"
+
+#~ msgid "The file size is not an positive number"
+#~ msgstr "Розмір файлу не є позитивним числом"
+
+#~ msgid "Invalid file size specified, no message sent"
+#~ msgstr "Заданий недійсний розмір файлу, повідомлення не відіслане"
diff --git a/po/modules/editor/Makefile.am b/po/modules/editor/Makefile.am
new file mode 100644
index 00000000..ebe7b675
--- /dev/null
+++ b/po/modules/editor/Makefile.am
@@ -0,0 +1,74 @@
+################################################################################
+# KVirc IRC client Makefile - 18.09.99 Szymon Stefanek <pragma at kvirc dot net>
+################################################################################
+
+# The name of this module
+THISMODULE = editor
+
+# Don't touch this
+tmpdir = $(localedir)
+
+# The *.mo files to generate
+tmp_DATA = editor_ca.mo \
+ editor_cs.mo \
+ editor_it.mo \
+ editor_de.mo \
+ editor_es.mo \
+ editor_pt.mo \
+ editor_ru.mo \
+ editor_pt_BR.mo \
+ editor_fr.mo \
+ editor_hu.mo \
+ editor_fi.mo \
+ editor_uk.mo
+
+# The *.po files to generate
+POFILES = editor_ca.po \
+ editor_cs.po \
+ editor_it.po \
+ editor_de.po \
+ editor_es.po \
+ editor_pt.po \
+ editor_ru.po \
+ editor_pt_BR.po \
+ editor_fr.po \
+ editor_hu.po \
+ editor_fi.po \
+ editor_uk.po
+
+###############################################################################
+# STOP EDITING HERE
+###############################################################################
+
+# Killed the fuzzy entries: don't use them , they may SEGV
+# - touch $@ && $(SS_MSGFMT) -fvo $@ $<
+
+CLEANFILES = $(tmp_DATA)
+EXTRA_DIST = $(POFILES)
+
+%.mo: %.po
+ -touch $@ && $(SS_MSGFMT) -vo $@ $<
+
+messages-extract:
+ @find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.cpp > files; \
+ find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.h >> files; \
+ xgettext -o $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot -k__tr_ctx -k__tr_no_lookup_ctx -k__tr2qs_ctx -k__tr2wc_ctx -k__tr2ws_ctx -f files; \
+ rm files; \
+ echo "Messages extracted to $(THISMODULE).pot";
+
+messages-update:
+ @old=_old; \
+ if test -f "$(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot"; then \
+ for lang in $(POFILES); do \
+ echo "Updating file $$lang"; \
+ mv -f $$lang $$lang$$old; \
+ msgmerge -o $$lang $$lang$$old $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot && rm -f $$lang$$old; \
+ done; \
+ else \
+ echo "----------------------------------------------------"; \
+ echo "- WARNING: ./$(THISMODULE).pot does not exist"; \
+ echo "- WARNING: You must run make messages-extract first"; \
+ echo "----------------------------------------------------"; \
+ fi
+
+messages: messages-extract messages-update
diff --git a/po/modules/editor/editor_ca.po b/po/modules/editor/editor_ca.po
new file mode 100644
index 00000000..49e74189
--- /dev/null
+++ b/po/modules/editor/editor_ca.po
@@ -0,0 +1,114 @@
+# translation of editor_ca.po to Catal�
+# translation of editor_es.po to spanish
+# Jos� Luis S�nchez <[email protected]>, 2004.
+# Marc Serra Romero <[email protected]>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: editor_ca\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-02-24 23:23+0100\n"
+"Last-Translator: Marc Serra Romero <[email protected]>\n"
+"Language-Team: Catal� <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"First-Translator: Jos� Luis S�nchez <[email protected]>\n"
+"X-Generator: KBabel 1.2\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:172
+msgid "Preferences"
+msgstr "Prefer�ncies"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:175
+msgid "Font:"
+msgstr "Font:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:180
+msgid "Background:"
+msgstr "Fons:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:181
+msgid "Normal text:"
+msgstr "Text normal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:182
+msgid "Brackets:"
+msgstr "Claus:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:183
+msgid "Comments:"
+msgstr "Comentaris:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:184
+msgid "Functions:"
+msgstr "Funcions:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:185
+msgid "Keywords:"
+msgstr "Identificadors:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:186
+msgid "Variables:"
+msgstr "Variables:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:187
+msgid "Punctuation:"
+msgstr "Puntuaci�:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:188
+msgid "Find:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:190
+msgid "&OK"
+msgstr "&Acceptar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:195
+msgid "Cancel"
+msgstr "Cancel�lar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:869
+msgid "&Open..."
+msgstr "&Obrir..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:870
+msgid "&Save As..."
+msgstr "&Guardar Com a..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:872
+msgid "&Configure Editor..."
+msgstr "&Configurar Editor..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:988
+msgid "Choose a Filename - KVIrc"
+msgstr "Esculli un Nom d'Arxiu - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1000
+msgid "Save Failed - KVIrc"
+msgstr "Ha fallat la Gravaci� - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1001
+#, c-format
+msgid "Can't open the file %s for writing."
+msgstr "No puc obrir l'arxiu %s per a escriptura."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1066
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1081
+#, c-format
+msgid "Row: %d Col: %d"
+msgstr "Fila: %d Col: %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1091
+msgid "Load Script File - KVIrc"
+msgstr "Carregar Arxivo d'Script - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1104
+msgid "Open Failed - KVIrc"
+msgstr "Ha fallat l'apertura - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1105
+#, c-format
+msgid "Can't open the file %s for reading."
+msgstr "No puc obrir l'arxiu %s per a lectura."
diff --git a/po/modules/editor/editor_cs.po b/po/modules/editor/editor_cs.po
new file mode 100644
index 00000000..317ab2b4
--- /dev/null
+++ b/po/modules/editor/editor_cs.po
@@ -0,0 +1,114 @@
+# Czech translation of Kvirc.
+# Copyright (C) 2004 THE Kvirc'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the Kvirc package.
+# Dušan Hokův <[email protected]>, 2004.
+# , fuzzy
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Kvirc\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-11-24 19:14+0100\n"
+"Last-Translator: Dušan Hokův <[email protected]>\n"
+"Language-Team: Czech <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:172
+msgid "Preferences"
+msgstr "Předvolby"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:175
+msgid "Font:"
+msgstr "Font:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:180
+msgid "Background:"
+msgstr "Pozadí:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:181
+msgid "Normal text:"
+msgstr "Normální text:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:182
+msgid "Brackets:"
+msgstr "Závorky:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:183
+msgid "Comments:"
+msgstr "Komentáře:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:184
+msgid "Functions:"
+msgstr "Funkce:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:185
+msgid "Keywords:"
+msgstr "Klíčová slova:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:186
+msgid "Variables:"
+msgstr "Proměnné:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:187
+msgid "Punctuation:"
+msgstr "Interpunkce:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:188
+msgid "Find:"
+msgstr "Hledat:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:190
+msgid "&OK"
+msgstr "&OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:195
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:869
+msgid "&Open..."
+msgstr "&Otevřít..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:870
+msgid "&Save As..."
+msgstr "&Uložit jako..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:872
+msgid "&Configure Editor..."
+msgstr "&Nastavit Editor..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:988
+msgid "Choose a Filename - KVIrc"
+msgstr "Vyberte soubor - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1000
+msgid "Save Failed - KVIrc"
+msgstr "Uložení selhalo - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1001
+#, c-format
+msgid "Can't open the file %s for writing."
+msgstr "Nelze otevřít soubor %s pro zápis."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1066
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1081
+#, c-format
+msgid "Row: %d Col: %d"
+msgstr "Řádek: %d Sloupec: %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1091
+msgid "Load Script File - KVIrc"
+msgstr "Otevřít soubor skriptu - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1104
+msgid "Open Failed - KVIrc"
+msgstr "Otevření selhalo - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1105
+#, c-format
+msgid "Can't open the file %s for reading."
+msgstr "Nelze otevřít soubor %s pro čtení."
diff --git a/po/modules/editor/editor_de.po b/po/modules/editor/editor_de.po
new file mode 100644
index 00000000..8fe6ad64
--- /dev/null
+++ b/po/modules/editor/editor_de.po
@@ -0,0 +1,115 @@
+# translation of editor_de.po to german
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Christoph Thielecke <[email protected]>, 2004.
+# Markus Rennings <[email protected]>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: editor_de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-11-14 01:17+0100\n"
+"Last-Translator: Markus Rennings <[email protected]>\n"
+"Language-Team: german <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:172
+msgid "Preferences"
+msgstr "Einstellungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:175
+msgid "Font:"
+msgstr "Schriftart:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:180
+msgid "Background:"
+msgstr "Hintergrund:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:181
+msgid "Normal text:"
+msgstr "Normaler Text:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:182
+msgid "Brackets:"
+msgstr "Klammern:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:183
+msgid "Comments:"
+msgstr "Kommentare:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:184
+msgid "Functions:"
+msgstr "Funktionen:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:185
+msgid "Keywords:"
+msgstr "Schlüsselwörter:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:186
+msgid "Variables:"
+msgstr "Variablen:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:187
+msgid "Punctuation:"
+msgstr "Zeichensetzung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:188
+msgid "Find:"
+msgstr "Suche:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:190
+msgid "&OK"
+msgstr "&OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:195
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:869
+msgid "&Open..."
+msgstr "&Öffnen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:870
+msgid "&Save As..."
+msgstr "&Speichern als..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:872
+msgid "&Configure Editor..."
+msgstr "&Editor einrichten..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:988
+msgid "Choose a Filename - KVIrc"
+msgstr "Dateiname auswählen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1000
+msgid "Save Failed - KVIrc"
+msgstr "Speichern fehlgeschlagen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1001
+#, c-format
+msgid "Can't open the file %s for writing."
+msgstr "Datei %s kann nicht zum Schreiben geöffnet werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1066
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1081
+#, c-format
+msgid "Row: %d Col: %d"
+msgstr "Zeile: %d Spalte: %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1091
+msgid "Load Script File - KVIrc"
+msgstr "Skriptdatei laden - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1104
+msgid "Open Failed - KVIrc"
+msgstr "Öffnen fehlgeschlagen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1105
+#, c-format
+msgid "Can't open the file %s for reading."
+msgstr "Datei %s kann nicht zum Lesen geöffnet werden."
diff --git a/po/modules/editor/editor_es.po b/po/modules/editor/editor_es.po
new file mode 100644
index 00000000..b904d662
--- /dev/null
+++ b/po/modules/editor/editor_es.po
@@ -0,0 +1,111 @@
+# translation of editor_es.po to spanish
+# Jos� Luis S�nchez <[email protected]>, 2004-2005
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: editor_es\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2004-10-23 11:25+0100\n"
+"Last-Translator: Jos� Luis S�nchez <[email protected]>\n"
+"Language-Team: spanish\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"First-Translator: Jos� Luis S�nchez <[email protected]>\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:172
+msgid "Preferences"
+msgstr "Preferencias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:175
+msgid "Font:"
+msgstr "Fuente:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:180
+msgid "Background:"
+msgstr "Fondo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:181
+msgid "Normal text:"
+msgstr "Texto normal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:182
+msgid "Brackets:"
+msgstr "Llaves:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:183
+msgid "Comments:"
+msgstr "Comentarios:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:184
+msgid "Functions:"
+msgstr "Funciones:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:185
+msgid "Keywords:"
+msgstr "Identificadores:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:186
+msgid "Variables:"
+msgstr "Variables:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:187
+msgid "Punctuation:"
+msgstr "Puntuaci�n:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:188
+msgid "Find:"
+msgstr "Buscar:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:190
+msgid "&OK"
+msgstr "&Aceptar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:195
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:869
+msgid "&Open..."
+msgstr "&Abrir..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:870
+msgid "&Save As..."
+msgstr "&Guardar Como..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:872
+msgid "&Configure Editor..."
+msgstr "&Configurar Editor..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:988
+msgid "Choose a Filename - KVIrc"
+msgstr "Escoja un Nombre de Archivo - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1000
+msgid "Save Failed - KVIrc"
+msgstr "Fall� la Grabaci�n - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1001
+#, c-format
+msgid "Can't open the file %s for writing."
+msgstr "No pude abrir el archivo %s para escritura."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1066
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1081
+#, c-format
+msgid "Row: %d Col: %d"
+msgstr "Fila: %d Col: %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1091
+msgid "Load Script File - KVIrc"
+msgstr "Cargar Archivo de Script - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1104
+msgid "Open Failed - KVIrc"
+msgstr "Fall� la apertura - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1105
+#, c-format
+msgid "Can't open the file %s for reading."
+msgstr "No pude abrir el archivo %s para lectura."
diff --git a/po/modules/editor/editor_fi.po b/po/modules/editor/editor_fi.po
new file mode 100644
index 00000000..bdfb1243
--- /dev/null
+++ b/po/modules/editor/editor_fi.po
@@ -0,0 +1,113 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: editor_fi\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-11-21 17:09+0100\n"
+"PO-Revision-Date: 2007-11-21 18:00+0200\n"
+"Last-Translator: Santeri Piippo <[email protected]>\n"
+"Language-Team: LANGUAGE <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:172
+msgid "Preferences"
+msgstr "Asetukset"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:175
+msgid "Font:"
+msgstr "Fontti:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:180
+msgid "Background:"
+msgstr "Tausta:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:181
+msgid "Normal text:"
+msgstr "Normaali teksti:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:182
+msgid "Brackets:"
+msgstr "Hakasulkeet:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:183
+msgid "Comments:"
+msgstr "Kommentit:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:184
+msgid "Functions:"
+msgstr "Funktiot:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:185
+msgid "Keywords:"
+msgstr "Avainsanat:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:186
+msgid "Variables:"
+msgstr "Muuttujat:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:187
+msgid "Punctuation:"
+msgstr "Välimerkit:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:188
+msgid "Find:"
+msgstr "Etsi:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:190
+msgid "&OK"
+msgstr "&OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:195
+msgid "Cancel"
+msgstr "Peruuta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:869
+msgid "&Open..."
+msgstr "&Avaa..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:870
+msgid "&Save As..."
+msgstr "&Tallenna nimellä..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:872
+msgid "&Configure Editor..."
+msgstr "&Konfiguroi editori..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:988
+msgid "Choose a Filename - KVIrc"
+msgstr "Valitse tiedostonimi - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1000
+msgid "Save Failed - KVIrc"
+msgstr "Tallennus epäonnistui - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1001
+#, c-format
+msgid "Can't open the file %s for writing."
+msgstr "Ei voitu avata tidostoa %s kirjoitettavaksi."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1066
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1081
+#, c-format
+msgid "Row: %d Col: %d"
+msgstr "Rivi: %d Merkki: %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1091
+msgid "Load Script File - KVIrc"
+msgstr "Lataa skriptitiedosto - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1104
+msgid "Open Failed - KVIrc"
+msgstr "Avaus epäonnistui - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1105
+#, c-format
+msgid "Can't open the file %s for reading."
+msgstr "Ei voitu avata tiedostoa %s luettavaksi."
diff --git a/po/modules/editor/editor_fr.po b/po/modules/editor/editor_fr.po
new file mode 100644
index 00000000..364cbe54
--- /dev/null
+++ b/po/modules/editor/editor_fr.po
@@ -0,0 +1,114 @@
+# translation of editor_fr.po to Français
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Ahinu <[email protected]>, 2005.
+# Ahinu <[email protected]>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: editor_fr\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2006-07-31 14:54+0200\n"
+"Last-Translator: Ahinu <[email protected]>\n"
+"Language-Team: Français <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10.2\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:172
+msgid "Preferences"
+msgstr "Préférences"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:175
+msgid "Font:"
+msgstr "Police :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:180
+msgid "Background:"
+msgstr "Fond :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:181
+msgid "Normal text:"
+msgstr "Texte normal :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:182
+msgid "Brackets:"
+msgstr "Crochets :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:183
+msgid "Comments:"
+msgstr "Commentaires :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:184
+msgid "Functions:"
+msgstr "Fonctions :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:185
+msgid "Keywords:"
+msgstr "Mots clés :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:186
+msgid "Variables:"
+msgstr "Variables :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:187
+msgid "Punctuation:"
+msgstr "Ponctuation :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:188
+msgid "Find:"
+msgstr "Chercher :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:190
+msgid "&OK"
+msgstr "&Valider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:195
+msgid "Cancel"
+msgstr "Annuler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:869
+msgid "&Open..."
+msgstr "&Ouvrir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:870
+msgid "&Save As..."
+msgstr "&Sauvegarder Sous..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:872
+msgid "&Configure Editor..."
+msgstr "&Configurer l'Éditeur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:988
+msgid "Choose a Filename - KVIrc"
+msgstr "Choisir un Nom de Fichier - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1000
+msgid "Save Failed - KVIrc"
+msgstr "Sauvegarde Impossible - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1001
+#, c-format
+msgid "Can't open the file %s for writing."
+msgstr "Impossible d'ouvrir le fichier %s en écriture."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1066
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1081
+#, c-format
+msgid "Row: %d Col: %d"
+msgstr "Ligne : %d Col : %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1091
+msgid "Load Script File - KVIrc"
+msgstr "Chargement Fichier Script - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1104
+msgid "Open Failed - KVIrc"
+msgstr "Ouverture Impossible - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1105
+#, c-format
+msgid "Can't open the file %s for reading."
+msgstr "Impossible d'ouvrir le fichier %s en lecture."
diff --git a/po/modules/editor/editor_hu.po b/po/modules/editor/editor_hu.po
new file mode 100644
index 00000000..a5ff44b8
--- /dev/null
+++ b/po/modules/editor/editor_hu.po
@@ -0,0 +1,113 @@
+# translation of editor_hu.po to hungarian
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Ádám Fibinger <[email protected]>, 2006, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: editor_hu\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-10-27 22:44+0200\n"
+"Last-Translator: Ádám Fibinger <[email protected]>\n"
+"Language-Team: hungarian <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:172
+msgid "Preferences"
+msgstr "Tulajdonságok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:175
+msgid "Font:"
+msgstr "Betűtípus:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:180
+msgid "Background:"
+msgstr "Háttér: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:181
+msgid "Normal text:"
+msgstr "Normál szöveg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:182
+msgid "Brackets:"
+msgstr "Zárójelek: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:183
+msgid "Comments:"
+msgstr "Kommentek: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:184
+msgid "Functions:"
+msgstr "Függvények: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:185
+msgid "Keywords:"
+msgstr "Kulcsszavak: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:186
+msgid "Variables:"
+msgstr "Változók: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:187
+msgid "Punctuation:"
+msgstr "Központozás: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:188
+msgid "Find:"
+msgstr "Keresés:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:190
+msgid "&OK"
+msgstr "&OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:195
+msgid "Cancel"
+msgstr "Mégsem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:869
+msgid "&Open..."
+msgstr "Megnyitás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:870
+msgid "&Save As..."
+msgstr "Mentés másként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:872
+msgid "&Configure Editor..."
+msgstr "Szerkesztő beállításai..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:988
+msgid "Choose a Filename - KVIrc"
+msgstr "Válassz Fájlnevet - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1000
+msgid "Save Failed - KVIrc"
+msgstr "Mentés Sikertelen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1001
+#, c-format
+msgid "Can't open the file %s for writing."
+msgstr "Nem tudom megnyitni írásra: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1066
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1081
+#, c-format
+msgid "Row: %d Col: %d"
+msgstr "Sor: %d Oszlop: %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1091
+msgid "Load Script File - KVIrc"
+msgstr "Szkript Fájl Betöltése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1104
+msgid "Open Failed - KVIrc"
+msgstr "Megnyitás Sikertelen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1105
+#, c-format
+msgid "Can't open the file %s for reading."
+msgstr "Nem tudom megnyitni írásra: %s"
diff --git a/po/modules/editor/editor_it.po b/po/modules/editor/editor_it.po
new file mode 100644
index 00000000..90108c02
--- /dev/null
+++ b/po/modules/editor/editor_it.po
@@ -0,0 +1,137 @@
+# translation of editor_it.po to italiano
+# KVIrc Editor module Italian translation file
+# Italian translation file for KVIrc 3.0
+# Copyright (C) Szymon Stefanek
+# This file is distributed under the same license as the KVIrc package.
+# Eva <[email protected]>, 2004.
+# Etherea <cle at virg0 dot org>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: editor_it\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2006-02-10 01:23+0200\n"
+"Last-Translator: Etherea <cle at virg0 dot org>\n"
+"Language-Team: italiano <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.2beta3\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:172
+msgid "Preferences"
+msgstr "Preferenze"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:175
+msgid "Font:"
+msgstr "Carattere:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:180
+msgid "Background:"
+msgstr "Sfondo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:181
+msgid "Normal text:"
+msgstr "Testo normale:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:182
+msgid "Brackets:"
+msgstr "Parentesi graffe:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:183
+msgid "Comments:"
+msgstr "Commenti:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:184
+msgid "Functions:"
+msgstr "Funzioni:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:185
+msgid "Keywords:"
+msgstr "Parole chiave:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:186
+msgid "Variables:"
+msgstr "Variabili:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:187
+msgid "Punctuation:"
+msgstr "Punteggiatura:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:188
+msgid "Find:"
+msgstr "Trova:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:190
+msgid "&OK"
+msgstr "&OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:195
+msgid "Cancel"
+msgstr "Annulla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:869
+msgid "&Open..."
+msgstr "&Apri..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:870
+msgid "&Save As..."
+msgstr "&Salva con nome..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:872
+msgid "&Configure Editor..."
+msgstr "&Configura Editor..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:988
+msgid "Choose a Filename - KVIrc"
+msgstr "Scegli un Nome - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1000
+msgid "Save Failed - KVIrc"
+msgstr "Impossibile Salvare - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1001
+#, c-format
+msgid "Can't open the file %s for writing."
+msgstr "Impossible aprire il file %s in scrittura."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1066
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1081
+#, c-format
+msgid "Row: %d Col: %d"
+msgstr "Riga: %d Colonna: %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1091
+msgid "Load Script File - KVIrc"
+msgstr "Caricare lo Script - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1104
+msgid "Open Failed - KVIrc"
+msgstr "Apertura Fallita - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1105
+#, c-format
+msgid "Can't open the file %s for reading."
+msgstr "Impossibile aprire il file %s in lettura."
+
+#~ msgid "KVIrc Scripts (*.kvs);;All Files (*)"
+#~ msgstr "Script di KVIrc (*.kvs);;Tutti i File (*)"
+
+#~ msgid "Ok"
+#~ msgstr "Ok"
+
+#~ msgid "Save to file"
+#~ msgstr "Salva su file"
+
+#~ msgid "Load from file"
+#~ msgstr "Carica da file"
+
+#~ msgid "Configure colors and fonts"
+#~ msgstr "Configura i colori ed i caratteri"
+
+#~ msgid "Choose a script file to load"
+#~ msgstr "Scegli un file da caricare"
+
+#~ msgid "Load failed"
+#~ msgstr "Caricamento fallito"
diff --git a/po/modules/editor/editor_pt.po b/po/modules/editor/editor_pt.po
new file mode 100644
index 00000000..a5ff69d1
--- /dev/null
+++ b/po/modules/editor/editor_pt.po
@@ -0,0 +1,116 @@
+# translation of editor_pt.po to Português
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Zé <[email protected]>, 2004.
+# José Melo <[email protected]>, 2005, 2006.
+# José Melo <[email protected]>, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: editor_pt\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2006-05-09 01:13+0100\n"
+"Last-Translator: José Melo <[email protected]>\n"
+"Language-Team: Português <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.2\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:172
+msgid "Preferences"
+msgstr "Preferências"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:175
+msgid "Font:"
+msgstr "Tipo de Letra:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:180
+msgid "Background:"
+msgstr "Fundo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:181
+msgid "Normal text:"
+msgstr "Texto normal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:182
+msgid "Brackets:"
+msgstr "Chavetas:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:183
+msgid "Comments:"
+msgstr "Comentários:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:184
+msgid "Functions:"
+msgstr "Funções:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:185
+msgid "Keywords:"
+msgstr "Identificadores:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:186
+msgid "Variables:"
+msgstr "Variáveis:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:187
+msgid "Punctuation:"
+msgstr "Pontuação:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:188
+msgid "Find:"
+msgstr "Procurar:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:190
+msgid "&OK"
+msgstr "&OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:195
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:869
+msgid "&Open..."
+msgstr "&Abrir..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:870
+msgid "&Save As..."
+msgstr "&Gravar Como..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:872
+msgid "&Configure Editor..."
+msgstr "&Configurar Editor..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:988
+msgid "Choose a Filename - KVIrc"
+msgstr "Escolha um Nome de Ficheiro - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1000
+msgid "Save Failed - KVIrc"
+msgstr "Gravação Falhada - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1001
+#, c-format
+msgid "Can't open the file %s for writing."
+msgstr "Não é possível abrir o ficheiro %s para escrita."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1066
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1081
+#, c-format
+msgid "Row: %d Col: %d"
+msgstr "Linha: %d Coluna: %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1091
+msgid "Load Script File - KVIrc"
+msgstr "Carregar Ficheiro de Script - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1104
+msgid "Open Failed - KVIrc"
+msgstr "Falha ao Abrir - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1105
+#, c-format
+msgid "Can't open the file %s for reading."
+msgstr "Não é possível abrir o ficheiro %s para leitura."
diff --git a/po/modules/editor/editor_pt_BR.po b/po/modules/editor/editor_pt_BR.po
new file mode 100644
index 00000000..745eebd3
--- /dev/null
+++ b/po/modules/editor/editor_pt_BR.po
@@ -0,0 +1,114 @@
+# translation of editor_pt_BR.po to
+# translation of editor.pot to Brazilian-Protugues
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Adilson GonAalves Soares Junior <[email protected]>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: editor_pt_BR\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2004-11-15 02:17+0000\n"
+"Last-Translator: \n"
+"Language-Team: <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:172
+msgid "Preferences"
+msgstr "Preferências"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:175
+msgid "Font:"
+msgstr "Fonte:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:180
+msgid "Background:"
+msgstr "Fundo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:181
+msgid "Normal text:"
+msgstr "Texto normal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:182
+msgid "Brackets:"
+msgstr "Parênteses:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:183
+msgid "Comments:"
+msgstr "Comentários:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:184
+msgid "Functions:"
+msgstr "Funções:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:185
+msgid "Keywords:"
+msgstr "Palavras chave:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:186
+msgid "Variables:"
+msgstr "Variáveis:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:187
+msgid "Punctuation:"
+msgstr "Pontuação:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:188
+msgid "Find:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:190
+msgid "&OK"
+msgstr "&Aceitar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:195
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:869
+msgid "&Open..."
+msgstr "&Abrir..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:870
+msgid "&Save As..."
+msgstr "&Salvar Como..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:872
+msgid "&Configure Editor..."
+msgstr "&Configurar Editor..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:988
+msgid "Choose a Filename - KVIrc"
+msgstr "Escolha um Nome de Arquivo - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1000
+msgid "Save Failed - KVIrc"
+msgstr "Falha ao Salvar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1001
+#, c-format
+msgid "Can't open the file %s for writing."
+msgstr "Não foi possível abrir o arquivo %s para escrita."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1066
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1081
+#, c-format
+msgid "Row: %d Col: %d"
+msgstr "Linha: %d Coluna: %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1091
+msgid "Load Script File - KVIrc"
+msgstr "Carregar Arquivo de Script - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1104
+msgid "Open Failed - KVIrc"
+msgstr "Falhou ao Abrir - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1105
+#, c-format
+msgid "Can't open the file %s for reading."
+msgstr "Não foi possível abrir o arquivo %s para leitura."
diff --git a/po/modules/editor/editor_ru.po b/po/modules/editor/editor_ru.po
new file mode 100644
index 00000000..34179406
--- /dev/null
+++ b/po/modules/editor/editor_ru.po
@@ -0,0 +1,118 @@
+# translation of editor_ru.po to russian
+# translation of editor_ru.po to русский
+# translation of editor.po to русский
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Valerius <[email protected]>, 2004, 2005.
+# Valeriy Girchenko <[email protected]>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: editor_ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-12-27 23:04+0200\n"
+"Last-Translator: Valerius <[email protected]>\n"
+"Language-Team: russian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10.2\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:172
+msgid "Preferences"
+msgstr "Предпочтения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:175
+msgid "Font:"
+msgstr "Шрифт:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:180
+msgid "Background:"
+msgstr "Фон:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:181
+msgid "Normal text:"
+msgstr "Обычный текст:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:182
+msgid "Brackets:"
+msgstr "Скобки:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:183
+msgid "Comments:"
+msgstr "Комментарии:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:184
+msgid "Functions:"
+msgstr "Функции:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:185
+msgid "Keywords:"
+msgstr "Ключевые слова:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:186
+msgid "Variables:"
+msgstr "Переменные:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:187
+msgid "Punctuation:"
+msgstr "Знаки препинания:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:188
+msgid "Find:"
+msgstr "Поиск:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:190
+msgid "&OK"
+msgstr "&Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:195
+msgid "Cancel"
+msgstr "Отмена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:869
+msgid "&Open..."
+msgstr "&Открыть..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:870
+msgid "&Save As..."
+msgstr "&Сохранить как..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:872
+msgid "&Configure Editor..."
+msgstr "&Настроить редактор..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:988
+msgid "Choose a Filename - KVIrc"
+msgstr "Выберите имя файла - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1000
+msgid "Save Failed - KVIrc"
+msgstr "Ошибка записи - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1001
+#, c-format
+msgid "Can't open the file %s for writing."
+msgstr "Невозможно открыть файл %s на запись."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1066
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1081
+#, c-format
+msgid "Row: %d Col: %d"
+msgstr "Строк: %d Колонок:%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1091
+msgid "Load Script File - KVIrc"
+msgstr "Загрузить файл скрипта - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1104
+msgid "Open Failed - KVIrc"
+msgstr "Ошибка открытия - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1105
+#, c-format
+msgid "Can't open the file %s for reading."
+msgstr "Невозможно открыть файл %s на чтение."
diff --git a/po/modules/editor/editor_uk.po b/po/modules/editor/editor_uk.po
new file mode 100644
index 00000000..e0f8a934
--- /dev/null
+++ b/po/modules/editor/editor_uk.po
@@ -0,0 +1,118 @@
+# translation of editor_ua.po to
+# translation of editor_ua.po to ukrainian
+# translation of editor_ua.po to українська
+# translation of editor.po to українська
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE' COPYRIGHT HOLDER.
+# Belyaev Stanislav <[email protected]>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: about_ua\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-12-19 15:00+0200\n"
+"Last-Translator: Belyaev Stanislav <[email protected]>\n"
+"Language-Team: Ukrainian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10.2\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1:2);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:172
+msgid "Preferences"
+msgstr "Переваги"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:175
+msgid "Font:"
+msgstr "Шрифт:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:180
+msgid "Background:"
+msgstr "Тло:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:181
+msgid "Normal text:"
+msgstr "Звичайний текст:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:182
+msgid "Brackets:"
+msgstr "Дужки:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:183
+msgid "Comments:"
+msgstr "Коментарі:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:184
+msgid "Functions:"
+msgstr "Функції:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:185
+msgid "Keywords:"
+msgstr "Ключові слова:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:186
+msgid "Variables:"
+msgstr "Змінні:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:187
+msgid "Punctuation:"
+msgstr "Розділові знаки:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:188
+msgid "Find:"
+msgstr "Пошук:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:190
+msgid "&OK"
+msgstr "&Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:195
+msgid "Cancel"
+msgstr "Скасування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:869
+msgid "&Open..."
+msgstr "&Відкрити..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:870
+msgid "&Save As..."
+msgstr "&Зберегти як..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:872
+msgid "&Configure Editor..."
+msgstr "&Настроїти редактор..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:988
+msgid "Choose a Filename - KVIrc"
+msgstr "Виберіть ім'я файлу - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1000
+msgid "Save Failed - KVIrc"
+msgstr "Помилка запису - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1001
+#, c-format
+msgid "Can't open the file %s for writing."
+msgstr "Неможливо відкрити файл %s на запис."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1066
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1081
+#, c-format
+msgid "Row: %d Col: %d"
+msgstr "Рядків: %d Колонок:%d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1091
+msgid "Load Script File - KVIrc"
+msgstr "Завантажити файл скрипта - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1104
+msgid "Open Failed - KVIrc"
+msgstr "Помилка відкриття - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/editor/scripteditor.cpp:1105
+#, c-format
+msgid "Can't open the file %s for reading."
+msgstr "Неможливо відкрити файл %s на читання."
diff --git a/po/modules/filetransferwindow/Makefile.am b/po/modules/filetransferwindow/Makefile.am
new file mode 100644
index 00000000..cc55ec14
--- /dev/null
+++ b/po/modules/filetransferwindow/Makefile.am
@@ -0,0 +1,76 @@
+###############################################################################
+# KVirc IRC client Makefile - 18.09.99 Szymon Stefanek <pragma at kvirc dot net>
+###############################################################################
+
+# The name of this module
+THISMODULE = filetransferwindow
+
+# Don't touch this
+tmpdir = $(localedir)
+
+# The *.mo files to generate
+tmp_DATA = filetransferwindow_ca.mo \
+ filetransferwindow_cs.mo \
+ filetransferwindow_it.mo \
+ filetransferwindow_de.mo \
+ filetransferwindow_pt.mo \
+ filetransferwindow_es.mo \
+ filetransferwindow_ru.mo \
+ filetransferwindow_pt_BR.mo \
+ filetransferwindow_fr.mo \
+ filetransferwindow_hu.mo \
+ filetransferwindow_fi.mo \
+ filetransferwindow_hr.mo \
+ filetransferwindow_uk.mo
+
+# The *.po files to generate
+POFILES = filetransferwindow_ca.po \
+ filetransferwindow_cs.po \
+ filetransferwindow_it.po \
+ filetransferwindow_de.po \
+ filetransferwindow_pt.po \
+ filetransferwindow_es.po \
+ filetransferwindow_ru.po \
+ filetransferwindow_pt_BR.po \
+ filetransferwindow_fr.po \
+ filetransferwindow_hu.po \
+ filetransferwindow_fi.po \
+ filetransferwindow_hr.po \
+ filetransferwindow_uk.po
+
+###############################################################################
+# STOP EDITING HERE
+###############################################################################
+
+# Killed the fuzzy entries: don't use them , they may SEGV
+# - touch $@ && $(SS_MSGFMT) -fvo $@ $<
+
+CLEANFILES = $(tmp_DATA)
+EXTRA_DIST = $(POFILES)
+
+%.mo: %.po
+ -touch $@ && $(SS_MSGFMT) -vo $@ $<
+
+messages-extract:
+ @find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.cpp > files; \
+ find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.h >> files; \
+ xgettext -o $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot -k__tr_ctx -k__tr_no_lookup_ctx -k__tr2qs_ctx -k__tr2wc_ctx -k__tr2ws_ctx -f files; \
+ rm files; \
+ echo "Messages extracted to $(THISMODULE).pot";
+
+messages-update:
+ @old=_old; \
+ if test -f "$(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot"; then \
+ for lang in $(POFILES); do \
+ echo "Updating file $$lang"; \
+ mv -f $$lang $$lang$$old; \
+ msgmerge -o $$lang $$lang$$old $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot && rm -f $$lang$$old; \
+ done; \
+ else \
+ echo "----------------------------------------------------"; \
+ echo "- WARNING: ./$(THISMODULE).pot does not exist"; \
+ echo "- WARNING: You must run make messages-extract first"; \
+ echo "----------------------------------------------------"; \
+ fi
+
+messages: messages-extract messages-update
diff --git a/po/modules/filetransferwindow/filetransferwindow_ca.po b/po/modules/filetransferwindow/filetransferwindow_ca.po
new file mode 100644
index 00000000..fce1d6a3
--- /dev/null
+++ b/po/modules/filetransferwindow/filetransferwindow_ca.po
@@ -0,0 +1,130 @@
+# translation of filetransferwindow_ca.po to Català
+# translation of filetransferwindow_es.po to Spanish
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# José Luis Sánchez<[email protected]>, 2004.
+# Marc Serra Romero <[email protected]>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: filetransferwindow_ca\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-13 00:55+0100\n"
+"PO-Revision-Date: 2005-02-24 23:38+0100\n"
+"Last-Translator: Marc Serra Romero <[email protected]>\n"
+"Language-Team: Català <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.2\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:164
+msgid "Type"
+msgstr "Tipus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:165
+msgid "Information"
+msgstr "Informació"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:166
+msgid "Progress"
+msgstr "Progrés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:316
+#, fuzzy
+msgid "Size: %1"
+msgstr "Mida: %1 bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:364
+msgid "&Open"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:352
+msgid "&Other..."
+msgstr "Altres..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:367
+msgid "Open &With"
+msgstr "Obrir Amb"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:357
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:369
+msgid "Open &Location"
+msgstr "Obrir Destí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:358
+msgid "Terminal at Location"
+msgstr "Terminal en Destí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:370
+#, fuzzy
+msgid "MS-DOS Prompt at Location"
+msgstr "Terminal en Destí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:375
+msgid "&Copy Path to Clipboard"
+msgstr "&Copiar trajectòria al Portapapers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:377
+msgid "&Delete file"
+msgstr "&Borrar arxiu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:379
+msgid "Local &File"
+msgstr "&Arxiu Local"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:402
+msgid "&Clear Terminated"
+msgstr "Borrar Acabades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:409
+msgid "Clear &All"
+msgstr "Borr&ar Totes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:499
+msgid "Do you really want to delete the file %Q?"
+msgstr "¿Realment vols borrar l'arxiu %Q?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:501
+msgid "Confirm delete"
+msgstr "Confirmar esborrat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Yes"
+msgstr "Sí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "No"
+msgstr "No"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:506
+msgid "Delete failed"
+msgstr "Ha fallat el esborrat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:507
+msgid "Failed to remove the file"
+msgstr "No he pogut esborrar l'arxiu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:508
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:672
+msgid "Clear all transfers, including any in progress?"
+msgstr ""
+"¿Borrar totes les transferències, incloent qualsevol que estigui en progrés?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Clear All Transfers? - KVIrc"
+msgstr "¿Borrar Totes les Transferències? - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:711
+msgid "File Transfers"
+msgstr "Transferències d'Arxius"
+
+#~ msgid "&Default Application"
+#~ msgstr "Aplicació per &Defecte"
diff --git a/po/modules/filetransferwindow/filetransferwindow_cs.po b/po/modules/filetransferwindow/filetransferwindow_cs.po
new file mode 100644
index 00000000..9a18bfff
--- /dev/null
+++ b/po/modules/filetransferwindow/filetransferwindow_cs.po
@@ -0,0 +1,125 @@
+# Czech translation of Kvirc-3.0.
+# Copyright (C) 2004 THE Kvirc-3.0'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the Kvirc-3.0 package.
+# Dušan Hokův <[email protected]>, 2004.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Kvirc-3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-13 00:55+0100\n"
+"PO-Revision-Date: 2007-12-05 17:57+0100\n"
+"Last-Translator: Dusan Hokuv <[email protected]>\n"
+"Language-Team: Czech <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:164
+msgid "Type"
+msgstr "Typ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:165
+msgid "Information"
+msgstr "Informace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:166
+msgid "Progress"
+msgstr "Průběh"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:316
+msgid "Size: %1"
+msgstr "Velikost: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:364
+msgid "&Open"
+msgstr "&Otevřít"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:352
+msgid "&Other..."
+msgstr "&Ostatní..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:367
+msgid "Open &With"
+msgstr "Otevřít &Pomocí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:357
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:369
+msgid "Open &Location"
+msgstr "Otevřít &Umístění"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:358
+msgid "Terminal at Location"
+msgstr "Terminál v Umístění"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:370
+msgid "MS-DOS Prompt at Location"
+msgstr "MS-DOS Prompt na umístění"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:375
+msgid "&Copy Path to Clipboard"
+msgstr "&Kopírovat cestu do schránky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:377
+msgid "&Delete file"
+msgstr "&Smazat soubor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:379
+msgid "Local &File"
+msgstr "Lokální &Soubor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:402
+msgid "&Clear Terminated"
+msgstr "&Smazat přerušené"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:409
+msgid "Clear &All"
+msgstr "Smazat &Vše"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:499
+msgid "Do you really want to delete the file %Q?"
+msgstr "Opravdu chcete smazat soubor %Q?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:501
+msgid "Confirm delete"
+msgstr "Potvrdit smazání"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Yes"
+msgstr "Ano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "No"
+msgstr "Ne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:506
+msgid "Delete failed"
+msgstr "Smazání selhalo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:507
+msgid "Failed to remove the file"
+msgstr "Selhalo smazání souboru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:508
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:672
+msgid "Clear all transfers, including any in progress?"
+msgstr "Smazat všechny přenosy, včetně probíhajících?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Clear All Transfers? - KVIrc"
+msgstr "Smazat všechny přenosy: - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:711
+msgid "File Transfers"
+msgstr "Souborové přenosy"
+
+#~ msgid "&Default Application"
+#~ msgstr "&Výchozí aplikace"
diff --git a/po/modules/filetransferwindow/filetransferwindow_de.po b/po/modules/filetransferwindow/filetransferwindow_de.po
new file mode 100644
index 00000000..3a8ee2a6
--- /dev/null
+++ b/po/modules/filetransferwindow/filetransferwindow_de.po
@@ -0,0 +1,127 @@
+# translation of filetransferwindow_de.po to german
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Christoph Thielecke <[email protected]>, 2004.
+# Markus Rennings <[email protected]>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: filetransferwindow_de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-13 00:55+0100\n"
+"PO-Revision-Date: 2008-02-26 02:39+0100\n"
+"Last-Translator: Markus Rennings <[email protected]>\n"
+"Language-Team: german <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:164
+msgid "Type"
+msgstr "Typ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:165
+msgid "Information"
+msgstr "Information"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:166
+msgid "Progress"
+msgstr "Fortschritt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:316
+msgid "Size: %1"
+msgstr "Größe: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:364
+msgid "&Open"
+msgstr "&Öffnen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:352
+msgid "&Other..."
+msgstr "&Andere..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:367
+msgid "Open &With"
+msgstr "Öffnen &mit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:357
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:369
+msgid "Open &Location"
+msgstr "&Ort öffnen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:358
+msgid "Terminal at Location"
+msgstr "Terminal an Ort"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:370
+msgid "MS-DOS Prompt at Location"
+msgstr "MS-DOS-Prompt an dieser Stelle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:375
+msgid "&Copy Path to Clipboard"
+msgstr "&Pfad in Zwischenablage kopieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:377
+msgid "&Delete file"
+msgstr "Datei &löschen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:379
+msgid "Local &File"
+msgstr "Lokale &Datei"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:402
+msgid "&Clear Terminated"
+msgstr "Beendete &löschen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:409
+msgid "Clear &All"
+msgstr "&Alle löschen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:499
+msgid "Do you really want to delete the file %Q?"
+msgstr "Soll Datei %Q wirklich gelöscht werden?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:501
+msgid "Confirm delete"
+msgstr "Löschen bestätigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Yes"
+msgstr "Ja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "No"
+msgstr "Nein"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:506
+msgid "Delete failed"
+msgstr "Löschen fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:507
+msgid "Failed to remove the file"
+msgstr "Löschen der Datei fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:508
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:672
+msgid "Clear all transfers, including any in progress?"
+msgstr "Alle Übertragungen inklusive der laufenden löschen?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Clear All Transfers? - KVIrc"
+msgstr "Alle Übertragungen löschen? - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:711
+msgid "File Transfers"
+msgstr "Dateiübertragungen"
+
+#~ msgid "&Default Application"
+#~ msgstr "&Standardanwendung"
diff --git a/po/modules/filetransferwindow/filetransferwindow_es.po b/po/modules/filetransferwindow/filetransferwindow_es.po
new file mode 100644
index 00000000..1ce8b0ea
--- /dev/null
+++ b/po/modules/filetransferwindow/filetransferwindow_es.po
@@ -0,0 +1,126 @@
+# translation of filetransferwindow_es.po to
+# translation of filetransferwindow_es.po to Spanish
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# José Luis Sánchez<[email protected]>, 2004.
+# Jose Luis Sánchez <[email protected]>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: filetransferwindow_es\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-13 00:55+0100\n"
+"PO-Revision-Date: 2005-11-20 18:47+0100\n"
+"Last-Translator: Jose Luis Sánchez <[email protected]>\n"
+"Language-Team: <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10.2\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:164
+msgid "Type"
+msgstr "Tipo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:165
+msgid "Information"
+msgstr "Información"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:166
+msgid "Progress"
+msgstr "Progreso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:316
+#, fuzzy
+msgid "Size: %1"
+msgstr "Tamaño: %1 bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:364
+msgid "&Open"
+msgstr "Abrir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:352
+msgid "&Other..."
+msgstr "&Otros..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:367
+msgid "Open &With"
+msgstr "Abrir Con"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:357
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:369
+msgid "Open &Location"
+msgstr "Abrir Destino"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:358
+msgid "Terminal at Location"
+msgstr "Terminal en Destino"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:370
+msgid "MS-DOS Prompt at Location"
+msgstr "Intérprete de comandos MS-DOS en esta posición"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:375
+msgid "&Copy Path to Clipboard"
+msgstr "&Copiar trayectoria al Portapapeles"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:377
+msgid "&Delete file"
+msgstr "&Borrar archivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:379
+msgid "Local &File"
+msgstr "&Archivo Local"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:402
+msgid "&Clear Terminated"
+msgstr "B&orrar terminadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:409
+msgid "Clear &All"
+msgstr "Borrar &Todas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:499
+msgid "Do you really want to delete the file %Q?"
+msgstr "¿Realmente quieres borrar el archivo %Q?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:501
+msgid "Confirm delete"
+msgstr "Confirmar borrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Yes"
+msgstr "Sí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "No"
+msgstr "No"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:506
+msgid "Delete failed"
+msgstr "Falló el borrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:507
+msgid "Failed to remove the file"
+msgstr "No pude borrar el archivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:508
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:672
+msgid "Clear all transfers, including any in progress?"
+msgstr ""
+"¿Borrar todas las transferencias, incluyendo cualquiera que esté en progreso?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Clear All Transfers? - KVIrc"
+msgstr "¿Borrar Todas las Transferencias? - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:711
+msgid "File Transfers"
+msgstr "Transferencias de Archivos"
diff --git a/po/modules/filetransferwindow/filetransferwindow_fi.po b/po/modules/filetransferwindow/filetransferwindow_fi.po
new file mode 100644
index 00000000..9460387d
--- /dev/null
+++ b/po/modules/filetransferwindow/filetransferwindow_fi.po
@@ -0,0 +1,122 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: filetransferwindow_fi\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-03-31 09:10+0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Santeri Piippo\n"
+"Language-Team: LANGUAGE <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:164
+msgid "Type"
+msgstr "Tyyppi"
+
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:165
+msgid "Information"
+msgstr "Tietoa"
+
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:166
+msgid "Progress"
+msgstr "Edistyminen"
+
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:316
+msgid "Size: %1 bytes"
+msgstr "Koko: %1 tavua"
+
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:334
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:364
+msgid "&Open"
+msgstr "&Avaa"
+
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:352
+msgid "&Other..."
+msgstr "&Muuta..."
+
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:355
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:367
+msgid "Open &With"
+msgstr "Avaa &ohjelmalla..."
+
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:357
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:369
+msgid "Open &Location"
+msgstr "Avaa &sijainti"
+
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:358
+msgid "Terminal at Location"
+msgstr "Komentotulkki kohteeseen"
+
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:370
+msgid "MS-DOS Prompt at Location"
+msgstr "MS-DOS -komentotulkki kohteeseen"
+
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:375
+msgid "&Copy Path to Clipboard"
+msgstr "&Kopioi polku leikepöydälle"
+
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:377
+msgid "&Delete file"
+msgstr "&Poista tiedosto"
+
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:379
+msgid "Local &File"
+msgstr "Paikallis&tiedosto"
+
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:402
+msgid "&Clear Terminated"
+msgstr "Tyhjää p&äättyneet"
+
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:409
+msgid "Clear &All"
+msgstr "Tyhjää &kaikki"
+
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:499
+msgid "Do you really want to delete the file %Q?"
+msgstr "Haluatko varmasti poistaa tiedoston %Q?"
+
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:501
+msgid "Confirm delete"
+msgstr "Varmista poisto"
+
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Yes"
+msgstr "Kyllä"
+
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "No"
+msgstr "Ei"
+
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:506
+msgid "Delete failed"
+msgstr "Poisto epäonnistui"
+
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:507
+msgid "Failed to remove the file"
+msgstr "Ei voitu poistaa tiedostoa"
+
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:508
+msgid "OK"
+msgstr "OK"
+
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:672
+msgid "Clear all transfers, including any in progress?"
+msgstr "Tyhjää kaikki siirrot, mukaanlukien ne, jotka eivät ole vielä valmiita?"
+
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Clear All Transfers? - KVIrc"
+msgstr "Tyhjää kaikki siirrot? - KVIrc"
+
+#: /home/oem/kvirc-qt4/src/modules/filetransferwindow/filetransferwindow.cpp:711
+msgid "File Transfers"
+msgstr "Tiedostosiirrot"
diff --git a/po/modules/filetransferwindow/filetransferwindow_fr.po b/po/modules/filetransferwindow/filetransferwindow_fr.po
new file mode 100644
index 00000000..bbdea775
--- /dev/null
+++ b/po/modules/filetransferwindow/filetransferwindow_fr.po
@@ -0,0 +1,123 @@
+# translation of filetransferwindow_fr.po to Français
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Ahinu <[email protected]>, 2005.
+# Elephantman <[email protected]>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: filetransferwindow_fr\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-13 00:55+0100\n"
+"PO-Revision-Date: 2008-03-06 17:52+0100\n"
+"Last-Translator: Elephantman <[email protected]>\n"
+"Language-Team: Français <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:164
+msgid "Type"
+msgstr "Type"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:165
+msgid "Information"
+msgstr "Information"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:166
+msgid "Progress"
+msgstr "Progrès"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:316
+msgid "Size: %1"
+msgstr "Taille : %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:364
+msgid "&Open"
+msgstr "&Ouvrir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:352
+msgid "&Other..."
+msgstr "&Autres..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:367
+msgid "Open &With"
+msgstr "Ou&vrir avec..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:357
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:369
+msgid "Open &Location"
+msgstr "Ouvrir A&dresse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:358
+msgid "Terminal at Location"
+msgstr "Terminal à l'Adresse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:370
+msgid "MS-DOS Prompt at Location"
+msgstr "Prompt MS-DOS à l'Adresse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:375
+msgid "&Copy Path to Clipboard"
+msgstr "&Copier Chemin dans Presse-papiers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:377
+msgid "&Delete file"
+msgstr "Su&pprimer Fichier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:379
+msgid "Local &File"
+msgstr "&Fichier Local"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:402
+msgid "&Clear Terminated"
+msgstr "&Effacer les Terminés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:409
+msgid "Clear &All"
+msgstr "Effacer &Tous"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:499
+msgid "Do you really want to delete the file %Q?"
+msgstr "Désirez-vous vraiment effacer le fichier %Q ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:501
+msgid "Confirm delete"
+msgstr "Confirmer la suppression"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Yes"
+msgstr "Oui"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "No"
+msgstr "Non"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:506
+msgid "Delete failed"
+msgstr "La suppression a échoué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:507
+msgid "Failed to remove the file"
+msgstr "Impossible de supprimer le fichier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:508
+msgid "OK"
+msgstr "Valider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:672
+msgid "Clear all transfers, including any in progress?"
+msgstr "Effacer tous les tranferts, y compris ceux en cours ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Clear All Transfers? - KVIrc"
+msgstr "Effacer Tous les Tranferts ? - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:711
+msgid "File Transfers"
+msgstr "Transferts de Fichier"
diff --git a/po/modules/filetransferwindow/filetransferwindow_hr.po b/po/modules/filetransferwindow/filetransferwindow_hr.po
new file mode 100644
index 00000000..5275506b
--- /dev/null
+++ b/po/modules/filetransferwindow/filetransferwindow_hr.po
@@ -0,0 +1,123 @@
+# translation of filetransferwindow_hr.po to Hrvatski
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# SpeedyGhost <[email protected]>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: filetransferwindow_hr\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-13 00:55+0100\n"
+"PO-Revision-Date: 2008-01-17 02:30+0100\n"
+"Last-Translator: SpeedyGhost <[email protected]>\n"
+"Language-Team: Hrvatski <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:164
+msgid "Type"
+msgstr "Vrsta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:165
+msgid "Information"
+msgstr "Informacije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:166
+msgid "Progress"
+msgstr "Napredak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:316
+#, fuzzy
+msgid "Size: %1"
+msgstr "Veličina: %1 bajtova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:364
+msgid "&Open"
+msgstr "&Otvori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:352
+msgid "&Other..."
+msgstr "&Ostalo.."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:367
+msgid "Open &With"
+msgstr "Otvori &S"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:357
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:369
+msgid "Open &Location"
+msgstr "Otvori &Lokaciju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:358
+msgid "Terminal at Location"
+msgstr "Terminal na Lokaciju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:370
+msgid "MS-DOS Prompt at Location"
+msgstr "MS-DOS Prompt na Lokaciju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:375
+msgid "&Copy Path to Clipboard"
+msgstr "&Kopiraj Putanju u Međuspremnik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:377
+msgid "&Delete file"
+msgstr "Obriši &datoteku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:379
+msgid "Local &File"
+msgstr "Lokalna D&atoteka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:402
+msgid "&Clear Terminated"
+msgstr "Oč&isti Prekinuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:409
+msgid "Clear &All"
+msgstr "Očisti S&ve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:499
+msgid "Do you really want to delete the file %Q?"
+msgstr "Želite li zaista obrisati datoteku %Q?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:501
+msgid "Confirm delete"
+msgstr "Potvrdite brisanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Yes"
+msgstr "Da"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "No"
+msgstr "Ne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:506
+msgid "Delete failed"
+msgstr "Neuspjelo brisanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:507
+msgid "Failed to remove the file"
+msgstr "Neuspjeh pri uklanjanju datoteke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:508
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:672
+msgid "Clear all transfers, including any in progress?"
+msgstr "Očistiti sve transfere, ukljućujući i aktivne?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Clear All Transfers? - KVIrc"
+msgstr "Očistiti sve Transfere? - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:711
+msgid "File Transfers"
+msgstr "Transferi Datoteka"
diff --git a/po/modules/filetransferwindow/filetransferwindow_hu.po b/po/modules/filetransferwindow/filetransferwindow_hu.po
new file mode 100644
index 00000000..92841782
--- /dev/null
+++ b/po/modules/filetransferwindow/filetransferwindow_hu.po
@@ -0,0 +1,123 @@
+# translation of filetransferwindow_hu.po to hungarian
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Ádám Fibinger <[email protected]>, 2006, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: filetransferwindow_hu\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-13 00:55+0100\n"
+"PO-Revision-Date: 2008-02-26 07:58+0100\n"
+"Last-Translator: Ádám Fibinger <[email protected]>\n"
+"Language-Team: hungarian <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:164
+msgid "Type"
+msgstr "Típus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:165
+msgid "Information"
+msgstr "Információ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:166
+msgid "Progress"
+msgstr "Folyamat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:316
+msgid "Size: %1"
+msgstr "Méret: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:364
+msgid "&Open"
+msgstr "Megnyitás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:352
+msgid "&Other..."
+msgstr "Egyéb"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:367
+msgid "Open &With"
+msgstr "Megnyitás ezzel..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:357
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:369
+msgid "Open &Location"
+msgstr "Hely megnyitása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:358
+msgid "Terminal at Location"
+msgstr "Terminál az adott helyen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:370
+msgid "MS-DOS Prompt at Location"
+msgstr "MS-DOS Promt az adott helyen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:375
+msgid "&Copy Path to Clipboard"
+msgstr "Útvonal másolása vágólapra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:377
+msgid "&Delete file"
+msgstr "Fájl Törlése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:379
+msgid "Local &File"
+msgstr "Helyi Fájl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:402
+msgid "&Clear Terminated"
+msgstr "Megszakított eltávolítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:409
+msgid "Clear &All"
+msgstr "Minden eltávolítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:499
+msgid "Do you really want to delete the file %Q?"
+msgstr "Tényleg törölni szeretnéd a fájlt: %Q?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:501
+msgid "Confirm delete"
+msgstr "Törlés Megerőssítése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Yes"
+msgstr "Igen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "No"
+msgstr "Nem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:506
+msgid "Delete failed"
+msgstr "Törlés sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:507
+msgid "Failed to remove the file"
+msgstr "A fájl eltávolítása sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:508
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:672
+msgid "Clear all transfers, including any in progress?"
+msgstr ""
+"Minden adatátvitel eltávolítása, beleértve a még folyamatban lévőket is?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Clear All Transfers? - KVIrc"
+msgstr "Minden Adatátvitel eltávolítása? - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:711
+msgid "File Transfers"
+msgstr "Fájl Átvitelek"
diff --git a/po/modules/filetransferwindow/filetransferwindow_it.po b/po/modules/filetransferwindow/filetransferwindow_it.po
new file mode 100644
index 00000000..9620a5d5
--- /dev/null
+++ b/po/modules/filetransferwindow/filetransferwindow_it.po
@@ -0,0 +1,125 @@
+# translation of filetransferwindow_it.po to
+# translation of filetransferwindow_it.po
+# KVIrc FileTransferWindow module Italian translation file
+# Italian translation file for KVIrc 3.0
+# Copyright (C) Szymon Stefanek
+# This file is distributed under the same license as the KVIrc package.
+# Etherea <cle at virg0 dot org>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: filetransferwindow_it\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-13 00:55+0100\n"
+"PO-Revision-Date: 2008-02-25 22:12+0100\n"
+"Last-Translator: \n"
+"Language-Team: <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:164
+msgid "Type"
+msgstr "Tipo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:165
+msgid "Information"
+msgstr "Informazioni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:166
+msgid "Progress"
+msgstr "Progresso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:316
+msgid "Size: %1"
+msgstr "Dimensione: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:364
+msgid "&Open"
+msgstr "&Apri"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:352
+msgid "&Other..."
+msgstr "Al&tro..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:367
+msgid "Open &With"
+msgstr "Apri &Con"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:357
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:369
+msgid "Open &Location"
+msgstr "Apri &Locazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:358
+msgid "Terminal at Location"
+msgstr "Terminale nella Locazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:370
+msgid "MS-DOS Prompt at Location"
+msgstr "Terminale MS-DOS nella Locazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:375
+msgid "&Copy Path to Clipboard"
+msgstr "&Copia Percorso negli Appunti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:377
+msgid "&Delete file"
+msgstr "&Elimina file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:379
+msgid "Local &File"
+msgstr "File &Locale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:402
+msgid "&Clear Terminated"
+msgstr "&Elimina Terminate"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:409
+msgid "Clear &All"
+msgstr "Elimina &Tutte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:499
+msgid "Do you really want to delete the file %Q?"
+msgstr "Vuoi veramente eliminare il file %Q?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:501
+msgid "Confirm delete"
+msgstr "Conferma eliminazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Yes"
+msgstr "Si"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "No"
+msgstr "No"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:506
+msgid "Delete failed"
+msgstr "Eliminazione fallita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:507
+msgid "Failed to remove the file"
+msgstr "Eliminazione del file fallita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:508
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:672
+msgid "Clear all transfers, including any in progress?"
+msgstr "Eliminare tutti i trasferimenti, compresi quelli attivi?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Clear All Transfers? - KVIrc"
+msgstr "Elimina Tutti i Trasferimenti? - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:711
+msgid "File Transfers"
+msgstr "Trasferimenti File"
diff --git a/po/modules/filetransferwindow/filetransferwindow_pt.po b/po/modules/filetransferwindow/filetransferwindow_pt.po
new file mode 100644
index 00000000..130340b2
--- /dev/null
+++ b/po/modules/filetransferwindow/filetransferwindow_pt.po
@@ -0,0 +1,125 @@
+# translation of filetransferwindow_pt.po to Português
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Zé <[email protected]>, 2004.
+# José Melo <[email protected]>, 2005.
+# Zé <[email protected]>, 2006, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: filetransferwindow_pt\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-13 00:55+0100\n"
+"PO-Revision-Date: 2008-02-25 21:28+0000\n"
+"Last-Translator: Zé <[email protected]>\n"
+"Language-Team: Português <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:164
+msgid "Type"
+msgstr "Tipo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:165
+msgid "Information"
+msgstr "Informação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:166
+msgid "Progress"
+msgstr "Progresso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:316
+msgid "Size: %1"
+msgstr "Tamanho: %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:364
+msgid "&Open"
+msgstr "&Abrir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:352
+msgid "&Other..."
+msgstr "&Outro..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:367
+msgid "Open &With"
+msgstr "Abrir &Com..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:357
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:369
+msgid "Open &Location"
+msgstr "Abrir &Localização"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:358
+msgid "Terminal at Location"
+msgstr "Terminal na Localização"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:370
+msgid "MS-DOS Prompt at Location"
+msgstr "Linha de Comandos MS-DOS na Localização"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:375
+msgid "&Copy Path to Clipboard"
+msgstr "&Copiar 'Path0 para a Área de Transferência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:377
+msgid "&Delete file"
+msgstr "&Apagar Ficheiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:379
+msgid "Local &File"
+msgstr "&Ficheiro Local"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:402
+msgid "&Clear Terminated"
+msgstr "&Limpeza Terminada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:409
+msgid "Clear &All"
+msgstr "Limpar &Tudo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:499
+msgid "Do you really want to delete the file %Q?"
+msgstr "Deseja realmente apagar o ficheiro %Q?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:501
+msgid "Confirm delete"
+msgstr "Confirmar remoção"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Yes"
+msgstr "Sim"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "No"
+msgstr "Não"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:506
+msgid "Delete failed"
+msgstr "Remoção falhada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:507
+msgid "Failed to remove the file"
+msgstr "Falha ao apagar o ficheiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:508
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:672
+msgid "Clear all transfers, including any in progress?"
+msgstr "Limpar todas as transferências, incluindo alguma em progresso?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Clear All Transfers? - KVIrc"
+msgstr "Limpar Todas as Transferências? - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:711
+msgid "File Transfers"
+msgstr "Transferências de Ficheiros"
diff --git a/po/modules/filetransferwindow/filetransferwindow_pt_BR.po b/po/modules/filetransferwindow/filetransferwindow_pt_BR.po
new file mode 100644
index 00000000..d923ab74
--- /dev/null
+++ b/po/modules/filetransferwindow/filetransferwindow_pt_BR.po
@@ -0,0 +1,128 @@
+# translation of filetransferwindow_pt_BR.po to Português
+# translation of filetransferwindow_pt_BR.po to
+# translation of filetransferwindow_pt_BR.po to
+# translation of filetransferwindow.pot to Brazilian-Protugues
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Adilson GonAalves Soares Junior <[email protected]>, 2004.
+# Zé <[email protected]>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: filetransferwindow_pt_BR\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-13 00:55+0100\n"
+"PO-Revision-Date: 2007-08-25 18:36+0100\n"
+"Last-Translator: Zé <[email protected]>\n"
+"Language-Team: Português <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:164
+msgid "Type"
+msgstr "Tipo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:165
+msgid "Information"
+msgstr "Informação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:166
+msgid "Progress"
+msgstr "Progresso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:316
+#, fuzzy
+msgid "Size: %1"
+msgstr "Tamanho: %1 bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:364
+msgid "&Open"
+msgstr "&Abrir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:352
+msgid "&Other..."
+msgstr "&Outro..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:367
+msgid "Open &With"
+msgstr "Abrir &Com..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:357
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:369
+msgid "Open &Location"
+msgstr "Abrir &Diretório"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:358
+msgid "Terminal at Location"
+msgstr "Terminal no Destino"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:370
+msgid "MS-DOS Prompt at Location"
+msgstr "Terminal MS-DOS no Local"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:375
+msgid "&Copy Path to Clipboard"
+msgstr "&Copiar o caminho para a Área de Transferência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:377
+msgid "&Delete file"
+msgstr "&Apagar Arquivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:379
+msgid "Local &File"
+msgstr "Diretório do &Arquivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:402
+msgid "&Clear Terminated"
+msgstr "&Limpar Concluido(s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:409
+msgid "Clear &All"
+msgstr "Limpar &Tudo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:499
+msgid "Do you really want to delete the file %Q?"
+msgstr "Você deseja realmente apagar o arquivo %Q?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:501
+msgid "Confirm delete"
+msgstr "Confirmar deleção"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Yes"
+msgstr "Sim"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "No"
+msgstr "Não"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:506
+msgid "Delete failed"
+msgstr "Falhou ao deletar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:507
+msgid "Failed to remove the file"
+msgstr "Falhou ao remover o arquivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:508
+msgid "OK"
+msgstr "Aceitar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:672
+msgid "Clear all transfers, including any in progress?"
+msgstr "Limpar todas as transferências, incluindo às em progresso?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Clear All Transfers? - KVIrc"
+msgstr "Limpar Todas as Transferências? - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:711
+msgid "File Transfers"
+msgstr "Transferência de Arquivos"
diff --git a/po/modules/filetransferwindow/filetransferwindow_ru.po b/po/modules/filetransferwindow/filetransferwindow_ru.po
new file mode 100644
index 00000000..5f65a541
--- /dev/null
+++ b/po/modules/filetransferwindow/filetransferwindow_ru.po
@@ -0,0 +1,130 @@
+# translation of filetransferwindow_ru.po to
+# translation of filetransferwindow_ru.po to russian
+# translation of filetransferwindow_ru.po to русский
+# translation of filetransferwindow.po to русский
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Valerius <[email protected]>, 2004.
+# Valeriy Girchenko <[email protected]>, 2005.
+# root <[email protected]>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: filetransferwindow_ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-13 00:55+0100\n"
+"PO-Revision-Date: 2006-07-22 21:23+0400\n"
+"Last-Translator: root <[email protected]>\n"
+"Language-Team: <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:164
+msgid "Type"
+msgstr "Тип"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:165
+msgid "Information"
+msgstr "Информация"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:166
+msgid "Progress"
+msgstr "Прогресс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:316
+#, fuzzy
+msgid "Size: %1"
+msgstr "Размер: %1 байт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:364
+msgid "&Open"
+msgstr "&Открыть"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:352
+msgid "&Other..."
+msgstr "&Прочее..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:367
+msgid "Open &With"
+msgstr "Открыть &как"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:357
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:369
+msgid "Open &Location"
+msgstr "Открыть &папку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:358
+msgid "Terminal at Location"
+msgstr "Открыть терминал в папке файла"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:370
+msgid "MS-DOS Prompt at Location"
+msgstr "Открыть командную строку в папке файла"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:375
+msgid "&Copy Path to Clipboard"
+msgstr "&Копировать путь в буфер обмена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:377
+msgid "&Delete file"
+msgstr "&Удалить файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:379
+msgid "Local &File"
+msgstr "Локальный &файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:402
+msgid "&Clear Terminated"
+msgstr "Очистить &завершённые"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:409
+msgid "Clear &All"
+msgstr "Очистить &все"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:499
+msgid "Do you really want to delete the file %Q?"
+msgstr "Вы действительно хотите удалить файл %Q ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:501
+msgid "Confirm delete"
+msgstr "Подтвердите удаление"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Yes"
+msgstr "Да"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "No"
+msgstr "Нет"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:506
+msgid "Delete failed"
+msgstr "Ошибка удаления"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:507
+msgid "Failed to remove the file"
+msgstr "Невозможно удалить файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:508
+msgid "OK"
+msgstr "Ок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:672
+msgid "Clear all transfers, including any in progress?"
+msgstr "Очистить все передачи, включая не завершённые?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Clear All Transfers? - KVIrc"
+msgstr "Очистить все передачи? - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:711
+msgid "File Transfers"
+msgstr "Передачи файлов"
diff --git a/po/modules/filetransferwindow/filetransferwindow_uk.po b/po/modules/filetransferwindow/filetransferwindow_uk.po
new file mode 100644
index 00000000..ba22356e
--- /dev/null
+++ b/po/modules/filetransferwindow/filetransferwindow_uk.po
@@ -0,0 +1,128 @@
+# translation of filetransferwindow_ua.po to
+# translation of filetransferwindow_ua.po to ukrainian
+# translation of filetransferwindow_ua.po to українська
+# translation of filetransferwindow.po to українська
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE' COPYRIGHT HOLDER.
+# Belyaev Stanislav <[email protected]>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: about_ua\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-13 00:55+0100\n"
+"PO-Revision-Date: 2007-12-19 15:00+0200\n"
+"Last-Translator: Belyaev Stanislav <[email protected]>\n"
+"Language-Team: Ukrainian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1:2);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:164
+msgid "Type"
+msgstr "Тип"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:165
+msgid "Information"
+msgstr "Інформація"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:166
+msgid "Progress"
+msgstr "Прогрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:316
+#, fuzzy
+msgid "Size: %1"
+msgstr "Розмір: %1 байт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:364
+msgid "&Open"
+msgstr "&Відкрити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:352
+msgid "&Other..."
+msgstr "&Інше..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:355
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:367
+msgid "Open &With"
+msgstr "Відкрити &як"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:357
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:369
+msgid "Open &Location"
+msgstr "Відкрити &папку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:358
+msgid "Terminal at Location"
+msgstr "Відкрити термінал у папці файлу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:370
+msgid "MS-DOS Prompt at Location"
+msgstr "Відкрити командний рядок у папці файлу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:375
+msgid "&Copy Path to Clipboard"
+msgstr "&Копіювати шлях у буфер обміну"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:377
+msgid "&Delete file"
+msgstr "&Видалити файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:379
+msgid "Local &File"
+msgstr "Локальний &файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:402
+msgid "&Clear Terminated"
+msgstr "Очистити &завершені"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:409
+msgid "Clear &All"
+msgstr "Очистити &всі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:499
+msgid "Do you really want to delete the file %Q?"
+msgstr "Ви дійсно хочете видалити файл %Q ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:501
+msgid "Confirm delete"
+msgstr "Підтвердите видалення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Yes"
+msgstr "Так"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:502
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "No"
+msgstr "Ні"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:506
+msgid "Delete failed"
+msgstr "Помилка видалення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:507
+msgid "Failed to remove the file"
+msgstr "Неможливо видалити файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:508
+msgid "OK"
+msgstr "Ок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:672
+msgid "Clear all transfers, including any in progress?"
+msgstr "Очистити всі передачі, включаючи не завершені?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:676
+msgid "Clear All Transfers? - KVIrc"
+msgstr "Очистити всі передачі? - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/filetransferwindow/filetransferwindow.cpp:711
+msgid "File Transfers"
+msgstr "Передачі файлів"
diff --git a/po/modules/logview/Makefile.am b/po/modules/logview/Makefile.am
new file mode 100644
index 00000000..7fafb3ab
--- /dev/null
+++ b/po/modules/logview/Makefile.am
@@ -0,0 +1,74 @@
+###############################################################################
+# KVirc IRC client Makefile - 18.09.99 Szymon Stefanek <pragma at kvirc dot net>
+###############################################################################
+
+# The name of this module
+THISMODULE = logview
+
+# Don't touch this
+tmpdir = $(localedir)
+
+# The *.mo files to generate
+tmp_DATA = logview_ca.mo \
+ logview_cs.mo \
+ logview_it.mo \
+ logview_de.mo \
+ logview_es.mo \
+ logview_pt.mo \
+ logview_ru.mo \
+ logview_pt_BR.mo \
+ logview_fr.mo \
+ logview_hu.mo \
+ logview_fi.mo \
+ logview_uk.mo
+
+# The *.po files to generate
+POFILES = logview_ca.po \
+ logview_cs.po \
+ logview_it.po \
+ logview_de.po \
+ logview_es.po \
+ logview_pt.po \
+ logview_ru.po \
+ logview_pt_BR.po \
+ logview_fr.po \
+ logview_hu.po \
+ logview_fi.po \
+ logview_uk.po
+
+
+###############################################################################
+# STOP EDITING HERE
+###############################################################################
+
+# Killed the fuzzy entries: don't use them , they may SEGV
+# - touch $@ && $(SS_MSGFMT) -fvo $@ $<
+
+CLEANFILES = $(tmp_DATA)
+EXTRA_DIST = $(POFILES)
+
+%.mo: %.po
+ -touch $@ && $(SS_MSGFMT) -vo $@ $<
+
+messages-extract:
+ @find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.cpp > files; \
+ find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.h >> files; \
+ xgettext -o $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot -k__tr_ctx -k__tr_no_lookup_ctx -k__tr2qs_ctx -k__tr2wc_ctx -k__tr2ws_ctx -f files; \
+ rm files; \
+ echo "Messages extracted to $(THISMODULE).pot";
+
+messages-update:
+ @old=_old; \
+ if test -f "$(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot"; then \
+ for lang in $(POFILES); do \
+ echo "Updating file $$lang"; \
+ mv -f $$lang $$lang$$old; \
+ msgmerge -o $$lang $$lang$$old $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot && rm -f $$lang$$old; \
+ done; \
+ else \
+ echo "----------------------------------------------------"; \
+ echo "- WARNING: ./$(THISMODULE).pot does not exist"; \
+ echo "- WARNING: You must run make messages-extract first"; \
+ echo "----------------------------------------------------"; \
+ fi
+messages: messages-extract messages-update
diff --git a/po/modules/logview/logview_ca.po b/po/modules/logview/logview_ca.po
new file mode 100644
index 00000000..81f0df6d
--- /dev/null
+++ b/po/modules/logview/logview_ca.po
@@ -0,0 +1,120 @@
+# translation of logview_ca.po to Catal�
+# Translation of logview_es.poo to spanish
+# Jos� Luis S�nchez <[email protected]>, 2004.
+# Marc Serra Romero <[email protected]>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: logview_ca\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-02-24 23:41+0100\n"
+"Last-Translator: Marc Serra Romero <[email protected]>\n"
+"Language-Team: Catal� <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"First-Translator: Jos� Luis S�nchez <[email protected]>\n"
+"X-Generator: KBabel 1.2\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/libkvilogview.cpp:136
+msgid "Browse &Log Files"
+msgstr "&Navegar pels Arxius de Registre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:79
+msgid "Index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:81
+msgid "Log File"
+msgstr "Arxiu de Registre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:91
+msgid "Filter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:95
+msgid "Show channel logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:99
+msgid "Show query logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:103
+msgid "Show console logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:107
+msgid "Show DCC chat logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:111
+msgid "Show other logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:116
+msgid "Contents filter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:119
+msgid "Log name mask:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:125
+msgid "Log contents mask:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:131
+msgid "Only older than"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:139
+msgid "Only newier than"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:147
+msgid "Apply filter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:203
+msgid "Log Viewer"
+msgstr "Visor del Registre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:258
+msgid "Filtering files..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:259
+msgid "Abort filtering"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:312
+msgid "%Q on %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:381
+msgid "Remove file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:63
+msgid "Channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:65
+msgid "Query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:67
+msgid "DCC Chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:69
+msgid "Console"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:71
+msgid "Other"
+msgstr ""
diff --git a/po/modules/logview/logview_cs.po b/po/modules/logview/logview_cs.po
new file mode 100644
index 00000000..25acd9bd
--- /dev/null
+++ b/po/modules/logview/logview_cs.po
@@ -0,0 +1,120 @@
+# Czech translation of Kvirc.
+# Copyright (C) 2004 THE Kvirc'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the Kvirc package.
+# Dušan Hokův <[email protected]>, 2004.
+# , fuzzy
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Kvirc\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-12-05 18:02+0100\n"
+"Last-Translator: Dusan Hokuv <[email protected]>\n"
+"Language-Team: Czech <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/libkvilogview.cpp:136
+msgid "Browse &Log Files"
+msgstr "Prohlížet soubory &logů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:79
+msgid "Index"
+msgstr "Obsah"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:81
+msgid "Log File"
+msgstr "Soubor logů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:91
+msgid "Filter"
+msgstr "Filtr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:95
+msgid "Show channel logs"
+msgstr "Zobrazit logy kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:99
+msgid "Show query logs"
+msgstr "Zobrazit query logy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:103
+msgid "Show console logs"
+msgstr "Zobrazit logy konzole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:107
+msgid "Show DCC chat logs"
+msgstr "Zobrazit logy DCC chatu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:111
+msgid "Show other logs"
+msgstr "Zobrazit ostatní logy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:116
+msgid "Contents filter"
+msgstr "Filtr obsahu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:119
+msgid "Log name mask:"
+msgstr "Maska názvu logu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:125
+msgid "Log contents mask:"
+msgstr "Maska logu obsahu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:131
+msgid "Only older than"
+msgstr "Pouze starší než"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:139
+msgid "Only newier than"
+msgstr "Pouze novější než"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:147
+msgid "Apply filter"
+msgstr "Použít filtr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:203
+msgid "Log Viewer"
+msgstr "Prohlížeč logů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:258
+msgid "Filtering files..."
+msgstr "Filtrování souborů..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:259
+msgid "Abort filtering"
+msgstr "Přerušit filtrování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:312
+msgid "%Q on %Q"
+msgstr "%Q na %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:381
+msgid "Remove file"
+msgstr "Smazat soubor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:63
+msgid "Channel"
+msgstr "Kanál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:65
+msgid "Query"
+msgstr "Query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:67
+msgid "DCC Chat"
+msgstr "DCC Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:69
+msgid "Console"
+msgstr "Konzole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:71
+msgid "Other"
+msgstr "Ostatní"
diff --git a/po/modules/logview/logview_de.po b/po/modules/logview/logview_de.po
new file mode 100644
index 00000000..a4992226
--- /dev/null
+++ b/po/modules/logview/logview_de.po
@@ -0,0 +1,122 @@
+# translation of logview_de.po to german
+# Copyright (C) Szymon Stefanek , Eva Schaller
+# This file is distributed under the same license as the KVirc package.
+#
+# Eva Schaller <eva at cyberbeat dot it>, 2003.
+# Christoph Thielecke <[email protected]>, 2003, 2004.
+# Markus Rennings <[email protected]>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: logview_de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-11-14 01:24+0100\n"
+"Last-Translator: Markus Rennings <[email protected]>\n"
+"Language-Team: german <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/libkvilogview.cpp:136
+msgid "Browse &Log Files"
+msgstr "&Logdateien durchsuchen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:79
+msgid "Index"
+msgstr "Index"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:81
+msgid "Log File"
+msgstr "Logdatei"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:91
+msgid "Filter"
+msgstr "Filter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:95
+msgid "Show channel logs"
+msgstr "Kanal-Logdateien anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:99
+msgid "Show query logs"
+msgstr "Anfrage- (Query) Logdateien anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:103
+msgid "Show console logs"
+msgstr "Konsolenlogdateien anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:107
+msgid "Show DCC chat logs"
+msgstr "DCC-Chat-Logdateien anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:111
+msgid "Show other logs"
+msgstr "Andere Logdateien anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:116
+msgid "Contents filter"
+msgstr "Inhaltsfilter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:119
+msgid "Log name mask:"
+msgstr "Logdateienmaske:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:125
+msgid "Log contents mask:"
+msgstr "Logdateien-Inhaltsmaske:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:131
+msgid "Only older than"
+msgstr "Nur älter als"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:139
+msgid "Only newier than"
+msgstr "Nur neuer als"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:147
+msgid "Apply filter"
+msgstr "Filter anwenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:203
+msgid "Log Viewer"
+msgstr "Loganzeiger"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:258
+msgid "Filtering files..."
+msgstr "Filtere Dateien..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:259
+msgid "Abort filtering"
+msgstr "Filtern abbrechen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:312
+msgid "%Q on %Q"
+msgstr "%Q auf %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:381
+msgid "Remove file"
+msgstr "Datei löschen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:63
+msgid "Channel"
+msgstr "Kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:65
+msgid "Query"
+msgstr "Anfrage (Query)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:67
+msgid "DCC Chat"
+msgstr "DCC Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:69
+msgid "Console"
+msgstr "Konsole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:71
+msgid "Other"
+msgstr "Andere"
diff --git a/po/modules/logview/logview_es.po b/po/modules/logview/logview_es.po
new file mode 100644
index 00000000..29e290e8
--- /dev/null
+++ b/po/modules/logview/logview_es.po
@@ -0,0 +1,117 @@
+# Translation of logview_es.poo to spanish
+# Jos� Luis S�nchez <[email protected]>, 2004
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: logview_es\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2004-07-14 10:30+0100\n"
+"Last-Translator: Jos� Luis S�nchez <[email protected]>\n"
+"Language-Team: spanish\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"First-Translator: Jos� Luis S�nchez <[email protected]>\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/libkvilogview.cpp:136
+msgid "Browse &Log Files"
+msgstr "&Navegar por los Archivos de Registro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:79
+msgid "Index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:81
+msgid "Log File"
+msgstr "Archivo de Registro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:91
+msgid "Filter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:95
+msgid "Show channel logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:99
+msgid "Show query logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:103
+msgid "Show console logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:107
+msgid "Show DCC chat logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:111
+msgid "Show other logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:116
+msgid "Contents filter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:119
+msgid "Log name mask:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:125
+msgid "Log contents mask:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:131
+msgid "Only older than"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:139
+msgid "Only newier than"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:147
+msgid "Apply filter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:203
+msgid "Log Viewer"
+msgstr "Visor del Registro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:258
+msgid "Filtering files..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:259
+msgid "Abort filtering"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:312
+msgid "%Q on %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:381
+msgid "Remove file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:63
+msgid "Channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:65
+msgid "Query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:67
+msgid "DCC Chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:69
+msgid "Console"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:71
+msgid "Other"
+msgstr ""
diff --git a/po/modules/logview/logview_fi.po b/po/modules/logview/logview_fi.po
new file mode 100644
index 00000000..4a4d58a6
--- /dev/null
+++ b/po/modules/logview/logview_fi.po
@@ -0,0 +1,119 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Santeri Piippo <[email protected]>, 2007.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: logview_fi\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-11-21 17:09+0100\n"
+"PO-Revision-Date: 2007-11-21 19:08+0200\n"
+"Last-Translator: Santeri Piippo <[email protected]>\n"
+"Language-Team: LANGUAGE <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/libkvilogview.cpp:136
+msgid "Browse &Log Files"
+msgstr "Selaa &lokitiedostoja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:79
+msgid "Index"
+msgstr "Indeksi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:81
+msgid "Log File"
+msgstr "Lokitiedosto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:91
+msgid "Filter"
+msgstr "Suodatin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:95
+msgid "Show channel logs"
+msgstr "Näytä kanavalokit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:99
+msgid "Show query logs"
+msgstr "Näytä yksityisviestilokit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:103
+msgid "Show console logs"
+msgstr "Näytä konsolilokit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:107
+msgid "Show DCC chat logs"
+msgstr "Näytä DCC -keskustelulokit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:111
+msgid "Show other logs"
+msgstr "Näytä muut lokit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:116
+msgid "Contents filter"
+msgstr "Sisältösuodatin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:119
+msgid "Log name mask:"
+msgstr "Lokinimimaski:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:125
+msgid "Log contents mask:"
+msgstr "Lokin sisältömaski:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:131
+msgid "Only older than"
+msgstr "Vain vanhemmat kuin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:139
+msgid "Only newier than"
+msgstr "Vain uudemmat kuin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:147
+msgid "Apply filter"
+msgstr "Ota suodatin käyttöön"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:203
+msgid "Log Viewer"
+msgstr "Lokikatselin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:258
+msgid "Filtering files..."
+msgstr "Suodatetaan tiedostoja..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:259
+msgid "Abort filtering"
+msgstr "Keskeytä suodatus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:312
+msgid "%Q on %Q"
+msgstr "%Q kohteessa %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:381
+msgid "Remove file"
+msgstr "Poista tiedosto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:63
+msgid "Channel"
+msgstr "Kanava"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:65
+msgid "Query"
+msgstr "Kysely"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:67
+msgid "DCC Chat"
+msgstr "DCC -keskustelu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:69
+msgid "Console"
+msgstr "Konsoli"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:71
+msgid "Other"
+msgstr "Muut"
diff --git a/po/modules/logview/logview_fr.po b/po/modules/logview/logview_fr.po
new file mode 100644
index 00000000..afc8d1ad
--- /dev/null
+++ b/po/modules/logview/logview_fr.po
@@ -0,0 +1,120 @@
+# translation of logview_fr.po to Français
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Ahinu <[email protected]>, 2005.
+# Elephantman <[email protected]>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: logview_fr\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2008-03-06 17:54+0100\n"
+"Last-Translator: Elephantman <[email protected]>\n"
+"Language-Team: Français <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/libkvilogview.cpp:136
+msgid "Browse &Log Files"
+msgstr "Naviguer dans les &Journaux"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:79
+msgid "Index"
+msgstr "Index"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:81
+msgid "Log File"
+msgstr "Journal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:91
+msgid "Filter"
+msgstr "Filtre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:95
+msgid "Show channel logs"
+msgstr "Afficher les logs de salons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:99
+msgid "Show query logs"
+msgstr "Afficher les logs de privés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:103
+msgid "Show console logs"
+msgstr "Afficher les logs de console"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:107
+msgid "Show DCC chat logs"
+msgstr "Afficher les logs de DCC chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:111
+msgid "Show other logs"
+msgstr "Afficher les autres logs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:116
+msgid "Contents filter"
+msgstr "Filtre de contenu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:119
+msgid "Log name mask:"
+msgstr "Masque de nom de log"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:125
+msgid "Log contents mask:"
+msgstr "Masque de contenu de log"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:131
+msgid "Only older than"
+msgstr "Seulement plus anciens que"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:139
+msgid "Only newier than"
+msgstr "Seulement plus récents que"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:147
+msgid "Apply filter"
+msgstr "Appliquer le filtre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:203
+msgid "Log Viewer"
+msgstr "Visualiseur de Journaux"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:258
+msgid "Filtering files..."
+msgstr "Filtrage des fichiers..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:259
+msgid "Abort filtering"
+msgstr "Annuler le filtrage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:312
+msgid "%Q on %Q"
+msgstr "%Q sur %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:381
+msgid "Remove file"
+msgstr "Supprimer le fichier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:63
+msgid "Channel"
+msgstr "Salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:65
+msgid "Query"
+msgstr "Privé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:67
+msgid "DCC Chat"
+msgstr "DCC Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:69
+msgid "Console"
+msgstr "Console"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:71
+msgid "Other"
+msgstr ""
diff --git a/po/modules/logview/logview_hu.po b/po/modules/logview/logview_hu.po
new file mode 100644
index 00000000..f7c4ab7d
--- /dev/null
+++ b/po/modules/logview/logview_hu.po
@@ -0,0 +1,119 @@
+# translation of logview_hu.po to hungarian
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Ádám Fibinger <[email protected]>, 2006, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: logview_hu\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-08-23 18:47+0200\n"
+"Last-Translator: Ádám Fibinger <[email protected]>\n"
+"Language-Team: hungarian <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/libkvilogview.cpp:136
+msgid "Browse &Log Files"
+msgstr "Naplófájlok Ta&llózása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:79
+msgid "Index"
+msgstr "Index"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:81
+msgid "Log File"
+msgstr "Napló Fájl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:91
+msgid "Filter"
+msgstr "Szűrő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:95
+msgid "Show channel logs"
+msgstr "Csatorna naplók mutatása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:99
+msgid "Show query logs"
+msgstr "Privát naplók mutatása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:103
+msgid "Show console logs"
+msgstr "Konzol naplók mutatása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:107
+msgid "Show DCC chat logs"
+msgstr "DCC beszélgetésnaplók mutatása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:111
+msgid "Show other logs"
+msgstr "Más naplók mutatása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:116
+msgid "Contents filter"
+msgstr "Tartalomszűrő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:119
+msgid "Log name mask:"
+msgstr "Napló név maszk:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:125
+msgid "Log contents mask:"
+msgstr "Napló tartalom maszk:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:131
+msgid "Only older than"
+msgstr "Régebbi, mint"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:139
+msgid "Only newier than"
+msgstr "Újabb, mint"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:147
+msgid "Apply filter"
+msgstr "Szűrő alkalmazása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:203
+msgid "Log Viewer"
+msgstr "Naplófájl Böngésző"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:258
+msgid "Filtering files..."
+msgstr "Fájlok szűrése..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:259
+msgid "Abort filtering"
+msgstr "Szűrés megszakítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:312
+msgid "%Q on %Q"
+msgstr "%Q on %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:381
+msgid "Remove file"
+msgstr "Fájl Eltávolítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:63
+msgid "Channel"
+msgstr "Csatorna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:65
+msgid "Query"
+msgstr "Privát"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:67
+msgid "DCC Chat"
+msgstr "DCC beszélgetés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:69
+msgid "Console"
+msgstr "Konzol"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:71
+msgid "Other"
+msgstr "Más"
diff --git a/po/modules/logview/logview_it.po b/po/modules/logview/logview_it.po
new file mode 100644
index 00000000..4959434f
--- /dev/null
+++ b/po/modules/logview/logview_it.po
@@ -0,0 +1,119 @@
+# translation of logview_it.po to
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: logview_it\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-02-07 16:14+0100\n"
+"Last-Translator: \n"
+"Language-Team: <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/libkvilogview.cpp:136
+msgid "Browse &Log Files"
+msgstr "Naviga i File di &Log"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:79
+msgid "Index"
+msgstr "Indice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:81
+msgid "Log File"
+msgstr "File di Log"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:91
+msgid "Filter"
+msgstr "Filtro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:95
+msgid "Show channel logs"
+msgstr "Mostra i log del canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:99
+msgid "Show query logs"
+msgstr "Mostra i log delle query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:103
+msgid "Show console logs"
+msgstr "Mostra i log delle console"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:107
+msgid "Show DCC chat logs"
+msgstr "Mostra i log delle DCC chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:111
+msgid "Show other logs"
+msgstr "Mostra altri log"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:116
+msgid "Contents filter"
+msgstr "Contenuti filtro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:119
+msgid "Log name mask:"
+msgstr "Maschera nome log:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:125
+msgid "Log contents mask:"
+msgstr "Maschera contenuti log:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:131
+msgid "Only older than"
+msgstr "Solo più vecchi di"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:139
+msgid "Only newier than"
+msgstr "Solo più nuovi di"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:147
+msgid "Apply filter"
+msgstr "Applica filtro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:203
+msgid "Log Viewer"
+msgstr "Visualizzatore Log"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:258
+msgid "Filtering files..."
+msgstr "Filtro i file..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:259
+msgid "Abort filtering"
+msgstr "Annulla filtraggio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:312
+msgid "%Q on %Q"
+msgstr "%Q su %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:381
+msgid "Remove file"
+msgstr "Elimina file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:63
+msgid "Channel"
+msgstr "Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:65
+msgid "Query"
+msgstr "Query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:67
+msgid "DCC Chat"
+msgstr "DCC Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:69
+msgid "Console"
+msgstr "Console"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:71
+msgid "Other"
+msgstr "Altro"
diff --git a/po/modules/logview/logview_pt.po b/po/modules/logview/logview_pt.po
new file mode 100644
index 00000000..148359b7
--- /dev/null
+++ b/po/modules/logview/logview_pt.po
@@ -0,0 +1,123 @@
+# translation of logview_pt.po to Português
+# translation of logview_pt.po to
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Zé <[email protected]>, 2004, 2006.
+# José Melo <[email protected]>, 2006.
+# Zé <[email protected]>, 2006, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: logview_pt\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-06-18 06:52+0100\n"
+"Last-Translator: Zé <[email protected]>\n"
+"Language-Team: Português <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/libkvilogview.cpp:136
+msgid "Browse &Log Files"
+msgstr "&Procurar Ficheiros de Registo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:79
+msgid "Index"
+msgstr "Índice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:81
+msgid "Log File"
+msgstr "Ficheiro de Registos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:91
+msgid "Filter"
+msgstr "Filtro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:95
+msgid "Show channel logs"
+msgstr "Mostrar registos de canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:99
+msgid "Show query logs"
+msgstr "Mostrar registos de privados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:103
+msgid "Show console logs"
+msgstr "Mostrar registos de consola"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:107
+msgid "Show DCC chat logs"
+msgstr "Mostrar registos de conversas DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:111
+msgid "Show other logs"
+msgstr "Mostrar outros registos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:116
+msgid "Contents filter"
+msgstr "Filtro de conteúdos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:119
+msgid "Log name mask:"
+msgstr "Máscara do nome de registo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:125
+msgid "Log contents mask:"
+msgstr "Máscara do conteúdo do registo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:131
+msgid "Only older than"
+msgstr "Apenas mais antigos que"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:139
+msgid "Only newier than"
+msgstr "Apenas mais novos que"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:147
+msgid "Apply filter"
+msgstr "Aplicar filtro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:203
+msgid "Log Viewer"
+msgstr "Visualizar de Registos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:258
+msgid "Filtering files..."
+msgstr "A filtrar ficheiros..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:259
+msgid "Abort filtering"
+msgstr "Abortar filtragem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:312
+msgid "%Q on %Q"
+msgstr "%Q em %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:381
+msgid "Remove file"
+msgstr "Remover ficheiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:63
+msgid "Channel"
+msgstr "Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:65
+msgid "Query"
+msgstr "Privado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:67
+msgid "DCC Chat"
+msgstr "DCC Conversa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:69
+msgid "Console"
+msgstr "Consola"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:71
+msgid "Other"
+msgstr "Outro"
diff --git a/po/modules/logview/logview_pt_BR.po b/po/modules/logview/logview_pt_BR.po
new file mode 100644
index 00000000..b938edaf
--- /dev/null
+++ b/po/modules/logview/logview_pt_BR.po
@@ -0,0 +1,119 @@
+# translation of logview.pot to Brazilian-Protugues
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Adilson GonA�alves Soares Junior <[email protected]>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: logview_pt_BR\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2004-11-15 00:38+0000\n"
+"Last-Translator: Adilson GonAalves Soares Junior <[email protected]>\n"
+"Language-Team: Brazilian-Protugues <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/libkvilogview.cpp:136
+msgid "Browse &Log Files"
+msgstr "&Procurar Arquivos de Log"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:79
+msgid "Index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:81
+msgid "Log File"
+msgstr "Arquivo de Log"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:91
+msgid "Filter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:95
+msgid "Show channel logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:99
+msgid "Show query logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:103
+msgid "Show console logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:107
+msgid "Show DCC chat logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:111
+msgid "Show other logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:116
+msgid "Contents filter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:119
+msgid "Log name mask:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:125
+msgid "Log contents mask:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:131
+msgid "Only older than"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:139
+msgid "Only newier than"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:147
+msgid "Apply filter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:203
+msgid "Log Viewer"
+msgstr "Leitor de Logs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:258
+msgid "Filtering files..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:259
+msgid "Abort filtering"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:312
+msgid "%Q on %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:381
+msgid "Remove file"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:63
+msgid "Channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:65
+msgid "Query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:67
+msgid "DCC Chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:69
+msgid "Console"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:71
+msgid "Other"
+msgstr ""
diff --git a/po/modules/logview/logview_ru.po b/po/modules/logview/logview_ru.po
new file mode 100644
index 00000000..071246a7
--- /dev/null
+++ b/po/modules/logview/logview_ru.po
@@ -0,0 +1,124 @@
+# translation of logview_ru.po to russian
+# translation of logview_ru.po to русский
+# translation of logview.po to русский
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Valerius <[email protected]>, 2004.
+# Valeriy Girchenko <[email protected]>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: logview_ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-02-16 19:45+0200\n"
+"Last-Translator: Valeriy Girchenko <[email protected]>\n"
+"Language-Team: russian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/libkvilogview.cpp:136
+msgid "Browse &Log Files"
+msgstr "Просмотр файлов &журналов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:79
+msgid "Index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:81
+msgid "Log File"
+msgstr "Файл журнала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:91
+msgid "Filter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:95
+msgid "Show channel logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:99
+msgid "Show query logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:103
+msgid "Show console logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:107
+msgid "Show DCC chat logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:111
+msgid "Show other logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:116
+msgid "Contents filter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:119
+msgid "Log name mask:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:125
+msgid "Log contents mask:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:131
+msgid "Only older than"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:139
+msgid "Only newier than"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:147
+msgid "Apply filter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:203
+msgid "Log Viewer"
+msgstr "Просмотрщик журнала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:258
+msgid "Filtering files..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:259
+msgid "Abort filtering"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:312
+msgid "%Q on %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:381
+msgid "Remove file"
+msgstr "Удалить Логфайл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:63
+msgid "Channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:65
+msgid "Query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:67
+msgid "DCC Chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:69
+msgid "Console"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:71
+msgid "Other"
+msgstr ""
diff --git a/po/modules/logview/logview_uk.po b/po/modules/logview/logview_uk.po
new file mode 100644
index 00000000..cb46fbd2
--- /dev/null
+++ b/po/modules/logview/logview_uk.po
@@ -0,0 +1,124 @@
+# translation of logview_ua.po to
+# translation of logview_ua.po to ukrainian
+# translation of logview_ua.po to українська
+# translation of logview.po to українська
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE' COPYRIGHT HOLDER.
+# Belyaev Stanislav <[email protected]>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: logview_ua\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-12-19 15:00+0200\n"
+"Last-Translator: Belyaev Stanislav <[email protected]>\n"
+"Language-Team: Ukrainian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1:2);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/libkvilogview.cpp:136
+msgid "Browse &Log Files"
+msgstr "Перегляд файлів &журналів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:79
+msgid "Index"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:81
+msgid "Log File"
+msgstr "Файл журналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:91
+msgid "Filter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:95
+msgid "Show channel logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:99
+msgid "Show query logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:103
+msgid "Show console logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:107
+msgid "Show DCC chat logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:111
+msgid "Show other logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:116
+msgid "Contents filter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:119
+msgid "Log name mask:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:125
+msgid "Log contents mask:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:131
+msgid "Only older than"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:139
+msgid "Only newier than"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:147
+msgid "Apply filter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:203
+msgid "Log Viewer"
+msgstr "Переглядач журналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:258
+msgid "Filtering files..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:259
+msgid "Abort filtering"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:312
+msgid "%Q on %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewmdiwindow.cpp:381
+msgid "Remove file"
+msgstr "Видалити Логфайл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:63
+msgid "Channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:65
+msgid "Query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:67
+msgid "DCC Chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:69
+msgid "Console"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/logview/logviewwidget.cpp:71
+msgid "Other"
+msgstr ""
diff --git a/po/modules/mediaplayer/Makefile.am b/po/modules/mediaplayer/Makefile.am
new file mode 100644
index 00000000..c47fbed8
--- /dev/null
+++ b/po/modules/mediaplayer/Makefile.am
@@ -0,0 +1,68 @@
+################################################################################
+# KVirc IRC client Makefile - 18.09.99 Szymon Stefanek <pragma at kvirc dot net>
+################################################################################
+
+# The name of this module
+THISMODULE = mediaplayer
+
+# Don't touch this
+tmpdir = $(localedir)
+
+# The *.mo files to generate
+tmp_DATA = mediaplayer_cs.mo \
+ mediaplayer_de.mo \
+ mediaplayer_it.mo \
+ mediaplayer_fr.mo \
+ mediaplayer_ru.mo \
+ mediaplayer_hu.mo \
+ mediaplayer_fi.mo \
+ mediaplayer_hr.mo \
+ mediaplayer_uk.mo
+
+# The *.po files to generate
+POFILES = mediaplayer_cs.po \
+ mediaplayer_de.po \
+ mediaplayer_it.po \
+ mediaplayer_fr.po \
+ mediaplayer_ru.po \
+ mediaplayer_hu.po \
+ mediaplayer_fi.po \
+ mediaplayer_hr.po \
+ mediaplayer_uk.po
+
+
+###############################################################################
+# STOP EDITING HERE
+###############################################################################
+
+# Killed the fuzzy entries: don't use them , they may SEGV
+# - touch $@ && $(SS_MSGFMT) -fvo $@ $<
+
+CLEANFILES = $(tmp_DATA)
+EXTRA_DIST = $(POFILES)
+
+%.mo: %.po
+ -touch $@ && $(SS_MSGFMT) -vo $@ $<
+
+messages-extract:
+ @find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.cpp > files; \
+ find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.h >> files; \
+ xgettext -o $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot -k__tr_ctx -k__tr_no_lookup_ctx -k__tr2qs_ctx -k__tr2wc_ctx -k__tr2ws_ctx -f files; \
+ rm files; \
+ echo "Messages extracted to $(THISMODULE).pot";
+
+messages-update:
+ @old=_old; \
+ if test -f "$(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot"; then \
+ for lang in $(POFILES); do \
+ echo "Updating file $$lang"; \
+ mv -f $$lang $$lang$$old; \
+ msgmerge -o $$lang $$lang$$old $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot && rm -f $$lang$$old; \
+ done; \
+ else \
+ echo "----------------------------------------------------"; \
+ echo "- WARNING: ./$(THISMODULE).pot does not exist"; \
+ echo "- WARNING: You must run make messages-extract first"; \
+ echo "----------------------------------------------------"; \
+ fi
+messages: messages-extract messages-update
diff --git a/po/modules/mediaplayer/mediaplayer_cs.po b/po/modules/mediaplayer/mediaplayer_cs.po
new file mode 100644
index 00000000..770d3db1
--- /dev/null
+++ b/po/modules/mediaplayer/mediaplayer_cs.po
@@ -0,0 +1,144 @@
+# Czech translation of KVIrc.
+# Copyright (C) 2005 THE KVIrc'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the KVIrc package.
+# Dušan Hokův <[email protected]>, 2005.
+# , fuzzy
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: KVIrc 3.2.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-06-02 18:36+0200\n"
+"Last-Translator: Dušan Hokův <[email protected]>\n"
+"Language-Team: Czech <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:184
+msgid "Can't find a running winamp window"
+msgstr "Nelze nalézt běžící okno winampu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:194
+msgid ""
+"An interface to the popupar Winamp media player.\n"
+"You can download it from http://www.winamp.com.\n"
+"To use all the features of this interface you must copy the gen_kvirc.dll "
+"plugin found in the KVIrc distribution directory to the Winamp plugins "
+"folder and restart winamp."
+msgstr ""
+"Interface k populárnímu Winamp prehrávači médií.\n"
+"Stáhněte si jej na http://www.winamp.com.\n"
+"Pro všech funkcí použití tohoto interface musíte zkopírovat gen_kvirc.dll "
+"zásuvný modul z KVIrc distribučního adresáře do složky Winamp zásuvných "
+"modulů a restartovat winamp."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:350
+msgid ""
+"The winamp plugin has not been installed properly. Check /help mediaplayer."
+"nowplaying"
+msgstr ""
+"Zásovný modul winampu nebyl korektně nainstalován. Zkuste /help mediaplayer."
+"nowplaying"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_interface.cpp:41
+msgid "Function not implemented"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_jukinterface.cpp:45
+msgid "An interface to the Juk KDE media player."
+msgstr "Interface k Juk KDE přehrávači médií."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:38
+msgid ""
+"An interface to the popular UNIX xmms media player.\n"
+"Download it from http://www.xmms.org\n"
+msgstr ""
+"Interface k populárnímu UNIXovému xmms přehrávači médií.\n"
+"Stáhněte si jej na http://www.xmms.org\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:49
+#, fuzzy
+msgid ""
+"An interface to the popular UNIX audacious media player.\n"
+"Download it from http://audacious-media-player.org\n"
+msgstr ""
+"Interface k populárnímu UNIXovému xmms přehrávači médií.\n"
+"Stáhněte si jej na http://www.xmms.org\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:133
+#, fuzzy
+msgid "Can't load the player library (%Q)"
+msgstr "Nelze načíst xmms knihovnu (libxmms.so)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:142
+#, fuzzy
+msgid "Can't find symbol %s in %Q"
+msgstr "Nelze nalézt symbol %s v libxmms.so"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_amipinterface.cpp:83
+msgid ""
+"An interface to the AMIP plug-in.\n"
+"You can download it from http://amip.tools-for.net.\n"
+"To use this interface you must install AMIP plug-in for your player."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_amarokinterface.cpp:43
+msgid "An interface to the AmaroK KDE media player."
+msgstr "Interface k AmaroK KDE přehrávač médií."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:66
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:92
+msgid "Trying media player interface \"%Q\": score %d"
+msgstr "Zkouší se interface přehrávače médií \"%Q\": skóre %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:74
+msgid ""
+"Not sure about the results, trying a second, more agressive detection pass"
+msgstr "Není jistý výsledek, zkouší se druhý, více agresivní detekční průběh"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:102
+msgid "Choosing media player interface \"%Q\""
+msgstr "Zvolen interface přehrávače médií \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:105
+msgid "Seems that there is no usable media player on this machine"
+msgstr "Vypadá to jako, že není použitelný přehrávač médií na tomto stroji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:115
+msgid "No mediaplayer interface selected. Try /mediaplayer.detect"
+msgstr "Nebyl vybrán interface k prehrávači médií. Zkuste /mediaplayer.detect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:571
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:594
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:636
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:675
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1183
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1319
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1363
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1551
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1594
+msgid ""
+"The selected media player interface failed to execute the requested function"
+msgstr ""
+"Zvolený interface přehrávače médií selhal při spuštění požadované funkce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:572
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:595
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:637
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:676
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1552
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1595
+msgid "Last interface error: "
+msgstr "Poslední chyba interface: "
+
+#~ msgid "No such media player interface (try /mediaplayer.detect)"
+#~ msgstr "Žádný interface přehrávače médií (zkuste /mediaplayer.detect)"
diff --git a/po/modules/mediaplayer/mediaplayer_de.po b/po/modules/mediaplayer/mediaplayer_de.po
new file mode 100644
index 00000000..ca2d9837
--- /dev/null
+++ b/po/modules/mediaplayer/mediaplayer_de.po
@@ -0,0 +1,151 @@
+# translation of mediaplayer_de.po to german
+# Copyright (C) 2005 THE KVIrc'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the KVIrc package.
+#
+# Markus Rennings <[email protected]>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: mediaplayer_de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-11-14 01:30+0100\n"
+"Last-Translator: Markus Rennings <[email protected]>\n"
+"Language-Team: german <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:184
+msgid "Can't find a running winamp window"
+msgstr "Keine Winamp-Instanz gefunden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:194
+msgid ""
+"An interface to the popupar Winamp media player.\n"
+"You can download it from http://www.winamp.com.\n"
+"To use all the features of this interface you must copy the gen_kvirc.dll "
+"plugin found in the KVIrc distribution directory to the Winamp plugins "
+"folder and restart winamp."
+msgstr ""
+"Eine Schnittstelle für den beliebten Winamp Player.\n"
+"Sie können ihn unter http://www.winamp.com herunterladen.\n"
+"Um alle Funktionen zu nutzen, müssen Sie die Datei gen_kvirc.dll aus dem "
+"KVirc Ordner in den Plugin-Ordner von Winamp kopieren und Winamp neu starten."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:350
+msgid ""
+"The winamp plugin has not been installed properly. Check /help mediaplayer."
+"nowplaying"
+msgstr ""
+"Das Winamp Plugin wurde nicht richtig installiert. Bitte schauen Sie sich /"
+"help mediaplayer an.nowplaying"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_interface.cpp:41
+msgid "Function not implemented"
+msgstr "Funktion nicht implementiert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_jukinterface.cpp:45
+msgid "An interface to the Juk KDE media player."
+msgstr "Schnittstelle für Juk."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:38
+msgid ""
+"An interface to the popular UNIX xmms media player.\n"
+"Download it from http://www.xmms.org\n"
+msgstr ""
+"Eine Schnittstelle für den Beliebten UNIX xmms Player.\n"
+"Sie können ihn unter http://www.xmms.org herunterladen.\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:49
+msgid ""
+"An interface to the popular UNIX audacious media player.\n"
+"Download it from http://audacious-media-player.org\n"
+msgstr ""
+"Eine Schnittstelle für den beliebten UNIX audacious media player.\n"
+"Sie können ihn unter http://audacious-media-player.org herunterladen.\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:133
+msgid "Can't load the player library (%Q)"
+msgstr "Kann die Abspieler- (player) -Bibliothek (%Q) nicht laden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:142
+msgid "Can't find symbol %s in %Q"
+msgstr "Kann das Symbol %s nicht in %Q finden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_amipinterface.cpp:83
+msgid ""
+"An interface to the AMIP plug-in.\n"
+"You can download it from http://amip.tools-for.net.\n"
+"To use this interface you must install AMIP plug-in for your player."
+msgstr ""
+"Eine Schnittstelle zum AMIP-Zusatzmodul (plugin).\n"
+"Es kann unter http://amip.tools-for.net heruntergeladen werden.\\ Um diese "
+"Schnittstelle zu nutzen, muss dass AMIP-Zusatzmodul für Deinen Abspieler "
+"(player) installiert werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_amarokinterface.cpp:43
+msgid "An interface to the AmaroK KDE media player."
+msgstr "Schnittstelle für AmaroK."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:66
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:92
+msgid "Trying media player interface \"%Q\": score %d"
+msgstr "Probiere Schnittstelle \"%Q\": %d Punkte."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:74
+msgid ""
+"Not sure about the results, trying a second, more agressive detection pass"
+msgstr ""
+"Ergebnis war nicht eindeutig. Versuche einen zweiten, aggressiveren "
+"Durchlauf."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:102
+msgid "Choosing media player interface \"%Q\""
+msgstr "Benutze Schnittstelle \"%Q\"."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:105
+msgid "Seems that there is no usable media player on this machine"
+msgstr "Es scheint kein nutzbarer Mediaplayer auf diesem System zu sein."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:115
+msgid "No mediaplayer interface selected. Try /mediaplayer.detect"
+msgstr ""
+"Keine Mediaplayer Schnittstelle ausgewählt. Probieren Sie /mediaplayer."
+"detect."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:571
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:594
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:636
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:675
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1183
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1319
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1363
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1551
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1594
+msgid ""
+"The selected media player interface failed to execute the requested function"
+msgstr ""
+"Die ausgewählte Mediaplayer Schnittstelle konnte die Funktion nicht "
+"ausführen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:572
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:595
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:637
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:676
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1552
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1595
+msgid "Last interface error: "
+msgstr "Letzter Schnittstellenfehler: "
+
+#~ msgid "No such media player interface (try /mediaplayer.detect)"
+#~ msgstr ""
+#~ "Mediaplayer Schnittstelle existiert nicht (Versuchen Sie /mediaplayer."
+#~ "detect)."
diff --git a/po/modules/mediaplayer/mediaplayer_fi.po b/po/modules/mediaplayer/mediaplayer_fi.po
new file mode 100644
index 00000000..322bf64e
--- /dev/null
+++ b/po/modules/mediaplayer/mediaplayer_fi.po
@@ -0,0 +1,140 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-11-27 19:04+0200\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:184
+msgid "Can't find a running winamp window"
+msgstr "Ei löydetty käynnissä olevaa winamp-ikkunaa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:194
+msgid ""
+"An interface to the popupar Winamp media player.\n"
+"You can download it from http://www.winamp.com.\n"
+"To use all the features of this interface you must copy the gen_kvirc.dll "
+"plugin found in the KVIrc distribution directory to the Winamp plugins "
+"folder and restart winamp."
+msgstr ""
+"Käyttöliittymä suositulle Winamp -mediasoittimelle.\n"
+"Voit ladata sen osoitteesta http://www.winamp.com.\n"
+"Saadaksesi kaikki ominaisuudet käyttöön, kopioi gen_kvirc.dll -tiedosto"
+"mikä löytyy KVIrcin kansiosta Winampin \"plugins\" -kansioon ja aloita"
+"winamp uudestaan."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:350
+msgid ""
+"The winamp plugin has not been installed properly. Check /help mediaplayer."
+"nowplaying"
+msgstr ""
+"Winampin lisäohjelmaa ei ole asennettu oikein. Tarkista /help mediaplayer.nowplaying"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_interface.cpp:41
+msgid "Function not implemented"
+msgstr "Funktiota ei ole kehitetty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_jukinterface.cpp:45
+msgid "An interface to the Juk KDE media player."
+msgstr "Käyttöliittymä KDEn Juk -mediasoittimeen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:38
+msgid ""
+"An interface to the popular UNIX xmms media player.\n"
+"Download it from http://www.xmms.org\n"
+msgstr ""
+"Käyttöliittymä suosittuun UNIX -mediasoittimeen.\n"
+"Lataa se osoitteesta http://www.xmms.org\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:49
+msgid ""
+"An interface to the popular UNIX audacious media player.\n"
+"Download it from http://audacious-media-player.org\n"
+msgstr ""
+"Käyttöliittymä suosittuun UNIX audacious -mediasoittimeen.\n"
+"Lataa se osoitteesta http://audacious-media-player.org\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:133
+msgid "Can't load the player library (%Q)"
+msgstr "Ei voitu ladata soittimen kirjastoa (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:142
+msgid "Can't find symbol %s in %Q"
+msgstr "Ei löydetty symbolia %s kohdassa %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_amipinterface.cpp:83
+msgid ""
+"An interface to the AMIP plug-in.\n"
+"You can download it from http://amip.tools-for.net.\n"
+"To use this interface you must install AMIP plug-in for your player."
+msgstr ""
+"Käyttöliittymä AMIP -lisäohjelmaan\n"
+"Voit ladata sen osoitteesta http://amip.tools-for.net.\n"
+"Käyttääksesi tätä käyttölittymää sinun täytyy asentaa AMIP -lisäohjelma soittimeesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_amarokinterface.cpp:43
+msgid "An interface to the AmaroK KDE media player."
+msgstr "Käyttöliitymä KDEn Amarok mediasoittimeen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:66
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:92
+msgid "Trying media player interface \"%Q\": score %d"
+msgstr "Yritetään mediasoitin käyttöliittymää \"%Q\": tulos %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:74
+msgid ""
+"Not sure about the results, trying a second, more agressive detection pass"
+msgstr ""
+"Ei varma tuloksista, yritetään toista, aggressiivisempaa etsintää"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:102
+msgid "Choosing media player interface \"%Q\""
+msgstr "Valitaan mediasoitin käyttöliittymä \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:105
+msgid "Seems that there is no usable media player on this machine"
+msgstr "Näyttää siltä ettei tässä koneessa ole käytettävää mediasoitinta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:115
+msgid "No mediaplayer interface selected. Try /mediaplayer.detect"
+msgstr "Ei mediasoitin-käyttöliittymää valittu. Yritä /mediaplayer.detect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:536
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:559
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:600
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:639
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1132
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1269
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1313
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1501
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1544
+msgid ""
+"The selected media player interface failed to execute the requested function"
+msgstr ""
+"Valittu mediasoitin ei voinut ajaa pyydettyä tehtävää"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:537
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:560
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:601
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:640
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1133
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1270
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1314
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1502
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1545
+msgid "Last interface error: "
+msgstr "Viimeisin käyttöliittymävirhe: "
diff --git a/po/modules/mediaplayer/mediaplayer_fr.po b/po/modules/mediaplayer/mediaplayer_fr.po
new file mode 100644
index 00000000..eed06834
--- /dev/null
+++ b/po/modules/mediaplayer/mediaplayer_fr.po
@@ -0,0 +1,149 @@
+# translation of mediaplayer_fr.po to Français
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Ahinu <[email protected]>, 2005.
+# Elephantman <[email protected]>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: mediaplayer_fr\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2008-03-06 17:57+0100\n"
+"Last-Translator: Elephantman <[email protected]>\n"
+"Language-Team: Français <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:184
+msgid "Can't find a running winamp window"
+msgstr "Impossible de trouver une fenêtre winamp."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:194
+msgid ""
+"An interface to the popupar Winamp media player.\n"
+"You can download it from http://www.winamp.com.\n"
+"To use all the features of this interface you must copy the gen_kvirc.dll "
+"plugin found in the KVIrc distribution directory to the Winamp plugins "
+"folder and restart winamp."
+msgstr ""
+"Une interface pour Winamp, le populaire lecteur multimédia.\n"
+"Vous pouvez le télécharger depuis http://www.winamp.com.\n"
+"Pour utilisez toutes les fonctionnalités de cette interface, vous devez "
+"copier le module externe gen_kvirc.dll situé dans la distribution de KVIrc "
+"vers le répertoire des modules externes de Winamp et redémarrer Winamp."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:350
+msgid ""
+"The winamp plugin has not been installed properly. Check /help mediaplayer."
+"nowplaying"
+msgstr ""
+"Le module externe de winamp n'a pas été installé proprement. Utilisez /help "
+"mediaplayer.nowplaying"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_interface.cpp:41
+msgid "Function not implemented"
+msgstr "Fonction non implémentée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_jukinterface.cpp:45
+msgid "An interface to the Juk KDE media player."
+msgstr "Une interface pour Juk, lecteur multimédia de KDE."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:38
+msgid ""
+"An interface to the popular UNIX xmms media player.\n"
+"Download it from http://www.xmms.org\n"
+msgstr ""
+"Une interface pour xmms, le populaire lecteur multimédia UNIX.\n"
+"Téléchargez-le depuis http://www.xmms.org\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:49
+msgid ""
+"An interface to the popular UNIX audacious media player.\n"
+"Download it from http://audacious-media-player.org\n"
+msgstr ""
+"Une interface pour audacious, le populaire lecteur multimédia UNIX.\n"
+"Téléchargez-le depuis http://audacious-media-player.org\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:133
+msgid "Can't load the player library (%Q)"
+msgstr "Impossible de charger la bibliothèque %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:142
+msgid "Can't find symbol %s in %Q"
+msgstr "Impossible de trouver le symbole %s dans %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_amipinterface.cpp:83
+msgid ""
+"An interface to the AMIP plug-in.\n"
+"You can download it from http://amip.tools-for.net.\n"
+"To use this interface you must install AMIP plug-in for your player."
+msgstr ""
+"Une interface pour le plugin AMIP.\n"
+"Vous pouvez le télécharger sur http://amip.tools-for.net.\n"
+"Pour utiliser cette interface, vous devez installer le plugin AMIP pour "
+"votre lecteur."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_amarokinterface.cpp:43
+msgid "An interface to the AmaroK KDE media player."
+msgstr "Une interface pour AmaroK, lecteur multimédia de KDE."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:66
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:92
+msgid "Trying media player interface \"%Q\": score %d"
+msgstr "Essai de l'interface de lecture multimédia \"%Q\" : score %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:74
+msgid ""
+"Not sure about the results, trying a second, more agressive detection pass"
+msgstr ""
+"Pas sûr des résultats, essai d'une seconde méthode de détection de mot de "
+"pass plus aggressive"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:102
+msgid "Choosing media player interface \"%Q\""
+msgstr "Choix de l'interface de lecture multimédia \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:105
+msgid "Seems that there is no usable media player on this machine"
+msgstr ""
+"Il semble qu'il n'y ait pas de lecteur multimédia utilisable sur cette "
+"machine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:115
+msgid "No mediaplayer interface selected. Try /mediaplayer.detect"
+msgstr ""
+"Aucune interface de lecture multimédia selectionnée. Essayez /mediaplayer."
+"detect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:571
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:594
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:636
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:675
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1183
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1319
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1363
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1551
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1594
+msgid ""
+"The selected media player interface failed to execute the requested function"
+msgstr ""
+"L'interface de lecture multimédia a échoué lors de l'exécution de la "
+"fonction demandée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:572
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:595
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:637
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:676
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1552
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1595
+msgid "Last interface error: "
+msgstr "Dernière erreur de l'interface : "
diff --git a/po/modules/mediaplayer/mediaplayer_hr.po b/po/modules/mediaplayer/mediaplayer_hr.po
new file mode 100644
index 00000000..47e098e1
--- /dev/null
+++ b/po/modules/mediaplayer/mediaplayer_hr.po
@@ -0,0 +1,139 @@
+# translation of mediaplayer_hr.po to Hrvatski
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# SpeedyGhost <[email protected]>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: mediaplayer_hr\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2008-01-17 02:20+0100\n"
+"Last-Translator: SpeedyGhost <[email protected]>\n"
+"Language-Team: Hrvatski <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:184
+msgid "Can't find a running winamp window"
+msgstr "Ne mogu pronaći pokrenuti winamp prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:194
+msgid ""
+"An interface to the popupar Winamp media player.\n"
+"You can download it from http://www.winamp.com.\n"
+"To use all the features of this interface you must copy the gen_kvirc.dll "
+"plugin found in the KVIrc distribution directory to the Winamp plugins "
+"folder and restart winamp."
+msgstr ""
+"Sučelje za popularni Winamp media player.\n"
+"Možete ga preuzeti sa http://www.winamp.com.\n"
+"Za korištenje ovog sučelja morate kopirati gen_kvirc.dll plugin, koji se "
+"nalazi u direktoriju KVIrc distribucije, u Winamp plugins direktorij i "
+"restartati Winamp."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:350
+msgid ""
+"The winamp plugin has not been installed properly. Check /help mediaplayer."
+"nowplaying"
+msgstr ""
+"Winamp pluginovi nisu ispravno instalirani. Provjerite /help mediaplayer."
+"nowplaying"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_interface.cpp:41
+msgid "Function not implemented"
+msgstr "Funkcija nije implementirana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_jukinterface.cpp:45
+msgid "An interface to the Juk KDE media player."
+msgstr "Sučelje za Juk KDE media player."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:38
+msgid ""
+"An interface to the popular UNIX xmms media player.\n"
+"Download it from http://www.xmms.org\n"
+msgstr ""
+"Sučelje za popularni UNIX xmms media player.\n"
+"Preuzmite ga sa http://www.xmms.org\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:49
+msgid ""
+"An interface to the popular UNIX audacious media player.\n"
+"Download it from http://audacious-media-player.org\n"
+msgstr ""
+"Sučelje za popularni UNIX audacious media player.\n"
+"Preuzmite ga sa http://audacious-media-player.org\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:133
+msgid "Can't load the player library (%Q)"
+msgstr "Ne mogu učitati bazu playera (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:142
+msgid "Can't find symbol %s in %Q"
+msgstr "Ne mogu pronaći znak %s u %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_amipinterface.cpp:83
+msgid ""
+"An interface to the AMIP plug-in.\n"
+"You can download it from http://amip.tools-for.net.\n"
+"To use this interface you must install AMIP plug-in for your player."
+msgstr ""
+"Sučelje za AMIP plug-in.\n"
+"Možete ga downloadati sa http://amip.tools-for.net.\n"
+"Za korištenje ovog sučelja morate instalirati AMIP plug-in za vaš player."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_amarokinterface.cpp:43
+msgid "An interface to the AmaroK KDE media player."
+msgstr "Sučelje za Amarok KDE media player"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:66
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:92
+msgid "Trying media player interface \"%Q\": score %d"
+msgstr "Pokušavam media player \"%Q\": score %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:74
+msgid ""
+"Not sure about the results, trying a second, more agressive detection pass"
+msgstr "Nesiguni rezultati, pokušavam agresivniju detekciju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:102
+msgid "Choosing media player interface \"%Q\""
+msgstr "Odabirem media player \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:105
+msgid "Seems that there is no usable media player on this machine"
+msgstr "Čini se da nema korisnih media playera na ovom računalu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:115
+msgid "No mediaplayer interface selected. Try /mediaplayer.detect"
+msgstr "Nema odabranog media playera. Pokušajte /mediaplayer.detect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:571
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:594
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:636
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:675
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1183
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1319
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1363
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1551
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1594
+msgid ""
+"The selected media player interface failed to execute the requested function"
+msgstr "Odabrani media player nije uspio izvršiti traženu funkciju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:572
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:595
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:637
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:676
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1552
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1595
+msgid "Last interface error: "
+msgstr "Posljednja greška sucelja:"
diff --git a/po/modules/mediaplayer/mediaplayer_hu.po b/po/modules/mediaplayer/mediaplayer_hu.po
new file mode 100644
index 00000000..aebb6e27
--- /dev/null
+++ b/po/modules/mediaplayer/mediaplayer_hu.po
@@ -0,0 +1,142 @@
+# translation of mediaplayer_hu.po to hungarian
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Ádám Fibinger <[email protected]>, 2006, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: mediaplayer_hu\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2008-02-25 02:04+0100\n"
+"Last-Translator: Ádám Fibinger <[email protected]>\n"
+"Language-Team: hungarian <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:184
+msgid "Can't find a running winamp window"
+msgstr "Nem találok éppen futó winampot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:194
+msgid ""
+"An interface to the popupar Winamp media player.\n"
+"You can download it from http://www.winamp.com.\n"
+"To use all the features of this interface you must copy the gen_kvirc.dll "
+"plugin found in the KVIrc distribution directory to the Winamp plugins "
+"folder and restart winamp."
+msgstr ""
+"Felület a népszerű Winamp médialejátszóhoz.\n"
+"Letöltheted a http://www.winamp.com címről.\n"
+"Hogy minden lehetséges funkciót ki tudj használni, másold a gen_kvirc.dll "
+"plugint a KVIrc modulok könyvtárából a Winamp pluginok mappájába és indítsd "
+"újra a Winampot."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:350
+msgid ""
+"The winamp plugin has not been installed properly. Check /help mediaplayer."
+"nowplaying"
+msgstr ""
+"A Winamp plugin helytelenül lett telepítve. Lásd: /help mediaplayer."
+"nowplaying "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_interface.cpp:41
+msgid "Function not implemented"
+msgstr "Művelet nem támogatott"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_jukinterface.cpp:45
+msgid "An interface to the Juk KDE media player."
+msgstr "Eszköz a Juk KDE médialejátszóhoz."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:38
+msgid ""
+"An interface to the popular UNIX xmms media player.\n"
+"Download it from http://www.xmms.org\n"
+msgstr ""
+"Kezelőfelület a népszerő UNIX xmms médialejátszóhoz.\n"
+"Letölthető a http://www.xmms.org címről\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:49
+msgid ""
+"An interface to the popular UNIX audacious media player.\n"
+"Download it from http://audacious-media-player.org\n"
+msgstr ""
+"Kezelőfelület a népszerő UNIX audacious médialejátszóhoz.\n"
+"Letölthető a http://www.xmms.org címről\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:133
+msgid "Can't load the player library (%Q)"
+msgstr "Lejátszó függvénytár nem betölthető (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:142
+msgid "Can't find symbol %s in %Q"
+msgstr "Nem található %s szimbólum -> %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_amipinterface.cpp:83
+msgid ""
+"An interface to the AMIP plug-in.\n"
+"You can download it from http://amip.tools-for.net.\n"
+"To use this interface you must install AMIP plug-in for your player."
+msgstr ""
+"Interfész az AMIP plug-in-hez.\n"
+"Letölthető a http://amip.tools-for.net címről.\n"
+"Ahhoz, hogy ezt használni tudd telepítened kell az AMIP plugint a "
+"lejátszódba."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_amarokinterface.cpp:43
+msgid "An interface to the AmaroK KDE media player."
+msgstr "Eszköz az AmaroK KDE médialjeátszóhoz."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:66
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:92
+msgid "Trying media player interface \"%Q\": score %d"
+msgstr "\"%Q\" médialejátszó eszköz próbája, eredmény: %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:74
+msgid ""
+"Not sure about the results, trying a second, more agressive detection pass"
+msgstr ""
+"Nem vagyok biztos az eredményben, megpróbálom másodszor, agresszívabb "
+"meghatározással"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:102
+msgid "Choosing media player interface \"%Q\""
+msgstr "Médialejátszó eszköz kiválasztva \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:105
+msgid "Seems that there is no usable media player on this machine"
+msgstr "Azt hiszem nincs használható médialejátszó ezen a gépen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:115
+msgid "No mediaplayer interface selected. Try /mediaplayer.detect"
+msgstr "Nincs médialjeátszó kiválasztva. Próbáld így: /mediaplayer.detect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:571
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:594
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:636
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:675
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1183
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1319
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1363
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1551
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1594
+msgid ""
+"The selected media player interface failed to execute the requested function"
+msgstr "A kiválasztott lejátszóeszköz nem tudta lefuttatni a kért függvényt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:572
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:595
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:637
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:676
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1552
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1595
+msgid "Last interface error: "
+msgstr "Utolsó eszközhiba: "
diff --git a/po/modules/mediaplayer/mediaplayer_it.po b/po/modules/mediaplayer/mediaplayer_it.po
new file mode 100644
index 00000000..f76e5582
--- /dev/null
+++ b/po/modules/mediaplayer/mediaplayer_it.po
@@ -0,0 +1,147 @@
+# translation of mediaplayer_it.po to
+# translation of mediaplayer_it.po
+# KVIrc Mediaplayer module Italian translation file
+# Italian translation file for KVIrc 3.0
+# Copyright (C) Szymon Stefanek
+# This file is distributed under the same license as the KVIrc package.
+# Etherea <cle at virg0 dot org>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mediaplayer_it\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-08-20 02:39+0200\n"
+"Last-Translator: \n"
+"Language-Team: <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:184
+msgid "Can't find a running winamp window"
+msgstr "Impossibile trovare una finestra winamp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:194
+msgid ""
+"An interface to the popupar Winamp media player.\n"
+"You can download it from http://www.winamp.com.\n"
+"To use all the features of this interface you must copy the gen_kvirc.dll "
+"plugin found in the KVIrc distribution directory to the Winamp plugins "
+"folder and restart winamp."
+msgstr ""
+"Un'interfaccia al popolare Winamp media player.\n"
+"Puoi scaricarlo da http://www.winamp.com.\n"
+"Per usare tutte le caratteristiche di questa interfaccia devi copiare il "
+"plugin gen_kvirc.dll che puoi trovare nella distrubuzione KVIrc nella "
+"directory dei plugin di Winamp e riavviare Winamp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:350
+msgid ""
+"The winamp plugin has not been installed properly. Check /help mediaplayer."
+"nowplaying"
+msgstr ""
+"Il plugin winamp non è stato installato correttamente. Controlla /help "
+"mediaplayer.nowplaying"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_interface.cpp:41
+msgid "Function not implemented"
+msgstr "Funzione non implementata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_jukinterface.cpp:45
+msgid "An interface to the Juk KDE media player."
+msgstr "Interfaccia per Juk, media player di KDE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:38
+msgid ""
+"An interface to the popular UNIX xmms media player.\n"
+"Download it from http://www.xmms.org\n"
+msgstr ""
+"Interfaccia per il popolare media player XMMS di UNIX.\n"
+"Scaricalo da http://www.xmms.org\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:49
+msgid ""
+"An interface to the popular UNIX audacious media player.\n"
+"Download it from http://audacious-media-player.org\n"
+msgstr ""
+"Interfaccia per il popolare media player audacious di UNIX.\n"
+"Scaricalo da http://www.audacious-media-player.org\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:133
+msgid "Can't load the player library (%Q)"
+msgstr "Impossibile caricare la libreria sonora (%Q)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:142
+msgid "Can't find symbol %s in %Q"
+msgstr "Impossibile trovare il simbolo %s in %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_amipinterface.cpp:83
+msgid ""
+"An interface to the AMIP plug-in.\n"
+"You can download it from http://amip.tools-for.net.\n"
+"To use this interface you must install AMIP plug-in for your player."
+msgstr ""
+"Interfaccia per il plugin AMIP.\n"
+"Puoi scaricarlo da http://amip.tools-for.net.\n"
+"Per usare questa interfaccia devi installare il plugin AMIP per il tuo player"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_amarokinterface.cpp:43
+msgid "An interface to the AmaroK KDE media player."
+msgstr "Interfaccia per AmaroK, media player per KDE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:66
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:92
+msgid "Trying media player interface \"%Q\": score %d"
+msgstr "Provo il media player \"%Q\": punteggio %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:74
+msgid ""
+"Not sure about the results, trying a second, more agressive detection pass"
+msgstr ""
+"I risultati non sono certi, provo un nuovo, più agressivo passo di analisi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:102
+msgid "Choosing media player interface \"%Q\""
+msgstr "Interfaccia media player scelta: \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:105
+msgid "Seems that there is no usable media player on this machine"
+msgstr "Sembra non esserci un media player utilizzabile su questa macchina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:115
+msgid "No mediaplayer interface selected. Try /mediaplayer.detect"
+msgstr ""
+"Non è stata selezionata alcuna interfaccia media player. Prova /mediaplayer."
+"detect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:571
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:594
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:636
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:675
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1183
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1319
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1363
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1551
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1594
+msgid ""
+"The selected media player interface failed to execute the requested function"
+msgstr ""
+"L'interfaccia media player scelta non è riuscita ad eseguire la funzione "
+"richiesta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:572
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:595
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:637
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:676
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1552
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1595
+msgid "Last interface error: "
+msgstr "Ultimo errore dell'interfaccia: "
diff --git a/po/modules/mediaplayer/mediaplayer_ru.po b/po/modules/mediaplayer/mediaplayer_ru.po
new file mode 100644
index 00000000..e0335bbb
--- /dev/null
+++ b/po/modules/mediaplayer/mediaplayer_ru.po
@@ -0,0 +1,143 @@
+# translation of mediaplayer_ru.po to russian
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Valerius <[email protected]>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mediaplayer_ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-12-28 00:20+0200\n"
+"Last-Translator: Valerius <[email protected]>\n"
+"Language-Team: russian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10.2\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:184
+msgid "Can't find a running winamp window"
+msgstr "Не могу найти запущенное окно winamp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:194
+msgid ""
+"An interface to the popupar Winamp media player.\n"
+"You can download it from http://www.winamp.com.\n"
+"To use all the features of this interface you must copy the gen_kvirc.dll "
+"plugin found in the KVIrc distribution directory to the Winamp plugins "
+"folder and restart winamp."
+msgstr ""
+"Интерфейс к популярному медиаплееру Winamp.\n"
+"Вы можете загрузить его с http://www.winamp.com.\n"
+"Чтобы использовать все возможности этого интерфейса, Вы должны скопировать "
+"плагин gen_kvirc.dll, который можно найти в папке с дистрибутивом KVIrc в "
+"папку плагинов Winamp и перезапустить Winamp."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:350
+msgid ""
+"The winamp plugin has not been installed properly. Check /help mediaplayer."
+"nowplaying"
+msgstr ""
+"Плагин для winamp не был установлен должным образом. Проверьте /help "
+"mediaplayer. nowplaying"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_interface.cpp:41
+msgid "Function not implemented"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_jukinterface.cpp:45
+msgid "An interface to the Juk KDE media player."
+msgstr "Интерфейс к медиаплееру КДЕ Juk."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:38
+msgid ""
+"An interface to the popular UNIX xmms media player.\n"
+"Download it from http://www.xmms.org\n"
+msgstr ""
+"Интерфейс к популярному в UNIX медиаплееру xmms.\n"
+"Вы можете загрузить его с http://www.xmms.org\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:49
+#, fuzzy
+msgid ""
+"An interface to the popular UNIX audacious media player.\n"
+"Download it from http://audacious-media-player.org\n"
+msgstr ""
+"Интерфейс к популярному в UNIX медиаплееру xmms.\n"
+"Вы можете загрузить его с http://www.xmms.org\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:133
+#, fuzzy
+msgid "Can't load the player library (%Q)"
+msgstr "Не могу загрузить библиотеку xmms (libxmms.so)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:142
+#, fuzzy
+msgid "Can't find symbol %s in %Q"
+msgstr "Не найден символ %s в libxmms.so"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_amipinterface.cpp:83
+msgid ""
+"An interface to the AMIP plug-in.\n"
+"You can download it from http://amip.tools-for.net.\n"
+"To use this interface you must install AMIP plug-in for your player."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_amarokinterface.cpp:43
+msgid "An interface to the AmaroK KDE media player."
+msgstr ""
+"Интерфейс для медиаплеера КДЕ AmaroK.\n"
+"Вы можете загрузить его с http://amarok.kde.org"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:66
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:92
+msgid "Trying media player interface \"%Q\": score %d"
+msgstr "Ищу интерфейс медиаплеера \"%Q\": score %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:74
+msgid ""
+"Not sure about the results, trying a second, more agressive detection pass"
+msgstr ""
+"Не уверен в результате, подождите секундочку, более агрессивный способ "
+"обнаружения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:102
+msgid "Choosing media player interface \"%Q\""
+msgstr "Выбран интерфейс медиаплеера \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:105
+msgid "Seems that there is no usable media player on this machine"
+msgstr "Кажется на этой машине нет подходящих медиаплееров"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:115
+msgid "No mediaplayer interface selected. Try /mediaplayer.detect"
+msgstr "Интерфейс медиаплеера не выбран. Попробуйте /mediaplayer.detect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:571
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:594
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:636
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:675
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1183
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1319
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1363
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1551
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1594
+msgid ""
+"The selected media player interface failed to execute the requested function"
+msgstr "Выбранный интерфейс медиаплеера не смог выполнить требуемую функцию"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:572
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:595
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:637
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:676
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1552
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1595
+msgid "Last interface error: "
+msgstr "Последняя ошибка интерфейса:"
diff --git a/po/modules/mediaplayer/mediaplayer_uk.po b/po/modules/mediaplayer/mediaplayer_uk.po
new file mode 100644
index 00000000..cbce3043
--- /dev/null
+++ b/po/modules/mediaplayer/mediaplayer_uk.po
@@ -0,0 +1,147 @@
+# translation of mediaplayer_ua.po to
+# translation of mediaplayer_ua.po to ukrainian
+# translation of mediaplayer_ua.po to українська
+# translation of about.po to українська
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE' COPYRIGHT HOLDER.
+# Belyaev Stanislav <[email protected]>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mediaplayer_ua\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-12-19 15:00+0200\n"
+"Last-Translator: Belyaev Stanislav <[email protected]>\n"
+"Language-Team: Ukrainian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10.2\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:184
+msgid "Can't find a running winamp window"
+msgstr "Не можу знайти запущене вікно winamp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:194
+msgid ""
+"An interface to the popupar Winamp media player.\n"
+"You can download it from http://www.winamp.com.\n"
+"To use all the features of this interface you must copy the gen_kvirc.dll "
+"plugin found in the KVIrc distribution directory to the Winamp plugins "
+"folder and restart winamp."
+msgstr ""
+"Інтерфейс до популярного медіаплеєру Winamp.\n"
+"Ви можете завантажити його з http://www.winamp.com.\n"
+"Щоб використати всі можливості цього інтерфейсу, Ви повинні скопіювати "
+"плагін gen_kvirc.dll, якому можна знайти в папці з дистрибутивом KVIrc в "
+"папку плагінів Winamp і запустити знову Winamp."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:316
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_winampinterface.cpp:350
+msgid ""
+"The winamp plugin has not been installed properly. Check /help mediaplayer."
+"nowplaying"
+msgstr ""
+"Плагін для winamp не був установлений належним чином. Перевірте /help "
+"mediaplayer. nowplaying"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_interface.cpp:41
+msgid "Function not implemented"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_jukinterface.cpp:45
+msgid "An interface to the Juk KDE media player."
+msgstr "Інтерфейс до медіаплеєру КДЕ Juk."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:38
+msgid ""
+"An interface to the popular UNIX xmms media player.\n"
+"Download it from http://www.xmms.org\n"
+msgstr ""
+"Інтерфейс до популярного в UNIX медіаплеєру xmms.\n"
+"Ви можете завантажити його з http://www.xmms.org\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:49
+#, fuzzy
+msgid ""
+"An interface to the popular UNIX audacious media player.\n"
+"Download it from http://audacious-media-player.org\n"
+msgstr ""
+"Інтерфейс до популярного в UNIX медіаплеєру xmms.\n"
+"Ви можете завантажити його з http://www.xmms.org\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:133
+#, fuzzy
+msgid "Can't load the player library (%Q)"
+msgstr "Не можу завантажити бібліотеку xmms (libxmms.so)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_xmmsinterface.cpp:142
+#, fuzzy
+msgid "Can't find symbol %s in %Q"
+msgstr "Не знайдений символ %s в libxmms.so"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_amipinterface.cpp:83
+msgid ""
+"An interface to the AMIP plug-in.\n"
+"You can download it from http://amip.tools-for.net.\n"
+"To use this interface you must install AMIP plug-in for your player."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/mp_amarokinterface.cpp:43
+#, fuzzy
+msgid "An interface to the AmaroK KDE media player."
+msgstr ""
+"Інтерфейс для медіаплеєра КДЕ Amaro.\n"
+"Ви можете завантажити його з http://amarok.kde.org"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:66
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:92
+msgid "Trying media player interface \"%Q\": score %d"
+msgstr "Шукаю інтерфейс медіаплеєра \"%Q\": score %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:74
+msgid ""
+"Not sure about the results, trying a second, more agressive detection pass"
+msgstr ""
+"Не впевнений у результаті, почекайте секунду, більше агресивний спосіб "
+"виявлення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:102
+msgid "Choosing media player interface \"%Q\""
+msgstr "Обраний інтерфейс медіаплеєра \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:105
+msgid "Seems that there is no usable media player on this machine"
+msgstr "Здається на цій машині немає підходящих медіаплеєрів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:115
+msgid "No mediaplayer interface selected. Try /mediaplayer.detect"
+msgstr "Інтерфейс медіаплеєра не обраний. Спробуйте /mediaplayer.detect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:571
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:594
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:636
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:675
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1183
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1319
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1363
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1551
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1594
+msgid ""
+"The selected media player interface failed to execute the requested function"
+msgstr "Обраний інтерфейс медіаплеєра не зміг виконати необхідну функцію"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:135
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:572
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:595
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:637
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:676
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1184
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1320
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1364
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1552
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/mediaplayer/libkvimediaplayer.cpp:1595
+msgid "Last interface error: "
+msgstr "Остання помилка інтерфейсу:"
diff --git a/po/modules/notifier/Makefile.am b/po/modules/notifier/Makefile.am
new file mode 100644
index 00000000..1b930e87
--- /dev/null
+++ b/po/modules/notifier/Makefile.am
@@ -0,0 +1,76 @@
+################################################################################
+# KVirc IRC client Makefile - 18.09.99 Szymon Stefanek <pragma at kvirc dot net>
+################################################################################
+
+# The name of this module
+THISMODULE = notifier
+
+# Don't touch this
+tmpdir = $(localedir)
+
+# The *.mo files to generate
+tmp_DATA = notifier_ca.mo \
+ notifier_cs.mo \
+ notifier_it.mo \
+ notifier_de.mo \
+ notifier_pt.mo \
+ notifier_es.mo \
+ notifier_ru.mo \
+ notifier_pt_BR.mo \
+ notifier_fr.mo \
+ notifier_hu.mo \
+ notifier_fi.mo \
+ notifier_hr.mo \
+ notifier_uk.mo
+
+# The *.po files to generate
+POFILES = notifier_ca.po \
+ notifier_cs.po \
+ notifier_it.po \
+ notifier_de.po \
+ notifier_pt.po \
+ notifier_es.po \
+ notifier_ru.po \
+ notifier_pt_BR.po \
+ notifier_fr.po \
+ notifier_hu.po \
+ notifier_fi.po \
+ notifier_hr.po \
+ notifier_uk.po
+
+
+###############################################################################
+# STOP EDITING HERE
+###############################################################################
+
+# Killed the fuzzy entries: don't use them , they may SEGV
+# - touch $@ && $(SS_MSGFMT) -fvo $@ $<
+
+CLEANFILES = $(tmp_DATA)
+EXTRA_DIST = $(POFILES)
+
+%.mo: %.po
+ -touch $@ && $(SS_MSGFMT) -vo $@ $<
+
+messages-extract:
+ @find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.cpp > files; \
+ find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.h >> files; \
+ xgettext -o $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot -k__tr_ctx -k__tr_no_lookup_ctx -k__tr2qs_ctx -k__tr2wc_ctx -k__tr2ws_ctx -f files; \
+ rm files; \
+ echo "Messages extracted to $(THISMODULE).pot";
+
+messages-update:
+ @old=_old; \
+ if test -f "$(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot"; then \
+ for lang in $(POFILES); do \
+ echo "Updating file $$lang"; \
+ mv -f $$lang $$lang$$old; \
+ msgmerge -o $$lang $$lang$$old $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot && rm -f $$lang$$old; \
+ done; \
+ else \
+ echo "----------------------------------------------------"; \
+ echo "- WARNING: ./$(THISMODULE).pot does not exist"; \
+ echo "- WARNING: You must run make messages-extract first"; \
+ echo "----------------------------------------------------"; \
+ fi
+messages: messages-extract messages-update
diff --git a/po/modules/notifier/notifier_ca.po b/po/modules/notifier/notifier_ca.po
new file mode 100644
index 00000000..06beca45
--- /dev/null
+++ b/po/modules/notifier/notifier_ca.po
@@ -0,0 +1,74 @@
+# translation of notifier_ca.po to Català
+# translation of notifier_es.po to Spanish
+# This file is distributed under the same license as the KVIrc package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# José Luis <[email protected]>, 2004.
+# Marc Serra Romero <[email protected]>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: notifier_ca\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-02-24 23:45+0100\n"
+"Last-Translator: Marc Serra Romero <[email protected]>\n"
+"Language-Team: Català <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.2\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1247
+msgid "Hide"
+msgstr "Amaga"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1250
+msgid "1 Minute"
+msgstr "1 Minut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1251
+msgid "5 Minutes"
+msgstr "5 Minuts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1252
+msgid "15 Minutes"
+msgstr "15 Minuts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1253
+msgid "30 Minutes"
+msgstr "30 Minuts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1254
+msgid "1 Hour"
+msgstr "1 Hora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1256
+msgid "Until KVIrc is Restarted"
+msgstr "Fins a que KVIrc sigui reiniciat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1257
+msgid "Permanently (Until Explicitly Enabled)"
+msgstr "Permanentement (fins a que s'habiliti explícitament)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1259
+msgid "Disable"
+msgstr "Deshabilitar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1350
+msgid "Write text or commands to window"
+msgstr "Escriure text o comandes per a la finestra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:137
+msgid "The specified window does not exist"
+msgstr "No existeix la finestra especificada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:151
+msgid "The specified timeout is not valid, assuming 0"
+msgstr "El temps d'espiració especificat no és vàlid, assumint 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:154
+msgid "The -t switch expects a timeout in seconds"
+msgstr "El paràmetre -t espera un temps d'expiració en segons"
+
+#~ msgid "The command parser raised an error"
+#~ msgstr "L'analitzador de comandes ha informat d'un error"
diff --git a/po/modules/notifier/notifier_cs.po b/po/modules/notifier/notifier_cs.po
new file mode 100644
index 00000000..8119c6b9
--- /dev/null
+++ b/po/modules/notifier/notifier_cs.po
@@ -0,0 +1,73 @@
+# Czech translation of Kvirc 3.0.
+# Copyright (C) 2004 THE Kvirc 3.0'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the Kvirc 3.0 package.
+# Dušan Hokův <[email protected]>, 2004.
+# , fuzzy
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Kvirc 3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2004-07-12 10:00+0200\n"
+"Last-Translator: Dušan Hokův <[email protected]>\n"
+"Language-Team: Czech <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1247
+msgid "Hide"
+msgstr "Schovat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1250
+msgid "1 Minute"
+msgstr "1 ninuta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1251
+msgid "5 Minutes"
+msgstr "5 minut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1252
+msgid "15 Minutes"
+msgstr "15 minut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1253
+msgid "30 Minutes"
+msgstr "30 minut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1254
+msgid "1 Hour"
+msgstr "1 hodina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1256
+msgid "Until KVIrc is Restarted"
+msgstr "Dokud se KVIrc nerestartuje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1257
+msgid "Permanently (Until Explicitly Enabled)"
+msgstr "Pemanentně (Dokud je explicitně povolen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1259
+msgid "Disable"
+msgstr "Vypnout"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1350
+msgid "Write text or commands to window"
+msgstr "Napíše text nebo příkaz do okna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:137
+msgid "The specified window does not exist"
+msgstr "Zadané okno neexistuje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:151
+msgid "The specified timeout is not valid, assuming 0"
+msgstr "Zadaná prodleva je neplatná, nastavuji 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:154
+msgid "The -t switch expects a timeout in seconds"
+msgstr "Přepínač -t očekává prodlevu v sekundách"
+
+#~ msgid "The command parser raised an error"
+#~ msgstr "Parser příkazu vyvolal chybu"
diff --git a/po/modules/notifier/notifier_de.po b/po/modules/notifier/notifier_de.po
new file mode 100644
index 00000000..f20be2cf
--- /dev/null
+++ b/po/modules/notifier/notifier_de.po
@@ -0,0 +1,74 @@
+# translation of notifier_de.po to Deutsch
+# translation of notifier_it.po to Deutsch
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Christoph Thielecke <[email protected]>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: notifier_de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2004-07-12 09:17+0200\n"
+"Last-Translator: Christoph Thielecke <[email protected]>\n"
+"Language-Team: Deutsch <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"net>\n"
+"X-Generator: KBabel 1.3.1\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1247
+msgid "Hide"
+msgstr "Ausblenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1250
+msgid "1 Minute"
+msgstr "1 Minute"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1251
+msgid "5 Minutes"
+msgstr "5 Minuten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1252
+msgid "15 Minutes"
+msgstr "15 Minuten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1253
+msgid "30 Minutes"
+msgstr "30 Minuten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1254
+msgid "1 Hour"
+msgstr "1 Stunde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1256
+msgid "Until KVIrc is Restarted"
+msgstr "Bit KVIrc neugestartet ist"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1257
+msgid "Permanently (Until Explicitly Enabled)"
+msgstr "Permanent (Bis explizit aktiviert)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1259
+msgid "Disable"
+msgstr "Deaktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1350
+msgid "Write text or commands to window"
+msgstr "Text oder Kommandos zu Fenster senden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:137
+msgid "The specified window does not exist"
+msgstr "Das angegebene Fenster existiert nicht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:151
+msgid "The specified timeout is not valid, assuming 0"
+msgstr "Der angegebene Zeitablauf ist ungültig, 0 wird angenommen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:154
+msgid "The -t switch expects a timeout in seconds"
+msgstr "Der -t-Schlater erwartet einen Zeitablauf in Sekunden"
+
+#~ msgid "The command parser raised an error"
+#~ msgstr "Der Kommandoparser fand einen Fehler"
diff --git a/po/modules/notifier/notifier_es.po b/po/modules/notifier/notifier_es.po
new file mode 100644
index 00000000..22213901
--- /dev/null
+++ b/po/modules/notifier/notifier_es.po
@@ -0,0 +1,72 @@
+# translation of notifier_es.po to Spanish
+# This file is distributed under the same license as the KVIrc package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# José Luis <[email protected]>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: notifier_es\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2004-10-20 23:20+0200\n"
+"Last-Translator: José Luis <[email protected]>\n"
+"Language-Team: Spanish <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1247
+msgid "Hide"
+msgstr "Esconde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1250
+msgid "1 Minute"
+msgstr "1 Minuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1251
+msgid "5 Minutes"
+msgstr "5 Minutos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1252
+msgid "15 Minutes"
+msgstr "15 Minutos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1253
+msgid "30 Minutes"
+msgstr "30 Minutos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1254
+msgid "1 Hour"
+msgstr "1 Hora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1256
+msgid "Until KVIrc is Restarted"
+msgstr "Hasta que KVIrc sea reiniciado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1257
+msgid "Permanently (Until Explicitly Enabled)"
+msgstr "Permanentemente (hasta que se habilite explícitamente)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1259
+msgid "Disable"
+msgstr "Deshabilitar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1350
+msgid "Write text or commands to window"
+msgstr "Escribir texto o comandos para la ventana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:137
+msgid "The specified window does not exist"
+msgstr "No existe la ventana especificada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:151
+msgid "The specified timeout is not valid, assuming 0"
+msgstr "El tiempo de expiración especificado no es válido, asumiendo 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:154
+msgid "The -t switch expects a timeout in seconds"
+msgstr "El parámetro -t espera un tiempo de expiración en segundos"
+
+#~ msgid "The command parser raised an error"
+#~ msgstr "El analizador de comandos informó de un error"
diff --git a/po/modules/notifier/notifier_fi.po b/po/modules/notifier/notifier_fi.po
new file mode 100644
index 00000000..bd7f39bc
--- /dev/null
+++ b/po/modules/notifier/notifier_fi.po
@@ -0,0 +1,69 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: notifier_fi\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-11-21 18:00+0200\n"
+"Last-Translator: Santeri Piippo <[email protected]>\n"
+"Language-Team: LANGUAGE <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1247
+msgid "Hide"
+msgstr "Piilota"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1250
+msgid "1 Minute"
+msgstr "Minuutti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1251
+msgid "5 Minutes"
+msgstr "Viisi minuuttia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1252
+msgid "15 Minutes"
+msgstr "15 minuuttia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1253
+msgid "30 Minutes"
+msgstr "Puoli tuntia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1254
+msgid "1 Hour"
+msgstr "Tunti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1256
+msgid "Until KVIrc is Restarted"
+msgstr "Kunnes KVIrc aloitetaan uudestaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1257
+msgid "Permanently (Until Explicitly Enabled)"
+msgstr "Vakituisesti (ellei toisin säädetä)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1259
+msgid "Disable"
+msgstr "Ota pois päältä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1350
+msgid "Write text or commands to window"
+msgstr "Kirjoita tekstiä tai komentoja ikkunaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:137
+msgid "The specified window does not exist"
+msgstr "Tämä ikkuna ei ole olemassa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:151
+msgid "The specified timeout is not valid, assuming 0"
+msgstr "Asetettu aikakatkaisu ei ole oikein muotoiltu, oletetaan 0:ksi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:154
+msgid "The -t switch expects a timeout in seconds"
+msgstr "-t -kytkin olettaa aikakatkaisun sekunneissa"
diff --git a/po/modules/notifier/notifier_fr.po b/po/modules/notifier/notifier_fr.po
new file mode 100644
index 00000000..fc20c8ac
--- /dev/null
+++ b/po/modules/notifier/notifier_fr.po
@@ -0,0 +1,72 @@
+# translation of notifier_fr.po to Français
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Ahinu <[email protected]>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: notifier_fr\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-04-24 15:07+0200\n"
+"Last-Translator: Ahinu <[email protected]>\n"
+"Language-Team: Français <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1247
+msgid "Hide"
+msgstr "Cacher"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1250
+msgid "1 Minute"
+msgstr "1 Minute"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1251
+msgid "5 Minutes"
+msgstr "5 Minutes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1252
+msgid "15 Minutes"
+msgstr "15 Minutes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1253
+msgid "30 Minutes"
+msgstr "30 Minutes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1254
+msgid "1 Hour"
+msgstr "1 Hour"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1256
+msgid "Until KVIrc is Restarted"
+msgstr "Jusqu'à ce que KVIrc soit redémarré"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1257
+msgid "Permanently (Until Explicitly Enabled)"
+msgstr "En permanence (jusqu'à explicite réactivation)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1259
+msgid "Disable"
+msgstr "Désactiver"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1350
+msgid "Write text or commands to window"
+msgstr "Écrire texte ou commandes dans la fenêtre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:137
+msgid "The specified window does not exist"
+msgstr "La fenêtre spécifiée n'existe pas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:151
+msgid "The specified timeout is not valid, assuming 0"
+msgstr "Le temps d'expiration spécifié est invalide, on assume 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:154
+msgid "The -t switch expects a timeout in seconds"
+msgstr "L'option -t necessite un temps d'expiration en secondes"
+
+#~ msgid "The command parser raised an error"
+#~ msgstr "L'analyseur de commande a noté une erreur"
diff --git a/po/modules/notifier/notifier_hr.po b/po/modules/notifier/notifier_hr.po
new file mode 100644
index 00000000..e71219e7
--- /dev/null
+++ b/po/modules/notifier/notifier_hr.po
@@ -0,0 +1,69 @@
+# translation of notifier_hr.po to Croatian
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# SpeedyGhost <[email protected]>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: notifier_hr\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2008-01-12 03:44+0100\n"
+"Last-Translator: SpeedyGhost <[email protected]>\n"
+"Language-Team: Croatian <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1247
+msgid "Hide"
+msgstr "Sakrij"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1250
+msgid "1 Minute"
+msgstr "1 Minuta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1251
+msgid "5 Minutes"
+msgstr "5 Minuta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1252
+msgid "15 Minutes"
+msgstr "15 Minuta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1253
+msgid "30 Minutes"
+msgstr "30 Minuta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1254
+msgid "1 Hour"
+msgstr "1 Sat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1256
+msgid "Until KVIrc is Restarted"
+msgstr "Do Restarta KVIrc-a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1257
+msgid "Permanently (Until Explicitly Enabled)"
+msgstr "Trajno (Do Izričitog Omogućavanja)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1259
+msgid "Disable"
+msgstr "Onemogući"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1350
+msgid "Write text or commands to window"
+msgstr "Piši tekst ili naredbu u prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:137
+msgid "The specified window does not exist"
+msgstr "Navedeni prozor ne postoji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:151
+msgid "The specified timeout is not valid, assuming 0"
+msgstr "Navedeno vremensko ograničenje nije ispravno, postavljanje 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:154
+msgid "The -t switch expects a timeout in seconds"
+msgstr "-t shitch očekuje timeout u sekundama"
diff --git a/po/modules/notifier/notifier_hu.po b/po/modules/notifier/notifier_hu.po
new file mode 100644
index 00000000..8faaebe9
--- /dev/null
+++ b/po/modules/notifier/notifier_hu.po
@@ -0,0 +1,69 @@
+# translation of notifier_hu.po to hungarian
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Ádám Fibinger <[email protected]>, 2006, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: notifier_hu\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-08-23 18:55+0200\n"
+"Last-Translator: Ádám Fibinger <[email protected]>\n"
+"Language-Team: hungarian <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1247
+msgid "Hide"
+msgstr "Elrejt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1250
+msgid "1 Minute"
+msgstr "1 Perc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1251
+msgid "5 Minutes"
+msgstr "5 Perc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1252
+msgid "15 Minutes"
+msgstr "15 Perc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1253
+msgid "30 Minutes"
+msgstr "30 Perc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1254
+msgid "1 Hour"
+msgstr "1 Óra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1256
+msgid "Until KVIrc is Restarted"
+msgstr "Amíg a KVIrcet újra nem indítod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1257
+msgid "Permanently (Until Explicitly Enabled)"
+msgstr "Végleg (amíg újra engedélyezve nem lesz)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1259
+msgid "Disable"
+msgstr "Letiltás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1350
+msgid "Write text or commands to window"
+msgstr "Szöveg vagy parancs írása az ablakba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:137
+msgid "The specified window does not exist"
+msgstr "A megadott ablak nem létezik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:151
+msgid "The specified timeout is not valid, assuming 0"
+msgstr "A megadott időtúllépés érvénytelen, beállítás nullára"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:154
+msgid "The -t switch expects a timeout in seconds"
+msgstr "A -t kapcsoló időtúllépést vár másodpercekben"
diff --git a/po/modules/notifier/notifier_it.po b/po/modules/notifier/notifier_it.po
new file mode 100644
index 00000000..13e6581f
--- /dev/null
+++ b/po/modules/notifier/notifier_it.po
@@ -0,0 +1,76 @@
+# translation of notifier_it.po to
+# translation of notifier_it.po
+# KVIrc Notifier module Italian translation file
+# Italian translation file for KVIrc 3.0
+# Copyright (C) Szymon Stefanek
+# This file is distributed under the same license as the KVIrc package.
+# Szymon Stefanek <pragma at kvirc dot net>, 2004.
+# Etherea <cle at virg0 dot org>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: notifier_it\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-01-06 20:02+0100\n"
+"Last-Translator: \n"
+"Language-Team: <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1247
+msgid "Hide"
+msgstr "Nascondi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1250
+msgid "1 Minute"
+msgstr "1 minuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1251
+msgid "5 Minutes"
+msgstr "5 minuti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1252
+msgid "15 Minutes"
+msgstr "15 minuti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1253
+msgid "30 Minutes"
+msgstr "30 minuti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1254
+msgid "1 Hour"
+msgstr "1 ora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1256
+msgid "Until KVIrc is Restarted"
+msgstr "Fino al prossimo riavvio di KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1257
+msgid "Permanently (Until Explicitly Enabled)"
+msgstr "Permanentemente (Finché non sia Abilitato)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1259
+msgid "Disable"
+msgstr "Disabilita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1350
+msgid "Write text or commands to window"
+msgstr "Spedisci testo o comandi alla finestra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:137
+msgid "The specified window does not exist"
+msgstr "La finestra specificata non esiste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:151
+msgid "The specified timeout is not valid, assuming 0"
+msgstr "Il timeout specificato non è valido, assumo 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:154
+msgid "The -t switch expects a timeout in seconds"
+msgstr "Lo switch -t necessita di un timeout in secondi"
+
+#~ msgid "Close tab"
+#~ msgstr "Chiudi tab"
diff --git a/po/modules/notifier/notifier_pt.po b/po/modules/notifier/notifier_pt.po
new file mode 100644
index 00000000..c400f0ed
--- /dev/null
+++ b/po/modules/notifier/notifier_pt.po
@@ -0,0 +1,77 @@
+# translation of notifier_pt.po to Português
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Szymon Stefanek <[email protected]>, 2004.
+# Zé <[email protected]>, 2004.
+# José Melo <[email protected]>, 2005, 2006.
+# Zé <[email protected]>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: notifier_pt\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-02-06 01:20+0000\n"
+"Last-Translator: Zé <[email protected]>\n"
+"Language-Team: Português <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"net>\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1247
+msgid "Hide"
+msgstr "Ocultar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1250
+msgid "1 Minute"
+msgstr "1 Minuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1251
+msgid "5 Minutes"
+msgstr "5 Minutos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1252
+msgid "15 Minutes"
+msgstr "15 Minutos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1253
+msgid "30 Minutes"
+msgstr "30 Minutos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1254
+msgid "1 Hour"
+msgstr "1 Hora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1256
+msgid "Until KVIrc is Restarted"
+msgstr "Até o KVirc ser Reiniciado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1257
+msgid "Permanently (Until Explicitly Enabled)"
+msgstr "Permanentemente (Até ser Activado Explícitamente)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1259
+msgid "Disable"
+msgstr "Desactivar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1350
+msgid "Write text or commands to window"
+msgstr "Escrever texto ou comandos para a janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:137
+msgid "The specified window does not exist"
+msgstr "A janela indicada não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:151
+msgid "The specified timeout is not valid, assuming 0"
+msgstr "O intervalo de tempo indicado não é válido, a assumir 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:154
+msgid "The -t switch expects a timeout in seconds"
+msgstr "A opção -t espera um intervalo de tempo em segundos"
+
+#~ msgid "Close tab"
+#~ msgstr "Fechar separador"
diff --git a/po/modules/notifier/notifier_pt_BR.po b/po/modules/notifier/notifier_pt_BR.po
new file mode 100644
index 00000000..cc8b6d66
--- /dev/null
+++ b/po/modules/notifier/notifier_pt_BR.po
@@ -0,0 +1,73 @@
+# translation of notifier_pt_BR.po to
+# translation of notifier.pot to Brazilian-Protugues
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Adilson GonAalves Soares Junior <[email protected]>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: notifier_pt_BR\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2004-11-15 02:19+0000\n"
+"Last-Translator: \n"
+"Language-Team: <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1247
+msgid "Hide"
+msgstr "Ocultar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1250
+msgid "1 Minute"
+msgstr "1 Minuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1251
+msgid "5 Minutes"
+msgstr "5 Minutos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1252
+msgid "15 Minutes"
+msgstr "15 Minutos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1253
+msgid "30 Minutes"
+msgstr "30 Minutos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1254
+msgid "1 Hour"
+msgstr "1 Hora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1256
+msgid "Until KVIrc is Restarted"
+msgstr "Até que o KVirc seja Reiniciado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1257
+msgid "Permanently (Until Explicitly Enabled)"
+msgstr "Permanentemente (Até que a Explícitação esteja Ativa)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1259
+msgid "Disable"
+msgstr "Desativar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1350
+msgid "Write text or commands to window"
+msgstr "Escrever texto ou comandos para a janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:137
+msgid "The specified window does not exist"
+msgstr "A janela especificada não existe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:151
+msgid "The specified timeout is not valid, assuming 0"
+msgstr "O intervalo de tempo especificado não é válido, assumindo 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:154
+msgid "The -t switch expects a timeout in seconds"
+msgstr "A opção -t espera um intervalo de tempo em segundos"
+
+#~ msgid "The command parser raised an error"
+#~ msgstr "O analisador de comando levantou um erro"
diff --git a/po/modules/notifier/notifier_ru.po b/po/modules/notifier/notifier_ru.po
new file mode 100644
index 00000000..83de8f1a
--- /dev/null
+++ b/po/modules/notifier/notifier_ru.po
@@ -0,0 +1,78 @@
+# translation of notifier_ru.po to russian
+# translation of notifier_ru.po to русский
+# translation of notifier.po to русский
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Valerius <[email protected]>, 2004.
+# Valeriy Girchenko <[email protected]>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: notifier_ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-02-16 19:45+0200\n"
+"Last-Translator: Valeriy Girchenko <[email protected]>\n"
+"Language-Team: russian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1247
+msgid "Hide"
+msgstr "Скрыть"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1250
+msgid "1 Minute"
+msgstr "1 Минута"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1251
+msgid "5 Minutes"
+msgstr "5 Минут"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1252
+msgid "15 Minutes"
+msgstr "15 Минут"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1253
+msgid "30 Minutes"
+msgstr "30 Минут"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1254
+msgid "1 Hour"
+msgstr "1 Час"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1256
+msgid "Until KVIrc is Restarted"
+msgstr "Пока KVIrc не будет перезапущен"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1257
+msgid "Permanently (Until Explicitly Enabled)"
+msgstr "Навсегда (До явного включения)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1259
+msgid "Disable"
+msgstr "Выключить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1350
+msgid "Write text or commands to window"
+msgstr "Напишите текст или команду в окне"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:137
+msgid "The specified window does not exist"
+msgstr "Заданное окно не существует"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:151
+msgid "The specified timeout is not valid, assuming 0"
+msgstr "Заданный таймаут недействителен, принимается 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:154
+msgid "The -t switch expects a timeout in seconds"
+msgstr "Используйте ключ -t чтобы задать таймаут в секундах"
+
+#~ msgid "The command parser raised an error"
+#~ msgstr "Синтаксический анализатор обнаружил в команде ошибку"
diff --git a/po/modules/notifier/notifier_uk.po b/po/modules/notifier/notifier_uk.po
new file mode 100644
index 00000000..5b864924
--- /dev/null
+++ b/po/modules/notifier/notifier_uk.po
@@ -0,0 +1,78 @@
+# translation of notifier_ua.po to
+# translation of notifier_ua.po to ukrainian
+# translation of notifier_ua.po to українська
+# translation of notifier.po to українська
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE' COPYRIGHT HOLDER.
+# Belyaev Stanislav <[email protected]>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: notifier_ua\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-12-19 15:00+0200\n"
+"Last-Translator: Belyaev Stanislav <[email protected]>\n"
+"Language-Team: Ukrainian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1:2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1:2);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1247
+msgid "Hide"
+msgstr "Сховати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1250
+msgid "1 Minute"
+msgstr "1 Хвилина"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1251
+msgid "5 Minutes"
+msgstr "5 Хвилин"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1252
+msgid "15 Minutes"
+msgstr "15 Хвилин"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1253
+msgid "30 Minutes"
+msgstr "30 Хвилин"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1254
+msgid "1 Hour"
+msgstr "1 Година"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1256
+msgid "Until KVIrc is Restarted"
+msgstr "Поки KVIrc не буде перезапущений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1257
+msgid "Permanently (Until Explicitly Enabled)"
+msgstr "Назавжди (До явного включення)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1259
+msgid "Disable"
+msgstr "Виключити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/notifierwindow.cpp:1350
+msgid "Write text or commands to window"
+msgstr "Напишіть текст або команду у вікні"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:137
+msgid "The specified window does not exist"
+msgstr "Задане вікно не існує"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:151
+msgid "The specified timeout is not valid, assuming 0"
+msgstr "Заданий таймаут недійсний, приймається 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/notifier/libkvinotifier.cpp:154
+msgid "The -t switch expects a timeout in seconds"
+msgstr "Використайте ключ -t щоб задати таймаут у секундах"
+
+#~ msgid "The command parser raised an error"
+#~ msgstr "Синтаксичний аналізатор виявив у команді помилку"
diff --git a/po/modules/options/Makefile.am b/po/modules/options/Makefile.am
new file mode 100644
index 00000000..707da5a5
--- /dev/null
+++ b/po/modules/options/Makefile.am
@@ -0,0 +1,82 @@
+################################################################################
+# KVirc IRC client Makefile - 18.09.99 Szymon Stefanek <pragma at kvirc dot net>
+################################################################################
+
+# The name of this module
+THISMODULE = options
+
+# Don't touch this
+tmpdir = $(localedir)
+
+
+# The *.mo files to generate
+tmp_DATA = options_bg.mo \
+ options_ca.mo \
+ options_cs.mo \
+ options_de.mo \
+ options_es.mo \
+ options_fr.mo \
+ options_hu.mo \
+ options_it.mo \
+ options_nl.mo \
+ options_pl.mo \
+ options_pt.mo \
+ options_pt_BR.mo \
+ options_ru.mo \
+ options_sr.mo \
+ options_fi.mo \
+ options_uk.mo
+
+# The *.po files to generate
+POFILES = options_bg.po \
+ options_ca.po \
+ options_cs.po \
+ options_de.po \
+ options_es.po \
+ options_fr.po \
+ options_hu.po \
+ options_it.po \
+ options_nl.po \
+ options_pl.po \
+ options_pt.po \
+ options_pt_BR.po \
+ options_ru.po \
+ options_sr.po \
+ options_fi.po \
+ options_uk.po
+
+###############################################################################
+# STOP EDITING HERE
+###############################################################################
+
+# Killed the fuzzy entries: don't use them , they may SEGV
+# - touch $@ && $(SS_MSGFMT) -fvo $@ $<
+
+CLEANFILES = $(tmp_DATA)
+EXTRA_DIST = $(POFILES)
+
+%.mo: %.po
+ -touch $@ && $(SS_MSGFMT) -vo $@ $<
+
+messages-extract:
+ @find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.cpp > files; \
+ find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.h >> files; \
+ xgettext -o $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot -k__tr2qs_no_lookup -k__tr2qs_ctx -k__tr_no_lookup -f files; \
+ rm files; \
+ echo "Messages extracted to $(THISMODULE).pot";
+
+messages-update:
+ @old=_old; \
+ if test -f "$(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot"; then \
+ for lang in $(POFILES); do \
+ echo "Updating file $$lang"; \
+ mv -f $$lang $$lang$$old; \
+ msgmerge -o $$lang $$lang$$old $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot && rm -f $$lang$$old; \
+ done; \
+ else \
+ echo "----------------------------------------------------"; \
+ echo "- WARNING: ./$(THISMODULE).pot does not exist"; \
+ echo "- WARNING: You must run make messages-extract first"; \
+ echo "----------------------------------------------------"; \
+ fi
+messages: messages-extract messages-update
diff --git a/po/modules/options/options_bg.po b/po/modules/options/options_bg.po
new file mode 100644
index 00000000..5196c847
--- /dev/null
+++ b/po/modules/options/options_bg.po
@@ -0,0 +1,4948 @@
+# translation of bg.po to Bulgarian
+# translation of kvirc.po to Bulgarian
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Атанас Мавров <[email protected]>, 2004.
+#
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:304
+msgid ""
+msgstr ""
+"Project-Id-Version: bg\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2004-06-01 21:36+0300\n"
+"Last-Translator: Атанас Мавров <[email protected]>\n"
+"Language-Team: Bulgarian <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:232
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:51
+msgid "Font:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:47
+msgid "Background color:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:129
+msgid "Background image:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:51
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:46
+msgid "Horizontal align:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:50
+msgid "Vertical align:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:59
+msgid "Mark Line:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:66
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:124
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:59
+msgid "Tile"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:62
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:55
+msgid "Left"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:56
+msgid "Right"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:132
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:62
+msgid "Center"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:60
+msgid "Top"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:61
+msgid "Bottom"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:149
+msgid "Enable URL highlighting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:150
+msgid "Use line wrap margin"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:151
+msgid "Maximum buffer size:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:152
+msgid " lines"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:153
+msgid "Link tooltip show delay:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:306
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:59
+msgid " msec"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:155
+msgid "Link tooltip hide delay:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:157
+msgid "Track last read text line"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:48
+msgid "NickServ Authentication Rule"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:55
+msgid "Registered NickName"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:60
+msgid "Put here the nickname that you have registered with NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:277
+msgid "NickServ Mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:70
+#, c-format
+msgid ""
+"This is the mask that NickServ must match to be correctly identified as the "
+"NickServ service. This usually will be something like <b>NickServ!"
+"[email protected]</b>.<br>You can use wildcards for this field, but "
+"generally it is a security flaw. If you're 100%% sure that NO user on the "
+"network can use the nickname \"NickServ\", the mask <b>NickServ!*@*</b> may "
+"be safe to use in this field."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:78
+msgid "Message Regexp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:86
+msgid ""
+"This is the simple regular expression that the identification request "
+"message from NickServ must match in order to be correctly recognized.<br>The "
+"message is usually something like \"To identify yourself please use /ns "
+"IDENTIFY password\" and it is sent when the NickServ wants you to "
+"authenticate yourself. You can use the * and ? wildcards."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:259
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:279
+msgid "Identify Command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:98
+msgid ""
+"This is the command that will be executed when NickServ requests "
+"authentication for the nickname described in this rule (if the both server "
+"and NickServ mask are matched). This usually will be something like <b>msg "
+"NickServ identify &lt;yourpassword&gt;</b>.<br>You can use <b>msg -q</b> if "
+"you don't want the password echoed on the screen. Please note that there is "
+"no leading slash in this command."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:256
+#, fuzzy
+msgid "Server mask"
+msgstr "Вътрешна грешка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:117
+msgid ""
+"This is the mask that the current server must match in order for this rule "
+"to apply. It can contain * and ? wildcards.<br>Do NOT use simply \"*\" "
+"here..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:128
+msgid "Hint: Move the mouse cursor over the fields to get help"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:137
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:68
+msgid "Cancel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:803
+msgid "OK"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:164
+#, fuzzy
+msgid "Invalid NickServ Rule"
+msgstr "Неправилен порт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:169
+msgid "The Nickname field can't be empty!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:175
+msgid "The Nickname field can't contain spaces!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:183
+msgid "The NickServ mask can't be empty!<br>You must put at least * there."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:191
+msgid "The Message Regexp can't be empty!<br>You must put at least * there."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:199
+msgid "The Identify Command can't be empty!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:265
+msgid "Enable NickServ Identification"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:269
+msgid "This check enables the automatic identification with NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:276
+msgid "Nickname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:258
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:278
+msgid "NickServ Request Mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:265
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on all the networks."
+"<br>Please be aware that this feature can cause your NickServ passwords to "
+"be stolen if used improperly. Make sure that you fully understand the "
+"NickServ authentication protocol.<br>In other words, be sure to know what "
+"you're doing.<br>Also note that the password that you provide is stored as "
+"<b>PLAIN TEXT</b>.<br>KVIrc supports also per-network NickServ "
+"authentication rules that can be created in the \"Advanced...\" network "
+"options (accessible from the servers dialog).</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:293
+msgid "Add Rule"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:298
+msgid "Edit Rule"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:302
+msgid "Delete Rule"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:31
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:36
+msgid "Font"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:38
+msgid "Foreground color"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:37
+msgid "Background color"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:34
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:44
+msgid "Background image"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:40
+msgid "Enable tray icon"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:41
+msgid "Close in tray"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:42
+msgid "Minimize in tray"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:44
+msgid "Enable tray icon flashing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:45
+msgid "Enable level-based message notification (not a message-type based)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:47
+msgid "Select message levels to notify"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:49
+msgid "Minimum level for low-priority messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:53
+msgid "Minimum level for high-priority message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.cpp:40
+msgid ""
+"This section contains irc protection tools<br><p>like<b> flood, ignore, "
+"antispam. </b> </p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:40
+msgid ""
+"<center><b>Settings for CTCP.</b></center><p>The <b>Client-To-Client "
+"Protocol</b> (CTCP) is used to transmit special control messages over an IRC "
+"connection. These messages can request information from clients or negotiate "
+"file transfers.<br><br></p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:47
+msgid "CTCP Replies"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:48
+msgid "Append to VERSION reply:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:52
+msgid ""
+"<center>This text will be appended to the CTCP VERSION reply.<br>For "
+"example, you can place a script name here.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:55
+msgid "Append to SOURCE reply:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:59
+msgid ""
+"<center>This text will be appended to the CTCP SOURCE reply.<br>For example, "
+"you can place the source URL for a script here.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:69
+msgid "PAGE reply:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:73
+msgid ""
+"<center>This is the CTCP PAGE reply.<br>It should contain some sort of "
+"acknowledgement for CTCP PAGE messages.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:76
+msgid "Show the CTCP replies in the active window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:78
+msgid "Show dialog for CTCP page requests"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:36
+msgid "Use tree taskbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:37
+msgid "Sort windows by name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:38
+msgid "Show window icons in taskbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:39
+msgid "Show activity meter in taskbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:41
+msgid ""
+"<center>This option enables the usage of the taskbar activity meter. Each "
+"window entry will have a small indicator of the activity that is going on in "
+"that window. The indicator is a small square that changes colors, dark "
+"colors mean low activity, while bright colors signal high activity. KVIrc "
+"also uses some heuristics to determine whether the activity is somewhat "
+"\"human\" or it is generated by automated entities (such as bots or IRC "
+"servers). \"Human\" activity causes the indicator to be shaded red while "
+"automated activity causes the indicator to be shaded blue.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:49
+msgid "Show IRC context indicator in taskbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:50
+msgid "Enable window tooltips"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:233
+msgid "Text/Alert Colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:125
+msgid "Normal:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:126
+msgid "Selected:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:236
+msgid "Alert Level 1:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:237
+msgid "Alert Level 2:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:238
+msgid "Alert Level 3:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:239
+msgid "Alert Level 4:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:240
+msgid "Alert Level 5:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:241
+msgid "Progress bar color:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:124
+msgid "Background Colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:212
+msgid "Show header"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:214
+msgid "Minimum width:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:215
+msgid "Maximum width:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:235
+msgid "Minimized:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:242
+msgid "Minimum width of buttons:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:244
+msgid "Set maximum button width"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:245
+msgid "Maximum width of buttons:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:246
+msgid "Use flat buttons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:96
+msgid "Network Details"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:82
+msgid "Description:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:116
+msgid "<center>Put here a brief description of the network.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:477
+msgid "Properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:123
+msgid "Username:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:134
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to servers "
+"on this network.\n"
+"If this field is left empty (most common case), KVIrc will use the default "
+"username specified in the \"Identity\" options tab.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:498
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:320
+msgid "Nickname:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:145
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to the servers on this network.<br>If this field is left empty (most "
+"common case), the default nickname (specified in the \"Identity\" settings) "
+"will be used.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:509
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:342
+msgid "Real name:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:153
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with the servers on this network.<br>If you leave this field empty "
+"(most common case), the default \"real name\" (specified in the \"Identity\" "
+"settings) will be used.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:644
+msgid "Encoding:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:164
+msgid ""
+"<center>This box allows you to choose the preferred encoding for the servers "
+"in this network. If you choose \"Use System Encoding\" then the encoding "
+"will be set to the systemwide value that you choose in the \"Encoding\" page "
+"of the options dialog.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:173
+msgid "Use System Encoding"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:185
+msgid "Connect to this network at startup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:189
+msgid ""
+"<center>This option will cause KVIrc to automatically connect to this "
+"network at startup</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:79
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:120
+msgid "General"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:756
+msgid "Channels to join automatically upon connect:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:211
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to a server in this network has been established. To add a "
+"channel, type its name in the text input below and click \"<b>Add</b>\".</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:217
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:62
+msgid "Join Channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:228
+msgid ""
+"<center>The following commands will be executed after a connection to a "
+"server in this network has been established.<br><b>Important:</b> Enter "
+"commands <b>without</b> a preceding slash (e.g. <tt>quote pass secret</tt> "
+"instead of <tt>/quote pass secret</tt>).<br>KVIrc will first send the USER "
+"command, then eventually PASS and NICK and then execute this command "
+"sequence.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:782
+msgid "On Connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:249
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"a server in this network.<br><b>Important:</b> Enter commands <b>without</b> "
+"a preceding slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote "
+"privatelog</tt>).<br>This is useful for automatically opening queries, "
+"setting variables, etc.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:801
+msgid "On Login"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:285
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on this network.<br>Please "
+"be aware that this feature can cause your NickServ passwords to be stolen if "
+"used improperly. Make sure that you fully understand the NickServ "
+"authentication protocol.<br>In other words, be sure to know what you're "
+"doing.<br>Also note that the password that you provide is stored as <b>PLAIN "
+"TEXT</b>.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:35
+msgid "NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:323
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:60
+msgid "&OK"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:449
+msgid "Server Details"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:465
+msgid ""
+"<center>This is a brief description of this server. This field has no "
+"restrictions but many server lists use it to describe the server's physical "
+"location</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:484
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to this "
+"server.\n"
+"If this field is left empty (most common case), KVIrc will first look if an "
+"username is specified for the network that this server belongs to, and if "
+"that is empty then KVIrc will use the default username specified in the "
+"\"Identity\" options tab.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:490
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:127
+msgid "Password:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:495
+msgid ""
+"<center>If this server requires a password, put it in this field, otherwise "
+"leave it empty.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:504
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to this server.<br>If this field is left empty (most common case), "
+"KVIrc will first look if a nickname is specified for the network that this "
+"server belongs to, and if that is empty then the default nickname (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:513
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with this server.<br>If you leave this field empty (most common case), "
+"KVIrc will first look if a real name is specified for the network that this "
+"server belongs to, and if that is empty the default \"real name\" (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:683
+msgid "User Mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:520
+msgid "Use default user mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:522
+msgid ""
+"<center>If this is enabled, the global initial <b>user mode</b> (configured "
+"from the identity dialog) will be used. If disabled, you can configure an "
+"initial user mode for this server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:684
+msgid "Invisible (+i)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:534
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:685
+msgid "Server notices (+s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:686
+msgid "Wallops (+w)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:548
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:60
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:104
+msgid "Identity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:115
+msgid "Port:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:565
+msgid ""
+"<center>This is the default <b>port</b> that this server will be contacted "
+"on.<br>Usually <b>6667</b> is OK.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:571
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:119
+msgid "IP address:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:576
+msgid ""
+"<center>This is the <b>IP address</b> of this server, it is here for caching "
+"purposes.<br>If you leave this field empty, KVIrc will fill it in the first "
+"time it connects to the server. If you enable the \"cache IP address\" "
+"option below, KVIrc will use it as a \"cached result\" and avoid looking it "
+"up again.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:596
+msgid "Cache IP address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:599
+msgid ""
+"<center>This check will enable <b>IP address caching</b> for this server:"
+"<br>DNS lookups can be time-consuming and might be blocking on some "
+"platforms; this option will cause KVIrc to look up the server hostname only "
+"once.<br><br> Advanced: you can also use this option to force a certain "
+"server name to resolve to a fixed ip address when either the dns for that "
+"server is temporairly unreachable or you want to avoid the round-robin "
+"lookups.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:609
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:140
+msgid "Use IPv6 protocol"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:619
+msgid ""
+"<center>This check identifies IPv6 servers.<br>If enabled, KVIrc will "
+"attempt to use the IPv6 protocol (thus your OS <b>must</b> have a working "
+"IPv6 stack and you <b>must</b> have an IPv6 connection).</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:624
+msgid "Use SSL protocol"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:627
+msgid ""
+"<center>This check will cause the connection to use the <b>Secure Socket "
+"Layer</b> encryption support. Obviously, this server must have support for "
+"this, too. :)</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:636
+msgid "Connect to this server at startup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:641
+msgid ""
+"<center>This option will cause KVIrc to connect to the IRC server when it is "
+"started.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:650
+msgid ""
+"<center>This box allows you to choose the preferred encoding for this sever. "
+"If you choose \"Use Network Encoding\" then the encoding will be inherited "
+"from the network that this server belongs to.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:659
+msgid "Use Network Encoding"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:672
+msgid "Link filter:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:701
+msgid ""
+"<center>This field specifies the name of a module that exports a link filter "
+"for this type of server.<br>For plain IRC connections, you don't need any "
+"link filters; this is used for incompatible protocols.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:705
+msgid "Id:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:713
+msgid ""
+"<center>This field allows you to specify a really unique id for this server. "
+"You will then be able to use /server -x &lt;this_id&gt; to make the "
+"connection. This is especially useful when you have multiple server entries "
+"with the same hostname and port in different networks (bouncers?)</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:719
+msgid "Proxy server:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:724
+msgid ""
+"<center>This is the <b>proxy</b> that KVIrc will use to connect to thos "
+"server.\n"
+"If this field is set in \"Default\" KVirc will use global proxy settings, if "
+"it is set in \"Direct connection\" KVirc will connect to this server without "
+"proxy. You can define new proxy server in global options' \"Proxy servers\" "
+"menu.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:729
+msgid "Default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:730
+#, fuzzy
+msgid "Direct connection"
+msgstr "Изтичане на време за връзка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:746
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:28
+msgid "Connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:758
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to this server has been established. To add a channel, type its "
+"name in the text input below and click \"<b>Add</b>\".</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:776
+msgid ""
+"<center>The following commands will be executed after a connection has been "
+"established.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote pass secret</tt> instead of <tt>/quote pass secret</"
+"tt>).<br>KVIrc will first send the USER command, then eventually PASS and "
+"NICK and then execute this command sequence.<br>This is particularly useful "
+"for IRC bouncers that require login commands.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:796
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"this server.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote privatelog</tt>)."
+"<br>This is useful for automatically opening queries, setting variables, etc."
+"</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1041
+msgid "Server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1042
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:73
+msgid "Description"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1054
+msgid ""
+"<center>This is the list of available IRC servers.<br>Right-click on the "
+"list to add or remove servers and perform other actions.<br>Double-click on "
+"a item for advanced options.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1069
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1430
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1554
+msgid "New Network"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1077
+msgid "New Server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1086
+msgid "Remove Network/Server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1098
+msgid "Copy Server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1107
+msgid "Paste Server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1446
+msgid "Import List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1125
+msgid "Active Configuration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1332
+msgid "Server:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1130
+msgid ""
+"<center>This is the name of the currently selected server or network</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1153
+msgid "Advanced..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1156
+msgid "<center>Click here to edit advanced options for this entry</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1159
+msgid "Connect &Now"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1164
+msgid ""
+"<center>Hit this button to connect to the currently selected server.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1177
+msgid ""
+"<center>This button shows a list of recently used servers. It allows you to "
+"quickly find them in the list.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1181
+msgid "Show this dialog at startup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1184
+msgid ""
+"<center>If this option is enabled, the Servers dialog will appear every time "
+"you start KVIrc</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1335
+msgid "Network:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1345
+msgid "No selection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1364
+msgid "UnknownNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1431
+msgid "Remove Network"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1434
+msgid "&New Server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1435
+msgid "Re&move Server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1437
+msgid "&Copy Server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1439
+msgid "&Paste Server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1444
+msgid "Clear List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1483
+msgid ""
+"Oops... something weird happened:<br>Can't find any module capable of "
+"importing servers."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1500
+msgid ""
+"Oops... something weird happened:<br>Can't find the module that was capable "
+"of this import action. :("
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1574
+msgid "irc.unknown.net"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:39
+msgid "Disable parser warnings"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:40
+msgid "Disable broken event handlers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:41
+msgid "Kill broken timers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:42
+msgid "Send unknown commands as /RAW"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:46
+msgid "Automatically unload unused modules"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:47
+msgid "Ignore module versions (dangerous)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:51
+msgid "Relay errors and warnings to debug window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:52
+msgid "Create minimized debug window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:59
+msgid "Nickname alternatives"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:62
+msgid ""
+"<center>Here you can choose up to three nicknames alternative to the primary "
+"one. KVIrc will use the alternatives if the primary nick is already used by "
+"someone else on a particular IRC network.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:69
+msgid "Alt. Nickname 1:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:76
+msgid "Alt. Nickname 2:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:83
+msgid "Alt. Nickname 3:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Ok"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:130
+msgid "Avatar Download - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:136
+msgid "<center>Please wait while the avatar is being downloaded</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:139
+msgid "Abort"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:170
+msgid "Failed to start the download"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:184
+msgid "Download aborted by user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:213
+msgid "Choose Avatar - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:219
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:237
+msgid "&Browse..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:275
+msgid "Choose an Image File - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:316
+msgid "Basic Properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:323
+msgid ""
+"<center>Your <b>nickname</b> is your primary form of identification on IRC."
+"<br>Since servers cannot accept multiple users sharing the same nickname "
+"(case insensitive), you can provide alternative nicknames to be used in "
+"casethe server refuses to accept the default one.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:331
+msgid "Alternatives..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:337
+msgid ""
+"<center>This is the <b>username</b> that you will use to connect to the "
+"server.<br>In the past, it was used as a form of authentication, but it "
+"normally has no special use now.<br>In addition to your nickname, you are "
+"identified on IRC by your <b>username@hostname</b>.</br>Basically, you can "
+"enter any word you like here. :D</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:346
+msgid ""
+"<center>This text will appear when someone does a /WHOIS on you.<br>It is "
+"intended to be your real name, but people tend to put random quotes and "
+"phrases here too.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:351
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:356
+msgid "Profile"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:361
+msgid "Age:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:366
+msgid "Here you can specify your age."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:401
+#, fuzzy
+msgid "Unspecified"
+msgstr "Няма такъв файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:391
+msgid "Gender:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:396
+msgid "Here you can specify your gender."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:402
+msgid "Female"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:403
+msgid "Male"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:414
+#, fuzzy
+msgid "Location:"
+msgstr "Изтичане на време за връзка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:417
+msgid ""
+"You can describe here your approximate physical location. Something like "
+"\"Region, Country\" will be ok. Please note that this information will be "
+"viewable by anyone so putting more data (like the exact address), generally, "
+"<b>is not a good idea</b>."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:422
+msgid "Languages:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:425
+msgid ""
+"You can put here the short names of the languages you can speak. An example "
+"might be \"EN,IT\" that would mean that you speak both Italian and English."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:429
+msgid "Other:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:432
+msgid ""
+"You can put here some additional personal data. It might be a funny quote or "
+"your homepage url... Please note that this information will be viewable by "
+"anyone so <b>don't put any sensible data</b> (passwords, telephone or credit "
+"card numbers)."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:502
+msgid ""
+"Here you can choose your avatar image. It will be visible<br>by other people "
+"that request it. Choose a nice image of yourself,<br>possibly avoiding "
+"obscenity and offending images. It is a good idea<br>to choose a relatively "
+"small file (say 150 Kb max) because<br>most clients have a limit on the size "
+"of avatars being downloaded.<br>The image also should be smaller than "
+"800x600 pixels since<br>it will have to be viewable in everyone's monitor."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:511
+msgid "Use avatar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:537
+msgid "Choose..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:598
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:637
+msgid "Failed to Load Avatar - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:599
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:638
+msgid ""
+"Failed to load the avatar image.<br>It may be an unaccessible file or an "
+"unsupported image format."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:606
+msgid "Failed to download the avatar image.<br><b>%Q</b>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:608
+msgid "Avatar Download Failed - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:649
+msgid "Avatar Might Be Too Big - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:650
+msgid ""
+"The avatar you have choosen is bigger than 1024x768 pixels.<br>Such a big "
+"image will not be seen on all the user monitors<br>and will probably be "
+"scaled by the remote clients with poor quality<br>algorithms to improve "
+"performance. You *should* scale it manually<br>to a sane size (like 800x600) "
+"or choose a different image."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:688
+msgid "Default Messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:691
+msgid "Part message:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:695
+msgid ""
+"<center>This is the default part message that will be used when you<br>leave "
+"a channel by closing a channel window.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:699
+msgid "Quit message:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:702
+msgid ""
+"<center>This is the default quit message that will be used when you<br>quit "
+"your IRC session by closing the console window or disconnecting by pressing "
+"the disconnect button.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:42
+msgid "Open Query For"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:40
+msgid "Private messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:46
+msgid ""
+"<center>This option enables query window creation when a private message "
+"(PRIVMSG) is received.<br>If you disable this, private messages will be "
+"shown in the active window or a common channel.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:42
+msgid "Private notices"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:55
+msgid ""
+"<center>This option enables query window creation when a private notice "
+"(NOTICE) is received.<br>If you disable this, private notices will be shown "
+"in the active window or a common channel.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:62
+msgid "Always open queries as minimized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:66
+msgid ""
+"<center>This option causes newly created query windows to be immediately "
+"minimized.<br>Enable this if you don't like queries popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:74
+msgid "Enable target user tracking"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:77
+msgid ""
+"<center>This option will enable target user tracking.<br>Some actions of the "
+"target user (e.g. joins and parts) will be displayed in the window.<br></"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:83
+msgid "Flash system taskbar on new query message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:86
+msgid ""
+"<center>This option causes the system taskbar entry for KVIrc to flash when "
+"a new query message is received and the KVIrc window is not the active.</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:91
+msgid "Popup notifier on new query message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:94
+msgid ""
+"<center>This option causes a small notifier window to pop up in the low "
+"right corner of the screen when a new message is received and the KVIrc "
+"window is not active.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:98
+msgid "Show information about query target at the top of the query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:101
+msgid ""
+"<center>This option enables query window information label. It can show you "
+"known information about query target at the top of the window.<br>Uncheck if "
+"you think,that it wastes your query space/</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:39
+msgid "Use global application font"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:40
+msgid "Hide icons in Popup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:41
+msgid "Global application font:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:67
+msgid "Enable fake transparency"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:71
+msgid ""
+"<center>This option makes all KVIrc windows look transparent.<br>You must "
+"choose a blending background image to below or check the \"Use KDE desktop "
+"for transparency\" option.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:77
+msgid ""
+"<center>This option makes all KVIrc windows look like transparent.<br>You "
+"must choose a blending background image to below.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:83
+msgid "Child window opacity:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:87
+msgid "Parent window opacity:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:91
+msgid "Blend color:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:97
+msgid "Use KDE desktop for transparency"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:102
+msgid "Keep in sync with KDE background changes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:111
+msgid "Transparency blend image:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:155
+msgid "Active Background"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:156
+msgid "Inactive Background"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:157
+msgid "Active Text (Primary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:158
+msgid "Active Text (Secondary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:159
+msgid "Inactive Text (Primary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:160
+msgid "Inactive Text (Secondary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:197
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:44
+msgid "Background"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:178
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:205
+msgid "Background Image"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:198
+msgid "Low-Contrast Foreground"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:199
+msgid "Mid-Contrast Foreground"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:200
+msgid "Active High-Contrast Foreground (Primary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:201
+msgid "Active High-Contrast Foreground (Secondary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:202
+msgid "Inactive High-Contrast Foreground (Primary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:203
+msgid "Inactive High-Contrast Foreground (Secondary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:40
+msgid "Scaling in userlist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:41
+msgid "Scale avatar images in userlist (recommended)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:43
+msgid ""
+"<center>This option will force KVIrc to scale avatars shown in the userlist."
+"<br>Avatars will be scaled to fit the constraints set below. Better keep "
+"this option on. :)</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:48
+msgid "Do not scale avatar if it is less than required size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:59
+msgid "Image width:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:61
+msgid "Image height:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:56
+msgid "Scaling on load (and in user tooltips)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:57
+msgid "Scale avatar images on image load"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:65
+msgid "Request CTCP"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:66
+msgid "Request missing avatars"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:67
+msgid "Maximum requested file size:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to send a DCC GET request when someone "
+"sets an avatar and there is no cached copy available.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:74
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:317
+msgid " bytes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:77
+msgid ""
+"<center>This is the maximum size for avatar images that will be "
+"automatically requested.<br>A reasonable value might be 102400 bytes (100 K)."
+"</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:83
+msgid "Automatically accept incoming avatars"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:87
+msgid ""
+"<center>This option will cause KVIrc to auto-accept DCC SEND requests for "
+"incoming avatars.<br>If you're using the \"Request missing avatars\" option "
+"above, enabling this may by useful.<br>Avatars will be saved in the local "
+"KVIrc directory.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:94
+msgid "Remember avatars for registered users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:99
+msgid ""
+"<center>Use a user's last known avatar by default (only for users that are "
+"registered).</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:103
+msgid "Avatar offer timeout:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:104
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:162
+msgid " sec"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:107
+msgid ""
+"<center>This is the amount of time to make an avatar available for transfer "
+"when requested.<br>When someone sends a CTCP AVATAR request, KVIrc will "
+"reply with a CTCP AVATAR message containing the name and size of your avatar "
+"image.<br>A time-limited file offer is added for the image file to the "
+"requesting user.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:115
+msgid "Ignore requests if no avatar is set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:118
+msgid ""
+"This option will cause KVIrc to ignore channel CTCP AVATAR requests when you "
+"have no avatar set. This is usually a good practice since it helps in "
+"reducing traffic by not sending a reply that would be empty."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:39
+msgid "Use online notify list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:44
+msgid "Configuration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:45
+msgid "Show notifications in active window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:50
+msgid "Flash window when users are going online"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:55
+msgid "Popup notifier when users are going online"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:59
+msgid "Advanced configuration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:64
+msgid "Check USERHOST for online users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:69
+msgid "Use \"smart\" notify list manager"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:74
+msgid "Use the WATCH method if available"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:79
+msgid "Check interval (in seconds)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:85
+msgid "ISON delay (in seconds)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:91
+msgid "USERHOST delay (in seconds)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:96
+msgid ""
+"<p><b>Note:</b><br>The notify list is managed using the \"Registered Users\" "
+"settings.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:112
+msgid "Forcibly and completely disable the notifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:115
+msgid ""
+"This is an option for the impatient: it allows to forcibly and permanently "
+"disable the notifier window. Please note that if this option is activated "
+"then the notifier will NOT popup even if all the other options around "
+"specify to use it in response to particular events. Also note that this "
+"option will make all the /notifier.* commands fail silently."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:123
+msgid "Disable notifier window flashing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:124
+msgid "Disable notifier window fade effect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:39
+msgid "Default away message:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:41
+msgid "User input exits away mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:43
+msgid "Away Nickname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:44
+msgid "Change nickname on away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:47
+msgid "Use automatic nickname ([5 letters]AWAY)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:55
+#, c-format
+msgid "Custom nickname (%%nick%% means a current nick):"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/libkvioptions.cpp:199
+msgid "No such options page class name %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:47
+msgid "Use system URL handlers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:50
+msgid "<b>http://</b> handler command:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:51
+msgid "<b>https://</b> handler command:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:52
+msgid "<b>ftp://</b> handler command:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:53
+msgid "<b>mailto:</b> handler command:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:54
+msgid "<b>file://</b> handler command:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:55
+msgid "Unknown protocol handler command:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:61
+msgid "Use proxy"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:65
+msgid "Proxy"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:76
+msgid ""
+"<center>This is the list of available proxy servers.<br>Right-click on the "
+"list to add or remove proxies.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:90
+msgid "New Proxy"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:99
+msgid "Remove Proxy"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:111
+msgid "Proxy:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:131
+msgid "Protocol:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:336
+msgid "&New Proxy"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:337
+msgid "Re&move Proxy"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:71
+msgid "Pattern"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:72
+msgid "MIME Type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:87
+msgid "MIME type:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:92
+msgid "File pattern:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:97
+msgid "Magic bytes:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:102
+msgid "Save path:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:107
+msgid "Local open command:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:112
+msgid ""
+"<center>This field contains the command to execute to open a local file."
+"<br><tt>$0</tt> is used in place of the filename</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:116
+msgid "Remote open command:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:121
+msgid ""
+"<center>This field contains the command to execute when automatically "
+"opening a received file.<br><tt>$0</tt> is used in place of the filename</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:125
+msgid "Icon"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:134
+msgid "&New"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:138
+msgid "Re&move"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:184
+msgid "[Unknown Media Type]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:230
+msgid "New Media Type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:53
+msgid "Nickname Colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:56
+msgid "Channel owner:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:57
+msgid "Channel admin:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:58
+msgid "Op:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:59
+msgid "Half-op:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:60
+msgid "Voice:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:61
+msgid "User-op:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:62
+msgid "Away:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:66
+msgid "Use different color for own nick:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:81
+msgid "Draw nickname grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:83
+msgid "Grid color:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:90
+msgid "Grid type:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:94
+msgid "3D Grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:95
+msgid "3D Buttons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:96
+msgid "Plain Grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:97
+msgid "Dotted Grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:131
+msgid "Horizontal Alignment:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:135
+#, fuzzy
+msgid "Vertical Alignment:"
+msgstr "Неизвестна команда"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:231
+msgid "Show gender icons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:232
+msgid "Show user channel icons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:233
+msgid "Show user channel activity indicator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:234
+msgid "Hide users label"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:235
+msgid "Enable user tooltips"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:236
+msgid "Hide avatars"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:79
+msgid "Use flood protection (recommended)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:81
+msgid ""
+"<center>This option makes KVIrc only respond to a limited number of CTCP "
+"requests within a specified time interval, to prevent \"flooding\" CTCP "
+"messages.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:83
+msgid "Allow up to:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:84
+msgid " requests"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:86
+msgid ""
+"<center>Minimum value: <b>0 requests</b><br>Maximum value: <b>10000 "
+"requests</b></center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:89
+msgid "within:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:92
+msgid ""
+"<center>Minimum value: <b>1 sec</b><br>Maximum value: <b>3600 sec</b></"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:96
+msgid "Ignored Requests"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:97
+msgid "PING"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:98
+msgid "FINGER"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:99
+msgid "CLIENTINFO"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:100
+msgid "USERINFO"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:101
+msgid "VERSION"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:102
+msgid "SOURCE"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:103
+msgid "TIME"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:104
+msgid "PAGE"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:105
+msgid "AVATAR"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:106
+msgid "DCC/TDCC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:131
+msgid "General Preferences"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:134
+msgid "Theme Preferences"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:136
+msgid "KVIrc Preferences"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:139
+msgid ""
+"This dialog contains a set of KVIrc settings.<br> Use the icons on the left "
+"to navigate through the option pages. The text box in the bottom left corner "
+"is a small search engine. It will highlight the pages that contain options "
+"related to the search term you have entered."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:147
+msgid ""
+"Many settings have tooltips that can be shown by holding the cursor over "
+"their label for a few seconds."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:152
+msgid ""
+"When you have finished, click \"<b>OK</b>\" to accept your changes or "
+"\"<b>Cancel</b>\" to discard them. Clicking \"<b>Apply</b>\" will commit "
+"your changes without closing the window."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:217
+msgid ""
+"<p>This is the search tool for this options dialog.</p><p>You can enter a "
+"search term either in your native language or in english and press the "
+"button on the right. The pages that contain some options related to the "
+"search term will be highlighted and you will be able to quickly find them.</"
+"p><p>Try \"nickname\" for example.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:249
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:61
+msgid "Close this dialog, accepting all changes."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:255
+msgid "&Apply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:256
+msgid "Commit all changes immediately."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:69
+msgid "Close this dialog, discarding all changes."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:149
+msgid ""
+"This table contains the text icon associations.<br>KVirc will use them to "
+"display the CTRL+I escape sequences and eventually the emoticons."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:165
+msgid "Add"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:169
+msgid "Delete"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:191
+msgid "unnamed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:53
+msgid "Enable word highlighting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:55
+msgid "Words to highlight:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:57
+msgid "Word splitters:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:59
+msgid "Highlight messages containing my nickname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:61
+msgid ""
+"<center>If this option is enabled, KVIrc will highlight any user message "
+"containing your current nickname</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:63
+msgid "Flash the system taskbar entry on highlighted messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:65
+msgid ""
+"<center>If this option is enabled, KVIrc will (attempt to) flash the system "
+"taskbar entry when a highlighted message is printed and KVIrc is not the "
+"active window</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:67
+msgid "Popup the notifier window on highlighted messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:69
+msgid ""
+"<center>If this option is enabled, KVIrc will popup a little notifier window "
+"in the low right corner of your desktop when a highlighted message is "
+"printed and KVIrc is not the active window</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:91
+#, fuzzy
+msgid "Alert Restrictions"
+msgstr "Неуспешно създаване на сокет"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:92
+msgid "Restrict alert"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:94
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if a "
+"normal message is received in a channel.<br>Actions like joins, parts and "
+"mode changes will be ignored.<br> This is useful if you are in channels with "
+"a high rate of traffic and only want to be alerted for messages that are "
+"interesting to you.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:96
+msgid "Alert for highlighted words"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:98
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which contain a word from the highlighted words list above.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:100
+msgid "Alert for query messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:102
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which are shown in queries.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:107
+msgid "Use custom alert level"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:109
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if "
+"the specified alert level is reached.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:111
+msgid "Minimum alert level:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:114
+msgid ""
+"<center>This option sets the minimum alert level for the taskbar.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:213
+msgid "Output verbosity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:49
+msgid "Mute"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:50
+msgid "Quiet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:51
+msgid "Normal"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:52
+msgid "Verbose"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:53
+msgid "Paranoic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:59
+msgid "Show in active window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:60
+msgid "External messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:61
+msgid "External CTCP replies"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:62
+msgid "Whois replies"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:63
+msgid "ChanServ and NickServ notices"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:64
+msgid "Invite messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:65
+msgid "Server replies"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:66
+msgid "Server notices"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:67
+msgid "Broadcast and WALLOPS messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:70
+msgid "Show extended server information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:71
+msgid "Show server pings"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:72
+msgid "Show own parts in the console"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:73
+msgid "Show compact mode changes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:43
+msgid "Minimize on startup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:44
+msgid "Confirm quit with active connections"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:45
+msgid "Remember window properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:50
+msgid "Disable splash screen"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:54
+msgid "Enable visual effects"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:55
+msgid "Hide Channel window tool buttons by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:57
+msgid "Open Dialog Window For"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:58
+msgid "Preferences"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:59
+msgid "Registered Users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:149
+msgid "Servers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.cpp:40
+msgid ""
+"This section contains irc tools<br><p>like<b> away, lag and logging system. "
+"</b> </p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:39
+#, fuzzy
+msgid "On Disconnect"
+msgstr "Изтичане на време за връзка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:42
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:55
+msgid "Keep channels open"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:44
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after disconnect."
+"</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:47
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:60
+msgid "Keep queries open"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:49
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after disconnect.</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:52
+msgid "On Unexpected Disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:62
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:65
+msgid "Rejoin channels after reconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:67
+msgid ""
+"<center>This option will cause KVIrc to rejoin channels after a successful "
+"reconnect attempt.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:69
+msgid "Reopen queries after reconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to reopen query windows after a "
+"successful reconnect attempt.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:75
+msgid "Automatically reconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:77
+msgid ""
+"<center>This option will enable auto-reconnecting after an unexpected "
+"disconnect. An unexpected disconnect is the <b>termination</b> of a <b>fully "
+"connected IRC session</b> that was <b>not requested by the user</b> by the "
+"means of the QUIT message.<p><b>Warning:</b> If you use /RAW to send a QUIT "
+"message to the server, this option will not behave correctly, since does not "
+"detect the outgoing QUIT message and will attempt to reconnect after the "
+"server has closed the connection. For this reason, always use the /QUIT "
+"command to close your connections. This option may also behave incorrectly "
+"with bouncers that support detaching, in this case a solution could be to "
+"prepare an alias that sends the bouncer \"detach\" command immediately "
+"before the \"quit\" command.<br><tt>alias(bncdetach){ raw bouncer detach; "
+"quit; }</tt></p></center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:89
+msgid "Maximum attempts (0: unlimited):"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:94
+msgid "Delay between attempts:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:100
+msgid ""
+"<center>Minimum value: <b>0 sec</b><br>Maximum value: <b>86400 sec</b></"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:123
+msgid "Certificate"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:125
+msgid "Use SSL certificate (PEM format only)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:127
+msgid "Certificate location:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:130
+msgid "Certificate password:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:134
+msgid "Private Key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:135
+msgid "Use SSL private key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:137
+msgid "Private key location:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:140
+msgid "Private key password:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:146
+msgid "This executable has no SSL support."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:165
+msgid "Timeout Values"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:166
+msgid "Connect timeout:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:168
+msgid "Outgoing data queue flush timeout:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:170
+msgid "Limit outgoing traffic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:171
+msgid "Limit to 1 message every:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:173
+msgid " usec"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:175
+msgid ""
+"<center>Minimum value: <b>10000 usec</b><br>Maximum value: <b>10000000 usec</"
+"b></center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:179
+msgid "Network Interfaces"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:181
+msgid "Bind IPv4 connections to:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:185
+msgid "Bind IPv6 connections to:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:210
+msgid "Enable ident service (bad practice on UNIX!)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:216
+msgid "Output identd messages to:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:218
+msgid "Active window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:219
+msgid "Console"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:220
+msgid "Do not show any identd messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:237
+msgid "Enable ident service only while connecting to server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:240
+msgid "Ident username:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:243
+msgid "Service port:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:248
+msgid "IPv6 Settings"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:249
+msgid "Enable service for IPv6"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:258
+msgid "IP stack treats IPv4 as part of IPv6 namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:265
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications. If it is possible, install a real ident daemon.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:270
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications.<br>On UNIX, you may also need root privileges to bind to the "
+"auth port (113).<br>It is <b>highly recommended</b> that a <b>real</b> "
+"system-wide ident daemon be used instead, or none at all if ident is not "
+"required.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.cpp:39
+msgid ""
+"This section contains the general client options<br><p>like<b> sound, "
+"mediafiles, URL handler </b> etc... </p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:39
+msgid "Automatically Log"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:40
+msgid "Query windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:41
+msgid "Channel windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:42
+msgid "DCC Chat windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:43
+msgid "Console windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:45
+msgid "Gzip logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:47
+msgid "Strip colors in logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:48
+msgid "Auto flush logs every"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:49
+msgid " min"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:52
+msgid ""
+"<center>Save logs with the current interval<br>Set to 0 to disable this "
+"feature</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:49
+msgid "Minimize console after successful login"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:52
+msgid ""
+"<center>This option will cause KVIrc to minimize the console window after "
+"successfully logging into a server.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:55
+msgid "Show network name in console taskbar entry"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to show the network name as the console "
+"taskbar entry instead of the server name. This is nice to keep on unless "
+"your servers are not organized in networks or you often connect to two "
+"servers of the same network.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:75
+msgid "Force immediate quit"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:78
+msgid ""
+"<center>This option causes KVIrc to close the connection immediately after "
+"sending the QUIT message.<br>When this option is disabled, KVIrc will wait "
+"for the server to close the connection.<br>Note that if you use this, your "
+"QUIT message may be not displayed.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:84
+msgid "Prepend gender info to realname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:110
+msgid "On Channel Kick"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:112
+msgid "Rejoin channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:115
+msgid ""
+"<center>This option will cause KVIrc to attempt to rejoin a channel after "
+"being kicked.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:129
+msgid "Keep channel open"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:121
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"being kicked.<br>It might be a good idea to also enable the \"Rejoin channel"
+"\" option.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:127
+msgid "On Channel Part"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:132
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"leaving it.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:136
+msgid "Automatically join channel on invite"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:139
+msgid ""
+"<center>This option will cause KVIrc to automatically join a channel when an "
+"INVITE message for that channel is received.<br><b>Warning:</b> This may "
+"help spammers harass you. :)</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:144
+msgid "Always open channels as minimized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:148
+msgid ""
+"<center>This option causes newly created channel windows to be immediately "
+"minimized.<br>Enable this if you don't like channels popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:168
+msgid "Log joined channels history"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:170
+msgid "Default ban mask:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:188
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:202
+msgid "On Channel Join"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:189
+msgid "Do not send /WHO request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:190
+msgid "Do not request ban list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:191
+msgid "Do not request ban exception list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:192
+msgid "Do not request invite list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:194
+msgid "Do not update the away list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:197
+msgid ""
+"<center>KVIrc sends out a channel /WHO message every now and then to keep "
+"the channel away list in sync. Use this option to disable this feature (and "
+"to save your IRC bandwidth.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:203
+msgid "Echo channel topic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:204
+msgid "Show channel sync time"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:40
+msgid "Default text encoding:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:109
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:133
+msgid "Use Language Encoding"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:59
+msgid "Force language:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:65
+msgid "<b>Note:</b> You need to restart KVirc to apply a language changing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:68
+msgid "Automatic detection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:69
+msgid "en"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Unable to write language information to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:39
+msgid "Enable Anti-spam For"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:45
+msgid "Silent anti-spam (no warnings)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:46
+msgid "Words considered spam:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:51
+msgid "Use workaround for firewall"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:54
+msgid ""
+"<center>Enable this option if you can't accept incoming connections."
+"<br>KVIrc will try to use different methods to send and receive files."
+"<br>Please note that these methods may NOT work when communicating with a "
+"non-KVIrc client.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:73
+msgid "Network Properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:75
+msgid "Use user-defined address or network interface"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:79
+msgid ""
+"<center>Enable this option if you are on a multihost machine and want to "
+"force one of the available IP addresses to be used for outgoing DCCs."
+"<br>This is especially useful when you use IPv6 and IPv4 addresses.<br>You "
+"can force KVIrc to always choose the IPv4 interface.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:84
+msgid "Listen on address/interface:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:87
+msgid ""
+"<center>This is the IP address or name of the interface to use by default "
+"for outgoing DCC transfers.<br>On UNIX systems that support it, you can also "
+"specify IPv4 interface names (such as <b>ppp0</b>).<br>If you set it to "
+"<b>0.0.0.0</b>, KVIrc will try to use the first available IPv4 interface</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:94
+msgid "Use user-defined port range"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:97
+msgid ""
+"<center>Enable this option if you want specify a local port range for DCC.</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:102
+msgid "Lowest port:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:105
+msgid "Highest port:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:108
+msgid "Send a fixed address in requests"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:111
+msgid ""
+"<center>Enable this option if you want to always send a fake IP address in "
+"your DCC requests.<br>This might be useful if you're behind a router with a "
+"static address that does network address translation (NAT) and forwards all "
+"or a range of ports.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:115
+msgid "Send address/interface:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:119
+msgid ""
+"<center>This is the fixed address that will be sent with all DCC requests if "
+"you enable the option above.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:123
+msgid "Guess address from IRC server if unroutable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:128
+msgid ""
+"<center>You can enable this option if you are behind a router that forwards "
+"all or a range of ports.<br>KVIrc will try to guess the IP address to use "
+"for DCC by looking up the local hostname as seen by the IRC server you're "
+"connected to.<br>This method is an exclusive alternative to the \"fixed "
+"address\" above.<br>It might guess the correct address automatically if "
+"certain conditions are met (e.g. the IRC server does not mask hostnames).</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:134
+msgid "Use \"broken bouncer hack\" to detect address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:137
+msgid ""
+"<center>When you're behind a dialup router and also tunneling through a "
+"psyBNC bouncer, you can use a bug in the bouncer to force KVIrc to bind the "
+"DCC connections to the dialup router's address.<br>It's an ugly hack - use "
+"it only if nothing else works.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:144
+msgid "Notify failed DCC handshakes to the remote end"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:147
+msgid ""
+"<center>If you enable this option, when a DCC request from a remote user "
+"can't be satisfied KVIrc will notify him by a CTCP ERRMSG. This is a nice "
+"feature so it is a good idea to leave it on unless for some reason you have "
+"deactivated the antiflood system: in this case turning off this option might "
+"help if you often get attacked by CTCP floods.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:154
+msgid "Maximum number of DCC sessions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:156
+msgid ""
+"<center>This is the maximum number of concurrent DCC sessions and it "
+"includes all the DCC types (send,chat,recv...). KVIrc will refuse the "
+"requests when this limit is reached.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:161
+msgid "DCC socket timeout:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:164
+msgid ""
+"<center>This is the amount of time that KVIrc will wait for a response "
+"before assuming that a DCC has failed because the remote client was unable "
+"to connect to our listening socket.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:198
+msgid "On Incoming File"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:371
+msgid "Automatically accept"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:200
+msgid "Open transfer window as minimized when auto-accepted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:201
+msgid "Automatically resume when auto-accepted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:203
+#, fuzzy
+msgid "Save Location"
+msgstr "Изтичане на време за връзка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:204
+msgid "Download folder:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:205
+msgid "Sort saved files by nicknames (create subfolders)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:206
+msgid "Guess save path from media type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:209
+msgid "On Download Completion"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:210
+msgid "Notify completion in console"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:211
+msgid "Notify completion in notifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:212
+msgid "Automatically clear transfer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:215
+msgid ""
+"<center>This option will cause succesfully terminated transfers to be "
+"automatically removed from the transfer window.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:220
+msgid "Always open transfer window as minimized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:238
+msgid "Bug Compatibility"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:239
+msgid "Send ACK for byte 0"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:242
+msgid ""
+"<center>This option causes KVIrc to send a zero-byte acknowledge to kick-"
+"start the DCC transfer with some buggy IRC clients.<br>Use it only if your "
+"DCC transfers stall just after establishing a connection without sending any "
+"data.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:247
+msgid "Accept broken RESUME (mIRC file.ext)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:250
+msgid ""
+"<center>This option causes KVIrc to accept RESUME requests with invalid "
+"filenames.<br>Use it if KVIrc fails to accept RESUME requests from other "
+"clients (e.g. some versions of mIRC).</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:254
+msgid "Replace spaces with underscores in outgoing filenames"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:257
+msgid ""
+"<center>This option causes KVIrc to replace spaces with underscores in "
+"filenames for all the outgoing file transfers. This will fix filename "
+"handling with some buggy clients (e.g. some versions of mIRC)."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:262
+msgid "Limits"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:265
+msgid "Limit upload bandwidth to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:273
+msgid "bytes/sec"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:271
+msgid "Limit download bandwidth to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:277
+msgid "Maximum number of DCC transfers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:279
+msgid ""
+"<center>This is the maximum number of concurrent DCC transfers. KVIrc will "
+"refuse the requests when this limit is reached.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:283
+msgid "Tweaks"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:285
+msgid "Use fast send (send ahead)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:288
+msgid ""
+"<center>The \"send ahead\" DCC method allows data to be sent faster by "
+"breaking some of the rules of the original DCC SEND protocol specification."
+"<br>Most clients can handle this kind of optimisation so disable it only if "
+"you have problems.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:295
+msgid "Force idle step"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:298
+msgid ""
+"<center>Enable this option when the dcc file transfers tend to block your "
+"computer by consuming too much CPU time. When this option is enabled the "
+"idle interval below will be forcibly inserted between each sent/received "
+"data packet.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:310
+msgid ""
+"<center>This parameter controls the average delay between two packets sent "
+"or received.<br>A smaller interval will cause you to send data faster but "
+"will also add load to your CPU, disk and network interface.<br>Reasonable "
+"values are from 5 to 50 milliseconds.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:316
+msgid "Packet size:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:320
+msgid ""
+"<center>This parameter controls the packet size used for DCC SEND.<br>With "
+"bigger packets you will be probably send data faster, but you will also "
+"saturate your bandwidth and in some cases cause more disk activity."
+"<br>Reasonable values are from 512 to 4096 bytes.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:349
+msgid "On Chat Request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:351
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:373
+msgid "Open minimized when auto-accepted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:353
+msgid "Always open as minimized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:369
+msgid "Open all minimized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:370
+msgid "On Voice Request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:376
+msgid "Force half-duplex mode on sound device"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:377
+msgid "Volume slider controls PCM, not Master"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:379
+msgid "Sound device:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:380
+msgid "Mixer device:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:382
+msgid "Pre-buffer size:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:38
+msgid "Enable Ignore For"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:39
+msgid "Private/channel messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:40
+msgid "Private/channel notices"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:44
+msgid "Use verbose ignore (show messages in console)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:46
+msgid "Sound System"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:66
+msgid "This allows you to select the sound system to be used with KVIrc."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:72
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:88
+msgid "Auto-detect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:91
+msgid "Test"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:79
+msgid "Media Player"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:81
+msgid ""
+"This allows you to select the preferred media player to be used with the "
+"mediaplayer.* module commands and functions."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:102
+msgid "ID3 tags' encoding"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:104
+msgid "This allows you to select encoding of mp3 tags."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:125
+msgid "Winamp messages ecoding"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:127
+msgid "This allows you to select encoding of winamp messages."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:290
+msgid "New Query opened"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:293
+msgid "New message in inactive query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:296
+msgid "Highlighted message in inactive window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:299
+msgid "Me have been kicked"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:39
+msgid "Selection background color"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:40
+msgid "Selection foreground color"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:41
+msgid "Control char color"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:42
+msgid "Cursor color"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:141
+msgid "Warp cursor at the end of line when browsing history"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:142
+msgid "Disable the input history window and it's log memory."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:143
+msgid "Hide input toolbuttons by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:144
+msgid "Nick completion"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:145
+msgid "Use bash-like nick completion"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:146
+msgid "Nick completion postfix string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:147
+msgid "Use the completion postfix string for the first word only"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:148
+msgid "Commandline in user-friendly mode by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:81
+msgid "Show message icons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:82
+msgid "Draw some emoticons (smileys) as pictures"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:83
+msgid "Don't show colors in user messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:88
+msgid "Nicknames"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:90
+msgid "\"Smart\" nickname colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:91
+msgid "Use same colors as in the userlist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:93
+msgid "Show nicknames in bold"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:94
+msgid "Show user and host"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:95
+msgid "Show channel mode prefix"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:96
+msgid "User-defined prefix and postfix"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:98
+msgid "[PREFIX]nickname[!user@host][POSTFIX] message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:112
+msgid "Prefix:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:117
+msgid "Postfix:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:131
+msgid "Show timestamp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:134
+msgid "Use UTC time for timestamp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:141
+msgid "Use special color for timestamps"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:147
+msgid "Timestamp format:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:320
+msgid "Transparent"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:401
+msgid "Message Type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:417
+msgid "Background:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:426
+msgid "Foreground:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:434
+msgid "Alert level:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:454
+msgid "Log this"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:458
+msgid "Load From..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:460
+msgid "Save As..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:589
+msgid "Choose a Filename - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:646
+msgid "Choose a Filename - KVIrc "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:40
+msgid "Enable lag meter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:42
+msgid ""
+"<center>This enables the lag meter engine, which checks at regular intervals "
+"how much lag (latency) the server has.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:45
+msgid "Lag meter heartbeat:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:49
+msgid ""
+"<center>This option allows you to set the lag meter heartbeat interval."
+"<br>The lower the heartbeat interval the higher will be the accuracy of the "
+"lag check but also higher cpu usage and data traffic to the server."
+"<br>Please note that this is NOT the interval between pings sent to the "
+"server: the pings (if any) will be sent really less often. 5000 is a "
+"reasonable value.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:58
+msgid "Trigger event if lag exceeds:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:61
+msgid ""
+"<center>This option controls the threshold for the OnLagAlarmTimeUp and "
+"OnLagAlarmTimeDown events. When the lag goes above the threshold "
+"OnLagAlarmTimeUp will be triggered and when the lag falls back below the "
+"threshold then OnLagAlarmTimeDown will be triggered</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:68
+msgid "Show lag in IRC context display"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:70
+msgid ""
+"<center>This makes the IRC context display applet show the current lag after "
+"the user's nickname (in seconds)</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.h:28
+msgid "Away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.h:28
+msgid "CTCP"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:28
+msgid "DCC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:59
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:41
+msgid "Advanced"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:72
+msgid "File Transfer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:113
+msgid "Chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:126
+msgid "Voice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:32
+msgid "IRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:73
+#, fuzzy
+msgid "Channel"
+msgstr "Неизвестен оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:28
+msgid "Lag"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:30
+msgid "time,ping"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:37
+msgid "authentication,identify"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:31
+msgid "Language"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:34
+msgid "language,encoding,charset,codepage"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:28
+msgid "Contacts"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:30
+msgid "notify,buddy,buddies,friends"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:42
+msgid "Notifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:43
+msgid "popup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:37
+msgid "Text"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:38
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:49
+msgid "theme,colors,output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:52
+msgid "Message Style"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:56
+msgid "theme,privmsg,output,format"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:67
+msgid "Timestamp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:71
+msgid "time,timestamp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:88
+msgid "Message Colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:169
+msgid "theme,colors,messages,output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:168
+msgid "Color Set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.h:32
+msgid "Avatars"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:32
+msgid "Sound"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:48
+msgid "sound,xmms,audio,play,amarok"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:81
+msgid "Sounds"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:83
+msgid "sound,events"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:28
+msgid "URL handlers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:31
+msgid "url,programs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:29
+msgid "Tray icon"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:31
+msgid "tray,dockwidget"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.h:33
+msgid "Tools"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.h:28
+msgid "General options"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.h:31
+#, fuzzy
+msgid "Interface"
+msgstr "Вътрешна грешка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:29
+msgid "Text icons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:31
+msgid "smileys,emoticons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:34
+msgid "Output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:48
+msgid "Look"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:101
+msgid "Features"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:46
+msgid "Media Types"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:48
+msgid "file,audio,video,programs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:114
+msgid "theme"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:47
+msgid "Transparency"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:48
+msgid "theme,background"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:74
+#, fuzzy
+msgid "Window Captions"
+msgstr "Неизвестен оператор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:88
+msgid "theme,mdi"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:87
+msgid "Workspace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:100
+msgid "ToolBar Applets"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:101
+msgid "theme,toolbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:150
+#, fuzzy
+msgid "connection"
+msgstr "Изтичане на време за връзка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:33
+#, fuzzy
+msgid "Protection"
+msgstr "Изтичане на време за връзка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:36
+msgid "ctcp,flood"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:144
+msgid "Avatar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.h:28
+msgid "Anti-spam"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:32
+msgid "Verbosity And Output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:34
+msgid "debug"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:28
+msgid "Logging"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:29
+msgid "save,output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:50
+msgid "Input"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:33
+msgid "theme,colors,text"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:33
+msgid "Taskbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:47
+msgid "Tree Taskbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:65
+msgid "Foreground"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:111
+msgid "Classic Taskbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:52
+msgid "Proxy Hosts"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:54
+#, fuzzy
+msgid "connection,servers"
+msgstr "Връзката е отхвърлена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:28
+msgid "Alert/Highlight"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:42
+msgid "Highlight"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:55
+msgid "Taskbar Alert"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.h:29
+msgid "Flood Protection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:30
+msgid "Userlist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:31
+msgid "theme,userlist,channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:45
+msgid "theme,userlist,channel,background"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:66
+msgid "theme,userlist,channel,colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:81
+msgid "Nickname Grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:82
+msgid "theme,userlist,channel,grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:102
+msgid "userlist,channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:29
+msgid "Labels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:30
+msgid "theme,topic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:28
+msgid "Scripting Engine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:29
+msgid "scripting,kvs,debug"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:55
+msgid "SSL"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:72
+msgid "Socket"
+msgstr "Сокет"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:87
+msgid "Ident Service"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:29
+msgid "Ignore"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:31
+#, fuzzy
+msgid "protection"
+msgstr "Изтичане на време за връзка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:28
+msgid "Query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:30
+msgid "chat"
+msgstr ""
+
+#, fuzzy
+#~ msgid "Choose save directory"
+#~ msgstr "Директория"
+
+#, fuzzy
+#~ msgid "You must select save directory"
+#~ msgstr "Директория"
+
+#, fuzzy
+#~ msgid "Unable to create theme files directory."
+#~ msgstr "Създаването на сокет пропадна"
+
+#, fuzzy
+#~ msgid "Unable to create theme utils directory."
+#~ msgstr "Създаването на сокет пропадна"
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for reading."
+#~ msgstr "Не може да отвори файл за четене"
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for writing."
+#~ msgstr "Не може да отвори файл за запис"
+
+#, fuzzy
+#~ msgid "You must select file"
+#~ msgstr "Няма такъв файл"
+
+#, fuzzy
+#~ msgid "Missing Alias Name"
+#~ msgstr "Липсва име на клас на обект"
+
+#, fuzzy
+#~ msgid "Missing Namespace Name"
+#~ msgstr "Липсва име на клас на обект"
+
+#, fuzzy
+#~ msgid "Window %Q not found"
+#~ msgstr "Хоста не е намерен"
+
+#, fuzzy
+#~ msgid "Can't log to file %Q"
+#~ msgstr "Не може да отвори файл за четене"
+
+#, fuzzy
+#~ msgid "Can't add a null object"
+#~ msgstr "Не може да изпрати файл с нулева големина"
+
+#, fuzzy
+#~ msgid "Not a widget object"
+#~ msgstr "Не може да изпрати файл с нулева големина"
+
+#, fuzzy
+#~ msgid "Can't find the tab "
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Unknown position 'Q%'"
+#~ msgstr "Неизвестна функция"
+
+#~ msgid "Another connection in progress"
+#~ msgstr "Друга връзка е в ход"
+
+#~ msgid "Socket creation failed"
+#~ msgstr "Неуспешно създаване на сокет"
+
+#~ msgid "Failed to create the socket"
+#~ msgstr "Създаването на сокет пропадна"
+
+#, fuzzy
+#~ msgid "Can't add a non - popupmenu object"
+#~ msgstr "Не може да изпрати файл с нулева големина"
+
+#, fuzzy
+#~ msgid "Unknown text position '%Q'"
+#~ msgstr "Неизвестна функция"
+
+#, fuzzy
+#~ msgid "No such open mode: '%Q'"
+#~ msgstr "Няма такъв обект"
+
+#, fuzzy
+#~ msgid "Unknown orientation"
+#~ msgstr "Неизвестна функция"
+
+#, fuzzy
+#~ msgid "Invalid mode '%Q'"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Unknown mode "
+#~ msgstr "Неизвестна команда"
+
+#, fuzzy
+#~ msgid "Failed to find the widget to wrap"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Can't fill non-widget object"
+#~ msgstr "Не може да изпрати файл с нулева големина"
+
+#, fuzzy
+#~ msgid "Invalid x offset parameter (%s)"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Invalid y offset parameter (%s)"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Can't find the specified file '%s'."
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "I can't find the specified file %Q."
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "No such line number"
+#~ msgstr "Няма такъв файл"
+
+#, fuzzy
+#~ msgid "Unknown word wrap '%Q'"
+#~ msgstr "Неизвестен оператор"
+
+#, fuzzy
+#~ msgid "Unknown text format '%Q'"
+#~ msgstr "Неизвестна функция"
+
+#, fuzzy
+#~ msgid " I can't find the specified file '%Q'."
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid " I cannot read the file %Q'."
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Unknown alignment '%Q'"
+#~ msgstr "Неизвестна команда"
+
+#, fuzzy
+#~ msgid "Unknown dock area '%Q'"
+#~ msgstr "Неизвестен оператор"
+
+#, fuzzy
+#~ msgid "Processing aborted"
+#~ msgstr "Изтекло време на операция"
+
+#, fuzzy
+#~ msgid "XML support not available in the Qt library"
+#~ msgstr "Възможността не е на разположение"
+
+#, fuzzy
+#~ msgid "Invalid size parameter (%s)"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Can't find the widget object assuming 0"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Parent must be a widget object"
+#~ msgstr "Не може да изпрати файл с нулева големина"
+
+#, fuzzy
+#~ msgid "Invalid parameters"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Invalid Parameters"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Unknown style '%Q'"
+#~ msgstr "Неизвестен оператор"
+
+#, fuzzy
+#~ msgid "Unknown alignment: '%Q'"
+#~ msgstr "Неизвестна команда"
+
+#, fuzzy
+#~ msgid "Unknown frame style"
+#~ msgstr "Неизвестен оператор"
+
+#, fuzzy
+#~ msgid "Unknown echo mode %Q"
+#~ msgstr "Неизвестна команда"
+
+#, fuzzy
+#~ msgid "Doesn't a widget object"
+#~ msgstr "Не може да изпрати файл с нулева големина"
+
+#, fuzzy
+#~ msgid "Unknown alignment"
+#~ msgstr "Неизвестна команда"
+
+#, fuzzy
+#~ msgid "Unknown orientation: "
+#~ msgstr "Неизвестна функция"
+
+#, fuzzy
+#~ msgid "Not Enough Parameters"
+#~ msgstr "Няма достатъчно параметри"
+
+#, fuzzy
+#~ msgid "Unknown tickmark '%Q'"
+#~ msgstr "Неизвестна команда"
+
+#, fuzzy
+#~ msgid "Unknown orientation '%Q'"
+#~ msgstr "Неизвестна функция"
+
+#, fuzzy
+#~ msgid "Unknown "
+#~ msgstr "Неизвестна грешка"
+
+#, fuzzy
+#~ msgid "Invalid DCOP parameter syntax"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Unsupported DCOP parameter type %s"
+#~ msgstr "Неподдържан протокол %s"
+
+#~ msgid "Unknown error"
+#~ msgstr "Неизвестна грешка"
+
+#, fuzzy
+#~ msgid "Can't find the window with id '%Q'"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "No action name/index specified"
+#~ msgstr "Няма такъв файл"
+
+#, fuzzy
+#~ msgid "Invalid IRC context id '%Q'"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Failed to allocate the specified crypt engine"
+#~ msgstr "Създаването на сокет пропадна"
+
+#, fuzzy
+#~ msgid "This executable has been compiled without crypt support"
+#~ msgstr "Така конфигурираното приложение не поддъжа IPV6"
+
+#, fuzzy
+#~ msgid "User not found (%Q)"
+#~ msgstr "Хоста не е намерен"
+
+#, fuzzy
+#~ msgid "User %Q not found"
+#~ msgstr "Хоста не е намерен"
+
+#, fuzzy
+#~ msgid "Mask %Q not found"
+#~ msgstr "Хоста не е намерен"
+
+#, fuzzy
+#~ msgid "Invalid ToolBar Label"
+#~ msgstr "Неправилен порт"
+
+#, fuzzy
+#~ msgid "Needs IRC Connection"
+#~ msgstr "Изтичане на време за връзка"
+
+#, fuzzy
+#~ msgid "New Action"
+#~ msgstr "Директория"
+
+#, fuzzy
+#~ msgid "Script registration failed"
+#~ msgstr "Неуспешно създаване на сокет"
+
+#, fuzzy
+#~ msgid "Failed to rename %Q to %Q"
+#~ msgstr "Създаването на сокет пропадна"
+
+#, fuzzy
+#~ msgid "Failed to make the directory %Q"
+#~ msgstr "Създаването на сокет пропадна"
+
+#, fuzzy
+#~ msgid "Failed to remove the file %Q"
+#~ msgstr "Създаването на сокет пропадна"
+
+#, fuzzy
+#~ msgid "Failed to remove the directory %Q"
+#~ msgstr "Създаването на сокет пропадна"
+
+#, fuzzy
+#~ msgid "Can't open the file \"%Q\" for reading"
+#~ msgstr "Не може да отвори файл за четене"
+
+#, fuzzy
+#~ msgid "Can't open the file \"%Q\" for writing"
+#~ msgstr "Не може да отвори файл \"%s\" за запис"
+
+#, fuzzy
+#~ msgid "%cListing Qt Properties for widget object %s (%s)"
+#~ msgstr "Не може да определи исканият адрес"
+
+#~ msgid "Not enough parameters"
+#~ msgstr "Няма достатъчно параметри"
+
+#, fuzzy
+#~ msgid "missing parameter"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Invalid parameter (%s)"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Pixmap not found"
+#~ msgstr "Хоста не е намерен"
+
+#, fuzzy
+#~ msgid "Unsupported QT property (%s)"
+#~ msgstr "Неподдържан протокол %s"
+
+#, fuzzy
+#~ msgid "Missing parameters"
+#~ msgstr "Липсва име на променлива"
+
+#, fuzzy
+#~ msgid "You are not connected to a server"
+#~ msgstr "Сокета не е свързан"
+
+#, fuzzy
+#~ msgid ""
+#~ "Another connection is already in progress in the selected IRC context"
+#~ msgstr "Друга връзка е в ход"
+
+#, fuzzy
+#~ msgid "Invalid index specified: ignored"
+#~ msgstr "Неправилен порт"
+
+#, fuzzy
+#~ msgid "Invalid IRC url (%Q)"
+#~ msgstr "Неправилен параметър"
+
+#~ msgid "Division by zero"
+#~ msgstr "Делене на нула"
+
+#, fuzzy
+#~ msgid "Missing class name"
+#~ msgstr "Липсва име на клас на обект"
+
+#, fuzzy
+#~ msgid "Can't find the icon '%Q'"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "No such event (%Q)"
+#~ msgstr "Няма такъв обект"
+
+#, fuzzy
+#~ msgid "Listing Qt properties for object named \"%Q\" of KVS class %Q"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Can't find the requested image"
+#~ msgstr "Не може да определи исканият адрес"
+
+#~ msgid "Unknown operator"
+#~ msgstr "Неизвестен оператор"
+
+#, fuzzy
+#~ msgid "Invalid pitch value: using default"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Invalid duration value: using default"
+#~ msgstr "Грешен прокси адрес"
+
+#, fuzzy
+#~ msgid "Can't delete an inexisting object"
+#~ msgstr "Не може да изпрати файл с нулева големина"
+
+#, fuzzy
+#~ msgid "Invalid data type for parameter \"%s\""
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Unexpected end of buffer in class definition"
+#~ msgstr "Неочавакван край на команда"
+
+#, fuzzy
+#~ msgid "Attempting %Q to %Q (%Q) on port %u"
+#~ msgstr "Свързване с компютър %s на порт %u"
+
+#, fuzzy
+#~ msgid "Can't find the proxy IP address: %Q"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Can't find the server IP address: %Q"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Abort Connection"
+#~ msgstr "Изтичане на време за връзка"
+
+#, fuzzy
+#~ msgid "Connect To"
+#~ msgstr "Изтичане на време за връзка"
+
+#, fuzzy
+#~ msgid "Server error"
+#~ msgstr "Вътрешна грешка"
+
+#, fuzzy
+#~ msgid "Failed to start the connection: %Q"
+#~ msgstr "Създаването на сокет пропадна"
+
+#, fuzzy
+#~ msgid "Contacting %Q %s (%s) on port %u"
+#~ msgstr "Свързване с компютър %s на порт %u"
+
+#, fuzzy
+#~ msgid "History"
+#~ msgstr "Директория"
+
+#, fuzzy
+#~ msgid "Invalid image"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Failed to load the selected image"
+#~ msgstr "Създаването на сокет пропадна"
+
+#~ msgid "Looking up host %Q..."
+#~ msgstr "Търсене на хост %Q"
+
+#, fuzzy
+#~ msgid "Lag measure not available yet"
+#~ msgstr "Възможността не е на разположение"
+
+#, fuzzy
+#~ msgid "Show total connection time"
+#~ msgstr "Изтичане на време за връзка"
+
+#, fuzzy
+#~ msgid "Connection Timer"
+#~ msgstr "Изтичане на време за връзка"
+
+#~ msgid "Success"
+#~ msgstr "Успешно"
+
+#~ msgid "Unknown command"
+#~ msgstr "Неизвестна команда"
+
+#~ msgid "Missing closing brace"
+#~ msgstr "Липсва затваряща скоба"
+
+#~ msgid "Unexpected end of command in string"
+#~ msgstr "Неочавакван край на команда"
+
+#~ msgid "Unknown function"
+#~ msgstr "Неизвестна функция"
+
+#~ msgid "Missing variable name"
+#~ msgstr "Липсва име на променлива"
+
+#~ msgid "Variable or identifier expected"
+#~ msgstr "Очакване на променлива или идентификатор"
+
+#~ msgid "Left operand is not a number"
+#~ msgstr "Левия операнд не е число"
+
+#~ msgid "Right operand is not a number"
+#~ msgstr "Десния операнд не е число"
+
+#~ msgid "Unterminated expression (missing ')' ?)"
+#~ msgstr "Незавършен израз (липсва ')'?)"
+
+#~ msgid "Unexpected character"
+#~ msgstr "Очаква знак"
+
+#~ msgid "No host to resolve"
+#~ msgstr "Няма сървър за връзка"
+
+#~ msgid "(DNS Internal) Unsupported address family"
+#~ msgstr "(Вътрешен DNS) Неподдържана фамилия адреси"
+
+#~ msgid "Valid name but the host has no IP address"
+#~ msgstr "Валидно име но машината няма IPадрес"
+
+#~ msgid "Unrecoverable nameserver error (crashed ?)"
+#~ msgstr "Невъзстановена грешка на сървъра на имена (срив?)"
+
+#~ msgid "Dns temporaneous fault (try again)"
+#~ msgstr "DNS временно не работи (опитване отново)"
+
+#~ msgid "(DNS Internal) Bad flags"
+#~ msgstr "(Вътрешен DNS) Лоши флагове"
+
+#~ msgid "(DNS Internal) Out of memory"
+#~ msgstr "(Вътрешен DNS) Извън паметта"
+
+#~ msgid "(DNS Internal) Service not supported"
+#~ msgstr "(Вътрешен DNS) Услугата не се поддържа"
+
+#~ msgid "Unknown node (host not found)"
+#~ msgstr "Неизвестен възел (машината не е намерена)"
+
+#~ msgid "(DNS Internal) Unsupported socket type"
+#~ msgstr "(Вътрешен DNS) Неподдържан сокет вид"
+
+#~ msgid "Dns query failed"
+#~ msgstr "DNS заявката пропадна"
+
+#~ msgid "This KVIrc executable has no IPV6 support"
+#~ msgstr "Така конфигурираното приложение не поддъжа IPV6"
+
+#~ msgid "Host not found"
+#~ msgstr "Хоста не е намерен"
+
+#~ msgid "Invalid IP address"
+#~ msgstr "Неправилен IP адрес"
+
+#~ msgid "Failed to put the socket in non blocking mode"
+#~ msgstr "Неуспех при поставянето на сокета в неблокиращ режим"
+
+#~ msgid "Bad file descriptor"
+#~ msgstr "Лош дескриптор на файл"
+
+#~ msgid "Out of address space"
+#~ msgstr "Извън адресното пространство"
+
+#~ msgid "Connection timed out"
+#~ msgstr "Изтичане на време за връзка"
+
+#~ msgid "Network is unreachable"
+#~ msgstr "Мрежата е недостъпна"
+
+#~ msgid "Broken pipe"
+#~ msgstr "Разрушен канал"
+
+#~ msgid "Invalid proxy address"
+#~ msgstr "Грешен прокси адрес"
+
+#~ msgid "Remote end has closed the connection"
+#~ msgstr "Отдалечената страна прекъсна връзката"
+
+#~ msgid "Error in loading module"
+#~ msgstr "Грешка при зареждане на модула"
+
+#~ msgid "No such module command"
+#~ msgstr "Няма такава команда на модул"
+
+#~ msgid "No such module function"
+#~ msgstr "Няма таква функция на модул"
+
+#~ msgid "Left operand is not a dictionary reference"
+#~ msgstr "Левия операнд не се отнася към речника"
+
+#~ msgid "Right operand is not a dictionary reference"
+#~ msgstr "Десния операнд не се отнася към речника"
+
+#~ msgid "Missing object class name"
+#~ msgstr "Липсва име на клас на обект"
+
+#~ msgid "No such object class"
+#~ msgstr "Никакъв такъв клас на обект"
+
+#~ msgid "No such object"
+#~ msgstr "Няма такъв обект"
+
+#~ msgid "No such object function"
+#~ msgstr "Няма таква функция на обект"
+
+#~ msgid "Invalid left operand"
+#~ msgstr "Левия операнд е грешен"
+
+#~ msgid "Integer parameter expected"
+#~ msgstr "Очкване на цял параметър"
+
+#~ msgid "Invalid parameter"
+#~ msgstr "Неправилен параметър"
+
+#~ msgid "No such file"
+#~ msgstr "Няма такъв файл"
+
+#~ msgid "Open parenthesis expected"
+#~ msgstr "Очанване на отваряща кръгла скоба"
+
+#~ msgid "Open brace expected"
+#~ msgstr "Очанване на отваряща фигурна скоба"
+
+#~ msgid "The SOCKSV4 protocol lacks IpV6 support"
+#~ msgstr "В протокола SOCKSV4 липсва поддръжка на IpV6"
+
+#~ msgid "Unrecognized proxy reply"
+#~ msgstr "Непознат отговор от прокси"
+
+#~ msgid "Proxy response: auth failed: access denied"
+#~ msgstr "Отговор на прокси: удостоверяването пропадна: достъпът отказан"
+
+#~ msgid "Proxy response: No acceptable auth method: request rejected"
+#~ msgstr ""
+#~ "Отговор на прокси: Неприемлив метод на удостоверяване: заявката е "
+#~ "отхвърлена"
+
+#~ msgid "Proxy response: request failed"
+#~ msgstr "Отговор на прокси: искането се провали"
+
+#~ msgid "Proxy response: ident failed"
+#~ msgstr "Отговор на прокси: идентификацията пропадна"
+
+#~ msgid "Proxy response: ident not matching"
+#~ msgstr "Отговор на прокси: идентификацията не съответства"
+
+#~ msgid "Proxy response: general SOCKS failure"
+#~ msgstr "Отговор на прокси: общ провал на SOCKS"
+
+#~ msgid "Proxy response: connection not allowed"
+#~ msgstr "Отговор на прокси: връзката не е позволена"
+
+#~ msgid "Proxy response: network unreachable"
+#~ msgstr "Отговор на прокси: мрежата е недостъпна"
+
+#~ msgid "Proxy response: host unreachable"
+#~ msgstr "Отговор на прокси: компютъра е недостъпен"
+
+#~ msgid "Proxy response: connection refused"
+#~ msgstr "Отговор на прокси: връзката е отказана"
+
+#~ msgid "Proxy response: TTL expired"
+#~ msgstr "Отговор на прокси: изтекло TTL"
+
+#~ msgid "Proxy response: command not supported"
+#~ msgstr "Отговор на прокси: командата не се поддържа"
+
+#~ msgid "Proxy response: address type not supported"
+#~ msgstr "Отговор на прокси: вида на адреса не се поддържа"
+
+#~ msgid "Proxy response: invalid address"
+#~ msgstr "Отговор на прокси: неправилен адрес"
+
+#~ msgid "Invalid port number"
+#~ msgstr "Неправилен порт"
+
+#~ msgid "Socket not connected"
+#~ msgstr "Сокета не е свързан"
+
+#~ msgid "Unsupported image format"
+#~ msgstr "Неподдържан формат на картинки"
+
+#~ msgid "Can't open file for appending"
+#~ msgstr "Не може да отвори файл за прикрепяне"
+
+#~ msgid "Can't open file for writing"
+#~ msgstr "Не може да отвори файл за запис"
+
+#~ msgid "File I/O error"
+#~ msgstr "Входно/изходна грешка на файл"
+
+#~ msgid "Acknowledge error"
+#~ msgstr "Потвърдете грешка"
+
+#~ msgid "Can't open file for reading"
+#~ msgstr "Не може да отвори файл за четене"
+
+#~ msgid "Can't send a zero-size file"
+#~ msgstr "Не може да изпрати файл с нулева големина"
+
+#~ msgid "UNUSED"
+#~ msgstr "НЕИЗПОЛЗВАН"
+
+#~ msgid "Feature not available"
+#~ msgstr "Възможността не е на разположение"
+
+#~ msgid "Unexpected characters in array index"
+#~ msgstr "Очакване на символ в списъка"
+
+#~ msgid "Unexpected end in expression"
+#~ msgstr "Очакване на край на израза"
+
+#~ msgid "Unexpected end in array index"
+#~ msgstr "Очакване на край на списъка"
+
+#~ msgid "Connection thru HTTP proxy failed"
+#~ msgstr "Връзката през HTTP прокси пропадна"
+
+#~ msgid "Access denied"
+#~ msgstr "Достъпът е отказан"
+
+#~ msgid "Address already in use"
+#~ msgstr "Адресът вече се използва"
+
+#~ msgid "Can't assign the requested address"
+#~ msgstr "Не може да определи исканият адрес"
+
+#~ msgid "Connection reset by peer"
+#~ msgstr "Връзката е прекъсната "
+
+#~ msgid "Host unreachable (no route to host)"
+#~ msgstr "Компютъра е недостъпен (няма път до хоста)"
+
+#~ msgid "Variable expected"
+#~ msgstr "Очаване на променлива"
+
+#~ msgid "Slash (/) character expected"
+#~ msgstr "Очакване на наклонена черта (/)"
+
+#~ msgid "Unknown string manipulation operation"
+#~ msgstr "Неизвестна операция за обработка на стринг"
+
+#, fuzzy
+#~ msgid "Operation aborted"
+#~ msgstr "Изтекло време на операция"
+
+#~ msgid "Unexpected token"
+#~ msgstr "Неочакван знак"
+
+#, fuzzy
+#~ msgid "Parent Directory"
+#~ msgstr "Директория"
+
+#, fuzzy
+#~ msgid "New Directory"
+#~ msgstr "Директория"
+
+#, fuzzy
+#~ msgid "Directories First"
+#~ msgstr "Директория"
+
+#, fuzzy
+#~ msgid "New Directory..."
+#~ msgstr "Директория"
+
+#~ msgid "Directory"
+#~ msgstr "Директория"
+
+#~ msgid "Block device"
+#~ msgstr "Блоково устройство"
+
+#~ msgid "Char device"
+#~ msgstr "Знаково устройство"
+
+#~ msgid "Aborted"
+#~ msgstr "Прекъснат"
+
+#~ msgid "No request"
+#~ msgstr "Няма искане"
+
+#~ msgid "No filename specified for the \"StoreToFile\" processing type"
+#~ msgstr "Не е указано има не файл при \"Запазване във файл\""
+
+#~ msgid "Invalid URL: Missing hostname"
+#~ msgstr "Неправилен УРЛ: Липсва име"
+
+#, fuzzy
+#~ msgid "Unsupported protocol %1"
+#~ msgstr "Неподдържан протокол %s"
+
+#~ msgid "Looking up host %s"
+#~ msgstr "Търсене на хост %s"
+
+#~ msgid "Contacting host %s on port %u"
+#~ msgstr "Свързване с компютър %s на порт %u"
+
+#~ msgid "Connection established, sending request"
+#~ msgstr "Връзката е установена, изпращане на искане"
+
+#~ msgid "Failed to rename the existing file, please rename manually and retry"
+#~ msgstr ""
+#~ "Невъзможно е преименоването на съществуващ файл, моля преименовайте го "
+#~ "ръчно и повторете"
+
+#~ msgid "Can't open file \"%s\" for writing"
+#~ msgstr "Не може да отвори файл \"%s\" за запис"
+
+#~ msgid "Invalid HTTP response: %s"
+#~ msgstr "Неправилен HTTP отговор: %s"
+
+#~ msgid "Received HTTP response: %s"
+#~ msgstr "Получаване на HTTP отговор: %s"
+
+#~ msgid "Stream exceeding maximum length"
+#~ msgstr "Потока превишава максималната дължина"
+
+#~ msgid "Stream exceeded expected length"
+#~ msgstr "Потока превишава очакваната дължина"
+
+#~ msgid "Header too long: exceeded 4096 bytes"
+#~ msgstr "Заглавието е твърде дълго: очаквани 4096 байта"
+
+#~ msgid "Select error: %s (errno=%d)"
+#~ msgstr "Избиране на грешка: %s (errno=%d)"
+
+#~ msgid "Operation timed out"
+#~ msgstr "Изтекло време на операция"
+
+#~ msgid "Failed to enter non blocking mode"
+#~ msgstr "Влизането в неблокиращ режим пропадна"
+
+#~ msgid "Invalid target address"
+#~ msgstr "Неправилен адрес на целта"
+
+#~ msgid "Connect error: %s (errno=%d)"
+#~ msgstr "Грешка при свързване: %s (errno=%d)"
+
+#, fuzzy
+#~ msgid "Reconnection Options"
+#~ msgstr "Изтичане на време за връзка"
+
+#, fuzzy
+#~ msgid "You must be connected to a server"
+#~ msgstr "Сокета не е свързан"
+
+#, fuzzy
+#~ msgid "Unsupported type: $0"
+#~ msgstr "Неподдържан протокол %s"
+
+#, fuzzy
+#~ msgid "No such user: $0"
+#~ msgstr "Няма такъв файл"
+
+#, fuzzy
+#~ msgid "Channel Administrator"
+#~ msgstr "Неизвестен оператор"
+
+#, fuzzy
+#~ msgid "Channel Operator"
+#~ msgstr "Неизвестен оператор"
+
+#, fuzzy
+#~ msgid "Half Operator"
+#~ msgstr "Неизвестен оператор"
+
+#, fuzzy
+#~ msgid "User Operator"
+#~ msgstr "Неизвестен оператор"
+
+#, fuzzy
+#~ msgid "l (Connections)"
+#~ msgstr "Изтичане на време за връзка"
+
+#, fuzzy
+#~ msgid "o (Operators)"
+#~ msgstr "Неизвестен оператор"
+
+#, fuzzy
+#~ msgid "t (Connection stats ?)"
+#~ msgstr "Изтичане на време за връзка"
+
+#, fuzzy
+#~ msgid "Invalid progress value (%s)"
+#~ msgstr "Грешен прокси адрес"
+
+#, fuzzy
+#~ msgid "Error:not enough parameters!"
+#~ msgstr "Няма достатъчно параметри"
+
+#, fuzzy
+#~ msgid "Invalid index parameter (%s)"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Invalid parameter"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Can't find the object "
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Can't set a non-widget object"
+#~ msgstr "Не може да изпрати файл с нулева големина"
+
+#, fuzzy
+#~ msgid "Can't find the widget(%s)"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Invalid marging value (%s)"
+#~ msgstr "Грешен прокси адрес"
+
+#, fuzzy
+#~ msgid "Invalid parameters"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Can't find the widget/pixmap (%s)"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Can't find the widget object to remove (%s)"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Can't remove a non-widget object"
+#~ msgstr "Не може да изпрати файл с нулева големина"
+
+#, fuzzy
+#~ msgid "Can't find the widget (%s)"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Invalid zoom value (%s)"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Invalid depth value (%s)"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Invalid value (%s)"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Invalid paragraph value (%s)"
+#~ msgstr "Грешен прокси адрес"
+
+#, fuzzy
+#~ msgid " I can't find the specified file."
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Can't find the destination widget/pixmap (%s)"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "No source specified"
+#~ msgstr "Няма такъв файл"
+
+#, fuzzy
+#~ msgid "Can't find the source widget/pixmap (%s)"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Invalid x parameter (%s)"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Invalid y parameter (%s)"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Can't find the listviewitem object to add (%s)"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Invalid column (%s)"
+#~ msgstr "Грешен прокси адрес"
+
+#, fuzzy
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Invalid object."
+#~ msgstr "Неправилен порт"
+
+#, fuzzy
+#~ msgid "Can't setStretchableWidget a non-widget object."
+#~ msgstr "Не може да изпрати файл с нулева големина"
+
+#, fuzzy
+#~ msgid "Can't find the popupmenu object to add (%s)"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Can't find the widget object (%s)"
+#~ msgstr "Не може да определи исканият адрес"
+
+#, fuzzy
+#~ msgid "Invalid columns value (%s)"
+#~ msgstr "Грешен прокси адрес"
+
+#, fuzzy
+#~ msgid "Invalid size value (%s)"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Background not found %s "
+#~ msgstr "Хоста не е намерен"
+
+#, fuzzy
+#~ msgid "No link text specified"
+#~ msgstr "Няма такъв файл"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %s"
+#~ msgstr "Създаването на сокет пропадна"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %Q"
+#~ msgstr "Създаването на сокет пропадна"
+
+#, fuzzy
+#~ msgid "<unknown size>"
+#~ msgstr "Неизвестна грешка"
+
+#, fuzzy
+#~ msgid "Missing target nickname"
+#~ msgstr "Липсва име на променлива"
+
+#, fuzzy
+#~ msgid "Missing filename"
+#~ msgstr "Липсва име на променлива"
+
+#, fuzzy
+#~ msgid "Invalid timeout, ignoring"
+#~ msgstr "Левия операнд е грешен"
+
+#, fuzzy
+#~ msgid "Invalid visible name: using default"
+#~ msgstr "Неправилен параметър"
+
+#, fuzzy
+#~ msgid "Ops..failed to add the sharedfile..."
+#~ msgstr "Създаването на сокет пропадна"
+
+#, fuzzy
+#~ msgid " I can't find the specified file %s."
+#~ msgstr "Не може да определи исканият адрес"
+
+#~ msgid "UNUSED UNUSED"
+#~ msgstr "НЕИЗПОЛЗВАН НЕИЗПОЛЗВАН"
diff --git a/po/modules/options/options_ca.po b/po/modules/options/options_ca.po
new file mode 100644
index 00000000..d6bd3990
--- /dev/null
+++ b/po/modules/options/options_ca.po
@@ -0,0 +1,13454 @@
+# translation of kvirc_ca.po to Catal�
+# Marc Serra Romero <[email protected]>, 2005.
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:304
+msgid ""
+msgstr ""
+"Project-Id-Version: kvirc_ca\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-04-23 17:52+0000\n"
+"Last-Translator: Marc Serra Romero <[email protected]>\n"
+"Language-Team: Catal� <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"First-Translator: Marc Serra Romero <[email protected]>\n"
+"X-Generator: KBabel 1.2\n"
+"X-Poedit-Language: Catalan\n"
+"X-Poedit-Country: ANDORRA\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:232
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:51
+msgid "Font:"
+msgstr "Fonts:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:47
+msgid "Background color:"
+msgstr "Color de fons:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:129
+msgid "Background image:"
+msgstr "Imatge de fons:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:51
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:46
+#, fuzzy
+msgid "Horizontal align:"
+msgstr "Localitzar el certificat:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:50
+#, fuzzy
+msgid "Vertical align:"
+msgstr "Localitzar el certificat:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:59
+msgid "Mark Line:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:66
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:124
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:59
+msgid "Tile"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:62
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:55
+msgid "Left"
+msgstr "Esquerra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:56
+msgid "Right"
+msgstr "Dreta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:132
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:62
+#, fuzzy
+msgid "Center"
+msgstr "General"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:60
+msgid "Top"
+msgstr "Amunt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:61
+msgid "Bottom"
+msgstr "Sota"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:149
+msgid "Enable URL highlighting"
+msgstr "Activar ressaltat d'URLs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:150
+msgid "Use line wrap margin"
+msgstr "Emprar marge de justificaci� de l�nia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:151
+msgid "Maximum buffer size:"
+msgstr "Mid� m�xima de buffer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:152
+msgid " lines"
+msgstr " l�nies"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:153
+msgid "Link tooltip show delay:"
+msgstr "Retr�s fins a mostrar tooltip als enlla�os:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:306
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:59
+msgid " msec"
+msgstr " mseg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:155
+msgid "Link tooltip hide delay:"
+msgstr "Retr�s fins a amagar el tooltip als enlla�os:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:157
+msgid "Track last read text line"
+msgstr "Marcar l'�ltima l�nia de text llegida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:48
+msgid "NickServ Authentication Rule"
+msgstr "Regla d'Autentificaci� de Nickserv"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:55
+msgid "Registered NickName"
+msgstr "Nick Registrat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:60
+msgid "Put here the nickname that you have registered with NickServ"
+msgstr "Posa aqu� el nick que tens registrat amb NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:277
+msgid "NickServ Mask"
+msgstr "M�scara NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:70
+#, fuzzy, c-format
+msgid ""
+"This is the mask that NickServ must match to be correctly identified as the "
+"NickServ service. This usually will be something like <b>NickServ!"
+"[email protected]</b>.<br>You can use wildcards for this field, but "
+"generally it is a security flaw. If you're 100%% sure that NO user on the "
+"network can use the nickname \"NickServ\", the mask <b>NickServ!*@*</b> may "
+"be safe to use in this field."
+msgstr ""
+"Aquesta �s la m�scara que ha de concordar amb NickServ per a ser "
+"correctament identificat com el servei NickServ. Habitualment ser� una cosa "
+"com <b>[email protected]</b>.<br>Pot emprar comodins per a "
+"aquest camp, per� all� est� considerat com una errada de seguretat. Si est� "
+"100% segur que CAP usuari a la xarxa pot emprar el nick \"NickServ\", pot "
+"ser segur emprar la m�scara <b>NickServ!*@*</b> en aquest camp."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:78
+msgid "Message Regexp"
+msgstr "Expressi� Regular del Missatge"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:86
+msgid ""
+"This is the simple regular expression that the identification request "
+"message from NickServ must match in order to be correctly recognized.<br>The "
+"message is usually something like \"To identify yourself please use /ns "
+"IDENTIFY password\" and it is sent when the NickServ wants you to "
+"authenticate yourself. You can use the * and ? wildcards."
+msgstr ""
+"Aquesta �s una simple expressi� regular que el missatge de petici� "
+"d'identificaci� de NickServ ha de complir per a ser correctament recconegut."
+"<br>El missatge �s usualment una cosa com \"To identify yourself please use /"
+"ns IDENTIFY password\" i �s enviat quan NickServ vol que s'identifiqui. Pot "
+"fer servir els comodins * i ?."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:259
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:279
+msgid "Identify Command"
+msgstr "Comanda d'Identificaci�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:98
+msgid ""
+"This is the command that will be executed when NickServ requests "
+"authentication for the nickname described in this rule (if the both server "
+"and NickServ mask are matched). This usually will be something like <b>msg "
+"NickServ identify &lt;yourpassword&gt;</b>.<br>You can use <b>msg -q</b> if "
+"you don't want the password echoed on the screen. Please note that there is "
+"no leading slash in this command."
+msgstr ""
+"Aquesta �s la comanda que ser� executada quan NickServ soliciti "
+"autentificaci� per al nick descrit en aquesta regla (si ambdues m�scares, la "
+"del servidor i la de NickServ concorden). Habitualment ser� una cosa com "
+"<b>msg NickServ identify &lt;latevaclau&gt;</b>.<br>Pot emprar <b>msg -q</b> "
+"si no vol que la clau aparegui a la pantalla. Si us plau, observi que "
+"aquesta comanda no comen�a amb una barra (/)."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:256
+#, fuzzy
+msgid "Server mask"
+msgstr "Servidors"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:117
+msgid ""
+"This is the mask that the current server must match in order for this rule "
+"to apply. It can contain * and ? wildcards.<br>Do NOT use simply \"*\" "
+"here..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:128
+msgid "Hint: Move the mouse cursor over the fields to get help"
+msgstr "Idea: Mou el cursor del ratol� sobre els camps per a obtenir ajuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:137
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:68
+msgid "Cancel"
+msgstr "Cancel�lar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:803
+msgid "OK"
+msgstr "Acceptar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:164
+msgid "Invalid NickServ Rule"
+msgstr "Regla de NickServ no v�lida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:169
+msgid "The Nickname field can't be empty!"
+msgstr "El camp del nick no pot estar buit!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:175
+msgid "The Nickname field can't contain spaces!"
+msgstr "El camp del nick no pot contenir espais!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:183
+msgid "The NickServ mask can't be empty!<br>You must put at least * there."
+msgstr ""
+"La m�scara de NickServ no pot estar buida!<br>Has de posar al menys un * "
+"aqu�."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:191
+msgid "The Message Regexp can't be empty!<br>You must put at least * there."
+msgstr ""
+"L'expressi� regular del missatge no pot estar buida!<br>Has de posar al "
+"menys un * aqu�."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:199
+msgid "The Identify Command can't be empty!"
+msgstr "La comanda d'Identificaci� no pot estar buida!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:265
+msgid "Enable NickServ Identification"
+msgstr "Activar identificaci� NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:269
+msgid "This check enables the automatic identification with NickServ"
+msgstr "Aquesta casella habilita la identificaci� autom�tica amb NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:276
+msgid "Nickname"
+msgstr "Nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:258
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:278
+msgid "NickServ Request Mask"
+msgstr "Petici� de M�scara NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:265
+#, fuzzy
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on all the networks."
+"<br>Please be aware that this feature can cause your NickServ passwords to "
+"be stolen if used improperly. Make sure that you fully understand the "
+"NickServ authentication protocol.<br>In other words, be sure to know what "
+"you're doing.<br>Also note that the password that you provide is stored as "
+"<b>PLAIN TEXT</b>.<br>KVIrc supports also per-network NickServ "
+"authentication rules that can be created in the \"Advanced...\" network "
+"options (accessible from the servers dialog).</center>"
+msgstr ""
+"<center>Aquesta �s la llista de regles d'identificaci� de NickServ. KVIrc "
+"les emprar� per a la seva interacci� autom�tica amb NickServ en aquesta "
+"xarxa.<br>Si us plau, tingui present que aquesta caracter�stica pot provocar "
+"que les seves claus de NickServ siguin robades si s'usa indegudament. "
+"Asseguris que ent�n b� el protocol d'autentificaci� NickServ.<br>En altres "
+"paraules, asseguris de que sap que est� fent.<br>Pensi que la clau que "
+"proporciona �s emmagatzemada en <b>TEXT PLA</b>.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:293
+msgid "Add Rule"
+msgstr "Afegir Regla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:298
+msgid "Edit Rule"
+msgstr "Editar Regla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:302
+msgid "Delete Rule"
+msgstr "Borrar Regla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:31
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:36
+msgid "Font"
+msgstr "Fonts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:38
+msgid "Foreground color"
+msgstr "Color de primer pla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:37
+msgid "Background color"
+msgstr "Color de fons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:34
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:44
+msgid "Background image"
+msgstr "Imatge de fons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:40
+#, fuzzy
+msgid "Enable tray icon"
+msgstr "Activar xifrat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:41
+#, fuzzy
+msgid "Close in tray"
+msgstr "Minimitzar nous privats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:42
+#, fuzzy
+msgid "Minimize in tray"
+msgstr "Minimitzar nous privats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:44
+#, fuzzy
+msgid "Enable tray icon flashing"
+msgstr "Activar ressaltat de paraules"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:45
+msgid "Enable level-based message notification (not a message-type based)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:47
+msgid "Select message levels to notify"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:49
+msgid "Minimum level for low-priority messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:53
+msgid "Minimum level for high-priority message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.cpp:40
+msgid ""
+"This section contains irc protection tools<br><p>like<b> flood, ignore, "
+"antispam. </b> </p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:40
+#, fuzzy
+msgid ""
+"<center><b>Settings for CTCP.</b></center><p>The <b>Client-To-Client "
+"Protocol</b> (CTCP) is used to transmit special control messages over an IRC "
+"connection. These messages can request information from clients or negotiate "
+"file transfers.<br><br></p>"
+msgstr ""
+"<center><b>Aquesta secci� cont� la configuraci� per a CTCP</b></"
+"center><br><br><p>El <b>Client-To-Client Protocol (CTCP)</b> s'utilitza per "
+"a transmetre missatges de control especials sobre una connexi� IRC. Aquests "
+"missatges poden solicitar informaci� de clients o negociar transfer�ncies "
+"d'arxius.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:47
+#, fuzzy
+msgid "CTCP Replies"
+msgstr "Respostes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:48
+msgid "Append to VERSION reply:"
+msgstr "Afegir a la resposta VERSION:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:52
+msgid ""
+"<center>This text will be appended to the CTCP VERSION reply.<br>For "
+"example, you can place a script name here.</center>"
+msgstr ""
+"<center>Aquest text ser� afegit a la resposta CTCP VERSION.<br>Per exemple, "
+"pots posar un nom d'script aqu�.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:55
+msgid "Append to SOURCE reply:"
+msgstr "Afegir a la resposta SOURCE:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:59
+msgid ""
+"<center>This text will be appended to the CTCP SOURCE reply.<br>For example, "
+"you can place the source URL for a script here.</center>"
+msgstr ""
+"<center>Aquest text ser� afegit a la resposta CTCP SOURCE.<br>Per exemple, "
+"pots posar la URL d'origen d'un script aqu�.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:69
+msgid "PAGE reply:"
+msgstr "Resposta PAGE:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:73
+msgid ""
+"<center>This is the CTCP PAGE reply.<br>It should contain some sort of "
+"acknowledgement for CTCP PAGE messages.</center>"
+msgstr ""
+"<center>Aquesta �s la resposta a CTCP PAGE.<br>Hauria de contenir algun "
+"tipus de reconeixement per als missatges CTCP PAGE.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:76
+msgid "Show the CTCP replies in the active window"
+msgstr "Mostrar respostes a CTCP a la finestra activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:78
+msgid "Show dialog for CTCP page requests"
+msgstr "Mostrar di�leg per a solicituts CTCP page"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:36
+msgid "Use tree taskbar"
+msgstr "Emprar barra de feines en arbre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:37
+msgid "Sort windows by name"
+msgstr "Ordenar finestres per nom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:38
+msgid "Show window icons in taskbar"
+msgstr "Mostrar icones de finestra a la barra de feines"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:39
+msgid "Show activity meter in taskbar"
+msgstr "Mostrar medici� d'activitat a la barra de feines"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:41
+msgid ""
+"<center>This option enables the usage of the taskbar activity meter. Each "
+"window entry will have a small indicator of the activity that is going on in "
+"that window. The indicator is a small square that changes colors, dark "
+"colors mean low activity, while bright colors signal high activity. KVIrc "
+"also uses some heuristics to determine whether the activity is somewhat "
+"\"human\" or it is generated by automated entities (such as bots or IRC "
+"servers). \"Human\" activity causes the indicator to be shaded red while "
+"automated activity causes the indicator to be shaded blue.</center>"
+msgstr ""
+"<center>Aquesta opci� activa l'us del mesurador d'activitat. Cada entrada a "
+"la finestra tindr� un petit indicador d'activitat. L'indicador �s un petit "
+"rectangle que canvia de color; negre significa baixa activitat i colors m�s "
+"brillants indiquen alta activitat. KVIrc empra algunes heur�stiques per a "
+"esbrinar quan es tracta d'activitat \"humana\" o si aquesta �s generada per "
+"entitats autom�tiques (com bots o servidors IRC). L'activitat \"humana\" fa "
+"que l'indicador sigui ombrejat en vermell mentres que l'activitat autom�tica "
+"fa que l'indicador sigui ombrejat en blau.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:49
+msgid "Show IRC context indicator in taskbar"
+msgstr "Mostrar indicador de context d'IRC a la barra de feines"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:50
+msgid "Enable window tooltips"
+msgstr "Activar tooltips de finestra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:233
+msgid "Text/Alert Colors"
+msgstr "Colors de Text/Alertes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:125
+msgid "Normal:"
+msgstr "Normal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:126
+msgid "Selected:"
+msgstr "Seleccionat:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:236
+msgid "Alert Level 1:"
+msgstr "Nivell d'Alerta 1:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:237
+msgid "Alert Level 2:"
+msgstr "Nivell d'Alerta 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:238
+msgid "Alert Level 3:"
+msgstr "Nivell d'Alerta 3:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:239
+msgid "Alert Level 4:"
+msgstr "Nivell d'Alerta 4:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:240
+msgid "Alert Level 5:"
+msgstr "Nivell d'Alerta 5:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:241
+msgid "Progress bar color:"
+msgstr "Color de la barra de progr�s:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:124
+msgid "Background Colors"
+msgstr "Colors de Fons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:212
+#, fuzzy
+msgid "Show header"
+msgstr "Mostrar Editor de Prohibicions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:214
+msgid "Minimum width:"
+msgstr "Amplada m�nima:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:215
+msgid "Maximum width:"
+msgstr "Amplada m�xima:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:235
+msgid "Minimized:"
+msgstr "Minimitzat:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:242
+msgid "Minimum width of buttons:"
+msgstr "Amplada m�nima dels botons:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:244
+#, fuzzy
+msgid "Set maximum button width"
+msgstr "Amplada m�xima:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:245
+#, fuzzy
+msgid "Maximum width of buttons:"
+msgstr "Amplada m�nima dels botons:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:246
+msgid "Use flat buttons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:96
+msgid "Network Details"
+msgstr "Detalls de la Xarxa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:82
+msgid "Description:"
+msgstr "Descripci�:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:116
+msgid "<center>Put here a brief description of the network.</center>"
+msgstr "<center>Posi aqu� una breu descripci� de la xarxa.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:477
+msgid "Properties"
+msgstr "Propietats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:123
+msgid "Username:"
+msgstr "Nom d'usuari:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:134
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to servers "
+"on this network.\n"
+"If this field is left empty (most common case), KVIrc will use the default "
+"username specified in the \"Identity\" options tab.</center>"
+msgstr ""
+"<center>Aquest �s el <b> nom d'usuari</b> que emprar� KVIrc per a "
+"autentificar-se als servidors d'aquesta xarxa.\n"
+"Si aquest camp es deixa buit (el cas m�s normal), KVIrc emprar� el nom "
+"d'usuari per defecte especificat a la pesta�a d'opcions \"Identitat\".</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:498
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:320
+msgid "Nickname:"
+msgstr "Nick:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:145
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to the servers on this network.<br>If this field is left empty (most "
+"common case), the default nickname (specified in the \"Identity\" settings) "
+"will be used.</center>"
+msgstr ""
+"<center>Pot especificar un <b>nick</b> \"especial\" que ser� emprat per a "
+"entrar als servidors d'aquesta xarxa.<br>Si es deixa aquest camp buit (el "
+"cas m�s normal), s'emprar� el nick per defecte (especificat a la "
+"configuraci� d'\"Identitat\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:509
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:342
+msgid "Real name:"
+msgstr "Nom real:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:153
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with the servers on this network.<br>If you leave this field empty "
+"(most common case), the default \"real name\" (specified in the \"Identity\" "
+"settings) will be used.</center>"
+msgstr ""
+"<center>Pots especificar un <b>nom real</b> \"especial\" que ser� emprat per "
+"a entrar als servidors d'aquesta xarxa.<br>Si es deixa aquest camp buit (el "
+"cas m�s normal), s'emprar� el \"nom real\" per defecte (especificat a la "
+"configuraci� d'\"Identitat \").</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:644
+msgid "Encoding:"
+msgstr "Codificaci�:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:164
+msgid ""
+"<center>This box allows you to choose the preferred encoding for the servers "
+"in this network. If you choose \"Use System Encoding\" then the encoding "
+"will be set to the systemwide value that you choose in the \"Encoding\" page "
+"of the options dialog.</center>"
+msgstr ""
+"<center>Aquesta casella et permet escollir la codificaci� preferida per als "
+"servidors d'aquesta xarxa. Si esculls \"Emprar Codificaci� del Sistema\" "
+"llavors la codificaci� ser� inicialitzada amb la configuraci� global del "
+"sistema que esculli a l'opci� \"Codificaci�\" del di�leg d'opcions.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:173
+msgid "Use System Encoding"
+msgstr "Emprar Codificaci� del Sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:185
+#, fuzzy
+msgid "Connect to this network at startup"
+msgstr "Connectar a aquest servidor a l'inici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:189
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to automatically connect to this "
+"network at startup</center>"
+msgstr ""
+"<center>Aquesta opci� far� que KVIrc es connecti al servidor d'IRC quan "
+"arranqui.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:79
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:120
+msgid "General"
+msgstr "General"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:756
+msgid "Channels to join automatically upon connect:"
+msgstr "Canals a unir-se autom�ticament despr�s de conectar:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:211
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to a server in this network has been established. To add a "
+"channel, type its name in the text input below and click \"<b>Add</b>\".</"
+"center>"
+msgstr ""
+"<center>Aqu� pots posar la llista de canals als que entrar�s autom�ticament "
+"despr�s d'establir una connexi� amb un servidor d'aquesta xarxa. Per a "
+"afegir un canal, escriu el seu nom a la caixa de text inferior i prem "
+"\"<b>Afegir</b>\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:217
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:62
+msgid "Join Channels"
+msgstr "Unir-se a Canals"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:228
+msgid ""
+"<center>The following commands will be executed after a connection to a "
+"server in this network has been established.<br><b>Important:</b> Enter "
+"commands <b>without</b> a preceding slash (e.g. <tt>quote pass secret</tt> "
+"instead of <tt>/quote pass secret</tt>).<br>KVIrc will first send the USER "
+"command, then eventually PASS and NICK and then execute this command "
+"sequence.</center>"
+msgstr ""
+"<center>Les seg�ents comandes seran executades despr�s que una connexi� amb "
+"un servidor d'aquesta xarxa ha estat establerta.<br><b>Important:</b> "
+"introdueixi les comandes <b>sense</b> precedir-les d'una barra (p.e. "
+"<tt>quote pass secret</tt> en lloc de <tt>/quote pass secret</tt>.<br>KVIrc "
+"enviar� primer la comanda USER, eventualment PASS i NICK, i despr�s "
+"executar� aquesta seq��ncia de comandes.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:782
+msgid "On Connect"
+msgstr "En Connexi�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:249
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"a server in this network.<br><b>Important:</b> Enter commands <b>without</b> "
+"a preceding slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote "
+"privatelog</tt>).<br>This is useful for automatically opening queries, "
+"setting variables, etc.</center>"
+msgstr ""
+"<center>Les sig�nts comandes seran executades despr�s que s'hagi entrat "
+"correctament a un servidor en aquesta xarxa.<br><b>Important:</b> "
+"introdueixi les comandes <b>sense</b> precedir-les d'una barra (p.e. "
+"<tt>quote privatelog</tt> en lloc de <tt>/quote privatelog</tt>.<br>Aix� �s "
+"�til per a obrir privats autom�ticament, inicialitzar variables, etc.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:801
+msgid "On Login"
+msgstr "A l'Entrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:285
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on this network.<br>Please "
+"be aware that this feature can cause your NickServ passwords to be stolen if "
+"used improperly. Make sure that you fully understand the NickServ "
+"authentication protocol.<br>In other words, be sure to know what you're "
+"doing.<br>Also note that the password that you provide is stored as <b>PLAIN "
+"TEXT</b>.</center>"
+msgstr ""
+"<center>Aquesta �s la llista de regles d'identificaci� de NickServ. KVIrc "
+"les emprar� per a la seva interacci� autom�tica amb NickServ en aquesta "
+"xarxa.<br>Si us plau, tingui present que aquesta caracter�stica pot provocar "
+"que les seves claus de NickServ siguin robades si s'usa indegudament. "
+"Asseguris que ent�n b� el protocol d'autentificaci� NickServ.<br>En altres "
+"paraules, asseguris de que sap que est� fent.<br>Pensi que la clau que "
+"proporciona �s emmagatzemada en <b>TEXT PLA</b>.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:35
+msgid "NickServ"
+msgstr "NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:323
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:60
+msgid "&OK"
+msgstr "&Acceptar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:449
+msgid "Server Details"
+msgstr "Detalls del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:465
+msgid ""
+"<center>This is a brief description of this server. This field has no "
+"restrictions but many server lists use it to describe the server's physical "
+"location</center>"
+msgstr ""
+"<center>Aquesta �s una breu descripci� del servidor. Aquest camp no t� "
+"restriccions per� moltes llistes de servidors l'utilitzen per a descriure la "
+"localitzaci� f�sica del servidor</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:484
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to this "
+"server.\n"
+"If this field is left empty (most common case), KVIrc will first look if an "
+"username is specified for the network that this server belongs to, and if "
+"that is empty then KVIrc will use the default username specified in the "
+"\"Identity\" options tab.</center>"
+msgstr ""
+"<center>Aquest �s el <b>nom d'usuari</b> que emprar� KVIrc per a "
+"autentificar-se en aquest servidor.\n"
+"Si aquest camp es deixa buit (el cas m�s normal), KVIrc mirar� primer si hi "
+"ha un nom d'usuari especificat per a la xarxa a la que pertany aquest "
+"servidor, i si aquest es troba buit KVIrc emprar� el nom d'usuari per "
+"defecte especificat a la casella d'opcions \"Identitat\"."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:490
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:127
+msgid "Password:"
+msgstr "Clau:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:495
+msgid ""
+"<center>If this server requires a password, put it in this field, otherwise "
+"leave it empty.</center>"
+msgstr ""
+"<center>Si aquest servidor necessita una clau, escrigui-la en aquest camp: "
+"en altre cas, deixi-ho buit.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:504
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to this server.<br>If this field is left empty (most common case), "
+"KVIrc will first look if a nickname is specified for the network that this "
+"server belongs to, and if that is empty then the default nickname (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center>Pot especificar un <b>nick</b> \"especial\" que ser� emprat per "
+"entrar en aquest servidor.<br>Si es deixa aquest camp buit (el cas m�s "
+"normal), KVIrc mirar� primer si s'ha especificat un nick per a la xarxa a la "
+"que pertany aquest servidor, i si aquest es troba buit s'emprar� el nick per "
+"defecte (especificat a la configuraci� d'\"Identitat \".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:513
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with this server.<br>If you leave this field empty (most common case), "
+"KVIrc will first look if a real name is specified for the network that this "
+"server belongs to, and if that is empty the default \"real name\" (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center>Pot especificar un <b>nom real</b> \"especial\" que ser� emprat per "
+"a entrar en aquest servidor.<br>Si es deixa aquest camp buit (el cas m�s "
+"normal), KVIrc buscar� primer si s'ha especificat un per a la xarxa a la que "
+"pertany aquest servidor, i si est� buit llavors s'emprar� el \"nom real\" "
+"per defecte (especificat a la configuraci� d'\"Identitat \".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:683
+msgid "User Mode"
+msgstr "Mode d'usuari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:520
+msgid "Use default user mode"
+msgstr "Mode d'usuari per defecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:522
+msgid ""
+"<center>If this is enabled, the global initial <b>user mode</b> (configured "
+"from the identity dialog) will be used. If disabled, you can configure an "
+"initial user mode for this server"
+msgstr ""
+"<center>Si s'activa, s'emprar� el <b>mode d'usuari</b> global inicial "
+"(configurat des de el di�leg Identitat). Si es desactiva, pot configurar un "
+"mode d'usuari inicial per a aquest servidor.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:684
+msgid "Invisible (+i)"
+msgstr "Invisible (+i)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:534
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:685
+msgid "Server notices (+s)"
+msgstr "Not�cies del servidor (+s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:686
+msgid "Wallops (+w)"
+msgstr "Wallops (+w)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:548
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:60
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:104
+msgid "Identity"
+msgstr "Identitat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:115
+msgid "Port:"
+msgstr "Port:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:565
+msgid ""
+"<center>This is the default <b>port</b> that this server will be contacted "
+"on.<br>Usually <b>6667</b> is OK.</center>"
+msgstr ""
+"<center>Aquest �s el <b>port</b> per defecte en el que aquest servidor ser� "
+"contactat.<br>Habitualment, <b>6667</b> �s correcte.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:571
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:119
+msgid "IP address:"
+msgstr "Adre�a IP:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:576
+msgid ""
+"<center>This is the <b>IP address</b> of this server, it is here for caching "
+"purposes.<br>If you leave this field empty, KVIrc will fill it in the first "
+"time it connects to the server. If you enable the \"cache IP address\" "
+"option below, KVIrc will use it as a \"cached result\" and avoid looking it "
+"up again.</center>"
+msgstr ""
+"<center>Aquesta �s l'<b>adre�a IP</b> d'aquest servidor, i es troba aqu� com "
+"a cach�.<b>Si deixa aquest camp buit, KVIrc el reomplir� la primera vegada "
+"que es connecti al servidor. Si activa l'opci� de sota \"Cachejar adre�a IP"
+"\", KVIrc l'emprar� com a un \"resultat a cach�\" per a evitar tornar a "
+"buscar-ho de nou.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:596
+msgid "Cache IP address"
+msgstr "Cachejar adre�a IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:599
+msgid ""
+"<center>This check will enable <b>IP address caching</b> for this server:"
+"<br>DNS lookups can be time-consuming and might be blocking on some "
+"platforms; this option will cause KVIrc to look up the server hostname only "
+"once.<br><br> Advanced: you can also use this option to force a certain "
+"server name to resolve to a fixed ip address when either the dns for that "
+"server is temporairly unreachable or you want to avoid the round-robin "
+"lookups.</center>"
+msgstr ""
+"<center>Aquesta casella habilitar� el <b>cach� d'adre�a IP</b> per a aquest "
+"servidor:<br>les cerques DNS consumeixen temps i poden ser blocants en "
+"algunes plataformes: aquesta opci� far� que KVIrc busqui el nom del servidor "
+"d'un sol cop.<br><br> Avan�at: tamb� pots emprar aquesta opci� per a for�ar "
+"que un cert nom de servidor sigui resolt a una IP fixa per a quan el "
+"servidor de noms estigui temporalment no disponible o vulgui evitar les "
+"cerques redundants.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:609
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:140
+msgid "Use IPv6 protocol"
+msgstr "Emprar protocol IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:619
+msgid ""
+"<center>This check identifies IPv6 servers.<br>If enabled, KVIrc will "
+"attempt to use the IPv6 protocol (thus your OS <b>must</b> have a working "
+"IPv6 stack and you <b>must</b> have an IPv6 connection).</center>"
+msgstr ""
+"Aquest identificador identifica servidors IPv6.<br>Si s'habilita, KVIrc "
+"intentar� emprar el protocol IPv6 (el seu S.O. <b>ha <b> de tenir un pila "
+"IPv6 funcionant i <b>ha</b>de tenir una connexi� IPv6).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:624
+msgid "Use SSL protocol"
+msgstr "Emprar protocol SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:627
+msgid ""
+"<center>This check will cause the connection to use the <b>Secure Socket "
+"Layer</b> encryption support. Obviously, this server must have support for "
+"this, too. :)</center>"
+msgstr ""
+"<center>Aquesta casella far� que per aquesta connexi� s'utilitzi el suport "
+"de xifrat <b>Secure Socket Layer (SSL)</b>. Obviament, aquest servidor haur� "
+"de suportar-ho tamb�. :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:636
+msgid "Connect to this server at startup"
+msgstr "Connectar a aquest servidor a l'inici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:641
+msgid ""
+"<center>This option will cause KVIrc to connect to the IRC server when it is "
+"started.</center>"
+msgstr ""
+"<center>Aquesta opci� far� que KVIrc es connecti al servidor d'IRC quan "
+"arranqui.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:650
+msgid ""
+"<center>This box allows you to choose the preferred encoding for this sever. "
+"If you choose \"Use Network Encoding\" then the encoding will be inherited "
+"from the network that this server belongs to.</center>"
+msgstr ""
+"<center>Aquesta casella li permet escollir la codificaci� preferida per a "
+"aquest servidor. Si escull \"Emprar Codificaci� de Xarxa\" llavors la "
+"codificaci� s'heretar� de la xarxa a la que pertanyi aquest servidor.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:659
+msgid "Use Network Encoding"
+msgstr "Emprar Codificaci� de Xarxa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:672
+msgid "Link filter:"
+msgstr "Filtre d'enlla�os:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:701
+msgid ""
+"<center>This field specifies the name of a module that exports a link filter "
+"for this type of server.<br>For plain IRC connections, you don't need any "
+"link filters; this is used for incompatible protocols.</center>"
+msgstr ""
+"<center>Aquests camp especifica el nom d'un m�dul que esporta un filtre "
+"d'enlla� per aquest tipus de servidor.<br>Per a connexions IRC normals, no "
+"necessites cap filtre d'enlla�; aix� s'empra per a protocols incompatibles.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:705
+#, fuzzy
+msgid "Id:"
+msgstr "Id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:713
+msgid ""
+"<center>This field allows you to specify a really unique id for this server. "
+"You will then be able to use /server -x &lt;this_id&gt; to make the "
+"connection. This is especially useful when you have multiple server entries "
+"with the same hostname and port in different networks (bouncers?)</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:719
+#, fuzzy
+msgid "Proxy server:"
+msgstr "Copiar Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:724
+msgid ""
+"<center>This is the <b>proxy</b> that KVIrc will use to connect to thos "
+"server.\n"
+"If this field is set in \"Default\" KVirc will use global proxy settings, if "
+"it is set in \"Direct connection\" KVirc will connect to this server without "
+"proxy. You can define new proxy server in global options' \"Proxy servers\" "
+"menu.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:729
+msgid "Default"
+msgstr "Per defecte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:730
+#, fuzzy
+msgid "Direct connection"
+msgstr "connexi� segura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:746
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:28
+msgid "Connection"
+msgstr "Connexi�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:758
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to this server has been established. To add a channel, type its "
+"name in the text input below and click \"<b>Add</b>\".</center>"
+msgstr ""
+"<center>Aqu� pot posar la llista de canals als que entrar� autom�ticament "
+"despr�s d'establir una connexi� amb aquest servidor. Per a afegir un canal, "
+"escrigui el seu nom a la caixa de text inferior i premi \"<b>Afegir</b>\".</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:776
+msgid ""
+"<center>The following commands will be executed after a connection has been "
+"established.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote pass secret</tt> instead of <tt>/quote pass secret</"
+"tt>).<br>KVIrc will first send the USER command, then eventually PASS and "
+"NICK and then execute this command sequence.<br>This is particularly useful "
+"for IRC bouncers that require login commands.</center>"
+msgstr ""
+"<center>Les seg�ents comandes ser� executades despr�s que una connexi� amb "
+"aquest servidor hagi sigut establerta.<br><b>Important:</b> introdueixi les "
+"comandes <b>sense</b> precedir-les d'una barra (p.e. <tt>quote pass secret</"
+"tt> en comptes de <tt>/quote pass secret</tt>.<br>KVIrc enviar� primer la "
+"comanda USER, eventualment PASS i NICK, i despr�s executar� aquesta "
+"seq��ncia de comandes.<br>Aix� �s particularment �til per a repetidors IRC "
+"que necessiten ordres d'entrada.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:796
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"this server.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote privatelog</tt>)."
+"<br>This is useful for automatically opening queries, setting variables, etc."
+"</center>"
+msgstr ""
+"<center>Les seg�ents comandes seran executades despr�s que s'hagi entrat "
+"correctament a aquest servidor.<br><b>Important:</b> introdueixi les "
+"comandes <b>sense</b> precedir-les d'una barra (p.e. <tt>quote privatelog</"
+"tt> en comptes de <tt>/quote privatelog</tt>.<br>Aix� �s �til per a obrir "
+"privats autom�ticament, inicialitzar variables, etc.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1041
+msgid "Server"
+msgstr "Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1042
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:73
+msgid "Description"
+msgstr "Descripci�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1054
+msgid ""
+"<center>This is the list of available IRC servers.<br>Right-click on the "
+"list to add or remove servers and perform other actions.<br>Double-click on "
+"a item for advanced options.</center>"
+msgstr ""
+"<center>Aquesta �s la llista de servidors IRC disponibles.<br>Doble click a "
+"la llista per a afegir o eliminar servidors i realitzar altres accions."
+"<br>Doble click en un element per a accedir a les opcions avan�ades.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1069
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1430
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1554
+msgid "New Network"
+msgstr "Nova Xarxa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1077
+msgid "New Server"
+msgstr "Nou Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1086
+msgid "Remove Network/Server"
+msgstr "Eliminar Xarxa/Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1098
+msgid "Copy Server"
+msgstr "Copiar Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1107
+msgid "Paste Server"
+msgstr "Enganxar Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1446
+msgid "Import List"
+msgstr "Importar Llista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1125
+#, fuzzy
+msgid "Active Configuration"
+msgstr "Guardar Configuraci�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1332
+msgid "Server:"
+msgstr "Servidor:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1130
+msgid ""
+"<center>This is the name of the currently selected server or network</center>"
+msgstr ""
+"<center>Aquest �s el nom del servidor de la xarxa actualment triada.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1153
+msgid "Advanced..."
+msgstr "Avan�at ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1156
+msgid "<center>Click here to edit advanced options for this entry</center>"
+msgstr ""
+"<center>Premi aqu� per a editar les opcions avan�ades d'aquesta entrada</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1159
+msgid "Connect &Now"
+msgstr "Co&nnectar Ara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1164
+msgid ""
+"<center>Hit this button to connect to the currently selected server.</center>"
+msgstr ""
+"<center>Premi aquest bot� per a connectar-se al servidor actualment "
+"seleccionat.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1177
+msgid ""
+"<center>This button shows a list of recently used servers. It allows you to "
+"quickly find them in the list.</center>"
+msgstr ""
+"<center>Aquest bot� mostra una llista dels servidors emprats recentment. Et "
+"permet trobar-los r�pidament a la llista.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1181
+msgid "Show this dialog at startup"
+msgstr "Mostrar aquest di�leg a l'inici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1184
+msgid ""
+"<center>If this option is enabled, the Servers dialog will appear every time "
+"you start KVIrc</center>"
+msgstr ""
+"<center>Si aquesta opci� est� activada, el di�leg de servidors apareixer� "
+"cada vegada que arrenqui KVIrc</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1335
+msgid "Network:"
+msgstr "Xarxa:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1345
+msgid "No selection"
+msgstr "Sense selecci�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1364
+msgid "UnknownNet"
+msgstr "Xarxa Desconeguda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1431
+msgid "Remove Network"
+msgstr "Eliminar Xarxa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1434
+msgid "&New Server"
+msgstr "&Nou Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1435
+msgid "Re&move Server"
+msgstr "Eli&minar Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1437
+msgid "&Copy Server"
+msgstr "&Copiar Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1439
+msgid "&Paste Server"
+msgstr "Enganxar Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1444
+msgid "Clear List"
+msgstr "Netejar Llista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1483
+msgid ""
+"Oops... something weird happened:<br>Can't find any module capable of "
+"importing servers."
+msgstr ""
+"Ups... una cosa dolenta ha passat:<br>No puc trobar cap m�dul capa� "
+"d'importar servidors."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1500
+msgid ""
+"Oops... something weird happened:<br>Can't find the module that was capable "
+"of this import action. :("
+msgstr ""
+"Ups... una cosa dolenta ha passat:<br>No puc trobar el m�dul encarregat de "
+"l'acci� d'importar. :("
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1574
+msgid "irc.unknown.net"
+msgstr "irc.desconegut.net"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:39
+msgid "Disable parser warnings"
+msgstr "Deshabilitar els avisos de l'analitzador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:40
+msgid "Disable broken event handlers"
+msgstr "Desactivar manipuladors d'events trencats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:41
+msgid "Kill broken timers"
+msgstr "Matar temporitzadors trencats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:42
+msgid "Send unknown commands as /RAW"
+msgstr "Enviar comandes desconegudes com a /RAW"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:46
+#, fuzzy
+msgid "Automatically unload unused modules"
+msgstr "Tancar autom�ticament al finalitzar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:47
+msgid "Ignore module versions (dangerous)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:51
+msgid "Relay errors and warnings to debug window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:52
+#, fuzzy
+msgid "Create minimized debug window"
+msgstr "Minimitzar totes les finestres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:59
+msgid "Nickname alternatives"
+msgstr "Nicks alternatius"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:62
+msgid ""
+"<center>Here you can choose up to three nicknames alternative to the primary "
+"one. KVIrc will use the alternatives if the primary nick is already used by "
+"someone else on a particular IRC network.</center>"
+msgstr ""
+"<center>Aqu� pots escollir fins a tres nicks alternatius addicionals al "
+"primari. KVIrc emprar� els alternatius si el nick primari est� sent emprat "
+"per qualsevol altre en una xarxa concreta.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:69
+msgid "Alt. Nickname 1:"
+msgstr "Nick alt. 1:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:76
+msgid "Alt. Nickname 2:"
+msgstr "Nick alt. 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:83
+msgid "Alt. Nickname 3:"
+msgstr "Nick alt. 3"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Ok"
+msgstr "Acceptar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:130
+msgid "Avatar Download - KVIrc"
+msgstr "Desc�rrega d'Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:136
+msgid "<center>Please wait while the avatar is being downloaded</center>"
+msgstr ""
+"<center>Si us plau, esperi mentres l'avatar est� sent descarregat</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:139
+msgid "Abort"
+msgstr "Avortar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:170
+msgid "Failed to start the download"
+msgstr "Errada al iniciar la desc�rrega"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:184
+msgid "Download aborted by user"
+msgstr "Desc�rrega interrompuda per l'usuari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:213
+msgid "Choose Avatar - KVIrc"
+msgstr "Esculli Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:219
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+"Si us plau, esculli un avatar. Es pot emprar una ruta completa a un arxiu "
+"local o una imatge a la Xarxa.<br>Si dessitja emprar un arxiu local, premi "
+"el bot� \"<b>Navegar</b>\" per a moures per els directoris locals.<br>Pot "
+"introduir-se una URL completa (incloent <b>http://</b>) per a una imatge."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:237
+msgid "&Browse..."
+msgstr "Navegar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:275
+msgid "Choose an Image File - KVIrc"
+msgstr "Trii un Arxiu d'Imatge - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:316
+#, fuzzy
+msgid "Basic Properties"
+msgstr "Propietats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:323
+msgid ""
+"<center>Your <b>nickname</b> is your primary form of identification on IRC."
+"<br>Since servers cannot accept multiple users sharing the same nickname "
+"(case insensitive), you can provide alternative nicknames to be used in "
+"casethe server refuses to accept the default one.</center>"
+msgstr ""
+"<center>El seu <b>nick</b> �s la principal forma d'identificaci� a l'IRC."
+"<br>Com els servidors no poden acceptar a diversos usuaris compartint el "
+"mateix nick (sense distingir maj�scules/min�scules), pot proporcionar nicks "
+"alternatius que seran emprats en cas que el servidor rebutgi el proporcionat "
+"per defecte.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:331
+msgid "Alternatives..."
+msgstr "Alternatius..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:337
+msgid ""
+"<center>This is the <b>username</b> that you will use to connect to the "
+"server.<br>In the past, it was used as a form of authentication, but it "
+"normally has no special use now.<br>In addition to your nickname, you are "
+"identified on IRC by your <b>username@hostname</b>.</br>Basically, you can "
+"enter any word you like here. :D</center>"
+msgstr ""
+"<center>Aquest �s el <b>nom d'usuari</b> que emprar� per a connectar al "
+"servidor.<b>Anteriorment, era emprat com a forma d'autentificaci�, per� ara "
+"no t� una utilitat especial.<br>Adicionalment al seu nick, ser� identificat "
+"a l'IRC per el seu<br>usuari@m�quina</b>.<br>B�sicament, pot posar aqu� "
+"qualsevol paraula que li agradi. :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:346
+msgid ""
+"<center>This text will appear when someone does a /WHOIS on you.<br>It is "
+"intended to be your real name, but people tend to put random quotes and "
+"phrases here too.</center>"
+msgstr ""
+"<center>Aquest text apareixer� quan alg� li faci un /WHO.<br>Hauria de "
+"tractar-se del seu nom real, per� la gent tendeix a posar coses sense "
+"sentit, refranys, ocurr�ncies i tonteries.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:351
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:356
+#, fuzzy
+msgid "Profile"
+msgstr "Pr�leg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:361
+msgid "Age:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:366
+msgid "Here you can specify your age."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:401
+#, fuzzy
+msgid "Unspecified"
+msgstr "No s'ha especificat nom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:391
+#, fuzzy
+msgid "Gender:"
+msgstr "General"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:396
+msgid "Here you can specify your gender."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:402
+msgid "Female"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:403
+#, fuzzy
+msgid "Male"
+msgstr "Valor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:414
+#, fuzzy
+msgid "Location:"
+msgstr "&Localitzaci�:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:417
+msgid ""
+"You can describe here your approximate physical location. Something like "
+"\"Region, Country\" will be ok. Please note that this information will be "
+"viewable by anyone so putting more data (like the exact address), generally, "
+"<b>is not a good idea</b>."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:422
+msgid "Languages:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:425
+msgid ""
+"You can put here the short names of the languages you can speak. An example "
+"might be \"EN,IT\" that would mean that you speak both Italian and English."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:429
+#, fuzzy
+msgid "Other:"
+msgstr "Altres..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:432
+msgid ""
+"You can put here some additional personal data. It might be a funny quote or "
+"your homepage url... Please note that this information will be viewable by "
+"anyone so <b>don't put any sensible data</b> (passwords, telephone or credit "
+"card numbers)."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:502
+msgid ""
+"Here you can choose your avatar image. It will be visible<br>by other people "
+"that request it. Choose a nice image of yourself,<br>possibly avoiding "
+"obscenity and offending images. It is a good idea<br>to choose a relatively "
+"small file (say 150 Kb max) because<br>most clients have a limit on the size "
+"of avatars being downloaded.<br>The image also should be smaller than "
+"800x600 pixels since<br>it will have to be viewable in everyone's monitor."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:511
+msgid "Use avatar"
+msgstr "Emprar avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:537
+msgid "Choose..."
+msgstr "Triar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:598
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:637
+msgid "Failed to Load Avatar - KVIrc"
+msgstr "Ha fallat la c�rrega de l'Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:599
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:638
+msgid ""
+"Failed to load the avatar image.<br>It may be an unaccessible file or an "
+"unsupported image format."
+msgstr ""
+"Ha fallat la c�rrega de la imatge de l'avatar.<br>Pot tractar-se d'un arxiu "
+"inaccessible o un format d'imatge no suportat."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:606
+msgid "Failed to download the avatar image.<br><b>%Q</b>"
+msgstr "Ha fallat la desc�rrega de la imatge de l'avatar.<br><b>%Q</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:608
+msgid "Avatar Download Failed - KVIrc"
+msgstr "Ha fallat la desc�rrega de l'Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:649
+#, fuzzy
+msgid "Avatar Might Be Too Big - KVIrc"
+msgstr "Desc�rrega d'Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:650
+msgid ""
+"The avatar you have choosen is bigger than 1024x768 pixels.<br>Such a big "
+"image will not be seen on all the user monitors<br>and will probably be "
+"scaled by the remote clients with poor quality<br>algorithms to improve "
+"performance. You *should* scale it manually<br>to a sane size (like 800x600) "
+"or choose a different image."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:688
+#, fuzzy
+msgid "Default Messages"
+msgstr "Missatge d'abs�ncia per defecte:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:691
+#, fuzzy
+msgid "Part message:"
+msgstr "Missatge part"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:695
+msgid ""
+"<center>This is the default part message that will be used when you<br>leave "
+"a channel by closing a channel window.</center>"
+msgstr ""
+"<center>Aquest �s el missatge de partida per defecte que s'emprar� "
+"quan<br>abandoni un canal tancant la seva finestra de canal.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:699
+#, fuzzy
+msgid "Quit message:"
+msgstr "Missatge de sortida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:702
+msgid ""
+"<center>This is the default quit message that will be used when you<br>quit "
+"your IRC session by closing the console window or disconnecting by pressing "
+"the disconnect button.</center>"
+msgstr ""
+"<center>Aquest �s el missatge de sortida per defecte que s'emprar� "
+"quan<br>tenqui la seva sessi� IRC tancant la finestra de consola o "
+"desconnectant prement el bot� de desconnexi�.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:42
+msgid "Open Query For"
+msgstr "Obrir Privat per a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:40
+msgid "Private messages"
+msgstr "Missatges privats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:46
+msgid ""
+"<center>This option enables query window creation when a private message "
+"(PRIVMSG) is received.<br>If you disable this, private messages will be "
+"shown in the active window or a common channel.</center>"
+msgstr ""
+"<center>Aquesta opci� permet la creaci� de finestres independents quan es "
+"rep un missatge privat (PRIVMSG).<br>Si desactives aix�, els missatges seran "
+"mostrats en la finestra activa o en un canal com�.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:42
+msgid "Private notices"
+msgstr "Noticies privades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:55
+msgid ""
+"<center>This option enables query window creation when a private notice "
+"(NOTICE) is received.<br>If you disable this, private notices will be shown "
+"in the active window or a common channel.</center>"
+msgstr ""
+"<center>Aquesta opci� permet la creaci� de finestres independents quan es "
+"rep una not�cia privada (NOTICE).<br>Si desactives aix�, les not�cies seran "
+"mostrades a la finestra activa o a un canal com�.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:62
+#, fuzzy
+msgid "Always open queries as minimized"
+msgstr "Obrir totes minimitzades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:66
+msgid ""
+"<center>This option causes newly created query windows to be immediately "
+"minimized.<br>Enable this if you don't like queries popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+"<center>Aquesta opci� far� que les finestres amb privats recent creades "
+"siguin minimitzades immediatament.<br>Activi aix� si no li agrada que els "
+"privats interompeixin mentre est� teclejant alguna cosa en algun canal. :D</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:74
+msgid "Enable target user tracking"
+msgstr "Activar seguiment de dest� d'usuari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:77
+msgid ""
+"<center>This option will enable target user tracking.<br>Some actions of the "
+"target user (e.g. joins and parts) will be displayed in the window.<br></"
+"center>"
+msgstr ""
+"<center>Aquesta opci� permetr� rastrejar usuaris concrets.<br>Algunes "
+"accions d'alguns usuaris (p.e. entrades i sortides) seran mostrades a la "
+"finestra.<br></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:83
+msgid "Flash system taskbar on new query message"
+msgstr "Destell a la barra de feines des sistema amb els nous privats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:86
+msgid ""
+"<center>This option causes the system taskbar entry for KVIrc to flash when "
+"a new query message is received and the KVIrc window is not the active.</"
+"center>"
+msgstr ""
+"<center>Aquesta opci� far� que l'entrada de KVIrc a la barra de feines del "
+"sistema destelli quan es rebi un nou privat i la finestra de KVIrc no es "
+"trobi seleccionada.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:91
+msgid "Popup notifier on new query message"
+msgstr "Mostrar notificador amb els missatges privats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:94
+msgid ""
+"<center>This option causes a small notifier window to pop up in the low "
+"right corner of the screen when a new message is received and the KVIrc "
+"window is not active.</center>"
+msgstr ""
+"<center>Aquesta opci� far� que es mostri una petita finestra de "
+"notificacions a la cantonada de sota a la dreta quan es rebi un nou missatge "
+"i la finestra de KVIrc no estigui activa.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:98
+msgid "Show information about query target at the top of the query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:101
+msgid ""
+"<center>This option enables query window information label. It can show you "
+"known information about query target at the top of the window.<br>Uncheck if "
+"you think,that it wastes your query space/</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:39
+msgid "Use global application font"
+msgstr "Emprar font global de l'aplicaci�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:40
+#, fuzzy
+msgid "Hide icons in Popup"
+msgstr "Amagar Finestra de Cerca"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:41
+msgid "Global application font:"
+msgstr "Font global de l'aplicaci�:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:67
+msgid "Enable fake transparency"
+msgstr "Activar falsa transpar�ncia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:71
+msgid ""
+"<center>This option makes all KVIrc windows look transparent.<br>You must "
+"choose a blending background image to below or check the \"Use KDE desktop "
+"for transparency\" option.</center>"
+msgstr ""
+"<center>Aquesta opci� far� que totes les finestres de KVIrc es vegin "
+"transparents.<br>Has d'escollir una imatge per a barrejar amb el fons o "
+"activar l'opci� \"Emprar escriptori de KDE com a transpar�ncia\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:77
+msgid ""
+"<center>This option makes all KVIrc windows look like transparent.<br>You "
+"must choose a blending background image to below.</center>"
+msgstr ""
+"<center>Aquesta opci� far� que totes les finestres de KVIrc semblin "
+"transparents.<br> Has d'escollir tamb� una imatge de fons per a barrejar "
+"m�s a sota.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:83
+msgid "Child window opacity:"
+msgstr "Opacitat de la finestra filla:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:87
+msgid "Parent window opacity:"
+msgstr "Opacitat de la finestra pare:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:91
+msgid "Blend color:"
+msgstr "Color de la barreja:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:97
+msgid "Use KDE desktop for transparency"
+msgstr "Emprar escriptori de KDE com a transpar�ncia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:102
+msgid "Keep in sync with KDE background changes"
+msgstr "Mantindre's sincronitzat amb els canvis de fons de KDE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:111
+msgid "Transparency blend image:"
+msgstr "Imatge de barreja transparent:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:155
+msgid "Active Background"
+msgstr "Fons Actiu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:156
+msgid "Inactive Background"
+msgstr "Fons Inactiu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:157
+msgid "Active Text (Primary)"
+msgstr "Text Actiu (Primari)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:158
+msgid "Active Text (Secondary)"
+msgstr "Text Actiu (Secundari)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:159
+msgid "Inactive Text (Primary)"
+msgstr "Text Inactiu (Primari)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:160
+msgid "Inactive Text (Secondary)"
+msgstr "Text Inactiu (Secundari)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:197
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:44
+msgid "Background"
+msgstr "Fons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:178
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:205
+msgid "Background Image"
+msgstr "Imatge de Fons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:198
+msgid "Low-Contrast Foreground"
+msgstr "Primer Pla de Baix contrast"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:199
+msgid "Mid-Contrast Foreground"
+msgstr "Primer Pla de Contrast Mitj�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:200
+msgid "Active High-Contrast Foreground (Primary)"
+msgstr "Primer Pla Actiu d'Alt Contrast (Primari)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:201
+msgid "Active High-Contrast Foreground (Secondary)"
+msgstr "Primer Pla Actiu d'Alt Contrast (Secundari)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:202
+msgid "Inactive High-Contrast Foreground (Primary)"
+msgstr "Primer Pla inactiu d'Alt Contrast (Primari)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:203
+msgid "Inactive High-Contrast Foreground (Secondary)"
+msgstr "Primer Pla inactiu d'Alt Contrast (Secundari)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:40
+#, fuzzy
+msgid "Scaling in userlist"
+msgstr "Iniciant la llista de notificaci�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:41
+#, fuzzy
+msgid "Scale avatar images in userlist (recommended)"
+msgstr "Escalar imatges d'avatar (recomenat)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:43
+msgid ""
+"<center>This option will force KVIrc to scale avatars shown in the userlist."
+"<br>Avatars will be scaled to fit the constraints set below. Better keep "
+"this option on. :)</center>"
+msgstr ""
+"<center>Aquesta opci� obligar� a KVIrc a escalar els avatars a la llista "
+"d'usuaris.<br>Els avatars s'escalaran per a complir les restriccions "
+"seleccionades a sota. Conv� mantindre aquesta opci� activada. :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:48
+msgid "Do not scale avatar if it is less than required size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:59
+msgid "Image width:"
+msgstr "Amplada de la imatge:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:61
+msgid "Image height:"
+msgstr "Al�ada de la imatge:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:56
+#, fuzzy
+msgid "Scaling on load (and in user tooltips)"
+msgstr "Iniciant la llista de notificaci�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:57
+#, fuzzy
+msgid "Scale avatar images on image load"
+msgstr "Escalar imatges d'avatar (recomenat)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:65
+#, fuzzy
+msgid "Request CTCP"
+msgstr "Solicitar Llista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:66
+msgid "Request missing avatars"
+msgstr "Demanar avatars faltans"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:67
+msgid "Maximum requested file size:"
+msgstr "Mida m�xima d'arxius solicitada:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to send a DCC GET request when someone "
+"sets an avatar and there is no cached copy available.</center>"
+msgstr ""
+"<center>Aquesta opci� far� que KVIrc envii una petici� DCC GET quan alg� "
+"configuri un avatar i no tinguem una copia emmagatzemada disponible.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:74
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:317
+msgid " bytes"
+msgstr " bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:77
+msgid ""
+"<center>This is the maximum size for avatar images that will be "
+"automatically requested.<br>A reasonable value might be 102400 bytes (100 K)."
+"</center>"
+msgstr ""
+"<center>Aquest �s la m�xima mida per a les imatges d'avatar que seran "
+"solicitades autom�ticament.<br>Un valor raonable podria ser 102400 bytes "
+"(100 K).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:83
+msgid "Automatically accept incoming avatars"
+msgstr "Acceptar automaticament avatars entrants"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:87
+msgid ""
+"<center>This option will cause KVIrc to auto-accept DCC SEND requests for "
+"incoming avatars.<br>If you're using the \"Request missing avatars\" option "
+"above, enabling this may by useful.<br>Avatars will be saved in the local "
+"KVIrc directory.</center>"
+msgstr ""
+"<center>Aquesta opci� far� que KVIrc accepti autom�ticament les peticions "
+"DCC SEND d'avatars entrants.<br>Si est�s emprant l'opci� \"Demanar avatars "
+"faltants\" anterior, pot ser �til activar-la.<br>Els avatars seran guardats "
+"al directori local de KVIrc.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:94
+#, fuzzy
+msgid "Remember avatars for registered users"
+msgstr "Cach� d'avatars per a usuaris registrats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:99
+msgid ""
+"<center>Use a user's last known avatar by default (only for users that are "
+"registered).</center>"
+msgstr ""
+"<center>Emprar per defecte el �ltim avatar conegut per a l'usuari (nom�s per "
+"a usuaris que estan registrats).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:103
+msgid "Avatar offer timeout:"
+msgstr "Temps d'expiraci� de l'oferta d'avatar:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:104
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:162
+msgid " sec"
+msgstr " seg "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:107
+msgid ""
+"<center>This is the amount of time to make an avatar available for transfer "
+"when requested.<br>When someone sends a CTCP AVATAR request, KVIrc will "
+"reply with a CTCP AVATAR message containing the name and size of your avatar "
+"image.<br>A time-limited file offer is added for the image file to the "
+"requesting user.</center>"
+msgstr ""
+"<center>Aquesta �s la quantitat de tempms en que un avatar estar� disponible "
+"per a transferir quan sigui solicitat.<br>Quan alg� envii una petici� CTCP "
+"AVATAR, KVIrc pot respondre amb un missatge CTCP AVATAR contenint el nom i "
+"la mida de la teva imatge d'avatar.<br>S'oferir� el fitxer d'imatge durant "
+"temps limitat a l'usuari solicitant.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:115
+msgid "Ignore requests if no avatar is set"
+msgstr "Ignorar peticions si no hi ha un avatar seleccionat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:118
+msgid ""
+"This option will cause KVIrc to ignore channel CTCP AVATAR requests when you "
+"have no avatar set. This is usually a good practice since it helps in "
+"reducing traffic by not sending a reply that would be empty."
+msgstr ""
+"Aquesta opci� far� que KVIrc ignori les solicituts de canal CTCP AVATAR quan "
+"no tengui configurat un avatar.<br>Habitualment, aquesta �s una bona "
+"pr�ctica perqu� ajuda a reduir el tr�fic evitant enviar r�pliques que "
+"podrien estar buides."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:39
+msgid "Use online notify list"
+msgstr "Emprar llista de notificacions de connexi�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:44
+msgid "Configuration"
+msgstr "Configuraci�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:45
+msgid "Show notifications in active window"
+msgstr "Mostrar notificacions a la finestra actual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:50
+msgid "Flash window when users are going online"
+msgstr "Destell de la finestra quan els usuaris vagin estan en l�nia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:55
+msgid "Popup notifier when users are going online"
+msgstr "Mostrar notificador quan els usuaris vagin estant en l�nia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:59
+msgid "Advanced configuration"
+msgstr "Configuraci� Avan�ada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:64
+msgid "Check USERHOST for online users"
+msgstr "Comprovar USERHOST per a usuaris connectats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:69
+msgid "Use \"smart\" notify list manager"
+msgstr "Emprar gestor \"intel�ligent\" de llista de notificacions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:74
+msgid "Use the WATCH method if available"
+msgstr "Emprar el m�tode \"WATCH\" si est� disponible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:79
+msgid "Check interval (in seconds)"
+msgstr "Interval de comprobaci� (en segons)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:85
+msgid "ISON delay (in seconds)"
+msgstr "Retr�s ISON (en segons)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:91
+msgid "USERHOST delay (in seconds)"
+msgstr "Retr�s USERHOST (en segons)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:96
+msgid ""
+"<p><b>Note:</b><br>The notify list is managed using the \"Registered Users\" "
+"settings.</p>"
+msgstr ""
+"<p><b>Nota:</b><br>La llista de notificacions es gestiona emprant les "
+"opcions dels \"Usuaris Registrats\".</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:112
+#, fuzzy
+msgid "Forcibly and completely disable the notifier"
+msgstr "Desactivar for�ada i completament el notificador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:115
+msgid ""
+"This is an option for the impatient: it allows to forcibly and permanently "
+"disable the notifier window. Please note that if this option is activated "
+"then the notifier will NOT popup even if all the other options around "
+"specify to use it in response to particular events. Also note that this "
+"option will make all the /notifier.* commands fail silently."
+msgstr ""
+"Aquesta �s una opci� per a impacients: permet desactivar for�ada i "
+"completament la finestra de notificacions. Si us plau, observi que si "
+"s'activa aquesta opci� el notificador No es mostrar� fins i tot si totes les "
+"opcions restants especifiquen el seu us com a resposta a determinats events. "
+"Observi tamb� que aquesta opci� far� que totes les comandes /notifier.* "
+"fallin silenciosament."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:123
+msgid "Disable notifier window flashing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:124
+msgid "Disable notifier window fade effect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:39
+msgid "Default away message:"
+msgstr "Missatge d'abs�ncia per defecte:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:41
+msgid "User input exits away mode"
+msgstr "L'entrada de text surt del mode absent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:43
+msgid "Away Nickname"
+msgstr "Nick d'abs�ncia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:44
+msgid "Change nickname on away"
+msgstr "Canviar el nick a l'absentar-se"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:47
+msgid "Use automatic nickname ([5 letters]AWAY)"
+msgstr "Emprar nick d'abs�ncia autogenerat [5 lletres]AWAY) "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:55
+#, c-format
+msgid "Custom nickname (%%nick%% means a current nick):"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/libkvioptions.cpp:199
+#, fuzzy
+msgid "No such options page class name %Q"
+msgstr "No existeixen aquestes opcions a la p�gina del nom de la classe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:47
+#, fuzzy
+msgid "Use system URL handlers"
+msgstr "URL de manipuladors"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:50
+msgid "<b>http://</b> handler command:"
+msgstr "<b>http://</b> comanda manipuladora:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:51
+msgid "<b>https://</b> handler command:"
+msgstr "<b>https://</b> comanda manipuladora:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:52
+msgid "<b>ftp://</b> handler command:"
+msgstr "<b>ftp://</b> comanda manipuladora:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:53
+msgid "<b>mailto:</b> handler command:"
+msgstr "<b>mailto:</b> comanda manipuladora:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:54
+msgid "<b>file://</b> handler command:"
+msgstr "<b>file://</b> comanda manipuladora:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:55
+msgid "Unknown protocol handler command:"
+msgstr "Comanda manipuladora de protocol desconegut:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:61
+msgid "Use proxy"
+msgstr "Emprar proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:65
+msgid "Proxy"
+msgstr "Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:76
+msgid ""
+"<center>This is the list of available proxy servers.<br>Right-click on the "
+"list to add or remove proxies.</center>"
+msgstr ""
+"<center>Aquesta �s la llista de servidors proxy disponibles.<br>Pr�mer amb "
+"el bot� dret a la llista per a afegir o eliminar proxies.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:90
+msgid "New Proxy"
+msgstr "Nou Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:99
+msgid "Remove Proxy"
+msgstr "Eliminar Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:111
+msgid "Proxy:"
+msgstr "Proxy:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:131
+msgid "Protocol:"
+msgstr "Protocol:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:336
+msgid "&New Proxy"
+msgstr "&Nou Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:337
+msgid "Re&move Proxy"
+msgstr "Eli&minar Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:71
+msgid "Pattern"
+msgstr "Patr�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:72
+msgid "MIME Type"
+msgstr "Tipus MIME"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:87
+msgid "MIME type:"
+msgstr "Tipus MIME:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:92
+msgid "File pattern:"
+msgstr "Patr� d'arxiu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:97
+msgid "Magic bytes:"
+msgstr "Bytes m�gics:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:102
+msgid "Save path:"
+msgstr "Ruta per a guardar:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:107
+msgid "Local open command:"
+msgstr "Comanda d'apertura local:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:112
+msgid ""
+"<center>This field contains the command to execute to open a local file."
+"<br><tt>$0</tt> is used in place of the filename</center>"
+msgstr ""
+"<center>Aquest camp cont� la comanda a executar per a obrir un arxiu local."
+"<br><tt>$0</tt> ser� emprat en lloc del nom de l'arxiu</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:116
+msgid "Remote open command:"
+msgstr "Comanda d'apertura remota:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:121
+msgid ""
+"<center>This field contains the command to execute when automatically "
+"opening a received file.<br><tt>$0</tt> is used in place of the filename</"
+"center>"
+msgstr ""
+"<center>Aquest camp cont� la comanda a executar per a obrir autom�ticament "
+"un arxiu rebut.<br><tt>$0</tt> ser� emprat en lloc del nom de l'arxiu</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:125
+msgid "Icon"
+msgstr "Icona"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:134
+msgid "&New"
+msgstr "&Nou"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:138
+msgid "Re&move"
+msgstr "Eli&minar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:184
+msgid "[Unknown Media Type]"
+msgstr "[Tipus de Mitj� Desconegut]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:230
+msgid "New Media Type"
+msgstr "Nou Tipus de Medi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:53
+msgid "Nickname Colors"
+msgstr "Colors del Nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:56
+msgid "Channel owner:"
+msgstr "Propietari del canal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:57
+msgid "Channel admin:"
+msgstr "Administrador del canal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:58
+msgid "Op:"
+msgstr "Op:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:59
+msgid "Half-op:"
+msgstr "Semioperador:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:60
+msgid "Voice:"
+msgstr "Veu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:61
+msgid "User-op:"
+msgstr "Usuaris operadors:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:62
+#, fuzzy
+msgid "Away:"
+msgstr "Absent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:66
+msgid "Use different color for own nick:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:81
+msgid "Draw nickname grid"
+msgstr "Dibuixar reixa de nicks"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:83
+msgid "Grid color:"
+msgstr "Color de la reixa:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:90
+msgid "Grid type:"
+msgstr "Tipus de reixa:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:94
+msgid "3D Grid"
+msgstr "Reixa 3D"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:95
+msgid "3D Buttons"
+msgstr "Botons 3D"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:96
+msgid "Plain Grid"
+msgstr "Reixa Plana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:97
+msgid "Dotted Grid"
+msgstr "Reixa Puntejada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:131
+msgid "Horizontal Alignment:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:135
+#, fuzzy
+msgid "Vertical Alignment:"
+msgstr "Localitzar el certificat:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:231
+#, fuzzy
+msgid "Show gender icons"
+msgstr "Mostrar icones de missatges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:232
+msgid "Show user channel icons"
+msgstr "Mostrar icones d'usuaris del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:233
+msgid "Show user channel activity indicator"
+msgstr "Mostrar indicador d'activitat d'usuari al canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:234
+msgid "Hide users label"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:235
+msgid "Enable user tooltips"
+msgstr "Activar tooltips d'usuari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:236
+#, fuzzy
+msgid "Hide avatars"
+msgstr "Emprar avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:79
+msgid "Use flood protection (recommended)"
+msgstr "Utilitzar protecci� de saturaci� (recomenat)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:81
+msgid ""
+"<center>This option makes KVIrc only respond to a limited number of CTCP "
+"requests within a specified time interval, to prevent \"flooding\" CTCP "
+"messages.</center>"
+msgstr ""
+"<center>Aquesta opci� far� que KVIrc nom�s respongui a un n�mero limitat de "
+"peticions CTCP dintre d'un interval especificat de temps, per a prevenir el "
+"\"flooding\" (saturaci�) de missatges CTCP.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:83
+msgid "Allow up to:"
+msgstr "Permetre fins:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:84
+msgid " requests"
+msgstr " peticions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:86
+msgid ""
+"<center>Minimum value: <b>0 requests</b><br>Maximum value: <b>10000 "
+"requests</b></center>"
+msgstr ""
+"<center>Valor m�nim: <b>0 peticions</b><br>Valor m�xim: <b>86400 peticions</"
+"b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:89
+msgid "within:"
+msgstr "cada:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:92
+msgid ""
+"<center>Minimum value: <b>1 sec</b><br>Maximum value: <b>3600 sec</b></"
+"center>"
+msgstr ""
+"<center>Valor m�nim: <b>1 seg</b><br>Valor m�xim: <b>3600 seg</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:96
+msgid "Ignored Requests"
+msgstr "Ignorar Peticions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:97
+msgid "PING"
+msgstr "PING"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:98
+msgid "FINGER"
+msgstr "FINGER"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:99
+msgid "CLIENTINFO"
+msgstr "CLIENTINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:100
+msgid "USERINFO"
+msgstr "USERINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:101
+msgid "VERSION"
+msgstr "VERSION"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:102
+msgid "SOURCE"
+msgstr "SOURCE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:103
+msgid "TIME"
+msgstr "TIME"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:104
+msgid "PAGE"
+msgstr "PAGE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:105
+msgid "AVATAR"
+msgstr "AVATAR"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:106
+msgid "DCC/TDCC"
+msgstr "DCC/TDCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:131
+msgid "General Preferences"
+msgstr "Prefer�ncies Generals"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:134
+#, fuzzy
+msgid "Theme Preferences"
+msgstr "Prefer�ncies"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:136
+#, fuzzy
+msgid "KVIrc Preferences"
+msgstr "Prefer�ncies"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:139
+msgid ""
+"This dialog contains a set of KVIrc settings.<br> Use the icons on the left "
+"to navigate through the option pages. The text box in the bottom left corner "
+"is a small search engine. It will highlight the pages that contain options "
+"related to the search term you have entered."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:147
+msgid ""
+"Many settings have tooltips that can be shown by holding the cursor over "
+"their label for a few seconds."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:152
+msgid ""
+"When you have finished, click \"<b>OK</b>\" to accept your changes or "
+"\"<b>Cancel</b>\" to discard them. Clicking \"<b>Apply</b>\" will commit "
+"your changes without closing the window."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:217
+msgid ""
+"<p>This is the search tool for this options dialog.</p><p>You can enter a "
+"search term either in your native language or in english and press the "
+"button on the right. The pages that contain some options related to the "
+"search term will be highlighted and you will be able to quickly find them.</"
+"p><p>Try \"nickname\" for example.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:249
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:61
+msgid "Close this dialog, accepting all changes."
+msgstr "Tancar di�leg, acceptant tots els canvis."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:255
+msgid "&Apply"
+msgstr "&Aplicar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:256
+msgid "Commit all changes immediately."
+msgstr "Gravar tots els canvis immediatament."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:69
+msgid "Close this dialog, discarding all changes."
+msgstr "Tancar di�leg, descartant tots els canvis."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:149
+msgid ""
+"This table contains the text icon associations.<br>KVirc will use them to "
+"display the CTRL+I escape sequences and eventually the emoticons."
+msgstr ""
+"Aquesta taula cont� les associacions d'icones de text.<br>KVIrc les emprar� "
+"per a visualitzar les seq��ncies d'escapada CTRL+I i eventualment els "
+"emoticons."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:165
+msgid "Add"
+msgstr "Afegir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:169
+msgid "Delete"
+msgstr "Esborrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:191
+msgid "unnamed"
+msgstr "sense nom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:53
+msgid "Enable word highlighting"
+msgstr "Activar ressaltat de paraules"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:55
+msgid "Words to highlight:"
+msgstr "Paraules a ressaltar:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:57
+msgid "Word splitters:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:59
+msgid "Highlight messages containing my nickname"
+msgstr "Ressaltar sempre els missatges que continguin el meu nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:61
+msgid ""
+"<center>If this option is enabled, KVIrc will highlight any user message "
+"containing your current nickname</center>"
+msgstr ""
+"<center>Si s'activa aquesta opci�, KVIrc ressaltar� qualsevol missatge "
+"d'usuari que contingui el seu nick</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:63
+msgid "Flash the system taskbar entry on highlighted messages"
+msgstr "Destell en la barra de feines del sistema amb els missatges ressaltats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:65
+msgid ""
+"<center>If this option is enabled, KVIrc will (attempt to) flash the system "
+"taskbar entry when a highlighted message is printed and KVIrc is not the "
+"active window</center>"
+msgstr ""
+"<center>Si s'activa aquesta opci�, KVIrc (intentar�) que l'entrada de la "
+"barra de feines del sistema destelli quan es mostri un missatge ressaltat i "
+"KVIrc no sigui la finestra activa</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:67
+msgid "Popup the notifier window on highlighted messages"
+msgstr "Mostrar la finestra de notificaci� amb els missatges ressaltats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:69
+msgid ""
+"<center>If this option is enabled, KVIrc will popup a little notifier window "
+"in the low right corner of your desktop when a highlighted message is "
+"printed and KVIrc is not the active window</center>"
+msgstr ""
+"<center>Si s'habilita aquesta opci�, KVIrc mostrar� una petita finestra de "
+"notificacions al rac� inferior dret de l'escriptori quan es visualitzi un "
+"missatge ressaltat i KVIrc sigui la finestra activa</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:91
+#, fuzzy
+msgid "Alert Restrictions"
+msgstr "Editar Registre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:92
+msgid "Restrict alert"
+msgstr "Restringir alertes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:94
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if a "
+"normal message is received in a channel.<br>Actions like joins, parts and "
+"mode changes will be ignored.<br> This is useful if you are in channels with "
+"a high rate of traffic and only want to be alerted for messages that are "
+"interesting to you.</center>"
+msgstr ""
+"<center>Si aquesta opci� est� activa, KVIrc alertar� a la barra de feines "
+"nom�s si rep un missatge normal en un canal.<br>Accions com entrades, "
+"sortides i canvis de mode seran ignorades.<br> Aix� �s �til si es troba en "
+"canals amb una gran quantitat de tr�fic i nom�s vol ser alertat de missatges "
+"que l'interessin.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:96
+msgid "Alert for highlighted words"
+msgstr "Alertar per paraules ressaltades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:98
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which contain a word from the highlighted words list above.</center>"
+msgstr ""
+"<center>Si s'activa aquesta opci�, la barra de feines tamb� alertar� de "
+"missatges que continguin una paraula present a la llista de paraules "
+"ressaltades de la llista anterior.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:100
+msgid "Alert for query messages"
+msgstr "Alertar per missatges privats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:102
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which are shown in queries.</center>"
+msgstr ""
+"<center>Si s'activa aquesta opci�, la barra de feines alertar� tamb� de "
+"missatges mostrats en privats.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:107
+msgid "Use custom alert level"
+msgstr "Emprar un nivell d'alerta personalitzat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:109
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if "
+"the specified alert level is reached.</center>"
+msgstr ""
+"<center>Si s'activa aquesta opci�, KVIrc alertar� a la barra de feines nom�s "
+"si s'arriba al nivell d'alerta especificat.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:111
+msgid "Minimum alert level:"
+msgstr "Nivell d'alerta m�nim:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:114
+msgid ""
+"<center>This option sets the minimum alert level for the taskbar.</center>"
+msgstr ""
+"<center>Aquesta opci� configura el m�nim nivell de alerta per a la barra de "
+"feines.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:213
+msgid "Output verbosity"
+msgstr "Detall de la sortida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:49
+msgid "Mute"
+msgstr "Callat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:50
+msgid "Quiet"
+msgstr "Discret"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:51
+msgid "Normal"
+msgstr "Normal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:52
+msgid "Verbose"
+msgstr "Detallat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:53
+msgid "Paranoic"
+msgstr "Paranoic"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:59
+msgid "Show in active window"
+msgstr "Mostrar a la finestra activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:60
+msgid "External messages"
+msgstr "Missatges externs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:61
+msgid "External CTCP replies"
+msgstr "Contestacions CTCP externes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:62
+msgid "Whois replies"
+msgstr "Respostes Whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:63
+msgid "ChanServ and NickServ notices"
+msgstr "Not�cies dels servidors de Nick i CHAN"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:64
+msgid "Invite messages"
+msgstr "Missatges d'invitaci�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:65
+msgid "Server replies"
+msgstr "Respostes del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:66
+msgid "Server notices"
+msgstr "Not�cies del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:67
+msgid "Broadcast and WALLOPS messages"
+msgstr "Missatges de difusi� i WALLOP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:70
+msgid "Show extended server information"
+msgstr "Mostrar informaci� ampliada del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:71
+msgid "Show server pings"
+msgstr "Mostrar pings del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:72
+msgid "Show own parts in the console"
+msgstr "Mostrar les sortides pr�pies a consola"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:73
+msgid "Show compact mode changes"
+msgstr "Mostrar canvis de mode compactes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:43
+#, fuzzy
+msgid "Minimize on startup"
+msgstr "Minimitzar nous privats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:44
+msgid "Confirm quit with active connections"
+msgstr "Confirmar sortida amb connexions actives"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:45
+msgid "Remember window properties"
+msgstr "Recordar propietats de finestra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:50
+#, fuzzy
+msgid "Disable splash screen"
+msgstr "Deshabilitar els avisos de l'analitzador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:54
+msgid "Enable visual effects"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:55
+msgid "Hide Channel window tool buttons by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:57
+msgid "Open Dialog Window For"
+msgstr "Obrir Di�leg de Finestra per a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:58
+msgid "Preferences"
+msgstr "Prefer�ncies"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:59
+msgid "Registered Users"
+msgstr "Usuaris Registrats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:149
+msgid "Servers"
+msgstr "Servidors"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.cpp:40
+msgid ""
+"This section contains irc tools<br><p>like<b> away, lag and logging system. "
+"</b> </p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:39
+#, fuzzy
+msgid "On Disconnect"
+msgstr "Desconnectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:42
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:55
+msgid "Keep channels open"
+msgstr "Mantindre els canals oberts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:44
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after disconnect."
+"</center>"
+msgstr ""
+"<center>Aquesta opci� far� que KVIrc mantingui els canals oberts despr�s "
+"d'una desconnexi� inesperada.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:47
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:60
+msgid "Keep queries open"
+msgstr "Mantindre els privats oberts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:49
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after disconnect.</"
+"center>"
+msgstr ""
+"<center>Aquesta opci� far� que KVIrc mantingui els privats oberts despr�s "
+"d'una desconnexi� inesperada.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:52
+msgid "On Unexpected Disconnect"
+msgstr "En desconnexions inesperades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+"<center>Aquesta opci� far� que KVIrc mantingui els canals oberts despr�s "
+"d'una desconnexi� inesperada.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:62
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+"<center>Aquesta opci� far� que KVIrc mantingui els privats oberts despr�s "
+"d'una desconnexi� inesperada.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:65
+msgid "Rejoin channels after reconnect"
+msgstr "Tornar a unir-se a canals despr�s de reconectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:67
+msgid ""
+"<center>This option will cause KVIrc to rejoin channels after a successful "
+"reconnect attempt.</center>"
+msgstr ""
+"<center>Aquesta opci� far� que KVIrc torni a entrar en els canals despr�s "
+"d'un intent de reconnexi� amb �xit.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:69
+msgid "Reopen queries after reconnect"
+msgstr "Reobrir els privats despr�s de reconectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to reopen query windows after a "
+"successful reconnect attempt.</center>"
+msgstr ""
+"<center>Aquesta opci� far� que KVIrc reobri les finestres amb els privats "
+"despr�s d'un intent de reconnexi� amb �xit.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:75
+msgid "Automatically reconnect"
+msgstr "Reconectar autom�ticament"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:77
+msgid ""
+"<center>This option will enable auto-reconnecting after an unexpected "
+"disconnect. An unexpected disconnect is the <b>termination</b> of a <b>fully "
+"connected IRC session</b> that was <b>not requested by the user</b> by the "
+"means of the QUIT message.<p><b>Warning:</b> If you use /RAW to send a QUIT "
+"message to the server, this option will not behave correctly, since does not "
+"detect the outgoing QUIT message and will attempt to reconnect after the "
+"server has closed the connection. For this reason, always use the /QUIT "
+"command to close your connections. This option may also behave incorrectly "
+"with bouncers that support detaching, in this case a solution could be to "
+"prepare an alias that sends the bouncer \"detach\" command immediately "
+"before the \"quit\" command.<br><tt>alias(bncdetach){ raw bouncer detach; "
+"quit; }</tt></p></center>"
+msgstr ""
+"<center>Aquesta opci� habilitar� la reconnexi� autom�tica despr�s d'una "
+"desconnexi� inesperada �s la <b>terminaci�</b> d'una <b>sessi� completa "
+"d'IRC</b> que <b>no ha estat solicitada per l'usuari</b> mitjan�ant el "
+"missatge QUIT.<p><b>Atenci�:</b> Si empres /RAW per a enviar un missatge "
+"QUIT al servidor aquesta opci� no funcionar� correctament, perqu� no "
+"detectar� el QUIT sortint i intentar� reconnectar-se despr�s que el servidor "
+"hagi tancat la connexi�. Per aquesta ra�, empra sempre la comanda /QUIT per "
+"a tancar les teves connexions. Tamb� pot comportar-se incorrectament amb "
+"repetidors que suporten desassociaci�. En tal cas, una soluci� podria ser "
+"preparar un alies que envii la comanda \"detach\" immediatament abans de la "
+"comanda \"quit\".<br><tt>alies(bcndetach){ raw bouncer detach; quit; }</tt></"
+"p></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:89
+msgid "Maximum attempts (0: unlimited):"
+msgstr "Nombre m�xim d'intents (0: ilimitats):"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:94
+msgid "Delay between attempts:"
+msgstr "Espera entre intents:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:100
+msgid ""
+"<center>Minimum value: <b>0 sec</b><br>Maximum value: <b>86400 sec</b></"
+"center>"
+msgstr ""
+"<center>Valor m�nim: <b>0 seg</b><br>Valor m�xim: <b>86400 seg</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:123
+msgid "Certificate"
+msgstr "Certificat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:125
+msgid "Use SSL certificate (PEM format only)"
+msgstr "Emprar certificat SSL (nom�s format PEM)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:127
+msgid "Certificate location:"
+msgstr "Localitzar el certificat:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:130
+msgid "Certificate password:"
+msgstr "Clau del certificat:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:134
+msgid "Private Key"
+msgstr "Clau Privada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:135
+msgid "Use SSL private key"
+msgstr "Emprar clau privada SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:137
+msgid "Private key location:"
+msgstr "Localitzaci� de la clau privada:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:140
+msgid "Private key password:"
+msgstr "Clau de la clau privada:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:146
+msgid "This executable has no SSL support."
+msgstr "Aquest executable de KVIrc no t� suport SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:165
+msgid "Timeout Values"
+msgstr "Valors de Temps d'Expiraci�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:166
+msgid "Connect timeout:"
+msgstr "Temps d'expiraci� de connexi�:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:168
+msgid "Outgoing data queue flush timeout:"
+msgstr "Temps d'expiraci� per a volcar la cua de dades sortints"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:170
+msgid "Limit outgoing traffic"
+msgstr "Limitar tr�fic sortint"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:171
+msgid "Limit to 1 message every:"
+msgstr "Limitar a 1 missatge cada:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:173
+msgid " usec"
+msgstr " microseg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:175
+msgid ""
+"<center>Minimum value: <b>10000 usec</b><br>Maximum value: <b>10000000 usec</"
+"b></center>"
+msgstr ""
+"<center>Valor m�nim: <b>10000 microseg</b><br>Valor m�xim: <b>10000000 "
+"microseg</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:179
+msgid "Network Interfaces"
+msgstr "Interf�cies de xarxa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:181
+msgid "Bind IPv4 connections to:"
+msgstr "Unir connexions IPv4 a:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:185
+msgid "Bind IPv6 connections to:"
+msgstr "Unir connexions IPv6 a:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:210
+msgid "Enable ident service (bad practice on UNIX!)"
+msgstr "Activar servei ident (mala pr�ctica en UNIX!)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:216
+#, fuzzy
+msgid "Output identd messages to:"
+msgstr "Missatge de sortida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:218
+#, fuzzy
+msgid "Active window"
+msgstr "Mosaic de finestres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:219
+#, fuzzy
+msgid "Console"
+msgstr "Tancar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:220
+#, fuzzy
+msgid "Do not show any identd messages"
+msgstr "No mostrar colors als missatges d'usuari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:237
+msgid "Enable ident service only while connecting to server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:240
+msgid "Ident username:"
+msgstr "Nom d'Usuari d'Ident:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:243
+msgid "Service port:"
+msgstr "Port de servei:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:248
+msgid "IPv6 Settings"
+msgstr "Opcions IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:249
+msgid "Enable service for IPv6"
+msgstr "Activar servei IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:258
+msgid "IP stack treats IPv4 as part of IPv6 namespace"
+msgstr "La pila del sistema tracta IPv4 com a part de l'espai de noms IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:265
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications. If it is possible, install a real ident daemon.</p>"
+msgstr ""
+"<p><b>Atenci�:</b><br>Aquest �s un servei <b>no compatible RFC 1413</b> "
+"d'ident que nom�s implementa un limitat subconjunt de les especificacions el "
+"protocol d'identificaci�. �s possible instal�lar un servidor ident real.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:270
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications.<br>On UNIX, you may also need root privileges to bind to the "
+"auth port (113).<br>It is <b>highly recommended</b> that a <b>real</b> "
+"system-wide ident daemon be used instead, or none at all if ident is not "
+"required.</p>"
+msgstr ""
+"<p><b>Atenci�:</b><br>Aquest �s un servei <b>no compatible RFC 1413</b> "
+"d'ident que nom�s implementa un limitat subconjunt de les especificacions "
+"del protocol d'identificaci�.<br>En UNIX, pots necessitar tamb� privilegis "
+"de superusuari per a associar-se al port auth (113).<br>�s <b>altament "
+"recomanable</b> que un servidor global d'ident <b>real</b> sigui usuari al "
+"seu lloc, o cap en absolut si ident no �s necessari.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.cpp:39
+msgid ""
+"This section contains the general client options<br><p>like<b> sound, "
+"mediafiles, URL handler </b> etc... </p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:39
+msgid "Automatically Log"
+msgstr "Grabar registre autom�ticament"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:40
+msgid "Query windows"
+msgstr "Finestres de privats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:41
+msgid "Channel windows"
+msgstr "Finestres de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:42
+msgid "DCC Chat windows"
+msgstr "Finestres de transfer�ncies DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:43
+msgid "Console windows"
+msgstr "Finestres de consola"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:45
+msgid "Gzip logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:47
+#, fuzzy
+msgid "Strip colors in logs"
+msgstr "Treure colors"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:48
+msgid "Auto flush logs every"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:49
+msgid " min"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:52
+msgid ""
+"<center>Save logs with the current interval<br>Set to 0 to disable this "
+"feature</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:49
+msgid "Minimize console after successful login"
+msgstr "Minimitzar la consola despr�s d'entrar correctament"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:52
+msgid ""
+"<center>This option will cause KVIrc to minimize the console window after "
+"successfully logging into a server.</center>"
+msgstr ""
+"<center>Aquesta opci� far� que KVIrc minimitzi la finestra de consola "
+"despr�s d'entrar satisfactoriament a un servidor.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:55
+#, fuzzy
+msgid "Show network name in console taskbar entry"
+msgstr "Mostrar icones de finestra a la barra de feines"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to show the network name as the console "
+"taskbar entry instead of the server name. This is nice to keep on unless "
+"your servers are not organized in networks or you often connect to two "
+"servers of the same network.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:75
+msgid "Force immediate quit"
+msgstr "For�ar sortida immediata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:78
+msgid ""
+"<center>This option causes KVIrc to close the connection immediately after "
+"sending the QUIT message.<br>When this option is disabled, KVIrc will wait "
+"for the server to close the connection.<br>Note that if you use this, your "
+"QUIT message may be not displayed.</center>"
+msgstr ""
+"<center>Aquesta opci� far� que KVIrc tanqui la connexi� immediatament "
+"despr�s d'enviar el missatge QUIT.<br> Quan aquesta opci� est� desactivada, "
+"KVIrc esperar� a que el servidor tanqui la connexi�.<br>Observi que si "
+"utilitza aquesta opci�, el seu missatge QUIT pot no ser visualitzat.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:84
+msgid "Prepend gender info to realname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:110
+msgid "On Channel Kick"
+msgstr "En Expulsi� del Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:112
+msgid "Rejoin channel"
+msgstr "Reentrada al canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:115
+msgid ""
+"<center>This option will cause KVIrc to attempt to rejoin a channel after "
+"being kicked.</center>"
+msgstr ""
+"<center>Aquesta opci� far� que KVIrc torni a entrar al canal despr�s de ser "
+"expulsat.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:129
+msgid "Keep channel open"
+msgstr "Mantindre el canal obert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:121
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"being kicked.<br>It might be a good idea to also enable the \"Rejoin channel"
+"\" option.</center>"
+msgstr ""
+"<center>Aquesta opci� far� que KVIrc mantingui la finestra de canal oberta "
+"despr�s d'haver set expulsat.<br>Pot ser una bona idea activar tamb� l'opci� "
+"\"Reentrada al canal\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:127
+msgid "On Channel Part"
+msgstr "A la sortida del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:132
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"leaving it.</center>"
+msgstr ""
+"<center>Aquesta opci� far� que KVIrc mantingui la finestra del canal oberta "
+"despr�s d'abandonar-lo.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:136
+msgid "Automatically join channel on invite"
+msgstr "Entrar autom�ticament al canal quan ens invitin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:139
+msgid ""
+"<center>This option will cause KVIrc to automatically join a channel when an "
+"INVITE message for that channel is received.<br><b>Warning:</b> This may "
+"help spammers harass you. :)</center>"
+msgstr ""
+"<center>Aquesta opci� far� que KVIrc s'uneixi autom�ticament a un canal al "
+"que hagi estat convidat.<br><b>Atenci�:</b> Aix� pot ajudar als spammers a "
+"fastiguejar-lo. :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:144
+#, fuzzy
+msgid "Always open channels as minimized"
+msgstr "Obrir totes minimitzades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:148
+#, fuzzy
+msgid ""
+"<center>This option causes newly created channel windows to be immediately "
+"minimized.<br>Enable this if you don't like channels popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+"<center>Aquesta opci� far� que les finestres amb privats recent creades "
+"siguin minimitzades immediatament.<br>Activi aix� si no li agrada que els "
+"privats interompeixin mentre est� teclejant alguna cosa en algun canal. :D</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:168
+#, fuzzy
+msgid "Log joined channels history"
+msgstr "Llista de canals registrats:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:170
+#, fuzzy
+msgid "Default ban mask:"
+msgstr "Missatge d'abs�ncia per defecte:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:188
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:202
+msgid "On Channel Join"
+msgstr "A l'Entrada al Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:189
+msgid "Do not send /WHO request"
+msgstr "No enviar petici� /WHO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:190
+msgid "Do not request ban list"
+msgstr "No demanar llista de prohibits"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:191
+msgid "Do not request ban exception list"
+msgstr "No demanar llista d'expiraci� de prohibici�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:192
+msgid "Do not request invite list"
+msgstr "No demanar llista de convidats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:194
+#, fuzzy
+msgid "Do not update the away list"
+msgstr "No demanar llista de prohibits"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:197
+msgid ""
+"<center>KVIrc sends out a channel /WHO message every now and then to keep "
+"the channel away list in sync. Use this option to disable this feature (and "
+"to save your IRC bandwidth.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:203
+msgid "Echo channel topic"
+msgstr "Mostra el tema del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:204
+msgid "Show channel sync time"
+msgstr "Mostrar el temps de sincronitzaci� del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:40
+msgid "Default text encoding:"
+msgstr "P�gina de codis de text per defecte:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:109
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:133
+msgid "Use Language Encoding"
+msgstr "Emprar p�gina de codis del llenguatge"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:59
+msgid "Force language:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:65
+msgid "<b>Note:</b> You need to restart KVirc to apply a language changing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:68
+#, fuzzy
+msgid "Automatic detection"
+msgstr "Reconectar autom�ticament"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:69
+msgid "en"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+#, fuzzy
+msgid "Unable to write language information to"
+msgstr "No ha estat possible escriure en l'arxiu d'�lies."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:39
+msgid "Enable Anti-spam For"
+msgstr "Activar anti-spam per a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:45
+msgid "Silent anti-spam (no warnings)"
+msgstr "Anti-spam silenci�s (no avisa)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:46
+msgid "Words considered spam:"
+msgstr "Paraules considerades spam:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:51
+msgid "Use workaround for firewall"
+msgstr "Emprar rodeig per a tallafocs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:54
+msgid ""
+"<center>Enable this option if you can't accept incoming connections."
+"<br>KVIrc will try to use different methods to send and receive files."
+"<br>Please note that these methods may NOT work when communicating with a "
+"non-KVIrc client.</center>"
+msgstr ""
+"<center>Activa aquesta opci� si no pots acceptar connexions entrants."
+"<br>KVIrc intentar� emprar diferents m�todes per a enviar i rebre fitxers."
+"<br>Per favor, observa que aquests m�todes poden NO funcionar quan te "
+"comuniquis amb un client que no sigui KVIrc.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:73
+msgid "Network Properties"
+msgstr "Propietats de Xarxa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:75
+msgid "Use user-defined address or network interface"
+msgstr "Utilitzar adre�a o interf�cie de xarxa especificat per l'usuari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:79
+msgid ""
+"<center>Enable this option if you are on a multihost machine and want to "
+"force one of the available IP addresses to be used for outgoing DCCs."
+"<br>This is especially useful when you use IPv6 and IPv4 addresses.<br>You "
+"can force KVIrc to always choose the IPv4 interface.</center>"
+msgstr ""
+"<center>Activa aquesta opci� si est� en una m�quina amb diverses connexions "
+"de xarxa i vols for�ar que sigui una de les adreces IP disponibles la que "
+"s'utilitzi per als DCCs sortints.<br>Aix� �s especialment �til quan "
+"utilitzis adreces IPv4 e IPv6.<br>Pots for�ar a que KVIrc esculli sempre la "
+"interf�cie IPv4.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:84
+msgid "Listen on address/interface:"
+msgstr "Escoltar en adre�a/interf�cie:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:87
+msgid ""
+"<center>This is the IP address or name of the interface to use by default "
+"for outgoing DCC transfers.<br>On UNIX systems that support it, you can also "
+"specify IPv4 interface names (such as <b>ppp0</b>).<br>If you set it to "
+"<b>0.0.0.0</b>, KVIrc will try to use the first available IPv4 interface</"
+"center>"
+msgstr ""
+"<center>Aquesta �s l'adre�a IP o nom de la interf�cie que s'utilitzar� per "
+"defecte per a les transfer�ncies DCC sortints.<br>En els sistemes UNIX que "
+"ho suportin, tamb� poden utilitzar-se noms d'interf�cie IPv4 (com <b>ppp0</"
+"b>).<br>Si posa el valor d'aquesta opci� a <b>0.0.0.0</b>, KVIrc intentar� "
+"trobar la primera interf�cie IPv4 disponible</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:94
+msgid "Use user-defined port range"
+msgstr "Emprar rang de ports definits per l'usuari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:97
+msgid ""
+"<center>Enable this option if you want specify a local port range for DCC.</"
+"center>"
+msgstr ""
+"<center>Activi aquesta opci� si vols especificar un rang de ports locals per "
+"al DCC.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:102
+msgid "Lowest port:"
+msgstr "Port m�s baix:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:105
+msgid "Highest port:"
+msgstr "Port m�s alt:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:108
+msgid "Send a fixed address in requests"
+msgstr "Enviar una adre�a fixa en les peticions"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:111
+msgid ""
+"<center>Enable this option if you want to always send a fake IP address in "
+"your DCC requests.<br>This might be useful if you're behind a router with a "
+"static address that does network address translation (NAT) and forwards all "
+"or a range of ports.</center>"
+msgstr ""
+"<center>Activa aquesta opci� si vols enviar sempre una adre�a falsa en les "
+"teves peticions DCC.<br>Aix� pot ser �til si est�s darrera d'un router amb "
+"una adre�a est�tica que fa conversi� d'adreces de xarxa (NAT) i reenvia tots "
+"o un rang de ports.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:115
+msgid "Send address/interface:"
+msgstr "Enviar adre�a/interf�cie:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:119
+msgid ""
+"<center>This is the fixed address that will be sent with all DCC requests if "
+"you enable the option above.</center>"
+msgstr ""
+"<center>Aquesta �s l'adre�a fixa que s'enviar� a totes les peticions DCC si "
+"vost� marca l'opci�.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:123
+msgid "Guess address from IRC server if unroutable"
+msgstr "Imaginar adre�a des del servidor IRC si no �s rutable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:128
+msgid ""
+"<center>You can enable this option if you are behind a router that forwards "
+"all or a range of ports.<br>KVIrc will try to guess the IP address to use "
+"for DCC by looking up the local hostname as seen by the IRC server you're "
+"connected to.<br>This method is an exclusive alternative to the \"fixed "
+"address\" above.<br>It might guess the correct address automatically if "
+"certain conditions are met (e.g. the IRC server does not mask hostnames).</"
+"center>"
+msgstr ""
+"<center>Pots habilitat aquesta opci� si est�s darrere d'un enrutador que "
+"redirigeix tots o un rang de ports.<br>KVIrc intentar� esbrinar l'adre�a IP "
+"per a emprar-la per a DCC buscant el nom de m�quina local com ho veu el "
+"servidor IRC al que estiguis conectat.<br>Aquest m�tode �s exclusivament una "
+"alternativa a l'\"adre�a fixa\" anterior.<br> Pot esbrinar l'adre�a correcta "
+"autom�ticament si es compleixen certes condicions (p.e., el servidor IRC no "
+"emmascara los noms de m�quina).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:134
+msgid "Use \"broken bouncer hack\" to detect address"
+msgstr "Emprar el \"truc del repetidor trencat\" per a detectar l'adre�a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:137
+msgid ""
+"<center>When you're behind a dialup router and also tunneling through a "
+"psyBNC bouncer, you can use a bug in the bouncer to force KVIrc to bind the "
+"DCC connections to the dialup router's address.<br>It's an ugly hack - use "
+"it only if nothing else works.</center>"
+msgstr ""
+"<center>Quan est�s darrera d'un enrutador telef�nic i tamb� enrutes a trav�s "
+"d'un repetidor psyBNC, pots utilitzar un error en el repetidor per a for�ar "
+"a KVIrc a associar les connexions DCC a l'adre�a del repetidor telef�nic."
+"<br>�s un truc brut - empri'l si cap altre cosa funciona.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:144
+msgid "Notify failed DCC handshakes to the remote end"
+msgstr "Notificar al altre extrem les negociacions de DCC fallides"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:147
+msgid ""
+"<center>If you enable this option, when a DCC request from a remote user "
+"can't be satisfied KVIrc will notify him by a CTCP ERRMSG. This is a nice "
+"feature so it is a good idea to leave it on unless for some reason you have "
+"deactivated the antiflood system: in this case turning off this option might "
+"help if you often get attacked by CTCP floods.</center>"
+msgstr ""
+"<center>Si actives aquesta opci�, quan no pugui satisfer-se una petici� DCC "
+"d'un usuari remot, KVIrc se li ho notificar� mitjan�ant un CTCP ERRMSG. "
+"Aquesta �s una caracter�stica agradable per aix� �s bona idea deixar-la "
+"activa a menys que per alguna ra� hagis desactivat el sistema antisaturaci�: "
+"en aquest cas desactivar aquesta opci� pot ajudar si et veus atacat per "
+"saturacions de CTCP sovint.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:154
+msgid "Maximum number of DCC sessions"
+msgstr "M�xim n�mero de sessions DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:156
+msgid ""
+"<center>This is the maximum number of concurrent DCC sessions and it "
+"includes all the DCC types (send,chat,recv...). KVIrc will refuse the "
+"requests when this limit is reached.</center>"
+msgstr ""
+"<center>Aquest �s el m�xim n�mero de sessions DCC simult�nies i inclou tots "
+"els tipus de DCC (enviament, chat, recepci�...). KVIrc rebutjar� les "
+"peticions quan s'arribi a aquest l�mit.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:161
+msgid "DCC socket timeout:"
+msgstr "Temps d'expiraci� de socket DCC (segons):"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:164
+msgid ""
+"<center>This is the amount of time that KVIrc will wait for a response "
+"before assuming that a DCC has failed because the remote client was unable "
+"to connect to our listening socket.</center>"
+msgstr ""
+"<center>Aquesta �s la quantitat de temps que KVIrc esperar� una resposta "
+"abans d'assumir que un DCC ha fallat perqu� el extrem remot no ha sigut "
+"capa� de connectar al nostre socket a l'escolta.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:198
+msgid "On Incoming File"
+msgstr "En Arxiu Entrant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:371
+msgid "Automatically accept"
+msgstr "Acceptar autom�ticament"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:200
+#, fuzzy
+msgid "Open transfer window as minimized when auto-accepted"
+msgstr "Obrir minimitzada quan s'accepti autom�ticament"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:201
+msgid "Automatically resume when auto-accepted"
+msgstr "Continuar autom�ticament quan s'accepti autom�ticament"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:203
+#, fuzzy
+msgid "Save Location"
+msgstr "&Localitzaci�:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:204
+msgid "Download folder:"
+msgstr "Directori d'arxius descarregats:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:205
+msgid "Sort saved files by nicknames (create subfolders)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:206
+msgid "Guess save path from media type"
+msgstr "Estimar ruta per a guardar des del tipus de medi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:209
+#, fuzzy
+msgid "On Download Completion"
+msgstr "Directori d'arxius descarregats:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:210
+msgid "Notify completion in console"
+msgstr "Notificar finalitzaci� a consola"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:211
+#, fuzzy
+msgid "Notify completion in notifier"
+msgstr "Notificar finalitzaci� a consola"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:212
+#, fuzzy
+msgid "Automatically clear transfer"
+msgstr "Acceptar autom�ticament"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:215
+#, fuzzy
+msgid ""
+"<center>This option will cause succesfully terminated transfers to be "
+"automatically removed from the transfer window.</center>"
+msgstr ""
+"<center>Aquesta opci� far� que KVIrc es connecti al servidor d'IRC quan "
+"arranqui.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:220
+msgid "Always open transfer window as minimized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:238
+msgid "Bug Compatibility"
+msgstr "Compatibilitat d'errors"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:239
+msgid "Send ACK for byte 0"
+msgstr "Enviar ACK per al byte 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:242
+msgid ""
+"<center>This option causes KVIrc to send a zero-byte acknowledge to kick-"
+"start the DCC transfer with some buggy IRC clients.<br>Use it only if your "
+"DCC transfers stall just after establishing a connection without sending any "
+"data.</center>"
+msgstr ""
+"<center>Aquesta opci� far� que KVIrc envii un reconeixement de zero bytes "
+"per a iniciar r�pidament transfer�ncies DCC amb alguns clients IRC "
+"problem�tics.<br>Empri-ho en cas de que les transfer�ncies s'estanquin just "
+"despr�s d'establir una connexi� sense enviar dades.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:247
+msgid "Accept broken RESUME (mIRC file.ext)"
+msgstr "Acceptar RESUME erroni (mIRC arxiu.ext)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:250
+msgid ""
+"<center>This option causes KVIrc to accept RESUME requests with invalid "
+"filenames.<br>Use it if KVIrc fails to accept RESUME requests from other "
+"clients (e.g. some versions of mIRC).</center>"
+msgstr ""
+"<center>Aquesta opci� far� que KVIrc accepti sol�cituds RESUM amb nombres "
+"d'arxiu no v�lids.<br>Empri-ho si KVIrc falla al acceptar solicituts RESUME "
+"des d'altres clients (p.e., algunes versions de mIRC).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:254
+msgid "Replace spaces with underscores in outgoing filenames"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:257
+#, fuzzy
+msgid ""
+"<center>This option causes KVIrc to replace spaces with underscores in "
+"filenames for all the outgoing file transfers. This will fix filename "
+"handling with some buggy clients (e.g. some versions of mIRC)."
+msgstr ""
+"<center>Aquesta opci� far� que KVIrc accepti sol�cituds RESUM amb nombres "
+"d'arxiu no v�lids.<br>Empri-ho si KVIrc falla al acceptar solicituts RESUME "
+"des d'altres clients (p.e., algunes versions de mIRC).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:262
+msgid "Limits"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:265
+msgid "Limit upload bandwidth to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:273
+#, fuzzy
+msgid "bytes/sec"
+msgstr "bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:271
+msgid "Limit download bandwidth to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:277
+msgid "Maximum number of DCC transfers"
+msgstr "M�xim nombre de transfer�ncies DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:279
+msgid ""
+"<center>This is the maximum number of concurrent DCC transfers. KVIrc will "
+"refuse the requests when this limit is reached.</center>"
+msgstr ""
+"<center>Aquests �s el m�xim nombres de transfer�ncies DCC simult�nies. KVIrc "
+"rebutjar� les peticions quan s'arribi a aquest l�mit.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:283
+#, fuzzy
+msgid "Tweaks"
+msgstr "Prova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:285
+msgid "Use fast send (send ahead)"
+msgstr "Utilitzar enviament r�pid (tamb� conegut com a send ahead)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:288
+msgid ""
+"<center>The \"send ahead\" DCC method allows data to be sent faster by "
+"breaking some of the rules of the original DCC SEND protocol specification."
+"<br>Most clients can handle this kind of optimisation so disable it only if "
+"you have problems.</center>"
+msgstr ""
+"<center>El m�tode DCC \"send ahead\" permet enviar dades m�s r�pidament "
+"saltant-se algunes regles de l'especificaci� original del protocol DCC."
+"<br>Molts clients poden manipular aquest tipus d'optimitzaci�, per aix� "
+"desactiva-ho �nicament si trobes problemes.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:295
+msgid "Force idle step"
+msgstr "For�ar esperes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:298
+msgid ""
+"<center>Enable this option when the dcc file transfers tend to block your "
+"computer by consuming too much CPU time. When this option is enabled the "
+"idle interval below will be forcibly inserted between each sent/received "
+"data packet.</center>"
+msgstr ""
+"<center>Habilita aquesta opci� quan les transfer�ncies dcc tendeixin a "
+"bloquejar el teu ordinador consumint massa temps de CPU. Quan s'habilita "
+"aquesta opci� l'interval d'espera de sota ser� inserit a la for�a en cada "
+"paquet de dades enviat/rebut.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:310
+msgid ""
+"<center>This parameter controls the average delay between two packets sent "
+"or received.<br>A smaller interval will cause you to send data faster but "
+"will also add load to your CPU, disk and network interface.<br>Reasonable "
+"values are from 5 to 50 milliseconds.</center>"
+msgstr ""
+"<center>Aquest par�metre controla el retr�s mitj� entre dos paquets enviats "
+"o rebuts.<br>Un interval m�s petit far� que envii les dades m�s r�pidament "
+"per� tamb� afegir� c�rrega a la seva CPU, disc i interf�cie de xarxa.<br>Els "
+"valors raonables es troben entre 5 i 50 milisegons.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:316
+msgid "Packet size:"
+msgstr "Mida de paquet:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:320
+msgid ""
+"<center>This parameter controls the packet size used for DCC SEND.<br>With "
+"bigger packets you will be probably send data faster, but you will also "
+"saturate your bandwidth and in some cases cause more disk activity."
+"<br>Reasonable values are from 512 to 4096 bytes.</center>"
+msgstr ""
+"<center>Aquest par�metre contorla la mida de paquet per a DCC SEND.<br> Amb "
+"paquets m�s grans provablement enviar� les dades m�s r�pid, per� tamb� "
+"podr�s saturar el teu ample de banda i, en alguns casos, pot provocar m�s "
+"activitat de disc.<br>Els valors raonables estan entre 512 i 4096 bytes.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:349
+msgid "On Chat Request"
+msgstr "En Solicitut de Xat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:351
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:373
+msgid "Open minimized when auto-accepted"
+msgstr "Obrir minimitzada quan s'accepti autom�ticament"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:353
+#, fuzzy
+msgid "Always open as minimized"
+msgstr "Obrir totes minimitzades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:369
+msgid "Open all minimized"
+msgstr "Obrir totes minimitzades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:370
+msgid "On Voice Request"
+msgstr "En Solicitut de Veu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:376
+msgid "Force half-duplex mode on sound device"
+msgstr "For�ar mode half-duplex en dispositiu de so"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:377
+msgid "Volume slider controls PCM, not Master"
+msgstr "El deslli�ador controla el volum PCM, no el principal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:379
+msgid "Sound device:"
+msgstr "Dispositiu de so:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:380
+msgid "Mixer device:"
+msgstr "Dispositiu mesclador:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:382
+msgid "Pre-buffer size:"
+msgstr "Mida pre-buffer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:38
+msgid "Enable Ignore For"
+msgstr "Activar Ignorar Per a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:39
+msgid "Private/channel messages"
+msgstr "Missatges privat/canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:40
+msgid "Private/channel notices"
+msgstr "Notificacions de privat/canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:44
+msgid "Use verbose ignore (show messages in console)"
+msgstr "Emprar ignore detallat (mostrar missatges a consola)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:46
+#, fuzzy
+msgid "Sound System"
+msgstr "Sistema de so:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:66
+msgid "This allows you to select the sound system to be used with KVIrc."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:72
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:88
+msgid "Auto-detect"
+msgstr "Detectar autom�ticament"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:91
+msgid "Test"
+msgstr "Prova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:79
+#, fuzzy
+msgid "Media Player"
+msgstr "Tipus de Medis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:81
+msgid ""
+"This allows you to select the preferred media player to be used with the "
+"mediaplayer.* module commands and functions."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:102
+msgid "ID3 tags' encoding"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:104
+msgid "This allows you to select encoding of mp3 tags."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:125
+msgid "Winamp messages ecoding"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:127
+msgid "This allows you to select encoding of winamp messages."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:290
+#, fuzzy
+msgid "New Query opened"
+msgstr "Mantindre els privats oberts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:293
+msgid "New message in inactive query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:296
+#, fuzzy
+msgid "Highlighted message in inactive window"
+msgstr "Ressaltar sempre els missatges que continguin el meu nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:299
+#, fuzzy
+msgid "Me have been kicked"
+msgstr "Has sigut paginat per"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:39
+msgid "Selection background color"
+msgstr "Color de fons de la selecci�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:40
+msgid "Selection foreground color"
+msgstr "Color de primer pla de la selecci�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:41
+msgid "Control char color"
+msgstr "Color dels car�cters de control"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:42
+msgid "Cursor color"
+msgstr "Color del cursor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:141
+msgid "Warp cursor at the end of line when browsing history"
+msgstr "Posar el cursor al final de l�nia quan es navegui per l'historial"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:142
+msgid "Disable the input history window and it's log memory."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:143
+msgid "Hide input toolbuttons by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:144
+msgid "Nick completion"
+msgstr "Completat de Nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:145
+msgid "Use bash-like nick completion"
+msgstr "Emprar completat de nick a l'estil bash"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:146
+msgid "Nick completion postfix string"
+msgstr "Cadena postfixe per a completat de nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:147
+msgid "Use the completion postfix string for the first word only"
+msgstr ""
+"Emprar la cadena postfixa en el completat nomes per a la primera paraula"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:148
+msgid "Commandline in user-friendly mode by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:81
+msgid "Show message icons"
+msgstr "Mostrar icones de missatges"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:82
+msgid "Draw some emoticons (smileys) as pictures"
+msgstr "Dibuixar algunes emoticones (smileys) gr�ficament"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:83
+msgid "Don't show colors in user messages"
+msgstr "No mostrar colors als missatges d'usuari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:88
+#, fuzzy
+msgid "Nicknames"
+msgstr "Nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:90
+msgid "\"Smart\" nickname colors"
+msgstr "Colorejat \"intel�ligent\" de nicks"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:91
+msgid "Use same colors as in the userlist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:93
+msgid "Show nicknames in bold"
+msgstr "Mostrar nicks en negreta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:94
+msgid "Show user and host"
+msgstr "Mostrar usuari i m�quina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:95
+msgid "Show channel mode prefix"
+msgstr "Mostrar prefixe de mode de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:96
+msgid "User-defined prefix and postfix"
+msgstr "Prefixe i sufix definits per l'usuari"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:98
+msgid "[PREFIX]nickname[!user@host][POSTFIX] message"
+msgstr "[PREFIX]nick[!usuari@m�quina][SUFIX] missatge"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:112
+msgid "Prefix:"
+msgstr "Prefix:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:117
+msgid "Postfix:"
+msgstr "Sufix:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:131
+msgid "Show timestamp"
+msgstr "Mostrar marca de temps"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:134
+msgid "Use UTC time for timestamp"
+msgstr "Emprar temps UTC en marca de temps"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:141
+#, fuzzy
+msgid "Use special color for timestamps"
+msgstr "Emprar temps UTC en marca de temps"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:147
+#, fuzzy
+msgid "Timestamp format:"
+msgstr "Marca de temps"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:320
+msgid "Transparent"
+msgstr "Transparent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:401
+msgid "Message Type"
+msgstr "Tipus de missatge"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:417
+msgid "Background:"
+msgstr "Color de fons:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:426
+msgid "Foreground:"
+msgstr "Color de primer pla:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:434
+msgid "Alert level:"
+msgstr "Nivell d'alerta:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:454
+msgid "Log this"
+msgstr "Registrar aix�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:458
+msgid "Load From..."
+msgstr "Carregar Des de..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:460
+msgid "Save As..."
+msgstr "Guardar Com a..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:589
+msgid "Choose a Filename - KVIrc"
+msgstr "Esculli un nom d'arxiu - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:646
+msgid "Choose a Filename - KVIrc "
+msgstr "Trii un nom d'arxiu - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:40
+msgid "Enable lag meter"
+msgstr "Activar mesurador de retr�s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:42
+msgid ""
+"<center>This enables the lag meter engine, which checks at regular intervals "
+"how much lag (latency) the server has.</center>"
+msgstr ""
+"<center>Aix� habilita el motor de retrassos, que comprova a intervals "
+"regulars quan retr�s (lat�ncia) t� el servidor.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:45
+msgid "Lag meter heartbeat:"
+msgstr "Cad�ncia del mesurador de retr�s:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:49
+msgid ""
+"<center>This option allows you to set the lag meter heartbeat interval."
+"<br>The lower the heartbeat interval the higher will be the accuracy of the "
+"lag check but also higher cpu usage and data traffic to the server."
+"<br>Please note that this is NOT the interval between pings sent to the "
+"server: the pings (if any) will be sent really less often. 5000 is a "
+"reasonable value.</center>"
+msgstr ""
+"<center>Aquesta opci� permet escollir l'interval de cad�ncia del mesurador "
+"de retr�s. <br>Quant menor sigui l'interval de cad�ncia major ser� la "
+"fiabilitat de la mesura, per� tamb� ser� major el us de la CPU i el tr�fic "
+"de dades amb el servidor.<br>Si us plau, tingui en compte que aquest NO �s "
+"l'interval entre pings enviats al servidor: els ping (si n'hi ha) seran "
+"enviats molt menys freq�entment. 5000 �s un valor raonable.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:58
+msgid "Trigger event if lag exceeds:"
+msgstr "Disparar event si el retr�s excedeix de:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:61
+msgid ""
+"<center>This option controls the threshold for the OnLagAlarmTimeUp and "
+"OnLagAlarmTimeDown events. When the lag goes above the threshold "
+"OnLagAlarmTimeUp will be triggered and when the lag falls back below the "
+"threshold then OnLagAlarmTimeDown will be triggered</center>"
+msgstr ""
+"<center>Aquesta opci� controla l'umbral per als events OnLagAlarmTimeUp i "
+"OnLagAlarmTimeDown. Quan el retr�s excedeixi l'umbral es disparar� l'event "
+"OnLagAlarmTimeUp i quan el retr�s caigui per sota de l'umbral es disparar� "
+"OnLagAlarmTimeDown</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:68
+msgid "Show lag in IRC context display"
+msgstr "Mostrar retr�s a la pantalla de context d'IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:70
+msgid ""
+"<center>This makes the IRC context display applet show the current lag after "
+"the user's nickname (in seconds)</center>"
+msgstr ""
+"<center>Aix� fa que el applet de visualitzaci� de context IRC mostri el "
+"retr�s despr�s del nick de l'usuari (en segons)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.h:28
+msgid "Away"
+msgstr "Absent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.h:28
+msgid "CTCP"
+msgstr "CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:28
+msgid "DCC"
+msgstr "DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:59
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:41
+#, fuzzy
+msgid "Advanced"
+msgstr "Avan�at ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:72
+msgid "File Transfer"
+msgstr "Transfer�ncies d'Arxius"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:113
+msgid "Chat"
+msgstr "Xat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:126
+msgid "Voice"
+msgstr "Veu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:32
+msgid "IRC"
+msgstr "IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:73
+msgid "Channel"
+msgstr "Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:28
+msgid "Lag"
+msgstr "Retr�s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:30
+msgid "time,ping"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:37
+msgid "authentication,identify"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:31
+msgid "Language"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:34
+msgid "language,encoding,charset,codepage"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:28
+#, fuzzy
+msgid "Contacts"
+msgstr "Connectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:30
+msgid "notify,buddy,buddies,friends"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:42
+msgid "Notifier"
+msgstr "Notificador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:43
+#, fuzzy
+msgid "popup"
+msgstr "Men� emergent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:37
+msgid "Text"
+msgstr "Text"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:38
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:49
+msgid "theme,colors,output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:52
+#, fuzzy
+msgid "Message Style"
+msgstr "Tipus de missatge"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:56
+msgid "theme,privmsg,output,format"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:67
+msgid "Timestamp"
+msgstr "Marca de temps"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:71
+#, fuzzy
+msgid "time,timestamp"
+msgstr "Marca de temps"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:88
+#, fuzzy
+msgid "Message Colors"
+msgstr "Colors del Nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:169
+msgid "theme,colors,messages,output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:168
+#, fuzzy
+msgid "Color Set"
+msgstr "Colors"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.h:32
+msgid "Avatars"
+msgstr "Avatars"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:32
+#, fuzzy
+msgid "Sound"
+msgstr "So"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:48
+msgid "sound,xmms,audio,play,amarok"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:81
+#, fuzzy
+msgid "Sounds"
+msgstr "So"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:83
+msgid "sound,events"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:28
+msgid "URL handlers"
+msgstr "URL de manipuladors"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:31
+msgid "url,programs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:29
+#, fuzzy
+msgid "Tray icon"
+msgstr "Icones de text"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:31
+msgid "tray,dockwidget"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.h:33
+#, fuzzy
+msgid "Tools"
+msgstr "Eines"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.h:28
+#, fuzzy
+msgid "General options"
+msgstr "Accions gen�riques"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.h:31
+msgid "Interface"
+msgstr "Interf�cie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:29
+msgid "Text icons"
+msgstr "Icones de text"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:31
+#, fuzzy
+msgid "smileys,emoticons"
+msgstr "milisegons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:34
+msgid "Output"
+msgstr "Sortida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:48
+msgid "Look"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:101
+msgid "Features"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:46
+msgid "Media Types"
+msgstr "Tipus de Medis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:48
+msgid "file,audio,video,programs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:114
+#, fuzzy
+msgid "theme"
+msgstr "Tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:47
+msgid "Transparency"
+msgstr "Transpar�ncia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:48
+#, fuzzy
+msgid "theme,background"
+msgstr "Fons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:74
+#, fuzzy
+msgid "Window Captions"
+msgstr "Operacions amb Finestres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:88
+msgid "theme,mdi"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:87
+msgid "Workspace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:100
+msgid "ToolBar Applets"
+msgstr "Applets de Barra d'eines"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:101
+msgid "theme,toolbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:150
+msgid "connection"
+msgstr "connexi�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:33
+#, fuzzy
+msgid "Protection"
+msgstr "Protecci� de Saturaci�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:36
+msgid "ctcp,flood"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:144
+msgid "Avatar"
+msgstr "Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.h:28
+msgid "Anti-spam"
+msgstr "Anti-spam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:32
+msgid "Verbosity And Output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:34
+msgid "debug"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:28
+msgid "Logging"
+msgstr "Registre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:29
+msgid "save,output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:50
+msgid "Input"
+msgstr "Entrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:33
+msgid "theme,colors,text"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:33
+msgid "Taskbar"
+msgstr "Barra de Tasques"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:47
+#, fuzzy
+msgid "Tree Taskbar"
+msgstr "Barra de feines en arbre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:65
+#, fuzzy
+msgid "Foreground"
+msgstr "Color de primer pla:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:111
+#, fuzzy
+msgid "Classic Taskbar"
+msgstr "Barra de feines cl�ssica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:52
+msgid "Proxy Hosts"
+msgstr "Servidors Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:54
+#, fuzzy
+msgid "connection,servers"
+msgstr "Connexi� perduda amb el servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:28
+msgid "Alert/Highlight"
+msgstr "Alerta/Ressaltat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:42
+#, fuzzy
+msgid "Highlight"
+msgstr "Ressaltat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:55
+msgid "Taskbar Alert"
+msgstr "Barra de Feines d'Alertes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.h:29
+msgid "Flood Protection"
+msgstr "Protecci� de Saturaci�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:30
+msgid "Userlist"
+msgstr "Llista d'Usuaris"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:31
+msgid "theme,userlist,channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:45
+#, fuzzy
+msgid "theme,userlist,channel,background"
+msgstr "Fons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:66
+#, fuzzy
+msgid "theme,userlist,channel,colors"
+msgstr "canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:81
+msgid "Nickname Grid"
+msgstr "Reixa de Nicks"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:82
+#, fuzzy
+msgid "theme,userlist,channel,grid"
+msgstr "Fons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:102
+#, fuzzy
+msgid "userlist,channel"
+msgstr "canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:29
+msgid "Labels"
+msgstr "Etiquetes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:30
+msgid "theme,topic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:28
+#, fuzzy
+msgid "Scripting Engine"
+msgstr "Scripting"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:29
+msgid "scripting,kvs,debug"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:55
+msgid "SSL"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:72
+msgid "Socket"
+msgstr "Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:87
+msgid "Ident Service"
+msgstr "Servei d'Ident"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:29
+msgid "Ignore"
+msgstr "Ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:31
+#, fuzzy
+msgid "protection"
+msgstr "Protecci� de Saturaci�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:28
+msgid "Query"
+msgstr "Privat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:30
+#, fuzzy
+msgid "chat"
+msgstr "Xat"
+
+#, fuzzy
+#~ msgid "Output verosity"
+#~ msgstr "Detall de la sortida"
+
+#, fuzzy
+#~ msgid "Scaling"
+#~ msgstr "Scripting"
+
+#~ msgid "Save Current Theme"
+#~ msgstr "Guardar Tema Actual"
+
+#~ msgid "Theme name:"
+#~ msgstr "Nom del tema:"
+
+#~ msgid "Version:"
+#~ msgstr "Versi�:"
+
+#~ msgid "Author:"
+#~ msgstr "Autor:"
+
+#, fuzzy
+#~ msgid "Package format:"
+#~ msgstr "Format de Missatge"
+
+#~ msgid "Save Theme - KVIrc"
+#~ msgstr "Guardar Tema - KVIrc"
+
+#~ msgid "Unable to create theme directory."
+#~ msgstr "No puc crear el directori per al tema."
+
+#~ msgid "Theme saved successfully to "
+#~ msgstr "Tema guardat satisfactoriament a"
+
+#, fuzzy
+#~ msgid "Choose save directory"
+#~ msgstr "Seleccioni un Directori - KVIrc"
+
+#, fuzzy
+#~ msgid "You must select save directory"
+#~ msgstr "Seleccioni un Directori - KVIrc"
+
+#, fuzzy
+#~ msgid "Unable to create theme files directory."
+#~ msgstr "No puc crear el directori per al tema."
+
+#, fuzzy
+#~ msgid "Unable to create theme utils directory."
+#~ msgstr "No puc crear el directori per al tema."
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for reading."
+#~ msgstr "No puc obrir l'arxiu %s per a lectura."
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for writing."
+#~ msgstr "No puc obrir l'arxiu \"%s\" en mode escriptura"
+
+#, fuzzy
+#~ msgid "Choose filaname"
+#~ msgstr "Escull un Nom d'Arxiu de Registre"
+
+#, fuzzy
+#~ msgid "You must select filename"
+#~ msgstr "Ha d'escollir un nom de tema!"
+
+#~ msgid "You must choose a theme name!"
+#~ msgstr "Ha d'escollir un nom de tema!"
+
+#~ msgid "Refresh Theme List"
+#~ msgstr "Actualitzar Llista de Temes"
+
+#~ msgid "Save Current Theme..."
+#~ msgstr "Guardar Tema Actual..."
+
+#, fuzzy
+#~ msgid "Delete Selected Theme"
+#~ msgstr "Elimina&r Seleccionades"
+
+#~ msgid "Get More Themes..."
+#~ msgstr "Obtenir m�s Temes..."
+
+#, fuzzy
+#~ msgid "Open Theme - KVIrc"
+#~ msgstr "Guardar Tema - KVIrc"
+
+#, fuzzy
+#~ msgid "You must select file"
+#~ msgstr "No hi ha entrades triades."
+
+#~ msgid "Current Theme"
+#~ msgstr "Tema Actual"
+
+#~ msgid "<p>The active theme settings</p>"
+#~ msgstr "<p>Configuraci� del tema actiu</p>"
+
+#~ msgid "<p>Theme: %1</p>"
+#~ msgstr "<p>Tema: %1</p>"
+
+#~ msgid "<p>Version: %1</p>"
+#~ msgstr "<p>Versi�: %1</p>"
+
+#~ msgid "<p>Date: %1</p>"
+#~ msgstr "<p>Data: %1</p>"
+
+#~ msgid "<p>Author: %1</p>"
+#~ msgstr "<p>Autor: %1</p>"
+
+#, fuzzy
+#~ msgid "Timestamp color"
+#~ msgstr "Marca de temps"
+
+#~ msgid "Minimize new queries"
+#~ msgstr "Minimitzar nous privats"
+
+#~ msgid "Automatically close on completion"
+#~ msgstr "Tancar autom�ticament al finalitzar"
+
+#~ msgid "Idle interval:"
+#~ msgstr "Interval d'espera:"
+
+#~ msgid ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">General Preferences</font></h1></center></td></"
+#~ "tr><tr><td><br><br><center><b>These sections contain various settings for "
+#~ "KVIrc</b></center><br><br><p>When you have finished, click \"<b>OK</b>\" "
+#~ "to accept your changes or \"<b>Cancel</b>\" to discard them. Clicking "
+#~ "\"<b>Apply</b>\" will commit your changes without closing the window.</"
+#~ "td></tr><tr><td>Many settings have tooltips that can be shown by holding "
+#~ "the cursor over their label for a few seconds.</p></td></tr></table>"
+#~ msgstr ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">Prefer�ncies Generals</font></h1></center></td></"
+#~ "tr><tr><td><br><br><center><b>Estes seccions contenen diverses "
+#~ "configuracions per a KVIrc</b></center><br><br><p>Quan hagis finalitzat, "
+#~ "prem \"<b>Acceptar</b>\" per a acceptar els canvis o \"<b>Cancel�lar</b>"
+#~ "\" per a descartar-los. Prement \"<b>Aplicar</b>\" es gravaran els canvis "
+#~ "sense tancar la finestra.</td></tr><tr><td>Moltes opcions tenen tooltips "
+#~ "que poden mostrar-se mantenint el cursor sobre la seva etiqueta durant "
+#~ "uns pocs segons.</p></td></tr></table>"
+
+#~ msgid ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">General Preferences</font></h1></center></td></"
+#~ "tr><tr><td><br><br>Select a category in the list view on the left to view "
+#~ "the related settings. When you have finished, click \"<b>OK</b>\" to "
+#~ "accept your changes or \"<b>Cancel</b>\" to discard them. Clicking "
+#~ "\"<b>Apply</b>\" will commit your changes without closing this window."
+#~ "<br><br></td></tr></table>"
+#~ msgstr ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">Prefer�ncies Generals</font></h1></center></td></"
+#~ "tr><tr><td><br><br>Selecciona una categoria a la llista de l'esquerra per "
+#~ "a veure les opcions relacionades. Quan hagi finalitzat, prem "
+#~ "\"<b>Acceptar</b>\" per a acceptar els teus canvis o \"<b>Cancel�lar</b>"
+#~ "\" per a descartar-los. Prement \"<b>Aplicar</b>\" es gravaran els canvis "
+#~ "sense tancar aquesta finestra.<br><br></td></tr></table>"
+
+#~ msgid "Preferences - KVIrc"
+#~ msgstr "Prefer�ncies - KVIrc"
+
+#~ msgid "Standard Colors"
+#~ msgstr "Colors Est�ndard"
+
+#, fuzzy
+#~ msgid "Avatar Handling"
+#~ msgstr "Canvi d'avatar"
+
+#~ msgid "MDI Captions"
+#~ msgstr "T�tols MDI"
+
+#~ msgid "MDI Area"
+#~ msgstr "�rea MDI"
+
+#, fuzzy
+#~ msgid "Load & Save"
+#~ msgstr "Guardar"
+
+#, fuzzy
+#~ msgid "Output Style"
+#~ msgstr "Sortida"
+
+#~ msgid "Maximum number of rows:"
+#~ msgstr "M�xim nombre de files:"
+
+#~ msgid ""
+#~ "The list below shows the currently installed themes. To apply a theme "
+#~ "select it and click \"Ok\" or \"Apply\". Please note that the message "
+#~ "text colors are applied only to new messages in each window.<br>To "
+#~ "install a new theme, unpack it to:<br><b>"
+#~ msgstr ""
+#~ "La llista inferior mostra els temes instal�lats actualment. Per a "
+#~ "seleccionar un tema, esculle'l i prem \"Acceptar\" o \"Aplicar\". Si us "
+#~ "plau, observa que els colors del text dels missatges s'aplica �nicament "
+#~ "als nous missatges a cada finestra.<br>Per a instal�lar un nou tema, "
+#~ "desempaqueti'l a:<br><br>"
+
+#~ msgid "Custom nickname:"
+#~ msgstr "Nick personalitzat:"
+
+#, fuzzy
+#~ msgid "Normal user"
+#~ msgstr "Usuari Normal"
+
+#, fuzzy
+#~ msgid "Experienced user"
+#~ msgstr "usuari amb veu"
+
+#, fuzzy
+#~ msgid "Novice"
+#~ msgstr "Veu"
+
+#~ msgid "Alias"
+#~ msgstr "�lies"
+
+#, fuzzy
+#~ msgid "Rename"
+#~ msgstr "Nom real:"
+
+#, fuzzy
+#~ msgid "Edit the alias or namespace name"
+#~ msgstr "Editar �lies."
+
+#, fuzzy
+#~ msgid "Add Alias"
+#~ msgstr "�lies"
+
+#, fuzzy
+#~ msgid "Export Selected..."
+#~ msgstr "&Exportar Tots a..."
+
+#, fuzzy
+#~ msgid "Export All..."
+#~ msgstr "&Exportar Tots a..."
+
+#, fuzzy
+#~ msgid "Find In Aliases..."
+#~ msgstr "&Alies..."
+
+#, fuzzy
+#~ msgid "Alias Export"
+#~ msgstr "Editor d'�lies"
+
+#~ msgid "Write Failed - KVIrc"
+#~ msgstr "Errada d'Escriptura - KVIrc"
+
+#~ msgid "Unable to write to the alias file."
+#~ msgstr "No ha estat possible escriure en l'arxiu d'�lies."
+
+#, fuzzy
+#~ msgid "Do you really want to remove the alias \"%Q\" ?"
+#~ msgstr "�Realment vol borra la barra d'eines \"%1\" ?"
+
+#, fuzzy
+#~ msgid "Do you really want to remove the namespace \"%Q\" ?"
+#~ msgstr "�Realment vol borra la barra d'eines \"%1\" ?"
+
+#, fuzzy
+#~ msgid "Remove item"
+#~ msgstr "Treure %Q"
+
+#~ msgid "Yes"
+#~ msgstr "S�"
+
+#, fuzzy
+#~ msgid "Yes to All"
+#~ msgstr "Tri&ar Tot"
+
+#~ msgid "No"
+#~ msgstr "No"
+
+#, fuzzy
+#~ msgid "Missing Alias Name"
+#~ msgstr "Falta el nom de l'�lies"
+
+#, fuzzy
+#~ msgid "Missing Namespace Name"
+#~ msgstr "Falta el nom del cron�metre"
+
+#, fuzzy
+#~ msgid "Please enter the name for the new alias"
+#~ msgstr "Per favor, especifiqui les propietats de la nova barra d'eines"
+
+#, fuzzy
+#~ msgid "Please enter the name for the new namespace"
+#~ msgstr "Per favor, especifiqui les propietats de la nova barra d'eines"
+
+#, fuzzy
+#~ msgid "Rename Alias"
+#~ msgstr "Eli&minar �lies"
+
+#, fuzzy
+#~ msgid "Please enter the new name for the alias"
+#~ msgstr "Si us plau, trii la icona per a la Barra d'Eines"
+
+#, fuzzy
+#~ msgid "Namespace"
+#~ msgstr "Tipus de missatge"
+
+#~ msgid "Alias Editor"
+#~ msgstr "Editor d'�lies"
+
+#, fuzzy
+#~ msgid "The config file with id '%Q' is not open"
+#~ msgstr "L'arxiu de configuraci� '%s' no est� obert"
+
+#~ msgid ""
+#~ "The config file '%s' has been changed but is opened as read-only: changes "
+#~ "will be lost"
+#~ msgstr ""
+#~ "L'arxiu de configuraci� '%s' ha canviat per� est� obert com a nom�s "
+#~ "lectura: es perdran els canvis"
+
+#, fuzzy
+#~ msgid "The config file with id '%Q' is read only"
+#~ msgstr "L'arxiu de configuraci� amb id '%s' �s de nom�s lectura"
+
+#~ msgid "Request Links"
+#~ msgstr "Solicitar Enlla�os"
+
+#~ msgid "Link"
+#~ msgstr "Enlla�os"
+
+#~ msgid "Hops"
+#~ msgstr "Salts"
+
+#~ msgid "(None)"
+#~ msgstr "(Cap)"
+
+#~ msgid "Sent links request, waiting for reply..."
+#~ msgstr "Enviada petici� d'enlla�os, esperant resposta..."
+
+#~ msgid "Cannot request links: No active connection"
+#~ msgstr "No puc demanar enlla�os: No hi ha una connexi� activa"
+
+#~ msgid "Connected to %s (%s)"
+#~ msgstr "Connectat a %s (%s)"
+
+#~ msgid "Links cannot be requested: Not connected to a server"
+#~ msgstr ""
+#~ "Els enlla�os no poden ser sol�licitats: No est� connectat a un servidor"
+
+#~ msgid "Links for %Q [IRC Context %u]"
+#~ msgstr "Enlla�os per a %Q [Context IRC %u]"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Links for %Q</b></font> <font color=\"%s\">"
+#~ "[IRC Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>Enlla�os per a %Q</b></font> <font color=\"%s"
+#~ "\">[Context IRC %u]</font></nobr>"
+
+#~ msgid "Received end of links."
+#~ msgstr "Rebut final d'enlla�os"
+
+#~ msgid ""
+#~ "Broken link: Missing parent (%s) for %s (%d hops): %s (used /LINKS "
+#~ "<mask> ?)"
+#~ msgstr ""
+#~ "Enlla� trencat: falta el pare (%s) per a (%s) (%d salts): %s (s'ha "
+#~ "emprat /LINKS <m�scara> ?)"
+
+#~ msgid "%s: Parent link %s"
+#~ msgstr "%s : Enlla� pare %s"
+
+#~ msgid ""
+#~ "Warning: No root link was sent by the server, the stats may be invalid."
+#~ msgstr ""
+#~ "Av�s: El servidor no ha enviat l'enlla� arrel : les estad�stiques poden "
+#~ "ser incorrectes."
+
+#~ msgid "%c%cLinks for %Q"
+#~ msgstr "%c%cEnlla�os per a %Q"
+
+#~ msgid "Total hosts listed"
+#~ msgstr "Total m�quines llistades"
+
+#~ msgid "Total hosts in the network"
+#~ msgstr "Total de m�quines a la xarxa"
+
+#~ msgid "Wildcard servers (hubs?): %d"
+#~ msgstr "Servidors comodins (�concentradors?): %d"
+
+#~ msgid "Direct links: %d (~%d.%d %)"
+#~ msgstr "Enlla�os directes: %d (~%d.%d %)"
+
+#~ msgid "Close links (1 <= hops <= 3): %d (~%d.%d %)"
+#~ msgstr "Enlla�os propers (1 <= salts <= 3): %d (~%d.%d %)"
+
+#~ msgid "Mid-range links (4 <= hops <= 6): %d (~%d.%d %)"
+#~ msgstr "Enlla�os mitja dist�ncia (4 <= salts <= 6): %d (~%d.%d %)"
+
+#~ msgid "Distant links (7 <= hops): %d (~%d.%d %)"
+#~ msgstr "Enlla�os llunyans (7 <= salts): %d (~%d.%d %)"
+
+#~ msgid "Broken (unknown) links: %d"
+#~ msgstr "Enlla�os erronis (desconeguts): %d"
+
+#~ msgid "Maximum links per host: %d [%s]"
+#~ msgstr "Enlla�os m�xims per m�quina: %d [%s]"
+
+#~ msgid "Total links: %d"
+#~ msgstr "Enlla�os totals: %d"
+
+#~ msgid "Maximum hops: %d [%s]"
+#~ msgstr "M�xims salts: %d [%s]"
+
+#~ msgid "Average hops: ~%d.%d"
+#~ msgstr "Salts promig: ~%d.%d"
+
+#~ msgid "(Unknown)"
+#~ msgstr "(Desconegut)"
+
+#~ msgid "Incomplete LINKS result, no stats available"
+#~ msgstr "Resultat parcial per a LINKS, no hi ha estad�stiques disponibles"
+
+#~ msgid "You're not connected to a server"
+#~ msgstr "No est� connectat a un servidor"
+
+#~ msgid "Reset"
+#~ msgstr "Reiniciar"
+
+#~ msgid "Processing link: %s"
+#~ msgstr "Processant enlla�: %s"
+
+#~ msgid "Broken message syntax, can't extract hops number, assuming 0"
+#~ msgstr ""
+#~ "Sintaxis de missatge err�nia, no puc extreure el n�mero de salts, "
+#~ "s'assumeix 0"
+
+#~ msgid "Links window alread open for this IRC context"
+#~ msgstr "La finestra d'enlla�os ja est� oberta per a aquest context d'IRC"
+
+#~ msgid "Current window is not a channel"
+#~ msgstr "La finestra actual no �s una canal"
+
+#~ msgid "List window alread open for this IRC context"
+#~ msgstr "Ja est� oberta la llista de finestres per a aquest context IRC"
+
+#~ msgid "Request List"
+#~ msgstr "Solicitar Llista"
+
+#, fuzzy
+#~ msgid "Stop list download"
+#~ msgstr "Descarrega la Llista"
+
+#~ msgid ""
+#~ "<center><b>/LIST command parameters:</b><br>Many servers accept special "
+#~ "parameters that allow you to filter the returned entries.<br>Commonly, "
+#~ "masked channel names (*kvirc*) are accepted as parameters, as well as "
+#~ "strings like <b>c&lt;n</b> or <b>c&gt;n</b> where <b>n</b> is the minimum "
+#~ "or maximum of users on the channel.</center>"
+#~ msgstr ""
+#~ "<center><b>Par�metres de comanda de /LIST:</b><br>Molts servidors "
+#~ "accepten par�metres especials que permeten filtrar les entrades tornades."
+#~ "<br>Normalment, s'accepten noms de canals amb m�scara com a par�metres "
+#~ "(*kvirc*),i cadenes com a <b>c&lt;n</b> o <b>c&gt;n</b> on <b>n</b> �s el "
+#~ "n�mero m�nim o m�xim d'usuaris al canal.</center>"
+
+#~ msgid "Users"
+#~ msgstr "Usuaris"
+
+#~ msgid "Topic"
+#~ msgstr "Tema"
+
+#~ msgid "Sent list request, waiting for reply..."
+#~ msgstr "Enviada petici� de llista, esperant resposta..."
+
+#~ msgid "Cannot request list: No active connection"
+#~ msgstr "No puc demanar la llista: No hi ha una connexi� activa"
+
+#, fuzzy
+#~ msgid "Cannot stop list download, no active connection."
+#~ msgstr "No puc demanar la llista: No hi ha una connexi� activa"
+
+#~ msgid "List cannot be requested: Not connected to a server"
+#~ msgstr "No es pot solicitar la llista: No est� connectat a un servidor"
+
+#~ msgid "Channel List [IRC Context %u]"
+#~ msgstr "Llista de Canals [Context IRC %u]"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Channel List</b></font> <font color=\"%s\">"
+#~ "[IRC Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>Llista de Canals</b></font> <font color=\"%s"
+#~ "\">[Context IRC %u]</font></nobr>"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Channel list</b></font> <font color=\"%s\">"
+#~ "[IRC Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>Llista de canals</b></font> <font color=\"%s"
+#~ "\">[Context IRC %u]</font></nobr>"
+
+#~ msgid "Processing list: %Q"
+#~ msgstr "Processant llista: %Q"
+
+#~ msgid "Search keywords"
+#~ msgstr "Buscar paraules clau"
+
+#~ msgid "Help Browser"
+#~ msgstr "Navegador de l'Ajuda"
+
+#~ msgid "No such channel/netmask entry in the database"
+#~ msgstr ""
+#~ "No existeix una entrada per a aquest canal/m�scara de xarxa a la base de "
+#~ "dades"
+
+#~ msgid "Channel: %c%s@%s"
+#~ msgstr "Canal: %c%s@%s"
+
+#~ msgid " Property: %s=%s"
+#~ msgstr " Propietat: %s=%s"
+
+#~ msgid "Total %d channels"
+#~ msgstr "Total %d canals"
+
+#~ msgid "Show URL List"
+#~ msgstr "Mostrar Llista d'URL"
+
+#~ msgid "Shows the URL list window"
+#~ msgstr "Mostra la finestra de llista d'URL"
+
+#~ msgid "&Configure"
+#~ msgstr "&Configurar"
+
+#~ msgid "&Help"
+#~ msgstr "Ajuda"
+
+#~ msgid "Clo&se"
+#~ msgstr "Tancar"
+
+#~ msgid "&Module"
+#~ msgstr "&M�dul"
+
+#~ msgid "&Load"
+#~ msgstr "Carregar"
+
+#~ msgid "&Clear"
+#~ msgstr "Netejar"
+
+#~ msgid "&List"
+#~ msgstr "&Llista"
+
+#~ msgid "URL"
+#~ msgstr "URL"
+
+#~ msgid "Window"
+#~ msgstr "Finestra"
+
+#~ msgid "Count"
+#~ msgstr "Contador"
+
+#~ msgid "Warning - KVIrc"
+#~ msgstr "Advert�ncia - KVIrc"
+
+#~ msgid "Select an URL."
+#~ msgstr "Seleccioni una URL."
+
+#~ msgid "&Remove"
+#~ msgstr "Elimina&r"
+
+#~ msgid "&Find Text"
+#~ msgstr "Buscar Text"
+
+#~ msgid "&Say to Window"
+#~ msgstr "&Dir en Finestra"
+
+#~ msgid "Window not found."
+#~ msgstr "Finestra no trobada"
+
+#~ msgid "URL Module Configuration"
+#~ msgstr "Configuraci� del m�dul URL"
+
+#~ msgid "Save URL list on module unload"
+#~ msgstr "Guardar llista d'URL al descarregar el m�dul"
+
+#~ msgid "Save columns width on URL list close"
+#~ msgstr "Guardar l'amplada de les columnes al tancar la llista d'URL"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Cancel�lar"
+
+#~ msgid "Enable URL ban list"
+#~ msgstr "Activar la llista d'URL prohibides"
+
+#~ msgid "&Add Ban"
+#~ msgstr "&Afegir Prohibici�"
+
+#~ msgid "&Remove Selected"
+#~ msgstr "Elimina&r Seleccionades"
+
+#~ msgid "URL Ban List"
+#~ msgstr "Llista d'URL Prohibides"
+
+#~ msgid "Select a ban."
+#~ msgstr "Seleccioni una prohibici�."
+
+#, fuzzy
+#~ msgid "Window with ID '%Q' not found"
+#~ msgstr "Finestra amb ID '%s' no trobada"
+
+#, fuzzy
+#~ msgid "The specified window (%Q) is not a channel/query/DCC chat"
+#~ msgstr "La finestra especificada (%s) no �s un canal/privat/DCC de xat"
+
+#~ msgid "File not found or empty"
+#~ msgstr "Arxiu no trobat o buit"
+
+#~ msgid "I can't open that file"
+#~ msgstr "No puc obrir aquest arxiu"
+
+#~ msgid "Could not paste file"
+#~ msgstr "No puc enganxar l'arxiu"
+
+#~ msgid "The specified window (%s) is not a channel/query/dcc"
+#~ msgstr "La finestra especificada (%s) no �s un canal/privat/dcc"
+
+#~ msgid "Slow-paste ID:%d Window:%s"
+#~ msgstr "Enganxat lent ID:%d Finestra:%s"
+
+#, fuzzy
+#~ msgid "Window %Q not found"
+#~ msgstr "Finestra %s no trobada"
+
+#~ msgid "Missing window id after the 'w' switch"
+#~ msgstr "Falta id de finestra despr�s del modificador 'w'"
+
+#, fuzzy
+#~ msgid "Can't log to file %Q"
+#~ msgstr "No puc grabar el registre a l'arxiu %s"
+
+#~ msgid "This window has no logging capabilities"
+#~ msgstr "Aquesta finestra no t� capacitats de registre"
+
+#, fuzzy
+#~ msgid "Window with id '%Q' not found, returning empty string"
+#~ msgstr "Finestra amb id '%s' no trobada, retornant la cadena buida"
+
+#~ msgid "< &Back"
+#~ msgstr "< Enrere"
+
+#~ msgid "&Next >"
+#~ msgstr "Seg�e&nt >"
+
+#~ msgid "Finish"
+#~ msgstr "Acabar"
+
+#~ msgid ""
+#~ "<p><h2>Welcome :)</h2>This is your first time running this version of "
+#~ "KVIrc.<br>This wizard will guide you through the few steps required to "
+#~ "complete the setup.<br><br>If you had a previous version of KVIrc "
+#~ "installed, no worries. You will have a chance to preserve the old "
+#~ "configuration.</p><p>Click \"<b>Next</b>\" to proceed.</p>"
+#~ msgstr ""
+#~ "<p><h2>Benvingut :)</h2>Aquesta �s la primera execuci� d'aquesta versi� "
+#~ "de KVIrc.<br>Aquest assistent el guiar� a trav�s dels pocs passos "
+#~ "necessaris per a completar la configuraci�.<br><br>Si tenia instal�lada "
+#~ "una versi� anterior de KVIrc no es preocupi, tindr� oportunitat de "
+#~ "preservar la seva confiuraci� anterior.</p><p>Premi \"<b>Seg�ent</b>\" "
+#~ "per a continuar.</p>"
+
+#~ msgid "Welcome to KVIrc"
+#~ msgstr "Benvingut a KVIrc"
+
+#~ msgid ""
+#~ "<p>All of the files in this distribution are covered by the GPL. In human "
+#~ "terms this can be read as follows:<br><ul><li><b>KVIrc is free</b>, use "
+#~ "it, have fun! <b>:)</b></li><li>If you use <b>any</b> part of KVIrc in "
+#~ "your own project, you <b>must</b> release that project under the same "
+#~ "license.</li></ul></p><p>The \"legalese\" version of the license is shown "
+#~ "in the box below.</p>"
+#~ msgstr ""
+#~ "<p>Tots els arxius d'aquesta distribuci� estan coberts per la GPL."
+#~ "<br>Aix� es pot llegir com a:<br><ul><li><b>KVIrc �s lliure</b>, empri'l "
+#~ "i diverteixis <b>:)</b></li><li>Si utilitza <b>qualsevol</b> part de "
+#~ "KVIrc al seu projecte, <b>HA</b> de alliberar-lo amb la mateixa llic�ncia."
+#~ "</li></ul></p><p>La versi� \"legal\" de la llic�ncia es mostra en el "
+#~ "quadre inferior.</p>"
+
+#~ msgid ""
+#~ "Oops... can't find the license file.\n"
+#~ "It MUST be included in the distribution...\n"
+#~ "Please report to <pragma at kvirc dot net>"
+#~ msgstr ""
+#~ "Ups... no puc trobar l'arxiu de llic�ncia.\n"
+#~ "Ha d'estar incl�s a la distribuci�...\n"
+#~ "Si us plau, informi d'aix� a <pragma at kvirc dot net>"
+
+#~ msgid "Dreaded License Agreement"
+#~ msgstr "Temut Acord de Llic�ncia"
+
+#~ msgid "KVIrc Setup"
+#~ msgstr "Configuraci� de KVIrc"
+
+#~ msgid ""
+#~ "Please choose a Nickname.<br><br>Your nickname is the name that other IRC "
+#~ "users will know you by. It can't contain spaces or punctuation. Some IRC "
+#~ "networks will shorten your nickname if it is more than 9 characters long."
+#~ "<br><br>If in doubt, just enter the first nick that comes to mind. You "
+#~ "will be able to change it later in the Identity properties, or with the /"
+#~ "NICK command."
+#~ msgstr ""
+#~ "Si us plau, esculli un nick.<br><br>El seu nick �s el nom per el que el "
+#~ "coneixeran els altres usuaris de l'IRC. No pot contenir espais o "
+#~ "car�cters de puntuaci�. Algunes xarxes d'IRC tallaran el seu nick si t� "
+#~ "m�s de 9 car�cters de longitud.<br><br>En cas de dubte, introdueixi el "
+#~ "primer nick que li vingui en ment. Podr� canviar-ho m�s tard a les "
+#~ "propietats del di�leg identitat, o amb la comanda /NICK."
+
+#~ msgid "<b>Nickname:</b>"
+#~ msgstr "<b>Nick:</b>"
+
+#~ msgid ""
+#~ "<p>Please choose a folder for KVIrc to store its settings and other data, "
+#~ "and another for downloaded files. Make sure that you have permission to "
+#~ "write to both folders.<br><br>The suggested locations are fine in most "
+#~ "cases, so if you don't know what is this about, just click \"<b>Next</b>"
+#~ "\".<br><br>If you had a previous version of KVIrc installed, you can "
+#~ "choose the existing directory for the settings, and your configuration "
+#~ "will be preserved.</p>"
+#~ msgstr ""
+#~ "<p>Si us plau, esculli un directori per a que KVIrc guardi la seva "
+#~ "configuraci� i dades v�ries, i un altre per als arxius descarregats. "
+#~ "Asseguris que poseeix permissos per a escriure en ambdos directoris."
+#~ "<br><br>La configuraci� suggerida �s correcta quasib� sempre, per aix�, "
+#~ "si no enten que �s aix�, nom�s premi \"<b>Seg�ent</b>\".<br><br>Si t� "
+#~ "instal�lada una versi� anterior de KVIrc pot escollir els directoris "
+#~ "existents i la seva configuraci� ser� preservada.</p>"
+
+#~ msgid "Application Folders"
+#~ msgstr "Directoris de l'Aplicaci�"
+
+#~ msgid "<b>Store configuration in folder:</b>"
+#~ msgstr "<b>Guardar la configuraci� al directori:</b>"
+
+#~ msgid "<b>Download files to folder:</b>"
+#~ msgstr "<b>Directori per a arxius descarregats:</b>"
+
+#~ msgid ""
+#~ "<p>Here you can choose the default appearance of KVIrc.<br><br>The Fancy "
+#~ "Theme uses icons, a transparent background and a lot of colors. The "
+#~ "Minimalist Theme is designed for low-color displays or for \"console\" "
+#~ "extremists; it's more or less white text on a black background.<br><br>If "
+#~ "you had a previous version of KVIrc installed, you can choose to not "
+#~ "apply any theme in order to preserve your current visual settings."
+#~ "<br><br>If you don't know what to choose, just use the default.</p>"
+#~ msgstr ""
+#~ "<p>Aqu� pot escollir l'aparen�a per defecte de KVIrc.<br><br>El Tema "
+#~ "Capritx�s empra icones, un fons transparent i un munt de colors. El tema "
+#~ "Minimalista est� dissenyat per a pantalles amb pocs colors o per a "
+#~ "extremistes de la \"consola\"; m�s o menys �s text blanc sobre fons negre."
+#~ "<br><br>Si tenia instal�lada una versi� pr�via de KVIrc, pot escollir no "
+#~ "aplicar cap tema per a preservar les seves configuracions visuals actuals."
+#~ "<br><br>Si no sap que escollir, trii la configuraci� per defecte.</p>"
+
+#~ msgid "&Fancy Theme"
+#~ msgstr "Tema &Capritx�s"
+
+#~ msgid "&Minimalist Theme"
+#~ msgstr "Tema &Minimalista"
+
+#~ msgid "&Don't apply any theme"
+#~ msgstr "&No aplicar cap tema"
+
+#~ msgid "Default Theme"
+#~ msgstr "Tema Per Defecte"
+
+#~ msgid ""
+#~ "<p>Setup can make a shortcut to the KVIrc program on your desktop, so you "
+#~ "can access it quickly.</p><p>Do you want this shortcut to be created?</p>"
+#~ msgstr ""
+#~ "<p>La configuraci� pot crear un acc�s directe a l'executable KVIrc al seu "
+#~ "escriptori.</p><p>Vol crear-lo?</p>"
+
+#~ msgid "<p>If you're unsure just say \"Yes\"</p>"
+#~ msgstr "<p>Si no est� segur, senzillament contesti \"S�\"</p>"
+
+#~ msgid "&Yes"
+#~ msgstr "&S�"
+
+#~ msgid "&No"
+#~ msgstr "&No"
+
+#~ msgid "Desktop Shortcut"
+#~ msgstr "Acc�s directe a l'Escriptori"
+
+#~ msgid ""
+#~ "<p>Setup can now set KVIrc as default application for the irc:// and "
+#~ "irc6:// urls.</p><p>Do you want these settings to be applied?</p>"
+#~ msgstr ""
+#~ "<p>El m�dul de configuraci� posar� ara a KVIrc com a aplicaci� per "
+#~ "defecte per a les urls irc:// e irc6://.</p><p>Vols que s'apliquin "
+#~ "aquests canvis?</p>"
+
+#~ msgid "URL Handlers"
+#~ msgstr "Manipuladors d'URL"
+
+#~ msgid ""
+#~ "<p><h2>Setup Complete</h2>Setup now has all the necessary information to "
+#~ "configure KVIrc.</p><p>Please click the \"<b>Finish</b>\" button to save "
+#~ "your choices and start KVIrc.</p>"
+#~ msgstr ""
+#~ "<p><h2>Configuraci� Finalitzada</h2>L'assistent t� ara tota la informaci� "
+#~ "necess�ria per a configurar KVIrc.</p><p>Si us plau, premi el bot� "
+#~ "\"<b>Finalitzar</b>\" per a guardar les seves prefer�ncies i iniciar "
+#~ "KVIrc.</p>"
+
+#~ msgid "Finish Setup"
+#~ msgstr "Finalitzar Assistent"
+
+#~ msgid "Choose a Configuration Folder - KVIrc Setup"
+#~ msgstr "Trii un Directori de Configuraci� - Assistent de KVIrc"
+
+#~ msgid "Choose a Download Folder - KVIrc Setup"
+#~ msgstr "Trii un directori per als arxius descarregats - Assistent de KVIrc"
+
+#~ msgid "Abort Setup - KVIrc Setup"
+#~ msgstr "Interrompre Configuraci� - Assistent de KVIrc"
+
+#~ msgid ""
+#~ "You have chosen to abort the setup.<br>KVIrc cannot run until you "
+#~ "complete this procedure.<br><br>Do you really wish to abort?"
+#~ msgstr ""
+#~ "Ha triat interrompre la configuraci�.<br>KVIrc no funcionar� fins que "
+#~ "finalitzi aquest procediment.<br><br>Realment dessitja no continuar?"
+
+#~ msgid ""
+#~ "Cannot create directory %s.\n"
+#~ "You may not have write permission for that path. Please go back and "
+#~ "choose another directory."
+#~ msgstr ""
+#~ "No puc crear el directori %s.\n"
+#~ "Es possible que no tingui perm�s d'escriptura per a aquesta ruta. Si us "
+#~ "plau, retrocedeixi i trii un altre directori."
+
+#, fuzzy
+#~ msgid "Can't add a null object"
+#~ msgstr "No puc afegir un objecte no-widget"
+
+#, fuzzy
+#~ msgid "No string parameter given - using empty string"
+#~ msgstr "Par�metre de text erroni: assumint la cadena buida"
+
+#, fuzzy
+#~ msgid "Invalid insertion Policy"
+#~ msgstr "id de cron�metre no v�lida"
+
+#~ msgid "Can't add a non-widget object"
+#~ msgstr "No puc afegir un objecte no-widget"
+
+#, fuzzy
+#~ msgid "Not a widget object"
+#~ msgstr "No puc afegir un objecte no-widget"
+
+#, fuzzy
+#~ msgid "Can't find the tab "
+#~ msgstr "No es pot trobar la icona '%s'"
+
+#, fuzzy
+#~ msgid "Unknown position 'Q%'"
+#~ msgstr "Funci� desconeguda"
+
+#~ msgid "Invalid timeout (%s)"
+#~ msgstr "Temps d'expiraci� (%s) no v�lid"
+
+#~ msgid "Another connection in progress"
+#~ msgstr "Una altre connexi� en progr�s"
+
+#~ msgid "Invalid port specified: the kernel will choose one"
+#~ msgstr "S'ha especificat un port no v�lid: el nucli n'escullir� un"
+
+#~ msgid "No IPV6 support in this executable"
+#~ msgstr "Executable sense suport IPv6"
+
+#~ msgid "Invalid IP address specified (%s)"
+#~ msgstr "S'ha especificat una adre�a IP no v�lida (%s)"
+
+#~ msgid "Socket creation failed"
+#~ msgstr "Creaci� de socket fallida"
+
+#~ msgid "Invalid socket address"
+#~ msgstr "Adre�a per a socket no v�lida"
+
+#~ msgid "Bind failure"
+#~ msgstr "Errada en Bind"
+
+#~ msgid "Listen failure"
+#~ msgstr "Crida a listen fallida"
+
+#~ msgid "unknown"
+#~ msgstr "desconegut"
+
+#~ msgid "No socket object specified"
+#~ msgstr "No s'ha especificat un objecte socket"
+
+#~ msgid "Invalid socket object specified (it doesn't inherit from socket)"
+#~ msgstr "S'ha especificat un objecte socket no v�lid (no hereta de socket)"
+
+#~ msgid "There is no connection to accept!"
+#~ msgstr "No hi ha connexi� que acceptar!"
+
+#~ msgid "Invalid port (%s)"
+#~ msgstr "Port no v�lid (%s)"
+
+#~ msgid "Invalid ip address (%s)"
+#~ msgstr "Adre�a IP no v�lida (%s)"
+
+#~ msgid "Failed to create the socket"
+#~ msgstr "Fallida al crear el socket"
+
+#~ msgid "Failed to setup a nonblocking socket"
+#~ msgstr "Errada al configurar el mode no bloquejant per al socket"
+
+#~ msgid "Connect failure: %s"
+#~ msgstr "Connexi� fallida: %s"
+
+#~ msgid "Connect attempt timed out"
+#~ msgstr "Ha expirat l'intent de connexi�"
+
+#~ msgid "Can't start the DNS thread"
+#~ msgstr "No s'ha pogut iniciar el fil de DNS"
+
+#~ msgid ""
+#~ "Too much unprocessed incoming data (you've left this socket unmanaged ?)"
+#~ msgstr ""
+#~ "Masses dades d'entrada sense processar (ha deixat el socket sense "
+#~ "gestionar?)"
+
+#, fuzzy
+#~ msgid "Can't add a non - popupmenu object"
+#~ msgstr "No puc afegir un objecte no-widget"
+
+#, fuzzy
+#~ msgid "Unknown text position '%Q'"
+#~ msgstr "Funci� desconeguda"
+
+#, fuzzy
+#~ msgid "Invalid selection mode '%Q' assuming single"
+#~ msgstr "Adre�a no v�lida per a aquest motor"
+
+#~ msgid "The parent of a layout must be a widget!"
+#~ msgstr "El pare de un layout ha de ser un widget!"
+
+#, fuzzy
+#~ msgid "Invalid resize mode defaulting to Auto"
+#~ msgstr "Duraci� no v�lida (%s): emprant la duraci� per defecte"
+
+#~ msgid "Empty string"
+#~ msgstr "Cadena buida"
+
+#~ msgid "Empty filename string"
+#~ msgstr "Cadena de nom d'arxiu buida"
+
+#~ msgid "No such open mode: %s"
+#~ msgstr "No existeix el mode d'obertura: %s"
+
+#~ msgid "File is not open !"
+#~ msgstr "L'arxiu no est� obert !"
+
+#~ msgid "Negative file index supplied !"
+#~ msgstr "S'ha proporcionat un �ndex d'arxiu negatiu !"
+
+#~ msgid "Argument to long, using only first char"
+#~ msgstr "Argument massa llarg, utilitzant nom�s el primer car�cter"
+
+#~ msgid "Argument length is 0 - empty string"
+#~ msgstr "La longitud de l'argument �s 0 - cadena buida"
+
+#~ msgid "Write error occured !"
+#~ msgstr "Ha succe�t un error d'escriptura !"
+
+#~ msgid "Read error occured !"
+#~ msgstr "Ha succe�t un error de lectura !"
+
+#~ msgid "An error occured !"
+#~ msgstr "Ha succe�t un error !"
+
+#~ msgid "Length is a negative number !"
+#~ msgstr "La longitud �s un n�mero negatiu !"
+
+#~ msgid "Nothing to write"
+#~ msgstr "Res que escriure"
+
+#, fuzzy
+#~ msgid "No such open mode: '%Q'"
+#~ msgstr "No existeix el mode d'obertura: %s"
+
+#, fuzzy
+#~ msgid "File is not open!"
+#~ msgstr "L'arxiu no est� obert !"
+
+#, fuzzy
+#~ msgid "One of the geometry array parameters didn't evaluate to an integer"
+#~ msgstr "El par�metre d'acci� no s'avalua com un �ndex"
+
+#, fuzzy
+#~ msgid "The first parameter didn't evaluate to an array nor an integer"
+#~ msgstr "El par�metre d'acci� no s'avalua com un �ndex"
+
+#, fuzzy
+#~ msgid "One of the array parameters didn't evaluate to an integer"
+#~ msgstr "El par�metre d'acci� no s'avalua com un �ndex"
+
+#, fuzzy
+#~ msgid "Unknown orientation"
+#~ msgstr "Funci� desconeguda"
+
+#, fuzzy
+#~ msgid "Invalid mode '%Q'"
+#~ msgstr "Imatge no v�lida"
+
+#, fuzzy
+#~ msgid "Unknown mode "
+#~ msgstr "Mode d'eco desconegut"
+
+#, fuzzy
+#~ msgid "Unknown segment style "
+#~ msgstr "Alineaci� desconeguda: %s"
+
+#, fuzzy
+#~ msgid "Failed to find the widget to wrap"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#~ msgid "Non-negative integer length expected as parameter"
+#~ msgstr "S'esperava una longitud entera no negativa com a par�metre"
+
+#~ msgid "Non-negative integer index expected as first parameter"
+#~ msgstr "S'esperava un �ndex no negatiu com a primer par�metre"
+
+#~ msgid "Non-negative integer length expected as second parameter"
+#~ msgstr "S'esperava una longitud entera no negativa com a segon par�metre"
+
+#~ msgid "Can't find the widget object to add (%s)"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#~ msgid "Invalid object"
+#~ msgstr "Objecte no v�lid"
+
+#, fuzzy
+#~ msgid "Can't fill non-widget object"
+#~ msgstr "No puc afegir un objecte no-widget"
+
+#, fuzzy
+#~ msgid "Invalid x offset parameter (%s)"
+#~ msgstr "Par�metre fila no v�lid (%s)"
+
+#, fuzzy
+#~ msgid "Invalid y offset parameter (%s)"
+#~ msgstr "Par�metre fila no v�lid (%s)"
+
+#, fuzzy
+#~ msgid "Can't find the specified file '%s'."
+#~ msgstr "No es pot trobar l'arxiu multim�dia %s"
+
+#, fuzzy
+#~ msgid "I can't find the specified file %Q."
+#~ msgstr "No es pot trobar l'arxiu multim�dia %s"
+
+#, fuzzy
+#~ msgid "No such line number"
+#~ msgstr "No existeix el cron�metre (%s)"
+
+#, fuzzy
+#~ msgid "Unknown word wrap '%Q'"
+#~ msgstr "Operaci� d'associaci� desconeguda '%Q'"
+
+#, fuzzy
+#~ msgid "One of the colors array parameters didn't evaluate to an integer"
+#~ msgstr "El par�metre d'acci� no s'avalua com un �ndex"
+
+#, fuzzy
+#~ msgid "Unknown text format '%Q'"
+#~ msgstr "Funci� desconeguda"
+
+#, fuzzy
+#~ msgid " I can't find the specified file '%Q'."
+#~ msgstr "No es pot trobar l'arxiu multim�dia %s"
+
+#, fuzzy
+#~ msgid " I cannot read the file %Q'."
+#~ msgstr "No puc obrir aquest arxiu"
+
+#, fuzzy
+#~ msgid "Unknown alignment '%Q'"
+#~ msgstr "Alineaci� desconeguda: %s"
+
+#, fuzzy
+#~ msgid "Unknown auto formatting mode '%Q'"
+#~ msgstr "Operaci� d'associaci� desconeguda '%Q'"
+
+#, fuzzy
+#~ msgid "Unknown vertical alignment '%Q'"
+#~ msgstr "Alineaci� desconeguda: %s"
+
+#, fuzzy
+#~ msgid "Unknown dock area '%Q'"
+#~ msgstr "Operador desconegut"
+
+#, fuzzy
+#~ msgid "Class is undefined"
+#~ msgstr "La classe %s no est� definida"
+
+#, fuzzy
+#~ msgid "Processing aborted"
+#~ msgstr "Processant llista: %Q"
+
+#, fuzzy
+#~ msgid "XML support not available in the Qt library"
+#~ msgstr "La mitja de retr�s no est� disponible encara"
+
+#~ msgid "Invalid width parameter"
+#~ msgstr "Valor d'amplada no v�lid"
+
+#~ msgid "Invalid height parameter"
+#~ msgstr "Valor d'al�ada no v�lid"
+
+#~ msgid "The parameters do not define a rectangle"
+#~ msgstr "Els par�metres no defineixen un rectangle"
+
+#~ msgid "The parameters do not define a point"
+#~ msgstr "Els par�metres no defineixen un punt"
+
+#~ msgid "The parameters are do not define a valid size"
+#~ msgstr "Els par�metres no defineixen una mida v�lida"
+
+#, fuzzy
+#~ msgid "Invalid size parameter (%s)"
+#~ msgstr "Par�metre fila no v�lid (%s)"
+
+#, fuzzy
+#~ msgid "Unknown widget type: %s"
+#~ msgstr "Alineaci� desconeguda: %s"
+
+#, fuzzy
+#~ msgid "Can't find the widget object assuming 0"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#, fuzzy
+#~ msgid "Parent must be a widget object"
+#~ msgstr "No puc afegir un objecte no-widget"
+
+#, fuzzy
+#~ msgid "Invalid parameters"
+#~ msgstr "Par�metre no v�lid"
+
+#, fuzzy
+#~ msgid "Invalid Parameters"
+#~ msgstr "Par�metre no v�lid"
+
+#~ msgid "Invalid row parameter (%s)"
+#~ msgstr "Par�metre fila no v�lid (%s)"
+
+#~ msgid "Invalid column parameter (%s)"
+#~ msgstr "Par�metre columna no v�lid (%s)"
+
+#, fuzzy
+#~ msgid "Unknown widget flag '%Q'"
+#~ msgstr "Alineaci� desconeguda: %s"
+
+#, fuzzy
+#~ msgid "Unknown style '%Q'"
+#~ msgstr "Marc desconegut / estil d'ombra: %s"
+
+#, fuzzy
+#~ msgid "Unknown alignment: '%Q'"
+#~ msgstr "Alineaci� desconeguda: %s"
+
+#, fuzzy
+#~ msgid "Unknown frame style"
+#~ msgstr "Marc desconegut / estil d'ombra: %s"
+
+#, fuzzy
+#~ msgid "Unknown echo mode %Q"
+#~ msgstr "Mode d'eco desconegut"
+
+#, fuzzy
+#~ msgid "The parent-widget isn't a MainWindow."
+#~ msgstr "La finestra actual no �s un canal"
+
+#, fuzzy
+#~ msgid "pix '%Q' doesn't exists"
+#~ msgstr "L'acci� \"%s\" no existeix"
+
+#, fuzzy
+#~ msgid "Doesn't a widget object"
+#~ msgstr "No puc afegir un objecte no-widget"
+
+#, fuzzy
+#~ msgid "Unknown alignment"
+#~ msgstr "Alineaci� desconeguda: %s"
+
+#, fuzzy
+#~ msgid "Unknown orientation: "
+#~ msgstr "Funci� desconeguda"
+
+#, fuzzy
+#~ msgid "Not Enough Parameters"
+#~ msgstr "No hi ha suficients par�metres"
+
+#, fuzzy
+#~ msgid "Unknown tickmark '%Q'"
+#~ msgstr "Comanda desconeguda"
+
+#, fuzzy
+#~ msgid "Unknown orientation '%Q'"
+#~ msgstr "Funci� desconeguda"
+
+#, fuzzy
+#~ msgid "Context sensitive help"
+#~ msgstr "No distingeix m&aj�s/min�s"
+
+#, fuzzy
+#~ msgid "&Replace"
+#~ msgstr "Respostes"
+
+#, fuzzy
+#~ msgid "Find & Repalce"
+#~ msgstr "Respostes"
+
+#~ msgid "Find"
+#~ msgstr "Buscar"
+
+#, fuzzy
+#~ msgid "Replace with"
+#~ msgstr "Respostes"
+
+#, fuzzy
+#~ msgid "&Findnext"
+#~ msgstr "Buscar Seg�ent"
+
+#, fuzzy
+#~ msgid "&Replace(WIP)"
+#~ msgstr "Respostes"
+
+#~ msgid "orphan_servers"
+#~ msgstr "servidors_h�rfans"
+
+#~ msgid ""
+#~ "%s doesn't look like a servers.ini file.\n"
+#~ "Import failed."
+#~ msgstr ""
+#~ "%s no sembla ser un arxiu servers.ini\n"
+#~ "Ha fallat la importaci�."
+
+#~ msgid "Choose a servers.ini file"
+#~ msgstr "Escolli un arxiu servers.ini"
+
+#~ msgid "Remote mIRC servers.ini Import Wizard"
+#~ msgstr "Assistent d'Importaci� remota de servers.ini de mIRC"
+
+#~ msgid ""
+#~ "<center><b>Welcome!</b><br><br>This wizard will guide you in the process "
+#~ "of downloading a list of IRC servers. Please click \"<b>Next</b>\" to "
+#~ "begin the operation.</center>"
+#~ msgstr ""
+#~ "<center><b>Benvingut</b><br><br>Aquest assistent et guiar� en el proc�s "
+#~ "de desc�rrega d'una llista de servidors IRC. Si us plau, prem "
+#~ "\"<b>Seg�ent</b>\" per a comen�ar l'operaci�.</center>"
+
+#~ msgid ""
+#~ "<center>Here you can modify the URL that the list will be downloaded "
+#~ "from. In most cases the default URL is acceptable.</center>"
+#~ msgstr ""
+#~ "<center>Aqu� pots modificar la URL des de la que ser� descarregada la "
+#~ "llista. Generalment, la URL per defecte �s aceptable.</center>"
+
+#~ msgid "URL Selection"
+#~ msgstr "Selecci� d'URL"
+
+#~ msgid "Please wait while the list is being downloaded"
+#~ msgstr "Per favor, espera mentres es descarrega la llista"
+
+#~ msgid "List Download"
+#~ msgstr "Descarrega la Llista"
+
+#~ msgid "Failed to start the server list transfer :("
+#~ msgstr "Ha fallat l'inici de la transfer�ncia de la llista de servidors :("
+
+#~ msgid "File downloaded: processing ..."
+#~ msgstr "Arxiu descarregat: procesant..."
+
+#~ msgid "%1 servers imported succesfully"
+#~ msgstr "%1 servidores s'han importat correctament"
+
+#~ msgid "No servers imported"
+#~ msgstr "No s'ha importat cap servidor"
+
+#~ msgid "Import from servers.ini"
+#~ msgstr "Importaci� des de servers.ini"
+
+#~ msgid "Import from http://www.mirc.co.uk/servers.ini"
+#~ msgstr "Importaci� des de http://www.mirc.co.uk/servers.ini"
+
+#~ msgid "Internal error: I'm not in the user database ?"
+#~ msgstr "Error intern: �no estic a la base de dades d'usuari?"
+
+#, fuzzy
+#~ msgid ""
+#~ "Can't set the current avatar to '%Q': failed to start the http transfer"
+#~ msgstr ""
+#~ "No puc posar l'avatar actual a '%s': ha fallat l'inic de la transfer�ncia "
+#~ "http"
+
+#, fuzzy
+#~ msgid "Can't set the current avatar to '%Q': can't load the image"
+#~ msgstr "No puc posar el avatar actual a '%s': no puc carregar la imatge"
+
+#~ msgid "Invalid timeout specified, using default"
+#~ msgstr ""
+#~ "S'ha especificat un cron�metre v�lid, fent servir el valor per defecte"
+
+#, fuzzy
+#~ msgid "Can't add a file offer for file %Q (huh ? file not readable ?)"
+#~ msgstr "No puc afegir una oferta d'arxiu per a %s (�arxiu no llegible?)"
+
+#, fuzzy
+#~ msgid "Added %d secs file offer for file %Q (%Q) and receiver %Q"
+#~ msgstr "Afegida l'oferta de %d segs de l'arxiu %s (%s) i receptor %s"
+
+#, fuzzy
+#~ msgid "Notifying avatar '%Q' to %Q"
+#~ msgstr "Notificant avatar '%s' a %s"
+
+#, fuzzy
+#~ msgid "Unknown "
+#~ msgstr "Desconegut"
+
+#, fuzzy
+#~ msgid "Invalid DCOP parameter syntax"
+#~ msgstr "Par�metre no v�lid"
+
+#, fuzzy
+#~ msgid "The specified parameter is not an integer"
+#~ msgstr "La finestra especificada no �s un canal"
+
+#, fuzzy
+#~ msgid "Unsupported DCOP parameter type %s"
+#~ msgstr "Protocol %s no suportat"
+
+#, fuzzy
+#~ msgid "DCOP call failed"
+#~ msgstr "crida listen() fallida"
+
+#~ msgid "Item"
+#~ msgstr "Element"
+
+#~ msgid "Submenu"
+#~ msgstr "Submen�"
+
+#~ msgid "External Menu"
+#~ msgstr "Men� Extern"
+
+#~ msgid "Separator"
+#~ msgstr "Separador"
+
+#~ msgid "Label"
+#~ msgstr "Etiqueta"
+
+#~ msgid "### Epilogue ###"
+#~ msgstr "### Ep�leg ###"
+
+#~ msgid "Epilogue"
+#~ msgstr "Ep�leg"
+
+#~ msgid "### Prologue ###"
+#~ msgstr "### Pr�leg ###"
+
+#~ msgid "Popup name"
+#~ msgstr "Nom de men� emergent"
+
+#~ msgid "Type"
+#~ msgstr "Tipus"
+
+#~ msgid "Text:"
+#~ msgstr "Text:"
+
+#~ msgid ""
+#~ "<center><b>Visible text</b><br>May contain identifiers that will be "
+#~ "evaluated at popup call time.<br>For labels, this text can contain also "
+#~ "limited HTML tags.</center>"
+#~ msgstr ""
+#~ "<center><b>Text Visible</b><br>Pot contenir identificadors que seran "
+#~ "avaluats en el moment de la crida al men� emergent.<br>Per a etiquetes, "
+#~ "aquest text pot contenir tamb� alguns marcadors html.</center>"
+
+#~ msgid "Condition:"
+#~ msgstr "Condici�:"
+
+#~ msgid ""
+#~ "<center><b>Boolean condition</b><br>Will be evaluated at popup call time "
+#~ "in order to decide if this entry has to be shown.<br>An empty condition "
+#~ "evaluates to true.</center>"
+#~ msgstr ""
+#~ "<center><b>Condici� L�gica</b><br>Ser� avaluada en el moment de la crida "
+#~ "al men� emergent per a decidir si ha de mostrar-se aquesta opci�.<br>Una "
+#~ "condici� buida s'avalua com a certa.</center>"
+
+#~ msgid "Icon:"
+#~ msgstr "Icona:"
+
+#~ msgid ""
+#~ "<center><b>Icon identifier</b><br>May be an internal icon ID, an absolute "
+#~ "path or a relative path.<br>Portable scripts should never use absolute "
+#~ "paths.</center>"
+#~ msgstr ""
+#~ "<center><b>Identificador d'Icona</b><br>Pot ser un id d'icona interna, "
+#~ "una ruta absoluta o una relativa.<br>Els scripts portables mai haurien "
+#~ "d'emprar rutes absolutes.</center>"
+
+#~ msgid "External menu:"
+#~ msgstr "Men� extern:"
+
+#~ msgid ""
+#~ "<center><b>External menu name</b><br>This allows to nest externally "
+#~ "defined popup menus. The popup menu with the specified name will be "
+#~ "looked up at menu setup time.</center>"
+#~ msgstr ""
+#~ "<center><b>Nom de men� extern</b><br>Aix� permet animar men�s emergents "
+#~ "definits externament. El men� amb el nom especificat ser� buscat en el "
+#~ "moment de la configuraci� del mateix.</center>"
+
+#, fuzzy
+#~ msgid "Item Id:"
+#~ msgstr "Element"
+
+#~ msgid ""
+#~ "<center><b>Item id</b><br>This will allow you to use delpopupitem later.</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center><b>id Element</b><br>Aix� et permetr� emprar delpopupitem m�s "
+#~ "tard.</center>"
+
+#~ msgid "New Separator Below"
+#~ msgstr "Nou Separador Sota"
+
+#~ msgid "New Separator Above"
+#~ msgstr "Nou Separador Sobre"
+
+#~ msgid "New Separator Inside"
+#~ msgstr "Nou Separador Dintre"
+
+#~ msgid "New Label Below"
+#~ msgstr "Nova Etiqueta Sota"
+
+#~ msgid "New Label Above"
+#~ msgstr "Nova Etiqueta Sobre"
+
+#~ msgid "New Label Inside"
+#~ msgstr "Nova Etiqueta Dintre"
+
+#~ msgid "New Item Below"
+#~ msgstr "Nou Element Sota"
+
+#~ msgid "New Item Above"
+#~ msgstr "Nou Element Sobre"
+
+#~ msgid "New Item Inside"
+#~ msgstr "Nou Element Dintre"
+
+#~ msgid "New Menu Below"
+#~ msgstr "Nou Men� Sota"
+
+#~ msgid "New Menu Above"
+#~ msgstr "Nou Men� Sobre"
+
+#~ msgid "New Menu Inside"
+#~ msgstr "Nou Men� Dintre"
+
+#~ msgid "New External Menu Below"
+#~ msgstr "Nou Men� Extern Sota"
+
+#~ msgid "New External Menu Above"
+#~ msgstr "Nou Men� Extern Sobre"
+
+#~ msgid "New External Menu Inside"
+#~ msgstr "Nou Men� Extern Dintre"
+
+#~ msgid "Cu&t"
+#~ msgstr "&Tallar"
+
+#~ msgid "&Copy"
+#~ msgstr "&Copiar"
+
+#~ msgid "&Paste Below"
+#~ msgstr "Enganxar Sota"
+
+#~ msgid "Paste Above"
+#~ msgstr "Enganxar Sobre"
+
+#~ msgid "Paste Inside"
+#~ msgstr "Enganxar Dintre"
+
+#~ msgid "New Menu Prologue"
+#~ msgstr "Nou Pr�leg de Men�"
+
+#~ msgid "New Menu Epilogue"
+#~ msgstr "Nou Ep�leg de Men�"
+
+#~ msgid "&Export All To..."
+#~ msgstr "&Exportar Tots a..."
+
+#, fuzzy
+#~ msgid "&Export selected To..."
+#~ msgstr "&Exportar Tots a..."
+
+#~ msgid "&New Popup"
+#~ msgstr "&Nou men� emergent"
+
+#~ msgid "Re&move Popup"
+#~ msgstr "Eli&minar men� emergent"
+
+#~ msgid "&Export Popup To..."
+#~ msgstr "&Exportar men� emergent a..."
+
+#~ msgid "Unable to write to the popup file."
+#~ msgstr "Impossible escriure en l'arxiu de men� emergent."
+
+#~ msgid "Popup Editor"
+#~ msgstr "Editor de men�s emergents"
+
+#~ msgid "Missing both encrypt and decrypt key: at least one is needed"
+#~ msgstr ""
+#~ "Falten tant la clau de xifrat com la de desxifrat: es necessita al menys "
+#~ "una"
+
+#~ msgid "Error 0: Success ?"
+#~ msgstr "Error 0: � Acomplit ?"
+
+#~ msgid "Unsupported crypt mode"
+#~ msgstr "Mode de xifrat no suportat"
+
+#~ msgid "Unsupported direction"
+#~ msgstr "Adre�a no suportada"
+
+#~ msgid "Unsupported key length"
+#~ msgstr "Longitud de clau no suportada"
+
+#~ msgid "Bad key data"
+#~ msgstr "Dades de clau erronies"
+
+#~ msgid "Engine not initialized"
+#~ msgstr "Motor no inicialitzat"
+
+#~ msgid "Invalid direction for this engine"
+#~ msgstr "Adre�a no v�lida per a aquest motor"
+
+#~ msgid "Corrupted message data or invalid decrypt key"
+#~ msgstr "Dades del missatge corruptes o clau de desxifrat no v�lida"
+
+#~ msgid "Unknown error"
+#~ msgstr "Error desconegut"
+
+#~ msgid "Ops...encrypt cipher not initialized"
+#~ msgstr "Ups...motor de xifrat no inicialitzat"
+
+#~ msgid "Data buffer too long"
+#~ msgstr "Buffer de dades massa llarg"
+
+#~ msgid "Ops...decrypt cipher not initialized"
+#~ msgstr "Ups...motor de desxifrat no inicialitzat"
+
+#~ msgid "The message is not a hexadecimal string: this is not my stuff"
+#~ msgstr "El missatge no �s una cadena hexadecimal: aix� no �s meu"
+
+#~ msgid "The message is not a base64 string: this is not my stuff"
+#~ msgstr "El missatge no �s una cadena base64: aix� no �s meu"
+
+#~ msgid ""
+#~ "Cryptographic engine based on the\n"
+#~ "Advanced Encryption Standard (AES)\n"
+#~ "algorithm called Rijndael.\n"
+#~ "The text is first encrypted with rijndael\n"
+#~ "and then converted to %s notation.\n"
+#~ "The keys used are %d bit long and will be padded\n"
+#~ "with zeros if you provide shorter ones.\n"
+#~ "If only one key is provided, this engine\n"
+#~ "will use it for both encrypting and decrypting.\n"
+#~ "See the rijndael module documentation\n"
+#~ "for more info on the algorithm used.\n"
+#~ msgstr ""
+#~ "Motor criptogr�fic basat en el\n"
+#~ "Advanced Encryption Standard (AES)\n"
+#~ "algoritme anomenat Rijndael.\n"
+#~ "El text �s xifrat primer amb rijndael\n"
+#~ "i despr�s convertit a notaci� %s.\n"
+#~ "Les claus emprades s�n de longitud % bits i seran reomplerts\n"
+#~ "amb zeros si es proporciona una m�s curta.\n"
+#~ "Si nom�s es proporciona una clau, aquest motor\n"
+#~ "l'emprar� per al xifrat i desxifrat.\n"
+#~ "Llegeixis la documentaci� del m�dul rijndael\n"
+#~ "per a obtenir m�s informaci� sobre l'algoritme emprat.\n"
+
+#~ msgid "hexadecimal"
+#~ msgstr "hexadecimal"
+
+#~ msgid "base64"
+#~ msgstr "base64"
+
+#, fuzzy
+#~ msgid ""
+#~ "Popular cryptographic engine based on the\n"
+#~ "old Blowfish encryption algorithm.\n"
+#~ "The text is first encrypted with Blowfish \n"
+#~ "and then converted to base64 notation.\n"
+#~ "The keys used have variable length and\n"
+#~ "are specified as character strings.\n"
+#~ "You can specify keys long up to 56 bytes (448 bits).\n"
+#~ "If only one key is provided, this engine\n"
+#~ "will use it for both encrypting and decrypting.\n"
+#~ "This engine works in ECB mode by default:\n"
+#~ "if you want to use CBC mode you must prefix\n"
+#~ "your key(s) with \"cbc:\".\n"
+#~ msgstr ""
+#~ "Motor criptogr�fic basat en el\n"
+#~ "Advanced Encryption Standard (AES)\n"
+#~ "algoritme anomenat Rijndael.\n"
+#~ "El text �s xifrat primer amb rijndael\n"
+#~ "i despr�s convertit a notaci� %s.\n"
+#~ "Les claus emprades s�n de longitud % bits i seran reomplerts\n"
+#~ "amb zeros si es proporciona una m�s curta.\n"
+#~ "Si nom�s es proporciona una clau, aquest motor\n"
+#~ "l'emprar� per al xifrat i desxifrat.\n"
+#~ "Llegeixis la documentaci� del m�dul rijndael\n"
+#~ "per a obtenir m�s informaci� sobre l'algoritme emprat.\n"
+
+#~ msgid "Choose the file to share"
+#~ msgstr "Trii l'arxiu a compartir"
+
+#~ msgid "Outgoing traffic"
+#~ msgstr "Tr�fic sortint"
+
+#~ msgid "Incoming traffic"
+#~ msgstr "Tr�fic entrant"
+
+#~ msgid "[IDENT]: Service shutdown (spontaneous)"
+#~ msgstr "[IDENT]: Servei desconnectat (espontani)"
+
+#~ msgid "[IDENT]: Service shutdown (on request)"
+#~ msgstr "[IDENT]: Servei desconnectat (a petici�)"
+
+#~ msgid "The current window is not a channel"
+#~ msgstr "La finestra actual no �s un canal"
+
+#, fuzzy
+#~ msgid "Can't find the window with id '%Q'"
+#~ msgstr "No he pogut trobar la finestra amb id '%s'"
+
+#, fuzzy
+#~ msgid "The specified window (%Q) is not a channel"
+#~ msgstr "La finestra especificada (%s) no �s un canal"
+
+#~ msgid "The specified toolbar doesn't exist"
+#~ msgstr "No existeix la barra d'eines especificada"
+
+#, fuzzy
+#~ msgid "No action name/index specified"
+#~ msgstr "No s'ha especificat el nom de l'opci�"
+
+#~ msgid "The action parameter didn't evaluate to an index"
+#~ msgstr "El par�metre d'acci� no s'avalua com un �ndex"
+
+#~ msgid "The toolbar does not contain the specified item"
+#~ msgstr "La barra d'eines no cont� l'element especificat"
+
+#, fuzzy
+#~ msgid "The action \"%Q\" doesn't exist"
+#~ msgstr "L'acci� \"%s\" no existeix"
+
+#~ msgid "KVIrc"
+#~ msgstr "KVIrc"
+
+#~ msgid "Context"
+#~ msgstr "Context"
+
+#~ msgid "&Configure KVIrc..."
+#~ msgstr "&Configurar KVIrc..."
+
+#~ msgid "&About KVIrc"
+#~ msgstr "&Sobre KVIrc"
+
+#~ msgid "Un&dock"
+#~ msgstr "Treure anclatge"
+
+#~ msgid "&Quit"
+#~ msgstr "Sortir"
+
+#~ msgid "Ctrl+Q"
+#~ msgstr "Ctrl+S"
+
+#~ msgid "Nothing is happening..."
+#~ msgstr "No passa res..."
+
+#~ msgid "Just idling..."
+#~ msgstr "Estic gandulejant..."
+
+#~ msgid "Dum de dum de dum..."
+#~ msgstr "Dum de dum de dum..."
+
+#~ msgid "Hey man... do something!"
+#~ msgstr "Va home... fes alguna cosa!"
+
+#~ msgid "Umpf!"
+#~ msgstr "Umpf!"
+
+#~ msgid "Silence speaking"
+#~ msgstr "Parlant en silenci"
+
+#~ msgid "Are ya here?"
+#~ msgstr "�Est�s aqu�?"
+
+#~ msgid "The world has stopped?"
+#~ msgstr "�S'ha parat el m�n?"
+
+#~ msgid "Everything is all right"
+#~ msgstr "Tot va b�"
+
+#~ msgid "idle()"
+#~ msgstr "vaguejant()"
+
+#~ msgid "It's so cold here..."
+#~ msgstr "Fa tant de fred aqu�..."
+
+#~ msgid "Do not disturb... watching TV"
+#~ msgstr "No molestar... veient la televissi�"
+
+#~ msgid "Just vegetating"
+#~ msgstr "Estic vegentant"
+
+#~ msgid "Hey... are ya sure that your network is up?"
+#~ msgstr "Eh... �Est�s segur de que la xarxa funciona?"
+
+#~ msgid "Seems like the world has stopped spinning"
+#~ msgstr "Sembla que el m�n ha deixat de girar"
+
+#~ msgid "This silence is freaking me out!"
+#~ msgstr "�Aquest silenci m'est� tornant boig!"
+
+#~ msgid "Mieeeeeowww!"
+#~ msgstr "Miauuuuuuu!"
+
+#~ msgid "idle idle idle idle!"
+#~ msgstr "parat parat parat parat!"
+
+#~ msgid "Hide Window"
+#~ msgstr "Amagar Finestra"
+
+#~ msgid "Show Window"
+#~ msgstr "Mostrar Finestra"
+
+#~ msgid "A really lame text transformation engine :D"
+#~ msgstr "Un motor de transformaci� de text realment simple :D"
+
+#, fuzzy
+#~ msgid "A really lame text transformation engine: Light Version."
+#~ msgstr "Un motor de transformaci� de text realment simple :D"
+
+#~ msgid "The window with id '%s' does not exist"
+#~ msgstr "La finestra amb id '%s' no existeix"
+
+#~ msgid "Window type or 'all' expected as first parameter"
+#~ msgstr "Tipus de finestra o 'tot' s'esperava com a primer par�metre"
+
+#, fuzzy
+#~ msgid "Invalid IRC context id '%Q'"
+#~ msgstr "Id '%s' de context d'IRC no v�lid"
+
+#~ msgid ""
+#~ "The specified IRC context is not valid: creating a context free window"
+#~ msgstr ""
+#~ "El contex d'IRC especificat no �s v�lid: creant una finestra lliure de "
+#~ "context"
+
+#~ msgid "The specified window is not of type \"userwnd\""
+#~ msgstr "La finestra especificada no �s del tipus \"userwnd\""
+
+#, fuzzy
+#~ msgid "Background not found %Q "
+#~ msgstr "Color de fons"
+
+#, fuzzy
+#~ msgid "Failed to allocate the specified crypt engine"
+#~ msgstr "Ha fallat la c�rrega de l'arxiu d'imatge triat"
+
+#, fuzzy
+#~ msgid "This executable has been compiled without crypt support"
+#~ msgstr "Aquest executable s'ha compilat sense suport SSL"
+
+#~ msgid "User Registration Wizard - KVIrc"
+#~ msgstr "Assistent de Registre d'Usuaris - KVIrc"
+
+#~ msgid ""
+#~ "<p>Welcome to the user registration wizard.<br>This process allows you to "
+#~ "add an IRC user to the database and set properties for that user. KVIrc "
+#~ "will be (hopefully) able to recognize the user, add him to the notify "
+#~ "list, and display the associated avatar.<br><br>First of all, you must "
+#~ "insert an <b>entry name or real name</b> for the user you're going to "
+#~ "register. The name will be used to identify the database entry and has no "
+#~ "specific requirements, it can be a given name, nickname, or just some "
+#~ "text to remind you of the real person.<br>Examples: \"George W Bush\", "
+#~ "\"Dubya\".\n"
+#~ "</p>"
+#~ msgstr ""
+#~ "<p>Benvingut a l'assistent d'usuaris registrats.<br>Aquest proc�s li "
+#~ "permet afegir un usuari IRC a la base de dades de KVIrc i configurar "
+#~ "algunes de les seves propietats. KVirc ser� capa� (afortunadament) de "
+#~ "recon�ixer l'usuari, afegir-lo a la llista de notificacions, mostrar el "
+#~ "seu avatar associat, etc...<br><br>Primerament, ha d'escriure el <b>nom "
+#~ "de l'entrada o el nom real</b>de l'usuari que anir� a registrar. El nom "
+#~ "ser� emprat per a identificar l'entrada de la base de dades i no t� cap "
+#~ "requeriment espec�fic, pot ser un nom, un nick o nom�s un text que li "
+#~ "recordi a la persona.<br>Exemples: \"Carla Arola\", \"Cari\".\n"
+#~ "</p>"
+
+#~ msgid "Step 1: Entry Name"
+#~ msgstr "Pas 1: Nom Entrada"
+
+#~ msgid ""
+#~ "<p>A registered user is identified by one or more <b>IRC masks</b>.<br>A "
+#~ "mask must be in the following form:<br><b>nickname!username@hostname</"
+#~ "b><br>and can contain wildcard characters '*' and '?'. Be careful in "
+#~ "choosing the masks, as they are the only way to verify the identity of a "
+#~ "registered user.<br><br>You can enter at most two masks here, if you wish "
+#~ "to add more masks, use the \"<b>Edit</b>\" button in the Registered Users "
+#~ "dialog. You must enter at least one mask.</p>"
+#~ msgstr ""
+#~ "<p>Un usuari registrat �s identificat per una o m�s <b>m�scares d'IRC</b>."
+#~ "<br>Una m�scara ha de complir amb el seg�ent format:<br><b>nick!"
+#~ "nom_usuari@m�quina</b><br>i pot contenir els comodins '*' y '?'.Sigui "
+#~ "cuidad�s al escollir les m�scares: s�n l'�nic m�tode per a verificar la "
+#~ "identitat d'un usuari registrat.<br><br>Pot introduir fins a dues "
+#~ "m�scares; si dessitja afegir-ne m�s, utilitzi el bot� \"<b>Editar</b>\" "
+#~ "en el di�leg d'Usuaris Registrats. Ha de posar com a m�nim una m�scara.</"
+#~ "p>"
+
+#~ msgid "Step 2: Mask Selection"
+#~ msgstr "Pas 2: Selecci� de m�scara"
+
+#~ msgid ""
+#~ "<p>If you want to store an avatar image for this user, you can set it "
+#~ "here. KVIrc will show the avatar in the userlist next to the user's "
+#~ "nickname.<br>An avatar can be in any supported image format (PNG is "
+#~ "recommended). Keep in mind that KVIrc stores avatars in memory and has to "
+#~ "resize them to fit in the userlist, thus it's better to use small, low-"
+#~ "resolution images.</p>"
+#~ msgstr ""
+#~ "<p>Si vol emmagatzemar una imatge d'avatar per a aquest usuari, pot posar-"
+#~ "la aqu�. KVIrc el mostrar� juntament amb el nick a la finestra d'usuaris."
+#~ "<br>Un avatar pot estar en qualsevol format d'imatge reconegut (es "
+#~ "recomana PNG). Recordi que KVIrc mant� els avatar en mem�ria i t� que "
+#~ "redimensionar-los per a encaixar-los a la llista d'usuaris, de manera que "
+#~ "�s millor emprar petites imatges de baixa resoluci�.</p>"
+
+#~ msgid "Store an avatar for this user"
+#~ msgstr "Emmagatzemar un avatar per aquest usuari"
+
+#~ msgid "Step 3: Avatar Selection"
+#~ msgstr "Pas 3: Selecci� de l'Avatar"
+
+#~ msgid ""
+#~ "<p>If you want to be notified when this user is online or goes offline, "
+#~ "you must specify the list of nicknames that KVIrc will look for."
+#~ "<br><br>You can enter at most two nicknames here, if you wish to add more "
+#~ "nicknames, use the \"<b>Edit</b>\" button in the Registered Users dialog."
+#~ "</p>"
+#~ msgstr ""
+#~ "<p>Si dessitja ser avisat quan aquest usuari es connecti o desconnecti, "
+#~ "ha d'especificar la llista de nicks a la que ho buscar� KVIrc<br><br>Pot "
+#~ "introduir fins a dos nicks aqu�; si dessitja afegir-ne m�s, empri el bot� "
+#~ "\"<b>Editar</b>\" al Di�leg d'Usuaris Registrats.</p>"
+
+#~ msgid "Add this user to the notify list"
+#~ msgstr "Afegir aquest usuari a la llista de notificacions"
+
+#~ msgid "Nickname 2:"
+#~ msgstr "Nick 2:"
+
+#~ msgid "Step 4: Notify List"
+#~ msgstr "Pas 4: Llista de Notificacions"
+
+#~ msgid ""
+#~ "<p>That's it. The user registration has been completed.<br><br>Click "
+#~ "\"<b>Finish</b>\" to close this dialog.</p>"
+#~ msgstr ""
+#~ "<p>Aix� �s tot. El registre d'usuari s'ha realitzat correctament."
+#~ "<br><br>Premi \"Finalitzar\" per a tancar aquest di�leg.</p>"
+
+#~ msgid "Registration Complete"
+#~ msgstr "Registre completat"
+
+#~ msgid "User already registered: found exact name match"
+#~ msgstr "Usuari ja registrat: s'ha trobat coincid�ncia exacta amb el nom"
+
+#, fuzzy
+#~ msgid "Mask %Q is already used to identify user %s"
+#~ msgstr "La m�scara %s ja s'empra per a identificar a l'usuari %s"
+
+#, fuzzy
+#~ msgid "User not found (%Q)"
+#~ msgstr "Usuari no trobat (%s)"
+
+#~ msgid "No mask specified"
+#~ msgstr "M�scara no especificada"
+
+#, fuzzy
+#~ msgid "User %Q not found"
+#~ msgstr "Usuari %s no trobat"
+
+#, fuzzy
+#~ msgid "Mask %Q already used to identify user %Q"
+#~ msgstr "M�scara %s ja emprada per a identificar a l'usuari %s"
+
+#, fuzzy
+#~ msgid "Mask %Q not found"
+#~ msgstr "M�scara %s no trobada"
+
+#~ msgid "No property specified"
+#~ msgstr "No s'ha especificat propietat"
+
+#~ msgid "Registered users database dump:"
+#~ msgstr "Volcat d'usuaris registrats de la base de dades."
+
+#~ msgid " User: %c%Q"
+#~ msgstr "Usuari: %c%Q"
+
+#~ msgid " Warning: this user has no registration masks"
+#~ msgstr " Atenci�: aquest usuari no t� m�scares de registre"
+
+#~ msgid " Mask: %Q!%Q@%Q"
+#~ msgstr " M�scara: %Q!%Q@%Q"
+
+#~ msgid " Property: %Q=%Q"
+#~ msgstr " Propietat: %Q=%Q"
+
+#~ msgid " No properties"
+#~ msgstr " Sense propietates"
+
+#~ msgid "Total: %d matching users (of %d in the database)"
+#~ msgstr "Total: %d usuaris coincidents (de %d a la base de dades)"
+
+#~ msgid "Property Editor"
+#~ msgstr "Editor de Propietats"
+
+#~ msgid "Property"
+#~ msgstr "Propietat"
+
+#~ msgid "Mask Editor"
+#~ msgstr "Editor de M�scares"
+
+#~ msgid ""
+#~ "Insert a mask for this user.<br>It can contain the wildcard characters "
+#~ "'*' and '?'."
+#~ msgstr ""
+#~ "Insereix una m�scara per aquest usuari.<br>Aquesta pot contenir '*' i '?' "
+#~ "com a car�cters comod�."
+
+#~ msgid ""
+#~ "<center>This the <b>nickname</b> that will match this user, default value "
+#~ "is the registered name.</center>"
+#~ msgstr ""
+#~ "<center>Aquest �s el <b>nick</b> que coincidir� amb aquest usuari, el "
+#~ "valor per defecte �s el nom registrat.</center>"
+
+#~ msgid ""
+#~ "<center>This the <b>username</b> that will match this user. <b>*</b> will "
+#~ "match any username.</center>"
+#~ msgstr ""
+#~ "<center>Aquest �s el <b>nom d'usuari</b> que coincidir� amb aquest "
+#~ "usuari. <b>*</b> coincidir� amb qualsevol nom d'usuari.</center>"
+
+#~ msgid ""
+#~ "<center>This the <b>hostname</b> that will match this user. <b>*</b> will "
+#~ "match any hostname.</center>"
+#~ msgstr ""
+#~ "<center>Aquests �s el <b>nom de m�quina</b> que coincidir� amb aquest "
+#~ "usuari. <b>*</b> coincidir� amb qualsevol nom de m�quina.</center>"
+
+#~ msgid "Registered User Entry"
+#~ msgstr "Entrada d'Usuaris Registrats"
+
+#~ msgid "Name:"
+#~ msgstr "Nom:"
+
+#~ msgid "Masks:"
+#~ msgstr "M�scares:"
+
+#~ msgid "&Add..."
+#~ msgstr "&Afegir..."
+
+#~ msgid "&Edit"
+#~ msgstr "&Editar"
+
+#~ msgid "Notify when user is online"
+#~ msgstr "Notificar quan l'usuari estigui connectat"
+
+#~ msgid "Notify nicknames:"
+#~ msgstr "Notificar nicks:"
+
+#~ msgid "<center>You can enter a space separated list of nicknames.</center>"
+#~ msgstr ""
+#~ "<center>Pot entrar una llista de nicks separats per espais.</center>"
+
+#~ msgid "All Properties..."
+#~ msgstr "Totes les propietats..."
+
+#~ msgid "Registered Users - KVIrc"
+#~ msgstr "Usuaris registrats - KVIrc"
+
+#~ msgid "Name"
+#~ msgstr "Nom"
+
+#~ msgid "Notify"
+#~ msgstr "Notificar"
+
+#~ msgid ""
+#~ "<center>This is the list of registered users. KVIrc can automatically "
+#~ "recognize and associate properties to them.<br>Use the buttons on the "
+#~ "right to add, edit and remove entries. The \"notify\" column allows you "
+#~ "to quickly add users to the notify list. Notify list fine-tuning can be "
+#~ "performed by editing the entry properties.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta �s la llista d'usuaris registrats. KVIrc pot recon�ixer i "
+#~ "associar-li propietats de forma autom�tica.<br>Empra els botons de la "
+#~ "dreta per a afegir, editar o borra entrades.<br>La columna \"notificar\" "
+#~ "et permet afegir usuaris a la llista de notificacions r�pidament. L'ajust "
+#~ "de la llista de notificacions pot fer-se editant l'entrada de propietats."
+#~ "</center>"
+
+#~ msgid "Add (Wizard)..."
+#~ msgstr "Afegir (assistent)..."
+
+#~ msgid "Add a registered user by means of a user-friendly wizard."
+#~ msgstr "Afegir un usuari registrat per mitj� d'un amigable assistent."
+
+#~ msgid "Open the edit dialog to create a new user entry."
+#~ msgstr "Obrir el di�leg d'edici� per a crear una nova entrada d'usuari."
+
+#~ msgid "Remove the currently selected entries."
+#~ msgstr "Borrar les entrades actualment triades."
+
+#~ msgid "&Edit..."
+#~ msgstr "&Editar..."
+
+#~ msgid "Edit the first selected entry."
+#~ msgstr "Aquest bot� permetr� editar la primera entrada triada."
+
+#~ msgid "Export To..."
+#~ msgstr "Exportar a..."
+
+#~ msgid ""
+#~ "Export the selected entries to a file.<br>All the data associated with "
+#~ "the selected registered users will be exported.<br>You (or anyone else) "
+#~ "can later import the entries by using the \"Import\" button."
+#~ msgstr ""
+#~ "Exporta les entrades triades a un arxiu.<br>Totes les dades associades "
+#~ "als usuaris registrats triats seran exportades.<br>Vost�, o qualsevol "
+#~ "altre, pot importar les entrades m�s tard emprant el bot� \"Importar\"."
+
+#~ msgid "Import From..."
+#~ msgstr "Importar Des de..."
+
+#~ msgid ""
+#~ "Import entries from a file exported earlier by the \"export\" function of "
+#~ "this dialog."
+#~ msgstr ""
+#~ "Importa les entrades des d'un arxiu exportat per la funci� \"Exportar\" "
+#~ "d'aquest di�leg."
+
+#~ msgid "No entries selected."
+#~ msgstr "No hi ha entrades triades."
+
+#~ msgid "Can't open file %s for writing."
+#~ msgstr "No puc obrir l'arxiu \"%s\" en mode escriptura"
+
+#~ msgid "Can't export the registered users database: Write error."
+#~ msgstr ""
+#~ "No s'ha pogut exportar la base de dades d'usuaris registrats. Error "
+#~ "d'escriptura."
+
+#~ msgid "Can't open file %s for reading."
+#~ msgstr "No puc obrir l'arxiu %s per a lectura."
+
+#~ msgid "The file %s doesn't appear to be a valid registered users database."
+#~ msgstr ""
+#~ "L'arxiu %s no semblar ser una base de dades d'usuaris registrats v�lida."
+
+#~ msgid "The file %s contains an invalid registered users database version."
+#~ msgstr ""
+#~ "L'arxiu %s cont� una versi� no v�lida de la base de dades d'usuaris "
+#~ "registrats."
+
+#~ msgid "Can't import the registered users database: Read error."
+#~ msgstr ""
+#~ "No s'ha pogut importar la base de dades d'usuaris registrats. Error de "
+#~ "lectura."
+
+#~ msgid "Drop here the icons from the toolbars to remove them"
+#~ msgstr "Deixar aqu� les icones des de la barra d'eines per a eliminar-los"
+
+#~ msgid "ToolBar Properties"
+#~ msgstr "Propietats de la Barra d'Eines"
+
+#~ msgid "Id"
+#~ msgstr "Id"
+
+#~ msgid "Please choose the icon for the ToolBar"
+#~ msgstr "Si us plau, trii la icona per a la Barra d'Eines"
+
+#~ msgid "Invalid ToolBar Label"
+#~ msgstr "Etiqueta de Barra d'Eines no v�lida"
+
+#~ msgid "The ToolBar Label can't be empty!"
+#~ msgstr "L'etiqueta de la Barra d'Eines no pot estar buida!"
+
+#~ msgid "Duplicate ToolBar Id"
+#~ msgstr "Id de la Barra d'Eines duplicada"
+
+#~ msgid ""
+#~ "The specified ToolBar Id already exists.<br>Would you like KVIrc to "
+#~ "assign it automatically (so it doesn't collide with any other toolbar) or "
+#~ "you prefer to do it manually ?"
+#~ msgstr ""
+#~ "L'Id de la Barra d'Eines especificada existeix.<br>�Vol que KVIrc assigni "
+#~ "un autom�ticament (per a que no coincideixi amb alguna altre barra "
+#~ "d'eines) o vols fer-ho manualment?"
+
+#~ msgid "Manually"
+#~ msgstr "Manualment"
+
+#~ msgid "Automatically"
+#~ msgstr "Autom�ticament"
+
+#~ msgid "Hide Advanced"
+#~ msgstr "Amagar Avan�at"
+
+#~ msgid "Customize Toolbars"
+#~ msgstr "Barres d'Eines personalitzades"
+
+#~ msgid "New ToolBar"
+#~ msgstr "Nova Barra d'Eines"
+
+#~ msgid "Delete ToolBar"
+#~ msgstr "Borrar Barra d'Eines"
+
+#~ msgid "Edit ToolBar"
+#~ msgstr "Editar Barra d'Eines"
+
+#, fuzzy
+#~ msgid "Export ToolBar"
+#~ msgstr "Editar Barra d'Eines"
+
+#~ msgid "Confirm ToolBar Deletion"
+#~ msgstr "Confirmar l'Esborrat de la Barra d'Eines"
+
+#~ msgid "Do you really want to delete toolbar \"%1\" ?"
+#~ msgstr "�Realment vol borra la barra d'eines \"%1\" ?"
+
+#, fuzzy
+#~ msgid "ToolBar Export"
+#~ msgstr "Applets de Barra d'eines"
+
+#, fuzzy
+#~ msgid "Unable to write to the toolbar file."
+#~ msgstr "No ha estat possible escriure en l'arxiu d'�lies."
+
+#~ msgid "Please specify the properties for the toolbar \"%1\""
+#~ msgstr "Per favor, especifiqui les propietats de la barra d'eines \"%1\""
+
+#~ msgid "Please specify the properties for the new toolbar"
+#~ msgstr "Per favor, especifiqui les propietats de la nova barra d'eines"
+
+#~ msgid "My ToolBar"
+#~ msgstr "La meva Barra d'Eines"
+
+#~ msgid "Terminal emulator"
+#~ msgstr "Emulador de terminal"
+
+#~ msgid "Close this window"
+#~ msgstr "Tancar la finestra"
+
+#~ msgid "Can't create the terminal emulation part"
+#~ msgstr "No puc crear la part d'emulaci� de terminal"
+
+#~ msgid "Can't retrieve the terminal emulation factory"
+#~ msgstr "No puc recuperar la factoria d'emulaci� de terminal"
+
+#~ msgid "Terminal"
+#~ msgstr "Terminal"
+
+#~ msgid "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+#~ msgstr "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+
+#~ msgid "This window has no associated irc context"
+#~ msgstr "Aquesta finestra no t� context d'irc associat"
+
+#~ msgid "No such irc context (%d)"
+#~ msgstr "No existeix el context irc (%d)"
+
+#, fuzzy
+#~ msgid "Label:"
+#~ msgstr "Etiqueta"
+
+#, fuzzy
+#~ msgid "Action code"
+#~ msgstr "Directoris de l'Aplicaci�"
+
+#, fuzzy
+#~ msgid "Code"
+#~ msgstr "Tancar"
+
+#, fuzzy
+#~ msgid "Category:"
+#~ msgstr "Categoria: %Q"
+
+#, fuzzy
+#~ msgid "Small Icon:"
+#~ msgstr "Icones Petites"
+
+#, fuzzy
+#~ msgid "Big Icon:"
+#~ msgstr "Icona:"
+
+#, fuzzy
+#~ msgid "Needs IRC Context"
+#~ msgstr "Nou Context d'IRC"
+
+#, fuzzy
+#~ msgid "Needs IRC Connection"
+#~ msgstr "Nou Context d'IRC"
+
+#, fuzzy
+#~ msgid "Enable at Login"
+#~ msgstr "Activar xifrat"
+
+#, fuzzy
+#~ msgid "Enable in Console Windows"
+#~ msgstr "Finestres de consola"
+
+#, fuzzy
+#~ msgid "Enable in Channel Windows"
+#~ msgstr "Finestres de canal"
+
+#, fuzzy
+#~ msgid "Enable in Query Windows"
+#~ msgstr "Finestres de privats"
+
+#, fuzzy
+#~ msgid "Enable in DCC Chat Windows"
+#~ msgstr "Finestres de transfer�ncies DCC"
+
+#, fuzzy
+#~ msgid "Flags"
+#~ msgstr "Pla"
+
+#, fuzzy
+#~ msgid "Action"
+#~ msgstr "Accions IRC"
+
+#, fuzzy
+#~ msgid "New Action"
+#~ msgstr "Acci� d'usuari"
+
+#, fuzzy
+#~ msgid "Delete Actions"
+#~ msgstr "Selecci�"
+
+#, fuzzy
+#~ msgid "Export Actions..."
+#~ msgstr "Exportar a..."
+
+#, fuzzy
+#~ msgid "My Action"
+#~ msgstr "Accions IRC"
+
+#, fuzzy
+#~ msgid "Put here a short description of your action"
+#~ msgstr "<center>Posi aqu� una breu descripci� de la xarxa.</center>"
+
+#, fuzzy
+#~ msgid "Action Editor"
+#~ msgstr "Editor d'�lies"
+
+#, fuzzy
+#~ msgid "Apply"
+#~ msgstr "&Aplicar"
+
+#~ msgid "Socket Spy [IRC Context %u]"
+#~ msgstr "Espia de Sockets [Context IRC %u]"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Socket Spy</b></font> <font color=\"%s\">[IRC "
+#~ "Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>Espia de Sockets</b></font> <font color=\"%s"
+#~ "\">[Context IRC %u]</font></nobr>"
+
+#~ msgid "Socket open"
+#~ msgstr "Socket obert"
+
+#~ msgid "Socket closed"
+#~ msgstr "Socket tancat"
+
+#, fuzzy
+#~ msgid "Sound file '%Q' not found"
+#~ msgstr "Arxiu de so '%s' no trobat"
+
+#, fuzzy
+#~ msgid "Unable to play sound '%Q'"
+#~ msgstr "No �s possible reproduir el so '%s'"
+
+#~ msgid "Sorry , I can't find a sound system to use on this machine"
+#~ msgstr ""
+#~ "Ho sento, no puc trobar un sistema de so per a emprar en aquesta m�quina"
+
+#~ msgid "Sound system detected to: %s"
+#~ msgstr "Sistema de so detectat :%s"
+
+#~ msgid "Configure"
+#~ msgstr "Configurar"
+
+#, fuzzy
+#~ msgid "Show Help"
+#~ msgstr "Mostrar %1"
+
+#, fuzzy
+#~ msgid "Do you really want to uninstall the addon \"%1\" ?"
+#~ msgstr "�Realment vol borra la barra d'eines \"%1\" ?"
+
+#, fuzzy
+#~ msgid "Name: %Q"
+#~ msgstr "Nom:"
+
+#~ msgid "Description: %Q"
+#~ msgstr "Descripci�: %Q"
+
+#, fuzzy
+#~ msgid "Total: %d addons installed"
+#~ msgstr "Total m�quines llistades"
+
+#, fuzzy
+#~ msgid "The addon \"%1\" does not exist"
+#~ msgstr "L'acci� \"%1\" no existeix"
+
+#, fuzzy
+#~ msgid "The addon \"%1\" has no help callback set"
+#~ msgstr "L'acci� \"%1\" no existeix"
+
+#, fuzzy
+#~ msgid "The specified version \"%Q\" is not a valid version string"
+#~ msgstr "L'adre�a d'enlla� (bind) especificada (%Q) no �s v�lida"
+
+#, fuzzy
+#~ msgid "The specified KVIrc version \"%Q\" is not a valid version string"
+#~ msgstr "El temps UNIX especificat no �s v�lid (%s)"
+
+#, fuzzy
+#~ msgid "Script registration failed"
+#~ msgstr "Creaci� de socket fallida"
+
+#, fuzzy
+#~ msgid "Destinaion file exists: no copy made"
+#~ msgstr "L'arxiu de dest� existeix: no s'ha fet c�pia"
+
+#, fuzzy
+#~ msgid "Failed to copy from %Q to %Q"
+#~ msgstr "Errada al copiar %s a %s"
+
+#~ msgid "Destination file exists: file not renamed"
+#~ msgstr "L'arxiu de dest� existeix: no s'ha renombrat"
+
+#, fuzzy
+#~ msgid "Failed to rename %Q to %Q"
+#~ msgstr "Errada al renombrar %s a %s"
+
+#, fuzzy
+#~ msgid "Failed to make the directory %Q"
+#~ msgstr "Errada al crear el directori %s"
+
+#, fuzzy
+#~ msgid "Failed to remove the file %Q"
+#~ msgstr "Errada al borrar l'arxiu %s"
+
+#, fuzzy
+#~ msgid "Failed to remove the directory %Q"
+#~ msgstr "Errada al borrar el directori %s"
+
+#, fuzzy
+#~ msgid "The specified directory does not exist '%Q'"
+#~ msgstr "El directori especificat no existeix '%s'"
+
+#, fuzzy
+#~ msgid "Can't open the file \"%Q\" for reading"
+#~ msgstr "No puc obrir l'arxiu \"%s\" per a lectura"
+
+#, fuzzy
+#~ msgid "Read error for file %Q"
+#~ msgstr "Error de lectura per a l'arxiu %s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Read error for file %Q (have been unable to read the requested size in "
+#~ "1000 retries)"
+#~ msgstr ""
+#~ "Error de lectura de l'arxiu %s (no s'ha pogut llegir la mida solicitada "
+#~ "en 1000 reintents)"
+
+#, fuzzy
+#~ msgid "Can't open the file \"%Q\" for writing"
+#~ msgstr "No puc obrir l'arxiu \"%s\" en mode escriptura"
+
+#~ msgid "Event"
+#~ msgstr "Event"
+
+#~ msgid "Edit the event handler name."
+#~ msgstr "Editar el nom del manipulador d'events."
+
+#~ msgid "&Enable Handler"
+#~ msgstr "Activar Manipulador"
+
+#~ msgid "&Disable Handler"
+#~ msgstr "&Desactivar Manipulador"
+
+#~ msgid "Re&move Handler"
+#~ msgstr "Eli&minar Manipulador"
+
+#~ msgid "&Export Handler To..."
+#~ msgstr "&Exportar Manipulador A..."
+
+#~ msgid "&New Handler"
+#~ msgstr "&Nou Manipulador"
+
+#~ msgid "default"
+#~ msgstr "per defecte"
+
+#~ msgid "none"
+#~ msgstr "res"
+
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "\tEvent:\n"
+#~ "\t\t%s\n"
+#~ "\n"
+#~ "\tParameters:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "\tEvent:\n"
+#~ "\t\t%s\n"
+#~ "\n"
+#~ "\tPar�metres:\n"
+#~ "%s"
+
+#~ msgid "Unable to write to the event file."
+#~ msgstr "No ha estat possible escriure en l'arxiu d'events."
+
+#~ msgid "Unable to write to the events file."
+#~ msgstr "No ha estat possible escriure en l'arxiu d'events."
+
+#~ msgid "Event Editor"
+#~ msgstr "Editor d'Events"
+
+#~ msgid "Default part message:"
+#~ msgstr "Missatge d'abs�ncia per defecte:"
+
+#~ msgid "Default quit message:"
+#~ msgstr "Missatge de sortida per defecte:"
+
+#, fuzzy
+#~ msgid "Hide avatars in userlist"
+#~ msgstr "Emprar avatar"
+
+#~ msgid "USERINFO reply:"
+#~ msgstr "Resposta USERINFO:"
+
+#~ msgid ""
+#~ "<center>This is the CTCP USERINFO reply.<br>It can contain some "
+#~ "information about yourself.</center>"
+#~ msgstr ""
+#~ "<center> Aquesta �s la resposta a CTCP USERINFO.<br>Pot contindre alguna "
+#~ "informaci� sobre vost�.</center>"
+
+#~ msgid "Show at startup"
+#~ msgstr "Mostrar a l'inici"
+
+#~ msgid "Did you know..."
+#~ msgstr "Sabia vost� que..."
+
+#~ msgid "<b>Can't find any tip... :(</b>"
+#~ msgstr "<b>No s'ha pogut trobar cap consell... :(</b>"
+
+#~ msgid "Lag meter was not enabled"
+#~ msgstr "El mesurador de retr�s no s'ha habilitat"
+
+#~ msgid "Ops.. internal error"
+#~ msgstr "Ups... error intern"
+
+#~ msgid "Manage File &Transfers"
+#~ msgstr "Gestionar &Transfer�ncies d'Arxius"
+
+#~ msgid "Password"
+#~ msgstr "Clau"
+
+#~ msgid "&Join"
+#~ msgstr "Unir-se"
+
+#~ msgid "Show this window after connecting"
+#~ msgstr "Mostrar aquesta finestra despr�s de connectar"
+
+#~ msgid "Recent Channels"
+#~ msgstr "Canals Recents"
+
+#~ msgid "Registered Channels"
+#~ msgstr "Canals Registrats"
+
+#~ msgid "Raw Event"
+#~ msgstr "Events Raw"
+
+#, fuzzy
+#~ msgid "Edit the raw event handler name."
+#~ msgstr "Editar el nom del manipulador d'events."
+
+#~ msgid "&Add Raw Event..."
+#~ msgstr "&Afegir Events Raw..."
+
+#~ msgid "New Raw Event"
+#~ msgstr "Nou Event Raw"
+
+#~ msgid "Enter the numeric code of the message (0-999)"
+#~ msgstr "Introdueix el codi num�ric del missatge (0-999)"
+
+#, fuzzy
+#~ msgid "Unable to write to the raw event file."
+#~ msgstr "No ha estat possible escriure en l'arxiu d'events."
+
+#, fuzzy
+#~ msgid "Unable to write to the raw events file."
+#~ msgstr "No ha estat possible escriure en l'arxiu d'events."
+
+#~ msgid "Raw Editor"
+#~ msgstr "Editor Raw"
+
+#~ msgid "%cCore action: %Q"
+#~ msgstr "%cAcci� principal: %Q"
+
+#~ msgid "%cUser action: %Q"
+#~ msgstr "%cAcci� d'usuari: %Q"
+
+#~ msgid "Label: %Q"
+#~ msgstr "Etiqueta: %Q"
+
+#~ msgid "Category: %Q"
+#~ msgstr "Categoria: %Q"
+
+#~ msgid "The action \"%1\" is disabled"
+#~ msgstr "L'acci� \"%1\" est� deshabilitada"
+
+#~ msgid "The action \"%1\" does not exist"
+#~ msgstr "L'acci� \"%1\" no existeix"
+
+#~ msgid "The action \"%1\" is a core action and cannot be destroyed"
+#~ msgstr "L'acci� \"%1\" �s una acci� principal i no pot se destru�da"
+
+#~ msgid ""
+#~ "The action \"%1\" is already defined as core action and cannot be "
+#~ "overridden"
+#~ msgstr ""
+#~ "L'acci� \"%1\" ja est� definida como una acci� principal i no pot ser "
+#~ "sobreescrita"
+
+#~ msgid "&Execute"
+#~ msgstr "&Executar"
+
+#~ msgid "Params:"
+#~ msgstr "Par�metres:"
+
+#~ msgid "Script Tester"
+#~ msgstr "Comprovador d'Script"
+
+#~ msgid ""
+#~ "Broken slot '%s' in target object '%s' while emitting signal '%s' from "
+#~ "object '%s': disconnecting"
+#~ msgstr ""
+#~ "Slot '%s' erroni en l'objecte de dest� '%s' mentres s'emetia la senyal '%"
+#~ "s' des de l'objecte '%s': desconectant"
+
+#~ msgid ""
+#~ "No slot function '%s' exported by target object '%s' while emitting "
+#~ "signal '%s' from object '%s': disconnecting"
+#~ msgstr ""
+#~ "No hi ha una funci� '%s' slot exportada per l'objecte dest� '%s' mentres "
+#~ "s'emetia la senyal '%s' des de l'objecte '%s': desconectant"
+
+#~ msgid "Invalid timeout"
+#~ msgstr "Temps d'expiraci� no v�lid"
+
+#~ msgid "Invalid timer id"
+#~ msgstr "id de cron�metre no v�lida"
+
+#, fuzzy
+#~ msgid "Property: %c%s%c, type: %s"
+#~ msgstr " Propietat: %s=%s"
+
+#, fuzzy
+#~ msgid ", set"
+#~ msgstr " seg "
+
+#, fuzzy
+#~ msgid "Oops... no such property: %s"
+#~ msgstr " Propietat: %s=%s"
+
+#~ msgid "Not enough parameters"
+#~ msgstr "No hi ha suficients par�metres"
+
+#, fuzzy
+#~ msgid "No such QT property (%s)"
+#~ msgstr "No existeix l'objecte (%s)"
+
+#, fuzzy
+#~ msgid "missing parameter"
+#~ msgstr "Falta par�metre"
+
+#, fuzzy
+#~ msgid "Invalid parameter (%s)"
+#~ msgstr "Par�metre fila no v�lid (%s)"
+
+#, fuzzy
+#~ msgid "Pixmap not found"
+#~ msgstr "M�quina no trobada"
+
+#, fuzzy
+#~ msgid "Unsupported QT property (%s)"
+#~ msgstr "Protocol %s no suportat"
+
+#, fuzzy
+#~ msgid "Missing parameters"
+#~ msgstr "Falta par�metre"
+
+#~ msgid "This window has no associated IRC context"
+#~ msgstr "Aquesta finestra no t� context d'IRC associat"
+
+#~ msgid "Unknown"
+#~ msgstr "Desconegut"
+
+#~ msgid "[Parser warning in '%Q']: %Q"
+#~ msgstr "[Av�s del parser en '%Q']: %Q"
+
+#~ msgid "Can't find the multimedia file %s"
+#~ msgstr "No es pot trobar l'arxiu multim�dia %s"
+
+#~ msgid "Missing target, no action taken"
+#~ msgstr "Falta el dest�, no s'ha realitzat cap acci�"
+
+#~ msgid "Invalid timeout specified , using default"
+#~ msgstr ""
+#~ "S'ha especificat un valor de temps d'expiraci� no v�lid, emprant valor "
+#~ "per defecte"
+
+#~ msgid "Can't add a file offer for file %s (huh ? file not readable ?)"
+#~ msgstr "No puc afegir una oferta d'arxiu per a %s (�arxiu no llegible?)"
+
+#~ msgid "Added %d secs file offer for file %s (%s) and receiver %s"
+#~ msgstr "Afegida l'oferta de %d segs de l'arxiu %s (%s) i receptor %s"
+
+#~ msgid "%s plays '%s'"
+#~ msgstr "%s reprodueix '%s'"
+
+#~ msgid "%s plays '%s' to %s"
+#~ msgstr "%s reprodueix '%s' per a %s"
+
+#~ msgid "Error in command: %c%c%Q"
+#~ msgstr "Error en comanda: %c%c%Q"
+
+#, fuzzy
+#~ msgid "Error token: %c%Q"
+#~ msgstr "Error en paraula clau: %c%s"
+
+#~ msgid "Parsing stopped at %cline %d , character %d"
+#~ msgstr "An�lisis aturat en %cl�nia %d , car�cter %d"
+
+#~ msgid " %s"
+#~ msgstr " %s"
+
+#~ msgid "Object scope: name (%s), class (%s)"
+#~ msgstr "�mbit d'objecte: nom (%s), classe (%s)"
+
+#~ msgid "Object scope: deleted object"
+#~ msgstr "�mbit d'objecte: objecte borrat"
+
+#~ msgid "This pointer: name (%s), class (%s)"
+#~ msgstr "Punter this: nom (%s), classe (%s)"
+
+#~ msgid "This pointer: deleted object"
+#~ msgstr "Punter this: objecte borrat"
+
+#~ msgid "Internal call stack:"
+#~ msgstr "Pila de crides interna:"
+
+#~ msgid ""
+#~ " Current command stack depth: %d frames (stopping output at 25th frame)"
+#~ msgstr ""
+#~ "Profunditat de la pila de comandes actual: %d quadres (aturant la sortida "
+#~ "en el quadre 25)"
+
+#~ msgid " Parent command stack depth: %d frames"
+#~ msgstr " Profunditat de la pila de comandes del pare: %d quadros"
+
+#~ msgid "You are not connected to a server"
+#~ msgstr "No est� conectat a un servidor"
+
+#~ msgid "%s (module %s)"
+#~ msgstr "%s (m�dul %s)"
+
+#~ msgid "Module '%s', Command '%s'"
+#~ msgstr "M�dul '%s', Comanda '%s'"
+
+#~ msgid "Can't rebind the command: window with id %s not found"
+#~ msgstr "No puc reassociar la comanda: finestra amb id '%s' no trobada"
+
+#~ msgid ""
+#~ "Can't rebind the command: missing window identifier after the -r switch"
+#~ msgstr ""
+#~ "No puc reassociar la comanda: s'ha perdut l'identificador de finestra "
+#~ "despr�s del modificador -r"
+
+#~ msgid "Error triggered from raw event handler %c%s::%Q"
+#~ msgstr "Error disparat des de el manipulador d'events raw %c%s::%Q"
+
+#~ msgid "Error triggered from event handler %c%Q::%Q"
+#~ msgstr "Error disparat des del manipulador d'events %c%Q::%Q"
+
+#~ msgid "Raw event handler %s::%Q is broken: disabling"
+#~ msgstr "El manipulador d'events raw %s::%Q �s erroni: deshabilitant"
+
+#~ msgid "Event handler %Q::%Q is broken: disabling"
+#~ msgstr "El manipulador d'events %Q::%Q �s erroni: deshabilitant"
+
+#~ msgid "Variable evaluated to \"%s\""
+#~ msgstr "Variable avaluada a \"%s\""
+
+#~ msgid "Module '%s', Function '%s'"
+#~ msgstr "M�dul '%s', Funci� '%s'"
+
+#~ msgid "Identifier evaluated to \"%s\""
+#~ msgstr "Identificador avaluat a \"%s\""
+
+#~ msgid "Left operand of operator %s (%s{%s}) is undefined : assuming 0"
+#~ msgstr ""
+#~ "L'operant esquerra de l'operador %s (%s{%s}) no est� definit : assumint 0"
+
+#~ msgid "Left operand of operator %s (%s[%s]) is undefined : assuming 0"
+#~ msgstr ""
+#~ "L'operador esquerra de l'operador %s (%s[%s]) no est� definit : assumint 0"
+
+#~ msgid "Left operand of operator %s (%s) is undefined : assuming 0"
+#~ msgstr ""
+#~ "L'operador esquerra de l'operador %s (%s) no est� definit : assumint 0"
+
+#~ msgid "Variable %s{%s} evaluated to '%s' in operator %s (not a number)"
+#~ msgstr ""
+#~ "Variable %s{%s} avaluada com a '%s' en l'operador %s (no �s un n�mero)"
+
+#~ msgid "Variable %s[%s] evaluated to '%s' in operator %s (not a number)"
+#~ msgstr ""
+#~ "Variable %s[%s] avaluada com a '%s' en l'operador %s (no �s un n�mero)"
+
+#~ msgid "Variable %s evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Variable %s avaluada com a '%s' en l'operador %s (no �s un n�mero)"
+
+#~ msgid "Right operand of operator %s evaluated to '%s' (not a number)"
+#~ msgstr ""
+#~ "L'operant de la dreta de l'operador %s avaluat a '%s' (no �s un n�mero)"
+
+#~ msgid "operator %c%c"
+#~ msgstr "operador %c%c"
+
+#~ msgid "Broken condition in menu setup: assuming false"
+#~ msgstr "Condici� erronia a la configuraci� del men�: assumient fals"
+
+#~ msgid "Broken icon parameter: ignoring"
+#~ msgstr "Par�metre d'icona erroni: ignorant"
+
+#~ msgid "Can't find the icon \"%Q\": ignoring"
+#~ msgstr "No puc trobar la icona \"%Q\": ignorando"
+
+#~ msgid "Broken text parameter: assuming empty string"
+#~ msgstr "Par�metre de text erroni: assumint la cadena buida"
+
+#~ msgid "Recursive definition detected for popup '%Q': ignoring"
+#~ msgstr "Detectada definici� recursiva per al men� emergent '%Q': ignorant"
+
+#~ msgid "Can't find the external popup '%Q'; ignoring"
+#~ msgstr "No puc trobar el men� emergent extern '%Q': ignorant"
+
+#~ msgid "Broken prologue in popup menu '%Q': ignoring"
+#~ msgstr "Pr�leg erroni en men� emergent '%Q': ignorant"
+
+#~ msgid "Broken epilogue in popup menu '%Q': ignoring"
+#~ msgstr "Ep�leg erroni en men� emergent '%Q': ignorant"
+
+#~ msgid "Say parse error: Broken command"
+#~ msgstr "Diu error de l'analitzador: comanda err�nia"
+
+#, fuzzy
+#~ msgid ""
+#~ "Another connection is already in progress in the selected IRC context"
+#~ msgstr "Una altre connexi� en progr�s"
+
+#, fuzzy
+#~ msgid "No menu bar item with text '%Q'"
+#~ msgstr "No existeix l'element de men� amb el text '%s'"
+
+#, fuzzy
+#~ msgid "Invalid index specified: ignored"
+#~ msgstr ""
+#~ "S'ha especificat un cron�metre v�lid, fent servir el valor per defecte"
+
+#, fuzzy
+#~ msgid "The popup '%Q' is not defined"
+#~ msgstr "El men� emergent '%s' no est� definit"
+
+#, fuzzy
+#~ msgid "No target channel specified and the current window is not a channel"
+#~ msgstr "La finestra especificada no �s un canal"
+
+#, fuzzy
+#~ msgid "No catalogue %Q for the current language found"
+#~ msgstr "No s'ha trobat el cat�leg%ss per al llenguatge actual"
+
+#, fuzzy
+#~ msgid "The catalogue %Q was not loaded"
+#~ msgstr "El cat�leg %s no ha sigut carregat"
+
+#, fuzzy
+#~ msgid "Invalid IRC url (%Q)"
+#~ msgstr "url IRC no v�lida (%s)"
+
+#, fuzzy
+#~ msgid "The commandline for this url type seems to be broken (%Q)"
+#~ msgstr ""
+#~ "La l�nia de comandes per aquest tipus d'url sembla estar malament (%s)"
+
+#, fuzzy
+#~ msgid "No commandline specified for this type of url (%Q)"
+#~ msgstr "No s'ha especificat l�nia de comandes per a aquest tipus d'url (%s)"
+
+#~ msgid ""
+#~ "Option setting error: Unknown option or invalid value for option type"
+#~ msgstr ""
+#~ "Error de configuraci� de l'opci�: opci� desconeguda o valor no v�lid per "
+#~ "al tipus d'opci�"
+
+#~ msgid "Choose a file to parse"
+#~ msgstr "Trii un arxiu a analitzar"
+
+#~ msgid "Failed to load the file '%Q' for parsing"
+#~ msgstr "Ha fallat la c�rrega de l'arxiu '%Q' per a interpretar"
+
+#~ msgid "Missing channel list"
+#~ msgstr "Falta llista de canals"
+
+#~ msgid "You don't appear to be on channel %s"
+#~ msgstr "Vost� no es troba en el canal %s"
+
+#~ msgid "Popup %Q is not defined"
+#~ msgstr "El men� emergent %Q no est� definit"
+
+#~ msgid "A popup menu cannot be popped up twice"
+#~ msgstr "Un men� emergent no poc mostrar-se dues vegades"
+
+#~ msgid "Invalid syntax for screen coordinates, using cursor position"
+#~ msgstr ""
+#~ "Sintaxis no v�lida per a coordenades de pantalla, emprant la posici� del "
+#~ "cursor"
+
+#~ msgid "Empty target specified"
+#~ msgstr "S'ha especificat un dest� buit"
+
+#~ msgid "[RAW]: %Q"
+#~ msgstr "[RAW]:%Q"
+
+#~ msgid "Window with id %Q not found: no rebinding performed"
+#~ msgstr "Finestra amb id %Q no trobada: no s'ha realitzat la reassociaci�"
+
+#, fuzzy
+#~ msgid "Failed to execute command '%Q'"
+#~ msgstr "Errada a l'executar la comanda '%s'"
+
+#~ msgid ""
+#~ "The argument of the array count '#' operator didn't evaluate to an array: "
+#~ "automatic conversion from type '%Q' supplied"
+#~ msgstr ""
+#~ "L'argument de l'operador de la matriu '#' no s'avalua com una matriu: es "
+#~ "proporciona conversi� autom�tica des del tipus '%Q'"
+
+#~ msgid "Call to undefined function '%Q'"
+#~ msgstr "Crida a la funci� sense definir '%Q'"
+
+#~ msgid "Error in inner alias function call '%Q', called from this context"
+#~ msgstr ""
+#~ "Error a la crida a funci� interna d'alias '%Q', crida de d'aquest context"
+
+#~ msgid "Stray dot ('.') character or invalid following module command name"
+#~ msgstr ""
+#~ "Car�cter punt ('.') sobrant o segueix un nom de comanda del m�dul no "
+#~ "v�lida"
+
+#~ msgid "Syntax error: malformed module command identifier"
+#~ msgstr "Error de sintaxis: identificador de comanda del m�dul mal format"
+
+#, fuzzy
+#~ msgid "Stray '::' sequence or invalid following alias name"
+#~ msgstr ""
+#~ "Car�cter punt ('.') sobrant o segueix un nom de comanda del m�dul no "
+#~ "v�lida"
+
+#, fuzzy
+#~ msgid "Syntax error: malformed alias identifier"
+#~ msgstr "Error de sintaxis: identificador de comanda del m�dul mal format"
+
+#, fuzzy
+#~ msgid "Syntax error: malformed (alias?) command identifier"
+#~ msgstr "Error de sintaxis: identificador de comanda del m�dul mal format"
+
+#~ msgid "Unknown callback command \"%Q\""
+#~ msgstr "Comanda callback \"%Q\" desconeguda"
+
+#~ msgid ""
+#~ "Timer name omitted but there is not current timer (this is not a timer "
+#~ "callback)"
+#~ msgstr ""
+#~ "Nom de cron�metre om�s, per� no hi ha un cron�metre actual (aquesta no �s "
+#~ "la callback d'un cron�metre)"
+
+#~ msgid "Can't kill the timer '%Q' since it is not running"
+#~ msgstr "No puc parar el cron�metre '%Q' perqu� no est� funcionant"
+
+#~ msgid "Hash reference assert failed: the variable evaluated to type '%Q'"
+#~ msgstr ""
+#~ "Ha fallat la verificaci� de la refer�ncia hash: la variable s'ha avaluat "
+#~ "com del tipus '%Q'"
+
+#~ msgid "DNS Lookup result for query \"%s\""
+#~ msgstr "Resultat de la cerca DNS per a la pregunta \"%s\""
+
+#~ msgid "Error: %Q"
+#~ msgstr "Error: %Q"
+
+#~ msgid "Hostname %d: %s"
+#~ msgstr "M�quina %d: %s"
+
+#~ msgid "IP address %d: %s"
+#~ msgstr "Direcci� IP %d: %s"
+
+#~ msgid "Operand of unary operator didn't evaluate to a number"
+#~ msgstr "L'operador unari no avalua a un n�mero"
+
+#~ msgid "Left operand didn't evaluate to a number"
+#~ msgstr "L'operador de l'esquerra no �s un n�mero"
+
+#~ msgid "Right operand didn't evaluate to a number"
+#~ msgstr "L'operand de la dreta no �s un n�mero"
+
+#~ msgid "Division by zero"
+#~ msgstr "Divisi� por zero"
+
+#~ msgid "Hash key evaluated to empty string: fix the script"
+#~ msgstr "Clau hash avaluada a una cadena buida: arregla l'script"
+
+#~ msgid ""
+#~ "The argument of the {} subscript didn't evaluate to a hash: automatic "
+#~ "conversion from type '%Q' supplied"
+#~ msgstr ""
+#~ "L'argument del sub�ndex {} no s'avalua com un hash: es proporciona "
+#~ "conversi� autom�tica des del tipus '%Q'"
+
+#~ msgid ""
+#~ "The argument of the {} subscript didn't evaluate to a hash automatic "
+#~ "conversion from %Q supplied"
+#~ msgstr ""
+#~ "L'argument del sub�ndex {} no s'avalua com un hash, es proporciona "
+#~ "conversi� autom�tica des del tipus '%Q'"
+
+#~ msgid "Module function call failed: can't load the module '%Q'"
+#~ msgstr ""
+#~ "Ha fallat la crida a la funci� del m�dul: no puc carregar el m�dul '%Q'"
+
+#~ msgid ""
+#~ "Module function call failed: the module '%Q' doesn't export a function "
+#~ "named '%Q'"
+#~ msgstr ""
+#~ "Ha fallat la crida a la funci� del m�dul: el m�dul '%Q' no exporta una "
+#~ "funci� cridada '%Q'"
+
+#~ msgid "This window has no associated IRC context and is not a DCC chat"
+#~ msgstr "Aquesta finestra no t� context d'IRC associat i no �s un DCC"
+
+#, fuzzy
+#~ msgid "Class \"%Q\" is not defined"
+#~ msgstr "La classe %s no est� definida"
+
+#, fuzzy
+#~ msgid "The specified parent object does not exist"
+#~ msgstr "No existeix la barra d'eines especificada"
+
+#, fuzzy
+#~ msgid "There is no option named '%Q'"
+#~ msgstr "No existeix l'opci� anomenada '%s'"
+
+#~ msgid "No such IRC context (%u)"
+#~ msgstr "No existeix el context d'IRC (%u)"
+
+#, fuzzy
+#~ msgid "This window is not associated to an IRC context"
+#~ msgstr "Aquesta finestra no t� context d'IRC associat"
+
+#~ msgid "Event handler %Q is broken: disabling"
+#~ msgstr "El manipulador d'events %Q �s erroni: deshabilitat"
+
+#, fuzzy
+#~ msgid "line %d, near character %d"
+#~ msgstr "An�lisis aturat en %cl�nia %d , car�cter %d"
+
+#~ msgid ""
+#~ "Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %"
+#~ "s\" for the command syntax"
+#~ msgstr ""
+#~ "Trobat el car�cter '%q' (unicode 0x%x) on s'esperava '%c': mira \"/help %s"
+#~ "\" per a la sintaxis de les comandes"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found end of input where character '%c' was expected: see \"/help %s\" "
+#~ "for the command syntax"
+#~ msgstr ""
+#~ "Trobat el car�cter '%q' (unicode 0x%x) on s'esperava '%c': mira \"/help %s"
+#~ "\" per a la sintaxis de les comandes"
+
+#~ msgid "Empty script"
+#~ msgstr "Cadena buida"
+
+#~ msgid ""
+#~ "Syntax error after '%' variable prefix. If you want to use a plain '%' in "
+#~ "the code you need to escape it"
+#~ msgstr ""
+#~ "Error de sintaxis per a el prefixe de variable '%'. Si vols fer servir un "
+#~ "simple '%' en el codi no necessites escapar-lo"
+
+#, fuzzy
+#~ msgid "Objects have no extended scope variables"
+#~ msgstr "No hi ha variables d'�mbit ext�s en aquest �mbit"
+
+#~ msgid ""
+#~ "Declaring global variables with an uppercase letter is deprecated. Global "
+#~ "variables should be declared with 'global'"
+#~ msgstr ""
+#~ "Declarar variable globals amb una lletra maj�scula �s obsolet. Les "
+#~ "variables globals haurien de ser declarades amb 'global'"
+
+#~ msgid "Found character '%q' (unicode %x) where an instruction was expected"
+#~ msgstr ""
+#~ "S'ha trobat el car�cter '%q' (unicode %x) on s'esperava una instrucci�"
+
+#~ msgid "Unterminated instruction block"
+#~ msgstr "Bloc d'instruccions sense determinar"
+
+#~ msgid ""
+#~ "Unexpected end of script in instruction block (missing closing brace)"
+#~ msgstr ""
+#~ "Fi d'script inesperat en bloc d'instruccions (falta la clau de tancament)"
+
+#, fuzzy
+#~ msgid ""
+#~ "The dash after a command should be followed by a letter (switch), by a "
+#~ "digit (negative number) or be escaped"
+#~ msgstr ""
+#~ "La barra despr�s d'una comanda hauria de ser escapada o seguida per una "
+#~ "lletra o un n�mero (canvi)"
+
+#~ msgid "Unexpected character '%q' (unicode %x) after a switch dash"
+#~ msgstr "Car�cter inesperat '%q' (unicode %x) despr�s de la barra de canvi"
+
+#~ msgid "Unexpected end of script after a switch dash"
+#~ msgstr "Fi d'script inesperat despr�s d'una barra de canvi"
+
+#~ msgid ""
+#~ "The above problem might be related to the switch dash and the following "
+#~ "equal sign"
+#~ msgstr ""
+#~ "El problema anterior pot estar relacionat amb la barra de canvi i el "
+#~ "signe igual que la segueix"
+
+#~ msgid "Unexpected end of script in parameter list"
+#~ msgstr "Fi d'script inesperat a la llista de par�metres"
+
+#~ msgid "Unexpected end of line in parameter list"
+#~ msgstr "Fi de l�nia inesperat a la llista de par�metres"
+
+#, fuzzy
+#~ msgid "Skipping nested terminator character %q"
+#~ msgstr "An�lisis aturat en %cl�nia %d , car�cter %d"
+
+#~ msgid "Stray backslash at the end of the script"
+#~ msgstr "Barra enrere perduda al final de l'script"
+
+#~ msgid "Unterminated hash key"
+#~ msgstr "Clau hash sense acabar"
+
+#~ msgid "Unexpected end of script in hash key (missing '}' character ?)"
+#~ msgstr "Fi d'script inesperat en clau hash (�falta el car�cter '}'?)"
+
+#~ msgid ""
+#~ "Unexpected end of line in hash key (missing '}' character or unescaped "
+#~ "newline)"
+#~ msgstr ""
+#~ "Fi de l�nia inesperat en clau hash (falta el car�cter '}' o una l�nia "
+#~ "sense escapar)"
+
+#~ msgid "Unterminated string constant"
+#~ msgstr "Constant de cadena sense acabar"
+
+#~ msgid "Unexpected end of script in string constant (missing \" character ?)"
+#~ msgstr ""
+#~ "Fi d'script inesperat en constant de cadena (�falta el car�cter \"?)"
+
+#~ msgid ""
+#~ "Unexpected end of line in string constant (missing \" character or "
+#~ "unescaped newline)"
+#~ msgstr ""
+#~ "Fi de l�nia inesperada en constant de cadena (falta el car�cter \" o una "
+#~ "nova l�nia sense escapar)"
+
+#~ msgid "Unknown binary operator '=%q': did you mean '==' ?"
+#~ msgstr "Operador binario desconegut '=%q': �volies dir '==' ?"
+
+#~ msgid "Unknown binary operator '%q'"
+#~ msgstr "Operador binario desconegut '%q'"
+
+#~ msgid "Unexpected end of script in expression"
+#~ msgstr "Final inesperat d'script en una expressi�"
+
+#~ msgid ""
+#~ "Unexpected character %q (unicode %h) in expression. If it meant to be a "
+#~ "string use the quotes."
+#~ msgstr ""
+#~ "Car�cter inesperat %q (unicode %h) en l'expressi�. Si pret�n ser una "
+#~ "cadena hauria d'emprar cometes."
+
+#~ msgid "Internal error: pure virtual evaluateReadOnly called"
+#~ msgstr "Error intern: s'ha cridat al m�tode virtual pur avaluat ReadOnly"
+
+#~ msgid ""
+#~ "Internal error: trying to evaluate as read-write a read-only data location"
+#~ msgstr ""
+#~ "Error intern: intentant avaluar una posici� de dades de nom�s lectura com "
+#~ "a de lectura-escriptura"
+
+#, fuzzy
+#~ msgid "Internal error: pure virtual evaluateReadOnlyInObjectScope called"
+#~ msgstr "Error intern: s'ha cridat al m�tode virtual pur avaluat ReadOnly"
+
+#~ msgid "Error triggered from process callback handler: killing process"
+#~ msgstr ""
+#~ "Error llen�ant des de el proc�s de maneig de la callback: matant el proc�s"
+
+#~ msgid "This command can be used only in windows bound to an IRC context"
+#~ msgstr ""
+#~ "Aquesta comanda nom�s pot ser emprada en finestres associades a un "
+#~ "context IRC"
+
+#~ msgid "You're not connected to an IRC server"
+#~ msgstr "No est� conectat a un servidor IRC"
+
+#~ msgid "Missing parameter"
+#~ msgstr "Falta par�metre"
+
+#, fuzzy
+#~ msgid "Failed to send an unknown command as /raw"
+#~ msgstr "Enviar comandes desconegudes com a /RAW"
+
+#~ msgid "Call to undefined command '%Q'"
+#~ msgstr "Crida a una comanda sense definir '%Q'"
+
+#~ msgid "Error in inner alias command call '%Q', called from this context"
+#~ msgstr ""
+#~ "Error en comanda de crida a �lies intern '%Q', cridada des d'aquest "
+#~ "context"
+
+#, fuzzy
+#~ msgid "Missing class name"
+#~ msgstr "Falta el nom de l'�lies"
+
+#, fuzzy
+#~ msgid "Can't override the builtin class \"%Q\""
+#~ msgstr "No es pot matar una classe interna"
+
+#~ msgid "Window with ID '%s' not found, returning empty string"
+#~ msgstr "Finestra amb ID '%s' no trobada, retornant la cadena buida"
+
+#~ msgid "The specified window is not a channel"
+#~ msgstr "La finestra especificada no �s un canal"
+
+#, fuzzy
+#~ msgid "Module function call failed: can't load the module 'str'"
+#~ msgstr ""
+#~ "Ha fallat la crida a la funci� del m�dul: no puc carregar el m�dul '%Q'"
+
+#, fuzzy
+#~ msgid ""
+#~ "Module function call failed: the module 'str' doesn't export a function "
+#~ "named 'split'"
+#~ msgstr ""
+#~ "Ha fallat la crida a la funci� del m�dul: el m�dul '%Q' no exporta una "
+#~ "funci� cridada '%Q'"
+
+#~ msgid "The $sw() function can be used only in aliases"
+#~ msgstr "La funci� $sw() nom�s pot emprar-se amb �lies"
+
+#~ msgid "Window with caption %Q not found"
+#~ msgstr "Finestra amb t�tol %Q no trobada"
+
+#~ msgid "Array reference assert failed: the variable evaluated to type '%Q'"
+#~ msgstr ""
+#~ "Ha fallat la comprovaci� de la refer�ncia de la matriu: la variable s'ha "
+#~ "avaluat com del tipus '%Q'"
+
+#~ msgid "Module command call failed: can't load the module '%Q'"
+#~ msgstr ""
+#~ "Ha fallat la crida a la comanda del m�dul: no puc carregar el m�dul '%Q'"
+
+#, fuzzy
+#~ msgid ""
+#~ "Module command call failed: the module '%Q' doesn't export a callback "
+#~ "command named '%Q'"
+#~ msgstr ""
+#~ "Ha fallat la crida a la comanda del m�dul: m�dul '%Q' no exporta a una "
+#~ "comanda anomenada '%Q'"
+
+#~ msgid "Unexpected end of script after '$' function call prefix"
+#~ msgstr "Fi d'script inesperat despr�s del prefix de crida a funci�"
+
+#~ msgid "Unexpected character %q (unicode %x) after '$' function call prefix"
+#~ msgstr ""
+#~ "Car�cter inesperat '%q' (unicode %x) despr�s del prefixe de crida a "
+#~ "funci� '$'"
+
+#~ msgid ""
+#~ "Syntax error after '$' function call prefix. If you want to use a plain "
+#~ "'$' in the code you need to escape it"
+#~ msgstr ""
+#~ "Error de sintaxis despr�s del prefixe de crida '$'. Si vols emprar un "
+#~ "simple '$' en el codi necessites escapar-lo"
+
+#~ msgid "Invalid expression evaluation in object scope"
+#~ msgstr "Avaluaci� no v�lida de la expressi� en el �mbit de l'objecte"
+
+#~ msgid "Invalid command evaluation in object scope"
+#~ msgstr "Avaluaci� no v�lida de la comanda en l'�mbit de l'objecte"
+
+#~ msgid "Empty instruction block for command evaluation"
+#~ msgstr "Bloc d'instruccions buit per a l'avaluaci� de la comanda"
+
+#~ msgid ""
+#~ "Parameter identifiers are forbidden in object scope (after the '->' "
+#~ "operator)"
+#~ msgstr ""
+#~ "Els identificadors dels par�metres estan prohibits en l'�mbit de "
+#~ "l'objecte (despr�s de l'operador '->')"
+
+#~ msgid ""
+#~ "Ending index of a multiple parameter identifier is lower or equal to the "
+#~ "starting index. This will evaluate to a single parameter identifier."
+#~ msgstr ""
+#~ "L'�ndex final d'un identificador de par�metre m�ltiple �s menor o igual "
+#~ "al �ndex d'inici. S'avaluar� com un identificador de par�metre simple."
+
+#, fuzzy
+#~ msgid "Syntax error: malformed alias function call identifier"
+#~ msgstr "Error de sintaxis: identificador de comanda del m�dul mal format"
+
+#, fuzzy
+#~ msgid "Syntax error: malformed (alias?) function call identifier"
+#~ msgstr "Error de sintaxis: identificador de comanda del m�dul mal format"
+
+#~ msgid "Array index didn't evaluate to an integer"
+#~ msgstr "L'�ndex d'un vector no pot avaluar-se com un enter"
+
+#~ msgid ""
+#~ "Array index evaluated to a negative integer (non negative integer "
+#~ "expected)"
+#~ msgstr ""
+#~ "�ndex del vector avaluat com un enter negatiu (s'esperava un enter "
+#~ "negatiu)"
+
+#~ msgid ""
+#~ "The argument of the [] subscript didn't evaluate to an array: automatic "
+#~ "conversion from %Q supplied"
+#~ msgstr ""
+#~ "L'argument del sub�ndex [] no avalua a una matriu: es proporciona "
+#~ "conversi� autom�tica des de %Q"
+
+#~ msgid ""
+#~ "The argument of the [] subscript didn't evaluate to an array: automatic "
+#~ "conversion from type '%Q' supplied"
+#~ msgstr ""
+#~ "L'argument de sub�ndex [] no avalua a una matriu: es proporciona "
+#~ "conversi� autom�tica des del tipus %Q"
+
+#~ msgid ""
+#~ "The argument of the hash count '#' operator didn't evaluate to a hash: "
+#~ "automatic conversion from type '%Q' supplied"
+#~ msgstr ""
+#~ "L'operador de conteix hash '#' no s'avalua com un hash: es proporciona "
+#~ "conversi� autom�tica des del tipus '%Q'"
+
+#~ msgid "This is not a channel"
+#~ msgstr "Aix� no �s un canal"
+
+#~ msgid "Unterminated c-style multiline comment"
+#~ msgstr "Comentari multil�nia d'estil C sense acabar"
+
+#~ msgid "Unexpected end of script in multiline comment"
+#~ msgstr "Fi d'script inesperat en comentari multil�nia"
+
+#~ msgid ""
+#~ "Unexpected character '%q' (unicode %x) after a slash (it is a typo or a "
+#~ "malformed comment begin ?)"
+#~ msgstr ""
+#~ "Car�cter inesperat '%q' (unicode %x) despr�s de la barra (��s un error o "
+#~ "un comen�ament de comentari mal posat?)"
+
+#~ msgid ""
+#~ "The popup '%s' is actually locked: 'self-modifications' are not allowed"
+#~ msgstr ""
+#~ "El men� emergent '%s' est� bloquejat: les 'automodificacions' no estan "
+#~ "permesses"
+
+#~ msgid "The target variable didn't evaluate to an integer or real value"
+#~ msgstr "La variable dest� no avalua a un enter o un valor real"
+
+#~ msgid "The right side of operator '&=' didn't evaluate to an integer"
+#~ msgstr "El cant� dreta de l'operador '&=' no �s un enter"
+
+#~ msgid "The left side of operator '&=' didn't evaluate to an integer"
+#~ msgstr "El cant� esquerre de l'operador '&=' no �s un enter"
+
+#~ msgid "The right side of operator '/=' didn't evaluate to a number"
+#~ msgstr "El cant� dret de l'operador '/=' no �s un enter"
+
+#~ msgid "The left side of operator '/=' didn't evaluate to a number"
+#~ msgstr "El cant� esquerre de l'operador '/=' no �s un enter"
+
+#~ msgid "The right side of operator '%=' didn't evaluate to a number"
+#~ msgstr "El cant� dret de l'operador '%=' no �s un enter"
+
+#~ msgid "The left side of operator '%=' didn't evaluate to a number"
+#~ msgstr "El cant� esquerre de l'operador '%=' no �s un enter"
+
+#~ msgid "The right side of operator '*=' didn't evaluate to a number"
+#~ msgstr "El cant� dret de l'operador '*=' no �s un enter"
+
+#~ msgid "The left side of operator '*=' didn't evaluate to a number"
+#~ msgstr "El cant� esquerre de l'operador '*=' no �s un enter"
+
+#~ msgid "The right side of operator '|=' didn't evaluate to an integer"
+#~ msgstr "El cant� dret de l'operador '|=' no �s un enter"
+
+#~ msgid "The left side of operator '|=' didn't evaluate to an integer"
+#~ msgstr "El cant� esquerre de l'operadir '|=' no �s un enter"
+
+#~ msgid "The right side of operator '<<=' didn't evaluate to an integer"
+#~ msgstr "El cant� dret de l'operador '<<=' no �s un enter"
+
+#~ msgid "The left side of operator '<<=' didn't evaluate to an integer"
+#~ msgstr "El cant� esquerre de l'operador '<<=' no �s un enter"
+
+#~ msgid "The right side of operator '>>=' didn't evaluate to an integer"
+#~ msgstr "El cant� dret de l'operador '>>=' no �s un enter"
+
+#~ msgid "The left side of operator '>>=' didn't evaluate to an integer"
+#~ msgstr "El cant� esquerra de l'operador '>>=' no �s un enter"
+
+#~ msgid "The right side of operator '-=' didn't evaluate to a number"
+#~ msgstr "El cant� dret de l'operador '-=' no �s un enter"
+
+#~ msgid "The left side of operator '-=' didn't evaluate to a number"
+#~ msgstr "El cant� esquerre de l'operador '-=' no �s un enter"
+
+#~ msgid "The right side of operator '+=' didn't evaluate to a number"
+#~ msgstr "El cant� dret de l'operador '+=' no �s un enter"
+
+#~ msgid "The left side of operator '+=' didn't evaluate to a number"
+#~ msgstr "El cant� esquerre de l'operador '+=' no �s un enter"
+
+#~ msgid "The right side of operator '^=' didn't evaluate to an integer"
+#~ msgstr "El cant� dret de l'operador '^=' no �s un enter"
+
+#~ msgid "The left side of operator '^=' didn't evaluate to an integer"
+#~ msgstr "El cant� esquerre de l'operador '^=' no �s un enter"
+
+#~ msgid "Window with ID '%s' not found"
+#~ msgstr "Finestra amb ID '%s' no trobada"
+
+#~ msgid "Missing alias name"
+#~ msgstr "Falta el nom de l'�lies"
+
+#~ msgid "The alias %Q is not existing"
+#~ msgstr "L'�lies %Q no existeix"
+
+#~ msgid "The specified window has no button containers"
+#~ msgstr "La finestra especificada no t� contenidor per a botons"
+
+#, fuzzy
+#~ msgid "Window button '%Q' not found"
+#~ msgstr "Bot� de finestra '%s' no trobat"
+
+#, fuzzy
+#~ msgid "Can't find the icon '%Q'"
+#~ msgstr "No es pot trobar la icona '%s'"
+
+#, fuzzy
+#~ msgid "No such event (%Q)"
+#~ msgstr "No existeix l'event (%s)"
+
+#, fuzzy
+#~ msgid "No handler '%Q' for raw numeric event '%d'"
+#~ msgstr "No hi ha un manipulador %s' per a l'event num�ric raw '%d'"
+
+#, fuzzy
+#~ msgid "No handler '%Q' for event '%Q'"
+#~ msgstr "No hi ha manipulador '%s' per a l'event '%s'"
+
+#~ msgid "The specified ping time is invalid: assuming zero (no ping)"
+#~ msgstr ""
+#~ "El temps especificat per a ping no �s v�lid: assumint zero (sense ping)"
+
+#~ msgid "The specified maximum run time is invalid: assuming zero (infinite)"
+#~ msgstr "El temps m�xim d'execuci� no �s v�lid: assumint zero (infinit)"
+
+#~ msgid "Failed to start the process"
+#~ msgstr "Errada al comen�ar el proc�s"
+
+#, fuzzy
+#~ msgid "The specified object does not exist"
+#~ msgstr "No existeix la barra d'eines especificada"
+
+#~ msgid "Missing timer name"
+#~ msgstr "Falta el nom del cron�metre"
+
+#~ msgid "Missing timeout delay"
+#~ msgstr "Falta el temps d'expiraci� del men� emergent"
+
+#~ msgid "The timeout delay didn't evaluate to an integer"
+#~ msgstr "El retr�s del temps d'expiraci� no �s un n�mero"
+
+#~ msgid "Unable to add the timer: insufficient system resources"
+#~ msgstr "Impossible afegir el cron�metre: recursos del sistema insuficients"
+
+#, fuzzy
+#~ msgid ""
+#~ "The left side of the scope operator didn't evaluate as an object reference"
+#~ msgstr "El cant� esquerre de l'operador '&=' no �s un enter"
+
+#, fuzzy
+#~ msgid ""
+#~ "The left side of the scope operator evaluated to a null object reference"
+#~ msgstr "El cant� esquerre de l'operador '/=' no �s un enter"
+
+#, fuzzy
+#~ msgid ""
+#~ "Broken slot '%Q' in target object '%Q::%Q' while emitting signal '%Q' "
+#~ "from object '%Q::%Q': disconnecting"
+#~ msgstr ""
+#~ "Slot '%s' erroni en l'objecte de dest� '%s' mentres s'emetia la senyal '%"
+#~ "s' des de l'objecte '%s': desconectant"
+
+#, fuzzy
+#~ msgid ""
+#~ "Slot target object destroyed while emitting signal '%Q' from object '%Q::%"
+#~ "Q'"
+#~ msgstr ""
+#~ "Slot '%s' erroni en l'objecte de dest� '%s' mentres s'emetia la senyal '%"
+#~ "s' des de l'objecte '%s': desconectant"
+
+#, fuzzy
+#~ msgid "Property: %c%Q%c, type %s"
+#~ msgstr " Propietat: %s=%s"
+
+#, fuzzy
+#~ msgid "Can't find the requested image"
+#~ msgstr "No s'ha pogut assignar l'adre�a solicitada"
+
+#~ msgid "Found character '%q' (unicode %x) where a slash '/' was expected"
+#~ msgstr ""
+#~ "S'ha trobat el car�cter '%q' (unicode %x) on s'esperava una barra '/'"
+
+#~ msgid ""
+#~ "Unexpected end of command in binding operation, at least two slashes are "
+#~ "missing"
+#~ msgstr ""
+#~ "Fi de comanda inesperada en operaci� d'associaci�, falten al menys dues "
+#~ "barres (/)"
+
+#~ msgid ""
+#~ "Unexpected end of command in binding operation, at least one slash is "
+#~ "missing"
+#~ msgstr ""
+#~ "Fi de comanda inesperada en operaci� d'associaci�, falta al menys unes "
+#~ "barres (/)"
+
+#~ msgid "Unknown binding operation '%Q'"
+#~ msgstr "Operaci� d'associaci� desconeguda '%Q'"
+
+#~ msgid "Missing right side operand for the binding operator '=~'"
+#~ msgstr "Falta la part dreta de l'operand per a l'operador d'associaci� '=~'"
+
+#~ msgid "Trailing garbage ignored after operator '++'"
+#~ msgstr "S'ignoren els car�cters sobrants despr�s de l'operador '++'"
+
+#~ msgid "Missing right operand for operator '+='"
+#~ msgstr "Falta l'operand de la dreta per a l'operador '+='"
+
+#~ msgid "Trailing garbage ignored after operator '--'"
+#~ msgstr "S'ignoren els car�cter sobrants despr�s de l'operador '--'"
+
+#~ msgid "Missing right operand for operator '-='"
+#~ msgstr "Falta l'operand de la dreta per a l'operador '-='"
+
+#~ msgid "Missing right operand for operator '<<='"
+#~ msgstr "Falta l'operand de la dreta per a l'operador '<<='"
+
+#~ msgid "Missing right operand for operator '<<'"
+#~ msgstr "Falta l'operand de la dreta per a l'operador '<<'"
+
+#~ msgid "Missing right operand for operator '<,'"
+#~ msgstr "Falta l'operand de la dreta per a l'operador '<,'"
+
+#~ msgid "Missing right operand for operator '>>='"
+#~ msgstr "Falta l'operand de la dreta per a l'operador '>>='"
+
+#~ msgid "Missing right operand for operator '.='"
+#~ msgstr "Falta l'operand de la dreta per a l'operador '.='"
+
+#~ msgid "Missing right operand for operator '"
+#~ msgstr "Falta l'operand de la dreta per a l'operador '"
+
+#~ msgid "='"
+#~ msgstr "='"
+
+#~ msgid "Unknown operator"
+#~ msgstr "Operador desconegut"
+
+#~ msgid "Unexpected (and senseless) read-only data evaluation"
+#~ msgstr "Evaluaci� de dades de nom�s lectura inesperada (i sense sentit)"
+
+#~ msgid "Syntax error: confused by earlier errors: bailing out"
+#~ msgstr "Error de sintaxis: conf�s per errors anteriors: flipant"
+
+#~ msgid ""
+#~ "Unexpected end of script after a variable reference: expected operator"
+#~ msgstr ""
+#~ "Fi d'script inesperat despr�s d'una refer�ncia a variable: s'esperava un "
+#~ "operador"
+
+#~ msgid ""
+#~ "Unexpected character '%q' (unicode %x) after a void function call: end of "
+#~ "instruction expected"
+#~ msgstr ""
+#~ "Car�cter inesperat '%q' (unicode %x) despr�s d'una crida buida a funci�: "
+#~ "s'esperava la fi de la instrucci�"
+
+#~ msgid "Unexpected character '%q' (unicode %x)"
+#~ msgstr "Car�cter inesperat '%q' (unicode %x)"
+
+#, fuzzy
+#~ msgid "Invalid pitch value: using default"
+#~ msgstr "To no v�lid (%s): emprant el to per defecte"
+
+#, fuzzy
+#~ msgid "Invalid duration value: using default"
+#~ msgstr "Duraci� no v�lida (%s): emprant la duraci� per defecte"
+
+#, fuzzy
+#~ msgid "No button with type %Q named %Q"
+#~ msgstr "No hi ha un bot� del tipus %s anomenat %s"
+
+#, fuzzy
+#~ msgid "Can't delete a null object reference"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#, fuzzy
+#~ msgid "Can't delete an inexisting object"
+#~ msgstr "No puc afegir un objecte no-widget"
+
+#, fuzzy
+#~ msgid "Inexisting popup \"%Q\""
+#~ msgstr "Men� emergent \"%s\" inexistent"
+
+#, fuzzy
+#~ msgid "The menu item with id \"%Q\" does not exist in popup \"%Q\""
+#~ msgstr ""
+#~ "L'element amb id \"%s\" no existeix en el men� emergent amb id \"%s\""
+
+#~ msgid ""
+#~ "The argument of the -w switch did not evaluate to a valid window id: "
+#~ "using default"
+#~ msgstr ""
+#~ "L'argument de l'indicador -w no avalua a un id v�lid de finestra: emprant "
+#~ "el valor per defecte"
+
+#~ msgid ""
+#~ "The argument of the i switch did not evaluate to a number: using default"
+#~ msgstr ""
+#~ "L'argument de l'indicador i no avalua a un n�mero: emprant valor per "
+#~ "defecte"
+
+#, fuzzy
+#~ msgid "Invalid color-set specification, using default"
+#~ msgstr "Especificaci� d'icona '%s' no v�lida, emprant el valor per defecte"
+
+#~ msgid "Window '%s' not found, using current one"
+#~ msgstr "Finestra '%s' no trobada, emprant l'actual"
+
+#~ msgid "Timer '%Q' has a broken callback handler: killing the timer"
+#~ msgstr ""
+#~ "El cron�metre '%Q' t� un manipulador de callback erroni: matant el "
+#~ "cron�metre"
+
+#, fuzzy
+#~ msgid "Invalid data type for parameter \"%s\""
+#~ msgstr "Par�metre fins_fila no v�lid (%s)"
+
+#, fuzzy
+#~ msgid "found string value \"%Q\" where type '%s' was expected"
+#~ msgstr ""
+#~ "S'ha trobat el car�cter '%q' (unicode %x) on s'esperava una barra '/'"
+
+#, fuzzy
+#~ msgid "found type %Q where type '%s' was expected"
+#~ msgstr ""
+#~ "S'ha trobat el car�cter '%q' (unicode %x) on s'esperava una barra '/'"
+
+#, fuzzy
+#~ msgid "Missing non-optional parameter \"%s\""
+#~ msgstr "Falta par�metre"
+
+#, fuzzy
+#~ msgid ""
+#~ "found signed integer \"%d\" where type 'unsigned integer' was expected"
+#~ msgstr "Opcions d'enters sense signe (constant unsigned integer)"
+
+#, fuzzy
+#~ msgid "[KVS]%c Compilation Error: %Q"
+#~ msgstr "error de compilaci�"
+
+#, fuzzy
+#~ msgid "[KVS] in script context \"%Q\""
+#~ msgstr "En el context de l'script '%Q':"
+
+#, fuzzy
+#~ msgid "[KVS] in script context \"%Q\", %Q"
+#~ msgstr "En el context de l'script '%Q':"
+
+#, fuzzy
+#~ msgid "[KVS] Window:"
+#~ msgstr "Mostrar Finestra"
+
+#~ msgid "There are no extended scope variables in this scope"
+#~ msgstr "No hi ha variables d'�mbit ext�s en aquest �mbit"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of command buffer while looking for the \"perl.end\" "
+#~ "statement"
+#~ msgstr "Fi de buffer inesperat mentres es buscava el car�cter ')' del 'for'"
+
+#~ msgid "Trailing garbage at the end of the break command: ignored"
+#~ msgstr "Car�cters sobrants al final de la comanda break: ignorant"
+
+#, fuzzy
+#~ msgid "The 'unset' command needs a variable list"
+#~ msgstr "La comanda 'global' necessita una llista de variables"
+
+#~ msgid "Found character %q (unicode %x) where a variable was expected"
+#~ msgstr "Trobat el car�cter '%q' (unicode %x) on s'esperava una variable"
+
+#, fuzzy
+#~ msgid "'unset' command used without a variable list"
+#~ msgstr "La comanda 'global' necessita una llista de variables"
+
+#~ msgid "The 'global' command needs a variable list"
+#~ msgstr "La comanda 'global' necessita una llista de variables"
+
+#~ msgid ""
+#~ "Found character %q (unicode %x) where an open parenthesis was expected"
+#~ msgstr "Trobat el car�cter '%q' (unicode %x) on s'esperava '('"
+
+#, fuzzy
+#~ msgid "Unexpected end of buffer in class definition"
+#~ msgstr "Fi de buffer inesperat en bloc condicional switch"
+
+#, fuzzy
+#~ msgid "Found character %q (unicode %x) where a function name was expected"
+#~ msgstr ""
+#~ "S'ha trobat el car�cter '%q' (unicode %x) on s'esperava una instrucci�"
+
+#, fuzzy
+#~ msgid "Unexpected end of buffer in function parameter list reminder"
+#~ msgstr "Fi de l�nia inesperat a la llista de par�metres"
+
+#, fuzzy
+#~ msgid "The while command needs an expression enclosed in parenthesis"
+#~ msgstr "La comanda 'while' necessita una expressi� tancada entre par�ntesis"
+
+#~ msgid ""
+#~ "The last while command in the buffer has no conditional instructions: "
+#~ "it's senseless"
+#~ msgstr ""
+#~ "La �ltima comanda while en el buffer no t� instruccions condicionals: "
+#~ "aix� no t� sentit"
+
+#~ msgid ""
+#~ "Unexpected end of script while looking for the instruction block of the "
+#~ "while command"
+#~ msgstr ""
+#~ "Fi d'script inesperat mentres es buscava el bloc d'instruccions de la "
+#~ "comanda while"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of command after the 'do' command block: expected 'while' "
+#~ "keyword"
+#~ msgstr ""
+#~ "Fi de comanda inesperada despr�s de bloc de comanda 'do': s'esperava "
+#~ "l'idenficador while"
+
+#~ msgid "Found character %q (unicode %x) where a 'while' keyword was expected"
+#~ msgstr ""
+#~ "Trobat el car�cter %q (unicode %x) on s'esperava la paraula clau 'while'"
+
+#, fuzzy
+#~ msgid ""
+#~ "The 'while' block of the 'do' command needs an expression enclosed in "
+#~ "parenthesis"
+#~ msgstr ""
+#~ "El bloc 'while' d'una comanda 'do' necessita una expressi� tancada entre "
+#~ "par�ntesis"
+
+#~ msgid "Garbage string after the expression in 'do' command: ignored"
+#~ msgstr "Cadena sobrant despr�s de l'expressi� en la comanda 'do': ignorada"
+
+#, fuzzy
+#~ msgid "The 'if' command needs an expression enclosed in parenthesis"
+#~ msgstr "La comanda 'if' necessita una expressi� tancada entre par�ntesis"
+
+#~ msgid ""
+#~ "The last if command in the buffer has no conditional instructions: it's "
+#~ "senseless"
+#~ msgstr ""
+#~ "La �ltima comanda 'if' en el buffer no t� instruccions condicionals: aix� "
+#~ "no t� sentit"
+
+#~ msgid ""
+#~ "Unexpected end of script while looking for the instruction block of the "
+#~ "if command"
+#~ msgstr ""
+#~ "Fi d'script inesperat mentres es buscava el bloc d'instruccions de la "
+#~ "comanda 'if'"
+
+#~ msgid ""
+#~ "Unexpected end of buffer while looking for the closing ')' in the 'for' "
+#~ "command"
+#~ msgstr "Fi de buffer inesperat mentres es buscava el car�cter ')' del 'for'"
+
+#, fuzzy
+#~ msgid "The 'for' command needs an expression enclosed in parenthesis"
+#~ msgstr "La comanda 'for' necessita una expressi� tancada entre par�ntesis"
+
+#~ msgid ""
+#~ "Found char %q (unicode %x) while looking for the terminating ')' in 'for' "
+#~ "command"
+#~ msgstr ""
+#~ "S'ha trobat el car�cter %q (unicode %x) mentres es buscava ')' per al "
+#~ "'for'"
+
+#~ msgid "Empty infinite 'for' loop: fix the script"
+#~ msgstr "Bucle 'for' infinit: arregla l'script"
+
+#, fuzzy
+#~ msgid "The 'foreach' command needs an expression enclosed in parenthesis"
+#~ msgstr ""
+#~ "La comanda 'foreach' necessita una expressi� tancada entre par�ntesis"
+
+#~ msgid ""
+#~ "The 'foreach' command expects a writeable iteration variable as first "
+#~ "parameter"
+#~ msgstr ""
+#~ "La comanda 'foreach' espera una variable d'iteraci� modificable com a "
+#~ "primer par�metre"
+
+#~ msgid ""
+#~ "Found character '%q' (unicode %x) where '%' or '$' was expected: see /"
+#~ "help foreach for the command syntax"
+#~ msgstr ""
+#~ "Trobat car�cter '%q' (unicode %x) on s'esperava '%' o '$': consulta /help "
+#~ "foreach per a veure la sintaxis de la comanda"
+
+#~ msgid "Unexpected function call as 'foreach' iteration variable"
+#~ msgstr "Crida inesperada a funci� com a variable d'iteraci� 'foreach'"
+
+#~ msgid "Unexpected read-only variable as 'foreach' iteration variable"
+#~ msgstr ""
+#~ "Variable de nom�s lectura inesperada com a variable d'iteraci� 'foreach'"
+
+#~ msgid ""
+#~ "Unexpected end of 'foreach' parameters: at least one iteration data "
+#~ "argument must be given"
+#~ msgstr ""
+#~ "Fi inesperat de par�metres 'foreach': ha de proporcionar-se al menys un "
+#~ "argument de dades d'iteraci�"
+
+#~ msgid ""
+#~ "The 'foreach' command expects a comma separated list of iteration data "
+#~ "items after the first parameter"
+#~ msgstr ""
+#~ "La comanda 'foreach' espera una llista d'elements d'iteraci� separades "
+#~ "per comes despr�s del primer par�metre"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found empty 'foreach' execution block: maybe you need to fix your script ?"
+#~ msgstr "Bloc d'execuci� buit per a 'foreach': arregla l'script"
+
+#, fuzzy
+#~ msgid "The 'switch' command needs an expression enclosed in parenthesis"
+#~ msgstr ""
+#~ "La comanda 'switch' necessita una expressi� tancada entre par�ntesis"
+
+#~ msgid "Unexpected end of buffer in switch condition block"
+#~ msgstr "Fi de buffer inesperat en bloc condicional switch"
+
+#~ msgid ""
+#~ "Found character %q (unicode %x) where a 'case','match','regexp','default' "
+#~ "or 'break' label was expected"
+#~ msgstr ""
+#~ "Trocat car�cter %q (unicode %x) on s'esperava un 'case', 'regexp', "
+#~ "'default' o 'break'"
+
+#~ msgid ""
+#~ "Found 'break' label where a 'case','match','regexp' or 'default' label "
+#~ "was expected"
+#~ msgstr ""
+#~ "Trobat una etiqueta 'break' on s'esperava una etiqueta 'case', 'match, "
+#~ "'regexp', o 'default'"
+
+#~ msgid ""
+#~ "Found token '%Q' where a 'case','match','regexp','default' or 'break' "
+#~ "label was expected"
+#~ msgstr ""
+#~ "Trobat l'identificador '%Q' on s'esperava un 'case', 'match', 'regexp', "
+#~ "'default' o 'break'"
+
+#~ msgid "Senseless empty switch command: fix the script"
+#~ msgstr "Comanda switch buida no t� sentit: arregla l'script"
+
+#~ msgid "Unexpected end of buffer in defpopup block"
+#~ msgstr "Fi de buffer inesperat en bloc defpopup"
+
+#~ msgid ""
+#~ "Found character %q (unicode %x) where a "
+#~ "'prologue','separator','label','popup','item','extpopup' or 'epilogue' "
+#~ "label was expected"
+#~ msgstr ""
+#~ "Trobat car�cter %q (unicode %x) on s'esperava una etiqueta 'prologue', "
+#~ "'separator', 'label', 'popup', 'item', 'extpopup' o 'epilogue'"
+
+#, fuzzy
+#~ msgid "Found empty prologue block: maybe you need to fix the script?"
+#~ msgstr "Pr�leg de bloc buit sense sentit: arregla l'script"
+
+#, fuzzy
+#~ msgid "Found empty epilogue block: maybe you need to fix the script?"
+#~ msgstr "Ep�leg de bloc buit sense sentit: arregla l'script"
+
+#~ msgid ""
+#~ "Unexpected empty <text> field in label parameters. See /help defpopup for "
+#~ "the syntax"
+#~ msgstr ""
+#~ "Camp <texto> buit inesperat en par�metres d'etiqueta. Veure /help "
+#~ "defpopup per a con�ixer la sintaxis"
+
+#~ msgid ""
+#~ "Unexpected empty <text> field in extpopup parameters. See /help defpopup "
+#~ "for the syntax"
+#~ msgstr ""
+#~ "Camp <texto> buit inesperat en par�metres de extpopup. Veure /help "
+#~ "defpopup per a con�ixer la sintaxis"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found empty instruction for popup item: maybe you need to fix the script?"
+#~ msgstr "Instrucci� buida per a l'element de popup: arregla l'script"
+
+#~ msgid ""
+#~ "Unexpected empty <name> field in extpopup parameters. See /help defpopup "
+#~ "for the syntax"
+#~ msgstr ""
+#~ "Camp <nombre> buit inesperat en par�metres de extpopup. Veure / help "
+#~ "defpopup per a con�ixer la sintaxis"
+
+#~ msgid ""
+#~ "Found token '%Q' where a "
+#~ "'prologue','separator','label','popup','item','extpopup' or 'epilogue' "
+#~ "label was expected"
+#~ msgstr ""
+#~ "Trobat identificador '%Q' on s'esperava una etiqueta 'prologue', "
+#~ "'separator', 'label', 'popup', 'item', 'extpopup' o 'epilogue'"
+
+#, fuzzy
+#~ msgid "The 'defpopup' command needs an expression enclosed in parenthesis"
+#~ msgstr ""
+#~ "La comanda 'defpopup' necessita una expressi� tancada entre par�ntesis"
+
+#, fuzzy
+#~ msgid "Module command call failed: can't load the module '%Q': %Q"
+#~ msgstr ""
+#~ "Ha fallat la crida a la comanda del m�dul: no puc carregar el m�dul '%Q'"
+
+#~ msgid ""
+#~ "Module command call failed: the module '%Q' doesn't export a command "
+#~ "named '%Q'"
+#~ msgstr ""
+#~ "Ha fallat la crida a la comanda del m�dul: m�dul '%Q' no exporta a una "
+#~ "comanda anomenada '%Q'"
+
+#, fuzzy
+#~ msgid "Received ping from \r!s\r%Q\r (PING %Q), replied pong"
+#~ msgstr "Ping rebut de \r!s\r%s\r (PING %s), respost pong"
+
+#~ msgid "Received pong from \r!s\r%s\r (PONG %s)"
+#~ msgstr "Rebut pong de \r!s\r%s\r (PONG %s)"
+
+#, fuzzy
+#~ msgid "Server ERROR: %Q"
+#~ msgstr "[ERROR SSL]: %Q"
+
+#~ msgid "Missing channel parameter in join message"
+#~ msgstr "Falta par�metre de canal en missatge JOIN"
+
+#~ msgid "Received a join message for an unknown channel, possible desync"
+#~ msgstr "Rebut un missatge JOIN d'un canal desconegut, �possible desync?"
+
+#~ msgid ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r [implicit +%c umode "
+#~ "change]"
+#~ msgstr ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] s'ha unit a \r!c\r%Q\r [canvi de mode-u "
+#~ "impl�cit +%c]"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] s'ha unit a \r!c\r%Q\r"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just joined \r!c\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] s'acaba d'unir a \r!c\r%Q\r"
+
+#~ msgid "Received a part message for an unknown channel, possible desync"
+#~ msgstr "Rebut un missatge PART d'un canal desconegut, �possible desync?"
+
+#~ msgid "You have left channel \r!c\r%Q\r"
+#~ msgstr "Has abandonat el canal \r!c\r%Q\r"
+
+#~ msgid "You have left channel \r!c\r%Q\r: %Q"
+#~ msgstr "Has abandonat el canal \r!c\r%Q\r: %Q"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r: %Q"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] ha abandonat \r!c\r%Q\r: %Q"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] ha abandonat \r!c\r%Q\r"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r: %Q"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] s'acaba de marxar \r!c\r%Q\r: %Q"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] s'acaba de marxar \r!c\r%Q\r"
+
+#~ msgid "Netsplit detected: %s"
+#~ msgstr "Netsplit detectat: %s"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] s'ha marxat de l'IRC: %Q"
+
+#~ msgid "Received a kick message for an unknown channel, possible desync"
+#~ msgstr ""
+#~ "Rebut un missatge d'expulsi� d'un canal desconegut, �possible desync?"
+
+#~ msgid ""
+#~ "You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "Has estat expulsat de \r!c\r%Q\r por \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid "Attempting to rejoin \r!c\r%Q\r..."
+#~ msgstr "Intentant tornar a entrar \r!c\r%Q\r..."
+
+#~ msgid ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has been kicked from \r!c\r%Q\r by \r!n\r%Q\r "
+#~ "[%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] ha sigut expulsat de \r!c\r%Q\r per \r!n\r%Q\r "
+#~ "[%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just been kicked from \r!c\r%Q\r by \r!n\r%"
+#~ "Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] acaba de ser expulsat de \r!c\r%Q\r per \r!n\r%"
+#~ "Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid ""
+#~ "The following message appears to be encrypted, but the crypto engine "
+#~ "failed to decode it: %s"
+#~ msgstr ""
+#~ "El seg�ent missatge sembla estar xifrat, per� el motor de xifrat a fallat "
+#~ "al descodificar-lo: %s"
+
+#~ msgid "Ignoring PRIVMSG from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "Ignorant PRIVMSG de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid ""
+#~ "Spam privmsg from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%s"
+#~ "\")"
+#~ msgstr ""
+#~ "PRIVMSG spam de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (paraula-spam coincident "
+#~ "\"%s\")"
+
+#~ msgid "Ignoring NOTICE from %Q (%Q)"
+#~ msgstr "Ignorant PRIVMSG de %Q (%Q)"
+
+#~ msgid "NickServ requests authentication, executing scheduled command"
+#~ msgstr "NickServ demana autentificaci�, executant comanda programada"
+
+#~ msgid ""
+#~ "The scheduled NickServ identification command appears to be broken, "
+#~ "please change the setting"
+#~ msgstr ""
+#~ "La comanda d'identificaci� NickServ programada sembla ser incorrecte, per "
+#~ "favor, canvia la configuraci�"
+
+#~ msgid ""
+#~ "Spam notice from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%Q\")"
+#~ msgstr ""
+#~ "Not�cia spam de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (paraula-spam coincident "
+#~ "\"%Q\")"
+
+#~ msgid "Received a topic message for an unknown channel, possible desync"
+#~ msgstr "Rebut un missatge de tema d'un canal desconegut, �posible desync?"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has changed topic to \"%Q%c\""
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] ha canviat el tema a \"%Q%c\""
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] es coneix ara com a \r!n\r%Q\r"
+
+#~ msgid "You have changed your nickname to %Q"
+#~ msgstr "Has canviat el teu nick a %Q"
+
+#~ msgid ""
+#~ "The target of this query was lost and has been found when \r!n\r%Q\r [%Q@"
+#~ "\r!h\r%Q\r] changed his nickname to \r!n\r%Q\r"
+#~ msgstr ""
+#~ "El dest� d'aquest privat s'ha perdut i ha estat trobat quan \r!n\r%Q\r [%"
+#~ "Q@\r!h\r%Q\r] ha canviat el seu nick a \r!n\r%Q\r"
+
+#, fuzzy
+#~ msgid ""
+#~ "The recent nickname change from \r!n\r%Q\r to \r!n\r%Q\r caused a query "
+#~ "collision: merging output"
+#~ msgstr ""
+#~ "El canvi recent de nick des de \r!n\r%Q\r a \r!n\r%Q\r ha causat una "
+#~ "colisi� de privats: barrejant la sortida"
+
+#~ msgid "End of merged output"
+#~ msgstr "Final de sortida barrejada"
+
+#~ msgid "autojoining"
+#~ msgstr "autoentrant"
+
+#~ msgid "double-click the channel name to join"
+#~ msgstr "premi dues vegades en el nom del canal per entrar"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] invites you to channel \r!c\r%Q\r (%Q)"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] t'invita al canal \r!c\r%Q\r (%Q)"
+
+#~ msgid "Received an invite message directed to another nick, possible desync"
+#~ msgstr "Rebut un missatge INVITE dirigit a un altre nick, possible desync"
+
+#~ msgid "WALLOPS from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "WALLOPS de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid "You have set user mode %s"
+#~ msgstr "T� posat el mode d'usuari %s"
+
+#~ msgid "Received a mode change for an unknown channel, possible desync"
+#~ msgstr "Rebut un canvi de mode d'un canal desconegut, �possible desync?"
+
+#~ msgid "%Q [%Q@%Q] has set channel key to \"\r!m-k\r%Q\r\""
+#~ msgstr "%Q [%Q@%Q] ha canviat la clau del canal a \"\r!m-k\r%Q\r\""
+
+#~ msgid "%Q [%Q@%Q] has unset the channel key"
+#~ msgstr "%Q [%Q@%Q] ha tret la clau del canal"
+
+#~ msgid "%Q [%Q@%Q] has set channel \r!m-l\rlimit to %Q\r"
+#~ msgstr "%Q [%Q@%Q] ha posat el l�mit del canal \r!m-l\ra %Q\r"
+
+#~ msgid "%Q [%Q@%Q] has unset the channel limit"
+#~ msgstr "%Q [%Q@%Q] ha tret el l�mit del canal"
+
+#~ msgid "%Q [%Q@%Q] has set mode %c%c \r!n\r%Q\r"
+#~ msgstr "%Q [%Q@%Q] ha posat el mode %ce \r!m%ce\r%Q\r"
+
+#~ msgid "%Q [%Q@%Q] has set mode %c%c \r!m%c%c\r%Q\r"
+#~ msgstr "%Q [%Q@%Q] ha posat el mode %c%c \r!m%c%c\r%Q\r"
+
+#~ msgid "%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"
+#~ msgstr "%Q [%Q@%Q] ha posat el mode del canal \r!m%c%c\ra %c%c\r"
+
+#~ msgid "%Q [%Q@%Q] has set mode %s %Q"
+#~ msgstr "%Q [%Q@%Q] ha posat el mode %s %Q"
+
+#~ msgid "%Q [%Q@%Q] has set channel mode %s"
+#~ msgstr "%Q [%Q@%Q] ha posat el mode de canal %s"
+
+#~ msgid ""
+#~ "[Server parser]: Encountered problems while parsing the following message:"
+#~ msgstr ""
+#~ "[Parser de Servidor]: S'han trobat problemes mentres s'analitzava el "
+#~ "seg�ent missatge:"
+
+#~ msgid "[Server parser]: [%s][%s] %Q"
+#~ msgstr "[Parser de servidor]: [%s][%s] %Q"
+
+#~ msgid "[Server parser]: %s"
+#~ msgstr "[Parser de servidor]: %s"
+
+#~ msgid "The following CTCP reply has unrecognized target %Q"
+#~ msgstr "La seg�ent resposta CTCP t� un dest� no reconegut %Q"
+
+#~ msgid "Channel CTCP"
+#~ msgstr "CTCP de canal"
+
+#~ msgid "%Q %S reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "%Q %S resposta de %Q [%Q@%Q]: %Q"
+
+#~ msgid "The following CTCP request has unrecognized target %Q"
+#~ msgstr "La seg�ent petici� CTCP t� un dest� no reconegut %Q"
+
+#~ msgid ""
+#~ "%Q %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignored (flood limit "
+#~ "exceeded)"
+#~ msgstr ""
+#~ "Petici� %Q %S de %Q [%Q@%Q] (%Q), ignorada (l�mit de saturaci� excedit)"
+
+#~ msgid "ignored (unrecognized)"
+#~ msgstr "ignorada (no reconeguda)"
+
+#~ msgid "ignored"
+#~ msgstr "ignorada"
+
+#~ msgid "replied"
+#~ msgstr "resposta"
+
+#~ msgid "%Q %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+#~ msgstr "petici� %Q %S de %Q [%Q@%Q] (%Q), %Q"
+
+#~ msgid "The following CTCP PING reply has unrecognized target \"%Q\""
+#~ msgstr "La seg�ent resposta CTCP PING t� un dest� no reconegut \"%Q\""
+
+#~ msgid ""
+#~ "The following CTCP PING reply has a broken time identifier \"%S\", don't "
+#~ "trust the displayed time"
+#~ msgstr ""
+#~ "La seg�ent resposta CTCP PING t� un identificador temporal erroni \"%S\", "
+#~ "no confii en el temps mostrat"
+
+#~ msgid "%Q PING reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sec %u msec"
+#~ msgstr "Resposta PING %Q de %Q [%Q@%Q]: %u segs %u msegs"
+
+#~ msgid "The following CTCP ACTION has unrecognized target %Q"
+#~ msgstr "El seg�ent CTCP ACTION t� un dest� no reconegut %Q"
+
+#~ msgid "CTCP ACTION from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "CTCP ACTION de %Q [%Q@%Q]: %Q"
+
+#~ msgid "Unable to add file offer for file %Q (File not readable?)"
+#~ msgstr "No puc afegir un oferiment d'arxiu per a %Q (�Arxiu no llegible?)"
+
+#~ msgid "Added %d sec file offer for file %Q (%Q) to recipient %Q"
+#~ msgstr "Afegint oferiment de %d segs de l'arxiu %Q (%Q) al receptor %Q"
+
+#~ msgid "private"
+#~ msgstr "privat"
+
+#~ msgid "channel notification:"
+#~ msgstr "notificaci� de canal:"
+
+#~ msgid "notification"
+#~ msgstr "notificaci�"
+
+#, fuzzy
+#~ msgid "%Q unsets avatar"
+#~ msgstr "Emprar avatar"
+
+#, fuzzy
+#~ msgid "%Q changes avatar to %s"
+#~ msgstr "%Q [%Q@%Q] canvia el avatar a %s (%Q %Q)"
+
+#~ msgid ""
+#~ ": No valid local copy of avatar available, requesting one (HTTP GET %s)"
+#~ msgstr ""
+#~ ": No hi ha c�pia local v�lida de l'avatar disponible, demanant-ne un "
+#~ "(HTTP GET %s)"
+
+#~ msgid ""
+#~ ": No valid local copy of avatar available; failed to start an HTTP "
+#~ "transfer, ignoring"
+#~ msgstr ""
+#~ ": No hi ha c�pia local v�lida de l'avatar disponible; ha fallat el "
+#~ "comen�ament d'una transfer�ncia HTTP, ignorant"
+
+#~ msgid ""
+#~ ": No valid local copy of avatar available, requesting one (DCC GET %s)"
+#~ msgstr ""
+#~ ": No hi ha disponible una c�pia local v�lida de l'avatar, demanant-ne una "
+#~ "(DCC GET %s)"
+
+#~ msgid ""
+#~ ": No valid local copy of avatar available; flood limit exceeded, ignoring"
+#~ msgstr ""
+#~ ": No hi ha disponible una copia local v�lida de l'avatar; l�mit de "
+#~ "saturaci� excedit: ignorant"
+
+#~ msgid ": No valid local copy of avatar available, ignoring"
+#~ msgstr ": No hi ha disponible una copia local v�lida de l'avatar, ignorant"
+
+#~ msgid ": No such nickname in the user database, ignoring the change"
+#~ msgstr ""
+#~ ": No existeix tal nick a la base de dades d'usuaris, ignorant el canvio"
+
+#~ msgid "Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%S %S)"
+#~ msgstr "Ignorant la petici� DCC %S de %Q [%Q@%Q] (%S %S)"
+
+#, fuzzy
+#~ msgid "Processing DCC %Q request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%S %S)"
+#~ msgstr ""
+#~ "Processant petici� DCC %S solicitada des de \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%"
+#~ "S %S)"
+
+#~ msgid "Unable to process the above request: Cannot load DCC module (%s)"
+#~ msgstr ""
+#~ "Incapa� de processar la petici� anterior: no he pogut carregar el m�dul "
+#~ "DCC (%s)"
+
+#~ msgid "Unable to process the above request: DCC module may be broken"
+#~ msgstr ""
+#~ "Incapa� de processar la petici� anterior: el m�dul DCC pot estar trencat"
+
+#~ msgid "Channel operators"
+#~ msgstr "Operadors de canal"
+
+#~ msgid "Voiced users"
+#~ msgstr "Usuaris amb veu"
+
+#~ msgid "Half-operators"
+#~ msgstr "semioperadors"
+
+#~ msgid "Ban masks"
+#~ msgstr "M�scares de prohibici�"
+
+#~ msgid "Color free (no ANSI colors)"
+#~ msgstr "Llibre de colors (sense colors ANSI)"
+
+#~ msgid "Ban exception masks"
+#~ msgstr "M�scares d'excepcions a prohibicions"
+
+#~ msgid "Invite exception masks or forbid /INVITE"
+#~ msgstr "M�scares d'excepci� d'invitaci� o prohibir /INVITE"
+
+#~ msgid "Secret"
+#~ msgstr "Secret"
+
+#~ msgid "Private"
+#~ msgstr "Privat"
+
+#~ msgid "Topic change restricted"
+#~ msgstr "Canvi de tema restringit"
+
+#~ msgid "Invite only"
+#~ msgstr "Nom�s per invitaci�"
+
+#~ msgid "No external messages"
+#~ msgstr "Sense missatges externs"
+
+#~ msgid "Anonymous or protected user"
+#~ msgstr "Usuari an�nim o protegit"
+
+#~ msgid "Quiet or channel owner"
+#~ msgstr "Callat o propietari del canal"
+
+#~ msgid "Limited number of users"
+#~ msgstr "Nombre limitat d'usuaris"
+
+#~ msgid "Key"
+#~ msgstr "Clau"
+
+#~ msgid "Moderated"
+#~ msgstr "Moderat"
+
+#~ msgid "Registered"
+#~ msgstr "Registrat"
+
+#~ msgid "Censor swear words"
+#~ msgstr "Paraulotes censurades"
+
+#~ msgid "Only registered nicks can join"
+#~ msgstr "Nom�s poden unir-se els nicks registrats"
+
+#~ msgid "No kicks able (unless U-Line)"
+#~ msgstr "No es permeten expulsions (a menys que es posi una U-Line)"
+
+#~ msgid "IRC-Op only channel"
+#~ msgstr "Canal nom�s per a IRC-Op"
+
+#~ msgid "Server/Network/Tech Admin only channel"
+#~ msgstr "Canal nom�s per a l'Administrador del Servidor/Xarxa/T�cnic"
+
+#~ msgid "Forbid /KNOCK"
+#~ msgstr "Prohibit /KNOCK"
+
+#~ msgid "Redirect on channel full"
+#~ msgstr "Redirigir quan el canal s'ompli"
+
+#~ msgid "Forbid channel CTCPs"
+#~ msgstr "Es prohibeixen CTCPs de canal"
+
+#~ msgid "User-operators OR Auditorium: /NAMES and /WHO show only ops"
+#~ msgstr "Usuaris operadors i auditori : /NAMES i /WHO nom�s mostren els ops"
+
+#~ msgid "Unknown channel mode"
+#~ msgstr "Mode de canal desconegut"
+
+#~ msgid ""
+#~ "One or more standard mode flags are missing in the server available "
+#~ "modes.\n"
+#~ "This is caused either by a non RFC1459-compliant IRC daemon or a broken "
+#~ "server reply.\n"
+#~ "Server umodes seem to be '%s' and channel modes seem to be '%s'.\n"
+#~ "Ignoring this reply and assuming that the basic set of modes is "
+#~ "available.\n"
+#~ "If you have strange problems, try changing the server."
+#~ msgstr ""
+#~ "Falten un o m�s flags est�ndard en els modes disponibes del servidor.\n"
+#~ "Aix� pot deures a un servidor IRC no compatible amb la RFC-1459 o una "
+#~ "resposta errada del servidor.\n"
+#~ "Els modes del servidor semblen ser '%s' i els modes del canal '%s'.\n"
+#~ "S'ignora aquesta resposta i s'assumeix que est� disponible el conjunt "
+#~ "b�sic de modes.\n"
+#~ "Si tens problemes estranys, prova a canviar de servidor."
+
+#~ msgid "Available user modes:"
+#~ msgstr "Modes d'usuari disponibles:"
+
+#~ msgid "o: IRC operator (OPER)"
+#~ msgstr "o: operador d'IRC (OPER)"
+
+#~ msgid "O: Local IRC operator (LOCOP)"
+#~ msgstr "O: Operador d'IRC local (LOCOP)"
+
+#~ msgid "i: Invisible"
+#~ msgstr "i: Invisible"
+
+#~ msgid "w: Recipient for WALLOPS messages"
+#~ msgstr "w: Destinatari de missatges WALLOPS"
+
+#~ msgid ""
+#~ "r: User with restricted connection (or recipient for messages about "
+#~ "rejected bots)"
+#~ msgstr ""
+#~ "r: Usuari amb connexi� restringida (o receptor per a missatges sobre bots "
+#~ "rebutjat)"
+
+#~ msgid "s: Recipient for server notices"
+#~ msgstr "s: Destinatari de not�cies de servidor"
+
+#~ msgid "z: Recipient for oper wallop messages"
+#~ msgstr "z: Destinatari de missatges oper wallop"
+
+#~ msgid "c: Recipient for cconn messages"
+#~ msgstr "c: Destinatari de missatges cconn"
+
+#~ msgid "k: Recipient for server kill messages"
+#~ msgstr "k: Destinatari de missatges server kill"
+
+#~ msgid "f: Recipient for full server notices"
+#~ msgstr "f: Destinatari de full server notices"
+
+#~ msgid "y: Spy :)"
+#~ msgstr "y: Espia :)"
+
+#~ msgid "d: Obscure 'DEBUG' flag"
+#~ msgstr "d: Flag de 'DEPURACI�' obscura"
+
+#~ msgid "n: Recipient for nick changes"
+#~ msgstr "n: Receptor de canvis de nick"
+
+#~ msgid ": Unknown user mode"
+#~ msgstr ": Mode d'usuari desconegut"
+
+#~ msgid "Available channel modes:"
+#~ msgstr "Modes de canal disponibles:"
+
+#~ msgid ""
+#~ "Server %Q version %S supporting user modes '%S' and channel modes '%S'"
+#~ msgstr ""
+#~ "Servidor %Q versi� %S soportant modes d'usuari '%S' i modes de canal '%S'"
+
+#~ msgid "This server supports the WATCH notify list method, it will be used"
+#~ msgstr ""
+#~ "Aquest servidor suporta el m�tode de llista de notificaci� WATCH: el far� "
+#~ "servir"
+
+#~ msgid "The current network is %Q"
+#~ msgstr "La xarxa actual �s %Q"
+
+#~ msgid "This server supports the CODEPAGE command, it will be used"
+#~ msgstr "Aquest servidor suporta la comanda CODEPAGE, i es far� servir"
+
+#~ msgid "This server supports: %s"
+#~ msgstr "El servidor suporta: %s"
+
+#~ msgid "End of NAMES for \r!c\r%Q\r"
+#~ msgstr "Fi de NAMES per a \r!c\r%Q\r"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c: %Q"
+#~ msgstr "Informaci� de %c\r!n\r%Q\r%c: %Q"
+
+#~ msgid "Names for \r!c\r%Q\r: %Q"
+#~ msgstr "Noms per a \r!c\r%Q\r: %Q"
+
+#~ msgid "(unknown)"
+#~ msgstr "(desconegut)"
+
+#~ msgid "Channel topic is: %Q"
+#~ msgstr "El tema del canal �s: %Q"
+
+#~ msgid "Topic for \r!c\r%Q\r is: %Q"
+#~ msgstr "El tema per a \r!c\r%Q\r �s: %Q"
+
+#~ msgid "No channel topic is set"
+#~ msgstr "No s'ha posat tema de canal"
+
+#~ msgid "No topic is set for channel \r!c\r%Q\r"
+#~ msgstr "No s'ha posat tema per al canal \r!c\r%Q\r"
+
+#~ msgid "Topic was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r on %Q"
+#~ msgstr "El tema va ser posat per \r!n\r%Q\r!%Q@\r!h\r%Q\r el %Q"
+
+#~ msgid "Topic was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+#~ msgstr "El tema va ser posat per \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+
+#~ msgid "Topic for \r!c\r%Q\r was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r on %Q"
+#~ msgstr ""
+#~ "El tema per a \r!c\r%Q\r va ser posat per \r!n\r%Q\r!%Q@\r!h\r%Q\r el %Q"
+
+#~ msgid "Topic for \r!c\r%Q\r was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+#~ msgstr "El tema per a \r!c\r%Q\r ser posat per \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+
+#~ msgid "Channel mode for \r!c\r%Q\r is %s"
+#~ msgstr "El mode de canal per a \r!c\r%Q\r �s %s"
+
+#~ msgid "User mode for \r!n\r%Q\r is %s"
+#~ msgstr "Mode d'usuari per a \r!n\r%Q\r �s %s"
+
+#~ msgid "End of channel %Q for \r!c\r%Q\r"
+#~ msgstr "Fi del canal %Q per a \r!c\r%Q\r"
+
+#~ msgid "ban list"
+#~ msgstr "llista de prohibits"
+
+#~ msgid "invite list"
+#~ msgstr "llista d'invitats"
+
+#~ msgid "ban exception list"
+#~ msgstr "llista d'excepcions a prohibicions"
+
+#~ msgid "%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"
+#~ msgstr "%Q per a \r!c\r%Q\r: \r!m-%c\r%Q\r (posat per %Q el %Q)"
+
+#~ msgid "Ban listing"
+#~ msgstr "Llista de prohibits"
+
+#~ msgid "Invite listing"
+#~ msgstr "Llista de invitats"
+
+#~ msgid "Ban exception listing"
+#~ msgstr "Llistat d'excepcions a prohibicions"
+
+#~ msgid ""
+#~ "WHO entry for %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cChannel%c: \r!c\r%Q\r, %"
+#~ "cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAway%c: %Q, %cReal "
+#~ "name%c: %Q"
+#~ msgstr ""
+#~ "Entrada WHO per a %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cCanal%c: \r!c\r%Q\r, %"
+#~ "cServidor%c: \r!s\r%Q\r, %cSalts%c: %d, %cFlags%c: %Q, %cAusents%c: %Q, %"
+#~ "cNom real%c: %Q"
+
+#~ msgid "End of WHO list for %Q"
+#~ msgstr "Fi de llista WHO per a %Q"
+
+#~ msgid ""
+#~ "Something really weird is happening: the server is refusing all the login "
+#~ "nicknames..."
+#~ msgstr ""
+#~ "Est� succeint alguna cosa realment estranya: el servidor rebutja tots els "
+#~ "nicks d'entrada..."
+
+#~ msgid ""
+#~ "The server is refusing all the login nicknames: giving up, you must send "
+#~ "the nickname manually"
+#~ msgstr ""
+#~ "El servidor est� rebutjant tots els nicks d'entrada en endavant, ha "
+#~ "d'enviar el nick de forma manual"
+
+#~ msgid "No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."
+#~ msgstr ""
+#~ "No hi ha forma d'autentificar-se com a '\r!n\r%Q\r' (%d: %Q), intentant '%"
+#~ "Q'..."
+
+#~ msgid "%c\r!n\r%Q\r%c is away: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c est� aussent: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+#~ msgstr "%c\r!n\r%Q\r%c �s %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#~ msgid "%c\r!n\r%Q\r%c's real name: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c nom real: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c was %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+#~ msgstr "%c\r!n\r%Q\r%c era %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#~ msgid "%c\r!n\r%Q\r%c's real name was: %Q"
+#~ msgstr "El nom real de %c\r!n\r%Q\r%c era: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c's channels: %Q"
+#~ msgstr "El canals de %c\r!n\r%Q\r%c: %Q"
+
+#~ msgid "Received a broken RPL_WHOISIDLE, can't evaluate the idle time"
+#~ msgstr "Rebut un RPL_WHOISIDLE erroni, no puc calcular el temps d'espera"
+
+#~ msgid "%c\r!n\r%Q\r%c's idle time: %ud %uh %um %us"
+#~ msgstr "Temps d'espera de %c\r!n\r%Q\r%c : %ud %uh %um %us"
+
+#~ msgid "%c\r!n\r%Q\r%c's signon time: %Q"
+#~ msgstr "Temps d'entrada de %c\r!n\r%Q\r%c: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c's server: \r!s\r%Q\r - %Q"
+#~ msgstr "Servidor de %c\r!n\r%Q\r%c: \r!s\r%Q\r - %Q"
+
+#, fuzzy
+#~ msgid "%c\r!n\r%Q\r%c is authenticated as %Q"
+#~ msgstr "El nom real de %c\r!n\r%Q\r%c era: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c's info: %Q"
+#~ msgstr "Informaci� de %c\r!n\r%Q\r%c: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c WHOIS info from \r!s\r%Q\r"
+#~ msgstr "%c\r!n\r%Q\r%c info WHOIS de \r!s\r%Q\r"
+
+#~ msgid "%c\r!n\r%Q\r%c WHOWAS info from \r!s\r%Q\r"
+#~ msgstr "%c\r!n\r%Q\r%c info WHOWAS de \r!s\r%Q\r"
+
+#~ msgid "Can't evaluate creation time"
+#~ msgstr "No puc avaluar la data de creaci�"
+
+#~ msgid "Channel was created at %Q"
+#~ msgstr "El canal va ser creat el %Q"
+
+#~ msgid "Channel \r!c\r%Q\r was created at %Q"
+#~ msgstr "El canal \r!c\r%Q\r va ser creat el %Q"
+
+#~ msgid "USERHOST info: %Q"
+#~ msgstr "Informaci� USERHOST: %Q"
+
+#~ msgid "Channel list begin: channel, users, topic"
+#~ msgstr "Comen�a la llista de canal: canals, usuaris, temes"
+
+#~ msgid "List: %Q"
+#~ msgstr "Llista: %Q"
+
+#~ msgid "End of LIST"
+#~ msgstr "Fi de LIST"
+
+#~ msgid "Link: %Q"
+#~ msgstr "Enlla�: %Q"
+
+#~ msgid "End of LINKS"
+#~ msgstr "Fi de LINKS"
+
+#~ msgid "[Leaving away status after %ud %uh %um %us]: %Q"
+#~ msgstr "[Abandonant l'estat d'ausent despr�s de %ud %uh %um %us]: %Q"
+
+#~ msgid "[Leaving away status]: %Q"
+#~ msgstr "[Abandonant l'estat d'ausent]: %Q"
+
+#~ msgid "Restoring pre-away nickname (%Q)"
+#~ msgstr "Recuperant el nick anterior a l'estat d'ausencia (%Q)"
+
+#~ msgid "[Entering away status]: %Q"
+#~ msgstr "[Entrant en estat aussent]: %Q"
+
+#~ msgid "Setting away nickname (%Q)"
+#~ msgstr "Posant el nick en mode aussent (%Q)"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's server info: %s"
+#~ msgstr "Informaci� de %c\r!n\r%Q\r%c: %Q"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's administrator is %s"
+#~ msgstr "Informaci� de %c\r!n\r%Q\r%c: %Q"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's contact adress is %s"
+#~ msgstr "El canals de %c\r!n\r%Q\r%c: %Q"
+
+#, fuzzy
+#~ msgid "\r!n\r%Q\r invited %Q into channel %Q"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] t'invita al canal \r!c\r%Q\r (%Q)"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's information:"
+#~ msgstr "Informaci� de %c\r!n\r%Q\r%c: %Q"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's time is %Q"
+#~ msgstr "Informaci� de %c\r!n\r%Q\r%c: %Q"
+
+#, fuzzy
+#~ msgid "Cannot sent to channel: %Q"
+#~ msgstr "No s'ha posat tema per al canal \r!c\r%Q\r"
+
+#, fuzzy
+#~ msgid "Cannot sent text to channel %Q: %Q"
+#~ msgstr "Has abandonat el canal \r!c\r%Q\r: %Q"
+
+#, fuzzy
+#~ msgid "Cannot sent to channel"
+#~ msgstr "La finestra actual no �s una canal"
+
+#, fuzzy
+#~ msgid "Cannot sent text to channel %Q"
+#~ msgstr "No s'ha posat tema per al canal \r!c\r%Q\r"
+
+#~ msgid "Your encoding is now %Q"
+#~ msgstr "La teva codificaci� �s ara %Q"
+
+#, fuzzy
+#~ msgid "%c\r!n\r%Q\r%c's codepage is %Q: %Q"
+#~ msgstr "El canals de %c\r!n\r%Q\r%c: %Q"
+
+#~ msgid "Your user mode is %s"
+#~ msgstr "El teu mode d'usuari �s %s"
+
+#~ msgid "Hostname resolution aborted"
+#~ msgstr "Cancel�lada la resoluci� del nom de m�quina"
+
+#~ msgid "Attempting %Q to %Q (%Q) on port %u"
+#~ msgstr "Intentant %Q a %Q (%Q) en el port %u"
+
+#~ msgid "secure connection"
+#~ msgstr "connexi� segura"
+
+#~ msgid "Attempting to 'bounce' on proxy %s on port %u (protocol %s)"
+#~ msgstr "Intentant reiniciar� el proxy %s en el port %u (protocol %s)"
+
+#~ msgid "Using cached proxy IP address (%s)"
+#~ msgstr "Utilitzant direcci� IP de proxy cachejada (%s)"
+
+#~ msgid "Unable to look up the IRC proxy hostname: Can't start the DNS slave"
+#~ msgstr ""
+#~ "Incapa� de buscar el nom de m�quina del proxy irc: no es pot iniciar el "
+#~ "DNS esclau"
+
+#~ msgid "Resuming direct server connection"
+#~ msgstr "Continuant connexi� directa al servidor"
+
+#~ msgid "Looking up the proxy hostname (%s)..."
+#~ msgstr "Buscant el nom de m�quina del proxy (%s)..."
+
+#~ msgid "Can't find the proxy IP address: %Q"
+#~ msgstr "No he pogut trobar l'adre�a IP del proxy: %Q"
+
+#~ msgid "Proxy hostname resolved to %s"
+#~ msgstr "Nom de m�quina del proxy resolt a %s"
+
+#~ msgid "Proxy %s has a nickname: %s"
+#~ msgstr "El proxy %s t� un nick: %s"
+
+#~ msgid "Using cached server IP address (%s)"
+#~ msgstr "Utilitzant l'adre�a IP del servidor cachejada (%s)"
+
+#~ msgid "Unable to look up the server hostname: Can't start the DNS slave"
+#~ msgstr ""
+#~ "Incapa� de trobar el nom de m�quina del servidor: no he pogut iniciar el "
+#~ "DNS esclau"
+
+#~ msgid "Looking up the server hostname (%s)..."
+#~ msgstr "Resolent el nom del servidor (%s)..."
+
+#~ msgid "Can't find the server IP address: %Q"
+#~ msgstr "No puc trobar l'adre�a IP del servidor: %Q"
+
+#~ msgid "If this server is an IPv6 one, try /server -i %s"
+#~ msgstr "Si aquest server utilitza IPv6, intenti /server -i %s"
+
+#~ msgid "Server hostname resolved to %s"
+#~ msgstr "Nom del servidor resolt a: %s"
+
+#~ msgid "Real hostname for %s is %s"
+#~ msgstr "El nom de m�quina real de %s �s %s"
+
+#~ msgid "Server %s has a nickname: %s"
+#~ msgstr "El servidor %s t� un nick: %s"
+
+#~ msgid "The specified bind address (%Q) is not valid"
+#~ msgstr "L'adre�a d'enlla� (bind) especificada (%Q) no �s v�lida"
+
+#~ msgid ""
+#~ "The specified bind address (%Q) is not valid (the interface it refers to "
+#~ "might be down)"
+#~ msgstr ""
+#~ "L'adre�a d'enlla� especificada (%Q) no �s v�lida (la interf�cie a la que "
+#~ "es refereix pot estar caiguda)"
+
+#~ msgid "The system-wide IPv6 bind address (%s) is not valid"
+#~ msgstr "L'adre�a general del sistema d'enlla� (bind) IPv6 (%s) no �s v�lida"
+
+#~ msgid ""
+#~ "The system-wide IPv6 bind address (%s) is not valid (the interface it "
+#~ "refers to might be down)"
+#~ msgstr ""
+#~ "L'adre�a general de sistema d'enlla� (bind) IPv6 (%s) no �s v�lida (La "
+#~ "interf�cie a la que es refereix pot estar caiguda)"
+
+#~ msgid "The system-wide IPv4 bind address (%s) is not valid"
+#~ msgstr "L'adre�a general del sistema d'enlla� (bind) IPv4 (%s) no �s v�lida"
+
+#~ msgid ""
+#~ "The system-wide IPv4 bind address (%s) is not valid (the interface it "
+#~ "refers to might be down)"
+#~ msgstr ""
+#~ "L'adre�a general de sistema d'enlla� (bind) IPv4 (%s) no �s v�lida (La "
+#~ "interf�cie a la que es refereix pot estar caiguda)"
+
+#, fuzzy
+#~ msgid "Configure Servers..."
+#~ msgstr "Configurar Servidors"
+
+#~ msgid ""
+#~ "Allows you to configure the servers and eventually to connect to them"
+#~ msgstr "Permet configurar els servidores i eventualment connectar-se a ells"
+
+#, fuzzy
+#~ msgid "Manage Addons..."
+#~ msgstr "Carregant icones..."
+
+#, fuzzy
+#~ msgid "Configure Registered Users..."
+#~ msgstr "Configurar Usuaris &Registrats..."
+
+#, fuzzy
+#~ msgid "Shows a dialog that allows editing the registered user entries"
+#~ msgstr "Mostra una finestra que permeti editar els events d'script"
+
+#, fuzzy
+#~ msgid "Configure Identity..."
+#~ msgstr "Configurar Identitat"
+
+#~ msgid "Allows you to configure nickname, username, avatar etc..."
+#~ msgstr "Permet configurar el teu nick, nom d'usuari, avatar, etc..."
+
+#, fuzzy
+#~ msgid "Show SocketSpy..."
+#~ msgstr "Mostrar Espia de Sockets"
+
+#~ msgid "Shows a window that allows monitoring the socket traffic"
+#~ msgstr "Mostra una finestra que permet monitoritzar el tr�fic dels sockets"
+
+#~ msgid "Get Network Links"
+#~ msgstr "Obtenir Enlla�os de Xarxa"
+
+#~ msgid "Shows a window that allows viewing the network links"
+#~ msgstr "Mostra una finestra que permeti visualitzar els enlla�os de xarxa"
+
+#~ msgid "Get Channel List"
+#~ msgstr "Obtenir la Llista de Canals"
+
+#~ msgid "Shows a window that allows listing the network channels"
+#~ msgstr "Mostra una finestra que permet llistar els canals de la xarxa"
+
+#, fuzzy
+#~ msgid "Configure KVIrc..."
+#~ msgstr "&Configurar KVIrc..."
+
+#~ msgid "Shows the general options dialog"
+#~ msgstr "Mostra el di�leg general d'opcions"
+
+#, fuzzy
+#~ msgid "Customize Toolbars..."
+#~ msgstr "Barres d'Eines personalitzades"
+
+#~ msgid "Shows a window that allows editing script toolbars"
+#~ msgstr ""
+#~ "Mostra una finestra que permet editar els scripts de les barres d'eines"
+
+#, fuzzy
+#~ msgid "Join Channels..."
+#~ msgstr "Unir-se a Canals..."
+
+#~ msgid "Shows a dialog that allows you joing channels"
+#~ msgstr "Mostra un di�leg que et permet unir-te a canals"
+
+#, fuzzy
+#~ msgid "Edit Actions..."
+#~ msgstr "Carregant accions..."
+
+#, fuzzy
+#~ msgid "Shows a window that allows editing actions"
+#~ msgstr "Mostra una finestra que permet editar els �lies"
+
+#, fuzzy
+#~ msgid "Edit Aliases..."
+#~ msgstr "&Alies..."
+
+#~ msgid "Shows a window that allows editing aliases"
+#~ msgstr "Mostra una finestra que permet editar els �lies"
+
+#, fuzzy
+#~ msgid "Edit Events..."
+#~ msgstr "&Events..."
+
+#~ msgid "Shows a window that allows editing script events"
+#~ msgstr "Mostra una finestra que permeti editar els events d'script"
+
+#, fuzzy
+#~ msgid "Edit Popups..."
+#~ msgstr "Men�s emergents..."
+
+#~ msgid "Shows a window that allows editing popup menus"
+#~ msgstr "Mostra una finestra que et permet editar els men�s emergents"
+
+#, fuzzy
+#~ msgid "Edit Raw Events..."
+#~ msgstr "Events &Raw..."
+
+#~ msgid "Shows a window that allows editing raw scripting events"
+#~ msgstr "Mostra una finestra que permet editar els events d'scripts purs"
+
+#, fuzzy
+#~ msgid "New Script Tester"
+#~ msgstr "Comprovador d'Script"
+
+#, fuzzy
+#~ msgid "Creates an embedded editor for long scripts"
+#~ msgstr "Mostra un editor incrustat per a scripts grans"
+
+#~ msgid "Execute Script..."
+#~ msgstr "Executar Script..."
+
+#~ msgid "Allows executing a KVS script from file"
+#~ msgstr "Permet executar un script KVS des d'un arxiu"
+
+#, fuzzy
+#~ msgid "Shows the documentation index"
+#~ msgstr "Mostra el di�leg general d'opcions"
+
+#~ msgid "Subscribe to the Mailing List"
+#~ msgstr "Subscriure's a la Llista de Correu"
+
+#, fuzzy
+#~ msgid "Allows subscribing to the KVIrc mailing list"
+#~ msgstr "Subscriure's a la Llista de Correu"
+
+#, fuzzy
+#~ msgid "KVIrc WWW"
+#~ msgstr "KVIrc"
+
+#, fuzzy
+#~ msgid "Opens the KVIrc homepage"
+#~ msgstr "P�gina de KVIrc"
+
+#~ msgid "Cascade windows"
+#~ msgstr "Finestres en cascada"
+
+#~ msgid "Arranges the MDI windows in a maximized-cascade fashion"
+#~ msgstr "Organitza las finestres MDI en un estil de cascada maximitzada"
+
+#~ msgid "Tiles the MDI windows with the currently selected tile method"
+#~ msgstr "Posa en mosaic les finestres MDI amb el m�tode de mosaic triat"
+
+#~ msgid "Minimize all windows"
+#~ msgstr "Minimitzar totes les finestres"
+
+#~ msgid "Minimized all the currently visible MDI windows"
+#~ msgstr "Minimitza totes les finestres MDI actualment visibles"
+
+#~ msgid "New IRC Context"
+#~ msgstr "Nou Context d'IRC"
+
+#~ msgid "Creates a new IRC context console"
+#~ msgstr "Crea una nova consola de context d'IRC"
+
+#~ msgid "Quit KVIrc"
+#~ msgstr "Sortir de KVIrc"
+
+#~ msgid "Quits KVIrc closing all the current connections"
+#~ msgstr "Sortir de KVIrc tancant totes les connexions actuals"
+
+#~ msgid "IRC Context Display"
+#~ msgstr "Finestra de Context d'IRC"
+
+#~ msgid "Shows a small display with IRC context informations"
+#~ msgstr "Mostra una petita finestra amb les informacions de context d'iRC"
+
+#~ msgid "Acts as a separator for other items: performs no action"
+#~ msgstr "Actua com un separador per a altres elements: no realitza cap acci�"
+
+#~ msgid "Connect/Disconnect"
+#~ msgstr "Connectar/Desconnectar"
+
+#~ msgid ""
+#~ "Allows you to connect to a server or to terminate the current connection"
+#~ msgstr "Permet connectar-se a un servidor o finalitzar la connexi� actual"
+
+#~ msgid "Connect"
+#~ msgstr "Connectar"
+
+#~ msgid "Abort Connection"
+#~ msgstr "Cancel�lar Connexi�"
+
+#~ msgid "Join Channel"
+#~ msgstr "Unir-se a un Canal"
+
+#~ msgid "Shows a popup menu that allows quickly selecting a channel to join"
+#~ msgstr ""
+#~ "Mostra un men� emergent que permet seleccionar r�pidament un canal per "
+#~ "unir-se"
+
+#~ msgid "Change Nickname"
+#~ msgstr "Canviar Nick"
+
+#~ msgid "Shows a popup menu that allows quickly changing the nickname"
+#~ msgstr "Mostra un men� emergent que permet canviar r�pidament el nick"
+
+#~ msgid "Connect To"
+#~ msgstr "Connectar a"
+
+#~ msgid "Shows a popup menu that allows quickly connecting to a server"
+#~ msgstr ""
+#~ "Mostra un men� emergent que permet connectar-se r�pidament a un servidor"
+
+#~ msgid "Shows a popup menu that allows quickly changing user modes"
+#~ msgstr ""
+#~ "Mostra un men� emergent que permet canviar r�pidament els modes d'usuari"
+
+#~ msgid "Server Notices (+s)"
+#~ msgstr "Not�cies del Servidor (+s)"
+
+#~ msgid "Away/Back"
+#~ msgstr "Absentar-se/Tornar"
+
+#, fuzzy
+#~ msgid "Allows entering and leaving away state"
+#~ msgstr "Permet entrar i sortir del estat absent"
+
+#~ msgid "Enter Away Mode"
+#~ msgstr "Entrar en Mode Absent"
+
+#~ msgid "Leave Away Mode"
+#~ msgstr "Abandonar el Mode Absent"
+
+#~ msgid "Irc Tools"
+#~ msgstr "Eines d'IRC"
+
+#~ msgid "Shows a popup menu with some IRC Tools"
+#~ msgstr "Mostra un men� emergent amb algunes eines d'IRC"
+
+#~ msgid "Irc Actions"
+#~ msgstr "Accions IRC"
+
+#~ msgid "Shows a popup menu with some IRC Actions"
+#~ msgstr "Mostra un men� emergent amb algunes accions IRC"
+
+#~ msgid "Failed to set the encoding to %Q: mapping not available."
+#~ msgstr ""
+#~ "Ha fallat la configuraci� per a la codificaci� a %Q: mapeig o disponible."
+
+#~ msgid "Changed text encoding to %Q"
+#~ msgstr "Canvidada la codificaci� de text a %Q"
+
+#~ msgid "Connection to server established"
+#~ msgstr "Connexi� establerta amb el servidor"
+
+#~ msgid "[LINK WARNING]: Socket message truncated to 512 bytes."
+#~ msgstr "[Alerta d'enlla�]: Missatge de socket truncat a 512 bytes."
+
+#~ msgid ""
+#~ "The server seems to support the WATCH notify list method, will try to use "
+#~ "it"
+#~ msgstr ""
+#~ "Aquest servidor sembla suportar el m�tode de llista de notificaci� WATCH, "
+#~ "intentar� fer-lo servir."
+
+#~ msgid "Can't resolve local host address, using user supplied one (%Q)"
+#~ msgstr ""
+#~ "No s'ha pogut resoldre la direcci� local, emprant la subministrada per "
+#~ "l'usuari (%Q)"
+
+#~ msgid "Can't resolve local host address, using default 127.0.0.1"
+#~ msgstr ""
+#~ "No s'ha pogut resoldre la direcci� local, fent servir la direcci� per "
+#~ "defecte 127.0.0.1"
+
+#~ msgid "Local host address is %Q"
+#~ msgstr "La direcci� local de la m�quina �s %Q"
+
+#~ msgid "The server seems to have changed the idea about the local hostname"
+#~ msgstr ""
+#~ "El servidor sembla haver canviat d'idea sobre el nom de la m�quina local"
+
+#~ msgid ""
+#~ "You're probably using a broken bouncer or maybe something weird is "
+#~ "happening on the IRC server"
+#~ msgstr ""
+#~ "Probablement est� fent servir un repetidor espatllat o alguna cosa molt "
+#~ "dolenta est� passant al servidor IRC"
+
+#~ msgid ""
+#~ "Here goes your \"broken bouncer hack\": The server has changed the "
+#~ "hostname but I'll ignore the IP address change"
+#~ msgstr ""
+#~ "Aqu� ve el teu \"truc del repetidor espatllat\": El servidor ha canviat "
+#~ "el nom de m�quina per� ignorar� el canvi d'adre�a IP"
+
+#~ msgid "The local IP address as seen by the IRC server is %Q"
+#~ msgstr "L'adre�a IP local vista pel servidor IRC �s %Q"
+
+#~ msgid "Can't start the DNS slave thread"
+#~ msgstr "No s'ha pogut iniciar el fil de DNS esclau"
+
+#~ msgid "Unable to resolve the local hostname as seen by the IRC server: %Q"
+#~ msgstr ""
+#~ "No �s possible resoldre el nom de la m�quina local tal i com la veu el "
+#~ "servidor d'IRC: %Q"
+
+#~ msgid "Looking up the local hostname as seen by the IRC server (%Q)"
+#~ msgstr ""
+#~ "Buscant el nom de m�quina local tal i com la veu el servidor IRC (%Q)"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unable to resolve the local hostname as seen by the IRC server: %Q, using "
+#~ "previously resolved %Q"
+#~ msgstr ""
+#~ "No �s possible resoldre el nom de la m�quina local tal i com la veu el "
+#~ "servidor d'IRC: %Q"
+
+#~ msgid "Local hostname as seen by the IRC server resolved to %s"
+#~ msgstr "Buscant el nom de m�quina del proxy (%s)"
+
+#~ msgid "Using server specific username (%Q)"
+#~ msgstr "Utilitzant el nom d'usuari especific del servidor (%Q)"
+
+#~ msgid "Using network specific username (%Q)"
+#~ msgstr "Utilitzant el nom d'usuari especificat de la xarxa (%Q)"
+
+#~ msgid "Using server specific nickname (%Q)"
+#~ msgstr "Utilitzant el nick espec�fic del servidor (%Q)"
+
+#~ msgid "Using network specific nickname (%Q)"
+#~ msgstr "Utilitzant el nick espec�fic de la xarxa (%Q)"
+
+#~ msgid "Using server specific real name (%Q)"
+#~ msgstr "Utilitzant el nom real espec�fic del servidor (%Q)"
+
+#~ msgid "Using network specific real name (%Q)"
+#~ msgstr "Utilitzant el nom real espec�fic de la xarxa (%Q)"
+
+#~ msgid "Logging in as %Q!%Q :%Q"
+#~ msgstr "Entrant com a %Q!%Q :%Q"
+
+#~ msgid "Sending %s as password"
+#~ msgstr "Enviant %s com a clau"
+
+#~ msgid "Executing scheduled network specific \"on connect\" commands"
+#~ msgstr ""
+#~ "Executant les comandes espec�fiques de la xarxa programades \"al conectar"
+#~ "\""
+
+#~ msgid "Executing scheduled server specific \"on connect\" commands"
+#~ msgstr ""
+#~ "Executant les comandes espec�fiques de servidor programades \"al conectar"
+#~ "\""
+
+#~ msgid ""
+#~ "The server refused the suggested nickname (%s) and named you %s instead"
+#~ msgstr ""
+#~ "El servidor ha rebutjat el nick suggerit (%s) i l'ha anomenat %s en el "
+#~ "seu lloc"
+
+#~ msgid "Login operations complete, happy ircing!"
+#~ msgstr "Operacions d'entrada completes, feli� irc!"
+
+#~ msgid "Executing scheduled network specific \"on login\" commands"
+#~ msgstr ""
+#~ "Executant les comandes espec�fiques de la xarxa programades \"al entrar\""
+
+#~ msgid "Executing scheduled server specific \"on login\" commands"
+#~ msgstr ""
+#~ "Executant les comandes espec�fiques de servidor programades \"al entrar\""
+
+#~ msgid "Setting configured user mode"
+#~ msgstr "Posant el mode configurat per l'usuari"
+
+#~ msgid "Auto-joining network specific channels"
+#~ msgstr "Entrenant autom�ticament en canals espec�fics de la xarxa"
+
+#~ msgid "Auto-joining server specific channels"
+#~ msgstr "Entrant autom�ticament en canals espec�fics del servidor"
+
+#, fuzzy
+#~ msgid "Updating away state for channel %Q"
+#~ msgstr "No s'ha posat tema per al canal \r!c\r%Q\r"
+
+#~ msgid ""
+#~ "Ops...it looks like I can't load modules on this sytem.\n"
+#~ "I have been looking for the %s library but I haven't been able to load "
+#~ "it\n"
+#~ "due to the following error: \"%s\"\n"
+#~ "Aborting."
+#~ msgstr ""
+#~ "Ups...sembla ser que no puc descarregar m�duls en aquest sistema.\n"
+#~ "He buscat la biblioteca %s per� no he pogut carregar-la\n"
+#~ "degut al seg�ent error: \"%s\"\n"
+#~ "Interrompent."
+
+#~ msgid ""
+#~ "Ops...it looks like you have a broken distribution.\n"
+#~ "The setup module does not export the \"setup_begin\" function.\n"
+#~ "Aborting!"
+#~ msgstr ""
+#~ "Ups... sembla que t� una distribuci� defectuosa.\n"
+#~ "El m�dul de configuraci� no exporta la funci� \"setup_begin\".\n"
+#~ "Interrompent!"
+
+#~ msgid "Setup aborted"
+#~ msgstr "Configuraci� interrompuda"
+
+#~ msgid ""
+#~ "Ops...it looks like you have a broken distribution.\n"
+#~ "The setup module does not export the \"setup_finish\" function.\n"
+#~ "Trying to continue anyway..."
+#~ msgstr ""
+#~ "Ups... sembla que tens una distribuci� defectuosa.\n"
+#~ "El m�dul de configuraci� no exporta la funci� \"setup_finish\".\n"
+#~ "Intentant continuar de totes formes..."
+
+#, fuzzy
+#~ msgid ""
+#~ "Failed writing the kvirc home directory path to %Q.\n"
+#~ "You will need to do it manually , otherwise KVirc will restart with\n"
+#~ "the setup!"
+#~ msgstr ""
+#~ "Fallida a l'escriptura en el directori de kvirc %s.\n"
+#~ "Necessita configurar-lo manualment, o KVirc reiniciar� amb \n"
+#~ " el proc�s de configuraci�!"
+
+#~ msgid "Normal text"
+#~ msgstr "Text normal"
+
+#~ msgid "Selection"
+#~ msgstr "Selecci�"
+
+#~ msgid "Highlighted text"
+#~ msgstr "Text ressaltat"
+
+#~ msgid "URL foreground"
+#~ msgstr "Color de primer pla d'URL"
+
+#~ msgid "Link overlay foreground"
+#~ msgstr "Enlla� de la capa de primer pla"
+
+#~ msgid "Parser error"
+#~ msgstr "Error de l'analitzador"
+
+#~ msgid "Parser warning"
+#~ msgstr "Av�s de l'analizatdor"
+
+#~ msgid "Host lookup result"
+#~ msgstr "Resultat de la cerca de la m�quina"
+
+#~ msgid "Socket message"
+#~ msgstr "Missatge de socket"
+
+#~ msgid "Socket warning"
+#~ msgstr "Av�s de socket"
+
+#~ msgid "Socket error"
+#~ msgstr "Error en el socket"
+
+#~ msgid "System error"
+#~ msgstr "Error de sistema"
+
+#~ msgid "Raw data to server"
+#~ msgstr "Dades raw al servidor"
+
+#~ msgid "Connection status"
+#~ msgstr "Estat de la connexi�"
+
+#~ msgid "System warning"
+#~ msgstr "Av�s del sistema"
+
+#~ msgid "System message"
+#~ msgstr "Missatge del sistema"
+
+#~ msgid "Unhandled server reply"
+#~ msgstr "Resposta del servidor no processada"
+
+#~ msgid "Server information"
+#~ msgstr "Informaci� del servidor"
+
+#~ msgid "Server Message of the Day"
+#~ msgstr "Missatge del Dia del servidor"
+
+#~ msgid "Server ping"
+#~ msgstr "Pings del servidor"
+
+#~ msgid "Join message"
+#~ msgstr "Missatge Join"
+
+#~ msgid "Unrecognized/broken message"
+#~ msgstr "Missatge no reconegut/erroni"
+
+#~ msgid "Topic message"
+#~ msgstr "Missatge del tema"
+
+#~ msgid "Own private message"
+#~ msgstr "Missatge privat propi"
+
+#~ msgid "Channel private message"
+#~ msgstr "Missatge privat al canal"
+
+#~ msgid "Query private message"
+#~ msgstr "Missatge de pregunta privada"
+
+#~ msgid "CTCP reply"
+#~ msgstr "Resposta CTCP"
+
+#~ msgid "CTCP request replied"
+#~ msgstr "Sol�licitud CTCP resposta"
+
+#~ msgid "CTCP request ignored"
+#~ msgstr "Sol�licitud CTCP ignorada"
+
+#~ msgid "CTCP request flood warning"
+#~ msgstr "Sol�licitud CTCP d'av�s de saturaci�"
+
+#~ msgid "CTCP request unknown"
+#~ msgstr "Sol�licitud CTCP desconeguda"
+
+#~ msgid "User action"
+#~ msgstr "Acci� d'usuari"
+
+#~ msgid "Avatar change"
+#~ msgstr "Canvi d'avatar"
+
+#~ msgid "Split message"
+#~ msgstr "Missatge de divisi�"
+
+#~ msgid "Quit on netsplit message"
+#~ msgstr "Sortir amb el missatge de netsplit"
+
+#~ msgid "Nick changes"
+#~ msgstr "Canvis de nick"
+
+#~ msgid "+o mode change"
+#~ msgstr "canvi de mode +o"
+
+#~ msgid "-o mode change"
+#~ msgstr "canvi de mode -o"
+
+#~ msgid "+v mode change"
+#~ msgstr "canvi de mode +v"
+
+#~ msgid "-v mode change"
+#~ msgstr "canvi de mode -v"
+
+#~ msgid "Multiple user mode change"
+#~ msgstr "Canvi m�ltiple del mode d'usuari"
+
+#~ msgid "Channel key change"
+#~ msgstr "Canvi de clau del canal"
+
+#~ msgid "Channel limit change"
+#~ msgstr "Canvi del l�mit del canal"
+
+#~ msgid "+b mode change"
+#~ msgstr "canvi de mode +b"
+
+#~ msgid "-b mode change"
+#~ msgstr "canvi de mode -b"
+
+#~ msgid "+e mode change"
+#~ msgstr "canvi de mode +e"
+
+#, fuzzy
+#~ msgid "-e mode change"
+#~ msgstr "canvi de mode -o"
+
+#~ msgid "+I mode change"
+#~ msgstr "canvi de mode +I"
+
+#~ msgid "-I mode change"
+#~ msgstr "canvi de mode -I"
+
+#~ msgid "Multiple channel mode change"
+#~ msgstr "canvi m�ltiple del mode de canal"
+
+#~ msgid "Who reply"
+#~ msgstr "Resposta Who"
+
+#~ msgid "DCC request"
+#~ msgstr "Petici� DCC"
+
+#~ msgid "DCC message"
+#~ msgstr "Missatge DCC"
+
+#~ msgid "DCC error"
+#~ msgstr "Error DCC"
+
+#~ msgid "Nickname problem"
+#~ msgstr "Problema amb el nick"
+
+#~ msgid "Whois user reply"
+#~ msgstr "Resposta d'usuari whois"
+
+#~ msgid "Whois channels reply"
+#~ msgstr "Resposta de canal whois"
+
+#~ msgid "Whois idle reply"
+#~ msgstr "Resposta en espera de whois"
+
+#~ msgid "Whois server reply"
+#~ msgstr "Resposta whois del servidor"
+
+#~ msgid "Whois other reply"
+#~ msgstr "Resposta d'un tercer a whois"
+
+#~ msgid "Channel creation time reply"
+#~ msgstr "Resposta de data de creaci� del canal"
+
+#~ msgid "Notify list joins"
+#~ msgstr "Notificar unions a la llista"
+
+#~ msgid "Notify list leaves"
+#~ msgstr "Notificar abandonaments de la llista"
+
+#~ msgid "Own encrypted private message"
+#~ msgstr "Missatge xifrat privat propi"
+
+#~ msgid "Channel encrypted private message"
+#~ msgstr "Canal xifrat privat propi"
+
+#~ msgid "Query encrypted private message"
+#~ msgstr "Demanar missatge privat xifrat"
+
+#~ msgid "DCC chat message"
+#~ msgstr "Missatge de DCC chat"
+
+#~ msgid "Encrypted DCC chat message"
+#~ msgstr "Missatge xifrat de DCC chat"
+
+#~ msgid "Login operations completed"
+#~ msgstr "Operacions d'entrada completes"
+
+#~ msgid "Kick action"
+#~ msgstr "Acci� expulsar"
+
+#~ msgid "Links reply"
+#~ msgstr "Resposta enlla�os"
+
+#~ msgid "Spam report"
+#~ msgstr "Informe spam"
+
+#~ msgid "ICQ message"
+#~ msgstr "Missatge ICQ"
+
+#~ msgid "ICQ user-message"
+#~ msgstr "Missatge d'usuari ICQ"
+
+#~ msgid "Outgoing ICQ user-message"
+#~ msgstr "Missatge sortint d'usuari ICQ"
+
+#~ msgid "Channel notice"
+#~ msgstr "Not�cia de canal"
+
+#~ msgid "Encrypted channel notice"
+#~ msgstr "Not�cia de canal xifrat"
+
+#~ msgid "Query notice"
+#~ msgstr "Not�cia privada"
+
+#~ msgid "Encrypted query notice"
+#~ msgstr "Not�cia privada xifrada"
+
+#~ msgid "Server notice"
+#~ msgstr "Not�cia del servidor"
+
+#~ msgid "Halfop mode change"
+#~ msgstr "Canvi de mode semioperador"
+
+#~ msgid "Unknown CTCP reply"
+#~ msgstr "Resposta CTCP desconoeguda"
+
+#~ msgid "NickServ message"
+#~ msgstr "Missatge NickServ"
+
+#~ msgid "ChanServ message"
+#~ msgstr "Missatge ChanServ"
+
+#~ msgid "Away message"
+#~ msgstr "Missatge d'abs�ncia"
+
+#~ msgid "Ident message"
+#~ msgstr "Missatge d'ident"
+
+#~ msgid "Channel list message"
+#~ msgstr "Missatge de llista de canals"
+
+#~ msgid "Half-deop mode change"
+#~ msgstr "Canvi de mode treure semioperador"
+
+#~ msgid "Invite message"
+#~ msgstr "Missatge d'invitaci�"
+
+#~ msgid "Multimedia message"
+#~ msgstr "Missatge multim�dia"
+
+#~ msgid "Query trace message"
+#~ msgstr "Rastrejar missatge privat"
+
+#~ msgid "Wallops message"
+#~ msgstr "Missatge a wallops"
+
+#~ msgid "Join error message"
+#~ msgstr "Missatge d'error al unir-se"
+
+#~ msgid "Broadcast private message"
+#~ msgstr "Missatge privat dif�s"
+
+#~ msgid "Broadcast notice"
+#~ msgstr "Difondre not�cia"
+
+#~ msgid "Am kicked"
+#~ msgstr "Am expulsat"
+
+#~ msgid "Am op'd"
+#~ msgstr "Am opeat"
+
+#~ msgid "Am voiced"
+#~ msgstr "Am amb veu"
+
+#~ msgid "Am deop'd"
+#~ msgstr "Am desopeat"
+
+#~ msgid "Am devoiced"
+#~ msgstr "Am silenciat"
+
+#~ msgid "Am halfop'd"
+#~ msgstr "Am semiopeat"
+
+#~ msgid "Am de-halfop'd"
+#~ msgstr "Am semidesopeat"
+
+#~ msgid "Ban matching my mask"
+#~ msgstr "Prohibir concordant amb la meva m�scara"
+
+#~ msgid "Unban matching my mask"
+#~ msgstr "Desbanejar concordant amb la meva m�scara"
+
+#~ msgid "Ban exception matching my mask"
+#~ msgstr "Excepci� de prohibici� concorda amb la meva m�scara"
+
+#~ msgid "Ban unexception matching my mask"
+#~ msgstr "Prohibici� sense excepci� concorda amb la meva m�scara"
+
+#~ msgid "Invite exception matching my mask"
+#~ msgstr "Excepci� d'invitaci� concorda amb la meva m�scara"
+
+#~ msgid "Invite unexception matching my mask"
+#~ msgstr "Invitaci� sense excepci� concorda amb la meva m�scara"
+
+#~ msgid "Ignored user message"
+#~ msgstr "Missatge d'usuari ignorat"
+
+#~ msgid "Server statistics"
+#~ msgstr "Estad�stiques del servidor"
+
+#~ msgid "SSL message"
+#~ msgstr "Missatge SSL"
+
+#~ msgid "Search"
+#~ msgstr "Cerca"
+
+#~ msgid "Generic success"
+#~ msgstr "Succ�s gen�ric"
+
+#~ msgid "Generic status"
+#~ msgstr "Estat gen�ric"
+
+#~ msgid "Generic verbose message"
+#~ msgstr "Missatge gen�ric detallat"
+
+#~ msgid "Generic warning"
+#~ msgstr "Av�s gen�ric"
+
+#~ msgid "Generic error"
+#~ msgstr "Error gen�ric"
+
+#~ msgid "Generic critical error"
+#~ msgstr "Error cr�tic gen�ric"
+
+#~ msgid "Chan admin status set"
+#~ msgstr "Posa't l'estat d'admin del canal"
+
+#~ msgid "Chan admin status unset"
+#~ msgstr "Traient l'estat d'admin del canal"
+
+#~ msgid "Own chan admin status set"
+#~ msgstr "Posat l'estatus d'admin propietari del canal"
+
+#~ msgid "Own chan admin status unset"
+#~ msgstr "Traient l'estatus d'administrador propietari del canal"
+
+#~ msgid "Userop mode change"
+#~ msgstr "Canvi de mode usuari operador"
+
+#~ msgid "User-deop mode change"
+#~ msgstr "Canvi del mode usuari no operador"
+
+#~ msgid "Am userop'd"
+#~ msgstr "Am opeat"
+
+#~ msgid "Am de-userop'd"
+#~ msgstr "Am desopeat"
+
+#~ msgid "Verbose/Debug"
+#~ msgstr "Detallat/Depuraci�"
+
+#~ msgid "Chan owner status set"
+#~ msgstr "Posat l'estatus de propietari del canal"
+
+#~ msgid "Chan owner status unset"
+#~ msgstr "Tret l'estatus de propietari del canal"
+
+#~ msgid "Own chan owner status set"
+#~ msgstr "Posat l'estatus de propietari del canal"
+
+#~ msgid "Own chan owner status unset"
+#~ msgstr "Tret l'estatus de propietari del canal"
+
+#, fuzzy
+#~ msgid "Server error"
+#~ msgstr "Error de l'analitzador"
+
+#~ msgid "Boolean options (1/0)"
+#~ msgstr "Opcions booleanes (1/0)"
+
+#~ msgid "Rectangle options (x,y,width,height)"
+#~ msgstr "Opcions per a el rectangle (x,y,ample, al�ada)"
+
+#~ msgid "String options (string value)"
+#~ msgstr "Opcions de cadena (valor de la cadena)"
+
+#~ msgid "Color options (#RRGGBB)"
+#~ msgstr "Opcions de color (#RRGGBB)"
+
+#~ msgid "Mirccolor options (#RRGGBB)"
+#~ msgstr "Opcions de color Mirc (#RRGGBB)"
+
+#~ msgid "Irc context color options (#RRGGBB)"
+#~ msgstr "Opcions de color de context Irc (#RRGGBB)"
+
+#~ msgid "Pixmap options (image path)"
+#~ msgstr "Opcions del gr�fic (ruta de la imatge)"
+
+#~ msgid "Unsigned integer options (unsigned integer constant)"
+#~ msgstr "Opcions d'enters sense signe (constant unsigned integer)"
+
+#~ msgid "Font options (family,pointsize,style,charset,weight,flags (biusf))"
+#~ msgstr ""
+#~ "Opcions de fonts (fam�lia,mida de punt, estil, conjunt de car�cters, "
+#~ "amplada, flags (biusf))"
+
+#~ msgid "Message color options (image_id,foreground,background,logFlag (0/1))"
+#~ msgstr "Opcions de color de missatge (imatge,primer pla,fons,logFlag (0/1))"
+
+#~ msgid "String list options (comma separated list of strings)"
+#~ msgstr ""
+#~ "Opcions de llista de car�cters (llista de cadenes separades per comes)"
+
+#~ msgid "Icon Table"
+#~ msgstr "Taula d'Icones"
+
+#~ msgid "%Q is on IRC"
+#~ msgstr "%Q est� a l'IRC"
+
+#~ msgid "%Q has left IRC"
+#~ msgstr "%Q ha abandonat l'IRC"
+
+#~ msgid "Notify list: No users to check for, quitting"
+#~ msgstr "Llista de Notificaci�: No hi ha usuaris que comprovar, aturant."
+
+#~ msgid ""
+#~ "Notify list: Timeout (%d sec) is too short, resetting to something more "
+#~ "reasonable (15 sec)"
+#~ msgstr ""
+#~ "Llista de Notificaci�: El timeout (%d segs) �s massa petit, posant un "
+#~ "valor m�s raonable (15 segons)"
+
+#~ msgid "Notify list: Notify list empty, quitting"
+#~ msgstr "Llista de Notificaci�: llista de notificaci� buida, aturant"
+
+#~ msgid ""
+#~ "Notify list: ISON delay (%d sec) is too short, resetting to something "
+#~ "more reasonable (5 sec)"
+#~ msgstr ""
+#~ "Llista de notificaci�: el retard ISON (%d segs) �s massa petit, posant-ne "
+#~ "un m�s raonable (5 segs)"
+
+#~ msgid "Notify list: Checking for: %Q"
+#~ msgstr "Llista de notificaci�: comprovant: %Q"
+
+#~ msgid ""
+#~ "Notify list: Hey! You've used ISON behind my back? (I might be confused "
+#~ "now...)"
+#~ msgstr ""
+#~ "Llista de notificaci�: �Eh! �Has emprat ISON d'amagat meu? (Ara puc estar "
+#~ "conf�s...)"
+
+#~ msgid "registration mask changed, or nickname is being used by someone else"
+#~ msgstr ""
+#~ "ha canviat la m�scara de registre o el nick est� fent-se servir per alg�"
+
+#~ msgid ""
+#~ "Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q"
+#~ "\r] does not match (registration mask does not match, or nickname is "
+#~ "being used by someone else)"
+#~ msgstr ""
+#~ "Llista de notificaci�: Sembla que \r!n\r%Q\r est� conectat, per� la "
+#~ "m�scara [%Q@\r!h\r%Q\r] no concorda (alg� est� fent servir el seu nick o "
+#~ "la m�scara que ha posat no concorda)"
+
+#~ msgid ""
+#~ "Notify list: Unexpected inconsistency, registered user DB modified? "
+#~ "(restarting)"
+#~ msgstr ""
+#~ "Llista de notificaci�: inconsist�ncia inesperada, �base de dades "
+#~ "d'usuaris registrats modificada? (reiniciant)"
+
+#~ msgid ""
+#~ "Notify list: Unexpected inconsistency, expected \r!n\r%Q\r in the "
+#~ "registered user DB"
+#~ msgstr ""
+#~ "Llista de notificaci�: inconsist�ncia inesperada, esperava tindre a \r!n\r"
+#~ "%Q\r a la BD d'usuaris registrats..."
+
+#~ msgid ""
+#~ "Notify list: USERHOST delay (%d sec) is too short, resetting to something "
+#~ "more reasonable (5 sec)"
+#~ msgstr ""
+#~ "Llista de notificaci�: El retard de la llista de notificaci� USERHOST (%d "
+#~ "segs) �s massa petit, reiniciant-ho a una cosa m�s raonable (5 segs)"
+
+#~ msgid "Notify list: Unexpected inconsistency, userhost list is empty!"
+#~ msgstr ""
+#~ "Llista de notificaci�: Inconsist�ncia inesperada, i la llista d'usuaris-"
+#~ "m�quines est� buida!"
+
+#~ msgid "Notify list: Checking userhost for: %Q"
+#~ msgstr "Llista de notificaci�: Comprovant usuari-m�quina per a : %Q"
+
+#~ msgid ""
+#~ "Notify list: Hey! You've used USERHOST behind my back? (I might be "
+#~ "confused now...)"
+#~ msgstr ""
+#~ "Llista de notificaci�: �Eh! �Has emprat USERHOST a les meves esquenes? "
+#~ "(puc estar conf�s ara...)"
+
+#~ msgid "Notify list: Broken USERHOST reply from the server? (%s)"
+#~ msgstr ""
+#~ "Llista de notificaci�: �he obtingut una resposta USERHOST err�nia del "
+#~ "servidor? (%s)"
+
+#~ msgid ""
+#~ "Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST "
+#~ "reply was received, will recheck in the next loop"
+#~ msgstr ""
+#~ "Llista de notificaci�: Sembla ser que \r!n\r%Q\r s'ha desconectat mentre "
+#~ "esperava la seva resposta USERHOST, es recomprovar� en el pr�xim cicle"
+
+#~ msgid "No users in the notify list"
+#~ msgstr "No hi ha usuaris a la llista de notificaci�"
+
+#~ msgid "Notify list: Checking for:%Q"
+#~ msgstr "Llista de notificaci�: Comprovant:%Q"
+
+#~ msgid ""
+#~ "Notify list: Timeout (%d sec) is too short, resetting to something more "
+#~ "reasonable (5 sec)"
+#~ msgstr ""
+#~ "Llista de notificaci�: El temps d'expiraci� (%d segs) �s massa curt, "
+#~ "iniciant-ho a alguna cosa m�s raonable (5 segs)"
+
+#~ msgid "Notify list: Adding watch entries for%Q"
+#~ msgstr "Llista de notificaci�: Afegint entrades watch per a %Q"
+
+#~ msgid "watch entry listing requested by user"
+#~ msgstr "llistat d'entrades vigilades solicitada per l'usuari"
+
+#~ msgid "possible watch list desync"
+#~ msgstr "possible desync de la llista de vigil�ncia"
+
+#~ msgid "registration mask changed or desync with the watch service"
+#~ msgstr ""
+#~ "ha canviat la m�scara de registre o s'ha dessincronitzat amb el servei de "
+#~ "vigil�ncia"
+
+#~ msgid ""
+#~ "Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q"
+#~ "\r] does not match (watch: registration mask does not match, or nickname "
+#~ "is being used by someone else)"
+#~ msgstr ""
+#~ "Llista de notificaci� : \r!n\r%Q\r sembla estar conectat, per� la m�scara "
+#~ "[%Q@\r!h\r%Q\r] no concorda (watch: alg� m�s est� fent servir el seu nick "
+#~ "o la seva m�scara de registre no concorda)"
+
+#~ msgid ""
+#~ "Notify list: Unexpected inconsistency, registered user DB modified? "
+#~ "(watch: restarting)"
+#~ msgstr ""
+#~ "Llista de Notificaci�: inconsist�ncia inesperada, �BD d'usuaris "
+#~ "registrats modificada? (watch: reiniciant)"
+
+#~ msgid "watch entry added by user"
+#~ msgstr "entrada de vigil�ncia afegida per l'usuari"
+
+#~ msgid "removed from watch list"
+#~ msgstr "eliminada de la llista de vigil�ncia"
+
+#~ msgid "Notify list: Stopped watching for \r!n\r%Q\r"
+#~ msgstr "Llista de notificaci�: aturant el seguiment per a: \r!n\r%Q\r"
+
+#~ msgid "watch"
+#~ msgstr "vigil�ncia"
+
+#~ msgid "Notify list: \r!n\r%Q\r is offline (watch)"
+#~ msgstr "Llista de notificaci�: \r!n\r%Q\r est� desconnectada (watch)"
+
+#~ msgid "unmatched watch list entry"
+#~ msgstr "entrada de la llista de vigil�ncia no coincident"
+
+#, fuzzy
+#~ msgid "commandline"
+#~ msgstr "No s'ha especificat la l�nia de comanda"
+
+#~ msgid "[SSL]: %c%s"
+#~ msgstr "[SSL]: %c%s"
+
+#~ msgid "[SSL]: Cipher: %c%s"
+#~ msgstr "[SSL]: Xifrador: %c%s"
+
+#~ msgid "[SSL]: Version: %c%s"
+#~ msgstr "[SSL]: Versi�: %c%s"
+
+#~ msgid "[SSL]: Bits: %c%d (%d used)"
+#~ msgstr "[SSL]: Bits: %c%d (%d emprats)"
+
+#~ msgid "[SSL]: Version: %c%d"
+#~ msgstr "[SSL]: Versi�: %c%d"
+
+#~ msgid "[SSL]: Serial number: %c%d"
+#~ msgstr "[SSL]: N�mero de s�rie: %c%d"
+
+#~ msgid "[SSL]: Subject:"
+#~ msgstr "[SSL]: Tema:"
+
+#~ msgid "[SSL]: Common name: %c%s"
+#~ msgstr "[SSL]: Nom com�: %c%s"
+
+#~ msgid "[SSL]: Organization: %c%s"
+#~ msgstr "[SSL]: Organitzaci�: %c%s"
+
+#~ msgid "[SSL]: Organizational unit: %c%s"
+#~ msgstr "[SSL]: Unitat organitzativa: %c%s"
+
+#~ msgid "[SSL]: Country: %c%s"
+#~ msgstr "[SSL]: Condat: %c%s"
+
+#~ msgid "[SSL]: State or province: %c%s"
+#~ msgstr "[SSL]: Estat o Prov�ncia: %c%s"
+
+#~ msgid "[SSL]: Locality: %c%s"
+#~ msgstr "[SSL]: Localitat: %c%s"
+
+#~ msgid "[SSL]: Issuer:"
+#~ msgstr "[SSL]: Emissor:"
+
+#~ msgid "[SSL]: Public key: %c%s (%d bits)"
+#~ msgstr "[SSL]: Clau p�blica: %c%s (%d bits)"
+
+#~ msgid "[SSL]: Signature type: %c%s"
+#~ msgstr "[SSL]: Tipus de firma: %c%s"
+
+#~ msgid "[SSL]: Signature contents: %c%s"
+#~ msgstr "[SSL]: Continguts de la firma: %c%s"
+
+#~ msgid "Peer X509 certificate"
+#~ msgstr "Certificat X509 de l'altre part"
+
+#~ msgid "[SSL]: The peer didn't provide a certificate"
+#~ msgstr "[SSL]: L'altre part no ha proporcionat un certificat"
+
+#~ msgid "Current transmission cipher"
+#~ msgstr "Xifrat de la transmissi� actual"
+
+#~ msgid "[SSL]: Can't find out the current cipher info"
+#~ msgstr "[SSL]: No puc trobar la informaci� de xifrat actual"
+
+#~ msgid "[%s]: [SSL]: Using certificate file %s"
+#~ msgstr "[%s]: [SSL]: Fent servir l'arxiu de certificat %s"
+
+#~ msgid ""
+#~ "[%s]: [SSL ERROR]: File I/O error while trying to use the certificate "
+#~ "file %s"
+#~ msgstr ""
+#~ "[%s]: [ERROR SSL]: Error de E/S d'arxiu mentres intentava emprar l'arxiu "
+#~ "certificat %s"
+
+#~ msgid "[%s]: [SSL ERROR]: %s"
+#~ msgstr "[%s]: [ERROR SSL]: %s"
+
+#~ msgid "[%s]: [SSL]: Using private key file %s"
+#~ msgstr "[%s]: [SSL]: Emprant arxiu de clau privada %s"
+
+#~ msgid ""
+#~ "[%s]: [SSL ERROR]: File I/O error while trying to use the private key "
+#~ "file %s"
+#~ msgstr ""
+#~ "[%s]: [ERROR SSL]: error de E/S en arxiu mentres intentava fer servir "
+#~ "l'arxiu de clau privada %s"
+
+#~ msgid "Ops... for some reason the link object has been destroyed"
+#~ msgstr "Ups... per alguna ra� l'objecte d'enlla� ha sigut destru�t"
+
+#~ msgid "Using filtered IRC protocol: Link filter is \"%Q\""
+#~ msgstr "Usant protocol IRC filtrat: El filtre d'enlla� �s \"%Q\""
+
+#~ msgid "Failed to set up the link filter \"%Q\", will try with plain IRC"
+#~ msgstr ""
+#~ "Fallida en l'inici del filtre d'enlla� \"%Q\", s'intentar� amb IRC pla"
+
+#~ msgid "Failed to start the connection: %Q"
+#~ msgstr "Fallida al comen�ar la connexi�: %Q"
+
+#~ msgid "Contacting %Q %s (%s) on port %u"
+#~ msgstr "Contactant amb %Q %s (%s) en el port %u"
+
+#~ msgid "proxy host"
+#~ msgstr "servidor proxy"
+
+#~ msgid "IRC server"
+#~ msgstr "Servidor IRC"
+
+#~ msgid "Low-level transport connection established [%s (%s:%u)]"
+#~ msgstr "Establerta connexi� de transport de baix nivell [%s (%s:%u)]"
+
+#~ msgid "Starting Secure Socket Layer handshake"
+#~ msgstr "Comen�ant la negociaci� SSL"
+
+#~ msgid "%Q established [%s (%s:%u)]"
+#~ msgstr "%Q establerta [%s (%s:%u)]"
+
+#~ msgid "Secure proxy connection"
+#~ msgstr "Connexi� segura a proxy"
+
+#~ msgid "Proxy connection"
+#~ msgstr "Connexi� a proxy"
+
+#~ msgid "Negotiating relay information"
+#~ msgstr "Negociant informacio de retransmissi�"
+
+#~ msgid "Sent connection request, waiting for acknowledgement"
+#~ msgstr "Enviat petici� de connexi�, esperant la confirmaci�"
+
+#~ msgid "Sent target host data, waiting for acknowledgement"
+#~ msgstr "Enviades les dades de la m�quina de dest�, esperant confirmaci�"
+
+#~ msgid "Sent auth method request, waiting for acknowledgement"
+#~ msgstr "Enviant petici� de m�tode d'autentificaci�, esperant confirmaci�"
+
+#~ msgid "Sent username and password, waiting for acknowledgement"
+#~ msgstr "Enviats usuari i clau, esperant confirmaci�"
+
+#~ msgid "Sent connection request, waiting for \"HTTP 200\" acknowledgement"
+#~ msgstr ""
+#~ "Enviada petici� de connexi�, esperant per a confirmaci� \"HTTP 200\""
+
+#~ msgid "[SSL]: %Q"
+#~ msgstr "[SSL]: %Q"
+
+#~ msgid "[SSL ERROR]: %Q"
+#~ msgstr "[ERROR SSL]: %Q"
+
+#~ msgid "[PROXY]: %Q"
+#~ msgstr "[PROXY]: %Q"
+
+#~ msgid "[PROXY ERROR]: %Q"
+#~ msgstr "[ERROR DE PROXY]: %Q"
+
+#~ msgid "[SOCKET]: %Q"
+#~ msgstr "[SOCKET]: %Q"
+
+#~ msgid "[SOCKET ERROR]: %Q"
+#~ msgstr "[ERROR DE SOCKET]: %Q"
+
+#~ msgid "[SOCKET WARNING]: %Q"
+#~ msgstr "[ALERTA DE SOCKET]: %Q"
+
+#~ msgid "Binding to local address %s"
+#~ msgstr "Associant-se a l'adre�a local %s"
+
+#~ msgid ""
+#~ "Binding to local address %s failed: the kernel will choose the correct "
+#~ "interface"
+#~ msgstr ""
+#~ "Ha fallat l'associaci� a l'adre�a local %s: el nucli triar� l'interf�cie "
+#~ "correcta"
+
+#~ msgid "Using HTTP protocol."
+#~ msgstr "Fent servir protocol HTTP."
+
+#~ msgid "Using SOCKSV4 protocol."
+#~ msgstr "Fent servir protocol SOCKSV4."
+
+#~ msgid "Using SOCKSV5 protocol."
+#~ msgstr "Fent servir protocol SOCKSV5."
+
+#~ msgid "We can accept auth method 0 (no auth)"
+#~ msgstr "Podem acceptar el m�tode d'autentificaci� 0 (sense auth)"
+
+#~ msgid "We can accept auth method 0 (no auth) or 2 (user/pass)"
+#~ msgstr ""
+#~ "Podem acceptar el m�tode d'autentificaci� 0 (sense auth) o 2 (usuari/clau)"
+
+#~ msgid "Proxy response: auth OK: access granted"
+#~ msgstr "Resposta del proxy: auth OK: acc�s perm�s "
+
+#~ msgid "Proxy response: Auth method OK: using method 0 (no auth)"
+#~ msgstr ""
+#~ "Resposta del proxy: M�tode d'auth OK: fent servir m�tode 0 (no auth)"
+
+#~ msgid "Proxy response: Auth method OK: using method 2 (user/pass)"
+#~ msgstr ""
+#~ "Resposta del proxy: M�tode auth OK: Fent servir m�tode 2 (usuari/clau)"
+
+#~ msgid "Proxy response: target data OK: request granted"
+#~ msgstr "Resposta del proxy: dest� de dades OK: Acc�s perm�s"
+
+#~ msgid "Proxy response: "
+#~ msgstr "Resposta del proxy: "
+
+#~ msgid "Proxy said something about \""
+#~ msgstr "El proxy ha dit alguna cosa de \""
+
+#~ msgid "\" ...that looks like an error to me..."
+#~ msgstr "\" ...aix� em sembla un error..."
+
+#~ msgid "Server X509 certificate"
+#~ msgstr "Certificat X509 del servidor"
+
+#~ msgid "The server didn't provide a certificate"
+#~ msgstr "El servidor no ha proporcionat un certificat"
+
+#~ msgid "Unable to determine the current cipher"
+#~ msgstr "Incapa� de determinar el xifrat actual"
+
+#~ msgid "Partial socket write: packet broken into smaller pieces."
+#~ msgstr "Escriptura parcial en socket: Paquet dividit a peda�os m�s petits."
+
+#~ msgid "Restore Default Script - KVIrc"
+#~ msgstr "Restaurar l'Script per defecte - KVIrc"
+
+#~ msgid ""
+#~ "You are about to restore the default script.<br>This will erase any "
+#~ "script changes you have made.<br>Do you wish to proceed?"
+#~ msgstr ""
+#~ "Es disposa a restaurar l'script per defecte.<br>Aix� esborrar� qualsevol "
+#~ "canvi que hagi fet als scripts.<br>Dessitja continuar?"
+
+#~ msgid "Remote command received (%s ...)"
+#~ msgstr "Comanda remota rebuda (%s ...)"
+
+#, fuzzy
+#~ msgid "File download failed"
+#~ msgstr "Directori d'arxius descarregats:"
+
+#, fuzzy
+#~ msgid "File download terminated"
+#~ msgstr "Arxiu descarregat: procesant..."
+
+#, fuzzy
+#~ msgid "File download from %1 terminated"
+#~ msgstr "Arxiu descarregat: procesant..."
+
+#~ msgid "Avatar download failed for %Q!%Q@%Q and url %Q: %Q"
+#~ msgstr "Fallida la desc�rrega de l'avatar per a %Q!%Q@%Q i url %Q: %Q"
+
+#~ msgid "The commandline for media type '%s' seems to be broken"
+#~ msgstr ""
+#~ "La l�nia de comandes per a el tipus de medi '%s' sembla estar malament"
+
+#~ msgid "Media type of file %s matched to '%s' but no commandline specified"
+#~ msgstr ""
+#~ "El tipus de medi de l'arxiu %s concorda amb '%s' per� no s'ha especificat "
+#~ "l�nia de comandes"
+
+#~ msgid "No idea on how to play file %s (no media type match)"
+#~ msgstr ""
+#~ "No s� com reproduir l'arxiu %s (no hi ha concordan�a en el tipus de medi)"
+
+#~ msgid "Sending out PING based lag probe"
+#~ msgstr "Enviant prova de retr�s basada en PING"
+
+#~ msgid "Sending out CTCP based lag probe"
+#~ msgstr "Enviant prova de retr�s basada en CTCP"
+
+#~ msgid "Registered lag check with reliability %u (%s)"
+#~ msgstr "Comprobaci� de retr�s registrada amb fiabilitat %u (%s)"
+
+#~ msgid "Lag check completed (%s)"
+#~ msgstr "Comprobaci� de retr�s completada (%s)"
+
+#~ msgid "Lag check aborted (%s)"
+#~ msgstr "Comprobaci� de retr�s cancel�lada (%s)"
+
+#~ msgid "Backward compatibility action for toolbar.define"
+#~ msgstr "Compatibilitat cap enrere per a toolbar.define"
+
+#~ msgid "IRC Context related actions"
+#~ msgstr "Accions relatives al Context d'IRC"
+
+#~ msgid "Generic"
+#~ msgstr "Gen�ric"
+
+#~ msgid "Generic actions"
+#~ msgstr "Accions gen�riques"
+
+#~ msgid "Settings"
+#~ msgstr "Configuracions"
+
+#~ msgid "Actions related to settings"
+#~ msgstr "Accions relacionades amb la configuraci�"
+
+#~ msgid "Scripting"
+#~ msgstr "Scripting"
+
+#~ msgid "Scripting related actions"
+#~ msgstr "Accions relacionades amb els scripts"
+
+#~ msgid "GUI"
+#~ msgstr "IGU"
+
+#~ msgid "Actions related to the Graphic User Interface"
+#~ msgstr "Accions relacionades amb la Interf�cie Gr�fica d'Usuari"
+
+#, fuzzy
+#~ msgid "IRC Channel related actions"
+#~ msgstr "Accions relatives al Context d'IRC"
+
+#~ msgid "Reconnect attempt aborted"
+#~ msgstr "Intent de reconnexi� cancel�lat"
+
+#~ msgid ""
+#~ "No servers available. Check the options dialog or use the /SERVER command"
+#~ msgstr ""
+#~ "No hi ha servidors disponibles. Comprobi el di�leg d'opcions o utilitzi "
+#~ "la comanda /SERVER"
+
+#~ msgid "No proxy hosts available, resuming direct connection"
+#~ msgstr "No hi ha servidors proxy disponibles, continuant connexi� directa"
+
+#~ msgid "Connection attempt failed [%s]"
+#~ msgstr "Intent de connexi� fallida [%s]"
+
+#~ msgid "Will attempt to reconnect in %d seconds"
+#~ msgstr "Intentar� reconectar en %d segons"
+
+#~ msgid "%d of %d"
+#~ msgstr "%d de %d"
+
+#~ msgid "Maximum number of reconnect attempts reached (%d): giving up"
+#~ msgstr ""
+#~ "S'ha arribat al nombre m�xim d'intents de reconnexi� (%d): desisteixo"
+
+#~ msgid ""
+#~ "The connection attempt failed while using a cached IP address for the "
+#~ "current server"
+#~ msgstr ""
+#~ "L'intent de connexi� ha fallat mentres emprava una direcci� IP des de la "
+#~ "cach� pel servidor actual"
+
+#~ msgid "The problem *might* be caused by an updated DNS entry"
+#~ msgstr "El problema *podria* estar causant per una entrada DNS actualitzada"
+
+#~ msgid "Try reconnecting with caching disabled"
+#~ msgstr "Intenta reconectar amb la cach� desactivada"
+
+#~ msgid "Secure connection"
+#~ msgstr "Connexi� segura"
+
+#~ msgid "Connection terminated [%s (%s:%u)]"
+#~ msgstr "Connexi� acabada [%s (%s:%u)]"
+
+#~ msgid "The connection terminated unexpectedly. Trying to reconnect..."
+#~ msgstr "La connexi� ha finalitzat inesperadament. Intentant reconectar..."
+
+#~ msgid "Sent QUIT, waiting for the server to close the connection..."
+#~ msgstr "Enviant QUIT, esperant a que el servidor tanqui la connexi�..."
+
+#, fuzzy
+#~ msgid "No "
+#~ msgstr "No"
+
+#, fuzzy
+#~ msgid " symbol exported: not a kvirc module ?"
+#~ msgstr ""
+#~ "No est� exportat el s�mbol kvirc_module_info: �no �s un m�dul kvirc?"
+
+#~ msgid "Failed to execute the init routine"
+#~ msgstr "Errada al executar la ruta d'inici"
+
+#~ msgid "Loaded module '%s' (%s)"
+#~ msgstr "Carregant el m�dul '%s' (%s)"
+
+#~ msgid "Unloaded module '%s'"
+#~ msgstr "Descarregant el m�dul '%s'"
+
+#~ msgid "This option is also available as"
+#~ msgstr "Aquesta opci� tamb� est� disponible com a"
+
+#~ msgid "Channel mode"
+#~ msgstr "Mode del canal"
+
+#~ msgid "Split View"
+#~ msgstr "Dividir Vista"
+
+#~ msgid "User List"
+#~ msgstr "Llista d'Usuaris"
+
+#, fuzzy
+#~ msgid "Ban Editor"
+#~ msgstr "Editor Raw"
+
+#, fuzzy
+#~ msgid "Ban Exception Editor"
+#~ msgstr "Mostrar Editor d'Excepcions a Prohibicions"
+
+#, fuzzy
+#~ msgid "Invite Exception Editor"
+#~ msgstr "Mostrar Editor d'Excepcions a Invitacions"
+
+#, fuzzy
+#~ msgid "Mode Editor"
+#~ msgstr "Mostrar Editor de Mode"
+
+#~ msgid "said something recently"
+#~ msgstr "ha dit alguna cosa recentment"
+
+#~ msgid "is talking"
+#~ msgstr "est� parlant"
+
+#~ msgid "and"
+#~ msgstr "i"
+
+#~ msgid "were talking recently"
+#~ msgstr "estaven parlant recentment"
+
+#~ msgid "are talking"
+#~ msgstr "estan parlant"
+
+#~ msgid "and other %1 users"
+#~ msgstr "i uns altres %1 usuaris"
+
+#~ msgid "Dead channel"
+#~ msgstr "Canal mort"
+
+#~ msgid "operator"
+#~ msgstr "operador"
+
+#~ msgid "operators"
+#~ msgstr "operadors"
+
+#~ msgid "active user"
+#~ msgstr "usuari actiu"
+
+#~ msgid "active users"
+#~ msgstr "usuaris actius"
+
+#~ msgid "hot user"
+#~ msgstr "usuari actiu"
+
+#~ msgid "hot users"
+#~ msgstr "usuaris actius"
+
+#~ msgid "channel owner"
+#~ msgstr "propietari del canal"
+
+#~ msgid "channel owners"
+#~ msgstr "propietaris del canal"
+
+#~ msgid "channel administrator"
+#~ msgstr "administrador del canal"
+
+#~ msgid "channel administrators"
+#~ msgstr "administradors del canal"
+
+#~ msgid "half-operator"
+#~ msgstr "semioperador"
+
+#~ msgid "half-operators"
+#~ msgstr "semioperadors"
+
+#~ msgid "voiced user"
+#~ msgstr "usuari amb veu"
+
+#~ msgid "voiced users"
+#~ msgstr "usuaris amb veu"
+
+#~ msgid "user-operator"
+#~ msgstr "usuari operador"
+
+#~ msgid "user-operators"
+#~ msgstr "usuaris operadors"
+
+#~ msgid "user total"
+#~ msgstr "usuari total"
+
+#~ msgid "users total"
+#~ msgstr "usuaris totals"
+
+#~ msgid "No activity"
+#~ msgstr "Sense activitat"
+
+#~ msgid "Minimal activity"
+#~ msgstr "Activitat m�nima"
+
+#~ msgid "Very low activity"
+#~ msgstr "Activitat molt baixa"
+
+#~ msgid "Might be low activity"
+#~ msgstr "Pot ser de baixa activitat"
+
+#~ msgid "Low activity"
+#~ msgstr "Baixa activitat"
+
+#~ msgid "Might be medium activity"
+#~ msgstr "Pot ser d'activitat mitja"
+
+#~ msgid "Medium activity"
+#~ msgstr "Activitat mitja"
+
+#~ msgid "Might be high activity"
+#~ msgstr "Pot ser d'alta activitat"
+
+#~ msgid "High activity"
+#~ msgstr "Alta activitat"
+
+#~ msgid "Might be very high activity"
+#~ msgstr "Pot ser de molt alta activitat"
+
+#~ msgid "Very high activity"
+#~ msgstr "Molt alta activitat"
+
+#~ msgid "Might be flooded with messages"
+#~ msgstr "Pots ser saturat amb missatges"
+
+#~ msgid "Flooded with messages"
+#~ msgstr "Saturat amb missatges"
+
+#~ msgid "human"
+#~ msgstr "humana"
+
+#~ msgid "[Dead channel]"
+#~ msgstr "[Canal mort]"
+
+#~ msgid " on "
+#~ msgstr " en "
+
+#~ msgid ""
+#~ "The crypto engine was unable to encrypt the current message (%Q): %s, no "
+#~ "data sent to the server"
+#~ msgstr ""
+#~ "El motor de xifrat no ha estat capa� de xifrar el seg�ent missatge (%Q): %"
+#~ "s, no s'han enviat dades al servidor"
+
+#~ msgid "Sent part request, waiting for reply..."
+#~ msgstr "Enviada sol�licitud de partida, esperant resposta..."
+
+#~ msgid "<b>Channel mode:</b>"
+#~ msgstr "<b>Mode de canal:</b>"
+
+#~ msgid "<br><b>Key:</b> %s"
+#~ msgstr "<br><b>Clau:</b> %s"
+
+#~ msgid "<br><b>Limit:</b> %s"
+#~ msgstr "<br><b>L�mit:</b> %s"
+
+#~ msgid "Channel synchronized in %d.%d seconds"
+#~ msgstr "Canal sincronitzat en %d.%d segons"
+
+#~ msgid "No topic message has been received from the server yet"
+#~ msgstr "El servidor no ha enviat encara un missatge de tema"
+
+#~ msgid "Channel topic:"
+#~ msgstr "Tema del canal:"
+
+#~ msgid "Set by"
+#~ msgstr "Posat per"
+
+#~ msgid "Set on"
+#~ msgstr "Posat el"
+
+#~ msgid "Double-click to edit..."
+#~ msgstr "Doble click per a editar..."
+
+#~ msgid "No topic is set"
+#~ msgstr "No s'ha posat tema de canal"
+
+#~ msgid "Double-click to set..."
+#~ msgstr "Doble click per a posar..."
+
+#, fuzzy
+#~ msgid "History"
+#~ msgstr "directori"
+
+#~ msgid "Commit Changes"
+#~ msgstr "Acceptar Canvis"
+
+#~ msgid "Discard Changes"
+#~ msgstr "Descartar Canvis"
+
+#~ msgid "Copy to clipboard"
+#~ msgstr "Copiar al portapapers"
+
+#~ msgid "CTCP Page - KVIrc"
+#~ msgstr "P�gina CTCP - KVIrc"
+
+#~ msgid "Active Bans"
+#~ msgstr "Prohibicions Actives"
+
+#~ msgid "Active Invite Exceptions"
+#~ msgstr "Excepcions a Invitaci� Actives"
+
+#~ msgid "Active Ban Exceptions"
+#~ msgstr "Excepcions a Prohibici� Actives"
+
+#~ msgid "Mask"
+#~ msgstr "M�scara"
+
+#~ msgid "Set at"
+#~ msgstr "Posat el"
+
+#~ msgid "Window List"
+#~ msgstr "Llista de Finestres"
+
+#~ msgid ""
+#~ "<b>Shift+Drag</b> or <b>Ctrl+Drag</b> to move the applet "
+#~ "around<br><b>Right click</b> to see the other options"
+#~ msgstr ""
+#~ "<b>Maj�s+Arrossegar</b> o <b>Ctrl+Arrossegar</b> per a moure "
+#~ "l'applet<br><b>Bot� dret</b> per a veure altres opcions"
+
+#~ msgid "<b>Right click</b> to add/remove applets"
+#~ msgstr "<b>Bot� dret</b> per a afegir/treure applets"
+
+#~ msgid "Remove %Q"
+#~ msgstr "Treure %Q"
+
+#~ msgid "Add Applet"
+#~ msgstr "Afegir Applet"
+
+#~ msgid ""
+#~ "Drag the applet while holding the Shift or Ctrl key to move it to the "
+#~ "desired position"
+#~ msgstr ""
+#~ "Arrossegar l'applet mentres es mant� presa la tecla Maj�scula o Ctrl per "
+#~ "a moure'l a la posici� desitjada"
+
+#~ msgid "Connection in progress..."
+#~ msgstr "Connexi� en progr�s..."
+
+#~ msgid "Login in progress..."
+#~ msgstr "Autentificaci� en progr�s..."
+
+#~ msgid "Not connected"
+#~ msgstr "Sense connexi�"
+
+#~ msgid "No IRC context"
+#~ msgstr "No hi ha context d'IRC"
+
+#, fuzzy
+#~ msgid "Crypting"
+#~ msgstr "Criptografia"
+
+#~ msgid "Private Text Encoding"
+#~ msgstr "Codificaci� de Text Privada"
+
+#~ msgid "Ops...I've accidentally lost the crypting engine..."
+#~ msgstr "Ups... he perdut accidentalment el motor de xifrat..."
+
+#~ msgid "List of window types available in this release of KVIrc:"
+#~ msgstr "Llista de tipus de finestres disponibles en aquesta versi� de KVirc"
+
+#~ msgid "Use Default Encoding"
+#~ msgstr "Emprar Codificaci� per Defecte"
+
+#~ msgid "Standard"
+#~ msgstr "Est�ndard"
+
+#~ msgid "Smart"
+#~ msgstr "Intel�ligent"
+
+#~ msgid "&Undock"
+#~ msgstr "Treure anclatje"
+
+#~ msgid "&Dock"
+#~ msgstr "Anclar"
+
+#~ msgid "Mi&nimize"
+#~ msgstr "Mi&nimitzat"
+
+#~ msgid "Ma&ximize"
+#~ msgstr "Ma&ximitzat"
+
+#~ msgid "&Restore"
+#~ msgstr "&Restaurar"
+
+#~ msgid "Text &Encoding"
+#~ msgstr "Codificaci� de Text"
+
+#~ msgid "Sa&ve Window Properties"
+#~ msgstr "Guardar Propietats de Finestra"
+
+#~ msgid "Search tools"
+#~ msgstr "Eines de cerca"
+
+#~ msgid "### Log session terminated at %s ###"
+#~ msgstr "### Sessi� de registre acabada a les %s ###"
+
+#~ msgid "### Log session started at %s ###"
+#~ msgstr "### Sessi� de registre iniciada a les %s ###"
+
+#~ msgid "### Existing data buffer:"
+#~ msgstr "### Buffer de dades existent:"
+
+#~ msgid "### End of existing data buffer."
+#~ msgstr "### Fi del buffer de dades existent."
+
+#~ msgid "Hide Find Window"
+#~ msgstr "Amagar Finestra de Cerca"
+
+#~ msgid "Show Find Window"
+#~ msgstr "Mostrar Finestra de Cerca"
+
+#~ msgid "Zoom In"
+#~ msgstr "Ampliar"
+
+#~ msgid "Zoom Out"
+#~ msgstr "Reduir"
+
+#~ msgid "Choose Temporary Font..."
+#~ msgstr "Triar Font Temporal..."
+
+#~ msgid "Choose Temporary Background..."
+#~ msgstr "Triar Fons Temporal..."
+
+#, fuzzy
+#~ msgid "Reset Temporary Background"
+#~ msgstr "Triar Fons Temporal..."
+
+#~ msgid "Clear Buffer"
+#~ msgstr "Netejar Buffer"
+
+#~ msgid "Choose the background image..."
+#~ msgstr "Triar la imatge de fons..."
+
+#~ msgid "Invalid image"
+#~ msgstr "Imatge no v�lida"
+
+#~ msgid "Failed to load the selected image"
+#~ msgstr "Ha fallat la c�rrega de l'arxiu d'imatge triat"
+
+#~ msgid "Pos %d"
+#~ msgstr "Pos %d"
+
+#~ msgid "Not found"
+#~ msgstr "No trobat"
+
+#~ msgid "Looking up host %Q..."
+#~ msgstr "Buscant m�quina %Q..."
+
+#~ msgid "Double-click to open this link"
+#~ msgstr "Doble click per a obrir aquest enlla�"
+
+#~ msgid "Unable to look it up hostname: Hostname appears to be masked"
+#~ msgstr ""
+#~ "Incapa� d'extreure el nom de m�quina: sembla que el nom de la m�quina "
+#~ "est� emmascarat"
+
+#~ msgid "Unable to look it up hostname: Unknown host"
+#~ msgstr "Incapa� d'extreure el nom de la m�quina: m�quina desconeguda"
+
+#~ msgid ""
+#~ "Double-click to look up this hostname<br>Right-click to view other options"
+#~ msgstr ""
+#~ "Faci doble click per a buscar aquesta m�quina<br>Click dret per a veure "
+#~ "altres opcions"
+
+#~ msgid "Server appears to be a network hub<br>"
+#~ msgstr "El servidor semblar ser un concentrador de xarxa<br>"
+
+#~ msgid "Unknown server<br>"
+#~ msgstr "Servidor desconegut<br>"
+
+#~ msgid "Double-click to read the MOTD<br>Right-click to view other options"
+#~ msgstr ""
+#~ "Doble click per a llegir el MOTD<br>Bot� dret per a veure altres opcions"
+
+#~ msgid "Double-click to set<br>"
+#~ msgstr "Doble click per a posar<br>"
+
+#~ msgid "You're not an operator: You may not change channel modes"
+#~ msgstr "Vost� no �s operador: No pot canviar els modes de canal"
+
+#~ msgid "Nothing known about %Q"
+#~ msgstr "No s� res sobre %Q"
+
+#~ msgid "Nothing known about %Q (no connection)"
+#~ msgstr "No s� res sobre %Q (no hi ha connexi�)"
+
+#~ msgid "<b>%Q</b>: +%Q (%u users)<hr>%Q"
+#~ msgstr "<b>%Q</b>: +%Q (%u usuaris)<hr>%Q"
+
+#~ msgid "Double-click to join %Q<br>Right click to view other options"
+#~ msgstr ""
+#~ "Doble click per a unir-se a %Q<br>Bot� dret per a veure altres opcions"
+
+#~ msgid "<b>Double-click:</b><br>%Q"
+#~ msgstr "<b>Doble click:</b><br>%Q"
+
+#~ msgid "<b>Middle-click:</b><br>%Q"
+#~ msgstr "<b>Bot� central:</b><br>%Q"
+
+#~ msgid "<b>Right-click:</b><br>%Q"
+#~ msgstr "<b>Bot� dret:</b><br>%Q"
+
+#~ msgid "Toolbars"
+#~ msgstr "Barres d'eines"
+
+#~ msgid "Orientation"
+#~ msgstr "Orientaci�"
+
+#~ msgid "Detached"
+#~ msgstr "Desassociar"
+
+#~ msgid "Flat"
+#~ msgstr "Pla"
+
+#~ msgid "Icon Size"
+#~ msgstr "Mida d'Icona"
+
+#~ msgid "Small (22x22)"
+#~ msgstr "Petit (22x22)"
+
+#~ msgid "Large (32x32)"
+#~ msgstr "Gran (32x32)"
+
+#~ msgid "Show User List"
+#~ msgstr "Mostrar Llista d'Usuaris"
+
+#~ msgid "Query Targets"
+#~ msgstr "Destins per a Privats"
+
+#, fuzzy
+#~ msgid "Query target:"
+#~ msgstr "Destins per a Privats"
+
+#, fuzzy
+#~ msgid "%1 is using irc server: %2 (%3 hops)"
+#~ msgstr "Emprant servidor <b>%1</b>"
+
+#, fuzzy
+#~ msgid "%1 is using irc server: %2"
+#~ msgstr "Emprant servidor <b>%1</b>"
+
+#, fuzzy
+#~ msgid "[Dead Query]"
+#~ msgstr "[Privat Mort]"
+
+#, fuzzy
+#~ msgid ", using server %1"
+#~ msgstr "Emprant servidor <b>%1</b>"
+
+#, fuzzy
+#~ msgid " (%1 hops)"
+#~ msgstr "%1 salts"
+
+#, fuzzy
+#~ msgid "Common channels: %2"
+#~ msgstr "Unir-se a Canals"
+
+#~ msgid ""
+#~ "The target of this query has changed from \r!n\r%Q\r [%Q@\r!h\r%Q\r] to "
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+#~ msgstr ""
+#~ "El dest� d'aquest privat ha canviat de \r!n\r%Q\r [%Q@\r!h\r%Q\r] a \r!n\r"
+#~ "%Q\r [%Q@\r!h\r%Q\r]"
+
+#~ msgid "Common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "Canals comuns per a \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid "No common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+#~ msgstr "No hi ha canals comuns per a \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#~ msgid "[Dead query]"
+#~ msgstr "[Privat Mort]"
+
+#~ msgid "This query has no active targets, no message sent"
+#~ msgstr "Aquest privat no t� destins actius, no s'ha enviat el missatge"
+
+#~ msgid "No connection"
+#~ msgstr "Sense connexi�"
+
+#~ msgid "IRC Context"
+#~ msgstr "Context d'IRC"
+
+#~ msgid "Lag: %d.%d%d"
+#~ msgstr "Retr�s: %d.%d%d"
+
+#~ msgid "Lag: ?.??"
+#~ msgstr "Retr�s: ?.??"
+
+#~ msgid "away"
+#~ msgstr "absent"
+
+#~ msgid "In progress..."
+#~ msgstr "En progr�s..."
+
+#~ msgid "Clipboard"
+#~ msgstr "Portapapers"
+
+#~ msgid "line break"
+#~ msgstr "salt de l�nia"
+
+#~ msgid "line breaks"
+#~ msgstr "salts de l�nia"
+
+#~ msgid "&Paste"
+#~ msgstr "&Enganxar"
+
+#~ msgid "Paste (Slowly)"
+#~ msgstr "Enganxar (lentament)"
+
+#, fuzzy
+#~ msgid "Paste &File"
+#~ msgstr "Enganxar Dintre"
+
+#, fuzzy
+#~ msgid "Stop Paste"
+#~ msgstr "&Enganxar"
+
+#~ msgid "Clear"
+#~ msgstr "Netejar"
+
+#~ msgid "Select All"
+#~ msgstr "Seleccionar Tot"
+
+#~ msgid "%d matches: %Q"
+#~ msgstr "%d coincid�ncies: %Q"
+
+#~ msgid "No matches"
+#~ msgstr "Sense coincid�ncies"
+
+#~ msgid "Show History<br>&lt;Ctrl+PageUp&gt;"
+#~ msgstr "Mostrar Hist�ria<br>&lt;Ctrl+PagArr&gt;"
+
+#~ msgid "Show Icons Popup<br>&lt;Ctrl+I&gt;<br>See also /help texticons"
+#~ msgstr ""
+#~ "Mostrar Men� Emergent d'Icones<br>&lt;Ctrl+I&gt;<br>Veure tamb� /help "
+#~ "texticons"
+
+#~ msgid "Multi-line Editor<br>&lt;Ctrl+Backspace&gt;"
+#~ msgstr "Editor Multil�nia<br>&lt;Ctrl+Borrar&gt;"
+
+#, fuzzy
+#~ msgid "Confirm Multiline Message"
+#~ msgstr "Missatge multim�dia"
+
+#, fuzzy
+#~ msgid "<Ctrl+Return>; submits, <Ctrl+Backspace>; hides this editor"
+#~ msgstr ""
+#~ "&lt;Ctrl+Intro&gt; introdueix el text, &lt;Ctrl+Borrar&gt; amaga aquest "
+#~ "editor"
+
+#~ msgid "&Cascade Windows"
+#~ msgstr "Finestres en &Cascada"
+
+#~ msgid "Cascade &Maximized"
+#~ msgstr "Cascada &Maximitzada"
+
+#~ msgid "&Tile Windows"
+#~ msgstr "Finestres en Mosaic"
+
+#~ msgid "&Auto Tile"
+#~ msgstr "Posar en mosaic &Autom�ticament"
+
+#~ msgid "Anodine's Full Grid"
+#~ msgstr "Reixa Completa d'Anodine"
+
+#~ msgid "Pragma's Horizontal 4-Grid"
+#~ msgstr "Reixa-a-4 Horitzontal de Pragma"
+
+#~ msgid "Pragma's Vertical 4-Grid"
+#~ msgstr "Reixa-a-4 Vertical de Pragma"
+
+#~ msgid "Pragma's Horizontal 6-Grid"
+#~ msgstr "Reixa-a-6 Horitzontal de Pragma"
+
+#~ msgid "Pragma's Vertical 6-Grid"
+#~ msgstr "Reixa-a-6 Vertical de Pragma"
+
+#~ msgid "Pragma's Horizontal 9-Grid"
+#~ msgstr "Reixa-a-9 Horitzontal de Pragma"
+
+#~ msgid "Pragma's Vertical 9-Grid"
+#~ msgstr "Reixa-a-9 Vertical de pragma"
+
+#~ msgid "Tile Met&hod"
+#~ msgstr "M�tode de mosaic"
+
+#~ msgid "Expand &Vertically"
+#~ msgstr "Expandir &Verticalment"
+
+#~ msgid "Expand &Horizontally"
+#~ msgstr "Expandir &Horitzontalment"
+
+#~ msgid "Mi&nimize All"
+#~ msgstr "Mi&nimitzar Tot"
+
+#~ msgid "What's this?"
+#~ msgstr "�Qu� �s aix�?"
+
+#~ msgid "Notify List"
+#~ msgstr "Llista de Notificacions"
+
+#~ msgid "Part All Channels"
+#~ msgstr "Sortir de Tots els Canals"
+
+#~ msgid "Close All Queries"
+#~ msgstr "Tancar Tots els Privats"
+
+#~ msgid "Unhighlight All Windows"
+#~ msgstr "Treure ressaltat de totes les finestres"
+
+#~ msgid "Unhighlight All Channels"
+#~ msgstr "Treure ressaltat de tots el canals"
+
+#~ msgid "Unhighlight All Queries"
+#~ msgstr "Treure ressaltat de tots els privats"
+
+#~ msgid "Registered as"
+#~ msgstr "Registrat com a"
+
+#~ msgid "Matched by"
+#~ msgstr "Coincidents amb"
+
+#~ msgid "On <b>"
+#~ msgstr "A <b>"
+
+#~ msgid "Using server <b>%1</b>"
+#~ msgstr "Emprant servidor <b>%1</b>"
+
+#~ msgid "%1 hops"
+#~ msgstr "%1 salts"
+
+#~ msgid "Confirmation - KVIrc"
+#~ msgstr "Confirmaci� - KVIrc"
+
+#~ msgid ""
+#~ "You have just attempted to close a console window<br>with an active "
+#~ "connection inside.<br>Are you sure you wish to terminate the connection?"
+#~ msgstr ""
+#~ "Ha intentat tancar una finestra de consola<br>amb una connexi� activa."
+#~ "<br>�Est� segur que dessitja finalitzar la connexi�?"
+
+#~ msgid "&Always"
+#~ msgstr "Sempre"
+
+#~ msgid ""
+#~ "You have just attempted to close the last console window.<br>Are you sure "
+#~ "you wish to quit KVIrc?"
+#~ msgstr ""
+#~ "Ha intentat tancar la �ltima finestra de consola.<br>�Est� segur que "
+#~ "dessitja sortir de KVIrc?"
+
+#~ msgid "Failed to load avatar with name \"%Q\" and local path \"%Q\""
+#~ msgstr "Ha fallat la c�rrega del avatar amb nom \"%Q\"i ruta local \"%Q\""
+
+#~ msgid "channels"
+#~ msgstr "canals"
+
+#~ msgid "query"
+#~ msgstr "privat"
+
+#~ msgid "queries"
+#~ msgstr "privats"
+
+#~ msgid "Connected since"
+#~ msgstr "Connectant des de"
+
+#~ msgid "Online for"
+#~ msgstr "Conectat durant"
+
+#~ msgid "Server idle for"
+#~ msgstr "Servidor esperant durant"
+
+#~ msgid "Script"
+#~ msgstr "Script"
+
+#~ msgid "The file %s already exists.<br>Do you wish to overwrite it?"
+#~ msgstr "El arxiu %s ja existeix.<br>�Sobreescriure-ho?"
+
+#~ msgid "File Exists - KVIrc"
+#~ msgstr "El Arxiu Existeix - KVIrc"
+
+#~ msgid "Channel Modes"
+#~ msgstr "Modes de Canal"
+
+#~ msgid "There are active connections, are you sure you wish to "
+#~ msgstr "Existeixen connexions actives, �est� segur que dessitja "
+
+#~ msgid "quit KVIrc?"
+#~ msgstr "sortir de KVIrc?"
+
+#~ msgid "Show %1"
+#~ msgstr "Mostrar %1"
+
+#~ msgid "Customize..."
+#~ msgstr "Personalitzar..."
+
+#~ msgid "Away Indicator"
+#~ msgstr "Indicador d'absent"
+
+#~ msgid "Away since"
+#~ msgstr "Aussent des de"
+
+#~ msgid "Double click to leave away mode"
+#~ msgstr "Doble click per a abandonar el mode absent"
+
+#~ msgid "Not away"
+#~ msgstr "Present"
+
+#~ msgid "Double click to enter away mode"
+#~ msgstr "Doble click per a entrar en mode absent"
+
+#~ msgid "Last checked %d mins %d secs ago"
+#~ msgstr "�ltima comprobaci� realitzada fa %d min %d segs"
+
+#~ msgid "Lag measure not available yet"
+#~ msgstr "La mitja de retr�s no est� disponible encara"
+
+#~ msgid "Lag meter engine disabled"
+#~ msgstr "Motor de medici� del retr�s deshabilitat"
+
+#~ msgid "Double click to enable it"
+#~ msgstr "Doble click per a habilitar-lo"
+
+#~ msgid "Lag Indicator"
+#~ msgstr "Indicador de Retr�s"
+
+#~ msgid "Simple Clock"
+#~ msgstr "Rellotge Senzill"
+
+#, fuzzy
+#~ msgid "Show total connection time"
+#~ msgstr "Mostrar el temps de sincronitzaci� del canal"
+
+#~ msgid "Connection Timer"
+#~ msgstr "Cron�metre de Connexi�"
+
+#~ msgid "Unloadable: %s"
+#~ msgstr "No carregable: %s"
+
+#~ msgid "Choose a File - KVIrc"
+#~ msgstr "Trii un Arxiu - KVIrc"
+
+#~ msgid "A&dd"
+#~ msgstr "Afegir"
+
+#, fuzzy
+#~ msgid "Sample Text"
+#~ msgstr "Exemple"
+
+#~ msgid "Joined on <b>%1</b>"
+#~ msgstr "Unit el <b>%1</b>"
+
+#~ msgid "Quiet for <b>%1h %2m %3s</b>"
+#~ msgstr "Callat des de <b>%1h %2m %3s</b>"
+
+#~ msgid "Cryptography/text transformation"
+#~ msgstr "Transformaci� Criptogr�fica/textual"
+
+#~ msgid "Use the crypt engine"
+#~ msgstr "Utilitzar el motor de xifrat"
+
+#~ msgid "Encrypt key:"
+#~ msgstr "Clau de xifrat:"
+
+#~ msgid "Hex"
+#~ msgstr "Hex"
+
+#~ msgid "Enable decryption"
+#~ msgstr "Activar desxifrat"
+
+#~ msgid "Decrypt key:"
+#~ msgstr "Clau de desxifrat"
+
+#~ msgid "Sorry, no crypt engines available"
+#~ msgstr "Ho sento, no hi ha motors de xifrat disponibles"
+
+#~ msgid "Crypt: Can't create an engine instance: crypting disabled"
+#~ msgstr "Xifrat: No puc crear una inst�ncia del motor: xifrat desactivat"
+
+#~ msgid "Crypt: Can't initialize the engine :%s"
+#~ msgstr "Xifrat: No puc inicialitzar el motor :%s"
+
+#~ msgid ""
+#~ "Crypt: You have to enable encryption and/or decryption for the engine to "
+#~ "work"
+#~ msgstr ""
+#~ "Xifrat: Ha d'activar el xifrat i/o desxifrat per a que el motor funcioni"
+
+#~ msgid "Choose image ..."
+#~ msgstr "Escull imatge..."
+
+#~ msgid "Builtin images"
+#~ msgstr "Imatges integrades"
+
+#~ msgid "Small icons"
+#~ msgstr "Icones petites"
+
+#~ msgid "Full path"
+#~ msgstr "Ruta completa"
+
+#~ msgid "directory"
+#~ msgstr "directori"
+
+#~ msgid "pixels"
+#~ msgstr "p�xels"
+
+#~ msgid "bytes"
+#~ msgstr "bytes"
+
+#~ msgid "<b><font color=\"#EAEAEA\" size=\"-1\">Find Text</font></b>"
+#~ msgstr "<b><font color=\"#EAEAEA\" size=\"-1\">Cercar Text</font></b>"
+
+#~ msgid "&Regular expression"
+#~ msgstr "Expressi� &regular"
+
+#~ msgid "E&xtended regexp."
+#~ msgstr "E&xpressi� regular estesa"
+
+#~ msgid "C&ase sensitive"
+#~ msgstr "No distingeix m&aj�s/min�s"
+
+#~ msgid "Find &Prev."
+#~ msgstr "Buscar Anterior"
+
+#~ msgid "&Find Next"
+#~ msgstr "Buscar Seg�ent"
+
+#~ msgid "Set &All"
+#~ msgstr "Tri&ar Tot"
+
+#~ msgid "Set &None"
+#~ msgstr "&No Triar Res"
+
+#~ msgid "&Load From..."
+#~ msgstr "Carregar Des de..."
+
+#~ msgid "&Save As..."
+#~ msgstr "Guardar Com a.."
+
+#~ msgid "Filter"
+#~ msgstr "Filtre"
+
+#~ msgid "Select a Filter File"
+#~ msgstr "Seleccioni un Arxiu de Filtre"
+
+#~ msgid "Can't open the filter file %s for reading."
+#~ msgstr "No puc obrir l'arxiu de filtre %s per a lectura."
+
+#~ msgid "Select a Name for the Filter File"
+#~ msgstr "Trii un Nom per l'Arxiu de Filtre"
+
+#~ msgid "Failed to write the filter file %s (IO Error)"
+#~ msgstr "Ha fallat a l'escriure l'arxiu de filtre %s (Error E/S)"
+
+#~ msgid "Can't open the filter file %s for writing"
+#~ msgstr "No puc obrir l'arxiu de filtre %s per a escriptura"
+
+#~ msgid "Scri&pting"
+#~ msgstr "Scri&pting"
+
+#~ msgid "&Tools"
+#~ msgstr "Eines"
+
+#~ msgid "&Settings"
+#~ msgstr "Opcion&s"
+
+#~ msgid "&Window"
+#~ msgstr "Finestra"
+
+#~ msgid "&Help Browser (Panel)"
+#~ msgstr "Ajuda (Panell de)"
+
+#~ msgid "Help Browser (&Window)"
+#~ msgstr "Ajuda (Finestra)"
+
+#~ msgid "&Tip of the Day"
+#~ msgstr "Consell del Dia"
+
+#~ msgid "About &KVIrc"
+#~ msgstr "Sobre &KVIrc"
+
+#~ msgid "KVIrc Home&page"
+#~ msgstr "P�gina de KVIrc"
+
+#~ msgid "Report a Bug"
+#~ msgstr "Informar d'un Bug"
+
+#~ msgid "Show StatusBar"
+#~ msgstr "Mostrar Barra d'Estat"
+
+#~ msgid "Restore &Default Script"
+#~ msgstr "Restaurar Script per &Defecte"
+
+#~ msgid "New &Connection To"
+#~ msgstr "Nova &Connexi� a"
+
+#~ msgid "Hide &Dock Icon"
+#~ msgstr "Amagar Icona &d'Anclatje"
+
+#~ msgid "Show &Dock Icon"
+#~ msgstr "Mostrar Icona d'Anclatje"
+
+#~ msgid "&Other..."
+#~ msgstr "Altres..."
+
+#~ msgid "Show &Icon Table"
+#~ msgstr "Mostrar Taula d'&Icones"
+
+#~ msgid "Open &Terminal"
+#~ msgstr "Obrir &Terminal"
+
+#~ msgid "Success"
+#~ msgstr "Acomplit"
+
+#~ msgid "Internal error"
+#~ msgstr "Error intern"
+
+#~ msgid "Unknown command"
+#~ msgstr "Comanda desconeguda"
+
+#~ msgid "Missing closing brace"
+#~ msgstr "Falta la clau de tancament"
+
+#~ msgid "Unexpected end of command in string"
+#~ msgstr "Fi de comanda inesperada a la cadena"
+
+#~ msgid "Unexpected end of command in dictionary key"
+#~ msgstr "Fi de comanda inesperada en la clau de diccionari"
+
+#~ msgid "Switch dash without switch letter"
+#~ msgstr "Barra de canvi sense lletra de canvi"
+
+#~ msgid "Unknown function"
+#~ msgstr "Funci� desconeguda"
+
+#~ msgid "Unexpected end of command in parenthesis"
+#~ msgstr "Fi de comanda inesperat entre par�ntesis"
+
+#~ msgid "Unexpected end of command in function parameters"
+#~ msgstr "Fi de comanda inesperat en par�metres de funci�"
+
+#~ msgid "Missing variable name"
+#~ msgstr "Falta el nom de la variable"
+
+#~ msgid "Variable or identifier expected"
+#~ msgstr "S'esperava una variable o identificador"
+
+#~ msgid "Left operand is not a number"
+#~ msgstr "El operand de l'esquerra no �s un n�mero"
+
+#~ msgid "Multiple operations not supported for numeric operators"
+#~ msgstr "Els operadors num�rics no suporten operacions m�ltiples"
+
+#~ msgid "Modulo by zero"
+#~ msgstr "M�dul per zero"
+
+#~ msgid "Right operand is not a number"
+#~ msgstr "El operand de la dreta no �s un n�mero"
+
+#~ msgid "Unterminated expression (missing ')' ?)"
+#~ msgstr "Expressi� incabada (falta un ')' ?)"
+
+#~ msgid "Unterminated subexpression (Parenthesis mismatch)"
+#~ msgstr "Subexpressi� inacabada (Els par�ntesis no concorden)"
+
+#~ msgid "Unexpected character"
+#~ msgstr "Car�cter inesperat"
+
+#~ msgid "No host to resolve"
+#~ msgstr "No hi ha tal m�quina"
+
+#~ msgid "(DNS Internal) Unsupported address family"
+#~ msgstr "(DNS intern) Fam�lia de direcci� no suportada"
+
+#~ msgid "Valid name but the host has no IP address"
+#~ msgstr "Nom v�lid per� la m�quina no t� adre�a IP"
+
+#~ msgid "Unrecoverable nameserver error (crashed ?)"
+#~ msgstr "Error irrecuperable del servidor de noms(�S'ha penjat?)"
+
+#~ msgid "Dns temporaneous fault (try again)"
+#~ msgstr "Errada temporal de DNS (prova-ho un altre vegada)"
+
+#~ msgid "(DNS Internal) Bad flags"
+#~ msgstr "(DNS intern) Par�metres incorrectes"
+
+#~ msgid "(DNS Internal) Out of memory"
+#~ msgstr "(DNS intern) Sense mem�ria"
+
+#~ msgid "(DNS Internal) Service not supported"
+#~ msgstr "(DNS intern) Servei no suportat"
+
+#~ msgid "Unknown node (host not found)"
+#~ msgstr "Node desconegut (m�quina no trobada)"
+
+#~ msgid "(DNS Internal) Unsupported socket type"
+#~ msgstr "(DNS intern) Tipus de socket no suportat"
+
+#~ msgid "Dns query failed"
+#~ msgstr "Petici� DNS fallida"
+
+#~ msgid "This KVIrc executable has no IPV6 support"
+#~ msgstr "Aquest executable de KVirc no t� suport IPv6"
+
+#~ msgid "Host not found"
+#~ msgstr "M�quina no trobada"
+
+#~ msgid "(DNS Internal) IPC failure (slave data corrupted)"
+#~ msgstr "(DNS intern) Errada IPC (dades esclaves corruptes)"
+
+#~ msgid "Invalid IP address"
+#~ msgstr "Adre�a IP no v�lida"
+
+#~ msgid "Failed to put the socket in non blocking mode"
+#~ msgstr "Fallida al posar el socket en mode no balancejant"
+
+#~ msgid "Bad file descriptor"
+#~ msgstr "Descriptor d'arxiu no v�lid"
+
+#~ msgid "Out of address space"
+#~ msgstr "Sense espai de direccions"
+
+#~ msgid "Connection refused"
+#~ msgstr "Connexi� rebutjada"
+
+#~ msgid "Kernel networking panic"
+#~ msgstr "Error greu en el nucli de xarxa"
+
+#~ msgid "Connection timed out"
+#~ msgstr "La connexi� ha caigut"
+
+#~ msgid "Network is unreachable"
+#~ msgstr "La xarxa �s inaccessible"
+
+#~ msgid "Broken pipe"
+#~ msgstr "Pipe trencada"
+
+#~ msgid "Invalid proxy address"
+#~ msgstr "Adre�a de proxy no v�lida"
+
+#~ msgid "Remote end has closed the connection"
+#~ msgstr "El extrem remot ha tancat la connexi�"
+
+#~ msgid "Invalid irc context id"
+#~ msgstr "Id de context irc no v�lid"
+
+#~ msgid "Error in loading module"
+#~ msgstr "Error en carregar el m�dul"
+
+#~ msgid "No such module command"
+#~ msgstr "No hi ha tal comanda de m�dul"
+
+#~ msgid "No such module function"
+#~ msgstr "No hi ha tal funci� de m�dul"
+
+#~ msgid "Left operand is not a dictionary reference"
+#~ msgstr "L'operador esquerra no �s una refer�ncia de diccionari"
+
+#~ msgid "Right operand is not a dictionary reference"
+#~ msgstr "L'operador dret no �s una refer�ncia a diccionari"
+
+#~ msgid "Missing object class name"
+#~ msgstr "Falta el nom de la classe de l'objecte"
+
+#~ msgid "No such object class"
+#~ msgstr "No existeix aquesta classe d'objecte"
+
+#~ msgid "No such object"
+#~ msgstr "No hi ha tal objecte"
+
+#~ msgid "No such object function"
+#~ msgstr "No hi ha tal funci� d'objecte"
+
+#~ msgid "Invalid left operand"
+#~ msgstr "Operador esquerra no v�lid"
+
+#~ msgid "Integer parameter expected"
+#~ msgstr "S'esperava un par�metre enter"
+
+#~ msgid "Invalid parameter"
+#~ msgstr "Par�metre no v�lid"
+
+#~ msgid "No such file"
+#~ msgstr "No existeix l'arxiu"
+
+#~ msgid "Open parenthesis expected"
+#~ msgstr "S'esperava par�ntesis d'apertura"
+
+#~ msgid "Open brace expected"
+#~ msgstr "S'esperava la clau d'apertura"
+
+#~ msgid "Can't kill a builtin class"
+#~ msgstr "No es pot matar una classe interna"
+
+#~ msgid "The SOCKSV4 protocol lacks IpV6 support"
+#~ msgstr "El protocol SOCKSV4 no t� suport IPv6"
+
+#~ msgid "Unrecognized proxy reply"
+#~ msgstr "Resposta del proxy no reconeguda"
+
+#~ msgid "Proxy response: auth failed: access denied"
+#~ msgstr "Resposta del proxy: autentificaci� fallida: acc�s denegat"
+
+#~ msgid "Proxy response: No acceptable auth method: request rejected"
+#~ msgstr ""
+#~ "Resposta del proxy: M�tode d'autentificaci� no acceptable: petici� "
+#~ "rebutjada"
+
+#~ msgid "Proxy response: request failed"
+#~ msgstr "Resposta del proxy: petici� fallida"
+
+#~ msgid "Proxy response: ident failed"
+#~ msgstr "Resposta del proxy: ident fallit"
+
+#~ msgid "Proxy response: ident not matching"
+#~ msgstr "Resposta del proxy: l'identitat (ident) no concorda"
+
+#~ msgid "Proxy response: general SOCKS failure"
+#~ msgstr "Resposta del proxy: fallida general de SOCKS"
+
+#~ msgid "Proxy response: connection not allowed"
+#~ msgstr "Resposta del proxy: connexi� no permesa"
+
+#~ msgid "Proxy response: network unreachable"
+#~ msgstr "Resposta del proxy: xarxa inabastable"
+
+#~ msgid "Proxy response: host unreachable"
+#~ msgstr "Resposta del proxy: m�quina inabastable"
+
+#~ msgid "Proxy response: connection refused"
+#~ msgstr "Resposta del proxy: connexi� rebutjada"
+
+#~ msgid "Proxy response: TTL expired"
+#~ msgstr "Resposta del proxy: TTL expirat"
+
+#~ msgid "Proxy response: command not supported"
+#~ msgstr "Resposta del proxy: comanda no suportada"
+
+#~ msgid "Proxy response: address type not supported"
+#~ msgstr "Resposta del proxy: tipus d'adre�a no suportada"
+
+#~ msgid "Proxy response: invalid address"
+#~ msgstr "Resposta del proxy: direcci� no v�lida"
+
+#~ msgid "Invalid port number"
+#~ msgstr "N�mero de port no v�lid"
+
+#~ msgid "Socket not connected"
+#~ msgstr "Socket no conectat"
+
+#~ msgid "Insufficient resources to complete the operation"
+#~ msgstr "Recursos insuficients per a completar l'operaci�"
+
+#~ msgid "Can't setup a listening socket : bind failed"
+#~ msgstr "No puc configurar un socket en escolta: fallida en l'enlla� (bind)"
+
+#~ msgid "Can't resolve the localhost name"
+#~ msgstr "No puc resoldre el nom de la m�quina local"
+
+#~ msgid "Unsupported image format"
+#~ msgstr "Format d'imatge no suportat"
+
+#~ msgid "Can't open file for appending"
+#~ msgstr "No puc obrir l'arxiu per afegir"
+
+#~ msgid "Can't open file for writing"
+#~ msgstr "No puc obrir l'arxiu per a escriptura"
+
+#~ msgid "File I/O error"
+#~ msgstr "Error E/S d'arxiu"
+
+#~ msgid "Acknowledge error"
+#~ msgstr "Error en la confirmaci�"
+
+#~ msgid "Can't open file for reading"
+#~ msgstr "No puc obrir l'arxiu per a lectura"
+
+#~ msgid "Can't send a zero-size file"
+#~ msgstr "No puc enviar un arxiu de mida zero"
+
+#~ msgid "Missing popup name"
+#~ msgstr "Falta nom de men� emergent"
+
+#~ msgid "'item', 'popup', 'label' or 'separator' keyword expected"
+#~ msgstr ""
+#~ "S'esperava una paraula clau entre 'item', 'popup', 'label' o 'separator'"
+
+#~ msgid "Self modification not allowed"
+#~ msgstr "Automodificaci� no permesa"
+
+#~ msgid "UNUSED"
+#~ msgstr "SENSE US"
+
+#~ msgid "Feature not available"
+#~ msgstr "Funcionalitat no disponible"
+
+#~ msgid "Unexpected characters in array index"
+#~ msgstr "Car�cters inesperats en l'index de la matriu"
+
+#~ msgid "Unexpected end in expression"
+#~ msgstr "Fi d'expressi� inesperat"
+
+#~ msgid "Unexpected end in array index"
+#~ msgstr "Fi inesperat en l'index de la matriu"
+
+#~ msgid "Connection thru HTTP proxy failed"
+#~ msgstr "La connexi� a trav�s del proxy HTTP ha fallat"
+
+#~ msgid "Case , match , regexp , default or break keyword expected"
+#~ msgstr "S'esperava una paraula clau case, match, regexp, default o break"
+
+#~ msgid "Access denied"
+#~ msgstr "Acc�s denegat"
+
+#~ msgid "Address already in use"
+#~ msgstr "Adre�a ja en �s"
+
+#~ msgid "Can't assign the requested address"
+#~ msgstr "No s'ha pogut assignar l'adre�a solicitada"
+
+#~ msgid "Connection reset by peer"
+#~ msgstr "Connexi� tancada per l'altre m�quina"
+
+#~ msgid "Host unreachable (no route to host)"
+#~ msgstr "M�quina inabastable (no hi ha ruta cap a la m�quina)"
+
+#~ msgid "Variable expected"
+#~ msgstr "S'esperava una variable"
+
+#~ msgid "Invalid array index: positive integer expected"
+#~ msgstr "�ndex de la matriu no v�lid: s'esperava un enter positiu"
+
+#~ msgid "listen() call failed"
+#~ msgstr "crida listen() fallida"
+
+#~ msgid "This executable has been compiled without SSL support"
+#~ msgstr "Aquest executable s'ha compilat sense suport SSL"
+
+#~ msgid "Secure Socket Layer error"
+#~ msgstr "Error SSL"
+
+#~ msgid "Slash (/) character expected"
+#~ msgstr "S'esperava un car�cter barra (/)"
+
+#~ msgid "Unknown string manipulation operation"
+#~ msgstr "Operaci� de manipulaci� de cadena desconeguda"
+
+#~ msgid "Operation aborted"
+#~ msgstr "Operaci� cancel�lada"
+
+#~ msgid "Unexpected token"
+#~ msgstr "Identificador inesperat"
+
+#~ msgid "Scope object already defined (unexpected @)"
+#~ msgstr "Ja s'ha definit el �mbit de l'objecte (@ inesperat)"
+
+#~ msgid "There is no $this pointer in this scope (unexpected @)"
+#~ msgstr "No hi ha un punter $this en aquest �mbit (@ inesperat)"
+
+#~ msgid "- d -- h -- m -- s"
+#~ msgstr "- d -- h -- m -- s"
+
+#~ msgid "%u h %u m %u s"
+#~ msgstr "%u h %u m %u s"
+
+#~ msgid "%u h %u%u m %u%u s"
+#~ msgstr "%u h %u%u m %u%u s"
+
+#~ msgid "%u m %u s"
+#~ msgstr "%u m %u s"
+
+#~ msgid "%u m %u%u s"
+#~ msgstr "%u m %u%u s"
+
+#~ msgid "%u s"
+#~ msgstr "%u s"
+
+#~ msgid "%u d %u h %u m %u s"
+#~ msgstr "%u d %u h %u m %u s"
+
+#~ msgid "%u d %u%u h %u%u m %u%u s"
+#~ msgstr "%u d %u%u h %u%u m %u%u s"
+
+#~ msgid "Select color"
+#~ msgstr "Seleccionar color"
+
+#~ msgid "&Basic colors"
+#~ msgstr "Colors &b�sics"
+
+#~ msgid "&Custom colors"
+#~ msgstr "&Colors personalitzats"
+
+#~ msgid "&Red"
+#~ msgstr "&Vermell"
+
+#~ msgid "&Green"
+#~ msgstr "&Verd"
+
+#~ msgid "Bl&ue"
+#~ msgstr "Bla&u"
+
+#~ msgid "&Define Custom Colors >>"
+#~ msgstr "&Definir Colors Personalitzats >>"
+
+#~ msgid "&Add to Custom Colors"
+#~ msgstr "&Afegir Colors Personalitzats"
+
+#~ msgid "Select Font"
+#~ msgstr "Seleccionar Font"
+
+#~ msgid "&Font"
+#~ msgstr "&Font"
+
+#~ msgid "Font st&yle"
+#~ msgstr "Est&il de font"
+
+#~ msgid "&Size"
+#~ msgstr "&Mida"
+
+#~ msgid "Sample"
+#~ msgstr "Exemple"
+
+#~ msgid "Effects"
+#~ msgstr "Efectes"
+
+#~ msgid "Stri&keout"
+#~ msgstr "Taxada"
+
+#~ msgid "&Underline"
+#~ msgstr "S&ubratllada"
+
+#~ msgid "Scr&ipt"
+#~ msgstr "Scr&ipt"
+
+#~ msgid "Parent Directory"
+#~ msgstr "Directori Pare"
+
+#~ msgid "Back"
+#~ msgstr "Enrere"
+
+#~ msgid "Forward"
+#~ msgstr "Endavant"
+
+#~ msgid "Reload"
+#~ msgstr "Recarregar"
+
+#~ msgid "New Directory"
+#~ msgstr "Nou Directori"
+
+#~ msgid "Bookmarks"
+#~ msgstr "Marcadors"
+
+#~ msgid "Add Bookmark"
+#~ msgstr "Afegir Marcador"
+
+#~ msgid "&Edit Bookmarks"
+#~ msgstr "&Editar Marcadors"
+
+#~ msgid "New Bookmark Folder..."
+#~ msgstr "Nou Directori de Marcadors..."
+
+#~ msgid "Sorting"
+#~ msgstr "Ordenaci�"
+
+#~ msgid "By Name"
+#~ msgstr "Per Nom"
+
+#~ msgid "By Date"
+#~ msgstr "Per Data"
+
+#~ msgid "By Size"
+#~ msgstr "Per Mida"
+
+#~ msgid "Reverse"
+#~ msgstr "Al rev�s"
+
+#~ msgid "Directories First"
+#~ msgstr "Directoris Primer"
+
+#~ msgid "Case Insensitive"
+#~ msgstr "No distingeix maj�s/min�s"
+
+#~ msgid "Short View"
+#~ msgstr "Vista Breu"
+
+#~ msgid "Detailed View"
+#~ msgstr "Vista Detallada"
+
+#~ msgid "Show Hidden Files"
+#~ msgstr "Mostrar Arxius Amagats"
+
+#~ msgid "Show Quick Access Navigation Panel"
+#~ msgstr "Mostrar Acc�s a Panell de Navegaci� R�pid"
+
+#~ msgid "Show Preview"
+#~ msgstr "Mostrar Previsualitzaci�"
+
+#~ msgid "Separate Directories"
+#~ msgstr "Separar Directoris"
+
+#~ msgid "Often used directories"
+#~ msgstr "Directoris usats m�s freq�entment"
+
+#~ msgid "Desktop"
+#~ msgstr "Escritori"
+
+#~ msgid "Home Directory"
+#~ msgstr "Directori Personal"
+
+#~ msgid "Floppy"
+#~ msgstr "Disquetera"
+
+#~ msgid "Temporary Files"
+#~ msgstr "Arxius Temporals"
+
+#~ msgid "Network"
+#~ msgstr "Xarxa"
+
+#~ msgid "New Directory..."
+#~ msgstr "Nou Directori..."
+
+#~ msgid "Thumbnail Previews"
+#~ msgstr "Previsualitzar Diapositives"
+
+#~ msgid "Large Icons"
+#~ msgstr "Icones Grans"
+
+#~ msgid "Small Icons"
+#~ msgstr "Icones Petites"
+
+#~ msgid "Properties..."
+#~ msgstr "Propietats..."
+
+#~ msgid "&Automatic Preview"
+#~ msgstr "Previsualitzaci� &Autom�tica"
+
+#~ msgid "&Preview"
+#~ msgstr "&Previsualitzar"
+
+#~ msgid "&Filter:"
+#~ msgstr "&Filtre:"
+
+#~ msgid "All Files"
+#~ msgstr "Tots els arxius"
+
+#~ msgid "Directory"
+#~ msgstr "Directori"
+
+#~ msgid "Fifo"
+#~ msgstr "FIFO"
+
+#~ msgid "Block device"
+#~ msgstr "Dispositiu de Blocs"
+
+#~ msgid "Char device"
+#~ msgstr "Dispositiu de car�cters"
+
+#~ msgid "Octet stream (unknown)"
+#~ msgstr "Flux de bytes (desconegut)"
+
+#~ msgid "Invalid crypt engine"
+#~ msgstr "Motor de xifrat no v�lid"
+
+#~ msgid "WARNING : Can not load image library %s"
+#~ msgstr "ADVERT�NCIA : No s'ha pogut carregar la biblioteca d'imatges %s"
+
+#, fuzzy
+#~ msgid "The specified network has no server entries"
+#~ msgstr "La finestra especificada no t� contenidor per a botons"
+
+#~ msgid "Aborted"
+#~ msgstr "Cancel�lat"
+
+#~ msgid "No request"
+#~ msgstr "Sense petici�"
+
+#~ msgid "No filename specified for the \"StoreToFile\" processing type"
+#~ msgstr ""
+#~ "No s'ha especificat el nom de l'arxiu per al tipus de processat "
+#~ "\"StoreToFile\""
+
+#~ msgid "Invalid URL: Missing hostname"
+#~ msgstr "URL Inv�lida: falta el nom de la m�quina"
+
+#, fuzzy
+#~ msgid "Unsupported protocol %1"
+#~ msgstr "Protocol %s no suportat"
+
+#~ msgid "Unable to start the DNS lookup"
+#~ msgstr "No puc iniciar la cerca DNS"
+
+#~ msgid "Looking up host %s"
+#~ msgstr "Buscant la m�quina %s"
+
+#~ msgid "Host %s resolved to %s"
+#~ msgstr "Nom de la m�quina %s resolt a %s"
+
+#~ msgid "Unable to start the request slave thread"
+#~ msgstr "No s'ha pogut iniciar el fil esclau de peticions"
+
+#~ msgid "Contacting host %s on port %u"
+#~ msgstr "Contactant amb %s en el port %u"
+
+#~ msgid "Connection established, sending request"
+#~ msgstr "Connexi� establerta, enviant petici�"
+
+#~ msgid "Failed to rename the existing file, please rename manually and retry"
+#~ msgstr ""
+#~ "Fallida al renombrar l'arxiu existent, renombri manualment o intenti-ho "
+#~ "de nou"
+
+#~ msgid "Can't open file \"%s\" for writing"
+#~ msgstr "No puc obrir l'arxiu \"%s\" en mode escriptura"
+
+#~ msgid "Invalid HTTP response: %s"
+#~ msgstr "Resposta HTTP no v�lida: %s"
+
+#~ msgid "Received HTTP response: %s"
+#~ msgstr "Resposta HTTP rebuda: %s"
+
+#~ msgid "Stream exceeding maximum length"
+#~ msgstr "L'Stream excedeix la longitud m�xima"
+
+#~ msgid "Stream exceeded expected length"
+#~ msgstr "L'Stream excedeix la longitud esperada"
+
+#~ msgid "Header too long: exceeded 4096 bytes"
+#~ msgstr "Cap�alera molt llarga: Excedeix els 4096 bytes"
+
+#~ msgid "Select error: %s (errno=%d)"
+#~ msgstr "Error de select: %s (errno=%d)"
+
+#~ msgid "Operation timed out"
+#~ msgstr "Ha expirat el temps per a l'operaci�"
+
+#~ msgid "Failed to enter non blocking mode"
+#~ msgstr "Fallida al intentar entrar en mode no blocant"
+
+#~ msgid "Invalid target address"
+#~ msgstr "Adre�a de dest� no v�lida"
+
+#~ msgid "Connect error: %s (errno=%d)"
+#~ msgstr "Error de connexi�: %s (errno=%d)"
+
+#~ msgid "Write error: %s (errno=%d)"
+#~ msgstr "Error d'escriptura: %s (errno=%d)"
+
+#~ msgid "Operation timed out (while selecting for read)"
+#~ msgstr ""
+#~ "Ha expirat el temps per a l'operaci� (mentre es feia un select de "
+#~ "lectura)"
+
+#~ msgid "Read error: %s (errno=%d)"
+#~ msgstr "Error de lectura: %s (errno=%d)"
+
+#~ msgid "Encoding"
+#~ msgstr "Codificaci�"
+
+#, fuzzy
+#~ msgid "Reconnection Options"
+#~ msgstr "connexi�"
+
+#, fuzzy
+#~ msgid "Usage"
+#~ msgstr "Mode d'us"
+
+#, fuzzy
+#~ msgid "message"
+#~ msgstr "Tipus de missatge"
+
+#~ msgid "Usage:"
+#~ msgstr "Mode d'us"
+
+#~ msgid "You must be connected to a server"
+#~ msgstr "Ha d'estar connectat a un servidor"
+
+#~ msgid "Lag is"
+#~ msgstr "El retr�s �s"
+
+#~ msgid "reason"
+#~ msgstr "ra�"
+
+#~ msgid "This is not a channel window"
+#~ msgstr "Aix� no �s una finestra del canal"
+
+#~ msgid "Unsupported type: $0"
+#~ msgstr "Tipus no suportat: $0"
+
+#~ msgid "You must use DNS in an IRC context"
+#~ msgstr "Has d'emprar DNS en un context IRC"
+
+#~ msgid "No such user: $0"
+#~ msgstr "No existeix l'usuari: $0"
+
+#~ msgid "Options"
+#~ msgstr "Opcions"
+
+#~ msgid "Stop Highlighting (Local)"
+#~ msgstr "Parar Ressaltat (Local)"
+
+#~ msgid "Start Highlighting (Local)"
+#~ msgstr "Iniciar Ressaltat (Local)"
+
+#~ msgid "Always Highlight"
+#~ msgstr "Sempre Ressaltat"
+
+#~ msgid "Highlight as"
+#~ msgstr "Ressaltar com a"
+
+#~ msgid "Stop Highlighting"
+#~ msgstr "Parar Ressaltat"
+
+#~ msgid "is being ignored"
+#~ msgstr "est� sent ignorat"
+
+#~ msgid "is not being ignored"
+#~ msgstr "no est� sent ignorat"
+
+#~ msgid "Ignore as"
+#~ msgstr "Ignorar com a"
+
+#~ msgid "Unignore"
+#~ msgstr "Treure ignorar"
+
+#~ msgid "is registered as"
+#~ msgstr "est� ignorat com a"
+
+#~ msgid "is in the notify list"
+#~ msgstr "est� a la llista de notificaci�"
+
+#~ msgid "has a default avatar"
+#~ msgstr "t� un avatar per defecte"
+
+#~ msgid "is not registered"
+#~ msgstr "no est� registrat"
+
+#~ msgid "Register"
+#~ msgstr "Registrar"
+
+#~ msgid "Quick Registration"
+#~ msgstr "Registre R�pid"
+
+#~ msgid "Register as"
+#~ msgstr "Registrar com a"
+
+#~ msgid "Unregister"
+#~ msgstr "Treure Registre"
+
+#~ msgid "Add to Notify"
+#~ msgstr "Afegir per a Notificar"
+
+#~ msgid "Remove from Notify"
+#~ msgstr "Treure de Notificar"
+
+#~ msgid "Choose"
+#~ msgstr "Escollir"
+
+#~ msgid "Choose Avatar Image File"
+#~ msgstr "Esculli un Arxiu d'Imatge d'Avatar"
+
+#~ msgid "Set as Default"
+#~ msgstr "Posar per Defecte"
+
+#~ msgid "Clear Default"
+#~ msgstr "Netejar per Defecte"
+
+#, fuzzy
+#~ msgid "Copy To Clipboard"
+#~ msgstr "Copiar al portapapers"
+
+#~ msgid "Channel Owner"
+#~ msgstr "Propietari del Canal"
+
+#~ msgid "Channel Administrator"
+#~ msgstr "Administrador del Canal"
+
+#~ msgid "Channel Operator"
+#~ msgstr "Operador del Canal"
+
+#~ msgid "Half Operator"
+#~ msgstr "Semioperador"
+
+#~ msgid "User Operator"
+#~ msgstr "Usuari Operador"
+
+#~ msgid "Normal User"
+#~ msgstr "Usuari Normal"
+
+#~ msgid "Ban"
+#~ msgstr "Prohibit"
+
+#~ msgid "Multiple Users"
+#~ msgstr "M�ltiples usuaris"
+
+#~ msgid "&Ban"
+#~ msgstr "Prohi&bici�"
+
+#~ msgid "idle time"
+#~ msgstr "temps oci�s"
+
+#~ msgid "&Information"
+#~ msgstr "&Informaci�"
+
+#~ msgid "DNS for"
+#~ msgstr "DNS per a"
+
+#~ msgid "Mask for"
+#~ msgstr "M�scara per a"
+
+#~ msgid "&Control"
+#~ msgstr "&Control"
+
+#~ msgid "O&wner"
+#~ msgstr "Propietari"
+
+#~ msgid "&Deowner"
+#~ msgstr "Treure propietari"
+
+#~ msgid "&Administrator"
+#~ msgstr "&Administrador"
+
+#~ msgid "&Deadministrator"
+#~ msgstr "Treure administrador"
+
+#~ msgid "&Op"
+#~ msgstr "&Op"
+
+#~ msgid "&Deop"
+#~ msgstr "Treure Op"
+
+#~ msgid "&Halfop"
+#~ msgstr "Semioperador"
+
+#~ msgid "&Dehalfop"
+#~ msgstr "Treure semioperador"
+
+#~ msgid "&Voice"
+#~ msgstr "&Veu"
+
+#~ msgid "D&evoice"
+#~ msgstr "Treure Veu"
+
+#~ msgid "&Kick"
+#~ msgstr "&Kick"
+
+#~ msgid "K&ick"
+#~ msgstr "Kickejar"
+
+#~ msgid "With..."
+#~ msgstr "Amb..."
+
+#~ msgid "Kick Reason"
+#~ msgstr "Ra� del Kick"
+
+#~ msgid "Enter a kick reason"
+#~ msgstr "Introdueixi la ra� del kick"
+
+#~ msgid "Kick/Ban"
+#~ msgstr "Kick/Ban"
+
+#~ msgid "Kick/Ban Reason"
+#~ msgstr "Ra� del Kick/Ban"
+
+#~ msgid "Enter a kick/ban reason"
+#~ msgstr "Introdueixi la ra� del kick/ban"
+
+#~ msgid "&Kick/Ban"
+#~ msgstr "&Kick/Ban"
+
+#~ msgid "&Query"
+#~ msgstr "Privat"
+
+#~ msgid "&Registration"
+#~ msgstr "&Registrar-se"
+
+#~ msgid "Ig&nore"
+#~ msgstr "Ig&norar"
+
+#~ msgid "Notify Avatar"
+#~ msgstr "Notificar Avatar"
+
+#~ msgid "&Part"
+#~ msgstr "&Partir"
+
+#~ msgid "Channels"
+#~ msgstr "Canals"
+
+#~ msgid "&Join Channels..."
+#~ msgstr "Unir-se a Canals..."
+
+#~ msgid "&Hop"
+#~ msgstr "Saltar"
+
+#~ msgid "l (Connections)"
+#~ msgstr "l (Connexions)"
+
+#~ msgid "m (Command Usage)"
+#~ msgstr "m (Mode d'us de les Comandes)"
+
+#~ msgid "o (Operators)"
+#~ msgstr "o (Operadors)"
+
+#~ msgid "t (Connection stats ?)"
+#~ msgstr "t (Estad�stiques de la connexi� ?)"
+
+#~ msgid "u (Uptime)"
+#~ msgstr "u (Temps de Funcionament)"
+
+#~ msgid "y (y-Lines)"
+#~ msgstr "y (L�nies-y)"
+
+#~ msgid "z (Debug Stats?)"
+#~ msgstr "z (Estad�stiques de Depuraci�?)"
+
+#~ msgid "Chat with"
+#~ msgstr "Xat amb"
+
+#~ msgid "Secure Chat with"
+#~ msgstr "Xat segur amb"
+
+#~ msgid "Send to"
+#~ msgstr "Enviat a"
+
+#~ msgid "Reverse Send to"
+#~ msgstr "Enviament Invers a"
+
+#~ msgid "TDCC Send to"
+#~ msgstr "TDCC Enviat a"
+
+#~ msgid "TDCC Reverse Send to"
+#~ msgstr "TDCC Enviament Invers a"
+
+#~ msgid "Voice Chat"
+#~ msgstr "Xat de Veu"
+
+#~ msgid "&Ignore"
+#~ msgstr "&Ignorar"
+
+#~ msgid "Logging to"
+#~ msgstr "Registrar a"
+
+#~ msgid "Flush Log File"
+#~ msgstr "Volcar l'Arxiu de Registre"
+
+#~ msgid "Stop Logging"
+#~ msgstr "Aturar el Registre"
+
+#~ msgid "Not Logging"
+#~ msgstr "Sense Registrar"
+
+#~ msgid "Log To Default File"
+#~ msgstr "Registrar l'Arxiu per Defecte"
+
+#~ msgid "Include Existing Buffer"
+#~ msgstr "Incloure el Buffer Existent"
+
+#~ msgid "Log To..."
+#~ msgstr "Registrar a..."
+
+#~ msgid "Notify avatar"
+#~ msgstr "Notificar Avatar"
+
+#~ msgid "The default script has been successfully installed."
+#~ msgstr "L'script per defecte ha estat instal�lat satisfactoriament."
+
+#~ msgid "To connect to a server, type /server <server name>"
+#~ msgstr "Per a connectar a un servidor, escrigui /server <nom_de_servidor>"
+
+#~ msgid "Happy ircing :)"
+#~ msgstr "Feli� IRCeig :)"
+
+#~ msgid "The config file with id '%s' is not open"
+#~ msgstr "L'arxiu de configuraci� '%s' no est� obert"
+
+#~ msgid "The config file with id '%s' is read only"
+#~ msgstr "L'arxiu de configuraci� amb id '%s' �s de nom�s lectura"
+
+#~ msgid "No nickname specified"
+#~ msgstr "No s'ha especificat nick"
+
+#~ msgid "No netmask specified"
+#~ msgstr "M�scara no especificada"
+
+#~ msgid "No property name specified"
+#~ msgstr "Propietat no especificada"
+
+#~ msgid "Missing property name"
+#~ msgstr "Falta nom de propietat"
+
+#~ msgid "The specified window (%s) is not a channel/query/DCC chat"
+#~ msgstr "La finestra especificada (%s) no �s un canal/privat/DCC de xat"
+
+#~ msgid "No file specified"
+#~ msgstr "No s'ha especificat arxiu"
+
+#~ msgid "Window %s not found"
+#~ msgstr "Finestra %s no trobada"
+
+#~ msgid "Can't log to file %s"
+#~ msgstr "No puc grabar el registre a l'arxiu %s"
+
+#~ msgid "Window with id '%s' not found, returning empty string"
+#~ msgstr "Finestra amb id '%s' no trobada, retornant la cadena buida"
+
+#, fuzzy
+#~ msgid "Invalid progress value (%s)"
+#~ msgstr "Marge no v�lid (%s)"
+
+#, fuzzy
+#~ msgid "Error:not enough parameters!"
+#~ msgstr "No hi ha suficients par�metres"
+
+#, fuzzy
+#~ msgid "The (%s) object is not a pixmap"
+#~ msgstr "L'objecte origen '%s' no existeix"
+
+#, fuzzy
+#~ msgid "Invalid index parameter (%s)"
+#~ msgstr "Par�metre fila no v�lid (%s)"
+
+#, fuzzy
+#~ msgid "Invalid parameter"
+#~ msgstr "Par�metre no v�lid"
+
+#, fuzzy
+#~ msgid "Can't find the object "
+#~ msgstr "No es pot trobar la icona '%s'"
+
+#, fuzzy
+#~ msgid "Can't set a non-widget object"
+#~ msgstr "No puc afegir un objecte no-widget"
+
+#, fuzzy
+#~ msgid "Can't find the tab object "
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#, fuzzy
+#~ msgid "Can't find the widget(%s)"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#, fuzzy
+#~ msgid "Invalid marging value (%s)"
+#~ msgstr "Marge no v�lid (%s)"
+
+#, fuzzy
+#~ msgid "This object is not a toolbutton item!"
+#~ msgstr "L'objecte origen '%s' no existeix"
+
+#~ msgid "No value to insert"
+#~ msgstr "No hi ha valor per a inserir"
+
+#~ msgid "Invalid index(%s)"
+#~ msgstr "�ndex no v�lid(%s)"
+
+#~ msgid "No index specified"
+#~ msgstr "No s'ha especificat �ndex"
+
+#~ msgid "index %u out of range"
+#~ msgstr "�ndex %u fora de rang"
+
+#~ msgid "Invalid index (%s)"
+#~ msgstr "�ndex no v�lid (%s)"
+
+#~ msgid "Index %u out of range"
+#~ msgstr "�ndex %u fora de rang"
+
+#, fuzzy
+#~ msgid "Invalid resize mode (%s): defaulting to Auto"
+#~ msgstr "Duraci� no v�lida (%s): emprant la duraci� per defecte"
+
+#~ msgid "Invalid margin value (%s)"
+#~ msgstr "Marge no v�lid (%s)"
+
+#~ msgid "Invalid spacing value (%s)"
+#~ msgstr "Valor d'espaiat no v�lid (%s)"
+
+#~ msgid "Invalid stretch value (%s)"
+#~ msgstr "Valor d'estirament no v�lid (%s)"
+
+#~ msgid "Invalid from_row parameter (%s)"
+#~ msgstr "Par�metre desde_fila no v�lid (%s)"
+
+#~ msgid "Invalid to_row parameter (%s)"
+#~ msgstr "Par�metre fins_fila no v�lid (%s)"
+
+#~ msgid "Invalid from_column parameter (%s)"
+#~ msgstr "Par�metre desde_columna no v�lid (%s)"
+
+#~ msgid "Invalid to_column parameter (%s)"
+#~ msgstr "Par�metre fins_columna no v�lid (%s)"
+
+#, fuzzy
+#~ msgid "Invalid parameters"
+#~ msgstr "Par�metre no v�lid"
+
+#, fuzzy
+#~ msgid "Can't find the widget/pixmap (%s)"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#, fuzzy
+#~ msgid "Can't find the widget object to remove (%s)"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#, fuzzy
+#~ msgid "Can't remove a non-widget object"
+#~ msgstr "No puc afegir un objecte no-widget"
+
+#, fuzzy
+#~ msgid "Can't find the widget (%s)"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#, fuzzy
+#~ msgid "Invalid zoom value (%s)"
+#~ msgstr "Marge no v�lid (%s)"
+
+#, fuzzy
+#~ msgid "Invalid depth value (%s)"
+#~ msgstr "Valor d'estirament no v�lid (%s)"
+
+#, fuzzy
+#~ msgid "Invalid value (%s)"
+#~ msgstr "Marge no v�lid (%s)"
+
+#, fuzzy
+#~ msgid "Invalid paragraph value (%s)"
+#~ msgstr "Marge no v�lid (%s)"
+
+#, fuzzy
+#~ msgid " I can't find the specified file."
+#~ msgstr "No es pot trobar l'arxiu multim�dia %s"
+
+#, fuzzy
+#~ msgid " I cannot read the file."
+#~ msgstr "No puc obrir aquest arxiu"
+
+#, fuzzy
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#~ msgid "Class %s is undefined"
+#~ msgstr "La classe %s no est� definida"
+
+#~ msgid "The source object '%s' is not existing"
+#~ msgstr "L'objecte origen '%s' no existeix"
+
+#~ msgid "The target object '%s' is not existing"
+#~ msgstr "L'objecte dest� '%s' no existeix"
+
+#~ msgid "No signal '%s' to disconnect"
+#~ msgstr "No hi ha senyal '%s' per a desconnectar"
+
+#, fuzzy
+#~ msgid "No destination specified"
+#~ msgstr "No s'ha especificat nom"
+
+#, fuzzy
+#~ msgid "Can't find the destination widget/pixmap (%s)"
+#~ msgstr "No he pogut trobar la finestra amb id '%s'"
+
+#, fuzzy
+#~ msgid "No source specified"
+#~ msgstr "No s'ha especificat un text per al socket"
+
+#, fuzzy
+#~ msgid "Can't find the source widget/pixmap (%s)"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#, fuzzy
+#~ msgid "Invalid x parameter (%s)"
+#~ msgstr "Par�metre fila no v�lid (%s)"
+
+#, fuzzy
+#~ msgid "Invalid y parameter (%s)"
+#~ msgstr "Par�metre fila no v�lid (%s)"
+
+#, fuzzy
+#~ msgid "Can't find the listviewitem object to add (%s)"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#, fuzzy
+#~ msgid "Invalid column (%s)"
+#~ msgstr "Par�metre columna no v�lid (%s)"
+
+#~ msgid "Invalid margin parameter"
+#~ msgstr "Par�metre marge no v�lid"
+
+#~ msgid "Unknown alignment: %s"
+#~ msgstr "Alineaci� desconeguda: %s"
+
+#~ msgid "Unknown frame / shadow style: %s"
+#~ msgstr "Marc desconegut / estil d'ombra: %s"
+
+#~ msgid "Hey ! You wanna know my echo mode or what ?"
+#~ msgstr "Eh! �Vols con�ixer el meu mode d'eco o qu�?"
+
+#~ msgid "Unknown echo mode"
+#~ msgstr "Mode d'eco desconegut"
+
+#, fuzzy
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#, fuzzy
+#~ msgid "Invalid object."
+#~ msgstr "Objecte no v�lid"
+
+#, fuzzy
+#~ msgid "Can't setStretchableWidget a non-widget object."
+#~ msgstr "No puc afegir un objecte no-widget"
+
+#, fuzzy
+#~ msgid "Can't find the popupmenu object to add (%s)"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#, fuzzy
+#~ msgid "Can't find the widget object (%s)"
+#~ msgstr "No he pogut trobar l'objecte widget per a afegir (%s)"
+
+#, fuzzy
+#~ msgid "Invalid columns value (%s)"
+#~ msgstr "Marge no v�lid (%s)"
+
+#, fuzzy
+#~ msgid "Invalid size value (%s)"
+#~ msgstr "Valor d'espaiat no v�lid (%s)"
+
+#, fuzzy
+#~ msgid "Invalid icon identifier"
+#~ msgstr "Id de context irc no v�lid"
+
+#~ msgid ""
+#~ "Can't set the current avatar to '%s': failed to start the http transfer"
+#~ msgstr ""
+#~ "No puc posar l'avatar actual a '%s': ha fallat l'inic de la transfer�ncia "
+#~ "http"
+
+#~ msgid "Can't set the current avatar to '%s': can't load the image"
+#~ msgstr "No puc posar el avatar actual a '%s': no puc carregar la imatge"
+
+#~ msgid "No environment variable name given"
+#~ msgstr "No es troba la variable d'entorn donada"
+
+#~ msgid "Can't find the window with id '%s'"
+#~ msgstr "No he pogut trobar la finestra amb id '%s'"
+
+#~ msgid "The specified window (%s) is not a channel"
+#~ msgstr "La finestra especificada (%s) no �s un canal"
+
+#~ msgid "No button name specified!"
+#~ msgstr "No s'ha especificat nom de bot�!"
+
+#~ msgid ""
+#~ "The action \"%1\" is already defined as core action: choosing an "
+#~ "alternate name"
+#~ msgstr ""
+#~ "L'acci� \"%1\" ja est� definida com una acci� principal: esculli un nom "
+#~ "alternatiu"
+
+#~ msgid "No separator name specified"
+#~ msgstr "No s'ha especificat nom de separador"
+
+#~ msgid "No toolbar id specified"
+#~ msgstr "No s'ha especificat un id de barra d'eines"
+
+#~ msgid "The action \"%s\" doesn't exist"
+#~ msgstr "L'acci� \"%s\" no existeix"
+
+#~ msgid "Invalid IRC context id '%s'"
+#~ msgstr "Id '%s' de context d'IRC no v�lid"
+
+#, fuzzy
+#~ msgid "Background not found %s "
+#~ msgstr "Color de fons"
+
+#~ msgid "Mask %s is already used to identify user %s"
+#~ msgstr "La m�scara %s ja s'empra per a identificar a l'usuari %s"
+
+#~ msgid "User not found (%s)"
+#~ msgstr "Usuari no trobat (%s)"
+
+#~ msgid "User %s not found"
+#~ msgstr "Usuari %s no trobat"
+
+#~ msgid "Mask %s already used to identify user %s"
+#~ msgstr "M�scara %s ja emprada per a identificar a l'usuari %s"
+
+#~ msgid "Mask %s not found"
+#~ msgstr "M�scara %s no trobada"
+
+#~ msgid "Sound file '%s' not found"
+#~ msgstr "Arxiu de so '%s' no trobat"
+
+#~ msgid "Unable to play sound '%s'"
+#~ msgstr "No �s possible reproduir el so '%s'"
+
+#, fuzzy
+#~ msgid "The specified name is empty"
+#~ msgstr "No existeix la barra d'eines especificada"
+
+#, fuzzy
+#~ msgid "The specified description is empty"
+#~ msgstr "No existeix la barra d'eines especificada"
+
+#, fuzzy
+#~ msgid "The specified KVIrc version \"%s\" is not a valid version string"
+#~ msgstr "El temps UNIX especificat no �s v�lid (%s)"
+
+#~ msgid "Destination file exists: no copy made"
+#~ msgstr "L'arxiu de dest� existeix: no s'ha fet c�pia"
+
+#~ msgid "Failed to copy %s to %s"
+#~ msgstr "Errada al copiar %s a %s"
+
+#~ msgid "Failed to write to file %s"
+#~ msgstr "Errada al escriure l'arxiu %s"
+
+#~ msgid "Failed to rename %s to %s"
+#~ msgstr "Errada al renombrar %s a %s"
+
+#~ msgid "Failed to make the directory %s"
+#~ msgstr "Errada al crear el directori %s"
+
+#~ msgid "Failed to remove the file %s"
+#~ msgstr "Errada al borrar l'arxiu %s"
+
+#~ msgid "Failed to remove the directory %s"
+#~ msgstr "Errada al borrar el directori %s"
+
+#~ msgid "The specified directory does not exist '%s'"
+#~ msgstr "El directori especificat no existeix '%s'"
+
+#~ msgid "Can't open the file \"%s\" for reading"
+#~ msgstr "No puc obrir l'arxiu \"%s\" per a lectura"
+
+#~ msgid "Read error for file %s"
+#~ msgstr "Error de lectura per a l'arxiu %s"
+
+#~ msgid ""
+#~ "Read error for file %s (have been unable to read the requested size in "
+#~ "1000 retries)"
+#~ msgstr ""
+#~ "Error de lectura de l'arxiu %s (no s'ha pogut llegir la mida solicitada "
+#~ "en 1000 reintents)"
+
+#~ msgid "No such options page class name"
+#~ msgstr "No existeixen aquestes opcions a la p�gina del nom de la classe"
+
+#, fuzzy
+#~ msgid "%Q is not an integer"
+#~ msgstr "El men� emergent %Q no est� definit"
+
+#~ msgid "Window with caption '%s' not found, returning 0"
+#~ msgstr "Finestra amb t�tol '%s' no trobat, retornant 0"
+
+#~ msgid "The specified UNIX time is not valid (%s)"
+#~ msgstr "El temps UNIX especificat no �s v�lid (%s)"
+
+#~ msgid "The specified time format is not valid (%s)"
+#~ msgstr "El format de temps especificat no �s v�lid (%s)"
+
+#~ msgid "No option named '%s'"
+#~ msgstr "No existeix l'opci� anomenada '%s'"
+
+#~ msgid "No option name specified"
+#~ msgstr "No s'ha especificat el nom de l'opci�"
+
+#, fuzzy
+#~ msgid "No link text specified"
+#~ msgstr "No s'ha especificat �ndex"
+
+#~ msgid "No command specified"
+#~ msgstr "No s'ha especificat una comanda"
+
+#~ msgid "$sw should be called only in aliases"
+#~ msgstr "$sw nom�s hauria de ser cridat en cas d'�lies"
+
+#~ msgid "Broken prologue code for menu '%s', error detail follows"
+#~ msgstr ""
+#~ "Codi de pr�leg per a men� '%s' erroni, segueixi el detall de l'error"
+
+#~ msgid "Broken expression for menu item '%Q', ignoring"
+#~ msgstr "Expressi� erronia per a l'element '%Q' del men�, ignorant"
+
+#~ msgid "Can't find the external popup '%Q', ignoring"
+#~ msgstr "No puc trobar el men� emergent extern '%Q', ignorant"
+
+#~ msgid "Broken epilogue code for menu '%s', error details follow"
+#~ msgstr "Codi d'ep�leg per a men� '%s' erroni, segueixi el detall de l'error"
+
+#~ msgid "Function name expected"
+#~ msgstr "S'esperava un nom de funci�"
+
+#~ msgid "No catalogue %s for the current language found"
+#~ msgstr "No s'ha trobat el cat�leg%ss per al llenguatge actual"
+
+#~ msgid "The catalogue %s was not loaded"
+#~ msgstr "El cat�leg %s no ha sigut carregat"
+
+#~ msgid "Invalid icon specification '%s', using default"
+#~ msgstr "Especificaci� d'icona '%s' no v�lida, emprant el valor per defecte"
+
+#~ msgid "Missing icon number after the 'i' switch"
+#~ msgstr "Falta el n�mero d'icona despr�s del modificador 'i'"
+
+#~ msgid "Missing window ID after the 'w' switch"
+#~ msgstr "Falta el ID de finestre despr�s del modificador 'w'"
+
+#~ msgid "No targets specified"
+#~ msgstr "No hi ha destins especificats"
+
+#~ msgid "Missing new nickname"
+#~ msgstr "Falta nou nick"
+
+#~ msgid "Missing target"
+#~ msgstr "Falta dest�"
+
+#~ msgid "Missing target channel"
+#~ msgstr "Falta el canal de dest�"
+
+#~ msgid "No such object (%s)"
+#~ msgstr "No existeix l'objecte (%s)"
+
+#~ msgid "Invalid screen coordinates"
+#~ msgstr "Coordenades de pantalla no v�lides"
+
+#~ msgid "Invalid syntax for the screen coordinates"
+#~ msgstr "Sintaxis no v�lida per a les coordenades de pantalla"
+
+#~ msgid "Invalid timeout delay '%s'"
+#~ msgstr "Retr�s del temps d'expiraci� no v�lid '%s'"
+
+#~ msgid "Empty command block for timer '%s', timer not started"
+#~ msgstr ""
+#~ "Bloc de comandes buit per al cron�metre '%s', no s'ha iniciat el compte"
+
+#~ msgid ""
+#~ "Internal error: Unable to add timer %s, insufficient system resources"
+#~ msgstr ""
+#~ "Error intern: no s'ha pogut afegir el cron�metre %s, no hi ha suficients "
+#~ "recursos al sistema"
+
+#~ msgid "No such timer (%s)"
+#~ msgstr "No existeix el cron�metre (%s)"
+
+#~ msgid "No such event (%s)"
+#~ msgstr "No existeix l'event (%s)"
+
+#~ msgid "No handler '%s' for raw numeric event '%d'"
+#~ msgstr "No hi ha un manipulador %s' per a l'event num�ric raw '%d'"
+
+#~ msgid "No handler '%s' for event '%s'"
+#~ msgstr "No hi ha manipulador '%s' per a l'event '%s'"
+
+#~ msgid "Failed to execute command '%s'"
+#~ msgstr "Errada a l'executar la comanda '%s'"
+
+#~ msgid "Invalid IRC url (%s)"
+#~ msgstr "url IRC no v�lida (%s)"
+
+#~ msgid "The commandline for this url type seems to be broken (%s)"
+#~ msgstr ""
+#~ "La l�nia de comandes per aquest tipus d'url sembla estar malament (%s)"
+
+#~ msgid "No commandline specified for this type of url (%s)"
+#~ msgstr "No s'ha especificat l�nia de comandes per a aquest tipus d'url (%s)"
+
+#~ msgid "Invalid pitch (%s): using default"
+#~ msgstr "To no v�lid (%s): emprant el to per defecte"
+
+#~ msgid "Invalid duration (%s): using default"
+#~ msgstr "Duraci� no v�lida (%s): emprant la duraci� per defecte"
+
+#~ msgid "Can't find the icon '%s'"
+#~ msgstr "No es pot trobar la icona '%s'"
+
+#~ msgid "Window button '%s' not found"
+#~ msgstr "Bot� de finestra '%s' no trobat"
+
+#~ msgid "Can't rebind the command sequence: missing window identifier"
+#~ msgstr ""
+#~ "No he pogut reassociar la seq��ncia de comandes: perdut l'identificador "
+#~ "de finestra"
+
+#~ msgid "Can't rebind the command sequence: window with id %s not found"
+#~ msgstr ""
+#~ "No he pogut reasssociar la seq��ncia de comandes: finestra amb id %s no "
+#~ "trobada"
+
+#~ msgid "Unmatched parenthesis in expression body: ignoring trailing garbage"
+#~ msgstr ""
+#~ "Par�ntesis perdut en el cos de l'expressi�: ignorant car�cters seg�ents"
+
+#~ msgid "Error triggered from timer callback handler %c'%s'"
+#~ msgstr ""
+#~ "Error llan�ant des del manipulador de callback del cron�metre %c'%s'"
+
+#~ msgid "Timer callback handler '%s' is broken: killing"
+#~ msgstr "El manipulador de callback del cron�metre '%s' �s erroni: aturant"
+
+#, fuzzy
+#~ msgid "Initializing scripting engine..."
+#~ msgstr "Motor de xifrat no v�lid"
+
+#~ msgid "Loading actions..."
+#~ msgstr "Carregant accions..."
+
+#~ msgid "Loading icons..."
+#~ msgstr "Carregant icones..."
+
+#~ msgid "Performing early initializations..."
+#~ msgstr "Realitzant primeres inicialitzacions..."
+
+#~ msgid "Loading window configuration database..."
+#~ msgstr "Carregant base de dades de la configuraci� de finestres..."
+
+#~ msgid "Loading server & proxy database..."
+#~ msgstr "Carregant la base de dades de servidors y proxys..."
+
+#~ msgid "Loading event handlers..."
+#~ msgstr "Carregant manipuladors d'events..."
+
+#~ msgid "Loading raw event handlers..."
+#~ msgstr "Carregant manipuladors d'events plans..."
+
+#~ msgid "Loading popups..."
+#~ msgstr "Carregant men�s desplegables..."
+
+#~ msgid "Loading toolbars..."
+#~ msgstr "Carregant barres d'eines..."
+
+#~ msgid "Loading aliases..."
+#~ msgstr "Carregant alies..."
+
+#~ msgid "Loading text icon associations..."
+#~ msgstr "Carregant associacions d'icones textuals"
+
+#~ msgid "Loading recent entries..."
+#~ msgstr "Carregant entrades recents"
+
+#~ msgid "Loading media types..."
+#~ msgstr "Carregant tipus de medis..."
+
+#~ msgid "Loading registered users..."
+#~ msgstr "Carregant usuaris registrats..."
+
+#~ msgid "Loading registered channels..."
+#~ msgstr "Carregant canals registrats..."
+
+#~ msgid "Loading file trader configuration..."
+#~ msgstr "Carregant configuraci� de compartici� d'arxius..."
+
+#~ msgid "Loading nick serv service configuration..."
+#~ msgstr "Carregant configuraci� de nick serv..."
+
+#~ msgid "Loading history entries..."
+#~ msgstr "Carregant entrades a l'hist�ric..."
+
+#~ msgid "Loading avatar cache..."
+#~ msgstr "Carregant cach� de l'avatar..."
+
+#~ msgid "Creating internal structures..."
+#~ msgstr "Creant estructures internes..."
+
+#~ msgid "Starting up the engine..."
+#~ msgstr "Iniciant el motor..."
+
+#~ msgid "Have fun! :)"
+#~ msgstr "Passa-t'ho b�! :)"
+
+#~ msgid "Show Crypto Controller"
+#~ msgstr "Mostrar Controlador de Xifrat"
+
+#~ msgid "Toggle Notify List"
+#~ msgstr "Alternar Llista de Notificacions"
+
+#~ msgid "Initiating startup sequence..."
+#~ msgstr "Iniciant seq��ncia d'inici..."
+
+#~ msgid "&New Alias"
+#~ msgstr "&Nou �lies"
+
+#~ msgid "Loading options..."
+#~ msgstr "Carregant opcions..."
+
+#~ msgid "defpopup: internal error"
+#~ msgstr "defpopup: error intern"
+
+#, fuzzy
+#~ msgid "User Messages"
+#~ msgstr "Missatge del sistema"
+
+#~ msgid "Transport"
+#~ msgstr "Transport"
+
+#, fuzzy
+#~ msgid "The specified window does not exist"
+#~ msgstr "No existeix la barra d'eines especificada"
+
+#, fuzzy
+#~ msgid "The specified timeout is not valid, assuming 0"
+#~ msgstr "El format de temps especificat no �s v�lid (%s)"
+
+#, fuzzy
+#~ msgid "No url specified"
+#~ msgstr "No s'ha especificat un text per al socket"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %s"
+#~ msgstr "Errada al comen�ar el proc�s"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %Q"
+#~ msgstr "Errada al comen�ar el proc�s"
+
+#, fuzzy
+#~ msgid "<unknown size>"
+#~ msgstr "desconegut"
+
+#, fuzzy
+#~ msgid "Unable to get address of interface %Q"
+#~ msgstr "Escoltar en adre�a/interf�cie:"
+
+#, fuzzy
+#~ msgid "Missing target nickname"
+#~ msgstr "Falta nou nick"
+
+#, fuzzy
+#~ msgid "Missing filename"
+#~ msgstr "Falta el nom del cron�metre"
+
+#, fuzzy
+#~ msgid "The file size is not an positive number"
+#~ msgstr "La finestra especificada no �s un canal"
+
+#, fuzzy
+#~ msgid "Invalid sample rate '%s', defaulting to 8000"
+#~ msgstr "Duraci� no v�lida (%s): emprant la duraci� per defecte"
+
+#, fuzzy
+#~ msgid "The current window has no associated DCC session"
+#~ msgstr "Aquesta finestra no t� context d'IRC associat"
+
+#, fuzzy
+#~ msgid "The specified parameter is not a valid DCC identifier"
+#~ msgstr "La finestra especificada no �s un canal"
+
+#, fuzzy
+#~ msgid "The specified window identifier is not valid"
+#~ msgstr "L'adre�a d'enlla� (bind) especificada (%Q) no �s v�lida"
+
+#, fuzzy
+#~ msgid "The first parameter must be an unsigned number"
+#~ msgstr "La finestra especificada no �s un canal"
+
+#, fuzzy
+#~ msgid "No filename specified"
+#~ msgstr "No s'ha especificat nom"
+
+#, fuzzy
+#~ msgid "The file '%s' is not readable"
+#~ msgstr "El men� emergent '%s' no est� definit"
+
+#, fuzzy
+#~ msgid "Invalid timeout, ignoring"
+#~ msgstr "Temps d'expiraci� no v�lid"
+
+#, fuzzy
+#~ msgid "Invalid visible name: using default"
+#~ msgstr "To no v�lid (%s): emprant el to per defecte"
+
+#, fuzzy
+#~ msgid "Ops..failed to add the sharedfile..."
+#~ msgstr "Ha fallat la c�rrega de l'arxiu d'imatge triat"
+
+#, fuzzy
+#~ msgid "The specified file size is invalid"
+#~ msgstr "El temps UNIX especificat no �s v�lid (%s)"
+
+#~ msgid "[Parser warning in '%s']: %s"
+#~ msgstr "[Av�s del parser en '%s']: %s"
+
+#, fuzzy
+#~ msgid "Windows XP style"
+#~ msgstr "Llista de Finestres"
+
+#, fuzzy
+#~ msgid " I can't find the specified file %s."
+#~ msgstr "No es pot trobar l'arxiu multim�dia %s"
+
+#~ msgid "-e mode change change"
+#~ msgstr "canvi de mode -e"
+
+#~ msgid "Missing file name to parse"
+#~ msgstr "Falta el nom de l'arxiu a analitzar"
+
+#~ msgid "A popup name is expected as parameter"
+#~ msgstr "S'espera un nom de men� emergent com a par�metre"
+
+#~ msgid "%Q [%Q@%Q] unsets avatar (%Q %Q)"
+#~ msgstr "%Q [%Q@%Q] treu el avatar (%Q %Q)"
+
+#~ msgid ""
+#~ "Can't set the current avatar to '%s' (failed to start the http transfer): "
+#~ "no message sent"
+#~ msgstr ""
+#~ "No puc posar l'avatar actual a '%s' (ha fallat l'inici de la "
+#~ "transfer�ncia http): no s'ha enviat el missatge"
+
+#~ msgid ""
+#~ "Can't set the current avatar to '%s' (can't load the image): no message "
+#~ "sent"
+#~ msgstr ""
+#~ "No puc posar l'actual avatar a '%s' (no puc carregar la imatge): no s'ha "
+#~ "enviat el missatge"
+
+#~ msgid "No socket text specified"
+#~ msgstr "No s'ha especificat un text per al socket"
+
+#~ msgid "&Export Alias To..."
+#~ msgstr "&Exportar �lies a..."
+
+#, fuzzy
+#~ msgid "The script \"%1\" does not exist"
+#~ msgstr "L'acci� \"%1\" no existeix"
+
+#~ msgid "Defaults"
+#~ msgstr "Per defecte"
+
+#~ msgid "Folders"
+#~ msgstr "Directoris"
+
+#~ msgid "Parser"
+#~ msgstr "Analitzador"
+
+#~ msgid "Configure KVIrc"
+#~ msgstr "Configurar KVIrc"
+
+#~ msgid "Show alias editor"
+#~ msgstr "Mostrar editor d'alias"
+
+#~ msgid "Show event editor"
+#~ msgstr "Mostra editor d'events"
+
+#~ msgid "Show popup editor"
+#~ msgstr "Mostra editor de men�s emergents"
+
+#~ msgid "Show raw event editor"
+#~ msgstr "Mostra editor d'envents raw"
+
+#~ msgid "Show toolbar editor"
+#~ msgstr "Mostra editor de barres d'eines"
+
+#~ msgid "New code tester"
+#~ msgstr "Comprovador de codi nou"
+
+#~ msgid "Unnamed"
+#~ msgstr "Sense nom"
+
+#~ msgid "&Toolbars..."
+#~ msgstr "Barres d'eines..."
+
+#~ msgid "&Script Tester"
+#~ msgstr "Comprovador d'&Scripts"
+
+#~ msgid "&New IRC Context"
+#~ msgstr "&Nou Context d'IRC"
+
+#~ msgid "runtime warning"
+#~ msgstr "av�s en execuci�"
+
+#~ msgid "compilation warning"
+#~ msgstr "av�s de compilaci�"
+
+#~ msgid "runtime error"
+#~ msgstr "error d'execuci�"
+
+#~ msgid "Missing data to evaluate"
+#~ msgstr "Falta dada per avaluar"
+
+#~ msgid "Missing hash for key evaluation"
+#~ msgstr "Falta hash per a l'avaluaci� de la clau"
+
+#~ msgid "The argument evaluated to type '%Q' while a hash was expected"
+#~ msgstr "L'argument s'ha avalat com de tipus '%Q' quan s'esperava un hash"
+
+#~ msgid "$sw expects a switch letter as parameter"
+#~ msgstr "$sw espera una lletra de canvi com a par�metre"
+
+#~ msgid "Can't find a running winamp window"
+#~ msgstr "No puc trobar una finestra de winamp funcionant"
+
+#~ msgid "Can't load the xmms library (libxmms.so)"
+#~ msgstr "No puc carregar la llibreria xmms (libxmms.so)"
+
+#~ msgid "Can't find symbol %s in libxmms.so"
+#~ msgstr "No trobo el s�mbol %s a libxmms.so"
+
+#~ msgid ""
+#~ "The winamp plugin has not been installed properly. Check /help $mp3player."
+#~ "gettitle"
+#~ msgstr ""
+#~ "El plugin de winamp no s'ha instal�lat correctament. Consulta /help "
+#~ "$mp3player.gettitle"
+
+#~ msgid "Frame window titlebar text:"
+#~ msgstr "Text del t�tol del marc de la finestra:"
+
+#~ msgid "Enable automatic NickServ identification"
+#~ msgstr "Activar identificaci� NickServ autom�tica"
+
+#~ msgid ""
+#~ "<center>This is a list of NickServ identification rules. KVIrc will use "
+#~ "them to model its automatic interaction with NickServ.<br>Please be aware "
+#~ "that this feature can cause your NickServ passwords to be stolen if used "
+#~ "improperly. Follow the suggestions in the tooltips and make sure that you "
+#~ "fully understand the NickServ authentication protocol.<br>In other words, "
+#~ "be sure to know what you're doing.<br>Also note that the password that "
+#~ "you provide is stored as <b>PLAIN TEXT</b>.Right-click to add/remove "
+#~ "rules.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta �s la llista de regals d'identificaci� de NickServ. KVIrc "
+#~ "les emprar� per a la seva interacci� autom�tica amb NickServ.<br>Si us "
+#~ "plau, tingui present que aquesta caracter�stica pot provocar que les "
+#~ "seves claus de NickServ siguin robades si s'utilitza indegudament. "
+#~ "Segueixi les sugger�ncies dels tooltips i asseguris que enten b� el "
+#~ "protocol d'autentificaci� NickServ.<br>En altres paraules, asseguris de "
+#~ "que sap el que est� fent.<br>Pensi que la clau que proporciona �s "
+#~ "emmagatzemada a <b>TEXT PLA</b>.Premi el bot� dret del ratol� per a "
+#~ "afegir/esborra regles.</center>"
+
+#~ msgid "Identification Rule"
+#~ msgstr "Regla d'Identificaci�"
+
+#~ msgid ""
+#~ "<center>This is the nickname that this rule will attempt to authenticate "
+#~ "with NickServ, i.e. the nickname that you have registered with NickServ</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Aquest �s el nick que emprar� aquesta regla per a intentar "
+#~ "autentificar-se amb NickServ, p.e., el nick amb el que s'hagi registrat "
+#~ "amb NickServ</center>"
+
+#~ msgid ""
+#~ "<center>This is a mask that defines the server(s) that this "
+#~ "identification rule will apply to. For a single server, this option "
+#~ "should just be a hostname like <b>irc.webchat.org</b>. You can use "
+#~ "wildcards to match multiple servers, e.g. <b>*.freenode.net</b> will work "
+#~ "on the whole freenode network (by matching any server names that end in "
+#~ "\".freenode.net\").<br>Please note that some servers have more than one "
+#~ "name. For example, <b>irc.eu.dal.net</b> redirects to a \"random\" DALNet "
+#~ "server, so the real server name will be different. You must provide the "
+#~ "name that the server calls itself, usually displayed in the console "
+#~ "window title.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta �s la m�scara que defineix el servidor(s) al que "
+#~ "s'aplicar� aquesta regla. Per a un �nic servidor, aquesta opci� hauria de "
+#~ "ser nom�s un nom de m�quina com <b>irc.irc-catalunya.org</b>. Pot emprar "
+#~ "comodins per a conconrdar amb m�ltiples servidors, p.e., <b>*.freenode."
+#~ "net</b> funcionar� amb la xarxa completa de Freenode (concordant amb "
+#~ "qualsevol servidor que acabi en \".freenode.org\").<br>Donis compte que "
+#~ "alguns servidors tenen m�s d'un nom. Per exemple, <b>irc.eu.dal.net</b> "
+#~ "redirecciona a un servidor \"aleatori\" de DALNet, per el que el nom del "
+#~ "servidor real ser� diferent. Ha de proporcionar el nom pel que el "
+#~ "servidor es crida a si mateix, habitualment mostrat en el t�tol de la "
+#~ "finestra de consola.</center>"
+
+#~ msgid "NickServ mask:"
+#~ msgstr "M�scara NickServ:"
+
+#~ msgid ""
+#~ "<center>This is the mask that NickServ must match to be correctly "
+#~ "identified as the NickServ service. This usually will be something like "
+#~ "<b>[email protected]</b>.<br>You can use wildcards for "
+#~ "this field, but generally it is a security flaw. If you're absolutely "
+#~ "sure that NO user on the network can use the nickname \"NickServ\", the "
+#~ "mask <b>NickServ!*@*</b> may be safe to use in this field.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta �s la m�scara que ha de concordar amb NickServ per a ser "
+#~ "correctament identificat amb el servei NickServ. Habitualment ser� una "
+#~ "cosa com <b>[email protected]</b>.<br>Pot emprar comodins "
+#~ "per aquest camp, per� generalment �s una errada de seguretat. Si est� "
+#~ "100% segur que CAP usuari a la xarxa pot emprar el nick \"NickServ\", pot "
+#~ "ser segur emprar la m�scara <b>NickServ!*@*</b> en aquest camp.</center>"
+
+#~ msgid "Identify command:"
+#~ msgstr "Comanda d'identificaci�:"
+
+#~ msgid ""
+#~ "<center>This is the command that will be executed when NickServ requests "
+#~ "authentication for the nickname described in this rule (if the both "
+#~ "server and NickServ mask are matched). This usually will be something "
+#~ "like <b>msg NickServ identify &lt;yourpassword&gt;</b>.<br>You can use "
+#~ "<b>msg -q</b> if you don't want the password echoed on the screen. Please "
+#~ "note that there is no leading slash in this command.</center>"
+#~ msgstr ""
+#~ "<center>Aquesta �s la comanda que ser� executada quan NickServ soliciti "
+#~ "autentificaci� per al nick descrit en aquesta regla (si ambdues m�scares, "
+#~ "la del servidor i la de NickServ, concorden). Habitualment ser� una cosa "
+#~ "com <b>msg NickServ identify &lt;latevaclau&gt;</b>.<br>Pot emprar <b>msg "
+#~ "-q</b> si no vol que la clau aparegui per pantalla. Si us plau, observi "
+#~ "que aquesta comanda no comen�a amb una barra (/).</center>"
+
+#~ msgid "&New Rule"
+#~ msgstr "&Nova Regla"
+
+#~ msgid "Re&move Rule"
+#~ msgstr "Eli&minar Regla"
diff --git a/po/modules/options/options_cs.po b/po/modules/options/options_cs.po
new file mode 100644
index 00000000..d4015d66
--- /dev/null
+++ b/po/modules/options/options_cs.po
@@ -0,0 +1,13331 @@
+# translation of kvirc_cs.po to czech
+# Czech translation of Kvirc 3.0.
+# Copyright (C) 2004 THE Kvirc 3.0'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the Kvirc 3.0 package.
+# Dusan Hokuv <[email protected]>, 2004.
+#
+#
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:304
+msgid ""
+msgstr ""
+"Project-Id-Version: kvirc-3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2008-01-16 08:51+0100\n"
+"Last-Translator: Dusan Hokuv <[email protected]>\n"
+"Language-Team: Czech <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:232
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:51
+msgid "Font:"
+msgstr "Font:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:47
+msgid "Background color:"
+msgstr "Barva pozadí:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:129
+msgid "Background image:"
+msgstr "Obrázek na pozadí:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:51
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:46
+msgid "Horizontal align:"
+msgstr "Horizontální zarovnání:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:50
+msgid "Vertical align:"
+msgstr "Vertikální zarovnání:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:59
+msgid "Mark Line:"
+msgstr "Označ řádek:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:66
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:124
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:59
+msgid "Tile"
+msgstr "Dlaždice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:62
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:55
+msgid "Left"
+msgstr "Vlevo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:56
+msgid "Right"
+msgstr "Vpravo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:132
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:62
+msgid "Center"
+msgstr "Centrovat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:60
+msgid "Top"
+msgstr "Nahoře"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:61
+msgid "Bottom"
+msgstr "Dole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:149
+msgid "Enable URL highlighting"
+msgstr "Povolit zvýrazňování URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:150
+msgid "Use line wrap margin"
+msgstr "Použít mez zalomení řádku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:151
+msgid "Maximum buffer size:"
+msgstr "Maximální velikost bufferu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:152
+msgid " lines"
+msgstr " řádků"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:153
+msgid "Link tooltip show delay:"
+msgstr "Prodleva zobrazení tooltipů:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:306
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:59
+msgid " msec"
+msgstr " msek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:155
+msgid "Link tooltip hide delay:"
+msgstr "Prodleva schování tooltipů:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:157
+msgid "Track last read text line"
+msgstr "Sledovat poslední přečtený řádek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:48
+msgid "NickServ Authentication Rule"
+msgstr "Autentifikační pravidlo NIckServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:55
+msgid "Registered NickName"
+msgstr "Registrovaná přezdívka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:60
+msgid "Put here the nickname that you have registered with NickServ"
+msgstr "Sem vložte přezdívku, kterou máte registrovanou s NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:277
+msgid "NickServ Mask"
+msgstr "NickServ Maska"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:70
+#, fuzzy, c-format
+msgid ""
+"This is the mask that NickServ must match to be correctly identified as the "
+"NickServ service. This usually will be something like <b>NickServ!"
+"[email protected]</b>.<br>You can use wildcards for this field, but "
+"generally it is a security flaw. If you're 100%% sure that NO user on the "
+"network can use the nickname \"NickServ\", the mask <b>NickServ!*@*</b> may "
+"be safe to use in this field."
+msgstr ""
+"Toto je maska, která musí souhlasit s NickServ, aby správně identifikovala "
+"NickServ službu. Většinou to bývá něco jako <b>NickServ!service@services."
+"dalnet</b>.<br>Můžete použít zástupné znaky v tomto poli, ale to je "
+"bezpečnostní riziko. Pokud jste si 100% jist, že NIKDO v síti nemůže použít "
+"přezdívku \"NickServ\", tak maska <b>NickServ!*@*</b> by měla být bezpečně "
+"použita v tomto poli."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:78
+msgid "Message Regexp"
+msgstr "Regexp zprávy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:86
+msgid ""
+"This is the simple regular expression that the identification request "
+"message from NickServ must match in order to be correctly recognized.<br>The "
+"message is usually something like \"To identify yourself please use /ns "
+"IDENTIFY password\" and it is sent when the NickServ wants you to "
+"authenticate yourself. You can use the * and ? wildcards."
+msgstr ""
+"Toto je jednoduchý regulérní výraz, který musí obsahovat identifikační "
+"požadavek od NickServ aby byl správně vyhodnocen.<br>Zpráva je většinou něco "
+"jako \"To identify yourself please use /ns IDENTIFY password\" a je poslána "
+"když chce NickServ abyste se autetntifikovali. Můžete použít zástupné znaky "
+"* a ?."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:259
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:279
+msgid "Identify Command"
+msgstr "Příkaz identifikace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:98
+msgid ""
+"This is the command that will be executed when NickServ requests "
+"authentication for the nickname described in this rule (if the both server "
+"and NickServ mask are matched). This usually will be something like <b>msg "
+"NickServ identify &lt;yourpassword&gt;</b>.<br>You can use <b>msg -q</b> if "
+"you don't want the password echoed on the screen. Please note that there is "
+"no leading slash in this command."
+msgstr ""
+"Toto je příkaz provedený, když NickServ požaduje autentizaci pro přezdívku "
+"popsanou v tomto pravidle (pokud obě masky serveru a NickServ jsou shodné). "
+"Většinou to bývá něco jako <b>msg NickServ identify &lt;vašeheslo&gt;</b>."
+"<br>Můžete použít <b>msg -q</b>, pokud nechcete, aby se heslo objevovalo na "
+"obrazovce. V tomto případě nepoužívejte v příkazu počáteční znak lomítka."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:256
+msgid "Server mask"
+msgstr "Serverová maska"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:117
+msgid ""
+"This is the mask that the current server must match in order for this rule "
+"to apply. It can contain * and ? wildcards.<br>Do NOT use simply \"*\" "
+"here..."
+msgstr ""
+"Toto je maska, kterou musí daný server obsahovat, aby bylo toto pravidlo "
+"provedeno. Může obsahovat zástupné znaky * a ?.<br>NEPOUŽÍVEJTE jednoduše \"*"
+"\" zde..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:128
+msgid "Hint: Move the mouse cursor over the fields to get help"
+msgstr "Tip: Přesuňte myš nad políčka pro získání nápovědy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:137
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:68
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:803
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:164
+msgid "Invalid NickServ Rule"
+msgstr "Neplatné NickServ pravidlo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:169
+msgid "The Nickname field can't be empty!"
+msgstr "Políčko přezdívky nemůže být prázdné!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:175
+msgid "The Nickname field can't contain spaces!"
+msgstr "Přezdívka nemůže obsahovat mezery!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:183
+msgid "The NickServ mask can't be empty!<br>You must put at least * there."
+msgstr ""
+"Maska NickServ nemůže být prázdná!<br>Musíte zde napsat alespoň znak *."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:191
+msgid "The Message Regexp can't be empty!<br>You must put at least * there."
+msgstr "Regexp zprávy nemůže být prázdný!<br>Musíte zde napsat alespoň znak *."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:199
+msgid "The Identify Command can't be empty!"
+msgstr "Příkaz identifikace nemůže být prázdný!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:265
+msgid "Enable NickServ Identification"
+msgstr "Povolit identifikaci NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:269
+msgid "This check enables the automatic identification with NickServ"
+msgstr "Toto povolí automatickou identifikaci s NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:276
+msgid "Nickname"
+msgstr "Přezdívka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:258
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:278
+msgid "NickServ Request Mask"
+msgstr "NickServ Maska požadavku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:265
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on all the networks."
+"<br>Please be aware that this feature can cause your NickServ passwords to "
+"be stolen if used improperly. Make sure that you fully understand the "
+"NickServ authentication protocol.<br>In other words, be sure to know what "
+"you're doing.<br>Also note that the password that you provide is stored as "
+"<b>PLAIN TEXT</b>.<br>KVIrc supports also per-network NickServ "
+"authentication rules that can be created in the \"Advanced...\" network "
+"options (accessible from the servers dialog).</center>"
+msgstr ""
+"<center>Toto je seznam identifikačních pravidel pro NickServ. KVIrc je "
+"použije jako šablonu pro automatickou interakci s NickServ ve všech sítích."
+"<br>Pamatujte, že tato vlastnost může způsobit krádež vašich NickServ hesel, "
+"pokud je použita nesprávně. Postupujte podle doporučení nápovědy a ujistěte "
+"se, že plně rozumíte autentifikačnímu protokolu NickServ.<br>Jinými slovy, "
+"musíte vědět co děláte.<br>Také nezapomínejte, že poskytovaná hesla jsou "
+"uložena jako <b>OBYČEJNÝ TEXT</b>.KVIrc podporuje také pravidla pro sítě, "
+"která mohou být vytvořena ve volbě \"Pokročilé...\" ve vlastnostech sítě "
+"(přístupné z dialogu serverů).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:293
+msgid "Add Rule"
+msgstr "Přidat pravidlo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:298
+msgid "Edit Rule"
+msgstr "Upravit pravidlo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:302
+msgid "Delete Rule"
+msgstr "Smazat pravidlo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:31
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:36
+msgid "Font"
+msgstr "Font"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:38
+msgid "Foreground color"
+msgstr "Barva popředí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:37
+msgid "Background color"
+msgstr "Barva pozadí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:34
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:44
+msgid "Background image"
+msgstr "Obrázek na pozadí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:40
+msgid "Enable tray icon"
+msgstr "Povolit ikonu panelu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:41
+msgid "Close in tray"
+msgstr "Zavřít v panelu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:42
+msgid "Minimize in tray"
+msgstr "Minimalizovat v panelu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:44
+msgid "Enable tray icon flashing"
+msgstr "Povolit blikání ikony v panelu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:45
+msgid "Enable level-based message notification (not a message-type based)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:47
+msgid "Select message levels to notify"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:49
+msgid "Minimum level for low-priority messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:53
+msgid "Minimum level for high-priority message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.cpp:40
+msgid ""
+"This section contains irc protection tools<br><p>like<b> flood, ignore, "
+"antispam. </b> </p>"
+msgstr ""
+"Tato sekce obsahuje irc ochranné nástroje<br><p>jako<b> flood, ignore, "
+"antispam. </b> </p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:40
+msgid ""
+"<center><b>Settings for CTCP.</b></center><p>The <b>Client-To-Client "
+"Protocol</b> (CTCP) is used to transmit special control messages over an IRC "
+"connection. These messages can request information from clients or negotiate "
+"file transfers.<br><br></p>"
+msgstr ""
+"<center><b>Nastavení pro CTCP</b></center><p><b>Client-To-Client Protocol</"
+"b> (CTCP) slouží pro přenos speciálních řídících zpráv přes IRC spojení. "
+"Tyto zprávy mohou požadovat informace od klientů nebo vyjednat přenosy "
+"souborů.<br><br></p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:47
+msgid "CTCP Replies"
+msgstr "CTCP Odezvy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:48
+msgid "Append to VERSION reply:"
+msgstr "Připojit k VERSION odezvě:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:52
+msgid ""
+"<center>This text will be appended to the CTCP VERSION reply.<br>For "
+"example, you can place a script name here.</center>"
+msgstr ""
+"<center>Tento text bude připojen k CTCP VERSION odpovědi.<br>Například sem "
+"můžete umístit jméno skriptu.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:55
+msgid "Append to SOURCE reply:"
+msgstr "Připojit k SOURCE odezvě:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:59
+msgid ""
+"<center>This text will be appended to the CTCP SOURCE reply.<br>For example, "
+"you can place the source URL for a script here.</center>"
+msgstr ""
+"<center>Tento text bude připojen k CTCP SOURCE odpovědi.<br>Například sem "
+"můžete umístit domovskou URL skriptu.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:69
+msgid "PAGE reply:"
+msgstr "PAGE odezva:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:73
+msgid ""
+"<center>This is the CTCP PAGE reply.<br>It should contain some sort of "
+"acknowledgement for CTCP PAGE messages.</center>"
+msgstr ""
+"<center>Toto je CTCP PAGE odpověď.<br>Měla by obsahovat nějaký druh "
+"potvrzení pro CTCP PAGE zprávy.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:76
+msgid "Show the CTCP replies in the active window"
+msgstr "Zobrazit CTCP odezvy v aktivním okně"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:78
+msgid "Show dialog for CTCP page requests"
+msgstr "Zobrazit dialog pro CTCP page požadavky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:36
+msgid "Use tree taskbar"
+msgstr "Použít stromovou lištu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:37
+msgid "Sort windows by name"
+msgstr "Řadit okna podle názvu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:38
+msgid "Show window icons in taskbar"
+msgstr "Zobrazit ikony oken v liště"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:39
+msgid "Show activity meter in taskbar"
+msgstr "Zobrazit měřič aktivity v liště"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:41
+msgid ""
+"<center>This option enables the usage of the taskbar activity meter. Each "
+"window entry will have a small indicator of the activity that is going on in "
+"that window. The indicator is a small square that changes colors, dark "
+"colors mean low activity, while bright colors signal high activity. KVIrc "
+"also uses some heuristics to determine whether the activity is somewhat "
+"\"human\" or it is generated by automated entities (such as bots or IRC "
+"servers). \"Human\" activity causes the indicator to be shaded red while "
+"automated activity causes the indicator to be shaded blue.</center>"
+msgstr ""
+"<center>Tato volba zapne používání měřiče aktivity. Každý záznam v okně bude "
+"mít malý indikátor aktivity pro dané okno. Indikátor je malá značka, která "
+"mění barvy, tmavé barvy znamenají nízkou aktivitu, světlé barvy signalizují "
+"vysokou. KVIrc také používá určité heuristiky pro určení, jestli je to "
+"aktivita \"lidí\" nebo je generována automatickými prvky (jako boti nebo IRC "
+"servery). \"Lidská\" aktivita má indikátor zabarvený červeně a automatická "
+"aktivita modře.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:49
+msgid "Show IRC context indicator in taskbar"
+msgstr "Zobrazit indikátor IRC kontextu v liště"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:50
+msgid "Enable window tooltips"
+msgstr "Povolit oknům tipy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:233
+msgid "Text/Alert Colors"
+msgstr "Barvy textu výstrah"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:125
+msgid "Normal:"
+msgstr "Normální:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:126
+msgid "Selected:"
+msgstr "Vybraný:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:236
+msgid "Alert Level 1:"
+msgstr "Výstraha 1:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:237
+msgid "Alert Level 2:"
+msgstr "Výstraha 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:238
+msgid "Alert Level 3:"
+msgstr "Výstraha 3:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:239
+msgid "Alert Level 4:"
+msgstr "Výstraha 4:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:240
+msgid "Alert Level 5:"
+msgstr "Výstraha 5:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:241
+msgid "Progress bar color:"
+msgstr "Barva ukazatele průběhu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:124
+msgid "Background Colors"
+msgstr "Barvy pozadí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:212
+msgid "Show header"
+msgstr "Zobrazit hlavičku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:214
+msgid "Minimum width:"
+msgstr "Minimální šířka:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:215
+msgid "Maximum width:"
+msgstr "Maximální šířka:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:235
+msgid "Minimized:"
+msgstr "Minimalizovaný:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:242
+msgid "Minimum width of buttons:"
+msgstr "Minimální šířka tlačítek:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:244
+msgid "Set maximum button width"
+msgstr "Nastavit maximální šířku tlačítek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:245
+msgid "Maximum width of buttons:"
+msgstr "Maximální šířka tlačítek:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:246
+msgid "Use flat buttons"
+msgstr "Použít plochá tlačítka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:96
+msgid "Network Details"
+msgstr "Detaily sítě"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:82
+msgid "Description:"
+msgstr "Popis:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:116
+msgid "<center>Put here a brief description of the network.</center>"
+msgstr "<center>Zde vložte krátký popis sítě.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:477
+msgid "Properties"
+msgstr "Vlastnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:123
+msgid "Username:"
+msgstr "Uživatelské jméno:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:134
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to servers "
+"on this network.\n"
+"If this field is left empty (most common case), KVIrc will use the default "
+"username specified in the \"Identity\" options tab.</center>"
+msgstr ""
+"<center>Toto je <b>uživatelské jméno</b>, které KVirc použije pro přihlášení "
+"k serverům této sítě.\n"
+"Pokud je toto pole prázné (nejčastější případ), KVIrc použije výchozí "
+"uživatelské jméno zadané v záložce \"Identita\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:498
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:320
+msgid "Nickname:"
+msgstr "Přezdívka:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:145
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to the servers on this network.<br>If this field is left empty (most "
+"common case), the default nickname (specified in the \"Identity\" settings) "
+"will be used.</center>"
+msgstr ""
+"<center>Můžete zadat \"speciální\" <b>přezdívku</b>, která bude použita pro "
+"přihlášení na tuto síť.<br>Pokud je toto pole prázdné (nejčastější případ), "
+"bude použito výchozí přezdívky (zadané v nastavení \"Identita\").</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:509
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:342
+msgid "Real name:"
+msgstr "Skutečné jméno:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:153
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with the servers on this network.<br>If you leave this field empty "
+"(most common case), the default \"real name\" (specified in the \"Identity\" "
+"settings) will be used.</center>"
+msgstr ""
+"<center>Můžete zadat \"speciální\" <b>skutečné jméno</b>, které bude použito "
+"pro přihlášení na tuto síť.<br>Pokud je toto pole prázdné (nejčastější "
+"případ), bude použito výchozí \"skutečné jméno\" (zadané v nastavení "
+"\"Identita\").</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:644
+msgid "Encoding:"
+msgstr "Kódování:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:164
+msgid ""
+"<center>This box allows you to choose the preferred encoding for the servers "
+"in this network. If you choose \"Use System Encoding\" then the encoding "
+"will be set to the systemwide value that you choose in the \"Encoding\" page "
+"of the options dialog.</center>"
+msgstr ""
+"<center>Toto umožní vybrat preferované kódování pro servery této sítě. Pokud "
+"si vyberete \"Použít systémové kódování\" bude kódování zvoleno podle "
+"systémové, kterou si zvolíte na stránce \"Kódování\" v dialogu Možnosti.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:173
+msgid "Use System Encoding"
+msgstr "Použít systémové kódování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:185
+msgid "Connect to this network at startup"
+msgstr "Připojit k této síti po spuštění"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:189
+msgid ""
+"<center>This option will cause KVIrc to automatically connect to this "
+"network at startup</center>"
+msgstr ""
+"<center>Tato volba způsobí, že se KVIrc po spuštění automaticky připojí do "
+"této sítě</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:79
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:120
+msgid "General"
+msgstr "Hlavní"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:756
+msgid "Channels to join automatically upon connect:"
+msgstr "Kanály pro automatický příchod po připojení:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:211
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to a server in this network has been established. To add a "
+"channel, type its name in the text input below and click \"<b>Add</b>\".</"
+"center>"
+msgstr ""
+"<center>Zde můžete nastavit seznam kanálů, na které budete automaticky "
+"připojeni po připojení k danému serveru vybrané sítě. Pro přidání kanálu, "
+"napište jeho jméno do textového pole a klikněte na \"<b>Přidat</b>\".</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:217
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:62
+msgid "Join Channels"
+msgstr "Příchod do kanálů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:228
+msgid ""
+"<center>The following commands will be executed after a connection to a "
+"server in this network has been established.<br><b>Important:</b> Enter "
+"commands <b>without</b> a preceding slash (e.g. <tt>quote pass secret</tt> "
+"instead of <tt>/quote pass secret</tt>).<br>KVIrc will first send the USER "
+"command, then eventually PASS and NICK and then execute this command "
+"sequence.</center>"
+msgstr ""
+"<center>Následující příkazy budou provedeny po úspěšném navázaní spojení se "
+"serverem v této síti.<br><b>Důležité:</b> Zadejte příkazy <b>bez</b> lomítka "
+"(např. <tt>quote pass secret</tt> místo <tt>/quote pass secret</tt>)."
+"<br>KVIrc nejdříve pošle příkaz USER , potom eventuelně PASS a NICK a "
+"nakonec provede tuto sekvenci příkazů.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:782
+msgid "On Connect"
+msgstr "Při připojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:249
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"a server in this network.<br><b>Important:</b> Enter commands <b>without</b> "
+"a preceding slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote "
+"privatelog</tt>).<br>This is useful for automatically opening queries, "
+"setting variables, etc.</center>"
+msgstr ""
+"<center>Následující příkazy budou provedeny po úspěsném přihlášení na server "
+"v této síti.<br><b>Důležité:</b> Zadejte příkazy <b>bez</b> lomítka (např. "
+"<tt>quote privatelog</tt> místo <tt>/quote privatelog</tt>).<br>Toto je "
+"užitečné pro automatické otevírání query, nastavování proměnných, atd.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:801
+msgid "On Login"
+msgstr "Při přihlášení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:285
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on this network.<br>Please "
+"be aware that this feature can cause your NickServ passwords to be stolen if "
+"used improperly. Make sure that you fully understand the NickServ "
+"authentication protocol.<br>In other words, be sure to know what you're "
+"doing.<br>Also note that the password that you provide is stored as <b>PLAIN "
+"TEXT</b>.</center>"
+msgstr ""
+"<center>Toto je seznam identifikačních pravidel pro NickServ. KVIrc je "
+"použije jako šablonu pro automatickou interakci s NickServ.<br>Pomatujte, že "
+"tato vlastnost může způsobit krádež vašich NickServ hesel, pokud je použita "
+"nesprávně. Postupujte podle doporučení nápovědy a ujistěte se, že plně "
+"rozumíte autentifikačnímu protokolu NickServ.<br>Jinými slovy, musíte vědět "
+"co děláte.<br>Také nezapomínejte, že poskytovaná hesla jsou uložena jako "
+"<b>OBYČEJNÝ TEXT</b>.Pravým kliknutím přidáte/odeberete pravidla.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:35
+msgid "NickServ"
+msgstr "NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:323
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:60
+msgid "&OK"
+msgstr "&OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:449
+msgid "Server Details"
+msgstr "Detaily serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:465
+msgid ""
+"<center>This is a brief description of this server. This field has no "
+"restrictions but many server lists use it to describe the server's physical "
+"location</center>"
+msgstr ""
+"<center>Toto je stručný popis serveru. Pole nemá žádná omezení, ale spousta "
+"serverových seznamů jej používá k popisu lokace fyzického umístění serveru</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:484
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to this "
+"server.\n"
+"If this field is left empty (most common case), KVIrc will first look if an "
+"username is specified for the network that this server belongs to, and if "
+"that is empty then KVIrc will use the default username specified in the "
+"\"Identity\" options tab.</center>"
+msgstr ""
+"<center>Toto je <b>uživatelské jméno</b>, které KVirc použije pro přihlášení "
+"k tomuto serveru.\n"
+"Pokud je toto pole prázné (nejčastější případ), KVIrc se nejdříve přesvědčí, "
+"jestli je uživatelské jméno určené pro síť ve které je tento server, a pokud "
+"je prázdné, tak KVIrc použije výchozí uživatelské jméno zadané v záložce "
+"\"Identita\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:490
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:127
+msgid "Password:"
+msgstr "Heslo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:495
+msgid ""
+"<center>If this server requires a password, put it in this field, otherwise "
+"leave it empty.</center>"
+msgstr ""
+"<center>Pokud server vyžaduje heslo, vložte ho do tohoto pole, jinak ho "
+"nechte prázdné.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:504
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to this server.<br>If this field is left empty (most common case), "
+"KVIrc will first look if a nickname is specified for the network that this "
+"server belongs to, and if that is empty then the default nickname (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center>Můžete zadat \"speciální\" <b>přezdívku</b>, která bude použita pro "
+"přihlášení na tento server.<br>Pokud je toto pole prázdné (nejčastější "
+"případ), KVIrc se nejdříve přesvědčí, jestli je přezdívka určená pro síť ve "
+"které je tento server, a pokud je prázdné, tak KVIrc použije výchozí "
+"přezdívku zadanou v záložce \"Identita\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:513
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with this server.<br>If you leave this field empty (most common case), "
+"KVIrc will first look if a real name is specified for the network that this "
+"server belongs to, and if that is empty the default \"real name\" (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center>Můžete zadat \"speciální\" <b>skutečné jméno</b>, které bude použito "
+"pro přihlášení na tento server.<br>Pokud je toto pole prázdné (nejčastější "
+"případ), KVIrc se nejdříve přesvědčí, jestli je skutečné jméno určené pro "
+"síť ve které je tento server, a pokud je prázdné, tak KVIrc použije výchozí "
+"skutečné jméno zadané v záložce \"Identita\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:683
+msgid "User Mode"
+msgstr "Uživatelský mód"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:520
+msgid "Use default user mode"
+msgstr "Použít výchozí nastavení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:522
+msgid ""
+"<center>If this is enabled, the global initial <b>user mode</b> (configured "
+"from the identity dialog) will be used. If disabled, you can configure an "
+"initial user mode for this server"
+msgstr ""
+"<center>Pokud je povoleno, bude použit na začátku globální <b>uživatelský "
+"mód</b> (nastavený v dialogu Identita). Pokud není povoleno, můžete pro "
+"tento server nastavit počáteční uživatelský mód"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:684
+msgid "Invisible (+i)"
+msgstr "Neviditelný (+i)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:534
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:685
+msgid "Server notices (+s)"
+msgstr "Oznámení serveru (+s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:686
+msgid "Wallops (+w)"
+msgstr "Wallops (+w)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:548
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:60
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:104
+msgid "Identity"
+msgstr "Identita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:115
+msgid "Port:"
+msgstr "Port:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:565
+msgid ""
+"<center>This is the default <b>port</b> that this server will be contacted "
+"on.<br>Usually <b>6667</b> is OK.</center>"
+msgstr ""
+"<center>Toto je výchozí <b>port</b>, na kterém bude server kontaktován."
+"<br>Obvykle je <b>6667</b> OK.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:571
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:119
+msgid "IP address:"
+msgstr "IP adresa:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:576
+msgid ""
+"<center>This is the <b>IP address</b> of this server, it is here for caching "
+"purposes.<br>If you leave this field empty, KVIrc will fill it in the first "
+"time it connects to the server. If you enable the \"cache IP address\" "
+"option below, KVIrc will use it as a \"cached result\" and avoid looking it "
+"up again.</center>"
+msgstr ""
+"<center>Toto je <b>IP adresa</b> tohoto serveru a je zde pro účely cachování."
+"<br>Pokud necháte toto pole prázdné, KVIrc ho vyplní při prvním připojení na "
+"server. Pokud povolíte volbu \"cachovat IP adresu\" uvedenou níže, KVIrc ji "
+"použije jako \"nacachovaný výsledek\" a nebude dále adresu zjišťovat.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:596
+msgid "Cache IP address"
+msgstr "Cache IP adresy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:599
+msgid ""
+"<center>This check will enable <b>IP address caching</b> for this server:"
+"<br>DNS lookups can be time-consuming and might be blocking on some "
+"platforms; this option will cause KVIrc to look up the server hostname only "
+"once.<br><br> Advanced: you can also use this option to force a certain "
+"server name to resolve to a fixed ip address when either the dns for that "
+"server is temporairly unreachable or you want to avoid the round-robin "
+"lookups.</center>"
+msgstr ""
+"<center>Toto povolí <b>cachování IP adresy</b> pro tento server:<br>DNS "
+"dotazy zabírají čas a mohou být blokovány na některých platformách; tato "
+"volba způsobí, že KVIrc zjistí hostitele jen jednou.<br><br> Pokročilé: tuto "
+"volbu můžete také použít pro vynucení zjištění fixní ip adresy některého "
+"serveru, když je dns dočasně nedostupné nebo chcete předejít round-"
+"robindotazům.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:609
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:140
+msgid "Use IPv6 protocol"
+msgstr "Použít IPv6 protokol"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:619
+msgid ""
+"<center>This check identifies IPv6 servers.<br>If enabled, KVIrc will "
+"attempt to use the IPv6 protocol (thus your OS <b>must</b> have a working "
+"IPv6 stack and you <b>must</b> have an IPv6 connection).</center>"
+msgstr ""
+"<center>Toto identifikuje IPv6 servery.<br>Pokud je zapnuto, KVIrc se bude "
+"pokoušet používat IPv6 protokol (tudíž váš OS <b>musí</b> mít fungující IPv6 "
+"podporu a <b>musíte</b> mít funkční IPv6 připojení).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:624
+msgid "Use SSL protocol"
+msgstr "Použít SSL protokol"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:627
+msgid ""
+"<center>This check will cause the connection to use the <b>Secure Socket "
+"Layer</b> encryption support. Obviously, this server must have support for "
+"this, too. :)</center>"
+msgstr ""
+"<center>Způsobí, že k připojení bude použito šifrovací podpory <b>Secure "
+"Socket Layer</b>.Je samozřejmostí, že server musí toto připojení také "
+"podporovat. :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:636
+msgid "Connect to this server at startup"
+msgstr "Připojit k tomuto serveru po spuštění"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:641
+msgid ""
+"<center>This option will cause KVIrc to connect to the IRC server when it is "
+"started.</center>"
+msgstr ""
+"<center>Tato volba způsobí, že se KVIrc po spuštění připojí k IRC serverům.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:650
+msgid ""
+"<center>This box allows you to choose the preferred encoding for this sever. "
+"If you choose \"Use Network Encoding\" then the encoding will be inherited "
+"from the network that this server belongs to.</center>"
+msgstr ""
+"<center>Toto umožní vybrat preferované kódování pro tento server. Pokud si "
+"vyberete \"Použít kódování sítě\" bude kódování zvoleno podle sítě, ve které "
+"se server nachází.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:659
+msgid "Use Network Encoding"
+msgstr "Použít kódování sítě"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:672
+msgid "Link filter:"
+msgstr "Filtr linku:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:701
+msgid ""
+"<center>This field specifies the name of a module that exports a link filter "
+"for this type of server.<br>For plain IRC connections, you don't need any "
+"link filters; this is used for incompatible protocols.</center>"
+msgstr ""
+"<center>Toto pole určuje název modulu, který exportuje filtr linků pro tento "
+"typ serverů.<br>Pro obyčejné IRC spojení nepotřebujete žádné filtry linků; "
+"používá se to pro nekompatibilní protokoly.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:705
+msgid "Id:"
+msgstr "Id:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:713
+msgid ""
+"<center>This field allows you to specify a really unique id for this server. "
+"You will then be able to use /server -x &lt;this_id&gt; to make the "
+"connection. This is especially useful when you have multiple server entries "
+"with the same hostname and port in different networks (bouncers?)</center>"
+msgstr ""
+"<center>Toto pole umžní určit skutečné unikátní id pro tento server. Budete "
+"moci použít /server -x &lt;toto_id&gt; pro navázání spojení. To se hodí "
+"především, pokud máte několik serverových záznamů se stejným hostname a "
+"portem na různých sítích (bouncery?)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:719
+msgid "Proxy server:"
+msgstr "Proxy server:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:724
+msgid ""
+"<center>This is the <b>proxy</b> that KVIrc will use to connect to thos "
+"server.\n"
+"If this field is set in \"Default\" KVirc will use global proxy settings, if "
+"it is set in \"Direct connection\" KVirc will connect to this server without "
+"proxy. You can define new proxy server in global options' \"Proxy servers\" "
+"menu.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:729
+msgid "Default"
+msgstr "Výchozí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:730
+msgid "Direct connection"
+msgstr "Přímé spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:746
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:28
+msgid "Connection"
+msgstr "Spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:758
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to this server has been established. To add a channel, type its "
+"name in the text input below and click \"<b>Add</b>\".</center>"
+msgstr ""
+"<center>Zde můžete nastavit seznam kanálů, na které budete automaticky "
+"připojeni po připojení k danému serveru. Pro přidání kanálu, napište jeho "
+"jméno do textového pole a klikněte na \"<b>Přidat</b>\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:776
+msgid ""
+"<center>The following commands will be executed after a connection has been "
+"established.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote pass secret</tt> instead of <tt>/quote pass secret</"
+"tt>).<br>KVIrc will first send the USER command, then eventually PASS and "
+"NICK and then execute this command sequence.<br>This is particularly useful "
+"for IRC bouncers that require login commands.</center>"
+msgstr ""
+"<center>Následující příkazy budou provedeny po úspěšném navázaní spojení."
+"<br><b>Důležité:</b> Zadejte příkazy <b>bez</b> lomítka (např. <tt>quote "
+"pass secret</tt> místo <tt>/quote pass secret</tt>).<br>KVIrc nejdříve pošle "
+"příkaz USER , potom eventuelně PASS a NICK a nakonec provede tuto sekvenci "
+"příkazů.<br>Toto je obzvláště užitečné pro IRC bouncery, které vyžadují "
+"příkazy pro přihlášení.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:796
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"this server.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote privatelog</tt>)."
+"<br>This is useful for automatically opening queries, setting variables, etc."
+"</center>"
+msgstr ""
+"<center>Následující příkazy budou provedeny po úspěsném přihlášení na tento "
+"server.<br><b>Důležité:</b> Zadejte příkazy <b>bez</b> lomítka (např. "
+"<tt>quote privatelog</tt> místo <tt>/quote privatelog</tt>).<br>Toto je "
+"užitečné pro automatické otevírání query, nastavování proměnných, atd.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1041
+msgid "Server"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1042
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:73
+msgid "Description"
+msgstr "Popis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1054
+msgid ""
+"<center>This is the list of available IRC servers.<br>Right-click on the "
+"list to add or remove servers and perform other actions.<br>Double-click on "
+"a item for advanced options.</center>"
+msgstr ""
+"<center>Toto je seznam dostupných IRC serverů.<br>Pravým kliknutím na seznam "
+"lze přidávat, nebo ubírat servery a provádet další akce.<br>Dvojitým "
+"kliknutím otevřete další možnosti položky.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1069
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1430
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1554
+msgid "New Network"
+msgstr "Nová Síť"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1077
+msgid "New Server"
+msgstr "Nový Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1086
+msgid "Remove Network/Server"
+msgstr "Smazat Síť/Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1098
+msgid "Copy Server"
+msgstr "Kopírovat Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1107
+msgid "Paste Server"
+msgstr "Vložit Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1446
+msgid "Import List"
+msgstr "Importovat seznam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1125
+msgid "Active Configuration"
+msgstr "Aktivní konfigurace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1332
+msgid "Server:"
+msgstr "Server:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1130
+msgid ""
+"<center>This is the name of the currently selected server or network</center>"
+msgstr "<center>Toto je název současného zvoleného serveru nebo sítě.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1153
+msgid "Advanced..."
+msgstr "Pokročilé..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1156
+msgid "<center>Click here to edit advanced options for this entry</center>"
+msgstr ""
+"<center>Klikněte zde pro úpravy pokročilých možností tohoto záznamu.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1159
+msgid "Connect &Now"
+msgstr "Připojit &Nyní"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1164
+msgid ""
+"<center>Hit this button to connect to the currently selected server.</center>"
+msgstr ""
+"<center>Stiskněte toto tlačítko pro připojení k právě vybranému serveru.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1177
+msgid ""
+"<center>This button shows a list of recently used servers. It allows you to "
+"quickly find them in the list.</center>"
+msgstr ""
+"<center>Toto tlačítko zobrazuje seznam nedávno použitých serverů. To vám "
+"umožňuje rychlé hledání v seznamu.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1181
+msgid "Show this dialog at startup"
+msgstr "Zobrazit tento dialog při spuštění"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1184
+msgid ""
+"<center>If this option is enabled, the Servers dialog will appear every time "
+"you start KVIrc</center>"
+msgstr ""
+"<center>Pokud je tato volba zapnuta, dialogové okno Seznam serverů se "
+"zobrazí při každém zapnutí KVIrc</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1335
+msgid "Network:"
+msgstr "Síť:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1345
+msgid "No selection"
+msgstr "Žádný výběr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1364
+msgid "UnknownNet"
+msgstr "NeznámáSíť"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1431
+msgid "Remove Network"
+msgstr "Smazat Síť"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1434
+msgid "&New Server"
+msgstr "&Nový server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1435
+msgid "Re&move Server"
+msgstr "S&mazat server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1437
+msgid "&Copy Server"
+msgstr "&Kopírovat server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1439
+msgid "&Paste Server"
+msgstr "&Vložit server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1444
+msgid "Clear List"
+msgstr "Smazat seznam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1483
+msgid ""
+"Oops... something weird happened:<br>Can't find any module capable of "
+"importing servers."
+msgstr ""
+"Oops... něco zvláštního se stalo:<br>Nelze nalézt žádný modul pro import "
+"serverů."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1500
+msgid ""
+"Oops... something weird happened:<br>Can't find the module that was capable "
+"of this import action. :("
+msgstr ""
+"Oops... něco divného se stalo:<br>Nemohu nalézt modul, který umí tuto "
+"importní akci. :("
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1574
+msgid "irc.unknown.net"
+msgstr "irc.neznama.sit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:39
+msgid "Disable parser warnings"
+msgstr "Zakázat varování parseru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:40
+msgid "Disable broken event handlers"
+msgstr "Zakázat poškozené handlery událostí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:41
+msgid "Kill broken timers"
+msgstr "Ukončit poškozené časovače"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:42
+msgid "Send unknown commands as /RAW"
+msgstr "Posílat neznámé příkazy jako /RAW"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:46
+msgid "Automatically unload unused modules"
+msgstr "Automaticky mazat z paměti nepoužité moduly"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:47
+msgid "Ignore module versions (dangerous)"
+msgstr "Ignorovat verze modulů (nebezpečné)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:51
+msgid "Relay errors and warnings to debug window"
+msgstr "Podobné chyby a upozornění do ladícího okna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:52
+msgid "Create minimized debug window"
+msgstr "Vytvořit minimalizované ladící okno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:59
+msgid "Nickname alternatives"
+msgstr "Alternativní přezdívky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:62
+msgid ""
+"<center>Here you can choose up to three nicknames alternative to the primary "
+"one. KVIrc will use the alternatives if the primary nick is already used by "
+"someone else on a particular IRC network.</center>"
+msgstr ""
+"<center>Zde si můžete vybrat až tři alternativy k vaší hlavní přezdívce. "
+"KVIrc použije alternativy, pokud je vaše hlavní přezdívka používána někým "
+"jiným na příslušné IRC síti.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:69
+msgid "Alt. Nickname 1:"
+msgstr "Alt. přezdívka 1:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:76
+msgid "Alt. Nickname 2:"
+msgstr "Alt. přezdívka 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:83
+msgid "Alt. Nickname 3:"
+msgstr "Alt. přezdívka 3:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Ok"
+msgstr "Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:130
+msgid "Avatar Download - KVIrc"
+msgstr "Stažení Avataru - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:136
+msgid "<center>Please wait while the avatar is being downloaded</center>"
+msgstr "<center>Prosím počkejte, dokud nebude avatar stažen</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:139
+msgid "Abort"
+msgstr "Přerušit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:170
+msgid "Failed to start the download"
+msgstr "Stahování selhalo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:184
+msgid "Download aborted by user"
+msgstr "Stahovaní přerušeno uživatelem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:213
+msgid "Choose Avatar - KVIrc"
+msgstr "Výběr Avataru - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:219
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+"Prosím vyberte obrázek avataru. Úplná cesta k souboru na disku nebo obrázku "
+"na na WEBu může být použita.<br>Pokud si přejete použít lokální soubor, "
+"klikněte na tlačítko\"<b>Procházet</b>\"k procházení adresářů.<br>Plná URL "
+"adresa obrázku (včetně <b>http://</b>) může být napsána ručně."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:237
+msgid "&Browse..."
+msgstr "&Procházet..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:275
+msgid "Choose an Image File - KVIrc"
+msgstr "Vyberte soubor obrázku - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:316
+msgid "Basic Properties"
+msgstr "Základní Vlastnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:323
+msgid ""
+"<center>Your <b>nickname</b> is your primary form of identification on IRC."
+"<br>Since servers cannot accept multiple users sharing the same nickname "
+"(case insensitive), you can provide alternative nicknames to be used in "
+"casethe server refuses to accept the default one.</center>"
+msgstr ""
+"<center>Vaše <b>přezdívka</b> je vaší primární formou identifikace na IRC."
+"<br>Protože servery neakceptují více uživatelů se stejnou přezdívkou "
+"(nerozlišuje se velikost), můžete si nastavit alternativní přezdívky pro "
+"použití, když server výchozí odmítne.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:331
+msgid "Alternatives..."
+msgstr "Alternativy..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:337
+msgid ""
+"<center>This is the <b>username</b> that you will use to connect to the "
+"server.<br>In the past, it was used as a form of authentication, but it "
+"normally has no special use now.<br>In addition to your nickname, you are "
+"identified on IRC by your <b>username@hostname</b>.</br>Basically, you can "
+"enter any word you like here. :D</center>"
+msgstr ""
+"<center>Toto je <b>uživatelské_jméno</b> které bude použito při připojení k "
+"serveru.<br>V minulosti bylo používáno jako druh autentikace, ale dnes již "
+"nemá žádný speciální význam.<br>Jako dodatek k vaší přezdívce jste "
+"identifikováni na IRC serveru pomocí <b>uživatelské_jméno@hostitel</b>.</"
+"br>V podstatě zde můžete napsat, cokoliv chcete. :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:346
+msgid ""
+"<center>This text will appear when someone does a /WHOIS on you.<br>It is "
+"intended to be your real name, but people tend to put random quotes and "
+"phrases here too.</center>"
+msgstr ""
+"<center>Tento text se objeví, pokud na vás někdo použije /WHOIS.<br>Je určen "
+"pro vaše skutečné jméno, ale lidé mají také sklony vkládat sem různé "
+"poznámky a fráze.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:351
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:356
+msgid "Profile"
+msgstr "Profil"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:361
+msgid "Age:"
+msgstr "Věk:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:366
+msgid "Here you can specify your age."
+msgstr "Zde můžete napsat váš věk."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:401
+msgid "Unspecified"
+msgstr "Neurčeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:391
+msgid "Gender:"
+msgstr "Pohlaví:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:396
+msgid "Here you can specify your gender."
+msgstr "Zde můžete napsat své pohlaví."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:402
+msgid "Female"
+msgstr "Žena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:403
+msgid "Male"
+msgstr "Muž"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:414
+msgid "Location:"
+msgstr "Umístění:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:417
+msgid ""
+"You can describe here your approximate physical location. Something like "
+"\"Region, Country\" will be ok. Please note that this information will be "
+"viewable by anyone so putting more data (like the exact address), generally, "
+"<b>is not a good idea</b>."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:422
+msgid "Languages:"
+msgstr "Jazyky:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:425
+msgid ""
+"You can put here the short names of the languages you can speak. An example "
+"might be \"EN,IT\" that would mean that you speak both Italian and English."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:429
+msgid "Other:"
+msgstr "Ostatní:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:432
+msgid ""
+"You can put here some additional personal data. It might be a funny quote or "
+"your homepage url... Please note that this information will be viewable by "
+"anyone so <b>don't put any sensible data</b> (passwords, telephone or credit "
+"card numbers)."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:502
+msgid ""
+"Here you can choose your avatar image. It will be visible<br>by other people "
+"that request it. Choose a nice image of yourself,<br>possibly avoiding "
+"obscenity and offending images. It is a good idea<br>to choose a relatively "
+"small file (say 150 Kb max) because<br>most clients have a limit on the size "
+"of avatars being downloaded.<br>The image also should be smaller than "
+"800x600 pixels since<br>it will have to be viewable in everyone's monitor."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:511
+msgid "Use avatar"
+msgstr "Použít avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:537
+msgid "Choose..."
+msgstr "Vyberte..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:598
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:637
+msgid "Failed to Load Avatar - KVIrc"
+msgstr "Selhalo načtení avataru - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:599
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:638
+msgid ""
+"Failed to load the avatar image.<br>It may be an unaccessible file or an "
+"unsupported image format."
+msgstr ""
+"Selhalo nahrání avatar obrázku.<br>Je možné, že k souboru nelze přistupovat "
+"nebo se jedná o nepodporovaný typ obrázku."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:606
+msgid "Failed to download the avatar image.<br><b>%Q</b>"
+msgstr "Selhalo stažení avatar obrázku.<br><b>%Q</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:608
+msgid "Avatar Download Failed - KVIrc"
+msgstr "Stažení Avataru selhalo - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:649
+msgid "Avatar Might Be Too Big - KVIrc"
+msgstr "Avatar je možná příliš velký - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:650
+msgid ""
+"The avatar you have choosen is bigger than 1024x768 pixels.<br>Such a big "
+"image will not be seen on all the user monitors<br>and will probably be "
+"scaled by the remote clients with poor quality<br>algorithms to improve "
+"performance. You *should* scale it manually<br>to a sane size (like 800x600) "
+"or choose a different image."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:688
+msgid "Default Messages"
+msgstr "Výchozí Zprávy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:691
+msgid "Part message:"
+msgstr "Odchodová zpráva:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:695
+msgid ""
+"<center>This is the default part message that will be used when you<br>leave "
+"a channel by closing a channel window.</center>"
+msgstr ""
+"<center>Toto je výchozí odcházecí zpráva, která bude použita "
+"když<br>opustíte kanál zavřením okna kanálu.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:699
+msgid "Quit message:"
+msgstr "Opouštěcí zpráva:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:702
+msgid ""
+"<center>This is the default quit message that will be used when you<br>quit "
+"your IRC session by closing the console window or disconnecting by pressing "
+"the disconnect button.</center>"
+msgstr ""
+"<center>Toto je výchozí opouštěcí zpráva, která bude použita "
+"když<br>opustíte vaši IRC relaci zavřením okna konzole, nebo odpojením "
+"zmáčknutí tlačítka pro odpojení.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:42
+msgid "Open Query For"
+msgstr "Otervřít Query pro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:40
+msgid "Private messages"
+msgstr "Soukromé zprávy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:46
+msgid ""
+"<center>This option enables query window creation when a private message "
+"(PRIVMSG) is received.<br>If you disable this, private messages will be "
+"shown in the active window or a common channel.</center>"
+msgstr ""
+"<center>Tato volba umožňuje automatické vytvoření okna query, když je "
+"přijata soukromá zpráva (PRIVMSG).<br>Pokud ji vypnete, soukromé zprávy se "
+"budou zobrazovat v aktivním okně, nebo na běžném kanále.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:42
+msgid "Private notices"
+msgstr "Soukromá oznámení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:55
+msgid ""
+"<center>This option enables query window creation when a private notice "
+"(NOTICE) is received.<br>If you disable this, private notices will be shown "
+"in the active window or a common channel.</center>"
+msgstr ""
+"<center>Tato volba umožňuje automatické vytvoření okna query, když je "
+"přijato soukromé ohlášení (NOTICE).<br>Pokud ji vypnete, soukromé ohlášení "
+"se budou zobrazovat v aktivním okně, nebo na běžném kanále.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:62
+msgid "Always open queries as minimized"
+msgstr "Vždy otevřít query minimalizovaně"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:66
+msgid ""
+"<center>This option causes newly created query windows to be immediately "
+"minimized.<br>Enable this if you don't like queries popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+"<center>Tato volba způsobí, že se nově vytvořená query okna okamžitě "
+"minimalizují.<br>Zapněte, pokud nemáte rádi vyskakující query, zrovna když "
+"píšete někomu na kanálu. :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:74
+msgid "Enable target user tracking"
+msgstr "Povolit sledování cílového uživatele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:77
+msgid ""
+"<center>This option will enable target user tracking.<br>Some actions of the "
+"target user (e.g. joins and parts) will be displayed in the window.<br></"
+"center>"
+msgstr ""
+"<center>Tato volba umožní sledování uživatele.<br>Některé akce sledovaného "
+"uživatele (např. příchody a odchody) budou zobrazeny v okně.<br></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:83
+msgid "Flash system taskbar on new query message"
+msgstr "Blikající systémová lišta při nové query zprávě"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:86
+msgid ""
+"<center>This option causes the system taskbar entry for KVIrc to flash when "
+"a new query message is received and the KVIrc window is not the active.</"
+"center>"
+msgstr ""
+"<center>Tato volba způsobí, že KVIrc na liště začne blikat, když je obdržena "
+"nová query zpráva a okno KVIrc není aktivní.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:91
+msgid "Popup notifier on new query message"
+msgstr "Zobrazit oznamovač při nové query zprávě"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:94
+msgid ""
+"<center>This option causes a small notifier window to pop up in the low "
+"right corner of the screen when a new message is received and the KVIrc "
+"window is not active.</center>"
+msgstr ""
+"<center>Tato volba způsobí, že se objeví malé upozorňovací okno v pravém "
+"dolním rohu obrazovky, když obdržíte novou zprávu a okno KVIrc není aktivní."
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:98
+msgid "Show information about query target at the top of the query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:101
+msgid ""
+"<center>This option enables query window information label. It can show you "
+"known information about query target at the top of the window.<br>Uncheck if "
+"you think,that it wastes your query space/</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:39
+msgid "Use global application font"
+msgstr "Použít globální font aplikace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:40
+msgid "Hide icons in Popup"
+msgstr "Schovat ikony v popupu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:41
+msgid "Global application font:"
+msgstr "Globální font aplikace:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:67
+msgid "Enable fake transparency"
+msgstr "Povolit falešnou průhlednost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:71
+msgid ""
+"<center>This option makes all KVIrc windows look transparent.<br>You must "
+"choose a blending background image to below or check the \"Use KDE desktop "
+"for transparency\" option.</center>"
+msgstr ""
+"<center>Tato volba umožní všem oknům KVirc vypadat průhledně.<br>Musíte "
+"vybrat obrázek, který se hodí k pozadí. Nebo zapněte \"Použít KDE desktop "
+"pro průhlednost\" volbu.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:77
+msgid ""
+"<center>This option makes all KVIrc windows look like transparent.<br>You "
+"must choose a blending background image to below.</center>"
+msgstr ""
+"<center>Tato volba umožní všem oknům KVirc vypadat průhledně.<br>Musíte "
+"vybrat obrázek, který se hodí k pozadí.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:83
+msgid "Child window opacity:"
+msgstr "Neprůsvitnost podřízeného okna:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:87
+msgid "Parent window opacity:"
+msgstr "Neprůsvitnost zdrojového okna:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:91
+msgid "Blend color:"
+msgstr "Míchaná barva:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:97
+msgid "Use KDE desktop for transparency"
+msgstr "Použít KDE desktop pro průhlednost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:102
+msgid "Keep in sync with KDE background changes"
+msgstr "Udržovat synchronizované se změnami pozadí KDE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:111
+msgid "Transparency blend image:"
+msgstr "Obrázek míchaný průhledností:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:155
+msgid "Active Background"
+msgstr "Aktivní pozadí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:156
+msgid "Inactive Background"
+msgstr "Neaktivní pozadí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:157
+msgid "Active Text (Primary)"
+msgstr "Aktivní text (Primární)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:158
+msgid "Active Text (Secondary)"
+msgstr "Aktivní text (Sekundární)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:159
+msgid "Inactive Text (Primary)"
+msgstr "Neaktivní text (Primární)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:160
+msgid "Inactive Text (Secondary)"
+msgstr "Neaktivní text (Sekundární)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:197
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:44
+msgid "Background"
+msgstr "Pozadí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:178
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:205
+msgid "Background Image"
+msgstr "Obrázek na pozadí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:198
+msgid "Low-Contrast Foreground"
+msgstr "Málo kontrastní popředí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:199
+msgid "Mid-Contrast Foreground"
+msgstr "Středně kontrastní popředí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:200
+msgid "Active High-Contrast Foreground (Primary)"
+msgstr "Aktivní vysoce kontrastní popředí (primární)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:201
+msgid "Active High-Contrast Foreground (Secondary)"
+msgstr "Aktivní vysoce kontrastní popředí (sekundární)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:202
+msgid "Inactive High-Contrast Foreground (Primary)"
+msgstr "Neaktivní vysoce kontrastní popředí (primární)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:203
+msgid "Inactive High-Contrast Foreground (Secondary)"
+msgstr "Neaktivní vysoce kontrastní popředí (sekundární)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:40
+#, fuzzy
+msgid "Scaling in userlist"
+msgstr "Zahajuji vypisování seznamu oznamování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:41
+#, fuzzy
+msgid "Scale avatar images in userlist (recommended)"
+msgstr "Přizpůsobit obrázky avatarů (doporučeno)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:43
+msgid ""
+"<center>This option will force KVIrc to scale avatars shown in the userlist."
+"<br>Avatars will be scaled to fit the constraints set below. Better keep "
+"this option on. :)</center>"
+msgstr ""
+"<center>Tato volba přinutí KVIrc změnit rozměr avatarů zobrazených v seznamu "
+"uživatelů.<br>Avatary budou přizpůsobeny konstantám, které jsou uvedeny "
+"níže. Je lepší nechat tuto volbu zapnutou. :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:48
+msgid "Do not scale avatar if it is less than required size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:59
+msgid "Image width:"
+msgstr "Šířka obrázku:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:61
+msgid "Image height:"
+msgstr "Výška obrázku:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:56
+#, fuzzy
+msgid "Scaling on load (and in user tooltips)"
+msgstr "Zahajuji vypisování seznamu oznamování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:57
+#, fuzzy
+msgid "Scale avatar images on image load"
+msgstr "Přizpůsobit obrázky avatarů (doporučeno)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:65
+msgid "Request CTCP"
+msgstr "Požadavek CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:66
+msgid "Request missing avatars"
+msgstr "Požadovat chybějící avatary"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:67
+msgid "Maximum requested file size:"
+msgstr "Maximální požadovaná velikost souboru:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to send a DCC GET request when someone "
+"sets an avatar and there is no cached copy available.</center>"
+msgstr ""
+"<center>Tato volba způsobí, že KVIrc pošle DCC GET požadavek, pokud k "
+"nastavenému avataru chybí náhled.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:74
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:317
+msgid " bytes"
+msgstr " bajtů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:77
+msgid ""
+"<center>This is the maximum size for avatar images that will be "
+"automatically requested.<br>A reasonable value might be 102400 bytes (100 K)."
+"</center>"
+msgstr ""
+"<center>Toto je maximální velikost pro obrázky avatarů, které budou "
+"automaticky požadovány.<br>Přijatelnou hodnotou by mělo být 102400 bajtů "
+"(100 K).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:83
+msgid "Automatically accept incoming avatars"
+msgstr "Automaticky přijmout příchozí avatary"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:87
+msgid ""
+"<center>This option will cause KVIrc to auto-accept DCC SEND requests for "
+"incoming avatars.<br>If you're using the \"Request missing avatars\" option "
+"above, enabling this may by useful.<br>Avatars will be saved in the local "
+"KVIrc directory.</center>"
+msgstr ""
+"<center>Tato volba způsobí, že KVIrc bude automaticky přijímat DCC SEND "
+"požadavky na příchozí avatary.<br>Zapnutí může být velmi užitečné, pokud "
+"používáte volbu \"Požadovat chybějící avatary\", která se nachází výše."
+"<br>Obrázky avatarů budou uloženy na disk do adresáře KVIrc.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:94
+msgid "Remember avatars for registered users"
+msgstr "Zapamatovat avatary registrovaných uživatelů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:99
+msgid ""
+"<center>Use a user's last known avatar by default (only for users that are "
+"registered).</center>"
+msgstr ""
+"<center>Použít uživatelův poslední známý avatar - standardně (jenom pro "
+"uživatele, kteří jsou registrováni).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:103
+msgid "Avatar offer timeout:"
+msgstr "Prodleva nabídky avataru:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:104
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:162
+msgid " sec"
+msgstr " sek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:107
+msgid ""
+"<center>This is the amount of time to make an avatar available for transfer "
+"when requested.<br>When someone sends a CTCP AVATAR request, KVIrc will "
+"reply with a CTCP AVATAR message containing the name and size of your avatar "
+"image.<br>A time-limited file offer is added for the image file to the "
+"requesting user.</center>"
+msgstr ""
+"<center>Toto je doba, po kterou bude avatar dostupný ke stažení, když je o "
+"něj požádáno.<br>Pokud někdo pošle CTCP AVATAR požadavek, KVIrc odpoví "
+"zprávou CTCP AVATAR obsahující jméno a velikost obrázku vašeho avataru."
+"<br>Časově limitovaná nabídka je přidána k obrázku pro uživatele, který "
+"zaslal požadavek.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:115
+msgid "Ignore requests if no avatar is set"
+msgstr "Ignorovat požadavky pokud není avatar nastaven"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:118
+msgid ""
+"This option will cause KVIrc to ignore channel CTCP AVATAR requests when you "
+"have no avatar set. This is usually a good practice since it helps in "
+"reducing traffic by not sending a reply that would be empty."
+msgstr ""
+"Tato volba způsobí, že KVIrc bude ignorovat kanálové požadavky CTCP AVATAR "
+"pokud jste si žádný nenastavili. Toto je dobré vyzkoušet, jelikož pomáhá "
+"redukovat síťový provoz neposíláním odpovědí, které mohou být prázdné."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:39
+msgid "Use online notify list"
+msgstr "Používat online seznam oznamování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:44
+msgid "Configuration"
+msgstr "Nastavení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:45
+msgid "Show notifications in active window"
+msgstr "Zobrazovat oznámení v aktivním okně"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:50
+msgid "Flash window when users are going online"
+msgstr "Blikající okno, když je uživatel online"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:55
+msgid "Popup notifier when users are going online"
+msgstr "Zobrazit Oznamovač, když je uživatel online"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:59
+msgid "Advanced configuration"
+msgstr "Pokročilé nastavení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:64
+msgid "Check USERHOST for online users"
+msgstr "Zkontrolovat USERHOST pro online uživatele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:69
+msgid "Use \"smart\" notify list manager"
+msgstr "Použít \"smart\" seznam oznamování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:74
+msgid "Use the WATCH method if available"
+msgstr "Použít WATCH, pokud je dostupné"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:79
+msgid "Check interval (in seconds)"
+msgstr "Interval kontrol (v sekundách)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:85
+msgid "ISON delay (in seconds)"
+msgstr "ISON prodleva (v sekundách)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:91
+msgid "USERHOST delay (in seconds)"
+msgstr "USERHOST prodleva (v sekundách)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:96
+msgid ""
+"<p><b>Note:</b><br>The notify list is managed using the \"Registered Users\" "
+"settings.</p>"
+msgstr ""
+"<p><b>Poznámka:</b><br>Seznam Oznamování je spravován prostřednictvím "
+"nastavení \"Registrovaní Uživatelé\".</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:112
+msgid "Forcibly and completely disable the notifier"
+msgstr "Nuceně a kompletně vypnout oznamovač"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:115
+msgid ""
+"This is an option for the impatient: it allows to forcibly and permanently "
+"disable the notifier window. Please note that if this option is activated "
+"then the notifier will NOT popup even if all the other options around "
+"specify to use it in response to particular events. Also note that this "
+"option will make all the /notifier.* commands fail silently."
+msgstr ""
+"Tato volba je pro netrpělivé: umožňuje nuceně a permanentně zakázat okno "
+"oznamovače. Pokud je tato volba aktivována, oznamovač NEZOBRAZÍ okno "
+"dokonce, ani když je nastaveno jeho používání jinde jako odezva na různé "
+"události. Tato volba také zařídí, že všechny příkazy /notifier.* tiše selžou."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:123
+msgid "Disable notifier window flashing"
+msgstr "Zakazát blikání oznamovacího okna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:124
+msgid "Disable notifier window fade effect"
+msgstr "Zakázat efekty oznamovacího okna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:39
+msgid "Default away message:"
+msgstr "Výchozí pryč(away) zpráva:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:41
+msgid "User input exits away mode"
+msgstr "Vstup uživatele zruší pryč mód"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:43
+msgid "Away Nickname"
+msgstr "Pryč přezdívka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:44
+msgid "Change nickname on away"
+msgstr "Změnit přezdívku při pryč"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:47
+msgid "Use automatic nickname ([5 letters]AWAY)"
+msgstr "Použít automatickou přezdívku ([5 znaků]AWAY)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:55
+#, c-format
+msgid "Custom nickname (%%nick%% means a current nick):"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/libkvioptions.cpp:199
+#, fuzzy
+msgid "No such options page class name %Q"
+msgstr "Neznámý název pro volbu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:47
+msgid "Use system URL handlers"
+msgstr "Použít systémové URL handlery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:50
+msgid "<b>http://</b> handler command:"
+msgstr "<b>http://</b> handler příkaz:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:51
+msgid "<b>https://</b> handler command:"
+msgstr "<b>https://</b> handler příkaz:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:52
+msgid "<b>ftp://</b> handler command:"
+msgstr "<b>ftp://</b> handler příkaz:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:53
+msgid "<b>mailto:</b> handler command:"
+msgstr "<b>mailto:</b> handler příkaz:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:54
+msgid "<b>file://</b> handler command:"
+msgstr "<b>file://</b> handler příkaz:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:55
+msgid "Unknown protocol handler command:"
+msgstr "Příkaz handleru neznámého protokolu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:61
+msgid "Use proxy"
+msgstr "Použít proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:65
+msgid "Proxy"
+msgstr "Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:76
+msgid ""
+"<center>This is the list of available proxy servers.<br>Right-click on the "
+"list to add or remove proxies.</center>"
+msgstr ""
+"<center>Toto je seznam dostupných proxy serverů.<br>Pravým kliknutím na "
+"seznamu lze přidávat a odebírat proxy servery.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:90
+msgid "New Proxy"
+msgstr "Nová Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:99
+msgid "Remove Proxy"
+msgstr "Odebrat proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:111
+msgid "Proxy:"
+msgstr "Proxy:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:131
+msgid "Protocol:"
+msgstr "Protokol:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:336
+msgid "&New Proxy"
+msgstr "&Nová Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:337
+msgid "Re&move Proxy"
+msgstr "Ode&brat proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:71
+msgid "Pattern"
+msgstr "Vzorek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:72
+msgid "MIME Type"
+msgstr "MIME typ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:87
+msgid "MIME type:"
+msgstr "MIME typ:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:92
+msgid "File pattern:"
+msgstr "Vzorek souboru:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:97
+msgid "Magic bytes:"
+msgstr "Magické bajty:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:102
+msgid "Save path:"
+msgstr "Cesta uložení:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:107
+msgid "Local open command:"
+msgstr "Otevřít lokálně pomocí:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:112
+msgid ""
+"<center>This field contains the command to execute to open a local file."
+"<br><tt>$0</tt> is used in place of the filename</center>"
+msgstr ""
+"<center>Toto pole obsahuje příkaz, který se spustí pro otevření lokálního "
+"souboru.<br><tt>$0</tt> je použit místo názvu souboru</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:116
+msgid "Remote open command:"
+msgstr "Otevřít vzdáleně pomocí:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:121
+msgid ""
+"<center>This field contains the command to execute when automatically "
+"opening a received file.<br><tt>$0</tt> is used in place of the filename</"
+"center>"
+msgstr ""
+"<center>Toto pole obsahuje příkaz, který se spustí při automatickém otevření "
+"přijatého souboru.<br><tt>$0</tt> je použit místo názvu souboru</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:125
+msgid "Icon"
+msgstr "Ikona"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:134
+msgid "&New"
+msgstr "&Nový"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:138
+msgid "Re&move"
+msgstr "Ode&brat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:184
+msgid "[Unknown Media Type]"
+msgstr "[Neznámý typ média]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:230
+msgid "New Media Type"
+msgstr "Nový typ média"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:53
+msgid "Nickname Colors"
+msgstr "Barvy přezdívek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:56
+msgid "Channel owner:"
+msgstr "Vlastník kanálu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:57
+msgid "Channel admin:"
+msgstr "Admin kanálu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:58
+msgid "Op:"
+msgstr "Op:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:59
+msgid "Half-op:"
+msgstr "Polo-op:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:60
+msgid "Voice:"
+msgstr "Voice:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:61
+msgid "User-op:"
+msgstr "Uživ. op:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:62
+msgid "Away:"
+msgstr "Pryč:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:66
+msgid "Use different color for own nick:"
+msgstr "Použít odlišnou barvu pro vlastní přezdívku:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:81
+msgid "Draw nickname grid"
+msgstr "Kreslit mřížku přezdívky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:83
+msgid "Grid color:"
+msgstr "Barva mřížky:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:90
+msgid "Grid type:"
+msgstr "Typ mřížky:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:94
+msgid "3D Grid"
+msgstr "3D mřížka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:95
+msgid "3D Buttons"
+msgstr "3D tlačítka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:96
+msgid "Plain Grid"
+msgstr "Obyčejná mřížka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:97
+msgid "Dotted Grid"
+msgstr "Tečkovaná mřížka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:131
+msgid "Horizontal Alignment:"
+msgstr "Horizontální zarovnání:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:135
+msgid "Vertical Alignment:"
+msgstr "Vertikální zarovnání:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:231
+msgid "Show gender icons"
+msgstr "Zobrazit ikony pohlaví"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:232
+msgid "Show user channel icons"
+msgstr "Zobrazit kanálové ikony uživatelů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:233
+msgid "Show user channel activity indicator"
+msgstr "Zobrazit indikátor aktivity uživatelů kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:234
+msgid "Hide users label"
+msgstr "Schovat uživatelské návěstí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:235
+msgid "Enable user tooltips"
+msgstr "Povolit tooltipy uživatele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:236
+msgid "Hide avatars"
+msgstr "Schovat avatary"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:79
+msgid "Use flood protection (recommended)"
+msgstr "Použít ochranu před zahlcením (doporučeno)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:81
+msgid ""
+"<center>This option makes KVIrc only respond to a limited number of CTCP "
+"requests within a specified time interval, to prevent \"flooding\" CTCP "
+"messages.</center>"
+msgstr ""
+"<center>Tato volba umožňuje KVIrc odpovídat pouze na limitované množství "
+"CTCP požadavků v určitém časovém intervalu a předchází zprávám CTCP "
+"\"zahlcení\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:83
+msgid "Allow up to:"
+msgstr "Bude li více než:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:84
+msgid " requests"
+msgstr " požadavků"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:86
+msgid ""
+"<center>Minimum value: <b>0 requests</b><br>Maximum value: <b>10000 "
+"requests</b></center>"
+msgstr ""
+"<center>Minimální hodnota: <b>0 požadavků</b><br>Maximální hodnota: <b>10000 "
+"požadavků</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:89
+msgid "within:"
+msgstr "během:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:92
+msgid ""
+"<center>Minimum value: <b>1 sec</b><br>Maximum value: <b>3600 sec</b></"
+"center>"
+msgstr ""
+"<center>Minimální hodnota: <b>1 sek</b><br>Maximální hodnota: <b>3600 sek</"
+"b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:96
+msgid "Ignored Requests"
+msgstr "Ignorované požadavky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:97
+msgid "PING"
+msgstr "PING"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:98
+msgid "FINGER"
+msgstr "FINGER"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:99
+msgid "CLIENTINFO"
+msgstr "CLIENTINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:100
+msgid "USERINFO"
+msgstr "USERINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:101
+msgid "VERSION"
+msgstr "VERSION"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:102
+msgid "SOURCE"
+msgstr "SOURCE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:103
+msgid "TIME"
+msgstr "TIME"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:104
+msgid "PAGE"
+msgstr "PAGE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:105
+msgid "AVATAR"
+msgstr "AVATAR"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:106
+msgid "DCC/TDCC"
+msgstr "DCC/TDCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:131
+msgid "General Preferences"
+msgstr "Hlavní předvolby"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:134
+msgid "Theme Preferences"
+msgstr "Předvolby Motivu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:136
+msgid "KVIrc Preferences"
+msgstr "KVIrc Předvolby"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:139
+msgid ""
+"This dialog contains a set of KVIrc settings.<br> Use the icons on the left "
+"to navigate through the option pages. The text box in the bottom left corner "
+"is a small search engine. It will highlight the pages that contain options "
+"related to the search term you have entered."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:147
+msgid ""
+"Many settings have tooltips that can be shown by holding the cursor over "
+"their label for a few seconds."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:152
+msgid ""
+"When you have finished, click \"<b>OK</b>\" to accept your changes or "
+"\"<b>Cancel</b>\" to discard them. Clicking \"<b>Apply</b>\" will commit "
+"your changes without closing the window."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:217
+msgid ""
+"<p>This is the search tool for this options dialog.</p><p>You can enter a "
+"search term either in your native language or in english and press the "
+"button on the right. The pages that contain some options related to the "
+"search term will be highlighted and you will be able to quickly find them.</"
+"p><p>Try \"nickname\" for example.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:249
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:61
+msgid "Close this dialog, accepting all changes."
+msgstr "Zavře tento dialog a provede všechny změny."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:255
+msgid "&Apply"
+msgstr "&Použít"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:256
+msgid "Commit all changes immediately."
+msgstr "Provede všechny změny okamžitě."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:69
+msgid "Close this dialog, discarding all changes."
+msgstr "Zavře tento dialog, bez provedení změn."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:149
+msgid ""
+"This table contains the text icon associations.<br>KVirc will use them to "
+"display the CTRL+I escape sequences and eventually the emoticons."
+msgstr ""
+"Tato tabulka obsahuje asociace textu a ikon.<br>KVirc je používá k zobrazení "
+"pomocí CTRL+I escape sekvence a také smajlíků."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:165
+msgid "Add"
+msgstr "Přidat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:169
+msgid "Delete"
+msgstr "Smazat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:191
+msgid "unnamed"
+msgstr "nepojmenovaný"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:53
+msgid "Enable word highlighting"
+msgstr "Povolit zvýrazňování slov"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:55
+msgid "Words to highlight:"
+msgstr "Zvýrazňovat slova:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:57
+msgid "Word splitters:"
+msgstr "Rozdělovače slov:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:59
+msgid "Highlight messages containing my nickname"
+msgstr "Zvýrazňovat zprávy obsahující vlastní přezdívku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:61
+msgid ""
+"<center>If this option is enabled, KVIrc will highlight any user message "
+"containing your current nickname</center>"
+msgstr ""
+"<center>Pokud je tato volba zapnuta, KVirc zvýrazní jakoukoliv zprávu "
+"uživatele, která obsahuje vaši současnou přezdívku.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:63
+msgid "Flash the system taskbar entry on highlighted messages"
+msgstr "Blikající systémová lišta při zvýrazněných zprávách"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:65
+msgid ""
+"<center>If this option is enabled, KVIrc will (attempt to) flash the system "
+"taskbar entry when a highlighted message is printed and KVIrc is not the "
+"active window</center>"
+msgstr ""
+"<center>Pokud je tato volba zapnuta, KVIrc bude (pokusí se) blikat na liště, "
+"když je zobrazena zvýrazňovaná zpráva a okno KVIrc není aktivní</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:67
+msgid "Popup the notifier window on highlighted messages"
+msgstr "Zobrazit okno oznamovače při zvýrazeněných zprávách"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:69
+msgid ""
+"<center>If this option is enabled, KVIrc will popup a little notifier window "
+"in the low right corner of your desktop when a highlighted message is "
+"printed and KVIrc is not the active window</center>"
+msgstr ""
+"<center>Pokud je tato volba zapnuta, KVIrc vytvoří malé upozorňovací popup "
+"okno v dolním rohu vaší obrazovky, když je zobrazena zvýrazňovaná zpráva a "
+"okno KVIrc není aktivní</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:91
+#, fuzzy
+msgid "Alert Restrictions"
+msgstr "Upravit registraci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:92
+msgid "Restrict alert"
+msgstr "Omezit výstrahu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:94
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if a "
+"normal message is received in a channel.<br>Actions like joins, parts and "
+"mode changes will be ignored.<br> This is useful if you are in channels with "
+"a high rate of traffic and only want to be alerted for messages that are "
+"interesting to you.</center>"
+msgstr ""
+"<center>Pokud je tato možnost zapnuta, KVIrc upozorní pouze tehdy, když se "
+"na kanálu objeví zpráva.<br>Akce jako příchody, odchody a změny modu budou "
+"ignorovány.<br> Je to užitečné, pokud se nacházíte na kanálech s velkým "
+"provozem a chcete být upozorněni pouze na zprávy, které vás zajímají.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:96
+msgid "Alert for highlighted words"
+msgstr "Výstraha pro zvýrazněná slova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:98
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which contain a word from the highlighted words list above.</center>"
+msgstr ""
+"<center>Pokud je tato volba zapnuta, budete v liště také upozorňováni na "
+"zprávy, které obsahují slovo ze seznamu zvýrazněných slov nahoře.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:100
+msgid "Alert for query messages"
+msgstr "Výstraha pro query zprávy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:102
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which are shown in queries.</center>"
+msgstr ""
+"<center>Pokud je tato volba zapnuta, budete v liště také upozorňováni na "
+"zprávy, které jsou zobrazovány v query.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:107
+msgid "Use custom alert level"
+msgstr "Použít vlastní úroveň výstrah"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:109
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if "
+"the specified alert level is reached.</center>"
+msgstr ""
+"<center>Pokud je tato volba zapnuta, KVirc upozorní v liště pouze tehdy, "
+"když bude dosaženo specifikované upozorňovací úrovně.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:111
+msgid "Minimum alert level:"
+msgstr "Minimální úroveň výstrah:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:114
+msgid ""
+"<center>This option sets the minimum alert level for the taskbar.</center>"
+msgstr ""
+"<center>Tato volba nastavuje minimální upozorňovací úroveň v liště.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:213
+msgid "Output verbosity"
+msgstr "Upovídanost výstupu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:49
+msgid "Mute"
+msgstr "Ztlumený"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:50
+msgid "Quiet"
+msgstr "Tichý"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:51
+msgid "Normal"
+msgstr "Normální"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:52
+msgid "Verbose"
+msgstr "Hlasitý"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:53
+msgid "Paranoic"
+msgstr "Paranoidní"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:59
+msgid "Show in active window"
+msgstr "Zobrazovat v aktivním okně"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:60
+msgid "External messages"
+msgstr "Vnější zprávy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:61
+msgid "External CTCP replies"
+msgstr "Vnější CTCP odezvy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:62
+msgid "Whois replies"
+msgstr "Whois odezvy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:63
+msgid "ChanServ and NickServ notices"
+msgstr "ChanServ a NickServ oznámení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:64
+msgid "Invite messages"
+msgstr "Pozývací zprávy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:65
+msgid "Server replies"
+msgstr "Odezvy serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:66
+msgid "Server notices"
+msgstr "Oznámení serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:67
+msgid "Broadcast and WALLOPS messages"
+msgstr "Vysílací a WALLOPS zprávy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:70
+msgid "Show extended server information"
+msgstr "Zobrazit rozšířené informace serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:71
+msgid "Show server pings"
+msgstr "Zobrazit pingy serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:72
+msgid "Show own parts in the console"
+msgstr "Zobrazit vlastní odchody v konzoli"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:73
+msgid "Show compact mode changes"
+msgstr "Zobrazit kompaktní změny módů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:43
+msgid "Minimize on startup"
+msgstr "Minimalizovat při spuštění"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:44
+msgid "Confirm quit with active connections"
+msgstr "Potvrzovat ukončení při aktivním spojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:45
+msgid "Remember window properties"
+msgstr "Zapamatovat vlastnosti okna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:50
+msgid "Disable splash screen"
+msgstr "Zakázat splash okno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:54
+msgid "Enable visual effects"
+msgstr "Povolit vizuální efekty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:55
+msgid "Hide Channel window tool buttons by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:57
+msgid "Open Dialog Window For"
+msgstr "Otevřít dialogové okno pro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:58
+msgid "Preferences"
+msgstr "Předvolby"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:59
+msgid "Registered Users"
+msgstr "Registrovaní uživatelé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:149
+msgid "Servers"
+msgstr "Servery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.cpp:40
+msgid ""
+"This section contains irc tools<br><p>like<b> away, lag and logging system. "
+"</b> </p>"
+msgstr ""
+"Tato sekce obsahuje irc nástroje<br><p>jako<b> away, lag a loggovací systém. "
+"</b> </p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:39
+msgid "On Disconnect"
+msgstr "Při odpojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:42
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:55
+msgid "Keep channels open"
+msgstr "Nechat kanály otevřené"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:44
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after disconnect."
+"</center>"
+msgstr ""
+"<center>Tato volba způsobí, že KVirc nechá otevřené kanály i po neočekávaném "
+"odpojení.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:47
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:60
+msgid "Keep queries open"
+msgstr "Nechat query otevřené"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:49
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after disconnect.</"
+"center>"
+msgstr ""
+"<center>Tato volba způsobí, že KVirc nechá query otevřené i po neočekávaném "
+"odpojení.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:52
+msgid "On Unexpected Disconnect"
+msgstr "Při neočekávaném odpojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+"<center>Tato volba způsobí, že KVirc nechá otevřené kanály i po neočekávaném "
+"odpojení.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:62
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+"<center>Tato volba způsobí, že KVirc nechá query otevřené i po neočekávaném "
+"odpojení.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:65
+msgid "Rejoin channels after reconnect"
+msgstr "Znovu přijít do kanálů po znovupřipojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:67
+msgid ""
+"<center>This option will cause KVIrc to rejoin channels after a successful "
+"reconnect attempt.</center>"
+msgstr ""
+"<center>Tato volba způsobí, že se KVirc znovu připojí na kanály po úspěšném "
+"pokusu o znovupřipojení.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:69
+msgid "Reopen queries after reconnect"
+msgstr "Znovu otevřít query po znovupřipojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to reopen query windows after a "
+"successful reconnect attempt.</center>"
+msgstr ""
+"<center>Tato volba způsobí, že KVirc znovu otevře okna s query po úspěšném "
+"pokusu o znovupřipojení.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:75
+msgid "Automatically reconnect"
+msgstr "Automaticky znovu spojit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:77
+msgid ""
+"<center>This option will enable auto-reconnecting after an unexpected "
+"disconnect. An unexpected disconnect is the <b>termination</b> of a <b>fully "
+"connected IRC session</b> that was <b>not requested by the user</b> by the "
+"means of the QUIT message.<p><b>Warning:</b> If you use /RAW to send a QUIT "
+"message to the server, this option will not behave correctly, since does not "
+"detect the outgoing QUIT message and will attempt to reconnect after the "
+"server has closed the connection. For this reason, always use the /QUIT "
+"command to close your connections. This option may also behave incorrectly "
+"with bouncers that support detaching, in this case a solution could be to "
+"prepare an alias that sends the bouncer \"detach\" command immediately "
+"before the \"quit\" command.<br><tt>alias(bncdetach){ raw bouncer detach; "
+"quit; }</tt></p></center>"
+msgstr ""
+"<center>Tato volba povolí automatické opětovné připojení po neočekávaném "
+"odpojení. Neočekávané odpojení je takové<b>odpojení</b> od <b>úplně "
+"připojeného IRC sezení</b>, které <b>nebylo vyžádáno uživatelem</b>."
+"<p><b>Upozornění:</b> Pokud používáte /RAW k odeslání QUIT zprávy serveru, "
+"tato volba nebude fungovat korektně, protože nedetekuje odchozí QUIT zprávy "
+"a bude se znažit obnovit spojení poté, co server ukončil spojení. Proto vždy "
+"použijte příkaz /QUIT pro ukončení spojení. Tato volba také nemusí korektně "
+"fungovat s bouncery, které podporují detaching, v tomto případě může být "
+"řešením alias, který pošle bounceru příkaz \"detach\" těsně před příkazem "
+"\"quit\".<br><tt>alias(bncdetach){ raw bouncer detach; quit; }</tt></p></"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:89
+msgid "Maximum attempts (0: unlimited):"
+msgstr "Maximálně pokusů (0: nekonečně):"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:94
+msgid "Delay between attempts:"
+msgstr "Prodleva mezi pokusy:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:100
+msgid ""
+"<center>Minimum value: <b>0 sec</b><br>Maximum value: <b>86400 sec</b></"
+"center>"
+msgstr ""
+"<center>Minimální hodnota: <b>0 sek</b><br>Maximální hodnota: <b>86400 sek</"
+"b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:123
+msgid "Certificate"
+msgstr "Certifikát"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:125
+msgid "Use SSL certificate (PEM format only)"
+msgstr "Použít SSL certifikát (pouze formát PEM)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:127
+msgid "Certificate location:"
+msgstr "Umístění certifikátu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:130
+msgid "Certificate password:"
+msgstr "Heslo certifikátu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:134
+msgid "Private Key"
+msgstr "Privátní klíč"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:135
+msgid "Use SSL private key"
+msgstr "Použít SSL privátní klíč"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:137
+msgid "Private key location:"
+msgstr "Umístění privátního klíče:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:140
+msgid "Private key password:"
+msgstr "Heslo privátního klíče:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:146
+msgid "This executable has no SSL support."
+msgstr "Tato verze nemá SSL podporu."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:165
+msgid "Timeout Values"
+msgstr "Prodlevy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:166
+msgid "Connect timeout:"
+msgstr "Prodleva spojení:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:168
+msgid "Outgoing data queue flush timeout:"
+msgstr "Prodleva fronty odchozích dat:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:170
+msgid "Limit outgoing traffic"
+msgstr "Omezit odchozí provoz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:171
+msgid "Limit to 1 message every:"
+msgstr "Omezit na 1 zprávu každých:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:173
+msgid " usec"
+msgstr " usek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:175
+msgid ""
+"<center>Minimum value: <b>10000 usec</b><br>Maximum value: <b>10000000 usec</"
+"b></center>"
+msgstr ""
+"<center>Minimální hodnota: <b>10000 usek</b><br>Maximální hodnota: "
+"<b>10000000 usek</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:179
+msgid "Network Interfaces"
+msgstr "Síťová rozhraní"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:181
+msgid "Bind IPv4 connections to:"
+msgstr "Vázat IPv4 spojení k:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:185
+msgid "Bind IPv6 connections to:"
+msgstr "Vázat IPv6 spojení k:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:210
+msgid "Enable ident service (bad practice on UNIX!)"
+msgstr "Povolit ident službu (špatné na UNIXu!)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:216
+msgid "Output identd messages to:"
+msgstr "Výstup identd zpráv do:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:218
+msgid "Active window"
+msgstr "Aktivní okno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:219
+msgid "Console"
+msgstr "Konzole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:220
+msgid "Do not show any identd messages"
+msgstr "Nezobrazovat žádné identd zprávy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:237
+msgid "Enable ident service only while connecting to server"
+msgstr "Povolit ident službu pouze během připojování k serveru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:240
+msgid "Ident username:"
+msgstr "Ident:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:243
+msgid "Service port:"
+msgstr "port:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:248
+msgid "IPv6 Settings"
+msgstr "IPv6 nastavení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:249
+msgid "Enable service for IPv6"
+msgstr "Povolit službu pro IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:258
+msgid "IP stack treats IPv4 as part of IPv6 namespace"
+msgstr "IP stack považuje IPv4 jako součást jmenného prostoru IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:265
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications. If it is possible, install a real ident daemon.</p>"
+msgstr ""
+"<p><b>Varování:</b><br>Toto je <b>neodpovídající RFC 1413</b> ident démon "
+"jenž implementuje pouze omezenou skupinu funkcí Identifikačního Protokolu. "
+"Pokud je to možné, nainstalujte skutečného ident démona.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:270
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications.<br>On UNIX, you may also need root privileges to bind to the "
+"auth port (113).<br>It is <b>highly recommended</b> that a <b>real</b> "
+"system-wide ident daemon be used instead, or none at all if ident is not "
+"required.</p>"
+msgstr ""
+"<p><b>Upozornění:</b><br>Toto není <b>RFC 1413 vyhovující</b> ident démon "
+"který implementuje pouze omezené možnosti IP specifikací,<br>Na UNIXu, "
+"budete nejspíše potřebovat root oprávnění pro vázání k auth portu (113)."
+"<br>Je <b>velmi doporučeno</b>, aby byl použit <b>skutečný</b> systémový "
+"ident démon místo tohoto, nebo žádný pokud ident není vyžadován.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.cpp:39
+msgid ""
+"This section contains the general client options<br><p>like<b> sound, "
+"mediafiles, URL handler </b> etc... </p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:39
+msgid "Automatically Log"
+msgstr "Automaticky logovat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:40
+msgid "Query windows"
+msgstr "Query okna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:41
+msgid "Channel windows"
+msgstr "Okna kanálů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:42
+msgid "DCC Chat windows"
+msgstr "DCC Chat okna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:43
+msgid "Console windows"
+msgstr "Konzole okna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:45
+msgid "Gzip logs"
+msgstr "Gzipovat logy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:47
+msgid "Strip colors in logs"
+msgstr "Odstranit barvy v souborech logů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:48
+msgid "Auto flush logs every"
+msgstr "Auto flush logů každý"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:49
+msgid " min"
+msgstr " min"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:52
+msgid ""
+"<center>Save logs with the current interval<br>Set to 0 to disable this "
+"feature</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:49
+msgid "Minimize console after successful login"
+msgstr "Minimalizovat konzoli po úspěšném přihlášení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:52
+msgid ""
+"<center>This option will cause KVIrc to minimize the console window after "
+"successfully logging into a server.</center>"
+msgstr ""
+"<center>Tato volba způsobí, že KVIrc minimalizuje konzolové okno po úspěšném "
+"přihlášení na server.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:55
+msgid "Show network name in console taskbar entry"
+msgstr "Zobrazit název sítě v taskbaru konzole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to show the network name as the console "
+"taskbar entry instead of the server name. This is nice to keep on unless "
+"your servers are not organized in networks or you often connect to two "
+"servers of the same network.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:75
+msgid "Force immediate quit"
+msgstr "Provést opuštění okamžitě"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:78
+msgid ""
+"<center>This option causes KVIrc to close the connection immediately after "
+"sending the QUIT message.<br>When this option is disabled, KVIrc will wait "
+"for the server to close the connection.<br>Note that if you use this, your "
+"QUIT message may be not displayed.</center>"
+msgstr ""
+"<center>Tato volba přinutí KVIrc ukončit spojení okamžitě po odeslání zprávy "
+"QUIT.<br>Pokud není tato volba povolena, KVIrc bude čekat, až server ukončí "
+"spojení.<br>Pokud tuto volbu používáte, vaše QUIT zpráva nemusí být "
+"zobrazena.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:84
+msgid "Prepend gender info to realname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:110
+msgid "On Channel Kick"
+msgstr "Při vykopnutí z kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:112
+msgid "Rejoin channel"
+msgstr "Znovu přijít do kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:115
+msgid ""
+"<center>This option will cause KVIrc to attempt to rejoin a channel after "
+"being kicked.</center>"
+msgstr ""
+"<center>Tato volba způsobí, že se KVIrc pokusí znovu přijít do kanálu potom, "
+"co jste byli vykopnuti.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:129
+msgid "Keep channel open"
+msgstr "Nechat kanál otevřený"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:121
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"being kicked.<br>It might be a good idea to also enable the \"Rejoin channel"
+"\" option.</center>"
+msgstr ""
+"<center>Tato volba způsobí, že KVirc nechá kanálová okna otevřená i potom, "
+"co jste byli vykopnuti.<br>Také by mohlo být dobré zapnout volbu \"Znovu "
+"přijít do kanálu\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:127
+msgid "On Channel Part"
+msgstr "Při odchodu z kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:132
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"leaving it.</center>"
+msgstr ""
+"<center>Tato volba způsobí, že KVirc nechá otevřené kanály po odchodu z nich."
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:136
+msgid "Automatically join channel on invite"
+msgstr "Automaticky přijít do kanálu při pozvání"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:139
+msgid ""
+"<center>This option will cause KVIrc to automatically join a channel when an "
+"INVITE message for that channel is received.<br><b>Warning:</b> This may "
+"help spammers harass you. :)</center>"
+msgstr ""
+"<center>Tato volba způsobí, že se KVIrc automaticky přijde do kanálu, když "
+"je obdržena zpráva INVITE pro tento kanál.<br><b>Varování:</b> Toto může "
+"pomoci spammerům vás obtěžovat. :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:144
+msgid "Always open channels as minimized"
+msgstr "Vždy otevřít kanály minimalizovaně"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:148
+#, fuzzy
+msgid ""
+"<center>This option causes newly created channel windows to be immediately "
+"minimized.<br>Enable this if you don't like channels popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+"<center>Tato volba způsobí, že se nově vytvořená query okna okamžitě "
+"minimalizují.<br>Zapněte, pokud nemáte rádi vyskakující query, zrovna když "
+"píšete někomu na kanálu. :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:168
+msgid "Log joined channels history"
+msgstr "Logovat historii příchodů do kanálů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:170
+msgid "Default ban mask:"
+msgstr "Výchozí maska banu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:188
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:202
+msgid "On Channel Join"
+msgstr "Při příchodu do kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:189
+msgid "Do not send /WHO request"
+msgstr "Neposílat /WHO požadavek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:190
+msgid "Do not request ban list"
+msgstr "Nepožadovat seznam banů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:191
+msgid "Do not request ban exception list"
+msgstr "Nepožadovat seznam vyjímek banů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:192
+msgid "Do not request invite list"
+msgstr "Nepožadovat seznam pozvání"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:194
+msgid "Do not update the away list"
+msgstr "Neaktualizovat pryč seznam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:197
+msgid ""
+"<center>KVIrc sends out a channel /WHO message every now and then to keep "
+"the channel away list in sync. Use this option to disable this feature (and "
+"to save your IRC bandwidth.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:203
+msgid "Echo channel topic"
+msgstr "Vypsat téma kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:204
+msgid "Show channel sync time"
+msgstr "Zobrazit čas synchronizace kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:40
+msgid "Default text encoding:"
+msgstr "Výchozí kódování textu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:109
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:133
+msgid "Use Language Encoding"
+msgstr "Použít kódování jazyka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:59
+msgid "Force language:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:65
+msgid "<b>Note:</b> You need to restart KVirc to apply a language changing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:68
+msgid "Automatic detection"
+msgstr "Automatická detekce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:69
+msgid "en"
+msgstr "en"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Unable to write language information to"
+msgstr "Nelze zapsat jazykové informace do"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:39
+msgid "Enable Anti-spam For"
+msgstr "Povolit Anti-spam pro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:45
+msgid "Silent anti-spam (no warnings)"
+msgstr "Tichý anti-spam (bez upozornění)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:46
+msgid "Words considered spam:"
+msgstr "Slova považovaná za spam:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:51
+msgid "Use workaround for firewall"
+msgstr "Použít podporu pro firewall"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:54
+msgid ""
+"<center>Enable this option if you can't accept incoming connections."
+"<br>KVIrc will try to use different methods to send and receive files."
+"<br>Please note that these methods may NOT work when communicating with a "
+"non-KVIrc client.</center>"
+msgstr ""
+"<center>Zapněte tuto volbu, pokud nemůžete přijímat příchozí spojení."
+"<br>KVIrc se pokusí použít jiné metody k přijímání a odesílání souborů."
+"<br>Prosím dejte si pozor, jelikož tyto metody nemusí fungovat pokud "
+"komunikujete s jiným klientem než KVirc.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:73
+msgid "Network Properties"
+msgstr "Vlastnosti sítě"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:75
+msgid "Use user-defined address or network interface"
+msgstr "Použít uživatelem definovanou adresu nebo síťové rozhraní"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:79
+msgid ""
+"<center>Enable this option if you are on a multihost machine and want to "
+"force one of the available IP addresses to be used for outgoing DCCs."
+"<br>This is especially useful when you use IPv6 and IPv4 addresses.<br>You "
+"can force KVIrc to always choose the IPv4 interface.</center>"
+msgstr ""
+"<center>Zapněte tuto volbu, pokud máte více síťových rozhraní a chcete "
+"přinutit jenom jednu z IP adres, aby byla použita pro DCC.<br>Toto je "
+"obzvláště užitečné, pokud používáte IPv6 a IPv4.<br>Můžete přinutit KVIrc k "
+"používání jenom IPv4 rozhraní.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:84
+msgid "Listen on address/interface:"
+msgstr "Naslouchat na adrese/rozhraní:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:87
+msgid ""
+"<center>This is the IP address or name of the interface to use by default "
+"for outgoing DCC transfers.<br>On UNIX systems that support it, you can also "
+"specify IPv4 interface names (such as <b>ppp0</b>).<br>If you set it to "
+"<b>0.0.0.0</b>, KVIrc will try to use the first available IPv4 interface</"
+"center>"
+msgstr ""
+"<center>Toto je IP adresa nebo jméno rozhraní, které bude použito jako "
+"výchozí pro odchozí DCC přenosy.<br>Na UNIX systémech, které toto podporují, "
+"můžete také specifikovat jména IPv4 rozhraní (jako například <b>ppp0</b>)."
+"<br>Pokud nastavíte <b>0.0.0.0</b>, KVIrc se pokusí použít první dostupné "
+"IPv4 rozhraní</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:94
+msgid "Use user-defined port range"
+msgstr "Použít definované rozmezí portů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:97
+msgid ""
+"<center>Enable this option if you want specify a local port range for DCC.</"
+"center>"
+msgstr ""
+"<center>Zapněte tuto volbu, pokud chcete specifikovat lokální interval portů "
+"pro DCC.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:102
+msgid "Lowest port:"
+msgstr "Nižší port:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:105
+msgid "Highest port:"
+msgstr "Vyšší port:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:108
+msgid "Send a fixed address in requests"
+msgstr "Poslat fixní adresu v požadavku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:111
+msgid ""
+"<center>Enable this option if you want to always send a fake IP address in "
+"your DCC requests.<br>This might be useful if you're behind a router with a "
+"static address that does network address translation (NAT) and forwards all "
+"or a range of ports.</center>"
+msgstr ""
+"<center>Zapněte tuto volbu, pokud chcete pokaždé zasílat falešnou IP adresu "
+"ve vašich DCC požadavcích.<br>To může být užitečné, pokud se nacházíte za "
+"routerem se statickou adresou, který zajišťuje překlad síťových adres (NAT) "
+"a přeposílá všechny, nebo rozsahy portů.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:115
+msgid "Send address/interface:"
+msgstr "Posílací adresa/rozhraní:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:119
+msgid ""
+"<center>This is the fixed address that will be sent with all DCC requests if "
+"you enable the option above.</center>"
+msgstr ""
+"<center>Toto je pevná adresa, která bude poslána se všemi DCC požadavky, "
+"pokud povolíte volbu nacházející se výše.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:123
+msgid "Guess address from IRC server if unroutable"
+msgstr "Zjistit adresu z IRC serveru, když je neroutovatelná"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:128
+msgid ""
+"<center>You can enable this option if you are behind a router that forwards "
+"all or a range of ports.<br>KVIrc will try to guess the IP address to use "
+"for DCC by looking up the local hostname as seen by the IRC server you're "
+"connected to.<br>This method is an exclusive alternative to the \"fixed "
+"address\" above.<br>It might guess the correct address automatically if "
+"certain conditions are met (e.g. the IRC server does not mask hostnames).</"
+"center>"
+msgstr ""
+"<center>Tuto volbu zapněte, pokud jste za routerem, který předává porty v "
+"celém rozsahu.<br>KVIrc se pokusí zjistit IP adresu, kterou použije pro DCC, "
+"zjištěním adresy, pod kterou je vedeno vaše připojení k serveru.<br>Tato "
+"metoda je exkluzivní alternativa k \"fixní adrese\" nahoře.<br>To znamená "
+"úpravu adresy automaticky pokud jsou splněny určité podmínky (např. IRC "
+"server neumí maskovat hostitele).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:134
+msgid "Use \"broken bouncer hack\" to detect address"
+msgstr "Použít \"broken bouncer hack\" pro detekci adresy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:137
+msgid ""
+"<center>When you're behind a dialup router and also tunneling through a "
+"psyBNC bouncer, you can use a bug in the bouncer to force KVIrc to bind the "
+"DCC connections to the dialup router's address.<br>It's an ugly hack - use "
+"it only if nothing else works.</center>"
+msgstr ""
+"<center>Pokud jste za dialup routerem a také tunelujete přes psyBNC bouncer, "
+"můžete využít chybu v bounceru a přinutit KVIrc aby vázalo DCC spojení "
+"adrese dialup routeru.<br>Je to hodně ošklivý hack - používejte jej, pokud "
+"nic jiného nefunguje.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:144
+msgid "Notify failed DCC handshakes to the remote end"
+msgstr "Oznámit selhanou DCC komunikaci vzdálenému konci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:147
+msgid ""
+"<center>If you enable this option, when a DCC request from a remote user "
+"can't be satisfied KVIrc will notify him by a CTCP ERRMSG. This is a nice "
+"feature so it is a good idea to leave it on unless for some reason you have "
+"deactivated the antiflood system: in this case turning off this option might "
+"help if you often get attacked by CTCP floods.</center>"
+msgstr ""
+"<center>Pokud povolíte tuto možnost, při DCC požadavku od vzdáleného "
+"uživatele nemůže být vyřízen, KVIrc mu to oznámí pomocí CTCP ERRMSG. To je "
+"dobrá vlastnost také když ji necháte zapnutou dokud z nějakých důvodů máte "
+"deaktivován antiflood systém: v tomto případě vypnutí této vlastnosti může "
+"pomoci, pokud jste často obtěžováni CTCP floody.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:154
+msgid "Maximum number of DCC sessions"
+msgstr "Maximální počet DCC relací"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:156
+msgid ""
+"<center>This is the maximum number of concurrent DCC sessions and it "
+"includes all the DCC types (send,chat,recv...). KVIrc will refuse the "
+"requests when this limit is reached.</center>"
+msgstr ""
+"<center>Toto je maximální počet současně probíhajích DCC relací a to jsou "
+"všechny DCC typy (send,chat,recv...). KVIrc odmítne další požadavky po "
+"dosažení tohoto limitu.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:161
+msgid "DCC socket timeout:"
+msgstr "DCC soket prodleva:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:164
+msgid ""
+"<center>This is the amount of time that KVIrc will wait for a response "
+"before assuming that a DCC has failed because the remote client was unable "
+"to connect to our listening socket.</center>"
+msgstr ""
+"<center>Toto je jak dlouho bude KVirc čekat na odpověď předtím než shledá, "
+"že DCC selhalo, protože vzdálený klient nebyl schopen se připojit na náš "
+"naslouchající port.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:198
+msgid "On Incoming File"
+msgstr "Při příchozím souboru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:371
+msgid "Automatically accept"
+msgstr "Automaticky přijmout"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:200
+msgid "Open transfer window as minimized when auto-accepted"
+msgstr "Otevřít přenosové okno minimalizovaně při auto-příjmu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:201
+msgid "Automatically resume when auto-accepted"
+msgstr "Automaticky navázat při auto-příjmu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:203
+msgid "Save Location"
+msgstr "Místo uložení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:204
+msgid "Download folder:"
+msgstr "Download složka:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:205
+msgid "Sort saved files by nicknames (create subfolders)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:206
+msgid "Guess save path from media type"
+msgstr "Odvodit cestu uložení z typu média"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:209
+msgid "On Download Completion"
+msgstr "Při dokončení downloadu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:210
+msgid "Notify completion in console"
+msgstr "Oznámit dokončení v konzoli"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:211
+msgid "Notify completion in notifier"
+msgstr "Oznámit dokončení v oznamovači"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:212
+msgid "Automatically clear transfer"
+msgstr "Automaticky smazat přenos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:215
+msgid ""
+"<center>This option will cause succesfully terminated transfers to be "
+"automatically removed from the transfer window.</center>"
+msgstr ""
+"<center>Tato volba způsobí, že úspěšně dokončené přenosy budou automaticky "
+"odebrány z okna přenosů.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:220
+msgid "Always open transfer window as minimized"
+msgstr "Vždy otevřít okno přenosu minimalizovaně"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:238
+msgid "Bug Compatibility"
+msgstr "Bug kompatibilita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:239
+msgid "Send ACK for byte 0"
+msgstr "Posílat ACK pro bajt 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:242
+msgid ""
+"<center>This option causes KVIrc to send a zero-byte acknowledge to kick-"
+"start the DCC transfer with some buggy IRC clients.<br>Use it only if your "
+"DCC transfers stall just after establishing a connection without sending any "
+"data.</center>"
+msgstr ""
+"<center>Tato volba způsobí, že KVIrc pošle nulový potvrzovací bajt k "
+"zahájení DCC přenosu s některými vadnými IRC klienty.<br>Použijte pouze "
+"pokud se DCC přenosy zastaví ihned po navázaní spojení bez zaslání dat.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:247
+msgid "Accept broken RESUME (mIRC file.ext)"
+msgstr "Přijímat poškozené RESUME (mIRC soubor.ext)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:250
+msgid ""
+"<center>This option causes KVIrc to accept RESUME requests with invalid "
+"filenames.<br>Use it if KVIrc fails to accept RESUME requests from other "
+"clients (e.g. some versions of mIRC).</center>"
+msgstr ""
+"<center>Tato volba způsobuje, že KVIrc přijímá RESUME požadavky s "
+"nesprávnými názvy souborů.<br>Použijte tehdy, když KVIrc selže v přijímání "
+"RESUME požadavků od ostatních klientů (např. některé verze mIRC).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:254
+msgid "Replace spaces with underscores in outgoing filenames"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:257
+#, fuzzy
+msgid ""
+"<center>This option causes KVIrc to replace spaces with underscores in "
+"filenames for all the outgoing file transfers. This will fix filename "
+"handling with some buggy clients (e.g. some versions of mIRC)."
+msgstr ""
+"<center>Tato volba způsobuje, že KVIrc přijímá RESUME požadavky s "
+"nesprávnými názvy souborů.<br>Použijte tehdy, když KVIrc selže v přijímání "
+"RESUME požadavků od ostatních klientů (např. některé verze mIRC).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:262
+msgid "Limits"
+msgstr "Omezení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:265
+msgid "Limit upload bandwidth to"
+msgstr "Omezit odchozí provoz na"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:273
+msgid "bytes/sec"
+msgstr "bajtů/sek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:271
+msgid "Limit download bandwidth to"
+msgstr "Omezit příchozí provoz na"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:277
+msgid "Maximum number of DCC transfers"
+msgstr "Maximální počet DCC přenosů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:279
+msgid ""
+"<center>This is the maximum number of concurrent DCC transfers. KVIrc will "
+"refuse the requests when this limit is reached.</center>"
+msgstr ""
+"<center>Toto je maximální počet současně probíhajících DCC přenosů. KVIrc "
+"odmítne další požadavky po dosažení tohoto limitu.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:283
+msgid "Tweaks"
+msgstr "Vylepšení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:285
+msgid "Use fast send (send ahead)"
+msgstr "Použít rychlé poslání (posílání dopředu)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:288
+msgid ""
+"<center>The \"send ahead\" DCC method allows data to be sent faster by "
+"breaking some of the rules of the original DCC SEND protocol specification."
+"<br>Most clients can handle this kind of optimisation so disable it only if "
+"you have problems.</center>"
+msgstr ""
+"<center>DCC Metoda \"poslat napřed\" umožňuje datům, aby byla zaslána "
+"rychleji porušením některých originálních pravidel ve specifikaci DCC SEND "
+"protokolu.<br>Většina klientů dokáže zvládnout tento druh optimalizace, "
+"takže ji vypněte pouze pokud máte problémy.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:295
+msgid "Force idle step"
+msgstr "Nucená nečinnost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:298
+msgid ""
+"<center>Enable this option when the dcc file transfers tend to block your "
+"computer by consuming too much CPU time. When this option is enabled the "
+"idle interval below will be forcibly inserted between each sent/received "
+"data packet.</center>"
+msgstr ""
+"<center>Tuto volbu zaškrtněte, pokud dcc přenosy souborů seberou vašemu "
+"počítači příliš procesorového času. Když je tato volba zaškrtnuta, interval "
+"nečinnosti je nuceně vložen mezi každý poslaný/přijatý datový paket.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:310
+msgid ""
+"<center>This parameter controls the average delay between two packets sent "
+"or received.<br>A smaller interval will cause you to send data faster but "
+"will also add load to your CPU, disk and network interface.<br>Reasonable "
+"values are from 5 to 50 milliseconds.</center>"
+msgstr ""
+"<center>Tento parametr kontroluje průměrnou dobu mezi odesláním dvou paketů."
+"<br>Menší interval způsobí, že budete odesílat data rychleji, ale také více "
+"zatížíte váš procesor, pevný disk a síťové rozhraní.<br>Rozumné hodnoty jsou "
+"od 5 do 50 milisekund.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:316
+msgid "Packet size:"
+msgstr "Velikost paketu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:320
+msgid ""
+"<center>This parameter controls the packet size used for DCC SEND.<br>With "
+"bigger packets you will be probably send data faster, but you will also "
+"saturate your bandwidth and in some cases cause more disk activity."
+"<br>Reasonable values are from 512 to 4096 bytes.</center>"
+msgstr ""
+"<center>Tento parametr kontroluje velikost paketu použitou pro DCC SEND."
+"<br>S většími pakety budete pravděpodobně odesílat data rychleji, ale také "
+"zahltíte vaše připojení a v některých případech způsobuje i vyšší diskovou "
+"aktivitu.<br>Rozumné hodnoty jsou od 512 do 4096 bajtů.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:349
+msgid "On Chat Request"
+msgstr "Při Chat požadavku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:351
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:373
+msgid "Open minimized when auto-accepted"
+msgstr "Otevřít minimalizovaně při auto-příjmu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:353
+msgid "Always open as minimized"
+msgstr "Vždy otevřít minimalizovaně"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:369
+msgid "Open all minimized"
+msgstr "Otevřít vše minimalizovaně"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:370
+msgid "On Voice Request"
+msgstr "Při Hlasovém požadavku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:376
+msgid "Force half-duplex mode on sound device"
+msgstr "Nastavit poloduplexní mód na zvukovém zařízení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:377
+msgid "Volume slider controls PCM, not Master"
+msgstr "Posuvník hlasitosti ovládá PCM, ne Hlasitost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:379
+msgid "Sound device:"
+msgstr "Zvukové zařízení:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:380
+msgid "Mixer device:"
+msgstr "Zařízení mixéru:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:382
+msgid "Pre-buffer size:"
+msgstr "Velikost pre-bufferu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:38
+msgid "Enable Ignore For"
+msgstr "Povolit ignorování pro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:39
+msgid "Private/channel messages"
+msgstr "Soukromé/kanálové zprávy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:40
+msgid "Private/channel notices"
+msgstr "Soukromá/kanálová oznámení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:44
+msgid "Use verbose ignore (show messages in console)"
+msgstr "Použít upovídané ignorování (zobrazovat zprávy v konzoli)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:46
+msgid "Sound System"
+msgstr "Zvukový systém"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:66
+msgid "This allows you to select the sound system to be used with KVIrc."
+msgstr "Toto umožňuje výběr zvukového systému použitého s KVIrc."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:72
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:88
+msgid "Auto-detect"
+msgstr "Autodetekce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:91
+msgid "Test"
+msgstr "Testovat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:79
+msgid "Media Player"
+msgstr "Přehrávač médií"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:81
+msgid ""
+"This allows you to select the preferred media player to be used with the "
+"mediaplayer.* module commands and functions."
+msgstr ""
+"Toto umožňuje vybrat preferovaný přehrávač médií pro použití s příkazy a "
+"funkcemi mediaplayer.* modulu."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:102
+msgid "ID3 tags' encoding"
+msgstr "kódování ID3 tagů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:104
+#, fuzzy
+msgid "This allows you to select encoding of mp3 tags."
+msgstr "Toto umožňuje výběr zvukového systému použitého s KVIrc."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:125
+msgid "Winamp messages ecoding"
+msgstr "Kódování Winamp zpráv"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:127
+#, fuzzy
+msgid "This allows you to select encoding of winamp messages."
+msgstr "Toto umožňuje výběr zvukového systému použitého s KVIrc."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:290
+msgid "New Query opened"
+msgstr "Nové query otevřené"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:293
+msgid "New message in inactive query"
+msgstr "Nové zprávy v neaktivním query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:296
+msgid "Highlighted message in inactive window"
+msgstr "Zvýrazněné zprávy v neaktivním okně"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:299
+msgid "Me have been kicked"
+msgstr "Byl(a) jsem vykopnut(a)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:39
+msgid "Selection background color"
+msgstr "Barva pozadí výběru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:40
+msgid "Selection foreground color"
+msgstr "Barva popředí výběru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:41
+msgid "Control char color"
+msgstr "Barva ovládacího znaku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:42
+msgid "Cursor color"
+msgstr "Barva kurzoru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:141
+msgid "Warp cursor at the end of line when browsing history"
+msgstr "Přesunout kurzor na konec řádky při prohlížení historie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:142
+msgid "Disable the input history window and it's log memory."
+msgstr "Vypne okno vstupní historie a jeho logovací paměť."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:143
+msgid "Hide input toolbuttons by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:144
+msgid "Nick completion"
+msgstr "Doplňování přezdívek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:145
+msgid "Use bash-like nick completion"
+msgstr "Použít doplňování přezdívek jako v bashi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:146
+msgid "Nick completion postfix string"
+msgstr "Postfix řetězec pro doplňování přezdívky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:147
+msgid "Use the completion postfix string for the first word only"
+msgstr "Použít doplňovací postfix řetězec pouze pro první slovo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:148
+msgid "Commandline in user-friendly mode by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:81
+msgid "Show message icons"
+msgstr "Zobrazovat ikony zpráv"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:82
+msgid "Draw some emoticons (smileys) as pictures"
+msgstr "Kreslit některé emotikony (smajlíky) jako obrázky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:83
+msgid "Don't show colors in user messages"
+msgstr "Nezobrazovat barvy ve zprávách uživatelů"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:88
+msgid "Nicknames"
+msgstr "Přezdívky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:90
+msgid "\"Smart\" nickname colors"
+msgstr "\"Smart\" barvy přezdívek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:91
+msgid "Use same colors as in the userlist"
+msgstr "Použít stejné barvy jako v seznamu přezdívek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:93
+msgid "Show nicknames in bold"
+msgstr "Zobrazovat přezdívky tučně"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:94
+msgid "Show user and host"
+msgstr "Zobrazovat uživatele a hostitele"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:95
+msgid "Show channel mode prefix"
+msgstr "Zobrazovat prefix módu kanálu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:96
+msgid "User-defined prefix and postfix"
+msgstr "Uživatelem definovaný prefix a postfix"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:98
+msgid "[PREFIX]nickname[!user@host][POSTFIX] message"
+msgstr "[PREFIX]přezdívka[!uživatel@hostitel][POSTFIX] zpráva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:112
+msgid "Prefix:"
+msgstr "Prefix:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:117
+msgid "Postfix:"
+msgstr "Postfix:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:131
+msgid "Show timestamp"
+msgstr "Zobrazovat čas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:134
+msgid "Use UTC time for timestamp"
+msgstr "Použít UTC pro měření času"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:141
+msgid "Use special color for timestamps"
+msgstr "Použít speciální barvy pro měření času"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:147
+msgid "Timestamp format:"
+msgstr "Formát měření času:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:320
+msgid "Transparent"
+msgstr "Průhledné"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:401
+msgid "Message Type"
+msgstr "Typ zprávy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:417
+msgid "Background:"
+msgstr "Pozadí:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:426
+msgid "Foreground:"
+msgstr "Popředí:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:434
+msgid "Alert level:"
+msgstr "Úroveň výstrahy:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:454
+msgid "Log this"
+msgstr "Logovat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:458
+msgid "Load From..."
+msgstr "Otevřít z..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:460
+msgid "Save As..."
+msgstr "Uložit jako..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:589
+msgid "Choose a Filename - KVIrc"
+msgstr "Vyberte název souboru - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:646
+msgid "Choose a Filename - KVIrc "
+msgstr "Vyberte název souboru - KVIrc "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:40
+msgid "Enable lag meter"
+msgstr "Povolit měření lagu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:42
+msgid ""
+"<center>This enables the lag meter engine, which checks at regular intervals "
+"how much lag (latency) the server has.</center>"
+msgstr ""
+"<center>Toto zapíná měřič lagu, který v pravidelných intervalech zjištuje "
+"jak velkou odezvu (reakční dobu) server má.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:45
+msgid "Lag meter heartbeat:"
+msgstr "Měřič lagu tlukot:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:49
+msgid ""
+"<center>This option allows you to set the lag meter heartbeat interval."
+"<br>The lower the heartbeat interval the higher will be the accuracy of the "
+"lag check but also higher cpu usage and data traffic to the server."
+"<br>Please note that this is NOT the interval between pings sent to the "
+"server: the pings (if any) will be sent really less often. 5000 is a "
+"reasonable value.</center>"
+msgstr ""
+"<center>Tato volba vám umožní nastavit interval tlukotu měřiče lagu."
+"<br>Nižší interval kontroly lagu způsobí vyšší zátěž procesoru a datových "
+"přenosů na server.<br>Toto NENÍ interval mezi pingy poslanými na server: "
+"pingy (pokud jsou nějaké) jsou posílány méně často. 5000 je doporučená "
+"hodnota.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:58
+msgid "Trigger event if lag exceeds:"
+msgstr "Spustit událost pokud lag překročí:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:61
+msgid ""
+"<center>This option controls the threshold for the OnLagAlarmTimeUp and "
+"OnLagAlarmTimeDown events. When the lag goes above the threshold "
+"OnLagAlarmTimeUp will be triggered and when the lag falls back below the "
+"threshold then OnLagAlarmTimeDown will be triggered</center>"
+msgstr ""
+"<center>Tato volba ovládá citlivost událostí OnLagAlarmTimeUp a "
+"OnLagAlarmTimeDown. Když lag překročí citlivost OnLagAlarmTimeUp je spuštěno "
+"a po návratu lagu pod citlivost se spustí událost OnLagAlarmTimeDown</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:68
+msgid "Show lag in IRC context display"
+msgstr "Zobrazit lag v kontextovém zobrazení IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:70
+msgid ""
+"<center>This makes the IRC context display applet show the current lag after "
+"the user's nickname (in seconds)</center>"
+msgstr ""
+"<center>Toto umožňuje IRC kontextu zobrazit applet, který ukáže aktuální "
+"odezvu za uživatelovou přezdívkou (v sekundách)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.h:28
+msgid "Away"
+msgstr "Pryč"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.h:28
+msgid "CTCP"
+msgstr "CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:28
+msgid "DCC"
+msgstr "DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:59
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:41
+msgid "Advanced"
+msgstr "Pokročilé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:72
+msgid "File Transfer"
+msgstr "Přenos souboru"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:113
+msgid "Chat"
+msgstr "Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:126
+msgid "Voice"
+msgstr "Voice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:32
+msgid "IRC"
+msgstr "IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:73
+msgid "Channel"
+msgstr "Kanál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:28
+msgid "Lag"
+msgstr "Lag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:30
+msgid "time,ping"
+msgstr "čas,ping"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:37
+msgid "authentication,identify"
+msgstr "autentifikace,identifikace"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:31
+msgid "Language"
+msgstr "Jazyk"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:34
+msgid "language,encoding,charset,codepage"
+msgstr "jazyk,kódování,znaková sada,kódová stránka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:28
+msgid "Contacts"
+msgstr "Kontakty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:30
+msgid "notify,buddy,buddies,friends"
+msgstr "oznámení,přítel,přátelé,kamarádi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:42
+msgid "Notifier"
+msgstr "Oznamovač"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:43
+msgid "popup"
+msgstr "popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:37
+msgid "Text"
+msgstr "Text"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:38
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:49
+msgid "theme,colors,output"
+msgstr "motiv,barvy,výstup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:52
+msgid "Message Style"
+msgstr "Styl zprávy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:56
+msgid "theme,privmsg,output,format"
+msgstr "motiv,soukromé zprávy,výstup,formát"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:67
+msgid "Timestamp"
+msgstr "Měření času"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:71
+msgid "time,timestamp"
+msgstr "čas, měření času"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:88
+msgid "Message Colors"
+msgstr "Barvy zpráv"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:169
+msgid "theme,colors,messages,output"
+msgstr "motiv,barvy,zprávy,výstup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:168
+msgid "Color Set"
+msgstr "Sada barev"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.h:32
+msgid "Avatars"
+msgstr "Avatary"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:32
+msgid "Sound"
+msgstr "Zvuk"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:48
+msgid "sound,xmms,audio,play,amarok"
+msgstr "zvuk,xmms,audio,přehrávání,amarok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:81
+msgid "Sounds"
+msgstr "Zvuky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:83
+msgid "sound,events"
+msgstr "zvuk,události"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:28
+msgid "URL handlers"
+msgstr "URL handlery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:31
+msgid "url,programs"
+msgstr "url,programy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:29
+msgid "Tray icon"
+msgstr "Ikona panelu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:31
+msgid "tray,dockwidget"
+msgstr "lišta,dokovací widget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.h:33
+msgid "Tools"
+msgstr "Nástroje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.h:28
+msgid "General options"
+msgstr "Hlavní možnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.h:31
+msgid "Interface"
+msgstr "Rozhraní"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:29
+msgid "Text icons"
+msgstr "Textové ikony"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:31
+msgid "smileys,emoticons"
+msgstr "smajlíky,emotikony"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:34
+msgid "Output"
+msgstr "Výstup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:48
+msgid "Look"
+msgstr "Vzhled"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:101
+msgid "Features"
+msgstr "Vlastnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:46
+msgid "Media Types"
+msgstr "Typy médií"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:48
+msgid "file,audio,video,programs"
+msgstr "soubor,audio,video,programy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:114
+msgid "theme"
+msgstr "motiv"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:47
+msgid "Transparency"
+msgstr "Průhlednost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:48
+msgid "theme,background"
+msgstr "motiv,pozadí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:74
+msgid "Window Captions"
+msgstr "Popisky oken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:88
+msgid "theme,mdi"
+msgstr "motiv,mdi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:87
+msgid "Workspace"
+msgstr "Pracovní plocha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:100
+msgid "ToolBar Applets"
+msgstr "Aplety Nástrojové lišty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:101
+msgid "theme,toolbar"
+msgstr "motiv,nástrojová lišta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:150
+msgid "connection"
+msgstr "připojení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:33
+msgid "Protection"
+msgstr "Ochrana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:36
+msgid "ctcp,flood"
+msgstr "ctcp,zahlcení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:144
+msgid "Avatar"
+msgstr "Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.h:28
+msgid "Anti-spam"
+msgstr "Anti-spam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:32
+msgid "Verbosity And Output"
+msgstr "Upovídanost a Výstup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:34
+msgid "debug"
+msgstr "ladění"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:28
+msgid "Logging"
+msgstr "Logování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:29
+msgid "save,output"
+msgstr "ukládání,výstup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:50
+msgid "Input"
+msgstr "Vstup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:33
+msgid "theme,colors,text"
+msgstr "motiv,barvy,text"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:33
+msgid "Taskbar"
+msgstr "Lišta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:47
+msgid "Tree Taskbar"
+msgstr "Stromová lišta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:65
+msgid "Foreground"
+msgstr "Popředí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:111
+msgid "Classic Taskbar"
+msgstr "Klasická lišta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:52
+msgid "Proxy Hosts"
+msgstr "Proxy hostitelé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:54
+msgid "connection,servers"
+msgstr "připojení,servery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:28
+msgid "Alert/Highlight"
+msgstr "Výstrahy/Zvýraznění"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:42
+msgid "Highlight"
+msgstr "Zvýraznění"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:55
+msgid "Taskbar Alert"
+msgstr "Výstraha lišty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.h:29
+msgid "Flood Protection"
+msgstr "Ochrana před zahlcením"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:30
+msgid "Userlist"
+msgstr "Uživatelé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:31
+msgid "theme,userlist,channel"
+msgstr "motiv,seznam přezdívek,kanál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:45
+msgid "theme,userlist,channel,background"
+msgstr "motiv,seznam přezdívek,kanál,pozadí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:66
+msgid "theme,userlist,channel,colors"
+msgstr "motiv,seznam přezdívek,kanál,barvy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:81
+msgid "Nickname Grid"
+msgstr "Mřížka přezdívky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:82
+msgid "theme,userlist,channel,grid"
+msgstr "motiv,seznam přezdívek,kanál,mřížka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:102
+msgid "userlist,channel"
+msgstr "seznam uživatelů,kanál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:29
+msgid "Labels"
+msgstr "Návěstí"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:30
+msgid "theme,topic"
+msgstr "motiv,téma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:28
+msgid "Scripting Engine"
+msgstr "Skriptovací nástroj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:29
+msgid "scripting,kvs,debug"
+msgstr "skriptování,kvs,ladění"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:55
+msgid "SSL"
+msgstr "SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:72
+msgid "Socket"
+msgstr "Soket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:87
+msgid "Ident Service"
+msgstr "Ident služba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:29
+msgid "Ignore"
+msgstr "Ignorování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:31
+msgid "protection"
+msgstr "ochrana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:28
+msgid "Query"
+msgstr "Query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:30
+msgid "chat"
+msgstr "chat"
+
+#, fuzzy
+#~ msgid "Output verosity"
+#~ msgstr "Upovídanost výstupu"
+
+#, fuzzy
+#~ msgid "Scaling"
+#~ msgstr "Skriptování"
+
+#~ msgid "Save Current Theme"
+#~ msgstr "Uložit současné téma"
+
+#~ msgid "Theme name:"
+#~ msgstr "Název tématu:"
+
+#~ msgid "Version:"
+#~ msgstr "Verze:"
+
+#~ msgid "Author:"
+#~ msgstr "Autor:"
+
+#, fuzzy
+#~ msgid "Package format:"
+#~ msgstr "Formát zprávy"
+
+#~ msgid "Save Theme - KVIrc"
+#~ msgstr "Uložit téma - KVIrc"
+
+#~ msgid "Unable to create theme directory."
+#~ msgstr "Nelze vytvořit adresář tématu."
+
+#~ msgid "Theme saved successfully to "
+#~ msgstr "Téma úspěšně uloženo do "
+
+#, fuzzy
+#~ msgid "Choose save directory"
+#~ msgstr "Zvolte adresář - KVIrc"
+
+#, fuzzy
+#~ msgid "You must select save directory"
+#~ msgstr "Zvolte adresář - KVIrc"
+
+#, fuzzy
+#~ msgid "Unable to create theme files directory."
+#~ msgstr "Nelze vytvořit adresář tématu."
+
+#, fuzzy
+#~ msgid "Unable to create theme utils directory."
+#~ msgstr "Nelze vytvořit adresář tématu."
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for reading."
+#~ msgstr "Nelze otevřít soubor %s pro čtení."
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for writing."
+#~ msgstr "Nelze otevřít soubor %s pro zápis."
+
+#, fuzzy
+#~ msgid "Choose filaname"
+#~ msgstr "Vyberte soubor logu"
+
+#, fuzzy
+#~ msgid "You must select filename"
+#~ msgstr "Musíte si vybrat název téma!"
+
+#~ msgid "You must choose a theme name!"
+#~ msgstr "Musíte si vybrat název téma!"
+
+#~ msgid "Refresh Theme List"
+#~ msgstr "Obnovit seznam témat"
+
+#~ msgid "Save Current Theme..."
+#~ msgstr "Uložit současné téma..."
+
+#, fuzzy
+#~ msgid "Delete Selected Theme"
+#~ msgstr "&Odebrat vybrané"
+
+#~ msgid "Get More Themes..."
+#~ msgstr "Stáhnout další témata..."
+
+#, fuzzy
+#~ msgid "Open Theme - KVIrc"
+#~ msgstr "Uložit téma - KVIrc"
+
+#, fuzzy
+#~ msgid "You must select file"
+#~ msgstr "Nebyl vybrán žádný záznam."
+
+#~ msgid "Current Theme"
+#~ msgstr "Současné téma"
+
+#~ msgid "<p>The active theme settings</p>"
+#~ msgstr "<p>Nastavení aktivního téma</p>"
+
+#~ msgid "<p>Theme: %1</p>"
+#~ msgstr "<p>Téma: %1</p>"
+
+#~ msgid "<p>Version: %1</p>"
+#~ msgstr "<p>Verze: %1</p>"
+
+#~ msgid "<p>Date: %1</p>"
+#~ msgstr "<p>Datum: %1</p>"
+
+#~ msgid "<p>Author: %1</p>"
+#~ msgstr "<p>Autor: %1</p>"
+
+#~ msgid "Timestamp color"
+#~ msgstr "Barva měření času"
+
+#~ msgid "Minimize new queries"
+#~ msgstr "Minimalizovat nové Query"
+
+#~ msgid "Automatically close on completion"
+#~ msgstr "Automaticky zavřít při ukončení"
+
+#~ msgid "Speed limits"
+#~ msgstr "Rychlostní omezení"
+
+#~ msgid "Idle interval:"
+#~ msgstr "Interval nečinnosti:"
+
+#~ msgid ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">General Preferences</font></h1></center></td></"
+#~ "tr><tr><td><br><br><center><b>These sections contain various settings for "
+#~ "KVIrc</b></center><br><br><p>When you have finished, click \"<b>OK</b>\" "
+#~ "to accept your changes or \"<b>Cancel</b>\" to discard them. Clicking "
+#~ "\"<b>Apply</b>\" will commit your changes without closing the window.</"
+#~ "td></tr><tr><td>Many settings have tooltips that can be shown by holding "
+#~ "the cursor over their label for a few seconds.</p></td></tr></table>"
+#~ msgstr ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">Hlavní předvolby</font></h1></center></td></"
+#~ "tr><tr><td><br><br><center><b>Tyto sekce obsahují nejdůležitější "
+#~ "nastavení KVIrc</b></center><br><br><p>Po dokončení, klikněte na \"<b>OK</"
+#~ "b>\" pro potvrzení změn nebo \"<b>Zrušit</b>\" pro zrušení. Kliknutím na "
+#~ "\"<b>Použít</b>\" provedete změny bez zavření okna.</td></"
+#~ "tr><tr><td>Mnoho nastavení má kontextovou nápovědu, která se zobrazí při "
+#~ "přejezdu kurzoru na pár sekund.</p></td></tr></table>"
+
+#~ msgid ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">General Preferences</font></h1></center></td></"
+#~ "tr><tr><td><br><br>Select a category in the list view on the left to view "
+#~ "the related settings. When you have finished, click \"<b>OK</b>\" to "
+#~ "accept your changes or \"<b>Cancel</b>\" to discard them. Clicking "
+#~ "\"<b>Apply</b>\" will commit your changes without closing this window."
+#~ "<br><br></td></tr></table>"
+#~ msgstr ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">Hlavní předvolby</font></h1></center></td></"
+#~ "tr><tr><td><br><br>Vyberte si kategorii ze seznamu nalevo pro prohlédnutí "
+#~ "souvisejících nastavení. Po·dokončení,·klikněte·na \"<b>OK</b>\" pro "
+#~ "potvrzení změn nebo \"<b>Zrušit</b>\" pro zrušení. Kliknutím na "
+#~ "\"<b>Použít</b>\" provedete·změny·bez·zavření·tohoto okna.<br><br></td></"
+#~ "tr></table>"
+
+#~ msgid "Preferences - KVIrc"
+#~ msgstr "Předvolby - KVIrc"
+
+#~ msgid "Standard Colors"
+#~ msgstr "Standardní barvy"
+
+#, fuzzy
+#~ msgid "Avatar Handling"
+#~ msgstr "Změna avataru"
+
+#~ msgid "MDI Captions"
+#~ msgstr "MDI Titulky"
+
+#~ msgid "MDI Area"
+#~ msgstr "MDI Oblast"
+
+#, fuzzy
+#~ msgid "Load & Save"
+#~ msgstr "&Uložit"
+
+#, fuzzy
+#~ msgid "Output Style"
+#~ msgstr "Výstup"
+
+#~ msgid "Maximum number of rows:"
+#~ msgstr "Maximální počet řádků:"
+
+#~ msgid ""
+#~ "The list below shows the currently installed themes. To apply a theme "
+#~ "select it and click \"Ok\" or \"Apply\". Please note that the message "
+#~ "text colors are applied only to new messages in each window.<br>To "
+#~ "install a new theme, unpack it to:<br><b>"
+#~ msgstr ""
+#~ "Následující seznam ukazuje současná nainstalovaná témata. Pro změnu "
+#~ "vyberte téma a klikněte na \"Ok\" nebo \"Použít\". Barvy textu zpráv se "
+#~ "projeví samozřejmě až u nových zpráv v každém okně.<br>Pro nainstalování "
+#~ "nového tématu jej rozbalte do:<br><b>"
+
+#~ msgid "Custom nickname:"
+#~ msgstr "Vlastní přezdívka:"
+
+#, fuzzy
+#~ msgid "Normal user"
+#~ msgstr "Normální uživatel"
+
+#, fuzzy
+#~ msgid "Experienced user"
+#~ msgstr "uživatel s voice"
+
+#, fuzzy
+#~ msgid "Novice"
+#~ msgstr "Voice"
+
+#~ msgid "Alias"
+#~ msgstr "Alias"
+
+#, fuzzy
+#~ msgid "Rename"
+#~ msgstr "Skutečné jméno:"
+
+#, fuzzy
+#~ msgid "Edit the alias or namespace name"
+#~ msgstr "Upravit jméno aliasu."
+
+#, fuzzy
+#~ msgid "Add Alias"
+#~ msgstr "Alias"
+
+#, fuzzy
+#~ msgid "Export Selected..."
+#~ msgstr "&Exportovat vybrané do..."
+
+#, fuzzy
+#~ msgid "Export All..."
+#~ msgstr "&Exportovat vše jako..."
+
+#, fuzzy
+#~ msgid "Find In Aliases..."
+#~ msgstr "Upravit Aliasy..."
+
+#, fuzzy
+#~ msgid "Alias Export"
+#~ msgstr "Editor aliasů"
+
+#~ msgid "Write Failed - KVIrc"
+#~ msgstr "Zápis selhal - KVIrc"
+
+#~ msgid "Unable to write to the alias file."
+#~ msgstr "Nelze zapisovat do souboru aliasů."
+
+#, fuzzy
+#~ msgid "Do you really want to remove the alias \"%Q\" ?"
+#~ msgstr "Opravdu chcete smazat nástrojovou lištu \"%1\" ?"
+
+#, fuzzy
+#~ msgid "Do you really want to remove the namespace \"%Q\" ?"
+#~ msgstr "Opravdu chcete smazat nástrojovou lištu \"%1\" ?"
+
+#, fuzzy
+#~ msgid "Remove item"
+#~ msgstr "Odebrat %Q"
+
+#~ msgid "Yes"
+#~ msgstr "Ano"
+
+#, fuzzy
+#~ msgid "Yes to All"
+#~ msgstr "Nastavit &vše"
+
+#~ msgid "No"
+#~ msgstr "Ne"
+
+#, fuzzy
+#~ msgid "Missing Alias Name"
+#~ msgstr "Chybí jméno aliasu"
+
+#, fuzzy
+#~ msgid "Missing Namespace Name"
+#~ msgstr "Chybí jméno časovače"
+
+#, fuzzy
+#~ msgid "Please enter the name for the new alias"
+#~ msgstr "Prosím zadejte vlastnosti pro novou nástrojovou lištu"
+
+#, fuzzy
+#~ msgid "Please enter the name for the new namespace"
+#~ msgstr "Prosím zadejte vlastnosti pro novou nástrojovou lištu"
+
+#, fuzzy
+#~ msgid "Rename Alias"
+#~ msgstr "S&mazat Alias"
+
+#, fuzzy
+#~ msgid "Please enter the new name for the alias"
+#~ msgstr "Prosím vyberte ikonu pro nástrojovou lištu"
+
+#, fuzzy
+#~ msgid "Namespace"
+#~ msgstr "Zprávy"
+
+#~ msgid "Alias Editor"
+#~ msgstr "Editor aliasů"
+
+#, fuzzy
+#~ msgid "The config file with id '%Q' is not open"
+#~ msgstr "Konfigurační soubor s id '%s' není otevřen"
+
+#~ msgid ""
+#~ "The config file '%s' has been changed but is opened as read-only: changes "
+#~ "will be lost"
+#~ msgstr ""
+#~ "Konfigurační soubor '%s' byl změněn, ale je otevřen jen pro čtení: změny "
+#~ "budou ztraceny"
+
+#, fuzzy
+#~ msgid "The config file with id '%Q' is read only"
+#~ msgstr "Konfigurační soubor s id '%s' je jen pro čtení"
+
+#~ msgid "Request Links"
+#~ msgstr "Zjistit Linky"
+
+#~ msgid "Link"
+#~ msgstr "Link"
+
+#~ msgid "Hops"
+#~ msgstr "Hopů"
+
+#~ msgid "(None)"
+#~ msgstr "(Žádné)"
+
+#~ msgid "Sent links request, waiting for reply..."
+#~ msgstr "Zaslán požadavek linků, čeká se na odezvu..."
+
+#~ msgid "Cannot request links: No active connection"
+#~ msgstr "Nelze požadovat linky: Není aktivní spojení"
+
+#~ msgid "Connected to %s (%s)"
+#~ msgstr "Připojen k %s (%s)"
+
+#~ msgid "Links cannot be requested: Not connected to a server"
+#~ msgstr "Linky nemohou být požadovány: Nejste připojeni k serveru"
+
+#~ msgid "Links for %Q [IRC Context %u]"
+#~ msgstr "Linky pro %Q [IRC kontext %u]"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Links for %Q</b></font> <font color=\"%s\">"
+#~ "[IRC Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>Linky pro %Q</b></font> <font color=\"%s\">"
+#~ "[IRC kontext %u]</font></nobr>"
+
+#~ msgid "Received end of links."
+#~ msgstr "Obdržen konec linků."
+
+#~ msgid ""
+#~ "Broken link: Missing parent (%s) for %s (%d hops): %s (used /LINKS "
+#~ "<mask> ?)"
+#~ msgstr ""
+#~ "Poškozený link: Chybí zdroj (%s) pro %s (%d hopů): %s (použito /LINKS "
+#~ "<maska> ?)"
+
+#~ msgid "%s: Parent link %s"
+#~ msgstr "%s: Zdrojový link %s"
+
+#~ msgid ""
+#~ "Warning: No root link was sent by the server, the stats may be invalid."
+#~ msgstr ""
+#~ "Upozornění: Server neposlal kořenový link, statistiky mohou být neplatné."
+
+#~ msgid "%c%cLinks for %Q"
+#~ msgstr "%c%cLinky z %Q"
+
+#~ msgid "Total hosts listed"
+#~ msgstr "Celkem hostitelů v seznamu"
+
+#~ msgid "Total hosts in the network"
+#~ msgstr "Celkem hostitelů v síti"
+
+#~ msgid "Wildcard servers (hubs?): %d"
+#~ msgstr "Zástupné servery (huby?): %d"
+
+#~ msgid "Direct links: %d (~%d.%d %)"
+#~ msgstr "Přímých linků: %d (~%d.%d %)"
+
+#~ msgid "Close links (1 <= hops <= 3): %d (~%d.%d %)"
+#~ msgstr "Blízkých linků (1 <= hopů <= 3): %d (~%d.%d %)"
+
+#~ msgid "Mid-range links (4 <= hops <= 6): %d (~%d.%d %)"
+#~ msgstr "Středně vzdálených linků (4 <= hopů <= 6): %d (~%d.%d %)"
+
+#~ msgid "Distant links (7 <= hops): %d (~%d.%d %)"
+#~ msgstr "Vzdálených linků (7 <= hopů): %d (~%d.%d %)"
+
+#~ msgid "Broken (unknown) links: %d"
+#~ msgstr "Poruchy (neznámé) linky: %d"
+
+#~ msgid "Maximum links per host: %d [%s]"
+#~ msgstr "Maximálně linků na hostitele: %d [%s]"
+
+#~ msgid "Total links: %d"
+#~ msgstr "Celkem linků: %d"
+
+#~ msgid "Maximum hops: %d [%s]"
+#~ msgstr "Maximálně hopů: %d [%s]"
+
+#~ msgid "Average hops: ~%d.%d"
+#~ msgstr "Průměrně hopů: ~%d.%d"
+
+#~ msgid "(Unknown)"
+#~ msgstr "(Neznámý)"
+
+#~ msgid "Incomplete LINKS result, no stats available"
+#~ msgstr "Nekompletní LINKS výsledek, statistiky nedostupné"
+
+#~ msgid "You're not connected to a server"
+#~ msgstr "Nejste připojeni k serveru"
+
+#~ msgid "Reset"
+#~ msgstr "Obnovit"
+
+#~ msgid "Processing link: %s"
+#~ msgstr "Zpracovávám link: %s"
+
+#~ msgid "Broken message syntax, can't extract hops number, assuming 0"
+#~ msgstr "Poškozená syntaxe zprávy, nelze získat počet hopů, nastavuji 0"
+
+#~ msgid "Links window alread open for this IRC context"
+#~ msgstr "Okno s Linky je již otevřeno pro tento IRC kontext"
+
+#~ msgid "Current window is not a channel"
+#~ msgstr "Toto okno není kanál"
+
+#~ msgid "List window alread open for this IRC context"
+#~ msgstr "Okno se seznamem kanálů je již otevřené v tomto IRC kontextu"
+
+#~ msgid "Request List"
+#~ msgstr "Stáhnout seznam"
+
+#~ msgid "Stop list download"
+#~ msgstr "Zastavit stahování seznamu"
+
+#~ msgid ""
+#~ "<center><b>/LIST command parameters:</b><br>Many servers accept special "
+#~ "parameters that allow you to filter the returned entries.<br>Commonly, "
+#~ "masked channel names (*kvirc*) are accepted as parameters, as well as "
+#~ "strings like <b>c&lt;n</b> or <b>c&gt;n</b> where <b>n</b> is the minimum "
+#~ "or maximum of users on the channel.</center>"
+#~ msgstr ""
+#~ "<center><b>Parametry příkazu /LIST:</b><br>Mnoho serverů přijímá "
+#~ "speciální parametry, které vám umožňují filtrovat vrácené hodnoty."
+#~ "<br>Většinou maskované názvy kanálů (*kvirc*) jsou přijímány jako "
+#~ "parametry, stejně tak znaky jako <b>c&lt;n</b> nebo <b>c&gt;n</b> kde "
+#~ "<b>n</b> je minimum, nebo maximum uživatelů na kanálu.</center>"
+
+#~ msgid "Users"
+#~ msgstr "Uživatelů"
+
+#~ msgid "Topic"
+#~ msgstr "Téma"
+
+#~ msgid "Sent list request, waiting for reply..."
+#~ msgstr "Zaslán požadavek seznamu, čeká se na odezvu..."
+
+#~ msgid "Cannot request list: No active connection"
+#~ msgstr "Nelze požadovat seznam kanálů: Není žádné aktivní spojení"
+
+#~ msgid "Stopping the list download..."
+#~ msgstr "Zastavuje se stahování seznamu..."
+
+#~ msgid "Cannot stop list download, no active connection."
+#~ msgstr "Nelze zastavit stahování seznamu, není žádné aktivní spojení."
+
+#~ msgid "List cannot be requested: Not connected to a server"
+#~ msgstr "Seznam kanálů nemůže být žádán: Nejste připojeni na server"
+
+#~ msgid "Channel List [IRC Context %u]"
+#~ msgstr "Seznam kanálů [IRC kontext %u]"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Channel List</b></font> <font color=\"%s\">"
+#~ "[IRC Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>Seznam Kanálů</b></font> <font color=\"%s\">"
+#~ "[IRC kontext %u]</font></nobr>"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Channel list</b></font> <font color=\"%s\">"
+#~ "[IRC Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>Seznam kanálů</b></font> <font color=\"%s\">"
+#~ "[IRC kontext %u]</font></nobr>"
+
+#~ msgid "Channels list download finished"
+#~ msgstr "Stažení seznamu kanálů dokončeno"
+
+#~ msgid "Processing list: %Q"
+#~ msgstr "Zpracovává se seznam: %Q"
+
+#~ msgid "Search keywords"
+#~ msgstr "Hledat klíčová slova"
+
+#~ msgid "Help Browser"
+#~ msgstr "Prohlížeč nápovědy"
+
+#~ msgid "No such channel/netmask entry in the database"
+#~ msgstr "Žádný záznam kanálu/masky v databázi"
+
+#~ msgid "Channel: %c%s@%s"
+#~ msgstr "Kanál: %c%s@%s"
+
+#~ msgid " Property: %s=%s"
+#~ msgstr " Vlastnost: %s=%s"
+
+#~ msgid "Total %d channels"
+#~ msgstr "Celkem %d kanálů"
+
+#~ msgid "Show URL List"
+#~ msgstr "Zobrazit seznam URL"
+
+#~ msgid "Shows the URL list window"
+#~ msgstr "Zobrazí okno se seznamem URL"
+
+#~ msgid "&Configure"
+#~ msgstr "&Nastavit"
+
+#~ msgid "&Help"
+#~ msgstr "&Nápověda"
+
+#~ msgid "Clo&se"
+#~ msgstr "Za&vřít"
+
+#~ msgid "&Module"
+#~ msgstr "&Modul"
+
+#~ msgid "&Load"
+#~ msgstr "&Nahrát"
+
+#~ msgid "&Clear"
+#~ msgstr "&Vymazat"
+
+#~ msgid "&List"
+#~ msgstr "&Seznam"
+
+#~ msgid "URL"
+#~ msgstr "URL"
+
+#~ msgid "Window"
+#~ msgstr "Okno"
+
+#~ msgid "Count"
+#~ msgstr "Počet"
+
+#~ msgid "Warning - KVIrc"
+#~ msgstr "Upozornění - KVIrc"
+
+#~ msgid "Select an URL."
+#~ msgstr "Vyberte URL."
+
+#~ msgid "&Remove"
+#~ msgstr "&Odebrat"
+
+#~ msgid "&Find Text"
+#~ msgstr "&Hledat text"
+
+#~ msgid "&Say to Window"
+#~ msgstr "Ří&ct do okna"
+
+#~ msgid "Window not found."
+#~ msgstr "Okno nenalezeno."
+
+#~ msgid "URL Module Configuration"
+#~ msgstr "Nastavení URL modulu"
+
+#~ msgid "Save URL list on module unload"
+#~ msgstr "Uložit seznam URL při odstranění modulu"
+
+#~ msgid "Save columns width on URL list close"
+#~ msgstr "Uložit šířku sloupců při zavření seznamu URL"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Zrušit"
+
+#~ msgid "Enable URL ban list"
+#~ msgstr "Povolit seznam URL banů"
+
+#~ msgid "&Add Ban"
+#~ msgstr "&Přidat Ban"
+
+#~ msgid "&Remove Selected"
+#~ msgstr "&Odebrat vybrané"
+
+#~ msgid "URL Ban List"
+#~ msgstr "Seznam URL banů"
+
+#~ msgid "Select a ban."
+#~ msgstr "Vyberte ban."
+
+#~ msgid "Window with ID '%Q' not found"
+#~ msgstr "Okno s ID '%Q' nenalezeno"
+
+#~ msgid "The specified window (%Q) is not a channel/query/DCC chat"
+#~ msgstr "Určené okno (%Q) není kanál, query, ani DCC chat"
+
+#~ msgid "File not found or empty"
+#~ msgstr "Soubor nenalezen nebo prázdný"
+
+#~ msgid "I can't open that file"
+#~ msgstr "Nelze otevřít tento soubor"
+
+#~ msgid "Could not paste file"
+#~ msgstr "Nelze vkládat soubor"
+
+#~ msgid "The specified window (%s) is not a channel/query/dcc"
+#~ msgstr "Určené okno (%s) není kanál, query, ani dcc"
+
+#~ msgid "Slow-paste ID:%d Window:%s"
+#~ msgstr "Pomalu vložit ID:%d Okno:%s"
+
+#~ msgid "Window %Q not found"
+#~ msgstr "Okno %Q nenalezeno"
+
+#~ msgid "Missing window id after the 'w' switch"
+#~ msgstr "Chybí id okna za 'w' přepínačem"
+
+#~ msgid "Can't log to file %Q"
+#~ msgstr "Nelze logovat do souboru %Q"
+
+#~ msgid "This window has no logging capabilities"
+#~ msgstr "Toto okno nemá možnost logování"
+
+#~ msgid "Window with id '%Q' not found, returning empty string"
+#~ msgstr "Okno s id '%Q' nenalezeno, vrací prázdný řetězec"
+
+#~ msgid "< &Back"
+#~ msgstr "< &Zpět"
+
+#~ msgid "&Next >"
+#~ msgstr "&Další >"
+
+#~ msgid "Finish"
+#~ msgstr "Hotovo"
+
+#~ msgid ""
+#~ "<p><h2>Welcome :)</h2>This is your first time running this version of "
+#~ "KVIrc.<br>This wizard will guide you through the few steps required to "
+#~ "complete the setup.<br><br>If you had a previous version of KVIrc "
+#~ "installed, no worries. You will have a chance to preserve the old "
+#~ "configuration.</p><p>Click \"<b>Next</b>\" to proceed.</p>"
+#~ msgstr ""
+#~ "<p><h2>Vítejte :)</h2>Toto je vaše první spuštění této verze KVIrc."
+#~ "<br>Tento průvodce vám pomůže projít nezbytnými kroky potřebnými k "
+#~ "dokončení nastavení.<br><br>Pokud máte nainstalovanou předchozí verzi "
+#~ "KVIrc, tak žádné obavy. Budete mít možnost zachovat starou konfiguraci.</"
+#~ "p><p>Klikněte na \"<b>Další</b>\" pro pokračování.</p>"
+
+#~ msgid "Welcome to KVIrc"
+#~ msgstr "Vítejte v KVIrc"
+
+#~ msgid ""
+#~ "<p>All of the files in this distribution are covered by the GPL. In human "
+#~ "terms this can be read as follows:<br><ul><li><b>KVIrc is free</b>, use "
+#~ "it, have fun! <b>:)</b></li><li>If you use <b>any</b> part of KVIrc in "
+#~ "your own project, you <b>must</b> release that project under the same "
+#~ "license.</li></ul></p><p>The \"legalese\" version of the license is shown "
+#~ "in the box below.</p>"
+#~ msgstr ""
+#~ "<p>Všechny soubory v této distribuci jsou vydány pod GPL. V srozumitelné "
+#~ "podobě to může být vyloženo asi takto:<br><ul><li><b>KVIrc je svobodné</"
+#~ "b>, používejte ho, užívejte si ho! <b>:)</b></li><li>Pokud použijete "
+#~ "<b>jakoukoliv</b> část KVIrc ve vašem vlastním projektu, <b>musíte</b> "
+#~ "vydat tento projekt pod stejnou licencí.</li></ul></p><p>\"Zkrácená\" "
+#~ "verze licence je zobrazena v rámečku dole.</p>"
+
+#~ msgid ""
+#~ "Oops... can't find the license file.\n"
+#~ "It MUST be included in the distribution...\n"
+#~ "Please report to <pragma at kvirc dot net>"
+#~ msgstr ""
+#~ "Oops... nemohu najít licenční soubor.\n"
+#~ "MUSÍ být obsažen v distribuci...\n"
+#~ "Prosím ohlašte na <pragma at kvirc dot net>"
+
+#~ msgid "Dreaded License Agreement"
+#~ msgstr "Obávané licenční ujednání"
+
+#~ msgid "KVIrc Setup"
+#~ msgstr "KVIrc Nastavení"
+
+#~ msgid ""
+#~ "Please choose a Nickname.<br><br>Your nickname is the name that other IRC "
+#~ "users will know you by. It can't contain spaces or punctuation. Some IRC "
+#~ "networks will shorten your nickname if it is more than 9 characters long."
+#~ "<br><br>If in doubt, just enter the first nick that comes to mind. You "
+#~ "will be able to change it later in the Identity properties, or with the /"
+#~ "NICK command."
+#~ msgstr ""
+#~ "Prosím vyberte Přezdívku.<br><br>Vaše přezdívka je jméno, pod kterým vás "
+#~ "budou ostatní na IRC znát. Nemůže obsahovat mezery, ani čárky. Některé "
+#~ "IRC sítě zkrátí vaši přezdívku, pokud je více jak 9 znaků dlouhá."
+#~ "<br><br>Pokud máte pochybnosti, tak napište první věc, která vás napadne. "
+#~ "Budete moci jí změnit později v nastavení Identita, nebo pomocí příkazu /"
+#~ "NICK."
+
+#~ msgid "<b>Nickname:</b>"
+#~ msgstr "<b>Přezdívka:</b>"
+
+#~ msgid ""
+#~ "<p>Please choose a folder for KVIrc to store its settings and other data, "
+#~ "and another for downloaded files. Make sure that you have permission to "
+#~ "write to both folders.<br><br>The suggested locations are fine in most "
+#~ "cases, so if you don't know what is this about, just click \"<b>Next</b>"
+#~ "\".<br><br>If you had a previous version of KVIrc installed, you can "
+#~ "choose the existing directory for the settings, and your configuration "
+#~ "will be preserved.</p>"
+#~ msgstr ""
+#~ "<p>Prosím vyberte adresář, kam KVIrc uloží nastavení a data, a jiný "
+#~ "adresář pro ukládání stažených souborů. Ujistěte se, že máte práva k "
+#~ "zapisování do obou adresářů.<br><br>Doporučená umístění jsou v mnoha "
+#~ "případech v pořádku, takže pokud nevíte, jenom klikněte na \"<b>Další</b>"
+#~ "\".<br><br>Pokud máte nainstalovanou předchozí verzi KVIrc, můžete vybrat "
+#~ "existující adresář a vaše konfigurace bude zachována.</p>"
+
+#~ msgid "Application Folders"
+#~ msgstr "Složky aplikace"
+
+#~ msgid "<b>Store configuration in folder:</b>"
+#~ msgstr "<b>Uložit předvolby v adresáři:</b>"
+
+#~ msgid "<b>Download files to folder:</b>"
+#~ msgstr "<b>Stažené soubory do adresáře:</b>"
+
+#~ msgid ""
+#~ "<p>Here you can choose the default appearance of KVIrc.<br><br>The Fancy "
+#~ "Theme uses icons, a transparent background and a lot of colors. The "
+#~ "Minimalist Theme is designed for low-color displays or for \"console\" "
+#~ "extremists; it's more or less white text on a black background.<br><br>If "
+#~ "you had a previous version of KVIrc installed, you can choose to not "
+#~ "apply any theme in order to preserve your current visual settings."
+#~ "<br><br>If you don't know what to choose, just use the default.</p>"
+#~ msgstr ""
+#~ "<p>Zde si můžete vybrat výchozí vzhled KVIrc.<br><br>Fancy téma používá "
+#~ "ikony, transparentní pozadí a hodně barev. Minimalistické téma je "
+#~ "navrženo pro obrazovky s nízkym počtem barev, nebo pro \"konzolové\" "
+#~ "extremisty; je to víceméně bílý text na černém pozadí.<br><br>Pokud jste "
+#~ "měli nainstalovanou předchozí verzi KVirc, nemusíte aplikovat žádný "
+#~ "uvedený motiv, aby bylo zachováno vaše původní vizuální nastavení."
+#~ "<br><br>Pokud nevíte co vybrat, vyberte výchozí.</p>"
+
+#~ msgid "&Fancy Theme"
+#~ msgstr "&Fancy téma"
+
+#~ msgid "&Minimalist Theme"
+#~ msgstr "&Minimalistické téma"
+
+#~ msgid "&Don't apply any theme"
+#~ msgstr "&Nepoužít žádné téma"
+
+#~ msgid "Default Theme"
+#~ msgstr "Výchozí téma"
+
+#~ msgid ""
+#~ "<p>Setup can make a shortcut to the KVIrc program on your desktop, so you "
+#~ "can access it quickly.</p><p>Do you want this shortcut to be created?</p>"
+#~ msgstr ""
+#~ "<p>Instalátor nyní může vytvořit zástupce programu KVIrc na ploše, takže "
+#~ "k němu budete mít snadný přístup.</p><p>Chcete, aby byl zástupce vytvořen?"
+#~ "</p>"
+
+#~ msgid "<p>If you're unsure just say \"Yes\"</p>"
+#~ msgstr "<p>Pokud nevíte, tak zvolte \"Ano\"</p>"
+
+#~ msgid "&Yes"
+#~ msgstr "&Ano"
+
+#~ msgid "&No"
+#~ msgstr "&Ne"
+
+#~ msgid "Desktop Shortcut"
+#~ msgstr "Zástupce na Desktopu"
+
+#~ msgid ""
+#~ "<p>Setup can now set KVIrc as default application for the irc:// and "
+#~ "irc6:// urls.</p><p>Do you want these settings to be applied?</p>"
+#~ msgstr ""
+#~ "<p>Instalátor nyní může nastavit KVIrc jako výchozí aplikaci pro irc:// a "
+#~ "irc6:// url.</p><p>Chcete použít toto nastavení?</p>"
+
+#~ msgid "URL Handlers"
+#~ msgstr "URL Handlery"
+
+#~ msgid ""
+#~ "<p><h2>Setup Complete</h2>Setup now has all the necessary information to "
+#~ "configure KVIrc.</p><p>Please click the \"<b>Finish</b>\" button to save "
+#~ "your choices and start KVIrc.</p>"
+#~ msgstr ""
+#~ "<p><h2>Instalace je kompletní</h2>Instalátor má nyní dostatek informací "
+#~ "pro nakonfigurování KVIrc.</p><p>Prosím klikněte na tlačítko "
+#~ "\"<b>Dokončit</b>\" pro uložení vašich nastavení a spuštění KVIrc.</p>"
+
+#~ msgid "Finish Setup"
+#~ msgstr "Dokončit instalaci"
+
+#~ msgid "Choose a Configuration Folder - KVIrc Setup"
+#~ msgstr "Vyberte adresář konfigurace - KVIrc Nastavení"
+
+#~ msgid "Choose a Download Folder - KVIrc Setup"
+#~ msgstr "Vyberte adresář pro stahování - KVIrc Nastavení"
+
+#~ msgid "Abort Setup - KVIrc Setup"
+#~ msgstr "Přerušit Nastavení - KVIrc Nastavení"
+
+#~ msgid ""
+#~ "You have chosen to abort the setup.<br>KVIrc cannot run until you "
+#~ "complete this procedure.<br><br>Do you really wish to abort?"
+#~ msgstr ""
+#~ "Zvolili jste ukončení instalace.<br>KVIrc nemůže být spuštěno, dokud "
+#~ "nedokončíte instalační proces.<br><br>Opravdu si přejete ukončit?"
+
+#~ msgid ""
+#~ "Cannot create directory %s.\n"
+#~ "You may not have write permission for that path. Please go back and "
+#~ "choose another directory."
+#~ msgstr ""
+#~ "Nelze vytvořit adresář %s.\n"
+#~ "Nemáte právo pro zápis pro tuto cestu. Prosím vraťte se zpět a vyberte "
+#~ "jiný adresář."
+
+#, fuzzy
+#~ msgid "Can't add a null object"
+#~ msgstr "Nelze přidat ne-widget objekt"
+
+#~ msgid "No string parameter given - using empty string"
+#~ msgstr "Nezádán parametr řetězec - použije se prázdný řetězec"
+
+#~ msgid "Item index [%d] is too big - defaulting to $count() - 1 [%d]"
+#~ msgstr ""
+#~ "Index položky [%d] je příliš velký - nastavuje se výchozí na $count() - 1 "
+#~ "[%d]"
+
+#~ msgid "Invalid insertion Policy"
+#~ msgstr "Neplatné vkládací pravidlo"
+
+#~ msgid "Can't add a non-widget object"
+#~ msgstr "Nelze přidat ne-widget objekt"
+
+#~ msgid "Not a widget object"
+#~ msgstr "Není widget objekt"
+
+#~ msgid "Can't find the tab "
+#~ msgstr "Nelze nalézt záložku "
+
+#~ msgid "Unknown position 'Q%'"
+#~ msgstr "Neznámá pozice '%Q'"
+
+#~ msgid "Invalid timeout (%s)"
+#~ msgstr "Neplatná prodleva (%s)"
+
+#~ msgid "Another connection in progress"
+#~ msgstr "Probíhá jiné spojení"
+
+#~ msgid "Invalid port specified: the kernel will choose one"
+#~ msgstr "Určen neplatný port: kernel si nějaký vybere sám"
+
+#~ msgid "No IPV6 support in this executable"
+#~ msgstr "V této verzi není IPV6 podpora"
+
+#~ msgid "Invalid IP address specified (%s)"
+#~ msgstr "Určena neplatná IP adresa (%s)"
+
+#~ msgid "Socket creation failed"
+#~ msgstr "Vytvoření soketu selhalo"
+
+#~ msgid "Invalid socket address"
+#~ msgstr "Neplatná adresa soketu"
+
+#~ msgid "Bind failure"
+#~ msgstr "Vázání selhalo"
+
+#~ msgid "Listen failure"
+#~ msgstr "Selhání naslouchání"
+
+#~ msgid "unknown"
+#~ msgstr "neznámý"
+
+#~ msgid "No socket object specified"
+#~ msgstr "Nebyl určen objekt soketu"
+
+#~ msgid "Invalid socket object specified (it doesn't inherit from socket)"
+#~ msgstr "Neplatný soket objekt určen (není dědičnost ze soketu)"
+
+#~ msgid "There is no connection to accept!"
+#~ msgstr "Není zde spojení pro příjem!"
+
+#~ msgid "Invalid port (%s)"
+#~ msgstr "Neplatný port (%s)"
+
+#~ msgid "Invalid ip address (%s)"
+#~ msgstr "Neplatná ip adresa (%s)"
+
+#~ msgid "Failed to create the socket"
+#~ msgstr "Selhalo vytvoření soketu"
+
+#~ msgid "Failed to setup a nonblocking socket"
+#~ msgstr "Selhalo nastavení neblokovacího soketu"
+
+#~ msgid "Connect failure: %s"
+#~ msgstr "Selhání spojení: %s"
+
+#~ msgid "Connect attempt timed out"
+#~ msgstr "Pokus o spojení vypršel"
+
+#~ msgid "Can't start the DNS thread"
+#~ msgstr "Nelze spustit DNS vlákno"
+
+#~ msgid ""
+#~ "Too much unprocessed incoming data (you've left this socket unmanaged ?)"
+#~ msgstr "Příliš nezpracovaných příchozích dat (opuštěný soket neřízený ?)"
+
+#~ msgid "Can't add a non - popupmenu object"
+#~ msgstr "Nelze přidat ne - popupmenu objekt"
+
+#~ msgid "Unknown text position '%Q'"
+#~ msgstr "Neznámá pozice textu '%Q'"
+
+#~ msgid "Invalid selection mode '%Q' assuming single"
+#~ msgstr "Neplatný mód výběru \"%Q\": používám jednoduchý"
+
+#~ msgid "The parent of a layout must be a widget!"
+#~ msgstr "Zdrojem rozmístění musí být widget!"
+
+#~ msgid "Invalid resize mode defaulting to Auto"
+#~ msgstr "Neplatný mód rozšíření nastaven na výchozí Auto"
+
+#~ msgid "Empty string"
+#~ msgstr "Prázdný řetězec"
+
+#~ msgid "Empty filename string"
+#~ msgstr "Prázdný řetězec názvu souboru"
+
+#~ msgid "No such open mode: %s"
+#~ msgstr "Žádný otevřený mód: %s"
+
+#~ msgid "File is not open !"
+#~ msgstr "Soubor není otevřen !"
+
+#~ msgid "Negative file index supplied !"
+#~ msgstr "Dodán negativní index souboru !"
+
+#~ msgid "Argument to long, using only first char"
+#~ msgstr "Argument je příliš dlouhý, použit pouze první znak"
+
+#~ msgid "Argument length is 0 - empty string"
+#~ msgstr "Délka argumentu je 0 - prázdný řetězec"
+
+#~ msgid "Write error occured !"
+#~ msgstr "Vyskytla se chyba při zápisu !"
+
+#~ msgid "Read error occured !"
+#~ msgstr "Vyskytla se chyba při čtení !"
+
+#~ msgid "An error occured !"
+#~ msgstr "Vyskytla se chyba !"
+
+#~ msgid "Length is a negative number !"
+#~ msgstr "Délka je záporné číslo !"
+
+#~ msgid "Nothing to write"
+#~ msgstr "Není co zapisovat"
+
+#~ msgid "No such open mode: '%Q'"
+#~ msgstr "Žádný otevřený mód: '%Q'"
+
+#~ msgid "File is not open!"
+#~ msgstr "Soubor není otevřen!"
+
+#~ msgid "The array passed as parameter must contain at least 4 elements"
+#~ msgstr "Pole zadané jako parametr musí obsahovat nejméně 4 elementy"
+
+#~ msgid "One of the geometry array parameters is empty"
+#~ msgstr "Jeden z parametrů geometrie pole je prázdný"
+
+#~ msgid "One of the geometry array parameters didn't evaluate to an integer"
+#~ msgstr "Jeden z parametrů geometrického pole nejde přepočítat na celé číslo"
+
+#~ msgid "The first parameter didn't evaluate to an array nor an integer"
+#~ msgstr "První parametr nejde přepočítat na pole nebo na celé číslo"
+
+#~ msgid "The array passed as parameter must contain at least 2 elements"
+#~ msgstr "Pole zadané jako parametr musí obsahovat nejméně 2 elementy"
+
+#~ msgid "One of the array parameters is empty"
+#~ msgstr "Jeden z parametrů pole je prázdný"
+
+#~ msgid "One of the array parameters didn't evaluate to an integer"
+#~ msgstr "Jeden z parametrů pole nejde přepočítat na celé číslo"
+
+#~ msgid "The array passed as parameter must contain at least 3 elements"
+#~ msgstr "Pole zadané jako parametr musí obsahovat nejméně 3 elementy"
+
+#~ msgid "Unknown orientation"
+#~ msgstr "Neznámá orientace"
+
+#~ msgid "Widget or Pixmap required "
+#~ msgstr "Je třeba widget nebo pixmapa "
+
+#~ msgid "Invalid mode '%Q'"
+#~ msgstr "Neplatný mód '%Q'"
+
+#~ msgid "Pixmap object required"
+#~ msgstr "Je potřeba pixmapový objekt"
+
+#~ msgid "Unknown mode "
+#~ msgstr "Neznámý mód "
+
+#~ msgid "Unknown segment style "
+#~ msgstr "Neznámý styl segmentu "
+
+#~ msgid ""
+#~ "The window identifier preceeded by WinId must be the first object in the "
+#~ "search path"
+#~ msgstr ""
+#~ "Identifikátor okna uvozený WinId musí být prvním objektem v cestě hledání"
+
+#~ msgid "Failed to find one of the wrap path widgets (%s::%s)"
+#~ msgstr "Neanlezen jeden z obalených widgetů (%s::%s)"
+
+#~ msgid "Failed to find the widget to wrap"
+#~ msgstr "Nelze najít widget pro obalení"
+
+#~ msgid "Non-negative integer length expected as parameter"
+#~ msgstr "Očekáváno kladné celé číslo jako parametr"
+
+#~ msgid "Non-negative integer index expected as first parameter"
+#~ msgstr "Očekáváno kladné celé číslo jako první parametr"
+
+#~ msgid "Non-negative integer length expected as second parameter"
+#~ msgstr "Očekáváno kladné celé číslo jako druhý parametr"
+
+#~ msgid "Widget object required"
+#~ msgstr "Je potřeba widget objekt"
+
+#~ msgid "Can't find the widget object to add (%s)"
+#~ msgstr "Nelze najít widget objekt pro přidání (%s)"
+
+#~ msgid "Invalid object"
+#~ msgstr "Neplatný objekt"
+
+#~ msgid "Can't fill non-widget object"
+#~ msgstr "Nelze zaplnit ne-widget objekt"
+
+#~ msgid "Invalid x offset parameter (%s)"
+#~ msgstr "Neplatný x offset parametr (%s)"
+
+#~ msgid "Invalid y offset parameter (%s)"
+#~ msgstr "Neplatný y offset parametr (%s)"
+
+#~ msgid "Can't find the specified file '%s'."
+#~ msgstr "Nelze nalézt zadaný soubor '%s'."
+
+#~ msgid "I can't find the specified file %Q."
+#~ msgstr "Nelze nalézt zadaný soubor %Q."
+
+#~ msgid "No such line number"
+#~ msgstr "Žádné číslo řádku"
+
+#, fuzzy
+#~ msgid "Unknown word wrap '%Q'"
+#~ msgstr "Neznámá vázací operace '%Q'"
+
+#~ msgid "Unknown wrap policy'%Q'"
+#~ msgstr "Neznámé wrap pravidlo '%Q'"
+
+#~ msgid "One of the colors array parameters is empty"
+#~ msgstr "Jeden parametr z pole barev je prázdný"
+
+#~ msgid "One of the colors array parameters didn't evaluate to an integer"
+#~ msgstr "Jeden parametr z pole barev nejde přepočítat na celé číslo"
+
+#~ msgid ""
+#~ "$setColor requires either an array as first parameter or three integers"
+#~ msgstr "$setColor() vyžaduje pole jako první parametr třech celých čísel"
+
+#~ msgid "Unknown text format '%Q'"
+#~ msgstr "Neznámý formát textu '%Q'"
+
+#~ msgid " I can't find the specified file '%Q'."
+#~ msgstr " Nelze nalézt zadaný soubor '%Q'."
+
+#~ msgid " I cannot read the file %Q'."
+#~ msgstr " Nelze číst soubor '%Q'."
+
+#~ msgid "Unknown alignment '%Q'"
+#~ msgstr "Neznámé zarovnání '%Q'"
+
+#, fuzzy
+#~ msgid "Unknown auto formatting mode '%Q'"
+#~ msgstr "Neznámá vázací operace '%Q'"
+
+#~ msgid "Unknown vertical alignment '%Q'"
+#~ msgstr "Neznámé vertikální zarovnání: '%Q'"
+
+#~ msgid "Unknown dock area '%Q'"
+#~ msgstr "Neznámá dokovací oblast '%Q'"
+
+#~ msgid "Class is undefined"
+#~ msgstr "Třída není definovaná"
+
+#~ msgid "Widget or Pixmap required"
+#~ msgstr "Je třeba widget nebo pixmapa "
+
+#, fuzzy
+#~ msgid "Processing aborted"
+#~ msgstr "Zpracovává se seznam: %Q"
+
+#, fuzzy
+#~ msgid "XML support not available in the Qt library"
+#~ msgstr "Hodnota lagu není ještě dostupná"
+
+#~ msgid "Invalid width parameter"
+#~ msgstr "Neplatný parametr šířky"
+
+#~ msgid "Invalid height parameter"
+#~ msgstr "Neplatný parametr výšky"
+
+#~ msgid "The parameters do not define a rectangle"
+#~ msgstr "Parametry nedefinují obdélník"
+
+#~ msgid "The parameters do not define a point"
+#~ msgstr "Parametry nedefinují bod"
+
+#~ msgid "The parameters are do not define a valid size"
+#~ msgstr "Parametry nedefinují platnou velikost"
+
+#~ msgid "Invalid size parameter (%s)"
+#~ msgstr "Neplatný parametr šířky (%s)"
+
+#~ msgid "Unknown widget type: %s"
+#~ msgstr "Neznámý typ widgetu: %s"
+
+#, fuzzy
+#~ msgid "Can't find the widget object assuming 0"
+#~ msgstr "Nelze najít widget objekt (%s)"
+
+#, fuzzy
+#~ msgid "Parent must be a widget object"
+#~ msgstr "Nelze nastavit ne-widget objekt"
+
+#~ msgid "Invalid parameters"
+#~ msgstr "Neplatné parametry"
+
+#~ msgid "Invalid Parameters"
+#~ msgstr "Neplatné Parametry"
+
+#~ msgid "No Layout associated to the widget "
+#~ msgstr "Žádný Layout nebyl asociován s widgetem "
+
+#~ msgid "Invalid row parameter (%s)"
+#~ msgstr "Neplatný parametr řádku (%s)"
+
+#~ msgid "Invalid column parameter (%s)"
+#~ msgstr "Neplatný parametr sloupce (%s)"
+
+#~ msgid ""
+#~ "$setGeometry() requires either an array as first parameter or four "
+#~ "integers"
+#~ msgstr "$setGeometry() vyžaduje pole jako první parametr čtyř celých čísel"
+
+#~ msgid ""
+#~ "$setPaletteForeground requires either an array as first parameter or "
+#~ "three integers"
+#~ msgstr "$setGeometry() vyžaduje pole jako první parametr třech celých čísel"
+
+#~ msgid ""
+#~ "$setBackgroundColor requires either an array as first parameter or three "
+#~ "integers"
+#~ msgstr ""
+#~ "$setBackgroundColor vyžaduje pole jako první parametr třech celých čísel"
+
+#~ msgid "Unknown widget flag '%Q'"
+#~ msgstr "Neznámý flag widgetu: '%Q'"
+
+#~ msgid "Unknown style '%Q'"
+#~ msgstr "Neznámý styl '%Q'"
+
+#~ msgid "Unknown alignment: '%Q'"
+#~ msgstr "Neznámé zarovnání: '%Q'"
+
+#~ msgid "Unknown frame style"
+#~ msgstr "Neznámý styl rámu"
+
+#~ msgid "Unknown echo mode %Q"
+#~ msgstr "Neznámý echo mód %Q"
+
+#~ msgid "the toolbar cannot be a parent-widget!"
+#~ msgstr "Nástrojová lišta nemůže být rodičovský widget!"
+
+#~ msgid "The parent-widget isn't a MainWindow."
+#~ msgstr "Nadřazený widget není MainWindow."
+
+#~ msgid "pix '%Q' doesn't exists"
+#~ msgstr "pix '%Q' neexistuje"
+
+#~ msgid "Doesn't a widget object"
+#~ msgstr "Není-widget objekt"
+
+#~ msgid "Process could not be starded."
+#~ msgstr "Zpracování nelze spustit."
+
+#~ msgid "Unknown alignment"
+#~ msgstr "Neznámé zarovnání"
+
+#~ msgid "Unknown orientation: "
+#~ msgstr "Neznámá orientace: "
+
+#~ msgid "Not Enough Parameters"
+#~ msgstr "Nedostatek parametrů"
+
+#, fuzzy
+#~ msgid "Unknown tickmark '%Q'"
+#~ msgstr "Neznámá značka"
+
+#~ msgid "Unknown orientation '%Q'"
+#~ msgstr "Neznámá orientace '%Q'"
+
+#~ msgid "Context sensitive help"
+#~ msgstr "Kontextově citlivá nápověda"
+
+#~ msgid "&Replace"
+#~ msgstr "&Nahradit"
+
+#~ msgid "Find & Repalce"
+#~ msgstr "Najít & Nahradit"
+
+#~ msgid "Find"
+#~ msgstr "Hledat"
+
+#~ msgid "Word to Find"
+#~ msgstr "Hledané slovo"
+
+#~ msgid "Replace with"
+#~ msgstr "Nahradit"
+
+#~ msgid "&Replace in all Aliases"
+#~ msgstr "&Nahradit ve všech aliasech"
+
+#~ msgid "&Findnext"
+#~ msgstr "&Hledat další"
+
+#~ msgid "&Replace(WIP)"
+#~ msgstr "&Nahradit(WIP)"
+
+#~ msgid "orphan_servers"
+#~ msgstr "orphan_servery"
+
+#~ msgid ""
+#~ "%s doesn't look like a servers.ini file.\n"
+#~ "Import failed."
+#~ msgstr ""
+#~ "%s nevypadá jako servers.ini soubor.\n"
+#~ "Import selhal."
+
+#~ msgid "Choose a servers.ini file"
+#~ msgstr "Zvolte soubor servers.ini"
+
+#~ msgid "Remote mIRC servers.ini Import Wizard"
+#~ msgstr "Průvodce importem mIRC souboru servers.ini"
+
+#~ msgid ""
+#~ "<center><b>Welcome!</b><br><br>This wizard will guide you in the process "
+#~ "of downloading a list of IRC servers. Please click \"<b>Next</b>\" to "
+#~ "begin the operation.</center>"
+#~ msgstr ""
+#~ "<center><b>Vítejte!</b><br><br>Tento průvodce Vás provede procesem "
+#~ "stažení seznamu IRC serverů. Prosím klikněte na \"<b>Další</b>\" pro "
+#~ "začátek operace.</center>"
+
+#~ msgid ""
+#~ "<center>Here you can modify the URL that the list will be downloaded "
+#~ "from. In most cases the default URL is acceptable.</center>"
+#~ msgstr ""
+#~ "<center>Zde můžete měnit URL, ze které bude stahován seznam. V mnoha "
+#~ "případech je výchozi URL přijatelná.</center>"
+
+#~ msgid "URL Selection"
+#~ msgstr "Výběr URL"
+
+#~ msgid "Please wait while the list is being downloaded"
+#~ msgstr "Prosím čekejte, dokud se seznam nestáhne"
+
+#~ msgid "List Download"
+#~ msgstr "Seznam Stažení"
+
+#~ msgid "Failed to start the server list transfer :("
+#~ msgstr "Selhalo spuštění přenosu seznamu serverů :("
+
+#~ msgid "File downloaded: processing ..."
+#~ msgstr "Soubor stažen: zpracování ..."
+
+#~ msgid "%1 servers imported succesfully"
+#~ msgstr "%1 serverů úspěšně importováno"
+
+#~ msgid "No servers imported"
+#~ msgstr "Žádný server nebyl importován"
+
+#~ msgid "Import from servers.ini"
+#~ msgstr "Import ze servers.ini"
+
+#~ msgid "Import from http://www.mirc.co.uk/servers.ini"
+#~ msgstr "Importovat z http://www.mirc.co.uk/servers.ini"
+
+#~ msgid "Internal error: I'm not in the user database ?"
+#~ msgstr "Interní chyba: Nejsem v databázi uživatelů ?"
+
+#, fuzzy
+#~ msgid ""
+#~ "Can't set the current avatar to '%Q': failed to start the http transfer"
+#~ msgstr ""
+#~ "Nelze nastavit současný avatar na '%s': selhalo spuštění http přenosu"
+
+#, fuzzy
+#~ msgid "Can't set the current avatar to '%Q': can't load the image"
+#~ msgstr "Nelze nastavit současný avatar na '%s': nelze načíst obrázek"
+
+#~ msgid "Invalid timeout specified, using default"
+#~ msgstr "Určena neplatná prodleva, použita výchozí"
+
+#, fuzzy
+#~ msgid "Can't add a file offer for file %Q (huh ? file not readable ?)"
+#~ msgstr "Nelze přidat ke sdílení soubor %s (huh ? soubor je nečitelný ?)"
+
+#, fuzzy
+#~ msgid "Added %d secs file offer for file %Q (%Q) and receiver %Q"
+#~ msgstr "Přidána %d sek nabídka pro soubor %s (%s) a příjemce %s"
+
+#, fuzzy
+#~ msgid "Notifying avatar '%Q' to %Q"
+#~ msgstr "Oznamuji avatar '%s' pro %s"
+
+#~ msgid "Unknown "
+#~ msgstr "Neznámý"
+
+#~ msgid "No environment variable found, please don't use the % in the request"
+#~ msgstr "Nenalezena systémová proměnná, prosím nepoužívejte % v požadavku"
+
+#~ msgid "Invalid DCOP parameter syntax"
+#~ msgstr "Neplatná syntaxe DCOP parametru"
+
+#~ msgid "The specified parameter is not an integer"
+#~ msgstr "Zadaný parametr není celé číslo"
+
+#~ msgid "Unsupported DCOP parameter type %s"
+#~ msgstr "Nepodporovaný typ DCOP parametru %s"
+
+#~ msgid "DCOP call failed"
+#~ msgstr "volání DCOP selhalo"
+
+#~ msgid "DCOP calls are available only when KDE support is compiled in"
+#~ msgstr "DCOP volání jsou dostupné pouze při zkompilované podpoře KDE"
+
+#~ msgid "Item"
+#~ msgstr "Položka"
+
+#~ msgid "Submenu"
+#~ msgstr "Submenu"
+
+#~ msgid "External Menu"
+#~ msgstr "Externí Menu"
+
+#~ msgid "Separator"
+#~ msgstr "Oddělovač"
+
+#~ msgid "Label"
+#~ msgstr "Návěstí"
+
+#~ msgid "### Epilogue ###"
+#~ msgstr "### Závěr ###"
+
+#~ msgid "Epilogue"
+#~ msgstr "Závěr"
+
+#~ msgid "### Prologue ###"
+#~ msgstr "### Úvod ###"
+
+#~ msgid "Popup name"
+#~ msgstr "Název Popupu"
+
+#~ msgid "Type"
+#~ msgstr "Typ"
+
+#~ msgid "Text:"
+#~ msgstr "Text:"
+
+#~ msgid ""
+#~ "<center><b>Visible text</b><br>May contain identifiers that will be "
+#~ "evaluated at popup call time.<br>For labels, this text can contain also "
+#~ "limited HTML tags.</center>"
+#~ msgstr ""
+#~ "<center><b>Viditelný text</b><br>Může obsahovat identifikátory, které "
+#~ "budou provedeny při zavolání popup.<br>Pro návěstí může také obsahovat i "
+#~ "limitované HTML tagy.</center>"
+
+#~ msgid "Condition:"
+#~ msgstr "Podmínka:"
+
+#~ msgid ""
+#~ "<center><b>Boolean condition</b><br>Will be evaluated at popup call time "
+#~ "in order to decide if this entry has to be shown.<br>An empty condition "
+#~ "evaluates to true.</center>"
+#~ msgstr ""
+#~ "<center><b>Booleovská podmínka</b><br>Bude vyhodnocena v době volání "
+#~ "popup v pořadí jakém je tento záznam zobrazen.<br>Prázdná podmínka je "
+#~ "vyhodnocena jako true.</center>"
+
+#~ msgid "Icon:"
+#~ msgstr "Ikona:"
+
+#~ msgid ""
+#~ "<center><b>Icon identifier</b><br>May be an internal icon ID, an absolute "
+#~ "path or a relative path.<br>Portable scripts should never use absolute "
+#~ "paths.</center>"
+#~ msgstr ""
+#~ "<center><b>Identifikátor ikony</b><br>Může být ID interní ikony, "
+#~ "absolutní, nebo relativní cesta.<br>Přenosné skripty by neměly nikdy "
+#~ "používat absolutní cesty.</center>"
+
+#~ msgid "External menu:"
+#~ msgstr "Externí menu:"
+
+#~ msgid ""
+#~ "<center><b>External menu name</b><br>This allows to nest externally "
+#~ "defined popup menus. The popup menu with the specified name will be "
+#~ "looked up at menu setup time.</center>"
+#~ msgstr ""
+#~ "<center><b>Název externího menu</b><br>Toto umožňuje vkládat externě "
+#~ "definované popup menu. Popup menu se specifickým jménem bude hledáno při "
+#~ "nastavování menu.</center>"
+
+#~ msgid "Item Id:"
+#~ msgstr "Id položky:"
+
+#~ msgid ""
+#~ "<center><b>Item id</b><br>This will allow you to use delpopupitem later.</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center><b>Položka id</b><br>To vám umožní používat delpopupitem později."
+#~ "</center>"
+
+#~ msgid "New Separator Below"
+#~ msgstr "Nový oddělovač dole"
+
+#~ msgid "New Separator Above"
+#~ msgstr "Nový oddělovač nahoře"
+
+#~ msgid "New Separator Inside"
+#~ msgstr "Nový oddělovač uvnitř"
+
+#~ msgid "New Label Below"
+#~ msgstr "Nové návěstí dole"
+
+#~ msgid "New Label Above"
+#~ msgstr "Nové návěstí nahoře"
+
+#~ msgid "New Label Inside"
+#~ msgstr "Nové návěstí uvnitř"
+
+#~ msgid "New Item Below"
+#~ msgstr "Nová položka dole"
+
+#~ msgid "New Item Above"
+#~ msgstr "Nová položka nahoře"
+
+#~ msgid "New Item Inside"
+#~ msgstr "Nová položka uvnitř"
+
+#~ msgid "New Menu Below"
+#~ msgstr "Nové menu dole"
+
+#~ msgid "New Menu Above"
+#~ msgstr "Nové menu nahoře"
+
+#~ msgid "New Menu Inside"
+#~ msgstr "Nové menu uvnitř"
+
+#~ msgid "New External Menu Below"
+#~ msgstr "Nové externí menu dole"
+
+#~ msgid "New External Menu Above"
+#~ msgstr "Nové externí menu nahoře"
+
+#~ msgid "New External Menu Inside"
+#~ msgstr "Nové externí menu uvnitř"
+
+#~ msgid "Cu&t"
+#~ msgstr "Vyj&mout"
+
+#~ msgid "&Copy"
+#~ msgstr "&Kopírovat"
+
+#~ msgid "&Paste Below"
+#~ msgstr "&Vložit dolů"
+
+#~ msgid "Paste Above"
+#~ msgstr "Vložit nahoru"
+
+#~ msgid "Paste Inside"
+#~ msgstr "Vložit dovnitř"
+
+#~ msgid "New Menu Prologue"
+#~ msgstr "Nový úvod menu"
+
+#~ msgid "New Menu Epilogue"
+#~ msgstr "Nový závěr menu"
+
+#~ msgid "&Export All To..."
+#~ msgstr "&Exportovat vše jako..."
+
+#~ msgid "&Export selected To..."
+#~ msgstr "&Exportovat vybrané do..."
+
+#~ msgid "&New Popup"
+#~ msgstr "&Nový Popup"
+
+#~ msgid "Re&move Popup"
+#~ msgstr "S&mazat Popup"
+
+#~ msgid "&Export Popup To..."
+#~ msgstr "&Exportovat Popup do..."
+
+#~ msgid "Unable to write to the popup file."
+#~ msgstr "Nelze zapisovat do popup souboru."
+
+#~ msgid "Popup Editor"
+#~ msgstr "Editor Popupů"
+
+#~ msgid "Missing both encrypt and decrypt key: at least one is needed"
+#~ msgstr "Chybí oba šifrovací a dešifrovací klíče: alespoň jeden je potřeba"
+
+#~ msgid "Error 0: Success ?"
+#~ msgstr "Chyba 0: Hotovo ?"
+
+#~ msgid "Unsupported crypt mode"
+#~ msgstr "Nepodporovaný šifrovací mód"
+
+#~ msgid "Unsupported direction"
+#~ msgstr "Nepodporovaný směr"
+
+#~ msgid "Unsupported key length"
+#~ msgstr "Nepodporovaná délka klíče"
+
+#~ msgid "Bad key data"
+#~ msgstr "Špatná data klíče"
+
+#~ msgid "Engine not initialized"
+#~ msgstr "Nástroj není inicializován"
+
+#~ msgid "Invalid direction for this engine"
+#~ msgstr "Neplatný směr pro tento nástroj"
+
+#~ msgid "Corrupted message data or invalid decrypt key"
+#~ msgstr "Poškozená data zprávy nebo neplatný dešifrovací klíč"
+
+#~ msgid "Unknown error"
+#~ msgstr "Neznámá chyba"
+
+#~ msgid "Ops...encrypt cipher not initialized"
+#~ msgstr "Oops...kódovací šifra nebyla inicializována"
+
+#~ msgid "Data buffer too long"
+#~ msgstr "Příliš velký datový buffer"
+
+#~ msgid "Ops...decrypt cipher not initialized"
+#~ msgstr "Oops...dekódovací šifra nebyla inicializována"
+
+#~ msgid "The message is not a hexadecimal string: this is not my stuff"
+#~ msgstr "Zpráva není šestnáctkový řetězec: to není moje"
+
+#~ msgid "The message is not a base64 string: this is not my stuff"
+#~ msgstr "Zpráva není base64 řetězec: to není moje"
+
+#~ msgid "The message doesn't seem to be encoded with CBC Mircryption"
+#~ msgstr "Zpráva nevypadá jako zašifrovaná s CBC Mircryption"
+
+#~ msgid ""
+#~ "Cryptographic engine based on the\n"
+#~ "Advanced Encryption Standard (AES)\n"
+#~ "algorithm called Rijndael.\n"
+#~ "The text is first encrypted with rijndael\n"
+#~ "and then converted to %s notation.\n"
+#~ "The keys used are %d bit long and will be padded\n"
+#~ "with zeros if you provide shorter ones.\n"
+#~ "If only one key is provided, this engine\n"
+#~ "will use it for both encrypting and decrypting.\n"
+#~ "See the rijndael module documentation\n"
+#~ "for more info on the algorithm used.\n"
+#~ msgstr ""
+#~ "Šifrovací nástroj postavený na\n"
+#~ "Advanced Encryption Standard (AES)\n"
+#~ "algoritmu nazvaném Rijndael.\n"
+#~ "Text je nejdříve zašiftován s rijndael\n"
+#~ "a pak konvertován do %s notace.\n"
+#~ "Použité klíče jsou %d bitů dlouhé a dají se\n"
+#~ "vyplnit nulami, když napíšete kratší.\n"
+#~ "Pokud zadáte jen jeden klíč, nástroj\n"
+#~ "jej použije pro zašifrování i dešifrování.\n"
+#~ "Koukněte do dokumentace rijndael modulu\n"
+#~ "pro další informace o použitém algoritmu.\n"
+
+#~ msgid "hexadecimal"
+#~ msgstr "šestnáctkové"
+
+#~ msgid "base64"
+#~ msgstr "base64"
+
+#~ msgid ""
+#~ "Popular cryptographic engine based on the\n"
+#~ "old Blowfish encryption algorithm.\n"
+#~ "The text is first encrypted with Blowfish \n"
+#~ "and then converted to base64 notation.\n"
+#~ "The keys used have variable length and\n"
+#~ "are specified as character strings.\n"
+#~ "You can specify keys long up to 56 bytes (448 bits).\n"
+#~ "If only one key is provided, this engine\n"
+#~ "will use it for both encrypting and decrypting.\n"
+#~ "This engine works in ECB mode by default:\n"
+#~ "if you want to use CBC mode you must prefix\n"
+#~ "your key(s) with \"cbc:\".\n"
+#~ msgstr ""
+#~ "Populární šifrovací nástroj postavený na\n"
+#~ "starém Blowfish šifrovacím algoritmu.\n"
+#~ "Text je nejdříve zašifrován s Blowfish \n"
+#~ "a pak konvertován do base64 notace.\n"
+#~ "Použité klíče mají proměnnou délku a\n"
+#~ "jsou jako řetězce znaků.\n"
+#~ "Můžete zadat klíče dlouhé až do 56 bajtů (448 bitů).\n"
+#~ "Pokud zadáte jen jeden klíč, nástroj\n"
+#~ "jej použije pro zašifrování i dešifrování.\n"
+#~ "Tento nástroj funguje v ECB módu jako výchozí:\n"
+#~ "pokud chcete použít CBC mód, musíte označit \n"
+#~ "vaše klíče prefixem \"cbc\".\n"
+
+#~ msgid "Choose the file to share"
+#~ msgstr "Vyberte soubor pro sdílení"
+
+#~ msgid "Outgoing traffic"
+#~ msgstr "Odchozí provoz"
+
+#~ msgid "Incoming traffic"
+#~ msgstr "Příchozí provoz"
+
+#~ msgid "[IDENT]: Service shutdown (spontaneous)"
+#~ msgstr "[IDENT]: Služba se vypíná (spontánně)"
+
+#~ msgid "[IDENT]: Service shutdown (on request)"
+#~ msgstr "[IDENT]: Služba se vypíná (na požadavek)"
+
+#~ msgid "The current window is not a channel"
+#~ msgstr "Současné okno není kanál"
+
+#~ msgid "Can't find the window with id '%Q'"
+#~ msgstr "Nelze nalézt okno s id '%Q'"
+
+#~ msgid "The specified window (%Q) is not a channel"
+#~ msgstr "Zadané okno (%Q) není kanál"
+
+#~ msgid "The specified toolbar doesn't exist"
+#~ msgstr "Určená lišta neexistuje"
+
+#, fuzzy
+#~ msgid "No action name/index specified"
+#~ msgstr "Nebyl určen název možnosti"
+
+#~ msgid "The action parameter didn't evaluate to an index"
+#~ msgstr "Parametr akce nejde přepočítat na index"
+
+#~ msgid "The toolbar does not contain the specified item"
+#~ msgstr "Nástrojová lišta neobsahuje zvolenou položku"
+
+#~ msgid "The action \"%Q\" doesn't exist"
+#~ msgstr "Akce \"%Q\" neexistuje"
+
+#~ msgid "KVIrc"
+#~ msgstr "KVIrc"
+
+#~ msgid "Context"
+#~ msgstr "Kontext"
+
+#~ msgid "&Configure KVIrc..."
+#~ msgstr "&Konfigurovat KVIrc..."
+
+#~ msgid "&About KVIrc"
+#~ msgstr "&O aplikaci KVIrc"
+
+#~ msgid "Un&dock"
+#~ msgstr "O&ddokovat"
+
+#~ msgid "&Quit"
+#~ msgstr "&Konec"
+
+#~ msgid "Ctrl+Q"
+#~ msgstr "Ctrl+Q"
+
+#~ msgid "Nothing is happening..."
+#~ msgstr "Nic se nestalo..."
+
+#~ msgid "Just idling..."
+#~ msgstr "Zrovna idlím..."
+
+#~ msgid "Dum de dum de dum..."
+#~ msgstr "Dum de dum de dum..."
+
+#~ msgid "Hey man... do something!"
+#~ msgstr "Hej člověče... dělej něco!"
+
+#~ msgid "Umpf!"
+#~ msgstr "Pfff!"
+
+#~ msgid "Silence speaking"
+#~ msgstr "Šeptání"
+
+#~ msgid "Are ya here?"
+#~ msgstr "Jseš tu?"
+
+#~ msgid "The world has stopped?"
+#~ msgstr "Svět se zastavil?"
+
+#~ msgid "Everything is all right"
+#~ msgstr "Všechno je v pořádku"
+
+#~ msgid "idle()"
+#~ msgstr "idle()"
+
+#~ msgid "It's so cold here..."
+#~ msgstr "Je tu příliš zima..."
+
+#~ msgid "Do not disturb... watching TV"
+#~ msgstr "Nerušit... sleduji TV"
+
+#~ msgid "Just vegetating"
+#~ msgstr "Vegetím"
+
+#~ msgid "Hey... are ya sure that your network is up?"
+#~ msgstr "Hej... jsi si jist, že tvoje síť funguje?"
+
+#~ msgid "Seems like the world has stopped spinning"
+#~ msgstr "Vypadá to, že se svět přestal otáčet"
+
+#~ msgid "This silence is freaking me out!"
+#~ msgstr "To ticho mě deptá!"
+
+#~ msgid "Mieeeeeowww!"
+#~ msgstr "Mňaaaaaaauuuu!"
+
+#~ msgid "idle idle idle idle!"
+#~ msgstr "idle idle idle idle!"
+
+#~ msgid "Hide Window"
+#~ msgstr "Schovat okno"
+
+#~ msgid "Show Window"
+#~ msgstr "Zobrazit okno"
+
+#~ msgid "A really lame text transformation engine :D"
+#~ msgstr "Skutečně lamerský transformátor textu :D"
+
+#~ msgid "A really lame text transformation engine: Light Version."
+#~ msgstr "Skutečně lamerský transformátor textu : Odlehčená verze."
+
+#~ msgid "The window with id '%s' does not exist"
+#~ msgstr "Okno s id '%s' neexistuje"
+
+#~ msgid "Window type or 'all' expected as first parameter"
+#~ msgstr "Typ okna nebo 'all' je očekáváno jako první parametr"
+
+#~ msgid "Invalid IRC context id '%Q'"
+#~ msgstr "Neplatný IRC kontext id '%Q'"
+
+#~ msgid ""
+#~ "The specified IRC context is not valid: creating a context free window"
+#~ msgstr "Určený IRC kontext je neplatný: vytváří okno bez kontextu"
+
+#~ msgid "The specified window is not of type \"userwnd\""
+#~ msgstr "Určené okno není typ \"userwnd\""
+
+#~ msgid "Background not found %Q "
+#~ msgstr "Pozadí nenalezeno %Q "
+
+#~ msgid "Pixmap objects required !"
+#~ msgstr "Je potřeba pixmapový objekt !"
+
+#~ msgid "Pixmap is null"
+#~ msgstr "Pixmapa je nulová"
+
+#~ msgid "Both -n and -m switchess specified, -n takes precedence"
+#~ msgstr "Oba -n a -m přepínače zadány, -n bere precedent"
+
+#~ msgid "Failed to allocate the specified crypt engine"
+#~ msgstr "Selhala alokace zvoleného šifrovacího nástroje"
+
+#~ msgid "This executable has been compiled without crypt support"
+#~ msgstr "Tento spustitelný soubor byl přeložen bez podpory šifrování"
+
+#~ msgid "User Registration Wizard - KVIrc"
+#~ msgstr "Průvodce registrací uživatele - KVIrc"
+
+#~ msgid ""
+#~ "<p>Welcome to the user registration wizard.<br>This process allows you to "
+#~ "add an IRC user to the database and set properties for that user. KVIrc "
+#~ "will be (hopefully) able to recognize the user, add him to the notify "
+#~ "list, and display the associated avatar.<br><br>First of all, you must "
+#~ "insert an <b>entry name or real name</b> for the user you're going to "
+#~ "register. The name will be used to identify the database entry and has no "
+#~ "specific requirements, it can be a given name, nickname, or just some "
+#~ "text to remind you of the real person.<br>Examples: \"George W Bush\", "
+#~ "\"Dubya\".\n"
+#~ "</p>"
+#~ msgstr ""
+#~ "<p>Vítejte v průvodci pro registraci.<br>Tento průvodce vám umožní přidat "
+#~ "IRC uživatele, přidat ho do databáze a nastavit možnosti. KVIrc bude "
+#~ "(doufejme) schopno rozpoznat uživatele, přidat ho do seznamu oznamování a "
+#~ "zobrazit přiřazeného avatara.<br><br>Nejdříve ze všeho musíte vepsat "
+#~ "<b>jméno záznamu, nebo skutečné jméno</b> uživatele, kterého se chystáte "
+#~ "registrovat. Jméno, které bude identifikovat záznam v databázi, nemá "
+#~ "žádné speciální požadavky. Může to být jméno, přezdívka, nebo to může být "
+#~ "text připomínající vaši skutečnou osobu.<br>Například: \"George W Bush\", "
+#~ "\"Dubya\".\n"
+#~ "</p>"
+
+#~ msgid "Step 1: Entry Name"
+#~ msgstr "Krok 1: Zadání jména"
+
+#~ msgid ""
+#~ "<p>A registered user is identified by one or more <b>IRC masks</b>.<br>A "
+#~ "mask must be in the following form:<br><b>nickname!username@hostname</"
+#~ "b><br>and can contain wildcard characters '*' and '?'. Be careful in "
+#~ "choosing the masks, as they are the only way to verify the identity of a "
+#~ "registered user.<br><br>You can enter at most two masks here, if you wish "
+#~ "to add more masks, use the \"<b>Edit</b>\" button in the Registered Users "
+#~ "dialog. You must enter at least one mask.</p>"
+#~ msgstr ""
+#~ "<p>Registrovaný uživatel je identifikován jednou, nebo více <b>IRC "
+#~ "maskami</b>.<br>Maska musí být v následujícím formátu:<br><b>přezdívka!"
+#~ "uživatelskéjméno@hostitel</b><br>a může obsahovat zástupné znaky jako '*' "
+#~ "a '?'. Buďte opatrní ve výběru masky, protože je to jediná cesta, jak "
+#~ "identifikovat registrovaného uživatele.<br><br>Můžete zde napsat nejvýše "
+#~ "2 masky. Pokud si jich přejete zadat více, použijte tlačítko "
+#~ "\"<b>Upravit</b>\" v dialogu Registrovaní Uživatelé. Musíte vložit "
+#~ "nejméně jednu masku.</p>"
+
+#~ msgid "Step 2: Mask Selection"
+#~ msgstr "Krok 2: Výběr masky"
+
+#~ msgid ""
+#~ "<p>If you want to store an avatar image for this user, you can set it "
+#~ "here. KVIrc will show the avatar in the userlist next to the user's "
+#~ "nickname.<br>An avatar can be in any supported image format (PNG is "
+#~ "recommended). Keep in mind that KVIrc stores avatars in memory and has to "
+#~ "resize them to fit in the userlist, thus it's better to use small, low-"
+#~ "resolution images.</p>"
+#~ msgstr ""
+#~ "<p>Pokud chcete uložit avatar pro tohoto uživatele, můžete to nastavit "
+#~ "tady. KVIrc může zobrazit avatar v seznamu uživatelů u přezdívky "
+#~ "uživatele.<br>Avatar může být v jakémkoliv podporovaném formátu obrázku "
+#~ "(PNG je doporučeno). Nezapomínejte, že KVIrc ukládá avatary do paměti a "
+#~ "teprve pak je upravuje, aby pasovaly do seznamu uživatelů, takže je lepší "
+#~ "používat menší obrázky s nízkým rozlišením.</p>"
+
+#~ msgid "Store an avatar for this user"
+#~ msgstr "Uložit avatar pro tohoto uživatele"
+
+#~ msgid "Step 3: Avatar Selection"
+#~ msgstr "Krok 3: Výběr avataru"
+
+#~ msgid ""
+#~ "<p>If you want to be notified when this user is online or goes offline, "
+#~ "you must specify the list of nicknames that KVIrc will look for."
+#~ "<br><br>You can enter at most two nicknames here, if you wish to add more "
+#~ "nicknames, use the \"<b>Edit</b>\" button in the Registered Users dialog."
+#~ "</p>"
+#~ msgstr ""
+#~ "<p>Pokud chcete být upozorněni, když se uživatel připojí, nebo odpojí, "
+#~ "musíte zadat seznam přezdívek, které bude KVIrc kontrolovat."
+#~ "<br><br>Můžete zde zadat nejvíce dvě přezdívky. Pokud si přejete zadat "
+#~ "více přezdívek, použijte tlačítko \"<b>Upravit</b>\" v dialogu "
+#~ "Registrovaní Uživatelé.</p>"
+
+#~ msgid "Add this user to the notify list"
+#~ msgstr "Přidat tohoto uživatele do seznamu oznamování"
+
+#~ msgid "Nickname 2:"
+#~ msgstr "Přezdívka 2:"
+
+#~ msgid "Step 4: Notify List"
+#~ msgstr "Krok 4: Seznam oznamování"
+
+#~ msgid ""
+#~ "<p>That's it. The user registration has been completed.<br><br>Click "
+#~ "\"<b>Finish</b>\" to close this dialog.</p>"
+#~ msgstr ""
+#~ "<p>To je ono. Registrace uživatele byla dokončena.<br><br>Klikněte na "
+#~ "\"<b>Dokončit<b>\" pro zavření tohoto dialogu.</p>"
+
+#~ msgid "Registration Complete"
+#~ msgstr "Registrace dokončena"
+
+#~ msgid "User already registered: found exact name match"
+#~ msgstr "Uživatel je již registrován: nalezen shodný záznam"
+
+#~ msgid "Mask %Q is already used to identify user %s"
+#~ msgstr "Maska %Q je již použita u uživatele %s"
+
+#~ msgid "User not found (%Q)"
+#~ msgstr "Uživatel nenalezen (%Q)"
+
+#~ msgid "No mask specified"
+#~ msgstr "Neurčena žádná maska"
+
+#~ msgid "User %Q not found"
+#~ msgstr "Uživatel %Q nenalezen"
+
+#~ msgid "Mask %Q already used to identify user %Q"
+#~ msgstr "Maska %Q je již použita u uživatele %Q"
+
+#~ msgid "Mask %Q not found"
+#~ msgstr "Maska %Q nenalezena"
+
+#~ msgid "No property specified"
+#~ msgstr "Neurčená vlastnost"
+
+#~ msgid "Registered users database dump:"
+#~ msgstr "Výpis databáze registrovaných uživatelů:"
+
+#~ msgid " User: %c%Q"
+#~ msgstr " Uživatel: %c%Q"
+
+#~ msgid " Warning: this user has no registration masks"
+#~ msgstr " Upozornění: tento uživatel nemá registrační masky"
+
+#~ msgid " Mask: %Q!%Q@%Q"
+#~ msgstr " Maska: %Q!%Q@%Q"
+
+#~ msgid " Property: %Q=%Q"
+#~ msgstr " Vlastnost: %Q=%Q"
+
+#~ msgid " No properties"
+#~ msgstr " Bez vlastností"
+
+#~ msgid "Total: %d matching users (of %d in the database)"
+#~ msgstr "Celkem: %d nalezeno uživatelů (z %d v databázi)"
+
+#~ msgid "Property Editor"
+#~ msgstr "Editor vlastností"
+
+#~ msgid "Property"
+#~ msgstr "Vlastnost"
+
+#~ msgid "Mask Editor"
+#~ msgstr "Editor masek"
+
+#~ msgid ""
+#~ "Insert a mask for this user.<br>It can contain the wildcard characters "
+#~ "'*' and '?'."
+#~ msgstr ""
+#~ "Vložte masku pro tohoto uživatele.<br>Může obsahovat zástupné znaky '*' a "
+#~ "'?'."
+
+#~ msgid ""
+#~ "<center>This the <b>nickname</b> that will match this user, default value "
+#~ "is the registered name.</center>"
+#~ msgstr ""
+#~ "<center>Toto je <b>přezdívka</b>, která je přiřazena k uživateli, výchozí "
+#~ "hodnota je zaregistrované jméno.</center>"
+
+#~ msgid ""
+#~ "<center>This the <b>username</b> that will match this user. <b>*</b> will "
+#~ "match any username.</center>"
+#~ msgstr ""
+#~ "<center>Toto je <b>uživatelské jméno</b>, které je přiřazeno k uživateli. "
+#~ "<b>*</b> znamená jakékoliv uživatelské jméno.</center>"
+
+#~ msgid ""
+#~ "<center>This the <b>hostname</b> that will match this user. <b>*</b> will "
+#~ "match any hostname.</center>"
+#~ msgstr ""
+#~ "<center>Toto je <b>název hostitele</b>, který bude přiřazen k uživateli. "
+#~ "<b>*</b> znamená jakéhokoliv hostitele.</center>"
+
+#~ msgid "Registered User Entry"
+#~ msgstr "Záznam registrovaného uživatele"
+
+#~ msgid "Name:"
+#~ msgstr "Jméno:"
+
+#~ msgid "Masks:"
+#~ msgstr "Masky:"
+
+#~ msgid "&Add..."
+#~ msgstr "&Přidat..."
+
+#~ msgid "&Edit"
+#~ msgstr "&Upravit"
+
+#~ msgid "Notify when user is online"
+#~ msgstr "Oznámit, když je uživatel online"
+
+#~ msgid "Notify nicknames:"
+#~ msgstr "Oznamovat přezdívky:"
+
+#~ msgid "<center>You can enter a space separated list of nicknames.</center>"
+#~ msgstr "<center>Můžete zadat seznam přezdívek oddělený mezerami.</center>"
+
+#~ msgid "All Properties..."
+#~ msgstr "Všechny vlastnosti..."
+
+#~ msgid "Registered Users - KVIrc"
+#~ msgstr "Registrovaní uživatelé - KVIrc"
+
+#~ msgid "Name"
+#~ msgstr "Jméno"
+
+#~ msgid "Notify"
+#~ msgstr "Oznamování"
+
+#~ msgid ""
+#~ "<center>This is the list of registered users. KVIrc can automatically "
+#~ "recognize and associate properties to them.<br>Use the buttons on the "
+#~ "right to add, edit and remove entries. The \"notify\" column allows you "
+#~ "to quickly add users to the notify list. Notify list fine-tuning can be "
+#~ "performed by editing the entry properties.</center>"
+#~ msgstr ""
+#~ "<center>Toto je seznam registrovaných uživatelů. KVIrc k nim umí "
+#~ "automaticky rozpoznávat a přiřazovat vlastnosti.<br>Použijte tlačítka "
+#~ "vpravo pro přidání, úpravu, nebo vymazání záznamů. Kolonka \"oznámit\" "
+#~ "umožňuje rychle přidat uživatele do oznamovacího seznamu. Vylepšení "
+#~ "oznamovacího seznamu může být provedeno pomocí editování možností položky."
+#~ "</center>"
+
+#~ msgid "Add (Wizard)..."
+#~ msgstr "Přidat (Průvodce)..."
+
+#~ msgid "Add a registered user by means of a user-friendly wizard."
+#~ msgstr ""
+#~ "Přidá registrovaného uživatele pomocí uživatelsky přívětivého průvodce."
+
+#~ msgid "Open the edit dialog to create a new user entry."
+#~ msgstr ""
+#~ "Otevře upravovací dialog pro vytvoření nového uživatelského záznamu."
+
+#~ msgid "Remove the currently selected entries."
+#~ msgstr "Odebere právě vybrané záznamy."
+
+#~ msgid "&Edit..."
+#~ msgstr "&Upravit..."
+
+#~ msgid "Edit the first selected entry."
+#~ msgstr "Upravit první vybraný záznam."
+
+#~ msgid "Export To..."
+#~ msgstr "Exportovat do..."
+
+#~ msgid ""
+#~ "Export the selected entries to a file.<br>All the data associated with "
+#~ "the selected registered users will be exported.<br>You (or anyone else) "
+#~ "can later import the entries by using the \"Import\" button."
+#~ msgstr ""
+#~ "Exportuje vybrané položky do souboru.<br>Všechna data asociovaná s "
+#~ "vybranými registrovanými uživateli budou exportována.<br>Později můžete "
+#~ "(vy, nebo kdokoliv jiný) importovat záznamy pomocí tlačítka \"Importovat"
+#~ "\"."
+
+#~ msgid "Import From..."
+#~ msgstr "Importovat z..."
+
+#~ msgid ""
+#~ "Import entries from a file exported earlier by the \"export\" function of "
+#~ "this dialog."
+#~ msgstr ""
+#~ "Importuje záznamy ze souboru exportovaného pomocí funkce \"export\" v "
+#~ "tomto dialogu."
+
+#~ msgid "No entries selected."
+#~ msgstr "Nebyl vybrán žádný záznam."
+
+#~ msgid "Can't open file %s for writing."
+#~ msgstr "Nelze otevřít soubor %s pro zápis."
+
+#~ msgid "Can't export the registered users database: Write error."
+#~ msgstr "Nelze exportovat databázi registrovaných uživatelů: Chyba zápisu."
+
+#~ msgid "Can't open file %s for reading."
+#~ msgstr "Nelze otevřít soubor %s pro čtení."
+
+#~ msgid "The file %s doesn't appear to be a valid registered users database."
+#~ msgstr "Soubor %s nevypadá jako platná databáze registrovaných uživatelů."
+
+#~ msgid "The file %s contains an invalid registered users database version."
+#~ msgstr ""
+#~ "Soubor %s obsahuje neplatnou verzi databáze registrovaných uživatelů."
+
+#~ msgid "Can't import the registered users database: Read error."
+#~ msgstr "Nelze importovat databázi registrovaných uživatelů: Chyba čtení."
+
+#~ msgid "Drop here the icons from the toolbars to remove them"
+#~ msgstr "Přetáhnutím ikon z nástrojové lišty sem je odstraníte"
+
+#~ msgid "ToolBar Properties"
+#~ msgstr "Vlastnosti Nástrojové lišty"
+
+#~ msgid "Id"
+#~ msgstr "Id"
+
+#~ msgid "Please choose the icon for the ToolBar"
+#~ msgstr "Prosím vyberte ikonu pro nástrojovou lištu"
+
+#~ msgid "Invalid ToolBar Label"
+#~ msgstr "Neplatný název lišty"
+
+#~ msgid "The ToolBar Label can't be empty!"
+#~ msgstr "Název lišty nemůže být prázdný!"
+
+#~ msgid "Duplicate ToolBar Id"
+#~ msgstr "Duplicitní Id lišty"
+
+#~ msgid ""
+#~ "The specified ToolBar Id already exists.<br>Would you like KVIrc to "
+#~ "assign it automatically (so it doesn't collide with any other toolbar) or "
+#~ "you prefer to do it manually ?"
+#~ msgstr ""
+#~ "Zadaná nástrojová lišta již existuje.<br>Chcete aby ji KVIrc přiřadilo "
+#~ "automaticky (pokud nebude kolidovat s žádnou jinou lištou) nebo raději "
+#~ "ručně ?"
+
+#~ msgid "Manually"
+#~ msgstr "Ručně"
+
+#~ msgid "Automatically"
+#~ msgstr "Automaticky"
+
+#~ msgid "Hide Advanced"
+#~ msgstr "Schovat pokročilé"
+
+#~ msgid "Customize Toolbars"
+#~ msgstr "Upravit nástrojové lišty"
+
+#~ msgid "New ToolBar"
+#~ msgstr "Nová nástrojová lišta"
+
+#~ msgid "Delete ToolBar"
+#~ msgstr "Smazat nástrojovou lištu"
+
+#~ msgid "Edit ToolBar"
+#~ msgstr "Upravit nástrojovou lištu"
+
+#~ msgid "Export ToolBar"
+#~ msgstr "Exportovat nástrojovou lištu"
+
+#~ msgid "Confirm ToolBar Deletion"
+#~ msgstr "Potvrďte smazání lišty"
+
+#~ msgid "Do you really want to delete toolbar \"%1\" ?"
+#~ msgstr "Opravdu chcete smazat nástrojovou lištu \"%1\" ?"
+
+#~ msgid "ToolBar Export"
+#~ msgstr "Export Nástrojové lišty"
+
+#~ msgid "Do you want the associated actions to be exported with the toolbar ?"
+#~ msgstr "Chcete asociované akce exportovat s nástrojovou lištou?"
+
+#~ msgid "Unable to write to the toolbar file."
+#~ msgstr "Nelze zapisovat do souboru nástrojových lišt."
+
+#~ msgid "Please specify the properties for the toolbar \"%1\""
+#~ msgstr "Prosím určete vlastnosti pro nástrojovou lištu \"%1\""
+
+#~ msgid "Please specify the properties for the new toolbar"
+#~ msgstr "Prosím zadejte vlastnosti pro novou nástrojovou lištu"
+
+#~ msgid "My ToolBar"
+#~ msgstr "Vlastní nástrojová lišta"
+
+#~ msgid "Terminal emulator"
+#~ msgstr "Emulátor terminálu"
+
+#~ msgid "Close this window"
+#~ msgstr "Zavřít toto okno"
+
+#~ msgid "Can't create the terminal emulation part"
+#~ msgstr "Nelze vytvořit část emulace terminálu"
+
+#~ msgid "Can't retrieve the terminal emulation factory"
+#~ msgstr "Nelze zjistit nastavení emulátoru terminálu"
+
+#~ msgid "Terminal"
+#~ msgstr "Terminál"
+
+#~ msgid "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+#~ msgstr "<nobr><font color=\"%s\"><b>Terminál</b></font></nobr>"
+
+#~ msgid "This window has no associated irc context"
+#~ msgstr "Toto okno nemá asociován žádný irc kontext"
+
+#~ msgid "No such irc context (%d)"
+#~ msgstr "Žádný irc kontext (%d)"
+
+#~ msgid "Internal unique name for the action"
+#~ msgstr "Interní unikátní název této akce"
+
+#~ msgid "Label:"
+#~ msgstr "Návěstí:"
+
+#~ msgid ""
+#~ "Visible name for this action.<br>This string will be displayed to the "
+#~ "user so it is a good idea to use $tr() here"
+#~ msgstr ""
+#~ "Zobarený název pro tuto akci.<br>Tento řetězec bude zobrazen uživateli a "
+#~ "proto je dobré použít funkci $tr()"
+
+#~ msgid "Action code"
+#~ msgstr "Kód Akce"
+
+#~ msgid "Code"
+#~ msgstr "Kód"
+
+#~ msgid "Category:"
+#~ msgstr "Kategorie:"
+
+#~ msgid "Choose the category that best fits for this action"
+#~ msgstr "Vyberte kategorii, do které nejlépe spadá tato akce"
+
+#~ msgid ""
+#~ "Visible short description for this action.<br>This string will be "
+#~ "displayed to the user so it is a good idea to use $tr() here"
+#~ msgstr ""
+#~ "Zobrazený krátký popis pro tuto akci.<br>Tento řetězec bude zobrazen "
+#~ "uživateli, proto je dobré použít zde funkci $tr()"
+
+#~ msgid "Small Icon:"
+#~ msgstr "Malá ikona:"
+
+#~ msgid ""
+#~ "The small icon associated to this action.<br>It will appear at least in "
+#~ "the popup menus when this action is inserted.<br>It should be 16x16 "
+#~ "pixels."
+#~ msgstr ""
+#~ "Malá ikona asociovaná s touto akcí.<br>Objeví se v popup menu, když bude "
+#~ "tato akce vložena.<br>Měla by být 16x16 pixelů."
+
+#~ msgid "Big Icon:"
+#~ msgstr "Velká ikona:"
+
+#~ msgid ""
+#~ "The big icon associated to this action.<br>It will appear at least in the "
+#~ "toolbar buttons when this action is inserted.<br>It should be 32x32 "
+#~ "pixels."
+#~ msgstr ""
+#~ "Velká ikona asociovaná s touto akcí.<br>Objeví se mezi tlačítky "
+#~ "nástrojové lišty, když je tato akce vložena.<br>Měla by být 32x32 pixelů."
+
+#~ msgid "Key Sequence:"
+#~ msgstr "Kombinace kláves:"
+
+#~ msgid ""
+#~ "Optional keyboard sequence that will activate this action.<br>The "
+#~ "sequence should be expressed as a string of up to four key codes "
+#~ "separated by commas eventually combined with the modifiers \"Ctrl\","
+#~ "\"Shift\",\"Alt\" and \"Meta\".<br>Examples of such sequences are \"Ctrl+X"
+#~ "\", \"Ctrl+Alt+Z\", \"Ctrl+X,Ctrl+C\" ..."
+#~ msgstr ""
+#~ "Volitelná kombinace kláves, která spustí tuto akci.<br>Kombinace by měla "
+#~ "být spojením max. čtyř kláves oddělených čárkami případně kombinovány s "
+#~ "přepínači \"Ctrl\",\"Shift\",\"Alt\" a \"Meta\".<br>Příklady použitelných "
+#~ "kombinací jsou \"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl+X,Ctrl+C\" ..."
+
+#~ msgid "Needs IRC Context"
+#~ msgstr "Vyžaduje IRC kontext"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window belongs to an irc context"
+#~ msgstr ""
+#~ "Zakrtněte tuto volbu, pokud má být tato akce povolena, když aktivní okno "
+#~ "patří do irc kontextu"
+
+#~ msgid "Needs IRC Connection"
+#~ msgstr "Vyžaduje IRC spojení"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window has an active IRC connection"
+#~ msgstr ""
+#~ "Zakrtněte tuto volbu, pokud má být tato akce povolena, když má aktivní "
+#~ "okno aktivní IRC spojení"
+
+#~ msgid "Enable at Login"
+#~ msgstr "Povolit při přihlášení"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled also during the login "
+#~ "operations (so when the logical IRC connection hasn't been estabilished "
+#~ "yet)"
+#~ msgstr ""
+#~ "Zakrtněte tuto volbu, pokud má být tato akce povolena, také během "
+#~ "přihlašovacích operací (dokud není navázáno IRC spojení)"
+
+#~ msgid "Enable Only in Specified Windows"
+#~ msgstr "Povolit pouze v určených oknech"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window is of a specified type"
+#~ msgstr ""
+#~ "Zakrtněte tuto volbu, pokud má být tato akce povolena, když je aktivní "
+#~ "okno zvoleného typu"
+
+#~ msgid "Enable in Console Windows"
+#~ msgstr "Povolit v okně Konzole"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window is a console"
+#~ msgstr ""
+#~ "Zakrtněte tuto volbu, pokud má být tato akce povolena, když je aktivní "
+#~ "okno konzole"
+
+#~ msgid "Only If There Are Selected Users"
+#~ msgstr "Pouze pokud jsou vybráni uživatelé"
+
+#~ msgid ""
+#~ "This will enable the action only if there are selected users in the "
+#~ "active window"
+#~ msgstr ""
+#~ "Toto povolí akci, pouze pokud jsou vybraní uživatelé v aktivním okně"
+
+#~ msgid "Enable in Channel Windows"
+#~ msgstr "Povolit v Oknech kanálů"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window is a channel"
+#~ msgstr ""
+#~ "Zakrtněte tuto volbu, pokud má být tato akce povolena, když je aktivní "
+#~ "okno kanál"
+
+#~ msgid "Enable in Query Windows"
+#~ msgstr "Povolit v Query oknech"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window is a query"
+#~ msgstr ""
+#~ "Zakrtněte tuto volbu, pokud má být tato akce povolena, když je aktivní "
+#~ "okno query"
+
+#~ msgid "Enable in DCC Chat Windows"
+#~ msgstr "Povolit v DCC Chat oknech"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window is a dcc chat"
+#~ msgstr ""
+#~ "Zakrtněte tuto volbu, pokud má být tato akce povolena, když je aktivní "
+#~ "okno dcc chat"
+
+#~ msgid "Flags"
+#~ msgstr "Flagy"
+
+#~ msgid "Action"
+#~ msgstr "Akce"
+
+#~ msgid "New Action"
+#~ msgstr "Nová Akce"
+
+#~ msgid "Delete Actions"
+#~ msgstr "Smazat Akce"
+
+#~ msgid "Export Actions..."
+#~ msgstr "Exportovat Akce..."
+
+#~ msgid "My Action"
+#~ msgstr "Moje Akce"
+
+#~ msgid "Put here a short description of your action"
+#~ msgstr "Zde vložte krátký popis vaší akce"
+
+#~ msgid "Action Editor"
+#~ msgstr "Editor akcí"
+
+#~ msgid "Apply"
+#~ msgstr "Použít"
+
+#~ msgid "Socket Spy [IRC Context %u]"
+#~ msgstr "Soket špión [IRC kontext %u]"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Socket Spy</b></font> <font color=\"%s\">[IRC "
+#~ "Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>Soket špión</b></font> <font color=\"%s\">"
+#~ "[IRC kontext %u]</font></nobr>"
+
+#~ msgid "Socket open"
+#~ msgstr "Soket otevřen"
+
+#~ msgid "Socket closed"
+#~ msgstr "Soket uzavřen"
+
+#~ msgid "Sound file '%Q' not found"
+#~ msgstr "Zvukový soubor '%Q' nenalezen"
+
+#~ msgid "Unable to play sound '%Q'"
+#~ msgstr "Nelze přehrát zvuk '%Q'"
+
+#~ msgid "Sorry , I can't find a sound system to use on this machine"
+#~ msgstr "Lituji, nelze nalézt zvukový systém pro použití na tomto stroji"
+
+#~ msgid "Sound system detected to: %s"
+#~ msgstr "Zvukový systém detekován jako: %s"
+
+#~ msgid "Manage Script-Based Addons"
+#~ msgstr "Spravovat skriptová rozšíření"
+
+#~ msgid "Configure"
+#~ msgstr "Nastavit"
+
+#~ msgid "Show Help"
+#~ msgstr "Zobrazit Nápovědu"
+
+#~ msgid "Uninstall"
+#~ msgstr "Odinstalovat"
+
+#~ msgid "Install Addon..."
+#~ msgstr "Instalovat rozšíření..."
+
+#~ msgid "More Addons..."
+#~ msgstr "Další rozšíření..."
+
+#~ msgid "Do you really want to uninstall the addon \"%1\" ?"
+#~ msgstr "Opravdu chcete odinstalovat rozšíření \"%1\" ?"
+
+#~ msgid "Confirm addon uninstallation"
+#~ msgstr "Potvrzení odinstalování rozšíření"
+
+#~ msgid "Please select the addon installation file"
+#~ msgstr "Prosím vyberte instalační soubor rozšíření"
+
+#~ msgid "%cAddon id %Q, version %Q%c"
+#~ msgstr "%cRozšíření id %Q, verze %Q%c"
+
+#~ msgid "Name: %Q"
+#~ msgstr "Jméno: %Q"
+
+#~ msgid "Description: %Q"
+#~ msgstr "Popis: %Q"
+
+#~ msgid "Total: %d addons installed"
+#~ msgstr "Celkem: %d rozšíření nainstalováno"
+
+#~ msgid "Uninstalling existing addon version %Q"
+#~ msgstr "Odinstalovává se existující rozšíření verze %Q"
+
+#~ msgid "The addon \"%1\" does not exist"
+#~ msgstr "Rozšíření \"%1\" neexistuje"
+
+#~ msgid "The addon \"%1\" has no configure callback set"
+#~ msgstr "Rozšíření \"%1\" nemá nastaven configure callback"
+
+#~ msgid "The addon \"%1\" has no help callback set"
+#~ msgstr "Rozšíření \"%1\" nemá nastaven help callback"
+
+#~ msgid "The specified version \"%Q\" is not a valid version string"
+#~ msgstr "Zadaná verze \"%Q\" má neplatný řetězec verze"
+
+#~ msgid "The specified KVIrc version \"%Q\" is not a valid version string"
+#~ msgstr "Zadaná verze KVIrc \"%Q\" má neplatný řetězec verze"
+
+#~ msgid ""
+#~ "This KVIrc executable is too old to run this addon (minimum version "
+#~ "required is %Q)"
+#~ msgstr ""
+#~ "Tato binárka KVIrc je příliš stará pro běh tohoto rozšíření (minimální "
+#~ "potřebná verze je %Q)"
+
+#~ msgid "Attempting to register addon \"%Q\" with version %Q"
+#~ msgstr "Probíhá registrace rozšíření \"%Q\" verze %Q"
+
+#~ msgid ""
+#~ "The script addon \"%Q\" already exists with version %Q which is higher "
+#~ "than %Q"
+#~ msgstr ""
+#~ "Skriptové rozšíření \"%Q\" již existuje ve verzi %Q , která je vyšší než %"
+#~ "Q"
+
+#~ msgid "Script registration failed"
+#~ msgstr "Registrace skriptu selhala"
+
+#~ msgid "Script succesfully registered"
+#~ msgstr "Skript úspěšně registrován"
+
+#~ msgid "Destinaion file exists: no copy made"
+#~ msgstr "Cílový soubor existuje: kopie nevytvořena"
+
+#~ msgid "Failed to copy from %Q to %Q"
+#~ msgstr "Selhalo kopírování %Q do %Q"
+
+#~ msgid ""
+#~ "Either the source doesn't exist or the destination can not be created"
+#~ msgstr "Buď neexistuje zdroj, nebo nemůže být vytvořen cíl"
+
+#~ msgid "Failed to write to file %Q: the destination couldn't be opened"
+#~ msgstr "Selhal zápis do souboru %Q: cíl nemůže být otevřen"
+
+#~ msgid "Destination file exists: file not renamed"
+#~ msgstr "Cílový soubor existuje: soubor nebyl přejmenován"
+
+#~ msgid "Failed to rename %Q to %Q"
+#~ msgstr "Selhalo přejmenování %Q na %Q"
+
+#~ msgid "Failed to make the directory %Q"
+#~ msgstr "Selhalo vytvoření adresáře %Q"
+
+#~ msgid "Failed to remove the file %Q"
+#~ msgstr "Selhalo smazání souboru %Q"
+
+#~ msgid "Failed to remove the directory %Q"
+#~ msgstr "Selhalo smazání adresáře %Q"
+
+#~ msgid "The specified directory does not exist '%Q'"
+#~ msgstr "Určený adresář neexistuje '%Q'"
+
+#~ msgid "Can't open the file \"%Q\" for reading"
+#~ msgstr "Nelze otevřít soubor \"%Q\" pro čtení"
+
+#~ msgid "Read error for file %Q"
+#~ msgstr "Chyba při čtení souboru %Q"
+
+#~ msgid ""
+#~ "Read error for file %Q (have been unable to read the requested size in "
+#~ "1000 retries)"
+#~ msgstr ""
+#~ "Chyba při čtení souboru %Q (nešel přečíst v požadované velikosti během "
+#~ "1000 pokusů)"
+
+#~ msgid "Can't open the file \"%Q\" for writing"
+#~ msgstr "Nelze otevřít soubor \"%Q\" pro zápis"
+
+#~ msgid "Event"
+#~ msgstr "Akce"
+
+#~ msgid "Edit the event handler name."
+#~ msgstr "Upravit název handleru události."
+
+#~ msgid "&Enable Handler"
+#~ msgstr "&Povolit handler"
+
+#~ msgid "&Disable Handler"
+#~ msgstr "&Zakázat handler"
+
+#~ msgid "Re&move Handler"
+#~ msgstr "S&mazat handler"
+
+#~ msgid "&Export Handler To..."
+#~ msgstr "&Exportovat handler do..."
+
+#~ msgid "&New Handler"
+#~ msgstr "&Nový handler"
+
+#~ msgid "default"
+#~ msgstr "výchozí"
+
+#~ msgid "none"
+#~ msgstr "žádný"
+
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "\tEvent:\n"
+#~ "\t\t%s\n"
+#~ "\n"
+#~ "\tParameters:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "\tUdálost:\n"
+#~ "\t\t%s\n"
+#~ "\n"
+#~ "\tParametry:\n"
+#~ "%s"
+
+#~ msgid "Unable to write to the event file."
+#~ msgstr "Nelze zapisovat do souboru událostí."
+
+#~ msgid "Unable to write to the events file."
+#~ msgstr "Nelze zapisovat do souboru událostí."
+
+#~ msgid "Event Editor"
+#~ msgstr "Editor událostí"
+
+#~ msgid "Default part message:"
+#~ msgstr "Výchozí odcházecí zpráva:"
+
+#~ msgid "Default quit message:"
+#~ msgstr "Výchozí opouštěcí zpráva:"
+
+#, fuzzy
+#~ msgid "Hide avatars in userlist"
+#~ msgstr "Schovat avatary"
+
+#~ msgid "USERINFO reply:"
+#~ msgstr "USERINFO odezva:"
+
+#~ msgid ""
+#~ "<center>This is the CTCP USERINFO reply.<br>It can contain some "
+#~ "information about yourself.</center>"
+#~ msgstr ""
+#~ "<center>Toto je CTCP USERINFO odpověď.<br>Může obsahovat nějaké informace "
+#~ "o vás.</center>"
+
+#~ msgid "Show at startup"
+#~ msgstr "Zobrazit při spuštění"
+
+#~ msgid "Did you know..."
+#~ msgstr "Víte, že..."
+
+#~ msgid "<b>Can't find any tip... :(</b>"
+#~ msgstr "<b>Nelze nalézt žádný tip... :(</b>"
+
+#~ msgid "Lag meter was not enabled"
+#~ msgstr "Měřič lagu není zapnut"
+
+#~ msgid "Ops.. internal error"
+#~ msgstr "Oops.. interní chyba"
+
+#~ msgid "Manage File &Transfers"
+#~ msgstr "Spravovat Souborové &Přenosy"
+
+#~ msgid "Password"
+#~ msgstr "Heslo"
+
+#~ msgid "&Join"
+#~ msgstr "&Přijít"
+
+#~ msgid "Show this window after connecting"
+#~ msgstr "Zobrazit toto okno po připojení"
+
+#~ msgid "Recent Channels"
+#~ msgstr "Poslední kanály"
+
+#~ msgid "Registered Channels"
+#~ msgstr "Registrované kanály"
+
+#~ msgid "Raw Event"
+#~ msgstr "Raw událost"
+
+#~ msgid "Edit the raw event handler name."
+#~ msgstr "Upravit název handleru raw události."
+
+#~ msgid "&Add Raw Event..."
+#~ msgstr "&Přidat Raw událost..."
+
+#~ msgid "New Raw Event"
+#~ msgstr "Nová Raw událost"
+
+#~ msgid "Enter the numeric code of the message (0-999)"
+#~ msgstr "Zadejte číselný kód zprávy (0-999)"
+
+#~ msgid "Unable to write to the raw event file."
+#~ msgstr "Nelze zapisovat do souboru raw událostí."
+
+#~ msgid "Unable to write to the raw events file."
+#~ msgstr "Nelze zapisovat do souboru raw událostí."
+
+#~ msgid "Raw Editor"
+#~ msgstr "Editor Raw"
+
+#~ msgid "%cCore action: %Q"
+#~ msgstr "%cCore akce: %Q"
+
+#~ msgid "%cUser action: %Q"
+#~ msgstr "%cUživatelská akce: %Q"
+
+#~ msgid "Label: %Q"
+#~ msgstr "Návěstí: %Q"
+
+#~ msgid "Category: %Q"
+#~ msgstr "Kategorie: %Q"
+
+#~ msgid "The action \"%1\" is disabled"
+#~ msgstr "Akce \"%1\" je zakázána"
+
+#~ msgid "The action \"%1\" does not exist"
+#~ msgstr "Akce \"%1\" neexistuje"
+
+#~ msgid "The action \"%1\" is a core action and cannot be destroyed"
+#~ msgstr "Akce \"%1\" je core akce a nemůže být zničena"
+
+#~ msgid "The switch -l requires -c"
+#~ msgstr "Přepínač -l vyžaduje -c"
+
+#~ msgid ""
+#~ "The switch -s requires -w with a combination of flags 'c','x' and 'q'"
+#~ msgstr "Přepínač -s vyžaduje -w s kombinací flagů 'c','x' a 'q'"
+
+#~ msgid ""
+#~ "The action \"%1\" is already defined as core action and cannot be "
+#~ "overridden"
+#~ msgstr ""
+#~ "Akce \"%1\" je již definována jako core akce a nemůže být přesměrována"
+
+#~ msgid "&Execute"
+#~ msgstr "&Spustit"
+
+#~ msgid "Params:"
+#~ msgstr "Parametry:"
+
+#~ msgid "Script Tester"
+#~ msgstr "Tester skriptu"
+
+#~ msgid ""
+#~ "Broken slot '%s' in target object '%s' while emitting signal '%s' from "
+#~ "object '%s': disconnecting"
+#~ msgstr ""
+#~ "Rozbitý slot '%s' v cílovém objektu '%s' při vysílání signálu '%s' z "
+#~ "objektu '%s': odpojuji se"
+
+#~ msgid ""
+#~ "No slot function '%s' exported by target object '%s' while emitting "
+#~ "signal '%s' from object '%s': disconnecting"
+#~ msgstr ""
+#~ "Žádná funkce slotu '%s' exportovaná cílovým objektem '%s' při vysílání "
+#~ "signálu '%s' z objektu '%s': odpojuji se"
+
+#~ msgid "Invalid timeout"
+#~ msgstr "Neplatná prodleva"
+
+#~ msgid "Invalid timer id"
+#~ msgstr "Neplatné id časovače"
+
+#~ msgid "%cListing Qt Properties for widget object %s (%s)"
+#~ msgstr "%cSeznam Qt vlastností pro widget objekt %s (%s)"
+
+#~ msgid "Properties class: %c%s%c"
+#~ msgstr "Třída vlastností: %c%s%c"
+
+#~ msgid "Property: %c%s%c, type: %s"
+#~ msgstr "Vlastnost: %c%s%c, typ: %s"
+
+#~ msgid ", enum ("
+#~ msgstr ", enum ("
+
+#~ msgid ", set"
+#~ msgstr ", nastaven"
+
+#~ msgid ", writeable"
+#~ msgstr ", zapisovatelný"
+
+#~ msgid "Oops... no such property: %s"
+#~ msgstr "Oops... žádná vlastnost: %s"
+
+#~ msgid "Not enough parameters"
+#~ msgstr "Nedostatek parametrů"
+
+#~ msgid "No such QT property (%s)"
+#~ msgstr "Žádná QT vlastnost (%s)"
+
+#~ msgid "missing parameter"
+#~ msgstr "chybí parametr"
+
+#~ msgid "Invalid parameter (%s)"
+#~ msgstr "Neplatný parametr (%s)"
+
+#~ msgid "Pixmap Object required"
+#~ msgstr "Je potřeba pixmapový objekt"
+
+#~ msgid "Pixmap not found"
+#~ msgstr "Pixmapa nenalezena."
+
+#~ msgid "Unsupported QT property (%s)"
+#~ msgstr "Nepodporovaná QT vlastnost (%s)"
+
+#~ msgid "Missing parameters"
+#~ msgstr "Chybí parametry"
+
+#~ msgid "This window has no associated IRC context"
+#~ msgstr "Toto okno nemá asociován IRC kontext"
+
+#~ msgid "Unknown"
+#~ msgstr "Neznámý"
+
+#~ msgid "[Parser warning in '%Q']: %Q"
+#~ msgstr "[Parser varování v '%Q']: %Q"
+
+#~ msgid "Can't find the multimedia file %s"
+#~ msgstr "Nelze nalézt multimediální soubor %s"
+
+#~ msgid "Missing target, no action taken"
+#~ msgstr "Chybí cíl, akce neprovedena"
+
+#~ msgid "Invalid timeout specified , using default"
+#~ msgstr "Určena neplatná prodleva , použita výchozí"
+
+#~ msgid "Can't add a file offer for file %s (huh ? file not readable ?)"
+#~ msgstr "Nelze přidat ke sdílení soubor %s (huh ? soubor je nečitelný ?)"
+
+#~ msgid "Added %d secs file offer for file %s (%s) and receiver %s"
+#~ msgstr "Přidána %d sek nabídka pro soubor %s (%s) a příjemce %s"
+
+#~ msgid "%s plays '%s'"
+#~ msgstr "%s přehrává '%s'"
+
+#~ msgid "%s plays '%s' to %s"
+#~ msgstr "%s přehrává '%s' uživateli %s"
+
+#~ msgid "Error in command: %c%c%Q"
+#~ msgstr "Chyba v příkazu: %c%c%Q"
+
+#, fuzzy
+#~ msgid "Error token: %c%Q"
+#~ msgstr "Chybný token: %c%s"
+
+#~ msgid "Parsing stopped at %cline %d , character %d"
+#~ msgstr "Parsování zastaveno na %cřádku %d , znak %d"
+
+#~ msgid " %s"
+#~ msgstr " %s"
+
+#~ msgid "Object scope: name (%s), class (%s)"
+#~ msgstr "Rozsah objektu: název (%s), třída (%s)"
+
+#~ msgid "Object scope: deleted object"
+#~ msgstr "Rozsah objektu: smazaný objekt"
+
+#~ msgid "This pointer: name (%s), class (%s)"
+#~ msgstr "Tento ukazatel: jméno (%s), třída (%s)"
+
+#~ msgid "This pointer: deleted object"
+#~ msgstr "Tento ukazatel: smazaný objekt"
+
+#~ msgid "Internal call stack:"
+#~ msgstr "Interní volání zásobníku:"
+
+#~ msgid ""
+#~ " Current command stack depth: %d frames (stopping output at 25th frame)"
+#~ msgstr ""
+#~ " Hloubka zásobníku současného příkazu: %d rámců (zastaven výstup na 25."
+#~ "rámci)"
+
+#~ msgid " Parent command stack depth: %d frames"
+#~ msgstr " Hloubka zásobníku zdrojového příkazu: %d rámců"
+
+#~ msgid "You are not connected to a server"
+#~ msgstr "Nejste připojeni k serveru"
+
+#~ msgid "%s (module %s)"
+#~ msgstr "%s (modul %s)"
+
+#~ msgid "Module '%s', Command '%s'"
+#~ msgstr "Modul '%s', Příkaz '%s'"
+
+#~ msgid "Can't rebind the command: window with id %s not found"
+#~ msgstr "Nelze znovu vázat příkaz: okno s id %s nenalezeno"
+
+#~ msgid ""
+#~ "Can't rebind the command: missing window identifier after the -r switch"
+#~ msgstr "Nelze znovu vázat příkaz: chybí identifikátor okna za -r přepínačem"
+
+#~ msgid "Error triggered from raw event handler %c%s::%Q"
+#~ msgstr "Chyba vzniklá spuštěním handleru raw události %c%s::%Q"
+
+#~ msgid "Error triggered from event handler %c%Q::%Q"
+#~ msgstr "Chyba vzniklá spuštěním událostního handleru %c%Q::%Q"
+
+#~ msgid "Raw event handler %s::%Q is broken: disabling"
+#~ msgstr "Handler Raw události %s::%Q je poškozen: vypínám"
+
+#~ msgid "Event handler %Q::%Q is broken: disabling"
+#~ msgstr "Handler události %Q::%Q je poškozen: vypínám"
+
+#~ msgid "Variable evaluated to \"%s\""
+#~ msgstr "Proměnná vyhodnocena jako \"%s\""
+
+#~ msgid "Module '%s', Function '%s'"
+#~ msgstr "Modul '%s', Funkce '%s'"
+
+#~ msgid "Identifier evaluated to \"%s\""
+#~ msgstr "Identifikátor vyhodnocen jako \"%s\""
+
+#~ msgid ""
+#~ "The regular expression matched a zero-length substring: this is not valid "
+#~ "in the s/// operator"
+#~ msgstr ""
+#~ "Regulární výraz obsahuje podřetězec nulové délky: toto není platné v s/// "
+#~ "operátoru"
+
+#~ msgid "Skipping the substitution"
+#~ msgstr "Vynechání substituce"
+
+#~ msgid "Left operand of operator %s (%s{%s}) is undefined : assuming 0"
+#~ msgstr "Levý operand operátoru %s (%s{%s}) není definován : nastavuji 0"
+
+#~ msgid "Left operand of operator %s (%s[%s]) is undefined : assuming 0"
+#~ msgstr "Levý operand operátoru %s (%s[%s]) není definován : nastavuji 0"
+
+#~ msgid "Left operand of operator %s (%s) is undefined : assuming 0"
+#~ msgstr "Levý operand operátoru %s (%s) není definován : nastavuji 0"
+
+#~ msgid "Variable %s{%s} evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Proměnná %s{%s} vyhodnocena na '%s' v operátoru %s (není číslo)"
+
+#~ msgid "Variable %s[%s] evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Proměnná %s[%s] vyhodnocena na '%s' v operátoru %s (není číslo)"
+
+#~ msgid "Variable %s evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Proměnná %s vyhodnocena na '%s' v operátoru %s (není číslo)"
+
+#~ msgid "Right operand of operator %s evaluated to '%s' (not a number)"
+#~ msgstr "Pravý operand operátoru %s vyhodnocen na '%s' (není číslo)"
+
+#~ msgid "operator %c%c"
+#~ msgstr "operátor %c%c"
+
+#~ msgid "Broken condition in menu setup: assuming false"
+#~ msgstr "Poškozená podmínka v nastavení menu: odhaduji false"
+
+#~ msgid "Broken icon parameter: ignoring"
+#~ msgstr "Poškozený parametr ikony: ignoruje se"
+
+#~ msgid "Can't find the icon \"%Q\": ignoring"
+#~ msgstr "Nelze najít ikonu \"%Q\": ignoruji"
+
+#~ msgid "Broken text parameter: assuming empty string"
+#~ msgstr "Poškozený textový parametr: odhaduje se prázdný řetězec"
+
+#~ msgid "Recursive definition detected for popup '%Q': ignoring"
+#~ msgstr "Rekurzivní definice nalezena pro popup '%Q': ignoruji"
+
+#~ msgid "Can't find the external popup '%Q'; ignoring"
+#~ msgstr "Nelze najít externí popup '%Q'; ignoruji"
+
+#~ msgid "Broken prologue in popup menu '%Q': ignoring"
+#~ msgstr "Poškozený úvod v popup menu '%Q': ignoruji"
+
+#~ msgid "Broken epilogue in popup menu '%Q': ignoring"
+#~ msgstr "Poškozený závěr v popup menu '%Q': ignoruji"
+
+#~ msgid "Say parse error: Broken command"
+#~ msgstr "Say parse chyba: Poškozený příkaz"
+
+#~ msgid ""
+#~ "Couldn't find a suitable IRC context for the connection, try using -n or -"
+#~ "u"
+#~ msgstr ""
+#~ "Nelze nalézt použitelný IRC kontext pro připojení, zkus použít -n nebo -u"
+
+#~ msgid ""
+#~ "Another connection is already in progress in the selected IRC context"
+#~ msgstr "Probíhá jiné spojení ve vybraném IRC kontextu"
+
+#, fuzzy
+#~ msgid "No menu bar item with text '%Q'"
+#~ msgstr "Žádná položka menu s textem '%s'"
+
+#, fuzzy
+#~ msgid "Invalid index specified: ignored"
+#~ msgstr "Určena neplatná prodleva, použita výchozí"
+
+#, fuzzy
+#~ msgid "The popup '%Q' is not defined"
+#~ msgstr "Popup '%s' není definován"
+
+#~ msgid "No target channel specified and the current window is not a channel"
+#~ msgstr "Neurčen cílový kanál a určené okno není kanálem"
+
+#~ msgid "No catalogue %Q for the current language found"
+#~ msgstr "Žádný katalog %Q pro zvolený jazyk nebyl nalezen"
+
+#~ msgid "The catalogue %Q was not loaded"
+#~ msgstr "Katalog %Q nebyl načten"
+
+#~ msgid "/me can be used only in channels, queries and DCC chat windows"
+#~ msgstr "/me může být použito pouze v kanálech, query a DCC chat oknech"
+
+#~ msgid "Invalid IRC url (%Q)"
+#~ msgstr "Neplatné IRC url (%Q)"
+
+#, fuzzy
+#~ msgid "The commandline for this url type seems to be broken (%Q)"
+#~ msgstr "Příkazový řádek pro tento typ url vypadá jako poškozený (%s)"
+
+#~ msgid "No commandline specified for this type of url (%Q)"
+#~ msgstr "Není určena příkazová řádka pro tento typ url (%Q)"
+
+#~ msgid ""
+#~ "Option setting error: Unknown option or invalid value for option type"
+#~ msgstr "Chyba nastavení: Neznámá volba nebo neplatná hodnota pro tento typ"
+
+#~ msgid "Choose a file to parse"
+#~ msgstr "Vyberte soubor pro parsování"
+
+#~ msgid "Failed to load the file '%Q' for parsing"
+#~ msgstr "Selhalo otevření souboru '%Q' pro parsování"
+
+#~ msgid "Missing channel list"
+#~ msgstr "Chybí seznam kanálů"
+
+#~ msgid "You don't appear to be on channel %s"
+#~ msgstr "Nevypadáto, že jste v kanále %s"
+
+#~ msgid "Popup %Q is not defined"
+#~ msgstr "Popup %Q není definován"
+
+#~ msgid "A popup menu cannot be popped up twice"
+#~ msgstr "Popup menu nemůže být zobrazeno dvakrát"
+
+#~ msgid "Invalid syntax for screen coordinates, using cursor position"
+#~ msgstr "Neplatná syntaxe pro koordináty obrazovky, použita pozice kurzoru"
+
+#~ msgid "Empty target specified"
+#~ msgstr "Určen prázdný cíl"
+
+#~ msgid "[RAW]: %Q"
+#~ msgstr "[RAW]: %Q"
+
+#~ msgid "Window with id %Q not found: no rebinding performed"
+#~ msgstr "Okno s id %Q nenalezeno: neprovedeno převázání"
+
+#~ msgid "Failed to execute command '%Q'"
+#~ msgstr "Nelze spustit příkaz '%Q'"
+
+#~ msgid ""
+#~ "The argument of the array count '#' operator didn't evaluate to an array: "
+#~ "automatic conversion from type '%Q' supplied"
+#~ msgstr ""
+#~ "Parametr operátoru počtu prvků pole '#' se nevyhodnotil jako pole: "
+#~ "automatická konverze z typu '%Q' dosazena"
+
+#~ msgid "Call to undefined function '%Q'"
+#~ msgstr "Volání nedefinované funkce '%Q'"
+
+#~ msgid "Error in inner alias function call '%Q', called from this context"
+#~ msgstr "Chyba uvnitř aliasu a volání funkce '%Q', volané z tohoto kontextu"
+
+#~ msgid "Stray dot ('.') character or invalid following module command name"
+#~ msgstr "Zbloudilý znak tečka ('.') nebo neplatný název následujícího modulu"
+
+#~ msgid "Syntax error: malformed module command identifier"
+#~ msgstr "Chyba syntaxe: zdeformovaný identifikátor module příkazu"
+
+#, fuzzy
+#~ msgid "Stray '::' sequence or invalid following alias name"
+#~ msgstr "Zbloudilý znak tečka ('.') nebo neplatný název následujícího modulu"
+
+#, fuzzy
+#~ msgid "Syntax error: malformed alias identifier"
+#~ msgstr "Chyba syntaxe: zdeformovaný identifikátor module příkazu"
+
+#, fuzzy
+#~ msgid "Syntax error: malformed (alias?) command identifier"
+#~ msgstr "Chyba syntaxe: zdeformovaný identifikátor module příkazu"
+
+#~ msgid "Unknown callback command \"%Q\""
+#~ msgstr "Neznámý callback příkaz \"%Q\""
+
+#~ msgid ""
+#~ "Timer name omitted but there is not current timer (this is not a timer "
+#~ "callback)"
+#~ msgstr ""
+#~ "Vynecháno jméno časovače, ale žádný současný časovač není (toto není "
+#~ "zpětné volání časovače)"
+
+#~ msgid "Can't kill the timer '%Q' since it is not running"
+#~ msgstr "Nelze zabít časovač '%Q', dokud neběží"
+
+#~ msgid "Hash reference assert failed: the variable evaluated to type '%Q'"
+#~ msgstr ""
+#~ "Tvrzení hashového odkazu selhalo: proměnná se vyhodnotila na typ '%Q'"
+
+#~ msgid "DNS Lookup result for query \"%s\""
+#~ msgstr "Výsledek DNS zjištění dotazu \"%s\""
+
+#~ msgid "Error: %Q"
+#~ msgstr "Chyba: %Q"
+
+#~ msgid "Hostname %d: %s"
+#~ msgstr "Hostitel %d: %s"
+
+#~ msgid "IP address %d: %s"
+#~ msgstr "IP adresa %d: %s"
+
+#~ msgid "Operand of unary operator didn't evaluate to a number"
+#~ msgstr "Operand jednočlenného operátoru nelze vyhodnotit jako číslo"
+
+#~ msgid "Left operand didn't evaluate to a number"
+#~ msgstr "Levý operand nelze vyhodnotit na číslo"
+
+#~ msgid "Right operand didn't evaluate to a number"
+#~ msgstr "Pravý operand nelze vyhodnotit na číslo"
+
+#~ msgid "Division by zero"
+#~ msgstr "Dělení nulou"
+
+#~ msgid "Hash key evaluated to empty string: fix the script"
+#~ msgstr "Hash klíč vyhodnocen jako prázdný řetězec: opravte skript"
+
+#~ msgid ""
+#~ "The argument of the {} subscript didn't evaluate to a hash: automatic "
+#~ "conversion from type '%Q' supplied"
+#~ msgstr ""
+#~ "Argument v {} subskriptu se nevyhodnotil jako hash: automatická konverze "
+#~ "z typu '%Q' dosazena"
+
+#~ msgid ""
+#~ "The argument of the {} subscript didn't evaluate to a hash automatic "
+#~ "conversion from %Q supplied"
+#~ msgstr ""
+#~ "Argument {} subskripce se nevyhodnotil na automatickou hashovou konverzi "
+#~ "z dodaného '%Q'"
+
+#~ msgid "Module function call failed: can't load the module '%Q'"
+#~ msgstr "Volání funkce modulu selhalo: nelze načíst modul '%Q'"
+
+#~ msgid ""
+#~ "Module function call failed: the module '%Q' doesn't export a function "
+#~ "named '%Q'"
+#~ msgstr "Volání funkce modulu selhalo: modul '%Q' neexportoval funkci '%Q'"
+
+#~ msgid "This window has no associated IRC context and is not a DCC chat"
+#~ msgstr "Toto okno nemá osociovaný IRC kontext a nejedná se o DCC chat"
+
+#~ msgid "Class \"%Q\" is not defined"
+#~ msgstr "Třída \"%Q\" není definovaná"
+
+#~ msgid "The specified parent object does not exist"
+#~ msgstr "Zadaný zdrojový objekt neexistuje"
+
+#~ msgid "There is no option named '%Q'"
+#~ msgstr "Zde není žádná možnost '%Q'"
+
+#~ msgid "No such IRC context (%u)"
+#~ msgstr "Žádný IRC kontext (%u)"
+
+#~ msgid "This window is not associated to an IRC context"
+#~ msgstr "Toto okno nemá asociován IRC kontext"
+
+#~ msgid "Event handler %Q is broken: disabling"
+#~ msgstr "Handler události %Q je poškozen: zakazuji jej"
+
+#~ msgid "line %d, near character %d"
+#~ msgstr "řádek %d, poblíž znaku %d"
+
+#~ msgid "beginning of input"
+#~ msgstr "začátek vstupu"
+
+#~ msgid ""
+#~ "Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %"
+#~ "s\" for the command syntax"
+#~ msgstr ""
+#~ "Nalezen znak '%q' (unicode 0x%x), kde se předpokládá '%c' : koukněte na "
+#~ "\"/help %s\" pro syntaxi příkazu"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found end of input where character '%c' was expected: see \"/help %s\" "
+#~ "for the command syntax"
+#~ msgstr ""
+#~ "Nalezen znak '%q' (unicode 0x%x), kde se předpokládá '%c' : koukněte na "
+#~ "\"/help %s\" pro syntaxi příkazu"
+
+#~ msgid "Empty script"
+#~ msgstr "Prázdný skript"
+
+#~ msgid ""
+#~ "Syntax error after '%' variable prefix. If you want to use a plain '%' in "
+#~ "the code you need to escape it"
+#~ msgstr ""
+#~ "Chyba syntaxe za '%' prefixem proměnné. Pokud chcete použít obyčejný '%' "
+#~ "v kódu, musíte použít escape znak"
+
+#~ msgid "Objects have no extended scope variables"
+#~ msgstr "Objekt nemá žádné rozšířené proměnné rozsahu"
+
+#~ msgid ""
+#~ "Declaring global variables with an uppercase letter is deprecated. Global "
+#~ "variables should be declared with 'global'"
+#~ msgstr ""
+#~ "Dekalarace globálních proměnných s velkým písmenem je zastaralá. Globální "
+#~ "proměnné by měly být deklarovány s 'global'"
+
+#~ msgid "Found character '%q' (unicode %x) where an instruction was expected"
+#~ msgstr "Nalezen znak '%q' (unicode %x) na místě očekávané instrukce"
+
+#~ msgid "Unterminated instruction block"
+#~ msgstr "Neukončený instrukční blok"
+
+#~ msgid ""
+#~ "Unexpected end of script in instruction block (missing closing brace)"
+#~ msgstr ""
+#~ "Neočekávaný konec skriptu v bloku instrukcí (chybí uzavírací závorka)"
+
+#~ msgid ""
+#~ "The dash after a command should be followed by a letter (switch), by a "
+#~ "digit (negative number) or be escaped"
+#~ msgstr ""
+#~ "Pomlčka za příkazem by měla být následována písmenem (přepínač), číslicí "
+#~ "(záporné číslo) nebo by měla být uvozena escape znakem"
+
+#~ msgid "Unexpected character '%q' (unicode %x) after a switch dash"
+#~ msgstr "Neočekávaný znak '%q' (unicode %x) za pomlčkou přepínače"
+
+#~ msgid "Unexpected end of script after a switch dash"
+#~ msgstr "Neočekávaný konec skriptu za pomlčkou přepínače"
+
+#~ msgid ""
+#~ "The above problem might be related to the switch dash and the following "
+#~ "equal sign"
+#~ msgstr ""
+#~ "Předchozí problém může souviset s pomlčkou přepínače a následujícím "
+#~ "znaménkem rovnosti"
+
+#~ msgid "Unexpected end of script in parameter list"
+#~ msgstr "Neočekávaný konec skriptu v seznamu parametrů"
+
+#~ msgid "Unexpected end of line in parameter list"
+#~ msgstr "Neočekávaný konec řádku v seznamu parametrů"
+
+#, fuzzy
+#~ msgid "Skipping nested terminator character %q"
+#~ msgstr "řádek %d, poblíž znaku %d"
+
+#~ msgid "Stray backslash at the end of the script"
+#~ msgstr "Zbloudilé zpětné lomítko na konci skriptu"
+
+#~ msgid "Unterminated hash key"
+#~ msgstr "Neukončený hash klíč"
+
+#~ msgid "Unexpected end of script in hash key (missing '}' character ?)"
+#~ msgstr "Neočekávaný konec skriptu v hash klíči (chybí znak '}' ?)"
+
+#~ msgid ""
+#~ "Unexpected end of line in hash key (missing '}' character or unescaped "
+#~ "newline)"
+#~ msgstr ""
+#~ "Neočekávaný konec řádku v hash klíči (chybí znak '}' nebo neescapovaný "
+#~ "nový řádek)"
+
+#~ msgid "Unterminated string constant"
+#~ msgstr "Neukončená řetězcová konstanta"
+
+#~ msgid "Unexpected end of script in string constant (missing \" character ?)"
+#~ msgstr "Neočekávaný konec skriptu v řetězcové konstantě (chybí \" znak ?)"
+
+#~ msgid ""
+#~ "Unexpected end of line in string constant (missing \" character or "
+#~ "unescaped newline)"
+#~ msgstr ""
+#~ "Neočekávaný konec řádku v řetězcové konstantě (chybí znak \" nebo "
+#~ "neescapovaný nový řádek)"
+
+#~ msgid ""
+#~ "The specified format string wasn't accepted by the underlying system time "
+#~ "formatting function"
+#~ msgstr ""
+#~ "Určený formát řetězce nemůže být akceptován formátovací funkcí "
+#~ "systémového času"
+
+#~ msgid "Unknown binary operator '=%q': did you mean '==' ?"
+#~ msgstr "Neznámý binární operátor '=%q': mysleli jste '==' ?"
+
+#~ msgid "Unknown binary operator '%q'"
+#~ msgstr "Neznámý binární operátor '%q'"
+
+#~ msgid "Unexpected end of script in expression"
+#~ msgstr "Neočekávaný konec skriptu ve výrazu"
+
+#~ msgid ""
+#~ "Unexpected character %q (unicode %h) in expression. If it meant to be a "
+#~ "string use the quotes."
+#~ msgstr ""
+#~ "Neočekávaný znak %q (unicode %h) ve výrazu. Pokud je to tak míněno, "
+#~ "řetězec by měl použít uvozovky."
+
+#~ msgid ""
+#~ "Empty window identifier specified in the standard rebinding switch: no "
+#~ "rebinding performed"
+#~ msgstr "Určeno prázdnée standartním rebind přepínači: rebind neproveden"
+
+#~ msgid ""
+#~ "Invalid window specified in the standard rebinding switch: no rebinding "
+#~ "performed"
+#~ msgstr ""
+#~ "Určeno neplatné okno ve standartním rebind přepínači: rebind neproveden"
+
+#~ msgid "Internal error: pure virtual evaluateReadOnly called"
+#~ msgstr "Interní chyba: pure virtual evaluateReadOnly voláno"
+
+#~ msgid ""
+#~ "Internal error: trying to evaluate as read-write a read-only data location"
+#~ msgstr ""
+#~ "Interní chyba: pokus o vyhodnocení lokace na čtení-zápis, lokace je jen "
+#~ "pro čtení"
+
+#~ msgid "Internal error: pure virtual evaluateReadOnlyInObjectScope called"
+#~ msgstr "Interní chyba: pure virtual evaluateReadOnlyInObjectScope voláno"
+
+#~ msgid "Error triggered from process callback handler: killing process"
+#~ msgstr "Chyba vyvolaná z procesu handleru zpětného volání: ukončuji proces"
+
+#~ msgid "This command can be used only in windows bound to an IRC context"
+#~ msgstr ""
+#~ "Tento příkaz může být použit pouze v oknech svázaných s IRC kontextem"
+
+#~ msgid "You're not connected to an IRC server"
+#~ msgstr "Nejste připojeni k IRC serveru"
+
+#~ msgid "Missing parameter"
+#~ msgstr "Chybí parametr"
+
+#, fuzzy
+#~ msgid "Failed to send an unknown command as /raw"
+#~ msgstr "Posílat neznámé příkazy jako /RAW"
+
+#~ msgid "Call to undefined command '%Q'"
+#~ msgstr "Volání nedefinovaného příkazu '%Q'"
+
+#~ msgid "Error in inner alias command call '%Q', called from this context"
+#~ msgstr ""
+#~ "Chyba uvnitř aliasu a volání příkazu '%Q', volaného z tohoto kontextu"
+
+#~ msgid "Missing class name"
+#~ msgstr "Chybí jméno třídy"
+
+#~ msgid "Couln't find base class named \"%Q\""
+#~ msgstr "Nelze nalézt základní třídu nazvanou \"%Q\""
+
+#~ msgid "Can't override the builtin class \"%Q\""
+#~ msgstr "Nelze přepsat vestavěnou třídu \"%Q\""
+
+#~ msgid "Window with ID '%s' not found, returning empty string"
+#~ msgstr "Okno s ID '%s' nenalezeno, vrací se prázdný řetězec"
+
+#~ msgid "The specified window is not a channel"
+#~ msgstr "Určené okno není kanálem"
+
+#~ msgid "Module function call failed: can't load the module 'str'"
+#~ msgstr "Volání funkce modulu selhalo: nelze načíst modul 'str'"
+
+#~ msgid ""
+#~ "Module function call failed: the module 'str' doesn't export a function "
+#~ "named 'split'"
+#~ msgstr ""
+#~ "Volání funkce modulu selhalo: modul 'str' neexportoval funkci 'split'"
+
+#~ msgid "The $sw() function can be used only in aliases"
+#~ msgstr "Funkce $sw() může být použita jen v aliasech"
+
+#~ msgid "Window with caption %Q not found"
+#~ msgstr "Okno s titulkem %Q nenalezeno"
+
+#~ msgid "Array reference assert failed: the variable evaluated to type '%Q'"
+#~ msgstr "Tvrzení odkazu pole selhalo: proměnná se vyhodnotila na typ '%Q'"
+
+#~ msgid "Module command call failed: can't load the module '%Q'"
+#~ msgstr "Volání příkazu modulu selhalo: nelze načíst modul '%Q'"
+
+#~ msgid ""
+#~ "Module command call failed: the module '%Q' doesn't export a callback "
+#~ "command named '%Q'"
+#~ msgstr ""
+#~ "Volání modulu selhalo: modul '%Q' neexportuje příkaz zpětného volání s "
+#~ "názvem '%Q'"
+
+#~ msgid "Unexpected end of script after '$' function call prefix"
+#~ msgstr "Neočekávaný konec skriptu za '$' prefixem volání funkce"
+
+#~ msgid "Unexpected character %q (unicode %x) after '$' function call prefix"
+#~ msgstr "Neočekávaný znak %q (unicode %x) za '$' prefixem volání funkce"
+
+#~ msgid ""
+#~ "Syntax error after '$' function call prefix. If you want to use a plain "
+#~ "'$' in the code you need to escape it"
+#~ msgstr ""
+#~ "Chyba syntaxe za '$' prefixem volání funkce. Pokud chcete použít obyčejné "
+#~ "'$' v kódu, musíte použít escape znak"
+
+#~ msgid "Invalid expression evaluation in object scope"
+#~ msgstr "Neplatné vyhodnocení výrazu v rozsahu objektu"
+
+#~ msgid "Invalid command evaluation in object scope"
+#~ msgstr "Neplatné vyhodnocení příkazu v rozsahu objektu"
+
+#~ msgid "Empty instruction block for command evaluation"
+#~ msgstr "Prázdný instrukční blok pro vyhodnocení příkazu"
+
+#~ msgid ""
+#~ "Parameter identifiers are forbidden in object scope (after the '->' "
+#~ "operator)"
+#~ msgstr ""
+#~ "Identifikátory parametru jsou zakázány v rozsahu objektu (za '->' "
+#~ "operátorem)"
+
+#~ msgid ""
+#~ "Ending index of a multiple parameter identifier is lower or equal to the "
+#~ "starting index. This will evaluate to a single parameter identifier."
+#~ msgstr ""
+#~ "Koncový index víceparametrového identifikátoru je menší nebo roven "
+#~ "počátečnímu. Vyhodnotí se to jako identifikátor s jedním parametrem."
+
+#, fuzzy
+#~ msgid "Syntax error: malformed alias function call identifier"
+#~ msgstr "Chyba syntaxe: zdeformovaný identifikátor module příkazu"
+
+#, fuzzy
+#~ msgid "Syntax error: malformed (alias?) function call identifier"
+#~ msgstr "Chyba syntaxe: zdeformovaný identifikátor module příkazu"
+
+#~ msgid "Array index didn't evaluate to an integer"
+#~ msgstr "Index pole nelze přepočítat na celé číslo"
+
+#~ msgid ""
+#~ "Array index evaluated to a negative integer (non negative integer "
+#~ "expected)"
+#~ msgstr ""
+#~ "Index pole přepočítán na záporné celé číslo (očekáváno celé kladné číslo)"
+
+#~ msgid ""
+#~ "The argument of the [] subscript didn't evaluate to an array: automatic "
+#~ "conversion from %Q supplied"
+#~ msgstr ""
+#~ "Argument v [] subskriptu se nevyhodnotil jako pole: automatická konverze "
+#~ "z typu '%Q' dosazena"
+
+#~ msgid ""
+#~ "The argument of the [] subscript didn't evaluate to an array: automatic "
+#~ "conversion from type '%Q' supplied"
+#~ msgstr ""
+#~ "Argument v [] subskriptu se nevyhodnotil jako pole: automatická konverze "
+#~ "z typu '%Q' dosazena"
+
+#~ msgid ""
+#~ "The argument of the hash count '#' operator didn't evaluate to a hash: "
+#~ "automatic conversion from type '%Q' supplied"
+#~ msgstr ""
+#~ "Parametr operátoru počtu hashů '#' se nevyhodnotil jako hash: automatická "
+#~ "konverze z typu '%Q' dosazena"
+
+#~ msgid "This is not a channel"
+#~ msgstr "Toto není kanál"
+
+#~ msgid "Unterminated c-style multiline comment"
+#~ msgstr "Neukončený víceřádkový komentář ve stylu c"
+
+#~ msgid "Unexpected end of script in multiline comment"
+#~ msgstr "Neočekávaný konec skriptu ve víceřádkovém komentáři"
+
+#~ msgid ""
+#~ "Unexpected character '%q' (unicode %x) after a slash (it is a typo or a "
+#~ "malformed comment begin ?)"
+#~ msgstr ""
+#~ "Neočekávaný znak '%q' (unicode %x) za lomítkem (je to překlep nebo "
+#~ "začátek poškozeného komentáře ?)"
+
+#~ msgid ""
+#~ "The popup '%s' is actually locked: 'self-modifications' are not allowed"
+#~ msgstr "Popup '%s' je zrovna zamčený: 'vlastní-úpravy' nejsou povoleny"
+
+#~ msgid "The target variable didn't evaluate to an integer or real value"
+#~ msgstr ""
+#~ "Cílová proměnná nejde vyhodnotit na celé číslo nebo skutečnou hodnotu"
+
+#~ msgid "The right side of operator '&=' didn't evaluate to an integer"
+#~ msgstr "Pravou stranu operátoru '&=' nelze vyhodnotit na celé číslo"
+
+#~ msgid "The left side of operator '&=' didn't evaluate to an integer"
+#~ msgstr "Levou stranu operátoru '&=' nelze vyhodnotit na celé číslo"
+
+#~ msgid "The right side of operator '/=' didn't evaluate to a number"
+#~ msgstr "Pravou stranu operátoru '/=' nelze vyhodnotit na číslo"
+
+#~ msgid "The left side of operator '/=' didn't evaluate to a number"
+#~ msgstr "Levou stranu operátoru '/=' nelze vyhodnotit na číslo"
+
+#~ msgid "The right side of operator '%=' didn't evaluate to a number"
+#~ msgstr "Pravou stranu operátoru '%=' nelze vyhodnotit na číslo"
+
+#~ msgid "The left side of operator '%=' didn't evaluate to a number"
+#~ msgstr "Levou stranu operátoru '%=' nelze vyhodnotit na číslo"
+
+#~ msgid "The right side of operator '*=' didn't evaluate to a number"
+#~ msgstr "Pravou stranu operátoru '*=' nelze vyhodnotit na číslo"
+
+#~ msgid "The left side of operator '*=' didn't evaluate to a number"
+#~ msgstr "Levou stranu operátoru '*=' nelze vyhodnotit na číslo"
+
+#~ msgid "The right side of operator '|=' didn't evaluate to an integer"
+#~ msgstr "Pravou stranu operátoru '|=' nelze vyhodnotit na celé číslo"
+
+#~ msgid "The left side of operator '|=' didn't evaluate to an integer"
+#~ msgstr "Levou stranu operátoru '|=' nelze vyhodnotit na celé číslo"
+
+#~ msgid "The right side of operator '<<=' didn't evaluate to an integer"
+#~ msgstr "Pravou stranu operátoru '<<=' nelze vyhodnotit na celé číslo"
+
+#~ msgid "The left side of operator '<<=' didn't evaluate to an integer"
+#~ msgstr "Levou stranu operátoru '<<=' nelze vyhodnotit na celé číslo"
+
+#~ msgid "The right side of operator '>>=' didn't evaluate to an integer"
+#~ msgstr "Pravou stranu operátoru '>>=' nelze vyhodnotit na celé číslo"
+
+#~ msgid "The left side of operator '>>=' didn't evaluate to an integer"
+#~ msgstr "Levou stranu operátoru '>>=' nelze vyhodnotit na celé číslo"
+
+#~ msgid "The right side of operator '-=' didn't evaluate to a number"
+#~ msgstr "Pravou stranu operátoru '-=' nelze vyhodnotit na číslo"
+
+#~ msgid "The left side of operator '-=' didn't evaluate to a number"
+#~ msgstr "Levou stranu operátoru '-=' nelze vyhodnotit na číslo"
+
+#~ msgid "The right side of operator '+=' didn't evaluate to a number"
+#~ msgstr "Pravou stranu operátoru '+=' nelze vyhodnotit na číslo"
+
+#~ msgid "The left side of operator '+=' didn't evaluate to a number"
+#~ msgstr "Levou stranu operátoru '+=' nelze vyhodnotit na číslo"
+
+#~ msgid "The right side of operator '^=' didn't evaluate to an integer"
+#~ msgstr "Pravou stranu operátoru '^=' nelze vyhodnotit na celé číslo"
+
+#~ msgid "The left side of operator '^=' didn't evaluate to an integer"
+#~ msgstr "Levou stranu operátoru '^=' nelze vyhodnotit na celé číslo"
+
+#~ msgid ""
+#~ "The regular expression matched a zero-length substring: this is not valid "
+#~ "in the s/// operator, skipping"
+#~ msgstr ""
+#~ "Regulární výraz obsahuje podřetězec nulové délky: toto není platné v s/// "
+#~ "operátoru, vynechává se"
+
+#~ msgid "Window with ID '%s' not found"
+#~ msgstr "Okno s ID '%s' nenalezeno"
+
+#~ msgid "Missing alias name"
+#~ msgstr "Chybí jméno aliasu"
+
+#~ msgid "The alias %Q is not existing"
+#~ msgstr "Alias %Q neexistuje"
+
+#~ msgid "The specified window has no button containers"
+#~ msgstr "Zvolené okno nemá tlačítkové kontejnery"
+
+#~ msgid "Window button '%Q' not found"
+#~ msgstr "Tlačítko okna '%Q' nenalezeno"
+
+#~ msgid "Can't find the icon '%Q'"
+#~ msgstr "Nelze nalézt ikonu '%Q'"
+
+#~ msgid "No such event (%Q)"
+#~ msgstr "Žádná událost (%Q)"
+
+#, fuzzy
+#~ msgid "No handler '%Q' for raw numeric event '%d'"
+#~ msgstr "Není handler '%s' pro číselnou raw událost '%d'"
+
+#~ msgid "No handler '%Q' for event '%Q'"
+#~ msgstr "Není handler '%Q' pro událost '%Q'"
+
+#~ msgid "The specified ping time is invalid: assuming zero (no ping)"
+#~ msgstr "Určený čas pingu je neplatný: nastavuji nulu (žádný ping)"
+
+#~ msgid "The specified maximum run time is invalid: assuming zero (infinite)"
+#~ msgstr ""
+#~ "Zadaný maximální počet spuštění je neplatný: nastavuji nulu (nekonečně)"
+
+#~ msgid "Failed to start the process"
+#~ msgstr "Selhalo spuštení procesu"
+
+#~ msgid "The specified object does not exist"
+#~ msgstr "Zadaný objekt neexistuje"
+
+#~ msgid "Missing timer name"
+#~ msgstr "Chybí jméno časovače"
+
+#~ msgid "Missing timeout delay"
+#~ msgstr "Chybí čas prodlevy"
+
+#~ msgid "The timeout delay didn't evaluate to an integer"
+#~ msgstr "Časová prodleva nejde přepočítat na celé číslo"
+
+#~ msgid "Unable to add the timer: insufficient system resources"
+#~ msgstr "Nelze přidat timer: nedostatek systémových zdrojů"
+
+#~ msgid ""
+#~ "The left side of the scope operator didn't evaluate as an object reference"
+#~ msgstr ""
+#~ "Levá strana rozsahu operátoru nejde vyhodnotit jako objektová reference"
+
+#~ msgid ""
+#~ "The left side of the scope operator evaluated to a null object reference"
+#~ msgstr ""
+#~ "Levá strana rozsahu operátoru vyhodnocena jako null objektová reference"
+
+#~ msgid ""
+#~ "The left side of the scope operator evaluated to an invalid object "
+#~ "reference (object doesn't exist)"
+#~ msgstr ""
+#~ "Levá strana rozsahu operátoru vyhodnocena na neplatnou objektovou "
+#~ "referenci (objekt neexistuje)"
+
+#~ msgid ""
+#~ "Broken slot '%Q' in target object '%Q::%Q' while emitting signal '%Q' "
+#~ "from object '%Q::%Q': disconnecting"
+#~ msgstr ""
+#~ "Rozbitý slot '%Q' v cílovém objektu '%Q::%Q' při vysílání signálu '%Q' z "
+#~ "objektu '%Q::%Q': odpojuji se"
+
+#~ msgid ""
+#~ "Slot target object destroyed while emitting signal '%Q' from object '%Q::%"
+#~ "Q'"
+#~ msgstr ""
+#~ "Cílový slot objektu rozbit při vysílání signálu '%Q' z objektu '%Q::%Q'"
+
+#~ msgid "Listing Qt properties for object named \"%Q\" of KVS class %Q"
+#~ msgstr "Seznam Qt vlastností pro objekt nazvaný \"%Q\" z KVS třídy %Q"
+
+#~ msgid "Properties for Qt class %s"
+#~ msgstr "Vlastnosti Qt třídy %s"
+
+#~ msgid "Property: %c%Q%c, type %s"
+#~ msgstr "Vlastnost: %c%Q%c, typ %s"
+
+#~ msgid "%d properties listed"
+#~ msgstr "%d vlastností vypsáno"
+
+#~ msgid "The object named \"%Q\" of class %Q has no Qt properties"
+#~ msgstr "Objekt nazvaný \"%Q\" ze třídy %Q nemá Qt vlastnosti"
+
+#~ msgid "No Qt property named \"%Q\" for object named \"%Q\" of class %Q"
+#~ msgstr "Žádná Qt vlastnost \"%Q\" pro objekt \"%Q\" ze třídy %Q"
+
+#~ msgid ""
+#~ "Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+#~ "property is indexed but it doesn't really exist"
+#~ msgstr ""
+#~ "Nelze nalézt vlastnost \"%Q\" pro objekt \"%Q\" ze třídy %Q: vlastnost je "
+#~ "indexovaná, ale ve skutečnosti neexistuje"
+
+#~ msgid ""
+#~ "Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+#~ "property is indexed and defined but the returned variant is not valid"
+#~ msgstr ""
+#~ "Nelze nalézt vlastnost \"%Q\" pro objekt \"%Q\" ze třídy %Q: vlastnost je "
+#~ "indexovaná a definovaná, ale vrácená hodnota je neplatná"
+
+#~ msgid ""
+#~ "The property is of type %s but the supplied argument can't be converted "
+#~ "to that type (expecting \"%s\")"
+#~ msgstr ""
+#~ "Vlastnost je typu %s , ale argument nemůže být zkonvertován na tento typ "
+#~ "(očekáváno \"%s\")"
+
+#~ msgid ""
+#~ "A pixmap object, an image_id or an image file path is required for this "
+#~ "property"
+#~ msgstr ""
+#~ "Pixmapový objekt, image_id nebo cesta k souboru obrázku je třeba pro tuto "
+#~ "vlastnost"
+
+#~ msgid "Can't find the requested image"
+#~ msgstr "Nelze nalézt požadovaný obrázek"
+
+#~ msgid ""
+#~ "Property \"%Q\" for object named \"%Q\" of class %Q has an unsupported "
+#~ "data type"
+#~ msgstr ""
+#~ "Vlastnost \"%Q\" pro objekt \"%Q\" ze třídy %Q má nepodporovaný datový typ"
+
+#~ msgid "Cannot find object function $%Q for object named \"%Q\" of class %Q"
+#~ msgstr "Nelze nalézt objektovou funkci $%Q pro objekt \"%Q\" ze třídy %Q"
+
+#~ msgid ""
+#~ "Cannot find object function $%Q::%Q for object named \"%Q\" of class %Q"
+#~ msgstr ""
+#~ "Nelze nalézt objektovou funkci $%Q::%Q pro objekt \"%Q\" ze třídy %Q"
+
+#, fuzzy
+#~ msgid ""
+#~ "Cannot call internal object function $%Q (for object named \"%Q\" of "
+#~ "class %Q) from this context"
+#~ msgstr "Nelze nalézt objektovou funkci $%Q pro objekt \"%Q\" ze třídy %Q"
+
+#~ msgid "Found character '%q' (unicode %x) where a slash '/' was expected"
+#~ msgstr "Nalezen znak '%q' (unicode %x) na místě, kde lomítko '/' chybělo"
+
+#~ msgid ""
+#~ "Unexpected end of command in binding operation, at least two slashes are "
+#~ "missing"
+#~ msgstr ""
+#~ "Neočekávaný konec příkazu ve vázací operaci, minimálně dvě lomítka chybí"
+
+#~ msgid ""
+#~ "Unexpected end of command in binding operation, at least one slash is "
+#~ "missing"
+#~ msgstr ""
+#~ "Neočekávaný konec příkazu ve vázací operaci, minimálně jedno lomítko "
+#~ "schází"
+
+#~ msgid "Unknown binding operation '%Q'"
+#~ msgstr "Neznámá vázací operace '%Q'"
+
+#~ msgid "Missing right side operand for the binding operator '=~'"
+#~ msgstr "Chybí pravý operand pro vázací operátor '=~'"
+
+#~ msgid "Trailing garbage ignored after operator '++'"
+#~ msgstr "Ignorován odpad za operátorem '++'"
+
+#~ msgid "Missing right operand for operator '+='"
+#~ msgstr "Chybí pravý operand pro operátor '+='"
+
+#~ msgid "Trailing garbage ignored after operator '--'"
+#~ msgstr "Ignorován odpad za operátorem '--'"
+
+#~ msgid "Missing right operand for operator '-='"
+#~ msgstr "Chybí pravý operand pro operátor '-='"
+
+#~ msgid "Missing right operand for operator '<<='"
+#~ msgstr "Chybí pravý operand pro operátor '<<='"
+
+#~ msgid "Missing right operand for operator '<<'"
+#~ msgstr "Chybí pravý operand pro operátor '<<'"
+
+#~ msgid "Missing right operand for operator '<,'"
+#~ msgstr "Chybí pravý operand pro operátor '<,'"
+
+#~ msgid "Missing right operand for operator '>>='"
+#~ msgstr "Chybí pravý operand pro operátor '>>='"
+
+#~ msgid "Missing right operand for operator '.='"
+#~ msgstr "Chybí pravý operand pro operátor '.='"
+
+#~ msgid "Missing right operand for operator '"
+#~ msgstr "Chybí pravý operand pro operátor '"
+
+#~ msgid "='"
+#~ msgstr "='"
+
+#~ msgid "Unknown operator"
+#~ msgstr "Neznámý operátor"
+
+#~ msgid "Unexpected (and senseless) read-only data evaluation"
+#~ msgstr "Neočekávané (a nesmyslné) vyhodnocení dat jen pro čtení"
+
+#~ msgid "Syntax error: confused by earlier errors: bailing out"
+#~ msgstr "Chyba v syntaxi: zmaten předchozími chybami: vyskakuji"
+
+#~ msgid ""
+#~ "Unexpected end of script after a variable reference: expected operator"
+#~ msgstr "Neočekávaný konec skriptu po referenci proměnné: očekáván operátor"
+
+#~ msgid ""
+#~ "Unexpected character '%q' (unicode %x) after a void function call: end of "
+#~ "instruction expected"
+#~ msgstr ""
+#~ "Neočekávaný znak '%q' (unicode %x) za voláním void funkce: očekáván konec "
+#~ "instrukce"
+
+#~ msgid "Unexpected character '%q' (unicode %x)"
+#~ msgstr "Neočekávaný znak '%q' (unicode %x)"
+
+#~ msgid "Invalid pitch value: using default"
+#~ msgstr "Neplatná výška: použita výchozí"
+
+#~ msgid "Invalid duration value: using default"
+#~ msgstr "Neplatná doba trvání: použita výchozí"
+
+#, fuzzy
+#~ msgid "No button with type %Q named %Q"
+#~ msgstr "Žádné tlačítko s typem %s pojmenované %s"
+
+#~ msgid "Can't delete a null object reference"
+#~ msgstr "Nelze smazat objet s null referencí"
+
+#~ msgid "Can't delete an inexisting object"
+#~ msgstr "Nelze smazat neexistující objekt"
+
+#, fuzzy
+#~ msgid "Inexisting popup \"%Q\""
+#~ msgstr "Neexistující popup \"%s\""
+
+#, fuzzy
+#~ msgid "The menu item with id \"%Q\" does not exist in popup \"%Q\""
+#~ msgstr "Položka menu s id \"%s\" neexistuje v popupu \"%s\""
+
+#~ msgid ""
+#~ "The argument of the -w switch did not evaluate to a valid window id: "
+#~ "using default"
+#~ msgstr "Argument přepínače -w neurčoval id platného okna: používám výchozí"
+
+#~ msgid ""
+#~ "The argument of the i switch did not evaluate to a number: using default"
+#~ msgstr "Argument přepínače i neurčoval číslo: používám výchozí"
+
+#~ msgid "Invalid color-set specification, using default"
+#~ msgstr "Neplatné určení barevného schémata, použito výchozí"
+
+#~ msgid "Window '%s' not found, using current one"
+#~ msgstr "Okno '%s' nenalezeno, použito jedno současné"
+
+#~ msgid "Timer '%Q' has a broken callback handler: killing the timer"
+#~ msgstr "Časovač '%Q' má poškozený callback handler: ukončuji časovač"
+
+#~ msgid "Invalid data type for parameter \"%s\""
+#~ msgstr "Nesprávný datový typ pro parametr \"%s\""
+
+#~ msgid "found empty string where type '%s' was expected"
+#~ msgstr "nalezen prázdný řetězec, byl očekáván typ '%s'"
+
+#~ msgid "found string value \"%Q\" where type '%s' was expected"
+#~ msgstr "nalezena hodnota řetězce \"%Q\" namísto očekávaného typu '%s'"
+
+#~ msgid "found type %Q where type '%s' was expected"
+#~ msgstr "nalezen typ %Q namísto očekávaného typu '%s'"
+
+#~ msgid "Missing non-optional parameter \"%s\""
+#~ msgstr "Chybí nevolitelný parametr \"%s\""
+
+#~ msgid "found empty string while a non empty one was expected"
+#~ msgstr "nalezen prázdný řetězec, když byl očekáván neprázdný"
+
+#~ msgid ""
+#~ "found signed integer \"%d\" where type 'unsigned integer' was expected"
+#~ msgstr ""
+#~ "nalezen signed integer \"%d\" namísto očekávaného typu 'unsigned integer'"
+
+#~ msgid "[KVS]%c Warning: %Q"
+#~ msgstr "[KVS]%c Výstraha: %Q"
+
+#~ msgid "[KVS]%c Compilation Error: %Q"
+#~ msgstr "[KVS]%c Chyba kompilace: %Q"
+
+#~ msgid "[KVS]%c Runtime Error: %Q"
+#~ msgstr "[KVS]%c Runtime chyba: %Q"
+
+#~ msgid "[KVS] in script context \"%Q\""
+#~ msgstr "[KVS] v kontextu skriptu \"%Q\""
+
+#~ msgid "[KVS] in script context \"%Q\", %Q"
+#~ msgstr "[KVS] v kontextu skriptu \"%Q\", %Q"
+
+#~ msgid "[KVS] Code listing:"
+#~ msgstr "[KVS] Výpis kódu:"
+
+#~ msgid "[KVS] Window:"
+#~ msgstr "[KVS] Okno:"
+
+#~ msgid "[KVS] Destroyed window with pointer %x"
+#~ msgstr "[KVS] Smazáno okno s ukazatelem %x"
+
+#~ msgid "[KVS] Call stack:"
+#~ msgstr "[KVS] Výpis zásobníku:"
+
+#~ msgid "There are no extended scope variables in this scope"
+#~ msgstr "V tomto rozsahu nejsou žádné rozšířené proměnné rozsahu"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of command buffer while looking for the \"perl.end\" "
+#~ "statement"
+#~ msgstr ""
+#~ "Neočekávaný konec bufferu při hledání uzavírací ')' v příkazu 'for'"
+
+#~ msgid "Trailing garbage at the end of the break command: ignored"
+#~ msgstr "Připojený odpad na konci ukončovacího příkazu: ignorován"
+
+#~ msgid "The 'unset' command needs a variable list"
+#~ msgstr "Příkaz 'unset' vyžaduje seznam proměnných"
+
+#~ msgid "Found character %q (unicode %x) where a variable was expected"
+#~ msgstr "Nalezen znak %q (unicode %x), kde byla očekávána proměnná"
+
+#~ msgid "'unset' command used without a variable list"
+#~ msgstr "příkaz 'unset' použitý bez seznamu promenných"
+
+#~ msgid "The 'global' command needs a variable list"
+#~ msgstr "Příkazy, které jsou 'globální' vyžadují seznam proměnných"
+
+#~ msgid ""
+#~ "Found character %q (unicode %x) where an open parenthesis was expected"
+#~ msgstr "Nalezen znak %q (unicode %x) na místě očekávaného začátku závorky"
+
+#~ msgid "Unexpected end of buffer in class definition"
+#~ msgstr "Neočekávaný konec bufferu v definici třídy"
+
+#~ msgid "Found character %q (unicode %x) where a function name was expected"
+#~ msgstr "Nalezen znak '%q' (unicode %x) na místě očekávaného názvu funkce"
+
+#~ msgid "Unexpected end of buffer in function parameter list reminder"
+#~ msgstr "Neočekávaný konec bufferu v parametru funkce"
+
+#, fuzzy
+#~ msgid "The while command needs an expression enclosed in parenthesis"
+#~ msgstr "Příkaz while vyžaduje výraz uzavřený v závorkách"
+
+#~ msgid ""
+#~ "The last while command in the buffer has no conditional instructions: "
+#~ "it's senseless"
+#~ msgstr ""
+#~ "Poslední příkaz while v bufferu neměl instrukce podmínky: je nesmyslný"
+
+#~ msgid ""
+#~ "Unexpected end of script while looking for the instruction block of the "
+#~ "while command"
+#~ msgstr ""
+#~ "Neočekávaný konec skriptu při zjišťování instrukčního bloku příkazu while"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of command after the 'do' command block: expected 'while' "
+#~ "keyword"
+#~ msgstr ""
+#~ "Neočekávaný konec příkazu za blokem příkazu 'do' : očekáván 'while' příkaz"
+
+#~ msgid "Found character %q (unicode %x) where a 'while' keyword was expected"
+#~ msgstr ""
+#~ "Nalezen znak %q (unicode %x) na místě, kde je očekáváno klíčové slovo "
+#~ "'while'"
+
+#, fuzzy
+#~ msgid ""
+#~ "The 'while' block of the 'do' command needs an expression enclosed in "
+#~ "parenthesis"
+#~ msgstr "Blok 'while' příkazu 'do' vyžaduje výraz uzavřený v závorkách"
+
+#~ msgid "Garbage string after the expression in 'do' command: ignored"
+#~ msgstr "Řetězec s odpadem za výrazem v příkazu 'do' : ignorováno"
+
+#, fuzzy
+#~ msgid "The 'if' command needs an expression enclosed in parenthesis"
+#~ msgstr "Příkaz 'if' vyžaduje výraz uzavřený v závorkách"
+
+#~ msgid ""
+#~ "The last if command in the buffer has no conditional instructions: it's "
+#~ "senseless"
+#~ msgstr "Poslední if příkaz v bufferu nemá instrukce podmínky: je nesmyslný"
+
+#~ msgid ""
+#~ "Unexpected end of script while looking for the instruction block of the "
+#~ "if command"
+#~ msgstr "Neočekávaný konec skriptu při hledání bloku instrukcí příkazu if"
+
+#~ msgid ""
+#~ "Unexpected end of buffer while looking for the closing ')' in the 'for' "
+#~ "command"
+#~ msgstr ""
+#~ "Neočekávaný konec bufferu při hledání uzavírací ')' v příkazu 'for'"
+
+#, fuzzy
+#~ msgid "The 'for' command needs an expression enclosed in parenthesis"
+#~ msgstr "Příkaz 'for' vyžaduje výraz uzavřený v závorkách"
+
+#~ msgid ""
+#~ "Found char %q (unicode %x) while looking for the terminating ')' in 'for' "
+#~ "command"
+#~ msgstr ""
+#~ "Nalezen znak %q (unicode %x) při hledání uzavírací ')' ve 'for' příkazu"
+
+#~ msgid "Empty infinite 'for' loop: fix the script"
+#~ msgstr "Prázdná neurčená smyčka 'for' : opravte skript"
+
+#, fuzzy
+#~ msgid "The 'foreach' command needs an expression enclosed in parenthesis"
+#~ msgstr "Příkaz 'foreach' vyžaduje výraz uzavřený v závorkách"
+
+#~ msgid ""
+#~ "The 'foreach' command expects a writeable iteration variable as first "
+#~ "parameter"
+#~ msgstr ""
+#~ "Příkaz 'foreach' očekává zapisovatelnou iterační proměnnou jako první "
+#~ "parametr"
+
+#~ msgid ""
+#~ "Found character '%q' (unicode %x) where '%' or '$' was expected: see /"
+#~ "help foreach for the command syntax"
+#~ msgstr ""
+#~ "Nalezen znak '%q' (unicode %x), kde bylo očekáváno '%' nebo '$' : "
+#~ "koukněte na /help foreach pro syntaxi příkazu"
+
+#~ msgid "Unexpected function call as 'foreach' iteration variable"
+#~ msgstr "Neočekávané volání funkce jako 'foreach' iterační proměnné"
+
+#~ msgid "Unexpected read-only variable as 'foreach' iteration variable"
+#~ msgstr "Neočekávaná proměnná jen pro čtení jako 'foreach' iterační proměnná"
+
+#~ msgid ""
+#~ "Unexpected end of 'foreach' parameters: at least one iteration data "
+#~ "argument must be given"
+#~ msgstr ""
+#~ "Neočekávaný konec 'foreach' parametrů: alespoň jeden iterační data "
+#~ "argument musí být zadán"
+
+#~ msgid ""
+#~ "The 'foreach' command expects a comma separated list of iteration data "
+#~ "items after the first parameter"
+#~ msgstr ""
+#~ "Příkaz 'foreach' očekává čárkou oddělený seznam iteračních datových "
+#~ "položek za prvním parametrem"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found empty 'foreach' execution block: maybe you need to fix your script ?"
+#~ msgstr "Prázdný 'foreach' spouštěcí blok: opravte skript"
+
+#, fuzzy
+#~ msgid "The 'switch' command needs an expression enclosed in parenthesis"
+#~ msgstr "Příkaz 'switch' vyžaduje výraz uzavřený v závorkách"
+
+#~ msgid "Unexpected end of buffer in switch condition block"
+#~ msgstr "Neočekávaný konec bufferu v bloku podmínky přepínače"
+
+#~ msgid ""
+#~ "Found character %q (unicode %x) where a 'case','match','regexp','default' "
+#~ "or 'break' label was expected"
+#~ msgstr ""
+#~ "Nalezen znak %q (unicode %x) na místě, kde je "
+#~ "'case','match','regexp','default' nebo 'break' návěstí očekáváno"
+
+#~ msgid ""
+#~ "Found 'break' label where a 'case','match','regexp' or 'default' label "
+#~ "was expected"
+#~ msgstr ""
+#~ "Nalezeno návěstí 'break' na místě, kde jsou 'case','match','regexp' nebo "
+#~ "'default' návěstí očekávána"
+
+#~ msgid ""
+#~ "Found token '%Q' where a 'case','match','regexp','default' or 'break' "
+#~ "label was expected"
+#~ msgstr ""
+#~ "Nalezen token '%Q' na místě, kde je 'case','match','regexp','default' "
+#~ "nebo 'break' návěstí očekáváno"
+
+#~ msgid "Senseless empty switch command: fix the script"
+#~ msgstr "Prázdný příkaz přepínače nedávající smysl: opravte skript"
+
+#~ msgid "Unexpected end of buffer in defpopup block"
+#~ msgstr "Neočekávaný konec buffer v bloku defpopup"
+
+#~ msgid ""
+#~ "Found character %q (unicode %x) where a "
+#~ "'prologue','separator','label','popup','item','extpopup' or 'epilogue' "
+#~ "label was expected"
+#~ msgstr ""
+#~ "Nalezen znak %q (unicode %x) na místě kde je "
+#~ "'prologue','separator','label','popup','item','extpopup' nebo 'epilogue' "
+#~ "návěstí očekáváno"
+
+#, fuzzy
+#~ msgid "Found empty prologue block: maybe you need to fix the script?"
+#~ msgstr "Nesmyslný prázdný blok úvodu: opravte skript"
+
+#, fuzzy
+#~ msgid "Found empty epilogue block: maybe you need to fix the script?"
+#~ msgstr "Nesmyslný prázdný blok závěru: opravte skript"
+
+#~ msgid ""
+#~ "Unexpected empty <text> field in label parameters. See /help defpopup for "
+#~ "the syntax"
+#~ msgstr ""
+#~ "Neočekávané prázdné pole <text> v parametrech návěstí. Koukněte na /help "
+#~ "defpopup pro syntaxi"
+
+#~ msgid ""
+#~ "Unexpected empty <text> field in extpopup parameters. See /help defpopup "
+#~ "for the syntax"
+#~ msgstr ""
+#~ "Neočekávané prázdné pole <text> v extpopup parametrech. Koukněte na /help "
+#~ "defpopup pro syntaxi"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found empty instruction for popup item: maybe you need to fix the script?"
+#~ msgstr "Nesmyslná prázdná instrukce pro položku popupu: opravte skript"
+
+#~ msgid ""
+#~ "Unexpected empty <name> field in extpopup parameters. See /help defpopup "
+#~ "for the syntax"
+#~ msgstr ""
+#~ "Neočekávané prázdné pole <name> v extpopup parametrech. Koukněte na /help "
+#~ "defpopup pro syntaxi"
+
+#~ msgid ""
+#~ "Found token '%Q' where a "
+#~ "'prologue','separator','label','popup','item','extpopup' or 'epilogue' "
+#~ "label was expected"
+#~ msgstr ""
+#~ "Nalezen token '%Q' na místě kde "
+#~ "'prologue','separator','label','popup','item','extpopup' nebo 'epilogue' "
+#~ "návěstí bylo očekáváno"
+
+#, fuzzy
+#~ msgid "The 'defpopup' command needs an expression enclosed in parenthesis"
+#~ msgstr "Příkaz 'defpopup' vyžaduje výraz uzavřený v závorkách"
+
+#, fuzzy
+#~ msgid "Module command call failed: can't load the module '%Q': %Q"
+#~ msgstr "Volání příkazu modulu selhalo: nelze načíst modul '%Q'"
+
+#~ msgid ""
+#~ "Module command call failed: the module '%Q' doesn't export a command "
+#~ "named '%Q'"
+#~ msgstr "Volání příkazu modulu selhalo: modul '%Q' neexportoval příkaz '%Q'"
+
+#, fuzzy
+#~ msgid "Received ping from \r!s\r%Q\r (PING %Q), replied pong"
+#~ msgstr "Obdržen ping od \r!s\r%s\r (PING %s), odezva pong"
+
+#~ msgid "Received pong from \r!s\r%s\r (PONG %s)"
+#~ msgstr "Obdržen pong od \r!s\r%s\r (PONG %s)"
+
+#~ msgid "Server ERROR: %Q"
+#~ msgstr "Serverová CHYBA: %Q"
+
+#~ msgid "Missing channel parameter in join message"
+#~ msgstr "Chybí parametr kanálu v join zprávě"
+
+#~ msgid "Received a join message for an unknown channel, possible desync"
+#~ msgstr "Obdržena join zpráva z neznámého kanálu, možná desychronizace"
+
+#~ msgid ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r [implicit +%c umode "
+#~ "change]"
+#~ msgstr ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] přišel do \r!c\r%Q\r [implicit +%c umode změna]"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] přišel do \r!c\r%Q\r"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just joined \r!c\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] zrovna přišel do \r!c\r%Q\r"
+
+#~ msgid "Received a part message for an unknown channel, possible desync"
+#~ msgstr "Obdržena part zpráva z neznámého kanálu, možná desynchronizace"
+
+#~ msgid "You have left channel \r!c\r%Q\r"
+#~ msgstr "Odešel jste z kanálu \r!c\r%Q\r"
+
+#~ msgid "You have left channel \r!c\r%Q\r: %Q"
+#~ msgstr "Odešel jste z kanálu \r!c\r%Q\r: %Q"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r: %Q"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] odešel z \r!c\r%Q\r: %Q"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] odešel z \r!c\r%Q\r"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r: %Q"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] již odešel z \r!c\r%Q\r: %Q"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] již odešel z \r!c\r%Q\r"
+
+#~ msgid "Netsplit detected: %s"
+#~ msgstr "Detekován Netsplit: %s"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] opustil IRC: %Q"
+
+#~ msgid "Received a kick message for an unknown channel, possible desync"
+#~ msgstr ""
+#~ "Obdržena vykopávací zpráva z neznámého kanálu, možná desynchronizace"
+
+#~ msgid ""
+#~ "You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr ""
+#~ "Byl jste vykopnut z \r!c\r%Q\r a udělal to \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid "Attempting to rejoin \r!c\r%Q\r..."
+#~ msgstr "Zkouší se znovu přijít do \r!c\r%Q\r..."
+
+#~ msgid ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has been kicked from \r!c\r%Q\r by \r!n\r%Q\r "
+#~ "[%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] byl vykopnut z \r!c\r%Q\r a udělal to \r!n\r%Q"
+#~ "\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just been kicked from \r!c\r%Q\r by \r!n\r%"
+#~ "Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] byl zrovna vykopnut z \r!c\r%Q\r a udělal to "
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid ""
+#~ "The following message appears to be encrypted, but the crypto engine "
+#~ "failed to decode it: %s"
+#~ msgstr ""
+#~ "Následující zpráva vypadá jako zašifrovaná, ale šifrovací nástroj selhal "
+#~ "v jejím dekódování: %s"
+
+#~ msgid "Ignoring PRIVMSG from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "Ignoruje se PRIVMSG od \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid ""
+#~ "Spam privmsg from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%s"
+#~ "\")"
+#~ msgstr ""
+#~ "Spamová soukromá zpráva od \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (obsahují "
+#~ "spamslovo \"%s\")"
+
+#~ msgid "Ignoring NOTICE from %Q (%Q)"
+#~ msgstr "Ignoruje se PRIVMSG od %Q (%Q)"
+
+#~ msgid "NickServ requests authentication, executing scheduled command"
+#~ msgstr "NickServ požaduje autorizaci, provádí se plánovaný příkaz"
+
+#~ msgid ""
+#~ "The scheduled NickServ identification command appears to be broken, "
+#~ "please change the setting"
+#~ msgstr ""
+#~ "Naplánovaný NickServ identifikační příkaz vypadá jako poškozený, prosím "
+#~ "změňte nastavení"
+
+#~ msgid ""
+#~ "Spam notice from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%Q\")"
+#~ msgstr ""
+#~ "Spam oznámení od \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (obsahuje spamslovo \"%Q"
+#~ "\")"
+
+#~ msgid "Received a topic message for an unknown channel, possible desync"
+#~ msgstr "Obdržena zpráva o tématu z neznámého kanálu, možná desynchronizace"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has changed topic to \"%Q%c\""
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] změnil téma na \"%Q%c\""
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] je nyní znám jako \r!n\r%Q\r"
+
+#~ msgid "You have changed your nickname to %Q"
+#~ msgstr "Změnili jste si přezdívku na %Q"
+
+#~ msgid ""
+#~ "The target of this query was lost and has been found when \r!n\r%Q\r [%Q@"
+#~ "\r!h\r%Q\r] changed his nickname to \r!n\r%Q\r"
+#~ msgstr ""
+#~ "Cíl tohoto query se ztratil a byl nalezen když \r!n\r%Q\r [%Q@\r!h\r%Q\r] "
+#~ "změnil svou přezdívku na \r!n\r%Q\r"
+
+#~ msgid ""
+#~ "The recent nickname change from \r!n\r%Q\r to \r!n\r%Q\r caused a query "
+#~ "collision: merging output"
+#~ msgstr ""
+#~ "Poslední změna přezdívky z \r!n\r%Q\r na \r!n\r%Q\r způsobila query "
+#~ "kolizi: spojuji výstup"
+
+#~ msgid "End of merged output"
+#~ msgstr "Konec spojeného výstupu"
+
+#~ msgid "autojoining"
+#~ msgstr "autopříchod"
+
+#~ msgid "double-click the channel name to join"
+#~ msgstr "dvojklikni na názvu kanálu pro příchod"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] invites you to channel \r!c\r%Q\r (%Q)"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] tě zve do kanálu \r!c\r%Q\r (%Q)"
+
+#~ msgid "Received an invite message directed to another nick, possible desync"
+#~ msgstr "Obdržena pozývací zpráva pro jinou přezdívku, možná desynchronizace"
+
+#~ msgid "WALLOPS from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "WALLOPS od \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid "You have set user mode %s"
+#~ msgstr "Nastavil jste si uživatelský mód %s"
+
+#~ msgid "Received a mode change for an unknown channel, possible desync"
+#~ msgstr "Obdržena změna módu pro neznámý kanál, možná desynchronizace"
+
+#~ msgid "%Q [%Q@%Q] has set channel key to \"\r!m-k\r%Q\r\""
+#~ msgstr "%Q [%Q@%Q] nastavil klíč kanálu na \"\r!m-k\r%Q\r\""
+
+#~ msgid "%Q [%Q@%Q] has unset the channel key"
+#~ msgstr "%Q [%Q@%Q] zrušil klíč kanálu"
+
+#~ msgid "%Q [%Q@%Q] has set channel \r!m-l\rlimit to %Q\r"
+#~ msgstr "%Q [%Q@%Q] nastavil kanálu \r!m-l\rlimit na %Q\r"
+
+#~ msgid "%Q [%Q@%Q] has unset the channel limit"
+#~ msgstr "%Q [%Q@%Q] zrušil limit kanálu"
+
+#~ msgid "%Q [%Q@%Q] has set mode %c%c \r!n\r%Q\r"
+#~ msgstr "%Q [%Q@%Q] nastavil mód %ce \r!m%ce\r%Q\r"
+
+#~ msgid "%Q [%Q@%Q] has set mode %c%c \r!m%c%c\r%Q\r"
+#~ msgstr "%Q [%Q@%Q] nastavil mód %c%c \r!m%c%c\r%Q\r"
+
+#~ msgid "%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"
+#~ msgstr "%Q [%Q@%Q] nastavil kanálu \r!m%c%c\rmód %c%c\r"
+
+#~ msgid "%Q [%Q@%Q] has set mode %s %Q"
+#~ msgstr "%Q [%Q@%Q] nastavil mód %s %Q"
+
+#~ msgid "%Q [%Q@%Q] has set channel mode %s"
+#~ msgstr "%Q [%Q@%Q] nastavil mód kanálu %s"
+
+#~ msgid ""
+#~ "[Server parser]: Encountered problems while parsing the following message:"
+#~ msgstr ""
+#~ "[Server parser]: Vyskytly se problémy během parsování následující zprávy:"
+
+#~ msgid "[Server parser]: [%s][%s] %Q"
+#~ msgstr "[Server parser]: [%s][%s] %Q"
+
+#~ msgid "[Server parser]: %s"
+#~ msgstr "[Server parser]: %s"
+
+#~ msgid "The following CTCP reply has unrecognized target %Q"
+#~ msgstr "Následující CTCP odezva má neočekávaný cíl %Q"
+
+#~ msgid "Channel CTCP"
+#~ msgstr "Kanálové CTCP"
+
+#~ msgid "%Q %S reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "%Q %S odezva od %Q [%Q@%Q]: %Q"
+
+#~ msgid "The following CTCP request has unrecognized target %Q"
+#~ msgstr "Následující CTCP požadavek má neočekávaný cíl %Q"
+
+#~ msgid ""
+#~ "%Q %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignored (flood limit "
+#~ "exceeded)"
+#~ msgstr ""
+#~ "%Q %S požadavek od %Q [%Q@%Q] (%Q), ignorován (překročen limit zahlcení)"
+
+#~ msgid "ignored (unrecognized)"
+#~ msgstr "ingnorován (nepřípustný)"
+
+#~ msgid "ignored"
+#~ msgstr "ignorován"
+
+#~ msgid "replied"
+#~ msgstr "odpovězeno"
+
+#~ msgid "%Q %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+#~ msgstr "%Q %S požadavek od %Q [%Q@%Q] (%Q), %Q"
+
+#~ msgid "The following CTCP PING reply has unrecognized target \"%Q\""
+#~ msgstr "Následující CTCP PING odezva má neočekávaný cíl \"%Q\""
+
+#~ msgid ""
+#~ "The following CTCP PING reply has a broken time identifier \"%S\", don't "
+#~ "trust the displayed time"
+#~ msgstr ""
+#~ "Náledující CTCP PING odezva má poškozený identifikátor času \"%S\", "
+#~ "nevěřte zobrazenému času"
+
+#~ msgid "%Q PING reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sec %u msec"
+#~ msgstr "%Q PING odezva od %Q [%Q@%Q]: %u sek %u msek"
+
+#~ msgid "The following CTCP ACTION has unrecognized target %Q"
+#~ msgstr "Následující CTCP ACTION má neočekávaný cíl %Q"
+
+#~ msgid "CTCP ACTION from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "CTCP ACTION od %Q [%Q@%Q]: %Q"
+
+#~ msgid "Unable to add file offer for file %Q (File not readable?)"
+#~ msgstr "Nelze přidat do sdílení soubor %Q (Soubor je nečitelný?)"
+
+#~ msgid "Added %d sec file offer for file %Q (%Q) to recipient %Q"
+#~ msgstr "Přidána %d sek nabídka sdílení souboru %Q (%Q) pro příjemce %Q"
+
+#~ msgid "private"
+#~ msgstr "privátní"
+
+#~ msgid "channel notification:"
+#~ msgstr "oznámení kanálu:"
+
+#~ msgid "notification"
+#~ msgstr "oznamování"
+
+#~ msgid "%Q unsets avatar"
+#~ msgstr "%Q zrušil avatar"
+
+#~ msgid "%Q changes avatar to %s"
+#~ msgstr "%Q změnil avatar na %s"
+
+#~ msgid ""
+#~ ": No valid local copy of avatar available, requesting one (HTTP GET %s)"
+#~ msgstr ": Není dostupná platná kopie avataru, požaduje se (HTTP GET %s)"
+
+#~ msgid ""
+#~ ": No valid local copy of avatar available; failed to start an HTTP "
+#~ "transfer, ignoring"
+#~ msgstr ""
+#~ ": Není dostupná platná kopie avataru; selhalo spuštění HTTP přenosu, "
+#~ "ignoruji"
+
+#~ msgid ""
+#~ ": No valid local copy of avatar available, requesting one (DCC GET %s)"
+#~ msgstr ": Není dostupná lokální kopie avataru, požaduji (DCC GET %s)"
+
+#~ msgid ""
+#~ ": No valid local copy of avatar available; flood limit exceeded, ignoring"
+#~ msgstr ""
+#~ ": Není dostupná platná lokální kopie avataru; překročen limit zahlcení, "
+#~ "ignoruji"
+
+#~ msgid ": No valid local copy of avatar available, ignoring"
+#~ msgstr ": Není dostupná platná lokální kopie avataru, ignoruji"
+
+#~ msgid ": No such nickname in the user database, ignoring the change"
+#~ msgstr ": Žádná taková přezdívka v databázi, ignoruji změnu"
+
+#~ msgid "Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%S %S)"
+#~ msgstr "Ignoruje se DCC %S požadavek od %Q [%Q@%Q] (%S %S)"
+
+#~ msgid "Processing DCC %Q request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%S %S)"
+#~ msgstr ""
+#~ "Zpracovává se DCC %Q požadavek od \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%S %S)"
+
+#~ msgid "Unable to process the above request: Cannot load DCC module (%s)"
+#~ msgstr "Nelze zpracovat předchozí požadavek: Nelze načíst DCC modul (%s)"
+
+#~ msgid "Unable to process the above request: DCC module may be broken"
+#~ msgstr "Nelze zpracovat předchozí požadavek: DCC modul je možná poškozen"
+
+#~ msgid "Channel operators"
+#~ msgstr "Operátoři kanálu"
+
+#~ msgid "Voiced users"
+#~ msgstr "Uživatelé s voice"
+
+#~ msgid "Half-operators"
+#~ msgstr "Polo-operátoři"
+
+#~ msgid "Ban masks"
+#~ msgstr "Ban masky"
+
+#~ msgid "Color free (no ANSI colors)"
+#~ msgstr "Bez barev (žádné ANSI barvy)"
+
+#~ msgid "Ban exception masks"
+#~ msgstr "Masky vyjímek banů"
+
+#~ msgid "Invite exception masks or forbid /INVITE"
+#~ msgstr "Masky vyjímek pozvání nebo zákaz /INVITE"
+
+#~ msgid "Secret"
+#~ msgstr "Tajný"
+
+#~ msgid "Private"
+#~ msgstr "Soukromý"
+
+#~ msgid "Topic change restricted"
+#~ msgstr "Omezená změna téma"
+
+#~ msgid "Invite only"
+#~ msgstr "Jen na pozvání"
+
+#~ msgid "No external messages"
+#~ msgstr "Bez vnějších zpráv"
+
+#~ msgid "Anonymous or protected user"
+#~ msgstr "Anonymní nebo chráněný uživatel"
+
+#~ msgid "Quiet or channel owner"
+#~ msgstr "Tichý nebo vlastník kanálu"
+
+#~ msgid "Limited number of users"
+#~ msgstr "Limitovaný počet uživatelů"
+
+#~ msgid "Key"
+#~ msgstr "Klíč"
+
+#~ msgid "Moderated"
+#~ msgstr "Moderovaný"
+
+#~ msgid "Registered"
+#~ msgstr "Registrovaný"
+
+#~ msgid "Censor swear words"
+#~ msgstr "Cenzurovat nadávky"
+
+#~ msgid ""
+#~ "Impossible to speak and change nick if not authenticated with NickServ"
+#~ msgstr ""
+#~ "Nelze mluvit a měnit přezdívku pokud nejste autentifikováni s NickServ"
+
+#~ msgid "Impossible to change nick if not authenticated with NickServ"
+#~ msgstr "Není možné měnit přezdívku pokud nejste autentifikováni s NickServ"
+
+#~ msgid "Only registered nicks can join"
+#~ msgstr "Pouze registrovaní mohou přijít"
+
+#~ msgid "No kicks able (unless U-Line)"
+#~ msgstr "Není možné vykopnutí (dokud je U-Line)"
+
+#~ msgid "IRC-Op only channel"
+#~ msgstr "pouze IRC-Op kanál"
+
+#~ msgid "Server/Network/Tech Admin only channel"
+#~ msgstr "Server/Síť/Tech kanál jen pro Adminy"
+
+#~ msgid "Forbid /KNOCK"
+#~ msgstr "Zakázat /KNOCK"
+
+#~ msgid "Redirect on channel full"
+#~ msgstr "Přesměrovat při plném kanále"
+
+#~ msgid "Forbid channel CTCPs"
+#~ msgstr "Zakázat kanálové CTCP"
+
+#~ msgid "User-operators OR Auditorium: /NAMES and /WHO show only ops"
+#~ msgstr ""
+#~ "Uživatelé-operátoři NEBO Auditorium: /NAMES a /WHO zobrazí pouze operátory"
+
+#~ msgid "Unknown channel mode"
+#~ msgstr "Neznámý mód kanálu"
+
+#~ msgid ""
+#~ "One or more standard mode flags are missing in the server available "
+#~ "modes.\n"
+#~ "This is caused either by a non RFC1459-compliant IRC daemon or a broken "
+#~ "server reply.\n"
+#~ "Server umodes seem to be '%s' and channel modes seem to be '%s'.\n"
+#~ "Ignoring this reply and assuming that the basic set of modes is "
+#~ "available.\n"
+#~ "If you have strange problems, try changing the server."
+#~ msgstr ""
+#~ "Jeden nebo více standardních flagů módů chybí v dostupných serverových "
+#~ "módech.\n"
+#~ "To může být způsobeno ne RFC1459-kompatibilním IRC démonem nebo "
+#~ "poškozenou odezvou serveru.\n"
+#~ "Server umodes vypadají že jsou '%s' a módy kanálů vypadají že mohou být '%"
+#~ "s'.\n"
+#~ "Ignorujte tuto odezvu a předpokládejte, že základní módy budou fungovat.\n"
+#~ "Pokud budete mít nějaké problémy, zkuste změnit server."
+
+#~ msgid "Available user modes:"
+#~ msgstr "Dostupné módy uživatele:"
+
+#~ msgid "o: IRC operator (OPER)"
+#~ msgstr "o: IRC operátor (OPER)"
+
+#~ msgid "O: Local IRC operator (LOCOP)"
+#~ msgstr "O: Lokální IRC operátor (LOCOP)"
+
+#~ msgid "i: Invisible"
+#~ msgstr "i: Neviditelný"
+
+#~ msgid "w: Recipient for WALLOPS messages"
+#~ msgstr "w: Příjemce WALLOPS zpráv"
+
+#~ msgid ""
+#~ "r: User with restricted connection (or recipient for messages about "
+#~ "rejected bots)"
+#~ msgstr ""
+#~ "r: Uživatel s omezeným připojením (nebo příjemce zpráv o odmítnutých "
+#~ "botech)"
+
+#~ msgid "s: Recipient for server notices"
+#~ msgstr "s: Příjemce oznámení serveru"
+
+#~ msgid "z: Recipient for oper wallop messages"
+#~ msgstr "z: Příjemce pro oper wallop zprávy"
+
+#~ msgid "c: Recipient for cconn messages"
+#~ msgstr "c: Příjemce pro cconn zprávy"
+
+#~ msgid "k: Recipient for server kill messages"
+#~ msgstr "k: Příjemce pro kill zprávy serveru"
+
+#~ msgid "f: Recipient for full server notices"
+#~ msgstr "f: Příjemce pro plná oznámení serveru"
+
+#~ msgid "y: Spy :)"
+#~ msgstr "y: Špión :)"
+
+#~ msgid "d: Obscure 'DEBUG' flag"
+#~ msgstr "d: Skrytý 'DEBUG' flag"
+
+#~ msgid "n: Recipient for nick changes"
+#~ msgstr "n: Příjemce pro změny přezdívek"
+
+#~ msgid ": Unknown user mode"
+#~ msgstr ": Neznámý mód uživatele"
+
+#~ msgid "Available channel modes:"
+#~ msgstr "Dostupné módy kanálu:"
+
+#~ msgid ""
+#~ "Server %Q version %S supporting user modes '%S' and channel modes '%S'"
+#~ msgstr "Server %Q verze %S podporuje módy uživatelů '%S' a módy kanálů '%S'"
+
+#~ msgid "This server supports the WATCH notify list method, it will be used"
+#~ msgstr ""
+#~ "Tento server podporuje WATCH metodu seznamu oznamování, bude použita"
+
+#~ msgid "The current network is %Q"
+#~ msgstr "Současná síť je %Q"
+
+#~ msgid "This server supports the CODEPAGE command, it will be used"
+#~ msgstr "Tento server podporuje CODEPAGE příkaz, bude použit"
+
+#~ msgid "This server supports: %s"
+#~ msgstr "Tento server podporuje: %s"
+
+#~ msgid "End of NAMES for \r!c\r%Q\r"
+#~ msgstr "Konec NAMES z \r!c\r%Q\r"
+
+#~ msgid "%c\r!s\r%s\r%c: %Q"
+#~ msgstr "%c\r!s\r%s\r%c: %Q"
+
+#~ msgid "Names for \r!c\r%Q\r: %Q"
+#~ msgstr "Jména v \r!c\r%Q\r: %Q"
+
+#~ msgid "(unknown)"
+#~ msgstr "(neznámý)"
+
+#~ msgid "Channel topic is: %Q"
+#~ msgstr "Téma kanálu je: %Q"
+
+#~ msgid "Topic for \r!c\r%Q\r is: %Q"
+#~ msgstr "Téma pro \r!c\r%Q\r je: %Q"
+
+#~ msgid "No channel topic is set"
+#~ msgstr "Nenastaveno téma"
+
+#~ msgid "No topic is set for channel \r!c\r%Q\r"
+#~ msgstr "Žádné téma nebylo nastaveno pro kanál \r!c\r%Q\r"
+
+#~ msgid "Topic was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r on %Q"
+#~ msgstr "Téma nastavil \r!n\r%Q\r!%Q@\r!h\r%Q\r v %Q"
+
+#~ msgid "Topic was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+#~ msgstr "Téma nastavil \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+
+#~ msgid "Topic for \r!c\r%Q\r was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r on %Q"
+#~ msgstr "Téma pro \r!c\r%Q\r nastavil \r!n\r%Q\r!%Q@\r!h\r%Q\r v %Q"
+
+#~ msgid "Topic for \r!c\r%Q\r was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+#~ msgstr "Téma pro \r!c\r%Q\r nastavil \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+
+#~ msgid "Channel mode for \r!c\r%Q\r is %s"
+#~ msgstr "Mód kanálu pro \r!c\r%Q\r je %s"
+
+#~ msgid "User mode for \r!n\r%Q\r is %s"
+#~ msgstr "Uživatelský mód \r!n\r%Q\r je %s"
+
+#~ msgid "End of channel %Q for \r!c\r%Q\r"
+#~ msgstr "Konec kánalu %Q pro \r!c\r%Q\r"
+
+#~ msgid "ban list"
+#~ msgstr "seznam banů"
+
+#~ msgid "invite list"
+#~ msgstr "seznam pozvání"
+
+#~ msgid "ban exception list"
+#~ msgstr "seznam vyjímek banů"
+
+#~ msgid "%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"
+#~ msgstr "%Q pro \r!c\r%Q\r: \r!m-%c\r%Q\r (nastavil %Q v %Q)"
+
+#~ msgid "Ban listing"
+#~ msgstr "Seznam banů"
+
+#~ msgid "Invite listing"
+#~ msgstr "Seznam pozvání"
+
+#~ msgid "Ban exception listing"
+#~ msgstr "Seznam vyjímek banů"
+
+#~ msgid ""
+#~ "WHO entry for %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cChannel%c: \r!c\r%Q\r, %"
+#~ "cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAway%c: %Q, %cReal "
+#~ "name%c: %Q"
+#~ msgstr ""
+#~ "WHO záznam pro %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cKanál%c: \r!c\r%Q\r, %"
+#~ "cServer%c: \r!s\r%Q\r, %cHopů%c: %d, %cFlagy%c: %Q, %cPryč%c: %Q, %"
+#~ "cSkutečné jméno%c: %Q"
+
+#~ msgid "End of WHO list for %Q"
+#~ msgstr "Konec WHO seznamu pro %Q"
+
+#~ msgid ""
+#~ "Something really weird is happening: the server is refusing all the login "
+#~ "nicknames..."
+#~ msgstr ""
+#~ "Něco opravdu divného se děje: server odmítá všechny přihlašovací "
+#~ "přezdívky..."
+
+#~ msgid ""
+#~ "The server is refusing all the login nicknames: giving up, you must send "
+#~ "the nickname manually"
+#~ msgstr ""
+#~ "Server odmítá všechny přihlašovací přezdívky: musíte nastavit přezdívku "
+#~ "ručně"
+
+#~ msgid "No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."
+#~ msgstr "Nelze se přihlásit jako '\r!n\r%Q\r' (%d: %Q), zkouší se '%Q'..."
+
+#~ msgid "%c\r!n\r%Q\r%c is away: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c je pryč: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+#~ msgstr "%c\r!n\r%Q\r%c je %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#~ msgid "%c\r!n\r%Q\r%c's real name: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c skutečné jméno: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c was %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+#~ msgstr "%c\r!n\r%Q\r%c byl %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#~ msgid "%c\r!n\r%Q\r%c's real name was: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c měl skutečné jméno: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c's channels: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c je v kanálech: %Q"
+
+#~ msgid "Received a broken RPL_WHOISIDLE, can't evaluate the idle time"
+#~ msgstr "Obdrženo poškozené RPL_WHOISIDLE, nelze spočítat dobu nečinnosti"
+
+#~ msgid "%c\r!n\r%Q\r%c's idle time: %ud %uh %um %us"
+#~ msgstr "%c\r!n\r%Q\r%c nečinnost: %ud %uh %um %us"
+
+#~ msgid "%c\r!n\r%Q\r%c's signon time: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c se připojil: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c's server: \r!s\r%Q\r - %Q"
+#~ msgstr "%c\r!n\r%Q\r%c užívá server: \r!s\r%Q\r - %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c is authenticated as %Q"
+#~ msgstr "%c\r!n\r%Q\r%c byl autentifikován jako %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c's info: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c info: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c WHOIS info from \r!s\r%Q\r"
+#~ msgstr "%c\r!n\r%Q\r%c WHOIS info z \r!s\r%Q\r"
+
+#~ msgid "%c\r!n\r%Q\r%c WHOWAS info from \r!s\r%Q\r"
+#~ msgstr "%c\r!n\r%Q\r%c WHOWAS info z \r!s\r%Q\r"
+
+#~ msgid "Can't evaluate creation time"
+#~ msgstr "Nelze spočítat čas vytvoření"
+
+#~ msgid "Channel was created at %Q"
+#~ msgstr "Kanál byl vytvořen v %Q"
+
+#~ msgid "Channel \r!c\r%Q\r was created at %Q"
+#~ msgstr "Kanál \r!c\r%Q\r byl vytvořen v %Q"
+
+#~ msgid "USERHOST info: %Q"
+#~ msgstr "USERHOST info: %Q"
+
+#~ msgid "Channel list begin: channel, users, topic"
+#~ msgstr "Začátek seznamu kanálů: kanál, uživatelů, téma"
+
+#~ msgid "List: %Q"
+#~ msgstr "Seznam %Q"
+
+#~ msgid "End of LIST"
+#~ msgstr "Konec SEZNAMU"
+
+#~ msgid "Link: %Q"
+#~ msgstr "Link: %Q"
+
+#~ msgid "End of LINKS"
+#~ msgstr "Konec LINKS"
+
+#~ msgid "[Leaving away status after %ud %uh %um %us]: %Q"
+#~ msgstr "[Opouštíte pryč stav po %ud %uh %um %us]: %Q"
+
+#~ msgid "[Leaving away status]: %Q"
+#~ msgstr "[Opouští pryč stav]: %Q"
+
+#~ msgid "Restoring pre-away nickname (%Q)"
+#~ msgstr "Obnovena původní přezdívka (%Q)"
+
+#~ msgid "[Entering away status]: %Q"
+#~ msgstr "[Vstupujete do pryč stavu]: %Q"
+
+#~ msgid "Setting away nickname (%Q)"
+#~ msgstr "Nastavena pryč přezdívka (%Q)"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's server info: %s"
+#~ msgstr "%c\r!n\r%Q\r%c info: %Q"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's administrator is %s"
+#~ msgstr "%c\r!n\r%Q\r%c info: %Q"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's contact adress is %s"
+#~ msgstr "%c\r!n\r%Q\r%c používá kódovou stránku %Q: %Q"
+
+#, fuzzy
+#~ msgid "\r!n\r%Q\r invited %Q into channel %Q"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] tě zve do kanálu \r!c\r%Q\r (%Q)"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's information:"
+#~ msgstr "%c\r!n\r%Q\r%c info: %Q"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's time is %Q"
+#~ msgstr "%c\r!s\r%s\r%c: %Q"
+
+#, fuzzy
+#~ msgid "Cannot sent to channel: %Q"
+#~ msgstr "Žádné téma nebylo nastaveno pro kanál \r!c\r%Q\r"
+
+#, fuzzy
+#~ msgid "Cannot sent text to channel %Q: %Q"
+#~ msgstr "Odešel jste z kanálu \r!c\r%Q\r: %Q"
+
+#, fuzzy
+#~ msgid "Cannot sent to channel"
+#~ msgstr "Toto okno není kanál"
+
+#, fuzzy
+#~ msgid "Cannot sent text to channel %Q"
+#~ msgstr "Aktualizace pryč stavu pro kanál %Q"
+
+#~ msgid "Your encoding is now %Q"
+#~ msgstr "Vaše kódování je nyní %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c's codepage is %Q: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c používá kódovou stránku %Q: %Q"
+
+#~ msgid "Your user mode is %s"
+#~ msgstr "Váš uživatelský mód je %s"
+
+#~ msgid "Hostname resolution aborted"
+#~ msgstr "Zjištění hostitele přerušeno"
+
+#~ msgid "Attempting %Q to %Q (%Q) on port %u"
+#~ msgstr "Zkouší se %Q k %Q (%Q) na portu %u"
+
+#~ msgid "secure connection"
+#~ msgstr "zabezpečené spojení"
+
+#~ msgid "Attempting to 'bounce' on proxy %s on port %u (protocol %s)"
+#~ msgstr "Zkouší se 'bounce' na proxy %s na portu %u (protokol %s)"
+
+#~ msgid "Using cached proxy IP address (%s)"
+#~ msgstr "Použita cache proxy IP adresa (%s)"
+
+#~ msgid "Unable to look up the IRC proxy hostname: Can't start the DNS slave"
+#~ msgstr "Nelze zjistit hostitel IRC proxy : Nelze spustit DNS slave"
+
+#~ msgid "Resuming direct server connection"
+#~ msgstr "Obnovuje se přímé spojení se serverem"
+
+#~ msgid "Looking up the proxy hostname (%s)..."
+#~ msgstr "Zjišťuje se hostitel proxy (%s)..."
+
+#~ msgid "Can't find the proxy IP address: %Q"
+#~ msgstr "Nelze nalézt IP adresu proxy: %Q"
+
+#~ msgid "Proxy hostname resolved to %s"
+#~ msgstr "Proxy hostitel zjištěn jako %s"
+
+#~ msgid "Proxy %s has a nickname: %s"
+#~ msgstr "Proxy %s má přezdívku: %s"
+
+#~ msgid "Using cached server IP address (%s)"
+#~ msgstr "Použita cache IP adresa serveru (%s)"
+
+#~ msgid "Unable to look up the server hostname: Can't start the DNS slave"
+#~ msgstr "Nelze zjistit hostitele serveru: Nelze spustit DNS slave"
+
+#~ msgid "Looking up the server hostname (%s)..."
+#~ msgstr "Zjišťuje se hostitel serveru (%s)..."
+
+#~ msgid "Can't find the server IP address: %Q"
+#~ msgstr "Nelze nalézt IP adresu serveru: %Q"
+
+#~ msgid "If this server is an IPv6 one, try /server -i %s"
+#~ msgstr "Pokud je tento server IPv6, zkuste /server -i %s"
+
+#~ msgid "Server hostname resolved to %s"
+#~ msgstr "Server hostitel zjištěn jako %s"
+
+#~ msgid "Real hostname for %s is %s"
+#~ msgstr "Skutečný hostitel pro %s je %s"
+
+#~ msgid "Server %s has a nickname: %s"
+#~ msgstr "Server %s měl přezdívku: %s"
+
+#~ msgid "The specified bind address (%Q) is not valid"
+#~ msgstr "Zadaná vázací adresa (%Q) je neplatná"
+
+#~ msgid ""
+#~ "The specified bind address (%Q) is not valid (the interface it refers to "
+#~ "might be down)"
+#~ msgstr ""
+#~ "Zadaná vázací adresa (%Q) je neplatná (rozhraní na které odkazuje je "
+#~ "nejspíš vypnuté)"
+
+#~ msgid "The system-wide IPv6 bind address (%s) is not valid"
+#~ msgstr "Systémová IPv6 vázací adresa (%s) je neplatná"
+
+#~ msgid ""
+#~ "The system-wide IPv6 bind address (%s) is not valid (the interface it "
+#~ "refers to might be down)"
+#~ msgstr ""
+#~ "Systémová IPv6 vázací adresa (%s) je neplatná (rozhraní na které ukazuje "
+#~ "může být vypnuté)"
+
+#~ msgid "The system-wide IPv4 bind address (%s) is not valid"
+#~ msgstr "Systémová IPv4 vázací adresa (%s) je neplatná"
+
+#~ msgid ""
+#~ "The system-wide IPv4 bind address (%s) is not valid (the interface it "
+#~ "refers to might be down)"
+#~ msgstr ""
+#~ "Systémová IPv4 vázací adresa (%s) je neplatná (rozhraní na které ukazuje "
+#~ "může být vypnuté)"
+
+#~ msgid "Configure Servers..."
+#~ msgstr "Konfigurovat servery..."
+
+#~ msgid ""
+#~ "Allows you to configure the servers and eventually to connect to them"
+#~ msgstr "Umožní konfigurovat servery a případně se poté připojit"
+
+#~ msgid "Manage Addons..."
+#~ msgstr "Spravovat rozšíření..."
+
+#~ msgid "Allows you to manage the script-based addons"
+#~ msgstr "Umožňuje správu skriptových rozšíření"
+
+#~ msgid "Configure Registered Users..."
+#~ msgstr "Konfigurovat Registrované uživatele..."
+
+#~ msgid "Shows a dialog that allows editing the registered user entries"
+#~ msgstr "Zobrazí dialog pro úpravy záznamů registrovaných uživatelů"
+
+#~ msgid "Configure Identity..."
+#~ msgstr "Konfigurovat identitu..."
+
+#~ msgid "Allows you to configure nickname, username, avatar etc..."
+#~ msgstr "Umožňuje nastavit přezdívku, uživatelské jméno, avatar atd..."
+
+#~ msgid "Show SocketSpy..."
+#~ msgstr "Zobrazit Soket špióna..."
+
+#~ msgid "Shows a window that allows monitoring the socket traffic"
+#~ msgstr "Zobrazí okno, které umožní monitorovat soketový provoz"
+
+#~ msgid "Get Network Links"
+#~ msgstr "Zjistit Linky sítě"
+
+#~ msgid "Shows a window that allows viewing the network links"
+#~ msgstr "Zobrazí okno, které umožní zjistit linky sítě"
+
+#~ msgid "Get Channel List"
+#~ msgstr "Stáhnout seznam kanálů"
+
+#~ msgid "Shows a window that allows listing the network channels"
+#~ msgstr "Zobrazí okno, které umožní procházení seznamem kanálů sítě"
+
+#~ msgid "Configure KVIrc..."
+#~ msgstr "Konfigurovat KVIrc..."
+
+#~ msgid "Shows the general options dialog"
+#~ msgstr "Zobrazí dialog hlavních předvoleb"
+
+#~ msgid "Customize Toolbars..."
+#~ msgstr "Upravit nástrojové lišty..."
+
+#~ msgid "Shows a window that allows editing script toolbars"
+#~ msgstr "Zobrazí okno, které umožní úpravy nástrojových lišt skriptu"
+
+#~ msgid "Join Channels..."
+#~ msgstr "Přijít do kanálů..."
+
+#~ msgid "Shows a dialog that allows you joing channels"
+#~ msgstr "Zobrazí dialog, který umožňuje příchod do kanálů"
+
+#~ msgid "Edit Actions..."
+#~ msgstr "Upravit Akce..."
+
+#~ msgid "Shows a window that allows editing actions"
+#~ msgstr "Zobrazí okno umožňující úpravy akcí"
+
+#~ msgid "Edit Aliases..."
+#~ msgstr "Upravit Aliasy..."
+
+#~ msgid "Shows a window that allows editing aliases"
+#~ msgstr "Zobrazí okno pro úpravy aliasů"
+
+#~ msgid "Edit Events..."
+#~ msgstr "Upravit Události..."
+
+#~ msgid "Shows a window that allows editing script events"
+#~ msgstr "Zobrazí okno pro úpravy událostí pro skripty"
+
+#~ msgid "Edit Popups..."
+#~ msgstr "Upravit Popupy..."
+
+#~ msgid "Shows a window that allows editing popup menus"
+#~ msgstr "Zobrazí okno, které umožní úpravy vyskakovacích (popup) menu"
+
+#~ msgid "Edit Raw Events..."
+#~ msgstr "Upravit Raw události..."
+
+#~ msgid "Shows a window that allows editing raw scripting events"
+#~ msgstr "Zobrazí okno, které umžní úpravy událostí raw ve skriptech"
+
+#~ msgid "New Script Tester"
+#~ msgstr "Tester nového skriptu"
+
+#~ msgid "Creates an embedded editor for long scripts"
+#~ msgstr "Vytvoří vestavěný editor pro dlouhé skripty"
+
+#~ msgid "Execute Script..."
+#~ msgstr "Spustit skript..."
+
+#~ msgid "Allows executing a KVS script from file"
+#~ msgstr "Umožní spouštění KVS skriptu ze souboru"
+
+#~ msgid "Help Index"
+#~ msgstr "Obsah Nápovědy"
+
+#~ msgid "Shows the documentation index"
+#~ msgstr "Zobrazí obsah nápovědy a dokumentace"
+
+#~ msgid "Subscribe to the Mailing List"
+#~ msgstr "Přihlásit se do Mailing listu"
+
+#~ msgid "Allows subscribing to the KVIrc mailing list"
+#~ msgstr "Dovolí přihlášení se do mailing listu KVIrc"
+
+#~ msgid "KVIrc WWW"
+#~ msgstr "KVIrc WWW"
+
+#~ msgid "Opens the KVIrc homepage"
+#~ msgstr "Otevře Domovskou stránku KVIrc"
+
+#~ msgid "Cascade windows"
+#~ msgstr "Okna přes sebe"
+
+#~ msgid "Arranges the MDI windows in a maximized-cascade fashion"
+#~ msgstr "Uspořádá MDI okna maximalizovaně přes sebe"
+
+#~ msgid "Tiles the MDI windows with the currently selected tile method"
+#~ msgstr "Uspořádá okna podle zvolené metody vedle sebe"
+
+#~ msgid "Minimize all windows"
+#~ msgstr "Minimalizovat všechna okna"
+
+#~ msgid "Minimized all the currently visible MDI windows"
+#~ msgstr "Minimalizuje všechny viditelné MDI okna"
+
+#~ msgid "New IRC Context"
+#~ msgstr "Nový IRC kontext"
+
+#~ msgid "Creates a new IRC context console"
+#~ msgstr "Vytvoří konzoli nového IRC kontextu"
+
+#~ msgid "Quit KVIrc"
+#~ msgstr "Ukončit KVIrc"
+
+#~ msgid "Quits KVIrc closing all the current connections"
+#~ msgstr "Ukončí KVIrc uzavřením všech současných spojení"
+
+#~ msgid "IRC Context Display"
+#~ msgstr "IRC Kontext zobrazení"
+
+#~ msgid "Shows a small display with IRC context informations"
+#~ msgstr "Zobrazí malou obrazovku s informacemi IRC kontextu"
+
+#~ msgid "Acts as a separator for other items: performs no action"
+#~ msgstr "Chová se jako oddělovač položek: neprovádí žádnou akci"
+
+#~ msgid "Connect/Disconnect"
+#~ msgstr "Spojení/Odpojení"
+
+#~ msgid ""
+#~ "Allows you to connect to a server or to terminate the current connection"
+#~ msgstr "Umožní připojení k serveru nebo zrušení současného spojení"
+
+#~ msgid "Connect"
+#~ msgstr "Připojit"
+
+#~ msgid "Abort Connection"
+#~ msgstr "Přerušit spojení"
+
+#~ msgid "Join Channel"
+#~ msgstr "Přijít do kanálu"
+
+#~ msgid "Shows a popup menu that allows quickly selecting a channel to join"
+#~ msgstr "Zobrazí dialog, který umožňuje rychlý příchod do kanálů"
+
+#~ msgid "Change Nickname"
+#~ msgstr "Změnit přezdívku"
+
+#~ msgid "Shows a popup menu that allows quickly changing the nickname"
+#~ msgstr "Zobrazí dialog, který umožňuje ryhlou změnu přezdívky"
+
+#~ msgid "Connect To"
+#~ msgstr "Připojit k"
+
+#~ msgid "Shows a popup menu that allows quickly connecting to a server"
+#~ msgstr "Zobrazí dialog, který umožňuje ryhlé připojení k serveru"
+
+#~ msgid "Shows a popup menu that allows quickly changing user modes"
+#~ msgstr "Zobrazí dialog, který umožňuje ryhlou změnu uživatelských módů"
+
+#~ msgid "Server Notices (+s)"
+#~ msgstr "Oznámení serveru (+s)"
+
+#~ msgid "Away/Back"
+#~ msgstr "Pryč/Návrat"
+
+#~ msgid "Allows entering and leaving away state"
+#~ msgstr "Umožní vstup a opuštění pryč módu"
+
+#~ msgid "Enter Away Mode"
+#~ msgstr "Vstoupit do Pryč módu"
+
+#~ msgid "Leave Away Mode"
+#~ msgstr "Opustit Pryč mód"
+
+#~ msgid "Irc Tools"
+#~ msgstr "IRC Nástroje"
+
+#~ msgid "Shows a popup menu with some IRC Tools"
+#~ msgstr "Zobrazit popup menu s IRC nástroji"
+
+#~ msgid "Irc Actions"
+#~ msgstr "IRC Akce"
+
+#~ msgid "Shows a popup menu with some IRC Actions"
+#~ msgstr "Zobrazit popup menu s IRC akcemi"
+
+#~ msgid "Failed to set the encoding to %Q: mapping not available."
+#~ msgstr "Selhalo nastavení kódování na %Q: mapování není dostupné."
+
+#~ msgid "Changed text encoding to %Q"
+#~ msgstr "Kódování textu změněno na %Q"
+
+#~ msgid "Connection to server established"
+#~ msgstr "Spojení se serverem navázáno"
+
+#~ msgid "[LINK WARNING]: Socket message truncated to 512 bytes."
+#~ msgstr "[LINK UPOZORNĚNÍ]: Soket zpráva byla oříznuta na 512 bajtů."
+
+#~ msgid ""
+#~ "The server seems to support the WATCH notify list method, will try to use "
+#~ "it"
+#~ msgstr ""
+#~ "Server vypadá, že podporuje WATCH metodu oznamování, zkusí se použít"
+
+#~ msgid "Can't resolve local host address, using user supplied one (%Q)"
+#~ msgstr ""
+#~ "Nelze zjistit adresu lokálního hostitete, bude použita adresa zadaná "
+#~ "uživatelem (%Q)"
+
+#~ msgid "Can't resolve local host address, using default 127.0.0.1"
+#~ msgstr "Nelze zjistit adresu lokálního hostitele, použita výchozí 127.0.0.1"
+
+#~ msgid "Local host address is %Q"
+#~ msgstr "Adresa lokálního hostitele je %Q"
+
+#~ msgid "The server seems to have changed the idea about the local hostname"
+#~ msgstr "Server vypadá, že změnil názor na lokálního hostitele"
+
+#~ msgid ""
+#~ "You're probably using a broken bouncer or maybe something weird is "
+#~ "happening on the IRC server"
+#~ msgstr ""
+#~ "Buď používáte poškozený bouncer nebo se stalo něco divného na IRC serveru"
+
+#~ msgid ""
+#~ "Here goes your \"broken bouncer hack\": The server has changed the "
+#~ "hostname but I'll ignore the IP address change"
+#~ msgstr ""
+#~ "Tady je váš \"broken bouncer hack\": Server změnil hostitele, ale "
+#~ "ignoruje změnu IP adresy"
+
+#~ msgid "The local IP address as seen by the IRC server is %Q"
+#~ msgstr "Lokální IP adresa, jak ji vidí IRC server, je %Q"
+
+#~ msgid "Can't start the DNS slave thread"
+#~ msgstr "Nelze spustit DNS slave vlákno"
+
+#~ msgid "Unable to resolve the local hostname as seen by the IRC server: %Q"
+#~ msgstr ""
+#~ "Nelze zjistit jméno lokálního hostitele, tak jak jej vidí IRC server: %Q"
+
+#~ msgid "Looking up the local hostname as seen by the IRC server (%Q)"
+#~ msgstr ""
+#~ "Zjišťuje se jméno lokálního hostitele, tak jak jej vidí IRC server (%Q)"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unable to resolve the local hostname as seen by the IRC server: %Q, using "
+#~ "previously resolved %Q"
+#~ msgstr ""
+#~ "Nelze zjistit jméno lokálního hostitele, tak jak jej vidí IRC server: %Q"
+
+#~ msgid "Local hostname as seen by the IRC server resolved to %s"
+#~ msgstr "Jméno lokálního hostitele, tak jak jej vidí IRC server, je %s"
+
+#~ msgid "Using server specific username (%Q)"
+#~ msgstr "Použito uživatelské jméno pro tento server (%Q)"
+
+#~ msgid "Using network specific username (%Q)"
+#~ msgstr "Použito uživatelské jméno pro tuto síť (%Q)"
+
+#~ msgid "Using server specific nickname (%Q)"
+#~ msgstr "Použita přezdívka pro tento server (%Q)"
+
+#~ msgid "Using network specific nickname (%Q)"
+#~ msgstr "Použita přezdívka pro tuto síť (%Q)"
+
+#~ msgid "Using server specific real name (%Q)"
+#~ msgstr "Použito skutečné jméno pro tento server (%Q)"
+
+#~ msgid "Using network specific real name (%Q)"
+#~ msgstr "Použito skutečné jméno pro tuto síť (%Q)"
+
+#~ msgid "Logging in as %Q!%Q :%Q"
+#~ msgstr "Přihlášení jako %Q!%Q :%Q"
+
+#~ msgid "Sending %s as password"
+#~ msgstr "Posílá se %s jako heslo"
+
+#~ msgid "Executing scheduled network specific \"on connect\" commands"
+#~ msgstr "Spouští se příkazy naplánované \"po připojení\" pro síť"
+
+#~ msgid "Executing scheduled server specific \"on connect\" commands"
+#~ msgstr "Spouští se příkazy naplánované \"po připojení\" pro server"
+
+#~ msgid ""
+#~ "The server refused the suggested nickname (%s) and named you %s instead"
+#~ msgstr "Server odmítl vaši přezdívku (%s) a pojmenoval vás namísto toho %s"
+
+#~ msgid "Login operations complete, happy ircing!"
+#~ msgstr "Přihlašovací operace hotovy, veselé ircování!"
+
+#~ msgid "Executing scheduled network specific \"on login\" commands"
+#~ msgstr "Spouští se naplánované příkazy \"při přihlašování\" pro síť"
+
+#~ msgid "Executing scheduled server specific \"on login\" commands"
+#~ msgstr "Spouští se naplánované příkazy \"při přihlašování\" pro server"
+
+#~ msgid "Setting configured user mode"
+#~ msgstr "Nastavení uživatelského módu"
+
+#~ msgid "Auto-joining network specific channels"
+#~ msgstr "Auto-příchod do kanálů pro tuto síť"
+
+#~ msgid "Auto-joining server specific channels"
+#~ msgstr "Auto-příchod do kanálů pro tento server"
+
+#~ msgid "Updating away state for channel %Q"
+#~ msgstr "Aktualizace pryč stavu pro kanál %Q"
+
+#~ msgid ""
+#~ "Ops...it looks like I can't load modules on this sytem.\n"
+#~ "I have been looking for the %s library but I haven't been able to load "
+#~ "it\n"
+#~ "due to the following error: \"%s\"\n"
+#~ "Aborting."
+#~ msgstr ""
+#~ "Oops...vypadá to, že nemůžu načíst moduly v tomto systému.\n"
+#~ "Hledám %s knihovnu, ale nemůžu ji načíst\n"
+#~ "kvůli následující chybě: \"%s\"\n"
+#~ "Přerušuji."
+
+#~ msgid ""
+#~ "Ops...it looks like you have a broken distribution.\n"
+#~ "The setup module does not export the \"setup_begin\" function.\n"
+#~ "Aborting!"
+#~ msgstr ""
+#~ "Oops...to vypadá, že máte poškozenou distribuci.\n"
+#~ "Setup modul neexportuje funkci \"setup_begin\".\n"
+#~ "Přerušuji!"
+
+#~ msgid "Setup aborted"
+#~ msgstr "Nastavení přerušeno"
+
+#~ msgid ""
+#~ "Ops...it looks like you have a broken distribution.\n"
+#~ "The setup module does not export the \"setup_finish\" function.\n"
+#~ "Trying to continue anyway..."
+#~ msgstr ""
+#~ "Oops...to vypadá, že máte poškozenou distribuci.\n"
+#~ "Setup modul neexportuje funkci \"setup_finish\".\n"
+#~ "Zkouším pokračovat i tak..."
+
+#, fuzzy
+#~ msgid ""
+#~ "Failed writing the kvirc home directory path to %Q.\n"
+#~ "You will need to do it manually , otherwise KVirc will restart with\n"
+#~ "the setup!"
+#~ msgstr ""
+#~ "Nelze zapisovat domovský adresář kvirc do %s.\n"
+#~ "Musíte to udělat ručně , jinak KVirc bude restartovat\n"
+#~ "setup!"
+
+#~ msgid "Normal text"
+#~ msgstr "Normální text"
+
+#~ msgid "Selection"
+#~ msgstr "Výběr"
+
+#~ msgid "Highlighted text"
+#~ msgstr "Zvýrazněný text"
+
+#~ msgid "URL foreground"
+#~ msgstr "URL popředí"
+
+#~ msgid "Link overlay foreground"
+#~ msgstr "Překrývání popředí linku"
+
+#~ msgid "Parser error"
+#~ msgstr "Parser chyba"
+
+#~ msgid "Parser warning"
+#~ msgstr "Parser upozornění"
+
+#~ msgid "Host lookup result"
+#~ msgstr "Výsledek zjištění hostitele"
+
+#~ msgid "Socket message"
+#~ msgstr "Soket zpráva"
+
+#~ msgid "Socket warning"
+#~ msgstr "Soket varování"
+
+#~ msgid "Socket error"
+#~ msgstr "Soket chyba"
+
+#~ msgid "System error"
+#~ msgstr "Systémová chyba"
+
+#~ msgid "Raw data to server"
+#~ msgstr "Raw data k serveru"
+
+#~ msgid "Connection status"
+#~ msgstr "Stav spojení"
+
+#~ msgid "System warning"
+#~ msgstr "Varování systému"
+
+#~ msgid "System message"
+#~ msgstr "Systémová zpráva"
+
+#~ msgid "Unhandled server reply"
+#~ msgstr "Neobsloužená odezva serveru"
+
+#~ msgid "Server information"
+#~ msgstr "Informace serveru"
+
+#~ msgid "Server Message of the Day"
+#~ msgstr "Zpráva dne serveru"
+
+#~ msgid "Server ping"
+#~ msgstr "Serverový ping"
+
+#~ msgid "Join message"
+#~ msgstr "Příchodová zpráva"
+
+#~ msgid "Unrecognized/broken message"
+#~ msgstr "Neočekávaná/poškozená zpráva"
+
+#~ msgid "Topic message"
+#~ msgstr "Téma"
+
+#~ msgid "Own private message"
+#~ msgstr "Vlastní soukromá zpráva"
+
+#~ msgid "Channel private message"
+#~ msgstr "Soukromá zpráva v kanále"
+
+#~ msgid "Query private message"
+#~ msgstr "Soukromá zpráva na query"
+
+#~ msgid "CTCP reply"
+#~ msgstr "CTCP odezva"
+
+#~ msgid "CTCP request replied"
+#~ msgstr "CTCP požadavek zodpovězen"
+
+#~ msgid "CTCP request ignored"
+#~ msgstr "CTCP požadavek ignorován"
+
+#~ msgid "CTCP request flood warning"
+#~ msgstr "Upozornění CTCP zahlcení"
+
+#~ msgid "CTCP request unknown"
+#~ msgstr "Neznámý CTCP požadavek"
+
+#~ msgid "User action"
+#~ msgstr "Uživatelské akce"
+
+#~ msgid "Avatar change"
+#~ msgstr "Změna avataru"
+
+#~ msgid "Split message"
+#~ msgstr "Split zpráva"
+
+#~ msgid "Quit on netsplit message"
+#~ msgstr "Opouštěcí zpráva při netsplitu"
+
+#~ msgid "Nick changes"
+#~ msgstr "Změny přezdívek"
+
+#~ msgid "+o mode change"
+#~ msgstr "+o změna módu"
+
+#~ msgid "-o mode change"
+#~ msgstr "-o změna módu"
+
+#~ msgid "+v mode change"
+#~ msgstr "+v změna módu"
+
+#~ msgid "-v mode change"
+#~ msgstr "-v změna módu"
+
+#~ msgid "Multiple user mode change"
+#~ msgstr "Hromadná změna módu"
+
+#~ msgid "Channel key change"
+#~ msgstr "Změna klíče kanálu"
+
+#~ msgid "Channel limit change"
+#~ msgstr "Změna limitu kanálu"
+
+#~ msgid "+b mode change"
+#~ msgstr "+b změna módu"
+
+#~ msgid "-b mode change"
+#~ msgstr "-b změna módu"
+
+#~ msgid "+e mode change"
+#~ msgstr "+e změna módu"
+
+#~ msgid "-e mode change"
+#~ msgstr "-e změna módu"
+
+#~ msgid "+I mode change"
+#~ msgstr "+l změna módu"
+
+#~ msgid "-I mode change"
+#~ msgstr "-l změna módu"
+
+#~ msgid "Multiple channel mode change"
+#~ msgstr "Hromadná změna módu kanálu"
+
+#~ msgid "Who reply"
+#~ msgstr "Odpověď who"
+
+#~ msgid "DCC request"
+#~ msgstr "DCC požadavek"
+
+#~ msgid "DCC message"
+#~ msgstr "DCC zpráva"
+
+#~ msgid "DCC error"
+#~ msgstr "DCC chyba"
+
+#~ msgid "Nickname problem"
+#~ msgstr "Problém přezdívky"
+
+#~ msgid "Whois user reply"
+#~ msgstr "Whois odpověď"
+
+#~ msgid "Whois channels reply"
+#~ msgstr "Whois odpověď kanálů"
+
+#~ msgid "Whois idle reply"
+#~ msgstr "Whois idle odezva"
+
+#~ msgid "Whois server reply"
+#~ msgstr "Whois server odezva"
+
+#~ msgid "Whois other reply"
+#~ msgstr "Whois ostatní odezva"
+
+#~ msgid "Channel creation time reply"
+#~ msgstr "Odezva času vytvoření kanálu"
+
+#~ msgid "Notify list joins"
+#~ msgstr "Oznamovat příchody"
+
+#~ msgid "Notify list leaves"
+#~ msgstr "Oznamovat odchody"
+
+#~ msgid "Own encrypted private message"
+#~ msgstr "Vlastní šifrovaná soukromá zpráva"
+
+#~ msgid "Channel encrypted private message"
+#~ msgstr "Šifrovaná zpráva kanálu"
+
+#~ msgid "Query encrypted private message"
+#~ msgstr "Šifrovaná osobní zpráva na query"
+
+#~ msgid "DCC chat message"
+#~ msgstr "DCC chat zpráva"
+
+#~ msgid "Encrypted DCC chat message"
+#~ msgstr "Šifrovaná DCC chat zpráva"
+
+#~ msgid "Login operations completed"
+#~ msgstr "Přihlašovací operace dokončeny"
+
+#~ msgid "Kick action"
+#~ msgstr "Vykopnutí"
+
+#~ msgid "Links reply"
+#~ msgstr "Odezva linků"
+
+#~ msgid "Spam report"
+#~ msgstr "Hlášení spamu"
+
+#~ msgid "ICQ message"
+#~ msgstr "ICQ zpráva"
+
+#~ msgid "ICQ user-message"
+#~ msgstr "ICQ zpráva uživatele"
+
+#~ msgid "Outgoing ICQ user-message"
+#~ msgstr "Odchozí ICQ zpráva uživatele"
+
+#~ msgid "Channel notice"
+#~ msgstr "Kanálové oznámení"
+
+#~ msgid "Encrypted channel notice"
+#~ msgstr "Šifrované oznámení kanálu"
+
+#~ msgid "Query notice"
+#~ msgstr "Query oznámení"
+
+#~ msgid "Encrypted query notice"
+#~ msgstr "Šifrované query oznámení"
+
+#~ msgid "Server notice"
+#~ msgstr "Oznámení serveru"
+
+#~ msgid "Halfop mode change"
+#~ msgstr "Změna módu na poloop"
+
+#~ msgid "Unknown CTCP reply"
+#~ msgstr "Neznámá CTCP odezva"
+
+#~ msgid "NickServ message"
+#~ msgstr "NickServ zpráva"
+
+#~ msgid "ChanServ message"
+#~ msgstr "ChanServ zpráva"
+
+#~ msgid "Away message"
+#~ msgstr "Pryč zpráva"
+
+#~ msgid "Ident message"
+#~ msgstr "Ident zpráva"
+
+#~ msgid "Channel list message"
+#~ msgstr "Zpráva seznamu kanálů"
+
+#~ msgid "Half-deop mode change"
+#~ msgstr "Změna módu na polodeop"
+
+#~ msgid "Invite message"
+#~ msgstr "Pozývací zpráva"
+
+#~ msgid "Multimedia message"
+#~ msgstr "Multimediální zpráva"
+
+#~ msgid "Query trace message"
+#~ msgstr "Query sledovací zpráva"
+
+#~ msgid "Wallops message"
+#~ msgstr "Wallops zpráva"
+
+#~ msgid "Join error message"
+#~ msgstr "Připojit zprávu o chybě"
+
+#~ msgid "Broadcast private message"
+#~ msgstr "Vysílat soukromou zprávu"
+
+#~ msgid "Broadcast notice"
+#~ msgstr "Vysílat oznámení"
+
+#~ msgid "Am kicked"
+#~ msgstr "Jsem vykopnut"
+
+#~ msgid "Am op'd"
+#~ msgstr "Jsem opnut"
+
+#~ msgid "Am voiced"
+#~ msgstr "Dostal jsem voice"
+
+#~ msgid "Am deop'd"
+#~ msgstr "Jsem deopnut"
+
+#~ msgid "Am devoiced"
+#~ msgstr "Sebrali mi voice"
+
+#~ msgid "Am halfop'd"
+#~ msgstr "Jsem polopován"
+
+#~ msgid "Am de-halfop'd"
+#~ msgstr "Jsem polodeopován"
+
+#~ msgid "Ban matching my mask"
+#~ msgstr "Ban na moji masku"
+
+#~ msgid "Unban matching my mask"
+#~ msgstr "Ban na mojí masku odstraněn"
+
+#~ msgid "Ban exception matching my mask"
+#~ msgstr "Ban s výjimkou na mojí masku"
+
+#~ msgid "Ban unexception matching my mask"
+#~ msgstr "Ban s výjimkou na mojí masku odstraněn"
+
+#~ msgid "Invite exception matching my mask"
+#~ msgstr "Pozvánka s výjimkou na mojí masku"
+
+#~ msgid "Invite unexception matching my mask"
+#~ msgstr "Pozvánka bez výjimky na mojí masku"
+
+#~ msgid "Ignored user message"
+#~ msgstr "Ingorovaná zpráva uživatele"
+
+#~ msgid "Server statistics"
+#~ msgstr "Statistiky serveru"
+
+#~ msgid "SSL message"
+#~ msgstr "SSL zpráva"
+
+#~ msgid "Search"
+#~ msgstr "Hledat"
+
+#~ msgid "Generic success"
+#~ msgstr "Obecný úspěch"
+
+#~ msgid "Generic status"
+#~ msgstr "Obecný stav"
+
+#~ msgid "Generic verbose message"
+#~ msgstr "Obecná podrobná zpráva"
+
+#~ msgid "Generic warning"
+#~ msgstr "Obecné upozornění"
+
+#~ msgid "Generic error"
+#~ msgstr "Obecná chyba"
+
+#~ msgid "Generic critical error"
+#~ msgstr "Obecná kritická chyba"
+
+#~ msgid "Chan admin status set"
+#~ msgstr "Nastaven stav admin kanál"
+
+#~ msgid "Chan admin status unset"
+#~ msgstr "Zrušen stav admin kanál"
+
+#~ msgid "Own chan admin status set"
+#~ msgstr "Nastaven admin stav vlastního kanálu"
+
+#~ msgid "Own chan admin status unset"
+#~ msgstr "Zrušen admin stav vlastního kanálu"
+
+#~ msgid "Userop mode change"
+#~ msgstr "Změna uživatel-op módu"
+
+#~ msgid "User-deop mode change"
+#~ msgstr "Změna uživatel-deop módu"
+
+#~ msgid "Am userop'd"
+#~ msgstr "Jsem uživatel-opnut"
+
+#~ msgid "Am de-userop'd"
+#~ msgstr "Jsem uživatel-deopnut"
+
+#~ msgid "Verbose/Debug"
+#~ msgstr "Upovídaný/Ladění"
+
+#~ msgid "Chan owner status set"
+#~ msgstr "Nastaven stav vlastník kanálu"
+
+#~ msgid "Chan owner status unset"
+#~ msgstr "Zrušen stav vlastník kanálu"
+
+#~ msgid "Own chan owner status set"
+#~ msgstr "Nastaven stav vlastníka vlastního kanálu"
+
+#~ msgid "Own chan owner status unset"
+#~ msgstr "Zrušen stav vlastníka vlastního kanálu"
+
+#~ msgid "Server error"
+#~ msgstr "Serverová chyba"
+
+#~ msgid "Boolean options (1/0)"
+#~ msgstr "Booleovské možnosti (1/0)"
+
+#~ msgid "Rectangle options (x,y,width,height)"
+#~ msgstr "Možnosti obdélníku (x,y,šířka,výška)"
+
+#~ msgid "String options (string value)"
+#~ msgstr "Možnosti řetězce (hodnota řetězce)"
+
+#~ msgid "Color options (#RRGGBB)"
+#~ msgstr "Barevné možnosti (#RRGGBB)"
+
+#~ msgid "Mirccolor options (#RRGGBB)"
+#~ msgstr "Mirc barvy možnosti (#RRGGBB)"
+
+#~ msgid "Irc context color options (#RRGGBB)"
+#~ msgstr "Irc kontext barevné možnosti (#RRGGBB)"
+
+#~ msgid "Pixmap options (image path)"
+#~ msgstr "Možnosti obrázku (umístění obrázku)"
+
+#~ msgid "Unsigned integer options (unsigned integer constant)"
+#~ msgstr "Volby bezznaménkových integerů (bezznaménková integerová konstanta)"
+
+#~ msgid "Font options (family,pointsize,style,charset,weight,flags (biusf))"
+#~ msgstr ""
+#~ "Možnosti Fontu (rodina,velikost,styl,kódování,tloušťka,flagy (biusf))"
+
+#~ msgid "Message color options (image_id,foreground,background,logFlag (0/1))"
+#~ msgstr "Barevné možnosti zprávy (obrázek_id,popředí,pozadí,logFlag (0/1))"
+
+#~ msgid "String list options (comma separated list of strings)"
+#~ msgstr "Možnosti seznamu řetězce (čárkami oddělený seznam řetězců)"
+
+#~ msgid "Icon Table"
+#~ msgstr "Tabulka ikon"
+
+#~ msgid "%Q is on IRC"
+#~ msgstr "%Q je na IRC"
+
+#~ msgid "%Q has left IRC"
+#~ msgstr "%Q opustil IRC"
+
+#~ msgid "Notify list: No users to check for, quitting"
+#~ msgstr "Seznam Oznamování: Nevybráni uživatelé pro kontrolu, konec"
+
+#~ msgid ""
+#~ "Notify list: Timeout (%d sec) is too short, resetting to something more "
+#~ "reasonable (15 sec)"
+#~ msgstr ""
+#~ "Seznam Oznamování: Prodleva (%d sek) je příliš krátká, nastavuji na něco "
+#~ "více přijatelného (15 sek)"
+
+#~ msgid "Notify list: Notify list empty, quitting"
+#~ msgstr "Seznam Oznamování: Seznam je prázdný, konec"
+
+#~ msgid ""
+#~ "Notify list: ISON delay (%d sec) is too short, resetting to something "
+#~ "more reasonable (5 sec)"
+#~ msgstr ""
+#~ "Seznam Oznamování: ISON prodleva (%d sek) je příliš krátká, nastavuji na "
+#~ "něco více přijatelného (5 sek)"
+
+#~ msgid "Notify list: Checking for: %Q"
+#~ msgstr "Seznam Oznamování: Kontroluje se: %Q"
+
+#~ msgid ""
+#~ "Notify list: Hey! You've used ISON behind my back? (I might be confused "
+#~ "now...)"
+#~ msgstr ""
+#~ "Seznam Oznamování: Hej! Použili jste ISON bez mého vědomí? (Asi budu teď "
+#~ "zklamaný...)"
+
+#~ msgid "registration mask changed, or nickname is being used by someone else"
+#~ msgstr "registrační maska změněna, nebo přezdívku používá ještě někdo jiný"
+
+#~ msgid ""
+#~ "Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q"
+#~ "\r] does not match (registration mask does not match, or nickname is "
+#~ "being used by someone else)"
+#~ msgstr ""
+#~ "Seznam Oznamování:: \r!n\r%Q\r vypadá jako online, ale maska [%Q@\r!h\r%Q"
+#~ "\r] nesouhlasí (registrační maska nesouhlasí, nebo přezdívku používá "
+#~ "ještě někdo jiný)"
+
+#~ msgid ""
+#~ "Notify list: Unexpected inconsistency, registered user DB modified? "
+#~ "(restarting)"
+#~ msgstr ""
+#~ "Seznam Oznamování: Neočekáváná nekonzistence, databáze registrovaných "
+#~ "uživatelů upravována? (restartuji)"
+
+#~ msgid ""
+#~ "Notify list: Unexpected inconsistency, expected \r!n\r%Q\r in the "
+#~ "registered user DB"
+#~ msgstr ""
+#~ "Seznam Oznamování: Neočekávaná nekonzistence, očekáván \r!n\r%Q\r v "
+#~ "databázi registrovaných uživatelů"
+
+#~ msgid ""
+#~ "Notify list: USERHOST delay (%d sec) is too short, resetting to something "
+#~ "more reasonable (5 sec)"
+#~ msgstr ""
+#~ "Seznam Oznamování: USERHOST prodleva (%d sek) je příliš krátká, nastavuje "
+#~ "se na něco více přijatelného (5 sek)"
+
+#~ msgid "Notify list: Unexpected inconsistency, userhost list is empty!"
+#~ msgstr ""
+#~ "Seznam Oznamování: Neočekávaná nekonzistence, seznam userhost je prázdný!"
+
+#~ msgid "Notify list: Checking userhost for: %Q"
+#~ msgstr "Seznam Oznamování: Kontroluje se userhost: %Q"
+
+#~ msgid ""
+#~ "Notify list: Hey! You've used USERHOST behind my back? (I might be "
+#~ "confused now...)"
+#~ msgstr ""
+#~ "Seznam Oznamování:: Hej! Použili jste USERHOST bez mého vědomí? (Asi budu "
+#~ "teď zklamaný...)"
+
+#~ msgid "Notify list: Broken USERHOST reply from the server? (%s)"
+#~ msgstr "Seznam Oznamování: Poškozená USERHOST odezva od serveru? (%s)"
+
+#~ msgid ""
+#~ "Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST "
+#~ "reply was received, will recheck in the next loop"
+#~ msgstr ""
+#~ "Seznam Oznamovánít: \r!n\r%Q\r vypadá jako offline ještě před obdrženou "
+#~ "USERHOST odezvou, zkusíme zkontrolovat v další smyčce"
+
+#~ msgid "No users in the notify list"
+#~ msgstr "Žádní uživatelé nejsou v seznamu oznamování"
+
+#~ msgid "Notify list: Checking for:%Q"
+#~ msgstr "Seznam Oznamování: Kontroluje se: %Q"
+
+#~ msgid ""
+#~ "Notify list: Timeout (%d sec) is too short, resetting to something more "
+#~ "reasonable (5 sec)"
+#~ msgstr ""
+#~ "Seznam Oznamování: Prodleva (%d sek) je příliš krátká, nastavuji na něco "
+#~ "více přijatelnějšího (5 sek)"
+
+#~ msgid "Notify list: Adding watch entries for%Q"
+#~ msgstr "Seznam Oznamování: Přidány watch záznamy pro %Q"
+
+#~ msgid "watch entry listing requested by user"
+#~ msgstr "seznam watch požadován uživatelem"
+
+#~ msgid "possible watch list desync"
+#~ msgstr "možná desynchronizace watch seznamu"
+
+#~ msgid "registration mask changed or desync with the watch service"
+#~ msgstr "registrační maska změněna nebo desynchronizace s watch službou"
+
+#~ msgid ""
+#~ "Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q"
+#~ "\r] does not match (watch: registration mask does not match, or nickname "
+#~ "is being used by someone else)"
+#~ msgstr ""
+#~ "Seznam Oznamování: \r!n\r%Q\r vypadá, že je online, ale maska [%Q@\r!h\r%Q"
+#~ "\r] nesouhlasí (watch: registrační maska nesouhlasí, nebo přezdívku "
+#~ "používá ještě někdo jiný)"
+
+#~ msgid ""
+#~ "Notify list: Unexpected inconsistency, registered user DB modified? "
+#~ "(watch: restarting)"
+#~ msgstr ""
+#~ "Seznam Oznamování: Neočekávaná nekonzistence, databáze registrovaných "
+#~ "uživatelů modifikována? (watch: restartuji)"
+
+#~ msgid "watch entry added by user"
+#~ msgstr "watch záznam přidaný uživatelem"
+
+#~ msgid "removed from watch list"
+#~ msgstr "odebrán z watch seznamu"
+
+#~ msgid "Notify list: Stopped watching for \r!n\r%Q\r"
+#~ msgstr "Seznam Oznamování: Zastaven watch pro \r!n\r%Q\r"
+
+#~ msgid "watch"
+#~ msgstr "watch"
+
+#~ msgid "Notify list: \r!n\r%Q\r is offline (watch)"
+#~ msgstr "Seznam oznamování: \r!n\r%Q\r je offline (watch)"
+
+#~ msgid "unmatched watch list entry"
+#~ msgstr "neexistující záznam watch seznamu"
+
+#, fuzzy
+#~ msgid "commandline"
+#~ msgstr "Nebyl určen příkazový řádek"
+
+#~ msgid "[SSL]: %c%s"
+#~ msgstr "[SSL]: %c%s"
+
+#~ msgid "[SSL]: Cipher: %c%s"
+#~ msgstr "[SSL]: Šifra: %c%s"
+
+#~ msgid "[SSL]: Version: %c%s"
+#~ msgstr "[SSL]: Verze: %c%s"
+
+#~ msgid "[SSL]: Bits: %c%d (%d used)"
+#~ msgstr "[SSL]: Bitů: %c%d (%d použito)"
+
+#~ msgid "[SSL]: Version: %c%d"
+#~ msgstr "[SSL]: Verze: %c%d"
+
+#~ msgid "[SSL]: Serial number: %c%d"
+#~ msgstr "[SSL]: Sériové číslo: %c%d"
+
+#~ msgid "[SSL]: Subject:"
+#~ msgstr "[SSL]: Subjekt:"
+
+#~ msgid "[SSL]: Common name: %c%s"
+#~ msgstr "[SSL]: Obecné jméno: %c%s"
+
+#~ msgid "[SSL]: Organization: %c%s"
+#~ msgstr "[SSL]: Organizace: %c%s"
+
+#~ msgid "[SSL]: Organizational unit: %c%s"
+#~ msgstr "[SSL]: Organizační jednotka: %c%s"
+
+#~ msgid "[SSL]: Country: %c%s"
+#~ msgstr "[SSL]: Země: %c%s"
+
+#~ msgid "[SSL]: State or province: %c%s"
+#~ msgstr "[SSL]: Stát nebo provincie: %c%s"
+
+#~ msgid "[SSL]: Locality: %c%s"
+#~ msgstr "[SSL]: Lokace: %c%s"
+
+#~ msgid "[SSL]: Issuer:"
+#~ msgstr "[SSL]: Poskytovatel:"
+
+#~ msgid "[SSL]: Public key: %c%s (%d bits)"
+#~ msgstr "[SSL]: Veřejný klíč: %c%s (%d bitů)"
+
+#~ msgid "[SSL]: Signature type: %c%s"
+#~ msgstr "[SSL]: Typ signatury: %c%s"
+
+#~ msgid "[SSL]: Signature contents: %c%s"
+#~ msgstr "[SSL]: Signatura obsahuje: %c%s"
+
+#~ msgid "Peer X509 certificate"
+#~ msgstr "X509 ceritifikát"
+
+#~ msgid "[SSL]: The peer didn't provide a certificate"
+#~ msgstr "[SSL]: Druhá strana nedodala certifikát"
+
+#~ msgid "Current transmission cipher"
+#~ msgstr "Současná přenosová šifra"
+
+#~ msgid "[SSL]: Can't find out the current cipher info"
+#~ msgstr "[SSL]: Nelze zjistit informace o šifře"
+
+#~ msgid "[%s]: [SSL]: Using certificate file %s"
+#~ msgstr "[%s]: [SSL]: Použit soubor certifikátu %s"
+
+#~ msgid ""
+#~ "[%s]: [SSL ERROR]: File I/O error while trying to use the certificate "
+#~ "file %s"
+#~ msgstr ""
+#~ "[%s]: [SSL CHYBA]: Chyba I/O při pokusu použít soubor certifikátu %s"
+
+#~ msgid "[%s]: [SSL ERROR]: %s"
+#~ msgstr "[%s]: [SSL CHYBA]: %s"
+
+#~ msgid "[%s]: [SSL]: Using private key file %s"
+#~ msgstr "[%s]: [SSL]: Použit soubor privátního klíče %s"
+
+#~ msgid ""
+#~ "[%s]: [SSL ERROR]: File I/O error while trying to use the private key "
+#~ "file %s"
+#~ msgstr ""
+#~ "[%s]: [SSL CHYBA]: Chyba I/O při pokusu použít soubor privátního klíče %s"
+
+#~ msgid "Ops... for some reason the link object has been destroyed"
+#~ msgstr "Oops... z nějakého důvodu byl linkovaný objekt zničen"
+
+#~ msgid "Using filtered IRC protocol: Link filter is \"%Q\""
+#~ msgstr "Použit filtrovaný IRC protokol: Link filtr je \"%Q\""
+
+#~ msgid "Failed to set up the link filter \"%Q\", will try with plain IRC"
+#~ msgstr "Selhalo nastavení filtrované linky \"%Q\", zkusí se obyčejné IRC"
+
+#~ msgid "Failed to start the connection: %Q"
+#~ msgstr "Selhalo navázání spojení: %Q"
+
+#~ msgid "Contacting %Q %s (%s) on port %u"
+#~ msgstr "Kontaktuje se %Q %s (%s) na portu %u"
+
+#~ msgid "proxy host"
+#~ msgstr "proxy hostitel"
+
+#~ msgid "IRC server"
+#~ msgstr "IRC server"
+
+#~ msgid "Low-level transport connection established [%s (%s:%u)]"
+#~ msgstr "Nízkoúrovňové přenosové spojení navázáno [%s (%s:%u)]"
+
+#~ msgid "Starting Secure Socket Layer handshake"
+#~ msgstr "Zahajuji SSL komunikaci"
+
+#~ msgid "%Q established [%s (%s:%u)]"
+#~ msgstr "%Q navázáno [%s (%s:%u)]"
+
+#~ msgid "Secure proxy connection"
+#~ msgstr "Zabezpečené proxy spojení"
+
+#~ msgid "Proxy connection"
+#~ msgstr "Proxy spojení"
+
+#~ msgid "Negotiating relay information"
+#~ msgstr "Vyjednávájí se přenosové informace"
+
+#~ msgid "Sent connection request, waiting for acknowledgement"
+#~ msgstr "Zaslán požadavek spojení, čeká se na potvrzení"
+
+#~ msgid "Sent target host data, waiting for acknowledgement"
+#~ msgstr "Poslána data cílového hostitele, čeká se na potvrzení"
+
+#~ msgid "Sent auth method request, waiting for acknowledgement"
+#~ msgstr "Poslán požadavek auth metody, čeká se na potvrzení"
+
+#~ msgid "Sent username and password, waiting for acknowledgement"
+#~ msgstr "Posláno užívatelské jméno a heslo, čeká se na potvrzení"
+
+#~ msgid "Sent connection request, waiting for \"HTTP 200\" acknowledgement"
+#~ msgstr "Poslán požadavek spojení, čeká se na \"HTTP 200\" potvrzení"
+
+#~ msgid "[SSL]: %Q"
+#~ msgstr "[SSL]: %Q"
+
+#~ msgid "[SSL ERROR]: %Q"
+#~ msgstr "[SSL CHYBA]: %Q"
+
+#~ msgid "[PROXY]: %Q"
+#~ msgstr "[PROXY]: %Q"
+
+#~ msgid "[PROXY ERROR]: %Q"
+#~ msgstr "[PROXY CHYBA]: %Q"
+
+#~ msgid "[SOCKET]: %Q"
+#~ msgstr "[SOKET]: %Q"
+
+#~ msgid "[SOCKET ERROR]: %Q"
+#~ msgstr "[SOKET CHYBA]: %Q"
+
+#~ msgid "[SOCKET WARNING]: %Q"
+#~ msgstr "[SOKET UPOZORNĚNÍ]: %Q"
+
+#~ msgid "Binding to local address %s"
+#~ msgstr "Vázání na lokální adresu %s"
+
+#~ msgid ""
+#~ "Binding to local address %s failed: the kernel will choose the correct "
+#~ "interface"
+#~ msgstr ""
+#~ "Vázání k lokální adrese %s selhalo: jádro si vybere správné rozhraní"
+
+#~ msgid "Using HTTP protocol."
+#~ msgstr "Použit HTTP protokol."
+
+#~ msgid "Using SOCKSV4 protocol."
+#~ msgstr "Použit SOCKSV4 protokol."
+
+#~ msgid "Using SOCKSV5 protocol."
+#~ msgstr "Použit SOCKV5 protokol."
+
+#~ msgid "We can accept auth method 0 (no auth)"
+#~ msgstr "Můžeme přijmout auth metodu 0 (bez auth)"
+
+#~ msgid "We can accept auth method 0 (no auth) or 2 (user/pass)"
+#~ msgstr "Můžeme přijmout auth metodu 0 (bez auth) nebo 2 (uživatel/heslo)"
+
+#~ msgid "Proxy response: auth OK: access granted"
+#~ msgstr "Proxy odezva: auth OK: přístup povolen"
+
+#~ msgid "Proxy response: Auth method OK: using method 0 (no auth)"
+#~ msgstr "Proxy odezva: autorizace úspěšná: použita metoda 0 (bez autorizace)"
+
+#~ msgid "Proxy response: Auth method OK: using method 2 (user/pass)"
+#~ msgstr "Proxy odezva: autorizace úspěšná: použita metoda 2 (uživatel/heslo)"
+
+#~ msgid "Proxy response: target data OK: request granted"
+#~ msgstr "Proxy odezva: cílová data OK požadavek přijmut"
+
+#~ msgid "Proxy response: "
+#~ msgstr "Proxy odezva: "
+
+#~ msgid "Proxy said something about \""
+#~ msgstr "Proxy říká něco o \""
+
+#~ msgid "\" ...that looks like an error to me..."
+#~ msgstr "\" ...to vypadá jako chyba pro mě..."
+
+#~ msgid "Server X509 certificate"
+#~ msgstr "Certifikát X509 serveru"
+
+#~ msgid "The server didn't provide a certificate"
+#~ msgstr "Server neposkytuje certifikát"
+
+#~ msgid "Unable to determine the current cipher"
+#~ msgstr "Nelze rozpoznat současnou šifru"
+
+#~ msgid "Partial socket write: packet broken into smaller pieces."
+#~ msgstr "Částečný zápis soketu: paket rozbit na malé části."
+
+#~ msgid "Installation problems ?"
+#~ msgstr "Instalační problémy ?"
+
+#~ msgid ""
+#~ "<b>Ooops...</b><br><br><b>There are some reasons that make me think that "
+#~ "your KVIrc installation is incomplete.</b><br><br>I might be wrong, but "
+#~ "you seem to miss some of the features that the default KVIrc script "
+#~ "provides.This may happen because you have upgraded to an unstable cvs "
+#~ "version, because you have accidentally deleted or damaged your "
+#~ "configuration files, because you have installed an incomplete script or "
+#~ "because you have hit a bug in KVIrc.<br><br>I can repeat the installation "
+#~ "of the default script in order to restore the missing features.<br><b>Do "
+#~ "you want the default script to be restored ?</b><br><br><font size=\"-1"
+#~ "\">Hint: If you're a scripter and have intentionally removed some of the "
+#~ "scripting features then you may safely click on \"No and Don't Ask Me "
+#~ "Again\", otherwise it might be a good idea to click \"Yes\". If you still "
+#~ "want to choose \"No\" you can always restore the default script by "
+#~ "choosing the appropriate entry from the \"Scripting\" menu.</font>"
+#~ msgstr ""
+#~ "<b>Ooops...</b><br><br><b>Je několik důvodů, proč je instalace KVIrc "
+#~ "nekompletní.</b><br><br>Možná se mýlím, ale vypadá to, že jste zapomněli "
+#~ "na některé vlastnosti, které nabízí výchozí skript KVIrc.To se mohlo stát "
+#~ "díky upgradu na nestabilní cvs verzi, nebo náhodným poškozením vašich "
+#~ "konfiguračních souborů, instalací nekompletního skriptu anebo jste "
+#~ "narazili na bug v KVIrc.<br><br>Můžete opakovat instalaci výchozího "
+#~ "skriptu aby se doplnily chybějící vlastnosti.<br><b>Chcete obnovit "
+#~ "výchozí skript ?</b><br><br><font size=\"-1\">Tip: Pokud jste skriptér a "
+#~ "některé skriptovací vlastnosti jste odebrali, můžete bezpečně kliknout na "
+#~ "\"Ne a již se neptat\", jindy může být dobrým nápadem klinutí na \"Ano\". "
+#~ "Pokud alee vyberete \"Ne\" můžete vždy obnovit výchozí skript výběrem "
+#~ "správného záznamu ze \"Skriptovacího\" menu.</font>"
+
+#~ msgid "No and Don't Ask Me Again"
+#~ msgstr "Ne a již se neptat"
+
+#~ msgid "Restore Default Script - KVIrc"
+#~ msgstr "Obnovit výchozí skript - KVIrc"
+
+#~ msgid ""
+#~ "You are about to restore the default script.<br>This will erase any "
+#~ "script changes you have made.<br>Do you wish to proceed?"
+#~ msgstr ""
+#~ "Rozhodujete o obnovení výchozího skriptu.<br>To smaže všechny změny "
+#~ "skriptů které jste udělali.<br>Chcete pokračovat?"
+
+#~ msgid "Remote command received (%s ...)"
+#~ msgstr "Vzdálený příkaz přijat (%s ...)"
+
+#~ msgid "File download failed"
+#~ msgstr "Stažení souboru selhalo"
+
+#~ msgid "File download from %1 failed"
+#~ msgstr "Stahování souboru od %1 selhalo"
+
+#~ msgid "File download terminated"
+#~ msgstr "Stahování souboru přerušeno"
+
+#~ msgid "File download from %1 terminated"
+#~ msgstr "Stahování souboru od %1 přerušeno"
+
+#~ msgid "Avatar download failed for %Q!%Q@%Q and url %Q: %Q"
+#~ msgstr "Stažení avataru selhalo pro %Q!%Q@%Q a url %Q: %Q"
+
+#~ msgid "The commandline for media type '%s' seems to be broken"
+#~ msgstr "Příkazový řádek pro typ multimédia '%s' vypadá jako poškozený"
+
+#~ msgid "Media type of file %s matched to '%s' but no commandline specified"
+#~ msgstr "Typ multimédia %s souhlasí s '%s' ale namá určen příkazový řádek"
+
+#~ msgid "No idea on how to play file %s (no media type match)"
+#~ msgstr ""
+#~ "Nevím jak přehrát multimediální soubor %s (neshoduje se s typy médií)"
+
+#~ msgid "Sending out PING based lag probe"
+#~ msgstr "Odeslána PING sonda lagu"
+
+#~ msgid "Sending out CTCP based lag probe"
+#~ msgstr "Odeslána CTCP sonda lagu"
+
+#~ msgid "Registered lag check with reliability %u (%s)"
+#~ msgstr "Registrována kontrola lagu se spolehlivostí %u (%s)"
+
+#~ msgid "Lag check completed (%s)"
+#~ msgstr "Kontrola lagu dokončena (%s)"
+
+#~ msgid "Lag check aborted (%s)"
+#~ msgstr "Kontrola lagu přerušena (%s)"
+
+#~ msgid "Backward compatibility action for toolbar.define"
+#~ msgstr "Zpětná kompatibilita akcí pro toolbar.define"
+
+#~ msgid "IRC Context related actions"
+#~ msgstr "Akce příbuzné IRC Kontextu"
+
+#~ msgid "Generic"
+#~ msgstr "Obecný"
+
+#~ msgid "Generic actions"
+#~ msgstr "Obecné akce"
+
+#~ msgid "Settings"
+#~ msgstr "Nastavení"
+
+#~ msgid "Actions related to settings"
+#~ msgstr "Akce příbuzné nastavení"
+
+#~ msgid "Scripting"
+#~ msgstr "Skriptování"
+
+#~ msgid "Scripting related actions"
+#~ msgstr "Akce příbuzné skriptování"
+
+#~ msgid "GUI"
+#~ msgstr "GUI"
+
+#~ msgid "Actions related to the Graphic User Interface"
+#~ msgstr "Akce příbuzné Grafickému Uživatelskému Interfejsu"
+
+#~ msgid "IRC Channel related actions"
+#~ msgstr "Akce příbuzné IRC kanálu"
+
+#~ msgid "Actions that will appear in the \"Tools\" menu"
+#~ msgstr "Akce, které se zobrazí v menu \"Nástroje\""
+
+#~ msgid "Reconnect attempt aborted"
+#~ msgstr "Pokus o opětovné spojení přerušen"
+
+#~ msgid ""
+#~ "This is the first connection in this IRC context: using the global server "
+#~ "setting"
+#~ msgstr ""
+#~ "Toto je první spojení v tomto IRC kontextu: používám globální serverové "
+#~ "nastavení"
+
+#~ msgid ""
+#~ "No servers available. Check the options dialog or use the /SERVER command"
+#~ msgstr ""
+#~ "Nejsou dostupné servery. Zkontrolujte dialog možností nebo použijte "
+#~ "příkaz /SERVER"
+
+#~ msgid ""
+#~ "Ooops.. you've hit a bug in the servers database... I have found a server "
+#~ "but not a network..."
+#~ msgstr ""
+#~ "Ooops.. nalezl jsi chybu v databázi serverů... Nalezl se server ale ne "
+#~ "síť..."
+
+#~ msgid "No proxy hosts available, resuming direct connection"
+#~ msgstr "Proxy hostitelé nedostupní, navazuji přímé spojení"
+
+#~ msgid "Connection attempt failed [%s]"
+#~ msgstr "Pokus o spojení selhal [%s]"
+
+#~ msgid "Will attempt to reconnect in %d seconds"
+#~ msgstr "Pokusím se o znovupřipojení za %d sekund"
+
+#~ msgid "%d of %d"
+#~ msgstr "%d z %d"
+
+#~ msgid "Maximum number of reconnect attempts reached (%d): giving up"
+#~ msgstr "Maximální počet pokusů o opětovné spojení dosažen (%d): vzdávám to"
+
+#~ msgid ""
+#~ "The connection attempt failed while using a cached IP address for the "
+#~ "current server"
+#~ msgstr ""
+#~ "Pokus o spojení selhal při použití cachované IP adresy zvoleného serveru"
+
+#~ msgid "The problem *might* be caused by an updated DNS entry"
+#~ msgstr "Problém *může* být způsoben aktualizovaným DNS záznamem"
+
+#~ msgid "Try reconnecting with caching disabled"
+#~ msgstr "Zkuste znovu připojení se zakázaným cache"
+
+#~ msgid "Secure connection"
+#~ msgstr "Zabezpečené spojení"
+
+#~ msgid "Connection terminated [%s (%s:%u)]"
+#~ msgstr "Spojení ukončeno [%s (%s:%u)]"
+
+#~ msgid "The connection terminated unexpectedly. Trying to reconnect..."
+#~ msgstr "Spojení bylo neočekávaně přerušeno. Pokus o obnovu spojení..."
+
+#~ msgid "Sent QUIT, waiting for the server to close the connection..."
+#~ msgstr "Poslán QUIT, čeká se až server uzavře spojení..."
+
+#~ msgid "No "
+#~ msgstr "Ne "
+
+#~ msgid " symbol exported: not a kvirc module ?"
+#~ msgstr " symbol exportován: není to kvirc modul ?"
+
+#~ msgid "This module has no version informations: refusing to load it"
+#~ msgstr "Tento modul neobsahuje informace o verzi: odmítá se načtení"
+
+#~ msgid ""
+#~ "This module was compiled for a different KVIrc version and can't be loaded"
+#~ msgstr ""
+#~ "Tento modul byl kompilován pro jinou verzi KVIrc a nemůže být načten"
+
+#~ msgid "Failed to execute the init routine"
+#~ msgstr "Selhalo spuštění inicializační rutiny"
+
+#~ msgid "Loaded module '%s' (%s)"
+#~ msgstr "Nahrán modul '%s' (%s)"
+
+#~ msgid "Unloaded module '%s'"
+#~ msgstr "Smazán modul '%s'"
+
+#~ msgid "This option is also available as"
+#~ msgstr "Tato volba je také dostupná jako"
+
+#~ msgid "Channel mode"
+#~ msgstr "Mód kanálu"
+
+#~ msgid "Split View"
+#~ msgstr "Rozdělit pohled"
+
+#~ msgid "User List"
+#~ msgstr "Seznam uživatelů"
+
+#, fuzzy
+#~ msgid "Ban Editor"
+#~ msgstr "Editor Raw"
+
+#, fuzzy
+#~ msgid "Ban Exception Editor"
+#~ msgstr "Zobrazit Vyjímky Banů"
+
+#, fuzzy
+#~ msgid "Invite Exception Editor"
+#~ msgstr "Zobrazit vyjímky pozvání"
+
+#, fuzzy
+#~ msgid "Mode Editor"
+#~ msgstr "Zobrazit editor módů"
+
+#~ msgid "said something recently"
+#~ msgstr "řekl něco naposledy"
+
+#~ msgid "is talking"
+#~ msgstr "mluví"
+
+#~ msgid "and"
+#~ msgstr "a"
+
+#~ msgid "were talking recently"
+#~ msgstr "mluvili naposledy"
+
+#~ msgid "are talking"
+#~ msgstr "mluví"
+
+#~ msgid "and other %1 users"
+#~ msgstr "a ostatních %1 uživatelů"
+
+#~ msgid "Dead channel"
+#~ msgstr "Mrtvý kanál"
+
+#~ msgid "operator"
+#~ msgstr "operátor"
+
+#~ msgid "operators"
+#~ msgstr "operátorů"
+
+#~ msgid "active user"
+#~ msgstr "aktivní uživatel"
+
+#~ msgid "active users"
+#~ msgstr "aktivních uživatelů"
+
+#~ msgid "hot user"
+#~ msgstr "velmi aktivní uživatel"
+
+#~ msgid "hot users"
+#~ msgstr "velmi aktivních uživatelů"
+
+#~ msgid "channel owner"
+#~ msgstr "vlastník kanálu"
+
+#~ msgid "channel owners"
+#~ msgstr "vlastníci kanálu"
+
+#~ msgid "channel administrator"
+#~ msgstr "administrátor kanálu"
+
+#~ msgid "channel administrators"
+#~ msgstr "administrátoři kanálu"
+
+#~ msgid "half-operator"
+#~ msgstr "polo-operátor"
+
+#~ msgid "half-operators"
+#~ msgstr "polo-operátorů"
+
+#~ msgid "voiced user"
+#~ msgstr "uživatel s voice"
+
+#~ msgid "voiced users"
+#~ msgstr "uživatelů s voice"
+
+#~ msgid "user-operator"
+#~ msgstr "uživatel-operátor"
+
+#~ msgid "user-operators"
+#~ msgstr "uživatel-operátoři"
+
+#~ msgid "user total"
+#~ msgstr "uživatel celkem"
+
+#~ msgid "users total"
+#~ msgstr "uživatelů celkem"
+
+#~ msgid "No activity"
+#~ msgstr "Žádná aktivita"
+
+#~ msgid "Minimal activity"
+#~ msgstr "Minimální aktivita"
+
+#~ msgid "Very low activity"
+#~ msgstr "Velmi nízká aktivita"
+
+#~ msgid "Might be low activity"
+#~ msgstr "Asi nízká aktivita"
+
+#~ msgid "Low activity"
+#~ msgstr "Nízká aktivita"
+
+#~ msgid "Might be medium activity"
+#~ msgstr "Asi střední aktivita"
+
+#~ msgid "Medium activity"
+#~ msgstr "Střední aktivita"
+
+#~ msgid "Might be high activity"
+#~ msgstr "Asi vysoká aktivita"
+
+#~ msgid "High activity"
+#~ msgstr "Vysoká aktivita"
+
+#~ msgid "Might be very high activity"
+#~ msgstr "Asi velmi vysoká aktivita"
+
+#~ msgid "Very high activity"
+#~ msgstr "Velmi vysoká aktivita"
+
+#~ msgid "Might be flooded with messages"
+#~ msgstr "Asi flooder se zprávami"
+
+#~ msgid "Flooded with messages"
+#~ msgstr "Flooder se zprávami"
+
+#~ msgid "human"
+#~ msgstr "lidí"
+
+#~ msgid "[Dead channel]"
+#~ msgstr "[Mrtvý kanál]"
+
+#~ msgid " on "
+#~ msgstr " na "
+
+#~ msgid ""
+#~ "The crypto engine was unable to encrypt the current message (%Q): %s, no "
+#~ "data sent to the server"
+#~ msgstr ""
+#~ "Šifrovací nástroj nemůže zašifrovat zvolenou zprávu (%Q): %s, data "
+#~ "neposlána na server"
+
+#~ msgid "Sent part request, waiting for reply..."
+#~ msgstr "Poslán part požadavek, čeká se na odezvu..."
+
+#~ msgid "<b>Channel mode:</b>"
+#~ msgstr "<b>Mód kanálu:</b>"
+
+#~ msgid "<br><b>Key:</b> %s"
+#~ msgstr "<br><b>Klíč:</b> %s"
+
+#~ msgid "<br><b>Limit:</b> %s"
+#~ msgstr "<br><b>Limit:</b> %s"
+
+#~ msgid "Channel synchronized in %d.%d seconds"
+#~ msgstr "Kanál synchronizován během %d.%d sekund"
+
+#~ msgid "No topic message has been received from the server yet"
+#~ msgstr "Zatím nebyla ze serveru poslána žádná zpráva o tématu"
+
+#~ msgid "Channel topic:"
+#~ msgstr "Téma kanálu:"
+
+#~ msgid "Set by"
+#~ msgstr "Nastavil"
+
+#~ msgid "Set on"
+#~ msgstr "Nastaveno v"
+
+#~ msgid "Double-click to edit..."
+#~ msgstr "Dvojklik pro úpravy..."
+
+#~ msgid "No topic is set"
+#~ msgstr "Není nastaveno žádné téma"
+
+#~ msgid "Double-click to set..."
+#~ msgstr "Dvojklik pro nastavení..."
+
+#, fuzzy
+#~ msgid "History"
+#~ msgstr "adresář"
+
+#~ msgid "Commit Changes"
+#~ msgstr "Provést změny"
+
+#~ msgid "Discard Changes"
+#~ msgstr "Zahodit změny"
+
+#~ msgid "Copy to clipboard"
+#~ msgstr "Kopírovat do schránky"
+
+#~ msgid "CTCP Page - KVIrc"
+#~ msgstr "CTCP Page - KVIrc"
+
+#~ msgid "Active Bans"
+#~ msgstr "Aktivní bany"
+
+#~ msgid "Active Invite Exceptions"
+#~ msgstr "Aktivní vyjímky pozvání"
+
+#~ msgid "Active Ban Exceptions"
+#~ msgstr "Aktivní vyjímky banů"
+
+#~ msgid "Mask"
+#~ msgstr "Maska"
+
+#~ msgid "Set at"
+#~ msgstr "Nastaveno"
+
+#~ msgid "Window List"
+#~ msgstr "Seznam oken"
+
+#~ msgid ""
+#~ "<b>Shift+Drag</b> or <b>Ctrl+Drag</b> to move the applet "
+#~ "around<br><b>Right click</b> to see the other options"
+#~ msgstr ""
+#~ "<b>Shift+Drag</b> nebo <b>Ctrl+Drag</b> pro přesun apletu po "
+#~ "liště<br><b>Pravý klik</b> pro prohlédnutí dalších možností"
+
+#~ msgid "<b>Right click</b> to add/remove applets"
+#~ msgstr "<b>Pravý klik</b> pro přidání/odebrání apletů"
+
+#~ msgid "Remove %Q"
+#~ msgstr "Odebrat %Q"
+
+#~ msgid "Add Applet"
+#~ msgstr "Přidat applet"
+
+#~ msgid ""
+#~ "Drag the applet while holding the Shift or Ctrl key to move it to the "
+#~ "desired position"
+#~ msgstr ""
+#~ "Uchopte aplet při stisknutém Shift nebo Ctrl pro přesun na zvolené "
+#~ "umístění"
+
+#~ msgid "Connection in progress..."
+#~ msgstr "Probíhá připojování..."
+
+#~ msgid "Login in progress..."
+#~ msgstr "Probíhá přihlašování..."
+
+#~ msgid "Not connected"
+#~ msgstr "Nepřipojen"
+
+#~ msgid "No IRC context"
+#~ msgstr "Žádný IRC kontext"
+
+#, fuzzy
+#~ msgid "Crypting"
+#~ msgstr "Šifrování"
+
+#~ msgid "Private Text Encoding"
+#~ msgstr "Soukromé kódování textu"
+
+#~ msgid "Ops...I've accidentally lost the crypting engine..."
+#~ msgstr "Oops...Ztratili jsme náhodně šifrovací nástroj..."
+
+#~ msgid "List of window types available in this release of KVIrc:"
+#~ msgstr "Seznam typů oken dostupných v této verzi KVIrc:"
+
+#~ msgid "Use Default Encoding"
+#~ msgstr "Použít výchozí kódování"
+
+#~ msgid "Standard"
+#~ msgstr "Standardní"
+
+#~ msgid "Smart"
+#~ msgstr "Smart"
+
+#~ msgid "&Undock"
+#~ msgstr "&Odpoutat"
+
+#~ msgid "&Dock"
+#~ msgstr "&Dokovat"
+
+#~ msgid "Mi&nimize"
+#~ msgstr "Mi&nimalizovat"
+
+#~ msgid "Ma&ximize"
+#~ msgstr "Ma&ximalizovat"
+
+#~ msgid "&Restore"
+#~ msgstr "&Obnovit"
+
+#~ msgid "Text &Encoding"
+#~ msgstr "Kódo&vání textu"
+
+#~ msgid "Sa&ve Window Properties"
+#~ msgstr "Ul&ožit vlastnosti okna"
+
+#~ msgid "Search tools"
+#~ msgstr "Vyhledávací nástroje"
+
+#~ msgid "### Log session terminated at %s ###"
+#~ msgstr "### Logovací relace ukončena v %s ###"
+
+#~ msgid "### Log session started at %s ###"
+#~ msgstr "### Logovací relace spuštěna v %s ###"
+
+#~ msgid "### Existing data buffer:"
+#~ msgstr "### Existující data buffer:"
+
+#~ msgid "### End of existing data buffer."
+#~ msgstr "### Konec existujícího data bufferu."
+
+#~ msgid "Hide Find Window"
+#~ msgstr "Schovat vyhledávací okno"
+
+#~ msgid "Show Find Window"
+#~ msgstr "Zobrazit vyhledávací okno"
+
+#~ msgid "Zoom In"
+#~ msgstr "Přiblížit"
+
+#~ msgid "Zoom Out"
+#~ msgstr "Oddálit"
+
+#~ msgid "Choose Temporary Font..."
+#~ msgstr "Zvolte dočasné písmo..."
+
+#~ msgid "Choose Temporary Background..."
+#~ msgstr "Zvolte dočasné pozadí..."
+
+#~ msgid "Reset Temporary Background"
+#~ msgstr "Obnovit dočasné pozadí"
+
+#~ msgid "Clear Buffer"
+#~ msgstr "Smazat buffer"
+
+#~ msgid "Choose the background image..."
+#~ msgstr "Zvolte obrázek pozadí ..."
+
+#~ msgid "Invalid image"
+#~ msgstr "Neplatný obrázek"
+
+#~ msgid "Failed to load the selected image"
+#~ msgstr "Selhalo načtení zvoleného obrázku"
+
+#~ msgid "Pos %d"
+#~ msgstr "Pozice %d"
+
+#~ msgid "Not found"
+#~ msgstr "Nenalezeno"
+
+#~ msgid "Looking up host %Q..."
+#~ msgstr "Zjišťuje se hostitel %Q..."
+
+#~ msgid "Double-click to open this link"
+#~ msgstr "Dvojklikem navštívíte odkaz"
+
+#~ msgid "Unable to look it up hostname: Hostname appears to be masked"
+#~ msgstr "Nelze zjistit hostitele: Hostitel vypadá, že je maskován"
+
+#~ msgid "Unable to look it up hostname: Unknown host"
+#~ msgstr "Nelze zjistit hostitele: Neznámý hostitel"
+
+#~ msgid ""
+#~ "Double-click to look up this hostname<br>Right-click to view other options"
+#~ msgstr ""
+#~ "Dvojklikem zjistíte hostitele<br>Pravým kliknutím prohlédnete další "
+#~ "možnosti"
+
+#~ msgid "Server appears to be a network hub<br>"
+#~ msgstr "Server vypadá jako hub sítě<br>"
+
+#~ msgid "Unknown server<br>"
+#~ msgstr "Neznámý server<br>"
+
+#~ msgid "Double-click to read the MOTD<br>Right-click to view other options"
+#~ msgstr ""
+#~ "Dvojklikem přečtete MOTD<br>Pravým kliknutím zobrazíte další možnosti"
+
+#~ msgid "Double-click to set<br>"
+#~ msgstr "Dvojklik pro nastavení<br>"
+
+#~ msgid "You're not an operator: You may not change channel modes"
+#~ msgstr "Nejste operátor: Nemůžete měnit módy kanálu"
+
+#~ msgid "Nothing known about %Q"
+#~ msgstr "Není známo nic o %Q"
+
+#~ msgid "Nothing known about %Q (no connection)"
+#~ msgstr "Není známo nic o %Q (žádné spojení)"
+
+#~ msgid "<b>%Q</b>: +%Q (%u users)<hr>%Q"
+#~ msgstr "<b>%Q</b>: +%Q (%u uživatelů)<hr>%Q"
+
+#~ msgid "Double-click to join %Q<br>Right click to view other options"
+#~ msgstr ""
+#~ "Dvojklikem přijdete do %Q<br>Pravým klikem si prohlédněte další možnosti"
+
+#~ msgid "<b>Double-click:</b><br>%Q"
+#~ msgstr "<b>Dvojklik:</b><br>%Q"
+
+#~ msgid "<b>Middle-click:</b><br>%Q"
+#~ msgstr "<b>Prostřední klik:</b><br>%Q"
+
+#~ msgid "<b>Right-click:</b><br>%Q"
+#~ msgstr "<b>Pravý klik:</b><br>%Q"
+
+#~ msgid "Toolbars"
+#~ msgstr "Nástrojové lišty"
+
+#~ msgid "Orientation"
+#~ msgstr "Orientace"
+
+#~ msgid "Detached"
+#~ msgstr "Odpoutané"
+
+#~ msgid "Flat"
+#~ msgstr "Plochá"
+
+#~ msgid "Icon Size"
+#~ msgstr "Velikost ikon"
+
+#~ msgid "Small (22x22)"
+#~ msgstr "Malé (22x22)"
+
+#~ msgid "Large (32x32)"
+#~ msgstr "Velké (32x32)"
+
+#~ msgid "Show User List"
+#~ msgstr "Zobrazit uživatele"
+
+#~ msgid "Query Targets"
+#~ msgstr "Query cíle"
+
+#~ msgid "Query target:"
+#~ msgstr "Query cíle:"
+
+#~ msgid "%1 is %2 (%3)"
+#~ msgstr "%1 je %2 (%3)"
+
+#~ msgid "%1 is %2"
+#~ msgstr "%1 je %2"
+
+#, fuzzy
+#~ msgid "%1 is using irc server: %2 (%3 hops)"
+#~ msgstr "Používá server <b>%1</b>"
+
+#, fuzzy
+#~ msgid "%1 is using irc server: %2"
+#~ msgstr "Používá server <b>%1</b>"
+
+#~ msgid "%1 is probably away"
+#~ msgstr "%1 je pravděpodobně pryč"
+
+#~ msgid "Common channels with %1: %2"
+#~ msgstr "Společné kanály s %1: %2"
+
+#~ msgid "[Dead Query]"
+#~ msgstr "[Mrtvé Query]"
+
+#~ msgid "Query with %1!%2 (%3)"
+#~ msgstr "Query s %1!%2 (%3)"
+
+#~ msgid "Query with %1!%2"
+#~ msgstr "Query s %1!%2"
+
+#~ msgid ", using server %1"
+#~ msgstr ", používá server %1"
+
+#~ msgid " (%1 hops)"
+#~ msgstr " (%1 hopů)"
+
+#~ msgid ", probably away"
+#~ msgstr ", pravděpodobně pryč"
+
+#~ msgid "Common channels: %2"
+#~ msgstr "Společné kanály: %2"
+
+#~ msgid ""
+#~ "The target of this query has changed from \r!n\r%Q\r [%Q@\r!h\r%Q\r] to "
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+#~ msgstr ""
+#~ "Cíl tohoto query se změnil z \r!n\r%Q\r [%Q@\r!h\r%Q\r] na \r!n\r%Q\r [%Q@"
+#~ "\r!h\r%Q\r]"
+
+#~ msgid "Common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "Společné kanály s \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid "No common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+#~ msgstr "Žádné společné kanály s \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#~ msgid "[Dead query]"
+#~ msgstr "[Mrtvé query]"
+
+#~ msgid "This query has no active targets, no message sent"
+#~ msgstr "Toto query nemá aktivní cíle, zpráva neposlána"
+
+#~ msgid "No connection"
+#~ msgstr "Nepřipojeno"
+
+#~ msgid "IRC Context"
+#~ msgstr "IRC Kontext"
+
+#~ msgid "Lag: %d.%d%d"
+#~ msgstr "Lag: %d.%d%d"
+
+#~ msgid "Lag: ?.??"
+#~ msgstr "Lag: ?.??"
+
+#~ msgid "away"
+#~ msgstr "pryč"
+
+#~ msgid "In progress..."
+#~ msgstr "Probíhá..."
+
+#~ msgid "Clipboard"
+#~ msgstr "Schránka"
+
+#~ msgid "line break"
+#~ msgstr "konec řádku"
+
+#~ msgid "line breaks"
+#~ msgstr "konce řádků"
+
+#~ msgid "&Paste"
+#~ msgstr "&Vložit"
+
+#~ msgid "Paste (Slowly)"
+#~ msgstr "Vložit (pomalu)"
+
+#~ msgid "Paste &File"
+#~ msgstr "Vložit &Soubor"
+
+#~ msgid "Stop Paste"
+#~ msgstr "Zastavit vložení"
+
+#~ msgid "Clear"
+#~ msgstr "Smazat"
+
+#~ msgid "Select All"
+#~ msgstr "Vybrat vše"
+
+#~ msgid "%d matches: %Q"
+#~ msgstr "%d záznamů: %Q"
+
+#~ msgid "No matches"
+#~ msgstr "Žádné záznamy"
+
+#~ msgid "Show History<br>&lt;Ctrl+PageUp&gt;"
+#~ msgstr "Zobrazit historii<br>&lt;Ctrl+PageUp&gt;"
+
+#~ msgid "Input History Disabled"
+#~ msgstr "Vstupní historie vypnuta"
+
+#~ msgid "Show Icons Popup<br>&lt;Ctrl+I&gt;<br>See also /help texticons"
+#~ msgstr "Zobrazit Okno Ikon<br>&lt;Ctrl+I&gt;<br>Viz. také /help texticons"
+
+#~ msgid "Multi-line Editor<br>&lt;Ctrl+Backspace&gt;"
+#~ msgstr "Víceřádkový Editor<br>&lt;Ctrl+Backspace&gt;"
+
+#~ msgid "Confirm Multiline Message"
+#~ msgstr "Potvrdit víceřádkouvou zprávu"
+
+#~ msgid ""
+#~ "You're about to send a message with %1 lines of text.<br><br>There is "
+#~ "nothing wrong with it, this warning is<br>here to prevent you from "
+#~ "accidentally sending<br>a really large message just because you didn't "
+#~ "edit it<br>properly after pasting text from the clipboard.<br><br>Do you "
+#~ "want the message to be sent?"
+#~ msgstr ""
+#~ "Rozhodujete se poslat zprávu s %1 řádky textu.<br><br>Na tom není nic "
+#~ "špatného, toto upozornění<br>je tu aby se předešlo možným "
+#~ "posláním<br>skutečně velkých zpráv bez úprav<br>při vkládání ze schránky."
+#~ "<br><br>Chcete zprávu poslat?"
+
+#~ msgid "Yes, always"
+#~ msgstr "Ano, vždy"
+
+#~ msgid "<Ctrl+Return>; submits, <Ctrl+Backspace>; hides this editor"
+#~ msgstr "<Ctrl+Enter>; odešle, <Ctrl+Backspace>; schová tento editor"
+
+#~ msgid "&Cascade Windows"
+#~ msgstr "Okna &Přes sebe"
+
+#~ msgid "Cascade &Maximized"
+#~ msgstr "Přes sebe &maximalizovaně"
+
+#~ msgid "&Tile Windows"
+#~ msgstr "Okna &Vedle sebe"
+
+#~ msgid "&Auto Tile"
+#~ msgstr "&Auto vedle sebe"
+
+#~ msgid "Anodine's Full Grid"
+#~ msgstr "Anodine plná mřížka"
+
+#~ msgid "Pragma's Horizontal 4-Grid"
+#~ msgstr "Pragma horizontání 4-mřížka"
+
+#~ msgid "Pragma's Vertical 4-Grid"
+#~ msgstr "Pragma vertikální 4-mřížka"
+
+#~ msgid "Pragma's Horizontal 6-Grid"
+#~ msgstr "Pragma horizontání 6-mřížka"
+
+#~ msgid "Pragma's Vertical 6-Grid"
+#~ msgstr "Pragma vertikální 6-mřížka"
+
+#~ msgid "Pragma's Horizontal 9-Grid"
+#~ msgstr "Pragma horizontání 9-mřížka"
+
+#~ msgid "Pragma's Vertical 9-Grid"
+#~ msgstr "Pragma vertikální 4-mřížka"
+
+#~ msgid "Tile Met&hod"
+#~ msgstr "Způ&sob vedle sebe"
+
+#~ msgid "Expand &Vertically"
+#~ msgstr "Rozšířit &Vertikálně"
+
+#~ msgid "Expand &Horizontally"
+#~ msgstr "Rozšířit &Horizontálně"
+
+#~ msgid "Mi&nimize All"
+#~ msgstr "Mi&nimalizovat vše"
+
+#~ msgid "What's this?"
+#~ msgstr "Co je toto?"
+
+#~ msgid "Notify List"
+#~ msgstr "Seznam Oznamování"
+
+#~ msgid "Part All Channels"
+#~ msgstr "Odejít ze všech kanálů"
+
+#~ msgid "Close All Queries"
+#~ msgstr "Zavřít všechny Query"
+
+#~ msgid "Unhighlight All Windows"
+#~ msgstr "Nezvýrazňovat žádná okna"
+
+#~ msgid "Unhighlight All Channels"
+#~ msgstr "Nezvýrazňovat žádné kanály"
+
+#~ msgid "Unhighlight All Queries"
+#~ msgstr "Nezvýrazňovat žádné Query"
+
+#~ msgid "Registered as"
+#~ msgstr "Registrován jako"
+
+#~ msgid "Matched by"
+#~ msgstr "Maska:"
+
+#~ msgid "On <b>"
+#~ msgstr "Na <b>"
+
+#~ msgid "Using server <b>%1</b>"
+#~ msgstr "Používá server <b>%1</b>"
+
+#~ msgid "%1 hops"
+#~ msgstr "%1 hopů"
+
+#~ msgid "Probably Away"
+#~ msgstr "Pravděpodobně pryč"
+
+#~ msgid "Confirmation - KVIrc"
+#~ msgstr "Potvrzení - KVIrc"
+
+#~ msgid ""
+#~ "You have just attempted to close a console window<br>with an active "
+#~ "connection inside.<br>Are you sure you wish to terminate the connection?"
+#~ msgstr ""
+#~ "Pokoušíte se zavřít okno konzole.<br>s aktivním spojením uvnitř."
+#~ "<br>Opravdu chcete přerušit spojení?"
+
+#~ msgid "&Always"
+#~ msgstr "&Vždy"
+
+#~ msgid ""
+#~ "You have just attempted to close the last console window.<br>Are you sure "
+#~ "you wish to quit KVIrc?"
+#~ msgstr ""
+#~ "Pokoušíte se zavřít poslední okno konzole.<br>Opravdu chcete ukončit "
+#~ "KVIrc?"
+
+#~ msgid "Failed to load avatar with name \"%Q\" and local path \"%Q\""
+#~ msgstr "Selhalo načtení avataru se jménem \"%Q\" a lokální cestou \"%Q\""
+
+#~ msgid "channels"
+#~ msgstr "kanálů"
+
+#~ msgid "query"
+#~ msgstr "query"
+
+#~ msgid "queries"
+#~ msgstr "query"
+
+#~ msgid "Connected since"
+#~ msgstr "Připojen od"
+
+#~ msgid "Online for"
+#~ msgstr "Online"
+
+#~ msgid "Server idle for"
+#~ msgstr "Server nečinný"
+
+#~ msgid "Script"
+#~ msgstr "Skript"
+
+#~ msgid "The file %s already exists.<br>Do you wish to overwrite it?"
+#~ msgstr "Soubor %s již existuje.<br>Chcete jej přepsat?"
+
+#~ msgid "File Exists - KVIrc"
+#~ msgstr "Soubor existuje - KVIrc"
+
+#~ msgid "Channel Modes"
+#~ msgstr "Módy kanálu"
+
+#~ msgid "There are active connections, are you sure you wish to "
+#~ msgstr "Jsou zde aktivní spojení, opravdu chcete "
+
+#~ msgid "quit KVIrc?"
+#~ msgstr "ukončit KVIrc?"
+
+#~ msgid "Show %1"
+#~ msgstr "Zobrazit %1"
+
+#~ msgid "Customize..."
+#~ msgstr "Upravit..."
+
+#~ msgid "Away Indicator"
+#~ msgstr "Pryč indikátor"
+
+#~ msgid "Away since"
+#~ msgstr "Pryč od"
+
+#~ msgid "Double click to leave away mode"
+#~ msgstr "Dvojklik pro zrušení pryč módu"
+
+#~ msgid "Not away"
+#~ msgstr "Není pryč"
+
+#~ msgid "Double click to enter away mode"
+#~ msgstr "Dvojklik pro pryč mód"
+
+#~ msgid "Last checked %d mins %d secs ago"
+#~ msgstr "Naposledy zjišťováno před %d min %d sek"
+
+#~ msgid "Lag measure not available yet"
+#~ msgstr "Hodnota lagu není ještě dostupná"
+
+#~ msgid "Lag meter engine disabled"
+#~ msgstr "Měřič lagu je vypnut"
+
+#~ msgid "Double click to enable it"
+#~ msgstr "Dvojklik pro zapnutí"
+
+#~ msgid "Lag Indicator"
+#~ msgstr "Lag indikátor"
+
+#~ msgid "Simple Clock"
+#~ msgstr "Jednoduché hodiny"
+
+#, fuzzy
+#~ msgid "Show total connection time"
+#~ msgstr "Zobrazit čas synchronizace kanálu"
+
+#~ msgid "Connection Timer"
+#~ msgstr "Časovač připojení"
+
+#~ msgid "Unloadable: %s"
+#~ msgstr "Nečitelný: %s"
+
+#~ msgid "Choose a File - KVIrc"
+#~ msgstr "Vyberte soubor - KVIrc"
+
+#~ msgid "A&dd"
+#~ msgstr "Při&dat"
+
+#~ msgid "Sample Text"
+#~ msgstr "Vzorový text"
+
+#~ msgid "Joined on <b>%1</b>"
+#~ msgstr "Přišel v <b>%1</b>"
+
+#~ msgid "Quiet for <b>%1h %2m %3s</b>"
+#~ msgstr "Nepromluvil <b>%1h %2m %3s</b>"
+
+#~ msgid "Cryptography/text transformation"
+#~ msgstr "Šifrování/transformace textu"
+
+#~ msgid "Use the crypt engine"
+#~ msgstr "Použít šifrování"
+
+#~ msgid "Encrypt key:"
+#~ msgstr "Šifrovací klíč:"
+
+#~ msgid "Hex"
+#~ msgstr "Hex"
+
+#~ msgid "Enable decryption"
+#~ msgstr "Povolit dešifrování"
+
+#~ msgid "Decrypt key:"
+#~ msgstr "Dešifrovací klíč:"
+
+#~ msgid ""
+#~ "If you dont want to encrypt a particular text line then just start it "
+#~ "with the CTRL+P prefix"
+#~ msgstr ""
+#~ "Pokud nechcete zašifrovat textového řádku, začntěte jej s CTRL+P prefixem"
+
+#~ msgid "Sorry, no crypt engines available"
+#~ msgstr "Lituji, šifrování není dostupné"
+
+#~ msgid "Crypt: Can't create an engine instance: crypting disabled"
+#~ msgstr "Šifrování: Nelze vytvořit instanci nástroje: šifrování vypnuto"
+
+#~ msgid "Crypt: Can't initialize the engine :%s"
+#~ msgstr "Šifrování: Nelze inicializovat nástroj :%s"
+
+#~ msgid ""
+#~ "Crypt: You have to enable encryption and/or decryption for the engine to "
+#~ "work"
+#~ msgstr ""
+#~ "Šifrování: Je třeba povolit šifrování anebo dešifrování, aby nástroj "
+#~ "fungoval"
+
+#~ msgid "Choose image ..."
+#~ msgstr "Zvolte obrázek ..."
+
+#~ msgid "Builtin images"
+#~ msgstr "Vestavěné obrázky"
+
+#~ msgid "Small icons"
+#~ msgstr "Malé ikony"
+
+#~ msgid "Full path"
+#~ msgstr "Celá cesta"
+
+#~ msgid "directory"
+#~ msgstr "adresář"
+
+#~ msgid "pixels"
+#~ msgstr "pixelů"
+
+#~ msgid "bytes"
+#~ msgstr "bajtů"
+
+#~ msgid "<b><font color=\"#EAEAEA\" size=\"-1\">Find Text</font></b>"
+#~ msgstr "<b><font color=\"#EAEAEA\" size=\"-1\">Hledat text</font></b>"
+
+#~ msgid "&Regular expression"
+#~ msgstr "&Regulérní výraz"
+
+#~ msgid "E&xtended regexp."
+#~ msgstr "Rozšíř&ený výraz"
+
+#~ msgid "C&ase sensitive"
+#~ msgstr "R&ozlišovat velikost"
+
+#~ msgid "Find &Prev."
+#~ msgstr "Hledat &Předchozí"
+
+#~ msgid "&Find Next"
+#~ msgstr "&Hledat další"
+
+#~ msgid "Set &All"
+#~ msgstr "Nastavit &vše"
+
+#~ msgid "Set &None"
+#~ msgstr "Nastavit žá&dný"
+
+#~ msgid "&Load From..."
+#~ msgstr "&Otevřít z..."
+
+#~ msgid "&Save As..."
+#~ msgstr "&Uložit jako..."
+
+#~ msgid "Filter"
+#~ msgstr "Filtr"
+
+#~ msgid "Select a Filter File"
+#~ msgstr "Vyberte soubor filtru"
+
+#~ msgid "Can't open the filter file %s for reading."
+#~ msgstr "Nelze otevřít soubor %s pro čtení."
+
+#~ msgid "Select a Name for the Filter File"
+#~ msgstr "Vyberte jméno pro soubor filtru"
+
+#~ msgid "Failed to write the filter file %s (IO Error)"
+#~ msgstr "Selhal zápis filtr souboru %s (IO Chyba)"
+
+#~ msgid "Can't open the filter file %s for writing"
+#~ msgstr "Nelze otevřít soubor %s pro zápis"
+
+#~ msgid "Scri&pting"
+#~ msgstr "Skri&pty"
+
+#~ msgid "&Tools"
+#~ msgstr "&Nástroje"
+
+#~ msgid "&Settings"
+#~ msgstr "&Nastavení"
+
+#~ msgid "&Window"
+#~ msgstr "&Okno"
+
+#~ msgid "&Help Browser (Panel)"
+#~ msgstr "&Prohlížeč nápovědy (Panel)"
+
+#~ msgid "Help Browser (&Window)"
+#~ msgstr "Prohlížeč nápovědy (&okno)"
+
+#~ msgid "&Tip of the Day"
+#~ msgstr "&Tip dne"
+
+#~ msgid "About &KVIrc"
+#~ msgstr "O aplikaci &KVIrc"
+
+#~ msgid "KVIrc Home&page"
+#~ msgstr "Domo&vská stránka KVIrc"
+
+#~ msgid "Report a Bug"
+#~ msgstr "Nahlásit Chybu"
+
+#~ msgid "Show StatusBar"
+#~ msgstr "Zobrazit Stavovou lištu"
+
+#~ msgid "Restore &Default Script"
+#~ msgstr "Obnovit &Výchozí skript"
+
+#~ msgid "New &Connection To"
+#~ msgstr "Nové &Připojení k"
+
+#~ msgid "Hide &Dock Icon"
+#~ msgstr "Schovat &Dokovací ikonu"
+
+#~ msgid "Show &Dock Icon"
+#~ msgstr "Zobrazit &Dokovací ikonu"
+
+#~ msgid "&Other..."
+#~ msgstr "&Ostatní..."
+
+#~ msgid "Show &Icon Table"
+#~ msgstr "Zobrazit Tabulku &ikon"
+
+#~ msgid "Open &Terminal"
+#~ msgstr "Otevřít &Terminál"
+
+#~ msgid "Success"
+#~ msgstr "Hotovo"
+
+#~ msgid "Internal error"
+#~ msgstr "Interní chyba"
+
+#~ msgid "Unknown command"
+#~ msgstr "Neznámý příkaz"
+
+#~ msgid "Missing closing brace"
+#~ msgstr "Chybí uzavírací závorka"
+
+#~ msgid "Unexpected end of command in string"
+#~ msgstr "Neočekávaný konec příkazu v řetězci"
+
+#~ msgid "Unexpected end of command in dictionary key"
+#~ msgstr "Neočekávaný konec příkazu v slovníkovém klíči"
+
+#~ msgid "Switch dash without switch letter"
+#~ msgstr "Pomlčka přepínače bez písmenka přepínače"
+
+#~ msgid "Unknown function"
+#~ msgstr "Neznámá funkce"
+
+#~ msgid "Unexpected end of command in parenthesis"
+#~ msgstr "Neočekávaný konec příkazu v závorkách"
+
+#~ msgid "Unexpected end of command in function parameters"
+#~ msgstr "Neočekávaný konec příkazu v parametru funkce"
+
+#~ msgid "Missing variable name"
+#~ msgstr "Chybí název proměnné"
+
+#~ msgid "Variable or identifier expected"
+#~ msgstr "Očekávána proměnná nebo identifikátor"
+
+#~ msgid "Left operand is not a number"
+#~ msgstr "Levý operand není číslo"
+
+#~ msgid "Multiple operations not supported for numeric operators"
+#~ msgstr "Vícenásobné operace pro číselné operátory nejsou povoleny"
+
+#~ msgid "Modulo by zero"
+#~ msgstr "Zbytek po dělení nulou"
+
+#~ msgid "Right operand is not a number"
+#~ msgstr "Pravý operand není číslo"
+
+#~ msgid "Unterminated expression (missing ')' ?)"
+#~ msgstr "Neukončený výraz (chybí ')' ?)"
+
+#~ msgid "Unterminated subexpression (Parenthesis mismatch)"
+#~ msgstr "Neukončený subvýraz (Nesoulad závorek)"
+
+#~ msgid "Unexpected character"
+#~ msgstr "Neočekávaný znak"
+
+#~ msgid "No host to resolve"
+#~ msgstr "žádný hostitel pro zjištění"
+
+#~ msgid "(DNS Internal) Unsupported address family"
+#~ msgstr "(DNS Interní) Nepodporovaná rodina adres"
+
+#~ msgid "Valid name but the host has no IP address"
+#~ msgstr "Platné jméno, ale hostitel nemá IP adresu"
+
+#~ msgid "Unrecoverable nameserver error (crashed ?)"
+#~ msgstr "Nenadálá chyba nameserveru (spadl ?)"
+
+#~ msgid "Dns temporaneous fault (try again)"
+#~ msgstr "Dočasné selhání dns (zkuste znovu)"
+
+#~ msgid "(DNS Internal) Bad flags"
+#~ msgstr "(DNS Interní) Špatné flagy"
+
+#~ msgid "(DNS Internal) Out of memory"
+#~ msgstr "(DNS Interní) Mimo paměť"
+
+#~ msgid "(DNS Internal) Service not supported"
+#~ msgstr "(DNS Interní) Služba není podporována"
+
+#~ msgid "Unknown node (host not found)"
+#~ msgstr "Neznámý node (hostitel nenalezen)"
+
+#~ msgid "(DNS Internal) Unsupported socket type"
+#~ msgstr "(DNS Interní) Nepodporovaný typ soketu"
+
+#~ msgid "Dns query failed"
+#~ msgstr "Dns dotaz selhal"
+
+#~ msgid "This KVIrc executable has no IPV6 support"
+#~ msgstr "Tato verze KVIrc nemá podporu IPv6"
+
+#~ msgid "Host not found"
+#~ msgstr "Hostitel nenalezen"
+
+#~ msgid "(DNS Internal) IPC failure (slave data corrupted)"
+#~ msgstr "(DNS Interní) IPC selhání (poškozená data slave)"
+
+#~ msgid "Invalid IP address"
+#~ msgstr "Neplatná IP adresa"
+
+#~ msgid "Failed to put the socket in non blocking mode"
+#~ msgstr "Selhalo nastavení soketu do neblokovacího módu"
+
+#~ msgid "Bad file descriptor"
+#~ msgstr "Špatný deskriptor souboru"
+
+#~ msgid "Out of address space"
+#~ msgstr "Mimo adresní prostor"
+
+#~ msgid "Connection refused"
+#~ msgstr "Spojení odmítnuto"
+
+#~ msgid "Kernel networking panic"
+#~ msgstr "Síťové jádro selhalo"
+
+#~ msgid "Connection timed out"
+#~ msgstr "Spojení vypršelo"
+
+#~ msgid "Network is unreachable"
+#~ msgstr "Síť je nedostupná"
+
+#~ msgid "Broken pipe"
+#~ msgstr "Zlomená roura"
+
+#~ msgid "Invalid proxy address"
+#~ msgstr "Neplatná adresa proxy"
+
+#~ msgid "Remote end has closed the connection"
+#~ msgstr "Spojení ukončeno druhou stranou"
+
+#~ msgid "Invalid irc context id"
+#~ msgstr "Neplatné id IRC kontextu"
+
+#~ msgid "Error in loading module"
+#~ msgstr "Chyba při nahrání modulu"
+
+#~ msgid "No such module command"
+#~ msgstr "Neplatný příkaz modulu"
+
+#~ msgid "No such module function"
+#~ msgstr "Neplatná funkce modulu"
+
+#~ msgid "Left operand is not a dictionary reference"
+#~ msgstr "Levý operátor není slovníkovou referencí"
+
+#~ msgid "Right operand is not a dictionary reference"
+#~ msgstr "Pravý operátor není slovníkovou referencí"
+
+#~ msgid "Missing object class name"
+#~ msgstr "Chybějící jméno třídy objektu"
+
+#~ msgid "No such object class"
+#~ msgstr "Neplatná třída objektu"
+
+#~ msgid "No such object"
+#~ msgstr "Neplatný objekt"
+
+#~ msgid "No such object function"
+#~ msgstr "Neplatná funkce objektu"
+
+#~ msgid "Invalid left operand"
+#~ msgstr "Neplatný levý operand"
+
+#~ msgid "Integer parameter expected"
+#~ msgstr "Očekáván parametr typu integer"
+
+#~ msgid "Invalid parameter"
+#~ msgstr "Neplatný parametr"
+
+#~ msgid "No such file"
+#~ msgstr "Soubor nenalezen"
+
+#~ msgid "Open parenthesis expected"
+#~ msgstr "Očekávána počáteční závorka"
+
+#~ msgid "Open brace expected"
+#~ msgstr "Chybí počáteční závorka"
+
+#~ msgid "Can't kill a builtin class"
+#~ msgstr "Nelze killnout vestavěnou třídu"
+
+#~ msgid "The SOCKSV4 protocol lacks IpV6 support"
+#~ msgstr "Protokol SOCKSV4 postrádá podporu IPv6"
+
+#~ msgid "Unrecognized proxy reply"
+#~ msgstr "Neočekávaná proxy odezva"
+
+#~ msgid "Proxy response: auth failed: access denied"
+#~ msgstr "Proxy odezva: autorizace selhala: přístup zamítnut"
+
+#~ msgid "Proxy response: No acceptable auth method: request rejected"
+#~ msgstr "Proxy odezva: Neakceptovaná metoda autorizace: požadavek zamítnut"
+
+#~ msgid "Proxy response: request failed"
+#~ msgstr "Proxy odezva: požadavek selhal"
+
+#~ msgid "Proxy response: ident failed"
+#~ msgstr "Proxy odezva: ident selhal"
+
+#~ msgid "Proxy response: ident not matching"
+#~ msgstr "Proxy odezva: ident nesouhlasí"
+
+#~ msgid "Proxy response: general SOCKS failure"
+#~ msgstr "Proxy odezva: obecné selhání SOCKS"
+
+#~ msgid "Proxy response: connection not allowed"
+#~ msgstr "Proxy odezva: spojení není povoleno"
+
+#~ msgid "Proxy response: network unreachable"
+#~ msgstr "Proxy odezva: síť nedostupná"
+
+#~ msgid "Proxy response: host unreachable"
+#~ msgstr "Proxy odezva: hostitel nedostupný"
+
+#~ msgid "Proxy response: connection refused"
+#~ msgstr "Proxy odezva: spojení odmítnuto"
+
+#~ msgid "Proxy response: TTL expired"
+#~ msgstr "Proxy odezva: TTL vypršelo"
+
+#~ msgid "Proxy response: command not supported"
+#~ msgstr "Proxy odezva: příkaz není podporován"
+
+#~ msgid "Proxy response: address type not supported"
+#~ msgstr "Proxy odezva: typ adresy není podporován"
+
+#~ msgid "Proxy response: invalid address"
+#~ msgstr "Proxy odezva: neplatná adresa"
+
+#~ msgid "Invalid port number"
+#~ msgstr "Neplatné číslo portu"
+
+#~ msgid "Socket not connected"
+#~ msgstr "Soket není připojen"
+
+#~ msgid "Insufficient resources to complete the operation"
+#~ msgstr "Nedostatek zdrojů pro dokončení operace"
+
+#~ msgid "Can't setup a listening socket : bind failed"
+#~ msgstr "Nelze vytvořit naslouchací soket : vázání selhalo"
+
+#~ msgid "Can't resolve the localhost name"
+#~ msgstr "Nelze zjistit lokálního hostitele"
+
+#~ msgid "Unsupported image format"
+#~ msgstr "Nepodporovaný formát obrázku"
+
+#~ msgid "Can't open file for appending"
+#~ msgstr "Nelze otevřít soubor pro připojování"
+
+#~ msgid "Can't open file for writing"
+#~ msgstr "Nelze otevřít soubor pro zápis"
+
+#~ msgid "File I/O error"
+#~ msgstr "Chyba I/O souboru"
+
+#~ msgid "Acknowledge error"
+#~ msgstr "Chyba potvrzení"
+
+#~ msgid "Can't open file for reading"
+#~ msgstr "Nelze otevřít soubor pro čtení"
+
+#~ msgid "Can't send a zero-size file"
+#~ msgstr "Nelze poslat soubor s nulovou délkou"
+
+#~ msgid "Missing popup name"
+#~ msgstr "Chybí jméno popupu"
+
+#~ msgid "'item', 'popup', 'label' or 'separator' keyword expected"
+#~ msgstr "'item', 'popup', 'label' nebo 'separator' klíčová slova očekávána"
+
+#~ msgid "Self modification not allowed"
+#~ msgstr "Vlastní úprava není dovolena"
+
+#~ msgid "UNUSED"
+#~ msgstr "NEPOUŽITO"
+
+#~ msgid "Feature not available"
+#~ msgstr "Funkce není dostupná"
+
+#~ msgid "Unexpected characters in array index"
+#~ msgstr "Neočekávané znaky v indexu pole"
+
+#~ msgid "Unexpected end in expression"
+#~ msgstr "Neočekávaný konec ve výrazu"
+
+#~ msgid "Unexpected end in array index"
+#~ msgstr "Neočekávaný konec indexu pole"
+
+#~ msgid "Connection thru HTTP proxy failed"
+#~ msgstr "Spojení přes HTTP proxy selhalo"
+
+#~ msgid "Case , match , regexp , default or break keyword expected"
+#~ msgstr "Case , match , regexp , default nebo break klíčová slova očekávána"
+
+#~ msgid "Access denied"
+#~ msgstr "Přístup zamítnut"
+
+#~ msgid "Address already in use"
+#~ msgstr "Adresa se již používá"
+
+#~ msgid "Can't assign the requested address"
+#~ msgstr "Nelze přiřadit požadovanou adresu"
+
+#~ msgid "Connection reset by peer"
+#~ msgstr "Spojení resetováno peer"
+
+#~ msgid "Host unreachable (no route to host)"
+#~ msgstr "Hostitel není dostupný (neexistuje cesta k hostiteli)"
+
+#~ msgid "Variable expected"
+#~ msgstr "Chybí proměnná"
+
+#~ msgid "Invalid array index: positive integer expected"
+#~ msgstr "Neplatný index pole: očekáván kladný integer"
+
+#~ msgid "listen() call failed"
+#~ msgstr "volání listen() selhalo"
+
+#~ msgid "This executable has been compiled without SSL support"
+#~ msgstr "Spustitelný soubor byl přeložen bez podpory SSL"
+
+#~ msgid "Secure Socket Layer error"
+#~ msgstr "Chyba SSL"
+
+#~ msgid "Slash (/) character expected"
+#~ msgstr "Očekáváno lomítko (/)"
+
+#~ msgid "Unknown string manipulation operation"
+#~ msgstr "Neznámá operace manipulace s řetězcem"
+
+#~ msgid "Operation aborted"
+#~ msgstr "Operace přerušena"
+
+#~ msgid "Unexpected token"
+#~ msgstr "Neočekávaný token"
+
+#~ msgid "Scope object already defined (unexpected @)"
+#~ msgstr "Objekt pole je již definován (neočekávaný @)"
+
+#~ msgid "There is no $this pointer in this scope (unexpected @)"
+#~ msgstr "V tomto poli není žádný $this ukazatel (neočekávaný @)"
+
+#~ msgid "- d -- h -- m -- s"
+#~ msgstr "- d -- h -- m -- s"
+
+#~ msgid "%u h %u m %u s"
+#~ msgstr "%u h %u m %u s"
+
+#~ msgid "%u h %u%u m %u%u s"
+#~ msgstr "%u h %u%u %u m %u s"
+
+#~ msgid "%u m %u s"
+#~ msgstr "%u m %u s"
+
+#~ msgid "%u m %u%u s"
+#~ msgstr "%u m %u%u s"
+
+#~ msgid "%u s"
+#~ msgstr "%u s"
+
+#~ msgid "%u d %u h %u m %u s"
+#~ msgstr "%u d %u h %u m %u s"
+
+#~ msgid "%u d %u%u h %u%u m %u%u s"
+#~ msgstr "%u d %u%u h %u%u m %u%u s"
+
+#~ msgid "Select color"
+#~ msgstr "Vyberte barvu"
+
+#~ msgid "&Basic colors"
+#~ msgstr "&Základní barvy"
+
+#~ msgid "&Custom colors"
+#~ msgstr "&Vlastní barvy"
+
+#~ msgid "&Red"
+#~ msgstr "&Červená"
+
+#~ msgid "&Green"
+#~ msgstr "&Zelená"
+
+#~ msgid "Bl&ue"
+#~ msgstr "&Modrá"
+
+#~ msgid "&Define Custom Colors >>"
+#~ msgstr "&Definovat vlastní barvy >>"
+
+#~ msgid "&Add to Custom Colors"
+#~ msgstr "&Přidat k vlastním barvám"
+
+#~ msgid "Select Font"
+#~ msgstr "Vyberte Font"
+
+#~ msgid "&Font"
+#~ msgstr "&Font"
+
+#~ msgid "Font st&yle"
+#~ msgstr "St&yl"
+
+#~ msgid "&Size"
+#~ msgstr "&Velikost"
+
+#~ msgid "Sample"
+#~ msgstr "Vzorek"
+
+#~ msgid "Effects"
+#~ msgstr "Efekty"
+
+#~ msgid "Stri&keout"
+#~ msgstr "Př&eškrtnutý"
+
+#~ msgid "&Underline"
+#~ msgstr "&Podtržený"
+
+#~ msgid "Scr&ipt"
+#~ msgstr "Skri&pt"
+
+#~ msgid "Parent Directory"
+#~ msgstr "Nadřazený adresář"
+
+#~ msgid "Back"
+#~ msgstr "Předchozí"
+
+#~ msgid "Forward"
+#~ msgstr "Vpřed"
+
+#~ msgid "Reload"
+#~ msgstr "Obnovit"
+
+#~ msgid "New Directory"
+#~ msgstr "Nový adresář"
+
+#~ msgid "Bookmarks"
+#~ msgstr "Záložky"
+
+#~ msgid "Add Bookmark"
+#~ msgstr "Přidat k záložkám"
+
+#~ msgid "&Edit Bookmarks"
+#~ msgstr "Upravit &záložky"
+
+#~ msgid "New Bookmark Folder..."
+#~ msgstr "Nová složka záložek..."
+
+#~ msgid "Sorting"
+#~ msgstr "Třídění"
+
+#~ msgid "By Name"
+#~ msgstr "Podle jména"
+
+#~ msgid "By Date"
+#~ msgstr "Podle data"
+
+#~ msgid "By Size"
+#~ msgstr "Podle velikosti"
+
+#~ msgid "Reverse"
+#~ msgstr "Opačné"
+
+#~ msgid "Directories First"
+#~ msgstr "Adresáře první"
+
+#~ msgid "Case Insensitive"
+#~ msgstr "Nerozlišovat velikost"
+
+#~ msgid "Short View"
+#~ msgstr "Stručné zobrazení"
+
+#~ msgid "Detailed View"
+#~ msgstr "Detailní zobrazení"
+
+#~ msgid "Show Hidden Files"
+#~ msgstr "Zobrazovat skryté soubory"
+
+#~ msgid "Show Quick Access Navigation Panel"
+#~ msgstr "Zobrazit panel rychlé navigace"
+
+#~ msgid "Show Preview"
+#~ msgstr "Zobrazit náhled"
+
+#~ msgid "Separate Directories"
+#~ msgstr "Oddělit adresáře"
+
+#~ msgid "Often used directories"
+#~ msgstr "Často používané adresáře"
+
+#~ msgid "Desktop"
+#~ msgstr "Pracovní plocha"
+
+#~ msgid "Home Directory"
+#~ msgstr "Domovský adresář"
+
+#~ msgid "Floppy"
+#~ msgstr "Disketa"
+
+#~ msgid "Temporary Files"
+#~ msgstr "Dočasné soubory"
+
+#~ msgid "Network"
+#~ msgstr "Síť"
+
+#~ msgid "New Directory..."
+#~ msgstr "Nový adresář..."
+
+#~ msgid "Thumbnail Previews"
+#~ msgstr "Náhledy miniatur"
+
+#~ msgid "Large Icons"
+#~ msgstr "Velké ikony"
+
+#~ msgid "Small Icons"
+#~ msgstr "Malé ikony"
+
+#~ msgid "Properties..."
+#~ msgstr "Vlastnosti..."
+
+#~ msgid "&Automatic Preview"
+#~ msgstr "&Automatický náhled"
+
+#~ msgid "&Preview"
+#~ msgstr "Ná&hled"
+
+#~ msgid "&Filter:"
+#~ msgstr "&Maska:"
+
+#~ msgid "All Files"
+#~ msgstr "Všechny soubory"
+
+#~ msgid "Directory"
+#~ msgstr "Adresář"
+
+#~ msgid "Fifo"
+#~ msgstr "Fifo"
+
+#~ msgid "Block device"
+#~ msgstr "Blokové zařízení"
+
+#~ msgid "Char device"
+#~ msgstr "Znakové zařízení"
+
+#~ msgid "Octet stream (unknown)"
+#~ msgstr "Datový proud (neznámý)"
+
+#~ msgid "Invalid crypt engine"
+#~ msgstr "Neplatný šifrovací nástroj"
+
+#~ msgid "WARNING : Can not load image library %s"
+#~ msgstr "UPOZORNĚNÍ : Nelze nahrát obrázkovou knihovnu %s"
+
+#~ msgid "The specified network has no server entries"
+#~ msgstr "Zvolená síť neobsahuje žádné záznamy serverů"
+
+#~ msgid ""
+#~ "The server specification seems to be in the net:<string> but the network "
+#~ "couln't be found in the database"
+#~ msgstr ""
+#~ "Specifikace serveru vypadá jako by byla v síti:<string> ale síť nelze "
+#~ "nalézt v databázi"
+
+#~ msgid ""
+#~ "The server specification seems to be in the id:<string> form but the "
+#~ "identifier coulnd't be found in the database"
+#~ msgstr ""
+#~ "Specifikace serveru vypadá jako by byla v id:<string> formuláři, ale "
+#~ "identifikátor nelze nalézt v databázi"
+
+#~ msgid "Aborted"
+#~ msgstr "Přerušeno"
+
+#~ msgid "No request"
+#~ msgstr "Žádný požadavek"
+
+#~ msgid "No filename specified for the \"StoreToFile\" processing type"
+#~ msgstr "Žádný název souboru nebyl určen pro \"StoreToFile\" typ zpracování"
+
+#~ msgid "Invalid URL: Missing hostname"
+#~ msgstr "Neplatné URL: Chybí hostitel"
+
+#, fuzzy
+#~ msgid "Unsupported protocol %1"
+#~ msgstr "Nepodporovaný protokol %s"
+
+#~ msgid "Unable to start the DNS lookup"
+#~ msgstr "Nelze spustit vyhledávání v DNS"
+
+#~ msgid "Looking up host %s"
+#~ msgstr "Zjišťuji hostitele %s"
+
+#~ msgid "Host %s resolved to %s"
+#~ msgstr "Hostitel %s zjištěn jako %s"
+
+#~ msgid "Unable to start the request slave thread"
+#~ msgstr "Nelze spustit požadované slave vlákno"
+
+#~ msgid "Contacting host %s on port %u"
+#~ msgstr "Kontakt hostitele %s na portu %u"
+
+#~ msgid "Connection established, sending request"
+#~ msgstr "Spojení navázáno, zasílá se požadavek"
+
+#~ msgid "Failed to rename the existing file, please rename manually and retry"
+#~ msgstr ""
+#~ "Selhalo přejmenování existujícího souboru, prosím zkuste to ručně a znovu"
+
+#~ msgid "Can't open file \"%s\" for writing"
+#~ msgstr "Nelze otevřít soubor \"%s\" pro zápis"
+
+#~ msgid "Invalid HTTP response: %s"
+#~ msgstr "Neplatná HTTP odezva: %s"
+
+#~ msgid "Received HTTP response: %s"
+#~ msgstr "Obdržena HTTP odezva: %s"
+
+#~ msgid "Stream exceeding maximum length"
+#~ msgstr "Proud překračuje maximální délku"
+
+#~ msgid "Stream exceeded expected length"
+#~ msgstr "Proud překročil očekávanou délku"
+
+#~ msgid "Header too long: exceeded 4096 bytes"
+#~ msgstr "Hlavička příliš dlouhá: přesahuje 4096 bajtů"
+
+#~ msgid "Select error: %s (errno=%d)"
+#~ msgstr "Chyba výběru: %s (errno=%d)"
+
+#~ msgid "Operation timed out"
+#~ msgstr "Časový limit operace vypršel"
+
+#~ msgid "Failed to enter non blocking mode"
+#~ msgstr "Selhal vstup do neblokovacího módu"
+
+#~ msgid "Invalid target address"
+#~ msgstr "Neplatná cílová adresa"
+
+#~ msgid "Connect error: %s (errno=%d)"
+#~ msgstr "Chyba spojení: %s (errno=%d)"
+
+#~ msgid "Write error: %s (errno=%d)"
+#~ msgstr "Chyba zápisu: %s (errno=%d)"
+
+#~ msgid "Operation timed out (while selecting for read)"
+#~ msgstr "Časový limit operace vypršel (při označování pro čtení)"
+
+#~ msgid "Read error: %s (errno=%d)"
+#~ msgstr "Chyba čtení: %s (errno=%d)"
+
+#~ msgid "Encoding"
+#~ msgstr "Kódování"
+
+#, fuzzy
+#~ msgid "Reconnection Options"
+#~ msgstr "připojení"
+
+#, fuzzy
+#~ msgid "Usage"
+#~ msgstr "Použití:"
+
+#, fuzzy
+#~ msgid "message"
+#~ msgstr "Zprávy"
+
+#~ msgid "Usage:"
+#~ msgstr "Použití:"
+
+#~ msgid "You must be connected to a server"
+#~ msgstr "Musíte být připojeni k serveru"
+
+#~ msgid "Lag is"
+#~ msgstr "Lag je"
+
+#~ msgid "reason"
+#~ msgstr "důvod"
+
+#~ msgid "This is not a channel window"
+#~ msgstr "Toto není okno kanálu"
+
+#~ msgid "Unsupported type: $0"
+#~ msgstr "Nepodporovaný typ: $0"
+
+#~ msgid "You must use DNS in an IRC context"
+#~ msgstr "Musíte použít DNS v IRC kontextu"
+
+#~ msgid "No such user: $0"
+#~ msgstr "Žádný uživatel: $0"
+
+#~ msgid "Options"
+#~ msgstr "Možnosti"
+
+#~ msgid "Stop Highlighting (Local)"
+#~ msgstr "Vypnout Zvýrazňování (Lokálně)"
+
+#~ msgid "Start Highlighting (Local)"
+#~ msgstr "Zapnout Zvýrazňování (Lokálně)"
+
+#~ msgid "Always Highlight"
+#~ msgstr "Vždy zvýrazňovat"
+
+#~ msgid "Highlight as"
+#~ msgstr "Zvýrazňovat jako"
+
+#~ msgid "Stop Highlighting"
+#~ msgstr "Zastavit zvýrazňování"
+
+#~ msgid "is being ignored"
+#~ msgstr "je ignorován"
+
+#~ msgid "is not being ignored"
+#~ msgstr "není ignorován"
+
+#~ msgid "Ignore as"
+#~ msgstr "Ignorovat jako"
+
+#~ msgid "Unignore"
+#~ msgstr "neignorovat"
+
+#~ msgid "is registered as"
+#~ msgstr "je registrován jako"
+
+#~ msgid "is in the notify list"
+#~ msgstr "je v seznamu oznamování"
+
+#~ msgid "has a default avatar"
+#~ msgstr "má výchozí avatar"
+
+#~ msgid "is not registered"
+#~ msgstr "není registrovaný"
+
+#~ msgid "Register"
+#~ msgstr "Registrovat"
+
+#~ msgid "Quick Registration"
+#~ msgstr "Rychlá registrace"
+
+#~ msgid "Register as"
+#~ msgstr "Registrovat jako"
+
+#~ msgid "Unregister"
+#~ msgstr "Odregistrovat"
+
+#~ msgid "Add to Notify"
+#~ msgstr "Přidat k Oznamování"
+
+#~ msgid "Remove from Notify"
+#~ msgstr "Odebrat z Oznamování"
+
+#~ msgid "Choose"
+#~ msgstr "Vybrat"
+
+#~ msgid "Choose Avatar Image File"
+#~ msgstr "Vyberte soubor obrázku Avataru"
+
+#~ msgid "Set as Default"
+#~ msgstr "Nastavit jako výchozí"
+
+#~ msgid "Clear Default"
+#~ msgstr "Smazat výchozí"
+
+#, fuzzy
+#~ msgid "Copy To Clipboard"
+#~ msgstr "Kopírovat do schránky"
+
+#~ msgid "Channel Owner"
+#~ msgstr "Vlastník kanálu"
+
+#~ msgid "Channel Administrator"
+#~ msgstr "Administrátor kanálu"
+
+#~ msgid "Channel Operator"
+#~ msgstr "Operátor kanálu"
+
+#~ msgid "Half Operator"
+#~ msgstr "Polo-operátor"
+
+#~ msgid "User Operator"
+#~ msgstr "Uživatel-operátor"
+
+#~ msgid "Normal User"
+#~ msgstr "Normální uživatel"
+
+#~ msgid "Ban"
+#~ msgstr "Ban"
+
+#~ msgid "Multiple Users"
+#~ msgstr "Více uživatelů"
+
+#~ msgid "&Ban"
+#~ msgstr "&Ban"
+
+#~ msgid "idle time"
+#~ msgstr "nečinnost"
+
+#~ msgid "&Information"
+#~ msgstr "&Informace"
+
+#~ msgid "DNS for"
+#~ msgstr "DNS pro"
+
+#~ msgid "Mask for"
+#~ msgstr "Maska pro"
+
+#~ msgid "&Control"
+#~ msgstr "&Ovládání"
+
+#~ msgid "O&wner"
+#~ msgstr "&Vlastník"
+
+#~ msgid "&Deowner"
+#~ msgstr "&Nevlastník"
+
+#~ msgid "&Administrator"
+#~ msgstr "&Administrátor"
+
+#~ msgid "&Deadministrator"
+#~ msgstr "&Deadministrátor"
+
+#~ msgid "&Op"
+#~ msgstr "&Op"
+
+#~ msgid "&Deop"
+#~ msgstr "&Deop"
+
+#~ msgid "&Halfop"
+#~ msgstr "&Polo-op"
+
+#~ msgid "&Dehalfop"
+#~ msgstr "Polo&deop"
+
+#~ msgid "&Voice"
+#~ msgstr "&Voice"
+
+#~ msgid "D&evoice"
+#~ msgstr "D&evoice"
+
+#~ msgid "&Kick"
+#~ msgstr "&Vykopnout"
+
+#~ msgid "K&ick"
+#~ msgstr "V&ykopnout"
+
+#~ msgid "With..."
+#~ msgstr "s..."
+
+#~ msgid "Kick Reason"
+#~ msgstr "Důvod Vykopnutí"
+
+#~ msgid "Enter a kick reason"
+#~ msgstr "Zadejte důvod vykopnutí"
+
+#~ msgid "Kick/Ban"
+#~ msgstr "Vykopnutí/Ban"
+
+#~ msgid "Kick/Ban Reason"
+#~ msgstr "Důvod Vykopnutí/Banu"
+
+#~ msgid "Enter a kick/ban reason"
+#~ msgstr "Zadejte kick/ban důvod"
+
+#~ msgid "&Kick/Ban"
+#~ msgstr "&Vykopnutí/Ban"
+
+#~ msgid "&Query"
+#~ msgstr "&Query"
+
+#~ msgid "&Registration"
+#~ msgstr "&Registrace"
+
+#~ msgid "Ig&nore"
+#~ msgstr "Ig&norování"
+
+#~ msgid "Notify Avatar"
+#~ msgstr "Oznámit Avatar"
+
+#~ msgid "&Part"
+#~ msgstr "&Odejít"
+
+#~ msgid "Channels"
+#~ msgstr "Kanály"
+
+#~ msgid "&Join Channels..."
+#~ msgstr "Při&jít do kanálů..."
+
+#~ msgid "&Hop"
+#~ msgstr "&Hop"
+
+#~ msgid "l (Connections)"
+#~ msgstr "l (Spojení)"
+
+#~ msgid "m (Command Usage)"
+#~ msgstr "m (Použití příkazu)"
+
+#~ msgid "o (Operators)"
+#~ msgstr "o (Operátoři)"
+
+#~ msgid "t (Connection stats ?)"
+#~ msgstr "t (Statistiky spojení ?)"
+
+#~ msgid "u (Uptime)"
+#~ msgstr "u (Uptime)"
+
+#~ msgid "y (y-Lines)"
+#~ msgstr "y (y-Linky)"
+
+#~ msgid "z (Debug Stats?)"
+#~ msgstr "z (Debug Stats?)"
+
+#~ msgid "Chat with"
+#~ msgstr "Chat s"
+
+#~ msgid "Secure Chat with"
+#~ msgstr "Zabezpečený Chat s"
+
+#~ msgid "Send to"
+#~ msgstr "Poslat k"
+
+#~ msgid "Reverse Send to"
+#~ msgstr "Opačně Poslat k"
+
+#~ msgid "TDCC Send to"
+#~ msgstr "TDCC Poslat k"
+
+#~ msgid "TDCC Reverse Send to"
+#~ msgstr "TDCC Opačně Poslat k"
+
+#~ msgid "Voice Chat"
+#~ msgstr "Hlasový Chat"
+
+#~ msgid "&Ignore"
+#~ msgstr "&Ignorovat"
+
+#~ msgid "Logging to"
+#~ msgstr "Logovat do"
+
+#~ msgid "Flush Log File"
+#~ msgstr "Vyčistit soubor logů"
+
+#~ msgid "Stop Logging"
+#~ msgstr "Zastavit logování"
+
+#~ msgid "Not Logging"
+#~ msgstr "Neloguje se"
+
+#~ msgid "Log To Default File"
+#~ msgstr "Logovat do výchozího souboru"
+
+#~ msgid "Include Existing Buffer"
+#~ msgstr "Zahrnout existující buffer"
+
+#~ msgid "Log To..."
+#~ msgstr "Logovat do..."
+
+#~ msgid "Notify avatar"
+#~ msgstr "Oznámit Avatar"
+
+#~ msgid "The default script has been successfully installed."
+#~ msgstr "Výchozí skript byl úspěšně nainstalován."
+
+#~ msgid "To connect to a server, type /server <server name>"
+#~ msgstr "Pro připojení k serveru, napište /server <název serveru>"
+
+#~ msgid "Happy ircing :)"
+#~ msgstr "Veselé ircování :)"
+
+#~ msgid "The config file with id '%s' is not open"
+#~ msgstr "Konfigurační soubor s id '%s' není otevřen"
+
+#~ msgid "The config file with id '%s' is read only"
+#~ msgstr "Konfigurační soubor s id '%s' je jen pro čtení"
+
+#~ msgid "No nickname specified"
+#~ msgstr "Neurčena přezdívka"
+
+#~ msgid "No netmask specified"
+#~ msgstr "Nebyla určena maska sítě"
+
+#~ msgid "No property name specified"
+#~ msgstr "Neurčeno jméno vlastnosti"
+
+#~ msgid "Missing property name"
+#~ msgstr "Chybí název vlastnosti"
+
+#~ msgid "The specified window (%s) is not a channel/query/DCC chat"
+#~ msgstr "Určené okno (%s) není kanál, query, ani DCC chat"
+
+#~ msgid "No file specified"
+#~ msgstr "Nebyl určen žádný soubor"
+
+#~ msgid "Window %s not found"
+#~ msgstr "Okno %s nenalezeno"
+
+#~ msgid "Can't log to file %s"
+#~ msgstr "Nelze logovat do souboru %s"
+
+#~ msgid "Window with id '%s' not found, returning empty string"
+#~ msgstr "Okno s id '%s' nenalezeno, vrací prázdný řetězec"
+
+#~ msgid "Invalid progress value (%s)"
+#~ msgstr "Nesprávná hodnota průběhu (%s)"
+
+#~ msgid "Error:not enough parameters!"
+#~ msgstr "Chyba: nedostatek parametrů!"
+
+#~ msgid "The (%s) object is not a pixmap"
+#~ msgstr "Objekt (%s) není pixmapa"
+
+#~ msgid ""
+#~ "Error occured: the suitable file is not of the correct format or it is "
+#~ "not a valid icon number."
+#~ msgstr ""
+#~ "Vyskytla se chyba: soubor není ve správném formátu nebo nemá platné číslo "
+#~ "ikony."
+
+#~ msgid "Invalid index parameter (%s)"
+#~ msgstr "Neplatný parametr indexu (%s)"
+
+#~ msgid "Invalid parameter"
+#~ msgstr "Neplatný parametr"
+
+#~ msgid "Can't find the object "
+#~ msgstr "Nelze nalézt objekt "
+
+#~ msgid "Can't set a non-widget object"
+#~ msgstr "Nelze nastavit ne-widget objekt"
+
+#~ msgid "Can't find the tab object "
+#~ msgstr "Nelze najít objekt záložky "
+
+#~ msgid "Can't find the widget(%s)"
+#~ msgstr "Nelze najít widget(%s)"
+
+#~ msgid "Invalid marging value (%s)"
+#~ msgstr "Nesprávná hodnota okraje (%s)"
+
+#~ msgid "This object is not a toolbutton item!"
+#~ msgstr "Tento objekt není tlačítko nástrojové lišty!"
+
+#~ msgid "No value to insert"
+#~ msgstr "Žádná hodnota pro vložení"
+
+#~ msgid "Invalid index(%s)"
+#~ msgstr "Neplatný index(%s)"
+
+#~ msgid "No index specified"
+#~ msgstr "Nebyl určen index"
+
+#~ msgid "index %u out of range"
+#~ msgstr "index %u mimo rozsah"
+
+#~ msgid "Invalid index (%s)"
+#~ msgstr "Neplatný index (%s)"
+
+#~ msgid "Index %u out of range"
+#~ msgstr "Index %u mimo rozsah"
+
+#~ msgid "Invalid resize mode (%s): defaulting to Auto"
+#~ msgstr "Neplatný mód rozšíření (%s): nastaven výchozí Auto"
+
+#~ msgid "Invalid margin value (%s)"
+#~ msgstr "Nesprávná margin hodnota (%s)"
+
+#~ msgid "Invalid spacing value (%s)"
+#~ msgstr "Nesprávná spacing hodnota (%s)"
+
+#~ msgid "Invalid stretch value (%s)"
+#~ msgstr "Nesprávná stretch hodnota (%s)"
+
+#~ msgid "Invalid from_row parameter (%s)"
+#~ msgstr "Nesprávný from_row parametr (%s)"
+
+#~ msgid "Invalid to_row parameter (%s)"
+#~ msgstr "Nesprávný to_row parametr (%s)"
+
+#~ msgid "Invalid from_column parameter (%s)"
+#~ msgstr "Nesprávný from_column parametr (%s)"
+
+#~ msgid "Invalid to_column parameter (%s)"
+#~ msgstr "Nesprávný to_column parametr (%s)"
+
+#~ msgid "Invalid parameters"
+#~ msgstr "Neplatné parametry"
+
+#~ msgid "Invalid XCor or YCor range:[min=0] [max=99]"
+#~ msgstr "Neplatný XCor nebo YCor rozsah:[min=0] [max=99]"
+
+#~ msgid "$begin() function MUST take 1 parmeter."
+#~ msgstr "$begin() funkce MUSÍ brát 1 parametr."
+
+#~ msgid "Can't find the widget/pixmap (%s)"
+#~ msgstr "Nelze najít widget/pixmapu (%s)"
+
+#~ msgid "Widget or Pixmap required (%s)"
+#~ msgstr "Je třeba widget nebo pixmapa (%s)"
+
+#~ msgid "Invalid bgMode: valid values are Transparent and Opaque"
+#~ msgstr "Neplatný bgMode: platné hodnoty jsou Transparent a Opaque"
+
+#~ msgid "Can't find the widget object to remove (%s)"
+#~ msgstr "Nelze najít widget objekt pro odebrání (%s)"
+
+#~ msgid "Can't remove a non-widget object"
+#~ msgstr "Nelze odebrat ne-widget objekt"
+
+#~ msgid "Can't find the widget (%s)"
+#~ msgstr "Nelze najít widget (%s)"
+
+#~ msgid "Widget type object required"
+#~ msgstr "Je potřeba typ objektu widget"
+
+#~ msgid "Invalid zoom value (%s)"
+#~ msgstr "Nesprávná hodnota přiblížení (%s)"
+
+#~ msgid "Invalid depth value (%s)"
+#~ msgstr "Nesprávná hodnota hloubky (%s)"
+
+#~ msgid "Invalid value (%s)"
+#~ msgstr "Nesprávná hodnota (%s)"
+
+#~ msgid "Invalid paragraph value (%s)"
+#~ msgstr "Nesprávná hodnota odstavce (%s)"
+
+#~ msgid "There is no widget"
+#~ msgstr "Zde není widget"
+
+#~ msgid " I can't find the specified file."
+#~ msgstr " Nelze nalézt zadaný soubor."
+
+#~ msgid " I cannot read the file."
+#~ msgstr " Nelze číst tento soubor."
+
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "Nelze najít objekt pro přidání (%s)"
+
+#~ msgid "Class %s is undefined"
+#~ msgstr "Třída %s je nedefinovaná"
+
+#~ msgid "The source object '%s' is not existing"
+#~ msgstr "Zdrojový objekt '%s' neexistuje"
+
+#~ msgid "The target object '%s' is not existing"
+#~ msgstr "Cílový objekt '%s' neexistuje"
+
+#~ msgid "No signal '%s' to disconnect"
+#~ msgstr "Žádný signál '%s' pro odpojení"
+
+#~ msgid "No destination specified"
+#~ msgstr "Nebyl určen cíl"
+
+#~ msgid "Can't find the destination widget/pixmap (%s)"
+#~ msgstr "Nelze najít cílový widget/pixmapu (%s)"
+
+#~ msgid "No source specified"
+#~ msgstr "Nebyl určen zdroj"
+
+#~ msgid "Can't find the source widget/pixmap (%s)"
+#~ msgstr "Nelze najít zrojový widget/pixmapu (%s)"
+
+#~ msgid "Invalid x parameter (%s)"
+#~ msgstr "Neplatný x parametr (%s)"
+
+#~ msgid "Invalid y parameter (%s)"
+#~ msgstr "Neplatný y parametr (%s)"
+
+#~ msgid "Can't find the listviewitem object to add (%s)"
+#~ msgstr "Nelze najít objekt položku seznamu pro přidání (%s)"
+
+#~ msgid "Invalid column (%s)"
+#~ msgstr "Neplatný sloupec (%s)"
+
+#~ msgid "Invalid margin parameter"
+#~ msgstr "Neplatný mezní parametr"
+
+#~ msgid "Unknown alignment: %s"
+#~ msgstr "Neznámé zarovnání: %s"
+
+#~ msgid "Unknown frame / shadow style: %s"
+#~ msgstr "Neznámý styl rámu / stínu: %s"
+
+#~ msgid "Hey ! You wanna know my echo mode or what ?"
+#~ msgstr "Hej ! Chceš znát můj echo mód nebo co ?"
+
+#~ msgid "Unknown echo mode"
+#~ msgstr "Neznámý echo mód"
+
+#~ msgid "No toolbar to add separator."
+#~ msgstr "Žádná lišta pro pro přidání oddělovače."
+
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "Nelze najít objekt pro přidání (%s)"
+
+#~ msgid "Invalid object."
+#~ msgstr "Neplatný objekt."
+
+#~ msgid "Can't setStretchableWidget a non-widget object."
+#~ msgstr "Nelze nastavit StretchableWidget na ne-widget objekt."
+
+#~ msgid "Can't find the popupmenu object to add (%s)"
+#~ msgstr "Nelze najít popupmenu objekt pro přidání (%s)"
+
+#~ msgid "Doesn't a popupmenu object"
+#~ msgstr "Není popupmenu objekt"
+
+#~ msgid "Can't find the widget object (%s)"
+#~ msgstr "Nelze najít widget objekt (%s)"
+
+#~ msgid "Invalid columns value (%s)"
+#~ msgstr "Nesprávná hodnota sloupců (%s)"
+
+#~ msgid "Invalid size value (%s)"
+#~ msgstr "Nesprávná hodnota velikosti (%s)"
+
+#~ msgid "Invalid icon identifier"
+#~ msgstr "Neplatný indentifikátor ikony"
+
+#~ msgid ""
+#~ "Can't set the current avatar to '%s': failed to start the http transfer"
+#~ msgstr ""
+#~ "Nelze nastavit současný avatar na '%s': selhalo spuštění http přenosu"
+
+#~ msgid "Can't set the current avatar to '%s': can't load the image"
+#~ msgstr "Nelze nastavit současný avatar na '%s': nelze načíst obrázek"
+
+#~ msgid "No environment variable name given"
+#~ msgstr "Nebylo zadáno jméno proměnné"
+
+#~ msgid "Can't find the window with id '%s'"
+#~ msgstr "Nelze nalézt okno s id '%s'"
+
+#~ msgid "The specified window (%s) is not a channel"
+#~ msgstr "Zadané okno (%s) není kanál"
+
+#~ msgid "No button name specified!"
+#~ msgstr "Nebyl určen název tlačítka!"
+
+#~ msgid ""
+#~ "The action \"%1\" is already defined as core action: choosing an "
+#~ "alternate name"
+#~ msgstr ""
+#~ "Akce \"%1\" je již definována jako core akce: vyberte si náhradní název"
+
+#~ msgid "No separator name specified"
+#~ msgstr "Nebyl určen název oddělovače"
+
+#~ msgid "No toolbar id specified"
+#~ msgstr "Nebylo určeno id lišty"
+
+#~ msgid "The action \"%s\" doesn't exist"
+#~ msgstr "Akce \"%s\" neexistuje"
+
+#~ msgid "Invalid IRC context id '%s'"
+#~ msgstr "Neplatný IRC kontext id '%s'"
+
+#, fuzzy
+#~ msgid "Background not found %s "
+#~ msgstr "Pozadí nenalezeno %Q "
+
+#~ msgid "Mask %s is already used to identify user %s"
+#~ msgstr "Maska %s je již použita u uživatele %s"
+
+#~ msgid "User not found (%s)"
+#~ msgstr "Uživatel nenalezen (%s)"
+
+#~ msgid "User %s not found"
+#~ msgstr "Uživatel %s nenalezen"
+
+#~ msgid "Mask %s already used to identify user %s"
+#~ msgstr "Maska %s je již použita u uživatele %s"
+
+#~ msgid "Mask %s not found"
+#~ msgstr "Maska %s nenalezena"
+
+#~ msgid "Sound file '%s' not found"
+#~ msgstr "Zvukový soubor '%s' nenalezen"
+
+#~ msgid "Unable to play sound '%s'"
+#~ msgstr "Nelze přehrát zvuk '%s'"
+
+#~ msgid "The specified name is empty"
+#~ msgstr "Zadané jméno je prázdné"
+
+#~ msgid "The specified visible name is empty"
+#~ msgstr "Určený viditelný název je prázdný"
+
+#~ msgid "The specified description is empty"
+#~ msgstr "Určený popis je prázdný"
+
+#~ msgid "The specified KVIrc version \"%s\" is not a valid version string"
+#~ msgstr "Zadaná verze KVIrc \"%s\" má neplatný řetězec verze"
+
+#~ msgid ""
+#~ "This KVIrc executable is too old to run this addon (minimum version "
+#~ "required is %s)"
+#~ msgstr ""
+#~ "Tato binárka KVIrc je příliš stará pro běh tohoto rozšíření (minimální "
+#~ "potřebná verze je %s)"
+
+#~ msgid "Destination file exists: no copy made"
+#~ msgstr "Cílový soubor existuje: kopie nevytvořena"
+
+#~ msgid "Failed to copy %s to %s"
+#~ msgstr "Selhalo kopírování %s do %s"
+
+#~ msgid "Failed to write to file %s"
+#~ msgstr "Selhal zápis do souboru %s"
+
+#~ msgid "Failed to rename %s to %s"
+#~ msgstr "Selhalo přejmenování %s na %s"
+
+#~ msgid "Failed to make the directory %s"
+#~ msgstr "Selhalo vytvoření adresáře %s"
+
+#~ msgid "Failed to remove the file %s"
+#~ msgstr "Selhalo smazání souboru %s"
+
+#~ msgid "Failed to remove the directory %s"
+#~ msgstr "Selhalo smazání adresáře %s"
+
+#~ msgid "The specified directory does not exist '%s'"
+#~ msgstr "Určený adresář neexistuje '%s'"
+
+#~ msgid "Can't open the file \"%s\" for reading"
+#~ msgstr "Nelze otevřít soubor \"%s\" pro čtení"
+
+#~ msgid "Read error for file %s"
+#~ msgstr "Chyba při čtení souboru %s"
+
+#~ msgid ""
+#~ "Read error for file %s (have been unable to read the requested size in "
+#~ "1000 retries)"
+#~ msgstr ""
+#~ "Chyba při čtení souboru %s (nešel přečíst v požadované velikosti během "
+#~ "1000 pokusů)"
+
+#~ msgid "No such options page class name"
+#~ msgstr "Neznámý název pro volbu"
+
+#, fuzzy
+#~ msgid "%Q is not an integer"
+#~ msgstr "Popup %Q není definován"
+
+#~ msgid "Window with caption '%s' not found, returning 0"
+#~ msgstr "Okno s titulkem '%s' nenalezeno, vrací 0"
+
+#~ msgid "The specified UNIX time is not valid (%s)"
+#~ msgstr "Zadaný UNIXový čas je neplatný (%s)"
+
+#~ msgid "The specified time format is not valid (%s)"
+#~ msgstr "Zadaný formát času je neplatný (%s)"
+
+#~ msgid "No option named '%s'"
+#~ msgstr "Žádná možnost '%s'"
+
+#~ msgid "No option name specified"
+#~ msgstr "Nebyl určen název možnosti"
+
+#~ msgid "No link text specified"
+#~ msgstr "Nebyl určen text odkazu"
+
+#~ msgid "No command specified"
+#~ msgstr "Žádný příkaz nebyl určen"
+
+#~ msgid "$sw should be called only in aliases"
+#~ msgstr "$sw může být voláno jen v aliasech"
+
+#~ msgid "Broken prologue code for menu '%s', error detail follows"
+#~ msgstr "Poškozený kód úvodu v menu '%s', následují detaily chyb"
+
+#~ msgid "Broken expression for menu item '%Q', ignoring"
+#~ msgstr "Poškozený výraz pro položku menu '%Q', ignoruji"
+
+#~ msgid "Can't find the external popup '%Q', ignoring"
+#~ msgstr "Nelze nalézt externí popup '%Q', ignoruji"
+
+#~ msgid "Broken epilogue code for menu '%s', error details follow"
+#~ msgstr "Poškozený kód závěru pro menu '%s', následují detaily chyb"
+
+#~ msgid "Function name expected"
+#~ msgstr "Chybí jméno funkce"
+
+#~ msgid "No catalogue %s for the current language found"
+#~ msgstr "Žádný katalog %s pro zvolený jazyk nebyl nalezen"
+
+#~ msgid "The catalogue %s was not loaded"
+#~ msgstr "Katalog %s nebyl načten"
+
+#~ msgid "Invalid icon specification '%s', using default"
+#~ msgstr "Neplatné určení ikony '%s', použita výchozí"
+
+#~ msgid "Missing icon number after the 'i' switch"
+#~ msgstr "Chybí číslo ikony za 'i' přepínačem"
+
+#~ msgid "Missing window ID after the 'w' switch"
+#~ msgstr "Chybí ID okna za 'w' přepínačem"
+
+#~ msgid "No targets specified"
+#~ msgstr "Neurčeny žádné cíle"
+
+#~ msgid "Missing new nickname"
+#~ msgstr "Chybí nová přezdívka"
+
+#~ msgid "Missing target"
+#~ msgstr "Chybí cíl"
+
+#~ msgid "Missing target channel"
+#~ msgstr "Chybí cílový kanál"
+
+#~ msgid "No such object (%s)"
+#~ msgstr "Žádný objekt (%s)"
+
+#~ msgid "Invalid screen coordinates"
+#~ msgstr "Neplatné koordináty obrazovky"
+
+#~ msgid "Invalid syntax for the screen coordinates"
+#~ msgstr "Neplatná syntaxe koordinátů obrazovky"
+
+#~ msgid "Invalid timeout delay '%s'"
+#~ msgstr "Neplatné trvání prodlevy '%s'"
+
+#~ msgid "Empty command block for timer '%s', timer not started"
+#~ msgstr "Prázdný příkazový blok pro časovač '%s', časovač nespuštěn"
+
+#~ msgid ""
+#~ "Internal error: Unable to add timer %s, insufficient system resources"
+#~ msgstr ""
+#~ "Interní chyba: Nelze přidat časovač %s, nedostatek systémových zdrojů"
+
+#~ msgid "No such timer (%s)"
+#~ msgstr "Žádný časovač (%s)"
+
+#~ msgid "No such event (%s)"
+#~ msgstr "Žádná událost (%s)"
+
+#~ msgid "No handler '%s' for raw numeric event '%d'"
+#~ msgstr "Není handler '%s' pro číselnou raw událost '%d'"
+
+#~ msgid "No handler '%s' for event '%s'"
+#~ msgstr "Není handler '%s' pro událost '%s'"
+
+#~ msgid "Failed to execute command '%s'"
+#~ msgstr "Nelze spustit příkaz '%s'"
+
+#~ msgid "Invalid IRC url (%s)"
+#~ msgstr "Neplatné IRC url (%s)"
+
+#~ msgid "The commandline for this url type seems to be broken (%s)"
+#~ msgstr "Příkazový řádek pro tento typ url vypadá jako poškozený (%s)"
+
+#~ msgid "No commandline specified for this type of url (%s)"
+#~ msgstr "Není určena příkazová řádka pro tento typ url (%s)"
+
+#~ msgid "Invalid pitch (%s): using default"
+#~ msgstr "Neplatná výška (%s): použita výchozí"
+
+#~ msgid "Invalid duration (%s): using default"
+#~ msgstr "Neplatná doba trvání (%s): použita výchozí"
+
+#~ msgid "Can't find the icon '%s'"
+#~ msgstr "Nelze nalézt ikonu '%s'"
+
+#~ msgid "Window button '%s' not found"
+#~ msgstr "Tlačítko okna '%s' nenalezeno"
+
+#~ msgid "Can't rebind the command sequence: missing window identifier"
+#~ msgstr "Nelze znovu vázat sekvenci příkazů: chybí identifikátor okna"
+
+#~ msgid "Can't rebind the command sequence: window with id %s not found"
+#~ msgstr "Nelze znovu vázat sekvenci příkazu: okno s id %s nenalezeno"
+
+#~ msgid "Unmatched parenthesis in expression body: ignoring trailing garbage"
+#~ msgstr "Nesouhlasící závorky v těle výrazu: ignoruji vlečený odpad"
+
+#~ msgid "Error triggered from timer callback handler %c'%s'"
+#~ msgstr "Chyba vyvolaná ze zpětného volání handleru časovače %c'%s'"
+
+#~ msgid "Timer callback handler '%s' is broken: killing"
+#~ msgstr "Časovač handleru zpětného volání '%s' je poškozen: ukončuji"
+
+#, fuzzy
+#~ msgid "Initializing scripting engine..."
+#~ msgstr "Neplatný šifrovací nástroj"
+
+#~ msgid "Loading actions..."
+#~ msgstr "Načítají se akce..."
+
+#~ msgid "Loading icons..."
+#~ msgstr "Načítaj se ikony..."
+
+#~ msgid "Performing early initializations..."
+#~ msgstr "provádí se první inicializace..."
+
+#~ msgid "Loading window configuration database..."
+#~ msgstr "Načítá se databáze nastavení oken..."
+
+#~ msgid "Loading server & proxy database..."
+#~ msgstr "Načítá se server & proxy databáze..."
+
+#~ msgid "Loading event handlers..."
+#~ msgstr "Načítají se handlery událostí..."
+
+#~ msgid "Loading raw event handlers..."
+#~ msgstr "Načítají se handlery raw událostí..."
+
+#~ msgid "Loading popups..."
+#~ msgstr "Načítají se popupy..."
+
+#~ msgid "Loading toolbars..."
+#~ msgstr "Načítají se nástrojové lišty..."
+
+#~ msgid "Loading aliases..."
+#~ msgstr "Načítají se aliasy..."
+
+#~ msgid "Loading text icon associations..."
+#~ msgstr "Načítají se asociace textových ikon..."
+
+#~ msgid "Loading recent entries..."
+#~ msgstr "Načítají se poslední záznamy..."
+
+#~ msgid "Loading media types..."
+#~ msgstr "Načítají se typy médií..."
+
+#~ msgid "Loading registered users..."
+#~ msgstr "Načítají se registrovaní uživatelé..."
+
+#~ msgid "Loading registered channels..."
+#~ msgstr "Načítají se registrované kanály..."
+
+#~ msgid "Loading file trader configuration..."
+#~ msgstr "Načítá se konfigurace správy souborů..."
+
+#~ msgid "Loading nick serv service configuration..."
+#~ msgstr "Načítá se nastavení nickserv služby..."
+
+#~ msgid "Loading history entries..."
+#~ msgstr "Načítají se záznamy historie..."
+
+#~ msgid "Loading avatar cache..."
+#~ msgstr "Načítá se avatar cache..."
+
+#~ msgid "Creating internal structures..."
+#~ msgstr "Vytváří se interní struktury..."
+
+#~ msgid "Starting up the engine..."
+#~ msgstr "Spouští se engine..."
+
+#~ msgid "Have fun! :)"
+#~ msgstr "Hodně zábavy! :)"
+
+#~ msgid "Show Crypto Controller"
+#~ msgstr "Zobrazit Šifrovací nástroj"
+
+#~ msgid "Toggle Notify List"
+#~ msgstr "Přepnout Seznam Oznamování"
+
+#~ msgid "Initiating startup sequence..."
+#~ msgstr "Inicializuje se spouštěcí sekvence..."
+
+#~ msgid "&New Alias"
+#~ msgstr "&Nový Alias"
+
+#, fuzzy
+#~ msgid "The specified window does not exist"
+#~ msgstr "Zadaný zdrojový objekt neexistuje"
+
+#, fuzzy
+#~ msgid "The specified timeout is not valid, assuming 0"
+#~ msgstr "Zadaný formát času je neplatný (%s)"
+
+#~ msgid "The -t switch expects a timeout in seconds"
+#~ msgstr "Přepínači -t chybí prodleva v sekundách"
+
+#~ msgid "No url specified"
+#~ msgstr "Nebylo určeno url"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %s"
+#~ msgstr "Selhalo spuštení procesu"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %Q"
+#~ msgstr "Selhalo spuštení procesu"
+
+#~ msgid "Input buffer: %d bytes"
+#~ msgstr "Vstupní buffer: %d bajtů"
+
+#~ msgid "Output buffer: %d bytes"
+#~ msgstr "Výstupní buffer: %d bajtů"
+
+#~ msgid "Volume: %i"
+#~ msgstr "Hlasitost: %i"
+
+#~ msgid "<unknown size>"
+#~ msgstr "<neznámá velikost>"
+
+#~ msgid "\"any\""
+#~ msgstr "\"libovolný\""
+
+#, fuzzy
+#~ msgid "Unable to get address of interface %Q"
+#~ msgstr "Naslouchat na adrese/rozhraní:"
+
+#~ msgid "No suitable interfaces to listen on, use -i"
+#~ msgstr "Nenalezeny interface pro naslouchání, použijte -i"
+
+#~ msgid "Missing target nickname"
+#~ msgstr "Chybí cílová přezdívka"
+
+#~ msgid "-c requires -i and -p"
+#~ msgstr "-c vyžaduje -i a -p"
+
+#~ msgid "Missing filename"
+#~ msgstr "Chybí jméno souboru"
+
+#, fuzzy
+#~ msgid "The file size is not an positive number"
+#~ msgstr "Zadaný parametr není celé číslo"
+
+#~ msgid "DCC VOICE support not enabled at compilation time"
+#~ msgstr "DCC VOICE podpora nebyla povolena při kompilaci"
+
+#, fuzzy
+#~ msgid "Invalid sample rate '%s', defaulting to 8000"
+#~ msgstr "Neplatný mód rozšíření (%s): nastaven výchozí Auto"
+
+#, fuzzy
+#~ msgid "The current window has no associated DCC session"
+#~ msgstr "Toto okno nemá asociován IRC kontext"
+
+#, fuzzy
+#~ msgid "The specified parameter is not a valid DCC identifier"
+#~ msgstr "Zadaný parametr není celé číslo"
+
+#, fuzzy
+#~ msgid "The specified window identifier is not valid"
+#~ msgstr "Zadaná vázací adresa (%Q) je neplatná"
+
+#, fuzzy
+#~ msgid "The first parameter must be an unsigned number"
+#~ msgstr "Zadaný parametr není celé číslo"
+
+#~ msgid "No filename specified"
+#~ msgstr "Nebylo určeno jméno souboru"
+
+#~ msgid "The file '%s' is not readable"
+#~ msgstr "Soubor '%s' je nečitelný"
+
+#~ msgid "Invalid timeout, ignoring"
+#~ msgstr "Neplatná prodleva, ignoruji"
+
+#, fuzzy
+#~ msgid "Invalid visible name: using default"
+#~ msgstr "Neplatná výška: použita výchozí"
+
+#, fuzzy
+#~ msgid "Ops..failed to add the sharedfile..."
+#~ msgstr "Selhalo načtení zvoleného obrázku"
+
+#, fuzzy
+#~ msgid "The specified file size is invalid"
+#~ msgstr "Zadaný UNIXový čas je neplatný (%s)"
+
+#~ msgid "No sharedfile with visible name '%s' and user mask '%s'"
+#~ msgstr ""
+#~ "Žádný sdílený soubor s viditelným názvem '%s' a maskou uživatele '%s'"
+
+#~ msgid "[Parser warning in '%s']: %s"
+#~ msgstr "[Parser varování v '%s']: %s"
+
+#~ msgid "defpopup: internal error"
+#~ msgstr "defpopup: interní chyba"
+
+#~ msgid "Loading options..."
+#~ msgstr "Načítají se možnosti..."
+
+#~ msgid "Windows XP style"
+#~ msgstr "Styl Windows XP"
+
+#~ msgid "Transport"
+#~ msgstr "Transport"
+
+#~ msgid "User Messages"
+#~ msgstr "Uživatelské zprávy"
+
+#~ msgid " I can't find the specified file %s."
+#~ msgstr " Nelze nalézt zadaný soubor %s."
+
+#~ msgid "-e mode change change"
+#~ msgstr "-e změna módu"
+
+#~ msgid ""
+#~ "Can't set the current avatar to '%s' (failed to start the http transfer): "
+#~ "no message sent"
+#~ msgstr ""
+#~ "Nelze nastavit současný avatar pro '%s' (selhalo spuštění http přenosu): "
+#~ "nebyla poslána zpráva"
+
+#~ msgid ""
+#~ "Can't set the current avatar to '%s' (can't load the image): no message "
+#~ "sent"
+#~ msgstr ""
+#~ "Nelze nastavit současný avatar pro '%s' (nelze načíst obrázek): zpráva "
+#~ "nebyla poslána"
+
+#~ msgid "minchia nullo !"
+#~ msgstr "neplatný objekt !"
+
+#~ msgid "Defaults"
+#~ msgstr "Výchozí"
+
+#~ msgid "Folders"
+#~ msgstr "Složky"
+
+#~ msgid "Pixmapqqqqqq objects required !"
+#~ msgstr "Je potřeba pixmapový objekt !"
+
+#~ msgid "Parser"
+#~ msgstr "Parser"
+
+#~ msgid "No socket text specified"
+#~ msgstr "Neurčen text soketu"
diff --git a/po/modules/options/options_de.po b/po/modules/options/options_de.po
new file mode 100644
index 00000000..69cd52bf
--- /dev/null
+++ b/po/modules/options/options_de.po
@@ -0,0 +1,13673 @@
+# translation of options_de.po to german
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Christoph Thielecke <[email protected]>, 2004, 2005.
+# Christoph Thielecke <[email protected]>, 2005.
+# Markus Rennings <[email protected]>, 2007.
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:304
+msgid ""
+msgstr ""
+"Project-Id-Version: options_de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-11-17 01:01+0100\n"
+"Last-Translator: Markus Rennings <[email protected]>\n"
+"Language-Team: german <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:232
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:51
+msgid "Font:"
+msgstr "Schriftart:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:47
+msgid "Background color:"
+msgstr "Hintergrundfarbe:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:129
+msgid "Background image:"
+msgstr "Hintergrundbild:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:51
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:46
+msgid "Horizontal align:"
+msgstr "Horizontale Ausrichtung:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:50
+msgid "Vertical align:"
+msgstr "Vertikale Ausrichtung:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:59
+msgid "Mark Line:"
+msgstr "Zeile markieren:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:66
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:124
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:59
+msgid "Tile"
+msgstr "Anordnung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:62
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:55
+msgid "Left"
+msgstr "Links"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:56
+msgid "Right"
+msgstr "Rechts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:132
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:62
+msgid "Center"
+msgstr "Mitte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:60
+msgid "Top"
+msgstr "Oben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:61
+msgid "Bottom"
+msgstr "Unten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:149
+msgid "Enable URL highlighting"
+msgstr "URL-Hervorhebung aktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:150
+msgid "Use line wrap margin"
+msgstr "Umbruchbegrenzung benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:151
+msgid "Maximum buffer size:"
+msgstr "Maximale Puffergrösse:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:152
+msgid " lines"
+msgstr " Zeilen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:153
+msgid "Link tooltip show delay:"
+msgstr "Verknüpfung-Kurzinfo-Anzeigeverzögerung:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:306
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:59
+msgid " msec"
+msgstr " ms"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:155
+msgid "Link tooltip hide delay:"
+msgstr "Verknüpfung-Kurzinfo-Ausblendverzögerung:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:157
+msgid "Track last read text line"
+msgstr "Zuletzt gelesene Textzeile verfolgen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:48
+msgid "NickServ Authentication Rule"
+msgstr "NickServ-Authentifikationsregel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:55
+msgid "Registered NickName"
+msgstr "Registrierter NickName"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:60
+msgid "Put here the nickname that you have registered with NickServ"
+msgstr ""
+"Hier den Spitznamen, mit dem man bei dem NickServ registriert ist, eingeben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:277
+msgid "NickServ Mask"
+msgstr "NickServ-Maske"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:70
+#, c-format
+msgid ""
+"This is the mask that NickServ must match to be correctly identified as the "
+"NickServ service. This usually will be something like <b>NickServ!"
+"[email protected]</b>.<br>You can use wildcards for this field, but "
+"generally it is a security flaw. If you're 100%% sure that NO user on the "
+"network can use the nickname \"NickServ\", the mask <b>NickServ!*@*</b> may "
+"be safe to use in this field."
+msgstr ""
+"Dies ist die Maske, wo NickServ korrekt als NickServ-Service passen muss. "
+"Das wird gewöhnlich etwas wie <b>[email protected]</b> sein."
+"<br>Es können Wildcards für dieses Feld benutzt werden, aber grundsätzlich "
+"ist dies ein Sicherheitsloch. Wenn man zu 100%% sicher ist, dass KEIN "
+"Benutzer im Netzwerk den Spitznamen \"NickServ\" benutzen kann, dann wird "
+"möglicherweise <b>Nickserv!*@*</b> für dieses Feld sicher sein."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:78
+msgid "Message Regexp"
+msgstr "Nachrichten-Regexp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:86
+msgid ""
+"This is the simple regular expression that the identification request "
+"message from NickServ must match in order to be correctly recognized.<br>The "
+"message is usually something like \"To identify yourself please use /ns "
+"IDENTIFY password\" and it is sent when the NickServ wants you to "
+"authenticate yourself. You can use the * and ? wildcards."
+msgstr ""
+"Dies ist der einfache reguläre Ausdruck, auf die die Indentifikationsanfrage "
+"passen von NickServ zum korrekten Erkennen muß.<br>Die Nachricht ist "
+"üblicherweise soetwas wie \"To identify yourself please use /ns IDENTIFY "
+"password\" und wird gesendet, wenn der NickServ die Authorisierung "
+"anfordert. Es können *- und ?-Platzhalter benutzt werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:259
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:279
+msgid "Identify Command"
+msgstr "Indentifizierung-Kommando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:98
+msgid ""
+"This is the command that will be executed when NickServ requests "
+"authentication for the nickname described in this rule (if the both server "
+"and NickServ mask are matched). This usually will be something like <b>msg "
+"NickServ identify &lt;yourpassword&gt;</b>.<br>You can use <b>msg -q</b> if "
+"you don't want the password echoed on the screen. Please note that there is "
+"no leading slash in this command."
+msgstr ""
+"<center>Dies ist das Kommando, welches ausgeführt wird, wenn NickServ die "
+"Authentifizierung für die Spitznamen, die in dieser Regel beschrieben sind "
+"(und die Server- und NickServ-Maske stimmt), anfordert. Das wird gewöhnlich "
+"soetwas wie <b>msg NickServ identify &lt;ihrpasswort&gt;</b> sein. Es kann "
+"\"msg -q\" benutzt werden, falls nicht gewünscht ist, dass das Passwort auf "
+"dem Bildschirm angezeigt wird. Bitte beachten, dass dabei kein führender "
+"Schrägstrich in diesem Kommando vorkommen darf.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:256
+msgid "Server mask"
+msgstr "Servermaske"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:117
+msgid ""
+"This is the mask that the current server must match in order for this rule "
+"to apply. It can contain * and ? wildcards.<br>Do NOT use simply \"*\" "
+"here..."
+msgstr ""
+"Dies ist die Maske, auf welche der aktuelle Server für diese Regel passen "
+"muss. Sie kann * und ?-Metazeichen enthalten.<br>Bitte kein einfaches \"*\" "
+"hier verwenden..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:128
+msgid "Hint: Move the mouse cursor over the fields to get help"
+msgstr "Tipp: Den Mauscursor über die Einträge führen, um Hilfe zu erhalten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:137
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:68
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:803
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:164
+msgid "Invalid NickServ Rule"
+msgstr "Ungültige NickServ-Regel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:169
+msgid "The Nickname field can't be empty!"
+msgstr "Das Spitznamen-Feld darf nicht leer sein!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:175
+msgid "The Nickname field can't contain spaces!"
+msgstr "Das Spitznamen-Feld darf keine Leerzeichen enthalten!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:183
+msgid "The NickServ mask can't be empty!<br>You must put at least * there."
+msgstr ""
+"Die NickServ-Maske darf nicht leer sein!<br>Es muss wenigstens * dort stehen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:191
+msgid "The Message Regexp can't be empty!<br>You must put at least * there."
+msgstr "De Spitznamen-Feld darf nicht leer sein!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:199
+msgid "The Identify Command can't be empty!"
+msgstr "Das Indentifizierung-Kommando kann nicht leer sein!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:265
+msgid "Enable NickServ Identification"
+msgstr "NickServ-Indentifikation aktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:269
+msgid "This check enables the automatic identification with NickServ"
+msgstr "Dies aktiviert die automatische Indentifikation mit NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:276
+msgid "Nickname"
+msgstr "Spitzname"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:258
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:278
+msgid "NickServ Request Mask"
+msgstr "NickServ-Anfragemaske"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:265
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on all the networks."
+"<br>Please be aware that this feature can cause your NickServ passwords to "
+"be stolen if used improperly. Make sure that you fully understand the "
+"NickServ authentication protocol.<br>In other words, be sure to know what "
+"you're doing.<br>Also note that the password that you provide is stored as "
+"<b>PLAIN TEXT</b>.<br>KVIrc supports also per-network NickServ "
+"authentication rules that can be created in the \"Advanced...\" network "
+"options (accessible from the servers dialog).</center>"
+msgstr ""
+"<center>Dies ist eine Liste von NickServ-Identifikationsregeln. KVIrc wird "
+"sie zum Nachbilden seiner automatischen Interaktion mit NickServ bei allen "
+"Netwerken benutzen.<br>Bitte beachten, dass diese Funktion zum Stehlen Ihrer "
+"NickServ-Passwörter verwendet werden kann, wenn dies falsch benutzt wird. "
+"Bitte folgen den Anweisungen in den Tooltipps folgen und sicherstellen, dass "
+"das NickServ-Authentifizierungsprotokoll vollständig verstanden wurde."
+"<br>Mit anderen Worten: Bitte sicher, dass man weiss, was man tut.<br>Bitte "
+"auch beachten, dass das Passwort, das verwendet wird, als <b>KLARTEXT</b> in "
+"der KVIrc-Konfigurationsdatei gespeichert wird.<br>KVIrc unterstützt auch "
+"NickServ-Authentisierungsregeln für jedes Netzwerk, die in den \"Erweitert..."
+"\"-Netzwerkoptionen (erreichbar vom Serverdialog).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:293
+msgid "Add Rule"
+msgstr "Regel hinzufügen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:298
+msgid "Edit Rule"
+msgstr "Regel bearbeiten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:302
+msgid "Delete Rule"
+msgstr "Regel löschen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:31
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:36
+msgid "Font"
+msgstr "Schriftart"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:38
+msgid "Foreground color"
+msgstr "Vordergrundfarbe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:37
+msgid "Background color"
+msgstr "Hintergrundfarbe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:34
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:44
+msgid "Background image"
+msgstr "Hintergrundbild"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:40
+msgid "Enable tray icon"
+msgstr "Tray-Icon aktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:41
+msgid "Close in tray"
+msgstr "In Tray schließen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:42
+msgid "Minimize in tray"
+msgstr "In Tray minimieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:44
+msgid "Enable tray icon flashing"
+msgstr "Aktiviere Tray-Icon-Blinken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:45
+msgid "Enable level-based message notification (not a message-type based)"
+msgstr ""
+"Aktiviere die Level-bezogene Benachrichtigung (keine Meldungstyp-bezogene)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:47
+msgid "Select message levels to notify"
+msgstr "Wähle Level zur Benachrichtigung aus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:49
+msgid "Minimum level for low-priority messages"
+msgstr "Minimaler Level für Meldungen niedriger Priorität"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:53
+msgid "Minimum level for high-priority message"
+msgstr "Minimaler Level für Meldungen hoher Priorität"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.cpp:40
+msgid ""
+"This section contains irc protection tools<br><p>like<b> flood, ignore, "
+"antispam. </b> </p>"
+msgstr ""
+"Dieser Abschnitt beinhaltet IRC-Schutz-Werkzeuge (protection tools)"
+"<br><p>wie<b> floot, ignore, antispam. </b></p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:40
+msgid ""
+"<center><b>Settings for CTCP.</b></center><p>The <b>Client-To-Client "
+"Protocol</b> (CTCP) is used to transmit special control messages over an IRC "
+"connection. These messages can request information from clients or negotiate "
+"file transfers.<br><br></p>"
+msgstr ""
+"<center><b>Einstellungen für CTCP.</b></center><p>Das <b>Client-To-Client-"
+"Protocol</b> (CTCP) wird zum Übertragen von speziellen Kontollnachrichten "
+"über eine IRC-Verbindung benutzt. Diese Nachrichten können Informationen von "
+"Clients anfragen oder Dateiübertragungen aushandeln.<br><br></p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:47
+msgid "CTCP Replies"
+msgstr "CTCP Antworten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:48
+msgid "Append to VERSION reply:"
+msgstr "An VERSION-Antwort anhängen:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:52
+msgid ""
+"<center>This text will be appended to the CTCP VERSION reply.<br>For "
+"example, you can place a script name here.</center>"
+msgstr ""
+"<center>Dieser Text wird an die CTCP VERSION-Antwort angehängt.<br>Zum "
+"Beispiel kann hier der Skriptname gesetzt werden.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:55
+msgid "Append to SOURCE reply:"
+msgstr "An SOURCE-Antwort anhängen:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:59
+msgid ""
+"<center>This text will be appended to the CTCP SOURCE reply.<br>For example, "
+"you can place the source URL for a script here.</center>"
+msgstr ""
+"<center>Dieser Text wird and die CTCP SOURCE-Antwort angehägt.<br>Zum "
+"Beispiel kann hier die Quell-URL für ein Skript gesetzt werden.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:69
+msgid "PAGE reply:"
+msgstr "PAGE-Antwort:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:73
+msgid ""
+"<center>This is the CTCP PAGE reply.<br>It should contain some sort of "
+"acknowledgement for CTCP PAGE messages.</center>"
+msgstr ""
+"<center>Dies ist die CTCP PAGE-Antwort.<br>Diese sollte einige Sorten der "
+"Bestätigung der CTCP PAGE-Nachrichten enthalten.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:76
+msgid "Show the CTCP replies in the active window"
+msgstr "CTCP-Antworten im aktiven Fenster anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:78
+msgid "Show dialog for CTCP page requests"
+msgstr "Dialog für CTCP Page-Anfragen anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:36
+msgid "Use tree taskbar"
+msgstr "Baumfensterleiste benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:37
+msgid "Sort windows by name"
+msgstr "Fenster nach Name sortieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:38
+msgid "Show window icons in taskbar"
+msgstr "Fenstersymbole in Fensterleiste anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:39
+msgid "Show activity meter in taskbar"
+msgstr "Aktivitätsmeter in Fensterleiste anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:41
+msgid ""
+"<center>This option enables the usage of the taskbar activity meter. Each "
+"window entry will have a small indicator of the activity that is going on in "
+"that window. The indicator is a small square that changes colors, dark "
+"colors mean low activity, while bright colors signal high activity. KVIrc "
+"also uses some heuristics to determine whether the activity is somewhat "
+"\"human\" or it is generated by automated entities (such as bots or IRC "
+"servers). \"Human\" activity causes the indicator to be shaded red while "
+"automated activity causes the indicator to be shaded blue.</center>"
+msgstr ""
+"<center>Diese Option aktiviert die Benutzung des "
+"Fensterleistenaktivitätsmeters. Jeder Fenstereintrag wird einen schmalen "
+"Indikator für die Aktivität, die in diesem Fenster ist, haben. Der Indikator "
+"ist ein kleines Quadrat, dass Farben ändert. Dunkle Farben stehen für "
+"niedrige Aktivität, helle Farben signalisieren hohe Aktivität. KVIrc benutzt "
+"auch einige Heurististiken, um festzustellen, welche Aktivität \"menschlich"
+"\" ist und welche automatisch erzeugt wurde (z.B durch Bots oder IRC-"
+"Server). \"Menschliche\" Aktivität verursacht schattiertes Rot, während "
+"automatische Aktivität den Indikator blau schattiert.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:49
+msgid "Show IRC context indicator in taskbar"
+msgstr "IRC-Kontextindikator in Fensterleiste anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:50
+msgid "Enable window tooltips"
+msgstr "Fensterkurzinfos aktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:233
+msgid "Text/Alert Colors"
+msgstr "Text-/Alarmfarben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:125
+msgid "Normal:"
+msgstr "Normal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:126
+msgid "Selected:"
+msgstr "Ausgewählt:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:236
+msgid "Alert Level 1:"
+msgstr "Alarmstufe 1:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:237
+msgid "Alert Level 2:"
+msgstr "Alarmstufe 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:238
+msgid "Alert Level 3:"
+msgstr "Alarmstufe 3:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:239
+msgid "Alert Level 4:"
+msgstr "Alarmstufe 4:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:240
+msgid "Alert Level 5:"
+msgstr "Alarmstufe 5:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:241
+msgid "Progress bar color:"
+msgstr "Farbe der Fortschrittsleiste:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:124
+msgid "Background Colors"
+msgstr "Hintergrundfarben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:212
+msgid "Show header"
+msgstr "Kopfzeilen (header) anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:214
+msgid "Minimum width:"
+msgstr "Minimale Breite:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:215
+msgid "Maximum width:"
+msgstr "Maximale Breite:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:235
+msgid "Minimized:"
+msgstr "Minimiert:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:242
+msgid "Minimum width of buttons:"
+msgstr "Minimale Breite der Knöpfe:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:244
+msgid "Set maximum button width"
+msgstr "Maximale Schaltflächenbreite:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:245
+msgid "Maximum width of buttons:"
+msgstr "Maximale Breite der Knöpfe:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:246
+msgid "Use flat buttons"
+msgstr "Flache Schaltflächen benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:96
+msgid "Network Details"
+msgstr "Netzwerkdetails"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:82
+msgid "Description:"
+msgstr "Beschreibung:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:116
+msgid "<center>Put here a brief description of the network.</center>"
+msgstr "<center>Hier eine Kurzbeschreibung des Netzwerkes angeben.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:477
+msgid "Properties"
+msgstr "Eigenschaften"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:123
+msgid "Username:"
+msgstr "Benutzername:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:134
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to servers "
+"on this network.\n"
+"If this field is left empty (most common case), KVIrc will use the default "
+"username specified in the \"Identity\" options tab.</center>"
+msgstr ""
+"<center>Dies ist der<b>Benutzername,</b> den KVIrc zum Einloggen in Server "
+"dieses Netzwerkes benutzen wird.\n"
+"Wenn dieses Feld leerbleibt (in den meisten Fällen), wird KVIrc den "
+"Standardbenutzernamen, der in dem \"Identität\"-Optionentab angegeben ist, "
+"benutzen.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:498
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:320
+msgid "Nickname:"
+msgstr "Spitzname:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:145
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to the servers on this network.<br>If this field is left empty (most "
+"common case), the default nickname (specified in the \"Identity\" settings) "
+"will be used.</center>"
+msgstr ""
+"<center>Hier kann ein \"spezieller\" <b>Spitzname</b> angegeben werden, der "
+"beim Einloggen in Server dieses Netzwerkes benutzt wird.<br>Wenn dieses Feld "
+"leergelassen wird (in den meisten Fällen), wird KVIrc den Standardspitznamen "
+"(angegeben im \"Identität\"-Einstellungen) benutzen.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:509
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:342
+msgid "Real name:"
+msgstr "Wirklicher Name:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:153
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with the servers on this network.<br>If you leave this field empty "
+"(most common case), the default \"real name\" (specified in the \"Identity\" "
+"settings) will be used.</center>"
+msgstr ""
+"<center>Hier kann ein \"spezieller\" <b>realer Name</b> angegeben werden, "
+"der beim Einloggen in Server dieses Netzwerkes benutzt werden soll.<br>Wenn "
+"dieses Feld leergelassen wird (in den meisten Fällen), wird KVIrc den "
+"Standard-\"Wirklicher Name\" (angegeben im \"Identität\"-Einstellungen) "
+"benutzen.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:644
+msgid "Encoding:"
+msgstr "Kodierung:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:164
+msgid ""
+"<center>This box allows you to choose the preferred encoding for the servers "
+"in this network. If you choose \"Use System Encoding\" then the encoding "
+"will be set to the systemwide value that you choose in the \"Encoding\" page "
+"of the options dialog.</center>"
+msgstr ""
+"<center>Hier kann die bevorzugte Kodierung für diesen Server festgelegt "
+"werden. Wenn \"Netzwerkkodierung benutzen\" aktiviert ist, so wird die "
+"Kodierung vom Netzwerk, zu dem der Server gehört, vererbt.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:173
+msgid "Use System Encoding"
+msgstr "Systemkodierung benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:185
+msgid "Connect to this network at startup"
+msgstr "Zu diesem Netzwerk beim Start von KVIrc verbinden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:189
+msgid ""
+"<center>This option will cause KVIrc to automatically connect to this "
+"network at startup</center>"
+msgstr ""
+"<center>Diese Option veranlasst KVIrc, nach dem Start von KVIrc, sich zu "
+"diesem IRC-Netzwerk zu verbinden.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:79
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:120
+msgid "General"
+msgstr "Allgemein"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:756
+msgid "Channels to join automatically upon connect:"
+msgstr "Nach dem Verbinden Kanäle automatisch betreten:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:211
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to a server in this network has been established. To add a "
+"channel, type its name in the text input below and click \"<b>Add</b>\".</"
+"center>"
+msgstr ""
+"<center>Hier kann eine Liste der Kanäle, die automatisch nach dem Herstellen "
+"der Verbindung zu einem Server dieses Netzwerkes betreten werden, gesetzt "
+"werden. Zum Hinzufügen eines Kanals, den Namen des Kanals unten im "
+"Texteingabefeld eingeben und auf \"<b>Hinzufügen</b>\" klicken</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:217
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:62
+msgid "Join Channels"
+msgstr "Kanäle betreten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:228
+msgid ""
+"<center>The following commands will be executed after a connection to a "
+"server in this network has been established.<br><b>Important:</b> Enter "
+"commands <b>without</b> a preceding slash (e.g. <tt>quote pass secret</tt> "
+"instead of <tt>/quote pass secret</tt>).<br>KVIrc will first send the USER "
+"command, then eventually PASS and NICK and then execute this command "
+"sequence.</center>"
+msgstr ""
+"<center>Die folgenden Kommandos werden, nach dem die Verbindung zu einem "
+"Server in diesem Netzwerk hergestellt wurde, ausgeführt.<br><b>Wichtig:</b> "
+"Kommandos <b>ohne</b> den Schrägstrich eingeben (z.B. <i>quote pass secret</"
+"i> anstatt <i>/quote pass secret</i>)<br>KVIrc wird zuerst das USER-Kommando "
+"senden, dann evenuell PASS- und NICK-Kommando und dann "
+"diese<br>Kommandosequenz.<br>Dies ist besonders nützlich bei Bouncern, die "
+"Loginkommandos erfordern.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:782
+msgid "On Connect"
+msgstr "Beim Verbinden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:249
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"a server in this network.<br><b>Important:</b> Enter commands <b>without</b> "
+"a preceding slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote "
+"privatelog</tt>).<br>This is useful for automatically opening queries, "
+"setting variables, etc.</center>"
+msgstr ""
+"<center>Die folgenden Kommandos werden nach dem erfolgreichem Einloggen in "
+"einen Server dieses Netzwerkes ausgeführt. <b>Wichtig:</b> Das Kommando "
+"<b>ohne</b> den Schrägstrich eingeben (z.B. <i>quote privatelog</i> anstatt "
+"<i>/quote privatelog<i>)<br>Dies ist nützlich zum automatischen Öffnen von "
+"Anfragen, Setzen von Variablen, etc.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:801
+msgid "On Login"
+msgstr "Beim Einloggen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:285
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on this network.<br>Please "
+"be aware that this feature can cause your NickServ passwords to be stolen if "
+"used improperly. Make sure that you fully understand the NickServ "
+"authentication protocol.<br>In other words, be sure to know what you're "
+"doing.<br>Also note that the password that you provide is stored as <b>PLAIN "
+"TEXT</b>.</center>"
+msgstr ""
+"<center>Dies ist eine Liste von NickServ-Identifikationsregeln. KVIrc wird "
+"sie zum Nachbilden seiner automatischen Interaktion mit NickServ benutzen."
+"<br>Bitte beachten, dass diese Funktion zum Stehlen Ihrer NickServ-"
+"Passwörter verwendet werden kann, wenn dies falsch benutzt wird. Bitte "
+"folgen den Anweisungen in den Tooltipps folgen und sicherstellen, dass das "
+"NickServ-Authentifizierungsprotokoll vollständig verstanden wurde.<br>Mit "
+"anderen Worten: Bitte sicher, dass man weiss, was man tut.<br>Bitte auch "
+"beachten, dass das Passwort, das verwendet wird, als <b>KLARTEXT</b> in der "
+"KVIrc-Konfigurationsdatei gespeichert wird.<br>Rechtsklick, um Regelzeilen "
+"hinzuzufügen oder zu entfernen.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:35
+msgid "NickServ"
+msgstr "NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:323
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:60
+msgid "&OK"
+msgstr "&OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:449
+msgid "Server Details"
+msgstr "Serverdetails"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:465
+msgid ""
+"<center>This is a brief description of this server. This field has no "
+"restrictions but many server lists use it to describe the server's physical "
+"location</center>"
+msgstr ""
+"<center>Dies ist eine kurze Beschreibung des Servers. Dieses Feld hat keine "
+"Beschränkung, aber viele Serverlisten benutzen es, um den physischen Ort zu "
+"beschreiben</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:484
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to this "
+"server.\n"
+"If this field is left empty (most common case), KVIrc will first look if an "
+"username is specified for the network that this server belongs to, and if "
+"that is empty then KVIrc will use the default username specified in the "
+"\"Identity\" options tab.</center>"
+msgstr ""
+"<center>Dies ist der<b>Benutzername,</b> den KVIrc zum Einloggen in diesen "
+"Server benutzen wird.\n"
+"Wenn dieses Feld leergelassen wird (in den meisten Fällen), wird KVIrc "
+"zuerst nachsehen, ob ein Benutzername für das Netzwerk, zu dem der Server "
+"gehört, vorhanden ist. Ist dieser leer, wird der Standardbenutzername, der "
+"in dem \"Identität\"-Optionentab angegeben ist, benutzt werden.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:490
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:127
+msgid "Password:"
+msgstr "Passwort:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:495
+msgid ""
+"<center>If this server requires a password, put it in this field, otherwise "
+"leave it empty.</center>"
+msgstr ""
+"<center>Wenn der Server ein Passwort erfordert, dieses in das Feld "
+"eintragen, ansonsten leer lassen.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:504
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to this server.<br>If this field is left empty (most common case), "
+"KVIrc will first look if a nickname is specified for the network that this "
+"server belongs to, and if that is empty then the default nickname (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center>Hier kann ein \"spezieller\" <b>Spitzname</b> angegeben werden, der "
+"beim Einloggen in diesen Server benutzt wird.<br>Wenn dieses Feld "
+"leergelassen wird (in den meisten Fällen), wird KVIrc zuerst nachsehen, ob "
+"ein Spitzname für das Netzwerk, zu dem der Server gehört, vorhanden ist. Ist "
+"dieser leer, wird der Standardspitzname, der in dem \"Identität\"-"
+"Optionentab angegeben ist, benutzt werden.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:513
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with this server.<br>If you leave this field empty (most common case), "
+"KVIrc will first look if a real name is specified for the network that this "
+"server belongs to, and if that is empty the default \"real name\" (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center>Hier kann ein \"spezieller\" <b>realer Name</b> angegeben werden, "
+"der beim Einloggen in diesen Server benutzt werden soll.<br>Wenn dieses Feld "
+"leergelassen wird (in den meisten Fällen), wird KVIrc zuerst nachsehen, ob "
+"ein realer Name für das Netzwerk, zu dem der Server gehört, vorhanden ist. "
+"Ist dieser leer, wird der Standard reale Name, der in dem \"Identität\"-"
+"Optionentab angegeben ist, benutzt werden.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:683
+msgid "User Mode"
+msgstr "Benutzermodus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:520
+msgid "Use default user mode"
+msgstr "Standard-Benutzermodus benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:522
+msgid ""
+"<center>If this is enabled, the global initial <b>user mode</b> (configured "
+"from the identity dialog) will be used. If disabled, you can configure an "
+"initial user mode for this server"
+msgstr ""
+"<center>Wenn Sie dies aktivieren, wird der globale erste <b>Benutzermodus</"
+"b> benutzt (dies kann im 'Indentität'-Dialog konfiguriert werden). Wenn Sie "
+"diese Option deaktivieren, können Sie hier den standardmässigen ersten "
+"Benutzermodus für diesen Server angeben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:684
+msgid "Invisible (+i)"
+msgstr "Unsichtbar (+i)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:534
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:685
+msgid "Server notices (+s)"
+msgstr "Servernotizen (+s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:686
+msgid "Wallops (+w)"
+msgstr "Rundsendenachrichten (+w)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:548
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:60
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:104
+msgid "Identity"
+msgstr "Identität"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:115
+msgid "Port:"
+msgstr "Port:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:565
+msgid ""
+"<center>This is the default <b>port</b> that this server will be contacted "
+"on.<br>Usually <b>6667</b> is OK.</center>"
+msgstr "<center> Standard<b></b><br><b></b> OK</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:571
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:119
+msgid "IP address:"
+msgstr "IP-Adresse:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:576
+msgid ""
+"<center>This is the <b>IP address</b> of this server, it is here for caching "
+"purposes.<br>If you leave this field empty, KVIrc will fill it in the first "
+"time it connects to the server. If you enable the \"cache IP address\" "
+"option below, KVIrc will use it as a \"cached result\" and avoid looking it "
+"up again.</center>"
+msgstr ""
+"<center>Dies ist die <b>IP-Adresse</b> des Servers, diese wird für "
+"Zwischenspeicherzwecke benutzt.<br>Wenn dieses Feld leergelassen wird, wird "
+"KVIrc es bei der ersten Verbindung zum Server füllen. Wenn \"IP-Adresse "
+"zwischenspeichern\" unten aktiviert ist, wird KVIrc diese als "
+"\"zwischengespeichertes Ergebnis\" benutzen und das erneute Auflösen "
+"vermeiden.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:596
+msgid "Cache IP address"
+msgstr "IP-Adresse zwischenspeichern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:599
+msgid ""
+"<center>This check will enable <b>IP address caching</b> for this server:"
+"<br>DNS lookups can be time-consuming and might be blocking on some "
+"platforms; this option will cause KVIrc to look up the server hostname only "
+"once.<br><br> Advanced: you can also use this option to force a certain "
+"server name to resolve to a fixed ip address when either the dns for that "
+"server is temporairly unreachable or you want to avoid the round-robin "
+"lookups.</center>"
+msgstr ""
+"<center>Diese Überprüfung wird das <b>IP-Adressen-Zwischenspeichern</b> für "
+"diesen Server aktivieren:<br>DNS-Auflösungen können dauern und kann auf "
+"einigen Plattformen blockieren; diese Option wird KVIrc dazu veranlassen, "
+"nur einmal den Hostnamen des Servers aufzulösen.<br><br>Erweitert: Diese "
+"Option kann auch dazu benutzt werden, um einen bestimmten Servernamen zu "
+"einer festen IP-Adresse aufzulösen, wenn der DNS-Server für diesen Namen "
+"temporär nicht erreichbar ist oder round-robin-Auflösungen vorgebeugt werden "
+"soll.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:609
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:140
+msgid "Use IPv6 protocol"
+msgstr "IPv6-Protokoll benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:619
+msgid ""
+"<center>This check identifies IPv6 servers.<br>If enabled, KVIrc will "
+"attempt to use the IPv6 protocol (thus your OS <b>must</b> have a working "
+"IPv6 stack and you <b>must</b> have an IPv6 connection).</center>"
+msgstr ""
+"<center>Diese Option identifiziert IPv6-Server.<br>Wenn aktiviert, wird "
+"KVIrc versuchen, das IPv6-Protokoll zu benutzen (Ihr Kernel muss einen "
+"<b>funktionierenden</b> IPv6-Stack und eine <b>IPv6-Verbindung</b> haben).</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:624
+msgid "Use SSL protocol"
+msgstr "SSL-Protokoll benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:627
+msgid ""
+"<center>This check will cause the connection to use the <b>Secure Socket "
+"Layer</b> encryption support. Obviously, this server must have support for "
+"this, too. :)</center>"
+msgstr ""
+"<center>Diese Option wird KVIrc veranlassen, dass die Verbindung die "
+"<b>Secure Socket Layer<b>-Verschlüsselungsunterstützung benutzt."
+"<br>Offensichtlich muss der Server die Unterstützung ebenfalls besitzen :)</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:636
+msgid "Connect to this server at startup"
+msgstr "Zu diesem Server beim Start von KVIrc verbinden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:641
+msgid ""
+"<center>This option will cause KVIrc to connect to the IRC server when it is "
+"started.</center>"
+msgstr ""
+"<center>Diese Option veranlasst KVIrc, nach dem Start von KVIrc zu dem IRC-"
+"Server zu verbinden.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:650
+msgid ""
+"<center>This box allows you to choose the preferred encoding for this sever. "
+"If you choose \"Use Network Encoding\" then the encoding will be inherited "
+"from the network that this server belongs to.</center>"
+msgstr ""
+"<center>Hier kann die bevorzugte Kodierung für diesen Server festgelegt "
+"werden. Wenn \"Netzwerkkodierung benutzen\" aktiviert ist, so wird die "
+"Kodierung vom Netzwerk, zu dem der Server gehört, vererbt.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:659
+msgid "Use Network Encoding"
+msgstr "Netzwerkkodierung benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:672
+msgid "Link filter:"
+msgstr "Verknüpfungsfilter:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:701
+msgid ""
+"<center>This field specifies the name of a module that exports a link filter "
+"for this type of server.<br>For plain IRC connections, you don't need any "
+"link filters; this is used for incompatible protocols.</center>"
+msgstr ""
+"<center>Dieses Feld legt den Namen eines Modules fest, dass einen "
+"Verknüpfungsfilter für diese Art des Servers exportiert.<br>Für einfache IRC-"
+"Verbindungen wird kein Verknüpfungsfilter benötigt: dies wird für nicht-"
+"kompatible Protokolle benutzt.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:705
+msgid "Id:"
+msgstr "Id:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:713
+msgid ""
+"<center>This field allows you to specify a really unique id for this server. "
+"You will then be able to use /server -x &lt;this_id&gt; to make the "
+"connection. This is especially useful when you have multiple server entries "
+"with the same hostname and port in different networks (bouncers?)</center>"
+msgstr ""
+"<center> Dieses Feld erlaubt Dir, eine wirklich einmalige Id für diesen "
+"Server anzugeben. Dies ermöglicht, die Verbindung über /server -x &lt:"
+"diese_Id&gt; aufzubauen. Dies ist besonders nützlich, wenn es in der Liste "
+"mehrere Server-Einträge mit dem selben Hostnamen und Port in verschiedenen "
+"Netzwerken gibt (Bouncers?)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:719
+msgid "Proxy server:"
+msgstr "Proxy-Server:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:724
+msgid ""
+"<center>This is the <b>proxy</b> that KVIrc will use to connect to thos "
+"server.\n"
+"If this field is set in \"Default\" KVirc will use global proxy settings, if "
+"it is set in \"Direct connection\" KVirc will connect to this server without "
+"proxy. You can define new proxy server in global options' \"Proxy servers\" "
+"menu.</center>"
+msgstr ""
+"<center>Dies ist der <b>Proxy</b>, den KVIrc nutzt, um sich zu diesem Server "
+"zu verbinden.\n"
+"Wenn dieses Feld auf \"Voreinstellung\" steht, wird KVIrc die globalen Proxy-"
+"Einstellungen nutzen, wenn es auf \"Direkte Verbindung\" steht, wird sich "
+"KVIrc zum Server ohne Proxy verbinden. Neue Proxy-Server können in den "
+"globalen Optionen unter \"Proxy Server\" definiert werden.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:729
+msgid "Default"
+msgstr "Voreinstellungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:730
+msgid "Direct connection"
+msgstr "direkte Verbindung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:746
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:28
+msgid "Connection"
+msgstr "Verbindung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:758
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to this server has been established. To add a channel, type its "
+"name in the text input below and click \"<b>Add</b>\".</center>"
+msgstr ""
+"<center>Hier kann eine Liste der Kanäle, die automatisch nach dem Herstellen "
+"der Verbindung betreten werden, gesetzt werden. Zum Hinzufügen eines Kanals, "
+"den Namen des Kanals unten im Texteingabefeld eingeben und auf "
+"\"<b>Hinzufügen</b>\" klicken</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:776
+msgid ""
+"<center>The following commands will be executed after a connection has been "
+"established.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote pass secret</tt> instead of <tt>/quote pass secret</"
+"tt>).<br>KVIrc will first send the USER command, then eventually PASS and "
+"NICK and then execute this command sequence.<br>This is particularly useful "
+"for IRC bouncers that require login commands.</center>"
+msgstr ""
+"<center>Die folgenden Kommandos werden, nach dem die Verbindung hergestellt "
+"wurde, ausgeführt.<br><b>Wichtig:</b> Kommandos <b>ohne</b> den Schrägstrich "
+"eingeben (z.B. <i>quote pass secret</i> anstatt <i>/quote pass secret</i>)"
+"<br>KVIrc wird zuerst das USER-Kommando senden, dann evenuell PASS- und NICK-"
+"Kommando und dann diese<br>Kommandosequenz.<br>Dies ist besonders nützlich "
+"bei Bouncern, die Loginkommandos erfordern.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:796
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"this server.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote privatelog</tt>)."
+"<br>This is useful for automatically opening queries, setting variables, etc."
+"</center>"
+msgstr ""
+"<center>Die folgenden Kommandos werden nach dem erfolgreichem Einloggen in "
+"diesen Server ausgeführt. <b>Wichtig:</b> Das Kommando <b>ohne</b> den "
+"Schrägstrich eingeben (z.B. <i>quote privatelog</i> anstatt <i>/quote "
+"privatelog<i>)<br>Dies ist nützlich zum automatischen Öffnen von Anfragen, "
+"Setzen von Variablen, etc.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1041
+msgid "Server"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1042
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:73
+msgid "Description"
+msgstr "Beschreibung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1054
+msgid ""
+"<center>This is the list of available IRC servers.<br>Right-click on the "
+"list to add or remove servers and perform other actions.<br>Double-click on "
+"a item for advanced options.</center>"
+msgstr ""
+"<center>Dies ist die Liste der verfügbaren IRC-Server.<br>Rechtsklick, um "
+"Server hinzuzufügen, zu löschen oder andere Optionen auszuführen."
+"<br>Doppelklick auf ein Element für erweiterte Optionen.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1069
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1430
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1554
+msgid "New Network"
+msgstr "Neues Netzwerk"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1077
+msgid "New Server"
+msgstr "Neuer Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1086
+msgid "Remove Network/Server"
+msgstr "Netzwerk/Server löschen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1098
+msgid "Copy Server"
+msgstr "Server kopieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1107
+msgid "Paste Server"
+msgstr "Server einfügen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1446
+msgid "Import List"
+msgstr "Liste importieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1125
+msgid "Active Configuration"
+msgstr "Aktive Konfiguration"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1332
+msgid "Server:"
+msgstr "Server:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1130
+msgid ""
+"<center>This is the name of the currently selected server or network</center>"
+msgstr ""
+"<center>Dies ist der Name des aktuell ausgewählten Servers oder Netzwerkes."
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1153
+msgid "Advanced..."
+msgstr "Erweitert..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1156
+msgid "<center>Click here to edit advanced options for this entry</center>"
+msgstr ""
+"<center>Hier klicken, um erweiterte Optionen für diesen Eintrag zu "
+"bearbeiten.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1159
+msgid "Connect &Now"
+msgstr "Jetzt verbi&nden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1164
+msgid ""
+"<center>Hit this button to connect to the currently selected server.</center>"
+msgstr ""
+"<center>Diesen Knopf klicken, um zum aktuell ausgewählten Server zu "
+"verbinden</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1177
+msgid ""
+"<center>This button shows a list of recently used servers. It allows you to "
+"quickly find them in the list.</center>"
+msgstr ""
+"<center>Das Klicken auf diesen Knopf zeigt eine Liste der zuletzt benutzten "
+"Server, dies erlaubt Ihnen, diese schnell in der Liste zu finden.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1181
+msgid "Show this dialog at startup"
+msgstr "Diesen Dialog beim Start anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1184
+msgid ""
+"<center>If this option is enabled, the Servers dialog will appear every time "
+"you start KVIrc</center>"
+msgstr ""
+"<center>Wenn Sie diese Option aktiviert ist, wird der Serverdialog bei jedem "
+"Start von KVIrc geöffnet.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1335
+msgid "Network:"
+msgstr "Netzwerk:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1345
+msgid "No selection"
+msgstr "Keine Auswahl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1364
+msgid "UnknownNet"
+msgstr "Unbekanntes Netz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1431
+msgid "Remove Network"
+msgstr "Netzwerk löschen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1434
+msgid "&New Server"
+msgstr "&Neuer Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1435
+msgid "Re&move Server"
+msgstr "Server &löschen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1437
+msgid "&Copy Server"
+msgstr "Server &kopieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1439
+msgid "&Paste Server"
+msgstr "Server &einfügen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1444
+msgid "Clear List"
+msgstr "Liste löschen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1483
+msgid ""
+"Oops... something weird happened:<br>Can't find any module capable of "
+"importing servers."
+msgstr ""
+"Ops... etwas sonderbares ist passiert:<br>Es kann kein Modul zum Importieren "
+"von Servern gefunden werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1500
+msgid ""
+"Oops... something weird happened:<br>Can't find the module that was capable "
+"of this import action. :("
+msgstr ""
+"Ops... etwas sonderbares ist passiert:<br>Es kann kein Modul zum "
+"Importieren von Servern für diese Importaktion gefunden werden :("
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1574
+msgid "irc.unknown.net"
+msgstr "irc.unknown.net"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:39
+msgid "Disable parser warnings"
+msgstr "Parserwarnungen deaktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:40
+msgid "Disable broken event handlers"
+msgstr "Fehlerhafte Ereignishandler deaktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:41
+msgid "Kill broken timers"
+msgstr "Fehlerhafte Zeitmesser töten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:42
+msgid "Send unknown commands as /RAW"
+msgstr "Unbekannte Kommandos als /RAW senden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:46
+msgid "Automatically unload unused modules"
+msgstr "Automatisch nicht benutzte Module entladen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:47
+msgid "Ignore module versions (dangerous)"
+msgstr "Modulversionen ignorieren (gefährlich)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:51
+msgid "Relay errors and warnings to debug window"
+msgstr "Weitergabefehler (relay errors) und Warnungen zum Debug-Fenster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:52
+msgid "Create minimized debug window"
+msgstr "Erstelle minimiertes Debug-Fenster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:59
+msgid "Nickname alternatives"
+msgstr "Alternative Spitznamen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:62
+msgid ""
+"<center>Here you can choose up to three nicknames alternative to the primary "
+"one. KVIrc will use the alternatives if the primary nick is already used by "
+"someone else on a particular IRC network.</center>"
+msgstr ""
+"<center>Hier können bis zu 3 Spitznamenalternativen zum primären ausgewählt "
+"werden. KVIrc wird die Alternativen benutzen, wenn der primäre Spitzname "
+"bereits von jemand anderem im speziellen IRC-Netzwerk benutzt wird.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:69
+msgid "Alt. Nickname 1:"
+msgstr "Alt. Spitzname 1:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:76
+msgid "Alt. Nickname 2:"
+msgstr "Alt. Spitzname 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:83
+msgid "Alt. Nickname 3:"
+msgstr "Alt. Spitzname 3:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Ok"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:130
+msgid "Avatar Download - KVIrc"
+msgstr "Avatar herunterladen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:136
+msgid "<center>Please wait while the avatar is being downloaded</center>"
+msgstr "<center>Bitte warten, während die Liste heruntergeladen wird</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:139
+msgid "Abort"
+msgstr "Abgebrochen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:170
+msgid "Failed to start the download"
+msgstr "Start des Herunterladens fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:184
+msgid "Download aborted by user"
+msgstr "Herunterladen vom Benutzer abgebrochen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:213
+msgid "Choose Avatar - KVIrc"
+msgstr "Avatar auswählen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:219
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+"Bitte ein Avatarbild auswählen. Der volle Pfad zur lokalen Datei oder eines "
+"Bildes im Web kann benutzt werden.<br>Wenn ein lokales Bild benutzt werden "
+"soll, den \"<b>Durchsuchen</b>\"-Knopf klicken, um lokale Ordner zu "
+"durchsuchen.<br>Die volle URL des Bildes (inklusive <b>http://</b>) kann "
+"manuell eingeben werden."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:237
+msgid "&Browse..."
+msgstr "&Auswählen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:275
+msgid "Choose an Image File - KVIrc"
+msgstr "Bilddatei auswählen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:316
+msgid "Basic Properties"
+msgstr "Grundeigenschaften"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:323
+msgid ""
+"<center>Your <b>nickname</b> is your primary form of identification on IRC."
+"<br>Since servers cannot accept multiple users sharing the same nickname "
+"(case insensitive), you can provide alternative nicknames to be used in "
+"casethe server refuses to accept the default one.</center>"
+msgstr ""
+"<center>Der <b>Spitzname</b> ist die Hauptform der Identifikation im IRC."
+"<br>Da die Server nicht mehrere Benutzer mit dem gleichen Spitznamen "
+"akzeptieren können (Gross-/Kleinschreibung egal), können alternative "
+"Spitznamen angegeben werden. Diese können benutzt werden, wenn der Server "
+"den Hauptspitznamen ablehnt.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:331
+msgid "Alternatives..."
+msgstr "Alternativen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:337
+msgid ""
+"<center>This is the <b>username</b> that you will use to connect to the "
+"server.<br>In the past, it was used as a form of authentication, but it "
+"normally has no special use now.<br>In addition to your nickname, you are "
+"identified on IRC by your <b>username@hostname</b>.</br>Basically, you can "
+"enter any word you like here. :D</center>"
+msgstr ""
+"<center>Dies ist der <b>Benutzername</b>, der zum Verbinden mit dem Server "
+"benutzt wird.<br>In der Vergangenheit war er eine Form der "
+"Authentifizierung, aber normalerweise ist hat er nun keine spezielle "
+"Bedeutung.<br>In Hinzufügung zum Spitznamen wird man beim IRC mit seinem "
+"<b>benutzername@hostname</b> identifiziert. Grundsätzlich kann jedes "
+"beliebige Wort hier eingetragen werden :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:346
+msgid ""
+"<center>This text will appear when someone does a /WHOIS on you.<br>It is "
+"intended to be your real name, but people tend to put random quotes and "
+"phrases here too.</center>"
+msgstr ""
+"<center>Dieser Text wird angezeigt, wenn jemand das /WHOIS-Kommando auf Sie "
+"anwendet.<br>Dies sollte der reale Name sein, aber die Leute tendieren dazu, "
+"zufällige Zitierungen und Sätze hier einzutragen.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:351
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+"Dieses Feld ist optional und wird als Teil der CTCP-USERINFO-Antwort "
+"angezeigt."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:356
+msgid "Profile"
+msgstr "Profil"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:361
+msgid "Age:"
+msgstr "Alter:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:366
+msgid "Here you can specify your age."
+msgstr "Hier kannst Du Dein Alter eintragen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:401
+msgid "Unspecified"
+msgstr "Nicht angegeben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:391
+msgid "Gender:"
+msgstr "Geschlecht:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:396
+msgid "Here you can specify your gender."
+msgstr "Hier kannst Du Dein Geschlecht angeben."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:402
+msgid "Female"
+msgstr "weiblich"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:403
+msgid "Male"
+msgstr "männlich"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:414
+msgid "Location:"
+msgstr "Ort:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:417
+msgid ""
+"You can describe here your approximate physical location. Something like "
+"\"Region, Country\" will be ok. Please note that this information will be "
+"viewable by anyone so putting more data (like the exact address), generally, "
+"<b>is not a good idea</b>."
+msgstr ""
+"Hier kannst Du Deinen ungefähren Aufenthaltsort angeben. Etwas wie \"Stadt/"
+"Region, Land\" ist ok. Bitte beachte, dass diese Information von jedem "
+"eingesehen werden kann, daher ist es <b>keine gute Idee</b>, mehr Daten (wie "
+"z. B. exakte Adresse) einzutragen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:422
+msgid "Languages:"
+msgstr "Sprachen:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:425
+msgid ""
+"You can put here the short names of the languages you can speak. An example "
+"might be \"EN,IT\" that would mean that you speak both Italian and English."
+msgstr ""
+"Hier kannst Du die Kurzformen der Sprachen eintragen, die Du sprichst. Ein "
+"Beispiel wäre \"DE,EN\" für Deutsch und Englisch."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:429
+msgid "Other:"
+msgstr "Anderes:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:432
+msgid ""
+"You can put here some additional personal data. It might be a funny quote or "
+"your homepage url... Please note that this information will be viewable by "
+"anyone so <b>don't put any sensible data</b> (passwords, telephone or credit "
+"card numbers)."
+msgstr ""
+"Hier kannst Du weitere persönliche Daten eintragen. Es kann ein lustiges "
+"Zitat oder die URL Deiner Homepage sein... Bitte beachte, dass diese "
+"Information von jedem eingesehen werden kann, daher <b>schreibe keine "
+"sensiblen Daten</b> (Passwörter,Telefon- oder Kreditkartennummer) hierrein."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:502
+msgid ""
+"Here you can choose your avatar image. It will be visible<br>by other people "
+"that request it. Choose a nice image of yourself,<br>possibly avoiding "
+"obscenity and offending images. It is a good idea<br>to choose a relatively "
+"small file (say 150 Kb max) because<br>most clients have a limit on the size "
+"of avatars being downloaded.<br>The image also should be smaller than "
+"800x600 pixels since<br>it will have to be viewable in everyone's monitor."
+msgstr ""
+"Hier kannst Du Dein Avatar-Bild wählen. Es wird für andere<br> sichtbar "
+"sein, wenn sie es anfordern. Wähle ein nettes Bild von Dir selbst,"
+"<br>vermeide obszöne und/oder beleidigende Bilder. Es ist eine gute "
+"Idee<br>, ein relativ kleine Datei zu wählen (ca. 150 kb max.), da<br>die "
+"meisten anderen Clients eine Größenbeschränkung für Avatardownloads haben."
+"<br> Das Bild sollte auch kleiner als 800x600 Pixel sein<br>, es muss für "
+"jeden auf seinem Monitor anzeigbar sein."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:511
+msgid "Use avatar"
+msgstr "Avatar benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:537
+msgid "Choose..."
+msgstr "Auswählen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:598
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:637
+msgid "Failed to Load Avatar - KVIrc"
+msgstr "Laden des Avatars fehlgeschlagen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:599
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:638
+msgid ""
+"Failed to load the avatar image.<br>It may be an unaccessible file or an "
+"unsupported image format."
+msgstr ""
+"Laden des Avatarbildes ist fehlgeschlagen.<br>Dies kann eine Datei sein, auf "
+"die kein Zugriff möglich ist oder auch ein nicht unterstütztes Bildformat."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:606
+msgid "Failed to download the avatar image.<br><b>%Q</b>"
+msgstr "Herunterladen des Avatarbildes fehlgeschlagen.<br><b>%Q</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:608
+msgid "Avatar Download Failed - KVIrc"
+msgstr "Herunterladen des Avatars fehlgeschlagen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:649
+msgid "Avatar Might Be Too Big - KVIrc"
+msgstr "Avatar eventuell zu groß - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:650
+msgid ""
+"The avatar you have choosen is bigger than 1024x768 pixels.<br>Such a big "
+"image will not be seen on all the user monitors<br>and will probably be "
+"scaled by the remote clients with poor quality<br>algorithms to improve "
+"performance. You *should* scale it manually<br>to a sane size (like 800x600) "
+"or choose a different image."
+msgstr ""
+"Das gewählte Avatar ist größer als 1024x768 Pixel.<br>Ein solch großes Bild "
+"kann nicht auf allen Benutzermonitoren angezeigt werden<br> und wird dort "
+"wahrscheinlich mit skaliert mit Algorithmen<br> minderer Qualität, um die "
+"Performance zu verbessern. Du *solltest* es manuell auf eine<br>vernünftige "
+"Größe skalieren (z. B. 800x600), oder ein anderes Bild wählen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:688
+msgid "Default Messages"
+msgstr "Standardnachrichten:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:691
+msgid "Part message:"
+msgstr "Verlassen-Nachricht:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:695
+msgid ""
+"<center>This is the default part message that will be used when you<br>leave "
+"a channel by closing a channel window.</center>"
+msgstr "<center> Standard<br></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:699
+msgid "Quit message:"
+msgstr "Beenden-Nachricht:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:702
+msgid ""
+"<center>This is the default quit message that will be used when you<br>quit "
+"your IRC session by closing the console window or disconnecting by pressing "
+"the disconnect button.</center>"
+msgstr "<center> Standard<br></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:42
+msgid "Open Query For"
+msgstr "Anfrage öffnen für"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:40
+msgid "Private messages"
+msgstr "Private Nachrichten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:46
+msgid ""
+"<center>This option enables query window creation when a private message "
+"(PRIVMSG) is received.<br>If you disable this, private messages will be "
+"shown in the active window or a common channel.</center>"
+msgstr ""
+"<center>Dies aktiviert die Erstellung von Anfragefenstern, wenn eine private "
+"Nachricht (PRIVMSG) emfangen wird.<br>Private Nachrichten werden im aktiven "
+"Fenster oder Kanal angezeigt.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:42
+msgid "Private notices"
+msgstr "Private Notizen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:55
+msgid ""
+"<center>This option enables query window creation when a private notice "
+"(NOTICE) is received.<br>If you disable this, private notices will be shown "
+"in the active window or a common channel.</center>"
+msgstr ""
+"<center>Diese Option aktiviert die Erstellung von Anfragefenstern, wenn eine "
+"private Notiz (NOTICE) emfangen wird.<br>Wenn dies deaktiviert ist, werden "
+"private Notizen im aktiven Fenster oder Kanal angezeigt.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:62
+msgid "Always open queries as minimized"
+msgstr "Alle Anfragen (Queries) minimiert öffnen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:66
+msgid ""
+"<center>This option causes newly created query windows to be immediately "
+"minimized.<br>Enable this if you don't like queries popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+"<center>Diese Option sorgt für das sofortige Minimieren neu erzeugter "
+"Anfragefenster.<br> Aktivieren Sie dies, wenn Sie keine aufgehenden "
+"Anfragefenster mögen, wenn Sie gerade im Kanal schreiben :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:74
+msgid "Enable target user tracking"
+msgstr "Benutzerverfolgung aktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:77
+msgid ""
+"<center>This option will enable target user tracking.<br>Some actions of the "
+"target user (e.g. joins and parts) will be displayed in the window.<br></"
+"center>"
+msgstr ""
+"<center>Diese Option wird Benutzerverfolgung aktivieren.<br>Die Aktionen des "
+"Benutzers (z.B. betreten und verlassen) wird in dem Fenster angezeigt.<br></"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:83
+msgid "Flash system taskbar on new query message"
+msgstr "Systemfensterleiste bei neuer Anfrage-Nachricht aufblinken lassen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:86
+msgid ""
+"<center>This option causes the system taskbar entry for KVIrc to flash when "
+"a new query message is received and the KVIrc window is not the active.</"
+"center>"
+msgstr ""
+"<center>Diese Option wird KVIrc veranlassen, den Systemfensterleisteneintrag "
+"aufblinken zu lassen, wenn eine neue Anfrage-Nachricht emfangen wurde und "
+"das KVIrc-Fenster nicht aktiv ist.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:91
+msgid "Popup notifier on new query message"
+msgstr "Benachrichtungsfenster bei neuer Anfrage-Nachricht anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:94
+msgid ""
+"<center>This option causes a small notifier window to pop up in the low "
+"right corner of the screen when a new message is received and the KVIrc "
+"window is not active.</center>"
+msgstr ""
+"<center>Diese Option wird KVIrc veranlassen, ein kleines "
+"Benachrichtigungsfenster in de runteren rechten Ecke des Bildschirms "
+"anzuzeigen, wenn eine neue Anfrage-Nachricht emfangen wurde und das KVIrc-"
+"Fenster nicht aktiv ist.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:98
+msgid "Show information about query target at the top of the query"
+msgstr ""
+"Zeige Informationen über die Gegenseite der Anfrage (Query) oben im "
+"Anfragefenster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:101
+msgid ""
+"<center>This option enables query window information label. It can show you "
+"known information about query target at the top of the window.<br>Uncheck if "
+"you think,that it wastes your query space/</center>"
+msgstr ""
+"<center>Diese Option aktiviert die Anfragenfenster-Informationen (query "
+"window information label). Es kann bekannte Informationen über die "
+"Gegenseite der Anfrage oben im Fenster anzeigen.<br>Wähle es ab, wenn Du "
+"denkst, es verschwendet nur Platz</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:39
+msgid "Use global application font"
+msgstr "Globale Schriftart für Anwendung benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:40
+msgid "Hide icons in Popup"
+msgstr "Icons in Aufklappmenüs verstecken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:41
+msgid "Global application font:"
+msgstr "Globaler Anwendung-Zeichensatz:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:67
+msgid "Enable fake transparency"
+msgstr "Falsche Transparenz aktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:71
+msgid ""
+"<center>This option makes all KVIrc windows look transparent.<br>You must "
+"choose a blending background image to below or check the \"Use KDE desktop "
+"for transparency\" option.</center>"
+msgstr ""
+"<center>Diese Option macht alle KVIrc-Fenster transparent.<br>Es muss ein "
+"Hintergrundbild unten ausgewählt oder die Option <b>\"KDE-Arbeitsfläche für "
+"Transparenz benutzen\" aktiviert sein.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:77
+msgid ""
+"<center>This option makes all KVIrc windows look like transparent.<br>You "
+"must choose a blending background image to below.</center>"
+msgstr ""
+"<center>Diese Option macht alle KVIrc-Fenster transparent.<br>Es muss unten "
+"ein Hintergrundbild unten ausgewählt sein.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:83
+msgid "Child window opacity:"
+msgstr "Kindfenster-Undurchsichtigkeit:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:87
+msgid "Parent window opacity:"
+msgstr "Kindfenster-Undurchsichtigkeit:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:91
+msgid "Blend color:"
+msgstr "Mischfarbe:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:97
+msgid "Use KDE desktop for transparency"
+msgstr "KDE-Arbeitsfläche für Transparenz benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:102
+msgid "Keep in sync with KDE background changes"
+msgstr "Synchron mit KDE-Hintergrundänderungen bleiben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:111
+msgid "Transparency blend image:"
+msgstr "Transparenz-Mischungsbild:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:155
+msgid "Active Background"
+msgstr "Aktiver Hintergrund"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:156
+msgid "Inactive Background"
+msgstr "Inaktiver Hintergrund"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:157
+msgid "Active Text (Primary)"
+msgstr "Aktiver Text (Primär)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:158
+msgid "Active Text (Secondary)"
+msgstr "Aktiver Text (Sekundär)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:159
+msgid "Inactive Text (Primary)"
+msgstr "Inaktiver Text (Primär)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:160
+msgid "Inactive Text (Secondary)"
+msgstr "Inaktiver Text (Sekundär)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:197
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:44
+msgid "Background"
+msgstr "Hintergrund"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:178
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:205
+msgid "Background Image"
+msgstr "Hintergrundbild"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:198
+msgid "Low-Contrast Foreground"
+msgstr "Vordergrund mit niedrigem Kontrast"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:199
+msgid "Mid-Contrast Foreground"
+msgstr "Vordergrund mit mittlerem Kontrast"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:200
+msgid "Active High-Contrast Foreground (Primary)"
+msgstr "Aktiver Vordergrund mit hohem Kontrast (Primär)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:201
+msgid "Active High-Contrast Foreground (Secondary)"
+msgstr "Aktiver Vordergrund mit hohem Kontrast (Sekundär)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:202
+msgid "Inactive High-Contrast Foreground (Primary)"
+msgstr "Inaktiver Vordergrund mit hohem Kontrast (Primär)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:203
+msgid "Inactive High-Contrast Foreground (Secondary)"
+msgstr "Inaktiver Vordergrund mit hohem Kontrast (Sekundär)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:40
+msgid "Scaling in userlist"
+msgstr "In Benutzerliste skalieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:41
+msgid "Scale avatar images in userlist (recommended)"
+msgstr "Avartarbilder in Benutzerliste skalieren (empfohlen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:43
+msgid ""
+"<center>This option will force KVIrc to scale avatars shown in the userlist."
+"<br>Avatars will be scaled to fit the constraints set below. Better keep "
+"this option on. :)</center>"
+msgstr ""
+"<center>Diese Option wird KVIrc zwingen, die Avatare so zu skalieren, dass "
+"sie in der Benutzerliste angezeigt werden können.<br>Die Avatare werden so "
+"skaliert, wie unten festgelegt. Besser ist es, diese Option aktiviert zu "
+"lassen :).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:48
+msgid "Do not scale avatar if it is less than required size"
+msgstr "Avatare nicht skalieren, wenn sie kleiner als die benötigte Größe sind"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:59
+msgid "Image width:"
+msgstr "Bildbreite:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:61
+msgid "Image height:"
+msgstr "Bildhöhe:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:56
+msgid "Scaling on load (and in user tooltips)"
+msgstr "Skalieren beim Laden (und in Benutzer-Tooltips)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:57
+msgid "Scale avatar images on image load"
+msgstr "Avartarbilder beim Laden skalieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:65
+msgid "Request CTCP"
+msgstr "CTCP anfordern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:66
+msgid "Request missing avatars"
+msgstr "Fehlende Avatare anfordern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:67
+msgid "Maximum requested file size:"
+msgstr "Maximale angeforderte Dateigrösse:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to send a DCC GET request when someone "
+"sets an avatar and there is no cached copy available.</center>"
+msgstr ""
+"<center>Diese Option wird KVIrc veranlassen, eine DCC GET-Anfrage zu senden, "
+"wenn jemand einen Avatar setzt und keine zwischen gespeicherte Kopie "
+"verfügbar ist.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:74
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:317
+msgid " bytes"
+msgstr " Bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:77
+msgid ""
+"<center>This is the maximum size for avatar images that will be "
+"automatically requested.<br>A reasonable value might be 102400 bytes (100 K)."
+"</center>"
+msgstr ""
+"<center>Dies ist die maximale Dateigrösse der Avatare, die automatisch "
+"angefordert werden.<br>Ein guter Wert könnte bei 102400 Byte (100 kB) "
+"liegen</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:83
+msgid "Automatically accept incoming avatars"
+msgstr "Automatisch ankommende Avatare akzeptieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:87
+msgid ""
+"<center>This option will cause KVIrc to auto-accept DCC SEND requests for "
+"incoming avatars.<br>If you're using the \"Request missing avatars\" option "
+"above, enabling this may by useful.<br>Avatars will be saved in the local "
+"KVIrc directory.</center>"
+msgstr ""
+"<center>Diese Option wird KVIrc veranlassen, die DCC SEND-Anfragen für "
+"ankommende Avatare automatisch zu akzeptieren.<br>Falls die \"Fehlende "
+"Avatare anfordern\"-Option oben benutzt wird, könnte das Benutzen derselben "
+"eine gute Idee sein.<br>Die Avatare werden im lokalen KVIrc-Verzeichnis "
+"gespeichert und automatisch für die Quelle des Benutzers gesetzt.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:94
+msgid "Remember avatars for registered users"
+msgstr "Avatare für registrierte Benutzer zwischenspeichern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:99
+msgid ""
+"<center>Use a user's last known avatar by default (only for users that are "
+"registered).</center>"
+msgstr ""
+"<center>Setzt den letzten Avatar des Benutzers als Standardavatarbild (aber "
+"nur für registrierte Benutzer.).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:103
+msgid "Avatar offer timeout:"
+msgstr "Avatarangebot-Zeitablauf:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:104
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:162
+msgid " sec"
+msgstr " Sekunden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:107
+msgid ""
+"<center>This is the amount of time to make an avatar available for transfer "
+"when requested.<br>When someone sends a CTCP AVATAR request, KVIrc will "
+"reply with a CTCP AVATAR message containing the name and size of your avatar "
+"image.<br>A time-limited file offer is added for the image file to the "
+"requesting user.</center>"
+msgstr ""
+"<center>Dies ist die Zeit, für die ein Avatar zur Üertragung bei einer "
+"Anfrage verfügbar ist.<br>wenn jemand eine CTCP AVATAR-Anfrage sendet, wird "
+"KVIrc mit einer CTCP AVATAR-Nachricht, die Name und Grösse des Avatarbildes "
+"enthält, antworten.<br>Ein zeitlich begrenztes Dateiangebot wird für die "
+"Bilddatei zu dem anfragenden Benutzer hinzugefügt.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:115
+msgid "Ignore requests if no avatar is set"
+msgstr "Anfragen ignorieren, wenn kein Avatar gesetzt ist"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:118
+msgid ""
+"This option will cause KVIrc to ignore channel CTCP AVATAR requests when you "
+"have no avatar set. This is usually a good practice since it helps in "
+"reducing traffic by not sending a reply that would be empty."
+msgstr ""
+"Diese Option wird KVIrc veranlassen, CTCP AVATAR-Anfragen zu ignorieren, "
+"wenn kein Avatar gesetzt ist. Dies ist üblicherweise eine gute Praxis, weil "
+"es hilft, den Verkehr zu reduzieren. Es keine Antwort gesendet, die leer "
+"sein wird."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:39
+msgid "Use online notify list"
+msgstr "Online-Benachrichtigungsliste benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:44
+msgid "Configuration"
+msgstr "Konfiguration"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:45
+msgid "Show notifications in active window"
+msgstr "Benachrichtigungsliste im aktiven Fenster anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:50
+msgid "Flash window when users are going online"
+msgstr "Fenster aufblinken, wenn Benutzer online geht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:55
+msgid "Popup notifier when users are going online"
+msgstr "Benachrichtigung-Popup, wenn Benutzer online geht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:59
+msgid "Advanced configuration"
+msgstr "Erweiterte Konfiguration"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:64
+msgid "Check USERHOST for online users"
+msgstr "USERHOST für Benutzer, die online sind, prüfen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:69
+msgid "Use \"smart\" notify list manager"
+msgstr "\"Intelligenten\"-Benachrichtungslistenmanager benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:74
+msgid "Use the WATCH method if available"
+msgstr "Die \"WATCH\"-Methode benutzen, wenn verfügbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:79
+msgid "Check interval (in seconds)"
+msgstr "Prüfintervall (in Sekunden)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:85
+msgid "ISON delay (in seconds)"
+msgstr "ISON-Verzögerung (in Sekunden)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:91
+msgid "USERHOST delay (in seconds)"
+msgstr "USERHOST-Verzögerung (in Sekunden)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:96
+msgid ""
+"<p><b>Note:</b><br>The notify list is managed using the \"Registered Users\" "
+"settings.</p>"
+msgstr ""
+"<p><b>Bemerkung:</b><br>Die Benachrichtigungsliste wird in den "
+"\"Registrierte Benutzer\"-Einstellungen verwaltet.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:112
+msgid "Forcibly and completely disable the notifier"
+msgstr "Benachrichtiger gewaltsam und komplett deaktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:115
+msgid ""
+"This is an option for the impatient: it allows to forcibly and permanently "
+"disable the notifier window. Please note that if this option is activated "
+"then the notifier will NOT popup even if all the other options around "
+"specify to use it in response to particular events. Also note that this "
+"option will make all the /notifier.* commands fail silently."
+msgstr ""
+"Dies ist eine Option für Ungeduldige: es erlaubt das Erzwingen und "
+"permanente Deaktivieren des Benachrichtigungsfensters. Bitte beachten, dass "
+"wenn diese Option aktiviert ist, das Benachrichtigungsfenster NICHT "
+"angezeigt wird, auch wenn in den anderen Optionen eine Rückmeldung zu "
+"einzelnen Ereignissen angegeben ist. Ebenso wird eine Benutzung der /"
+"notifier *-Kommandos still fehlschlagen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:123
+msgid "Disable notifier window flashing"
+msgstr "Blinken des Benachrichtigungsfensters ausschalten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:124
+msgid "Disable notifier window fade effect"
+msgstr "Ausblend-Effekt des Benachrichtigungsfensters ausschalten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:39
+msgid "Default away message:"
+msgstr "Standard \"Abwesend\"-Nachricht:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:41
+msgid "User input exits away mode"
+msgstr "Benutzereingabe beendet \"weg\"-Modus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:43
+msgid "Away Nickname"
+msgstr "\"Abwesend\"-Spitzname"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:44
+msgid "Change nickname on away"
+msgstr "Spitzname bei \"Abwesend\" ändern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:47
+msgid "Use automatic nickname ([5 letters]AWAY)"
+msgstr ""
+"Automatisch gernerierten \"Abwesend\"-Spitznamen benutzen ([5 Buchstaben]"
+"AWAY)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:55
+#, c-format
+msgid "Custom nickname (%%nick%% means a current nick):"
+msgstr "eigener (custom) Spitzname (%%nick%% heißt aktueller Spitzname):"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/libkvioptions.cpp:199
+msgid "No such options page class name %Q"
+msgstr "Keine Optionsseiten-Klassenname %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:47
+msgid "Use system URL handlers"
+msgstr "Benutze die URL-Handler des Systems"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:50
+msgid "<b>http://</b> handler command:"
+msgstr "<b>http://</b>-Handler-Kommando:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:51
+msgid "<b>https://</b> handler command:"
+msgstr "<b>https://</b>-Handler-Kommando:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:52
+msgid "<b>ftp://</b> handler command:"
+msgstr "<b>ftp://</b>-Handler-Kommando:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:53
+msgid "<b>mailto:</b> handler command:"
+msgstr "<b>mailto://</b>-Handler-Kommando:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:54
+msgid "<b>file://</b> handler command:"
+msgstr "<b>file://</b>-Handler-Kommando:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:55
+msgid "Unknown protocol handler command:"
+msgstr "Unbekanntes Protokoll-Handler-Kommando:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:61
+msgid "Use proxy"
+msgstr "Proxy benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:65
+msgid "Proxy"
+msgstr "Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:76
+msgid ""
+"<center>This is the list of available proxy servers.<br>Right-click on the "
+"list to add or remove proxies.</center>"
+msgstr ""
+"<center>Dies ist die Liste der verfügbaren Proxy-Server.<br>Rechtsklick, um "
+"Server hinzuzufügen oder zu löschen.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:90
+msgid "New Proxy"
+msgstr "Neuer Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:99
+msgid "Remove Proxy"
+msgstr "Proxy löschen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:111
+msgid "Proxy:"
+msgstr "Proxy:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:131
+msgid "Protocol:"
+msgstr "Protokoll:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:336
+msgid "&New Proxy"
+msgstr "&Neuer Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:337
+msgid "Re&move Proxy"
+msgstr "Proxy &löschen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:71
+msgid "Pattern"
+msgstr "Muster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:72
+msgid "MIME Type"
+msgstr "MIME-Typ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:87
+msgid "MIME type:"
+msgstr "MIME-Typ:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:92
+msgid "File pattern:"
+msgstr "Dateimuster:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:97
+msgid "Magic bytes:"
+msgstr "Magische Byte:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:102
+msgid "Save path:"
+msgstr "Speicherpfad:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:107
+msgid "Local open command:"
+msgstr "Lokales Kommando ausführen:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:112
+msgid ""
+"<center>This field contains the command to execute to open a local file."
+"<br><tt>$0</tt> is used in place of the filename</center>"
+msgstr ""
+"<center>Dieses Feld enthält das Kommando, das beim Öffnen einer lokalen "
+"Datei ausgeführt wird.<br><tt>$0</tt> steht für den Dateinamen</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:116
+msgid "Remote open command:"
+msgstr "Entferntes Öffnen-Kommando:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:121
+msgid ""
+"<center>This field contains the command to execute when automatically "
+"opening a received file.<br><tt>$0</tt> is used in place of the filename</"
+"center>"
+msgstr ""
+"<center>Dieses Feld enthält das Kommando, das beim automatischen Öffnen "
+"einer empfangenen Datei ausgeführt wird.<br><tt>$0</tt> steht für den "
+"Dateinamen</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:125
+msgid "Icon"
+msgstr "Symbol"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:134
+msgid "&New"
+msgstr "&Neu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:138
+msgid "Re&move"
+msgstr "&Löschen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:184
+msgid "[Unknown Media Type]"
+msgstr "[Unbekannter Medientyp]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:230
+msgid "New Media Type"
+msgstr "Neuer Medientyp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:53
+msgid "Nickname Colors"
+msgstr "Farben für Spitznamen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:56
+msgid "Channel owner:"
+msgstr "Kanaleigentümer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:57
+msgid "Channel admin:"
+msgstr "Kanaladmin:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:58
+msgid "Op:"
+msgstr "OP:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:59
+msgid "Half-op:"
+msgstr "Halb-OP:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:60
+msgid "Voice:"
+msgstr "Voice:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:61
+msgid "User-op:"
+msgstr "Benutzer-OP:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:62
+msgid "Away:"
+msgstr "Abwesend:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:66
+msgid "Use different color for own nick:"
+msgstr "Benutze andere Farbe für eigenen Spitznamen:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:81
+msgid "Draw nickname grid"
+msgstr "Gitter für Spitznamen zeichnen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:83
+msgid "Grid color:"
+msgstr "Gitterfarbe:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:90
+msgid "Grid type:"
+msgstr "Gittertyp:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:94
+msgid "3D Grid"
+msgstr "3D-Gitter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:95
+msgid "3D Buttons"
+msgstr "3D-Knöpfe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:96
+msgid "Plain Grid"
+msgstr "Einfaches Gitter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:97
+msgid "Dotted Grid"
+msgstr "Gepunktetes Gitter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:131
+msgid "Horizontal Alignment:"
+msgstr "Horizontale Ausrichtung:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:135
+msgid "Vertical Alignment:"
+msgstr "Vertikale Ausrichtung:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:231
+msgid "Show gender icons"
+msgstr "Geschlechtsicons anzeigen:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:232
+msgid "Show user channel icons"
+msgstr "Benutzerkanalsymbole anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:233
+msgid "Show user channel activity indicator"
+msgstr "Kanalaktivitätsanzeiger für Benutzer anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:234
+msgid "Hide users label"
+msgstr "Benutzer-Label verstecken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:235
+msgid "Enable user tooltips"
+msgstr "Fensterkurzinfos aktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:236
+msgid "Hide avatars"
+msgstr "Avatare verstecken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:79
+msgid "Use flood protection (recommended)"
+msgstr "Überflutungsbegrenzung benutzen (empfohlen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:81
+msgid ""
+"<center>This option makes KVIrc only respond to a limited number of CTCP "
+"requests within a specified time interval, to prevent \"flooding\" CTCP "
+"messages.</center>"
+msgstr ""
+"<center>Diese wird KVIrc veranlassen, nur auf eine begrenzte Anzahl von CTCP-"
+"Anfragen in einem angebenen Zeitintervall zu reagieren, um \"Flodding\"-CTCP-"
+"Nachrichten vorzubeugen.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:83
+msgid "Allow up to:"
+msgstr "Erlauben bis:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:84
+msgid " requests"
+msgstr " Anfragen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:86
+msgid ""
+"<center>Minimum value: <b>0 requests</b><br>Maximum value: <b>10000 "
+"requests</b></center>"
+msgstr ""
+"<center>Minimaler Wert: <b>0 Anfragen</b><br>Maximaler Wert: <b>10000 "
+"Anfragen</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:89
+msgid "within:"
+msgstr "in:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:92
+msgid ""
+"<center>Minimum value: <b>1 sec</b><br>Maximum value: <b>3600 sec</b></"
+"center>"
+msgstr ""
+"<center>Minimaler Wert: <b>0 s</b><br>Maximaler Wert: <b>3600 s</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:96
+msgid "Ignored Requests"
+msgstr "Anfragen ignorieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:97
+msgid "PING"
+msgstr "PING"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:98
+msgid "FINGER"
+msgstr "FINGER"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:99
+msgid "CLIENTINFO"
+msgstr "CLIENTINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:100
+msgid "USERINFO"
+msgstr "USERINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:101
+msgid "VERSION"
+msgstr "VERSION"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:102
+msgid "SOURCE"
+msgstr "SOURCE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:103
+msgid "TIME"
+msgstr "TIME"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:104
+msgid "PAGE"
+msgstr "PAGE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:105
+msgid "AVATAR"
+msgstr "AVATAR"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:106
+msgid "DCC/TDCC"
+msgstr "DCC/TDCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:131
+msgid "General Preferences"
+msgstr "Allgemeine Einstellungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:134
+msgid "Theme Preferences"
+msgstr "Themeneinstellungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:136
+msgid "KVIrc Preferences"
+msgstr "KVIrc-Einstellungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:139
+msgid ""
+"This dialog contains a set of KVIrc settings.<br> Use the icons on the left "
+"to navigate through the option pages. The text box in the bottom left corner "
+"is a small search engine. It will highlight the pages that contain options "
+"related to the search term you have entered."
+msgstr ""
+"Dieser Dialog beinhaltet eine Reihe von KVIrc-Einstellungen.<br>Navigiere "
+"mit den Icons links durch die Optionsseiten. Die Textbox in der linken "
+"unteren Ecke ein eine kleine Suchmaschine. Sie wird die Seiten hervorheben, "
+"welche Einstellungen bezüglich des eingegebenen Suchbegriffes haben."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:147
+msgid ""
+"Many settings have tooltips that can be shown by holding the cursor over "
+"their label for a few seconds."
+msgstr ""
+"Viele Einstellungen haben Hinweistexte (tooltips), die angezeigt werden, "
+"wenn der Cursor ein paar Sekunden über dem Label steht."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:152
+msgid ""
+"When you have finished, click \"<b>OK</b>\" to accept your changes or "
+"\"<b>Cancel</b>\" to discard them. Clicking \"<b>Apply</b>\" will commit "
+"your changes without closing the window."
+msgstr ""
+"Wenn Du fertig bist, klicke \"<b>Ok</b>\", um die Änderungen zu übernehmen "
+"oder \"<b>Abbrechen</b>\", um sie zu verwerfen. Klicke \"<b>Anwenden</b>\" "
+"um die Änderungen zu übernehmen, ohne das Fenster zu schließen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:217
+msgid ""
+"<p>This is the search tool for this options dialog.</p><p>You can enter a "
+"search term either in your native language or in english and press the "
+"button on the right. The pages that contain some options related to the "
+"search term will be highlighted and you will be able to quickly find them.</"
+"p><p>Try \"nickname\" for example.</p>"
+msgstr ""
+"<p>Dies ist das Suchwerkzeug für diesen Optionendialog.</p><p>Du kannst "
+"einen Suchbegriff entweder in Deiner Muttersprache oder in englisch "
+"eingeben, dann klickst Du den Knopf rechts daneben. Die Seiten, die Optionen "
+"zum Suchbegriff enthalten, werden hervorgehoben, so dass sie schnell zu "
+"finden sind.</p><p>Als Beispiel probiere \"Spitzname\" (\"nickname\").</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:249
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:61
+msgid "Close this dialog, accepting all changes."
+msgstr "Um alle Änderungen zu akzeptieren, Dialog schliessen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:255
+msgid "&Apply"
+msgstr "An&wenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:256
+msgid "Commit all changes immediately."
+msgstr "Änderungen sofort anwenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:69
+msgid "Close this dialog, discarding all changes."
+msgstr "Um alle Änderungen zu verwerfen, Dialog schliessen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:149
+msgid ""
+"This table contains the text icon associations.<br>KVirc will use them to "
+"display the CTRL+I escape sequences and eventually the emoticons."
+msgstr ""
+"Diese Tabelle enthält die Text-Symbol-Beziehungen.<br>KVirc wird diese zum "
+"Anzeigen der CTRL+I-Escape-Sequenzen und eventuell auch bei den Emoticons "
+"benutzen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:165
+msgid "Add"
+msgstr "Hinzufügen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:169
+msgid "Delete"
+msgstr "Löschen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:191
+msgid "unnamed"
+msgstr "unbenannt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:53
+msgid "Enable word highlighting"
+msgstr "Wort-Hervorhebung aktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:55
+msgid "Words to highlight:"
+msgstr "Wörter zum Hervorheben:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:57
+msgid "Word splitters:"
+msgstr "Worttrennzeichen:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:59
+msgid "Highlight messages containing my nickname"
+msgstr "Nachrichten, die den eigenen Spitznamen enthalten, hervorheben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:61
+msgid ""
+"<center>If this option is enabled, KVIrc will highlight any user message "
+"containing your current nickname</center>"
+msgstr ""
+"<center>Wenn Sie diese Option aktiviert ist, wird KVIrc in der Fensterleiste "
+"alarmieren, wenn irgendeine Benutzernachricht den aktuellen Spitznamen "
+"enthält.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:63
+msgid "Flash the system taskbar entry on highlighted messages"
+msgstr "Systemfensterleiste bei neuer Hervorhebung-Nachricht aufblinken lassen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:65
+msgid ""
+"<center>If this option is enabled, KVIrc will (attempt to) flash the system "
+"taskbar entry when a highlighted message is printed and KVIrc is not the "
+"active window</center>"
+msgstr ""
+"<center>Diese Option wird KVIrc veranlassen, den Systemfensterleisteneintrag "
+"aufblinken zu lassen, wenn eine Hervorhebung-Nachricht emfangen wurde und "
+"das KVIrc-Fenster nicht aktiv ist.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:67
+msgid "Popup the notifier window on highlighted messages"
+msgstr "Benachrichtungsfenster bei neuer Anfrage-Nachricht anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:69
+msgid ""
+"<center>If this option is enabled, KVIrc will popup a little notifier window "
+"in the low right corner of your desktop when a highlighted message is "
+"printed and KVIrc is not the active window</center>"
+msgstr ""
+"<center>Diese Option wird KVIrc veranlassen, ein kleines "
+"Benachrichtigungsfenster in de unteren rechten Ecke des Bildschirms "
+"anzuzeigen, wenn eine neue Anfrage-Nachricht emfangen wurde und das KVIrc-"
+"Fenster nicht aktiv ist.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:91
+msgid "Alert Restrictions"
+msgstr "Alarmbeschränkungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:92
+msgid "Restrict alert"
+msgstr "Alarm einschränken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:94
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if a "
+"normal message is received in a channel.<br>Actions like joins, parts and "
+"mode changes will be ignored.<br> This is useful if you are in channels with "
+"a high rate of traffic and only want to be alerted for messages that are "
+"interesting to you.</center>"
+msgstr ""
+"<center>Wenn diese Option aktiviert ist, wird KVIrc den "
+"Fensterleisteneintrag nur bei Nachrichten, die in einem Kanalfenster "
+"angezeigt werden, hervorheben. Aktionen, wie z.B. betreten, verlassen oder "
+"Modusänderungen werden ignoriert.<br>Dies ist sinnvoll, wenn man in Kanälen "
+"mit hoher betreten-, verlassen-Rate und/ oder Modusänderungen ist, und nur "
+"nur bei Nachrichten alarmiert werden möchte.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:96
+msgid "Alert for highlighted words"
+msgstr "Alarm für hervorgehobene Wörter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:98
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which contain a word from the highlighted words list above.</center>"
+msgstr ""
+"<center>Wenn diese Option aktiviert ist, wird die Fensterleiste auch bei "
+"Nachrichten, die in ein Word von der obigen <b>Wörter hervorheben</b>-Option "
+"enthalten, alarmieren.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:100
+msgid "Alert for query messages"
+msgstr "Bei Anfragenachrichten alarmieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:102
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which are shown in queries.</center>"
+msgstr ""
+"<center>Wenn diese Option aktiviert ist, wird die Fensterleiste auch bei "
+"Nachrichten, die in Anfragen angezeigt werden, alarmieren.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:107
+msgid "Use custom alert level"
+msgstr "Benutzerdefinierte Alarmstufe benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:109
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if "
+"the specified alert level is reached.</center>"
+msgstr ""
+"<center>Wenn Sie diese Option aktiviert ist, wird KVIrc nur in der "
+"Fensterleiste alarmieren, wenn die benutzerdefinierte Alarmstufe erreicht "
+"ist.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:111
+msgid "Minimum alert level:"
+msgstr "Minimale Alarmstufe:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:114
+msgid ""
+"<center>This option sets the minimum alert level for the taskbar.</center>"
+msgstr ""
+"<center>Diese Option setzt die minimale Alarmstufe für die Fensterleiste.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:213
+msgid "Output verbosity"
+msgstr "Ausgabestufe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:49
+msgid "Mute"
+msgstr "Still"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:50
+msgid "Quiet"
+msgstr "Leise"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:51
+msgid "Normal"
+msgstr "Normal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:52
+msgid "Verbose"
+msgstr "Informativ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:53
+msgid "Paranoic"
+msgstr "Paranoid"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:59
+msgid "Show in active window"
+msgstr "Im aktiven Fenster anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:60
+msgid "External messages"
+msgstr "Externe Nachrichten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:61
+msgid "External CTCP replies"
+msgstr "Externe CTCP-Antworten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:62
+msgid "Whois replies"
+msgstr "Who-Antworten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:63
+msgid "ChanServ and NickServ notices"
+msgstr "ChanServ- und NickServ-Notizen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:64
+msgid "Invite messages"
+msgstr "Einladungsnachrichten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:65
+msgid "Server replies"
+msgstr "Serverantworten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:66
+msgid "Server notices"
+msgstr "Servernotizen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:67
+msgid "Broadcast and WALLOPS messages"
+msgstr "Rundsende- und WALLOPS-Nachrichten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:70
+msgid "Show extended server information"
+msgstr "Erweiterte Serverinformationen anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:71
+msgid "Show server pings"
+msgstr "Zeige Server Pings"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:72
+msgid "Show own parts in the console"
+msgstr "Eigenes Verlassen von Kanälen in Console anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:73
+msgid "Show compact mode changes"
+msgstr "Kompakte Modus-Änderungen anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:43
+msgid "Minimize on startup"
+msgstr "Minimieren beim Start"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:44
+msgid "Confirm quit with active connections"
+msgstr "Beim Beenden mit aktiven Verbindungen um Bestätigung fragen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:45
+msgid "Remember window properties"
+msgstr "Fenstereigenschaften speichern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:50
+msgid "Disable splash screen"
+msgstr "Begrüßungsbildschirm deaktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:54
+msgid "Enable visual effects"
+msgstr "Visuelle Effekte einschalten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:55
+msgid "Hide Channel window tool buttons by default"
+msgstr "Verstecke standardmäßig die Kanalfensterwerkzeugknöpfe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:57
+msgid "Open Dialog Window For"
+msgstr "Dialogfenster öffnen für"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:58
+msgid "Preferences"
+msgstr "Einstellungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:59
+msgid "Registered Users"
+msgstr "Registrierte Benutzer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:149
+msgid "Servers"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.cpp:40
+msgid ""
+"This section contains irc tools<br><p>like<b> away, lag and logging system. "
+"</b> </p>"
+msgstr ""
+"Dieser Abschnitt beinhaltet IRC-Werkzeuge<br><p>wie<b> abwesend, Verzögerung "
+"und Logbuchsystem. </b> </p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:39
+msgid "On Disconnect"
+msgstr "Beim Trennen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:42
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:55
+msgid "Keep channels open"
+msgstr "Kanäle offenhalten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:44
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after disconnect."
+"</center>"
+msgstr ""
+"<center>Diese Option wird KVIrc veranlassen, die Kanalfenster nach einer "
+"Trennung geöffnet zu lassen.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:47
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:60
+msgid "Keep queries open"
+msgstr "Anfragen offen halten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:49
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after disconnect.</"
+"center>"
+msgstr ""
+"<center>Diese Option wird KVIrc veranlassen, die Anfragen nach einer "
+"Trennung geöffnet zu lassen.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:52
+msgid "On Unexpected Disconnect"
+msgstr "Bei unerwarteter Trennung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+"<center>Diese Option wird KVIrc veranlassen, die Kanalfenster nach einer "
+"unerwarteten Trennung geöffnet zu lassen.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:62
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+"<center>Diese Option wird KVIrc veranlassen, die Anfragen nach einer "
+"unerwarteten Trennung geöffnet zu lassen.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:65
+msgid "Rejoin channels after reconnect"
+msgstr "Kanäle nach neuverbinden erneut betreten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:67
+msgid ""
+"<center>This option will cause KVIrc to rejoin channels after a successful "
+"reconnect attempt.</center>"
+msgstr ""
+"<center>Diese Option wird KVIrc veranlassen, die Kanäle nach einer "
+"unerwarteten Trennung erneut zu betreten.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:69
+msgid "Reopen queries after reconnect"
+msgstr "Anfragen nach neuverbinden erneut öffnen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to reopen query windows after a "
+"successful reconnect attempt.</center>"
+msgstr ""
+"<center>Diese Option wird KVIrc veranlassen, die Anfragefenster nach einem "
+"erfolgreichen Neuverbinden erneut zu öffnen.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:75
+msgid "Automatically reconnect"
+msgstr "Automatisch erneut verbinden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:77
+msgid ""
+"<center>This option will enable auto-reconnecting after an unexpected "
+"disconnect. An unexpected disconnect is the <b>termination</b> of a <b>fully "
+"connected IRC session</b> that was <b>not requested by the user</b> by the "
+"means of the QUIT message.<p><b>Warning:</b> If you use /RAW to send a QUIT "
+"message to the server, this option will not behave correctly, since does not "
+"detect the outgoing QUIT message and will attempt to reconnect after the "
+"server has closed the connection. For this reason, always use the /QUIT "
+"command to close your connections. This option may also behave incorrectly "
+"with bouncers that support detaching, in this case a solution could be to "
+"prepare an alias that sends the bouncer \"detach\" command immediately "
+"before the \"quit\" command.<br><tt>alias(bncdetach){ raw bouncer detach; "
+"quit; }</tt></p></center>"
+msgstr ""
+"<center>Diese Option wird automatisches Neuverbinden nach einer unerwarteten "
+"Trennung aktivieren.<br>Eine \"unerwartete Trennung\" ist eine Schliessung "
+"von einer <b>voll verbundenen IRC-Sitzung</b><br>die <b>nicht von dem "
+"Benutzer angefordert</b> wurde. Diese hat gleiche Bedeutung wie eine QUIT-"
+"Nachricht.<p><br>WARNUNG: Wenn /RAW benutzt wird, um die QUIT-Nachricht zum "
+"Server zu senden<br>wird diese Option sich nicht korrekt verhalten, da sie "
+"nicht die ausgehende<br>QUIT-Nachricht erkennt und versuchen wird , neu zu "
+"verbinden, nachdem der Server die Verbindung geschlossen hat.<br>Für diesen "
+"Zweck immer das /QUIT-Kommando benutzen, um die Verbindungen zu schliessen."
+"<br>Diese Option kann sich auch mit Bouncern, die Abtrennen unterstützen, "
+"stören: <br>In diesem Falle könnte es eine Idee sein, ein Alias "
+"vorzubereiten, welches<br>dem Bouncer den \"detach\"-Befehl und unmittelbar "
+"danach das \"quit\"-Kommando sendet.<br><tt>alias(bncdetach){ raw bouncer "
+"detach; quit; }</tt></p></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:89
+msgid "Maximum attempts (0: unlimited):"
+msgstr "Maximale Versuche (0: unbegrenzt):"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:94
+msgid "Delay between attempts:"
+msgstr "Verzögerung zwischen den Versuchen:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:100
+msgid ""
+"<center>Minimum value: <b>0 sec</b><br>Maximum value: <b>86400 sec</b></"
+"center>"
+msgstr ""
+"<center>Minimaler Wert: <b>0 sek</b><br>Maximaler Wert: <b>86400 sek</b></"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:123
+msgid "Certificate"
+msgstr "Zertifikat:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:125
+msgid "Use SSL certificate (PEM format only)"
+msgstr "SSL-Zertifikat benutzen (nur PEM-Format)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:127
+msgid "Certificate location:"
+msgstr "Zertifikatsort:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:130
+msgid "Certificate password:"
+msgstr "Zertifikatspasswort:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:134
+msgid "Private Key"
+msgstr "Privater Schlüssel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:135
+msgid "Use SSL private key"
+msgstr "Privaten SSL-Schlüssel benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:137
+msgid "Private key location:"
+msgstr "Ort des privaten SSL-Schlüssels:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:140
+msgid "Private key password:"
+msgstr "Passwort für privaten SSL-Schlüssel:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:146
+msgid "This executable has no SSL support."
+msgstr "Diese Version von KVIrc hat keine SSL-Unterstützung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:165
+msgid "Timeout Values"
+msgstr "Zeitlimit-Werte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:166
+msgid "Connect timeout:"
+msgstr "Verbindungszeitablauf:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:168
+msgid "Outgoing data queue flush timeout:"
+msgstr "Zeitablauf ausgehende Datenwarteschlange:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:170
+msgid "Limit outgoing traffic"
+msgstr "Abgehenden Netzverkehr begrenzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:171
+msgid "Limit to 1 message every:"
+msgstr "1 Nachricht begrenzen auf alle:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:173
+msgid " usec"
+msgstr " µs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:175
+msgid ""
+"<center>Minimum value: <b>10000 usec</b><br>Maximum value: <b>10000000 usec</"
+"b></center>"
+msgstr ""
+"<center>Maximaler Wert: <b>10000 µs</b><br>Minimaler Wert: <b>10000000 µs</"
+"b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:179
+msgid "Network Interfaces"
+msgstr "Netzwerkschnittstellen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:181
+msgid "Bind IPv4 connections to:"
+msgstr "IPv4-Verbindungen binden an:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:185
+msgid "Bind IPv6 connections to:"
+msgstr "IPv6-Verbindungen binden an:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:210
+msgid "Enable ident service (bad practice on UNIX!)"
+msgstr "Ident-Dienst aktivieren (schlechte Gewohnheit bei UNIX!)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:216
+msgid "Output identd messages to:"
+msgstr "Schreibe identd-Meldungen nach:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:218
+msgid "Active window"
+msgstr "aktives Fenster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:219
+msgid "Console"
+msgstr "Konsole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:220
+msgid "Do not show any identd messages"
+msgstr "Keine identd-Meldungen anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:237
+msgid "Enable ident service only while connecting to server"
+msgstr "Ident-Service nur beim Verbinden zu einem Server aktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:240
+msgid "Ident username:"
+msgstr "Ident-Benutzername:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:243
+msgid "Service port:"
+msgstr "Dienstport:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:248
+msgid "IPv6 Settings"
+msgstr "IPv6-Einstellungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:249
+msgid "Enable service for IPv6"
+msgstr "Dienst für IPv6 aktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:258
+msgid "IP stack treats IPv4 as part of IPv6 namespace"
+msgstr "IP-Stack behandelt IPV4 als Teil des IPV6-Namensraums"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:265
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications. If it is possible, install a real ident daemon.</p>"
+msgstr ""
+"<p><b>Warnung:</b><br>Dies ist ein <b>nicht-RFC1413/913-kompilanter</b> "
+"ident-Daemon, der nur ein begrenzte Anzahl an Spezifikationen des IDENTD-"
+"Dienstes implementiert. Wenn möglich, einen richtigen ident-Daemon "
+"installieren.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:270
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications.<br>On UNIX, you may also need root privileges to bind to the "
+"auth port (113).<br>It is <b>highly recommended</b> that a <b>real</b> "
+"system-wide ident daemon be used instead, or none at all if ident is not "
+"required.</p>"
+msgstr ""
+"<p><b>Warnung:</b><br> Dies ist ein <b>nicht-RFC1413/913-kompilanter</b> "
+"ident-Daemon, der nur ein begrenzte Anzahl an Spezifikationen des IDENTD-"
+"Dienstes implementiert. <br>Bei UNIX-Systemen werden auch root-Previlegien "
+"zum Binden von Port 113 benötigt.<br>Es wird <b>stark empfohlen</b>, einen "
+"<b>richtigen</b> systemweiten ident-Daemon oder keinen, wenn kein Ident "
+"benötigt wird, zu benutzen.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.cpp:39
+msgid ""
+"This section contains the general client options<br><p>like<b> sound, "
+"mediafiles, URL handler </b> etc... </p>"
+msgstr ""
+"Dieser Abschnitt beinhaltet die generellen Client-Optionen<br><p>wie<b> "
+"Klänge, Mediendateien, URL handler </b> etc... </p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:39
+msgid "Automatically Log"
+msgstr "Automatisch Loggen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:40
+msgid "Query windows"
+msgstr "Anfragefenster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:41
+msgid "Channel windows"
+msgstr "Kanalfenster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:42
+msgid "DCC Chat windows"
+msgstr "DCC-Chat-Fenster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:43
+msgid "Console windows"
+msgstr "Console-Fenster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:45
+msgid "Gzip logs"
+msgstr "Gzip Logdateien"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:47
+msgid "Strip colors in logs"
+msgstr "Farben in Logdateien entfernen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:48
+msgid "Auto flush logs every"
+msgstr "Schreibe Logdateien automatisch alle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:49
+msgid " min"
+msgstr "Min."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:52
+msgid ""
+"<center>Save logs with the current interval<br>Set to 0 to disable this "
+"feature</center>"
+msgstr ""
+"<center>Speichere die Logdateien im angegebenen Intervall<br>0 deaktiviert "
+"diese Funktion</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:49
+msgid "Minimize console after successful login"
+msgstr "Console nach erfolgreichem Login minimieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:52
+msgid ""
+"<center>This option will cause KVIrc to minimize the console window after "
+"successfully logging into a server.</center>"
+msgstr ""
+"<center>Diese Option wird KVIrc veranlassen, das Console-Fenster nach "
+"erfolgreichem Login zu minimieren.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:55
+msgid "Show network name in console taskbar entry"
+msgstr "Netzwerknamen in Konsole-Taskbar-Eintrag anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to show the network name as the console "
+"taskbar entry instead of the server name. This is nice to keep on unless "
+"your servers are not organized in networks or you often connect to two "
+"servers of the same network.</center>"
+msgstr ""
+"<center>Diese Option veranlasst KVIrc dazu, den Netzwerknamen anstatt des "
+"Servernamens als Konsolen-Taskbar-Eintrag anzuzeigen. Es empfiehlt sich, "
+"dieses aktiviert zu lassen, so lange Du nicht zu Servern verbunden bist, die "
+"nicht in Netzwerken organisiert sind, oder Du Dich öfters zu zwei Servern "
+"des gleichen Netzwerkes verbindest.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:75
+msgid "Force immediate quit"
+msgstr "Sofortiges Beenden erzwingen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:78
+msgid ""
+"<center>This option causes KVIrc to close the connection immediately after "
+"sending the QUIT message.<br>When this option is disabled, KVIrc will wait "
+"for the server to close the connection.<br>Note that if you use this, your "
+"QUIT message may be not displayed.</center>"
+msgstr ""
+"<center>Diese Option veranlasst KVIrc zum Schliessen<br> der Verbindung "
+"unmittelbar nach dem Senden der QUIT-Nachricht.<b>Wenn diese Option "
+"deaktiviert ist, wird KVIrc <br>auf das Schliessen der Verbindung<br>durch "
+"den Server warten. <br>Bitte beachten, dass wenn dies aktiviert ist, die "
+"QUIT-Nachricht möglicherweise nicht angezeigt wird.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:84
+msgid "Prepend gender info to realname"
+msgstr "Geschlechtsinformationen vor Realnamen stellen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:110
+msgid "On Channel Kick"
+msgstr "Bei Kanalhinauswurf"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:112
+msgid "Rejoin channel"
+msgstr "Kanal erneut betreten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:115
+msgid ""
+"<center>This option will cause KVIrc to attempt to rejoin a channel after "
+"being kicked.</center>"
+msgstr ""
+"<center>Diese Option veranlasst KVIrc, einen Kanal<br>erneut zu betreten, "
+"nachdem man herausgeworfen wurde.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:129
+msgid "Keep channel open"
+msgstr "Kanal geöffnet lassen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:121
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"being kicked.<br>It might be a good idea to also enable the \"Rejoin channel"
+"\" option.</center>"
+msgstr ""
+"<center>Diese Option wird KVIrc veranlassen, die Kanalfenster geöffnet zu "
+"lassen, nachdem man hinausgeworfen wurde.<br>Es könnte eine gute Idee sein, "
+"auch die Option<br> \"Kanal erneut betreten\" zu aktivieren.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:127
+msgid "On Channel Part"
+msgstr "Beim Verlassen von Kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:132
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"leaving it.</center>"
+msgstr ""
+"<center>Diese Option wird KVIrc veranlassen, das Kanalfenster nach einer "
+"unerwarteten Trennung geöffnet zu lassen.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:136
+msgid "Automatically join channel on invite"
+msgstr "Automatisch Kanal betreten, wenn man eingeladen wurde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:139
+msgid ""
+"<center>This option will cause KVIrc to automatically join a channel when an "
+"INVITE message for that channel is received.<br><b>Warning:</b> This may "
+"help spammers harass you. :)</center>"
+msgstr ""
+"<center>Diese Option wird KVIrc veranlassen, automatisch<br>einen Kanal zu "
+"betreten, wenn eine INVITE-Nachricht für diesen Kanal empfangen wurde. "
+"<br><b>Warnung:</b> Dies kann Spammern helfen, Sie zu stören :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:144
+msgid "Always open channels as minimized"
+msgstr "Kanäle immer minimiert öffnen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:148
+msgid ""
+"<center>This option causes newly created channel windows to be immediately "
+"minimized.<br>Enable this if you don't like channels popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+"<center>Diese Option sorgt für das sofortige Minimieren neu erzeugter "
+"Kanalfenster.<br> Aktivieren Sie dies, wenn Sie keine aufgehenden "
+"Anfragefenster mögen, wenn Sie gerade im Kanal schreiben :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:168
+msgid "Log joined channels history"
+msgstr "Verlauf betretener Kanäle speichern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:170
+msgid "Default ban mask:"
+msgstr "Standard Bann-Maske:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:188
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:202
+msgid "On Channel Join"
+msgstr "Bei Betreten von Kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:189
+msgid "Do not send /WHO request"
+msgstr "/WHO-Anfrage nicht senden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:190
+msgid "Do not request ban list"
+msgstr "Bannliste nicht anfordern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:191
+msgid "Do not request ban exception list"
+msgstr "Bannausnahmenliste nicht anfordern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:192
+msgid "Do not request invite list"
+msgstr "Einladungsliste nicht anfordern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:194
+msgid "Do not update the away list"
+msgstr "Abwesend-Liste nciht aktualisieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:197
+msgid ""
+"<center>KVIrc sends out a channel /WHO message every now and then to keep "
+"the channel away list in sync. Use this option to disable this feature (and "
+"to save your IRC bandwidth.</center>"
+msgstr ""
+"<center>KVIrc sendet sporadisch Kanal-/WHO-Nachrichten, um die Abwesend-"
+"Liste synchron zu halten. Diese Option deaktiviert diese Funktion (und spart "
+"IRC-Bandbreite).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:203
+msgid "Echo channel topic"
+msgstr "Kanaltitel ausgeben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:204
+msgid "Show channel sync time"
+msgstr "Kanalsynchronisationszeit anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:40
+msgid "Default text encoding:"
+msgstr "Standard-Textkodierung:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:109
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:133
+msgid "Use Language Encoding"
+msgstr "Sprachkodierung benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:59
+msgid "Force language:"
+msgstr "Erzwinge Sprache:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:65
+msgid "<b>Note:</b> You need to restart KVirc to apply a language changing"
+msgstr ""
+"<b>Beachte:</b> KVIrc muss neu gestartet werden, um die Sprache zu ändern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:68
+msgid "Automatic detection"
+msgstr "Automatisch feststellen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:69
+msgid "en"
+msgstr "en"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Unable to write language information to"
+msgstr "Kann Sprachinformationen nicht schreiben nach"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:39
+msgid "Enable Anti-spam For"
+msgstr "Antispam aktivieren für"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:45
+msgid "Silent anti-spam (no warnings)"
+msgstr "Stiller Antispam (keine Warnungen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:46
+msgid "Words considered spam:"
+msgstr "Spam-Wörter:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:51
+msgid "Use workaround for firewall"
+msgstr "Workaround für Firewall benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:54
+msgid ""
+"<center>Enable this option if you can't accept incoming connections."
+"<br>KVIrc will try to use different methods to send and receive files."
+"<br>Please note that these methods may NOT work when communicating with a "
+"non-KVIrc client.</center>"
+msgstr ""
+"<center>Diese Option aktivieren, wenn keine ankommenden Verbindungen "
+"akzeptiert werden können.<br>KVIrc wird versuchen, verschiedene Techniken "
+"zum Senden und Empfangen von Dateien zu benutzen.<br>Bitte beachten, dass "
+"diese Techniken NICHT mit nicht-KVIrc-Clients funktionieren müssen.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:73
+msgid "Network Properties"
+msgstr "Netzwerkeigenschaften"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:75
+msgid "Use user-defined address or network interface"
+msgstr "Benutzerdefinierte Adresse oder Netzwerkschnittstelle benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:79
+msgid ""
+"<center>Enable this option if you are on a multihost machine and want to "
+"force one of the available IP addresses to be used for outgoing DCCs."
+"<br>This is especially useful when you use IPv6 and IPv4 addresses.<br>You "
+"can force KVIrc to always choose the IPv4 interface.</center>"
+msgstr ""
+"<center>Diese Option aktivieren, wenn einen Rechner mit mehreren IP's "
+"benutzt wird und die IP für ausgehende DCC's erzwungen werden soll.<br>Dies "
+"ist besonders nützlich, wenn IPv6 und IPv4-Adressen benutzt werden.<br>KVIrc "
+"kann gezwungen werden, immer die IPv4-Schnittstelle zu verwenden.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:84
+msgid "Listen on address/interface:"
+msgstr "An Adresse/Schnittstelle hören:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:87
+msgid ""
+"<center>This is the IP address or name of the interface to use by default "
+"for outgoing DCC transfers.<br>On UNIX systems that support it, you can also "
+"specify IPv4 interface names (such as <b>ppp0</b>).<br>If you set it to "
+"<b>0.0.0.0</b>, KVIrc will try to use the first available IPv4 interface</"
+"center>"
+msgstr ""
+"<center>Dies ist die Adresse oder der Name der Schnittstelle, die "
+"standardmässig für ausgehende DDC-Üertragungen verwendet wird.<br>bei UNIX-"
+"Systemen, die es unterstützen, kann auch der IPv4-Schnittstellenname (z.B. "
+"<b>ppp0</b>) angegeben werden.<br>Wenn diese Adresse auf 0.0.0.0 gesetzt "
+"wird, wird KVIrc die erste verfügbare IPv4-Schittstelle versuchen</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:94
+msgid "Use user-defined port range"
+msgstr "Benutzerdefinierten Portbereich benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:97
+msgid ""
+"<center>Enable this option if you want specify a local port range for DCC.</"
+"center>"
+msgstr ""
+"<center>Diese Option aktivieren, wenn ein lokalen Portbereich für DCC "
+"definiert werden soll</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:102
+msgid "Lowest port:"
+msgstr "Niedrigster Port:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:105
+msgid "Highest port:"
+msgstr "Höchster Port:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:108
+msgid "Send a fixed address in requests"
+msgstr "Feste Adresse in Anfragen senden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:111
+msgid ""
+"<center>Enable this option if you want to always send a fake IP address in "
+"your DCC requests.<br>This might be useful if you're behind a router with a "
+"static address that does network address translation (NAT) and forwards all "
+"or a range of ports.</center>"
+msgstr ""
+"<center>Diese Option aktivieren, wenn gewünscht wird, dass immer eine "
+"falsche IP-Adresse in den DCC-Anfragen gesendet wird.<br>Dies kann sinnvoll "
+"sein, wenn man hinter einem Router mit statischer IP ist, der Netzwerk-"
+"Adressumsetzung (NAT) macht und alle oder einen Bereich von Ports "
+"weiterleitet.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:115
+msgid "Send address/interface:"
+msgstr "Adresse/Schnittstelle senden:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:119
+msgid ""
+"<center>This is the fixed address that will be sent with all DCC requests if "
+"you enable the option above.</center>"
+msgstr ""
+"<center>Diese falsche Adresse wird mit allen DCC-Anfragen gesendet, wenn die "
+"oberere Option aktiviert ist.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:123
+msgid "Guess address from IRC server if unroutable"
+msgstr "Adresse vom IRC-Server bekommen, wenn nicht routbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:128
+msgid ""
+"<center>You can enable this option if you are behind a router that forwards "
+"all or a range of ports.<br>KVIrc will try to guess the IP address to use "
+"for DCC by looking up the local hostname as seen by the IRC server you're "
+"connected to.<br>This method is an exclusive alternative to the \"fixed "
+"address\" above.<br>It might guess the correct address automatically if "
+"certain conditions are met (e.g. the IRC server does not mask hostnames).</"
+"center>"
+msgstr ""
+"<center>Diese Option kann aktiviert werden, wenn man hinter einem Router "
+"ist, der alle oder einen Bereich von Ports weiterleitet.<br>KVIrc wird "
+"versuchen, die IP-Adresse für DCC durch das Auflösen des lokalen Hostnames, "
+"den der verbundene IRC-Server sieht, versucht.<br>Diese Methode ist eine "
+"exklusive Alternative zum obigen \"feste IP senden\":<br>Es wird vermutlich "
+"automatisch die richtige IP ermittelt werden, wenn verschiedene Bedingungen "
+"zutreffen (z.B. der IRC-Server verschlüsselt keine Hostnamen)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:134
+msgid "Use \"broken bouncer hack\" to detect address"
+msgstr "\"Hack für fehlerhaften Bouncer\" zum Erkennen der Adresse benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:137
+msgid ""
+"<center>When you're behind a dialup router and also tunneling through a "
+"psyBNC bouncer, you can use a bug in the bouncer to force KVIrc to bind the "
+"DCC connections to the dialup router's address.<br>It's an ugly hack - use "
+"it only if nothing else works.</center>"
+msgstr ""
+"<center>Wenn man hinter einem Wählrouter ist und ein psyBNC-Bouncher benutzt "
+"wird, kann der Bug des Bouncers ausgenutzt werden, um KVIrc zu zwingen, die "
+"DCC-Verbindungen zur IP des Wählrouters zu binden.<br>Dies ist ein unschöner "
+"Hack: Bitte nur benutzen, wenn nichts anderes funktioniert.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:144
+msgid "Notify failed DCC handshakes to the remote end"
+msgstr "Fehlgeschlagene DCC-Handshakes zum entfernten Ende melden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:147
+msgid ""
+"<center>If you enable this option, when a DCC request from a remote user "
+"can't be satisfied KVIrc will notify him by a CTCP ERRMSG. This is a nice "
+"feature so it is a good idea to leave it on unless for some reason you have "
+"deactivated the antiflood system: in this case turning off this option might "
+"help if you often get attacked by CTCP floods.</center>"
+msgstr ""
+"<center>Wie diese Option aktiviert ist, wird KVIrc den entfernten Benutzer "
+"mit CTCP ERRMSG benachrichtigen, wenn eine DCC-Anfrage nicht bearbeitet "
+"werden konnte. Dies ist eine gute Fähigkeit, so dass diese aktiviert bleiben "
+"sollte, wenn keine Gründe dagegen sprechen, wie z.B. dass das "
+"Überflutungssystem deaktiviert ist: in diesem Fall hilft das Deaktivieren "
+"dieser Option CTCP-Überflutungen zu vermeiden.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:154
+msgid "Maximum number of DCC sessions"
+msgstr "Maximale Anzahl der DCC-Sitzungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:156
+msgid ""
+"<center>This is the maximum number of concurrent DCC sessions and it "
+"includes all the DCC types (send,chat,recv...). KVIrc will refuse the "
+"requests when this limit is reached.</center>"
+msgstr ""
+"<center>Dies ist die maximale Anzahl der gleichzeitigen DCC-Sitzungen (alle "
+"DCC-Typen wie send, chat, etc.). KVIrc wird Anfragen ablehnen, wenn die "
+"Grenze erreicht ist.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:161
+msgid "DCC socket timeout:"
+msgstr "DCC-Socketzeitüberschreitung:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:164
+msgid ""
+"<center>This is the amount of time that KVIrc will wait for a response "
+"before assuming that a DCC has failed because the remote client was unable "
+"to connect to our listening socket.</center>"
+msgstr ""
+"<center>Dies ist die Zeit, die KVIrc warten wird, bevor ein DCC als "
+"fehlgeschlagen angenommen wird, weil es der entfernten Seite nicht möglich "
+"war, zu hörenden Socket zu verbinden.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:198
+msgid "On Incoming File"
+msgstr "Bei ankommender Datei"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:371
+msgid "Automatically accept"
+msgstr "Automatisch akzeptieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:200
+msgid "Open transfer window as minimized when auto-accepted"
+msgstr "Transferfenster minimiert erzeugen, wenn automatisch akzeptiert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:201
+msgid "Automatically resume when auto-accepted"
+msgstr "Automatisch Dateitransfer wiederaufnehmen, wenn automatisch akzeptiert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:203
+msgid "Save Location"
+msgstr "Speicherort"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:204
+msgid "Download folder:"
+msgstr "Herunterladen-Ordner:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:205
+msgid "Sort saved files by nicknames (create subfolders)"
+msgstr ""
+"Sortiere gespeicherte Dateien nach Spitznamen (erzeuge Unterverzeichnisse)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:206
+msgid "Guess save path from media type"
+msgstr "Speicherpfad vom Medientyp bekommen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:209
+msgid "On Download Completion"
+msgstr "Wenn herunterladen fertig"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:210
+msgid "Notify completion in console"
+msgstr "Notiere Erfolg in der Console"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:211
+msgid "Notify completion in notifier"
+msgstr "Abschluß in Benachrichtiger anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:212
+msgid "Automatically clear transfer"
+msgstr "Automatisch Transfer aufräumen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:215
+msgid ""
+"<center>This option will cause succesfully terminated transfers to be "
+"automatically removed from the transfer window.</center>"
+msgstr ""
+"<center>Diese Option veranlasst KVIrc, erfolgreich abgeschlossene Tranfers "
+"automatisch aus dem Transfer-Fenster zu löschen.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:220
+msgid "Always open transfer window as minimized"
+msgstr "Transfer-Fenster immer minimiert öffnen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:238
+msgid "Bug Compatibility"
+msgstr "Fehlerkompatibilität"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:239
+msgid "Send ACK for byte 0"
+msgstr "ACK für Byte 0 senden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:242
+msgid ""
+"<center>This option causes KVIrc to send a zero-byte acknowledge to kick-"
+"start the DCC transfer with some buggy IRC clients.<br>Use it only if your "
+"DCC transfers stall just after establishing a connection without sending any "
+"data.</center>"
+msgstr ""
+"<center>Diese Option wird KVIrc veranlassen, eine Nullbytebestäigung zu "
+"senden, um die DCC-Übertragung bei einigen fehlerhaften IRC-Clients zu "
+"starten.<br>Bitte nur benutzen, wenn die DCC-Übertragung nach dem Aufbau der "
+"Verbindung ohne Senden von Daten steht.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:247
+msgid "Accept broken RESUME (mIRC file.ext)"
+msgstr "Fehlerhafte RESUME-Anfragen akzeptieren (mIRC file.ext)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:250
+msgid ""
+"<center>This option causes KVIrc to accept RESUME requests with invalid "
+"filenames.<br>Use it if KVIrc fails to accept RESUME requests from other "
+"clients (e.g. some versions of mIRC).</center>"
+msgstr ""
+"<center>Diese Version von KVIrc akzeptiert RESUME-Anfragen mit ungültigen "
+"Dateinamen. <br>Dies benutzen, wenn das Akzeptieren von Fortsetzenanfragen "
+"von anderen Clients (z.B. einige Versionen von mIRC) fehlschlägt.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:254
+msgid "Replace spaces with underscores in outgoing filenames"
+msgstr "Ersetze Leerzeichen mit Unterstrichen in ausgehenden Dateinamen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:257
+msgid ""
+"<center>This option causes KVIrc to replace spaces with underscores in "
+"filenames for all the outgoing file transfers. This will fix filename "
+"handling with some buggy clients (e.g. some versions of mIRC)."
+msgstr ""
+"<center>Diese Option veranlasst KVIrc dazu, in den Namen aller ausgehenden "
+"Dateitransfers die Leerzeichen durch Unterstriche zu ersetzen. Dies "
+"repariert die Behandlung der Dateinamen bei einigen fehlerhaften Clients (z. "
+"B. einige Version von mIRC)."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:262
+msgid "Limits"
+msgstr "Begrenzungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:265
+msgid "Limit upload bandwidth to"
+msgstr "Bandbreite zum Hochladen beschränken auf"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:273
+msgid "bytes/sec"
+msgstr "Bytes/s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:271
+msgid "Limit download bandwidth to"
+msgstr "Bandbreite zum Herunterladen beschränken auf"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:277
+msgid "Maximum number of DCC transfers"
+msgstr "Maximale Anzahl der DCC-Übertragungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:279
+msgid ""
+"<center>This is the maximum number of concurrent DCC transfers. KVIrc will "
+"refuse the requests when this limit is reached.</center>"
+msgstr ""
+"<center>Dies ist die maximale Anzahl der gleichzeitigen DCC-Übertragungen. "
+"KVIrc wird Anfragen ablehnen, wenn die Grenze erreicht ist.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:283
+msgid "Tweaks"
+msgstr "Justierungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:285
+msgid "Use fast send (send ahead)"
+msgstr "Schnelles Senden benutzen (Voraussenden)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:288
+msgid ""
+"<center>The \"send ahead\" DCC method allows data to be sent faster by "
+"breaking some of the rules of the original DCC SEND protocol specification."
+"<br>Most clients can handle this kind of optimisation so disable it only if "
+"you have problems.</center>"
+msgstr ""
+"<center>Die \"Voraussenden\"-Methode erlaubt es, Daten schneller als die "
+"orginale DCC SEND-Protokollspezifikation zu senden, aber es verstösst gegen "
+"einige Regel dieser.<br>Die meisten Clients können mit diese Art der "
+"Optimierung umgehen, daher nur deaktivieren, wenn Probleme auftreten.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:295
+msgid "Force idle step"
+msgstr "Leerlaufschritt erzwingen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:298
+msgid ""
+"<center>Enable this option when the dcc file transfers tend to block your "
+"computer by consuming too much CPU time. When this option is enabled the "
+"idle interval below will be forcibly inserted between each sent/received "
+"data packet.</center>"
+msgstr ""
+"<center>Aktivieren Sie diese Aktion, wenn DCC-Übertragungen dazu führen, "
+"dass Ihr Computer blockiert,weil sie zuviel CPU-Zeit konsumieren. Wenn diese "
+"Option aktiviert ist, wird jedes unten angegebene Intervall ein "
+"Leerlaufschritt zwischen jedem gesendetem und empfangenen Paket eingefügt.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:310
+msgid ""
+"<center>This parameter controls the average delay between two packets sent "
+"or received.<br>A smaller interval will cause you to send data faster but "
+"will also add load to your CPU, disk and network interface.<br>Reasonable "
+"values are from 5 to 50 milliseconds.</center>"
+msgstr ""
+"<center>Dieser Parameter kontrolliert die mittlere Verzögerungszeit zwischen "
+"2 gesendeten Paketen.<br>Ein kleinerer Leerlaufschritt kann wahrscheinlich "
+"Daten schneller senden, aber die Belastung von CPU, Festplatte und "
+"Netzwerkschnittstelle steigt.<br>Vernünftige Werte sind von 5 bis 50 "
+"Millisekunden.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:316
+msgid "Packet size:"
+msgstr "Paketgrösse:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:320
+msgid ""
+"<center>This parameter controls the packet size used for DCC SEND.<br>With "
+"bigger packets you will be probably send data faster, but you will also "
+"saturate your bandwidth and in some cases cause more disk activity."
+"<br>Reasonable values are from 512 to 4096 bytes.</center>"
+msgstr ""
+"<center>Dieser Parameter kontrolliert die Paketgrösse bei DCC SEND.<b>Mit "
+"einem grösserem Paket kann man wahrscheinlich Daten schneller senden, aber "
+"die Bandbreite wird schneller gesättigt und in einigen Fällen etwas mehr "
+"Festplattenaktivität hervorgerufen.<br>Vernünftige Werte sind von 512 bis "
+"4096 Byte</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:349
+msgid "On Chat Request"
+msgstr "Bei Chat-Anfrage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:351
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:373
+msgid "Open minimized when auto-accepted"
+msgstr "Minimiert erzeugen, wenn automatisch akzeptiert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:353
+msgid "Always open as minimized"
+msgstr "Immer minimiert öffnen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:369
+msgid "Open all minimized"
+msgstr "Alle minimiert öffnen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:370
+msgid "On Voice Request"
+msgstr "Bei Voice-Anfrage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:376
+msgid "Force half-duplex mode on sound device"
+msgstr "Halb-duplex-Modus beim beim Klanggerät erzwingen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:377
+msgid "Volume slider controls PCM, not Master"
+msgstr "Lautstärkeregler kontrolliert PCM, nicht Master"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:379
+msgid "Sound device:"
+msgstr "Klanggerät:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:380
+msgid "Mixer device:"
+msgstr "Mixergerät:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:382
+msgid "Pre-buffer size:"
+msgstr "Vorpuffergrösse:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:38
+msgid "Enable Ignore For"
+msgstr "Ignorieren aktivieren für"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:39
+msgid "Private/channel messages"
+msgstr "Private Nachrichen/Kanalnachrichten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:40
+msgid "Private/channel notices"
+msgstr "Private Notiz/Kanalnotiz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:44
+msgid "Use verbose ignore (show messages in console)"
+msgstr "Informatives Ignorieren benutzen (Nachrichten in der Konsole zeigen)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:46
+msgid "Sound System"
+msgstr "Klangsystem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:66
+msgid "This allows you to select the sound system to be used with KVIrc."
+msgstr ""
+"Dies erlaubt das Auswählen des Klangsystems, dass von KVIrc benutzt werden "
+"soll"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:72
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:88
+msgid "Auto-detect"
+msgstr "Automatisch erkennen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:91
+msgid "Test"
+msgstr "Test"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:79
+msgid "Media Player"
+msgstr "Medienspieler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:81
+msgid ""
+"This allows you to select the preferred media player to be used with the "
+"mediaplayer.* module commands and functions."
+msgstr ""
+"Dies erlaubt den bevorzugten Medienspieler auszuwählen, der mit dem "
+"mediaplayer-Modulkommandos benutzt wird."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:102
+msgid "ID3 tags' encoding"
+msgstr "ID3-Tag Kodierung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:104
+msgid "This allows you to select encoding of mp3 tags."
+msgstr ""
+"Dies erlaubt das Auswählen der Kodierung der mp3-Beschreibungen (Tags)."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:125
+msgid "Winamp messages ecoding"
+msgstr "Kodierung der Winamp-Meldungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:127
+msgid "This allows you to select encoding of winamp messages."
+msgstr "Dies erlaubt das Auswählen der Kodierung der Winamp-Meldungen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:290
+msgid "New Query opened"
+msgstr "Neue Anfrage geöffnet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:293
+msgid "New message in inactive query"
+msgstr "Neue Nachricht in inaktiver Anfrage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:296
+msgid "Highlighted message in inactive window"
+msgstr "Hervorgehobene Nachricht in inaktivem Fenster"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:299
+msgid "Me have been kicked"
+msgstr "Ich wurde rausgeschmissen (kicked)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:39
+msgid "Selection background color"
+msgstr "Ausgewählte Hintergrundfarbe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:40
+msgid "Selection foreground color"
+msgstr "Ausgewählte Vordergrundfarbe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:41
+msgid "Control char color"
+msgstr "Kontrollzeichenfarbe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:42
+msgid "Cursor color"
+msgstr "Cursorfarbe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:141
+msgid "Warp cursor at the end of line when browsing history"
+msgstr "Cursor beim Blättern im Verlauf an das Ende der Zeile setzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:142
+msgid "Disable the input history window and it's log memory."
+msgstr "Eingabeverlaufsfenster deaktivieren und in Speicher loggen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:143
+msgid "Hide input toolbuttons by default"
+msgstr "Eingabe-Werkzeugknöpfe standardmäßig verstecken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:144
+msgid "Nick completion"
+msgstr "Spitznamenkomplettierung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:145
+msgid "Use bash-like nick completion"
+msgstr "Bash-ähnliche Spitznamenkomplettierung benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:146
+msgid "Nick completion postfix string"
+msgstr "Spitznamenkomplettierung des Zeichenkettenendes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:147
+msgid "Use the completion postfix string for the first word only"
+msgstr "Komplettierung des Zeichenkettenendes nur für das erste Wort benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:148
+msgid "Commandline in user-friendly mode by default"
+msgstr "Kommandozeile standardmäßig in benutzerfreundlichem Modus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:81
+msgid "Show message icons"
+msgstr "Nachrichtensymbole anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:82
+msgid "Draw some emoticons (smileys) as pictures"
+msgstr "Einige Emoticons (Smilies) als Bilder darstellen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:83
+msgid "Don't show colors in user messages"
+msgstr "Keine Farben in Benutzernachrichten anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:88
+msgid "Nicknames"
+msgstr "Spitznamen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:90
+msgid "\"Smart\" nickname colors"
+msgstr "\"Elegante\" Spitznamenfarben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:91
+msgid "Use same colors as in the userlist"
+msgstr "Benutze die gleichen Farben wie in der Benutzerliste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:93
+msgid "Show nicknames in bold"
+msgstr "Spitznamen fett anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:94
+msgid "Show user and host"
+msgstr "Benutzername und Host anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:95
+msgid "Show channel mode prefix"
+msgstr "Kanalmodus-Vorspann anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:96
+msgid "User-defined prefix and postfix"
+msgstr "Benutzerdefinierter Vorspann und Nachspann"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:98
+msgid "[PREFIX]nickname[!user@host][POSTFIX] message"
+msgstr "[VORSPANN]Spitzname[!Benutzername@Host][NACHSPANN] Nachricht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:112
+msgid "Prefix:"
+msgstr "Vorwahl:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:117
+msgid "Postfix:"
+msgstr "Nachspann:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:131
+msgid "Show timestamp"
+msgstr "Zeitstempel anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:134
+msgid "Use UTC time for timestamp"
+msgstr "UTC-Zeit für Zeitstempel benutzen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:141
+msgid "Use special color for timestamps"
+msgstr "Benutze spezielle Farbe für Zeitstempel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:147
+msgid "Timestamp format:"
+msgstr "Zeitstempel-Format:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:320
+msgid "Transparent"
+msgstr "Transparent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:401
+msgid "Message Type"
+msgstr "Nachrichtentyp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:417
+msgid "Background:"
+msgstr "Hintergrund:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:426
+msgid "Foreground:"
+msgstr "Vordergrund:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:434
+msgid "Alert level:"
+msgstr "Alarmstufe:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:454
+msgid "Log this"
+msgstr "Dieses loggen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:458
+msgid "Load From..."
+msgstr "Laden von..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:460
+msgid "Save As..."
+msgstr "Speichern unter..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:589
+msgid "Choose a Filename - KVIrc"
+msgstr "Dateiname auswählen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:646
+msgid "Choose a Filename - KVIrc "
+msgstr "Dateiname auswählen - KVIrc "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:40
+msgid "Enable lag meter"
+msgstr "Lagmeter aktivieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:42
+msgid ""
+"<center>This enables the lag meter engine, which checks at regular intervals "
+"how much lag (latency) the server has.</center>"
+msgstr ""
+"<center>Dies aktiviert die Lagmeterroutine, die in regelmässigen Intervallen "
+"den Lag (Verzögerung) des Servers prüft.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:45
+msgid "Lag meter heartbeat:"
+msgstr "Lag-Meter Herzschlag:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:49
+msgid ""
+"<center>This option allows you to set the lag meter heartbeat interval."
+"<br>The lower the heartbeat interval the higher will be the accuracy of the "
+"lag check but also higher cpu usage and data traffic to the server."
+"<br>Please note that this is NOT the interval between pings sent to the "
+"server: the pings (if any) will be sent really less often. 5000 is a "
+"reasonable value.</center>"
+msgstr ""
+"<center>Diese Option erlaubt das Setzen des Intervall des Herzschlags vom "
+"Lagmeter.<br>Ein niedriges Herzschlagintervall wird die Genauigkeit der "
+"Lagprüfung verbessern aber auch eine höhere CPU-Last und erhöhten "
+"Datenverkehr zum Server verursachen.<br>Bitte beachten, dass dies nicht das "
+"Intervall ist, in dem ein Ping zum Server gesendet wird: die Pings werden "
+"wirklich weniger oft gesendet. 5000 ist ein vernünftiger Wert.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:58
+msgid "Trigger event if lag exceeds:"
+msgstr "Trigger-Ereignis wenn Lag überschritten wird:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:61
+msgid ""
+"<center>This option controls the threshold for the OnLagAlarmTimeUp and "
+"OnLagAlarmTimeDown events. When the lag goes above the threshold "
+"OnLagAlarmTimeUp will be triggered and when the lag falls back below the "
+"threshold then OnLagAlarmTimeDown will be triggered</center>"
+msgstr ""
+"<center>Diese Option kontrolliert den Grenzwert für das OnLagAlarmTimeUp- "
+"und OnLagAlarmTimeDown-Ereignis. Wenn der Lag über den Grenzwert geht wird "
+"OnLagAlarmTimeUp ausgelöst und wenn der Lag unter den Grenzwert fällt "
+"OnLagAlarmTimeDown</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:68
+msgid "Show lag in IRC context display"
+msgstr "Lag in IRC-Kontextanzeige anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:70
+msgid ""
+"<center>This makes the IRC context display applet show the current lag after "
+"the user's nickname (in seconds)</center>"
+msgstr ""
+"<center> Dies wird ein IRC-Kontextminiprogramm anzeigen, welches den "
+"aktuellen Lag hinter dem Spitznamen anzeigt (in Sekunden)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.h:28
+msgid "Away"
+msgstr "Abwesend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.h:28
+msgid "CTCP"
+msgstr "CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:28
+msgid "DCC"
+msgstr "DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:59
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:41
+msgid "Advanced"
+msgstr "Erweitert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:72
+msgid "File Transfer"
+msgstr "Dateiübertragung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:113
+msgid "Chat"
+msgstr "Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:126
+msgid "Voice"
+msgstr "Voice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:32
+msgid "IRC"
+msgstr "IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:73
+msgid "Channel"
+msgstr "Kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:28
+msgid "Lag"
+msgstr "Lag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:30
+msgid "time,ping"
+msgstr "Zeit, ping"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:37
+msgid "authentication,identify"
+msgstr "Authentifizierung, identifizieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:31
+msgid "Language"
+msgstr "Sprache"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:34
+msgid "language,encoding,charset,codepage"
+msgstr "Sprache, Kodierung, Charset, Codepage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:28
+msgid "Contacts"
+msgstr "Kontakte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:30
+msgid "notify,buddy,buddies,friends"
+msgstr "benachrichtigen, Kumpel, Kumpels, Freunde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:42
+msgid "Notifier"
+msgstr "Benachrichtiger"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:43
+msgid "popup"
+msgstr "Aufklappmenü"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:37
+msgid "Text"
+msgstr "Text"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:38
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:49
+msgid "theme,colors,output"
+msgstr "Thema, Farben, Ausgabe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:52
+msgid "Message Style"
+msgstr "Nachrichtenstil"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:56
+msgid "theme,privmsg,output,format"
+msgstr "Thema, Privatnachricht, Ausgabe, Format"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:67
+msgid "Timestamp"
+msgstr "Zeitstempel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:71
+msgid "time,timestamp"
+msgstr "Zeit,Zeitstempel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:88
+msgid "Message Colors"
+msgstr "Nachrichtenfarben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:169
+msgid "theme,colors,messages,output"
+msgstr "Thema,Farbe,Meldungen,Ausgabe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:168
+msgid "Color Set"
+msgstr "Farben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.h:32
+msgid "Avatars"
+msgstr "Avatare"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:32
+msgid "Sound"
+msgstr "Klänge"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:48
+msgid "sound,xmms,audio,play,amarok"
+msgstr "Klänge,xmms,Audio,abspielen,amarok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:81
+msgid "Sounds"
+msgstr "Klänge"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:83
+msgid "sound,events"
+msgstr "Klänge,Ereignisse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:28
+msgid "URL handlers"
+msgstr "URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:31
+msgid "url,programs"
+msgstr "URL,Programme"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:29
+msgid "Tray icon"
+msgstr "Tray icon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:31
+msgid "tray,dockwidget"
+msgstr "tray,dockwidget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.h:33
+msgid "Tools"
+msgstr "Werkzeuge"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.h:28
+msgid "General options"
+msgstr "Allgemeine Optionen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.h:31
+msgid "Interface"
+msgstr "Schnittstelle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:29
+msgid "Text icons"
+msgstr "Emoticons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:31
+msgid "smileys,emoticons"
+msgstr "smileys,emoticons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:34
+msgid "Output"
+msgstr "Ausgabe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:48
+msgid "Look"
+msgstr "Aussehen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:101
+msgid "Features"
+msgstr "Funktionen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:46
+msgid "Media Types"
+msgstr "Medientypen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:48
+msgid "file,audio,video,programs"
+msgstr "Datei,Audio,Video,Programme"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:114
+msgid "theme"
+msgstr "Thema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:47
+msgid "Transparency"
+msgstr "Folie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:48
+msgid "theme,background"
+msgstr "Thema,Hintergrund"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:74
+msgid "Window Captions"
+msgstr "Fenstertitel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:88
+msgid "theme,mdi"
+msgstr "Thema,mdi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:87
+msgid "Workspace"
+msgstr "Arbeitsplatz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:100
+msgid "ToolBar Applets"
+msgstr "Werkzeugleisten-Miniprogramme"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:101
+msgid "theme,toolbar"
+msgstr "Thema,Werkzeugleiste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:150
+msgid "connection"
+msgstr "Verbindung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:33
+msgid "Protection"
+msgstr "Sicherung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:36
+msgid "ctcp,flood"
+msgstr "ctcp,Flut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:144
+msgid "Avatar"
+msgstr "Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.h:28
+msgid "Anti-spam"
+msgstr "Antispam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:32
+msgid "Verbosity And Output"
+msgstr "Ausführlichkeit und Ausgabe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:34
+msgid "debug"
+msgstr "Fehlerbehebung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:28
+msgid "Logging"
+msgstr "Log-Aufzeichnungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:29
+msgid "save,output"
+msgstr "speichern,Ausgabe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:50
+msgid "Input"
+msgstr "Eingabe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:33
+msgid "theme,colors,text"
+msgstr "Thema,Farben,Text"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:33
+msgid "Taskbar"
+msgstr "Fensterleiste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:47
+msgid "Tree Taskbar"
+msgstr "Baumfensterleiste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:65
+msgid "Foreground"
+msgstr "Vordergrund"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:111
+msgid "Classic Taskbar"
+msgstr "Klassische Fensterleiste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:52
+msgid "Proxy Hosts"
+msgstr "Proxyhosts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:54
+msgid "connection,servers"
+msgstr "Verbindung,Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:28
+msgid "Alert/Highlight"
+msgstr "Alarm/Hervorhebung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:42
+msgid "Highlight"
+msgstr "Hervorhebung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:55
+msgid "Taskbar Alert"
+msgstr "Fensterleiste-Alarm"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.h:29
+msgid "Flood Protection"
+msgstr "Überflutungsbegrenzung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:30
+msgid "Userlist"
+msgstr "Benutzerliste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:31
+msgid "theme,userlist,channel"
+msgstr "Thema,Benutzerliste,Kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:45
+msgid "theme,userlist,channel,background"
+msgstr "Thema,Benutzerliste,Kanal,Hintergrund"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:66
+msgid "theme,userlist,channel,colors"
+msgstr "Thema,Benutzerliste,Kanal,Farben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:81
+msgid "Nickname Grid"
+msgstr "Gitter für Spitznamen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:82
+msgid "theme,userlist,channel,grid"
+msgstr "Thema,Benutzerliste,Kanal,Gitternetz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:102
+msgid "userlist,channel"
+msgstr "Benutzerliste,Kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:29
+msgid "Labels"
+msgstr "Beschriftungen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:30
+msgid "theme,topic"
+msgstr "Thema,Diskusionsthema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:28
+msgid "Scripting Engine"
+msgstr "Skripte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:29
+msgid "scripting,kvs,debug"
+msgstr "skripten,kvs,Fehlerbehebung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:55
+msgid "SSL"
+msgstr "SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:72
+msgid "Socket"
+msgstr "Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:87
+msgid "Ident Service"
+msgstr "Ident-Dienst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:29
+msgid "Ignore"
+msgstr "Ignorieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:31
+msgid "protection"
+msgstr "Sicherung"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:28
+msgid "Query"
+msgstr "Anfrage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:30
+msgid "chat"
+msgstr "Chat"
+
+#, fuzzy
+#~ msgid "Output verosity"
+#~ msgstr "Ausgabestufe"
+
+#, fuzzy
+#~ msgid "Scaling"
+#~ msgstr "Skripte"
+
+#~ msgid "Save Current Theme"
+#~ msgstr "Aktuelles Thema speichern"
+
+#~ msgid "Theme name:"
+#~ msgstr "Name des Themas:"
+
+#~ msgid "Version:"
+#~ msgstr "Version:"
+
+#~ msgid "Author:"
+#~ msgstr "Autor:"
+
+#, fuzzy
+#~ msgid "Package format:"
+#~ msgstr "Nachrichtenformat"
+
+#~ msgid "Save Theme - KVIrc"
+#~ msgstr "Thema speichern - KVIrc"
+
+#~ msgid "Unable to create theme directory."
+#~ msgstr "Erstellen des Thema-Verzeichnisses fehlgeschlagen"
+
+#~ msgid "Theme saved successfully to "
+#~ msgstr "Thema erfolgreich gespeichert nach "
+
+#, fuzzy
+#~ msgid "Choose save directory"
+#~ msgstr "Verzeichnis auswählen - KVIrc"
+
+#, fuzzy
+#~ msgid "You must select save directory"
+#~ msgstr "Verzeichnis auswählen - KVIrc"
+
+#, fuzzy
+#~ msgid "Unable to create theme files directory."
+#~ msgstr "Erstellen des Thema-Verzeichnisses fehlgeschlagen"
+
+#, fuzzy
+#~ msgid "Unable to create theme utils directory."
+#~ msgstr "Erstellen des Thema-Verzeichnisses fehlgeschlagen"
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for reading."
+#~ msgstr "Datei %s kann nicht zum Lesen geöffnet werden."
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for writing."
+#~ msgstr "Datei %s kann nicht zum Schreiben geöffnet werden."
+
+#, fuzzy
+#~ msgid "Choose filaname"
+#~ msgstr "Logdateiname auswählen"
+
+#, fuzzy
+#~ msgid "You must select filename"
+#~ msgstr "Es muss ein Themenname ausgewählt werden!"
+
+#~ msgid "You must choose a theme name!"
+#~ msgstr "Es muss ein Themenname ausgewählt werden!"
+
+#~ msgid "Refresh Theme List"
+#~ msgstr "Themenliste aktualisieren"
+
+#~ msgid "Save Current Theme..."
+#~ msgstr "Aktuelles Thema speichern..."
+
+#, fuzzy
+#~ msgid "Delete Selected Theme"
+#~ msgstr "Ausgewählte &Löschen."
+
+#~ msgid "Get More Themes..."
+#~ msgstr "Mehr Themen bekommen..."
+
+#, fuzzy
+#~ msgid "Open Theme - KVIrc"
+#~ msgstr "Thema speichern - KVIrc"
+
+#, fuzzy
+#~ msgid "You must select file"
+#~ msgstr "Keine Einträge ausgewählt"
+
+#~ msgid "Current Theme"
+#~ msgstr "Aktuelles Thema"
+
+#~ msgid "<p>The active theme settings</p>"
+#~ msgstr "<p>Die aktiven Themeneinstellungen</p>"
+
+#~ msgid "<p>Theme: %1</p>"
+#~ msgstr "<p>Thema: %1</p>"
+
+#~ msgid "<p>Version: %1</p>"
+#~ msgstr "<p>Version: %1</p>"
+
+#~ msgid "<p>Date: %1</p>"
+#~ msgstr "<p>Datum: %1</p>"
+
+#~ msgid "<p>Author: %1</p>"
+#~ msgstr "<p>Autor: %1</p>"
+
+#, fuzzy
+#~ msgid "Timestamp color"
+#~ msgstr "Zeitstempel"
+
+#~ msgid "Minimize new queries"
+#~ msgstr "Neue Anfragen minimieren"
+
+#~ msgid "Automatically close on completion"
+#~ msgstr "Automatisch bei Abschluss schliessen"
+
+#~ msgid "Speed limits"
+#~ msgstr "Geschwindigkeitsbegrenzungen"
+
+#~ msgid "Idle interval:"
+#~ msgstr "Leerlaufintervall:"
+
+#~ msgid ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">General Preferences</font></h1></center></td></"
+#~ "tr><tr><td><br><br><center><b>These sections contain various settings for "
+#~ "KVIrc</b></center><br><br><p>When you have finished, click \"<b>OK</b>\" "
+#~ "to accept your changes or \"<b>Cancel</b>\" to discard them. Clicking "
+#~ "\"<b>Apply</b>\" will commit your changes without closing the window.</"
+#~ "td></tr><tr><td>Many settings have tooltips that can be shown by holding "
+#~ "the cursor over their label for a few seconds.</p></td></tr></table>"
+#~ msgstr ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">Allgemeine Einstellungen</font></h1></center></td></"
+#~ "tr><tr><td><br><br><center>Wenn fertig, auf \"<b>OK</b>\" klicken, um die "
+#~ "Änderungen zu akzeptieren oder \"<b>Abbrechen</b>\", um sie zu verwerfen. "
+#~ "Klicken auf \"<b>Anwenden</b>\", um die Änderungen anzuwenden, ohne "
+#~ "dieses Fenster zu schliessen.</td><tr><tr><td>Die meisten Optionen haben "
+#~ "Kurzinfos, auf die einfach zugegriffen werden kann, indem man die Maus "
+#~ "über der Optionsauswahl einige Sekunden ruhen lässt.</p></td></tr></table>"
+
+#~ msgid ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">General Preferences</font></h1></center></td></"
+#~ "tr><tr><td><br><br>Select a category in the list view on the left to view "
+#~ "the related settings. When you have finished, click \"<b>OK</b>\" to "
+#~ "accept your changes or \"<b>Cancel</b>\" to discard them. Clicking "
+#~ "\"<b>Apply</b>\" will commit your changes without closing this window."
+#~ "<br><br></td></tr></table>"
+#~ msgstr ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">Allgemeine Einstellungen</font></h1></center></td></"
+#~ "tr><tr><td><br><br>Eine Kategorie links in der Liste auswählen, um die "
+#~ "entsprechenden Optionen anzusehen. Wenn fertig, auf \"<b>OK</b>\" "
+#~ "klicken, um die Änderungen zu akzeptieren oder \"<b>Abbrechen</b>\" um "
+#~ "sie zu verwerfen. Auf \"<b>Anwenden</b>\" klicken, um die Änderungen "
+#~ "anzuwenden, ohne dieses Fenster zu schliessen.<br><br></td></tr></table>"
+
+#~ msgid "Preferences - KVIrc"
+#~ msgstr "Einstellungen - KVIrc"
+
+#~ msgid "Standard Colors"
+#~ msgstr "Standardfarben"
+
+#, fuzzy
+#~ msgid "Avatar Handling"
+#~ msgstr "Avataränderung"
+
+#~ msgid "MDI Captions"
+#~ msgstr "MDI-Überschriften"
+
+#~ msgid "MDI Area"
+#~ msgstr "MDI-Bereich"
+
+#, fuzzy
+#~ msgid "Load & Save"
+#~ msgstr "&Speichern"
+
+#, fuzzy
+#~ msgid "Output Style"
+#~ msgstr "Ausgabe"
+
+#~ msgid "Maximum number of rows:"
+#~ msgstr "Maximale Anzahl der Zeilen:"
+
+#~ msgid ""
+#~ "The list below shows the currently installed themes. To apply a theme "
+#~ "select it and click \"Ok\" or \"Apply\". Please note that the message "
+#~ "text colors are applied only to new messages in each window.<br>To "
+#~ "install a new theme, unpack it to:<br><b>"
+#~ msgstr ""
+#~ "Die Listen unten zeigt die aktuell installierten Themen an. Um ein Thema "
+#~ "anzuwenden, es auswählen und \"OK\" oder \"Anwenden\" klicken. Bitte "
+#~ "beachten, dass die Nachrichtentextfarben nur bei neuen Nachrichten in "
+#~ "jedem neuen Fenster angewendet werden.<br>Um ein Thema zu installieren, "
+#~ "es auspacken in:<br><b>"
+
+#~ msgid "Custom nickname:"
+#~ msgstr "Benutzerdefinierter Spitzname:"
+
+#, fuzzy
+#~ msgid "Normal user"
+#~ msgstr "Normaler Benutzer"
+
+#, fuzzy
+#~ msgid "Experienced user"
+#~ msgstr "Benutzer mit Voice-Status"
+
+#, fuzzy
+#~ msgid "Novice"
+#~ msgstr "Voice"
+
+#~ msgid "Alias"
+#~ msgstr "Alias"
+
+#, fuzzy
+#~ msgid "Rename"
+#~ msgstr "Wirklicher Name:"
+
+#, fuzzy
+#~ msgid "Edit the alias or namespace name"
+#~ msgstr "Aliasname bearbeiten"
+
+#, fuzzy
+#~ msgid "Add Alias"
+#~ msgstr "Alias"
+
+#, fuzzy
+#~ msgid "Export Selected..."
+#~ msgstr "Alle &exportieren nach..."
+
+#, fuzzy
+#~ msgid "Export All..."
+#~ msgstr "Alle &exportieren nach..."
+
+#, fuzzy
+#~ msgid "Find In Aliases..."
+#~ msgstr "Aliasse bearbeiten..."
+
+#, fuzzy
+#~ msgid "Alias Export"
+#~ msgstr "Aliaseditor"
+
+#~ msgid "Write Failed - KVIrc"
+#~ msgstr "Schreiben fehlgeschlagen - KVIrc"
+
+#~ msgid "Unable to write to the alias file."
+#~ msgstr "Aliasdatei kann nicht geschrieben werden."
+
+#, fuzzy
+#~ msgid "Do you really want to remove the alias \"%Q\" ?"
+#~ msgstr "Soll die Werkzeugleiste \"%1\" wirklich gelöscht werden?"
+
+#, fuzzy
+#~ msgid "Do you really want to remove the namespace \"%Q\" ?"
+#~ msgstr "Soll die Werkzeugleiste \"%1\" wirklich gelöscht werden?"
+
+#, fuzzy
+#~ msgid "Remove item"
+#~ msgstr "%Q löschen"
+
+#~ msgid "Yes"
+#~ msgstr "Ja"
+
+#, fuzzy
+#~ msgid "Yes to All"
+#~ msgstr "&Alles setzen"
+
+#~ msgid "No"
+#~ msgstr "Nein"
+
+#, fuzzy
+#~ msgid "Missing Alias Name"
+#~ msgstr "Aliasname fehlt"
+
+#, fuzzy
+#~ msgid "Missing Namespace Name"
+#~ msgstr "Fehlender Zeitgebername"
+
+#, fuzzy
+#~ msgid "Please enter the name for the new alias"
+#~ msgstr "Bitte die Eigenschaften für die neue Werkzeugleiste angeben"
+
+#, fuzzy
+#~ msgid "Please enter the name for the new namespace"
+#~ msgstr "Bitte die Eigenschaften für die neue Werkzeugleiste angeben"
+
+#, fuzzy
+#~ msgid "Rename Alias"
+#~ msgstr "Alias &löschen"
+
+#, fuzzy
+#~ msgid "Please enter the new name for the alias"
+#~ msgstr "Bitte das Symbol für die Werkzeugleiste auswählen"
+
+#, fuzzy
+#~ msgid "Namespace"
+#~ msgstr "Nachrichtentyp"
+
+#~ msgid "Alias Editor"
+#~ msgstr "Aliaseditor"
+
+#, fuzzy
+#~ msgid "The config file with id '%Q' is not open"
+#~ msgstr "Die Konfigurationsdatei mit ID '%s' ist nicht geöffnet"
+
+#~ msgid ""
+#~ "The config file '%s' has been changed but is opened as read-only: changes "
+#~ "will be lost"
+#~ msgstr ""
+#~ "Die Konfigurationsdatei '%s' wurde geändert, aber ist nur lesbar "
+#~ "geöffnet: Änderungen werden verloren sein"
+
+#, fuzzy
+#~ msgid "The config file with id '%Q' is read only"
+#~ msgstr "Die Konfigurationsdatei mit ID '%s' ist nur lesbar"
+
+#~ msgid "Request Links"
+#~ msgstr "Verknüpfungen anfordern"
+
+#~ msgid "Link"
+#~ msgstr "Verknüpfung"
+
+#~ msgid "Hops"
+#~ msgstr "Hops"
+
+#~ msgid "(None)"
+#~ msgstr "(Keine)"
+
+#~ msgid "Sent links request, waiting for reply..."
+#~ msgstr "Verknüpfungen-Anfrage gesendet, es wird auf Antwort gewartet..."
+
+#~ msgid "Cannot request links: No active connection"
+#~ msgstr ""
+#~ "Verknüpfungen können nicht angefordert werden: keine aktive Verbindung"
+
+#~ msgid "Connected to %s (%s)"
+#~ msgstr "Verbunden zu %s (%s)"
+
+#~ msgid "Links cannot be requested: Not connected to a server"
+#~ msgstr ""
+#~ "Verknüpfungen können nicht angefordert werden: Nicht mit einen Server "
+#~ "verbunden"
+
+#~ msgid "Links for %Q [IRC Context %u]"
+#~ msgstr "Links von %Q [IRC-Kontext %u]"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Links for %Q</b></font> <font color=\"%s\">"
+#~ "[IRC Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>Links von %Q</b></font> <font color=\"%s\">"
+#~ "[IRC Kontext %u]</font></nobr>"
+
+#~ msgid "Received end of links."
+#~ msgstr "Ende der Links empfangen."
+
+#~ msgid ""
+#~ "Broken link: Missing parent (%s) for %s (%d hops): %s (used /LINKS "
+#~ "<mask> ?)"
+#~ msgstr ""
+#~ "Fehlerhafte Verknüpfung: fehlendes Elternteil (%s) für %s (%d hops): %s "
+#~ "( /LINKS <Maske> benutzt?)"
+
+#~ msgid "%s: Parent link %s"
+#~ msgstr "%s: Elternverknüpfung %s"
+
+#~ msgid ""
+#~ "Warning: No root link was sent by the server, the stats may be invalid."
+#~ msgstr ""
+#~ "Warnung: Keine Wurzelverknüpfung wurde an Server gesendet: die "
+#~ "Statistiken sind möglicherweise ungültig."
+
+#~ msgid "%c%cLinks for %Q"
+#~ msgstr "%c%cLinks von %Q"
+
+#~ msgid "Total hosts listed"
+#~ msgstr "Hosts gesamt aufgelistet"
+
+#~ msgid "Total hosts in the network"
+#~ msgstr "Gesamte Hosts im Netzwerk"
+
+#~ msgid "Wildcard servers (hubs?): %d"
+#~ msgstr "Wildcard Server (Hubs?): %d"
+
+#~ msgid "Direct links: %d (~%d.%d %)"
+#~ msgstr "Direkte Verknüpfungen: %d (~%d.%d %)"
+
+#~ msgid "Close links (1 <= hops <= 3): %d (~%d.%d %)"
+#~ msgstr "Benachbarte Verknüpfungen (1 <= hops <= 3): %d (~%d.%d %)"
+
+#~ msgid "Mid-range links (4 <= hops <= 6): %d (~%d.%d %)"
+#~ msgstr "Mittlere entfernte Verknüpfungen (4 <= hops <= 6): %d (~%d.%d %)"
+
+#~ msgid "Distant links (7 <= hops): %d (~%d.%d %)"
+#~ msgstr "Weite Verknüpfungen (7 <= hops): %d (~%d.%d %)"
+
+#~ msgid "Broken (unknown) links: %d"
+#~ msgstr "Tote (unbekannte) Verknüpfungen: %d"
+
+#~ msgid "Maximum links per host: %d [%s]"
+#~ msgstr "Maximale Verknüpfungen pro Host: %d[%s]"
+
+#~ msgid "Total links: %d"
+#~ msgstr "Gesamte Verknüpfungen: %d"
+
+#~ msgid "Maximum hops: %d [%s]"
+#~ msgstr "Maximale Hops: %d [%s]"
+
+#~ msgid "Average hops: ~%d.%d"
+#~ msgstr "Durchschnittliche Hops: ~%d.%d"
+
+#~ msgid "(Unknown)"
+#~ msgstr "Unbekannt"
+
+#~ msgid "Incomplete LINKS result, no stats available"
+#~ msgstr "Kein komplettes LINKS-Ergebnis: keine Statistiken verfügbar"
+
+#~ msgid "You're not connected to a server"
+#~ msgstr "Sie sind nicht mit einen Server verbunden"
+
+#~ msgid "Reset"
+#~ msgstr "Zurücksetzen"
+
+#~ msgid "Processing link: %s"
+#~ msgstr "Verknüpfungsverfolgung läuft: %s"
+
+#~ msgid "Broken message syntax, can't extract hops number, assuming 0"
+#~ msgstr ""
+#~ "Fehlerhafte Nachrichtensyntax: die Hops-Anzahl kann nicht extrahiert "
+#~ "werden, 0 wird angenommen"
+
+#~ msgid "Links window alread open for this IRC context"
+#~ msgstr "Verknüpfungsfenster für diesen IRC-Kontext bereits geöffnet"
+
+#~ msgid "Current window is not a channel"
+#~ msgstr "Akuelles Fenster ist kein Kanal"
+
+#~ msgid "List window alread open for this IRC context"
+#~ msgstr "Listenfenster für diesen IRC-Kontext bereits geöffnet"
+
+#~ msgid "Request List"
+#~ msgstr "Liste anfordern"
+
+#~ msgid "Stop list download"
+#~ msgstr "Stopliste heruntergeladen"
+
+#~ msgid ""
+#~ "<center><b>/LIST command parameters:</b><br>Many servers accept special "
+#~ "parameters that allow you to filter the returned entries.<br>Commonly, "
+#~ "masked channel names (*kvirc*) are accepted as parameters, as well as "
+#~ "strings like <b>c&lt;n</b> or <b>c&gt;n</b> where <b>n</b> is the minimum "
+#~ "or maximum of users on the channel.</center>"
+#~ msgstr ""
+#~ "<center><b>/LIST-Kommandoparameter:</b><br>Viele Server akzeptieren "
+#~ "spezielle Parameter, die es erlauben, die zurückgegebenen Einträge zu "
+#~ "kontrollieren.<br>Meistens werden maskierte Kanalnamen als Parameter "
+#~ "akzeptiert z.B. Strings<br> wie <b>c&lt;n</b> oder <b>c&gt;n</b>, wobei "
+#~ "<b>n</b> das Minimum oder Maximum der Benutzer im Kanal ist.</center>"
+
+#~ msgid "Users"
+#~ msgstr "Benutzer"
+
+#~ msgid "Topic"
+#~ msgstr "Thema"
+
+#~ msgid "Sent list request, waiting for reply..."
+#~ msgstr "Listenanfrage gesendet: es wird auf Antwort gewartet..."
+
+#~ msgid "Cannot request list: No active connection"
+#~ msgstr "Liste kann nicht abgefragt werden: keine aktive Verbindung"
+
+#~ msgid "Stopping the list download..."
+#~ msgstr "Herunterladen der Liste wird abgebrochen"
+
+#~ msgid "Cannot stop list download, no active connection."
+#~ msgstr ""
+#~ "Herunterladen der Liste kann nicht abgebrochen werden: keine aktive "
+#~ "Verbindung"
+
+#~ msgid "List cannot be requested: Not connected to a server"
+#~ msgstr "Liste kann nicht abgefragt werden: Nicht mit einen Server verbunden"
+
+#~ msgid "Channel List [IRC Context %u]"
+#~ msgstr "Kanalliste [IRC-Kontext %u]"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Channel List</b></font> <font color=\"%s\">"
+#~ "[IRC Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b> Kanalliste</b></font> <font color=\"%s\">"
+#~ "[IRC-Kontext %u]</font> </nobr>"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Channel list</b></font> <font color=\"%s\">"
+#~ "[IRC Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>Kanalliste</b></font> <font color=\"%s\">[IRC-"
+#~ "Kontext %u]</font></nobr>"
+
+#~ msgid "Channels list download finished"
+#~ msgstr "Herunterladen der Kanalliste abgeschlossen"
+
+#~ msgid "Processing list: %Q"
+#~ msgstr "Prozeßliste: %Q"
+
+#~ msgid "Search keywords"
+#~ msgstr "Suchen"
+
+#~ msgid "Help Browser"
+#~ msgstr "Hilfebrowser"
+
+#~ msgid "No such channel/netmask entry in the database"
+#~ msgstr "Kein solcher Kanal-/Netzmaskeneintrag in der Datenbank"
+
+#~ msgid "Channel: %c%s@%s"
+#~ msgstr "Kanal: %c%s@%s"
+
+#~ msgid " Property: %s=%s"
+#~ msgstr " Eigenschaft: %s=%s"
+
+#~ msgid "Total %d channels"
+#~ msgstr "Gesamt %d Kanäle"
+
+#~ msgid "Show URL List"
+#~ msgstr "URL-Liste anzeigen"
+
+#~ msgid "Shows the URL list window"
+#~ msgstr "Zeigt die URL-Liste in einem Fenster an"
+
+#~ msgid "&Configure"
+#~ msgstr "&Konfigurieren"
+
+#~ msgid "&Help"
+#~ msgstr "&Hilfe"
+
+#~ msgid "Clo&se"
+#~ msgstr "Schlie&ssen"
+
+#~ msgid "&Module"
+#~ msgstr "&Module"
+
+#~ msgid "&Load"
+#~ msgstr "&Laden"
+
+#~ msgid "&Clear"
+#~ msgstr "&Löschen"
+
+#~ msgid "&List"
+#~ msgstr "&Auflisten"
+
+#~ msgid "URL"
+#~ msgstr "URL"
+
+#~ msgid "Window"
+#~ msgstr "Fenster"
+
+#~ msgid "Count"
+#~ msgstr "Anzahl"
+
+#~ msgid "Warning - KVIrc"
+#~ msgstr "Warnung - KVIrc"
+
+#~ msgid "Select an URL."
+#~ msgstr "URL auswählen"
+
+#~ msgid "&Remove"
+#~ msgstr "Ent&fernen"
+
+#~ msgid "&Find Text"
+#~ msgstr "&Text suchen"
+
+#~ msgid "&Say to Window"
+#~ msgstr "In Fenster &sagen"
+
+#~ msgid "Window not found."
+#~ msgstr "Fenster nicht gefunden"
+
+#~ msgid "URL Module Configuration"
+#~ msgstr "URL-Modul-Konfiguration"
+
+#~ msgid "Save URL list on module unload"
+#~ msgstr "URL-Liste beim Entladen des Moduls speichern"
+
+#~ msgid "Save columns width on URL list close"
+#~ msgstr "Spaltenbreite beim Schließen speichern"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Abbrechen"
+
+#~ msgid "Enable URL ban list"
+#~ msgstr "URL-Bannliste aktivieren"
+
+#~ msgid "&Add Ban"
+#~ msgstr "Bann &hinzufügen"
+
+#~ msgid "&Remove Selected"
+#~ msgstr "Ausgewählte &Löschen."
+
+#~ msgid "URL Ban List"
+#~ msgstr "URL-Bannliste"
+
+#~ msgid "Select a ban."
+#~ msgstr "Bann auswählen"
+
+#, fuzzy
+#~ msgid "Window with ID '%Q' not found"
+#~ msgstr "Fenster mit ID '%s' nicht gefunden"
+
+#, fuzzy
+#~ msgid "The specified window (%Q) is not a channel/query/DCC chat"
+#~ msgstr "Angegebenes Fenster (%s) ist kein(e) Kanal/Anfrage/DCC-Chat"
+
+#~ msgid "File not found or empty"
+#~ msgstr "Datei nicht gefunden oder leer"
+
+#~ msgid "I can't open that file"
+#~ msgstr "Die Datei kann nicht geöffnet werden"
+
+#~ msgid "Could not paste file"
+#~ msgstr "Datei konnte nicht eingefügt werden"
+
+#~ msgid "The specified window (%s) is not a channel/query/dcc"
+#~ msgstr "Das angegebene Fenster (%s) ist kein Kanal/Anfrage/DCC"
+
+#~ msgid "Slow-paste ID:%d Window:%s"
+#~ msgstr "Langsam-Einfügen-ID: %d Fenster: %s"
+
+#, fuzzy
+#~ msgid "Window %Q not found"
+#~ msgstr "Fenster %s nicht gefunden"
+
+#~ msgid "Missing window id after the 'w' switch"
+#~ msgstr "Fenster-ID nach dem 'w'-Schalter fehlt"
+
+#, fuzzy
+#~ msgid "Can't log to file %Q"
+#~ msgstr "Loggen in Datei %s fehlgeschlagen"
+
+#~ msgid "This window has no logging capabilities"
+#~ msgstr "Dieses Fenster hat keine Log-Fähigkeiten"
+
+#, fuzzy
+#~ msgid "Window with id '%Q' not found, returning empty string"
+#~ msgstr ""
+#~ "Fenster mit ID '%s' nicht gefunden, es wird leere Zeichenkette "
+#~ "zurückgeliefert"
+
+#~ msgid "< &Back"
+#~ msgstr "< &Zurück"
+
+#~ msgid "&Next >"
+#~ msgstr "&Nächster >"
+
+#~ msgid "Finish"
+#~ msgstr "Abschließen"
+
+#~ msgid ""
+#~ "<p><h2>Welcome :)</h2>This is your first time running this version of "
+#~ "KVIrc.<br>This wizard will guide you through the few steps required to "
+#~ "complete the setup.<br><br>If you had a previous version of KVIrc "
+#~ "installed, no worries. You will have a chance to preserve the old "
+#~ "configuration.</p><p>Click \"<b>Next</b>\" to proceed.</p>"
+#~ msgstr ""
+#~ "<p><h2>Willkommen :)</h2>Dies ist das erste Mal, dass KVIrc gestartet "
+#~ "wurde.<br>Dieser Assistent wird durch einige Schritte führen, um die "
+#~ "Einrichtung abzuschliessen.<br><br>Wenn eine ältere Versionen von KVIrc "
+#~ "installiert ist, nicht erschrecken: Die alte Konfiguration kann gesichert "
+#~ "werden.</p><p>Auf \"<b>Weiter</b>\" klicken, um fortzusetzen.</p>"
+
+#~ msgid "Welcome to KVIrc"
+#~ msgstr "Willkommen zu KVIrc"
+
+#~ msgid ""
+#~ "<p>All of the files in this distribution are covered by the GPL. In human "
+#~ "terms this can be read as follows:<br><ul><li><b>KVIrc is free</b>, use "
+#~ "it, have fun! <b>:)</b></li><li>If you use <b>any</b> part of KVIrc in "
+#~ "your own project, you <b>must</b> release that project under the same "
+#~ "license.</li></ul></p><p>The \"legalese\" version of the license is shown "
+#~ "in the box below.</p>"
+#~ msgstr ""
+#~ "<p>Alle diese Dateien in dieser Zusammenstellung werden unter der GPL-"
+#~ "Lizenz verbreitet. In menschlichen Worten kann dies als folgendes "
+#~ "aufgefasst werden:<br><ul><li><b>KVIrc ist frei</b>, benutzen Sie es und "
+#~ "haben Spass daran! <b>:)</b></li><li>Wenn <b>irgendeinen</b> Teil von "
+#~ "KVIrc in eigenen Projekten benutzt wird, <b>muss</b> dieses Projekt mit "
+#~ "der gleichen Lizenz veröffentlicht werden</li></ul></p><p>Die \"rechtliche"
+#~ "\" Version dieser Lizenz ist in dem unterem Kasten zu sehen.</p>"
+
+#~ msgid ""
+#~ "Oops... can't find the license file.\n"
+#~ "It MUST be included in the distribution...\n"
+#~ "Please report to <pragma at kvirc dot net>"
+#~ msgstr ""
+#~ "Ops... kann Lizenzdatei nicht finden...\n"
+#~ "Diese MUSS in der Distribution enthalten sein...\n"
+#~ "bitte an <pragma at kvirc dot net> melden"
+
+#~ msgid "Dreaded License Agreement"
+#~ msgstr "Gefürchtete Lizenzzustimmung"
+
+#~ msgid "KVIrc Setup"
+#~ msgstr "KVIrc-Einrichtung"
+
+#~ msgid ""
+#~ "Please choose a Nickname.<br><br>Your nickname is the name that other IRC "
+#~ "users will know you by. It can't contain spaces or punctuation. Some IRC "
+#~ "networks will shorten your nickname if it is more than 9 characters long."
+#~ "<br><br>If in doubt, just enter the first nick that comes to mind. You "
+#~ "will be able to change it later in the Identity properties, or with the /"
+#~ "NICK command."
+#~ msgstr ""
+#~ "Bitte einen Spitznamen auswählen.<br><br>Der Spitzname ist der Name, als "
+#~ "den man bei andere IRC-Benutzern im IRC zu sehen sieht. Er kann keine "
+#~ "Leerzeichen oder Punkte enthalten. Einige IRC-Netzwerke werden den "
+#~ "Spitznamen auf 9 Zeichen kürzen, wenn er länger ist.<br><br>Im "
+#~ "Zweifelsfall einfach einen Spitznamen eintragen, der einem gerade "
+#~ "einfällt. Man kann ihn später in den Identitätseigenschaften oder mit "
+#~ "den /NICK-Kommando ändern."
+
+#~ msgid "<b>Nickname:</b>"
+#~ msgstr "<b>Spitzname:</b>"
+
+#~ msgid ""
+#~ "<p>Please choose a folder for KVIrc to store its settings and other data, "
+#~ "and another for downloaded files. Make sure that you have permission to "
+#~ "write to both folders.<br><br>The suggested locations are fine in most "
+#~ "cases, so if you don't know what is this about, just click \"<b>Next</b>"
+#~ "\".<br><br>If you had a previous version of KVIrc installed, you can "
+#~ "choose the existing directory for the settings, and your configuration "
+#~ "will be preserved.</p>"
+#~ msgstr ""
+#~ "<p>Bitte einen Ordner auswählen, den KVIrc zum Speichern der "
+#~ "Konfiguration und heruntergeladenen Dateien benutzen wird. Bitte "
+#~ "sicherstellen, dass Schreibberechtigung fr beide Verzeichnisse besteht."
+#~ "<br><br>Die vorgeschlagenen Orte sind in den meisten Fällen sinnvoll, so "
+#~ "dass man nichts darüber wissen muss und einfach auf \"<b>Weiter</b>\" "
+#~ "klicken.<br><br>Wenn eine vorherige Version von KVIrc installiert ist, "
+#~ "kann das gleich Verzeichnis für die Einstellungen ausgewählt werden, die "
+#~ "Einstellungen werden gesichert.</p>"
+
+#~ msgid "Application Folders"
+#~ msgstr "Anwendungsordner"
+
+#~ msgid "<b>Store configuration in folder:</b>"
+#~ msgstr "<b>Konfiguration in Ordner speichern:</b>"
+
+#~ msgid "<b>Download files to folder:</b>"
+#~ msgstr "<b>Heruntergeladene Dateien in Ordner speichern:</b>"
+
+#~ msgid ""
+#~ "<p>Here you can choose the default appearance of KVIrc.<br><br>The Fancy "
+#~ "Theme uses icons, a transparent background and a lot of colors. The "
+#~ "Minimalist Theme is designed for low-color displays or for \"console\" "
+#~ "extremists; it's more or less white text on a black background.<br><br>If "
+#~ "you had a previous version of KVIrc installed, you can choose to not "
+#~ "apply any theme in order to preserve your current visual settings."
+#~ "<br><br>If you don't know what to choose, just use the default.</p>"
+#~ msgstr ""
+#~ "<p>Hier kann das standardmässige Aussehen von KVIrc ausgewählt werden."
+#~ "<br><br>Das Fancy-Thema benutzt Symbole, einen transparenten Hintergrund "
+#~ "und viele Farben. Das Minimalist-Thema ist für Monitore mit einer "
+#~ "niedrigen Anzahl an Farben und für \"Console\"-Extremisten gedacht. Es "
+#~ "ist mehr oder weniger weisser Text auf schwarzem Hintergrund.<br><br>Wenn "
+#~ "eine vorherige Version von KVIrc installiert ist, kann man auswählen, "
+#~ "dass man kein Thema anwenden möchte, um die aktuellen visuellen "
+#~ "Einstellungen zu behalten.<br><br>Wenn man keine Ahnung hat, was man "
+#~ "auswählen soll, einfach die Voreinstellung belassen.</p>"
+
+#~ msgid "&Fancy Theme"
+#~ msgstr "&Fancy-Thema"
+
+#~ msgid "&Minimalist Theme"
+#~ msgstr "&Minimalist-Thema"
+
+#~ msgid "&Don't apply any theme"
+#~ msgstr "&Kein Thema anwenden"
+
+#~ msgid "Default Theme"
+#~ msgstr "Standardthema"
+
+#~ msgid ""
+#~ "<p>Setup can make a shortcut to the KVIrc program on your desktop, so you "
+#~ "can access it quickly.</p><p>Do you want this shortcut to be created?</p>"
+#~ msgstr ""
+#~ "<p>Der Einrichtungsassistent kann eine Verknüpfung zur ausführbaren Datei "
+#~ "von KVIrc auf der Arbeitsfläche erstellen, so dass man KVIrc schnell "
+#~ "starten kann.</p><p>Soll eine Verknüpfung erstellt werden?</p>"
+
+#~ msgid "<p>If you're unsure just say \"Yes\"</p>"
+#~ msgstr "<p>Wenn man unsicher ist, einfach \"Ja\" sagen</p>"
+
+#~ msgid "&Yes"
+#~ msgstr "&Ja"
+
+#~ msgid "&No"
+#~ msgstr "&Nein"
+
+#~ msgid "Desktop Shortcut"
+#~ msgstr "Arbeitsflächenverknüpfung"
+
+#~ msgid ""
+#~ "<p>Setup can now set KVIrc as default application for the irc:// and "
+#~ "irc6:// urls.</p><p>Do you want these settings to be applied?</p>"
+#~ msgstr ""
+#~ "<p>Der Einrichtungsassistent kann KVirc als Standardanwendung für irc:// "
+#~ "und irc6://-URLs setzen.</p><p>Sollen diese Einstellungen gemacht werden?"
+#~ "</p>"
+
+#~ msgid "URL Handlers"
+#~ msgstr "URL-Handler"
+
+#~ msgid ""
+#~ "<p><h2>Setup Complete</h2>Setup now has all the necessary information to "
+#~ "configure KVIrc.</p><p>Please click the \"<b>Finish</b>\" button to save "
+#~ "your choices and start KVIrc.</p>"
+#~ msgstr ""
+#~ "<p><h2>Konfiguration komplett</h2>Der Einrichtungsassistent hat alle "
+#~ "Informationen erfolgreich erfasst.</p><p>Bitte auf \"<b>Abschliessen</b>"
+#~ "\" klicken, um die Auswahl zu speichern und KVIrc zu starten.</p>"
+
+#~ msgid "Finish Setup"
+#~ msgstr "Einrichtung abschliessen"
+
+#~ msgid "Choose a Configuration Folder - KVIrc Setup"
+#~ msgstr "Bitte Konfigurationsordner auswählen - KVIrc-Einrichtung"
+
+#~ msgid "Choose a Download Folder - KVIrc Setup"
+#~ msgstr "Bitte Herunterladenordner auswählen - KVIrc-Einrichtung"
+
+#~ msgid "Abort Setup - KVIrc Setup"
+#~ msgstr "Einrichtung abbrechen - KVIrc-Einrichtung"
+
+#~ msgid ""
+#~ "You have chosen to abort the setup.<br>KVIrc cannot run until you "
+#~ "complete this procedure.<br><br>Do you really wish to abort?"
+#~ msgstr ""
+#~ "Es wurde ausgewählt, dass der Einrichtungsassistent abgebrochen werden "
+#~ "soll.<br>KVIrc kann nicht laufen, wenn diese Prozedur nicht abgeschlossen "
+#~ "wurde.<br><br>Soll wirklich abgebrochen werden?"
+
+#~ msgid ""
+#~ "Cannot create directory %s.\n"
+#~ "You may not have write permission for that path. Please go back and "
+#~ "choose another directory."
+#~ msgstr ""
+#~ "Ops... Verzeichnis %s kann nicht erstellt werden.\n"
+#~ "Wahrscheinlich haben Sie keine Schreibberechtigung in diesem Pfad. Bitte "
+#~ "gehen Sie zurück und wählen ein anderes Verzeichnis aus."
+
+#, fuzzy
+#~ msgid "Can't add a null object"
+#~ msgstr "Kann kein nicht-Widgetobjekt hinzufügen"
+
+#, fuzzy
+#~ msgid "No string parameter given - using empty string"
+#~ msgstr "Fehlerhafter Textparameter: Leere Zeichenkette angenommen"
+
+#, fuzzy
+#~ msgid "Invalid insertion Policy"
+#~ msgstr "Ungültige Timer-ID"
+
+#~ msgid "Can't add a non-widget object"
+#~ msgstr "Kann kein nicht-Widgetobjekt hinzufügen"
+
+#, fuzzy
+#~ msgid "Not a widget object"
+#~ msgstr "Ist kein Widgetobjekt"
+
+#~ msgid "Can't find the tab "
+#~ msgstr "Tab kann nicht gefunden werden"
+
+#, fuzzy
+#~ msgid "Unknown position 'Q%'"
+#~ msgstr "Unbekannte Funktion"
+
+#~ msgid "Invalid timeout (%s)"
+#~ msgstr "Ungültiges Timeout (%s)"
+
+#~ msgid "Another connection in progress"
+#~ msgstr "Eine andere Verbindung ist im Aufbau"
+
+#~ msgid "Invalid port specified: the kernel will choose one"
+#~ msgstr "Ungültiger Port angegeben: Der Kernel wird einen auswählen"
+
+#~ msgid "No IPV6 support in this executable"
+#~ msgstr "Nein"
+
+#~ msgid "Invalid IP address specified (%s)"
+#~ msgstr "Ungültige IP-Adresse angegeben (%s)"
+
+#~ msgid "Socket creation failed"
+#~ msgstr "Socket konnte nicht erstellt warden"
+
+#~ msgid "Invalid socket address"
+#~ msgstr "Ungültige Socketadresse"
+
+#~ msgid "Bind failure"
+#~ msgstr "Binden fehlgeschlagen"
+
+#~ msgid "Listen failure"
+#~ msgstr "Hören fehlgeschlagen"
+
+#~ msgid "unknown"
+#~ msgstr "unbekannt"
+
+#~ msgid "No socket object specified"
+#~ msgstr "Nein"
+
+#~ msgid "Invalid socket object specified (it doesn't inherit from socket)"
+#~ msgstr "Ungültiges Socketobjekt angegeben (es ist nicht von socket vererbt)"
+
+#~ msgid "There is no connection to accept!"
+#~ msgstr "Verbindung!"
+
+#~ msgid "Invalid port (%s)"
+#~ msgstr "Ungültiger Port (%s)"
+
+#~ msgid "Invalid ip address (%s)"
+#~ msgstr "Ungültige IP-Adresse (%s)"
+
+#~ msgid "Failed to create the socket"
+#~ msgstr "Socketerstellung fehlgeschlagen"
+
+#~ msgid "Failed to setup a nonblocking socket"
+#~ msgstr "Einrichtung eines nichtblockierenden Sockets fehlgeschlagen"
+
+#~ msgid "Connect failure: %s"
+#~ msgstr "Verbindungsfehler: %s"
+
+#~ msgid "Connect attempt timed out"
+#~ msgstr "Verbunden"
+
+#~ msgid "Can't start the DNS thread"
+#~ msgstr "Der DNS-Thread konnte nicht gestartet werden"
+
+#~ msgid ""
+#~ "Too much unprocessed incoming data (you've left this socket unmanaged ?)"
+#~ msgstr ""
+#~ "Zuviel unverarbeitete ankommende Daten (Socketverwaltung abgebrochen?)"
+
+#, fuzzy
+#~ msgid "Can't add a non - popupmenu object"
+#~ msgstr "Kann kein nicht-Widgetobjekt hinzufügen"
+
+#, fuzzy
+#~ msgid "Unknown text position '%Q'"
+#~ msgstr "Unbekannte Funktion"
+
+#, fuzzy
+#~ msgid "Invalid selection mode '%Q' assuming single"
+#~ msgstr "Ungültige Richtung für diesen Algorithmus"
+
+#~ msgid "The parent of a layout must be a widget!"
+#~ msgstr "Das übergeordnete Element von einem Layout muss ein Widget sein!"
+
+#, fuzzy
+#~ msgid "Invalid resize mode defaulting to Auto"
+#~ msgstr "Ungültiger Größenänderungsmodus (%s): Auto wird benutzt"
+
+#~ msgid "Empty string"
+#~ msgstr "Leerer String"
+
+#~ msgid "Empty filename string"
+#~ msgstr "Leerer Dateinamen-String"
+
+#~ msgid "No such open mode: %s"
+#~ msgstr "Keine solche Öffnenmethode: %s"
+
+#~ msgid "File is not open !"
+#~ msgstr "Datei!"
+
+#~ msgid "Negative file index supplied !"
+#~ msgstr "Negativer Dateiindex geliefert!"
+
+#~ msgid "Argument to long, using only first char"
+#~ msgstr "Argument zu lang, benutze nur erstes Zeichen"
+
+#~ msgid "Argument length is 0 - empty string"
+#~ msgstr "Argumentlänge is 0 - leerer String"
+
+#~ msgid "Write error occured !"
+#~ msgstr "Schreibfehler aufgetreten!"
+
+#~ msgid "Read error occured !"
+#~ msgstr "Lesefehler aufgetreten!"
+
+#~ msgid "An error occured !"
+#~ msgstr "Ein Fehler ist aufgetreten!"
+
+#~ msgid "Length is a negative number !"
+#~ msgstr "Die Länge ist eine negative Zahl!"
+
+#~ msgid "Nothing to write"
+#~ msgstr "Nichts zum Schreiben"
+
+#, fuzzy
+#~ msgid "No such open mode: '%Q'"
+#~ msgstr "Keine solche Öffnenmethode: %s"
+
+#, fuzzy
+#~ msgid "File is not open!"
+#~ msgstr "Datei!"
+
+#, fuzzy
+#~ msgid "One of the geometry array parameters didn't evaluate to an integer"
+#~ msgstr "Der Aktionparameter kann nicht zu einem Index ausgewertet werden"
+
+#, fuzzy
+#~ msgid "The first parameter didn't evaluate to an array nor an integer"
+#~ msgstr "Der Aktionparameter kann nicht zu einem Index ausgewertet werden"
+
+#, fuzzy
+#~ msgid "One of the array parameters didn't evaluate to an integer"
+#~ msgstr "Der Aktionparameter kann nicht zu einem Index ausgewertet werden"
+
+#, fuzzy
+#~ msgid "Unknown orientation"
+#~ msgstr "Unbekannte Funktion"
+
+#, fuzzy
+#~ msgid "Widget or Pixmap required "
+#~ msgstr "Widget oder Pixmap erforderlich (%s)"
+
+#, fuzzy
+#~ msgid "Invalid mode '%Q'"
+#~ msgstr "Ungültiges Bild"
+
+#~ msgid "Pixmap object required"
+#~ msgstr "Pixmapobjekt erforderlich"
+
+#, fuzzy
+#~ msgid "Unknown mode "
+#~ msgstr "Unbekannt"
+
+#, fuzzy
+#~ msgid "Unknown segment style "
+#~ msgstr "Unbekannte Widgettyp: %s"
+
+#, fuzzy
+#~ msgid "Failed to find the widget to wrap"
+#~ msgstr "Widget (%s) kann nicht gefunden werden"
+
+#~ msgid "Non-negative integer length expected as parameter"
+#~ msgstr "Nichtnegative Ganzzahllänge als Parameter erwartet"
+
+#~ msgid "Non-negative integer index expected as first parameter"
+#~ msgstr "Nichtnegativer Ganzzahlindex als ersten Parameter erwartet"
+
+#~ msgid "Non-negative integer length expected as second parameter"
+#~ msgstr "Nichtnegativer Ganzzahllänge als zweiten Parameter erwartet"
+
+#~ msgid "Widget object required"
+#~ msgstr "Widgetobjekt erforderlich"
+
+#~ msgid "Can't find the widget object to add (%s)"
+#~ msgstr "Widgetobjekt kann nicht zum Hinzufügen gefunden werden (%s)"
+
+#~ msgid "Invalid object"
+#~ msgstr "Ungültiges Objekt"
+
+#~ msgid "Can't fill non-widget object"
+#~ msgstr "Nicht-Widgetobjekt kann nicht gefüllt werden"
+
+#~ msgid "Invalid x offset parameter (%s)"
+#~ msgstr "Ungültiger x-Offsetparameter (%s)"
+
+#~ msgid "Invalid y offset parameter (%s)"
+#~ msgstr "Ungültiger y-Offsetparameter (%s)"
+
+#, fuzzy
+#~ msgid "Can't find the specified file '%s'."
+#~ msgstr " angegebene Datei kann nicht gefunden werden."
+
+#, fuzzy
+#~ msgid "I can't find the specified file %Q."
+#~ msgstr " angegebene Datei kann nicht gefunden werden."
+
+#, fuzzy
+#~ msgid "No such line number"
+#~ msgstr "Kein solcher Timer (%s)"
+
+#, fuzzy
+#~ msgid "Unknown word wrap '%Q'"
+#~ msgstr "Unbekannte Bindenoperation '%Q'"
+
+#, fuzzy
+#~ msgid "One of the colors array parameters didn't evaluate to an integer"
+#~ msgstr "Der Aktionparameter kann nicht zu einem Index ausgewertet werden"
+
+#, fuzzy
+#~ msgid "Unknown text format '%Q'"
+#~ msgstr "Unbekannte Funktion"
+
+#, fuzzy
+#~ msgid " I can't find the specified file '%Q'."
+#~ msgstr " angegebene Datei kann nicht gefunden werden."
+
+#, fuzzy
+#~ msgid " I cannot read the file %Q'."
+#~ msgstr " die Datei kann nicht gelesen werden"
+
+#, fuzzy
+#~ msgid "Unknown alignment '%Q'"
+#~ msgstr "Unbekannte Ausrichtung: %s"
+
+#, fuzzy
+#~ msgid "Unknown auto formatting mode '%Q'"
+#~ msgstr "Unbekannte Bindenoperation '%Q'"
+
+#, fuzzy
+#~ msgid "Unknown vertical alignment '%Q'"
+#~ msgstr "Unbekannte Ausrichtung: %s"
+
+#, fuzzy
+#~ msgid "Unknown dock area '%Q'"
+#~ msgstr "Unbekannter Operator"
+
+#, fuzzy
+#~ msgid "Class is undefined"
+#~ msgstr "Klasse %s ist nicht definiert"
+
+#, fuzzy
+#~ msgid "Widget or Pixmap required"
+#~ msgstr "Widget oder Pixmap erforderlich (%s)"
+
+#, fuzzy
+#~ msgid "Processing aborted"
+#~ msgstr "Prozeßliste: %Q"
+
+#, fuzzy
+#~ msgid "XML support not available in the Qt library"
+#~ msgstr "Lagmessung nicht verfügbar"
+
+#~ msgid "Invalid width parameter"
+#~ msgstr "Ungültiger Parameter für Breite"
+
+#~ msgid "Invalid height parameter"
+#~ msgstr "Ungültiger Parameter für Höhe"
+
+#~ msgid "The parameters do not define a rectangle"
+#~ msgstr "Die Parameter definieren kein Rechteck"
+
+#~ msgid "The parameters do not define a point"
+#~ msgstr "Die Parameter definieren keinen Punkt"
+
+#~ msgid "The parameters are do not define a valid size"
+#~ msgstr "Die Parameter definieren keine gültige Größe"
+
+#~ msgid "Invalid size parameter (%s)"
+#~ msgstr "Ungültiger Größenparameter (%s)"
+
+#~ msgid "Unknown widget type: %s"
+#~ msgstr "Unbekannte Widgettyp: %s"
+
+#, fuzzy
+#~ msgid "Can't find the widget object assuming 0"
+#~ msgstr "Widgetobjekt kann nicht werden (%s)"
+
+#, fuzzy
+#~ msgid "Parent must be a widget object"
+#~ msgstr "Nicht-Widgetobjekt kann nicht gesetzt werden"
+
+#~ msgid "Invalid parameters"
+#~ msgstr "Ungültige Parameter"
+
+#~ msgid "Invalid Parameters"
+#~ msgstr "Ungültige Parameter"
+
+#~ msgid "No Layout associated to the widget "
+#~ msgstr "Kein Layout ist dem Widget zugeordnet"
+
+#~ msgid "Invalid row parameter (%s)"
+#~ msgstr "Ungültiger Zeilenparameter (%s)"
+
+#~ msgid "Invalid column parameter (%s)"
+#~ msgstr "Ungültiger Spaltenparameter (%s)"
+
+#, fuzzy
+#~ msgid "Unknown widget flag '%Q'"
+#~ msgstr "Unbekannte Widgettyp: %s"
+
+#, fuzzy
+#~ msgid "Unknown style '%Q'"
+#~ msgstr "Unbekannter Rahmen-/Schattenstil: %s"
+
+#, fuzzy
+#~ msgid "Unknown alignment: '%Q'"
+#~ msgstr "Unbekannte Ausrichtung: %s"
+
+#, fuzzy
+#~ msgid "Unknown frame style"
+#~ msgstr "Unbekannter Rahmen-/Schattenstil: %s"
+
+#, fuzzy
+#~ msgid "Unknown echo mode %Q"
+#~ msgstr "Unbekannt"
+
+#~ msgid "the toolbar cannot be a parent-widget!"
+#~ msgstr "die Werkzeugleiste kann kein Elternwidget sein!"
+
+#~ msgid "The parent-widget isn't a MainWindow."
+#~ msgstr "Das aktuelle Elternwidget ist kein MainWindow"
+
+#, fuzzy
+#~ msgid "pix '%Q' doesn't exists"
+#~ msgstr "Das Aktion '%s' existiert nicht"
+
+#~ msgid "Doesn't a widget object"
+#~ msgstr "Ist kein Widgetobjekt"
+
+#~ msgid "Process could not be starded."
+#~ msgstr "Prozess konnte nicht gestartet werden."
+
+#, fuzzy
+#~ msgid "Unknown alignment"
+#~ msgstr "Unbekannte Ausrichtung: %s"
+
+#, fuzzy
+#~ msgid "Unknown orientation: "
+#~ msgstr "Unbekannte Funktion"
+
+#, fuzzy
+#~ msgid "Not Enough Parameters"
+#~ msgstr "Nicht genug Parameter"
+
+#, fuzzy
+#~ msgid "Unknown tickmark '%Q'"
+#~ msgstr "Unbekanntes Kommando"
+
+#, fuzzy
+#~ msgid "Unknown orientation '%Q'"
+#~ msgstr "Unbekannte Funktion"
+
+#, fuzzy
+#~ msgid "Context sensitive help"
+#~ msgstr "G&ross-/Kleinschreibung beachten"
+
+#, fuzzy
+#~ msgid "&Replace"
+#~ msgstr "Antworten"
+
+#, fuzzy
+#~ msgid "Find & Repalce"
+#~ msgstr "Antworten"
+
+#~ msgid "Find"
+#~ msgstr "Suchen"
+
+#, fuzzy
+#~ msgid "Replace with"
+#~ msgstr "Antworten"
+
+#, fuzzy
+#~ msgid "&Findnext"
+#~ msgstr "&Nächsten finden"
+
+#, fuzzy
+#~ msgid "&Replace(WIP)"
+#~ msgstr "Antworten"
+
+#~ msgid "orphan_servers"
+#~ msgstr "orphan_server"
+
+#~ msgid ""
+#~ "%s doesn't look like a servers.ini file.\n"
+#~ "Import failed."
+#~ msgstr ""
+#~ "%s sieht nicht wie eine servers.ini-Datei aus.\n"
+#~ "Import fehlgeschlagen"
+
+#~ msgid "Choose a servers.ini file"
+#~ msgstr "Servers.ini-Datei auswählen"
+
+#~ msgid "Remote mIRC servers.ini Import Wizard"
+#~ msgstr "Entfernte mIRC servers.ini Importassistent"
+
+#~ msgid ""
+#~ "<center><b>Welcome!</b><br><br>This wizard will guide you in the process "
+#~ "of downloading a list of IRC servers. Please click \"<b>Next</b>\" to "
+#~ "begin the operation.</center>"
+#~ msgstr ""
+#~ "<center><b>Willkommen!</b><br><br>Dieser Assistent wird Sie durch den "
+#~ "Prozess des Herunterladens von einer Liste mit IRC-Servern führen. Bitte "
+#~ "klicken Sie \"<b>Weiter</b>\", um die Operation zu beginnen.</center>"
+
+#~ msgid ""
+#~ "<center>Here you can modify the URL that the list will be downloaded "
+#~ "from. In most cases the default URL is acceptable.</center>"
+#~ msgstr ""
+#~ "<center>Hier können Sie die URL verändern, von der die Liste "
+#~ "heruntergeladen wird. In den meisten Fällen ist die voreingestellte URL "
+#~ "in Ordnung.</center>"
+
+#~ msgid "URL Selection"
+#~ msgstr "URL-Auswahl"
+
+#~ msgid "Please wait while the list is being downloaded"
+#~ msgstr "Bitte warten, während die Liste heruntergeladen wird"
+
+#~ msgid "List Download"
+#~ msgstr "Herunterladen der Liste"
+
+#~ msgid "Failed to start the server list transfer :("
+#~ msgstr "Start der Listenübertragung fehlgeschlagen :("
+
+#~ msgid "File downloaded: processing ..."
+#~ msgstr "Datei heruntergeladen: wird verarbeitet ..."
+
+#~ msgid "%1 servers imported succesfully"
+#~ msgstr "%1 Server erfolgreich importiert"
+
+#~ msgid "No servers imported"
+#~ msgstr "Keine Server importiert"
+
+#~ msgid "Import from servers.ini"
+#~ msgstr "Von servers.ini importieren"
+
+#~ msgid "Import from http://www.mirc.co.uk/servers.ini"
+#~ msgstr "Von http://www.mirc.co.uk/servers.ini importieren"
+
+#~ msgid "Internal error: I'm not in the user database ?"
+#~ msgstr "Interner Fehler: Ich bin nicht in der Datenbank?"
+
+#, fuzzy
+#~ msgid ""
+#~ "Can't set the current avatar to '%Q': failed to start the http transfer"
+#~ msgstr ""
+#~ "Aktueller Avatar kann nicht auf '%s' gesetzt werden Start von HTTP-"
+#~ "Übertragung fehlgeschlagen"
+
+#, fuzzy
+#~ msgid "Can't set the current avatar to '%Q': can't load the image"
+#~ msgstr ""
+#~ "Aktueller Avatar kann nicht auf '%s' gesetzt werden: Bild kann nicht "
+#~ "geladen werden"
+
+#~ msgid "Invalid timeout specified, using default"
+#~ msgstr "Ungültiger Zeitablauf angegeben, Standard wird benutzt"
+
+#, fuzzy
+#~ msgid "Can't add a file offer for file %Q (huh ? file not readable ?)"
+#~ msgstr ""
+#~ "Datei %s kann nicht zu Dateiangebot hinzugefügt werden (Datei nicht "
+#~ "lesbar?)"
+
+#, fuzzy
+#~ msgid "Added %d secs file offer for file %Q (%Q) and receiver %Q"
+#~ msgstr ""
+#~ "%d Sekunden für Dateiangebot für Datei %s (%s) und Empfänger %s "
+#~ "hinzugefügt"
+
+#, fuzzy
+#~ msgid "Notifying avatar '%Q' to %Q"
+#~ msgstr "Benachrichtige Avatar '%s' nach %s"
+
+#, fuzzy
+#~ msgid "Unknown "
+#~ msgstr "Unbekannt"
+
+#~ msgid "Invalid DCOP parameter syntax"
+#~ msgstr "Ungültige DCOP Parametersyntax"
+
+#~ msgid "The specified parameter is not an integer"
+#~ msgstr "Der angegebene Parameter ist keine vorzeichenlose Zahl"
+
+#~ msgid "Unsupported DCOP parameter type %s"
+#~ msgstr "Nicht unterstützter DCOP-Parametertyp %s"
+
+#~ msgid "DCOP call failed"
+#~ msgstr "DCOP-Aufruf fehlgeschlagen"
+
+#~ msgid "DCOP calls are available only when KDE support is compiled in"
+#~ msgstr ""
+#~ "DCOP-Aufrufe sind nur verfügbar, wenn KDE-Unterstützung einkompiliert ist"
+
+#~ msgid "Item"
+#~ msgstr "Element"
+
+#~ msgid "Submenu"
+#~ msgstr "Untermenü"
+
+#~ msgid "External Menu"
+#~ msgstr "Externes Menü"
+
+#~ msgid "Separator"
+#~ msgstr "Trenner"
+
+#~ msgid "Label"
+#~ msgstr "Beschriftung"
+
+#~ msgid "### Epilogue ###"
+#~ msgstr "### Epilog ###"
+
+#~ msgid "Epilogue"
+#~ msgstr "Epilog"
+
+#~ msgid "### Prologue ###"
+#~ msgstr "### Prolog ###"
+
+#~ msgid "Popup name"
+#~ msgstr "Name des Aufklappmenüs"
+
+#~ msgid "Type"
+#~ msgstr "Typ"
+
+#~ msgid "Text:"
+#~ msgstr "Text:"
+
+#~ msgid ""
+#~ "<center><b>Visible text</b><br>May contain identifiers that will be "
+#~ "evaluated at popup call time.<br>For labels, this text can contain also "
+#~ "limited HTML tags.</center>"
+#~ msgstr ""
+#~ "<center><b>Sichtbarer Text</b><br>Enthält möglicherweise Bezeichner, die "
+#~ "zur Aufrufzeit des Aufklappmenüs ausgewertet werden.<br>Bei Labels kann "
+#~ "dieser Text auch begrenzt HTML-Tags enthalten.</center>"
+
+#~ msgid "Condition:"
+#~ msgstr "Bedingung:"
+
+#~ msgid ""
+#~ "<center><b>Boolean condition</b><br>Will be evaluated at popup call time "
+#~ "in order to decide if this entry has to be shown.<br>An empty condition "
+#~ "evaluates to true.</center>"
+#~ msgstr ""
+#~ "<center><b>Boolsche Bedingung</b><br>Wird zur Aufrufzeit des "
+#~ "Aufklappmenüs in der Reihenfolge ausgewertet, wie es angezeigt "
+#~ "wurde<br>Eine leere Bedingung wird als wahr ausgewertet.</center>"
+
+#~ msgid "Icon:"
+#~ msgstr "Symbol:"
+
+#~ msgid ""
+#~ "<center><b>Icon identifier</b><br>May be an internal icon ID, an absolute "
+#~ "path or a relative path.<br>Portable scripts should never use absolute "
+#~ "paths.</center>"
+#~ msgstr ""
+#~ "<center><b> Symbolbezeichner</b>Kann eine interne Symbol-ID, ein "
+#~ "absoluter Pfad oder ein relativer Pfad sein.<br>Portable Skripte benutzen "
+#~ "keine absoluten Pfade.<br></center>"
+
+#~ msgid "External menu:"
+#~ msgstr "externes Menü"
+
+#~ msgid ""
+#~ "<center><b>External menu name</b><br>This allows to nest externally "
+#~ "defined popup menus. The popup menu with the specified name will be "
+#~ "looked up at menu setup time.</center>"
+#~ msgstr ""
+#~ "<center><b>Name des externen Menüs</b><br>Dies erlaubt das Einbetten "
+#~ "externer definierter Aufklappmenüs. Das Aufklappmenü mit dem angegebenen "
+#~ "Namen wird zum Zeitpunkt der Menüeinrichtung aufgelöst.</center>"
+
+#~ msgid "Item Id:"
+#~ msgstr "Element-ID:"
+
+#~ msgid ""
+#~ "<center><b>Item id</b><br>This will allow you to use delpopupitem later.</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center><b>Element ID</b><br>Dies wird die Benutzung von delpopupitem "
+#~ "später ermöglichen.</center>"
+
+#~ msgid "New Separator Below"
+#~ msgstr "Neuer Trenner darunter"
+
+#~ msgid "New Separator Above"
+#~ msgstr "Neuer Trenner darüber"
+
+#~ msgid "New Separator Inside"
+#~ msgstr "Neuer Trenner dazwischen"
+
+#~ msgid "New Label Below"
+#~ msgstr "Neues Label darunter"
+
+#~ msgid "New Label Above"
+#~ msgstr "Neues Label darüber"
+
+#~ msgid "New Label Inside"
+#~ msgstr "Neues Label dazwischen"
+
+#~ msgid "New Item Below"
+#~ msgstr "Neues Element darunter"
+
+#~ msgid "New Item Above"
+#~ msgstr "Neues Element darüber"
+
+#~ msgid "New Item Inside"
+#~ msgstr "Neues Element dazwischen"
+
+#~ msgid "New Menu Below"
+#~ msgstr "Neues Menü darunter"
+
+#~ msgid "New Menu Above"
+#~ msgstr "Neues Menü darüber"
+
+#~ msgid "New Menu Inside"
+#~ msgstr "Neues Menü dazwischen"
+
+#~ msgid "New External Menu Below"
+#~ msgstr "Neues externes Menü darunter"
+
+#~ msgid "New External Menu Above"
+#~ msgstr "Neues externes Menü darüber"
+
+#~ msgid "New External Menu Inside"
+#~ msgstr "Neues externes Menü dazwischen"
+
+#~ msgid "Cu&t"
+#~ msgstr "Au&sschneiden"
+
+#~ msgid "&Copy"
+#~ msgstr "&Kopieren"
+
+#~ msgid "&Paste Below"
+#~ msgstr "Darunter &einfügen"
+
+#~ msgid "Paste Above"
+#~ msgstr "Darüber einfügen"
+
+#~ msgid "Paste Inside"
+#~ msgstr "Dazwischen einfügen"
+
+#~ msgid "New Menu Prologue"
+#~ msgstr "Neues Prolog-Menü"
+
+#~ msgid "New Menu Epilogue"
+#~ msgstr "Neues Epilog-Menü"
+
+#~ msgid "&Export All To..."
+#~ msgstr "Alle &exportieren nach..."
+
+#, fuzzy
+#~ msgid "&Export selected To..."
+#~ msgstr "Alle &exportieren nach..."
+
+#~ msgid "&New Popup"
+#~ msgstr "&Neues Aufklappfenster"
+
+#~ msgid "Re&move Popup"
+#~ msgstr "Aufklappfenster &löschen"
+
+#~ msgid "&Export Popup To..."
+#~ msgstr "Aufklappfenster &exportieren nach..."
+
+#~ msgid "Unable to write to the popup file."
+#~ msgstr "Popupdatei konnte nicht geschrieben werden."
+
+#~ msgid "Popup Editor"
+#~ msgstr "Aufklappmenüeditor"
+
+#~ msgid "Missing both encrypt and decrypt key: at least one is needed"
+#~ msgstr "Schlüssel"
+
+#~ msgid "Error 0: Success ?"
+#~ msgstr "Fehler 0: Erfolg?"
+
+#~ msgid "Unsupported crypt mode"
+#~ msgstr "Nicht unterstützter Verschlüsselungsmodus"
+
+#~ msgid "Unsupported direction"
+#~ msgstr "Nicht unterstützte Richtung"
+
+#~ msgid "Unsupported key length"
+#~ msgstr "Schlüssel"
+
+#~ msgid "Bad key data"
+#~ msgstr "Schlüssel"
+
+#~ msgid "Engine not initialized"
+#~ msgstr "Routine nicht initalisiert"
+
+#~ msgid "Invalid direction for this engine"
+#~ msgstr "Ungültige Richtung für diesen Algorithmus"
+
+#~ msgid "Corrupted message data or invalid decrypt key"
+#~ msgstr ""
+#~ "Fehlerhafte Nachrichtendaten oder ungültiger Enschlüsselungsschlüssel"
+
+#~ msgid "Unknown error"
+#~ msgstr "Unbekannter Fehler"
+
+#~ msgid "Ops...encrypt cipher not initialized"
+#~ msgstr "Ops... Verschlüsselungschiffre nicht initalisiert"
+
+#~ msgid "Data buffer too long"
+#~ msgstr "Datenpuffer zu lang"
+
+#~ msgid "Ops...decrypt cipher not initialized"
+#~ msgstr "Ops... Entschlüsselungschiffre nicht initalisiert"
+
+#~ msgid "The message is not a hexadecimal string: this is not my stuff"
+#~ msgstr "hexadezimal"
+
+#~ msgid "The message is not a base64 string: this is not my stuff"
+#~ msgstr "base64"
+
+#~ msgid "The message doesn't seem to be encoded with CBC Mircryption"
+#~ msgstr ""
+#~ "Die Nachricht scheint nicht mit CBC-Mirccryption verschlüsselt zu sein"
+
+#~ msgid ""
+#~ "Cryptographic engine based on the\n"
+#~ "Advanced Encryption Standard (AES)\n"
+#~ "algorithm called Rijndael.\n"
+#~ "The text is first encrypted with rijndael\n"
+#~ "and then converted to %s notation.\n"
+#~ "The keys used are %d bit long and will be padded\n"
+#~ "with zeros if you provide shorter ones.\n"
+#~ "If only one key is provided, this engine\n"
+#~ "will use it for both encrypting and decrypting.\n"
+#~ "See the rijndael module documentation\n"
+#~ "for more info on the algorithm used.\n"
+#~ msgstr ""
+#~ "Kryptographische Maschine, basierend auf dem\n"
+#~ "Erweiterten Verschlüsselungsalgorithmus (AES),\n"
+#~ "Rijndael genannt.\n"
+#~ "Dieser Text ist zuerst mit rijndael verschlüsselt\n"
+#~ "und danach zur %s-Notierung umgewandelt worden.\n"
+#~ "Die benutzten Schlüssel sind %d Bits lang und werden mit Nullen "
+#~ "aufgefüllt\n"
+#~ "sein, falls Sie kleinere bevorzugen.\n"
+#~ "Falls nur ein Schlüssel bevorzugt wird, wird diese Maschine\n"
+#~ "es für beides (Verschlüsseln und Entschlüsseln) benutzen.\n"
+#~ "Lesen Sie die rijndael-Modul-Dokumentation,\n"
+#~ "um mehr Informationen zum benutzten Algorithmus zu erfahren.\n"
+
+#~ msgid "hexadecimal"
+#~ msgstr "hexadezimal"
+
+#~ msgid "base64"
+#~ msgstr "base64"
+
+#~ msgid ""
+#~ "Popular cryptographic engine based on the\n"
+#~ "old Blowfish encryption algorithm.\n"
+#~ "The text is first encrypted with Blowfish \n"
+#~ "and then converted to base64 notation.\n"
+#~ "The keys used have variable length and\n"
+#~ "are specified as character strings.\n"
+#~ "You can specify keys long up to 56 bytes (448 bits).\n"
+#~ "If only one key is provided, this engine\n"
+#~ "will use it for both encrypting and decrypting.\n"
+#~ "This engine works in ECB mode by default:\n"
+#~ "if you want to use CBC mode you must prefix\n"
+#~ "your key(s) with \"cbc:\".\n"
+#~ msgstr ""
+#~ "Die popuräre kryptographische Routine, basierend auf dem\n"
+#~ "alten Blowfish Verschlüsselungsalgorithmus (AES).\n"
+#~ "Dieser Text ist zuerst mit Blowfish verschlüsselt\n"
+#~ "und danach zur base64-Notierung umgewandelt worden.\n"
+#~ "Die benutzten Schlüssel haben eine variable Länge und sind als "
+#~ "Zeichenketten definiert.\n"
+#~ "Es können Schlüssel bis zu einer Länge von 56 Byte (448 Bit) angegeben "
+#~ "werden.\n"
+#~ "Falls nur ein Schlüssel angegeben wird, wird diese Routine\n"
+#~ "ihn für beides (Verschlüsseln und Entschlüsseln) benutzen.\n"
+#~ "Diese Routine arbeitet standardmäßig im ECB-Modus:\n"
+#~ "wenn der CBC-Modus benutzt werden soll, muss als Präfix\n"
+#~ "der Schlüssel \"cbc:\" angegeben werden.\n"
+
+#~ msgid "Choose the file to share"
+#~ msgstr "Datei für Angebot auswählen"
+
+#~ msgid "Outgoing traffic"
+#~ msgstr "Auskommender Netzverkehr"
+
+#~ msgid "Incoming traffic"
+#~ msgstr "Ankommender Netzverkehr"
+
+#~ msgid "[IDENT]: Service shutdown (spontaneous)"
+#~ msgstr "[IDENT]: Dienst fährt herunter (spontan)"
+
+#~ msgid "[IDENT]: Service shutdown (on request)"
+#~ msgstr "[IDENT]: Dienst fährt herunter (auf Anfrage)"
+
+#~ msgid "The current window is not a channel"
+#~ msgstr "Das aktuelle Fenster ist kein Kanal"
+
+#, fuzzy
+#~ msgid "Can't find the window with id '%Q'"
+#~ msgstr "Kann das Fenster mit IS '%s' nicht finden"
+
+#, fuzzy
+#~ msgid "The specified window (%Q) is not a channel"
+#~ msgstr "Das angegebene Fenter (%s) ist kein Kanal"
+
+#~ msgid "The specified toolbar doesn't exist"
+#~ msgstr "Die angegebene Werkzeugleiste existiert nicht"
+
+#, fuzzy
+#~ msgid "No action name/index specified"
+#~ msgstr "Nein"
+
+#~ msgid "The action parameter didn't evaluate to an index"
+#~ msgstr "Der Aktionparameter kann nicht zu einem Index ausgewertet werden"
+
+#~ msgid "The toolbar does not contain the specified item"
+#~ msgstr "Die Werkzeugleiste enthält nicht das angegebene Element"
+
+#, fuzzy
+#~ msgid "The action \"%Q\" doesn't exist"
+#~ msgstr "Das Aktion '%s' existiert nicht"
+
+#~ msgid "KVIrc"
+#~ msgstr "KVIrc"
+
+#~ msgid "Context"
+#~ msgstr "Kontext"
+
+#~ msgid "&Configure KVIrc..."
+#~ msgstr "KVIrc &konfigurieren..."
+
+#~ msgid "&About KVIrc"
+#~ msgstr "&Über KVIrc"
+
+#~ msgid "Un&dock"
+#~ msgstr "Los&lösen"
+
+#~ msgid "&Quit"
+#~ msgstr "&Beenden"
+
+#~ msgid "Ctrl+Q"
+#~ msgstr "Strg+Q"
+
+#~ msgid "Nothing is happening..."
+#~ msgstr "Nichts ist passiert..."
+
+#~ msgid "Just idling..."
+#~ msgstr "Nur ideln..."
+
+#~ msgid "Dum de dum de dum..."
+#~ msgstr "Dum de dum de dum..."
+
+#~ msgid "Hey man... do something!"
+#~ msgstr "Hey Du .. tu was!"
+
+#~ msgid "Umpf!"
+#~ msgstr "Umpf!"
+
+#~ msgid "Silence speaking"
+#~ msgstr "Stille"
+
+#~ msgid "Are ya here?"
+#~ msgstr "Bist Du hier?"
+
+#~ msgid "The world has stopped?"
+#~ msgstr "Die Welt hat aufgehört sich zu drehen?"
+
+#~ msgid "Everything is all right"
+#~ msgstr "Alles ist gut"
+
+#~ msgid "idle()"
+#~ msgstr "idle()"
+
+#~ msgid "It's so cold here..."
+#~ msgstr "Es ist so kalt hier..."
+
+#~ msgid "Do not disturb... watching TV"
+#~ msgstr "Bitte nicht stören... sehe fern"
+
+#~ msgid "Just vegetating"
+#~ msgstr "Nur vegetieren"
+
+#~ msgid "Hey... are ya sure that your network is up?"
+#~ msgstr "Hey... bist Du sicher, dass dein Netzwerk ok ist?"
+
+#~ msgid "Seems like the world has stopped spinning"
+#~ msgstr "Es sieht aus, als wenn die Erde aufgehört hat sich zu drehen"
+
+#~ msgid "This silence is freaking me out!"
+#~ msgstr "Die Stille fordert mich heraus"
+
+#~ msgid "Mieeeeeowww!"
+#~ msgstr "Mieeeeeowww!"
+
+#~ msgid "idle idle idle idle!"
+#~ msgstr "idle idle idle idle!"
+
+#~ msgid "Hide Window"
+#~ msgstr "Fenster ausblenden"
+
+#~ msgid "Show Window"
+#~ msgstr "Fenster anzeigen"
+
+#~ msgid "A really lame text transformation engine :D"
+#~ msgstr "Eine wirklich lahme Textumformungsroutine :D"
+
+#, fuzzy
+#~ msgid "A really lame text transformation engine: Light Version."
+#~ msgstr "Eine wirklich lahme Textumformungsroutine :D"
+
+#~ msgid "The window with id '%s' does not exist"
+#~ msgstr "Das Fenster mit ID '%s' existiert nicht"
+
+#~ msgid "Window type or 'all' expected as first parameter"
+#~ msgstr "Fenster"
+
+#, fuzzy
+#~ msgid "Invalid IRC context id '%Q'"
+#~ msgstr "Ungültige IRC-Kontext-ID '%s'"
+
+#~ msgid ""
+#~ "The specified IRC context is not valid: creating a context free window"
+#~ msgstr ""
+#~ "Der angegebene IRC-Kontext ist ungültig: es wird ein kontextfreies "
+#~ "Fenster erstellt"
+
+#~ msgid "The specified window is not of type \"userwnd\""
+#~ msgstr "Das angegebene Fenster ist nicht vom Typ \"userwnd\""
+
+#, fuzzy
+#~ msgid "Background not found %Q "
+#~ msgstr "Hintergrundfarbe"
+
+#, fuzzy
+#~ msgid "Pixmap objects required !"
+#~ msgstr "Pixmapobjekt erforderlich"
+
+#~ msgid "Both -n and -m switchess specified, -n takes precedence"
+#~ msgstr "-n und -m angegeben, -n hat Vorrang"
+
+#~ msgid "Failed to allocate the specified crypt engine"
+#~ msgstr "Anforderung der angegebenen crypt-Routine fehlgeschlagen"
+
+#~ msgid "This executable has been compiled without crypt support"
+#~ msgstr "Diese Version von KVIrc wurde ohne crypt-Unterstützung kompiliert"
+
+#~ msgid "User Registration Wizard - KVIrc"
+#~ msgstr "Benutzeregistrierung-Assistent - KVIrc"
+
+#~ msgid ""
+#~ "<p>Welcome to the user registration wizard.<br>This process allows you to "
+#~ "add an IRC user to the database and set properties for that user. KVIrc "
+#~ "will be (hopefully) able to recognize the user, add him to the notify "
+#~ "list, and display the associated avatar.<br><br>First of all, you must "
+#~ "insert an <b>entry name or real name</b> for the user you're going to "
+#~ "register. The name will be used to identify the database entry and has no "
+#~ "specific requirements, it can be a given name, nickname, or just some "
+#~ "text to remind you of the real person.<br>Examples: \"George W Bush\", "
+#~ "\"Dubya\".\n"
+#~ "</p>"
+#~ msgstr ""
+#~ "<p>Willkommen zum Benutzeregistrierung-Assistent.<br>Dieser Prozess "
+#~ "erlaubt Ihnen, einen IRC-Benutzer zur Datenbank hinzuzufügen und "
+#~ "Eigenschaften zu setzen. KVIrc wird (hoffentlich) in der Lage sein, den "
+#~ "Benutzer zu erkennen, ihn zur Benachrichtigungsliste hinzuzufügen, den "
+#~ "zugeordneten Avatar anzeigen<br><br>Zuerst müssen Sie den "
+#~ "<b>Eintrittsnamen oder wirklichen Namen</b> des Benutzers, den Sie "
+#~ "registrierten möchten, eingeben. Der wirkliche Name wird benutzt, um den "
+#~ "Datenbankentrag zu indentifizieren und hat keine spezielle Bedeutung: es "
+#~ "kann ein Name, Spitzname oder einfach etwa Text sein, der Sie an diese "
+#~ "Person erinnert.<br>Beispiele: \"George W. Bush\", \"Dubya\".\n"
+#~ "</p>"
+
+#~ msgid "Step 1: Entry Name"
+#~ msgstr "Schritt 1: Eintrittsname"
+
+#~ msgid ""
+#~ "<p>A registered user is identified by one or more <b>IRC masks</b>.<br>A "
+#~ "mask must be in the following form:<br><b>nickname!username@hostname</"
+#~ "b><br>and can contain wildcard characters '*' and '?'. Be careful in "
+#~ "choosing the masks, as they are the only way to verify the identity of a "
+#~ "registered user.<br><br>You can enter at most two masks here, if you wish "
+#~ "to add more masks, use the \"<b>Edit</b>\" button in the Registered Users "
+#~ "dialog. You must enter at least one mask.</p>"
+#~ msgstr ""
+#~ "<p>Ein registrierter Benutzer wird durch ein oder mehrere <b>IRC-Masken</"
+#~ "b> identifiziert.<br>Eine Maske muss in der folgenden Form sein:"
+#~ "<br><b>spitzname!benutzername@hostname</b><br>und kann die Jokerzeichen * "
+#~ "und ? enthalten. Bitte beim Wählen der Masken vorsichtig sein: es ist die "
+#~ "einzige Methode für KVIrc, den registrierten Benutzer zu erkennen."
+#~ "<br><br>Es können eine oder zwei Masken eingegeben werden., wenn Sie mehr "
+#~ "benötigen, können Sie diese im \"Registrierte Benutzer\"-Dialog "
+#~ "hinzufügen. Die Auswahl einer Make ist zwingend.</p>"
+
+#~ msgid "Step 2: Mask Selection"
+#~ msgstr "Schritt 2: Maskenauswahl"
+
+#~ msgid ""
+#~ "<p>If you want to store an avatar image for this user, you can set it "
+#~ "here. KVIrc will show the avatar in the userlist next to the user's "
+#~ "nickname.<br>An avatar can be in any supported image format (PNG is "
+#~ "recommended). Keep in mind that KVIrc stores avatars in memory and has to "
+#~ "resize them to fit in the userlist, thus it's better to use small, low-"
+#~ "resolution images.</p>"
+#~ msgstr ""
+#~ "<p>Wenn einen Avatarbild von diesen Benutzer vorhanden ist, kann es hier "
+#~ "gesetzt werden. KVIrc wird ihn neben dem Spitznamen anzeigen. Ein Avatar "
+#~ "kann in einem beliebigen unterstützten Bildformat sein (PNG wird "
+#~ "empfohlen). Bitte auch bedenken , dass KVIrc Avatare im Speicher behält "
+#~ "und diese in der Grösse geändert werden, damit diese in die Benutzerliste "
+#~ "passen. Aus diesem Grund ist es besser, kleine Bilder mit niedriger "
+#~ "Auflösung zu benutzen.</p>"
+
+#~ msgid "Store an avatar for this user"
+#~ msgstr "Avatar für diesen Benutzer speichern"
+
+#~ msgid "Step 3: Avatar Selection"
+#~ msgstr "Schritt 3: Avatarauswahl"
+
+#~ msgid ""
+#~ "<p>If you want to be notified when this user is online or goes offline, "
+#~ "you must specify the list of nicknames that KVIrc will look for."
+#~ "<br><br>You can enter at most two nicknames here, if you wish to add more "
+#~ "nicknames, use the \"<b>Edit</b>\" button in the Registered Users dialog."
+#~ "</p>"
+#~ msgstr ""
+#~ "<p>Wenn man benachrichtigt werden will, wenn der Benutzer online oder "
+#~ "offline geht, muss man eine Liste mit Spitznamen angeben, nach denen "
+#~ "KVIrc sieht.<br><br>Es können zwei Spitznamen angeben werden, wenn mehr "
+#~ "benötigt wird, kann man diese im \"Registrierte Benutzer\"-Dialog "
+#~ "hinzufügen.</p>"
+
+#~ msgid "Add this user to the notify list"
+#~ msgstr "Diesen Benutzer zur Benachrichtigungsliste hinzufügen"
+
+#~ msgid "Nickname 2:"
+#~ msgstr "Spitzname 2:"
+
+#~ msgid "Step 4: Notify List"
+#~ msgstr "Schritt 4: Benachrichtigungsliste"
+
+#~ msgid ""
+#~ "<p>That's it. The user registration has been completed.<br><br>Click "
+#~ "\"<b>Finish</b>\" to close this dialog.</p>"
+#~ msgstr ""
+#~ "<p>Das wars. Die Benutzeregistrierung wurde erfolgreich abgeschlossen."
+#~ "<br><br>Auf den \"<b>Abschliessen</b>\"-Knopf klicken, um den Dialog zu "
+#~ "schliessen.</p>"
+
+#~ msgid "Registration Complete"
+#~ msgstr "Registrierung komplett"
+
+#~ msgid "User already registered: found exact name match"
+#~ msgstr "Benutzer bereits registriert: exakter Name gefunden"
+
+#, fuzzy
+#~ msgid "Mask %Q is already used to identify user %s"
+#~ msgstr "Maske %s wird bereits benutzt um Benutzer %s zu indentifizieren"
+
+#, fuzzy
+#~ msgid "User not found (%Q)"
+#~ msgstr "Benutzer nicht gefunden (%s)"
+
+#~ msgid "No mask specified"
+#~ msgstr "Keine Maske angegeben"
+
+#, fuzzy
+#~ msgid "User %Q not found"
+#~ msgstr "Benutzer %s nicht gefunden"
+
+#, fuzzy
+#~ msgid "Mask %Q already used to identify user %Q"
+#~ msgstr "Maske %s wird bereits benutzt um Benutzer %s zu indentifizieren"
+
+#, fuzzy
+#~ msgid "Mask %Q not found"
+#~ msgstr "Maske %s nicht gefunden"
+
+#~ msgid "No property specified"
+#~ msgstr "Keine Eigenschaft angegeben"
+
+#~ msgid "Registered users database dump:"
+#~ msgstr "Registrierte Benutzer-Datenbank-Ausgabe:"
+
+#~ msgid " User: %c%Q"
+#~ msgstr " Benutzer %c%Q"
+
+#~ msgid " Warning: this user has no registration masks"
+#~ msgstr "Warnung"
+
+#~ msgid " Mask: %Q!%Q@%Q"
+#~ msgstr " Maske: %Q!%Q@%Q"
+
+#~ msgid " Property: %Q=%Q"
+#~ msgstr " Eigenschaft: %Q=%Q"
+
+#~ msgid " No properties"
+#~ msgstr " Keine Eigenschaften"
+
+#~ msgid "Total: %d matching users (of %d in the database)"
+#~ msgstr "Gesamt: %d passende Benutzer (von %d in Datenbank)"
+
+#~ msgid "Property Editor"
+#~ msgstr "Eigenschafteditor"
+
+#~ msgid "Property"
+#~ msgstr "Eigenschaften"
+
+#~ msgid "Mask Editor"
+#~ msgstr "Maskeneditor"
+
+#~ msgid ""
+#~ "Insert a mask for this user.<br>It can contain the wildcard characters "
+#~ "'*' and '?'."
+#~ msgstr ""
+#~ "Maske für diesen Benutzer eingeben<br>Die Maske kann Platzhalterzeichen "
+#~ "'*' und '?' enthalten."
+
+#~ msgid ""
+#~ "<center>This the <b>nickname</b> that will match this user, default value "
+#~ "is the registered name.</center>"
+#~ msgstr ""
+#~ "<center>Dies ist der <b>Spitzname</b>, der auf diesen Benutzer passt, "
+#~ "Voreinstellung ist der registrierte Name.</center>"
+
+#~ msgid ""
+#~ "<center>This the <b>username</b> that will match this user. <b>*</b> will "
+#~ "match any username.</center>"
+#~ msgstr ""
+#~ "<center>Dies ist der <b>Benutzername</b>, der auf diesen Benutzer passt."
+#~ "<b>*</b> passt auf jeden Benutzernamen.</center>"
+
+#~ msgid ""
+#~ "<center>This the <b>hostname</b> that will match this user. <b>*</b> will "
+#~ "match any hostname.</center>"
+#~ msgstr ""
+#~ "<center>Dies ist der <b>Hostname</b>, der auf diesen Benutzer passt. </"
+#~ "b>*</b> passt auf jeden Hostnamen.</center>"
+
+#~ msgid "Registered User Entry"
+#~ msgstr "Registrierter Benutzer-Eintrag"
+
+#~ msgid "Name:"
+#~ msgstr "Name:"
+
+#~ msgid "Masks:"
+#~ msgstr "Masken:"
+
+#~ msgid "&Add..."
+#~ msgstr "&Hinzufügen..."
+
+#~ msgid "&Edit"
+#~ msgstr "&Bearbeiten"
+
+#~ msgid "Notify when user is online"
+#~ msgstr "Benachrichtungen, wenn Benutzer online ist"
+
+#~ msgid "Notify nicknames:"
+#~ msgstr "Spitznamen benachrichtigen:"
+
+#~ msgid "<center>You can enter a space separated list of nicknames.</center>"
+#~ msgstr ""
+#~ "<center>Hier kann eine Liste von Spitznamen, die durch Leerzeichen "
+#~ "getrennt sind, angegeben werden.</center>"
+
+#~ msgid "All Properties..."
+#~ msgstr "Alle Eigenschaften..."
+
+#~ msgid "Registered Users - KVIrc"
+#~ msgstr "Registrierte Benutzer - KVIrc"
+
+#~ msgid "Name"
+#~ msgstr "Name"
+
+#~ msgid "Notify"
+#~ msgstr "Benachrichtigung"
+
+#~ msgid ""
+#~ "<center>This is the list of registered users. KVIrc can automatically "
+#~ "recognize and associate properties to them.<br>Use the buttons on the "
+#~ "right to add, edit and remove entries. The \"notify\" column allows you "
+#~ "to quickly add users to the notify list. Notify list fine-tuning can be "
+#~ "performed by editing the entry properties.</center>"
+#~ msgstr ""
+#~ "<center>Dies ist die Liste der registrierten Benutzer. KVIrc kann diese "
+#~ "automatisch erkennen und zugeordneten Eigenschaften erkennen.<br>Die "
+#~ "Knöpfe rechts zum Hinzufügen, Bearbeiten und Löschen von Einträgen "
+#~ "benutzen. Die \"Benachrichtigen\"-Spalte erlaubt das schnelle Hinzufügen "
+#~ "von Benutzern zur Benachrichtigungsliste. Das Feintuning der "
+#~ "Benachrichtigungsliste kann mit dem Bearbeiten der einzelnen Einträge "
+#~ "erledigt werden.</center>"
+
+#~ msgid "Add (Wizard)..."
+#~ msgstr "Hinzufügen (Assistent)..."
+
+#~ msgid "Add a registered user by means of a user-friendly wizard."
+#~ msgstr ""
+#~ "Hinzufügen eines registrierten Benutzers mit einem benutzerfreundlichen "
+#~ "Assistenten."
+
+#~ msgid "Open the edit dialog to create a new user entry."
+#~ msgstr "Bearbeiten-Dialog zum Erstellen eines neuen Benutzereintrags öffnen"
+
+#~ msgid "Remove the currently selected entries."
+#~ msgstr "Aktuell ausgewählte Einträge löschen"
+
+#~ msgid "&Edit..."
+#~ msgstr "&Bearbeiten..."
+
+#~ msgid "Edit the first selected entry."
+#~ msgstr "Zuerst ausgewählten Eintrag bearbeiten"
+
+#~ msgid "Export To..."
+#~ msgstr "Exportieren nach..."
+
+#~ msgid ""
+#~ "Export the selected entries to a file.<br>All the data associated with "
+#~ "the selected registered users will be exported.<br>You (or anyone else) "
+#~ "can later import the entries by using the \"Import\" button."
+#~ msgstr ""
+#~ "Exportiert die ausgewählten Einträge in eine Datei.<br>Alle Daten, die "
+#~ "den registrierten Benutzern zugeordnet sind, werden exportiert.<br>Sie "
+#~ "(oder jemand anderes) kann später die Einträge mit dem \"Importieren\"-"
+#~ "Knopf importieren."
+
+#~ msgid "Import From..."
+#~ msgstr "Importieren von..."
+
+#~ msgid ""
+#~ "Import entries from a file exported earlier by the \"export\" function of "
+#~ "this dialog."
+#~ msgstr ""
+#~ "Importiert die Einträge von einer Datei, die vorher mit der \"Export\"-"
+#~ "Funktion dieses Dialogs exportiert wurden."
+
+#~ msgid "No entries selected."
+#~ msgstr "Keine Einträge ausgewählt"
+
+#~ msgid "Can't open file %s for writing."
+#~ msgstr "Datei %s kann nicht zum Schreiben geöffnet werden."
+
+#~ msgid "Can't export the registered users database: Write error."
+#~ msgstr ""
+#~ "Datenbank der registrierten Benutzer kann nicht exportiert werden: "
+#~ "Schreibfehler."
+
+#~ msgid "Can't open file %s for reading."
+#~ msgstr "Datei %s kann nicht zum Lesen geöffnet werden."
+
+#~ msgid "The file %s doesn't appear to be a valid registered users database."
+#~ msgstr ""
+#~ "Die Datei %s sieht nicht wie eine gültige Datenbank von registrierten "
+#~ "Benutzern aus."
+
+#~ msgid "The file %s contains an invalid registered users database version."
+#~ msgstr ""
+#~ "Die Datei %s enthält eine ungültige Version einer Datenbank für "
+#~ "registrierte Benutzer."
+
+#~ msgid "Can't import the registered users database: Read error."
+#~ msgstr ""
+#~ "Die Datenbank für registrierte Benutzer kann nicht importiert werden: "
+#~ "Lesefehler."
+
+#~ msgid "Drop here the icons from the toolbars to remove them"
+#~ msgstr ""
+#~ "Hier die Symbole von den Werkzeugleisten zum Entfernen fallen lassen"
+
+#~ msgid "ToolBar Properties"
+#~ msgstr "Werkzeugleisteneinstellungen"
+
+#~ msgid "Id"
+#~ msgstr "ID"
+
+#~ msgid "Please choose the icon for the ToolBar"
+#~ msgstr "Bitte das Symbol für die Werkzeugleiste auswählen"
+
+#~ msgid "Invalid ToolBar Label"
+#~ msgstr "Ungültiger Werkzeugleistenbezeichner"
+
+#~ msgid "The ToolBar Label can't be empty!"
+#~ msgstr "Der Werkzeugleistenbezeichner kann nicht leer sein!"
+
+#~ msgid "Duplicate ToolBar Id"
+#~ msgstr "Werkzeugleisten-ID duplizieren"
+
+#~ msgid ""
+#~ "The specified ToolBar Id already exists.<br>Would you like KVIrc to "
+#~ "assign it automatically (so it doesn't collide with any other toolbar) or "
+#~ "you prefer to do it manually ?"
+#~ msgstr ""
+#~ "Die angegebene Werkzeugleisten-ID existiert bereits,<br>Soll KVIrc sie "
+#~ "automatisch zuweisen (dann kann sie nicht mit einer anderen "
+#~ "Werkzeugleiste kollidieren) oder möchten Sie es manuell tun?"
+
+#~ msgid "Manually"
+#~ msgstr "Manuell"
+
+#~ msgid "Automatically"
+#~ msgstr "Automatisch"
+
+#~ msgid "Hide Advanced"
+#~ msgstr "Erweitert ausblenden"
+
+#~ msgid "Customize Toolbars"
+#~ msgstr "Werkzeugleisten anpassen"
+
+#~ msgid "New ToolBar"
+#~ msgstr "Neue Werkzeugleiste"
+
+#~ msgid "Delete ToolBar"
+#~ msgstr "Werkzeugleiste löschen"
+
+#~ msgid "Edit ToolBar"
+#~ msgstr "Werkzeugleiste bearbeiten"
+
+#~ msgid "Export ToolBar"
+#~ msgstr "Werkzeugleiste exportieren"
+
+#~ msgid "Confirm ToolBar Deletion"
+#~ msgstr "Bestätigung zum Löschen der Werkzeugleiste"
+
+#~ msgid "Do you really want to delete toolbar \"%1\" ?"
+#~ msgstr "Soll die Werkzeugleiste \"%1\" wirklich gelöscht werden?"
+
+#~ msgid "ToolBar Export"
+#~ msgstr "Werkzeugleisten-Export"
+
+#~ msgid "Do you want the associated actions to be exported with the toolbar ?"
+#~ msgstr ""
+#~ "Sollen die zugeordneten Aktionen mit der Werkzeugleiste exportiert werden?"
+
+#~ msgid "Unable to write to the toolbar file."
+#~ msgstr "Werkzeugleistendatei kann nicht geschrieben werden."
+
+#~ msgid "Please specify the properties for the toolbar \"%1\""
+#~ msgstr "Bitte die Eigenschaften für die Werkzeugleiste \"%1\" angeben"
+
+#~ msgid "Please specify the properties for the new toolbar"
+#~ msgstr "Bitte die Eigenschaften für die neue Werkzeugleiste angeben"
+
+#~ msgid "My ToolBar"
+#~ msgstr "Meine Werkzeugleiste"
+
+#~ msgid "Terminal emulator"
+#~ msgstr "Terminal-Emulator"
+
+#~ msgid "Close this window"
+#~ msgstr "Dieses Fenster schließen"
+
+#~ msgid "Can't create the terminal emulation part"
+#~ msgstr "Terminalemulationsteil kann nicht erstellt werden"
+
+#~ msgid "Can't retrieve the terminal emulation factory"
+#~ msgstr "Terminalemulationsart konnte nicht bekommen werden"
+
+#~ msgid "Terminal"
+#~ msgstr "Terminal"
+
+#~ msgid "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+#~ msgstr "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+
+#~ msgid "This window has no associated irc context"
+#~ msgstr "Dieses Fenster hat keinen angeschlossen IRC-Kontext"
+
+#~ msgid "No such irc context (%d)"
+#~ msgstr "Kein solcher Kontext (%d)"
+
+#~ msgid "Internal unique name for the action"
+#~ msgstr "Interner eindeutiger Name für die Aktion"
+
+#~ msgid "Label:"
+#~ msgstr "Beschriftung:"
+
+#~ msgid ""
+#~ "Visible name for this action.<br>This string will be displayed to the "
+#~ "user so it is a good idea to use $tr() here"
+#~ msgstr ""
+#~ "Sichtbarer Name für diese Aktion.<br>Diese Zeichenkette wird dem Benutzer "
+#~ "angezeigt, so dass es eine gute Idee ist, hier $tr() zu verwenden"
+
+#~ msgid "Action code"
+#~ msgstr "Aktioncode"
+
+#~ msgid "Code"
+#~ msgstr "Code"
+
+#~ msgid "Category:"
+#~ msgstr "Kategorie:"
+
+#~ msgid "Choose the category that best fits for this action"
+#~ msgstr "Kategorie auswählen, die am besten zu dieser Aktion paßt"
+
+#~ msgid ""
+#~ "Visible short description for this action.<br>This string will be "
+#~ "displayed to the user so it is a good idea to use $tr() here"
+#~ msgstr ""
+#~ "Sichtbare Kurzbeschreibung für diese Aktion.<br>Diese Zeichenkette wird "
+#~ "dem Benutzer angezeigt, so dass es eine gute Idee ist, hier $tr() zu "
+#~ "verwenden"
+
+#~ msgid "Small Icon:"
+#~ msgstr "Kleines Symbol:"
+
+#~ msgid ""
+#~ "The small icon associated to this action.<br>It will appear at least in "
+#~ "the popup menus when this action is inserted.<br>It should be 16x16 "
+#~ "pixels."
+#~ msgstr ""
+#~ "Das kleine Symbol, dass dieser Aktion zugeordnet ist.<br>Es wird in den "
+#~ "Aufklappmenüs angezeigt, wenn die Aktion eingefügt ist.<br>Es sollte eine "
+#~ "Größe von 16x16 Pixel haben."
+
+#~ msgid "Big Icon:"
+#~ msgstr "Großes Symbol:"
+
+#~ msgid ""
+#~ "The big icon associated to this action.<br>It will appear at least in the "
+#~ "toolbar buttons when this action is inserted.<br>It should be 32x32 "
+#~ "pixels."
+#~ msgstr ""
+#~ "Das große Symbol, dass dieser Aktion zugeordnet ist.<br>Es wird in den "
+#~ "Aufklappmenüs angezeigt, wenn die Aktion eingefügt ist.<br>Es sollte eine "
+#~ "Größe von 32x32 Pixel haben."
+
+#~ msgid "Key Sequence:"
+#~ msgstr "Tastenkombination:"
+
+#~ msgid ""
+#~ "Optional keyboard sequence that will activate this action.<br>The "
+#~ "sequence should be expressed as a string of up to four key codes "
+#~ "separated by commas eventually combined with the modifiers \"Ctrl\","
+#~ "\"Shift\",\"Alt\" and \"Meta\".<br>Examples of such sequences are \"Ctrl+X"
+#~ "\", \"Ctrl+Alt+Z\", \"Ctrl+X,Ctrl+C\" ..."
+#~ msgstr ""
+#~ "Die optionale Tastenkombination wird diese Aktion aktivieren.<br>Die "
+#~ "Tastenkombination soll als Zeichenkette mit 4 Codes, die mit Komma "
+#~ "getrennt sind und eventuell mit den Modifizierern \"Strg\", \"Shift\", "
+#~ "\"Alt\" und \"Meta\" ausgedrückt werden.<br>Beispiele solcher Sequenzen "
+#~ "sind \"Strg+X\", \"Strg+Alt+Z\", \"Strg+X\", \"Strg+C\" ..."
+
+#~ msgid "Needs IRC Context"
+#~ msgstr "Benötigt IRC-Kontext"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window belongs to an irc context"
+#~ msgstr ""
+#~ "Diese Option aktivieren, wenn diese Aktion nur aktiviert werden soll, "
+#~ "wenn das aktive Fenster zu einem IRC-Kontext gehört"
+
+#~ msgid "Needs IRC Connection"
+#~ msgstr "Benötigt IRC-Verbindung"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window has an active IRC connection"
+#~ msgstr ""
+#~ "Diese Option aktivieren, wenn diese Aktion nur aktiviert werden soll, "
+#~ "wenn das aktive Fenster eine aktive IRC-Verbindung hat"
+
+#~ msgid "Enable at Login"
+#~ msgstr "Beim Login aktivieren"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled also during the login "
+#~ "operations (so when the logical IRC connection hasn't been estabilished "
+#~ "yet)"
+#~ msgstr ""
+#~ "Diese Option aktivieren, wenn diese Aktion auch bei den "
+#~ "Einloggoperationen aktiviert werden soll (wenn die logische IRC-"
+#~ "Verbindung nicht nicht aufgebaut ist)"
+
+#~ msgid "Enable Only in Specified Windows"
+#~ msgstr "Nur in angegebenen Fenstern aktivieren"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window is of a specified type"
+#~ msgstr ""
+#~ "Diese Option aktivieren, wenn diese Aktion nur aktiviert werden soll, "
+#~ "wenn das aktive Fenster der angebene Typ ist"
+
+#~ msgid "Enable in Console Windows"
+#~ msgstr "In Konsole-Fenstern aktivieren"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window is a console"
+#~ msgstr ""
+#~ "Diese Option aktivieren, wenn diese Aktion nur aktiviert werden soll, "
+#~ "wenn das aktive Fenster eine Konsole ist"
+
+#~ msgid "Only If There Are Selected Users"
+#~ msgstr "Nur wenn Benutzer ausgewählt sind"
+
+#~ msgid ""
+#~ "This will enable the action only if there are selected users in the "
+#~ "active window"
+#~ msgstr ""
+#~ "Diese Option aktivieren, wenn diese Aktion nur aktiviert werden soll, "
+#~ "wenn im aktiven Fenster Benutzer ausgewählt sind"
+
+#~ msgid "Enable in Channel Windows"
+#~ msgstr "In Kanalfenstern aktivieren"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window is a channel"
+#~ msgstr ""
+#~ "Diese Option aktivieren, wenn diese Aktion nur aktiviert werden soll, "
+#~ "wenn das aktive Fenster ein Kanal ist"
+
+#~ msgid "Enable in Query Windows"
+#~ msgstr "In Anfragefenstern aktivieren"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window is a query"
+#~ msgstr ""
+#~ "Diese Option aktivieren, wenn diese Aktion nur aktiviert werden soll, "
+#~ "wenn das aktive Fenster eine Anfrage ist"
+
+#~ msgid "Enable in DCC Chat Windows"
+#~ msgstr "In DCC-Chat-Fenstern aktivieren"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window is a dcc chat"
+#~ msgstr ""
+#~ "Diese Option aktivieren, wenn diese Aktion nur aktiviert werden soll, "
+#~ "wenn das aktive Fenster ein DCC-Chat ist"
+
+#~ msgid "Flags"
+#~ msgstr "Flags"
+
+#~ msgid "Action"
+#~ msgstr "Aktion"
+
+#~ msgid "New Action"
+#~ msgstr "Neue Aktion"
+
+#~ msgid "Delete Actions"
+#~ msgstr "Aktionen löschen"
+
+#~ msgid "Export Actions..."
+#~ msgstr "Aktionen exportieren..."
+
+#~ msgid "My Action"
+#~ msgstr "Meine Aktion"
+
+#~ msgid "Put here a short description of your action"
+#~ msgstr "Hier eine Kurzbeschreibung der Aktion angeben"
+
+#~ msgid "Action Editor"
+#~ msgstr "Aliaseditor"
+
+#~ msgid "Apply"
+#~ msgstr "Anwenden"
+
+#~ msgid "Socket Spy [IRC Context %u]"
+#~ msgstr "Socketüberwachung [IRC-Kontext %u]"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Socket Spy</b></font> <font color=\"%s\">[IRC "
+#~ "Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>Socketüberwachung</b></font> <font color=\"%s"
+#~ "\">[IRC-Kontext %u]</font></nobr>"
+
+#~ msgid "Socket open"
+#~ msgstr "Socket geöffnet"
+
+#~ msgid "Socket closed"
+#~ msgstr "Socket geschlossen"
+
+#, fuzzy
+#~ msgid "Sound file '%Q' not found"
+#~ msgstr "Klandatei '%s' nicht gefunden"
+
+#, fuzzy
+#~ msgid "Unable to play sound '%Q'"
+#~ msgstr "Klang '%s' konnte nicht abgepielt werden"
+
+#~ msgid "Sorry , I can't find a sound system to use on this machine"
+#~ msgstr "Es konnte kein benutzbares Klangsystem gefunden werden"
+
+#~ msgid "Sound system detected to: %s"
+#~ msgstr "Klangsystem erkannt als: %s"
+
+#~ msgid "Manage Script-Based Addons"
+#~ msgstr "Skripbasierte Zusätze verwalten"
+
+#~ msgid "Configure"
+#~ msgstr "Konfigurieren"
+
+#~ msgid "Show Help"
+#~ msgstr "Hilfe anzeigen"
+
+#~ msgid "Uninstall"
+#~ msgstr "Deinstallieren"
+
+#~ msgid "Install Addon..."
+#~ msgstr "Zusatz installieren..."
+
+#~ msgid "More Addons..."
+#~ msgstr "Mehr Zusätze..."
+
+#, fuzzy
+#~ msgid "Do you really want to uninstall the addon \"%1\" ?"
+#~ msgstr "Soll das Skript \"%1\" wirklich deinstalliert werden?"
+
+#, fuzzy
+#~ msgid "Confirm addon uninstallation"
+#~ msgstr "Skriptdeinstallation bestätigen"
+
+#~ msgid "Please select the addon installation file"
+#~ msgstr "Bitte die Installationsdatei des Zusatzs auswählen"
+
+#, fuzzy
+#~ msgid "%cAddon id %Q, version %Q%c"
+#~ msgstr "%c Skript-ID %Q, Version %Q%c"
+
+#~ msgid "Name: %Q"
+#~ msgstr "Name: %Q"
+
+#~ msgid "Description: %Q"
+#~ msgstr "Beschreibung: %Q"
+
+#, fuzzy
+#~ msgid "Total: %d addons installed"
+#~ msgstr "Gesamt: %d Skripte installiert"
+
+#, fuzzy
+#~ msgid "Uninstalling existing addon version %Q"
+#~ msgstr "Existierende Skriptversion %Q wird deinstalliert"
+
+#, fuzzy
+#~ msgid "The addon \"%1\" does not exist"
+#~ msgstr "Die Aktion \"%1\" existiert nicht"
+
+#, fuzzy
+#~ msgid "The addon \"%1\" has no configure callback set"
+#~ msgstr "Das Skript \"%1\" hat kein configure-Aufruf gesetzt"
+
+#, fuzzy
+#~ msgid "The addon \"%1\" has no help callback set"
+#~ msgstr "Das Skript \"%1\" hat kein help-Aufruf gesetzt"
+
+#~ msgid "The specified version \"%Q\" is not a valid version string"
+#~ msgstr ""
+#~ "Die angegebene Version \"%Q\" ist eine keine gültige Versionszeichenkette"
+
+#, fuzzy
+#~ msgid "The specified KVIrc version \"%Q\" is not a valid version string"
+#~ msgstr ""
+#~ "Die angegebene KVIrc-Version \"%s\" ist keine gültige Versionszeichenkette"
+
+#, fuzzy
+#~ msgid ""
+#~ "This KVIrc executable is too old to run this addon (minimum version "
+#~ "required is %Q)"
+#~ msgstr ""
+#~ "Dieses KVIrc ist zu alt, um dieses Skript auszuführen (miniale Version "
+#~ "ist %s)"
+
+#, fuzzy
+#~ msgid "Attempting to register addon \"%Q\" with version %Q"
+#~ msgstr "Es wird versucht, das Skript \"%Q\" mit Version %Q zu registrieren"
+
+#~ msgid ""
+#~ "The script addon \"%Q\" already exists with version %Q which is higher "
+#~ "than %Q"
+#~ msgstr ""
+#~ "Der Skriptzusatz \"%Q\" existiert bereits mit Version %Q, welche höher "
+#~ "als %Q ist"
+
+#~ msgid "Script registration failed"
+#~ msgstr "Skript registierung fehlgeschlagend"
+
+#~ msgid "Script succesfully registered"
+#~ msgstr "Skript erfolgreich registeriert"
+
+#, fuzzy
+#~ msgid "Destinaion file exists: no copy made"
+#~ msgstr "Zieldateidei existiert bereits: keine Kopie"
+
+#, fuzzy
+#~ msgid "Failed to copy from %Q to %Q"
+#~ msgstr "Kopie von %s nach %s fehlgeschlagen"
+
+#~ msgid "Destination file exists: file not renamed"
+#~ msgstr "Zieldatei existiert bereits: Datei nicht umbenannt"
+
+#, fuzzy
+#~ msgid "Failed to rename %Q to %Q"
+#~ msgstr "Umbenennen von %s nach %s fehlgeschlagen"
+
+#, fuzzy
+#~ msgid "Failed to make the directory %Q"
+#~ msgstr "Erstellung von Verzeichnis %s fehlgeschlagen"
+
+#, fuzzy
+#~ msgid "Failed to remove the file %Q"
+#~ msgstr "Löschen von Datei %s fehlgeschlagen"
+
+#, fuzzy
+#~ msgid "Failed to remove the directory %Q"
+#~ msgstr "Löschen des Verzeichnisses %s fehlgeschlagen"
+
+#, fuzzy
+#~ msgid "The specified directory does not exist '%Q'"
+#~ msgstr "Das angegebene Verzeichnis existiert nicht '%s'"
+
+#, fuzzy
+#~ msgid "Can't open the file \"%Q\" for reading"
+#~ msgstr "Öffnen der Datei \"%s\" zum Lesen fehlgeschlagen"
+
+#, fuzzy
+#~ msgid "Read error for file %Q"
+#~ msgstr "Lesefehler für Datei %s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Read error for file %Q (have been unable to read the requested size in "
+#~ "1000 retries)"
+#~ msgstr ""
+#~ "Lesefehler für Datei %s (unmöglich, die angeforderte Größe in 1000 "
+#~ "Versuchen zu lesen)"
+
+#, fuzzy
+#~ msgid "Can't open the file \"%Q\" for writing"
+#~ msgstr "Datei \"%s\" kann nicht zum Schreiben geöffnet werden"
+
+#~ msgid "Event"
+#~ msgstr "Ereignis"
+
+#~ msgid "Edit the event handler name."
+#~ msgstr "Ereignishandlername bearbeiten"
+
+#~ msgid "&Enable Handler"
+#~ msgstr "Handler &aktivieren"
+
+#~ msgid "&Disable Handler"
+#~ msgstr "Handler &deaktivieren"
+
+#~ msgid "Re&move Handler"
+#~ msgstr "Handler &löschen"
+
+#~ msgid "&Export Handler To..."
+#~ msgstr "Handler &exportieren nach..."
+
+#~ msgid "&New Handler"
+#~ msgstr "&Neuer Handler"
+
+#~ msgid "default"
+#~ msgstr "Standard"
+
+#~ msgid "none"
+#~ msgstr "Keine"
+
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "\tEvent:\n"
+#~ "\t\t%s\n"
+#~ "\n"
+#~ "\tParameters:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "\tEreignis:\n"
+#~ "\t\t%s\n"
+#~ "\n"
+#~ "\tParameter:\n"
+#~ "%s"
+
+#~ msgid "Unable to write to the event file."
+#~ msgstr "Ereignisdatei kann nicht geschrieben werden."
+
+#~ msgid "Unable to write to the events file."
+#~ msgstr "Ereignisdatei kann nicht geschrieben werden."
+
+#~ msgid "Event Editor"
+#~ msgstr "Ereigniseditor"
+
+#~ msgid "Default part message:"
+#~ msgstr "Standard \"Kanal verlassen\"-Nachricht"
+
+#~ msgid "Default quit message:"
+#~ msgstr "Standard \"Beenden\"-Nachricht"
+
+#, fuzzy
+#~ msgid "Hide avatars in userlist"
+#~ msgstr "Avatar benutzen"
+
+#~ msgid "USERINFO reply:"
+#~ msgstr "USERINFO-Antwort:"
+
+#~ msgid ""
+#~ "<center>This is the CTCP USERINFO reply.<br>It can contain some "
+#~ "information about yourself.</center>"
+#~ msgstr ""
+#~ "<center>Dies ist die CTCP USERINFO-Antwort<br>Diese sollte einige "
+#~ "Informationen über Sie enthalten.</center>"
+
+#~ msgid "Show at startup"
+#~ msgstr "Beim Start anzeigen"
+
+#~ msgid "Did you know..."
+#~ msgstr "Wußten Sie schon..."
+
+#~ msgid "<b>Can't find any tip... :(</b>"
+#~ msgstr "<b>Es konnte kein Tipp gefunden werden... :(</b>"
+
+#~ msgid "Lag meter was not enabled"
+#~ msgstr "Lag-Meter wurde nicht aktiviert"
+
+#~ msgid "Ops.. internal error"
+#~ msgstr "Ops.. Interner Fehler"
+
+#~ msgid "Manage File &Transfers"
+#~ msgstr "Dateiüber&tragungen verwalten"
+
+#~ msgid "Password"
+#~ msgstr "Passwort"
+
+#~ msgid "&Join"
+#~ msgstr "&Teilnehmen"
+
+#~ msgid "Show this window after connecting"
+#~ msgstr "Fenster nach Verbindungsaufbau anzeigen"
+
+#~ msgid "Recent Channels"
+#~ msgstr "Letzte Kanäle"
+
+#~ msgid "Registered Channels"
+#~ msgstr "Registrierte Kanäle"
+
+#~ msgid "Raw Event"
+#~ msgstr "RAW-Ereignis"
+
+#, fuzzy
+#~ msgid "Edit the raw event handler name."
+#~ msgstr "Ereignishandlername bearbeiten"
+
+#~ msgid "&Add Raw Event..."
+#~ msgstr "RAW-Ereignisse &hinzufügen..."
+
+#~ msgid "New Raw Event"
+#~ msgstr "Neues RAW-Ereignis"
+
+#~ msgid "Enter the numeric code of the message (0-999)"
+#~ msgstr "Numerischen Code der Nachricht eingeben (0-999)"
+
+#, fuzzy
+#~ msgid "Unable to write to the raw event file."
+#~ msgstr "Ereignisdatei kann nicht geschrieben werden."
+
+#, fuzzy
+#~ msgid "Unable to write to the raw events file."
+#~ msgstr "Ereignisdatei kann nicht geschrieben werden."
+
+#~ msgid "Raw Editor"
+#~ msgstr "RAW-Editor"
+
+#~ msgid "%cCore action: %Q"
+#~ msgstr "%cKernaktion: %Q"
+
+#~ msgid "%cUser action: %Q"
+#~ msgstr "%cBenutzeraktion: %Q"
+
+#~ msgid "Label: %Q"
+#~ msgstr "Beschriftung: %Q"
+
+#~ msgid "Category: %Q"
+#~ msgstr "Kategorie: %Q"
+
+#~ msgid "The action \"%1\" is disabled"
+#~ msgstr "Die Aktion \"%1\" ist deaktiviert"
+
+#~ msgid "The action \"%1\" does not exist"
+#~ msgstr "Die Aktion \"%1\" existiert nicht"
+
+#~ msgid "The action \"%1\" is a core action and cannot be destroyed"
+#~ msgstr ""
+#~ "Die Aktion \"%1\" ist eine Kernaktion und kann nicht zerstört werden"
+
+#~ msgid "The switch -l requires -c"
+#~ msgstr "Der -I Schalter erfordert -c"
+
+#~ msgid ""
+#~ "The switch -s requires -w with a combination of flags 'c','x' and 'q'"
+#~ msgstr ""
+#~ "Der -s Schalter erfordert -w mit einer Kombination der Flags 'c', 'x' und "
+#~ "'q'"
+
+#~ msgid ""
+#~ "The action \"%1\" is already defined as core action and cannot be "
+#~ "overridden"
+#~ msgstr ""
+#~ "Die Aktion \"%1\" ist bereits als Kernaktion definiert und kann nicht "
+#~ "überschrieben werden"
+
+#~ msgid "&Execute"
+#~ msgstr "&Ausführen"
+
+#~ msgid "Params:"
+#~ msgstr "Parameter:"
+
+#~ msgid "Script Tester"
+#~ msgstr "Skripttester"
+
+#~ msgid ""
+#~ "Broken slot '%s' in target object '%s' while emitting signal '%s' from "
+#~ "object '%s': disconnecting"
+#~ msgstr ""
+#~ "Fehlerhafter Slot '%s' in Zielobjekt '%s' beim Senden des Signals '%s' "
+#~ "von Objekt '%s': trenne"
+
+#~ msgid ""
+#~ "No slot function '%s' exported by target object '%s' while emitting "
+#~ "signal '%s' from object '%s': disconnecting"
+#~ msgstr ""
+#~ "Keine Slotfunktion '%s', die von Zielobjekt '%s' während des Aussendens "
+#~ "des Signals '%s' von Objekt '%s' exportiert wird: es wird getrennt"
+
+#~ msgid "Invalid timeout"
+#~ msgstr "Ungültige Ablaufzeit"
+
+#~ msgid "Invalid timer id"
+#~ msgstr "Ungültige Timer-ID"
+
+#~ msgid "%cListing Qt Properties for widget object %s (%s)"
+#~ msgstr "%c Auflistung der Qt-Eigenschaften fürWidgetobjekt %s (%s)"
+
+#~ msgid "Properties class: %c%s%c"
+#~ msgstr "Eigenschaftsklasse: %c%s%c"
+
+#~ msgid "Property: %c%s%c, type: %s"
+#~ msgstr "Eigenschaft: %c%s%c, Typ: %s"
+
+#~ msgid ", enum ("
+#~ msgstr ", enum ("
+
+#~ msgid ", set"
+#~ msgstr ", set"
+
+#~ msgid ", writeable"
+#~ msgstr ", schreibbar"
+
+#~ msgid "Oops... no such property: %s"
+#~ msgstr "Oops... keine solche Eigenschaft: %s"
+
+#~ msgid "Not enough parameters"
+#~ msgstr "Nicht genug Parameter"
+
+#~ msgid "No such QT property (%s)"
+#~ msgstr "Keine solche QT-Eigenschaft (%s)"
+
+#~ msgid "missing parameter"
+#~ msgstr "Parameter fehlt"
+
+#~ msgid "Invalid parameter (%s)"
+#~ msgstr "Ungültiger Parameter (%s)"
+
+#~ msgid "Pixmap Object required"
+#~ msgstr "Pixmapobjekt erforderlich"
+
+#~ msgid "Pixmap not found"
+#~ msgstr "Pixmap nicht gefunden"
+
+#~ msgid "Unsupported QT property (%s)"
+#~ msgstr "Nicht unterstützte QT-Eigenschaft (%s)"
+
+#~ msgid "Missing parameters"
+#~ msgstr "Parameter fehlen"
+
+#~ msgid "This window has no associated IRC context"
+#~ msgstr "Dieses Fenster hat keinen zugeordneten IRC-Kontext"
+
+#~ msgid "Unknown"
+#~ msgstr "Unbekannt"
+
+#~ msgid "[Parser warning in '%Q']: %Q"
+#~ msgstr "[Parserwarnung in '%Q']: %Q"
+
+#~ msgid "Can't find the multimedia file %s"
+#~ msgstr "Multimediadatei %s kann nicht gefunden werden"
+
+#~ msgid "Missing target, no action taken"
+#~ msgstr "Ziel fehlt: keine Aktion ausgeführt"
+
+#~ msgid "Invalid timeout specified , using default"
+#~ msgstr "Ungültiger Timeout angegeben, benutze Standard"
+
+#~ msgid "Can't add a file offer for file %s (huh ? file not readable ?)"
+#~ msgstr ""
+#~ "Datei %s kann nicht zu Dateiangebot hinzugefügt werden (Datei nicht "
+#~ "lesbar?)"
+
+#~ msgid "Added %d secs file offer for file %s (%s) and receiver %s"
+#~ msgstr ""
+#~ "%d Sekunden für Dateiangebot für Datei %s (%s) und Empfänger %s "
+#~ "hinzugefügt"
+
+#~ msgid "%s plays '%s'"
+#~ msgstr "%s spielt '%s'"
+
+#~ msgid "%s plays '%s' to %s"
+#~ msgstr "%s spielt '%s' nach %s"
+
+#~ msgid "Error in command: %c%c%Q"
+#~ msgstr "Fehler in Kommando: %c%c%Q"
+
+#, fuzzy
+#~ msgid "Error token: %c%Q"
+#~ msgstr "Fehlertoken: %c%s"
+
+#~ msgid "Parsing stopped at %cline %d , character %d"
+#~ msgstr "Parsen abgebrochen bei Zeile %cline %d, Zeichen %d"
+
+#~ msgid " %s"
+#~ msgstr " %s"
+
+#~ msgid "Object scope: name (%s), class (%s)"
+#~ msgstr "Objektgültigkeitsbereich: Name (%s), Klasse (%s)"
+
+#~ msgid "Object scope: deleted object"
+#~ msgstr "Objektgültigkeitsbereich: gelöschtes Objekt"
+
+#~ msgid "This pointer: name (%s), class (%s)"
+#~ msgstr "Dieser Zeiger: Name (%s), Klasse (%s)"
+
+#~ msgid "This pointer: deleted object"
+#~ msgstr "Dieser Zeiger: gelöschtes Objekt"
+
+#~ msgid "Internal call stack:"
+#~ msgstr "Interner Aufrufstack:"
+
+#~ msgid ""
+#~ " Current command stack depth: %d frames (stopping output at 25th frame)"
+#~ msgstr ""
+#~ " Aktuelle Tiefe des Befehlsstacks: %d Rahmen (Halte Ausgabe beim 25. "
+#~ "Rahmen an)"
+
+#~ msgid " Parent command stack depth: %d frames"
+#~ msgstr " Tiefe des Elternbefehlsstacks: %d Rahmen"
+
+#~ msgid "You are not connected to a server"
+#~ msgstr "Nicht mit einen Server verbunden"
+
+#~ msgid "%s (module %s)"
+#~ msgstr "%s (Modul %s)"
+
+#~ msgid "Module '%s', Command '%s'"
+#~ msgstr "Modul '%s', Kommando '%s'"
+
+#~ msgid "Can't rebind the command: window with id %s not found"
+#~ msgstr "Kann Befehl nicht neu binden: Fenster mit ID %s nicht gefunden"
+
+#~ msgid ""
+#~ "Can't rebind the command: missing window identifier after the -r switch"
+#~ msgstr ""
+#~ "Kann Befehl nicht neu binden: Fensterbezeichner nach dem -r Schalter fehlt"
+
+#~ msgid "Error triggered from raw event handler %c%s::%Q"
+#~ msgstr "Fehler vom RAW-Ereignishandler %c%s::%Q ausgelöst"
+
+#~ msgid "Error triggered from event handler %c%Q::%Q"
+#~ msgstr "Fehler vom Ereignishandler %c%Q::%Q ausgelöst"
+
+#~ msgid "Raw event handler %s::%Q is broken: disabling"
+#~ msgstr "RAW-Ereignishandler %s::%Q ist fehlerhaft: wird deaktiviert"
+
+#~ msgid "Event handler %Q::%Q is broken: disabling"
+#~ msgstr "Ereignishandler %Q::%Q ist fehlerhaft: wird deaktiviert"
+
+#~ msgid "Variable evaluated to \"%s\""
+#~ msgstr "Variable ausgewertet zu \"%s\""
+
+#~ msgid "Module '%s', Function '%s'"
+#~ msgstr "Modul '%s', Funktion '%s'"
+
+#~ msgid "Identifier evaluated to \"%s\""
+#~ msgstr "Bezeichner ausgewertet zu \"%s\""
+
+#~ msgid "Left operand of operator %s (%s{%s}) is undefined : assuming 0"
+#~ msgstr ""
+#~ "Linker Operand von Operator %s (%s{%s}) ist nicht definiert: es wird 0 "
+#~ "angenommen"
+
+#~ msgid "Left operand of operator %s (%s[%s]) is undefined : assuming 0"
+#~ msgstr ""
+#~ "Linker Operand von Operator %s (%s[%s]) ist nicht definiert: es wird 0 "
+#~ "angenommen"
+
+#~ msgid "Left operand of operator %s (%s) is undefined : assuming 0"
+#~ msgstr ""
+#~ "Linker Operand von Operator %s (%s) ist nicht definiert: es wird 0 "
+#~ "angenommen"
+
+#~ msgid "Variable %s{%s} evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Variable %s{%s} ausgewertet zu '%s' in Operator %s (keine Nummer)"
+
+#~ msgid "Variable %s[%s] evaluated to '%s' in operator %s (not a number)"
+#~ msgstr ""
+#~ "Variable %s[%s] ausgewertet zu '%s' in Operator %s (ist keine Nummer)"
+
+#~ msgid "Variable %s evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Variable %s ausgewertet zu '%s' in Operator %s (ist keine Nummer)"
+
+#~ msgid "Right operand of operator %s evaluated to '%s' (not a number)"
+#~ msgstr ""
+#~ "Rechter Operand von Operator %s ausgewertet zu '%s' (ist keine Zahl)"
+
+#~ msgid "operator %c%c"
+#~ msgstr "Operator %c%c"
+
+#~ msgid "Broken condition in menu setup: assuming false"
+#~ msgstr "Fehlerhafte Bedingung im Menü setup: Es wird falsch angenommen"
+
+#~ msgid "Broken icon parameter: ignoring"
+#~ msgstr "Fehlerhafter Symbolparameter: wird ignoriert"
+
+#~ msgid "Can't find the icon \"%Q\": ignoring"
+#~ msgstr "Symbol \"%Q\" kann nicht gefunden werden: wird ignoriert"
+
+#~ msgid "Broken text parameter: assuming empty string"
+#~ msgstr "Fehlerhafter Textparameter: Leere Zeichenkette angenommen"
+
+#~ msgid "Recursive definition detected for popup '%Q': ignoring"
+#~ msgstr "Rekursive Definition für Aufklappmenü '%Q' gefunden: wird ignoriert"
+
+#~ msgid "Can't find the external popup '%Q'; ignoring"
+#~ msgstr ""
+#~ "Externes Aufklappmenü '%Q' kann nicht gefunden werden: wird ignoriert"
+
+#~ msgid "Broken prologue in popup menu '%Q': ignoring"
+#~ msgstr "Fehlerhafter Prolog für Aufklappmenü '%Q': wird ignoriert"
+
+#~ msgid "Broken epilogue in popup menu '%Q': ignoring"
+#~ msgstr "Fehlerhafter Epilog für Aufklappmenü '%Q': wird ignoriert"
+
+#~ msgid "Say parse error: Broken command"
+#~ msgstr "Say-Parsen fehlgeschlagen: fehlerhaftes Kommando"
+
+#, fuzzy
+#~ msgid ""
+#~ "Another connection is already in progress in the selected IRC context"
+#~ msgstr "Eine andere Verbindung ist im Aufbau"
+
+#, fuzzy
+#~ msgid "No menu bar item with text '%Q'"
+#~ msgstr "Kein Menüleistenelement mit Text '%s'"
+
+#, fuzzy
+#~ msgid "Invalid index specified: ignored"
+#~ msgstr "Ungültiger Zeitablauf angegeben, Standard wird benutzt"
+
+#, fuzzy
+#~ msgid "The popup '%Q' is not defined"
+#~ msgstr "Das Popup '%s' ist nicht definiert"
+
+#, fuzzy
+#~ msgid "No target channel specified and the current window is not a channel"
+#~ msgstr "Das angegebene Fenster ist kein Kanal"
+
+#, fuzzy
+#~ msgid "No catalogue %Q for the current language found"
+#~ msgstr "Kein Katalog %s für die aktuelle Sprache gefunden"
+
+#, fuzzy
+#~ msgid "The catalogue %Q was not loaded"
+#~ msgstr "Katalog %s wurde nicht geladen"
+
+#, fuzzy
+#~ msgid "Invalid IRC url (%Q)"
+#~ msgstr "Ungültige IRC-URL (%s)"
+
+#, fuzzy
+#~ msgid "The commandline for this url type seems to be broken (%Q)"
+#~ msgstr "Die Kommandozeile für diesen URL-Typ schein fehlerhaft (%s)"
+
+#, fuzzy
+#~ msgid "No commandline specified for this type of url (%Q)"
+#~ msgstr "Keine Kommandozeile für diesen Typ der URL (%s) angegeben"
+
+#~ msgid ""
+#~ "Option setting error: Unknown option or invalid value for option type"
+#~ msgstr ""
+#~ "Setzen der Option fehlgeschlagen: unbekannte Option oder ungültiger Wert "
+#~ "für Optionstyp"
+
+#~ msgid "Choose a file to parse"
+#~ msgstr "Eine Datei zum Parsen auswählen"
+
+#~ msgid "Failed to load the file '%Q' for parsing"
+#~ msgstr "Öffnen der Datei '%Q' zum Parsen fehlgeschlagen"
+
+#~ msgid "Missing channel list"
+#~ msgstr "Keine Kanalliste"
+
+#~ msgid "You don't appear to be on channel %s"
+#~ msgstr "Sie scheinen nicht in Kanal %s zu sein"
+
+#~ msgid "Popup %Q is not defined"
+#~ msgstr "Popup %Q ist nicht definiert"
+
+#~ msgid "A popup menu cannot be popped up twice"
+#~ msgstr "Aufklappmenü kann nicht doppelt aufgerufen werden"
+
+#~ msgid "Invalid syntax for screen coordinates, using cursor position"
+#~ msgstr ""
+#~ "Ungültige Syntax für Bildschirmkoordinaten, Cursorposition wird benutzt"
+
+#~ msgid "Empty target specified"
+#~ msgstr "Leeres Ziel angegeben"
+
+#~ msgid "[RAW]: %Q"
+#~ msgstr "[RAW]: %Q"
+
+#~ msgid "Window with id %Q not found: no rebinding performed"
+#~ msgstr "Fenster mit ID %Q nicht gefunden: kein Neubinden ausgeführt"
+
+#, fuzzy
+#~ msgid "Failed to execute command '%Q'"
+#~ msgstr "Ausführen des Kommandos '%s' fehlgeschlagen"
+
+#~ msgid ""
+#~ "The argument of the array count '#' operator didn't evaluate to an array: "
+#~ "automatic conversion from type '%Q' supplied"
+#~ msgstr ""
+#~ "Das Argument für des '#'-Feldzähleroperators kann nicht zu einem Feld "
+#~ "ausgewertet werden: es wird automatische Konvertierung von %Q geliefert"
+
+#~ msgid "Call to undefined function '%Q'"
+#~ msgstr "Aufruf von nicht definierter Funktion '%Q'"
+
+#~ msgid "Error in inner alias function call '%Q', called from this context"
+#~ msgstr ""
+#~ "Fehler in innerem Aliasfunktionsaufruf '%Q', aufgerufen von diesem Kontext"
+
+#~ msgid "Stray dot ('.') character or invalid following module command name"
+#~ msgstr ""
+#~ "Vereinzelter Punkt ('.') oder ungültiger nachfolgender Modulkommandoname"
+
+#~ msgid "Syntax error: malformed module command identifier"
+#~ msgstr "Syntaxfehler: Fehlerhafter Kommandozeilenbezeichner"
+
+#, fuzzy
+#~ msgid "Stray '::' sequence or invalid following alias name"
+#~ msgstr ""
+#~ "Vereinzelter Punkt ('.') oder ungültiger nachfolgender Modulkommandoname"
+
+#, fuzzy
+#~ msgid "Syntax error: malformed alias identifier"
+#~ msgstr "Syntaxfehler: Fehlerhafter Kommandozeilenbezeichner"
+
+#, fuzzy
+#~ msgid "Syntax error: malformed (alias?) command identifier"
+#~ msgstr "Syntaxfehler: Fehlerhafter Kommandozeilenbezeichner"
+
+#~ msgid "Unknown callback command \"%Q\""
+#~ msgstr "Unbekanntes Rückrufkommando \"%Q\""
+
+#~ msgid ""
+#~ "Timer name omitted but there is not current timer (this is not a timer "
+#~ "callback)"
+#~ msgstr ""
+#~ "Zeitgebername fehlt, aber es ist nicht der aktuelle Zeitgeber (ist kein "
+#~ "Zeitgeberrückruf)"
+
+#~ msgid "Can't kill the timer '%Q' since it is not running"
+#~ msgstr "Zeitgeber '%Q' kann nicht beendet werden, da er nicht läuft"
+
+#~ msgid "Hash reference assert failed: the variable evaluated to type '%Q'"
+#~ msgstr ""
+#~ "Hashreferenzzusicherung fehlgeschlagen: Die Variable wurde zu Typ '%Q' "
+#~ "ausgewertet"
+
+#~ msgid "DNS Lookup result for query \"%s\""
+#~ msgstr "DNS-Ergebnis für Anfrage \"%s\""
+
+#~ msgid "Error: %Q"
+#~ msgstr "Fehler: %Q"
+
+#~ msgid "Hostname %d: %s"
+#~ msgstr "Hostname %d: %s"
+
+#~ msgid "IP address %d: %s"
+#~ msgstr "IP-Adresse %d: %s"
+
+#~ msgid "Operand of unary operator didn't evaluate to a number"
+#~ msgstr ""
+#~ "Operand des Stufenoperators kann nicht zu einer Zahl ausgewertet werden"
+
+#~ msgid "Left operand didn't evaluate to a number"
+#~ msgstr "Linker Operand kann nicht zu einer Zahl ausgewertet werden"
+
+#~ msgid "Right operand didn't evaluate to a number"
+#~ msgstr "Rechter Operand kann nicht zu einer Zahl ausgewertet werden"
+
+#~ msgid "Division by zero"
+#~ msgstr "Division durch Null"
+
+#~ msgid "Hash key evaluated to empty string: fix the script"
+#~ msgstr ""
+#~ "Hashschlüssel zu leerer Zeichenkette ausgewertet: Bitte Skript reparieren"
+
+#~ msgid ""
+#~ "The argument of the {} subscript didn't evaluate to a hash: automatic "
+#~ "conversion from type '%Q' supplied"
+#~ msgstr ""
+#~ "Das Argument des {}-Unterskriptes kann nicht zu einem Hash ausgewertet "
+#~ "werden: es wird automatische Konvertierung von %Q geliefert"
+
+#~ msgid ""
+#~ "The argument of the {} subscript didn't evaluate to a hash automatic "
+#~ "conversion from %Q supplied"
+#~ msgstr ""
+#~ "Das Argument des {}-Unterskriptes kann nicht zu einem Hash ausgewertet "
+#~ "werden: es wird automatische Konvertierung von %Q geliefert"
+
+#~ msgid "Module function call failed: can't load the module '%Q'"
+#~ msgstr ""
+#~ "Modulfunktionsaufruf fehlgeschlagen: Modul '%Q' kann nicht geladen werden"
+
+#~ msgid ""
+#~ "Module function call failed: the module '%Q' doesn't export a function "
+#~ "named '%Q'"
+#~ msgstr ""
+#~ "Modulfunktionsaufruf fehlgeschlagen: Modul '%Q' exportiert keine Funktion "
+#~ "mit Namen '%Q'"
+
+#~ msgid "This window has no associated IRC context and is not a DCC chat"
+#~ msgstr ""
+#~ "Dieses Fenster hat keinen zugeordneten IRC-Kontext und ist kein DCC-Chat"
+
+#, fuzzy
+#~ msgid "Class \"%Q\" is not defined"
+#~ msgstr "Klasse %s ist nicht definiert"
+
+#, fuzzy
+#~ msgid "The specified parent object does not exist"
+#~ msgstr "Die angegebene Werkzeugleiste existiert nicht"
+
+#, fuzzy
+#~ msgid "There is no option named '%Q'"
+#~ msgstr "Keine Option mit Namen '%s'"
+
+#~ msgid "No such IRC context (%u)"
+#~ msgstr "Kein solcher IRC-Kontext (%u)"
+
+#, fuzzy
+#~ msgid "This window is not associated to an IRC context"
+#~ msgstr "Dieses Fenster hat keinen zugeordneten IRC-Kontext"
+
+#~ msgid "Event handler %Q is broken: disabling"
+#~ msgstr "Ereignishandler %Q ist fehlerhaft: wird deaktiviert"
+
+#~ msgid "line %d, near character %d"
+#~ msgstr "Zeile %d, bei Zeichen %d"
+
+#~ msgid "beginning of input"
+#~ msgstr "Beginn der Eingabe"
+
+#~ msgid ""
+#~ "Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %"
+#~ "s\" for the command syntax"
+#~ msgstr ""
+#~ "Zeichen '%q' (Unicode 0x%x) gefunden, aber '%c' wurde erwartet: für "
+#~ "Kommandosyntax \"/help %s\" benutzen"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found end of input where character '%c' was expected: see \"/help %s\" "
+#~ "for the command syntax"
+#~ msgstr ""
+#~ "Zeichen '%q' (Unicode 0x%x) gefunden, aber '%c' wurde erwartet: für "
+#~ "Kommandosyntax \"/help %s\" benutzen"
+
+#~ msgid "Empty script"
+#~ msgstr "Leeres Skript"
+
+#~ msgid ""
+#~ "Syntax error after '%' variable prefix. If you want to use a plain '%' in "
+#~ "the code you need to escape it"
+#~ msgstr ""
+#~ "Syntaxfehler nach '%'-Prefix. Wenn ein einfaches '%' im Code benutzt "
+#~ "werden soll, muss dieses entwertet werden"
+
+#, fuzzy
+#~ msgid "Objects have no extended scope variables"
+#~ msgstr ""
+#~ "Keine erweiterten Gültigkeitsbereichsvariablen in diesem "
+#~ "Gültigkeitsbereich"
+
+#~ msgid ""
+#~ "Declaring global variables with an uppercase letter is deprecated. Global "
+#~ "variables should be declared with 'global'"
+#~ msgstr ""
+#~ "Das Deklarieren von globalen Variablen mit einem Grossbuchstaben ist "
+#~ "veraltet. Globale Variablen sollten mit 'global' deklariert werden."
+
+#~ msgid "Found character '%q' (unicode %x) where an instruction was expected"
+#~ msgstr "Zeichen '%q' (Unicode %x) gefunden, aber Anweisung wurde erwartet"
+
+#~ msgid "Unterminated instruction block"
+#~ msgstr "Nicht abgeschlossener Anweisungsblock"
+
+#~ msgid ""
+#~ "Unexpected end of script in instruction block (missing closing brace)"
+#~ msgstr ""
+#~ "Unerwartetes Ende des Skriptes in Anweisungsblock (schliessende Klammer "
+#~ "fehlt)"
+
+#, fuzzy
+#~ msgid ""
+#~ "The dash after a command should be followed by a letter (switch), by a "
+#~ "digit (negative number) or be escaped"
+#~ msgstr ""
+#~ "Der Bindestrich nach einem Kommando sollte entweder entwertet werden oder "
+#~ "danach ein Buchstabe bzw. Zahl folgen (Schalter)"
+
+#~ msgid "Unexpected character '%q' (unicode %x) after a switch dash"
+#~ msgstr ""
+#~ "Unerwartetes Zeichen '%q' (Unicode %x) nach switch-Bindestrich gefunden"
+
+#~ msgid "Unexpected end of script after a switch dash"
+#~ msgstr "Unerwartetes Ende des Skripts nach einem switch-Bindestrich"
+
+#~ msgid ""
+#~ "The above problem might be related to the switch dash and the following "
+#~ "equal sign"
+#~ msgstr ""
+#~ "Das obige Problem kann mit dem Schalterbindestrich und dem folgenden "
+#~ "Gleichheitszeichen zusammenhängen"
+
+#~ msgid "Unexpected end of script in parameter list"
+#~ msgstr "Unerwartetes Ende des Skriptes in Parameterliste"
+
+#~ msgid "Unexpected end of line in parameter list"
+#~ msgstr "Unerwartetes Ende der Zeile in Parameterliste"
+
+#, fuzzy
+#~ msgid "Skipping nested terminator character %q"
+#~ msgstr "Zeile %d, bei Zeichen %d"
+
+#~ msgid "Stray backslash at the end of the script"
+#~ msgstr "Vereinzelter umgekehrter Schrägstrich am Ende des Skriptes"
+
+#~ msgid "Unterminated hash key"
+#~ msgstr "Nicht abgeschlossener Hashschlüssel"
+
+#~ msgid "Unexpected end of script in hash key (missing '}' character ?)"
+#~ msgstr ""
+#~ "Unerwartetes Ende des Skripts in Hashschlüssel (fehlendes '}' Zeichen?)"
+
+#~ msgid ""
+#~ "Unexpected end of line in hash key (missing '}' character or unescaped "
+#~ "newline)"
+#~ msgstr ""
+#~ "Unerwartetes Ende der Zeile im Hash-Schlüssel (fehlendes '}'-Zeichnen "
+#~ "oder nicht entwertetes Zeilenende)"
+
+#~ msgid "Unterminated string constant"
+#~ msgstr "Nicht terminierte Zeichenkettenkonstante"
+
+#~ msgid "Unexpected end of script in string constant (missing \" character ?)"
+#~ msgstr ""
+#~ "Unerwartetes Ende des Skripts in Zeichenkettenkonstante (fehlendes \" "
+#~ "Zeichen?)"
+
+#~ msgid ""
+#~ "Unexpected end of line in string constant (missing \" character or "
+#~ "unescaped newline)"
+#~ msgstr ""
+#~ "Unerwartetes Ende der Zeile in Zeichenkettenkonstante (fehlendes \" "
+#~ "Zeichen oder nicht entwertetes Zeilenende)"
+
+#~ msgid "Unknown binary operator '=%q': did you mean '==' ?"
+#~ msgstr "Unbekannter binärer Operator '=%q': ist vieleicht '==' gemeint?"
+
+#~ msgid "Unknown binary operator '%q'"
+#~ msgstr "Unbekannter binärer Operator '%q'"
+
+#~ msgid "Unexpected end of script in expression"
+#~ msgstr "Unerwartetes Ende des Skriptes in Ausdruck"
+
+#~ msgid ""
+#~ "Unexpected character %q (unicode %h) in expression. If it meant to be a "
+#~ "string use the quotes."
+#~ msgstr ""
+#~ "Unerwartetes Zeichen '%q' (Unicode %h) in Ausdruck. Wenn eine "
+#~ "Zeichenkette gemeint ist, Anführungstriche benutzen."
+
+#~ msgid "Internal error: pure virtual evaluateReadOnly called"
+#~ msgstr "Interner Fehler: virtuelles evaluateReadOnly aufgerufen"
+
+#~ msgid ""
+#~ "Internal error: trying to evaluate as read-write a read-only data location"
+#~ msgstr ""
+#~ "Interner Fehler: es wird versucht, ein nur lesbaren Datenort als als "
+#~ "schreibaren Datenort auszuwerten"
+
+#, fuzzy
+#~ msgid "Internal error: pure virtual evaluateReadOnlyInObjectScope called"
+#~ msgstr "Interner Fehler: virtuelles evaluateReadOnly aufgerufen"
+
+#~ msgid "Error triggered from process callback handler: killing process"
+#~ msgstr "Fehler von Zeitgeber-Rückrufhandler ausgelöst: Prozess wird getötet"
+
+#~ msgid "This command can be used only in windows bound to an IRC context"
+#~ msgstr ""
+#~ "Dieses Kommando kann nur in Fenstern, die an einen IRC-Kontext gebunden "
+#~ "sind, benutzt werden"
+
+#~ msgid "You're not connected to an IRC server"
+#~ msgstr "Nicht mit einen IRC-Server verbunden"
+
+#~ msgid "Missing parameter"
+#~ msgstr "Parameter fehlt"
+
+#, fuzzy
+#~ msgid "Failed to send an unknown command as /raw"
+#~ msgstr "Unbekannte Kommandos als /RAW senden"
+
+#~ msgid "Call to undefined command '%Q'"
+#~ msgstr "Aufruf des nicht definierten Kommandos '%Q'"
+
+#~ msgid "Error in inner alias command call '%Q', called from this context"
+#~ msgstr ""
+#~ "Fehler in innerem Aliaskommandoaufruf '%Q', aufgerufen von diesem Kontext"
+
+#, fuzzy
+#~ msgid "Missing class name"
+#~ msgstr "Aliasname fehlt"
+
+#, fuzzy
+#~ msgid "Can't override the builtin class \"%Q\""
+#~ msgstr "Eingebaute Klasse kann nicht getötet werden"
+
+#~ msgid "Window with ID '%s' not found, returning empty string"
+#~ msgstr ""
+#~ "Fenster mit ID '%s' nicht gefunden, leerer String wird zurückgeliefert"
+
+#~ msgid "The specified window is not a channel"
+#~ msgstr "Das angegebene Fenster ist kein Kanal"
+
+#, fuzzy
+#~ msgid "Module function call failed: can't load the module 'str'"
+#~ msgstr ""
+#~ "Modulfunktionsaufruf fehlgeschlagen: Modul '%Q' kann nicht geladen werden"
+
+#, fuzzy
+#~ msgid ""
+#~ "Module function call failed: the module 'str' doesn't export a function "
+#~ "named 'split'"
+#~ msgstr ""
+#~ "Modulfunktionsaufruf fehlgeschlagen: Modul '%Q' exportiert keine Funktion "
+#~ "mit Namen '%Q'"
+
+#~ msgid "The $sw() function can be used only in aliases"
+#~ msgstr "Die $sw()-Funktion kann nur in Aliassen benutzt werden"
+
+#~ msgid "Window with caption %Q not found"
+#~ msgstr "Fenster mit Titel %Q nicht gefunden"
+
+#~ msgid "Array reference assert failed: the variable evaluated to type '%Q'"
+#~ msgstr ""
+#~ "Feldreferenzzusicherung fehlgeschlagen: Die Variable wurde zu Typ '%Q' "
+#~ "ausgewertet"
+
+#~ msgid "Module command call failed: can't load the module '%Q'"
+#~ msgstr ""
+#~ "Modulkommandoaufruf fehlgeschlagen: Modul '%Q' kann nicht geladen werden"
+
+#~ msgid ""
+#~ "Module command call failed: the module '%Q' doesn't export a callback "
+#~ "command named '%Q'"
+#~ msgstr ""
+#~ "Modulkommandoaufruf fehlgeschlagen: Modul '%Q' exportiert kein "
+#~ "Rückrufkommando mit Namen '%Q'"
+
+#~ msgid "Unexpected end of script after '$' function call prefix"
+#~ msgstr "Unerwartetes Ende des Skripts nach '$'-Funktionsaufrufpräfix"
+
+#~ msgid "Unexpected character %q (unicode %x) after '$' function call prefix"
+#~ msgstr ""
+#~ "Unerwartetes Zeichen '%q' (Unicode %x) nach '$'-Funktionsaufrufpräfix "
+#~ "gefunden"
+
+#~ msgid ""
+#~ "Syntax error after '$' function call prefix. If you want to use a plain "
+#~ "'$' in the code you need to escape it"
+#~ msgstr ""
+#~ "Syntaxfehler nach der '$'-Funktionsaufrufpräfix. Wenn ein einfaches '$' "
+#~ "im Code benutzt werden soll, muss es entwertet werden"
+
+#~ msgid "Invalid expression evaluation in object scope"
+#~ msgstr "Ungültiger Ausdrucksauswertung im Objektbereich"
+
+#~ msgid "Invalid command evaluation in object scope"
+#~ msgstr "Ungültige Kommandoauswertung im Objektbereich"
+
+#~ msgid "Empty instruction block for command evaluation"
+#~ msgstr "Leerer Anweisungsblock für Kommandoauswertung"
+
+#~ msgid ""
+#~ "Parameter identifiers are forbidden in object scope (after the '->' "
+#~ "operator)"
+#~ msgstr ""
+#~ "Parameterbezeichner sind im Objektgültigkeitsbereich verboten (nach dem '-"
+#~ ">'-Operator)"
+
+#~ msgid ""
+#~ "Ending index of a multiple parameter identifier is lower or equal to the "
+#~ "starting index. This will evaluate to a single parameter identifier."
+#~ msgstr ""
+#~ "Endindex eines Bezeichners mit mehreren Parametern ist niedriger oder "
+#~ "gleich dem Startindex. Dies wird zu einem zu einem Bezeichner mit einem "
+#~ "Parameter ausgewertet."
+
+#, fuzzy
+#~ msgid "Syntax error: malformed alias function call identifier"
+#~ msgstr "Syntaxfehler: Fehlerhafter Kommandozeilenbezeichner"
+
+#, fuzzy
+#~ msgid "Syntax error: malformed (alias?) function call identifier"
+#~ msgstr "Syntaxfehler: Fehlerhafter Kommandozeilenbezeichner"
+
+#~ msgid "Array index didn't evaluate to an integer"
+#~ msgstr "Arrayindex kann nicht zu einer Zahl ausgewertet werden"
+
+#~ msgid ""
+#~ "Array index evaluated to a negative integer (non negative integer "
+#~ "expected)"
+#~ msgstr ""
+#~ "Arrayindex zu einer negativem Integer ausgewertet (nicht negativer "
+#~ "Integer erwartet)"
+
+#~ msgid ""
+#~ "The argument of the [] subscript didn't evaluate to an array: automatic "
+#~ "conversion from %Q supplied"
+#~ msgstr ""
+#~ "Das Argument für das []-Unterskript kann nicht zu einem Feld ausgewertet "
+#~ "werden: es wird automatische Konvertierung von %Q geliefert"
+
+#~ msgid ""
+#~ "The argument of the [] subscript didn't evaluate to an array: automatic "
+#~ "conversion from type '%Q' supplied"
+#~ msgstr ""
+#~ "Das Argument des []-Unterskriptes kann nicht zu einem Feld ausgewertet "
+#~ "werden: es wird automatische Konvertierung von %Q geliefert"
+
+#~ msgid ""
+#~ "The argument of the hash count '#' operator didn't evaluate to a hash: "
+#~ "automatic conversion from type '%Q' supplied"
+#~ msgstr ""
+#~ "Das Argument des '#'-Feldzähleroperators kann nicht zu einem Hash "
+#~ "ausgewertet werden: es wird automatische Konvertierung von %Q geliefert"
+
+#~ msgid "This is not a channel"
+#~ msgstr "Dies ist kein Kanal"
+
+#~ msgid "Unterminated c-style multiline comment"
+#~ msgstr "Nicht terminierter mehrzeiliger C-Stil-Kommentar gefunden"
+
+#~ msgid "Unexpected end of script in multiline comment"
+#~ msgstr "Unerwartetes Ende des Skripts in mehrzeiligem Kommentar"
+
+#~ msgid ""
+#~ "Unexpected character '%q' (unicode %x) after a slash (it is a typo or a "
+#~ "malformed comment begin ?)"
+#~ msgstr ""
+#~ "Unerwartetes Zeichen '%q' (Unicode %x) nach Schrägstrich gefunden "
+#~ "(Schreibfehler oder fehlerhafter Kommentar?)"
+
+#~ msgid ""
+#~ "The popup '%s' is actually locked: 'self-modifications' are not allowed"
+#~ msgstr ""
+#~ "Aufklappmenü '%s' ist aktuell gesperrt: 'Selbstmodifikationen' sind nicht "
+#~ "erlaubt"
+
+#~ msgid "The target variable didn't evaluate to an integer or real value"
+#~ msgstr ""
+#~ "Zielvariable kann nicht zu einem Integer oder realem Wert ausgewertet "
+#~ "werden"
+
+#~ msgid "The right side of operator '&=' didn't evaluate to an integer"
+#~ msgstr ""
+#~ "Rechte Seite des '&='-Operators kann nicht zu einem Integer ausgewertet "
+#~ "werden"
+
+#~ msgid "The left side of operator '&=' didn't evaluate to an integer"
+#~ msgstr ""
+#~ "Linke Seite des '&='-Operators kann nicht zu einem Integer ausgewertet "
+#~ "werden"
+
+#~ msgid "The right side of operator '/=' didn't evaluate to a number"
+#~ msgstr ""
+#~ "Rechte Seite des '/='-Operators kann nicht zu einer Zahl ausgewertet "
+#~ "werden"
+
+#~ msgid "The left side of operator '/=' didn't evaluate to a number"
+#~ msgstr ""
+#~ "Linke Seite des '/='-Operators kann nicht zu einer Zahl ausgewertet werden"
+
+#~ msgid "The right side of operator '%=' didn't evaluate to a number"
+#~ msgstr ""
+#~ "Rechte Seite des '%='-Operators kann nicht zu einer Zahl ausgewertet "
+#~ "werden"
+
+#~ msgid "The left side of operator '%=' didn't evaluate to a number"
+#~ msgstr ""
+#~ "Linke Seite des '%='-Operators kann nicht zu einer Zahl ausgewertet werden"
+
+#~ msgid "The right side of operator '*=' didn't evaluate to a number"
+#~ msgstr ""
+#~ "Rechte Seite des '*='-Operators kann nicht zu einer Zahl ausgewertet "
+#~ "werden"
+
+#~ msgid "The left side of operator '*=' didn't evaluate to a number"
+#~ msgstr ""
+#~ "Linke Seite des '*='-Operators kann nicht zu einer Zahl ausgewertet werden"
+
+#~ msgid "The right side of operator '|=' didn't evaluate to an integer"
+#~ msgstr ""
+#~ "Rechte Seite des '|='-Operators kann nicht zu einem Integer ausgewertet "
+#~ "werden"
+
+#~ msgid "The left side of operator '|=' didn't evaluate to an integer"
+#~ msgstr ""
+#~ "Linke Seite des '|='-Operators kann nicht zu einem Integer ausgewertet "
+#~ "werden"
+
+#~ msgid "The right side of operator '<<=' didn't evaluate to an integer"
+#~ msgstr ""
+#~ "Rechte Seite des '<<='-Operators kann nicht zu einem Integer ausgewertet "
+#~ "werden"
+
+#~ msgid "The left side of operator '<<=' didn't evaluate to an integer"
+#~ msgstr ""
+#~ "Linke Seite des '<<='-Operators kann nicht zu einem Integer ausgewertet "
+#~ "werden"
+
+#~ msgid "The right side of operator '>>=' didn't evaluate to an integer"
+#~ msgstr ""
+#~ "Rechte Seite des '>>='-Operators kann nicht zu einem Integer ausgewertet "
+#~ "werden"
+
+#~ msgid "The left side of operator '>>=' didn't evaluate to an integer"
+#~ msgstr ""
+#~ "Linke Seite des '>>='-Operators kann nicht zu einem Integer ausgewertet "
+#~ "werden"
+
+#~ msgid "The right side of operator '-=' didn't evaluate to a number"
+#~ msgstr ""
+#~ "Rechte Seite des '-='-Operators kann nicht zu einer Zahl ausgewertet "
+#~ "werden"
+
+#~ msgid "The left side of operator '-=' didn't evaluate to a number"
+#~ msgstr ""
+#~ "Linke Seite des '-='-Operators kann nicht zu einer Zahl ausgewertet werden"
+
+#~ msgid "The right side of operator '+=' didn't evaluate to a number"
+#~ msgstr ""
+#~ "Rechte Seite des '+='-Operators kann nicht zu einer Zahl ausgewertet "
+#~ "werden"
+
+#~ msgid "The left side of operator '+=' didn't evaluate to a number"
+#~ msgstr ""
+#~ "Linke Seite des '+='-Operators kann nicht zu einer Zahl ausgewertet werden"
+
+#~ msgid "The right side of operator '^=' didn't evaluate to an integer"
+#~ msgstr ""
+#~ "Rechte Seite des '^='-Operators kann nicht zu einem Integer ausgewertet "
+#~ "werden"
+
+#~ msgid "The left side of operator '^=' didn't evaluate to an integer"
+#~ msgstr ""
+#~ "Linke Seite des '^='-Operators kann nicht zu einem Integer ausgewertet "
+#~ "werden"
+
+#~ msgid "Window with ID '%s' not found"
+#~ msgstr "Fenster mit ID '%s' nicht gefunden"
+
+#~ msgid "Missing alias name"
+#~ msgstr "Aliasname fehlt"
+
+#~ msgid "The alias %Q is not existing"
+#~ msgstr "Alias %Q existiert nicht"
+
+#~ msgid "The specified window has no button containers"
+#~ msgstr "Das angegebene Fenster hat keine Knopfcontainer"
+
+#, fuzzy
+#~ msgid "Window button '%Q' not found"
+#~ msgstr "Fensterknopf '%s' nicht gefunden"
+
+#, fuzzy
+#~ msgid "Can't find the icon '%Q'"
+#~ msgstr "Symbol '%s' kann nicht gefunden werden"
+
+#, fuzzy
+#~ msgid "No such event (%Q)"
+#~ msgstr "Kein solches Ereignis (%s)"
+
+#, fuzzy
+#~ msgid "No handler '%Q' for raw numeric event '%d'"
+#~ msgstr "Kein Handler '%s' für numerisches RAW-Ereignis '%d'"
+
+#, fuzzy
+#~ msgid "No handler '%Q' for event '%Q'"
+#~ msgstr "Kein Handler '%s' für Ereignis '%s'"
+
+#~ msgid "The specified ping time is invalid: assuming zero (no ping)"
+#~ msgstr ""
+#~ "Angegebene Pingzeit ist ungültig: es wird Null angenommen (kein Ping)"
+
+#~ msgid "The specified maximum run time is invalid: assuming zero (infinite)"
+#~ msgstr ""
+#~ "Angegebene Maximallaufzeit ist ungültig: es wird Null angenommen "
+#~ "(unendlich)"
+
+#~ msgid "Failed to start the process"
+#~ msgstr "Start des Prozesses fehlgeschlagen"
+
+#, fuzzy
+#~ msgid "The specified object does not exist"
+#~ msgstr "Die angegebene Werkzeugleiste existiert nicht"
+
+#~ msgid "Missing timer name"
+#~ msgstr "Fehlender Zeitgebername"
+
+#~ msgid "Missing timeout delay"
+#~ msgstr "Zeitablaufsverzögerung fehlt"
+
+#~ msgid "The timeout delay didn't evaluate to an integer"
+#~ msgstr ""
+#~ "Zeitablaufverzögerung kann nicht zu einem Integer ausgewertet werden"
+
+#~ msgid "Unable to add the timer: insufficient system resources"
+#~ msgstr ""
+#~ "Zeitgeber kann nicht hinzugefügt werden: ungenügende Systemressourcen"
+
+#, fuzzy
+#~ msgid ""
+#~ "The left side of the scope operator didn't evaluate as an object reference"
+#~ msgstr ""
+#~ "Linke Seite des '&='-Operators kann nicht zu einem Integer ausgewertet "
+#~ "werden"
+
+#, fuzzy
+#~ msgid ""
+#~ "The left side of the scope operator evaluated to a null object reference"
+#~ msgstr ""
+#~ "Linke Seite des '/='-Operators kann nicht zu einer Zahl ausgewertet werden"
+
+#, fuzzy
+#~ msgid ""
+#~ "Broken slot '%Q' in target object '%Q::%Q' while emitting signal '%Q' "
+#~ "from object '%Q::%Q': disconnecting"
+#~ msgstr ""
+#~ "Fehlerhafter Slot '%s' in Zielobjekt '%s' beim Senden des Signals '%s' "
+#~ "von Objekt '%s': trenne"
+
+#, fuzzy
+#~ msgid ""
+#~ "Slot target object destroyed while emitting signal '%Q' from object '%Q::%"
+#~ "Q'"
+#~ msgstr ""
+#~ "Fehlerhafter Slot '%s' in Zielobjekt '%s' beim Senden des Signals '%s' "
+#~ "von Objekt '%s': trenne"
+
+#, fuzzy
+#~ msgid "Listing Qt properties for object named \"%Q\" of KVS class %Q"
+#~ msgstr "%c Auflistung der Qt-Eigenschaften fürWidgetobjekt %s (%s)"
+
+#, fuzzy
+#~ msgid "Properties for Qt class %s"
+#~ msgstr "Eigenschaftsklasse: %c%s%c"
+
+#, fuzzy
+#~ msgid "Property: %c%Q%c, type %s"
+#~ msgstr "Eigenschaft: %c%s%c, Typ: %s"
+
+#, fuzzy
+#~ msgid "Can't find the requested image"
+#~ msgstr "Angeforderte Adresse kann nicht zuwiesen werden"
+
+#~ msgid "Found character '%q' (unicode %x) where a slash '/' was expected"
+#~ msgstr ""
+#~ "Zeichen '%q' (Unicode %x) gefunden, aber ein Schrägstrich '/' wurde "
+#~ "erwartet"
+
+#~ msgid ""
+#~ "Unexpected end of command in binding operation, at least two slashes are "
+#~ "missing"
+#~ msgstr ""
+#~ "Unerwartetes Ende des Kommandos in Bindenoperation, zwei Schrägstriche "
+#~ "fehlen"
+
+#~ msgid ""
+#~ "Unexpected end of command in binding operation, at least one slash is "
+#~ "missing"
+#~ msgstr ""
+#~ "Unerwartetes Ende des Kommandos in Bindenoperation, ein Schrägstrich fehlt"
+
+#~ msgid "Unknown binding operation '%Q'"
+#~ msgstr "Unbekannte Bindenoperation '%Q'"
+
+#~ msgid "Missing right side operand for the binding operator '=~'"
+#~ msgstr "Rechter Operand des '=~'-Bindenoperators fehlt"
+
+#~ msgid "Trailing garbage ignored after operator '++'"
+#~ msgstr "Nachfolgender Müll nach dem '++'-Operator wird ignoriert"
+
+#~ msgid "Missing right operand for operator '+='"
+#~ msgstr "Rechter Operand bei '+='-Operator fehlt"
+
+#~ msgid "Trailing garbage ignored after operator '--'"
+#~ msgstr "Nachfolgender Müll nach dem '--'-Operator wird ignoriert"
+
+#~ msgid "Missing right operand for operator '-='"
+#~ msgstr "Rechter Operand des '-='-Operators fehlt"
+
+#~ msgid "Missing right operand for operator '<<='"
+#~ msgstr "Rechter Operand des '<<='-Operators fehlt"
+
+#~ msgid "Missing right operand for operator '<<'"
+#~ msgstr "Rechter Operand des '<<'-Operators fehlt"
+
+#~ msgid "Missing right operand for operator '<,'"
+#~ msgstr "Rechter Operand des '<,'-Operators fehlt"
+
+#~ msgid "Missing right operand for operator '>>='"
+#~ msgstr "Rechter Operand des '>>='-Operators fehlt"
+
+#~ msgid "Missing right operand for operator '.='"
+#~ msgstr "Rechter Operand des '.='-Operators fehlt"
+
+#~ msgid "Missing right operand for operator '"
+#~ msgstr "Rechter Operand folgendes Operators fehlt: '"
+
+#~ msgid "='"
+#~ msgstr "='"
+
+#~ msgid "Unknown operator"
+#~ msgstr "Unbekannter Operator"
+
+#~ msgid "Unexpected (and senseless) read-only data evaluation"
+#~ msgstr "Unerwartetete (und sinnlose) nur lesbare Datenauswertung"
+
+#~ msgid "Syntax error: confused by earlier errors: bailing out"
+#~ msgstr "Syntaxfehler: Konfus von früheren Fehlern: Aussprung"
+
+#~ msgid ""
+#~ "Unexpected end of script after a variable reference: expected operator"
+#~ msgstr ""
+#~ "Unerwartetes Ende des Skripts nach einer Variablenreferenz: Operator "
+#~ "erwartet"
+
+#~ msgid ""
+#~ "Unexpected character '%q' (unicode %x) after a void function call: end of "
+#~ "instruction expected"
+#~ msgstr ""
+#~ "Zeichen '%q' (Unicode %x) nach einem void-Funktionsaufruf gefunden, Ende "
+#~ "der Anweisung erwartet"
+
+#~ msgid "Unexpected character '%q' (unicode %x)"
+#~ msgstr "Unterwartetes Zeichen '%q' (Unicode %x)"
+
+#, fuzzy
+#~ msgid "Invalid pitch value: using default"
+#~ msgstr "Ungültiger Abstand (%s): benutze Standard"
+
+#, fuzzy
+#~ msgid "Invalid duration value: using default"
+#~ msgstr "Ungültige Dauer (%s): benutze Standard"
+
+#, fuzzy
+#~ msgid "No button with type %Q named %Q"
+#~ msgstr "Kein Knopf mit Typ %s mit Namen %s"
+
+#, fuzzy
+#~ msgid "Can't delete a null object reference"
+#~ msgstr "Tabobjekt kann nicht gefunden werden "
+
+#, fuzzy
+#~ msgid "Can't delete an inexisting object"
+#~ msgstr "Nicht-Widgetobjekt kann nicht gesetzt werden"
+
+#, fuzzy
+#~ msgid "Inexisting popup \"%Q\""
+#~ msgstr "Nicht existierendes Aufklappmenü \"%s\""
+
+#, fuzzy
+#~ msgid "The menu item with id \"%Q\" does not exist in popup \"%Q\""
+#~ msgstr "Das Menüelement \"%s\" existiert nicht in Aufklappmenü \"%s\""
+
+#~ msgid ""
+#~ "The argument of the -w switch did not evaluate to a valid window id: "
+#~ "using default"
+#~ msgstr ""
+#~ "Das Argument des -w-Schalters kann nicht zu einer gültigen Fenster-ID "
+#~ "ausgewertet werden: Standard wird benutzt"
+
+#~ msgid ""
+#~ "The argument of the i switch did not evaluate to a number: using default"
+#~ msgstr ""
+#~ "Das Argument des -i-Schalters kann nicht zu einer gültigen Fenster-ID "
+#~ "ausgewertet werden: Standard wird benutzt"
+
+#, fuzzy
+#~ msgid "Invalid color-set specification, using default"
+#~ msgstr "Ungültige Symbolangabe '%s', benutze Standard"
+
+#~ msgid "Window '%s' not found, using current one"
+#~ msgstr "Fenster '%s' nicht gefunden, benutze akuelles"
+
+#~ msgid "Timer '%Q' has a broken callback handler: killing the timer"
+#~ msgstr ""
+#~ "Zeitgeber '%Q' hat einen fehlerhaften Rückrufhandler: Zeitgeber wird "
+#~ "getötet"
+
+#~ msgid "Invalid data type for parameter \"%s\""
+#~ msgstr "Ungültiger Datentyp für Parameter \"%s\""
+
+#~ msgid "found empty string where type '%s' was expected"
+#~ msgstr "Leere Zeichenkette gefunden, während Typ '%s' erwartet wurde"
+
+#~ msgid "found string value \"%Q\" where type '%s' was expected"
+#~ msgstr "Zeichenkettenwert \"%Q\" gefunden, während Typ '%s' erwartet wurde"
+
+#~ msgid "found type %Q where type '%s' was expected"
+#~ msgstr "Typ %Q gefunden, während Typ '%s' erwartet wurde"
+
+#~ msgid "Missing non-optional parameter \"%s\""
+#~ msgstr "Optionaler Parameter \"%s\" fehlt"
+
+#~ msgid "found empty string while a non empty one was expected"
+#~ msgstr "Leere Zeichenkette gefunden, während eine nichtleere erwartet wurde"
+
+#~ msgid ""
+#~ "found signed integer \"%d\" where type 'unsigned integer' was expected"
+#~ msgstr ""
+#~ "Vorzeichenbehaftete Ganzzahl \"%d\" gefunden, während 'unsigned integer' "
+#~ "erwarted wurde"
+
+#~ msgid "[KVS]%c Warning: %Q"
+#~ msgstr "[KVS]%c Warnung: %Q"
+
+#~ msgid "[KVS]%c Compilation Error: %Q"
+#~ msgstr "[KVS]%c Kompilierungsfehler: %Q"
+
+#~ msgid "[KVS]%c Runtime Error: %Q"
+#~ msgstr "[KVS]%c Laufzeitfehler: %Q"
+
+#, fuzzy
+#~ msgid "[KVS] in script context \"%Q\""
+#~ msgstr "[KVS] in Skriptkontext \"%Q\", %Q"
+
+#~ msgid "[KVS] in script context \"%Q\", %Q"
+#~ msgstr "[KVS] in Skriptkontext \"%Q\", %Q"
+
+#~ msgid "[KVS] Code listing:"
+#~ msgstr "[KVS] Code:"
+
+#, fuzzy
+#~ msgid "[KVS] Window:"
+#~ msgstr "Fenster anzeigen"
+
+#~ msgid "[KVS] Call stack:"
+#~ msgstr "[KVS] Aufrufstack:"
+
+#~ msgid "There are no extended scope variables in this scope"
+#~ msgstr ""
+#~ "Keine erweiterten Gültigkeitsbereichsvariablen in diesem "
+#~ "Gültigkeitsbereich"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of command buffer while looking for the \"perl.end\" "
+#~ "statement"
+#~ msgstr ""
+#~ "Unerwartetes Ende des Skripts während des Suchens nach der schliessenden "
+#~ "')' im for-Kommando"
+
+#~ msgid "Trailing garbage at the end of the break command: ignored"
+#~ msgstr ""
+#~ "Nachfolgender Müll nach dem Ende des break-Kommandos: wird ignoriert"
+
+#~ msgid "The 'unset' command needs a variable list"
+#~ msgstr "Das 'unset'-Kommando benötigt eine Variablenliste"
+
+#~ msgid "Found character %q (unicode %x) where a variable was expected"
+#~ msgstr "Zeichen %q (Unicode %x) gefunden, aber eine Variable wurde erwartet"
+
+#~ msgid "'unset' command used without a variable list"
+#~ msgstr "'unset'-Kommando ohne Variablenliste benutzt"
+
+#~ msgid "The 'global' command needs a variable list"
+#~ msgstr "'global'-Kommando benötigt eine Variablenliste"
+
+#~ msgid ""
+#~ "Found character %q (unicode %x) where an open parenthesis was expected"
+#~ msgstr ""
+#~ "Zeichen '%q' (Unicode %x) gefunden, aber öffnende Klammer wurde erwartet"
+
+#, fuzzy
+#~ msgid "Unexpected end of buffer in class definition"
+#~ msgstr ""
+#~ "Unerwartetes Ende des Puffers in einem switch-Bedingungblock gefunden"
+
+#, fuzzy
+#~ msgid "Found character %q (unicode %x) where a function name was expected"
+#~ msgstr "Zeichen '%q' (Unicode %x) gefunden, aber Anweisung wurde erwartet"
+
+#, fuzzy
+#~ msgid "Unexpected end of buffer in function parameter list reminder"
+#~ msgstr "Unerwartetes Ende der Zeile in Parameterliste"
+
+#, fuzzy
+#~ msgid "The while command needs an expression enclosed in parenthesis"
+#~ msgstr ""
+#~ "while-Kommando benötigt einen Ausdruck, der in Klammern eingeschlossenen "
+#~ "ist"
+
+#~ msgid ""
+#~ "The last while command in the buffer has no conditional instructions: "
+#~ "it's senseless"
+#~ msgstr ""
+#~ "Das letzte while-Kommando im Puffer hat keine Bedingungsanweisungen. Es "
+#~ "ist sinnlos"
+
+#~ msgid ""
+#~ "Unexpected end of script while looking for the instruction block of the "
+#~ "while command"
+#~ msgstr ""
+#~ "Unerwartetes Ende des Skripts während des Suchens des Anweisungsblocks "
+#~ "vom while-Kommando"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of command after the 'do' command block: expected 'while' "
+#~ "keyword"
+#~ msgstr ""
+#~ "Unerwartetes Ende des Kommandos nach dem 'do'-Kommandoblock: 'while'-"
+#~ "Schlüsselwort erwartet"
+
+#~ msgid "Found character %q (unicode %x) where a 'while' keyword was expected"
+#~ msgstr ""
+#~ "Zeichen %q (Unicode %x) gefunden, aber ein 'while'-Schlüsselwort wurde "
+#~ "erwartet"
+
+#, fuzzy
+#~ msgid ""
+#~ "The 'while' block of the 'do' command needs an expression enclosed in "
+#~ "parenthesis"
+#~ msgstr ""
+#~ "Der 'while'-Block des 'do'-Kommando benötigt einen Ausdruck, der in "
+#~ "Klammern eingeschlossenen ist"
+
+#~ msgid "Garbage string after the expression in 'do' command: ignored"
+#~ msgstr "Müllzeichenkette nach dem Ausdruck im 'do'-Kommando: wird ignoriert"
+
+#, fuzzy
+#~ msgid "The 'if' command needs an expression enclosed in parenthesis"
+#~ msgstr ""
+#~ "'if'-Kommando benötigt einen Ausdruck, der in Klammern eingeschlossen ist"
+
+#~ msgid ""
+#~ "The last if command in the buffer has no conditional instructions: it's "
+#~ "senseless"
+#~ msgstr ""
+#~ "Das letzte if-Kommando im Puffer hat keine Bedingungsanweisungen. Es ist "
+#~ "sinnlos"
+
+#~ msgid ""
+#~ "Unexpected end of script while looking for the instruction block of the "
+#~ "if command"
+#~ msgstr ""
+#~ "Unerwartetes Ende des Skripts während des Suchens des Anweisungsblocks "
+#~ "vom if-Kommando"
+
+#~ msgid ""
+#~ "Unexpected end of buffer while looking for the closing ')' in the 'for' "
+#~ "command"
+#~ msgstr ""
+#~ "Unerwartetes Ende des Skripts während des Suchens nach der schliessenden "
+#~ "')' im for-Kommando"
+
+#, fuzzy
+#~ msgid "The 'for' command needs an expression enclosed in parenthesis"
+#~ msgstr ""
+#~ "'for'-Kommando benötigt einen Ausdruck, der in Klammern eingeschlossen ist"
+
+#~ msgid ""
+#~ "Found char %q (unicode %x) while looking for the terminating ')' in 'for' "
+#~ "command"
+#~ msgstr ""
+#~ "Zeichen %q (Unicode %x) gefunden, während des Suchens nach dem "
+#~ "abschliessendem ')' im 'for'-Kommando"
+
+#~ msgid "Empty infinite 'for' loop: fix the script"
+#~ msgstr "Leere Endlos-'for'-Schleife: Skript reparieren"
+
+#, fuzzy
+#~ msgid "The 'foreach' command needs an expression enclosed in parenthesis"
+#~ msgstr ""
+#~ "Das 'foreach'-Kommando benötigt einen Ausdruck, der in Klammern "
+#~ "eingeschlossen ist"
+
+#~ msgid ""
+#~ "The 'foreach' command expects a writeable iteration variable as first "
+#~ "parameter"
+#~ msgstr ""
+#~ "'foreach'-Kommando erwartet eine schreibbare Iterationsvariable als "
+#~ "ersten Parameter"
+
+#~ msgid ""
+#~ "Found character '%q' (unicode %x) where '%' or '$' was expected: see /"
+#~ "help foreach for the command syntax"
+#~ msgstr ""
+#~ "Zeichen '%q (Unicode %x) gefunden, aber entweder '%' oder '$' wurde "
+#~ "erwartet: für Kommandosyntax \"/help %s\" benutzen"
+
+#~ msgid "Unexpected function call as 'foreach' iteration variable"
+#~ msgstr "Unerwarteter Funktionsaufruf als 'foreach'-Iterationsvariable"
+
+#~ msgid "Unexpected read-only variable as 'foreach' iteration variable"
+#~ msgstr "Unerwartete, nur lesbare Variable als 'forearch'-Variable gefunden"
+
+#~ msgid ""
+#~ "Unexpected end of 'foreach' parameters: at least one iteration data "
+#~ "argument must be given"
+#~ msgstr ""
+#~ "Unerwartetes Ende des 'foreach'-Parameters: mindestens ein "
+#~ "Interationsdatenargument muss angegeben werden"
+
+#~ msgid ""
+#~ "The 'foreach' command expects a comma separated list of iteration data "
+#~ "items after the first parameter"
+#~ msgstr ""
+#~ "'foreach'-Kommando erwartet eine Liste von Iterationsdatenelementen, die "
+#~ "durch Komma getrennt sind, nach dem ersten Parameter"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found empty 'foreach' execution block: maybe you need to fix your script ?"
+#~ msgstr "Leerer 'foreach'-Ausführungsblock: Skript reparieren"
+
+#, fuzzy
+#~ msgid "The 'switch' command needs an expression enclosed in parenthesis"
+#~ msgstr ""
+#~ "'switch'-Kommando benötigt einen Ausdruck, der in Klammern eingeschlossen "
+#~ "ist"
+
+#~ msgid "Unexpected end of buffer in switch condition block"
+#~ msgstr ""
+#~ "Unerwartetes Ende des Puffers in einem switch-Bedingungblock gefunden"
+
+#~ msgid ""
+#~ "Found character %q (unicode %x) where a 'case','match','regexp','default' "
+#~ "or 'break' label was expected"
+#~ msgstr ""
+#~ "Zeichen %q (Unicode %x) gefunden, aber 'case', 'match', regexp','default' "
+#~ "oder 'break' wurde erwartet"
+
+#~ msgid ""
+#~ "Found 'break' label where a 'case','match','regexp' or 'default' label "
+#~ "was expected"
+#~ msgstr ""
+#~ "'break' gefunden aber 'case', 'match', 'regexp' oder 'default' wurde "
+#~ "erwartet"
+
+#~ msgid ""
+#~ "Found token '%Q' where a 'case','match','regexp','default' or 'break' "
+#~ "label was expected"
+#~ msgstr ""
+#~ "Token '%Q' gefunden, aber 'case', 'match', 'regexp','default' oder "
+#~ "'break' wurde erwartet"
+
+#~ msgid "Senseless empty switch command: fix the script"
+#~ msgstr "Sinnloses leeres switch-Kommando: Bitte Skript reparieren"
+
+#~ msgid "Unexpected end of buffer in defpopup block"
+#~ msgstr "Unerwartetes Ende des Puffers in einem defpopup-Block gefunden"
+
+#~ msgid ""
+#~ "Found character %q (unicode %x) where a "
+#~ "'prologue','separator','label','popup','item','extpopup' or 'epilogue' "
+#~ "label was expected"
+#~ msgstr ""
+#~ "Zeichen %q (Unicode %x) gefunden, aber 'prologue', 'separator', "
+#~ "'label','item', 'extpopup' oder 'epilogue'-Label wurde erwartet"
+
+#, fuzzy
+#~ msgid "Found empty prologue block: maybe you need to fix the script?"
+#~ msgstr "Sinnloser leerer prologue-Block: Bitte Skript reparieren"
+
+#, fuzzy
+#~ msgid "Found empty epilogue block: maybe you need to fix the script?"
+#~ msgstr "Sinnloser leerer epilogue-Block: Bitte Skript reparieren"
+
+#~ msgid ""
+#~ "Unexpected empty <text> field in label parameters. See /help defpopup for "
+#~ "the syntax"
+#~ msgstr ""
+#~ "Unerwartetes leeres <text>-Feld in label-Parameter: Bitte /help defpopup "
+#~ "für Syntax zu Hilfe nehmen"
+
+#~ msgid ""
+#~ "Unexpected empty <text> field in extpopup parameters. See /help defpopup "
+#~ "for the syntax"
+#~ msgstr ""
+#~ "Unerwartetes leeres <text>-Feld in extpopup-Parameter: Bitte /help "
+#~ "defpopup für Syntax zu Hilfe nehmen"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found empty instruction for popup item: maybe you need to fix the script?"
+#~ msgstr "Sinnlose leere Anweisung für popup-Element: Bitte Skript reparieren"
+
+#~ msgid ""
+#~ "Unexpected empty <name> field in extpopup parameters. See /help defpopup "
+#~ "for the syntax"
+#~ msgstr ""
+#~ "Unerwartetes leeres <text>-Feld in extpopup-Parameter: Bitte /help "
+#~ "defpopup für Syntax zu Hilfe nehmen"
+
+#~ msgid ""
+#~ "Found token '%Q' where a "
+#~ "'prologue','separator','label','popup','item','extpopup' or 'epilogue' "
+#~ "label was expected"
+#~ msgstr ""
+#~ "Token '%Q' gefunden, aber "
+#~ "'prologue','separator','label','popup','item','extpopup' oder 'epilogue' "
+#~ "wurde erwartet"
+
+#, fuzzy
+#~ msgid "The 'defpopup' command needs an expression enclosed in parenthesis"
+#~ msgstr ""
+#~ "Das 'defpopup'-Kommando benötigt einen Ausdruck, der in Klammern "
+#~ "eingeschlossen ist"
+
+#, fuzzy
+#~ msgid "Module command call failed: can't load the module '%Q': %Q"
+#~ msgstr ""
+#~ "Modulkommandoaufruf fehlgeschlagen: Modul '%Q' kann nicht geladen werden"
+
+#~ msgid ""
+#~ "Module command call failed: the module '%Q' doesn't export a command "
+#~ "named '%Q'"
+#~ msgstr ""
+#~ "Modulkommandoaufruf fehlgeschlagen: Modul '%Q' exportiert kein Kommando "
+#~ "mit Namen '%Q'"
+
+#, fuzzy
+#~ msgid "Received ping from \r!s\r%Q\r (PING %Q), replied pong"
+#~ msgstr "Ping von \r!s\r%s\r (PING %s) empfangen: Pong geantwortet"
+
+#~ msgid "Received pong from \r!s\r%s\r (PONG %s)"
+#~ msgstr "Pong von \r!s\r%s\r empfangen (PONG %s) "
+
+#~ msgid "Server ERROR: %Q"
+#~ msgstr "Server-FEHLER: %Q"
+
+#~ msgid "Missing channel parameter in join message"
+#~ msgstr "Kanalparameter in join-Nachricht fehlt"
+
+#~ msgid "Received a join message for an unknown channel, possible desync"
+#~ msgstr ""
+#~ "Join-Nachricht von unbekannten Kanal empfangen, Desynchronisation möglich"
+
+#~ msgid ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r [implicit +%c umode "
+#~ "change]"
+#~ msgstr ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] hat \r!c\r%Q\r [implizite +%c "
+#~ "Benutzermodusänderung] betreten"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] hat \r!c\r%Q\r betreten"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just joined \r!c\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] hat gerade \r!c\r%Q\r betreten"
+
+#~ msgid "Received a part message for an unknown channel, possible desync"
+#~ msgstr ""
+#~ "Part-Nachricht von unbekannten Kanal empfangen, Desynchronisation möglich"
+
+#~ msgid "You have left channel \r!c\r%Q\r"
+#~ msgstr "Es wurde Kanal \r!c\r%Q\r verlassen"
+
+#~ msgid "You have left channel \r!c\r%Q\r: %Q"
+#~ msgstr "Es wurde Kanal \r!c\r%Q\r verlassen:%Q"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r: %Q"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] hat \r!c\r%Q\r verlassen: %Q"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] hat \r!c\r%Q\r verlassen"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r: %Q"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] hat jetzt gerade \r!c\r%Q\r verlassen:%Q"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] hat jetzt gerade \r!c\r%Q\r verlassen"
+
+#~ msgid "Netsplit detected: %s"
+#~ msgstr "Netztrennung erkannt: %s"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] hat IRC verlassen: %Q"
+
+#~ msgid "Received a kick message for an unknown channel, possible desync"
+#~ msgstr ""
+#~ "Kick-Nachricht von unbekannten Kanal empfangen, Desynchronisation möglich"
+
+#~ msgid ""
+#~ "You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "Von \r!c\r%Q\r von \r!n\r%Q\r [%Q@\r!h\r%Q\r] hinausgeworfen: %Q"
+
+#~ msgid "Attempting to rejoin \r!c\r%Q\r..."
+#~ msgstr "Es wird versucht, \r!c\r%Q\r erneut zu betreten"
+
+#~ msgid ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has been kicked from \r!c\r%Q\r by \r!n\r%Q\r "
+#~ "[%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] wurde aus r!c\r%Q\r von \r!n\r%Q\r[%Q@\r!h\r%Q"
+#~ "\r] hinausgeworfen: %Q"
+
+#~ msgid ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just been kicked from \r!c\r%Q\r by \r!n\r%"
+#~ "Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] wurde gerade von \r!c\r%Q\r by \r!n\r%Q \r [%Q@"
+#~ "\r!h\r%Q\r] hinausgeworfen: %Q"
+
+#~ msgid ""
+#~ "The following message appears to be encrypted, but the crypto engine "
+#~ "failed to decode it: %s"
+#~ msgstr ""
+#~ "Die folgende Nachricht sieht wie eine verschlüsselte aus, aber die "
+#~ "Verschlüsselungsroutine konnte sie nicht dekodieren: %s"
+
+#~ msgid "Ignoring PRIVMSG from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "Ignoriere PRIVMSG von \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid ""
+#~ "Spam privmsg from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%s"
+#~ "\")"
+#~ msgstr ""
+#~ "Private Spamnachricht von \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (paßt auf "
+#~ "Spamwort \"%s\")"
+
+#~ msgid "Ignoring NOTICE from %Q (%Q)"
+#~ msgstr "NOTICE von %Q wird ignoriert: %Q"
+
+#~ msgid "NickServ requests authentication, executing scheduled command"
+#~ msgstr ""
+#~ "NickServ fragt nach Authentifizierung: geplantes Kommando wird ausgeführt"
+
+#~ msgid ""
+#~ "The scheduled NickServ identification command appears to be broken, "
+#~ "please change the setting"
+#~ msgstr ""
+#~ "Das geplante NickServ-Kommando sieht nicht richtig aus: Bitte die "
+#~ "Einstellung beheben"
+
+#~ msgid ""
+#~ "Spam notice from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%Q\")"
+#~ msgstr ""
+#~ "Spamnotiz von \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (paßt auf Spamwort \"%Q\")"
+
+#~ msgid "Received a topic message for an unknown channel, possible desync"
+#~ msgstr ""
+#~ "Themanachricht von unbekannten Kanal empfangen, Desynchronisation möglich"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has changed topic to \"%Q%c\""
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] hat den Titel geändert auf \"%Q%c\""
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] heißt nun \r!n\r%Q\r"
+
+#~ msgid "You have changed your nickname to %Q"
+#~ msgstr "Sie haben ihren Spitzname in %Q geändert"
+
+#~ msgid ""
+#~ "The target of this query was lost and has been found when \r!n\r%Q\r [%Q@"
+#~ "\r!h\r%Q\r] changed his nickname to \r!n\r%Q\r"
+#~ msgstr ""
+#~ "Das Ziel dieser Anfrage wurde verloren und wurde gefunden als \r!n\r%Q\r "
+#~ "[%Q@\r!h\r%Q\r] seinen Spitznamen in \r!n\r%Q\r geändert hat"
+
+#, fuzzy
+#~ msgid ""
+#~ "The recent nickname change from \r!n\r%Q\r to \r!n\r%Q\r caused a query "
+#~ "collision: merging output"
+#~ msgstr ""
+#~ "Die letzte Spitznamenänderung von \r!n\r%Q\r nach \r!n\r%Q\r verursacht "
+#~ "eine Anfragekollision: Ausgabe wird zusammengeführt"
+
+#~ msgid "End of merged output"
+#~ msgstr "Ende der zusammengeführten Ausgabe"
+
+#~ msgid "autojoining"
+#~ msgstr "Automatisches Betreten"
+
+#~ msgid "double-click the channel name to join"
+#~ msgstr "Doppelklick auf Kanalnamen zum Betreten"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] invites you to channel \r!c\r%Q\r (%Q)"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] lädt Sie in Kanal \r!c\r%Q\r (%Q) ein"
+
+#~ msgid "Received an invite message directed to another nick, possible desync"
+#~ msgstr ""
+#~ "Invite-Nachricht an anderen Spitznamen empfangen, Desynchronisation "
+#~ "möglich"
+
+#~ msgid "WALLOPS from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "WALLOPS von \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid "You have set user mode %s"
+#~ msgstr "Sie haben Benutzermodus %s gesetzt"
+
+#~ msgid "Received a mode change for an unknown channel, possible desync"
+#~ msgstr ""
+#~ "Modusänderung von unbekannten Kanal empfangen, Desynchronisation möglich"
+
+#~ msgid "%Q [%Q@%Q] has set channel key to \"\r!m-k\r%Q\r\""
+#~ msgstr "%Q [%Q@%Q] setzt Kanalschlüssel auf \"\r!m-k\r%Q\r\""
+
+#~ msgid "%Q [%Q@%Q] has unset the channel key"
+#~ msgstr "%Q [%Q@%Q] hat Kanalschlüssel aufgehoben"
+
+#~ msgid "%Q [%Q@%Q] has set channel \r!m-l\rlimit to %Q\r"
+#~ msgstr "%Q [%Q@%Q] setzt Kanal-\r!m-l\rBegrenzung auf %Q\r"
+
+#~ msgid "%Q [%Q@%Q] has unset the channel limit"
+#~ msgstr "%Q [%Q@%Q] hebt Kanalbegrenzung auf"
+
+#~ msgid "%Q [%Q@%Q] has set mode %c%c \r!n\r%Q\r"
+#~ msgstr "%Q [%Q@%Q] setzt Modus %c%c \r!n\r%Q\r"
+
+#~ msgid "%Q [%Q@%Q] has set mode %c%c \r!m%c%c\r%Q\r"
+#~ msgstr "%Q [%Q@%Q] hat Modus %c%c \r!m%c%c\r%Q\r gesetzt"
+
+#~ msgid "%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"
+#~ msgstr "%Q [%Q@%Q] setzt Kanal-\r!m%c%c\r-Modes %c%c\r"
+
+#~ msgid "%Q [%Q@%Q] has set mode %s %Q"
+#~ msgstr "%Q [%Q@%Q] setzt Modus %s %Q"
+
+#~ msgid "%Q [%Q@%Q] has set channel mode %s"
+#~ msgstr "%Q [%Q@%Q] setzt Kanalmodus %s"
+
+#~ msgid ""
+#~ "[Server parser]: Encountered problems while parsing the following message:"
+#~ msgstr ""
+#~ "[Server-Parser]: Gefundene Probleme während des Parsens der folgenden "
+#~ "Nachricht:"
+
+#~ msgid "[Server parser]: [%s][%s] %Q"
+#~ msgstr "[Serverparser]: [%s][%s] %Q"
+
+#~ msgid "[Server parser]: %s"
+#~ msgstr "[Serverparser]: %s"
+
+#~ msgid "The following CTCP reply has unrecognized target %Q"
+#~ msgstr "Folgende CTCP-Antwort hat unerkanntes Ziel %Q"
+
+#~ msgid "Channel CTCP"
+#~ msgstr "Kanal-CTCP"
+
+#~ msgid "%Q %S reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "%Q %S-Antwort von %Q [%Q@%Q]: %Q"
+
+#~ msgid "The following CTCP request has unrecognized target %Q"
+#~ msgstr "Folgende CTCP-Antwort hat unerkanntes Ziel %Q"
+
+#~ msgid ""
+#~ "%Q %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignored (flood limit "
+#~ "exceeded)"
+#~ msgstr ""
+#~ "%Q %S-Anfrage von %Q [%Q@%Q] (%Q), ignoriert (Überflutungsgrenze erreicht)"
+
+#~ msgid "ignored (unrecognized)"
+#~ msgstr "ignoriert (nicht erkannt)"
+
+#~ msgid "ignored"
+#~ msgstr "ignoriert"
+
+#~ msgid "replied"
+#~ msgstr "beantwortet"
+
+#~ msgid "%Q %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+#~ msgstr "%Q %S Anfrage von %Q [%Q@%Q] (%Q): %Q"
+
+#~ msgid "The following CTCP PING reply has unrecognized target \"%Q\""
+#~ msgstr "Folgende CTCP PING-Antwort hat unerkanntes Ziel \"%Q\""
+
+#~ msgid ""
+#~ "The following CTCP PING reply has a broken time identifier \"%S\", don't "
+#~ "trust the displayed time"
+#~ msgstr ""
+#~ "Folgende CTCP PING-Antwort hat einen fehlerhaften Zeitbezeichner \"%S\": "
+#~ "man sollte der angezeigen Zeit nicht vertrauen"
+
+#~ msgid "%Q PING reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sec %u msec"
+#~ msgstr "%Q PING-Antwort von %Q [%Q@%Q]: %u s %u ms"
+
+#~ msgid "The following CTCP ACTION has unrecognized target %Q"
+#~ msgstr "Folgende CTCP ACTION-Antwort hat unerkanntes Ziel %Q"
+
+#~ msgid "CTCP ACTION from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "CTCP ACTION von %Q [%Q@%Q]: %Q"
+
+#~ msgid "Unable to add file offer for file %Q (File not readable?)"
+#~ msgstr ""
+#~ "Datei %Q kann nicht zu Dateiangebot hinzugefügt werden (Datei nicht "
+#~ "lesbar?)"
+
+#~ msgid "Added %d sec file offer for file %Q (%Q) to recipient %Q"
+#~ msgstr ""
+#~ "%d Sekunden für Dateiangebot von Datei %Q (%Q) und Empfänger %Q "
+#~ "hinzugefügt"
+
+#~ msgid "private"
+#~ msgstr "private"
+
+#~ msgid "channel notification:"
+#~ msgstr "Kanalbenachrichtigung:"
+
+#~ msgid "notification"
+#~ msgstr "Nachrichten"
+
+#, fuzzy
+#~ msgid "%Q unsets avatar"
+#~ msgstr "Avatar benutzen"
+
+#, fuzzy
+#~ msgid "%Q changes avatar to %s"
+#~ msgstr "%Q [%Q@%Q] ändert Avatar zu %s (%Q %Q)"
+
+#~ msgid ""
+#~ ": No valid local copy of avatar available, requesting one (HTTP GET %s)"
+#~ msgstr ""
+#~ ": Keine gültige lokale Kopie eines Avatars vorhanden; es wird nach einem "
+#~ "angefragt (HTTP GET %s)"
+
+#~ msgid ""
+#~ ": No valid local copy of avatar available; failed to start an HTTP "
+#~ "transfer, ignoring"
+#~ msgstr ""
+#~ ": Keine gültige lokale Kopie eines Avatars vorhanden; Start der HTTP-"
+#~ "Übertragung fehlgeschlagen: wird ignoriert"
+
+#~ msgid ""
+#~ ": No valid local copy of avatar available, requesting one (DCC GET %s)"
+#~ msgstr ""
+#~ ": Keine gültige lokale Kopie eines Avatars vorhanden; es wird nach einem "
+#~ "angefragt (DCC GET %s)"
+
+#~ msgid ""
+#~ ": No valid local copy of avatar available; flood limit exceeded, ignoring"
+#~ msgstr ""
+#~ ": Keine gültige lokale Kopie eines Avatars vorhanden; Flutbegrenzung "
+#~ "erreicht: wird ignoriert"
+
+#~ msgid ": No valid local copy of avatar available, ignoring"
+#~ msgstr ""
+#~ ": Keine gültige lokale Kopie eines Avatars vorhanden; wird ignoriert"
+
+#~ msgid ": No such nickname in the user database, ignoring the change"
+#~ msgstr ""
+#~ ": Kein solcher Spitzname in Benutzerdatenbank; Änderung wird ignoriert"
+
+#~ msgid "Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%S %S)"
+#~ msgstr "DDC %S-Anfrage von %Q [%Q@%Q] (%S %S) wird ignoriert"
+
+#, fuzzy
+#~ msgid "Processing DCC %Q request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%S %S)"
+#~ msgstr "DCC %S-Anfrage von %Q [%Q@%Q] (%S %S) wird verarbeitet"
+
+#~ msgid "Unable to process the above request: Cannot load DCC module (%s)"
+#~ msgstr ""
+#~ "Verarbeitung vom obiger Anfrage fehlgeschlagen: DCC-Modul kann nicht "
+#~ "geladen werden (%s)"
+
+#~ msgid "Unable to process the above request: DCC module may be broken"
+#~ msgstr ""
+#~ "Verarbeitung vom obiger Anfrage fehlgeschlagen: DCC-Modul scheint "
+#~ "fehlerhaft zu sein"
+
+#~ msgid "Channel operators"
+#~ msgstr "Kanaloperatoren"
+
+#~ msgid "Voiced users"
+#~ msgstr "Benutzer mit Voice-Status"
+
+#~ msgid "Half-operators"
+#~ msgstr "Halb-Operatoren"
+
+#~ msgid "Ban masks"
+#~ msgstr "Bannmasken"
+
+#~ msgid "Color free (no ANSI colors)"
+#~ msgstr "Farbfrei (keine ANSI-Farben)"
+
+#~ msgid "Ban exception masks"
+#~ msgstr "Bannausnahme-Masken"
+
+#~ msgid "Invite exception masks or forbid /INVITE"
+#~ msgstr "Einladung-Ausnahme-Masken oder verbotenes /INVITE"
+
+#~ msgid "Secret"
+#~ msgstr "Geheim"
+
+#~ msgid "Private"
+#~ msgstr "Privat"
+
+#~ msgid "Topic change restricted"
+#~ msgstr "Themaänderung eingeschränkt"
+
+#~ msgid "Invite only"
+#~ msgstr "Nur auf Einladung"
+
+#~ msgid "No external messages"
+#~ msgstr "Keine externen Nachrichten"
+
+#~ msgid "Anonymous or protected user"
+#~ msgstr "Anonymous oder geschützter Benutzer"
+
+#~ msgid "Quiet or channel owner"
+#~ msgstr "Still oder Kanalbesitzer"
+
+#~ msgid "Limited number of users"
+#~ msgstr "Begrenzte Anzahl von Benutzern"
+
+#~ msgid "Key"
+#~ msgstr "Taste"
+
+#~ msgid "Moderated"
+#~ msgstr "Moderiert"
+
+#~ msgid "Registered"
+#~ msgstr "Registriert"
+
+#~ msgid "Censor swear words"
+#~ msgstr "Zensierte Schimpfwörter"
+
+#~ msgid "Only registered nicks can join"
+#~ msgstr "Nur registrierte Spitznamen können Kanal betreten"
+
+#~ msgid "No kicks able (unless U-Line)"
+#~ msgstr "Kein Herauswerfen möglich (ausser wenn U-Zeile)"
+
+#~ msgid "IRC-Op only channel"
+#~ msgstr "Kanal nur für IRC-OP's"
+
+#~ msgid "Server/Network/Tech Admin only channel"
+#~ msgstr "Kanal nur für Serveradmin | Netzwerkadmin | Techadmin"
+
+#~ msgid "Forbid /KNOCK"
+#~ msgstr "/KNOCK verbotenen"
+
+#~ msgid "Redirect on channel full"
+#~ msgstr "Umleiten wenn Kanal voll"
+
+#~ msgid "Forbid channel CTCPs"
+#~ msgstr "Kanal-CTCP's verboten"
+
+#~ msgid "User-operators OR Auditorium: /NAMES and /WHO show only ops"
+#~ msgstr "Zuhörerraum: /NAMES und /WHO zeigt nur OP's"
+
+#~ msgid "Unknown channel mode"
+#~ msgstr "Unbekannter Kanalmodus"
+
+#~ msgid ""
+#~ "One or more standard mode flags are missing in the server available "
+#~ "modes.\n"
+#~ "This is caused either by a non RFC1459-compliant IRC daemon or a broken "
+#~ "server reply.\n"
+#~ "Server umodes seem to be '%s' and channel modes seem to be '%s'.\n"
+#~ "Ignoring this reply and assuming that the basic set of modes is "
+#~ "available.\n"
+#~ "If you have strange problems, try changing the server."
+#~ msgstr ""
+#~ "Ein oder mehrere Standardmodiflags fehlen in den verfügbaren Servermodi.\n"
+#~ "Dies kann durch einen nicht-RFC1459-konformen IRC-Server oder eine "
+#~ "fehlerhafte Serverantwort verursacht werden.\n"
+#~ "Serverbenutzermodi scheinen '%s' und Kanalmodi '%s' zu sein.\n"
+#~ "Ignoriere diese Antwort und nehme an, dass der Basissatz an Modi "
+#~ "verfügbar ist.\n"
+#~ "Wenn grosse Probleme auftreten, versuchen Sie den Server zu wechseln."
+
+#~ msgid "Available user modes:"
+#~ msgstr "Verfügbare Benutzermodi:"
+
+#~ msgid "o: IRC operator (OPER)"
+#~ msgstr "o: IRC-Operator (OPER)"
+
+#~ msgid "O: Local IRC operator (LOCOP)"
+#~ msgstr "O: lokaler IRC-Operator (LOCOP)"
+
+#~ msgid "i: Invisible"
+#~ msgstr "i: unsichtbar"
+
+#~ msgid "w: Recipient for WALLOPS messages"
+#~ msgstr "w: Empfänger von Rundsendenachrichten"
+
+#~ msgid ""
+#~ "r: User with restricted connection (or recipient for messages about "
+#~ "rejected bots)"
+#~ msgstr ""
+#~ "r: Benutzer mit beschränkter Verbindung (oder Empfänger der Nachrichten "
+#~ "über abgelehnte Bots)"
+
+#~ msgid "s: Recipient for server notices"
+#~ msgstr "s: Empfänger für Servernotizen"
+
+#~ msgid "z: Recipient for oper wallop messages"
+#~ msgstr "z: Empfänger für oper wallop-Nachrichten"
+
+#~ msgid "c: Recipient for cconn messages"
+#~ msgstr "c: Empfänger für cconn-Nachrichten"
+
+#~ msgid "k: Recipient for server kill messages"
+#~ msgstr "k: Empfänger für server kill-Nachrichten"
+
+#~ msgid "f: Recipient for full server notices"
+#~ msgstr "f: Empfänger für Servervoll-Notizen"
+
+#~ msgid "y: Spy :)"
+#~ msgstr "y: überwachen :)"
+
+#~ msgid "d: Obscure 'DEBUG' flag"
+#~ msgstr "d: dunkles 'DEBUG'-Flag"
+
+#~ msgid "n: Recipient for nick changes"
+#~ msgstr "n: Empfänger für Spitznamenänderungen"
+
+#~ msgid ": Unknown user mode"
+#~ msgstr ": Unbekannter Benutzermodus"
+
+#~ msgid "Available channel modes:"
+#~ msgstr "Verfügbare Kanalmodi:"
+
+#~ msgid ""
+#~ "Server %Q version %S supporting user modes '%S' and channel modes '%S'"
+#~ msgstr ""
+#~ "Server %Q Version %S unterstützt Benutzermodi '%S' und Kanalmodi '%S'"
+
+#~ msgid "This server supports the WATCH notify list method, it will be used"
+#~ msgstr ""
+#~ "Dieser Server unterstützt die WATCH-Benachrichtigungslistenmethode (wird "
+#~ "benutzt)"
+
+#~ msgid "The current network is %Q"
+#~ msgstr "Das aktuelle Netzwerk ist %Q"
+
+#~ msgid "This server supports the CODEPAGE command, it will be used"
+#~ msgstr "Dieser Server unterstützt das CODEPAGE-Kommando, es wird benutzt"
+
+#~ msgid "This server supports: %s"
+#~ msgstr "Der Server unterstützt: %s"
+
+#~ msgid "End of NAMES for \r!c\r%Q\r"
+#~ msgstr "Ende von NAMES für \r!c\r%Q\r"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c's Info: %Q"
+
+#~ msgid "Names for \r!c\r%Q\r: %Q"
+#~ msgstr "Namen für \r!c\r%Q\r: %Q"
+
+#~ msgid "(unknown)"
+#~ msgstr "(unbekannt)"
+
+#~ msgid "Channel topic is: %Q"
+#~ msgstr "Kanaltitel ist: %Q"
+
+#~ msgid "Topic for \r!c\r%Q\r is: %Q"
+#~ msgstr "Thema für \r!c\r%Q\r ist: %Q"
+
+#~ msgid "No channel topic is set"
+#~ msgstr "Es ist kein Kanaltitel gesetzt"
+
+#~ msgid "No topic is set for channel \r!c\r%Q\r"
+#~ msgstr "Kein Thema für Kanal \r!c\r%Q\r gesetzt"
+
+#~ msgid "Topic was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r on %Q"
+#~ msgstr "Thema wurde von \r!n\r%Q\r!%Q@\r!h\r%Q\r auf %Q gesetzt"
+
+#~ msgid "Topic was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+#~ msgstr "Thema wurde von \r!n\r%Q\r!%Q@\r!h\r%Q\r gesetzt"
+
+#~ msgid "Topic for \r!c\r%Q\r was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r on %Q"
+#~ msgstr ""
+#~ "Thema für \r!c\r%Q\r wurde von \r!n\r%Q\r!%Q@\r!h\r%Q\r auf %Q gesetzt"
+
+#~ msgid "Topic for \r!c\r%Q\r was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+#~ msgstr "Thema für \r!c\r%Q\r wurde von \r!n\r%Q\r!%Q@\r!h\r%Q\r gesetzt"
+
+#~ msgid "Channel mode for \r!c\r%Q\r is %s"
+#~ msgstr "Kanalmodus für \r!c\r%Q\r ist %s"
+
+#~ msgid "User mode for \r!n\r%Q\r is %s"
+#~ msgstr "Benutzermodus für \r!n\r%Q\r ist %s"
+
+#~ msgid "End of channel %Q for \r!c\r%Q\r"
+#~ msgstr "Ende des Kanals %Q für \r!c\r%Q\r"
+
+#~ msgid "ban list"
+#~ msgstr "Bann-Liste"
+
+#~ msgid "invite list"
+#~ msgstr "Einladung-Liste"
+
+#~ msgid "ban exception list"
+#~ msgstr "Bannausnahmen-Liste"
+
+#~ msgid "%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"
+#~ msgstr "%Q für \r!c\r%Q\r: \r!m-%c\r%Q\r (gesetzt von %Q auf %Q)"
+
+#~ msgid "Ban listing"
+#~ msgstr "Bann-Auflistung"
+
+#~ msgid "Invite listing"
+#~ msgstr "Einladungen-Auflistung"
+
+#~ msgid "Ban exception listing"
+#~ msgstr "Bannausnahmen-Auflistung"
+
+#~ msgid ""
+#~ "WHO entry for %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cChannel%c: \r!c\r%Q\r, %"
+#~ "cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAway%c: %Q, %cReal "
+#~ "name%c: %Q"
+#~ msgstr ""
+#~ "WHO-Eintrag fr %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cKanal%c: \r!c\r%Q\r, %"
+#~ "cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cWeg%c: %Q, %"
+#~ "cWirklicher Name%c: %Q"
+
+#~ msgid "End of WHO list for %Q"
+#~ msgstr "Ende der WHO-Liste für %Q"
+
+#~ msgid ""
+#~ "Something really weird is happening: the server is refusing all the login "
+#~ "nicknames..."
+#~ msgstr ""
+#~ "Etwas wirklich seltsames ist passiert: der Server lehnte den Login von "
+#~ "allen Spitznamen ab..."
+
+#~ msgid ""
+#~ "The server is refusing all the login nicknames: giving up, you must send "
+#~ "the nickname manually"
+#~ msgstr ""
+#~ "Der Server lehnte den Login von allen Spitznamen ab: es wird abgebrochen, "
+#~ "es muss ein Spitzname manuell gesendet werden"
+
+#~ msgid "No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."
+#~ msgstr ""
+#~ "Keine Möglichkeit zum Einloggen als '\r!n\r%Q\r' (%d:%Q), Es wird '%Q' "
+#~ "versucht..."
+
+#~ msgid "%c\r!n\r%Q\r%c is away: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c ist weg: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+#~ msgstr "%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#~ msgid "%c\r!n\r%Q\r%c's real name: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c's wirklicher Name: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c was %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+#~ msgstr "%c\r!n\r%Q\r%c wurde %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#~ msgid "%c\r!n\r%Q\r%c's real name was: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c's wirklicher Name war: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c's channels: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c's Kanäle: %Q"
+
+#~ msgid "Received a broken RPL_WHOISIDLE, can't evaluate the idle time"
+#~ msgstr ""
+#~ "Fehlerhaftes RPL_WHOISIDLE empfangen, Leerlaufzeit kann nicht ausgewertet "
+#~ "werden"
+
+#~ msgid "%c\r!n\r%Q\r%c's idle time: %ud %uh %um %us"
+#~ msgstr "%c\r!n\r%Q\r%c's Leerlaufzeit: %ud %uh %um %us"
+
+#~ msgid "%c\r!n\r%Q\r%c's signon time: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c's Einloggzeit: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c's server: \r!s\r%Q\r - %Q"
+#~ msgstr "%c\r!n\r%Q\r%c's Server: \r!s\r%Q\r : %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c is authenticated as %Q"
+#~ msgstr "%c\r!n\r%Q\r%c's ist authentisiert als %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c's info: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c's Info: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c WHOIS info from \r!s\r%Q\r"
+#~ msgstr "%c\r!n\r%Q\r%c WHOIS-Info von \r!s\r%Q\r"
+
+#~ msgid "%c\r!n\r%Q\r%c WHOWAS info from \r!s\r%Q\r"
+#~ msgstr "%c\r!n\r%Q\r%c WHOWAS-Info von \r!s\r%Q\r"
+
+#~ msgid "Can't evaluate creation time"
+#~ msgstr "Erstellungszeit kann nicht ermittelt werden"
+
+#~ msgid "Channel was created at %Q"
+#~ msgstr "Kanal wurde erstellt am %Q"
+
+#~ msgid "Channel \r!c\r%Q\r was created at %Q"
+#~ msgstr "Kanal \r!c\r%Q\r wurde am %Q erstellt"
+
+#~ msgid "USERHOST info: %Q"
+#~ msgstr "USERHOST-Info: %Q"
+
+#~ msgid "Channel list begin: channel, users, topic"
+#~ msgstr "Kanallistenbeginn: Kanal, Benutzer, Titel"
+
+#~ msgid "List: %Q"
+#~ msgstr "Liste: %Q"
+
+#~ msgid "End of LIST"
+#~ msgstr "Ende von LIST"
+
+#~ msgid "Link: %Q"
+#~ msgstr "Verknüpfung: %Q"
+
+#~ msgid "End of LINKS"
+#~ msgstr "Ende von LINKS"
+
+#~ msgid "[Leaving away status after %ud %uh %um %us]: %Q"
+#~ msgstr "[\"Abwesend\"-Status wird nach %ud %uh %um %us verlassen]: %Q"
+
+#~ msgid "[Leaving away status]: %Q"
+#~ msgstr "[\"Abwesend\"-Status wird verlassen]: %Q"
+
+#~ msgid "Restoring pre-away nickname (%Q)"
+#~ msgstr "Spitzname vor dem Abwesend (%Q) wird wiederhergestellt"
+
+#~ msgid "[Entering away status]: %Q"
+#~ msgstr "[Es wird in den \"Abwesend\"-Status gewechselt]: %Q"
+
+#~ msgid "Setting away nickname (%Q)"
+#~ msgstr "Abwesend-Spitzname (%Q) wird gesetzt"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's server info: %s"
+#~ msgstr "%c\r!n\r%Q\r%c's Info: %Q"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's administrator is %s"
+#~ msgstr "%c\r!n\r%Q\r%c's Info: %Q"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's contact adress is %s"
+#~ msgstr "%c\r!n\r%Q\r%c's Kanäle: %Q"
+
+#, fuzzy
+#~ msgid "\r!n\r%Q\r invited %Q into channel %Q"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] lädt Sie in Kanal \r!c\r%Q\r (%Q) ein"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's information:"
+#~ msgstr "%c\r!n\r%Q\r%c's Info: %Q"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's time is %Q"
+#~ msgstr "%c\r!n\r%Q\r%c's Info: %Q"
+
+#, fuzzy
+#~ msgid "Cannot sent to channel: %Q"
+#~ msgstr "Kein Thema für Kanal \r!c\r%Q\r gesetzt"
+
+#, fuzzy
+#~ msgid "Cannot sent text to channel %Q: %Q"
+#~ msgstr "Es wurde Kanal \r!c\r%Q\r verlassen:%Q"
+
+#, fuzzy
+#~ msgid "Cannot sent to channel"
+#~ msgstr "Akuelles Fenster ist kein Kanal"
+
+#, fuzzy
+#~ msgid "Cannot sent text to channel %Q"
+#~ msgstr "Kein Thema für Kanal \r!c\r%Q\r gesetzt"
+
+#~ msgid "Your encoding is now %Q"
+#~ msgstr "Ihr Benutzermodus ist nun %Q"
+
+#, fuzzy
+#~ msgid "%c\r!n\r%Q\r%c's codepage is %Q: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c's Kanäle: %Q"
+
+#~ msgid "Your user mode is %s"
+#~ msgstr "Ihr Benutzermodus ist %s"
+
+#~ msgid "Hostname resolution aborted"
+#~ msgstr "Auflösen des Hostnamens abgebrochen"
+
+#~ msgid "Attempting %Q to %Q (%Q) on port %u"
+#~ msgstr "Es wird %Q zu %Q (%Q) an Port %u versucht"
+
+#~ msgid "secure connection"
+#~ msgstr "sichere Verbindung"
+
+#~ msgid "Attempting to 'bounce' on proxy %s on port %u (protocol %s)"
+#~ msgstr "Es wird 'bounce' an Proxy %s an Port %u (Protokoll %s) versucht"
+
+#~ msgid "Using cached proxy IP address (%s)"
+#~ msgstr "Benutze zwischengespeicherte IP-Adresse (%s)"
+
+#~ msgid "Unable to look up the IRC proxy hostname: Can't start the DNS slave"
+#~ msgstr ""
+#~ "Auflösen des IRC-Proxy-Hostnames fehlgeschlagen: DNS-Sklave konnte nicht "
+#~ "gestartet werden"
+
+#~ msgid "Resuming direct server connection"
+#~ msgstr "Nehme Direktverbindung auf"
+
+#~ msgid "Looking up the proxy hostname (%s)..."
+#~ msgstr "Proxy-Hostname (%s) wird aufgelöst..."
+
+#~ msgid "Can't find the proxy IP address: %Q"
+#~ msgstr "IP-Adresse des Proxys kann nicht gefunden werden: %Q"
+
+#~ msgid "Proxy hostname resolved to %s"
+#~ msgstr "Rechnername des Proxys aufgelöst als %s"
+
+#~ msgid "Proxy %s has a nickname: %s"
+#~ msgstr "Proxy %s hat Spitzname: %s"
+
+#~ msgid "Using cached server IP address (%s)"
+#~ msgstr "Benutze zwischengespeicherte Server-IP-Adresse (%s)"
+
+#~ msgid "Unable to look up the server hostname: Can't start the DNS slave"
+#~ msgstr ""
+#~ "Auflösen des Server-Hostnames fehlgeschlagen: DNS-Sklave konnte nicht "
+#~ "gestartet werden"
+
+#~ msgid "Looking up the server hostname (%s)..."
+#~ msgstr "Hostname des Servers (%s) wird aufgelöst..."
+
+#~ msgid "Can't find the server IP address: %Q"
+#~ msgstr "Server-IP-Adresse kann nicht gefunden werden: %Q"
+
+#~ msgid "If this server is an IPv6 one, try /server -i %s"
+#~ msgstr "Wenn dies ein IPv6-Server ist, <b>/server -i %s</b> versuchen"
+
+#~ msgid "Server hostname resolved to %s"
+#~ msgstr "Rechnername des Servers aufgelöst als %s"
+
+#~ msgid "Real hostname for %s is %s"
+#~ msgstr "Wirklicher Hostname für %s ist %s"
+
+#~ msgid "Server %s has a nickname: %s"
+#~ msgstr "Server %s hat einen Spitznamen: %s"
+
+#~ msgid "The specified bind address (%Q) is not valid"
+#~ msgstr "Die angegebene Bindungsadresse (%Q) ist ungültig"
+
+#~ msgid ""
+#~ "The specified bind address (%Q) is not valid (the interface it refers to "
+#~ "might be down)"
+#~ msgstr ""
+#~ "Die angegebene Bindungsadresse (%Q) ist ungültig (die Schnittstelle "
+#~ "scheint nicht aktiv zu sein)"
+
+#~ msgid "The system-wide IPv6 bind address (%s) is not valid"
+#~ msgstr "Die systemweite IPv6-Bindungsadresse (%s) ist ungültig"
+
+#~ msgid ""
+#~ "The system-wide IPv6 bind address (%s) is not valid (the interface it "
+#~ "refers to might be down)"
+#~ msgstr ""
+#~ "Die systemweite IPv6-Bindungsadresse (%s) ist ungültig: (die "
+#~ "Schnittstelle scheint nicht aktiv zu sein)"
+
+#~ msgid "The system-wide IPv4 bind address (%s) is not valid"
+#~ msgstr "Die systemweite IPv4-Bindungsadresse (%s) ist ungültig"
+
+#~ msgid ""
+#~ "The system-wide IPv4 bind address (%s) is not valid (the interface it "
+#~ "refers to might be down)"
+#~ msgstr ""
+#~ "Die systemweite IPv4-Bindungsadresse (%s) ist ungültig: (die "
+#~ "Schnittstelle scheint nicht aktiv zu sein)"
+
+#~ msgid "Configure Servers..."
+#~ msgstr "Server konfigurieren..."
+
+#~ msgid ""
+#~ "Allows you to configure the servers and eventually to connect to them"
+#~ msgstr ""
+#~ "Erlaubt das Konfigurieren der Server und das eventuelle Verbinden zu ihnen"
+
+#~ msgid "Manage Addons..."
+#~ msgstr "Zusätze verwalten..."
+
+#~ msgid "Allows you to manage the script-based addons"
+#~ msgstr "Erlaubt die Verwaltung von skriptbasierten Zusätzen"
+
+#~ msgid "Configure Registered Users..."
+#~ msgstr "Registrierte Benutzer konfigurieren..."
+
+#~ msgid "Shows a dialog that allows editing the registered user entries"
+#~ msgstr ""
+#~ "Zeigt ein Fenster zum Bearbeiten von Einträgen der registrierter Benutzer "
+#~ "an"
+
+#~ msgid "Configure Identity..."
+#~ msgstr "Identität konfigurieren..."
+
+#~ msgid "Allows you to configure nickname, username, avatar etc..."
+#~ msgstr ""
+#~ "Erlaubt das Konfigurieren des Spitznamens, Benutzernamens, Avatar, etc..."
+
+#~ msgid "Show SocketSpy..."
+#~ msgstr "Socketüberwachung anzeigen..."
+
+#~ msgid "Shows a window that allows monitoring the socket traffic"
+#~ msgstr "Zeigt ein Fenster zum Überwachen des Socketverkehrs an"
+
+#~ msgid "Get Network Links"
+#~ msgstr "Netzwerkverknüpfungen holen"
+
+#~ msgid "Shows a window that allows viewing the network links"
+#~ msgstr "Zeigt ein Fenster mit den Netzwerkverknüpfungen an"
+
+#~ msgid "Get Channel List"
+#~ msgstr "Kanalliste holen"
+
+#~ msgid "Shows a window that allows listing the network channels"
+#~ msgstr "Zeigt ein Fenster mit den Netzwerkkanälen an"
+
+#~ msgid "Configure KVIrc..."
+#~ msgstr "KVIrc konfigurieren..."
+
+#~ msgid "Shows the general options dialog"
+#~ msgstr "Allgemeine Einstellungen-Dialog anzeigen"
+
+#~ msgid "Customize Toolbars..."
+#~ msgstr "Werkzeugleisten anpassen...."
+
+#~ msgid "Shows a window that allows editing script toolbars"
+#~ msgstr "Zeigt ein Fenster zum Bearbeiten der Skriptwerkzeugleisten an"
+
+#~ msgid "Join Channels..."
+#~ msgstr "Kanäle betreten..."
+
+#~ msgid "Shows a dialog that allows you joing channels"
+#~ msgstr "Zeigt ein Dialog zum Betreten von Kanälen an"
+
+#~ msgid "Edit Actions..."
+#~ msgstr "Aktionen bearbeiten..."
+
+#~ msgid "Shows a window that allows editing actions"
+#~ msgstr "Zeigt ein Fenster zum Bearbeiten der Aktionen an"
+
+#~ msgid "Edit Aliases..."
+#~ msgstr "Aliasse bearbeiten..."
+
+#~ msgid "Shows a window that allows editing aliases"
+#~ msgstr "Zeigt ein Fenster zum Bearbeiten von Aliassen an"
+
+#~ msgid "Edit Events..."
+#~ msgstr "Ereignisse bearbeiten..."
+
+#~ msgid "Shows a window that allows editing script events"
+#~ msgstr "Zeigt ein Fenster zum Bearbeiten von Skriptereignissen an"
+
+#~ msgid "Edit Popups..."
+#~ msgstr "Aufklappmenüs bearbeiten..."
+
+#~ msgid "Shows a window that allows editing popup menus"
+#~ msgstr "Zeigt ein Fenster zum Bearbeiten von Aufklappmenüs an"
+
+#~ msgid "Edit Raw Events..."
+#~ msgstr "RAW-Ereignisse bearbeiten..."
+
+#~ msgid "Shows a window that allows editing raw scripting events"
+#~ msgstr "Zeigt ein Fenster zum Bearbeiten von RAW-Skriptereignissen an"
+
+#~ msgid "New Script Tester"
+#~ msgstr "Neues Skript-Tester"
+
+#~ msgid "Creates an embedded editor for long scripts"
+#~ msgstr "Erstellt einen eingebetteten Editor für lange Skripte"
+
+#~ msgid "Execute Script..."
+#~ msgstr "Skript ausführen..."
+
+#~ msgid "Allows executing a KVS script from file"
+#~ msgstr "Erlaubt das Ausführen eines KVS-Skriptes von einer Datei"
+
+#~ msgid "Help Index"
+#~ msgstr "Hilfeindex"
+
+#~ msgid "Shows the documentation index"
+#~ msgstr "Zeigt den Dokumentationsindex an"
+
+#~ msgid "Subscribe to the Mailing List"
+#~ msgstr "Mailing-Liste abbonnieren"
+
+#~ msgid "Allows subscribing to the KVIrc mailing list"
+#~ msgstr "Erlaubt das Abbonieren der KVIrc-Mailinigliste"
+
+#~ msgid "KVIrc WWW"
+#~ msgstr "KVIrc WWW"
+
+#~ msgid "Opens the KVIrc homepage"
+#~ msgstr "KVIrc Homepage"
+
+#~ msgid "Cascade windows"
+#~ msgstr "Gestaffelt"
+
+#~ msgid "Arranges the MDI windows in a maximized-cascade fashion"
+#~ msgstr "Ordnet die MDI-Fenster in maximierter gestaffelter Form an"
+
+#~ msgid "Tiles the MDI windows with the currently selected tile method"
+#~ msgstr "Teilt die MDI-Fenster mit der aktuell ausgewählten Teilenmethode"
+
+#~ msgid "Minimize all windows"
+#~ msgstr "Alle Fenster minimieren"
+
+#~ msgid "Minimized all the currently visible MDI windows"
+#~ msgstr "Minimiert alle aktuell sichtbaren MDI-Fenster"
+
+#~ msgid "New IRC Context"
+#~ msgstr "Neuer IRC-Kontext"
+
+#~ msgid "Creates a new IRC context console"
+#~ msgstr "Erstellt eine neue IRC-Kontext-Konsole"
+
+#~ msgid "Quit KVIrc"
+#~ msgstr "KVIrc beenden"
+
+#~ msgid "Quits KVIrc closing all the current connections"
+#~ msgstr "Das Beenden von KVIrc schließt alle aktuellen Verbindungen"
+
+#~ msgid "IRC Context Display"
+#~ msgstr "IRC-Kontext-Anzeige"
+
+#~ msgid "Shows a small display with IRC context informations"
+#~ msgstr "Zeigt eine kleine Anzeige mit IRC-Kontextinformationen an"
+
+#~ msgid "Acts as a separator for other items: performs no action"
+#~ msgstr "Agiert als Trenner für andere Elemente: führt keine Aktion aus"
+
+#~ msgid "Connect/Disconnect"
+#~ msgstr "Verbinden/Trennen"
+
+#~ msgid ""
+#~ "Allows you to connect to a server or to terminate the current connection"
+#~ msgstr ""
+#~ "Erlaubt das Verbinden zu einem Server oder das Trennen der aktuellen "
+#~ "Verbindung"
+
+#~ msgid "Connect"
+#~ msgstr "Verbinden"
+
+#~ msgid "Abort Connection"
+#~ msgstr "Verbindung abbrechen"
+
+#~ msgid "Join Channel"
+#~ msgstr "Kanal betreten"
+
+#~ msgid "Shows a popup menu that allows quickly selecting a channel to join"
+#~ msgstr "Zeigt ein Aufklappmenü zum schnellen Betreten von Kanälen an"
+
+#~ msgid "Change Nickname"
+#~ msgstr "Spitznamen ändern"
+
+#~ msgid "Shows a popup menu that allows quickly changing the nickname"
+#~ msgstr "Zeigt ein Aufklappmenü zum schnellen Ändern des Spitznamen an"
+
+#~ msgid "Connect To"
+#~ msgstr "Verbinden zu"
+
+#~ msgid "Shows a popup menu that allows quickly connecting to a server"
+#~ msgstr "Zeigt ein Aufklappmenü zum schnellen Verbinden zu Servern an"
+
+#~ msgid "Shows a popup menu that allows quickly changing user modes"
+#~ msgstr "Zeigt ein Aufklappmenü zum schnellen Ändern von Benutzermodi an"
+
+#~ msgid "Server Notices (+s)"
+#~ msgstr "Servernotizen (+s)"
+
+#~ msgid "Away/Back"
+#~ msgstr "Abwesend/Zurück"
+
+#~ msgid "Allows entering and leaving away state"
+#~ msgstr "Erlaubt das Setzen/Entfernen des Abwesend-Status"
+
+#~ msgid "Enter Away Mode"
+#~ msgstr "Abwesend-Modus setzen"
+
+#~ msgid "Leave Away Mode"
+#~ msgstr "Abwesend-Modus verlassen"
+
+#~ msgid "Irc Tools"
+#~ msgstr "IRC-Werkzeuge"
+
+#~ msgid "Shows a popup menu with some IRC Tools"
+#~ msgstr "Zeigt ein Aufklappmenü mit einigen IRC-Werkzeugen an"
+
+#~ msgid "Irc Actions"
+#~ msgstr "IRC-Aktionen"
+
+#~ msgid "Shows a popup menu with some IRC Actions"
+#~ msgstr "Zeigt ein Aufklappmenü mit einigen IRC-Aktionen an"
+
+#~ msgid "Failed to set the encoding to %Q: mapping not available."
+#~ msgstr ""
+#~ "Kodierung %Q kann nicht gesetzt werden: Mapping ist nicht verfügbar."
+
+#~ msgid "Changed text encoding to %Q"
+#~ msgstr "Textkodierung geändert auf %Q"
+
+#~ msgid "Connection to server established"
+#~ msgstr "Verbindung zum Server hergestellt"
+
+#~ msgid "[LINK WARNING]: Socket message truncated to 512 bytes."
+#~ msgstr ""
+#~ "[VERKNÜFUNGSNACHRICHT]: Socketnachricht wurde auf 512 Byte abgeschnitten"
+
+#~ msgid ""
+#~ "The server seems to support the WATCH notify list method, will try to use "
+#~ "it"
+#~ msgstr ""
+#~ "Dieser Server scheint die WATCH-Benachrichtigungslistenmethode zu "
+#~ "unterstützen: Es wird versucht, dies zu benutzen."
+
+#~ msgid "Can't resolve local host address, using user supplied one (%Q)"
+#~ msgstr ""
+#~ "Lokale Hostadresse kann nicht aufgelöst werden: eine vom Benutzer "
+#~ "eingegebene wird benutzt (%Q)"
+
+#~ msgid "Can't resolve local host address, using default 127.0.0.1"
+#~ msgstr ""
+#~ "Lokale Hostadresse kann nicht aufgelöst werden, Standard 127.0.0.1 wird "
+#~ "benutzt"
+
+#~ msgid "Local host address is %Q"
+#~ msgstr "Lokale Hostadresse ist %Q"
+
+#~ msgid "The server seems to have changed the idea about the local hostname"
+#~ msgstr ""
+#~ "Der Server scheint das Wissen über den lokalen Hostnamen geändert zu haben"
+
+#~ msgid ""
+#~ "You're probably using a broken bouncer or maybe something weird is "
+#~ "happening on the IRC server"
+#~ msgstr ""
+#~ "Es wird wahrscheinlich ein fehlerhaften Bouncher benutzt oder es ist "
+#~ "etwas sonderbares auf dem IRC-Server passiert"
+
+#~ msgid ""
+#~ "Here goes your \"broken bouncer hack\": The server has changed the "
+#~ "hostname but I'll ignore the IP address change"
+#~ msgstr ""
+#~ "Hier kommt der \"Fehlerhafter Bouncer-Hack\": Der Server hat den "
+#~ "Hostnamen geändert, die IP-Adressänderung wird ignoriert"
+
+#~ msgid "The local IP address as seen by the IRC server is %Q"
+#~ msgstr "Die lokale IP-Adresse, die vom Server gesehen wird, ist %Q"
+
+#~ msgid "Can't start the DNS slave thread"
+#~ msgstr "DNS-Sklaventhread konnte nicht gestartet werden"
+
+#~ msgid "Unable to resolve the local hostname as seen by the IRC server: %Q"
+#~ msgstr ""
+#~ "Lokaler Hostname, der vom IRC-Server gesehen wird, kann nicht aufgelöst "
+#~ "werden: %Q"
+
+#~ msgid "Looking up the local hostname as seen by the IRC server (%Q)"
+#~ msgstr ""
+#~ "Lokaler Hostname, der vom IRC-Server (%Q) gesehen wird, wird aufgelöst..."
+
+#, fuzzy
+#~ msgid ""
+#~ "Unable to resolve the local hostname as seen by the IRC server: %Q, using "
+#~ "previously resolved %Q"
+#~ msgstr ""
+#~ "Lokaler Hostname, der vom IRC-Server gesehen wird, kann nicht aufgelöst "
+#~ "werden: %Q"
+
+#~ msgid "Local hostname as seen by the IRC server resolved to %s"
+#~ msgstr ""
+#~ "Lokaler Hostname, der vom IRC-Server gesehen wird, wurde aufgelöst als %s"
+
+#~ msgid "Using server specific username (%Q)"
+#~ msgstr "Benutze serverspezifischen Benutzernamen (%Q)"
+
+#~ msgid "Using network specific username (%Q)"
+#~ msgstr "Benutze serverspezifischen Benutzernamen (%Q)"
+
+#~ msgid "Using server specific nickname (%Q)"
+#~ msgstr "Benutze serverspezifischen Spitznamen (%Q)"
+
+#~ msgid "Using network specific nickname (%Q)"
+#~ msgstr "Benutze serverspezifischen Spitznamen (%Q)"
+
+#~ msgid "Using server specific real name (%Q)"
+#~ msgstr "Benutze serverspezifischen wirklichen Namen (%Q)"
+
+#~ msgid "Using network specific real name (%Q)"
+#~ msgstr "Benutze serverspezifischen wirklichen Namen (%Q)"
+
+#~ msgid "Logging in as %Q!%Q :%Q"
+#~ msgstr "Logge ein als %Q!%Q :%Q"
+
+#~ msgid "Sending %s as password"
+#~ msgstr "Sende %s als Passwort"
+
+#~ msgid "Executing scheduled network specific \"on connect\" commands"
+#~ msgstr "Führe geplante netzwerkspezifische \"bei Verbindung\"-Kommandos aus"
+
+#~ msgid "Executing scheduled server specific \"on connect\" commands"
+#~ msgstr "Führe geplante serverspezifische \"bei Verbindung\"-Kommandos aus"
+
+#~ msgid ""
+#~ "The server refused the suggested nickname (%s) and named you %s instead"
+#~ msgstr ""
+#~ "Der Server lehnte den vorschlagenen Spitznamen (%s) ab und gab Ihnen "
+#~ "stattdessen den Namen %s"
+
+#~ msgid "Login operations complete, happy ircing!"
+#~ msgstr "Login-Operationen abgeschlossen: frohes Chatten!"
+
+#~ msgid "Executing scheduled network specific \"on login\" commands"
+#~ msgstr "Führe geplante netzwerkspezifische \"bei Login\"-Kommandos aus"
+
+#~ msgid "Executing scheduled server specific \"on login\" commands"
+#~ msgstr "Führe geplante serverspezifische \"bei Login\"-Kommandos aus"
+
+#~ msgid "Setting configured user mode"
+#~ msgstr "Konfigurierter Benutzermodus wird gesetzt"
+
+#~ msgid "Auto-joining network specific channels"
+#~ msgstr "Netzwerkspezifische Kanäle automatisch betreten"
+
+#~ msgid "Auto-joining server specific channels"
+#~ msgstr "Serverspezifische Kanäle automatisch betreten"
+
+#, fuzzy
+#~ msgid "Updating away state for channel %Q"
+#~ msgstr "Kein Thema für Kanal \r!c\r%Q\r gesetzt"
+
+#~ msgid ""
+#~ "Ops...it looks like I can't load modules on this sytem.\n"
+#~ "I have been looking for the %s library but I haven't been able to load "
+#~ "it\n"
+#~ "due to the following error: \"%s\"\n"
+#~ "Aborting."
+#~ msgstr ""
+#~ "Ops... es scheint als können bei diesem System keine Module geladen "
+#~ "werden.\n"
+#~ "Es wurde nach der %s Bibliothek gesucht, aber es war nicht möglich, diese "
+#~ "zu laden.\n"
+#~ "Es trat folgender Fehler auf: \"%s\"\n"
+#~ "Abgebrochen."
+
+#~ msgid ""
+#~ "Ops...it looks like you have a broken distribution.\n"
+#~ "The setup module does not export the \"setup_begin\" function.\n"
+#~ "Aborting!"
+#~ msgstr ""
+#~ "Ops... es scheint als wenn diese Distribution fehlerhaft ist.\n"
+#~ "Das Einrichtungsmodul exportiert die \"setup_wizard\"-Funktion nicht.\n"
+#~ "Es wird abgebrochen!"
+
+#~ msgid "Setup aborted"
+#~ msgstr "Einrichtung abgebrochen"
+
+#~ msgid ""
+#~ "Ops...it looks like you have a broken distribution.\n"
+#~ "The setup module does not export the \"setup_finish\" function.\n"
+#~ "Trying to continue anyway..."
+#~ msgstr ""
+#~ "Ops... es scheint als wenn diese Distribution fehlerhaft ist.\n"
+#~ "Das Einrichtungsmodul exportiert die \"setup_finish\"-Funktion nicht.\n"
+#~ "Es wird versucht, fortzusetzen..."
+
+#, fuzzy
+#~ msgid ""
+#~ "Failed writing the kvirc home directory path to %Q.\n"
+#~ "You will need to do it manually , otherwise KVirc will restart with\n"
+#~ "the setup!"
+#~ msgstr ""
+#~ "Schreiben des Heimatverzeichnisses von KVirc nach %s ist fehlgeschlagen.\n"
+#~ "Es muß manuell ausgeführt werden, sonst wird KVirc erneut die Einrichtung "
+#~ "starten!"
+
+#~ msgid "Normal text"
+#~ msgstr "Normaler Text"
+
+#~ msgid "Selection"
+#~ msgstr "Auswahl"
+
+#~ msgid "Highlighted text"
+#~ msgstr "Hervorgehobener Text"
+
+#~ msgid "URL foreground"
+#~ msgstr "URL-Vordergrund"
+
+#~ msgid "Link overlay foreground"
+#~ msgstr "Verknüpfung überlagernder Vordergrund"
+
+#~ msgid "Parser error"
+#~ msgstr "Parserfehler"
+
+#~ msgid "Parser warning"
+#~ msgstr "Parserwarnung"
+
+#~ msgid "Host lookup result"
+#~ msgstr "Hostauflösung-Ergebnis"
+
+#~ msgid "Socket message"
+#~ msgstr "Socketnachricht"
+
+#~ msgid "Socket warning"
+#~ msgstr "Socketwarnung"
+
+#~ msgid "Socket error"
+#~ msgstr "Socketfehler"
+
+#~ msgid "System error"
+#~ msgstr "Systemfehler"
+
+#~ msgid "Raw data to server"
+#~ msgstr "RAW-Daten an den Server"
+
+#~ msgid "Connection status"
+#~ msgstr "Verbindungsstatus"
+
+#~ msgid "System warning"
+#~ msgstr "Systemwarnung"
+
+#~ msgid "System message"
+#~ msgstr "Systemnachricht"
+
+#~ msgid "Unhandled server reply"
+#~ msgstr "Nicht behandelte Serverantwort"
+
+#~ msgid "Server information"
+#~ msgstr "Server-Informationen"
+
+#~ msgid "Server Message of the Day"
+#~ msgstr "Servernachricht des Tages"
+
+#~ msgid "Server ping"
+#~ msgstr "Serverping"
+
+#~ msgid "Join message"
+#~ msgstr "Betreten-Nachricht"
+
+#~ msgid "Unrecognized/broken message"
+#~ msgstr "Nicht erkannte/fehlerhafte Nachricht"
+
+#~ msgid "Topic message"
+#~ msgstr "Thema-Nachricht"
+
+#~ msgid "Own private message"
+#~ msgstr "Eigene private Nachricht"
+
+#~ msgid "Channel private message"
+#~ msgstr "Private Kanalnachricht"
+
+#~ msgid "Query private message"
+#~ msgstr "Private Anfragenachricht"
+
+#~ msgid "CTCP reply"
+#~ msgstr "CTCP-Antwort"
+
+#~ msgid "CTCP request replied"
+#~ msgstr "CTCP-Anfrage beantwortet"
+
+#~ msgid "CTCP request ignored"
+#~ msgstr "CTCP-Anfrage ignoriert"
+
+#~ msgid "CTCP request flood warning"
+#~ msgstr "CTCP-Anfrage-Flutwarnung"
+
+#~ msgid "CTCP request unknown"
+#~ msgstr "CTCP-Anfrage unbekannt"
+
+#~ msgid "User action"
+#~ msgstr "Benutzeraktion"
+
+#~ msgid "Avatar change"
+#~ msgstr "Avataränderung"
+
+#~ msgid "Split message"
+#~ msgstr "Trennung-Nachricht"
+
+#~ msgid "Quit on netsplit message"
+#~ msgstr "Verlassen bei Trennung-Nachricht"
+
+#~ msgid "Nick changes"
+#~ msgstr "Spitznamenänderungen"
+
+#~ msgid "+o mode change"
+#~ msgstr "+o Modusänderung"
+
+#~ msgid "-o mode change"
+#~ msgstr "-o Modusänderung"
+
+#~ msgid "+v mode change"
+#~ msgstr "+v Modusänderung"
+
+#~ msgid "-v mode change"
+#~ msgstr "-v Modusänderung"
+
+#~ msgid "Multiple user mode change"
+#~ msgstr "Modus-Änderung für mehrere Benutzer"
+
+#~ msgid "Channel key change"
+#~ msgstr "Kanalschlüssel-Änderung"
+
+#~ msgid "Channel limit change"
+#~ msgstr "Kanalbegrenzung-Änderung"
+
+#~ msgid "+b mode change"
+#~ msgstr "+b Modusänderung"
+
+#~ msgid "-b mode change"
+#~ msgstr "-b Modusänderung"
+
+#~ msgid "+e mode change"
+#~ msgstr "+e Modusänderung"
+
+#, fuzzy
+#~ msgid "-e mode change"
+#~ msgstr "-o Modusänderung"
+
+#~ msgid "+I mode change"
+#~ msgstr "+l Modusänderung"
+
+#~ msgid "-I mode change"
+#~ msgstr "-l Modusänderung"
+
+#~ msgid "Multiple channel mode change"
+#~ msgstr "Modus-Änderung für mehrere Kanäle"
+
+#~ msgid "Who reply"
+#~ msgstr "Who-Antwort"
+
+#~ msgid "DCC request"
+#~ msgstr "DCC-Anfrage"
+
+#~ msgid "DCC message"
+#~ msgstr "DCC-Nachricht"
+
+#~ msgid "DCC error"
+#~ msgstr "DCC-Fehler"
+
+#~ msgid "Nickname problem"
+#~ msgstr "Spitzname-Problem"
+
+#~ msgid "Whois user reply"
+#~ msgstr "Whois-user-Antwort"
+
+#~ msgid "Whois channels reply"
+#~ msgstr "Whois channels-Antwort"
+
+#~ msgid "Whois idle reply"
+#~ msgstr "Whois idle-Antwort"
+
+#~ msgid "Whois server reply"
+#~ msgstr "Whois server-Antwort"
+
+#~ msgid "Whois other reply"
+#~ msgstr "Andere whois-Antwort"
+
+#~ msgid "Channel creation time reply"
+#~ msgstr "Kanalerstellungszeit-Antwort"
+
+#~ msgid "Notify list joins"
+#~ msgstr "Kanalbetretungen benachrichtigen"
+
+#~ msgid "Notify list leaves"
+#~ msgstr "Kanalverlassungen benachrichtigen"
+
+#~ msgid "Own encrypted private message"
+#~ msgstr "Eigene verschlüsselte private Nachricht"
+
+#~ msgid "Channel encrypted private message"
+#~ msgstr "Verschlüsselte private Kanalnachricht"
+
+#~ msgid "Query encrypted private message"
+#~ msgstr "Verschlüsselte private Anfragenachricht"
+
+#~ msgid "DCC chat message"
+#~ msgstr "DCC-CHAT-Nachricht"
+
+#~ msgid "Encrypted DCC chat message"
+#~ msgstr "Verschlüsselte DCC chat-Nachricht"
+
+#~ msgid "Login operations completed"
+#~ msgstr "Einloggoperationen abgeschlossen"
+
+#~ msgid "Kick action"
+#~ msgstr "Kick-Aktion"
+
+#~ msgid "Links reply"
+#~ msgstr "Verknüpfungsantwort"
+
+#~ msgid "Spam report"
+#~ msgstr "Spamreport"
+
+#~ msgid "ICQ message"
+#~ msgstr "ICQ-Nachricht"
+
+#~ msgid "ICQ user-message"
+#~ msgstr "ICQ-Benutzernachricht"
+
+#~ msgid "Outgoing ICQ user-message"
+#~ msgstr "Abgehende ICQ-Benutzer-Nachricht"
+
+#~ msgid "Channel notice"
+#~ msgstr "Kanalnotiz"
+
+#~ msgid "Encrypted channel notice"
+#~ msgstr "Verschlüsselte Kanalbnotiz"
+
+#~ msgid "Query notice"
+#~ msgstr "Anfragenotiz"
+
+#~ msgid "Encrypted query notice"
+#~ msgstr "Verschlüsselte Kanalnotiz"
+
+#~ msgid "Server notice"
+#~ msgstr "Servernotiz"
+
+#~ msgid "Halfop mode change"
+#~ msgstr "Halb-OP-Modusänderung"
+
+#~ msgid "Unknown CTCP reply"
+#~ msgstr "Unbekannte CTCP-Antwort"
+
+#~ msgid "NickServ message"
+#~ msgstr "NickServ-Nachricht"
+
+#~ msgid "ChanServ message"
+#~ msgstr "ChanServ-Nachricht"
+
+#~ msgid "Away message"
+#~ msgstr "\"Abwesend\"-Nachricht"
+
+#~ msgid "Ident message"
+#~ msgstr "Ident-Nachricht"
+
+#~ msgid "Channel list message"
+#~ msgstr "Kanalliste-Nachricht"
+
+#~ msgid "Half-deop mode change"
+#~ msgstr "Halb-deop-Modusänderung"
+
+#~ msgid "Invite message"
+#~ msgstr "Einladungsnachricht"
+
+#~ msgid "Multimedia message"
+#~ msgstr "Multimedia-Nachricht"
+
+#~ msgid "Query trace message"
+#~ msgstr "Verfolgungsanfrage-Nachricht"
+
+#~ msgid "Wallops message"
+#~ msgstr "Rundsendenachricht"
+
+#~ msgid "Join error message"
+#~ msgstr "Betreten-Fehlernachricht"
+
+#~ msgid "Broadcast private message"
+#~ msgstr "Private Rundsendenachricht"
+
+#~ msgid "Broadcast notice"
+#~ msgstr "Rundsendenotiz"
+
+#~ msgid "Am kicked"
+#~ msgstr "Mich herausgeworfen"
+
+#~ msgid "Am op'd"
+#~ msgstr "Mir OP-Status gegeben"
+
+#~ msgid "Am voiced"
+#~ msgstr "Mir Stimm-Status gegeben"
+
+#~ msgid "Am deop'd"
+#~ msgstr "Mir OP-Status weggenommen"
+
+#~ msgid "Am devoiced"
+#~ msgstr "Mir Stimm-Status weggenommen"
+
+#~ msgid "Am halfop'd"
+#~ msgstr "Mir Halb-OP-Status gegeben"
+
+#~ msgid "Am de-halfop'd"
+#~ msgstr "Mir Halb-OP-Status weggenommen"
+
+#~ msgid "Ban matching my mask"
+#~ msgstr "Bann passt auf meine Maske"
+
+#~ msgid "Unban matching my mask"
+#~ msgstr "Unbann passt auf meine Maske"
+
+#~ msgid "Ban exception matching my mask"
+#~ msgstr "Bannausnahme passt auf meine Maske"
+
+#~ msgid "Ban unexception matching my mask"
+#~ msgstr "Bann passt auf meine Maske"
+
+#~ msgid "Invite exception matching my mask"
+#~ msgstr "Einladungsausnahme passt auf meine Maske"
+
+#~ msgid "Invite unexception matching my mask"
+#~ msgstr "Einladung passt auf meine Maske"
+
+#~ msgid "Ignored user message"
+#~ msgstr "Ignorierte Benutzernachricht"
+
+#~ msgid "Server statistics"
+#~ msgstr "Serverstatistiken"
+
+#~ msgid "SSL message"
+#~ msgstr "SSL-Nachricht"
+
+#~ msgid "Search"
+#~ msgstr "Suchen"
+
+#~ msgid "Generic success"
+#~ msgstr "Generischer Erfolg"
+
+#~ msgid "Generic status"
+#~ msgstr "Generischer Status"
+
+#~ msgid "Generic verbose message"
+#~ msgstr "Generische informative Meldung"
+
+#~ msgid "Generic warning"
+#~ msgstr "Generische Warnung"
+
+#~ msgid "Generic error"
+#~ msgstr "Generischer Fehler"
+
+#~ msgid "Generic critical error"
+#~ msgstr "Generischer kritischer Fehler"
+
+#~ msgid "Chan admin status set"
+#~ msgstr "Kanaladminstatus gesetzt"
+
+#~ msgid "Chan admin status unset"
+#~ msgstr "Kanaladminstatus entfernt"
+
+#~ msgid "Own chan admin status set"
+#~ msgstr "Eigener Kanaladminstatus gesetzt"
+
+#~ msgid "Own chan admin status unset"
+#~ msgstr "Eigener Kanaladminstatus entfernt"
+
+#~ msgid "Userop mode change"
+#~ msgstr "Vergabe von OP-Status"
+
+#~ msgid "User-deop mode change"
+#~ msgstr "Wegnahme von OP-Status"
+
+#~ msgid "Am userop'd"
+#~ msgstr "Mir wurde OP-Status gegeben"
+
+#~ msgid "Am de-userop'd"
+#~ msgstr "Mir wurde OP-Status weggenommen"
+
+#~ msgid "Verbose/Debug"
+#~ msgstr "Informativ/Debug"
+
+#~ msgid "Chan owner status set"
+#~ msgstr "Kanaleigentümerstatus gesetzt"
+
+#~ msgid "Chan owner status unset"
+#~ msgstr "Kanaleigentümerstatus entfernt"
+
+#~ msgid "Own chan owner status set"
+#~ msgstr "Eigener Kanaleigentümerstatus gesetzt"
+
+#~ msgid "Own chan owner status unset"
+#~ msgstr "Eigener Kanaleigentümerstatus entfernt"
+
+#~ msgid "Server error"
+#~ msgstr "Serverfehler"
+
+#~ msgid "Boolean options (1/0)"
+#~ msgstr "Boolean'sche Operationen (1/0)"
+
+#~ msgid "Rectangle options (x,y,width,height)"
+#~ msgstr "Rechteck-Optionen (x,y,Breite,Höhe)"
+
+#~ msgid "String options (string value)"
+#~ msgstr "Zeichenkettenoptionen (Zeichenkettenwert)"
+
+#~ msgid "Color options (#RRGGBB)"
+#~ msgstr "Farboptionen (#RRGGBB)"
+
+#~ msgid "Mirccolor options (#RRGGBB)"
+#~ msgstr "MIRC-Farboptionen (#RRGGBB)"
+
+#~ msgid "Irc context color options (#RRGGBB)"
+#~ msgstr "IRC-Kontext-Farboptionen (#RRGGBB)"
+
+#~ msgid "Pixmap options (image path)"
+#~ msgstr "Bildoptionen (Bildpfad)"
+
+#~ msgid "Unsigned integer options (unsigned integer constant)"
+#~ msgstr "Ganzzahl-Operationen (vorzeichenlose Integerkonstante)"
+
+#~ msgid "Font options (family,pointsize,style,charset,weight,flags (biusf))"
+#~ msgstr ""
+#~ "Schriftartoptionen (Familie, Größe, Stil, Zeichensatz, Gewicht, Flags "
+#~ "(biusf))"
+
+#~ msgid "Message color options (image_id,foreground,background,logFlag (0/1))"
+#~ msgstr ""
+#~ "Nachricht-Farboptionen (Bild_ID, Vordergrund, Hintergrund, logFlag (0/1))"
+
+#~ msgid "String list options (comma separated list of strings)"
+#~ msgstr ""
+#~ "Zeichenkettenlisten-Optionen (Listen aus Strings die durch Komma getrennt "
+#~ "sind)"
+
+#~ msgid "Icon Table"
+#~ msgstr "Symboltabelle"
+
+#~ msgid "%Q is on IRC"
+#~ msgstr "%Q ist im IRC"
+
+#~ msgid "%Q has left IRC"
+#~ msgstr "%Q hat IRC verlassen"
+
+#~ msgid "Notify list: No users to check for, quitting"
+#~ msgstr ""
+#~ "Benachrichtigungsliste: Keine Benutzer zum Überprüfen vorhanden: es wird "
+#~ "beendet"
+
+#~ msgid ""
+#~ "Notify list: Timeout (%d sec) is too short, resetting to something more "
+#~ "reasonable (15 sec)"
+#~ msgstr ""
+#~ "Benachrichtigungsliste: Der Zeitablauf (%d Sekunden) ist wirklich zu "
+#~ "klein: Es wird auf vernünftigen Wert (15 Sekunden) zurückgesetzt."
+
+#~ msgid "Notify list: Notify list empty, quitting"
+#~ msgstr ""
+#~ "Benachrichtigungsliste: Benachrichtungungsliste ist leer: es wird beendet"
+
+#~ msgid ""
+#~ "Notify list: ISON delay (%d sec) is too short, resetting to something "
+#~ "more reasonable (5 sec)"
+#~ msgstr ""
+#~ "Benachrichtigungsliste: Die ISON-Verzögerung ist wirklich zu klein (%d "
+#~ "Sekunden): Wird auf vernünftigen Wert (5 Sekunden) zurückgesetzt."
+
+#~ msgid "Notify list: Checking for: %Q"
+#~ msgstr "Benachrichtigungsliste: Es wird auf %Q geprüft"
+
+#~ msgid ""
+#~ "Notify list: Hey! You've used ISON behind my back? (I might be confused "
+#~ "now...)"
+#~ msgstr ""
+#~ "Benachrichtigungsliste: Ey! Sie haben ISON hinter meinem Rücken benutzt? "
+#~ "(Ich bin jetzt ein wenig verwirrt...)"
+
+#~ msgid "registration mask changed, or nickname is being used by someone else"
+#~ msgstr ""
+#~ "Registrierungsmaske geändert oder irgend jemand anderes benutzt den "
+#~ "Spitznamen jetzt"
+
+#~ msgid ""
+#~ "Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q"
+#~ "\r] does not match (registration mask does not match, or nickname is "
+#~ "being used by someone else)"
+#~ msgstr ""
+#~ "Benachrichtigungsliste: \r!n\r%Q\r scheint online zu sein, aber die Maske "
+#~ "(%Q@\r!h\r%Q\r) stimmt nicht überein (jemand anderes benutzt den "
+#~ "Spitznamen oder die Registrierungsmaske(n) stimmt nicht überein)"
+
+#~ msgid ""
+#~ "Notify list: Unexpected inconsistency, registered user DB modified? "
+#~ "(restarting)"
+#~ msgstr ""
+#~ "Benachrichtigungsliste: Unerwartete Inkonsistenz: Registrierte "
+#~ "Benutzerdatenbank modifiziert? (wird neugestartet)"
+
+#~ msgid ""
+#~ "Notify list: Unexpected inconsistency, expected \r!n\r%Q\r in the "
+#~ "registered user DB"
+#~ msgstr ""
+#~ "Benachrichtigungsliste: Unerwartete Inkonsistenz: \r!n\r%Q\r in "
+#~ "registrierter Benutzer-Datenbank erwartet"
+
+#~ msgid ""
+#~ "Notify list: USERHOST delay (%d sec) is too short, resetting to something "
+#~ "more reasonable (5 sec)"
+#~ msgstr ""
+#~ "Benachrichtigungsliste: Die USERHOST-Verzögerung (%d sek.) ist zu klein: "
+#~ "Wird auf einen vernünftigen Wert (5 s) zurückgesetzt"
+
+#~ msgid "Notify list: Unexpected inconsistency, userhost list is empty!"
+#~ msgstr ""
+#~ "Benachrichtigungsliste: unerwaretete Inkonsistenz: Die userhost-Liste ist "
+#~ "leer!"
+
+#~ msgid "Notify list: Checking userhost for: %Q"
+#~ msgstr "Benachrichtigungsliste: userhost-Liste wird auf %Q geprüft"
+
+#~ msgid ""
+#~ "Notify list: Hey! You've used USERHOST behind my back? (I might be "
+#~ "confused now...)"
+#~ msgstr ""
+#~ "Benachrichtigungsliste: Hey! Sie haben USERHOST hinter meinem Rücken "
+#~ "benutzt? (Ich bin nun verwirrt...)"
+
+#~ msgid "Notify list: Broken USERHOST reply from the server? (%s)"
+#~ msgstr ""
+#~ "Benachrichtigungsliste: Fehlerhafte USERHOST-Antwort vom Server "
+#~ "geliefert? (%s)"
+
+#~ msgid ""
+#~ "Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST "
+#~ "reply was received, will recheck in the next loop"
+#~ msgstr ""
+#~ "Benachrichtigungsliste: Es scheint, dass \r!n\r%Q\r offline gegangen ist, "
+#~ "während auf seine USERHOST-Antwort gewartet wurde. neue Prüfung in der "
+#~ "nächsten Schleife."
+
+#~ msgid "No users in the notify list"
+#~ msgstr "Keine Benutzer in der Benachrichtigungsliste"
+
+#~ msgid "Notify list: Checking for:%Q"
+#~ msgstr "Benachrichtigungsliste: Es wird auf %Q geprüft"
+
+#~ msgid ""
+#~ "Notify list: Timeout (%d sec) is too short, resetting to something more "
+#~ "reasonable (5 sec)"
+#~ msgstr ""
+#~ "Benachrichtigungsliste: Der Zeitablauf (%d Sek.) ist zu wirklich klein: "
+#~ "Es wird auf vernünftigen Wert (5 Sek.) gesetzt"
+
+#~ msgid "Notify list: Adding watch entries for%Q"
+#~ msgstr ""
+#~ "Benachrichtigungsliste: Es werden zu beobachtende Einträge für %Q "
+#~ "hinzugefügt"
+
+#~ msgid "watch entry listing requested by user"
+#~ msgstr "Watch-Listeneintrag angefordert vom Benutzer"
+
+#~ msgid "possible watch list desync"
+#~ msgstr "mögliche Desynchronisation der watch-Liste"
+
+#~ msgid "registration mask changed or desync with the watch service"
+#~ msgstr ""
+#~ "Registrierungsmaske geändert oder Desynchronisation mit dem "
+#~ "Beobachtungsdienst"
+
+#~ msgid ""
+#~ "Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q"
+#~ "\r] does not match (watch: registration mask does not match, or nickname "
+#~ "is being used by someone else)"
+#~ msgstr ""
+#~ "Benachrichtigungsliste: \r!n\r%Q\r scheint online, aber die Maske (%Q@\r!h"
+#~ "\r%Q\r) passt nicht (watch: jemand anderes benutzt seinen Spitznamen oder "
+#~ "die Registrierungsmaske passt nicht)"
+
+#~ msgid ""
+#~ "Notify list: Unexpected inconsistency, registered user DB modified? "
+#~ "(watch: restarting)"
+#~ msgstr ""
+#~ "Benachrichtigungsliste: unerwaretete Inkonsistenz: Datenbank der "
+#~ "registrierten Benutzer wurde geändert? (watch: es wird neugestartet)"
+
+#~ msgid "watch entry added by user"
+#~ msgstr "watch-Eintrag vom Benutzer hinzugefügt"
+
+#~ msgid "removed from watch list"
+#~ msgstr "gelöscht von Beobachtungsliste"
+
+#~ msgid "Notify list: Stopped watching for \r!n\r%Q\r"
+#~ msgstr "Benachrichtungsliste: Beobachtung für \r!n\r%Q\r wird gestoppt"
+
+#~ msgid "watch"
+#~ msgstr "watch"
+
+#~ msgid "Notify list: \r!n\r%Q\r is offline (watch)"
+#~ msgstr "Benachrichtigungsliste: \r!n\r%Q\r ist offline (beobachtet)"
+
+#~ msgid "unmatched watch list entry"
+#~ msgstr "nicht passender watch-Listeneintrag"
+
+#, fuzzy
+#~ msgid "commandline"
+#~ msgstr "Nein"
+
+#~ msgid "[SSL]: %c%s"
+#~ msgstr "[SSL]: %c%s"
+
+#~ msgid "[SSL]: Cipher: %c%s"
+#~ msgstr "[SSL]: Chiffre: %c%s"
+
+#~ msgid "[SSL]: Version: %c%s"
+#~ msgstr "[SSL]: Version: %c%s"
+
+#~ msgid "[SSL]: Bits: %c%d (%d used)"
+#~ msgstr "[SSL]: Bits: %c%d (%d benutzt)"
+
+#~ msgid "[SSL]: Version: %c%d"
+#~ msgstr "[SSL]: Version: %c%d"
+
+#~ msgid "[SSL]: Serial number: %c%d"
+#~ msgstr "[SSL]: Seriennummer: %c%d"
+
+#~ msgid "[SSL]: Subject:"
+#~ msgstr "[SSL]: Betreff:"
+
+#~ msgid "[SSL]: Common name: %c%s"
+#~ msgstr "[SSL]: Geläufiger Name: %c%s"
+
+#~ msgid "[SSL]: Organization: %c%s"
+#~ msgstr "[SSL]: Organisation: %c%s"
+
+#~ msgid "[SSL]: Organizational unit: %c%s"
+#~ msgstr "[SSL]: Organisationsabteilung: %c%s"
+
+#~ msgid "[SSL]: Country: %c%s"
+#~ msgstr "[SSL]: Land: %c%s"
+
+#~ msgid "[SSL]: State or province: %c%s"
+#~ msgstr "[SSL]: Staat oder Provinz: %c%s"
+
+#~ msgid "[SSL]: Locality: %c%s"
+#~ msgstr "[SSL]: Örtlichkeit: %c%s"
+
+#~ msgid "[SSL]: Issuer:"
+#~ msgstr "SSL]: Ausgeber:"
+
+#~ msgid "[SSL]: Public key: %c%s (%d bits)"
+#~ msgstr "[SSL]: Öffentlicher Schlüssel: %c%s (%d Bit)"
+
+#~ msgid "[SSL]: Signature type: %c%s"
+#~ msgstr "[SSL]: Signaturtyp: %c%s"
+
+#~ msgid "[SSL]: Signature contents: %c%s"
+#~ msgstr "[SSL]: Signaturinhalte: %c%s"
+
+#~ msgid "Peer X509 certificate"
+#~ msgstr "Gleichgestellter-X509-Zertifikat"
+
+#~ msgid "[SSL]: The peer didn't provide a certificate"
+#~ msgstr "[SSL]: Der Gleichgestellte bietet kein Zertifikat an"
+
+#~ msgid "Current transmission cipher"
+#~ msgstr "Aktuelle Übertragungsverschlüsselung"
+
+#~ msgid "[SSL]: Can't find out the current cipher info"
+#~ msgstr ""
+#~ "[SSL]: Es kann keine Information über die aktuelle Verschlüsselung "
+#~ "bekommen werden"
+
+#~ msgid "[%s]: [SSL]: Using certificate file %s"
+#~ msgstr "[%s]: [SSL] Zertifikatsdatei %s wird benutzt"
+
+#~ msgid ""
+#~ "[%s]: [SSL ERROR]: File I/O error while trying to use the certificate "
+#~ "file %s"
+#~ msgstr ""
+#~ "[%s]: [SSL-FEHLER]: Datei-E/A-Fehler beim Versuch der Benutzung der "
+#~ "Zertifikatsdatei %s"
+
+#~ msgid "[%s]: [SSL ERROR]: %s"
+#~ msgstr "[%s]: [SSL-FEHLER]: %s"
+
+#~ msgid "[%s]: [SSL]: Using private key file %s"
+#~ msgstr "[%s]: [SSL]: Private Schlüsseldatei %s wird benutzt"
+
+#~ msgid ""
+#~ "[%s]: [SSL ERROR]: File I/O error while trying to use the private key "
+#~ "file %s"
+#~ msgstr ""
+#~ "[%s]: [SSL-FEHLER]: Datei-E/A-Fehler beim Versuch der Benutzung der "
+#~ "privaten Schlüsseldatei %s"
+
+#~ msgid "Ops... for some reason the link object has been destroyed"
+#~ msgstr "Ops... aus einigen Gründen wurde das Verknüpfungsobjekt zerstört"
+
+#~ msgid "Using filtered IRC protocol: Link filter is \"%Q\""
+#~ msgstr ""
+#~ "Gefiltertes IRC-Protokoll wird benutzt: Verknüpfungsfilter ist \"%Q\""
+
+#~ msgid "Failed to set up the link filter \"%Q\", will try with plain IRC"
+#~ msgstr ""
+#~ "Einrichten des Verknüpfungsfilters \"%Q\" fehlgeschlagen: einfaches IRC "
+#~ "wird versucht"
+
+#~ msgid "Failed to start the connection: %Q"
+#~ msgstr "Start der Verbindung fehlgeschlagen: %Q"
+
+#~ msgid "Contacting %Q %s (%s) on port %u"
+#~ msgstr "%Q %s (%s) wird an Port %u kontaktiert"
+
+#~ msgid "proxy host"
+#~ msgstr "Proxy-Host"
+
+#~ msgid "IRC server"
+#~ msgstr "IRC-Server"
+
+#~ msgid "Low-level transport connection established [%s (%s:%u)]"
+#~ msgstr "Transportverbindung auf niedriger Ebene hergestellt [%s (%s:%u)]"
+
+#~ msgid "Starting Secure Socket Layer handshake"
+#~ msgstr "Es wird SSL-Handshake gestartet"
+
+#~ msgid "%Q established [%s (%s:%u)]"
+#~ msgstr "%Q hergestellt [%s (%s:%u)]"
+
+#~ msgid "Secure proxy connection"
+#~ msgstr "sichere Proxy-Verbindung"
+
+#~ msgid "Proxy connection"
+#~ msgstr "Proxy-Verbindung"
+
+#~ msgid "Negotiating relay information"
+#~ msgstr "Relay-Informationen werden negiert"
+
+#~ msgid "Sent connection request, waiting for acknowledgement"
+#~ msgstr "Verbindungsanfrage wurde gesendet, es wird auf Bestätigung gewartet"
+
+#~ msgid "Sent target host data, waiting for acknowledgement"
+#~ msgstr "Zielhostdaten wurden gesendet, es wird auf Bestätigung gewartet"
+
+#~ msgid "Sent auth method request, waiting for acknowledgement"
+#~ msgstr ""
+#~ "Authentifizierungsmethode-Anfrage wurde gesendet, es wird auf Bestätigung "
+#~ "gewartet"
+
+#~ msgid "Sent username and password, waiting for acknowledgement"
+#~ msgstr ""
+#~ "Benutzername und Passwort wurde gesendet, es wird auf Bestätigung gewartet"
+
+#~ msgid "Sent connection request, waiting for \"HTTP 200\" acknowledgement"
+#~ msgstr ""
+#~ "Verbindungsanfrage wurde gesendet, es wird auf \"HTTP 200\"-Bestätigung "
+#~ "gewartet"
+
+#~ msgid "[SSL]: %Q"
+#~ msgstr "[SSL]: %Q"
+
+#~ msgid "[SSL ERROR]: %Q"
+#~ msgstr "[SSL-FEHLER]: %Q"
+
+#~ msgid "[PROXY]: %Q"
+#~ msgstr "[PROXY-FEHLER]: %Q"
+
+#~ msgid "[PROXY ERROR]: %Q"
+#~ msgstr "[PROXY-FEHLER]: %Q"
+
+#~ msgid "[SOCKET]: %Q"
+#~ msgstr "[SOCKET]: %Q"
+
+#~ msgid "[SOCKET ERROR]: %Q"
+#~ msgstr "[SOCKET-FEHLER]: %Q"
+
+#~ msgid "[SOCKET WARNING]: %Q"
+#~ msgstr "[SOCKET-WARNUNG]: %Q"
+
+#~ msgid "Binding to local address %s"
+#~ msgstr "An lokale Adresse %s binden"
+
+#~ msgid ""
+#~ "Binding to local address %s failed: the kernel will choose the correct "
+#~ "interface"
+#~ msgstr ""
+#~ "Binden an lokale Adresse %s fehlgeschlagen: Der Kernel wird die richtige "
+#~ "Schnittstelle auswählen"
+
+#~ msgid "Using HTTP protocol."
+#~ msgstr "HTTP-Protokoll benutzen"
+
+#~ msgid "Using SOCKSV4 protocol."
+#~ msgstr "SOCKSV4-Protokoll benutzen."
+
+#~ msgid "Using SOCKSV5 protocol."
+#~ msgstr "SOCKSV5-Protokoll benutzen."
+
+#~ msgid "We can accept auth method 0 (no auth)"
+#~ msgstr ""
+#~ "Authentifizierungsmethode 0 (keine Authentifizieung) kann akzeptiert "
+#~ "werden"
+
+#~ msgid "We can accept auth method 0 (no auth) or 2 (user/pass)"
+#~ msgstr ""
+#~ "Authentifizierungsmethode 0 (keine Authentifizierung) oder 2 (Benutzer/"
+#~ "Passwort) kann akzeptiert werden"
+
+#~ msgid "Proxy response: auth OK: access granted"
+#~ msgstr "Proxy-Antwort: Authentifizierung OK: Zugriff gewährt"
+
+#~ msgid "Proxy response: Auth method OK: using method 0 (no auth)"
+#~ msgstr ""
+#~ "Proxy-Antwort: Authentifizierung OK: benutze Methode 0 (keine "
+#~ "Authentifizierung)"
+
+#~ msgid "Proxy response: Auth method OK: using method 2 (user/pass)"
+#~ msgstr ""
+#~ "Proxy-Antwort: Authentifizierung OK: benutze Methode 2 (Benutzer/Passwort)"
+
+#~ msgid "Proxy response: target data OK: request granted"
+#~ msgstr "Proxy-Antwort: Zieldaten OK: Anfrage gewährt"
+
+#~ msgid "Proxy response: "
+#~ msgstr "Proxy Antwort: "
+
+#~ msgid "Proxy said something about \""
+#~ msgstr "Proxy sagte einiges über \""
+
+#~ msgid "\" ...that looks like an error to me..."
+#~ msgstr "\" ...was wie ein Fehler für KVirc aussieht..."
+
+#~ msgid "Server X509 certificate"
+#~ msgstr "Server X509-Zertifikat"
+
+#~ msgid "The server didn't provide a certificate"
+#~ msgstr "Der Server bietet kein Zertifikat an"
+
+#~ msgid "Unable to determine the current cipher"
+#~ msgstr "Die aktuelle Verschlüsselung konnte nicht festgestellt werden"
+
+#~ msgid "Partial socket write: packet broken into smaller pieces."
+#~ msgstr "Partielles Socket-Schreiben: Paket in kleinere Teile aufgeteilt."
+
+#~ msgid "Installation problems ?"
+#~ msgstr "Installationsprobleme?"
+
+#~ msgid ""
+#~ "<b>Ooops...</b><br><br><b>There are some reasons that make me think that "
+#~ "your KVIrc installation is incomplete.</b><br><br>I might be wrong, but "
+#~ "you seem to miss some of the features that the default KVIrc script "
+#~ "provides.This may happen because you have upgraded to an unstable cvs "
+#~ "version, because you have accidentally deleted or damaged your "
+#~ "configuration files, because you have installed an incomplete script or "
+#~ "because you have hit a bug in KVIrc.<br><br>I can repeat the installation "
+#~ "of the default script in order to restore the missing features.<br><b>Do "
+#~ "you want the default script to be restored ?</b><br><br><font size=\"-1"
+#~ "\">Hint: If you're a scripter and have intentionally removed some of the "
+#~ "scripting features then you may safely click on \"No and Don't Ask Me "
+#~ "Again\", otherwise it might be a good idea to click \"Yes\". If you still "
+#~ "want to choose \"No\" you can always restore the default script by "
+#~ "choosing the appropriate entry from the \"Scripting\" menu.</font>"
+#~ msgstr ""
+#~ "<b>Ooops...</b><br><br><b>Es gibt einige Gründe, die dafür sprechjen, "
+#~ "dass es scheint, als wäre die KVIrc-Installation nicht komplett.</"
+#~ "b><br><br>Es kann alles in Ordnung sein, aber es scheinen einige "
+#~ "Fähigkeiten zu fehlen, die KVIrc-Skript anbietet. Dies kann passieren, "
+#~ "wenn man zu einer instabilen CVS-Version aktualisiert, zufällig "
+#~ "Konfigurationsdateien beschädigt oder gelöscht, ein nicht komplettes "
+#~ "Skript installiert oder einen Bug in KVIrc gefunden hat.<br><br>Es kann "
+#~ "die Installation des Defaultskripts wiederholt werden, um die fehlenden "
+#~ "Fähigkeiten wiederherzustellen.<br><b>Soll das Defaultskript "
+#~ "wiederhergestellt werden?</b><br><br><font size=\"-1\">Tipp: Wenn man ein "
+#~ "Skriptschreiber ist und einige Skriptfähigkeiten absichtlich gelöscht "
+#~ "hat, kann man sicher auf \"Nein und nicht wieder fragen\" klicken, "
+#~ "ansonsten ist es eine gute Idee auf \"Ja\" zu klicken. Wenn trotzdem "
+#~ "\"Nein\" kann man immer das Defaultskript mit dem zugehörigem Eintrag im "
+#~ "\"Skript\"-menü wiederherstellen.</font>"
+
+#~ msgid "No and Don't Ask Me Again"
+#~ msgstr "Nein und nicht wieder fragen"
+
+#~ msgid "Restore Default Script - KVIrc"
+#~ msgstr "Standardskript wiederherstellen - KVIrc"
+
+#~ msgid ""
+#~ "You are about to restore the default script.<br>This will erase any "
+#~ "script changes you have made.<br>Do you wish to proceed?"
+#~ msgstr ""
+#~ "Es soll das Standardskript wiederhergestellt werden.<br>Dies wird alle "
+#~ "Skriptänderungen löschen.<br>Soll fortgesetzt werden?"
+
+#~ msgid "Remote command received (%s ...)"
+#~ msgstr "Entferntes Kommando empfangen (%s ...)"
+
+#~ msgid "File download failed"
+#~ msgstr "Herunterladen von Datei fehlgeschlagen"
+
+#~ msgid "File download from %1 failed"
+#~ msgstr "Herunterladen von Datei von %1 fehlgeschlagen"
+
+#~ msgid "File download terminated"
+#~ msgstr "Herunterladen von Datei beendet"
+
+#~ msgid "File download from %1 terminated"
+#~ msgstr "Herunterladen von Datei von %1 beendet"
+
+#~ msgid "Avatar download failed for %Q!%Q@%Q and url %Q: %Q"
+#~ msgstr "Avatardownload für %Q!%Q@%Q und URL %Q: %Q fehlgeschlagen"
+
+#~ msgid "The commandline for media type '%s' seems to be broken"
+#~ msgstr "Die Kommandozeile für Medientyp '%s' scheint fehlerhaft zu sein"
+
+#~ msgid "Media type of file %s matched to '%s' but no commandline specified"
+#~ msgstr ""
+#~ "Medientyp von Datei %s paßt zu '%s', aber es ist keine Kommandozeile "
+#~ "angegeben"
+
+#~ msgid "No idea on how to play file %s (no media type match)"
+#~ msgstr ""
+#~ "Es besteht keine Möglichkeit, Datei %s abzuspielen (kein Medientyp paßt)"
+
+#~ msgid "Sending out PING based lag probe"
+#~ msgstr "PING basierend auf Lagpüfung senden"
+
+#~ msgid "Sending out CTCP based lag probe"
+#~ msgstr "CTCP basierend auf Lagpüfung senden"
+
+#~ msgid "Registered lag check with reliability %u (%s)"
+#~ msgstr "Registrierte Lagprüfung mit Zuverlässigkeit %u (%s)"
+
+#~ msgid "Lag check completed (%s)"
+#~ msgstr "Lagprüfung abgeschlossen (%s)"
+
+#~ msgid "Lag check aborted (%s)"
+#~ msgstr "Lagprüfung abgebrochen (%s)"
+
+#~ msgid "Backward compatibility action for toolbar.define"
+#~ msgstr "Rückwärtskompatibilitätsaktion für toolbar.define"
+
+#~ msgid "IRC Context related actions"
+#~ msgstr "Aktionen bezüglich IRC-Kontext"
+
+#~ msgid "Generic"
+#~ msgstr "Generisch"
+
+#~ msgid "Generic actions"
+#~ msgstr "Generische Aktionen"
+
+#~ msgid "Settings"
+#~ msgstr "Einstellungen"
+
+#~ msgid "Actions related to settings"
+#~ msgstr "Aktionen bezüglich Einstellungen"
+
+#~ msgid "Scripting"
+#~ msgstr "Skripte"
+
+#~ msgid "Scripting related actions"
+#~ msgstr "Aktionen bezüglich Skripte"
+
+#~ msgid "GUI"
+#~ msgstr "GUI"
+
+#~ msgid "Actions related to the Graphic User Interface"
+#~ msgstr "Aktionen bezüglich Benutzeroberfläche"
+
+#~ msgid "IRC Channel related actions"
+#~ msgstr "Aktionen bezüglich IRC-Kanal"
+
+#~ msgid "Reconnect attempt aborted"
+#~ msgstr "Erneuter Verbindungsversuch abgebrochen"
+
+#~ msgid ""
+#~ "No servers available. Check the options dialog or use the /SERVER command"
+#~ msgstr ""
+#~ "Keine Server verfügbar: Optionendialog prüfen oder das /SERVER-Kommando "
+#~ "benutzen"
+
+#~ msgid "No proxy hosts available, resuming direct connection"
+#~ msgstr "Keine Proxy-Hosts verfügbar: Direktverbindung wird fortgesetzt"
+
+#~ msgid "Connection attempt failed [%s]"
+#~ msgstr "Verbindungsversuch fehlgeschlagen [%s]"
+
+#~ msgid "Will attempt to reconnect in %d seconds"
+#~ msgstr "Erneuter Verbindungsversuch wird in %d Sekunden versucht"
+
+#~ msgid "%d of %d"
+#~ msgstr "%d von %d"
+
+#~ msgid "Maximum number of reconnect attempts reached (%d): giving up"
+#~ msgstr ""
+#~ "Maximale Anzahl der Wiederholungsversuche erreicht (%d): es wird "
+#~ "aufgegeben"
+
+#~ msgid ""
+#~ "The connection attempt failed while using a cached IP address for the "
+#~ "current server"
+#~ msgstr ""
+#~ "Der Verbindungsversuch ist fehlgeschlagen, weil das Zwischenspeichern der "
+#~ "IP für den aktuellen Server eingeschaltet ist"
+
+#~ msgid "The problem *might* be caused by an updated DNS entry"
+#~ msgstr "Das Problem *könnte* ein geänderter DNS-Eintrag sein"
+
+#~ msgid "Try reconnecting with caching disabled"
+#~ msgstr "Neuverbinden mit ausgeschalteter Zwischenspeicherung versuchen"
+
+#~ msgid "Secure connection"
+#~ msgstr "sichere Verbindung"
+
+#~ msgid "Connection terminated [%s (%s:%u)]"
+#~ msgstr "Verbindung beendet [%s (%s:%u)]"
+
+#~ msgid "The connection terminated unexpectedly. Trying to reconnect..."
+#~ msgstr ""
+#~ "Die Verbindung wurde unerwartet beendet: es wird versucht, erneut zu "
+#~ "verbinden..."
+
+#~ msgid "Sent QUIT, waiting for the server to close the connection..."
+#~ msgstr ""
+#~ "QUIT wurde gesendet, es wird auf das Schliessen der Verbindung vom Server "
+#~ "gewartet..."
+
+#~ msgid "No "
+#~ msgstr "Nein"
+
+#~ msgid " symbol exported: not a kvirc module ?"
+#~ msgstr " symbol exportiert: kein KVIrc-Modul?"
+
+#~ msgid "This module has no version informations: refusing to load it"
+#~ msgstr ""
+#~ "Dieses Modul hat keine Versionsinformationen: es wird abgelehnt es zu "
+#~ "laden"
+
+#~ msgid ""
+#~ "This module was compiled for a different KVIrc version and can't be loaded"
+#~ msgstr ""
+#~ "Dieses Modul wurde für eine andere Version von KVIrc kompiliert und kann "
+#~ "nicht geladen werden"
+
+#~ msgid "Failed to execute the init routine"
+#~ msgstr "Ausführen der init-Routine fehlgeschlagen"
+
+#~ msgid "Loaded module '%s' (%s)"
+#~ msgstr "Geladenes Modul '%s' (%s)"
+
+#~ msgid "Unloaded module '%s'"
+#~ msgstr "Entladenes Modul '%s'"
+
+#~ msgid "This option is also available as"
+#~ msgstr "Diese Option is auch verfügbar als"
+
+#~ msgid "Channel mode"
+#~ msgstr "Kanalmodus"
+
+#~ msgid "Split View"
+#~ msgstr "Trennungsanzeige"
+
+#~ msgid "User List"
+#~ msgstr "Benutzerliste"
+
+#, fuzzy
+#~ msgid "Ban Editor"
+#~ msgstr "RAW-Editor"
+
+#, fuzzy
+#~ msgid "Ban Exception Editor"
+#~ msgstr "Bannausnahmen-Editor anzeigen"
+
+#, fuzzy
+#~ msgid "Invite Exception Editor"
+#~ msgstr "Einladungausnahmen-Editor anzeigen"
+
+#, fuzzy
+#~ msgid "Mode Editor"
+#~ msgstr "Modus-Editor anzeigen"
+
+#~ msgid "said something recently"
+#~ msgstr "sagte kürzlich einiges"
+
+#~ msgid "is talking"
+#~ msgstr "redet gerade"
+
+#~ msgid "and"
+#~ msgstr "und"
+
+#~ msgid "were talking recently"
+#~ msgstr "sagten vor kurzem etwas"
+
+#~ msgid "are talking"
+#~ msgstr "reden"
+
+#~ msgid "and other %1 users"
+#~ msgstr "und %1 andere Benutzer"
+
+#~ msgid "Dead channel"
+#~ msgstr "Toter Kanal"
+
+#~ msgid "operator"
+#~ msgstr "Operator"
+
+#~ msgid "operators"
+#~ msgstr "Operatoren"
+
+#~ msgid "active user"
+#~ msgstr "Aktiver Benutzer"
+
+#~ msgid "active users"
+#~ msgstr "Aktive Benutzer"
+
+#~ msgid "hot user"
+#~ msgstr "Heisser Benutzer"
+
+#~ msgid "hot users"
+#~ msgstr "Heisse Benutzer"
+
+#~ msgid "channel owner"
+#~ msgstr "Kanaleigentümer"
+
+#~ msgid "channel owners"
+#~ msgstr "Kanaleigentümer"
+
+#~ msgid "channel administrator"
+#~ msgstr "Kanaladministrator"
+
+#~ msgid "channel administrators"
+#~ msgstr "Kanaladministratoren"
+
+#~ msgid "half-operator"
+#~ msgstr "Halb-Operator"
+
+#~ msgid "half-operators"
+#~ msgstr "Halb-Operatoren"
+
+#~ msgid "voiced user"
+#~ msgstr "Benutzer mit Voice-Status"
+
+#~ msgid "voiced users"
+#~ msgstr "Benutzer mit Voice-Status"
+
+#~ msgid "user-operator"
+#~ msgstr "user-Operator"
+
+#~ msgid "user-operators"
+#~ msgstr "user-Operatoren"
+
+#~ msgid "user total"
+#~ msgstr "Benutzer gesamt"
+
+#~ msgid "users total"
+#~ msgstr "Benutzer gesamt"
+
+#~ msgid "No activity"
+#~ msgstr "Keine Aktivität"
+
+#~ msgid "Minimal activity"
+#~ msgstr "Minimale Aktivität"
+
+#~ msgid "Very low activity"
+#~ msgstr "Sehr niedrige Aktivität"
+
+#~ msgid "Might be low activity"
+#~ msgstr "Möglicherweise niedrige Aktivität"
+
+#~ msgid "Low activity"
+#~ msgstr "Niedrige Aktivität"
+
+#~ msgid "Might be medium activity"
+#~ msgstr "Möglicherweise mittlere Aktivität"
+
+#~ msgid "Medium activity"
+#~ msgstr "Mittlere Aktivität"
+
+#~ msgid "Might be high activity"
+#~ msgstr "Möglicherweise hohe Aktivität"
+
+#~ msgid "High activity"
+#~ msgstr "Hohe Aktivität"
+
+#~ msgid "Might be very high activity"
+#~ msgstr "Möglicherweise sehr hohe Aktivität"
+
+#~ msgid "Very high activity"
+#~ msgstr "Sehr hohe Aktivität"
+
+#~ msgid "Might be flooded with messages"
+#~ msgstr "Möglicherweise geflutet mit Nachrichten"
+
+#~ msgid "Flooded with messages"
+#~ msgstr "Geflutet mit Nachrichten"
+
+#~ msgid "human"
+#~ msgstr "menschlich"
+
+#~ msgid "[Dead channel]"
+#~ msgstr "[Toter Kanal]"
+
+#~ msgid " on "
+#~ msgstr " auf "
+
+#~ msgid ""
+#~ "The crypto engine was unable to encrypt the current message (%Q): %s, no "
+#~ "data sent to the server"
+#~ msgstr ""
+#~ "Die Verschlüsselungsroutine war nicht in der Lage, die aktuelle Nachricht "
+#~ "(%Q): %s zu verschlüsseln: keine Daten an Server gesendet"
+
+#~ msgid "Sent part request, waiting for reply..."
+#~ msgstr "Part-Anfrage gesendet: es wird auf Antwort gewartet..."
+
+#~ msgid "<b>Channel mode:</b>"
+#~ msgstr "<b>Kanalmodus:</b>"
+
+#~ msgid "<br><b>Key:</b> %s"
+#~ msgstr "<br><b>Schlüssel:</b> %s"
+
+#~ msgid "<br><b>Limit:</b> %s"
+#~ msgstr "<br><b>Grenze:</b> %s"
+
+#~ msgid "Channel synchronized in %d.%d seconds"
+#~ msgstr "Kanal in %d.%d Sekunden synchronisiert"
+
+#~ msgid "No topic message has been received from the server yet"
+#~ msgstr "Keine Titelnachricht wurde bis jetzt vom Server empfangen"
+
+#~ msgid "Channel topic:"
+#~ msgstr "Kanalthema:"
+
+#~ msgid "Set by"
+#~ msgstr "Gesetzt von"
+
+#~ msgid "Set on"
+#~ msgstr "Gesetzt am"
+
+#~ msgid "Double-click to edit..."
+#~ msgstr "Doppelklick zum Bearbeiten..."
+
+#~ msgid "No topic is set"
+#~ msgstr "Kein Thema gesetzt"
+
+#~ msgid "Double-click to set..."
+#~ msgstr "Doppelklick zum Setzen..."
+
+#, fuzzy
+#~ msgid "History"
+#~ msgstr "Verzeichnis"
+
+#~ msgid "Commit Changes"
+#~ msgstr "Änderungen anwenden"
+
+#~ msgid "Discard Changes"
+#~ msgstr "Änderungen verwerfen"
+
+#~ msgid "Copy to clipboard"
+#~ msgstr "In Zwischenablage kopieren"
+
+#~ msgid "CTCP Page - KVIrc"
+#~ msgstr "CTCP-Page - KVIrc"
+
+#~ msgid "Active Bans"
+#~ msgstr "Aktive Banns"
+
+#~ msgid "Active Invite Exceptions"
+#~ msgstr "Aktive Invite-Ausnahmen"
+
+#~ msgid "Active Ban Exceptions"
+#~ msgstr "Aktive Bann-Ausnahmen"
+
+#~ msgid "Mask"
+#~ msgstr "Maske"
+
+#~ msgid "Set at"
+#~ msgstr "Gesetzt um"
+
+#~ msgid "Window List"
+#~ msgstr "Fensterliste"
+
+#~ msgid ""
+#~ "<b>Shift+Drag</b> or <b>Ctrl+Drag</b> to move the applet "
+#~ "around<br><b>Right click</b> to see the other options"
+#~ msgstr ""
+#~ "<b>Shift+Drag</b> oder <b>Ctrl+Drag</b> zum Verschieben des "
+#~ "Applets<br><b>Rechtsklick</b> zum Ansehen weiterer Optionen"
+
+#~ msgid "<b>Right click</b> to add/remove applets"
+#~ msgstr "<b>Rechtsklick</b> zum Hinzufügen/Löschen von Applets"
+
+#~ msgid "Remove %Q"
+#~ msgstr "%Q löschen"
+
+#~ msgid "Add Applet"
+#~ msgstr "Applet hinzufügen"
+
+#~ msgid ""
+#~ "Drag the applet while holding the Shift or Ctrl key to move it to the "
+#~ "desired position"
+#~ msgstr ""
+#~ "Das Applet mit gedrückter Shift- oder Strg-Taste ziehen, um es zu der "
+#~ "gewünschten Position zu verschieben"
+
+#~ msgid "Connection in progress..."
+#~ msgstr "Verbindungsaufbau läuft..."
+
+#~ msgid "Login in progress..."
+#~ msgstr "Einloggen in Bearbeitung..."
+
+#~ msgid "Not connected"
+#~ msgstr "Nicht verbunden"
+
+#~ msgid "No IRC context"
+#~ msgstr "Kein IRC-Kontext"
+
+#, fuzzy
+#~ msgid "Crypting"
+#~ msgstr "Verschlüsselung"
+
+#~ msgid "Private Text Encoding"
+#~ msgstr "Private Textkodierung"
+
+#~ msgid "Ops...I've accidentally lost the crypting engine..."
+#~ msgstr ""
+#~ "Ops... I habe unglücklicherweise die Verbindung zur "
+#~ "Verschlüsselungsmethode verloren..."
+
+#~ msgid "List of window types available in this release of KVIrc:"
+#~ msgstr "Liste der verfügbaren Fenstertypen in dieser Version von KVirc:"
+
+#~ msgid "Use Default Encoding"
+#~ msgstr "Standardkodierung benutzen"
+
+#~ msgid "Standard"
+#~ msgstr "Standard"
+
+#~ msgid "Smart"
+#~ msgstr "Intelligent"
+
+#~ msgid "&Undock"
+#~ msgstr "&Loslösen"
+
+#~ msgid "&Dock"
+#~ msgstr "I&n Kontrollleiste einbinden"
+
+#~ msgid "Mi&nimize"
+#~ msgstr "M&inimieren"
+
+#~ msgid "Ma&ximize"
+#~ msgstr "Ma&ximieren"
+
+#~ msgid "&Restore"
+#~ msgstr "Wieder&herstellen"
+
+#~ msgid "Text &Encoding"
+#~ msgstr "Text&kodierung"
+
+#~ msgid "Sa&ve Window Properties"
+#~ msgstr "Fenstereigenschaften &speichern"
+
+#~ msgid "Search tools"
+#~ msgstr "Suchwerkzeuge"
+
+#~ msgid "### Log session terminated at %s ###"
+#~ msgstr "### Log-Sitzung beendet am %s ###"
+
+#~ msgid "### Log session started at %s ###"
+#~ msgstr "### Log-Sitzung gestartet am %s ###"
+
+#~ msgid "### Existing data buffer:"
+#~ msgstr "### Existierender Datenpuffer:"
+
+#~ msgid "### End of existing data buffer."
+#~ msgstr "### Ende des existierenden Datenpuffers."
+
+#~ msgid "Hide Find Window"
+#~ msgstr "Hilfefenster ausblenden"
+
+#~ msgid "Show Find Window"
+#~ msgstr "Suchfenster anzeigen"
+
+#~ msgid "Zoom In"
+#~ msgstr "Hineinzoomen"
+
+#~ msgid "Zoom Out"
+#~ msgstr "Herauszoomen"
+
+#~ msgid "Choose Temporary Font..."
+#~ msgstr "Temporäre Schriftart auswählen..."
+
+#~ msgid "Choose Temporary Background..."
+#~ msgstr "Temporären Hintergrund auswählen..."
+
+#~ msgid "Reset Temporary Background"
+#~ msgstr "Temporären Hintergrund zurücksetzen..."
+
+#~ msgid "Clear Buffer"
+#~ msgstr "Puffer löschen"
+
+#~ msgid "Choose the background image..."
+#~ msgstr "Hintergrund-Bilddatei auswählen..."
+
+#~ msgid "Invalid image"
+#~ msgstr "Ungültiges Bild"
+
+#~ msgid "Failed to load the selected image"
+#~ msgstr "Laden des ausgewählten Bildes fehlgeschlagen"
+
+#~ msgid "Pos %d"
+#~ msgstr "Pos. %d"
+
+#~ msgid "Not found"
+#~ msgstr "Nicht gefunden"
+
+#~ msgid "Looking up host %Q..."
+#~ msgstr "Es wird versucht, Host %Q aufzulösen..."
+
+#~ msgid "Double-click to open this link"
+#~ msgstr "Doppelklick zum Öffnen der Verknüpfung"
+
+#~ msgid "Unable to look it up hostname: Hostname appears to be masked"
+#~ msgstr ""
+#~ "Auflösen des Server-Hostnames fehlgeschlagen: Hostname sieht maskiert aus"
+
+#~ msgid "Unable to look it up hostname: Unknown host"
+#~ msgstr "Auflösen des Hostnames fehlgeschlagen: Unbekannter Host"
+
+#~ msgid ""
+#~ "Double-click to look up this hostname<br>Right-click to view other options"
+#~ msgstr ""
+#~ "Doppelklick zum Auflösen des Hostnames<br>Rechtsklick zum Ansehen "
+#~ "weiterer Optionen"
+
+#~ msgid "Server appears to be a network hub<br>"
+#~ msgstr "Server scheint ein Netzwerkhub zu sein<br>"
+
+#~ msgid "Unknown server<br>"
+#~ msgstr "Unbekannter Server<br>"
+
+#~ msgid "Double-click to read the MOTD<br>Right-click to view other options"
+#~ msgstr ""
+#~ "Doppelklick zum Lesen der MOTD<br>Rechtsklick zum Ansehen weiterer "
+#~ "Optionen"
+
+#~ msgid "Double-click to set<br>"
+#~ msgstr "Doppelklick zum Setzen<br>"
+
+#~ msgid "You're not an operator: You may not change channel modes"
+#~ msgstr "Kein Operator: Es können keine Kanalmodi geändert werden"
+
+#~ msgid "Nothing known about %Q"
+#~ msgstr "Nichts bekannt über %Q"
+
+#~ msgid "Nothing known about %Q (no connection)"
+#~ msgstr "Nichts über %Q bekannt (keine Verbindung)"
+
+#~ msgid "<b>%Q</b>: +%Q (%u users)<hr>%Q"
+#~ msgstr "<b>%Q</b>: +%Q (%u Benutzer)<hr>%Q"
+
+#~ msgid "Double-click to join %Q<br>Right click to view other options"
+#~ msgstr ""
+#~ "Doppelklick zum Betreten von %Q<br>Rechtsklick zum Ansehen weiterer "
+#~ "Optionen"
+
+#~ msgid "<b>Double-click:</b><br>%Q"
+#~ msgstr "<b>Doppelklick:</b><br>%Q"
+
+#~ msgid "<b>Middle-click:</b><br>%Q"
+#~ msgstr "<b>Mittelklick:</b><br>%Q"
+
+#~ msgid "<b>Right-click:</b><br>%Q"
+#~ msgstr "<b>Rechtsklick:</b><br>%Q"
+
+#~ msgid "Toolbars"
+#~ msgstr "Werkzeugleisten"
+
+#~ msgid "Orientation"
+#~ msgstr "Ausrichtung"
+
+#~ msgid "Detached"
+#~ msgstr "Losgelöst"
+
+#~ msgid "Flat"
+#~ msgstr "Flach"
+
+#~ msgid "Icon Size"
+#~ msgstr "Symbolgröße"
+
+#~ msgid "Small (22x22)"
+#~ msgstr "Klein (22x22)"
+
+#~ msgid "Large (32x32)"
+#~ msgstr "Gross (32x32)"
+
+#~ msgid "Show User List"
+#~ msgstr "Benutzerliste anzeigen"
+
+#~ msgid "Query Targets"
+#~ msgstr "Ziele anfragen"
+
+#, fuzzy
+#~ msgid "Query target:"
+#~ msgstr "Ziele anfragen"
+
+#, fuzzy
+#~ msgid "%1 is using irc server: %2 (%3 hops)"
+#~ msgstr "Benutzt Server <b>%1</b>"
+
+#, fuzzy
+#~ msgid "%1 is using irc server: %2"
+#~ msgstr "Benutzt Server <b>%1</b>"
+
+#, fuzzy
+#~ msgid "[Dead Query]"
+#~ msgstr "[Tote Anfrage]"
+
+#, fuzzy
+#~ msgid ", using server %1"
+#~ msgstr "Benutzt Server <b>%1</b>"
+
+#, fuzzy
+#~ msgid " (%1 hops)"
+#~ msgstr "%1 Hops"
+
+#, fuzzy
+#~ msgid "Common channels: %2"
+#~ msgstr "Kanäle betreten"
+
+#~ msgid ""
+#~ "The target of this query has changed from \r!n\r%Q\r [%Q@\r!h\r%Q\r] to "
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+#~ msgstr ""
+#~ "Das Ziel dieser Anfrage wurde von \r!n\r%Q\r [%Q@\r!h\r%Q\r] in \r!n\r%Q"
+#~ "\r [%Q@\r!h\r%Q\r] geändert"
+
+#~ msgid "Common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "Geläufige Kanäle für \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid "No common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+#~ msgstr "Keine geläufige Kanäle für \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#~ msgid "[Dead query]"
+#~ msgstr "[Tote Anfrage]"
+
+#~ msgid "This query has no active targets, no message sent"
+#~ msgstr "Diese Anfrage hat keine aktiven Ziele: keine Nachricht gesendet"
+
+#~ msgid "No connection"
+#~ msgstr "Keine Verbindung"
+
+#~ msgid "IRC Context"
+#~ msgstr "IRC-Kontext"
+
+#~ msgid "Lag: %d.%d%d"
+#~ msgstr "Lag: %d.%d%d"
+
+#~ msgid "Lag: ?.??"
+#~ msgstr "Lag: ?.??"
+
+#~ msgid "away"
+#~ msgstr "weg"
+
+#~ msgid "In progress..."
+#~ msgstr "In Bearbeitung..."
+
+#~ msgid "Clipboard"
+#~ msgstr "Zwischenablage"
+
+#~ msgid "line break"
+#~ msgstr "Zeilenumbruch"
+
+#~ msgid "line breaks"
+#~ msgstr "Zeilenumbrüche"
+
+#~ msgid "&Paste"
+#~ msgstr "&Einfügen"
+
+#~ msgid "Paste (Slowly)"
+#~ msgstr "Einfügen (langsam)"
+
+#~ msgid "Paste &File"
+#~ msgstr "&Datei einfügen"
+
+#~ msgid "Stop Paste"
+#~ msgstr "Einfügen abbrechen"
+
+#~ msgid "Clear"
+#~ msgstr "Löschen"
+
+#~ msgid "Select All"
+#~ msgstr "Alles Auswählen"
+
+#~ msgid "%d matches: %Q"
+#~ msgstr "%d paßt: %Q"
+
+#~ msgid "No matches"
+#~ msgstr "Keine Übereinstimmungen"
+
+#~ msgid "Show History<br>&lt;Ctrl+PageUp&gt;"
+#~ msgstr "Verlauf anzeigen<br>&lt;Strg+Bild hoch&gt;"
+
+#~ msgid "Input History Disabled"
+#~ msgstr "Eingabeverlauf deaktiviert"
+
+#~ msgid "Show Icons Popup<br>&lt;Ctrl+I&gt;<br>See also /help texticons"
+#~ msgstr ""
+#~ "Symbolaufklappmenü anzeigen<b>&lt;Strg+I&gt;<br>Siehe auch /help texticons"
+
+#~ msgid "Multi-line Editor<br>&lt;Ctrl+Backspace&gt;"
+#~ msgstr "Mehrzeiliger Editor<br>&lt;Strg+Rücktaste&gt;"
+
+#~ msgid "Confirm Multiline Message"
+#~ msgstr "Mehrzeilige Nachricht bestätigen"
+
+#~ msgid ""
+#~ "You're about to send a message with %1 lines of text.<br><br>There is "
+#~ "nothing wrong with it, this warning is<br>here to prevent you from "
+#~ "accidentally sending<br>a really large message just because you didn't "
+#~ "edit it<br>properly after pasting text from the clipboard.<br><br>Do you "
+#~ "want the message to be sent?"
+#~ msgstr ""
+#~ "Es soll eine Nachricht mit %1 Zeilen Text gesendet werden.<br><br>Dies "
+#~ "ist nicht falsch, diese Warnung schützt vor zufälligem<br>Senden einer "
+#~ "wirklich großen Nachricht, die nicht seit dem Einfügen in die "
+#~ "Zwischenablage<br> bearbeitet wurde.<br><br>Soll die Nachricht gesendet "
+#~ "werden?"
+
+#~ msgid "Yes, always"
+#~ msgstr "Ja, immer"
+
+#, fuzzy
+#~ msgid "<Ctrl+Return>; submits, <Ctrl+Backspace>; hides this editor"
+#~ msgstr ""
+#~ "&lt;Strg+Return für absenden, &lt;Strg+Rücktaste&gt; für Ausblendung des "
+#~ "Editors"
+
+#~ msgid "&Cascade Windows"
+#~ msgstr "Fenster &staffeln"
+
+#~ msgid "Cascade &Maximized"
+#~ msgstr "Maximiert &staffeln"
+
+#~ msgid "&Tile Windows"
+#~ msgstr "Fenster &teilen"
+
+#~ msgid "&Auto Tile"
+#~ msgstr "&Automatisch teilen"
+
+#~ msgid "Anodine's Full Grid"
+#~ msgstr "Anodine's volles Gitter"
+
+#~ msgid "Pragma's Horizontal 4-Grid"
+#~ msgstr "Pragma`s horizontales 4er-Gitter"
+
+#~ msgid "Pragma's Vertical 4-Grid"
+#~ msgstr "Pragma`s vertikales 4er-Gitter"
+
+#~ msgid "Pragma's Horizontal 6-Grid"
+#~ msgstr "Pragma`s horizontales 6er-Gitter"
+
+#~ msgid "Pragma's Vertical 6-Grid"
+#~ msgstr "Pragma`s vertikales 6er-Gitter"
+
+#~ msgid "Pragma's Horizontal 9-Grid"
+#~ msgstr "Pragma`s horizontales 9er-Gitter"
+
+#~ msgid "Pragma's Vertical 9-Grid"
+#~ msgstr "Pragma`s vertikales 9er-Gitter"
+
+#~ msgid "Tile Met&hod"
+#~ msgstr "Teilen-Met&hode"
+
+#~ msgid "Expand &Vertically"
+#~ msgstr "&Vertikal expandieren"
+
+#~ msgid "Expand &Horizontally"
+#~ msgstr "&Horizontal expandieren"
+
+#~ msgid "Mi&nimize All"
+#~ msgstr "Alle mi&nimieren"
+
+#~ msgid "What's this?"
+#~ msgstr "Was ist das?"
+
+#~ msgid "Notify List"
+#~ msgstr "Benachrichtigungsliste"
+
+#~ msgid "Part All Channels"
+#~ msgstr "Alle Kanäle verlassen"
+
+#~ msgid "Close All Queries"
+#~ msgstr "Alle Anfragen schliessen"
+
+#~ msgid "Unhighlight All Windows"
+#~ msgstr "Hervorhebung aller Fenster aufheben"
+
+#~ msgid "Unhighlight All Channels"
+#~ msgstr "Hervorhebung aller Kanäle aufheben"
+
+#~ msgid "Unhighlight All Queries"
+#~ msgstr "Hervorhebung aller Anfragen aufheben"
+
+#~ msgid "Registered as"
+#~ msgstr "Registriert als"
+
+#~ msgid "Matched by"
+#~ msgstr "Passt auf"
+
+#~ msgid "On <b>"
+#~ msgstr "Auf <b>"
+
+#~ msgid "Using server <b>%1</b>"
+#~ msgstr "Benutzt Server <b>%1</b>"
+
+#~ msgid "%1 hops"
+#~ msgstr "%1 Hops"
+
+#~ msgid "Confirmation - KVIrc"
+#~ msgstr "Bestätigung - KVIrc"
+
+#~ msgid ""
+#~ "You have just attempted to close a console window<br>with an active "
+#~ "connection inside.<br>Are you sure you wish to terminate the connection?"
+#~ msgstr ""
+#~ "Es wurde versucht, das letzte Konsolefenster<br>mit einer aktiven "
+#~ "Verbindung zu schließen.<br>Soll die Verbindung wirklich beendet werden?"
+
+#~ msgid "&Always"
+#~ msgstr "&Immer"
+
+#~ msgid ""
+#~ "You have just attempted to close the last console window.<br>Are you sure "
+#~ "you wish to quit KVIrc?"
+#~ msgstr ""
+#~ "Es wurde versucht, das letzte Konsolefenster zu schliessen.<br>Soll KVIrc "
+#~ "wirklich beendet werden?"
+
+#~ msgid "Failed to load avatar with name \"%Q\" and local path \"%Q\""
+#~ msgstr ""
+#~ "Laden des Avatars mit Namen \"%Q\" und lokalem Pfad \"%Q\" fehlgeschlagen"
+
+#~ msgid "channels"
+#~ msgstr "Kanäle"
+
+#~ msgid "query"
+#~ msgstr "Anfrage"
+
+#~ msgid "queries"
+#~ msgstr "Anfragen"
+
+#~ msgid "Connected since"
+#~ msgstr "Verbunden seit"
+
+#~ msgid "Online for"
+#~ msgstr "Online als"
+
+#~ msgid "Server idle for"
+#~ msgstr "Serverleerlauf von"
+
+#~ msgid "Script"
+#~ msgstr "Skript"
+
+#~ msgid "The file %s already exists.<br>Do you wish to overwrite it?"
+#~ msgstr "Die Datei %s existiert bereits.<br>Soll sie überschrieben werden?"
+
+#~ msgid "File Exists - KVIrc"
+#~ msgstr "Datei existiert bereits - KVIrc"
+
+#~ msgid "Channel Modes"
+#~ msgstr "Kanalmodus"
+
+#~ msgid "There are active connections, are you sure you wish to "
+#~ msgstr "Es gibt aktive Verbindungen, soll"
+
+#~ msgid "quit KVIrc?"
+#~ msgstr "KVIrc beendet werden?"
+
+#~ msgid "Show %1"
+#~ msgstr "%1 anzeigen"
+
+#~ msgid "Customize..."
+#~ msgstr "Anpassen...."
+
+#~ msgid "Away Indicator"
+#~ msgstr "\"Abwesend\"-Indikator"
+
+#~ msgid "Away since"
+#~ msgstr "Abwesend seit"
+
+#~ msgid "Double click to leave away mode"
+#~ msgstr "Doppelklick zum Beenden des \"Abwesend\"-Modus"
+
+#~ msgid "Not away"
+#~ msgstr "nicht weg"
+
+#~ msgid "Double click to enter away mode"
+#~ msgstr "Doppelklick zum Setzen des \"weg\"-Modus"
+
+#~ msgid "Last checked %d mins %d secs ago"
+#~ msgstr "Zuletzt geprüft vor %d Minuten und %d Sekunden"
+
+#~ msgid "Lag measure not available yet"
+#~ msgstr "Lagmessung nicht verfügbar"
+
+#~ msgid "Lag meter engine disabled"
+#~ msgstr "Lag-Meter deaktiviert"
+
+#~ msgid "Double click to enable it"
+#~ msgstr "Doppelklick zum Aktivieren"
+
+#~ msgid "Lag Indicator"
+#~ msgstr "Lagindikator"
+
+#~ msgid "Simple Clock"
+#~ msgstr "Einfache Uhr"
+
+#, fuzzy
+#~ msgid "Show total connection time"
+#~ msgstr "Kanalsynchronisationszeit anzeigen"
+
+#~ msgid "Connection Timer"
+#~ msgstr "Verbindungstimer"
+
+#~ msgid "Unloadable: %s"
+#~ msgstr "Kann nicht geladen werden: %s"
+
+#~ msgid "Choose a File - KVIrc"
+#~ msgstr "Datei auswählen - KVIrc"
+
+#~ msgid "A&dd"
+#~ msgstr "&Hinzufügen"
+
+#, fuzzy
+#~ msgid "Sample Text"
+#~ msgstr "Beispiel"
+
+#~ msgid "Joined on <b>%1</b>"
+#~ msgstr "Betreten um <b>%1</b>"
+
+#~ msgid "Quiet for <b>%1h %2m %3s</b>"
+#~ msgstr "Still seit <b>%1 h %2 m %3 s</b>"
+
+#~ msgid "Cryptography/text transformation"
+#~ msgstr "Verschlüsselung-/Textumwandlung"
+
+#~ msgid "Use the crypt engine"
+#~ msgstr "Verschlüsselungsroutine benutzen"
+
+#~ msgid "Encrypt key:"
+#~ msgstr "Verschlüsselungsschlüssel"
+
+#~ msgid "Hex"
+#~ msgstr "Hex"
+
+#~ msgid "Enable decryption"
+#~ msgstr "Entschlüsselung deaktivieren"
+
+#~ msgid "Decrypt key:"
+#~ msgstr "Enschlüsselungsschlüssel"
+
+#~ msgid ""
+#~ "If you dont want to encrypt a particular text line then just start it "
+#~ "with the CTRL+P prefix"
+#~ msgstr ""
+#~ "Wenn eine Textzeile verschlüsselt werden soll, diese mit Strg+P beginnen "
+#~ "lassen"
+
+#~ msgid "Sorry, no crypt engines available"
+#~ msgstr "Keine Verschlüsselungsroutinen vorhanden"
+
+#~ msgid "Crypt: Can't create an engine instance: crypting disabled"
+#~ msgstr ""
+#~ "Verschlüsselung: Erstellung der Instanz einer Routine fehlgeschlagen: "
+#~ "Verschlüsselung nicht möglich"
+
+#~ msgid "Crypt: Can't initialize the engine :%s"
+#~ msgstr "Verschlüsselung: Die Routine kann nicht initialisiert werden: %s"
+
+#~ msgid ""
+#~ "Crypt: You have to enable encryption and/or decryption for the engine to "
+#~ "work"
+#~ msgstr ""
+#~ "Verschlüsselung: Die Verschlüsselung muss aktiviert werden und/oder die "
+#~ "Entschlüsselung, damit die Routine arbeitet."
+
+#~ msgid "Choose image ..."
+#~ msgstr "Bilddatei auswählen..."
+
+#~ msgid "Builtin images"
+#~ msgstr "Eingebaute Bilder"
+
+#~ msgid "Small icons"
+#~ msgstr "Kleine Symbole"
+
+#~ msgid "Full path"
+#~ msgstr "Voller Pfad"
+
+#~ msgid "directory"
+#~ msgstr "Verzeichnis"
+
+#~ msgid "pixels"
+#~ msgstr "Pixel"
+
+#~ msgid "bytes"
+#~ msgstr "Byte"
+
+#~ msgid "<b><font color=\"#EAEAEA\" size=\"-1\">Find Text</font></b>"
+#~ msgstr "<font color=\"#EAEAEA\" size=\"-1\">Text finden</font>"
+
+#~ msgid "&Regular expression"
+#~ msgstr "&Regulärer Ausdruck"
+
+#~ msgid "E&xtended regexp."
+#~ msgstr "Erweitertes Re&xgexp"
+
+#~ msgid "C&ase sensitive"
+#~ msgstr "G&ross-/Kleinschreibung beachten"
+
+#~ msgid "Find &Prev."
+#~ msgstr "&Verherigen finden"
+
+#~ msgid "&Find Next"
+#~ msgstr "&Nächsten finden"
+
+#~ msgid "Set &All"
+#~ msgstr "&Alles setzen"
+
+#~ msgid "Set &None"
+#~ msgstr "Keine&n setzen"
+
+#~ msgid "&Load From..."
+#~ msgstr "&Laden von..."
+
+#~ msgid "&Save As..."
+#~ msgstr "&Speichern als..."
+
+#~ msgid "Filter"
+#~ msgstr "Filter"
+
+#~ msgid "Select a Filter File"
+#~ msgstr "Filterdatei auswählen"
+
+#~ msgid "Can't open the filter file %s for reading."
+#~ msgstr "Filterdatei %s kann nicht zum Lesen geöffnet werden"
+
+#~ msgid "Select a Name for the Filter File"
+#~ msgstr "Dateiname für Filterdatei auswählen"
+
+#~ msgid "Failed to write the filter file %s (IO Error)"
+#~ msgstr "Fehler beim Schreiben der Filter-Datei: %s (E/A-Fehler)"
+
+#~ msgid "Can't open the filter file %s for writing"
+#~ msgstr "Die Filter-Datei %s kann nicht zum Schreiben geöffnet werden."
+
+#~ msgid "Scri&pting"
+#~ msgstr "&Skripte"
+
+#~ msgid "&Tools"
+#~ msgstr "&Werkzeuge"
+
+#~ msgid "&Settings"
+#~ msgstr "&Einstellungen"
+
+#~ msgid "&Window"
+#~ msgstr "&Fenster"
+
+#~ msgid "&Help Browser (Panel)"
+#~ msgstr "&Hilfebrowser (Bedienfeld)"
+
+#~ msgid "Help Browser (&Window)"
+#~ msgstr "Hilfebrowser (&Fenster)"
+
+#~ msgid "&Tip of the Day"
+#~ msgstr "&Tip des Tages"
+
+#~ msgid "About &KVIrc"
+#~ msgstr "Über &KVIrc"
+
+#~ msgid "KVIrc Home&page"
+#~ msgstr "KVIrc Home&page"
+
+#~ msgid "Report a Bug"
+#~ msgstr "Fehler melden"
+
+#~ msgid "Show StatusBar"
+#~ msgstr "Statusleiste anzeigen"
+
+#~ msgid "Restore &Default Script"
+#~ msgstr "&Standardskript wiederherstellen"
+
+#~ msgid "New &Connection To"
+#~ msgstr "Neue &Verbindung zu"
+
+#~ msgid "Hide &Dock Icon"
+#~ msgstr "&Docksymbol ausblenden"
+
+#~ msgid "Show &Dock Icon"
+#~ msgstr "&Docksymbol anzeigen"
+
+#~ msgid "&Other..."
+#~ msgstr "&Andere..."
+
+#~ msgid "Show &Icon Table"
+#~ msgstr "&Symboltabelle anzeigen"
+
+#~ msgid "Open &Terminal"
+#~ msgstr "&Terminal öffnen..."
+
+#~ msgid "Success"
+#~ msgstr "Erfolg"
+
+#~ msgid "Internal error"
+#~ msgstr "Interner Fehler"
+
+#~ msgid "Unknown command"
+#~ msgstr "Unbekanntes Kommando"
+
+#~ msgid "Missing closing brace"
+#~ msgstr "Schließende Klammer fehlt"
+
+#~ msgid "Unexpected end of command in string"
+#~ msgstr "Unerwartetes Ende des Kommandos in Zeichenkette"
+
+#~ msgid "Unexpected end of command in dictionary key"
+#~ msgstr "Unerwartetes Ende des Kommandos in Wörterbuchschlüssel"
+
+#~ msgid "Switch dash without switch letter"
+#~ msgstr "Optionenstrich ohne Buchstabe"
+
+#~ msgid "Unknown function"
+#~ msgstr "Unbekannte Funktion"
+
+#~ msgid "Unexpected end of command in parenthesis"
+#~ msgstr "Unerwartetes Ende in Klammer"
+
+#~ msgid "Unexpected end of command in function parameters"
+#~ msgstr "Unerwartetes Ende des Kommandos in Funktionsparametern"
+
+#~ msgid "Missing variable name"
+#~ msgstr "Kein Variablenname"
+
+#~ msgid "Variable or identifier expected"
+#~ msgstr "Variable oder Bezeichner erwartet"
+
+#~ msgid "Left operand is not a number"
+#~ msgstr "Linker Operand ist keine Zahl"
+
+#~ msgid "Multiple operations not supported for numeric operators"
+#~ msgstr ""
+#~ "Mehrere Operationen warden bei numerischen Operatoren nicht unterstützt"
+
+#~ msgid "Modulo by zero"
+#~ msgstr "Modulo von Null"
+
+#~ msgid "Right operand is not a number"
+#~ msgstr "Rechter Operand ist keine Zahl"
+
+#~ msgid "Unterminated expression (missing ')' ?)"
+#~ msgstr "Nicht abgeschlossener Ausdruck (fehlende ')' ?)"
+
+#~ msgid "Unterminated subexpression (Parenthesis mismatch)"
+#~ msgstr "Nicht abgeschlossener Unterausdruck (Klammerfehler)"
+
+#~ msgid "Unexpected character"
+#~ msgstr "Unerwartetes Zeichen"
+
+#~ msgid "No host to resolve"
+#~ msgstr "Host Adresse nicht ermittelbar"
+
+#~ msgid "(DNS Internal) Unsupported address family"
+#~ msgstr "(DNS intern) Nicht unterstützte Andressfamilie"
+
+#~ msgid "Valid name but the host has no IP address"
+#~ msgstr "Gültiger Name aber der Host hat keine IP-Adresse"
+
+#~ msgid "Unrecoverable nameserver error (crashed ?)"
+#~ msgstr "Nicht korrigierbarer Nameserver-Fehler (abgestürzt?)"
+
+#~ msgid "Dns temporaneous fault (try again)"
+#~ msgstr "Temporäre DNS-Fehlfunktion (nocheinmal probieren)"
+
+#~ msgid "(DNS Internal) Bad flags"
+#~ msgstr "(DNS intern) Falsche Flags"
+
+#~ msgid "(DNS Internal) Out of memory"
+#~ msgstr "(DNS intern) Speicher voll"
+
+#~ msgid "(DNS Internal) Service not supported"
+#~ msgstr "(DNS intern) Dienst nicht unterstützt"
+
+#~ msgid "Unknown node (host not found)"
+#~ msgstr "Unbekannter Knoten (Host nicht gefunden)"
+
+#~ msgid "(DNS Internal) Unsupported socket type"
+#~ msgstr "(DNS intern) Nicht unterstützter Sockettyp"
+
+#~ msgid "Dns query failed"
+#~ msgstr "DNS-Anfrage fehlgeschlagen"
+
+#~ msgid "This KVIrc executable has no IPV6 support"
+#~ msgstr "Diese Version von KVIrc hat keine IPv6-Unterstützung"
+
+#~ msgid "Host not found"
+#~ msgstr "Host nicht bekannt"
+
+#~ msgid "(DNS Internal) IPC failure (slave data corrupted)"
+#~ msgstr "(DNS intern) IPC-Fehlfunktion (Sklavendaten fehlerhaft)"
+
+#~ msgid "Invalid IP address"
+#~ msgstr "Ungültige IP-Adresse"
+
+#~ msgid "Failed to put the socket in non blocking mode"
+#~ msgstr "Setzen des Sockets in den nicht blockierenden Modus fehlgeschlagen"
+
+#~ msgid "Bad file descriptor"
+#~ msgstr "Fehlerhafter Dateideskriptor"
+
+#~ msgid "Out of address space"
+#~ msgstr "Kein Speicher verfügbar"
+
+#~ msgid "Connection refused"
+#~ msgstr "Verbindung abgelehnt"
+
+#~ msgid "Kernel networking panic"
+#~ msgstr "Kernel-Netzwerk-Panik"
+
+#~ msgid "Connection timed out"
+#~ msgstr "Verbindungszeit abgelaufen"
+
+#~ msgid "Network is unreachable"
+#~ msgstr "Netzwerk ist nicht erreichbar"
+
+#~ msgid "Broken pipe"
+#~ msgstr "Netzwerkfehler"
+
+#~ msgid "Invalid proxy address"
+#~ msgstr "Ungültige Proxyadresse"
+
+#~ msgid "Remote end has closed the connection"
+#~ msgstr "Die Gegenseite hat die Verbindung beendet"
+
+#~ msgid "Invalid irc context id"
+#~ msgstr "Ungültige IRC-Kontext-ID"
+
+#~ msgid "Error in loading module"
+#~ msgstr "Fehler beim Laden des Moduls"
+
+#~ msgid "No such module command"
+#~ msgstr "Kein solches Modulkommando"
+
+#~ msgid "No such module function"
+#~ msgstr "Keine solche Funktion"
+
+#~ msgid "Left operand is not a dictionary reference"
+#~ msgstr "Linker Operand ist keine Wörterbuchreferenz"
+
+#~ msgid "Right operand is not a dictionary reference"
+#~ msgstr "Rechter Operand ist keine Wörterbuchreferenz"
+
+#~ msgid "Missing object class name"
+#~ msgstr "Objektklassenname fehlt"
+
+#~ msgid "No such object class"
+#~ msgstr "Keine solche Objektklasse"
+
+#~ msgid "No such object"
+#~ msgstr "Kein solches Objekt"
+
+#~ msgid "No such object function"
+#~ msgstr "Keine solche Funktion"
+
+#~ msgid "Invalid left operand"
+#~ msgstr "Ungültiger linker Operand"
+
+#~ msgid "Integer parameter expected"
+#~ msgstr "Integer-Parameter erwartet"
+
+#~ msgid "Invalid parameter"
+#~ msgstr "Ungültiger Parameter"
+
+#~ msgid "No such file"
+#~ msgstr "Keine solche Datei"
+
+#~ msgid "Open parenthesis expected"
+#~ msgstr "Öffnende Klammer erwartet"
+
+#~ msgid "Open brace expected"
+#~ msgstr "Öffnende Klammer erwartet"
+
+#~ msgid "Can't kill a builtin class"
+#~ msgstr "Eingebaute Klasse kann nicht getötet werden"
+
+#~ msgid "The SOCKSV4 protocol lacks IpV6 support"
+#~ msgstr "Das SOCKSV4-Protokoll hat keine IPv6-Unterstützung"
+
+#~ msgid "Unrecognized proxy reply"
+#~ msgstr "Unbekannte Proxy antwort"
+
+#~ msgid "Proxy response: auth failed: access denied"
+#~ msgstr "Proxy-Antwort: Authentifizieung fehlgeschlagen: Zugriff verweigert"
+
+#~ msgid "Proxy response: No acceptable auth method: request rejected"
+#~ msgstr ""
+#~ "Proxy-Antwort: Keine akzeptable Authentifizierungsmethode: Anfrage "
+#~ "zurückgewiesen"
+
+#~ msgid "Proxy response: request failed"
+#~ msgstr "Proxy-Antwort: Anfrage fehlgeschlagen"
+
+#~ msgid "Proxy response: ident failed"
+#~ msgstr "Proxy-Antwort: Identifizierung fehlgeschlagen"
+
+#~ msgid "Proxy response: ident not matching"
+#~ msgstr "Proxy-Antwort: Ident paßt nicht"
+
+#~ msgid "Proxy response: general SOCKS failure"
+#~ msgstr "Proxy-Antwort: Generelle SOCKS-Fehlfunktion"
+
+#~ msgid "Proxy response: connection not allowed"
+#~ msgstr "Proxy-Antwort: Verbindung nicht erlaubt"
+
+#~ msgid "Proxy response: network unreachable"
+#~ msgstr "Proxy-Antwort: Netzwerk nicht erreichbar"
+
+#~ msgid "Proxy response: host unreachable"
+#~ msgstr "Proxy-Antwort: Host nicht erreichbar"
+
+#~ msgid "Proxy response: connection refused"
+#~ msgstr "Proxy-Antwort: Verbindung abgelehnt"
+
+#~ msgid "Proxy response: TTL expired"
+#~ msgstr "Proxy-Antwort: TTL abgelaufen"
+
+#~ msgid "Proxy response: command not supported"
+#~ msgstr "Proxy-Antwort: Kommando nicht unterstützt"
+
+#~ msgid "Proxy response: address type not supported"
+#~ msgstr "Proxy-Antwort: Adresstyp nicht unterstützt"
+
+#~ msgid "Proxy response: invalid address"
+#~ msgstr "Proxy-Antwort: ungültige Adresse"
+
+#~ msgid "Invalid port number"
+#~ msgstr "Ungültiger Port"
+
+#~ msgid "Socket not connected"
+#~ msgstr "Socket nicht verbunden"
+
+#~ msgid "Insufficient resources to complete the operation"
+#~ msgstr "Ungenügende Ressourcen um die Operation abzuschließen"
+
+#~ msgid "Can't setup a listening socket : bind failed"
+#~ msgstr "Hörender Socket kann nicht erstellt werden : Binden fehlgeschlagen"
+
+#~ msgid "Can't resolve the localhost name"
+#~ msgstr "localhost kann nicht aufgelöst werden"
+
+#~ msgid "Unsupported image format"
+#~ msgstr "Bildformat wird nicht unterstützt"
+
+#~ msgid "Can't open file for appending"
+#~ msgstr "Datei kann nicht zum Anhängen geöffnet werden"
+
+#~ msgid "Can't open file for writing"
+#~ msgstr "Datei kann nicht zum Schreiben geöffnet werden"
+
+#~ msgid "File I/O error"
+#~ msgstr "Datei E/A-Fehler"
+
+#~ msgid "Acknowledge error"
+#~ msgstr "Bestätigungsfehler"
+
+#~ msgid "Can't open file for reading"
+#~ msgstr "Datei kann nicht zum Lesen geöffnet werden"
+
+#~ msgid "Can't send a zero-size file"
+#~ msgstr "Datei mit 0 Byte kann nicht gesendet werden"
+
+#~ msgid "Missing popup name"
+#~ msgstr "Aufklappmenü-Name fehlt"
+
+#~ msgid "'item', 'popup', 'label' or 'separator' keyword expected"
+#~ msgstr "'item', 'popup', 'label' oder 'separator'-Schlüsselwort erwartet"
+
+#~ msgid "Self modification not allowed"
+#~ msgstr "Selbstmodifikation nicht erlaubt"
+
+#~ msgid "UNUSED"
+#~ msgstr "NICHT BENUTZT"
+
+#~ msgid "Feature not available"
+#~ msgstr "Fähigkeit nicht verfügbar"
+
+#~ msgid "Unexpected characters in array index"
+#~ msgstr "Unterwartete Zeichen im Arrayindex"
+
+#~ msgid "Unexpected end in expression"
+#~ msgstr "Unerwartetes Ende in Ausdruck"
+
+#~ msgid "Unexpected end in array index"
+#~ msgstr "Unerwartetes Ende in Arrayindex"
+
+#~ msgid "Connection thru HTTP proxy failed"
+#~ msgstr "Verbindung über HTTP-Proxy fehlgeschlagen"
+
+#~ msgid "Case , match , regexp , default or break keyword expected"
+#~ msgstr "Case , match , regexp , default oder break-Schlüsselwort erwartet"
+
+#~ msgid "Access denied"
+#~ msgstr "Zugriff verweigert"
+
+#~ msgid "Address already in use"
+#~ msgstr "Adresse bereits in Benutzung"
+
+#~ msgid "Can't assign the requested address"
+#~ msgstr "Angeforderte Adresse kann nicht zuwiesen werden"
+
+#~ msgid "Connection reset by peer"
+#~ msgstr "Verbindung wurde vom Kommunikationspartner zurückgesetzt"
+
+#~ msgid "Host unreachable (no route to host)"
+#~ msgstr "Host nicht erreichbar (Keine Route zum Host)"
+
+#~ msgid "Variable expected"
+#~ msgstr "Variable erwartet"
+
+#~ msgid "Invalid array index: positive integer expected"
+#~ msgstr "Ungültiger Arrayindex: Positiver Integer erwartet"
+
+#~ msgid "listen() call failed"
+#~ msgstr "listen()-Aufruf fehlgeschlagen"
+
+#~ msgid "This executable has been compiled without SSL support"
+#~ msgstr "Diese Version von KVIrc wurde ohne SSL-Unterstützung kompiliert"
+
+#~ msgid "Secure Socket Layer error"
+#~ msgstr "SSL-Fehler"
+
+#~ msgid "Slash (/) character expected"
+#~ msgstr "Schrägstrich (/) erwartet"
+
+#~ msgid "Unknown string manipulation operation"
+#~ msgstr "Unbekannte Zeichenkettenmanipulationsoperation"
+
+#~ msgid "Operation aborted"
+#~ msgstr "Operation abgebrochen"
+
+#~ msgid "Unexpected token"
+#~ msgstr "Unerwartetes Token"
+
+#~ msgid "Scope object already defined (unexpected @)"
+#~ msgstr "Objektgültigkeitsbereich bereits definiert (unerwartetes @)"
+
+#~ msgid "There is no $this pointer in this scope (unexpected @)"
+#~ msgstr ""
+#~ "Es gibt keinen $this-Zeiger in diesem Gültigkeitsbereich (unerwartetes @)"
+
+#~ msgid "- d -- h -- m -- s"
+#~ msgstr "- d -- h -- m -- s"
+
+#~ msgid "%u h %u m %u s"
+#~ msgstr "%u h %u m %u s"
+
+#~ msgid "%u h %u%u m %u%u s"
+#~ msgstr "%u h %u%u m %u%u s"
+
+#~ msgid "%u m %u s"
+#~ msgstr "%u m %u s"
+
+#~ msgid "%u m %u%u s"
+#~ msgstr "%u m %u%u s"
+
+#~ msgid "%u s"
+#~ msgstr "%u s"
+
+#~ msgid "%u d %u h %u m %u s"
+#~ msgstr "%u d %u h %u m %u s"
+
+#~ msgid "%u d %u%u h %u%u m %u%u s"
+#~ msgstr "%u d %u%u h %u%u m %u%u s"
+
+#~ msgid "Select color"
+#~ msgstr "Farbe auswählen"
+
+#~ msgid "&Basic colors"
+#~ msgstr "&Basisfarben"
+
+#~ msgid "&Custom colors"
+#~ msgstr "Eigene Far&ben"
+
+#~ msgid "&Red"
+#~ msgstr "&Rot"
+
+#~ msgid "&Green"
+#~ msgstr "&Grün"
+
+#~ msgid "Bl&ue"
+#~ msgstr "Bla&u"
+
+#~ msgid "&Define Custom Colors >>"
+#~ msgstr "Eigene Farben &definieren >>"
+
+#~ msgid "&Add to Custom Colors"
+#~ msgstr "Zu benutzerdefinierten Farben &hinzufügen"
+
+#~ msgid "Select Font"
+#~ msgstr "Schriftart auswählen"
+
+#~ msgid "&Font"
+#~ msgstr "Schri&ftart"
+
+#~ msgid "Font st&yle"
+#~ msgstr "Schrifts&til:"
+
+#~ msgid "&Size"
+#~ msgstr "&Größe"
+
+#~ msgid "Sample"
+#~ msgstr "Beispiel"
+
+#~ msgid "Effects"
+#~ msgstr "Effekte"
+
+#~ msgid "Stri&keout"
+#~ msgstr "Durch&gestrichen"
+
+#~ msgid "&Underline"
+#~ msgstr "&Unterstrichen"
+
+#~ msgid "Scr&ipt"
+#~ msgstr "Skr&ipt"
+
+#~ msgid "Parent Directory"
+#~ msgstr "Übergeordnetes Verzeichnis"
+
+#~ msgid "Back"
+#~ msgstr "Zurück"
+
+#~ msgid "Forward"
+#~ msgstr "Vorwärts"
+
+#~ msgid "Reload"
+#~ msgstr "Erneut laden"
+
+#~ msgid "New Directory"
+#~ msgstr "Neues Verzeichnis"
+
+#~ msgid "Bookmarks"
+#~ msgstr "Lesezeichen"
+
+#~ msgid "Add Bookmark"
+#~ msgstr "Lesezeichen hinzufügen"
+
+#~ msgid "&Edit Bookmarks"
+#~ msgstr "Lesezeichen be&arbeiten"
+
+#~ msgid "New Bookmark Folder..."
+#~ msgstr "Neuer Lesezeichenordner..."
+
+#~ msgid "Sorting"
+#~ msgstr "Sortieren"
+
+#~ msgid "By Name"
+#~ msgstr "Nach Name"
+
+#~ msgid "By Date"
+#~ msgstr "Nach Datum"
+
+#~ msgid "By Size"
+#~ msgstr "Nach Größe"
+
+#~ msgid "Reverse"
+#~ msgstr "Umkehren"
+
+#~ msgid "Directories First"
+#~ msgstr "Verzeichnisse zuerst"
+
+#~ msgid "Case Insensitive"
+#~ msgstr "Groß-/Kleinschreibung nicht beachten"
+
+#~ msgid "Short View"
+#~ msgstr "Kurzdarstellung"
+
+#~ msgid "Detailed View"
+#~ msgstr "Ausführliche Ansicht"
+
+#~ msgid "Show Hidden Files"
+#~ msgstr "Versteckte Dateien anzeigen"
+
+#~ msgid "Show Quick Access Navigation Panel"
+#~ msgstr "Schnellzugriffsfeld anzeigen"
+
+#~ msgid "Show Preview"
+#~ msgstr "Vorschau anzeigen"
+
+#~ msgid "Separate Directories"
+#~ msgstr "Verzeichnisse gesondert"
+
+#~ msgid "Often used directories"
+#~ msgstr "Oft benutzte Verzeichnisse"
+
+#~ msgid "Desktop"
+#~ msgstr "Arbeitsfläche"
+
+#~ msgid "Home Directory"
+#~ msgstr "Persönliches Verzeichnis"
+
+#~ msgid "Floppy"
+#~ msgstr "Diskette"
+
+#~ msgid "Temporary Files"
+#~ msgstr "Temporäre Dateien"
+
+#~ msgid "Network"
+#~ msgstr "Netzwerk"
+
+#~ msgid "New Directory..."
+#~ msgstr "Neues Verzeichnis..."
+
+#~ msgid "Thumbnail Previews"
+#~ msgstr "Minibildvorschau"
+
+#~ msgid "Large Icons"
+#~ msgstr "Große Symbole"
+
+#~ msgid "Small Icons"
+#~ msgstr "Kleine Symbole"
+
+#~ msgid "Properties..."
+#~ msgstr "Eigenschaften..."
+
+#~ msgid "&Automatic Preview"
+#~ msgstr "&Automatische Vorschau"
+
+#~ msgid "&Preview"
+#~ msgstr "&Vorschau"
+
+#~ msgid "&Filter:"
+#~ msgstr "&Filter:"
+
+#~ msgid "All Files"
+#~ msgstr "Alle Dateien"
+
+#~ msgid "Directory"
+#~ msgstr "Verzeichnis"
+
+#~ msgid "Fifo"
+#~ msgstr "FIFO"
+
+#~ msgid "Block device"
+#~ msgstr "Blockgerät"
+
+#~ msgid "Char device"
+#~ msgstr "Zeichengerät"
+
+#~ msgid "Octet stream (unknown)"
+#~ msgstr "Achtbitstrom (unbekannt)"
+
+#~ msgid "Invalid crypt engine"
+#~ msgstr "Ungültige Verschlüsselungsroutine"
+
+#~ msgid "WARNING : Can not load image library %s"
+#~ msgstr "WARNUNG : Folgende Bildbibliothek konnte nicht geladen werden : %s"
+
+#, fuzzy
+#~ msgid "The specified network has no server entries"
+#~ msgstr "Das angegebene Fenster hat keine Knopfcontainer"
+
+#~ msgid "Aborted"
+#~ msgstr "Abgebrochen"
+
+#~ msgid "No request"
+#~ msgstr "Keine Anfrage"
+
+#~ msgid "No filename specified for the \"StoreToFile\" processing type"
+#~ msgstr "Kein Dateiname für \"Speichern in Datei\"-Prozeßtyp angegeben"
+
+#~ msgid "Invalid URL: Missing hostname"
+#~ msgstr "Ungültige URL: Hostname fehlt"
+
+#, fuzzy
+#~ msgid "Unsupported protocol %1"
+#~ msgstr "Nicht unterstütztes Protokoll %s"
+
+#~ msgid "Unable to start the DNS lookup"
+#~ msgstr "DNS-Anfrage kann nicht gestartet werden"
+
+#~ msgid "Looking up host %s"
+#~ msgstr "Host %s wird gesucht"
+
+#~ msgid "Host %s resolved to %s"
+#~ msgstr "Host %s aufgelöst nach %s"
+
+#~ msgid "Unable to start the request slave thread"
+#~ msgstr "Angeforderter Sklaven-Thread kann nicht gestartet werden"
+
+#~ msgid "Contacting host %s on port %u"
+#~ msgstr "Host %s wird an Port %u kontaktiert"
+
+#~ msgid "Connection established, sending request"
+#~ msgstr "Verbindung hergestellt, Anfrage wird gesendet"
+
+#~ msgid "Failed to rename the existing file, please rename manually and retry"
+#~ msgstr ""
+#~ "Umbenennen der existierenden Datei fehlgeschlagen: manuell umbenennen und "
+#~ "erneut versuchen"
+
+#~ msgid "Can't open file \"%s\" for writing"
+#~ msgstr "Datei \"%s\" kann nicht zum Schreiben geöffnet werden"
+
+#~ msgid "Invalid HTTP response: %s"
+#~ msgstr "Ungültige HTTP-Antwort: %s"
+
+#~ msgid "Received HTTP response: %s"
+#~ msgstr "Empfangene HTTP-Antwort: %s"
+
+#~ msgid "Stream exceeding maximum length"
+#~ msgstr "Strom überschreitet Maximallänge"
+
+#~ msgid "Stream exceeded expected length"
+#~ msgstr "Strom überschreitet erwartete Länge"
+
+#~ msgid "Header too long: exceeded 4096 bytes"
+#~ msgstr "Header zu lang: überschreitet 4096 Byte"
+
+#~ msgid "Select error: %s (errno=%d)"
+#~ msgstr "Auswahlfehler: %s (Fehlernummer=%d)"
+
+#~ msgid "Operation timed out"
+#~ msgstr "Operationszeit abgelaufen"
+
+#~ msgid "Failed to enter non blocking mode"
+#~ msgstr "Wechseln in den nicht-blockieren-Modus fehlgeschlagen"
+
+#~ msgid "Invalid target address"
+#~ msgstr "Ungültige Zieladresse"
+
+#~ msgid "Connect error: %s (errno=%d)"
+#~ msgstr "Verbindungsfehler: %s (Fehlernummer=%d)"
+
+#~ msgid "Write error: %s (errno=%d)"
+#~ msgstr "Schreibfehler: %s (Fehlernummer=%d)"
+
+#~ msgid "Operation timed out (while selecting for read)"
+#~ msgstr "Operationszeit abgelaufen (während des Auswählens zum Lesen)"
+
+#~ msgid "Read error: %s (errno=%d)"
+#~ msgstr "Lesefehler: %s (Fehlernummer=%d)"
+
+#~ msgid "Encoding"
+#~ msgstr "Kodierung"
+
+#, fuzzy
+#~ msgid "Reconnection Options"
+#~ msgstr "Verbindung"
+
+#, fuzzy
+#~ msgid "Usage"
+#~ msgstr "Benutzung:"
+
+#, fuzzy
+#~ msgid "message"
+#~ msgstr "Nachrichtentyp"
+
+#~ msgid "Usage:"
+#~ msgstr "Benutzung:"
+
+#~ msgid "You must be connected to a server"
+#~ msgstr "Man muss mit einen Server verbunden sein"
+
+#~ msgid "Lag is"
+#~ msgstr "Lag ist"
+
+#~ msgid "reason"
+#~ msgstr "Grund"
+
+#~ msgid "This is not a channel window"
+#~ msgstr "Dies ist kein Kanalfenster"
+
+#~ msgid "Unsupported type: $0"
+#~ msgstr "Nicht unterstützter Typ: $0"
+
+#~ msgid "You must use DNS in an IRC context"
+#~ msgstr "Es muss DNS in einem IRC-Kontext benutzt werden"
+
+#~ msgid "No such user: $0"
+#~ msgstr "Kein solcher Benutzer: $0"
+
+#~ msgid "Options"
+#~ msgstr "Optionen"
+
+#~ msgid "Stop Highlighting (Local)"
+#~ msgstr "Hervorhebung deaktivieren (Lokal)"
+
+#~ msgid "Start Highlighting (Local)"
+#~ msgstr "Hervorhebung aktivieren (Lokal)"
+
+#~ msgid "Always Highlight"
+#~ msgstr "Immer hervorheben"
+
+#~ msgid "Highlight as"
+#~ msgstr "Hervorheben als"
+
+#~ msgid "Stop Highlighting"
+#~ msgstr "Hervorhebung stoppen"
+
+#~ msgid "is being ignored"
+#~ msgstr "wird ignoriert"
+
+#~ msgid "is not being ignored"
+#~ msgstr "wird nicht ignoriert"
+
+#~ msgid "Ignore as"
+#~ msgstr "Ignorieren als"
+
+#~ msgid "Unignore"
+#~ msgstr "nicht ignorieren"
+
+#~ msgid "is registered as"
+#~ msgstr "ist registriert als"
+
+#~ msgid "is in the notify list"
+#~ msgstr "ist in der Benachrichtigungsliste"
+
+#~ msgid "has a default avatar"
+#~ msgstr "hat Standard-Avatar"
+
+#~ msgid "is not registered"
+#~ msgstr "ist nicht registriert"
+
+#~ msgid "Register"
+#~ msgstr "Registrieren"
+
+#~ msgid "Quick Registration"
+#~ msgstr "Schnellregistrierung"
+
+#~ msgid "Register as"
+#~ msgstr "Registriert als"
+
+#~ msgid "Unregister"
+#~ msgstr "Registrierung aufheben"
+
+#~ msgid "Add to Notify"
+#~ msgstr "Zur Benachrichtigung hinzufügen"
+
+#~ msgid "Remove from Notify"
+#~ msgstr "Von Benachrichtigung löschen"
+
+#~ msgid "Choose"
+#~ msgstr "Auswählen"
+
+#~ msgid "Choose Avatar Image File"
+#~ msgstr "Avatar-Bilddatei auswählen"
+
+#~ msgid "Set as Default"
+#~ msgstr "Als Voreinstellungen setzen"
+
+#~ msgid "Clear Default"
+#~ msgstr "Voreinstellung löschen"
+
+#, fuzzy
+#~ msgid "Copy To Clipboard"
+#~ msgstr "In Zwischenablage kopieren"
+
+#~ msgid "Channel Owner"
+#~ msgstr "Kanaleigentümer"
+
+#~ msgid "Channel Administrator"
+#~ msgstr "Kanaladministrator"
+
+#~ msgid "Channel Operator"
+#~ msgstr "Kanaloperator"
+
+#~ msgid "Half Operator"
+#~ msgstr "Halb-Operator"
+
+#~ msgid "User Operator"
+#~ msgstr "Benutzer-Operator"
+
+#~ msgid "Normal User"
+#~ msgstr "Normaler Benutzer"
+
+#~ msgid "Ban"
+#~ msgstr "Bann"
+
+#~ msgid "Multiple Users"
+#~ msgstr "Mehrere Benutzer"
+
+#~ msgid "&Ban"
+#~ msgstr "&Bann"
+
+#~ msgid "idle time"
+#~ msgstr "Leerlaufzeit"
+
+#~ msgid "&Information"
+#~ msgstr "&Information"
+
+#~ msgid "DNS for"
+#~ msgstr "DNS für"
+
+#~ msgid "Mask for"
+#~ msgstr "Maske für"
+
+#~ msgid "&Control"
+#~ msgstr "&Kontrollieren"
+
+#~ msgid "O&wner"
+#~ msgstr "&Eigentümer"
+
+#~ msgid "&Deowner"
+#~ msgstr "&Nicht Eigentümer"
+
+#~ msgid "&Administrator"
+#~ msgstr "&Administrator"
+
+#~ msgid "&Deadministrator"
+#~ msgstr "K&ein Administrator"
+
+#~ msgid "&Op"
+#~ msgstr "&Op"
+
+#~ msgid "&Deop"
+#~ msgstr "&Deop"
+
+#~ msgid "&Halfop"
+#~ msgstr "&Halfop"
+
+#~ msgid "&Dehalfop"
+#~ msgstr "&Dehalfop"
+
+#~ msgid "&Voice"
+#~ msgstr "&Stimmstatus geben"
+
+#~ msgid "D&evoice"
+#~ msgstr "Stimmstatus en&tziehen"
+
+#~ msgid "&Kick"
+#~ msgstr "&Kicken"
+
+#~ msgid "K&ick"
+#~ msgstr "K&icken"
+
+#~ msgid "With..."
+#~ msgstr "Mit..."
+
+#~ msgid "Kick Reason"
+#~ msgstr "Kickgrund"
+
+#~ msgid "Enter a kick reason"
+#~ msgstr "Grund für Kick eingeben"
+
+#~ msgid "Kick/Ban"
+#~ msgstr "Kicken/Bannen"
+
+#~ msgid "Kick/Ban Reason"
+#~ msgstr "Kick-/Banngrund"
+
+#~ msgid "Enter a kick/ban reason"
+#~ msgstr "Grund für Kick/Bann eingeben"
+
+#~ msgid "&Kick/Ban"
+#~ msgstr "&Kicken/Bannen"
+
+#~ msgid "&Query"
+#~ msgstr "An&frage"
+
+#~ msgid "&Registration"
+#~ msgstr "&Registrierung"
+
+#~ msgid "Ig&nore"
+#~ msgstr "Ig&norieren"
+
+#~ msgid "Notify Avatar"
+#~ msgstr "Avatar benachrichtigen"
+
+#~ msgid "&Part"
+#~ msgstr "&Verlassen"
+
+#~ msgid "Channels"
+#~ msgstr "Kanäle"
+
+#~ msgid "&Join Channels..."
+#~ msgstr "Kanäle &betreten..."
+
+#~ msgid "&Hop"
+#~ msgstr "&Hopp"
+
+#~ msgid "l (Connections)"
+#~ msgstr "I (Verbindungen)"
+
+#~ msgid "m (Command Usage)"
+#~ msgstr "m (Kommandobenutzung)"
+
+#~ msgid "o (Operators)"
+#~ msgstr "o (Operatoren)"
+
+#~ msgid "t (Connection stats ?)"
+#~ msgstr "t (Verbindungsstatistiken?)"
+
+#~ msgid "u (Uptime)"
+#~ msgstr "u (Laufzeit)"
+
+#~ msgid "y (y-Lines)"
+#~ msgstr "y (y-Zeilen)"
+
+#~ msgid "z (Debug Stats?)"
+#~ msgstr "z (Fehlerstatistiken?)"
+
+#~ msgid "Chat with"
+#~ msgstr "Chatten mit"
+
+#~ msgid "Secure Chat with"
+#~ msgstr "sicherer Chat mit"
+
+#~ msgid "Send to"
+#~ msgstr "Senden an"
+
+#~ msgid "Reverse Send to"
+#~ msgstr "Umgekehrtes Senden an"
+
+#~ msgid "TDCC Send to"
+#~ msgstr "TDCC Senden an"
+
+#~ msgid "TDCC Reverse Send to"
+#~ msgstr "TDCC umgekehrtes Senden an"
+
+#~ msgid "Voice Chat"
+#~ msgstr "Voice-Chat"
+
+#~ msgid "&Ignore"
+#~ msgstr "&Ignorieren"
+
+#~ msgid "Logging to"
+#~ msgstr "Loggen nach"
+
+#~ msgid "Flush Log File"
+#~ msgstr "Logdatei sofort schreiben"
+
+#~ msgid "Stop Logging"
+#~ msgstr "Loggen stoppen"
+
+#~ msgid "Not Logging"
+#~ msgstr "Nicht loggen"
+
+#~ msgid "Log To Default File"
+#~ msgstr "Loggen in voreingestellte Datei"
+
+#~ msgid "Include Existing Buffer"
+#~ msgstr "Mit existierender Datenpuffer"
+
+#~ msgid "Log To..."
+#~ msgstr "Loggen nach..."
+
+#~ msgid "Notify avatar"
+#~ msgstr "Avatar benachrichtigen"
+
+#~ msgid "The default script has been successfully installed."
+#~ msgstr "Das Skript mit den Voreinstellungen wurde erfolgreich installiert."
+
+#~ msgid "To connect to a server, type /server <server name>"
+#~ msgstr "Um zu einem Server zu verbinden, /server <servername> eingeben"
+
+#~ msgid "Happy ircing :)"
+#~ msgstr "Viel Spass im IRC :)"
+
+#~ msgid "The config file with id '%s' is not open"
+#~ msgstr "Die Konfigurationsdatei mit ID '%s' ist nicht geöffnet"
+
+#~ msgid "The config file with id '%s' is read only"
+#~ msgstr "Die Konfigurationsdatei mit ID '%s' ist nur lesbar"
+
+#~ msgid "No nickname specified"
+#~ msgstr "Nein"
+
+#~ msgid "No netmask specified"
+#~ msgstr "Keine Netwerkmaske angegeben"
+
+#~ msgid "No property name specified"
+#~ msgstr "Kein Eigenschaftsname angegeben"
+
+#~ msgid "Missing property name"
+#~ msgstr "Eigenschaftsname fehlt"
+
+#~ msgid "The specified window (%s) is not a channel/query/DCC chat"
+#~ msgstr "Angegebenes Fenster (%s) ist kein(e) Kanal/Anfrage/DCC-Chat"
+
+#~ msgid "No file specified"
+#~ msgstr "Keine Datei angegeben"
+
+#~ msgid "Window %s not found"
+#~ msgstr "Fenster %s nicht gefunden"
+
+#~ msgid "Can't log to file %s"
+#~ msgstr "Loggen in Datei %s fehlgeschlagen"
+
+#~ msgid "Window with id '%s' not found, returning empty string"
+#~ msgstr ""
+#~ "Fenster mit ID '%s' nicht gefunden, es wird leere Zeichenkette "
+#~ "zurückgeliefert"
+
+#~ msgid "Invalid progress value (%s)"
+#~ msgstr "Ungültiger Fortschrittswert (%s)"
+
+#~ msgid "Error:not enough parameters!"
+#~ msgstr "Fehler: Nicht genug Parameter!"
+
+#~ msgid "The (%s) object is not a pixmap"
+#~ msgstr "Das Objekt (%s) ist kein Pixmap"
+
+#~ msgid ""
+#~ "Error occured: the suitable file is not of the correct format or it is "
+#~ "not a valid icon number."
+#~ msgstr ""
+#~ "Fehler: die Datei ist nicht im richtigen Format oder es ist keine gültige "
+#~ "Symbolnummer."
+
+#~ msgid "Invalid index parameter (%s)"
+#~ msgstr "Ungültiger Indexparameter (%s)"
+
+#~ msgid "Invalid parameter"
+#~ msgstr "Ungültiger Parameter"
+
+#~ msgid "Can't find the object "
+#~ msgstr "Objekt kann nicht gefunden werden"
+
+#~ msgid "Can't set a non-widget object"
+#~ msgstr "Nicht-Widgetobjekt kann nicht gesetzt werden"
+
+#~ msgid "Can't find the tab object "
+#~ msgstr "Tabobjekt kann nicht gefunden werden "
+
+#~ msgid "Can't find the widget(%s)"
+#~ msgstr "Widgetobjekt (%s) kann nicht gefunden werden"
+
+#~ msgid "Invalid marging value (%s)"
+#~ msgstr "Ungültiger Randwert (%s)"
+
+#, fuzzy
+#~ msgid "This object is not a toolbutton item!"
+#~ msgstr "Dieses Object ist kein PopupMenu-Element!"
+
+#~ msgid "No value to insert"
+#~ msgstr "Nein"
+
+#~ msgid "Invalid index(%s)"
+#~ msgstr "Ungültiger Index (%s)"
+
+#~ msgid "No index specified"
+#~ msgstr "Nein"
+
+#~ msgid "index %u out of range"
+#~ msgstr "Index %u ist außerhalb des Bereiches"
+
+#~ msgid "Invalid index (%s)"
+#~ msgstr "Ungültiger Index (%s)"
+
+#~ msgid "Index %u out of range"
+#~ msgstr "Index %u außerhalb des Bereiches"
+
+#~ msgid "Invalid resize mode (%s): defaulting to Auto"
+#~ msgstr "Ungültiger Größenänderungsmodus (%s): Auto wird benutzt"
+
+#~ msgid "Invalid margin value (%s)"
+#~ msgstr "Ungültiger Randwert (%s)"
+
+#~ msgid "Invalid spacing value (%s)"
+#~ msgstr "Ungültiger Abstandswert (%s)"
+
+#~ msgid "Invalid stretch value (%s)"
+#~ msgstr "Ungültiger Streckungswert (%s)"
+
+#~ msgid "Invalid from_row parameter (%s)"
+#~ msgstr "Ungültiger von-Zeilen-Parameter (%s)"
+
+#~ msgid "Invalid to_row parameter (%s)"
+#~ msgstr "Ungültiger zu-Zeilen-Parameter (%s)"
+
+#~ msgid "Invalid from_column parameter (%s)"
+#~ msgstr "Ungültiger von-Spalten-Parameter (%s)"
+
+#~ msgid "Invalid to_column parameter (%s)"
+#~ msgstr "Ungültiger zu-Spalten-Parameter (%s)"
+
+#~ msgid "Invalid parameters"
+#~ msgstr "Ungültige Parameter"
+
+#~ msgid "Invalid XCor or YCor range:[min=0] [max=99]"
+#~ msgstr "Ungültiger XCor- oder YCor-Bereich:[min=0] [max=99]"
+
+#~ msgid "$begin() function MUST take 1 parmeter."
+#~ msgstr "$begin()-Funktion MUSS 1 Parameter haben."
+
+#~ msgid "Can't find the widget/pixmap (%s)"
+#~ msgstr "Widget/Pixmap kann nicht gefunden werden (%s)"
+
+#~ msgid "Widget or Pixmap required (%s)"
+#~ msgstr "Widget oder Pixmap erforderlich (%s)"
+
+#~ msgid "Invalid bgMode: valid values are Transparent and Opaque"
+#~ msgstr "Ungültiger bgMode: gültige Werte sind Transparent und Opaque"
+
+#~ msgid "Can't find the widget object to remove (%s)"
+#~ msgstr "Widgetobjekt zum Löschen kann nicht gefunden werden (%s)"
+
+#~ msgid "Can't remove a non-widget object"
+#~ msgstr "Nicht-Widgetobjekt kann nicht gelöscht werden"
+
+#~ msgid "Can't find the widget (%s)"
+#~ msgstr "Widget (%s) kann nicht gefunden werden"
+
+#~ msgid "Widget type object required"
+#~ msgstr "Widgettypobjekt erforderlich"
+
+#~ msgid "Invalid zoom value (%s)"
+#~ msgstr "Ungültiger Zoomwert (%s)"
+
+#~ msgid "Invalid depth value (%s)"
+#~ msgstr "Ungültiger Tiefenwert (%s)"
+
+#~ msgid "Invalid value (%s)"
+#~ msgstr "Ungültiger Wert (%s)"
+
+#~ msgid "Invalid paragraph value (%s)"
+#~ msgstr "Ungültiger Paragraphwert (%s)"
+
+#~ msgid "There is no widget"
+#~ msgstr "Es gibt kein Fenster"
+
+#~ msgid " I can't find the specified file."
+#~ msgstr " angegebene Datei kann nicht gefunden werden."
+
+#~ msgid " I cannot read the file."
+#~ msgstr " die Datei kann nicht gelesen werden"
+
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "Objekt zum Hinzufügen kann nicht gefunden werden (%s)"
+
+#~ msgid "Class %s is undefined"
+#~ msgstr "Klasse %s ist nicht definiert"
+
+#~ msgid "The source object '%s' is not existing"
+#~ msgstr "Das Quellobjekt '%s' existiert nicht"
+
+#~ msgid "The target object '%s' is not existing"
+#~ msgstr "Das Zielobjekt '%s' existiert nicht"
+
+#~ msgid "No signal '%s' to disconnect"
+#~ msgstr "Kein Signal '%s' zum Trennen"
+
+#~ msgid "No destination specified"
+#~ msgstr "Kein Ziel angegeben"
+
+#~ msgid "Can't find the destination widget/pixmap (%s)"
+#~ msgstr "Widget/Pixmap (%s) kann nicht gefunden werden"
+
+#~ msgid "No source specified"
+#~ msgstr "Keine Quelle angegeben"
+
+#~ msgid "Can't find the source widget/pixmap (%s)"
+#~ msgstr "Quellwidget/-pixmap (%s) kann nicht gefunden werden"
+
+#~ msgid "Invalid x parameter (%s)"
+#~ msgstr "Ungültiger x-Parameter (%s)"
+
+#~ msgid "Invalid y parameter (%s)"
+#~ msgstr "Ungültiger y-Parameter (%s)"
+
+#~ msgid "Can't find the listviewitem object to add (%s)"
+#~ msgstr "listviewitem-Objekt kann nicht zum Hinzufügen gefunden werden (%s)"
+
+#~ msgid "Invalid column (%s)"
+#~ msgstr "Ungültige Spalte (%s)"
+
+#~ msgid "Invalid margin parameter"
+#~ msgstr "Ungültiger Begrenzungsparameter"
+
+#~ msgid "Unknown alignment: %s"
+#~ msgstr "Unbekannte Ausrichtung: %s"
+
+#~ msgid "Unknown frame / shadow style: %s"
+#~ msgstr "Unbekannter Rahmen-/Schattenstil: %s"
+
+#~ msgid "Hey ! You wanna know my echo mode or what ?"
+#~ msgstr "Hey! Sie möchten mein Echomodus haben oder was?"
+
+#~ msgid "Unknown echo mode"
+#~ msgstr "Unbekannt"
+
+#~ msgid "No toolbar to add separator."
+#~ msgstr "Keine Werkzeugleiste zum Hinzufügen des Trenners."
+
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "Objekt zum Hinzufügen kann nicht gefunden werden (%s)"
+
+#~ msgid "Invalid object."
+#~ msgstr "Ungültiges Objekt."
+
+#~ msgid "Can't setStretchableWidget a non-widget object."
+#~ msgstr ""
+#~ "setStretchableWidget kann nicht auf ein Nich-widget-Objekt angewendet "
+#~ "werden"
+
+#~ msgid "Can't find the popupmenu object to add (%s)"
+#~ msgstr "Aufklappmenü (%s) kann nicht zum Hinzufügen gefunden werden"
+
+#~ msgid "Doesn't a popupmenu object"
+#~ msgstr "Ist kein Aufklappmenüobjekt"
+
+#~ msgid "Can't find the widget object (%s)"
+#~ msgstr "Widgetobjekt kann nicht werden (%s)"
+
+#~ msgid "Invalid columns value (%s)"
+#~ msgstr "Ungültiger Spaltenwert (%s)"
+
+#~ msgid "Invalid size value (%s)"
+#~ msgstr "Ungültiger Größenwert (%s)"
+
+#~ msgid "Invalid icon identifier"
+#~ msgstr "Ungültiger Symbolbezeichner"
+
+#~ msgid ""
+#~ "Can't set the current avatar to '%s': failed to start the http transfer"
+#~ msgstr ""
+#~ "Aktueller Avatar kann nicht auf '%s' gesetzt werden Start von HTTP-"
+#~ "Übertragung fehlgeschlagen"
+
+#~ msgid "Can't set the current avatar to '%s': can't load the image"
+#~ msgstr ""
+#~ "Aktueller Avatar kann nicht auf '%s' gesetzt werden: Bild kann nicht "
+#~ "geladen werden"
+
+#~ msgid "No environment variable name given"
+#~ msgstr "Nein"
+
+#~ msgid "Can't find the window with id '%s'"
+#~ msgstr "Kann das Fenster mit IS '%s' nicht finden"
+
+#~ msgid "The specified window (%s) is not a channel"
+#~ msgstr "Das angegebene Fenter (%s) ist kein Kanal"
+
+#~ msgid "No button name specified!"
+#~ msgstr "Kein Knopfname angegeben!"
+
+#~ msgid ""
+#~ "The action \"%1\" is already defined as core action: choosing an "
+#~ "alternate name"
+#~ msgstr ""
+#~ "Die Aktion \"%1\" ist bereits als Kernaktion definiert: alternativen "
+#~ "Namen auswählen"
+
+#~ msgid "No separator name specified"
+#~ msgstr "Kein Trennername angegeben"
+
+#~ msgid "No toolbar id specified"
+#~ msgstr "Kein Werkzeugleisten-ID angegeben"
+
+#~ msgid "The action \"%s\" doesn't exist"
+#~ msgstr "Das Aktion '%s' existiert nicht"
+
+#~ msgid "Invalid IRC context id '%s'"
+#~ msgstr "Ungültige IRC-Kontext-ID '%s'"
+
+#, fuzzy
+#~ msgid "Background not found %s "
+#~ msgstr "Hintergrundfarbe"
+
+#~ msgid "Mask %s is already used to identify user %s"
+#~ msgstr "Maske %s wird bereits benutzt um Benutzer %s zu indentifizieren"
+
+#~ msgid "User not found (%s)"
+#~ msgstr "Benutzer nicht gefunden (%s)"
+
+#~ msgid "User %s not found"
+#~ msgstr "Benutzer %s nicht gefunden"
+
+#~ msgid "Mask %s already used to identify user %s"
+#~ msgstr "Maske %s wird bereits benutzt um Benutzer %s zu indentifizieren"
+
+#~ msgid "Mask %s not found"
+#~ msgstr "Maske %s nicht gefunden"
+
+#~ msgid "Sound file '%s' not found"
+#~ msgstr "Klandatei '%s' nicht gefunden"
+
+#~ msgid "Unable to play sound '%s'"
+#~ msgstr "Klang '%s' konnte nicht abgepielt werden"
+
+#~ msgid "The specified name is empty"
+#~ msgstr "Der angegebene Name ist leer"
+
+#~ msgid "The specified visible name is empty"
+#~ msgstr "Der angegebene Name ist leer"
+
+#~ msgid "The specified description is empty"
+#~ msgstr "Die angegebene Beschreibung ist leer"
+
+#~ msgid "The specified KVIrc version \"%s\" is not a valid version string"
+#~ msgstr ""
+#~ "Die angegebene KVIrc-Version \"%s\" ist keine gültige Versionszeichenkette"
+
+#, fuzzy
+#~ msgid ""
+#~ "This KVIrc executable is too old to run this addon (minimum version "
+#~ "required is %s)"
+#~ msgstr ""
+#~ "Dieses KVIrc ist zu alt, um dieses Skript auszuführen (miniale Version "
+#~ "ist %s)"
+
+#~ msgid "Destination file exists: no copy made"
+#~ msgstr "Zieldateidei existiert bereits: keine Kopie"
+
+#~ msgid "Failed to copy %s to %s"
+#~ msgstr "Kopie von %s nach %s fehlgeschlagen"
+
+#~ msgid "Failed to write to file %s"
+#~ msgstr "Schreiben in Datei %s fehlgeschlagen"
+
+#~ msgid "Failed to rename %s to %s"
+#~ msgstr "Umbenennen von %s nach %s fehlgeschlagen"
+
+#~ msgid "Failed to make the directory %s"
+#~ msgstr "Erstellung von Verzeichnis %s fehlgeschlagen"
+
+#~ msgid "Failed to remove the file %s"
+#~ msgstr "Löschen von Datei %s fehlgeschlagen"
+
+#~ msgid "Failed to remove the directory %s"
+#~ msgstr "Löschen des Verzeichnisses %s fehlgeschlagen"
+
+#~ msgid "The specified directory does not exist '%s'"
+#~ msgstr "Das angegebene Verzeichnis existiert nicht '%s'"
+
+#~ msgid "Can't open the file \"%s\" for reading"
+#~ msgstr "Öffnen der Datei \"%s\" zum Lesen fehlgeschlagen"
+
+#~ msgid "Read error for file %s"
+#~ msgstr "Lesefehler für Datei %s"
+
+#~ msgid ""
+#~ "Read error for file %s (have been unable to read the requested size in "
+#~ "1000 retries)"
+#~ msgstr ""
+#~ "Lesefehler für Datei %s (unmöglich, die angeforderte Größe in 1000 "
+#~ "Versuchen zu lesen)"
+
+#~ msgid "No such options page class name"
+#~ msgstr "Nein"
+
+#, fuzzy
+#~ msgid "%Q is not an integer"
+#~ msgstr "Popup %Q ist nicht definiert"
+
+#~ msgid "Window with caption '%s' not found, returning 0"
+#~ msgstr "Fenster mit Titel '%s' nicht gefunden. 0 wird zurückgeliefert"
+
+#~ msgid "The specified UNIX time is not valid (%s)"
+#~ msgstr "Die angegebene Unixzeit ist ungültig (%s)"
+
+#~ msgid "The specified time format is not valid (%s)"
+#~ msgstr "Das angebene Zeitformat ist ungültig (%s)"
+
+#~ msgid "No option named '%s'"
+#~ msgstr "Keine Option mit Namen '%s'"
+
+#~ msgid "No option name specified"
+#~ msgstr "Nein"
+
+#, fuzzy
+#~ msgid "No link text specified"
+#~ msgstr "Nein"
+
+#~ msgid "No command specified"
+#~ msgstr "Kein Befehl angegeben"
+
+#~ msgid "$sw should be called only in aliases"
+#~ msgstr "$sw sollte nur in Aliassen aufgerufen werden"
+
+#~ msgid "Broken prologue code for menu '%s', error detail follows"
+#~ msgstr "Fehlerhafter Prologcode für Menü '%s': Fehlerdetails folgen"
+
+#~ msgid "Broken expression for menu item '%Q', ignoring"
+#~ msgstr "Fehlerhafter Ausdruck für Menüelement '%Q': wird ignoriert"
+
+#~ msgid "Can't find the external popup '%Q', ignoring"
+#~ msgstr "Externes Aufklappmenü '%Q' nicht gefunden: wird ignoriert"
+
+#~ msgid "Broken epilogue code for menu '%s', error details follow"
+#~ msgstr "Fehlerhafter Epilog-Code für Menü '%s': Fehlerdetails folgen"
+
+#~ msgid "Function name expected"
+#~ msgstr "Funktionsname erwartet"
+
+#~ msgid "No catalogue %s for the current language found"
+#~ msgstr "Kein Katalog %s für die aktuelle Sprache gefunden"
+
+#~ msgid "The catalogue %s was not loaded"
+#~ msgstr "Katalog %s wurde nicht geladen"
+
+#~ msgid "Invalid icon specification '%s', using default"
+#~ msgstr "Ungültige Symbolangabe '%s', benutze Standard"
+
+#~ msgid "Missing icon number after the 'i' switch"
+#~ msgstr "Symbolnummer nach dem 'i'-Schalter fehlt"
+
+#~ msgid "Missing window ID after the 'w' switch"
+#~ msgstr "Fenster-ID nach dem 'w'-Schalter fehlt"
+
+#~ msgid "No targets specified"
+#~ msgstr "Keine Ziele angegeben"
+
+#~ msgid "Missing new nickname"
+#~ msgstr "Kein neuer Spitzname"
+
+#~ msgid "Missing target"
+#~ msgstr "Fehlendes Ziel"
+
+#~ msgid "Missing target channel"
+#~ msgstr "Kein Zielkanal"
+
+#~ msgid "No such object (%s)"
+#~ msgstr "Kein solches Objekt (%s)"
+
+#~ msgid "Invalid screen coordinates"
+#~ msgstr "Ungültige Bildschirmkoordinaten"
+
+#~ msgid "Invalid syntax for the screen coordinates"
+#~ msgstr "Ungültige Syntax für die Bildschirmkoordinaten"
+
+#~ msgid "Invalid timeout delay '%s'"
+#~ msgstr "Ungültige Zeitablaufsverzögerung '%s'"
+
+#~ msgid "Empty command block for timer '%s', timer not started"
+#~ msgstr ""
+#~ "Leerer Kommandozeilenblock für Zeitgeber '%s': Zeitgeber nicht gestartet"
+
+#~ msgid ""
+#~ "Internal error: Unable to add timer %s, insufficient system resources"
+#~ msgstr ""
+#~ "Interner Fehler; Zeitgeber %s kann nicht hinzugefügt werden, ungenügende "
+#~ "Systemressourcen"
+
+#~ msgid "No such timer (%s)"
+#~ msgstr "Kein solcher Timer (%s)"
+
+#~ msgid "No such event (%s)"
+#~ msgstr "Kein solches Ereignis (%s)"
+
+#~ msgid "No handler '%s' for raw numeric event '%d'"
+#~ msgstr "Kein Handler '%s' für numerisches RAW-Ereignis '%d'"
+
+#~ msgid "No handler '%s' for event '%s'"
+#~ msgstr "Kein Handler '%s' für Ereignis '%s'"
+
+#~ msgid "Failed to execute command '%s'"
+#~ msgstr "Ausführen des Kommandos '%s' fehlgeschlagen"
+
+#~ msgid "Invalid IRC url (%s)"
+#~ msgstr "Ungültige IRC-URL (%s)"
+
+#~ msgid "The commandline for this url type seems to be broken (%s)"
+#~ msgstr "Die Kommandozeile für diesen URL-Typ schein fehlerhaft (%s)"
+
+#~ msgid "No commandline specified for this type of url (%s)"
+#~ msgstr "Keine Kommandozeile für diesen Typ der URL (%s) angegeben"
+
+#~ msgid "Invalid pitch (%s): using default"
+#~ msgstr "Ungültiger Abstand (%s): benutze Standard"
+
+#~ msgid "Invalid duration (%s): using default"
+#~ msgstr "Ungültige Dauer (%s): benutze Standard"
+
+#~ msgid "Can't find the icon '%s'"
+#~ msgstr "Symbol '%s' kann nicht gefunden werden"
+
+#~ msgid "Window button '%s' not found"
+#~ msgstr "Fensterknopf '%s' nicht gefunden"
+
+#~ msgid "Can't rebind the command sequence: missing window identifier"
+#~ msgstr ""
+#~ "Befehlsequenz kann nicht neu gebunden werden: Fensterbezeichner fehlt"
+
+#~ msgid "Can't rebind the command sequence: window with id %s not found"
+#~ msgstr ""
+#~ "Befehlsequenz kann nicht neu gebunden werden: Fenster mit ID %s nicht "
+#~ "gefunden"
+
+#~ msgid "Unmatched parenthesis in expression body: ignoring trailing garbage"
+#~ msgstr "Unzugeordnete Klammer in Ausdruckskörper: ignoriere folgenden Müll"
+
+#~ msgid "Error triggered from timer callback handler %c'%s'"
+#~ msgstr "Fehler von Timer-Rückrufhandler %c'%s' ausgelöst."
+
+#~ msgid "Timer callback handler '%s' is broken: killing"
+#~ msgstr "Timer-Rückrufhandler '%s' ist fehlerhaft: töte"
+
+#, fuzzy
+#~ msgid "Initializing scripting engine..."
+#~ msgstr "Ungültige Verschlüsselungsroutine"
+
+#~ msgid "Loading actions..."
+#~ msgstr "Aktionen werden geladen..."
+
+#~ msgid "Loading icons..."
+#~ msgstr "Symbole werden geladen...."
+
+#~ msgid "Performing early initializations..."
+#~ msgstr "Frühe Initalisierungen werden ausgeführt..."
+
+#~ msgid "Loading window configuration database..."
+#~ msgstr "Fensterkonfigurationsdatenbank wird geladen..."
+
+#~ msgid "Loading server & proxy database..."
+#~ msgstr "Server & Proxydatenbank wird geladen..."
+
+#~ msgid "Loading event handlers..."
+#~ msgstr "Ereignishandler werden geladen..."
+
+#~ msgid "Loading raw event handlers..."
+#~ msgstr "RAW-Ereignishandler werden geladen..."
+
+#~ msgid "Loading popups..."
+#~ msgstr "Aufklappmenüs werden geladen..."
+
+#~ msgid "Loading toolbars..."
+#~ msgstr "Werkzeugleisten werden geladen..."
+
+#~ msgid "Loading aliases..."
+#~ msgstr "Aliasse werden geladen..."
+
+#~ msgid "Loading text icon associations..."
+#~ msgstr "Text-Symbol-Beziehungen werden geladen..."
+
+#~ msgid "Loading recent entries..."
+#~ msgstr "Letzte Einträge werden geladen..."
+
+#~ msgid "Loading media types..."
+#~ msgstr "Mediatypen werden geladen..."
+
+#~ msgid "Loading registered users..."
+#~ msgstr "Registrierte Benutzer werden geladen..."
+
+#~ msgid "Loading registered channels..."
+#~ msgstr "Registrierte Kanäle werden geladen..."
+
+#~ msgid "Loading file trader configuration..."
+#~ msgstr "Dateifreigabenkonfiguration wird geladen..."
+
+#~ msgid "Loading nick serv service configuration..."
+#~ msgstr "nick-serv-Dienstkonfiguration wird geladen..."
+
+#~ msgid "Loading history entries..."
+#~ msgstr "Verlaufseinträge werden geladen..."
+
+#~ msgid "Loading avatar cache..."
+#~ msgstr "Avatarzwischenspeicher wird geladen..."
+
+#~ msgid "Creating internal structures..."
+#~ msgstr "Interne Strukturen werden erstellt..."
+
+#~ msgid "Starting up the engine..."
+#~ msgstr "Motor wird gestartet..."
+
+#~ msgid "Have fun! :)"
+#~ msgstr "Frohes Chatten! :)"
+
+#~ msgid "Show Crypto Controller"
+#~ msgstr "Verschlüsselungskontrolle anzeigen"
+
+#~ msgid "Toggle Notify List"
+#~ msgstr "Benachrichtungsliste umschalten"
+
+#~ msgid "Initiating startup sequence..."
+#~ msgstr "Inititiere die Startsequenz.."
+
+#~ msgid "&New Alias"
+#~ msgstr "&Neuer Alias"
+
+#~ msgid "Loading options..."
+#~ msgstr "Optionen werden geladen..."
+
+#~ msgid "defpopup: internal error"
+#~ msgstr "defpopup: Interner Fehler"
+
+#, fuzzy
+#~ msgid "User Messages"
+#~ msgstr "Systemnachricht"
+
+#~ msgid "Transport"
+#~ msgstr "Versandart"
+
+#, fuzzy
+#~ msgid "The specified window does not exist"
+#~ msgstr "Die angegebene Werkzeugleiste existiert nicht"
+
+#, fuzzy
+#~ msgid "The specified timeout is not valid, assuming 0"
+#~ msgstr "Das angebene Zeitformat ist ungültig (%s)"
+
+#, fuzzy
+#~ msgid "No url specified"
+#~ msgstr "Keine Quelle angegeben"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %s"
+#~ msgstr "Start des Prozesses fehlgeschlagen"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %Q"
+#~ msgstr "Start des Prozesses fehlgeschlagen"
+
+#, fuzzy
+#~ msgid "<unknown size>"
+#~ msgstr "unbekannt"
+
+#, fuzzy
+#~ msgid "Unable to get address of interface %Q"
+#~ msgstr "An Adresse/Schnittstelle hören:"
+
+#, fuzzy
+#~ msgid "Missing target nickname"
+#~ msgstr "Kein neuer Spitzname"
+
+#, fuzzy
+#~ msgid "Missing filename"
+#~ msgstr "Fehlender Zeitgebername"
+
+#, fuzzy
+#~ msgid "The file size is not an positive number"
+#~ msgstr "Der angegebene Parameter ist keine vorzeichenlose Zahl"
+
+#, fuzzy
+#~ msgid "Invalid sample rate '%s', defaulting to 8000"
+#~ msgstr "Ungültiger Größenänderungsmodus (%s): Auto wird benutzt"
+
+#, fuzzy
+#~ msgid "The current window has no associated DCC session"
+#~ msgstr "Dieses Fenster hat keinen zugeordneten IRC-Kontext"
+
+#, fuzzy
+#~ msgid "The specified parameter is not a valid DCC identifier"
+#~ msgstr "Der angegebene Parameter ist keine vorzeichenlose Zahl"
+
+#, fuzzy
+#~ msgid "The specified window identifier is not valid"
+#~ msgstr "Die angegebene Bindungsadresse (%Q) ist ungültig"
+
+#, fuzzy
+#~ msgid "The first parameter must be an unsigned number"
+#~ msgstr "Der angegebene Parameter ist keine vorzeichenlose Zahl"
+
+#, fuzzy
+#~ msgid "No filename specified"
+#~ msgstr "Kein Name angegeben"
+
+#, fuzzy
+#~ msgid "The file '%s' is not readable"
+#~ msgstr "Das Popup '%s' ist nicht definiert"
+
+#, fuzzy
+#~ msgid "Invalid timeout, ignoring"
+#~ msgstr "Ungültige Ablaufzeit"
+
+#, fuzzy
+#~ msgid "Invalid visible name: using default"
+#~ msgstr "Ungültiger Abstand (%s): benutze Standard"
+
+#, fuzzy
+#~ msgid "Ops..failed to add the sharedfile..."
+#~ msgstr "Laden des ausgewählten Bildes fehlgeschlagen"
+
+#, fuzzy
+#~ msgid "The specified file size is invalid"
+#~ msgstr "Die angegebene Unixzeit ist ungültig (%s)"
+
+#~ msgid "[Parser warning in '%s']: %s"
+#~ msgstr "[Parserwarnung in '%s']: %s"
+
+#, fuzzy
+#~ msgid "Windows XP style"
+#~ msgstr "Fensterliste"
+
+#, fuzzy
+#~ msgid " I can't find the specified file %s."
+#~ msgstr " angegebene Datei kann nicht gefunden werden."
+
+#~ msgid "-e mode change change"
+#~ msgstr "-e Modusänderung"
+
+#~ msgid "Missing file name to parse"
+#~ msgstr "Dateiname zum Parsen fehlt"
+
+#~ msgid "A popup name is expected as parameter"
+#~ msgstr "Popupname als Parameter erwartet"
+
+#~ msgid "unspecified location in input"
+#~ msgstr "nicht angegebener Ort der Eingabe"
+
+#~ msgid "unknown stack frame?"
+#~ msgstr "unbekannter Stackrahmen?"
+
+#~ msgid "%Q [%Q@%Q] unsets avatar (%Q %Q)"
+#~ msgstr "%Q [%Q@%Q] entfernt Avatar (%Q %Q)"
+
+#~ msgid ""
+#~ "Can't set the current avatar to '%s' (failed to start the http transfer): "
+#~ "no message sent"
+#~ msgstr ""
+#~ "Aktueller Avatar kann nicht auf '%s' gesetzt werden (Start von HTTP-"
+#~ "Übertragung fehlgeschlagen): keine Nachricht gesendet"
+
+#~ msgid ""
+#~ "Can't set the current avatar to '%s' (can't load the image): no message "
+#~ "sent"
+#~ msgstr ""
+#~ "Kann den aktuellen Avatar nicht auf '%s' setzen (kann Bild nicht laden): "
+#~ "keine Nachricht gesendet"
+
+#~ msgid "No socket text specified"
+#~ msgstr "Kein Sockettext angegeben"
+
+#~ msgid "&Export Alias To..."
+#~ msgstr "Alias &exportieren nach..."
+
+#~ msgid "The script \"%1\" does not exist"
+#~ msgstr "Das Skript \"%1\" existiert nicht"
+
+#~ msgid "Defaults"
+#~ msgstr "Voreinstellungen"
+
+#~ msgid "Folders"
+#~ msgstr "Ordner"
+
+#~ msgid "Parser"
+#~ msgstr "Parser"
diff --git a/po/modules/options/options_es.po b/po/modules/options/options_es.po
new file mode 100644
index 00000000..b9aa4c04
--- /dev/null
+++ b/po/modules/options/options_es.po
@@ -0,0 +1,13075 @@
+# translation of kvirc_es.po to Spanish
+# Juanjo Alvarez Martinez <[email protected]>, 2004.
+# Jos� Luis S�nchez Villanueva <[email protected]>, 2004-2006.
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:304
+msgid ""
+msgstr ""
+"Project-Id-Version: kvirc_es\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2006-01-15 22:32+0100\n"
+"Last-Translator: Jose Luis Sanchez <[email protected]>\n"
+"Language-Team: Spanish <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"First-Translator: Juan Jos� �lvarez Mart�nez <[email protected]>\n"
+"X-Generator: KBabel 1.11\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:232
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:51
+msgid "Font:"
+msgstr "Fuentes:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:47
+msgid "Background color:"
+msgstr "Color de fondo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:129
+msgid "Background image:"
+msgstr "Imagen de fondo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:51
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:46
+#, fuzzy
+msgid "Horizontal align:"
+msgstr "Localizaci�n del certificado:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:50
+#, fuzzy
+msgid "Vertical align:"
+msgstr "Localizaci�n del certificado:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:59
+msgid "Mark Line:"
+msgstr "Marcar L�nea:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:66
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:124
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:59
+msgid "Tile"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:62
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:55
+msgid "Left"
+msgstr "Izquierda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:56
+msgid "Right"
+msgstr "Derecha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:132
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:62
+#, fuzzy
+msgid "Center"
+msgstr "General"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:60
+msgid "Top"
+msgstr "Arriba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:61
+msgid "Bottom"
+msgstr "Abajo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:149
+msgid "Enable URL highlighting"
+msgstr "Activar resaltado de URLs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:150
+msgid "Use line wrap margin"
+msgstr "Usar margen de justificaci�n de l�nea"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:151
+msgid "Maximum buffer size:"
+msgstr "Tama�o m�ximo de buffer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:152
+msgid " lines"
+msgstr " l�neas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:153
+msgid "Link tooltip show delay:"
+msgstr "Retraso hasta mostrar tooltip en los enlaces:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:306
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:59
+msgid " msec"
+msgstr " mseg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:155
+msgid "Link tooltip hide delay:"
+msgstr "Retraso hasta esconder tooltip en los enlaces:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:157
+msgid "Track last read text line"
+msgstr "Marcar la �ltima l�nea de texto le�da"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:48
+msgid "NickServ Authentication Rule"
+msgstr "Regla de Autentificaci�n de Nickserv"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:55
+msgid "Registered NickName"
+msgstr "Nick Registrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:60
+msgid "Put here the nickname that you have registered with NickServ"
+msgstr "Pon aqu� el nick que tienes registrado con NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:277
+msgid "NickServ Mask"
+msgstr "M�scara NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:70
+#, fuzzy, c-format
+msgid ""
+"This is the mask that NickServ must match to be correctly identified as the "
+"NickServ service. This usually will be something like <b>NickServ!"
+"[email protected]</b>.<br>You can use wildcards for this field, but "
+"generally it is a security flaw. If you're 100%% sure that NO user on the "
+"network can use the nickname \"NickServ\", the mask <b>NickServ!*@*</b> may "
+"be safe to use in this field."
+msgstr ""
+"Esta es la m�scara que debe concordar con NickServ para ser correctamente "
+"identificado como el servicio NickServ. Habitualmente ser� algo como "
+"<b>[email protected]</b>.<br>Puedes usar comodines para este "
+"campo, pero ello est� considerado como un fallo de seguridad. Si est�s 100% "
+"seguro que NING�N usuario en la red puede usar el nick \"NickServ\", puede "
+"ser seguro usar la m�scara <b>NickServ!*@*</b> en este campo."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:78
+msgid "Message Regexp"
+msgstr "Expresi�n Regular del Mensaje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:86
+msgid ""
+"This is the simple regular expression that the identification request "
+"message from NickServ must match in order to be correctly recognized.<br>The "
+"message is usually something like \"To identify yourself please use /ns "
+"IDENTIFY password\" and it is sent when the NickServ wants you to "
+"authenticate yourself. You can use the * and ? wildcards."
+msgstr ""
+"Esta es la expresi�n regular sencilla que debe concordar con la solicitud de "
+"identificaci�n de NickServ para poder ser reconocido correctamente."
+"<br>Normalmente, el mensaje es algo como \"Para identificarte usa /ns "
+"IDENTIFY password\" y se env�a cuando NickServ quiere que te identifiques. "
+"Puedes usar los comodines * y ?."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:259
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:279
+msgid "Identify Command"
+msgstr "Comando de Identificaci�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:98
+msgid ""
+"This is the command that will be executed when NickServ requests "
+"authentication for the nickname described in this rule (if the both server "
+"and NickServ mask are matched). This usually will be something like <b>msg "
+"NickServ identify &lt;yourpassword&gt;</b>.<br>You can use <b>msg -q</b> if "
+"you don't want the password echoed on the screen. Please note that there is "
+"no leading slash in this command."
+msgstr ""
+"Este es el comando que ser� ejecutado cuando NickServ solicite "
+"autentificaci�n para el nick descrito en esta regla (si ambas m�scaras, la "
+"del servidor y la de NickServ, concuerdan). Habitualmente ser� algo como "
+"<b>msg NickServ identificaci�n &lt;tuclave&gt;</b>.<br>Puedes usar <b>msg -"
+"q</b> si no quieres que la clave aparezca en pantalla. Por favor, observa "
+"que este comando no comienza con una barra (/)."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:256
+msgid "Server mask"
+msgstr "M�scara de Servidores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:117
+msgid ""
+"This is the mask that the current server must match in order for this rule "
+"to apply. It can contain * and ? wildcards.<br>Do NOT use simply \"*\" "
+"here..."
+msgstr ""
+"Esta es la m�scara con la que debe coincidir el servidor actual para que se "
+"aplique esta regla. Puede contener comodines * y ?.<br>No utilices "
+"�nicamente \"*\" aqu�..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:128
+msgid "Hint: Move the mouse cursor over the fields to get help"
+msgstr "Idea: Mueve el cursor del rat�n sobre los campos para obtener ayuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:137
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:68
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:803
+msgid "OK"
+msgstr "Aceptar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:164
+msgid "Invalid NickServ Rule"
+msgstr "Regla de NickServ no v�lida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:169
+msgid "The Nickname field can't be empty!"
+msgstr "�El campo del nick no puede estar vac�o!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:175
+msgid "The Nickname field can't contain spaces!"
+msgstr "�El campo del nick no puede contener espacios!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:183
+msgid "The NickServ mask can't be empty!<br>You must put at least * there."
+msgstr ""
+"�La m�scara de NickServ no puede estar vac�a!<br>Debes poner al menos un * "
+"aqu�."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:191
+msgid "The Message Regexp can't be empty!<br>You must put at least * there."
+msgstr ""
+"�La expresi�n regular del mensaje no puede estar vac�a!<br>Debes poner al "
+"menos un * aqu�."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:199
+msgid "The Identify Command can't be empty!"
+msgstr "�El Comando de Identificaci�n no puede estar vac�o!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:265
+msgid "Enable NickServ Identification"
+msgstr "Activar identificaci�n NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:269
+msgid "This check enables the automatic identification with NickServ"
+msgstr "Esta casilla habilita la identificaci�n autom�tica con NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:276
+msgid "Nickname"
+msgstr "Nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:258
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:278
+msgid "NickServ Request Mask"
+msgstr "Solicitud de M�scara NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:265
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on all the networks."
+"<br>Please be aware that this feature can cause your NickServ passwords to "
+"be stolen if used improperly. Make sure that you fully understand the "
+"NickServ authentication protocol.<br>In other words, be sure to know what "
+"you're doing.<br>Also note that the password that you provide is stored as "
+"<b>PLAIN TEXT</b>.<br>KVIrc supports also per-network NickServ "
+"authentication rules that can be created in the \"Advanced...\" network "
+"options (accessible from the servers dialog).</center>"
+msgstr ""
+"<center>Esta es la lista de reglas de identificaci�n de NickServ. KVIrc las "
+"usar� para su interacci�n autom�tica con NickServ en todas las redes.<br>Por "
+"favor, ten presente que esta caracter�stica puede provocar que tus claves de "
+"NickServ sean robadas si se usa indebidamente. Aseg�rate que entiendes bien "
+"el protoloco de autentificaci�n NickServ.<br>En otras palabras, aseg�rate de "
+"que sabes lo que est�s haciendo.<br>Piensa que la clave que proporcionas es "
+"almacenada en <b>TEXTO PLANO</b>.<br>KVIrc tambien permite que las reglas de "
+"identificacion sean creadas para cada red desde las opciones \"Avanzadas..."
+"\" (accesible desde el di�logo de servidores).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:293
+msgid "Add Rule"
+msgstr "A�adir Regla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:298
+msgid "Edit Rule"
+msgstr "Editar Regla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:302
+msgid "Delete Rule"
+msgstr "Borrar Regla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:31
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:36
+msgid "Font"
+msgstr "Fuentes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:38
+msgid "Foreground color"
+msgstr "Color de primer plano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:37
+msgid "Background color"
+msgstr "Color de fondo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:34
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:44
+msgid "Background image"
+msgstr "Imagen de fondo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:40
+#, fuzzy
+msgid "Enable tray icon"
+msgstr "Activar cifrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:41
+#, fuzzy
+msgid "Close in tray"
+msgstr "Minimizar en la bandeja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:42
+msgid "Minimize in tray"
+msgstr "Minimizar en la bandeja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:44
+#, fuzzy
+msgid "Enable tray icon flashing"
+msgstr "Deshabilitar el parpadeo de la ventana del notificador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:45
+msgid "Enable level-based message notification (not a message-type based)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:47
+msgid "Select message levels to notify"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:49
+msgid "Minimum level for low-priority messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:53
+msgid "Minimum level for high-priority message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.cpp:40
+msgid ""
+"This section contains irc protection tools<br><p>like<b> flood, ignore, "
+"antispam. </b> </p>"
+msgstr ""
+"Esta secci�n contiene las herramientas de protecci�n irc<br><p>como<b> "
+"saturaci�n, ignorar y antispam. </b> </p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:40
+msgid ""
+"<center><b>Settings for CTCP.</b></center><p>The <b>Client-To-Client "
+"Protocol</b> (CTCP) is used to transmit special control messages over an IRC "
+"connection. These messages can request information from clients or negotiate "
+"file transfers.<br><br></p>"
+msgstr ""
+"<center><b>Configuraci�n para CTCP</b></center><p>El <b>Client-To-Client "
+"Protocol</b> (CTCP) se utiliza para transmitir mensajes de control "
+"especiales sobre una conexi�n IRC. Estos mensajes pueden solicitar "
+"informacion de clientes o negociar transferencias de archivos.<br><br></p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:47
+msgid "CTCP Replies"
+msgstr "Respuestas CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:48
+msgid "Append to VERSION reply:"
+msgstr "A�adir a la respuesta VERSION:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:52
+msgid ""
+"<center>This text will be appended to the CTCP VERSION reply.<br>For "
+"example, you can place a script name here.</center>"
+msgstr ""
+"<center>Este texto ser� a�adido a la respuesta CTCP VERSION.<br>Por ejemplo, "
+"puedes poner un nombre de script aqu�.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:55
+msgid "Append to SOURCE reply:"
+msgstr "A�adir a la respuesta SOURCE:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:59
+msgid ""
+"<center>This text will be appended to the CTCP SOURCE reply.<br>For example, "
+"you can place the source URL for a script here.</center>"
+msgstr ""
+"<center>Este texto ser� a�adido a la respuesta CTCP SOURCE.<br>Por ejemplo, "
+"puedes poner la URL de origen de un script aqu�.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:69
+msgid "PAGE reply:"
+msgstr "Respuesta PAGE:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:73
+msgid ""
+"<center>This is the CTCP PAGE reply.<br>It should contain some sort of "
+"acknowledgement for CTCP PAGE messages.</center>"
+msgstr ""
+"<center>Esta es la respuesta a CTCP PAGE.<br>Deber�a contener alg�n tipo de "
+"reconocimiento para los mensajes CTCP PAGE.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:76
+msgid "Show the CTCP replies in the active window"
+msgstr "Mostrar respuestas a CTCP en la ventana activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:78
+msgid "Show dialog for CTCP page requests"
+msgstr "Mostrar di�logo para solicitudes CTCP page"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:36
+msgid "Use tree taskbar"
+msgstr "Usar barra de tareas en �rbol"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:37
+msgid "Sort windows by name"
+msgstr "Ordenar ventanas por nombre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:38
+msgid "Show window icons in taskbar"
+msgstr "Mostrar iconos de ventana en la barra de tareas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:39
+msgid "Show activity meter in taskbar"
+msgstr "Mostrar medici�n de actividad en la barra de tareas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:41
+msgid ""
+"<center>This option enables the usage of the taskbar activity meter. Each "
+"window entry will have a small indicator of the activity that is going on in "
+"that window. The indicator is a small square that changes colors, dark "
+"colors mean low activity, while bright colors signal high activity. KVIrc "
+"also uses some heuristics to determine whether the activity is somewhat "
+"\"human\" or it is generated by automated entities (such as bots or IRC "
+"servers). \"Human\" activity causes the indicator to be shaded red while "
+"automated activity causes the indicator to be shaded blue.</center>"
+msgstr ""
+"<center>Esta opci�n activa el uso del medidor de actividad. Cada entrada en "
+"la ventana tendr� un peque�o indicador de actividad. El indicador es un "
+"peque�o rect�ngulo que cambia de color; negro significa baja actividad y "
+"colores m�s brillantes indican alta actividad. KVIrc usa algunas heur�sticas "
+"para averiguar cuando se trata de actividad \"humana\" o si �sta es generada "
+"por entidades autom�ticas (como bots o servidores IRC). La actividad \"humana"
+"\" hace que el indicador sea sombreado en rojo mientas que la actividad "
+"autom�tica hace que el indicador sea sombreado en azul.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:49
+msgid "Show IRC context indicator in taskbar"
+msgstr "Mostrar indicador de contexto de IRC en la barra de tareas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:50
+msgid "Enable window tooltips"
+msgstr "Activar tooltips de ventana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:233
+msgid "Text/Alert Colors"
+msgstr "Colores de Texto/Alertas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:125
+msgid "Normal:"
+msgstr "Normal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:126
+msgid "Selected:"
+msgstr "Seleccionado:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:236
+msgid "Alert Level 1:"
+msgstr "Nivel de Alerta 1:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:237
+msgid "Alert Level 2:"
+msgstr "Nivel de Alerta 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:238
+msgid "Alert Level 3:"
+msgstr "Nivel de Alerta 3:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:239
+msgid "Alert Level 4:"
+msgstr "Nivel de Alerta 4:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:240
+msgid "Alert Level 5:"
+msgstr "Nivel de Alerta 5:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:241
+msgid "Progress bar color:"
+msgstr "Color de la barra de progreso:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:124
+msgid "Background Colors"
+msgstr "Colores de Fondo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:212
+#, fuzzy
+msgid "Show header"
+msgstr "Mostrar Previsualizaci�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:214
+msgid "Minimum width:"
+msgstr "Anchura m�nima:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:215
+msgid "Maximum width:"
+msgstr "Anchura m�xima:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:235
+msgid "Minimized:"
+msgstr "Minimizado:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:242
+msgid "Minimum width of buttons:"
+msgstr "Anchura m�nima de los botones:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:244
+#, fuzzy
+msgid "Set maximum button width"
+msgstr "Anchura m�xima:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:245
+#, fuzzy
+msgid "Maximum width of buttons:"
+msgstr "Anchura m�nima de los botones:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:246
+msgid "Use flat buttons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:96
+msgid "Network Details"
+msgstr "Detalles de la Red"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:82
+msgid "Description:"
+msgstr "Descripci�n:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:116
+msgid "<center>Put here a brief description of the network.</center>"
+msgstr "<center>Ponga aqu� una breve descripci�n de la red.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:477
+msgid "Properties"
+msgstr "Propiedades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:123
+msgid "Username:"
+msgstr "Nombre de usuario:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:134
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to servers "
+"on this network.\n"
+"If this field is left empty (most common case), KVIrc will use the default "
+"username specified in the \"Identity\" options tab.</center>"
+msgstr ""
+"<center>Este es el <b>nombre de usuario</b> que usar� KVIrc para "
+"autentificarse en los servidores de esta red.\n"
+"Si este campo se deja vac�o (el caso m�s normal), KVIrc usar� el nombre de "
+"usuario por defecto especificado en la pesta�a de opciones \"Identidad\".</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:498
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:320
+msgid "Nickname:"
+msgstr "Nick:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:145
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to the servers on this network.<br>If this field is left empty (most "
+"common case), the default nickname (specified in the \"Identity\" settings) "
+"will be used.</center>"
+msgstr ""
+"<center>Puedes especificar un <b>nick</b> \"especial\" que ser� usado para "
+"entrar en los servidores de esta red.<br>Si se deja este campo vac�o (el "
+"caso m�s normal), se usar� el nick por defecto (especificado en la "
+"configuraci�n de \"Identidad \".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:509
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:342
+msgid "Real name:"
+msgstr "Nombre real:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:153
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with the servers on this network.<br>If you leave this field empty "
+"(most common case), the default \"real name\" (specified in the \"Identity\" "
+"settings) will be used.</center>"
+msgstr ""
+"<center>Puedes especificar un <b>nombre real</b> \"especial\" que ser� usado "
+"para entrar en los servidores de esta red.<br>Si se deja este campo vac�o "
+"(el caso m�s normal), se usar� el \"nombre real\" por defecto (especificado "
+"en la configuraci�n de \"Identidad \").</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:644
+msgid "Encoding:"
+msgstr "Codificaci�n:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:164
+msgid ""
+"<center>This box allows you to choose the preferred encoding for the servers "
+"in this network. If you choose \"Use System Encoding\" then the encoding "
+"will be set to the systemwide value that you choose in the \"Encoding\" page "
+"of the options dialog.</center>"
+msgstr ""
+"<center>Esta casilla te permite escoger la codificaci�n preferida para los "
+"servidores de esta red. Si escoges \"Usar Codificaci�n del Sistema\" "
+"entonces la codificaci�n ser� inicializada con la configuraci�n global del "
+"sistema que escojas en la pesta�a \"Codificaci�n\" del di�logo de opciones.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:173
+msgid "Use System Encoding"
+msgstr "Usar Codificaci�n del Sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:185
+msgid "Connect to this network at startup"
+msgstr "Conectar a esta red al inicio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:189
+msgid ""
+"<center>This option will cause KVIrc to automatically connect to this "
+"network at startup</center>"
+msgstr ""
+"<center>Esta opci�n har� que KVIrc se conecte a esta red al inicio</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:79
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:120
+msgid "General"
+msgstr "General"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:756
+msgid "Channels to join automatically upon connect:"
+msgstr "Canales a unirse autom�ticamente despu�s de conectar:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:211
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to a server in this network has been established. To add a "
+"channel, type its name in the text input below and click \"<b>Add</b>\".</"
+"center>"
+msgstr ""
+"<center>Aqu� puedes poner la lista de canales a los que entrar�s "
+"automaticamento despu�s de establecer una conexi�n con un servidor de esta "
+"red. Para a�adir un canal, escribe su nombre en la caja de texto inferior y "
+"pulsa \"<b>A�adir</b>\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:217
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:62
+msgid "Join Channels"
+msgstr "Unirse a Canales"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:228
+msgid ""
+"<center>The following commands will be executed after a connection to a "
+"server in this network has been established.<br><b>Important:</b> Enter "
+"commands <b>without</b> a preceding slash (e.g. <tt>quote pass secret</tt> "
+"instead of <tt>/quote pass secret</tt>).<br>KVIrc will first send the USER "
+"command, then eventually PASS and NICK and then execute this command "
+"sequence.</center>"
+msgstr ""
+"<center>Los siguientes comandos ser�n ejecutados despu�s que una conexi�n "
+"con un servidor de esta red haya sido establecida.<br><b>Importante:</b> "
+"introduce los comandos <b>sin</b> precederlos de una barra (p.e. <tt>quote "
+"pass secret</tt> en lugar de <tt>/quote pass secret</tt>.<br>KVIrc enviar� "
+"primero el comando USER, eventualmente PASS y NICK, y despu�s ejecutar� esta "
+"secuencia de comandos.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:782
+msgid "On Connect"
+msgstr "En Conexi�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:249
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"a server in this network.<br><b>Important:</b> Enter commands <b>without</b> "
+"a preceding slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote "
+"privatelog</tt>).<br>This is useful for automatically opening queries, "
+"setting variables, etc.</center>"
+msgstr ""
+"<center>Los siguientes comandos ser�n ejecutados despu�s que se haya entrado "
+"correctamente a un servidor en esta red.<br><b>Importante:</b> introduce los "
+"comandos <b>sin</b> precederlos de una barra (p.e. <tt>quote privatelog</tt> "
+"en lugar de <tt>/quote privatelog</tt>.<br>Esto es �til para abrir privados "
+"autom�ticamente, inicializar variables, etc.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:801
+msgid "On Login"
+msgstr "Al Entrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:285
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on this network.<br>Please "
+"be aware that this feature can cause your NickServ passwords to be stolen if "
+"used improperly. Make sure that you fully understand the NickServ "
+"authentication protocol.<br>In other words, be sure to know what you're "
+"doing.<br>Also note that the password that you provide is stored as <b>PLAIN "
+"TEXT</b>.</center>"
+msgstr ""
+"<center>Esta es la lista de reglas de identificaci�n de NickServ. KVIrc las "
+"usar� para su interacci�n autom�tica con NickServ en esta red.<br>Por favor, "
+"ten presente que esta caracter�stica puede provocar que tus claves de "
+"NickServ sean robadas si se usa indebidamente. Aseg�rate que entiendes bien "
+"el protoloco de autentificaci�n NickServ.<br>En otras palabras, aseg�rate de "
+"que sabes lo que est�s haciendo.<br>Piensa que la clave que proporcionas es "
+"almacenada en <b>TEXTO PLANO</b>.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:35
+msgid "NickServ"
+msgstr "NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:323
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:60
+msgid "&OK"
+msgstr "&Aceptar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:449
+msgid "Server Details"
+msgstr "Detalles del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:465
+msgid ""
+"<center>This is a brief description of this server. This field has no "
+"restrictions but many server lists use it to describe the server's physical "
+"location</center>"
+msgstr ""
+"<center>Esta es una breve descripci�n del servidor. Este campo no tiene "
+"restricciones pero muchas listas de servidores lo utilizan para describir la "
+"localizaci�n f�sica del servidor</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:484
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to this "
+"server.\n"
+"If this field is left empty (most common case), KVIrc will first look if an "
+"username is specified for the network that this server belongs to, and if "
+"that is empty then KVIrc will use the default username specified in the "
+"\"Identity\" options tab.</center>"
+msgstr ""
+"<center>Este es el <b>nombre de usuario</b> que usar� KVIrc para "
+"autentificarse en este servidor.\n"
+"Si este campo se deja vac�o (el caso m�s normal), KVIrc mirar� primero si "
+"hay un nombre de usuario especificado para la red a la que pertenece este "
+"servidor, y si �ste se encuentra vac�o KVIrc usar� el nombre de usuario por "
+"defecto especificado en la pesta�a de opciones \"Identidad\"."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:490
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:127
+msgid "Password:"
+msgstr "Clave:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:495
+msgid ""
+"<center>If this server requires a password, put it in this field, otherwise "
+"leave it empty.</center>"
+msgstr ""
+"<center>Si este servidor necesita una clave, escr�bela en este campo; en "
+"otro caso, d�jalo vac�o.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:504
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to this server.<br>If this field is left empty (most common case), "
+"KVIrc will first look if a nickname is specified for the network that this "
+"server belongs to, and if that is empty then the default nickname (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center>Puedes especificar un <b>nick</b> \"especial\" que ser� usado para "
+"entrar en este servidor.<br>Si se deja este campo vac�o (el caso m�s "
+"normal), KVIrc mirar� primero si se especific� un nick para la red a la que "
+"pertenece este servidor, y si �ste se encuentra vac�o se usar� el nick por "
+"defecto (especificado en la configuraci�n de \"Identidad \".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:513
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with this server.<br>If you leave this field empty (most common case), "
+"KVIrc will first look if a real name is specified for the network that this "
+"server belongs to, and if that is empty the default \"real name\" (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center>Puedes especificar un <b>nombre real</b> \"especial\" que ser� usado "
+"para entrar en este servidor.<br>Si se deja este campo vac�o (el caso m�s "
+"normal), KVIrc buscar� primero si se especific� uno para la red a la que "
+"pertenece este servidor, y si este est� vac�o entonces se usar� el \"nombre "
+"real\" por defecto (especificado en la configuraci�n de \"Identidad \".</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:683
+msgid "User Mode"
+msgstr "Modo de usuario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:520
+msgid "Use default user mode"
+msgstr "Modos de usuario por defecto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:522
+msgid ""
+"<center>If this is enabled, the global initial <b>user mode</b> (configured "
+"from the identity dialog) will be used. If disabled, you can configure an "
+"initial user mode for this server"
+msgstr ""
+"<center>Si se activa, se usar� el <b>modo de usuario</b> global inicial "
+"(configurado desde el di�logo Identidad). Si se desactiva, puedes configurar "
+"un modo de usuario inicial para este servidor.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:684
+msgid "Invisible (+i)"
+msgstr "Invisible (+i)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:534
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:685
+msgid "Server notices (+s)"
+msgstr "Noticias del servidor (+s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:686
+msgid "Wallops (+w)"
+msgstr "Wallops (+w)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:548
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:60
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:104
+msgid "Identity"
+msgstr "Identidad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:115
+msgid "Port:"
+msgstr "Puerto:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:565
+msgid ""
+"<center>This is the default <b>port</b> that this server will be contacted "
+"on.<br>Usually <b>6667</b> is OK.</center>"
+msgstr ""
+"<center>Este es el <b>puerto</b> por defecto en el que este servidor ser� "
+"contactado.<br>Habitualmente, <b>6667</b> es correcto.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:571
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:119
+msgid "IP address:"
+msgstr "Direcci�n IP:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:576
+msgid ""
+"<center>This is the <b>IP address</b> of this server, it is here for caching "
+"purposes.<br>If you leave this field empty, KVIrc will fill it in the first "
+"time it connects to the server. If you enable the \"cache IP address\" "
+"option below, KVIrc will use it as a \"cached result\" and avoid looking it "
+"up again.</center>"
+msgstr ""
+"<center>Esta es la <b>direcci�n IP</b> de este servidor, y se encuentra aqu� "
+"como cach�.<br>Si dejas este campo vac�o, KVIrc lo rellenar� la primera vez "
+"que te conectes al servidor. Si activas la opci�n de abajo \"Cachear "
+"direcci�n IP\", KVIrc la usar� como un \"resultado en cach�\" para evitar "
+"volver a buscarlo de nuevo.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:596
+msgid "Cache IP address"
+msgstr "Cachear direcci�n IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:599
+msgid ""
+"<center>This check will enable <b>IP address caching</b> for this server:"
+"<br>DNS lookups can be time-consuming and might be blocking on some "
+"platforms; this option will cause KVIrc to look up the server hostname only "
+"once.<br><br> Advanced: you can also use this option to force a certain "
+"server name to resolve to a fixed ip address when either the dns for that "
+"server is temporairly unreachable or you want to avoid the round-robin "
+"lookups.</center>"
+msgstr ""
+"<center>Esta casilla habilitar� el <b>cach� de direcci�n IP</b> para este "
+"servidor:<br>las b�squedas DNS consumen tiempo y pueden ser bloqueantes en "
+"algunas plataformas; esta opci�n har� que KVIrc busque el nombre del "
+"servidor una sola vez.<br><br> Avanzado: tambi�n puedes usar esta opci�n "
+"para forzar que un cierto nombre de servidor sea resuelto a una IP fija para "
+"cuando el servidor de nombres est� tempor�lmente no disponible o quieras "
+"evitar las b�squedas circulares.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:609
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:140
+msgid "Use IPv6 protocol"
+msgstr "Usar protocolo IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:619
+msgid ""
+"<center>This check identifies IPv6 servers.<br>If enabled, KVIrc will "
+"attempt to use the IPv6 protocol (thus your OS <b>must</b> have a working "
+"IPv6 stack and you <b>must</b> have an IPv6 connection).</center>"
+msgstr ""
+"Este indicador identifica servidores IPv6.<br>Si se habilita, KVIrc "
+"intentar� usar el protocolo IPv6 (tu S.O. <b>debe</b> tener una pila IPv6 "
+"funcionando y <b>debes</b> tener una conexi�n IPv6).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:624
+msgid "Use SSL protocol"
+msgstr "Usar protocolo SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:627
+msgid ""
+"<center>This check will cause the connection to use the <b>Secure Socket "
+"Layer</b> encryption support. Obviously, this server must have support for "
+"this, too. :)</center>"
+msgstr ""
+"<center>Esta casilla har� que para esta conexi�n se utilice el soporte de "
+"cifrado <b>Secure Socket Layer (SSL)</b>. Obviamente, este servidor deber� "
+"soportarlo tambi�n. :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:636
+msgid "Connect to this server at startup"
+msgstr "Conectar a este servidor al inicio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:641
+msgid ""
+"<center>This option will cause KVIrc to connect to the IRC server when it is "
+"started.</center>"
+msgstr ""
+"<center>Esta opci�n har� que KVIrc se conecte al servidor de IRC cuando "
+"arranque.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:650
+msgid ""
+"<center>This box allows you to choose the preferred encoding for this sever. "
+"If you choose \"Use Network Encoding\" then the encoding will be inherited "
+"from the network that this server belongs to.</center>"
+msgstr ""
+"<center>Esta casilla te permite escoger la codificaci�n preferida para este "
+"servidor. Si escoges \"Usar Codificaci�n de Red\" entonces la codificaci�n "
+"se heredar� de la red a la que pertenezca este servidor.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:659
+msgid "Use Network Encoding"
+msgstr "Usar codificaci�n de red"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:672
+msgid "Link filter:"
+msgstr "Filtro de enlaces:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:701
+msgid ""
+"<center>This field specifies the name of a module that exports a link filter "
+"for this type of server.<br>For plain IRC connections, you don't need any "
+"link filters; this is used for incompatible protocols.</center>"
+msgstr ""
+"<center>Este campo especifica el nombre de un m�dulo que exporta un filtro "
+"de enlace para este tipo de servidor.<br>Para conexiones IRC normales, no "
+"necesitas ning�n filtro de enlace; esto se utiliza para protocolos "
+"incompatibles.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:705
+msgid "Id:"
+msgstr "Id:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:713
+msgid ""
+"<center>This field allows you to specify a really unique id for this server. "
+"You will then be able to use /server -x &lt;this_id&gt; to make the "
+"connection. This is especially useful when you have multiple server entries "
+"with the same hostname and port in different networks (bouncers?)</center>"
+msgstr ""
+"<center>Este campo permite especificar un id �nico para este servidor. Ser�s "
+"capaz de usar /server -x &lt;este_id&gt; para realizar la conexi�n. Esto es "
+"especialmente �til cuando tienes m�ltiples entradas de servidor con un �nico "
+"nombre de m�quina y puerto en diferentes redes</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:719
+msgid "Proxy server:"
+msgstr "Servidor Proxy:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:724
+msgid ""
+"<center>This is the <b>proxy</b> that KVIrc will use to connect to thos "
+"server.\n"
+"If this field is set in \"Default\" KVirc will use global proxy settings, if "
+"it is set in \"Direct connection\" KVirc will connect to this server without "
+"proxy. You can define new proxy server in global options' \"Proxy servers\" "
+"menu.</center>"
+msgstr ""
+"<center>Este es el <b>proxy</b> que usar� KVIrc para conectarse a este "
+"servidor.\n"
+"Si se selecciona \"Por defecto\" KVIrc usara la configuracion de proxy "
+"global, mientras que si se selecciona \"Conexion directa\" KVIrc se "
+"conectar� a este servidor sin proxy. Puedes definir un nuevo servidor proxy "
+"en el men� global de opciones \"Servidores proxy\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:729
+msgid "Default"
+msgstr "Por defecto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:730
+msgid "Direct connection"
+msgstr "Conexi�n directa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:746
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:28
+msgid "Connection"
+msgstr "Conexi�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:758
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to this server has been established. To add a channel, type its "
+"name in the text input below and click \"<b>Add</b>\".</center>"
+msgstr ""
+"<center>Aqu� puedes poner la lista de canales a los que entrar�s "
+"automaticamento despu�s de establecer una conexi�n con este servidor. Para "
+"a�adir un canal, escribe su nombre en la caja de texto inferior y pulsa "
+"\"<b>A�adir</b>\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:776
+msgid ""
+"<center>The following commands will be executed after a connection has been "
+"established.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote pass secret</tt> instead of <tt>/quote pass secret</"
+"tt>).<br>KVIrc will first send the USER command, then eventually PASS and "
+"NICK and then execute this command sequence.<br>This is particularly useful "
+"for IRC bouncers that require login commands.</center>"
+msgstr ""
+"<center>Los siguientes comandos ser�n ejecutados despu�s que una conexi�n "
+"con este servidor haya sido establecida.<br><b>Importante:</b> introduce los "
+"comandos <b>sin</b> precederlos de una barra (p.e. <tt>quote pass secret</"
+"tt> en lugar de <tt>/quote pass secret</tt>.<br>KVIrc enviar� primero el "
+"comando USER, eventualmente PASS y NICK, y despu�s ejecutar� esta secuencia "
+"de comandos.<br>Esto es particularmente �til para repetidores IRC que "
+"necesitan �rdenes de entrada.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:796
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"this server.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote privatelog</tt>)."
+"<br>This is useful for automatically opening queries, setting variables, etc."
+"</center>"
+msgstr ""
+"<center>Los siguientes comandos ser�n ejecutados despu�s que se haya entrado "
+"correctamente a este servidor.<br><b>Importante:</b> introduce los comandos "
+"<b>sin</b> precederlos de una barra (p.e. <tt>quote privatelog</tt> en lugar "
+"de <tt>/quote privatelog</tt>.<br>Esto es �til para abrir privados "
+"autom�ticamente, inicializar variables, etc.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1041
+msgid "Server"
+msgstr "Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1042
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:73
+msgid "Description"
+msgstr "Descripci�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1054
+msgid ""
+"<center>This is the list of available IRC servers.<br>Right-click on the "
+"list to add or remove servers and perform other actions.<br>Double-click on "
+"a item for advanced options.</center>"
+msgstr ""
+"<center>Esta es la lista de servidores IRC disponibles.<br>Doble click en la "
+"lista para a�adir o eliminar servidores y realizar otras acciones.<br>Doble "
+"click en un elemento para acceder a las opciones avanzadas.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1069
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1430
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1554
+msgid "New Network"
+msgstr "Nueva Red"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1077
+msgid "New Server"
+msgstr "Nuevo Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1086
+msgid "Remove Network/Server"
+msgstr "Eliminar Red/Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1098
+msgid "Copy Server"
+msgstr "Copiar Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1107
+msgid "Paste Server"
+msgstr "Pegar Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1446
+msgid "Import List"
+msgstr "Importar Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1125
+#, fuzzy
+msgid "Active Configuration"
+msgstr "Guardar Configuraci�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1332
+msgid "Server:"
+msgstr "Servidor:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1130
+msgid ""
+"<center>This is the name of the currently selected server or network</center>"
+msgstr ""
+"<center>Este es el nombre del servidor o de la red actualmente seleccionada."
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1153
+msgid "Advanced..."
+msgstr "Avanzado..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1156
+msgid "<center>Click here to edit advanced options for this entry</center>"
+msgstr ""
+"<center>Pulse aqu� para editar las opciones avanzadas de esta entrada</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1159
+msgid "Connect &Now"
+msgstr "Co&nectar Ahora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1164
+msgid ""
+"<center>Hit this button to connect to the currently selected server.</center>"
+msgstr ""
+"<center>Pulsa este bot�n para conectarse al servidor actualmente "
+"seleccionado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1177
+msgid ""
+"<center>This button shows a list of recently used servers. It allows you to "
+"quickly find them in the list.</center>"
+msgstr ""
+"<center>Este bot�n muestra una lista de los servidores usados recientemente. "
+"Te permite encontrarlos rapidamente en la lista.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1181
+msgid "Show this dialog at startup"
+msgstr "Mostrar este di�logo al inicio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1184
+msgid ""
+"<center>If this option is enabled, the Servers dialog will appear every time "
+"you start KVIrc</center>"
+msgstr ""
+"<center>Si esta opci�n est� activada, el di�logo de servidores aparecer� "
+"cada vez que arranques KVIrc</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1335
+msgid "Network:"
+msgstr "Red:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1345
+msgid "No selection"
+msgstr "Sin selecci�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1364
+msgid "UnknownNet"
+msgstr "Red Desconocida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1431
+msgid "Remove Network"
+msgstr "Eliminar Red"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1434
+msgid "&New Server"
+msgstr "&Nuevo Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1435
+msgid "Re&move Server"
+msgstr "Eli&minar Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1437
+msgid "&Copy Server"
+msgstr "&Copiar Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1439
+msgid "&Paste Server"
+msgstr "&Pegar Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1444
+msgid "Clear List"
+msgstr "Limpiar Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1483
+msgid ""
+"Oops... something weird happened:<br>Can't find any module capable of "
+"importing servers."
+msgstr ""
+"Ouch... algo malo ha sucedido:<br>No puedo encontrar ning�n m�dulo capazde "
+"importar servidores."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1500
+msgid ""
+"Oops... something weird happened:<br>Can't find the module that was capable "
+"of this import action. :("
+msgstr ""
+"Ouch... algo malo ha sucedido:<br>No puedo encontrar el m�dulo encargado de "
+"la acci�n de importar. :("
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1574
+msgid "irc.unknown.net"
+msgstr "irc.desconocido.net"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:39
+msgid "Disable parser warnings"
+msgstr "Deshabilitar los avisos del analizador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:40
+msgid "Disable broken event handlers"
+msgstr "Desactivar manejadores de eventos rotos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:41
+msgid "Kill broken timers"
+msgstr "Matar temporizadores rotos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:42
+msgid "Send unknown commands as /RAW"
+msgstr "Enviar comandos desconocidos como /RAW"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:46
+msgid "Automatically unload unused modules"
+msgstr "Descargar autom�ticamente los m�dulos no utilizados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:47
+msgid "Ignore module versions (dangerous)"
+msgstr "Ignorar las versiones de los m�dulos (peligroso)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:51
+msgid "Relay errors and warnings to debug window"
+msgstr "Repetir errores y avisos a la ventana de depuraci�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:52
+msgid "Create minimized debug window"
+msgstr "Crear minimizada la ventana de depuraci�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:59
+msgid "Nickname alternatives"
+msgstr "Nicks alternativos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:62
+msgid ""
+"<center>Here you can choose up to three nicknames alternative to the primary "
+"one. KVIrc will use the alternatives if the primary nick is already used by "
+"someone else on a particular IRC network.</center>"
+msgstr ""
+"<center>Aqu� puedes escoger hasta tres nicks alternativos adicionales al "
+"primario.KVIrc usar� los alternativos si el nick primario est� siendo usado "
+"por cualquier otro en una red IRC concreta.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:69
+msgid "Alt. Nickname 1:"
+msgstr "Nick alt. 1:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:76
+msgid "Alt. Nickname 2:"
+msgstr "Nick alt. 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:83
+msgid "Alt. Nickname 3:"
+msgstr "Nick alt. 3"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Ok"
+msgstr "Aceptar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:130
+msgid "Avatar Download - KVIrc"
+msgstr "Descarga de Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:136
+msgid "<center>Please wait while the avatar is being downloaded</center>"
+msgstr ""
+"<center>Por favor, espera mientras el avatar est� siendo descargado</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:139
+msgid "Abort"
+msgstr "Abortar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:170
+msgid "Failed to start the download"
+msgstr "Fallo al comenzar la descarga"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:184
+msgid "Download aborted by user"
+msgstr "Descarga interrumpida por el usuario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:213
+msgid "Choose Avatar - KVIrc"
+msgstr "Escoge Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:219
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+"Por favor, escoge una imagen avatar. Se puede usar una ruta completa a un "
+"archivo local o una imagen en la Web.<br>Si deseas usar un archivo local, "
+"pulsa el bot�n \"<b>Navegar</b>\" para moverte por los directorios locales."
+"<br>Puede introducirse una URL completa (incluyendo <b>http://</b>) para una "
+"imagen. "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:237
+msgid "&Browse..."
+msgstr "Navegar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:275
+msgid "Choose an Image File - KVIrc"
+msgstr "Escoge un Archivo de Imagen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:316
+#, fuzzy
+msgid "Basic Properties"
+msgstr "Propiedades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:323
+msgid ""
+"<center>Your <b>nickname</b> is your primary form of identification on IRC."
+"<br>Since servers cannot accept multiple users sharing the same nickname "
+"(case insensitive), you can provide alternative nicknames to be used in "
+"casethe server refuses to accept the default one.</center>"
+msgstr ""
+"<center>Tu <b>nick</b> es la principal forma de identificaci�n en el IRC."
+"<br>Como los servidores no pueden aceptar a varios usuarios compartiendo el "
+"mismo nick (sin distinguir may�sculas/min�sculas), puedes proporcionar nicks "
+"alternativos que ser�n usados en caso que el servidor rechace el "
+"proporcionado por defecto.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:331
+msgid "Alternatives..."
+msgstr "Alternativos..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:337
+msgid ""
+"<center>This is the <b>username</b> that you will use to connect to the "
+"server.<br>In the past, it was used as a form of authentication, but it "
+"normally has no special use now.<br>In addition to your nickname, you are "
+"identified on IRC by your <b>username@hostname</b>.</br>Basically, you can "
+"enter any word you like here. :D</center>"
+msgstr ""
+"<center>Este es el <b>nombre de usuario</b> que usar�s para conectar al "
+"servidor.<b>Anteriomente, era usado como una forma de autentificaci�n, pero "
+"ahora no tiene una utilidad especial.<br>Adicionalmente a tu nick, ser�s "
+"identificado en el IRC por tu <b>usuario@m�quina</b>.</br>B�sicamente, "
+"puedes poner aqu� cualquier palabra que te guste. :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:346
+msgid ""
+"<center>This text will appear when someone does a /WHOIS on you.<br>It is "
+"intended to be your real name, but people tend to put random quotes and "
+"phrases here too.</center>"
+msgstr ""
+"<center>Este texto aparecer� cuando alguien te haga un /WHO.<br>Deber�a "
+"tratarse de tu nombre real, pero la gente tiende a poner cosas sin sentido, "
+"refranes, ocurrencias y �o�er�as.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:351
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:356
+#, fuzzy
+msgid "Profile"
+msgstr "Pr�logo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:361
+msgid "Age:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:366
+msgid "Here you can specify your age."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:401
+#, fuzzy
+msgid "Unspecified"
+msgstr "No se ha especificado nombre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:391
+#, fuzzy
+msgid "Gender:"
+msgstr "General"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:396
+msgid "Here you can specify your gender."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:402
+msgid "Female"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:403
+#, fuzzy
+msgid "Male"
+msgstr "Valor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:414
+#, fuzzy
+msgid "Location:"
+msgstr "&Localizaci�n:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:417
+msgid ""
+"You can describe here your approximate physical location. Something like "
+"\"Region, Country\" will be ok. Please note that this information will be "
+"viewable by anyone so putting more data (like the exact address), generally, "
+"<b>is not a good idea</b>."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:422
+msgid "Languages:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:425
+msgid ""
+"You can put here the short names of the languages you can speak. An example "
+"might be \"EN,IT\" that would mean that you speak both Italian and English."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:429
+#, fuzzy
+msgid "Other:"
+msgstr "Otros..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:432
+msgid ""
+"You can put here some additional personal data. It might be a funny quote or "
+"your homepage url... Please note that this information will be viewable by "
+"anyone so <b>don't put any sensible data</b> (passwords, telephone or credit "
+"card numbers)."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:502
+msgid ""
+"Here you can choose your avatar image. It will be visible<br>by other people "
+"that request it. Choose a nice image of yourself,<br>possibly avoiding "
+"obscenity and offending images. It is a good idea<br>to choose a relatively "
+"small file (say 150 Kb max) because<br>most clients have a limit on the size "
+"of avatars being downloaded.<br>The image also should be smaller than "
+"800x600 pixels since<br>it will have to be viewable in everyone's monitor."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:511
+msgid "Use avatar"
+msgstr "Usar avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:537
+msgid "Choose..."
+msgstr "Escoger..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:598
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:637
+msgid "Failed to Load Avatar - KVIrc"
+msgstr "Fall� la carga del Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:599
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:638
+msgid ""
+"Failed to load the avatar image.<br>It may be an unaccessible file or an "
+"unsupported image format."
+msgstr ""
+"Fall� la carga de la imagen del avatar.<br>Puede tratarse de un archivo "
+"inaccesible o un formato de imagen no soportado."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:606
+msgid "Failed to download the avatar image.<br><b>%Q</b>"
+msgstr "Fall� la descarga de la imagen del avatar.<br><b>%Q</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:608
+msgid "Avatar Download Failed - KVIrc"
+msgstr "Fall� la descarga del Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:649
+#, fuzzy
+msgid "Avatar Might Be Too Big - KVIrc"
+msgstr "Descarga de Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:650
+msgid ""
+"The avatar you have choosen is bigger than 1024x768 pixels.<br>Such a big "
+"image will not be seen on all the user monitors<br>and will probably be "
+"scaled by the remote clients with poor quality<br>algorithms to improve "
+"performance. You *should* scale it manually<br>to a sane size (like 800x600) "
+"or choose a different image."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:688
+msgid "Default Messages"
+msgstr "Mensajes por Defecto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:691
+#, fuzzy
+msgid "Part message:"
+msgstr "Mensaje part"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:695
+msgid ""
+"<center>This is the default part message that will be used when you<br>leave "
+"a channel by closing a channel window.</center>"
+msgstr ""
+"<center>Este es el mensaje de partida por defecto que ser� usando "
+"cuando<br>abandonas un canal cerrando su ventana de canal.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:699
+#, fuzzy
+msgid "Quit message:"
+msgstr "Mensaje de salida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:702
+msgid ""
+"<center>This is the default quit message that will be used when you<br>quit "
+"your IRC session by closing the console window or disconnecting by pressing "
+"the disconnect button.</center>"
+msgstr ""
+"<center>Este es el mensaje de salida por defecto que ser� usado "
+"cuando<br>cierras tu sesi�n IRC cerrando la ventana de consola o "
+"desconectando pulsando el bot�n de desconexi�n.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:42
+msgid "Open Query For"
+msgstr "Abrir Privado para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:40
+msgid "Private messages"
+msgstr "Mensajes privados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:46
+msgid ""
+"<center>This option enables query window creation when a private message "
+"(PRIVMSG) is received.<br>If you disable this, private messages will be "
+"shown in the active window or a common channel.</center>"
+msgstr ""
+"<center>Esta opci�n permite la creaci�n de ventanas independientes cuando se "
+"recibe un mensaje privado (PRIVMSG).<br>Si desactivas esto, los mensajes "
+"privados ser�n mostrados en la ventana activa o en un canal com�n.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:42
+msgid "Private notices"
+msgstr "Noticias privadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:55
+msgid ""
+"<center>This option enables query window creation when a private notice "
+"(NOTICE) is received.<br>If you disable this, private notices will be shown "
+"in the active window or a common channel.</center>"
+msgstr ""
+"<center>Esta opci�n permite la creaci�n de ventanas independientes cuando se "
+"recibe una noticia privada (NOTICE).<br>Si desactivas esto, las noticias "
+"privadas ser�n mostradas en la ventana activa o en un canal com�n.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:62
+#, fuzzy
+msgid "Always open queries as minimized"
+msgstr "Abrir todas minimizadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:66
+msgid ""
+"<center>This option causes newly created query windows to be immediately "
+"minimized.<br>Enable this if you don't like queries popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+"<center>Esta opci�n har� que las ventanas con privados recien creadas sean "
+"minimizadas inmediatamente.<br>Activa esto si no te gusta que los privados "
+"te interrumpan mientras est�s tecleando algo en un canal. :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:74
+msgid "Enable target user tracking"
+msgstr "Activar seguimiento de destino de usuario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:77
+msgid ""
+"<center>This option will enable target user tracking.<br>Some actions of the "
+"target user (e.g. joins and parts) will be displayed in the window.<br></"
+"center>"
+msgstr ""
+"<center>Esta opci�n permitir� rastrear usuarios concretos.<br>Algunas "
+"acciones de algunos usuarios (p.e. entradas y salidas) ser�n mostradas en la "
+"ventana.<br></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:83
+msgid "Flash system taskbar on new query message"
+msgstr "Destelleo en la barra de tareas del sistema con los nuevos privados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:86
+msgid ""
+"<center>This option causes the system taskbar entry for KVIrc to flash when "
+"a new query message is received and the KVIrc window is not the active.</"
+"center>"
+msgstr ""
+"<center>Esta opci�n har� que la entrada de KVIrc en la barra de tareas del "
+"sistema destellee cuando se recibe un nuevo privado y la ventana de KVIrc no "
+"se encuentre seleccionada.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:91
+msgid "Popup notifier on new query message"
+msgstr "Mostrar notificador con los nuevos mensajes privados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:94
+msgid ""
+"<center>This option causes a small notifier window to pop up in the low "
+"right corner of the screen when a new message is received and the KVIrc "
+"window is not active.</center>"
+msgstr ""
+"<center>Esta opci�n har� que se muestre una peque�a ventana de "
+"notificaciones en la esquina inferior derecha de la pantalla cuando se "
+"reciba un nuevo mensaje y la ventana de KVIrc no est� activa.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:98
+msgid "Show information about query target at the top of the query"
+msgstr ""
+"Mostrar informaci�n acerca del destino del privado en la parte superior"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:101
+msgid ""
+"<center>This option enables query window information label. It can show you "
+"known information about query target at the top of the window.<br>Uncheck if "
+"you think,that it wastes your query space/</center>"
+msgstr ""
+"<center>Esta opci�n activa la etiqueta de informaci�n en la ventana de "
+"privados. Puede mostrarte la informaci�n conocida acerca del destino del "
+"privado en la parte superior de la ventana.<br>Desactivala si piensas que "
+"desperdicia espacio de la ventana de privados</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:39
+msgid "Use global application font"
+msgstr "Usar fuente global de la aplicaci�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:40
+msgid "Hide icons in Popup"
+msgstr "Esconder iconos en men� emergente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:41
+msgid "Global application font:"
+msgstr "Fuente global de la aplicaci�n:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:67
+msgid "Enable fake transparency"
+msgstr "Activar falsa transparencia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:71
+msgid ""
+"<center>This option makes all KVIrc windows look transparent.<br>You must "
+"choose a blending background image to below or check the \"Use KDE desktop "
+"for transparency\" option.</center>"
+msgstr ""
+"<center>Esta opci�n har� que todas las ventanas de KVIrc se vean "
+"transparentes.<br>Debes escoger una imagen para mezclar con el fondo o "
+"activar la opci�n \"Usar escritorio de KDE como transparencia\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:77
+msgid ""
+"<center>This option makes all KVIrc windows look like transparent.<br>You "
+"must choose a blending background image to below.</center>"
+msgstr ""
+"<center>Esta opci�n har� que todas las ventanas de KVIrc parezcan "
+"transparentes.<br>Debes escoger tambi�n una imagen de fondo para mezclar m�s "
+"abajo.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:83
+msgid "Child window opacity:"
+msgstr "Opacidad de la ventana hija:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:87
+msgid "Parent window opacity:"
+msgstr "Opacidad de la ventana padre:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:91
+msgid "Blend color:"
+msgstr "Color de la mezcla:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:97
+msgid "Use KDE desktop for transparency"
+msgstr "Usar escritorio de KDE como transparencia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:102
+msgid "Keep in sync with KDE background changes"
+msgstr "Mantenerse sincronizado con los cambios de fondo de KDE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:111
+msgid "Transparency blend image:"
+msgstr "Imagen de mezcla transparente:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:155
+msgid "Active Background"
+msgstr "Fondo Activo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:156
+msgid "Inactive Background"
+msgstr "Fondo Inactivo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:157
+msgid "Active Text (Primary)"
+msgstr "Texto Activo (Primario)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:158
+msgid "Active Text (Secondary)"
+msgstr "Texto Activo (Secundario)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:159
+msgid "Inactive Text (Primary)"
+msgstr "Texto Inactivo (Primario)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:160
+msgid "Inactive Text (Secondary)"
+msgstr "Texto Inactivo (Secundario)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:197
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:44
+msgid "Background"
+msgstr "Fondo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:178
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:205
+msgid "Background Image"
+msgstr "Imagen de Fondo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:198
+msgid "Low-Contrast Foreground"
+msgstr "Primer Plano de Bajo Contraste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:199
+msgid "Mid-Contrast Foreground"
+msgstr "Primer Plano de Contraste Medio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:200
+msgid "Active High-Contrast Foreground (Primary)"
+msgstr "Primer Plano Activo de Alto Contraste (Primario)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:201
+msgid "Active High-Contrast Foreground (Secondary)"
+msgstr "Primer Plano Activo de Alto Contraste (Secundario)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:202
+msgid "Inactive High-Contrast Foreground (Primary)"
+msgstr "Primer Plano Inactivo de Alto Contraste (Primario)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:203
+msgid "Inactive High-Contrast Foreground (Secondary)"
+msgstr "Primer Plano Inactivo de Alto Contraste (Secundario)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:40
+#, fuzzy
+msgid "Scaling in userlist"
+msgstr "Iniciando lista de notificaci�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:41
+#, fuzzy
+msgid "Scale avatar images in userlist (recommended)"
+msgstr "Escalar im�genes de avatar (recomendado)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:43
+msgid ""
+"<center>This option will force KVIrc to scale avatars shown in the userlist."
+"<br>Avatars will be scaled to fit the constraints set below. Better keep "
+"this option on. :)</center>"
+msgstr ""
+"<center>Esta opci�n obligar� a KVIrc a escalar los avatares mostrados en la "
+"lista de usuarios.<br>Los avatares se escalar�n para cumplir las "
+"restricciones seleccionadas abajo. Conviene mantener esta opci�n activada. :)"
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:48
+msgid "Do not scale avatar if it is less than required size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:59
+msgid "Image width:"
+msgstr "Anchura de la imagen:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:61
+msgid "Image height:"
+msgstr "Altura de la imagen:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:56
+#, fuzzy
+msgid "Scaling on load (and in user tooltips)"
+msgstr "Iniciando lista de notificaci�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:57
+#, fuzzy
+msgid "Scale avatar images on image load"
+msgstr "Escalar im�genes de avatar (recomendado)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:65
+msgid "Request CTCP"
+msgstr "Solicitar CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:66
+msgid "Request missing avatars"
+msgstr "Solicitar avatares faltantes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:67
+msgid "Maximum requested file size:"
+msgstr "Tama�o m�ximo de archivo solicitado:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to send a DCC GET request when someone "
+"sets an avatar and there is no cached copy available.</center>"
+msgstr ""
+"<center>Esta opci�n har� que KVIrc env�e una petici�n DCC GET cuando alguien "
+"configure un avatar y no tengamos una copia almacenada disponible.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:74
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:317
+msgid " bytes"
+msgstr " bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:77
+msgid ""
+"<center>This is the maximum size for avatar images that will be "
+"automatically requested.<br>A reasonable value might be 102400 bytes (100 K)."
+"</center>"
+msgstr ""
+"<center>Este es el m�ximo tama�o para las im�genes de avatar que ser�n "
+"solicitadas autom�ticamente.<br>Un valor razonable podr�a ser 102400 bytes "
+"(100 K).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:83
+msgid "Automatically accept incoming avatars"
+msgstr "Aceptar automaticamente avatares entrantes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:87
+msgid ""
+"<center>This option will cause KVIrc to auto-accept DCC SEND requests for "
+"incoming avatars.<br>If you're using the \"Request missing avatars\" option "
+"above, enabling this may by useful.<br>Avatars will be saved in the local "
+"KVIrc directory.</center>"
+msgstr ""
+"<center>Esta opci�n har� que KVIrc acepte autom�ticamente las peticiones DCC "
+"SEND de avatares entrantes.<br>Si est�s usando la opci�n \"Solicitar "
+"avatares faltantes\" anterior, puede ser �til activar esta.<br>Los avatares "
+"ser�n guardados en el directorio local de KVIrc.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:94
+msgid "Remember avatars for registered users"
+msgstr "Recordar avatares para usuarios registrados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:99
+msgid ""
+"<center>Use a user's last known avatar by default (only for users that are "
+"registered).</center>"
+msgstr ""
+"<center>Usar por defecto el �ltimo avatar conocido para el usuario (solo "
+"para usuarios que est�n registrados).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:103
+msgid "Avatar offer timeout:"
+msgstr "Tiempo de expiraci�n de la oferta de avatar:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:104
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:162
+msgid " sec"
+msgstr " seg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:107
+msgid ""
+"<center>This is the amount of time to make an avatar available for transfer "
+"when requested.<br>When someone sends a CTCP AVATAR request, KVIrc will "
+"reply with a CTCP AVATAR message containing the name and size of your avatar "
+"image.<br>A time-limited file offer is added for the image file to the "
+"requesting user.</center>"
+msgstr ""
+"<center>Esta es la cantidad de tiempo que un avatar estar� disponible para "
+"transferir cuando sea solicitado.<br>Cuando alguien env�e una petici�n CTCP "
+"AVATAR, KVIrc puede responder con un mensaje CTCP AVATAR conteniendo el "
+"nombre y el tama�o de tu imagen avatar.<br>Se ofrecer� el archivo de imagen "
+"durante tiempo limitado al usuario solicitante.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:115
+msgid "Ignore requests if no avatar is set"
+msgstr "Ignorar peticiones si no hay un avatar seleccionado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:118
+msgid ""
+"This option will cause KVIrc to ignore channel CTCP AVATAR requests when you "
+"have no avatar set. This is usually a good practice since it helps in "
+"reducing traffic by not sending a reply that would be empty."
+msgstr ""
+"Esta opci�n har� que KVIrc ignore las solicitudes de canal CTCP AVATAR "
+"cuando no tengas configurado un avatar.<br>Habitualmente, esta es una buena "
+"pr�ctica porque ayuda a reducir el tr�fico evitando enviar r�plicas que "
+"podr�an estar vac�as."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:39
+msgid "Use online notify list"
+msgstr "Usar lista de notificaciones de conexi�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:44
+msgid "Configuration"
+msgstr "Configuraci�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:45
+msgid "Show notifications in active window"
+msgstr "Mostrar notificaciones en la ventana actual"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:50
+msgid "Flash window when users are going online"
+msgstr "Destelleo de la ventana cuando los usuarios vayan estando en l�nea"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:55
+msgid "Popup notifier when users are going online"
+msgstr "Mostrar notificador cuando los usuarios vayan estando en l�nea"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:59
+msgid "Advanced configuration"
+msgstr "Configuraci�n Avanzada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:64
+msgid "Check USERHOST for online users"
+msgstr "Comprobar USERHOST para usuarios conectados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:69
+msgid "Use \"smart\" notify list manager"
+msgstr "Usar gestor \"inteligente\" de lista de notificaciones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:74
+msgid "Use the WATCH method if available"
+msgstr "Usar el m�todo \"WATCH\" si est� disponible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:79
+msgid "Check interval (in seconds)"
+msgstr "Intervalo de comprobaci�n (en segundos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:85
+msgid "ISON delay (in seconds)"
+msgstr "Retraso ISON (en segundos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:91
+msgid "USERHOST delay (in seconds)"
+msgstr "Retraso USERHOST (en segundos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:96
+msgid ""
+"<p><b>Note:</b><br>The notify list is managed using the \"Registered Users\" "
+"settings.</p>"
+msgstr ""
+"<p><b>Nota:</b><br>La lista de notificaciones se gestiona usando las "
+"opciones de los \"Usuarios Registrados\".</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:112
+msgid "Forcibly and completely disable the notifier"
+msgstr "Desactivar forzada y completamente el notificador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:115
+msgid ""
+"This is an option for the impatient: it allows to forcibly and permanently "
+"disable the notifier window. Please note that if this option is activated "
+"then the notifier will NOT popup even if all the other options around "
+"specify to use it in response to particular events. Also note that this "
+"option will make all the /notifier.* commands fail silently."
+msgstr ""
+"Esta es una opci�n para impacientes: permite desactivar forzada y "
+"completamente la ventana de notificaciones. Por favor, observa que si se "
+"activa esta opci�n el notificador NO se mostrar� incluso si todas las "
+"opciones restantes especifican su uso como respuesta a determinados eventos. "
+"Observa tambi�n que esta opci�n har� que todos los comandos /notifier.* "
+"fallen silenciosamente."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:123
+msgid "Disable notifier window flashing"
+msgstr "Deshabilitar el parpadeo de la ventana del notificador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:124
+#, fuzzy
+msgid "Disable notifier window fade effect"
+msgstr "Deshabilitar el parpadeo de la ventana del notificador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:39
+msgid "Default away message:"
+msgstr "Mensaje de ausencia por defecto:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:41
+msgid "User input exits away mode"
+msgstr "La entrada de texto sale del modo ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:43
+msgid "Away Nickname"
+msgstr "Nick de ausencia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:44
+msgid "Change nickname on away"
+msgstr "Cambiar el nick al ausentarse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:47
+msgid "Use automatic nickname ([5 letters]AWAY)"
+msgstr "Usar nick de ausencia autogenerado [5 letras]AWAY) "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:55
+#, c-format
+msgid "Custom nickname (%%nick%% means a current nick):"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/libkvioptions.cpp:199
+msgid "No such options page class name %Q"
+msgstr "No existen esas opciones en la p�gina del nombre de clase %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:47
+#, fuzzy
+msgid "Use system URL handlers"
+msgstr "URL de manejadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:50
+msgid "<b>http://</b> handler command:"
+msgstr "<b>http://</b> comando manejador:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:51
+msgid "<b>https://</b> handler command:"
+msgstr "<b>https://</b> comando manejador:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:52
+msgid "<b>ftp://</b> handler command:"
+msgstr "<b>ftp://</b> comando manejador:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:53
+msgid "<b>mailto:</b> handler command:"
+msgstr "<b>mailto:</b> comando manejador:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:54
+msgid "<b>file://</b> handler command:"
+msgstr "<b>file://</b> comando manejador:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:55
+msgid "Unknown protocol handler command:"
+msgstr "Comando manejador de protocolo desconocido:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:61
+msgid "Use proxy"
+msgstr "Usar proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:65
+msgid "Proxy"
+msgstr "Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:76
+msgid ""
+"<center>This is the list of available proxy servers.<br>Right-click on the "
+"list to add or remove proxies.</center>"
+msgstr ""
+"<center>Esta es la lista de servidores proxy disponibles.<br>Pulsar con el "
+"bot�n derecho en la lista para a�adir o eliminar proxies.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:90
+msgid "New Proxy"
+msgstr "Nuevo Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:99
+msgid "Remove Proxy"
+msgstr "Eliminar Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:111
+msgid "Proxy:"
+msgstr "Proxy:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:131
+msgid "Protocol:"
+msgstr "Protocolo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:336
+msgid "&New Proxy"
+msgstr "&Nuevo Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:337
+msgid "Re&move Proxy"
+msgstr "Eli&minar Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:71
+msgid "Pattern"
+msgstr "Patr�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:72
+msgid "MIME Type"
+msgstr "Tipo MIME"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:87
+msgid "MIME type:"
+msgstr "Tipo MIME:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:92
+msgid "File pattern:"
+msgstr "Patr�n de archivo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:97
+msgid "Magic bytes:"
+msgstr "Bytes m�gicos:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:102
+msgid "Save path:"
+msgstr "Trayectoria para guardar:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:107
+msgid "Local open command:"
+msgstr "Comando apertura local:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:112
+msgid ""
+"<center>This field contains the command to execute to open a local file."
+"<br><tt>$0</tt> is used in place of the filename</center>"
+msgstr ""
+"<center>Este campo contiene el comando a ejecutar para abrir un archivo "
+"local.<br><tt>$0</tt> ser� usado en lugar del nombre del archivo</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:116
+msgid "Remote open command:"
+msgstr "Comando de apertura remota:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:121
+msgid ""
+"<center>This field contains the command to execute when automatically "
+"opening a received file.<br><tt>$0</tt> is used in place of the filename</"
+"center>"
+msgstr ""
+"<center>Este campo contiene el comando a ejecutar para abrir autom�ticamente "
+"un archivo recibido.<br><tt>$0</tt> ser� usado en lugar del nombre del "
+"archivo</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:125
+msgid "Icon"
+msgstr "Icono"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:134
+msgid "&New"
+msgstr "&Nuevo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:138
+msgid "Re&move"
+msgstr "Eli&minar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:184
+msgid "[Unknown Media Type]"
+msgstr "[Tipo de Medio Desconocido]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:230
+msgid "New Media Type"
+msgstr "Nuevo Tipo de Medio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:53
+msgid "Nickname Colors"
+msgstr "Colores del Nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:56
+msgid "Channel owner:"
+msgstr "Propietario del canal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:57
+msgid "Channel admin:"
+msgstr "Administrador del canal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:58
+msgid "Op:"
+msgstr "Op:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:59
+msgid "Half-op:"
+msgstr "Semioperador:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:60
+msgid "Voice:"
+msgstr "Voz:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:61
+msgid "User-op:"
+msgstr "Usuarios operadores:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:62
+msgid "Away:"
+msgstr "Ausente:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:66
+msgid "Use different color for own nick:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:81
+msgid "Draw nickname grid"
+msgstr "Dibujar rejilla de nicks"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:83
+msgid "Grid color:"
+msgstr "Color de la rejilla:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:90
+msgid "Grid type:"
+msgstr "Tipo de rejilla:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:94
+msgid "3D Grid"
+msgstr "Rejilla 3D"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:95
+msgid "3D Buttons"
+msgstr "Botones 3D"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:96
+msgid "Plain Grid"
+msgstr "Rejilla Plana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:97
+msgid "Dotted Grid"
+msgstr "Rejilla Punteada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:131
+msgid "Horizontal Alignment:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:135
+#, fuzzy
+msgid "Vertical Alignment:"
+msgstr "Localizaci�n del certificado:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:231
+#, fuzzy
+msgid "Show gender icons"
+msgstr "Mostrar iconos de mensajes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:232
+msgid "Show user channel icons"
+msgstr "Mostrar iconos de usuarios de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:233
+msgid "Show user channel activity indicator"
+msgstr "Mostrar indicador de actividad de usuario en el canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:234
+msgid "Hide users label"
+msgstr "Esconder etiquetas de usuario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:235
+msgid "Enable user tooltips"
+msgstr "Activar tooltips de usuario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:236
+#, fuzzy
+msgid "Hide avatars"
+msgstr "Usar avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:79
+msgid "Use flood protection (recommended)"
+msgstr "Utilizar protecci�n de saturaci�n (recomendado)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:81
+msgid ""
+"<center>This option makes KVIrc only respond to a limited number of CTCP "
+"requests within a specified time interval, to prevent \"flooding\" CTCP "
+"messages.</center>"
+msgstr ""
+"<center>Esta opci�n har� que KVIrc solo responda a un n�mero limitado de "
+"peticiones CTCP dentro de un intervalo especificado de tiempo, para prevenir "
+"el \"flooding\" (saturaci�n) de mensajes CTCP.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:83
+msgid "Allow up to:"
+msgstr "Permitir hasta:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:84
+msgid " requests"
+msgstr " peticiones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:86
+msgid ""
+"<center>Minimum value: <b>0 requests</b><br>Maximum value: <b>10000 "
+"requests</b></center>"
+msgstr ""
+"<center>Valor m�nimo: <b>0 peticiones</b><br>Valor m�ximo: <b>10000 "
+"peticiones</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:89
+msgid "within:"
+msgstr "cada:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:92
+msgid ""
+"<center>Minimum value: <b>1 sec</b><br>Maximum value: <b>3600 sec</b></"
+"center>"
+msgstr ""
+"<center>Valor m�nimo: <b>1 seg</b><br>Valor m�ximo: <b>3600 seg</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:96
+msgid "Ignored Requests"
+msgstr "Ignorar Peticiones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:97
+msgid "PING"
+msgstr "PING"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:98
+msgid "FINGER"
+msgstr "FINGER"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:99
+msgid "CLIENTINFO"
+msgstr "CLIENTINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:100
+msgid "USERINFO"
+msgstr "USERINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:101
+msgid "VERSION"
+msgstr "VERSION"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:102
+msgid "SOURCE"
+msgstr "SOURCE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:103
+msgid "TIME"
+msgstr "TIME"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:104
+msgid "PAGE"
+msgstr "PAGE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:105
+msgid "AVATAR"
+msgstr "AVATAR"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:106
+msgid "DCC/TDCC"
+msgstr "DCC/TDCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:131
+msgid "General Preferences"
+msgstr "Preferencias Generales"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:134
+#, fuzzy
+msgid "Theme Preferences"
+msgstr "Preferencias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:136
+#, fuzzy
+msgid "KVIrc Preferences"
+msgstr "Preferencias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:139
+msgid ""
+"This dialog contains a set of KVIrc settings.<br> Use the icons on the left "
+"to navigate through the option pages. The text box in the bottom left corner "
+"is a small search engine. It will highlight the pages that contain options "
+"related to the search term you have entered."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:147
+msgid ""
+"Many settings have tooltips that can be shown by holding the cursor over "
+"their label for a few seconds."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:152
+msgid ""
+"When you have finished, click \"<b>OK</b>\" to accept your changes or "
+"\"<b>Cancel</b>\" to discard them. Clicking \"<b>Apply</b>\" will commit "
+"your changes without closing the window."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:217
+msgid ""
+"<p>This is the search tool for this options dialog.</p><p>You can enter a "
+"search term either in your native language or in english and press the "
+"button on the right. The pages that contain some options related to the "
+"search term will be highlighted and you will be able to quickly find them.</"
+"p><p>Try \"nickname\" for example.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:249
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:61
+msgid "Close this dialog, accepting all changes."
+msgstr "Cerrar el di�logo, aceptando todos los cambios."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:255
+msgid "&Apply"
+msgstr "&Aplicar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:256
+msgid "Commit all changes immediately."
+msgstr "Grabar todos los cambios inmediatamente."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:69
+msgid "Close this dialog, discarding all changes."
+msgstr "Cerrar el di�logo, descartando todos los cambios."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:149
+msgid ""
+"This table contains the text icon associations.<br>KVirc will use them to "
+"display the CTRL+I escape sequences and eventually the emoticons."
+msgstr ""
+"Esta tabla contiene las asociaciones de iconos de texto.<br>KVIrc los usar� "
+"para visualizar las secuencias de escape CTRL+I y eventualmente los "
+"emoticonos."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:165
+msgid "Add"
+msgstr "A�adir"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:169
+msgid "Delete"
+msgstr "Borrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:191
+msgid "unnamed"
+msgstr "sin nombre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:53
+msgid "Enable word highlighting"
+msgstr "Activar resaltado de palabras"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:55
+msgid "Words to highlight:"
+msgstr "Palabras a resaltar:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:57
+msgid "Word splitters:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:59
+msgid "Highlight messages containing my nickname"
+msgstr "Resaltar siempre los mensajes que contengan mi nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:61
+msgid ""
+"<center>If this option is enabled, KVIrc will highlight any user message "
+"containing your current nickname</center>"
+msgstr ""
+"<center>Si se activa esta opci�n, KVIrc resaltar� cualquier mensaje de "
+"usuario que contenga su nick</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:63
+msgid "Flash the system taskbar entry on highlighted messages"
+msgstr ""
+"Destelleo en la barra de tareas del sistema con los mensajes resaltados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:65
+msgid ""
+"<center>If this option is enabled, KVIrc will (attempt to) flash the system "
+"taskbar entry when a highlighted message is printed and KVIrc is not the "
+"active window</center>"
+msgstr ""
+"<center>Si se activa esta opci�n, KVIrc (intentar�) que la entrada de la "
+"barra de tareas del sistema destellee cuando se muestre un mensaje resaltado "
+"y KVIrc no sea la ventana activa</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:67
+msgid "Popup the notifier window on highlighted messages"
+msgstr "Mostrar la ventana de notificaci�n con los mensajes resaltados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:69
+msgid ""
+"<center>If this option is enabled, KVIrc will popup a little notifier window "
+"in the low right corner of your desktop when a highlighted message is "
+"printed and KVIrc is not the active window</center>"
+msgstr ""
+"<center>Si se habilita esta opci�n, KVIrc mostrar� una peque�a ventana de "
+"notificaciones en la esquina inferior derecha del escritorio cuando se "
+"visualice un mensaje resaltado y KVIrc no sea la ventana activa</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:91
+#, fuzzy
+msgid "Alert Restrictions"
+msgstr "Fall� el registro del script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:92
+msgid "Restrict alert"
+msgstr "Restringir alertas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:94
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if a "
+"normal message is received in a channel.<br>Actions like joins, parts and "
+"mode changes will be ignored.<br> This is useful if you are in channels with "
+"a high rate of traffic and only want to be alerted for messages that are "
+"interesting to you.</center>"
+msgstr ""
+"<center>Si esta opci�n est� activa, KVIrc alertar� en la barra de tareas "
+"solo si se recibe un mensaje normal en un canal.<br>Acciones como entradas, "
+"salidas y cambios de modo ser�n ignorados.<br>Esto es �til si te encuentras "
+"en canales con una gran cantidad de tr�fico y solo si quieres ser alertado "
+"de mensajes que te interesan.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:96
+msgid "Alert for highlighted words"
+msgstr "Alertar por palabras resaltadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:98
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which contain a word from the highlighted words list above.</center>"
+msgstr ""
+"<center>Si se activa esta opci�n, la barra de tareas tambi�n alertar� de "
+"mensajes que contengan una palabra presente en la lista de palabras "
+"resaltadas de la lista anterior.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:100
+msgid "Alert for query messages"
+msgstr "Alertar por mensajes privados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:102
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which are shown in queries.</center>"
+msgstr ""
+"<center>Si se activa esta opci�n, la barra de tareas alertar� tambi�n de "
+"mensajes mostrados en privados.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:107
+msgid "Use custom alert level"
+msgstr "Usar un nivel de alerta personalizado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:109
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if "
+"the specified alert level is reached.</center>"
+msgstr ""
+"<center>Si se activa esta opci�n, KVIrc alertar� en la barra de tareas solo "
+"si se alcanza el nivel de alerta especificado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:111
+msgid "Minimum alert level:"
+msgstr "Nivel de alerta m�nimo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:114
+msgid ""
+"<center>This option sets the minimum alert level for the taskbar.</center>"
+msgstr ""
+"<center>Esta opci�n configura el m�nimo nivel de alerta para la barra de "
+"tareas.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:213
+msgid "Output verbosity"
+msgstr "Detalle de la salida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:49
+msgid "Mute"
+msgstr "Callado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:50
+msgid "Quiet"
+msgstr "Discreto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:51
+msgid "Normal"
+msgstr "Normal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:52
+msgid "Verbose"
+msgstr "Detallado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:53
+msgid "Paranoic"
+msgstr "Paranoico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:59
+msgid "Show in active window"
+msgstr "Mostrar en la ventana activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:60
+msgid "External messages"
+msgstr "Mensajes externos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:61
+msgid "External CTCP replies"
+msgstr "Contestaciones CTCP externas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:62
+msgid "Whois replies"
+msgstr "Respuestas Whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:63
+msgid "ChanServ and NickServ notices"
+msgstr "Noticias de los servidores de Nick y CHAN"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:64
+msgid "Invite messages"
+msgstr "Mensajes invitaci�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:65
+msgid "Server replies"
+msgstr "Contestaciones del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:66
+msgid "Server notices"
+msgstr "Noticias del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:67
+msgid "Broadcast and WALLOPS messages"
+msgstr "Mensajes difusi�n y WALLOP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:70
+msgid "Show extended server information"
+msgstr "Mostrar informaciones extendidas del servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:71
+msgid "Show server pings"
+msgstr "Mostrar pings de servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:72
+msgid "Show own parts in the console"
+msgstr "Mostrar las salidas propias en la consola"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:73
+msgid "Show compact mode changes"
+msgstr "Mostrar cambios de modo compactos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:43
+#, fuzzy
+msgid "Minimize on startup"
+msgstr "Minimizar en la bandeja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:44
+msgid "Confirm quit with active connections"
+msgstr "Confirmar salida con conexiones activas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:45
+msgid "Remember window properties"
+msgstr "Recordar propiedades de ventana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:50
+msgid "Disable splash screen"
+msgstr "Deshabilitar pantalla de presentaci�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:54
+msgid "Enable visual effects"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:55
+msgid "Hide Channel window tool buttons by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:57
+msgid "Open Dialog Window For"
+msgstr "Abrir Di�logo de Ventana para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:58
+msgid "Preferences"
+msgstr "Preferencias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:59
+msgid "Registered Users"
+msgstr "Usuarios Registrados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:149
+msgid "Servers"
+msgstr "Servidores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.cpp:40
+msgid ""
+"This section contains irc tools<br><p>like<b> away, lag and logging system. "
+"</b> </p>"
+msgstr ""
+"Esta secci�n contiene las herramientas irc<br><p>como<b> ausente, retraso y "
+"sistema de registro. </b> </p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:39
+#, fuzzy
+msgid "On Disconnect"
+msgstr "Desconectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:42
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:55
+msgid "Keep channels open"
+msgstr "Mantener los canales abiertos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:44
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after disconnect."
+"</center>"
+msgstr ""
+"<center>Esta opci�n har� que KVIrc mantenga los canales abiertos despu�s de "
+"una desconexi�n inesperada.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:47
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:60
+msgid "Keep queries open"
+msgstr "Mantener los privados abiertos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:49
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after disconnect.</"
+"center>"
+msgstr ""
+"<center>Esta opci�n har� que KVIrc mantenga los privados abiertos despu�s de "
+"una desconexi�n inesperada.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:52
+msgid "On Unexpected Disconnect"
+msgstr "En desconexiones inesperadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+"<center>Esta opci�n har� que KVIrc mantenga los canales abiertos despu�s de "
+"una desconexi�n inesperada.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:62
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+"<center>Esta opci�n har� que KVIrc mantenga los privados abiertos despu�s de "
+"una desconexi�n inesperada.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:65
+msgid "Rejoin channels after reconnect"
+msgstr "Volver a unirse a canales tras reconectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:67
+msgid ""
+"<center>This option will cause KVIrc to rejoin channels after a successful "
+"reconnect attempt.</center>"
+msgstr ""
+"<center>Esta opci�n har� que KVIrc vuelva a entrar en los canales despu�s de "
+"un intento de reconexi�n con �xito.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:69
+msgid "Reopen queries after reconnect"
+msgstr "Reabrir los privados tras reconectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to reopen query windows after a "
+"successful reconnect attempt.</center>"
+msgstr ""
+"<center>Esta opci�n har� que KVIrc reabra las ventanas con los privados "
+"despu�s de un intento de reconexi�n con �xito.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:75
+msgid "Automatically reconnect"
+msgstr "Reconectar autom�ticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:77
+msgid ""
+"<center>This option will enable auto-reconnecting after an unexpected "
+"disconnect. An unexpected disconnect is the <b>termination</b> of a <b>fully "
+"connected IRC session</b> that was <b>not requested by the user</b> by the "
+"means of the QUIT message.<p><b>Warning:</b> If you use /RAW to send a QUIT "
+"message to the server, this option will not behave correctly, since does not "
+"detect the outgoing QUIT message and will attempt to reconnect after the "
+"server has closed the connection. For this reason, always use the /QUIT "
+"command to close your connections. This option may also behave incorrectly "
+"with bouncers that support detaching, in this case a solution could be to "
+"prepare an alias that sends the bouncer \"detach\" command immediately "
+"before the \"quit\" command.<br><tt>alias(bncdetach){ raw bouncer detach; "
+"quit; }</tt></p></center>"
+msgstr ""
+"<center>Esta opci�n habilitar� la reconexi�n autom�tica tras una desconexi�n "
+"inesperada. Una desconexi�n inesperada es la <b>terminaci�n</b> de una "
+"<b>sesi�n completa de IRC</b> que <b>no fu� solicitada por el usuario</b> "
+"mediante el mensaje QUIT.<p><b>Atenci�n:</b> Si usas /RAW para enviar un "
+"mensaje QUIT al servidor esta opci�n no funcionar� correctamente, porque no "
+"detectar� el QUIT saliente e intentar� reconectarse despu�s que el servidor "
+"haya cerrado la conexi�n. Por esta raz�n, usa siempre el comando /QUIT para "
+"cerrar tus conexiones. Tambi�n puede comportarse incorrectamente con "
+"repetidores que soporten desasociaci�n. En tal caso, una soluci�n podr�a ser "
+"preparar un alias que env�e el comando \"detach\" inmediatamente antes del "
+"comando \"quit\".<br><tt>alias(bcndetach){ raw bouncer detach; quit; }</tt></"
+"p></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:89
+msgid "Maximum attempts (0: unlimited):"
+msgstr "N�mero m�ximo de intentos (0: ilimitados):"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:94
+msgid "Delay between attempts:"
+msgstr "Espera entre intentos:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:100
+msgid ""
+"<center>Minimum value: <b>0 sec</b><br>Maximum value: <b>86400 sec</b></"
+"center>"
+msgstr ""
+"<center>Valor m�nimo: <b>0 seg</b><br>Valor m�ximo: <b>86400 seg</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:123
+msgid "Certificate"
+msgstr "Certificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:125
+msgid "Use SSL certificate (PEM format only)"
+msgstr "Usar certificado SSL (solo formato PEM)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:127
+msgid "Certificate location:"
+msgstr "Localizaci�n del certificado:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:130
+msgid "Certificate password:"
+msgstr "Clave del certificado:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:134
+msgid "Private Key"
+msgstr "Clave Privada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:135
+msgid "Use SSL private key"
+msgstr "Usar clave privada SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:137
+msgid "Private key location:"
+msgstr "Localizaci�n de la clave privada:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:140
+msgid "Private key password:"
+msgstr "Clave de la clave privada:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:146
+msgid "This executable has no SSL support."
+msgstr "Este ejecutable de KVIrc no tiene soporte SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:165
+msgid "Timeout Values"
+msgstr "Valores de Tiempos de Expiraci�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:166
+msgid "Connect timeout:"
+msgstr "Tiempo de expiraci�n de conexi�n:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:168
+msgid "Outgoing data queue flush timeout:"
+msgstr "Tiempo de expiraci�n para volcar la cola de datos salientes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:170
+msgid "Limit outgoing traffic"
+msgstr "Limitar tr�fico saliente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:171
+msgid "Limit to 1 message every:"
+msgstr "Limitar a 1 mensaje cada:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:173
+msgid " usec"
+msgstr " microseg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:175
+msgid ""
+"<center>Minimum value: <b>10000 usec</b><br>Maximum value: <b>10000000 usec</"
+"b></center>"
+msgstr ""
+"<center>Valor m�nimo: <b>10000 microseg</b><br>Valor m�ximo: <b>10000000 "
+"microseg</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:179
+msgid "Network Interfaces"
+msgstr "Interfaces de red"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:181
+msgid "Bind IPv4 connections to:"
+msgstr "Unir conexiones IPv4 a:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:185
+msgid "Bind IPv6 connections to:"
+msgstr "Unir conexiones IPv6 a:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:210
+msgid "Enable ident service (bad practice on UNIX!)"
+msgstr "Activar servicio ident (mala pr�ctica en UNIX!)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:216
+#, fuzzy
+msgid "Output identd messages to:"
+msgstr "Mensaje de salida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:218
+#, fuzzy
+msgid "Active window"
+msgstr "Embaldosar ventanas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:219
+#, fuzzy
+msgid "Console"
+msgstr "Cerrar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:220
+#, fuzzy
+msgid "Do not show any identd messages"
+msgstr "No mostrar colores en los mensajes de usuario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:237
+msgid "Enable ident service only while connecting to server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:240
+msgid "Ident username:"
+msgstr "Nombre de Usuario de Ident:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:243
+msgid "Service port:"
+msgstr "Puerto de servicio:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:248
+msgid "IPv6 Settings"
+msgstr "Opciones IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:249
+msgid "Enable service for IPv6"
+msgstr "Activar servicio IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:258
+msgid "IP stack treats IPv4 as part of IPv6 namespace"
+msgstr ""
+"La pila IP del sistema trata IPv4 como parte del espacio de nombres IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:265
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications. If it is possible, install a real ident daemon.</p>"
+msgstr ""
+"<p><b>Atenci�n:</b><br>Este es un servicio <b>no compatible RFC 1413</b> de "
+"ident que solo implementa un limitado subconjunto de las especificaciones "
+"Identification Protocol. Si es posible, instala un servidor ident real.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:270
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications.<br>On UNIX, you may also need root privileges to bind to the "
+"auth port (113).<br>It is <b>highly recommended</b> that a <b>real</b> "
+"system-wide ident daemon be used instead, or none at all if ident is not "
+"required.</p>"
+msgstr ""
+"<p><b>Atenci�n:</b><br>Este es un servicio <b>no compatible RFC 1413</b> de "
+"ident que solo implementa un limitado subconjunto de las especificaciones "
+"Identification Protocol.<br>En UNIX, puedes necesitar tambi�n privilegios de "
+"superusuario para asociarse al puerto auth (113).<br>Es <b>altamente "
+"recomendable</b> que un servidor global de ident <b>real</b> sea usado en su "
+"lugar, o ninguno en absoluto si ident no es necesario.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.cpp:39
+msgid ""
+"This section contains the general client options<br><p>like<b> sound, "
+"mediafiles, URL handler </b> etc... </p>"
+msgstr ""
+"Esta secci�n contiene las opciones generales del cliente<br><p>como<b> "
+"sonido, archivos multimedia, manejadores de URL </b> etc... </p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:39
+msgid "Automatically Log"
+msgstr "Grabar registro autom�ticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:40
+msgid "Query windows"
+msgstr "Ventanas de privados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:41
+msgid "Channel windows"
+msgstr "Ventanas de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:42
+msgid "DCC Chat windows"
+msgstr "Ventanas de transferencias DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:43
+msgid "Console windows"
+msgstr "Ventanas de consola"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:45
+msgid "Gzip logs"
+msgstr "Comprimir logs con Gzip"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:47
+#, fuzzy
+msgid "Strip colors in logs"
+msgstr "Quitar colores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:48
+msgid "Auto flush logs every"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:49
+msgid " min"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:52
+msgid ""
+"<center>Save logs with the current interval<br>Set to 0 to disable this "
+"feature</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:49
+msgid "Minimize console after successful login"
+msgstr "Minimizar la consola despu�s entrar correctamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:52
+msgid ""
+"<center>This option will cause KVIrc to minimize the console window after "
+"successfully logging into a server.</center>"
+msgstr ""
+"<center>Esta opci�n har� que KVIrc minimice la ventana de consola despu�s de "
+"entrar satisfactoriamente en un servidor.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:55
+#, fuzzy
+msgid "Show network name in console taskbar entry"
+msgstr "Mostrar iconos de ventana en la barra de tareas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to show the network name as the console "
+"taskbar entry instead of the server name. This is nice to keep on unless "
+"your servers are not organized in networks or you often connect to two "
+"servers of the same network.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:75
+msgid "Force immediate quit"
+msgstr "Forzar salida inmediata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:78
+msgid ""
+"<center>This option causes KVIrc to close the connection immediately after "
+"sending the QUIT message.<br>When this option is disabled, KVIrc will wait "
+"for the server to close the connection.<br>Note that if you use this, your "
+"QUIT message may be not displayed.</center>"
+msgstr ""
+"<center>Esta opci�n har� que KVIrc cierre la conexi�n inmediatamente despu�s "
+"de enviar el mensaje QUIT.<br>Cuando esta opci�n est� desactivada, KVIrc "
+"esperar� a que el servidor cierre la conexi�n.<br>Observe que si utiliza "
+"esta opci�n, su mensaje QUIT puede no ser visualizado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:84
+msgid "Prepend gender info to realname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:110
+msgid "On Channel Kick"
+msgstr "En Expulsi�n del Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:112
+msgid "Rejoin channel"
+msgstr "Reentrada al canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:115
+msgid ""
+"<center>This option will cause KVIrc to attempt to rejoin a channel after "
+"being kicked.</center>"
+msgstr ""
+"<center>Esta opci�n har� que KVIrc vuelva a entrar en el canal despu�s de "
+"haber sido expulsado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:129
+msgid "Keep channel open"
+msgstr "Mantener el canal abierto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:121
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"being kicked.<br>It might be a good idea to also enable the \"Rejoin channel"
+"\" option.</center>"
+msgstr ""
+"<center>Esta opci�n har� que KVIrc mantenga la ventana de canal abierta "
+"despu�s de haber sido expulsado.<br>Puede ser una buena idea activar tambi�n "
+"la opci�n \"Reentrada al canal\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:127
+msgid "On Channel Part"
+msgstr "A la salida del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:132
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"leaving it.</center>"
+msgstr ""
+"<center>Esta opci�n har� que KVIrc mantenga los canales abiertos despu�s de "
+"abandonarlo.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:136
+msgid "Automatically join channel on invite"
+msgstr "Entrar autom�ticamente en el canal cuando nos inviten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:139
+msgid ""
+"<center>This option will cause KVIrc to automatically join a channel when an "
+"INVITE message for that channel is received.<br><b>Warning:</b> This may "
+"help spammers harass you. :)</center>"
+msgstr ""
+"<center>Esta opci�n har� que KVIrc se una autom�ticamente a un canal al que "
+"haya sido invitado.<br><b>Atenci�n:</b> Esto puede ayudar a los spammers a "
+"fastidiarle. :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:144
+#, fuzzy
+msgid "Always open channels as minimized"
+msgstr "Abrir todas minimizadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:148
+#, fuzzy
+msgid ""
+"<center>This option causes newly created channel windows to be immediately "
+"minimized.<br>Enable this if you don't like channels popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+"<center>Esta opci�n har� que las ventanas con privados recien creadas sean "
+"minimizadas inmediatamente.<br>Activa esto si no te gusta que los privados "
+"te interrumpan mientras est�s tecleando algo en un canal. :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:168
+#, fuzzy
+msgid "Log joined channels history"
+msgstr "Lista de canales registrados:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:170
+#, fuzzy
+msgid "Default ban mask:"
+msgstr "Mensaje de ausencia por defecto:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:188
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:202
+msgid "On Channel Join"
+msgstr "En la Entrada al Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:189
+msgid "Do not send /WHO request"
+msgstr "No enviar petici�n /WHO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:190
+msgid "Do not request ban list"
+msgstr "No pedir lista de prohibidos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:191
+msgid "Do not request ban exception list"
+msgstr "No pedir lista de excepci�n de prohibici�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:192
+msgid "Do not request invite list"
+msgstr "No pedir lista de invitados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:194
+msgid "Do not update the away list"
+msgstr "No actualizar la lista de ausentes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:197
+msgid ""
+"<center>KVIrc sends out a channel /WHO message every now and then to keep "
+"the channel away list in sync. Use this option to disable this feature (and "
+"to save your IRC bandwidth.</center>"
+msgstr ""
+"<center>KVIrc env�a un mensaje /WHO al canal peri�dicamente para mantener "
+"sincronizada la lista de ausentes. Utiliza esta opci�n para deshabilitar "
+"esta caracter�stica (y para conservar tu ancho de banda de IRC.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:203
+msgid "Echo channel topic"
+msgstr "Muestra el tema del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:204
+msgid "Show channel sync time"
+msgstr "Mostrar el tiempo de sincronizaci�n del canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:40
+msgid "Default text encoding:"
+msgstr "P�gina de c�digos de texto por defecto:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:109
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:133
+msgid "Use Language Encoding"
+msgstr "Usar p�gina de c�digos del lenguaje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:59
+msgid "Force language:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:65
+msgid "<b>Note:</b> You need to restart KVirc to apply a language changing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:68
+#, fuzzy
+msgid "Automatic detection"
+msgstr "Reconectar autom�ticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:69
+msgid "en"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+#, fuzzy
+msgid "Unable to write language information to"
+msgstr "No fu� posible escribir en el archivo de acciones."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:39
+msgid "Enable Anti-spam For"
+msgstr "Activar anti-spam para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:45
+msgid "Silent anti-spam (no warnings)"
+msgstr "Anti-spam silencioso (no avisa)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:46
+msgid "Words considered spam:"
+msgstr "Palabras consideradas spam:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:51
+msgid "Use workaround for firewall"
+msgstr "Usar apa�o para cortafuegos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:54
+msgid ""
+"<center>Enable this option if you can't accept incoming connections."
+"<br>KVIrc will try to use different methods to send and receive files."
+"<br>Please note that these methods may NOT work when communicating with a "
+"non-KVIrc client.</center>"
+msgstr ""
+"<center>Activa esta opci�n si no puedes aceptar conexiones entrantes."
+"<br>KVIrc intentar� usar diferentes m�todos para enviar y recibir archivos."
+"<br>Por favor, observa que estos m�todos pueden NO funcionar cuando te "
+"comuniques con un cliente que no sea KVIrc.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:73
+msgid "Network Properties"
+msgstr "Propiedades de Red"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:75
+msgid "Use user-defined address or network interface"
+msgstr "Utilizar direcci�n o interfaz de red especificado por el usuario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:79
+msgid ""
+"<center>Enable this option if you are on a multihost machine and want to "
+"force one of the available IP addresses to be used for outgoing DCCs."
+"<br>This is especially useful when you use IPv6 and IPv4 addresses.<br>You "
+"can force KVIrc to always choose the IPv4 interface.</center>"
+msgstr ""
+"<center>Activa esta opci�n si est� en una m�quina con varias conexiones de "
+"red y quieres forzar que sea una de las direcciones IP disponibles la que se "
+"utilice para los DCCs salientes.<br>Esto es especialmente �til cuando uses "
+"direcciones IPv4 e IPv6.<br>Puedes forzar a que KVIrc escoja siempre el "
+"interfaz IPv4.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:84
+msgid "Listen on address/interface:"
+msgstr "Escuchar en la direcci�n/interfaz:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:87
+msgid ""
+"<center>This is the IP address or name of the interface to use by default "
+"for outgoing DCC transfers.<br>On UNIX systems that support it, you can also "
+"specify IPv4 interface names (such as <b>ppp0</b>).<br>If you set it to "
+"<b>0.0.0.0</b>, KVIrc will try to use the first available IPv4 interface</"
+"center>"
+msgstr ""
+"<center>Esta es la direcci�n IP o nombre de la interfaz que se utilizar� por "
+"defecto para las transferencias DCC salientes.<br>En los sistemas UNIX que "
+"lo soporten, tambi�n pueden utilizarse nombres de interfaz IPv4 (como "
+"<b>ppp0</b>).<br>Si pone el valor de esta opci�n a <b>0.0.0.0</b>, KVIrc "
+"intentar� encontrar la primera interfaz IPv4 disponible</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:94
+msgid "Use user-defined port range"
+msgstr "Usar rango de puertos definidos por el usuario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:97
+msgid ""
+"<center>Enable this option if you want specify a local port range for DCC.</"
+"center>"
+msgstr ""
+"<center>Active esta opci�n si quiere especificar un rango de puertos locales "
+"para el DCC.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:102
+msgid "Lowest port:"
+msgstr "Puerto m�s bajo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:105
+msgid "Highest port:"
+msgstr "Puerto m�s alto:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:108
+msgid "Send a fixed address in requests"
+msgstr "Enviar una direcci�n fija en las peticiones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:111
+msgid ""
+"<center>Enable this option if you want to always send a fake IP address in "
+"your DCC requests.<br>This might be useful if you're behind a router with a "
+"static address that does network address translation (NAT) and forwards all "
+"or a range of ports.</center>"
+msgstr ""
+"<center>Activa esta opci�n si quieres enviar siempre una direcci�n falsa en "
+"tus peticiones DCC.<br>Esto puede ser �til si est�s detr�s de un router con "
+"una direcci�n est�tica que hace conversi�n de direcciones de red (NAT) y "
+"redirige todos o un rango de puertos.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:115
+msgid "Send address/interface:"
+msgstr "Enviar direcci�n/interfaz:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:119
+msgid ""
+"<center>This is the fixed address that will be sent with all DCC requests if "
+"you enable the option above.</center>"
+msgstr ""
+"<center>Esta es la direcci�n fija que se enviar� a todas las peticiones DCC "
+"si usted marca la opci�n.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:123
+msgid "Guess address from IRC server if unroutable"
+msgstr "Imaginar direcci�n desde el servidor IRC si no es rutable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:128
+msgid ""
+"<center>You can enable this option if you are behind a router that forwards "
+"all or a range of ports.<br>KVIrc will try to guess the IP address to use "
+"for DCC by looking up the local hostname as seen by the IRC server you're "
+"connected to.<br>This method is an exclusive alternative to the \"fixed "
+"address\" above.<br>It might guess the correct address automatically if "
+"certain conditions are met (e.g. the IRC server does not mask hostnames).</"
+"center>"
+msgstr ""
+"<center>Puedes habilitar esta opci�n si est�s detr�s de un enrutador que "
+"redirige todos o un rango de puertos.<br>KVIrc intentar� adivinar la "
+"direcci�n IP para usarla para DCC buscando el nombre de m�quina local como "
+"lo ve el servidor IRC al que est�s conectado.<br>Este m�todo es "
+"exclusivamente una alternativa a la \"direcci�n fija\" anterior.<br> Puede "
+"adivinar la direcci�n correcta autom�ticamente si se cumplen ciertas "
+"condiciones (p.e., el servidor IRC no enmascara los nombres de m�quina).</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:134
+msgid "Use \"broken bouncer hack\" to detect address"
+msgstr "Usar el \"truco del repetidor roto\" para detectar la direcci�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:137
+msgid ""
+"<center>When you're behind a dialup router and also tunneling through a "
+"psyBNC bouncer, you can use a bug in the bouncer to force KVIrc to bind the "
+"DCC connections to the dialup router's address.<br>It's an ugly hack - use "
+"it only if nothing else works.</center>"
+msgstr ""
+"<center>Cuando est�s detr�s de un enrutador telef�nico y tambi�n tunelas a "
+"trav�s de un repetidor psyBNC, puedes utilizar un error en el repetidor para "
+"forzar a KVIrc a asociar las coneciones DCC a la direcci�n del repetidor "
+"telef�nico.<br>Es un truco sucio - �salo si ninguna otra cosa funciona.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:144
+msgid "Notify failed DCC handshakes to the remote end"
+msgstr "Notificar al otro extremo las negociaciones de DCC fallidas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:147
+msgid ""
+"<center>If you enable this option, when a DCC request from a remote user "
+"can't be satisfied KVIrc will notify him by a CTCP ERRMSG. This is a nice "
+"feature so it is a good idea to leave it on unless for some reason you have "
+"deactivated the antiflood system: in this case turning off this option might "
+"help if you often get attacked by CTCP floods.</center>"
+msgstr ""
+"<center>Si activas esta opci�n, cuando no pueda satisfacerse una petici�n "
+"DCC de un usuario remoto, KVIrc se lo notificar� mediante un CTCP ERRMSG. "
+"Esta es una caracter�stica agradable por eso es buena idea dejarla activa a "
+"menos que por alguna raz�n hayas desactivado el sistema antisaturaci�n: en "
+"este caso desactivar esta opci�n puede ayudar si te ves atacado por "
+"saturaciones de CTCP a menudo.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:154
+msgid "Maximum number of DCC sessions"
+msgstr "M�ximo n�mero de sesiones DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:156
+msgid ""
+"<center>This is the maximum number of concurrent DCC sessions and it "
+"includes all the DCC types (send,chat,recv...). KVIrc will refuse the "
+"requests when this limit is reached.</center>"
+msgstr ""
+"<center>Este es el m�ximo n�mero de sesiones DCC simultaneas e incluye todos "
+"los tipos de DCC (env�o, chat, recepci�n...). KVIrc rechazar� las peticiones "
+"cuando se alcance este l�mite.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:161
+msgid "DCC socket timeout:"
+msgstr "Tiempo de expiraci�n de socket DCC (segundos):"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:164
+msgid ""
+"<center>This is the amount of time that KVIrc will wait for a response "
+"before assuming that a DCC has failed because the remote client was unable "
+"to connect to our listening socket.</center>"
+msgstr ""
+"<center>Esta es la candidad de tiempo que KVIrc esperar� una respuesta antes "
+"de asumir que un DCC ha fallado porque el extremo remoto no ha sido capaz de "
+"conectar a nuestro socket a la escucha.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:198
+msgid "On Incoming File"
+msgstr "En Archivo Entrante"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:371
+msgid "Automatically accept"
+msgstr "Aceptar autom�ticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:200
+#, fuzzy
+msgid "Open transfer window as minimized when auto-accepted"
+msgstr "Abrir minimizada cuando se acepte autom�ticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:201
+msgid "Automatically resume when auto-accepted"
+msgstr "Continuar autom�ticamente cuando se acepte autom�ticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:203
+#, fuzzy
+msgid "Save Location"
+msgstr "&Localizaci�n:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:204
+msgid "Download folder:"
+msgstr "Directorio de archivos descargados:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:205
+msgid "Sort saved files by nicknames (create subfolders)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:206
+msgid "Guess save path from media type"
+msgstr "Estimar ruta para guardar desde el tipo de medio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:209
+#, fuzzy
+msgid "On Download Completion"
+msgstr "Directorio de archivos descargados:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:210
+msgid "Notify completion in console"
+msgstr "Notificar finalizaci�n en consola"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:211
+msgid "Notify completion in notifier"
+msgstr "Notificar finalizaci�n en el notificador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:212
+#, fuzzy
+msgid "Automatically clear transfer"
+msgstr "Aceptar autom�ticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:215
+#, fuzzy
+msgid ""
+"<center>This option will cause succesfully terminated transfers to be "
+"automatically removed from the transfer window.</center>"
+msgstr ""
+"<center>Esta opci�n har� que KVIrc se conecte a esta red al inicio</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:220
+msgid "Always open transfer window as minimized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:238
+msgid "Bug Compatibility"
+msgstr "Compatibilidad de errores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:239
+msgid "Send ACK for byte 0"
+msgstr "Enviar ACK para el byte 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:242
+msgid ""
+"<center>This option causes KVIrc to send a zero-byte acknowledge to kick-"
+"start the DCC transfer with some buggy IRC clients.<br>Use it only if your "
+"DCC transfers stall just after establishing a connection without sending any "
+"data.</center>"
+msgstr ""
+"<center>Esta opci�n har� que KVIrc env�e un reconocimiento de cero bytes "
+"para iniciar r�pidamente transferencias DCC con algunos clientes IRC "
+"problem�ticos.<br>Usalo en el caso en que las transferencias se estanquen "
+"justo despu�s de establecer una conexi�n sin enviar datos.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:247
+msgid "Accept broken RESUME (mIRC file.ext)"
+msgstr "Aceptar RESUME erroneo (mIRC archivo.ext)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:250
+msgid ""
+"<center>This option causes KVIrc to accept RESUME requests with invalid "
+"filenames.<br>Use it if KVIrc fails to accept RESUME requests from other "
+"clients (e.g. some versions of mIRC).</center>"
+msgstr ""
+"<center>Esta opci�n har� que KVIrc acepte solicitudes RESUME con nombres de "
+"archivo no v�lidos.<br>Usalo si KVIrc falla al aceptar solicitudes RESUME "
+"desde otros clientes (p.e., algunas versiones de mIRC).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:254
+msgid "Replace spaces with underscores in outgoing filenames"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:257
+#, fuzzy
+msgid ""
+"<center>This option causes KVIrc to replace spaces with underscores in "
+"filenames for all the outgoing file transfers. This will fix filename "
+"handling with some buggy clients (e.g. some versions of mIRC)."
+msgstr ""
+"<center>Esta opci�n har� que KVIrc acepte solicitudes RESUME con nombres de "
+"archivo no v�lidos.<br>Usalo si KVIrc falla al aceptar solicitudes RESUME "
+"desde otros clientes (p.e., algunas versiones de mIRC).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:262
+msgid "Limits"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:265
+msgid "Limit upload bandwidth to"
+msgstr "Limitar caudal de subida a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:273
+msgid "bytes/sec"
+msgstr "bytes/seg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:271
+msgid "Limit download bandwidth to"
+msgstr "Limitar el caudal de bajada a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:277
+msgid "Maximum number of DCC transfers"
+msgstr "M�ximo n�mero de transferencias DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:279
+msgid ""
+"<center>This is the maximum number of concurrent DCC transfers. KVIrc will "
+"refuse the requests when this limit is reached.</center>"
+msgstr ""
+"<center>Este es el m�ximo n�mero de transferencias DCC simultaneas. KVIrc "
+"rechazar� las peticiones cuando se alcance este l�mite.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:283
+#, fuzzy
+msgid "Tweaks"
+msgstr "Prueba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:285
+msgid "Use fast send (send ahead)"
+msgstr "Utilizar envio r�pido (tambi�n conocido como send ahead)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:288
+msgid ""
+"<center>The \"send ahead\" DCC method allows data to be sent faster by "
+"breaking some of the rules of the original DCC SEND protocol specification."
+"<br>Most clients can handle this kind of optimisation so disable it only if "
+"you have problems.</center>"
+msgstr ""
+"<center>El m�todo DCC \"send ahead\" permite env�ar datos m�s r�pidamente "
+"salt�ndose algunas reglas de la especificaci�n original del protocolo DCC."
+"<br>Muchos clientes pueden manejar este tipo de optimizaci�n, por ello "
+"desact�valo �nicamente si encuentras problemas.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:295
+msgid "Force idle step"
+msgstr "Forzar esperas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:298
+msgid ""
+"<center>Enable this option when the dcc file transfers tend to block your "
+"computer by consuming too much CPU time. When this option is enabled the "
+"idle interval below will be forcibly inserted between each sent/received "
+"data packet.</center>"
+msgstr ""
+"<center>Habilita esta opci�n cuando las transferencias dcc tiendan a "
+"bloquear tu ordenador consumiendo demasiado tiempo de CPU. Cuando se "
+"habilita esta opci�n el intervalo de espera de abajo ser� insertado a la "
+"fuerza entre cada paquete de datos enviado/recibido.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:310
+msgid ""
+"<center>This parameter controls the average delay between two packets sent "
+"or received.<br>A smaller interval will cause you to send data faster but "
+"will also add load to your CPU, disk and network interface.<br>Reasonable "
+"values are from 5 to 50 milliseconds.</center>"
+msgstr ""
+"<center>Este par�metro controla el retraso medio entre dos paquetes enviados "
+"o recibidos.<br>Un intervalo m�s peque�o har� que envies los datos m�s "
+"r�pidamente pero tambi�n a�adir�s carga a tu CPU, disco e interfaz de red."
+"<br>Los valores razonables se encuentran entre 5 y 50 milisegundos.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:316
+msgid "Packet size:"
+msgstr "Tama�o de paquete:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:320
+msgid ""
+"<center>This parameter controls the packet size used for DCC SEND.<br>With "
+"bigger packets you will be probably send data faster, but you will also "
+"saturate your bandwidth and in some cases cause more disk activity."
+"<br>Reasonable values are from 512 to 4096 bytes.</center>"
+msgstr ""
+"<center>Este par�metro controla el tama�o de paquete usado para DCC SEND."
+"<br> Con paquetes mayores probablemente enviar�s los datos m�s deprisa, pero "
+"tambi�n podr�s saturar tu ancho de banda y, en algunos casos, puede provocar "
+"m�s actividad de disco.<br>Los valores razonables est�n entre 512 y 4096 "
+"bytes.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:349
+msgid "On Chat Request"
+msgstr "En Solicitud de Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:351
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:373
+msgid "Open minimized when auto-accepted"
+msgstr "Abrir minimizada cuando se acepte autom�ticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:353
+#, fuzzy
+msgid "Always open as minimized"
+msgstr "Abrir todas minimizadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:369
+msgid "Open all minimized"
+msgstr "Abrir todas minimizadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:370
+msgid "On Voice Request"
+msgstr "En Solicitud de Voz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:376
+msgid "Force half-duplex mode on sound device"
+msgstr "Forzar modo half-duplex en dispositivo de sonido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:377
+msgid "Volume slider controls PCM, not Master"
+msgstr "El deslizador controla el volumen PCM, no el principal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:379
+msgid "Sound device:"
+msgstr "Dispositivo de sonido:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:380
+msgid "Mixer device:"
+msgstr "Dispositivo mezclador:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:382
+msgid "Pre-buffer size:"
+msgstr "Tama�o pre-buffer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:38
+msgid "Enable Ignore For"
+msgstr "Activar Ignorar Para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:39
+msgid "Private/channel messages"
+msgstr "Mensajes privado/canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:40
+msgid "Private/channel notices"
+msgstr "Notificaciones de privado/canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:44
+msgid "Use verbose ignore (show messages in console)"
+msgstr "Usar ignore detallado (mostrar mensajes en consola)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:46
+msgid "Sound System"
+msgstr "Sistema de Sonido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:66
+msgid "This allows you to select the sound system to be used with KVIrc."
+msgstr "Esto te permite seleccionar el sistema de sonido que usar� KVIrc."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:72
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:88
+msgid "Auto-detect"
+msgstr "Detectar autom�ticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:91
+msgid "Test"
+msgstr "Prueba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:79
+msgid "Media Player"
+msgstr "Reproductor de Medios"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:81
+msgid ""
+"This allows you to select the preferred media player to be used with the "
+"mediaplayer.* module commands and functions."
+msgstr ""
+"Esto permite seleccionar el reproductor preferido que se usar� con los "
+"comandos y funcionas del m�dulo mediaplayer.*"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:102
+msgid "ID3 tags' encoding"
+msgstr "Codificaci�n de las etiquetas ID3"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:104
+msgid "This allows you to select encoding of mp3 tags."
+msgstr ""
+"Esto te permite seleccionar la codificaci�n de las etiquetas de los mp3"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:125
+msgid "Winamp messages ecoding"
+msgstr "Codificaci�n de los mensajes de Winamp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:127
+msgid "This allows you to select encoding of winamp messages."
+msgstr ""
+"Esto te permite seleccionar el sistema la codificaci�n de los mensajes de "
+"Winamp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:290
+#, fuzzy
+msgid "New Query opened"
+msgstr "Mantener los privados abiertos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:293
+msgid "New message in inactive query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:296
+#, fuzzy
+msgid "Highlighted message in inactive window"
+msgstr "Resaltar siempre los mensajes que contengan mi nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:299
+#, fuzzy
+msgid "Me have been kicked"
+msgstr "Has sido paginado por"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:39
+msgid "Selection background color"
+msgstr "Color de fondo de la selecci�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:40
+msgid "Selection foreground color"
+msgstr "Color de primer plano de la selecci�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:41
+msgid "Control char color"
+msgstr "Color de los car�cteres de control"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:42
+msgid "Cursor color"
+msgstr "Color del cursor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:141
+msgid "Warp cursor at the end of line when browsing history"
+msgstr "Poner el cursor al final de l�nea cuando se navegue por la historia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:142
+msgid "Disable the input history window and it's log memory."
+msgstr ""
+"Deshabilitar la ventana de historia de entrada y su memoria de registro."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:143
+msgid "Hide input toolbuttons by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:144
+msgid "Nick completion"
+msgstr "Completado de Nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:145
+msgid "Use bash-like nick completion"
+msgstr "Usar completado de nick al estilo bash"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:146
+msgid "Nick completion postfix string"
+msgstr "Cadena postfija para completado de nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:147
+msgid "Use the completion postfix string for the first word only"
+msgstr "Usar la cadena postfija en el completado solo para la primera palabra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:148
+msgid "Commandline in user-friendly mode by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:81
+msgid "Show message icons"
+msgstr "Mostrar iconos de mensajes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:82
+msgid "Draw some emoticons (smileys) as pictures"
+msgstr "Dibujar algunos emoticonos (smileys) gr�ficamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:83
+msgid "Don't show colors in user messages"
+msgstr "No mostrar colores en los mensajes de usuario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:88
+#, fuzzy
+msgid "Nicknames"
+msgstr "Nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:90
+msgid "\"Smart\" nickname colors"
+msgstr "Coloreado \"inteligente\" de nicks"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:91
+msgid "Use same colors as in the userlist"
+msgstr "Usar los mismos colores que en la lista de usuarios"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:93
+msgid "Show nicknames in bold"
+msgstr "Mostrar nicks en negrita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:94
+msgid "Show user and host"
+msgstr "Mostrar usuario y m�quina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:95
+msgid "Show channel mode prefix"
+msgstr "Mostrar prefijo de modo de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:96
+msgid "User-defined prefix and postfix"
+msgstr "Prefijo y sufijo definidos por el usuario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:98
+msgid "[PREFIX]nickname[!user@host][POSTFIX] message"
+msgstr "[PREFIJO]nick[!usuario@maquina][SUFIJO] mensaje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:112
+msgid "Prefix:"
+msgstr "Prefijo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:117
+msgid "Postfix:"
+msgstr "Sufijo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:131
+msgid "Show timestamp"
+msgstr "Mostrar marca de tiempo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:134
+msgid "Use UTC time for timestamp"
+msgstr "Utilizar tiempo UTC en marca de tiempo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:141
+msgid "Use special color for timestamps"
+msgstr "Utilizar color especial para marca de tiempo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:147
+#, fuzzy
+msgid "Timestamp format:"
+msgstr "Color para marca de tiempo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:320
+msgid "Transparent"
+msgstr "Transparente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:401
+msgid "Message Type"
+msgstr "Tipo de mensaje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:417
+msgid "Background:"
+msgstr "Color de fondo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:426
+msgid "Foreground:"
+msgstr "Color de primer plano:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:434
+msgid "Alert level:"
+msgstr "Nivel de alerta:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:454
+msgid "Log this"
+msgstr "Registrar esto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:458
+msgid "Load From..."
+msgstr "Cargar Desde..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:460
+msgid "Save As..."
+msgstr "Guardar Como.."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:589
+msgid "Choose a Filename - KVIrc"
+msgstr "Escoja un nombre de archivo - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:646
+msgid "Choose a Filename - KVIrc "
+msgstr "Escoja un nombre de archivo - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:40
+msgid "Enable lag meter"
+msgstr "Activar medidor de retraso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:42
+msgid ""
+"<center>This enables the lag meter engine, which checks at regular intervals "
+"how much lag (latency) the server has.</center>"
+msgstr ""
+"<center>Esto habilita el motor de medici�n de retrasos, que comprueba a "
+"intervalos regulares cuanto retraso (latencia) tiene el servidor.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:45
+msgid "Lag meter heartbeat:"
+msgstr "Latido del medidor de retraso:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:49
+msgid ""
+"<center>This option allows you to set the lag meter heartbeat interval."
+"<br>The lower the heartbeat interval the higher will be the accuracy of the "
+"lag check but also higher cpu usage and data traffic to the server."
+"<br>Please note that this is NOT the interval between pings sent to the "
+"server: the pings (if any) will be sent really less often. 5000 is a "
+"reasonable value.</center>"
+msgstr ""
+"<center>Esta opci�n permite escoger el intervalo de latido del medidor de "
+"retraso. <br>Cuanto menor sea el intervalo de latido mayor ser� la "
+"fiabilidad de la medida, pero tambi�n ser� mayor el uso de la CPU y el "
+"tr�fico de datos con el servidor. <br>Por favor, ten en cuenta que este NO "
+"es el intervalo entre pings enviados al servidor: los ping (si los hay) "
+"ser�n enviados mucho menos frecuentemente. 5000 es un valor razonable.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:58
+msgid "Trigger event if lag exceeds:"
+msgstr "Disparar evento si el retraso excede de:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:61
+msgid ""
+"<center>This option controls the threshold for the OnLagAlarmTimeUp and "
+"OnLagAlarmTimeDown events. When the lag goes above the threshold "
+"OnLagAlarmTimeUp will be triggered and when the lag falls back below the "
+"threshold then OnLagAlarmTimeDown will be triggered</center>"
+msgstr ""
+"<center>Esta opci�n controla el umbral para los eventos OnLagAlarmTimeUp y "
+"OnLagAlarmTimeDown. Cuando el retraso excede el umbral se disparar� el "
+"evento OnLagAlarmTimeUp y cuando el retraso caiga por debajo del umbral se "
+"disparar� OnLagAlarmTimeDown</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:68
+msgid "Show lag in IRC context display"
+msgstr "Mostrar retraso en la pantalla de contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:70
+msgid ""
+"<center>This makes the IRC context display applet show the current lag after "
+"the user's nickname (in seconds)</center>"
+msgstr ""
+"<center>Esto hace que el applet de visualizaci�n de contexto IRC muestre el "
+"retraso despu�s del nick del usuario (en segundos)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.h:28
+msgid "Away"
+msgstr "Ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.h:28
+msgid "CTCP"
+msgstr "CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:28
+msgid "DCC"
+msgstr "DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:59
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:41
+msgid "Advanced"
+msgstr "Avanzado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:72
+msgid "File Transfer"
+msgstr "Transferencias de Archivos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:113
+msgid "Chat"
+msgstr "Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:126
+msgid "Voice"
+msgstr "Voz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:32
+msgid "IRC"
+msgstr "IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:73
+msgid "Channel"
+msgstr "Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:28
+msgid "Lag"
+msgstr "Retraso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:30
+msgid "time,ping"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:37
+msgid "authentication,identify"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:31
+msgid "Language"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:34
+msgid "language,encoding,charset,codepage"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:28
+msgid "Contacts"
+msgstr "Contactos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:30
+msgid "notify,buddy,buddies,friends"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:42
+msgid "Notifier"
+msgstr "Notificador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:43
+#, fuzzy
+msgid "popup"
+msgstr "Men� emergente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:37
+msgid "Text"
+msgstr "Texto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:38
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:49
+msgid "theme,colors,output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:52
+#, fuzzy
+msgid "Message Style"
+msgstr "Tipo de mensaje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:56
+msgid "theme,privmsg,output,format"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:67
+msgid "Timestamp"
+msgstr "Marca de tiempo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:71
+#, fuzzy
+msgid "time,timestamp"
+msgstr "Marca de tiempo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:88
+#, fuzzy
+msgid "Message Colors"
+msgstr "Colores del Nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:169
+msgid "theme,colors,messages,output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:168
+#, fuzzy
+msgid "Color Set"
+msgstr "Colores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.h:32
+#, fuzzy
+msgid "Avatars"
+msgstr "Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:32
+#, fuzzy
+msgid "Sound"
+msgstr "Sonido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:48
+msgid "sound,xmms,audio,play,amarok"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:81
+#, fuzzy
+msgid "Sounds"
+msgstr "Sonido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:83
+msgid "sound,events"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:28
+msgid "URL handlers"
+msgstr "URL de manejadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:31
+msgid "url,programs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:29
+#, fuzzy
+msgid "Tray icon"
+msgstr "Iconos de texto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:31
+msgid "tray,dockwidget"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.h:33
+msgid "Tools"
+msgstr "Herramientas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.h:28
+msgid "General options"
+msgstr "Opciones generales"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.h:31
+msgid "Interface"
+msgstr "Interfaz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:29
+msgid "Text icons"
+msgstr "Iconos de texto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:31
+#, fuzzy
+msgid "smileys,emoticons"
+msgstr "Iconos peque�os"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:34
+msgid "Output"
+msgstr "Salida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:48
+msgid "Look"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:101
+msgid "Features"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:46
+msgid "Media Types"
+msgstr "Tipos de Medios"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:48
+msgid "file,audio,video,programs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:114
+#, fuzzy
+msgid "theme"
+msgstr "Tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:47
+msgid "Transparency"
+msgstr "Transparencia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:48
+#, fuzzy
+msgid "theme,background"
+msgstr "Fondo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:74
+#, fuzzy
+msgid "Window Captions"
+msgstr "Guardar Propiedades de &Ventana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:88
+msgid "theme,mdi"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:87
+msgid "Workspace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:100
+msgid "ToolBar Applets"
+msgstr "Applets de Barra de herramientas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:101
+msgid "theme,toolbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:150
+msgid "connection"
+msgstr "conexi�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:33
+msgid "Protection"
+msgstr "Protecci�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:36
+msgid "ctcp,flood"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:144
+msgid "Avatar"
+msgstr "Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.h:28
+msgid "Anti-spam"
+msgstr "Anti-spam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:32
+msgid "Verbosity And Output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:34
+msgid "debug"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:28
+msgid "Logging"
+msgstr "Registro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:29
+msgid "save,output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:50
+msgid "Input"
+msgstr "Entrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:33
+msgid "theme,colors,text"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:33
+msgid "Taskbar"
+msgstr "Barra de Tareas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:47
+#, fuzzy
+msgid "Tree Taskbar"
+msgstr "Barra de tareas en �rbol"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:65
+msgid "Foreground"
+msgstr "Primer plano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:111
+#, fuzzy
+msgid "Classic Taskbar"
+msgstr "Barra de tareas cl�sica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:52
+msgid "Proxy Hosts"
+msgstr "Servidores Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:54
+#, fuzzy
+msgid "connection,servers"
+msgstr "Conexi�n perdida con el servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:28
+msgid "Alert/Highlight"
+msgstr "Alerta/Resaltado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:42
+#, fuzzy
+msgid "Highlight"
+msgstr "Alerta/Resaltado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:55
+msgid "Taskbar Alert"
+msgstr "Barra de Tareas de Alertas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.h:29
+msgid "Flood Protection"
+msgstr "Protecci�n de Saturaci�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:30
+msgid "Userlist"
+msgstr "Lista de Usuarios"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:31
+msgid "theme,userlist,channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:45
+#, fuzzy
+msgid "theme,userlist,channel,background"
+msgstr "Fondo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:66
+#, fuzzy
+msgid "theme,userlist,channel,colors"
+msgstr "canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:81
+msgid "Nickname Grid"
+msgstr "Rejilla de Nicks"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:82
+#, fuzzy
+msgid "theme,userlist,channel,grid"
+msgstr "Fondo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:102
+#, fuzzy
+msgid "userlist,channel"
+msgstr "canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:29
+msgid "Labels"
+msgstr "Etiquetas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:30
+msgid "theme,topic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:28
+msgid "Scripting Engine"
+msgstr "Motor de Scripting"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:29
+msgid "scripting,kvs,debug"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:55
+msgid "SSL"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:72
+msgid "Socket"
+msgstr "Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:87
+msgid "Ident Service"
+msgstr "Servicio de Ident"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:29
+msgid "Ignore"
+msgstr "Ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:31
+#, fuzzy
+msgid "protection"
+msgstr "Protecci�n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:28
+msgid "Query"
+msgstr "Privado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:30
+#, fuzzy
+msgid "chat"
+msgstr "Chat"
+
+#, fuzzy
+#~ msgid "Output verosity"
+#~ msgstr "Detalle de la salida"
+
+#~ msgid "Scaling"
+#~ msgstr "Escalado"
+
+#~ msgid "Save Current Theme"
+#~ msgstr "Guardar Tema Actual"
+
+#~ msgid "Theme name:"
+#~ msgstr "Nombre del tema:"
+
+#~ msgid "Version:"
+#~ msgstr "Versi�n:"
+
+#~ msgid "Author:"
+#~ msgstr "Autor:"
+
+#, fuzzy
+#~ msgid "Package format:"
+#~ msgstr "Usar el nuevo formato de paquete:"
+
+#~ msgid "Save Theme - KVIrc"
+#~ msgstr "Guardar Tema - KVIrc"
+
+#~ msgid "Unable to create theme directory."
+#~ msgstr "No puedo crear el directorio para el tema."
+
+#~ msgid "Theme saved successfully to "
+#~ msgstr "Tema guardado satisfactoriamente en"
+
+#, fuzzy
+#~ msgid "Choose save directory"
+#~ msgstr "Seleccione un Directorio - KVIrc"
+
+#, fuzzy
+#~ msgid "You must select save directory"
+#~ msgstr "debes seleccionar un directorio donde guardar"
+
+#~ msgid "Unable to create theme files directory."
+#~ msgstr "No puedo crear el directorio de archivos para el tema."
+
+#~ msgid "Unable to create theme utils directory."
+#~ msgstr "No puedo crear el directorio de utilidades para el tema."
+
+#~ msgid "Cannot find installer.kvs."
+#~ msgstr "No puedo encontrar el archivo installer.kvs."
+
+#~ msgid "Cannot write installer.kvs."
+#~ msgstr "No puedo escribir el archivo installer.kvs."
+
+#~ msgid "Cannot write install.kvs."
+#~ msgstr "No puedo escribir el archivo install.kvs."
+
+#~ msgid "Cannot open install.kvs for reading."
+#~ msgstr "No puedo abrir el archivo install.kvs para lectura."
+
+#~ msgid "Cannot open install.kvs for writing."
+#~ msgstr "No puedo abrir el archivo install.kvs para escritura."
+
+#, fuzzy
+#~ msgid "Choose filaname"
+#~ msgstr "Escoja un nombre de archivo - KVIrc"
+
+#, fuzzy
+#~ msgid "You must select filename"
+#~ msgstr "�Debes escoger un nombre de tema!"
+
+#~ msgid "You must choose a theme name!"
+#~ msgstr "�Debes escoger un nombre de tema!"
+
+#~ msgid "Refresh Theme List"
+#~ msgstr "Actualizar Lista de Temas"
+
+#~ msgid "Save Current Theme..."
+#~ msgstr "Guardar Tema Actual..."
+
+#, fuzzy
+#~ msgid "Delete Selected Theme"
+#~ msgstr "Eliminar seleccionados"
+
+#~ msgid "Get More Themes..."
+#~ msgstr "Obtener m�s Temas..."
+
+#, fuzzy
+#~ msgid "Open Theme - KVIrc"
+#~ msgstr "Guardar Tema - KVIrc"
+
+#, fuzzy
+#~ msgid "You must select file"
+#~ msgstr "debes seleccionar un directorio donde guardar"
+
+#~ msgid "Current Theme"
+#~ msgstr "Tema Actual"
+
+#~ msgid "<p>The active theme settings</p>"
+#~ msgstr "<p>Configuraci�n del tema activo</p>"
+
+#~ msgid "<p>Theme: %1</p>"
+#~ msgstr "<p>Tema: %1</p>"
+
+#~ msgid "<p>Version: %1</p>"
+#~ msgstr "<p>Versi�n: %1</p>"
+
+#~ msgid "<p>Date: %1</p>"
+#~ msgstr "<p>Fecha: %1</p>"
+
+#~ msgid "<p>Author: %1</p>"
+#~ msgstr "<p>Autor: %1</p>"
+
+#~ msgid "Timestamp color"
+#~ msgstr "Color para marca de tiempo"
+
+#~ msgid "Minimize new queries"
+#~ msgstr "Minimizar nuevos privados"
+
+#~ msgid "Automatically close on completion"
+#~ msgstr "Cerrar autom�ticamente al finalizar"
+
+#~ msgid "Speed limits"
+#~ msgstr "L�mites de velocidad"
+
+#~ msgid "Idle interval:"
+#~ msgstr "Intervalo de espera:"
+
+#~ msgid ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">General Preferences</font></h1></center></td></"
+#~ "tr><tr><td><br><br><center><b>These sections contain various settings for "
+#~ "KVIrc</b></center><br><br><p>When you have finished, click \"<b>OK</b>\" "
+#~ "to accept your changes or \"<b>Cancel</b>\" to discard them. Clicking "
+#~ "\"<b>Apply</b>\" will commit your changes without closing the window.</"
+#~ "td></tr><tr><td>Many settings have tooltips that can be shown by holding "
+#~ "the cursor over their label for a few seconds.</p></td></tr></table>"
+#~ msgstr ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">Preferencias Generales</font></h1></center></td></"
+#~ "tr><tr><td><br><br><center><b>Estas secciones contienen varias "
+#~ "configuraciones para KVIrc</b></center><br><br><p>Cuando hayas "
+#~ "finalizado, pulsa \"<b>Aceptar</b>\" para aceptar los cambios o "
+#~ "\"<b>Cancelar</b>\" para descartarlos. Pulsando \"<b>Aplicar</b>\" se "
+#~ "grabar�n los cambios sin cerrar la ventana.</td></tr><tr><td>Muchas "
+#~ "opciones tienen tooltips que pueden mostrarse manteniendo el cursor sobre "
+#~ "su etiqueta durante unos pocos segundos.</p></td></tr></table>"
+
+#~ msgid ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">General Preferences</font></h1></center></td></"
+#~ "tr><tr><td><br><br>Select a category in the list view on the left to view "
+#~ "the related settings. When you have finished, click \"<b>OK</b>\" to "
+#~ "accept your changes or \"<b>Cancel</b>\" to discard them. Clicking "
+#~ "\"<b>Apply</b>\" will commit your changes without closing this window."
+#~ "<br><br></td></tr></table>"
+#~ msgstr ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">Preferencias Generales</font></h1></center></td></"
+#~ "tr><tr><td><br><br>Selecciona una categor�a en la lista de la izquierda "
+#~ "para ver las opciones relacionadas. Cuando hayas finalizado, pulsa "
+#~ "\"<b>Aceptar</b>\" para aceptar tus cambios o \"<b>Cancelar</b>\" para "
+#~ "descartarlos. Pulsando \"<b>Aplicar</b>\" se grabar�n los cambios sin "
+#~ "cerrar esta ventana.<br><br></td></tr></table>"
+
+#~ msgid "Preferences - KVIrc"
+#~ msgstr "Preferencias - KVIrc"
+
+#~ msgid "Standard Colors"
+#~ msgstr "Colores Est�ndar"
+
+#, fuzzy
+#~ msgid "Avatar Handling"
+#~ msgstr "Cambio de avatar"
+
+#~ msgid "MDI Captions"
+#~ msgstr "T�tulos MDI"
+
+#~ msgid "MDI Area"
+#~ msgstr "Area MDI"
+
+#, fuzzy
+#~ msgid "Load & Save"
+#~ msgstr "Guardar"
+
+#, fuzzy
+#~ msgid "Output Style"
+#~ msgstr "Salida"
+
+#~ msgid "Maximum number of rows:"
+#~ msgstr "M�ximo n�mero de filas:"
+
+#~ msgid ""
+#~ "The list below shows the currently installed themes. To apply a theme "
+#~ "select it and click \"Ok\" or \"Apply\". Please note that the message "
+#~ "text colors are applied only to new messages in each window.<br>To "
+#~ "install a new theme, unpack it to:<br><b>"
+#~ msgstr ""
+#~ "La lista inferior muestra los temas instalados actualmente. Para "
+#~ "seleccionar un tema, esc�gelo y pulsa \"Aceptar\" o \"Aplicar\". Por "
+#~ "favor, observa que los colores del texto de los mensajes se aplica "
+#~ "�nicamente a los nuevos mensajes en cada ventana.<br>Para instalar un "
+#~ "nuevo tema, desempaqu�talo en:<br><br>"
+
+#~ msgid "Custom nickname:"
+#~ msgstr "Nick personalizado:"
+
+#~ msgid "My Experience level"
+#~ msgstr "Mi nivel de experiencia"
+
+#~ msgid "Newbie"
+#~ msgstr "Novato"
+
+#~ msgid "Normal user"
+#~ msgstr "Usuario normal"
+
+#~ msgid "Experienced user"
+#~ msgstr "Usuario experimentado"
+
+#~ msgid ""
+#~ "Select your experience level here. <br>\n"
+#~ "<b>Novice</b> will be able to see only basic options in the options "
+#~ "dialog<br>\n"
+#~ "<b>Normal user</b> will be able to configure all basic KVirc options<br>\n"
+#~ "<b>Experienced user</b> will be able to customise everything"
+#~ msgstr ""
+#~ "Selecciona tu nivel de experiencia. <br>\n"
+#~ "<b>Novato</b> solo podr�s ver las opciones m�s b�sicas en el di�logo de "
+#~ "opciones<br>\n"
+#~ "<b>Usuario normal</b> podr�s ver todas las opciones b�sicas de KVIrc<br>\n"
+#~ "<b>Usuario experimentado</b> podr�s configurarlo todo"
+
+#~ msgid "Your Experience level"
+#~ msgstr "Nivel de experiencia"
+
+#~ msgid "Novice"
+#~ msgstr "Novato"
+
+#~ msgid "Alias"
+#~ msgstr "Alias"
+
+#~ msgid "No item selected"
+#~ msgstr "No hay un elemento seleccionado"
+
+#~ msgid "Rename"
+#~ msgstr "Renombrar"
+
+#~ msgid "Edit the alias or namespace name"
+#~ msgstr "Editar alias. o nombre del espacio de nombres"
+
+#~ msgid "Add Alias"
+#~ msgstr "A�adir alias"
+
+#~ msgid "Add Namespace"
+#~ msgstr "A�adir espacio de nombres"
+
+#~ msgid "Export Selected..."
+#~ msgstr "Exportar seleccionados..."
+
+#~ msgid "Export All..."
+#~ msgstr "Exportar todos..."
+
+#~ msgid "Find In Aliases..."
+#~ msgstr "Encontrar en alias..."
+
+#~ msgid "Collapse All Namespaces"
+#~ msgstr "Contraer todos los espacios de nombres"
+
+#~ msgid "Find In Aliases"
+#~ msgstr "Encontrar en alias"
+
+#~ msgid ""
+#~ "Please enter the text to be searched for. The matching aliases will be "
+#~ "highlighted."
+#~ msgstr ""
+#~ "Por favor, introduzca el texto a buscar. Los alias concordantes ser�n "
+#~ "resaltados."
+
+#~ msgid "Alias Export"
+#~ msgstr "Exportar alias"
+
+#~ msgid "There exported file would be empty: cowardly refusing to write it"
+#~ msgstr ""
+#~ "El archivo exportado podr�a estar vac�o: por precauci�n, no se grabar�"
+
+#~ msgid "Write Failed - KVIrc"
+#~ msgstr "Fall� la escritura - KVIrc"
+
+#~ msgid "Unable to write to the alias file."
+#~ msgstr "No fu� posible escribir en el archivo de alias."
+
+#~ msgid "Do you really want to remove the alias \"%Q\" ?"
+#~ msgstr "�Realmente quiere borrar el alias \"%Q\" ?"
+
+#~ msgid "Do you really want to remove the namespace \"%Q\" ?"
+#~ msgstr "�Realmente quiere borrar el espacio de nombres \"%Q\" ?"
+
+#~ msgid "Please note that all the children items will be deleted too."
+#~ msgstr ""
+#~ "Por favor, tenga en cuenta que todos los elementos hijos ser�n borrados "
+#~ "tambi�n."
+
+#~ msgid "Remove item"
+#~ msgstr "Borrar elemento"
+
+#~ msgid "Yes"
+#~ msgstr "S�"
+
+#~ msgid "Yes to All"
+#~ msgstr "S� a todo"
+
+#~ msgid "No"
+#~ msgstr "No"
+
+#~ msgid "Missing Alias Name"
+#~ msgstr "Falta el nombre de alias"
+
+#~ msgid "You must specify a valid name for the alias"
+#~ msgstr "Debe especificar un nombre v�lido para el alias"
+
+#~ msgid "Ok, Let me try again..."
+#~ msgstr "OK, perm�tame intentarlo de nuevo..."
+
+#~ msgid "Bad Alias Name"
+#~ msgstr "Nombre de alias erroneo"
+
+#~ msgid ""
+#~ "Alias names can contain only letters, digits, underscores and '::' "
+#~ "namespace separators"
+#~ msgstr ""
+#~ "Los nombres de alias solo pueden contener letras, d�gitos, subrayados y "
+#~ "separadores de espacios de nombres ('::')"
+
+#~ msgid ""
+#~ "Stray ':' character in alias name: did you mean ...<namespace>::<name> ?"
+#~ msgstr ""
+#~ "Se perdi� el caracter ':' en el nombre de alias: �quer�a decir..."
+#~ "<namespace>::<nombre>?"
+
+#~ msgid "Found an empty namespace in alias name"
+#~ msgstr "Se encontr� un espacio de nombres vac�o en un nombre de alias"
+
+#~ msgid "Missing Namespace Name"
+#~ msgstr "Falta el nombre del espacio de nombres"
+
+#~ msgid "You must specify a valid name for the namespace"
+#~ msgstr "Debe especificar un nombre v�lido para el espacio de nombres"
+
+#~ msgid "Bad Namespace Name"
+#~ msgstr "Nombre de espacio de nombres erroneo"
+
+#~ msgid ""
+#~ "Namespace names can contain only letters, digits, underscores and '::' "
+#~ "namespace separators"
+#~ msgstr ""
+#~ "Los nombres de los espacios de nombres solo pueden contener letras, "
+#~ "d�gitos, subrayados y separadores de espacios de nombres ('::')"
+
+#~ msgid ""
+#~ "Stray ':' character in namespace name: did you mean ...<namespace>::"
+#~ "<name> ?"
+#~ msgstr ""
+#~ "Car�cter ':' perdido en el nombre del espacio de nombres: �quer�a "
+#~ "decir... <namespace>::<nombre>?"
+
+#~ msgid "Found an empty namespace in namespace name"
+#~ msgstr "Se encontr� un nombre de espacio de nombres vac�o "
+
+#~ msgid "Please enter the name for the new alias"
+#~ msgstr "Por favor, teclee el nombre del nuevo alias"
+
+#~ msgid "Please enter the name for the new namespace"
+#~ msgstr "Por favor, teclee el nombre del nuevo espacio de nombres"
+
+#~ msgid "Rename Alias"
+#~ msgstr "Renombrar alias"
+
+#~ msgid "Please enter the new name for the alias"
+#~ msgstr "Por favor, teclee el nuevo nombre para el alias"
+
+#~ msgid "Rename Namespace"
+#~ msgstr "Remombrar espacio de nombres"
+
+#~ msgid "Please enter the new name for the namespace"
+#~ msgstr "Por favor, introduzca el nuevo nombre para el espacio de nombres"
+
+#~ msgid "Namespace"
+#~ msgstr "Espacio de nombres"
+
+#~ msgid "Alias Editor"
+#~ msgstr "Editor de alias"
+
+#~ msgid "The config file with id '%Q' is not open"
+#~ msgstr "El archivo de configuraci�n '%Q' no est� abierto"
+
+#~ msgid ""
+#~ "The config file '%s' has been changed but is opened as read-only: changes "
+#~ "will be lost"
+#~ msgstr ""
+#~ "El archivo de configuraci�n '%s' ha cambiado pero est� abierto como de "
+#~ "solo lectura: se perder�n los cambios"
+
+#~ msgid "The config file with id '%Q' is read only"
+#~ msgstr "El archivo de configuraci�n con id '%Q' es de solo lectura"
+
+#~ msgid "Request Links"
+#~ msgstr "Solicitar Enlaces"
+
+#~ msgid "Link"
+#~ msgstr "Enlaces"
+
+#~ msgid "Hops"
+#~ msgstr "Saltos"
+
+#~ msgid "(None)"
+#~ msgstr "(Nada)"
+
+#~ msgid "Sent links request, waiting for reply..."
+#~ msgstr "Enviada petici�n de enlaces, esperando respuesta..."
+
+#~ msgid "Cannot request links: No active connection"
+#~ msgstr "No puedo pedir enlaces: No hay una conexi�n activa"
+
+#~ msgid "Connected to %s (%s)"
+#~ msgstr "Conectado a %s (%s)"
+
+#~ msgid "Links cannot be requested: Not connected to a server"
+#~ msgstr ""
+#~ "Los enlaces no pueden ser solicitados: No est� conectado a un servidor"
+
+#~ msgid "Links for %Q [IRC Context %u]"
+#~ msgstr "Enlaces para %Q [Contexto IRC %u]"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Links for %Q</b></font> <font color=\"%s\">"
+#~ "[IRC Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>Enlaces para %Q</b></font> <font color=\"%s\">"
+#~ "[Contexto IRC %u]</font></nobr>"
+
+#~ msgid "Received end of links."
+#~ msgstr "Recibido final de enlaces."
+
+#~ msgid ""
+#~ "Broken link: Missing parent (%s) for %s (%d hops): %s (used /LINKS "
+#~ "<mask> ?)"
+#~ msgstr ""
+#~ "Enlace roto: falta el padre (%s) para (%s) (%d saltos): %s (se us� /LINKS "
+#~ "<m�scara> ?)"
+
+#~ msgid "%s: Parent link %s"
+#~ msgstr "%s : Enlace padre %s"
+
+#~ msgid ""
+#~ "Warning: No root link was sent by the server, the stats may be invalid."
+#~ msgstr ""
+#~ "Aviso: El servidor no env�o el enlace ra�z : las estad�sticas pueden ser "
+#~ "incorrectas."
+
+#~ msgid "%c%cLinks for %Q"
+#~ msgstr "%c%cEnlaces para %Q"
+
+#~ msgid "Total hosts listed"
+#~ msgstr "Total m�quinas listadas"
+
+#~ msgid "Total hosts in the network"
+#~ msgstr "Total de m�quinas en la red"
+
+#~ msgid "Wildcard servers (hubs?): %d"
+#~ msgstr "Servidores comodines (�concentradores?): %d"
+
+#~ msgid "Direct links: %d (~%d.%d %)"
+#~ msgstr "Enlaces directos: %d (~%d.%d %)"
+
+#~ msgid "Close links (1 <= hops <= 3): %d (~%d.%d %)"
+#~ msgstr "Enlaces cercanos (1 <= saltos <= 3): %d (~%d.%d %)"
+
+#~ msgid "Mid-range links (4 <= hops <= 6): %d (~%d.%d %)"
+#~ msgstr "Enlaces media distancia (4 <= saltos <= 6): %d (~%d.%d %)"
+
+#~ msgid "Distant links (7 <= hops): %d (~%d.%d %)"
+#~ msgstr "Enlaces lejanos (7 <= saltos): %d (~%d.%d %)"
+
+#~ msgid "Broken (unknown) links: %d"
+#~ msgstr "Enlaces erroneos (desconocidos): %d"
+
+#~ msgid "Maximum links per host: %d [%s]"
+#~ msgstr "Enlaces m�ximos por m�quina: %d [%s]"
+
+#~ msgid "Total links: %d"
+#~ msgstr "Enlaces totales: %d"
+
+#~ msgid "Maximum hops: %d [%s]"
+#~ msgstr "M�ximo salto: %d [%s]"
+
+#~ msgid "Average hops: ~%d.%d"
+#~ msgstr "Salto promedio: ~%d.%d"
+
+#~ msgid "(Unknown)"
+#~ msgstr "(Desconocido)"
+
+#~ msgid "Incomplete LINKS result, no stats available"
+#~ msgstr "Resultado parcial para LINKS, no hay estad�sticas disponibles"
+
+#~ msgid "You're not connected to a server"
+#~ msgstr "No est� conectado a un servidor"
+
+#~ msgid "Reset"
+#~ msgstr "Reiniciar"
+
+#~ msgid "Processing link: %s"
+#~ msgstr "Procesando enlace: %s"
+
+#~ msgid "Broken message syntax, can't extract hops number, assuming 0"
+#~ msgstr ""
+#~ "Sintaxis de mensaje erronea, no puedo extraer el n�mero de saltos, se "
+#~ "asume 0"
+
+#~ msgid "Links window alread open for this IRC context"
+#~ msgstr "La ventana de enlaces ya est� abierta para este contexto de IRC"
+
+#~ msgid "Current window is not a channel"
+#~ msgstr "La ventana actual no es un canal"
+
+#~ msgid "List window alread open for this IRC context"
+#~ msgstr "Ya est� abierta la lista de ventanas para este contexto IRC"
+
+#~ msgid "Request List"
+#~ msgstr "Solicitar Lista"
+
+#~ msgid "Stop list download"
+#~ msgstr "Detener descarga de la Lista"
+
+#~ msgid ""
+#~ "<center><b>/LIST command parameters:</b><br>Many servers accept special "
+#~ "parameters that allow you to filter the returned entries.<br>Commonly, "
+#~ "masked channel names (*kvirc*) are accepted as parameters, as well as "
+#~ "strings like <b>c&lt;n</b> or <b>c&gt;n</b> where <b>n</b> is the minimum "
+#~ "or maximum of users on the channel.</center>"
+#~ msgstr ""
+#~ "<center><b>/LIST comando par�metros:</b><br>Muchos servidores aceptan "
+#~ "par�metros especiales que permiten filtrar las entradas devueltas."
+#~ "<br>Normalmente, se aceptan nombres de canales con m�scara como "
+#~ "par�metros (*kvirc*), y cadenas como <b>c&lt;n</b> o <b>c&gt;n</b> donde "
+#~ "<b>n</b> es n�mero m�nimo o m�ximo de usuarios en el canal.</center>"
+
+#~ msgid "Users"
+#~ msgstr "Usuarios"
+
+#~ msgid "Topic"
+#~ msgstr "Tema"
+
+#~ msgid "Sent list request, waiting for reply..."
+#~ msgstr "Enviada petici�n de lista, esperando respuesta..."
+
+#~ msgid "Cannot request list: No active connection"
+#~ msgstr "No puedo pedir la lista: no hay una conexi�n activa"
+
+#~ msgid "Stopping the list download..."
+#~ msgstr "Detener la descarga de la lista..."
+
+#~ msgid "Cannot stop list download, no active connection."
+#~ msgstr ""
+#~ "No puedo detener la descarga de la lista, no hay una conexi�n activa"
+
+#~ msgid "List cannot be requested: Not connected to a server"
+#~ msgstr "No se puede solicitar la lista: No est� conectado a un servidor"
+
+#~ msgid "Channel List [IRC Context %u]"
+#~ msgstr "Lista de canales [Contexto IRC %u]"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Channel List</b></font> <font color=\"%s\">"
+#~ "[IRC Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>Lista de Canales</b></font> <font color=\"%s"
+#~ "\">[Contexto IRC %u]</font></nobr>"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Channel list</b></font> <font color=\"%s\">"
+#~ "[IRC Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>Lista de canales</b></font> <font color=\"%s"
+#~ "\">[Contexto IRC %u]</font></nobr>"
+
+#~ msgid "Channels list download finished"
+#~ msgstr "Finalizada la descarga de la lista de canales"
+
+#~ msgid "Processing list: %Q"
+#~ msgstr "Procesando lista: %Q"
+
+#~ msgid "Search keywords"
+#~ msgstr "Buscar palabras clave"
+
+#~ msgid "Help Browser"
+#~ msgstr "Navegador de la Ayuda"
+
+#~ msgid "No such channel/netmask entry in the database"
+#~ msgstr ""
+#~ "No existe una entrada para ese canal/m�scara de red en la base de datos"
+
+#~ msgid "Channel: %c%s@%s"
+#~ msgstr "Canal: %c%s@%s"
+
+#~ msgid " Property: %s=%s"
+#~ msgstr " Propiedad: %s=%s"
+
+#~ msgid "Total %d channels"
+#~ msgstr "Total %d canales"
+
+#~ msgid "Show URL List"
+#~ msgstr "Mostrar Lista de URL"
+
+#~ msgid "Shows the URL list window"
+#~ msgstr "Muestra la ventana de lista de URL"
+
+#~ msgid "&Configure"
+#~ msgstr "&Configurar"
+
+#~ msgid "&Help"
+#~ msgstr "&Ayuda"
+
+#~ msgid "Clo&se"
+#~ msgstr "Cerrar"
+
+#~ msgid "&Module"
+#~ msgstr "&M�dulo"
+
+#~ msgid "&Load"
+#~ msgstr "Cargar"
+
+#~ msgid "&Clear"
+#~ msgstr "Limpiar"
+
+#~ msgid "&List"
+#~ msgstr "&Lista"
+
+#~ msgid "URL"
+#~ msgstr "URL"
+
+#~ msgid "Window"
+#~ msgstr "Ventana"
+
+#~ msgid "Count"
+#~ msgstr "Contador"
+
+#~ msgid "Warning - KVIrc"
+#~ msgstr "Advertencia - KVIrc"
+
+#~ msgid "Select an URL."
+#~ msgstr "Seleccione una URL."
+
+#~ msgid "&Remove"
+#~ msgstr "Elimina&r"
+
+#~ msgid "&Find Text"
+#~ msgstr "Buscar texto"
+
+#~ msgid "&Say to Window"
+#~ msgstr "&Decir en ventana"
+
+#~ msgid "Window not found."
+#~ msgstr "Ventana no encontrada."
+
+#~ msgid "URL Module Configuration"
+#~ msgstr "Configuraci�n del m�dulo URL"
+
+#~ msgid "Save URL list on module unload"
+#~ msgstr "Guardar lista de URL al descargar el m�dulo"
+
+#~ msgid "Save columns width on URL list close"
+#~ msgstr "Guardar la anchura de las columnas al cerrar la lista de URL"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Cancelar"
+
+#~ msgid "Enable URL ban list"
+#~ msgstr "Activar la lista de URL prohibidas"
+
+#~ msgid "&Add Ban"
+#~ msgstr "&A�adir prohibici�n"
+
+#~ msgid "&Remove Selected"
+#~ msgstr "Elimina&r seleccionadas"
+
+#~ msgid "URL Ban List"
+#~ msgstr "Lista de URL prohibidas"
+
+#~ msgid "Select a ban."
+#~ msgstr "Seleccione una prohibici�n."
+
+#~ msgid "Window with ID '%Q' not found"
+#~ msgstr "Ventana con ID '%Q' no encontrada"
+
+#~ msgid "The specified window (%Q) is not a channel/query/DCC chat"
+#~ msgstr "La ventana especificada (%Q) no es un canal/privado/DCC de chat"
+
+#~ msgid "File not found or empty"
+#~ msgstr "Archivo no encontrado o vac�o"
+
+#~ msgid "I can't open that file"
+#~ msgstr "No puedo abrir ese archivo"
+
+#~ msgid "Could not paste file"
+#~ msgstr "No pude pegar el archivo"
+
+#~ msgid "The specified window (%s) is not a channel/query/dcc"
+#~ msgstr "La ventana especificada (%s) no es un canal/privado/dcc"
+
+#~ msgid "Slow-paste ID:%d Window:%s"
+#~ msgstr "Pegado lento ID:%d Ventana:%s"
+
+#~ msgid "Window %Q not found"
+#~ msgstr "Ventana %Q no encontrada"
+
+#~ msgid "Missing window id after the 'w' switch"
+#~ msgstr "Falta id de ventana despu�s del modificador 'w'"
+
+#~ msgid "Can't log to file %Q"
+#~ msgstr "No puedo grabar el registro al archivo %Q"
+
+#~ msgid "This window has no logging capabilities"
+#~ msgstr "Esta ventana no tiene capacidades de registro"
+
+#~ msgid "Window with id '%Q' not found, returning empty string"
+#~ msgstr "Ventana con id '%Q' no encontrada, devolviendo la cadena vac�a"
+
+#~ msgid "< &Back"
+#~ msgstr "< Atr�s"
+
+#~ msgid "&Next >"
+#~ msgstr "Siguie&nte >"
+
+#~ msgid "Finish"
+#~ msgstr "Terminar"
+
+#~ msgid ""
+#~ "<p><h2>Welcome :)</h2>This is your first time running this version of "
+#~ "KVIrc.<br>This wizard will guide you through the few steps required to "
+#~ "complete the setup.<br><br>If you had a previous version of KVIrc "
+#~ "installed, no worries. You will have a chance to preserve the old "
+#~ "configuration.</p><p>Click \"<b>Next</b>\" to proceed.</p>"
+#~ msgstr ""
+#~ "<p><h2>Bienvenido :)</h2>Esta es la primera ejecuci�n de esta versi�n de "
+#~ "KVIrc.<br>Este asistente le guiar� a trav�s de los pocos pasos necesarios "
+#~ "para completar la configuraci�n.<br><br>Si ten�a instalada una versi�n "
+#~ "anterior de KVIrc no se preocupe, tendr� oportunidad de preservar su "
+#~ "configuraci�n.</p><p>Pulse \"<b>Siguiente</b>\" para continuar.</p>"
+
+#~ msgid "Welcome to KVIrc"
+#~ msgstr "Bienvenido a KVIrc"
+
+#~ msgid ""
+#~ "<p>All of the files in this distribution are covered by the GPL. In human "
+#~ "terms this can be read as follows:<br><ul><li><b>KVIrc is free</b>, use "
+#~ "it, have fun! <b>:)</b></li><li>If you use <b>any</b> part of KVIrc in "
+#~ "your own project, you <b>must</b> release that project under the same "
+#~ "license.</li></ul></p><p>The \"legalese\" version of the license is shown "
+#~ "in the box below.</p>"
+#~ msgstr ""
+#~ "<p>Todos los archivos de esta distribuci�n est�n cubiertos por la GPL."
+#~ "<br>Llanamente esto puede leerse como sigue:<br><ul><li><b>KVIrc es "
+#~ "libre</b>, �selo y divi�rtase <b>:)</b></li><li>Si utiliza <b>cualquier</"
+#~ "b> parte de KVIrc en su proyecto, <b>DEBE</b> liberarlo con la misma "
+#~ "licencia.</li></ul></p><p>La versi�n \"legal\" de la licencia se muestra "
+#~ "en el cuadro inferior.</p>"
+
+#~ msgid ""
+#~ "Oops... can't find the license file.\n"
+#~ "It MUST be included in the distribution...\n"
+#~ "Please report to <pragma at kvirc dot net>"
+#~ msgstr ""
+#~ "Oops... no puedo encontrar el archivo de licencia.\n"
+#~ "DEBE estar inclu�do en la distribuci�n...\n"
+#~ "Por favor, informe de esto a <pragma at kvirc dot net>"
+
+#~ msgid "Dreaded License Agreement"
+#~ msgstr "Temido acuerdo de licencia"
+
+#~ msgid "KVIrc Setup"
+#~ msgstr "Configuraci�n de KVIrc"
+
+#~ msgid ""
+#~ "Please choose a Nickname.<br><br>Your nickname is the name that other IRC "
+#~ "users will know you by. It can't contain spaces or punctuation. Some IRC "
+#~ "networks will shorten your nickname if it is more than 9 characters long."
+#~ "<br><br>If in doubt, just enter the first nick that comes to mind. You "
+#~ "will be able to change it later in the Identity properties, or with the /"
+#~ "NICK command."
+#~ msgstr ""
+#~ "Por favor, escoja un nick.<br><br>Su nick es el nombre por el que le "
+#~ "conocer�n otros usuarios del IRC. No puede contener espacios o caracteres "
+#~ "de puntuaci�n. Algunas redes de IRC cortar�n su nick si tiene m�s de 9 "
+#~ "caracteres de longitud.<br><br>En caso de duda, introduzca el primer nick "
+#~ "que le venga a la mente. Podr� cambiarlo m�s tarde en las propiedades del "
+#~ "di�logo Identidad, o con el comando /NICK."
+
+#~ msgid "<b>Nickname:</b>"
+#~ msgstr "<b>Nick:</b>"
+
+#~ msgid ""
+#~ "<p>Please choose a folder for KVIrc to store its settings and other data, "
+#~ "and another for downloaded files. Make sure that you have permission to "
+#~ "write to both folders.<br><br>The suggested locations are fine in most "
+#~ "cases, so if you don't know what is this about, just click \"<b>Next</b>"
+#~ "\".<br><br>If you had a previous version of KVIrc installed, you can "
+#~ "choose the existing directory for the settings, and your configuration "
+#~ "will be preserved.</p>"
+#~ msgstr ""
+#~ "<p>Por favor, escoja un directorio para que KVIrc guarde su configuraci�n "
+#~ "y datos varios, y otro para los archivos descargados. Aseg�rese de que "
+#~ "posee permisos para escribir en ambos directorios.<br><br>La "
+#~ "configuraci�n sugerida es correcta casi siempre, por ello, si no entiende "
+#~ "qu� es esto, solo pulse \"<b>Siguiente</b>\".<br><br>Si tiene instalada "
+#~ "una versi�n anterior de KVIrc puede escoger los directorios existentes y "
+#~ "su configuraci�n ser� preservada.</p>"
+
+#~ msgid "Application Folders"
+#~ msgstr "Directorios de la Aplicaci�n"
+
+#~ msgid "<b>Store configuration in folder:</b>"
+#~ msgstr "<b>Guardar la configuraci�n en el directorio:</b>"
+
+#~ msgid "<b>Download files to folder:</b>"
+#~ msgstr "<b>Directorio para archivos descargados:</b>"
+
+#~ msgid ""
+#~ "<p>Here you can choose the default appearance of KVIrc.<br><br>The Fancy "
+#~ "Theme uses icons, a transparent background and a lot of colors. The "
+#~ "Minimalist Theme is designed for low-color displays or for \"console\" "
+#~ "extremists; it's more or less white text on a black background.<br><br>If "
+#~ "you had a previous version of KVIrc installed, you can choose to not "
+#~ "apply any theme in order to preserve your current visual settings."
+#~ "<br><br>If you don't know what to choose, just use the default.</p>"
+#~ msgstr ""
+#~ "<p>Aqu� puede escoger la apariencia por defecto de KVIrc.<br><br>El tema "
+#~ "caprichoso usa iconos, un fondo transparente y montones de colores. El "
+#~ "tema minimalista est� dise�ado para pantallas con pocos colores o para "
+#~ "extremistas de la \"consola\"; m�s o menos es texto blanco sobre fondo "
+#~ "negro.<br><br>Si ten�a instalada una versi�n previa de KVIrc, puede "
+#~ "escoger no aplicar ning�n tema para preservar sus configuraciones "
+#~ "visuales actuales.<br><br>Si no sabe que quiere escoger, use la "
+#~ "configuraci�n por defecto.</p>"
+
+#~ msgid "&Fancy Theme"
+#~ msgstr "Tema &caprichoso"
+
+#~ msgid "&Minimalist Theme"
+#~ msgstr "Tema &minimalista"
+
+#~ msgid "&Don't apply any theme"
+#~ msgstr "&No aplicar tema alguno"
+
+#~ msgid "Default Theme"
+#~ msgstr "Tema Por defecto"
+
+#~ msgid ""
+#~ "<p>Setup can make a shortcut to the KVIrc program on your desktop, so you "
+#~ "can access it quickly.</p><p>Do you want this shortcut to be created?</p>"
+#~ msgstr ""
+#~ "<p>La configuraci�n puede crear un acceso directo al ejectable de KVIrc "
+#~ "en su escritorio.</p><p>�Quiere crearlo?</p>"
+
+#~ msgid "<p>If you're unsure just say \"Yes\"</p>"
+#~ msgstr "<p>Si no est� seguro, simplemente conteste \"Si\"</p>"
+
+#~ msgid "&Yes"
+#~ msgstr "&S�"
+
+#~ msgid "&No"
+#~ msgstr "&No"
+
+#~ msgid "Desktop Shortcut"
+#~ msgstr "Acceso directo en el Escritorio"
+
+#~ msgid ""
+#~ "<p>Setup can now set KVIrc as default application for the irc:// and "
+#~ "irc6:// urls.</p><p>Do you want these settings to be applied?</p>"
+#~ msgstr ""
+#~ "<p>El m�dulo de configuraci�n pondr� ahora a KVIrc como aplicaci�n por "
+#~ "defecto para las urls irc:// e irc6://.</p><p>�Quiere que se apliquen "
+#~ "estos cambios?</p>"
+
+#~ msgid "URL Handlers"
+#~ msgstr "Manejadores de URL"
+
+#~ msgid ""
+#~ "<p><h2>Setup Complete</h2>Setup now has all the necessary information to "
+#~ "configure KVIrc.</p><p>Please click the \"<b>Finish</b>\" button to save "
+#~ "your choices and start KVIrc.</p>"
+#~ msgstr ""
+#~ "<p><h2>Configuraci�n Terminada</h2>El asistente tiene ahora toda la "
+#~ "informaci�n necesaria para configurar KVIrc.</p><p>Por favor, pulse el "
+#~ "bot�n \"<b>Terminar</b>\" para guardar sus preferencias e iniciar KVIrc.</"
+#~ "p>"
+
+#~ msgid "Finish Setup"
+#~ msgstr "Finalizar asistente"
+
+#~ msgid "Choose a Configuration Folder - KVIrc Setup"
+#~ msgstr "Escoja un directorio de configuraci�n - Asistente de KVIrc"
+
+#~ msgid "Choose a Download Folder - KVIrc Setup"
+#~ msgstr ""
+#~ "Escoja un directorio para los archivos descargados - Asistente de KVIrc"
+
+#~ msgid "Abort Setup - KVIrc Setup"
+#~ msgstr "Interrumpir Configuraci�n - Asistente de KVIrc"
+
+#~ msgid ""
+#~ "You have chosen to abort the setup.<br>KVIrc cannot run until you "
+#~ "complete this procedure.<br><br>Do you really wish to abort?"
+#~ msgstr ""
+#~ "Ha escogido interrumpir la configuraci�n.<br>KVIrc no funcionar� hasta "
+#~ "que finalice este procedimiento.<br><br>�Realmente desea no continuar?"
+
+#~ msgid ""
+#~ "Cannot create directory %s.\n"
+#~ "You may not have write permission for that path. Please go back and "
+#~ "choose another directory."
+#~ msgstr ""
+#~ "No puedo crear el directorio %s.\n"
+#~ "Es posible que no tenga permiso de escritura para esta ruta. Por favor, "
+#~ "retroceda y escoja otro directorio."
+
+#~ msgid "Can't add a null object"
+#~ msgstr "No puedo a�adir un objeto nulo"
+
+#~ msgid ""
+#~ "Invalid object handle passed as parameter (the object is no longer "
+#~ "existing ?)"
+#~ msgstr ""
+#~ "Se pas� como par�metro un manejador a un objeto no v�lido (�el objeto ya "
+#~ "no existe?)"
+
+#~ msgid "Object in invalid state"
+#~ msgstr "El objeto se encuentra en un estado no v�lido"
+
+#~ msgid "Can't set a non-widget object to be the main widget of a dock window"
+#~ msgstr ""
+#~ "No puedo asignar un objeto no-widget para ser el widget principal de una "
+#~ "ventana de anclaje"
+
+#~ msgid "The added widget is not a child of this dock window"
+#~ msgstr "El widget a�adido no es un hijo de esta ventana de anclaje"
+
+#~ msgid "No string parameter given - using empty string"
+#~ msgstr ""
+#~ "No se proporcion� una cadena como par�metro - usando una cadena vac�a"
+
+#~ msgid "Item index [%d] is too big - defaulting to $count() - 1 [%d]"
+#~ msgstr ""
+#~ "El �ndice de elemento [%d] es demasiado grande: se pone por defecto a "
+#~ "$count()-1 [%d]"
+
+#~ msgid "Invalid insertion Policy"
+#~ msgstr "Pol�tica de inserci�n no v�lida"
+
+#~ msgid "Can't add a non-widget object"
+#~ msgstr "No puedo a�adir un objeto no-widget"
+
+#~ msgid "Not a widget object"
+#~ msgstr "No es un objeto widget"
+
+#~ msgid "Can't find the tab "
+#~ msgstr "No pude encontrar la tabulaci�n "
+
+#~ msgid "Unknown position 'Q%'"
+#~ msgstr "Posici�n desconocida '%Q'"
+
+#~ msgid "Invalid timeout (%s)"
+#~ msgstr "Tiempo de expiraci�n (%s) no v�lido"
+
+#~ msgid "Another connection in progress"
+#~ msgstr "Otra conexi�n est� realiz�ndose"
+
+#~ msgid "Invalid port specified: the kernel will choose one"
+#~ msgstr "Se especific� un puerto no v�lido: el nucleo escoger� uno"
+
+#~ msgid "No IPV6 support in this executable"
+#~ msgstr "Ejecutable sin soporte IPv6"
+
+#~ msgid "Invalid IP address specified (%s)"
+#~ msgstr "Se especific� una direcci�n IP no v�lida (%s)"
+
+#~ msgid "Socket creation failed"
+#~ msgstr "Creaci�n de socket fallida"
+
+#~ msgid "Invalid socket address"
+#~ msgstr "Direcci�n para socket no v�lida"
+
+#~ msgid "Bind failure"
+#~ msgstr "Fallo en bind"
+
+#~ msgid "Listen failure"
+#~ msgstr "Llamada a listen fallida"
+
+#~ msgid "unknown"
+#~ msgstr "desconocido"
+
+#~ msgid "No socket object specified"
+#~ msgstr "No se especifico un objeto socket"
+
+#~ msgid "Invalid socket object specified (it doesn't inherit from socket)"
+#~ msgstr "Se especific� un objeto socket no v�lido (no hereda de socket)"
+
+#~ msgid "There is no connection to accept!"
+#~ msgstr "�No hay conexi�n que aceptar!"
+
+#~ msgid "Invalid port (%s)"
+#~ msgstr "Puerto no v�lido (%s)"
+
+#~ msgid "Invalid ip address (%s)"
+#~ msgstr "Direcci�n IP no v�lida (%s)"
+
+#~ msgid "Failed to create the socket"
+#~ msgstr "Fallo al crear el socket"
+
+#~ msgid "Failed to setup a nonblocking socket"
+#~ msgstr "Fallo al configurar modo no bloqueante para el socket"
+
+#~ msgid "Connect failure: %s"
+#~ msgstr "Conexi�n fallida: %s"
+
+#~ msgid "Connect attempt timed out"
+#~ msgstr "Expir� el intento de conexi�n"
+
+#~ msgid "Can't start the DNS thread"
+#~ msgstr "No se pudo iniciar el hilo de DNS"
+
+#~ msgid ""
+#~ "Too much unprocessed incoming data (you've left this socket unmanaged ?)"
+#~ msgstr ""
+#~ "Demasiados datos de entrada sin procesar (�dej� el socket sin gestionar?)"
+
+#~ msgid "Can't add a non - popupmenu object"
+#~ msgstr "No puedo a�adir un objeto que no es un popupmenu"
+
+#~ msgid "Unknown text position '%Q'"
+#~ msgstr "Posici�n de texto desconocida '%Q'"
+
+#~ msgid "Invalid selection mode '%Q' assuming single"
+#~ msgstr "Modo de selecci�n no v�lido \"%Q\": asumiendo \"single\""
+
+#~ msgid "The parent of a layout must be a widget!"
+#~ msgstr "�El padre de un layout debe ser un widget!"
+
+#~ msgid "Invalid resize mode defaulting to Auto"
+#~ msgstr "Modo de redimensionado no v�lido, modo Auto por defecto"
+
+#~ msgid "Empty string"
+#~ msgstr "Cadena vac�a"
+
+#~ msgid "Empty filename string"
+#~ msgstr "Cadena de nombre de archivo vac�a"
+
+#~ msgid "No such open mode: %s"
+#~ msgstr "No existe el modo de apertura: %s"
+
+#~ msgid "File is not open !"
+#~ msgstr "� El archivo no est� abierto !"
+
+#~ msgid "Negative file index supplied !"
+#~ msgstr "� Se proporcion� un �ndice de archivo negativo !"
+
+#~ msgid "Argument to long, using only first char"
+#~ msgstr "Argumento demasiado largo, utilizando solo el primer car�cter"
+
+#~ msgid "Argument length is 0 - empty string"
+#~ msgstr "La longitud del argumento es 0 - cadena vac�a"
+
+#~ msgid "Write error occured !"
+#~ msgstr "� Sucedi� un error de escritura !"
+
+#~ msgid "Read error occured !"
+#~ msgstr "� Sucedi� un error de lectura !"
+
+#~ msgid "An error occured !"
+#~ msgstr "� Sucedi� un error !"
+
+#~ msgid "Length is a negative number !"
+#~ msgstr "� La longitud es un n�mero negativo !"
+
+#~ msgid "Nothing to write"
+#~ msgstr "Nada que escribir"
+
+#~ msgid "No such open mode: '%Q'"
+#~ msgstr "No existe el modo de apertura: '%Q'"
+
+#~ msgid "File is not open!"
+#~ msgstr "� El archivo no est� abierto !"
+
+#~ msgid "The array passed as parameter must contain at least 4 elements"
+#~ msgstr "El vector pasado como par�metro debe contener al menos 4 elementos"
+
+#~ msgid "One of the geometry array parameters is empty"
+#~ msgstr "Uno de los par�metros del vector de geometr�a est� vac�o"
+
+#~ msgid "One of the geometry array parameters didn't evaluate to an integer"
+#~ msgstr ""
+#~ "Uno de los par�metros del vector de geometr�a no se evalua a un entero"
+
+#~ msgid "The first parameter didn't evaluate to an array nor an integer"
+#~ msgstr "El primer par�metro no se evalua como un vector ni como un entero"
+
+#~ msgid "The array passed as parameter must contain at least 2 elements"
+#~ msgstr "El vector pasado como par�metro debe contener al menos 2 elementos"
+
+#~ msgid "One of the array parameters is empty"
+#~ msgstr "Uno de los par�metros del vector est� vac�o"
+
+#~ msgid "One of the array parameters didn't evaluate to an integer"
+#~ msgstr "Uno de los par�metros del vector no se evalua como un entero"
+
+#~ msgid "The array passed as parameter must contain at least 3 elements"
+#~ msgstr "El vector pasado como par�metro debe contener al menos 3 elementos"
+
+#~ msgid "Unknown orientation"
+#~ msgstr "Orientaci�n desconocida"
+
+#~ msgid "Widget or Pixmap required "
+#~ msgstr "Necesita un Widget o un Pixmap "
+
+#~ msgid "Invalid mode '%Q'"
+#~ msgstr "Modo no v�lido '%Q'"
+
+#~ msgid "Pixmap object required"
+#~ msgstr "Necesita un objeto Pixmap"
+
+#~ msgid "Unknown mode "
+#~ msgstr "Modo desconocido "
+
+#~ msgid "Unknown segment style "
+#~ msgstr "Estilo de segmento desconocido "
+
+#~ msgid ""
+#~ "The window identifier preceeded by WinId must be the first object in the "
+#~ "search path"
+#~ msgstr ""
+#~ "El identificador de ventana precedido por WinId debe ser el primer objeto "
+#~ "en la trayectoria de b�squeda"
+
+#~ msgid "Failed to find one of the wrap path widgets (%s::%s)"
+#~ msgstr ""
+#~ "No se encontr� una de las trayectorias de envoltura al widget (%s::%s)"
+
+#~ msgid "Failed to find the widget to wrap"
+#~ msgstr "No pude encontrar el widget a envolver"
+
+#~ msgid "Non-negative integer length expected as parameter"
+#~ msgstr "Se esperaba una longitud entera no negativa como par�metro"
+
+#~ msgid "Non-negative integer index expected as first parameter"
+#~ msgstr "Se esperaba un �ndice entero no negativo como primer par�metro"
+
+#~ msgid "Non-negative integer length expected as second parameter"
+#~ msgstr "Se esperaba una longitud entera no negativa como segundo par�metro"
+
+#~ msgid "Widget object required"
+#~ msgstr "Necesita un objeto Widget"
+
+#~ msgid "Can't find the widget object to add (%s)"
+#~ msgstr "No pude encontrar el objeto widget para a�adir (%s)"
+
+#~ msgid "Invalid object"
+#~ msgstr "Objeto no v�lido"
+
+#~ msgid "Can't fill non-widget object"
+#~ msgstr "No puedo rellenar un objeto no-widget"
+
+#~ msgid "Invalid x offset parameter (%s)"
+#~ msgstr "Par�metro de desplazamiento x no v�lido (%s)"
+
+#~ msgid "Invalid y offset parameter (%s)"
+#~ msgstr "Par�metro de desplazamiento y no v�lido (%s)"
+
+#~ msgid "Can't find the specified file '%s'."
+#~ msgstr "No puedo encontrar el archivo especificado '%s'."
+
+#~ msgid "I can't find the specified file %Q."
+#~ msgstr "No puedo encontrar el archivo especificado %Q."
+
+#~ msgid "No such line number"
+#~ msgstr "No existe el n�mero de l�nea"
+
+#~ msgid "Unknown word wrap '%Q'"
+#~ msgstr "Ajuste de l�nea desconocido '%Q'"
+
+#~ msgid "Unknown wrap policy'%Q'"
+#~ msgstr "Norma de contexto desconocido '%Q'"
+
+#~ msgid "One of the colors array parameters is empty"
+#~ msgstr "Uno de los par�metros del vector de colores est� vac�o"
+
+#~ msgid "One of the colors array parameters didn't evaluate to an integer"
+#~ msgstr ""
+#~ "Uno de los par�metros del vector de colores no se evalua como un entero"
+
+#~ msgid ""
+#~ "$setColor requires either an array as first parameter or three integers"
+#~ msgstr "$setColor necesita un vector como primer par�metro o tres enteros"
+
+#~ msgid "Unknown text format '%Q'"
+#~ msgstr "Formato de texto desconocido '%Q'"
+
+#~ msgid " I can't find the specified file '%Q'."
+#~ msgstr " No puedo encontrar el archivo especificado '%Q'."
+
+#~ msgid " I cannot read the file %Q'."
+#~ msgstr " No puedo leer el archivo '%Q'."
+
+#~ msgid "Unknown alignment '%Q'"
+#~ msgstr "Alineaci�n desconocida: %Q"
+
+#~ msgid "Unknown auto formatting mode '%Q'"
+#~ msgstr "Modo de formateo autom�tico desconocido '%Q'"
+
+#~ msgid "Unknown vertical alignment '%Q'"
+#~ msgstr "Alineaci�n desconocida: %Q"
+
+#~ msgid "Unknown dock area '%Q'"
+#~ msgstr "Area de anclaje desconocida '%Q'"
+
+#~ msgid "Class is undefined"
+#~ msgstr "La clase no est� definida"
+
+#~ msgid "Widget or Pixmap required"
+#~ msgstr "Necesita un Widget o un Pixmap"
+
+#~ msgid "Error in KVS class implementation: processing aborted"
+#~ msgstr ""
+#~ "Error en la implementaci�n de la clase KVS: procesamiento suspendido"
+
+#~ msgid "Processing aborted"
+#~ msgstr "Procesamiento suspendido"
+
+#~ msgid "Error near line %d, column %d"
+#~ msgstr "Error cerca de la l�nea %d, columna %d"
+
+#~ msgid "Warning near line %d, column %d"
+#~ msgstr "Advertencia cerca de la l�nea %d, columna %d"
+
+#~ msgid "XML support not available in the Qt library"
+#~ msgstr "Soporte de XML no disponible en la librer�a Qt"
+
+#~ msgid "Invalid width parameter"
+#~ msgstr "Valor de anchura no v�lido"
+
+#~ msgid "Invalid height parameter"
+#~ msgstr "Valor de altura no v�lido"
+
+#~ msgid "The parameters do not define a rectangle"
+#~ msgstr "Los par�metros no definen un rect�ngulo"
+
+#~ msgid "The parameters do not define a point"
+#~ msgstr "Los par�metros no definen un punto"
+
+#~ msgid "The parameters are do not define a valid size"
+#~ msgstr "Los par�metros no definen un tama�o v�lido"
+
+#~ msgid "Invalid size parameter (%s)"
+#~ msgstr "Par�metro de tama�o no v�lido (%s)"
+
+#~ msgid "Unknown widget type: %s"
+#~ msgstr "Tipo de widget desconocido: %s"
+
+#~ msgid "Can't find the widget object assuming 0"
+#~ msgstr "No pude encontrar el objeto widget, asumiento 0"
+
+#~ msgid "Parent must be a widget object"
+#~ msgstr "El padre debe ser un objeto widget"
+
+#~ msgid "Invalid parameters"
+#~ msgstr "Par�metros no v�lidos"
+
+#~ msgid "Invalid Parameters"
+#~ msgstr "Par�metros no v�lidos"
+
+#~ msgid "No Layout associated to the widget "
+#~ msgstr "No hay un Layout asociado al widget"
+
+#~ msgid "Invalid row parameter (%s)"
+#~ msgstr "Par�metro fila no v�lido (%s)"
+
+#~ msgid "Invalid column parameter (%s)"
+#~ msgstr "Par�metro columna no v�lido (%s)"
+
+#~ msgid ""
+#~ "$setGeometry() requires either an array as first parameter or four "
+#~ "integers"
+#~ msgstr ""
+#~ "$setGeometry() necesita un vector como primer par�metro o cuatro enteros"
+
+#~ msgid ""
+#~ "$setPaletteForeground requires either an array as first parameter or "
+#~ "three integers"
+#~ msgstr ""
+#~ "$setPaletteForeground necesita un vector como primer par�metro o tres "
+#~ "enteros"
+
+#~ msgid ""
+#~ "$setBackgroundColor requires either an array as first parameter or three "
+#~ "integers"
+#~ msgstr ""
+#~ "$setBackgroundColor necesita un vector como primer par�metro o tres "
+#~ "enteros"
+
+#~ msgid "Unknown widget flag '%Q'"
+#~ msgstr "Indicador de widget desconocido '%Q'"
+
+#~ msgid "Unknown style '%Q'"
+#~ msgstr "Estilo desconocido '%Q'"
+
+#~ msgid "Unknown alignment: '%Q'"
+#~ msgstr "Alineaci�n desconocida: '%Q'"
+
+#~ msgid "Unknown frame style"
+#~ msgstr "Estilo de marco desconocido"
+
+#~ msgid "Unknown echo mode %Q"
+#~ msgstr "Modo de eco desconocido %Q"
+
+#~ msgid "the toolbar cannot be a parent-widget!"
+#~ msgstr "la barra de herramientas no puede ser un widget padre"
+
+#~ msgid "The parent-widget isn't a MainWindow."
+#~ msgstr "El widget padre no es una ventana principal."
+
+#~ msgid "pix '%Q' doesn't exists"
+#~ msgstr "no existe el pix '%Q'"
+
+#~ msgid "Doesn't a widget object"
+#~ msgstr "No es un objeto widget"
+
+#~ msgid "Process could not be starded."
+#~ msgstr "El proceso no puede ser iniciado."
+
+#~ msgid "Unknown alignment"
+#~ msgstr "Alineaci�n desconocida"
+
+#~ msgid "Unknown orientation: "
+#~ msgstr "Orientaci�n desconocida: "
+
+#~ msgid "Not Enough Parameters"
+#~ msgstr "No hay suficientes par�metros"
+
+#~ msgid "Unknown tickmark '%Q'"
+#~ msgstr "Marca desconocida '%Q'"
+
+#~ msgid "Unknown orientation '%Q'"
+#~ msgstr "Orientaci�n desconocida '%Q'"
+
+#~ msgid "Context sensitive help"
+#~ msgstr "Ayuda sensible al contexto"
+
+#~ msgid "&Replace"
+#~ msgstr "&Reemplazar"
+
+#~ msgid "Find & Repalce"
+#~ msgstr "Buscar y Reemplazar"
+
+#~ msgid "Find"
+#~ msgstr "Buscar"
+
+#~ msgid "Word to Find"
+#~ msgstr "Palabra a encontrar"
+
+#~ msgid "Replace with"
+#~ msgstr "Reemplazar con"
+
+#~ msgid "&Replace in all Aliases"
+#~ msgstr "&Reemplazar en todos los alias"
+
+#~ msgid "&Findnext"
+#~ msgstr "Buscar Siguiente"
+
+#~ msgid "&Replace(WIP)"
+#~ msgstr "&Reemplazar(WIP)"
+
+#~ msgid "orphan_servers"
+#~ msgstr "servidores_hu�rfanos"
+
+#~ msgid ""
+#~ "%s doesn't look like a servers.ini file.\n"
+#~ "Import failed."
+#~ msgstr ""
+#~ "%s no parece ser un archivo servers.ini\n"
+#~ "Fall� la importaci�n."
+
+#~ msgid "Choose a servers.ini file"
+#~ msgstr "Escoja un archivo servers.ini"
+
+#~ msgid "Remote mIRC servers.ini Import Wizard"
+#~ msgstr "Asistente de Importaci�n remota de servers.ini de mIRC"
+
+#~ msgid ""
+#~ "<center><b>Welcome!</b><br><br>This wizard will guide you in the process "
+#~ "of downloading a list of IRC servers. Please click \"<b>Next</b>\" to "
+#~ "begin the operation.</center>"
+#~ msgstr ""
+#~ "<center><b>Bienvenido</b><br><br>Este asistente te guiar� en el proceso "
+#~ "de descarga de una lista de servidores IRC. Por favor, pulsa "
+#~ "\"<b>Siguiente</b>\" para comenzar la operaci�n.</center>"
+
+#~ msgid ""
+#~ "<center>Here you can modify the URL that the list will be downloaded "
+#~ "from. In most cases the default URL is acceptable.</center>"
+#~ msgstr ""
+#~ "<center>Aqu� puedes modificar la URL desde la que ser� descargada la "
+#~ "lista. Generalmente, la URL por defecto es aceptable.</center>"
+
+#~ msgid "URL Selection"
+#~ msgstr "Selecci�n de URL"
+
+#~ msgid "Please wait while the list is being downloaded"
+#~ msgstr "Por favor, espera mientras se descarga la lista"
+
+#~ msgid "List Download"
+#~ msgstr "Descarga de la Lista"
+
+#~ msgid "Failed to start the server list transfer :("
+#~ msgstr "Fall� el inicio de la transferencia de la lista de servidores :("
+
+#~ msgid "File downloaded: processing ..."
+#~ msgstr "Archivo descargado: procesando..."
+
+#~ msgid "%1 servers imported succesfully"
+#~ msgstr "%1 servidores se importaron correctamente"
+
+#~ msgid "No servers imported"
+#~ msgstr "No se import� ning�n servidor"
+
+#~ msgid "Import from servers.ini"
+#~ msgstr "Importaci�n desde servers.ini"
+
+#~ msgid "Import from http://www.mirc.co.uk/servers.ini"
+#~ msgstr "Importaci�n desde http://www.mirc.co.uk/servers.ini"
+
+#~ msgid "Internal error: I'm not in the user database ?"
+#~ msgstr "Error interno: �no estoy en la base de datos de usuario?"
+
+#~ msgid ""
+#~ "Can't set the current avatar to '%Q': failed to start the http transfer"
+#~ msgstr ""
+#~ "No puedo poner el avatar actual a '%Q': fall� el inicio de la "
+#~ "transferencia http"
+
+#~ msgid "Can't set the current avatar to '%Q': can't load the image"
+#~ msgstr "No puedo poner el avatar actual a '%Q': no puedo cargar la imagen"
+
+#~ msgid "Invalid timeout specified, using default"
+#~ msgstr ""
+#~ "Se especific� un tiempo de expiraci�n no v�lido, usando valor por defecto"
+
+#~ msgid "Can't add a file offer for file %Q (huh ? file not readable ?)"
+#~ msgstr ""
+#~ "No puedo a�adir un ofrecimiento de archivo para %Q (�archivo no legible?)"
+
+#~ msgid "Added %d secs file offer for file %Q (%Q) and receiver %Q"
+#~ msgstr "A�adida la oferta de %d segs del archivo %Q (%Q) y receptor %Q"
+
+#~ msgid "Notifying avatar '%Q' to %Q"
+#~ msgstr "Notificando avatar '%Q' a %Q"
+
+#~ msgid "Unknown "
+#~ msgstr "Desconocido "
+
+#~ msgid ""
+#~ "No environment variable found, please don't use the %% in the request"
+#~ msgstr ""
+#~ "No se encontr� la variable de entorno, por favor no use %% en la petici�n"
+
+#~ msgid "Invalid DCOP parameter syntax"
+#~ msgstr "Sintaxis del par�metro DCOP no v�lido"
+
+#~ msgid "The specified parameter is not an integer"
+#~ msgstr "El par�metro especificado no es un entero"
+
+#~ msgid "Unsupported DCOP parameter type %s"
+#~ msgstr "Tipo de par�metro DCOP %s no soportado"
+
+#~ msgid "DCOP call failed"
+#~ msgstr "Llamada DCOP fallida"
+
+#~ msgid "DCOP calls are available only when KDE support is compiled in"
+#~ msgstr ""
+#~ "Las llamadas a DCOP solo est�n disponibles cuando est� compilado el "
+#~ "soporte de KDE"
+
+#~ msgid "Item"
+#~ msgstr "Elemento"
+
+#~ msgid "Submenu"
+#~ msgstr "Submenu"
+
+#~ msgid "External Menu"
+#~ msgstr "Men� Externo"
+
+#~ msgid "Separator"
+#~ msgstr "Separador"
+
+#~ msgid "Label"
+#~ msgstr "Etiqueta"
+
+#~ msgid "### Epilogue ###"
+#~ msgstr "### Ep�logo ###"
+
+#~ msgid "Epilogue"
+#~ msgstr "Ep�logo"
+
+#~ msgid "### Prologue ###"
+#~ msgstr "### Pr�logo ###"
+
+#~ msgid "Popup name"
+#~ msgstr "Nombre de men� emergente"
+
+#~ msgid "Type"
+#~ msgstr "Tipo"
+
+#~ msgid "Text:"
+#~ msgstr "Texto:"
+
+#~ msgid ""
+#~ "<center><b>Visible text</b><br>May contain identifiers that will be "
+#~ "evaluated at popup call time.<br>For labels, this text can contain also "
+#~ "limited HTML tags.</center>"
+#~ msgstr ""
+#~ "<center><b>Texto Visible</b><br>Puede contener identificadores que ser�n "
+#~ "evaluados en el momento de la llamada al men� emergente.<br>Para "
+#~ "etiquetas, este texto puede contener tambi�n algunos marcadores html.</"
+#~ "center>"
+
+#~ msgid "Condition:"
+#~ msgstr "Condici�n:"
+
+#~ msgid ""
+#~ "<center><b>Boolean condition</b><br>Will be evaluated at popup call time "
+#~ "in order to decide if this entry has to be shown.<br>An empty condition "
+#~ "evaluates to true.</center>"
+#~ msgstr ""
+#~ "<center><b>Condici�n L�gica</b><br>Ser� evaluada en el momento de la "
+#~ "llamada al men� emergente para decidir si debe mostrarse esta opci�n."
+#~ "<br>Una condici�n vac�a se eval�a como cierta.</center>"
+
+#~ msgid "Icon:"
+#~ msgstr "Icono:"
+
+#~ msgid ""
+#~ "<center><b>Icon identifier</b><br>May be an internal icon ID, an absolute "
+#~ "path or a relative path.<br>Portable scripts should never use absolute "
+#~ "paths.</center>"
+#~ msgstr ""
+#~ "<center><b>Identificador de Icono</b><br>Puede ser un id de icono "
+#~ "interno, una ruta absoluta o una relativa<br>. Los scripts portables "
+#~ "nunca deber�an usar rutas absolutas.</center>"
+
+#~ msgid "External menu:"
+#~ msgstr "Men� externo:"
+
+#~ msgid ""
+#~ "<center><b>External menu name</b><br>This allows to nest externally "
+#~ "defined popup menus. The popup menu with the specified name will be "
+#~ "looked up at menu setup time.</center>"
+#~ msgstr ""
+#~ "<center><b>Nombre de men� externo</b><br>Esto permite anidar men�s "
+#~ "emergentes definidos externamente. El men� con el nombre especificado "
+#~ "ser� buscado en el momento de la configuraci�n del mismo.</center>"
+
+#~ msgid "Item Id:"
+#~ msgstr "Id Elemento:"
+
+#~ msgid ""
+#~ "<center><b>Item id</b><br>This will allow you to use delpopupitem later.</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center><b>id Elemento</b><br>Esto te permitir� usar delpopupitem m�s "
+#~ "tarde.</center>"
+
+#~ msgid "New Separator Below"
+#~ msgstr "Nuevo Separador debajo"
+
+#~ msgid "New Separator Above"
+#~ msgstr "Nuevo Separador encima"
+
+#~ msgid "New Separator Inside"
+#~ msgstr "Nuevo Separador dentro"
+
+#~ msgid "New Label Below"
+#~ msgstr "Nueva Etiqueta debajo"
+
+#~ msgid "New Label Above"
+#~ msgstr "Nueva Etiqueta encima"
+
+#~ msgid "New Label Inside"
+#~ msgstr "Nueva Etiqueta dentro"
+
+#~ msgid "New Item Below"
+#~ msgstr "Nuevo Elemento debajo"
+
+#~ msgid "New Item Above"
+#~ msgstr "Nuevo Elemento encima"
+
+#~ msgid "New Item Inside"
+#~ msgstr "Nuevo Elemento dentro"
+
+#~ msgid "New Menu Below"
+#~ msgstr "Nuevo Men� debajo"
+
+#~ msgid "New Menu Above"
+#~ msgstr "Nuevo Men� encima"
+
+#~ msgid "New Menu Inside"
+#~ msgstr "Nuevo Men� dentro"
+
+#~ msgid "New External Menu Below"
+#~ msgstr "Nuevo Men� Externo debajo"
+
+#~ msgid "New External Menu Above"
+#~ msgstr "Nuevo Men� Externo encima"
+
+#~ msgid "New External Menu Inside"
+#~ msgstr "Nuevo Men� Externo dentro"
+
+#~ msgid "Cu&t"
+#~ msgstr "Cor&tar"
+
+#~ msgid "&Copy"
+#~ msgstr "&Copiar"
+
+#~ msgid "&Paste Below"
+#~ msgstr "&Pegar Debajo"
+
+#~ msgid "Paste Above"
+#~ msgstr "Pegar Encima"
+
+#~ msgid "Paste Inside"
+#~ msgstr "Pegar Dentro"
+
+#~ msgid "New Menu Prologue"
+#~ msgstr "Nuevo Pr�logo de Men�"
+
+#~ msgid "New Menu Epilogue"
+#~ msgstr "Nuevo Ep�logo de Men�"
+
+#~ msgid "&Export All To..."
+#~ msgstr "&Exportar Todos a..."
+
+#~ msgid "&Export selected To..."
+#~ msgstr "&Exportar seleccionadas a..."
+
+#~ msgid "&New Popup"
+#~ msgstr "&Nuevo men� emergente"
+
+#~ msgid "Re&move Popup"
+#~ msgstr "Eli&minar men� emergente"
+
+#~ msgid "&Export Popup To..."
+#~ msgstr "&Exportar men� emergente a..."
+
+#~ msgid "Unable to write to the popup file."
+#~ msgstr "Imposible escribir en el archivo de men� emergente."
+
+#~ msgid "Popup Editor"
+#~ msgstr "Editor de men�s emergentes"
+
+#~ msgid "Missing both encrypt and decrypt key: at least one is needed"
+#~ msgstr ""
+#~ "Faltan tanto la clave de cifrado como la de descifrado: se necesita al "
+#~ "menos una"
+
+#~ msgid "Error 0: Success ?"
+#~ msgstr "Error 0: � �xito ?"
+
+#~ msgid "Unsupported crypt mode"
+#~ msgstr "Mode de cifrado no soportado"
+
+#~ msgid "Unsupported direction"
+#~ msgstr "Direcci�n no soportada"
+
+#~ msgid "Unsupported key length"
+#~ msgstr "Longitud de clave no soportada"
+
+#~ msgid "Bad key data"
+#~ msgstr "Datos de clave erroneos"
+
+#~ msgid "Engine not initialized"
+#~ msgstr "Motor no inicializado"
+
+#~ msgid "Invalid direction for this engine"
+#~ msgstr "Direcci�n no v�lida para este motor"
+
+#~ msgid "Corrupted message data or invalid decrypt key"
+#~ msgstr "Datos del mensaje corruptos o clave de descrifrado no v�lida"
+
+#~ msgid "Unknown error"
+#~ msgstr "Error desconocido"
+
+#~ msgid "Ops...encrypt cipher not initialized"
+#~ msgstr "Ups...motor de cifrado no inicializado"
+
+#~ msgid "Data buffer too long"
+#~ msgstr "Buffer de datos demasiado largo"
+
+#~ msgid "Ops...decrypt cipher not initialized"
+#~ msgstr "Ups...motor de descrifrado no inicializado"
+
+#~ msgid "The message is not a hexadecimal string: this is not my stuff"
+#~ msgstr "El mensaje no es una cadena hexadecimal: esto no es mio"
+
+#~ msgid "The message is not a base64 string: this is not my stuff"
+#~ msgstr "El mensaje no es una cadena base64: esto no es mio"
+
+#~ msgid "The message doesn't seem to be encoded with CBC Mircryption"
+#~ msgstr "El mensaje no parece estar codificado con el cifrado CBC de Mirc"
+
+#~ msgid ""
+#~ "Cryptographic engine based on the\n"
+#~ "Advanced Encryption Standard (AES)\n"
+#~ "algorithm called Rijndael.\n"
+#~ "The text is first encrypted with rijndael\n"
+#~ "and then converted to %s notation.\n"
+#~ "The keys used are %d bit long and will be padded\n"
+#~ "with zeros if you provide shorter ones.\n"
+#~ "If only one key is provided, this engine\n"
+#~ "will use it for both encrypting and decrypting.\n"
+#~ "See the rijndael module documentation\n"
+#~ "for more info on the algorithm used.\n"
+#~ msgstr ""
+#~ "Motor criptogr�fico basado en el\n"
+#~ "Advanced Encryption Standard (AES)\n"
+#~ "algoritmo llamado Rijndael.\n"
+#~ "El texto es cifrado primero con rijndael\n"
+#~ "y despu�s convertido a notaci�n %s.\n"
+#~ "Las claves usadas son de longitud %d bits y ser�n rellenados\n"
+#~ "con ceros si se proporciona una m�s corta.\n"
+#~ "Si solo se proporciona una clave, este motor\n"
+#~ "la usar� para el cifrado y descifrado.\n"
+#~ "L�ase la documentaci�n del m�dulo rijndael\n"
+#~ "para obtener m�s informaci�n acerca del algoritmo usado.\n"
+
+#~ msgid "hexadecimal"
+#~ msgstr "hexadecimal"
+
+#~ msgid "base64"
+#~ msgstr "base64"
+
+#~ msgid ""
+#~ "Popular cryptographic engine based on the\n"
+#~ "old Blowfish encryption algorithm.\n"
+#~ "The text is first encrypted with Blowfish \n"
+#~ "and then converted to base64 notation.\n"
+#~ "The keys used have variable length and\n"
+#~ "are specified as character strings.\n"
+#~ "You can specify keys long up to 56 bytes (448 bits).\n"
+#~ "If only one key is provided, this engine\n"
+#~ "will use it for both encrypting and decrypting.\n"
+#~ "This engine works in ECB mode by default:\n"
+#~ "if you want to use CBC mode you must prefix\n"
+#~ "your key(s) with \"cbc:\".\n"
+#~ msgstr ""
+#~ "Popular motor de cifrado basado en el\n"
+#~ "antiguo algoritmo de cifrado Blowfish.\n"
+#~ "El texto es cifrado primero con Blowfish\n"
+#~ "y despu�s convertido a notaci�n base64.\n"
+#~ "Las claves usadas tienen longitud variable y\n"
+#~ "son especificadas como cadenas de caracteres.\n"
+#~ "Puedes especificar cadenas de hasta 56 bytes\n"
+#~ "(448 bits) de longitud.\n"
+#~ "Si solo se proporciona una clave, este motor la\n"
+#~ "usar� tanto para cifrar como para descifrar.\n"
+#~ "Este motor funciona en modo ECB por defecto:\n"
+#~ "si quieres usar el modo CBC debes preceder tu(s)\n"
+#~ "clave(s) con \"cbc:\".\n"
+
+#~ msgid "Choose the file to share"
+#~ msgstr "Escoja el archivo a compartir"
+
+#~ msgid "Outgoing traffic"
+#~ msgstr "Tr�fico saliente"
+
+#~ msgid "Incoming traffic"
+#~ msgstr "Tr�fico entrante"
+
+#~ msgid "[IDENT]: Service shutdown (spontaneous)"
+#~ msgstr "[IDENT]: Servicio parado (espontaneo)"
+
+#~ msgid "[IDENT]: Service shutdown (on request)"
+#~ msgstr "[IDENT]: Servicio parado (a petici�n)"
+
+#~ msgid "The current window is not a channel"
+#~ msgstr "La ventana actual no es un canal"
+
+#~ msgid "Can't find the window with id '%Q'"
+#~ msgstr "No pude encontrar la ventana con id '%Q'"
+
+#~ msgid "The specified window (%Q) is not a channel"
+#~ msgstr "La ventana especificada (%Q) no es un canal"
+
+#~ msgid "The specified toolbar doesn't exist"
+#~ msgstr "No existe la barra de herramientas especificada"
+
+#~ msgid "No action name/index specified"
+#~ msgstr "No se ha especificado el nombre/�ndice de la acci�n"
+
+#~ msgid "The action parameter didn't evaluate to an index"
+#~ msgstr "El par�metro de acci�n no se evalua como un �ndice"
+
+#~ msgid "The toolbar does not contain the specified item"
+#~ msgstr "La barra de herramientas no contiene el elemento especificado"
+
+#~ msgid "The action \"%Q\" doesn't exist"
+#~ msgstr "La acci�n \"%Q\" no existe"
+
+#~ msgid "KVIrc"
+#~ msgstr "KVIrc"
+
+#~ msgid "Context"
+#~ msgstr "Contexto"
+
+#~ msgid "&Configure KVIrc..."
+#~ msgstr "&Configurar KVIrc..."
+
+#~ msgid "&About KVIrc"
+#~ msgstr "&Acerca de KVIrc"
+
+#~ msgid "Un&dock"
+#~ msgstr "Quitar anclaje"
+
+#~ msgid "&Quit"
+#~ msgstr "&Salir"
+
+#~ msgid "Ctrl+Q"
+#~ msgstr "Ctrl+S"
+
+#~ msgid "Nothing is happening..."
+#~ msgstr "No pasa nada..."
+
+#~ msgid "Just idling..."
+#~ msgstr "Toy haciendo el vago..."
+
+#~ msgid "Dum de dum de dum..."
+#~ msgstr "Dum de dum de dum..."
+
+#~ msgid "Hey man... do something!"
+#~ msgstr "Vamos hombre... �haz algo!"
+
+#~ msgid "Umpf!"
+#~ msgstr "�Umpf!"
+
+#~ msgid "Silence speaking"
+#~ msgstr "Hablando en silencio"
+
+#~ msgid "Are ya here?"
+#~ msgstr "�Tas ah�?"
+
+#~ msgid "The world has stopped?"
+#~ msgstr "�Se ha parado el mundo?"
+
+#~ msgid "Everything is all right"
+#~ msgstr "Todo va bien"
+
+#~ msgid "idle()"
+#~ msgstr "vagueando()"
+
+#~ msgid "It's so cold here..."
+#~ msgstr "Hace tanto fr�o aqu�..."
+
+#~ msgid "Do not disturb... watching TV"
+#~ msgstr "No molestar... viendo la tele"
+
+#~ msgid "Just vegetating"
+#~ msgstr "Toy vegetando"
+
+#~ msgid "Hey... are ya sure that your network is up?"
+#~ msgstr "Eh... �Est�s seguro de que la red funciona?"
+
+#~ msgid "Seems like the world has stopped spinning"
+#~ msgstr "Parece que el mundo ha dejado de girar"
+
+#~ msgid "This silence is freaking me out!"
+#~ msgstr "�Este silencio me est� volviendo loco!"
+
+#~ msgid "Mieeeeeowww!"
+#~ msgstr "�Miauuuuuuu!"
+
+#~ msgid "idle idle idle idle!"
+#~ msgstr "�parao parao parao parao!"
+
+#~ msgid "Hide Window"
+#~ msgstr "Esconder Ventana"
+
+#~ msgid "Show Window"
+#~ msgstr "Mostrar Ventana"
+
+#~ msgid "A really lame text transformation engine :D"
+#~ msgstr "Un motor de transformaci�n de texto verdaderamente simple :D"
+
+#~ msgid "A really lame text transformation engine: Light Version."
+#~ msgstr ""
+#~ "Un motor de transformaci�n de texto verdaderamente simple: Versi�n Light."
+
+#~ msgid "The window with id '%s' does not exist"
+#~ msgstr "La ventana con id '%s' no existe"
+
+#~ msgid "Window type or 'all' expected as first parameter"
+#~ msgstr "Tipo de ventana o 'todas' se esperaba como primer par�metro"
+
+#~ msgid "Invalid IRC context id '%Q'"
+#~ msgstr "Id '%Q' de contexto de IRC no v�lido"
+
+#~ msgid ""
+#~ "The specified IRC context is not valid: creating a context free window"
+#~ msgstr ""
+#~ "El contexto de IRC especificado no es v�lido: creando una ventana libre "
+#~ "de contexto"
+
+#~ msgid "The specified window is not of type \"userwnd\""
+#~ msgstr "La ventana especificada no es de tipo \"userwnd\""
+
+#~ msgid "Window doesn't have input widget"
+#~ msgstr "La ventana no tiene un widget de entrada"
+
+#~ msgid "Background not found %Q "
+#~ msgstr "Fondo no encontrado %Q"
+
+#~ msgid "Pixmap objects required !"
+#~ msgstr "� Necesita un objeto Pixmap !"
+
+#~ msgid "Pixmap is null"
+#~ msgstr "Pixmap nulo"
+
+#~ msgid "Both -n and -m switchess specified, -n takes precedence"
+#~ msgstr "Se especificaron los modificadores -n y -m, -n tiene preferencia"
+
+#~ msgid "Failed to allocate the specified crypt engine"
+#~ msgstr "Fall� la carga del motor de cifrado especificado"
+
+#~ msgid "This executable has been compiled without crypt support"
+#~ msgstr "Este ejecutable se compil� sin soporte de cifrado SSL"
+
+#~ msgid "User Registration Wizard - KVIrc"
+#~ msgstr "Asistente de Registro de usuarios - KVIrc"
+
+#~ msgid ""
+#~ "<p>Welcome to the user registration wizard.<br>This process allows you to "
+#~ "add an IRC user to the database and set properties for that user. KVIrc "
+#~ "will be (hopefully) able to recognize the user, add him to the notify "
+#~ "list, and display the associated avatar.<br><br>First of all, you must "
+#~ "insert an <b>entry name or real name</b> for the user you're going to "
+#~ "register. The name will be used to identify the database entry and has no "
+#~ "specific requirements, it can be a given name, nickname, or just some "
+#~ "text to remind you of the real person.<br>Examples: \"George W Bush\", "
+#~ "\"Dubya\".\n"
+#~ "</p>"
+#~ msgstr ""
+#~ "<p>Bienvenido al asistente de usuarios registrados.<br>Este proceso te "
+#~ "permite a�adir un usuario IRC a la base de datos de KVIrc y configurar "
+#~ "algunas de sus propiedades. KVIrc ser� capaz (afortunadamente) de "
+#~ "reconocer el usuario, a�adirlo a la lista de notificaciones y mostrar su "
+#~ "avatar asociado.<br><br>Primeramente, debes escribir el <b>nombre de la "
+#~ "entrada o el nombre real</b> del usuario que vas a registrar. El nombre "
+#~ "ser� usado para identificar la entrada de la base de datos y no tiene "
+#~ "ning�n requerimiento espec�fico, puede ser un nombre, un nick o solo un "
+#~ "texto que te recuerde a la persona.<br>Ejemplos: \"Lorena Bernal\", "
+#~ "\"Mamifufi\".\n"
+#~ "</p>"
+
+#~ msgid "Step 1: Entry Name"
+#~ msgstr "Paso 1: Nombre Entrada"
+
+#~ msgid ""
+#~ "<p>A registered user is identified by one or more <b>IRC masks</b>.<br>A "
+#~ "mask must be in the following form:<br><b>nickname!username@hostname</"
+#~ "b><br>and can contain wildcard characters '*' and '?'. Be careful in "
+#~ "choosing the masks, as they are the only way to verify the identity of a "
+#~ "registered user.<br><br>You can enter at most two masks here, if you wish "
+#~ "to add more masks, use the \"<b>Edit</b>\" button in the Registered Users "
+#~ "dialog. You must enter at least one mask.</p>"
+#~ msgstr ""
+#~ "<p>Un usuario registrado es identificado por una o m�s <b>m�scaras de "
+#~ "IRC</b>.<br>Una m�scara debe cumplir con el siguiente formato:<br><b>nick!"
+#~ "nombre_usuario@m�quina</b><br>y puede contener los comodines '*' y '?'.S� "
+#~ "cuidadoso al escoger las m�scaras: son el �nico m�todo para verificar la "
+#~ "identidad de un usuario registrado.<br><br>Puedes introducir hasta dos "
+#~ "m�scaras; si deseas a�adir m�s, utiliza el bot�n \"<b>Editar</b>\" en el "
+#~ "di�logo de Usuarios Registrados. Debes poner como m�nimo una m�scara.</p>"
+
+#~ msgid "Step 2: Mask Selection"
+#~ msgstr "Paso 2: Selecci�n de m�scara"
+
+#~ msgid ""
+#~ "<p>If you want to store an avatar image for this user, you can set it "
+#~ "here. KVIrc will show the avatar in the userlist next to the user's "
+#~ "nickname.<br>An avatar can be in any supported image format (PNG is "
+#~ "recommended). Keep in mind that KVIrc stores avatars in memory and has to "
+#~ "resize them to fit in the userlist, thus it's better to use small, low-"
+#~ "resolution images.</p>"
+#~ msgstr ""
+#~ "<p>Si quieres almacenar una imagen de avatar para este usuario, puedes "
+#~ "ponerla aqu�. KVIrc lo mostrar� junto al nick en la lista de usuarios."
+#~ "<br>Un avatar puede estar en cualquier formato de imagen reconocido (se "
+#~ "recomienda PNG). Recuerda que KVIrc mantiene los avatares en memoria y "
+#~ "tiene que redimensionarlos para encajarlos en la lista de usuarios, de "
+#~ "modo que es mejor usar peque�as im�genes de baja resoluci�n.</p>"
+
+#~ msgid "Store an avatar for this user"
+#~ msgstr "Almacenar un avatar para este usuario"
+
+#~ msgid "Step 3: Avatar Selection"
+#~ msgstr "Paso 3: Selecci�n del Avatar"
+
+#~ msgid ""
+#~ "<p>If you want to be notified when this user is online or goes offline, "
+#~ "you must specify the list of nicknames that KVIrc will look for."
+#~ "<br><br>You can enter at most two nicknames here, if you wish to add more "
+#~ "nicknames, use the \"<b>Edit</b>\" button in the Registered Users dialog."
+#~ "</p>"
+#~ msgstr ""
+#~ "<p>Si deseas ser avisado cuando este usuario se conecte o desconecte, "
+#~ "debes especificar la lista de nicks en la que lo buscar� KVIrc."
+#~ "<br><br>Puedes introducir hasta dos nicks aqu�; si deseas a�adir m�s, "
+#~ "utiliza el bot�n \"<b>Editar</b>\" en el Di�logo de Usuarios Registrados."
+#~ "</p>"
+
+#~ msgid "Add this user to the notify list"
+#~ msgstr "A�adir este usuario a la lista de notificaciones"
+
+#~ msgid "Nickname 2:"
+#~ msgstr "Nick 2:"
+
+#~ msgid "Step 4: Notify List"
+#~ msgstr "Paso 4: Lista de Notificaciones"
+
+#~ msgid ""
+#~ "<p>That's it. The user registration has been completed.<br><br>Click "
+#~ "\"<b>Finish</b>\" to close this dialog.</p>"
+#~ msgstr ""
+#~ "<p>Esto es todo.El registro del usuario se realiz� correctamente."
+#~ "<br><br>Pulsa \"Finalizar\" para cerrar este di�logo.</p>"
+
+#~ msgid "Registration Complete"
+#~ msgstr "Registro completado"
+
+#~ msgid "User already registered: found exact name match"
+#~ msgstr ""
+#~ "Usuario ya registrado: se encontr� coincidencia exacta con el nombre"
+
+#~ msgid "Mask %Q is already used to identify user %s"
+#~ msgstr "La m�scara %Q ya se usa para identificar al usuario %s"
+
+#~ msgid "User not found (%Q)"
+#~ msgstr "Usuario no encontrado (%Q)"
+
+#~ msgid "No mask specified"
+#~ msgstr "M�scara no especificada"
+
+#~ msgid "User %Q not found"
+#~ msgstr "Usuario %Q no encontrado"
+
+#~ msgid "Mask %Q already used to identify user %Q"
+#~ msgstr "M�scara %Q ya usada para identificar al usuario %Q"
+
+#~ msgid "Mask %Q not found"
+#~ msgstr "M�scara %Q no encontrada"
+
+#~ msgid "No property specified"
+#~ msgstr "No se especific� propiedad"
+
+#~ msgid "Registered users database dump:"
+#~ msgstr "Volcado de usuarios registrados de la base de datos:"
+
+#~ msgid " User: %c%Q"
+#~ msgstr "Usuario: %c%Q"
+
+#~ msgid " Warning: this user has no registration masks"
+#~ msgstr " Atenci�n: este usuario no tiene m�scaras de registro"
+
+#~ msgid " Mask: %Q!%Q@%Q"
+#~ msgstr " M�scara: %Q!%Q@%Q"
+
+#~ msgid " Property: %Q=%Q"
+#~ msgstr " Propiedad: %Q=%Q"
+
+#~ msgid " No properties"
+#~ msgstr " Sin propiedades"
+
+#~ msgid "Total: %d matching users (of %d in the database)"
+#~ msgstr "Total: %d usuarios coincidentes (de %d en la base de datos)"
+
+#~ msgid "Property Editor"
+#~ msgstr "Editor de Propiedades"
+
+#~ msgid "Property"
+#~ msgstr "Propiedad"
+
+#~ msgid "Mask Editor"
+#~ msgstr "Editor de M�scaras"
+
+#~ msgid ""
+#~ "Insert a mask for this user.<br>It can contain the wildcard characters "
+#~ "'*' and '?'."
+#~ msgstr ""
+#~ "Inserta una m�scara para este usuario.<br>Esta puede contener '*' y '?' "
+#~ "como car�cteres comod�n."
+
+#~ msgid ""
+#~ "<center>This the <b>nickname</b> that will match this user, default value "
+#~ "is the registered name.</center>"
+#~ msgstr ""
+#~ "<center>Este es el <b>nick</b> que coincidir� con este usuario, el valor "
+#~ "por defecto es el nombre registrado.</center>"
+
+#~ msgid ""
+#~ "<center>This the <b>username</b> that will match this user. <b>*</b> will "
+#~ "match any username.</center>"
+#~ msgstr ""
+#~ "<center>Este es el <b>nombre de usuario</b> que coincidir� con este "
+#~ "usuario. <b>*</b> coincidir� con cualquier nombre de usuario.</center>"
+
+#~ msgid ""
+#~ "<center>This the <b>hostname</b> that will match this user. <b>*</b> will "
+#~ "match any hostname.</center>"
+#~ msgstr ""
+#~ "<center>Este es el <b>nombre de m�quina</b> que coincidir� con este "
+#~ "usuario. <b>*</b> coincidir� con cualquier nombre de m�quina.</center>"
+
+#~ msgid "Registered User Entry"
+#~ msgstr "Entrada de Usuarios Registrados"
+
+#~ msgid "Name:"
+#~ msgstr "Nombre:"
+
+#~ msgid "Masks:"
+#~ msgstr "M�scaras:"
+
+#~ msgid "&Add..."
+#~ msgstr "&A�adir..."
+
+#~ msgid "&Edit"
+#~ msgstr "&Editar"
+
+#~ msgid "Notify when user is online"
+#~ msgstr "Notificar cuando el usuario est� conectado"
+
+#~ msgid "Notify nicknames:"
+#~ msgstr "Notificar nicks:"
+
+#~ msgid "<center>You can enter a space separated list of nicknames.</center>"
+#~ msgstr ""
+#~ "<center>Puedes entrar una lista de nicks separados por espacios.</center>"
+
+#~ msgid "All Properties..."
+#~ msgstr "Todas las propiedades ..."
+
+#~ msgid "Registered Users - KVIrc"
+#~ msgstr "Usuarios registrados - KVIrc"
+
+#~ msgid "Name"
+#~ msgstr "Nombre"
+
+#~ msgid "Notify"
+#~ msgstr "Notificar"
+
+#~ msgid ""
+#~ "<center>This is the list of registered users. KVIrc can automatically "
+#~ "recognize and associate properties to them.<br>Use the buttons on the "
+#~ "right to add, edit and remove entries. The \"notify\" column allows you "
+#~ "to quickly add users to the notify list. Notify list fine-tuning can be "
+#~ "performed by editing the entry properties.</center>"
+#~ msgstr ""
+#~ "<center>Esta es la lista de usuarios registrados. KVIrc puede reconocer y "
+#~ "asociarles propiedades de forma autom�tica.<br>Usa los botones de la "
+#~ "derecha para a�adir, editar o borrar entradas.<br>La columna \"notificar"
+#~ "\" te permite a�adir usuarios a la lista de notificaciones r�pidamente. "
+#~ "El ajuste de la lista de notificaciones puede hacerse editando la entrada "
+#~ "de propiedades.</center>"
+
+#~ msgid "Add (Wizard)..."
+#~ msgstr "A�adir (asistente)..."
+
+#~ msgid "Add a registered user by means of a user-friendly wizard."
+#~ msgstr "A�adir un usuario registrado por medio de un amigable asistente."
+
+#~ msgid "Open the edit dialog to create a new user entry."
+#~ msgstr ""
+#~ "Abrir el di�logo de edici�n para crear una nueva entrada de usuario."
+
+#~ msgid "Remove the currently selected entries."
+#~ msgstr "Borrar las entradas actualmente seleccionadas."
+
+#~ msgid "&Edit..."
+#~ msgstr "&Editar..."
+
+#~ msgid "Edit the first selected entry."
+#~ msgstr "Este bot�n permitir� editar la primera entrada seleccionada."
+
+#~ msgid "Export To..."
+#~ msgstr "Exportar a..."
+
+#~ msgid ""
+#~ "Export the selected entries to a file.<br>All the data associated with "
+#~ "the selected registered users will be exported.<br>You (or anyone else) "
+#~ "can later import the entries by using the \"Import\" button."
+#~ msgstr ""
+#~ "Exporta las entradas seleccionadas a un archivo.<br>Todos los datos "
+#~ "asociados a los usuarios registrados seleccionados ser�n exportados."
+#~ "<br>Usted, o cualquier otro, puede importar las entradas m�s tarde usando "
+#~ "el bot�n \"Importar\"."
+
+#~ msgid "Import From..."
+#~ msgstr "Importar Desde..."
+
+#~ msgid ""
+#~ "Import entries from a file exported earlier by the \"export\" function of "
+#~ "this dialog."
+#~ msgstr ""
+#~ "Importa las entradas desde un archivo exportado anteriormente por la "
+#~ "funci�n \"Exportar\" de este di�logo."
+
+#~ msgid "No entries selected."
+#~ msgstr "No hay entradas seleccionadas."
+
+#~ msgid "Can't open file %s for writing."
+#~ msgstr "No puedo abrir el archivo %s para escribir."
+
+#~ msgid "Can't export the registered users database: Write error."
+#~ msgstr ""
+#~ "No se pudo exportar la base de datos de usuarios registrados: Error de "
+#~ "escritura."
+
+#~ msgid "Can't open file %s for reading."
+#~ msgstr "No puedo abrir el archivo %s para lectura."
+
+#~ msgid "The file %s doesn't appear to be a valid registered users database."
+#~ msgstr ""
+#~ "El archivo %s no parece ser una base de datos de usuarios registrados "
+#~ "v�lida."
+
+#~ msgid "The file %s contains an invalid registered users database version."
+#~ msgstr ""
+#~ "El archivo %s contiene una versi�n no v�lida de la base de datos de "
+#~ "usuarios registrados."
+
+#~ msgid "Can't import the registered users database: Read error."
+#~ msgstr ""
+#~ "No se pudo importar la base de datos de usuarios registrados: Error de "
+#~ "lectura."
+
+#~ msgid "Drop here the icons from the toolbars to remove them"
+#~ msgstr ""
+#~ "Soltar aqu� los iconos desde la barra de herramientas para eliminarlos"
+
+#~ msgid "ToolBar Properties"
+#~ msgstr "Propiedades de Barra de herramientas"
+
+#~ msgid "Id"
+#~ msgstr "Id"
+
+#~ msgid "Please choose the icon for the ToolBar"
+#~ msgstr "Por favor, escoja el icono para la Barra de Herramientas"
+
+#~ msgid "Invalid ToolBar Label"
+#~ msgstr "Etiqueta de Barra de Herramientas no v�lida"
+
+#~ msgid "The ToolBar Label can't be empty!"
+#~ msgstr "�La etiqueta de la barra de herramientas no puede estar vac�a!"
+
+#~ msgid "Duplicate ToolBar Id"
+#~ msgstr "Id de Barra de Herramientas duplicado"
+
+#~ msgid ""
+#~ "The specified ToolBar Id already exists.<br>Would you like KVIrc to "
+#~ "assign it automatically (so it doesn't collide with any other toolbar) or "
+#~ "you prefer to do it manually ?"
+#~ msgstr ""
+#~ "El Id de barra de herramientas especificado ya existe.<br>�Quieres que "
+#~ "KVIrc asigne uno autom�ticamente (para que no coincida con alguna otra "
+#~ "barra de herramientas) o prefieres hacerlo manualmente?"
+
+#~ msgid "Manually"
+#~ msgstr "Manualmente"
+
+#~ msgid "Automatically"
+#~ msgstr "Autom�ticamente"
+
+#~ msgid "Hide Advanced"
+#~ msgstr "Esconder Avanzado"
+
+#~ msgid "Customize Toolbars"
+#~ msgstr "Barras de Herramientas personalizadas"
+
+#~ msgid "New ToolBar"
+#~ msgstr "Nueva Barra de herramientas"
+
+#~ msgid "Delete ToolBar"
+#~ msgstr "Borrar Barra de Herramientas"
+
+#~ msgid "Edit ToolBar"
+#~ msgstr "Editar Barra de Herramientas"
+
+#~ msgid "Export ToolBar"
+#~ msgstr "Exportar Barra de Herramientas"
+
+#~ msgid "Confirm ToolBar Deletion"
+#~ msgstr "Confirmar el Borrado de la Barra de Herramientas"
+
+#~ msgid "Do you really want to delete toolbar \"%1\" ?"
+#~ msgstr "�Realmente quieres borrar la barra de herramientas \"%1\" ?"
+
+#~ msgid "ToolBar Export"
+#~ msgstr "Exportar de Barra de herramientas"
+
+#~ msgid "Do you want the associated actions to be exported with the toolbar ?"
+#~ msgstr ""
+#~ "�Quieres que las acciones asociadas sean exportadas con la barra de "
+#~ "herramientas?"
+
+#~ msgid "Unable to write to the toolbar file."
+#~ msgstr "No fu� posible escribir en el archivo de barra de herramientas."
+
+#~ msgid "Please specify the properties for the toolbar \"%1\""
+#~ msgstr ""
+#~ "Por favor, especifica las propiedades de la barra de herramientas \"%1\""
+
+#~ msgid "Please specify the properties for the new toolbar"
+#~ msgstr ""
+#~ "Por favor, especifica las propiedades de la nueva barra de herramientas"
+
+#~ msgid "My ToolBar"
+#~ msgstr "Mi Barra de Herramientas"
+
+#~ msgid "Terminal emulator"
+#~ msgstr "Emulador de terminal"
+
+#~ msgid "Close this window"
+#~ msgstr "Cerrar esta ventana"
+
+#~ msgid "Can't create the terminal emulation part"
+#~ msgstr "No puedo crear la parte de emulaci�n de terminal"
+
+#~ msgid "Can't retrieve the terminal emulation factory"
+#~ msgstr "No puedo recuperar la factor�a de emulaci�n de terminal"
+
+#~ msgid "Terminal"
+#~ msgstr "Terminal"
+
+#~ msgid "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+#~ msgstr "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+
+#~ msgid "This window has no associated irc context"
+#~ msgstr "Esta ventana no tiene contexto de irc asociado"
+
+#~ msgid "No such irc context (%d)"
+#~ msgstr "No existe el contexto irc (%d)"
+
+#~ msgid "Internal unique name for the action"
+#~ msgstr "Nombre interno �nico para la acci�n"
+
+#~ msgid "Label:"
+#~ msgstr "Etiqueta:"
+
+#~ msgid ""
+#~ "Visible name for this action.<br>This string will be displayed to the "
+#~ "user so it is a good idea to use $tr() here"
+#~ msgstr ""
+#~ "Nombre visible para esta acci�n.<br>Esta cadena ser� mostrada al usuario, "
+#~ "por eso es una buena idea usar $tr() aqu�"
+
+#~ msgid "Action code"
+#~ msgstr "C�digo de la acci�n"
+
+#~ msgid "Code"
+#~ msgstr "C�digo"
+
+#~ msgid "Category:"
+#~ msgstr "Categor�a:"
+
+#~ msgid "Choose the category that best fits for this action"
+#~ msgstr "Escoge la categor�a que mejor encaja para esta acci�n"
+
+#~ msgid ""
+#~ "Visible short description for this action.<br>This string will be "
+#~ "displayed to the user so it is a good idea to use $tr() here"
+#~ msgstr ""
+#~ "Descripci�n corta visible para esta acci�n.<br>Esta cadena ser� mostrada "
+#~ "al usuario, por ello es buena idea usar $tr() aqu�"
+
+#~ msgid "Small Icon:"
+#~ msgstr "Icono Peque�o:"
+
+#~ msgid ""
+#~ "The small icon associated to this action.<br>It will appear at least in "
+#~ "the popup menus when this action is inserted.<br>It should be 16x16 "
+#~ "pixels."
+#~ msgstr ""
+#~ "Peque�o icono asociado a esta acci�n.<br>Aparecer� al menos en los men�s "
+#~ "emergentes cuando se inserte esta acci�n.<br>Deber�a ser de 16x16 pixels."
+
+#~ msgid "Big Icon:"
+#~ msgstr "Icono Grande:"
+
+#~ msgid ""
+#~ "The big icon associated to this action.<br>It will appear at least in the "
+#~ "toolbar buttons when this action is inserted.<br>It should be 32x32 "
+#~ "pixels."
+#~ msgstr ""
+#~ "Icono grande asociado a esta acci�n.<br>Aparecer� al menos en los botones "
+#~ "de los men�s emergentes cuando se inserte esta acci�n.<br>Deber�a ser de "
+#~ "32x32 pixels."
+
+#~ msgid "Key Sequence:"
+#~ msgstr "Secuencia de teclas:"
+
+#~ msgid ""
+#~ "Optional keyboard sequence that will activate this action.<br>The "
+#~ "sequence should be expressed as a string of up to four key codes "
+#~ "separated by commas eventually combined with the modifiers \"Ctrl\","
+#~ "\"Shift\",\"Alt\" and \"Meta\".<br>Examples of such sequences are \"Ctrl+X"
+#~ "\", \"Ctrl+Alt+Z\", \"Ctrl+X,Ctrl+C\" ..."
+#~ msgstr ""
+#~ "Secuencia de teclado opcional que activar� esta acci�n.<br>La secuencia "
+#~ "deber�a ser expresada como una cadena de hasta cuatro c�digos de tecla "
+#~ "separados por comas y eventualmente combinado con los modificadores \"Ctrl"
+#~ "\", \"May\", \"Alt\" y \"Alt Gr\".<br>Ejemplos de dichas secuencias son "
+#~ "\"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl-X,Ctrl-C\" ..."
+
+#~ msgid "Needs IRC Context"
+#~ msgstr "Necesita un Contexto de IRC"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window belongs to an irc context"
+#~ msgstr ""
+#~ "Activa esta opci�n si esta acci�n deber�a ser habilitada unicamente "
+#~ "cuando la ventana activa pertenezca a un contexto de IRC"
+
+#~ msgid "Needs IRC Connection"
+#~ msgstr "Necesita una Conexi�n de IRC"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window has an active IRC connection"
+#~ msgstr ""
+#~ "Activa esta opci�n si esta acci�n deber�a ser habilitada unicamente "
+#~ "cuando la ventana actual tenga una conexi�n de IRC activa"
+
+#~ msgid "Enable at Login"
+#~ msgstr "Habilitar al entrar"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled also during the login "
+#~ "operations (so when the logical IRC connection hasn't been estabilished "
+#~ "yet)"
+#~ msgstr ""
+#~ "Activa esta opci�n si esta acci�n deber�a ser habilitada tambi�n durante "
+#~ "las operaciones de entrada (es decir, cuando la conexi�n l�gica al IRC no "
+#~ "ha sido establecida todav�a)"
+
+#~ msgid "Enable Only in Specified Windows"
+#~ msgstr "Habilitar unicamente en Ventanas Especificadas"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window is of a specified type"
+#~ msgstr ""
+#~ "Habilita esta opci�n si esta acci�n deber�a ser activada solo cuando la "
+#~ "ventana actual es de un tipo espec�ficado"
+
+#~ msgid "Enable in Console Windows"
+#~ msgstr "Habilitar en Ventanas de Consola"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window is a console"
+#~ msgstr ""
+#~ "Habilita esta opci�n si esta acci�n deber�a estar activada solo cuando la "
+#~ "ventana activa es una consola"
+
+#~ msgid "Only If There Are Selected Users"
+#~ msgstr "Solo si hay usuarios seleccionados"
+
+#~ msgid ""
+#~ "This will enable the action only if there are selected users in the "
+#~ "active window"
+#~ msgstr ""
+#~ "Esto activar� la opci�n �nicamente si hay usuarios seleccionados en "
+#~ "laventana activa"
+
+#~ msgid "Enable in Channel Windows"
+#~ msgstr "Habilitar en Ventanas de Canal"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window is a channel"
+#~ msgstr ""
+#~ "Activa esta opci�n si esta acci�n solo deber�a permitirse cuando la "
+#~ "ventana activa sea un canal"
+
+#~ msgid "Enable in Query Windows"
+#~ msgstr "Habilitar en Ventanas de Privados"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window is a query"
+#~ msgstr ""
+#~ "Activa esta opci�n si esta acci�n solo deber�a permitirse cuando la "
+#~ "ventana activa es un privado"
+
+#~ msgid "Enable in DCC Chat Windows"
+#~ msgstr "Habilitar en Ventanas de Chat DCC"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window is a dcc chat"
+#~ msgstr ""
+#~ "Activa esta opci�n si esta acci�n solo deber�a permitirse cuando la "
+#~ "ventana activa sea un chat DCC"
+
+#~ msgid "Flags"
+#~ msgstr "Indicadores"
+
+#~ msgid "Action"
+#~ msgstr "Acci�n"
+
+#~ msgid "New Action"
+#~ msgstr "Nueva Acci�n"
+
+#~ msgid "Delete Actions"
+#~ msgstr "Borrar Acciones"
+
+#~ msgid "Export Actions..."
+#~ msgstr "Exportar Acciones..."
+
+#~ msgid "My Action"
+#~ msgstr "Mis Acciones"
+
+#~ msgid "Put here a short description of your action"
+#~ msgstr "Pon aqu� una breve descripci�n de tu acci�n"
+
+#~ msgid "Action Editor"
+#~ msgstr "Editor de Acciones"
+
+#~ msgid "Apply"
+#~ msgstr "Aplicar"
+
+#~ msgid "Socket Spy [IRC Context %u]"
+#~ msgstr "Esp�a de Sockets [Contexto IRC %u]"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Socket Spy</b></font> <font color=\"%s\">[IRC "
+#~ "Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>Esp�a de Sockets</b></font> <font color=\"%s"
+#~ "\">[Contexto IRC %u]</font></nobr>"
+
+#~ msgid "Socket open"
+#~ msgstr "Socket abierto"
+
+#~ msgid "Socket closed"
+#~ msgstr "Socket cerrado"
+
+#~ msgid "Sound file '%Q' not found"
+#~ msgstr "Archivo de sonido '%Q' no encontrado"
+
+#~ msgid "Unable to play sound '%Q'"
+#~ msgstr "No es posible reproducir el sonido '%Q'"
+
+#~ msgid "Sorry , I can't find a sound system to use on this machine"
+#~ msgstr ""
+#~ "Lo siento, no puedo encontrar un sistema de sonido para usar en esta "
+#~ "m�quina"
+
+#~ msgid "Sound system detected to: %s"
+#~ msgstr "Sistema de sonido detectado :%s"
+
+#~ msgid "Manage Script-Based Addons"
+#~ msgstr "Gestionar funcionalidades adicionales basadas en Script"
+
+#~ msgid "Configure"
+#~ msgstr "Configurar"
+
+#~ msgid "Show Help"
+#~ msgstr "Mostrar Ayuda"
+
+#~ msgid "Uninstall"
+#~ msgstr "Desinstalar"
+
+#~ msgid "Install Addon..."
+#~ msgstr "Instalar Funcionalidad Adicional..."
+
+#~ msgid "More Addons..."
+#~ msgstr "M�s Funcionalidades Adicionales..."
+
+#~ msgid "Do you really want to uninstall the addon \"%1\" ?"
+#~ msgstr "�Realmente quieres desinstalar la funcionalidad adicional \"%1\" ?"
+
+#~ msgid "Confirm addon uninstallation"
+#~ msgstr "Confirmar la desinstalaci�n de la funcionalidad adicional"
+
+#~ msgid "Please select the addon installation file"
+#~ msgstr ""
+#~ "Por favor, selecciona el archivo de instalaci�n de la "
+#~ "funcionalidadadicional"
+
+#~ msgid "%cAddon id %Q, version %Q%c"
+#~ msgstr "%cFuncionalidad id %Q, versi�n %Q%c"
+
+#~ msgid "Name: %Q"
+#~ msgstr "Nombre: %Q"
+
+#~ msgid "Description: %Q"
+#~ msgstr "Descripci�n: %Q"
+
+#~ msgid "Total: %d addons installed"
+#~ msgstr "Total: %d funcionalidades instaladas"
+
+#~ msgid "Uninstalling existing addon version %Q"
+#~ msgstr "Desinstalando la versi�n %Q de la funcionalidad adicional existente"
+
+#~ msgid "The addon \"%1\" does not exist"
+#~ msgstr "La funcionalidad adicional \"%1\" no existe"
+
+#~ msgid "The addon \"%1\" has no configure callback set"
+#~ msgstr ""
+#~ "La funcionalidad adicional \"%1\" no tiene definida una funcion de "
+#~ "configuracion"
+
+#~ msgid "The addon \"%1\" has no help callback set"
+#~ msgstr ""
+#~ "La funcionalidad adicional \"%1\" no tiene definida una funcion de ayuda"
+
+#~ msgid "The specified version \"%Q\" is not a valid version string"
+#~ msgstr "La versi�n especificada \"%Q\" no es una cadena de versi�n v�lida"
+
+#~ msgid "The specified KVIrc version \"%Q\" is not a valid version string"
+#~ msgstr ""
+#~ "La versi�n de KVIrc especificada \"%Q\" no es una cadena v�lida de versi�n"
+
+#~ msgid ""
+#~ "This KVIrc executable is too old to run this addon (minimum version "
+#~ "required is %Q)"
+#~ msgstr ""
+#~ "Este ejecutable de KVIrc es demasiado antiguo para ejecutar esta "
+#~ "funcionalidad adicional (la versi�n m�nima necesaria es %Q)"
+
+#~ msgid "Attempting to register addon \"%Q\" with version %Q"
+#~ msgstr ""
+#~ "Intentando registrar la funcionalidad adicional \"%Q\" con la versi�n %Q"
+
+#~ msgid ""
+#~ "The script addon \"%Q\" already exists with version %Q which is higher "
+#~ "than %Q"
+#~ msgstr ""
+#~ "El script de funcionalidad adicional \"%Q\" ya existe con la versi�n %Q "
+#~ "que es mayor que %Q"
+
+#~ msgid "Script registration failed"
+#~ msgstr "Fall� el registro del script"
+
+#~ msgid "Script succesfully registered"
+#~ msgstr "Script registrado satisfactoriamente"
+
+#~ msgid "Destinaion file exists: no copy made"
+#~ msgstr "El archivo de destino existe: no se hizo copia"
+
+#~ msgid "Failed to copy from %Q to %Q"
+#~ msgstr "Fallo al copiar desde %Q a %Q"
+
+#~ msgid ""
+#~ "Either the source doesn't exist or the destination can not be created"
+#~ msgstr "El origen no existe o el destino no puede ser creado"
+
+#~ msgid "Failed to write to file %Q: the destination couldn't be opened"
+#~ msgstr "Fall� la escritura al archivo %Q: el destino no puede ser abierto"
+
+#~ msgid "Destination file exists: file not renamed"
+#~ msgstr "El archivo de destino existe: no se renombr�"
+
+#~ msgid "Failed to rename %Q to %Q"
+#~ msgstr "Fallo al renombrar %Q a %Q"
+
+#~ msgid "Failed to make the directory %Q"
+#~ msgstr "Fallo al crear el directorio %Q"
+
+#~ msgid "Failed to remove the file %Q"
+#~ msgstr "Fallo al borrar el archivo %Q"
+
+#~ msgid "Failed to remove the directory %Q"
+#~ msgstr "Fallo al borrar el directorio %Q"
+
+#~ msgid "The specified directory does not exist '%Q'"
+#~ msgstr "El directorio especificado no existe '%Q'"
+
+#~ msgid "Can't open the file \"%Q\" for reading"
+#~ msgstr "No puedo abrir el archivo \"%Q\" para lectura"
+
+#~ msgid "Read error for file %Q"
+#~ msgstr "Error de lectura para el archivo %Q"
+
+#~ msgid ""
+#~ "Read error for file %Q (have been unable to read the requested size in "
+#~ "1000 retries)"
+#~ msgstr ""
+#~ "Error de lectura del archivo %Q (no se pudo leer el tama�o solicitado en "
+#~ "1000 reintentos)"
+
+#~ msgid "Can't open the file \"%Q\" for writing"
+#~ msgstr "No puedo abrir el archivo \"%Q\" en modo escritura"
+
+#~ msgid "Event"
+#~ msgstr "Evento"
+
+#~ msgid "Edit the event handler name."
+#~ msgstr "Editar el nombre del manejador de eventos."
+
+#~ msgid "&Enable Handler"
+#~ msgstr "Activar Manejador"
+
+#~ msgid "&Disable Handler"
+#~ msgstr "&Desactivar Manejador"
+
+#~ msgid "Re&move Handler"
+#~ msgstr "Eli&minar Manejador"
+
+#~ msgid "&Export Handler To..."
+#~ msgstr "&Exportar Manejador Como..."
+
+#~ msgid "&New Handler"
+#~ msgstr "&Nuevo Manejador"
+
+#~ msgid "default"
+#~ msgstr "por defecto"
+
+#~ msgid "none"
+#~ msgstr "nada"
+
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "\tEvent:\n"
+#~ "\t\t%s\n"
+#~ "\n"
+#~ "\tParameters:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "\tEvento:\n"
+#~ "\t\t%s\n"
+#~ "\n"
+#~ "\tPar�metros:\n"
+#~ "%s"
+
+#~ msgid "Unable to write to the event file."
+#~ msgstr "No fu� posible escribir en el archivo de eventos."
+
+#~ msgid "Unable to write to the events file."
+#~ msgstr "No fu� posible escribir en el archivo de eventos."
+
+#~ msgid "Event Editor"
+#~ msgstr "Editor de Eventos"
+
+#~ msgid "Default part message:"
+#~ msgstr "Mensaje de ausencia por defecto:"
+
+#~ msgid "Default quit message:"
+#~ msgstr "Mensaje de salida por defecto:"
+
+#~ msgid "Hide avatars in userlist"
+#~ msgstr "Esconder avatares en la lista de usuarios"
+
+#~ msgid "USERINFO reply:"
+#~ msgstr "Respuesta USERINFO:"
+
+#~ msgid ""
+#~ "<center>This is the CTCP USERINFO reply.<br>It can contain some "
+#~ "information about yourself.</center>"
+#~ msgstr ""
+#~ "<center> Esta es la respuesta a CTCP USERINFO.<br>Puede contener alguna "
+#~ "informaci�n acerca de ti mismo.</center>"
+
+#~ msgid "Show at startup"
+#~ msgstr "Mostrar al inicio"
+
+#~ msgid "Did you know..."
+#~ msgstr "Sab�a usted que..."
+
+#~ msgid "<b>Can't find any tip... :(</b>"
+#~ msgstr "<b>No se ha podido encontrar ning�n consejo... :(</b>"
+
+#~ msgid "Lag meter was not enabled"
+#~ msgstr "Medidor de retraso no fu� habilitado"
+
+#~ msgid "Ops.. internal error"
+#~ msgstr "Argh... error interno"
+
+#~ msgid "Manage File &Transfers"
+#~ msgstr "Gestionar &Transferencias de Archivos"
+
+#~ msgid "Password"
+#~ msgstr "Clave"
+
+#~ msgid "&Join"
+#~ msgstr "Unirse"
+
+#~ msgid "Show this window after connecting"
+#~ msgstr "Mostrar esta ventana despu�s de conectar"
+
+#~ msgid "Recent Channels"
+#~ msgstr "Canales Recientes"
+
+#~ msgid "Registered Channels"
+#~ msgstr "Canales Registrados"
+
+#~ msgid "Raw Event"
+#~ msgstr "Eventos Puros"
+
+#~ msgid "Edit the raw event handler name."
+#~ msgstr "Editar el nombre del manejador de evento puro."
+
+#~ msgid "&Add Raw Event..."
+#~ msgstr "&A�adir Eventos Puros..."
+
+#~ msgid "New Raw Event"
+#~ msgstr "Nuevo Evento Puro"
+
+#~ msgid "Enter the numeric code of the message (0-999)"
+#~ msgstr "Introduce el c�digo num�rico del mensaje (0-999)"
+
+#~ msgid "Unable to write to the raw event file."
+#~ msgstr "No fu� posible escribir en el archivo de eventos puros."
+
+#~ msgid "Unable to write to the raw events file."
+#~ msgstr "No fu� posible escribir en el archivo de eventos puros."
+
+#~ msgid "Raw Editor"
+#~ msgstr "Editor Puro"
+
+#~ msgid "%cCore action: %Q"
+#~ msgstr "%cAcci�n principal: %Q"
+
+#~ msgid "%cUser action: %Q"
+#~ msgstr "%cAcci�n de usuario: %Q"
+
+#~ msgid "Label: %Q"
+#~ msgstr "Etiqueta: %Q"
+
+#~ msgid "Category: %Q"
+#~ msgstr "Categor�a: %Q"
+
+#~ msgid "The action \"%1\" is disabled"
+#~ msgstr "La acci�n \"%1\" est� deshabilitada"
+
+#~ msgid "The action \"%1\" does not exist"
+#~ msgstr "La acci�n \"%1\" no existe"
+
+#~ msgid "The action \"%1\" is a core action and cannot be destroyed"
+#~ msgstr "La acci�n \"%1\" es una acci�n principal y no puede ser destru�da"
+
+#~ msgid "The switch -l requires -c"
+#~ msgstr "La opci�n -l necesita -c"
+
+#~ msgid ""
+#~ "The switch -s requires -w with a combination of flags 'c','x' and 'q'"
+#~ msgstr ""
+#~ "La opci�n -s necesita -w con una combinaci�n de indicadores 'c', 'x' y 'q'"
+
+#~ msgid ""
+#~ "The action \"%1\" is already defined as core action and cannot be "
+#~ "overridden"
+#~ msgstr ""
+#~ "La acci�n \"%1\" ya est� definida como una acci�n principal y no puede "
+#~ "ser sobreescrita"
+
+#~ msgid "&Execute"
+#~ msgstr "&Ejecutar"
+
+#~ msgid "Params:"
+#~ msgstr "Par�metros:"
+
+#~ msgid "Script Tester"
+#~ msgstr "Comprobador de Script"
+
+#~ msgid ""
+#~ "Broken slot '%s' in target object '%s' while emitting signal '%s' from "
+#~ "object '%s': disconnecting"
+#~ msgstr ""
+#~ "Slot '%s' erroneo en objeto destino '%s' mientras se emit�a la se�al '%s' "
+#~ "desde el objeto '%s': desconectando"
+
+#~ msgid ""
+#~ "No slot function '%s' exported by target object '%s' while emitting "
+#~ "signal '%s' from object '%s': disconnecting"
+#~ msgstr ""
+#~ "No hay una funci�n '%s' slot exportada por el objeto destino '%s' "
+#~ "mientras se emit�a la se�al '%s' desde el objeto '%s': desconectando"
+
+#~ msgid "Invalid timeout"
+#~ msgstr "Tiempo de expiraci�n no v�lido"
+
+#~ msgid "Invalid timer id"
+#~ msgstr "id de cron�metro no v�lido"
+
+#~ msgid "%cListing Qt Properties for widget object %s (%s)"
+#~ msgstr "%cEnumerando las Propiedades Qt para el objeto widget %s (%s)"
+
+#~ msgid "Properties class: %c%s%c"
+#~ msgstr "Propiedades de clase: %c%s%c"
+
+#~ msgid "Property: %c%s%c, type: %s"
+#~ msgstr "Propiedad: %c%s%c, tipo: %s"
+
+#~ msgid ", enum ("
+#~ msgstr ", enum ("
+
+#~ msgid ", set"
+#~ msgstr ", set"
+
+#~ msgid ", writeable"
+#~ msgstr ", writeable"
+
+#~ msgid "Oops... no such property: %s"
+#~ msgstr "Oops... no existe la propiedad: %s"
+
+#~ msgid "Not enough parameters"
+#~ msgstr "No hay suficientes par�metros"
+
+#~ msgid "No such QT property (%s)"
+#~ msgstr "No existe la propiedad QT (%s)"
+
+#~ msgid "missing parameter"
+#~ msgstr "falta par�metro"
+
+#~ msgid "Invalid parameter (%s)"
+#~ msgstr "Par�metro no v�lido (%s)"
+
+#~ msgid "Pixmap Object required"
+#~ msgstr "Necesita un objeto Pixmap"
+
+#~ msgid "Pixmap not found"
+#~ msgstr "Pixmap no encontrado"
+
+#~ msgid "Unsupported QT property (%s)"
+#~ msgstr "Propiedad QT no soportada (%s)"
+
+#~ msgid "Missing parameters"
+#~ msgstr "Faltan par�metros"
+
+#~ msgid "This window has no associated IRC context"
+#~ msgstr "Esta ventana no tiene contexto de IRC asociado"
+
+#~ msgid "Unknown"
+#~ msgstr "Desconocido"
+
+#~ msgid "[Parser warning in '%Q']: %Q"
+#~ msgstr "[Aviso del parser en '%Q']: %Q"
+
+#~ msgid "Can't find the multimedia file %s"
+#~ msgstr "No pude encontrar el archivo multimedia %s"
+
+#~ msgid "Missing target, no action taken"
+#~ msgstr "Falta el destino, no se realiz� ninguna acci�n"
+
+#~ msgid "Invalid timeout specified , using default"
+#~ msgstr ""
+#~ "Se especific� un valor de tiempo de expiraci�n no v�lido, usando valor "
+#~ "por defecto"
+
+#~ msgid "Can't add a file offer for file %s (huh ? file not readable ?)"
+#~ msgstr ""
+#~ "No puedo a�adir una oferta de archivo para %s (�archivo no legible?)"
+
+#~ msgid "Added %d secs file offer for file %s (%s) and receiver %s"
+#~ msgstr "A�adida la oferta de %d segs del archivo %s (%s) y receptor %s"
+
+#~ msgid "%s plays '%s'"
+#~ msgstr "%s reproduce '%s'"
+
+#~ msgid "%s plays '%s' to %s"
+#~ msgstr "%s reproduce '%s' para %s"
+
+#~ msgid "Error in command: %c%c%Q"
+#~ msgstr "Error en comando: %c%c%Q"
+
+#~ msgid "Error token: %c%Q"
+#~ msgstr "Error en palabra clave: %c%Q"
+
+#~ msgid "Parsing stopped at %cline %d , character %d"
+#~ msgstr "An�lisis detenido en %cl�nea %d , car�cter %d"
+
+#~ msgid " %s"
+#~ msgstr " %s"
+
+#~ msgid "Object scope: name (%s), class (%s)"
+#~ msgstr "Ambito de objeto: nombre (%s), clase (%s)"
+
+#~ msgid "Object scope: deleted object"
+#~ msgstr "Ambito de objeto: objeto borrado"
+
+#~ msgid "This pointer: name (%s), class (%s)"
+#~ msgstr "Puntero this: nombre (%s), clase (%s)"
+
+#~ msgid "This pointer: deleted object"
+#~ msgstr "Puntero this: objeto borrado"
+
+#~ msgid "Internal call stack:"
+#~ msgstr "Pila de llamadas interna:"
+
+#~ msgid ""
+#~ " Current command stack depth: %d frames (stopping output at 25th frame)"
+#~ msgstr ""
+#~ "Profundidad de la pila de comandos actual: %d cuadros (deteniendo la "
+#~ "salida en el marco 25)"
+
+#~ msgid " Parent command stack depth: %d frames"
+#~ msgstr " Profundidad de la pila de comandos del padre: %d marcos"
+
+#~ msgid "You are not connected to a server"
+#~ msgstr "No est� conectado a un servidor"
+
+#~ msgid "%s (module %s)"
+#~ msgstr "%s (m�dulo %s)"
+
+#~ msgid "Module '%s', Command '%s'"
+#~ msgstr "M�dulo '%s', Comando '%s'"
+
+#~ msgid "Can't rebind the command: window with id %s not found"
+#~ msgstr "No pude reasociar el comando: ventana con id '%s' no encontrada"
+
+#~ msgid ""
+#~ "Can't rebind the command: missing window identifier after the -r switch"
+#~ msgstr ""
+#~ "No pude reasociar el comando: perdido el identificador de ventana despu�s "
+#~ "del modificador -r"
+
+#~ msgid "Error triggered from raw event handler %c%s::%Q"
+#~ msgstr "Error lanzado desde el manejador de evento puro %c%s::%Q"
+
+#~ msgid "Error triggered from event handler %c%Q::%Q"
+#~ msgstr "Error lanzado desde el manejador de evento %c%Q::%Q"
+
+#~ msgid "Raw event handler %s::%Q is broken: disabling"
+#~ msgstr "El manejador de evento puro %s::%Q es erroneo: deshabilitando"
+
+#~ msgid "Event handler %Q::%Q is broken: disabling"
+#~ msgstr "El manejador de evento %Q::%Q es erroneo: deshabilitando"
+
+#~ msgid "Variable evaluated to \"%s\""
+#~ msgstr "Variable evaluada a \"%s\""
+
+#~ msgid "Module '%s', Function '%s'"
+#~ msgstr "M�dulo '%s', Funci�n '%s'"
+
+#~ msgid "Identifier evaluated to \"%s\""
+#~ msgstr "Identificador evaluado a \"%s\""
+
+#~ msgid ""
+#~ "The regular expression matched a zero-length substring: this is not valid "
+#~ "in the s/// operator"
+#~ msgstr ""
+#~ "La expresi�n regular coincidi� con una subcadena de longitud cero: esto "
+#~ "no es v�lido en el operador s///"
+
+#~ msgid "Skipping the substitution"
+#~ msgstr "Saltando la sustituci�n"
+
+#~ msgid "Left operand of operator %s (%s{%s}) is undefined : assuming 0"
+#~ msgstr ""
+#~ "El operando izquierdo del operador %s (%s{%s}) no est� definido : "
+#~ "asumiendo 0"
+
+#~ msgid "Left operand of operator %s (%s[%s]) is undefined : assuming 0"
+#~ msgstr ""
+#~ "El operando izquierdo del operador %s (%s[%s]) no est� definido : "
+#~ "asumiendo 0"
+
+#~ msgid "Left operand of operator %s (%s) is undefined : assuming 0"
+#~ msgstr ""
+#~ "El operando izquierdo del operador %s (%s) no est� definido : asumiendo 0"
+
+#~ msgid "Variable %s{%s} evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Variable %s{%s} evaluada como '%s' en operador %s (no es un n�mero)"
+
+#~ msgid "Variable %s[%s] evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Variable %s[%s] evaluada como '%s' en operador %s (no es un n�mero)"
+
+#~ msgid "Variable %s evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Variable %s evaluada como '%s' en operador %s (no es un n�mero)"
+
+#~ msgid "Right operand of operator %s evaluated to '%s' (not a number)"
+#~ msgstr ""
+#~ "El operando de la derecha del operador %s evaluado a '%s' (no es un "
+#~ "n�mero)"
+
+#~ msgid "operator %c%c"
+#~ msgstr "operador %c%c"
+
+#~ msgid "Can't unload the module: it has locked itself in memory"
+#~ msgstr "No puedo descargar el m�dulo: se ha bloqueado as� mismo en memoria"
+
+#~ msgid "Broken condition in menu setup: assuming false"
+#~ msgstr "Condici�n erronea en la configuraci�n del men�: asumiendo falso"
+
+#~ msgid "Broken icon parameter: ignoring"
+#~ msgstr "Par�metro de icono erroneo: ignorando"
+
+#~ msgid "Can't find the icon \"%Q\": ignoring"
+#~ msgstr "No puedo encontrar el icono \"%Q\": ignorando"
+
+#~ msgid "Broken text parameter: assuming empty string"
+#~ msgstr "Par�metro de texto erroneo: asumiendo la cadena vac�a"
+
+#~ msgid "Recursive definition detected for popup '%Q': ignoring"
+#~ msgstr ""
+#~ "Detectada definici�n recursiva para el men� emergente '%Q': ignorando"
+
+#~ msgid "Can't find the external popup '%Q'; ignoring"
+#~ msgstr "No puedo encontrar el men� emergente externo '%Q': ignorando"
+
+#~ msgid "Broken prologue in popup menu '%Q': ignoring"
+#~ msgstr "Pr�logo erroneo en men� emergente '%Q': ignorando"
+
+#~ msgid "Broken epilogue in popup menu '%Q': ignoring"
+#~ msgstr "Ep�logo erroneo en men� emergente '%Q': ignorando"
+
+#~ msgid "say: injected commandline"
+#~ msgstr "dice: l�nea de comando insertada"
+
+#~ msgid "Say parse error: Broken command"
+#~ msgstr "Dice error del analizador: comando erroneo"
+
+#~ msgid ""
+#~ "Couldn't find a suitable IRC context for the connection, try using -n or -"
+#~ "u"
+#~ msgstr ""
+#~ "No puedo encontrar un contexto de IRC satisfactorio para la conexi�n, "
+#~ "int�ntalo usando -n o -u"
+
+#~ msgid ""
+#~ "Another connection is already in progress in the selected IRC context"
+#~ msgstr ""
+#~ "Ya se est� realizando un intento de conexi�n desde el contexto IRC "
+#~ "seleccionado"
+
+#~ msgid "No menu bar item with text '%Q'"
+#~ msgstr "No existe el elemento de men� con el texto '%Q'"
+
+#~ msgid "Invalid index specified: ignored"
+#~ msgstr "Se especific� un �ndice no v�lido: ignorado"
+
+#~ msgid "The popup '%Q' is not defined"
+#~ msgstr "El men� emergente '%Q' no est� definido"
+
+#~ msgid "No target channel specified and the current window is not a channel"
+#~ msgstr ""
+#~ "No se especific� un canal de destino y la ventana actual no es un canal"
+
+#~ msgid "No catalogue %Q for the current language found"
+#~ msgstr "No se encontr� un cat�logo %Q para el lenguaje actual"
+
+#~ msgid "The catalogue %Q was not loaded"
+#~ msgstr "El cat�logo %Q no fu� cargado"
+
+#~ msgid "/me can be used only in channels, queries and DCC chat windows"
+#~ msgstr "/me solo puede ser usado en canales, privados y ventanas DCC chat"
+
+#~ msgid "Invalid IRC url (%Q)"
+#~ msgstr "url IRC no v�lida (%Q)"
+
+#~ msgid "The commandline for this url type seems to be broken (%Q)"
+#~ msgstr "La l�nea de comando para este tipo de url parece estar mal (%Q)"
+
+#~ msgid "No commandline specified for this type of url (%Q)"
+#~ msgstr "No se especific� l�nea de comando para este tipo de url (%Q)"
+
+#~ msgid ""
+#~ "Option setting error: Unknown option or invalid value for option type"
+#~ msgstr ""
+#~ "Error de configuraci�n de la opci�n: opci�n desconocida o valor no v�lido "
+#~ "para el tipo de opci�n"
+
+#~ msgid "Choose a file to parse"
+#~ msgstr "Escoja un archivo a analizar"
+
+#~ msgid "Failed to load the file '%Q' for parsing"
+#~ msgstr "Fall� la carga del archivo '%Q' para interpretar"
+
+#~ msgid "Missing channel list"
+#~ msgstr "Falta lista de canales"
+
+#~ msgid "You don't appear to be on channel %s"
+#~ msgstr "Usted no se encuentra en el canal %s"
+
+#~ msgid "Popup %Q is not defined"
+#~ msgstr "El men� emergente %Q no est� definido"
+
+#~ msgid "A popup menu cannot be popped up twice"
+#~ msgstr "Un men� emergente no puede mostrarse dos veces"
+
+#~ msgid "Invalid syntax for screen coordinates, using cursor position"
+#~ msgstr ""
+#~ "Sintaxis no v�lida para coordenadas de pantalla, usando la posici�n del "
+#~ "cursor"
+
+#~ msgid "Empty target specified"
+#~ msgstr "Se especific� un destino vac�o"
+
+#~ msgid "[RAW]: %Q"
+#~ msgstr "[PURO]:%Q"
+
+#~ msgid "Window with id %Q not found: no rebinding performed"
+#~ msgstr "Ventana con id %Q no encontrada: no se realiz� la reasociaci�n"
+
+#~ msgid "Failed to execute command '%Q'"
+#~ msgstr "Fallo al ejecutar el comando '%Q'"
+
+#~ msgid ""
+#~ "The argument of the array count '#' operator didn't evaluate to an array: "
+#~ "automatic conversion from type '%Q' supplied"
+#~ msgstr ""
+#~ "El argumento del operador contador del array '#' no se eval�a como un "
+#~ "array: se proporciona conversi�n autom�tica desde el tipo '%Q'"
+
+#~ msgid "Call to undefined function '%Q'"
+#~ msgstr "Llamada a la funci�n sin definir '%Q'"
+
+#~ msgid "Error in inner alias function call '%Q', called from this context"
+#~ msgstr ""
+#~ "Error en llamada a funci�n interna de alias '%Q', llamada desde este "
+#~ "contexto"
+
+#~ msgid "Stray dot ('.') character or invalid following module command name"
+#~ msgstr ""
+#~ "Car�cter punto ('.') sobrante o sigue un nombre de comando del m�dulo no "
+#~ "v�lido"
+
+#~ msgid "Syntax error: malformed module command identifier"
+#~ msgstr "Error de sintaxis: identificador de comando del m�dulo mal formado"
+
+#~ msgid "Stray '::' sequence or invalid following alias name"
+#~ msgstr "Secuencia '::' perdida o le sigue un nombre de alias no v�lido"
+
+#~ msgid "Syntax error: malformed alias identifier"
+#~ msgstr "Error de sintaxis: identificador de alias mal formado"
+
+#~ msgid "Stray ':' character: did you mean '...<namespace>::<alias_name>' ?"
+#~ msgstr ""
+#~ "Car�cter ':' perdido: �quer�a decir '...<namespace>::<nombre de alias>' ?"
+
+#~ msgid "Syntax error: malformed (alias?) command identifier"
+#~ msgstr "Error de sintaxis: identificador (�alias?) de comando mal formado"
+
+#~ msgid "Unknown callback command \"%Q\""
+#~ msgstr "Comando callback \"%Q\" desconocido"
+
+#~ msgid ""
+#~ "Timer name omitted but there is not current timer (this is not a timer "
+#~ "callback)"
+#~ msgstr ""
+#~ "Nombre de cron�metro omitido, pero no hay un cron�metro actual (esta no "
+#~ "es la callback de un cron�metro)"
+
+#~ msgid "Can't kill the timer '%Q' since it is not running"
+#~ msgstr "No puedo parar el cron�metro '%Q' porque no est� funcionando"
+
+#~ msgid "Hash reference assert failed: the variable evaluated to type '%Q'"
+#~ msgstr ""
+#~ "Fall� la verificaci�n de la referencia hash: la variable se evalu� como "
+#~ "de tipo '%Q'"
+
+#~ msgid "DNS Lookup result for query \"%s\""
+#~ msgstr "Resultado de la b�squeda DNS para la pregunta \"%s\""
+
+#~ msgid "Error: %Q"
+#~ msgstr "Error: %Q"
+
+#~ msgid "Hostname %d: %s"
+#~ msgstr "M�quina %d: %s"
+
+#~ msgid "IP address %d: %s"
+#~ msgstr "Direcci�n IP %d: %s"
+
+#~ msgid "Operand of unary operator didn't evaluate to a number"
+#~ msgstr "El operador unario no evalua a un n�mero"
+
+#~ msgid "Left operand didn't evaluate to a number"
+#~ msgstr "El operando de la izquierda no es un n�mero"
+
+#~ msgid "Right operand didn't evaluate to a number"
+#~ msgstr "El operando de la derecha no es un n�mero"
+
+#~ msgid "Division by zero"
+#~ msgstr "Division por cero"
+
+#~ msgid "Hash key evaluated to empty string: fix the script"
+#~ msgstr "Clave hash evaluada a una cadena vac�a: arregla el script"
+
+#~ msgid ""
+#~ "The argument of the {} subscript didn't evaluate to a hash: automatic "
+#~ "conversion from type '%Q' supplied"
+#~ msgstr ""
+#~ "El argumento del sub�ndice {} no se eval�a como un hash: se proporciona "
+#~ "conversi�n automatica desde el tipo '%Q'"
+
+#~ msgid ""
+#~ "The argument of the {} subscript didn't evaluate to a hash automatic "
+#~ "conversion from %Q supplied"
+#~ msgstr ""
+#~ "El argumento del sub�ndice {} no se eval�a como un hash, se proporciona "
+#~ "conversi�n automatica desde el tipo '%Q'"
+
+#~ msgid "Module function call failed: can't load the module '%Q'"
+#~ msgstr ""
+#~ "Fall� la llamada a la funci�n del m�dulo: no puedo cargar el m�dulo '%Q'"
+
+#~ msgid ""
+#~ "Module function call failed: the module '%Q' doesn't export a function "
+#~ "named '%Q'"
+#~ msgstr ""
+#~ "Fall� la llamada a la funci�n del m�dulo: el m�dulo '%Q' no exporta una "
+#~ "funci�n llamada '%Q'"
+
+#~ msgid "This window has no associated IRC context and is not a DCC chat"
+#~ msgstr "Esta ventana no tiene contexto de IRC asociado y no es un DCC"
+
+#~ msgid "Class \"%Q\" is not defined"
+#~ msgstr "La clase \"%Q\" no est� definida"
+
+#~ msgid "The specified parent object does not exist"
+#~ msgstr "Se ha especificado un objeto padre que no existe"
+
+#~ msgid "There is no option named '%Q'"
+#~ msgstr "No existe la opci�n llamada '%Q'"
+
+#~ msgid "No such IRC context (%u)"
+#~ msgstr "No existe el contexto de IRC (%u)"
+
+#~ msgid "This window is not associated to an IRC context"
+#~ msgstr "Esta ventana no est� asociada a un contexto de IRC"
+
+#~ msgid "Event handler %Q is broken: disabling"
+#~ msgstr "El manejador de evento %Q es erroneo: deshabilitando"
+
+#~ msgid "line %d, near character %d"
+#~ msgstr "l�nea %d, cerca del car�cter %d"
+
+#~ msgid "beginning of input"
+#~ msgstr "comienzo de la entrada"
+
+#~ msgid ""
+#~ "Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %"
+#~ "s\" for the command syntax"
+#~ msgstr ""
+#~ "Encontrado el car�cter '%q' (unicode 0x%x) donde se esperaba '%c': mira "
+#~ "\"/help %s\" para la sintaxis de los comandos"
+
+#~ msgid ""
+#~ "Found end of input where character '%c' was expected: see \"/help %s\" "
+#~ "for the command syntax"
+#~ msgstr ""
+#~ "Encontrado el final de la entrada donde se esperaba el car�cter '%c': "
+#~ "mira \"/help %s\" para la sintaxis del comando"
+
+#~ msgid "Empty script"
+#~ msgstr "Script vac�o"
+
+#~ msgid ""
+#~ "Syntax error after '%' variable prefix. If you want to use a plain '%' in "
+#~ "the code you need to escape it"
+#~ msgstr ""
+#~ "Error de sintaxis para el prefijo de variable '%'. Si quieres usar un "
+#~ "simple '%' en el c�digo necesitas escaparlo"
+
+#~ msgid "Objects have no extended scope variables"
+#~ msgstr "Los objetos no tienen variables de �mbito extendido"
+
+#~ msgid ""
+#~ "Declaring global variables with an uppercase letter is deprecated. Global "
+#~ "variables should be declared with 'global'"
+#~ msgstr ""
+#~ "Declarar variables globales con una letra may�scula es obsoleto. Las "
+#~ "variables globales deber�an ser declaradas con 'global'"
+
+#~ msgid "Found character '%q' (unicode %x) where an instruction was expected"
+#~ msgstr ""
+#~ "Se encontr� el car�cter '%q' (unicode %x) donde se esperaba una "
+#~ "instrucci�n"
+
+#~ msgid "Unterminated instruction block"
+#~ msgstr "Bloque de instrucciones sin terminar"
+
+#~ msgid ""
+#~ "Unexpected end of script in instruction block (missing closing brace)"
+#~ msgstr ""
+#~ "Fin de script inesperado en bloque de instrucciones (falta llave de "
+#~ "cierre)"
+
+#~ msgid ""
+#~ "The dash after a command should be followed by a letter (switch), by a "
+#~ "digit (negative number) or be escaped"
+#~ msgstr ""
+#~ "La barra despu�s de un comando deber�a ser seguida por una letra "
+#~ "(modificador), un d�gito (n�mero negativo) o ser escapado"
+
+#~ msgid "Unexpected character '%q' (unicode %x) after a switch dash"
+#~ msgstr "Car�cter inesperado '%q' (unicode %x) despu�s de barra de cambio"
+
+#~ msgid "Unexpected end of script after a switch dash"
+#~ msgstr "Fin de script inesperado despu�s de una barra de cambio"
+
+#~ msgid ""
+#~ "The above problem might be related to the switch dash and the following "
+#~ "equal sign"
+#~ msgstr ""
+#~ "El problema anterior puede estar relacionado con la barra de cambio y el "
+#~ "signo igual que le sigue"
+
+#~ msgid "Unexpected end of script in parameter list"
+#~ msgstr "Fin de script inesperado en lista de par�metros"
+
+#~ msgid "Unexpected end of line in parameter list"
+#~ msgstr "Fin de l�nea inesperado en lista de par�metros"
+
+#~ msgid ""
+#~ "Nested character %q corresponding to expected terminator, this might "
+#~ "confuse me a bit: it is a good idea to enclose it in quotes"
+#~ msgstr ""
+#~ "Car�cter anidado %q correspondiente al terminador esperado, esto puede "
+#~ "confundirme un poco: es una buena idea encerrarlo entre comillas"
+
+#~ msgid "Skipping nested terminator character %q"
+#~ msgstr "Saltando caracter terminador anidado %q"
+
+#~ msgid "Stray backslash at the end of the script"
+#~ msgstr "Barra atr�s perdida al final del script"
+
+#~ msgid "Unterminated hash key"
+#~ msgstr "Clave hash sin terminar"
+
+#~ msgid "Unexpected end of script in hash key (missing '}' character ?)"
+#~ msgstr "Fin de script inesperado en clave hash (�falta el car�cter '}'?)"
+
+#~ msgid ""
+#~ "Unexpected end of line in hash key (missing '}' character or unescaped "
+#~ "newline)"
+#~ msgstr ""
+#~ "Fin de l�nea inesperado en clave hash (falta el car�cter '}' o una nueva "
+#~ "l�nea sin escapar)"
+
+#~ msgid "Unterminated string constant"
+#~ msgstr "Constante de cadena sin terminar"
+
+#~ msgid "Unexpected end of script in string constant (missing \" character ?)"
+#~ msgstr ""
+#~ "Fin de script inesperado en constante de cadena (�falta el car�cter \"?)"
+
+#~ msgid ""
+#~ "Unexpected end of line in string constant (missing \" character or "
+#~ "unescaped newline)"
+#~ msgstr ""
+#~ "Fin de l�nea inesperado en constante de cadena (falta el car�cter \" o "
+#~ "una nueva l�nea sin escapar)"
+
+#~ msgid ""
+#~ "The specified format string wasn't accepted by the underlying system time "
+#~ "formatting function"
+#~ msgstr ""
+#~ "El formato de cadena especificado no fu� aceptado por la funci�n de "
+#~ "formateo de tiempo subyacente"
+
+#~ msgid "Unknown binary operator '=%q': did you mean '==' ?"
+#~ msgstr "Operador binario desconocido '=%q': �quer�as decir '==' ?"
+
+#~ msgid "Unknown binary operator '%q'"
+#~ msgstr "Operador binario desconocido '%q'"
+
+#~ msgid "Unexpected end of script in expression"
+#~ msgstr "Final inesperado de script en una expresi�n"
+
+#~ msgid ""
+#~ "Unexpected character %q (unicode %h) in expression. If it meant to be a "
+#~ "string use the quotes."
+#~ msgstr ""
+#~ "Car�cter inesperado %q (unicode %h) en expresi�n. Si pretende ser una "
+#~ "cadena deber�a estar entre comillas."
+
+#~ msgid ""
+#~ "Empty window identifier specified in the standard rebinding switch: no "
+#~ "rebinding performed"
+#~ msgstr ""
+#~ "Se especific� un identificador de ventana vac�o en el modificador "
+#~ "est�ndar de reenlace: no se realiz� el reenlace"
+
+#~ msgid ""
+#~ "Invalid window specified in the standard rebinding switch: no rebinding "
+#~ "performed"
+#~ msgstr ""
+#~ "Se especific� un identificador de ventana no v�lido en el modificador "
+#~ "est�ndar de reenlace: no se realiz� el reenlace"
+
+#~ msgid "Internal error: pure virtual evaluateReadOnly called"
+#~ msgstr "Error interno: se llam� al m�todo virtual puro evaluateReadOnly"
+
+#~ msgid ""
+#~ "Internal error: trying to evaluate as read-write a read-only data location"
+#~ msgstr ""
+#~ "Error interno: intentando evaluar una posici�n de datos de solo lectura "
+#~ "como de lectura-escritura"
+
+#~ msgid "Internal error: pure virtual evaluateReadOnlyInObjectScope called"
+#~ msgstr ""
+#~ "Error interno: se llam� al m�todo virtual puro "
+#~ "evaluateReadOnlyInObjectScope"
+
+#~ msgid "Error triggered from process callback handler: killing process"
+#~ msgstr ""
+#~ "Error lanzado desde el proceso de manejo de la callback: matando el "
+#~ "proceso"
+
+#~ msgid "This command can be used only in windows bound to an IRC context"
+#~ msgstr ""
+#~ "Este comando solo puede ser usado en ventanas asociadas a un contexto IRC"
+
+#~ msgid "You're not connected to an IRC server"
+#~ msgstr "No est� conectado a un servidor IRC"
+
+#~ msgid "Missing parameter"
+#~ msgstr "Falta par�metro"
+
+#~ msgid "Failed to send an unknown command as /raw"
+#~ msgstr "Fall� el env�o de un comando desconocido como /raw"
+
+#~ msgid "Call to undefined command '%Q'"
+#~ msgstr "Llamada a un comando sin definir '%Q'"
+
+#~ msgid "Error in inner alias command call '%Q', called from this context"
+#~ msgstr ""
+#~ "Error en comando de llamada a alias interno '%Q', llamado desde este "
+#~ "contexto"
+
+#~ msgid "Missing class name"
+#~ msgstr "Falta el nombre de clase"
+
+#~ msgid "Couln't find base class named \"%Q\""
+#~ msgstr "No puedo encontrar la clase base llamada \"%Q\""
+
+#~ msgid "Can't override the builtin class \"%Q\""
+#~ msgstr "No puedo sobrecargar la clase interna \"%Q\""
+
+#~ msgid "Window with ID '%s' not found, returning empty string"
+#~ msgstr "Ventana con ID '%s' no encontrada, devolviendo la cadena vac�a"
+
+#~ msgid "The specified window is not a channel"
+#~ msgstr "La ventana especificada no es un canal"
+
+#~ msgid "Module function call failed: can't load the module 'str'"
+#~ msgstr ""
+#~ "Fall� la llamada a la funci�n del m�dulo: no puedo cargar el m�dulo 'str'"
+
+#~ msgid ""
+#~ "Module function call failed: the module 'str' doesn't export a function "
+#~ "named 'split'"
+#~ msgstr ""
+#~ "Fall� la llamada a la funci�n: el m�dulo 'str' no exporta una funci�n "
+#~ "llamada 'split'"
+
+#~ msgid "The $sw() function can be used only in aliases"
+#~ msgstr "La funci�n $sw() solo puede usarse con alias"
+
+#~ msgid "Window with caption %Q not found"
+#~ msgstr "Ventana con t�tulo %Q no encontrada"
+
+#~ msgid "Array reference assert failed: the variable evaluated to type '%Q'"
+#~ msgstr ""
+#~ "Fall� la comprobaci�n de la referencia del array: la variable se evalu� "
+#~ "como de tipo '%Q'"
+
+#~ msgid "Module command call failed: can't load the module '%Q'"
+#~ msgstr ""
+#~ "Fall� la llamada al comando del m�dulo: no puedo cargar el m�dulo '%Q'"
+
+#~ msgid ""
+#~ "Module command call failed: the module '%Q' doesn't export a callback "
+#~ "command named '%Q'"
+#~ msgstr ""
+#~ "Fall� la llamada al comando del m�dulo: el m�dulo '%Q' no exporta un "
+#~ "comando de callback llamado '%Q'"
+
+#~ msgid "Unexpected end of script after '$' function call prefix"
+#~ msgstr "Fin de script inesperado despu�s del prefijo de llamada a funci�n"
+
+#~ msgid "Unexpected character %q (unicode %x) after '$' function call prefix"
+#~ msgstr ""
+#~ "Car�cter inesperado '%q' (unicode %x) despu�s del prefijo de llamada a "
+#~ "funci�n '$'"
+
+#~ msgid ""
+#~ "Syntax error after '$' function call prefix. If you want to use a plain "
+#~ "'$' in the code you need to escape it"
+#~ msgstr ""
+#~ "Error de sintaxis despu�s del prefijo de llamada '$'. Si quieres usar un "
+#~ "simple '$' en el c�digo necesitas escaparlo"
+
+#~ msgid "Invalid expression evaluation in object scope"
+#~ msgstr "Evaluaci�n no v�lida de la expresi�n en el �mbito del objeto"
+
+#~ msgid "Invalid command evaluation in object scope"
+#~ msgstr "Evaluaci�n no v�lida del comando en el �mbito del objeto"
+
+#~ msgid "Empty instruction block for command evaluation"
+#~ msgstr "Bloque de instrucciones vac�o para la evaluaci�n del comando"
+
+#~ msgid ""
+#~ "Parameter identifiers are forbidden in object scope (after the '->' "
+#~ "operator)"
+#~ msgstr ""
+#~ "Los identificadores de los par�metros est�n prohibidos en el �mbito del "
+#~ "objeto (despu�s del operador '->')"
+
+#~ msgid ""
+#~ "Ending index of a multiple parameter identifier is lower or equal to the "
+#~ "starting index. This will evaluate to a single parameter identifier."
+#~ msgstr ""
+#~ "El �ndice final de un identificador de par�metro m�ltiple es menor o "
+#~ "igual que el �ndice de comienzo. Se evaluar� como un identificador de "
+#~ "par�metro simple."
+
+#~ msgid "Syntax error: invalid $$ ($this) function call in object scope"
+#~ msgstr ""
+#~ "Error de sintaxis: $$ ($this) llamada a funci�n no v�lida en el �mbito "
+#~ "del objeto"
+
+#, fuzzy
+#~ msgid "Syntax error: malformed alias function call identifier"
+#~ msgstr "Error de sintaxis: identificador de comando del m�dulo mal formado"
+
+#, fuzzy
+#~ msgid "Syntax error: malformed (alias?) function call identifier"
+#~ msgstr "Error de sintaxis: identificador de comando del m�dulo mal formado"
+
+#~ msgid "Array index didn't evaluate to an integer"
+#~ msgstr "Indice de un vector no puede evaluarse como un entero"
+
+#~ msgid ""
+#~ "Array index evaluated to a negative integer (non negative integer "
+#~ "expected)"
+#~ msgstr ""
+#~ "Indice del vector evaluado como un entero negativo (se esperaba un entero "
+#~ "no negativo"
+
+#~ msgid ""
+#~ "The argument of the [] subscript didn't evaluate to an array: automatic "
+#~ "conversion from %Q supplied"
+#~ msgstr ""
+#~ "El argumento del sub�ndice [] no eval�a a un array: se proporciona "
+#~ "conversi�n autom�tica desde %Q"
+
+#~ msgid ""
+#~ "The argument of the [] subscript didn't evaluate to an array: automatic "
+#~ "conversion from type '%Q' supplied"
+#~ msgstr ""
+#~ "El argumento del sub�ndice [] no eval�a a un array: se proporciona "
+#~ "conversi�n autom�tica desde el tipo %Q"
+
+#~ msgid ""
+#~ "The argument of the hash count '#' operator didn't evaluate to a hash: "
+#~ "automatic conversion from type '%Q' supplied"
+#~ msgstr ""
+#~ "El operador de conteo hash '#' no se eval�a como un hash: se proporciona "
+#~ "conversi�n autom�tica desde el tipo '%Q'"
+
+#~ msgid "This is not a channel"
+#~ msgstr "Esto no es un canal"
+
+#~ msgid "Unterminated c-style multiline comment"
+#~ msgstr "Comentario multil�nea de estilo C sin terminar"
+
+#~ msgid "Unexpected end of script in multiline comment"
+#~ msgstr "Fin de script inesperado en comentario multil�nea"
+
+#~ msgid ""
+#~ "Unexpected character '%q' (unicode %x) after a slash (it is a typo or a "
+#~ "malformed comment begin ?)"
+#~ msgstr ""
+#~ "Car�cter inesperado '%q' (unicode %x) despu�s de la barra (�es un error o "
+#~ "un comienzo de comentario mal puesto?)"
+
+#~ msgid ""
+#~ "The popup '%s' is actually locked: 'self-modifications' are not allowed"
+#~ msgstr ""
+#~ "El men� emergente '%s' est� bloqueado: las 'automodificaciones' no est�n "
+#~ "permitidas"
+
+#~ msgid "The target variable didn't evaluate to an integer or real value"
+#~ msgstr "La variable destino no eval�a a un entero o un valor real"
+
+#~ msgid "The right side of operator '&=' didn't evaluate to an integer"
+#~ msgstr "El lado derecho del operador '&=' no es un entero"
+
+#~ msgid "The left side of operator '&=' didn't evaluate to an integer"
+#~ msgstr "El lado izquierdo del operador '&=' no es un entero"
+
+#~ msgid "The right side of operator '/=' didn't evaluate to a number"
+#~ msgstr "El lado derecho del operador '/=' no es un entero"
+
+#~ msgid "The left side of operator '/=' didn't evaluate to a number"
+#~ msgstr "El lado izquierdo del operador '/=' no es un entero"
+
+#~ msgid "The right side of operator '%=' didn't evaluate to a number"
+#~ msgstr "El lado derecho del operador '%=' no es un entero"
+
+#~ msgid "The left side of operator '%=' didn't evaluate to a number"
+#~ msgstr "El lado izquierdo del operador '%=' no es un entero"
+
+#~ msgid "The right side of operator '*=' didn't evaluate to a number"
+#~ msgstr "El lado derecho del operador '*=' no es un entero"
+
+#~ msgid "The left side of operator '*=' didn't evaluate to a number"
+#~ msgstr "El lado izquierdo del operador '*=' no es un entero"
+
+#~ msgid "The right side of operator '|=' didn't evaluate to an integer"
+#~ msgstr "El lado derecho del operador '|=' no es un entero"
+
+#~ msgid "The left side of operator '|=' didn't evaluate to an integer"
+#~ msgstr "El lado izquierdo del operador '|=' no es un entero"
+
+#~ msgid "The right side of operator '<<=' didn't evaluate to an integer"
+#~ msgstr "El lado derecho del operador '<<=' no es un entero"
+
+#~ msgid "The left side of operator '<<=' didn't evaluate to an integer"
+#~ msgstr "El lado izquierdo del operador '<<=' no es un entero"
+
+#~ msgid "The right side of operator '>>=' didn't evaluate to an integer"
+#~ msgstr "El lado derecho del operador '>>=' no es un entero"
+
+#~ msgid "The left side of operator '>>=' didn't evaluate to an integer"
+#~ msgstr "El lado izquierdo del operador '>>=' no es un entero"
+
+#~ msgid "The right side of operator '-=' didn't evaluate to a number"
+#~ msgstr "El lado derecho del operador '-=' no es un entero"
+
+#~ msgid "The left side of operator '-=' didn't evaluate to a number"
+#~ msgstr "El lado izquierdo del operador '-=' no es un entero"
+
+#~ msgid "The right side of operator '+=' didn't evaluate to a number"
+#~ msgstr "El lado derecho del operador '+=' no es un entero"
+
+#~ msgid "The left side of operator '+=' didn't evaluate to a number"
+#~ msgstr "El lado izquierdo del operador '+=' no es un entero"
+
+#~ msgid "The right side of operator '^=' didn't evaluate to an integer"
+#~ msgstr "El lado derecho del operador '^=' no es un entero"
+
+#~ msgid "The left side of operator '^=' didn't evaluate to an integer"
+#~ msgstr "El lado izquierdo del operador '^=' no es un entero"
+
+#~ msgid ""
+#~ "The regular expression matched a zero-length substring: this is not valid "
+#~ "in the s/// operator, skipping"
+#~ msgstr ""
+#~ "La expresi�n regular encontr� una subcadena de longitud cero: eso no es "
+#~ "v�lido en el operador s///, saltando"
+
+#~ msgid "Window with ID '%s' not found"
+#~ msgstr "Ventana con ID '%s' no encontrada"
+
+#~ msgid "Missing alias name"
+#~ msgstr "Falta el nombre de alias"
+
+#~ msgid "The alias %Q is not existing"
+#~ msgstr "El alias %Q no existe"
+
+#~ msgid "The specified window has no button containers"
+#~ msgstr "La ventana especificada no tiene un contenedor para botones"
+
+#~ msgid "Window button '%Q' not found"
+#~ msgstr "Bot�n de ventana '%Q' no encontrado"
+
+#~ msgid "Can't find the icon '%Q'"
+#~ msgstr "No pude encontrar el icono '%Q'"
+
+#~ msgid "No such event (%Q)"
+#~ msgstr "No existe el evento (%Q)"
+
+#~ msgid "No handler '%Q' for raw numeric event '%d'"
+#~ msgstr "No hay un manejador '%Q' para el evento num�rico puro '%d'"
+
+#~ msgid "No handler '%Q' for event '%Q'"
+#~ msgstr "No hay manejador '%Q' para el evento '%Q'"
+
+#~ msgid "The specified ping time is invalid: assuming zero (no ping)"
+#~ msgstr ""
+#~ "El tiempo especificado para ping no es v�lido: asumiendo cero (sin ping)"
+
+#~ msgid "The specified maximum run time is invalid: assuming zero (infinite)"
+#~ msgstr ""
+#~ "El tiempo m�ximo de ejecuci�n no es v�lido: asumiendo cero (infinito)"
+
+#~ msgid "Failed to start the process"
+#~ msgstr "Fallo al comenzar el proceso"
+
+#~ msgid "The specified object does not exist"
+#~ msgstr "El objeto especificado no existe"
+
+#~ msgid "Missing timer name"
+#~ msgstr "Falta el nombre del cron�metro"
+
+#~ msgid "Missing timeout delay"
+#~ msgstr "Falta tiempo de expiraci�n"
+
+#~ msgid "The timeout delay didn't evaluate to an integer"
+#~ msgstr "El tiempo de expiraci�n no se evalu� como un entero"
+
+#~ msgid "Unable to add the timer: insufficient system resources"
+#~ msgstr "Imposible a�adir el cron�metro: recursos del sistema insuficientes"
+
+#~ msgid ""
+#~ "The left side of the scope operator didn't evaluate as an object reference"
+#~ msgstr ""
+#~ "El lado izquierdo del operador de �mbito no se evalua como una referencia "
+#~ "a un objeto"
+
+#~ msgid ""
+#~ "The left side of the scope operator evaluated to a null object reference"
+#~ msgstr ""
+#~ "El lado izquierdo del operador de �mbito se evalu� como una referencia a "
+#~ "un objeto nulo"
+
+#~ msgid ""
+#~ "The left side of the scope operator evaluated to an invalid object "
+#~ "reference (object doesn't exist)"
+#~ msgstr ""
+#~ "El lado izquierdo del operador de �mbito se evalu� como una referencia a "
+#~ "un objeto no v�lido (el objeto no existe)"
+
+#~ msgid ""
+#~ "Broken slot '%Q' in target object '%Q::%Q' while emitting signal '%Q' "
+#~ "from object '%Q::%Q': disconnecting"
+#~ msgstr ""
+#~ "Slot '%Q' erroneo en objeto destino '%Q::%Q' mientras se emit�a la se�al "
+#~ "'%Q' desde el objeto '%Q::%Q': desconectando"
+
+#~ msgid ""
+#~ "Slot target object destroyed while emitting signal '%Q' from object '%Q::%"
+#~ "Q'"
+#~ msgstr ""
+#~ "Slot del objeto destino destru�do mientras se emit�a la se�al '%Q' desde "
+#~ "el objeto '%Q::%Q': desconectando"
+
+#~ msgid "Listing Qt properties for object named \"%Q\" of KVS class %Q"
+#~ msgstr ""
+#~ "Enumerando las propiedades Qt para el objeto llamado \"%Q\" de la clase "
+#~ "KVS %Q"
+
+#~ msgid "Properties for Qt class %s"
+#~ msgstr "Propiedades de la clase Qt %s"
+
+#~ msgid "Property: %c%Q%c, type %s"
+#~ msgstr "Propiedad: %c%Q%c, tipo: %s"
+
+#~ msgid "%d properties listed"
+#~ msgstr "%d propiedades enumeradas"
+
+#~ msgid "The object named \"%Q\" of class %Q has no Qt properties"
+#~ msgstr "El objeto llamado \"%Q\" de clase %Q no tiene propiedades Qt"
+
+#~ msgid "No Qt property named \"%Q\" for object named \"%Q\" of class %Q"
+#~ msgstr ""
+#~ "No hay una propiedad Qt \"%Q\" para el objeto llamado \"%Q\" de clase %Q"
+
+#~ msgid ""
+#~ "Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+#~ "property is indexed but it doesn't really exist"
+#~ msgstr ""
+#~ "No puedo encontrar la propiedad llamada \"%Q\" para el objeto llamado \"%Q"
+#~ "\" de clase %Q: la propiedad est� indexada pero no existe realmente"
+
+#~ msgid ""
+#~ "Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+#~ "property is indexed and defined but the returned variant is not valid"
+#~ msgstr ""
+#~ "No puedo encontrar la propiedad llamada \"%Q\" para el objeto llamado \"%Q"
+#~ "\" de clase %Q: la propiedad est� indexada y definida pero el tipo de "
+#~ "retorno no es v�lido"
+
+#~ msgid ""
+#~ "The property is of type %s but the supplied argument can't be converted "
+#~ "to that type (expecting \"%s\")"
+#~ msgstr ""
+#~ "La propiedad es de tipo %s pero el argumento proporcionado no puede ser "
+#~ "convertido a este tipo (se esperaba \"%s\")"
+
+#~ msgid ""
+#~ "A pixmap object, an image_id or an image file path is required for this "
+#~ "property"
+#~ msgstr ""
+#~ "Se necesita un objeto pixmap, un id de imagen o una trayectoria a un "
+#~ "fichero de imagen para esta propiedad"
+
+#~ msgid "Can't find the requested image"
+#~ msgstr "No se pudo encontrar la imagen solicitada"
+
+#~ msgid ""
+#~ "Property \"%Q\" for object named \"%Q\" of class %Q has an unsupported "
+#~ "data type"
+#~ msgstr ""
+#~ "La propiedad \"%Q\" para el objeto llamado \"%Q\" de clase %Q tiene un "
+#~ "tipo de dato no soportado"
+
+#~ msgid "Cannot find object function $%Q for object named \"%Q\" of class %Q"
+#~ msgstr ""
+#~ "No puedo encontrar la funci�n de objeto $%Q para el objeto llamado \"%Q\" "
+#~ "de clase %Q"
+
+#~ msgid ""
+#~ "Cannot find object function $%Q::%Q for object named \"%Q\" of class %Q"
+#~ msgstr ""
+#~ "No puedo encontrar la funci�n del objeto $%Q::%Q para el objeto llamado "
+#~ "\"%Q\" de clase %Q"
+
+#, fuzzy
+#~ msgid ""
+#~ "Cannot call internal object function $%Q (for object named \"%Q\" of "
+#~ "class %Q) from this context"
+#~ msgstr ""
+#~ "No puedo encontrar la funci�n de objeto $%Q para el objeto llamado \"%Q\" "
+#~ "de clase %Q"
+
+#~ msgid "Found character '%q' (unicode %x) where a slash '/' was expected"
+#~ msgstr ""
+#~ "Se encontr� el car�cter '%q' (unicode %x) donde se esperaba una barra '/'"
+
+#~ msgid ""
+#~ "Unexpected end of command in binding operation, at least two slashes are "
+#~ "missing"
+#~ msgstr ""
+#~ "Fin de comando inesperado en operaci�n de asociaci�n, faltan al menos dos "
+#~ "barras (/)"
+
+#~ msgid ""
+#~ "Unexpected end of command in binding operation, at least one slash is "
+#~ "missing"
+#~ msgstr ""
+#~ "Fin de comando inesperado en operaci�n de asociaci�n, falta al menos una "
+#~ "barra (/)"
+
+#~ msgid "Unknown binding operation '%Q'"
+#~ msgstr "Operaci�n de asociaci�n desconocida '%Q'"
+
+#~ msgid "Missing right side operand for the binding operator '=~'"
+#~ msgstr ""
+#~ "Falta la parte derecha del operando para el operador de asociaci�n '=~'"
+
+#~ msgid "Trailing garbage ignored after operator '++'"
+#~ msgstr "Se ignoran los caracteres sobrantes despu�s del operador '++'"
+
+#~ msgid "Missing right operand for operator '+='"
+#~ msgstr "Falta el operando de la derecha para el operador '+='"
+
+#~ msgid "Trailing garbage ignored after operator '--'"
+#~ msgstr "Se ignoran los caracteres sobrantes despu�s del operador '--'"
+
+#~ msgid "Missing right operand for operator '-='"
+#~ msgstr "Falta el operando de la derecha para el operador '-='"
+
+#~ msgid "Missing right operand for operator '<<='"
+#~ msgstr "Falta el operando de la derecha para el operador '<<='"
+
+#~ msgid "Missing right operand for operator '<<'"
+#~ msgstr "Falta el operando de la derecha para el operador '<<'"
+
+#~ msgid "Missing right operand for operator '<,'"
+#~ msgstr "Falta el operando de la derecha para el operador '<,'"
+
+#~ msgid "Missing right operand for operator '>>='"
+#~ msgstr "Falta el operando de la derecha para el operador '>>='"
+
+#~ msgid "Missing right operand for operator '.='"
+#~ msgstr "Falta el operando de la derecha para el operador '.='"
+
+#~ msgid "Missing right operand for operator '"
+#~ msgstr "Falta el operando de la derecha para el operador '"
+
+#~ msgid "='"
+#~ msgstr "='"
+
+#~ msgid "Unknown operator"
+#~ msgstr "Operador desconocido"
+
+#~ msgid "Unexpected (and senseless) read-only data evaluation"
+#~ msgstr "Evaluaci�n de datos de solo lectura inesperada (y sin sentido)"
+
+#~ msgid "Syntax error: confused by earlier errors: bailing out"
+#~ msgstr "Error de sintaxis: confundido por errores anteriores: alucinando"
+
+#~ msgid ""
+#~ "Unexpected end of script after a variable reference: expected operator"
+#~ msgstr ""
+#~ "Fin de script inesperado despu�s de una referencia a variable: se "
+#~ "esperaba un operador"
+
+#~ msgid ""
+#~ "Unexpected character '%q' (unicode %x) after a void function call: end of "
+#~ "instruction expected"
+#~ msgstr ""
+#~ "Car�cter inesperado '%q' (unicode %x) despu�s de una llamada vac�a a "
+#~ "funci�n: se esperaba fin de la instrucci�n"
+
+#~ msgid "Unexpected character '%q' (unicode %x)"
+#~ msgstr "Car�cter inesperado '%q' (unicode %x)"
+
+#~ msgid "Invalid pitch value: using default"
+#~ msgstr "Tono no v�lido: usando tono por defecto"
+
+#~ msgid "Invalid duration value: using default"
+#~ msgstr "Duraci�n de tono no v�lida: usando duraci�n por defecto"
+
+#, fuzzy
+#~ msgid "No button with type %Q named %Q"
+#~ msgstr "No hay un bot�n del tipo %s llamado %s"
+
+#~ msgid "Can't delete a null object reference"
+#~ msgstr "No puedo borrar una referencia a un objeto nulo"
+
+#~ msgid "Can't delete an inexisting object"
+#~ msgstr "No puedo borrar un objeto inexistente"
+
+#, fuzzy
+#~ msgid "Inexisting popup \"%Q\""
+#~ msgstr "Men� emergente \"%s\" inexistente"
+
+#, fuzzy
+#~ msgid "The menu item with id \"%Q\" does not exist in popup \"%Q\""
+#~ msgstr ""
+#~ "El elemento con id \"%s\" no existe en el men� emergente con id \"%s\""
+
+#~ msgid ""
+#~ "The argument of the -w switch did not evaluate to a valid window id: "
+#~ "using default"
+#~ msgstr ""
+#~ "El argumento del indicador -w no eval�a a un id v�lido de ventana: usando "
+#~ "el valor por defecto"
+
+#~ msgid ""
+#~ "The argument of the i switch did not evaluate to a number: using default"
+#~ msgstr ""
+#~ "El argumento del indicador i no eval�a a un n�mero: usando valor por "
+#~ "defecto"
+
+#~ msgid "Invalid color-set specification, using default"
+#~ msgstr ""
+#~ "Especificaci�n de conjunto de colores no v�lida, usando el valor por "
+#~ "defecto"
+
+#~ msgid "Window '%s' not found, using current one"
+#~ msgstr "Ventana '%s' no encontrada, usando la actual"
+
+#~ msgid "Timer '%Q' has a broken callback handler: killing the timer"
+#~ msgstr ""
+#~ "El cron�metro '%Q' tiene un manejador de callback erroneo: matando el "
+#~ "cron�metro"
+
+#~ msgid "Invalid data type for parameter \"%s\""
+#~ msgstr "Tipo de dato no v�lido apra el par�metro \"%s\""
+
+#~ msgid "found empty string where type '%s' was expected"
+#~ msgstr "encontrada cadena vac�a donde el tipo esperado era '%s'"
+
+#~ msgid "found string value \"%Q\" where type '%s' was expected"
+#~ msgstr "encontrado el valor de cadena \"%Q\" donde se esperaba el tipo '%s'"
+
+#~ msgid "found type %Q where type '%s' was expected"
+#~ msgstr "encontrado el tipo '%Q' donde se esperaba '%s'"
+
+#~ msgid "Missing non-optional parameter \"%s\""
+#~ msgstr "Falta par�metro obligatorio \"%s\""
+
+#~ msgid "found empty string while a non empty one was expected"
+#~ msgstr "encontrada cadena vac�a cuando se esperaba una llena"
+
+#~ msgid ""
+#~ "found signed integer \"%d\" where type 'unsigned integer' was expected"
+#~ msgstr ""
+#~ "encontrado entero con signo \"%d\" donde se esperaba de tipo 'unsigned "
+#~ "integer'"
+
+#~ msgid "[KVS]%c Warning: %Q"
+#~ msgstr "[KVS]%c Aviso: %Q"
+
+#~ msgid "[KVS]%c Compilation Error: %Q"
+#~ msgstr "[KVS]%c Error de Compilaci�n: %Q"
+
+#~ msgid "[KVS]%c Runtime Error: %Q"
+#~ msgstr "[KVS]%c Error de Ejecuci�n: %Q"
+
+#~ msgid "[KVS] in script context \"%Q\""
+#~ msgstr "[KVS] en el contexto del script \"%Q\""
+
+#~ msgid "[KVS] in script context \"%Q\", %Q"
+#~ msgstr "[KVS] en el contexto del script \"%Q\", %Q"
+
+#~ msgid "[KVS] Code listing:"
+#~ msgstr "[KVS] Listado del c�digo:"
+
+#~ msgid "[KVS] Window:"
+#~ msgstr "[KVS] Ventana:"
+
+#~ msgid "[KVS] Destroyed window with pointer %x"
+#~ msgstr "[KVS] Destru�da ventana con puntero %x"
+
+#~ msgid "[KVS] Call stack:"
+#~ msgstr "[KVS] Pila de llamadas:"
+
+#~ msgid "There are no extended scope variables in this scope"
+#~ msgstr "No hay variables de �mbito extendido en este �mbito"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of command buffer while looking for the \"perl.end\" "
+#~ "statement"
+#~ msgstr ""
+#~ "Fin de buffer inesperado mientras se buscaba el car�cter ')' del 'for'"
+
+#~ msgid "Trailing garbage at the end of the break command: ignored"
+#~ msgstr "Caracteres sobrantes al final del comando break: ignorados"
+
+#~ msgid "The 'unset' command needs a variable list"
+#~ msgstr "El comando 'unset' necesita una lista de variables"
+
+#~ msgid "Found character %q (unicode %x) where a variable was expected"
+#~ msgstr ""
+#~ "Encontrado el car�cter '%q' (unicode %x) donde se esperaba una variable"
+
+#~ msgid "'unset' command used without a variable list"
+#~ msgstr "El comando 'unset' se utiliz� sin una lista de variables"
+
+#~ msgid "The 'global' command needs a variable list"
+#~ msgstr "El comando 'global' necesita una lista de variables"
+
+#~ msgid ""
+#~ "Found character %q (unicode %x) where an open parenthesis was expected"
+#~ msgstr "Encontrado el car�cter '%q' (unicode %x) donde se esperaba un '('"
+
+#~ msgid "Unexpected end of buffer in class definition"
+#~ msgstr "Fin de buffer inesperado en definici�n de clase"
+
+#~ msgid "Found character %q (unicode %x) where a function name was expected"
+#~ msgstr ""
+#~ "Se encontr� el car�cter '%q' (unicode %x) donde se esperaba un nombre de "
+#~ "funci�n"
+
+#~ msgid "Unexpected end of buffer in function parameter list reminder"
+#~ msgstr "Fin de buffer inesperado en lista de par�metros de la funci�n"
+
+#, fuzzy
+#~ msgid "The while command needs an expression enclosed in parenthesis"
+#~ msgstr ""
+#~ "El comando 'while' necesita una expresi�n encerrada entre par�ntesis"
+
+#~ msgid ""
+#~ "The last while command in the buffer has no conditional instructions: "
+#~ "it's senseless"
+#~ msgstr ""
+#~ "El �ltimo comando while en el buffer no tiene instrucciones "
+#~ "condicionales: esto no tiene sentido"
+
+#~ msgid ""
+#~ "Unexpected end of script while looking for the instruction block of the "
+#~ "while command"
+#~ msgstr ""
+#~ "Fin de script inesperado mientras se buscaba el bloque de instrucciones "
+#~ "del comando while"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of command after the 'do' command block: expected 'while' "
+#~ "keyword"
+#~ msgstr ""
+#~ "Final de comando inesperado despu�s de bloque de comando 'do': se "
+#~ "esperaba el identificador while"
+
+#~ msgid "Found character %q (unicode %x) where a 'while' keyword was expected"
+#~ msgstr ""
+#~ "Encontrado el car�cter %q (unicode %x) donde se esperaba la palabra clave "
+#~ "'while'"
+
+#, fuzzy
+#~ msgid ""
+#~ "The 'while' block of the 'do' command needs an expression enclosed in "
+#~ "parenthesis"
+#~ msgstr ""
+#~ "El bloque 'while' de un comando 'do' necesita una expresi�n encerrada "
+#~ "entre par�ntesis"
+
+#~ msgid "Garbage string after the expression in 'do' command: ignored"
+#~ msgstr ""
+#~ "Cadena sobrante despu�s de la expresi�n en el comando 'do': ignorada"
+
+#, fuzzy
+#~ msgid "The 'if' command needs an expression enclosed in parenthesis"
+#~ msgstr "El comando 'if' necesita una expresi�n encerrada entre par�ntesis"
+
+#~ msgid ""
+#~ "The last if command in the buffer has no conditional instructions: it's "
+#~ "senseless"
+#~ msgstr ""
+#~ "El �ltimo comando 'if' en el buffer no tiene instrucciones condicionales: "
+#~ "esto no tiene sentido"
+
+#~ msgid ""
+#~ "Unexpected end of script while looking for the instruction block of the "
+#~ "if command"
+#~ msgstr ""
+#~ "Fin de script inesperado mientras se buscaba el bloque de instrucciones "
+#~ "del comando 'if'"
+
+#~ msgid ""
+#~ "Unexpected end of buffer while looking for the closing ')' in the 'for' "
+#~ "command"
+#~ msgstr ""
+#~ "Fin de buffer inesperado mientras se buscaba el car�cter ')' del 'for'"
+
+#, fuzzy
+#~ msgid "The 'for' command needs an expression enclosed in parenthesis"
+#~ msgstr "El comando 'for' necesita una expresi�n encerrada entre par�ntesis"
+
+#~ msgid ""
+#~ "Found char %q (unicode %x) while looking for the terminating ')' in 'for' "
+#~ "command"
+#~ msgstr ""
+#~ "Se encontr� el car�cter %q (unicode %x) mientras se buscaba el terminador "
+#~ "')' para el 'for'"
+
+#~ msgid "Empty infinite 'for' loop: fix the script"
+#~ msgstr "Bucle 'for' infinito: arregla el script"
+
+#, fuzzy
+#~ msgid "The 'foreach' command needs an expression enclosed in parenthesis"
+#~ msgstr ""
+#~ "El comando 'foreach' necesita una expresi�n encerrada entre par�ntesis"
+
+#~ msgid ""
+#~ "The 'foreach' command expects a writeable iteration variable as first "
+#~ "parameter"
+#~ msgstr ""
+#~ "El comando 'foreach' espera una variable de iteraci�n modificable como "
+#~ "primer par�metro"
+
+#~ msgid ""
+#~ "Found character '%q' (unicode %x) where '%' or '$' was expected: see /"
+#~ "help foreach for the command syntax"
+#~ msgstr ""
+#~ "Encontrado car�cter '%q' (unicode %x) donde se esperaba '%' o '$': "
+#~ "consulta /help foreach para ver la sintaxis del comando"
+
+#~ msgid "Unexpected function call as 'foreach' iteration variable"
+#~ msgstr "Llamada inesperada a funci�n como variable de iteraci�n 'foreach'"
+
+#~ msgid "Unexpected read-only variable as 'foreach' iteration variable"
+#~ msgstr ""
+#~ "Variable de solo lectura inesperada como variable de iteraci�n 'foreach'"
+
+#~ msgid ""
+#~ "Unexpected end of 'foreach' parameters: at least one iteration data "
+#~ "argument must be given"
+#~ msgstr ""
+#~ "Fin inesperado de par�metros 'foreach': debe proporcionarse al menos un "
+#~ "argumento de datos de iteraci�n"
+
+#~ msgid ""
+#~ "The 'foreach' command expects a comma separated list of iteration data "
+#~ "items after the first parameter"
+#~ msgstr ""
+#~ "El comando 'foreach' espera una lista de elementos de iteraci�n separados "
+#~ "por comas despu�s del primer par�metro"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found empty 'foreach' execution block: maybe you need to fix your script ?"
+#~ msgstr "Bloque de ejecuci�n vac�o para 'foreach': arregla el script"
+
+#, fuzzy
+#~ msgid "The 'switch' command needs an expression enclosed in parenthesis"
+#~ msgstr ""
+#~ "El comando 'switch' necesita una expresi�n encerrada entre par�ntesis"
+
+#~ msgid "Unexpected end of buffer in switch condition block"
+#~ msgstr "Fin de buffer inesperado en bloque condicional switch"
+
+#~ msgid ""
+#~ "Found character %q (unicode %x) where a 'case','match','regexp','default' "
+#~ "or 'break' label was expected"
+#~ msgstr ""
+#~ "Encontrado car�cter %q (unicode %x) donde se esperaba un 'case', "
+#~ "'regexp', 'default' o 'break'"
+
+#~ msgid ""
+#~ "Found 'break' label where a 'case','match','regexp' or 'default' label "
+#~ "was expected"
+#~ msgstr ""
+#~ "Encontrada una etiqueta 'break' donde se esperaba una etiqueta 'case', "
+#~ "'match, 'regexp', o 'default'"
+
+#~ msgid ""
+#~ "Found token '%Q' where a 'case','match','regexp','default' or 'break' "
+#~ "label was expected"
+#~ msgstr ""
+#~ "Encontrado el identificador '%Q' donde se esperaba un 'case', 'match', "
+#~ "'regexp', 'default' o 'break'"
+
+#~ msgid "Senseless empty switch command: fix the script"
+#~ msgstr "Comando switch vac�o no tiene sentido: arregla el script"
+
+#~ msgid "Unexpected end of buffer in defpopup block"
+#~ msgstr "Fin de buffer inesperado en bloque defpopup"
+
+#~ msgid ""
+#~ "Found character %q (unicode %x) where a "
+#~ "'prologue','separator','label','popup','item','extpopup' or 'epilogue' "
+#~ "label was expected"
+#~ msgstr ""
+#~ "Encontrado car�cter %q (unicode %x) donde se esperaba una etiqueta "
+#~ "'prologue', 'separator', 'label', 'popup', 'item', 'extpopup' o 'epilogue'"
+
+#, fuzzy
+#~ msgid "Found empty prologue block: maybe you need to fix the script?"
+#~ msgstr "Pr�logo de bloque vac�o sin sentido: arregla el script"
+
+#, fuzzy
+#~ msgid "Found empty epilogue block: maybe you need to fix the script?"
+#~ msgstr "Ep�logo de bloque vac�o sin sentido: arregla el script"
+
+#~ msgid ""
+#~ "Unexpected empty <text> field in label parameters. See /help defpopup for "
+#~ "the syntax"
+#~ msgstr ""
+#~ "Campo <texto> vac�o inesperado en par�metros de etiqueta. Ver /help "
+#~ "defpopup para conocer la sintaxis"
+
+#~ msgid ""
+#~ "Unexpected empty <text> field in extpopup parameters. See /help defpopup "
+#~ "for the syntax"
+#~ msgstr ""
+#~ "Campo <texto> vac�o inesperado en par�metros de extpopup. Ver /help "
+#~ "defpopup para conocer la sintaxis"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found empty instruction for popup item: maybe you need to fix the script?"
+#~ msgstr "Instrucci�n vac�a para elemento de popup: arregla el script"
+
+#~ msgid ""
+#~ "Unexpected empty <name> field in extpopup parameters. See /help defpopup "
+#~ "for the syntax"
+#~ msgstr ""
+#~ "Campo <nombre> vac�o inesperado en par�metros de extpopup. Ver /help "
+#~ "defpopup para conocer la sintaxis"
+
+#~ msgid ""
+#~ "Found token '%Q' where a "
+#~ "'prologue','separator','label','popup','item','extpopup' or 'epilogue' "
+#~ "label was expected"
+#~ msgstr ""
+#~ "Encontrado identificador '%Q' donde se esperaba una etiqueta 'prologue', "
+#~ "'separator', 'label', 'popup', 'item', 'extpopup' o 'epilogue'"
+
+#, fuzzy
+#~ msgid "The 'defpopup' command needs an expression enclosed in parenthesis"
+#~ msgstr ""
+#~ "El comando 'defpopup' necesita una expresi�n encerrada entre par�ntesis"
+
+#, fuzzy
+#~ msgid "Module command call failed: can't load the module '%Q': %Q"
+#~ msgstr ""
+#~ "Fall� la llamada al comando del m�dulo: no puedo cargar el m�dulo '%Q'"
+
+#~ msgid ""
+#~ "Module command call failed: the module '%Q' doesn't export a command "
+#~ "named '%Q'"
+#~ msgstr ""
+#~ "Fall� la llamada al comando del m�dulo: m�dulo '%Q' no exporta un comando "
+#~ "llamado '%Q'"
+
+#, fuzzy
+#~ msgid "Received ping from \r!s\r%Q\r (PING %Q), replied pong"
+#~ msgstr "Recibido ping de \r!s\r%s\r (PING %s), respondido pong"
+
+#~ msgid "Received pong from \r!s\r%s\r (PONG %s)"
+#~ msgstr "Recibido pong de \r!s\r%s\r (PONG %s)"
+
+#~ msgid "Server ERROR: %Q"
+#~ msgstr "ERROR de Servidor: %Q"
+
+#~ msgid "Missing channel parameter in join message"
+#~ msgstr "Falta par�metro de canal en mensaje JOIN"
+
+#~ msgid "Received a join message for an unknown channel, possible desync"
+#~ msgstr "Recibido un mensaje JOIN de un canal desconocido, �posible desync?"
+
+#~ msgid ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r [implicit +%c umode "
+#~ "change]"
+#~ msgstr ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] se ha unido a \r!c\r%Q\r [cambio de modo-u "
+#~ "impl�cito +%c]"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] se ha unido a \r!c\r%Q\r"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just joined \r!c\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] se acaba de unir a \r!c\r%Q\r"
+
+#~ msgid "Received a part message for an unknown channel, possible desync"
+#~ msgstr "Recibido un mensaje PART de un canal desconocido, �posible desync?"
+
+#~ msgid "You have left channel \r!c\r%Q\r"
+#~ msgstr "Has abandonado el canal \r!c\r%Q\r"
+
+#~ msgid "You have left channel \r!c\r%Q\r: %Q"
+#~ msgstr "Has abandonado el canal \r!c\r%Q\r: %Q"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r: %Q"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] ha abandonado \r!c\r%Q\r: %Q"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] ha abandonado \r!c\r%Q\r"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r: %Q"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] se acaba de marchar \r!c\r%Q\r: %Q"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] se acaba de marchar \r!c\r%Q\r"
+
+#~ msgid "Netsplit detected: %s"
+#~ msgstr "Netsplit detectado: %s"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] se ha marchado del IRC: %Q"
+
+#~ msgid "Received a kick message for an unknown channel, possible desync"
+#~ msgstr ""
+#~ "Recibido un mensaje de expulsi�n de un canal desconocido, �posible desync?"
+
+#~ msgid ""
+#~ "You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "Has sido expulsado de \r!c\r%Q\r por \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid "Attempting to rejoin \r!c\r%Q\r..."
+#~ msgstr "Intentando volver a entrar \r!c\r%Q\r..."
+
+#~ msgid ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has been kicked from \r!c\r%Q\r by \r!n\r%Q\r "
+#~ "[%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] ha sido expulsado de \r!c\r%Q\r por \r!n\r%Q\r "
+#~ "[%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just been kicked from \r!c\r%Q\r by \r!n\r%"
+#~ "Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] acaba de ser expulsado de \r!c\r%Q\r por \r!n\r"
+#~ "%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid ""
+#~ "The following message appears to be encrypted, but the crypto engine "
+#~ "failed to decode it: %s"
+#~ msgstr ""
+#~ "El siguiente mensaje parece estar cifrado, pero el motor de cifrado fall� "
+#~ "al decodificarlo: %s"
+
+#~ msgid "Ignoring PRIVMSG from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "Ignorando PRIVMSG de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid ""
+#~ "Spam privmsg from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%s"
+#~ "\")"
+#~ msgstr ""
+#~ "PRIVMSG spam de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (palabra-spam coincidente "
+#~ "\"%s\")"
+
+#~ msgid "Ignoring NOTICE from %Q (%Q)"
+#~ msgstr "Ignorando NOTICE de %Q (%Q)"
+
+#~ msgid "NickServ requests authentication, executing scheduled command"
+#~ msgstr "NickServ pide autentificaci�n, ejecutando comando programado"
+
+#~ msgid ""
+#~ "The scheduled NickServ identification command appears to be broken, "
+#~ "please change the setting"
+#~ msgstr ""
+#~ "El comando de identificaci�n NickServ programado parece ser incorrecto, "
+#~ "por favor cambia la configuraci�n"
+
+#~ msgid ""
+#~ "Spam notice from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%Q\")"
+#~ msgstr ""
+#~ "Noticia spam de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (palabra-spam coincidente "
+#~ "\"%Q\")"
+
+#~ msgid "Received a topic message for an unknown channel, possible desync"
+#~ msgstr ""
+#~ "Recibido un mensaje de tema de un canal desconocido, �posible desync?"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has changed topic to \"%Q%c\""
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] ha cambiado el tema a \"%Q%c\""
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] se conoce ahora como \r!n\r%Q\r"
+
+#~ msgid "You have changed your nickname to %Q"
+#~ msgstr "Has cambiado tu nick a %Q"
+
+#~ msgid ""
+#~ "The target of this query was lost and has been found when \r!n\r%Q\r [%Q@"
+#~ "\r!h\r%Q\r] changed his nickname to \r!n\r%Q\r"
+#~ msgstr ""
+#~ "El destino de este privado se perdi� y ha sido encontrado cuando \r!n\r%Q"
+#~ "\r [%Q@\r!h\r%Q\r] cambi� su nick a \r!n\r%Q\r"
+
+#~ msgid ""
+#~ "The recent nickname change from \r!n\r%Q\r to \r!n\r%Q\r caused a query "
+#~ "collision: merging output"
+#~ msgstr ""
+#~ "El nick cambi� de \r!n\r%Q\r a \r!n\r%Q\r y caus� una colisi�n de "
+#~ "privados: mezclando la salida"
+
+#~ msgid "End of merged output"
+#~ msgstr "Final de salida mezclada"
+
+#~ msgid "autojoining"
+#~ msgstr "autoentrando"
+
+#~ msgid "double-click the channel name to join"
+#~ msgstr "pulse dos veces en el nombre del canal para entrar"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] invites you to channel \r!c\r%Q\r (%Q)"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] te invita al canal \r!c\r%Q\r (%Q)"
+
+#~ msgid "Received an invite message directed to another nick, possible desync"
+#~ msgstr "Recibido un mensaje INVITE dirigido a otro nick, posible desync"
+
+#~ msgid "WALLOPS from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "WALLOPS de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid "You have set user mode %s"
+#~ msgstr "Tiene puesto el modo de usuario %s"
+
+#~ msgid "Received a mode change for an unknown channel, possible desync"
+#~ msgstr ""
+#~ "Recibido un cambio de modo de un canal desconocido, �posible desync?"
+
+#~ msgid "%Q [%Q@%Q] has set channel key to \"\r!m-k\r%Q\r\""
+#~ msgstr "%Q [%Q@%Q] ha cambiado la clave del canal a \"\r!m-k\r%Q\r\""
+
+#~ msgid "%Q [%Q@%Q] has unset the channel key"
+#~ msgstr "%Q [%Q@%Q] ha quitado la clave del canal"
+
+#~ msgid "%Q [%Q@%Q] has set channel \r!m-l\rlimit to %Q\r"
+#~ msgstr "%Q [%Q@%Q] ha puesto el l�mite del canal \r!m-l\ra %Q\r"
+
+#~ msgid "%Q [%Q@%Q] has unset the channel limit"
+#~ msgstr "%Q [%Q@%Q] ha quitado el l�mite del canal"
+
+#~ msgid "%Q [%Q@%Q] has set mode %c%c \r!n\r%Q\r"
+#~ msgstr "%Q [%Q@%Q] ha puesto el modo %c%c \r!n\r%Q\r"
+
+#~ msgid "%Q [%Q@%Q] has set mode %c%c \r!m%c%c\r%Q\r"
+#~ msgstr "%Q [%Q@%Q] ha puesto el modo %c%c \r!m%c%c\r%Q\r"
+
+#~ msgid "%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"
+#~ msgstr "%Q [%Q@%Q] ha puesto el modo del canal \r!m%c%c\ra %c%c\r"
+
+#~ msgid "%Q [%Q@%Q] has set mode %s %Q"
+#~ msgstr "%Q [%Q@%Q] ha puesto el modo %s %Q"
+
+#~ msgid "%Q [%Q@%Q] has set channel mode %s"
+#~ msgstr "%Q [%Q@%Q] ha puesto el modo de canal %s"
+
+#~ msgid ""
+#~ "[Server parser]: Encountered problems while parsing the following message:"
+#~ msgstr ""
+#~ "[Parser de Servidor]: Se encontraron problemas mientras se analizaba el "
+#~ "siguiente mensaje:"
+
+#~ msgid "[Server parser]: [%s][%s] %Q"
+#~ msgstr "[Parser de servidor]: [%s][%s] %Q"
+
+#~ msgid "[Server parser]: %s"
+#~ msgstr "[Parser de servidor]: %s"
+
+#~ msgid "The following CTCP reply has unrecognized target %Q"
+#~ msgstr "La siguiente respuesta CTCP tiene un destino no reconocido %Q"
+
+#~ msgid "Channel CTCP"
+#~ msgstr "CTCP de canal"
+
+#~ msgid "%Q %S reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "%Q %S respuesta de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid "The following CTCP request has unrecognized target %Q"
+#~ msgstr "La siguiente petici�n CTCP tiene un destino no reconocido %Q"
+
+#~ msgid ""
+#~ "%Q %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignored (flood limit "
+#~ "exceeded)"
+#~ msgstr ""
+#~ "Petici�n %Q %S de \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignorada (l�mite de "
+#~ "saturaci�n excedido)"
+
+#~ msgid "ignored (unrecognized)"
+#~ msgstr "ignorada (no reconocida)"
+
+#~ msgid "ignored"
+#~ msgstr "ignorada"
+
+#~ msgid "replied"
+#~ msgstr "respondida"
+
+#~ msgid "%Q %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+#~ msgstr "petici�n %Q %S de \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+
+#~ msgid "The following CTCP PING reply has unrecognized target \"%Q\""
+#~ msgstr ""
+#~ "La siguiente respuesta CTCP PING tiene un destino no reconocido \"%Q\""
+
+#~ msgid ""
+#~ "The following CTCP PING reply has a broken time identifier \"%S\", don't "
+#~ "trust the displayed time"
+#~ msgstr ""
+#~ "La siguiente respuesta CTCP PING tiene un identificador temporal erroneo "
+#~ "\"%S\", no conf�e en el tiempo mostrado"
+
+#~ msgid "%Q PING reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sec %u msec"
+#~ msgstr "Respuesta PING %Q de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u segs %u msegs"
+
+#~ msgid "The following CTCP ACTION has unrecognized target %Q"
+#~ msgstr "El siguiente CTCP ACTION tiene un destino no reconocido %Q"
+
+#~ msgid "CTCP ACTION from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "CTCP ACTION de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid "Unable to add file offer for file %Q (File not readable?)"
+#~ msgstr ""
+#~ "No puedo a�adir un ofrecimiento de archivo para %Q (�Archivo no legible?)"
+
+#~ msgid "Added %d sec file offer for file %Q (%Q) to recipient %Q"
+#~ msgstr "A�adido ofrecimiento de %d segs del archivo %Q (%Q) al receptor %Q"
+
+#~ msgid "private"
+#~ msgstr "privado"
+
+#~ msgid "channel notification:"
+#~ msgstr "notificaci�n de canal:"
+
+#~ msgid "notification"
+#~ msgstr "notificaci�n"
+
+#~ msgid "%Q unsets avatar"
+#~ msgstr "%Q quita avatar"
+
+#~ msgid "%Q changes avatar to %s"
+#~ msgstr "%Q cambia el avatar a %s"
+
+#~ msgid ""
+#~ ": No valid local copy of avatar available, requesting one (HTTP GET %s)"
+#~ msgstr ""
+#~ ": No hay copia local v�lida del avatar disponible, pidiendo uno (HTTP GET "
+#~ "%s)"
+
+#~ msgid ""
+#~ ": No valid local copy of avatar available; failed to start an HTTP "
+#~ "transfer, ignoring"
+#~ msgstr ""
+#~ ": No hay copia local v�lida del avatar disponible; fall� el comienzo de "
+#~ "una transferencia HTTP, ignorando"
+
+#~ msgid ""
+#~ ": No valid local copy of avatar available, requesting one (DCC GET %s)"
+#~ msgstr ""
+#~ ": No hay disponible una copia local v�lida del avatar, pidiendo una (DCC "
+#~ "GET %s)"
+
+#~ msgid ""
+#~ ": No valid local copy of avatar available; flood limit exceeded, ignoring"
+#~ msgstr ""
+#~ ": No hay disponible una copia local v�lida avatar; l�mite de saturaci�n "
+#~ "excedido: ignorando"
+
+#~ msgid ": No valid local copy of avatar available, ignoring"
+#~ msgstr ": No hay disponible una copia local v�lida del avatar, ignorando"
+
+#~ msgid ": No such nickname in the user database, ignoring the change"
+#~ msgstr ""
+#~ ": No existe tal nick en la base de datos de usuarios, ignorando el cambio"
+
+#~ msgid "Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%S %S)"
+#~ msgstr "Ignorando la petici�n DCC %S de \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%S %S)"
+
+#~ msgid "Processing DCC %Q request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%S %S)"
+#~ msgstr ""
+#~ "Procesando petici�n DCC %Q solicitada desde \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%"
+#~ "S %S)"
+
+#~ msgid "Unable to process the above request: Cannot load DCC module (%s)"
+#~ msgstr ""
+#~ "Incapaz de procesar la petici�n anterior: no pude cargar el m�dulo DCC (%"
+#~ "s)"
+
+#~ msgid "Unable to process the above request: DCC module may be broken"
+#~ msgstr ""
+#~ "Incapaz de procesar la petici�n anterior: el m�dulo DCC puede estar roto"
+
+#~ msgid "Channel operators"
+#~ msgstr "Operadores de canal"
+
+#~ msgid "Voiced users"
+#~ msgstr "Usuarios con voz"
+
+#~ msgid "Half-operators"
+#~ msgstr "semioperadores"
+
+#~ msgid "Ban masks"
+#~ msgstr "M�scaras de prohibici�n"
+
+#~ msgid "Color free (no ANSI colors)"
+#~ msgstr "Libre de colores (sin colores ANSI)"
+
+#~ msgid "Ban exception masks"
+#~ msgstr "M�scaras de excepciones a prohibiciones"
+
+#~ msgid "Invite exception masks or forbid /INVITE"
+#~ msgstr "M�scaras de excepci�n de invitaci�n o prohibir /INVITE"
+
+#~ msgid "Secret"
+#~ msgstr "Secreto"
+
+#~ msgid "Private"
+#~ msgstr "Privado"
+
+#~ msgid "Topic change restricted"
+#~ msgstr "Cambio de tema restringido"
+
+#~ msgid "Invite only"
+#~ msgstr "Solo por invitaci�n"
+
+#~ msgid "No external messages"
+#~ msgstr "Sin mensajes externos"
+
+#~ msgid "Anonymous or protected user"
+#~ msgstr "Usuario an�nimo o protegido"
+
+#~ msgid "Quiet or channel owner"
+#~ msgstr "Callado o propietario del canal"
+
+#~ msgid "Limited number of users"
+#~ msgstr "N�mero limitado de usuarios"
+
+#~ msgid "Key"
+#~ msgstr "Clave"
+
+#~ msgid "Moderated"
+#~ msgstr "Moderado"
+
+#~ msgid "Registered"
+#~ msgstr "Registrado"
+
+#~ msgid "Censor swear words"
+#~ msgstr "Palabrotas censuradas"
+
+#~ msgid ""
+#~ "Impossible to speak and change nick if not authenticated with NickServ"
+#~ msgstr ""
+#~ "Imposible hablar y cambiar el nick si no te autentificas con NickServ"
+
+#~ msgid "Impossible to change nick if not authenticated with NickServ"
+#~ msgstr "Imposible cambiar el nick si no te autentificas con NickServ"
+
+#~ msgid "Only registered nicks can join"
+#~ msgstr "S�lo pueden unirse los nicks registrados"
+
+#~ msgid "No kicks able (unless U-Line)"
+#~ msgstr "No se permiten expulsiones (salvo que se ponga una U-Line)"
+
+#~ msgid "IRC-Op only channel"
+#~ msgstr "Canal s�lo para IRC-Op"
+
+#~ msgid "Server/Network/Tech Admin only channel"
+#~ msgstr "Canal s�lo para Administrador de Servidor/Red/T�cnico"
+
+#~ msgid "Forbid /KNOCK"
+#~ msgstr "Prohibido /KNOCK"
+
+#~ msgid "Redirect on channel full"
+#~ msgstr "Redirigir cuando el canal se llene"
+
+#~ msgid "Forbid channel CTCPs"
+#~ msgstr "Se prohiben CTCPs de canal"
+
+#~ msgid "User-operators OR Auditorium: /NAMES and /WHO show only ops"
+#~ msgstr ""
+#~ "Usuarios operadores y auditorio : /NAMES y /WHO s�lo muestran los ops"
+
+#~ msgid "Unknown channel mode"
+#~ msgstr "Modo de canal desconocido"
+
+#~ msgid ""
+#~ "One or more standard mode flags are missing in the server available "
+#~ "modes.\n"
+#~ "This is caused either by a non RFC1459-compliant IRC daemon or a broken "
+#~ "server reply.\n"
+#~ "Server umodes seem to be '%s' and channel modes seem to be '%s'.\n"
+#~ "Ignoring this reply and assuming that the basic set of modes is "
+#~ "available.\n"
+#~ "If you have strange problems, try changing the server."
+#~ msgstr ""
+#~ "Faltan uno o m�s flags est�ndar en los modos disponibles del servidor.\n"
+#~ "Esto puede deberse a un servidor IRC no compatible con la RFC-1459 o a "
+#~ "unarespuesta erronea del servidor.\n"
+#~ "Los modos del servidor parecen ser '%s' y los modos de canal '%s'.\n"
+#~ "Se ignora esta respuesta y se asume que est� disponible el conjunto "
+#~ "b�sico de modos.\n"
+#~ "Si tienes problemas extra�os, prueba a cambiar de servidor."
+
+#~ msgid "Available user modes:"
+#~ msgstr "Modos de usuario disponibles:"
+
+#~ msgid "o: IRC operator (OPER)"
+#~ msgstr "o: operador de IRC (OPER)"
+
+#~ msgid "O: Local IRC operator (LOCOP)"
+#~ msgstr "O: Operador de IRC local (LOCOP)"
+
+#~ msgid "i: Invisible"
+#~ msgstr "i: Invisible"
+
+#~ msgid "w: Recipient for WALLOPS messages"
+#~ msgstr "w: Destinatario de mensajes WALLOPS"
+
+#~ msgid ""
+#~ "r: User with restricted connection (or recipient for messages about "
+#~ "rejected bots)"
+#~ msgstr ""
+#~ "r: Usuario con conexi�n restringida (o receptor para mensajes sobre bots "
+#~ "rechazado)"
+
+#~ msgid "s: Recipient for server notices"
+#~ msgstr "s: Destinatario de noticias de servidor"
+
+#~ msgid "z: Recipient for oper wallop messages"
+#~ msgstr "z: Destinatario de mensajes oper wallop"
+
+#~ msgid "c: Recipient for cconn messages"
+#~ msgstr "c: Destinatario de mensajes cconn"
+
+#~ msgid "k: Recipient for server kill messages"
+#~ msgstr "k: Destinatario de mensajes server kill"
+
+#~ msgid "f: Recipient for full server notices"
+#~ msgstr "f: Destinatario de full server notices"
+
+#~ msgid "y: Spy :)"
+#~ msgstr "y: Esp�a :)"
+
+#~ msgid "d: Obscure 'DEBUG' flag"
+#~ msgstr "d: Flag de 'DEPURACI�N' oscura"
+
+#~ msgid "n: Recipient for nick changes"
+#~ msgstr "n: Receptor de cambios de nick"
+
+#~ msgid ": Unknown user mode"
+#~ msgstr ": Modo de usuario desconocido"
+
+#~ msgid "Available channel modes:"
+#~ msgstr "Modos de canal disponibles:"
+
+#~ msgid ""
+#~ "Server %Q version %S supporting user modes '%S' and channel modes '%S'"
+#~ msgstr ""
+#~ "Servidor %Q versi�n %S soportando modos de usuario '%S' y modos de canal "
+#~ "'%S'"
+
+#~ msgid "This server supports the WATCH notify list method, it will be used"
+#~ msgstr ""
+#~ "Este servidor soporta el m�todo de lista de notificaci�n WATCH: voy a "
+#~ "usarlo"
+
+#~ msgid "The current network is %Q"
+#~ msgstr "La red actual es %Q"
+
+#~ msgid "This server supports the CODEPAGE command, it will be used"
+#~ msgstr "Este servidor soporta el comando CODEPAGE, y ser� usado"
+
+#~ msgid "This server supports: %s"
+#~ msgstr "El servidor soporta: %s"
+
+#~ msgid "End of NAMES for \r!c\r%Q\r"
+#~ msgstr "Fin de NAMES para \r!c\r%Q\r"
+
+#~ msgid "%c\r!s\r%s\r%c: %Q"
+#~ msgstr "%c\r!n\r%s\r%c: %Q"
+
+#~ msgid "Names for \r!c\r%Q\r: %Q"
+#~ msgstr "Nombres para \r!c\r%Q\r: %Q"
+
+#~ msgid "(unknown)"
+#~ msgstr "(desconocido)"
+
+#~ msgid "Channel topic is: %Q"
+#~ msgstr "El tema del canal es: %Q"
+
+#~ msgid "Topic for \r!c\r%Q\r is: %Q"
+#~ msgstr "El tema para \r!c\r%Q\r es: %Q"
+
+#~ msgid "No channel topic is set"
+#~ msgstr "No se ha puesto tema de canal"
+
+#~ msgid "No topic is set for channel \r!c\r%Q\r"
+#~ msgstr "No se ha puesto tema para el canal \r!c\r%Q\r"
+
+#~ msgid "Topic was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r on %Q"
+#~ msgstr "El tema fue puesto por \r!n\r%Q\r!%Q@\r!h\r%Q\r el %Q"
+
+#~ msgid "Topic was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+#~ msgstr "El tema fue puesto por \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+
+#~ msgid "Topic for \r!c\r%Q\r was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r on %Q"
+#~ msgstr ""
+#~ "El tema para \r!c\r%Q\r fue puesto por \r!n\r%Q\r!%Q@\r!h\r%Q\r el %Q"
+
+#~ msgid "Topic for \r!c\r%Q\r was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+#~ msgstr "El tema para \r!c\r%Q\r fue puesto por \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+
+#~ msgid "Channel mode for \r!c\r%Q\r is %s"
+#~ msgstr "El modo de canal para \r!c\r%Q\r es %s"
+
+#~ msgid "User mode for \r!n\r%Q\r is %s"
+#~ msgstr "Modo de usuario para \r!n\r%Q\r es %s"
+
+#~ msgid "End of channel %Q for \r!c\r%Q\r"
+#~ msgstr "Fin del canal %Q para \r!c\r%Q\r"
+
+#~ msgid "ban list"
+#~ msgstr "lista de prohibidos"
+
+#~ msgid "invite list"
+#~ msgstr "lista de invitados"
+
+#~ msgid "ban exception list"
+#~ msgstr "lista de excepciones a prohibiciones"
+
+#~ msgid "%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"
+#~ msgstr "%Q para \r!c\r%Q\r: \r!m-%c\r%Q\r (puesto por %Q el %Q)"
+
+#~ msgid "Ban listing"
+#~ msgstr "Lista de prohibidos"
+
+#~ msgid "Invite listing"
+#~ msgstr "Lista de invitados"
+
+#~ msgid "Ban exception listing"
+#~ msgstr "Listado de excepciones a prohibiciones"
+
+#~ msgid ""
+#~ "WHO entry for %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cChannel%c: \r!c\r%Q\r, %"
+#~ "cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAway%c: %Q, %cReal "
+#~ "name%c: %Q"
+#~ msgstr ""
+#~ "Entrada WHO para %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cCanal%c: \r!c\r%Q\r, %"
+#~ "cServidor%c: \r!s\r%Q\r, %cSaltos%c: %d, %cFlags%c: %Q, %cAusentes%c: %Q, "
+#~ "%cNombre real%c: %Q"
+
+#~ msgid "End of WHO list for %Q"
+#~ msgstr "Fin de lista WHO para %Q"
+
+#~ msgid ""
+#~ "Something really weird is happening: the server is refusing all the login "
+#~ "nicknames..."
+#~ msgstr ""
+#~ "Est� sucediendo algo realmente malo: el servidor rechaza todos los nicks "
+#~ "de entrada..."
+
+#~ msgid ""
+#~ "The server is refusing all the login nicknames: giving up, you must send "
+#~ "the nickname manually"
+#~ msgstr ""
+#~ "El servidor est� rechazando todos los nicks de entrada: en adelante, "
+#~ "debes enviar el nick de forma manual"
+
+#~ msgid "No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."
+#~ msgstr ""
+#~ "No hay forma de autentificarse como '\r!n\r%Q\r' (%d: %Q), intentando '%"
+#~ "Q'..."
+
+#~ msgid "%c\r!n\r%Q\r%c is away: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c est� ausente: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+#~ msgstr "%c\r!n\r%Q\r%c es %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#~ msgid "%c\r!n\r%Q\r%c's real name: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c's nombre real: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c was %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+#~ msgstr "%c\r!n\r%Q\r%c era %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#~ msgid "%c\r!n\r%Q\r%c's real name was: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c's el nombre real era: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c's channels: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c's canales: %Q"
+
+#~ msgid "Received a broken RPL_WHOISIDLE, can't evaluate the idle time"
+#~ msgstr ""
+#~ "Recibido un RPL_WHOISIDLE erroneo, no puedo calcular el tiempo de espera"
+
+#~ msgid "%c\r!n\r%Q\r%c's idle time: %ud %uh %um %us"
+#~ msgstr "%c\r!n\r%Q\r%c's tiempo de espera: %ud %uh %um %us"
+
+#~ msgid "%c\r!n\r%Q\r%c's signon time: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c's tiempo de entrada: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c's server: \r!s\r%Q\r - %Q"
+#~ msgstr "%c\r!n\r%Q\r%c's servidor: \r!s\r%Q\r - %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c is authenticated as %Q"
+#~ msgstr "%c\r!n\r%Q\r%c est� autentificado como %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c's info: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c's info: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c WHOIS info from \r!s\r%Q\r"
+#~ msgstr "%c\r!n\r%Q\r%c info WHOIS de \r!s\r%Q\r"
+
+#~ msgid "%c\r!n\r%Q\r%c WHOWAS info from \r!s\r%Q\r"
+#~ msgstr "%c\r!n\r%Q\r%c info WHOWAS de \r!s\r%Q\r"
+
+#~ msgid "Can't evaluate creation time"
+#~ msgstr "No puedo evaluar la fecha de creaci�n"
+
+#~ msgid "Channel was created at %Q"
+#~ msgstr "El canal fu� creado el %Q"
+
+#~ msgid "Channel \r!c\r%Q\r was created at %Q"
+#~ msgstr "El canal \r!c\r%Q\r fu� creado el %Q"
+
+#~ msgid "USERHOST info: %Q"
+#~ msgstr "Informaci�n USERHOST: %Q"
+
+#~ msgid "Channel list begin: channel, users, topic"
+#~ msgstr "Comienza la lista de canal: canales, usuarios, temas"
+
+#~ msgid "List: %Q"
+#~ msgstr "Lista: %Q"
+
+#~ msgid "End of LIST"
+#~ msgstr "Fin de LIST"
+
+#~ msgid "Link: %Q"
+#~ msgstr "Enlace: %Q"
+
+#~ msgid "End of LINKS"
+#~ msgstr "Fin de LINKS"
+
+#~ msgid "[Leaving away status after %ud %uh %um %us]: %Q"
+#~ msgstr "[Abandonando el estado ausente despu�s de %ud %uh %um %us]: %Q"
+
+#~ msgid "[Leaving away status]: %Q"
+#~ msgstr "[Abandonando el estado ausente]: %Q"
+
+#~ msgid "Restoring pre-away nickname (%Q)"
+#~ msgstr "Recuperando el nick anterior al estado de ausencia (%Q)"
+
+#~ msgid "[Entering away status]: %Q"
+#~ msgstr "[Entrando en estado ausente]: %Q"
+
+#~ msgid "Setting away nickname (%Q)"
+#~ msgstr "Poniendo el nick de modo ausente (%Q)"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's server info: %s"
+#~ msgstr "%c\r!s\r%s\r%c's info de servidor: %Q"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's administrator is %s"
+#~ msgstr "%c\r!s\r%s\r%c's el administrador es %Q"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's contact adress is %s"
+#~ msgstr "%c\r!s\r%s\r%c's direcci�n de contacto es %Q"
+
+#~ msgid "\r!n\r%Q\r invited %Q into channel %Q"
+#~ msgstr "\r!n\r%Q\r invitado %Q al canal %Q"
+
+#~ msgid "%c\r!s\r%s\r%c's information:"
+#~ msgstr "%c\r!s\r%s\r%c's informaci�n:"
+
+#~ msgid "End of %c\r!s\r%s\r%c's information"
+#~ msgstr "Fin de %c\r!s\r%s\r%c's informaci�n"
+
+#~ msgid "%c\r!s\r%s\r%c's time is %Q"
+#~ msgstr "%c\r!s\r%s\r%c's hora es %Q"
+
+#~ msgid "%Q: no such server"
+#~ msgstr "%Q: no existe el servidor"
+
+#~ msgid "%Q: no such channel"
+#~ msgstr "%Q: no existe el canal"
+
+#~ msgid "Cannot sent to channel: %Q"
+#~ msgstr "No puedo enviar al canal: %Q"
+
+#, fuzzy
+#~ msgid "Cannot sent text to channel %Q: %Q"
+#~ msgstr "Has abandonado el canal \r!c\r%Q\r: %Q"
+
+#, fuzzy
+#~ msgid "Cannot sent to channel"
+#~ msgstr "La ventana actual no es un canal"
+
+#, fuzzy
+#~ msgid "Cannot sent text to channel %Q"
+#~ msgstr "Actualizando el estado de ausente para el canal %Q"
+
+#~ msgid "Your encoding is now %Q"
+#~ msgstr "Tu codificaci�n es ahora %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c's codepage is %Q: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c's p�gina de c�digos es %Q: %Q"
+
+#~ msgid "Your user mode is %s"
+#~ msgstr "Tu modo de usuario es %s"
+
+#~ msgid "Hostname resolution aborted"
+#~ msgstr "Cancelada la resoluci�n del nombre de m�quina"
+
+#~ msgid "Attempting %Q to %Q (%Q) on port %u"
+#~ msgstr "Intentando %Q a %Q (%Q) en el puerto %u"
+
+#~ msgid "secure connection"
+#~ msgstr "conexi�n segura"
+
+#~ msgid "Attempting to 'bounce' on proxy %s on port %u (protocol %s)"
+#~ msgstr "Intentando 'rebotar' en el proxy %s en el puerto %u (protocolo %s)"
+
+#~ msgid "Using cached proxy IP address (%s)"
+#~ msgstr "Utilizando direcci�n IP de proxy cacheada (%s)"
+
+#~ msgid "Unable to look up the IRC proxy hostname: Can't start the DNS slave"
+#~ msgstr ""
+#~ "Incapaz de buscar el nombre de m�quina del proxy irc: no pude iniciar el "
+#~ "DNS esclavo"
+
+#~ msgid "Resuming direct server connection"
+#~ msgstr "Continuando conexi�n directa al servidor"
+
+#~ msgid "Looking up the proxy hostname (%s)..."
+#~ msgstr "Buscando el nombre de m�quina del proxy (%s)..."
+
+#~ msgid "Can't find the proxy IP address: %Q"
+#~ msgstr "No pude encontrar la direcci�n IP del proxy: %Q"
+
+#~ msgid "Proxy hostname resolved to %s"
+#~ msgstr "Nombre de m�quina del proxy resuelto a %s"
+
+#~ msgid "Proxy %s has a nickname: %s"
+#~ msgstr "El proxy %s tiene un nick: %s"
+
+#~ msgid "Using cached server IP address (%s)"
+#~ msgstr "Utilizando direcci�n IP de servidor cacheada (%s)"
+
+#~ msgid "Unable to look up the server hostname: Can't start the DNS slave"
+#~ msgstr ""
+#~ "Incapaz de encontrar el nombre de m�quina del servidor: no pude iniciar "
+#~ "el DNS esclavo"
+
+#~ msgid "Looking up the server hostname (%s)..."
+#~ msgstr "Resolviendo el nombre del servidor (%s)..."
+
+#~ msgid "Can't find the server IP address: %Q"
+#~ msgstr "No puedo encontrar la direcci�n IP del servidor: %Q"
+
+#~ msgid "If this server is an IPv6 one, try /server -i %s"
+#~ msgstr "Si este server utiliza IPv6, intente /server -i %s"
+
+#~ msgid "Server hostname resolved to %s"
+#~ msgstr "Nombre del servidor resuelto a: %s"
+
+#~ msgid "Real hostname for %s is %s"
+#~ msgstr "El nombre de m�quina real de %s es %s"
+
+#~ msgid "Server %s has a nickname: %s"
+#~ msgstr "El servidor %s tiene un nick: %s"
+
+#~ msgid "The specified bind address (%Q) is not valid"
+#~ msgstr "La direcci�n de enlace (bind) especificada (%Q) no es v�lida"
+
+#~ msgid ""
+#~ "The specified bind address (%Q) is not valid (the interface it refers to "
+#~ "might be down)"
+#~ msgstr ""
+#~ "La direcci�n de enlace especificada (%Q) no es v�lida (la interfaz a la "
+#~ "que se refiere puede estar ca�da)"
+
+#~ msgid "The system-wide IPv6 bind address (%s) is not valid"
+#~ msgstr ""
+#~ "La direcci�n general de sistema de enlace (bind) IPv6 (%s) no es v�lida"
+
+#~ msgid ""
+#~ "The system-wide IPv6 bind address (%s) is not valid (the interface it "
+#~ "refers to might be down)"
+#~ msgstr ""
+#~ "La direcci�n general de sistema de enlace (bind) IPv6 (%s) no es v�lida "
+#~ "(la interfaz a la que se refiere puede estar ca�da)"
+
+#~ msgid "The system-wide IPv4 bind address (%s) is not valid"
+#~ msgstr ""
+#~ "La direcci�n general de sistema de enlace (bind) IPv4 (%s) no es v�lida"
+
+#~ msgid ""
+#~ "The system-wide IPv4 bind address (%s) is not valid (the interface it "
+#~ "refers to might be down)"
+#~ msgstr ""
+#~ "La direcci�n general de sistema de enlace (bind) IPv4 (%s) no es v�lida "
+#~ "(la interfaz a la que se refiere puede estar ca�da"
+
+#~ msgid "Configure Servers..."
+#~ msgstr "Configurar Servidores..."
+
+#~ msgid ""
+#~ "Allows you to configure the servers and eventually to connect to them"
+#~ msgstr ""
+#~ "Permite configurar los servidores y eventualmenet conectarse a ellos"
+
+#~ msgid "Manage Addons..."
+#~ msgstr "Gestionar Funcionalidades Adicionales..."
+
+#~ msgid "Allows you to manage the script-based addons"
+#~ msgstr "Permite gestionar las funcionalidades adicionales basadas en script"
+
+#~ msgid "Configure Registered Users..."
+#~ msgstr "Configurar Usuarios Registrados..."
+
+#~ msgid "Shows a dialog that allows editing the registered user entries"
+#~ msgstr ""
+#~ "Muestra un di�logo que permite editar las entradas de usuarios registrados"
+
+#~ msgid "Configure Identity..."
+#~ msgstr "Configurar Identidad..."
+
+#~ msgid "Allows you to configure nickname, username, avatar etc..."
+#~ msgstr "Permite configurar tu nick, nombre de usuario, avatar, etc..."
+
+#~ msgid "Show SocketSpy..."
+#~ msgstr "Mostrar Esp�a de Sockets..."
+
+#~ msgid "Shows a window that allows monitoring the socket traffic"
+#~ msgstr ""
+#~ "Muestra una ventana que permite monitorizar el tr�fico de los sockets"
+
+#~ msgid "Get Network Links"
+#~ msgstr "Obtener Enlaces de Red"
+
+#~ msgid "Shows a window that allows viewing the network links"
+#~ msgstr "Muestra una ventana que permite visualizar los enlaces de red"
+
+#~ msgid "Get Channel List"
+#~ msgstr "Obtener Lista de Canales"
+
+#~ msgid "Shows a window that allows listing the network channels"
+#~ msgstr "Muestra una ventana que permite listar los canales de la red"
+
+#~ msgid "Configure KVIrc..."
+#~ msgstr "Configurar KVIrc..."
+
+#~ msgid "Shows the general options dialog"
+#~ msgstr "Muestra el di�logo general de opciones"
+
+#~ msgid "Customize Toolbars..."
+#~ msgstr "Personalizar Barras de Herramientas..."
+
+#~ msgid "Shows a window that allows editing script toolbars"
+#~ msgstr ""
+#~ "Muestra una ventana que permite editar los scripts de las barras de "
+#~ "herramientas"
+
+#~ msgid "Join Channels..."
+#~ msgstr "Unirse a Canales..."
+
+#~ msgid "Shows a dialog that allows you joing channels"
+#~ msgstr "Muestra un di�logo que te permite unirte a canales"
+
+#~ msgid "Edit Actions..."
+#~ msgstr "Editar Acciones..."
+
+#~ msgid "Shows a window that allows editing actions"
+#~ msgstr "Muestra una ventana que permite editar las acciones"
+
+#~ msgid "Edit Aliases..."
+#~ msgstr "Editar Alias..."
+
+#~ msgid "Shows a window that allows editing aliases"
+#~ msgstr "Muestra una ventana que permite editar los alias"
+
+#~ msgid "Edit Events..."
+#~ msgstr "Editar Eventos..."
+
+#~ msgid "Shows a window that allows editing script events"
+#~ msgstr "Muestra una ventana que permite editar los eventos de script"
+
+#~ msgid "Edit Popups..."
+#~ msgstr "Editar Men�s Emergentes..."
+
+#~ msgid "Shows a window that allows editing popup menus"
+#~ msgstr "Muestra una ventana que te permite editar los men�s emergentes"
+
+#~ msgid "Edit Raw Events..."
+#~ msgstr "Editar Eventos Puros..."
+
+#~ msgid "Shows a window that allows editing raw scripting events"
+#~ msgstr "Muestra una ventana que permite editar los eventos de script puros"
+
+#~ msgid "New Script Tester"
+#~ msgstr "Nuevo Comprobador de Script"
+
+#~ msgid "Creates an embedded editor for long scripts"
+#~ msgstr "Crea un editor embebido para scripts grandes"
+
+#~ msgid "Execute Script..."
+#~ msgstr "Ejecutar Script..."
+
+#~ msgid "Allows executing a KVS script from file"
+#~ msgstr "Permite ejecutar un script KVS desde un archivo"
+
+#~ msgid "Help Index"
+#~ msgstr "Indice de la Ayuda"
+
+#~ msgid "Shows the documentation index"
+#~ msgstr "Muestra el �ndice de la ayuda"
+
+#~ msgid "Subscribe to the Mailing List"
+#~ msgstr "Suscribirse a la Lista de Correo"
+
+#~ msgid "Allows subscribing to the KVIrc mailing list"
+#~ msgstr "Permite suscribirse a la lista de correo de KVIrc"
+
+#~ msgid "KVIrc WWW"
+#~ msgstr "KVIrc WWW"
+
+#~ msgid "Opens the KVIrc homepage"
+#~ msgstr "Abre la P�gina Web de KVIrc"
+
+#~ msgid "Cascade windows"
+#~ msgstr "Ventanas en cascada"
+
+#~ msgid "Arranges the MDI windows in a maximized-cascade fashion"
+#~ msgstr "Organiza las ventanas MDI en un estilo de cascada maximizada"
+
+#~ msgid "Tiles the MDI windows with the currently selected tile method"
+#~ msgstr ""
+#~ "Embaldosa las ventanas MDI con el m�todo de embaldosado seleccionado"
+
+#~ msgid "Minimize all windows"
+#~ msgstr "Minimizar todas las ventanas"
+
+#~ msgid "Minimized all the currently visible MDI windows"
+#~ msgstr "Minimiza todas las ventanas MDI actualmente visibles"
+
+#~ msgid "New IRC Context"
+#~ msgstr "Nuevo Contexto de IRC"
+
+#~ msgid "Creates a new IRC context console"
+#~ msgstr "Crea una nueva consola de contexto de IRC"
+
+#~ msgid "Quit KVIrc"
+#~ msgstr "Salir de KVIrc"
+
+#~ msgid "Quits KVIrc closing all the current connections"
+#~ msgstr "Sale de KVIrc cerrando todas las conexiones actuales"
+
+#~ msgid "IRC Context Display"
+#~ msgstr "Ventana de Contexto de IRC"
+
+#~ msgid "Shows a small display with IRC context informations"
+#~ msgstr ""
+#~ "Muestra una peque�a ventana con las informaciones de contexto de IRC"
+
+#~ msgid "Acts as a separator for other items: performs no action"
+#~ msgstr ""
+#~ "Actua como un separador para otros elementos: no realiza ninguna acci�n"
+
+#~ msgid "Connect/Disconnect"
+#~ msgstr "Conectar/Desconectar"
+
+#~ msgid ""
+#~ "Allows you to connect to a server or to terminate the current connection"
+#~ msgstr "Permite conectarse a un servidor o finalizar la conexi�n actual"
+
+#~ msgid "Connect"
+#~ msgstr "Conectar"
+
+#~ msgid "Abort Connection"
+#~ msgstr "Cancelar Conexi�n"
+
+#~ msgid "Join Channel"
+#~ msgstr "Unirse a un Canal"
+
+#~ msgid "Shows a popup menu that allows quickly selecting a channel to join"
+#~ msgstr ""
+#~ "Muestra un men� emergente que permite seleccionar r�pidamente un canal "
+#~ "para unirse"
+
+#~ msgid "Change Nickname"
+#~ msgstr "Cambiar Nick"
+
+#~ msgid "Shows a popup menu that allows quickly changing the nickname"
+#~ msgstr "Muestra un men� emergente que permite cambiar r�pidamente el nick"
+
+#~ msgid "Connect To"
+#~ msgstr "Conectar a"
+
+#~ msgid "Shows a popup menu that allows quickly connecting to a server"
+#~ msgstr ""
+#~ "Muestra un men� emergente que permite conectarse r�pidamente a un servidor"
+
+#~ msgid "Shows a popup menu that allows quickly changing user modes"
+#~ msgstr ""
+#~ "Muestra un men� emergente que permite cambiar r�pidamente los modos de "
+#~ "usuario"
+
+#~ msgid "Server Notices (+s)"
+#~ msgstr "Noticias del Servidor (+s)"
+
+#~ msgid "Away/Back"
+#~ msgstr "Ausentarse/Volver"
+
+#~ msgid "Allows entering and leaving away state"
+#~ msgstr "Permite entrar y salir del estado ausente"
+
+#~ msgid "Enter Away Mode"
+#~ msgstr "Entrar en Modo Ausente"
+
+#~ msgid "Leave Away Mode"
+#~ msgstr "Abandonar el Modo Ausente"
+
+#~ msgid "Irc Tools"
+#~ msgstr "Herramientas de IRC"
+
+#~ msgid "Shows a popup menu with some IRC Tools"
+#~ msgstr "Muestra un men� emergente con algunas herramientas de IRC"
+
+#~ msgid "Irc Actions"
+#~ msgstr "Acciones IRC"
+
+#~ msgid "Shows a popup menu with some IRC Actions"
+#~ msgstr "Muestra un men� emergente con algunas acciones IRC"
+
+#~ msgid "Failed to set the encoding to %Q: mapping not available."
+#~ msgstr ""
+#~ "Fall� la configuraci�n para la codificaci�n a %Q: mapeo no disponible."
+
+#~ msgid "Changed text encoding to %Q"
+#~ msgstr "Cambiada la c�dificaci�n de texto a %Q"
+
+#~ msgid "Connection to server established"
+#~ msgstr "Conexi�n establecida con el servidor"
+
+#~ msgid "[LINK WARNING]: Socket message truncated to 512 bytes."
+#~ msgstr "[Alerta de enlace]: Mensaje de socket truncado a 512 bytes."
+
+#~ msgid ""
+#~ "The server seems to support the WATCH notify list method, will try to use "
+#~ "it"
+#~ msgstr ""
+#~ "Este servidor parece soportar el m�todo de lista de notificaci�n WATCH, "
+#~ "intentar� usarlo."
+
+#~ msgid "Can't resolve local host address, using user supplied one (%Q)"
+#~ msgstr ""
+#~ "No se pudo resolver la direcci�n local, usando la suministrada por el "
+#~ "usuario (%Q)"
+
+#~ msgid "Can't resolve local host address, using default 127.0.0.1"
+#~ msgstr ""
+#~ "No se pudo resolver la direcci�n local, usando la direcci�n por defecto "
+#~ "127.0.0.1"
+
+#~ msgid "Local host address is %Q"
+#~ msgstr "La direcci�n local de la m�quina es %Q"
+
+#~ msgid "The server seems to have changed the idea about the local hostname"
+#~ msgstr ""
+#~ "El servidor parece haber cambiado de idea acerca del nombre de m�quina "
+#~ "local"
+
+#~ msgid ""
+#~ "You're probably using a broken bouncer or maybe something weird is "
+#~ "happening on the IRC server"
+#~ msgstr ""
+#~ "Probablemente est�s usando un repetidor estropeado o algo muy malo est� "
+#~ "sucediendo en el servidor IRC"
+
+#~ msgid ""
+#~ "Here goes your \"broken bouncer hack\": The server has changed the "
+#~ "hostname but I'll ignore the IP address change"
+#~ msgstr ""
+#~ "Ah� va tu \"truco del repetidor estropeado\": El servidor ha cambiado el "
+#~ "nombre de m�quina pero ignorar� el cambio de direcci�n IP"
+
+#~ msgid "The local IP address as seen by the IRC server is %Q"
+#~ msgstr "La direcci�n IP local vista por el servidor IRC es %Q"
+
+#~ msgid "Can't start the DNS slave thread"
+#~ msgstr "No se pudo iniciar el hilo de DNS esclavo"
+
+#~ msgid "Unable to resolve the local hostname as seen by the IRC server: %Q"
+#~ msgstr ""
+#~ "No es posible resolver el nombre de la m�quina local tal y como la ve el "
+#~ "servidor de IRC: %Q"
+
+#~ msgid "Looking up the local hostname as seen by the IRC server (%Q)"
+#~ msgstr ""
+#~ "Buscando el nombre de m�quina local tal y como lo ve el servidor IRC (%Q)"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unable to resolve the local hostname as seen by the IRC server: %Q, using "
+#~ "previously resolved %Q"
+#~ msgstr ""
+#~ "No es posible resolver el nombre de la m�quina local tal y como la ve el "
+#~ "servidor de IRC: %Q"
+
+#~ msgid "Local hostname as seen by the IRC server resolved to %s"
+#~ msgstr "Buscando el nombre de m�quina del proxy (%s)"
+
+#~ msgid "Using server specific username (%Q)"
+#~ msgstr "Utilizando el nombre usuario espec�fico del servidor (%Q)"
+
+#~ msgid "Using network specific username (%Q)"
+#~ msgstr "Utilizando el nombre de usuario espec�fico de la red (%Q)"
+
+#~ msgid "Using server specific nickname (%Q)"
+#~ msgstr "Utilizando el nick espec�fico del servidor (%Q)"
+
+#~ msgid "Using network specific nickname (%Q)"
+#~ msgstr "Utilizando el nick espec�fico de la red (%Q)"
+
+#~ msgid "Using server specific real name (%Q)"
+#~ msgstr "Utilizando el nombre real espec�fico del servidor (%Q)"
+
+#~ msgid "Using network specific real name (%Q)"
+#~ msgstr "Utilizando el nombre real espec�fico de la red (%Q)"
+
+#~ msgid "Logging in as %Q!%Q :%Q"
+#~ msgstr "Entrando como %Q!%Q :%Q"
+
+#~ msgid "Sending %s as password"
+#~ msgstr "Enviando %s como clave"
+
+#~ msgid "Executing scheduled network specific \"on connect\" commands"
+#~ msgstr ""
+#~ "Ejecutando los comandos espec�ficos de la red programados \"al conectar\""
+
+#~ msgid "Executing scheduled server specific \"on connect\" commands"
+#~ msgstr ""
+#~ "Ejecutando los comandos espec�ficos de servidor programados \"al conectar"
+#~ "\""
+
+#~ msgid ""
+#~ "The server refused the suggested nickname (%s) and named you %s instead"
+#~ msgstr ""
+#~ "El servidor rechaz� el nick sugerido (%s) y le nombr� %s en su lugar"
+
+#~ msgid "Login operations complete, happy ircing!"
+#~ msgstr "Operaciones de entrada completas, feliz irc!"
+
+#~ msgid "Executing scheduled network specific \"on login\" commands"
+#~ msgstr ""
+#~ "Ejecutando los comandos espec�ficos de la red programados \"al entrar\""
+
+#~ msgid "Executing scheduled server specific \"on login\" commands"
+#~ msgstr ""
+#~ "Ejecutando los comandos espec�ficos de servidor programados \"al entrar\""
+
+#~ msgid "Setting configured user mode"
+#~ msgstr "Poniendo el modo configurado por el usuario"
+
+#~ msgid "Auto-joining network specific channels"
+#~ msgstr "Entrando autom�ticamente en canales espec�ficos de la red"
+
+#~ msgid "Auto-joining server specific channels"
+#~ msgstr "Entrando autom�ticamente en canales espec�ficos del servidor"
+
+#~ msgid "Updating away state for channel %Q"
+#~ msgstr "Actualizando el estado de ausente para el canal %Q"
+
+#~ msgid ""
+#~ "Ops...it looks like I can't load modules on this sytem.\n"
+#~ "I have been looking for the %s library but I haven't been able to load "
+#~ "it\n"
+#~ "due to the following error: \"%s\"\n"
+#~ "Aborting."
+#~ msgstr ""
+#~ "Ups...parece que no puedo cargar m�dulos en este sistema.\n"
+#~ "He buscado la biblioteca %s pero no he podido cargarla\n"
+#~ "debido al siguiente error: \"%s\"\n"
+#~ "Interrumpiendo."
+
+#~ msgid ""
+#~ "Ops...it looks like you have a broken distribution.\n"
+#~ "The setup module does not export the \"setup_begin\" function.\n"
+#~ "Aborting!"
+#~ msgstr ""
+#~ "Ops... parece que tienes una distribuci�n defectuosa.\n"
+#~ "El m�dulo de configuraci�n no exporta la funci�n \"setup_begin\".\n"
+#~ "�Interrumpiendo!"
+
+#~ msgid "Setup aborted"
+#~ msgstr "Configuraci�n interrumpida"
+
+#~ msgid ""
+#~ "Ops...it looks like you have a broken distribution.\n"
+#~ "The setup module does not export the \"setup_finish\" function.\n"
+#~ "Trying to continue anyway..."
+#~ msgstr ""
+#~ "Ops... parece que tienes una distribuci�n defectuosa.\n"
+#~ "El m�dulo de configuraci�n no exporta la funci�n \"setup_finish\".\n"
+#~ "Intentando continuar de todas formas..."
+
+#, fuzzy
+#~ msgid ""
+#~ "Failed writing the kvirc home directory path to %Q.\n"
+#~ "You will need to do it manually , otherwise KVirc will restart with\n"
+#~ "the setup!"
+#~ msgstr ""
+#~ "Fall� la escritura en el directorio de kvirc local %s.\n"
+#~ "Necesitas configurarlo manualmente, o KVIrc rearrancar� con \n"
+#~ "el proceso de configuraci�n!"
+
+#~ msgid "Normal text"
+#~ msgstr "Texto normal"
+
+#~ msgid "Selection"
+#~ msgstr "Selecci�n"
+
+#~ msgid "Highlighted text"
+#~ msgstr "Texto resaltado"
+
+#~ msgid "URL foreground"
+#~ msgstr "Color de primer plano de URL"
+
+#~ msgid "Link overlay foreground"
+#~ msgstr "Enlace de la capa de primer plano"
+
+#~ msgid "Parser error"
+#~ msgstr "Error del analizador"
+
+#~ msgid "Parser warning"
+#~ msgstr "Aviso del analizador"
+
+#~ msgid "Host lookup result"
+#~ msgstr "Resultado de la b�squeda de la m�quina"
+
+#~ msgid "Socket message"
+#~ msgstr "Mensaje de socket"
+
+#~ msgid "Socket warning"
+#~ msgstr "Aviso de socket"
+
+#~ msgid "Socket error"
+#~ msgstr "Error en socket"
+
+#~ msgid "System error"
+#~ msgstr "Error de sistema"
+
+#~ msgid "Raw data to server"
+#~ msgstr "Datos puros al servidor"
+
+#~ msgid "Connection status"
+#~ msgstr "Estado de la conexi�n"
+
+#~ msgid "System warning"
+#~ msgstr "Aviso del sistema"
+
+#~ msgid "System message"
+#~ msgstr "Mensaje del sistema"
+
+#~ msgid "Unhandled server reply"
+#~ msgstr "Respuesta del servidor no procesada"
+
+#~ msgid "Server information"
+#~ msgstr "Informaci�n del servidor"
+
+#~ msgid "Server Message of the Day"
+#~ msgstr "Mensaje del D�a del servidor"
+
+#~ msgid "Server ping"
+#~ msgstr "Pings de servidor"
+
+#~ msgid "Join message"
+#~ msgstr "Mensaje Join"
+
+#~ msgid "Unrecognized/broken message"
+#~ msgstr "Mensaje no reconocido/erroneo"
+
+#~ msgid "Topic message"
+#~ msgstr "Mensaje de tema"
+
+#~ msgid "Own private message"
+#~ msgstr "Mensaje privado propio"
+
+#~ msgid "Channel private message"
+#~ msgstr "Mensaje privado al canal"
+
+#~ msgid "Query private message"
+#~ msgstr "Mensaje de pregunta privada"
+
+#~ msgid "CTCP reply"
+#~ msgstr "Respuesta CTCP"
+
+#~ msgid "CTCP request replied"
+#~ msgstr "Solicitud CTCP respondida"
+
+#~ msgid "CTCP request ignored"
+#~ msgstr "Solicitud CTCP ignorada"
+
+#~ msgid "CTCP request flood warning"
+#~ msgstr "Solicitud CTCP de aviso de saturaci�n"
+
+#~ msgid "CTCP request unknown"
+#~ msgstr "Solicitud CTCP desconocida"
+
+#~ msgid "User action"
+#~ msgstr "Acci�n de usuario"
+
+#~ msgid "Avatar change"
+#~ msgstr "Cambio de avatar"
+
+#~ msgid "Split message"
+#~ msgstr "Mensaje de divisi�n"
+
+#~ msgid "Quit on netsplit message"
+#~ msgstr "Salir con el mensaje de netsplit"
+
+#~ msgid "Nick changes"
+#~ msgstr "Cambios de nick"
+
+#~ msgid "+o mode change"
+#~ msgstr "cambio de modo +o"
+
+#~ msgid "-o mode change"
+#~ msgstr "cambio de modo -o"
+
+#~ msgid "+v mode change"
+#~ msgstr "cambio de modo +v"
+
+#~ msgid "-v mode change"
+#~ msgstr "cambio de modo -v"
+
+#~ msgid "Multiple user mode change"
+#~ msgstr "Cambio m�ltiple del modo de usuario"
+
+#~ msgid "Channel key change"
+#~ msgstr "Cambio de clave de canal"
+
+#~ msgid "Channel limit change"
+#~ msgstr "Cambio del l�mite de canal"
+
+#~ msgid "+b mode change"
+#~ msgstr "cambio de modo +b"
+
+#~ msgid "-b mode change"
+#~ msgstr "cambio de modo -b"
+
+#~ msgid "+e mode change"
+#~ msgstr "cambio de modo +e"
+
+#~ msgid "-e mode change"
+#~ msgstr "cambio de modo -e"
+
+#~ msgid "+I mode change"
+#~ msgstr "cambio de modo +I"
+
+#~ msgid "-I mode change"
+#~ msgstr "cambio de modo -I"
+
+#~ msgid "Multiple channel mode change"
+#~ msgstr "Cambio de modo en m�ltiples canales"
+
+#~ msgid "Who reply"
+#~ msgstr "Respuesta Who"
+
+#~ msgid "DCC request"
+#~ msgstr "Petici�n DCC"
+
+#~ msgid "DCC message"
+#~ msgstr "Mensaje DCC"
+
+#~ msgid "DCC error"
+#~ msgstr "Error DCC"
+
+#~ msgid "Nickname problem"
+#~ msgstr "Problema con el nick"
+
+#~ msgid "Whois user reply"
+#~ msgstr "Respuesta de usuario whois"
+
+#~ msgid "Whois channels reply"
+#~ msgstr "Respuesta de canal whois"
+
+#~ msgid "Whois idle reply"
+#~ msgstr "Respuesta en espera de whois"
+
+#~ msgid "Whois server reply"
+#~ msgstr "Respuesta whois del servidor"
+
+#~ msgid "Whois other reply"
+#~ msgstr "Respuesta de un tercero a whois"
+
+#~ msgid "Channel creation time reply"
+#~ msgstr "Respuesta de fecha de creaci�n del canal"
+
+#~ msgid "Notify list joins"
+#~ msgstr "Notificar uniones a la lista"
+
+#~ msgid "Notify list leaves"
+#~ msgstr "Notificar abandonos de la lista"
+
+#~ msgid "Own encrypted private message"
+#~ msgstr "Mensaje cifrado privado propio"
+
+#~ msgid "Channel encrypted private message"
+#~ msgstr "Canal cifrado privado propio"
+
+#~ msgid "Query encrypted private message"
+#~ msgstr "Pedir mensaje privado cifrado"
+
+#~ msgid "DCC chat message"
+#~ msgstr "Mensaje de DCC chat"
+
+#~ msgid "Encrypted DCC chat message"
+#~ msgstr "Mensaje cifrado de DCC chat"
+
+#~ msgid "Login operations completed"
+#~ msgstr "Operaciones de entrada completas"
+
+#~ msgid "Kick action"
+#~ msgstr "Acci�n expulsar"
+
+#~ msgid "Links reply"
+#~ msgstr "Respuesta enlaces"
+
+#~ msgid "Spam report"
+#~ msgstr "Informe spam"
+
+#~ msgid "ICQ message"
+#~ msgstr "Mensaje ICQ"
+
+#~ msgid "ICQ user-message"
+#~ msgstr "Mensaje de usuario ICQ"
+
+#~ msgid "Outgoing ICQ user-message"
+#~ msgstr "Mensaje saliente de usuario ICQ"
+
+#~ msgid "Channel notice"
+#~ msgstr "Noticia de canal"
+
+#~ msgid "Encrypted channel notice"
+#~ msgstr "Noticia de canal cifrado"
+
+#~ msgid "Query notice"
+#~ msgstr "Noticia privada"
+
+#~ msgid "Encrypted query notice"
+#~ msgstr "Noticia privada cifrada"
+
+#~ msgid "Server notice"
+#~ msgstr "Noticia del servidor"
+
+#~ msgid "Halfop mode change"
+#~ msgstr "Cambio de modo semioperador"
+
+#~ msgid "Unknown CTCP reply"
+#~ msgstr "Respuesta CTCP desconocida"
+
+#~ msgid "NickServ message"
+#~ msgstr "Mensaje NickServ"
+
+#~ msgid "ChanServ message"
+#~ msgstr "Mensaje ChanServ"
+
+#~ msgid "Away message"
+#~ msgstr "Mensaje de ausencia"
+
+#~ msgid "Ident message"
+#~ msgstr "Mensaje de ident"
+
+#~ msgid "Channel list message"
+#~ msgstr "Mensaje de lista de canales"
+
+#~ msgid "Half-deop mode change"
+#~ msgstr "Cambio de modo quitar semioperador"
+
+#~ msgid "Invite message"
+#~ msgstr "Mensaje invite"
+
+#~ msgid "Multimedia message"
+#~ msgstr "Mensaje multimedia"
+
+#~ msgid "Query trace message"
+#~ msgstr "Rastrear mensaje privado"
+
+#~ msgid "Wallops message"
+#~ msgstr "Mensaje wallops"
+
+#~ msgid "Join error message"
+#~ msgstr "Mensaje de error al unirse"
+
+#~ msgid "Broadcast private message"
+#~ msgstr "Mensaje privado difundido"
+
+#~ msgid "Broadcast notice"
+#~ msgstr "Difundir noticia"
+
+#~ msgid "Am kicked"
+#~ msgstr "Am expulsado"
+
+#~ msgid "Am op'd"
+#~ msgstr "Am opeado"
+
+#~ msgid "Am voiced"
+#~ msgstr "Am con voz"
+
+#~ msgid "Am deop'd"
+#~ msgstr "Am desopeado"
+
+#~ msgid "Am devoiced"
+#~ msgstr "Am silenciado"
+
+#~ msgid "Am halfop'd"
+#~ msgstr "Am semiopeado"
+
+#~ msgid "Am de-halfop'd"
+#~ msgstr "Am semidesopeado"
+
+#~ msgid "Ban matching my mask"
+#~ msgstr "Prohibir concordando con mi m�scara"
+
+#~ msgid "Unban matching my mask"
+#~ msgstr "Permiso concuerda con mi m�scara"
+
+#~ msgid "Ban exception matching my mask"
+#~ msgstr "Excepci�n de prohibici�n concuerda con mi m�scara"
+
+#~ msgid "Ban unexception matching my mask"
+#~ msgstr "Prohibici�n sin excepci�n concuerda con mi m�scara"
+
+#~ msgid "Invite exception matching my mask"
+#~ msgstr "Excepci�n de invitaci�n concuerda con mi m�scara"
+
+#~ msgid "Invite unexception matching my mask"
+#~ msgstr "Invitaci�n sin excepci�n concuerda con mi m�scara"
+
+#~ msgid "Ignored user message"
+#~ msgstr "Mensaje de usuario ignorado"
+
+#~ msgid "Server statistics"
+#~ msgstr "Estad�sticas del servidor"
+
+#~ msgid "SSL message"
+#~ msgstr "Mensaje SSL"
+
+#~ msgid "Search"
+#~ msgstr "B�squeda"
+
+#~ msgid "Generic success"
+#~ msgstr "Suceso gen�rico"
+
+#~ msgid "Generic status"
+#~ msgstr "Estado gen�rico"
+
+#~ msgid "Generic verbose message"
+#~ msgstr "Mensaje gen�rico detallado"
+
+#~ msgid "Generic warning"
+#~ msgstr "Aviso gen�rico"
+
+#~ msgid "Generic error"
+#~ msgstr "Error gen�rico"
+
+#~ msgid "Generic critical error"
+#~ msgstr "Error cr�tico gen�rico"
+
+#~ msgid "Chan admin status set"
+#~ msgstr "Puesto el estado de admin de canal"
+
+#~ msgid "Chan admin status unset"
+#~ msgstr "Quitado el estado de admin de canal"
+
+#~ msgid "Own chan admin status set"
+#~ msgstr "Puesto estatus de admin propietario del canal"
+
+#~ msgid "Own chan admin status unset"
+#~ msgstr "Quitado estatus de admin propietario del canal"
+
+#~ msgid "Userop mode change"
+#~ msgstr "Cambio de modo usuario operador"
+
+#~ msgid "User-deop mode change"
+#~ msgstr "Cambio de modo usuario no operador"
+
+#~ msgid "Am userop'd"
+#~ msgstr "Am opeado"
+
+#~ msgid "Am de-userop'd"
+#~ msgstr "Am desopeado"
+
+#~ msgid "Verbose/Debug"
+#~ msgstr "Detallado/Depuraci�n"
+
+#~ msgid "Chan owner status set"
+#~ msgstr "Puesto el estatus de propietario de canal"
+
+#~ msgid "Chan owner status unset"
+#~ msgstr "Quitado el estatus de propietario de canal"
+
+#~ msgid "Own chan owner status set"
+#~ msgstr "Puesto el estatus de propietario del canal"
+
+#~ msgid "Own chan owner status unset"
+#~ msgstr "Quitado estatus de propietario del canal"
+
+#~ msgid "Server error"
+#~ msgstr "Error del servidor"
+
+#~ msgid "Boolean options (1/0)"
+#~ msgstr "Opciones boleanas (1/0)"
+
+#~ msgid "Rectangle options (x,y,width,height)"
+#~ msgstr "Opciones para el rect�ngulo (x,y,ancho,alto)"
+
+#~ msgid "String options (string value)"
+#~ msgstr "Opciones de cadena (valor de la cadena)"
+
+#~ msgid "Color options (#RRGGBB)"
+#~ msgstr "Opciones de color (#RRGGBB)"
+
+#~ msgid "Mirccolor options (#RRGGBB)"
+#~ msgstr "Opciones de color Mirc (#RRGGBB)"
+
+#~ msgid "Irc context color options (#RRGGBB)"
+#~ msgstr "Opciones de color de contexto Irc (#RRGGBB)"
+
+#~ msgid "Pixmap options (image path)"
+#~ msgstr "Opciones del gr�fico (ruta de la imagen)"
+
+#~ msgid "Unsigned integer options (unsigned integer constant)"
+#~ msgstr "Opciones de enteros sin signo (constante unsigned integer)"
+
+#~ msgid "Font options (family,pointsize,style,charset,weight,flags (biusf))"
+#~ msgstr ""
+#~ "Opciones de fuentes (familia,tama�o de punto,estilo,conjunto de "
+#~ "caracteres,anchura, flags (biusf))"
+
+#~ msgid "Message color options (image_id,foreground,background,logFlag (0/1))"
+#~ msgstr ""
+#~ "Opciones de color de mensaje (imagen,primer plano,fondo,logFlag (0/1))"
+
+#~ msgid "String list options (comma separated list of strings)"
+#~ msgstr ""
+#~ "Opciones de lista de caracteres (lista de cadenas separadas por comas)"
+
+#~ msgid "Icon Table"
+#~ msgstr "Tabla de Iconos"
+
+#~ msgid "%Q is on IRC"
+#~ msgstr "%Q est� en el IRC"
+
+#~ msgid "%Q has left IRC"
+#~ msgstr "%Q abandon� el IRC"
+
+#~ msgid "Notify list: No users to check for, quitting"
+#~ msgstr "Lista de Notificaci�n: No hay usuarios que comprobar, deteniendo"
+
+#~ msgid ""
+#~ "Notify list: Timeout (%d sec) is too short, resetting to something more "
+#~ "reasonable (15 sec)"
+#~ msgstr ""
+#~ "Lista de Notificaci�n: Timeout (%d segs) es demasiado peque�o, poniendo "
+#~ "un valor m�s razonable (15 segundos)"
+
+#~ msgid "Notify list: Notify list empty, quitting"
+#~ msgstr "Lista de Notificaci�n: lista de notificaci�n vac�a, deteniendo"
+
+#~ msgid ""
+#~ "Notify list: ISON delay (%d sec) is too short, resetting to something "
+#~ "more reasonable (5 sec)"
+#~ msgstr ""
+#~ "Lista de notificaci�n: el retardo ISON (%d segs) es demasiado peque�o, "
+#~ "poniendo algo m�s razonable (5 segs)"
+
+#~ msgid "Notify list: Checking for: %Q"
+#~ msgstr "Lista de notificaci�n: comprobando: %Q"
+
+#~ msgid ""
+#~ "Notify list: Hey! You've used ISON behind my back? (I might be confused "
+#~ "now...)"
+#~ msgstr ""
+#~ "Lista de notificaci�n: �Eh! �Has utilizado ISON a mis espaldas? (Ahora "
+#~ "puedo estar confundido...)"
+
+#~ msgid "registration mask changed, or nickname is being used by someone else"
+#~ msgstr ""
+#~ "cambi� la m�scara de registro o el nick est� siendo usado por alguien"
+
+#~ msgid ""
+#~ "Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q"
+#~ "\r] does not match (registration mask does not match, or nickname is "
+#~ "being used by someone else)"
+#~ msgstr ""
+#~ "Lista de notificaci�n: Parece que \r!n\r%Q\r est� conectado, pero la "
+#~ "m�scara [%Q@\r!h\r%Q\r] no concuerda (alguien est� usando su nick o la "
+#~ "m�scara que usted puso no concuerda)"
+
+#~ msgid ""
+#~ "Notify list: Unexpected inconsistency, registered user DB modified? "
+#~ "(restarting)"
+#~ msgstr ""
+#~ "Lista de notificaci�n: inconsistencia inesperada, �base de datos de "
+#~ "usuarios registrados modificada? (reiniciando)"
+
+#~ msgid ""
+#~ "Notify list: Unexpected inconsistency, expected \r!n\r%Q\r in the "
+#~ "registered user DB"
+#~ msgstr ""
+#~ "Lista de notificaci�n: inconsistencia inesperada, esperaba tener a \r!n\r%"
+#~ "Q\r en la BD de usuarios registrados..."
+
+#~ msgid ""
+#~ "Notify list: USERHOST delay (%d sec) is too short, resetting to something "
+#~ "more reasonable (5 sec)"
+#~ msgstr ""
+#~ "Lista de notificaci�n: El retardo de la lista de notificaci�n USERHOST (%"
+#~ "d segs) es demasiado peque�o, reinici�ndolo a algo m�s razonable (5 segs)"
+
+#~ msgid "Notify list: Unexpected inconsistency, userhost list is empty!"
+#~ msgstr ""
+#~ "Lista de notificaci�n: Inconsistencia inesperada, �la lista de usuarios-"
+#~ "m�quinas esa vac�a!"
+
+#~ msgid "Notify list: Checking userhost for: %Q"
+#~ msgstr "Lista de notificaci�n: Comprobando usuario-m�quina para: %Q"
+
+#~ msgid ""
+#~ "Notify list: Hey! You've used USERHOST behind my back? (I might be "
+#~ "confused now...)"
+#~ msgstr ""
+#~ "Lista de notificaci�n: �Eh! �Has utilizado USERHOST a mis espaldas? "
+#~ "(puedo estar confundido ahora...)"
+
+#~ msgid "Notify list: Broken USERHOST reply from the server? (%s)"
+#~ msgstr ""
+#~ "Lista de notificaci�n: �obtuve una respuesta USERHOST erronea del "
+#~ "servidor? (%s)"
+
+#~ msgid ""
+#~ "Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST "
+#~ "reply was received, will recheck in the next loop"
+#~ msgstr ""
+#~ "Lista de notificaci�n: Parece ser que \r!n\r%Q\r se desconect� mientras "
+#~ "esperaba su respuesta USERHOST, se recomprobar� en el pr�ximo ciclo"
+
+#~ msgid "No users in the notify list"
+#~ msgstr "No hay usuarios en la lista de notificaci�n"
+
+#~ msgid "Notify list: Checking for:%Q"
+#~ msgstr "Lista de notificaci�n: Comprobando:%Q"
+
+#~ msgid ""
+#~ "Notify list: Timeout (%d sec) is too short, resetting to something more "
+#~ "reasonable (5 sec)"
+#~ msgstr ""
+#~ "Lista de notificaci�n: El tiempo de expiraci�n (%d segs) es demasiado "
+#~ "corto, inici�ndolo a algo m�s razonable (5 segs)"
+
+#~ msgid "Notify list: Adding watch entries for%Q"
+#~ msgstr "Lista de notificaci�n: A�adiendo entradas watch para%Q"
+
+#~ msgid "watch entry listing requested by user"
+#~ msgstr "listado de entradas vigiladas solicitada por el usuario"
+
+#~ msgid "possible watch list desync"
+#~ msgstr "posible desync de la lista de vigilancia"
+
+#~ msgid "registration mask changed or desync with the watch service"
+#~ msgstr ""
+#~ "cambi� la m�scara de registro o se desincroniz� con el servicio de "
+#~ "vigilancia"
+
+#~ msgid ""
+#~ "Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q"
+#~ "\r] does not match (watch: registration mask does not match, or nickname "
+#~ "is being used by someone else)"
+#~ msgstr ""
+#~ "Lista de notificaci�n : \r!n\r%Q\r parece estar conectado, pero la "
+#~ "m�scara [%Q@\r!h\r%Q\r] no concuerda (watch: alguien m�s est� usando su "
+#~ "nick o su m�scara de registro no concuerda)"
+
+#~ msgid ""
+#~ "Notify list: Unexpected inconsistency, registered user DB modified? "
+#~ "(watch: restarting)"
+#~ msgstr ""
+#~ "Lista de Notificaci�n: inconsistencia inesperada, �BD de usuarios "
+#~ "registrados modificada? (watch: reiniciando)"
+
+#~ msgid "watch entry added by user"
+#~ msgstr "entrada de vigilancia a�adida por el usuario"
+
+#~ msgid "removed from watch list"
+#~ msgstr "eliminada de la lista de vigilancia"
+
+#~ msgid "Notify list: Stopped watching for \r!n\r%Q\r"
+#~ msgstr "Lista de notificaci�n: parando seguimiento para: \r!n\r%Q\r"
+
+#~ msgid "watch"
+#~ msgstr "vigilancia"
+
+#~ msgid "Notify list: \r!n\r%Q\r is offline (watch)"
+#~ msgstr "Lista de notificaci�n: \r!n\r%Q\r est� desconectado (watch)"
+
+#~ msgid "unmatched watch list entry"
+#~ msgstr "entrada de la lista de vigilancia no coincidente"
+
+#, fuzzy
+#~ msgid "commandline"
+#~ msgstr "No se especific� l�nea de comando"
+
+#~ msgid "[SSL]: %c%s"
+#~ msgstr "[SSL]: %c%s"
+
+#~ msgid "[SSL]: Cipher: %c%s"
+#~ msgstr "[SSL]: Cifrador: %c%s"
+
+#~ msgid "[SSL]: Version: %c%s"
+#~ msgstr "[SSL]: Versi�n: %c%s"
+
+#~ msgid "[SSL]: Bits: %c%d (%d used)"
+#~ msgstr "[SSL]: Bits: %c%d (%d usados)"
+
+#~ msgid "[SSL]: Version: %c%d"
+#~ msgstr "[SSL]: Versi�n: %c%d"
+
+#~ msgid "[SSL]: Serial number: %c%d"
+#~ msgstr "[SSL]: N�mero de serie: %c%d"
+
+#~ msgid "[SSL]: Subject:"
+#~ msgstr "[SSL]: Tema:"
+
+#~ msgid "[SSL]: Common name: %c%s"
+#~ msgstr "[SSL]: Nombre com�n: %c%s"
+
+#~ msgid "[SSL]: Organization: %c%s"
+#~ msgstr "[SSL]: Organizaci�n: %c%s"
+
+#~ msgid "[SSL]: Organizational unit: %c%s"
+#~ msgstr "[SSL]: Unidad organizativa: %c%s"
+
+#~ msgid "[SSL]: Country: %c%s"
+#~ msgstr "[SSL]: Condado: %c%s"
+
+#~ msgid "[SSL]: State or province: %c%s"
+#~ msgstr "[SSL]: Estado o Provincia: %c%s"
+
+#~ msgid "[SSL]: Locality: %c%s"
+#~ msgstr "[SSL]: Localidad: %c%s"
+
+#~ msgid "[SSL]: Issuer:"
+#~ msgstr "[SSL]: Emisor:"
+
+#~ msgid "[SSL]: Public key: %c%s (%d bits)"
+#~ msgstr "[SSL]: Clave p�blica: %c%s (%d bits)"
+
+#~ msgid "[SSL]: Signature type: %c%s"
+#~ msgstr "[SSL]: Tipo de firma: %c%s"
+
+#~ msgid "[SSL]: Signature contents: %c%s"
+#~ msgstr "[SSL]: Contenidos de la firma: %c%s"
+
+#~ msgid "Peer X509 certificate"
+#~ msgstr "Certificado X509 de la otra parte"
+
+#~ msgid "[SSL]: The peer didn't provide a certificate"
+#~ msgstr "[SSL]: La otra parte no proporcion� un certificado"
+
+#~ msgid "Current transmission cipher"
+#~ msgstr "Cifrador actual de transmisi�n"
+
+#~ msgid "[SSL]: Can't find out the current cipher info"
+#~ msgstr "[SSL]: No puedo encontrar la informaci�n de cifrado actual"
+
+#~ msgid "[%s]: [SSL]: Using certificate file %s"
+#~ msgstr "[%s]: [SSL]: Usando archivo de certificado %s"
+
+#~ msgid ""
+#~ "[%s]: [SSL ERROR]: File I/O error while trying to use the certificate "
+#~ "file %s"
+#~ msgstr ""
+#~ "[%s]: [ERROR SSL]: Error de E/S de archivo mientras intentaba utilizar el "
+#~ "archivo de certificado %s"
+
+#~ msgid "[%s]: [SSL ERROR]: %s"
+#~ msgstr "[%s]: [ERROR SSL]: %s"
+
+#~ msgid "[%s]: [SSL]: Using private key file %s"
+#~ msgstr "[%s]: [SSL]: Usando archivo de clave privada %s"
+
+#~ msgid ""
+#~ "[%s]: [SSL ERROR]: File I/O error while trying to use the private key "
+#~ "file %s"
+#~ msgstr ""
+#~ "[%s]: [ERROR SSL]: error de E/S en archivo mientras intentaba usar el "
+#~ "archivo de clave privada %s"
+
+#~ msgid "Ops... for some reason the link object has been destroyed"
+#~ msgstr "Ops... por alguna raz�n el objeto de enlace ha sido destruido"
+
+#~ msgid "Using filtered IRC protocol: Link filter is \"%Q\""
+#~ msgstr "Usando protocolo IRC filtrado: El filtro de enlace es \"%Q\""
+
+#~ msgid "Failed to set up the link filter \"%Q\", will try with plain IRC"
+#~ msgstr ""
+#~ "Fall� el inicio del filtro de enlace \"%Q\", se intentar� con IRC plano"
+
+#~ msgid "Failed to start the connection: %Q"
+#~ msgstr "Fallo al comenzar la conexi�n: %Q"
+
+#~ msgid "Contacting %Q %s (%s) on port %u"
+#~ msgstr "Contactando con %Q %s (%s) en el puerto %u"
+
+#~ msgid "proxy host"
+#~ msgstr "servidor proxy"
+
+#~ msgid "IRC server"
+#~ msgstr "Servidor IRC"
+
+#~ msgid "Low-level transport connection established [%s (%s:%u)]"
+#~ msgstr "Establecida conexi�n de transporte de bajo nivel [%s (%s:%u)]"
+
+#~ msgid "Starting Secure Socket Layer handshake"
+#~ msgstr "Comenzando la negociaci�n SSL"
+
+#~ msgid "%Q established [%s (%s:%u)]"
+#~ msgstr "%Q establecida [%s (%s:%u)]"
+
+#~ msgid "Secure proxy connection"
+#~ msgstr "Conexi�n segura a proxy"
+
+#~ msgid "Proxy connection"
+#~ msgstr "Conexi�n a proxy"
+
+#~ msgid "Negotiating relay information"
+#~ msgstr "Negociando informaci�n a retransmitir"
+
+#~ msgid "Sent connection request, waiting for acknowledgement"
+#~ msgstr "Enviada petici�n de conexi�n, esperando la confirmaci�n"
+
+#~ msgid "Sent target host data, waiting for acknowledgement"
+#~ msgstr "Enviados los datos de la m�quina de destino, esperando confirmaci�n"
+
+#~ msgid "Sent auth method request, waiting for acknowledgement"
+#~ msgstr ""
+#~ "Enviado petici�n de m�todo de autentificaci�n, esperando la confirmaci�n"
+
+#~ msgid "Sent username and password, waiting for acknowledgement"
+#~ msgstr "Enviados usuario y clave, esperando la confirmaci�n"
+
+#~ msgid "Sent connection request, waiting for \"HTTP 200\" acknowledgement"
+#~ msgstr ""
+#~ "Enviada petici�n de conexi�n, esperando para la confirmaci�n \"HTTP 200\""
+
+#~ msgid "[SSL]: %Q"
+#~ msgstr "[SSL]: %Q"
+
+#~ msgid "[SSL ERROR]: %Q"
+#~ msgstr "[ERROR SSL]: %Q"
+
+#~ msgid "[PROXY]: %Q"
+#~ msgstr "[PROXY]: %Q"
+
+#~ msgid "[PROXY ERROR]: %Q"
+#~ msgstr "[ERROR DE PROXY]: %Q"
+
+#~ msgid "[SOCKET]: %Q"
+#~ msgstr "[SOCKET]: %Q"
+
+#~ msgid "[SOCKET ERROR]: %Q"
+#~ msgstr "[ERROR DE SOCKET]: %Q"
+
+#~ msgid "[SOCKET WARNING]: %Q"
+#~ msgstr "[ALERTA DE SOCKET]: %Q"
+
+#~ msgid "Binding to local address %s"
+#~ msgstr "Asoci�ndose a la direcci�n local %s"
+
+#~ msgid ""
+#~ "Binding to local address %s failed: the kernel will choose the correct "
+#~ "interface"
+#~ msgstr ""
+#~ "Fall� la asociaci�n a la direcci�n local %s: el nucleo escoger� el "
+#~ "interfaz correcto"
+
+#~ msgid "Using HTTP protocol."
+#~ msgstr "Usando protocolo HTTP."
+
+#~ msgid "Using SOCKSV4 protocol."
+#~ msgstr "Utilizando protocolo SOCKSV4."
+
+#~ msgid "Using SOCKSV5 protocol."
+#~ msgstr "Utilizando protocolo SOCKSV5."
+
+#~ msgid "We can accept auth method 0 (no auth)"
+#~ msgstr "Podemos aceptar el m�todo auth 0 (sin auth)"
+
+#~ msgid "We can accept auth method 0 (no auth) or 2 (user/pass)"
+#~ msgstr "Podemos aceptar el m�todo auth 0 (sin auth) o 2 (usuario/clave)"
+
+#~ msgid "Proxy response: auth OK: access granted"
+#~ msgstr "Respuesta del proxy: auth OK: acceso permitido"
+
+#~ msgid "Proxy response: Auth method OK: using method 0 (no auth)"
+#~ msgstr "Respuesta del proxy: M�todo de auth OK: usando m�todo 0 (no auth)"
+
+#~ msgid "Proxy response: Auth method OK: using method 2 (user/pass)"
+#~ msgstr ""
+#~ "Respuesta del proxy: M�todo auth OK: usando m�todo 2 (usuario/clave)"
+
+#~ msgid "Proxy response: target data OK: request granted"
+#~ msgstr "Respuesta del proxy: destino de datos OK: Acceso permitido"
+
+#~ msgid "Proxy response: "
+#~ msgstr "Respuesta del proxy: "
+
+#~ msgid "Proxy said something about \""
+#~ msgstr "El proxy dijo algo acerca de \""
+
+#~ msgid "\" ...that looks like an error to me..."
+#~ msgstr "\" ...eso me parece un error..."
+
+#~ msgid "Server X509 certificate"
+#~ msgstr "Certificado X509 del servidor"
+
+#~ msgid "The server didn't provide a certificate"
+#~ msgstr "El servidor no proporcion� un certificado"
+
+#~ msgid "Unable to determine the current cipher"
+#~ msgstr "Incapaz de determinar el cifrador actual"
+
+#~ msgid "Partial socket write: packet broken into smaller pieces."
+#~ msgstr ""
+#~ "Escritura parcial en socket: paquete dividido en trozos m�s peque�os."
+
+#~ msgid "Installation problems ?"
+#~ msgstr "�Problemas de instalaci�n?"
+
+#~ msgid ""
+#~ "<b>Ooops...</b><br><br><b>There are some reasons that make me think that "
+#~ "your KVIrc installation is incomplete.</b><br><br>I might be wrong, but "
+#~ "you seem to miss some of the features that the default KVIrc script "
+#~ "provides.This may happen because you have upgraded to an unstable cvs "
+#~ "version, because you have accidentally deleted or damaged your "
+#~ "configuration files, because you have installed an incomplete script or "
+#~ "because you have hit a bug in KVIrc.<br><br>I can repeat the installation "
+#~ "of the default script in order to restore the missing features.<br><b>Do "
+#~ "you want the default script to be restored ?</b><br><br><font size=\"-1"
+#~ "\">Hint: If you're a scripter and have intentionally removed some of the "
+#~ "scripting features then you may safely click on \"No and Don't Ask Me "
+#~ "Again\", otherwise it might be a good idea to click \"Yes\". If you still "
+#~ "want to choose \"No\" you can always restore the default script by "
+#~ "choosing the appropriate entry from the \"Scripting\" menu.</font>"
+#~ msgstr ""
+#~ "<b>Ooops...</b><br><br><b>Hay algunas razones que me hacen pensar que tu "
+#~ "instalaci�n de KVIrc es incompleta.</b><br><br>Puedo estar equivocado, "
+#~ "pero parece que no tienes algunas caracter�sticas proporcionadas por el "
+#~ "script por defecto de KVIrc. Esto puede suceder porque has actualizado a "
+#~ "una versi�n inestable desde el CVS, debido a que has borrado o da�ado "
+#~ "accidentalmente tus archivos de configuraci�n, debido a que has instalado "
+#~ "un script incompleto o porque has encontrado un error de KVIrc."
+#~ "<br><br>Puedo repetir la instalaci�n del script por defecto para intentar "
+#~ "recuperar las funcionalidades perdidas.<br><br><font size=\"-1\">Idea: Si "
+#~ "eres un scripter y has quitado intencionadamente algunas de las "
+#~ "funcionalidades del script puedes escoger con seguridad \"No, y no me "
+#~ "preguntes de nuevo\", en cualquier otro caso es una buena idea pulsar en "
+#~ "\"S�\". Si todav�a quieres escoger \"No\" siempre puedes recuperar el "
+#~ "script por defecto escogiendo la entrada apropiada en el men� \"Scripting"
+#~ "\".</font>"
+
+#~ msgid "No and Don't Ask Me Again"
+#~ msgstr "No, y no me preguntes de nuevo"
+
+#~ msgid "Restore Default Script - KVIrc"
+#~ msgstr "Restaurar Script por defecto - KVIrc"
+
+#~ msgid ""
+#~ "You are about to restore the default script.<br>This will erase any "
+#~ "script changes you have made.<br>Do you wish to proceed?"
+#~ msgstr ""
+#~ "Se dispone a restaurar el script por defecto.<br>Esto borrar� cualquier "
+#~ "cambio que hubiera hecho a los scripts.<br>�Desea continuar?"
+
+#~ msgid "Remote command received (%s ...)"
+#~ msgstr "Comando remoto recibido (%s ...)"
+
+#~ msgid "File download failed"
+#~ msgstr "Fall� la descarga de archivos"
+
+#~ msgid "File download from %1 failed"
+#~ msgstr "Fall� la descarga del archivo desde %1"
+
+#~ msgid "File download terminated"
+#~ msgstr "Termin� la descarga del archivo"
+
+#~ msgid "File download from %1 terminated"
+#~ msgstr "Termin� la descarga del archivo desde %1"
+
+#~ msgid "Avatar download failed for %Q!%Q@%Q and url %Q: %Q"
+#~ msgstr "Fall� la descarga del avatar para %Q!%Q@%Q y url %Q: %Q"
+
+#~ msgid "The commandline for media type '%s' seems to be broken"
+#~ msgstr "La l�nea de comando para el tipo de medio '%s' parece estar mal"
+
+#~ msgid "Media type of file %s matched to '%s' but no commandline specified"
+#~ msgstr ""
+#~ "El tipo de medio del archivo %s concord� con '%s' pero no se especific� "
+#~ "l�nea de comando"
+
+#~ msgid "No idea on how to play file %s (no media type match)"
+#~ msgstr ""
+#~ "No se como reproducir el archivo %s (no hay concordancia en el tipo de "
+#~ "medio)"
+
+#~ msgid "Sending out PING based lag probe"
+#~ msgstr "Enviando prueba de retraso basado en PING"
+
+#~ msgid "Sending out CTCP based lag probe"
+#~ msgstr "Enviando prueba de retraso basado en CTCP"
+
+#~ msgid "Registered lag check with reliability %u (%s)"
+#~ msgstr "Comprobaci�n de retraso registrada con fiabilidad %u (%s)"
+
+#~ msgid "Lag check completed (%s)"
+#~ msgstr "Comprobaci�n de retraso completada (%s)"
+
+#~ msgid "Lag check aborted (%s)"
+#~ msgstr "Comprobaci�n de retraso cancelada (%s)"
+
+#~ msgid "Backward compatibility action for toolbar.define"
+#~ msgstr "Compatibilidad hacia atr�s para toolbar.define"
+
+#~ msgid "IRC Context related actions"
+#~ msgstr "Acciones relativas al Contexto de IRC"
+
+#~ msgid "Generic"
+#~ msgstr "Gen�rico"
+
+#~ msgid "Generic actions"
+#~ msgstr "Acciones gen�ricas"
+
+#~ msgid "Settings"
+#~ msgstr "Configuraciones"
+
+#~ msgid "Actions related to settings"
+#~ msgstr "Acciones relacionadas con la configuraci�n"
+
+#~ msgid "Scripting"
+#~ msgstr "Scripting"
+
+#~ msgid "Scripting related actions"
+#~ msgstr "Acciones relacionadas con los scripts"
+
+#~ msgid "GUI"
+#~ msgstr "IGU"
+
+#~ msgid "Actions related to the Graphic User Interface"
+#~ msgstr "Acciones relacionadas con el Interfaz Gr�fico de Usuario"
+
+#~ msgid "IRC Channel related actions"
+#~ msgstr "Acciones relativas al canal de IRC"
+
+#~ msgid "Actions that will appear in the \"Tools\" menu"
+#~ msgstr "Acciones que aparecer�n en el men� \"Herramientas\""
+
+#~ msgid "Reconnect attempt aborted"
+#~ msgstr "Intento de reconexi�n cancelado"
+
+#~ msgid ""
+#~ "This is the first connection in this IRC context: using the global server "
+#~ "setting"
+#~ msgstr ""
+#~ "Esta es la primera conexi�n en este contexto IRC: usando la configuraci�n "
+#~ "del servidor global"
+
+#~ msgid ""
+#~ "No servers available. Check the options dialog or use the /SERVER command"
+#~ msgstr ""
+#~ "No hay servidores disponibles. Compruebe el di�logo de opciones o utilice "
+#~ "el comando /SERVER"
+
+#~ msgid ""
+#~ "Ooops.. you've hit a bug in the servers database... I have found a server "
+#~ "but not a network..."
+#~ msgstr ""
+#~ "Ooops... has encontrado un error en la base de datos de servidores... He "
+#~ "encontrado un servidor pero no una red..."
+
+#~ msgid "No proxy hosts available, resuming direct connection"
+#~ msgstr "No hay servidores proxy disponibles, continuando conexi�n directa"
+
+#~ msgid "Connection attempt failed [%s]"
+#~ msgstr "Intento de conexi�n fallido [%s]"
+
+#~ msgid "Will attempt to reconnect in %d seconds"
+#~ msgstr "Intentar� reconectar en %d segundos"
+
+#~ msgid "%d of %d"
+#~ msgstr "%d de %d"
+
+#~ msgid "Maximum number of reconnect attempts reached (%d): giving up"
+#~ msgstr "Se alcanz� el m�ximo n�mero de reintentos de conexi�n (%d): desisto"
+
+#~ msgid ""
+#~ "The connection attempt failed while using a cached IP address for the "
+#~ "current server"
+#~ msgstr ""
+#~ "El intento de conexi�n fall� cuando se usaba una direcci�n IP desde la "
+#~ "cach� para el servidor actual "
+
+#~ msgid "The problem *might* be caused by an updated DNS entry"
+#~ msgstr "El problema *podr�a* estar causado por una entrada DNS actualizada"
+
+#~ msgid "Try reconnecting with caching disabled"
+#~ msgstr "Intenta reconectar con la cach� desactivada"
+
+#~ msgid "Secure connection"
+#~ msgstr "Conexi�n segura"
+
+#~ msgid "Connection terminated [%s (%s:%u)]"
+#~ msgstr "Conexi�n terminada [%s (%s:%u)]"
+
+#~ msgid "The connection terminated unexpectedly. Trying to reconnect..."
+#~ msgstr "La conexi�n finaliz� inesperadamente. Intentando reconectar..."
+
+#~ msgid "Sent QUIT, waiting for the server to close the connection..."
+#~ msgstr "Enviado QUIT, esperando a que el servidor cierre la conexi�n..."
+
+#~ msgid "No "
+#~ msgstr "No "
+
+#~ msgid " symbol exported: not a kvirc module ?"
+#~ msgstr " est� exportado el s�mbolo: �no es un m�dulo kvirc?"
+
+#~ msgid "This module has no version informations: refusing to load it"
+#~ msgstr ""
+#~ "El m�dulo no contiene informaci�n acerca de la versi�n: se rechaza la "
+#~ "carga"
+
+#~ msgid ""
+#~ "This module was compiled for a different KVIrc version and can't be loaded"
+#~ msgstr ""
+#~ "Este m�dulo fu� compilado para una versi�n diferente de KVIrc y no se "
+#~ "cargar�"
+
+#~ msgid "Failed to execute the init routine"
+#~ msgstr "Fallo al ejecutar la rutina de inicio"
+
+#~ msgid "Loaded module '%s' (%s)"
+#~ msgstr "Cargado el m�dulo '%s' (%s)"
+
+#~ msgid "Unloaded module '%s'"
+#~ msgstr "Descargado el m�dulo '%s'"
+
+#~ msgid "This option is also available as"
+#~ msgstr "Esta opci�n tambi�n est� disponible como"
+
+#~ msgid "Channel mode"
+#~ msgstr "Modo de canal"
+
+#~ msgid "Split View"
+#~ msgstr "Dividir Vista"
+
+#~ msgid "User List"
+#~ msgstr "Lista de Usuarios"
+
+#, fuzzy
+#~ msgid "Ban Editor"
+#~ msgstr "Editor Puro"
+
+#, fuzzy
+#~ msgid "Ban Exception Editor"
+#~ msgstr "Mostrar Editor de Excepciones a Prohibiciones"
+
+#, fuzzy
+#~ msgid "Invite Exception Editor"
+#~ msgstr "Mostrar Editor de Excepciones a Invitaciones"
+
+#, fuzzy
+#~ msgid "Mode Editor"
+#~ msgstr "Mostrar Editor de Modo"
+
+#~ msgid "said something recently"
+#~ msgstr "dijo algo recientemente"
+
+#~ msgid "is talking"
+#~ msgstr "est� hablando"
+
+#~ msgid "and"
+#~ msgstr "y"
+
+#~ msgid "were talking recently"
+#~ msgstr "hablaron recientemente"
+
+#~ msgid "are talking"
+#~ msgstr "est�n hablando"
+
+#~ msgid "and other %1 users"
+#~ msgstr "y otros %1 usuarios"
+
+#~ msgid "Dead channel"
+#~ msgstr "Canal muerto"
+
+#~ msgid "operator"
+#~ msgstr "operador"
+
+#~ msgid "operators"
+#~ msgstr "operadores"
+
+#~ msgid "active user"
+#~ msgstr "usuario activo"
+
+#~ msgid "active users"
+#~ msgstr "usuarios activos"
+
+#~ msgid "hot user"
+#~ msgstr "usuario caliente"
+
+#~ msgid "hot users"
+#~ msgstr "usuarios calientes"
+
+#~ msgid "channel owner"
+#~ msgstr "propietario del canal"
+
+#~ msgid "channel owners"
+#~ msgstr "propietarios del canal"
+
+#~ msgid "channel administrator"
+#~ msgstr "administrador del canal"
+
+#~ msgid "channel administrators"
+#~ msgstr "administradores del canal"
+
+#~ msgid "half-operator"
+#~ msgstr "semioperador"
+
+#~ msgid "half-operators"
+#~ msgstr "semioperadores"
+
+#~ msgid "voiced user"
+#~ msgstr "usuario con voz"
+
+#~ msgid "voiced users"
+#~ msgstr "usuarios con voz"
+
+#~ msgid "user-operator"
+#~ msgstr "usuario operador"
+
+#~ msgid "user-operators"
+#~ msgstr "usuarios operadores"
+
+#~ msgid "user total"
+#~ msgstr "usuario total"
+
+#~ msgid "users total"
+#~ msgstr "usuarios totales"
+
+#~ msgid "No activity"
+#~ msgstr "Sin actividad"
+
+#~ msgid "Minimal activity"
+#~ msgstr "Actividad m�nima"
+
+#~ msgid "Very low activity"
+#~ msgstr "Muy baja actividad"
+
+#~ msgid "Might be low activity"
+#~ msgstr "Puede ser de baja actividad"
+
+#~ msgid "Low activity"
+#~ msgstr "Baja actividad"
+
+#~ msgid "Might be medium activity"
+#~ msgstr "Puede ser de actividad media"
+
+#~ msgid "Medium activity"
+#~ msgstr "Actividad media"
+
+#~ msgid "Might be high activity"
+#~ msgstr "Puede ser de alta actividad"
+
+#~ msgid "High activity"
+#~ msgstr "Alta actividad"
+
+#~ msgid "Might be very high activity"
+#~ msgstr "Puede ser de muy alta actividad"
+
+#~ msgid "Very high activity"
+#~ msgstr "Muy alta actividad"
+
+#~ msgid "Might be flooded with messages"
+#~ msgstr "Puedes ser saturado con mensajes"
+
+#~ msgid "Flooded with messages"
+#~ msgstr "Saturado con mensajes"
+
+#~ msgid "human"
+#~ msgstr "humana"
+
+#~ msgid "[Dead channel]"
+#~ msgstr "[Canal muerto]"
+
+#~ msgid " on "
+#~ msgstr " en "
+
+#~ msgid ""
+#~ "The crypto engine was unable to encrypt the current message (%Q): %s, no "
+#~ "data sent to the server"
+#~ msgstr ""
+#~ "El motor de cifrado no fue capaz de cifrar el siguiente mensaje (%Q): %s, "
+#~ "no se enviaron datos al servidor"
+
+#~ msgid "Sent part request, waiting for reply..."
+#~ msgstr "Enviada solicitud de partida, esperando respuesta..."
+
+#~ msgid "<b>Channel mode:</b>"
+#~ msgstr "<b>Modo de canal:</b>"
+
+#~ msgid "<br><b>Key:</b> %s"
+#~ msgstr "<br><b>Clave:</b> %s"
+
+#~ msgid "<br><b>Limit:</b> %s"
+#~ msgstr "<br><b>L�mite:</b> %s"
+
+#~ msgid "Channel synchronized in %d.%d seconds"
+#~ msgstr "Canal sincronizado en %d.%d segundos"
+
+#~ msgid "No topic message has been received from the server yet"
+#~ msgstr "El servidor a�n no ha enviado un mensaje de tema"
+
+#~ msgid "Channel topic:"
+#~ msgstr "Tema del canal:"
+
+#~ msgid "Set by"
+#~ msgstr "Puesto por"
+
+#~ msgid "Set on"
+#~ msgstr "Puesto el"
+
+#~ msgid "Double-click to edit..."
+#~ msgstr "Doble click para editar..."
+
+#~ msgid "No topic is set"
+#~ msgstr "No se ha puesto tema de canal"
+
+#~ msgid "Double-click to set..."
+#~ msgstr "Doble click para poner..."
+
+#, fuzzy
+#~ msgid "History"
+#~ msgstr "directorio"
+
+#~ msgid "Commit Changes"
+#~ msgstr "Aceptar Cambios"
+
+#~ msgid "Discard Changes"
+#~ msgstr "Descartar Cambios"
+
+#~ msgid "Copy to clipboard"
+#~ msgstr "Copiar al portapapeles"
+
+#~ msgid "CTCP Page - KVIrc"
+#~ msgstr "P�gina CTCP - KVIrc"
+
+#~ msgid "Active Bans"
+#~ msgstr "Prohibiciones Activas"
+
+#~ msgid "Active Invite Exceptions"
+#~ msgstr "Excepciones a Invitaci�n Activas"
+
+#~ msgid "Active Ban Exceptions"
+#~ msgstr "Excepciones a Prohibici�n Activas"
+
+#~ msgid "Mask"
+#~ msgstr "M�scara"
+
+#~ msgid "Set at"
+#~ msgstr "Puesto el"
+
+#~ msgid "Window List"
+#~ msgstr "Lista de Ventanas"
+
+#~ msgid ""
+#~ "<b>Shift+Drag</b> or <b>Ctrl+Drag</b> to move the applet "
+#~ "around<br><b>Right click</b> to see the other options"
+#~ msgstr ""
+#~ "<b>May�s+Arrastrar</b> o <b>Ctrl+Arrastrar</b> para mover el "
+#~ "applet<br><b>Bot�n derecho</b> para ver otras opciones"
+
+#~ msgid "<b>Right click</b> to add/remove applets"
+#~ msgstr "<b>Bot�n derecho</b> para a�adir/quitar applets"
+
+#~ msgid "Remove %Q"
+#~ msgstr "Quitar %Q"
+
+#~ msgid "Add Applet"
+#~ msgstr "A�adir Applet"
+
+#~ msgid ""
+#~ "Drag the applet while holding the Shift or Ctrl key to move it to the "
+#~ "desired position"
+#~ msgstr ""
+#~ "Arrastrar el applet mientras se mantiene pulsada la tecla May�s o Ctrl "
+#~ "para moverlo a la posici�n deseada"
+
+#~ msgid "Connection in progress..."
+#~ msgstr "Conexi�n en progreso..."
+
+#~ msgid "Login in progress..."
+#~ msgstr "Autentificaci�n en progreso..."
+
+#~ msgid "Not connected"
+#~ msgstr "Sin conexi�n"
+
+#~ msgid "No IRC context"
+#~ msgstr "No hay contexto de IRC"
+
+#, fuzzy
+#~ msgid "Crypting"
+#~ msgstr "Cifrado"
+
+#~ msgid "Private Text Encoding"
+#~ msgstr "Codificaci�n de Texto Privado"
+
+#~ msgid "Ops...I've accidentally lost the crypting engine..."
+#~ msgstr "Ops... he perdido accidentalmente el motor de cifrado..."
+
+#~ msgid "List of window types available in this release of KVIrc:"
+#~ msgstr "Lista de tipos de ventanas disponibles en esta versi�n de KVIrc"
+
+#~ msgid "Use Default Encoding"
+#~ msgstr "Usar Codificaci�n por defecto"
+
+#~ msgid "Standard"
+#~ msgstr "Est�ndar"
+
+#~ msgid "Smart"
+#~ msgstr "Inteligente"
+
+#~ msgid "&Undock"
+#~ msgstr "Quitar anclaje"
+
+#~ msgid "&Dock"
+#~ msgstr "Anclar"
+
+#~ msgid "Mi&nimize"
+#~ msgstr "Mi&nimizado"
+
+#~ msgid "Ma&ximize"
+#~ msgstr "Ma&ximizado"
+
+#~ msgid "&Restore"
+#~ msgstr "&Restaurar"
+
+#~ msgid "Text &Encoding"
+#~ msgstr "Codificaci�n de Texto"
+
+#~ msgid "Sa&ve Window Properties"
+#~ msgstr "Guardar Propiedades de &Ventana"
+
+#~ msgid "Search tools"
+#~ msgstr "Herramientas de b�squeda"
+
+#~ msgid "### Log session terminated at %s ###"
+#~ msgstr "### Sesi�n de registro terminada a las %s ###"
+
+#~ msgid "### Log session started at %s ###"
+#~ msgstr "### Sesi�n de registro iniciada a las %s ###"
+
+#~ msgid "### Existing data buffer:"
+#~ msgstr "### Buffer de datos existente:"
+
+#~ msgid "### End of existing data buffer."
+#~ msgstr "### Fin de buffer de datos existente."
+
+#~ msgid "Hide Find Window"
+#~ msgstr "Esconder Ventana de B�squeda"
+
+#~ msgid "Show Find Window"
+#~ msgstr "Mostrar Ventana de B�squeda"
+
+#~ msgid "Zoom In"
+#~ msgstr "Ampliar"
+
+#~ msgid "Zoom Out"
+#~ msgstr "Reducir"
+
+#~ msgid "Choose Temporary Font..."
+#~ msgstr "Escoja Fuente Temporal..."
+
+#~ msgid "Choose Temporary Background..."
+#~ msgstr "Escoja Fondo Temporal..."
+
+#~ msgid "Reset Temporary Background"
+#~ msgstr "Quitar Fondo Temporal"
+
+#~ msgid "Clear Buffer"
+#~ msgstr "Limpiar Buffer"
+
+#~ msgid "Choose the background image..."
+#~ msgstr "Escoja la imagen de fondo..."
+
+#~ msgid "Invalid image"
+#~ msgstr "Imagen no v�lida"
+
+#~ msgid "Failed to load the selected image"
+#~ msgstr "Fall� la carga del archivo de imagen seleccionado"
+
+#~ msgid "Pos %d"
+#~ msgstr "Pos %d"
+
+#~ msgid "Not found"
+#~ msgstr "No encontrado"
+
+#~ msgid "Looking up host %Q..."
+#~ msgstr "Buscando m�quina %Q..."
+
+#~ msgid "Double-click to open this link"
+#~ msgstr "Doble click para abrir este enlace"
+
+#~ msgid "Unable to look it up hostname: Hostname appears to be masked"
+#~ msgstr ""
+#~ "Incapaz de extraer el nombre de m�quina: parece que el nombre de la "
+#~ "m�quina est� enmascarado"
+
+#~ msgid "Unable to look it up hostname: Unknown host"
+#~ msgstr "Incapaz de extraer el nombre de m�quina: m�quina desconocida"
+
+#~ msgid ""
+#~ "Double-click to look up this hostname<br>Right-click to view other options"
+#~ msgstr ""
+#~ "Haga doble click para buscar esta m�quina<br>Click derecho para ver otras "
+#~ "opciones"
+
+#~ msgid "Server appears to be a network hub<br>"
+#~ msgstr "El servidor parece ser un concentrador de red<br>"
+
+#~ msgid "Unknown server<br>"
+#~ msgstr "Servidor desconocido<br>"
+
+#~ msgid "Double-click to read the MOTD<br>Right-click to view other options"
+#~ msgstr ""
+#~ "Doble click para leer el MOTD<br>Bot�n derecho para ver otras opciones"
+
+#~ msgid "Double-click to set<br>"
+#~ msgstr "Doble click para poner<br>"
+
+#~ msgid "You're not an operator: You may not change channel modes"
+#~ msgstr "Usted no es operador: No puede cambiar los modos del canal"
+
+#~ msgid "Nothing known about %Q"
+#~ msgstr "No se nada acerca de %Q"
+
+#~ msgid "Nothing known about %Q (no connection)"
+#~ msgstr "No se nada acerca de %Q (no hay conexi�n)"
+
+#~ msgid "<b>%Q</b>: +%Q (%u users)<hr>%Q"
+#~ msgstr "<b>%Q</b>: +%Q (%u usuarios)<hr>%Q"
+
+#~ msgid "Double-click to join %Q<br>Right click to view other options"
+#~ msgstr ""
+#~ "Doble click para unirse a %Q<br>Bot�n derecho para ver otras opciones"
+
+#~ msgid "<b>Double-click:</b><br>%Q"
+#~ msgstr "<b>Doble click:</b><br>%Q"
+
+#~ msgid "<b>Middle-click:</b><br>%Q"
+#~ msgstr "<b>Bot�n central:</b><br>%Q"
+
+#~ msgid "<b>Right-click:</b><br>%Q"
+#~ msgstr "<b>Bot�n derecho:</b><br>%Q"
+
+#~ msgid "Toolbars"
+#~ msgstr "Barras de herramientas"
+
+#~ msgid "Orientation"
+#~ msgstr "Orientaci�n"
+
+#~ msgid "Detached"
+#~ msgstr "Desasociado"
+
+#~ msgid "Flat"
+#~ msgstr "Plano"
+
+#~ msgid "Icon Size"
+#~ msgstr "Tama�o de Icono"
+
+#~ msgid "Small (22x22)"
+#~ msgstr "Peque�o (22x22)"
+
+#~ msgid "Large (32x32)"
+#~ msgstr "Grande (32x32)"
+
+#~ msgid "Show User List"
+#~ msgstr "Mostrar Lista de Usuarios"
+
+#~ msgid "Query Targets"
+#~ msgstr "Destinos para Privados"
+
+#~ msgid "Query target:"
+#~ msgstr "Destino para privados:"
+
+#~ msgid "%1 is %2 (%3)"
+#~ msgstr "%1 es %2 (%3)"
+
+#~ msgid "%1 is %2"
+#~ msgstr "%1 es %2"
+
+#~ msgid "%1 is using irc server: %2 (%3 hops)"
+#~ msgstr "%1 est� usando el servidor irc: %2 (%3 saltos)"
+
+#~ msgid "%1 is using irc server: %2"
+#~ msgstr "%1 est� usando el servidor irc: %2"
+
+#~ msgid "%1 is probably away"
+#~ msgstr "%1 probablemente est� ausente"
+
+#~ msgid "Common channels with %1: %2"
+#~ msgstr "Canales comunes con %1: %2"
+
+#~ msgid "[Dead Query]"
+#~ msgstr "[Privado Muerto]"
+
+#~ msgid "Query with %1!%2 (%3)"
+#~ msgstr "Privado con %1!%2 (%3)"
+
+#~ msgid "Query with %1!%2"
+#~ msgstr "Privado con %1!%2"
+
+#~ msgid ", using server %1"
+#~ msgstr ", usando el servidor %1"
+
+#~ msgid " (%1 hops)"
+#~ msgstr "(%1 saltos)"
+
+#~ msgid ", probably away"
+#~ msgstr ", probablemente ausente"
+
+#~ msgid "Common channels: %2"
+#~ msgstr "Canales comunes: %2"
+
+#~ msgid ""
+#~ "The target of this query has changed from \r!n\r%Q\r [%Q@\r!h\r%Q\r] to "
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+#~ msgstr ""
+#~ "El destino de este privado ha cambiado de \r!n\r%Q\r [%Q@\r!h\r%Q\r] a \r!"
+#~ "n\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#~ msgid "Common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "Canales comunes para \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid "No common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+#~ msgstr "No hay canales comunes para \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#~ msgid "[Dead query]"
+#~ msgstr "[Privado Muerto]"
+
+#~ msgid "This query has no active targets, no message sent"
+#~ msgstr "Este privado no tiene destinos activos, no se envi� mensaje"
+
+#~ msgid "No connection"
+#~ msgstr "Sin conexi�n"
+
+#~ msgid "IRC Context"
+#~ msgstr "Contexto de IRC"
+
+#~ msgid "Lag: %d.%d%d"
+#~ msgstr "Retraso: %d.%d%d"
+
+#~ msgid "Lag: ?.??"
+#~ msgstr "Retraso: ?.??"
+
+#~ msgid "away"
+#~ msgstr "ausente"
+
+#~ msgid "In progress..."
+#~ msgstr "En progreso..."
+
+#~ msgid "Clipboard"
+#~ msgstr "Portapapeles"
+
+#~ msgid "line break"
+#~ msgstr "avance de l�nea"
+
+#~ msgid "line breaks"
+#~ msgstr "avances de l�nea"
+
+#~ msgid "&Paste"
+#~ msgstr "&Pegar"
+
+#~ msgid "Paste (Slowly)"
+#~ msgstr "Pegar (lentamente)"
+
+#~ msgid "Paste &File"
+#~ msgstr "Pegar Archivo"
+
+#~ msgid "Stop Paste"
+#~ msgstr "Detener Pegar"
+
+#~ msgid "Clear"
+#~ msgstr "Limpiar"
+
+#~ msgid "Select All"
+#~ msgstr "Seleccionar Todo"
+
+#~ msgid "%d matches: %Q"
+#~ msgstr "%d coincidencias: %Q"
+
+#~ msgid "No matches"
+#~ msgstr "Sin coincidencias"
+
+#~ msgid "Show History<br>&lt;Ctrl+PageUp&gt;"
+#~ msgstr "Mostrar Historia<br>&lt;Ctrl+PagArr&gt;"
+
+#~ msgid "Input History Disabled"
+#~ msgstr "Historial de Entrada Deshabilitado"
+
+#~ msgid "Show Icons Popup<br>&lt;Ctrl+I&gt;<br>See also /help texticons"
+#~ msgstr ""
+#~ "Mostrar Men� Emergente de Iconos<br>&lt;Ctrl+I&gt;<br>Ver tambi�n /help "
+#~ "texticons"
+
+#~ msgid "Multi-line Editor<br>&lt;Ctrl+Backspace&gt;"
+#~ msgstr "Editor Multil�nea<br>&lt;Ctrl+Borrar&gt;"
+
+#~ msgid "Confirm Multiline Message"
+#~ msgstr "Confirmar Mensaje Multil�nea"
+
+#~ msgid ""
+#~ "You're about to send a message with %1 lines of text.<br><br>There is "
+#~ "nothing wrong with it, this warning is<br>here to prevent you from "
+#~ "accidentally sending<br>a really large message just because you didn't "
+#~ "edit it<br>properly after pasting text from the clipboard.<br><br>Do you "
+#~ "want the message to be sent?"
+#~ msgstr ""
+#~ "Est�s a punto de enviar un mensaje con %1 l�neas de etxto.<br><br>No hay "
+#~ "nada malo en ello, este mensaje<br>est� aqu� solo para evitar el env�o "
+#~ "accidental<br>de un mensaje realmente largo debido a que no lo "
+#~ "editaste<br>adecuadamente despu�s de pegar texto desde el portapapeles."
+#~ "<br><br>�Quieres que sea enviado el mensaje?"
+
+#~ msgid "Yes, always"
+#~ msgstr "S�, siempre"
+
+#~ msgid "<Ctrl+Return>; submits, <Ctrl+Backspace>; hides this editor"
+#~ msgstr "<Ctrl+Entrar>; env�a, <Ctrl+Retroceso>; esconde este editor"
+
+#~ msgid "&Cascade Windows"
+#~ msgstr "&Ventanas en Cascada"
+
+#~ msgid "Cascade &Maximized"
+#~ msgstr "Cascada &Maximizada"
+
+#~ msgid "&Tile Windows"
+#~ msgstr "Embaldosar Ventanas"
+
+#~ msgid "&Auto Tile"
+#~ msgstr "&Auto Embaldosar"
+
+#~ msgid "Anodine's Full Grid"
+#~ msgstr "Rejilla Completa de Anodine"
+
+#~ msgid "Pragma's Horizontal 4-Grid"
+#~ msgstr "Rejilla-a-4 Horizontal de Pragma"
+
+#~ msgid "Pragma's Vertical 4-Grid"
+#~ msgstr "Rejilla-a-4 Vertical de Pragma"
+
+#~ msgid "Pragma's Horizontal 6-Grid"
+#~ msgstr "Rejilla-a-6 Horizontal de Pragma"
+
+#~ msgid "Pragma's Vertical 6-Grid"
+#~ msgstr "Rejilla-a-6 Vertical de Pragma"
+
+#~ msgid "Pragma's Horizontal 9-Grid"
+#~ msgstr "Rejilla-a-9 Horizontal de Pragma"
+
+#~ msgid "Pragma's Vertical 9-Grid"
+#~ msgstr "Rejilla-a-9 Vertical de pragma"
+
+#~ msgid "Tile Met&hod"
+#~ msgstr "M�todo de embaldosado"
+
+#~ msgid "Expand &Vertically"
+#~ msgstr "Expandir &Verticalmente"
+
+#~ msgid "Expand &Horizontally"
+#~ msgstr "Expandir &Horizontalmente"
+
+#~ msgid "Mi&nimize All"
+#~ msgstr "Mi&nimizar Todo"
+
+#~ msgid "What's this?"
+#~ msgstr "�Qu� es esto?"
+
+#~ msgid "Notify List"
+#~ msgstr "Lista de Notificaciones"
+
+#~ msgid "Part All Channels"
+#~ msgstr "Salir de Todos los Canales"
+
+#~ msgid "Close All Queries"
+#~ msgstr "Cerrar Todos los Privados"
+
+#~ msgid "Unhighlight All Windows"
+#~ msgstr "Quitar resaltado de todas las ventanas"
+
+#~ msgid "Unhighlight All Channels"
+#~ msgstr "Quitar resaltado de todos los canales"
+
+#~ msgid "Unhighlight All Queries"
+#~ msgstr "Quitar resaltado de todos los privados"
+
+#~ msgid "Registered as"
+#~ msgstr "Registrados como"
+
+#~ msgid "Matched by"
+#~ msgstr "Coincidentes con"
+
+#~ msgid "On <b>"
+#~ msgstr "En <b>"
+
+#~ msgid "Using server <b>%1</b>"
+#~ msgstr "Usando servidor <b>%1</b>"
+
+#~ msgid "%1 hops"
+#~ msgstr "%1 saltos"
+
+#~ msgid "Probably Away"
+#~ msgstr "Probablemente Ausente"
+
+#~ msgid "Confirmation - KVIrc"
+#~ msgstr "Confirmaci�n - KVIrc"
+
+#~ msgid ""
+#~ "You have just attempted to close a console window<br>with an active "
+#~ "connection inside.<br>Are you sure you wish to terminate the connection?"
+#~ msgstr ""
+#~ "Ha intentado cerrar una ventana de consola<br>con una conexi�n activa."
+#~ "<br>�Est� seguro que desea finalizar la conexi�n?"
+
+#~ msgid "&Always"
+#~ msgstr "Siempre"
+
+#~ msgid ""
+#~ "You have just attempted to close the last console window.<br>Are you sure "
+#~ "you wish to quit KVIrc?"
+#~ msgstr ""
+#~ "Ha intentado cerrar la �ltima ventana de consola.<br>�Est� seguro que "
+#~ "desea salir de KVIrc?"
+
+#~ msgid "Failed to load avatar with name \"%Q\" and local path \"%Q\""
+#~ msgstr ""
+#~ "Fall� la carga del avatar con nombre \"%Q\" y trayectoria local \"%Q\""
+
+#~ msgid "channels"
+#~ msgstr "canales"
+
+#~ msgid "query"
+#~ msgstr "privado"
+
+#~ msgid "queries"
+#~ msgstr "privados"
+
+#~ msgid "Connected since"
+#~ msgstr "Conectado desde"
+
+#~ msgid "Online for"
+#~ msgstr "Conectado durante"
+
+#~ msgid "Server idle for"
+#~ msgstr "Servidor esperando durante"
+
+#~ msgid "Script"
+#~ msgstr "Script"
+
+#~ msgid "The file %s already exists.<br>Do you wish to overwrite it?"
+#~ msgstr "El archivo %s ya existe.<br>�Sobreescribirlo?"
+
+#~ msgid "File Exists - KVIrc"
+#~ msgstr "El Archivo Existe - KVIrc"
+
+#~ msgid "Channel Modes"
+#~ msgstr "Modos de Canal"
+
+#~ msgid "There are active connections, are you sure you wish to "
+#~ msgstr "Existen conexiones activas, �est� seguro que desea "
+
+#~ msgid "quit KVIrc?"
+#~ msgstr "salir de KVIrc?"
+
+#~ msgid "Show %1"
+#~ msgstr "Mostrar %1"
+
+#~ msgid "Customize..."
+#~ msgstr "Personalizar..."
+
+#~ msgid "Away Indicator"
+#~ msgstr "Indicador de Ausente"
+
+#~ msgid "Away since"
+#~ msgstr "Ausente desde"
+
+#~ msgid "Double click to leave away mode"
+#~ msgstr "Doble click para abandonar el modo ausente"
+
+#~ msgid "Not away"
+#~ msgstr "Presente"
+
+#~ msgid "Double click to enter away mode"
+#~ msgstr "Doble click para entrar en modo ausente"
+
+#~ msgid "Last checked %d mins %d secs ago"
+#~ msgstr "�ltima comprobaci�n realizada hace %d min %d segs"
+
+#~ msgid "Lag measure not available yet"
+#~ msgstr "La medida del retraso no est� disponible todav�a"
+
+#~ msgid "Lag meter engine disabled"
+#~ msgstr "Motor de medici�n del retraso deshabilitado"
+
+#~ msgid "Double click to enable it"
+#~ msgstr "Doble click para habilitarlo"
+
+#~ msgid "Lag Indicator"
+#~ msgstr "Indicador de Retraso"
+
+#~ msgid "Simple Clock"
+#~ msgstr "Reloj Sencillo"
+
+#, fuzzy
+#~ msgid "Show total connection time"
+#~ msgstr "Mostrar el tiempo de sincronizaci�n del canal"
+
+#~ msgid "Connection Timer"
+#~ msgstr "Cron�metro de Conexi�n"
+
+#~ msgid "Unloadable: %s"
+#~ msgstr "No cargable: %s"
+
+#~ msgid "Choose a File - KVIrc"
+#~ msgstr "Escoja un Archivo - KVIrc"
+
+#~ msgid "A&dd"
+#~ msgstr "A�a&dir"
+
+#~ msgid "Sample Text"
+#~ msgstr "texto de Ejemplo"
+
+#~ msgid "Joined on <b>%1</b>"
+#~ msgstr "Unido el <b>%1</b>"
+
+#~ msgid "Quiet for <b>%1h %2m %3s</b>"
+#~ msgstr "Callado desde <b>%1h %2m %3s</b>"
+
+#~ msgid "Cryptography/text transformation"
+#~ msgstr "Transformaci�n Cifrado/texto"
+
+#~ msgid "Use the crypt engine"
+#~ msgstr "Utilizar el motor de cifrado"
+
+#~ msgid "Encrypt key:"
+#~ msgstr "Clave de cifrado:"
+
+#~ msgid "Hex"
+#~ msgstr "Hex"
+
+#~ msgid "Enable decryption"
+#~ msgstr "Activar descifrado"
+
+#~ msgid "Decrypt key:"
+#~ msgstr "Clave de descifrado:"
+
+#~ msgid ""
+#~ "If you dont want to encrypt a particular text line then just start it "
+#~ "with the CTRL+P prefix"
+#~ msgstr ""
+#~ "Si no quieres cifrar una l�nea de texto en particular, comi�nzala con el "
+#~ "prefijo Ctrl+P"
+
+#~ msgid "Sorry, no crypt engines available"
+#~ msgstr "Lo siento, no hay motores de cifrado disponibles"
+
+#~ msgid "Crypt: Can't create an engine instance: crypting disabled"
+#~ msgstr ""
+#~ "Cifrado: No puedo crear una instancia del motor: cifrado desactivado"
+
+#~ msgid "Crypt: Can't initialize the engine :%s"
+#~ msgstr "Cifrado: No puedo inicializar el motor :%s"
+
+#~ msgid ""
+#~ "Crypt: You have to enable encryption and/or decryption for the engine to "
+#~ "work"
+#~ msgstr ""
+#~ "Cifrado: Tienes que activar el cifrado y/o descifrado para que el motor "
+#~ "funcione"
+
+#~ msgid "Choose image ..."
+#~ msgstr "Escoja imagen..."
+
+#~ msgid "Builtin images"
+#~ msgstr "Imagenes integradas"
+
+#~ msgid "Small icons"
+#~ msgstr "Iconos peque�os"
+
+#~ msgid "Full path"
+#~ msgstr "Trayectoria completa"
+
+#~ msgid "directory"
+#~ msgstr "directorio"
+
+#~ msgid "pixels"
+#~ msgstr "pixels"
+
+#~ msgid "bytes"
+#~ msgstr "bytes"
+
+#~ msgid "<b><font color=\"#EAEAEA\" size=\"-1\">Find Text</font></b>"
+#~ msgstr "<b><font color=\"#EAEAEA\" size=\"-1\">B�scar Texto</font></b>"
+
+#~ msgid "&Regular expression"
+#~ msgstr "Expresi�n &regular"
+
+#~ msgid "E&xtended regexp."
+#~ msgstr "E&xpresi�n regular extendida."
+
+#~ msgid "C&ase sensitive"
+#~ msgstr "No distingue m&ay�s/min�s"
+
+#~ msgid "Find &Prev."
+#~ msgstr "Buscar Anterior"
+
+#~ msgid "&Find Next"
+#~ msgstr "Buscar Siguiente"
+
+#~ msgid "Set &All"
+#~ msgstr "Seleccionar Todo"
+
+#~ msgid "Set &None"
+#~ msgstr "Iniciar &Nada"
+
+#~ msgid "&Load From..."
+#~ msgstr "Cargar Desde..."
+
+#~ msgid "&Save As..."
+#~ msgstr "Guardar Como.."
+
+#~ msgid "Filter"
+#~ msgstr "Filtro"
+
+#~ msgid "Select a Filter File"
+#~ msgstr "Seleccione un Archivo de Filtro"
+
+#~ msgid "Can't open the filter file %s for reading."
+#~ msgstr "No puedo abrir el archivo de filtro %s para lectura."
+
+#~ msgid "Select a Name for the Filter File"
+#~ msgstr "Escoge un Nombre para el Archivo de Filtro"
+
+#~ msgid "Failed to write the filter file %s (IO Error)"
+#~ msgstr "Fall� la escritura al archivo de filtro %s (Error E/S)"
+
+#~ msgid "Can't open the filter file %s for writing"
+#~ msgstr "No puedo abrir el archivo de filtro %s para escritura"
+
+#~ msgid "Scri&pting"
+#~ msgstr "&Scripting"
+
+#~ msgid "&Tools"
+#~ msgstr "&Herramientas"
+
+#~ msgid "&Settings"
+#~ msgstr "&Opciones"
+
+#~ msgid "&Window"
+#~ msgstr "&Ventanas"
+
+#~ msgid "&Help Browser (Panel)"
+#~ msgstr "Ayuda (Panel de)"
+
+#~ msgid "Help Browser (&Window)"
+#~ msgstr "Ayuda (&Ventana)"
+
+#~ msgid "&Tip of the Day"
+#~ msgstr "Consejo del D�a"
+
+#~ msgid "About &KVIrc"
+#~ msgstr "Acerca de &KVIrc"
+
+#~ msgid "KVIrc Home&page"
+#~ msgstr "&Pagina de KVIrc"
+
+#~ msgid "Report a Bug"
+#~ msgstr "Informar de un Bug"
+
+#~ msgid "Show StatusBar"
+#~ msgstr "Mostrar Barra de Estado"
+
+#~ msgid "Restore &Default Script"
+#~ msgstr "Restaurar Script por &Defecto"
+
+#~ msgid "New &Connection To"
+#~ msgstr "Nueva &Conexi�n a"
+
+#~ msgid "Hide &Dock Icon"
+#~ msgstr "Escon&der Icono de Anclaje"
+
+#~ msgid "Show &Dock Icon"
+#~ msgstr "Mostrar Icono de Anclaje"
+
+#~ msgid "&Other..."
+#~ msgstr "&Otros..."
+
+#~ msgid "Show &Icon Table"
+#~ msgstr "Mostrar Tabla de &Iconos"
+
+#~ msgid "Open &Terminal"
+#~ msgstr "Abrir &Terminal"
+
+#~ msgid "Success"
+#~ msgstr "�xito"
+
+#~ msgid "Internal error"
+#~ msgstr "Error interno"
+
+#~ msgid "Unknown command"
+#~ msgstr "Comando desconocido"
+
+#~ msgid "Missing closing brace"
+#~ msgstr "Falta la llave de cierre"
+
+#~ msgid "Unexpected end of command in string"
+#~ msgstr "Fin de comando inesperado en cadena"
+
+#~ msgid "Unexpected end of command in dictionary key"
+#~ msgstr "Fin de comando inesperado en clave de diccionario"
+
+#~ msgid "Switch dash without switch letter"
+#~ msgstr "Barra de cambio sin letra de cambio"
+
+#~ msgid "Unknown function"
+#~ msgstr "Funci�n desconocida"
+
+#~ msgid "Unexpected end of command in parenthesis"
+#~ msgstr "Fin de comando inesperado en par�ntesis"
+
+#~ msgid "Unexpected end of command in function parameters"
+#~ msgstr "Fin de comando inesperado en par�metros de funci�n"
+
+#~ msgid "Missing variable name"
+#~ msgstr "Falta el nombre de la variable"
+
+#~ msgid "Variable or identifier expected"
+#~ msgstr "Se esperaba una variable o identificador"
+
+#~ msgid "Left operand is not a number"
+#~ msgstr "El operando de la izquierda no es un n�mero"
+
+#~ msgid "Multiple operations not supported for numeric operators"
+#~ msgstr "Los operadores num�ricos no soportan operaciones m�ltiples"
+
+#~ msgid "Modulo by zero"
+#~ msgstr "M�dulo por cero"
+
+#~ msgid "Right operand is not a number"
+#~ msgstr "El operando de la derecha no es un n�mero"
+
+#~ msgid "Unterminated expression (missing ')' ?)"
+#~ msgstr "Expresi�n inacabada (falta un ')' ?)"
+
+#~ msgid "Unterminated subexpression (Parenthesis mismatch)"
+#~ msgstr "Subexpresi�n inacabada (Los par�ntesis no concuerdan)"
+
+#~ msgid "Unexpected character"
+#~ msgstr "Car�cter inesperado"
+
+#~ msgid "No host to resolve"
+#~ msgstr "No hay m�quina que resolver"
+
+#~ msgid "(DNS Internal) Unsupported address family"
+#~ msgstr "(Interno DNS) Familia de direcci�n no soportada"
+
+#~ msgid "Valid name but the host has no IP address"
+#~ msgstr "Nombre v�lido pero la m�quina no tiene direcci�n IP"
+
+#~ msgid "Unrecoverable nameserver error (crashed ?)"
+#~ msgstr "Error irrecuperable del servidor de nombre (�Se colg�?)"
+
+#~ msgid "Dns temporaneous fault (try again)"
+#~ msgstr "Fallo temporal de DNS (pruebe otra vez)"
+
+#~ msgid "(DNS Internal) Bad flags"
+#~ msgstr "(Interno DNS) Par�metros incorrectos"
+
+#~ msgid "(DNS Internal) Out of memory"
+#~ msgstr "(Interno DNS) Sin memoria"
+
+#~ msgid "(DNS Internal) Service not supported"
+#~ msgstr "(Interno DNS) Servicio no soportado"
+
+#~ msgid "Unknown node (host not found)"
+#~ msgstr "Nodo desconocido (m�quina no encontrada)"
+
+#~ msgid "(DNS Internal) Unsupported socket type"
+#~ msgstr "(Interno DNS) Tipo de socket no soportado"
+
+#~ msgid "Dns query failed"
+#~ msgstr "Petici�n DNS fallida"
+
+#~ msgid "This KVIrc executable has no IPV6 support"
+#~ msgstr "Este ejecutable de KVIrc no tiene soporte IPv6"
+
+#~ msgid "Host not found"
+#~ msgstr "M�quina no encontrada"
+
+#~ msgid "(DNS Internal) IPC failure (slave data corrupted)"
+#~ msgstr "(Interno DNS) Fallo IPC (datos esclavos corruptos)"
+
+#~ msgid "Invalid IP address"
+#~ msgstr "Direcci�n IP no v�lida"
+
+#~ msgid "Failed to put the socket in non blocking mode"
+#~ msgstr "Fallo al poner el socket en modo no bloqueante"
+
+#~ msgid "Bad file descriptor"
+#~ msgstr "Descriptor de archivo no v�lido"
+
+#~ msgid "Out of address space"
+#~ msgstr "Sin espacio de direcciones"
+
+#~ msgid "Connection refused"
+#~ msgstr "Conexi�n rechazada"
+
+#~ msgid "Kernel networking panic"
+#~ msgstr "Error grave en el nucleo de red"
+
+#~ msgid "Connection timed out"
+#~ msgstr "La conexi�n se paso de tiempo"
+
+#~ msgid "Network is unreachable"
+#~ msgstr "La red es inalcanzable"
+
+#~ msgid "Broken pipe"
+#~ msgstr "Tuber�a rota"
+
+#~ msgid "Invalid proxy address"
+#~ msgstr "Direcci�n de proxy no v�lida"
+
+#~ msgid "Remote end has closed the connection"
+#~ msgstr "El extremo remoto ha cerrado la conexi�n"
+
+#~ msgid "Invalid irc context id"
+#~ msgstr "Id de contexto irc no v�lido"
+
+#~ msgid "Error in loading module"
+#~ msgstr "Error en carga de m�dulo"
+
+#~ msgid "No such module command"
+#~ msgstr "No hay tal comando de m�dulo"
+
+#~ msgid "No such module function"
+#~ msgstr "No hay tal funci�n de m�dulo"
+
+#~ msgid "Left operand is not a dictionary reference"
+#~ msgstr "El operador izquierdo no es una referencia a diccionario"
+
+#~ msgid "Right operand is not a dictionary reference"
+#~ msgstr "El operador derecho no es una referencia a diccionario"
+
+#~ msgid "Missing object class name"
+#~ msgstr "Falta el nombre de la clase del objeto"
+
+#~ msgid "No such object class"
+#~ msgstr "No existe esa clase de objeto"
+
+#~ msgid "No such object"
+#~ msgstr "No existe ese objeto"
+
+#~ msgid "No such object function"
+#~ msgstr "No existe tal funci�n de objeto"
+
+#~ msgid "Invalid left operand"
+#~ msgstr "Operador izquierdo no v�lido"
+
+#~ msgid "Integer parameter expected"
+#~ msgstr "Se esperaba par�metro entero"
+
+#~ msgid "Invalid parameter"
+#~ msgstr "Par�metro no v�lido"
+
+#~ msgid "No such file"
+#~ msgstr "No existe el archivo"
+
+#~ msgid "Open parenthesis expected"
+#~ msgstr "Se esperaba par�ntesis de apertura"
+
+#~ msgid "Open brace expected"
+#~ msgstr "Se esperaba llave de apertura"
+
+#~ msgid "Can't kill a builtin class"
+#~ msgstr "No puede matar una clase interna"
+
+#~ msgid "The SOCKSV4 protocol lacks IpV6 support"
+#~ msgstr "El protocolo SOCKSV4 no tiene soporte IPv6"
+
+#~ msgid "Unrecognized proxy reply"
+#~ msgstr "Respuesta del proxy no reconocida"
+
+#~ msgid "Proxy response: auth failed: access denied"
+#~ msgstr "Respuesta del proxy: autentificaci�n fallida: acceso denegado"
+
+#~ msgid "Proxy response: No acceptable auth method: request rejected"
+#~ msgstr "Respuesta del proxy: Sin m�todo auth aceptable: petici�n rechazada"
+
+#~ msgid "Proxy response: request failed"
+#~ msgstr "Respuesta del proxy: petici�n fallida"
+
+#~ msgid "Proxy response: ident failed"
+#~ msgstr "Respuesta del proxy: ident fallido"
+
+#~ msgid "Proxy response: ident not matching"
+#~ msgstr "Respuesta del proxy: identidad (ident) no concuerda"
+
+#~ msgid "Proxy response: general SOCKS failure"
+#~ msgstr "Respuesta del proxy: fallo general de SOCKS"
+
+#~ msgid "Proxy response: connection not allowed"
+#~ msgstr "Respuesta del proxy: conexi�n no permitida"
+
+#~ msgid "Proxy response: network unreachable"
+#~ msgstr "Respuesta del proxy: red inalcanzable"
+
+#~ msgid "Proxy response: host unreachable"
+#~ msgstr "Respuesta del proxy: m�quina inalcanzable"
+
+#~ msgid "Proxy response: connection refused"
+#~ msgstr "Respuesta del proxy: conexi�n rechazada"
+
+#~ msgid "Proxy response: TTL expired"
+#~ msgstr "Respuesta del proxy: TTL expirado"
+
+#~ msgid "Proxy response: command not supported"
+#~ msgstr "Respuesta del proxy: comando no soportado"
+
+#~ msgid "Proxy response: address type not supported"
+#~ msgstr "Respuesta del proxy: tipo de direcci�n no soportado"
+
+#~ msgid "Proxy response: invalid address"
+#~ msgstr "Respuesta del proxy: direcci�n no v�lida"
+
+#~ msgid "Invalid port number"
+#~ msgstr "N�mero de puerto no v�lido"
+
+#~ msgid "Socket not connected"
+#~ msgstr "Socket no conectado"
+
+#~ msgid "Insufficient resources to complete the operation"
+#~ msgstr "Recursos insuficientes para completar la operaci�n"
+
+#~ msgid "Can't setup a listening socket : bind failed"
+#~ msgstr "No puedo configurar un socket en escucha : fall� el enlace (bind)"
+
+#~ msgid "Can't resolve the localhost name"
+#~ msgstr "No puedo resolver el nombre de m�quina local"
+
+#~ msgid "Unsupported image format"
+#~ msgstr "Formato de imagen no soportado"
+
+#~ msgid "Can't open file for appending"
+#~ msgstr "No puedo abrir el archivo para a�adir"
+
+#~ msgid "Can't open file for writing"
+#~ msgstr "No puedo abrir el archivo para escritura"
+
+#~ msgid "File I/O error"
+#~ msgstr "Error E/S archivo"
+
+#~ msgid "Acknowledge error"
+#~ msgstr "Error en confirmaci�n"
+
+#~ msgid "Can't open file for reading"
+#~ msgstr "No puedo abrir el archivo para lectura"
+
+#~ msgid "Can't send a zero-size file"
+#~ msgstr "No puedo env�ar un archivo de tama�o cero"
+
+#~ msgid "Missing popup name"
+#~ msgstr "Falta nombre de men� emergente"
+
+#~ msgid "'item', 'popup', 'label' or 'separator' keyword expected"
+#~ msgstr ""
+#~ "se esperaba una palabra clave de entre 'item', 'popup', 'label' o "
+#~ "'separator'"
+
+#~ msgid "Self modification not allowed"
+#~ msgstr "Automodificaci�n no permitida"
+
+#~ msgid "UNUSED"
+#~ msgstr "SIN USO"
+
+#~ msgid "Feature not available"
+#~ msgstr "Funcionalidad no disponible"
+
+#~ msgid "Unexpected characters in array index"
+#~ msgstr "Car�cteres inesperados en �ndice de array"
+
+#~ msgid "Unexpected end in expression"
+#~ msgstr "Fin de expresi�n inesperada"
+
+#~ msgid "Unexpected end in array index"
+#~ msgstr "Fin inesperado en el �ndice de array"
+
+#~ msgid "Connection thru HTTP proxy failed"
+#~ msgstr "La conexi�n a trav�s del proxy HTTP fall�"
+
+#~ msgid "Case , match , regexp , default or break keyword expected"
+#~ msgstr "Se esperaba una palabra clave case, match, regexp, default o break"
+
+#~ msgid "Access denied"
+#~ msgstr "Acceso denegado"
+
+#~ msgid "Address already in use"
+#~ msgstr "Direcci�n en uso"
+
+#~ msgid "Can't assign the requested address"
+#~ msgstr "No se pudo asignar la direcci�n solicitada"
+
+#~ msgid "Connection reset by peer"
+#~ msgstr "Conexi�n cerrada por la otra m�quina"
+
+#~ msgid "Host unreachable (no route to host)"
+#~ msgstr "Maquina inalcanzable (no hay ruta hacia la m�quina)"
+
+#~ msgid "Variable expected"
+#~ msgstr "Se esperaba una variable"
+
+#~ msgid "Invalid array index: positive integer expected"
+#~ msgstr "�ndice de array no v�lido: se esperaba entero positivo"
+
+#~ msgid "listen() call failed"
+#~ msgstr "llamada a listen() fallida"
+
+#~ msgid "This executable has been compiled without SSL support"
+#~ msgstr "Este ejecutable se compil� sin soporte SSL"
+
+#~ msgid "Secure Socket Layer error"
+#~ msgstr "Error SSL"
+
+#~ msgid "Slash (/) character expected"
+#~ msgstr "Se esperaba un car�cter barra (/)"
+
+#~ msgid "Unknown string manipulation operation"
+#~ msgstr "Operaci�n de manipulaci�n de cadena desconocida"
+
+#~ msgid "Operation aborted"
+#~ msgstr "Operaci�n cancelada"
+
+#~ msgid "Unexpected token"
+#~ msgstr "Identificador inesperado"
+
+#~ msgid "Scope object already defined (unexpected @)"
+#~ msgstr "Ya se defini� el �mbito del objeto (@ inesperado)"
+
+#~ msgid "There is no $this pointer in this scope (unexpected @)"
+#~ msgstr "No hay un puntero $this en este �mbito (@ inesperado)"
+
+#~ msgid "- d -- h -- m -- s"
+#~ msgstr "- d -- h -- m -- s"
+
+#~ msgid "%u h %u m %u s"
+#~ msgstr "%u h %u m %u s"
+
+#~ msgid "%u h %u%u m %u%u s"
+#~ msgstr "%u h %u%u m %u%u s"
+
+#~ msgid "%u m %u s"
+#~ msgstr "%u m %u s"
+
+#~ msgid "%u m %u%u s"
+#~ msgstr "%u m %u%u s"
+
+#~ msgid "%u s"
+#~ msgstr "%u s"
+
+#~ msgid "%u d %u h %u m %u s"
+#~ msgstr "%u d %u h %u m %u s"
+
+#~ msgid "%u d %u%u h %u%u m %u%u s"
+#~ msgstr "%u d %u%u h %u%u m %u%u s"
+
+#~ msgid "Select color"
+#~ msgstr "Seleccionar color"
+
+#~ msgid "&Basic colors"
+#~ msgstr "Colores &b�sicos"
+
+#~ msgid "&Custom colors"
+#~ msgstr "&Colores personalizados"
+
+#~ msgid "&Red"
+#~ msgstr "&Rojo"
+
+#~ msgid "&Green"
+#~ msgstr "&Verde"
+
+#~ msgid "Bl&ue"
+#~ msgstr "Az&ul"
+
+#~ msgid "&Define Custom Colors >>"
+#~ msgstr "&Definir Colores Personalizados >>"
+
+#~ msgid "&Add to Custom Colors"
+#~ msgstr "&A�adir Colores Personalizados"
+
+#~ msgid "Select Font"
+#~ msgstr "Seleccionar Fuente"
+
+#~ msgid "&Font"
+#~ msgstr "&Fuentes"
+
+#~ msgid "Font st&yle"
+#~ msgstr "Est&ilo de fuente"
+
+#~ msgid "&Size"
+#~ msgstr "&Tama�o"
+
+#~ msgid "Sample"
+#~ msgstr "Ejemplo"
+
+#~ msgid "Effects"
+#~ msgstr "Efectos"
+
+#~ msgid "Stri&keout"
+#~ msgstr "Tachada"
+
+#~ msgid "&Underline"
+#~ msgstr "S&ubrayado"
+
+#~ msgid "Scr&ipt"
+#~ msgstr "Scr&ipt"
+
+#~ msgid "Parent Directory"
+#~ msgstr "Directorio Padre"
+
+#~ msgid "Back"
+#~ msgstr "Atr�s"
+
+#~ msgid "Forward"
+#~ msgstr "Adelante"
+
+#~ msgid "Reload"
+#~ msgstr "Recargar"
+
+#~ msgid "New Directory"
+#~ msgstr "Nuevo Directorio"
+
+#~ msgid "Bookmarks"
+#~ msgstr "Marcadores"
+
+#~ msgid "Add Bookmark"
+#~ msgstr "A�adir Marcador"
+
+#~ msgid "&Edit Bookmarks"
+#~ msgstr "&Editar Marcadores"
+
+#~ msgid "New Bookmark Folder..."
+#~ msgstr "Nuevo Directorio de Marcadores..."
+
+#~ msgid "Sorting"
+#~ msgstr "Ordenaci�n"
+
+#~ msgid "By Name"
+#~ msgstr "Por Nombre"
+
+#~ msgid "By Date"
+#~ msgstr "Por Fecha"
+
+#~ msgid "By Size"
+#~ msgstr "Por Tama�o"
+
+#~ msgid "Reverse"
+#~ msgstr "Inversa"
+
+#~ msgid "Directories First"
+#~ msgstr "Directorios Primero"
+
+#~ msgid "Case Insensitive"
+#~ msgstr "No distingue may�s/min�s"
+
+#~ msgid "Short View"
+#~ msgstr "Vista Breve"
+
+#~ msgid "Detailed View"
+#~ msgstr "Vista Detallada"
+
+#~ msgid "Show Hidden Files"
+#~ msgstr "Mostrar Archivos Escondidos"
+
+#~ msgid "Show Quick Access Navigation Panel"
+#~ msgstr "Mostrar Acceso a Panel de Navegaci�n R�pida"
+
+#~ msgid "Separate Directories"
+#~ msgstr "Separar Directorios"
+
+#~ msgid "Often used directories"
+#~ msgstr "Directorios usados m�s frecuentemente"
+
+#~ msgid "Desktop"
+#~ msgstr "Escritorio"
+
+#~ msgid "Home Directory"
+#~ msgstr "Directorio Personal"
+
+#~ msgid "Floppy"
+#~ msgstr "Disquetera"
+
+#~ msgid "Temporary Files"
+#~ msgstr "Archivos Temporales"
+
+#~ msgid "Network"
+#~ msgstr "Red"
+
+#~ msgid "New Directory..."
+#~ msgstr "Nuevo Directorio..."
+
+#~ msgid "Thumbnail Previews"
+#~ msgstr "Previsualizar Diapositivas"
+
+#~ msgid "Large Icons"
+#~ msgstr "Iconos Grandes"
+
+#~ msgid "Small Icons"
+#~ msgstr "Iconos Peque�os"
+
+#~ msgid "Properties..."
+#~ msgstr "Propiedades..."
+
+#~ msgid "&Automatic Preview"
+#~ msgstr "Previsualizaci�n &Autom�tica"
+
+#~ msgid "&Preview"
+#~ msgstr "&Previsualizar"
+
+#~ msgid "&Filter:"
+#~ msgstr "&Filtro:"
+
+#~ msgid "All Files"
+#~ msgstr "Todos los Archivos"
+
+#~ msgid "Directory"
+#~ msgstr "Directorio"
+
+#~ msgid "Fifo"
+#~ msgstr "FIFO"
+
+#~ msgid "Block device"
+#~ msgstr "Dispositivo de bloques"
+
+#~ msgid "Char device"
+#~ msgstr "Dispositivo de caracteres"
+
+#~ msgid "Octet stream (unknown)"
+#~ msgstr "Flujo de bytes (desconocido)"
+
+#~ msgid "Invalid crypt engine"
+#~ msgstr "Motor de cifrado no v�lido"
+
+#~ msgid "WARNING : Can not load image library %s"
+#~ msgstr "ADVERTENCIA : No se pudo cargar la biblioteca de im�genes %s"
+
+#~ msgid "The specified network has no server entries"
+#~ msgstr "La red especificada no tiene entradas de servidor"
+
+#~ msgid ""
+#~ "The server specification seems to be in the net:<string> but the network "
+#~ "couln't be found in the database"
+#~ msgstr ""
+#~ "La especificaci�n de servidor parece estar en la red:<string> pero la red "
+#~ "no puede ser encontrada en la base de datos"
+
+#~ msgid ""
+#~ "The server specification seems to be in the id:<string> form but the "
+#~ "identifier coulnd't be found in the database"
+#~ msgstr ""
+#~ "La especificaci�n del servidor parece estar en el id:<string> pero el "
+#~ "identificador no se encuentra en la base de datos"
+
+#~ msgid "Aborted"
+#~ msgstr "Cancelado"
+
+#~ msgid "No request"
+#~ msgstr "Sin petici�n"
+
+#~ msgid "No filename specified for the \"StoreToFile\" processing type"
+#~ msgstr ""
+#~ "No se especific� nombre de archivo para el tipo de procesado \"StoreToFile"
+#~ "\""
+
+#~ msgid "Invalid URL: Missing hostname"
+#~ msgstr "URL Inv�lida: falta el nombre de la m�quina"
+
+#, fuzzy
+#~ msgid "Unsupported protocol %1"
+#~ msgstr "Protocolo %s no soportado"
+
+#~ msgid "Unable to start the DNS lookup"
+#~ msgstr "No puedo iniciar la b�squeda DNS"
+
+#~ msgid "Looking up host %s"
+#~ msgstr "Buscando m�quina %s"
+
+#~ msgid "Host %s resolved to %s"
+#~ msgstr "Nombre de m�quina %s resuelto a %s"
+
+#~ msgid "Unable to start the request slave thread"
+#~ msgstr "No se pudo iniciar el hilo esclavo de peticiones"
+
+#~ msgid "Contacting host %s on port %u"
+#~ msgstr "Contactando con %s en el puerto %u"
+
+#~ msgid "Connection established, sending request"
+#~ msgstr "Conexi�n establecida, enviando petici�n"
+
+#~ msgid "Failed to rename the existing file, please rename manually and retry"
+#~ msgstr ""
+#~ "Fallo al renombrar el archivo existente, renombre manualmente e int�ntelo "
+#~ "de nuevo"
+
+#~ msgid "Can't open file \"%s\" for writing"
+#~ msgstr "No puedo abrir el archivo \"%s\" en modo escritura"
+
+#~ msgid "Invalid HTTP response: %s"
+#~ msgstr "Respuesta HTTP no v�lida: %s"
+
+#~ msgid "Received HTTP response: %s"
+#~ msgstr "Respuesta HTTP recibida: %s"
+
+#~ msgid "Stream exceeding maximum length"
+#~ msgstr "El flujo excede la longitud m�xima"
+
+#~ msgid "Stream exceeded expected length"
+#~ msgstr "El flujo excede la longitud esperada"
+
+#~ msgid "Header too long: exceeded 4096 bytes"
+#~ msgstr "Cabecera muy larga: excede de 4096 bytes"
+
+#~ msgid "Select error: %s (errno=%d)"
+#~ msgstr "Error de select: %s (errno=%d)"
+
+#~ msgid "Operation timed out"
+#~ msgstr "Expir� el tiempo para la operaci�n"
+
+#~ msgid "Failed to enter non blocking mode"
+#~ msgstr "Fallo al intentar entrar en modo no bloqueante"
+
+#~ msgid "Invalid target address"
+#~ msgstr "Direcci�n de destino no v�lida"
+
+#~ msgid "Connect error: %s (errno=%d)"
+#~ msgstr "Error de conexi�n: %s (errno=%d)"
+
+#~ msgid "Write error: %s (errno=%d)"
+#~ msgstr "Error de escritura: %s (errno=%d)"
+
+#~ msgid "Operation timed out (while selecting for read)"
+#~ msgstr ""
+#~ "Expir� el tiempo para la operaci�n (mientras se hac�a un select de "
+#~ "lectura)"
+
+#~ msgid "Read error: %s (errno=%d)"
+#~ msgstr "Error de lectura: %s (errno=%d)"
+
+#~ msgid "Encoding"
+#~ msgstr "Codificaci�n"
+
+#, fuzzy
+#~ msgid "Reconnection Options"
+#~ msgstr "conexi�n"
+
+#, fuzzy
+#~ msgid "Usage"
+#~ msgstr "Nombre de usuario:"
+
+#, fuzzy
+#~ msgid "message"
+#~ msgstr "Mensajes"
+
+#, fuzzy
+#~ msgid "Usage:"
+#~ msgstr "Nombre de usuario:"
+
+#, fuzzy
+#~ msgid "You must be connected to a server"
+#~ msgstr "No est� conectado a un servidor"
+
+#, fuzzy
+#~ msgid "Lag is"
+#~ msgstr "Registrar esto"
+
+#, fuzzy
+#~ msgid "This is not a channel window"
+#~ msgstr "Esto no es un canal"
+
+#, fuzzy
+#~ msgid "Unsupported type: $0"
+#~ msgstr "Mode de cifrado no soportado"
+
+#, fuzzy
+#~ msgid "No such user: $0"
+#~ msgstr "No existe el cron�metro (%s)"
+
+#, fuzzy
+#~ msgid "Options"
+#~ msgstr "T�tulos MDI"
+
+#, fuzzy
+#~ msgid "Always Highlight"
+#~ msgstr "Alerta/Resaltado"
+
+#, fuzzy
+#~ msgid "Highlight as"
+#~ msgstr "Texto resaltado"
+
+#, fuzzy
+#~ msgid "Stop Highlighting"
+#~ msgstr "Activar resaltado de palabras"
+
+#, fuzzy
+#~ msgid "is being ignored"
+#~ msgstr "ignorada"
+
+#, fuzzy
+#~ msgid "Ignore as"
+#~ msgstr "Ignorar"
+
+#, fuzzy
+#~ msgid "Unignore"
+#~ msgstr "ignorada"
+
+#, fuzzy
+#~ msgid "is registered as"
+#~ msgstr "Registrados como"
+
+#, fuzzy
+#~ msgid "is in the notify list"
+#~ msgstr "No hay usuarios en la lista de notificaci�n"
+
+#, fuzzy
+#~ msgid "is not registered"
+#~ msgstr "Registrado"
+
+#, fuzzy
+#~ msgid "Register"
+#~ msgstr "Registrado"
+
+#, fuzzy
+#~ msgid "Quick Registration"
+#~ msgstr "Acci�n expulsar"
+
+#, fuzzy
+#~ msgid "Register as"
+#~ msgstr "Registrados como"
+
+#, fuzzy
+#~ msgid "Unregister"
+#~ msgstr "Registrado"
+
+#, fuzzy
+#~ msgid "Add to Notify"
+#~ msgstr "Notificar"
+
+#, fuzzy
+#~ msgid "Remove from Notify"
+#~ msgstr "Eliminar Proxy"
+
+#, fuzzy
+#~ msgid "Choose"
+#~ msgstr "Escoger..."
+
+#, fuzzy
+#~ msgid "Choose Avatar Image File"
+#~ msgstr "Escoge un Archivo de Imagen - KVIrc"
+
+#, fuzzy
+#~ msgid "Clear Default"
+#~ msgstr "Limpiar Lista"
+
+#, fuzzy
+#~ msgid "Copy To Clipboard"
+#~ msgstr "Copiar al portapapeles"
+
+#, fuzzy
+#~ msgid "Channel Owner"
+#~ msgstr "Propietario del canal:"
+
+#, fuzzy
+#~ msgid "Channel Administrator"
+#~ msgstr "administrador del canal"
+
+#, fuzzy
+#~ msgid "Channel Operator"
+#~ msgstr "Operadores de canal"
+
+#, fuzzy
+#~ msgid "Half Operator"
+#~ msgstr "semioperadores"
+
+#, fuzzy
+#~ msgid "User Operator"
+#~ msgstr "usuario operador"
+
+#, fuzzy
+#~ msgid "Normal User"
+#~ msgstr "Texto normal"
+
+#, fuzzy
+#~ msgid "Ban"
+#~ msgstr "y"
+
+#, fuzzy
+#~ msgid "Multiple Users"
+#~ msgstr "Cambio m�ltiple del modo de usuario"
+
+#, fuzzy
+#~ msgid "&Ban"
+#~ msgstr "&A�adir Prohibici�n"
+
+#, fuzzy
+#~ msgid "&Information"
+#~ msgstr "Informaci�n del servidor"
+
+#, fuzzy
+#~ msgid "Mask for"
+#~ msgstr "Editor de M�scaras"
+
+#, fuzzy
+#~ msgid "&Control"
+#~ msgstr "Contador"
+
+#, fuzzy
+#~ msgid "&Administrator"
+#~ msgstr "administrador del canal"
+
+#, fuzzy
+#~ msgid "&Deadministrator"
+#~ msgstr "administrador del canal"
+
+#, fuzzy
+#~ msgid "&Op"
+#~ msgstr "&Aceptar"
+
+#, fuzzy
+#~ msgid "&Deop"
+#~ msgstr "Escritorio"
+
+#, fuzzy
+#~ msgid "&Halfop"
+#~ msgstr "Semioperador:"
+
+#, fuzzy
+#~ msgid "&Dehalfop"
+#~ msgstr "Am semidesopeado"
+
+#, fuzzy
+#~ msgid "&Voice"
+#~ msgstr "Voz"
+
+#, fuzzy
+#~ msgid "D&evoice"
+#~ msgstr "Am silenciado"
+
+#, fuzzy
+#~ msgid "With..."
+#~ msgstr "&Editar..."
+
+#, fuzzy
+#~ msgid "Kick Reason"
+#~ msgstr "Acci�n expulsar"
+
+#, fuzzy
+#~ msgid "Kick/Ban"
+#~ msgstr "Acci�n expulsar"
+
+#, fuzzy
+#~ msgid "Kick/Ban Reason"
+#~ msgstr "Acci�n expulsar"
+
+#, fuzzy
+#~ msgid "&Query"
+#~ msgstr "Privado"
+
+#, fuzzy
+#~ msgid "&Registration"
+#~ msgstr "Registro completado"
+
+#, fuzzy
+#~ msgid "Ig&nore"
+#~ msgstr "Ignorar"
+
+#, fuzzy
+#~ msgid "Notify Avatar"
+#~ msgstr "Lista de Notificaciones"
+
+#, fuzzy
+#~ msgid "&Part"
+#~ msgstr "&Pegar"
+
+#, fuzzy
+#~ msgid "Channels"
+#~ msgstr "Canal"
+
+#, fuzzy
+#~ msgid "&Join Channels..."
+#~ msgstr "Unirse a Canales..."
+
+#, fuzzy
+#~ msgid "&Hop"
+#~ msgstr "Saltos"
+
+#, fuzzy
+#~ msgid "l (Connections)"
+#~ msgstr "Conexi�n"
+
+#, fuzzy
+#~ msgid "o (Operators)"
+#~ msgstr "operadores"
+
+#, fuzzy
+#~ msgid "t (Connection stats ?)"
+#~ msgstr "Estado de la conexi�n"
+
+#, fuzzy
+#~ msgid "Chat with"
+#~ msgstr "Chat"
+
+#, fuzzy
+#~ msgid "Send to"
+#~ msgstr "Puesto el"
+
+#, fuzzy
+#~ msgid "Reverse Send to"
+#~ msgstr "Inversa"
+
+#, fuzzy
+#~ msgid "Voice Chat"
+#~ msgstr "Voz"
+
+#, fuzzy
+#~ msgid "&Ignore"
+#~ msgstr "Ignorar"
+
+#, fuzzy
+#~ msgid "Logging to"
+#~ msgstr "Registro"
+
+#, fuzzy
+#~ msgid "Stop Logging"
+#~ msgstr "Registro"
+
+#, fuzzy
+#~ msgid "Not Logging"
+#~ msgstr "Registro"
+
+#, fuzzy
+#~ msgid "Include Existing Buffer"
+#~ msgstr "### Buffer de datos existente:"
+
+#, fuzzy
+#~ msgid "Log To..."
+#~ msgstr "Exportar a..."
+
+#, fuzzy
+#~ msgid "Notify avatar"
+#~ msgstr "Lista de Notificaciones"
+
+#~ msgid "The default script has been successfully installed."
+#~ msgstr "El script por defecto ha sido instalado satisfactoriamente"
+
+#~ msgid "To connect to a server, type /server <server name>"
+#~ msgstr "Para conectar a un servidor, escriba /server <nombre de servidor>"
+
+#~ msgid "Happy ircing :)"
+#~ msgstr "Feliz irceo :)"
diff --git a/po/modules/options/options_fi.po b/po/modules/options/options_fi.po
new file mode 100644
index 00000000..510209d5
--- /dev/null
+++ b/po/modules/options/options_fi.po
@@ -0,0 +1,3901 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:304
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:232
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:51
+msgid "Font:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:47
+msgid "Background color:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:129
+msgid "Background image:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:51
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:46
+msgid "Horizontal align:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:50
+msgid "Vertical align:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:59
+msgid "Mark Line:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:66
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:124
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:59
+msgid "Tile"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:62
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:55
+msgid "Left"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:56
+msgid "Right"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:132
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:62
+msgid "Center"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:60
+msgid "Top"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:61
+msgid "Bottom"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:149
+msgid "Enable URL highlighting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:150
+msgid "Use line wrap margin"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:151
+msgid "Maximum buffer size:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:152
+msgid " lines"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:153
+msgid "Link tooltip show delay:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:306
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:59
+msgid " msec"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:155
+msgid "Link tooltip hide delay:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:157
+msgid "Track last read text line"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:48
+msgid "NickServ Authentication Rule"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:55
+msgid "Registered NickName"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:60
+msgid "Put here the nickname that you have registered with NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:277
+msgid "NickServ Mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:70
+#, c-format
+msgid ""
+"This is the mask that NickServ must match to be correctly identified as the "
+"NickServ service. This usually will be something like <b>NickServ!"
+"[email protected]</b>.<br>You can use wildcards for this field, but "
+"generally it is a security flaw. If you're 100%% sure that NO user on the "
+"network can use the nickname \"NickServ\", the mask <b>NickServ!*@*</b> may "
+"be safe to use in this field."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:78
+msgid "Message Regexp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:86
+msgid ""
+"This is the simple regular expression that the identification request "
+"message from NickServ must match in order to be correctly recognized.<br>The "
+"message is usually something like \"To identify yourself please use /ns "
+"IDENTIFY password\" and it is sent when the NickServ wants you to "
+"authenticate yourself. You can use the * and ? wildcards."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:259
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:279
+msgid "Identify Command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:98
+msgid ""
+"This is the command that will be executed when NickServ requests "
+"authentication for the nickname described in this rule (if the both server "
+"and NickServ mask are matched). This usually will be something like <b>msg "
+"NickServ identify &lt;yourpassword&gt;</b>.<br>You can use <b>msg -q</b> if "
+"you don't want the password echoed on the screen. Please note that there is "
+"no leading slash in this command."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:256
+msgid "Server mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:117
+msgid ""
+"This is the mask that the current server must match in order for this rule "
+"to apply. It can contain * and ? wildcards.<br>Do NOT use simply \"*\" "
+"here..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:128
+msgid "Hint: Move the mouse cursor over the fields to get help"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:137
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:68
+msgid "Cancel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:803
+msgid "OK"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:164
+msgid "Invalid NickServ Rule"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:169
+msgid "The Nickname field can't be empty!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:175
+msgid "The Nickname field can't contain spaces!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:183
+msgid "The NickServ mask can't be empty!<br>You must put at least * there."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:191
+msgid "The Message Regexp can't be empty!<br>You must put at least * there."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:199
+msgid "The Identify Command can't be empty!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:265
+msgid "Enable NickServ Identification"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:269
+msgid "This check enables the automatic identification with NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:276
+msgid "Nickname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:258
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:278
+msgid "NickServ Request Mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:265
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on all the networks."
+"<br>Please be aware that this feature can cause your NickServ passwords to "
+"be stolen if used improperly. Make sure that you fully understand the "
+"NickServ authentication protocol.<br>In other words, be sure to know what "
+"you're doing.<br>Also note that the password that you provide is stored as "
+"<b>PLAIN TEXT</b>.<br>KVIrc supports also per-network NickServ "
+"authentication rules that can be created in the \"Advanced...\" network "
+"options (accessible from the servers dialog).</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:293
+msgid "Add Rule"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:298
+msgid "Edit Rule"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:302
+msgid "Delete Rule"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:31
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:36
+msgid "Font"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:38
+msgid "Foreground color"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:37
+msgid "Background color"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:34
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:44
+msgid "Background image"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:40
+msgid "Enable tray icon"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:41
+msgid "Close in tray"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:42
+msgid "Minimize in tray"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:44
+msgid "Enable tray icon flashing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:45
+msgid "Enable level-based message notification (not a message-type based)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:47
+msgid "Select message levels to notify"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:49
+msgid "Minimum level for low-priority messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:53
+msgid "Minimum level for high-priority message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.cpp:40
+msgid ""
+"This section contains irc protection tools<br><p>like<b> flood, ignore, "
+"antispam. </b> </p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:40
+msgid ""
+"<center><b>Settings for CTCP.</b></center><p>The <b>Client-To-Client "
+"Protocol</b> (CTCP) is used to transmit special control messages over an IRC "
+"connection. These messages can request information from clients or negotiate "
+"file transfers.<br><br></p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:47
+msgid "CTCP Replies"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:48
+msgid "Append to VERSION reply:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:52
+msgid ""
+"<center>This text will be appended to the CTCP VERSION reply.<br>For "
+"example, you can place a script name here.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:55
+msgid "Append to SOURCE reply:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:59
+msgid ""
+"<center>This text will be appended to the CTCP SOURCE reply.<br>For example, "
+"you can place the source URL for a script here.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:69
+msgid "PAGE reply:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:73
+msgid ""
+"<center>This is the CTCP PAGE reply.<br>It should contain some sort of "
+"acknowledgement for CTCP PAGE messages.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:76
+msgid "Show the CTCP replies in the active window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:78
+msgid "Show dialog for CTCP page requests"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:36
+msgid "Use tree taskbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:37
+msgid "Sort windows by name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:38
+msgid "Show window icons in taskbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:39
+msgid "Show activity meter in taskbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:41
+msgid ""
+"<center>This option enables the usage of the taskbar activity meter. Each "
+"window entry will have a small indicator of the activity that is going on in "
+"that window. The indicator is a small square that changes colors, dark "
+"colors mean low activity, while bright colors signal high activity. KVIrc "
+"also uses some heuristics to determine whether the activity is somewhat "
+"\"human\" or it is generated by automated entities (such as bots or IRC "
+"servers). \"Human\" activity causes the indicator to be shaded red while "
+"automated activity causes the indicator to be shaded blue.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:49
+msgid "Show IRC context indicator in taskbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:50
+msgid "Enable window tooltips"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:233
+msgid "Text/Alert Colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:125
+msgid "Normal:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:126
+msgid "Selected:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:236
+msgid "Alert Level 1:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:237
+msgid "Alert Level 2:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:238
+msgid "Alert Level 3:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:239
+msgid "Alert Level 4:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:240
+msgid "Alert Level 5:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:241
+msgid "Progress bar color:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:124
+msgid "Background Colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:212
+msgid "Show header"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:214
+msgid "Minimum width:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:215
+msgid "Maximum width:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:235
+msgid "Minimized:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:242
+msgid "Minimum width of buttons:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:244
+msgid "Set maximum button width"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:245
+msgid "Maximum width of buttons:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:246
+msgid "Use flat buttons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:96
+msgid "Network Details"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:82
+msgid "Description:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:116
+msgid "<center>Put here a brief description of the network.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:477
+msgid "Properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:123
+msgid "Username:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:134
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to servers "
+"on this network.\n"
+"If this field is left empty (most common case), KVIrc will use the default "
+"username specified in the \"Identity\" options tab.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:498
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:320
+msgid "Nickname:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:145
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to the servers on this network.<br>If this field is left empty (most "
+"common case), the default nickname (specified in the \"Identity\" settings) "
+"will be used.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:509
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:342
+msgid "Real name:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:153
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with the servers on this network.<br>If you leave this field empty "
+"(most common case), the default \"real name\" (specified in the \"Identity\" "
+"settings) will be used.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:644
+msgid "Encoding:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:164
+msgid ""
+"<center>This box allows you to choose the preferred encoding for the servers "
+"in this network. If you choose \"Use System Encoding\" then the encoding "
+"will be set to the systemwide value that you choose in the \"Encoding\" page "
+"of the options dialog.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:173
+msgid "Use System Encoding"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:185
+msgid "Connect to this network at startup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:189
+msgid ""
+"<center>This option will cause KVIrc to automatically connect to this "
+"network at startup</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:79
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:120
+msgid "General"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:756
+msgid "Channels to join automatically upon connect:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:211
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to a server in this network has been established. To add a "
+"channel, type its name in the text input below and click \"<b>Add</b>\".</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:217
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:62
+msgid "Join Channels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:228
+msgid ""
+"<center>The following commands will be executed after a connection to a "
+"server in this network has been established.<br><b>Important:</b> Enter "
+"commands <b>without</b> a preceding slash (e.g. <tt>quote pass secret</tt> "
+"instead of <tt>/quote pass secret</tt>).<br>KVIrc will first send the USER "
+"command, then eventually PASS and NICK and then execute this command "
+"sequence.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:782
+msgid "On Connect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:249
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"a server in this network.<br><b>Important:</b> Enter commands <b>without</b> "
+"a preceding slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote "
+"privatelog</tt>).<br>This is useful for automatically opening queries, "
+"setting variables, etc.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:801
+msgid "On Login"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:285
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on this network.<br>Please "
+"be aware that this feature can cause your NickServ passwords to be stolen if "
+"used improperly. Make sure that you fully understand the NickServ "
+"authentication protocol.<br>In other words, be sure to know what you're "
+"doing.<br>Also note that the password that you provide is stored as <b>PLAIN "
+"TEXT</b>.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:35
+msgid "NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:323
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:60
+msgid "&OK"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:449
+msgid "Server Details"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:465
+msgid ""
+"<center>This is a brief description of this server. This field has no "
+"restrictions but many server lists use it to describe the server's physical "
+"location</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:484
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to this "
+"server.\n"
+"If this field is left empty (most common case), KVIrc will first look if an "
+"username is specified for the network that this server belongs to, and if "
+"that is empty then KVIrc will use the default username specified in the "
+"\"Identity\" options tab.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:490
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:127
+msgid "Password:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:495
+msgid ""
+"<center>If this server requires a password, put it in this field, otherwise "
+"leave it empty.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:504
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to this server.<br>If this field is left empty (most common case), "
+"KVIrc will first look if a nickname is specified for the network that this "
+"server belongs to, and if that is empty then the default nickname (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:513
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with this server.<br>If you leave this field empty (most common case), "
+"KVIrc will first look if a real name is specified for the network that this "
+"server belongs to, and if that is empty the default \"real name\" (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:683
+msgid "User Mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:520
+msgid "Use default user mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:522
+msgid ""
+"<center>If this is enabled, the global initial <b>user mode</b> (configured "
+"from the identity dialog) will be used. If disabled, you can configure an "
+"initial user mode for this server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:684
+msgid "Invisible (+i)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:534
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:685
+msgid "Server notices (+s)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:686
+msgid "Wallops (+w)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:548
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:60
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:104
+msgid "Identity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:115
+msgid "Port:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:565
+msgid ""
+"<center>This is the default <b>port</b> that this server will be contacted "
+"on.<br>Usually <b>6667</b> is OK.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:571
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:119
+msgid "IP address:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:576
+msgid ""
+"<center>This is the <b>IP address</b> of this server, it is here for caching "
+"purposes.<br>If you leave this field empty, KVIrc will fill it in the first "
+"time it connects to the server. If you enable the \"cache IP address\" "
+"option below, KVIrc will use it as a \"cached result\" and avoid looking it "
+"up again.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:596
+msgid "Cache IP address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:599
+msgid ""
+"<center>This check will enable <b>IP address caching</b> for this server:"
+"<br>DNS lookups can be time-consuming and might be blocking on some "
+"platforms; this option will cause KVIrc to look up the server hostname only "
+"once.<br><br> Advanced: you can also use this option to force a certain "
+"server name to resolve to a fixed ip address when either the dns for that "
+"server is temporairly unreachable or you want to avoid the round-robin "
+"lookups.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:609
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:140
+msgid "Use IPv6 protocol"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:619
+msgid ""
+"<center>This check identifies IPv6 servers.<br>If enabled, KVIrc will "
+"attempt to use the IPv6 protocol (thus your OS <b>must</b> have a working "
+"IPv6 stack and you <b>must</b> have an IPv6 connection).</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:624
+msgid "Use SSL protocol"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:627
+msgid ""
+"<center>This check will cause the connection to use the <b>Secure Socket "
+"Layer</b> encryption support. Obviously, this server must have support for "
+"this, too. :)</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:636
+msgid "Connect to this server at startup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:641
+msgid ""
+"<center>This option will cause KVIrc to connect to the IRC server when it is "
+"started.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:650
+msgid ""
+"<center>This box allows you to choose the preferred encoding for this sever. "
+"If you choose \"Use Network Encoding\" then the encoding will be inherited "
+"from the network that this server belongs to.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:659
+msgid "Use Network Encoding"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:672
+msgid "Link filter:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:701
+msgid ""
+"<center>This field specifies the name of a module that exports a link filter "
+"for this type of server.<br>For plain IRC connections, you don't need any "
+"link filters; this is used for incompatible protocols.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:705
+msgid "Id:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:713
+msgid ""
+"<center>This field allows you to specify a really unique id for this server. "
+"You will then be able to use /server -x &lt;this_id&gt; to make the "
+"connection. This is especially useful when you have multiple server entries "
+"with the same hostname and port in different networks (bouncers?)</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:719
+msgid "Proxy server:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:724
+msgid ""
+"<center>This is the <b>proxy</b> that KVIrc will use to connect to thos "
+"server.\n"
+"If this field is set in \"Default\" KVirc will use global proxy settings, if "
+"it is set in \"Direct connection\" KVirc will connect to this server without "
+"proxy. You can define new proxy server in global options' \"Proxy servers\" "
+"menu.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:729
+msgid "Default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:730
+msgid "Direct connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:746
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:28
+msgid "Connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:758
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to this server has been established. To add a channel, type its "
+"name in the text input below and click \"<b>Add</b>\".</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:776
+msgid ""
+"<center>The following commands will be executed after a connection has been "
+"established.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote pass secret</tt> instead of <tt>/quote pass secret</"
+"tt>).<br>KVIrc will first send the USER command, then eventually PASS and "
+"NICK and then execute this command sequence.<br>This is particularly useful "
+"for IRC bouncers that require login commands.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:796
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"this server.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote privatelog</tt>)."
+"<br>This is useful for automatically opening queries, setting variables, etc."
+"</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1041
+msgid "Server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1042
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:73
+msgid "Description"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1054
+msgid ""
+"<center>This is the list of available IRC servers.<br>Right-click on the "
+"list to add or remove servers and perform other actions.<br>Double-click on "
+"a item for advanced options.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1069
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1430
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1554
+msgid "New Network"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1077
+msgid "New Server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1086
+msgid "Remove Network/Server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1098
+msgid "Copy Server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1107
+msgid "Paste Server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1446
+msgid "Import List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1125
+msgid "Active Configuration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1332
+msgid "Server:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1130
+msgid ""
+"<center>This is the name of the currently selected server or network</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1153
+msgid "Advanced..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1156
+msgid "<center>Click here to edit advanced options for this entry</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1159
+msgid "Connect &Now"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1164
+msgid ""
+"<center>Hit this button to connect to the currently selected server.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1177
+msgid ""
+"<center>This button shows a list of recently used servers. It allows you to "
+"quickly find them in the list.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1181
+msgid "Show this dialog at startup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1184
+msgid ""
+"<center>If this option is enabled, the Servers dialog will appear every time "
+"you start KVIrc</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1335
+msgid "Network:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1345
+msgid "No selection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1364
+msgid "UnknownNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1431
+msgid "Remove Network"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1434
+msgid "&New Server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1435
+msgid "Re&move Server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1437
+msgid "&Copy Server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1439
+msgid "&Paste Server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1444
+msgid "Clear List"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1483
+msgid ""
+"Oops... something weird happened:<br>Can't find any module capable of "
+"importing servers."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1500
+msgid ""
+"Oops... something weird happened:<br>Can't find the module that was capable "
+"of this import action. :("
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1574
+msgid "irc.unknown.net"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:39
+msgid "Disable parser warnings"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:40
+msgid "Disable broken event handlers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:41
+msgid "Kill broken timers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:42
+msgid "Send unknown commands as /RAW"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:46
+msgid "Automatically unload unused modules"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:47
+msgid "Ignore module versions (dangerous)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:51
+msgid "Relay errors and warnings to debug window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:52
+msgid "Create minimized debug window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:59
+msgid "Nickname alternatives"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:62
+msgid ""
+"<center>Here you can choose up to three nicknames alternative to the primary "
+"one. KVIrc will use the alternatives if the primary nick is already used by "
+"someone else on a particular IRC network.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:69
+msgid "Alt. Nickname 1:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:76
+msgid "Alt. Nickname 2:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:83
+msgid "Alt. Nickname 3:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Ok"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:130
+msgid "Avatar Download - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:136
+msgid "<center>Please wait while the avatar is being downloaded</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:139
+msgid "Abort"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:170
+msgid "Failed to start the download"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:184
+msgid "Download aborted by user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:213
+msgid "Choose Avatar - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:219
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:237
+msgid "&Browse..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:275
+msgid "Choose an Image File - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:316
+msgid "Basic Properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:323
+msgid ""
+"<center>Your <b>nickname</b> is your primary form of identification on IRC."
+"<br>Since servers cannot accept multiple users sharing the same nickname "
+"(case insensitive), you can provide alternative nicknames to be used in "
+"casethe server refuses to accept the default one.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:331
+msgid "Alternatives..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:337
+msgid ""
+"<center>This is the <b>username</b> that you will use to connect to the "
+"server.<br>In the past, it was used as a form of authentication, but it "
+"normally has no special use now.<br>In addition to your nickname, you are "
+"identified on IRC by your <b>username@hostname</b>.</br>Basically, you can "
+"enter any word you like here. :D</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:346
+msgid ""
+"<center>This text will appear when someone does a /WHOIS on you.<br>It is "
+"intended to be your real name, but people tend to put random quotes and "
+"phrases here too.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:351
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:356
+msgid "Profile"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:361
+msgid "Age:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:366
+msgid "Here you can specify your age."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:401
+msgid "Unspecified"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:391
+msgid "Gender:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:396
+msgid "Here you can specify your gender."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:402
+msgid "Female"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:403
+msgid "Male"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:414
+msgid "Location:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:417
+msgid ""
+"You can describe here your approximate physical location. Something like "
+"\"Region, Country\" will be ok. Please note that this information will be "
+"viewable by anyone so putting more data (like the exact address), generally, "
+"<b>is not a good idea</b>."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:422
+msgid "Languages:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:425
+msgid ""
+"You can put here the short names of the languages you can speak. An example "
+"might be \"EN,IT\" that would mean that you speak both Italian and English."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:429
+msgid "Other:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:432
+msgid ""
+"You can put here some additional personal data. It might be a funny quote or "
+"your homepage url... Please note that this information will be viewable by "
+"anyone so <b>don't put any sensible data</b> (passwords, telephone or credit "
+"card numbers)."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:502
+msgid ""
+"Here you can choose your avatar image. It will be visible<br>by other people "
+"that request it. Choose a nice image of yourself,<br>possibly avoiding "
+"obscenity and offending images. It is a good idea<br>to choose a relatively "
+"small file (say 150 Kb max) because<br>most clients have a limit on the size "
+"of avatars being downloaded.<br>The image also should be smaller than "
+"800x600 pixels since<br>it will have to be viewable in everyone's monitor."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:511
+msgid "Use avatar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:537
+msgid "Choose..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:598
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:637
+msgid "Failed to Load Avatar - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:599
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:638
+msgid ""
+"Failed to load the avatar image.<br>It may be an unaccessible file or an "
+"unsupported image format."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:606
+msgid "Failed to download the avatar image.<br><b>%Q</b>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:608
+msgid "Avatar Download Failed - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:649
+msgid "Avatar Might Be Too Big - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:650
+msgid ""
+"The avatar you have choosen is bigger than 1024x768 pixels.<br>Such a big "
+"image will not be seen on all the user monitors<br>and will probably be "
+"scaled by the remote clients with poor quality<br>algorithms to improve "
+"performance. You *should* scale it manually<br>to a sane size (like 800x600) "
+"or choose a different image."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:688
+msgid "Default Messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:691
+msgid "Part message:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:695
+msgid ""
+"<center>This is the default part message that will be used when you<br>leave "
+"a channel by closing a channel window.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:699
+msgid "Quit message:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:702
+msgid ""
+"<center>This is the default quit message that will be used when you<br>quit "
+"your IRC session by closing the console window or disconnecting by pressing "
+"the disconnect button.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:42
+msgid "Open Query For"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:40
+msgid "Private messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:46
+msgid ""
+"<center>This option enables query window creation when a private message "
+"(PRIVMSG) is received.<br>If you disable this, private messages will be "
+"shown in the active window or a common channel.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:42
+msgid "Private notices"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:55
+msgid ""
+"<center>This option enables query window creation when a private notice "
+"(NOTICE) is received.<br>If you disable this, private notices will be shown "
+"in the active window or a common channel.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:62
+msgid "Always open queries as minimized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:66
+msgid ""
+"<center>This option causes newly created query windows to be immediately "
+"minimized.<br>Enable this if you don't like queries popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:74
+msgid "Enable target user tracking"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:77
+msgid ""
+"<center>This option will enable target user tracking.<br>Some actions of the "
+"target user (e.g. joins and parts) will be displayed in the window.<br></"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:83
+msgid "Flash system taskbar on new query message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:86
+msgid ""
+"<center>This option causes the system taskbar entry for KVIrc to flash when "
+"a new query message is received and the KVIrc window is not the active.</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:91
+msgid "Popup notifier on new query message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:94
+msgid ""
+"<center>This option causes a small notifier window to pop up in the low "
+"right corner of the screen when a new message is received and the KVIrc "
+"window is not active.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:98
+msgid "Show information about query target at the top of the query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:101
+msgid ""
+"<center>This option enables query window information label. It can show you "
+"known information about query target at the top of the window.<br>Uncheck if "
+"you think,that it wastes your query space/</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:39
+msgid "Use global application font"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:40
+msgid "Hide icons in Popup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:41
+msgid "Global application font:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:67
+msgid "Enable fake transparency"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:71
+msgid ""
+"<center>This option makes all KVIrc windows look transparent.<br>You must "
+"choose a blending background image to below or check the \"Use KDE desktop "
+"for transparency\" option.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:77
+msgid ""
+"<center>This option makes all KVIrc windows look like transparent.<br>You "
+"must choose a blending background image to below.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:83
+msgid "Child window opacity:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:87
+msgid "Parent window opacity:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:91
+msgid "Blend color:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:97
+msgid "Use KDE desktop for transparency"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:102
+msgid "Keep in sync with KDE background changes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:111
+msgid "Transparency blend image:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:155
+msgid "Active Background"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:156
+msgid "Inactive Background"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:157
+msgid "Active Text (Primary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:158
+msgid "Active Text (Secondary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:159
+msgid "Inactive Text (Primary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:160
+msgid "Inactive Text (Secondary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:197
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:44
+msgid "Background"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:178
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:205
+msgid "Background Image"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:198
+msgid "Low-Contrast Foreground"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:199
+msgid "Mid-Contrast Foreground"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:200
+msgid "Active High-Contrast Foreground (Primary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:201
+msgid "Active High-Contrast Foreground (Secondary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:202
+msgid "Inactive High-Contrast Foreground (Primary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:203
+msgid "Inactive High-Contrast Foreground (Secondary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:40
+msgid "Scaling in userlist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:41
+msgid "Scale avatar images in userlist (recommended)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:43
+msgid ""
+"<center>This option will force KVIrc to scale avatars shown in the userlist."
+"<br>Avatars will be scaled to fit the constraints set below. Better keep "
+"this option on. :)</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:48
+msgid "Do not scale avatar if it is less than required size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:59
+msgid "Image width:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:61
+msgid "Image height:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:56
+msgid "Scaling on load (and in user tooltips)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:57
+msgid "Scale avatar images on image load"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:65
+msgid "Request CTCP"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:66
+msgid "Request missing avatars"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:67
+msgid "Maximum requested file size:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to send a DCC GET request when someone "
+"sets an avatar and there is no cached copy available.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:74
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:317
+msgid " bytes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:77
+msgid ""
+"<center>This is the maximum size for avatar images that will be "
+"automatically requested.<br>A reasonable value might be 102400 bytes (100 K)."
+"</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:83
+msgid "Automatically accept incoming avatars"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:87
+msgid ""
+"<center>This option will cause KVIrc to auto-accept DCC SEND requests for "
+"incoming avatars.<br>If you're using the \"Request missing avatars\" option "
+"above, enabling this may by useful.<br>Avatars will be saved in the local "
+"KVIrc directory.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:94
+msgid "Remember avatars for registered users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:99
+msgid ""
+"<center>Use a user's last known avatar by default (only for users that are "
+"registered).</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:103
+msgid "Avatar offer timeout:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:104
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:162
+msgid " sec"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:107
+msgid ""
+"<center>This is the amount of time to make an avatar available for transfer "
+"when requested.<br>When someone sends a CTCP AVATAR request, KVIrc will "
+"reply with a CTCP AVATAR message containing the name and size of your avatar "
+"image.<br>A time-limited file offer is added for the image file to the "
+"requesting user.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:115
+msgid "Ignore requests if no avatar is set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:118
+msgid ""
+"This option will cause KVIrc to ignore channel CTCP AVATAR requests when you "
+"have no avatar set. This is usually a good practice since it helps in "
+"reducing traffic by not sending a reply that would be empty."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:39
+msgid "Use online notify list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:44
+msgid "Configuration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:45
+msgid "Show notifications in active window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:50
+msgid "Flash window when users are going online"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:55
+msgid "Popup notifier when users are going online"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:59
+msgid "Advanced configuration"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:64
+msgid "Check USERHOST for online users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:69
+msgid "Use \"smart\" notify list manager"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:74
+msgid "Use the WATCH method if available"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:79
+msgid "Check interval (in seconds)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:85
+msgid "ISON delay (in seconds)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:91
+msgid "USERHOST delay (in seconds)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:96
+msgid ""
+"<p><b>Note:</b><br>The notify list is managed using the \"Registered Users\" "
+"settings.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:112
+msgid "Forcibly and completely disable the notifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:115
+msgid ""
+"This is an option for the impatient: it allows to forcibly and permanently "
+"disable the notifier window. Please note that if this option is activated "
+"then the notifier will NOT popup even if all the other options around "
+"specify to use it in response to particular events. Also note that this "
+"option will make all the /notifier.* commands fail silently."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:123
+msgid "Disable notifier window flashing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:124
+msgid "Disable notifier window fade effect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:39
+msgid "Default away message:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:41
+msgid "User input exits away mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:43
+msgid "Away Nickname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:44
+msgid "Change nickname on away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:47
+msgid "Use automatic nickname ([5 letters]AWAY)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:55
+#, c-format
+msgid "Custom nickname (%%nick%% means a current nick):"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/libkvioptions.cpp:199
+msgid "No such options page class name %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:47
+msgid "Use system URL handlers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:50
+msgid "<b>http://</b> handler command:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:51
+msgid "<b>https://</b> handler command:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:52
+msgid "<b>ftp://</b> handler command:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:53
+msgid "<b>mailto:</b> handler command:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:54
+msgid "<b>file://</b> handler command:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:55
+msgid "Unknown protocol handler command:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:61
+msgid "Use proxy"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:65
+msgid "Proxy"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:76
+msgid ""
+"<center>This is the list of available proxy servers.<br>Right-click on the "
+"list to add or remove proxies.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:90
+msgid "New Proxy"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:99
+msgid "Remove Proxy"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:111
+msgid "Proxy:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:131
+msgid "Protocol:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:336
+msgid "&New Proxy"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:337
+msgid "Re&move Proxy"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:71
+msgid "Pattern"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:72
+msgid "MIME Type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:87
+msgid "MIME type:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:92
+msgid "File pattern:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:97
+msgid "Magic bytes:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:102
+msgid "Save path:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:107
+msgid "Local open command:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:112
+msgid ""
+"<center>This field contains the command to execute to open a local file."
+"<br><tt>$0</tt> is used in place of the filename</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:116
+msgid "Remote open command:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:121
+msgid ""
+"<center>This field contains the command to execute when automatically "
+"opening a received file.<br><tt>$0</tt> is used in place of the filename</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:125
+msgid "Icon"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:134
+msgid "&New"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:138
+msgid "Re&move"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:184
+msgid "[Unknown Media Type]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:230
+msgid "New Media Type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:53
+msgid "Nickname Colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:56
+msgid "Channel owner:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:57
+msgid "Channel admin:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:58
+msgid "Op:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:59
+msgid "Half-op:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:60
+msgid "Voice:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:61
+msgid "User-op:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:62
+msgid "Away:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:66
+msgid "Use different color for own nick:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:81
+msgid "Draw nickname grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:83
+msgid "Grid color:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:90
+msgid "Grid type:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:94
+msgid "3D Grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:95
+msgid "3D Buttons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:96
+msgid "Plain Grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:97
+msgid "Dotted Grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:131
+msgid "Horizontal Alignment:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:135
+msgid "Vertical Alignment:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:231
+msgid "Show gender icons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:232
+msgid "Show user channel icons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:233
+msgid "Show user channel activity indicator"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:234
+msgid "Hide users label"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:235
+msgid "Enable user tooltips"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:236
+msgid "Hide avatars"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:79
+msgid "Use flood protection (recommended)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:81
+msgid ""
+"<center>This option makes KVIrc only respond to a limited number of CTCP "
+"requests within a specified time interval, to prevent \"flooding\" CTCP "
+"messages.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:83
+msgid "Allow up to:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:84
+msgid " requests"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:86
+msgid ""
+"<center>Minimum value: <b>0 requests</b><br>Maximum value: <b>10000 "
+"requests</b></center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:89
+msgid "within:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:92
+msgid ""
+"<center>Minimum value: <b>1 sec</b><br>Maximum value: <b>3600 sec</b></"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:96
+msgid "Ignored Requests"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:97
+msgid "PING"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:98
+msgid "FINGER"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:99
+msgid "CLIENTINFO"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:100
+msgid "USERINFO"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:101
+msgid "VERSION"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:102
+msgid "SOURCE"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:103
+msgid "TIME"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:104
+msgid "PAGE"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:105
+msgid "AVATAR"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:106
+msgid "DCC/TDCC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:131
+msgid "General Preferences"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:134
+msgid "Theme Preferences"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:136
+msgid "KVIrc Preferences"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:139
+msgid ""
+"This dialog contains a set of KVIrc settings.<br> Use the icons on the left "
+"to navigate through the option pages. The text box in the bottom left corner "
+"is a small search engine. It will highlight the pages that contain options "
+"related to the search term you have entered."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:147
+msgid ""
+"Many settings have tooltips that can be shown by holding the cursor over "
+"their label for a few seconds."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:152
+msgid ""
+"When you have finished, click \"<b>OK</b>\" to accept your changes or "
+"\"<b>Cancel</b>\" to discard them. Clicking \"<b>Apply</b>\" will commit "
+"your changes without closing the window."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:217
+msgid ""
+"<p>This is the search tool for this options dialog.</p><p>You can enter a "
+"search term either in your native language or in english and press the "
+"button on the right. The pages that contain some options related to the "
+"search term will be highlighted and you will be able to quickly find them.</"
+"p><p>Try \"nickname\" for example.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:249
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:61
+msgid "Close this dialog, accepting all changes."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:255
+msgid "&Apply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:256
+msgid "Commit all changes immediately."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:69
+msgid "Close this dialog, discarding all changes."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:149
+msgid ""
+"This table contains the text icon associations.<br>KVirc will use them to "
+"display the CTRL+I escape sequences and eventually the emoticons."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:165
+msgid "Add"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:169
+msgid "Delete"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:191
+msgid "unnamed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:53
+msgid "Enable word highlighting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:55
+msgid "Words to highlight:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:57
+msgid "Word splitters:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:59
+msgid "Highlight messages containing my nickname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:61
+msgid ""
+"<center>If this option is enabled, KVIrc will highlight any user message "
+"containing your current nickname</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:63
+msgid "Flash the system taskbar entry on highlighted messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:65
+msgid ""
+"<center>If this option is enabled, KVIrc will (attempt to) flash the system "
+"taskbar entry when a highlighted message is printed and KVIrc is not the "
+"active window</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:67
+msgid "Popup the notifier window on highlighted messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:69
+msgid ""
+"<center>If this option is enabled, KVIrc will popup a little notifier window "
+"in the low right corner of your desktop when a highlighted message is "
+"printed and KVIrc is not the active window</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:91
+msgid "Alert Restrictions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:92
+msgid "Restrict alert"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:94
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if a "
+"normal message is received in a channel.<br>Actions like joins, parts and "
+"mode changes will be ignored.<br> This is useful if you are in channels with "
+"a high rate of traffic and only want to be alerted for messages that are "
+"interesting to you.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:96
+msgid "Alert for highlighted words"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:98
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which contain a word from the highlighted words list above.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:100
+msgid "Alert for query messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:102
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which are shown in queries.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:107
+msgid "Use custom alert level"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:109
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if "
+"the specified alert level is reached.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:111
+msgid "Minimum alert level:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:114
+msgid ""
+"<center>This option sets the minimum alert level for the taskbar.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:213
+msgid "Output verbosity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:49
+msgid "Mute"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:50
+msgid "Quiet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:51
+msgid "Normal"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:52
+msgid "Verbose"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:53
+msgid "Paranoic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:59
+msgid "Show in active window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:60
+msgid "External messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:61
+msgid "External CTCP replies"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:62
+msgid "Whois replies"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:63
+msgid "ChanServ and NickServ notices"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:64
+msgid "Invite messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:65
+msgid "Server replies"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:66
+msgid "Server notices"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:67
+msgid "Broadcast and WALLOPS messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:70
+msgid "Show extended server information"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:71
+msgid "Show server pings"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:72
+msgid "Show own parts in the console"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:73
+msgid "Show compact mode changes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:43
+msgid "Minimize on startup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:44
+msgid "Confirm quit with active connections"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:45
+msgid "Remember window properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:50
+msgid "Disable splash screen"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:54
+msgid "Enable visual effects"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:55
+msgid "Hide Channel window tool buttons by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:57
+msgid "Open Dialog Window For"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:58
+msgid "Preferences"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:59
+msgid "Registered Users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:149
+msgid "Servers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.cpp:40
+msgid ""
+"This section contains irc tools<br><p>like<b> away, lag and logging system. "
+"</b> </p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:39
+msgid "On Disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:42
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:55
+msgid "Keep channels open"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:44
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after disconnect."
+"</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:47
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:60
+msgid "Keep queries open"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:49
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after disconnect.</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:52
+msgid "On Unexpected Disconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:62
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:65
+msgid "Rejoin channels after reconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:67
+msgid ""
+"<center>This option will cause KVIrc to rejoin channels after a successful "
+"reconnect attempt.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:69
+msgid "Reopen queries after reconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to reopen query windows after a "
+"successful reconnect attempt.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:75
+msgid "Automatically reconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:77
+msgid ""
+"<center>This option will enable auto-reconnecting after an unexpected "
+"disconnect. An unexpected disconnect is the <b>termination</b> of a <b>fully "
+"connected IRC session</b> that was <b>not requested by the user</b> by the "
+"means of the QUIT message.<p><b>Warning:</b> If you use /RAW to send a QUIT "
+"message to the server, this option will not behave correctly, since does not "
+"detect the outgoing QUIT message and will attempt to reconnect after the "
+"server has closed the connection. For this reason, always use the /QUIT "
+"command to close your connections. This option may also behave incorrectly "
+"with bouncers that support detaching, in this case a solution could be to "
+"prepare an alias that sends the bouncer \"detach\" command immediately "
+"before the \"quit\" command.<br><tt>alias(bncdetach){ raw bouncer detach; "
+"quit; }</tt></p></center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:89
+msgid "Maximum attempts (0: unlimited):"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:94
+msgid "Delay between attempts:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:100
+msgid ""
+"<center>Minimum value: <b>0 sec</b><br>Maximum value: <b>86400 sec</b></"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:123
+msgid "Certificate"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:125
+msgid "Use SSL certificate (PEM format only)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:127
+msgid "Certificate location:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:130
+msgid "Certificate password:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:134
+msgid "Private Key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:135
+msgid "Use SSL private key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:137
+msgid "Private key location:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:140
+msgid "Private key password:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:146
+msgid "This executable has no SSL support."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:165
+msgid "Timeout Values"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:166
+msgid "Connect timeout:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:168
+msgid "Outgoing data queue flush timeout:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:170
+msgid "Limit outgoing traffic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:171
+msgid "Limit to 1 message every:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:173
+msgid " usec"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:175
+msgid ""
+"<center>Minimum value: <b>10000 usec</b><br>Maximum value: <b>10000000 usec</"
+"b></center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:179
+msgid "Network Interfaces"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:181
+msgid "Bind IPv4 connections to:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:185
+msgid "Bind IPv6 connections to:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:210
+msgid "Enable ident service (bad practice on UNIX!)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:216
+msgid "Output identd messages to:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:218
+msgid "Active window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:219
+msgid "Console"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:220
+msgid "Do not show any identd messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:237
+msgid "Enable ident service only while connecting to server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:240
+msgid "Ident username:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:243
+msgid "Service port:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:248
+msgid "IPv6 Settings"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:249
+msgid "Enable service for IPv6"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:258
+msgid "IP stack treats IPv4 as part of IPv6 namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:265
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications. If it is possible, install a real ident daemon.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:270
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications.<br>On UNIX, you may also need root privileges to bind to the "
+"auth port (113).<br>It is <b>highly recommended</b> that a <b>real</b> "
+"system-wide ident daemon be used instead, or none at all if ident is not "
+"required.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.cpp:39
+msgid ""
+"This section contains the general client options<br><p>like<b> sound, "
+"mediafiles, URL handler </b> etc... </p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:39
+msgid "Automatically Log"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:40
+msgid "Query windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:41
+msgid "Channel windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:42
+msgid "DCC Chat windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:43
+msgid "Console windows"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:45
+msgid "Gzip logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:47
+msgid "Strip colors in logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:48
+msgid "Auto flush logs every"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:49
+msgid " min"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:52
+msgid ""
+"<center>Save logs with the current interval<br>Set to 0 to disable this "
+"feature</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:49
+msgid "Minimize console after successful login"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:52
+msgid ""
+"<center>This option will cause KVIrc to minimize the console window after "
+"successfully logging into a server.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:55
+msgid "Show network name in console taskbar entry"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to show the network name as the console "
+"taskbar entry instead of the server name. This is nice to keep on unless "
+"your servers are not organized in networks or you often connect to two "
+"servers of the same network.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:75
+msgid "Force immediate quit"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:78
+msgid ""
+"<center>This option causes KVIrc to close the connection immediately after "
+"sending the QUIT message.<br>When this option is disabled, KVIrc will wait "
+"for the server to close the connection.<br>Note that if you use this, your "
+"QUIT message may be not displayed.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:84
+msgid "Prepend gender info to realname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:110
+msgid "On Channel Kick"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:112
+msgid "Rejoin channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:115
+msgid ""
+"<center>This option will cause KVIrc to attempt to rejoin a channel after "
+"being kicked.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:129
+msgid "Keep channel open"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:121
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"being kicked.<br>It might be a good idea to also enable the \"Rejoin channel"
+"\" option.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:127
+msgid "On Channel Part"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:132
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"leaving it.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:136
+msgid "Automatically join channel on invite"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:139
+msgid ""
+"<center>This option will cause KVIrc to automatically join a channel when an "
+"INVITE message for that channel is received.<br><b>Warning:</b> This may "
+"help spammers harass you. :)</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:144
+msgid "Always open channels as minimized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:148
+msgid ""
+"<center>This option causes newly created channel windows to be immediately "
+"minimized.<br>Enable this if you don't like channels popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:168
+msgid "Log joined channels history"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:170
+msgid "Default ban mask:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:188
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:202
+msgid "On Channel Join"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:189
+msgid "Do not send /WHO request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:190
+msgid "Do not request ban list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:191
+msgid "Do not request ban exception list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:192
+msgid "Do not request invite list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:194
+msgid "Do not update the away list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:197
+msgid ""
+"<center>KVIrc sends out a channel /WHO message every now and then to keep "
+"the channel away list in sync. Use this option to disable this feature (and "
+"to save your IRC bandwidth.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:203
+msgid "Echo channel topic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:204
+msgid "Show channel sync time"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:40
+msgid "Default text encoding:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:109
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:133
+msgid "Use Language Encoding"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:59
+msgid "Force language:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:65
+msgid "<b>Note:</b> You need to restart KVirc to apply a language changing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:68
+msgid "Automatic detection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:69
+msgid "en"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Unable to write language information to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:39
+msgid "Enable Anti-spam For"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:45
+msgid "Silent anti-spam (no warnings)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:46
+msgid "Words considered spam:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:51
+msgid "Use workaround for firewall"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:54
+msgid ""
+"<center>Enable this option if you can't accept incoming connections."
+"<br>KVIrc will try to use different methods to send and receive files."
+"<br>Please note that these methods may NOT work when communicating with a "
+"non-KVIrc client.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:73
+msgid "Network Properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:75
+msgid "Use user-defined address or network interface"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:79
+msgid ""
+"<center>Enable this option if you are on a multihost machine and want to "
+"force one of the available IP addresses to be used for outgoing DCCs."
+"<br>This is especially useful when you use IPv6 and IPv4 addresses.<br>You "
+"can force KVIrc to always choose the IPv4 interface.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:84
+msgid "Listen on address/interface:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:87
+msgid ""
+"<center>This is the IP address or name of the interface to use by default "
+"for outgoing DCC transfers.<br>On UNIX systems that support it, you can also "
+"specify IPv4 interface names (such as <b>ppp0</b>).<br>If you set it to "
+"<b>0.0.0.0</b>, KVIrc will try to use the first available IPv4 interface</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:94
+msgid "Use user-defined port range"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:97
+msgid ""
+"<center>Enable this option if you want specify a local port range for DCC.</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:102
+msgid "Lowest port:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:105
+msgid "Highest port:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:108
+msgid "Send a fixed address in requests"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:111
+msgid ""
+"<center>Enable this option if you want to always send a fake IP address in "
+"your DCC requests.<br>This might be useful if you're behind a router with a "
+"static address that does network address translation (NAT) and forwards all "
+"or a range of ports.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:115
+msgid "Send address/interface:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:119
+msgid ""
+"<center>This is the fixed address that will be sent with all DCC requests if "
+"you enable the option above.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:123
+msgid "Guess address from IRC server if unroutable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:128
+msgid ""
+"<center>You can enable this option if you are behind a router that forwards "
+"all or a range of ports.<br>KVIrc will try to guess the IP address to use "
+"for DCC by looking up the local hostname as seen by the IRC server you're "
+"connected to.<br>This method is an exclusive alternative to the \"fixed "
+"address\" above.<br>It might guess the correct address automatically if "
+"certain conditions are met (e.g. the IRC server does not mask hostnames).</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:134
+msgid "Use \"broken bouncer hack\" to detect address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:137
+msgid ""
+"<center>When you're behind a dialup router and also tunneling through a "
+"psyBNC bouncer, you can use a bug in the bouncer to force KVIrc to bind the "
+"DCC connections to the dialup router's address.<br>It's an ugly hack - use "
+"it only if nothing else works.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:144
+msgid "Notify failed DCC handshakes to the remote end"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:147
+msgid ""
+"<center>If you enable this option, when a DCC request from a remote user "
+"can't be satisfied KVIrc will notify him by a CTCP ERRMSG. This is a nice "
+"feature so it is a good idea to leave it on unless for some reason you have "
+"deactivated the antiflood system: in this case turning off this option might "
+"help if you often get attacked by CTCP floods.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:154
+msgid "Maximum number of DCC sessions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:156
+msgid ""
+"<center>This is the maximum number of concurrent DCC sessions and it "
+"includes all the DCC types (send,chat,recv...). KVIrc will refuse the "
+"requests when this limit is reached.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:161
+msgid "DCC socket timeout:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:164
+msgid ""
+"<center>This is the amount of time that KVIrc will wait for a response "
+"before assuming that a DCC has failed because the remote client was unable "
+"to connect to our listening socket.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:198
+msgid "On Incoming File"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:371
+msgid "Automatically accept"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:200
+msgid "Open transfer window as minimized when auto-accepted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:201
+msgid "Automatically resume when auto-accepted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:203
+msgid "Save Location"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:204
+msgid "Download folder:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:205
+msgid "Sort saved files by nicknames (create subfolders)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:206
+msgid "Guess save path from media type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:209
+msgid "On Download Completion"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:210
+msgid "Notify completion in console"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:211
+msgid "Notify completion in notifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:212
+msgid "Automatically clear transfer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:215
+msgid ""
+"<center>This option will cause succesfully terminated transfers to be "
+"automatically removed from the transfer window.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:220
+msgid "Always open transfer window as minimized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:238
+msgid "Bug Compatibility"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:239
+msgid "Send ACK for byte 0"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:242
+msgid ""
+"<center>This option causes KVIrc to send a zero-byte acknowledge to kick-"
+"start the DCC transfer with some buggy IRC clients.<br>Use it only if your "
+"DCC transfers stall just after establishing a connection without sending any "
+"data.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:247
+msgid "Accept broken RESUME (mIRC file.ext)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:250
+msgid ""
+"<center>This option causes KVIrc to accept RESUME requests with invalid "
+"filenames.<br>Use it if KVIrc fails to accept RESUME requests from other "
+"clients (e.g. some versions of mIRC).</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:254
+msgid "Replace spaces with underscores in outgoing filenames"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:257
+msgid ""
+"<center>This option causes KVIrc to replace spaces with underscores in "
+"filenames for all the outgoing file transfers. This will fix filename "
+"handling with some buggy clients (e.g. some versions of mIRC)."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:262
+msgid "Limits"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:265
+msgid "Limit upload bandwidth to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:273
+msgid "bytes/sec"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:271
+msgid "Limit download bandwidth to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:277
+msgid "Maximum number of DCC transfers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:279
+msgid ""
+"<center>This is the maximum number of concurrent DCC transfers. KVIrc will "
+"refuse the requests when this limit is reached.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:283
+msgid "Tweaks"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:285
+msgid "Use fast send (send ahead)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:288
+msgid ""
+"<center>The \"send ahead\" DCC method allows data to be sent faster by "
+"breaking some of the rules of the original DCC SEND protocol specification."
+"<br>Most clients can handle this kind of optimisation so disable it only if "
+"you have problems.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:295
+msgid "Force idle step"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:298
+msgid ""
+"<center>Enable this option when the dcc file transfers tend to block your "
+"computer by consuming too much CPU time. When this option is enabled the "
+"idle interval below will be forcibly inserted between each sent/received "
+"data packet.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:310
+msgid ""
+"<center>This parameter controls the average delay between two packets sent "
+"or received.<br>A smaller interval will cause you to send data faster but "
+"will also add load to your CPU, disk and network interface.<br>Reasonable "
+"values are from 5 to 50 milliseconds.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:316
+msgid "Packet size:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:320
+msgid ""
+"<center>This parameter controls the packet size used for DCC SEND.<br>With "
+"bigger packets you will be probably send data faster, but you will also "
+"saturate your bandwidth and in some cases cause more disk activity."
+"<br>Reasonable values are from 512 to 4096 bytes.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:349
+msgid "On Chat Request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:351
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:373
+msgid "Open minimized when auto-accepted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:353
+msgid "Always open as minimized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:369
+msgid "Open all minimized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:370
+msgid "On Voice Request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:376
+msgid "Force half-duplex mode on sound device"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:377
+msgid "Volume slider controls PCM, not Master"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:379
+msgid "Sound device:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:380
+msgid "Mixer device:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:382
+msgid "Pre-buffer size:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:38
+msgid "Enable Ignore For"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:39
+msgid "Private/channel messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:40
+msgid "Private/channel notices"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:44
+msgid "Use verbose ignore (show messages in console)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:46
+msgid "Sound System"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:66
+msgid "This allows you to select the sound system to be used with KVIrc."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:72
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:88
+msgid "Auto-detect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:91
+msgid "Test"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:79
+msgid "Media Player"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:81
+msgid ""
+"This allows you to select the preferred media player to be used with the "
+"mediaplayer.* module commands and functions."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:102
+msgid "ID3 tags' encoding"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:104
+msgid "This allows you to select encoding of mp3 tags."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:125
+msgid "Winamp messages ecoding"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:127
+msgid "This allows you to select encoding of winamp messages."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:290
+msgid "New Query opened"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:293
+msgid "New message in inactive query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:296
+msgid "Highlighted message in inactive window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:299
+msgid "Me have been kicked"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:39
+msgid "Selection background color"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:40
+msgid "Selection foreground color"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:41
+msgid "Control char color"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:42
+msgid "Cursor color"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:141
+msgid "Warp cursor at the end of line when browsing history"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:142
+msgid "Disable the input history window and it's log memory."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:143
+msgid "Hide input toolbuttons by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:144
+msgid "Nick completion"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:145
+msgid "Use bash-like nick completion"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:146
+msgid "Nick completion postfix string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:147
+msgid "Use the completion postfix string for the first word only"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:148
+msgid "Commandline in user-friendly mode by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:81
+msgid "Show message icons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:82
+msgid "Draw some emoticons (smileys) as pictures"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:83
+msgid "Don't show colors in user messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:88
+msgid "Nicknames"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:90
+msgid "\"Smart\" nickname colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:91
+msgid "Use same colors as in the userlist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:93
+msgid "Show nicknames in bold"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:94
+msgid "Show user and host"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:95
+msgid "Show channel mode prefix"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:96
+msgid "User-defined prefix and postfix"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:98
+msgid "[PREFIX]nickname[!user@host][POSTFIX] message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:112
+msgid "Prefix:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:117
+msgid "Postfix:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:131
+msgid "Show timestamp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:134
+msgid "Use UTC time for timestamp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:141
+msgid "Use special color for timestamps"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:147
+msgid "Timestamp format:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:320
+msgid "Transparent"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:401
+msgid "Message Type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:417
+msgid "Background:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:426
+msgid "Foreground:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:434
+msgid "Alert level:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:454
+msgid "Log this"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:458
+msgid "Load From..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:460
+msgid "Save As..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:589
+msgid "Choose a Filename - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:646
+msgid "Choose a Filename - KVIrc "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:40
+msgid "Enable lag meter"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:42
+msgid ""
+"<center>This enables the lag meter engine, which checks at regular intervals "
+"how much lag (latency) the server has.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:45
+msgid "Lag meter heartbeat:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:49
+msgid ""
+"<center>This option allows you to set the lag meter heartbeat interval."
+"<br>The lower the heartbeat interval the higher will be the accuracy of the "
+"lag check but also higher cpu usage and data traffic to the server."
+"<br>Please note that this is NOT the interval between pings sent to the "
+"server: the pings (if any) will be sent really less often. 5000 is a "
+"reasonable value.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:58
+msgid "Trigger event if lag exceeds:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:61
+msgid ""
+"<center>This option controls the threshold for the OnLagAlarmTimeUp and "
+"OnLagAlarmTimeDown events. When the lag goes above the threshold "
+"OnLagAlarmTimeUp will be triggered and when the lag falls back below the "
+"threshold then OnLagAlarmTimeDown will be triggered</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:68
+msgid "Show lag in IRC context display"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:70
+msgid ""
+"<center>This makes the IRC context display applet show the current lag after "
+"the user's nickname (in seconds)</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.h:28
+msgid "Away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.h:28
+msgid "CTCP"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:28
+msgid "DCC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:59
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:41
+msgid "Advanced"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:72
+msgid "File Transfer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:113
+msgid "Chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:126
+msgid "Voice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:32
+msgid "IRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:73
+msgid "Channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:28
+msgid "Lag"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:30
+msgid "time,ping"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:37
+msgid "authentication,identify"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:31
+msgid "Language"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:34
+msgid "language,encoding,charset,codepage"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:28
+msgid "Contacts"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:30
+msgid "notify,buddy,buddies,friends"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:42
+msgid "Notifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:43
+msgid "popup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:37
+msgid "Text"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:38
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:49
+msgid "theme,colors,output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:52
+msgid "Message Style"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:56
+msgid "theme,privmsg,output,format"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:67
+msgid "Timestamp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:71
+msgid "time,timestamp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:88
+msgid "Message Colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:169
+msgid "theme,colors,messages,output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:168
+msgid "Color Set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.h:32
+msgid "Avatars"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:32
+msgid "Sound"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:48
+msgid "sound,xmms,audio,play,amarok"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:81
+msgid "Sounds"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:83
+msgid "sound,events"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:28
+msgid "URL handlers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:31
+msgid "url,programs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:29
+msgid "Tray icon"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:31
+msgid "tray,dockwidget"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.h:33
+msgid "Tools"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.h:28
+msgid "General options"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.h:31
+msgid "Interface"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:29
+msgid "Text icons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:31
+msgid "smileys,emoticons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:34
+msgid "Output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:48
+msgid "Look"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:101
+msgid "Features"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:46
+msgid "Media Types"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:48
+msgid "file,audio,video,programs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:114
+msgid "theme"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:47
+msgid "Transparency"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:48
+msgid "theme,background"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:74
+msgid "Window Captions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:88
+msgid "theme,mdi"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:87
+msgid "Workspace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:100
+msgid "ToolBar Applets"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:101
+msgid "theme,toolbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:150
+msgid "connection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:33
+msgid "Protection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:36
+msgid "ctcp,flood"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:144
+msgid "Avatar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.h:28
+msgid "Anti-spam"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:32
+msgid "Verbosity And Output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:34
+msgid "debug"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:28
+msgid "Logging"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:29
+msgid "save,output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:50
+msgid "Input"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:33
+msgid "theme,colors,text"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:33
+msgid "Taskbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:47
+msgid "Tree Taskbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:65
+msgid "Foreground"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:111
+msgid "Classic Taskbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:52
+msgid "Proxy Hosts"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:54
+msgid "connection,servers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:28
+msgid "Alert/Highlight"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:42
+msgid "Highlight"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:55
+msgid "Taskbar Alert"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.h:29
+msgid "Flood Protection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:30
+msgid "Userlist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:31
+msgid "theme,userlist,channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:45
+msgid "theme,userlist,channel,background"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:66
+msgid "theme,userlist,channel,colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:81
+msgid "Nickname Grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:82
+msgid "theme,userlist,channel,grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:102
+msgid "userlist,channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:29
+msgid "Labels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:30
+msgid "theme,topic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:28
+msgid "Scripting Engine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:29
+msgid "scripting,kvs,debug"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:55
+msgid "SSL"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:72
+msgid "Socket"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:87
+msgid "Ident Service"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:29
+msgid "Ignore"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:31
+msgid "protection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:28
+msgid "Query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:30
+msgid "chat"
+msgstr ""
diff --git a/po/modules/options/options_fr.po b/po/modules/options/options_fr.po
new file mode 100644
index 00000000..ecaf8489
--- /dev/null
+++ b/po/modules/options/options_fr.po
@@ -0,0 +1,4446 @@
+# translation of options_fr.po to Français
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Ahinu <[email protected]>, 2004, 2005.
+# Ahinu <[email protected]>, 2005.
+# Ahinu <[email protected]>, 2006.
+# Elephantman <[email protected]>, 2008.
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:304
+msgid ""
+msgstr ""
+"Project-Id-Version: options_fr\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2008-03-06 18:30+0100\n"
+"Last-Translator: Elephantman <[email protected]>\n"
+"Language-Team: Français <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:232
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:51
+msgid "Font:"
+msgstr "Police :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:47
+msgid "Background color:"
+msgstr "Couleur de fond :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:129
+msgid "Background image:"
+msgstr "Image de fond :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:51
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:46
+msgid "Horizontal align:"
+msgstr "Alignement horizontal :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:50
+msgid "Vertical align:"
+msgstr "Alignement vertical :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:59
+msgid "Mark Line:"
+msgstr "Marque de Ligne :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:66
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:124
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:59
+msgid "Tile"
+msgstr "Mosaïque"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:62
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:55
+msgid "Left"
+msgstr "À gauche"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:56
+msgid "Right"
+msgstr "À droite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:132
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:62
+msgid "Center"
+msgstr "Centré"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:60
+msgid "Top"
+msgstr "En haut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:61
+msgid "Bottom"
+msgstr "En bas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:149
+msgid "Enable URL highlighting"
+msgstr "Activer le surlignage des URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:150
+msgid "Use line wrap margin"
+msgstr "Utiliser la marge de retour à la ligne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:151
+msgid "Maximum buffer size:"
+msgstr "Taille maximale du tampon :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:152
+msgid " lines"
+msgstr " lignes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:153
+msgid "Link tooltip show delay:"
+msgstr "Délai pour montrer la bulle d'aide des liens :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:306
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:59
+msgid " msec"
+msgstr " msec"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:155
+msgid "Link tooltip hide delay:"
+msgstr "Délai pour cacher la bulle d'aide des liens :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:157
+msgid "Track last read text line"
+msgstr "Traquer la dernière ligne de texte lue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:48
+msgid "NickServ Authentication Rule"
+msgstr "Règle d'Authentification à NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:55
+msgid "Registered NickName"
+msgstr "Pseudo Enregistré"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:60
+msgid "Put here the nickname that you have registered with NickServ"
+msgstr "Entrez ici le pseudo que vous avez enregistré auprès de NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:277
+msgid "NickServ Mask"
+msgstr "Masque de NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:70
+#, c-format
+msgid ""
+"This is the mask that NickServ must match to be correctly identified as the "
+"NickServ service. This usually will be something like <b>NickServ!"
+"[email protected]</b>.<br>You can use wildcards for this field, but "
+"generally it is a security flaw. If you're 100%% sure that NO user on the "
+"network can use the nickname \"NickServ\", the mask <b>NickServ!*@*</b> may "
+"be safe to use in this field."
+msgstr ""
+"Il s'agit du masque de NickServ doit vérifier afin d'être correctement "
+"identifié comme service NickServ. Ce masque est généralement du type "
+"<b>[email protected]</b>.<br>Même si vous pouvez utiliser des "
+"jokers pour ce champ, conseiller de ne pas le faire pour des raisons de "
+"sécurité. Si vous êtes sûr a 100%% qu'AUCUN utilisateur du réaseau ne peut "
+"avoir \"NickServ\" comme pseudo, le masque <b>NickServ!*@*</b> peut être "
+"utilisé avec confiance."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:78
+msgid "Message Regexp"
+msgstr "Expr. Regulière du Message"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:86
+msgid ""
+"This is the simple regular expression that the identification request "
+"message from NickServ must match in order to be correctly recognized.<br>The "
+"message is usually something like \"To identify yourself please use /ns "
+"IDENTIFY password\" and it is sent when the NickServ wants you to "
+"authenticate yourself. You can use the * and ? wildcards."
+msgstr ""
+"Il s'agit de l'expression régulière simple que la requête d'identification "
+"de NickServ doit vérifier pour être correctement reconnue.<br>The message "
+"est générallement du style \"To identify yourself please use /ns IDENTIFY "
+"password\" et il est envoyé quand vous vous authentifié. Vous pouvez "
+"utiliser les jokers * et ?."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:259
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:279
+msgid "Identify Command"
+msgstr "Commande d'identification"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:98
+msgid ""
+"This is the command that will be executed when NickServ requests "
+"authentication for the nickname described in this rule (if the both server "
+"and NickServ mask are matched). This usually will be something like <b>msg "
+"NickServ identify &lt;yourpassword&gt;</b>.<br>You can use <b>msg -q</b> if "
+"you don't want the password echoed on the screen. Please note that there is "
+"no leading slash in this command."
+msgstr ""
+"Il s'agit de la commande qui sera exécutée quand NickServ demande "
+"l'identification du pseudo décrit dans cette rêgle (si le serveur et "
+"NickServ vérifient leur masque respectif). C'est généralement quelque chose "
+"du style <b>msg NickServ identify &lt;pass&gt;</b>.<br>Vous pouvez utiliser "
+"<b>msg -q</b> si ne voulez pas que que votre pass soit reporté à l'écran. "
+"Notez qu'il n'y a pas de slash en début de commande."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:256
+msgid "Server mask"
+msgstr "Mask du serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:117
+msgid ""
+"This is the mask that the current server must match in order for this rule "
+"to apply. It can contain * and ? wildcards.<br>Do NOT use simply \"*\" "
+"here..."
+msgstr ""
+"Il s'agit du masque que le serveur courant doit vérifier pour que cette "
+"règle soit applicable. Il peut contenir les jokers * et ?.<br>Ne pas "
+"utiliser simplement \"*\" à cet endroit..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:128
+msgid "Hint: Move the mouse cursor over the fields to get help"
+msgstr "Astuce : Déplacez le curseur sur les champs pour avoir de l'aide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:137
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:68
+msgid "Cancel"
+msgstr "Annuler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:803
+msgid "OK"
+msgstr "Valider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:164
+msgid "Invalid NickServ Rule"
+msgstr "Règle d'Identification a NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:169
+msgid "The Nickname field can't be empty!"
+msgstr "Le champ du Pseudo ne peut être vide !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:175
+msgid "The Nickname field can't contain spaces!"
+msgstr "Le champ du Pseudo ne doit pas contenir d'espaces !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:183
+msgid "The NickServ mask can't be empty!<br>You must put at least * there."
+msgstr ""
+"Le masque de NickServ ne peut être vide !<br>Vous devez y mettre au moins *."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:191
+msgid "The Message Regexp can't be empty!<br>You must put at least * there."
+msgstr ""
+"L'Expression Regulière du Message ne peut être vide !<br>Vous devez y mettre "
+"au moins *."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:199
+msgid "The Identify Command can't be empty!"
+msgstr "La commande d'identification ne peut être vide !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:265
+msgid "Enable NickServ Identification"
+msgstr "Activer l'Authentification à NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:269
+msgid "This check enables the automatic identification with NickServ"
+msgstr "Cette option active l'authentification à NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:276
+msgid "Nickname"
+msgstr "Pseudo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:258
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:278
+msgid "NickServ Request Mask"
+msgstr "Mask de la Requête de NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:265
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on all the networks."
+"<br>Please be aware that this feature can cause your NickServ passwords to "
+"be stolen if used improperly. Make sure that you fully understand the "
+"NickServ authentication protocol.<br>In other words, be sure to know what "
+"you're doing.<br>Also note that the password that you provide is stored as "
+"<b>PLAIN TEXT</b>.<br>KVIrc supports also per-network NickServ "
+"authentication rules that can be created in the \"Advanced...\" network "
+"options (accessible from the servers dialog).</center>"
+msgstr ""
+"<center>Il s'ait d'une liste de règles d'identification à NickServ. KVIrc va "
+"les utiliser pour façonner son interaction automatique à NickServ.<br>Soyez "
+"conscient que cette fonctionnalité peut être responsable du vol de vos mots "
+"de pass de NickServ si elle est mal utilisée. Suivez les suggestions des "
+"bulles d'aide et soyez sûr de comprendre complètement le protocol "
+"d'authentification à NickServ.<br>En d'autres termes, soyez sûr de ce que "
+"vous faites.<br>Notez aussi que le mot de pass que vous fournissez est "
+"sauvegardé en <b>TEXTE BRUT</b>.Click droit pour ajouter/enlever des règles."
+"<br> KVIrc supporte aussi des rêgles d'authentification par serveur dans la "
+"section \"Avancé...\" des options de reseau (accessible depuis la boîte de "
+"dialogue des serveurs).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:293
+msgid "Add Rule"
+msgstr "Ajouter une Règle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:298
+msgid "Edit Rule"
+msgstr "Éditer une Règle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:302
+msgid "Delete Rule"
+msgstr "Effacer une Règle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:31
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:36
+msgid "Font"
+msgstr "Police"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:38
+msgid "Foreground color"
+msgstr "Couleur de l'avant-plan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:37
+msgid "Background color"
+msgstr "Couleur de fond"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:34
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:44
+msgid "Background image"
+msgstr "Image de fond"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:40
+msgid "Enable tray icon"
+msgstr "Activer l'icône de la barre de tâche"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:41
+msgid "Close in tray"
+msgstr "Fermer dans la barre de tâche"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:42
+msgid "Minimize in tray"
+msgstr "Réduire dans la barre de tâche"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:44
+msgid "Enable tray icon flashing"
+msgstr "Désactiver l'icône de la barre de tâche"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:45
+msgid "Enable level-based message notification (not a message-type based)"
+msgstr "Activer une notification basée sur les niveaux (et sur les messages)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:47
+msgid "Select message levels to notify"
+msgstr "Sélectionner les niveaux de notification"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:49
+msgid "Minimum level for low-priority messages"
+msgstr "Niveau minimal pour les messages à faible priorité"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:53
+msgid "Minimum level for high-priority message"
+msgstr "Niveau minimal pour les messages à forte priorité"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.cpp:40
+msgid ""
+"This section contains irc protection tools<br><p>like<b> flood, ignore, "
+"antispam. </b> </p>"
+msgstr ""
+"Cette section se réfère aux outils de protection IRC<br><p>tels que "
+"<b><i>flood</i>, ignore, anti-pub</b>.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:40
+msgid ""
+"<center><b>Settings for CTCP.</b></center><p>The <b>Client-To-Client "
+"Protocol</b> (CTCP) is used to transmit special control messages over an IRC "
+"connection. These messages can request information from clients or negotiate "
+"file transfers.<br><br></p>"
+msgstr ""
+"<center><b>Cette section contient des réglages pour CTCP</b></center><p>Le "
+"<b>Client-To-Client Protocol</b> (CTCP) est utilisé pour transmettre des "
+"messages de contrôle spéciaux à travers une connexion IRC. Ces messages "
+"peuvent permettre d'obtenir des informations sur les clients ou négocier des "
+"transferts de fichiers.<br><br></p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:47
+msgid "CTCP Replies"
+msgstr "Réponses CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:48
+msgid "Append to VERSION reply:"
+msgstr "À ajouter à la réponse à VERSION :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:52
+msgid ""
+"<center>This text will be appended to the CTCP VERSION reply.<br>For "
+"example, you can place a script name here.</center>"
+msgstr ""
+"<center>Ce texte va être ajouté à la réponse à CTCP VERSION<br>Par exemple, "
+"vous pouvez y mettre un nom de script.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:55
+msgid "Append to SOURCE reply:"
+msgstr "À ajouter à la réponse à SOURCE :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:59
+msgid ""
+"<center>This text will be appended to the CTCP SOURCE reply.<br>For example, "
+"you can place the source URL for a script here.</center>"
+msgstr ""
+"<center>Ce texte va être ajouté à la réponse à CTCP SOURCE<br>Par exemple, "
+"vous pouvez y mettre une URL pour un script.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:69
+msgid "PAGE reply:"
+msgstr "Réponse à PAGE :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:73
+msgid ""
+"<center>This is the CTCP PAGE reply.<br>It should contain some sort of "
+"acknowledgement for CTCP PAGE messages.</center>"
+msgstr ""
+"<center>Il s'agit de la réponse à un CTCP PAGE.<br>Elle doit contenir une "
+"sotre d'autorisation à un CTCP PAGE.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:76
+msgid "Show the CTCP replies in the active window"
+msgstr "Montrer les réponses aux CTCP dans la fenêtre active"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:78
+msgid "Show dialog for CTCP page requests"
+msgstr "Montrer la boîte de dialogue lors des requêtes CTCP PAGE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:36
+msgid "Use tree taskbar"
+msgstr "Utiliser la barre des tâches arborescente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:37
+msgid "Sort windows by name"
+msgstr "Trier les fenêtres par nom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:38
+msgid "Show window icons in taskbar"
+msgstr "Montrer les icônes de fenêtre dans la barre des tâches"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:39
+msgid "Show activity meter in taskbar"
+msgstr "Montrer l'activité dans la barre des tâches"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:41
+msgid ""
+"<center>This option enables the usage of the taskbar activity meter. Each "
+"window entry will have a small indicator of the activity that is going on in "
+"that window. The indicator is a small square that changes colors, dark "
+"colors mean low activity, while bright colors signal high activity. KVIrc "
+"also uses some heuristics to determine whether the activity is somewhat "
+"\"human\" or it is generated by automated entities (such as bots or IRC "
+"servers). \"Human\" activity causes the indicator to be shaded red while "
+"automated activity causes the indicator to be shaded blue.</center>"
+msgstr ""
+"<center>Cette option va activer le mesureur d'activité de la barre des "
+"tâches. Chaque entrée de fenêtre aura un petit indicateur indicateur de "
+"l'activité relative à cette fenêtre. L'indicateur est un petit rectangle qui "
+"change de couleur, sombre pour une actvité faible et claire pour une forte "
+"activité. KVIrc utilise aussi une méthode heuristique pour déterminer si "
+"l'activité a quelchose d'\"humain\" ou si elle est due à des automates (tel "
+"que des bots ou des serveurs IRC). L'activité \"humaine\" fait que "
+"l'indicateur est ombré en rouge alors qu'une activité d'automate l'ombre en "
+"bleu.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:49
+msgid "Show IRC context indicator in taskbar"
+msgstr "Montrer le contexte IRC dans la barres des tâches"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:50
+msgid "Enable window tooltips"
+msgstr "Activer les bulles d'aide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:233
+msgid "Text/Alert Colors"
+msgstr "Couleurs des Textes/Alertes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:125
+msgid "Normal:"
+msgstr "Normal :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:126
+msgid "Selected:"
+msgstr "Sélectionné :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:236
+msgid "Alert Level 1:"
+msgstr "Alerte Niveau 1 :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:237
+msgid "Alert Level 2:"
+msgstr "Alerte Niveau 2 :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:238
+msgid "Alert Level 3:"
+msgstr "Alerte Niveau 3 :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:239
+msgid "Alert Level 4:"
+msgstr "Alerte Niveau 4 :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:240
+msgid "Alert Level 5:"
+msgstr "Alerte Niveau 5 :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:241
+msgid "Progress bar color:"
+msgstr "Couleur de la barre de progrès :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:124
+msgid "Background Colors"
+msgstr "Couleurs de Fond"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:212
+msgid "Show header"
+msgstr "Montrer l'entête"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:214
+msgid "Minimum width:"
+msgstr "Largeur minimale :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:215
+msgid "Maximum width:"
+msgstr "Largeur maximale :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:235
+msgid "Minimized:"
+msgstr "Réduit :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:242
+msgid "Minimum width of buttons:"
+msgstr "Largeur minimale des boutons :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:244
+msgid "Set maximum button width"
+msgstr "Définir la largeur maximale des boutons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:245
+msgid "Maximum width of buttons:"
+msgstr "Largeur maximale des boutons :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:246
+msgid "Use flat buttons"
+msgstr "Utiliser des boutons plats"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:96
+msgid "Network Details"
+msgstr "Détails du Réseau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:82
+msgid "Description:"
+msgstr "Description :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:116
+msgid "<center>Put here a brief description of the network.</center>"
+msgstr "<center>Placez ici une brève description du réseau.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:477
+msgid "Properties"
+msgstr "Propriétés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:123
+msgid "Username:"
+msgstr "Nom d'utilisateur :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:134
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to servers "
+"on this network.\n"
+"If this field is left empty (most common case), KVIrc will use the default "
+"username specified in the \"Identity\" options tab.</center>"
+msgstr ""
+"<center>Il s'agit du <b>nom d'utilisateur</b> que KVIrc va utiliser lors de "
+"l'enregistrement sur les serveurs de ce réseau.\n"
+" Si ce champs est vide (cas le plus courant), KVIrc va utiliser celui par "
+"défaut, spécifié dans l'onglet \"Identité\" des options.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:498
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:320
+msgid "Nickname:"
+msgstr "Pseudo :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:145
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to the servers on this network.<br>If this field is left empty (most "
+"common case), the default nickname (specified in the \"Identity\" settings) "
+"will be used.</center>"
+msgstr ""
+"<center>Vous pouvez spécifier un <b>pseudo</b> \"spécial\" qui sera utilisé "
+"pour vous enregistrer sur les serveurs de ce réseau.<br>Si ce champ est "
+"laissé vide (cas le plus courant), le pseudo par défaut sera utilisé "
+"(spécifié dans les paramètres d'\"Identité\").</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:509
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:342
+msgid "Real name:"
+msgstr "Nom réel :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:153
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with the servers on this network.<br>If you leave this field empty "
+"(most common case), the default \"real name\" (specified in the \"Identity\" "
+"settings) will be used.</center>"
+msgstr ""
+"<center>Vous pouvez spécifier un <b>non réel</b> \"spécial\" qui sera "
+"utilisé pour vous enregistrer sur les serveurs de ce réseau.<br>Si ce champ "
+"est laissé vide (cas le plus courant), le \"nom réel\" par défaut sera "
+"utilisé (spécifié dans les paramètres d'\"Identité\").</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:644
+msgid "Encoding:"
+msgstr "Encodage du Texte :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:164
+msgid ""
+"<center>This box allows you to choose the preferred encoding for the servers "
+"in this network. If you choose \"Use System Encoding\" then the encoding "
+"will be set to the systemwide value that you choose in the \"Encoding\" page "
+"of the options dialog.</center>"
+msgstr ""
+"<center>Cette boîte vous permet de choisir un encodage particulier pour les "
+"serveurs de ce réseau. Si vous utilisez \"Utiliser l'Encodage Système\", "
+"l'encodage va être défini à la valeure système choisie dans la page "
+"\"Encodage\" de la boîte de dialogue des options.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:173
+msgid "Use System Encoding"
+msgstr "Utiliser le Système d'Encodage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:185
+msgid "Connect to this network at startup"
+msgstr "Se connecter à ce réseau au démarrage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:189
+msgid ""
+"<center>This option will cause KVIrc to automatically connect to this "
+"network at startup</center>"
+msgstr ""
+"<center>Cette option va forcer KVIrc à se connecter à ce réseau IRC au "
+"démarrage.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:79
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:120
+msgid "General"
+msgstr "Général"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:756
+msgid "Channels to join automatically upon connect:"
+msgstr "Salons à joindre automatiquement à la connexion :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:211
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to a server in this network has been established. To add a "
+"channel, type its name in the text input below and click \"<b>Add</b>\".</"
+"center>"
+msgstr ""
+"<center>Vous pouvez ici définir une liste de salons qui doivent être joints "
+"automatiquement après qu'une connexion à un serveur de ce réseau ait été "
+"établie. Pour ajouter un salon, entrez son nom dans le champ ci-dessous et "
+"cliquez sur \"<b>Ajouter</b>\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:217
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:62
+msgid "Join Channels"
+msgstr "Joindre les Salons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:228
+msgid ""
+"<center>The following commands will be executed after a connection to a "
+"server in this network has been established.<br><b>Important:</b> Enter "
+"commands <b>without</b> a preceding slash (e.g. <tt>quote pass secret</tt> "
+"instead of <tt>/quote pass secret</tt>).<br>KVIrc will first send the USER "
+"command, then eventually PASS and NICK and then execute this command "
+"sequence.</center>"
+msgstr ""
+"<center>La séquence de commandes suivante sera exécutée après qu'une "
+"connexion à un serveur de ce réseau ait été établie.<br><b>Important:</b> "
+"Entrez les commandes <b>sans</b> slash au début (par exemple <tt>quote pass "
+"secret</tt> à la place de <tt>/quote pass secret</tt>).<br>KVIrc va d'abord "
+"envoyer la commande USER et éventuellement PASS et NICK, et ensuite "
+"executera la séquence de commandes.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:782
+msgid "On Connect"
+msgstr "À la Connexion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:249
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"a server in this network.<br><b>Important:</b> Enter commands <b>without</b> "
+"a preceding slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote "
+"privatelog</tt>).<br>This is useful for automatically opening queries, "
+"setting variables, etc.</center>"
+msgstr ""
+"<center>La séquence de commandes suivante sera exécutée après que "
+"l'enregistrement sur un serveur de ce réseau ait été éffectué."
+"<br><b>Important:</b> Entrez les commandes <b>sans</b> slash au début (par "
+"exemple <tt>quote privatelog</tt> à la place de <tt>/quote privatelog</tt>)."
+"<br>C'est utile pour ouvrir automatiquement des privés, définir des "
+"variables, etc.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:801
+msgid "On Login"
+msgstr "À l'Enregistrement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:285
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on this network.<br>Please "
+"be aware that this feature can cause your NickServ passwords to be stolen if "
+"used improperly. Make sure that you fully understand the NickServ "
+"authentication protocol.<br>In other words, be sure to know what you're "
+"doing.<br>Also note that the password that you provide is stored as <b>PLAIN "
+"TEXT</b>.</center>"
+msgstr ""
+"<center>Il s'agit d'une liste de règles d'authentification à NickServ. KVIrc "
+"va les utiliser pour gérer son interaction automatique avec NickServ sur ce "
+"réseau.<br>Soyez conscient que cette fonctionnalité peut être une cause de "
+"vol de pass si utilisée de manière inapropriée. Soyez sûr de parfaitement "
+"comprendre le protocole d'authentification à NickServ.<br>En d'autres "
+"termes, soyez sûr de ce que vous faites.<br>Notez par ailleur que les mots "
+"de pass sont sauvegardés en <b>TEXTE BRUT</b>.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:35
+msgid "NickServ"
+msgstr "NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:323
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:60
+msgid "&OK"
+msgstr "&Valider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:449
+msgid "Server Details"
+msgstr "Détails du Serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:465
+msgid ""
+"<center>This is a brief description of this server. This field has no "
+"restrictions but many server lists use it to describe the server's physical "
+"location</center>"
+msgstr ""
+"<center>Il s'agit d'une brève description du serveur. Ce champ n'a pas de "
+"restriction mais beaucoup de listes de serveurs l'utilise pour la "
+"localisation physique de ces derniers.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:484
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to this "
+"server.\n"
+"If this field is left empty (most common case), KVIrc will first look if an "
+"username is specified for the network that this server belongs to, and if "
+"that is empty then KVIrc will use the default username specified in the "
+"\"Identity\" options tab.</center>"
+msgstr ""
+"<center>Il s'agit du <b>nom d'utilisateur</b> que KVIrc va utiliser lors de "
+"l'enregistrement sur ce serveur.\n"
+" Si ce champs est vide (cas le plus courant), KVIrc va utiliser celui par "
+"défaut, spécifié dans l'onglet \"Identité\" des options.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:490
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:127
+msgid "Password:"
+msgstr "Mot de Pass :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:495
+msgid ""
+"<center>If this server requires a password, put it in this field, otherwise "
+"leave it empty.</center>"
+msgstr ""
+"<center>Si ce serveur requiert un mot de pass, entrez-le dans ce champ, "
+"sinon laissez ce dernier vide.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:504
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to this server.<br>If this field is left empty (most common case), "
+"KVIrc will first look if a nickname is specified for the network that this "
+"server belongs to, and if that is empty then the default nickname (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center>Vous pouvez spécifier un <b>pseudo</b> \"spécial\" qui sera utilisé "
+"pour vous enregistrer ce serveur.<br>Si ce champ est laissé vide (cas le "
+"plus courant), KVIrc va d'abord jeter voir s'il existe un pseudo particulier "
+"pour le réseau auquel ce serveur est rattaché, et si celui-ci est vide le "
+"pseudo par défaut sera utilisé (spécifié dans les paramètres d'\"Identité\")."
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:513
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with this server.<br>If you leave this field empty (most common case), "
+"KVIrc will first look if a real name is specified for the network that this "
+"server belongs to, and if that is empty the default \"real name\" (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center>Vous pouvez spécifier un <b>nom réel</b> \"spécial\" qui sera "
+"utilisé pour vous enregistrer ce serveur.<br>Si ce champ est laissé vide "
+"(cas le plus courant), KVIrc va d'abord jeter voir s'il existe un nom réel "
+"particulier pour le réseau auquel ce serveur est rattaché, et si celui-ci "
+"est vide le \"nom réel\" par défaut sera utilisé (spécifié dans les "
+"paramètres d'\"Identité\").</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:683
+msgid "User Mode"
+msgstr "Mode utilisateur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:520
+msgid "Use default user mode"
+msgstr "Mode d'utilisateur par défaut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:522
+msgid ""
+"<center>If this is enabled, the global initial <b>user mode</b> (configured "
+"from the identity dialog) will be used. If disabled, you can configure an "
+"initial user mode for this server"
+msgstr ""
+"<center>Si activé, le <b>mode d'utilisateur</b> global initial (spécifié "
+"dans la boîte de dialogue \"Identité\") sera utilisé. Si inactif, vous "
+"pouvez configurer une mode d'utilisateur initial pour ce serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:684
+msgid "Invisible (+i)"
+msgstr "Invisible (+i)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:534
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:685
+msgid "Server notices (+s)"
+msgstr "Notices de serveur (+s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:686
+msgid "Wallops (+w)"
+msgstr "Wallops (+w)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:548
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:60
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:104
+msgid "Identity"
+msgstr "Identité"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:115
+msgid "Port:"
+msgstr "Port :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:565
+msgid ""
+"<center>This is the default <b>port</b> that this server will be contacted "
+"on.<br>Usually <b>6667</b> is OK.</center>"
+msgstr ""
+"<center>Il s'agit du <b>port</b> par défaut utilisé pour contacter le "
+"serveur.<br>Habituellement, <b>6667</b> convient bien.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:571
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:119
+msgid "IP address:"
+msgstr "Adresse IP :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:576
+msgid ""
+"<center>This is the <b>IP address</b> of this server, it is here for caching "
+"purposes.<br>If you leave this field empty, KVIrc will fill it in the first "
+"time it connects to the server. If you enable the \"cache IP address\" "
+"option below, KVIrc will use it as a \"cached result\" and avoid looking it "
+"up again.</center>"
+msgstr ""
+"<center>Il s'agit de l'<b>adresse IP</b> de ce serveur, ici pour des besoins "
+"de cache.<br>Si vous laissez ce champ vide, KVIrc va le remplir lors de la "
+"première connexion au serveur. Si vous activez l'option \"Adresse IP en cache"
+"\" ci-dessous, KVIrc va l'utiliser comme un \"résultat de cache\" et ne va "
+"donc pas la résoudre de nouveau.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:596
+msgid "Cache IP address"
+msgstr "Adresse IP en cache"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:599
+msgid ""
+"<center>This check will enable <b>IP address caching</b> for this server:"
+"<br>DNS lookups can be time-consuming and might be blocking on some "
+"platforms; this option will cause KVIrc to look up the server hostname only "
+"once.<br><br> Advanced: you can also use this option to force a certain "
+"server name to resolve to a fixed ip address when either the dns for that "
+"server is temporairly unreachable or you want to avoid the round-robin "
+"lookups.</center>"
+msgstr ""
+"<center>Cette option va activer le <b>cache d'adresse IP</b> pour ce "
+"serveur : <br>les résolutions de DNS peuvent être très onéreuses en temps "
+"voire être bloquantes sur certaines plateformes ; cette option forcer kVIrc "
+"à résoudre l'adresse du serveur une seule fois.<br><br> Avancé : vous pouvez "
+"aussi utiliser cette option pour forcer la résolution d'un serveur "
+"particulier à une adresse fixe quand le dns de ce serveur est inaccessible "
+"ou que vous voulez évitez une boucle de lookups.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:609
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:140
+msgid "Use IPv6 protocol"
+msgstr "Utiliser le protocole IPV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:619
+msgid ""
+"<center>This check identifies IPv6 servers.<br>If enabled, KVIrc will "
+"attempt to use the IPv6 protocol (thus your OS <b>must</b> have a working "
+"IPv6 stack and you <b>must</b> have an IPv6 connection).</center>"
+msgstr ""
+"<center>Cette option identifie les serveurs IPv6.<br>Si active, KVIrc va "
+"tenter d'utiliser le protocole IPv6 (donc votre système <b>doit</b> avoir "
+"une pile IPv6 et vous <b>devez</b> avoir une conexion IPv6).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:624
+msgid "Use SSL protocol"
+msgstr "Utiliser le protocole SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:627
+msgid ""
+"<center>This check will cause the connection to use the <b>Secure Socket "
+"Layer</b> encryption support. Obviously, this server must have support for "
+"this, too. :)</center>"
+msgstr ""
+"<center>Cette option va forcer une connexion à utiliser le support de "
+"cryptage par <b>Couche de socket sécurisée (SSL)</b>. Évidemment, ce serveur "
+"doit le supporter. :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:636
+msgid "Connect to this server at startup"
+msgstr "Se connnecter à ce serveur au lancement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:641
+msgid ""
+"<center>This option will cause KVIrc to connect to the IRC server when it is "
+"started.</center>"
+msgstr ""
+"<center>Cette option va forcer KVIrc à se connecter à ce serveur IRC au "
+"démarrage.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:650
+msgid ""
+"<center>This box allows you to choose the preferred encoding for this sever. "
+"If you choose \"Use Network Encoding\" then the encoding will be inherited "
+"from the network that this server belongs to.</center>"
+msgstr ""
+"<center>Cette boîte vous permet de choisir un encodage particulier pour ce "
+"serveur. Si vous utilisez \"Utiliser l'Encodage du Réseau\", l'encodage va "
+"être défini par celui du réseau dont le serveur dépend.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:659
+msgid "Use Network Encoding"
+msgstr "Utiliser l'Encodage propre au Réseau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:672
+msgid "Link filter:"
+msgstr "Filtre de Lien :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:701
+msgid ""
+"<center>This field specifies the name of a module that exports a link filter "
+"for this type of server.<br>For plain IRC connections, you don't need any "
+"link filters; this is used for incompatible protocols.</center>"
+msgstr ""
+"<center>Ce champ spécifie le nom d'un module qui exporte un filtre de liens "
+"pour ce type de serveur.<br>Pour les connexions IRC brutes, vous n'avez pas "
+"besoin de filtre ; cela n'est utilisé que pour des protocoles incompatibles."
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:705
+msgid "Id:"
+msgstr "Identifiant :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:713
+msgid ""
+"<center>This field allows you to specify a really unique id for this server. "
+"You will then be able to use /server -x &lt;this_id&gt; to make the "
+"connection. This is especially useful when you have multiple server entries "
+"with the same hostname and port in different networks (bouncers?)</center>"
+msgstr ""
+"<center>Ce champ vous permet de spécifier un identifiant unique pour ce "
+"serveur. Vous pourrez ainsi utiliser /server -x &lt;identifiant&gt; pour "
+"vous connecter à ce dernier. C'est particulièrement utile si vous avez "
+"plusieurs serveurs avec les mêmes nom de machine et port pour plusieurs "
+"réseaux différents (<i>bounce</i> ?).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:719
+msgid "Proxy server:"
+msgstr "Serveur de proximité :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:724
+msgid ""
+"<center>This is the <b>proxy</b> that KVIrc will use to connect to thos "
+"server.\n"
+"If this field is set in \"Default\" KVirc will use global proxy settings, if "
+"it is set in \"Direct connection\" KVirc will connect to this server without "
+"proxy. You can define new proxy server in global options' \"Proxy servers\" "
+"menu.</center>"
+msgstr ""
+"<center>Il s'agit du serveur de proximité (<i>proxy</i>) que KVIrc va "
+"utiliser pour se connecter a ce serveur.<br>Si ce champ est défini à \"Par "
+"défaut\" KVIrc va utiliser les réglages globaux de serveur de proximité, et "
+"s'il est défini à \"Connexion directe\" KVIrc va se connecter à ce serveur "
+"sans serveur de proximité. Vous pouvez définir un nouveau serveur de "
+"proximité dans le menu \"Serveurs de proximité\" des options globales.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:729
+msgid "Default"
+msgstr "Défaut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:730
+msgid "Direct connection"
+msgstr "Connexion directe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:746
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:28
+msgid "Connection"
+msgstr "Connexion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:758
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to this server has been established. To add a channel, type its "
+"name in the text input below and click \"<b>Add</b>\".</center>"
+msgstr ""
+"<center>Vous pouvez ici définir une liste de salons qui doivent être joints "
+"automatiquement après qu'une connexion à ce serveur ait été établie. Pour "
+"ajouter un salon, entrez son nom dans le champ ci-dessous et cliquez sur "
+"\"<b>Ajouter</b>\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:776
+msgid ""
+"<center>The following commands will be executed after a connection has been "
+"established.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote pass secret</tt> instead of <tt>/quote pass secret</"
+"tt>).<br>KVIrc will first send the USER command, then eventually PASS and "
+"NICK and then execute this command sequence.<br>This is particularly useful "
+"for IRC bouncers that require login commands.</center>"
+msgstr ""
+"<center>La séquence de commandes suivante sera exécutée après que la "
+"connexion soit établie.<br><b>Important:</b> Entrez les commandes <b>sans</"
+"b> slash au début (par exemple <tt>quote pass secret</tt> à la place de <tt>/"
+"quote pass secret</tt>).<br>KVIrc va d'abord envoyer la commande USER et "
+"éventuellement PASS et NICK, et ensuite executera la séquence de commandes."
+"<br>C'est particulièrement utile pour les rebondisseurs IRC qui requierent "
+"des commandes d'enregistrement.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:796
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"this server.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote privatelog</tt>)."
+"<br>This is useful for automatically opening queries, setting variables, etc."
+"</center>"
+msgstr ""
+"<center>La séquence de commandes suivante sera exécutée après "
+"l'enregistrement sur ce serveur.<br><b>Important:</b> Entrez les commandes "
+"<b>sans</b> slash au début (par exemple <tt>quote privatelog</tt> à la place "
+"de <tt>/quote privatelog</tt>).<br>C'est utile pour ouvrir automatiquement "
+"des privés, définir des variables, etc.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1041
+msgid "Server"
+msgstr "Serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1042
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:73
+msgid "Description"
+msgstr "Description"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1054
+msgid ""
+"<center>This is the list of available IRC servers.<br>Right-click on the "
+"list to add or remove servers and perform other actions.<br>Double-click on "
+"a item for advanced options.</center>"
+msgstr ""
+"<center>Il s'agit de la liste des serveurs IRC disponibles.<br>Clic droit "
+"sur la liste pour ajouter ou supprimer des serveurs et effectuer d'autres "
+"opérations.<br>Double-clic sur un élément pour avoir des options avancées.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1069
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1430
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1554
+msgid "New Network"
+msgstr "Nouveau Réseau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1077
+msgid "New Server"
+msgstr "Nouveau Serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1086
+msgid "Remove Network/Server"
+msgstr "Supprimer Réseau/Serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1098
+msgid "Copy Server"
+msgstr "Copier Serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1107
+msgid "Paste Server"
+msgstr "Coller Serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1446
+msgid "Import List"
+msgstr "Importer Liste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1125
+msgid "Active Configuration"
+msgstr "Connexion active"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1332
+msgid "Server:"
+msgstr "Serveur :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1130
+msgid ""
+"<center>This is the name of the currently selected server or network</center>"
+msgstr ""
+"<center>Il s'agit du nom du serveur ou réseau actuellement selectionné</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1153
+msgid "Advanced..."
+msgstr "Avancée..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1156
+msgid "<center>Click here to edit advanced options for this entry</center>"
+msgstr ""
+"<center>Cliquez ici pour éditer les options avancées de cette entrée</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1159
+msgid "Connect &Now"
+msgstr "Se Connecter &Maintenant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1164
+msgid ""
+"<center>Hit this button to connect to the currently selected server.</center>"
+msgstr ""
+"<center>Cliquez sur ce bouton pour vous connecter au serveur actuellement "
+"selectionné.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1177
+msgid ""
+"<center>This button shows a list of recently used servers. It allows you to "
+"quickly find them in the list.</center>"
+msgstr ""
+"<center>Ce bouton montre une liste de serveurs récemment utilisés. Elle vous "
+"permet de rapidement les y trouver.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1181
+msgid "Show this dialog at startup"
+msgstr "Montrer cette boîte de dialogue au démarrage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1184
+msgid ""
+"<center>If this option is enabled, the Servers dialog will appear every time "
+"you start KVIrc</center>"
+msgstr ""
+"<center>Si cette option est activée, la boîte de dialogue des serveur sera "
+"ouverte à chaque fois que vous démarrer KVIrc</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1335
+msgid "Network:"
+msgstr "Réseau :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1345
+msgid "No selection"
+msgstr "Aucune selection"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1364
+msgid "UnknownNet"
+msgstr "RéseauInconnu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1431
+msgid "Remove Network"
+msgstr "Supprimer Réseau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1434
+msgid "&New Server"
+msgstr "&Nouveau Serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1435
+msgid "Re&move Server"
+msgstr "Suppri&mer Serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1437
+msgid "&Copy Server"
+msgstr "&Copier Serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1439
+msgid "&Paste Server"
+msgstr "C&oller Serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1444
+msgid "Clear List"
+msgstr "Effacer la liste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1483
+msgid ""
+"Oops... something weird happened:<br>Can't find any module capable of "
+"importing servers."
+msgstr ""
+"Oups... un truc étrange vient de se produire :<br>Impossible de trouver un "
+"module capable d'importer des serveurs."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1500
+msgid ""
+"Oops... something weird happened:<br>Can't find the module that was capable "
+"of this import action. :("
+msgstr ""
+"Oups... un truc étrange vient de se produire :<br>Impossible de trouver un "
+"module capable d'effectuer cette action d'importation. :("
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1574
+msgid "irc.unknown.net"
+msgstr "irc.inconnu.net"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:39
+msgid "Disable parser warnings"
+msgstr "Désactiver les avertissements de l'analyseur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:40
+msgid "Disable broken event handlers"
+msgstr "Désactiver les gestionnaires d'événements cassés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:41
+msgid "Kill broken timers"
+msgstr "Tuer les chronomètres cassés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:42
+msgid "Send unknown commands as /RAW"
+msgstr "Envoyer les commandes inconnues via /RAW"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:46
+msgid "Automatically unload unused modules"
+msgstr "Décharger automatiquement les modules inutilisés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:47
+msgid "Ignore module versions (dangerous)"
+msgstr "Ignorer la version des modules (dangeureux)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:51
+msgid "Relay errors and warnings to debug window"
+msgstr "Renvoyer les erreurs et avertissement dans la fenêtre de débogage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:52
+msgid "Create minimized debug window"
+msgstr "Réduire la fenêtre de débogage à sa création"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:59
+msgid "Nickname alternatives"
+msgstr "Pseudos alternatifs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:62
+msgid ""
+"<center>Here you can choose up to three nicknames alternative to the primary "
+"one. KVIrc will use the alternatives if the primary nick is already used by "
+"someone else on a particular IRC network.</center>"
+msgstr ""
+"<center>Vous pouvez choisir ici jusqu'à trois pseudos alternatifs à celui "
+"primaire. KVIrc va les utiliser si ce dernier est déjà utilisé par quelqu'un "
+"sur le réseau IRC.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:69
+msgid "Alt. Nickname 1:"
+msgstr "Pseudo alt. 1 :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:76
+msgid "Alt. Nickname 2:"
+msgstr "Pseudo alt. 2 :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:83
+msgid "Alt. Nickname 3:"
+msgstr "Pseudo alt. 3 :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Ok"
+msgstr "Valider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:130
+msgid "Avatar Download - KVIrc"
+msgstr "Téléchargement d'un Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:136
+msgid "<center>Please wait while the avatar is being downloaded</center>"
+msgstr "<center>Veuillez patientez lors du téléchargement de l'avatar</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:139
+msgid "Abort"
+msgstr "Interrompre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:170
+msgid "Failed to start the download"
+msgstr "Le démarrage du téléchargement à échoué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:184
+msgid "Download aborted by user"
+msgstr "Téléchargement interrompu par l'utilisateur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:213
+msgid "Choose Avatar - KVIrc"
+msgstr "Choix d'un Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:219
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+"Veuillez selectionner une aimage d'avatar. Le chemin complet d'un fichier "
+"local ou d'une image sur le Web peut être utilisé.<br>Si vous désirez "
+"utilisez un fichier d'image local, cliquez sur le bouton \"<b>Parcourir</b>"
+"\" pour naviguer dans les répertoires locaux.<br>L'URL complète d'une image "
+"(inclu <b>http://</b>) peut être entrée manuellement."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:237
+msgid "&Browse..."
+msgstr "&Parcourir..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:275
+msgid "Choose an Image File - KVIrc"
+msgstr "Choisir un Fichier d'Image - KVIirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:316
+msgid "Basic Properties"
+msgstr "Propriétés de base"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:323
+msgid ""
+"<center>Your <b>nickname</b> is your primary form of identification on IRC."
+"<br>Since servers cannot accept multiple users sharing the same nickname "
+"(case insensitive), you can provide alternative nicknames to be used in "
+"casethe server refuses to accept the default one.</center>"
+msgstr ""
+"<center>Votre <b>pseudo</b> est votre forme d'identification primaire sur "
+"IRC.<br>Sachant que les serveurs n'acceptent pas que plusieurs utilisateurs "
+"partagent le même pseudo (insensiblement à la casse), vous pouvez fournir "
+"des pseudos alternatifs au cas où le serveur refuse celui par défaut.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:331
+msgid "Alternatives..."
+msgstr "Alternatives..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:337
+msgid ""
+"<center>This is the <b>username</b> that you will use to connect to the "
+"server.<br>In the past, it was used as a form of authentication, but it "
+"normally has no special use now.<br>In addition to your nickname, you are "
+"identified on IRC by your <b>username@hostname</b>.</br>Basically, you can "
+"enter any word you like here. :D</center>"
+msgstr ""
+"<center>Il s'agit du <b>nom d'utilisateur</b> que vous allez utiliser pour "
+"vous connecter au serveur.<br>Par le passé, il s'agissait d'une forme "
+"d'authentification, mais généralement il n'aucune utilité particulière."
+"<br>En plus de votre pseudo, vous êtes identifié sur IRC par votre "
+"<b>nom_d_utilisateur@nom_de_machine</b>.</br>En gros, entrez ce que vous "
+"voulez. :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:346
+msgid ""
+"<center>This text will appear when someone does a /WHOIS on you.<br>It is "
+"intended to be your real name, but people tend to put random quotes and "
+"phrases here too.</center>"
+msgstr ""
+"<center>Ce texte apparaît quand quelqu'un fait un /WHOIS sur vous.<br>Il est "
+"supposé être votre nom réel, mais les y mettent généralement une citation "
+"aléatoire ou une phrase particulière.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:351
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr "Ce champ est optionnel et apparaîtra dans la réponse au CTCP USERINFO."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:356
+msgid "Profile"
+msgstr "Profil"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:361
+msgid "Age:"
+msgstr "Âge :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:366
+msgid "Here you can specify your age."
+msgstr "Vous pouvez spécifier votre âge ici."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:401
+msgid "Unspecified"
+msgstr "Non spécifé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:391
+msgid "Gender:"
+msgstr "Sexe :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:396
+msgid "Here you can specify your gender."
+msgstr "Vous pouvez spécifier votre sexe ici."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:402
+msgid "Female"
+msgstr "Femme"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:403
+msgid "Male"
+msgstr "Homme"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:414
+msgid "Location:"
+msgstr "Localisation :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:417
+msgid ""
+"You can describe here your approximate physical location. Something like "
+"\"Region, Country\" will be ok. Please note that this information will be "
+"viewable by anyone so putting more data (like the exact address), generally, "
+"<b>is not a good idea</b>."
+msgstr ""
+"Vous pouvez décrire ici votre localisation géographique. Quelque chose du "
+"genre \"Département, Pays\"fera l'affaire. Notez que cette information sera "
+"généralement visible par tout le monde, donc y ajouter plus d'information "
+"n'est généralement <b>pas recommandé</b>."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:422
+msgid "Languages:"
+msgstr "Langues :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:425
+msgid ""
+"You can put here the short names of the languages you can speak. An example "
+"might be \"EN,IT\" that would mean that you speak both Italian and English."
+msgstr ""
+"Vous pouvez entrer ici une version courte des langues que vous pratiquez. "
+"Par exemple, \"FR,EN\" signifie que vous parlez à la fois Français et "
+"Anglais."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:429
+msgid "Other:"
+msgstr "Autre :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:432
+msgid ""
+"You can put here some additional personal data. It might be a funny quote or "
+"your homepage url... Please note that this information will be viewable by "
+"anyone so <b>don't put any sensible data</b> (passwords, telephone or credit "
+"card numbers)."
+msgstr ""
+"Vous pouvez placer ici des informations supplémentaires Ce peut être une "
+"blague sympatiques our l'adresse de votre page web... Notez que cela sera "
+"visible par tout le monde donc <b>n'y mettez pas d'informations sensibles</"
+"b> (mots de pass, téléphone)."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:502
+msgid ""
+"Here you can choose your avatar image. It will be visible<br>by other people "
+"that request it. Choose a nice image of yourself,<br>possibly avoiding "
+"obscenity and offending images. It is a good idea<br>to choose a relatively "
+"small file (say 150 Kb max) because<br>most clients have a limit on the size "
+"of avatars being downloaded.<br>The image also should be smaller than "
+"800x600 pixels since<br>it will have to be viewable in everyone's monitor."
+msgstr ""
+"Vous pouvez choisir ici votre avatar. Il sera visible<br>par les "
+"utilisateurs qui le réclament. Choisissez une image sympa,<br>si possible en "
+"évitant les images obcènes ou offensantes. C'est une bonne idée<br>de "
+"choisir un fichier relativement petit (par exemple 150Kb max) parce "
+"que<br>la plupart des clients ont une limite sur la taille des avatars "
+"téléchargés.<br>L'image doit aussi être plus petite que 800x600 "
+"pixels<br>pour être visible sur tous les écrans."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:511
+msgid "Use avatar"
+msgstr "Utiliser un avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:537
+msgid "Choose..."
+msgstr "Choisir..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:598
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:637
+msgid "Failed to Load Avatar - KVIrc"
+msgstr "Impossible de charger l'Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:599
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:638
+msgid ""
+"Failed to load the avatar image.<br>It may be an unaccessible file or an "
+"unsupported image format."
+msgstr ""
+"Impossible de charger l'image d'avatar.<br>Il s'agit peut-être d'un fichier "
+"inaccessible ou d'un type de format d'image non supporté."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:606
+msgid "Failed to download the avatar image.<br><b>%Q</b>"
+msgstr "Impossible de télécharger l'image d'avatar.<br><b>%Q</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:608
+msgid "Avatar Download Failed - KVIrc"
+msgstr "Échec du téléchargement de l'Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:649
+msgid "Avatar Might Be Too Big - KVIrc"
+msgstr "L'avatar est peut-être trop grand - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:650
+msgid ""
+"The avatar you have choosen is bigger than 1024x768 pixels.<br>Such a big "
+"image will not be seen on all the user monitors<br>and will probably be "
+"scaled by the remote clients with poor quality<br>algorithms to improve "
+"performance. You *should* scale it manually<br>to a sane size (like 800x600) "
+"or choose a different image."
+msgstr ""
+"L'avatar que vous avez choisi est plus grand que 1024x768 pixels.<br>Une si "
+"grande image ne sera pas visible sur tous les écrans<br>et sera probablement "
+"redimensionné part les clients distants avec un algorythme<br>de faible "
+"qualité pour accroitre la performance. Vous *devez* le redimensionner "
+"manuellement<br> à une dimension saine (par exemple 800x600) ou choisir une "
+"autre image."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:688
+msgid "Default Messages"
+msgstr "Message par défaut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:691
+msgid "Part message:"
+msgstr "Message de départ :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:695
+msgid ""
+"<center>This is the default part message that will be used when you<br>leave "
+"a channel by closing a channel window.</center>"
+msgstr ""
+"<center>Il s'agit du message de départ par défaut qui sera utilisé quand "
+"vous<br>quitter un salon en fermant sa fenêtre.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:699
+msgid "Quit message:"
+msgstr "Message de quit :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:702
+msgid ""
+"<center>This is the default quit message that will be used when you<br>quit "
+"your IRC session by closing the console window or disconnecting by pressing "
+"the disconnect button.</center>"
+msgstr ""
+"<center>Il s'agit du message de quit par défaut qui sera utilisé quand "
+"vous<br>quittez votre session IRC en fermant la fenêtre de la console ou en "
+"pressant le bouton de déconnexion.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:42
+msgid "Open Query For"
+msgstr "Ouvrir un Privé en cas de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:40
+msgid "Private messages"
+msgstr "Les messages privés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:46
+msgid ""
+"<center>This option enables query window creation when a private message "
+"(PRIVMSG) is received.<br>If you disable this, private messages will be "
+"shown in the active window or a common channel.</center>"
+msgstr ""
+"<center>Cette option permet d'ouvrir une fenêtre privée quand vous recevez "
+"un message privé (PRIVMSG).<br>Si vous la désactivez, les messages privés "
+"seront affichés dans la fenêtre active ou sur un salon.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:42
+msgid "Private notices"
+msgstr "Les notices privées"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:55
+msgid ""
+"<center>This option enables query window creation when a private notice "
+"(NOTICE) is received.<br>If you disable this, private notices will be shown "
+"in the active window or a common channel.</center>"
+msgstr ""
+"<center>Cette option permet d'ouvrir une fenêtre privée quand vous recevez "
+"une notice privée (NOTICE).<br>Si vous la désactivez, les notices privées "
+"seront affichées dans la fenêtre active ou sur un salon.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:62
+msgid "Always open queries as minimized"
+msgstr "Réduire les privés à l'ouverture"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:66
+msgid ""
+"<center>This option causes newly created query windows to be immediately "
+"minimized.<br>Enable this if you don't like queries popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+"<center>Cette option entraîne la fermeture immédiate de toutes les fenêtre "
+"de privé nouvellement créée.<br>Activez-la si vous n'aimez pas que les "
+"fenêtres surgissent quand vous êtes en train d'ecrire quelque chose sur un "
+"salon. :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:74
+msgid "Enable target user tracking"
+msgstr "Autorisez le traçage d'utilisateur cible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:77
+msgid ""
+"<center>This option will enable target user tracking.<br>Some actions of the "
+"target user (e.g. joins and parts) will be displayed in the window.<br></"
+"center>"
+msgstr ""
+"<center>Cette option va permettre de tracer un utilisateur.<br>Quelques "
+"actions de l'utilisateur ciblé (par exemple les joins et parts) vont être "
+"affichés dans la fenêtre.<br></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:83
+msgid "Flash system taskbar on new query message"
+msgstr "Flasher la barre de tâche système en cas de nouveau message en privé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:86
+msgid ""
+"<center>This option causes the system taskbar entry for KVIrc to flash when "
+"a new query message is received and the KVIrc window is not the active.</"
+"center>"
+msgstr ""
+"<center>Cette option permet de flasher l'entrée de barre de tâche systême "
+"pour KVIrc quand un nouveau message privé est reçu et que la fenêtre de "
+"KVIrc n'est pas active.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:91
+msgid "Popup notifier on new query message"
+msgstr "Afficher le notifieur en cas de nouveau message privé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:94
+msgid ""
+"<center>This option causes a small notifier window to pop up in the low "
+"right corner of the screen when a new message is received and the KVIrc "
+"window is not active.</center>"
+msgstr ""
+"<center>Cette option permet d'afficher la petite fenêtre du notifieur dans "
+"le coin en bas à droite de l'écran quand un nouveau message est reçu et que "
+"la fenêtre de KVIrc n'est pas active.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:98
+msgid "Show information about query target at the top of the query"
+msgstr "Informer de la cible active en haut d'un privé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:101
+msgid ""
+"<center>This option enables query window information label. It can show you "
+"known information about query target at the top of the window.<br>Uncheck if "
+"you think,that it wastes your query space/</center>"
+msgstr ""
+"<center>Cette option permet de fournir des informations sur la cible "
+"courante d'une fenêtre de privé. les informations connues sont alors "
+"affichées en haut de la fenêtre.<br>Désactivez cette option si vous pensez "
+"qu'il s'agit d'une perte d'espace inutile.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:39
+msgid "Use global application font"
+msgstr "Utiliser une police globale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:40
+msgid "Hide icons in Popup"
+msgstr "Ne pas afficher les icônes dans les popups"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:41
+msgid "Global application font:"
+msgstr "Police globale :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:67
+msgid "Enable fake transparency"
+msgstr "Activer la fausse transparence"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:71
+msgid ""
+"<center>This option makes all KVIrc windows look transparent.<br>You must "
+"choose a blending background image to below or check the \"Use KDE desktop "
+"for transparency\" option.</center>"
+msgstr ""
+"<center>Cette option rend toutes les fenêtres de KVIrc transparentes."
+"<br>Vous devez choisir une image de fond fusionnelle ci-dessous ou cocher "
+"l'option \"Utiliser le bureau de KDE pour la transparence\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:77
+msgid ""
+"<center>This option makes all KVIrc windows look like transparent.<br>You "
+"must choose a blending background image to below.</center>"
+msgstr ""
+"<center>Cette option rend toutes les fenêtres de KVIrc comme transparentes."
+"<br>Vous devez choisir une image de fond fusionnelle ci-dessous.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:83
+msgid "Child window opacity:"
+msgstr "Opacité de la fenêtre fille :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:87
+msgid "Parent window opacity:"
+msgstr "Opacité de la fenêtre mère :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:91
+msgid "Blend color:"
+msgstr "Couleur de fusion :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:97
+msgid "Use KDE desktop for transparency"
+msgstr "Utiliser le bureau de KDE pour la transparence"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:102
+msgid "Keep in sync with KDE background changes"
+msgstr "Garder la synchronisation avec les changements de fond de KDE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:111
+msgid "Transparency blend image:"
+msgstr "Image fusionelle de transparence :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:155
+msgid "Active Background"
+msgstr "Fond actif"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:156
+msgid "Inactive Background"
+msgstr "Fonc inactif"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:157
+msgid "Active Text (Primary)"
+msgstr "Texte actif (primaire)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:158
+msgid "Active Text (Secondary)"
+msgstr "Texte actif (secondaire)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:159
+msgid "Inactive Text (Primary)"
+msgstr "Texte inactif (primaire)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:160
+msgid "Inactive Text (Secondary)"
+msgstr "Texte inactif (secondaire)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:197
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:44
+msgid "Background"
+msgstr "Fond"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:178
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:205
+msgid "Background Image"
+msgstr "Image de fond"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:198
+msgid "Low-Contrast Foreground"
+msgstr "Avant-plan à faible contraste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:199
+msgid "Mid-Contrast Foreground"
+msgstr "Avant-plan à contraste moyen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:200
+msgid "Active High-Contrast Foreground (Primary)"
+msgstr "Avant-plan à fort contraste (primaire)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:201
+msgid "Active High-Contrast Foreground (Secondary)"
+msgstr "Avant-plan à fort contraste (secondaire)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:202
+msgid "Inactive High-Contrast Foreground (Primary)"
+msgstr "Avant-plan inactif à fort contraste (primaire)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:203
+msgid "Inactive High-Contrast Foreground (Secondary)"
+msgstr "Avant-plan inactif à fort contraste (secondaire)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:40
+msgid "Scaling in userlist"
+msgstr "Mise à l'échelle dans la liste d'utilisateurs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:41
+msgid "Scale avatar images in userlist (recommended)"
+msgstr ""
+"Redimensionner les images d'avatar dans la liste d'utilisateurs (recommandé)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:43
+msgid ""
+"<center>This option will force KVIrc to scale avatars shown in the userlist."
+"<br>Avatars will be scaled to fit the constraints set below. Better keep "
+"this option on. :)</center>"
+msgstr ""
+"<center>Cette option force KVIrc à redimensionner les avatars affichés dans "
+"la liste des utilisateurs.<br>Les avatars seront redimensionnés pour qu'ils "
+"s'adaptent à la contrainte définie ci-dessous. Il vaut mieux garder cette "
+"option active. :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:48
+msgid "Do not scale avatar if it is less than required size"
+msgstr "Ne pas redimensionner un avatar plus petit que la taille recquise"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:59
+msgid "Image width:"
+msgstr "Largeur de l'image :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:61
+msgid "Image height:"
+msgstr "Hauteur de l'image :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:56
+msgid "Scaling on load (and in user tooltips)"
+msgstr "Mise à l'échelle au chargement (et dans les boîtes de survol)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:57
+msgid "Scale avatar images on image load"
+msgstr "Redimensionner les images d'avatar au chargement (recommandé)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:65
+msgid "Request CTCP"
+msgstr "Requête CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:66
+msgid "Request missing avatars"
+msgstr "Demander les avatars manquants"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:67
+msgid "Maximum requested file size:"
+msgstr "Taille maximale d'un fichier :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to send a DCC GET request when someone "
+"sets an avatar and there is no cached copy available.</center>"
+msgstr ""
+"<center>Cette option va ordonner à KVIrc d'envoyer une requête de DCC GET "
+"quand quelqu'un choisit un avatar dont on n'a pas de copie en réserve.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:74
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:317
+msgid " bytes"
+msgstr " octets"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:77
+msgid ""
+"<center>This is the maximum size for avatar images that will be "
+"automatically requested.<br>A reasonable value might be 102400 bytes (100 K)."
+"</center>"
+msgstr ""
+"<center>Il s'agit de la taille maximale des images des avatars qui leur sera "
+"automatiquement recquise.<br>Une valeur raisonnable peut être de 102400 "
+"octets (100 K).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:83
+msgid "Automatically accept incoming avatars"
+msgstr "Accepter les avatars entrants"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:87
+msgid ""
+"<center>This option will cause KVIrc to auto-accept DCC SEND requests for "
+"incoming avatars.<br>If you're using the \"Request missing avatars\" option "
+"above, enabling this may by useful.<br>Avatars will be saved in the local "
+"KVIrc directory.</center>"
+msgstr ""
+"<center>Cette option va ordonner a KVIrc à accepter les requêtes DCC SEND "
+"pour les avatars entrants.<br>Si vous utilisez l'option \"Demander les "
+"avatars manquants\", activer cette option peut être utile.<br>Les avatars "
+"vont être sauvegardés dans le répertoire local de KVIrc.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:94
+msgid "Remember avatars for registered users"
+msgstr "Se rappeler des avatars des utilisateurs enregistrés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:99
+msgid ""
+"<center>Use a user's last known avatar by default (only for users that are "
+"registered).</center>"
+msgstr ""
+"<center>Utilise le dernier avatar connu de l'utilisateur (seulement pour les "
+"utilisateurs enregistrés).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:103
+msgid "Avatar offer timeout:"
+msgstr "Temps d'expiration d'une offre d'avatar :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:104
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:162
+msgid " sec"
+msgstr " sec"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:107
+msgid ""
+"<center>This is the amount of time to make an avatar available for transfer "
+"when requested.<br>When someone sends a CTCP AVATAR request, KVIrc will "
+"reply with a CTCP AVATAR message containing the name and size of your avatar "
+"image.<br>A time-limited file offer is added for the image file to the "
+"requesting user.</center>"
+msgstr ""
+"<center>Il s'agit du temps de disponibilité laissé à un avatar pour être "
+"transférer suite à une demande.<br>Quand quelqu'un envoie une requête CTCP "
+"AVATAR, KVIrc va répondre un message CTCP AVATAR contenant le nom et la "
+"taille de votre image d'avatar. <br>Une offre de fichier limitée dans le "
+"temps est ajoutée pour l'image demandée par l'utilisteur.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:115
+msgid "Ignore requests if no avatar is set"
+msgstr "Ignorer les requêtes si aucun avatar n'est choisi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:118
+msgid ""
+"This option will cause KVIrc to ignore channel CTCP AVATAR requests when you "
+"have no avatar set. This is usually a good practice since it helps in "
+"reducing traffic by not sending a reply that would be empty."
+msgstr ""
+"Cette option va ordonner à KVIrc d'ignorer les requêtes CTCP AVATAR de salon "
+"quand aucun avatar n'est choisi. C'est généralement une bonne idée puisque "
+"cela aide à réduire le traffic en n'envoyant pas la réponse qui serait vide."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:39
+msgid "Use online notify list"
+msgstr "Utiliser la liste de notification"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:44
+msgid "Configuration"
+msgstr "Configuration"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:45
+msgid "Show notifications in active window"
+msgstr "Montrer les notifications dans la fenêtre active"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:50
+msgid "Flash window when users are going online"
+msgstr "Flasher la fenêtre quand les utilisateurs se connectent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:55
+msgid "Popup notifier when users are going online"
+msgstr "Afficher le notifieur quand les utilisateurs se connectent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:59
+msgid "Advanced configuration"
+msgstr "Configuration avancée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:64
+msgid "Check USERHOST for online users"
+msgstr "Vérifier le USERHOST pour les utilisateurs connectés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:69
+msgid "Use \"smart\" notify list manager"
+msgstr "Utiliser le gestionnaire \"intelligent\" de liste de notifications"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:74
+msgid "Use the WATCH method if available"
+msgstr "Utiliser la méthode WATCH si disponible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:79
+msgid "Check interval (in seconds)"
+msgstr "Intervalle de vérification (en secondes)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:85
+msgid "ISON delay (in seconds)"
+msgstr "Delai entre les ISON (en secondes)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:91
+msgid "USERHOST delay (in seconds)"
+msgstr "Delai entre les USERHOST (en secondes)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:96
+msgid ""
+"<p><b>Note:</b><br>The notify list is managed using the \"Registered Users\" "
+"settings.</p>"
+msgstr ""
+"<p><b>Note :</b><br>La liste de notification est gérée est via les "
+"paramètres des \"Utilisateurs Enregistrés\".</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:112
+msgid "Forcibly and completely disable the notifier"
+msgstr "Forcer à désactiver complètement le notifieur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:115
+msgid ""
+"This is an option for the impatient: it allows to forcibly and permanently "
+"disable the notifier window. Please note that if this option is activated "
+"then the notifier will NOT popup even if all the other options around "
+"specify to use it in response to particular events. Also note that this "
+"option will make all the /notifier.* commands fail silently."
+msgstr ""
+"Il s'agit d'une option pour les impatients : elle permet de désactiver "
+"complètement et durablement la fenêtre du notifieur. Notez que si cette "
+"option est activée le notifieur ne va PAS s'affichier meme si toutes les "
+"autres options relatives spécifient de l'utiliser en réponse à des "
+"événements particuliers. Notez par ailleurs que cette option va faire "
+"échouer silencieusement toutes les commandes /notifier.*."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:123
+msgid "Disable notifier window flashing"
+msgstr "Désactiver le clignotement de la fenêtre du notifieur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:124
+msgid "Disable notifier window fade effect"
+msgstr "Désactiver l'effet de fondu de la fenêtre de notification"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:39
+msgid "Default away message:"
+msgstr "Message d'absence par défaut :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:41
+msgid "User input exits away mode"
+msgstr "L'entrée de donnée par l'utilisateur fait sortir du mode d'absence"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:43
+msgid "Away Nickname"
+msgstr "Pseudo d'Absence"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:44
+msgid "Change nickname on away"
+msgstr "Changer de pseudo en cas d'absence"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:47
+msgid "Use automatic nickname ([5 letters]AWAY)"
+msgstr "Utiliser un pseudo automatique ([5 lettres]AWAY)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:55
+#, c-format
+msgid "Custom nickname (%%nick%% means a current nick):"
+msgstr "Pseudo personnalisé (%%nick%% correspond au pseudo courant) :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/libkvioptions.cpp:199
+msgid "No such options page class name %Q"
+msgstr "Le nom de classe de page d'option %Q est inconnu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:47
+msgid "Use system URL handlers"
+msgstr "Utiliser l'intercepteur d'URL du système"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:50
+msgid "<b>http://</b> handler command:"
+msgstr "Commande pour gérer les <b>http://</b> :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:51
+msgid "<b>https://</b> handler command:"
+msgstr "Commande pour gérer les <b>https://</b> :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:52
+msgid "<b>ftp://</b> handler command:"
+msgstr "Commande pour gérer les <b>ftp://</b> :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:53
+msgid "<b>mailto:</b> handler command:"
+msgstr "Commande pour gérer les <b>mailto:</b> :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:54
+msgid "<b>file://</b> handler command:"
+msgstr "Commande pour gérer les <b>file://</b> :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:55
+msgid "Unknown protocol handler command:"
+msgstr "Commande pour gérer les protocoles inconnus :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:61
+msgid "Use proxy"
+msgstr "Utiliser un serveur de priximité"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:65
+msgid "Proxy"
+msgstr "Serveur de priximité"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:76
+msgid ""
+"<center>This is the list of available proxy servers.<br>Right-click on the "
+"list to add or remove proxies.</center>"
+msgstr ""
+"<center>Il s'agit de la liste des serveurs de proximité à disposition."
+"<br>Click droit sur la liste pour en ajouter ou en enlever.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:90
+msgid "New Proxy"
+msgstr "Nouveau Serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:99
+msgid "Remove Proxy"
+msgstr "Supprimer Serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:111
+msgid "Proxy:"
+msgstr "Serveur de Proxomité :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:131
+msgid "Protocol:"
+msgstr "Protocole :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:336
+msgid "&New Proxy"
+msgstr "&Nouveau Serveur se Proximité"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:337
+msgid "Re&move Proxy"
+msgstr "Su&pprimer Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:71
+msgid "Pattern"
+msgstr "Format"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:72
+msgid "MIME Type"
+msgstr "Type de MIME"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:87
+msgid "MIME type:"
+msgstr "Type de MIME :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:92
+msgid "File pattern:"
+msgstr "Format du fichier :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:97
+msgid "Magic bytes:"
+msgstr "Octets magiques :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:102
+msgid "Save path:"
+msgstr "Chemin de sauvegarde :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:107
+msgid "Local open command:"
+msgstr "Commande d'ouverture locale :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:112
+msgid ""
+"<center>This field contains the command to execute to open a local file."
+"<br><tt>$0</tt> is used in place of the filename</center>"
+msgstr ""
+"<center>Ce champ contient la commande à executer pour ouvrir un fichier "
+"local.<br><tt>$0</tt> est utilisé à la place du nom du fichier</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:116
+msgid "Remote open command:"
+msgstr "Commande d'ouverture à distance :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:121
+msgid ""
+"<center>This field contains the command to execute when automatically "
+"opening a received file.<br><tt>$0</tt> is used in place of the filename</"
+"center>"
+msgstr ""
+"<center>Ce champ contient la commande à executer lors de l'ouverture "
+"automatique d'un fichier reçu.<br><tt>$0</tt> est utilisé à la place du nom "
+"du fichier</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:125
+msgid "Icon"
+msgstr "Icône"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:134
+msgid "&New"
+msgstr "&Nouveau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:138
+msgid "Re&move"
+msgstr "Suppri&mer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:184
+msgid "[Unknown Media Type]"
+msgstr "[Type de Média Inconnu]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:230
+msgid "New Media Type"
+msgstr "Nouveau type de média"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:53
+msgid "Nickname Colors"
+msgstr "Couleurs des Pseudos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:56
+msgid "Channel owner:"
+msgstr "Modes du salon :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:57
+msgid "Channel admin:"
+msgstr "Administrateur de salon :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:58
+msgid "Op:"
+msgstr "Op :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:59
+msgid "Half-op:"
+msgstr "Demi-op :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:60
+msgid "Voice:"
+msgstr "Voice :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:61
+msgid "User-op:"
+msgstr "Utilisateur-op :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:62
+msgid "Away:"
+msgstr "Absents:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:66
+msgid "Use different color for own nick:"
+msgstr "Utiliser une couleur différente pour son propre pseudo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:81
+msgid "Draw nickname grid"
+msgstr "Afficher la grille"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:83
+msgid "Grid color:"
+msgstr "Couleur de la grille :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:90
+msgid "Grid type:"
+msgstr "Type de grille :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:94
+msgid "3D Grid"
+msgstr "Grille 3D"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:95
+msgid "3D Buttons"
+msgstr "Boutons 3D"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:96
+msgid "Plain Grid"
+msgstr "Grille pleine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:97
+msgid "Dotted Grid"
+msgstr "Grille en pointillés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:131
+msgid "Horizontal Alignment:"
+msgstr "Alignement horizontal :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:135
+msgid "Vertical Alignment:"
+msgstr "Alignement vertical :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:231
+msgid "Show gender icons"
+msgstr "Afficher les icône de sexe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:232
+msgid "Show user channel icons"
+msgstr "Montrer les icônes des utilisateurs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:233
+msgid "Show user channel activity indicator"
+msgstr "Montrer l'indicateur d'activité des utilisateurs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:234
+msgid "Hide users label"
+msgstr "Cacher les étiquettes des utilisateurs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:235
+msgid "Enable user tooltips"
+msgstr "Activer les bulles d'aide d'utilisateur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:236
+msgid "Hide avatars"
+msgstr "Cacher les avatars"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:79
+msgid "Use flood protection (recommended)"
+msgstr "Utiliser la protection contre le flood (recommandé)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:81
+msgid ""
+"<center>This option makes KVIrc only respond to a limited number of CTCP "
+"requests within a specified time interval, to prevent \"flooding\" CTCP "
+"messages.</center>"
+msgstr ""
+"<center>Cette option oblige KVIrc à répondre à un nombre limité de requête "
+"CTCP en un interval spécifié, pour éviter d'être victime d'une \"inondation"
+"\" de messages CTCP.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:83
+msgid "Allow up to:"
+msgstr "Autorisé jusqu'à :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:84
+msgid " requests"
+msgstr " requêtes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:86
+msgid ""
+"<center>Minimum value: <b>0 requests</b><br>Maximum value: <b>10000 "
+"requests</b></center>"
+msgstr ""
+"<center>Valeur minimale : <b>0 requête</b><br>Valeur maximale : <b>10000 "
+"requêtes</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:89
+msgid "within:"
+msgstr "en :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:92
+msgid ""
+"<center>Minimum value: <b>1 sec</b><br>Maximum value: <b>3600 sec</b></"
+"center>"
+msgstr ""
+"<center>Valeur minimale : <b>1 sec</b><br>Valeur maximale : <b>3600 sec</b></"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:96
+msgid "Ignored Requests"
+msgstr "Requêtes ignorées"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:97
+msgid "PING"
+msgstr "PING"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:98
+msgid "FINGER"
+msgstr "FINGER"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:99
+msgid "CLIENTINFO"
+msgstr "CLIENTINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:100
+msgid "USERINFO"
+msgstr "USERINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:101
+msgid "VERSION"
+msgstr "VERSION"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:102
+msgid "SOURCE"
+msgstr "SOURCE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:103
+msgid "TIME"
+msgstr "TIME"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:104
+msgid "PAGE"
+msgstr "PAGE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:105
+msgid "AVATAR"
+msgstr "AVATAR"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:106
+msgid "DCC/TDCC"
+msgstr "DCC/TDCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:131
+msgid "General Preferences"
+msgstr "Préférences Générales"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:134
+msgid "Theme Preferences"
+msgstr "Préférences du thème"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:136
+msgid "KVIrc Preferences"
+msgstr "Préférences KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:139
+msgid ""
+"This dialog contains a set of KVIrc settings.<br> Use the icons on the left "
+"to navigate through the option pages. The text box in the bottom left corner "
+"is a small search engine. It will highlight the pages that contain options "
+"related to the search term you have entered."
+msgstr ""
+"Cette boîte de dialogue contient une série de réglages de KVIrc.<br>Utiliser "
+"les icônes de gauche pour naviguer dans les options. La boîte de texte en "
+"bas à gauche est un petit moteur de recherche. Il mettra en surbrillance les "
+"pages qui contiennent des options liées à votre recherche."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:147
+msgid ""
+"Many settings have tooltips that can be shown by holding the cursor over "
+"their label for a few seconds."
+msgstr ""
+"De nombreux réglages ont des infobulles qui peuvent s'afficher en laissant "
+"la souris dessus pendant quelques secondes."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:152
+msgid ""
+"When you have finished, click \"<b>OK</b>\" to accept your changes or "
+"\"<b>Cancel</b>\" to discard them. Clicking \"<b>Apply</b>\" will commit "
+"your changes without closing the window."
+msgstr ""
+"Lorsque vous avez fini, cliquez sur \"<b>OK</b>\" pour accepter les "
+"changements ou \"<b>Annuler</b>\" pour ne pas les conserver. Cliquez sur "
+"\"<b>Appliquer</b>\" mettra en place les changements sans fermer la fenêtre."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:217
+msgid ""
+"<p>This is the search tool for this options dialog.</p><p>You can enter a "
+"search term either in your native language or in english and press the "
+"button on the right. The pages that contain some options related to the "
+"search term will be highlighted and you will be able to quickly find them.</"
+"p><p>Try \"nickname\" for example.</p>"
+msgstr ""
+"<p>Ceci est l'outil de recherche pour cette fenêtre d'options.</p><p>Vous "
+"pouvez entrer un mot clé, soit dans votre langue, soit en anglais puis "
+"cliquer sur le bouton à droite. Les pages qui contiennent quelques options "
+"liées au mot clé seront alors mises en surbrillance et vous pourrez les "
+"trouver rapidement.</p><p>Essayez par exemple \"Pseudo\".</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:249
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:61
+msgid "Close this dialog, accepting all changes."
+msgstr "Fermer la boîte de dialogue en acceptant tous les changements."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:255
+msgid "&Apply"
+msgstr "&Appliquer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:256
+msgid "Commit all changes immediately."
+msgstr "Appliquer tous les changements immédiatement."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:69
+msgid "Close this dialog, discarding all changes."
+msgstr "Fermer la boîte de dialogue en oubliant tous les changements."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:149
+msgid ""
+"This table contains the text icon associations.<br>KVirc will use them to "
+"display the CTRL+I escape sequences and eventually the emoticons."
+msgstr ""
+"Cette table contient les associations texte/icône.<br>KVirc va les utiliser "
+"pour afficher les séquences d'échappement CTRL-I et éventuellement les "
+"émoticônes."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:165
+msgid "Add"
+msgstr "Ajouter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:169
+msgid "Delete"
+msgstr "Supprimer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:191
+msgid "unnamed"
+msgstr "sans nom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:53
+msgid "Enable word highlighting"
+msgstr "Activer le surlignage de mots (\"highlight\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:55
+msgid "Words to highlight:"
+msgstr "Mots à surligner :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:57
+msgid "Word splitters:"
+msgstr "Délimiteurs de mots :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:59
+msgid "Highlight messages containing my nickname"
+msgstr "Surligner les messages contenant mon pseudo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:61
+msgid ""
+"<center>If this option is enabled, KVIrc will highlight any user message "
+"containing your current nickname</center>"
+msgstr ""
+"<center>Si vous activez cette option, KVIrc va surligner tous les messages "
+"des utilisateurs contenant votre pseudo en cours</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:63
+msgid "Flash the system taskbar entry on highlighted messages"
+msgstr ""
+"Flasher l'entrée dans la barre de tâche système en cas de message surligné"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:65
+msgid ""
+"<center>If this option is enabled, KVIrc will (attempt to) flash the system "
+"taskbar entry when a highlighted message is printed and KVIrc is not the "
+"active window</center>"
+msgstr ""
+"<center>Si cette option est activée, KVIrc va (tenter de) flasher l'entrée "
+"dans la barre de tâche système quand un message surligné est affiché et que "
+"KVIrc n'est pas la fenêtre active</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:67
+msgid "Popup the notifier window on highlighted messages"
+msgstr "Afficher la fenêtre du notifieur en cas de message surligné"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:69
+msgid ""
+"<center>If this option is enabled, KVIrc will popup a little notifier window "
+"in the low right corner of your desktop when a highlighted message is "
+"printed and KVIrc is not the active window</center>"
+msgstr ""
+"<center>Si cette option est activée, KVIrc va afficher une petite fenêtre "
+"notificatrice dans le coin en bas à droite de votre bureau quand un message "
+"surligné est affiché et que KVIrc n'est pas la fenêtre active</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:91
+msgid "Alert Restrictions"
+msgstr "Restrictions d'alertes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:92
+msgid "Restrict alert"
+msgstr "Restreindre l'alerte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:94
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if a "
+"normal message is received in a channel.<br>Actions like joins, parts and "
+"mode changes will be ignored.<br> This is useful if you are in channels with "
+"a high rate of traffic and only want to be alerted for messages that are "
+"interesting to you.</center>"
+msgstr ""
+"<center>Si cette option est activée, KVIrc va alerter la barre de tâche "
+"seulement si un message normal est reçu sur un salon.<br>Les actions comme "
+"les joins, parts et changements de mode seront ignorés.<br>C'est utile si "
+"vous êtes sur des salons ayant un fort traffic et ne voulez être alerté que "
+"par des messages qui vous intéressent.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:96
+msgid "Alert for highlighted words"
+msgstr "Alerte en cas de mot surligné"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:98
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which contain a word from the highlighted words list above.</center>"
+msgstr ""
+"<center>Si cette option est activée, la barre de tâche va aussi déclencher "
+"une alerte si un message contient un mot inclu dans la liste des mots a "
+"surligner ci-dessus.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:100
+msgid "Alert for query messages"
+msgstr "Alerter en cas de message en privé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:102
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which are shown in queries.</center>"
+msgstr ""
+"<center>Si cette option est activée, la barre de tâche va aussi déclencher "
+"une alerte à chaque message en privé.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:107
+msgid "Use custom alert level"
+msgstr "Utiliser un niveau d'alerte personnalisé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:109
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if "
+"the specified alert level is reached.</center>"
+msgstr ""
+"<center>Si cette option est activée, KVIrc va déclencher une alerte dans la "
+"barre de tâche seulement si le niveau d'alerte spécifé est atteint.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:111
+msgid "Minimum alert level:"
+msgstr "Niveau d'alerte minimal :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:114
+msgid ""
+"<center>This option sets the minimum alert level for the taskbar.</center>"
+msgstr ""
+"<center>Cette option spécifie le niveau d'alerte minimal pour la barre de "
+"tâche.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:213
+msgid "Output verbosity"
+msgstr "Verbosité des sorties"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:49
+msgid "Mute"
+msgstr "Aucune"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:50
+msgid "Quiet"
+msgstr "Silencieuse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:51
+msgid "Normal"
+msgstr "Normale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:52
+msgid "Verbose"
+msgstr "Importante"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:53
+msgid "Paranoic"
+msgstr "Paranoïc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:59
+msgid "Show in active window"
+msgstr "Montrer dans la fenêtre active"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:60
+msgid "External messages"
+msgstr "Messages externes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:61
+msgid "External CTCP replies"
+msgstr "Réponses CTCP externes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:62
+msgid "Whois replies"
+msgstr "Réponses aux whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:63
+msgid "ChanServ and NickServ notices"
+msgstr "Notices de ChanServ et NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:64
+msgid "Invite messages"
+msgstr "Messages d'invitation"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:65
+msgid "Server replies"
+msgstr "Réponses du serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:66
+msgid "Server notices"
+msgstr "Notices du serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:67
+msgid "Broadcast and WALLOPS messages"
+msgstr "Messages de diffusion générale et de WALLOPS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:70
+msgid "Show extended server information"
+msgstr "Montrer les informations complètes du serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:71
+msgid "Show server pings"
+msgstr "Montrer les pings du serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:72
+msgid "Show own parts in the console"
+msgstr "Montrer ses propres départs dans la console"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:73
+msgid "Show compact mode changes"
+msgstr "Montrer les changements de mode compacts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:43
+msgid "Minimize on startup"
+msgstr "Réduire au démarrage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:44
+msgid "Confirm quit with active connections"
+msgstr "Confirmer un quit avec connexions actives"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:45
+msgid "Remember window properties"
+msgstr "Se rappeler des propriétés des fenêtres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:50
+msgid "Disable splash screen"
+msgstr "Désactiver l'image de démarrage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:54
+msgid "Enable visual effects"
+msgstr "Activer les effets visuels"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:55
+msgid "Hide Channel window tool buttons by default"
+msgstr "Cacher les boutons des fenêtres de salon par défaut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:57
+msgid "Open Dialog Window For"
+msgstr "Ouvrir la fenêtre de boîte de dialogue pour"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:58
+msgid "Preferences"
+msgstr "Les préférences"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:59
+msgid "Registered Users"
+msgstr "Les utilisateurs enregistrés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:149
+msgid "Servers"
+msgstr "Les serveurs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.cpp:40
+msgid ""
+"This section contains irc tools<br><p>like<b> away, lag and logging system. "
+"</b> </p>"
+msgstr ""
+"Cette section contient des réglages d'outils IRC<br><p>tels qu'<b>absence, "
+"retard et journalisation.</b> </p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:39
+msgid "On Disconnect"
+msgstr "À la déconnexion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:42
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:55
+msgid "Keep channels open"
+msgstr "Garder les salons ouverts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:44
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after disconnect."
+"</center>"
+msgstr ""
+"<center>Cette option va forcer KVIrc à garder les salons ouverts après une "
+"déconnexion imprévue.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:47
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:60
+msgid "Keep queries open"
+msgstr "Garder les privés ouverts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:49
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after disconnect.</"
+"center>"
+msgstr ""
+"<center>Cette option va forcer KVIrc à garder les privés ouverts après une "
+"déconnexion imprévue.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:52
+msgid "On Unexpected Disconnect"
+msgstr "En cas de Déconnexion Imprevue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+"<center>Cette option va forcer KVIrc à garder les salons ouverts après une "
+"déconnexion imprévue.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:62
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+"<center>Cette option va forcer KVIrc à garder les privés ouverts après une "
+"déconnexion imprévue.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:65
+msgid "Rejoin channels after reconnect"
+msgstr "Rejoindre les salons après une reconnexion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:67
+msgid ""
+"<center>This option will cause KVIrc to rejoin channels after a successful "
+"reconnect attempt.</center>"
+msgstr ""
+"<center>Cette option va obliger KVIrc à rejoindre les salons après une "
+"reconnexion réussie.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:69
+msgid "Reopen queries after reconnect"
+msgstr "Réouvrir les privés après une reconnexion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to reopen query windows after a "
+"successful reconnect attempt.</center>"
+msgstr ""
+"<center>Cette option va obliger KVIrc à réouvrir les privés après une "
+"reconnexion résussie.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:75
+msgid "Automatically reconnect"
+msgstr "Reconnexion Automatique"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:77
+msgid ""
+"<center>This option will enable auto-reconnecting after an unexpected "
+"disconnect. An unexpected disconnect is the <b>termination</b> of a <b>fully "
+"connected IRC session</b> that was <b>not requested by the user</b> by the "
+"means of the QUIT message.<p><b>Warning:</b> If you use /RAW to send a QUIT "
+"message to the server, this option will not behave correctly, since does not "
+"detect the outgoing QUIT message and will attempt to reconnect after the "
+"server has closed the connection. For this reason, always use the /QUIT "
+"command to close your connections. This option may also behave incorrectly "
+"with bouncers that support detaching, in this case a solution could be to "
+"prepare an alias that sends the bouncer \"detach\" command immediately "
+"before the \"quit\" command.<br><tt>alias(bncdetach){ raw bouncer detach; "
+"quit; }</tt></p></center>"
+msgstr ""
+"<center>Cette option va autoriser une reconnexion automatique en cas de "
+"déconnexion imprévue. Une déconnexion imprévue la <b>fin complète</b> "
+"d'<b>une session IRC</b>, <b>non désirée par l'utilisateur</b> via un "
+"message de QUIT.<p><b>Attention :</b> Si vous utilisez /RAW pour envoyer un "
+"message de QUIT, cette option ne fontionnera pas comme désiré car le message "
+"de QUIT sortant ne sera pas détecté et il le client se reconnectera après "
+"que le serveur ait coupé la connexion. Pour cette raison, utilisez toujours "
+"la commande /QUIT afin de clore vos connexions.Cette option risque aussi de "
+"ne pas fonctionner correctement avec les bounces qui supporte le détachage, "
+"et dans ce cas une solution consiste a créer un alias qui envoie au la "
+"commande de détachement juste avant la commande \"quit\". <br><tt>alias"
+"(bncdetach){ raw bouncer detach; quit; }</tt></p></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:89
+msgid "Maximum attempts (0: unlimited):"
+msgstr "Nombre maximal de tentatives (0: illimité) :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:94
+msgid "Delay between attempts:"
+msgstr "Délai entre deux tentatives :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:100
+msgid ""
+"<center>Minimum value: <b>0 sec</b><br>Maximum value: <b>86400 sec</b></"
+"center>"
+msgstr ""
+"<center>Valeur minimale : <b>0 sec</b><br>Valeur maximale : <b>86400 sec</"
+"b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:123
+msgid "Certificate"
+msgstr "Certificat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:125
+msgid "Use SSL certificate (PEM format only)"
+msgstr "Utiliser un certificat SSL (format PEM seulement)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:127
+msgid "Certificate location:"
+msgstr "Localisation du certificat :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:130
+msgid "Certificate password:"
+msgstr "Mot de pass du certificat :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:134
+msgid "Private Key"
+msgstr "Clé privée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:135
+msgid "Use SSL private key"
+msgstr "Utiliser une clé SSL privée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:137
+msgid "Private key location:"
+msgstr "Localisation de la clé privée :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:140
+msgid "Private key password:"
+msgstr "Mot de pass de la clée privée :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:146
+msgid "This executable has no SSL support."
+msgstr "Cet executable n'a pas de support SSL."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:165
+msgid "Timeout Values"
+msgstr "Temps d'Expirations"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:166
+msgid "Connect timeout:"
+msgstr "Temps d'expiration de connexion :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:168
+msgid "Outgoing data queue flush timeout:"
+msgstr "Temps d'expiration du vidage de la queue des données :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:170
+msgid "Limit outgoing traffic"
+msgstr "Limiter le traffic sortant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:171
+msgid "Limit to 1 message every:"
+msgstr "Limiter à 1 message toutes les :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:173
+msgid " usec"
+msgstr " usec"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:175
+msgid ""
+"<center>Minimum value: <b>10000 usec</b><br>Maximum value: <b>10000000 usec</"
+"b></center>"
+msgstr ""
+"<center>Valeur minimale : <b>10000 usec</b><br>Valueur maximale : "
+"<b>10000000 usec</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:179
+msgid "Network Interfaces"
+msgstr "Interfaces réseau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:181
+msgid "Bind IPv4 connections to:"
+msgstr "Lier les connexion IPv4 à :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:185
+msgid "Bind IPv6 connections to:"
+msgstr "Lier les connexion IPv6 à :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:210
+msgid "Enable ident service (bad practice on UNIX!)"
+msgstr "Utiliser le service ident (mauvaise pratique sous UNIX !)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:216
+msgid "Output identd messages to:"
+msgstr "Afficher les messages d'identd dans :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:218
+msgid "Active window"
+msgstr "Fenêtre active"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:219
+msgid "Console"
+msgstr "Console"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:220
+msgid "Do not show any identd messages"
+msgstr "Ne montrer aucun message d'identd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:237
+msgid "Enable ident service only while connecting to server"
+msgstr "Activer le service d'ident pendant la connexion au serveur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:240
+msgid "Ident username:"
+msgstr "Nom d'utilisateur pour ident :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:243
+msgid "Service port:"
+msgstr "Port du service :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:248
+msgid "IPv6 Settings"
+msgstr "Réglages IPV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:249
+msgid "Enable service for IPv6"
+msgstr "Activer le service pour IPV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:258
+msgid "IP stack treats IPv4 as part of IPv6 namespace"
+msgstr ""
+"La pile d'IP considère IPV4 comme une partie de l'espace de noms d'IPV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:265
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications. If it is possible, install a real ident daemon.</p>"
+msgstr ""
+"<p><b>Attention :</b><br>C'est un démon d'ident <b>non compatible RFC 1413</"
+"b> qui implémente seulement un nombre limité des spécificités du Protocole "
+"d'Identification. Installer un véritable démon d'ident dans la mesure du "
+"possible.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:270
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications.<br>On UNIX, you may also need root privileges to bind to the "
+"auth port (113).<br>It is <b>highly recommended</b> that a <b>real</b> "
+"system-wide ident daemon be used instead, or none at all if ident is not "
+"required.</p>"
+msgstr ""
+"<p><b>Attention :</b><br>C'est un démon d'ident <b>non compatible RFC 1413</"
+"b> qui implémente seulement un nombre limité des spécificités du Protocole "
+"d'Identification.<br>sur UNIX, il est probable que vous nécessitiez les "
+"droits root pour une liason a port d'authentification (113).<br>Il est "
+"<b>fortement recommandé</b> qu'un <b>véritable</b> démon système soit "
+"utilisé à la place, ou aucun si ce n'est pas nécessaire.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.cpp:39
+msgid ""
+"This section contains the general client options<br><p>like<b> sound, "
+"mediafiles, URL handler </b> etc... </p>"
+msgstr "Cette section contient"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:39
+msgid "Automatically Log"
+msgstr "Journalisation automatique"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:40
+msgid "Query windows"
+msgstr "Fenêtres privées"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:41
+msgid "Channel windows"
+msgstr "Fenêtres des salons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:42
+msgid "DCC Chat windows"
+msgstr "Fenêtres de DCC Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:43
+msgid "Console windows"
+msgstr "Fenêtres des consoles"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:45
+msgid "Gzip logs"
+msgstr "Gziper les journaux"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:47
+msgid "Strip colors in logs"
+msgstr "Supprimer des couleurs dans les journaux"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:48
+msgid "Auto flush logs every"
+msgstr "Sauvegarder les journaux chaque"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:49
+msgid " min"
+msgstr " min"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:52
+msgid ""
+"<center>Save logs with the current interval<br>Set to 0 to disable this "
+"feature</center>"
+msgstr ""
+"<center>Sauvegarde régulièrement des journaux avec cet interval de temps."
+"<br>Choisissez 0 pour désactiver cette fonction.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:49
+msgid "Minimize console after successful login"
+msgstr "Réduire la console après un enregistrement réussi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:52
+msgid ""
+"<center>This option will cause KVIrc to minimize the console window after "
+"successfully logging into a server.</center>"
+msgstr ""
+"<center>Cette option va forcer KVIrc à réduire la fenêtre de console après "
+"une connexion réussie à un serveur.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:55
+msgid "Show network name in console taskbar entry"
+msgstr "Afficher le nom du réseau dans la barre des tâches de la console"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to show the network name as the console "
+"taskbar entry instead of the server name. This is nice to keep on unless "
+"your servers are not organized in networks or you often connect to two "
+"servers of the same network.</center>"
+msgstr ""
+"<center>Cette option fera afficher le nom du réseau sur la barre de tâches "
+"de la console au lieu du nom du serveur. C'est bien de laisser cette option "
+"à part si vos serveurs ne sont pas organisés en réseaux, ou si vous vous "
+"connectez souvent à plusieurs serveurs sur le même réseau.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:75
+msgid "Force immediate quit"
+msgstr "Forcer un quit immédiat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:78
+msgid ""
+"<center>This option causes KVIrc to close the connection immediately after "
+"sending the QUIT message.<br>When this option is disabled, KVIrc will wait "
+"for the server to close the connection.<br>Note that if you use this, your "
+"QUIT message may be not displayed.</center>"
+msgstr ""
+"<center>Cette option va forcer KVIrc à fermer la connexion immédiatement "
+"après avoir envoyé le message de QUIT.<br>Quand cette option est désactivée, "
+"KVIrc va attendre que le serveur ferme la connexion.<br>Noter que si vous "
+"l'utiliser, votre message de QUIT peut ne pas s'afficher.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:84
+msgid "Prepend gender info to realname"
+msgstr "Mettre le sexe en début de realname"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:110
+msgid "On Channel Kick"
+msgstr "Lors d'un kick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:112
+msgid "Rejoin channel"
+msgstr "Rejoindre le salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:115
+msgid ""
+"<center>This option will cause KVIrc to attempt to rejoin a channel after "
+"being kicked.</center>"
+msgstr ""
+"<center>Cette option va forcer KVIrc à essayer de rejoindre un salon après à "
+"la suite d'un kick.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:129
+msgid "Keep channel open"
+msgstr "Garder le salon ouvert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:121
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"being kicked.<br>It might be a good idea to also enable the \"Rejoin channel"
+"\" option.</center>"
+msgstr ""
+"<center>Cette option va forcer KVIrc à garder la fenêtre du salon ouverte "
+"après avoir été kické.<br>Cela peut-être une bonne idée d'activer aussi "
+"l'option \"Rejoindre le salon\".<center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:127
+msgid "On Channel Part"
+msgstr "Lors d'un Départ de Salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:132
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"leaving it.</center>"
+msgstr ""
+"<center>Cette option va forcer KVIrc à garder la fenêtre de salon ouverte "
+"après l'avoir quitté.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:136
+msgid "Automatically join channel on invite"
+msgstr "Joindre automatiquement un salon sur invitation"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:139
+msgid ""
+"<center>This option will cause KVIrc to automatically join a channel when an "
+"INVITE message for that channel is received.<br><b>Warning:</b> This may "
+"help spammers harass you. :)</center>"
+msgstr ""
+"<center>Cette option va forcer KVIrc à joindre automatiquement un salon "
+"quand un message d'INVITE pour un salon est reçu.<br><b>Attention :</b> cela "
+"peut inciter les spammeurs à vous harasser. :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:144
+msgid "Always open channels as minimized"
+msgstr "Réduire les salons à l'ouverture"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:148
+msgid ""
+"<center>This option causes newly created channel windows to be immediately "
+"minimized.<br>Enable this if you don't like channels popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+"<center>Cette option entraîne la réductionimmédiate de toutes les fenêtre de "
+"salon.<br>Activez-la si vous n'aimez pas que les fenêtres surgissent quand "
+"vous êtes en train d'ecrire quelque chose sur un salon. :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:168
+msgid "Log joined channels history"
+msgstr "Journaliser l'historique des arrivées"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:170
+msgid "Default ban mask:"
+msgstr "Masque de ban par défaut :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:188
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:202
+msgid "On Channel Join"
+msgstr "Lors de la jonction d'un salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:189
+msgid "Do not send /WHO request"
+msgstr "Ne pas envoyer une requête /WHO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:190
+msgid "Do not request ban list"
+msgstr "Ne pas demander la liste des bans"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:191
+msgid "Do not request ban exception list"
+msgstr "Ne pas demander la liste des exceptions de ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:192
+msgid "Do not request invite list"
+msgstr "Ne pas demander la liste des invitations"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:194
+msgid "Do not update the away list"
+msgstr "Ne mettre à jour la liste des absents"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:197
+msgid ""
+"<center>KVIrc sends out a channel /WHO message every now and then to keep "
+"the channel away list in sync. Use this option to disable this feature (and "
+"to save your IRC bandwidth.</center>"
+msgstr ""
+"<center>KVIrc envoie régulièrement des /WHO de salon permettant de garder à "
+"jour la liste des utilisateurs absents. Utilisez cette option pour "
+"désactiver cette fonction (et préserver votre bande passante).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:203
+msgid "Echo channel topic"
+msgstr "Afficher le sujet du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:204
+msgid "Show channel sync time"
+msgstr "Afficher le temps de synchronisation du salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:40
+msgid "Default text encoding:"
+msgstr "Encodage du texte par défaut :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:109
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:133
+msgid "Use Language Encoding"
+msgstr "Utiliser l'Encodage du Texte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:59
+msgid "Force language:"
+msgstr "Forcer l'utilisation d'une langue :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:65
+msgid "<b>Note:</b> You need to restart KVirc to apply a language changing"
+msgstr ""
+"<b>Attention :</b>Vous devez redémarrer KVIrc pour appliquer le changement "
+"de langue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:68
+msgid "Automatic detection"
+msgstr "Détection automatique"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:69
+msgid "en"
+msgstr "fr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Unable to write language information to"
+msgstr "Impossible d'écrire les infos sur la langue dans"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:39
+msgid "Enable Anti-spam For"
+msgstr "Autoriser l'Anti-spam pour"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:45
+msgid "Silent anti-spam (no warnings)"
+msgstr "Anti-spam silencieux (aucune mise en garde)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:46
+msgid "Words considered spam:"
+msgstr "Mots considérés comme du spam :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:51
+msgid "Use workaround for firewall"
+msgstr "Utilisation avec un firewall"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:54
+msgid ""
+"<center>Enable this option if you can't accept incoming connections."
+"<br>KVIrc will try to use different methods to send and receive files."
+"<br>Please note that these methods may NOT work when communicating with a "
+"non-KVIrc client.</center>"
+msgstr ""
+"<center>Autorisez cette option si vous ne pouvez accepter de connexions "
+"entrantes. <br>KVIrc va essayer d'utiliser différentes méthodes pour envoyer "
+"et recevoir des fichiers. <br>Notez cependant que ces méthodes peuvent ne "
+"PAS marcher quand vous communiquez avec un autre client que KVIRC.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:73
+msgid "Network Properties"
+msgstr "Propriétés de réseau"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:75
+msgid "Use user-defined address or network interface"
+msgstr "Utiliser l'adresse ou l'interface de réseau personnalisée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:79
+msgid ""
+"<center>Enable this option if you are on a multihost machine and want to "
+"force one of the available IP addresses to be used for outgoing DCCs."
+"<br>This is especially useful when you use IPv6 and IPv4 addresses.<br>You "
+"can force KVIrc to always choose the IPv4 interface.</center>"
+msgstr ""
+"<center>Autorisez cette option si vous êtes sur une machine à adresses "
+"multiples et que vous désirez forcer l'utilisation de l'une d'elle en "
+"particulier, pour les DCC sortants. <br>C'est particulièrement utile quand "
+"vous utilisez des adresses IPV4 et IPV6. <br>Vous pouvez ainsi obliger KVIrc "
+"à toujours choisir l'interface IPV4.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:84
+msgid "Listen on address/interface:"
+msgstr "Écouter sur l'adresses/interface :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:87
+msgid ""
+"<center>This is the IP address or name of the interface to use by default "
+"for outgoing DCC transfers.<br>On UNIX systems that support it, you can also "
+"specify IPv4 interface names (such as <b>ppp0</b>).<br>If you set it to "
+"<b>0.0.0.0</b>, KVIrc will try to use the first available IPv4 interface</"
+"center>"
+msgstr ""
+"<center>Il s'agit de l'adresse IP ou le nom de l'interface à utiliser par "
+"défaut pour les transferts sortants par DCC. <br>Sur les systèmes UNIX qui "
+"le supportent, vous pouvez aussi spécifier les noms d'interface IPV4 (tel "
+"que <b>ppp0</b>).<br> Si vous choisissez <b>0.0.0.0</b>, KVIrc va essayer la "
+"première interface IPV4 accessible.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:94
+msgid "Use user-defined port range"
+msgstr "Utiliser une gamme de ports personnalisée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:97
+msgid ""
+"<center>Enable this option if you want specify a local port range for DCC.</"
+"center>"
+msgstr ""
+"<center>Utilisez cette option si vous voulez spécifier une gamme de ports "
+"locaux pour les DCC.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:102
+msgid "Lowest port:"
+msgstr "Port le plus bas :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:105
+msgid "Highest port:"
+msgstr "Port le plus élevé :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:108
+msgid "Send a fixed address in requests"
+msgstr "Envoyez une adresse fixe pour les requêtes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:111
+msgid ""
+"<center>Enable this option if you want to always send a fake IP address in "
+"your DCC requests.<br>This might be useful if you're behind a router with a "
+"static address that does network address translation (NAT) and forwards all "
+"or a range of ports.</center>"
+msgstr ""
+"<center>Choisissez cette option si vous désirez envoyer systématiquement une "
+"fausse adresse lors de vos requêtes DCC. <br>Cela peut être utile si vous "
+"êtes derrière un routeur à adresse fixe qui fait de la translation d'adresse "
+"(NAT) et transfert tout ou partie des ports.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:115
+msgid "Send address/interface:"
+msgstr "Envoyer l'adresse/interface :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:119
+msgid ""
+"<center>This is the fixed address that will be sent with all DCC requests if "
+"you enable the option above.</center>"
+msgstr ""
+"<center>Il s'agit de l'adresse fixe qui sera envoyée pour toute requête DCC "
+"si vous avez choisi l'option ci-dessus.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:123
+msgid "Guess address from IRC server if unroutable"
+msgstr "Demander l'adresse au serveur si elle n'est pas routable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:128
+msgid ""
+"<center>You can enable this option if you are behind a router that forwards "
+"all or a range of ports.<br>KVIrc will try to guess the IP address to use "
+"for DCC by looking up the local hostname as seen by the IRC server you're "
+"connected to.<br>This method is an exclusive alternative to the \"fixed "
+"address\" above.<br>It might guess the correct address automatically if "
+"certain conditions are met (e.g. the IRC server does not mask hostnames).</"
+"center>"
+msgstr ""
+"<center>Vous pouvez choisir cette option si vous êtes derrière un routeur "
+"qui transmet tout ou partie des ports.<br>KVIrc va essayer de demander au "
+"serveur l'adresse a utiliser pour le DCC en resolvant celle-ci grâce au "
+"serveur auquel vous êtes connecté.<br>Cette méthode est une alternative "
+"exclusive à l'\"adresse fixe\" ci-dessus.<br>Il est possible que l'adresse "
+"correcte soit demandée automatiquement si certaines conditions sont réunies "
+"(c.a.d. si le serveur IRC ne cache pas les noms de machine).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:134
+msgid "Use \"broken bouncer hack\" to detect address"
+msgstr "Utiliser une faille de rebondisseur pour détecter l'adresse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:137
+msgid ""
+"<center>When you're behind a dialup router and also tunneling through a "
+"psyBNC bouncer, you can use a bug in the bouncer to force KVIrc to bind the "
+"DCC connections to the dialup router's address.<br>It's an ugly hack - use "
+"it only if nothing else works.</center>"
+msgstr ""
+"<center>Quand vous êtes derrière un router de modem par numérotation et que "
+"vous utilisez un tunnel via un rebondisseur de type psyBNC, vous pouvez "
+"utiliser un bogue du rebondisseur pour lier les connexions DCC à l'adresse "
+"du routeur.<br>Il s'agit d'un bricolage assez laid - ne l'utilisez que si "
+"rien d'autre de marche.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:144
+msgid "Notify failed DCC handshakes to the remote end"
+msgstr ""
+"Signaler au client distant quand une connexion DCC ne peut être acceptée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:147
+msgid ""
+"<center>If you enable this option, when a DCC request from a remote user "
+"can't be satisfied KVIrc will notify him by a CTCP ERRMSG. This is a nice "
+"feature so it is a good idea to leave it on unless for some reason you have "
+"deactivated the antiflood system: in this case turning off this option might "
+"help if you often get attacked by CTCP floods.</center>"
+msgstr ""
+"<center>Si vous choisissez cette option, quand une requête DCC d'une "
+"utilisateur distant ne peut être satisfaite KVIrc va le lui signaler via un "
+"CTCP ERRMSG. C'est une fonctionnalité sympathique donc il est préférable de "
+"la laisser à moins que vous ayez à désactiver l'antiflood pour une raison "
+"que;conque : dans ce cas désactivez cette option si vous êtes régulièrement "
+"attaqué par des submersions de CTCP.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:154
+msgid "Maximum number of DCC sessions"
+msgstr "Nombre maximal de sessions DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:156
+msgid ""
+"<center>This is the maximum number of concurrent DCC sessions and it "
+"includes all the DCC types (send,chat,recv...). KVIrc will refuse the "
+"requests when this limit is reached.</center>"
+msgstr ""
+"<center>Il s'agit du nombre maximal de sessions DCC simultanées et cela "
+"inclut tous les type (send, chat, recv...). KVIrc va refuser les requêtes "
+"quand la limite sera atteinte.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:161
+msgid "DCC socket timeout:"
+msgstr "Temps d'expiration du socket DCC :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:164
+msgid ""
+"<center>This is the amount of time that KVIrc will wait for a response "
+"before assuming that a DCC has failed because the remote client was unable "
+"to connect to our listening socket.</center>"
+msgstr ""
+"<center>Il s'agit du temps d'attente de réponse de KVIrc avant d'assumer "
+"qu'un DCC a échoué car le client distant n'a pas été capable de se connecter "
+"à notre socket d'écoute.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:198
+msgid "On Incoming File"
+msgstr "À propos des fichiers entrants"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:371
+msgid "Automatically accept"
+msgstr "Accepter automatiquement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:200
+msgid "Open transfer window as minimized when auto-accepted"
+msgstr "Reduire la fenêtre de transfert quand accepté automatiquement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:201
+msgid "Automatically resume when auto-accepted"
+msgstr "Reprendre automatiquement quand accepté automatiquement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:203
+msgid "Save Location"
+msgstr "Sauvegarder l'emplacement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:204
+msgid "Download folder:"
+msgstr "Répertoire de téléchargement :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:205
+msgid "Sort saved files by nicknames (create subfolders)"
+msgstr "Mots"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:206
+msgid "Guess save path from media type"
+msgstr "Deviner le chemin de sauvegarde en fonction du type de média"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:209
+msgid "On Download Completion"
+msgstr "A la fin du téléchargement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:210
+msgid "Notify completion in console"
+msgstr "Signaler la fin dans la console"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:211
+msgid "Notify completion in notifier"
+msgstr "Signaler la complétion dans le notifieur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:212
+msgid "Automatically clear transfer"
+msgstr "Effacer le transfert automatiquement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:215
+msgid ""
+"<center>This option will cause succesfully terminated transfers to be "
+"automatically removed from the transfer window.</center>"
+msgstr ""
+"<center>Cette option retire automatiquement les transferts terminés de la "
+"fenêtre de transfert.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:220
+msgid "Always open transfer window as minimized"
+msgstr "Toujours ouvrir les fenêtres de transfert minimisées"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:238
+msgid "Bug Compatibility"
+msgstr "Compatibilité de Bogue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:239
+msgid "Send ACK for byte 0"
+msgstr "Envoyer un ACK pour l'octet 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:242
+msgid ""
+"<center>This option causes KVIrc to send a zero-byte acknowledge to kick-"
+"start the DCC transfer with some buggy IRC clients.<br>Use it only if your "
+"DCC transfers stall just after establishing a connection without sending any "
+"data.</center>"
+msgstr ""
+"<center>Cette option va forcer KVIrc à envoyer un accord de type octet nul "
+"pour déclencher un transfert DCC avec certains clients IRC bogués.<br>Ne "
+"l'utilisez que si vos transferts DCC cale juste après avoir établi la "
+"connexion et sans avoir envoyé de données.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:247
+msgid "Accept broken RESUME (mIRC file.ext)"
+msgstr "Accepter les RESUME cassés (fichier.ext mIRC)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:250
+msgid ""
+"<center>This option causes KVIrc to accept RESUME requests with invalid "
+"filenames.<br>Use it if KVIrc fails to accept RESUME requests from other "
+"clients (e.g. some versions of mIRC).</center>"
+msgstr ""
+"<center>Cette option va forcer KVIrc à accepter les requêtes de RESUME avec "
+"nom de fichier invalide.<br>Ne l'utilisez que si KVIrc n'arrive pas à "
+"accepter les requêtes RESUME des autres clients (c.a.d. certaines versions "
+"de mIRC).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:254
+msgid "Replace spaces with underscores in outgoing filenames"
+msgstr ""
+"Remplacer les espaces par des <i>underscores</i> dans le nom des fichiers "
+"sortants"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:257
+msgid ""
+"<center>This option causes KVIrc to replace spaces with underscores in "
+"filenames for all the outgoing file transfers. This will fix filename "
+"handling with some buggy clients (e.g. some versions of mIRC)."
+msgstr ""
+"<center>Cette option va forcer KVIrc à remplacer les espaces par des "
+"<i>underscores</i> dans le nom des fichiers sortants lors des transferts. "
+"Cela permet de régler des problèmes de gestion de nom fichier avec des "
+"clients irc problématiques (c.a.d. certaines versions de mIRC).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:262
+msgid "Limits"
+msgstr "Limites"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:265
+msgid "Limit upload bandwidth to"
+msgstr "Limite la bande passante d'envoi à"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:273
+msgid "bytes/sec"
+msgstr "octets/sec"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:271
+msgid "Limit download bandwidth to"
+msgstr "Limiter la bande passante de téléchargement à"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:277
+msgid "Maximum number of DCC transfers"
+msgstr "Nombre maximal de transferts DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:279
+msgid ""
+"<center>This is the maximum number of concurrent DCC transfers. KVIrc will "
+"refuse the requests when this limit is reached.</center>"
+msgstr ""
+"<center>Il s'agit du nombre maximal de transferts DCC simultanés. KVIrc va "
+"refuser les requêtes quand la limite sera atteinte.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:283
+msgid "Tweaks"
+msgstr "Bidouillages"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:285
+msgid "Use fast send (send ahead)"
+msgstr "Utilisez un envoi rapide (\"send ahead\")"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:288
+msgid ""
+"<center>The \"send ahead\" DCC method allows data to be sent faster by "
+"breaking some of the rules of the original DCC SEND protocol specification."
+"<br>Most clients can handle this kind of optimisation so disable it only if "
+"you have problems.</center>"
+msgstr ""
+"<center>La méthode DCC \"send ahead\" permet d'envoyer les données plus "
+"rapidement en passant outre certaines règles du protocole DCC SEND "
+"original<br>.La plupart des clients supporte de type d'optimisation, donc "
+"désactivez cette option seulement en cas de problème.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:295
+msgid "Force idle step"
+msgstr "Forcer l'envoi par paliers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:298
+msgid ""
+"<center>Enable this option when the dcc file transfers tend to block your "
+"computer by consuming too much CPU time. When this option is enabled the "
+"idle interval below will be forcibly inserted between each sent/received "
+"data packet.</center>"
+msgstr ""
+"<center>Activez cette option quand le transfert dcc de fichiers a tendance a "
+"bloquer votre ordinateur en consommant trop de ressources CPU. Quand cette "
+"option est activée, le temps d'attente ci-dessous sera inséré entre chaque "
+"envoi/reception de paquet de données.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:310
+msgid ""
+"<center>This parameter controls the average delay between two packets sent "
+"or received.<br>A smaller interval will cause you to send data faster but "
+"will also add load to your CPU, disk and network interface.<br>Reasonable "
+"values are from 5 to 50 milliseconds.</center>"
+msgstr ""
+"<center>Ce paramètre controle le délai moyen entre deux paquets envoyés ou "
+"reçus.<br>Un interval petit vous permettra d'envoyer des données plus "
+"rapidement mais mettre vos CPU, disque et interface réseau à forte "
+"contribution.<br>Les valeurs raisonnables se situent entre 5 et 50 "
+"millisecondes.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:316
+msgid "Packet size:"
+msgstr "Taille des paquets :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:320
+msgid ""
+"<center>This parameter controls the packet size used for DCC SEND.<br>With "
+"bigger packets you will be probably send data faster, but you will also "
+"saturate your bandwidth and in some cases cause more disk activity."
+"<br>Reasonable values are from 512 to 4096 bytes.</center>"
+msgstr ""
+"<center>Ce paramètre controle la taille des paquets utilisés pour les DCC "
+"SEND.<br>Avec de plus gros paquets vous allez probablement envoyez vos "
+"données plus rapidement, mais vous allez aussi saturer votre bande passante "
+"et dans certain cas intensifier l'activité du disque.<br>Les valeurs "
+"raisonnables se situent entre 512 et 4096 octets.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:349
+msgid "On Chat Request"
+msgstr "En cas de requête Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:351
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:373
+msgid "Open minimized when auto-accepted"
+msgstr "Reduire quand accepté automatiquement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:353
+msgid "Always open as minimized"
+msgstr "Réduire systématiquement à l'ouverture"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:369
+msgid "Open all minimized"
+msgstr "Réduire systématiquement à l'ouverture"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:370
+msgid "On Voice Request"
+msgstr "En cas de requête Voice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:376
+msgid "Force half-duplex mode on sound device"
+msgstr "Forcer le mode semi-duplex sur le périphérique de son"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:377
+msgid "Volume slider controls PCM, not Master"
+msgstr "Le modulateur de volume controle le PCM, et non le Maître"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:379
+msgid "Sound device:"
+msgstr "Périphérique de son :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:380
+msgid "Mixer device:"
+msgstr "Périphérique de mixage :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:382
+msgid "Pre-buffer size:"
+msgstr "Taille du pré-tampon :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:38
+msgid "Enable Ignore For"
+msgstr "Activer l'ignore pour"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:39
+msgid "Private/channel messages"
+msgstr "Les messages privés/de salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:40
+msgid "Private/channel notices"
+msgstr "Les notices privées/de salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:44
+msgid "Use verbose ignore (show messages in console)"
+msgstr ""
+"Utiliser la signalisation des ignores (montrer les messages dans la console)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:46
+msgid "Sound System"
+msgstr "Son Système"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:66
+msgid "This allows you to select the sound system to be used with KVIrc."
+msgstr "Cela vous permet de selectionner le son système à utiliser par KVIrc."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:72
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:88
+msgid "Auto-detect"
+msgstr "Détection auto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:91
+msgid "Test"
+msgstr "Test"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:79
+msgid "Media Player"
+msgstr "Lecteur Multimédias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:81
+msgid ""
+"This allows you to select the preferred media player to be used with the "
+"mediaplayer.* module commands and functions."
+msgstr ""
+"Cela vous permet de choisir le lecteur multimédia préféré à utiliser par les "
+"commandes et fonctions du module mediaplayer.*."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:102
+msgid "ID3 tags' encoding"
+msgstr "Encodage des étiquettes ID3"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:104
+msgid "This allows you to select encoding of mp3 tags."
+msgstr "Cela vous permet de sélectionner des étiquettes mp3."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:125
+msgid "Winamp messages ecoding"
+msgstr "Encodage des messages de Winamp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:127
+msgid "This allows you to select encoding of winamp messages."
+msgstr "Cela vous permet de sélectionner l'encodage des messages de Winamp."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:290
+msgid "New Query opened"
+msgstr "Privés nouvellement ouverts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:293
+msgid "New message in inactive query"
+msgstr "Nouveau message dans un privé inactif"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:296
+msgid "Highlighted message in inactive window"
+msgstr "Surligner les messages dans les fenêtres inactives"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:299
+msgid "Me have been kicked"
+msgstr "Je viens d'être kické"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:39
+msgid "Selection background color"
+msgstr "Couleur de fond de la sélection"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:40
+msgid "Selection foreground color"
+msgstr "Couleur de l'avant-plan de la sélection"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:41
+msgid "Control char color"
+msgstr "Couleur du caractère Contrôle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:42
+msgid "Cursor color"
+msgstr "Couleur du curseur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:141
+msgid "Warp cursor at the end of line when browsing history"
+msgstr ""
+"Modifier le curseur à la fin de la ligne lors de la navigation dans "
+"l'historique"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:142
+msgid "Disable the input history window and it's log memory."
+msgstr ""
+"Désactiver l'historique des entrées de fenêtre et sa mémoire de "
+"journalisation."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:143
+msgid "Hide input toolbuttons by default"
+msgstr "Cacher les boutons de saisie par défaut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:144
+msgid "Nick completion"
+msgstr "Message de pseudo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:145
+msgid "Use bash-like nick completion"
+msgstr "Utiliser la complétion de pseudo de type bash"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:146
+msgid "Nick completion postfix string"
+msgstr "Chaîne du postfix de complétion de pseudo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:147
+msgid "Use the completion postfix string for the first word only"
+msgstr ""
+"Utilise la chaîne du postfix de complétion de pseudo pour le premier mot "
+"seulement"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:148
+msgid "Commandline in user-friendly mode by default"
+msgstr "Mode de ligne de commande pratique par défaut"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:81
+msgid "Show message icons"
+msgstr "Montrer les icônes de message"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:82
+msgid "Draw some emoticons (smileys) as pictures"
+msgstr "Afficher certains émoticônes (smileys) sous forme d'image"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:83
+msgid "Don't show colors in user messages"
+msgstr "Supprimer les couleurs des messages des utilisateurs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:88
+msgid "Nicknames"
+msgstr "Pseudos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:90
+msgid "\"Smart\" nickname colors"
+msgstr "Couleurs de pseudo \"intelligentes\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:91
+msgid "Use same colors as in the userlist"
+msgstr "Utiliser les même couleurs que pour la liste des utilisateurs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:93
+msgid "Show nicknames in bold"
+msgstr "Afficher les pseudo en gras"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:94
+msgid "Show user and host"
+msgstr "Montrer le nom d'utilisateur et la machine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:95
+msgid "Show channel mode prefix"
+msgstr "Montrer le préfixe de mode de salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:96
+msgid "User-defined prefix and postfix"
+msgstr "Préfixe et suffixe personnalisés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:98
+msgid "[PREFIX]nickname[!user@host][POSTFIX] message"
+msgstr "[PRÉFIXE]pseudo[!num_d_utilisateur@machine][SUFFIXE] message"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:112
+msgid "Prefix:"
+msgstr "Préfixe :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:117
+msgid "Postfix:"
+msgstr "Suffixe :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:131
+msgid "Show timestamp"
+msgstr "Montrer l'horodateur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:134
+msgid "Use UTC time for timestamp"
+msgstr "Utiliser l'heure UTC pour l'horodateur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:141
+msgid "Use special color for timestamps"
+msgstr "Utiliser une couleur spéciale pour l'horodateur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:147
+msgid "Timestamp format:"
+msgstr "Format de l'horodateur :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:320
+msgid "Transparent"
+msgstr "Transparent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:401
+msgid "Message Type"
+msgstr "Type de méssage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:417
+msgid "Background:"
+msgstr "Arrière plan :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:426
+msgid "Foreground:"
+msgstr "Avant plan :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:434
+msgid "Alert level:"
+msgstr "Niveau d'alerte :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:454
+msgid "Log this"
+msgstr "Journaliser"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:458
+msgid "Load From..."
+msgstr "Charger depuis..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:460
+msgid "Save As..."
+msgstr "Sauvegarder sous..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:589
+msgid "Choose a Filename - KVIrc"
+msgstr "Choisissez un Nom de Fichier - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:646
+msgid "Choose a Filename - KVIrc "
+msgstr "Choisir un fichier - KVIrc "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:40
+msgid "Enable lag meter"
+msgstr "Activer le mesureur de retard"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:42
+msgid ""
+"<center>This enables the lag meter engine, which checks at regular intervals "
+"how much lag (latency) the server has.</center>"
+msgstr ""
+"<center>Cela active le moteur de mesure du retard, qui évalue à intervalles "
+"reguliers le retard (latence) que le serveur a.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:45
+msgid "Lag meter heartbeat:"
+msgstr "Battements de cœur du mesureur de retard :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:49
+msgid ""
+"<center>This option allows you to set the lag meter heartbeat interval."
+"<br>The lower the heartbeat interval the higher will be the accuracy of the "
+"lag check but also higher cpu usage and data traffic to the server."
+"<br>Please note that this is NOT the interval between pings sent to the "
+"server: the pings (if any) will be sent really less often. 5000 is a "
+"reasonable value.</center>"
+msgstr ""
+"<center>Cette option vous permet de définir l'intervalle des battements du "
+"cœur du mesureur de retard.<br>Plus l'intervalle battement de cœur est "
+"petit, plus l'évaluation sera précise, mais aussi plus grands seront le "
+"traffic occasionné et la consommation cpu.<br>Notez qu'il ne s'agit PAS de "
+"l'intervalle entre les pings envoyés au serveur : ceux-ci (s'il y en a) "
+"seront envoyés beaucoup moins souvent. 5000 est une valeur raisonnable.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:58
+msgid "Trigger event if lag exceeds:"
+msgstr "Déclencher un événement si le retard excède :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:61
+msgid ""
+"<center>This option controls the threshold for the OnLagAlarmTimeUp and "
+"OnLagAlarmTimeDown events. When the lag goes above the threshold "
+"OnLagAlarmTimeUp will be triggered and when the lag falls back below the "
+"threshold then OnLagAlarmTimeDown will be triggered</center>"
+msgstr ""
+"<center>Cette option contrôle le seuil de déclenchement des événements "
+"OnLagAlarmTimeUp et OnLagAlarmTimeDown. Quand le retard monte au delà de ce "
+"seuil OnLagAlarmTimeUp est déclenché, et OnLagAlarmTimeDown l'est quand le "
+"retard tombe en dessous</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:68
+msgid "Show lag in IRC context display"
+msgstr "Montrer le retard dans l'afficheur du contexte IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:70
+msgid ""
+"<center>This makes the IRC context display applet show the current lag after "
+"the user's nickname (in seconds)</center>"
+msgstr ""
+"<center>Cela permet à l'applet d'affichage du contexte IRC de montrer le "
+"retard après le pseudo (en secondes)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.h:28
+msgid "Away"
+msgstr "Absence"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.h:28
+msgid "CTCP"
+msgstr "CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:28
+msgid "DCC"
+msgstr "DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:59
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:41
+msgid "Advanced"
+msgstr "Avancé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:72
+msgid "File Transfer"
+msgstr "Transfert de Fichier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:113
+msgid "Chat"
+msgstr "Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:126
+msgid "Voice"
+msgstr "Vocal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:32
+msgid "IRC"
+msgstr "IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:73
+msgid "Channel"
+msgstr "Salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:28
+msgid "Lag"
+msgstr "Retard"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:30
+msgid "time,ping"
+msgstr "temps,ping"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:37
+msgid "authentication,identify"
+msgstr "authentification,identité"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:31
+msgid "Language"
+msgstr "Langue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:34
+msgid "language,encoding,charset,codepage"
+msgstr "langue,encodage,caractères,codepage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:28
+msgid "Contacts"
+msgstr "Contacts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:30
+msgid "notify,buddy,buddies,friends"
+msgstr "notification,potes,amis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:42
+msgid "Notifier"
+msgstr "Notifieur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:43
+msgid "popup"
+msgstr "popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:37
+msgid "Text"
+msgstr "Texte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:38
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:49
+msgid "theme,colors,output"
+msgstr "thème,couleurs,sortie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:52
+msgid "Message Style"
+msgstr "Style des messages"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:56
+msgid "theme,privmsg,output,format"
+msgstr "thème,privmsg,affichage,format"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:67
+msgid "Timestamp"
+msgstr "Horodateur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:71
+msgid "time,timestamp"
+msgstr "heure,heure"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:88
+msgid "Message Colors"
+msgstr "Couleurs des messages"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:169
+msgid "theme,colors,messages,output"
+msgstr "thème,couleurs,messages,sortie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:168
+msgid "Color Set"
+msgstr "Jeu de couleurs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.h:32
+msgid "Avatars"
+msgstr "Avatars"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:32
+msgid "Sound"
+msgstr "Son"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:48
+msgid "sound,xmms,audio,play,amarok"
+msgstr "son,xmms,audio,play,amarok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:81
+msgid "Sounds"
+msgstr "Sons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:83
+msgid "sound,events"
+msgstr "sons,événements"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:28
+msgid "URL handlers"
+msgstr "Intercepteurs d'URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:31
+msgid "url,programs"
+msgstr "url,programmes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:29
+msgid "Tray icon"
+msgstr "Icône de barre de tâche"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:31
+msgid "tray,dockwidget"
+msgstr "barre de tâche,ancrage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.h:33
+msgid "Tools"
+msgstr "Outils"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.h:28
+msgid "General options"
+msgstr "Options générales"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.h:31
+msgid "Interface"
+msgstr "Interface"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:29
+msgid "Text icons"
+msgstr "Icônes de texte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:31
+msgid "smileys,emoticons"
+msgstr "smileys,émoticons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:34
+msgid "Output"
+msgstr "Sortie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:48
+msgid "Look"
+msgstr "Apparence"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:101
+msgid "Features"
+msgstr "Fonctionnalités"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:46
+msgid "Media Types"
+msgstr "Types de Médias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:48
+msgid "file,audio,video,programs"
+msgstr "fichiers,audio,vidéo,programmes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:114
+msgid "theme"
+msgstr "thème"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:47
+msgid "Transparency"
+msgstr "Transparence"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:48
+msgid "theme,background"
+msgstr "thème,arrière-plan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:74
+msgid "Window Captions"
+msgstr "Titres MDI"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:88
+msgid "theme,mdi"
+msgstr "thème,mdi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:87
+msgid "Workspace"
+msgstr "Espace de travail"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:100
+msgid "ToolBar Applets"
+msgstr "Barre d'Applets"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:101
+msgid "theme,toolbar"
+msgstr "thème,barre_d'outils"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:150
+msgid "connection"
+msgstr "connexion"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:33
+msgid "Protection"
+msgstr "Protection"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:36
+msgid "ctcp,flood"
+msgstr "ctcp,flood"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:144
+msgid "Avatar"
+msgstr "Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.h:28
+msgid "Anti-spam"
+msgstr "Anti-spam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:32
+msgid "Verbosity And Output"
+msgstr "Verbosité et affichage des infos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:34
+msgid "debug"
+msgstr "debogage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:28
+msgid "Logging"
+msgstr "Journalisation"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:29
+msgid "save,output"
+msgstr "sauvegarde,sortie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:50
+msgid "Input"
+msgstr "Entrée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:33
+msgid "theme,colors,text"
+msgstr "thème,couleurs,texte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:33
+msgid "Taskbar"
+msgstr "Barre des tâches"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:47
+msgid "Tree Taskbar"
+msgstr "Arborescence"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:65
+msgid "Foreground"
+msgstr "Premier plan :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:111
+msgid "Classic Taskbar"
+msgstr "Barre de tâches classique"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:52
+msgid "Proxy Hosts"
+msgstr "Serveurs de Proximité"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:54
+msgid "connection,servers"
+msgstr "connexion,serveurs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:28
+msgid "Alert/Highlight"
+msgstr "Alertes/Surlignage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:42
+msgid "Highlight"
+msgstr "Alertes/Surlignage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:55
+msgid "Taskbar Alert"
+msgstr "Alerte en barre de tâche"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.h:29
+msgid "Flood Protection"
+msgstr "Anti-flood"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:30
+msgid "Userlist"
+msgstr "Liste d'Utilisateurs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:31
+msgid "theme,userlist,channel"
+msgstr "thème,utilisateurs,salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:45
+msgid "theme,userlist,channel,background"
+msgstr "thème,utilisateurs,salon,arrière plan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:66
+msgid "theme,userlist,channel,colors"
+msgstr "thème,utilisateurs,salon, couleurs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:81
+msgid "Nickname Grid"
+msgstr "Grille des Pseudos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:82
+msgid "theme,userlist,channel,grid"
+msgstr "thème,liste d'utilisateurs,salon,grille"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:102
+msgid "userlist,channel"
+msgstr "utilisateurs,salon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:29
+msgid "Labels"
+msgstr "Étiquettes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:30
+msgid "theme,topic"
+msgstr "thème,sujet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:28
+msgid "Scripting Engine"
+msgstr "Moteur de scriptage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:29
+msgid "scripting,kvs,debug"
+msgstr "scriptage,scripting,kvs,debug,debogage"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:55
+msgid "SSL"
+msgstr "SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:72
+msgid "Socket"
+msgstr "Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:87
+msgid "Ident Service"
+msgstr "Service d'Ident"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:29
+msgid "Ignore"
+msgstr "Ignore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:31
+msgid "protection"
+msgstr "protection"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:28
+msgid "Query"
+msgstr "Privés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:30
+msgid "chat"
+msgstr "chat"
diff --git a/po/modules/options/options_hu.po b/po/modules/options/options_hu.po
new file mode 100644
index 00000000..b0d9ca84
--- /dev/null
+++ b/po/modules/options/options_hu.po
@@ -0,0 +1,4386 @@
+# translation of options_hu.po to hungarian
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Ádám Fibinger <[email protected]>, 2006, 2007, 2008.
+# Ádám Fibinger <[email protected]>, 2007.
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:304
+msgid ""
+msgstr ""
+"Project-Id-Version: options_hu\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2008-03-03 08:56+0100\n"
+"Last-Translator: Ádám Fibinger <[email protected]>\n"
+"Language-Team: hungarian <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:232
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:51
+msgid "Font:"
+msgstr "Betűtípus: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:47
+msgid "Background color:"
+msgstr "Háttér szín: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:129
+msgid "Background image:"
+msgstr "Háttér kép: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:51
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:46
+msgid "Horizontal align:"
+msgstr "Vízszintes elhelyezés:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:50
+msgid "Vertical align:"
+msgstr "Függőleges elhelyezés:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:59
+msgid "Mark Line:"
+msgstr "Sor Jelzése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:66
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:124
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:59
+msgid "Tile"
+msgstr "Rendezés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:62
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:55
+msgid "Left"
+msgstr "Bal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:56
+msgid "Right"
+msgstr "Jobb"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:132
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:62
+msgid "Center"
+msgstr "Közép"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:60
+msgid "Top"
+msgstr "Fent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:61
+msgid "Bottom"
+msgstr "Lent"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:149
+msgid "Enable URL highlighting"
+msgstr "URL (webcím) kiemelés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:150
+msgid "Use line wrap margin"
+msgstr "Sortörő margó használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:151
+msgid "Maximum buffer size:"
+msgstr "Maximális pufferméret"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:152
+msgid " lines"
+msgstr " sor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:153
+msgid "Link tooltip show delay:"
+msgstr "Link tipp megjelenésének késleltetése:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:306
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:59
+msgid " msec"
+msgstr "miliszek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:155
+msgid "Link tooltip hide delay:"
+msgstr "Link tipp elrejtésének késleltetése: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:157
+msgid "Track last read text line"
+msgstr "Utolsó olvasott sor követése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:48
+msgid "NickServ Authentication Rule"
+msgstr "NickServ Azonosítási Szabály"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:55
+msgid "Registered NickName"
+msgstr "Regisztrált Név"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:60
+msgid "Put here the nickname that you have registered with NickServ"
+msgstr "Itt adhatod meg a Nevedet, amit regisztráltál a NickServvel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:277
+msgid "NickServ Mask"
+msgstr "NickServ Maszkja"
+
+# Another bug: after the % mark msgfmt require the next word's first char, coz it believe its a variable. I've found this bug twice, but here i cant do nothin against this. "100% s-ban" isnt a correct hungarian expression. Till this bug isnt fixed, you cannot translate correctly. - Fiber - first .hu translator
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:70
+#, c-format
+msgid ""
+"This is the mask that NickServ must match to be correctly identified as the "
+"NickServ service. This usually will be something like <b>NickServ!"
+"[email protected]</b>.<br>You can use wildcards for this field, but "
+"generally it is a security flaw. If you're 100%% sure that NO user on the "
+"network can use the nickname \"NickServ\", the mask <b>NickServ!*@*</b> may "
+"be safe to use in this field."
+msgstr ""
+"Ez a maszk, aminek a NickServ maszkjával egyeznie kell, hogy azonosítani "
+"lehessen. Ez általában ehhez hasonló:<b>[email protected]</"
+"b><br> Használhatsz joker karaktereket ennél a mezőnél, de áltaban ez egy "
+"potencionális biztonsági rés. Ha 100%% s-ban biztos vagy abban, hogy a "
+"hálózaton a \"NickServ\" nevet nem használhatja senki, csak akkor használd a "
+"<b>NickServ!*@*</b> maszkot."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:78
+msgid "Message Regexp"
+msgstr "Message Regexp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:86
+msgid ""
+"This is the simple regular expression that the identification request "
+"message from NickServ must match in order to be correctly recognized.<br>The "
+"message is usually something like \"To identify yourself please use /ns "
+"IDENTIFY password\" and it is sent when the NickServ wants you to "
+"authenticate yourself. You can use the * and ? wildcards."
+msgstr ""
+"Ez az egyszerű kifejezés, amivel a NickServ kéri az azonosítódat.<br>Az "
+"üzenet általában valami ehhez hasonló: \"To identify yourself please use /"
+"NickServ IDENTIFY password\". Ezt az üzenetet a NickServ küldi, az "
+"azonosítódat kérve.Használhatod a * és ? karaktereket jokerkarakterként."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:259
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:279
+msgid "Identify Command"
+msgstr "Azonosító Parancs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:98
+msgid ""
+"This is the command that will be executed when NickServ requests "
+"authentication for the nickname described in this rule (if the both server "
+"and NickServ mask are matched). This usually will be something like <b>msg "
+"NickServ identify &lt;yourpassword&gt;</b>.<br>You can use <b>msg -q</b> if "
+"you don't want the password echoed on the screen. Please note that there is "
+"no leading slash in this command."
+msgstr ""
+"Ez a parancs lesz lefuttatva, amikor a NickServ kéri az azonosítókódod a "
+"Neved azonosítására. (természetesen ha a NickServ hosztmaszkja és a szerveré "
+"is megegyezik) Ez általában egy ehhez hasonló parancs:<b>msg NickServ "
+"identify &lt;yourpassword&gt;</b>.<br>Használd az <b>msg -q</b> kapcsolót, "
+"ha nem akarod, hogy a jelszavad látszon a képernyőn. Arra figyelj, hogy itt "
+"Ne használj parancskezdő perjelet."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:256
+msgid "Server mask"
+msgstr "Szerver maszk"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:117
+msgid ""
+"This is the mask that the current server must match in order for this rule "
+"to apply. It can contain * and ? wildcards.<br>Do NOT use simply \"*\" "
+"here..."
+msgstr ""
+"Ez a maszk aminek egyeznie kell az aktuális szerver maszkjával, hogy az "
+"automatikus azonosítás lefusson. <br>NE Használj simán \"*\"-ot itt..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:128
+msgid "Hint: Move the mouse cursor over the fields to get help"
+msgstr "Tipp: Vidd az egérkurzort a mező felé, hogy segítséget kapj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:137
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:68
+msgid "Cancel"
+msgstr "Mégsem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:803
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:164
+msgid "Invalid NickServ Rule"
+msgstr "Helytelen NickServ Szabály"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:169
+msgid "The Nickname field can't be empty!"
+msgstr "A Név mező nem lehet üres!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:175
+msgid "The Nickname field can't contain spaces!"
+msgstr "A Név mező nem tartalmazhat szóközt!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:183
+msgid "The NickServ mask can't be empty!<br>You must put at least * there."
+msgstr ""
+"A NickServ maszkja nem lehet üres!<br>Legalább egy *-ot tartalmaznia kell."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:191
+msgid "The Message Regexp can't be empty!<br>You must put at least * there."
+msgstr ""
+"Az Üzenet Formája nem lehet üres!<br>Legalább egy *-ot tartalmaznia kell."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:199
+msgid "The Identify Command can't be empty!"
+msgstr "Az Azonosító Parancs nem lehet üres!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:265
+msgid "Enable NickServ Identification"
+msgstr "NickServ Azonosítás engedélyezése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:269
+msgid "This check enables the automatic identification with NickServ"
+msgstr "Ezzel engedélyezheted az automatikus NickServ azonosítást"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:276
+msgid "Nickname"
+msgstr "Név"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:258
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:278
+msgid "NickServ Request Mask"
+msgstr "NickServ maszkja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:265
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on all the networks."
+"<br>Please be aware that this feature can cause your NickServ passwords to "
+"be stolen if used improperly. Make sure that you fully understand the "
+"NickServ authentication protocol.<br>In other words, be sure to know what "
+"you're doing.<br>Also note that the password that you provide is stored as "
+"<b>PLAIN TEXT</b>.<br>KVIrc supports also per-network NickServ "
+"authentication rules that can be created in the \"Advanced...\" network "
+"options (accessible from the servers dialog).</center>"
+msgstr ""
+"<center>Ez egy lista, a NickServ azonosítási szabályokhoz. A KVIrc ezeket "
+"használja, hogy automatikusan közreműködni tudjon a NickServvel minden "
+"hálózaton.<br> Ennek a helytelen beállítása okozhatja, hogy valaki ellopja a "
+"NickServ jelszavadat! Légy biztos abban, hogy teljesen megértetted a "
+"NickServ azonosítási protokoll lényegét.<br> Más szavakkal: légy biztos "
+"abban, amit csinálsz.<br> A jelszavakat <b>EGYSZERŰ SZÖVEG</b>-ként kerül "
+"mentésre.<br>A KVIrc támogatja a hálózatonkénti azonosítást, amit "
+"megcsinálhatsz a \"Haladó...\" hálózati beállításoknál. (elérhető a Szerver "
+"párbeszédablakból). </center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:293
+msgid "Add Rule"
+msgstr "Szabály Hozzáadása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:298
+msgid "Edit Rule"
+msgstr "Szabály Szerkesztése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:302
+msgid "Delete Rule"
+msgstr "Szabály törlése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:31
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:36
+msgid "Font"
+msgstr "Betűtípus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:38
+msgid "Foreground color"
+msgstr "Előtér szín"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:37
+msgid "Background color"
+msgstr "Háttér szín"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:34
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:44
+msgid "Background image"
+msgstr "Háttér kép"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:40
+msgid "Enable tray icon"
+msgstr "Tálca ikon engedélyezése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:41
+msgid "Close in tray"
+msgstr "Bezárásnál a KVIrcet tegye a tálcára"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:42
+msgid "Minimize in tray"
+msgstr "Minimalizálás ikonként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:44
+msgid "Enable tray icon flashing"
+msgstr "Tálca ikon villogásának engedélyezése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:45
+msgid "Enable level-based message notification (not a message-type based)"
+msgstr "Prioritási szint alapú értesítő engedélyezése (nem üzenet-alapú)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:47
+msgid "Select message levels to notify"
+msgstr "Üzenet szint kiválasztása értesítéshez"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:49
+msgid "Minimum level for low-priority messages"
+msgstr "Minimális szint az alacsony prioritású üzeneteknek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:53
+msgid "Minimum level for high-priority message"
+msgstr "Minimális szint a magas prioritású üzeneteknek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.cpp:40
+msgid ""
+"This section contains irc protection tools<br><p>like<b> flood, ignore, "
+"antispam. </b> </p>"
+msgstr ""
+"Ebben a részben találod a védő eszközöket<br><p> mint például<b> flood, "
+"mellőzés, spamszűrés.</b> </p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:40
+msgid ""
+"<center><b>Settings for CTCP.</b></center><p>The <b>Client-To-Client "
+"Protocol</b> (CTCP) is used to transmit special control messages over an IRC "
+"connection. These messages can request information from clients or negotiate "
+"file transfers.<br><br></p>"
+msgstr ""
+"<center><b>CTCP beállítások.</b></center><p>A <b>Client-To-Client Protocol</"
+"b> (CTCP) különleges \"vezérlő\" üzeneteket tesz lehetővé IRC kapcsolaton "
+"keresztül. Ezek az üzenetek tartalmazhatnak információ kéréseket a "
+"klienstől, vagy fájl kapcsolatok egyeztetésében segíthetnek.<br><br></p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:47
+msgid "CTCP Replies"
+msgstr "CTCP Válaszok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:48
+msgid "Append to VERSION reply:"
+msgstr "Hozzáfűzés a VERZIÓ válaszhoz: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:52
+msgid ""
+"<center>This text will be appended to the CTCP VERSION reply.<br>For "
+"example, you can place a script name here.</center>"
+msgstr ""
+"<center>Ez a szöveg hozzá lesz rendelve a CTCP VERZIÓ válaszhoz. <br>Például "
+"Szkript nevet is elhelyezhetsz itt.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:55
+msgid "Append to SOURCE reply:"
+msgstr "Hozzáfűzés a SOURCE válaszhoz:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:59
+msgid ""
+"<center>This text will be appended to the CTCP SOURCE reply.<br>For example, "
+"you can place the source URL for a script here.</center>"
+msgstr ""
+"<center>Ez a szöveg hozzá lesz rendelve a CTCP SOURCE (forrás) válaszhoz. "
+"<br>Például Szkript URL-t itt elhelyezheted.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:69
+msgid "PAGE reply:"
+msgstr "PAGE válasz:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:73
+msgid ""
+"<center>This is the CTCP PAGE reply.<br>It should contain some sort of "
+"acknowledgement for CTCP PAGE messages.</center>"
+msgstr ""
+"<center>Ez egy CTCP PAGE válasz.<br>Ez tartalmazhat egy rövid értesítőt CTCP "
+"PAGE válaszként.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:76
+msgid "Show the CTCP replies in the active window"
+msgstr "Mutasd a CTCP válaszokat az aktív ablakban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:78
+msgid "Show dialog for CTCP page requests"
+msgstr "Mutasd a CTCP page kéréseket párbeszédablakban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:36
+msgid "Use tree taskbar"
+msgstr "Fa struktúra használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:37
+msgid "Sort windows by name"
+msgstr "Ablakok rendezése név szerint"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:38
+msgid "Show window icons in taskbar"
+msgstr "Ablak ikonjának mutatása tálcán"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:39
+msgid "Show activity meter in taskbar"
+msgstr "Aktivitás mutatása a tálcán"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:41
+msgid ""
+"<center>This option enables the usage of the taskbar activity meter. Each "
+"window entry will have a small indicator of the activity that is going on in "
+"that window. The indicator is a small square that changes colors, dark "
+"colors mean low activity, while bright colors signal high activity. KVIrc "
+"also uses some heuristics to determine whether the activity is somewhat "
+"\"human\" or it is generated by automated entities (such as bots or IRC "
+"servers). \"Human\" activity causes the indicator to be shaded red while "
+"automated activity causes the indicator to be shaded blue.</center>"
+msgstr ""
+"<center>Ez az opció engedélyezi az aktivitásmérő megjelenítését a tálcán. "
+"Minden ablaknak lesz egy kis kijelzője, ami mutatja mi történik éppen abban "
+"az ablakban. A kijelző egy kis négyzet, ami változtatja a színét, ahol a "
+"sötétebb színek az alacsony aktivitást, míg a világosabbak a magasabbat "
+"jelzik. A KVIrc ezen felül megpróbálja meghatározni, hogy az aktivitás "
+"\"Emberi\" avagy a forgalmat automata elemek okozzák. (mint például botok "
+"vagy IRC szerverek). \"Emberi\" aktivitás esetén a kijelző vörös felé "
+"hajlik, míg automatizált elemeknél a kék felé.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:49
+msgid "Show IRC context indicator in taskbar"
+msgstr "IRC környezet kijelző a tálcán"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:50
+msgid "Enable window tooltips"
+msgstr "Ablak tippek engedélyezése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:233
+msgid "Text/Alert Colors"
+msgstr "Szöveg/Figyelmeztető Színek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:125
+msgid "Normal:"
+msgstr "Normál: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:126
+msgid "Selected:"
+msgstr "Kiválasztott: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:236
+msgid "Alert Level 1:"
+msgstr "1. figyelmeztetési szint:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:237
+msgid "Alert Level 2:"
+msgstr "2. figyelmeztetési szint:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:238
+msgid "Alert Level 3:"
+msgstr "3. figyelmeztetési szint:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:239
+msgid "Alert Level 4:"
+msgstr "4. figyelmeztetési szint:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:240
+msgid "Alert Level 5:"
+msgstr "5. figyelmeztetési szint:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:241
+msgid "Progress bar color:"
+msgstr "Folyamatjelző sáv színe:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:124
+msgid "Background Colors"
+msgstr "Háttér Színek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:212
+msgid "Show header"
+msgstr "Fejléc mutatása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:214
+msgid "Minimum width:"
+msgstr "Minimális szélesség:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:215
+msgid "Maximum width:"
+msgstr "Maximális szélesség:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:235
+msgid "Minimized:"
+msgstr "Minimalizált: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:242
+msgid "Minimum width of buttons:"
+msgstr "Gombok minimális szélessége: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:244
+msgid "Set maximum button width"
+msgstr "Gombok maximális szélessége"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:245
+msgid "Maximum width of buttons:"
+msgstr "Gombok maximális szélessége"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:246
+msgid "Use flat buttons"
+msgstr "Sima gombok használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:96
+msgid "Network Details"
+msgstr "Hálózat Tulajdonságai"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:82
+msgid "Description:"
+msgstr "Meghatározás: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:116
+msgid "<center>Put here a brief description of the network.</center>"
+msgstr "<center>Ide tehetsz néhány szót a hálózatról magadnak. </center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:477
+msgid "Properties"
+msgstr "Tulajdonságok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:123
+msgid "Username:"
+msgstr "Felhasználónév:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:134
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to servers "
+"on this network.\n"
+"If this field is left empty (most common case), KVIrc will use the default "
+"username specified in the \"Identity\" options tab.</center>"
+msgstr ""
+"<center>Ez a <b>felhasználónév</b> amivel a KVIrc csatlakozni fog ezen a "
+"hálózaton.\n"
+"Ez a mező a legtöbb esetben üres, a KVIrc az \"Azonosító\"-ban megadott "
+"adatokat használja. </center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:498
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:320
+msgid "Nickname:"
+msgstr "Név: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:145
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to the servers on this network.<br>If this field is left empty (most "
+"common case), the default nickname (specified in the \"Identity\" settings) "
+"will be used.</center>"
+msgstr ""
+"<center>Megadhatsz \"különleges\" <b>Nevet</b> amivel a KVIrc csatlakozni "
+"fog ezen a hálózaton.<br>Ha üresen marad (mint a legtöbb esetben), az "
+"alapértelmezett nevet használja. (Az \"Azonosító\" beállításai alapján ) </"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:509
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:342
+msgid "Real name:"
+msgstr "Valós név:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:153
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with the servers on this network.<br>If you leave this field empty "
+"(most common case), the default \"real name\" (specified in the \"Identity\" "
+"settings) will be used.</center>"
+msgstr ""
+"<center>Megadhatsz \"különleges\" <b>valós nevet</b> amivel a KVIrc "
+"csatlakozni fog ezen a hálózaton.<br>Ha üresen marad (mint a legtöbb "
+"esetben), az alapértelmezett valós nevet használja. (Az \"Azonosító\" "
+"beállításai alapján ) </center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:644
+msgid "Encoding:"
+msgstr "Kódolás:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:164
+msgid ""
+"<center>This box allows you to choose the preferred encoding for the servers "
+"in this network. If you choose \"Use System Encoding\" then the encoding "
+"will be set to the systemwide value that you choose in the \"Encoding\" page "
+"of the options dialog.</center>"
+msgstr ""
+"<center>Ez a beállítás lehetővé teszi, hogy ezeken a szervereken meghatározd "
+"a karakterkódolást. Ha a \"Renszerbeállítások szerint\" opció él, a KVIrc a "
+"\"Kódolás\" résznél megadottat használja.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:173
+msgid "Use System Encoding"
+msgstr "Redszerbeállítások szerinti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:185
+msgid "Connect to this network at startup"
+msgstr "Kapcsolódás erre a hálózatra indításkor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:189
+msgid ""
+"<center>This option will cause KVIrc to automatically connect to this "
+"network at startup</center>"
+msgstr ""
+"<center>Ezzel az opcióval a KVIrc csatlakozni fog automatikusan ehhez a "
+"hálózathoz a KVIrc indításakor.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:79
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:120
+msgid "General"
+msgstr "Általános"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:756
+msgid "Channels to join automatically upon connect:"
+msgstr "Csatornák, amire automatikusan fellép kapcsolódáskor:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:211
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to a server in this network has been established. To add a "
+"channel, type its name in the text input below and click \"<b>Add</b>\".</"
+"center>"
+msgstr ""
+"<center>Itt megadhatod azokat a csatornákat, amire a KVIrc fellépjen, miután "
+"létrehozta a kapcsolatot a szerverrel. Csatorna hozzáadásához írd be a "
+"csatorna nevét és kattints a \"<b>Hozzád</b>\" gombra.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:217
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:62
+msgid "Join Channels"
+msgstr "Csatlakozás csatornákhoz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:228
+msgid ""
+"<center>The following commands will be executed after a connection to a "
+"server in this network has been established.<br><b>Important:</b> Enter "
+"commands <b>without</b> a preceding slash (e.g. <tt>quote pass secret</tt> "
+"instead of <tt>/quote pass secret</tt>).<br>KVIrc will first send the USER "
+"command, then eventually PASS and NICK and then execute this command "
+"sequence.</center>"
+msgstr ""
+"<center>Ezek a parancsok fognak lefutni, amikor a KVIrc létrehozta a "
+"kapcsolatot a szerverrel. <br><b>Fontos:</b> a parancsokat csak parancskezdő "
+"perjel <b>nélkül</b> használd. (pl.: <tt>msg jelszó titkos</tt> a<tt>/msg "
+"jelszó titkos</tt> helyett!.)<br>A KVIrc elősször a USER parancsot hajtja "
+"végre, majd utána a PASS és a NICK elküldése következik (belépéskor), majd "
+"mindezek után ez a kódblokk fut le.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:782
+msgid "On Connect"
+msgstr "Kapcsolódás után"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:249
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"a server in this network.<br><b>Important:</b> Enter commands <b>without</b> "
+"a preceding slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote "
+"privatelog</tt>).<br>This is useful for automatically opening queries, "
+"setting variables, etc.</center>"
+msgstr ""
+"<center>A következő parancsok akkor futnak le, ha sikeresen feljelentkezett "
+"a hálózatra.<br><b>Fontos:</b> a parancsokat csak parancskezdő perjel "
+"<b>nélkül</b> használd. (pl.: <tt>msg jelszó titkos</tt> a<tt>/msg jelszó "
+"titkos</tt> helyett!)<br> Ezzel például automatikusan megnyithatsz "
+"privátokat, definiálhatsz változókat.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:801
+msgid "On Login"
+msgstr "Belépéskor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:285
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on this network.<br>Please "
+"be aware that this feature can cause your NickServ passwords to be stolen if "
+"used improperly. Make sure that you fully understand the NickServ "
+"authentication protocol.<br>In other words, be sure to know what you're "
+"doing.<br>Also note that the password that you provide is stored as <b>PLAIN "
+"TEXT</b>.</center>"
+msgstr ""
+"<center>Ez egy lista a NickServ azonosító szabályokról. A KVIrc használni "
+"fogja ezeket, hogy automatikusan kapcsolatba lépjen a NickServvel.<br> "
+"Figyelmeztetés: helytelen használat esetén a jelszavad véletlenül kiadhatod "
+"mások számára. Legyél benne biztos, hogy teljesen megértetted a NickServ "
+"azonosítási protokoll lényegét.<br>Más szavakkal: tudd mit csinálsz.<br> A "
+"jelszavad <b>EGYSZERŰ SZÖVEG</b>-ként kerül tárolásra.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:35
+msgid "NickServ"
+msgstr "NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:323
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:60
+msgid "&OK"
+msgstr "&Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:449
+msgid "Server Details"
+msgstr "Szerver Tulajdonságai"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:465
+msgid ""
+"<center>This is a brief description of this server. This field has no "
+"restrictions but many server lists use it to describe the server's physical "
+"location</center>"
+msgstr ""
+"<center>Ez egy tömör meghatározása a szervernek. Ennek a mezőnek nincsenek "
+"kikötései, de több szerver használatánál meghatározhatod a szerver fizikai "
+"elhelyezkedését is.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:484
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to this "
+"server.\n"
+"If this field is left empty (most common case), KVIrc will first look if an "
+"username is specified for the network that this server belongs to, and if "
+"that is empty then KVIrc will use the default username specified in the "
+"\"Identity\" options tab.</center>"
+msgstr ""
+"<center>Ez a <b>felhasználónév</b> amivel a KVIrc belép a szerverre. \n"
+"Ha ez a mező üres, akkor elősször a KVIrc ellenőrzi, nincs e megadva "
+"felhasználónév azon a hálózaton, amihez ez a szerver tartozik, majd ha az is "
+"üres, a KVIrc az \"Azonosító\" résznél megadott felhasználónevet fogja "
+"használni.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:490
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:127
+msgid "Password:"
+msgstr "Jelszó: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:495
+msgid ""
+"<center>If this server requires a password, put it in this field, otherwise "
+"leave it empty.</center>"
+msgstr ""
+"<center>Ha erre a szerverre jelszó szükséges, ebben a mezőben megadhatod, "
+"egyébként hagyd üresen.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:504
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to this server.<br>If this field is left empty (most common case), "
+"KVIrc will first look if a nickname is specified for the network that this "
+"server belongs to, and if that is empty then the default nickname (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center>Itt megadhatsz \"különleges\"<b>Nevet</b> amivel a KVIrc csatlakozni "
+"fog erre a szerverre. Ha ez a mező üres, akkor elősször a KVIrc ellenőrzi, "
+"nincs e megadva Név azon a hálózaton, amihez ez a szerver tartozik, majd ha "
+"az is üres, a KVIrc az \"Azonosító\" résznél megadott Nevet fogja használni."
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:513
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with this server.<br>If you leave this field empty (most common case), "
+"KVIrc will first look if a real name is specified for the network that this "
+"server belongs to, and if that is empty the default \"real name\" (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center>Itt megadhatsz \"különleges\"<b>Valós nevet</b> amivel a KVIrc "
+"csatlakozni fog erre a szerverre. Ha ez a mező üres, akkor a KVIrc elősször "
+"ellenőrzi, nincs e megadva Valós név azon a hálózaton, amihez ez a szerver "
+"tartozik, majd ha az is üres, a KVIrc az \"Azonosító\" résznél megadott "
+"Valós nevet fogja használni.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:683
+msgid "User Mode"
+msgstr "Felhasználói Mód"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:520
+msgid "Use default user mode"
+msgstr "Alapértelmezett felhasználói módok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:522
+msgid ""
+"<center>If this is enabled, the global initial <b>user mode</b> (configured "
+"from the identity dialog) will be used. If disabled, you can configure an "
+"initial user mode for this server"
+msgstr ""
+"<center>Ha ez engedélyezve van, a globális <b>felhasználói módok</b> "
+"(azonosítóban beállított) lesznek használva. Ha nincs engedélyezve, "
+"beállíthatsz speciális felhasználó módokat a szerverhez"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:684
+msgid "Invisible (+i)"
+msgstr "Láthatatlan (+i)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:534
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:685
+msgid "Server notices (+s)"
+msgstr "Szerver értesítők (+s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:686
+msgid "Wallops (+w)"
+msgstr "Wallops (+w)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:548
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:60
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:104
+msgid "Identity"
+msgstr "Azonosító"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:115
+msgid "Port:"
+msgstr "Port:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:565
+msgid ""
+"<center>This is the default <b>port</b> that this server will be contacted "
+"on.<br>Usually <b>6667</b> is OK.</center>"
+msgstr ""
+"<center>Ez az alapértelmezett <b>port</b> amin keresztül csatlakozol a "
+"szerverhez.<br>Általában ez <b>6667</b>.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:571
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:119
+msgid "IP address:"
+msgstr "IP cím: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:576
+msgid ""
+"<center>This is the <b>IP address</b> of this server, it is here for caching "
+"purposes.<br>If you leave this field empty, KVIrc will fill it in the first "
+"time it connects to the server. If you enable the \"cache IP address\" "
+"option below, KVIrc will use it as a \"cached result\" and avoid looking it "
+"up again.</center>"
+msgstr ""
+"<center>Ez az <b>IP cím</b> tartozik ehhez a szerverhez. <br>Ha ezt üresen "
+"hagyod, a KVIrc első kapcsolódáskor automatikusan kitölti. Ha engedélyezed "
+"az \"IP cím tárolása\" opciót, a KVIrc úgy fogja értelmezni mint \"korábban "
+"tárolt eredmény\" és nem ellenőrzi le.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:596
+msgid "Cache IP address"
+msgstr "Ip cím tárolása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:599
+msgid ""
+"<center>This check will enable <b>IP address caching</b> for this server:"
+"<br>DNS lookups can be time-consuming and might be blocking on some "
+"platforms; this option will cause KVIrc to look up the server hostname only "
+"once.<br><br> Advanced: you can also use this option to force a certain "
+"server name to resolve to a fixed ip address when either the dns for that "
+"server is temporairly unreachable or you want to avoid the round-robin "
+"lookups.</center>"
+msgstr ""
+"<center>Ez engedélyezi az <b>IP cím tárolás</b>át ennél a szervernél. <br> "
+"DNS felderítés időt vesz igénybe, és lehet, hogy blokkolva van néhány "
+"platformon, így ezt csak egyszer hajtja végre, első csatlakozáskor.<br><br> "
+"Haladó: megadhatod ennél az opciónál, hogy egyes szerver neveknél "
+"visszafejtse az IP címet, amikor a DNS szerver átmenetileg nem elérhető, "
+"vagy ha el akarod kerülni a felesleges körök futását.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:609
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:140
+msgid "Use IPv6 protocol"
+msgstr "IPv6 Protokoll használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:619
+msgid ""
+"<center>This check identifies IPv6 servers.<br>If enabled, KVIrc will "
+"attempt to use the IPv6 protocol (thus your OS <b>must</b> have a working "
+"IPv6 stack and you <b>must</b> have an IPv6 connection).</center>"
+msgstr ""
+"<center>Ezzel IPv6 szerverként azonosítod a szervert.<br>Ha engedélyezve "
+"van, a KVIrc IPv6 protokollal próbál kapcsolódni. (ehhez a rendszerednek ezt "
+"támogatnia<b>kell</b>, illetve létező IPv6 kapcsolatnak <b>kell</b> lennie.)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:624
+msgid "Use SSL protocol"
+msgstr "SSL protokol használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:627
+msgid ""
+"<center>This check will cause the connection to use the <b>Secure Socket "
+"Layer</b> encryption support. Obviously, this server must have support for "
+"this, too. :)</center>"
+msgstr ""
+"<center>Ezzel a kapcsolat <b>Secure Socket Layer</b> titkosítással fog "
+"létrejönni. Nyilván a szervernek is támogatnia kell ezt. :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:636
+msgid "Connect to this server at startup"
+msgstr "Kapcsolódás indításkor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:641
+msgid ""
+"<center>This option will cause KVIrc to connect to the IRC server when it is "
+"started.</center>"
+msgstr ""
+"<center>A KVIrc indításakor automatikusan kapcsolódik ehhez a szerverhez, ha "
+"engedélyezve van.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:650
+msgid ""
+"<center>This box allows you to choose the preferred encoding for this sever. "
+"If you choose \"Use Network Encoding\" then the encoding will be inherited "
+"from the network that this server belongs to.</center>"
+msgstr ""
+"<center>Ez az opció lehetővé teszi, hogy kiválaszd a megadott kódolást erre "
+"a szererre. Ha \"Hálózati kódolás használata\" opciót választod, akkor a "
+"kódolást a hálózati beállításoknál megadottra állítja, amihez a szerver "
+"tartozik.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:659
+msgid "Use Network Encoding"
+msgstr "Hálózati kódolás használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:672
+msgid "Link filter:"
+msgstr "Kapcsolat szűrő:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:701
+msgid ""
+"<center>This field specifies the name of a module that exports a link filter "
+"for this type of server.<br>For plain IRC connections, you don't need any "
+"link filters; this is used for incompatible protocols.</center>"
+msgstr ""
+"<center>Ez a mező adja meg a modul nevét, amelyik exportálja a link szűrőt "
+"ehhez a típusú szerverhez.<br> Normál IRC kapcsolatokhoz nincs szükség "
+"linkszűrőkre, ez nem kompatibilis protokollokhoz használt opció.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:705
+msgid "Id:"
+msgstr "Azonosító:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:713
+msgid ""
+"<center>This field allows you to specify a really unique id for this server. "
+"You will then be able to use /server -x &lt;this_id&gt; to make the "
+"connection. This is especially useful when you have multiple server entries "
+"with the same hostname and port in different networks (bouncers?)</center>"
+msgstr ""
+"<center>Ezzel a szerverhez hozzárendelhetsz egy különleges azonosítót, ami "
+"alapján képes leszel a /server -x &lt;megadott_id&gt; paranccsal kapcsolódni "
+"hozzá. Ez különösen akkor hasznos, ha több szerver tartozik ugyanahhoz a "
+"hosztnévhez és porthoz. (pl: BNC)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:719
+msgid "Proxy server:"
+msgstr "Proxy szerver:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:724
+msgid ""
+"<center>This is the <b>proxy</b> that KVIrc will use to connect to thos "
+"server.\n"
+"If this field is set in \"Default\" KVirc will use global proxy settings, if "
+"it is set in \"Direct connection\" KVirc will connect to this server without "
+"proxy. You can define new proxy server in global options' \"Proxy servers\" "
+"menu.</center>"
+msgstr ""
+"<center>Ezzel a <b>proxy</b>val fog a KVIrc kapcsolódni a szerverre.\n"
+"Ha ez a mező \"Alapértelmezett\"-re van állítva, a KVIrc a globálist proxy "
+"beállításokat fogja használni. Ha \"Közvetlen kapcsolat\"van megadva, akkor "
+"a KVIrc közvetlenül a szerverhez fog kapcsolódni proxy nélkül.Új proxy "
+"szervereket a \"Proxy szerverek\" résznél adhatsz meg.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:729
+msgid "Default"
+msgstr "Alapértelmezett"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:730
+msgid "Direct connection"
+msgstr "Közvetlen kapcsolat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:746
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:28
+msgid "Connection"
+msgstr "Kapcsolat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:758
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to this server has been established. To add a channel, type its "
+"name in the text input below and click \"<b>Add</b>\".</center>"
+msgstr ""
+"<center>Itt megadhatod azokat a csatornákat, amire a KVIrc fellépjen, miután "
+"létrehozta a kapcsolatot a szerverrel. Csatorna hozzáadásához írd be a "
+"csatorna nevét és kattints a \"<b>Hozzád</b>\" gombra.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:776
+msgid ""
+"<center>The following commands will be executed after a connection has been "
+"established.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote pass secret</tt> instead of <tt>/quote pass secret</"
+"tt>).<br>KVIrc will first send the USER command, then eventually PASS and "
+"NICK and then execute this command sequence.<br>This is particularly useful "
+"for IRC bouncers that require login commands.</center>"
+msgstr ""
+"<center>Ezek a parancsok fognak lefutni, amikor a KVIrc létrehozta a "
+"kapcsolatot a szerverrel. <br><b>Fontos:</b> a parancsokat csak parancskezdő "
+"perjel <b>nélkül</b> használd. (pl.: <tt>msg jelszó titkos</tt> a<tt>/msg "
+"jelszó titkos</tt> helyett!.)<br>A KVIrc elősször a USER parancsot hajtja "
+"végre, majd utána a PASS és a NICK elküldése következik (belépéskor), majd "
+"mindezek után ez a kódblokk fut le.<br> Ez általában olyankor hasznos ha egy "
+"BNC-re való csatlakozáskor szükség van plussz parancsokra.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:796
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"this server.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote privatelog</tt>)."
+"<br>This is useful for automatically opening queries, setting variables, etc."
+"</center>"
+msgstr ""
+"<center>A következő parancsok akkor futnak le, ha sikeresen feljelentkezett "
+"a hálózatra.<br><b>Important:<<br><b>Fontos:</b> a parancsokat csak "
+"parancskezdő perjel <b>nélkül</b> használd. (pl.: <tt>msg jelszó titkos</tt> "
+"a<tt>/msg jelszó titkos</tt> helyett!)<br> Ezzel például automatikusan "
+"megnyithatsz privátokat, definiálhatsz változókat.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1041
+msgid "Server"
+msgstr "Szerver"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1042
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:73
+msgid "Description"
+msgstr "Meghatározás "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1054
+msgid ""
+"<center>This is the list of available IRC servers.<br>Right-click on the "
+"list to add or remove servers and perform other actions.<br>Double-click on "
+"a item for advanced options.</center>"
+msgstr ""
+"<center>Lista az elérhető IRC szerverekről.<br>Jobb klikk a listán, hogy új "
+"szervereket adj hozzá, vagy távolíts el, esetleg egyéb műveleteket végezz. "
+"<br>Kattints rá kétszer rá a Haladó beállítások eléréséhez.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1069
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1430
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1554
+msgid "New Network"
+msgstr "Új Hálózat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1077
+msgid "New Server"
+msgstr "Új Szerver"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1086
+msgid "Remove Network/Server"
+msgstr "Hálózat/Szerver eltávolítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1098
+msgid "Copy Server"
+msgstr "Szerver Másolása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1107
+msgid "Paste Server"
+msgstr "Szerver Beillesztése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1446
+msgid "Import List"
+msgstr "Lista Importálása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1125
+msgid "Active Configuration"
+msgstr "Aktív Konfiguráció"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1332
+msgid "Server:"
+msgstr "Szerver: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1130
+msgid ""
+"<center>This is the name of the currently selected server or network</center>"
+msgstr "<center>Ez a kiválasztott szerver vagy hálózat neve.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1153
+msgid "Advanced..."
+msgstr "Haladó..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1156
+msgid "<center>Click here to edit advanced options for this entry</center>"
+msgstr ""
+"<center>Kattints ide, hogy a haladó beállításokat elérd ehhez az elemhez.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1159
+msgid "Connect &Now"
+msgstr "Kapcsolódás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1164
+msgid ""
+"<center>Hit this button to connect to the currently selected server.</center>"
+msgstr ""
+"<center>Kattints ide, hogy elkezdj csatlakozni a kiválasztott szerverhez.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1177
+msgid ""
+"<center>This button shows a list of recently used servers. It allows you to "
+"quickly find them in the list.</center>"
+msgstr ""
+"<center>Ez egy lista a mostanában használt szerverekről. Így könnyedén "
+"megtalálhatod ezeket a listában.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1181
+msgid "Show this dialog at startup"
+msgstr "Párbeszédablak megjelenítése indításkor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1184
+msgid ""
+"<center>If this option is enabled, the Servers dialog will appear every time "
+"you start KVIrc</center>"
+msgstr ""
+"<center>Engedélyezésnél ez az ablak meg fog jelenni minden indításkor.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1335
+msgid "Network:"
+msgstr "Hálózat: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1345
+msgid "No selection"
+msgstr "Nincs kijelölt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1364
+msgid "UnknownNet"
+msgstr "IsmertelenHálózat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1431
+msgid "Remove Network"
+msgstr "Hálózat Eltávolítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1434
+msgid "&New Server"
+msgstr "Új szerver"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1435
+msgid "Re&move Server"
+msgstr "Szerver eltávolítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1437
+msgid "&Copy Server"
+msgstr "Szerver másolása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1439
+msgid "&Paste Server"
+msgstr "Szerver beillesztése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1444
+msgid "Clear List"
+msgstr "Lista Törlése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1483
+msgid ""
+"Oops... something weird happened:<br>Can't find any module capable of "
+"importing servers."
+msgstr ""
+"Hűha, valami furcsa történt: <br>Nem találok kezelőmodult, ami importálni "
+"tudna szervereket."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1500
+msgid ""
+"Oops... something weird happened:<br>Can't find the module that was capable "
+"of this import action. :("
+msgstr ""
+"Hűha, valami furcsa történt: <br>Nem találok kezelőmodult, ami képes lenne "
+"importálni ezeket a dolgokat.... :("
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1574
+msgid "irc.unknown.net"
+msgstr "irc.ismeretlen.net"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:39
+msgid "Disable parser warnings"
+msgstr "Értelmező figyelmeztetéseinek tiltása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:40
+msgid "Disable broken event handlers"
+msgstr "Hibás eseménykezelők tiltása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:41
+msgid "Kill broken timers"
+msgstr "Hibás időzítők (timers) kilövése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:42
+msgid "Send unknown commands as /RAW"
+msgstr "Ismeretlen parancs küldése /RAW -ként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:46
+msgid "Automatically unload unused modules"
+msgstr "Nem használt modulok kilövése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:47
+msgid "Ignore module versions (dangerous)"
+msgstr "Modul verziók figyelmen kívül hagyása (veszélyes)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:51
+msgid "Relay errors and warnings to debug window"
+msgstr "Hibák és figyelmeztetések küldése a Debug ablakba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:52
+msgid "Create minimized debug window"
+msgstr "Minimalizált Debug ablak létrehozása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:59
+msgid "Nickname alternatives"
+msgstr "Név alternatívák"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:62
+msgid ""
+"<center>Here you can choose up to three nicknames alternative to the primary "
+"one. KVIrc will use the alternatives if the primary nick is already used by "
+"someone else on a particular IRC network.</center>"
+msgstr ""
+"<center>Itt kiválaszthatsz három alternatív becenevet, az elsődleges után. A "
+"KVIrc ezeket az alternatívákat fogja használni, ha valaki már az elsődleges "
+"neveddel fent van az adott hálózaton.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:69
+msgid "Alt. Nickname 1:"
+msgstr "Alt. Név 1:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:76
+msgid "Alt. Nickname 2:"
+msgstr "Alt. Név 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:83
+msgid "Alt. Nickname 3:"
+msgstr "Alt Név 3:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Ok"
+msgstr "Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:130
+msgid "Avatar Download - KVIrc"
+msgstr "Avatar Letöltés - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:136
+msgid "<center>Please wait while the avatar is being downloaded</center>"
+msgstr "<center>Kérlek várj, amíg letöltöm az avatart.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:139
+msgid "Abort"
+msgstr "Megszakít"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:170
+msgid "Failed to start the download"
+msgstr "Letöltés megkezdése sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:184
+msgid "Download aborted by user"
+msgstr "Letöltés megszakítva a felhasználó által"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:213
+msgid "Choose Avatar - KVIrc"
+msgstr "Válassz Avatart - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:219
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+"Kérlek válassz ki egy avatar képet. A kép teljes elérési útja szükséges, "
+"vagy egy weben lévő képet is használhatsz.<br> Ha szeretnél egy helyi képet "
+"használni kattints a \"<b>Tallózás</b>\" gombra, hogy fájlok közül "
+"választhass. <br>A webcímet, ahol a kép található, manuálisan kell megadnod."
+"<br>(beleértve a<b>http://</b> részt is)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:237
+msgid "&Browse..."
+msgstr "Tallózás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:275
+msgid "Choose an Image File - KVIrc"
+msgstr "Képfájl kiválasztása - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:316
+msgid "Basic Properties"
+msgstr "Alapvető Tulajdonságok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:323
+msgid ""
+"<center>Your <b>nickname</b> is your primary form of identification on IRC."
+"<br>Since servers cannot accept multiple users sharing the same nickname "
+"(case insensitive), you can provide alternative nicknames to be used in "
+"casethe server refuses to accept the default one.</center>"
+msgstr ""
+"<center>A <b>beceneved</b> az elsődleges, ami alapján felismernek IRC-en."
+"<br>Amióta a szervereken nem engedélyezett egy nick két használata (kis-"
+"nagybetű különbséggel) , megadhatsz alternatív Neveket is, amit a KVIrc "
+"használhat, ha a szerver visszautasítaná az alapértelmezett nevet.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:331
+msgid "Alternatives..."
+msgstr "Alternatívák..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:337
+msgid ""
+"<center>This is the <b>username</b> that you will use to connect to the "
+"server.<br>In the past, it was used as a form of authentication, but it "
+"normally has no special use now.<br>In addition to your nickname, you are "
+"identified on IRC by your <b>username@hostname</b>.</br>Basically, you can "
+"enter any word you like here. :D</center>"
+msgstr ""
+"<center>Ez a <b>felhasználónév</b> amit használni fogsz kapcsolódáskor a "
+"szerveren.<br> Régebben ezt használták azonosításra, de már semmilyen "
+"jelentős szerepe nincsen.<br>Emellett a Neveden kívül ezzel azonosítanak IRC-"
+"en :<b>felhasználónév@hosztnév</b>.</br>Alapjában véve ide azt írsz, amit "
+"akarsz. :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:346
+msgid ""
+"<center>This text will appear when someone does a /WHOIS on you.<br>It is "
+"intended to be your real name, but people tend to put random quotes and "
+"phrases here too.</center>"
+msgstr ""
+"<center>Ez a szöveg fog megjelenni, ha valaki \"lewhoisol\" a /WHOIS "
+"paranccsal. <br> Ez lehet akár a polgári neved, de sokan ide egy nagyon "
+"rövid szösszenetet/szólást írnak.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:351
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+"A mező kitöltése opcionális, ez fog megjelenni, ha valaki CTCP USERINFO-t "
+"kér tőled."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:356
+msgid "Profile"
+msgstr "Profil"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:361
+msgid "Age:"
+msgstr "Kor:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:366
+msgid "Here you can specify your age."
+msgstr "Itt megadhatod a korodat."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:401
+msgid "Unspecified"
+msgstr "Nem meghatározott"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:391
+msgid "Gender:"
+msgstr "Nem:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:396
+msgid "Here you can specify your gender."
+msgstr "Itt megadhatod a nemedet."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:402
+msgid "Female"
+msgstr "Nő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:403
+msgid "Male"
+msgstr "Férfi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:414
+msgid "Location:"
+msgstr "Hely:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:417
+msgid ""
+"You can describe here your approximate physical location. Something like "
+"\"Region, Country\" will be ok. Please note that this information will be "
+"viewable by anyone so putting more data (like the exact address), generally, "
+"<b>is not a good idea</b>."
+msgstr ""
+"Itt meghatározhatod a fizikai tartózkodási helyedet. Valami ilyesmi, hogy "
+"\"Ország, Város\" tökéletesen megfelel. Arra ügyelj, hogy ez az információ "
+"látható lesz bárki számára, ezért több adat (pontos cím) általában <b>nem "
+"túl jó ötlet</b>."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:422
+msgid "Languages:"
+msgstr "Beszélt nyelvek:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:425
+msgid ""
+"You can put here the short names of the languages you can speak. An example "
+"might be \"EN,IT\" that would mean that you speak both Italian and English."
+msgstr ""
+"Itt meghatározhatod a rövid neveit az általad beszélt nyelveknek. Például "
+"írhatsz \"HU,GER\"-t is, ami azt jelenti, hogy beszélsz Magyarul és Németül "
+"is egyaránt."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:429
+msgid "Other:"
+msgstr "Egyéb:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:432
+msgid ""
+"You can put here some additional personal data. It might be a funny quote or "
+"your homepage url... Please note that this information will be viewable by "
+"anyone so <b>don't put any sensible data</b> (passwords, telephone or credit "
+"card numbers)."
+msgstr ""
+"Ide tehetsz valami plussz személyes adatot. Ez lehet egy vicc, idézet vagy "
+"akár a weblapod címe is. Arra figyelj, hogy ez az információ mindenki "
+"számára elérhető lesz, így ne tegyél ide semmilyen <b>túlságosan "
+"magánjellegű</b> adatot. (pl.: jelszó, telefonszám, bankkártyaszám)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:502
+msgid ""
+"Here you can choose your avatar image. It will be visible<br>by other people "
+"that request it. Choose a nice image of yourself,<br>possibly avoiding "
+"obscenity and offending images. It is a good idea<br>to choose a relatively "
+"small file (say 150 Kb max) because<br>most clients have a limit on the size "
+"of avatars being downloaded.<br>The image also should be smaller than "
+"800x600 pixels since<br>it will have to be viewable in everyone's monitor."
+msgstr ""
+"Itt tudod kiválasztani az avatar képedet. Ez lesz látható azoknak,<br> akik "
+"lekérik ezt. Válasz egy normál képet magadról (vagy akármi másról),<br> hogy "
+"elkerüld az obszcén és sértő támadásokat a kép ellen. Az igazán jó <br> "
+"avatar egy maximum 150 Kb méretű fájl, mivel a legtöbb kliens limitála a "
+"<br> letölthető avatarok méretét.<br>A jó vatar képnek kisebbnek kell "
+"lennie, mint 800x600 képpont, így más is<br> megtekintheti azt alacsonyabb "
+"felbontású monitoron."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:511
+msgid "Use avatar"
+msgstr "Avatar használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:537
+msgid "Choose..."
+msgstr "Kiválaszás..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:598
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:637
+msgid "Failed to Load Avatar - KVIrc"
+msgstr "Avatar betöltése sikertelen - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:599
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:638
+msgid ""
+"Failed to load the avatar image.<br>It may be an unaccessible file or an "
+"unsupported image format."
+msgstr ""
+"Avatar betöltése sikertelen. <br>Ez lehet azért, mert a fájl nem elérhető "
+"vagy nem támogatott a formátuma."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:606
+msgid "Failed to download the avatar image.<br><b>%Q</b>"
+msgstr "Avatar letöltése sikertelen. <br><b>%Q</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:608
+msgid "Avatar Download Failed - KVIrc"
+msgstr "Avatar letöltése sikertelen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:649
+msgid "Avatar Might Be Too Big - KVIrc"
+msgstr "Az avatar mérete túl nagy - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:650
+msgid ""
+"The avatar you have choosen is bigger than 1024x768 pixels.<br>Such a big "
+"image will not be seen on all the user monitors<br>and will probably be "
+"scaled by the remote clients with poor quality<br>algorithms to improve "
+"performance. You *should* scale it manually<br>to a sane size (like 800x600) "
+"or choose a different image."
+msgstr ""
+"Az általad kiválasztott avatar mérete nagyobb, mint 1024x768 pixel.<br> "
+"Ekkora képet nem minden felhasználó tud megjeleníteni,<br> és valószínűleg a "
+"kliens átméretezi egy nem túl hatékony <br> algoritmussal a teljesítmény "
+"növelése érdekében.<br> Legjobb, ha átméretezed egy kisebb méretre (kb "
+"800x600)<br> vagy válassz egy más képet helyette."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:688
+msgid "Default Messages"
+msgstr "Alapértelmezett Üzenetek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:691
+msgid "Part message:"
+msgstr "Lelépő üzenet (csat):"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:695
+msgid ""
+"<center>This is the default part message that will be used when you<br>leave "
+"a channel by closing a channel window.</center>"
+msgstr ""
+"<center>Alapértelmezett lelépő üzenet, amit a KVIrc akkor használ, ha <br> "
+"elhagysz egy csatornát, az ablaka bezárásakor.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:699
+msgid "Quit message:"
+msgstr "Kilépő üzenet:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:702
+msgid ""
+"<center>This is the default quit message that will be used when you<br>quit "
+"your IRC session by closing the console window or disconnecting by pressing "
+"the disconnect button.</center>"
+msgstr ""
+"<center>Ez az alapértelmezetten megjelenő kilépő üzenet, amikor <br>kilépsz "
+"az IRC környezetből, a konzol ablakának bezárásával vagy a Lecsatlakozás "
+"gomb megnyomásával.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:42
+msgid "Open Query For"
+msgstr "Privát nyitása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:40
+msgid "Private messages"
+msgstr "Privát üzenetekre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:46
+msgid ""
+"<center>This option enables query window creation when a private message "
+"(PRIVMSG) is received.<br>If you disable this, private messages will be "
+"shown in the active window or a common channel.</center>"
+msgstr ""
+"<center>Az opció engedélyezi, hogy külön ablakot nyison a KVIrc, abeérkező "
+"Privát üzenetnek.<br> Ha letiltod az üzenetek az aktív ablakban vagy egy "
+"közös csatornán jelennek meg.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:42
+msgid "Private notices"
+msgstr "Privát értesítőkre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:55
+msgid ""
+"<center>This option enables query window creation when a private notice "
+"(NOTICE) is received.<br>If you disable this, private notices will be shown "
+"in the active window or a common channel.</center>"
+msgstr ""
+"<center>Ezzel az opcióval engedélyezed, hogy automatikusan külön ablak "
+"nyíljanak az értesítések. <br>Ha ezt letiltod, az aktív ablakban lesznek "
+"megjelenítve vagy egy közös csatornán.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:62
+msgid "Always open queries as minimized"
+msgstr "Új privátok megnyitása a háttérben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:66
+msgid ""
+"<center>This option causes newly created query windows to be immediately "
+"minimized.<br>Enable this if you don't like queries popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+"<center>Ezzel az opcióval automatikusan minimalizálva lesz a Privát üzenet "
+"ablaka.<br>Engedélyezd, ha már unod, hogy felugrik egy Privát Ablak amikor "
+"valamit írsz egy csatornára :D. </center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:74
+msgid "Enable target user tracking"
+msgstr "Felhasználó követése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:77
+msgid ""
+"<center>This option will enable target user tracking.<br>Some actions of the "
+"target user (e.g. joins and parts) will be displayed in the window.<br></"
+"center>"
+msgstr ""
+"<center>Ezzel az opcióval figyelheted, hogy merre jár a felhasználó.<br> "
+"Néhány akció (fel-,lelépések) meg lesz jelenítve az ablakban.<br></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:83
+msgid "Flash system taskbar on new query message"
+msgstr "Rendszer tálca villogjon, ha új Privát üzenet érkezik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:86
+msgid ""
+"<center>This option causes the system taskbar entry for KVIrc to flash when "
+"a new query message is received and the KVIrc window is not the active.</"
+"center>"
+msgstr ""
+"<center>Ezzel az opcióval a rendszer tálca eleme elkezd villogni, amikor egy "
+"új üzenet érkezik és nem a KVIrc az aktív ablak.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:91
+msgid "Popup notifier on new query message"
+msgstr "Értesítő popup, ha új üzenet érkezik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:94
+msgid ""
+"<center>This option causes a small notifier window to pop up in the low "
+"right corner of the screen when a new message is received and the KVIrc "
+"window is not active.</center>"
+msgstr ""
+"<center>Ezzel egy kis értesítő ablak bekapcsolását engedélyezed, ami a "
+"képernyő jobb alsó sarokában jelenik meg, amikor új üzenetet kapsz és a "
+"KVIrc ablaka nem aktív.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:98
+msgid "Show information about query target at the top of the query"
+msgstr "Információk mutatása a Privát ablak tetején, a célról"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:101
+msgid ""
+"<center>This option enables query window information label. It can show you "
+"known information about query target at the top of the window.<br>Uncheck if "
+"you think,that it wastes your query space/</center>"
+msgstr ""
+"<center>Ez az opció engedélyezi a Privát ablak információs sávját. Ez "
+"mutatja számodra az ismert információkat a Privát üzenetek céljáról, az "
+"ablak tetején.<br>Ne engedélyezd, ha úgy gondolod, hogy csak a helyet "
+"foglalja</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:39
+msgid "Use global application font"
+msgstr "Globális alkalmazás betűtípusok használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:40
+msgid "Hide icons in Popup"
+msgstr "Popup ikonok rejtése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:41
+msgid "Global application font:"
+msgstr "Globális alkalmazás betűtípusa:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:67
+msgid "Enable fake transparency"
+msgstr "Hamis átlátszóság engedélyezése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:71
+msgid ""
+"<center>This option makes all KVIrc windows look transparent.<br>You must "
+"choose a blending background image to below or check the \"Use KDE desktop "
+"for transparency\" option.</center>"
+msgstr ""
+"<center>Ez az opció minden KVIrc ablakot átlátszónak mutat.<br>Ki kell "
+"választanod egy átlátszónak ható hátteret vagy alatta a \"KDE asztal "
+"használata átlátszóságnál\" opciót.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:77
+msgid ""
+"<center>This option makes all KVIrc windows look like transparent.<br>You "
+"must choose a blending background image to below.</center>"
+msgstr ""
+"<center>Ez az opció a KVIrcet úgy állítja be, hogy átlátszónak hasson. "
+"<br>Ehhez ki kell választani egy képet lentebb.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:83
+msgid "Child window opacity:"
+msgstr "Gyermek ablak átlátszósága:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:87
+msgid "Parent window opacity:"
+msgstr "Szülő ablak átlátszósága"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:91
+msgid "Blend color:"
+msgstr "Keverés színe: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:97
+msgid "Use KDE desktop for transparency"
+msgstr "KDE asztal használata átlátszóságnál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:102
+msgid "Keep in sync with KDE background changes"
+msgstr "Szinkronizáljon a KDE-vel háttérváltáskor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:111
+msgid "Transparency blend image:"
+msgstr "Átlátszóra keverendő kép:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:155
+msgid "Active Background"
+msgstr "Aktív Háttér"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:156
+msgid "Inactive Background"
+msgstr "Inaktív Háttér"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:157
+msgid "Active Text (Primary)"
+msgstr "Aktív Szöveg (Elsődleges)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:158
+msgid "Active Text (Secondary)"
+msgstr "Aktív Szöveg (Másodlagos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:159
+msgid "Inactive Text (Primary)"
+msgstr "Inaktív Szöveg (Elsődleges)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:160
+msgid "Inactive Text (Secondary)"
+msgstr "Inaktív szöveg (Másodlagos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:197
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:44
+msgid "Background"
+msgstr "Háttér"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:178
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:205
+msgid "Background Image"
+msgstr "Háttérkép"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:198
+msgid "Low-Contrast Foreground"
+msgstr "Alacsony kontrasztú Előtér"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:199
+msgid "Mid-Contrast Foreground"
+msgstr "Közepes Kontrasztú Előtér"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:200
+msgid "Active High-Contrast Foreground (Primary)"
+msgstr "Aktív Magas Kontrasztú Előtér (Elsődleges)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:201
+msgid "Active High-Contrast Foreground (Secondary)"
+msgstr "Aktív Magas Kontrasztú Előtér (Másodlagos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:202
+msgid "Inactive High-Contrast Foreground (Primary)"
+msgstr "Inaktív Magas Kontrasztú Előtér (Elsődleges)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:203
+msgid "Inactive High-Contrast Foreground (Secondary)"
+msgstr "Inaktív Magas Kontrasztú Előtér (Elsődleges)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:40
+msgid "Scaling in userlist"
+msgstr "Átméretezés felhasználólistában"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:41
+msgid "Scale avatar images in userlist (recommended)"
+msgstr "Avatar kép átméretezése felhasználólistában (ajánlott)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:43
+msgid ""
+"<center>This option will force KVIrc to scale avatars shown in the userlist."
+"<br>Avatars will be scaled to fit the constraints set below. Better keep "
+"this option on. :)</center>"
+msgstr ""
+"<center>Ez a beállítás utasítja a KVIrcet, hogy az avatarokat mutassa a "
+"felhasználói listában.<br>Az Avatarok automatikusan a megfelelő méretűre "
+"lesznek állítva. Jobb ha ez a beállítás be van kapcsolva :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:48
+msgid "Do not scale avatar if it is less than required size"
+msgstr "Ne méretezd az avatart, ha az kissebb mint a szükséges méret"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:59
+msgid "Image width:"
+msgstr "Kép szélessége:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:61
+msgid "Image height:"
+msgstr "Kép magassága:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:56
+msgid "Scaling on load (and in user tooltips)"
+msgstr "Átméretezés felhasználólistában"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:57
+msgid "Scale avatar images on image load"
+msgstr "Avatar kép átméretezése betöltéskor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:65
+msgid "Request CTCP"
+msgstr "CTCP kérés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:66
+msgid "Request missing avatars"
+msgstr "Hiányzó avatarok lekérése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:67
+msgid "Maximum requested file size:"
+msgstr "Maximálisan lekérhető fájl mérete:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to send a DCC GET request when someone "
+"sets an avatar and there is no cached copy available.</center>"
+msgstr ""
+"<center>Ez a beállítás utasítja a KVIrcet, hogy küldjön DCC GET kérést, "
+"amikor valaki beállít egy avatart, és nincs róla elérhető helyi másolat.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:74
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:317
+msgid " bytes"
+msgstr " bájt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:77
+msgid ""
+"<center>This is the maximum size for avatar images that will be "
+"automatically requested.<br>A reasonable value might be 102400 bytes (100 K)."
+"</center>"
+msgstr ""
+"<center>Ez a maximum mérete az avatarnak, ami automatikusan lekérésre kerül. "
+"<br>Ésszerű ennek az értéknek körülbelül 102400 bájtnak lennie (100 K).</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:83
+msgid "Automatically accept incoming avatars"
+msgstr "Bejövő avatarok automatikus elfogadása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:87
+msgid ""
+"<center>This option will cause KVIrc to auto-accept DCC SEND requests for "
+"incoming avatars.<br>If you're using the \"Request missing avatars\" option "
+"above, enabling this may by useful.<br>Avatars will be saved in the local "
+"KVIrc directory.</center>"
+msgstr ""
+"<center> Ezzel az opcióval a KVIRc automatikusan elfogadja a beérkező "
+"avatarokat.<br>Ha használod a \"Hiányzó avatarok lekérése\" lehetőséget "
+"lentebb, ennek az engedélyezése hasznos lehet<br>Az avatarok a helyi KVIrc "
+"könyvtárba lesznek elmentve.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:94
+msgid "Remember avatars for registered users"
+msgstr "Emlékezzen a regisztrált felhasználók avatarjára"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:99
+msgid ""
+"<center>Use a user's last known avatar by default (only for users that are "
+"registered).</center>"
+msgstr ""
+"<center>Használd a felhasználó legutolsó ismert avatarját "
+"alapértelmezettként (csak ha a felhasználó regisztrált)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:103
+msgid "Avatar offer timeout:"
+msgstr "Avatar kérés időtúllépése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:104
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:162
+msgid " sec"
+msgstr " mp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:107
+msgid ""
+"<center>This is the amount of time to make an avatar available for transfer "
+"when requested.<br>When someone sends a CTCP AVATAR request, KVIrc will "
+"reply with a CTCP AVATAR message containing the name and size of your avatar "
+"image.<br>A time-limited file offer is added for the image file to the "
+"requesting user.</center>"
+msgstr ""
+"<center>Az az időtartam, ami alatt az avatar elérhető adatátvitelre, kérés "
+"után. <br>Amikor valaki CTCP AVATAR kérést küld, a KVIrc válaszol egy CTCP "
+"AVATAR üzenettel, ami tartalmazza az avatarod nevét és méretét. "
+"<br>Időkorlátos fájl ajánlat hozzá lesz adva a képfájlhoz, amit a "
+"felhasználó kért.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:115
+msgid "Ignore requests if no avatar is set"
+msgstr "Kérés mellőzése, ha nincs avatar beállítva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:118
+msgid ""
+"This option will cause KVIrc to ignore channel CTCP AVATAR requests when you "
+"have no avatar set. This is usually a good practice since it helps in "
+"reducing traffic by not sending a reply that would be empty."
+msgstr ""
+"Csatorna CTCP AVATAR kérések mellőzése, ha nincs beállítva avatarod. Jó "
+"módszer a forgalom csökkentésére, ha nincs beállítva avatar."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:39
+msgid "Use online notify list"
+msgstr "Online értesítési lista használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:44
+msgid "Configuration"
+msgstr "Beállítások"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:45
+msgid "Show notifications in active window"
+msgstr "Értesítések mutatása az aktív ablakban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:50
+msgid "Flash window when users are going online"
+msgstr "Az ablak villogjon, ha egy felhasználó elérhető lesz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:55
+msgid "Popup notifier when users are going online"
+msgstr "Értesítő Popup, ha egy felhasználó elérhető"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:59
+msgid "Advanced configuration"
+msgstr "Haladó Beállítások"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:64
+msgid "Check USERHOST for online users"
+msgstr "USERHOST ellenőrzése az elérhetőeknél"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:69
+msgid "Use \"smart\" notify list manager"
+msgstr "\"Okos\" értesítési lista kezelő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:74
+msgid "Use the WATCH method if available"
+msgstr "Használd a WATCH eljárást, ha elérhető"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:79
+msgid "Check interval (in seconds)"
+msgstr "Időtúllépés ellenőrzése (mpben)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:85
+msgid "ISON delay (in seconds)"
+msgstr "ISON késleltetés (mpben)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:91
+msgid "USERHOST delay (in seconds)"
+msgstr "USERHOST késleltetés (mpben)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:96
+msgid ""
+"<p><b>Note:</b><br>The notify list is managed using the \"Registered Users\" "
+"settings.</p>"
+msgstr ""
+"<p><b>Figyelem:</b><br>Az értesítési lista a \"Regisztrált Felhasználók\" "
+"beállításai szerint működik.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:112
+msgid "Forcibly and completely disable the notifier"
+msgstr "Az értesítő Popup teljes letiltása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:115
+msgid ""
+"This is an option for the impatient: it allows to forcibly and permanently "
+"disable the notifier window. Please note that if this option is activated "
+"then the notifier will NOT popup even if all the other options around "
+"specify to use it in response to particular events. Also note that this "
+"option will make all the /notifier.* commands fail silently."
+msgstr ""
+"Ez egy lehetőség a türelmetlenek számára, ami lehetővé teszi, hogy teljesen "
+"letiltsák az értesítő ablakot. Vedd figyelembe, hogy ezzel az opcióval "
+"teljesen letiltod az Értesítőt. Ennek a kikapcsolásakor semmilyen formában "
+"nem fog megjelenni, még ha valamely beállítás kérné, akkor sem. Ennek az "
+"aktiválásakor a /notifier parancs és annak részei is mellőzve lesznek."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:123
+msgid "Disable notifier window flashing"
+msgstr "Értesítő ablak villogásának kikapcsolása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:124
+msgid "Disable notifier window fade effect"
+msgstr "Értesítő ablak halványulásának tiltása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:39
+msgid "Default away message:"
+msgstr "Alapértelmezett Távol üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:41
+msgid "User input exits away mode"
+msgstr "Bevitelnél kilépés Távol üzemmódból"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:43
+msgid "Away Nickname"
+msgstr "Távol üzemmódnál használt Név"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:44
+msgid "Change nickname on away"
+msgstr "Név változtatása Távol üzemmódban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:47
+msgid "Use automatic nickname ([5 letters]AWAY)"
+msgstr "Automatikus Név használata ([5 karakter]AWAY)"
+
+# Nem lehet lefordatani, marha furcsa hiba amikor átírnám a zárójelezett részt kbabel hibának jelenti
+# Cant translate, when i translate a word "means" in the brackets, kbabel says its an error ~ Fiber
+# its around: %nick% means / valahol a két szó között
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:55
+#, c-format
+msgid "Custom nickname (%%nick%% means a current nick):"
+msgstr "Választott nicknév (%%nick%%) jelenti az aktuális nevet): "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/libkvioptions.cpp:199
+msgid "No such options page class name %Q"
+msgstr "Nincs ilyen opció lap osztály név%Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:47
+msgid "Use system URL handlers"
+msgstr "Rendszer URL kezelőinek használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:50
+msgid "<b>http://</b> handler command:"
+msgstr "<b>http://</b> kezelő parancs:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:51
+msgid "<b>https://</b> handler command:"
+msgstr "<b>https://</b> kezelő parancs:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:52
+msgid "<b>ftp://</b> handler command:"
+msgstr "<b>ftp://</b> kezelő parancs:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:53
+msgid "<b>mailto:</b> handler command:"
+msgstr "<b>mailto:</b> kezelő parancs:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:54
+msgid "<b>file://</b> handler command:"
+msgstr "<b>file://</b> kezelő parancs:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:55
+msgid "Unknown protocol handler command:"
+msgstr "Ismeretlen protokollt kezelő parancs:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:61
+msgid "Use proxy"
+msgstr "Proxy használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:65
+msgid "Proxy"
+msgstr "Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:76
+msgid ""
+"<center>This is the list of available proxy servers.<br>Right-click on the "
+"list to add or remove proxies.</center>"
+msgstr ""
+"<center>Ebben a listában vannak az elérhető proxyk<br> Jobb klikkel tudsz "
+"hozzáadni vagy eltávolítani szervereket.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:90
+msgid "New Proxy"
+msgstr "Új Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:99
+msgid "Remove Proxy"
+msgstr "Proxy Eltávolítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:111
+msgid "Proxy:"
+msgstr "Proxy: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:131
+msgid "Protocol:"
+msgstr "Protokoll:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:336
+msgid "&New Proxy"
+msgstr "Új Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:337
+msgid "Re&move Proxy"
+msgstr "Proxy Eltávolítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:71
+msgid "Pattern"
+msgstr "Minta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:72
+msgid "MIME Type"
+msgstr "MIME típus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:87
+msgid "MIME type:"
+msgstr "MIME típus: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:92
+msgid "File pattern:"
+msgstr "Fájl minta: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:97
+msgid "Magic bytes:"
+msgstr "Mágikus bájtok: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:102
+msgid "Save path:"
+msgstr "Mentés útvonala: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:107
+msgid "Local open command:"
+msgstr "Helyi megnyitás parancsa: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:112
+msgid ""
+"<center>This field contains the command to execute to open a local file."
+"<br><tt>$0</tt> is used in place of the filename</center>"
+msgstr ""
+"<center>Ez a mező tartalmazza a parancsot, ami megnyit egy helyi fájlt."
+"<br><tt>$0</tt> a fájlnév helyét határozza meg</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:116
+msgid "Remote open command:"
+msgstr "Távoli megnyitás parancsa: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:121
+msgid ""
+"<center>This field contains the command to execute when automatically "
+"opening a received file.<br><tt>$0</tt> is used in place of the filename</"
+"center>"
+msgstr ""
+"<center>Ez a mező tartalmazza a parancsot, amivel megnyitod a beérkezett "
+"fájlt.<br><tt>$0</tt> a fájlnév helyét jelöli</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:125
+msgid "Icon"
+msgstr "Ikon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:134
+msgid "&New"
+msgstr "Új"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:138
+msgid "Re&move"
+msgstr "Eltávolítás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:184
+msgid "[Unknown Media Type]"
+msgstr "[Ismeretlen Médiatípus]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:230
+msgid "New Media Type"
+msgstr "Új Médiatípus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:53
+msgid "Nickname Colors"
+msgstr "Név színek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:56
+msgid "Channel owner:"
+msgstr "Csatorna tulajdonos:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:57
+msgid "Channel admin:"
+msgstr "Csatorna admin:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:58
+msgid "Op:"
+msgstr "Op:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:59
+msgid "Half-op:"
+msgstr "Fél-op:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:60
+msgid "Voice:"
+msgstr "Voice:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:61
+msgid "User-op:"
+msgstr "Felhasználó-Op:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:62
+msgid "Away:"
+msgstr "Távol:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:66
+msgid "Use different color for own nick:"
+msgstr "Saját Névhez eltérő szín használata:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:81
+msgid "Draw nickname grid"
+msgstr "Név Rács rajzolása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:83
+msgid "Grid color:"
+msgstr "Rács színe:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:90
+msgid "Grid type:"
+msgstr "Rács típusa: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:94
+msgid "3D Grid"
+msgstr "3D Rács"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:95
+msgid "3D Buttons"
+msgstr "3D Gombok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:96
+msgid "Plain Grid"
+msgstr "Egyszerű Rács"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:97
+msgid "Dotted Grid"
+msgstr "Pontozott Rács"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:131
+msgid "Horizontal Alignment:"
+msgstr "Vízszintes elhelyezés:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:135
+msgid "Vertical Alignment:"
+msgstr "Függőleges elhelyezés:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:231
+msgid "Show gender icons"
+msgstr "Nemek mutatása ikonkkal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:232
+msgid "Show user channel icons"
+msgstr "Csatorna ikonok használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:233
+msgid "Show user channel activity indicator"
+msgstr "Csatorna aktivitás-kijelző használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:234
+msgid "Hide users label"
+msgstr "Felhasználók elrejtése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:235
+msgid "Enable user tooltips"
+msgstr "Eszköztippek mutatása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:236
+msgid "Hide avatars"
+msgstr "Avatarok rejtése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:79
+msgid "Use flood protection (recommended)"
+msgstr "Flood védelem használata (ajánlott)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:81
+msgid ""
+"<center>This option makes KVIrc only respond to a limited number of CTCP "
+"requests within a specified time interval, to prevent \"flooding\" CTCP "
+"messages.</center>"
+msgstr ""
+"<center>Ez korlátozza a CTCP kéréseket egy megadott időtartamon belül,ami "
+"így megakadályozza a CTCP floodoló üzeneteket.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:83
+msgid "Allow up to:"
+msgstr "Engedélyezés:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:84
+msgid " requests"
+msgstr "kérés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:86
+msgid ""
+"<center>Minimum value: <b>0 requests</b><br>Maximum value: <b>10000 "
+"requests</b></center>"
+msgstr ""
+"<center>Minimum: <b>0 kérés</b><br>Maximum: <b>10000 kérés</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:89
+msgid "within:"
+msgstr "időn belül:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:92
+msgid ""
+"<center>Minimum value: <b>1 sec</b><br>Maximum value: <b>3600 sec</b></"
+"center>"
+msgstr "<center>Minimum: <b>1 mp</b><br>Maximum: <b>3600 mp</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:96
+msgid "Ignored Requests"
+msgstr "Mellőzött Kérések"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:97
+msgid "PING"
+msgstr "PING"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:98
+msgid "FINGER"
+msgstr "FINGER"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:99
+msgid "CLIENTINFO"
+msgstr "CLIENTINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:100
+msgid "USERINFO"
+msgstr "USERINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:101
+msgid "VERSION"
+msgstr "VERZIÓ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:102
+msgid "SOURCE"
+msgstr "SOURCE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:103
+msgid "TIME"
+msgstr "IDŐ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:104
+msgid "PAGE"
+msgstr "PAGE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:105
+msgid "AVATAR"
+msgstr "AVATAR"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:106
+msgid "DCC/TDCC"
+msgstr "DCC/TDCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:131
+msgid "General Preferences"
+msgstr "Általános Beállítások"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:134
+msgid "Theme Preferences"
+msgstr "Kinézet beállítások"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:136
+msgid "KVIrc Preferences"
+msgstr "KVIrc Beállítások"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:139
+msgid ""
+"This dialog contains a set of KVIrc settings.<br> Use the icons on the left "
+"to navigate through the option pages. The text box in the bottom left corner "
+"is a small search engine. It will highlight the pages that contain options "
+"related to the search term you have entered."
+msgstr ""
+"Ez a párbeszédablak tartalmazza a KVIrc beállításait.<br> Használd a bal "
+"oldali ikonokat a beállításokon belüli navigáláshoz. A bal lenti sarokban "
+"lévő szövegdoboz egy gyorskereső, amivel könnyebben rátalálhatsz egy "
+"funkcióra, ha beírod a nevét."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:147
+msgid ""
+"Many settings have tooltips that can be shown by holding the cursor over "
+"their label for a few seconds."
+msgstr ""
+"Rengeteg beállításnak van saját segítség opciója, amit pár másodpercig az "
+"egérkurzor felette hagyásával jeleníthetsz meg."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:152
+msgid ""
+"When you have finished, click \"<b>OK</b>\" to accept your changes or "
+"\"<b>Cancel</b>\" to discard them. Clicking \"<b>Apply</b>\" will commit "
+"your changes without closing the window."
+msgstr ""
+"Ha végeztél, kattints az \"<b>OK</b>\" gombra, hogy beállításd a "
+"változtatásokatvagy a \"<b>Mégsem</b>re\", hogy elvesd őket. Az "
+"\"<b>Alkalmaz</b>\" beállítja a változtatásokat anélkül, hogy bezárná az "
+"ablakot."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:217
+msgid ""
+"<p>This is the search tool for this options dialog.</p><p>You can enter a "
+"search term either in your native language or in english and press the "
+"button on the right. The pages that contain some options related to the "
+"search term will be highlighted and you will be able to quickly find them.</"
+"p><p>Try \"nickname\" for example.</p>"
+msgstr ""
+"<p>Ez egy mini-kereső, hogy könnyen megtaláld a beállításokat.</p> "
+"<p>Megadhatsz szavakat magyarul vagy angolul, és nyomd le a mellette lévő "
+"ikont. Azok az oldalak, amelyek hasonlóságot mutatnak a megadott szavakkal "
+"ki lesznek emelve, hogy könnyedén megtaláld őket.</p><p>Próbáld ki például "
+"az \"avatar\" szóval.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:249
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:61
+msgid "Close this dialog, accepting all changes."
+msgstr "Párbeszédablak bezárása, összes változás érvényesítése."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:255
+msgid "&Apply"
+msgstr "&Alkalmaz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:256
+msgid "Commit all changes immediately."
+msgstr "Minden változás alkalmazása azonnal."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:69
+msgid "Close this dialog, discarding all changes."
+msgstr "Párbeszédablak bezárása, összes változás elvetése."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:149
+msgid ""
+"This table contains the text icon associations.<br>KVirc will use them to "
+"display the CTRL+I escape sequences and eventually the emoticons."
+msgstr ""
+"Ez egy tábla, a szöveges ikonok hozzárendeléséről.<br> A KVIrc ezeket "
+"jeleníti meg a \"CTRL+I azonosító\" után."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:165
+msgid "Add"
+msgstr "Hozzáadás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:169
+msgid "Delete"
+msgstr "Törlés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:191
+msgid "unnamed"
+msgstr "névtelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:53
+msgid "Enable word highlighting"
+msgstr "Szó kiemelés engedélyezése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:55
+msgid "Words to highlight:"
+msgstr "Kiemelendő szavak:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:57
+msgid "Word splitters:"
+msgstr "Szó elválasztók:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:59
+msgid "Highlight messages containing my nickname"
+msgstr "Üzenetek kiemelése, amik a Nevemet tartalmazzák"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:61
+msgid ""
+"<center>If this option is enabled, KVIrc will highlight any user message "
+"containing your current nickname</center>"
+msgstr ""
+"<center>Ha ez engedélyezve van, a KVirc ki fog emelni minden felhasználói "
+"üzenetet ami tartalmazza az aktuális nevedet</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:63
+msgid "Flash the system taskbar entry on highlighted messages"
+msgstr "A rendszer tálcája villogjon kiemelt üzenetnél"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:65
+msgid ""
+"<center>If this option is enabled, KVIrc will (attempt to) flash the system "
+"taskbar entry when a highlighted message is printed and KVIrc is not the "
+"active window</center>"
+msgstr ""
+"<center>Ha ez engedélyezve van a KVIrc megpróbálja a tálcán jelezni "
+"villogással, hogy kiemelt üzenetet észlelt, és az nem az aktív ablakban van. "
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:67
+msgid "Popup the notifier window on highlighted messages"
+msgstr "Értesítő előugrása kiemelt üzeneteknél"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:69
+msgid ""
+"<center>If this option is enabled, KVIrc will popup a little notifier window "
+"in the low right corner of your desktop when a highlighted message is "
+"printed and KVIrc is not the active window</center>"
+msgstr ""
+"<center>Ha ez engedélyezve van a KVIrc megjelenít egy kis értesítő ablakot a "
+"jobb alsó sarokban, amikor kiemelt szöveget észlel, és a KVIrc ablaka éppen "
+"nem aktív.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:91
+msgid "Alert Restrictions"
+msgstr "Korlátozási figyelmeztetés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:92
+msgid "Restrict alert"
+msgstr "Szigorú figyelmeztettés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:94
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if a "
+"normal message is received in a channel.<br>Actions like joins, parts and "
+"mode changes will be ignored.<br> This is useful if you are in channels with "
+"a high rate of traffic and only want to be alerted for messages that are "
+"interesting to you.</center>"
+msgstr ""
+"<center>Ha ez engedélyezve van a KVIrc csak normál csatornára érkező "
+"üzeneteknél értesít <br> A csatlakozás, elhagyás és módváltásokat figyelmen "
+"kívül fogja hagyni.<br> Ez leginkább akkor hasznos, ha olyan csatornán vagy "
+"aminek nagy a forgalma, viszont téged kifejezetten csak néhány kiemelt "
+"üzenet érdekel. </center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:96
+msgid "Alert for highlighted words"
+msgstr "Értesítés kiemelt szavaknál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:98
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which contain a word from the highlighted words list above.</center>"
+msgstr ""
+"<center>Ha ez engedélyezve van, a tálcán csak akkor figyelmeztet ha az "
+"üzenet tartalmazza a kiemelt szavak valamelyikét a fenti listából. </center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:100
+msgid "Alert for query messages"
+msgstr "Figyelmeztetés Privát üzenetnél"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:102
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which are shown in queries.</center>"
+msgstr ""
+"<center>Ha ez az üzenet engedélyezve van, a tálcán figyelmeztet a KVIrc, "
+"hogy új Privát üzeneted érkezett.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:107
+msgid "Use custom alert level"
+msgstr "Megadott figyelmeztetési szint használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:109
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if "
+"the specified alert level is reached.</center>"
+msgstr ""
+"<center>Ha ez engedélyezve van, a KVIrc csak akkor figyelmeztet a tálcán, ha "
+"a megadott szintet elérte az üzenet.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:111
+msgid "Minimum alert level:"
+msgstr "Minimális figyelmeztetési szint: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:114
+msgid ""
+"<center>This option sets the minimum alert level for the taskbar.</center>"
+msgstr "<center>Minimális figyelmeztetési szint beállítása a tálcára</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:213
+msgid "Output verbosity"
+msgstr "\"Beszédesség\" a felhasználó felé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:49
+msgid "Mute"
+msgstr "Néma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:50
+msgid "Quiet"
+msgstr "Csöndes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:51
+msgid "Normal"
+msgstr "Normál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:52
+msgid "Verbose"
+msgstr "Beszédes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:53
+msgid "Paranoic"
+msgstr "Szófosó"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:59
+msgid "Show in active window"
+msgstr "Mutasd az aktív ablakban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:60
+msgid "External messages"
+msgstr "Külső üzenetek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:61
+msgid "External CTCP replies"
+msgstr "Külső CTCP válaszok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:62
+msgid "Whois replies"
+msgstr "Whois válaszok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:63
+msgid "ChanServ and NickServ notices"
+msgstr "ChanServ és NickServ értesítőket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:64
+msgid "Invite messages"
+msgstr "Meghívó üzeneteket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:65
+msgid "Server replies"
+msgstr "Szerver válaszokat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:66
+msgid "Server notices"
+msgstr "Szerver értesítőket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:67
+msgid "Broadcast and WALLOPS messages"
+msgstr "Közvetítő (BC) és WallOp üzeneteket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:70
+msgid "Show extended server information"
+msgstr "Teljes szerver információ megjelenítése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:71
+msgid "Show server pings"
+msgstr "Szerver pingelésének megjelenítése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:72
+msgid "Show own parts in the console"
+msgstr "Saját lelépés jelzése konzolban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:73
+msgid "Show compact mode changes"
+msgstr "Kompakt mód váltásokat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:43
+msgid "Minimize on startup"
+msgstr "Minimalizálás indításnál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:44
+msgid "Confirm quit with active connections"
+msgstr "Kilépés megerősítése aktív kapcsolatnál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:45
+msgid "Remember window properties"
+msgstr "Emlékezzen az ablakbeállításokra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:50
+msgid "Disable splash screen"
+msgstr "Indítóképernyő tiltása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:54
+msgid "Enable visual effects"
+msgstr "Látványeffektek engedélyezése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:55
+msgid "Hide Channel window tool buttons by default"
+msgstr "Csatorna eszközeinek rejtése alapértelmezetten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:57
+msgid "Open Dialog Window For"
+msgstr "Párbeszédablak megnyitása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:58
+msgid "Preferences"
+msgstr "Beállítások"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:59
+msgid "Registered Users"
+msgstr "Regisztrált Felhasználók"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:149
+msgid "Servers"
+msgstr "Szerverek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.cpp:40
+msgid ""
+"This section contains irc tools<br><p>like<b> away, lag and logging system. "
+"</b> </p>"
+msgstr ""
+"Ez a szekció tartalmazza az irc eszközöket,<br><p>mint <b> Távollét, lag és "
+"naplózási rendszer.</b></p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:39
+msgid "On Disconnect"
+msgstr "Lecsatlakozáskor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:42
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:55
+msgid "Keep channels open"
+msgstr "Csatornák nyitvatartása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:44
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after disconnect."
+"</center>"
+msgstr ""
+"<center>Ez ezzel az opcióval a KVIrc nyitva tartja a csatornákat "
+"lecsatlakozáskor.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:47
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:60
+msgid "Keep queries open"
+msgstr "Privátok nyitvatartása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:49
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after disconnect.</"
+"center>"
+msgstr ""
+"<center>Ez ezzel az opcióval a KVIrc nyitva tartja a Privátokat "
+"lecsatlakozáskor.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:52
+msgid "On Unexpected Disconnect"
+msgstr "Váratlan Kapcsolatbontáskor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+"<center>Ez ezzel az opcióval a KVIrc nyitva tartja a csatornákat váratlan "
+"Kapcsolatbontáskor.<br> Javasolt, ha sűrűn szakadozik az Internetkapcsolat. "
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:62
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+"<center>Ez ezzel az opcióval a KVIrc nyitva tartja a Privátokat váratlan "
+"lecsatlakozáskor.<br>Javasolt, ha sűrűn szakadozik az Internetkapcsolat.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:65
+msgid "Rejoin channels after reconnect"
+msgstr "Újracsatlakozás csatornákhoz Kapcsolódáskor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:67
+msgid ""
+"<center>This option will cause KVIrc to rejoin channels after a successful "
+"reconnect attempt.</center>"
+msgstr ""
+"<center>Ez engedélyezi a KVIrcnek, hogy visszacsatlakozzon a csatornákra, "
+"sikeres újracsatlakozás után.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:69
+msgid "Reopen queries after reconnect"
+msgstr "Privátok újranyitása újrakapcsolódás után"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to reopen query windows after a "
+"successful reconnect attempt.</center>"
+msgstr ""
+"<center>Ez engedélyezi a KVIrcnek, hogy újra megnyissa a Privátokat, sikeres "
+"újracsatlakozás után.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:75
+msgid "Automatically reconnect"
+msgstr "Automatikus újrakapcsolódás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:77
+msgid ""
+"<center>This option will enable auto-reconnecting after an unexpected "
+"disconnect. An unexpected disconnect is the <b>termination</b> of a <b>fully "
+"connected IRC session</b> that was <b>not requested by the user</b> by the "
+"means of the QUIT message.<p><b>Warning:</b> If you use /RAW to send a QUIT "
+"message to the server, this option will not behave correctly, since does not "
+"detect the outgoing QUIT message and will attempt to reconnect after the "
+"server has closed the connection. For this reason, always use the /QUIT "
+"command to close your connections. This option may also behave incorrectly "
+"with bouncers that support detaching, in this case a solution could be to "
+"prepare an alias that sends the bouncer \"detach\" command immediately "
+"before the \"quit\" command.<br><tt>alias(bncdetach){ raw bouncer detach; "
+"quit; }</tt></p></center>"
+msgstr ""
+"<center>Ez az opció engedélyezi az automatikus újracsatlakozást egy váratlan "
+"kapcsolatbontás után. A váratlan <b>megszakítás, kapcsolatbontás</b> egy "
+"<b>kapcsolódott IRC környezet megszakadása</b>, amelyet <b>nem a felhasználó "
+"kért</b> egy kilépéssel / kapcsolatbontással.<p><b>Figyelem:</b> Ha a /RAW "
+"paranccsal lépsz ki, ez az opció nem fog tudni helyesen viselkedni mivel nem "
+"érzékeli, hogy szándékos kilépéssel van dolga. Ezért érdemesebb a normál /"
+"QUIT parancsot használni a kapcslatok lezárására. Ez az opció BNCknél "
+"szintén okozhat problémákat. érdemesebb előbb lecsatlakozni a bncről, majd "
+"aztán kilépni, vagy egy egyszerű alias segítségével:<br><tt>alias(bncdetach)"
+"{ raw bouncer detach; quit; }</tt></p></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:89
+msgid "Maximum attempts (0: unlimited):"
+msgstr "Próbálkozások száma (0 végtelen):"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:94
+msgid "Delay between attempts:"
+msgstr "Késleltetés a próbálkozások között: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:100
+msgid ""
+"<center>Minimum value: <b>0 sec</b><br>Maximum value: <b>86400 sec</b></"
+"center>"
+msgstr "<center>Minimum: <b>0 mp</b><br>Maximum: <b>86400 mp</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:123
+msgid "Certificate"
+msgstr "Hitelesítés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:125
+msgid "Use SSL certificate (PEM format only)"
+msgstr "SSL hitelesítés használata (csak PEM formátum)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:127
+msgid "Certificate location:"
+msgstr "Hitelesítés helye: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:130
+msgid "Certificate password:"
+msgstr "Hitelesítés jelszava: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:134
+msgid "Private Key"
+msgstr "Privát Kulcs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:135
+msgid "Use SSL private key"
+msgstr "Pirvát kulcsú SSL használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:137
+msgid "Private key location:"
+msgstr "Privát kulcs helye: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:140
+msgid "Private key password:"
+msgstr "Privát kulcs jelszava: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:146
+msgid "This executable has no SSL support."
+msgstr "Ez a verzió nem rendelkezik SSL támogatással"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:165
+msgid "Timeout Values"
+msgstr "Időtúllépés értékek "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:166
+msgid "Connect timeout:"
+msgstr "Kapcsolat időtúllépése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:168
+msgid "Outgoing data queue flush timeout:"
+msgstr "Kimenő adatírási időtúllépés:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:170
+msgid "Limit outgoing traffic"
+msgstr "Kimenő forgalom korlátozása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:171
+msgid "Limit to 1 message every:"
+msgstr "1 üzenet minden: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:173
+msgid " usec"
+msgstr "mikroszek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:175
+msgid ""
+"<center>Minimum value: <b>10000 usec</b><br>Maximum value: <b>10000000 usec</"
+"b></center>"
+msgstr ""
+"<center>Minimum: <b>10000 mikroszek</b><br>Maximum: <b>10000000 mikroszek</"
+"b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:179
+msgid "Network Interfaces"
+msgstr "Hálózati Eszközök"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:181
+msgid "Bind IPv4 connections to:"
+msgstr "IPv4 kapcsolat hozzárendelése: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:185
+msgid "Bind IPv6 connections to:"
+msgstr "IPv6 kapcsolat hozzárendelése: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:210
+msgid "Enable ident service (bad practice on UNIX!)"
+msgstr "Azonosító szolgáltatás engedélyezése (UNIX-on nem túl jó ötlet)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:216
+msgid "Output identd messages to:"
+msgstr "Identd üzenetek küldése:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:218
+msgid "Active window"
+msgstr "Aktív ablakban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:219
+msgid "Console"
+msgstr "Konzol"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:220
+msgid "Do not show any identd messages"
+msgstr "Ne mutass identd üzeneteket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:237
+msgid "Enable ident service only while connecting to server"
+msgstr "Azonosító szolgáltatás csak szerverhez kapcsolódás közben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:240
+msgid "Ident username:"
+msgstr "Azonosító felhasználónév: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:243
+msgid "Service port:"
+msgstr "Szervíz portja: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:248
+msgid "IPv6 Settings"
+msgstr "IPv6 Beállítások"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:249
+msgid "Enable service for IPv6"
+msgstr "Szolgáltatások engedélyezése IPv6-ra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:258
+msgid "IP stack treats IPv4 as part of IPv6 namespace"
+msgstr "IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:265
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications. If it is possible, install a real ident daemon.</p>"
+msgstr ""
+"<p><b>Figyelmeztetés:</b><br>Ez <b>nem RFC 1413 kompatibilis</b> azonosító "
+"démon, ami csak korlátozott lehetőséggekkel rendelkezik Azonosítási "
+"Protokollok terén. Amennyiben lehetséges, telepíts egy valós azonosító "
+"démont.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:270
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications.<br>On UNIX, you may also need root privileges to bind to the "
+"auth port (113).<br>It is <b>highly recommended</b> that a <b>real</b> "
+"system-wide ident daemon be used instead, or none at all if ident is not "
+"required.</p>"
+msgstr ""
+"<p><b>Figyelmeztetés:</b><br>Ez <b>nem RFC 1413 kompatibilis</b> azonosító "
+"démon, ami csak néhány részét tartalmazza az azonosítási protokollban "
+"előírtaknak.<br> UNIX rendszereken rendelkezned kell root jogosultságokkal, "
+"hogy ezt hozzárendeld a megfelelő porthoz. (113).<br><b>Erősen ajánlott</b> "
+"egy <b>igazi</b> rendszer-oldali azonosító démon használata, vagy semmilyen, "
+"ha nem szükséges.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.cpp:39
+msgid ""
+"This section contains the general client options<br><p>like<b> sound, "
+"mediafiles, URL handler </b> etc... </p>"
+msgstr ""
+"Ez a rész tartalmazza az általános kliens beállításokat<br><p>mint<b> "
+"hangok, médiafájlok, URL kezelők</b> stb..</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:39
+msgid "Automatically Log"
+msgstr "Automatikus Naplózás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:40
+msgid "Query windows"
+msgstr "Privát ablakok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:41
+msgid "Channel windows"
+msgstr "Csatorna ablakok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:42
+msgid "DCC Chat windows"
+msgstr "DCC Beszélgetés ablakok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:43
+msgid "Console windows"
+msgstr "Konzol ablakok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:45
+msgid "Gzip logs"
+msgstr "Log Gzippelése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:47
+msgid "Strip colors in logs"
+msgstr "Színeket ne logoljon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:48
+msgid "Auto flush logs every"
+msgstr "Naplófájlok mentése minden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:49
+msgid " min"
+msgstr " perc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:52
+msgid ""
+"<center>Save logs with the current interval<br>Set to 0 to disable this "
+"feature</center>"
+msgstr ""
+"<center>Naplófájlok mentése az aktuális sűrűséggel.<br> Állítsd 0-ra a "
+"kikapcsoláshoz.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:49
+msgid "Minimize console after successful login"
+msgstr "Konzol minimalizálása sikeres belépés után"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:52
+msgid ""
+"<center>This option will cause KVIrc to minimize the console window after "
+"successfully logging into a server.</center>"
+msgstr ""
+"<center>Ezzel a KVIrc minimalizálja a konzol ablakot, miután sikeresen "
+"belépett a szerverre.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:55
+msgid "Show network name in console taskbar entry"
+msgstr "Hálózat nevének mutatása a konzol eszköztárán"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to show the network name as the console "
+"taskbar entry instead of the server name. This is nice to keep on unless "
+"your servers are not organized in networks or you often connect to two "
+"servers of the same network.</center>"
+msgstr ""
+"<center> Ezzel az opcióval a KVIrc a hálózat nevét mutatja a konzol "
+"eszköztárán a szerver neve helyett. Ez akkor hasznos, ha a szervereid "
+"hálózatokhoz vannak kapcsolva, és ugyanazon hálózatra nem kapcsolódsz több "
+"szerverrel.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:75
+msgid "Force immediate quit"
+msgstr "Azonnali kilépés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:78
+msgid ""
+"<center>This option causes KVIrc to close the connection immediately after "
+"sending the QUIT message.<br>When this option is disabled, KVIrc will wait "
+"for the server to close the connection.<br>Note that if you use this, your "
+"QUIT message may be not displayed.</center>"
+msgstr ""
+"<center>Ezzel az opcióval a KVirc lezárja a kapcsolatot közvetlenül a "
+"kilépésszignál küldése után.<br>Amikor ez az opció le van tiltva a KVIrc "
+"megvárja amíg a szerver lezárja a kapcsolatot.<br>Amennyiben ezt használod, "
+"a kilépő üzeneted nem biztos, hogy megjelenik.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:84
+msgid "Prepend gender info to realname"
+msgstr "Nem beszúrása a valós név elé"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:110
+msgid "On Channel Kick"
+msgstr "Kirúgásnál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:112
+msgid "Rejoin channel"
+msgstr "Visszalépés a csatornára"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:115
+msgid ""
+"<center>This option will cause KVIrc to attempt to rejoin a channel after "
+"being kicked.</center>"
+msgstr ""
+"<center>Ezzel az opcióval a KVIrc automatikusan újracsatlakozik, ha kirúgtak."
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:129
+msgid "Keep channel open"
+msgstr "Csatorna maradjon nyitva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:121
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"being kicked.<br>It might be a good idea to also enable the \"Rejoin channel"
+"\" option.</center>"
+msgstr ""
+"<center>Ezzel az opcióval a KVIrc nyitva fogja tartani a csatorna ablakát, "
+"miután kirúgtak.<br>Jó ötlet, ha bekapcsolod a \"Visszalépés csatornára\" "
+"opciót.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:127
+msgid "On Channel Part"
+msgstr "Csatornáról lelépéskor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:132
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"leaving it.</center>"
+msgstr ""
+"<center>Ezzel az opcióval a Csatorna ablaka nyitva marad, miután elhagytad "
+"azt.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:136
+msgid "Automatically join channel on invite"
+msgstr "Automatikus csatlakozás meghíváskor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:139
+msgid ""
+"<center>This option will cause KVIrc to automatically join a channel when an "
+"INVITE message for that channel is received.<br><b>Warning:</b> This may "
+"help spammers harass you. :)</center>"
+msgstr ""
+"<center>Ez az opció lehetővé teszi az automatikus fellépést csatornára, "
+"amikor egy meghívás (INVITE) érkezik. <br><b>Figyelmeztetés:</b> Ezzel az "
+"opcióval könnyen a spammelők áldozata lehetsz.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:144
+msgid "Always open channels as minimized"
+msgstr "Csatornák megnyitása minimalizálva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:148
+msgid ""
+"<center>This option causes newly created channel windows to be immediately "
+"minimized.<br>Enable this if you don't like channels popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+"<center>Ezzel az opcióval automatikusan minimalizálva lesz az újonnan "
+"megnyitott csatorna ablaka.<br>Engedélyezd, ha már unod, hogy felugrik egy "
+"csatorna ablak amikor éppen valamit írsz másik csatornára :D. </center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:168
+msgid "Log joined channels history"
+msgstr "Csatornák naplózása, amihez csatlakoztál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:170
+msgid "Default ban mask:"
+msgstr "Alapértelmezett tiltó maszk:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:188
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:202
+msgid "On Channel Join"
+msgstr "Fellépés csatornára"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:189
+msgid "Do not send /WHO request"
+msgstr "Ne küldjön /WHO kérést"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:190
+msgid "Do not request ban list"
+msgstr "Ne küldje a tiltólistát"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:191
+msgid "Do not request ban exception list"
+msgstr "Ne kérje le a tiltó-kivétel listát"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:192
+msgid "Do not request invite list"
+msgstr "Ne kérje a meghívó listát"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:194
+msgid "Do not update the away list"
+msgstr "Ne frissítse a Távollét listát"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:197
+msgid ""
+"<center>KVIrc sends out a channel /WHO message every now and then to keep "
+"the channel away list in sync. Use this option to disable this feature (and "
+"to save your IRC bandwidth.</center>"
+msgstr ""
+"<center>A KVIrc minden csatlakozáskor küld egy /WHO üzenetet, aminek a "
+"válasza tartalmazza a Távol listát, később csak frissíti ezt. Ez a "
+"sávszélesség megtakarítására szolgál. (nagyon nagy csatornáknál lehet "
+"lényeges)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:203
+msgid "Echo channel topic"
+msgstr "Csatorna topic kiírása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:204
+msgid "Show channel sync time"
+msgstr "Csatorna Szinkronizálási ideje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:40
+msgid "Default text encoding:"
+msgstr "Alapértelmezett karakterkódolás:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:109
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:133
+msgid "Use Language Encoding"
+msgstr "Nyelv kódolásának használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:59
+msgid "Force language:"
+msgstr "Megadott nyelv:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:65
+msgid "<b>Note:</b> You need to restart KVirc to apply a language changing"
+msgstr ""
+"<b>Megjegyzés:</b> Újra kell indítanod a KVIrcet, hogy érvényesítsd a nyelvi "
+"beállításokat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:68
+msgid "Automatic detection"
+msgstr "Automatikus felismerés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:69
+msgid "en"
+msgstr "en"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Unable to write language information to"
+msgstr "Nyelv információinak írása írása sikertelen: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:39
+msgid "Enable Anti-spam For"
+msgstr "Spamszűrő engedélyezése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:45
+msgid "Silent anti-spam (no warnings)"
+msgstr "Csöndes spamszűrés (figyelmeztetés nélkül)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:46
+msgid "Words considered spam:"
+msgstr "Spamot tartalmazó szavak: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:51
+msgid "Use workaround for firewall"
+msgstr "KVIrc tűzfal mögül"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:54
+msgid ""
+"<center>Enable this option if you can't accept incoming connections."
+"<br>KVIrc will try to use different methods to send and receive files."
+"<br>Please note that these methods may NOT work when communicating with a "
+"non-KVIrc client.</center>"
+msgstr ""
+"<center>Engedélyezd, ha nem tudsz bejövő kapcsolódásokat fogadni.<br>KVIrc "
+"megpróbál más módon küldeni és fogadni fájlokat.<br>Megjegyzés: a KVIrc "
+"természetesen csak másik KVIrc klienssel tudja ezeket a problémákat kezelni."
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:73
+msgid "Network Properties"
+msgstr "Hálózati Tulajdonságok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:75
+msgid "Use user-defined address or network interface"
+msgstr "Felhasználó által megadott cím vagy hálózat használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:79
+msgid ""
+"<center>Enable this option if you are on a multihost machine and want to "
+"force one of the available IP addresses to be used for outgoing DCCs."
+"<br>This is especially useful when you use IPv6 and IPv4 addresses.<br>You "
+"can force KVIrc to always choose the IPv4 interface.</center>"
+msgstr ""
+"<center>Engedélyezd ezt az opciót, ha egy többcímű gépet használsz és "
+"szeretnéd csak az egyik elérhető IP címet használni a kimenő DCC "
+"kapcsolatokhoz.<br>Különösen hasznos akkor, ha IPv4 és IPv6 címeket is "
+"használsz.<br> Be tudod állítani, hogy a KVIrc kifejezetten az IPv4 címeket "
+"használja.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:84
+msgid "Listen on address/interface:"
+msgstr "Hallgatózás adott címen/eszközön:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:87
+msgid ""
+"<center>This is the IP address or name of the interface to use by default "
+"for outgoing DCC transfers.<br>On UNIX systems that support it, you can also "
+"specify IPv4 interface names (such as <b>ppp0</b>).<br>If you set it to "
+"<b>0.0.0.0</b>, KVIrc will try to use the first available IPv4 interface</"
+"center>"
+msgstr ""
+"<center>Ez az IP cím vagy név meghatározza az alapértelmezett címet a kimenő "
+"DCC kapcsolatokhoz.<br>UNIX-alapú rendszereken meghatározhatsz eszközneveket "
+"is, mint például <b>ppp0</b>.<br><b>0.0.0.0</b> beállításnál a, KVIrc "
+"megpróbálja az első elérhető IPv4 eszközt használni.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:94
+msgid "Use user-defined port range"
+msgstr "Felhasználó által megadott port tartományok használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:97
+msgid ""
+"<center>Enable this option if you want specify a local port range for DCC.</"
+"center>"
+msgstr ""
+"<center>Engedélyezd ezt, ha szeretnél a DCC kapcsolatokhoz megadott portokat "
+"használni.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:102
+msgid "Lowest port:"
+msgstr "Legkissebb port:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:105
+msgid "Highest port:"
+msgstr "Legnagyobb port:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:108
+msgid "Send a fixed address in requests"
+msgstr "Megadott cím küldése kérésnél"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:111
+msgid ""
+"<center>Enable this option if you want to always send a fake IP address in "
+"your DCC requests.<br>This might be useful if you're behind a router with a "
+"static address that does network address translation (NAT) and forwards all "
+"or a range of ports.</center>"
+msgstr ""
+"<center>Engedélyezd ezt az opciót, ha szeretnéd, hogy a KVIrc hamis IP címet "
+"küldjön a DCC kéréseidnél.<br>Ez hasznos lehet, ha router mögött vagy "
+"statikus címmel, amely cím automatikusan továbbít feléd mindent vagy csak "
+"egy port tartományt.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:115
+msgid "Send address/interface:"
+msgstr "Adott cím küldése:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:119
+msgid ""
+"<center>This is the fixed address that will be sent with all DCC requests if "
+"you enable the option above.</center>"
+msgstr ""
+"<center>Ez az a cím, amit a KVIrc elküld minden DCC kérésnél, ha a fenti "
+"opciót engedélyezed.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:123
+msgid "Guess address from IRC server if unroutable"
+msgstr "Cím visszafejtése az IRC szerverrel, ha helyben nem sikerül"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:128
+msgid ""
+"<center>You can enable this option if you are behind a router that forwards "
+"all or a range of ports.<br>KVIrc will try to guess the IP address to use "
+"for DCC by looking up the local hostname as seen by the IRC server you're "
+"connected to.<br>This method is an exclusive alternative to the \"fixed "
+"address\" above.<br>It might guess the correct address automatically if "
+"certain conditions are met (e.g. the IRC server does not mask hostnames).</"
+"center>"
+msgstr ""
+"<center>Engedélyezd ezt az opciót, ha egy router mögött vagy, ami mindent "
+"vagy megadott portokat feléd irányít.<br>A KVIrc megpróbálja azt az IRC "
+"szerver által megadott címet használni a DCC kapcsolatokhoz, amelyik "
+"szerverre kapcsolódsz. <br>Ez egy különleges eljárás ami a \"megadott cím\" "
+"opciót helyettesítheti. <br> Ez visszaadja a megfelelő címet, ha a "
+"feltételek adottak (pl.: a szerver nem maszkolja a hosztneveket)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:134
+msgid "Use \"broken bouncer hack\" to detect address"
+msgstr "\"hibás BNC hack\" használata a cím felderítésére"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:137
+msgid ""
+"<center>When you're behind a dialup router and also tunneling through a "
+"psyBNC bouncer, you can use a bug in the bouncer to force KVIrc to bind the "
+"DCC connections to the dialup router's address.<br>It's an ugly hack - use "
+"it only if nothing else works.</center>"
+msgstr ""
+"<center>Amikor egy router mögött vagy, és emellett psyBNC mögül "
+"csatlakozolki tudsz használni egy hibát a bouncerben úgy, hogy a KVIrc "
+"átirányíttatja a DCC kapcsolatokat a router címére.<br>Ez egy elég csúnya "
+"megoldás, csak akkor használd, ha már nincs más kiút.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:144
+msgid "Notify failed DCC handshakes to the remote end"
+msgstr "Távoli kliens értesítésítése DCC kézfogás sikertelenségéről"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:147
+msgid ""
+"<center>If you enable this option, when a DCC request from a remote user "
+"can't be satisfied KVIrc will notify him by a CTCP ERRMSG. This is a nice "
+"feature so it is a good idea to leave it on unless for some reason you have "
+"deactivated the antiflood system: in this case turning off this option might "
+"help if you often get attacked by CTCP floods.</center>"
+msgstr ""
+"<center>Engedélyezd, ha szeretnéd, hogy ha a KVIrc küldjön egy értesítőt, ha "
+"nem tudja a kapcsolatot létrehozni. Ez egy hasznos opció, kivéve ha "
+"valamilyen oknál fogva a floodellenörző rendszer nem lenne bekapcsolva, és "
+"gyakran vagy kitéve CTCP flood támadásoknak. </center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:154
+msgid "Maximum number of DCC sessions"
+msgstr "Maximális DCC kapcsolatok száma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:156
+msgid ""
+"<center>This is the maximum number of concurrent DCC sessions and it "
+"includes all the DCC types (send,chat,recv...). KVIrc will refuse the "
+"requests when this limit is reached.</center>"
+msgstr ""
+"<center>Ez a maximális száma a lehetséges DCC kapcsolatok számának, "
+"beleértve a beszélgetés, küldést és fogadást. Az ez után beérkező kéréseket "
+"a KVIrc automatikusan visszautasítja.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:161
+msgid "DCC socket timeout:"
+msgstr "DCC socket időtúllépés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:164
+msgid ""
+"<center>This is the amount of time that KVIrc will wait for a response "
+"before assuming that a DCC has failed because the remote client was unable "
+"to connect to our listening socket.</center>"
+msgstr ""
+"<center>Ez az időmennyiség, amíg a KVIrc várakozik a válaszra mielőtt azt "
+"feltételezné, hogy a kapcsolat meghiúsult, mivel a távoli kliens nem tudott "
+"csatlakozni a figyelt socketre.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:198
+msgid "On Incoming File"
+msgstr "Bejövő fájlnál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:371
+msgid "Automatically accept"
+msgstr "Automatikus fogadás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:200
+msgid "Open transfer window as minimized when auto-accepted"
+msgstr "Átviteli ablak minimalizálása automatikus elfogadásnál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:201
+msgid "Automatically resume when auto-accepted"
+msgstr "Automatikus folytatás automatikus fogadásnál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:203
+msgid "Save Location"
+msgstr "Hely mentése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:204
+msgid "Download folder:"
+msgstr "Letöltési könyvtár: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:205
+msgid "Sort saved files by nicknames (create subfolders)"
+msgstr "Mentett fájlok rendezése Nevek szerint (alkönyvtárakkal)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:206
+msgid "Guess save path from media type"
+msgstr "Mentési útvonal a fálj típusától függően"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:209
+msgid "On Download Completion"
+msgstr "Letöltés befejezésekor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:210
+msgid "Notify completion in console"
+msgstr "Értesítés befejezéskor a konzolban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:211
+msgid "Notify completion in notifier"
+msgstr "Értesítés befejezéskor az értesítőben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:212
+msgid "Automatically clear transfer"
+msgstr "Automatikus adatátvitel törlés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:215
+msgid ""
+"<center>This option will cause succesfully terminated transfers to be "
+"automatically removed from the transfer window.</center>"
+msgstr ""
+"<center> Ezzel az opcióval minden megszakított átvitel automatikusan el lesz "
+"távolítva az átvitel ablakból.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:220
+msgid "Always open transfer window as minimized"
+msgstr "Átviteli ablak megnyitása mindig minimalizálva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:238
+msgid "Bug Compatibility"
+msgstr "Hiba Kompatibilitás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:239
+msgid "Send ACK for byte 0"
+msgstr "ACK küldése 0. bájtként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:242
+msgid ""
+"<center>This option causes KVIrc to send a zero-byte acknowledge to kick-"
+"start the DCC transfer with some buggy IRC clients.<br>Use it only if your "
+"DCC transfers stall just after establishing a connection without sending any "
+"data.</center>"
+msgstr ""
+"<center>Ezzel az opcióval a KVIrc egy 'nulla bájt' értesítőt küld, hogy az "
+"adatátvitel-megkezdődhessen néhány hibás kliensnél.<br>Csak akkor használd, "
+"ha a DCC kapcsolat csak áll, miután létrejött, de adatot nem küld.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:247
+msgid "Accept broken RESUME (mIRC file.ext)"
+msgstr "Hibás Folytatás kérés elfogadása (mIRC file.kit)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:250
+msgid ""
+"<center>This option causes KVIrc to accept RESUME requests with invalid "
+"filenames.<br>Use it if KVIrc fails to accept RESUME requests from other "
+"clients (e.g. some versions of mIRC).</center>"
+msgstr ""
+"<center>Ezzel az opcióval a KVIrc elfogadja a folytatási kéréseket, "
+"helytelen fájlnévnél.<br>Használd, ha a KVIrc nem tudja fogadni a folytatási "
+"kéréseket más kliensektől (pl.: néhány mIRC verziónál)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:254
+msgid "Replace spaces with underscores in outgoing filenames"
+msgstr "Szóközök cseréje aláhúzásra a kimenő fájlneveknél"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:257
+msgid ""
+"<center>This option causes KVIrc to replace spaces with underscores in "
+"filenames for all the outgoing file transfers. This will fix filename "
+"handling with some buggy clients (e.g. some versions of mIRC)."
+msgstr ""
+"<center>Ezzel az opcióval a KVIrc kicseréli a fájlnevekben szereplő "
+"szóközöket eláhúzásra fájl küldésekor. Ez javítja a fáljnévkezelést néhány "
+"hibás kliensnél. (pl.: néhány mIRC verziónál)."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:262
+msgid "Limits"
+msgstr "Korlát"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:265
+msgid "Limit upload bandwidth to"
+msgstr "Feltöltési sebesség korlátozása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:273
+msgid "bytes/sec"
+msgstr "bájt/mp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:271
+msgid "Limit download bandwidth to"
+msgstr "Letöltési sebesség korlátozása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:277
+msgid "Maximum number of DCC transfers"
+msgstr "Maximális konkurens DCCk száma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:279
+msgid ""
+"<center>This is the maximum number of concurrent DCC transfers. KVIrc will "
+"refuse the requests when this limit is reached.</center>"
+msgstr ""
+"<center>Ez a maximális száma a lehetséges DCC adatátviteleknek. A KVIrc "
+"minden ezután beérkező kapcsolódást elutasít.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:283
+msgid "Tweaks"
+msgstr "Tuning"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:285
+msgid "Use fast send (send ahead)"
+msgstr "Gyors küldés (előreküldés) használata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:288
+msgid ""
+"<center>The \"send ahead\" DCC method allows data to be sent faster by "
+"breaking some of the rules of the original DCC SEND protocol specification."
+"<br>Most clients can handle this kind of optimisation so disable it only if "
+"you have problems.</center>"
+msgstr ""
+"<center>Az \"előreküldéses\" DCC eljárás lehetővé teszi az adatok gyorsabb "
+"küldését, néhány szabály felrúgásával a DCC SEND protokollokban.<br>A "
+"legtöbb kliens kezeli ezt, tehát akkor tiltsd le ha problémáid vannak a DCC "
+"kapcsolatokkal.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:295
+msgid "Force idle step"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:298
+msgid ""
+"<center>Enable this option when the dcc file transfers tend to block your "
+"computer by consuming too much CPU time. When this option is enabled the "
+"idle interval below will be forcibly inserted between each sent/received "
+"data packet.</center>"
+msgstr ""
+"<center>Engedélyezd ezt, ha DCC adatátvitelnél a géped észrevehetően "
+"lelassul, túl nagy processzoridőt lefogva. Az opció engedélyezésekor A KVirc "
+"megadott tétlenségi időt határoz meg minden egyes küldött vagy fogadott "
+"adatcsomag után.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:310
+msgid ""
+"<center>This parameter controls the average delay between two packets sent "
+"or received.<br>A smaller interval will cause you to send data faster but "
+"will also add load to your CPU, disk and network interface.<br>Reasonable "
+"values are from 5 to 50 milliseconds.</center>"
+msgstr ""
+"<center>Ez meghatározza az átlagos késleltetést két küldött vagy fogadott "
+"csomag között.<br>Kissebb intervallumnál gyorsabb adatküldés lehetséges, de "
+"egyúttal a processzort, hálózatot és a lemezt is jobban leterheli."
+"<br>Elfogadható értékek: 5 és 50 milliszekundum között.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:316
+msgid "Packet size:"
+msgstr "Csomag méret: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:320
+msgid ""
+"<center>This parameter controls the packet size used for DCC SEND.<br>With "
+"bigger packets you will be probably send data faster, but you will also "
+"saturate your bandwidth and in some cases cause more disk activity."
+"<br>Reasonable values are from 512 to 4096 bytes.</center>"
+msgstr ""
+"<center>Meghatározza a küldendő csomagok méretét DCC küldésnél.<br> Nagyobb "
+"csomagoknál lehetséges, hogy gyorsabb az átvitel, de egyúttal jobban "
+"leterheli a sávszélességet, és néhány esetben okozhat magas lemez aktivitást "
+"is.<br>Elfogadható értékek 512-től 4096 bájtig.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:349
+msgid "On Chat Request"
+msgstr "Beszélgetés kérésekor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:351
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:373
+msgid "Open minimized when auto-accepted"
+msgstr "Megnyitás a háttérben automatikus fogadásnál"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:353
+msgid "Always open as minimized"
+msgstr "Megnyitás mindig minimalizálva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:369
+msgid "Open all minimized"
+msgstr "Minden kicsinyített megnyitása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:370
+msgid "On Voice Request"
+msgstr "Hangos beszélgetéskor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:376
+msgid "Force half-duplex mode on sound device"
+msgstr "Half-duplex mód kikényszerítése a hangeszközön"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:377
+msgid "Volume slider controls PCM, not Master"
+msgstr "Hangerőszabályozó PCM-et szabályozza, nem a Mastert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:379
+msgid "Sound device:"
+msgstr "Hangeszköz: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:380
+msgid "Mixer device:"
+msgstr "Keverőeszköz: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:382
+msgid "Pre-buffer size:"
+msgstr "Előpufferelés mérete:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:38
+msgid "Enable Ignore For"
+msgstr "Mellőzés engedélyezése "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:39
+msgid "Private/channel messages"
+msgstr "Privát/Csatorna üzenetekre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:40
+msgid "Private/channel notices"
+msgstr "Privát/Csatorna értesítőkre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:44
+msgid "Use verbose ignore (show messages in console)"
+msgstr "Hangos mellőzés (üzenetek láthatóak lesznek a konzolban)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:46
+msgid "Sound System"
+msgstr "Hangrendszer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:66
+msgid "This allows you to select the sound system to be used with KVIrc."
+msgstr "Ezzel kiválaszhatod a KVIrc által használt hangrendszert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:72
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:88
+msgid "Auto-detect"
+msgstr "Auto-Felismerés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:91
+msgid "Test"
+msgstr "Teszt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:79
+msgid "Media Player"
+msgstr "Médialejátszó"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:81
+msgid ""
+"This allows you to select the preferred media player to be used with the "
+"mediaplayer.* module commands and functions."
+msgstr ""
+"Kiválaszhatod a használt médialejátszódat, így lehetőséged nyílik a "
+"mediaplayer.* modul és függvényei használatára."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:102
+msgid "ID3 tags' encoding"
+msgstr "ID3 tagok kódolása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:104
+msgid "This allows you to select encoding of mp3 tags."
+msgstr "Az mp3 tagek karakterkódolását válaszhatod ki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:125
+msgid "Winamp messages ecoding"
+msgstr "Winamp üzenetek kódolása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:127
+msgid "This allows you to select encoding of winamp messages."
+msgstr "Ezzel kiválaszthatod a Winamp üzeneteinek karakterkódolását."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:290
+msgid "New Query opened"
+msgstr "Új Privát nyílt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:293
+msgid "New message in inactive query"
+msgstr "Új üzenet inaktív Privát ablakban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:296
+msgid "Highlighted message in inactive window"
+msgstr "Kiemelt üzenet az aktív ablakban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:299
+msgid "Me have been kicked"
+msgstr "Ki lettél rúgva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:39
+msgid "Selection background color"
+msgstr "Kijelölt háttér szín"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:40
+msgid "Selection foreground color"
+msgstr "Kijelölt előtér szín"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:41
+msgid "Control char color"
+msgstr "Vezérlő karakter szín"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:42
+msgid "Cursor color"
+msgstr "Kurzor színe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:141
+msgid "Warp cursor at the end of line when browsing history"
+msgstr "Kurzor a sor végén az előzmények böngészésekor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:142
+msgid "Disable the input history window and it's log memory."
+msgstr "Beviteli történet és a memória tiltása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:143
+msgid "Hide input toolbuttons by default"
+msgstr "Beviteli eszközgombok rejtése alapértelmezettként"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:144
+msgid "Nick completion"
+msgstr "Név kiegészítés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:145
+msgid "Use bash-like nick completion"
+msgstr "Bash-szerű Névkiegészítés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:146
+msgid "Nick completion postfix string"
+msgstr "Névkiegészítés után beszúrandó"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:147
+msgid "Use the completion postfix string for the first word only"
+msgstr "Névkiegészítés utáni szöveg csak az első név után"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:148
+msgid "Commandline in user-friendly mode by default"
+msgstr "A parancssor felhasználóbarát alapértelmezetten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:81
+msgid "Show message icons"
+msgstr "Üzenet ikonok mutatása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:82
+msgid "Draw some emoticons (smileys) as pictures"
+msgstr "Hangulatjelek (smiley) rajzolása, mint képek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:83
+msgid "Don't show colors in user messages"
+msgstr "Szinek tiltása üzenetekben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:88
+msgid "Nicknames"
+msgstr "Nicknevek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:90
+msgid "\"Smart\" nickname colors"
+msgstr "\"Okos\" név szinezés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:91
+msgid "Use same colors as in the userlist"
+msgstr "Használd ugyanazt a színt, mint a felhasználólistában"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:93
+msgid "Show nicknames in bold"
+msgstr "Nevek megjelenítése félkövéren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:94
+msgid "Show user and host"
+msgstr "Fehasználónév és hoszt mutatása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:95
+msgid "Show channel mode prefix"
+msgstr "Jog mutatása névben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:96
+msgid "User-defined prefix and postfix"
+msgstr "Felhasználó által megadott elő és utótag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:98
+msgid "[PREFIX]nickname[!user@host][POSTFIX] message"
+msgstr "[ELŐTAG]név[!felhasználónév@hoszt][UTÓTAG] üzenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:112
+msgid "Prefix:"
+msgstr "Előtag:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:117
+msgid "Postfix:"
+msgstr "Utótag:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:131
+msgid "Show timestamp"
+msgstr "Időbélyegző mutatása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:134
+msgid "Use UTC time for timestamp"
+msgstr "UTC idő használata időbélyegzőnél"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:141
+msgid "Use special color for timestamps"
+msgstr "Különleges szín időbélyegzőnek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:147
+msgid "Timestamp format:"
+msgstr "Időbélyeg formátum:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:320
+msgid "Transparent"
+msgstr "Átlátszó"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:401
+msgid "Message Type"
+msgstr "Üzenet Típus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:417
+msgid "Background:"
+msgstr "Háttér: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:426
+msgid "Foreground:"
+msgstr "Előtér: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:434
+msgid "Alert level:"
+msgstr "Figyelmeztetési szint: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:454
+msgid "Log this"
+msgstr "Logold"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:458
+msgid "Load From..."
+msgstr "Betöltés..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:460
+msgid "Save As..."
+msgstr "Mentés mint..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:589
+msgid "Choose a Filename - KVIrc"
+msgstr "Válassz Fájlnevet - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:646
+msgid "Choose a Filename - KVIrc "
+msgstr "Válassz Fájlnevet - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:40
+msgid "Enable lag meter"
+msgstr "Lagmérő engedélyezése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:42
+msgid ""
+"<center>This enables the lag meter engine, which checks at regular intervals "
+"how much lag (latency) the server has.</center>"
+msgstr ""
+"<center>Ezzel engedélyezheted a lagmérő motort, ami ellenőrzi az általános "
+"időeltolódást, ami a szerver és közötted van.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:45
+msgid "Lag meter heartbeat:"
+msgstr "Lagmérés időköze:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:49
+msgid ""
+"<center>This option allows you to set the lag meter heartbeat interval."
+"<br>The lower the heartbeat interval the higher will be the accuracy of the "
+"lag check but also higher cpu usage and data traffic to the server."
+"<br>Please note that this is NOT the interval between pings sent to the "
+"server: the pings (if any) will be sent really less often. 5000 is a "
+"reasonable value.</center>"
+msgstr ""
+"<center>Ezzel beállíthatod a lagmérő ellenőrzési időközeit.<br>Alacsony "
+"érték megadása növelheti a pontosságot, de egyúttal magasabb "
+"processzorhasználatot és adatforgalmat eredményez a szerver felé-<br>Vedd "
+"figyelembe, hogy ez NEM a szerver pingelésének időtartama: A pingelés (ha "
+"van) kevésbé gyakori. 5000 megfelelő érték.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:58
+msgid "Trigger event if lag exceeds:"
+msgstr "Esemény, ha a lag meghaladja: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:61
+msgid ""
+"<center>This option controls the threshold for the OnLagAlarmTimeUp and "
+"OnLagAlarmTimeDown events. When the lag goes above the threshold "
+"OnLagAlarmTimeUp will be triggered and when the lag falls back below the "
+"threshold then OnLagAlarmTimeDown will be triggered</center>"
+msgstr ""
+"<center>Ez az opció irányítja az OnLagAlarmTimeUp és OnLagAlarmTimeDown "
+"eseményt. Amikor a lag meghaladja a megadott értéket az OnLagAlarmTimeUp "
+"lesz végrehajtva, amikor visszaáll az érték alá, akkor az "
+"OnLagAlarmTimeDown</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:68
+msgid "Show lag in IRC context display"
+msgstr "Lag jelzése az IRC környezet megjelenítőjén"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:70
+msgid ""
+"<center>This makes the IRC context display applet show the current lag after "
+"the user's nickname (in seconds)</center>"
+msgstr ""
+"<center>Ezzel az IRC környezet megjelenítő appletje mutatni fogja az "
+"aktuális lagot a felhasználó neve után (másodpercekben)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.h:28
+msgid "Away"
+msgstr "Távol"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.h:28
+msgid "CTCP"
+msgstr "CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:28
+msgid "DCC"
+msgstr "DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:59
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:41
+msgid "Advanced"
+msgstr "Haladó"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:72
+msgid "File Transfer"
+msgstr "Fájl Átvitel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:113
+msgid "Chat"
+msgstr "Beszélgetés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:126
+msgid "Voice"
+msgstr "Hang"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:32
+msgid "IRC"
+msgstr "IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:73
+msgid "Channel"
+msgstr "Csatorna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:28
+msgid "Lag"
+msgstr "Lag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:30
+msgid "time,ping"
+msgstr "idő,ping"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:37
+msgid "authentication,identify"
+msgstr "azonosítás,auth"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:31
+msgid "Language"
+msgstr "Nyelv"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:34
+msgid "language,encoding,charset,codepage"
+msgstr "nyelv,kódolás,karakter,karakterkészlet,kódlap"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:28
+msgid "Contacts"
+msgstr "Kapcsolatok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:30
+msgid "notify,buddy,buddies,friends"
+msgstr "értesítés,barát,barátok,haver"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:42
+msgid "Notifier"
+msgstr "Értesítő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:43
+msgid "popup"
+msgstr "popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:37
+msgid "Text"
+msgstr "Szöveg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:38
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:49
+msgid "theme,colors,output"
+msgstr "megjelenés,színek,kimenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:52
+msgid "Message Style"
+msgstr "Üzenet Stílus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:56
+msgid "theme,privmsg,output,format"
+msgstr "kinézet, üzenet, kimenet, formátum"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:67
+msgid "Timestamp"
+msgstr "Időbélyeg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:71
+msgid "time,timestamp"
+msgstr "idő, időbélyeg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:88
+msgid "Message Colors"
+msgstr "Üzenet Színek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:169
+msgid "theme,colors,messages,output"
+msgstr "megjelenés,színek,üzenetek,kimenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:168
+msgid "Color Set"
+msgstr "Paletta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.h:32
+msgid "Avatars"
+msgstr "Avatarok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:32
+msgid "Sound"
+msgstr "Hangok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:48
+msgid "sound,xmms,audio,play,amarok"
+msgstr "hang,xmms,audio,lejátszás,amarok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:81
+msgid "Sounds"
+msgstr "Hangok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:83
+msgid "sound,events"
+msgstr "hangok,események"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:28
+msgid "URL handlers"
+msgstr "URL kezelők"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:31
+msgid "url,programs"
+msgstr "url,programok,cím,webcím,web"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:29
+msgid "Tray icon"
+msgstr "Tálca ikon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:31
+msgid "tray,dockwidget"
+msgstr "tálca,dockwidget"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.h:33
+msgid "Tools"
+msgstr "Eszközök"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.h:28
+msgid "General options"
+msgstr "Általános beállítások"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.h:31
+msgid "Interface"
+msgstr "Eszközök"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:29
+msgid "Text icons"
+msgstr "Szöveges ikonok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:31
+msgid "smileys,emoticons"
+msgstr "mosoly,hangulatjelek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:34
+msgid "Output"
+msgstr "Kimenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:48
+msgid "Look"
+msgstr "Kinézet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:101
+msgid "Features"
+msgstr "Lehetőségek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:46
+msgid "Media Types"
+msgstr "Média Típusok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:48
+msgid "file,audio,video,programs"
+msgstr "fájl,audió,videó,programok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:114
+msgid "theme"
+msgstr "megjelenés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:47
+msgid "Transparency"
+msgstr "Átlátszóság"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:48
+msgid "theme,background"
+msgstr "megjelenés,háttér"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:74
+msgid "Window Captions"
+msgstr "Ablak feliratok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:88
+msgid "theme,mdi"
+msgstr "megjelenés,mdi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:87
+msgid "Workspace"
+msgstr "Munkaterület"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:100
+msgid "ToolBar Applets"
+msgstr "Eszköztár Appletek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:101
+msgid "theme,toolbar"
+msgstr "megjelenés,eszköztár"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:150
+msgid "connection"
+msgstr "kapcsolat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:33
+msgid "Protection"
+msgstr "Védelem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:36
+msgid "ctcp,flood"
+msgstr "ctcp,flood,árasztás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:144
+msgid "Avatar"
+msgstr "Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.h:28
+msgid "Anti-spam"
+msgstr "Spamszűrés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:32
+msgid "Verbosity And Output"
+msgstr "Beszédesség és Kimenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:34
+msgid "debug"
+msgstr "debug"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:28
+msgid "Logging"
+msgstr "Naplózás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:29
+msgid "save,output"
+msgstr "mentés,kimenet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:50
+msgid "Input"
+msgstr "Bevitel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:33
+msgid "theme,colors,text"
+msgstr "megjelenés,színek,szöveg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:33
+msgid "Taskbar"
+msgstr "Tálca"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:47
+msgid "Tree Taskbar"
+msgstr "Fa lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:65
+msgid "Foreground"
+msgstr "Előtér"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:111
+msgid "Classic Taskbar"
+msgstr "Klasszikus lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:52
+msgid "Proxy Hosts"
+msgstr "Proxy Hosztok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:54
+msgid "connection,servers"
+msgstr "kapcsolat,szerverek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:28
+msgid "Alert/Highlight"
+msgstr "Figyelmeztetés/Kiemelés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:42
+msgid "Highlight"
+msgstr "Figyelmeztetés / Kiemelés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:55
+msgid "Taskbar Alert"
+msgstr "Figyelmeztetés a Tálcán"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.h:29
+msgid "Flood Protection"
+msgstr "Flood Védelem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:30
+msgid "Userlist"
+msgstr "Felhasználólista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:31
+msgid "theme,userlist,channel"
+msgstr "megjelenés,felhasználólista,csatorna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:45
+msgid "theme,userlist,channel,background"
+msgstr "kinézet,felhasználólista,csatorna,háttér"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:66
+msgid "theme,userlist,channel,colors"
+msgstr "megjelenés,felhasználólista,csatorna,szín"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:81
+msgid "Nickname Grid"
+msgstr "Név rács"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:82
+msgid "theme,userlist,channel,grid"
+msgstr "megjelenés,felhasználólista,csatorna,rács"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:102
+msgid "userlist,channel"
+msgstr "felhasználólista,csatorna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:29
+msgid "Labels"
+msgstr "Címkék"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:30
+msgid "theme,topic"
+msgstr "megjelenés,topic,téma"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:28
+msgid "Scripting Engine"
+msgstr "Szkript Motor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:29
+msgid "scripting,kvs,debug"
+msgstr "szkript,kvs,hibakeresés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:55
+msgid "SSL"
+msgstr "SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:72
+msgid "Socket"
+msgstr "Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:87
+msgid "Ident Service"
+msgstr "Azonosító Szolgáltatás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:29
+msgid "Ignore"
+msgstr "Mellőzés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:31
+msgid "protection"
+msgstr "védelem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:28
+msgid "Query"
+msgstr "Privát"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:30
+msgid "chat"
+msgstr "beszélgetés"
diff --git a/po/modules/options/options_it.po b/po/modules/options/options_it.po
new file mode 100644
index 00000000..1bcd2d8c
--- /dev/null
+++ b/po/modules/options/options_it.po
@@ -0,0 +1,4437 @@
+# translation of options_it.po to
+# KVIrc OPTIONS module Italian traslation file
+# Italian translation file for KVIrc 3.0
+# Copyright (C) Szymon Stefanek
+# This file is distributed under the same license as the KVIrc package.
+#
+# Szymon Stefanek <pragma at kvirc dot net>, 2004.
+# Eva Schaller <[email protected]>, 2002,2003, 2004.
+# Elvio Basello <[email protected]>, 2005, 2006
+# Nate Grey <[email protected]>, 2004, 2005, 2006.
+#
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:304
+msgid ""
+msgstr ""
+"Project-Id-Version: options_it\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-11-08 01:57+0100\n"
+"Last-Translator: \n"
+"Language-Team: <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:232
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:51
+msgid "Font:"
+msgstr "Carattere:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:47
+msgid "Background color:"
+msgstr "Colore sfondo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:129
+msgid "Background image:"
+msgstr "Immagine di sfondo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:51
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:46
+msgid "Horizontal align:"
+msgstr "Allineamento orizzontale:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:50
+msgid "Vertical align:"
+msgstr "Allineamento verticale:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:59
+msgid "Mark Line:"
+msgstr "Evidenzia Linea:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:66
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:124
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:59
+msgid "Tile"
+msgstr "Affianca"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:62
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:55
+msgid "Left"
+msgstr "Sinistra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:56
+msgid "Right"
+msgstr "Destra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:132
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:62
+msgid "Center"
+msgstr "Centro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:60
+msgid "Top"
+msgstr "Sopra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:61
+msgid "Bottom"
+msgstr "Sotto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:149
+msgid "Enable URL highlighting"
+msgstr "Abilita evidenziazione URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:150
+msgid "Use line wrap margin"
+msgstr "Usa margine nel testo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:151
+msgid "Maximum buffer size:"
+msgstr "Dimensione massima del buffer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:152
+msgid " lines"
+msgstr " linee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:153
+msgid "Link tooltip show delay:"
+msgstr "Ritardo di visualizzazione dei suggerimenti:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:306
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:59
+msgid " msec"
+msgstr " msec"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:155
+msgid "Link tooltip hide delay:"
+msgstr "Ritardo di nascondimento dei suggerimenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:157
+msgid "Track last read text line"
+msgstr "Traccia l'ultima riga letta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:48
+msgid "NickServ Authentication Rule"
+msgstr "Impostazione per l'Autenticazione NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:55
+msgid "Registered NickName"
+msgstr "NickName registrato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:60
+msgid "Put here the nickname that you have registered with NickServ"
+msgstr "Metti qui il nickname che hai registrato con NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:277
+msgid "NickServ Mask"
+msgstr "Maschera NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:70
+#, c-format
+msgid ""
+"This is the mask that NickServ must match to be correctly identified as the "
+"NickServ service. This usually will be something like <b>NickServ!"
+"[email protected]</b>.<br>You can use wildcards for this field, but "
+"generally it is a security flaw. If you're 100%% sure that NO user on the "
+"network can use the nickname \"NickServ\", the mask <b>NickServ!*@*</b> may "
+"be safe to use in this field."
+msgstr ""
+"Questa è la maschera che il NickServ deve avere per essere correttamente "
+"identificato come il servizio NickServ. La maschera è solitamente "
+"<b>[email protected]</b>.<br>Puoi usare i caratteri jolly in "
+"questo campo, ma generalmente è un rischio. Se sei sicuro al 100%% che "
+"<b>NESSUN</b> utente sulla rete possa usare il nickname \"NickServ\" allora "
+"la maschera <b>NickServ!*@*</b> può essere usata tranquillamente."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:78
+msgid "Message Regexp"
+msgstr "Regexp per il messaggio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:86
+msgid ""
+"This is the simple regular expression that the identification request "
+"message from NickServ must match in order to be correctly recognized.<br>The "
+"message is usually something like \"To identify yourself please use /ns "
+"IDENTIFY password\" and it is sent when the NickServ wants you to "
+"authenticate yourself. You can use the * and ? wildcards."
+msgstr ""
+"Questa è la regular expression a cui il messaggio di richiesta di "
+"autenticazione inviato dal NickServ deve corrispondere per essere "
+"correttamente identificato.<br>Solitamente il messaggio è simile a \"To "
+"identify yourself please use /ns IDENTIFY password\" ed è inviato dal "
+"NickServ quanto vuole una identificazione da te. Puoi usare i caratteri "
+"jolly * e ?."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:259
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:279
+msgid "Identify Command"
+msgstr "Comando di Identificazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:98
+msgid ""
+"This is the command that will be executed when NickServ requests "
+"authentication for the nickname described in this rule (if the both server "
+"and NickServ mask are matched). This usually will be something like <b>msg "
+"NickServ identify &lt;yourpassword&gt;</b>.<br>You can use <b>msg -q</b> if "
+"you don't want the password echoed on the screen. Please note that there is "
+"no leading slash in this command."
+msgstr ""
+"Questo è il comando che verrà eseguito quando il NickServ richiederà "
+"l'autenticazione per il nickname specificato in questa regola (qualora sia "
+"il server che la maschera del NickServ corrispondano). Questo solitamente è "
+"<b>msg NickServ identify &lt;tuapassword&gt;</b>.<br> Puoi usare <b>msg -q</"
+"b> se desideri che la password non appaia sullo schermo. N.B. non c'è lo "
+"slash iniziale in questo comando."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:256
+msgid "Server mask"
+msgstr "Maschera Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:117
+msgid ""
+"This is the mask that the current server must match in order for this rule "
+"to apply. It can contain * and ? wildcards.<br>Do NOT use simply \"*\" "
+"here..."
+msgstr ""
+"Questa è la maschera a cui deve corrispondere il server corrente perché "
+"venga applicata questa regola. Può contenere i caratteri jolly * e ?.<br>NON "
+"usare il carattere semplice \"*\" qui..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:128
+msgid "Hint: Move the mouse cursor over the fields to get help"
+msgstr "Consiglio: Sposta il cursore sopra i campi per ottenere un aiuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:137
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:68
+msgid "Cancel"
+msgstr "Annulla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:803
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:164
+msgid "Invalid NickServ Rule"
+msgstr "Regola di NickServ Non Valida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:169
+msgid "The Nickname field can't be empty!"
+msgstr "Il campo Nickname non può essere vuoto!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:175
+msgid "The Nickname field can't contain spaces!"
+msgstr "Il campo NickName non può contenere spazi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:183
+msgid "The NickServ mask can't be empty!<br>You must put at least * there."
+msgstr ""
+"La maschera del NickServ non può essere vuota!<br>Devi metterci almeno *"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:191
+msgid "The Message Regexp can't be empty!<br>You must put at least * there."
+msgstr ""
+"L'espressione regolare non può essere vuota!<br>Ci devi mettere almeno *"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:199
+msgid "The Identify Command can't be empty!"
+msgstr "Il comando di identificazione non può essere vuoto!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:265
+msgid "Enable NickServ Identification"
+msgstr "Attiva Identificazione NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:269
+msgid "This check enables the automatic identification with NickServ"
+msgstr "Abilita l'identificazione automatica con il NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:276
+msgid "Nickname"
+msgstr "Nickname"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:258
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:278
+msgid "NickServ Request Mask"
+msgstr "Maschera della Richiesta del NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:265
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on all the networks."
+"<br>Please be aware that this feature can cause your NickServ passwords to "
+"be stolen if used improperly. Make sure that you fully understand the "
+"NickServ authentication protocol.<br>In other words, be sure to know what "
+"you're doing.<br>Also note that the password that you provide is stored as "
+"<b>PLAIN TEXT</b>.<br>KVIrc supports also per-network NickServ "
+"authentication rules that can be created in the \"Advanced...\" network "
+"options (accessible from the servers dialog).</center>"
+msgstr ""
+"<center>Questa è una lista di regole per l'indentificazione al NickServ. "
+"KVIrc le userà per l'interazione automatica con il NickServ di tutte le reti."
+"<br>Attenzione, questa opzione pu�causare il furto delle tue password per "
+"il NickServ se usata impropriamente. Assicurati di aver capito il protocollo "
+"di autenticazione del NickServ.<br>In altre parole, sii sicuro di ciò che "
+"stai facendo.<br>Ricorda inoltre che le password sono memorizzare come "
+"<b>SEMPLICE TESTO</b>.KVIrc supporta anche regole di autenticazione relative "
+"ad una certa rete, queste regole possono essere create nelle opzioni "
+"\"Avanzate...\" della rete ( accessibili dalla finestra dei server).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:293
+msgid "Add Rule"
+msgstr "Aggiungi Regola"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:298
+msgid "Edit Rule"
+msgstr "Modifica Regola"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:302
+msgid "Delete Rule"
+msgstr "Elimina Regola"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:31
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:36
+msgid "Font"
+msgstr "Carattere"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:38
+msgid "Foreground color"
+msgstr "Colore primo piano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:37
+msgid "Background color"
+msgstr "Colore sfondo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:34
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:44
+msgid "Background image"
+msgstr "Immagine di sfondo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:40
+msgid "Enable tray icon"
+msgstr "Abilita l'icona nel vassoio di sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:41
+msgid "Close in tray"
+msgstr "Chiudi nella tray"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:42
+msgid "Minimize in tray"
+msgstr "Minimizza nella tray"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:44
+msgid "Enable tray icon flashing"
+msgstr "Abilita il flashing dell'icona nel vassoio di sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:45
+msgid "Enable level-based message notification (not a message-type based)"
+msgstr ""
+"Abilita la notifica del messaggio basato sui livelli (non sul tipo di "
+"messaggio)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:47
+msgid "Select message levels to notify"
+msgstr "Seleziona i livelli del messaggio da notificare"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:49
+msgid "Minimum level for low-priority messages"
+msgstr "Livello minimo per i messaggi a bassa priorità"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:53
+msgid "Minimum level for high-priority message"
+msgstr "Livello minimo per i messaggi ad alta priorità"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.cpp:40
+msgid ""
+"This section contains irc protection tools<br><p>like<b> flood, ignore, "
+"antispam. </b> </p>"
+msgstr ""
+"Questa sezione contiene gli strumenti di protezione irc<br><p>come<b> flood, "
+"ignore, antispam.</b></p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:40
+msgid ""
+"<center><b>Settings for CTCP.</b></center><p>The <b>Client-To-Client "
+"Protocol</b> (CTCP) is used to transmit special control messages over an IRC "
+"connection. These messages can request information from clients or negotiate "
+"file transfers.<br><br></p>"
+msgstr ""
+"<center><b>Impostazioni CTCP.</b></center><p>Il <b>Client-To-Client-"
+"Protocol</b>(CTCP) è usato per trasmettere degli speciali messaggi di "
+"controllo su una connessione IRC. Questi messaggi possono richiedere "
+"informazioni dai client o negoziare lo scambio di file.<br><br></p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:47
+msgid "CTCP Replies"
+msgstr "Risposte CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:48
+msgid "Append to VERSION reply:"
+msgstr "Aggiungi alla risposta VERSION:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:52
+msgid ""
+"<center>This text will be appended to the CTCP VERSION reply.<br>For "
+"example, you can place a script name here.</center>"
+msgstr ""
+"<center>Questo testo verrà aggiunto alla risposta CTCP VERSION.<br>Per "
+"esempio, puoi metterci il nome di uno script.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:55
+msgid "Append to SOURCE reply:"
+msgstr "Aggiungi alla risposta SOURCE:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:59
+msgid ""
+"<center>This text will be appended to the CTCP SOURCE reply.<br>For example, "
+"you can place the source URL for a script here.</center>"
+msgstr ""
+"<center>Questo testo verrà aggiunto alla risposta CTCP SOURCE.<br>Per "
+"esempio, puoi metterci l'URL da dove scaricare uno script.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:69
+msgid "PAGE reply:"
+msgstr "Risposta PAGE:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:73
+msgid ""
+"<center>This is the CTCP PAGE reply.<br>It should contain some sort of "
+"acknowledgement for CTCP PAGE messages.</center>"
+msgstr ""
+"<center>Questa è la risposta CTCP PAGE<br>Dovrebbe contenere una specie di "
+"conferma di ricevimento dei messaggi CTCP PAGE.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:76
+msgid "Show the CTCP replies in the active window"
+msgstr "Mostra le risposte CTCP nella finestra attiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:78
+msgid "Show dialog for CTCP page requests"
+msgstr "Mostra finestra per le richieste CTCP page"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:36
+msgid "Use tree taskbar"
+msgstr "Usa lista dei canali ad albero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:37
+msgid "Sort windows by name"
+msgstr "Elenca le finestre per nome"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:38
+msgid "Show window icons in taskbar"
+msgstr "Mostra le icone delle finestre nella lista dei canali"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:39
+msgid "Show activity meter in taskbar"
+msgstr "Mostra il misuratore di attività nella lista dei canali"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:41
+msgid ""
+"<center>This option enables the usage of the taskbar activity meter. Each "
+"window entry will have a small indicator of the activity that is going on in "
+"that window. The indicator is a small square that changes colors, dark "
+"colors mean low activity, while bright colors signal high activity. KVIrc "
+"also uses some heuristics to determine whether the activity is somewhat "
+"\"human\" or it is generated by automated entities (such as bots or IRC "
+"servers). \"Human\" activity causes the indicator to be shaded red while "
+"automated activity causes the indicator to be shaded blue.</center>"
+msgstr ""
+"<center>Questa opzione abilita l'uso del misuratore di attività per la lista "
+"dei canali. Ogni finestra avrà il proprio indicatore che segnalerà l'attvità "
+"presente in quella finestra. L'indicatore è un piccolo quadrato che cambia "
+"colore: più scuro se l'attività è bassa, più chiaro se l'attività è alta. "
+"KVIrc usa l'euristica per determinare se l'attività può essere considerata "
+"\"umana\" o se è generata da entità automatiche (come i bot o i server IRC). "
+"Un attività \"umana\" fa sì che l'indicatore si colori di rosso, mentre "
+"quella automatica lo colorerà di blu. </center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:49
+msgid "Show IRC context indicator in taskbar"
+msgstr "Mostra l'indicatore del IRC context nella lista dei canali"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:50
+msgid "Enable window tooltips"
+msgstr "Attiva suggerimenti della finestra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:233
+msgid "Text/Alert Colors"
+msgstr "Colori Testo/Allerta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:125
+msgid "Normal:"
+msgstr "Normale:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:126
+msgid "Selected:"
+msgstr "Selezione:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:236
+msgid "Alert Level 1:"
+msgstr "Livello di allerta 1:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:237
+msgid "Alert Level 2:"
+msgstr "Livello di allerta 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:238
+msgid "Alert Level 3:"
+msgstr "Livello di allerta 3:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:239
+msgid "Alert Level 4:"
+msgstr "Livello di allerta 4:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:240
+msgid "Alert Level 5:"
+msgstr "Livello di allerta 5:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:241
+msgid "Progress bar color:"
+msgstr "Colore Barra di Avanzamento:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:124
+msgid "Background Colors"
+msgstr "Colore sfondo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:212
+msgid "Show header"
+msgstr "Mostra l'header"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:214
+msgid "Minimum width:"
+msgstr "Larghezza minima:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:215
+msgid "Maximum width:"
+msgstr "Larghezza massima:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:235
+msgid "Minimized:"
+msgstr "Minimizza:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:242
+msgid "Minimum width of buttons:"
+msgstr "Larghezza minima dei pulsanti:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:244
+msgid "Set maximum button width"
+msgstr "Larghezza massima:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:245
+msgid "Maximum width of buttons:"
+msgstr "Larghezza minima dei pulsanti:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:246
+msgid "Use flat buttons"
+msgstr "Usa pulsanti piatti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:96
+msgid "Network Details"
+msgstr "Dettagli Rete"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:82
+msgid "Description:"
+msgstr "Descrizione:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:116
+msgid "<center>Put here a brief description of the network.</center>"
+msgstr "<center>Metti qui una breve descrizione per la rete</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:477
+msgid "Properties"
+msgstr "Proprietà"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:123
+msgid "Username:"
+msgstr "Nome utente:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:134
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to servers "
+"on this network.\n"
+"If this field is left empty (most common case), KVIrc will use the default "
+"username specified in the \"Identity\" options tab.</center>"
+msgstr ""
+"<center>Questo è lo<b>username</b> che KVirc userà per fare il login sui "
+"server di questa rete.\n"
+"Se lasci questo campo vuoto (caso pi comune), verrà usato lo username "
+"specificato nella scheda \"Identità\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:498
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:320
+msgid "Nickname:"
+msgstr "Nickname:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:145
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to the servers on this network.<br>If this field is left empty (most "
+"common case), the default nickname (specified in the \"Identity\" settings) "
+"will be used.</center>"
+msgstr ""
+"<center>Qui puoi specificare uno \"speciale\" <b>nickname</b> che verrà "
+"utilizzato per connettersi a questo server.<br>Se lasci questo campo vuoto "
+"(nella maggior parte dei casi), verrà usato il nickname di default "
+"(specificato nella sezione \"Identità\").</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:509
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:342
+msgid "Real name:"
+msgstr "Nome vero:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:153
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with the servers on this network.<br>If you leave this field empty "
+"(most common case), the default \"real name\" (specified in the \"Identity\" "
+"settings) will be used.</center>"
+msgstr ""
+"<center>Puoi specificare uno \"speciale\" <b>nome reale</b> da usare per il "
+"login sui server di questa rete.<br>Se lasci questo campo vuoto (caso più "
+"comune), verrà usato il \"nome reale\" predefinito (specificato nella scheda "
+"\"Identità\").</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:644
+msgid "Encoding:"
+msgstr "Codifica:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:164
+msgid ""
+"<center>This box allows you to choose the preferred encoding for the servers "
+"in this network. If you choose \"Use System Encoding\" then the encoding "
+"will be set to the systemwide value that you choose in the \"Encoding\" page "
+"of the options dialog.</center>"
+msgstr ""
+"<center> Questo box ti permettere di scegliere l'encoding per i server di "
+"questa rete. Se scegli \"Usa Encoding del Sistema\" l'encoding utilizzato "
+"sar�quello dell'intero sistema che hai scelto nella scheda \"Encoding\" "
+"della finestra delle opzioni.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:173
+msgid "Use System Encoding"
+msgstr "Usa Codifica di Sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:185
+msgid "Connect to this network at startup"
+msgstr "Connetti a questa rete all'avvio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:189
+msgid ""
+"<center>This option will cause KVIrc to automatically connect to this "
+"network at startup</center>"
+msgstr ""
+"<center>Questa opzione fa sì che KVIrc si connetta a questa rete all'avvio</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:79
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:120
+msgid "General"
+msgstr "Generale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:756
+msgid "Channels to join automatically upon connect:"
+msgstr "Canali in cui entrare automaticamente una volta connesso:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:211
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to a server in this network has been established. To add a "
+"channel, type its name in the text input below and click \"<b>Add</b>\".</"
+"center>"
+msgstr ""
+"<center>Qui puoi impostare una lista di canali in cui entrare "
+"automaticamente dopo che la connessione ad un server di questa rete sia "
+"stata stabilita. Per aggiungere un canale scrivi il suo nome nel box "
+"sottostante e fai click su \"<b>Aggiungi</b>\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:217
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:62
+msgid "Join Channels"
+msgstr "Entra in un Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:228
+msgid ""
+"<center>The following commands will be executed after a connection to a "
+"server in this network has been established.<br><b>Important:</b> Enter "
+"commands <b>without</b> a preceding slash (e.g. <tt>quote pass secret</tt> "
+"instead of <tt>/quote pass secret</tt>).<br>KVIrc will first send the USER "
+"command, then eventually PASS and NICK and then execute this command "
+"sequence.</center>"
+msgstr ""
+"<center>I seguenti comandi verranno eseguiti dopo che la connessione ad un "
+"server di questa rete è stata stabilita.<br><b>Importante:</b> Inserisci i "
+"comandi <b>senza</b> lo slash che li precede (per esempio <tt>quote pass "
+"segreta</tt> invece di <tt>/quote pass segreta</tt>). KVIrc invierà per "
+"primo il comando USER, poi eventualmente PASS e NICK e poi eseguirà "
+"questa<br>sequenza di comandi. <br>Questo è particolarmente utile con i "
+"bouncer che richiedono i comandi di login</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:782
+msgid "On Connect"
+msgstr "Alla Connessione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:249
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"a server in this network.<br><b>Important:</b> Enter commands <b>without</b> "
+"a preceding slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote "
+"privatelog</tt>).<br>This is useful for automatically opening queries, "
+"setting variables, etc.</center>"
+msgstr ""
+"<center>I seguenti comandi verranno eseguiti dopo che la connessione è stata "
+"stabilita con successo.<br><b>Importante: </b>Inserisci i comandi <b>senza</"
+"b> lo slash che li precede (per esempio <tt>quote privatelog</tt> invece di "
+"<tt>/quote privatelog</tt>). Questo è particolarmente utile per aprire "
+"automaticamente query, settare delle variabili, etc.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:801
+msgid "On Login"
+msgstr "Al Login"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:285
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on this network.<br>Please "
+"be aware that this feature can cause your NickServ passwords to be stolen if "
+"used improperly. Make sure that you fully understand the NickServ "
+"authentication protocol.<br>In other words, be sure to know what you're "
+"doing.<br>Also note that the password that you provide is stored as <b>PLAIN "
+"TEXT</b>.</center>"
+msgstr ""
+"<center>Questa è una lista di regole per l'indentificazione al NickServ. "
+"KVIrc le userà come modello per l'interazione automatica con il NickServ di "
+"questa rete.<br>Attenzione, questa opzione può causare il furto delle tue "
+"password per il NickServ se usata impropriamente. Assicurati di aver capito "
+"il protocollo di autenticazione del NickServ.<br>In altre parole, sii sicuro "
+"di ciò che stai facendo.<br>Ricorda inoltre che le password sono memorizzare "
+"come <b>SEMPLICE TESTO</b>.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:35
+msgid "NickServ"
+msgstr "NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:323
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:60
+msgid "&OK"
+msgstr "&OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:449
+msgid "Server Details"
+msgstr "Dettagli del Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:465
+msgid ""
+"<center>This is a brief description of this server. This field has no "
+"restrictions but many server lists use it to describe the server's physical "
+"location</center>"
+msgstr ""
+"<center>Questa è una breve descrizione del server. Questo campo non ha "
+"restrizioni ma molte liste dei server lo usano per descrivere la locazione "
+"fisica del server</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:484
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to this "
+"server.\n"
+"If this field is left empty (most common case), KVIrc will first look if an "
+"username is specified for the network that this server belongs to, and if "
+"that is empty then KVIrc will use the default username specified in the "
+"\"Identity\" options tab.</center>"
+msgstr ""
+"<center>Questo è lo <b>username</b> che KVirc userà per fare il login a "
+"questo server.\n"
+"Se lasci questo campo vuoto (caso più comune), KVIrc guarderà prima se uno "
+"username è stato specificato per la rete a cui questo server appartiene, e "
+"se non c'è poi KVIrc userà lo username predefinito specificato nella scheda "
+"\"Identità \".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:490
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:127
+msgid "Password:"
+msgstr "Password:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:495
+msgid ""
+"<center>If this server requires a password, put it in this field, otherwise "
+"leave it empty.</center>"
+msgstr ""
+"<center>Se il server richiede una password, inseriscila in questo campo, "
+"altrimenti lascialo vuoto.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:504
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to this server.<br>If this field is left empty (most common case), "
+"KVIrc will first look if a nickname is specified for the network that this "
+"server belongs to, and if that is empty then the default nickname (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center>Qui puoi specificare uno \"speciale\" <b>nickname</b> che verrà "
+"usato per il login a questo server.<br>Se lasci questo campo vuoto ((caso "
+"più comune), KVIrc guarderà prima se un nickname è stato specificato per la "
+"rete a cui appartiene questo server, e se non c'è userà il nickanme "
+"predefinito (specificato nella scheda \"Identità\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:513
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with this server.<br>If you leave this field empty (most common case), "
+"KVIrc will first look if a real name is specified for the network that this "
+"server belongs to, and if that is empty the default \"real name\" (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center>Qui puoi specificare uno \"speciale\" <b>nome reale</b> da usare per "
+"fare il login su questo server.<br>Se lasci questo campo vuoto (caso più "
+"comune), KVIrc guarderà prima se un nome reale è stato specificato per la "
+"rete a cui appartiene questo server, e se non c'è userà il \"nome reale\" "
+"predefinito (specificato nella scheda \"Identità\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:683
+msgid "User Mode"
+msgstr "Modi Utente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:520
+msgid "Use default user mode"
+msgstr "Usa i modi utente predefiniti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:522
+msgid ""
+"<center>If this is enabled, the global initial <b>user mode</b> (configured "
+"from the identity dialog) will be used. If disabled, you can configure an "
+"initial user mode for this server"
+msgstr ""
+"<center> Se questo è abilitato, verrano inizialmente usati i <b>modi utente</"
+"b> (configurati nella finestra identità); se disabiliato, puoi configurare i "
+"modi utenti iniziali per questo server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:684
+msgid "Invisible (+i)"
+msgstr "Invisibile (+i)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:534
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:685
+msgid "Server notices (+s)"
+msgstr "Notice del server (+s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:686
+msgid "Wallops (+w)"
+msgstr "Wallops (+w)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:548
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:60
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:104
+msgid "Identity"
+msgstr "Identità"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:115
+msgid "Port:"
+msgstr "Porta:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:565
+msgid ""
+"<center>This is the default <b>port</b> that this server will be contacted "
+"on.<br>Usually <b>6667</b> is OK.</center>"
+msgstr ""
+"<center>Questa è la <b>porta<b> di default a cui il server verrà contattato. "
+"<br>Di solito la <b>6667</b> è OK.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:571
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:119
+msgid "IP address:"
+msgstr "Indirizzo IP:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:576
+msgid ""
+"<center>This is the <b>IP address</b> of this server, it is here for caching "
+"purposes.<br>If you leave this field empty, KVIrc will fill it in the first "
+"time it connects to the server. If you enable the \"cache IP address\" "
+"option below, KVIrc will use it as a \"cached result\" and avoid looking it "
+"up again.</center>"
+msgstr ""
+"<center>Questo è l'<b>indirizzo IP</b> del server, è qui solo per l'utilizzo "
+"in cache. <br>Se lasci questo campo vuoto, KVIrc lo riempirà la prima volta "
+"che si connetterà al server. Se abiliti l'opzione \"Memorizza indirizzo IP\" "
+"qui sotto, KVIrc lo userà come \"risultato messo in cache\" e eviterà di "
+"ricontrollarlo di nuovo.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:596
+msgid "Cache IP address"
+msgstr "Memorizza indirizzo IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:599
+msgid ""
+"<center>This check will enable <b>IP address caching</b> for this server:"
+"<br>DNS lookups can be time-consuming and might be blocking on some "
+"platforms; this option will cause KVIrc to look up the server hostname only "
+"once.<br><br> Advanced: you can also use this option to force a certain "
+"server name to resolve to a fixed ip address when either the dns for that "
+"server is temporairly unreachable or you want to avoid the round-robin "
+"lookups.</center>"
+msgstr ""
+"<center>Questo abilita la <b>memorizza dell'indirizzo IP</b> per questo "
+"server: <br> le richieste DNS possono consumare tempo e potrebbero essere "
+"bloccanti su alcune piattaforme; questa opzione fa sì che KVIrc risolva il "
+"nome del server solo una volta.<br><br> Avanzate: puoi usare questa opzione "
+"per forzare la risoluzione del nome di un server ad uno specifico indirizzo "
+"IP quando o il dns per quel server è temporaneamente non raggiungibile o "
+"quando vuoi evitare la ricerca in round-robin.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:609
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:140
+msgid "Use IPv6 protocol"
+msgstr "Usa protocollo IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:619
+msgid ""
+"<center>This check identifies IPv6 servers.<br>If enabled, KVIrc will "
+"attempt to use the IPv6 protocol (thus your OS <b>must</b> have a working "
+"IPv6 stack and you <b>must</b> have an IPv6 connection).</center>"
+msgstr ""
+"<center>Questo controllo identifica i server IPV6.<br>Se attivato, KVirc "
+"prover�ad usare il protocollo IPv6 (il tuo Sistema Operativo <b>deve "
+"avere</b> uno stack IPv6 funzionante e tu <b>devi avere</b> una connessione "
+"IPV6 disponibile).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:624
+msgid "Use SSL protocol"
+msgstr "Usa protocollo SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:627
+msgid ""
+"<center>This check will cause the connection to use the <b>Secure Socket "
+"Layer</b> encryption support. Obviously, this server must have support for "
+"this, too. :)</center>"
+msgstr ""
+"<center>Questo controllo fa sì che la connessione usi il supporto "
+"crittografico <b>Secure Socket Layer</b><br>. Ovviamente il server deve "
+"supportarlo :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:636
+msgid "Connect to this server at startup"
+msgstr "Connetti a questo server all'avvio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:641
+msgid ""
+"<center>This option will cause KVIrc to connect to the IRC server when it is "
+"started.</center>"
+msgstr ""
+"<center>Questa opzione fa sì che KVIrc si connetta al server IRC appena "
+"avviato</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:650
+msgid ""
+"<center>This box allows you to choose the preferred encoding for this sever. "
+"If you choose \"Use Network Encoding\" then the encoding will be inherited "
+"from the network that this server belongs to.</center>"
+msgstr ""
+"<center>Questo box ti permettere di scegliere l'encoding per questo server. "
+"Se scegli \"Usa Encoding della Rete\" l'encoding verrà ereditato "
+"dall'impostazione della rete a cui il server appartiene.<center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:659
+msgid "Use Network Encoding"
+msgstr "Usa Encoding della Rete"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:672
+msgid "Link filter:"
+msgstr "Filtro Collegamenti:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:701
+msgid ""
+"<center>This field specifies the name of a module that exports a link filter "
+"for this type of server.<br>For plain IRC connections, you don't need any "
+"link filters; this is used for incompatible protocols.</center>"
+msgstr ""
+"<center>In questo campo viene specificato il nome di un modulo che esporta "
+"il filtro per il collegamento per questo tipo di server.<br>Per una normale "
+"connessione IRC, non hai bisogno di filtri per il collegamento, viene usato "
+"solo nel caso di protocolli incompatibili.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:705
+msgid "Id:"
+msgstr "Id:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:713
+msgid ""
+"<center>This field allows you to specify a really unique id for this server. "
+"You will then be able to use /server -x &lt;this_id&gt; to make the "
+"connection. This is especially useful when you have multiple server entries "
+"with the same hostname and port in different networks (bouncers?)</center>"
+msgstr ""
+"<center>Questo campo permette di specificare un unico id per questo server. "
+"Potrai poi usare /server -x &lt;questo_id&gt; per connetterti. Ciò risulta "
+"particolarmente utile quando hai molti server con lo stesso nome e porta su "
+"reti differenti (bouncers?)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:719
+msgid "Proxy server:"
+msgstr "Server Proxy:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:724
+msgid ""
+"<center>This is the <b>proxy</b> that KVIrc will use to connect to thos "
+"server.\n"
+"If this field is set in \"Default\" KVirc will use global proxy settings, if "
+"it is set in \"Direct connection\" KVirc will connect to this server without "
+"proxy. You can define new proxy server in global options' \"Proxy servers\" "
+"menu.</center>"
+msgstr ""
+"<center>Questo è il <b>proxy</b> che KVIrc userà per connettersi ai server.\n"
+"Se questo campo è settato su \"Default\" KVIrc userà i settaggi globali per "
+"i proxy, se è settato su \"Connessione diretta\" KVIrc si connetterà a "
+"questo server senza proxy. Puoi definire dei nuovi server proxy nel menù "
+"\"Server proxy\"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:729
+msgid "Default"
+msgstr "Predefinito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:730
+msgid "Direct connection"
+msgstr "Connessione diretta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:746
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:28
+msgid "Connection"
+msgstr "Connessione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:758
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to this server has been established. To add a channel, type its "
+"name in the text input below and click \"<b>Add</b>\".</center>"
+msgstr ""
+"<center>Qui puoi impostare una lista di canali in cui entrare "
+"automaticamente dopo che la connessione ad un server è stata stabilita. Per "
+"aggiungere un canale scrivi il suo nome nel box sottostante e clicca su "
+"\"<b>Aggiungi</b>\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:776
+msgid ""
+"<center>The following commands will be executed after a connection has been "
+"established.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote pass secret</tt> instead of <tt>/quote pass secret</"
+"tt>).<br>KVIrc will first send the USER command, then eventually PASS and "
+"NICK and then execute this command sequence.<br>This is particularly useful "
+"for IRC bouncers that require login commands.</center>"
+msgstr ""
+"<center>I seguenti comandi verranno eseguiti dopo che la connessione è stata "
+"stabilita.<br><b>Importante:</b> Inserisci i comandi <b>senza</b> lo slash "
+"che li precede (per esempio <tt>quote pass segreta</tt> invece di <tt>/quote "
+"pass segreta</tt>). KVIrc invierà per primo il comando USER, poi "
+"eventualmente PASS e NICK e poi eseguirà questa<br>sequenza di comandi. "
+"<br>Questo è particolarmente utile con i bouncer che richiedono i comandi di "
+"login.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:796
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"this server.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote privatelog</tt>)."
+"<br>This is useful for automatically opening queries, setting variables, etc."
+"</center>"
+msgstr ""
+"<center>I seguenti comandi verranno eseguiti dopo il login su questo server."
+"<br><b>Importante:</b> Inserisci i comandi <b>senza</b> lo slash che li "
+"precede (per esempio <tt>quote privatelog</tt> invece di <tt>/quote "
+"privatelog</tt>). Questo è particolarmente utile per aprire automaticamente "
+"query, settare delle variabili, etc.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1041
+msgid "Server"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1042
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:73
+msgid "Description"
+msgstr "Descrizione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1054
+msgid ""
+"<center>This is the list of available IRC servers.<br>Right-click on the "
+"list to add or remove servers and perform other actions.<br>Double-click on "
+"a item for advanced options.</center>"
+msgstr ""
+"<center>Questa è la lista dei server IRC disponibili.<br>Clicca con il tasto "
+"destro sulla lista per aggiungere o rimuovere i server e e svolgere altre "
+"operazioni.<br>Doppio click su un elemento per le opzioni avanzate.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1069
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1430
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1554
+msgid "New Network"
+msgstr "Nuova Rete"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1077
+msgid "New Server"
+msgstr "Nuovo Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1086
+msgid "Remove Network/Server"
+msgstr "Rimuovi Rete/Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1098
+msgid "Copy Server"
+msgstr "Copia Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1107
+msgid "Paste Server"
+msgstr "Incolla Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1446
+msgid "Import List"
+msgstr "Importa Lista..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1125
+msgid "Active Configuration"
+msgstr "Configurazione Attuale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1332
+msgid "Server:"
+msgstr "Server:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1130
+msgid ""
+"<center>This is the name of the currently selected server or network</center>"
+msgstr "<center>Questo è il nome del server o della rete selezionato.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1153
+msgid "Advanced..."
+msgstr "Avanzate..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1156
+msgid "<center>Click here to edit advanced options for this entry</center>"
+msgstr ""
+"<center>Clicca qui per modificare le opzioni avanzate per questo elemento</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1159
+msgid "Connect &Now"
+msgstr "&Connetti Ora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1164
+msgid ""
+"<center>Hit this button to connect to the currently selected server.</center>"
+msgstr ""
+"<center>Premi questo pulsante per connetterti al server selezionato.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1177
+msgid ""
+"<center>This button shows a list of recently used servers. It allows you to "
+"quickly find them in the list.</center>"
+msgstr ""
+"<center>Questo pulsante mostra la lista dei server usati recentemente. Ti "
+"permette di trovarli rapidamente nella lista.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1181
+msgid "Show this dialog at startup"
+msgstr "Mostra questa finestra all'avvio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1184
+msgid ""
+"<center>If this option is enabled, the Servers dialog will appear every time "
+"you start KVIrc</center>"
+msgstr ""
+"<center>Se questa opzioni è abilitata, la finestra Server comparirà ogni "
+"volta che avvii KVIrc</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1335
+msgid "Network:"
+msgstr "Rete:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1345
+msgid "No selection"
+msgstr "Nessuna selezione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1364
+msgid "UnknownNet"
+msgstr "Rete sconosciuta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1431
+msgid "Remove Network"
+msgstr "Rimuovi Rete"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1434
+msgid "&New Server"
+msgstr "&Nuovo Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1435
+msgid "Re&move Server"
+msgstr "Ri&muovi server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1437
+msgid "&Copy Server"
+msgstr "&Copia Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1439
+msgid "&Paste Server"
+msgstr "&Incolla Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1444
+msgid "Clear List"
+msgstr "Pulisci Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1483
+msgid ""
+"Oops... something weird happened:<br>Can't find any module capable of "
+"importing servers."
+msgstr ""
+"Oops... è accaduto qualcosa di molto brutto: <br>Impossibile trovare un "
+"modulo capace di importare i server."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1500
+msgid ""
+"Oops... something weird happened:<br>Can't find the module that was capable "
+"of this import action. :("
+msgstr ""
+"Oops... qualcosa di molto brutto è accaduto: <br>Impossibile trovare il "
+"modulo capace di questa azione. :("
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1574
+msgid "irc.unknown.net"
+msgstr "irc.unknown.net"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:39
+msgid "Disable parser warnings"
+msgstr "Disabilita warning del parser"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:40
+msgid "Disable broken event handlers"
+msgstr "Disabilita gestori eventi corrotti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:41
+msgid "Kill broken timers"
+msgstr "Uccidi timer corrotti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:42
+msgid "Send unknown commands as /RAW"
+msgstr "Invia comandi sconosciuti come /RAW"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:46
+msgid "Automatically unload unused modules"
+msgstr "Scarica automaticamente i moduli non utilizzati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:47
+msgid "Ignore module versions (dangerous)"
+msgstr "Ignora versione moduli (pericoloso)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:51
+msgid "Relay errors and warnings to debug window"
+msgstr "Mostra gli errori e gli avvertimenti nella finestra di debug"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:52
+msgid "Create minimized debug window"
+msgstr "Crea una finestra di debug minimizzata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:59
+msgid "Nickname alternatives"
+msgstr "Nickname alternativi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:62
+msgid ""
+"<center>Here you can choose up to three nicknames alternative to the primary "
+"one. KVIrc will use the alternatives if the primary nick is already used by "
+"someone else on a particular IRC network.</center>"
+msgstr ""
+"<center>Qui puoi scegliere fino a tre nickname alternativi al primo. KVIrc "
+"usa i nickname alternativi se il primo è già usato da qualcun'altro sulla "
+"rete IRC.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:69
+msgid "Alt. Nickname 1:"
+msgstr "Alt Nickname 1:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:76
+msgid "Alt. Nickname 2:"
+msgstr "Alt Nickname 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:83
+msgid "Alt. Nickname 3:"
+msgstr "Alt Nickname 3:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Ok"
+msgstr "Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:130
+msgid "Avatar Download - KVIrc"
+msgstr "Scarica Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:136
+msgid "<center>Please wait while the avatar is being downloaded</center>"
+msgstr ""
+"<center>Attendere fino a che l'avatar è stato scaricato correttamente</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:139
+msgid "Abort"
+msgstr "Annulla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:170
+msgid "Failed to start the download"
+msgstr "Impossibile iniziare lo scaricamento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:184
+msgid "Download aborted by user"
+msgstr "Scaricamento annullato dall'utente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:213
+msgid "Choose Avatar - KVIrc"
+msgstr "Scegli un Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:219
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+"Per favore seleziona un'immagine avatar. Inserisci il percorso completo di "
+"un file locale o di un immagine presente sul Web.<br>Se vuoi usare "
+"un'immagine locale clicca sul pulsante \"<b>Sfoglia</b>\" per cercare il "
+"file.<br>L'URL estesa può essere inserita manualmente (ricordati di "
+"includere <b>http://</b>)."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:237
+msgid "&Browse..."
+msgstr "&Sfoglia..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:275
+msgid "Choose an Image File - KVIrc"
+msgstr "Scegli un Immagine - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:316
+msgid "Basic Properties"
+msgstr "Proprietà"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:323
+msgid ""
+"<center>Your <b>nickname</b> is your primary form of identification on IRC."
+"<br>Since servers cannot accept multiple users sharing the same nickname "
+"(case insensitive), you can provide alternative nicknames to be used in "
+"casethe server refuses to accept the default one.</center>"
+msgstr ""
+"<center>Il tuo <b>nickname</b> è la forma primaria di identificazione in IRC."
+"<br>Visto che i server non accettano connessioni multiple da utenti con lo "
+"stesso nickname (case insensitive), puoi fornire dei nickname alternativi "
+"che verranno usati nel caso in cui il server rifiutasse quello predefinito.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:331
+msgid "Alternatives..."
+msgstr "Alternative..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:337
+msgid ""
+"<center>This is the <b>username</b> that you will use to connect to the "
+"server.<br>In the past, it was used as a form of authentication, but it "
+"normally has no special use now.<br>In addition to your nickname, you are "
+"identified on IRC by your <b>username@hostname</b>.</br>Basically, you can "
+"enter any word you like here. :D</center>"
+msgstr ""
+"<center>Questo è il <b>nome dell'utente</b> che verrà utilizzato per "
+"connettersi al server. <br>In passato, era usato come forma di "
+"autenticazione, ma ora non ha nessun utilizzo particolare.<br>Oltre al "
+"nickname, vieni identificato su IRC dal tuo <b>nomeutente@nomehost</b>.</"
+"br>In definitiva puoi inserire qualsiasi parola di tuo gradimento :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:346
+msgid ""
+"<center>This text will appear when someone does a /WHOIS on you.<br>It is "
+"intended to be your real name, but people tend to put random quotes and "
+"phrases here too.</center>"
+msgstr ""
+"<center>Questo testo appare quando qualcuno ti richiede uno /WHOIS di te. "
+"<br>Dovrebbe essere un vero nome, ma le persone hanno l'abitudine di mettere "
+"delle citazioni casuali o delle frasi.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:351
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+"Questo campo è opzionale e apparirà come parte della risposta di un CTCP "
+"USERINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:356
+msgid "Profile"
+msgstr "Profilo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:361
+msgid "Age:"
+msgstr "Età"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:366
+msgid "Here you can specify your age."
+msgstr "Qui puoi specificare la tua età"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:401
+msgid "Unspecified"
+msgstr "Non specificato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:391
+msgid "Gender:"
+msgstr "Sesso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:396
+msgid "Here you can specify your gender."
+msgstr "Qui puoi specificare il tuo sesso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:402
+msgid "Female"
+msgstr "Femmina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:403
+msgid "Male"
+msgstr "Maschio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:414
+msgid "Location:"
+msgstr "Provenienza:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:417
+msgid ""
+"You can describe here your approximate physical location. Something like "
+"\"Region, Country\" will be ok. Please note that this information will be "
+"viewable by anyone so putting more data (like the exact address), generally, "
+"<b>is not a good idea</b>."
+msgstr ""
+"Qui puoi specificate la tua provenienza. Qualcosa come \"Regione, Nazione\" "
+"andrà bene. Nota che queste informazioni saranno visibili agli altri, "
+"mettere troppe informazioni (come per esempio il tuo indirizzo esatto),"
+"generalmente <b>non è una buona idea</b>."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:422
+msgid "Languages:"
+msgstr "Lingue:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:425
+msgid ""
+"You can put here the short names of the languages you can speak. An example "
+"might be \"EN,IT\" that would mean that you speak both Italian and English."
+msgstr ""
+"Qui puoi inserire il nome delle lingue che conosci. Per esempio \"EN,IT\" "
+"che significa che parli sia Italiano che Inglese"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:429
+msgid "Other:"
+msgstr "Altro:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:432
+msgid ""
+"You can put here some additional personal data. It might be a funny quote or "
+"your homepage url... Please note that this information will be viewable by "
+"anyone so <b>don't put any sensible data</b> (passwords, telephone or credit "
+"card numbers)."
+msgstr ""
+"Qui puoi inserire altri informazioni personali. Per esempio una frasi "
+"simpatica o l'url della tua homepage... Nota che queste informazioni saranno "
+"visibili per chiunque quindi <b>non metterci dati sensibili</b> (password, "
+"numeri di telefono o numeri di carte di credito)."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:502
+msgid ""
+"Here you can choose your avatar image. It will be visible<br>by other people "
+"that request it. Choose a nice image of yourself,<br>possibly avoiding "
+"obscenity and offending images. It is a good idea<br>to choose a relatively "
+"small file (say 150 Kb max) because<br>most clients have a limit on the size "
+"of avatars being downloaded.<br>The image also should be smaller than "
+"800x600 pixels since<br>it will have to be viewable in everyone's monitor."
+msgstr ""
+"Qui puoi scegliere l'immagine per il tuo avatar. Sarà visibile<br>dalle alle "
+"persone che lo richiedono. Scegli una tua immagine carina,<br>possibilmente "
+"evitando oscenità e immagini offensive. E' una buona idea<br>scegliere un "
+"file relativamente piccolo (diciamo 150 Kb max) perché<br>molti client hanno "
+"un limite sulla dimensione degli avatar da scaricare.<br>L'immagine inoltre "
+"dev'essere più piccola di 800x600 pixel in modo<br>da essere vista sul "
+"monitor di tutti."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:511
+msgid "Use avatar"
+msgstr "Usa Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:537
+msgid "Choose..."
+msgstr "Scegli..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:598
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:637
+msgid "Failed to Load Avatar - KVIrc"
+msgstr "Impossibile Caricare l'Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:599
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:638
+msgid ""
+"Failed to load the avatar image.<br>It may be an unaccessible file or an "
+"unsupported image format."
+msgstr ""
+"Impossibile caricare l'immagine avatar.<br>Potrebbe essere un file non "
+"accessibile o un formato non supportato. "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:606
+msgid "Failed to download the avatar image.<br><b>%Q</b>"
+msgstr "Impossibile scaricare l'immagine avatar.<br><b>%Q</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:608
+msgid "Avatar Download Failed - KVIrc"
+msgstr "Impossibile Scaricare l'Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:649
+msgid "Avatar Might Be Too Big - KVIrc"
+msgstr "L'avatar potrebbe essere troppo grosso - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:650
+msgid ""
+"The avatar you have choosen is bigger than 1024x768 pixels.<br>Such a big "
+"image will not be seen on all the user monitors<br>and will probably be "
+"scaled by the remote clients with poor quality<br>algorithms to improve "
+"performance. You *should* scale it manually<br>to a sane size (like 800x600) "
+"or choose a different image."
+msgstr ""
+"L'avatar scelto è più grande di 1024x768 pixel.<br>Un'immagine così grossa "
+"potrebbe non essere vista sui monitor di tutti<br>e probabilmente verrà "
+"scalata dal client remoto con una bassa qualità<br>per migliorare le "
+"prestazioni. *Dovresti* scalarla manualmente<br>a una grandezza decente "
+"(tipo 800x600) o scegliere un'altra immagine."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:688
+msgid "Default Messages"
+msgstr "Messaggi Predefiniti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:691
+msgid "Part message:"
+msgstr "Messaggio di uscita da un canale:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:695
+msgid ""
+"<center>This is the default part message that will be used when you<br>leave "
+"a channel by closing a channel window.</center>"
+msgstr ""
+"<center>Questo è il messaggio predefinito che verrà usato quando<br>esci da "
+"un canale chiudendo la finestra di quel canale.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:699
+msgid "Quit message:"
+msgstr "Messaggio di quit:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:702
+msgid ""
+"<center>This is the default quit message that will be used when you<br>quit "
+"your IRC session by closing the console window or disconnecting by pressing "
+"the disconnect button.</center>"
+msgstr ""
+"<center>Questo è il messaggio di disconnessione predefinito che verrà usato "
+"quando<br>uscirai dalla tua sessione IRC chiudendo la finestra della console "
+"o disconnettendoti premendo il pulsante di disconnessione.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:42
+msgid "Open Query For"
+msgstr "Apri query per"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:40
+msgid "Private messages"
+msgstr "Messaggi privati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:46
+msgid ""
+"<center>This option enables query window creation when a private message "
+"(PRIVMSG) is received.<br>If you disable this, private messages will be "
+"shown in the active window or a common channel.</center>"
+msgstr ""
+"<center>Questa opzione abilita la creazione di finestre di query quando un "
+"messaggio privato (PRIVMSG) viene ricevuto<br>Se la disabiliti, i messaggi "
+"privati verranno mostrati nella finestra attiva.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:42
+msgid "Private notices"
+msgstr "Notice privati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:55
+msgid ""
+"<center>This option enables query window creation when a private notice "
+"(NOTICE) is received.<br>If you disable this, private notices will be shown "
+"in the active window or a common channel.</center>"
+msgstr ""
+"<center>Questa opzione abilita la creazione di finestre di query quando "
+"viene ricevuto un notice privato (NOTICE)<br>Se lo disabiliti, gli avvisi "
+"verranno mostrati nella finestra attiva.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:62
+msgid "Always open queries as minimized"
+msgstr "Apri tutte le query minimizzate"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:66
+msgid ""
+"<center>This option causes newly created query windows to be immediately "
+"minimized.<br>Enable this if you don't like queries popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+"<center>Questa opzione fa sì che le nuove finestre di query vengano "
+"minimizzate immediatamente.<br>Abilitala se non vuoi che le query si aprano "
+"mentre stai scrivendo qualcosa in un canale :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:74
+msgid "Enable target user tracking"
+msgstr "Abilita tracciamento dell'utente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:77
+msgid ""
+"<center>This option will enable target user tracking.<br>Some actions of the "
+"target user (e.g. joins and parts) will be displayed in the window.<br></"
+"center>"
+msgstr ""
+"<center>Questa opzione fa sì che tu possa tenere traccia degli spostamenti "
+"dell'utente.<br>Alcune azioni dell' utente (per esempio entrare o uscire da "
+"un canale) verranno mostrate nella fienstra.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:83
+msgid "Flash system taskbar on new query message"
+msgstr ""
+"Fai lampeggiare la barra delle applicazioni del sistema quando c'è un nuovo "
+"messaggio in query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:86
+msgid ""
+"<center>This option causes the system taskbar entry for KVIrc to flash when "
+"a new query message is received and the KVIrc window is not the active.</"
+"center>"
+msgstr ""
+"<center>Questa opzione fa sì che la barra delle applicazioni del sistema "
+"lampeggi quando viene ricevuto un nuovo messaggio in query e la finestra di "
+"KVIrc non è attiva.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:91
+msgid "Popup notifier on new query message"
+msgstr "Mostra la finestra di notifica quando c'è un nuovo messaggio in query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:94
+msgid ""
+"<center>This option causes a small notifier window to pop up in the low "
+"right corner of the screen when a new message is received and the KVIrc "
+"window is not active.</center>"
+msgstr ""
+"<center>Questa opzione fa sì che una piccola finestra di notifica venga "
+"mostrata nell'angolo in basso a destra dello schermo quando viene ricevuto "
+"un nuovo messaggio in query e la finestra di KVIrc non è attiva</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:98
+msgid "Show information about query target at the top of the query"
+msgstr "Mostra informazioni sul destinatario nella finestra della query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:101
+msgid ""
+"<center>This option enables query window information label. It can show you "
+"known information about query target at the top of the window.<br>Uncheck if "
+"you think,that it wastes your query space/</center>"
+msgstr ""
+"<center>Questa opzione abilita le informazioni sulle query. Può mostrarti le "
+"informazioni sul destinatario della query in alto nella finestra."
+"<br>Deselezionala se credi, che occupino solo spazio nella finestra</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:39
+msgid "Use global application font"
+msgstr "Usa un carattere generale per l'applicazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:40
+msgid "Hide icons in Popup"
+msgstr "Nascondi le Icone nei Menu Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:41
+msgid "Global application font:"
+msgstr "Carattere generale per l'applicazione:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:67
+msgid "Enable fake transparency"
+msgstr "Abilita falsa trasparenza"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:71
+msgid ""
+"<center>This option makes all KVIrc windows look transparent.<br>You must "
+"choose a blending background image to below or check the \"Use KDE desktop "
+"for transparency\" option.</center>"
+msgstr ""
+"<center>Questa opzione fa sì che tutte le finestre di KVIrc siano "
+"trasparenti.<br>Devi scegliere un immagine di sfondo, o attivare l'opzione "
+"\"Usa il desktop di KDE per la trasparenza\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:77
+msgid ""
+"<center>This option makes all KVIrc windows look like transparent.<br>You "
+"must choose a blending background image to below.</center>"
+msgstr ""
+"<center>Questa opzione fa sì che tutte le finestre di KVIrc siano "
+"trasparenti.<br>Devi scegliere un immagine di sfondo.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:83
+msgid "Child window opacity:"
+msgstr "Opacità finestre:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:87
+msgid "Parent window opacity:"
+msgstr "Opacità finestra di sfondo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:91
+msgid "Blend color:"
+msgstr "Colore sfumatura:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:97
+msgid "Use KDE desktop for transparency"
+msgstr "Usa il desktop di KDE per la trasparenza"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:102
+msgid "Keep in sync with KDE background changes"
+msgstr "Mantieniti in sincronia con lo sfondo di KDE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:111
+msgid "Transparency blend image:"
+msgstr "Immagine da sfumare:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:155
+msgid "Active Background"
+msgstr "Sfondo attivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:156
+msgid "Inactive Background"
+msgstr "Sfondo non attivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:157
+msgid "Active Text (Primary)"
+msgstr "Testo Attivo (Primario)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:158
+msgid "Active Text (Secondary)"
+msgstr "Testo Attivo (Secondario)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:159
+msgid "Inactive Text (Primary)"
+msgstr "Testo Inattivo (Primario)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:160
+msgid "Inactive Text (Secondary)"
+msgstr "Testo Inattivo (Secondario)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:197
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:44
+msgid "Background"
+msgstr "Sfondo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:178
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:205
+msgid "Background Image"
+msgstr "Immagine di Sfondo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:198
+msgid "Low-Contrast Foreground"
+msgstr "Colore in primo piano a basso contrasto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:199
+msgid "Mid-Contrast Foreground"
+msgstr "Colore in primo piano a medio contrasto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:200
+msgid "Active High-Contrast Foreground (Primary)"
+msgstr "Colore primario attivo in primo piano ad alto contrasto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:201
+msgid "Active High-Contrast Foreground (Secondary)"
+msgstr "Colore secondario attivo in primo piano ad alto contrasto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:202
+msgid "Inactive High-Contrast Foreground (Primary)"
+msgstr "Colore primario inattivo in primo piano ad alto contrasto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:203
+msgid "Inactive High-Contrast Foreground (Secondary)"
+msgstr "Colore secondario inattivo in primo piano ad alto contrasto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:40
+msgid "Scaling in userlist"
+msgstr "Scala nella lista utenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:41
+msgid "Scale avatar images in userlist (recommended)"
+msgstr "Scala immagine Avatar (raccomandato)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:43
+msgid ""
+"<center>This option will force KVIrc to scale avatars shown in the userlist."
+"<br>Avatars will be scaled to fit the constraints set below. Better keep "
+"this option on. :)</center>"
+msgstr ""
+"<center>Questa opzione forza KVIrc a scalare gli avatar mostrati nella "
+"userlist.<br>Gli avatar verranno scalati in base ai limiti del rettangolo "
+"settatti qui sotto. Meglio attivare questa opzione :).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:48
+msgid "Do not scale avatar if it is less than required size"
+msgstr "Non ridimensionare l'avatar se è minore della dimensione richiesta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:59
+msgid "Image width:"
+msgstr "Larghezza dell'immagine:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:61
+msgid "Image height:"
+msgstr "Altezza immagine:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:56
+msgid "Scaling on load (and in user tooltips)"
+msgstr "Scala al caricamento (e nelle tooltip utente)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:57
+msgid "Scale avatar images on image load"
+msgstr "Scala immagine Avatar al caricamento"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:65
+msgid "Request CTCP"
+msgstr "Richiesta CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:66
+msgid "Request missing avatars"
+msgstr "Richiedi avatar mancanti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:67
+msgid "Maximum requested file size:"
+msgstr "Dimensione massima del file richiesto:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to send a DCC GET request when someone "
+"sets an avatar and there is no cached copy available.</center>"
+msgstr ""
+"<center>Questa opzione fa sì che KVIrc invii una richiesta DCC GET se "
+"qualcuno setta un avatar e non ci sono copie disponibili in cache.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:74
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:317
+msgid " bytes"
+msgstr " bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:77
+msgid ""
+"<center>This is the maximum size for avatar images that will be "
+"automatically requested.<br>A reasonable value might be 102400 bytes (100 K)."
+"</center>"
+msgstr ""
+"<center>Questa è la dimensione massima per gli avatar che<br>verrà "
+"automaticamente richiesta.<br>Un valore ragionevole può essere 102400 Byte "
+"(100 KB)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:83
+msgid "Automatically accept incoming avatars"
+msgstr "Accetta automaticamente Avatar in entrata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:87
+msgid ""
+"<center>This option will cause KVIrc to auto-accept DCC SEND requests for "
+"incoming avatars.<br>If you're using the \"Request missing avatars\" option "
+"above, enabling this may by useful.<br>Avatars will be saved in the local "
+"KVIrc directory.</center>"
+msgstr ""
+"<center>Questa opzione fa sì che KVIrc auto-accetti le richieste di DCC SEND "
+"per gli avatar in entrata<br>Se usi l'opzione \"Richiedi avatar mancanti\", "
+"usare anche questo può essere una buona idea.<br> Gli avatar verranno "
+"salvati nella directory locale di KVIrc</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:94
+msgid "Remember avatars for registered users"
+msgstr "Ricorda gli avatar per gli utenti registrati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:99
+msgid ""
+"<center>Use a user's last known avatar by default (only for users that are "
+"registered).</center>"
+msgstr ""
+"<center>Setta l'ultimo avatar dell'utente come avatar predefinito (solo per "
+"gli utenti registrati).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:103
+msgid "Avatar offer timeout:"
+msgstr "Tempo di scadenza dell'offerta dell'avatar:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:104
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:162
+msgid " sec"
+msgstr " sec"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:107
+msgid ""
+"<center>This is the amount of time to make an avatar available for transfer "
+"when requested.<br>When someone sends a CTCP AVATAR request, KVIrc will "
+"reply with a CTCP AVATAR message containing the name and size of your avatar "
+"image.<br>A time-limited file offer is added for the image file to the "
+"requesting user.</center>"
+msgstr ""
+"<center>Questa è la quantità di tempo in cui si rende disponibile al "
+"trasferimento un avatar quando richiesto.<br>Quando qualcuno manda un CTCP "
+"AVATAR request, KVIrc risponderà con un CTCP AVATAR messagge contenente il "
+"nome e la grandezza del tuo avatar.<br>Un'offerta limitata nel tempo per il "
+"file dell'avatar è aggiunta per l'utente che l'ha richiesto.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:115
+msgid "Ignore requests if no avatar is set"
+msgstr "Ignora la richiesta se non hai impostato nessun avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:118
+msgid ""
+"This option will cause KVIrc to ignore channel CTCP AVATAR requests when you "
+"have no avatar set. This is usually a good practice since it helps in "
+"reducing traffic by not sending a reply that would be empty."
+msgstr ""
+"Questa opzione fa sì che KVIrc ignori la richiesta nel canale di CTCP "
+"AVATAR, quando tu non hai impostato nessun avatar. E' consigliato abilitarlo "
+"perché aiuta a ridurre il traffico non inviando una risposta che "
+"risulterebbe vuota."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:39
+msgid "Use online notify list"
+msgstr "Usa online notify list "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:44
+msgid "Configuration"
+msgstr "Configurazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:45
+msgid "Show notifications in active window"
+msgstr "Mostra notifiche nella finestra attiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:50
+msgid "Flash window when users are going online"
+msgstr "Fai lampeggiare la finestra quando gli utenti sono online"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:55
+msgid "Popup notifier when users are going online"
+msgstr "Mostra finestra di notifica quando gli utenti sono online"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:59
+msgid "Advanced configuration"
+msgstr "Configurazione avanzata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:64
+msgid "Check USERHOST for online users"
+msgstr "Controlla USERHOST per gli utenti online"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:69
+msgid "Use \"smart\" notify list manager"
+msgstr "Usa il gestore \"intelligente\" della notify list"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:74
+msgid "Use the WATCH method if available"
+msgstr "Usa il metodo WATCH se disponibile"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:79
+msgid "Check interval (in seconds)"
+msgstr "Intervallo di controllo (in secondi)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:85
+msgid "ISON delay (in seconds)"
+msgstr "Ritardo ISON (in secondi)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:91
+msgid "USERHOST delay (in seconds)"
+msgstr "Ritardo USERHOST (in secondi)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:96
+msgid ""
+"<p><b>Note:</b><br>The notify list is managed using the \"Registered Users\" "
+"settings.</p>"
+msgstr ""
+"<p><b>Nota:</b><br>La notify list è gestita usando le impostazioni degli "
+"\"Utenti Registrati\"</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:112
+msgid "Forcibly and completely disable the notifier"
+msgstr "Disabilita completamente la finestra di notifica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:115
+msgid ""
+"This is an option for the impatient: it allows to forcibly and permanently "
+"disable the notifier window. Please note that if this option is activated "
+"then the notifier will NOT popup even if all the other options around "
+"specify to use it in response to particular events. Also note that this "
+"option will make all the /notifier.* commands fail silently."
+msgstr ""
+"Questa opzione è per chi non ha pazienza: permette di disabilitare "
+"forzatamente e permanentemente la finestra di notifica. Notare che se questa "
+"opzione è attivata la finestra di notifica NON apparirà anche se tutte le "
+"altre opzioni ne specificano l'uso in risposta a particolari eventi. Da "
+"notare inoltre che questa opzione farà fallire senza avvisi tutti i comandi /"
+"notifier.* ."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:123
+msgid "Disable notifier window flashing"
+msgstr "Disabilita il flashing della finestra di notifica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:124
+msgid "Disable notifier window fade effect"
+msgstr "Disabilita l'effetto fading della finestra di notifica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:39
+msgid "Default away message:"
+msgstr "Messaggio di Away predefinito:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:41
+msgid "User input exits away mode"
+msgstr "All'input da parte dell'utente esci dallo stato di away"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:43
+msgid "Away Nickname"
+msgstr "Nickname Away"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:44
+msgid "Change nickname on away"
+msgstr "Cambia nick quando entri in modalità away"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:47
+msgid "Use automatic nickname ([5 letters]AWAY)"
+msgstr "Usa nickname automatico ([prime 5 lettere ]AWAY)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:55
+#, c-format
+msgid "Custom nickname (%%nick%% means a current nick):"
+msgstr "Nickname (%%nick%% significa nick corrente):"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/libkvioptions.cpp:199
+msgid "No such options page class name %Q"
+msgstr "Non c'è tale nome di classe nella pagina delle opzioni %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:47
+msgid "Use system URL handlers"
+msgstr "Usa il gestore URL di sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:50
+msgid "<b>http://</b> handler command:"
+msgstr "comando gestore <b>http://</b>:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:51
+msgid "<b>https://</b> handler command:"
+msgstr "comando gestore <b>https://</b>:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:52
+msgid "<b>ftp://</b> handler command:"
+msgstr "comando gestore <b>ftp://</b>:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:53
+msgid "<b>mailto:</b> handler command:"
+msgstr "comando gestore <b>mailto:</b>:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:54
+msgid "<b>file://</b> handler command:"
+msgstr "comando gestore <b>file://</b>:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:55
+msgid "Unknown protocol handler command:"
+msgstr "Comando gestore del protocollo sconosciuto:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:61
+msgid "Use proxy"
+msgstr "Usa Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:65
+msgid "Proxy"
+msgstr "Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:76
+msgid ""
+"<center>This is the list of available proxy servers.<br>Right-click on the "
+"list to add or remove proxies.</center>"
+msgstr ""
+"<center>Questa è la lista dei server proxy disponibili.<br>Click con il "
+"tasto destro sulla lista per aggiungere o rimuovere i proxy.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:90
+msgid "New Proxy"
+msgstr "Nuovo proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:99
+msgid "Remove Proxy"
+msgstr "Rimuovi proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:111
+msgid "Proxy:"
+msgstr "Proxy:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:131
+msgid "Protocol:"
+msgstr "Protocollo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:336
+msgid "&New Proxy"
+msgstr "&Nuovo Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:337
+msgid "Re&move Proxy"
+msgstr "Ri&muovi Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:71
+msgid "Pattern"
+msgstr "Pattern"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:72
+msgid "MIME Type"
+msgstr "MIME Type"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:87
+msgid "MIME type:"
+msgstr "MIME:type:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:92
+msgid "File pattern:"
+msgstr "File pattern:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:97
+msgid "Magic bytes:"
+msgstr "Bytes magici:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:102
+msgid "Save path:"
+msgstr "Salva percorso:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:107
+msgid "Local open command:"
+msgstr "Apri con:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:112
+msgid ""
+"<center>This field contains the command to execute to open a local file."
+"<br><tt>$0</tt> is used in place of the filename</center>"
+msgstr ""
+"<center>Questo campo contiene il comando da eseguire per aprire il file."
+"<br><tt>$0</tt> è usato al posto del nome del file</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:116
+msgid "Remote open command:"
+msgstr "Apri automaticamente con:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:121
+msgid ""
+"<center>This field contains the command to execute when automatically "
+"opening a received file.<br><tt>$0</tt> is used in place of the filename</"
+"center>"
+msgstr ""
+"<center>Questo campo contiene il comando da eseguire quando vuoi che il file "
+"ricevuto sia aperto automaticamente.<br><tt>$0</tt> è usato al posto del "
+"nome del file</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:125
+msgid "Icon"
+msgstr "Icona"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:134
+msgid "&New"
+msgstr "&Nuovo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:138
+msgid "Re&move"
+msgstr "Ri&muovi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:184
+msgid "[Unknown Media Type]"
+msgstr "[Tipo di File Sconosciuto]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:230
+msgid "New Media Type"
+msgstr "Nuovo Tipo di File"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:53
+msgid "Nickname Colors"
+msgstr "Colore Nickname"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:56
+msgid "Channel owner:"
+msgstr "Owner del canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:57
+msgid "Channel admin:"
+msgstr "Admin del Canale:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:58
+msgid "Op:"
+msgstr "Op:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:59
+msgid "Half-op:"
+msgstr "Half-op:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:60
+msgid "Voice:"
+msgstr "Voice:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:61
+msgid "User-op:"
+msgstr "User-op:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:62
+msgid "Away:"
+msgstr "Away:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:66
+msgid "Use different color for own nick:"
+msgstr "Usa colori differenti per i propri nick:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:81
+msgid "Draw nickname grid"
+msgstr "Disegna griglia dei Nickname"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:83
+msgid "Grid color:"
+msgstr "Colore Griglia:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:90
+msgid "Grid type:"
+msgstr "Tipo di Griglia:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:94
+msgid "3D Grid"
+msgstr "Griglia 3D"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:95
+msgid "3D Buttons"
+msgstr "Pulsante 3D"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:96
+msgid "Plain Grid"
+msgstr "Griglia Semplice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:97
+msgid "Dotted Grid"
+msgstr "Griglia a puntini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:131
+msgid "Horizontal Alignment:"
+msgstr "Allineamento orizzontale:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:135
+msgid "Vertical Alignment:"
+msgstr "Allineamento verticale:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:231
+msgid "Show gender icons"
+msgstr "Mostra icone del sesso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:232
+msgid "Show user channel icons"
+msgstr "Mostra icone per gli utenti del canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:233
+msgid "Show user channel activity indicator"
+msgstr "Mostra indicatore di attività degli utenti nei canali"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:234
+msgid "Hide users label"
+msgstr "Nascondi etichette utenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:235
+msgid "Enable user tooltips"
+msgstr "Attiva tooltip utente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:236
+msgid "Hide avatars"
+msgstr "Nascondi gli avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:79
+msgid "Use flood protection (recommended)"
+msgstr "Usa protezione flood (raccomandato)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:81
+msgid ""
+"<center>This option makes KVIrc only respond to a limited number of CTCP "
+"requests within a specified time interval, to prevent \"flooding\" CTCP "
+"messages.</center>"
+msgstr ""
+"<center>Questa opzione fa sì che KVIrc risponda solo ad un numero limitato "
+"di richieste CTCP entro uno specifico intervallo di tempo, per prevenire un "
+"\"flood\" di mesaggi CTCP.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:83
+msgid "Allow up to:"
+msgstr "Permetti al massimo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:84
+msgid " requests"
+msgstr " richieste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:86
+msgid ""
+"<center>Minimum value: <b>0 requests</b><br>Maximum value: <b>10000 "
+"requests</b></center>"
+msgstr ""
+"<center>Valore minimo: <b>0 richieste</b><br>Valore massimo: <b>10000 "
+"richieste</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:89
+msgid "within:"
+msgstr "in:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:92
+msgid ""
+"<center>Minimum value: <b>1 sec</b><br>Maximum value: <b>3600 sec</b></"
+"center>"
+msgstr ""
+"<center>Valore minimo: <b>1 sec</b><br>Valore massimo: <b>3600 sec</b></"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:96
+msgid "Ignored Requests"
+msgstr "Richieste Ignorate"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:97
+msgid "PING"
+msgstr "PING"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:98
+msgid "FINGER"
+msgstr "FINGER"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:99
+msgid "CLIENTINFO"
+msgstr "CLIENTINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:100
+msgid "USERINFO"
+msgstr "USERINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:101
+msgid "VERSION"
+msgstr "VERSION"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:102
+msgid "SOURCE"
+msgstr "SOURCE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:103
+msgid "TIME"
+msgstr "TIME"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:104
+msgid "PAGE"
+msgstr "PAGE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:105
+msgid "AVATAR"
+msgstr "AVATAR"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:106
+msgid "DCC/TDCC"
+msgstr "DCC/TDCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:131
+msgid "General Preferences"
+msgstr "Impostazioni Generali"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:134
+msgid "Theme Preferences"
+msgstr "Preferenze Tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:136
+msgid "KVIrc Preferences"
+msgstr "Preferenze KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:139
+msgid ""
+"This dialog contains a set of KVIrc settings.<br> Use the icons on the left "
+"to navigate through the option pages. The text box in the bottom left corner "
+"is a small search engine. It will highlight the pages that contain options "
+"related to the search term you have entered."
+msgstr ""
+"Questo dialog contiene un set di settaggi KVIrc.<br>Usa i pulsanti sulla "
+"sinistra per navigare attraverso le opzioni. La casella in basso a sinistra "
+"è un piccolo motore di ricerca. Evidenzierà le pagine che contengono le "
+"opzioni relative alle parole che hai cercato."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:147
+msgid ""
+"Many settings have tooltips that can be shown by holding the cursor over "
+"their label for a few seconds."
+msgstr ""
+"Molti settaggi hanno dei tooltip che possono essere mostrati tenendo il "
+"cursore del mouse sopra la loro etichetta per qualche secondo."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:152
+msgid ""
+"When you have finished, click \"<b>OK</b>\" to accept your changes or "
+"\"<b>Cancel</b>\" to discard them. Clicking \"<b>Apply</b>\" will commit "
+"your changes without closing the window."
+msgstr ""
+"Quando hai finito, clicca \"<b>OK</b>\" per accettare i cambiamenti o "
+"\"<b>Annulla</b>\" per tralasciarli. Cliccando \"<b>Applica</b>\" salverai i "
+"cambiamenti senza chiudere la finestra."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:217
+msgid ""
+"<p>This is the search tool for this options dialog.</p><p>You can enter a "
+"search term either in your native language or in english and press the "
+"button on the right. The pages that contain some options related to the "
+"search term will be highlighted and you will be able to quickly find them.</"
+"p><p>Try \"nickname\" for example.</p>"
+msgstr ""
+"<p>Questo è lo strumento di ricerca per questa dialog.</p><p>Puoi inserire "
+"una parola da cercare nella tua lingua o in inglese e premere il pulsante "
+"sulla destra. Le pagine che contengono delle opzioni relative alla parola "
+"cercata saranno evidenziate e tu sarai così in grado di trovarle velocemente."
+"</p><p>Per esempio prova ad inserire \"nickname\".</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:249
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:61
+msgid "Close this dialog, accepting all changes."
+msgstr "Chiudi questa finestra, confermando tutti i cambiamenti."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:255
+msgid "&Apply"
+msgstr "&Applica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:256
+msgid "Commit all changes immediately."
+msgstr "Applica tutti i cambiamenti immediatamente."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:69
+msgid "Close this dialog, discarding all changes."
+msgstr "Chiudi questa finestra, scartando tutti i cambiamenti."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:149
+msgid ""
+"This table contains the text icon associations.<br>KVirc will use them to "
+"display the CTRL+I escape sequences and eventually the emoticons."
+msgstr ""
+"Questa tabella contiene delle icone associate al testo.<br>KVirc le userà "
+"per mostrare la sequenza Ctrl+I o eventualmente le emoticons."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:165
+msgid "Add"
+msgstr "Aggiungi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:169
+msgid "Delete"
+msgstr "Cancella"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:191
+msgid "unnamed"
+msgstr "senza nome"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:53
+msgid "Enable word highlighting"
+msgstr "Attiva evidenziazione parole"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:55
+msgid "Words to highlight:"
+msgstr "Parole da evidenziare:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:57
+msgid "Word splitters:"
+msgstr "Separatori di parola:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:59
+msgid "Highlight messages containing my nickname"
+msgstr "Evidenzia i messaggi contenenti il mio nickname"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:61
+msgid ""
+"<center>If this option is enabled, KVIrc will highlight any user message "
+"containing your current nickname</center>"
+msgstr ""
+"<center>Se questa opzione è abilitata, KVIrc evidenzierà qualunque messaggio "
+"contenga il tuo nickname corrente</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:63
+msgid "Flash the system taskbar entry on highlighted messages"
+msgstr ""
+"Fai lampeggiare la barra delle applicazioni del sistema quando ci sono "
+"messaggi evidenziati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:65
+msgid ""
+"<center>If this option is enabled, KVIrc will (attempt to) flash the system "
+"taskbar entry when a highlighted message is printed and KVIrc is not the "
+"active window</center>"
+msgstr ""
+"<center>Questa opzione fa sì che la barra delle applicazioni del sistema "
+"lampeggi quando ci sono messaggi evidenziati e la finestra di KVIrc non è "
+"attiva</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:67
+msgid "Popup the notifier window on highlighted messages"
+msgstr "Mostra la finestra di notifica quando ci sono messaggi evidenziati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:69
+msgid ""
+"<center>If this option is enabled, KVIrc will popup a little notifier window "
+"in the low right corner of your desktop when a highlighted message is "
+"printed and KVIrc is not the active window</center>"
+msgstr ""
+"<center>Se questa opzione è abilitata, KVIrc mostrerà una piccola finestra "
+"di notifica nell'angolo in basso a destra del desktop quando ci sono "
+"messaggi evidenziati e KVIrc non è la finestra attiva</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:91
+msgid "Alert Restrictions"
+msgstr "Restrizioni d'Allerta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:92
+msgid "Restrict alert"
+msgstr "Avvisi limitati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:94
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if a "
+"normal message is received in a channel.<br>Actions like joins, parts and "
+"mode changes will be ignored.<br> This is useful if you are in channels with "
+"a high rate of traffic and only want to be alerted for messages that are "
+"interesting to you.</center>"
+msgstr ""
+"<center>Se questa opzione è abilitata, KVIrc ti avvertirà nella lista dei "
+"canali solo se ricevi un messaggio normale in un canale.<br>Le azioni come "
+"le entrate, le uscite e il cambio dei modi saranno ignorate.<br>Questo è "
+"molto utile se sei in un canale con molto traffico e vuoi essere avvertito "
+"solo dei messaggi che potrebbero interessarti.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:96
+msgid "Alert for highlighted words"
+msgstr "Avvisa per i messaggi evidenziati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:98
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which contain a word from the highlighted words list above.</center>"
+msgstr ""
+"<center>Se questa opzione è abilitata, la lista dei canali ti avvertirà "
+"anche dei messaggi contenenti una parola presente nella lista delle parole "
+"da evidenziare</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:100
+msgid "Alert for query messages"
+msgstr "Avvisa dei messaggi di query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:102
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which are shown in queries.</center>"
+msgstr ""
+"<center>Se questa opzione è abilitata, la lista dei canali ti avvertirà "
+"anche dei messaggi mostrati in query</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:107
+msgid "Use custom alert level"
+msgstr "Usa livello di avviso definito dall'utente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:109
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if "
+"the specified alert level is reached.</center>"
+msgstr ""
+"<center>Se questa opzione è abilitata, KVIrc ti avvertirà nella lista dei "
+"canali solo se il livello di allerta specificato viene raggiunto.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:111
+msgid "Minimum alert level:"
+msgstr "Livello di allerta minimo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:114
+msgid ""
+"<center>This option sets the minimum alert level for the taskbar.</center>"
+msgstr ""
+"<center>Questa opzione imposta il livello minimo di allerta per la lista dei "
+"canali.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:213
+msgid "Output verbosity"
+msgstr "Messaggi da visualizzare"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:49
+msgid "Mute"
+msgstr "Muto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:50
+msgid "Quiet"
+msgstr "Silenzioso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:51
+msgid "Normal"
+msgstr "Normale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:52
+msgid "Verbose"
+msgstr "Dettagliato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:53
+msgid "Paranoic"
+msgstr "Paranoico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:59
+msgid "Show in active window"
+msgstr "Mostra nella finestra attiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:60
+msgid "External messages"
+msgstr "Messaggi esterni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:61
+msgid "External CTCP replies"
+msgstr "Risposte CTCP Esterne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:62
+msgid "Whois replies"
+msgstr "Risposte whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:63
+msgid "ChanServ and NickServ notices"
+msgstr "Avvisi ChanServ e NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:64
+msgid "Invite messages"
+msgstr "Messaggio di Invito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:65
+msgid "Server replies"
+msgstr "Risposte del Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:66
+msgid "Server notices"
+msgstr "Avvisi del server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:67
+msgid "Broadcast and WALLOPS messages"
+msgstr "Messaggi Broadcast e WALLOPS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:70
+msgid "Show extended server information"
+msgstr "Mostra informazioni dettagliate del server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:71
+msgid "Show server pings"
+msgstr "Mostra i ping del server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:72
+msgid "Show own parts in the console"
+msgstr "Mostra i propri /PART nella console"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:73
+msgid "Show compact mode changes"
+msgstr "Mostra modifiche dei modi in modalità  compatta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:43
+msgid "Minimize on startup"
+msgstr "Minimizza all'avvio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:44
+msgid "Confirm quit with active connections"
+msgstr "Chiedi conferma di uscita quando ci sono delle connessioni attive"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:45
+msgid "Remember window properties"
+msgstr "Ricorda le proprietà delle finestre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:50
+msgid "Disable splash screen"
+msgstr "Disabilita lo splash screen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:54
+msgid "Enable visual effects"
+msgstr "Abilita effetti grafici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:55
+msgid "Hide Channel window tool buttons by default"
+msgstr "Nascondi i pulsanti della finestra come default"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:57
+msgid "Open Dialog Window For"
+msgstr "Apri una Finestra Per"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:58
+msgid "Preferences"
+msgstr "Preferenze"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:59
+msgid "Registered Users"
+msgstr "Utenti Registrati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:149
+msgid "Servers"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.cpp:40
+msgid ""
+"This section contains irc tools<br><p>like<b> away, lag and logging system. "
+"</b> </p>"
+msgstr ""
+"Questa sezione contine gli strumenti per irc<br><p>come<b> away, lag e "
+"sistema di logging. </b></p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:39
+msgid "On Disconnect"
+msgstr "Alla Disconnessione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:42
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:55
+msgid "Keep channels open"
+msgstr "Lascia i canali aperti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:44
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after disconnect."
+"</center>"
+msgstr ""
+"<center>Questa opzione permette a KVIrc di lasciare aperte le finestre dei "
+"canali dopo una disconnessione inattesa.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:47
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:60
+msgid "Keep queries open"
+msgstr "Mantieni aperte le finestre delle query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:49
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after disconnect.</"
+"center>"
+msgstr ""
+"<center>Questa opzione permette a KVIrc di lasciare aperte le finestre delle "
+"query dopo una disconnessione inaspettata.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:52
+msgid "On Unexpected Disconnect"
+msgstr "Dopo una Disconnessione Inaspettata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+"<center>Questa opzione permette a KVIrc di lasciare aperte le finestre dei "
+"canali dopo una disconnessione inattesa.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:62
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+"<center>Questa opzione permette a KVIrc di lasciare aperte le finestre delle "
+"query dopo una disconnessione inaspettata.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:65
+msgid "Rejoin channels after reconnect"
+msgstr "Rientra nei canali dopo la riconnessione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:67
+msgid ""
+"<center>This option will cause KVIrc to rejoin channels after a successful "
+"reconnect attempt.</center>"
+msgstr ""
+"<center>Questa opzione permette a KVIrc di rientrare nei canali dopo una "
+"riconnessione effettuata con successo.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:69
+msgid "Reopen queries after reconnect"
+msgstr "Riapri query dopo la riconnessione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to reopen query windows after a "
+"successful reconnect attempt.</center>"
+msgstr ""
+"<center>Questa opzione permette a KVIrc di riaprire le finestre della query "
+"dopo una riconnessione effettuata con successo.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:75
+msgid "Automatically reconnect"
+msgstr "Riconnessione Automatica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:77
+msgid ""
+"<center>This option will enable auto-reconnecting after an unexpected "
+"disconnect. An unexpected disconnect is the <b>termination</b> of a <b>fully "
+"connected IRC session</b> that was <b>not requested by the user</b> by the "
+"means of the QUIT message.<p><b>Warning:</b> If you use /RAW to send a QUIT "
+"message to the server, this option will not behave correctly, since does not "
+"detect the outgoing QUIT message and will attempt to reconnect after the "
+"server has closed the connection. For this reason, always use the /QUIT "
+"command to close your connections. This option may also behave incorrectly "
+"with bouncers that support detaching, in this case a solution could be to "
+"prepare an alias that sends the bouncer \"detach\" command immediately "
+"before the \"quit\" command.<br><tt>alias(bncdetach){ raw bouncer detach; "
+"quit; }</tt></p></center>"
+msgstr ""
+"<center>Questa opzione attiva l'auto-riconnessione dopo una disconnessione "
+"inaspettata. Una disconenssione inaspettata è la <b>terminazione</b> di una "
+"<b>sessione IRC</b> che <b>non è stata richiesta dall'utente</b> tramite un "
+"messaggio di QUIT.<p><br>ATTENZIONE:</b> se usi /RAW per inviare al server "
+"il messaggio di QUIT questa opzione si comporterà in modo non corretto, "
+"perché non rileva il messaggio outgoingQUIT e tenterà di riconnettersi dopo "
+"che il server ha chiuso la connessione. Per questa ragione, usa sempre il "
+"comando /QUIT per chiudere le tue connessioni. Questa opzione può inoltre "
+"comportarsi in modo sbagliato con i bouncer che supportano il detaching: in "
+"questo caso una soluzione può essere creare un alias che invii al bouncer il "
+"comando \"deatach\" prima del comando \"quit\".<br><tt>alias(bncdetach){ raw "
+"bouncer detach; quit; }</tt></p></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:89
+msgid "Maximum attempts (0: unlimited):"
+msgstr "Numero massimo tentativi (0: infiniti):"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:94
+msgid "Delay between attempts:"
+msgstr "Distanza tra i tentativi:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:100
+msgid ""
+"<center>Minimum value: <b>0 sec</b><br>Maximum value: <b>86400 sec</b></"
+"center>"
+msgstr ""
+"<center>Valore Minimo:<b>0 sec</b><br>Valore Massimo: <b>86400 sec</b></"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:123
+msgid "Certificate"
+msgstr "Certificato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:125
+msgid "Use SSL certificate (PEM format only)"
+msgstr "Usa certificato SSL (solo formato PEM)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:127
+msgid "Certificate location:"
+msgstr "Locazione del certificato:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:130
+msgid "Certificate password:"
+msgstr "Password del certificato:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:134
+msgid "Private Key"
+msgstr "Chiave Privata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:135
+msgid "Use SSL private key"
+msgstr "Usa chiave privata SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:137
+msgid "Private key location:"
+msgstr "Locazione della chiave privata:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:140
+msgid "Private key password:"
+msgstr "Password della chiave privata:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:146
+msgid "This executable has no SSL support."
+msgstr "Questo eseguibile non ha il supporto SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:165
+msgid "Timeout Values"
+msgstr "Valore Tempo Massimo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:166
+msgid "Connect timeout:"
+msgstr "Tempo di scadenza della connessione:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:168
+msgid "Outgoing data queue flush timeout:"
+msgstr "Tempo svuotamento coda dati in uscita:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:170
+msgid "Limit outgoing traffic"
+msgstr "Limita il traffico in uscita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:171
+msgid "Limit to 1 message every:"
+msgstr "Limitati ad 1 messaggio ogni:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:173
+msgid " usec"
+msgstr " usec"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:175
+msgid ""
+"<center>Minimum value: <b>10000 usec</b><br>Maximum value: <b>10000000 usec</"
+"b></center>"
+msgstr ""
+"<center>Valore minimo: <b>10000 usec</b><br>Valore massimo: <b>10000000 "
+"usec</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:179
+msgid "Network Interfaces"
+msgstr "Interfaccie di Rete"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:181
+msgid "Bind IPv4 connections to:"
+msgstr "Bind connessione IPv4 a:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:185
+msgid "Bind IPv6 connections to:"
+msgstr "Bind connessione IPv6 a:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:210
+msgid "Enable ident service (bad practice on UNIX!)"
+msgstr "Attiva servizio ident (sconsigliato su UNIX!)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:216
+msgid "Output identd messages to:"
+msgstr "Scrivi i messaggi identd su:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:218
+msgid "Active window"
+msgstr "Finestra attiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:219
+msgid "Console"
+msgstr "Console"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:220
+msgid "Do not show any identd messages"
+msgstr "Non mostrare i messaggi di identd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:237
+msgid "Enable ident service only while connecting to server"
+msgstr "Abilta il servizio ident solo mentre connetti al server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:240
+msgid "Ident username:"
+msgstr "Ident username:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:243
+msgid "Service port:"
+msgstr "Porta del servizio:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:248
+msgid "IPv6 Settings"
+msgstr "Impostazioni IPV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:249
+msgid "Enable service for IPv6"
+msgstr "Attiva il servizio per IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:258
+msgid "IP stack treats IPv4 as part of IPv6 namespace"
+msgstr "Lo stack IP tratta l'IPv4 come parte dello spazio dei nomi IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:265
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications. If it is possible, install a real ident daemon.</p>"
+msgstr ""
+"<p><b>Attenzione:</b><br> questo è un demone ident <b>non RFC1413/913 "
+"compatibile</b> che implementa solo un sottoinsieme limitato delle "
+"specifiche del protocollo di Identificazione. Se è possibile, installa un "
+"vero demone ident.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:270
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications.<br>On UNIX, you may also need root privileges to bind to the "
+"auth port (113).<br>It is <b>highly recommended</b> that a <b>real</b> "
+"system-wide ident daemon be used instead, or none at all if ident is not "
+"required.</p>"
+msgstr ""
+"<p><b>Attenzione:</b><br>questo è un demone ident <b>non RFC1413 "
+"compatibile</b> che implementa solo un sottoinsieme limitato delle "
+"specifiche del Protocollo di Identificazione.<br>Su UNIX inoltre c'è bisogno "
+"dei privilegi di root per bindare la porta 113.<br>E' <b>vivamente "
+"consigliato</b> usare un <b>vero</b> demone ident, oppure nessuno se l'ident "
+"non è indispensabile.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.cpp:39
+msgid ""
+"This section contains the general client options<br><p>like<b> sound, "
+"mediafiles, URL handler </b> etc... </p>"
+msgstr ""
+"Questa sezione contiene le opzioni generali<br><p>per esempio<b> suoni, "
+"multimedia, gestori delle URL </b> etc... </p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:39
+msgid "Automatically Log"
+msgstr "Log Automatico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:40
+msgid "Query windows"
+msgstr "Finestre di Query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:41
+msgid "Channel windows"
+msgstr "Finestre di Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:42
+msgid "DCC Chat windows"
+msgstr "Finestre di DCC Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:43
+msgid "Console windows"
+msgstr "Finestre di Console"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:45
+msgid "Gzip logs"
+msgstr "Gzip logs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:47
+msgid "Strip colors in logs"
+msgstr "Elimina i colori nei log"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:48
+msgid "Auto flush logs every"
+msgstr "Svuota i log automaticamente ogni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:49
+msgid " min"
+msgstr " min"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:52
+msgid ""
+"<center>Save logs with the current interval<br>Set to 0 to disable this "
+"feature</center>"
+msgstr ""
+"<center>Salva i log a intervalli regolari<br>Setta questo parametro a 0 per "
+"disabilitare questa funzione</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:49
+msgid "Minimize console after successful login"
+msgstr "Minimizza la console dopo un login effettuato con successo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:52
+msgid ""
+"<center>This option will cause KVIrc to minimize the console window after "
+"successfully logging into a server.</center>"
+msgstr ""
+"<center>Questa opzione fa sì che KVIrc minimizzi la finestra della console "
+"dopo un login effettuato con successo.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:55
+msgid "Show network name in console taskbar entry"
+msgstr "Mostra il nome della rete nella console"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to show the network name as the console "
+"taskbar entry instead of the server name. This is nice to keep on unless "
+"your servers are not organized in networks or you often connect to two "
+"servers of the same network.</center>"
+msgstr ""
+"<center>Quest'opzione farà in modo che KVIrc mostrerà il nome della rete "
+"come nella console invece del nome del server. Questo è efficace quando i "
+"tuoi server non sono organizzati in reti o se connetti più server della "
+"stessa rete.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:75
+msgid "Force immediate quit"
+msgstr "Forza l'uscita immediata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:78
+msgid ""
+"<center>This option causes KVIrc to close the connection immediately after "
+"sending the QUIT message.<br>When this option is disabled, KVIrc will wait "
+"for the server to close the connection.<br>Note that if you use this, your "
+"QUIT message may be not displayed.</center>"
+msgstr ""
+"<center>Questa opzione fa sì che KVIrc chiuda la connessione immediatamente "
+"dopo aver spedito il messaggio di QUIT.<br>Quando questa opzione è "
+"disabilitata, KVIrc aspetterà che il server chiuda la connessione."
+"<br>Attenzione, se usi questa opzione il tuo messaggio di QUIT potrebbe non "
+"essere visualizzato.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:84
+msgid "Prepend gender info to realname"
+msgstr "Aggiungi informazioni sul sesso nel realname"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:110
+msgid "On Channel Kick"
+msgstr "Su Kick dal Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:112
+msgid "Rejoin channel"
+msgstr "Rientra nei Canali"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:115
+msgid ""
+"<center>This option will cause KVIrc to attempt to rejoin a channel after "
+"being kicked.</center>"
+msgstr ""
+"<center>Questa opzione fa sì che KVIrc tenti di rientrare in un canale dopo "
+"essere stato kickato</center>."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:129
+msgid "Keep channel open"
+msgstr "Lascia i canali aperti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:121
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"being kicked.<br>It might be a good idea to also enable the \"Rejoin channel"
+"\" option.</center>"
+msgstr ""
+"<center>Questa opzione fa sì che KVIrc lasci aperta la finestra del canale "
+"dopo essere stato kickato.<br>E' una buona idea attivare anche l'opzione "
+"\"Rientra nei canali\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:127
+msgid "On Channel Part"
+msgstr "Alla Partenza dal Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:132
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"leaving it.</center>"
+msgstr ""
+"<center> Questa opzione fa sì che KVIrc lasci aperte le finestre dei canali "
+"dopo l'uscita.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:136
+msgid "Automatically join channel on invite"
+msgstr "Entra automaticamente in un canale quando ti invitano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:139
+msgid ""
+"<center>This option will cause KVIrc to automatically join a channel when an "
+"INVITE message for that channel is received.<br><b>Warning:</b> This may "
+"help spammers harass you. :)</center>"
+msgstr ""
+"<center>Questa opzione fa sì che KVIrc entri automaticamente in un canale "
+"quando un messaggio di INVITO viene ricevuto.<br><b>Attenzione: </b>può "
+"essere un aiuto per spammer che vogliono dar fastidio :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:144
+msgid "Always open channels as minimized"
+msgstr "Apri i canali minimizzati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:148
+msgid ""
+"<center>This option causes newly created channel windows to be immediately "
+"minimized.<br>Enable this if you don't like channels popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+"<center>Questa opzione fa sì che le nuove finestre dei canali vengano "
+"minimizzate immediatamente.<br>Abilitala se non vuoi che i canali si aprano "
+"mentre stai scrivendo qualcosa in un canale :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:168
+msgid "Log joined channels history"
+msgstr "Log dei canali joinati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:170
+msgid "Default ban mask:"
+msgstr "Maschera di ban predefinita:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:188
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:202
+msgid "On Channel Join"
+msgstr "Quando Entri in un Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:189
+msgid "Do not send /WHO request"
+msgstr "Non inviare richieste /WHO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:190
+msgid "Do not request ban list"
+msgstr "Non richiedere la lista dei ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:191
+msgid "Do not request ban exception list"
+msgstr "Non richiedere la lista delle eccezioni ai ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:192
+msgid "Do not request invite list"
+msgstr "Non richiedere lista degli inviti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:194
+msgid "Do not update the away list"
+msgstr "Non aggiornare la lista degli utenti away"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:197
+msgid ""
+"<center>KVIrc sends out a channel /WHO message every now and then to keep "
+"the channel away list in sync. Use this option to disable this feature (and "
+"to save your IRC bandwidth.</center>"
+msgstr ""
+"<center>KVIrc invia al canale un messaggio /WHO per tenere aggiornata la "
+"lista degli utentu away. Usa questa opzione per disabilitare questo "
+"comportamento (e risparmiare sulla banda per IRC.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:203
+msgid "Echo channel topic"
+msgstr "Mostra topic del canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:204
+msgid "Show channel sync time"
+msgstr "Mostra il tempo di sincronizzazione del canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:40
+msgid "Default text encoding:"
+msgstr "Codifica Testo Predefinita:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:109
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:133
+msgid "Use Language Encoding"
+msgstr "Usa Codifica Linguaggio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:59
+msgid "Force language:"
+msgstr "Forza lingua:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:65
+msgid "<b>Note:</b> You need to restart KVirc to apply a language changing"
+msgstr ""
+"<b>Nota:</b>La nuova lingua sarà applicata al prossimo riavvio di KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:68
+msgid "Automatic detection"
+msgstr "Rilevamento automatico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:69
+msgid "en"
+msgstr "en"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Unable to write language information to"
+msgstr "Impossibile scrivere le informazioni della lingua su"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:39
+msgid "Enable Anti-spam For"
+msgstr "Attiva Anti-Spam Per"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:45
+msgid "Silent anti-spam (no warnings)"
+msgstr "Anti-spam silenzioso (nessun avvertimento)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:46
+msgid "Words considered spam:"
+msgstr "Parole considerate Spam:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:51
+msgid "Use workaround for firewall"
+msgstr "Usa workaround per il firewall"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:54
+msgid ""
+"<center>Enable this option if you can't accept incoming connections."
+"<br>KVIrc will try to use different methods to send and receive files."
+"<br>Please note that these methods may NOT work when communicating with a "
+"non-KVIrc client.</center>"
+msgstr ""
+"<center>Abilita questa opzione se non puoi accettare connessioni in "
+"entrata<br>KVIrc proverà ad usare delle tecniche differenti per inviare e "
+"ricevere i file<br>Attenzione queste tecniche potrebbero NON funzionare con "
+"altri client.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:73
+msgid "Network Properties"
+msgstr "Proprietà Rete"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:75
+msgid "Use user-defined address or network interface"
+msgstr "Usa indirizzo o interfaccia di rete definita dall'utente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:79
+msgid ""
+"<center>Enable this option if you are on a multihost machine and want to "
+"force one of the available IP addresses to be used for outgoing DCCs."
+"<br>This is especially useful when you use IPv6 and IPv4 addresses.<br>You "
+"can force KVIrc to always choose the IPv4 interface.</center>"
+msgstr ""
+"<center>Abilita questa opzione se sei su una macchina con più IP e vuoi "
+"forzare l'uso di uno degli indirizzi per le DCC in uscita.<br>Questo è "
+"particolarmente utile quando usi indirizzi IPv6 e IPv4.<br>Puoi forzare "
+"KVIrc a scegliere sempre l'interfaccia IPv4. </center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:84
+msgid "Listen on address/interface:"
+msgstr "Stai in ascolto sull'indirizzo/intrerfaccia:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:87
+msgid ""
+"<center>This is the IP address or name of the interface to use by default "
+"for outgoing DCC transfers.<br>On UNIX systems that support it, you can also "
+"specify IPv4 interface names (such as <b>ppp0</b>).<br>If you set it to "
+"<b>0.0.0.0</b>, KVIrc will try to use the first available IPv4 interface</"
+"center>"
+msgstr ""
+"<center>Questo è l'indirizzo o il nome dell'interfaccia usata di default per "
+"i trasferimenti in uscita delle DCC.<br>Sui sistemi UNIX che lo supportano, "
+"puoi usare il nome dell'interfaccia IPv4 (come <b>ppp0</b>).<br>Se lo setti "
+"come <b>0.0.0.0</b>, KVIrc tenterà di trovare la prima interfaccia IPv4 "
+"disponibile</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:94
+msgid "Use user-defined port range"
+msgstr "Usa il range di porte locali definite dall'utente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:97
+msgid ""
+"<center>Enable this option if you want specify a local port range for DCC.</"
+"center>"
+msgstr ""
+"<center>Abilita questa opzione se vuoi definire un range di porte locali per "
+"le DCC</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:102
+msgid "Lowest port:"
+msgstr "Porta bassa:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:105
+msgid "Highest port:"
+msgstr "Porta alta:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:108
+msgid "Send a fixed address in requests"
+msgstr "Invia un indirizzo fisso nelle richieste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:111
+msgid ""
+"<center>Enable this option if you want to always send a fake IP address in "
+"your DCC requests.<br>This might be useful if you're behind a router with a "
+"static address that does network address translation (NAT) and forwards all "
+"or a range of ports.</center>"
+msgstr ""
+"<center>Abilita questa opzione se vuoi che venga sempre inviato un indirizzo "
+"IP falso nelle tue richieste di DCC. <br>Questo può essere utile se sei "
+"dietro un router che fa la traduzione degli indirizzi del network. (NAT) e "
+"inoltra tutte o un range di porte.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:115
+msgid "Send address/interface:"
+msgstr "Invia indirizzo/interfaccia:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:119
+msgid ""
+"<center>This is the fixed address that will be sent with all DCC requests if "
+"you enable the option above.</center>"
+msgstr ""
+"<center>Abilitando l'opzione sopra verrà inviato questo indirizzo fisso con "
+"tutte le richieste DCC</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:123
+msgid "Guess address from IRC server if unroutable"
+msgstr ""
+"Ottieni l'indirizzo tramite il server IRC se l'indirizzo attuale risulta "
+"locale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:128
+msgid ""
+"<center>You can enable this option if you are behind a router that forwards "
+"all or a range of ports.<br>KVIrc will try to guess the IP address to use "
+"for DCC by looking up the local hostname as seen by the IRC server you're "
+"connected to.<br>This method is an exclusive alternative to the \"fixed "
+"address\" above.<br>It might guess the correct address automatically if "
+"certain conditions are met (e.g. the IRC server does not mask hostnames).</"
+"center>"
+msgstr ""
+"<center>Puoi abilitare questa opzione se sei dietro un router che inoltra "
+"tutte o un range di porte<br>KVIrc proverà a ottenere l'indirizzo IP da "
+"usare per le DCC controllando come viene visto l'hostname locale dal server "
+"IRC al quale sei connesso.<br>Questo metodo è un'alternativa all'uso "
+"dell'opzione soprastante \"indirizzo fisso\".<br>Potrebbe ottenere "
+"l'indirizzo corretto se alcune condizioni vengono garantite (per esempio, il "
+"server IRC non maschera il nome dell'host).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:134
+msgid "Use \"broken bouncer hack\" to detect address"
+msgstr "Usa \"broken bouncer hack\" per determinare l'indirizzo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:137
+msgid ""
+"<center>When you're behind a dialup router and also tunneling through a "
+"psyBNC bouncer, you can use a bug in the bouncer to force KVIrc to bind the "
+"DCC connections to the dialup router's address.<br>It's an ugly hack - use "
+"it only if nothing else works.</center>"
+msgstr ""
+"<center>Quando sei connesso dietro un router dialup oppure attraverso un "
+"tunnel con un bouncer psyBNC, puoi sfruttare un bug del bouncer che forza "
+"KVIrc a fare il bind della connessione DCC all'indirizzo del router.<br>E' "
+"un brutto hack - usalo solo nel caso in cui niente altro funzioni</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:144
+msgid "Notify failed DCC handshakes to the remote end"
+msgstr "Notifica le connessioni DCC fallite all'host remoto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:147
+msgid ""
+"<center>If you enable this option, when a DCC request from a remote user "
+"can't be satisfied KVIrc will notify him by a CTCP ERRMSG. This is a nice "
+"feature so it is a good idea to leave it on unless for some reason you have "
+"deactivated the antiflood system: in this case turning off this option might "
+"help if you often get attacked by CTCP floods.</center>"
+msgstr ""
+"<center>Abilitando questa opzione, quando una richiesta DCC da un utente "
+"remoto non può essere soddisfatta KVIrc informerà l'utente con un CTCP "
+"ERRMSG. E' una cosa utile ed è quindi una buona idea abilitarla a meno che "
+"per qualche ragione tu abbia disattivato il sistema antiflood: in questo "
+"caso disabilitare questa opzione potrebbe aiutarti se sei spesso attaccato "
+"con flood CTCP.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:154
+msgid "Maximum number of DCC sessions"
+msgstr "Numero massimo di sessioni DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:156
+msgid ""
+"<center>This is the maximum number of concurrent DCC sessions and it "
+"includes all the DCC types (send,chat,recv...). KVIrc will refuse the "
+"requests when this limit is reached.</center>"
+msgstr ""
+"<center>Questo è il numero massimo di sessioni DCC e include tutti i tipi di "
+"DCC (send, char, recv...). KVIrc rifiuta ogni richiesta quando viene "
+"raggiunto il limite.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:161
+msgid "DCC socket timeout:"
+msgstr "Tempo di scadenza del socket DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:164
+msgid ""
+"<center>This is the amount of time that KVIrc will wait for a response "
+"before assuming that a DCC has failed because the remote client was unable "
+"to connect to our listening socket.</center>"
+msgstr ""
+"<center>Questo è il tempo che KVIrc aspetterà prima di decidere che la DCC è "
+"fallita perché il client remoto non è in grado di connettersi al tuo socket "
+"in ascolto.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:198
+msgid "On Incoming File"
+msgstr "Su File in Entrata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:371
+msgid "Automatically accept"
+msgstr "Accetta Automaticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:200
+msgid "Open transfer window as minimized when auto-accepted"
+msgstr "Apri la finestra di trasferimento minimizzata quando auto-accettata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:201
+msgid "Automatically resume when auto-accepted"
+msgstr "Riprendi automaticamente lo scaricamento quando auto-accettata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:203
+msgid "Save Location"
+msgstr "Luogo di Salvataggio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:204
+msgid "Download folder:"
+msgstr "Cartella dei File Scaricati:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:205
+msgid "Sort saved files by nicknames (create subfolders)"
+msgstr "Ordina i file salvati creando sottodirectory col nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:206
+msgid "Guess save path from media type"
+msgstr "Ottieni il percorso di salvataggio dal tipo di file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:209
+msgid "On Download Completion"
+msgstr "Allo Scaricamento dei File"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:210
+msgid "Notify completion in console"
+msgstr "Notifica fine in console"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:211
+msgid "Notify completion in notifier"
+msgstr "Notifica il completamento nella finestra di notifica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:212
+msgid "Automatically clear transfer"
+msgstr "Pulisci i trasferimenti automaticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:215
+msgid ""
+"<center>This option will cause succesfully terminated transfers to be "
+"automatically removed from the transfer window.</center>"
+msgstr ""
+"<center>Questa opzione fa sì che KVIrc rimuova automaticamente i "
+"trasferimenti completati dalla finestra di trasferimento.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:220
+msgid "Always open transfer window as minimized"
+msgstr "Apri sempre la finestra di trasferimento minimizzata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:238
+msgid "Bug Compatibility"
+msgstr "Compatibilità con i Bug"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:239
+msgid "Send ACK for byte 0"
+msgstr "Invia ACK per 0 byte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:242
+msgid ""
+"<center>This option causes KVIrc to send a zero-byte acknowledge to kick-"
+"start the DCC transfer with some buggy IRC clients.<br>Use it only if your "
+"DCC transfers stall just after establishing a connection without sending any "
+"data.</center>"
+msgstr ""
+"<center>Questa opzione fa sì che KVIrc invii 0 byte per forzare l'inizio del "
+"trasferimento DCC con alcuni client IRC buggati.<br>Usa questa opzione solo "
+"se i trasferimenti DCC vanno in stallo appena stabilita una connessione, "
+"senza inviare alcun dato.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:247
+msgid "Accept broken RESUME (mIRC file.ext)"
+msgstr "Accetta RESUME interrotti (mIRC file.ext)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:250
+msgid ""
+"<center>This option causes KVIrc to accept RESUME requests with invalid "
+"filenames.<br>Use it if KVIrc fails to accept RESUME requests from other "
+"clients (e.g. some versions of mIRC).</center>"
+msgstr ""
+"<center>Questa opzione fa sì che KVIrc accetti una richiesta di RESUME con "
+"un nome di file non valido.<br>Usala nel caso KVIrc non riuscisse ad "
+"accettare le richieste di RESUME da un altro client (per esempio delle "
+"versioni di mIRC).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:254
+msgid "Replace spaces with underscores in outgoing filenames"
+msgstr "Sostituisci gli spazi con degli underscore nei nomi dei file in uscita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:257
+msgid ""
+"<center>This option causes KVIrc to replace spaces with underscores in "
+"filenames for all the outgoing file transfers. This will fix filename "
+"handling with some buggy clients (e.g. some versions of mIRC)."
+msgstr ""
+"<center>Questa opzione permette a KVIrc di accettare una richiesta di RESUME "
+"con un nome di file non valido.<br>Usala nel caso KVIrc non riesca ad "
+"accettare le richieste di RESUME da un altro client (per esempio delle "
+"versioni di mIRC).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:262
+msgid "Limits"
+msgstr "Limiti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:265
+msgid "Limit upload bandwidth to"
+msgstr "Limita banda in upload a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:273
+msgid "bytes/sec"
+msgstr "bytes/sec"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:271
+msgid "Limit download bandwidth to"
+msgstr "Limita banda in download a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:277
+msgid "Maximum number of DCC transfers"
+msgstr "Numero massimo di DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:279
+msgid ""
+"<center>This is the maximum number of concurrent DCC transfers. KVIrc will "
+"refuse the requests when this limit is reached.</center>"
+msgstr ""
+"<center>Questo è il numero massimo di trasferimenti DCC. KVIrc rifiuta ogni "
+"richiesta quando viene raggiunto il limite.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:283
+msgid "Tweaks"
+msgstr "Ritocchi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:285
+msgid "Use fast send (send ahead)"
+msgstr "Usa invio veloce (send ahead)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:288
+msgid ""
+"<center>The \"send ahead\" DCC method allows data to be sent faster by "
+"breaking some of the rules of the original DCC SEND protocol specification."
+"<br>Most clients can handle this kind of optimisation so disable it only if "
+"you have problems.</center>"
+msgstr ""
+"<center>Il metodo DCC \"send ahead\" ti permette di inviare dati pi "
+"velocemente, non rispettando delle regole del protocollo originale DCC SEND."
+"<br>Molti client supportano questo tipo di ottimizzazione, quindi "
+"disabilitalo solo se incontri dei problemi.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:295
+msgid "Force idle step"
+msgstr "Forza interruzioni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:298
+msgid ""
+"<center>Enable this option when the dcc file transfers tend to block your "
+"computer by consuming too much CPU time. When this option is enabled the "
+"idle interval below will be forcibly inserted between each sent/received "
+"data packet.</center>"
+msgstr ""
+"<center>Abilita questa opzione quando i trasferimenti attraverso DCC tendono "
+"a rallentare eccessivamente il computer a causa dell'alto consumo di CPU. "
+"Quando questa opzione è abilitata l'intervallo di inattività scelto sarà "
+"inserito tra ogni pacchetto inviato/ricevuto.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:310
+msgid ""
+"<center>This parameter controls the average delay between two packets sent "
+"or received.<br>A smaller interval will cause you to send data faster but "
+"will also add load to your CPU, disk and network interface.<br>Reasonable "
+"values are from 5 to 50 milliseconds.</center>"
+msgstr ""
+"<center>Questo parametro permette di controllare il ritardo medio tra due "
+"pacchetti inviati o ricevuti.<br>Un intervallo breve ti permetterà di "
+"inviare dati più velocemente ma caricherà di lavoro la tua CPU, il disco e "
+"l'interfaccia di rete.<br>Valori ragionevoli sono tra 5 e 50 millisecondi.</"
+"center> "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:316
+msgid "Packet size:"
+msgstr "Dimensione del pacchetto:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:320
+msgid ""
+"<center>This parameter controls the packet size used for DCC SEND.<br>With "
+"bigger packets you will be probably send data faster, but you will also "
+"saturate your bandwidth and in some cases cause more disk activity."
+"<br>Reasonable values are from 512 to 4096 bytes.</center>"
+msgstr ""
+"<center>Questo parametro permette di controllare la dimensione dei pacchetti "
+"usati nelle DCC SEND.<br>Con dei pacchetti molto grossi probabilmente "
+"invierai i dati più velocemente, ma questo saturerà la tua connessione e in "
+"alcuni casi aumenterà l'attività del disco.<br>I valori ragionevoli sono tra "
+"512 e 4096 byte.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:349
+msgid "On Chat Request"
+msgstr "Su Richiesta di Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:351
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:373
+msgid "Open minimized when auto-accepted"
+msgstr "Crea minimizzata quando auto-accettata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:353
+msgid "Always open as minimized"
+msgstr "Apri sempre minimizzata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:369
+msgid "Open all minimized"
+msgstr "Apri tutte minimizzate"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:370
+msgid "On Voice Request"
+msgstr "Su Richiesta Voice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:376
+msgid "Force half-duplex mode on sound device"
+msgstr "Forza modo half-duplex nel dispositivo sonoro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:377
+msgid "Volume slider controls PCM, not Master"
+msgstr "Lo slider del volume controlla il PCM, non il Master"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:379
+msgid "Sound device:"
+msgstr "Dispositivo del suono:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:380
+msgid "Mixer device:"
+msgstr "Dispositivo Mixer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:382
+msgid "Pre-buffer size:"
+msgstr "Dimensione del pre-buffer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:38
+msgid "Enable Ignore For"
+msgstr "Abilita ignore per"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:39
+msgid "Private/channel messages"
+msgstr "Messaggio Privato/Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:40
+msgid "Private/channel notices"
+msgstr "Notice Privato/Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:44
+msgid "Use verbose ignore (show messages in console)"
+msgstr "Usa Ignora dettagliato (mostra i messaggi nella console)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:46
+msgid "Sound System"
+msgstr "Sistema sonoro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:66
+msgid "This allows you to select the sound system to be used with KVIrc."
+msgstr ""
+"Questo ti permette di scegliere il sistema sonoro che deve essere usato con "
+"KVIrc."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:72
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:88
+msgid "Auto-detect"
+msgstr "Auto-Rilevamento:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:91
+msgid "Test"
+msgstr "Test"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:79
+msgid "Media Player"
+msgstr "Lettore Multimediale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:81
+msgid ""
+"This allows you to select the preferred media player to be used with the "
+"mediaplayer.* module commands and functions."
+msgstr ""
+"Questo ti permette di selezionare il lettore multimediale che deve essere "
+"usato dai comandi e dalle funzioni del modulo mediaplayer.*"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:102
+msgid "ID3 tags' encoding"
+msgstr "Encoding tag ID3:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:104
+msgid "This allows you to select encoding of mp3 tags."
+msgstr "Questo ti permette di scegliere il sistema di codifica per il tag mp3."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:125
+msgid "Winamp messages ecoding"
+msgstr "Codifica Messaggi di Winamp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:127
+msgid "This allows you to select encoding of winamp messages."
+msgstr "Questo ti permette di scegliere la codifica per i messaggi di winamp."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:290
+msgid "New Query opened"
+msgstr "Mantieni aperte le finestre delle query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:293
+msgid "New message in inactive query"
+msgstr "Nuovo messaggio nella query inattiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:296
+msgid "Highlighted message in inactive window"
+msgstr "Evidenzia i messaggi contenenti il mio nickname"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:299
+msgid "Me have been kicked"
+msgstr "Sono stato kickato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:39
+msgid "Selection background color"
+msgstr "Selezione del colore dello sfondo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:40
+msgid "Selection foreground color"
+msgstr "Selezione del colore in primo piano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:41
+msgid "Control char color"
+msgstr "Colore del carattere di controllo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:42
+msgid "Cursor color"
+msgstr "Colore del cursore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:141
+msgid "Warp cursor at the end of line when browsing history"
+msgstr ""
+"Posiziona il cursore alla fine della linea quando viene sfogliata la "
+"cronologia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:142
+msgid "Disable the input history window and it's log memory."
+msgstr ""
+"Disabilita la finestra della cronologia dell'input e la la sua "
+"memorizzazione."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:143
+msgid "Hide input toolbuttons by default"
+msgstr "Nascondi i pulsanti di input come default"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:144
+msgid "Nick completion"
+msgstr "Completamento nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:145
+msgid "Use bash-like nick completion"
+msgstr "Usa il completamento dei nick in stile bash"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:146
+msgid "Nick completion postfix string"
+msgstr "Caratteri aggiunti alla fine del completamento nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:147
+msgid "Use the completion postfix string for the first word only"
+msgstr "Aggiungi i caratteri dopo il completamento solo per la prima parola"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:148
+msgid "Commandline in user-friendly mode by default"
+msgstr "Linea di comando in modalità user-friendly di default"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:81
+msgid "Show message icons"
+msgstr "Mostra icone dei messaggi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:82
+msgid "Draw some emoticons (smileys) as pictures"
+msgstr "Disegna le emoticons (smileys) come immagini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:83
+msgid "Don't show colors in user messages"
+msgstr "Non mostrare i colori nei messaggi degli utenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:88
+msgid "Nicknames"
+msgstr "Nickname"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:90
+msgid "\"Smart\" nickname colors"
+msgstr "Colorazione \"furba\" dei nickname"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:91
+msgid "Use same colors as in the userlist"
+msgstr "Usa gli stessi colori della lista degli utenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:93
+msgid "Show nicknames in bold"
+msgstr "Mostra nickname in grassetto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:94
+msgid "Show user and host"
+msgstr "Mostra utente e host"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:95
+msgid "Show channel mode prefix"
+msgstr "Mostra i modi nel canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:96
+msgid "User-defined prefix and postfix"
+msgstr "Prefisso e suffisso definiti dall'utente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:98
+msgid "[PREFIX]nickname[!user@host][POSTFIX] message"
+msgstr "[PREFISSO]nickname[!user@host][SUFFISSO] messaggio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:112
+msgid "Prefix:"
+msgstr "Prefisso:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:117
+msgid "Postfix:"
+msgstr "Suffisso:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:131
+msgid "Show timestamp"
+msgstr "Mostra orario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:134
+msgid "Use UTC time for timestamp"
+msgstr "Stampa orario UTC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:141
+msgid "Use special color for timestamps"
+msgstr "Usa colore speciale per i timestamps"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:147
+msgid "Timestamp format:"
+msgstr "Formato del timestamp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:320
+msgid "Transparent"
+msgstr "Trasparente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:401
+msgid "Message Type"
+msgstr "Tipo di messaggio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:417
+msgid "Background:"
+msgstr "Sfondo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:426
+msgid "Foreground:"
+msgstr "Primo piano:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:434
+msgid "Alert level:"
+msgstr "Livello di allerta:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:454
+msgid "Log this"
+msgstr "Logga questo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:458
+msgid "Load From..."
+msgstr "Carico da...."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:460
+msgid "Save As..."
+msgstr "Salva Come.."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:589
+msgid "Choose a Filename - KVIrc"
+msgstr "Scegli un File - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:646
+msgid "Choose a Filename - KVIrc "
+msgstr "Scegli un Nome per il File - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:40
+msgid "Enable lag meter"
+msgstr "Attiva misuratore lag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:42
+msgid ""
+"<center>This enables the lag meter engine, which checks at regular intervals "
+"how much lag (latency) the server has.</center>"
+msgstr ""
+"<center>Questa opzione abilita il misuratore di lag, che controlla ad "
+"intervalli regolari quanto lag (latenza) ha il server.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:45
+msgid "Lag meter heartbeat:"
+msgstr "Intervallo di misurazione del lag:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:49
+msgid ""
+"<center>This option allows you to set the lag meter heartbeat interval."
+"<br>The lower the heartbeat interval the higher will be the accuracy of the "
+"lag check but also higher cpu usage and data traffic to the server."
+"<br>Please note that this is NOT the interval between pings sent to the "
+"server: the pings (if any) will be sent really less often. 5000 is a "
+"reasonable value.</center>"
+msgstr ""
+"<center>Questa opzione ti permette di impostare l'intervallo di misurazione "
+"del lag.<br>Più l'intervallo sarà basso più la misurazione del lag sarà "
+"accurata ma sarà maggiore anche l'utilizzo della cpu e dei dati verso il "
+"server. <br>Da notare che questo NON è l'intervallo tra ping inviati al "
+"server: i ping (se ci fossero) sarebbero inviati meno frequentemente. 5000 è "
+"un valore ragionevole.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:58
+msgid "Trigger event if lag exceeds:"
+msgstr "Esegui evento specifico se il lag supera il limite di:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:61
+msgid ""
+"<center>This option controls the threshold for the OnLagAlarmTimeUp and "
+"OnLagAlarmTimeDown events. When the lag goes above the threshold "
+"OnLagAlarmTimeUp will be triggered and when the lag falls back below the "
+"threshold then OnLagAlarmTimeDown will be triggered</center>"
+msgstr ""
+"<center>Questaopzione controlla il limite degli eventi OnLagAlarmTimeUp e "
+"OnLagAlarmTimeDown. Quando il lag sale oltre il limite verrà invocato "
+"OnLagAlarmTimeUp e quando il lag scende sotto il limite sarà invocato "
+"OnLagAlarmTimeDown</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:68
+msgid "Show lag in IRC context display"
+msgstr "Mostra lag nel display del IRC context"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:70
+msgid ""
+"<center>This makes the IRC context display applet show the current lag after "
+"the user's nickname (in seconds)</center>"
+msgstr ""
+"<center>Questa opzione fa sì che l'applet dell'IRC context visualizzi il lag "
+"corrente dopo il nickname dell'utente (in secondi)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.h:28
+msgid "Away"
+msgstr "Away"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.h:28
+msgid "CTCP"
+msgstr "CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:28
+msgid "DCC"
+msgstr "DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:59
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:41
+msgid "Advanced"
+msgstr "Avanzate"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:72
+msgid "File Transfer"
+msgstr "Trasferimento File"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:113
+msgid "Chat"
+msgstr "Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:126
+msgid "Voice"
+msgstr "Voice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:32
+msgid "IRC"
+msgstr "IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:73
+msgid "Channel"
+msgstr "Canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:28
+msgid "Lag"
+msgstr "Lag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:30
+msgid "time,ping"
+msgstr "ora,ping"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:37
+msgid "authentication,identify"
+msgstr "autenticazione,identificazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:31
+msgid "Language"
+msgstr "Lingua"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:34
+msgid "language,encoding,charset,codepage"
+msgstr "lingua,codifica,charset"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:28
+msgid "Contacts"
+msgstr "Contatti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:30
+msgid "notify,buddy,buddies,friends"
+msgstr "notifica,contatto,contatti,amici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:42
+msgid "Notifier"
+msgstr "Notificatore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:43
+msgid "popup"
+msgstr "popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:37
+msgid "Text"
+msgstr "Testo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:38
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:49
+msgid "theme,colors,output"
+msgstr "tema,colori,uscita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:52
+msgid "Message Style"
+msgstr "Stile Messaggio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:56
+msgid "theme,privmsg,output,format"
+msgstr "tema,privmsg,uscita,formattazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:67
+msgid "Timestamp"
+msgstr "Orario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:71
+msgid "time,timestamp"
+msgstr "Orario"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:88
+msgid "Message Colors"
+msgstr "Colori Messaggio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:169
+msgid "theme,colors,messages,output"
+msgstr "temi,colori,messaggi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:168
+msgid "Color Set"
+msgstr "Set di colori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.h:32
+msgid "Avatars"
+msgstr "Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:32
+msgid "Sound"
+msgstr "Sistema sonoro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:48
+msgid "sound,xmms,audio,play,amarok"
+msgstr "suono,xmms,audio,play,amarok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:81
+msgid "Sounds"
+msgstr "Sistema sonoro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:83
+msgid "sound,events"
+msgstr "souno,eventi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:28
+msgid "URL handlers"
+msgstr "Gestore URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:31
+msgid "url,programs"
+msgstr "url,programmi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:29
+msgid "Tray icon"
+msgstr "Icona del vassoio di sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:31
+msgid "tray,dockwidget"
+msgstr "vassoio,oggetto da scrivania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.h:33
+msgid "Tools"
+msgstr "Strumenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.h:28
+msgid "General options"
+msgstr "Opzioni Generali"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.h:31
+msgid "Interface"
+msgstr "Interfaccia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:29
+msgid "Text icons"
+msgstr "Icone del testo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:31
+msgid "smileys,emoticons"
+msgstr "faccine,emoticon"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:34
+msgid "Output"
+msgstr "Uscita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:48
+msgid "Look"
+msgstr "Aspetto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:101
+msgid "Features"
+msgstr "Caratteristiche"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:46
+msgid "Media Types"
+msgstr "Tipi di File"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:48
+msgid "file,audio,video,programs"
+msgstr "file,audio,video,programmi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:114
+msgid "theme"
+msgstr "tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:47
+msgid "Transparency"
+msgstr "Trasparenza"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:48
+msgid "theme,background"
+msgstr "tema,fondo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:74
+msgid "Window Captions"
+msgstr "Caption Finestra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:88
+msgid "theme,mdi"
+msgstr "tema,mdi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:87
+msgid "Workspace"
+msgstr "Area di lavoro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:100
+msgid "ToolBar Applets"
+msgstr "Applet della Barra degli Strumenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:101
+msgid "theme,toolbar"
+msgstr "tema,barra degli strumenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:150
+msgid "connection"
+msgstr "connessione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:33
+msgid "Protection"
+msgstr "Protezione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:36
+msgid "ctcp,flood"
+msgstr "ctcp,flood"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:144
+msgid "Avatar"
+msgstr "Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.h:28
+msgid "Anti-spam"
+msgstr "Anti-spam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:32
+msgid "Verbosity And Output"
+msgstr "Verbosità Messaggi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:34
+msgid "debug"
+msgstr "debug"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:28
+msgid "Logging"
+msgstr "Logging"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:29
+msgid "save,output"
+msgstr "salva,uscita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:50
+msgid "Input"
+msgstr "Ingresso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:33
+msgid "theme,colors,text"
+msgstr "tema,colori,testo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:33
+msgid "Taskbar"
+msgstr "Lista dei Canali"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:47
+msgid "Tree Taskbar"
+msgstr "Taskbar ad albero"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:65
+msgid "Foreground"
+msgstr "Primo piano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:111
+msgid "Classic Taskbar"
+msgstr "Taskbar classica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:52
+msgid "Proxy Hosts"
+msgstr "Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:54
+msgid "connection,servers"
+msgstr "connessione,server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:28
+msgid "Alert/Highlight"
+msgstr "Avvisa per i messaggi evidenziati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:42
+msgid "Highlight"
+msgstr "Evidenziazione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:55
+msgid "Taskbar Alert"
+msgstr "Avvisi nella Lista dei canali"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.h:29
+msgid "Flood Protection"
+msgstr "Protezione Flood"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:30
+msgid "Userlist"
+msgstr "Lista Utenti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:31
+msgid "theme,userlist,channel"
+msgstr "tema,lista utenti,canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:45
+msgid "theme,userlist,channel,background"
+msgstr "tema,lista utenti,canale,sfondo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:66
+msgid "theme,userlist,channel,colors"
+msgstr "tema,lista utenti,canale,colori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:81
+msgid "Nickname Grid"
+msgstr "Griglia Nickname"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:82
+msgid "theme,userlist,channel,grid"
+msgstr "tema,lista utenti,canale,griglia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:102
+msgid "userlist,channel"
+msgstr "lista utenti,canale"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:29
+msgid "Labels"
+msgstr "Etichette"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:30
+msgid "theme,topic"
+msgstr "tema,topic"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:28
+msgid "Scripting Engine"
+msgstr "Motore di Scripting"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:29
+msgid "scripting,kvs,debug"
+msgstr "scripting,kvs,debug"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:55
+msgid "SSL"
+msgstr "SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:72
+msgid "Socket"
+msgstr "Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:87
+msgid "Ident Service"
+msgstr "Servizio Ident"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:29
+msgid "Ignore"
+msgstr "Ignora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:31
+msgid "protection"
+msgstr "protezione"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:28
+msgid "Query"
+msgstr "Query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:30
+msgid "chat"
+msgstr "chat"
diff --git a/po/modules/options/options_nl.po b/po/modules/options/options_nl.po
new file mode 100644
index 00000000..4be3454c
--- /dev/null
+++ b/po/modules/options/options_nl.po
@@ -0,0 +1,14859 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:304
+msgid ""
+msgstr ""
+"Project-Id-Version: kvirc 3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2002-08-09 21:21+0200\n"
+"Last-Translator: Balboy <[email protected]>\n"
+"Language-Team: Nederlands <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 0.9.6\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:232
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:51
+#, fuzzy
+msgid "Font:"
+msgstr "Lettertype"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:47
+#, fuzzy
+msgid "Background color:"
+msgstr "Achtergrondkleur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:129
+#, fuzzy
+msgid "Background image:"
+msgstr "Achtergrondafbeelding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:51
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:46
+#, fuzzy
+msgid "Horizontal align:"
+msgstr "notificatie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:50
+#, fuzzy
+msgid "Vertical align:"
+msgstr "notificatie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:59
+msgid "Mark Line:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:66
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:124
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:59
+#, fuzzy
+msgid "Tile"
+msgstr "Bestand"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:62
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:55
+msgid "Left"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:56
+msgid "Right"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:132
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:62
+#, fuzzy
+msgid "Center"
+msgstr "Algemeen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:60
+msgid "Top"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:61
+msgid "Bottom"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:149
+#, fuzzy
+msgid "Enable URL highlighting"
+msgstr "Activeren URL-adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:150
+#, fuzzy
+msgid "Use line wrap margin"
+msgstr "Gebruik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:151
+#, fuzzy
+msgid "Maximum buffer size:"
+msgstr "buffer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:152
+#, fuzzy
+msgid " lines"
+msgstr "&Online"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:153
+msgid "Link tooltip show delay:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:306
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:59
+msgid " msec"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:155
+msgid "Link tooltip hide delay:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:157
+msgid "Track last read text line"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:48
+#, fuzzy
+msgid "NickServ Authentication Rule"
+msgstr "notificatie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:55
+#, fuzzy
+msgid "Registered NickName"
+msgstr "Negeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:60
+msgid "Put here the nickname that you have registered with NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:277
+#, fuzzy
+msgid "NickServ Mask"
+msgstr "Bericht verzenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:70
+#, fuzzy, c-format
+msgid ""
+"This is the mask that NickServ must match to be correctly identified as the "
+"NickServ service. This usually will be something like <b>NickServ!"
+"[email protected]</b>.<br>You can use wildcards for this field, but "
+"generally it is a security flaw. If you're 100%% sure that NO user on the "
+"network can use the nickname \"NickServ\", the mask <b>NickServ!*@*</b> may "
+"be safe to use in this field."
+msgstr ""
+"<center> is de masker overeenkomstig naar<b>[email protected]</b> U "
+"voor veld it is GEEN gebruiker aan de netwerk naar<b></b> voor veld</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:78
+#, fuzzy
+msgid "Message Regexp"
+msgstr "Bericht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:86
+msgid ""
+"This is the simple regular expression that the identification request "
+"message from NickServ must match in order to be correctly recognized.<br>The "
+"message is usually something like \"To identify yourself please use /ns "
+"IDENTIFY password\" and it is sent when the NickServ wants you to "
+"authenticate yourself. You can use the * and ? wildcards."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:259
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:279
+msgid "Identify Command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:98
+#, fuzzy
+msgid ""
+"This is the command that will be executed when NickServ requests "
+"authentication for the nickname described in this rule (if the both server "
+"and NickServ mask are matched). This usually will be something like <b>msg "
+"NickServ identify &lt;yourpassword&gt;</b>.<br>You can use <b>msg -q</b> if "
+"you don't want the password echoed on the screen. Please note that there is "
+"no leading slash in this command."
+msgstr ""
+"<center> is de commando de voor de en de en masker overeenkomstig<b>&lt;&gt;"
+"</b> U de wachtwoord naar aan de is nee commando</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:256
+#, fuzzy
+msgid "Server mask"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:117
+msgid ""
+"This is the mask that the current server must match in order for this rule "
+"to apply. It can contain * and ? wildcards.<br>Do NOT use simply \"*\" "
+"here..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:128
+msgid "Hint: Move the mouse cursor over the fields to get help"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:137
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:68
+#, fuzzy
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:803
+#, fuzzy
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:164
+#, fuzzy
+msgid "Invalid NickServ Rule"
+msgstr "Ongeldig IP adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:169
+#, fuzzy
+msgid "The Nickname field can't be empty!"
+msgstr "veld"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:175
+msgid "The Nickname field can't contain spaces!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:183
+msgid "The NickServ mask can't be empty!<br>You must put at least * there."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:191
+msgid "The Message Regexp can't be empty!<br>You must put at least * there."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:199
+msgid "The Identify Command can't be empty!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:265
+#, fuzzy
+msgid "Enable NickServ Identification"
+msgstr "Activeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:269
+msgid "This check enables the automatic identification with NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:276
+#, fuzzy
+msgid "Nickname"
+msgstr "Bijnaam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:258
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:278
+#, fuzzy
+msgid "NickServ Request Mask"
+msgstr "Bericht verzenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:265
+#, fuzzy
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on all the networks."
+"<br>Please be aware that this feature can cause your NickServ passwords to "
+"be stolen if used improperly. Make sure that you fully understand the "
+"NickServ authentication protocol.<br>In other words, be sure to know what "
+"you're doing.<br>Also note that the password that you provide is stored as "
+"<b>PLAIN TEXT</b>.<br>KVIrc supports also per-network NickServ "
+"authentication rules that can be created in the \"Advanced...\" network "
+"options (accessible from the servers dialog).</center>"
+msgstr ""
+"<center> is naar door<br> naar it de de en de<br> overig naar<br> de "
+"wachtwoord is de configuratie file<br> Rechts naar toevoegen verwijderen</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:293
+#, fuzzy
+msgid "Add Rule"
+msgstr "Toevoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:298
+#, fuzzy
+msgid "Edit Rule"
+msgstr "Bewerken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:302
+#, fuzzy
+msgid "Delete Rule"
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:31
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:36
+#, fuzzy
+msgid "Font"
+msgstr "Lettertype"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:38
+#, fuzzy
+msgid "Foreground color"
+msgstr "Voorgrondkleur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:37
+#, fuzzy
+msgid "Background color"
+msgstr "Achtergrondkleur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:34
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:44
+#, fuzzy
+msgid "Background image"
+msgstr "Achtergrondafbeelding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:40
+#, fuzzy
+msgid "Enable tray icon"
+msgstr "Activeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:41
+#, fuzzy
+msgid "Close in tray"
+msgstr "M&inimaliseren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:42
+#, fuzzy
+msgid "Minimize in tray"
+msgstr "M&inimaliseren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:44
+#, fuzzy
+msgid "Enable tray icon flashing"
+msgstr "Activeren URL-adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:45
+msgid "Enable level-based message notification (not a message-type based)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:47
+msgid "Select message levels to notify"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:49
+msgid "Minimum level for low-priority messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:53
+msgid "Minimum level for high-priority message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.cpp:40
+msgid ""
+"This section contains irc protection tools<br><p>like<b> flood, ignore, "
+"antispam. </b> </p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:40
+msgid ""
+"<center><b>Settings for CTCP.</b></center><p>The <b>Client-To-Client "
+"Protocol</b> (CTCP) is used to transmit special control messages over an IRC "
+"connection. These messages can request information from clients or negotiate "
+"file transfers.<br><br></p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:47
+msgid "CTCP Replies"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:48
+msgid "Append to VERSION reply:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:52
+msgid ""
+"<center>This text will be appended to the CTCP VERSION reply.<br>For "
+"example, you can place a script name here.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:55
+msgid "Append to SOURCE reply:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:59
+msgid ""
+"<center>This text will be appended to the CTCP SOURCE reply.<br>For example, "
+"you can place the source URL for a script here.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:69
+#, fuzzy
+msgid "PAGE reply:"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:73
+msgid ""
+"<center>This is the CTCP PAGE reply.<br>It should contain some sort of "
+"acknowledgement for CTCP PAGE messages.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:76
+#, fuzzy
+msgid "Show the CTCP replies in the active window"
+msgstr "nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:78
+msgid "Show dialog for CTCP page requests"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:36
+#, fuzzy
+msgid "Use tree taskbar"
+msgstr "Takenbalk"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:37
+msgid "Sort windows by name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:38
+#, fuzzy
+msgid "Show window icons in taskbar"
+msgstr "Geen naam opgegeven"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:39
+msgid "Show activity meter in taskbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:41
+msgid ""
+"<center>This option enables the usage of the taskbar activity meter. Each "
+"window entry will have a small indicator of the activity that is going on in "
+"that window. The indicator is a small square that changes colors, dark "
+"colors mean low activity, while bright colors signal high activity. KVIrc "
+"also uses some heuristics to determine whether the activity is somewhat "
+"\"human\" or it is generated by automated entities (such as bots or IRC "
+"servers). \"Human\" activity causes the indicator to be shaded red while "
+"automated activity causes the indicator to be shaded blue.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:49
+#, fuzzy
+msgid "Show IRC context indicator in taskbar"
+msgstr "&Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:50
+#, fuzzy
+msgid "Enable window tooltips"
+msgstr "Animatie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:233
+#, fuzzy
+msgid "Text/Alert Colors"
+msgstr "Sluiten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:125
+#, fuzzy
+msgid "Normal:"
+msgstr "Normaal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:126
+#, fuzzy
+msgid "Selected:"
+msgstr "Opslaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:236
+#, fuzzy
+msgid "Alert Level 1:"
+msgstr "Alles opschonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:237
+#, fuzzy
+msgid "Alert Level 2:"
+msgstr "Alles opschonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:238
+#, fuzzy
+msgid "Alert Level 3:"
+msgstr "Alles opschonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:239
+#, fuzzy
+msgid "Alert Level 4:"
+msgstr "Alles opschonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:240
+#, fuzzy
+msgid "Alert Level 5:"
+msgstr "Alles opschonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:241
+#, fuzzy
+msgid "Progress bar color:"
+msgstr "voortgang"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:124
+#, fuzzy
+msgid "Background Colors"
+msgstr "Achtergrondkleur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:212
+#, fuzzy
+msgid "Show header"
+msgstr "Tekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:214
+#, fuzzy
+msgid "Minimum width:"
+msgstr "Minimale snelheid"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:215
+#, fuzzy
+msgid "Maximum width:"
+msgstr "Minimale snelheid"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:235
+#, fuzzy
+msgid "Minimized:"
+msgstr "M&inimaliseren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:242
+#, fuzzy
+msgid "Minimum width of buttons:"
+msgstr "Minimale snelheid"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:244
+#, fuzzy
+msgid "Set maximum button width"
+msgstr "Minimale snelheid"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:245
+#, fuzzy
+msgid "Maximum width of buttons:"
+msgstr "Minimale snelheid"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:246
+msgid "Use flat buttons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:96
+#, fuzzy
+msgid "Network Details"
+msgstr "Eigenschappen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:82
+#, fuzzy
+msgid "Description:"
+msgstr "Beschrijving:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:116
+msgid "<center>Put here a brief description of the network.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:477
+#, fuzzy
+msgid "Properties"
+msgstr "Eigenschappen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:123
+#, fuzzy
+msgid "Username:"
+msgstr "Gebruikersnaam:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:134
+#, fuzzy
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to servers "
+"on this network.\n"
+"If this field is left empty (most common case), KVIrc will use the default "
+"username specified in the \"Identity\" options tab.</center>"
+msgstr ""
+"<center> is de<b></b> naar login naar\n"
+" veld leeg de standaard de Identiteit</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:498
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:320
+#, fuzzy
+msgid "Nickname:"
+msgstr "Bijnaam:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:145
+#, fuzzy
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to the servers on this network.<br>If this field is left empty (most "
+"common case), the default nickname (specified in the \"Identity\" settings) "
+"will be used.</center>"
+msgstr ""
+"<center> U<b></b> gebruikt naar login door<br> veld leeg de standaard de "
+"Identiteit gebruikt</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:509
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:342
+#, fuzzy
+msgid "Real name:"
+msgstr "Bekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:153
+#, fuzzy
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with the servers on this network.<br>If you leave this field empty "
+"(most common case), the default \"real name\" (specified in the \"Identity\" "
+"settings) will be used.</center>"
+msgstr ""
+"<center> U<b> naam</b> gebruikt naar login door<br> veld leeg de standaard "
+"naam de Identiteit gebruikt</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:644
+#, fuzzy
+msgid "Encoding:"
+msgstr "Tekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:164
+msgid ""
+"<center>This box allows you to choose the preferred encoding for the servers "
+"in this network. If you choose \"Use System Encoding\" then the encoding "
+"will be set to the systemwide value that you choose in the \"Encoding\" page "
+"of the options dialog.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:173
+#, fuzzy
+msgid "Use System Encoding"
+msgstr "Gebruik de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:185
+#, fuzzy
+msgid "Connect to this network at startup"
+msgstr "Maximale tijd om te verbinden overschreden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:189
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to automatically connect to this "
+"network at startup</center>"
+msgstr "<center> is de<b></b> de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:79
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:120
+#, fuzzy
+msgid "General"
+msgstr "Algemeen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:756
+msgid "Channels to join automatically upon connect:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:211
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to a server in this network has been established. To add a "
+"channel, type its name in the text input below and click \"<b>Add</b>\".</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:217
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:62
+#, fuzzy
+msgid "Join Channels"
+msgstr "is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:228
+msgid ""
+"<center>The following commands will be executed after a connection to a "
+"server in this network has been established.<br><b>Important:</b> Enter "
+"commands <b>without</b> a preceding slash (e.g. <tt>quote pass secret</tt> "
+"instead of <tt>/quote pass secret</tt>).<br>KVIrc will first send the USER "
+"command, then eventually PASS and NICK and then execute this command "
+"sequence.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:782
+#, fuzzy
+msgid "On Connect"
+msgstr "Verbinden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:249
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"a server in this network.<br><b>Important:</b> Enter commands <b>without</b> "
+"a preceding slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote "
+"privatelog</tt>).<br>This is useful for automatically opening queries, "
+"setting variables, etc.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:801
+#, fuzzy
+msgid "On Login"
+msgstr "Loggen uit."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:285
+#, fuzzy
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on this network.<br>Please "
+"be aware that this feature can cause your NickServ passwords to be stolen if "
+"used improperly. Make sure that you fully understand the NickServ "
+"authentication protocol.<br>In other words, be sure to know what you're "
+"doing.<br>Also note that the password that you provide is stored as <b>PLAIN "
+"TEXT</b>.</center>"
+msgstr ""
+"<center> is naar door<br> naar it de de en de<br> overig naar<br> de "
+"wachtwoord is de configuratie file<br> Rechts naar toevoegen verwijderen</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:35
+msgid "NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:323
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:60
+#, fuzzy
+msgid "&OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:449
+#, fuzzy
+msgid "Server Details"
+msgstr "Servers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:465
+#, fuzzy
+msgid ""
+"<center>This is a brief description of this server. This field has no "
+"restrictions but many server lists use it to describe the server's physical "
+"location</center>"
+msgstr ""
+"<center> is beschrijving de\n"
+" veld nee it naar de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:484
+#, fuzzy
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to this "
+"server.\n"
+"If this field is left empty (most common case), KVIrc will first look if an "
+"username is specified for the network that this server belongs to, and if "
+"that is empty then KVIrc will use the default username specified in the "
+"\"Identity\" options tab.</center>"
+msgstr ""
+"<center> is de<b></b> naar login naar\n"
+" veld leeg de standaard de Identiteit</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:490
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:127
+#, fuzzy
+msgid "Password:"
+msgstr "Wachtwoord:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:495
+#, fuzzy
+msgid ""
+"<center>If this server requires a password, put it in this field, otherwise "
+"leave it empty.</center>"
+msgstr "<center> de wachtwoord it veld it leeg</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:504
+#, fuzzy
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to this server.<br>If this field is left empty (most common case), "
+"KVIrc will first look if a nickname is specified for the network that this "
+"server belongs to, and if that is empty then the default nickname (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center> U<b></b> gebruikt naar login door<br> veld leeg de standaard de "
+"Identiteit gebruikt</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:513
+#, fuzzy
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with this server.<br>If you leave this field empty (most common case), "
+"KVIrc will first look if a real name is specified for the network that this "
+"server belongs to, and if that is empty the default \"real name\" (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center> U<b> naam</b> gebruikt naar login door<br> veld leeg de standaard "
+"naam de Identiteit gebruikt</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:683
+#, fuzzy
+msgid "User Mode"
+msgstr "Gebr&uiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:520
+#, fuzzy
+msgid "Use default user mode"
+msgstr "Beschikbaar gebruiker:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:522
+msgid ""
+"<center>If this is enabled, the global initial <b>user mode</b> (configured "
+"from the identity dialog) will be used. If disabled, you can configure an "
+"initial user mode for this server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:684
+#, fuzzy
+msgid "Invisible (+i)"
+msgstr "zichtbaar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:534
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:685
+#, fuzzy
+msgid "Server notices (+s)"
+msgstr "s Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:686
+msgid "Wallops (+w)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:548
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:60
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:104
+#, fuzzy
+msgid "Identity"
+msgstr "Identiteit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:115
+#, fuzzy
+msgid "Port:"
+msgstr "Poort:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:565
+#, fuzzy
+msgid ""
+"<center>This is the default <b>port</b> that this server will be contacted "
+"on.<br>Usually <b>6667</b> is OK.</center>"
+msgstr "<center> is de standaard<b> poort</b> aan<br><b></b> is OK</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:571
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:119
+#, fuzzy
+msgid "IP address:"
+msgstr "IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:576
+#, fuzzy
+msgid ""
+"<center>This is the <b>IP address</b> of this server, it is here for caching "
+"purposes.<br>If you leave this field empty, KVIrc will fill it in the first "
+"time it connects to the server. If you enable the \"cache IP address\" "
+"option below, KVIrc will use it as a \"cached result\" and avoid looking it "
+"up again.</center>"
+msgstr ""
+"<center> is de<b> IP</b> de it is voor<br> veld leeg it de tijd it naar de "
+"de it en it</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:596
+#, fuzzy
+msgid "Cache IP address"
+msgstr "Cache IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:599
+#, fuzzy
+msgid ""
+"<center>This check will enable <b>IP address caching</b> for this server:"
+"<br>DNS lookups can be time-consuming and might be blocking on some "
+"platforms; this option will cause KVIrc to look up the server hostname only "
+"once.<br><br> Advanced: you can also use this option to force a certain "
+"server name to resolve to a fixed ip address when either the dns for that "
+"server is temporairly unreachable or you want to avoid the round-robin "
+"lookups.</center>"
+msgstr "<center><b> IP</b> voor<br> DNS tijd en aan naar de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:609
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:140
+#, fuzzy
+msgid "Use IPv6 protocol"
+msgstr "Gebruik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:619
+#, fuzzy
+msgid ""
+"<center>This check identifies IPv6 servers.<br>If enabled, KVIrc will "
+"attempt to use the IPv6 protocol (thus your OS <b>must</b> have a working "
+"IPv6 stack and you <b>must</b> have an IPv6 connection).</center>"
+msgstr "<center><br> ingeschakeld naar de<b></b> en<b></b> verbinding</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:624
+#, fuzzy
+msgid "Use SSL protocol"
+msgstr "Gebruik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:627
+msgid ""
+"<center>This check will cause the connection to use the <b>Secure Socket "
+"Layer</b> encryption support. Obviously, this server must have support for "
+"this, too. :)</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:636
+#, fuzzy
+msgid "Connect to this server at startup"
+msgstr "Maximale tijd om te verbinden overschreden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:641
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to connect to the IRC server when it is "
+"started.</center>"
+msgstr "<center> is de<b></b> de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:650
+msgid ""
+"<center>This box allows you to choose the preferred encoding for this sever. "
+"If you choose \"Use Network Encoding\" then the encoding will be inherited "
+"from the network that this server belongs to.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:659
+#, fuzzy
+msgid "Use Network Encoding"
+msgstr "Gebruik de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:672
+msgid "Link filter:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:701
+msgid ""
+"<center>This field specifies the name of a module that exports a link filter "
+"for this type of server.<br>For plain IRC connections, you don't need any "
+"link filters; this is used for incompatible protocols.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:705
+#, fuzzy
+msgid "Id:"
+msgstr "Id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:713
+msgid ""
+"<center>This field allows you to specify a really unique id for this server. "
+"You will then be able to use /server -x &lt;this_id&gt; to make the "
+"connection. This is especially useful when you have multiple server entries "
+"with the same hostname and port in different networks (bouncers?)</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:719
+#, fuzzy
+msgid "Proxy server:"
+msgstr "Kopiëren..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:724
+msgid ""
+"<center>This is the <b>proxy</b> that KVIrc will use to connect to thos "
+"server.\n"
+"If this field is set in \"Default\" KVirc will use global proxy settings, if "
+"it is set in \"Direct connection\" KVirc will connect to this server without "
+"proxy. You can define new proxy server in global options' \"Proxy servers\" "
+"menu.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:729
+#, fuzzy
+msgid "Default"
+msgstr "standaard"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:730
+#, fuzzy
+msgid "Direct connection"
+msgstr "geen verbinding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:746
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:28
+#, fuzzy
+msgid "Connection"
+msgstr "Verbinding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:758
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to this server has been established. To add a channel, type its "
+"name in the text input below and click \"<b>Add</b>\".</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:776
+msgid ""
+"<center>The following commands will be executed after a connection has been "
+"established.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote pass secret</tt> instead of <tt>/quote pass secret</"
+"tt>).<br>KVIrc will first send the USER command, then eventually PASS and "
+"NICK and then execute this command sequence.<br>This is particularly useful "
+"for IRC bouncers that require login commands.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:796
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"this server.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote privatelog</tt>)."
+"<br>This is useful for automatically opening queries, setting variables, etc."
+"</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1041
+#, fuzzy
+msgid "Server"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1042
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:73
+#, fuzzy
+msgid "Description"
+msgstr "Beschrijving"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1054
+#, fuzzy
+msgid ""
+"<center>This is the list of available IRC servers.<br>Right-click on the "
+"list to add or remove servers and perform other actions.<br>Double-click on "
+"a item for advanced options.</center>"
+msgstr ""
+"<center> is de beschikbaar IRC<br> Rechts aan de naar toevoegen of "
+"verwijderen en voor overig</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1069
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1430
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1554
+#, fuzzy
+msgid "New Network"
+msgstr "Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1077
+#, fuzzy
+msgid "New Server"
+msgstr "Netwerk"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1086
+#, fuzzy
+msgid "Remove Network/Server"
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1098
+#, fuzzy
+msgid "Copy Server"
+msgstr "Kopiëren..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1107
+#, fuzzy
+msgid "Paste Server"
+msgstr "Plakken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1446
+#, fuzzy
+msgid "Import List"
+msgstr "Poort"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1125
+#, fuzzy
+msgid "Active Configuration"
+msgstr "Op&slaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1332
+#, fuzzy
+msgid "Server:"
+msgstr "Server:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1130
+#, fuzzy
+msgid ""
+"<center>This is the name of the currently selected server or network</center>"
+msgstr "<center> is de<b></b> de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1153
+#, fuzzy
+msgid "Advanced..."
+msgstr "Toevoegen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1156
+msgid "<center>Click here to edit advanced options for this entry</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1159
+#, fuzzy
+msgid "Connect &Now"
+msgstr "Verbinden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1164
+#, fuzzy
+msgid ""
+"<center>Hit this button to connect to the currently selected server.</center>"
+msgstr "<center> is de<b></b> de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1177
+msgid ""
+"<center>This button shows a list of recently used servers. It allows you to "
+"quickly find them in the list.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1181
+#, fuzzy
+msgid "Show this dialog at startup"
+msgstr "Tonen de geregistreerd gebruikers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1184
+msgid ""
+"<center>If this option is enabled, the Servers dialog will appear every time "
+"you start KVIrc</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1335
+#, fuzzy
+msgid "Network:"
+msgstr "Netwerk:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1345
+#, fuzzy
+msgid "No selection"
+msgstr "Nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1364
+msgid "UnknownNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1431
+#, fuzzy
+msgid "Remove Network"
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1434
+#, fuzzy
+msgid "&New Server"
+msgstr "Netwerk"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1435
+#, fuzzy
+msgid "Re&move Server"
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1437
+#, fuzzy
+msgid "&Copy Server"
+msgstr "Kopiëren..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1439
+#, fuzzy
+msgid "&Paste Server"
+msgstr "Plakken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1444
+#, fuzzy
+msgid "Clear List"
+msgstr "Beginwaarde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1483
+msgid ""
+"Oops... something weird happened:<br>Can't find any module capable of "
+"importing servers."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1500
+msgid ""
+"Oops... something weird happened:<br>Can't find the module that was capable "
+"of this import action. :("
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1574
+#, fuzzy
+msgid "irc.unknown.net"
+msgstr "onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:39
+#, fuzzy
+msgid "Disable parser warnings"
+msgstr "[parser waarschuwing in '%s'] : %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:40
+#, fuzzy
+msgid "Disable broken event handlers"
+msgstr "Deactiveren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:41
+msgid "Kill broken timers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:42
+#, fuzzy
+msgid "Send unknown commands as /RAW"
+msgstr "Onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:46
+#, fuzzy
+msgid "Automatically unload unused modules"
+msgstr "naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:47
+msgid "Ignore module versions (dangerous)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:51
+msgid "Relay errors and warnings to debug window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:52
+#, fuzzy
+msgid "Create minimized debug window"
+msgstr "Aanmaken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:59
+#, fuzzy
+msgid "Nickname alternatives"
+msgstr "Bijnaam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:62
+msgid ""
+"<center>Here you can choose up to three nicknames alternative to the primary "
+"one. KVIrc will use the alternatives if the primary nick is already used by "
+"someone else on a particular IRC network.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:69
+#, fuzzy
+msgid "Alt. Nickname 1:"
+msgstr "Bijnaam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:76
+#, fuzzy
+msgid "Alt. Nickname 2:"
+msgstr "Bijnaam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:83
+#, fuzzy
+msgid "Alt. Nickname 3:"
+msgstr "Bijnaam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+#, fuzzy
+msgid "Ok"
+msgstr "Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:130
+msgid "Avatar Download - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:136
+msgid "<center>Please wait while the avatar is being downloaded</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:139
+msgid "Abort"
+msgstr "Afbreken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:170
+#, fuzzy
+msgid "Failed to start the download"
+msgstr "Faalde naar de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:184
+msgid "Download aborted by user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:213
+#, fuzzy
+msgid "Choose Avatar - KVIrc"
+msgstr "map."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:219
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:237
+#, fuzzy
+msgid "&Browse..."
+msgstr "Bladeren..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:275
+#, fuzzy
+msgid "Choose an Image File - KVIrc"
+msgstr "file."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:316
+#, fuzzy
+msgid "Basic Properties"
+msgstr "Eigenschappen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:323
+msgid ""
+"<center>Your <b>nickname</b> is your primary form of identification on IRC."
+"<br>Since servers cannot accept multiple users sharing the same nickname "
+"(case insensitive), you can provide alternative nicknames to be used in "
+"casethe server refuses to accept the default one.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:331
+#, fuzzy
+msgid "Alternatives..."
+msgstr "Eigenschappen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:337
+msgid ""
+"<center>This is the <b>username</b> that you will use to connect to the "
+"server.<br>In the past, it was used as a form of authentication, but it "
+"normally has no special use now.<br>In addition to your nickname, you are "
+"identified on IRC by your <b>username@hostname</b>.</br>Basically, you can "
+"enter any word you like here. :D</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:346
+msgid ""
+"<center>This text will appear when someone does a /WHOIS on you.<br>It is "
+"intended to be your real name, but people tend to put random quotes and "
+"phrases here too.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:351
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:356
+msgid "Profile"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:361
+msgid "Age:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:366
+msgid "Here you can specify your age."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:401
+#, fuzzy
+msgid "Unspecified"
+msgstr "Geen naam opgegeven"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:391
+#, fuzzy
+msgid "Gender:"
+msgstr "Algemeen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:396
+msgid "Here you can specify your gender."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:402
+msgid "Female"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:403
+#, fuzzy
+msgid "Male"
+msgstr "Waarde"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:414
+#, fuzzy
+msgid "Location:"
+msgstr "notificatie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:417
+msgid ""
+"You can describe here your approximate physical location. Something like "
+"\"Region, Country\" will be ok. Please note that this information will be "
+"viewable by anyone so putting more data (like the exact address), generally, "
+"<b>is not a good idea</b>."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:422
+msgid "Languages:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:425
+msgid ""
+"You can put here the short names of the languages you can speak. An example "
+"might be \"EN,IT\" that would mean that you speak both Italian and English."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:429
+#, fuzzy
+msgid "Other:"
+msgstr "Be&werken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:432
+msgid ""
+"You can put here some additional personal data. It might be a funny quote or "
+"your homepage url... Please note that this information will be viewable by "
+"anyone so <b>don't put any sensible data</b> (passwords, telephone or credit "
+"card numbers)."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:502
+msgid ""
+"Here you can choose your avatar image. It will be visible<br>by other people "
+"that request it. Choose a nice image of yourself,<br>possibly avoiding "
+"obscenity and offending images. It is a good idea<br>to choose a relatively "
+"small file (say 150 Kb max) because<br>most clients have a limit on the size "
+"of avatars being downloaded.<br>The image also should be smaller than "
+"800x600 pixels since<br>it will have to be viewable in everyone's monitor."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:511
+msgid "Use avatar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:537
+#, fuzzy
+msgid "Choose..."
+msgstr "Kiezen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:598
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:637
+msgid "Failed to Load Avatar - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:599
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:638
+msgid ""
+"Failed to load the avatar image.<br>It may be an unaccessible file or an "
+"unsupported image format."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:606
+msgid "Failed to download the avatar image.<br><b>%Q</b>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:608
+#, fuzzy
+msgid "Avatar Download Failed - KVIrc"
+msgstr "de naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:649
+#, fuzzy
+msgid "Avatar Might Be Too Big - KVIrc"
+msgstr "de naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:650
+msgid ""
+"The avatar you have choosen is bigger than 1024x768 pixels.<br>Such a big "
+"image will not be seen on all the user monitors<br>and will probably be "
+"scaled by the remote clients with poor quality<br>algorithms to improve "
+"performance. You *should* scale it manually<br>to a sane size (like 800x600) "
+"or choose a different image."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:688
+#, fuzzy
+msgid "Default Messages"
+msgstr "nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:691
+#, fuzzy
+msgid "Part message:"
+msgstr "Bericht verzenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:695
+msgid ""
+"<center>This is the default part message that will be used when you<br>leave "
+"a channel by closing a channel window.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:699
+#, fuzzy
+msgid "Quit message:"
+msgstr "samenvoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:702
+msgid ""
+"<center>This is the default quit message that will be used when you<br>quit "
+"your IRC session by closing the console window or disconnecting by pressing "
+"the disconnect button.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:42
+msgid "Open Query For"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:40
+#, fuzzy
+msgid "Private messages"
+msgstr "private"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:46
+msgid ""
+"<center>This option enables query window creation when a private message "
+"(PRIVMSG) is received.<br>If you disable this, private messages will be "
+"shown in the active window or a common channel.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:42
+#, fuzzy
+msgid "Private notices"
+msgstr "s Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:55
+msgid ""
+"<center>This option enables query window creation when a private notice "
+"(NOTICE) is received.<br>If you disable this, private notices will be shown "
+"in the active window or a common channel.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:62
+#, fuzzy
+msgid "Always open queries as minimized"
+msgstr "Aanmaken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:66
+msgid ""
+"<center>This option causes newly created query windows to be immediately "
+"minimized.<br>Enable this if you don't like queries popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:74
+#, fuzzy
+msgid "Enable target user tracking"
+msgstr "Activeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:77
+msgid ""
+"<center>This option will enable target user tracking.<br>Some actions of the "
+"target user (e.g. joins and parts) will be displayed in the window.<br></"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:83
+msgid "Flash system taskbar on new query message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:86
+msgid ""
+"<center>This option causes the system taskbar entry for KVIrc to flash when "
+"a new query message is received and the KVIrc window is not the active.</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:91
+#, fuzzy
+msgid "Popup notifier on new query message"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:94
+msgid ""
+"<center>This option causes a small notifier window to pop up in the low "
+"right corner of the screen when a new message is received and the KVIrc "
+"window is not active.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:98
+msgid "Show information about query target at the top of the query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:101
+msgid ""
+"<center>This option enables query window information label. It can show you "
+"known information about query target at the top of the window.<br>Uncheck if "
+"you think,that it wastes your query space/</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:39
+#, fuzzy
+msgid "Use global application font"
+msgstr "Gebruik applicatie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:40
+#, fuzzy
+msgid "Hide icons in Popup"
+msgstr "&Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:41
+#, fuzzy
+msgid "Global application font:"
+msgstr "applicatie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:67
+#, fuzzy
+msgid "Enable fake transparency"
+msgstr "Activeren file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:71
+msgid ""
+"<center>This option makes all KVIrc windows look transparent.<br>You must "
+"choose a blending background image to below or check the \"Use KDE desktop "
+"for transparency\" option.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:77
+msgid ""
+"<center>This option makes all KVIrc windows look like transparent.<br>You "
+"must choose a blending background image to below.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:83
+msgid "Child window opacity:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:87
+msgid "Parent window opacity:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:91
+#, fuzzy
+msgid "Blend color:"
+msgstr "Cursor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:97
+#, fuzzy
+msgid "Use KDE desktop for transparency"
+msgstr "Gebruik KDE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:102
+msgid "Keep in sync with KDE background changes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:111
+msgid "Transparency blend image:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:155
+#, fuzzy
+msgid "Active Background"
+msgstr "Actief"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:156
+#, fuzzy
+msgid "Inactive Background"
+msgstr "Actief"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:157
+msgid "Active Text (Primary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:158
+msgid "Active Text (Secondary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:159
+msgid "Inactive Text (Primary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:160
+msgid "Inactive Text (Secondary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:197
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:44
+#, fuzzy
+msgid "Background"
+msgstr "Achtergrondkleur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:178
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:205
+#, fuzzy
+msgid "Background Image"
+msgstr "Achtergrondafbeelding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:198
+#, fuzzy
+msgid "Low-Contrast Foreground"
+msgstr "koppeling"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:199
+#, fuzzy
+msgid "Mid-Contrast Foreground"
+msgstr "koppeling"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:200
+msgid "Active High-Contrast Foreground (Primary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:201
+msgid "Active High-Contrast Foreground (Secondary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:202
+msgid "Inactive High-Contrast Foreground (Primary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:203
+msgid "Inactive High-Contrast Foreground (Secondary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:40
+msgid "Scaling in userlist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:41
+msgid "Scale avatar images in userlist (recommended)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:43
+msgid ""
+"<center>This option will force KVIrc to scale avatars shown in the userlist."
+"<br>Avatars will be scaled to fit the constraints set below. Better keep "
+"this option on. :)</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:48
+msgid "Do not scale avatar if it is less than required size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:59
+#, fuzzy
+msgid "Image width:"
+msgstr "Minimale snelheid"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:61
+msgid "Image height:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:56
+msgid "Scaling on load (and in user tooltips)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:57
+msgid "Scale avatar images on image load"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:65
+#, fuzzy
+msgid "Request CTCP"
+msgstr "Verzoeken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:66
+#, fuzzy
+msgid "Request missing avatars"
+msgstr "Verzoeken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:67
+#, fuzzy
+msgid "Maximum requested file size:"
+msgstr "buffer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:71
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to send a DCC GET request when someone "
+"sets an avatar and there is no cached copy available.</center>"
+msgstr "<center> is de<b></b> de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:74
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:317
+#, fuzzy
+msgid " bytes"
+msgstr "ja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:77
+msgid ""
+"<center>This is the maximum size for avatar images that will be "
+"automatically requested.<br>A reasonable value might be 102400 bytes (100 K)."
+"</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:83
+#, fuzzy
+msgid "Automatically accept incoming avatars"
+msgstr "Accepteren Inkomend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:87
+msgid ""
+"<center>This option will cause KVIrc to auto-accept DCC SEND requests for "
+"incoming avatars.<br>If you're using the \"Request missing avatars\" option "
+"above, enabling this may by useful.<br>Avatars will be saved in the local "
+"KVIrc directory.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:94
+#, fuzzy
+msgid "Remember avatars for registered users"
+msgstr "Faalde naar gebruiker."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:99
+msgid ""
+"<center>Use a user's last known avatar by default (only for users that are "
+"registered).</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:103
+#, fuzzy
+msgid "Avatar offer timeout:"
+msgstr "Verbinden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:104
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:162
+msgid " sec"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:107
+msgid ""
+"<center>This is the amount of time to make an avatar available for transfer "
+"when requested.<br>When someone sends a CTCP AVATAR request, KVIrc will "
+"reply with a CTCP AVATAR message containing the name and size of your avatar "
+"image.<br>A time-limited file offer is added for the image file to the "
+"requesting user.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:115
+msgid "Ignore requests if no avatar is set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:118
+msgid ""
+"This option will cause KVIrc to ignore channel CTCP AVATAR requests when you "
+"have no avatar set. This is usually a good practice since it helps in "
+"reducing traffic by not sending a reply that would be empty."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:39
+#, fuzzy
+msgid "Use online notify list"
+msgstr "Notificatie lijst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:44
+#, fuzzy
+msgid "Configuration"
+msgstr "Op&slaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:45
+#, fuzzy
+msgid "Show notifications in active window"
+msgstr "Notificatie voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:50
+#, fuzzy
+msgid "Flash window when users are going online"
+msgstr "Notificatie lijst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:55
+#, fuzzy
+msgid "Popup notifier when users are going online"
+msgstr "Notificatie lijst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:59
+#, fuzzy
+msgid "Advanced configuration"
+msgstr "Op&slaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:64
+msgid "Check USERHOST for online users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:69
+#, fuzzy
+msgid "Use \"smart\" notify list manager"
+msgstr "Notificatie lijst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:74
+msgid "Use the WATCH method if available"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:79
+msgid "Check interval (in seconds)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:85
+msgid "ISON delay (in seconds)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:91
+msgid "USERHOST delay (in seconds)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:96
+msgid ""
+"<p><b>Note:</b><br>The notify list is managed using the \"Registered Users\" "
+"settings.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:112
+msgid "Forcibly and completely disable the notifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:115
+msgid ""
+"This is an option for the impatient: it allows to forcibly and permanently "
+"disable the notifier window. Please note that if this option is activated "
+"then the notifier will NOT popup even if all the other options around "
+"specify to use it in response to particular events. Also note that this "
+"option will make all the /notifier.* commands fail silently."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:123
+msgid "Disable notifier window flashing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:124
+msgid "Disable notifier window fade effect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:39
+#, fuzzy
+msgid "Default away message:"
+msgstr "nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:41
+msgid "User input exits away mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:43
+#, fuzzy
+msgid "Away Nickname"
+msgstr "Bijnaam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:44
+#, fuzzy
+msgid "Change nickname on away"
+msgstr "Bijnaam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:47
+msgid "Use automatic nickname ([5 letters]AWAY)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:55
+#, c-format
+msgid "Custom nickname (%%nick%% means a current nick):"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/libkvioptions.cpp:199
+#, fuzzy
+msgid "No such options page class name %Q"
+msgstr "Geen zo een objekt klasse"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:47
+#, fuzzy
+msgid "Use system URL handlers"
+msgstr "Toevoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:50
+#, fuzzy
+msgid "<b>http://</b> handler command:"
+msgstr "Geen zo een module commando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:51
+#, fuzzy
+msgid "<b>https://</b> handler command:"
+msgstr "Geen zo een module commando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:52
+#, fuzzy
+msgid "<b>ftp://</b> handler command:"
+msgstr "Geen zo een module commando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:53
+#, fuzzy
+msgid "<b>mailto:</b> handler command:"
+msgstr "Geen zo een module commando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:54
+#, fuzzy
+msgid "<b>file://</b> handler command:"
+msgstr "Geen zo een module commando"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:55
+#, fuzzy
+msgid "Unknown protocol handler command:"
+msgstr "Onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:61
+#, fuzzy
+msgid "Use proxy"
+msgstr "Gebruik proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:65
+#, fuzzy
+msgid "Proxy"
+msgstr "Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:76
+#, fuzzy
+msgid ""
+"<center>This is the list of available proxy servers.<br>Right-click on the "
+"list to add or remove proxies.</center>"
+msgstr ""
+"<center> is de beschikbaar IRC<br> Rechts aan de naar toevoegen of "
+"verwijderen en voor overig</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:90
+#, fuzzy
+msgid "New Proxy"
+msgstr "Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:99
+#, fuzzy
+msgid "Remove Proxy"
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:111
+#, fuzzy
+msgid "Proxy:"
+msgstr "Proxy:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:131
+msgid "Protocol:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:336
+#, fuzzy
+msgid "&New Proxy"
+msgstr "Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:337
+#, fuzzy
+msgid "Re&move Proxy"
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:71
+#, fuzzy
+msgid "Pattern"
+msgstr "Plakken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:72
+#, fuzzy
+msgid "MIME Type"
+msgstr "Type"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:87
+msgid "MIME type:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:92
+#, fuzzy
+msgid "File pattern:"
+msgstr "Bestandsnaam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:97
+#, fuzzy
+msgid "Magic bytes:"
+msgstr "bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:102
+#, fuzzy
+msgid "Save path:"
+msgstr "Opslaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:107
+#, fuzzy
+msgid "Local open command:"
+msgstr "Lokaal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:112
+msgid ""
+"<center>This field contains the command to execute to open a local file."
+"<br><tt>$0</tt> is used in place of the filename</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:116
+#, fuzzy
+msgid "Remote open command:"
+msgstr "Op afstand"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:121
+msgid ""
+"<center>This field contains the command to execute when automatically "
+"opening a received file.<br><tt>$0</tt> is used in place of the filename</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:125
+#, fuzzy
+msgid "Icon"
+msgstr "Pictogram"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:134
+#, fuzzy
+msgid "&New"
+msgstr "&Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:138
+#, fuzzy
+msgid "Re&move"
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:184
+#, fuzzy
+msgid "[Unknown Media Type]"
+msgstr "Onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:230
+#, fuzzy
+msgid "New Media Type"
+msgstr "Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:53
+#, fuzzy
+msgid "Nickname Colors"
+msgstr "Bijnaam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:56
+#, fuzzy
+msgid "Channel owner:"
+msgstr "Kanaal mode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:57
+#, fuzzy
+msgid "Channel admin:"
+msgstr "Kanaal mode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:58
+msgid "Op:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:59
+#, fuzzy
+msgid "Half-op:"
+msgstr "Scheider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:60
+msgid "Voice:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:61
+#, fuzzy
+msgid "User-op:"
+msgstr "Gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:62
+#, fuzzy
+msgid "Away:"
+msgstr "Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:66
+msgid "Use different color for own nick:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:81
+#, fuzzy
+msgid "Draw nickname grid"
+msgstr "Geen naam opgegeven"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:83
+#, fuzzy
+msgid "Grid color:"
+msgstr "Cursor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:90
+msgid "Grid type:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:94
+msgid "3D Grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:95
+msgid "3D Buttons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:96
+#, fuzzy
+msgid "Plain Grid"
+msgstr "Algemene"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:97
+msgid "Dotted Grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:131
+msgid "Horizontal Alignment:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:135
+#, fuzzy
+msgid "Vertical Alignment:"
+msgstr "notificatie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:231
+#, fuzzy
+msgid "Show gender icons"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:232
+#, fuzzy
+msgid "Show user channel icons"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:233
+#, fuzzy
+msgid "Show user channel activity indicator"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:234
+msgid "Hide users label"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:235
+#, fuzzy
+msgid "Enable user tooltips"
+msgstr "Animatie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:236
+#, fuzzy
+msgid "Hide avatars"
+msgstr "Notificatie lijst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:79
+#, fuzzy
+msgid "Use flood protection (recommended)"
+msgstr "Gebruik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:81
+msgid ""
+"<center>This option makes KVIrc only respond to a limited number of CTCP "
+"requests within a specified time interval, to prevent \"flooding\" CTCP "
+"messages.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:83
+msgid "Allow up to:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:84
+#, fuzzy
+msgid " requests"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:86
+msgid ""
+"<center>Minimum value: <b>0 requests</b><br>Maximum value: <b>10000 "
+"requests</b></center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:89
+msgid "within:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:92
+msgid ""
+"<center>Minimum value: <b>1 sec</b><br>Maximum value: <b>3600 sec</b></"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:96
+#, fuzzy
+msgid "Ignored Requests"
+msgstr "Negeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:97
+msgid "PING"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:98
+msgid "FINGER"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:99
+msgid "CLIENTINFO"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:100
+msgid "USERINFO"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:101
+msgid "VERSION"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:102
+msgid "SOURCE"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:103
+msgid "TIME"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:104
+msgid "PAGE"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:105
+msgid "AVATAR"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:106
+msgid "DCC/TDCC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:131
+msgid "General Preferences"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:134
+msgid "Theme Preferences"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:136
+msgid "KVIrc Preferences"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:139
+msgid ""
+"This dialog contains a set of KVIrc settings.<br> Use the icons on the left "
+"to navigate through the option pages. The text box in the bottom left corner "
+"is a small search engine. It will highlight the pages that contain options "
+"related to the search term you have entered."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:147
+msgid ""
+"Many settings have tooltips that can be shown by holding the cursor over "
+"their label for a few seconds."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:152
+msgid ""
+"When you have finished, click \"<b>OK</b>\" to accept your changes or "
+"\"<b>Cancel</b>\" to discard them. Clicking \"<b>Apply</b>\" will commit "
+"your changes without closing the window."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:217
+msgid ""
+"<p>This is the search tool for this options dialog.</p><p>You can enter a "
+"search term either in your native language or in english and press the "
+"button on the right. The pages that contain some options related to the "
+"search term will be highlighted and you will be able to quickly find them.</"
+"p><p>Try \"nickname\" for example.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:249
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:61
+msgid "Close this dialog, accepting all changes."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:255
+msgid "&Apply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:256
+#, fuzzy
+msgid "Commit all changes immediately."
+msgstr "Vastleggen (Commit)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:69
+msgid "Close this dialog, discarding all changes."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:149
+msgid ""
+"This table contains the text icon associations.<br>KVirc will use them to "
+"display the CTRL+I escape sequences and eventually the emoticons."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:165
+#, fuzzy
+msgid "Add"
+msgstr "Toevoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:169
+#, fuzzy
+msgid "Delete"
+msgstr "Verwijderen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:191
+#, fuzzy
+msgid "unnamed"
+msgstr "naamloos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:53
+#, fuzzy
+msgid "Enable word highlighting"
+msgstr "Activeren URL-adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:55
+#, fuzzy
+msgid "Words to highlight:"
+msgstr "Activeren URL-adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:57
+msgid "Word splitters:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:59
+msgid "Highlight messages containing my nickname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:61
+#, fuzzy
+msgid ""
+"<center>If this option is enabled, KVIrc will highlight any user message "
+"containing your current nickname</center>"
+msgstr "<center> is de<b></b> de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:63
+msgid "Flash the system taskbar entry on highlighted messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:65
+#, fuzzy
+msgid ""
+"<center>If this option is enabled, KVIrc will (attempt to) flash the system "
+"taskbar entry when a highlighted message is printed and KVIrc is not the "
+"active window</center>"
+msgstr "<center> is de<b></b> de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:67
+#, fuzzy
+msgid "Popup the notifier window on highlighted messages"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:69
+#, fuzzy
+msgid ""
+"<center>If this option is enabled, KVIrc will popup a little notifier window "
+"in the low right corner of your desktop when a highlighted message is "
+"printed and KVIrc is not the active window</center>"
+msgstr "<center> is de<b></b> de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:91
+#, fuzzy
+msgid "Alert Restrictions"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:92
+#, fuzzy
+msgid "Restrict alert"
+msgstr "He&rstellen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:94
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if a "
+"normal message is received in a channel.<br>Actions like joins, parts and "
+"mode changes will be ignored.<br> This is useful if you are in channels with "
+"a high rate of traffic and only want to be alerted for messages that are "
+"interesting to you.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:96
+msgid "Alert for highlighted words"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:98
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which contain a word from the highlighted words list above.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:100
+#, fuzzy
+msgid "Alert for query messages"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:102
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which are shown in queries.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:107
+#, fuzzy
+msgid "Use custom alert level"
+msgstr "Alles opschonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:109
+#, fuzzy
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if "
+"the specified alert level is reached.</center>"
+msgstr "<center> is de<b></b> de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:111
+#, fuzzy
+msgid "Minimum alert level:"
+msgstr "Alles opschonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:114
+#, fuzzy
+msgid ""
+"<center>This option sets the minimum alert level for the taskbar.</center>"
+msgstr "<center> is de<b></b> de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:213
+msgid "Output verbosity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:49
+msgid "Mute"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:50
+#, fuzzy
+msgid "Quiet"
+msgstr "&Afsluiten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:51
+#, fuzzy
+msgid "Normal"
+msgstr "Normaal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:52
+msgid "Verbose"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:53
+#, fuzzy
+msgid "Paranoic"
+msgstr "s Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:59
+#, fuzzy
+msgid "Show in active window"
+msgstr "Notificatie voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:60
+#, fuzzy
+msgid "External messages"
+msgstr "nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:61
+msgid "External CTCP replies"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:62
+#, fuzzy
+msgid "Whois replies"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:63
+#, fuzzy
+msgid "ChanServ and NickServ notices"
+msgstr "s Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:64
+#, fuzzy
+msgid "Invite messages"
+msgstr "samenvoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:65
+#, fuzzy
+msgid "Server replies"
+msgstr "Algemene opties"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:66
+#, fuzzy
+msgid "Server notices"
+msgstr "s Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:67
+#, fuzzy
+msgid "Broadcast and WALLOPS messages"
+msgstr "private"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:70
+#, fuzzy
+msgid "Show extended server information"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:71
+#, fuzzy
+msgid "Show server pings"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:72
+#, fuzzy
+msgid "Show own parts in the console"
+msgstr "Tonen de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:73
+#, fuzzy
+msgid "Show compact mode changes"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:43
+#, fuzzy
+msgid "Minimize on startup"
+msgstr "M&inimaliseren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:44
+#, fuzzy
+msgid "Confirm quit with active connections"
+msgstr "nee actief"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:45
+#, fuzzy
+msgid "Remember window properties"
+msgstr "Onbekende operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:50
+#, fuzzy
+msgid "Disable splash screen"
+msgstr "[parser waarschuwing in '%s'] : %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:54
+msgid "Enable visual effects"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:55
+msgid "Hide Channel window tool buttons by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:57
+msgid "Open Dialog Window For"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:58
+msgid "Preferences"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:59
+#, fuzzy
+msgid "Registered Users"
+msgstr "Negeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:149
+#, fuzzy
+msgid "Servers"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.cpp:40
+msgid ""
+"This section contains irc tools<br><p>like<b> away, lag and logging system. "
+"</b> </p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:39
+#, fuzzy
+msgid "On Disconnect"
+msgstr "Ophangen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:42
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:55
+#, fuzzy
+msgid "Keep channels open"
+msgstr "Kanaal mode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:44
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after disconnect."
+"</center>"
+msgstr "<center> is de<b></b> de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:47
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:60
+msgid "Keep queries open"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:49
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after disconnect.</"
+"center>"
+msgstr "<center> is de<b></b> de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:52
+#, fuzzy
+msgid "On Unexpected Disconnect"
+msgstr "Auto naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:57
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after an "
+"unexpected disconnect.</center>"
+msgstr "<center> is de<b></b> de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:62
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after an "
+"unexpected disconnect.</center>"
+msgstr "<center> is de<b></b> de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:65
+msgid "Rejoin channels after reconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:67
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to rejoin channels after a successful "
+"reconnect attempt.</center>"
+msgstr "<center> is de<b></b> de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:69
+msgid "Reopen queries after reconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:71
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to reopen query windows after a "
+"successful reconnect attempt.</center>"
+msgstr "<center> is de<b></b> de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:75
+msgid "Automatically reconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:77
+msgid ""
+"<center>This option will enable auto-reconnecting after an unexpected "
+"disconnect. An unexpected disconnect is the <b>termination</b> of a <b>fully "
+"connected IRC session</b> that was <b>not requested by the user</b> by the "
+"means of the QUIT message.<p><b>Warning:</b> If you use /RAW to send a QUIT "
+"message to the server, this option will not behave correctly, since does not "
+"detect the outgoing QUIT message and will attempt to reconnect after the "
+"server has closed the connection. For this reason, always use the /QUIT "
+"command to close your connections. This option may also behave incorrectly "
+"with bouncers that support detaching, in this case a solution could be to "
+"prepare an alias that sends the bouncer \"detach\" command immediately "
+"before the \"quit\" command.<br><tt>alias(bncdetach){ raw bouncer detach; "
+"quit; }</tt></p></center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:89
+msgid "Maximum attempts (0: unlimited):"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:94
+msgid "Delay between attempts:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:100
+msgid ""
+"<center>Minimum value: <b>0 sec</b><br>Maximum value: <b>86400 sec</b></"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:123
+#, fuzzy
+msgid "Certificate"
+msgstr "notificatie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:125
+msgid "Use SSL certificate (PEM format only)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:127
+#, fuzzy
+msgid "Certificate location:"
+msgstr "notificatie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:130
+msgid "Certificate password:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:134
+#, fuzzy
+msgid "Private Key"
+msgstr "private"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:135
+msgid "Use SSL private key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:137
+msgid "Private key location:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:140
+#, fuzzy
+msgid "Private key password:"
+msgstr "Wachtwoord:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:146
+#, fuzzy
+msgid "This executable has no SSL support."
+msgstr "De KVIrc executabele heeft geen IPV6 support"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:165
+msgid "Timeout Values"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:166
+#, fuzzy
+msgid "Connect timeout:"
+msgstr "Verbinden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:168
+msgid "Outgoing data queue flush timeout:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:170
+msgid "Limit outgoing traffic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:171
+#, fuzzy
+msgid "Limit to 1 message every:"
+msgstr "Bericht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:173
+msgid " usec"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:175
+msgid ""
+"<center>Minimum value: <b>10000 usec</b><br>Maximum value: <b>10000000 usec</"
+"b></center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:179
+#, fuzzy
+msgid "Network Interfaces"
+msgstr "Netwerk is onbereikbaar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:181
+#, fuzzy
+msgid "Bind IPv4 connections to:"
+msgstr "Geen verbinding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:185
+#, fuzzy
+msgid "Bind IPv6 connections to:"
+msgstr "Geen verbinding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:210
+msgid "Enable ident service (bad practice on UNIX!)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:216
+#, fuzzy
+msgid "Output identd messages to:"
+msgstr "samenvoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:218
+#, fuzzy
+msgid "Active window"
+msgstr "&Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:219
+#, fuzzy
+msgid "Console"
+msgstr "Sluiten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:220
+#, fuzzy
+msgid "Do not show any identd messages"
+msgstr "verborgen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:237
+msgid "Enable ident service only while connecting to server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:240
+#, fuzzy
+msgid "Ident username:"
+msgstr "Gebruikersnaam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:243
+#, fuzzy
+msgid "Service port:"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:248
+#, fuzzy
+msgid "IPv6 Settings"
+msgstr "&Status"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:249
+msgid "Enable service for IPv6"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:258
+msgid "IP stack treats IPv4 as part of IPv6 namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:265
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications. If it is possible, install a real ident daemon.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:270
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications.<br>On UNIX, you may also need root privileges to bind to the "
+"auth port (113).<br>It is <b>highly recommended</b> that a <b>real</b> "
+"system-wide ident daemon be used instead, or none at all if ident is not "
+"required.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.cpp:39
+msgid ""
+"This section contains the general client options<br><p>like<b> sound, "
+"mediafiles, URL handler </b> etc... </p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:39
+msgid "Automatically Log"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:40
+#, fuzzy
+msgid "Query windows"
+msgstr "&Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:41
+#, fuzzy
+msgid "Channel windows"
+msgstr "Trapgewijs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:42
+#, fuzzy
+msgid "DCC Chat windows"
+msgstr "Trapgewijs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:43
+#, fuzzy
+msgid "Console windows"
+msgstr "&Terminal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:45
+msgid "Gzip logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:47
+#, fuzzy
+msgid "Strip colors in logs"
+msgstr "Cursor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:48
+msgid "Auto flush logs every"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:49
+#, fuzzy
+msgid " min"
+msgstr "&Online"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:52
+msgid ""
+"<center>Save logs with the current interval<br>Set to 0 to disable this "
+"feature</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:49
+#, fuzzy
+msgid "Minimize console after successful login"
+msgstr "netwerk"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:52
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to minimize the console window after "
+"successfully logging into a server.</center>"
+msgstr "<center> is de<b></b> de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:55
+#, fuzzy
+msgid "Show network name in console taskbar entry"
+msgstr "Geen naam opgegeven"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to show the network name as the console "
+"taskbar entry instead of the server name. This is nice to keep on unless "
+"your servers are not organized in networks or you often connect to two "
+"servers of the same network.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:75
+msgid "Force immediate quit"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:78
+msgid ""
+"<center>This option causes KVIrc to close the connection immediately after "
+"sending the QUIT message.<br>When this option is disabled, KVIrc will wait "
+"for the server to close the connection.<br>Note that if you use this, your "
+"QUIT message may be not displayed.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:84
+msgid "Prepend gender info to realname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:110
+#, fuzzy
+msgid "On Channel Kick"
+msgstr "Kanaal mode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:112
+#, fuzzy
+msgid "Rejoin channel"
+msgstr "is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:115
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to attempt to rejoin a channel after "
+"being kicked.</center>"
+msgstr "<center> is de<b></b> de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:129
+#, fuzzy
+msgid "Keep channel open"
+msgstr "Kanaal mode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:121
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"being kicked.<br>It might be a good idea to also enable the \"Rejoin channel"
+"\" option.</center>"
+msgstr "<center> is de<b></b> de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:127
+#, fuzzy
+msgid "On Channel Part"
+msgstr "Kanaal mode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:132
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"leaving it.</center>"
+msgstr "<center> is de<b></b> de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:136
+#, fuzzy
+msgid "Automatically join channel on invite"
+msgstr "naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:139
+msgid ""
+"<center>This option will cause KVIrc to automatically join a channel when an "
+"INVITE message for that channel is received.<br><b>Warning:</b> This may "
+"help spammers harass you. :)</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:144
+#, fuzzy
+msgid "Always open channels as minimized"
+msgstr "Aanmaken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:148
+msgid ""
+"<center>This option causes newly created channel windows to be immediately "
+"minimized.<br>Enable this if you don't like channels popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:168
+#, fuzzy
+msgid "Log joined channels history"
+msgstr "is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:170
+#, fuzzy
+msgid "Default ban mask:"
+msgstr "nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:188
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:202
+#, fuzzy
+msgid "On Channel Join"
+msgstr "Kanaal mode"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:189
+msgid "Do not send /WHO request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:190
+#, fuzzy
+msgid "Do not request ban list"
+msgstr "Verzoeken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:191
+msgid "Do not request ban exception list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:192
+msgid "Do not request invite list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:194
+#, fuzzy
+msgid "Do not update the away list"
+msgstr "Verzoeken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:197
+msgid ""
+"<center>KVIrc sends out a channel /WHO message every now and then to keep "
+"the channel away list in sync. Use this option to disable this feature (and "
+"to save your IRC bandwidth.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:203
+#, fuzzy
+msgid "Echo channel topic"
+msgstr "Nee is"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:204
+#, fuzzy
+msgid "Show channel sync time"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:40
+#, fuzzy
+msgid "Default text encoding:"
+msgstr "de naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:109
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:133
+#, fuzzy
+msgid "Use Language Encoding"
+msgstr "Gebruik de"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:59
+msgid "Force language:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:65
+msgid "<b>Note:</b> You need to restart KVirc to apply a language changing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:68
+#, fuzzy
+msgid "Automatic detection"
+msgstr "Auto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:69
+msgid "en"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+#, fuzzy
+msgid "Unable to write language information to"
+msgstr "Faalde naar de file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:39
+msgid "Enable Anti-spam For"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:45
+msgid "Silent anti-spam (no warnings)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:46
+msgid "Words considered spam:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:51
+msgid "Use workaround for firewall"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:54
+msgid ""
+"<center>Enable this option if you can't accept incoming connections."
+"<br>KVIrc will try to use different methods to send and receive files."
+"<br>Please note that these methods may NOT work when communicating with a "
+"non-KVIrc client.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:73
+#, fuzzy
+msgid "Network Properties"
+msgstr "Eigenschappen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:75
+msgid "Use user-defined address or network interface"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:79
+msgid ""
+"<center>Enable this option if you are on a multihost machine and want to "
+"force one of the available IP addresses to be used for outgoing DCCs."
+"<br>This is especially useful when you use IPv6 and IPv4 addresses.<br>You "
+"can force KVIrc to always choose the IPv4 interface.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:84
+#, fuzzy
+msgid "Listen on address/interface:"
+msgstr "aan s poort"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:87
+msgid ""
+"<center>This is the IP address or name of the interface to use by default "
+"for outgoing DCC transfers.<br>On UNIX systems that support it, you can also "
+"specify IPv4 interface names (such as <b>ppp0</b>).<br>If you set it to "
+"<b>0.0.0.0</b>, KVIrc will try to use the first available IPv4 interface</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:94
+msgid "Use user-defined port range"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:97
+msgid ""
+"<center>Enable this option if you want specify a local port range for DCC.</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:102
+#, fuzzy
+msgid "Lowest port:"
+msgstr "Host poort:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:105
+#, fuzzy
+msgid "Highest port:"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:108
+msgid "Send a fixed address in requests"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:111
+msgid ""
+"<center>Enable this option if you want to always send a fake IP address in "
+"your DCC requests.<br>This might be useful if you're behind a router with a "
+"static address that does network address translation (NAT) and forwards all "
+"or a range of ports.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:115
+msgid "Send address/interface:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:119
+msgid ""
+"<center>This is the fixed address that will be sent with all DCC requests if "
+"you enable the option above.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:123
+msgid "Guess address from IRC server if unroutable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:128
+msgid ""
+"<center>You can enable this option if you are behind a router that forwards "
+"all or a range of ports.<br>KVIrc will try to guess the IP address to use "
+"for DCC by looking up the local hostname as seen by the IRC server you're "
+"connected to.<br>This method is an exclusive alternative to the \"fixed "
+"address\" above.<br>It might guess the correct address automatically if "
+"certain conditions are met (e.g. the IRC server does not mask hostnames).</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:134
+msgid "Use \"broken bouncer hack\" to detect address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:137
+msgid ""
+"<center>When you're behind a dialup router and also tunneling through a "
+"psyBNC bouncer, you can use a bug in the bouncer to force KVIrc to bind the "
+"DCC connections to the dialup router's address.<br>It's an ugly hack - use "
+"it only if nothing else works.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:144
+msgid "Notify failed DCC handshakes to the remote end"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:147
+msgid ""
+"<center>If you enable this option, when a DCC request from a remote user "
+"can't be satisfied KVIrc will notify him by a CTCP ERRMSG. This is a nice "
+"feature so it is a good idea to leave it on unless for some reason you have "
+"deactivated the antiflood system: in this case turning off this option might "
+"help if you often get attacked by CTCP floods.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:154
+#, fuzzy
+msgid "Maximum number of DCC sessions"
+msgstr "buffer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:156
+msgid ""
+"<center>This is the maximum number of concurrent DCC sessions and it "
+"includes all the DCC types (send,chat,recv...). KVIrc will refuse the "
+"requests when this limit is reached.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:161
+#, fuzzy
+msgid "DCC socket timeout:"
+msgstr "seconden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:164
+msgid ""
+"<center>This is the amount of time that KVIrc will wait for a response "
+"before assuming that a DCC has failed because the remote client was unable "
+"to connect to our listening socket.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:198
+msgid "On Incoming File"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:371
+#, fuzzy
+msgid "Automatically accept"
+msgstr "Auto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:200
+#, fuzzy
+msgid "Open transfer window as minimized when auto-accepted"
+msgstr "Aanmaken auto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:201
+#, fuzzy
+msgid "Automatically resume when auto-accepted"
+msgstr "Aanmaken auto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:203
+#, fuzzy
+msgid "Save Location"
+msgstr "notificatie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:204
+#, fuzzy
+msgid "Download folder:"
+msgstr "Ophalen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:205
+msgid "Sort saved files by nicknames (create subfolders)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:206
+msgid "Guess save path from media type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:209
+#, fuzzy
+msgid "On Download Completion"
+msgstr "Ophalen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:210
+#, fuzzy
+msgid "Notify completion in console"
+msgstr "Notificatie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:211
+#, fuzzy
+msgid "Notify completion in notifier"
+msgstr "Notificatie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:212
+#, fuzzy
+msgid "Automatically clear transfer"
+msgstr "Auto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:215
+#, fuzzy
+msgid ""
+"<center>This option will cause succesfully terminated transfers to be "
+"automatically removed from the transfer window.</center>"
+msgstr "<center> is de<b></b> de</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:220
+#, fuzzy
+msgid "Always open transfer window as minimized"
+msgstr "Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:238
+msgid "Bug Compatibility"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:239
+msgid "Send ACK for byte 0"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:242
+msgid ""
+"<center>This option causes KVIrc to send a zero-byte acknowledge to kick-"
+"start the DCC transfer with some buggy IRC clients.<br>Use it only if your "
+"DCC transfers stall just after establishing a connection without sending any "
+"data.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:247
+msgid "Accept broken RESUME (mIRC file.ext)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:250
+msgid ""
+"<center>This option causes KVIrc to accept RESUME requests with invalid "
+"filenames.<br>Use it if KVIrc fails to accept RESUME requests from other "
+"clients (e.g. some versions of mIRC).</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:254
+msgid "Replace spaces with underscores in outgoing filenames"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:257
+msgid ""
+"<center>This option causes KVIrc to replace spaces with underscores in "
+"filenames for all the outgoing file transfers. This will fix filename "
+"handling with some buggy clients (e.g. some versions of mIRC)."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:262
+msgid "Limits"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:265
+msgid "Limit upload bandwidth to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:273
+#, fuzzy
+msgid "bytes/sec"
+msgstr "bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:271
+msgid "Limit download bandwidth to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:277
+#, fuzzy
+msgid "Maximum number of DCC transfers"
+msgstr "buffer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:279
+msgid ""
+"<center>This is the maximum number of concurrent DCC transfers. KVIrc will "
+"refuse the requests when this limit is reached.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:283
+#, fuzzy
+msgid "Tweaks"
+msgstr "Tekst:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:285
+#, fuzzy
+msgid "Use fast send (send ahead)"
+msgstr "Gebruik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:288
+msgid ""
+"<center>The \"send ahead\" DCC method allows data to be sent faster by "
+"breaking some of the rules of the original DCC SEND protocol specification."
+"<br>Most clients can handle this kind of optimisation so disable it only if "
+"you have problems.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:295
+msgid "Force idle step"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:298
+msgid ""
+"<center>Enable this option when the dcc file transfers tend to block your "
+"computer by consuming too much CPU time. When this option is enabled the "
+"idle interval below will be forcibly inserted between each sent/received "
+"data packet.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:310
+msgid ""
+"<center>This parameter controls the average delay between two packets sent "
+"or received.<br>A smaller interval will cause you to send data faster but "
+"will also add load to your CPU, disk and network interface.<br>Reasonable "
+"values are from 5 to 50 milliseconds.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:316
+#, fuzzy
+msgid "Packet size:"
+msgstr "grootte bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:320
+msgid ""
+"<center>This parameter controls the packet size used for DCC SEND.<br>With "
+"bigger packets you will be probably send data faster, but you will also "
+"saturate your bandwidth and in some cases cause more disk activity."
+"<br>Reasonable values are from 512 to 4096 bytes.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:349
+#, fuzzy
+msgid "On Chat Request"
+msgstr "s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:351
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:373
+#, fuzzy
+msgid "Open minimized when auto-accepted"
+msgstr "Aanmaken auto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:353
+#, fuzzy
+msgid "Always open as minimized"
+msgstr "Aanmaken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:369
+#, fuzzy
+msgid "Open all minimized"
+msgstr "Aanmaken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:370
+#, fuzzy
+msgid "On Voice Request"
+msgstr "Zoeken"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:376
+msgid "Force half-duplex mode on sound device"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:377
+msgid "Volume slider controls PCM, not Master"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:379
+#, fuzzy
+msgid "Sound device:"
+msgstr "Karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:380
+#, fuzzy
+msgid "Mixer device:"
+msgstr "Karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:382
+#, fuzzy
+msgid "Pre-buffer size:"
+msgstr "buffer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:38
+#, fuzzy
+msgid "Enable Ignore For"
+msgstr "Activeren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:39
+#, fuzzy
+msgid "Private/channel messages"
+msgstr "private"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:40
+#, fuzzy
+msgid "Private/channel notices"
+msgstr "End voor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:44
+#, fuzzy
+msgid "Use verbose ignore (show messages in console)"
+msgstr "acties"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:46
+#, fuzzy
+msgid "Sound System"
+msgstr "systeemfout"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:66
+msgid "This allows you to select the sound system to be used with KVIrc."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:72
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:88
+msgid "Auto-detect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:91
+#, fuzzy
+msgid "Test"
+msgstr "Tekst:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:79
+#, fuzzy
+msgid "Media Player"
+msgstr "Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:81
+msgid ""
+"This allows you to select the preferred media player to be used with the "
+"mediaplayer.* module commands and functions."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:102
+#, fuzzy
+msgid "ID3 tags' encoding"
+msgstr "Tekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:104
+msgid "This allows you to select encoding of mp3 tags."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:125
+msgid "Winamp messages ecoding"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:127
+msgid "This allows you to select encoding of winamp messages."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:290
+msgid "New Query opened"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:293
+msgid "New message in inactive query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:296
+#, fuzzy
+msgid "Highlighted message in inactive window"
+msgstr "nee"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:299
+msgid "Me have been kicked"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:39
+#, fuzzy
+msgid "Selection background color"
+msgstr "Selectie achtergrond"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:40
+#, fuzzy
+msgid "Selection foreground color"
+msgstr "Selectie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:41
+#, fuzzy
+msgid "Control char color"
+msgstr "char"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:42
+#, fuzzy
+msgid "Cursor color"
+msgstr "Cursor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:141
+#, fuzzy
+msgid "Warp cursor at the end of line when browsing history"
+msgstr "cursor de regel browsen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:142
+msgid "Disable the input history window and it's log memory."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:143
+msgid "Hide input toolbuttons by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:144
+#, fuzzy
+msgid "Nick completion"
+msgstr "gebruiker"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:145
+msgid "Use bash-like nick completion"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:146
+msgid "Nick completion postfix string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:147
+msgid "Use the completion postfix string for the first word only"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:148
+msgid "Commandline in user-friendly mode by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:81
+#, fuzzy
+msgid "Show message icons"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:82
+msgid "Draw some emoticons (smileys) as pictures"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:83
+msgid "Don't show colors in user messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:88
+#, fuzzy
+msgid "Nicknames"
+msgstr "Bijnaam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:90
+msgid "\"Smart\" nickname colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:91
+msgid "Use same colors as in the userlist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:93
+#, fuzzy
+msgid "Show nicknames in bold"
+msgstr "Geen naam opgegeven"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:94
+#, fuzzy
+msgid "Show user and host"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:95
+#, fuzzy
+msgid "Show channel mode prefix"
+msgstr "onbekend"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:96
+msgid "User-defined prefix and postfix"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:98
+msgid "[PREFIX]nickname[!user@host][POSTFIX] message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:112
+#, fuzzy
+msgid "Prefix:"
+msgstr "Proxy:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:117
+#, fuzzy
+msgid "Postfix:"
+msgstr "Conditie:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:131
+#, fuzzy
+msgid "Show timestamp"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:134
+#, fuzzy
+msgid "Use UTC time for timestamp"
+msgstr "Gebruik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:141
+#, fuzzy
+msgid "Use special color for timestamps"
+msgstr "Gebruik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:147
+#, fuzzy
+msgid "Timestamp format:"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:320
+#, fuzzy
+msgid "Transparent"
+msgstr "Transfer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:401
+#, fuzzy
+msgid "Message Type"
+msgstr "Bericht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:417
+#, fuzzy
+msgid "Background:"
+msgstr "Achtergrondkleur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:426
+#, fuzzy
+msgid "Foreground:"
+msgstr "Voorgrondkleur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:434
+#, fuzzy
+msgid "Alert level:"
+msgstr "Alles opschonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:454
+msgid "Log this"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:458
+#, fuzzy
+msgid "Load From..."
+msgstr "Bezig met laden van de iconen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:460
+#, fuzzy
+msgid "Save As..."
+msgstr "Opsl&aan."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:589
+#, fuzzy
+msgid "Choose a Filename - KVIrc"
+msgstr "file naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:646
+#, fuzzy
+msgid "Choose a Filename - KVIrc "
+msgstr "file naar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:40
+#, fuzzy
+msgid "Enable lag meter"
+msgstr "Ongeldige parameter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:42
+msgid ""
+"<center>This enables the lag meter engine, which checks at regular intervals "
+"how much lag (latency) the server has.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:45
+msgid "Lag meter heartbeat:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:49
+msgid ""
+"<center>This option allows you to set the lag meter heartbeat interval."
+"<br>The lower the heartbeat interval the higher will be the accuracy of the "
+"lag check but also higher cpu usage and data traffic to the server."
+"<br>Please note that this is NOT the interval between pings sent to the "
+"server: the pings (if any) will be sent really less often. 5000 is a "
+"reasonable value.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:58
+msgid "Trigger event if lag exceeds:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:61
+msgid ""
+"<center>This option controls the threshold for the OnLagAlarmTimeUp and "
+"OnLagAlarmTimeDown events. When the lag goes above the threshold "
+"OnLagAlarmTimeUp will be triggered and when the lag falls back below the "
+"threshold then OnLagAlarmTimeDown will be triggered</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:68
+msgid "Show lag in IRC context display"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:70
+msgid ""
+"<center>This makes the IRC context display applet show the current lag after "
+"the user's nickname (in seconds)</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.h:28
+#, fuzzy
+msgid "Away"
+msgstr "Alias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.h:28
+msgid "CTCP"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:28
+msgid "DCC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:59
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:41
+#, fuzzy
+msgid "Advanced"
+msgstr "Toevoegen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:72
+#, fuzzy
+msgid "File Transfer"
+msgstr "Bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:113
+#, fuzzy
+msgid "Chat"
+msgstr "is?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:126
+#, fuzzy
+msgid "Voice"
+msgstr "Karakter"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:32
+msgid "IRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:73
+#, fuzzy
+msgid "Channel"
+msgstr "Annuleren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:28
+msgid "Lag"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:30
+msgid "time,ping"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:37
+msgid "authentication,identify"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:31
+msgid "Language"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:34
+msgid "language,encoding,charset,codepage"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:28
+#, fuzzy
+msgid "Contacts"
+msgstr "Verbinden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:30
+msgid "notify,buddy,buddies,friends"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:42
+#, fuzzy
+msgid "Notifier"
+msgstr "Notificatie lijst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:43
+#, fuzzy
+msgid "popup"
+msgstr "Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:37
+#, fuzzy
+msgid "Text"
+msgstr "Tekst:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:38
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:49
+msgid "theme,colors,output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:52
+#, fuzzy
+msgid "Message Style"
+msgstr "Bericht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:56
+msgid "theme,privmsg,output,format"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:67
+#, fuzzy
+msgid "Timestamp"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:71
+#, fuzzy
+msgid "time,timestamp"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:88
+#, fuzzy
+msgid "Message Colors"
+msgstr "Bijnaam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:169
+msgid "theme,colors,messages,output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:168
+#, fuzzy
+msgid "Color Set"
+msgstr "Sluiten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.h:32
+#, fuzzy
+msgid "Avatars"
+msgstr "Accepteren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:32
+#, fuzzy
+msgid "Sound"
+msgstr "Verzenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:48
+msgid "sound,xmms,audio,play,amarok"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:81
+#, fuzzy
+msgid "Sounds"
+msgstr "Verzenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:83
+msgid "sound,events"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:28
+#, fuzzy
+msgid "URL handlers"
+msgstr "Toevoegen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:31
+msgid "url,programs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:29
+#, fuzzy
+msgid "Tray icon"
+msgstr "Tekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:31
+msgid "tray,dockwidget"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.h:33
+#, fuzzy
+msgid "Tools"
+msgstr "H&ulpmiddelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.h:28
+#, fuzzy
+msgid "General options"
+msgstr "Al&gemene opties"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.h:31
+#, fuzzy
+msgid "Interface"
+msgstr "Interface"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:29
+#, fuzzy
+msgid "Text icons"
+msgstr "Tekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:31
+#, fuzzy
+msgid "smileys,emoticons"
+msgstr "Tonen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:34
+msgid "Output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:48
+#, fuzzy
+msgid "Look"
+msgstr "Uiterlijk"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:101
+#, fuzzy
+msgid "Features"
+msgstr "Mogelijkheden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:46
+#, fuzzy
+msgid "Media Types"
+msgstr "Nieuw"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:48
+msgid "file,audio,video,programs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:114
+msgid "theme"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:47
+#, fuzzy
+msgid "Transparency"
+msgstr "Transfer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:48
+#, fuzzy
+msgid "theme,background"
+msgstr "Achtergrondkleur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:74
+#, fuzzy
+msgid "Window Captions"
+msgstr "Onbekende operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:88
+msgid "theme,mdi"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:87
+msgid "Workspace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:100
+#, fuzzy
+msgid "ToolBar Applets"
+msgstr "H&ulpmiddelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:101
+msgid "theme,toolbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:150
+#, fuzzy
+msgid "connection"
+msgstr "Verbinding"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:33
+#, fuzzy
+msgid "Protection"
+msgstr "Gebruik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:36
+msgid "ctcp,flood"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:144
+msgid "Avatar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.h:28
+msgid "Anti-spam"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:32
+msgid "Verbosity And Output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:34
+msgid "debug"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:28
+#, fuzzy
+msgid "Logging"
+msgstr "Loggen uit."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:29
+msgid "save,output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:50
+msgid "Input"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:33
+msgid "theme,colors,text"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:33
+#, fuzzy
+msgid "Taskbar"
+msgstr "Takenbalk"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:47
+#, fuzzy
+msgid "Tree Taskbar"
+msgstr "Takenbalk"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:65
+#, fuzzy
+msgid "Foreground"
+msgstr "Voorgrondkleur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:111
+#, fuzzy
+msgid "Classic Taskbar"
+msgstr "Takenbalk"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:52
+#, fuzzy
+msgid "Proxy Hosts"
+msgstr "Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:54
+#, fuzzy
+msgid "connection,servers"
+msgstr "Maximale tijd om te verbinden overschreden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:28
+#, fuzzy
+msgid "Alert/Highlight"
+msgstr "Activeren URL-adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:42
+#, fuzzy
+msgid "Highlight"
+msgstr "Activeren URL-adres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:55
+#, fuzzy
+msgid "Taskbar Alert"
+msgstr "Takenbalk"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.h:29
+#, fuzzy
+msgid "Flood Protection"
+msgstr "Gebruik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:30
+#, fuzzy
+msgid "Userlist"
+msgstr "Gebruikers lijst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:31
+msgid "theme,userlist,channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:45
+#, fuzzy
+msgid "theme,userlist,channel,background"
+msgstr "Achtergrondkleur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:66
+#, fuzzy
+msgid "theme,userlist,channel,colors"
+msgstr "Annuleren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:81
+#, fuzzy
+msgid "Nickname Grid"
+msgstr "Bijnaam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:82
+#, fuzzy
+msgid "theme,userlist,channel,grid"
+msgstr "Achtergrondkleur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:102
+#, fuzzy
+msgid "userlist,channel"
+msgstr "Annuleren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:29
+#, fuzzy
+msgid "Labels"
+msgstr "Label"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:30
+msgid "theme,topic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:28
+#, fuzzy
+msgid "Scripting Engine"
+msgstr "Beschrijving"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:29
+msgid "scripting,kvs,debug"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:55
+msgid "SSL"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:72
+msgid "Socket"
+msgstr "Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:87
+#, fuzzy
+msgid "Ident Service"
+msgstr "Interface"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:29
+#, fuzzy
+msgid "Ignore"
+msgstr "genegeerd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:31
+#, fuzzy
+msgid "protection"
+msgstr "Gebruik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:28
+#, fuzzy
+msgid "Query"
+msgstr "Ondervraging"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:30
+msgid "chat"
+msgstr ""
+
+#, fuzzy
+#~ msgid "Scaling"
+#~ msgstr "Beschrijving"
+
+#, fuzzy
+#~ msgid "Theme name:"
+#~ msgstr "Achternaam:"
+
+#, fuzzy
+#~ msgid "Version:"
+#~ msgstr "Beschrijving:"
+
+#, fuzzy
+#~ msgid "Package format:"
+#~ msgstr "Bericht"
+
+#, fuzzy
+#~ msgid "Save Theme - KVIrc"
+#~ msgstr "Opslaan"
+
+#, fuzzy
+#~ msgid "Unable to create theme directory."
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Choose save directory"
+#~ msgstr "map."
+
+#, fuzzy
+#~ msgid "You must select save directory"
+#~ msgstr "Onvolledige map"
+
+#, fuzzy
+#~ msgid "Unable to create theme files directory."
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Unable to create theme utils directory."
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for reading."
+#~ msgstr "file s voor"
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for writing."
+#~ msgstr "de file s voor"
+
+#, fuzzy
+#~ msgid "Choose filaname"
+#~ msgstr "file"
+
+#, fuzzy
+#~ msgid "You must select filename"
+#~ msgstr "Onvolledige map"
+
+#, fuzzy
+#~ msgid "Refresh Theme List"
+#~ msgstr "Laden"
+
+#, fuzzy
+#~ msgid "Delete Selected Theme"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "Open Theme - KVIrc"
+#~ msgstr "Opslaan"
+
+#, fuzzy
+#~ msgid "You must select file"
+#~ msgstr "Onvolledige map"
+
+#, fuzzy
+#~ msgid "<p>Theme: %1</p>"
+#~ msgstr "Achternaam:"
+
+#, fuzzy
+#~ msgid "<p>Version: %1</p>"
+#~ msgstr "Beschrijving"
+
+#, fuzzy
+#~ msgid "Timestamp color"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "Minimize new queries"
+#~ msgstr "M&inimaliseren"
+
+#, fuzzy
+#~ msgid "Automatically close on completion"
+#~ msgstr "naar"
+
+#, fuzzy
+#~ msgid "Speed limits"
+#~ msgstr "Snelheid"
+
+#, fuzzy
+#~ msgid "Idle interval:"
+#~ msgstr "Gebruikersnaam"
+
+#, fuzzy
+#~ msgid ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">General Preferences</font></h1></center></td></"
+#~ "tr><tr><td><br><br><center><b>These sections contain various settings for "
+#~ "KVIrc</b></center><br><br><p>When you have finished, click \"<b>OK</b>\" "
+#~ "to accept your changes or \"<b>Cancel</b>\" to discard them. Clicking "
+#~ "\"<b>Apply</b>\" will commit your changes without closing the window.</"
+#~ "td></tr><tr><td>Many settings have tooltips that can be shown by holding "
+#~ "the cursor over their label for a few seconds.</p></td></tr></table>"
+#~ msgstr ""
+#~ "<h1><b><center> Algemeen</center></b></h1><br><hr><br><center> Selecteren "
+#~ "de aan de<br> naar de<br> Ok naar<br> of Annuleren naar it</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">General Preferences</font></h1></center></td></"
+#~ "tr><tr><td><br><br>Select a category in the list view on the left to view "
+#~ "the related settings. When you have finished, click \"<b>OK</b>\" to "
+#~ "accept your changes or \"<b>Cancel</b>\" to discard them. Clicking "
+#~ "\"<b>Apply</b>\" will commit your changes without closing this window."
+#~ "<br><br></td></tr></table>"
+#~ msgstr ""
+#~ "<h1><b><center> Algemeen</center></b></h1><br><hr><br><center> Selecteren "
+#~ "de aan de<br> naar de<br> Ok naar<br> of Annuleren naar it</center>"
+
+#, fuzzy
+#~ msgid "Standard Colors"
+#~ msgstr "Cursor"
+
+#, fuzzy
+#~ msgid "Avatar Handling"
+#~ msgstr "Accepteren"
+
+#, fuzzy
+#~ msgid "MDI Captions"
+#~ msgstr "Acties"
+
+#, fuzzy
+#~ msgid "Load & Save"
+#~ msgstr "Op&slaan"
+
+#, fuzzy
+#~ msgid "Maximum number of rows:"
+#~ msgstr "buffer"
+
+#, fuzzy
+#~ msgid "Custom nickname:"
+#~ msgstr "Notificatie"
+
+#, fuzzy
+#~ msgid "Newbie"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "Normal user"
+#~ msgstr "Normaal"
+
+#, fuzzy
+#~ msgid "Experienced user"
+#~ msgstr "Zoeken"
+
+#, fuzzy
+#~ msgid "Novice"
+#~ msgstr "Karakter"
+
+#, fuzzy
+#~ msgid "Alias"
+#~ msgstr "Alias"
+
+#, fuzzy
+#~ msgid "No item selected"
+#~ msgstr "Beginwaarde"
+
+#, fuzzy
+#~ msgid "Rename"
+#~ msgstr "Hernoemen"
+
+#, fuzzy
+#~ msgid "Edit the alias or namespace name"
+#~ msgstr "Alias"
+
+#, fuzzy
+#~ msgid "Add Alias"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "Remove Selected"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "Export Selected..."
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "Export All..."
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "Find In Aliases..."
+#~ msgstr "Alias"
+
+#, fuzzy
+#~ msgid "Alias Export"
+#~ msgstr "Alias"
+
+#, fuzzy
+#~ msgid "Write Failed - KVIrc"
+#~ msgstr "file naar"
+
+#, fuzzy
+#~ msgid "Unable to write to the alias file."
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Remove item"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "Yes"
+#~ msgstr "ja"
+
+#, fuzzy
+#~ msgid "Yes to All"
+#~ msgstr "Alles selecteren"
+
+#, fuzzy
+#~ msgid "Missing Alias Name"
+#~ msgstr "Ontbrekende variabele naam"
+
+#, fuzzy
+#~ msgid "Missing Namespace Name"
+#~ msgstr "Ontbrekende variabele naam"
+
+#, fuzzy
+#~ msgid "Please enter the name for the new alias"
+#~ msgstr "Nee gebruikers de"
+
+#, fuzzy
+#~ msgid "Rename Alias"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "Please enter the new name for the alias"
+#~ msgstr "Selecteren naam voor de"
+
+#, fuzzy
+#~ msgid "Rename Namespace"
+#~ msgstr "Bekend naam:"
+
+#, fuzzy
+#~ msgid "Namespace"
+#~ msgstr "Bericht"
+
+#, fuzzy
+#~ msgid "Alias Editor"
+#~ msgstr "Alias"
+
+#, fuzzy
+#~ msgid "The config file with id '%Q' is not open"
+#~ msgstr "file s is"
+
+#, fuzzy
+#~ msgid "The config file with id '%Q' is read only"
+#~ msgstr "file s is"
+
+#, fuzzy
+#~ msgid "Request Links"
+#~ msgstr "Verzoeken"
+
+#, fuzzy
+#~ msgid "Link"
+#~ msgstr "Koppeling"
+
+#, fuzzy
+#~ msgid "(None)"
+#~ msgstr "(Geen)"
+
+#, fuzzy
+#~ msgid "Sent links request, waiting for reply..."
+#~ msgstr "Verzonden voor."
+
+#, fuzzy
+#~ msgid "Cannot request links: No active connection"
+#~ msgstr "nee actief"
+
+#, fuzzy
+#~ msgid "Connected to %s (%s)"
+#~ msgstr "Verbonden naar s"
+
+#, fuzzy
+#~ msgid "Links cannot be requested: Not connected to a server"
+#~ msgstr "U bent niet met een server verbonden"
+
+#, fuzzy
+#~ msgid "Links for %Q [IRC Context %u]"
+#~ msgstr "voor s IRC Context"
+
+#, fuzzy
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Links for %Q</b></font> <font color=\"%s\">"
+#~ "[IRC Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b> voor s</b></font><font color=\"%Q\"> IRC "
+#~ "Context</font></nobr>"
+
+#, fuzzy
+#~ msgid ""
+#~ "Broken link: Missing parent (%s) for %s (%d hops): %s (used /LINKS "
+#~ "<mask> ?)"
+#~ msgstr "Gebroken koppeling s voor s s gebruikt<mask>"
+
+#, fuzzy
+#~ msgid "%s: Parent link %s"
+#~ msgstr "s koppeling"
+
+#, fuzzy
+#~ msgid ""
+#~ "Warning: No root link was sent by the server, the stats may be invalid."
+#~ msgstr "Waarschuwing Nee root koppeling door de de."
+
+#, fuzzy
+#~ msgid "%c%cLinks for %Q"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "Total hosts listed"
+#~ msgstr "Totaal s"
+
+#, fuzzy
+#~ msgid "Total hosts in the network"
+#~ msgstr "de"
+
+#, fuzzy
+#~ msgid "Broken (unknown) links: %d"
+#~ msgstr "Gebroken onbekend"
+
+#, fuzzy
+#~ msgid "Maximum links per host: %d [%s]"
+#~ msgstr "Max s"
+
+#, fuzzy
+#~ msgid "Total links: %d"
+#~ msgstr "Totaal"
+
+#, fuzzy
+#~ msgid "Maximum hops: %d [%s]"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Average hops: ~%d.%d"
+#~ msgstr "Gemiddeld"
+
+#, fuzzy
+#~ msgid "(Unknown)"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Incomplete LINKS result, no stats available"
+#~ msgstr "Nee"
+
+#~ msgid "You're not connected to a server"
+#~ msgstr "U bent niet met een server verbonden"
+
+#, fuzzy
+#~ msgid "Reset"
+#~ msgstr "Resetten"
+
+#, fuzzy
+#~ msgid "Processing link: %s"
+#~ msgstr "koppeling"
+
+#, fuzzy
+#~ msgid "Broken message syntax, can't extract hops number, assuming 0"
+#~ msgstr "Gebroken"
+
+#, fuzzy
+#~ msgid "Links window alread open for this IRC context"
+#~ msgstr "venster voor IRC"
+
+#, fuzzy
+#~ msgid "Current window is not a channel"
+#~ msgstr "venster is"
+
+#, fuzzy
+#~ msgid "List window alread open for this IRC context"
+#~ msgstr "venster voor IRC"
+
+#, fuzzy
+#~ msgid "Request List"
+#~ msgstr "Verzoeken"
+
+#, fuzzy
+#~ msgid "Stop list download"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid "Users"
+#~ msgstr "Gebruiker"
+
+#, fuzzy
+#~ msgid "Sent list request, waiting for reply..."
+#~ msgstr "Verzonden voor."
+
+#, fuzzy
+#~ msgid "Cannot request list: No active connection"
+#~ msgstr "nee actief"
+
+#, fuzzy
+#~ msgid "Cannot stop list download, no active connection."
+#~ msgstr "nee actief"
+
+#, fuzzy
+#~ msgid "List cannot be requested: Not connected to a server"
+#~ msgstr "U bent niet met een server verbonden"
+
+#, fuzzy
+#~ msgid "Channel List [IRC Context %u]"
+#~ msgstr "voor s IRC Context"
+
+#, fuzzy
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Channel List</b></font> <font color=\"%s\">"
+#~ "[IRC Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b> voor s</b></font><font color=\"%s\"> IRC "
+#~ "Context</font></nobr>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Channel list</b></font> <font color=\"%s\">"
+#~ "[IRC Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b> voor s</b></font><font color=\"%s\"> IRC "
+#~ "Context</font></nobr>"
+
+#, fuzzy
+#~ msgid "Processing list: %Q"
+#~ msgstr "koppeling"
+
+#, fuzzy
+#~ msgid "Search keywords"
+#~ msgstr "Zoeken"
+
+#, fuzzy
+#~ msgid "Help Browser"
+#~ msgstr "Nieuw hulp"
+
+#, fuzzy
+#~ msgid "Channel: %c%s@%s"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid " Property: %s=%s"
+#~ msgstr "Eigenschap s"
+
+#, fuzzy
+#~ msgid "Total %d channels"
+#~ msgstr "Totaal"
+
+#, fuzzy
+#~ msgid "Shows the URL list window"
+#~ msgstr "Sluiten"
+
+#, fuzzy
+#~ msgid "&Help"
+#~ msgstr "&Help"
+
+#, fuzzy
+#~ msgid "Clo&se"
+#~ msgstr "Sluiten"
+
+#, fuzzy
+#~ msgid "&Load"
+#~ msgstr "Laden"
+
+#, fuzzy
+#~ msgid "&Clear"
+#~ msgstr "Beginwaarde"
+
+#, fuzzy
+#~ msgid "&List"
+#~ msgstr "Be&werken"
+
+#, fuzzy
+#~ msgid "Window"
+#~ msgstr "&Venster"
+
+#, fuzzy
+#~ msgid "Count"
+#~ msgstr "Knippen"
+
+#, fuzzy
+#~ msgid "Warning - KVIrc"
+#~ msgstr "Delen"
+
+#, fuzzy
+#~ msgid "Select an URL."
+#~ msgstr "Alles selecteren"
+
+#, fuzzy
+#~ msgid "&Remove"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "&Say to Window"
+#~ msgstr "&Venster"
+
+#, fuzzy
+#~ msgid "Window not found."
+#~ msgstr "Venster s"
+
+#, fuzzy
+#~ msgid "URL Module Configuration"
+#~ msgstr "Op&slaan"
+
+#, fuzzy
+#~ msgid "&Cancel"
+#~ msgstr "Annuleren"
+
+#, fuzzy
+#~ msgid "Enable URL ban list"
+#~ msgstr "Activeren URL-adres"
+
+#, fuzzy
+#~ msgid "&Add Ban"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "&Remove Selected"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "URL Ban List"
+#~ msgstr "Activeren URL-adres"
+
+#, fuzzy
+#~ msgid "Select a ban."
+#~ msgstr "Alles selecteren"
+
+#, fuzzy
+#~ msgid "Window with ID '%Q' not found"
+#~ msgstr "Venster s"
+
+#, fuzzy
+#~ msgid "The specified window (%Q) is not a channel/query/DCC chat"
+#~ msgstr "venster is"
+
+#, fuzzy
+#~ msgid "File not found or empty"
+#~ msgstr "Bestand Niet"
+
+#, fuzzy
+#~ msgid "I can't open that file"
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "The specified window (%s) is not a channel/query/dcc"
+#~ msgstr "venster is"
+
+#, fuzzy
+#~ msgid "Window %Q not found"
+#~ msgstr "Venster s"
+
+#, fuzzy
+#~ msgid "Missing window id after the 'w' switch"
+#~ msgstr "venster id de"
+
+#, fuzzy
+#~ msgid "Can't log to file %Q"
+#~ msgstr "naar file"
+
+#, fuzzy
+#~ msgid "This window has no logging capabilities"
+#~ msgstr "venster nee"
+
+#, fuzzy
+#~ msgid "Window with id '%Q' not found, returning empty string"
+#~ msgstr "Venster door id s leeg"
+
+#, fuzzy
+#~ msgid "&Next >"
+#~ msgstr "Tekst:"
+
+#, fuzzy
+#~ msgid "Finish"
+#~ msgstr "Zoeken"
+
+#, fuzzy
+#~ msgid "KVIrc Setup"
+#~ msgstr "Kvirc setup"
+
+#, fuzzy
+#~ msgid "<b>Nickname:</b>"
+#~ msgstr "Bijnaam:"
+
+#, fuzzy
+#~ msgid "Application Folders"
+#~ msgstr "Op&slaan"
+
+#, fuzzy
+#~ msgid "<b>Store configuration in folder:</b>"
+#~ msgstr "Op&slaan"
+
+#, fuzzy
+#~ msgid "<b>Download files to folder:</b>"
+#~ msgstr "Op&slaan"
+
+#, fuzzy
+#~ msgid "Default Theme"
+#~ msgstr "Standaard"
+
+#, fuzzy
+#~ msgid "&Yes"
+#~ msgstr "ja"
+
+#, fuzzy
+#~ msgid "&No"
+#~ msgstr "&Ga naar"
+
+#, fuzzy
+#~ msgid "URL Handlers"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "Finish Setup"
+#~ msgstr "Zoeken"
+
+#, fuzzy
+#~ msgid "Choose a Configuration Folder - KVIrc Setup"
+#~ msgstr "de naar"
+
+#, fuzzy
+#~ msgid "Choose a Download Folder - KVIrc Setup"
+#~ msgstr "de naar"
+
+#, fuzzy
+#~ msgid "Can't add a null object"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Not a widget object"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Can't find the tab "
+#~ msgstr "s de"
+
+#, fuzzy
+#~ msgid "Unknown position 'Q%'"
+#~ msgstr "Onbekende functie"
+
+#, fuzzy
+#~ msgid "Invalid timeout (%s)"
+#~ msgstr "s"
+
+#~ msgid "Another connection in progress"
+#~ msgstr "Een andere verbinding bezig"
+
+#, fuzzy
+#~ msgid "Invalid port specified: the kernel will choose one"
+#~ msgstr "naar lokaal s de kiezen de"
+
+#, fuzzy
+#~ msgid "Invalid IP address specified (%s)"
+#~ msgstr "Ongeldig IP adres"
+
+#~ msgid "Socket creation failed"
+#~ msgstr "Aanmaak van een socket mislukt"
+
+#, fuzzy
+#~ msgid "Invalid socket address"
+#~ msgstr "Ongeldig IP adres"
+
+#~ msgid "unknown"
+#~ msgstr "onbekend"
+
+#, fuzzy
+#~ msgid "No socket object specified"
+#~ msgstr "Nee masker"
+
+#, fuzzy
+#~ msgid "Invalid port (%s)"
+#~ msgstr "IRC url s"
+
+#, fuzzy
+#~ msgid "Invalid ip address (%s)"
+#~ msgstr "Ongeldig IP adres"
+
+#, fuzzy
+#~ msgid "Failed to create the socket"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid "Failed to setup a nonblocking socket"
+#~ msgstr "Faalde naar"
+
+#, fuzzy
+#~ msgid "Connect failure: %s"
+#~ msgstr "Verbinding"
+
+#, fuzzy
+#~ msgid "Connect attempt timed out"
+#~ msgstr "Maximale tijd om te verbinden overschreden"
+
+#, fuzzy
+#~ msgid "Can't start the DNS thread"
+#~ msgstr "de"
+
+#, fuzzy
+#~ msgid "Can't add a non - popupmenu object"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Unknown text position '%Q'"
+#~ msgstr "Onbekende functie"
+
+#, fuzzy
+#~ msgid "Invalid selection mode '%Q' assuming single"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "Invalid resize mode defaulting to Auto"
+#~ msgstr "s naar"
+
+#, fuzzy
+#~ msgid "Empty string"
+#~ msgstr "Leeg"
+
+#, fuzzy
+#~ msgid "Empty filename string"
+#~ msgstr "Leeg bestandsnaam"
+
+#, fuzzy
+#~ msgid "No such open mode: %s"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "File is not open !"
+#~ msgstr "Bestand is!"
+
+#, fuzzy
+#~ msgid "Negative file index supplied !"
+#~ msgstr "Negatief file!"
+
+#, fuzzy
+#~ msgid "Argument to long, using only first char"
+#~ msgstr "naar"
+
+#, fuzzy
+#~ msgid "Argument length is 0 - empty string"
+#~ msgstr "is leeg"
+
+#, fuzzy
+#~ msgid "Write error occured !"
+#~ msgstr "Schrijven!"
+
+#, fuzzy
+#~ msgid "Read error occured !"
+#~ msgstr "Gelezen!"
+
+#, fuzzy
+#~ msgid "Length is a negative number !"
+#~ msgstr "Lengte is!"
+
+#, fuzzy
+#~ msgid "No such open mode: '%Q'"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "File is not open!"
+#~ msgstr "Bestand is!"
+
+#, fuzzy
+#~ msgid "One of the geometry array parameters didn't evaluate to an integer"
+#~ msgstr "Linkse operator is geen nummer"
+
+#, fuzzy
+#~ msgid "The first parameter didn't evaluate to an array nor an integer"
+#~ msgstr "Linkse operator is geen nummer"
+
+#, fuzzy
+#~ msgid "One of the array parameters didn't evaluate to an integer"
+#~ msgstr "Linkse operator is geen nummer"
+
+#, fuzzy
+#~ msgid "Unknown orientation"
+#~ msgstr "Onbekende functie"
+
+#, fuzzy
+#~ msgid "Invalid mode '%Q'"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Unknown mode "
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Unknown segment style "
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Failed to find the widget to wrap"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid "Can't find the widget object to add (%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Invalid object"
+#~ msgstr "ongeldig poort nummer"
+
+#, fuzzy
+#~ msgid "Can't fill non-widget object"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Invalid x offset parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Invalid y offset parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Can't find the specified file '%s'."
+#~ msgstr "de commando venster door id s"
+
+#, fuzzy
+#~ msgid "I can't find the specified file %Q."
+#~ msgstr "de commando venster door id s"
+
+#, fuzzy
+#~ msgid "No such line number"
+#~ msgstr "Nee s"
+
+#, fuzzy
+#~ msgid "Unknown word wrap '%Q'"
+#~ msgstr "Onbekende operator"
+
+#, fuzzy
+#~ msgid "One of the colors array parameters didn't evaluate to an integer"
+#~ msgstr "Linkse operator is geen nummer"
+
+#, fuzzy
+#~ msgid "Unknown text format '%Q'"
+#~ msgstr "Onbekende functie"
+
+#, fuzzy
+#~ msgid " I can't find the specified file '%Q'."
+#~ msgstr "de commando venster door id s"
+
+#, fuzzy
+#~ msgid " I cannot read the file %Q'."
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Unknown alignment '%Q'"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Unknown auto formatting mode '%Q'"
+#~ msgstr "Onbekende operator"
+
+#, fuzzy
+#~ msgid "Unknown vertical alignment '%Q'"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Unknown dock area '%Q'"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Class is undefined"
+#~ msgstr "s is"
+
+#, fuzzy
+#~ msgid "Processing aborted"
+#~ msgstr "koppeling"
+
+#, fuzzy
+#~ msgid "XML support not available in the Qt library"
+#~ msgstr "Functie niet beschikbaar"
+
+#, fuzzy
+#~ msgid "Invalid width parameter"
+#~ msgstr "breedte"
+
+#, fuzzy
+#~ msgid "Invalid height parameter"
+#~ msgstr "hoogte"
+
+#, fuzzy
+#~ msgid "Invalid size parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Unknown widget type: %s"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Can't find the widget object assuming 0"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Parent must be a widget object"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Invalid parameters"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Invalid Parameters"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Invalid row parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Invalid column parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Unknown widget flag '%Q'"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Unknown style '%Q'"
+#~ msgstr "onbekend"
+
+#, fuzzy
+#~ msgid "Unknown alignment: '%Q'"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Unknown frame style"
+#~ msgstr "Onbekend stijl"
+
+#, fuzzy
+#~ msgid "Unknown echo mode %Q"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "The parent-widget isn't a MainWindow."
+#~ msgstr "venster is"
+
+#, fuzzy
+#~ msgid "pix '%Q' doesn't exists"
+#~ msgstr "file s is"
+
+#, fuzzy
+#~ msgid "Doesn't a widget object"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Unknown alignment"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Unknown orientation: "
+#~ msgstr "Onbekende functie"
+
+#, fuzzy
+#~ msgid "Not Enough Parameters"
+#~ msgstr "Niet voldoende parameters"
+
+#, fuzzy
+#~ msgid "Unknown tickmark '%Q'"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Unknown orientation '%Q'"
+#~ msgstr "Onbekende functie"
+
+#, fuzzy
+#~ msgid "Context sensitive help"
+#~ msgstr "Plakken"
+
+#, fuzzy
+#~ msgid "Find"
+#~ msgstr "Zoeken"
+
+#, fuzzy
+#~ msgid "&Findnext"
+#~ msgstr "Algemene"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s doesn't look like a servers.ini file.\n"
+#~ "Import failed."
+#~ msgstr "s file."
+
+#, fuzzy
+#~ msgid "URL Selection"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "Failed to start the server list transfer :("
+#~ msgstr "Faalde naar"
+
+#, fuzzy
+#~ msgid "Import from servers.ini"
+#~ msgstr "Samenvoegen"
+
+#, fuzzy
+#~ msgid "Import from http://www.mirc.co.uk/servers.ini"
+#~ msgstr "Samenvoegen"
+
+#, fuzzy
+#~ msgid ""
+#~ "Can't set the current avatar to '%Q': failed to start the http transfer"
+#~ msgstr "de naar s de nee"
+
+#, fuzzy
+#~ msgid "Can't set the current avatar to '%Q': can't load the image"
+#~ msgstr "de naar s de nee"
+
+#, fuzzy
+#~ msgid "Invalid timeout specified, using default"
+#~ msgstr "pictogram s"
+
+#, fuzzy
+#~ msgid "Can't add a file offer for file %Q (huh ? file not readable ?)"
+#~ msgstr "toevoegen file voor file s file"
+
+#, fuzzy
+#~ msgid "Added %d secs file offer for file %Q (%Q) and receiver %Q"
+#~ msgstr "Toegevoegd seconden file voor file s s en"
+
+#, fuzzy
+#~ msgid "Notifying avatar '%Q' to %Q"
+#~ msgstr "s naar"
+
+#, fuzzy
+#~ msgid "Unknown "
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Invalid DCOP parameter syntax"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "The specified parameter is not an integer"
+#~ msgstr "venster is"
+
+#, fuzzy
+#~ msgid "Unsupported DCOP parameter type %s"
+#~ msgstr "Gebruik"
+
+#, fuzzy
+#~ msgid "External Menu"
+#~ msgstr "nee"
+
+#, fuzzy
+#~ msgid "Separator"
+#~ msgstr "Scheider"
+
+#, fuzzy
+#~ msgid "Label"
+#~ msgstr "Label"
+
+#, fuzzy
+#~ msgid "Popup name"
+#~ msgstr "Popup"
+
+#, fuzzy
+#~ msgid "Type"
+#~ msgstr "Type"
+
+#, fuzzy
+#~ msgid "Text:"
+#~ msgstr "Tekst:"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center><b>Visible text</b><br>May contain identifiers that will be "
+#~ "evaluated at popup call time.<br>For labels, this text can contain also "
+#~ "limited HTML tags.</center>"
+#~ msgstr ""
+#~ "<center><b> tekst</b><br> mei bevatten tijd<br> tekst bevatten</center>"
+
+#, fuzzy
+#~ msgid "Condition:"
+#~ msgstr "Conditie:"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center><b>Boolean condition</b><br>Will be evaluated at popup call time "
+#~ "in order to decide if this entry has to be shown.<br>An empty condition "
+#~ "evaluates to true.</center>"
+#~ msgstr ""
+#~ "<center><b> conditie</b><br> tijd naar naar<br> leeg conditie naar juist</"
+#~ "center>"
+
+#, fuzzy
+#~ msgid "Icon:"
+#~ msgstr "Pictogram:"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center><b>Icon identifier</b><br>May be an internal icon ID, an absolute "
+#~ "path or a relative path.<br>Portable scripts should never use absolute "
+#~ "paths.</center>"
+#~ msgstr ""
+#~ "<center><b> Pictogram</b><br> mei pictogram id of<br> nooit</center>"
+
+#, fuzzy
+#~ msgid "External menu:"
+#~ msgstr "Gebruikersnaam:"
+
+#, fuzzy
+#~ msgid "Item Id:"
+#~ msgstr "Achternaam:"
+
+#, fuzzy
+#~ msgid "New Separator Below"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "New Separator Above"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "New Separator Inside"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "New Label Below"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "New Label Above"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "New Label Inside"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "New Item Below"
+#~ msgstr "Nieuw item"
+
+#, fuzzy
+#~ msgid "New Item Above"
+#~ msgstr "Nieuw item"
+
+#, fuzzy
+#~ msgid "New Item Inside"
+#~ msgstr "Nieuw item"
+
+#, fuzzy
+#~ msgid "New Menu Below"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "New Menu Above"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "New Menu Inside"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "New External Menu Below"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "New External Menu Above"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "New External Menu Inside"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "Cu&t"
+#~ msgstr "Knippen"
+
+#, fuzzy
+#~ msgid "&Copy"
+#~ msgstr "Kopiëren..."
+
+#, fuzzy
+#~ msgid "&Paste Below"
+#~ msgstr "Plakken"
+
+#, fuzzy
+#~ msgid "Paste Above"
+#~ msgstr "Plakken"
+
+#, fuzzy
+#~ msgid "Paste Inside"
+#~ msgstr "Plakken"
+
+#, fuzzy
+#~ msgid "New Menu Prologue"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "New Menu Epilogue"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "&Export All To..."
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "&Export selected To..."
+#~ msgstr "Beginwaarde"
+
+#, fuzzy
+#~ msgid "&New Popup"
+#~ msgstr "Popup"
+
+#, fuzzy
+#~ msgid "Re&move Popup"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "&Export Popup To..."
+#~ msgstr "Popup"
+
+#, fuzzy
+#~ msgid "Unable to write to the popup file."
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Popup Editor"
+#~ msgstr "Popup"
+
+#, fuzzy
+#~ msgid "Missing both encrypt and decrypt key: at least one is needed"
+#~ msgstr "beide en is"
+
+#, fuzzy
+#~ msgid "Error 0: Success ?"
+#~ msgstr "Fout Succesvol?"
+
+#, fuzzy
+#~ msgid "Invalid direction for this engine"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "Corrupted message data or invalid decrypt key"
+#~ msgstr "of"
+
+#~ msgid "Unknown error"
+#~ msgstr "Onbekende fout"
+
+#, fuzzy
+#~ msgid "Data buffer too long"
+#~ msgstr "Als gegevens-cd buffer"
+
+#, fuzzy
+#~ msgid "The message is not a hexadecimal string: this is not my stuff"
+#~ msgstr "is is"
+
+#, fuzzy
+#~ msgid "The message is not a base64 string: this is not my stuff"
+#~ msgstr "is is"
+
+#, fuzzy
+#~ msgid ""
+#~ "Cryptographic engine based on the\n"
+#~ "Advanced Encryption Standard (AES)\n"
+#~ "algorithm called Rijndael.\n"
+#~ "The text is first encrypted with rijndael\n"
+#~ "and then converted to %s notation.\n"
+#~ "The keys used are %d bit long and will be padded\n"
+#~ "with zeros if you provide shorter ones.\n"
+#~ "If only one key is provided, this engine\n"
+#~ "will use it for both encrypting and decrypting.\n"
+#~ "See the rijndael module documentation\n"
+#~ "for more info on the algorithm used.\n"
+#~ msgstr ""
+#~ "aan de\n"
+#~ " Geavanceerd Encryptie Standaard\n"
+#~ "\n"
+#~ " tekst is door\n"
+#~ " en naar s\n"
+#~ " gebruikt en\n"
+#~ " door\n"
+#~ " is\n"
+#~ " it voor beide en\n"
+#~ " de module documentatie\n"
+#~ " voor aan de gebruikt\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Popular cryptographic engine based on the\n"
+#~ "old Blowfish encryption algorithm.\n"
+#~ "The text is first encrypted with Blowfish \n"
+#~ "and then converted to base64 notation.\n"
+#~ "The keys used have variable length and\n"
+#~ "are specified as character strings.\n"
+#~ "You can specify keys long up to 56 bytes (448 bits).\n"
+#~ "If only one key is provided, this engine\n"
+#~ "will use it for both encrypting and decrypting.\n"
+#~ "This engine works in ECB mode by default:\n"
+#~ "if you want to use CBC mode you must prefix\n"
+#~ "your key(s) with \"cbc:\".\n"
+#~ msgstr ""
+#~ "aan de\n"
+#~ " Geavanceerd Encryptie Standaard\n"
+#~ "\n"
+#~ " tekst is door\n"
+#~ " en naar s\n"
+#~ " gebruikt en\n"
+#~ " door\n"
+#~ " is\n"
+#~ " it voor beide en\n"
+#~ " de module documentatie\n"
+#~ " voor aan de gebruikt\n"
+
+#, fuzzy
+#~ msgid "Choose the file to share"
+#~ msgstr "de naar"
+
+#, fuzzy
+#~ msgid "The current window is not a channel"
+#~ msgstr "venster is"
+
+#, fuzzy
+#~ msgid "Can't find the window with id '%Q'"
+#~ msgstr "de commando venster door id s"
+
+#, fuzzy
+#~ msgid "The specified window (%Q) is not a channel"
+#~ msgstr "venster is"
+
+#, fuzzy
+#~ msgid "No action name/index specified"
+#~ msgstr "Nee naam"
+
+#, fuzzy
+#~ msgid "The action parameter didn't evaluate to an index"
+#~ msgstr "Linkse operator is geen nummer"
+
+#, fuzzy
+#~ msgid "The toolbar does not contain the specified item"
+#~ msgstr "Nee naam"
+
+#, fuzzy
+#~ msgid "The action \"%Q\" doesn't exist"
+#~ msgstr "file s is"
+
+#, fuzzy
+#~ msgid "KVIrc"
+#~ msgstr "Naa&r voorgrond de"
+
+#, fuzzy
+#~ msgid "Context"
+#~ msgstr "Verbinden"
+
+#, fuzzy
+#~ msgid "&Configure KVIrc..."
+#~ msgstr "&Opties"
+
+#, fuzzy
+#~ msgid "&About KVIrc"
+#~ msgstr "Info over."
+
+#, fuzzy
+#~ msgid "Un&dock"
+#~ msgstr "&Afmeren"
+
+#, fuzzy
+#~ msgid "&Quit"
+#~ msgstr "&Afsluiten"
+
+#, fuzzy
+#~ msgid "Nothing is happening..."
+#~ msgstr "Niets is."
+
+#, fuzzy
+#~ msgid "Dum de dum de dum..."
+#~ msgstr "de de."
+
+#, fuzzy
+#~ msgid "The world has stopped?"
+#~ msgstr "de"
+
+#, fuzzy
+#~ msgid "Everything is all right"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "idle()"
+#~ msgstr "idle"
+
+#, fuzzy
+#~ msgid "It's so cold here..."
+#~ msgstr "s."
+
+#, fuzzy
+#~ msgid "Hey... are ya sure that your network is up?"
+#~ msgstr "netwerk is?"
+
+#, fuzzy
+#~ msgid "Seems like the world has stopped spinning"
+#~ msgstr "de"
+
+#, fuzzy
+#~ msgid "This silence is freaking me out!"
+#~ msgstr "is!"
+
+#, fuzzy
+#~ msgid "idle idle idle idle!"
+#~ msgstr "idle idle idle idle!"
+
+#, fuzzy
+#~ msgid "Hide Window"
+#~ msgstr "&Terminal"
+
+#, fuzzy
+#~ msgid "Show Window"
+#~ msgstr "&Venster"
+
+#, fuzzy
+#~ msgid "The window with id '%s' does not exist"
+#~ msgstr "file s is"
+
+#, fuzzy
+#~ msgid "Window type or 'all' expected as first parameter"
+#~ msgstr "Venster of alles"
+
+#, fuzzy
+#~ msgid "Invalid IRC context id '%Q'"
+#~ msgstr "IRC id s"
+
+#, fuzzy
+#~ msgid ""
+#~ "The specified IRC context is not valid: creating a context free window"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "The specified window is not of type \"userwnd\""
+#~ msgstr "venster is"
+
+#, fuzzy
+#~ msgid "Background not found %Q "
+#~ msgstr "Achtergrondkleur"
+
+#, fuzzy
+#~ msgid "Failed to allocate the specified crypt engine"
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "This executable has been compiled without crypt support"
+#~ msgstr "De KVIrc executabele heeft geen IPV6 support"
+
+#, fuzzy
+#~ msgid "User Registration Wizard - KVIrc"
+#~ msgstr "Gebruiker"
+
+#, fuzzy
+#~ msgid "Step 1: Entry Name"
+#~ msgstr "Bekend"
+
+#, fuzzy
+#~ msgid "Store an avatar for this user"
+#~ msgstr "Faalde naar gebruiker."
+
+#, fuzzy
+#~ msgid "Add this user to the notify list"
+#~ msgstr "Nee gebruikers de"
+
+#, fuzzy
+#~ msgid "Nickname 2:"
+#~ msgstr "Bijnaam"
+
+#, fuzzy
+#~ msgid "Step 4: Notify List"
+#~ msgstr "Notificatie lijst"
+
+#, fuzzy
+#~ msgid "Registration Complete"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "User already registered: found exact name match"
+#~ msgstr "Gebruiker geregistreerd naam"
+
+#, fuzzy
+#~ msgid "Mask %Q is already used to identify user %s"
+#~ msgstr "s is gebruikt naar gebruiker"
+
+#, fuzzy
+#~ msgid "User not found (%Q)"
+#~ msgstr "Gebruiker s"
+
+#, fuzzy
+#~ msgid "No mask specified"
+#~ msgstr "Nee masker"
+
+#, fuzzy
+#~ msgid "User %Q not found"
+#~ msgstr "Gebruiker s"
+
+#, fuzzy
+#~ msgid "Mask %Q already used to identify user %Q"
+#~ msgstr "s gebruikt naar gebruiker"
+
+#, fuzzy
+#~ msgid "Mask %Q not found"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "No property specified"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "Registered users database dump:"
+#~ msgstr "gebruikers:"
+
+#, fuzzy
+#~ msgid " User: %c%Q"
+#~ msgstr "Gebruiker"
+
+#, fuzzy
+#~ msgid " Warning: this user has no registration masks"
+#~ msgstr "Waarschuwing gebruiker nee"
+
+#, fuzzy
+#~ msgid " Mask: %Q!%Q@%Q"
+#~ msgstr "s s"
+
+#, fuzzy
+#~ msgid " Property: %Q=%Q"
+#~ msgstr "Eigenschap s"
+
+#, fuzzy
+#~ msgid " No properties"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "Total: %d matching users (of %d in the database)"
+#~ msgstr "Totaal gebruikers de"
+
+#, fuzzy
+#~ msgid "Property Editor"
+#~ msgstr "Eigenschap"
+
+#, fuzzy
+#~ msgid "Property"
+#~ msgstr "Eigenschap"
+
+#, fuzzy
+#~ msgid "Mask Editor"
+#~ msgstr "Alias"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This the <b>nickname</b> that will match this user, default value "
+#~ "is the registered name.</center>"
+#~ msgstr "<center> is de<b></b> de</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This the <b>username</b> that will match this user. <b>*</b> will "
+#~ "match any username.</center>"
+#~ msgstr "<center> is de<b></b> de</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This the <b>hostname</b> that will match this user. <b>*</b> will "
+#~ "match any hostname.</center>"
+#~ msgstr "<center> is de<b></b> de</center>"
+
+#, fuzzy
+#~ msgid "Registered User Entry"
+#~ msgstr "gebruikers:"
+
+#, fuzzy
+#~ msgid "Name:"
+#~ msgstr "Naam:"
+
+#, fuzzy
+#~ msgid "Masks:"
+#~ msgstr "Maskers:"
+
+#, fuzzy
+#~ msgid "&Add..."
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "&Edit"
+#~ msgstr "Be&werken"
+
+#, fuzzy
+#~ msgid "Notify when user is online"
+#~ msgstr "Notificatie lijst"
+
+#, fuzzy
+#~ msgid "Notify nicknames:"
+#~ msgstr "Notificatie"
+
+#, fuzzy
+#~ msgid "All Properties..."
+#~ msgstr "Eigenschappen"
+
+#, fuzzy
+#~ msgid "Registered Users - KVIrc"
+#~ msgstr "gebruikers:"
+
+#, fuzzy
+#~ msgid "Name"
+#~ msgstr "Naam:"
+
+#, fuzzy
+#~ msgid "Notify"
+#~ msgstr "Notificatie lijst"
+
+#, fuzzy
+#~ msgid "Remove the currently selected entries."
+#~ msgstr "<center> is de<b></b> de</center>"
+
+#, fuzzy
+#~ msgid "&Edit..."
+#~ msgstr "Be&werken"
+
+#, fuzzy
+#~ msgid "Import From..."
+#~ msgstr "Bezig met laden van de iconen..."
+
+#, fuzzy
+#~ msgid "No entries selected."
+#~ msgstr "Beginwaarde"
+
+#, fuzzy
+#~ msgid "Can't open file %s for writing."
+#~ msgstr "de file s voor"
+
+#, fuzzy
+#~ msgid "Can't open file %s for reading."
+#~ msgstr "file s voor"
+
+#, fuzzy
+#~ msgid "Can't import the registered users database: Read error."
+#~ msgstr "gebruikers:"
+
+#, fuzzy
+#~ msgid "ToolBar Properties"
+#~ msgstr "H&ulpmiddelen"
+
+#, fuzzy
+#~ msgid "Id"
+#~ msgstr "Id"
+
+#, fuzzy
+#~ msgid "Invalid ToolBar Label"
+#~ msgstr "ongeldig poort nummer"
+
+#, fuzzy
+#~ msgid "The ToolBar Label can't be empty!"
+#~ msgstr "veld"
+
+#, fuzzy
+#~ msgid "Automatically"
+#~ msgstr "Auto"
+
+#, fuzzy
+#~ msgid "Hide Advanced"
+#~ msgstr "Toevoegen..."
+
+#, fuzzy
+#~ msgid "Customize Toolbars"
+#~ msgstr "Cursor"
+
+#, fuzzy
+#~ msgid "New ToolBar"
+#~ msgstr "H&ulpmiddelen"
+
+#, fuzzy
+#~ msgid "Delete ToolBar"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "Edit ToolBar"
+#~ msgstr "Bladwijzers"
+
+#, fuzzy
+#~ msgid "Export ToolBar"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "ToolBar Export"
+#~ msgstr "Omschakelen ban editor"
+
+#, fuzzy
+#~ msgid "Unable to write to the toolbar file."
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "My ToolBar"
+#~ msgstr "H&ulpmiddelen"
+
+#, fuzzy
+#~ msgid "Terminal emulator"
+#~ msgstr "Terminal"
+
+#, fuzzy
+#~ msgid "Close this window"
+#~ msgstr "Sluiten"
+
+#, fuzzy
+#~ msgid "Can't create the terminal emulation part"
+#~ msgstr "de terminal"
+
+#, fuzzy
+#~ msgid "Can't retrieve the terminal emulation factory"
+#~ msgstr "de terminal"
+
+#, fuzzy
+#~ msgid "Terminal"
+#~ msgstr "&Terminal"
+
+#, fuzzy
+#~ msgid "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+#~ msgstr "<nobr><font color=\"%s\"><b> Terminal</b></font></nobr>"
+
+#~ msgid "This window has no associated irc context"
+#~ msgstr "Dit venster heeft geen irc context"
+
+#, fuzzy
+#~ msgid "No such irc context (%d)"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "Internal unique name for the action"
+#~ msgstr "file naam voor de"
+
+#, fuzzy
+#~ msgid "Label:"
+#~ msgstr "Label"
+
+#, fuzzy
+#~ msgid "Action code"
+#~ msgstr "Op&slaan"
+
+#, fuzzy
+#~ msgid "Code"
+#~ msgstr "Sluiten"
+
+#, fuzzy
+#~ msgid "Category:"
+#~ msgstr "Categorie"
+
+#, fuzzy
+#~ msgid "Small Icon:"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "Big Icon:"
+#~ msgstr "Bezig met laden van de iconen..."
+
+#, fuzzy
+#~ msgid "Needs IRC Context"
+#~ msgstr "&Nieuw"
+
+#, fuzzy
+#~ msgid "Needs IRC Connection"
+#~ msgstr "&Nieuw verbinding"
+
+#, fuzzy
+#~ msgid "Enable at Login"
+#~ msgstr "Activeren"
+
+#, fuzzy
+#~ msgid "Enable in Console Windows"
+#~ msgstr "&Terminal"
+
+#, fuzzy
+#~ msgid "Enable in Channel Windows"
+#~ msgstr "Trapgewijs"
+
+#, fuzzy
+#~ msgid "Enable in Query Windows"
+#~ msgstr "&Terminal"
+
+#, fuzzy
+#~ msgid "Enable in DCC Chat Windows"
+#~ msgstr "Trapgewijs"
+
+#, fuzzy
+#~ msgid "Flags"
+#~ msgstr "Filter"
+
+#, fuzzy
+#~ msgid "Action"
+#~ msgstr "Acties"
+
+#, fuzzy
+#~ msgid "New Action"
+#~ msgstr "Acties"
+
+#, fuzzy
+#~ msgid "Delete Actions"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "Export Actions..."
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "My Action"
+#~ msgstr "Acties"
+
+#, fuzzy
+#~ msgid "Action Editor"
+#~ msgstr "Alias"
+
+#, fuzzy
+#~ msgid "Socket Spy [IRC Context %u]"
+#~ msgstr "Bespionneren IRC Context"
+
+#, fuzzy
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Socket Spy</b></font> <font color=\"%s\">[IRC "
+#~ "Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b> Bespionneren</b></font><font color=\"%s\"> "
+#~ "IRC Context</font></nobr>"
+
+#, fuzzy
+#~ msgid "Sound file '%Q' not found"
+#~ msgstr "Venster s"
+
+#, fuzzy
+#~ msgid "Configure"
+#~ msgstr "&Opties"
+
+#, fuzzy
+#~ msgid "Show Help"
+#~ msgstr "Naa&r voorgrond de"
+
+#, fuzzy
+#~ msgid "More Addons..."
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "Name: %Q"
+#~ msgstr "Naam:"
+
+#, fuzzy
+#~ msgid "Description: %Q"
+#~ msgstr "Beschrijving:"
+
+#, fuzzy
+#~ msgid "Total: %d addons installed"
+#~ msgstr "Totaal s"
+
+#, fuzzy
+#~ msgid "The addon \"%1\" does not exist"
+#~ msgstr "bron s is"
+
+#, fuzzy
+#~ msgid "The addon \"%1\" has no help callback set"
+#~ msgstr "bron s is"
+
+#, fuzzy
+#~ msgid "The specified version \"%Q\" is not a valid version string"
+#~ msgstr "s is"
+
+#, fuzzy
+#~ msgid "The specified KVIrc version \"%Q\" is not a valid version string"
+#~ msgstr "s is"
+
+#, fuzzy
+#~ msgid "Script registration failed"
+#~ msgstr "Aanmaak van een socket mislukt"
+
+#, fuzzy
+#~ msgid "Failed to copy from %Q to %Q"
+#~ msgstr "Faalde naar s"
+
+#, fuzzy
+#~ msgid "Failed to rename %Q to %Q"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid "Failed to make the directory %Q"
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Failed to remove the file %Q"
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Failed to remove the directory %Q"
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "The specified directory does not exist '%Q'"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "Can't open the file \"%Q\" for reading"
+#~ msgstr "de file s voor"
+
+#, fuzzy
+#~ msgid "Read error for file %Q"
+#~ msgstr "Gelezen"
+
+#, fuzzy
+#~ msgid "Can't open the file \"%Q\" for writing"
+#~ msgstr "de file s voor"
+
+#, fuzzy
+#~ msgid "Event"
+#~ msgstr "Gebeurtenis"
+
+#, fuzzy
+#~ msgid "Edit the event handler name."
+#~ msgstr "Bezig met laden van de 'event handlers'..."
+
+#, fuzzy
+#~ msgid "&Enable Handler"
+#~ msgstr "Activeren"
+
+#, fuzzy
+#~ msgid "&Disable Handler"
+#~ msgstr "Activeren"
+
+#, fuzzy
+#~ msgid "Re&move Handler"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "&Export Handler To..."
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "&New Handler"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "default"
+#~ msgstr "standaard"
+
+#, fuzzy
+#~ msgid "none"
+#~ msgstr "geen"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "\tEvent:\n"
+#~ "\t\t%s\n"
+#~ "\n"
+#~ "\tParameters:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "\tGebeurtenis:\n"
+#~ "\t\t%s\n"
+#~ "\n"
+#~ "\tParameters:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Unable to write to the event file."
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Unable to write to the events file."
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Event Editor"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid "Default part message:"
+#~ msgstr "nee"
+
+#, fuzzy
+#~ msgid "Default quit message:"
+#~ msgstr "nee"
+
+#, fuzzy
+#~ msgid "Show at startup"
+#~ msgstr "Tonen"
+
+#~ msgid "Did you know..."
+#~ msgstr "Wist u..."
+
+#~ msgid "<b>Can't find any tip... :(</b>"
+#~ msgstr "<b>Kan geen tops vinden... :(</b>"
+
+#, fuzzy
+#~ msgid "Ops.. internal error"
+#~ msgstr "Interne fout"
+
+#, fuzzy
+#~ msgid "Manage File &Transfers"
+#~ msgstr "Bytes"
+
+#, fuzzy
+#~ msgid "Password"
+#~ msgstr "Wachtwoord"
+
+#, fuzzy
+#~ msgid "&Join"
+#~ msgstr "&Lijn"
+
+#, fuzzy
+#~ msgid "Show this window after connecting"
+#~ msgstr "U bent niet met een server verbonden"
+
+#, fuzzy
+#~ msgid "Recent Channels"
+#~ msgstr "Accepteren"
+
+#, fuzzy
+#~ msgid "Registered Channels"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Raw Event"
+#~ msgstr "Gebeurtenis"
+
+#, fuzzy
+#~ msgid "Edit the raw event handler name."
+#~ msgstr "Bezig met laden van de 'event handlers'..."
+
+#, fuzzy
+#~ msgid "&Add Raw Event..."
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "New Raw Event"
+#~ msgstr "Bezig met laden van de 'event handlers'..."
+
+#, fuzzy
+#~ msgid "Unable to write to the raw event file."
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Unable to write to the raw events file."
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Raw Editor"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid "%cCore action: %Q"
+#~ msgstr "Verloren verbinding"
+
+#, fuzzy
+#~ msgid "%cUser action: %Q"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "Label: %Q"
+#~ msgstr "Label"
+
+#, fuzzy
+#~ msgid "Category: %Q"
+#~ msgstr "Categorie"
+
+#, fuzzy
+#~ msgid "The action \"%1\" does not exist"
+#~ msgstr "bron s is"
+
+#, fuzzy
+#~ msgid "&Execute"
+#~ msgstr "Uitvoeren"
+
+#, fuzzy
+#~ msgid ""
+#~ "Broken slot '%s' in target object '%s' while emitting signal '%s' from "
+#~ "object '%s': disconnecting"
+#~ msgstr "Gebroken s s s s"
+
+#, fuzzy
+#~ msgid ""
+#~ "No slot function '%s' exported by target object '%s' while emitting "
+#~ "signal '%s' from object '%s': disconnecting"
+#~ msgstr "Nee s door s s s"
+
+#, fuzzy
+#~ msgid "%cListing Qt Properties for widget object %s (%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Properties class: %c%s%c"
+#~ msgstr "Eigenschappen:"
+
+#, fuzzy
+#~ msgid "Property: %c%s%c, type: %s"
+#~ msgstr "Eigenschap s"
+
+#, fuzzy
+#~ msgid "Oops... no such property: %s"
+#~ msgstr "Eigenschap s"
+
+#~ msgid "Not enough parameters"
+#~ msgstr "Niet voldoende parameters"
+
+#, fuzzy
+#~ msgid "No such QT property (%s)"
+#~ msgstr "Nee s"
+
+#, fuzzy
+#~ msgid "missing parameter"
+#~ msgstr "Ontbrekende popup naam"
+
+#, fuzzy
+#~ msgid "Invalid parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Pixmap not found"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid "Unsupported QT property (%s)"
+#~ msgstr "Gebruik"
+
+#, fuzzy
+#~ msgid "Missing parameters"
+#~ msgstr "Ontbrekende popup naam"
+
+#, fuzzy
+#~ msgid "This window has no associated IRC context"
+#~ msgstr "Dit venster heeft geen irc context"
+
+#~ msgid "Unknown"
+#~ msgstr "Onbekend"
+
+#~ msgid "[Parser warning in '%Q']: %Q"
+#~ msgstr "[parser waarschuwing in '%Q'] : %Q"
+
+#, fuzzy
+#~ msgid "Can't find the multimedia file %s"
+#~ msgstr "de commando venster door id s"
+
+#, fuzzy
+#~ msgid "Missing target, no action taken"
+#~ msgstr "nee"
+
+#, fuzzy
+#~ msgid "Can't add a file offer for file %s (huh ? file not readable ?)"
+#~ msgstr "toevoegen file voor file s file"
+
+#, fuzzy
+#~ msgid "Added %d secs file offer for file %s (%s) and receiver %s"
+#~ msgstr "Toegevoegd seconden file voor file s s en"
+
+#, fuzzy
+#~ msgid "%s plays '%s' to %s"
+#~ msgstr "%s [%s aan %s]"
+
+#, fuzzy
+#~ msgid "Error in command: %c%c%Q"
+#~ msgstr "Fout commando"
+
+#, fuzzy
+#~ msgid "Error token: %c%Q"
+#~ msgstr "Fout"
+
+#, fuzzy
+#~ msgid "Object scope: name (%s), class (%s)"
+#~ msgstr "naam s s"
+
+#, fuzzy
+#~ msgid "This pointer: name (%s), class (%s)"
+#~ msgstr "naam s s"
+
+#, fuzzy
+#~ msgid "You are not connected to a server"
+#~ msgstr "U bent niet met een server verbonden"
+
+#, fuzzy
+#~ msgid "%s (module %s)"
+#~ msgstr "s s"
+
+#, fuzzy
+#~ msgid "Module '%s', Command '%s'"
+#~ msgstr "Module s Commando s"
+
+#, fuzzy
+#~ msgid "Can't rebind the command: window with id %s not found"
+#~ msgstr "de commando venster door id s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Can't rebind the command: missing window identifier after the -r switch"
+#~ msgstr "de commando venster de"
+
+#, fuzzy
+#~ msgid "Error triggered from raw event handler %c%s::%Q"
+#~ msgstr "Fout s"
+
+#, fuzzy
+#~ msgid "Error triggered from event handler %c%Q::%Q"
+#~ msgstr "Fout s"
+
+#, fuzzy
+#~ msgid "Raw event handler %s::%Q is broken: disabling"
+#~ msgstr "Gebeurtenis s s is"
+
+#, fuzzy
+#~ msgid "Event handler %Q::%Q is broken: disabling"
+#~ msgstr "Gebeurtenis s s is"
+
+#, fuzzy
+#~ msgid "Variable evaluated to \"%s\""
+#~ msgstr "Variabele naar s"
+
+#, fuzzy
+#~ msgid "Module '%s', Function '%s'"
+#~ msgstr "Module s Functie s"
+
+#, fuzzy
+#~ msgid "Identifier evaluated to \"%s\""
+#~ msgstr "Indentificatie naar s"
+
+#, fuzzy
+#~ msgid "Left operand of operator %s (%s{%s}) is undefined : assuming 0"
+#~ msgstr "Links s s s is"
+
+#, fuzzy
+#~ msgid "Left operand of operator %s (%s[%s]) is undefined : assuming 0"
+#~ msgstr "Links s s s is"
+
+#, fuzzy
+#~ msgid "Left operand of operator %s (%s) is undefined : assuming 0"
+#~ msgstr "Links s s is"
+
+#, fuzzy
+#~ msgid "Variable %s{%s} evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Variabele s s naar s s"
+
+#, fuzzy
+#~ msgid "Variable %s[%s] evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Variabele s s naar s s"
+
+#, fuzzy
+#~ msgid "Variable %s evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Variabele s naar s s"
+
+#, fuzzy
+#~ msgid "Right operand of operator %s evaluated to '%s' (not a number)"
+#~ msgstr "Rechts s naar s"
+
+#, fuzzy
+#~ msgid "Broken icon parameter: ignoring"
+#~ msgstr "Gebroken expressie voor item s"
+
+#, fuzzy
+#~ msgid "Can't find the icon \"%Q\": ignoring"
+#~ msgstr "s de"
+
+#, fuzzy
+#~ msgid "Recursive definition detected for popup '%Q': ignoring"
+#~ msgstr "de localhost"
+
+#, fuzzy
+#~ msgid "Can't find the external popup '%Q'; ignoring"
+#~ msgstr "de localhost"
+
+#, fuzzy
+#~ msgid "Broken prologue in popup menu '%Q': ignoring"
+#~ msgstr "Gebroken expressie voor item s"
+
+#, fuzzy
+#~ msgid "Broken epilogue in popup menu '%Q': ignoring"
+#~ msgstr "Gebroken expressie voor item s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Another connection is already in progress in the selected IRC context"
+#~ msgstr "Een andere verbinding bezig"
+
+#, fuzzy
+#~ msgid "Invalid index specified: ignored"
+#~ msgstr "pictogram s"
+
+#, fuzzy
+#~ msgid "The popup '%Q' is not defined"
+#~ msgstr "s is"
+
+#, fuzzy
+#~ msgid "No target channel specified and the current window is not a channel"
+#~ msgstr "venster is"
+
+#, fuzzy
+#~ msgid "The catalogue %Q was not loaded"
+#~ msgstr "file s is"
+
+#, fuzzy
+#~ msgid "Invalid IRC url (%Q)"
+#~ msgstr "IRC url s"
+
+#, fuzzy
+#~ msgid "The commandline for this url type seems to be broken (%Q)"
+#~ msgstr "voor url naar s"
+
+#, fuzzy
+#~ msgid "No commandline specified for this type of url (%Q)"
+#~ msgstr "Nee voor url s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Option setting error: Unknown option or invalid value for option type"
+#~ msgstr "Optie onbekend of voor"
+
+#, fuzzy
+#~ msgid "Choose a file to parse"
+#~ msgstr "file naar"
+
+#, fuzzy
+#~ msgid "Failed to load the file '%Q' for parsing"
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "You don't appear to be on channel %s"
+#~ msgstr "U"
+
+#, fuzzy
+#~ msgid "Popup %Q is not defined"
+#~ msgstr "s is"
+
+#, fuzzy
+#~ msgid "Invalid syntax for screen coordinates, using cursor position"
+#~ msgstr "Ongeldige encryptie"
+
+#, fuzzy
+#~ msgid "Empty target specified"
+#~ msgstr "Leeg"
+
+#, fuzzy
+#~ msgid "[RAW]: %Q"
+#~ msgstr "FOUT"
+
+#, fuzzy
+#~ msgid "Window with id %Q not found: no rebinding performed"
+#~ msgstr "Venster door id s leeg"
+
+#, fuzzy
+#~ msgid "Failed to execute command '%Q'"
+#~ msgstr "Faalde naar commando s"
+
+#, fuzzy
+#~ msgid "Call to undefined function '%Q'"
+#~ msgstr "s de"
+
+#, fuzzy
+#~ msgid "Unknown callback command \"%Q\""
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Can't kill the timer '%Q' since it is not running"
+#~ msgstr "de localhost"
+
+#, fuzzy
+#~ msgid "DNS Lookup result for query \"%s\""
+#~ msgstr "DNS voor s"
+
+#, fuzzy
+#~ msgid "Error: %Q"
+#~ msgstr "Fout"
+
+#, fuzzy
+#~ msgid "Hostname %d: %s"
+#~ msgstr "Hostnaam"
+
+#, fuzzy
+#~ msgid "IP address %d: %s"
+#~ msgstr "IP"
+
+#, fuzzy
+#~ msgid "Operand of unary operator didn't evaluate to a number"
+#~ msgstr "Rechts s naar s"
+
+#, fuzzy
+#~ msgid "Left operand didn't evaluate to a number"
+#~ msgstr "Linkse operator is geen nummer"
+
+#, fuzzy
+#~ msgid "Right operand didn't evaluate to a number"
+#~ msgstr "Rechtse operand is geen nummer"
+
+#~ msgid "Division by zero"
+#~ msgstr "Deling door nul"
+
+#, fuzzy
+#~ msgid "This window has no associated IRC context and is not a DCC chat"
+#~ msgstr "Dit venster heeft geen irc context"
+
+#, fuzzy
+#~ msgid "Class \"%Q\" is not defined"
+#~ msgstr "s is"
+
+#, fuzzy
+#~ msgid "The specified parent object does not exist"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "There is no option named '%Q'"
+#~ msgstr "Nee s"
+
+#, fuzzy
+#~ msgid "No such IRC context (%u)"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "This window is not associated to an IRC context"
+#~ msgstr "Dit venster heeft geen irc context"
+
+#, fuzzy
+#~ msgid "Event handler %Q is broken: disabling"
+#~ msgstr "Gebeurtenis s s is"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %"
+#~ "s\" for the command syntax"
+#~ msgstr "Onverwacht karakter"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found end of input where character '%c' was expected: see \"/help %s\" "
+#~ "for the command syntax"
+#~ msgstr "Onverwacht karakter"
+
+#, fuzzy
+#~ msgid "Empty script"
+#~ msgstr "Leeg"
+
+#, fuzzy
+#~ msgid "Unterminated instruction block"
+#~ msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of script in instruction block (missing closing brace)"
+#~ msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#, fuzzy
+#~ msgid "Unexpected character '%q' (unicode %x) after a switch dash"
+#~ msgstr "Onverwacht karakter"
+
+#, fuzzy
+#~ msgid "Unexpected end of script after a switch dash"
+#~ msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#, fuzzy
+#~ msgid "Unexpected end of script in parameter list"
+#~ msgstr "Onverwahct einde van commando in de functie parameters"
+
+#, fuzzy
+#~ msgid "Unexpected end of line in parameter list"
+#~ msgstr "Onverwahct einde van commando in de functie parameters"
+
+#, fuzzy
+#~ msgid "Unexpected end of script in hash key (missing '}' character ?)"
+#~ msgstr "Onverwahct einde van commando in de functie parameters"
+
+#, fuzzy
+#~ msgid "Unexpected end of script in string constant (missing \" character ?)"
+#~ msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#, fuzzy
+#~ msgid "Unknown binary operator '=%q': did you mean '==' ?"
+#~ msgstr "Onbekende operator"
+
+#, fuzzy
+#~ msgid "Unknown binary operator '%q'"
+#~ msgstr "Onbekende operator"
+
+#, fuzzy
+#~ msgid "Unexpected end of script in expression"
+#~ msgstr "Onverwacht einde van commando in de string"
+
+#, fuzzy
+#~ msgid "Error triggered from process callback handler: killing process"
+#~ msgstr "Fout s"
+
+#, fuzzy
+#~ msgid "You're not connected to an IRC server"
+#~ msgstr "U bent niet met een server verbonden"
+
+#, fuzzy
+#~ msgid "Missing parameter"
+#~ msgstr "Ontbrekende popup naam"
+
+#, fuzzy
+#~ msgid "Failed to send an unknown command as /raw"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Call to undefined command '%Q'"
+#~ msgstr "Faalde naar commando s"
+
+#, fuzzy
+#~ msgid "Missing class name"
+#~ msgstr "Ontbrekende variabele naam"
+
+#, fuzzy
+#~ msgid "Window with ID '%s' not found, returning empty string"
+#~ msgstr "Venster door id s leeg"
+
+#, fuzzy
+#~ msgid "The specified window is not a channel"
+#~ msgstr "venster is"
+
+#, fuzzy
+#~ msgid "Window with caption %Q not found"
+#~ msgstr "Venster door s"
+
+#, fuzzy
+#~ msgid "Unexpected end of script after '$' function call prefix"
+#~ msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#, fuzzy
+#~ msgid "Array index didn't evaluate to an integer"
+#~ msgstr "Linkse operator is geen nummer"
+
+#, fuzzy
+#~ msgid "This is not a channel"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "Unexpected end of script in multiline comment"
+#~ msgstr "Onverwahct einde van commando in de functie parameters"
+
+#, fuzzy
+#~ msgid "The target variable didn't evaluate to an integer or real value"
+#~ msgstr "Linkse operator is geen nummer"
+
+#, fuzzy
+#~ msgid "The right side of operator '&=' didn't evaluate to an integer"
+#~ msgstr "Rechts s naar s"
+
+#, fuzzy
+#~ msgid "The left side of operator '&=' didn't evaluate to an integer"
+#~ msgstr "Rechts s naar s"
+
+#, fuzzy
+#~ msgid "The right side of operator '/=' didn't evaluate to a number"
+#~ msgstr "Rechts s naar s"
+
+#, fuzzy
+#~ msgid "The left side of operator '/=' didn't evaluate to a number"
+#~ msgstr "Rechts s naar s"
+
+#, fuzzy
+#~ msgid "The right side of operator '%=' didn't evaluate to a number"
+#~ msgstr "Rechts s naar s"
+
+#, fuzzy
+#~ msgid "The left side of operator '%=' didn't evaluate to a number"
+#~ msgstr "Rechts s naar s"
+
+#, fuzzy
+#~ msgid "The right side of operator '*=' didn't evaluate to a number"
+#~ msgstr "Rechts s naar s"
+
+#, fuzzy
+#~ msgid "The left side of operator '*=' didn't evaluate to a number"
+#~ msgstr "Rechts s naar s"
+
+#, fuzzy
+#~ msgid "The right side of operator '|=' didn't evaluate to an integer"
+#~ msgstr "Rechts s naar s"
+
+#, fuzzy
+#~ msgid "The left side of operator '|=' didn't evaluate to an integer"
+#~ msgstr "Rechts s naar s"
+
+#, fuzzy
+#~ msgid "The right side of operator '<<=' didn't evaluate to an integer"
+#~ msgstr "Rechts s naar s"
+
+#, fuzzy
+#~ msgid "The left side of operator '<<=' didn't evaluate to an integer"
+#~ msgstr "Rechts s naar s"
+
+#, fuzzy
+#~ msgid "The right side of operator '>>=' didn't evaluate to an integer"
+#~ msgstr "Rechts s naar s"
+
+#, fuzzy
+#~ msgid "The left side of operator '>>=' didn't evaluate to an integer"
+#~ msgstr "Rechts s naar s"
+
+#, fuzzy
+#~ msgid "The right side of operator '-=' didn't evaluate to a number"
+#~ msgstr "Rechts s naar s"
+
+#, fuzzy
+#~ msgid "The left side of operator '-=' didn't evaluate to a number"
+#~ msgstr "Rechts s naar s"
+
+#, fuzzy
+#~ msgid "The right side of operator '+=' didn't evaluate to a number"
+#~ msgstr "Rechts s naar s"
+
+#, fuzzy
+#~ msgid "The left side of operator '+=' didn't evaluate to a number"
+#~ msgstr "Rechts s naar s"
+
+#, fuzzy
+#~ msgid "The right side of operator '^=' didn't evaluate to an integer"
+#~ msgstr "Rechts s naar s"
+
+#, fuzzy
+#~ msgid "The left side of operator '^=' didn't evaluate to an integer"
+#~ msgstr "Rechts s naar s"
+
+#, fuzzy
+#~ msgid "Window with ID '%s' not found"
+#~ msgstr "Venster s"
+
+#, fuzzy
+#~ msgid "Missing alias name"
+#~ msgstr "Ontbrekende variabele naam"
+
+#, fuzzy
+#~ msgid "The alias %Q is not existing"
+#~ msgstr "bron s is"
+
+#, fuzzy
+#~ msgid "The specified window has no button containers"
+#~ msgstr "venster is"
+
+#, fuzzy
+#~ msgid "Window button '%Q' not found"
+#~ msgstr "Venster s"
+
+#, fuzzy
+#~ msgid "Can't find the icon '%Q'"
+#~ msgstr "s de"
+
+#, fuzzy
+#~ msgid "No such event (%Q)"
+#~ msgstr "Nee s"
+
+#, fuzzy
+#~ msgid "No handler '%Q' for raw numeric event '%d'"
+#~ msgstr "Nee s voor s"
+
+#, fuzzy
+#~ msgid "No handler '%Q' for event '%Q'"
+#~ msgstr "Nee s voor s"
+
+#, fuzzy
+#~ msgid "The specified ping time is invalid: assuming zero (no ping)"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "Failed to start the process"
+#~ msgstr "Faalde naar de status"
+
+#, fuzzy
+#~ msgid "The specified object does not exist"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "The timeout delay didn't evaluate to an integer"
+#~ msgstr "Linkse operator is geen nummer"
+
+#, fuzzy
+#~ msgid "Unable to add the timer: insufficient system resources"
+#~ msgstr "naar toevoegen s"
+
+#, fuzzy
+#~ msgid ""
+#~ "The left side of the scope operator didn't evaluate as an object reference"
+#~ msgstr "Rechts s naar s"
+
+#, fuzzy
+#~ msgid ""
+#~ "The left side of the scope operator evaluated to a null object reference"
+#~ msgstr "Rechts s naar s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Broken slot '%Q' in target object '%Q::%Q' while emitting signal '%Q' "
+#~ "from object '%Q::%Q': disconnecting"
+#~ msgstr "Gebroken s s s s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Slot target object destroyed while emitting signal '%Q' from object '%Q::%"
+#~ "Q'"
+#~ msgstr "Gebroken s s s s"
+
+#, fuzzy
+#~ msgid "Listing Qt properties for object named \"%Q\" of KVS class %Q"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Properties for Qt class %s"
+#~ msgstr "Eigenschappen:"
+
+#, fuzzy
+#~ msgid "Property: %c%Q%c, type %s"
+#~ msgstr "Eigenschap s"
+
+#, fuzzy
+#~ msgid "Can't find the requested image"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Found character '%q' (unicode %x) where a slash '/' was expected"
+#~ msgstr "Onverwacht karakter"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of command in binding operation, at least two slashes are "
+#~ "missing"
+#~ msgstr "Onverwahct einde van commando in de functie parameters"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of command in binding operation, at least one slash is "
+#~ "missing"
+#~ msgstr "Onverwahct einde van commando in de functie parameters"
+
+#, fuzzy
+#~ msgid "Unknown binding operation '%Q'"
+#~ msgstr "Onbekende operator"
+
+#~ msgid "Unknown operator"
+#~ msgstr "Onbekende operator"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of script after a variable reference: expected operator"
+#~ msgstr "Onverwahct einde van commando in de functie parameters"
+
+#, fuzzy
+#~ msgid "Unexpected character '%q' (unicode %x)"
+#~ msgstr "Onverwacht karakter"
+
+#, fuzzy
+#~ msgid "Invalid pitch value: using default"
+#~ msgstr "zichtbaar naam"
+
+#, fuzzy
+#~ msgid "Invalid duration value: using default"
+#~ msgstr "pictogram s"
+
+#, fuzzy
+#~ msgid "Can't delete a null object reference"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Can't delete an inexisting object"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Inexisting popup \"%Q\""
+#~ msgstr "Ontbrekende popup naam"
+
+#, fuzzy
+#~ msgid "The menu item with id \"%Q\" does not exist in popup \"%Q\""
+#~ msgstr "file s is"
+
+#, fuzzy
+#~ msgid "Invalid color-set specification, using default"
+#~ msgstr "pictogram s"
+
+#, fuzzy
+#~ msgid "Window '%s' not found, using current one"
+#~ msgstr "Venster s"
+
+#, fuzzy
+#~ msgid "Invalid data type for parameter \"%s\""
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "found string value \"%Q\" where type '%s' was expected"
+#~ msgstr "Onverwacht karakter"
+
+#, fuzzy
+#~ msgid "found type %Q where type '%s' was expected"
+#~ msgstr "Onverwacht karakter"
+
+#, fuzzy
+#~ msgid "Missing non-optional parameter \"%s\""
+#~ msgstr "Ontbrekende popup naam"
+
+#, fuzzy
+#~ msgid "[KVS] in script context \"%Q\""
+#~ msgstr "IRC id s"
+
+#, fuzzy
+#~ msgid "[KVS] in script context \"%Q\", %Q"
+#~ msgstr "IRC id s"
+
+#, fuzzy
+#~ msgid "[KVS] Window:"
+#~ msgstr "&Venster"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of command buffer while looking for the \"perl.end\" "
+#~ "statement"
+#~ msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#, fuzzy
+#~ msgid "Found character %q (unicode %x) where a variable was expected"
+#~ msgstr "Onverwacht karakter"
+
+#, fuzzy
+#~ msgid "Unexpected end of buffer in class definition"
+#~ msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#, fuzzy
+#~ msgid "Found character %q (unicode %x) where a function name was expected"
+#~ msgstr "Onverwacht karakter"
+
+#, fuzzy
+#~ msgid "Unexpected end of buffer in function parameter list reminder"
+#~ msgstr "Onverwahct einde van commando in de functie parameters"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of script while looking for the instruction block of the "
+#~ "while command"
+#~ msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of command after the 'do' command block: expected 'while' "
+#~ "keyword"
+#~ msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#, fuzzy
+#~ msgid "Found character %q (unicode %x) where a 'while' keyword was expected"
+#~ msgstr "Onverwacht karakter"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of script while looking for the instruction block of the "
+#~ "if command"
+#~ msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of buffer while looking for the closing ')' in the 'for' "
+#~ "command"
+#~ msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found character '%q' (unicode %x) where '%' or '$' was expected: see /"
+#~ "help foreach for the command syntax"
+#~ msgstr "Onverwacht karakter"
+
+#, fuzzy
+#~ msgid "Unexpected end of buffer in switch condition block"
+#~ msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found character %q (unicode %x) where a 'case','match','regexp','default' "
+#~ "or 'break' label was expected"
+#~ msgstr "Onverwacht karakter"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found token '%Q' where a 'case','match','regexp','default' or 'break' "
+#~ "label was expected"
+#~ msgstr "Case , match , regexp , default or break keywoord verwacht"
+
+#, fuzzy
+#~ msgid "Unexpected end of buffer in defpopup block"
+#~ msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found character %q (unicode %x) where a "
+#~ "'prologue','separator','label','popup','item','extpopup' or 'epilogue' "
+#~ "label was expected"
+#~ msgstr "Onverwacht karakter"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found token '%Q' where a "
+#~ "'prologue','separator','label','popup','item','extpopup' or 'epilogue' "
+#~ "label was expected"
+#~ msgstr "Case , match , regexp , default or break keywoord verwacht"
+
+#, fuzzy
+#~ msgid "Received ping from \r!s\r%Q\r (PING %Q), replied pong"
+#~ msgstr "s s"
+
+#, fuzzy
+#~ msgid "Received pong from \r!s\r%s\r (PONG %s)"
+#~ msgstr "s s"
+
+#, fuzzy
+#~ msgid "Server ERROR: %Q"
+#~ msgstr "FOUT"
+
+#, fuzzy
+#~ msgid "Missing channel parameter in join message"
+#~ msgstr "private"
+
+#, fuzzy
+#~ msgid "Received a join message for an unknown channel, possible desync"
+#~ msgstr "voor onbekend?"
+
+#, fuzzy
+#~ msgid ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r [implicit +%c umode "
+#~ "change]"
+#~ msgstr "s s s s"
+
+#, fuzzy
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r"
+#~ msgstr "s s s"
+
+#, fuzzy
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just joined \r!c\r%Q\r"
+#~ msgstr "s s s"
+
+#, fuzzy
+#~ msgid "Received a part message for an unknown channel, possible desync"
+#~ msgstr "voor onbekend?"
+
+#, fuzzy
+#~ msgid "You have left channel \r!c\r%Q\r"
+#~ msgstr "U s"
+
+#, fuzzy
+#~ msgid "You have left channel \r!c\r%Q\r: %Q"
+#~ msgstr "U s"
+
+#, fuzzy
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r: %Q"
+#~ msgstr "s s s s"
+
+#, fuzzy
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r"
+#~ msgstr "s s s s"
+
+#, fuzzy
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r: %Q"
+#~ msgstr "s s s s"
+
+#, fuzzy
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r"
+#~ msgstr "s s s s"
+
+#, fuzzy
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"
+#~ msgstr "s s s s"
+
+#, fuzzy
+#~ msgid "Received a kick message for an unknown channel, possible desync"
+#~ msgstr "voor onbekend?"
+
+#, fuzzy
+#~ msgid ""
+#~ "You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "U s door s s s"
+
+#, fuzzy
+#~ msgid "Attempting to rejoin \r!c\r%Q\r..."
+#~ msgstr "naar"
+
+#, fuzzy
+#~ msgid ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has been kicked from \r!c\r%Q\r by \r!n\r%Q\r "
+#~ "[%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "s s door s s s"
+
+#, fuzzy
+#~ msgid ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just been kicked from \r!c\r%Q\r by \r!n\r%"
+#~ "Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "s s door s s s"
+
+#, fuzzy
+#~ msgid ""
+#~ "The following message appears to be encrypted, but the crypto engine "
+#~ "failed to decode it: %s"
+#~ msgstr "de naar it"
+
+#, fuzzy
+#~ msgid "Ignoring PRIVMSG from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "U s door s s s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Spam privmsg from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%s"
+#~ "\")"
+#~ msgstr "s s s s s"
+
+#, fuzzy
+#~ msgid ""
+#~ "The scheduled NickServ identification command appears to be broken, "
+#~ "please change the setting"
+#~ msgstr "commando naar it de"
+
+#, fuzzy
+#~ msgid ""
+#~ "Spam notice from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%Q\")"
+#~ msgstr "s s s s s"
+
+#, fuzzy
+#~ msgid "Received a topic message for an unknown channel, possible desync"
+#~ msgstr "voor onbekend?"
+
+#, fuzzy
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has changed topic to \"%Q%c\""
+#~ msgstr "s s s naar s"
+
+#, fuzzy
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"
+#~ msgstr "s s s is"
+
+#~ msgid "You have changed your nickname to %Q"
+#~ msgstr "U heeft uw nick veranderd naar %Q"
+
+#, fuzzy
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] invites you to channel \r!c\r%Q\r (%Q)"
+#~ msgstr "s s s is aan"
+
+#, fuzzy
+#~ msgid "Received an invite message directed to another nick, possible desync"
+#~ msgstr "voor onbekend?"
+
+#, fuzzy
+#~ msgid "WALLOPS from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "U s door s s s"
+
+#, fuzzy
+#~ msgid "You have set user mode %s"
+#~ msgstr "U gebruiker"
+
+#, fuzzy
+#~ msgid "Received a mode change for an unknown channel, possible desync"
+#~ msgstr "voor onbekend?"
+
+#, fuzzy
+#~ msgid "%Q [%Q@%Q] has set channel key to \"\r!m-k\r%Q\r\""
+#~ msgstr "s s s naar s"
+
+#, fuzzy
+#~ msgid "%Q [%Q@%Q] has unset the channel key"
+#~ msgstr "s s s de"
+
+#, fuzzy
+#~ msgid "%Q [%Q@%Q] has set channel \r!m-l\rlimit to %Q\r"
+#~ msgstr "s s s naar s"
+
+#, fuzzy
+#~ msgid "%Q [%Q@%Q] has unset the channel limit"
+#~ msgstr "s s s de"
+
+#, fuzzy
+#~ msgid "%Q [%Q@%Q] has set mode %c%c \r!n\r%Q\r"
+#~ msgstr "s s s s"
+
+#, fuzzy
+#~ msgid "%Q [%Q@%Q] has set mode %c%c \r!m%c%c\r%Q\r"
+#~ msgstr "s s s s"
+
+#, fuzzy
+#~ msgid "%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"
+#~ msgstr "s s s"
+
+#, fuzzy
+#~ msgid "%Q [%Q@%Q] has set mode %s %Q"
+#~ msgstr "s s s s"
+
+#, fuzzy
+#~ msgid "%Q [%Q@%Q] has set channel mode %s"
+#~ msgstr "s s s"
+
+#, fuzzy
+#~ msgid ""
+#~ "[Server parser]: Encountered problems while parsing the following message:"
+#~ msgstr "Server de:"
+
+#, fuzzy
+#~ msgid "[Server parser]: [%s][%s] %Q"
+#~ msgstr "Server s s"
+
+#, fuzzy
+#~ msgid "[Server parser]: %s"
+#~ msgstr "Server"
+
+#, fuzzy
+#~ msgid "The following CTCP reply has unrecognized target %Q"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "%Q %S reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "s s s s s"
+
+#, fuzzy
+#~ msgid "The following CTCP request has unrecognized target %Q"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid ""
+#~ "%Q %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignored (flood limit "
+#~ "exceeded)"
+#~ msgstr "s s s s s s genegeerd"
+
+#, fuzzy
+#~ msgid "ignored (unrecognized)"
+#~ msgstr "genegeerd"
+
+#, fuzzy
+#~ msgid "ignored"
+#~ msgstr "genegeerd"
+
+#, fuzzy
+#~ msgid "%Q %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+#~ msgstr "s s s s s s"
+
+#, fuzzy
+#~ msgid "The following CTCP PING reply has unrecognized target \"%Q\""
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid ""
+#~ "The following CTCP PING reply has a broken time identifier \"%S\", don't "
+#~ "trust the displayed time"
+#~ msgstr "tijd s de"
+
+#, fuzzy
+#~ msgid "%Q PING reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sec %u msec"
+#~ msgstr "s s s s seconden"
+
+#, fuzzy
+#~ msgid "http://www.kvirc.net/"
+#~ msgstr ""
+#~ "\n"
+#~ " Thuishttp://www.kvirc.net"
+
+#, fuzzy
+#~ msgid "The following CTCP ACTION has unrecognized target %Q"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "CTCP ACTION from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "s s s naar onbekend s"
+
+#, fuzzy
+#~ msgid "Unable to add file offer for file %Q (File not readable?)"
+#~ msgstr "toevoegen file voor file s file"
+
+#, fuzzy
+#~ msgid "Added %d sec file offer for file %Q (%Q) to recipient %Q"
+#~ msgstr "Toegevoegd seconden file voor file s s en"
+
+#, fuzzy
+#~ msgid "private"
+#~ msgstr "private"
+
+#, fuzzy
+#~ msgid "channel notification:"
+#~ msgstr "notificatie:"
+
+#, fuzzy
+#~ msgid "notification"
+#~ msgstr "notificatie"
+
+#, fuzzy
+#~ msgid "%Q unsets avatar"
+#~ msgstr "s s s s s"
+
+#, fuzzy
+#~ msgid "%Q changes avatar to %s"
+#~ msgstr "s s s naar s s s"
+
+#, fuzzy
+#~ msgid ""
+#~ ": No valid local copy of avatar available, requesting one (HTTP GET %s)"
+#~ msgstr "Nee lokaal beschikbaar s"
+
+#, fuzzy
+#~ msgid ""
+#~ ": No valid local copy of avatar available; failed to start an HTTP "
+#~ "transfer, ignoring"
+#~ msgstr "Nee lokaal beschikbaar"
+
+#, fuzzy
+#~ msgid ""
+#~ ": No valid local copy of avatar available, requesting one (DCC GET %s)"
+#~ msgstr "Nee lokaal beschikbaar s"
+
+#, fuzzy
+#~ msgid ""
+#~ ": No valid local copy of avatar available; flood limit exceeded, ignoring"
+#~ msgstr "Nee lokaal beschikbaar"
+
+#, fuzzy
+#~ msgid ": No valid local copy of avatar available, ignoring"
+#~ msgstr "Nee lokaal beschikbaar"
+
+#, fuzzy
+#~ msgid ": No such nickname in the user database, ignoring the change"
+#~ msgstr "Nee de gebruiker de"
+
+#, fuzzy
+#~ msgid "Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%S %S)"
+#~ msgstr "s s s s s"
+
+#, fuzzy
+#~ msgid "Processing DCC %Q request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%S %S)"
+#~ msgstr "s s s s s"
+
+#, fuzzy
+#~ msgid "Unable to process the above request: Cannot load DCC module (%s)"
+#~ msgstr "naar de de"
+
+#, fuzzy
+#~ msgid "Unable to process the above request: DCC module may be broken"
+#~ msgstr "naar de de module naar"
+
+#, fuzzy
+#~ msgid "Channel operators"
+#~ msgstr "Scheider"
+
+#, fuzzy
+#~ msgid "Voiced users"
+#~ msgstr "Zoeken"
+
+#, fuzzy
+#~ msgid "Half-operators"
+#~ msgstr "Scheider"
+
+#, fuzzy
+#~ msgid "Ban exception masks"
+#~ msgstr "Actief"
+
+#, fuzzy
+#~ msgid "Secret"
+#~ msgstr "Server"
+
+#, fuzzy
+#~ msgid "Private"
+#~ msgstr "private"
+
+#, fuzzy
+#~ msgid "No external messages"
+#~ msgstr "nee"
+
+#, fuzzy
+#~ msgid "Quiet or channel owner"
+#~ msgstr "onbekend"
+
+#, fuzzy
+#~ msgid "Moderated"
+#~ msgstr "beheerd"
+
+#, fuzzy
+#~ msgid "Registered"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Redirect on channel full"
+#~ msgstr "Accepteren"
+
+#, fuzzy
+#~ msgid "Unknown channel mode"
+#~ msgstr "onbekend"
+
+#, fuzzy
+#~ msgid ""
+#~ "One or more standard mode flags are missing in the server available "
+#~ "modes.\n"
+#~ "This is caused either by a non RFC1459-compliant IRC daemon or a broken "
+#~ "server reply.\n"
+#~ "Server umodes seem to be '%s' and channel modes seem to be '%s'.\n"
+#~ "Ignoring this reply and assuming that the basic set of modes is "
+#~ "available.\n"
+#~ "If you have strange problems, try changing the server."
+#~ msgstr ""
+#~ "Een of de beschikbaar\n"
+#~ " is door of\n"
+#~ " Server naar s en naar s\n"
+#~ " en de is beschikbaar\n"
+#~ " de."
+
+#, fuzzy
+#~ msgid "Available user modes:"
+#~ msgstr "Beschikbaar gebruiker:"
+
+#, fuzzy
+#~ msgid "o: IRC operator (OPER)"
+#~ msgstr "lokaal"
+
+#, fuzzy
+#~ msgid "O: Local IRC operator (LOCOP)"
+#~ msgstr "lokaal"
+
+#, fuzzy
+#~ msgid "i: Invisible"
+#~ msgstr "zichtbaar"
+
+#, fuzzy
+#~ msgid "w: Recipient for WALLOPS messages"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid ""
+#~ "r: User with restricted connection (or recipient for messages about "
+#~ "rejected bots)"
+#~ msgstr "gebruiker door verbinding of voor berichten"
+
+#, fuzzy
+#~ msgid "s: Recipient for server notices"
+#~ msgstr "s voor"
+
+#, fuzzy
+#~ msgid "z: Recipient for oper wallop messages"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "c: Recipient for cconn messages"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "k: Recipient for server kill messages"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "f: Recipient for full server notices"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "n: Recipient for nick changes"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid ": Unknown user mode"
+#~ msgstr "onbekend gebruiker"
+
+#, fuzzy
+#~ msgid "Available channel modes:"
+#~ msgstr "Beschikbaar:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Server %Q version %S supporting user modes '%S' and channel modes '%S'"
+#~ msgstr "Server s versie s s en s"
+
+#, fuzzy
+#~ msgid "This server supports the WATCH notify list method, it will be used"
+#~ msgstr "naar de naar it."
+
+#, fuzzy
+#~ msgid "The current network is %Q"
+#~ msgstr "nee s"
+
+#, fuzzy
+#~ msgid "This server supports the CODEPAGE command, it will be used"
+#~ msgstr "naar de naar it."
+
+#, fuzzy
+#~ msgid "This server supports: %s"
+#~ msgstr "Server"
+
+#, fuzzy
+#~ msgid "End of NAMES for \r!c\r%Q\r"
+#~ msgstr "End voor"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c: %Q"
+#~ msgstr "s s"
+
+#, fuzzy
+#~ msgid "Names for \r!c\r%Q\r: %Q"
+#~ msgstr "voor s"
+
+#, fuzzy
+#~ msgid "(unknown)"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Channel topic is: %Q"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "Topic for \r!c\r%Q\r is: %Q"
+#~ msgstr "voor s is"
+
+#, fuzzy
+#~ msgid "No channel topic is set"
+#~ msgstr "Nee is"
+
+#, fuzzy
+#~ msgid "No topic is set for channel \r!c\r%Q\r"
+#~ msgstr "Nee is voor"
+
+#, fuzzy
+#~ msgid "Topic was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r on %Q"
+#~ msgstr "door s aan"
+
+#, fuzzy
+#~ msgid "Topic was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+#~ msgstr "door"
+
+#, fuzzy
+#~ msgid "Topic for \r!c\r%Q\r was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r on %Q"
+#~ msgstr "voor s door s aan"
+
+#, fuzzy
+#~ msgid "Topic for \r!c\r%Q\r was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+#~ msgstr "voor s door"
+
+#, fuzzy
+#~ msgid "Channel mode for \r!c\r%Q\r is %s"
+#~ msgstr "voor s is"
+
+#, fuzzy
+#~ msgid "User mode for \r!n\r%Q\r is %s"
+#~ msgstr "voor s is"
+
+#, fuzzy
+#~ msgid "End of channel %Q for \r!c\r%Q\r"
+#~ msgstr "End voor"
+
+#, fuzzy
+#~ msgid "ban list"
+#~ msgstr "Activeren URL-adres"
+
+#, fuzzy
+#~ msgid "invite list"
+#~ msgstr "Opslaan"
+
+#, fuzzy
+#~ msgid "ban exception list"
+#~ msgstr "Actief"
+
+#, fuzzy
+#~ msgid "%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"
+#~ msgstr "voor s s door s aan s"
+
+#, fuzzy
+#~ msgid "Ban listing"
+#~ msgstr "Activeren URL-adres"
+
+#, fuzzy
+#~ msgid "Invite listing"
+#~ msgstr "samenvoegen"
+
+#, fuzzy
+#~ msgid "Ban exception listing"
+#~ msgstr "Actief"
+
+#, fuzzy
+#~ msgid ""
+#~ "WHO entry for %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cChannel%c: \r!c\r%Q\r, %"
+#~ "cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAway%c: %Q, %cReal "
+#~ "name%c: %Q"
+#~ msgstr "voor s s s s s s s naam"
+
+#, fuzzy
+#~ msgid "End of WHO list for %Q"
+#~ msgstr "End voor"
+
+#, fuzzy
+#~ msgid "No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."
+#~ msgstr "Nee naar login s s s."
+
+#, fuzzy
+#~ msgid "%c\r!n\r%Q\r%c is away: %Q"
+#~ msgstr "s is"
+
+#, fuzzy
+#~ msgid "%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+#~ msgstr "s is s s s"
+
+#, fuzzy
+#~ msgid "%c\r!n\r%Q\r%c's real name: %Q"
+#~ msgstr "s s naam"
+
+#, fuzzy
+#~ msgid "%c\r!n\r%Q\r%c was %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+#~ msgstr "s is s s s"
+
+#, fuzzy
+#~ msgid "%c\r!n\r%Q\r%c's real name was: %Q"
+#~ msgstr "s s naam"
+
+#, fuzzy
+#~ msgid "%c\r!n\r%Q\r%c's channels: %Q"
+#~ msgstr "s s"
+
+#, fuzzy
+#~ msgid "Received a broken RPL_WHOISIDLE, can't evaluate the idle time"
+#~ msgstr "de idle"
+
+#, fuzzy
+#~ msgid "%c\r!n\r%Q\r%c's idle time: %ud %uh %um %us"
+#~ msgstr "s s idle tijd"
+
+#, fuzzy
+#~ msgid "%c\r!n\r%Q\r%c's signon time: %Q"
+#~ msgstr "s s tijd"
+
+#, fuzzy
+#~ msgid "%c\r!n\r%Q\r%c's server: \r!s\r%Q\r - %Q"
+#~ msgstr "s s s"
+
+#, fuzzy
+#~ msgid "%c\r!n\r%Q\r%c is authenticated as %Q"
+#~ msgstr "s s naam"
+
+#, fuzzy
+#~ msgid "%c\r!n\r%Q\r%c's info: %Q"
+#~ msgstr "s s"
+
+#, fuzzy
+#~ msgid "%c\r!n\r%Q\r%c WHOIS info from \r!s\r%Q\r"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "%c\r!n\r%Q\r%c WHOWAS info from \r!s\r%Q\r"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Can't evaluate creation time"
+#~ msgstr "de"
+
+#, fuzzy
+#~ msgid "Channel was created at %Q"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Channel \r!c\r%Q\r was created at %Q"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "List: %Q"
+#~ msgstr "Koppeling"
+
+#, fuzzy
+#~ msgid "End of LIST"
+#~ msgstr "End"
+
+#, fuzzy
+#~ msgid "Link: %Q"
+#~ msgstr "Koppeling"
+
+#, fuzzy
+#~ msgid "Restoring pre-away nickname (%Q)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Setting away nickname (%Q)"
+#~ msgstr "Server s"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's server info: %s"
+#~ msgstr "s s"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's administrator is %s"
+#~ msgstr "s s"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's contact adress is %s"
+#~ msgstr "s s"
+
+#, fuzzy
+#~ msgid "\r!n\r%Q\r invited %Q into channel %Q"
+#~ msgstr "s s s is aan"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's information:"
+#~ msgstr "s s"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's time is %Q"
+#~ msgstr "s s"
+
+#, fuzzy
+#~ msgid "%Q: no such channel"
+#~ msgstr "s Nee"
+
+#, fuzzy
+#~ msgid "Cannot sent to channel: %Q"
+#~ msgstr "Nee is voor"
+
+#, fuzzy
+#~ msgid "Cannot sent text to channel %Q: %Q"
+#~ msgstr "U s"
+
+#, fuzzy
+#~ msgid "Cannot sent to channel"
+#~ msgstr "venster is"
+
+#, fuzzy
+#~ msgid "Cannot sent text to channel %Q"
+#~ msgstr "Nee is voor"
+
+#, fuzzy
+#~ msgid "Your encoding is now %Q"
+#~ msgstr "U gebruiker"
+
+#, fuzzy
+#~ msgid "%c\r!n\r%Q\r%c's codepage is %Q: %Q"
+#~ msgstr "s s"
+
+#, fuzzy
+#~ msgid "Your user mode is %s"
+#~ msgstr "U gebruiker"
+
+#, fuzzy
+#~ msgid "Hostname resolution aborted"
+#~ msgstr "Verbinding geanuleerd"
+
+#, fuzzy
+#~ msgid "Attempting %Q to %Q (%Q) on port %u"
+#~ msgstr "proberen te verbinding naar %w (%s) aan poort %s"
+
+#, fuzzy
+#~ msgid "secure connection"
+#~ msgstr "Geen verbinding"
+
+#, fuzzy
+#~ msgid "Attempting to 'bounce' on proxy %s on port %u (protocol %s)"
+#~ msgstr "naar onbestelbaar aan proxy s aan poort s"
+
+#, fuzzy
+#~ msgid "Using cached proxy IP address (%s)"
+#~ msgstr "proxy IP s"
+
+#, fuzzy
+#~ msgid "Unable to look up the IRC proxy hostname: Can't start the DNS slave"
+#~ msgstr "naar de proxy de DNS"
+
+#, fuzzy
+#~ msgid "Resuming direct server connection"
+#~ msgstr "Bezig met hervatten"
+
+#, fuzzy
+#~ msgid "Looking up the proxy hostname (%s)..."
+#~ msgstr "de proxy s"
+
+#, fuzzy
+#~ msgid "Can't find the proxy IP address: %Q"
+#~ msgstr "de proxy IP"
+
+#, fuzzy
+#~ msgid "Proxy hostname resolved to %s"
+#~ msgstr "Proxy naar"
+
+#, fuzzy
+#~ msgid "Proxy %s has a nickname: %s"
+#~ msgstr "Proxy s"
+
+#, fuzzy
+#~ msgid "Using cached server IP address (%s)"
+#~ msgstr "IP s"
+
+#, fuzzy
+#~ msgid "Unable to look up the server hostname: Can't start the DNS slave"
+#~ msgstr "naar de de DNS"
+
+#, fuzzy
+#~ msgid "Looking up the server hostname (%s)..."
+#~ msgstr "de s"
+
+#, fuzzy
+#~ msgid "Can't find the server IP address: %Q"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Server hostname resolved to %s"
+#~ msgstr "Server naar"
+
+#, fuzzy
+#~ msgid "Real hostname for %s is %s"
+#~ msgstr "Bekend voor s is"
+
+#, fuzzy
+#~ msgid "Server %s has a nickname: %s"
+#~ msgstr "Server s"
+
+#, fuzzy
+#~ msgid "The specified bind address (%Q) is not valid"
+#~ msgstr "s is"
+
+#, fuzzy
+#~ msgid ""
+#~ "The specified bind address (%Q) is not valid (the interface it refers to "
+#~ "might be down)"
+#~ msgstr "s is de it naar"
+
+#, fuzzy
+#~ msgid "The system-wide IPv6 bind address (%s) is not valid"
+#~ msgstr "s is"
+
+#, fuzzy
+#~ msgid ""
+#~ "The system-wide IPv6 bind address (%s) is not valid (the interface it "
+#~ "refers to might be down)"
+#~ msgstr "s is de it naar"
+
+#, fuzzy
+#~ msgid "The system-wide IPv4 bind address (%s) is not valid"
+#~ msgstr "s is"
+
+#, fuzzy
+#~ msgid ""
+#~ "The system-wide IPv4 bind address (%s) is not valid (the interface it "
+#~ "refers to might be down)"
+#~ msgstr "s is de it naar"
+
+#, fuzzy
+#~ msgid "Configure Servers..."
+#~ msgstr "&Opties"
+
+#, fuzzy
+#~ msgid "Manage Addons..."
+#~ msgstr "Bezig met laden van de iconen..."
+
+#, fuzzy
+#~ msgid "Configure Registered Users..."
+#~ msgstr "Bezig met laden van de geregistreerd gebruikers..."
+
+#, fuzzy
+#~ msgid "Configure Identity..."
+#~ msgstr "Huidige"
+
+#, fuzzy
+#~ msgid "Show SocketSpy..."
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "Get Network Links"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "Get Channel List"
+#~ msgstr "Kanaal mode"
+
+#, fuzzy
+#~ msgid "Configure KVIrc..."
+#~ msgstr "&Opties"
+
+#, fuzzy
+#~ msgid "Shows the general options dialog"
+#~ msgstr "Tonen de"
+
+#, fuzzy
+#~ msgid "Customize Toolbars..."
+#~ msgstr "H&ulpmiddelen"
+
+#, fuzzy
+#~ msgid "Join Channels..."
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "Edit Actions..."
+#~ msgstr "Bezig met laden van de opties..."
+
+#, fuzzy
+#~ msgid "Edit Aliases..."
+#~ msgstr "Alias"
+
+#, fuzzy
+#~ msgid "Edit Events..."
+#~ msgstr "Gebeurtenis"
+
+#, fuzzy
+#~ msgid "Edit Popups..."
+#~ msgstr "Popup"
+
+#, fuzzy
+#~ msgid "Edit Raw Events..."
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "Help Index"
+#~ msgstr "Index"
+
+#, fuzzy
+#~ msgid "Shows the documentation index"
+#~ msgstr "Tonen de"
+
+#, fuzzy
+#~ msgid "KVIrc WWW"
+#~ msgstr "Naa&r voorgrond de"
+
+#, fuzzy
+#~ msgid "Cascade windows"
+#~ msgstr "Trapgewijs"
+
+#, fuzzy
+#~ msgid "Minimize all windows"
+#~ msgstr "M&inimaliseren"
+
+#, fuzzy
+#~ msgid "New IRC Context"
+#~ msgstr "&Nieuw"
+
+#, fuzzy
+#~ msgid "Quit KVIrc"
+#~ msgstr "Afsluiten"
+
+#, fuzzy
+#~ msgid "IRC Context Display"
+#~ msgstr "&Nieuw"
+
+#, fuzzy
+#~ msgid "Connect/Disconnect"
+#~ msgstr "Verbinding"
+
+#~ msgid "Connect"
+#~ msgstr "Verbinden"
+
+#, fuzzy
+#~ msgid "Abort Connection"
+#~ msgstr "geen verbinding"
+
+#, fuzzy
+#~ msgid "Join Channel"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "Change Nickname"
+#~ msgstr "Bijnaam"
+
+#, fuzzy
+#~ msgid "Connect To"
+#~ msgstr "Verbinden"
+
+#, fuzzy
+#~ msgid "Server Notices (+s)"
+#~ msgstr "s Server"
+
+#, fuzzy
+#~ msgid "Irc Tools"
+#~ msgstr "H&ulpmiddelen"
+
+#, fuzzy
+#~ msgid "Irc Actions"
+#~ msgstr "Acties"
+
+#, fuzzy
+#~ msgid "Changed text encoding to %Q"
+#~ msgstr "de naar"
+
+#, fuzzy
+#~ msgid "Connection to server established"
+#~ msgstr "Verbinding s s"
+
+#, fuzzy
+#~ msgid "[LINK WARNING]: Socket message truncated to 512 bytes."
+#~ msgstr "naar bytes."
+
+#, fuzzy
+#~ msgid ""
+#~ "The server seems to support the WATCH notify list method, will try to use "
+#~ "it"
+#~ msgstr "naar de naar it."
+
+#, fuzzy
+#~ msgid "Can't resolve local host address, using user supplied one (%Q)"
+#~ msgstr "lokaal gebruiker s"
+
+#, fuzzy
+#~ msgid "Can't resolve local host address, using default 127.0.0.1"
+#~ msgstr "lokaal standaard"
+
+#, fuzzy
+#~ msgid "Local host address is %Q"
+#~ msgstr "Lokaal is"
+
+#, fuzzy
+#~ msgid "The local IP address as seen by the IRC server is %Q"
+#~ msgstr "de proxy s"
+
+#, fuzzy
+#~ msgid "Can't start the DNS slave thread"
+#~ msgstr "de"
+
+#, fuzzy
+#~ msgid "Unable to resolve the local hostname as seen by the IRC server: %Q"
+#~ msgstr "de proxy s"
+
+#, fuzzy
+#~ msgid "Looking up the local hostname as seen by the IRC server (%Q)"
+#~ msgstr "de proxy s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unable to resolve the local hostname as seen by the IRC server: %Q, using "
+#~ "previously resolved %Q"
+#~ msgstr "de proxy s"
+
+#, fuzzy
+#~ msgid "Local hostname as seen by the IRC server resolved to %s"
+#~ msgstr "de proxy s"
+
+#, fuzzy
+#~ msgid "Using server specific username (%Q)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Using network specific username (%Q)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Using server specific nickname (%Q)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Using network specific nickname (%Q)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Using server specific real name (%Q)"
+#~ msgstr "naam s"
+
+#, fuzzy
+#~ msgid "Using network specific real name (%Q)"
+#~ msgstr "naam s"
+
+#, fuzzy
+#~ msgid "Logging in as %Q!%Q :%Q"
+#~ msgstr "Loggen s s"
+
+#, fuzzy
+#~ msgid "Sending %s as password"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid ""
+#~ "The server refused the suggested nickname (%s) and named you %s instead"
+#~ msgstr "de s en s"
+
+#, fuzzy
+#~ msgid "Login operations complete, happy ircing!"
+#~ msgstr "Login!"
+
+#, fuzzy
+#~ msgid "Setting configured user mode"
+#~ msgstr "Instelling gebruiker."
+
+#, fuzzy
+#~ msgid "Auto-joining network specific channels"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Auto-joining server specific channels"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Updating away state for channel %Q"
+#~ msgstr "Nee is voor"
+
+#, fuzzy
+#~ msgid "Setup aborted"
+#~ msgstr "Setup geanuleerd."
+
+#, fuzzy
+#~ msgid ""
+#~ "Failed writing the kvirc home directory path to %Q.\n"
+#~ "You will need to do it manually , otherwise KVirc will restart with\n"
+#~ "the setup!"
+#~ msgstr ""
+#~ "Faalde de map naar s\n"
+#~ " U naar it door\n"
+#~ " de!"
+
+#, fuzzy
+#~ msgid "Normal text"
+#~ msgstr "Normaal"
+
+#, fuzzy
+#~ msgid "Selection"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "Highlighted text"
+#~ msgstr "M&inimaliseren"
+
+#, fuzzy
+#~ msgid "URL foreground"
+#~ msgstr "url"
+
+#, fuzzy
+#~ msgid "Link overlay foreground"
+#~ msgstr "koppeling"
+
+#, fuzzy
+#~ msgid "Parser error"
+#~ msgstr "Plakken"
+
+#, fuzzy
+#~ msgid "Parser warning"
+#~ msgstr "[parser waarschuwing in '%s'] : %s"
+
+#, fuzzy
+#~ msgid "Socket message"
+#~ msgstr "samenvoegen"
+
+#, fuzzy
+#~ msgid "Socket warning"
+#~ msgstr "Socket"
+
+#, fuzzy
+#~ msgid "Socket error"
+#~ msgstr "Socket"
+
+#, fuzzy
+#~ msgid "System error"
+#~ msgstr "systeemfout"
+
+#, fuzzy
+#~ msgid "Raw data to server"
+#~ msgstr "naar"
+
+#, fuzzy
+#~ msgid "Connection status"
+#~ msgstr "verbinding"
+
+#, fuzzy
+#~ msgid "System message"
+#~ msgstr "Bericht verzenden"
+
+#, fuzzy
+#~ msgid "Server information"
+#~ msgstr "Algemene opties"
+
+#, fuzzy
+#~ msgid "Server Message of the Day"
+#~ msgstr "de"
+
+#, fuzzy
+#~ msgid "Server ping"
+#~ msgstr "Algemene opties"
+
+#, fuzzy
+#~ msgid "Join message"
+#~ msgstr "samenvoegen"
+
+#, fuzzy
+#~ msgid "Unrecognized/broken message"
+#~ msgstr "onherkend proxy antwoord"
+
+#, fuzzy
+#~ msgid "Topic message"
+#~ msgstr "samenvoegen"
+
+#, fuzzy
+#~ msgid "Own private message"
+#~ msgstr "private"
+
+#, fuzzy
+#~ msgid "Channel private message"
+#~ msgstr "private"
+
+#, fuzzy
+#~ msgid "Query private message"
+#~ msgstr "private"
+
+#, fuzzy
+#~ msgid "User action"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "Avatar change"
+#~ msgstr "Accepteren"
+
+#, fuzzy
+#~ msgid "Split message"
+#~ msgstr "samenvoegen"
+
+#, fuzzy
+#~ msgid "Quit on netsplit message"
+#~ msgstr "aan"
+
+#, fuzzy
+#~ msgid "Nick changes"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Multiple user mode change"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "Channel key change"
+#~ msgstr "I"
+
+#, fuzzy
+#~ msgid "Channel limit change"
+#~ msgstr "private"
+
+#, fuzzy
+#~ msgid "-e mode change"
+#~ msgstr "I"
+
+#, fuzzy
+#~ msgid "+I mode change"
+#~ msgstr "I"
+
+#, fuzzy
+#~ msgid "-I mode change"
+#~ msgstr "I"
+
+#, fuzzy
+#~ msgid "Multiple channel mode change"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "Who reply"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "DCC request"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "DCC message"
+#~ msgstr "Bericht verzenden"
+
+#, fuzzy
+#~ msgid "Nickname problem"
+#~ msgstr "Bijnaam"
+
+#, fuzzy
+#~ msgid "Whois user reply"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "Whois channels reply"
+#~ msgstr "overig"
+
+#, fuzzy
+#~ msgid "Whois idle reply"
+#~ msgstr "idle"
+
+#, fuzzy
+#~ msgid "Whois server reply"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "Whois other reply"
+#~ msgstr "overig"
+
+#, fuzzy
+#~ msgid "Channel creation time reply"
+#~ msgstr "tijd"
+
+#, fuzzy
+#~ msgid "Notify list joins"
+#~ msgstr "Notificatie lijst"
+
+#, fuzzy
+#~ msgid "Notify list leaves"
+#~ msgstr "Notificatie lijst"
+
+#, fuzzy
+#~ msgid "Own encrypted private message"
+#~ msgstr "private"
+
+#, fuzzy
+#~ msgid "Channel encrypted private message"
+#~ msgstr "private"
+
+#, fuzzy
+#~ msgid "Query encrypted private message"
+#~ msgstr "private"
+
+#, fuzzy
+#~ msgid "Encrypted DCC chat message"
+#~ msgstr "private"
+
+#, fuzzy
+#~ msgid "Login operations completed"
+#~ msgstr "login"
+
+#, fuzzy
+#~ msgid "Kick action"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "Spam report"
+#~ msgstr "Zoeken"
+
+#, fuzzy
+#~ msgid "ICQ user-message"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "Outgoing ICQ user-message"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "Channel notice"
+#~ msgstr "Kanaal mode"
+
+#, fuzzy
+#~ msgid "Encrypted channel notice"
+#~ msgstr "End voor"
+
+#, fuzzy
+#~ msgid "Query notice"
+#~ msgstr "Ondervraging"
+
+#, fuzzy
+#~ msgid "Encrypted query notice"
+#~ msgstr "s voor"
+
+#, fuzzy
+#~ msgid "Server notice"
+#~ msgstr "s Server"
+
+#, fuzzy
+#~ msgid "Halfop mode change"
+#~ msgstr "I"
+
+#, fuzzy
+#~ msgid "Unknown CTCP reply"
+#~ msgstr "onbekend"
+
+#, fuzzy
+#~ msgid "NickServ message"
+#~ msgstr "Bericht verzenden"
+
+#, fuzzy
+#~ msgid "ChanServ message"
+#~ msgstr "private"
+
+#, fuzzy
+#~ msgid "Away message"
+#~ msgstr "Bericht verzenden"
+
+#, fuzzy
+#~ msgid "Ident message"
+#~ msgstr "samenvoegen"
+
+#, fuzzy
+#~ msgid "Channel list message"
+#~ msgstr "private"
+
+#, fuzzy
+#~ msgid "Half-deop mode change"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "samenvoegen"
+
+#, fuzzy
+#~ msgid "Multimedia message"
+#~ msgstr "Bericht verzenden"
+
+#, fuzzy
+#~ msgid "Query trace message"
+#~ msgstr "private"
+
+#, fuzzy
+#~ msgid "Wallops message"
+#~ msgstr "samenvoegen"
+
+#, fuzzy
+#~ msgid "Join error message"
+#~ msgstr "samenvoegen"
+
+#, fuzzy
+#~ msgid "Broadcast private message"
+#~ msgstr "private"
+
+#, fuzzy
+#~ msgid "Am voiced"
+#~ msgstr "Karakter"
+
+#, fuzzy
+#~ msgid "Am devoiced"
+#~ msgstr "Karakter"
+
+#, fuzzy
+#~ msgid "Ban exception matching my mask"
+#~ msgstr "Actief"
+
+#, fuzzy
+#~ msgid "Ban unexception matching my mask"
+#~ msgstr "Actief"
+
+#, fuzzy
+#~ msgid "Invite exception matching my mask"
+#~ msgstr "Actief"
+
+#, fuzzy
+#~ msgid "Ignored user message"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "Server statistics"
+#~ msgstr "s Server"
+
+#, fuzzy
+#~ msgid "SSL message"
+#~ msgstr "Bericht verzenden"
+
+#, fuzzy
+#~ msgid "Search"
+#~ msgstr "Zoeken"
+
+#, fuzzy
+#~ msgid "Generic success"
+#~ msgstr "verbinding"
+
+#, fuzzy
+#~ msgid "Generic status"
+#~ msgstr "verbinding"
+
+#, fuzzy
+#~ msgid "Generic verbose message"
+#~ msgstr "private"
+
+#, fuzzy
+#~ msgid "Generic error"
+#~ msgstr "Interne fout"
+
+#, fuzzy
+#~ msgid "Generic critical error"
+#~ msgstr "Interne fout"
+
+#, fuzzy
+#~ msgid "Chan admin status set"
+#~ msgstr "notificatie:"
+
+#, fuzzy
+#~ msgid "Chan admin status unset"
+#~ msgstr "notificatie:"
+
+#, fuzzy
+#~ msgid "Own chan admin status set"
+#~ msgstr "notificatie:"
+
+#, fuzzy
+#~ msgid "Own chan admin status unset"
+#~ msgstr "notificatie:"
+
+#, fuzzy
+#~ msgid "Userop mode change"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "User-deop mode change"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "Chan owner status set"
+#~ msgstr "notificatie:"
+
+#, fuzzy
+#~ msgid "Chan owner status unset"
+#~ msgstr "notificatie:"
+
+#, fuzzy
+#~ msgid "Own chan owner status set"
+#~ msgstr "notificatie:"
+
+#, fuzzy
+#~ msgid "Own chan owner status unset"
+#~ msgstr "notificatie:"
+
+#, fuzzy
+#~ msgid "Server error"
+#~ msgstr "Plakken"
+
+#, fuzzy
+#~ msgid "Rectangle options (x,y,width,height)"
+#~ msgstr "Rechthoek x breedte hoogte"
+
+#, fuzzy
+#~ msgid "String options (string value)"
+#~ msgstr "Tekenreeks"
+
+#, fuzzy
+#~ msgid "Color options (#RRGGBB)"
+#~ msgstr "Kleur"
+
+#, fuzzy
+#~ msgid "Irc context color options (#RRGGBB)"
+#~ msgstr "kleur"
+
+#, fuzzy
+#~ msgid "Pixmap options (image path)"
+#~ msgstr "Pixmap"
+
+#, fuzzy
+#~ msgid "Font options (family,pointsize,style,charset,weight,flags (biusf))"
+#~ msgstr "Lettertype stijl"
+
+#, fuzzy
+#~ msgid "Message color options (image_id,foreground,background,logFlag (0/1))"
+#~ msgstr "Bericht kleur id achtergrond"
+
+#, fuzzy
+#~ msgid "String list options (comma separated list of strings)"
+#~ msgstr "Tekenreeks"
+
+#, fuzzy
+#~ msgid "Icon Table"
+#~ msgstr "P&ictogram"
+
+#, fuzzy
+#~ msgid "%Q is on IRC"
+#~ msgstr "s is aan"
+
+#, fuzzy
+#~ msgid "%Q has left IRC"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Notify list: No users to check for, quitting"
+#~ msgstr "Notificatie nee gebruikers naar voor"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: Timeout (%d sec) is too short, resetting to something more "
+#~ "reasonable (15 sec)"
+#~ msgstr "seconden is naar seconden"
+
+#, fuzzy
+#~ msgid "Notify list: Notify list empty, quitting"
+#~ msgstr "Notificatie leeg"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: ISON delay (%d sec) is too short, resetting to something "
+#~ "more reasonable (5 sec)"
+#~ msgstr "seconden is naar seconden"
+
+#, fuzzy
+#~ msgid "Notify list: Checking for: %Q"
+#~ msgstr "Notificatie voor"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: Hey! You've used ISON behind my back? (I might be confused "
+#~ "now...)"
+#~ msgstr "Notificatie gebruikt I"
+
+#, fuzzy
+#~ msgid "registration mask changed, or nickname is being used by someone else"
+#~ msgstr "s s s masker of is"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q"
+#~ "\r] does not match (registration mask does not match, or nickname is "
+#~ "being used by someone else)"
+#~ msgstr ""
+#~ "Notificatie s naar de masker s s overeenkomstig is of masker s "
+#~ "overeenkomstig"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: Unexpected inconsistency, registered user DB modified? "
+#~ "(restarting)"
+#~ msgstr "Notificatie geregistreerd gebruiker gewijzigd"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: Unexpected inconsistency, expected \r!n\r%Q\r in the "
+#~ "registered user DB"
+#~ msgstr "Notificatie naar s de woordenboek."
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: USERHOST delay (%d sec) is too short, resetting to something "
+#~ "more reasonable (5 sec)"
+#~ msgstr "seconden is naar seconden"
+
+#, fuzzy
+#~ msgid "Notify list: Unexpected inconsistency, userhost list is empty!"
+#~ msgstr "Notificatie de is leeg"
+
+#, fuzzy
+#~ msgid "Notify list: Checking userhost for: %Q"
+#~ msgstr "Notificatie voor"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: Hey! You've used USERHOST behind my back? (I might be "
+#~ "confused now...)"
+#~ msgstr "Notificatie gebruikt I"
+
+#, fuzzy
+#~ msgid "Notify list: Broken USERHOST reply from the server? (%s)"
+#~ msgstr "Notificatie de s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST "
+#~ "reply was received, will recheck in the next loop"
+#~ msgstr "Notificatie s de"
+
+#, fuzzy
+#~ msgid "No users in the notify list"
+#~ msgstr "Nee gebruikers de"
+
+#, fuzzy
+#~ msgid "Notify list: Checking for:%Q"
+#~ msgstr "Notificatie voor"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: Timeout (%d sec) is too short, resetting to something more "
+#~ "reasonable (5 sec)"
+#~ msgstr "seconden is naar seconden"
+
+#, fuzzy
+#~ msgid "Notify list: Adding watch entries for%Q"
+#~ msgstr "Notificatie voor"
+
+#, fuzzy
+#~ msgid "registration mask changed or desync with the watch service"
+#~ msgstr "s s s masker of door de"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q"
+#~ "\r] does not match (watch: registration mask does not match, or nickname "
+#~ "is being used by someone else)"
+#~ msgstr ""
+#~ "Notificatie s naar de masker s s overeenkomstig is of masker s "
+#~ "overeenkomstig"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: Unexpected inconsistency, registered user DB modified? "
+#~ "(watch: restarting)"
+#~ msgstr "Notificatie geregistreerd gebruiker gewijzigd"
+
+#, fuzzy
+#~ msgid "removed from watch list"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "Notify list: Stopped watching for \r!n\r%Q\r"
+#~ msgstr "Notificatie voor s"
+
+#, fuzzy
+#~ msgid "watch"
+#~ msgstr "Pad"
+
+#, fuzzy
+#~ msgid "Notify list: \r!n\r%Q\r is offline (watch)"
+#~ msgstr "Notificatie s is"
+
+#, fuzzy
+#~ msgid "commandline"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "[SSL]: %c%s"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "[%s]: [SSL ERROR]: %s"
+#~ msgstr "FOUT"
+
+#, fuzzy
+#~ msgid "Failed to start the connection: %Q"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid "Contacting %Q %s (%s) on port %u"
+#~ msgstr "s s s aan poort"
+
+#, fuzzy
+#~ msgid "proxy host"
+#~ msgstr "proxy"
+
+#, fuzzy
+#~ msgid "IRC server"
+#~ msgstr "Kopiëren..."
+
+#, fuzzy
+#~ msgid "Low-level transport connection established [%s (%s:%u)]"
+#~ msgstr "Verbinding s s"
+
+#, fuzzy
+#~ msgid "%Q established [%s (%s:%u)]"
+#~ msgstr "Verbinding s s"
+
+#, fuzzy
+#~ msgid "Secure proxy connection"
+#~ msgstr "proxy"
+
+#, fuzzy
+#~ msgid "Proxy connection"
+#~ msgstr "Geen verbinding"
+
+#, fuzzy
+#~ msgid "Negotiating relay information"
+#~ msgstr "proxy"
+
+#, fuzzy
+#~ msgid "Sent connection request, waiting for acknowledgement"
+#~ msgstr "Verzonden verbinding voor"
+
+#, fuzzy
+#~ msgid "Sent target host data, waiting for acknowledgement"
+#~ msgstr "Verzonden voor"
+
+#, fuzzy
+#~ msgid "Sent auth method request, waiting for acknowledgement"
+#~ msgstr "Verzonden voor"
+
+#, fuzzy
+#~ msgid "Sent username and password, waiting for acknowledgement"
+#~ msgstr "Verzonden en wachtwoord voor"
+
+#, fuzzy
+#~ msgid "Sent connection request, waiting for \"HTTP 200\" acknowledgement"
+#~ msgstr "Verzonden verbinding voor HTTP"
+
+#, fuzzy
+#~ msgid "[SSL]: %Q"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "[SSL ERROR]: %Q"
+#~ msgstr "FOUT"
+
+#, fuzzy
+#~ msgid "[PROXY]: %Q"
+#~ msgstr "FOUT"
+
+#, fuzzy
+#~ msgid "[PROXY ERROR]: %Q"
+#~ msgstr "FOUT"
+
+#, fuzzy
+#~ msgid "[SOCKET]: %Q"
+#~ msgstr "FOUT"
+
+#, fuzzy
+#~ msgid "[SOCKET ERROR]: %Q"
+#~ msgstr "FOUT"
+
+#, fuzzy
+#~ msgid "[SOCKET WARNING]: %Q"
+#~ msgstr "FOUT"
+
+#, fuzzy
+#~ msgid "Binding to local address %s"
+#~ msgstr "naar lokaal"
+
+#, fuzzy
+#~ msgid ""
+#~ "Binding to local address %s failed: the kernel will choose the correct "
+#~ "interface"
+#~ msgstr "naar lokaal s de kiezen de"
+
+#, fuzzy
+#~ msgid "Using HTTP protocol."
+#~ msgstr "HTTP proxy."
+
+#, fuzzy
+#~ msgid "Using SOCKSV4 protocol."
+#~ msgstr "proxy."
+
+#, fuzzy
+#~ msgid "Using SOCKSV5 protocol."
+#~ msgstr "proxy."
+
+#, fuzzy
+#~ msgid "We can accept auth method 0 (no auth)"
+#~ msgstr "nee"
+
+#, fuzzy
+#~ msgid "We can accept auth method 0 (no auth) or 2 (user/pass)"
+#~ msgstr "nee of gebruiker"
+
+#, fuzzy
+#~ msgid "Proxy response: auth OK: access granted"
+#~ msgstr "Proxy OK"
+
+#, fuzzy
+#~ msgid "Proxy response: Auth method OK: using method 0 (no auth)"
+#~ msgstr "Proxy OK nee"
+
+#, fuzzy
+#~ msgid "Proxy response: Auth method OK: using method 2 (user/pass)"
+#~ msgstr "Proxy OK gebruiker"
+
+#, fuzzy
+#~ msgid "Proxy response: target data OK: request granted"
+#~ msgstr "Proxy OK"
+
+#, fuzzy
+#~ msgid "Proxy response: "
+#~ msgstr "Proxy "
+
+#, fuzzy
+#~ msgid "Proxy said something about \""
+#~ msgstr "Proxy"
+
+#, fuzzy
+#~ msgid "\" ...that looks like an error to me..."
+#~ msgstr "naar."
+
+#~ msgid "Remote command received (%s ...)"
+#~ msgstr "Commando van de andere kant ontvangen (%s ...)"
+
+#, fuzzy
+#~ msgid "File download failed"
+#~ msgstr "Ophalen"
+
+#, fuzzy
+#~ msgid "File download from %1 failed"
+#~ msgstr "Laden"
+
+#, fuzzy
+#~ msgid "File download terminated"
+#~ msgstr "Verbinding"
+
+#, fuzzy
+#~ msgid "The commandline for media type '%s' seems to be broken"
+#~ msgstr "voor s naar"
+
+#, fuzzy
+#~ msgid "Media type of file %s matched to '%s' but no commandline specified"
+#~ msgstr "file s naar s nee"
+
+#, fuzzy
+#~ msgid "No idea on how to play file %s (no media type match)"
+#~ msgstr "Nee aan naar spelen file s nee overeenkomstig"
+
+#, fuzzy
+#~ msgid "IRC Context related actions"
+#~ msgstr "&Nieuw"
+
+#, fuzzy
+#~ msgid "Generic"
+#~ msgstr "Algemeen"
+
+#, fuzzy
+#~ msgid "Generic actions"
+#~ msgstr "Algemene opties"
+
+#, fuzzy
+#~ msgid "Settings"
+#~ msgstr "&Status"
+
+#, fuzzy
+#~ msgid "Scripting"
+#~ msgstr "Beschrijving"
+
+#, fuzzy
+#~ msgid "IRC Channel related actions"
+#~ msgstr "&Nieuw"
+
+#, fuzzy
+#~ msgid "Reconnect attempt aborted"
+#~ msgstr "Maximale tijd om te verbinden overschreden"
+
+#, fuzzy
+#~ msgid ""
+#~ "No servers available. Check the options dialog or use the /SERVER command"
+#~ msgstr ""
+#~ "Geen server beschikbaar: controleer het optie venster of gebruik het /"
+#~ "SERVER commando"
+
+#, fuzzy
+#~ msgid "No proxy hosts available, resuming direct connection"
+#~ msgstr "Geen proxy beschikbaar: verderzetten van directe verbinding"
+
+#, fuzzy
+#~ msgid "Connection attempt failed [%s]"
+#~ msgstr "Verbinding s"
+
+#~ msgid "%d of %d"
+#~ msgstr "%d aan %d"
+
+#, fuzzy
+#~ msgid "Secure connection"
+#~ msgstr "Geen verbinding"
+
+#, fuzzy
+#~ msgid "Connection terminated [%s (%s:%u)]"
+#~ msgstr "Verbinding s s"
+
+#, fuzzy
+#~ msgid "Sent QUIT, waiting for the server to close the connection..."
+#~ msgstr ""
+#~ "Verzonden van de QUIT.... wachten op de server om de verbinding te sluiten"
+
+#, fuzzy
+#~ msgid "No "
+#~ msgstr "&Ga naar"
+
+#, fuzzy
+#~ msgid "Failed to execute the init routine"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid "Loaded module '%s' (%s)"
+#~ msgstr "module s s"
+
+#, fuzzy
+#~ msgid "Unloaded module '%s'"
+#~ msgstr "module s"
+
+#~ msgid "Channel mode"
+#~ msgstr "Kanaal mode"
+
+#, fuzzy
+#~ msgid "Split View"
+#~ msgstr "samenvoegen"
+
+#, fuzzy
+#~ msgid "User List"
+#~ msgstr "Gebruikers lijst"
+
+#, fuzzy
+#~ msgid "Ban Editor"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid "Ban Exception Editor"
+#~ msgstr "Omschakelen ban exceptie editor"
+
+#, fuzzy
+#~ msgid "Invite Exception Editor"
+#~ msgstr "Omschakelen invite exceptie editor"
+
+#, fuzzy
+#~ msgid "Mode Editor"
+#~ msgstr "Omschakelen mode editor"
+
+#, fuzzy
+#~ msgid "said something recently"
+#~ msgstr "Proxy"
+
+#, fuzzy
+#~ msgid "and other %1 users"
+#~ msgstr "Zoeken"
+
+#, fuzzy
+#~ msgid "Dead channel"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "operator"
+#~ msgstr "Scheider"
+
+#, fuzzy
+#~ msgid "operators"
+#~ msgstr "Scheider"
+
+#, fuzzy
+#~ msgid "active user"
+#~ msgstr "Actief"
+
+#, fuzzy
+#~ msgid "active users"
+#~ msgstr "Zoeken"
+
+#, fuzzy
+#~ msgid "channel owner"
+#~ msgstr "onbekend"
+
+#, fuzzy
+#~ msgid "channel owners"
+#~ msgstr "Kanaal mode"
+
+#, fuzzy
+#~ msgid "channel administrator"
+#~ msgstr "notificatie:"
+
+#, fuzzy
+#~ msgid "channel administrators"
+#~ msgstr "notificatie:"
+
+#, fuzzy
+#~ msgid "user-operator"
+#~ msgstr "Scheider"
+
+#, fuzzy
+#~ msgid "user-operators"
+#~ msgstr "Scheider"
+
+#, fuzzy
+#~ msgid "Might be flooded with messages"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid "Flooded with messages"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid "[Dead channel]"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid " on "
+#~ msgstr "aan<b>"
+
+#~ msgid ""
+#~ "The crypto engine was unable to encrypt the current message (%Q): %s, no "
+#~ "data sent to the server"
+#~ msgstr ""
+#~ "De cryptie motor wat niet in staat om de huidige boodschap (%Q) te "
+#~ "encrypteren: %s: geen data verstuurd"
+
+#, fuzzy
+#~ msgid "Sent part request, waiting for reply..."
+#~ msgstr "Verzonden voor."
+
+#, fuzzy
+#~ msgid "<b>Channel mode:</b>"
+#~ msgstr "<b>Kanaal mode</b><br>"
+
+#, fuzzy
+#~ msgid "<br><b>Key:</b> %s"
+#~ msgstr "<br>sleutel: %s"
+
+#, fuzzy
+#~ msgid "<br><b>Limit:</b> %s"
+#~ msgstr "<br>limiet: %s"
+
+#~ msgid "Channel synchronized in %d.%d seconds"
+#~ msgstr "Kanaal gesyncroniseerd in %d.%d seconden"
+
+#, fuzzy
+#~ msgid "No topic message has been received from the server yet"
+#~ msgstr "Nee de."
+
+#, fuzzy
+#~ msgid "Channel topic:"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "Set on"
+#~ msgstr "(Geen)"
+
+#, fuzzy
+#~ msgid "Double-click to edit..."
+#~ msgstr "<br> naar"
+
+#, fuzzy
+#~ msgid "No topic is set"
+#~ msgstr "Nee is"
+
+#, fuzzy
+#~ msgid "Double-click to set..."
+#~ msgstr "naar<br>"
+
+#, fuzzy
+#~ msgid "History"
+#~ msgstr "Map"
+
+#, fuzzy
+#~ msgid "Commit Changes"
+#~ msgstr "Vastleggen (Commit)"
+
+#, fuzzy
+#~ msgid "Discard Changes"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "CTCP Page - KVIrc"
+#~ msgstr "file naar"
+
+#, fuzzy
+#~ msgid "Active Bans"
+#~ msgstr "Actief"
+
+#, fuzzy
+#~ msgid "Active Invite Exceptions"
+#~ msgstr "Actief"
+
+#, fuzzy
+#~ msgid "Active Ban Exceptions"
+#~ msgstr "Actief"
+
+#, fuzzy
+#~ msgid "Window List"
+#~ msgstr "Venster"
+
+#, fuzzy
+#~ msgid "Remove %Q"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "Add Applet"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "Connection in progress..."
+#~ msgstr "bezig met verbinden..."
+
+#, fuzzy
+#~ msgid "Login in progress..."
+#~ msgstr "bezig met in te loggen..."
+
+#, fuzzy
+#~ msgid "Not connected"
+#~ msgstr "Geen verbinding"
+
+#, fuzzy
+#~ msgid "No IRC context"
+#~ msgstr "&Nieuw"
+
+#, fuzzy
+#~ msgid "Crypting"
+#~ msgstr "Beschrijving"
+
+#, fuzzy
+#~ msgid "Private Text Encoding"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid "Ops...I've accidentally lost the crypting engine..."
+#~ msgstr "I de."
+
+#, fuzzy
+#~ msgid "List of window types available in this release of KVIrc:"
+#~ msgstr "venster beschikbaar:"
+
+#, fuzzy
+#~ msgid "Use Default Encoding"
+#~ msgstr "Gebruik de"
+
+#, fuzzy
+#~ msgid "Standard"
+#~ msgstr "Cursor"
+
+#, fuzzy
+#~ msgid "Smart"
+#~ msgstr "Plakken"
+
+#, fuzzy
+#~ msgid "&Undock"
+#~ msgstr "Verbergen de"
+
+#, fuzzy
+#~ msgid "&Dock"
+#~ msgstr "Aan&meren"
+
+#, fuzzy
+#~ msgid "Mi&nimize"
+#~ msgstr "M&inimaliseren"
+
+#, fuzzy
+#~ msgid "Ma&ximize"
+#~ msgstr "&Maximaliseren"
+
+#, fuzzy
+#~ msgid "&Restore"
+#~ msgstr "He&rstellen"
+
+#, fuzzy
+#~ msgid "Text &Encoding"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid "Sa&ve Window Properties"
+#~ msgstr "Onbekende operator"
+
+#, fuzzy
+#~ msgid "Search tools"
+#~ msgstr "Zoeken"
+
+#, fuzzy
+#~ msgid "### Log session terminated at %s ###"
+#~ msgstr "Log sessie s"
+
+#, fuzzy
+#~ msgid "### Log session started at %s ###"
+#~ msgstr "Log sessie s"
+
+#, fuzzy
+#~ msgid "### Existing data buffer:"
+#~ msgstr "buffer:"
+
+#, fuzzy
+#~ msgid "### End of existing data buffer."
+#~ msgstr "End buffer."
+
+#, fuzzy
+#~ msgid "Hide Find Window"
+#~ msgstr "&Terminal"
+
+#, fuzzy
+#~ msgid "Show Find Window"
+#~ msgstr "&Venster"
+
+#, fuzzy
+#~ msgid "Choose Temporary Font..."
+#~ msgstr "file."
+
+#, fuzzy
+#~ msgid "Choose Temporary Background..."
+#~ msgstr "file."
+
+#, fuzzy
+#~ msgid "Reset Temporary Background"
+#~ msgstr "file."
+
+#, fuzzy
+#~ msgid "Choose the background image..."
+#~ msgstr "Achtergrondafbeelding"
+
+#, fuzzy
+#~ msgid "Invalid image"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Failed to load the selected image"
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Not found"
+#~ msgstr "Bestand Niet"
+
+#, fuzzy
+#~ msgid "Looking up host %Q..."
+#~ msgstr "s."
+
+#, fuzzy
+#~ msgid "Double-click to open this link"
+#~ msgstr "naar<br>"
+
+#, fuzzy
+#~ msgid "Unable to look it up hostname: Hostname appears to be masked"
+#~ msgstr "naar de de DNS"
+
+#, fuzzy
+#~ msgid "Unable to look it up hostname: Unknown host"
+#~ msgstr "naar de proxy de DNS"
+
+#, fuzzy
+#~ msgid ""
+#~ "Double-click to look up this hostname<br>Right-click to view other options"
+#~ msgstr "naar<br> Rechts naar overig"
+
+#, fuzzy
+#~ msgid "Unknown server<br>"
+#~ msgstr "Onbekende fout"
+
+#, fuzzy
+#~ msgid "Double-click to read the MOTD<br>Right-click to view other options"
+#~ msgstr "naar de<br> Rechts naar overig"
+
+#, fuzzy
+#~ msgid "Double-click to set<br>"
+#~ msgstr "naar<br>"
+
+#, fuzzy
+#~ msgid "You're not an operator: You may not change channel modes"
+#~ msgstr "U"
+
+#, fuzzy
+#~ msgid "Nothing known about %Q"
+#~ msgstr "Niets"
+
+#, fuzzy
+#~ msgid "Nothing known about %Q (no connection)"
+#~ msgstr "Niets"
+
+#, fuzzy
+#~ msgid "<b>%Q</b>: +%Q (%u users)<hr>%Q"
+#~ msgstr "<b> s</b> s gebruikers<hr>"
+
+#, fuzzy
+#~ msgid "Double-click to join %Q<br>Right click to view other options"
+#~ msgstr "naar samenvoegen s<br> Rechts naar overig"
+
+#, fuzzy
+#~ msgid "<b>Double-click:</b><br>%Q"
+#~ msgstr "<b> Midden</b><br>"
+
+#, fuzzy
+#~ msgid "<b>Middle-click:</b><br>%Q"
+#~ msgstr "<b> Midden</b><br>"
+
+#, fuzzy
+#~ msgid "<b>Right-click:</b><br>%Q"
+#~ msgstr "<b> Rechts</b><br>"
+
+#, fuzzy
+#~ msgid "Toolbars"
+#~ msgstr "H&ulpmiddelen"
+
+#, fuzzy
+#~ msgid "Orientation"
+#~ msgstr "notificatie"
+
+#, fuzzy
+#~ msgid "Detached"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Flat"
+#~ msgstr "Filter"
+
+#, fuzzy
+#~ msgid "Icon Size"
+#~ msgstr "P&ictogram"
+
+#, fuzzy
+#~ msgid "Show User List"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "Query Targets"
+#~ msgstr "Ondervraging"
+
+#, fuzzy
+#~ msgid "Query target:"
+#~ msgstr "Ondervraging"
+
+#, fuzzy
+#~ msgid "%1 is using irc server: %2 (%3 hops)"
+#~ msgstr "<hr><nobr><b> s</b>"
+
+#, fuzzy
+#~ msgid "%1 is using irc server: %2"
+#~ msgstr "<hr><nobr><b> s</b>"
+
+#, fuzzy
+#~ msgid "[Dead Query]"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid ", using server %1"
+#~ msgstr "<hr><nobr><b> s</b>"
+
+#, fuzzy
+#~ msgid "Common channels: %2"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "Common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "U s door s s s"
+
+#, fuzzy
+#~ msgid "No common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+#~ msgstr "U s door s s s"
+
+#, fuzzy
+#~ msgid "This query has no active targets, no message sent"
+#~ msgstr "nee actief nee"
+
+#~ msgid "No connection"
+#~ msgstr "Geen verbinding"
+
+#, fuzzy
+#~ msgid "IRC Context"
+#~ msgstr "&Nieuw"
+
+#, fuzzy
+#~ msgid "&Paste"
+#~ msgstr "Plakken"
+
+#, fuzzy
+#~ msgid "Paste (Slowly)"
+#~ msgstr "Plakken"
+
+#, fuzzy
+#~ msgid "Paste &File"
+#~ msgstr "Plakken"
+
+#, fuzzy
+#~ msgid "Stop Paste"
+#~ msgstr "Plakken"
+
+#, fuzzy
+#~ msgid "Clear"
+#~ msgstr "Beginwaarde"
+
+#~ msgid "Select All"
+#~ msgstr "Alles selecteren"
+
+#, fuzzy
+#~ msgid "%d matches: %Q"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "No matches"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "Confirm Multiline Message"
+#~ msgstr "Bericht verzenden"
+
+#, fuzzy
+#~ msgid "&Cascade Windows"
+#~ msgstr "Trapgewijs"
+
+#, fuzzy
+#~ msgid "Cascade &Maximized"
+#~ msgstr "Ge&maximaliseerde vensters trapsgewijs schikken"
+
+#, fuzzy
+#~ msgid "&Tile Windows"
+#~ msgstr "&Terminal"
+
+#, fuzzy
+#~ msgid "&Auto Tile"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Anodine's Full Grid"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Pragma's Horizontal 4-Grid"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Pragma's Vertical 4-Grid"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Pragma's Horizontal 6-Grid"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Pragma's Vertical 6-Grid"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Pragma's Horizontal 9-Grid"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Pragma's Vertical 9-Grid"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Expand &Vertically"
+#~ msgstr "&Verticaal verlengen"
+
+#, fuzzy
+#~ msgid "Expand &Horizontally"
+#~ msgstr "&Horizontaal verbreden"
+
+#, fuzzy
+#~ msgid "Mi&nimize All"
+#~ msgstr "M&inimaliseren"
+
+#, fuzzy
+#~ msgid "What's this?"
+#~ msgstr "is?"
+
+#, fuzzy
+#~ msgid "Notify List"
+#~ msgstr "Notificatie lijst"
+
+#, fuzzy
+#~ msgid "Part All Channels"
+#~ msgstr "Totaal"
+
+#, fuzzy
+#~ msgid "Close All Queries"
+#~ msgstr "Beginwaarde"
+
+#, fuzzy
+#~ msgid "Unhighlight All Windows"
+#~ msgstr "M&inimaliseren"
+
+#, fuzzy
+#~ msgid "Unhighlight All Channels"
+#~ msgstr "Totaal"
+
+#, fuzzy
+#~ msgid "Unhighlight All Queries"
+#~ msgstr "Beginwaarde"
+
+#, fuzzy
+#~ msgid "Registered as"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "On <b>"
+#~ msgstr "aan<b>"
+
+#, fuzzy
+#~ msgid "Using server <b>%1</b>"
+#~ msgstr "<hr><nobr><b> s</b>"
+
+#, fuzzy
+#~ msgid "Confirmation - KVIrc"
+#~ msgstr "&Opties"
+
+#, fuzzy
+#~ msgid "&Always"
+#~ msgstr "Alias"
+
+#, fuzzy
+#~ msgid "channels"
+#~ msgstr "Annuleren"
+
+#, fuzzy
+#~ msgid "query"
+#~ msgstr "Ondervraging"
+
+#, fuzzy
+#~ msgid "queries"
+#~ msgstr "Ondervraging"
+
+#, fuzzy
+#~ msgid "Connected since"
+#~ msgstr "Bezig met verbinden"
+
+#, fuzzy
+#~ msgid "Online for"
+#~ msgstr "Online"
+
+#, fuzzy
+#~ msgid "Server idle for"
+#~ msgstr "Server"
+
+#, fuzzy
+#~ msgid "Script"
+#~ msgstr "Beschrijving"
+
+#, fuzzy
+#~ msgid "The file %s already exists.<br>Do you wish to overwrite it?"
+#~ msgstr ""
+#~ "file s\n"
+#~ " Overschrijven it?"
+
+#, fuzzy
+#~ msgid "File Exists - KVIrc"
+#~ msgstr "Bestand bestaat reeds"
+
+#, fuzzy
+#~ msgid "Channel Modes"
+#~ msgstr "Kanaal mode"
+
+#, fuzzy
+#~ msgid "There are active connections, are you sure you wish to "
+#~ msgstr "nee actief"
+
+#, fuzzy
+#~ msgid "quit KVIrc?"
+#~ msgstr "Afsluiten"
+
+#, fuzzy
+#~ msgid "Show %1"
+#~ msgstr "Naa&r voorgrond de"
+
+#, fuzzy
+#~ msgid "Away Indicator"
+#~ msgstr "Alias"
+
+#, fuzzy
+#~ msgid "Away since"
+#~ msgstr "Bijnaam"
+
+#, fuzzy
+#~ msgid "Double click to leave away mode"
+#~ msgstr "<br> naar"
+
+#, fuzzy
+#~ msgid "Double click to enter away mode"
+#~ msgstr "naar<br>"
+
+#, fuzzy
+#~ msgid "Lag measure not available yet"
+#~ msgstr "Functie niet beschikbaar"
+
+#, fuzzy
+#~ msgid "Double click to enable it"
+#~ msgstr "<br> naar"
+
+#, fuzzy
+#~ msgid "Lag Indicator"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid "Show total connection time"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "Connection Timer"
+#~ msgstr "Maximale tijd om te verbinden overschreden"
+
+#, fuzzy
+#~ msgid "Unloadable: %s"
+#~ msgstr "module s"
+
+#, fuzzy
+#~ msgid "Choose a File - KVIrc"
+#~ msgstr "file naar"
+
+#, fuzzy
+#~ msgid "A&dd"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "Joined on <b>%1</b>"
+#~ msgstr "s<nobr> aan<b> s</b></nobr>"
+
+#, fuzzy
+#~ msgid "Quiet for <b>%1h %2m %3s</b>"
+#~ msgstr "s<nobr> sinds<b> s</b></nobr>"
+
+#, fuzzy
+#~ msgid "Cryptography/text transformation"
+#~ msgstr "tekst"
+
+#, fuzzy
+#~ msgid "Use the crypt engine"
+#~ msgstr "Gebruik de"
+
+#, fuzzy
+#~ msgid "Encrypt key:"
+#~ msgstr "Versleutelen:"
+
+#, fuzzy
+#~ msgid "Hex"
+#~ msgstr "Hexidecimaal"
+
+#, fuzzy
+#~ msgid "Enable decryption"
+#~ msgstr "Activeren"
+
+#, fuzzy
+#~ msgid "Sorry, no crypt engines available"
+#~ msgstr "Helaas nee"
+
+#, fuzzy
+#~ msgid "Crypt: Can't initialize the engine :%s"
+#~ msgstr "de"
+
+#, fuzzy
+#~ msgid ""
+#~ "Crypt: You have to enable encryption and/or decryption for the engine to "
+#~ "work"
+#~ msgstr "U naar encryptie en of voor de naar"
+
+#, fuzzy
+#~ msgid "Choose image ..."
+#~ msgstr "file."
+
+#, fuzzy
+#~ msgid "Builtin images"
+#~ msgstr "Achtergrondafbeelding"
+
+#, fuzzy
+#~ msgid "Small icons"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "directory"
+#~ msgstr "Map"
+
+#, fuzzy
+#~ msgid "bytes"
+#~ msgstr "ja"
+
+#, fuzzy
+#~ msgid "<b><font color=\"#EAEAEA\" size=\"-1\">Find Text</font></b>"
+#~ msgstr "<nobr><font color=\"%s\"><b> Help venster</b></font></nobr>"
+
+#, fuzzy
+#~ msgid "E&xtended regexp."
+#~ msgstr "Bestand naam:"
+
+#, fuzzy
+#~ msgid "C&ase sensitive"
+#~ msgstr "Plakken"
+
+#, fuzzy
+#~ msgid "Find &Prev."
+#~ msgstr "Zoeken"
+
+#, fuzzy
+#~ msgid "&Find Next"
+#~ msgstr "Algemene"
+
+#, fuzzy
+#~ msgid "Set &All"
+#~ msgstr "Alles selecteren"
+
+#, fuzzy
+#~ msgid "Set &None"
+#~ msgstr "(Geen)"
+
+#, fuzzy
+#~ msgid "&Load From..."
+#~ msgstr "Bezig met laden van de iconen..."
+
+#, fuzzy
+#~ msgid "&Save As..."
+#~ msgstr "Opsl&aan."
+
+#, fuzzy
+#~ msgid "Filter"
+#~ msgstr "Filter"
+
+#, fuzzy
+#~ msgid "Select a Filter File"
+#~ msgstr "Selecteren"
+
+#, fuzzy
+#~ msgid "Can't open the filter file %s for reading."
+#~ msgstr "de file s voor"
+
+#, fuzzy
+#~ msgid "Select a Name for the Filter File"
+#~ msgstr "Selecteren naam voor de"
+
+#, fuzzy
+#~ msgid "Failed to write the filter file %s (IO Error)"
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Can't open the filter file %s for writing"
+#~ msgstr "de file s voor"
+
+#, fuzzy
+#~ msgid "Scri&pting"
+#~ msgstr "Beschrijving"
+
+#, fuzzy
+#~ msgid "&Tools"
+#~ msgstr "H&ulpmiddelen"
+
+#, fuzzy
+#~ msgid "&Settings"
+#~ msgstr "&Status"
+
+#, fuzzy
+#~ msgid "&Window"
+#~ msgstr "&Venster"
+
+#, fuzzy
+#~ msgid "&Help Browser (Panel)"
+#~ msgstr "Nieuw hulp"
+
+#, fuzzy
+#~ msgid "Help Browser (&Window)"
+#~ msgstr "Nieuw &MDI hulp"
+
+#, fuzzy
+#~ msgid "&Tip of the Day"
+#~ msgstr "Wist u..."
+
+#, fuzzy
+#~ msgid "About &KVIrc"
+#~ msgstr "Info over."
+
+#, fuzzy
+#~ msgid "Show StatusBar"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "New &Connection To"
+#~ msgstr "&Nieuw verbinding"
+
+#, fuzzy
+#~ msgid "Hide &Dock Icon"
+#~ msgstr "Verbergen"
+
+#, fuzzy
+#~ msgid "Show &Dock Icon"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "Show &Icon Table"
+#~ msgstr "P&ictogram"
+
+#, fuzzy
+#~ msgid "Open &Terminal"
+#~ msgstr "&Terminal"
+
+#~ msgid "Success"
+#~ msgstr "Succesvol"
+
+#~ msgid "Internal error"
+#~ msgstr "Interne fout"
+
+#~ msgid "Unknown command"
+#~ msgstr "Onbekend"
+
+#~ msgid "Missing closing brace"
+#~ msgstr "Ontbrekend sluitend haakje"
+
+#~ msgid "Unexpected end of command in string"
+#~ msgstr "Onverwacht einde van commando in de string"
+
+#~ msgid "Unexpected end of command in dictionary key"
+#~ msgstr "Onverwacht einde van commando in het sleutel woordenboek"
+
+#~ msgid "Unknown function"
+#~ msgstr "Onbekende functie"
+
+#~ msgid "Unexpected end of command in function parameters"
+#~ msgstr "Onverwahct einde van commando in de functie parameters"
+
+#~ msgid "Missing variable name"
+#~ msgstr "Ontbrekende variabele naam"
+
+#~ msgid "Left operand is not a number"
+#~ msgstr "Linkse operator is geen nummer"
+
+#~ msgid "Multiple operations not supported for numeric operators"
+#~ msgstr "Meerdere operaties niet beschikbaar voor numerieke operators"
+
+#~ msgid "Right operand is not a number"
+#~ msgstr "Rechtse operand is geen nummer"
+
+#~ msgid "Unterminated expression (missing ')' ?)"
+#~ msgstr "Onbeeindigde expressie (ontbreken van een ')' ?)"
+
+#~ msgid "Unexpected character"
+#~ msgstr "Onverwacht karakter"
+
+#~ msgid "No host to resolve"
+#~ msgstr "Geen host om om te zetten"
+
+#~ msgid "(DNS Internal) Unsupported address family"
+#~ msgstr "(DNS intern) Ongesupporteerde adres familie"
+
+#~ msgid "Valid name but the host has no IP address"
+#~ msgstr "Geldige naam maar de host heeft geen IP adres"
+
+#~ msgid "Unrecoverable nameserver error (crashed ?)"
+#~ msgstr "Onherstelbare naamserver error (vastgelopen ?)"
+
+#~ msgid "Dns temporaneous fault (try again)"
+#~ msgstr "Dns tijdelijke fout (probeer opnieuw)"
+
+#~ msgid "(DNS Internal) Bad flags"
+#~ msgstr "(DNS intern) Verkeerde flags"
+
+#~ msgid "(DNS Internal) Out of memory"
+#~ msgstr "(DNS intern) Gebrek aan geheugen"
+
+#~ msgid "(DNS Internal) Service not supported"
+#~ msgstr "(DNS intern) Service niet beschikbaar"
+
+#~ msgid "Unknown node (host not found)"
+#~ msgstr "Onbekende node (host niet gevonden)"
+
+#~ msgid "(DNS Internal) Unsupported socket type"
+#~ msgstr "(DNS intern) ongesupporteerd socket type"
+
+#~ msgid "Dns query failed"
+#~ msgstr "Dns vraag mislukt"
+
+#~ msgid "This KVIrc executable has no IPV6 support"
+#~ msgstr "De KVIrc executabele heeft geen IPV6 support"
+
+#~ msgid "Host not found"
+#~ msgstr "Host werd niet gevonden"
+
+#~ msgid "(DNS Internal) IPC failure (slave data corrupted)"
+#~ msgstr "(DNS intern)"
+
+#~ msgid "Invalid IP address"
+#~ msgstr "Ongeldig IP adres"
+
+#~ msgid "Failed to put the socket in non blocking mode"
+#~ msgstr "Mislukt om de socket in niet blokkerende mode te zetten"
+
+#~ msgid "Bad file descriptor"
+#~ msgstr "Slechte bestands beschrijving"
+
+#~ msgid "Out of address space"
+#~ msgstr "Gebrek aan aders plaatsen"
+
+#~ msgid "Connection refused"
+#~ msgstr "Verbinding gewijgerd"
+
+#~ msgid "Kernel networking panic"
+#~ msgstr "Kernel netwerk panic"
+
+#~ msgid "Connection timed out"
+#~ msgstr "Maximale tijd om te verbinden overschreden"
+
+#~ msgid "Network is unreachable"
+#~ msgstr "Netwerk is onbereikbaar"
+
+#~ msgid "Broken pipe"
+#~ msgstr "Gebroken communicatiepijp"
+
+#~ msgid "Invalid proxy address"
+#~ msgstr "Ongeldig proxy adres"
+
+#~ msgid "Remote end has closed the connection"
+#~ msgstr "De andere kant heeft de verbinding verbroken"
+
+#~ msgid "No such module command"
+#~ msgstr "Geen zo een module commando"
+
+#~ msgid "No such module function"
+#~ msgstr "Geen zo een module functie"
+
+#~ msgid "Left operand is not a dictionary reference"
+#~ msgstr "Linkse operand is geen woordenboek referentie"
+
+#~ msgid "Right operand is not a dictionary reference"
+#~ msgstr "Rechtse operand is geen woordenboek referentie"
+
+#~ msgid "Missing object class name"
+#~ msgstr "Ontbrekende objekt class naam"
+
+#~ msgid "No such object class"
+#~ msgstr "Geen zo een objekt klasse"
+
+#~ msgid "No such object"
+#~ msgstr "Geen zo een objekt"
+
+#~ msgid "No such object function"
+#~ msgstr "Geen zo een objekt funtie"
+
+#~ msgid "Invalid left operand"
+#~ msgstr "Ongeldige linkse operand"
+
+#~ msgid "Integer parameter expected"
+#~ msgstr "Integer parameter verwacht"
+
+#~ msgid "Invalid parameter"
+#~ msgstr "Ongeldige parameter"
+
+#~ msgid "No such file"
+#~ msgstr "Bestand bestaat niet"
+
+#~ msgid "Open brace expected"
+#~ msgstr "Open haakje verwaht"
+
+#~ msgid "Unrecognized proxy reply"
+#~ msgstr "onherkend proxy antwoord"
+
+#~ msgid "Proxy response: auth failed: access denied"
+#~ msgstr "Proxy antwoord: auth mislukt: toegang geweigerd"
+
+#~ msgid "Proxy response: No acceptable auth method: request rejected"
+#~ msgstr "Proxy antword: geen aanvaardbare methode: aanvraag verworpen"
+
+#~ msgid "Proxy response: request failed"
+#~ msgstr "Proxy antwoord: aanvraag mislukt"
+
+#~ msgid "Proxy response: ident failed"
+#~ msgstr "Proxy antwoord: ident mislukt"
+
+#~ msgid "Proxy response: ident not matching"
+#~ msgstr "Proxy antwoord: ident stemt niet overeen"
+
+#~ msgid "Proxy response: general SOCKS failure"
+#~ msgstr "Proxy antwoord: algemeen SOCKS fout"
+
+#~ msgid "Proxy response: connection not allowed"
+#~ msgstr "Proxy antwoord: verbinding niet toegestaan"
+
+#~ msgid "Proxy response: network unreachable"
+#~ msgstr "Proxy antwoord: netwerk onbereikbaar"
+
+#~ msgid "Proxy response: host unreachable"
+#~ msgstr "Proxy antwoord: host onbereikbaar"
+
+#~ msgid "Proxy response: connection refused"
+#~ msgstr "Proxy antwoord: verbinding geweigerd"
+
+#~ msgid "Proxy response: TTL expired"
+#~ msgstr "Proxy antwoord: TTL vervallen"
+
+#~ msgid "Proxy response: command not supported"
+#~ msgstr "Proxy antwoord: commando niet supporteerd"
+
+#~ msgid "Proxy response: address type not supported"
+#~ msgstr "Proxy antwoord: address type niet supported"
+
+#~ msgid "Proxy response: invalid address"
+#~ msgstr "Proxy antwoord: ongeldig adres"
+
+#~ msgid "Invalid port number"
+#~ msgstr "ongeldig poort nummer"
+
+#~ msgid "Socket not connected"
+#~ msgstr "Socket niet verbonden"
+
+#~ msgid "Insufficient resources to complete the operation"
+#~ msgstr "Onvoldoende bronnen om de operatie af te werken"
+
+#~ msgid "Can't resolve the localhost name"
+#~ msgstr "Kan de localhost naam niet omzetten"
+
+#~ msgid "Unsupported image format"
+#~ msgstr "Ongeldige afbeelding formaat"
+
+#~ msgid "Can't open file for appending"
+#~ msgstr "Kan het bestand niet openen om zaken toe te voegen"
+
+#~ msgid "Can't open file for writing"
+#~ msgstr "Kan het bestand niet openen om naar te schrijven"
+
+#~ msgid "File I/O error"
+#~ msgstr "Bestand I/O fout"
+
+#~ msgid "Can't open file for reading"
+#~ msgstr "Kan het bestand niet openen om te lezen"
+
+#~ msgid "Can't send a zero-size file"
+#~ msgstr "Kan geen 0 byte groot bestand sturen"
+
+#~ msgid "Missing popup name"
+#~ msgstr "Ontbrekende popup naam"
+
+#~ msgid "'item', 'popup', 'label' or 'separator' keyword expected"
+#~ msgstr "'item' 'popup', 'label' of 'separator' keywoord verwacht"
+
+#~ msgid "Self modification not allowed"
+#~ msgstr "Eigen veranderingen niet toegestaan"
+
+#~ msgid "Feature not available"
+#~ msgstr "Functie niet beschikbaar"
+
+#, fuzzy
+#~ msgid "Unexpected characters in array index"
+#~ msgstr "Onverwacht karakter"
+
+#, fuzzy
+#~ msgid "Unexpected end in expression"
+#~ msgstr "Onverwacht einde van commando in de string"
+
+#, fuzzy
+#~ msgid "Unexpected end in array index"
+#~ msgstr "Onverwacht einde van commando in de string"
+
+#~ msgid "Connection thru HTTP proxy failed"
+#~ msgstr "Verbinding door HTTP proxy mislukt"
+
+#~ msgid "Case , match , regexp , default or break keyword expected"
+#~ msgstr "Case , match , regexp , default or break keywoord verwacht"
+
+#, fuzzy
+#~ msgid "Address already in use"
+#~ msgstr "s is"
+
+#, fuzzy
+#~ msgid "Can't assign the requested address"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Connection reset by peer"
+#~ msgstr "Verbinding gewijgerd"
+
+#, fuzzy
+#~ msgid "Variable expected"
+#~ msgstr "Open haakje verwaht"
+
+#, fuzzy
+#~ msgid "This executable has been compiled without SSL support"
+#~ msgstr "De KVIrc executabele heeft geen IPV6 support"
+
+#, fuzzy
+#~ msgid "Operation aborted"
+#~ msgstr "Verbinding geanuleerd"
+
+#, fuzzy
+#~ msgid "Unexpected token"
+#~ msgstr "Onverwacht karakter"
+
+#, fuzzy
+#~ msgid "%u h %u m %u s"
+#~ msgstr "s s idle tijd"
+
+#, fuzzy
+#~ msgid "%u h %u%u m %u%u s"
+#~ msgstr "s s idle tijd"
+
+#, fuzzy
+#~ msgid "%u m %u s"
+#~ msgstr "s s idle tijd"
+
+#, fuzzy
+#~ msgid "%u m %u%u s"
+#~ msgstr "s s idle tijd"
+
+#, fuzzy
+#~ msgid "%u s"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "%u d %u h %u m %u s"
+#~ msgstr "s s idle tijd"
+
+#, fuzzy
+#~ msgid "%u d %u%u h %u%u m %u%u s"
+#~ msgstr "s s idle tijd"
+
+#, fuzzy
+#~ msgid "Select color"
+#~ msgstr "Alles selecteren"
+
+#, fuzzy
+#~ msgid "&Basic colors"
+#~ msgstr "Cursor"
+
+#, fuzzy
+#~ msgid "&Custom colors"
+#~ msgstr "Cursor"
+
+#, fuzzy
+#~ msgid "Select Font"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "&Font"
+#~ msgstr "Lettertype"
+
+#, fuzzy
+#~ msgid "&Size"
+#~ msgstr "Grootte"
+
+#, fuzzy
+#~ msgid "Scr&ipt"
+#~ msgstr "Beschrijving"
+
+#, fuzzy
+#~ msgid "Parent Directory"
+#~ msgstr "Map"
+
+#, fuzzy
+#~ msgid "New Directory"
+#~ msgstr "Map"
+
+#, fuzzy
+#~ msgid "Bookmarks"
+#~ msgstr "Bladwijzers"
+
+#, fuzzy
+#~ msgid "Add Bookmark"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "&Edit Bookmarks"
+#~ msgstr "Bladwijzers"
+
+#, fuzzy
+#~ msgid "Sorting"
+#~ msgstr "Beschrijving"
+
+#, fuzzy
+#~ msgid "By Name"
+#~ msgstr "Naam:"
+
+#, fuzzy
+#~ msgid "By Size"
+#~ msgstr "Grootte"
+
+#, fuzzy
+#~ msgid "Reverse"
+#~ msgstr "Server"
+
+#, fuzzy
+#~ msgid "Directories First"
+#~ msgstr "Map"
+
+#, fuzzy
+#~ msgid "Case Insensitive"
+#~ msgstr "Plakken"
+
+#, fuzzy
+#~ msgid "Short View"
+#~ msgstr "samenvoegen"
+
+#, fuzzy
+#~ msgid "Show Hidden Files"
+#~ msgstr "Tonen verborgen"
+
+#, fuzzy
+#~ msgid "Show Preview"
+#~ msgstr "&Venster"
+
+#, fuzzy
+#~ msgid "Separate Directories"
+#~ msgstr "Scheider"
+
+#, fuzzy
+#~ msgid "Desktop"
+#~ msgstr "Verzoeken"
+
+#, fuzzy
+#~ msgid "Home Directory"
+#~ msgstr "Persoonlijke map"
+
+#, fuzzy
+#~ msgid "Network"
+#~ msgstr "Netwerk"
+
+#, fuzzy
+#~ msgid "New Directory..."
+#~ msgstr "Map"
+
+#, fuzzy
+#~ msgid "Small Icons"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "Properties..."
+#~ msgstr "Eigenschappen"
+
+#, fuzzy
+#~ msgid "&Filter:"
+#~ msgstr "Filter"
+
+#, fuzzy
+#~ msgid "Directory"
+#~ msgstr "Map"
+
+#~ msgid "Fifo"
+#~ msgstr "Fifo"
+
+#, fuzzy
+#~ msgid "Char device"
+#~ msgstr "Karakter"
+
+#~ msgid "Octet stream (unknown)"
+#~ msgstr "Octet stream (onbekend)"
+
+#~ msgid "Invalid crypt engine"
+#~ msgstr "Ongeldige encryptie"
+
+#~ msgid "WARNING : Can not load image library %s"
+#~ msgstr "WAARSCHUWING : kan de afbeelding bibliotheek niet openen %s"
+
+#, fuzzy
+#~ msgid "The specified network has no server entries"
+#~ msgstr "venster is"
+
+#, fuzzy
+#~ msgid "Aborted"
+#~ msgstr "Afbreken"
+
+#, fuzzy
+#~ msgid "No request"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Unsupported protocol %1"
+#~ msgstr "Gebruik"
+
+#, fuzzy
+#~ msgid "Unable to start the DNS lookup"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid "Host %s resolved to %s"
+#~ msgstr "Proxy naar"
+
+#, fuzzy
+#~ msgid "Unable to start the request slave thread"
+#~ msgstr "de"
+
+#, fuzzy
+#~ msgid "Contacting host %s on port %u"
+#~ msgstr "s aan poort"
+
+#, fuzzy
+#~ msgid "Connection established, sending request"
+#~ msgstr "Verbinding s s"
+
+#, fuzzy
+#~ msgid "Can't open file \"%s\" for writing"
+#~ msgstr "de file s voor"
+
+#, fuzzy
+#~ msgid "Invalid HTTP response: %s"
+#~ msgstr "Ongeldig IP adres"
+
+#, fuzzy
+#~ msgid "Select error: %s (errno=%d)"
+#~ msgstr "Selecteren s"
+
+#, fuzzy
+#~ msgid "Operation timed out"
+#~ msgstr "Handeling"
+
+#, fuzzy
+#~ msgid "Failed to enter non blocking mode"
+#~ msgstr "Faalde naar"
+
+#, fuzzy
+#~ msgid "Connect error: %s (errno=%d)"
+#~ msgstr "Verbinden s"
+
+#, fuzzy
+#~ msgid "Write error: %s (errno=%d)"
+#~ msgstr "Schrijven s"
+
+#, fuzzy
+#~ msgid "Operation timed out (while selecting for read)"
+#~ msgstr "Handeling voor"
+
+#, fuzzy
+#~ msgid "Read error: %s (errno=%d)"
+#~ msgstr "Gelezen s"
+
+#, fuzzy
+#~ msgid "Encoding"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid "Reconnection Options"
+#~ msgstr "Verbinding"
+
+#, fuzzy
+#~ msgid "Usage"
+#~ msgstr "Bericht"
+
+#, fuzzy
+#~ msgid "message"
+#~ msgstr "Bericht"
+
+#, fuzzy
+#~ msgid "Usage:"
+#~ msgstr "Bericht"
+
+#, fuzzy
+#~ msgid "You must be connected to a server"
+#~ msgstr "U bent niet met een server verbonden"
+
+#, fuzzy
+#~ msgid "This is not a channel window"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "Unsupported type: $0"
+#~ msgstr "Gebruik"
+
+#, fuzzy
+#~ msgid "No such user: $0"
+#~ msgstr "Geen zo een module"
+
+#, fuzzy
+#~ msgid "Stop Highlighting (Local)"
+#~ msgstr "Activeren URL-adres"
+
+#, fuzzy
+#~ msgid "Start Highlighting (Local)"
+#~ msgstr "Activeren URL-adres"
+
+#, fuzzy
+#~ msgid "Always Highlight"
+#~ msgstr "Activeren URL-adres"
+
+#, fuzzy
+#~ msgid "Highlight as"
+#~ msgstr "M&inimaliseren"
+
+#, fuzzy
+#~ msgid "Stop Highlighting"
+#~ msgstr "Activeren URL-adres"
+
+#, fuzzy
+#~ msgid "is being ignored"
+#~ msgstr "genegeerd"
+
+#, fuzzy
+#~ msgid "is not being ignored"
+#~ msgstr "genegeerd"
+
+#, fuzzy
+#~ msgid "Ignore as"
+#~ msgstr "genegeerd"
+
+#, fuzzy
+#~ msgid "Unignore"
+#~ msgstr "genegeerd"
+
+#, fuzzy
+#~ msgid "is registered as"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "is in the notify list"
+#~ msgstr "Nee gebruikers de"
+
+#, fuzzy
+#~ msgid "is not registered"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Register"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Quick Registration"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "Register as"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Unregister"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Add to Notify"
+#~ msgstr "Notificatie lijst"
+
+#, fuzzy
+#~ msgid "Remove from Notify"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "Choose"
+#~ msgstr "Kiezen..."
+
+#, fuzzy
+#~ msgid "Choose Avatar Image File"
+#~ msgstr "file."
+
+#, fuzzy
+#~ msgid "Set as Default"
+#~ msgstr "standaard"
+
+#, fuzzy
+#~ msgid "Clear Default"
+#~ msgstr "standaard"
+
+#, fuzzy
+#~ msgid "Channel Owner"
+#~ msgstr "Kanaal mode"
+
+#, fuzzy
+#~ msgid "Channel Administrator"
+#~ msgstr "notificatie:"
+
+#, fuzzy
+#~ msgid "Channel Operator"
+#~ msgstr "Scheider"
+
+#, fuzzy
+#~ msgid "Half Operator"
+#~ msgstr "Scheider"
+
+#, fuzzy
+#~ msgid "User Operator"
+#~ msgstr "Scheider"
+
+#, fuzzy
+#~ msgid "Normal User"
+#~ msgstr "Normaal"
+
+#, fuzzy
+#~ msgid "Ban"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "Multiple Users"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "&Ban"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "idle time"
+#~ msgstr "Bestandsnaam"
+
+#, fuzzy
+#~ msgid "&Information"
+#~ msgstr "Algemene opties"
+
+#, fuzzy
+#~ msgid "Mask for"
+#~ msgstr "Alias"
+
+#, fuzzy
+#~ msgid "&Control"
+#~ msgstr "Verbinden"
+
+#, fuzzy
+#~ msgid "O&wner"
+#~ msgstr "In&voegen"
+
+#, fuzzy
+#~ msgid "&Deowner"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "&Administrator"
+#~ msgstr "notificatie:"
+
+#, fuzzy
+#~ msgid "&Deadministrator"
+#~ msgstr "notificatie:"
+
+#, fuzzy
+#~ msgid "&Op"
+#~ msgstr "&Openen"
+
+#, fuzzy
+#~ msgid "&Deop"
+#~ msgstr "Verzoeken"
+
+#, fuzzy
+#~ msgid "&Halfop"
+#~ msgstr "Scheider"
+
+#, fuzzy
+#~ msgid "&Dehalfop"
+#~ msgstr "Scheider"
+
+#, fuzzy
+#~ msgid "D&evoice"
+#~ msgstr "Karakter"
+
+#, fuzzy
+#~ msgid "&Kick"
+#~ msgstr "Bijnaam"
+
+#, fuzzy
+#~ msgid "K&ick"
+#~ msgstr "Bijnaam"
+
+#, fuzzy
+#~ msgid "With..."
+#~ msgstr "Be&werken"
+
+#, fuzzy
+#~ msgid "Kick Reason"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "Kick/Ban"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "Kick/Ban Reason"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "Enter a kick/ban reason"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "&Kick/Ban"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "&Query"
+#~ msgstr "Ondervraging"
+
+#, fuzzy
+#~ msgid "&Registration"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "Ig&nore"
+#~ msgstr "genegeerd"
+
+#, fuzzy
+#~ msgid "Notify Avatar"
+#~ msgstr "Notificatie lijst"
+
+#, fuzzy
+#~ msgid "&Part"
+#~ msgstr "Plakken"
+
+#, fuzzy
+#~ msgid "Channels"
+#~ msgstr "Annuleren"
+
+#, fuzzy
+#~ msgid "&Join Channels..."
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "&Hop"
+#~ msgstr "&Help"
+
+#, fuzzy
+#~ msgid "l (Connections)"
+#~ msgstr "Verbinding"
+
+#, fuzzy
+#~ msgid "o (Operators)"
+#~ msgstr "Scheider"
+
+#, fuzzy
+#~ msgid "t (Connection stats ?)"
+#~ msgstr "verbinding"
+
+#, fuzzy
+#~ msgid "Secure Chat with"
+#~ msgstr "is?"
+
+#, fuzzy
+#~ msgid "Send to"
+#~ msgstr "(Geen)"
+
+#, fuzzy
+#~ msgid "Reverse Send to"
+#~ msgstr "Server"
+
+#, fuzzy
+#~ msgid "TDCC Send to"
+#~ msgstr "(Geen)"
+
+#, fuzzy
+#~ msgid "TDCC Reverse Send to"
+#~ msgstr "Server"
+
+#, fuzzy
+#~ msgid "&Ignore"
+#~ msgstr "genegeerd"
+
+#, fuzzy
+#~ msgid "Logging to"
+#~ msgstr "Loggen uit."
+
+#, fuzzy
+#~ msgid "Flush Log File"
+#~ msgstr "file"
+
+#, fuzzy
+#~ msgid "Stop Logging"
+#~ msgstr "Loggen uit."
+
+#, fuzzy
+#~ msgid "Not Logging"
+#~ msgstr "Loggen uit."
+
+#, fuzzy
+#~ msgid "Include Existing Buffer"
+#~ msgstr "buffer:"
+
+#, fuzzy
+#~ msgid "Log To..."
+#~ msgstr "Bezig met laden van de iconen..."
+
+#, fuzzy
+#~ msgid "Notify avatar"
+#~ msgstr "Notificatie lijst"
+
+#, fuzzy
+#~ msgid "The config file with id '%s' is not open"
+#~ msgstr "file s is"
+
+#, fuzzy
+#~ msgid "The config file with id '%s' is read only"
+#~ msgstr "file s is"
+
+#, fuzzy
+#~ msgid "No nickname specified"
+#~ msgstr "Geen naam opgegeven"
+
+#, fuzzy
+#~ msgid "No netmask specified"
+#~ msgstr "Nee masker"
+
+#, fuzzy
+#~ msgid "No property name specified"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "Missing property name"
+#~ msgstr "Ontbrekende popup naam"
+
+#, fuzzy
+#~ msgid "The specified window (%s) is not a channel/query/DCC chat"
+#~ msgstr "venster is"
+
+#, fuzzy
+#~ msgid "No file specified"
+#~ msgstr "Nee bestandsnaam"
+
+#, fuzzy
+#~ msgid "Window %s not found"
+#~ msgstr "Venster s"
+
+#, fuzzy
+#~ msgid "Can't log to file %s"
+#~ msgstr "naar file"
+
+#, fuzzy
+#~ msgid "Window with id '%s' not found, returning empty string"
+#~ msgstr "Venster door id s leeg"
+
+#, fuzzy
+#~ msgid "Invalid progress value (%s)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Error:not enough parameters!"
+#~ msgstr "Niet voldoende parameters"
+
+#, fuzzy
+#~ msgid "The (%s) object is not a pixmap"
+#~ msgstr "bron s is"
+
+#, fuzzy
+#~ msgid "Invalid index parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Invalid parameter"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Can't find the object "
+#~ msgstr "s de"
+
+#, fuzzy
+#~ msgid "Can't set a non-widget object"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Can't find the tab object "
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Can't find the widget(%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Invalid marging value (%s)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "This object is not a toolbutton item!"
+#~ msgstr "bron s is"
+
+#, fuzzy
+#~ msgid "No value to insert"
+#~ msgstr "Nee naar"
+
+#, fuzzy
+#~ msgid "Invalid index(%s)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "No index specified"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "Invalid index (%s)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Index %u out of range"
+#~ msgstr "Index"
+
+#, fuzzy
+#~ msgid "Invalid resize mode (%s): defaulting to Auto"
+#~ msgstr "s naar"
+
+#, fuzzy
+#~ msgid "Invalid margin value (%s)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Invalid spacing value (%s)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Invalid stretch value (%s)"
+#~ msgstr "IRC url s"
+
+#, fuzzy
+#~ msgid "Invalid from_row parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Invalid to_row parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Invalid from_column parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Invalid to_column parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Invalid parameters"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Can't find the widget/pixmap (%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Can't find the widget object to remove (%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Can't remove a non-widget object"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Can't find the widget (%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Invalid zoom value (%s)"
+#~ msgstr "IRC url s"
+
+#, fuzzy
+#~ msgid "Invalid depth value (%s)"
+#~ msgstr "IRC url s"
+
+#, fuzzy
+#~ msgid "Invalid value (%s)"
+#~ msgstr "IRC url s"
+
+#, fuzzy
+#~ msgid "Invalid paragraph value (%s)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "There is no widget"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid " I can't find the specified file."
+#~ msgstr "de commando venster door id s"
+
+#, fuzzy
+#~ msgid " I cannot read the file."
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Class %s is undefined"
+#~ msgstr "s is"
+
+#, fuzzy
+#~ msgid "The source object '%s' is not existing"
+#~ msgstr "bron s is"
+
+#, fuzzy
+#~ msgid "The target object '%s' is not existing"
+#~ msgstr "s is"
+
+#, fuzzy
+#~ msgid "No signal '%s' to disconnect"
+#~ msgstr "Nee s naar"
+
+#, fuzzy
+#~ msgid "No destination specified"
+#~ msgstr "Geen naam opgegeven"
+
+#, fuzzy
+#~ msgid "Can't find the destination widget/pixmap (%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "No source specified"
+#~ msgstr "Nee bestandsnaam"
+
+#, fuzzy
+#~ msgid "Can't find the source widget/pixmap (%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Invalid x parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Invalid y parameter (%s)"
+#~ msgstr "Ongeldige parameter"
+
+#, fuzzy
+#~ msgid "Can't find the listviewitem object to add (%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Invalid column (%s)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Unknown alignment: %s"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Unknown frame / shadow style: %s"
+#~ msgstr "Onbekend stijl"
+
+#, fuzzy
+#~ msgid "Hey ! You wanna know my echo mode or what ?"
+#~ msgstr "U of?"
+
+#, fuzzy
+#~ msgid "Unknown echo mode"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Invalid object."
+#~ msgstr "ongeldig poort nummer"
+
+#, fuzzy
+#~ msgid "Can't setStretchableWidget a non-widget object."
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Can't find the popupmenu object to add (%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Can't find the widget object (%s)"
+#~ msgstr "de IP"
+
+#, fuzzy
+#~ msgid "Invalid columns value (%s)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Invalid size value (%s)"
+#~ msgstr "IRC url s"
+
+#, fuzzy
+#~ msgid "Invalid icon identifier"
+#~ msgstr "Ongeldige encryptie"
+
+#, fuzzy
+#~ msgid ""
+#~ "Can't set the current avatar to '%s': failed to start the http transfer"
+#~ msgstr "de naar s de nee"
+
+#, fuzzy
+#~ msgid "Can't set the current avatar to '%s': can't load the image"
+#~ msgstr "de naar s de nee"
+
+#, fuzzy
+#~ msgid "Can't find the window with id '%s'"
+#~ msgstr "de commando venster door id s"
+
+#, fuzzy
+#~ msgid "The specified window (%s) is not a channel"
+#~ msgstr "venster is"
+
+#, fuzzy
+#~ msgid "No button name specified!"
+#~ msgstr "Nee naam"
+
+#, fuzzy
+#~ msgid "No separator name specified"
+#~ msgstr "Nee naam"
+
+#, fuzzy
+#~ msgid "No toolbar id specified"
+#~ msgstr "Nee naam"
+
+#, fuzzy
+#~ msgid "The action \"%s\" doesn't exist"
+#~ msgstr "file s is"
+
+#, fuzzy
+#~ msgid "Invalid IRC context id '%s'"
+#~ msgstr "IRC id s"
+
+#, fuzzy
+#~ msgid "Background not found %s "
+#~ msgstr "Achtergrondkleur"
+
+#, fuzzy
+#~ msgid "Mask %s is already used to identify user %s"
+#~ msgstr "s is gebruikt naar gebruiker"
+
+#, fuzzy
+#~ msgid "User not found (%s)"
+#~ msgstr "Gebruiker s"
+
+#, fuzzy
+#~ msgid "User %s not found"
+#~ msgstr "Gebruiker s"
+
+#, fuzzy
+#~ msgid "Mask %s already used to identify user %s"
+#~ msgstr "s gebruikt naar gebruiker"
+
+#, fuzzy
+#~ msgid "Mask %s not found"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Sound file '%s' not found"
+#~ msgstr "Venster s"
+
+#, fuzzy
+#~ msgid "The specified name is empty"
+#~ msgstr "venster is"
+
+#, fuzzy
+#~ msgid "The specified visible name is empty"
+#~ msgstr "file grootte is"
+
+#, fuzzy
+#~ msgid "The specified description is empty"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "The specified KVIrc version \"%s\" is not a valid version string"
+#~ msgstr "s is"
+
+#, fuzzy
+#~ msgid "Failed to copy %s to %s"
+#~ msgstr "Faalde naar s"
+
+#, fuzzy
+#~ msgid "Failed to write to file %s"
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Failed to rename %s to %s"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid "Failed to make the directory %s"
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Failed to remove the file %s"
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Failed to remove the directory %s"
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "The specified directory does not exist '%s'"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "Can't open the file \"%s\" for reading"
+#~ msgstr "de file s voor"
+
+#, fuzzy
+#~ msgid "Read error for file %s"
+#~ msgstr "Gelezen"
+
+#, fuzzy
+#~ msgid "No such options page class name"
+#~ msgstr "Geen zo een objekt klasse"
+
+#, fuzzy
+#~ msgid "%Q is not an integer"
+#~ msgstr "s is"
+
+#, fuzzy
+#~ msgid "Window with caption '%s' not found, returning 0"
+#~ msgstr "Venster door s"
+
+#, fuzzy
+#~ msgid "The specified UNIX time is not valid (%s)"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "The specified time format is not valid (%s)"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "No option named '%s'"
+#~ msgstr "Nee s"
+
+#, fuzzy
+#~ msgid "No option name specified"
+#~ msgstr "Nee naam"
+
+#, fuzzy
+#~ msgid "No link text specified"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "No command specified"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "Broken prologue code for menu '%s', error detail follows"
+#~ msgstr "Gebroken voor s"
+
+#, fuzzy
+#~ msgid "Broken expression for menu item '%Q', ignoring"
+#~ msgstr "Gebroken expressie voor item s"
+
+#, fuzzy
+#~ msgid "Can't find the external popup '%Q', ignoring"
+#~ msgstr "de localhost"
+
+#, fuzzy
+#~ msgid "Broken epilogue code for menu '%s', error details follow"
+#~ msgstr "Gebroken voor s"
+
+#, fuzzy
+#~ msgid "Function name expected"
+#~ msgstr "Functie naam"
+
+#, fuzzy
+#~ msgid "The catalogue %s was not loaded"
+#~ msgstr "file s is"
+
+#, fuzzy
+#~ msgid "Invalid icon specification '%s', using default"
+#~ msgstr "pictogram s"
+
+#, fuzzy
+#~ msgid "Missing icon number after the 'i' switch"
+#~ msgstr "pictogram de"
+
+#, fuzzy
+#~ msgid "Missing window ID after the 'w' switch"
+#~ msgstr "venster id de"
+
+#, fuzzy
+#~ msgid "No targets specified"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "No such object (%s)"
+#~ msgstr "Nee s"
+
+#, fuzzy
+#~ msgid "Invalid screen coordinates"
+#~ msgstr "Ongeldige encryptie"
+
+#, fuzzy
+#~ msgid "Invalid timeout delay '%s'"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Empty command block for timer '%s', timer not started"
+#~ msgstr "Leeg commando voor s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Internal error: Unable to add timer %s, insufficient system resources"
+#~ msgstr "naar toevoegen s"
+
+#, fuzzy
+#~ msgid "No such timer (%s)"
+#~ msgstr "Nee s"
+
+#, fuzzy
+#~ msgid "No such event (%s)"
+#~ msgstr "Nee s"
+
+#, fuzzy
+#~ msgid "No handler '%s' for raw numeric event '%d'"
+#~ msgstr "Nee s voor s"
+
+#, fuzzy
+#~ msgid "No handler '%s' for event '%s'"
+#~ msgstr "Nee s voor s"
+
+#, fuzzy
+#~ msgid "Failed to execute command '%s'"
+#~ msgstr "Faalde naar commando s"
+
+#, fuzzy
+#~ msgid "Invalid IRC url (%s)"
+#~ msgstr "IRC url s"
+
+#, fuzzy
+#~ msgid "The commandline for this url type seems to be broken (%s)"
+#~ msgstr "voor url naar s"
+
+#, fuzzy
+#~ msgid "No commandline specified for this type of url (%s)"
+#~ msgstr "Nee voor url s"
+
+#, fuzzy
+#~ msgid "Invalid pitch (%s): using default"
+#~ msgstr "zichtbaar naam"
+
+#, fuzzy
+#~ msgid "Invalid duration (%s): using default"
+#~ msgstr "pictogram s"
+
+#, fuzzy
+#~ msgid "Can't find the icon '%s'"
+#~ msgstr "s de"
+
+#, fuzzy
+#~ msgid "Window button '%s' not found"
+#~ msgstr "Venster s"
+
+#, fuzzy
+#~ msgid "Can't rebind the command sequence: missing window identifier"
+#~ msgstr "de commando venster de"
+
+#, fuzzy
+#~ msgid "Can't rebind the command sequence: window with id %s not found"
+#~ msgstr "de commando venster door id s"
+
+#, fuzzy
+#~ msgid "Unmatched parenthesis in expression body: ignoring trailing garbage"
+#~ msgstr "expressie"
+
+#, fuzzy
+#~ msgid "Error triggered from timer callback handler %c'%s'"
+#~ msgstr "Fout s"
+
+#, fuzzy
+#~ msgid "Timer callback handler '%s' is broken: killing"
+#~ msgstr "Timer s is"
+
+#, fuzzy
+#~ msgid "Initializing scripting engine..."
+#~ msgstr "Ongeldige encryptie"
+
+#, fuzzy
+#~ msgid "Loading actions..."
+#~ msgstr "Bezig met laden van de opties..."
+
+#~ msgid "Loading icons..."
+#~ msgstr "Bezig met laden van de iconen..."
+
+#~ msgid "Performing early initializations..."
+#~ msgstr "Bezig met vroege initialiasatie"
+
+#~ msgid "Loading window configuration database..."
+#~ msgstr "Bezig met laden van de venster configuratie..."
+
+#~ msgid "Loading server & proxy database..."
+#~ msgstr "Bezig met laden van de server & proxy database..."
+
+#~ msgid "Loading event handlers..."
+#~ msgstr "Bezig met laden van de 'event handlers'..."
+
+#, fuzzy
+#~ msgid "Loading raw event handlers..."
+#~ msgstr "Bezig met laden van de 'event handlers'..."
+
+#~ msgid "Loading popups..."
+#~ msgstr "Bezig met laden van de popups..."
+
+#, fuzzy
+#~ msgid "Loading toolbars..."
+#~ msgstr "Bezig met laden van de opties..."
+
+#~ msgid "Loading aliases..."
+#~ msgstr "Bezig met laden van de aliassen"
+
+#, fuzzy
+#~ msgid "Loading text icon associations..."
+#~ msgstr "Bezig met laden van de bestanden wissel configuratie."
+
+#~ msgid "Loading media types..."
+#~ msgstr "Bezig met laden van de media types..."
+
+#~ msgid "Loading registered users..."
+#~ msgstr "Bezig met laden van de geregistreerd gebruikers..."
+
+#, fuzzy
+#~ msgid "Loading registered channels..."
+#~ msgstr "Bezig met laden van de geregistreerd gebruikers..."
+
+#~ msgid "Loading file trader configuration..."
+#~ msgstr "Bezig met laden van de bestanden wissel configuratie."
+
+#~ msgid "Loading nick serv service configuration..."
+#~ msgstr "Bezig met laden van de nickserver configuratie..."
+
+#, fuzzy
+#~ msgid "Loading history entries..."
+#~ msgstr "Bezig met laden van de geregistreerd gebruikers..."
+
+#, fuzzy
+#~ msgid "Loading avatar cache..."
+#~ msgstr "Bezig met laden van de aliassen"
+
+#~ msgid "Creating internal structures..."
+#~ msgstr "Bezig met aanmaken van interne structuren..."
+
+#~ msgid "Starting up the engine..."
+#~ msgstr "De motor aanzetten..."
+
+#~ msgid "Have fun! :)"
+#~ msgstr "Veel plezier! :)"
+
+#, fuzzy
+#~ msgid "Show Crypto Controller"
+#~ msgstr "Omschakelen"
+
+#, fuzzy
+#~ msgid "Toggle Notify List"
+#~ msgstr "Omschakelen gebruikers lijst"
+
+#, fuzzy
+#~ msgid "&New Alias"
+#~ msgstr "Alias"
+
+#~ msgid "Loading options..."
+#~ msgstr "Bezig met laden van de opties..."
+
+#, fuzzy
+#~ msgid "defpopup: internal error"
+#~ msgstr "Interne fout"
+
+#, fuzzy
+#~ msgid "User Messages"
+#~ msgstr "Bericht verzenden"
+
+#, fuzzy
+#~ msgid "The specified window does not exist"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "The specified timeout is not valid, assuming 0"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "No url specified"
+#~ msgstr "Nee bestandsnaam"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %s"
+#~ msgstr "Faalde naar de status"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %Q"
+#~ msgstr "Faalde naar de status"
+
+#, fuzzy
+#~ msgid "Input buffer: %d bytes"
+#~ msgstr "Input buffer"
+
+#, fuzzy
+#~ msgid "Output buffer: %d bytes"
+#~ msgstr "buffer"
+
+#, fuzzy
+#~ msgid "<unknown size>"
+#~ msgstr "onbekend grootte"
+
+#, fuzzy
+#~ msgid "Unable to get address of interface %Q"
+#~ msgstr "aan s poort"
+
+#, fuzzy
+#~ msgid "Missing target nickname"
+#~ msgstr "nee"
+
+#, fuzzy
+#~ msgid "-c requires -i and -p"
+#~ msgstr "en"
+
+#, fuzzy
+#~ msgid "Missing filename"
+#~ msgstr "Ontbrekende variabele naam"
+
+#, fuzzy
+#~ msgid "The file size is not an positive number"
+#~ msgstr "file grootte is"
+
+#, fuzzy
+#~ msgid "Invalid sample rate '%s', defaulting to 8000"
+#~ msgstr "s naar"
+
+#, fuzzy
+#~ msgid "The current window has no associated DCC session"
+#~ msgstr "Dit venster heeft geen irc context"
+
+#, fuzzy
+#~ msgid "The specified parameter is not a valid DCC identifier"
+#~ msgstr "venster is"
+
+#, fuzzy
+#~ msgid "The specified window identifier is not valid"
+#~ msgstr "s is"
+
+#, fuzzy
+#~ msgid "The first parameter must be an unsigned number"
+#~ msgstr "file grootte is"
+
+#, fuzzy
+#~ msgid "No filename specified"
+#~ msgstr "Nee bestandsnaam"
+
+#, fuzzy
+#~ msgid "The file '%s' is not readable"
+#~ msgstr "s is"
+
+#, fuzzy
+#~ msgid "Invalid timeout, ignoring"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Invalid visible name: using default"
+#~ msgstr "zichtbaar naam"
+
+#, fuzzy
+#~ msgid "Ops..failed to add the sharedfile..."
+#~ msgstr "naar toevoegen de."
+
+#, fuzzy
+#~ msgid "The specified file size is invalid"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "No sharedfile with visible name '%s' and user mask '%s'"
+#~ msgstr "Nee door zichtbaar naam s en gebruiker masker s"
+
+#, fuzzy
+#~ msgid "[Parser warning in '%s']: %s"
+#~ msgstr "[parser waarschuwing in '%s'] : %s"
+
+#, fuzzy
+#~ msgid "Windows XP style"
+#~ msgstr "Venster"
+
+#, fuzzy
+#~ msgid " I can't find the specified file %s."
+#~ msgstr "de commando venster door id s"
+
+#, fuzzy
+#~ msgid "Missing file name to parse"
+#~ msgstr "Ontbrekende variabele naam"
+
+#, fuzzy
+#~ msgid "A popup name is expected as parameter"
+#~ msgstr "Venster of alles"
+
+#, fuzzy
+#~ msgid ""
+#~ "Can't set the current avatar to '%s' (failed to start the http transfer): "
+#~ "no message sent"
+#~ msgstr "de naar s de nee"
+
+#, fuzzy
+#~ msgid ""
+#~ "Can't set the current avatar to '%s' (can't load the image): no message "
+#~ "sent"
+#~ msgstr "de naar s de nee"
+
+#, fuzzy
+#~ msgid "No socket text specified"
+#~ msgstr "Nee masker"
+
+#, fuzzy
+#~ msgid "&Export Alias To..."
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "The script \"%1\" does not exist"
+#~ msgstr "bron s is"
+
+#, fuzzy
+#~ msgid "Defaults"
+#~ msgstr "standaard"
+
+#, fuzzy
+#~ msgid "Folders"
+#~ msgstr "Filter"
+
+#, fuzzy
+#~ msgid "Parser"
+#~ msgstr "Plakken"
+
+#, fuzzy
+#~ msgid "runtime error"
+#~ msgstr "Interne fout"
+
+#, fuzzy
+#~ msgid "Help"
+#~ msgstr "&Help"
+
+#, fuzzy
+#~ msgid "Enable automatic NickServ identification"
+#~ msgstr "Activeren"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is a list of NickServ identification rules. KVIrc will use "
+#~ "them to model its automatic interaction with NickServ.<br>Please be aware "
+#~ "that this feature can cause your NickServ passwords to be stolen if used "
+#~ "improperly. Follow the suggestions in the tooltips and make sure that you "
+#~ "fully understand the NickServ authentication protocol.<br>In other words, "
+#~ "be sure to know what you're doing.<br>Also note that the password that "
+#~ "you provide is stored as <b>PLAIN TEXT</b>.Right-click to add/remove "
+#~ "rules.</center>"
+#~ msgstr ""
+#~ "<center> is naar door<br> naar it de de en de<br> overig naar<br> de "
+#~ "wachtwoord is de configuratie file<br> Rechts naar toevoegen verwijderen</"
+#~ "center>"
+
+#, fuzzy
+#~ msgid "Identification Rule"
+#~ msgstr "notificatie"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the nickname that this rule will attempt to authenticate "
+#~ "with NickServ, i.e. the nickname that you have registered with NickServ</"
+#~ "center>"
+#~ msgstr "<center> is de naar door de geregistreerd door</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is a mask that defines the server(s) that this "
+#~ "identification rule will apply to. For a single server, this option "
+#~ "should just be a hostname like <b>irc.webchat.org</b>. You can use "
+#~ "wildcards to match multiple servers, e.g. <b>*.freenode.net</b> will work "
+#~ "on the whole freenode network (by matching any server names that end in "
+#~ "\".freenode.net\").<br>Please note that some servers have more than one "
+#~ "name. For example, <b>irc.eu.dal.net</b> redirects to a \"random\" DALNet "
+#~ "server, so the real server name will be different. You must provide the "
+#~ "name that the server calls itself, usually displayed in the console "
+#~ "window title.</center>"
+#~ msgstr ""
+#~ "<center> is masker de s aan<b></b> U naar overeenkomstig<b></b> aan de "
+#~ "netwerk alles de<br> naam voor de naam U de naam de naar U naam door de</"
+#~ "center>"
+
+#, fuzzy
+#~ msgid "NickServ mask:"
+#~ msgstr "Bericht verzenden"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the mask that NickServ must match to be correctly "
+#~ "identified as the NickServ service. This usually will be something like "
+#~ "<b>[email protected]</b>.<br>You can use wildcards for "
+#~ "this field, but generally it is a security flaw. If you're absolutely "
+#~ "sure that NO user on the network can use the nickname \"NickServ\", the "
+#~ "mask <b>NickServ!*@*</b> may be safe to use in this field.</center>"
+#~ msgstr ""
+#~ "<center> is de masker overeenkomstig naar<b>[email protected]</b> U "
+#~ "voor veld it is GEEN gebruiker aan de netwerk naar<b></b> voor veld</"
+#~ "center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the command that will be executed when NickServ requests "
+#~ "authentication for the nickname described in this rule (if the both "
+#~ "server and NickServ mask are matched). This usually will be something "
+#~ "like <b>msg NickServ identify &lt;yourpassword&gt;</b>.<br>You can use "
+#~ "<b>msg -q</b> if you don't want the password echoed on the screen. Please "
+#~ "note that there is no leading slash in this command.</center>"
+#~ msgstr ""
+#~ "<center> is de commando de voor de en de en masker overeenkomstig<b>&lt;"
+#~ "&gt;</b> U de wachtwoord naar aan de is nee commando</center>"
+
+#, fuzzy
+#~ msgid "&New Rule"
+#~ msgstr "Nieuwe regel"
+
+#, fuzzy
+#~ msgid "Re&move Rule"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "Uknown"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Main"
+#~ msgstr "E-mail"
+
+#, fuzzy
+#~ msgid "Show IRC Context Toolbar"
+#~ msgstr "&Nieuw"
+
+#, fuzzy
+#~ msgid "&User Mode"
+#~ msgstr "Gebr&uiker"
+
+#, fuzzy
+#~ msgid "&Join Channel"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "Options Toolbar"
+#~ msgstr "Opties"
+
+#, fuzzy
+#~ msgid "Change server settings"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "Change identity settings"
+#~ msgstr "ICQ opties"
+
+#, fuzzy
+#~ msgid "Configure KVIrc"
+#~ msgstr "&Opties"
+
+#, fuzzy
+#~ msgid "Cascade"
+#~ msgstr "Annuleren"
+
+#, fuzzy
+#~ msgid "Minimize All"
+#~ msgstr "M&inimaliseren"
+
+#, fuzzy
+#~ msgid "The specified toolbar doesn't exist (%s)"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "The specified button doesn't exist (%s)"
+#~ msgstr "is"
+
+#, fuzzy
+#~ msgid "Toolbar name:"
+#~ msgstr "Bekend naam:"
+
+#, fuzzy
+#~ msgid "New &Button"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "New &Separator"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "Scripting Toolbar"
+#~ msgstr "Opties"
+
+#, fuzzy
+#~ msgid "Show alias editor"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid "Show event editor"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid "Show popup editor"
+#~ msgstr "Omschakelen mode editor"
+
+#, fuzzy
+#~ msgid "Show raw event editor"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid "Show toolbar editor"
+#~ msgstr "Omschakelen ban editor"
+
+#, fuzzy
+#~ msgid "<nobr><font color=\"%s\"><b>Help Browser</b></font></nobr>"
+#~ msgstr "<nobr><font color=\"%s\"><b> Help venster</b></font></nobr>"
+
+#, fuzzy
+#~ msgid "[USEROP]: "
+#~ msgstr "FOUT"
+
+#, fuzzy
+#~ msgid "[DNS]: "
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid " /dns <nickname>"
+#~ msgstr "Notificatie"
+
+#, fuzzy
+#~ msgid "&Add"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "%c%Q%c's real name: %Q"
+#~ msgstr "s s naam"
+
+#~ msgid "[Parser warning in '%s']: %w"
+#~ msgstr "[parser waarschuwing in '%s'] : %w"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] has quit IRC: NETSPLIT %s"
+#~ msgstr "s s s s"
+
+#, fuzzy
+#~ msgid "%s [%s@%s] has set mode %co %s"
+#~ msgstr "s s s"
+
+#, fuzzy
+#~ msgid "%s [%s@%s] has set mode %ch %s"
+#~ msgstr "s s s"
+
+#, fuzzy
+#~ msgid "%s [%s@%s] has set mode %cv %s"
+#~ msgstr "s s s"
+
+#, fuzzy
+#~ msgid "%s [%s@%s] has set mode %cu %s"
+#~ msgstr "s s s"
+
+#, fuzzy
+#~ msgid "%s [%s@%s] has set mode %ca %s"
+#~ msgstr "s s s"
+
+#, fuzzy
+#~ msgid "%s [%s@%s] has set mode %cb \r!m%cb\r%s\r"
+#~ msgstr "s s s s"
+
+#, fuzzy
+#~ msgid "%s [%s@%s] has set mode %cI \r!m%cI\r%s\r"
+#~ msgstr "s s s s"
+
+#, fuzzy
+#~ msgid "End of channel invite list for \r!c\r%W\r"
+#~ msgstr "End voor"
+
+#, fuzzy
+#~ msgid "Invite entry for \r!c\r%W\r: \r!m-I\r%S\r (set by %S on %S)"
+#~ msgstr "Uitnodigen voor s s door s aan s"
+
+#, fuzzy
+#~ msgid "End of channel ban exception list for \r!c\r%W\r"
+#~ msgstr "End voor"
+
+#, fuzzy
+#~ msgid "Ban exception entry for \r!c\r%W\r: \r!m-e\r%S\r (set by %S on %S)"
+#~ msgstr "voor s s door s aan s"
+
+#, fuzzy
+#~ msgid "[No targets]"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "The current window is not a query: no targets added"
+#~ msgstr "venster is nee"
+
+#, fuzzy
+#~ msgid "The current query has no target '%s'"
+#~ msgstr "nee s"
+
+#, fuzzy
+#~ msgid "The current window is not a query: no targets removed"
+#~ msgstr "venster is nee"
+
+#, fuzzy
+#~ msgid "close this window?"
+#~ msgstr "Sluiten"
+
+#, fuzzy
+#~ msgid "New &Frame Window"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] is on IRC"
+#~ msgstr "s s s is aan"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] is on IRC (watch)"
+#~ msgstr "s s s is aan"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] is on IRC (watch: list requested by user)"
+#~ msgstr "s s s is aan gebruiker"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: \r!n\r%s\r [%s@\r!h\r%s\r] is on IRC (watch: possible list "
+#~ "desync)"
+#~ msgstr "Notificatie s s s is aan"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] is on IRC (watch: added by user)"
+#~ msgstr "s s s is aan"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] has left IRC (watch: removed from list)"
+#~ msgstr "s s s"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] has left IRC (watch)"
+#~ msgstr "s s s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: \r!n\r%s\r [%s@\r!h\r%s\r] has left IRC (watch: unmatched "
+#~ "notify list entry)"
+#~ msgstr "Notificatie s s s"
+
+#, fuzzy
+#~ msgid "15 minutes"
+#~ msgstr "&Online"
+
+#, fuzzy
+#~ msgid "30 minutes"
+#~ msgstr "&Online"
+
+#, fuzzy
+#~ msgid "Disable"
+#~ msgstr "zichtbaar"
+
+#, fuzzy
+#~ msgid "%s%c%s%c (%s)"
+#~ msgstr "s s"
+
+#, fuzzy
+#~ msgid "Connection attempt failed (%s): %s"
+#~ msgstr "Verbinding s"
+
+#, fuzzy
+#~ msgid "Socket message truncated to 512 bytes."
+#~ msgstr "naar bytes."
+
+#, fuzzy
+#~ msgid "File Transfers"
+#~ msgstr "Bytes"
+
+#, fuzzy
+#~ msgid "<nobr><font color=\"%s\"><b>File Transfers</b></font></nobr>"
+#~ msgstr "<nobr><font color=\"%s\"><b> Help venster</b></font></nobr>"
+
+#, fuzzy
+#~ msgid ""
+#~ "The specified bind address (%s) is not valid (the interface it refers to "
+#~ "might be down)"
+#~ msgstr "s is de it naar"
+
+#, fuzzy
+#~ msgid "Not connected to server"
+#~ msgstr "Niet naar"
+
+#, fuzzy
+#~ msgid "Be verbose (show some internal actions)"
+#~ msgstr "acties"
+
+#, fuzzy
+#~ msgid "Add new proxy"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "Ops..failed to add the offer..."
+#~ msgstr "naar toevoegen de."
+
+#, fuzzy
+#~ msgid "No offer with visible name '%s' and user mask '%s'"
+#~ msgstr "Nee door zichtbaar naam s en gebruiker masker s"
+
+#, fuzzy
+#~ msgid " File: %s (%u bytes)"
+#~ msgstr "Bestand s bytes"
+
+#, fuzzy
+#~ msgid " Expires in %d hours %d minutes %d seconds"
+#~ msgstr "minuten"
+
+#, fuzzy
+#~ msgid "No active file offers"
+#~ msgstr "Nee actief file"
+
+#, fuzzy
+#~ msgid "Total: %d offers"
+#~ msgstr "Totaal"
+
+#, fuzzy
+#~ msgid "Never"
+#~ msgstr "Server"
+
+#, fuzzy
+#~ msgid "Offer list window"
+#~ msgstr "Sluiten"
+
+#, fuzzy
+#~ msgid "The files "
+#~ msgstr "Gedeeld"
+
+#, fuzzy
+#~ msgid "Remove all"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "User mask"
+#~ msgstr "Bestand"
+
+#, fuzzy
+#~ msgid "Choose the file to offer"
+#~ msgstr "de naar"
+
+#, fuzzy
+#~ msgid "Active file offer list"
+#~ msgstr "Nee actief file"
+
+#, fuzzy
+#~ msgid "Animate popup menus"
+#~ msgstr "Animatie"
+
+#, fuzzy
+#~ msgid "Animate combo-boxes"
+#~ msgstr "Animatie"
+
+#, fuzzy
+#~ msgid "Frame caption"
+#~ msgstr "Richting"
+
+#, fuzzy
+#~ msgid "Activity:"
+#~ msgstr "Actief"
+
+#, fuzzy
+#~ msgid "System:"
+#~ msgstr "systeemfout"
+
+#, fuzzy
+#~ msgid "Taskbar Settings"
+#~ msgstr "Takenbalk"
+
+#, fuzzy
+#~ msgid "Nickname 2"
+#~ msgstr "Bijnaam"
+
+#, fuzzy
+#~ msgid "&Change"
+#~ msgstr "Annuleren"
+
+#, fuzzy
+#~ msgid "<br><br>Set by <b>"
+#~ msgstr "<br><br> door<b>"
+
+#, fuzzy
+#~ msgid " on <b>"
+#~ msgstr "aan<b>"
+
+#, fuzzy
+#~ msgid "<b>Channel topic:</b><br>"
+#~ msgstr "<b>Kanaal mode</b><br>"
+
+#, fuzzy
+#~ msgid "No topic is set<br>Double-click to set<br>"
+#~ msgstr "Nee is<br> naar it<br>"
+
+#, fuzzy
+#~ msgid "Use taskbar activity meter"
+#~ msgstr "Gebruik IRC"
+
+#, fuzzy
+#~ msgid "Load"
+#~ msgstr "Laden"
+
+#, fuzzy
+#~ msgid "Save"
+#~ msgstr "Opslaan"
+
+#, fuzzy
+#~ msgid "Windows remember properties"
+#~ msgstr "Vensters"
+
+#, fuzzy
+#~ msgid "Show the registered users dialog as toplevel window"
+#~ msgstr "Tonen de geregistreerd gebruikers"
+
+#, fuzzy
+#~ msgid "Show the join channels dialog as a toplevel window"
+#~ msgstr "Tonen de"
+
+#, fuzzy
+#~ msgid "Show the servers connect dialog as a toplevel window"
+#~ msgstr "Tonen de geregistreerd gebruikers"
+
+#, fuzzy
+#~ msgid "Show the identity dialog as a toplevel window"
+#~ msgstr "Tonen de"
+
+#, fuzzy
+#~ msgid "Use task bar IRC-context indicator"
+#~ msgstr "Gebruik IRC"
+
+#, fuzzy
+#~ msgid "Use tree-window-list task bar"
+#~ msgstr "Gebruik venster"
+
+#, fuzzy
+#~ msgid "Connections in progress"
+#~ msgstr "bezig met verbinden..."
+
+#, fuzzy
+#~ msgid "%c\r!n\r%s\r%c whowas info from \r!s\r%s\r"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Userhost info: %s"
+#~ msgstr "Gebruiker s"
+
+#, fuzzy
+#~ msgid "End of channel list"
+#~ msgstr "End voor"
+
+#, fuzzy
+#~ msgid "Interface features"
+#~ msgstr "Interface"
+
+#, fuzzy
+#~ msgid "Failed to write the file"
+#~ msgstr "Faalde naar de file"
+
+#, fuzzy
+#~ msgid "Select the file name for the exported aliases file"
+#~ msgstr "Selecteren naam voor de"
+
+#, fuzzy
+#~ msgid "You're connected to %s (%s)"
+#~ msgstr "U naar s s"
+
+#, fuzzy
+#~ msgid "You're not connected to a server: list cannot be requested"
+#~ msgstr "U naar"
+
+#, fuzzy
+#~ msgid "You're not connected to a server: links cannot be requested"
+#~ msgstr "U naar"
+
+#, fuzzy
+#~ msgid "Select the file name for the exported popup file"
+#~ msgstr "Selecteren naam voor de"
+
+#, fuzzy
+#~ msgid "Select the file name for the exported popups file"
+#~ msgstr "Selecteren naam voor de"
+
+#, fuzzy
+#~ msgid "Delete property"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "Import"
+#~ msgstr "Poort"
+
+#, fuzzy
+#~ msgid "Choose the name of the db file"
+#~ msgstr "file naam voor de"
+
+#, fuzzy
+#~ msgid "Can't open the file %s for reading"
+#~ msgstr "de file s voor"
+
+#, fuzzy
+#~ msgid "Generate \"defpopup\" Script Snippet"
+#~ msgstr "Genereren"
+
+#, fuzzy
+#~ msgid "KVIrc Scripts (*.kvs);;All Files (*)"
+#~ msgstr "Alles"
+
+#, fuzzy
+#~ msgid "Create query for server notices"
+#~ msgstr "s voor"
+
+#, fuzzy
+#~ msgid "B&rowse..."
+#~ msgstr "Bladeren..."
+
+#, fuzzy
+#~ msgid "Commit Your Settings"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "Choose a save file name"
+#~ msgstr "file"
+
+#~ msgid "Cut"
+#~ msgstr "Knippen"
+
+#~ msgid "Copy"
+#~ msgstr "Kopiëren..."
+
+#, fuzzy
+#~ msgid "New label"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "New menu"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "New external menu"
+#~ msgstr "nee"
+
+#, fuzzy
+#~ msgid "New prologue at this level"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "New epilogue at this level"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "Add new popup"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "Add separator"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "Choose file for saving the definition"
+#~ msgstr "file naam voor de"
+
+#, fuzzy
+#~ msgid "Channel admin foreground color"
+#~ msgstr "Selectie"
+
+#, fuzzy
+#~ msgid "Op foreground color"
+#~ msgstr "Voorgrondkleur"
+
+#, fuzzy
+#~ msgid "Half-op foreground color"
+#~ msgstr "Selectie"
+
+#, fuzzy
+#~ msgid "Voice foreground color"
+#~ msgstr "Voorgrondkleur"
+
+#, fuzzy
+#~ msgid "User-op foreground color"
+#~ msgstr "Voorgrondkleur"
+
+#, fuzzy
+#~ msgid "Normal foreground color"
+#~ msgstr "Voorgrondkleur"
+
+#, fuzzy
+#~ msgid ""
+#~ "I'm behind a firewall (or similar): can't accept incoming DCC connections"
+#~ msgstr "I of Inkomend"
+
+#, fuzzy
+#~ msgid "Create minimized when auto-accepted (when incoming)"
+#~ msgstr "Aanmaken Inkomend"
+
+#, fuzzy
+#~ msgid "Auto close on success"
+#~ msgstr "Auto aan"
+
+#, fuzzy
+#~ msgid "Idle step (msecs)"
+#~ msgstr "Niet actief"
+
+#, fuzzy
+#~ msgid "Send zero-byte-acknowledge (when receiving files)"
+#~ msgstr "Verzenden"
+
+#, fuzzy
+#~ msgid "Use Media-Type guessed save path"
+#~ msgstr "Gebruik Type"
+
+#, fuzzy
+#~ msgid "Echo the channel topic on channel join"
+#~ msgstr "de aan"
+
+#, fuzzy
+#~ msgid "Disable who request on join"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid "Disable ban list request on join"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid "Disable ban exception list request on join"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid "Disable invite list request on join"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid "Spam words"
+#~ msgstr "Zoeken"
+
+#, fuzzy
+#~ msgid "Allow max (0-10000)"
+#~ msgstr "Toestaan"
+
+#, fuzzy
+#~ msgid "CTCP's in (1-3600) secs"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Ignore PING requests"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Ignore VERSION requests"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Ignore CLIENTINFO requests"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Ignore USERINFO requests"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Ignore SOURCE requests"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Ignore TIME requests"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Ignore PAGE requests"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Ignore AVATAR requests"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Ignore DCC/TDCC requests"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Show channel flags"
+#~ msgstr "Tonen"
+
+#, fuzzy
+#~ msgid "File mask"
+#~ msgstr "Bestand"
+
+#, fuzzy
+#~ msgid "New"
+#~ msgstr "Nieuw"
+
+#, fuzzy
+#~ msgid "Send/Recv"
+#~ msgstr "Verzenden"
+
+#, fuzzy
+#~ msgid "Ctcp flood protection"
+#~ msgstr "Gebruik"
+
+#, fuzzy
+#~ msgid "Disable this handler"
+#~ msgstr "Deactiveren"
+
+#, fuzzy
+#~ msgid "Join Channel - KVIrc"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "Active foreground"
+#~ msgstr "url"
+
+#, fuzzy
+#~ msgid "Minimized text"
+#~ msgstr "M&inimaliseren"
+
+#, fuzzy
+#~ msgid "1 message every (10000-10000000 usec.)"
+#~ msgstr "elke"
+
+#, fuzzy
+#~ msgid "This button adds a new network."
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "This button adds a new server to the current network."
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "Removes the current network or server."
+#~ msgstr "nee s"
+
+#, fuzzy
+#~ msgid "Commit"
+#~ msgstr "Vastleggen (Commit)"
+
+#, fuzzy
+#~ msgid "Double-click to open this link<br>Right-click to view other options"
+#~ msgstr "naar koppeling<br> Rechts naar overig"
+
+#, fuzzy
+#~ msgid "[Unknown]"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid "Server connect:"
+#~ msgstr "Geen verbinding"
+
+#, fuzzy
+#~ msgid "&Recent Channels"
+#~ msgstr "Accepteren"
+
+#, fuzzy
+#~ msgid "&Add Channel"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "Add Channel - KVIrc"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "IRC Servers"
+#~ msgstr "Servers"
+
+#, fuzzy
+#~ msgid "Ident"
+#~ msgstr "Identiteit"
+
+#, fuzzy
+#~ msgid ""
+#~ "This server seems to support the WATCH notify list method: will try to "
+#~ "use it."
+#~ msgstr "naar de naar it."
+
+#, fuzzy
+#~ msgid "Text Editor"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid "Save &As.."
+#~ msgstr "Opsl&aan."
+
+#, fuzzy
+#~ msgid "&Close"
+#~ msgstr "Sl&uiten"
+
+#, fuzzy
+#~ msgid "&Toggle find widget"
+#~ msgstr "Omschakelen"
+
+#, fuzzy
+#~ msgid "&File"
+#~ msgstr "&Bestand"
+
+#, fuzzy
+#~ msgid "Unnamed"
+#~ msgstr "Naamloos"
+
+#, fuzzy
+#~ msgid "Plain text"
+#~ msgstr "Algemene"
+
+#, fuzzy
+#~ msgid "Save to file"
+#~ msgstr "Opslaan naar bestand"
+
+#, fuzzy
+#~ msgid ""
+#~ "Save failed!\n"
+#~ "Cant open the file %s for writing"
+#~ msgstr ""
+#~ "Opslaan\n"
+#~ " de file s voor"
+
+#, fuzzy
+#~ msgid "Choose a script file to load"
+#~ msgstr "file naar"
+
+#, fuzzy
+#~ msgid "Failed to open the file %s"
+#~ msgstr "Faalde naar de file"
+
+#~ msgid "Toggle double view"
+#~ msgstr "Omschakelen double zicht"
+
+#~ msgid "Toggle user list"
+#~ msgstr "Omschakelen gebruikers lijst"
+
+#~ msgid "Toggle ban editor"
+#~ msgstr "Omschakelen ban editor"
+
+#, fuzzy
+#~ msgid "This looks like a masked hostname: can't look it up"
+#~ msgstr "it"
+
+#, fuzzy
+#~ msgid "This looks like an unknown hostname: can't look it up"
+#~ msgstr "onbekend it"
+
+#, fuzzy
+#~ msgid "This looks like an unknown server<br>"
+#~ msgstr "onbekend<br>"
+
+#, fuzzy
+#~ msgid "Show &KVIrc"
+#~ msgstr "Naa&r voorgrond de"
+
+#, fuzzy
+#~ msgid "Hide &KVIrc"
+#~ msgstr "Afsluiten"
+
+#, fuzzy
+#~ msgid "Big"
+#~ msgstr "Opstarten"
+
+#, fuzzy
+#~ msgid "s (Server notices)"
+#~ msgstr "s Server"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r (%s@\r!h\r%s\r) is on irc (user-added watch)"
+#~ msgstr "s s s is aan gebruiker"
+
+#, fuzzy
+#~ msgid "Username"
+#~ msgstr "Gebruikersnaam"
+
+#, fuzzy
+#~ msgid "Real name"
+#~ msgstr "Bekend"
+
+#, fuzzy
+#~ msgid "too many pending connections"
+#~ msgstr "Te veel ongeldige verbindingen"
+
+#, fuzzy
+#~ msgid "invalid port number %s"
+#~ msgstr "ongeldig poort nummer"
+
+#, fuzzy
+#~ msgid "invalid ip address in old format %s"
+#~ msgstr "naar de"
+
+#, fuzzy
+#~ msgid "invalid ip address %s"
+#~ msgstr "Ongeldig IP adres"
+
+#, fuzzy
+#~ msgid ""
+#~ "This executable has been compiled without SSL support: the SSL extension "
+#~ "to DCC CHAT is not available"
+#~ msgstr "De KVIrc executabele heeft geen IPV6 support"
+
+#, fuzzy
+#~ msgid ""
+#~ "This executable has been compiled without SSL support: the SSL extension "
+#~ "to DCC SEND is not available"
+#~ msgstr "De KVIrc executabele heeft geen IPV6 support"
+
+#, fuzzy
+#~ msgid ""
+#~ "can't proceed with dcc recv: transfer not initiated for file %s on port %s"
+#~ msgstr "door voor file s aan poort"
+
+#, fuzzy
+#~ msgid "invalid resume position argument '%s'"
+#~ msgstr "Ongeldige hervat positie"
+
+#, fuzzy
+#~ msgid ""
+#~ "can't proceed with dcc send: transfer not initiated for file %s on port %"
+#~ "s, or invalid resume size"
+#~ msgstr "door voor file s aan poort s of"
+
+#, fuzzy
+#~ msgid ""
+#~ "This executable has been compiled without SSL support: the SSL extension "
+#~ "to DCC RECV is not available"
+#~ msgstr "De KVIrc executabele heeft geen IPV6 support"
+
+#, fuzzy
+#~ msgid "invalid recv request: position %u is 'out of the file'"
+#~ msgstr "is de file"
+
+#, fuzzy
+#~ msgid ""
+#~ "This executable has been compiled without SSL support: the SSL extension "
+#~ "to DCC RSEND is not available"
+#~ msgstr "De KVIrc executabele heeft geen IPV6 support"
+
+#, fuzzy
+#~ msgid ""
+#~ "This executable has been compiled without SSL support: the SSL extension "
+#~ "to DCC GET is not available"
+#~ msgstr "De KVIrc executabele heeft geen IPV6 support"
+
+#, fuzzy
+#~ msgid "no file offer named '%s' (with size %s) available for %s [%s@%s]"
+#~ msgstr "nee file s door grootte s beschikbaar voor s s s"
+
+#~ msgid ""
+#~ "The server seems to support the WATCH notify list method: going to use it"
+#~ msgstr ""
+#~ "De server ondersteund blijkbaar de WATCH notificatie lijst mothode: deze "
+#~ "zal gebruikt worden"
+
+#, fuzzy
+#~ msgid "Connection started at"
+#~ msgstr "Verbinding geanuleerd"
+
+#, fuzzy
+#~ msgid "Silence from server"
+#~ msgstr "Kopiëren..."
+
+#, fuzzy
+#~ msgid "What's This?"
+#~ msgstr "is?"
+
+#, fuzzy
+#~ msgid "Default user mode:"
+#~ msgstr "Beschikbaar gebruiker:"
+
+#, fuzzy
+#~ msgid "Server Notices"
+#~ msgstr "s Server"
+
+#, fuzzy
+#~ msgid "Change now"
+#~ msgstr "Kanaal mode"
+
+#, fuzzy
+#~ msgid "Use IpV6 protocol"
+#~ msgstr "Gebruik"
+
+#, fuzzy
+#~ msgid "Connect timeout (5-6000 sec.)"
+#~ msgstr "Verbinden"
+
+#, fuzzy
+#~ msgid "Recent channels"
+#~ msgstr "Accepteren"
+
+#~ msgid "Recursion too deep"
+#~ msgstr "Recursie te diep"
+
+#, fuzzy
+#~ msgid "Icon table"
+#~ msgstr "Pictogram"
+
+#, fuzzy
+#~ msgid "Someone is joining an inexisting channel...desync ?"
+#~ msgstr "is?"
+
+#, fuzzy
+#~ msgid "Kick message to an inexisting channel...desync ?"
+#~ msgstr "naar?"
+
+#, fuzzy
+#~ msgid "Received a TOPIC message for an unknown channel...desync ?"
+#~ msgstr "voor onbekend?"
+
+#, fuzzy
+#~ msgid "Mode change for an unknown channel ?"
+#~ msgstr "Modus voor onbekend?"
+
+#~ msgid "Sent PART request , waiting for reply..."
+#~ msgstr "PART verzoek verzonden ; wachten op antwoord..."
+
+#, fuzzy
+#~ msgid "KVIrc local directory"
+#~ msgstr "lokaal"
+
+#, fuzzy
+#~ msgid "Irc context"
+#~ msgstr "&Nieuw"
+
+#, fuzzy
+#~ msgid "No irc context"
+#~ msgstr "&Nieuw"
+
+#, fuzzy
+#~ msgid "&Connect to server"
+#~ msgstr "Niet naar"
+
+#, fuzzy
+#~ msgid "&Minimize all"
+#~ msgstr "M&inimaliseren"
+
+#, fuzzy
+#~ msgid "&Restore all"
+#~ msgstr "He&rstellen"
+
+#, fuzzy
+#~ msgid "&Tile"
+#~ msgstr "&Bestand"
+
+#, fuzzy
+#~ msgid "Choose a file..."
+#~ msgstr "file."
+
+#, fuzzy
+#~ msgid "Quit KVirc ?"
+#~ msgstr "Afsluiten"
+
+#, fuzzy
+#~ msgid "Help window"
+#~ msgstr "Help"
+
+#, fuzzy
+#~ msgid "KVIrc : general options"
+#~ msgstr "algemeen"
+
+#, fuzzy
+#~ msgid "After connect execute"
+#~ msgstr "Verbinden naar"
+
+#, fuzzy
+#~ msgid "Add new network"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "Add new server"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "Ops.. can't create the theme directory"
+#~ msgstr "de terminal"
+
+#, fuzzy
+#~ msgid "Browse ..."
+#~ msgstr "Bladeren..."
+
+#, fuzzy
+#~ msgid "Choose the data folder"
+#~ msgstr "de naar"
+
+#, fuzzy
+#~ msgid "Abort setup"
+#~ msgstr "Kvirc setup"
+
+#, fuzzy
+#~ msgid "Restore all windows"
+#~ msgstr "M&inimaliseren"
+
+#, fuzzy
+#~ msgid "Close &Window"
+#~ msgstr "Sluiten"
+
+#, fuzzy
+#~ msgid "Shared files window"
+#~ msgstr "Nee"
+
+#, fuzzy
+#~ msgid "&Old Tools"
+#~ msgstr "H&ulpmiddelen"
+
+#, fuzzy
+#~ msgid "&Offer list"
+#~ msgstr "Gebruikers lijst"
+
+#, fuzzy
+#~ msgid "<nobr><font color=\"%s\"><b>Log Viewer</b></font></nobr>"
+#~ msgstr "<nobr><font color=\"%s\"><b> Help venster</b></font></nobr>"
+
+#, fuzzy
+#~ msgid "Channel:"
+#~ msgstr "Annuleren"
+
+#~ msgid "Kvirc setup"
+#~ msgstr "Kvirc setup"
+
+#, fuzzy
+#~ msgid ""
+#~ "The directory '%s' already exists.\n"
+#~ "(maybe from a previous Kvirc installation)\n"
+#~ "If you experience any problems try deleting the old directory:\n"
+#~ "the setup program will be started automatically again."
+#~ msgstr ""
+#~ "De '%s' map bestaat reeds,\n"
+#~ "misschien van een vorige Kvirc installatie.\n"
+#~ "Indien u problemen ondervind, probeer dan deze oude map te verwijderen."
+
+#, fuzzy
+#~ msgid ">>"
+#~ msgstr ">>"
+
+#, fuzzy
+#~ msgid ""
+#~ ": No valid local copy of avatar available; unacceptable/invalid avatar "
+#~ "size (%u): ignoring"
+#~ msgstr "Nee lokaal beschikbaar"
+
+#, fuzzy
+#~ msgid "About KVirc..."
+#~ msgstr "Info over."
+
+#, fuzzy
+#~ msgid "About"
+#~ msgstr "Afbreken"
+
+#, fuzzy
+#~ msgid "License"
+#~ msgstr "&Lijn"
+
+#, fuzzy
+#~ msgid ""
+#~ "Can't send the DCC %s request to %s: the connection has been terminated"
+#~ msgstr "de naar s de verbinding"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center><b>%s [%s@%s]</b> requests a<br><b>Direct Client Connection</b> "
+#~ "in <b>%s</b> mode.<br>"
+#~ msgstr ""
+#~ "<center><b> s s s</b><br><b> Cliënt Verbinding</b><b></b><br> "
+#~ "verbinding<b> s</b> aan poort<b> s</b><br><br><hr><br><br></center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "The connection target will be host <b>%s</b> on port <b>%s</"
+#~ "b><br><br><hr><br>Do you accept ?<br></center>"
+#~ msgstr ""
+#~ "<center><b> s s s</b> naar de file<br><b> s</b><b> s</b> bytes<br> "
+#~ "verbinding<b> s</b> aan poort<b> s</b><br><br><hr><br><br></center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center><b>%s [%s@%s]</b> requests a<br><b>Direct Client Connection</b> "
+#~ "in <b>VOICE</b> mode.<br>The connection target will be host <b>%s</b> on "
+#~ "port <b>%s</b><br><br><hr><br>Do you accept ?<br></center>"
+#~ msgstr ""
+#~ "<center><b> s s s</b><br><b> Cliënt Verbinding</b><b></b><br> "
+#~ "verbinding<b> s</b> aan poort<b> s</b><br><br><hr><br><br></center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center><b>%s [%s@%s]</b> requests a<br><b>Direct Client Connection</b> "
+#~ "in <b>CANVAS</b> mode.<br>The connection target will be host <b>%s</b> on "
+#~ "port <b>%s</b><br><br><hr><br>Do you accept ?<br></center>"
+#~ msgstr ""
+#~ "<center><b> s s s</b><br><b> Cliënt Verbinding</b><b></b><br> "
+#~ "verbinding<b> s</b> aan poort<b> s</b><br><br><hr><br><br></center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center><b>%s [%s@%s]</b> wants to send you the file<br>'<b>%s</b>' <b>%"
+#~ "s</b> bytes long.<br>The connection target will be host <b>%s</b> on port "
+#~ "<b>%s</b><br><br><hr><br>Do you accept ?<br></center>"
+#~ msgstr ""
+#~ "<center><b> s s s</b> naar de file<br><b> s</b><b> s</b> bytes<br> "
+#~ "verbinding<b> s</b> aan poort<b> s</b><br><br><hr><br><br></center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center><b>%s [%s@%s]</b> wants to send you the file<br>'<b>%s</b>' <b>%"
+#~ "s</b> bytes long.<br>You will be the passive side of the connection."
+#~ "<br><br><hr><br>Do you accept ?<br></center>"
+#~ msgstr ""
+#~ "<center><b> s s s</b> naar de file<br><b> s</b><b> s</b> bytes<br> U de "
+#~ "de verbinding<br><br><hr><br><br></center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<br><hr><center><b>Notes:</b><br>The file looks to be an avatar that you "
+#~ "have requested.<br>You should not change its file name and<br>save it in "
+#~ "a place where KVIrc can find it:<br>this can be the KVIrc 'avatars' "
+#~ "directory, your home directory,<br>the KVIrc 'incoming' directory, the "
+#~ "KVIrc 'pics' directory,<br>or the save directory for the incoming file "
+#~ "type...<br>Usually accepting the default save path suggested in "
+#~ "the<br>dialog will do the job.<br>You can also instruct KVirc to auto-"
+#~ "accept the incoming avatars<br>by setting the option "
+#~ "'boolAutoAcceptIncomingAvatars' to true.<br></center>"
+#~ msgstr ""
+#~ "<br><hr><center><b> Notities</b><br> file naar<br> U file naam en<br> it "
+#~ "waar it<br> de map map<br> de Inkomend map de map<br> of de map voor de "
+#~ "Inkomend file<br> de standaard de<br> de<br> U naar auto de Inkomend<br> "
+#~ "door de naar juist<br></center>"
+
+#, fuzzy
+#~ msgid "Auto-accepting DCC %s request from %s!%s@%s for file %s"
+#~ msgstr "Auto s s s s voor file"
+
+#, fuzzy
+#~ msgid "Auto-saving DCC %s file %s as \r![!dbl]play $0\r%s\r"
+#~ msgstr "Auto s file s file"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center><b>The file %s already exists</b><br>and is <b>%d</b> bytes long."
+#~ "<br>Do you want to <b>overwrite</b> it, <b>auto-rename</b> the incoming "
+#~ "one, orthreat it as an incomplete download and <b>resume</b> it ?<br></"
+#~ "center>"
+#~ msgstr ""
+#~ "<center><b> file s</b><br> en is<b></b> bytes<br> naar<b></b> it<b> auto</"
+#~ "b> de Inkomend it en<b></b> it<br></center>"
+
+#, fuzzy
+#~ msgid "File %s exists: auto-renaming to %s.rnm"
+#~ msgstr "Bestand s auto naar s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Sent DCC CANVAS request to %s...waiting for the remote client to connect"
+#~ msgstr "Verzonden naar s voor de op afstand naar"
+
+#, fuzzy
+#~ msgid "Attempting an active DCC CANVAS connection"
+#~ msgstr "actief"
+
+#, fuzzy
+#~ msgid "Contacting host %s on port %s"
+#~ msgstr "s aan poort"
+
+#, fuzzy
+#~ msgid "DCC Failed: %s"
+#~ msgstr "Faalde"
+
+#, fuzzy
+#~ msgid "Local end is %s:%s"
+#~ msgstr "Lokaal is s"
+
+#, fuzzy
+#~ msgid "&Rich text (html)"
+#~ msgstr "tekst"
+
+#, fuzzy
+#~ msgid "Attempting a passive DCC %s connection"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Attempting an active DCC %s connection"
+#~ msgstr "actief s"
+
+#, fuzzy
+#~ msgid "Sent DCC %s request to %s...waiting for the remote client to connect"
+#~ msgstr "Verzonden s naar s voor de op afstand naar"
+
+#, fuzzy
+#~ msgid "DCC %s request not sent: awaiting manual connections"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid ""
+#~ "The crypt engine was not able to encrypt the current message (%s): %s: no "
+#~ "data sent to the remote end"
+#~ msgstr "naar de s s nee naar de op afstand"
+
+#, fuzzy
+#~ msgid "ERROR: %s"
+#~ msgstr "FOUT"
+
+#, fuzzy
+#~ msgid "DCC %s Failed: %s"
+#~ msgstr "Faalde"
+
+#, fuzzy
+#~ msgid "Reject"
+#~ msgstr "Verwerpen"
+
+#, fuzzy
+#~ msgid "Accept"
+#~ msgstr "Accepteren"
+
+#, fuzzy
+#~ msgid "Choose the save file name"
+#~ msgstr "de file"
+
+#, fuzzy
+#~ msgid "Overwrite"
+#~ msgstr "Overschrijven"
+
+#, fuzzy
+#~ msgid "Resume"
+#~ msgstr "Hervatten"
+
+#, fuzzy
+#~ msgid "DCC: File already existing"
+#~ msgstr "Bestand"
+
+#, fuzzy
+#~ msgid ""
+#~ "This window has no associated irc context (you need one unless you pass -"
+#~ "c or -n)"
+#~ msgstr "venster nee of"
+
+#, fuzzy
+#~ msgid ""
+#~ "You are not connected to a server (you need a connection unless you pass -"
+#~ "c or -n)"
+#~ msgstr "U naar verbinding of"
+
+#, fuzzy
+#~ msgid "Invalid file size specified: no message sent"
+#~ msgstr "file grootte nee"
+
+#, fuzzy
+#~ msgid "this executable has no SSL support: -s switch ignored"
+#~ msgstr "De KVIrc executabele heeft geen IPV6 support"
+
+#, fuzzy
+#~ msgid "Unable to process the above request: %s: %s"
+#~ msgstr "naar de"
+
+#, fuzzy
+#~ msgid "ignoring"
+#~ msgstr "Inkomend"
+
+#, fuzzy
+#~ msgid ""
+#~ "The above request is broken: the second parameter is '%s' and shoud be "
+#~ "'chat'; trying to continue"
+#~ msgstr "is de is s en naar"
+
+#, fuzzy
+#~ msgid ""
+#~ "The above request is broken: the fourth parameter should be the file size "
+#~ "but does not look as an unsigned number; trying to continue"
+#~ msgstr "is de de file grootte naar"
+
+#, fuzzy
+#~ msgid ""
+#~ "The above request is broken: the filename contains path components; "
+#~ "stripping the leading path and trying to continue"
+#~ msgstr "is de bestandsnaam bevat de en naar"
+
+#, fuzzy
+#~ msgid ""
+#~ "The above request has resume file size missing: we assume a resume file "
+#~ "size of 0"
+#~ msgstr "file grootte file grootte"
+
+#, fuzzy
+#~ msgid "0"
+#~ msgstr "0"
+
+#, fuzzy
+#~ msgid "%s [%s@%s] is ready to receive the file \"%s\""
+#~ msgstr "s s s is naar de file s"
+
+#, fuzzy
+#~ msgid "The remote client is listening on interface %s and port %s"
+#~ msgstr "op afstand is aan s en poort"
+
+#, fuzzy
+#~ msgid ""
+#~ "Use %c\r![!dbl]dcc.send %s -i=%s -p=%s %s\r/dcc.send %s -i=%s -p=%s %s\r%"
+#~ "c to send the file (or simply double click on the link)"
+#~ msgstr "Gebruik s s s s s s s s naar de file of double aan de koppeling"
+
+#, fuzzy
+#~ msgid ""
+#~ "Accepting file request from %s [%s@%s] for '%s' (real file: %s): offering "
+#~ "DCC %s since we can't accept incoming connections (user option)"
+#~ msgstr "file s s s voor s file s s sinds Inkomend gebruiker"
+
+#, fuzzy
+#~ msgid ""
+#~ "Accepting file request from %s [%s@%s] for '%s' (real file: %s): offering "
+#~ "DCC %s"
+#~ msgstr "file s s s voor s file s"
+
+#, fuzzy
+#~ msgid "The above request can't be accepted: unsupported codec '%s'"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid ""
+#~ "The above request looks to be broken: invalid sample-rate '%s': "
+#~ "defaulting to 8000"
+#~ msgstr "naar s naar"
+
+#, fuzzy
+#~ msgid ""
+#~ "Data transfer terminated: waiting 30 secs for the peer to close the "
+#~ "connection"
+#~ msgstr ""
+#~ "Verzonden van de QUIT.... wachten op de server om de verbinding te sluiten"
+
+#, fuzzy
+#~ msgid ""
+#~ "WARNING: Received data in a DCC TSEND: there should be no acknowledges"
+#~ msgstr "nee"
+
+#, fuzzy
+#~ msgid "File: %s (%s bytes)"
+#~ msgstr "Bestand s s bytes"
+
+#, fuzzy
+#~ msgid "Local file name: %s"
+#~ msgstr "Lokaal file naam"
+
+#, fuzzy
+#~ msgid "Data progress"
+#~ msgstr "Als gegevens-cd"
+
+#, fuzzy
+#~ msgid "Bytes transferred"
+#~ msgstr "Bytes"
+
+#, fuzzy
+#~ msgid "Average transfer speed"
+#~ msgstr "Gemiddeld"
+
+#, fuzzy
+#~ msgid "Sent DCC RESUME request...waiting for ACCEPT"
+#~ msgstr "Verzonden voor"
+
+#, fuzzy
+#~ msgid "Open folder"
+#~ msgstr "Openen"
+
+#, fuzzy
+#~ msgid "Open file (/play)"
+#~ msgstr "Openen file spelen"
+
+#, fuzzy
+#~ msgid "File: %s"
+#~ msgstr "Bestand"
+
+#, fuzzy
+#~ msgid "File mask: %s"
+#~ msgstr "Bestand masker"
+
+#, fuzzy
+#~ msgid "No media type match for file \"%s\""
+#~ msgstr "Nee overeenkomstig voor file s"
+
+#, fuzzy
+#~ msgid ""
+#~ "DCC %s transfer with %s@%s:%s succesfull: file \r![!dbl]play $0\r%s\r"
+#~ msgstr "s door s s s file"
+
+#, fuzzy
+#~ msgid "Avg: %d (bytes/sec)"
+#~ msgstr "Gemiddeld bytes"
+
+#, fuzzy
+#~ msgid "Spd: %d (bytes/sec)"
+#~ msgstr "bytes"
+
+#, fuzzy
+#~ msgid "Sent %d bytes"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "RESUME accepted: the transfer will begin at position %s"
+#~ msgstr "de"
+
+#, fuzzy
+#~ msgid "Invalid RESUME request: position %u is 'out of the file'"
+#~ msgstr "is de file"
+
+#, fuzzy
+#~ msgid ""
+#~ "WARNING: failed to check the soundcard duplex capabilities: if this is a "
+#~ "half-duplex soundcard , use the DCC VOICE option to force half-duplex "
+#~ "algorithm"
+#~ msgstr "naar de geluidskaart is geluidskaart de naar"
+
+#, fuzzy
+#~ msgid ""
+#~ "Half duplex soundcard detected, you will not be able to talk and listen "
+#~ "at the same time"
+#~ msgstr "geluidskaart naar talk en de"
+
+#, fuzzy
+#~ msgid ""
+#~ "WARNING: failed to set the requested sample rate (%d): the device used "
+#~ "closest match (%d)"
+#~ msgstr "naar de de apparaat gebruikt overeenkomstig"
+
+#, fuzzy
+#~ msgid "Ops...failed to test the soundcard capabilities...expect problems..."
+#~ msgstr "naar de geluidskaart."
+
+#, fuzzy
+#~ msgid "Input buffer"
+#~ msgstr "Input"
+
+#, fuzzy
+#~ msgid "Attempting an active DCC VOICE connection"
+#~ msgstr "actief"
+
+#, fuzzy
+#~ msgid ""
+#~ "Sent DCC VOICE (%s) request to %s...waiting for the remote client to "
+#~ "connect"
+#~ msgstr "Verzonden s naar s voor de op afstand naar"
+
+#, fuzzy
+#~ msgid "Actual codec used is '%s'"
+#~ msgstr "gebruikt is s"
+
+#, fuzzy
+#~ msgid "Link suicide"
+#~ msgstr "Koppeling"
+
+#, fuzzy
+#~ msgid "Connect in new irc context"
+#~ msgstr "&Nieuw"
+
+#, fuzzy
+#~ msgid "Initial Usermode:"
+#~ msgstr "Beschikbaar gebruiker:"
+
+#~ msgid "Invalid numeric operand (wrong base or unexpected characters inside)"
+#~ msgstr ""
+#~ "Ongeldige numerieke operator (verkeerde basis of onverwachte karakters "
+#~ "binnenin)"
+
+#~ msgid ""
+#~ "Welcome to the Kvirc setup program!\n"
+#~ "You will be asked to choose an existing directory now.\n"
+#~ "A '%s' subdirectory will be created inside , and Kvirc will\n"
+#~ "use it to store its configuration files.\n"
+#~ "Make sure that you have the write permission to that directory.\n"
+#~ msgstr ""
+#~ "Welkom bij het Kvirc setup programma!\n"
+#~ "Er zal u gevraagd worden om een map te kiezen nu.\n"
+#~ "Een '%s' submap zal worden aangemaakt binnenin, en Kvir zal\n"
+#~ "deze gebruiken om zijn configuratiebestanden in op te slaan.\n"
+#~ "Wees zeker dat u ook schrijf toegang tot deze map heeft.\n"
+
+#~ msgid ""
+#~ "Could not make the directory %s.\n"
+#~ "Trying alternate default $HOME/%s"
+#~ msgstr ""
+#~ "Kon de map %s niet aanmaken\n"
+#~ "Proberen de alternatieve standaard $HOME/%s"
+
+#~ msgid ""
+#~ "The '%s' subdirectory already exists , maybe from a previous Kvirc "
+#~ "installation.\n"
+#~ "It can be used...but if you experience any problems try deleting the old "
+#~ "directory\n"
+#~ ".and repeating the setup."
+#~ msgstr ""
+#~ "De '%s' map bestaat al , misschien van een vorige Kvirc installatie.\n"
+#~ "Het kan gebruikt worden... maar als u problemen ondervind, probeer dan "
+#~ "oude map te verwijderen\n"
+#~ "en de.setup te herhalen."
+
+#~ msgid ""
+#~ "Could not make directory $HOME/%s.\n"
+#~ "Bad luck...you have some problems with you enviroinment,\n"
+#~ "the $HOME/%s path is not writable or it is not a directory.\n"
+#~ "Setup aborted."
+#~ msgstr ""
+#~ "Kan de map $HOME/%s niet aanmaken\n"
+#~ "Pech...u heeft problemen met je omgeving\n"
+#~ "$HOME/%s is geen map, of u heeft geen toegang om hiernaar te schrijven\n"
+#~ "setup afgebroken."
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>%s</b></font> <font color=\"%s\">[%s on %s]</"
+#~ "font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b> %s</b></font> <font color=\"%s\">[%s aan %s]"
+#~ "</font></nobr>"
+
+#~ msgid "%s (+%s) on %s"
+#~ msgstr "%s (+%s) aan %s"
+
+#~ msgid "%s [%s]"
+#~ msgstr "%s [%s]"
+
+#, fuzzy
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>%s</b></font> <font color=\"%s\">[%s]</font></"
+#~ "nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b> s</b></font><font color=\"%s\">%s</font></"
+#~ "nobr>"
+
+#, fuzzy
+#~ msgid "<b>No connection</b><br>(Irc context %u)"
+#~ msgstr "<b> Nee verbinding</b><br>"
+
+#, fuzzy
+#~ msgid "<b>%s</b><br>%s<br>(Irc context %u)"
+#~ msgstr "<b> s</b><br> s<br>"
+
+#, fuzzy
+#~ msgid "<center>No irc context</center>"
+#~ msgstr "<center> Nee</center>"
+
+#, fuzzy
+#~ msgid "<b>mode %s %c%c %s</b>"
+#~ msgstr "<b> s s</b>"
+
+#, fuzzy
+#~ msgid "<b>mode %s %c%c</b>"
+#~ msgstr "<b> s</b>"
+
+#, fuzzy
+#~ msgid "<b><center>%s!%s@%s</center></b>"
+#~ msgstr "<b><center> s s s</center></b>"
+
+#, fuzzy
+#~ msgid "<br><center>%s</center>"
+#~ msgstr "<br><center> s</center>"
+
+#, fuzzy
+#~ msgid "Tile : Not enouh space"
+#~ msgstr "Steen Niet"
+
+#, fuzzy
+#~ msgid "Tile : Not enough space"
+#~ msgstr "Steen Niet"
+
+#, fuzzy
+#~ msgid "&Directory browser (MDI)"
+#~ msgstr "Map M&DI"
+
+#, fuzzy
+#~ msgid "&Build info"
+#~ msgstr "&Build"
+
+#, fuzzy
+#~ msgid "This query has no active targets"
+#~ msgstr "nee actief"
+
+#, fuzzy
+#~ msgid "Private message to an inexisting channel...desync ?"
+#~ msgstr "Private naar?"
+
+#, fuzzy
+#~ msgid "%s!%s@%s: %s"
+#~ msgstr "s s s"
+
+#, fuzzy
+#~ msgid "color free"
+#~ msgstr "kleur"
+
+#, fuzzy
+#~ msgid "anonymous"
+#~ msgstr "anoniem"
+
+#, fuzzy
+#~ msgid "Nickame/Channel '%s' is temporairly unavailable"
+#~ msgstr "s is"
+
+#, fuzzy
+#~ msgid "[unknown]"
+#~ msgstr "[onbekend]"
+
+#, fuzzy
+#~ msgid ""
+#~ "Decimal numeric operand was expected (forgot double-quotes somewhere ?)"
+#~ msgstr "Decimaal double"
+
+#, fuzzy
+#~ msgid "About KVirc"
+#~ msgstr "Info over"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Script language tag: "
+#~ msgstr ""
+#~ "\n"
+#~ " taal "
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Build number: "
+#~ msgstr ""
+#~ "\n"
+#~ " Build "
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Build date: "
+#~ msgstr ""
+#~ "\n"
+#~ " Build datum "
+
+#, fuzzy
+#~ msgid ""
+#~ "Sent DCC CHAT request to %s...waiting for the remote client to connect"
+#~ msgstr "Verzonden naar s voor de op afstand naar"
+
+#, fuzzy
+#~ msgid "Attempting an active DCC CHAT connection"
+#~ msgstr "actief"
+
+#, fuzzy
+#~ msgid "Unable to process the above request: invalid port number %s"
+#~ msgstr "naar de poort"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unable to process the above request: invalid resume position argument '%s'"
+#~ msgstr "naar de s"
+
+#, fuzzy
+#~ msgid "Unable to process the above request: unknown DCC type %s"
+#~ msgstr "naar de onbekend"
+
+#, fuzzy
+#~ msgid "Can't open directory %s"
+#~ msgstr "map"
+
+#, fuzzy
+#~ msgid "&Up"
+#~ msgstr "O&mhoog"
+
+#, fuzzy
+#~ msgid "Directory browser error"
+#~ msgstr "Map"
+
+#, fuzzy
+#~ msgid "DirBrowser [%s]"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>DirBrowser</b></font> <font color=\"%s\">[%s]"
+#~ "</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b></b></font><font color=\"%s\"> s</font></nobr>"
+
+#, fuzzy
+#~ msgid "Previous document"
+#~ msgstr "Vorige"
+
+#, fuzzy
+#~ msgid "Next document"
+#~ msgstr "Volgende"
+
+#, fuzzy
+#~ msgid "Text output widget"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid "Text look"
+#~ msgstr "Tekst"
+
+#, fuzzy
+#~ msgid "Show the script center as toplevel window"
+#~ msgstr "Tonen de"
+
+#, fuzzy
+#~ msgid "Use single IRC tool bar"
+#~ msgstr "Gebruik IRC"
+
+#, fuzzy
+#~ msgid "Host"
+#~ msgstr "Host"
+
+#, fuzzy
+#~ msgid "Add mask"
+#~ msgstr "Toevoegen"
+
+#, fuzzy
+#~ msgid "Discard"
+#~ msgstr "Negeren"
+
+#, fuzzy
+#~ msgid "Masks"
+#~ msgstr "Maskers"
+
+#, fuzzy
+#~ msgid "New User 0"
+#~ msgstr "Nieuw Gebruiker"
+
+#, fuzzy
+#~ msgid "New User %d"
+#~ msgstr "Nieuw Gebruiker"
+
+#, fuzzy
+#~ msgid "Apply changes"
+#~ msgstr "Toepassen"
+
+#, fuzzy
+#~ msgid "Killing %u undelivered packet(s)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Connection aborted (while looking up server hostname)"
+#~ msgstr "Verbinding"
+
+#, fuzzy
+#~ msgid "Connection aborted (while attempting to get online)"
+#~ msgstr "Verbinding naar"
+
+#, fuzzy
+#~ msgid "You haven't specified the UIN"
+#~ msgstr "U de"
+
+#, fuzzy
+#~ msgid "You haven't specified the password"
+#~ msgstr "U de"
+
+#, fuzzy
+#~ msgid "You're trying to register a new user without a password"
+#~ msgstr "U naar gebruiker"
+
+#, fuzzy
+#~ msgid "You're trying to register a new user without an alias"
+#~ msgstr "U naar gebruiker"
+
+#, fuzzy
+#~ msgid "You haven't specified a server name: using icq.mirabilis.com"
+#~ msgstr "U naam"
+
+#, fuzzy
+#~ msgid "You haven't specified a port: using 4000"
+#~ msgstr "U poort"
+
+#, fuzzy
+#~ msgid "Server ip address is %s"
+#~ msgstr "Server is"
+
+#, fuzzy
+#~ msgid "Estabilishing link to %s on port %u"
+#~ msgstr "koppeling naar s aan poort"
+
+#, fuzzy
+#~ msgid "Failed to create a DGRAM socket"
+#~ msgstr "Faalde naar"
+
+#, fuzzy
+#~ msgid "Link estabilished...registering new user"
+#~ msgstr "Koppeling"
+
+#, fuzzy
+#~ msgid "Link estabilished...logging in with UIN %u (and pass)"
+#~ msgstr "Koppeling door en"
+
+#, fuzzy
+#~ msgid "Sending out packet %d bytes long: cmd=%d, seq1=%d, seq2=%d"
+#~ msgstr "bytes"
+
+#, fuzzy
+#~ msgid ""
+#~ "Write error while attempting to send out a packet (cmd=%d, seq1=%d, seq2=%"
+#~ "d)"
+#~ msgstr "Schrijven naar"
+
+#, fuzzy
+#~ msgid "Attempting to enqueue a packet while disconnected: dropping"
+#~ msgstr "naar"
+
+#, fuzzy
+#~ msgid "Lost connection: link closed by the remote end"
+#~ msgstr "Verloren verbinding koppeling door de op afstand"
+
+#, fuzzy
+#~ msgid ""
+#~ "Failed to write the ack for packet %u:%u : awaiting re-send to re-ack"
+#~ msgstr "Faalde naar de voor naar"
+
+#, fuzzy
+#~ msgid "Sent CMD_KEEP_ALIVE"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "Sent CMD_EXT_INFO_REQ"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "Sent CMD_INFO_REQ"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "Sent CMD_ACK_MESSAGES"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "Sent CMD_LOGIN"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "Sent CMD_CONTACT_LIST"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "Sent CMD_SEARCH_USER"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "Sent CMD_STATUS_CHANGE"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "Sent CMD_ADD_TO_LIST"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "Sent CMD_REG_NEW_USER"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "Sent CMD_NEW_USER_INFO"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "Sent CMD_SEND_MESSAGE"
+#~ msgstr "Verzonden"
+
+#, fuzzy
+#~ msgid "unknown (%u)"
+#~ msgstr "onbekend"
+
+#, fuzzy
+#~ msgid "free for chat"
+#~ msgstr "vrij voor"
+
+#, fuzzy
+#~ msgid "unknown binary flags %u"
+#~ msgstr "onbekend"
+
+#, fuzzy
+#~ msgid ""
+#~ "Received an old-style packet (version %u): ignoring (I guess that this is "
+#~ "for backward compatibility only)"
+#~ msgstr "stijl versie I is voor"
+
+#, fuzzy
+#~ msgid ""
+#~ "Duplicate packet: %d bytes, cmd=%u, seq1=%u, seq2=%u: re-acking and "
+#~ "ignoring"
+#~ msgstr "Dupliceren bytes en"
+
+#, fuzzy
+#~ msgid "Packet from server: %d bytes, cmd=%u, seq1=%u, seq2=%u"
+#~ msgstr "bytes"
+
+#, fuzzy
+#~ msgid "Hex dump: %s"
+#~ msgstr "Hexidecimaal"
+
+#, fuzzy
+#~ msgid ""
+#~ "Received a broken packet from server (session id %u != %u) : ignoring"
+#~ msgstr "sessie id"
+
+#, fuzzy
+#~ msgid "Received ack for packet %d:%d"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "Received unexpected ack for packet %d:%d: ignoring (resent ?)"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "Failed to set new user info...you will have to do it manually"
+#~ msgstr "Faalde naar gebruiker naar it"
+
+#, fuzzy
+#~ msgid ""
+#~ "Received a broken multi-packet from server (incoherent internal packet "
+#~ "size): ignoring (awaiting resend)"
+#~ msgstr "grootte"
+
+#, fuzzy
+#~ msgid "Connection interrupted while processing a multipacket: stopping"
+#~ msgstr "Verbinding"
+
+#, fuzzy
+#~ msgid "Received SRV_X1: ack for contact list"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "Received SRV_NEW_UIN: new user registered"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "New user registered with UIN %u: logging in to complete registration"
+#~ msgstr "Nieuw gebruiker geregistreerd door naar"
+
+#, fuzzy
+#~ msgid "Received an unexpected SRV_NEW_USER...doh...acking and ignoring"
+#~ msgstr "en"
+
+#, fuzzy
+#~ msgid "Received SRV_NEW_USER: new user informations updated"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "Your new user informations are:"
+#~ msgstr "gebruiker:"
+
+#, fuzzy
+#~ msgid "Password: %c%s"
+#~ msgstr "Wachtwoord"
+
+#, fuzzy
+#~ msgid "Alias: %c%s"
+#~ msgstr "Alias"
+
+#, fuzzy
+#~ msgid "First name: %c%s"
+#~ msgstr "Eerste naam"
+
+#, fuzzy
+#~ msgid "Last name: %c%s"
+#~ msgstr "Laatste naam"
+
+#, fuzzy
+#~ msgid "E-Mail: %c%s"
+#~ msgstr "Bericht"
+
+#, fuzzy
+#~ msgid ""
+#~ "You can fill these informations in the options dialog and then get online."
+#~ msgstr "U de en."
+
+#, fuzzy
+#~ msgid "no"
+#~ msgstr "nee"
+
+#, fuzzy
+#~ msgid ""
+#~ "Received a broken \"user found\" reply from server : ignoring (awaiting "
+#~ "resend)"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid ""
+#~ "End of search results: not all the matches were reported: try to refine "
+#~ "your criteria"
+#~ msgstr "End alles de naar"
+
+#, fuzzy
+#~ msgid "End of search results: all the matches were reported"
+#~ msgstr "End alles de"
+
+#, fuzzy
+#~ msgid ""
+#~ "Received a broken \"user online\" reply from server : ignoring (awaiting "
+#~ "resend)"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "User %s (%u) is %s"
+#~ msgstr "Gebruiker s is"
+
+#, fuzzy
+#~ msgid ""
+#~ "Received an \"user online\" message for an unexpected user: %u: ignoring"
+#~ msgstr "gebruiker voor gebruiker"
+
+#, fuzzy
+#~ msgid ""
+#~ "Received a broken \"user offline\" reply from server : ignoring (awaiting "
+#~ "resend)"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "User %s (%u) is offline"
+#~ msgstr "Gebruiker s is"
+
+#, fuzzy
+#~ msgid ""
+#~ "Received an \"user onffline\" message for an unexpected user: %u: ignoring"
+#~ msgstr "gebruiker voor gebruiker"
+
+#, fuzzy
+#~ msgid ""
+#~ "Received a broken \"user status update\" reply from server : ignoring "
+#~ "(awaiting resend)"
+#~ msgstr "gebruiker status"
+
+#, fuzzy
+#~ msgid ""
+#~ "Received an \"user status update\" message for an unexpected user: %u: "
+#~ "ignoring"
+#~ msgstr "gebruiker status voor gebruiker"
+
+#, fuzzy
+#~ msgid "%cOffline message from %s (%u) sent on %u.%u.%u %u%u:%u%u"
+#~ msgstr "s aan"
+
+#, fuzzy
+#~ msgid ""
+#~ "Received a broken user-message from server : ignoring (awaiting resend)"
+#~ msgstr "gebruiker"
+
+#, fuzzy
+#~ msgid "<%s (%u)>: url: %s"
+#~ msgstr "s url"
+
+#, fuzzy
+#~ msgid "%s (%u) requests the authorization to add you to his contact list"
+#~ msgstr "s de naar toevoegen naar"
+
+#, fuzzy
+#~ msgid "The message above looks to be broken : can't extract request data"
+#~ msgstr "naar"
+
+#, fuzzy
+#~ msgid "<%s (%u)>: alias: %s"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "<%s (%u)>: first name: %s"
+#~ msgstr "s naam"
+
+#, fuzzy
+#~ msgid "<%s (%u)>: last name: %s"
+#~ msgstr "s naam"
+
+#, fuzzy
+#~ msgid "<%s (%u)>: e-mail: %s"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid ""
+#~ "double-click \r![dbl]icq.msg -a %u Authorisation granted\rhere\r to grant "
+#~ "the authorisation"
+#~ msgstr "double naar de"
+
+#, fuzzy
+#~ msgid "or use /icq.msg -a to grant it manually"
+#~ msgstr "of naar it"
+
+#, fuzzy
+#~ msgid "%s (%u) grants you the authorisation to add him to your contact list"
+#~ msgstr "s de naar toevoegen naar"
+
+#, fuzzy
+#~ msgid "You have been added to the %s's (%u) contact list"
+#~ msgstr "U naar de s s"
+
+#, fuzzy
+#~ msgid "Unknown message type %u from %s (%u): can't extract data"
+#~ msgstr "Onbekend s"
+
+#, fuzzy
+#~ msgid "<center>No informations available</center>"
+#~ msgstr "<center> Nee beschikbaar</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<html><head><title>User informations</title></head><body bgcolor=\"#FFFFFF"
+#~ "\" text=\"#000000\"><table width=\"100%\"><tr bgcolor=\"#000000"
+#~ "\"><td>&nbsp;</td><td><font color=\"#FFFFFF\"><b>ICQ User Info</b></"
+#~ "font></td></tr><tr bgcolor=\"#E0E0E0\"><td><h2>UIN:</h2></td><td><h2>%u</"
+#~ "h2></td></tr><tr bgcolor=\"#E0E0E0\"><td><h3>Alias:</h3></td><td><h3>%s</"
+#~ "h3></td></tr><tr bgcolor=\"#000000\"><td>&nbsp;</td><td><font color="
+#~ "\"#FFFFFF\"><b>Basic Info</b></font></td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><b>First name:</b></td><td>%s</td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><b>Last name:</b></td><td>%s</td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><b>E-Mail:</b></td><td>%s</td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><b>Auth:</b></td><td>%s</td></tr><tr bgcolor=\"#000000\"><td>&nbsp;"
+#~ "</td><td><font color=\"#FFFFFF\"><b>Extended Info</b></font></td></tr><tr "
+#~ "bgcolor=\"#E0E0E0\"><td><b>Gender:</b></td><td>%s</td></tr><tr bgcolor="
+#~ "\"#E0E0E0\"><td><b>Age:</b></td><td>%s</td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><b>City:</b></td><td>%s</td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><b>State:</b></td><td>%s</td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><b>Country:</b></td><td>%s</td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><b>Timezone:</b></td><td>%s</td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><b>Phone:</b></td><td>%s</td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><b>Homepage:</b></td><td>%s</td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><b>About:</b></td><td>%s</td></tr><tr bgcolor=\"#000000"
+#~ "\"><td>&nbsp;</td><td><font color=\"#000000\">Generated with the KVIrc "
+#~ "ICQ client module at %s</font></td></tr></table></body></html>"
+#~ msgstr ""
+#~ "<html><head><title> Gebruiker</title></head> tekst<table width=\"100%"
+#~ "\"><tr bgcolor=\"#000000\"><td>&nbsp;</td><td><font color=\"#FFFFFF\"><b> "
+#~ "Gebruiker Informatie</b></font></td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><h2></h2></td><td><h2></h2></td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><h3> Alias</h3></td><td><h3> s</h3></td></tr><tr bgcolor=\"#000000"
+#~ "\"><td>&nbsp;</td><td><font color=\"#FFFFFF\"><b> Basis Informatie</b></"
+#~ "font></td></tr><tr bgcolor=\"#E0E0E0\"><td><b> Eerste naam</b></td><td> "
+#~ "s</td></tr><tr bgcolor=\"#E0E0E0\"><td><b> Laatste naam</b></td><td> s</"
+#~ "td></tr><tr bgcolor=\"#E0E0E0\"><td><b> Bericht</b></td><td> s</td></"
+#~ "tr><tr bgcolor=\"#E0E0E0\"><td><b></b></td><td> s</td></tr><tr bgcolor="
+#~ "\"#000000\"><td>&nbsp;</td><td><font color=\"#FFFFFF\"><b> Informatie</"
+#~ "b></font></td></tr><tr bgcolor=\"#E0E0E0\"><td><b> Geslacht</b></td><td> "
+#~ "s</td></tr><tr bgcolor=\"#E0E0E0\"><td><b> Leeftijd</b></td><td> s</td></"
+#~ "tr><tr bgcolor=\"#E0E0E0\"><td><b> Woonplaats</b></td><td> s</td></tr><tr "
+#~ "bgcolor=\"#E0E0E0\"><td><b> Staat</b></td><td> s</td></tr><tr bgcolor="
+#~ "\"#E0E0E0\"><td><b> Land</b></td><td> s</td></tr><tr bgcolor=\"#E0E0E0"
+#~ "\"><td><b></b></td><td> s</td></tr><tr bgcolor=\"#E0E0E0\"><td><b> "
+#~ "Telefoon</b></td><td> s</td></tr><tr bgcolor=\"#E0E0E0\"><td><b> "
+#~ "Homepagina</b></td><td> s</td></tr><tr bgcolor=\"#E0E0E0\"><td><b> Info "
+#~ "over</b></td><td> s</td></tr><tr bgcolor=\"#000000\"><td>&nbsp;</"
+#~ "td><td><font color=\"#000000\"> door de module s</font></td></tr></"
+#~ "table></body></html>"
+
+#, fuzzy
+#~ msgid "Alias:"
+#~ msgstr "Alias:"
+
+#, fuzzy
+#~ msgid "First name:"
+#~ msgstr "Voornaam:"
+
+#, fuzzy
+#~ msgid "E-Mail:"
+#~ msgstr "E-Mail:"
+
+#, fuzzy
+#~ msgid "First name"
+#~ msgstr "Eerste"
+
+#, fuzzy
+#~ msgid "Last name"
+#~ msgstr "Laatste"
+
+#, fuzzy
+#~ msgid "Searching for \"%s:%s:%s:%s\""
+#~ msgstr "Bezig met zoeken voor s s s s"
+
+#, fuzzy
+#~ msgid "You're not online: can't initiate a search session"
+#~ msgstr "U"
+
+#, fuzzy
+#~ msgid "Search form"
+#~ msgstr "Zoeken"
+
+#, fuzzy
+#~ msgid "Info window"
+#~ msgstr "Informatie"
+
+#, fuzzy
+#~ msgid "&Configure KVIrc......"
+#~ msgstr "&Opties..."
+
+#, fuzzy
+#~ msgid "Query extended info"
+#~ msgstr "Ondervraging"
+
+#, fuzzy
+#~ msgid "Requesting informations for user %u (%s)"
+#~ msgstr "voor gebruiker s"
+
+#, fuzzy
+#~ msgid "Failed to request informations for user %u (%s)"
+#~ msgstr "Faalde naar voor gebruiker s"
+
+#, fuzzy
+#~ msgid "Requesting extended informations for user %u (%s)"
+#~ msgstr "voor gebruiker s"
+
+#, fuzzy
+#~ msgid "Failed to request extended informations for user %u (%s)"
+#~ msgstr "Faalde naar voor gebruiker s"
+
+#, fuzzy
+#~ msgid "Warning: this change will take effect the next time that you log in"
+#~ msgstr "Waarschuwing de tijd"
+
+#, fuzzy
+#~ msgid ""
+#~ "Warning: failed to send the request to server, this change will take "
+#~ "effect the next time that you log in"
+#~ msgstr "Waarschuwing naar de naar de tijd"
+
+#, fuzzy
+#~ msgid "Adding user %u (%s) to the online notify list"
+#~ msgstr "gebruiker s naar de"
+
+#, fuzzy
+#~ msgid ""
+#~ "Warning: until you log out, you might still receive status informations "
+#~ "for the removed user"
+#~ msgstr "Waarschuwing status voor de"
+
+#, fuzzy
+#~ msgid ""
+#~ "<nobr><b>%s (%d)</b></nobr><br>First name: %s<br>Last name: %s<br>E-Mail: "
+#~ "%s"
+#~ msgstr ""
+#~ "<nobr><b> s</b></nobr><br> Eerste naam s<br> Laatste naam s<br> Bericht"
+
+#, fuzzy
+#~ msgid "<br><hr>Status: <b>%s</b><br>Ip: %s<br>Real Ip: %s<br>TCP Port: %s"
+#~ msgstr "<br><hr> Status<b> s</b><br> s<br> Bekend s<br> Poort"
+
+#, fuzzy
+#~ msgid "Online &invisible"
+#~ msgstr "Onl&ine"
+
+#, fuzzy
+#~ msgid "ICQ [%s]"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>ICQ</b></font> <nobr><font color=\"%s\">[%s]</"
+#~ "font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b></b></font><nobr><font color=\"%s\"> s</"
+#~ "font></nobr>"
+
+#, fuzzy
+#~ msgid "No ICQ session available: use /icq.open"
+#~ msgstr "Nee sessie beschikbaar"
+
+#, fuzzy
+#~ msgid "User (%u) already in the contact list"
+#~ msgstr "Gebruiker de"
+
+#, fuzzy
+#~ msgid "The alias and password fields must be non-empty"
+#~ msgstr "en wachtwoord"
+
+#, fuzzy
+#~ msgid "An ICQ session is already running: get offline first"
+#~ msgstr "sessie is"
+
+#, fuzzy
+#~ msgid "You're not online"
+#~ msgstr "U"
+
+#, fuzzy
+#~ msgid "Failed to request the extended info"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid ">>> %s (%u): (authorization grant): %s"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid ">>> %s (%u): %s"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Failed to request the search"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid "(Alias)"
+#~ msgstr "Alias"
+
+#, fuzzy
+#~ msgid "Show IP address"
+#~ msgstr "Tonen IP"
+
+#~ msgid "EOF"
+#~ msgstr "EOF"
+
+#, fuzzy
+#~ msgid "Failed to connect : errno = %d (%s)"
+#~ msgstr "Faalde naar s"
+
+#, fuzzy
+#~ msgid "Write error : errno = %d (%s)"
+#~ msgstr "Schrijven s"
+
+#, fuzzy
+#~ msgid "Can't start search: failed to send all the query packets"
+#~ msgstr "naar alles de"
+
+#, fuzzy
+#~ msgid ""
+#~ "Search started for \"%s\" and minimum speed of %u KB/S: sent %d packets "
+#~ "to neighbours"
+#~ msgstr "Zoeken voor s en KB S naar"
+
+#, fuzzy
+#~ msgid "Handshake failed: unexpected handshake action \"%s\""
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Handshake failed: unexpected response \"%s\""
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Invalid payload length %u for PING descriptor (should be 0)"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "Evil: loops back my own PING packets with hops < 2"
+#~ msgstr "door"
+
+#, fuzzy
+#~ msgid "Invalid payload length %u for PONG descriptor (should be 14)"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "Invalid payload length %u for QUERY descriptor (should be >= 2)"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "Evil: loops back my own QUERY packets with hops < 2"
+#~ msgstr "door"
+
+#, fuzzy
+#~ msgid "Invalid payload length %u for QUERYHIT descriptor (should be >= 27)"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "Invalid payload length %u for QUERYHIT descriptor (should be >= %u)"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "Invalid payload length %u for PUSH descriptor (should be 26)"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid ""
+#~ "Rejecting valid PUSH request from %s for file index %u: too many outgoing "
+#~ "transfers"
+#~ msgstr "s voor file"
+
+#, fuzzy
+#~ msgid ""
+#~ "Failed to setup the listening socket: can't accept incoming network "
+#~ "connections"
+#~ msgstr "Faalde naar de Inkomend netwerk"
+
+#, fuzzy
+#~ msgid "Listening for network connections on port %u"
+#~ msgstr "voor netwerk aan poort"
+
+#, fuzzy
+#~ msgid "Listening for network connections disabled: (user option)"
+#~ msgstr "voor netwerk uitgeschakeld gebruiker"
+
+#, fuzzy
+#~ msgid ""
+#~ "Failed to setup the listening socket: can't accept incoming transfer "
+#~ "connections"
+#~ msgstr "Faalde naar de Inkomend"
+
+#, fuzzy
+#~ msgid "Listening for transfer connections on port %u"
+#~ msgstr "voor aan poort"
+
+#, fuzzy
+#~ msgid "Listening for transfer connections disabled: (user option)"
+#~ msgstr "voor uitgeschakeld gebruiker"
+
+#, fuzzy
+#~ msgid ""
+#~ "Can't connect to node %s:%u: another connection to this node is already "
+#~ "in progress"
+#~ msgstr "naar s verbinding naar is"
+
+#, fuzzy
+#~ msgid "Can't connect to node %s:%u: it is my own address"
+#~ msgstr "naar s it is"
+
+#, fuzzy
+#~ msgid "User kill request"
+#~ msgstr "Gebruiker"
+
+#, fuzzy
+#~ msgid "Can't start the PUSH request: the source node is dead"
+#~ msgstr "de de bron is"
+
+#, fuzzy
+#~ msgid "Can't start the PUSH request, the source node is no longer existing"
+#~ msgstr "de de bron is nee"
+
+#, fuzzy
+#~ msgid ""
+#~ "Rejecting connection from node %s:%u: not accepting connections (user "
+#~ "option)"
+#~ msgstr "verbinding s gebruiker"
+
+#, fuzzy
+#~ msgid "Rejecting connection from node %s:%u: connection limit reached"
+#~ msgstr "verbinding s verbinding"
+
+#, fuzzy
+#~ msgid ""
+#~ "Rejecting connection from node %s:%u: another connection to this node is "
+#~ "already in progress"
+#~ msgstr "verbinding s verbinding naar is"
+
+#, fuzzy
+#~ msgid "Net bandwidth: I: %d O: %d (bytes/sec)"
+#~ msgstr "I bytes"
+
+#, fuzzy
+#~ msgid "errno = %d (%s)"
+#~ msgstr "s"
+
+#, fuzzy
+#~ msgid "Too many connections: freeing bandwidth: dropping connected node"
+#~ msgstr "Te veel verbindingen: bandbreedte vrijmaken: "
+
+#, fuzzy
+#~ msgid "System select() error: errno=%d (%s)"
+#~ msgstr "Systeem s"
+
+#, fuzzy
+#~ msgid "Local DB Search: \"%s\" (%u matches)"
+#~ msgstr "Lokaal Zoeken s"
+
+#, fuzzy
+#~ msgid "Status"
+#~ msgstr "Status"
+
+#, fuzzy
+#~ msgid "Bandwidth (bytes/sec)"
+#~ msgstr "bytes"
+
+#, fuzzy
+#~ msgid "Remove selected nodes"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "Remove non connected nodes"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "ID"
+#~ msgstr "Identiteit"
+
+#, fuzzy
+#~ msgid "File size (bytes)"
+#~ msgstr "Bestand grootte bytes"
+
+#, fuzzy
+#~ msgid "Spy local search results"
+#~ msgstr "Bespionneren lokaal"
+
+#, fuzzy
+#~ msgid "On network: %d nodes connected"
+#~ msgstr "Aan netwerk"
+
+#, fuzzy
+#~ msgid "Not on network"
+#~ msgstr "Niet aan"
+
+#~ msgid "Gnutella"
+#~ msgstr "Gnutella"
+
+#, fuzzy
+#~ msgid "Connected (Incoming handshake)"
+#~ msgstr "Verbonden"
+
+#~ msgid "Just born"
+#~ msgstr "Net geboren"
+
+#, fuzzy
+#~ msgid "New %s node: %s:%s"
+#~ msgstr "Nieuw s s"
+
+#, fuzzy
+#~ msgid "Lost node: %s:%s : %s"
+#~ msgstr "Verloren s s"
+
+#, fuzzy
+#~ msgid "Connected (Handshake)"
+#~ msgstr "Verbonden"
+
+#, fuzzy
+#~ msgid "Connected (On Network)"
+#~ msgstr "Verbonden Aan Netwerk"
+
+#, fuzzy
+#~ msgid "Stats for node %d %c: %s:%u"
+#~ msgstr "voor s"
+
+#, fuzzy
+#~ msgid " Connection type %c: %s"
+#~ msgstr "Verbinding"
+
+#, fuzzy
+#~ msgid " Packets processed %c: %u"
+#~ msgstr "Pakketten"
+
+#, fuzzy
+#~ msgid " Packets enqueued %c: %u"
+#~ msgstr "Pakketten"
+
+#, fuzzy
+#~ msgid " Bytes received %c: %u"
+#~ msgstr "Bytes"
+
+#, fuzzy
+#~ msgid " Bytes sent %c: %u"
+#~ msgstr "Bytes"
+
+#, fuzzy
+#~ msgid " Unroutable (no path) %c: %u"
+#~ msgstr "nee"
+
+#, fuzzy
+#~ msgid " Unknown %c: %u"
+#~ msgstr "Onbekend"
+
+#, fuzzy
+#~ msgid ""
+#~ " Pong %c: %u (%u routed, %u directed to me, %u dropped "
+#~ "(%u ttl expired, %u unroutable))"
+#~ msgstr "naar"
+
+#, fuzzy
+#~ msgid ""
+#~ " Query %c: %u (%u routed, %u dropped (%u looped back, %u "
+#~ "ttl expired, %u duplicated))"
+#~ msgstr "Ondervraging"
+
+#, fuzzy
+#~ msgid ""
+#~ " QueryHit %c: %u (%u routed, %u directed to me, %u "
+#~ "dropped (%u ttl expired, %u unroutable))"
+#~ msgstr "naar"
+
+#, fuzzy
+#~ msgid ""
+#~ " Push %c: %u (%u routed, %u directed to me, %u dropped "
+#~ "(%u ttl expired, %u unroutable, %u duplicated))"
+#~ msgstr "Duwen naar"
+
+#, fuzzy
+#~ msgid "Select the files to share"
+#~ msgstr "Selecteren de naar"
+
+#, fuzzy
+#~ msgid "No Gnutella window: use gnutella.open first"
+#~ msgstr "Nee venster"
+
+#~ msgid "Gnutella options"
+#~ msgstr "Gnutella opties"
+
+#, fuzzy
+#~ msgid "Maximum network connections"
+#~ msgstr "netwerk"
+
+#, fuzzy
+#~ msgid "Listen for network connections"
+#~ msgstr "voor netwerk"
+
+#, fuzzy
+#~ msgid "Network listen port"
+#~ msgstr "Netwerk"
+
+#, fuzzy
+#~ msgid "Connection speed (KBit/sec)"
+#~ msgstr "Verbinding"
+
+#, fuzzy
+#~ msgid "Max uploads"
+#~ msgstr "Max"
+
+#, fuzzy
+#~ msgid "Drop network connections when downloading"
+#~ msgstr "netwerk"
+
+#, fuzzy
+#~ msgid "Max network connections to drop per download"
+#~ msgstr "Max netwerk naar"
+
+#, fuzzy
+#~ msgid "Remove selected transfers"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "Kill"
+#~ msgstr "Beëindigen (Kill)"
+
+#, fuzzy
+#~ msgid "Retry (same host)"
+#~ msgstr "Nogmaals"
+
+#, fuzzy
+#~ msgid "Search for this filename"
+#~ msgstr "Zoeken voor"
+
+#, fuzzy
+#~ msgid "Dead (Retry killed)"
+#~ msgstr "Nogmaals"
+
+#, fuzzy
+#~ msgid "Waiting for retry (%u secs)"
+#~ msgstr "voor seconden"
+
+#~ msgid "Passive"
+#~ msgstr "pasive"
+
+#, fuzzy
+#~ msgid "Dead (Failed+Retried)"
+#~ msgstr "Faalde"
+
+#, fuzzy
+#~ msgid ""
+#~ "[smart download]: Attempting to retry transfer for file \"%s\": same "
+#~ "host , attempt %u"
+#~ msgstr "naar voor file s"
+
+#, fuzzy
+#~ msgid ""
+#~ "[smart download]: Attempting to retry transfer for file \"%s\": changing "
+#~ "host"
+#~ msgstr "naar voor file s"
+
+#, fuzzy
+#~ msgid ""
+#~ "[smart download]: No alternate hit found for file \"%s\": performing a "
+#~ "query; will retry again in 30 secs"
+#~ msgstr "Nee voor file s"
+
+#, fuzzy
+#~ msgid "Waiting for push"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "Dead (Completed)"
+#~ msgstr "Voltooid"
+
+#, fuzzy
+#~ msgid "Dead (Failed)"
+#~ msgstr "Faalde"
+
+#, fuzzy
+#~ msgid "Connection closed by remote host"
+#~ msgstr "Verbinding door op afstand"
+
+#, fuzzy
+#~ msgid "HTTP header too long (broken client ?)"
+#~ msgstr "HTTP"
+
+#, fuzzy
+#~ msgid "Unroutable IP address"
+#~ msgstr "IP"
+
+#, fuzzy
+#~ msgid "Failed to create the listening socket"
+#~ msgstr "Faalde naar de"
+
+#, fuzzy
+#~ msgid "Failed to retrieve the local port"
+#~ msgstr "Faalde naar de lokaal"
+
+#, fuzzy
+#~ msgid "The index specified in the header is not the expected one (%u)"
+#~ msgstr "de is de"
+
+#, fuzzy
+#~ msgid "Broken servent identifier"
+#~ msgstr "Gebroken"
+
+#, fuzzy
+#~ msgid "The servent identifier is not the expected one (%s)"
+#~ msgstr "is de s"
+
+#, fuzzy
+#~ msgid "The file name is not the expected one (%s)"
+#~ msgstr "file naam is de s"
+
+#~ msgid "Invalid request syntax"
+#~ msgstr "Ongeldige verzoek syntax"
+
+#, fuzzy
+#~ msgid "The file index requested does not match the PUSH request"
+#~ msgstr "file overeenkomstig de"
+
+#, fuzzy
+#~ msgid "The file name requested does not match the PUSH request"
+#~ msgstr "file naam overeenkomstig de"
+
+#, fuzzy
+#~ msgid "Invalid \"Range\" request"
+#~ msgstr "Bereik"
+
+#, fuzzy
+#~ msgid "Broken \"Range\" request"
+#~ msgstr "Gebroken Bereik"
+
+#, fuzzy
+#~ msgid "Accepting GET request from %s:%u for file %s (range %u-%u)"
+#~ msgstr "s voor file s"
+
+#~ msgid "Rejecting GET request: "
+#~ msgstr "Get request gewijgerd"
+
+#~ msgid ""
+#~ "\n"
+#~ "[transfer %u]: %s"
+#~ msgstr ""
+#~ "\n"
+#~ "[transfer %u]: %s"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: The server declared the data content size to be %u bytes "
+#~ "instead of %u (expected from QueryHit), trusting him, even if I'm "
+#~ "confused a bit"
+#~ msgstr "de grootte naar bytes I"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: Invalid Content-length header line sent by the server (%"
+#~ "s): trusting the QueryHit file size"
+#~ msgstr "Inhoud regel door de s de file"
+
+#, fuzzy
+#~ msgid ""
+#~ "No Content-length header line sent by the server: trusting the QueryHit "
+#~ "file size"
+#~ msgstr "Nee Inhoud regel door de de file"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: The server specified an invalid resume position (%u where %"
+#~ "u was expected), this was rather fatal"
+#~ msgstr "waar"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: Invalid Content-range header line sent by the server (%s): "
+#~ "trying to blindly trust the server"
+#~ msgstr "Inhoud regel door de s naar de"
+
+#, fuzzy
+#~ msgid ""
+#~ "No Content-range header line sent by the server: trying to blindly trust "
+#~ "the server"
+#~ msgstr "Nee Inhoud regel door de naar de"
+
+#, fuzzy
+#~ msgid "Server response to HTTP GET:"
+#~ msgstr "Server naar HTTP:"
+
+#, fuzzy
+#~ msgid "Invalid response while expecting http OK: "
+#~ msgstr "http OK "
+
+#, fuzzy
+#~ msgid "%u of %u bytes [%d% at %u (bytes/sec)%s"
+#~ msgstr "bytes bytes"
+
+#~ msgid "]: stalled"
+#~ msgstr "]: stalled"
+
+#, fuzzy
+#~ msgid "Unexpected 0 bytes transfer requested"
+#~ msgstr "bytes"
+
+#, fuzzy
+#~ msgid "File I/O Error: can't seek to the resume position"
+#~ msgstr "Bestand I Fout naar de"
+
+#, fuzzy
+#~ msgid "File I/O Error: unexpected EOF"
+#~ msgstr "Bestand I Fout"
+
+#, fuzzy
+#~ msgid "Stalled (user option kill)"
+#~ msgstr "Onderbroken gebruiker"
+
+#, fuzzy
+#~ msgid "Completed at %u (bytes/sec)"
+#~ msgstr "Voltooid bytes"
+
+#, fuzzy
+#~ msgid "Invalid empty file name"
+#~ msgstr "leeg file"
+
+#, fuzzy
+#~ msgid "Failed to seek the file to the resume position"
+#~ msgstr "Faalde naar de file naar de"
+
+#, fuzzy
+#~ msgid "The downloaded file has been saved as file:/%s"
+#~ msgstr "file file"
+
+#, fuzzy
+#~ msgid ""
+#~ "Failed to rename the downloaded file to %s, it is actually saved as file:/"
+#~ "%s (it would be a good idea to move it from there)"
+#~ msgstr "Faalde naar de file naar s it is file s it naar it"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: The file is currently locked by filelock %s, so it might "
+#~ "be actually being downloaded.If you feel this message to be in error, "
+#~ "please remove the filelock by hand and restart the download."
+#~ msgstr "file is door s it naar verwijderen de door en de."
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: The file %s exists on disk but it has size greater than "
+#~ "expected: this might be a terminated download"
+#~ msgstr "file s aan it grootte"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: The file %s exists on disk: attempting a resume from "
+#~ "position %u"
+#~ msgstr "file s aan"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: The file %s exists on disk but the expected final sizes do "
+#~ "not match"
+#~ msgstr "file s aan de"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: The file %s exists on disk but there was an arror while "
+#~ "analyzing it (stat() call failed)"
+#~ msgstr "file s aan it"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: File %s exists on disk but its lock seems to be broken"
+#~ msgstr "Bestand s aan naar"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: File %s exists: Moving it out of my way (renaming to %s."
+#~ "rnm)"
+#~ msgstr "Bestand s Bezig met verplaatsen it naar s"
+
+#, fuzzy
+#~ msgid "[transfer %u]: Failed to write the lock file (%s)"
+#~ msgstr "Faalde naar de file s"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: Failed to open the lock file for writing (%s): %s (errno=%"
+#~ "d)"
+#~ msgstr "Faalde naar de file voor s s"
+
+#, fuzzy
+#~ msgid "[transfer %u]: Failed to write the resume lock file (%s)"
+#~ msgstr "Faalde naar de file s"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %u]: Failed to open the resume lock file for writing (%s): %s "
+#~ "(errno=%d)"
+#~ msgstr "Faalde naar de file voor s s"
+
+#, fuzzy
+#~ msgid "Can't lock the download file (Another download in progress ?)"
+#~ msgstr "de file"
+
+#, fuzzy
+#~ msgid ""
+#~ "[transfer %d]: Failed to connect to the remote host, attempting a PUSH"
+#~ msgstr "Faalde naar naar de op afstand"
+
+#, fuzzy
+#~ msgid "[transfer %d]: Failed to connect to the remote host, PUSH failed"
+#~ msgstr "Faalde naar naar de op afstand"
+
+#~ msgid "[transfer %u]: Succesfully terminated"
+#~ msgstr "[transfer %u] succesvol beeindigd"
+
+#, fuzzy
+#~ msgid "Size (Bytes)"
+#~ msgstr "Grootte Bytes"
+
+#, fuzzy
+#~ msgid "Apply filter"
+#~ msgstr "Toepassen"
+
+#~ msgid "Store"
+#~ msgstr "Opslaan"
+
+#, fuzzy
+#~ msgid "Lock"
+#~ msgstr "Vergrendelen"
+
+#, fuzzy
+#~ msgid "Download selected"
+#~ msgstr "Ophalen"
+
+#, fuzzy
+#~ msgid "%d hits (%d visible, %d pending)"
+#~ msgstr "zichtbaar"
+
+#, fuzzy
+#~ msgid "Out of memory for biff applet!"
+#~ msgstr "Buiten geheugen voor!"
+
+#, fuzzy
+#~ msgid "What the #$%&@^& !?!?\n"
+#~ msgstr "de\n"
+
+#, fuzzy
+#~ msgid "Already checking for mail on this account."
+#~ msgstr "voor aan."
+
+#, fuzzy
+#~ msgid "Checking for mail in %s"
+#~ msgstr "voor"
+
+#, fuzzy
+#~ msgid "%s: %i new."
+#~ msgstr "s."
+
+#~ msgid "%s: no new messages."
+#~ msgstr "%s: geen nieuwe berichten."
diff --git a/po/modules/options/options_pl.po b/po/modules/options/options_pl.po
new file mode 100644
index 00000000..5e94d250
--- /dev/null
+++ b/po/modules/options/options_pl.po
@@ -0,0 +1,7797 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:304
+msgid ""
+msgstr ""
+"Project-Id-Version: KVirc 3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2001-09-11 00:28+0200\n"
+"Last-Translator: Krzysztof Godlewski <[email protected]>\n"
+"Language-Team: Polish <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"X-Generator: KBabel 0.9.6\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:232
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:51
+#, fuzzy
+msgid "Font:"
+msgstr "Wytnij"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:47
+msgid "Background color:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:129
+msgid "Background image:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:51
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:46
+msgid "Horizontal align:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:50
+msgid "Vertical align:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:59
+msgid "Mark Line:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:66
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:124
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:59
+msgid "Tile"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:62
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:55
+msgid "Left"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:56
+msgid "Right"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:132
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:62
+#, fuzzy
+msgid "Center"
+msgstr "Ogólne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:60
+msgid "Top"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:61
+msgid "Bottom"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:149
+msgid "Enable URL highlighting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:150
+msgid "Use line wrap margin"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:151
+msgid "Maximum buffer size:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:152
+msgid " lines"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:153
+msgid "Link tooltip show delay:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:306
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:59
+msgid " msec"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:155
+msgid "Link tooltip hide delay:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:157
+msgid "Track last read text line"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:48
+msgid "NickServ Authentication Rule"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:55
+#, fuzzy
+msgid "Registered NickName"
+msgstr "Za&rejestrowani użytkownicy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:60
+msgid "Put here the nickname that you have registered with NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:277
+msgid "NickServ Mask"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:70
+#, c-format
+msgid ""
+"This is the mask that NickServ must match to be correctly identified as the "
+"NickServ service. This usually will be something like <b>NickServ!"
+"[email protected]</b>.<br>You can use wildcards for this field, but "
+"generally it is a security flaw. If you're 100%% sure that NO user on the "
+"network can use the nickname \"NickServ\", the mask <b>NickServ!*@*</b> may "
+"be safe to use in this field."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:78
+#, fuzzy
+msgid "Message Regexp"
+msgstr "Typy plików"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:86
+msgid ""
+"This is the simple regular expression that the identification request "
+"message from NickServ must match in order to be correctly recognized.<br>The "
+"message is usually something like \"To identify yourself please use /ns "
+"IDENTIFY password\" and it is sent when the NickServ wants you to "
+"authenticate yourself. You can use the * and ? wildcards."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:259
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:279
+msgid "Identify Command"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:98
+msgid ""
+"This is the command that will be executed when NickServ requests "
+"authentication for the nickname described in this rule (if the both server "
+"and NickServ mask are matched). This usually will be something like <b>msg "
+"NickServ identify &lt;yourpassword&gt;</b>.<br>You can use <b>msg -q</b> if "
+"you don't want the password echoed on the screen. Please note that there is "
+"no leading slash in this command."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:256
+#, fuzzy
+msgid "Server mask"
+msgstr "Serwer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:117
+msgid ""
+"This is the mask that the current server must match in order for this rule "
+"to apply. It can contain * and ? wildcards.<br>Do NOT use simply \"*\" "
+"here..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:128
+msgid "Hint: Move the mouse cursor over the fields to get help"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:137
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:68
+msgid "Cancel"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:803
+msgid "OK"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:164
+#, fuzzy
+msgid "Invalid NickServ Rule"
+msgstr "Serwery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:169
+msgid "The Nickname field can't be empty!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:175
+msgid "The Nickname field can't contain spaces!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:183
+msgid "The NickServ mask can't be empty!<br>You must put at least * there."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:191
+msgid "The Message Regexp can't be empty!<br>You must put at least * there."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:199
+msgid "The Identify Command can't be empty!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:265
+msgid "Enable NickServ Identification"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:269
+msgid "This check enables the automatic identification with NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:276
+msgid "Nickname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:258
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:278
+#, fuzzy
+msgid "NickServ Request Mask"
+msgstr "Tryb &użytkownika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:265
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on all the networks."
+"<br>Please be aware that this feature can cause your NickServ passwords to "
+"be stolen if used improperly. Make sure that you fully understand the "
+"NickServ authentication protocol.<br>In other words, be sure to know what "
+"you're doing.<br>Also note that the password that you provide is stored as "
+"<b>PLAIN TEXT</b>.<br>KVIrc supports also per-network NickServ "
+"authentication rules that can be created in the \"Advanced...\" network "
+"options (accessible from the servers dialog).</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:293
+#, fuzzy
+msgid "Add Rule"
+msgstr "Dodaj nowy serwer proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:298
+msgid "Edit Rule"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:302
+#, fuzzy
+msgid "Delete Rule"
+msgstr "Usuń"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:31
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:36
+msgid "Font"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:38
+msgid "Foreground color"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:37
+msgid "Background color"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:34
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:44
+msgid "Background image"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:40
+#, fuzzy
+msgid "Enable tray icon"
+msgstr "Okno &terminala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:41
+#, fuzzy
+msgid "Close in tray"
+msgstr "M&inimalizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:42
+#, fuzzy
+msgid "Minimize in tray"
+msgstr "M&inimalizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:44
+msgid "Enable tray icon flashing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:45
+msgid "Enable level-based message notification (not a message-type based)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:47
+msgid "Select message levels to notify"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:49
+msgid "Minimum level for low-priority messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:53
+msgid "Minimum level for high-priority message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.cpp:40
+msgid ""
+"This section contains irc protection tools<br><p>like<b> flood, ignore, "
+"antispam. </b> </p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:40
+msgid ""
+"<center><b>Settings for CTCP.</b></center><p>The <b>Client-To-Client "
+"Protocol</b> (CTCP) is used to transmit special control messages over an IRC "
+"connection. These messages can request information from clients or negotiate "
+"file transfers.<br><br></p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:47
+msgid "CTCP Replies"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:48
+msgid "Append to VERSION reply:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:52
+msgid ""
+"<center>This text will be appended to the CTCP VERSION reply.<br>For "
+"example, you can place a script name here.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:55
+msgid "Append to SOURCE reply:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:59
+msgid ""
+"<center>This text will be appended to the CTCP SOURCE reply.<br>For example, "
+"you can place the source URL for a script here.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:69
+msgid "PAGE reply:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:73
+msgid ""
+"<center>This is the CTCP PAGE reply.<br>It should contain some sort of "
+"acknowledgement for CTCP PAGE messages.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:76
+msgid "Show the CTCP replies in the active window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:78
+msgid "Show dialog for CTCP page requests"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:36
+#, fuzzy
+msgid "Use tree taskbar"
+msgstr "Tryb &użytkownika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:37
+msgid "Sort windows by name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:38
+#, fuzzy
+msgid "Show window icons in taskbar"
+msgstr "Nie podano indeksu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:39
+msgid "Show activity meter in taskbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:41
+msgid ""
+"<center>This option enables the usage of the taskbar activity meter. Each "
+"window entry will have a small indicator of the activity that is going on in "
+"that window. The indicator is a small square that changes colors, dark "
+"colors mean low activity, while bright colors signal high activity. KVIrc "
+"also uses some heuristics to determine whether the activity is somewhat "
+"\"human\" or it is generated by automated entities (such as bots or IRC "
+"servers). \"Human\" activity causes the indicator to be shaded red while "
+"automated activity causes the indicator to be shaded blue.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:49
+#, fuzzy
+msgid "Show IRC context indicator in taskbar"
+msgstr "&Nowy kontekst irc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:50
+msgid "Enable window tooltips"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:233
+#, fuzzy
+msgid "Text/Alert Colors"
+msgstr "Zamknij"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:125
+msgid "Normal:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:126
+#, fuzzy
+msgid "Selected:"
+msgstr "Zaznacz wszystko"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:236
+msgid "Alert Level 1:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:237
+msgid "Alert Level 2:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:238
+msgid "Alert Level 3:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:239
+msgid "Alert Level 4:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:240
+msgid "Alert Level 5:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:241
+msgid "Progress bar color:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:124
+msgid "Background Colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:212
+#, fuzzy
+msgid "Show header"
+msgstr "&Okno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:214
+#, fuzzy
+msgid "Minimum width:"
+msgstr "M&inimalizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:215
+msgid "Maximum width:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:235
+#, fuzzy
+msgid "Minimized:"
+msgstr "M&inimalizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:242
+msgid "Minimum width of buttons:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:244
+msgid "Set maximum button width"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:245
+#, fuzzy
+msgid "Maximum width of buttons:"
+msgstr "M&inimalizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:246
+msgid "Use flat buttons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:96
+#, fuzzy
+msgid "Network Details"
+msgstr "Interfejs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:82
+msgid "Description:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:116
+msgid "<center>Put here a brief description of the network.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:477
+msgid "Properties"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:123
+msgid "Username:"
+msgstr "Użytkownik:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:134
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to servers "
+"on this network.\n"
+"If this field is left empty (most common case), KVIrc will use the default "
+"username specified in the \"Identity\" options tab.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:498
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:320
+msgid "Nickname:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:145
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to the servers on this network.<br>If this field is left empty (most "
+"common case), the default nickname (specified in the \"Identity\" settings) "
+"will be used.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:509
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:342
+#, fuzzy
+msgid "Real name:"
+msgstr "Prawdziwe imię"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:153
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with the servers on this network.<br>If you leave this field empty "
+"(most common case), the default \"real name\" (specified in the \"Identity\" "
+"settings) will be used.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:644
+#, fuzzy
+msgid "Encoding:"
+msgstr "Wygląd tekstu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:164
+msgid ""
+"<center>This box allows you to choose the preferred encoding for the servers "
+"in this network. If you choose \"Use System Encoding\" then the encoding "
+"will be set to the systemwide value that you choose in the \"Encoding\" page "
+"of the options dialog.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:173
+#, fuzzy
+msgid "Use System Encoding"
+msgstr "Wygląd tekstu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:185
+#, fuzzy
+msgid "Connect to this network at startup"
+msgstr "Połączenie przerwane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:189
+msgid ""
+"<center>This option will cause KVIrc to automatically connect to this "
+"network at startup</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:79
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:120
+msgid "General"
+msgstr "Ogólne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:756
+msgid "Channels to join automatically upon connect:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:211
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to a server in this network has been established. To add a "
+"channel, type its name in the text input below and click \"<b>Add</b>\".</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:217
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:62
+#, fuzzy
+msgid "Join Channels"
+msgstr "Ostatnie &kanały"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:228
+msgid ""
+"<center>The following commands will be executed after a connection to a "
+"server in this network has been established.<br><b>Important:</b> Enter "
+"commands <b>without</b> a preceding slash (e.g. <tt>quote pass secret</tt> "
+"instead of <tt>/quote pass secret</tt>).<br>KVIrc will first send the USER "
+"command, then eventually PASS and NICK and then execute this command "
+"sequence.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:782
+#, fuzzy
+msgid "On Connect"
+msgstr "Połącz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:249
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"a server in this network.<br><b>Important:</b> Enter commands <b>without</b> "
+"a preceding slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote "
+"privatelog</tt>).<br>This is useful for automatically opening queries, "
+"setting variables, etc.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:801
+msgid "On Login"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:285
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on this network.<br>Please "
+"be aware that this feature can cause your NickServ passwords to be stolen if "
+"used improperly. Make sure that you fully understand the NickServ "
+"authentication protocol.<br>In other words, be sure to know what you're "
+"doing.<br>Also note that the password that you provide is stored as <b>PLAIN "
+"TEXT</b>.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:35
+msgid "NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:323
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:60
+msgid "&OK"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:449
+#, fuzzy
+msgid "Server Details"
+msgstr "Serwery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:465
+msgid ""
+"<center>This is a brief description of this server. This field has no "
+"restrictions but many server lists use it to describe the server's physical "
+"location</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:484
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to this "
+"server.\n"
+"If this field is left empty (most common case), KVIrc will first look if an "
+"username is specified for the network that this server belongs to, and if "
+"that is empty then KVIrc will use the default username specified in the "
+"\"Identity\" options tab.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:490
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:127
+msgid "Password:"
+msgstr "Hasło:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:495
+msgid ""
+"<center>If this server requires a password, put it in this field, otherwise "
+"leave it empty.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:504
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to this server.<br>If this field is left empty (most common case), "
+"KVIrc will first look if a nickname is specified for the network that this "
+"server belongs to, and if that is empty then the default nickname (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:513
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with this server.<br>If you leave this field empty (most common case), "
+"KVIrc will first look if a real name is specified for the network that this "
+"server belongs to, and if that is empty the default \"real name\" (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:683
+msgid "User Mode"
+msgstr "Tryb użytkownika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:520
+msgid "Use default user mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:522
+msgid ""
+"<center>If this is enabled, the global initial <b>user mode</b> (configured "
+"from the identity dialog) will be used. If disabled, you can configure an "
+"initial user mode for this server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:684
+msgid "Invisible (+i)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:534
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:685
+#, fuzzy
+msgid "Server notices (+s)"
+msgstr "Serwery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:686
+msgid "Wallops (+w)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:548
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:60
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:104
+msgid "Identity"
+msgstr "Tożsamość"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:115
+msgid "Port:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:565
+msgid ""
+"<center>This is the default <b>port</b> that this server will be contacted "
+"on.<br>Usually <b>6667</b> is OK.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:571
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:119
+#, fuzzy
+msgid "IP address:"
+msgstr "Adres Ip:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:576
+msgid ""
+"<center>This is the <b>IP address</b> of this server, it is here for caching "
+"purposes.<br>If you leave this field empty, KVIrc will fill it in the first "
+"time it connects to the server. If you enable the \"cache IP address\" "
+"option below, KVIrc will use it as a \"cached result\" and avoid looking it "
+"up again.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:596
+msgid "Cache IP address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:599
+msgid ""
+"<center>This check will enable <b>IP address caching</b> for this server:"
+"<br>DNS lookups can be time-consuming and might be blocking on some "
+"platforms; this option will cause KVIrc to look up the server hostname only "
+"once.<br><br> Advanced: you can also use this option to force a certain "
+"server name to resolve to a fixed ip address when either the dns for that "
+"server is temporairly unreachable or you want to avoid the round-robin "
+"lookups.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:609
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:140
+#, fuzzy
+msgid "Use IPv6 protocol"
+msgstr "Używaj IpV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:619
+msgid ""
+"<center>This check identifies IPv6 servers.<br>If enabled, KVIrc will "
+"attempt to use the IPv6 protocol (thus your OS <b>must</b> have a working "
+"IPv6 stack and you <b>must</b> have an IPv6 connection).</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:624
+#, fuzzy
+msgid "Use SSL protocol"
+msgstr "Używaj IpV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:627
+msgid ""
+"<center>This check will cause the connection to use the <b>Secure Socket "
+"Layer</b> encryption support. Obviously, this server must have support for "
+"this, too. :)</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:636
+#, fuzzy
+msgid "Connect to this server at startup"
+msgstr "Połączenie przerwane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:641
+msgid ""
+"<center>This option will cause KVIrc to connect to the IRC server when it is "
+"started.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:650
+msgid ""
+"<center>This box allows you to choose the preferred encoding for this sever. "
+"If you choose \"Use Network Encoding\" then the encoding will be inherited "
+"from the network that this server belongs to.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:659
+#, fuzzy
+msgid "Use Network Encoding"
+msgstr "Wygląd tekstu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:672
+msgid "Link filter:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:701
+msgid ""
+"<center>This field specifies the name of a module that exports a link filter "
+"for this type of server.<br>For plain IRC connections, you don't need any "
+"link filters; this is used for incompatible protocols.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:705
+msgid "Id:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:713
+msgid ""
+"<center>This field allows you to specify a really unique id for this server. "
+"You will then be able to use /server -x &lt;this_id&gt; to make the "
+"connection. This is especially useful when you have multiple server entries "
+"with the same hostname and port in different networks (bouncers?)</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:719
+#, fuzzy
+msgid "Proxy server:"
+msgstr "Serwery IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:724
+msgid ""
+"<center>This is the <b>proxy</b> that KVIrc will use to connect to thos "
+"server.\n"
+"If this field is set in \"Default\" KVirc will use global proxy settings, if "
+"it is set in \"Direct connection\" KVirc will connect to this server without "
+"proxy. You can define new proxy server in global options' \"Proxy servers\" "
+"menu.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:729
+#, fuzzy
+msgid "Default"
+msgstr "Wyczyść"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:730
+#, fuzzy
+msgid "Direct connection"
+msgstr "brak połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:746
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:28
+msgid "Connection"
+msgstr "Połączenie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:758
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to this server has been established. To add a channel, type its "
+"name in the text input below and click \"<b>Add</b>\".</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:776
+msgid ""
+"<center>The following commands will be executed after a connection has been "
+"established.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote pass secret</tt> instead of <tt>/quote pass secret</"
+"tt>).<br>KVIrc will first send the USER command, then eventually PASS and "
+"NICK and then execute this command sequence.<br>This is particularly useful "
+"for IRC bouncers that require login commands.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:796
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"this server.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote privatelog</tt>)."
+"<br>This is useful for automatically opening queries, setting variables, etc."
+"</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1041
+msgid "Server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1042
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:73
+msgid "Description"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1054
+msgid ""
+"<center>This is the list of available IRC servers.<br>Right-click on the "
+"list to add or remove servers and perform other actions.<br>Double-click on "
+"a item for advanced options.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1069
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1430
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1554
+msgid "New Network"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1077
+#, fuzzy
+msgid "New Server"
+msgstr "Serwery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1086
+#, fuzzy
+msgid "Remove Network/Server"
+msgstr "Usuń serwer proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1098
+#, fuzzy
+msgid "Copy Server"
+msgstr "Serwery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1107
+#, fuzzy
+msgid "Paste Server"
+msgstr "Serwery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1446
+#, fuzzy
+msgid "Import List"
+msgstr "Trwa łączenie..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1125
+#, fuzzy
+msgid "Active Configuration"
+msgstr "Zapi&sz ustawienia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1332
+msgid "Server:"
+msgstr "Serwer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1130
+msgid ""
+"<center>This is the name of the currently selected server or network</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1153
+msgid "Advanced..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1156
+msgid "<center>Click here to edit advanced options for this entry</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1159
+#, fuzzy
+msgid "Connect &Now"
+msgstr "Połącz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1164
+msgid ""
+"<center>Hit this button to connect to the currently selected server.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1177
+msgid ""
+"<center>This button shows a list of recently used servers. It allows you to "
+"quickly find them in the list.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1181
+msgid "Show this dialog at startup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1184
+msgid ""
+"<center>If this option is enabled, the Servers dialog will appear every time "
+"you start KVIrc</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1335
+msgid "Network:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1345
+msgid "No selection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1364
+msgid "UnknownNet"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1431
+#, fuzzy
+msgid "Remove Network"
+msgstr "Usuń serwer proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1434
+#, fuzzy
+msgid "&New Server"
+msgstr "Serwery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1435
+#, fuzzy
+msgid "Re&move Server"
+msgstr "Usuń serwer proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1437
+#, fuzzy
+msgid "&Copy Server"
+msgstr "Serwery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1439
+#, fuzzy
+msgid "&Paste Server"
+msgstr "Serwery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1444
+#, fuzzy
+msgid "Clear List"
+msgstr "Wyczyść"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1483
+msgid ""
+"Oops... something weird happened:<br>Can't find any module capable of "
+"importing servers."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1500
+msgid ""
+"Oops... something weird happened:<br>Can't find the module that was capable "
+"of this import action. :("
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1574
+msgid "irc.unknown.net"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:39
+msgid "Disable parser warnings"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:40
+msgid "Disable broken event handlers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:41
+msgid "Kill broken timers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:42
+#, fuzzy
+msgid "Send unknown commands as /RAW"
+msgstr "Nieznana komenda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:46
+msgid "Automatically unload unused modules"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:47
+msgid "Ignore module versions (dangerous)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:51
+msgid "Relay errors and warnings to debug window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:52
+#, fuzzy
+msgid "Create minimized debug window"
+msgstr "Minimalizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:59
+#, fuzzy
+msgid "Nickname alternatives"
+msgstr "Ostatnie &nicki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:62
+msgid ""
+"<center>Here you can choose up to three nicknames alternative to the primary "
+"one. KVIrc will use the alternatives if the primary nick is already used by "
+"someone else on a particular IRC network.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:69
+#, fuzzy
+msgid "Alt. Nickname 1:"
+msgstr "Ostatnie &nicki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:76
+#, fuzzy
+msgid "Alt. Nickname 2:"
+msgstr "Ostatnie &nicki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:83
+#, fuzzy
+msgid "Alt. Nickname 3:"
+msgstr "Ostatnie &nicki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Ok"
+msgstr "Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:130
+msgid "Avatar Download - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:136
+msgid "<center>Please wait while the avatar is being downloaded</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:139
+msgid "Abort"
+msgstr "Przerwij"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:170
+msgid "Failed to start the download"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:184
+msgid "Download aborted by user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:213
+#, fuzzy
+msgid "Choose Avatar - KVIrc"
+msgstr "Wybierz katalog..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:219
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:237
+#, fuzzy
+msgid "&Browse..."
+msgstr "Przeglądaj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:275
+msgid "Choose an Image File - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:316
+#, fuzzy
+msgid "Basic Properties"
+msgstr "&Narzędzia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:323
+msgid ""
+"<center>Your <b>nickname</b> is your primary form of identification on IRC."
+"<br>Since servers cannot accept multiple users sharing the same nickname "
+"(case insensitive), you can provide alternative nicknames to be used in "
+"casethe server refuses to accept the default one.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:331
+#, fuzzy
+msgid "Alternatives..."
+msgstr "Trwa łączenie..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:337
+msgid ""
+"<center>This is the <b>username</b> that you will use to connect to the "
+"server.<br>In the past, it was used as a form of authentication, but it "
+"normally has no special use now.<br>In addition to your nickname, you are "
+"identified on IRC by your <b>username@hostname</b>.</br>Basically, you can "
+"enter any word you like here. :D</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:346
+msgid ""
+"<center>This text will appear when someone does a /WHOIS on you.<br>It is "
+"intended to be your real name, but people tend to put random quotes and "
+"phrases here too.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:351
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:356
+msgid "Profile"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:361
+msgid "Age:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:366
+msgid "Here you can specify your age."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:401
+#, fuzzy
+msgid "Unspecified"
+msgstr "Nie podano indeksu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:391
+#, fuzzy
+msgid "Gender:"
+msgstr "Ogólne"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:396
+msgid "Here you can specify your gender."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:402
+msgid "Female"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:403
+msgid "Male"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:414
+#, fuzzy
+msgid "Location:"
+msgstr "Akcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:417
+msgid ""
+"You can describe here your approximate physical location. Something like "
+"\"Region, Country\" will be ok. Please note that this information will be "
+"viewable by anyone so putting more data (like the exact address), generally, "
+"<b>is not a good idea</b>."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:422
+msgid "Languages:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:425
+msgid ""
+"You can put here the short names of the languages you can speak. An example "
+"might be \"EN,IT\" that would mean that you speak both Italian and English."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:429
+msgid "Other:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:432
+msgid ""
+"You can put here some additional personal data. It might be a funny quote or "
+"your homepage url... Please note that this information will be viewable by "
+"anyone so <b>don't put any sensible data</b> (passwords, telephone or credit "
+"card numbers)."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:502
+msgid ""
+"Here you can choose your avatar image. It will be visible<br>by other people "
+"that request it. Choose a nice image of yourself,<br>possibly avoiding "
+"obscenity and offending images. It is a good idea<br>to choose a relatively "
+"small file (say 150 Kb max) because<br>most clients have a limit on the size "
+"of avatars being downloaded.<br>The image also should be smaller than "
+"800x600 pixels since<br>it will have to be viewable in everyone's monitor."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:511
+#, fuzzy
+msgid "Use avatar"
+msgstr "Obraz Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:537
+msgid "Choose..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:598
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:637
+msgid "Failed to Load Avatar - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:599
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:638
+msgid ""
+"Failed to load the avatar image.<br>It may be an unaccessible file or an "
+"unsupported image format."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:606
+msgid "Failed to download the avatar image.<br><b>%Q</b>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:608
+#, fuzzy
+msgid "Avatar Download Failed - KVIrc"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:649
+#, fuzzy
+msgid "Avatar Might Be Too Big - KVIrc"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:650
+msgid ""
+"The avatar you have choosen is bigger than 1024x768 pixels.<br>Such a big "
+"image will not be seen on all the user monitors<br>and will probably be "
+"scaled by the remote clients with poor quality<br>algorithms to improve "
+"performance. You *should* scale it manually<br>to a sane size (like 800x600) "
+"or choose a different image."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:688
+#, fuzzy
+msgid "Default Messages"
+msgstr "Użytkownik:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:691
+#, fuzzy
+msgid "Part message:"
+msgstr "Wklej"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:695
+msgid ""
+"<center>This is the default part message that will be used when you<br>leave "
+"a channel by closing a channel window.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:699
+#, fuzzy
+msgid "Quit message:"
+msgstr "Interfejs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:702
+msgid ""
+"<center>This is the default quit message that will be used when you<br>quit "
+"your IRC session by closing the console window or disconnecting by pressing "
+"the disconnect button.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:42
+msgid "Open Query For"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:40
+#, fuzzy
+msgid "Private messages"
+msgstr "Wklej"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:46
+msgid ""
+"<center>This option enables query window creation when a private message "
+"(PRIVMSG) is received.<br>If you disable this, private messages will be "
+"shown in the active window or a common channel.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:42
+#, fuzzy
+msgid "Private notices"
+msgstr "Serwery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:55
+msgid ""
+"<center>This option enables query window creation when a private notice "
+"(NOTICE) is received.<br>If you disable this, private notices will be shown "
+"in the active window or a common channel.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:62
+msgid "Always open queries as minimized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:66
+msgid ""
+"<center>This option causes newly created query windows to be immediately "
+"minimized.<br>Enable this if you don't like queries popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:74
+#, fuzzy
+msgid "Enable target user tracking"
+msgstr "Błędny parametr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:77
+msgid ""
+"<center>This option will enable target user tracking.<br>Some actions of the "
+"target user (e.g. joins and parts) will be displayed in the window.<br></"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:83
+msgid "Flash system taskbar on new query message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:86
+msgid ""
+"<center>This option causes the system taskbar entry for KVIrc to flash when "
+"a new query message is received and the KVIrc window is not the active.</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:91
+msgid "Popup notifier on new query message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:94
+msgid ""
+"<center>This option causes a small notifier window to pop up in the low "
+"right corner of the screen when a new message is received and the KVIrc "
+"window is not active.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:98
+msgid "Show information about query target at the top of the query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:101
+msgid ""
+"<center>This option enables query window information label. It can show you "
+"known information about query target at the top of the window.<br>Uncheck if "
+"you think,that it wastes your query space/</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:39
+msgid "Use global application font"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:40
+#, fuzzy
+msgid "Hide icons in Popup"
+msgstr "Okno &terminala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:41
+msgid "Global application font:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:67
+msgid "Enable fake transparency"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:71
+msgid ""
+"<center>This option makes all KVIrc windows look transparent.<br>You must "
+"choose a blending background image to below or check the \"Use KDE desktop "
+"for transparency\" option.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:77
+msgid ""
+"<center>This option makes all KVIrc windows look like transparent.<br>You "
+"must choose a blending background image to below.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:83
+msgid "Child window opacity:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:87
+msgid "Parent window opacity:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:91
+msgid "Blend color:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:97
+msgid "Use KDE desktop for transparency"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:102
+msgid "Keep in sync with KDE background changes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:111
+msgid "Transparency blend image:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:155
+#, fuzzy
+msgid "Active Background"
+msgstr "Akcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:156
+#, fuzzy
+msgid "Inactive Background"
+msgstr "Akcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:157
+msgid "Active Text (Primary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:158
+msgid "Active Text (Secondary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:159
+msgid "Inactive Text (Primary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:160
+msgid "Inactive Text (Secondary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:197
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:44
+msgid "Background"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:178
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:205
+msgid "Background Image"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:198
+msgid "Low-Contrast Foreground"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:199
+msgid "Mid-Contrast Foreground"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:200
+msgid "Active High-Contrast Foreground (Primary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:201
+msgid "Active High-Contrast Foreground (Secondary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:202
+msgid "Inactive High-Contrast Foreground (Primary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:203
+msgid "Inactive High-Contrast Foreground (Secondary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:40
+#, fuzzy
+msgid "Scaling in userlist"
+msgstr "Obraz Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:41
+#, fuzzy
+msgid "Scale avatar images in userlist (recommended)"
+msgstr "Obraz Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:43
+msgid ""
+"<center>This option will force KVIrc to scale avatars shown in the userlist."
+"<br>Avatars will be scaled to fit the constraints set below. Better keep "
+"this option on. :)</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:48
+msgid "Do not scale avatar if it is less than required size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:59
+#, fuzzy
+msgid "Image width:"
+msgstr "M&inimalizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:61
+msgid "Image height:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:56
+#, fuzzy
+msgid "Scaling on load (and in user tooltips)"
+msgstr "Obraz Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:57
+msgid "Scale avatar images on image load"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:65
+msgid "Request CTCP"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:66
+msgid "Request missing avatars"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:67
+msgid "Maximum requested file size:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to send a DCC GET request when someone "
+"sets an avatar and there is no cached copy available.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:74
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:317
+msgid " bytes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:77
+msgid ""
+"<center>This is the maximum size for avatar images that will be "
+"automatically requested.<br>A reasonable value might be 102400 bytes (100 K)."
+"</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:83
+msgid "Automatically accept incoming avatars"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:87
+msgid ""
+"<center>This option will cause KVIrc to auto-accept DCC SEND requests for "
+"incoming avatars.<br>If you're using the \"Request missing avatars\" option "
+"above, enabling this may by useful.<br>Avatars will be saved in the local "
+"KVIrc directory.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:94
+msgid "Remember avatars for registered users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:99
+msgid ""
+"<center>Use a user's last known avatar by default (only for users that are "
+"registered).</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:103
+#, fuzzy
+msgid "Avatar offer timeout:"
+msgstr "Obraz Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:104
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:162
+msgid " sec"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:107
+msgid ""
+"<center>This is the amount of time to make an avatar available for transfer "
+"when requested.<br>When someone sends a CTCP AVATAR request, KVIrc will "
+"reply with a CTCP AVATAR message containing the name and size of your avatar "
+"image.<br>A time-limited file offer is added for the image file to the "
+"requesting user.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:115
+msgid "Ignore requests if no avatar is set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:118
+msgid ""
+"This option will cause KVIrc to ignore channel CTCP AVATAR requests when you "
+"have no avatar set. This is usually a good practice since it helps in "
+"reducing traffic by not sending a reply that would be empty."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:39
+msgid "Use online notify list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:44
+#, fuzzy
+msgid "Configuration"
+msgstr "Zapi&sz ustawienia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:45
+msgid "Show notifications in active window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:50
+msgid "Flash window when users are going online"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:55
+msgid "Popup notifier when users are going online"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:59
+#, fuzzy
+msgid "Advanced configuration"
+msgstr "Zapi&sz ustawienia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:64
+msgid "Check USERHOST for online users"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:69
+msgid "Use \"smart\" notify list manager"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:74
+msgid "Use the WATCH method if available"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:79
+msgid "Check interval (in seconds)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:85
+msgid "ISON delay (in seconds)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:91
+msgid "USERHOST delay (in seconds)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:96
+msgid ""
+"<p><b>Note:</b><br>The notify list is managed using the \"Registered Users\" "
+"settings.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:112
+msgid "Forcibly and completely disable the notifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:115
+msgid ""
+"This is an option for the impatient: it allows to forcibly and permanently "
+"disable the notifier window. Please note that if this option is activated "
+"then the notifier will NOT popup even if all the other options around "
+"specify to use it in response to particular events. Also note that this "
+"option will make all the /notifier.* commands fail silently."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:123
+msgid "Disable notifier window flashing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:124
+msgid "Disable notifier window fade effect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:39
+msgid "Default away message:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:41
+msgid "User input exits away mode"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:43
+#, fuzzy
+msgid "Away Nickname"
+msgstr "Ostatnie &nicki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:44
+#, fuzzy
+msgid "Change nickname on away"
+msgstr "Ostatnie &nicki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:47
+msgid "Use automatic nickname ([5 letters]AWAY)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:55
+#, c-format
+msgid "Custom nickname (%%nick%% means a current nick):"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/libkvioptions.cpp:199
+#, fuzzy
+msgid "No such options page class name %Q"
+msgstr "Nie ma takiej klasy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:47
+#, fuzzy
+msgid "Use system URL handlers"
+msgstr "Usuń"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:50
+#, fuzzy
+msgid "<b>http://</b> handler command:"
+msgstr "Brak takiej komendy w module"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:51
+#, fuzzy
+msgid "<b>https://</b> handler command:"
+msgstr "Brak takiej komendy w module"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:52
+#, fuzzy
+msgid "<b>ftp://</b> handler command:"
+msgstr "Brak takiej komendy w module"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:53
+#, fuzzy
+msgid "<b>mailto:</b> handler command:"
+msgstr "Brak takiej komendy w module"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:54
+#, fuzzy
+msgid "<b>file://</b> handler command:"
+msgstr "Brak takiej komendy w module"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:55
+#, fuzzy
+msgid "Unknown protocol handler command:"
+msgstr "Nieznana komenda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:61
+#, fuzzy
+msgid "Use proxy"
+msgstr "Usuń serwer proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:65
+msgid "Proxy"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:76
+msgid ""
+"<center>This is the list of available proxy servers.<br>Right-click on the "
+"list to add or remove proxies.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:90
+#, fuzzy
+msgid "New Proxy"
+msgstr "Usuń serwer proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:99
+#, fuzzy
+msgid "Remove Proxy"
+msgstr "Usuń serwer proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:111
+msgid "Proxy:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:131
+msgid "Protocol:"
+msgstr "Protokół:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:336
+#, fuzzy
+msgid "&New Proxy"
+msgstr "Usuń serwer proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:337
+#, fuzzy
+msgid "Re&move Proxy"
+msgstr "Usuń serwer proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:71
+#, fuzzy
+msgid "Pattern"
+msgstr "Wklej"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:72
+msgid "MIME Type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:87
+msgid "MIME type:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:92
+msgid "File pattern:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:97
+msgid "Magic bytes:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:102
+#, fuzzy
+msgid "Save path:"
+msgstr "Data"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:107
+#, fuzzy
+msgid "Local open command:"
+msgstr "Brak takiej komendy w module"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:112
+msgid ""
+"<center>This field contains the command to execute to open a local file."
+"<br><tt>$0</tt> is used in place of the filename</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:116
+msgid "Remote open command:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:121
+msgid ""
+"<center>This field contains the command to execute when automatically "
+"opening a received file.<br><tt>$0</tt> is used in place of the filename</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:125
+msgid "Icon"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:134
+#, fuzzy
+msgid "&New"
+msgstr "Wygląd tekstu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:138
+#, fuzzy
+msgid "Re&move"
+msgstr "Usuń"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:184
+msgid "[Unknown Media Type]"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:230
+#, fuzzy
+msgid "New Media Type"
+msgstr "Typy plików"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:53
+#, fuzzy
+msgid "Nickname Colors"
+msgstr "Ostatnie &nicki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:56
+#, fuzzy
+msgid "Channel owner:"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:57
+#, fuzzy
+msgid "Channel admin:"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:58
+msgid "Op:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:59
+#, fuzzy
+msgid "Half-op:"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:60
+msgid "Voice:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:61
+msgid "User-op:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:62
+msgid "Away:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:66
+msgid "Use different color for own nick:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:81
+#, fuzzy
+msgid "Draw nickname grid"
+msgstr "Nie podano indeksu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:83
+msgid "Grid color:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:90
+#, fuzzy
+msgid "Grid type:"
+msgstr "Typy plików"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:94
+msgid "3D Grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:95
+msgid "3D Buttons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:96
+msgid "Plain Grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:97
+msgid "Dotted Grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:131
+msgid "Horizontal Alignment:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:135
+#, fuzzy
+msgid "Vertical Alignment:"
+msgstr "Nieznane wyrównanie: %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:231
+#, fuzzy
+msgid "Show gender icons"
+msgstr "Pokazuj pingi od serwera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:232
+#, fuzzy
+msgid "Show user channel icons"
+msgstr "Pokazuj pingi od serwera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:233
+#, fuzzy
+msgid "Show user channel activity indicator"
+msgstr "Pokaż czas synchronizacji kanału"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:234
+msgid "Hide users label"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:235
+msgid "Enable user tooltips"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:236
+#, fuzzy
+msgid "Hide avatars"
+msgstr "Obraz Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:79
+msgid "Use flood protection (recommended)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:81
+msgid ""
+"<center>This option makes KVIrc only respond to a limited number of CTCP "
+"requests within a specified time interval, to prevent \"flooding\" CTCP "
+"messages.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:83
+msgid "Allow up to:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:84
+msgid " requests"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:86
+msgid ""
+"<center>Minimum value: <b>0 requests</b><br>Maximum value: <b>10000 "
+"requests</b></center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:89
+msgid "within:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:92
+msgid ""
+"<center>Minimum value: <b>1 sec</b><br>Maximum value: <b>3600 sec</b></"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:96
+msgid "Ignored Requests"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:97
+msgid "PING"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:98
+msgid "FINGER"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:99
+msgid "CLIENTINFO"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:100
+msgid "USERINFO"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:101
+msgid "VERSION"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:102
+msgid "SOURCE"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:103
+msgid "TIME"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:104
+msgid "PAGE"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:105
+msgid "AVATAR"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:106
+msgid "DCC/TDCC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:131
+msgid "General Preferences"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:134
+msgid "Theme Preferences"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:136
+msgid "KVIrc Preferences"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:139
+msgid ""
+"This dialog contains a set of KVIrc settings.<br> Use the icons on the left "
+"to navigate through the option pages. The text box in the bottom left corner "
+"is a small search engine. It will highlight the pages that contain options "
+"related to the search term you have entered."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:147
+msgid ""
+"Many settings have tooltips that can be shown by holding the cursor over "
+"their label for a few seconds."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:152
+msgid ""
+"When you have finished, click \"<b>OK</b>\" to accept your changes or "
+"\"<b>Cancel</b>\" to discard them. Clicking \"<b>Apply</b>\" will commit "
+"your changes without closing the window."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:217
+msgid ""
+"<p>This is the search tool for this options dialog.</p><p>You can enter a "
+"search term either in your native language or in english and press the "
+"button on the right. The pages that contain some options related to the "
+"search term will be highlighted and you will be able to quickly find them.</"
+"p><p>Try \"nickname\" for example.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:249
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:61
+msgid "Close this dialog, accepting all changes."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:255
+msgid "&Apply"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:256
+msgid "Commit all changes immediately."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:69
+msgid "Close this dialog, discarding all changes."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:149
+msgid ""
+"This table contains the text icon associations.<br>KVirc will use them to "
+"display the CTRL+I escape sequences and eventually the emoticons."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:165
+msgid "Add"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:169
+msgid "Delete"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:191
+msgid "unnamed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:53
+msgid "Enable word highlighting"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:55
+msgid "Words to highlight:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:57
+msgid "Word splitters:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:59
+msgid "Highlight messages containing my nickname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:61
+msgid ""
+"<center>If this option is enabled, KVIrc will highlight any user message "
+"containing your current nickname</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:63
+msgid "Flash the system taskbar entry on highlighted messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:65
+msgid ""
+"<center>If this option is enabled, KVIrc will (attempt to) flash the system "
+"taskbar entry when a highlighted message is printed and KVIrc is not the "
+"active window</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:67
+msgid "Popup the notifier window on highlighted messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:69
+msgid ""
+"<center>If this option is enabled, KVIrc will popup a little notifier window "
+"in the low right corner of your desktop when a highlighted message is "
+"printed and KVIrc is not the active window</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:91
+#, fuzzy
+msgid "Alert Restrictions"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:92
+#, fuzzy
+msgid "Restrict alert"
+msgstr "P&rzywróć"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:94
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if a "
+"normal message is received in a channel.<br>Actions like joins, parts and "
+"mode changes will be ignored.<br> This is useful if you are in channels with "
+"a high rate of traffic and only want to be alerted for messages that are "
+"interesting to you.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:96
+msgid "Alert for highlighted words"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:98
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which contain a word from the highlighted words list above.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:100
+msgid "Alert for query messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:102
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which are shown in queries.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:107
+msgid "Use custom alert level"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:109
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if "
+"the specified alert level is reached.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:111
+msgid "Minimum alert level:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:114
+msgid ""
+"<center>This option sets the minimum alert level for the taskbar.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:213
+msgid "Output verbosity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:49
+msgid "Mute"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:50
+#, fuzzy
+msgid "Quiet"
+msgstr "&Wyjście"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:51
+msgid "Normal"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:52
+msgid "Verbose"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:53
+#, fuzzy
+msgid "Paranoic"
+msgstr "Serwery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:59
+#, fuzzy
+msgid "Show in active window"
+msgstr "&Okno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:60
+#, fuzzy
+msgid "External messages"
+msgstr "Użytkownik:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:61
+msgid "External CTCP replies"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:62
+#, fuzzy
+msgid "Whois replies"
+msgstr "Pokazuj pingi od serwera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:63
+#, fuzzy
+msgid "ChanServ and NickServ notices"
+msgstr "Serwery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:64
+#, fuzzy
+msgid "Invite messages"
+msgstr "Interfejs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:65
+#, fuzzy
+msgid "Server replies"
+msgstr "Ogólne opcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:66
+#, fuzzy
+msgid "Server notices"
+msgstr "Serwery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:67
+msgid "Broadcast and WALLOPS messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:70
+#, fuzzy
+msgid "Show extended server information"
+msgstr "Pokazuj rozszeżone informacje o serwerze"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:71
+msgid "Show server pings"
+msgstr "Pokazuj pingi od serwera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:72
+msgid "Show own parts in the console"
+msgstr "Pokazuj własne wyjścia z kanałów w konsoli"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:73
+msgid "Show compact mode changes"
+msgstr "Pokazuj skrócone zmiany trybów"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:43
+#, fuzzy
+msgid "Minimize on startup"
+msgstr "M&inimalizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:44
+#, fuzzy
+msgid "Confirm quit with active connections"
+msgstr "Brak połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:45
+#, fuzzy
+msgid "Remember window properties"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:50
+msgid "Disable splash screen"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:54
+msgid "Enable visual effects"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:55
+msgid "Hide Channel window tool buttons by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:57
+msgid "Open Dialog Window For"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:58
+msgid "Preferences"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:59
+#, fuzzy
+msgid "Registered Users"
+msgstr "Za&rejestrowani użytkownicy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:149
+#, fuzzy
+msgid "Servers"
+msgstr "Serwer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.cpp:40
+msgid ""
+"This section contains irc tools<br><p>like<b> away, lag and logging system. "
+"</b> </p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:39
+#, fuzzy
+msgid "On Disconnect"
+msgstr "Rozłącz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:42
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:55
+#, fuzzy
+msgid "Keep channels open"
+msgstr "Ostatnie &kanały"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:44
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after disconnect."
+"</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:47
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:60
+msgid "Keep queries open"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:49
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after disconnect.</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:52
+#, fuzzy
+msgid "On Unexpected Disconnect"
+msgstr "Niespodziewany znak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:62
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:65
+msgid "Rejoin channels after reconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:67
+msgid ""
+"<center>This option will cause KVIrc to rejoin channels after a successful "
+"reconnect attempt.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:69
+msgid "Reopen queries after reconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to reopen query windows after a "
+"successful reconnect attempt.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:75
+msgid "Automatically reconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:77
+msgid ""
+"<center>This option will enable auto-reconnecting after an unexpected "
+"disconnect. An unexpected disconnect is the <b>termination</b> of a <b>fully "
+"connected IRC session</b> that was <b>not requested by the user</b> by the "
+"means of the QUIT message.<p><b>Warning:</b> If you use /RAW to send a QUIT "
+"message to the server, this option will not behave correctly, since does not "
+"detect the outgoing QUIT message and will attempt to reconnect after the "
+"server has closed the connection. For this reason, always use the /QUIT "
+"command to close your connections. This option may also behave incorrectly "
+"with bouncers that support detaching, in this case a solution could be to "
+"prepare an alias that sends the bouncer \"detach\" command immediately "
+"before the \"quit\" command.<br><tt>alias(bncdetach){ raw bouncer detach; "
+"quit; }</tt></p></center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:89
+msgid "Maximum attempts (0: unlimited):"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:94
+msgid "Delay between attempts:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:100
+msgid ""
+"<center>Minimum value: <b>0 sec</b><br>Maximum value: <b>86400 sec</b></"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:123
+msgid "Certificate"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:125
+msgid "Use SSL certificate (PEM format only)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:127
+msgid "Certificate location:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:130
+msgid "Certificate password:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:134
+#, fuzzy
+msgid "Private Key"
+msgstr "Wklej"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:135
+msgid "Use SSL private key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:137
+msgid "Private key location:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:140
+#, fuzzy
+msgid "Private key password:"
+msgstr "Hasło:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:146
+msgid "This executable has no SSL support."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:165
+msgid "Timeout Values"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:166
+#, fuzzy
+msgid "Connect timeout:"
+msgstr "Połączenie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:168
+msgid "Outgoing data queue flush timeout:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:170
+msgid "Limit outgoing traffic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:171
+msgid "Limit to 1 message every:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:173
+msgid " usec"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:175
+msgid ""
+"<center>Minimum value: <b>10000 usec</b><br>Maximum value: <b>10000000 usec</"
+"b></center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:179
+#, fuzzy
+msgid "Network Interfaces"
+msgstr "Interfejs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:181
+#, fuzzy
+msgid "Bind IPv4 connections to:"
+msgstr "Brak połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:185
+#, fuzzy
+msgid "Bind IPv6 connections to:"
+msgstr "Brak połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:210
+msgid "Enable ident service (bad practice on UNIX!)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:216
+#, fuzzy
+msgid "Output identd messages to:"
+msgstr "Interfejs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:218
+#, fuzzy
+msgid "Active window"
+msgstr "Okno &terminala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:219
+#, fuzzy
+msgid "Console"
+msgstr "Zamknij"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:220
+#, fuzzy
+msgid "Do not show any identd messages"
+msgstr "Nie pokazuj ukrytych plików"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:237
+msgid "Enable ident service only while connecting to server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:240
+#, fuzzy
+msgid "Ident username:"
+msgstr "Interfejs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:243
+#, fuzzy
+msgid "Service port:"
+msgstr "Serwer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:248
+msgid "IPv6 Settings"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:249
+msgid "Enable service for IPv6"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:258
+msgid "IP stack treats IPv4 as part of IPv6 namespace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:265
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications. If it is possible, install a real ident daemon.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:270
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications.<br>On UNIX, you may also need root privileges to bind to the "
+"auth port (113).<br>It is <b>highly recommended</b> that a <b>real</b> "
+"system-wide ident daemon be used instead, or none at all if ident is not "
+"required.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.cpp:39
+msgid ""
+"This section contains the general client options<br><p>like<b> sound, "
+"mediafiles, URL handler </b> etc... </p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:39
+msgid "Automatically Log"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:40
+#, fuzzy
+msgid "Query windows"
+msgstr "Okno &terminala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:41
+#, fuzzy
+msgid "Channel windows"
+msgstr "Ułóż kaskadują&co"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:42
+#, fuzzy
+msgid "DCC Chat windows"
+msgstr "Ułóż kaskadują&co"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:43
+#, fuzzy
+msgid "Console windows"
+msgstr "Okno &terminala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:45
+msgid "Gzip logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:47
+msgid "Strip colors in logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:48
+msgid "Auto flush logs every"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:49
+msgid " min"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:52
+msgid ""
+"<center>Save logs with the current interval<br>Set to 0 to disable this "
+"feature</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:49
+msgid "Minimize console after successful login"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:52
+msgid ""
+"<center>This option will cause KVIrc to minimize the console window after "
+"successfully logging into a server.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:55
+#, fuzzy
+msgid "Show network name in console taskbar entry"
+msgstr "Nie podano indeksu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to show the network name as the console "
+"taskbar entry instead of the server name. This is nice to keep on unless "
+"your servers are not organized in networks or you often connect to two "
+"servers of the same network.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:75
+msgid "Force immediate quit"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:78
+msgid ""
+"<center>This option causes KVIrc to close the connection immediately after "
+"sending the QUIT message.<br>When this option is disabled, KVIrc will wait "
+"for the server to close the connection.<br>Note that if you use this, your "
+"QUIT message may be not displayed.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:84
+msgid "Prepend gender info to realname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:110
+#, fuzzy
+msgid "On Channel Kick"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:112
+#, fuzzy
+msgid "Rejoin channel"
+msgstr "Ostatnie &kanały"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:115
+msgid ""
+"<center>This option will cause KVIrc to attempt to rejoin a channel after "
+"being kicked.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:129
+#, fuzzy
+msgid "Keep channel open"
+msgstr "Ostatnie &kanały"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:121
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"being kicked.<br>It might be a good idea to also enable the \"Rejoin channel"
+"\" option.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:127
+#, fuzzy
+msgid "On Channel Part"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:132
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"leaving it.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:136
+msgid "Automatically join channel on invite"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:139
+msgid ""
+"<center>This option will cause KVIrc to automatically join a channel when an "
+"INVITE message for that channel is received.<br><b>Warning:</b> This may "
+"help spammers harass you. :)</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:144
+msgid "Always open channels as minimized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:148
+msgid ""
+"<center>This option causes newly created channel windows to be immediately "
+"minimized.<br>Enable this if you don't like channels popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:168
+#, fuzzy
+msgid "Log joined channels history"
+msgstr "Za&rejestrowani użytkownicy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:170
+#, fuzzy
+msgid "Default ban mask:"
+msgstr "Użytkownik:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:188
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:202
+#, fuzzy
+msgid "On Channel Join"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:189
+msgid "Do not send /WHO request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:190
+msgid "Do not request ban list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:191
+msgid "Do not request ban exception list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:192
+msgid "Do not request invite list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:194
+msgid "Do not update the away list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:197
+msgid ""
+"<center>KVIrc sends out a channel /WHO message every now and then to keep "
+"the channel away list in sync. Use this option to disable this feature (and "
+"to save your IRC bandwidth.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:203
+#, fuzzy
+msgid "Echo channel topic"
+msgstr "Pokaż czas synchronizacji kanału"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:204
+msgid "Show channel sync time"
+msgstr "Pokaż czas synchronizacji kanału"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:40
+#, fuzzy
+msgid "Default text encoding:"
+msgstr "Wybierz pliki do wysłania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:109
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:133
+msgid "Use Language Encoding"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:59
+msgid "Force language:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:65
+msgid "<b>Note:</b> You need to restart KVirc to apply a language changing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:68
+msgid "Automatic detection"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:69
+msgid "en"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Unable to write language information to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:39
+msgid "Enable Anti-spam For"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:45
+msgid "Silent anti-spam (no warnings)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:46
+msgid "Words considered spam:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:51
+msgid "Use workaround for firewall"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:54
+msgid ""
+"<center>Enable this option if you can't accept incoming connections."
+"<br>KVIrc will try to use different methods to send and receive files."
+"<br>Please note that these methods may NOT work when communicating with a "
+"non-KVIrc client.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:73
+#, fuzzy
+msgid "Network Properties"
+msgstr "Interfejs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:75
+msgid "Use user-defined address or network interface"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:79
+msgid ""
+"<center>Enable this option if you are on a multihost machine and want to "
+"force one of the available IP addresses to be used for outgoing DCCs."
+"<br>This is especially useful when you use IPv6 and IPv4 addresses.<br>You "
+"can force KVIrc to always choose the IPv4 interface.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:84
+msgid "Listen on address/interface:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:87
+msgid ""
+"<center>This is the IP address or name of the interface to use by default "
+"for outgoing DCC transfers.<br>On UNIX systems that support it, you can also "
+"specify IPv4 interface names (such as <b>ppp0</b>).<br>If you set it to "
+"<b>0.0.0.0</b>, KVIrc will try to use the first available IPv4 interface</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:94
+msgid "Use user-defined port range"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:97
+msgid ""
+"<center>Enable this option if you want specify a local port range for DCC.</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:102
+msgid "Lowest port:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:105
+#, fuzzy
+msgid "Highest port:"
+msgstr "Serwer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:108
+msgid "Send a fixed address in requests"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:111
+msgid ""
+"<center>Enable this option if you want to always send a fake IP address in "
+"your DCC requests.<br>This might be useful if you're behind a router with a "
+"static address that does network address translation (NAT) and forwards all "
+"or a range of ports.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:115
+msgid "Send address/interface:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:119
+msgid ""
+"<center>This is the fixed address that will be sent with all DCC requests if "
+"you enable the option above.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:123
+msgid "Guess address from IRC server if unroutable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:128
+msgid ""
+"<center>You can enable this option if you are behind a router that forwards "
+"all or a range of ports.<br>KVIrc will try to guess the IP address to use "
+"for DCC by looking up the local hostname as seen by the IRC server you're "
+"connected to.<br>This method is an exclusive alternative to the \"fixed "
+"address\" above.<br>It might guess the correct address automatically if "
+"certain conditions are met (e.g. the IRC server does not mask hostnames).</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:134
+msgid "Use \"broken bouncer hack\" to detect address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:137
+msgid ""
+"<center>When you're behind a dialup router and also tunneling through a "
+"psyBNC bouncer, you can use a bug in the bouncer to force KVIrc to bind the "
+"DCC connections to the dialup router's address.<br>It's an ugly hack - use "
+"it only if nothing else works.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:144
+msgid "Notify failed DCC handshakes to the remote end"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:147
+msgid ""
+"<center>If you enable this option, when a DCC request from a remote user "
+"can't be satisfied KVIrc will notify him by a CTCP ERRMSG. This is a nice "
+"feature so it is a good idea to leave it on unless for some reason you have "
+"deactivated the antiflood system: in this case turning off this option might "
+"help if you often get attacked by CTCP floods.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:154
+msgid "Maximum number of DCC sessions"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:156
+msgid ""
+"<center>This is the maximum number of concurrent DCC sessions and it "
+"includes all the DCC types (send,chat,recv...). KVIrc will refuse the "
+"requests when this limit is reached.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:161
+#, fuzzy
+msgid "DCC socket timeout:"
+msgstr "Połączenie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:164
+msgid ""
+"<center>This is the amount of time that KVIrc will wait for a response "
+"before assuming that a DCC has failed because the remote client was unable "
+"to connect to our listening socket.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:198
+msgid "On Incoming File"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:371
+msgid "Automatically accept"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:200
+msgid "Open transfer window as minimized when auto-accepted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:201
+msgid "Automatically resume when auto-accepted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:203
+#, fuzzy
+msgid "Save Location"
+msgstr "Akcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:204
+msgid "Download folder:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:205
+msgid "Sort saved files by nicknames (create subfolders)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:206
+msgid "Guess save path from media type"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:209
+msgid "On Download Completion"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:210
+msgid "Notify completion in console"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:211
+msgid "Notify completion in notifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:212
+msgid "Automatically clear transfer"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:215
+msgid ""
+"<center>This option will cause succesfully terminated transfers to be "
+"automatically removed from the transfer window.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:220
+msgid "Always open transfer window as minimized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:238
+msgid "Bug Compatibility"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:239
+msgid "Send ACK for byte 0"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:242
+msgid ""
+"<center>This option causes KVIrc to send a zero-byte acknowledge to kick-"
+"start the DCC transfer with some buggy IRC clients.<br>Use it only if your "
+"DCC transfers stall just after establishing a connection without sending any "
+"data.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:247
+msgid "Accept broken RESUME (mIRC file.ext)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:250
+msgid ""
+"<center>This option causes KVIrc to accept RESUME requests with invalid "
+"filenames.<br>Use it if KVIrc fails to accept RESUME requests from other "
+"clients (e.g. some versions of mIRC).</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:254
+msgid "Replace spaces with underscores in outgoing filenames"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:257
+msgid ""
+"<center>This option causes KVIrc to replace spaces with underscores in "
+"filenames for all the outgoing file transfers. This will fix filename "
+"handling with some buggy clients (e.g. some versions of mIRC)."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:262
+msgid "Limits"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:265
+msgid "Limit upload bandwidth to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:273
+msgid "bytes/sec"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:271
+msgid "Limit download bandwidth to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:277
+msgid "Maximum number of DCC transfers"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:279
+msgid ""
+"<center>This is the maximum number of concurrent DCC transfers. KVIrc will "
+"refuse the requests when this limit is reached.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:283
+msgid "Tweaks"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:285
+msgid "Use fast send (send ahead)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:288
+msgid ""
+"<center>The \"send ahead\" DCC method allows data to be sent faster by "
+"breaking some of the rules of the original DCC SEND protocol specification."
+"<br>Most clients can handle this kind of optimisation so disable it only if "
+"you have problems.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:295
+msgid "Force idle step"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:298
+msgid ""
+"<center>Enable this option when the dcc file transfers tend to block your "
+"computer by consuming too much CPU time. When this option is enabled the "
+"idle interval below will be forcibly inserted between each sent/received "
+"data packet.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:310
+msgid ""
+"<center>This parameter controls the average delay between two packets sent "
+"or received.<br>A smaller interval will cause you to send data faster but "
+"will also add load to your CPU, disk and network interface.<br>Reasonable "
+"values are from 5 to 50 milliseconds.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:316
+msgid "Packet size:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:320
+msgid ""
+"<center>This parameter controls the packet size used for DCC SEND.<br>With "
+"bigger packets you will be probably send data faster, but you will also "
+"saturate your bandwidth and in some cases cause more disk activity."
+"<br>Reasonable values are from 512 to 4096 bytes.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:349
+msgid "On Chat Request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:351
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:373
+msgid "Open minimized when auto-accepted"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:353
+msgid "Always open as minimized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:369
+msgid "Open all minimized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:370
+msgid "On Voice Request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:376
+msgid "Force half-duplex mode on sound device"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:377
+msgid "Volume slider controls PCM, not Master"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:379
+msgid "Sound device:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:380
+msgid "Mixer device:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:382
+msgid "Pre-buffer size:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:38
+#, fuzzy
+msgid "Enable Ignore For"
+msgstr "Błędny parametr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:39
+msgid "Private/channel messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:40
+#, fuzzy
+msgid "Private/channel notices"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:44
+#, fuzzy
+msgid "Use verbose ignore (show messages in console)"
+msgstr "Bądź gadatliwy (pokazuje wewnętrzne działanie)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:46
+#, fuzzy
+msgid "Sound System"
+msgstr "Wewnętrzny błąd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:66
+msgid "This allows you to select the sound system to be used with KVIrc."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:72
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:88
+msgid "Auto-detect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:91
+msgid "Test"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:79
+#, fuzzy
+msgid "Media Player"
+msgstr "Typy plików"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:81
+msgid ""
+"This allows you to select the preferred media player to be used with the "
+"mediaplayer.* module commands and functions."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:102
+msgid "ID3 tags' encoding"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:104
+msgid "This allows you to select encoding of mp3 tags."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:125
+msgid "Winamp messages ecoding"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:127
+msgid "This allows you to select encoding of winamp messages."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:290
+msgid "New Query opened"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:293
+msgid "New message in inactive query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:296
+#, fuzzy
+msgid "Highlighted message in inactive window"
+msgstr "&Okno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:299
+msgid "Me have been kicked"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:39
+msgid "Selection background color"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:40
+msgid "Selection foreground color"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:41
+msgid "Control char color"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:42
+msgid "Cursor color"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:141
+msgid "Warp cursor at the end of line when browsing history"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:142
+msgid "Disable the input history window and it's log memory."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:143
+msgid "Hide input toolbuttons by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:144
+#, fuzzy
+msgid "Nick completion"
+msgstr "Brak połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:145
+msgid "Use bash-like nick completion"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:146
+msgid "Nick completion postfix string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:147
+msgid "Use the completion postfix string for the first word only"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:148
+msgid "Commandline in user-friendly mode by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:81
+msgid "Show message icons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:82
+msgid "Draw some emoticons (smileys) as pictures"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:83
+msgid "Don't show colors in user messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:88
+#, fuzzy
+msgid "Nicknames"
+msgstr "Ostatnie &nicki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:90
+msgid "\"Smart\" nickname colors"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:91
+msgid "Use same colors as in the userlist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:93
+#, fuzzy
+msgid "Show nicknames in bold"
+msgstr "Nie podano indeksu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:94
+#, fuzzy
+msgid "Show user and host"
+msgstr "Pokazuj pingi od serwera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:95
+#, fuzzy
+msgid "Show channel mode prefix"
+msgstr "Nieznany tryb wyświetlania"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:96
+msgid "User-defined prefix and postfix"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:98
+msgid "[PREFIX]nickname[!user@host][POSTFIX] message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:112
+msgid "Prefix:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:117
+msgid "Postfix:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:131
+msgid "Show timestamp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:134
+msgid "Use UTC time for timestamp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:141
+msgid "Use special color for timestamps"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:147
+msgid "Timestamp format:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:320
+#, fuzzy
+msgid "Transparent"
+msgstr "Transport"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:401
+#, fuzzy
+msgid "Message Type"
+msgstr "Typy plików"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:417
+msgid "Background:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:426
+msgid "Foreground:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:434
+msgid "Alert level:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:454
+msgid "Log this"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:458
+msgid "Load From..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:460
+msgid "Save As..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:589
+#, fuzzy
+msgid "Choose a Filename - KVIrc"
+msgstr "Wybierz katalog..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:646
+#, fuzzy
+msgid "Choose a Filename - KVIrc "
+msgstr "Wybierz katalog..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:40
+#, fuzzy
+msgid "Enable lag meter"
+msgstr "Błędny parametr"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:42
+msgid ""
+"<center>This enables the lag meter engine, which checks at regular intervals "
+"how much lag (latency) the server has.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:45
+msgid "Lag meter heartbeat:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:49
+msgid ""
+"<center>This option allows you to set the lag meter heartbeat interval."
+"<br>The lower the heartbeat interval the higher will be the accuracy of the "
+"lag check but also higher cpu usage and data traffic to the server."
+"<br>Please note that this is NOT the interval between pings sent to the "
+"server: the pings (if any) will be sent really less often. 5000 is a "
+"reasonable value.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:58
+msgid "Trigger event if lag exceeds:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:61
+msgid ""
+"<center>This option controls the threshold for the OnLagAlarmTimeUp and "
+"OnLagAlarmTimeDown events. When the lag goes above the threshold "
+"OnLagAlarmTimeUp will be triggered and when the lag falls back below the "
+"threshold then OnLagAlarmTimeDown will be triggered</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:68
+msgid "Show lag in IRC context display"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:70
+msgid ""
+"<center>This makes the IRC context display applet show the current lag after "
+"the user's nickname (in seconds)</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.h:28
+msgid "Away"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.h:28
+msgid "CTCP"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:28
+msgid "DCC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:59
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:41
+msgid "Advanced"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:72
+#, fuzzy
+msgid "File Transfer"
+msgstr "Nowe o&kno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:113
+msgid "Chat"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:126
+msgid "Voice"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:32
+msgid "IRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:73
+msgid "Channel"
+msgstr "Kanał"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:28
+msgid "Lag"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:30
+msgid "time,ping"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:37
+msgid "authentication,identify"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:31
+msgid "Language"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:34
+msgid "language,encoding,charset,codepage"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:28
+#, fuzzy
+msgid "Contacts"
+msgstr "Połącz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:30
+msgid "notify,buddy,buddies,friends"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:42
+msgid "Notifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:43
+msgid "popup"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:37
+#, fuzzy
+msgid "Text"
+msgstr "Wygląd tekstu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:38
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:49
+msgid "theme,colors,output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:52
+#, fuzzy
+msgid "Message Style"
+msgstr "Typy plików"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:56
+msgid "theme,privmsg,output,format"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:67
+msgid "Timestamp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:71
+msgid "time,timestamp"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:88
+#, fuzzy
+msgid "Message Colors"
+msgstr "Ostatnie &nicki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:169
+msgid "theme,colors,messages,output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:168
+#, fuzzy
+msgid "Color Set"
+msgstr "Zamknij"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.h:32
+#, fuzzy
+msgid "Avatars"
+msgstr "Obraz Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:32
+#, fuzzy
+msgid "Sound"
+msgstr "Wewnętrzny błąd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:48
+msgid "sound,xmms,audio,play,amarok"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:81
+#, fuzzy
+msgid "Sounds"
+msgstr "Wewnętrzny błąd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:83
+msgid "sound,events"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:28
+#, fuzzy
+msgid "URL handlers"
+msgstr "Usuń"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:31
+msgid "url,programs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:29
+#, fuzzy
+msgid "Tray icon"
+msgstr "Wygląd tekstu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:31
+msgid "tray,dockwidget"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.h:33
+#, fuzzy
+msgid "Tools"
+msgstr "&Narzędzia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.h:28
+#, fuzzy
+msgid "General options"
+msgstr "O&gólne opcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.h:31
+#, fuzzy
+msgid "Interface"
+msgstr "Interfejs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:29
+#, fuzzy
+msgid "Text icons"
+msgstr "Wygląd tekstu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:31
+msgid "smileys,emoticons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:34
+#, fuzzy
+msgid "Output"
+msgstr "Kontrola wyjścia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:48
+msgid "Look"
+msgstr "Wygląd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:101
+msgid "Features"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:46
+#, fuzzy
+msgid "Media Types"
+msgstr "Typy plików"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:48
+msgid "file,audio,video,programs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:114
+msgid "theme"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:47
+#, fuzzy
+msgid "Transparency"
+msgstr "Transport"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:48
+#, fuzzy
+msgid "theme,background"
+msgstr "Akcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:74
+#, fuzzy
+msgid "Window Captions"
+msgstr "Nieznany operator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:88
+msgid "theme,mdi"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:87
+msgid "Workspace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:100
+#, fuzzy
+msgid "ToolBar Applets"
+msgstr "&Narzędzia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:101
+msgid "theme,toolbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:150
+#, fuzzy
+msgid "connection"
+msgstr "Połączenie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:33
+#, fuzzy
+msgid "Protection"
+msgstr "Brak połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:36
+msgid "ctcp,flood"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:144
+#, fuzzy
+msgid "Avatar"
+msgstr "Obraz Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.h:28
+msgid "Anti-spam"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:32
+msgid "Verbosity And Output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:34
+msgid "debug"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:28
+#, fuzzy
+msgid "Logging"
+msgstr "Tekst nie odnaleziony"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:29
+msgid "save,output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:50
+msgid "Input"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:33
+msgid "theme,colors,text"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:33
+msgid "Taskbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:47
+#, fuzzy
+msgid "Tree Taskbar"
+msgstr "Tryb &użytkownika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:65
+msgid "Foreground"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:111
+msgid "Classic Taskbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:52
+#, fuzzy
+msgid "Proxy Hosts"
+msgstr "Serwery Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:54
+#, fuzzy
+msgid "connection,servers"
+msgstr "Połączenie przerwane"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:28
+#, fuzzy
+msgid "Alert/Highlight"
+msgstr "M&inimalizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:42
+#, fuzzy
+msgid "Highlight"
+msgstr "M&inimalizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:55
+msgid "Taskbar Alert"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.h:29
+#, fuzzy
+msgid "Flood Protection"
+msgstr "Brak połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:30
+#, fuzzy
+msgid "Userlist"
+msgstr "Wyczyść"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:31
+msgid "theme,userlist,channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:45
+#, fuzzy
+msgid "theme,userlist,channel,background"
+msgstr "Akcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:66
+#, fuzzy
+msgid "theme,userlist,channel,colors"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:81
+#, fuzzy
+msgid "Nickname Grid"
+msgstr "Ostatnie &nicki"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:82
+#, fuzzy
+msgid "theme,userlist,channel,grid"
+msgstr "Akcje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:102
+#, fuzzy
+msgid "userlist,channel"
+msgstr "Anuluj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:29
+msgid "Labels"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:30
+msgid "theme,topic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:28
+#, fuzzy
+msgid "Scripting Engine"
+msgstr "Skrypty"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:29
+msgid "scripting,kvs,debug"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:55
+msgid "SSL"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:72
+#, fuzzy
+msgid "Socket"
+msgstr "Serwer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:87
+#, fuzzy
+msgid "Ident Service"
+msgstr "Ostatnie &serwery"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:29
+msgid "Ignore"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:31
+#, fuzzy
+msgid "protection"
+msgstr "Brak połączenia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:28
+msgid "Query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:30
+msgid "chat"
+msgstr ""
+
+#, fuzzy
+#~ msgid "Output verosity"
+#~ msgstr "Kontrola wyjścia"
+
+#, fuzzy
+#~ msgid "Scaling"
+#~ msgstr "Skrypty"
+
+#, fuzzy
+#~ msgid "Theme name:"
+#~ msgstr "Użytkownik:"
+
+#, fuzzy
+#~ msgid "Choose save directory"
+#~ msgstr "Wybierz katalog..."
+
+#, fuzzy
+#~ msgid "You must select save directory"
+#~ msgstr "Wybierz katalog..."
+
+#, fuzzy
+#~ msgid "Unable to create theme files directory."
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Unable to create theme utils directory."
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for reading."
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for writing."
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Choose filaname"
+#~ msgstr "Wybierz nazwę zapisywanego pliku"
+
+#, fuzzy
+#~ msgid "You must select filename"
+#~ msgstr "Wybierz nazwę zapisywanego pliku"
+
+#, fuzzy
+#~ msgid "Delete Selected Theme"
+#~ msgstr "Usuń serwer proxy"
+
+#, fuzzy
+#~ msgid "Open Theme - KVIrc"
+#~ msgstr "Ostatnie &kanały"
+
+#, fuzzy
+#~ msgid "You must select file"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "<p>Theme: %1</p>"
+#~ msgstr "Użytkownik:"
+
+#, fuzzy
+#~ msgid "Minimize new queries"
+#~ msgstr "M&inimalizuj"
+
+#, fuzzy
+#~ msgid "Idle interval:"
+#~ msgstr "Interfejs"
+
+#, fuzzy
+#~ msgid "Standard Colors"
+#~ msgstr "Zamknij"
+
+#, fuzzy
+#~ msgid "Avatar Handling"
+#~ msgstr "Obraz Avatar"
+
+#, fuzzy
+#~ msgid "MDI Captions"
+#~ msgstr "Akcje"
+
+#, fuzzy
+#~ msgid "Custom nickname:"
+#~ msgstr "Ostatnie &nicki"
+
+#~ msgid "Rename"
+#~ msgstr "Zmień nazwę"
+
+#, fuzzy
+#~ msgid "Export Selected..."
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "Export All..."
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "Find In Aliases..."
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "Alias Export"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid "Write Failed - KVIrc"
+#~ msgstr "Wybierz katalog..."
+
+#, fuzzy
+#~ msgid "Remove item"
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "Yes to All"
+#~ msgstr "Zaznacz wszystko"
+
+#, fuzzy
+#~ msgid "Missing Alias Name"
+#~ msgstr "Brak nazwy zmiennej"
+
+#, fuzzy
+#~ msgid "Missing Namespace Name"
+#~ msgstr "Brak nazwy zmiennej"
+
+#, fuzzy
+#~ msgid "Please enter the name for the new alias"
+#~ msgstr "Zaznacz wszystko"
+
+#, fuzzy
+#~ msgid "Rename Alias"
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "Please enter the new name for the alias"
+#~ msgstr "Zaznacz wszystko"
+
+#, fuzzy
+#~ msgid "Rename Namespace"
+#~ msgstr "Prawdziwe imię"
+
+#, fuzzy
+#~ msgid "Namespace"
+#~ msgstr "Typy plików"
+
+#, fuzzy
+#~ msgid "Connected to %s (%s)"
+#~ msgstr "Połączenie przerwane"
+
+#, fuzzy
+#~ msgid "Links cannot be requested: Not connected to a server"
+#~ msgstr "Nie jesteś połączony z serwerem"
+
+#, fuzzy
+#~ msgid "Links for %Q [IRC Context %u]"
+#~ msgstr "&Nowy kontekst irc"
+
+#, fuzzy
+#~ msgid "Total hosts listed"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#~ msgid "You're not connected to a server"
+#~ msgstr "Nie jesteś połączony z serwerem"
+
+#, fuzzy
+#~ msgid "List cannot be requested: Not connected to a server"
+#~ msgstr "Nie jesteś połączony z serwerem"
+
+#, fuzzy
+#~ msgid "Channel List [IRC Context %u]"
+#~ msgstr "&Nowy kontekst irc"
+
+#, fuzzy
+#~ msgid "Help Browser"
+#~ msgstr "Nowa &statyczna przeglądarka pomocy"
+
+#, fuzzy
+#~ msgid "Total %d channels"
+#~ msgstr "Ostatnie &kanały"
+
+#, fuzzy
+#~ msgid "Shows the URL list window"
+#~ msgstr "&Okno"
+
+#~ msgid "&Help"
+#~ msgstr "Po&moc"
+
+#, fuzzy
+#~ msgid "Clo&se"
+#~ msgstr "Zamknij"
+
+#, fuzzy
+#~ msgid "&Clear"
+#~ msgstr "Wyczyść"
+
+#, fuzzy
+#~ msgid "&List"
+#~ msgstr "&Połączenia"
+
+#, fuzzy
+#~ msgid "Window"
+#~ msgstr "&Okno"
+
+#, fuzzy
+#~ msgid "Count"
+#~ msgstr "Wytnij"
+
+#, fuzzy
+#~ msgid "Select an URL."
+#~ msgstr "Zaznacz wszystko"
+
+#, fuzzy
+#~ msgid "&Remove"
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "&Say to Window"
+#~ msgstr "&Okno"
+
+#, fuzzy
+#~ msgid "Window not found."
+#~ msgstr "Tekst nie odnaleziony"
+
+#, fuzzy
+#~ msgid "URL Module Configuration"
+#~ msgstr "Zapi&sz ustawienia"
+
+#, fuzzy
+#~ msgid "&Cancel"
+#~ msgstr "Anuluj"
+
+#, fuzzy
+#~ msgid "&Add Ban"
+#~ msgstr "Dodaj zakładkę"
+
+#, fuzzy
+#~ msgid "&Remove Selected"
+#~ msgstr "Usuń serwer proxy"
+
+#, fuzzy
+#~ msgid "Select a ban."
+#~ msgstr "Zaznacz wszystko"
+
+#, fuzzy
+#~ msgid "Window with ID '%Q' not found"
+#~ msgstr "Tekst nie odnaleziony"
+
+#, fuzzy
+#~ msgid "Window %Q not found"
+#~ msgstr "Tekst nie odnaleziony"
+
+#, fuzzy
+#~ msgid "Can't log to file %Q"
+#~ msgstr "Nastąpił błąd odczytu"
+
+#, fuzzy
+#~ msgid "Window with id '%Q' not found, returning empty string"
+#~ msgstr "Tekst nie odnaleziony"
+
+#, fuzzy
+#~ msgid "&Next >"
+#~ msgstr "Wygląd tekstu"
+
+#, fuzzy
+#~ msgid "Finish"
+#~ msgstr "Znajdź"
+
+#, fuzzy
+#~ msgid "<b>Nickname:</b>"
+#~ msgstr "Ostatnie &nicki"
+
+#, fuzzy
+#~ msgid "Application Folders"
+#~ msgstr "Zapi&sz ustawienia"
+
+#, fuzzy
+#~ msgid "<b>Store configuration in folder:</b>"
+#~ msgstr "Zapi&sz ustawienia"
+
+#, fuzzy
+#~ msgid "<b>Download files to folder:</b>"
+#~ msgstr "Zapi&sz ustawienia"
+
+#, fuzzy
+#~ msgid "Finish Setup"
+#~ msgstr "Znajdź"
+
+#, fuzzy
+#~ msgid "Choose a Configuration Folder - KVIrc Setup"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Choose a Download Folder - KVIrc Setup"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Can't add a null object"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "Not a widget object"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "Can't find the tab "
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Unknown position 'Q%'"
+#~ msgstr "Nieznana funkcja"
+
+#, fuzzy
+#~ msgid "Invalid timeout (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#~ msgid "unknown"
+#~ msgstr "nieznany"
+
+#, fuzzy
+#~ msgid "No socket object specified"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "Invalid port (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid ip address (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Can't add a non - popupmenu object"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "Unknown text position '%Q'"
+#~ msgstr "Nieznana funkcja"
+
+#~ msgid "Empty string"
+#~ msgstr "Pusty łańcuch"
+
+#~ msgid "Empty filename string"
+#~ msgstr "Pusta nazwa pliku"
+
+#~ msgid "No such open mode: %s"
+#~ msgstr "Tryb otwarcia '%s' nie istnieje"
+
+#~ msgid "File is not open !"
+#~ msgstr "Plik nie jest otwarty !"
+
+#~ msgid "Negative file index supplied !"
+#~ msgstr "Podano ujemny index pliku!"
+
+#~ msgid "Argument to long, using only first char"
+#~ msgstr "Argument zbyt długi, użyto jedynie pierwszy znak"
+
+#~ msgid "Argument length is 0 - empty string"
+#~ msgstr "Długość argumentu wynosi 0 - pusty łańcuch"
+
+#~ msgid "Write error occured !"
+#~ msgstr "Nastąpił błąd zapisu!"
+
+#~ msgid "Read error occured !"
+#~ msgstr "Nastąpił błąd odczytu"
+
+#~ msgid "An error occured !"
+#~ msgstr "Nastąpił błąd!"
+
+#~ msgid "Length is a negative number !"
+#~ msgstr "Długość jest liczbą ujemną!"
+
+#, fuzzy
+#~ msgid "No such open mode: '%Q'"
+#~ msgstr "Tryb otwarcia '%s' nie istnieje"
+
+#, fuzzy
+#~ msgid "File is not open!"
+#~ msgstr "Plik nie jest otwarty !"
+
+#, fuzzy
+#~ msgid "One of the geometry array parameters didn't evaluate to an integer"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "The first parameter didn't evaluate to an array nor an integer"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "One of the array parameters didn't evaluate to an integer"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "Unknown orientation"
+#~ msgstr "Nieznana funkcja"
+
+#, fuzzy
+#~ msgid "Invalid mode '%Q'"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Unknown mode "
+#~ msgstr "Nieznany tryb wyświetlania"
+
+#, fuzzy
+#~ msgid "Unknown segment style "
+#~ msgstr "Nieznane wyrównanie: %s"
+
+#, fuzzy
+#~ msgid "Failed to find the widget to wrap"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#~ msgid "Non-negative integer length expected as parameter"
+#~ msgstr "Spodziewano się dodatniej liczby całkowitej"
+
+#, fuzzy
+#~ msgid "Invalid object"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Can't fill non-widget object"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Invalid x offset parameter (%s)"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Invalid y offset parameter (%s)"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Can't find the specified file '%s'."
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "I can't find the specified file %Q."
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "No such line number"
+#~ msgstr "Plik nie istnieje"
+
+#, fuzzy
+#~ msgid "Unknown word wrap '%Q'"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "One of the colors array parameters didn't evaluate to an integer"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "Unknown text format '%Q'"
+#~ msgstr "Nieznana funkcja"
+
+#, fuzzy
+#~ msgid " I can't find the specified file '%Q'."
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid " I cannot read the file %Q'."
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Unknown alignment '%Q'"
+#~ msgstr "Nieznane wyrównanie: %s"
+
+#, fuzzy
+#~ msgid "Unknown auto formatting mode '%Q'"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "Unknown dock area '%Q'"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "Processing aborted"
+#~ msgstr "Połączenie przerwane"
+
+#, fuzzy
+#~ msgid "Invalid size parameter (%s)"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Unknown widget type: %s"
+#~ msgstr "Nieznane wyrównanie: %s"
+
+#, fuzzy
+#~ msgid "Can't find the widget object assuming 0"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Parent must be a widget object"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "Invalid parameters"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Invalid Parameters"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Invalid row parameter (%s)"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Invalid column parameter (%s)"
+#~ msgstr "Błędny margines"
+
+#, fuzzy
+#~ msgid "Unknown widget flag '%Q'"
+#~ msgstr "Nieznane wyrównanie: %s"
+
+#, fuzzy
+#~ msgid "Unknown style '%Q'"
+#~ msgstr "Nieznany styl ramki/cienia: %s"
+
+#, fuzzy
+#~ msgid "Unknown alignment: '%Q'"
+#~ msgstr "Nieznane wyrównanie: %s"
+
+#, fuzzy
+#~ msgid "Unknown frame style"
+#~ msgstr "Nieznany styl ramki/cienia: %s"
+
+#, fuzzy
+#~ msgid "Unknown echo mode %Q"
+#~ msgstr "Nieznany tryb wyświetlania"
+
+#, fuzzy
+#~ msgid "Doesn't a widget object"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "Unknown alignment"
+#~ msgstr "Nieznane wyrównanie: %s"
+
+#, fuzzy
+#~ msgid "Unknown orientation: "
+#~ msgstr "Nieznana funkcja"
+
+#, fuzzy
+#~ msgid "Not Enough Parameters"
+#~ msgstr "Brak nazwy zmiennej"
+
+#, fuzzy
+#~ msgid "Unknown tickmark '%Q'"
+#~ msgstr "Nieznana komenda"
+
+#, fuzzy
+#~ msgid "Unknown orientation '%Q'"
+#~ msgstr "Nieznana funkcja"
+
+#~ msgid "Find"
+#~ msgstr "Znajdź"
+
+#, fuzzy
+#~ msgid "&Findnext"
+#~ msgstr "Znajdź"
+
+#, fuzzy
+#~ msgid "Notifying avatar '%Q' to %Q"
+#~ msgstr "Obraz Avatar"
+
+#, fuzzy
+#~ msgid "Unknown "
+#~ msgstr "nieznany"
+
+#, fuzzy
+#~ msgid "Invalid DCOP parameter syntax"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Unsupported DCOP parameter type %s"
+#~ msgstr "Używaj IpV6"
+
+#, fuzzy
+#~ msgid "External Menu"
+#~ msgstr "Użytkownik:"
+
+#, fuzzy
+#~ msgid "External menu:"
+#~ msgstr "Użytkownik:"
+
+#, fuzzy
+#~ msgid "Item Id:"
+#~ msgstr "Użytkownik:"
+
+#, fuzzy
+#~ msgid "New Separator Above"
+#~ msgstr "Serwery"
+
+#, fuzzy
+#~ msgid "New Separator Inside"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "New External Menu Below"
+#~ msgstr "Użytkownik:"
+
+#, fuzzy
+#~ msgid "New External Menu Above"
+#~ msgstr "Użytkownik:"
+
+#, fuzzy
+#~ msgid "New External Menu Inside"
+#~ msgstr "Użytkownik:"
+
+#, fuzzy
+#~ msgid "Cu&t"
+#~ msgstr "Wytnij"
+
+#, fuzzy
+#~ msgid "&Copy"
+#~ msgstr "Kopiuj"
+
+#, fuzzy
+#~ msgid "&Paste Below"
+#~ msgstr "Wklej"
+
+#, fuzzy
+#~ msgid "Paste Above"
+#~ msgstr "Serwery"
+
+#, fuzzy
+#~ msgid "&Export All To..."
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "&Export selected To..."
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "Re&move Popup"
+#~ msgstr "Usuń"
+
+#~ msgid "Unknown error"
+#~ msgstr "Nieznany błąd"
+
+#, fuzzy
+#~ msgid "Choose the file to share"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Can't find the window with id '%Q'"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "No action name/index specified"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "The action parameter didn't evaluate to an index"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "The toolbar does not contain the specified item"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "Context"
+#~ msgstr "Połącz"
+
+#~ msgid "&Configure KVIrc..."
+#~ msgstr "&Opcje"
+
+#, fuzzy
+#~ msgid "&About KVIrc"
+#~ msgstr "Informacje o &KVirc"
+
+#~ msgid "&Quit"
+#~ msgstr "&Wyjście"
+
+#, fuzzy
+#~ msgid "Hide Window"
+#~ msgstr "Okno &terminala"
+
+#, fuzzy
+#~ msgid "Show Window"
+#~ msgstr "&Okno"
+
+#, fuzzy
+#~ msgid "Invalid IRC context id '%Q'"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Failed to allocate the specified crypt engine"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Step 1: Entry Name"
+#~ msgstr "Prawdziwe imię"
+
+#, fuzzy
+#~ msgid "Registration Complete"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "User not found (%Q)"
+#~ msgstr "Brak połączenia"
+
+#, fuzzy
+#~ msgid "User %Q not found"
+#~ msgstr "Tekst nie odnaleziony"
+
+#, fuzzy
+#~ msgid "Mask %Q not found"
+#~ msgstr "Tekst nie odnaleziony"
+
+#, fuzzy
+#~ msgid "Property Editor"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "Mask Editor"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid "Registered User Entry"
+#~ msgstr "Za&rejestrowani użytkownicy"
+
+#, fuzzy
+#~ msgid "&Edit"
+#~ msgstr "&Wyjście"
+
+#, fuzzy
+#~ msgid "Notify nicknames:"
+#~ msgstr "Ostatnie &nicki"
+
+#, fuzzy
+#~ msgid "All Properties..."
+#~ msgstr "Trwa łączenie..."
+
+#, fuzzy
+#~ msgid "Registered Users - KVIrc"
+#~ msgstr "Za&rejestrowani użytkownicy"
+
+#, fuzzy
+#~ msgid "Name"
+#~ msgstr "Zmień nazwę"
+
+#, fuzzy
+#~ msgid "No entries selected."
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "Can't open file %s for writing."
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Can't open file %s for reading."
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Invalid ToolBar Label"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Customize Toolbars"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid "New ToolBar"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid "Delete ToolBar"
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "Edit ToolBar"
+#~ msgstr "Dodaj zakładkę"
+
+#, fuzzy
+#~ msgid "Export ToolBar"
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "ToolBar Export"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid "My ToolBar"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid "Terminal"
+#~ msgstr "Okno &terminala"
+
+#, fuzzy
+#~ msgid "No such irc context (%d)"
+#~ msgstr "&Nowy kontekst irc"
+
+#, fuzzy
+#~ msgid "Action code"
+#~ msgstr "Zapi&sz ustawienia"
+
+#, fuzzy
+#~ msgid "Code"
+#~ msgstr "Zamknij"
+
+#, fuzzy
+#~ msgid "Category:"
+#~ msgstr "Kategoria"
+
+#, fuzzy
+#~ msgid "Needs IRC Context"
+#~ msgstr "&Nowy kontekst irc"
+
+#, fuzzy
+#~ msgid "Needs IRC Connection"
+#~ msgstr "Nowe &połączenie"
+
+#, fuzzy
+#~ msgid "Enable in Console Windows"
+#~ msgstr "Okno &terminala"
+
+#, fuzzy
+#~ msgid "Enable in Channel Windows"
+#~ msgstr "Ułóż kaskadują&co"
+
+#, fuzzy
+#~ msgid "Enable in DCC Chat Windows"
+#~ msgstr "Ułóż kaskadują&co"
+
+#, fuzzy
+#~ msgid "New Action"
+#~ msgstr "Akcje"
+
+#, fuzzy
+#~ msgid "Delete Actions"
+#~ msgstr "Zaznacz wszystko"
+
+#, fuzzy
+#~ msgid "Export Actions..."
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "My Action"
+#~ msgstr "Akcje"
+
+#, fuzzy
+#~ msgid "Action Editor"
+#~ msgstr "Wygląd tekstu"
+
+#, fuzzy
+#~ msgid "Sound file '%Q' not found"
+#~ msgstr "Tekst nie odnaleziony"
+
+#, fuzzy
+#~ msgid "Configure"
+#~ msgstr "&Opcje"
+
+#, fuzzy
+#~ msgid "Show Help"
+#~ msgstr "Pokaż ukryte pliki"
+
+#, fuzzy
+#~ msgid "More Addons..."
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "Name: %Q"
+#~ msgstr "Zmień nazwę"
+
+#, fuzzy
+#~ msgid "Total: %d addons installed"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Script registration failed"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "Failed to make the directory %Q"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Failed to remove the file %Q"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Failed to remove the directory %Q"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Can't open the file \"%Q\" for reading"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Read error for file %Q"
+#~ msgstr "Nastąpił błąd odczytu"
+
+#, fuzzy
+#~ msgid "Can't open the file \"%Q\" for writing"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "&Disable Handler"
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "Re&move Handler"
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "&Export Handler To..."
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "Ops.. internal error"
+#~ msgstr "Wewnętrzny błąd"
+
+#, fuzzy
+#~ msgid "Password"
+#~ msgstr "Hasło:"
+
+#, fuzzy
+#~ msgid "Show this window after connecting"
+#~ msgstr "Nie jesteś połączony z serwerem"
+
+#, fuzzy
+#~ msgid "Recent Channels"
+#~ msgstr "Ostatnie &kanały"
+
+#, fuzzy
+#~ msgid "Registered Channels"
+#~ msgstr "Za&rejestrowani użytkownicy"
+
+#, fuzzy
+#~ msgid "%cUser action: %Q"
+#~ msgstr "Brak połączenia"
+
+#, fuzzy
+#~ msgid "Category: %Q"
+#~ msgstr "Kategoria"
+
+#, fuzzy
+#~ msgid "%cListing Qt Properties for widget object %s (%s)"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "No such QT property (%s)"
+#~ msgstr "&Nowy kontekst irc"
+
+#, fuzzy
+#~ msgid "missing parameter"
+#~ msgstr "Brak nazwy zmiennej"
+
+#, fuzzy
+#~ msgid "Invalid parameter (%s)"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Pixmap not found"
+#~ msgstr "Tekst nie odnaleziony"
+
+#, fuzzy
+#~ msgid "Unsupported QT property (%s)"
+#~ msgstr "Używaj IpV6"
+
+#, fuzzy
+#~ msgid "Missing parameters"
+#~ msgstr "Brak nazwy zmiennej"
+
+#, fuzzy
+#~ msgid "Can't find the multimedia file %s"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Missing target, no action taken"
+#~ msgstr "Brak nazwy zmiennej"
+
+#, fuzzy
+#~ msgid "%s plays '%s' to %s"
+#~ msgstr "%s (+%s) na %s"
+
+#, fuzzy
+#~ msgid "You are not connected to a server"
+#~ msgstr "Nie jesteś połączony z serwerem"
+
+#, fuzzy
+#~ msgid "%s (module %s)"
+#~ msgstr "%s na %s"
+
+#, fuzzy
+#~ msgid "Can't find the icon \"%Q\": ignoring"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Invalid index specified: ignored"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "Invalid IRC url (%Q)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Failed to load the file '%Q' for parsing"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Invalid syntax for screen coordinates, using cursor position"
+#~ msgstr "Błędny margines"
+
+#, fuzzy
+#~ msgid "Window with id %Q not found: no rebinding performed"
+#~ msgstr "Tekst nie odnaleziony"
+
+#, fuzzy
+#~ msgid "Failed to execute command '%Q'"
+#~ msgstr "Brak takiej komendy w module"
+
+#, fuzzy
+#~ msgid "Unknown callback command \"%Q\""
+#~ msgstr "Nieznana komenda"
+
+#, fuzzy
+#~ msgid "IP address %d: %s"
+#~ msgstr "Adres Ip:"
+
+#, fuzzy
+#~ msgid "Left operand didn't evaluate to a number"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "Right operand didn't evaluate to a number"
+#~ msgstr "Prawy operand nie jest liczbą"
+
+#~ msgid "Division by zero"
+#~ msgstr "Dzielenie przez zero"
+
+#, fuzzy
+#~ msgid "No such IRC context (%u)"
+#~ msgstr "&Nowy kontekst irc"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %"
+#~ "s\" for the command syntax"
+#~ msgstr "Niespodziewany znak"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found end of input where character '%c' was expected: see \"/help %s\" "
+#~ "for the command syntax"
+#~ msgstr "Niespodziewany znak"
+
+#, fuzzy
+#~ msgid "Empty script"
+#~ msgstr "Pusty łańcuch"
+
+#, fuzzy
+#~ msgid "Unterminated instruction block"
+#~ msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of script in instruction block (missing closing brace)"
+#~ msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#, fuzzy
+#~ msgid "Unexpected character '%q' (unicode %x) after a switch dash"
+#~ msgstr "Niespodziewany znak"
+
+#, fuzzy
+#~ msgid "Unexpected end of script after a switch dash"
+#~ msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#, fuzzy
+#~ msgid "Unexpected end of script in parameter list"
+#~ msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#, fuzzy
+#~ msgid "Unexpected end of line in parameter list"
+#~ msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#, fuzzy
+#~ msgid "Unexpected end of script in hash key (missing '}' character ?)"
+#~ msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#, fuzzy
+#~ msgid "Unexpected end of script in string constant (missing \" character ?)"
+#~ msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#, fuzzy
+#~ msgid "Unknown binary operator '=%q': did you mean '==' ?"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "Unknown binary operator '%q'"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "Unexpected end of script in expression"
+#~ msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#, fuzzy
+#~ msgid "You're not connected to an IRC server"
+#~ msgstr "Nie jesteś połączony z serwerem"
+
+#, fuzzy
+#~ msgid "Missing parameter"
+#~ msgstr "Brak nazwy zmiennej"
+
+#, fuzzy
+#~ msgid "Failed to send an unknown command as /raw"
+#~ msgstr "Nieznana komenda"
+
+#, fuzzy
+#~ msgid "Call to undefined command '%Q'"
+#~ msgstr "Brak takiej komendy w module"
+
+#, fuzzy
+#~ msgid "Missing class name"
+#~ msgstr "Brak nazwy zmiennej"
+
+#, fuzzy
+#~ msgid "Window with caption %Q not found"
+#~ msgstr "Tekst nie odnaleziony"
+
+#, fuzzy
+#~ msgid "Unexpected end of script after '$' function call prefix"
+#~ msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#, fuzzy
+#~ msgid "Array index didn't evaluate to an integer"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "Unexpected end of script in multiline comment"
+#~ msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#, fuzzy
+#~ msgid "The target variable didn't evaluate to an integer or real value"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "The right side of operator '&=' didn't evaluate to an integer"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "The left side of operator '&=' didn't evaluate to an integer"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "The right side of operator '/=' didn't evaluate to a number"
+#~ msgstr "Prawy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "The left side of operator '/=' didn't evaluate to a number"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "The right side of operator '%=' didn't evaluate to a number"
+#~ msgstr "Prawy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "The left side of operator '%=' didn't evaluate to a number"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "The right side of operator '*=' didn't evaluate to a number"
+#~ msgstr "Prawy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "The left side of operator '*=' didn't evaluate to a number"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "The right side of operator '|=' didn't evaluate to an integer"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "The left side of operator '|=' didn't evaluate to an integer"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "The right side of operator '<<=' didn't evaluate to an integer"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "The left side of operator '<<=' didn't evaluate to an integer"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "The right side of operator '>>=' didn't evaluate to an integer"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "The left side of operator '>>=' didn't evaluate to an integer"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "The right side of operator '-=' didn't evaluate to a number"
+#~ msgstr "Prawy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "The left side of operator '-=' didn't evaluate to a number"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "The right side of operator '+=' didn't evaluate to a number"
+#~ msgstr "Prawy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "The left side of operator '+=' didn't evaluate to a number"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "The right side of operator '^=' didn't evaluate to an integer"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "The left side of operator '^=' didn't evaluate to an integer"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "Window with ID '%s' not found"
+#~ msgstr "Tekst nie odnaleziony"
+
+#, fuzzy
+#~ msgid "Missing alias name"
+#~ msgstr "Brak nazwy zmiennej"
+
+#, fuzzy
+#~ msgid "Window button '%Q' not found"
+#~ msgstr "Tekst nie odnaleziony"
+
+#, fuzzy
+#~ msgid "Can't find the icon '%Q'"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "No such event (%Q)"
+#~ msgstr "&Nowy kontekst irc"
+
+#, fuzzy
+#~ msgid "The timeout delay didn't evaluate to an integer"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid ""
+#~ "The left side of the scope operator didn't evaluate as an object reference"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid ""
+#~ "The left side of the scope operator evaluated to a null object reference"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "Listing Qt properties for object named \"%Q\" of KVS class %Q"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Can't find the requested image"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Found character '%q' (unicode %x) where a slash '/' was expected"
+#~ msgstr "Niespodziewany znak"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of command in binding operation, at least two slashes are "
+#~ "missing"
+#~ msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of command in binding operation, at least one slash is "
+#~ "missing"
+#~ msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#, fuzzy
+#~ msgid "Unknown binding operation '%Q'"
+#~ msgstr "Nieznany operator"
+
+#~ msgid "Unknown operator"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of script after a variable reference: expected operator"
+#~ msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#, fuzzy
+#~ msgid "Unexpected character '%q' (unicode %x)"
+#~ msgstr "Niespodziewany znak"
+
+#, fuzzy
+#~ msgid "Invalid pitch value: using default"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid duration value: using default"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Can't delete a null object reference"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Can't delete an inexisting object"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "Invalid data type for parameter \"%s\""
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "found string value \"%Q\" where type '%s' was expected"
+#~ msgstr "Niespodziewany znak"
+
+#, fuzzy
+#~ msgid "found type %Q where type '%s' was expected"
+#~ msgstr "Niespodziewany znak"
+
+#, fuzzy
+#~ msgid "Missing non-optional parameter \"%s\""
+#~ msgstr "Brak nazwy zmiennej"
+
+#, fuzzy
+#~ msgid "[KVS] Window:"
+#~ msgstr "&Okno"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of command buffer while looking for the \"perl.end\" "
+#~ "statement"
+#~ msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#, fuzzy
+#~ msgid "Found character %q (unicode %x) where a variable was expected"
+#~ msgstr "Niespodziewany znak"
+
+#, fuzzy
+#~ msgid "Unexpected end of buffer in class definition"
+#~ msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#, fuzzy
+#~ msgid "Found character %q (unicode %x) where a function name was expected"
+#~ msgstr "Niespodziewany znak"
+
+#, fuzzy
+#~ msgid "Unexpected end of buffer in function parameter list reminder"
+#~ msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of script while looking for the instruction block of the "
+#~ "while command"
+#~ msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of command after the 'do' command block: expected 'while' "
+#~ "keyword"
+#~ msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#, fuzzy
+#~ msgid "Found character %q (unicode %x) where a 'while' keyword was expected"
+#~ msgstr "Niespodziewany znak"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of script while looking for the instruction block of the "
+#~ "if command"
+#~ msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of buffer while looking for the closing ')' in the 'for' "
+#~ "command"
+#~ msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found character '%q' (unicode %x) where '%' or '$' was expected: see /"
+#~ "help foreach for the command syntax"
+#~ msgstr "Niespodziewany znak"
+
+#, fuzzy
+#~ msgid "Unexpected end of buffer in switch condition block"
+#~ msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found character %q (unicode %x) where a 'case','match','regexp','default' "
+#~ "or 'break' label was expected"
+#~ msgstr "Niespodziewany znak"
+
+#, fuzzy
+#~ msgid "Unexpected end of buffer in defpopup block"
+#~ msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found character %q (unicode %x) where a "
+#~ "'prologue','separator','label','popup','item','extpopup' or 'epilogue' "
+#~ "label was expected"
+#~ msgstr "Niespodziewany znak"
+
+#, fuzzy
+#~ msgid "Server ERROR: %Q"
+#~ msgstr "Serwer:"
+
+#~ msgid "You have changed your nickname to %Q"
+#~ msgstr "Zmieniłeś swój nickname na %Q"
+
+#, fuzzy
+#~ msgid "http://www.kvirc.net/"
+#~ msgstr ""
+#~ "\n"
+#~ "Strona domowa: http://www.kvirc.net"
+
+#, fuzzy
+#~ msgid "%Q unsets avatar"
+#~ msgstr "Obraz Avatar"
+
+#, fuzzy
+#~ msgid "Channel operators"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "Half-operators"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "Private"
+#~ msgstr "Wklej"
+
+#, fuzzy
+#~ msgid "Quiet or channel owner"
+#~ msgstr "Pokazuj pingi od serwera"
+
+#, fuzzy
+#~ msgid "Moderated"
+#~ msgstr "Przerwij"
+
+#, fuzzy
+#~ msgid "Registered"
+#~ msgstr "Za&rejestrowani użytkownicy"
+
+#, fuzzy
+#~ msgid "Redirect on channel full"
+#~ msgstr "Za&rejestrowani użytkownicy"
+
+#, fuzzy
+#~ msgid "Unknown channel mode"
+#~ msgstr "Nieznany tryb wyświetlania"
+
+#, fuzzy
+#~ msgid ": Unknown user mode"
+#~ msgstr "Nieznany tryb wyświetlania"
+
+#, fuzzy
+#~ msgid "Names for \r!c\r%Q\r: %Q"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "(unknown)"
+#~ msgstr "nieznany"
+
+#, fuzzy
+#~ msgid "Channel topic is: %Q"
+#~ msgstr "Anuluj"
+
+#, fuzzy
+#~ msgid "Topic for \r!c\r%Q\r is: %Q"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "No topic is set for channel \r!c\r%Q\r"
+#~ msgstr "Brak wartości do wstawienia"
+
+#, fuzzy
+#~ msgid "Topic was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r on %Q"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "Topic was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "Topic for \r!c\r%Q\r was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r on %Q"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "Topic for \r!c\r%Q\r was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "Channel mode for \r!c\r%Q\r is %s"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "User mode for \r!n\r%Q\r is %s"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "End of channel %Q for \r!c\r%Q\r"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "Invite listing"
+#~ msgstr "Interfejs"
+
+#, fuzzy
+#~ msgid "List: %Q"
+#~ msgstr "&Połączenia"
+
+#~ msgid "Restoring pre-away nickname (%Q)"
+#~ msgstr "Znajdowanie hosta %Q..."
+
+#~ msgid "Setting away nickname (%Q)"
+#~ msgstr "Znajdowanie hosta %Q..."
+
+#, fuzzy
+#~ msgid "Cannot sent to channel: %Q"
+#~ msgstr "Brak wartości do wstawienia"
+
+#, fuzzy
+#~ msgid "Cannot sent to channel"
+#~ msgstr "Pokazuj skrócone zmiany trybów"
+
+#, fuzzy
+#~ msgid "Cannot sent text to channel %Q"
+#~ msgstr "Brak wartości do wstawienia"
+
+#, fuzzy
+#~ msgid "Hostname resolution aborted"
+#~ msgstr "Połączenie przerwane"
+
+#, fuzzy
+#~ msgid "Attempting %Q to %Q (%Q) on port %u"
+#~ msgstr "Próba nawiązania połączenia z %w (%s) na porcie %s"
+
+#, fuzzy
+#~ msgid "secure connection"
+#~ msgstr "Brak połączenia"
+
+#, fuzzy
+#~ msgid "Using cached proxy IP address (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Resuming direct server connection"
+#~ msgstr "Brak połączenia"
+
+#, fuzzy
+#~ msgid "Looking up the proxy hostname (%s)..."
+#~ msgstr "Znajdowanie hosta %s..."
+
+#~ msgid "Can't find the proxy IP address: %Q"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "Proxy hostname resolved to %s"
+#~ msgstr "Brak nazwy hosta do odszukania"
+
+#, fuzzy
+#~ msgid "Using cached server IP address (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Looking up the server hostname (%s)..."
+#~ msgstr "Znajdowanie hosta %s..."
+
+#~ msgid "Can't find the server IP address: %Q"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "Server hostname resolved to %s"
+#~ msgstr "Brak nazwy hosta do odszukania"
+
+#, fuzzy
+#~ msgid "Real hostname for %s is %s"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Server %s has a nickname: %s"
+#~ msgstr "Znajdowanie hosta %s..."
+
+#, fuzzy
+#~ msgid "Configure Servers..."
+#~ msgstr "Zarejestrowani użytkownicy"
+
+#, fuzzy
+#~ msgid "Configure Registered Users..."
+#~ msgstr "Zarejestrowani użytkownicy..."
+
+#~ msgid "Configure Identity..."
+#~ msgstr "Tożsamość..."
+
+#~ msgid "Show SocketSpy..."
+#~ msgstr "Szpieg gniazda..."
+
+#, fuzzy
+#~ msgid "Get Network Links"
+#~ msgstr "Wygląd tekstu"
+
+#, fuzzy
+#~ msgid "Get Channel List"
+#~ msgstr "Za&rejestrowani użytkownicy"
+
+#, fuzzy
+#~ msgid "Configure KVIrc..."
+#~ msgstr "&Opcje"
+
+#, fuzzy
+#~ msgid "Shows the general options dialog"
+#~ msgstr "KVIrc : Ogólne opcje"
+
+#, fuzzy
+#~ msgid "Customize Toolbars..."
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid "Join Channels..."
+#~ msgstr "Ostatnie &kanały"
+
+#~ msgid "Edit Actions..."
+#~ msgstr "Akcje..."
+
+#, fuzzy
+#~ msgid "Edit Aliases..."
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "Shows the documentation index"
+#~ msgstr "KVIrc : Ogólne opcje"
+
+#~ msgid "Cascade windows"
+#~ msgstr "Ułóż kaskadująco"
+
+#~ msgid "Minimize all windows"
+#~ msgstr "Minimalizuj"
+
+#~ msgid "New IRC Context"
+#~ msgstr "Nowy kontekst irc"
+
+#, fuzzy
+#~ msgid "Quit KVIrc"
+#~ msgstr "Informacje o KVirc"
+
+#, fuzzy
+#~ msgid "IRC Context Display"
+#~ msgstr "&Nowy kontekst irc"
+
+#~ msgid "Connect/Disconnect"
+#~ msgstr "Połączenie"
+
+#~ msgid "Connect"
+#~ msgstr "Połącz"
+
+#, fuzzy
+#~ msgid "Abort Connection"
+#~ msgstr "brak połączenia"
+
+#, fuzzy
+#~ msgid "Join Channel"
+#~ msgstr "Ostatnie &kanały"
+
+#, fuzzy
+#~ msgid "Change Nickname"
+#~ msgstr "Ostatnie &nicki"
+
+#, fuzzy
+#~ msgid "Connect To"
+#~ msgstr "Połącz"
+
+#, fuzzy
+#~ msgid "Server Notices (+s)"
+#~ msgstr "Serwery"
+
+#, fuzzy
+#~ msgid "Irc Tools"
+#~ msgstr "Narzędzia Irc"
+
+#, fuzzy
+#~ msgid "Irc Actions"
+#~ msgstr "Akcje"
+
+#, fuzzy
+#~ msgid "Changed text encoding to %Q"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Connection to server established"
+#~ msgstr "Połączenie przerwane"
+
+#~ msgid "Local host address is %Q"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#~ msgid "The local IP address as seen by the IRC server is %Q"
+#~ msgstr "Znajdowanie hosta %Q..."
+
+#~ msgid "Unable to resolve the local hostname as seen by the IRC server: %Q"
+#~ msgstr "Znajdowanie hosta %Q..."
+
+#, fuzzy
+#~ msgid "Looking up the local hostname as seen by the IRC server (%Q)"
+#~ msgstr "Znajdowanie hosta %s..."
+
+#, fuzzy
+#~ msgid ""
+#~ "Unable to resolve the local hostname as seen by the IRC server: %Q, using "
+#~ "previously resolved %Q"
+#~ msgstr "Znajdowanie hosta %s..."
+
+#, fuzzy
+#~ msgid "Local hostname as seen by the IRC server resolved to %s"
+#~ msgstr "Znajdowanie hosta %s..."
+
+#~ msgid "Using server specific username (%Q)"
+#~ msgstr "Znajdowanie hosta %Q..."
+
+#~ msgid "Using network specific username (%Q)"
+#~ msgstr "Znajdowanie hosta %Q..."
+
+#~ msgid "Using server specific nickname (%Q)"
+#~ msgstr "Znajdowanie hosta %Q..."
+
+#~ msgid "Using network specific nickname (%Q)"
+#~ msgstr "Znajdowanie hosta %Q..."
+
+#~ msgid "Using server specific real name (%Q)"
+#~ msgstr "Znajdowanie hosta %Q..."
+
+#~ msgid "Using network specific real name (%Q)"
+#~ msgstr "Znajdowanie hosta %Q..."
+
+#, fuzzy
+#~ msgid "Auto-joining network specific channels"
+#~ msgstr "Znajdowanie hosta %s..."
+
+#, fuzzy
+#~ msgid "Auto-joining server specific channels"
+#~ msgstr "Znajdowanie hosta %s..."
+
+#, fuzzy
+#~ msgid "Updating away state for channel %Q"
+#~ msgstr "Brak wartości do wstawienia"
+
+#, fuzzy
+#~ msgid "Setup aborted"
+#~ msgstr "Połączenie przerwane"
+
+#, fuzzy
+#~ msgid "Selection"
+#~ msgstr "Zaznacz wszystko"
+
+#, fuzzy
+#~ msgid "Highlighted text"
+#~ msgstr "M&inimalizuj"
+
+#, fuzzy
+#~ msgid "Parser error"
+#~ msgstr "Wewnętrzny błąd"
+
+#, fuzzy
+#~ msgid "Socket error"
+#~ msgstr "&Szpieg gniazda"
+
+#, fuzzy
+#~ msgid "System error"
+#~ msgstr "Wewnętrzny błąd"
+
+#, fuzzy
+#~ msgid "Raw data to server"
+#~ msgstr "Ostatnie &serwery"
+
+#, fuzzy
+#~ msgid "Connection status"
+#~ msgstr "Połączenie przerwane"
+
+#, fuzzy
+#~ msgid "Server information"
+#~ msgstr "Ogólne opcje"
+
+#, fuzzy
+#~ msgid "Server ping"
+#~ msgstr "Ogólne opcje"
+
+#, fuzzy
+#~ msgid "User action"
+#~ msgstr "Brak połączenia"
+
+#, fuzzy
+#~ msgid "Avatar change"
+#~ msgstr "Obraz Avatar"
+
+#, fuzzy
+#~ msgid "Nick changes"
+#~ msgstr "Anuluj"
+
+#, fuzzy
+#~ msgid "Multiple user mode change"
+#~ msgstr "Pokazuj skrócone zmiany trybów"
+
+#, fuzzy
+#~ msgid "Channel key change"
+#~ msgstr "Pokazuj skrócone zmiany trybów"
+
+#, fuzzy
+#~ msgid "Channel limit change"
+#~ msgstr "Pokazuj skrócone zmiany trybów"
+
+#, fuzzy
+#~ msgid "-e mode change"
+#~ msgstr "Pokazuj skrócone zmiany trybów"
+
+#, fuzzy
+#~ msgid "Multiple channel mode change"
+#~ msgstr "Pokazuj skrócone zmiany trybów"
+
+#, fuzzy
+#~ msgid "Whois channels reply"
+#~ msgstr "Pokaż czas synchronizacji kanału"
+
+#, fuzzy
+#~ msgid "Whois server reply"
+#~ msgstr "Pokazuj pingi od serwera"
+
+#, fuzzy
+#~ msgid "Login operations completed"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "Spam report"
+#~ msgstr "Serwer:"
+
+#, fuzzy
+#~ msgid "Channel notice"
+#~ msgstr "Anuluj"
+
+#, fuzzy
+#~ msgid "Query notice"
+#~ msgstr "Serwery"
+
+#, fuzzy
+#~ msgid "Server notice"
+#~ msgstr "Serwery"
+
+#, fuzzy
+#~ msgid "Halfop mode change"
+#~ msgstr "Pokazuj skrócone zmiany trybów"
+
+#, fuzzy
+#~ msgid "Ident message"
+#~ msgstr "Interfejs"
+
+#, fuzzy
+#~ msgid "Half-deop mode change"
+#~ msgstr "Pokazuj skrócone zmiany trybów"
+
+#, fuzzy
+#~ msgid "Server statistics"
+#~ msgstr "Serwery"
+
+#, fuzzy
+#~ msgid "Search"
+#~ msgstr "Narzędzia Irc"
+
+#, fuzzy
+#~ msgid "Generic error"
+#~ msgstr "Wewnętrzny błąd"
+
+#, fuzzy
+#~ msgid "Generic critical error"
+#~ msgstr "Wewnętrzny błąd"
+
+#, fuzzy
+#~ msgid "Userop mode change"
+#~ msgstr "Pokazuj skrócone zmiany trybów"
+
+#, fuzzy
+#~ msgid "User-deop mode change"
+#~ msgstr "Pokazuj skrócone zmiany trybów"
+
+#, fuzzy
+#~ msgid "Server error"
+#~ msgstr "Wewnętrzny błąd"
+
+#, fuzzy
+#~ msgid "Icon Table"
+#~ msgstr "Tabela &ikon"
+
+#, fuzzy
+#~ msgid "Contacting %Q %s (%s) on port %u"
+#~ msgstr "Próba nawiązania połączenia z %w (%s) na porcie %s"
+
+#, fuzzy
+#~ msgid "proxy host"
+#~ msgstr "Serwery Proxy"
+
+#, fuzzy
+#~ msgid "IRC server"
+#~ msgstr "Serwery IRC"
+
+#, fuzzy
+#~ msgid "Low-level transport connection established [%s (%s:%u)]"
+#~ msgstr "Połączenie przerwane"
+
+#, fuzzy
+#~ msgid "%Q established [%s (%s:%u)]"
+#~ msgstr "Połączenie przerwane"
+
+#, fuzzy
+#~ msgid "Secure proxy connection"
+#~ msgstr "Brak połączenia"
+
+#, fuzzy
+#~ msgid "Proxy connection"
+#~ msgstr "Brak połączenia"
+
+#, fuzzy
+#~ msgid "Negotiating relay information"
+#~ msgstr "Pokazuj rozszeżone informacje o serwerze"
+
+#, fuzzy
+#~ msgid "Using HTTP protocol."
+#~ msgstr "Używaj IpV6"
+
+#, fuzzy
+#~ msgid "Using SOCKSV4 protocol."
+#~ msgstr "Używaj IpV6"
+
+#, fuzzy
+#~ msgid "Using SOCKSV5 protocol."
+#~ msgstr "Używaj IpV6"
+
+#, fuzzy
+#~ msgid "IRC Context related actions"
+#~ msgstr "&Nowy kontekst irc"
+
+#, fuzzy
+#~ msgid "Generic"
+#~ msgstr "Ogólne"
+
+#, fuzzy
+#~ msgid "Generic actions"
+#~ msgstr "Ogólne opcje"
+
+#, fuzzy
+#~ msgid "Settings"
+#~ msgstr "Centrum &skryptów"
+
+#~ msgid "Scripting"
+#~ msgstr "Skrypty"
+
+#~ msgid "IRC Channel related actions"
+#~ msgstr "Nowy kontekst irc"
+
+#, fuzzy
+#~ msgid "Reconnect attempt aborted"
+#~ msgstr "Połączenie przerwane"
+
+#, fuzzy
+#~ msgid "Connection attempt failed [%s]"
+#~ msgstr "Połączenie przerwane"
+
+#, fuzzy
+#~ msgid "Secure connection"
+#~ msgstr "Brak połączenia"
+
+#, fuzzy
+#~ msgid "Connection terminated [%s (%s:%u)]"
+#~ msgstr "Połączenie przerwane"
+
+#, fuzzy
+#~ msgid "Sent QUIT, waiting for the server to close the connection..."
+#~ msgstr "Wysłano QUIT... oczekiwanie na zamknięcie połączenia przez serwer"
+
+#~ msgid "Loaded module '%s' (%s)"
+#~ msgstr "Załadowano moduł '%s' (%s)"
+
+#~ msgid "Unloaded module '%s'"
+#~ msgstr "Wyładowano moduł '%s'"
+
+#, fuzzy
+#~ msgid "Ban Editor"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid "Ban Exception Editor"
+#~ msgstr "Wygląd tekstu"
+
+#, fuzzy
+#~ msgid "Invite Exception Editor"
+#~ msgstr "Wygląd tekstu"
+
+#, fuzzy
+#~ msgid "Mode Editor"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid "Dead channel"
+#~ msgstr "Ostatnie &kanały"
+
+#, fuzzy
+#~ msgid "operator"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "operators"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "channel owner"
+#~ msgstr "Pokazuj pingi od serwera"
+
+#, fuzzy
+#~ msgid "channel owners"
+#~ msgstr "Anuluj"
+
+#, fuzzy
+#~ msgid "user-operator"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "user-operators"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "Flooded with messages"
+#~ msgstr "Interfejs"
+
+#, fuzzy
+#~ msgid "[Dead channel]"
+#~ msgstr "Ostatnie &kanały"
+
+#, fuzzy
+#~ msgid " on "
+#~ msgstr "%s na %s"
+
+#, fuzzy
+#~ msgid "<b>Channel mode:</b>"
+#~ msgstr "Anuluj"
+
+#~ msgid "Channel synchronized in %d.%d seconds"
+#~ msgstr "Kanał zsynchronizowany w %d.%d sekund"
+
+#, fuzzy
+#~ msgid "Channel topic:"
+#~ msgstr "Anuluj"
+
+#~ msgid "Set by"
+#~ msgstr "Ustawił"
+
+#, fuzzy
+#~ msgid "Set on"
+#~ msgstr "Zaznacz wszystko"
+
+#, fuzzy
+#~ msgid "Double-click to edit..."
+#~ msgstr ""
+#~ "Kliknij podwójnie by otworzyć link<br>Kliknij prawym przyciskiem aby "
+#~ "zobaczyć inne opcje"
+
+#, fuzzy
+#~ msgid "No topic is set"
+#~ msgstr "Brak wartości do wstawienia"
+
+#, fuzzy
+#~ msgid "Double-click to set..."
+#~ msgstr ""
+#~ "Kliknij podwójnie by otworzyć link<br>Kliknij prawym przyciskiem aby "
+#~ "zobaczyć inne opcje"
+
+#, fuzzy
+#~ msgid "History"
+#~ msgstr "Katalog domowy"
+
+#, fuzzy
+#~ msgid "Commit Changes"
+#~ msgstr "Ostatnie &kanały"
+
+#, fuzzy
+#~ msgid "Discard Changes"
+#~ msgstr "Anuluj"
+
+#, fuzzy
+#~ msgid "CTCP Page - KVIrc"
+#~ msgstr "Wybierz katalog..."
+
+#, fuzzy
+#~ msgid "Active Bans"
+#~ msgstr "Akcje"
+
+#~ msgid "Set at"
+#~ msgstr "Data"
+
+#, fuzzy
+#~ msgid "Remove %Q"
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "Connection in progress..."
+#~ msgstr "łączenie..."
+
+#, fuzzy
+#~ msgid "Login in progress..."
+#~ msgstr "logowanie się..."
+
+#, fuzzy
+#~ msgid "Not connected"
+#~ msgstr "Brak połączenia"
+
+#, fuzzy
+#~ msgid "No IRC context"
+#~ msgstr "&Nowy kontekst irc"
+
+#, fuzzy
+#~ msgid "Crypting"
+#~ msgstr "Skrypty"
+
+#, fuzzy
+#~ msgid "Private Text Encoding"
+#~ msgstr "Wygląd tekstu"
+
+#, fuzzy
+#~ msgid "Use Default Encoding"
+#~ msgstr "Wygląd tekstu"
+
+#, fuzzy
+#~ msgid "Standard"
+#~ msgstr "Zamknij"
+
+#, fuzzy
+#~ msgid "Smart"
+#~ msgstr "Wklej"
+
+#, fuzzy
+#~ msgid "Mi&nimize"
+#~ msgstr "M&inimalizuj"
+
+#, fuzzy
+#~ msgid "Ma&ximize"
+#~ msgstr "&Maksymalizuj"
+
+#, fuzzy
+#~ msgid "&Restore"
+#~ msgstr "P&rzywróć"
+
+#, fuzzy
+#~ msgid "Text &Encoding"
+#~ msgstr "Wygląd tekstu"
+
+#, fuzzy
+#~ msgid "Sa&ve Window Properties"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "Search tools"
+#~ msgstr "Narzędzia Irc"
+
+#~ msgid "### Log session terminated at %s ###"
+#~ msgstr "### Logowanie przerwane %s ###"
+
+#~ msgid "### Log session started at %s ###"
+#~ msgstr "### Logowanie rozpoczęte %s ###"
+
+#, fuzzy
+#~ msgid "Hide Find Window"
+#~ msgstr "Okno &terminala"
+
+#, fuzzy
+#~ msgid "Show Find Window"
+#~ msgstr "&Okno"
+
+#, fuzzy
+#~ msgid "Choose Temporary Font..."
+#~ msgstr "Wybierz katalog..."
+
+#, fuzzy
+#~ msgid "Choose Temporary Background..."
+#~ msgstr "Wybierz katalog..."
+
+#, fuzzy
+#~ msgid "Reset Temporary Background"
+#~ msgstr "Wybierz katalog..."
+
+#, fuzzy
+#~ msgid "Choose the background image..."
+#~ msgstr "Wybierz katalog..."
+
+#, fuzzy
+#~ msgid "Invalid image"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Failed to load the selected image"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Not found"
+#~ msgstr "Tekst nie odnaleziony"
+
+#~ msgid "Looking up host %Q..."
+#~ msgstr "Znajdowanie hosta %Q..."
+
+#, fuzzy
+#~ msgid "Double-click to open this link"
+#~ msgstr ""
+#~ "Kliknij podwójnie by otworzyć link<br>Kliknij prawym przyciskiem aby "
+#~ "zobaczyć inne opcje"
+
+#, fuzzy
+#~ msgid ""
+#~ "Double-click to look up this hostname<br>Right-click to view other options"
+#~ msgstr ""
+#~ "Kliknij podwójnie by otworzyć link<br>Kliknij prawym przyciskiem aby "
+#~ "zobaczyć inne opcje"
+
+#, fuzzy
+#~ msgid "Unknown server<br>"
+#~ msgstr "Nieznany błąd"
+
+#, fuzzy
+#~ msgid "Double-click to read the MOTD<br>Right-click to view other options"
+#~ msgstr ""
+#~ "Kliknij podwójnie by otworzyć link<br>Kliknij prawym przyciskiem aby "
+#~ "zobaczyć inne opcje"
+
+#, fuzzy
+#~ msgid "Double-click to join %Q<br>Right click to view other options"
+#~ msgstr ""
+#~ "Kliknij podwójnie by otworzyć link<br>Kliknij prawym przyciskiem aby "
+#~ "zobaczyć inne opcje"
+
+#, fuzzy
+#~ msgid "Toolbars"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid "Detached"
+#~ msgstr "Ostatnie &kanały"
+
+#, fuzzy
+#~ msgid "Icon Size"
+#~ msgstr "Tabela &ikon"
+
+#, fuzzy
+#~ msgid "Show User List"
+#~ msgstr "Pokazuj pingi od serwera"
+
+#, fuzzy
+#~ msgid "Query target:"
+#~ msgstr "Serwery"
+
+#, fuzzy
+#~ msgid "[Dead Query]"
+#~ msgstr "Ostatnie &kanały"
+
+#, fuzzy
+#~ msgid "Common channels: %2"
+#~ msgstr "Ostatnie &kanały"
+
+#~ msgid "No connection"
+#~ msgstr "Brak połączenia"
+
+#, fuzzy
+#~ msgid "IRC Context"
+#~ msgstr "&Nowy kontekst irc"
+
+#~ msgid "In progress..."
+#~ msgstr "Trwa łączenie..."
+
+#, fuzzy
+#~ msgid "&Paste"
+#~ msgstr "Wklej"
+
+#, fuzzy
+#~ msgid "Paste &File"
+#~ msgstr "Serwery"
+
+#, fuzzy
+#~ msgid "Stop Paste"
+#~ msgstr "Wklej"
+
+#~ msgid "Clear"
+#~ msgstr "Wyczyść"
+
+#~ msgid "Select All"
+#~ msgstr "Zaznacz wszystko"
+
+#, fuzzy
+#~ msgid "&Cascade Windows"
+#~ msgstr "Ułóż kaskadują&co"
+
+#, fuzzy
+#~ msgid "Cascade &Maximized"
+#~ msgstr "Ułóż kaskadująco z&maksymalizowane"
+
+#, fuzzy
+#~ msgid "&Tile Windows"
+#~ msgstr "Okno &terminala"
+
+#, fuzzy
+#~ msgid "&Auto Tile"
+#~ msgstr "Ułożenie &Anodine"
+
+#, fuzzy
+#~ msgid "Anodine's Full Grid"
+#~ msgstr "Ułożenie &Anodine"
+
+#, fuzzy
+#~ msgid "Pragma's Horizontal 4-Grid"
+#~ msgstr "Ułożenie P&ragma (poziome)"
+
+#, fuzzy
+#~ msgid "Pragma's Vertical 4-Grid"
+#~ msgstr "Ułożenie &Pragma (pionowe)"
+
+#, fuzzy
+#~ msgid "Pragma's Horizontal 6-Grid"
+#~ msgstr "Ułożenie P&ragma (poziome)"
+
+#, fuzzy
+#~ msgid "Pragma's Vertical 6-Grid"
+#~ msgstr "Ułożenie &Pragma (pionowe)"
+
+#, fuzzy
+#~ msgid "Pragma's Horizontal 9-Grid"
+#~ msgstr "Ułożenie P&ragma (poziome)"
+
+#, fuzzy
+#~ msgid "Pragma's Vertical 9-Grid"
+#~ msgstr "Ułożenie &Pragma (pionowe)"
+
+#, fuzzy
+#~ msgid "Expand &Vertically"
+#~ msgstr "Rozszeż &pionowo"
+
+#, fuzzy
+#~ msgid "Expand &Horizontally"
+#~ msgstr "Rozszeż po&ziomo"
+
+#, fuzzy
+#~ msgid "Mi&nimize All"
+#~ msgstr "M&inimalizuj"
+
+#, fuzzy
+#~ msgid "Part All Channels"
+#~ msgstr "Ostatnie &kanały"
+
+#, fuzzy
+#~ msgid "Unhighlight All Windows"
+#~ msgstr "M&inimalizuj"
+
+#, fuzzy
+#~ msgid "Unhighlight All Channels"
+#~ msgstr "Ostatnie &kanały"
+
+#, fuzzy
+#~ msgid "Registered as"
+#~ msgstr "Za&rejestrowani użytkownicy"
+
+#, fuzzy
+#~ msgid "Confirmation - KVIrc"
+#~ msgstr "&Opcje"
+
+#, fuzzy
+#~ msgid "channels"
+#~ msgstr "Anuluj"
+
+#, fuzzy
+#~ msgid "Connected since"
+#~ msgstr "Połączenie"
+
+#, fuzzy
+#~ msgid "Server idle for"
+#~ msgstr "Serwer:"
+
+#, fuzzy
+#~ msgid "Script"
+#~ msgstr "Centrum &skryptów"
+
+#, fuzzy
+#~ msgid "The file %s already exists.<br>Do you wish to overwrite it?"
+#~ msgstr ""
+#~ "Plik %s już istnieje.\n"
+#~ "Czy chcesz go zamazać ?"
+
+#, fuzzy
+#~ msgid "File Exists - KVIrc"
+#~ msgstr "Plik istnieje"
+
+#, fuzzy
+#~ msgid "Channel Modes"
+#~ msgstr "Anuluj"
+
+#, fuzzy
+#~ msgid "There are active connections, are you sure you wish to "
+#~ msgstr "Brak połączenia"
+
+#, fuzzy
+#~ msgid "quit KVIrc?"
+#~ msgstr "Informacje o KVirc"
+
+#, fuzzy
+#~ msgid "Away since"
+#~ msgstr "Ostatnie &nicki"
+
+#, fuzzy
+#~ msgid "Double click to leave away mode"
+#~ msgstr ""
+#~ "Kliknij podwójnie by otworzyć link<br>Kliknij prawym przyciskiem aby "
+#~ "zobaczyć inne opcje"
+
+#, fuzzy
+#~ msgid "Double click to enter away mode"
+#~ msgstr ""
+#~ "Kliknij podwójnie by otworzyć link<br>Kliknij prawym przyciskiem aby "
+#~ "zobaczyć inne opcje"
+
+#, fuzzy
+#~ msgid "Double click to enable it"
+#~ msgstr ""
+#~ "Kliknij podwójnie by otworzyć link<br>Kliknij prawym przyciskiem aby "
+#~ "zobaczyć inne opcje"
+
+#, fuzzy
+#~ msgid "Show total connection time"
+#~ msgstr "Pokaż czas synchronizacji kanału"
+
+#, fuzzy
+#~ msgid "Connection Timer"
+#~ msgstr "Połączenie"
+
+#, fuzzy
+#~ msgid "Unloadable: %s"
+#~ msgstr "Wyładowano moduł '%s'"
+
+#, fuzzy
+#~ msgid "Choose a File - KVIrc"
+#~ msgstr "Wybierz katalog..."
+
+#, fuzzy
+#~ msgid "Choose image ..."
+#~ msgstr "Wybierz katalog..."
+
+#, fuzzy
+#~ msgid "directory"
+#~ msgstr "Katalog domowy"
+
+#, fuzzy
+#~ msgid "Find &Prev."
+#~ msgstr "Znajdź"
+
+#, fuzzy
+#~ msgid "&Find Next"
+#~ msgstr "Znajdź"
+
+#, fuzzy
+#~ msgid "Set &All"
+#~ msgstr "Zaznacz wszystko"
+
+#, fuzzy
+#~ msgid "Select a Filter File"
+#~ msgstr "Zaznacz wszystko"
+
+#, fuzzy
+#~ msgid "Can't open the filter file %s for reading."
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Select a Name for the Filter File"
+#~ msgstr "Zaznacz wszystko"
+
+#, fuzzy
+#~ msgid "Scri&pting"
+#~ msgstr "Centrum &skryptów"
+
+#~ msgid "&Tools"
+#~ msgstr "&Narzędzia"
+
+#~ msgid "&Window"
+#~ msgstr "&Okno"
+
+#, fuzzy
+#~ msgid "&Help Browser (Panel)"
+#~ msgstr "Nowa &statyczna przeglądarka pomocy"
+
+#, fuzzy
+#~ msgid "Help Browser (&Window)"
+#~ msgstr "Nowa przeglądarka pomocy &MDI"
+
+#~ msgid "About &KVIrc"
+#~ msgstr "Informacje o &KVirc"
+
+#, fuzzy
+#~ msgid "New &Connection To"
+#~ msgstr "Nowe &połączenie"
+
+#, fuzzy
+#~ msgid "Show &Icon Table"
+#~ msgstr "Tabela &ikon"
+
+#, fuzzy
+#~ msgid "Open &Terminal"
+#~ msgstr "Okno &terminala"
+
+#~ msgid "Success"
+#~ msgstr "Sukces"
+
+#~ msgid "Internal error"
+#~ msgstr "Wewnętrzny błąd"
+
+#~ msgid "Unknown command"
+#~ msgstr "Nieznana komenda"
+
+#~ msgid "Missing closing brace"
+#~ msgstr "Brak zamykającego nawiasu"
+
+#~ msgid "Unexpected end of command in string"
+#~ msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#~ msgid "Unknown function"
+#~ msgstr "Nieznana funkcja"
+
+#~ msgid "Missing variable name"
+#~ msgstr "Brak nazwy zmiennej"
+
+#~ msgid "Variable or identifier expected"
+#~ msgstr "Oczekiwano zmiennej lub identyfikatora"
+
+#~ msgid "Left operand is not a number"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#~ msgid "Modulo by zero"
+#~ msgstr "Dzielenie modulo przez zero"
+
+#~ msgid "Right operand is not a number"
+#~ msgstr "Prawy operand nie jest liczbą"
+
+#~ msgid "Unterminated expression (missing ')' ?)"
+#~ msgstr "Nie zakończone wyrażenie (brak ')' ?)"
+
+#~ msgid "Unexpected character"
+#~ msgstr "Niespodziewany znak"
+
+#~ msgid "No host to resolve"
+#~ msgstr "Brak nazwy hosta do odszukania"
+
+#, fuzzy
+#~ msgid "Unknown node (host not found)"
+#~ msgstr "Nieznany tryb wyświetlania"
+
+#~ msgid "No such module command"
+#~ msgstr "Brak takiej komendy w module"
+
+#~ msgid "No such module function"
+#~ msgstr "Brak takiej funkcji w module"
+
+#~ msgid "No such object class"
+#~ msgstr "Nie ma takiej klasy"
+
+#~ msgid "No such object"
+#~ msgstr "Nie ma takiego obiektu"
+
+#~ msgid "No such object function"
+#~ msgstr "Nie ma takiej funkcji w obiekcie"
+
+#~ msgid "Invalid parameter"
+#~ msgstr "Błędny parametr"
+
+#~ msgid "No such file"
+#~ msgstr "Plik nie istnieje"
+
+#, fuzzy
+#~ msgid "Unexpected characters in array index"
+#~ msgstr "Niespodziewany znak"
+
+#, fuzzy
+#~ msgid "Unexpected end in expression"
+#~ msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#, fuzzy
+#~ msgid "Unexpected end in array index"
+#~ msgstr "Niespodziewany koniec komendy w łańcuchu"
+
+#, fuzzy
+#~ msgid "Connection reset by peer"
+#~ msgstr "Połączenie przerwane"
+
+#, fuzzy
+#~ msgid "Variable expected"
+#~ msgstr "Oczekiwano zmiennej lub identyfikatora"
+
+#, fuzzy
+#~ msgid "Operation aborted"
+#~ msgstr "Połączenie przerwane"
+
+#, fuzzy
+#~ msgid "Unexpected token"
+#~ msgstr "Niespodziewany znak"
+
+#, fuzzy
+#~ msgid "Select color"
+#~ msgstr "Zaznacz wszystko"
+
+#, fuzzy
+#~ msgid "Select Font"
+#~ msgstr "Zaznacz wszystko"
+
+#, fuzzy
+#~ msgid "&Font"
+#~ msgstr "Wytnij"
+
+#, fuzzy
+#~ msgid "Scr&ipt"
+#~ msgstr "Centrum &skryptów"
+
+#, fuzzy
+#~ msgid "Parent Directory"
+#~ msgstr "Katalog domowy"
+
+#, fuzzy
+#~ msgid "New Directory"
+#~ msgstr "Katalog domowy"
+
+#, fuzzy
+#~ msgid "Bookmarks"
+#~ msgstr "Dodaj zakładkę"
+
+#, fuzzy
+#~ msgid "Add Bookmark"
+#~ msgstr "Dodaj zakładkę"
+
+#, fuzzy
+#~ msgid "&Edit Bookmarks"
+#~ msgstr "Dodaj zakładkę"
+
+#, fuzzy
+#~ msgid "Sorting"
+#~ msgstr "Centrum &skryptów"
+
+#, fuzzy
+#~ msgid "By Name"
+#~ msgstr "Zmień nazwę"
+
+#, fuzzy
+#~ msgid "By Size"
+#~ msgstr "Tabela &ikon"
+
+#, fuzzy
+#~ msgid "Reverse"
+#~ msgstr "Serwer:"
+
+#, fuzzy
+#~ msgid "Directories First"
+#~ msgstr "Przeglądarka &katalogów"
+
+#, fuzzy
+#~ msgid "Show Hidden Files"
+#~ msgstr "Pokaż ukryte pliki"
+
+#, fuzzy
+#~ msgid "Home Directory"
+#~ msgstr "Katalog domowy"
+
+#, fuzzy
+#~ msgid "Network"
+#~ msgstr "Usuń serwer proxy"
+
+#, fuzzy
+#~ msgid "New Directory..."
+#~ msgstr "Katalog domowy"
+
+#, fuzzy
+#~ msgid "Properties..."
+#~ msgstr "Trwa łączenie..."
+
+#, fuzzy
+#~ msgid "Aborted"
+#~ msgstr "Przerwij"
+
+#, fuzzy
+#~ msgid "Unsupported protocol %1"
+#~ msgstr "Używaj IpV6"
+
+#, fuzzy
+#~ msgid "Host %s resolved to %s"
+#~ msgstr "Brak nazwy hosta do odszukania"
+
+#, fuzzy
+#~ msgid "Contacting host %s on port %u"
+#~ msgstr "Próba nawiązania połączenia z %s (%u) na porcie %u"
+
+#, fuzzy
+#~ msgid "Connection established, sending request"
+#~ msgstr "Połączenie przerwane"
+
+#, fuzzy
+#~ msgid "Can't open file \"%s\" for writing"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Invalid HTTP response: %s"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Encoding"
+#~ msgstr "Wygląd tekstu"
+
+#, fuzzy
+#~ msgid "Reconnection Options"
+#~ msgstr "Połączenie"
+
+#, fuzzy
+#~ msgid "Usage"
+#~ msgstr "Użytkownik:"
+
+#, fuzzy
+#~ msgid "message"
+#~ msgstr "Typy plików"
+
+#, fuzzy
+#~ msgid "Usage:"
+#~ msgstr "Użytkownik:"
+
+#, fuzzy
+#~ msgid "You must be connected to a server"
+#~ msgstr "Nie jesteś połączony z serwerem"
+
+#, fuzzy
+#~ msgid "This is not a channel window"
+#~ msgstr "&Okno"
+
+#, fuzzy
+#~ msgid "Unsupported type: $0"
+#~ msgstr "Używaj IpV6"
+
+#, fuzzy
+#~ msgid "No such user: $0"
+#~ msgstr "Nie ma takiego modułu"
+
+#, fuzzy
+#~ msgid "Always Highlight"
+#~ msgstr "M&inimalizuj"
+
+#, fuzzy
+#~ msgid "Stop Highlighting"
+#~ msgstr "M&inimalizuj"
+
+#, fuzzy
+#~ msgid "is not being ignored"
+#~ msgstr "Za&rejestrowani użytkownicy"
+
+#, fuzzy
+#~ msgid "is registered as"
+#~ msgstr "Za&rejestrowani użytkownicy"
+
+#, fuzzy
+#~ msgid "has a default avatar"
+#~ msgstr "Obraz Avatar"
+
+#, fuzzy
+#~ msgid "is not registered"
+#~ msgstr "Za&rejestrowani użytkownicy"
+
+#, fuzzy
+#~ msgid "Register"
+#~ msgstr "Za&rejestrowani użytkownicy"
+
+#, fuzzy
+#~ msgid "Quick Registration"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "Register as"
+#~ msgstr "Za&rejestrowani użytkownicy"
+
+#, fuzzy
+#~ msgid "Unregister"
+#~ msgstr "Za&rejestrowani użytkownicy"
+
+#, fuzzy
+#~ msgid "Remove from Notify"
+#~ msgstr "Usuń serwer proxy"
+
+#, fuzzy
+#~ msgid "Choose"
+#~ msgstr "Zamknij"
+
+#, fuzzy
+#~ msgid "Choose Avatar Image File"
+#~ msgstr "Wybierz katalog..."
+
+#, fuzzy
+#~ msgid "Set as Default"
+#~ msgstr "Data"
+
+#, fuzzy
+#~ msgid "Clear Default"
+#~ msgstr "Wyczyść"
+
+#, fuzzy
+#~ msgid "Channel Owner"
+#~ msgstr "Anuluj"
+
+#, fuzzy
+#~ msgid "Channel Administrator"
+#~ msgstr "Anuluj"
+
+#, fuzzy
+#~ msgid "Channel Operator"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "Half Operator"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "User Operator"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "Ban"
+#~ msgstr "Dodaj zakładkę"
+
+#, fuzzy
+#~ msgid "Multiple Users"
+#~ msgstr "Pokazuj skrócone zmiany trybów"
+
+#, fuzzy
+#~ msgid "&Ban"
+#~ msgstr "Dodaj zakładkę"
+
+#, fuzzy
+#~ msgid "&Information"
+#~ msgstr "Ogólne opcje"
+
+#, fuzzy
+#~ msgid "Mask for"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid "&Control"
+#~ msgstr "Połącz"
+
+#, fuzzy
+#~ msgid "&Deowner"
+#~ msgstr "Po&moc"
+
+#, fuzzy
+#~ msgid "&Administrator"
+#~ msgstr "Anuluj"
+
+#, fuzzy
+#~ msgid "&Deadministrator"
+#~ msgstr "Anuluj"
+
+#, fuzzy
+#~ msgid "&Deop"
+#~ msgstr "Po&moc"
+
+#, fuzzy
+#~ msgid "&Halfop"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "&Dehalfop"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "Kick Reason"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "&Kick/Ban"
+#~ msgstr "Dodaj zakładkę"
+
+#, fuzzy
+#~ msgid "&Registration"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "Notify Avatar"
+#~ msgstr "Obraz Avatar"
+
+#, fuzzy
+#~ msgid "&Part"
+#~ msgstr "Wklej"
+
+#, fuzzy
+#~ msgid "Channels"
+#~ msgstr "Anuluj"
+
+#, fuzzy
+#~ msgid "&Join Channels..."
+#~ msgstr "Ostatnie &kanały"
+
+#, fuzzy
+#~ msgid "&Hop"
+#~ msgstr "Po&moc"
+
+#, fuzzy
+#~ msgid "l (Connections)"
+#~ msgstr "Połączenie"
+
+#, fuzzy
+#~ msgid "o (Operators)"
+#~ msgstr "Nieznany operator"
+
+#, fuzzy
+#~ msgid "t (Connection stats ?)"
+#~ msgstr "Połączenie przerwane"
+
+#, fuzzy
+#~ msgid "Send to"
+#~ msgstr "Data"
+
+#, fuzzy
+#~ msgid "Reverse Send to"
+#~ msgstr "Serwer:"
+
+#, fuzzy
+#~ msgid "TDCC Send to"
+#~ msgstr "Data"
+
+#, fuzzy
+#~ msgid "TDCC Reverse Send to"
+#~ msgstr "Serwer:"
+
+#, fuzzy
+#~ msgid "Flush Log File"
+#~ msgstr "Wybierz nazwę zapisywanego pliku"
+
+#, fuzzy
+#~ msgid "Stop Logging"
+#~ msgstr "Tekst nie odnaleziony"
+
+#, fuzzy
+#~ msgid "Not Logging"
+#~ msgstr "Tekst nie odnaleziony"
+
+#, fuzzy
+#~ msgid "Log To..."
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "Notify avatar"
+#~ msgstr "Obraz Avatar"
+
+#, fuzzy
+#~ msgid "No nickname specified"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "No netmask specified"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "No property name specified"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "Missing property name"
+#~ msgstr "Brak nazwy zmiennej"
+
+#, fuzzy
+#~ msgid "No file specified"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "Invalid progress value (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid index parameter (%s)"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Invalid parameter"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Can't find the object "
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "Can't find the tab object "
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Can't find the widget(%s)"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Invalid marging value (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#~ msgid "No value to insert"
+#~ msgstr "Brak wartości do wstawienia"
+
+#~ msgid "Invalid index(%s)"
+#~ msgstr "Nieprawidłowy indeks(%s)"
+
+#~ msgid "index %u out of range"
+#~ msgstr "indeks %u poza zakresem"
+
+#~ msgid "Invalid index (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#~ msgid "Index %u out of range"
+#~ msgstr "Indeks %u poza zakresem"
+
+#, fuzzy
+#~ msgid "Invalid margin value (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid spacing value (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid stretch value (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid from_row parameter (%s)"
+#~ msgstr "Błędny margines"
+
+#, fuzzy
+#~ msgid "Invalid to_row parameter (%s)"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Invalid from_column parameter (%s)"
+#~ msgstr "Błędny margines"
+
+#, fuzzy
+#~ msgid "Invalid to_column parameter (%s)"
+#~ msgstr "Błędny margines"
+
+#, fuzzy
+#~ msgid "Invalid parameters"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Can't find the widget/pixmap (%s)"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Can't find the widget object to remove (%s)"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Can't remove a non-widget object"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "Can't find the widget (%s)"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Invalid zoom value (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid depth value (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid value (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid paragraph value (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid " I can't find the specified file."
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "No destination specified"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "Can't find the destination widget/pixmap (%s)"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "No source specified"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "Can't find the source widget/pixmap (%s)"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Invalid x parameter (%s)"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Invalid y parameter (%s)"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Can't find the listviewitem object to add (%s)"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "Invalid column (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#~ msgid "Invalid margin parameter"
+#~ msgstr "Błędny margines"
+
+#~ msgid "Unknown alignment: %s"
+#~ msgstr "Nieznane wyrównanie: %s"
+
+#~ msgid "Unknown frame / shadow style: %s"
+#~ msgstr "Nieznany styl ramki/cienia: %s"
+
+#~ msgid "Hey ! You wanna know my echo mode or what ?"
+#~ msgstr "Hej! Chcesz znać mój tryb wyświetlania czy co ?"
+
+#~ msgid "Unknown echo mode"
+#~ msgstr "Nieznany tryb wyświetlania"
+
+#, fuzzy
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "Invalid object."
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Can't find the popupmenu object to add (%s)"
+#~ msgstr "Nieprawidłowy indeks (%Q)"
+
+#, fuzzy
+#~ msgid "Can't find the widget object (%s)"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Invalid columns value (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid size value (%s)"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid icon identifier"
+#~ msgstr "Błędny margines"
+
+#, fuzzy
+#~ msgid "No button name specified!"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "No separator name specified"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "No toolbar id specified"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "Background not found %s "
+#~ msgstr "Brak połączenia"
+
+#, fuzzy
+#~ msgid "Can't open the file \"%s\" for reading"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Read error for file %s"
+#~ msgstr "Nastąpił błąd odczytu"
+
+#, fuzzy
+#~ msgid "No such options page class name"
+#~ msgstr "Nie ma takiej klasy"
+
+#, fuzzy
+#~ msgid "No link text specified"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "No command specified"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "Invalid screen coordinates"
+#~ msgstr "Błędny margines"
+
+#, fuzzy
+#~ msgid "Show Crypto Controller"
+#~ msgstr "&Nowy kontekst irc"
+
+#, fuzzy
+#~ msgid "defpopup: internal error"
+#~ msgstr "Wewnętrzny błąd"
+
+#, fuzzy
+#~ msgid "User Messages"
+#~ msgstr "Użytkownik:"
+
+#~ msgid "Transport"
+#~ msgstr "Transport"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %s"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %Q"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "<unknown size>"
+#~ msgstr "nieznany"
+
+#, fuzzy
+#~ msgid "Missing target nickname"
+#~ msgstr "Brak nazwy zmiennej"
+
+#, fuzzy
+#~ msgid "Missing filename"
+#~ msgstr "Brak nazwy zmiennej"
+
+#, fuzzy
+#~ msgid "The first parameter must be an unsigned number"
+#~ msgstr "Lewy operand nie jest liczbą"
+
+#, fuzzy
+#~ msgid "No filename specified"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "Invalid timeout, ignoring"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid visible name: using default"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "Ops..failed to add the sharedfile..."
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid " I can't find the specified file %s."
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Missing file name to parse"
+#~ msgstr "Brak nazwy zmiennej"
+
+#, fuzzy
+#~ msgid "A popup name is expected as parameter"
+#~ msgstr "Spodziewano się dodatniej liczby całkowitej"
+
+#, fuzzy
+#~ msgid "No socket text specified"
+#~ msgstr "Nie podano indeksu"
+
+#, fuzzy
+#~ msgid "&Export Alias To..."
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "Parser"
+#~ msgstr "Wklej"
+
+#, fuzzy
+#~ msgid "runtime error"
+#~ msgstr "Wewnętrzny błąd"
+
+#, fuzzy
+#~ msgid "Help"
+#~ msgstr "Po&moc"
+
+#, fuzzy
+#~ msgid "NickServ mask:"
+#~ msgstr "Tryb &użytkownika"
+
+#, fuzzy
+#~ msgid "Re&move Rule"
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "Show IRC Context Toolbar"
+#~ msgstr "&Nowy kontekst irc"
+
+#, fuzzy
+#~ msgid "IRC Tools"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid "&User Mode"
+#~ msgstr "Tryb &użytkownika"
+
+#, fuzzy
+#~ msgid "&Join Channel"
+#~ msgstr "Ostatnie &kanały"
+
+#, fuzzy
+#~ msgid "Change server settings"
+#~ msgstr "Pokazuj pingi od serwera"
+
+#, fuzzy
+#~ msgid "Change identity settings"
+#~ msgstr "Tożsamość"
+
+#, fuzzy
+#~ msgid "Configure KVIrc"
+#~ msgstr "&Opcje"
+
+#, fuzzy
+#~ msgid "Cascade"
+#~ msgstr "Anuluj"
+
+#, fuzzy
+#~ msgid "Minimize All"
+#~ msgstr "M&inimalizuj"
+
+#, fuzzy
+#~ msgid "New &Separator"
+#~ msgstr "Serwery"
+
+#, fuzzy
+#~ msgid "Scripting Toolbar"
+#~ msgstr "Centrum &skryptów"
+
+#, fuzzy
+#~ msgid "Show alias editor"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid "Show event editor"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid "Show popup editor"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid "Show raw event editor"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid "Show toolbar editor"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid " /dns <nickname>"
+#~ msgstr "Ostatnie &nicki"
+
+#~ msgid "New &Frame Window"
+#~ msgstr "Nowe o&kno"
+
+#, fuzzy
+#~ msgid "Disable"
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "Connection attempt failed (%s): %s"
+#~ msgstr "Połączenie przerwane"
+
+#, fuzzy
+#~ msgid "Be verbose (show some internal actions)"
+#~ msgstr "Bądź gadatliwy (pokazuje wewnętrzne działanie)"
+
+#~ msgid "Add new proxy"
+#~ msgstr "Dodaj nowy serwer proxy"
+
+#, fuzzy
+#~ msgid "Never"
+#~ msgstr "Serwer:"
+
+#, fuzzy
+#~ msgid "Offer list window"
+#~ msgstr "Okno &terminala"
+
+#, fuzzy
+#~ msgid "Remove all"
+#~ msgstr "Usuń"
+
+#, fuzzy
+#~ msgid "User mask"
+#~ msgstr "Tryb &użytkownika"
+
+#, fuzzy
+#~ msgid "Choose the file to offer"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "System:"
+#~ msgstr "Wewnętrzny błąd"
+
+#, fuzzy
+#~ msgid "&Change"
+#~ msgstr "Anuluj"
+
+#, fuzzy
+#~ msgid "Connections in progress"
+#~ msgstr "łączenie..."
+
+#, fuzzy
+#~ msgid "Select the file name for the exported aliases file"
+#~ msgstr "Zaznacz wszystko"
+
+#, fuzzy
+#~ msgid "You're not connected to a server: list cannot be requested"
+#~ msgstr "Nie jesteś połączony z serwerem"
+
+#, fuzzy
+#~ msgid "Select the file name for the exported popup file"
+#~ msgstr "Zaznacz wszystko"
+
+#, fuzzy
+#~ msgid "Select the file name for the exported popups file"
+#~ msgstr "Zaznacz wszystko"
+
+#, fuzzy
+#~ msgid "Choose the name of the db file"
+#~ msgstr "Wybierz nazwę zapisywanego pliku"
+
+#, fuzzy
+#~ msgid "B&rowse..."
+#~ msgstr "Przeglądaj"
+
+#~ msgid "Cut"
+#~ msgstr "Wytnij"
+
+#~ msgid "Copy"
+#~ msgstr "Kopiuj"
+
+#, fuzzy
+#~ msgid "Add separator"
+#~ msgstr "Dodaj nowy serwer proxy"
+
+#~ msgid "Echo the channel topic on channel join"
+#~ msgstr "Wyświetlaj temat kanału po wejściu"
+
+#, fuzzy
+#~ msgid "Show channel flags"
+#~ msgstr "Pokaż czas synchronizacji kanału"
+
+#~ msgid "Avatar protocol"
+#~ msgstr "Protokół Avatar"
+
+#, fuzzy
+#~ msgid "Minimized text"
+#~ msgstr "M&inimalizuj"
+
+#~ msgid "Commit"
+#~ msgstr "Zatwierdź"
+
+#, fuzzy
+#~ msgid "Server connect:"
+#~ msgstr "Brak połączenia"
+
+#, fuzzy
+#~ msgid "&Recent Channels"
+#~ msgstr "Ostatnie &kanały"
+
+#, fuzzy
+#~ msgid "&Add Channel"
+#~ msgstr "Ostatnie &kanały"
+
+#, fuzzy
+#~ msgid "IRC Servers"
+#~ msgstr "Serwery"
+
+#, fuzzy
+#~ msgid "Ident"
+#~ msgstr "Tożsamość"
+
+#~ msgid "&Close"
+#~ msgstr "&Zamknij"
+
+#, fuzzy
+#~ msgid "Hide &KVIrc"
+#~ msgstr "Informacje o &KVirc"
+
+#~ msgid "Real name"
+#~ msgstr "Prawdziwe imię"
+
+#, fuzzy
+#~ msgid "invalid port number %s"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "invalid ip address in old format %s"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "invalid ip address %s"
+#~ msgstr "Nieprawidłowy indeks (%s)"
+
+#, fuzzy
+#~ msgid "invalid resume position argument '%s'"
+#~ msgstr "Błędny parametr"
+
+#, fuzzy
+#~ msgid "Connection started at"
+#~ msgstr "Połączenie przerwane"
+
+#, fuzzy
+#~ msgid "Silence from server"
+#~ msgstr "Serwery IRC"
+
+#, fuzzy
+#~ msgid "Server Notices"
+#~ msgstr "Serwery"
+
+#~ msgid "Ip address:"
+#~ msgstr "Adres Ip:"
+
+#~ msgid "Use IpV6 protocol"
+#~ msgstr "Używaj IpV6"
+
+#, fuzzy
+#~ msgid "Recent channels"
+#~ msgstr "Ostatnie &kanały"
+
+#~ msgid "Icon table"
+#~ msgstr "Tablica ikon"
+
+#, fuzzy
+#~ msgid "Irc context"
+#~ msgstr "&Nowy kontekst irc"
+
+#, fuzzy
+#~ msgid "No irc context"
+#~ msgstr "&Nowy kontekst irc"
+
+#~ msgid "&Links"
+#~ msgstr "&Połączenia"
+
+#, fuzzy
+#~ msgid "&Minimize all"
+#~ msgstr "M&inimalizuj"
+
+#, fuzzy
+#~ msgid "&Restore all"
+#~ msgstr "P&rzywróć"
+
+#, fuzzy
+#~ msgid "After login join channels"
+#~ msgstr "Ostatnie &kanały"
+
+#, fuzzy
+#~ msgid "Browse ..."
+#~ msgstr "Przeglądaj"
+
+#, fuzzy
+#~ msgid "Choose the data folder"
+#~ msgstr "Wybierz pliki do wysłania"
+
+#, fuzzy
+#~ msgid "Abort setup"
+#~ msgstr "Przerwij"
+
+#, fuzzy
+#~ msgid "Restore all windows"
+#~ msgstr "M&inimalizuj"
+
+#, fuzzy
+#~ msgid "Shared files window"
+#~ msgstr "Okno &terminala"
+
+#, fuzzy
+#~ msgid "&Old Tools"
+#~ msgstr "&Narzędzia"
+
+#, fuzzy
+#~ msgid "About KVirc..."
+#~ msgstr "Informacje o &KVirc"
+
+#, fuzzy
+#~ msgid "About"
+#~ msgstr "Przerwij"
+
+#, fuzzy
+#~ msgid "License"
+#~ msgstr "&Połączenia"
+
+#~ msgid "Reject"
+#~ msgstr "Odrzuć"
+
+#~ msgid "Accept"
+#~ msgstr "Przyjmij"
+
+#~ msgid "Overwrite"
+#~ msgstr "Zamaż"
+
+#~ msgid "Resume"
+#~ msgstr "Wznów"
+
+#, fuzzy
+#~ msgid ""
+#~ "Data transfer terminated: waiting 30 secs for the peer to close the "
+#~ "connection"
+#~ msgstr "Wysłano QUIT... oczekiwanie na zamknięcie połączenia przez serwer"
+
+#, fuzzy
+#~ msgid "Connect in new irc context"
+#~ msgstr "&Nowy kontekst irc"
+
+#~ msgid "%s [%s]"
+#~ msgstr "%s [%s]"
+
+#~ msgid "Tile : Not enouh space"
+#~ msgstr "Ułożenie sąsiadujące : za mało miejsca"
+
+#~ msgid "Tile : Not enough space"
+#~ msgstr "Ułożenie sąsiadujące : za mało miejsca"
+
+#~ msgid "Ic&q window"
+#~ msgstr "Okno Ic&q"
+
+#~ msgid "&Gnutella window"
+#~ msgstr "Okno &Gnutelli"
+
+#~ msgid "&Directory browser (MDI)"
+#~ msgstr "&Przeglądarka katalogów (MDI)"
+
+#~ msgid "&Build info"
+#~ msgstr "&Informacje o kompilacji"
+
+#~ msgid "KVirc build info"
+#~ msgstr "Informacje o tej kompilacji KVirc"
+
+#~ msgid ""
+#~ "\n"
+#~ "Script language tag: "
+#~ msgstr ""
+#~ "\n"
+#~ "Wersja języka skryptowego: "
+
+#~ msgid ""
+#~ "\n"
+#~ "Build number: "
+#~ msgstr ""
+#~ "\n"
+#~ "Numer kompilacji: "
+
+#~ msgid ""
+#~ "\n"
+#~ "Build date: "
+#~ msgstr ""
+#~ "\n"
+#~ "Data kompilacji: "
+
+#~ msgid "Irc engine"
+#~ msgstr "Silnik Irc"
+
+#~ msgid "Global"
+#~ msgstr "Globalne"
+
+#~ msgid "Components"
+#~ msgstr "Komponenty"
+
+#~ msgid "Widget look"
+#~ msgstr "Wygląd elementów"
diff --git a/po/modules/options/options_pt.po b/po/modules/options/options_pt.po
new file mode 100644
index 00000000..57c7db09
--- /dev/null
+++ b/po/modules/options/options_pt.po
@@ -0,0 +1,4421 @@
+# translation of options_pt.po to Português
+# translation of options_pt.po to
+# translation of kvirc_pt.po to
+#
+# Copyright (C) 2002,2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# Ze <[email protected]>, 2003.
+# Américo José Melo <[email protected]>, 2004, 2005, 2006.
+# Zé <[email protected]>, 2004, 2005, 2006.
+# José Melo <[email protected]>, 2005.
+# Zé <[email protected]>, 2005.
+# Zé <[email protected]>, 2006, 2007, 2008.
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:304
+msgid ""
+msgstr ""
+"Project-Id-Version: options_pt\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2008-03-11 04:44+0000\n"
+"Last-Translator: Zé <[email protected]>\n"
+"Language-Team: Português <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:232
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:51
+msgid "Font:"
+msgstr "Tipo de Letra:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:47
+msgid "Background color:"
+msgstr "Cor de fundo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:129
+msgid "Background image:"
+msgstr "Imagem de fundo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:51
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:46
+msgid "Horizontal align:"
+msgstr "Alinhamento horizontal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:50
+msgid "Vertical align:"
+msgstr "Alinhamento vertical:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:59
+msgid "Mark Line:"
+msgstr "Linha de Marca:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:66
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:124
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:59
+msgid "Tile"
+msgstr "Lado a lado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:62
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:55
+msgid "Left"
+msgstr "Esquerda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:56
+msgid "Right"
+msgstr "Direita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:132
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:62
+msgid "Center"
+msgstr "Centro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:60
+msgid "Top"
+msgstr "Topo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:61
+msgid "Bottom"
+msgstr "Fundo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:149
+msgid "Enable URL highlighting"
+msgstr "Activar destaque de URLs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:150
+msgid "Use line wrap margin"
+msgstr "Usar quebra de linha da margem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:151
+msgid "Maximum buffer size:"
+msgstr "Tamanho máximo do buffer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:152
+msgid " lines"
+msgstr " linhas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:153
+msgid "Link tooltip show delay:"
+msgstr "Atraso ao mostrar dicas da ligação:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:306
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:59
+msgid " msec"
+msgstr " mseg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:155
+msgid "Link tooltip hide delay:"
+msgstr "Atraso ao ocultar dicas da ligação:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:157
+msgid "Track last read text line"
+msgstr "Seguir última linha do texto lido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:48
+msgid "NickServ Authentication Rule"
+msgstr "Regra de Autenticação Nickserv"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:55
+msgid "Registered NickName"
+msgstr "Alcunha Registada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:60
+msgid "Put here the nickname that you have registered with NickServ"
+msgstr "Indique aqui a alcunha que registou no Nickserv"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:277
+msgid "NickServ Mask"
+msgstr "Máscara NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:70
+#, c-format
+msgid ""
+"This is the mask that NickServ must match to be correctly identified as the "
+"NickServ service. This usually will be something like <b>NickServ!"
+"[email protected]</b>.<br>You can use wildcards for this field, but "
+"generally it is a security flaw. If you're 100%% sure that NO user on the "
+"network can use the nickname \"NickServ\", the mask <b>NickServ!*@*</b> may "
+"be safe to use in this field."
+msgstr ""
+"Esta é a máscara a que o NickServ deve corresponder para ser correctamente "
+"identificado no serviço NickServ. Normalmente deve ser algo como <b>NickServ!"
+"[email protected]</b>.<br>Pode usar asteriscos neste campo, mas "
+"geralmente provoca falhas na segurança.</br>Se tem a certeza absoluta que "
+"NENHUM utilizador na rede usa a alcunha \"NickServ\", a máscara <b>NickServ!"
+"*@*</b> pode ser usada em segurança neste campo."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:78
+msgid "Message Regexp"
+msgstr "Mensagem de Expressão Regular"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:86
+msgid ""
+"This is the simple regular expression that the identification request "
+"message from NickServ must match in order to be correctly recognized.<br>The "
+"message is usually something like \"To identify yourself please use /ns "
+"IDENTIFY password\" and it is sent when the NickServ wants you to "
+"authenticate yourself. You can use the * and ? wildcards."
+msgstr ""
+"Esta é a expressão regular simples a que o pedido/mensagem de identificação "
+"do Nickserv deve corresponder para que seja correctamente reconhecido.<br>A "
+"mensagem normalmente é qualquer coisa como \"Para se identificar por favor "
+"use /ns IDENTIFY password\" e é enviado quando o Nickserv quiser que se "
+"identifique. Pode usar os caracteres * e ?."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:259
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:279
+msgid "Identify Command"
+msgstr "Comando de Identificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:98
+msgid ""
+"This is the command that will be executed when NickServ requests "
+"authentication for the nickname described in this rule (if the both server "
+"and NickServ mask are matched). This usually will be something like <b>msg "
+"NickServ identify &lt;yourpassword&gt;</b>.<br>You can use <b>msg -q</b> if "
+"you don't want the password echoed on the screen. Please note that there is "
+"no leading slash in this command."
+msgstr ""
+"Este é o comando que irá ser executado quando o NickServ pede autenticação "
+"para a alcunha descrita nesta regra (se ambas as máscaras do servidor e do "
+"NickServ coincidem). Isto normalmente irá ser algo como <b>msg NickServ "
+"identify &lt;senha&gt;</b>. <br>Pode usar <b>msg -q</b> se não quer a senha "
+"mostrada no ecrã. Por favor note que este comando não usa barra no principio."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:256
+msgid "Server mask"
+msgstr "Máscara do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:117
+msgid ""
+"This is the mask that the current server must match in order for this rule "
+"to apply. It can contain * and ? wildcards.<br>Do NOT use simply \"*\" "
+"here..."
+msgstr ""
+"Esta é a máscara a que o servidor actual deve corresponder para que esta "
+"regra seja aplicada. Pode conter os caracteres * e ?.<br>NÃO use aqui um "
+"simples \"*\" ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:128
+msgid "Hint: Move the mouse cursor over the fields to get help"
+msgstr "Sugestão: Mova o cursor do rato sobre os campos para ter ajuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:137
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:68
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:803
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:164
+msgid "Invalid NickServ Rule"
+msgstr "Regra Nickserv Inválida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:169
+msgid "The Nickname field can't be empty!"
+msgstr "O campo da alcunha não pode estar vazio!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:175
+msgid "The Nickname field can't contain spaces!"
+msgstr "O campo da Alcunha não pode conter espaços!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:183
+msgid "The NickServ mask can't be empty!<br>You must put at least * there."
+msgstr ""
+"A mascara Nickserv não pode estar vazia!<br>Tem que pelo menos ter um *."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:191
+msgid "The Message Regexp can't be empty!<br>You must put at least * there."
+msgstr ""
+"A Mensagem de Expressão Regular não pode estar vazia!<br>Tem que pelo menos "
+"ter um *."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:199
+msgid "The Identify Command can't be empty!"
+msgstr "O Comando de Identificação não pode estar vazio!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:265
+msgid "Enable NickServ Identification"
+msgstr "Activar Identificação NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:269
+msgid "This check enables the automatic identification with NickServ"
+msgstr "Esta caixa activa a identificação automática do Nickserv"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:276
+msgid "Nickname"
+msgstr "Alcunha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:258
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:278
+msgid "NickServ Request Mask"
+msgstr "Pedido de Máscara NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:265
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on all the networks."
+"<br>Please be aware that this feature can cause your NickServ passwords to "
+"be stolen if used improperly. Make sure that you fully understand the "
+"NickServ authentication protocol.<br>In other words, be sure to know what "
+"you're doing.<br>Also note that the password that you provide is stored as "
+"<b>PLAIN TEXT</b>.<br>KVIrc supports also per-network NickServ "
+"authentication rules that can be created in the \"Advanced...\" network "
+"options (accessible from the servers dialog).</center>"
+msgstr ""
+"<center>Esta é a lista das regras de identificação do NickServ. O KVirc irá "
+"usá-las para modelar a sua interacção automática com o NickServ.<br>Por "
+"favor tenha em atenção que esta opção pode fazer com que a senha do NickServ "
+"seja roubada se usada imprópriamente. Veja se entende bem o protocolo de "
+"autenticação do NickServ. <br>Por outras palavras, tenha a certeza do que "
+"está a fazer. <br>Note também que a senha que forneceu é guardada "
+"como<b>TEXTO SIMPLES</b>.<br>O KVirc também suporta regras de autenticação "
+"do Nickserv por rede que sejam criadas nas opções de rede \"Avançadas..."
+"\" (acessível através das opções do servidor.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:293
+msgid "Add Rule"
+msgstr "Adicionar Regra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:298
+msgid "Edit Rule"
+msgstr "Editar Regra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:302
+msgid "Delete Rule"
+msgstr "Apagar Regra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:31
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:36
+msgid "Font"
+msgstr "Tipo de Letra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:38
+msgid "Foreground color"
+msgstr "Cor de primeiro plano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:37
+msgid "Background color"
+msgstr "Cor de fundo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:34
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:44
+msgid "Background image"
+msgstr "Imagem de fundo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:40
+msgid "Enable tray icon"
+msgstr "Activar ícone na barra de tarefas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:41
+msgid "Close in tray"
+msgstr "Fechar na barra de tarefas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:42
+msgid "Minimize in tray"
+msgstr "Minimizar na barra de tarefas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:44
+msgid "Enable tray icon flashing"
+msgstr "Activar piscar de ícone na barra de tarefas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:45
+msgid "Enable level-based message notification (not a message-type based)"
+msgstr ""
+"Activar mensagens de notificação por nível (mensagem não baseada no tipo)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:47
+msgid "Select message levels to notify"
+msgstr "Seleccionar níveis de mensagens para notificar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:49
+msgid "Minimum level for low-priority messages"
+msgstr "Nível mínimo para mensagens de prioridade baixa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:53
+msgid "Minimum level for high-priority message"
+msgstr "Nível mínimo para mensagens de prioridade alta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.cpp:40
+msgid ""
+"This section contains irc protection tools<br><p>like<b> flood, ignore, "
+"antispam. </b> </p>"
+msgstr ""
+"Esta secção contém ferramentas irc <br><p>como<b> flood, ignorar, anti-spam."
+"</b></p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:40
+msgid ""
+"<center><b>Settings for CTCP.</b></center><p>The <b>Client-To-Client "
+"Protocol</b> (CTCP) is used to transmit special control messages over an IRC "
+"connection. These messages can request information from clients or negotiate "
+"file transfers.<br><br></p>"
+msgstr ""
+"<center><b>Configurações CTCP</b></center><br><br><p>O <b>Protocolo Cliente-"
+"Para-Cliente</b> (CTCP) é usado para transmitir mensagens especiais de "
+"controlo numa conexão IRC. Estas mensagens podem pedir informações de "
+"clientes ou negociar transferências de ficheiros.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:47
+msgid "CTCP Replies"
+msgstr "Respostas CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:48
+msgid "Append to VERSION reply:"
+msgstr "Anexar à resposta VERSION:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:52
+msgid ""
+"<center>This text will be appended to the CTCP VERSION reply.<br>For "
+"example, you can place a script name here.</center>"
+msgstr ""
+"<center>Este texto será anexado à resposta CTCP VERSION. <br>Por exemplo, "
+"pode substituir aqui o nome do script.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:55
+msgid "Append to SOURCE reply:"
+msgstr "Anexar à resposta SOURCE:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:59
+msgid ""
+"<center>This text will be appended to the CTCP SOURCE reply.<br>For example, "
+"you can place the source URL for a script here.</center>"
+msgstr ""
+"<center>Este texto será anexado à resposta CTCP SOURCE. <br>Por exemplo, "
+"pode substituir aqui o URL da source por um script.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:69
+msgid "PAGE reply:"
+msgstr "Resposta PAGE:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:73
+msgid ""
+"<center>This is the CTCP PAGE reply.<br>It should contain some sort of "
+"acknowledgement for CTCP PAGE messages.</center>"
+msgstr ""
+"<center>Esta é a resposta CTCP PAGE. <br>Deve conter algum tipo de "
+"reconhecimento para mensagens CTCP PAGE.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:76
+msgid "Show the CTCP replies in the active window"
+msgstr "Mostrar respostas CTCP na janela activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:78
+msgid "Show dialog for CTCP page requests"
+msgstr "Mostrar diálogo para pedidos CTCP page"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:36
+msgid "Use tree taskbar"
+msgstr "Usar árvore da barra de tarefas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:37
+msgid "Sort windows by name"
+msgstr "Ordenar janelas por nome"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:38
+msgid "Show window icons in taskbar"
+msgstr "Mostrar icones das Janelas na barra de tarefas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:39
+msgid "Show activity meter in taskbar"
+msgstr "Mostrar medidor de actividade barra de tarefas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:41
+msgid ""
+"<center>This option enables the usage of the taskbar activity meter. Each "
+"window entry will have a small indicator of the activity that is going on in "
+"that window. The indicator is a small square that changes colors, dark "
+"colors mean low activity, while bright colors signal high activity. KVIrc "
+"also uses some heuristics to determine whether the activity is somewhat "
+"\"human\" or it is generated by automated entities (such as bots or IRC "
+"servers). \"Human\" activity causes the indicator to be shaded red while "
+"automated activity causes the indicator to be shaded blue.</center>"
+msgstr ""
+"<center>Esta opção permite o uso do medidor de actividade da barra de "
+"tarefas. Cada janela irá ter um pequeno indicador da actividade que está "
+"haver nessa janela. O indicador é um pequeno quadrado que muda as cores, "
+"cores escuras querem dizer baixa actividade, enquanto cores brilhantes "
+"indicam grande actividade. O KVirc também usa algumas heurísticas para "
+"determinar se a actividade é de alguma maneira \"humana\" ou é gerada por "
+"entidades automatizadas (tais como bots ou servidores IRC). A actividade "
+"\"humana\" faz com que o indicador seja sombreado de vermelho enquanto as "
+"actividades automatizadas fazem com que o indicador seja sombreado de azul.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:49
+msgid "Show IRC context indicator in taskbar"
+msgstr "Mostrar Contexto IRC na Barra de Tarefas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:50
+msgid "Enable window tooltips"
+msgstr "Activar Dicas das Janelas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:233
+msgid "Text/Alert Colors"
+msgstr "Cores Texto/Alerta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:125
+msgid "Normal:"
+msgstr "Normal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:126
+msgid "Selected:"
+msgstr "Seleccionado:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:236
+msgid "Alert Level 1:"
+msgstr "Nível de Alerta 1:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:237
+msgid "Alert Level 2:"
+msgstr "Nível de Alerta 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:238
+msgid "Alert Level 3:"
+msgstr "Nível de Alerta 3:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:239
+msgid "Alert Level 4:"
+msgstr "Nível de Alerta 4:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:240
+msgid "Alert Level 5:"
+msgstr "Nível de Alerta 5:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:241
+msgid "Progress bar color:"
+msgstr "Cor da barra de progresso:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:124
+msgid "Background Colors"
+msgstr "Cores de Fundo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:212
+msgid "Show header"
+msgstr "Mostrar cabeçalho"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:214
+msgid "Minimum width:"
+msgstr "Largura mínima:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:215
+msgid "Maximum width:"
+msgstr "Largura máxima:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:235
+msgid "Minimized:"
+msgstr "Minimizado:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:242
+msgid "Minimum width of buttons:"
+msgstr "Largura mínima dos botões:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:244
+msgid "Set maximum button width"
+msgstr "Definir largura máxima do botão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:245
+msgid "Maximum width of buttons:"
+msgstr "Largura máxima dos botões:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:246
+msgid "Use flat buttons"
+msgstr "Usar botões planos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:96
+msgid "Network Details"
+msgstr "Detalhes da Rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:82
+msgid "Description:"
+msgstr "Descrição:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:116
+msgid "<center>Put here a brief description of the network.</center>"
+msgstr "<center>Ponha aqui uma breve descrição da rede</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:477
+msgid "Properties"
+msgstr "Propriedades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:123
+msgid "Username:"
+msgstr "Utilizador:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:134
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to servers "
+"on this network.\n"
+"If this field is left empty (most common case), KVIrc will use the default "
+"username specified in the \"Identity\" options tab.</center>"
+msgstr ""
+"<center>Este é o <b>nome de utilizador</b> que o KVirc irá usar para o "
+"autenticar\n"
+"nesta rede. Se este campo for deixado vazio, o KVirc irá usar o nome de "
+"utilizador padrão especificado nas opções de \"Identidade\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:498
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:320
+msgid "Nickname:"
+msgstr "Alcunha:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:145
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to the servers on this network.<br>If this field is left empty (most "
+"common case), the default nickname (specified in the \"Identity\" settings) "
+"will be used.</center>"
+msgstr ""
+"<center>Pode indicar um <b>Alcunha</b> \"especial\" que será usado para o "
+"autenticar nos servidores desta rede.<br>Se este campo for deixado vazio "
+"(caso mais comum), a alcunha predefinida (indicada nas configurações de "
+"\"Identidade\") será usada.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:509
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:342
+msgid "Real name:"
+msgstr "Nome Real:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:153
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with the servers on this network.<br>If you leave this field empty "
+"(most common case), the default \"real name\" (specified in the \"Identity\" "
+"settings) will be used.</center>"
+msgstr ""
+"<center>Pode especificar um <b>nome real</b> \"especial\" que irá ser usado "
+"para o autenticar nos servidores desta rede.<br>Se deixar este campo vazio "
+"(caso mais comum), o \"nome real\" padrão (especificado nas configurações de "
+"\"Identidade\") será usado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:644
+msgid "Encoding:"
+msgstr "Codificação:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:164
+msgid ""
+"<center>This box allows you to choose the preferred encoding for the servers "
+"in this network. If you choose \"Use System Encoding\" then the encoding "
+"will be set to the systemwide value that you choose in the \"Encoding\" page "
+"of the options dialog.</center>"
+msgstr ""
+"<center>Esta caixa permite-lhe escolher a codificação preferida para os "
+"servidores nesta rede. Se escolher \"Usar Codificação do Sistema\" então a "
+"codificação irá ser definida para o valor geral do sistema que escolheu no "
+"diálogo de opções da página de \"Codificação\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:173
+msgid "Use System Encoding"
+msgstr "Usar Codificação do Sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:185
+msgid "Connect to this network at startup"
+msgstr "Conectar nesta rede ao arrancar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:189
+msgid ""
+"<center>This option will cause KVIrc to automatically connect to this "
+"network at startup</center>"
+msgstr ""
+"<center>Esta opção faz com que o KVirc se conecte automaticamente nesta rede "
+"ao iniciar.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:79
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:120
+msgid "General"
+msgstr "Geral"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:756
+msgid "Channels to join automatically upon connect:"
+msgstr "Canais para entrar automaticamente depois de conectar:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:211
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to a server in this network has been established. To add a "
+"channel, type its name in the text input below and click \"<b>Add</b>\".</"
+"center>"
+msgstr ""
+"<center>Aqui pode definir a lista de canais para entrar automaticamente após "
+"a conexão a um servidor nesta rede estar estabelecida. Para adicionar um "
+"canal, escreva o seu nome na entrada de texto em baixo e clique "
+"\"<b>Adicionar</b>\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:217
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:62
+msgid "Join Channels"
+msgstr "Entrar em Canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:228
+msgid ""
+"<center>The following commands will be executed after a connection to a "
+"server in this network has been established.<br><b>Important:</b> Enter "
+"commands <b>without</b> a preceding slash (e.g. <tt>quote pass secret</tt> "
+"instead of <tt>/quote pass secret</tt>).<br>KVIrc will first send the USER "
+"command, then eventually PASS and NICK and then execute this command "
+"sequence.</center>"
+msgstr ""
+"<center>Os seguintes comandos irão ser executados após a conexão num "
+"servidor ter sido estabelecida.<br><b>Importante:</b> Indique os comandos "
+"<b>sem</b> uma barra precedente (p.ex.<tt>quote senha secreto</tt> em vez de "
+"<tt>/quote senha secreto</tt>).<br>O KVirc irá em primeiro enviar o comando "
+"USER, depois eventualmente PASS e NICK e então executar esta sequência de "
+"comandos.<br>Isto é particularmente útil para bouncers IRC que requerem "
+"comandos de autenticação.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:782
+msgid "On Connect"
+msgstr "Ao Conectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:249
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"a server in this network.<br><b>Important:</b> Enter commands <b>without</b> "
+"a preceding slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote "
+"privatelog</tt>).<br>This is useful for automatically opening queries, "
+"setting variables, etc.</center>"
+msgstr ""
+"<center>Os seguintes comandos irão ser executados a seguir a uma "
+"autenticação bem sucedida neste servidor.<br><b>Importante:</b> Digitar "
+"comandos <b>sem</b> barra precedente (p.ex. <tt>quote privatelog</tt> em vez "
+"de <tt>/quote privatelog</tt>).<br>Isto é útil para automaticamente abrir "
+"privados, definir variáveis, etc.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:801
+msgid "On Login"
+msgstr "Ao Autenticar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:285
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on this network.<br>Please "
+"be aware that this feature can cause your NickServ passwords to be stolen if "
+"used improperly. Make sure that you fully understand the NickServ "
+"authentication protocol.<br>In other words, be sure to know what you're "
+"doing.<br>Also note that the password that you provide is stored as <b>PLAIN "
+"TEXT</b>.</center>"
+msgstr ""
+"<center>Esta é a lista das regras de identificação do NickServ. O KVirc irá "
+"usá-las para modelar a sua interacção automática com o NickServ.<br>Por "
+"favor tenha atenção porque esta característica pode causar que a sua senha "
+"do NickServ seja roubada se usada imprópriamente. Certifique-se que "
+"compreendeu completamente o protocolo de autenticação do NickServ. <br>Por "
+"outras palavras, tenha a certeza do que está a fazer. <br>Note também que a "
+"senha que forneceu é guardada como<b>TEXTO SIMPLES</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:35
+msgid "NickServ"
+msgstr "NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:323
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:60
+msgid "&OK"
+msgstr "&OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:449
+msgid "Server Details"
+msgstr "Detalhes do Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:465
+msgid ""
+"<center>This is a brief description of this server. This field has no "
+"restrictions but many server lists use it to describe the server's physical "
+"location</center>"
+msgstr ""
+"<center>Esta uma breve descriç deste servidor. Este campo n otem restriç "
+"esmas muitas listas de servidores usam-no para descrever a localizaç o "
+"fisica</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:484
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to this "
+"server.\n"
+"If this field is left empty (most common case), KVIrc will first look if an "
+"username is specified for the network that this server belongs to, and if "
+"that is empty then KVIrc will use the default username specified in the "
+"\"Identity\" options tab.</center>"
+msgstr ""
+"<center>Este é o <b>nome de utilizador</b> que o KVirc irá usar para o\n"
+"autenticar neste servidor. Se este campo estiver vazio, o KVirc irá primeiro "
+"procurar se um nome de utilizador está especificado para a rede onde este "
+"servidor pertence, e se estiver vazio então o KVirc irá usar o nome de "
+"utilizador padrão indicado nas opções de \"Identidade\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:490
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:127
+msgid "Password:"
+msgstr "Senha:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:495
+msgid ""
+"<center>If this server requires a password, put it in this field, otherwise "
+"leave it empty.</center>"
+msgstr ""
+"<center>Se este servidor requer uma senha, indique-a neste campo, caso "
+"contrário deixe em branco.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:504
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to this server.<br>If this field is left empty (most common case), "
+"KVIrc will first look if a nickname is specified for the network that this "
+"server belongs to, and if that is empty then the default nickname (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center>Pode indicar um <b>Alcunha</b> \"especial\" que será usada para o "
+"autenticar neste servidor.<br>Se este campo for deixado vazio (caso mais "
+"comum), o KVirc irá primeiro procurar se foi definida alguma alcunha na rede "
+"a que este servidor pertence, e se não estiver definido nenhuma, então irá "
+"usar a alcunha predefinida (indicada nas configurações de \"Identidade\").</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:513
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with this server.<br>If you leave this field empty (most common case), "
+"KVIrc will first look if a real name is specified for the network that this "
+"server belongs to, and if that is empty the default \"real name\" (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center>Pode especificar um <b>nome real</b> \"especial\" que irá ser usado "
+"para o autenticar neste servidor.<br>Se deixar este campo vazio (caso mais "
+"comum), o KVirc irá primeiro procurar se um nome real está especificado para "
+"a rede onde este servidor pertence, e se estiver vazio o\"nome real\" padrão "
+"(especificado nas configurações de \"Identidade\") será usado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:683
+msgid "User Mode"
+msgstr "Modo do Utilizador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:520
+msgid "Use default user mode"
+msgstr "Usar modo de utilizador padrão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:522
+msgid ""
+"<center>If this is enabled, the global initial <b>user mode</b> (configured "
+"from the identity dialog) will be used. If disabled, you can configure an "
+"initial user mode for this server"
+msgstr ""
+"<center>Se isto estiver activado, o <b>modo de utilizador</b> global inicial "
+"(configurado no diálogo Identidade) será usado. Se desactivado, pode "
+"configurar um modo de utilizador inicial para este servidor.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:684
+msgid "Invisible (+i)"
+msgstr "Invisível (+i)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:534
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:685
+msgid "Server notices (+s)"
+msgstr "Noticias do servidor (+s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:686
+msgid "Wallops (+w)"
+msgstr "Wallops (+w)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:548
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:60
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:104
+msgid "Identity"
+msgstr "Identidade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:115
+msgid "Port:"
+msgstr "Porta:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:565
+msgid ""
+"<center>This is the default <b>port</b> that this server will be contacted "
+"on.<br>Usually <b>6667</b> is OK.</center>"
+msgstr ""
+"<center>Esta é a <b>porta</b> padrão por onde este servidor será contactado."
+"<br>Geralmente a porta <b>6667</b> está bem.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:571
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:119
+msgid "IP address:"
+msgstr "Endereço IP:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:576
+msgid ""
+"<center>This is the <b>IP address</b> of this server, it is here for caching "
+"purposes.<br>If you leave this field empty, KVIrc will fill it in the first "
+"time it connects to the server. If you enable the \"cache IP address\" "
+"option below, KVIrc will use it as a \"cached result\" and avoid looking it "
+"up again.</center>"
+msgstr ""
+"<center>Este é o <b>endereço IP</b> deste servidor, está aqui para "
+"propósitos de cache. <br>Se deixar este campo vazio, o KVirc irá preenche-lo "
+"na primeira vez que se conectar ao servidor. Se activar a opção em baixo "
+"\"endereço IP em cache\", o KVirc irá usá-lo como um \"resultado em cache\" "
+"e evitar de o procurar outra vez.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:596
+msgid "Cache IP address"
+msgstr "Endereço IP em cache"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:599
+msgid ""
+"<center>This check will enable <b>IP address caching</b> for this server:"
+"<br>DNS lookups can be time-consuming and might be blocking on some "
+"platforms; this option will cause KVIrc to look up the server hostname only "
+"once.<br><br> Advanced: you can also use this option to force a certain "
+"server name to resolve to a fixed ip address when either the dns for that "
+"server is temporairly unreachable or you want to avoid the round-robin "
+"lookups.</center>"
+msgstr ""
+"<center>Esta marca irá activar o <b>endereço IP em cache</b> para este "
+"servidor: as procuras de DNS podem consumir muito tempo e podem estar a "
+"bloquear em algumas plataformas; esta opção irá fazer com que o KVirc "
+"procure o nome do endereço do servidor apenas uma vez.<br><br>Avançado: "
+"também pode usar esta opção para forçar um certo nome de servidor para "
+"resolver para um endereço IP fixo quando também o dns para esse servidor "
+"estiver temporariamente indisponível ou quiser evitar uma procura demorada.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:609
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:140
+msgid "Use IPv6 protocol"
+msgstr "Usar protocolo IPV6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:619
+msgid ""
+"<center>This check identifies IPv6 servers.<br>If enabled, KVIrc will "
+"attempt to use the IPv6 protocol (thus your OS <b>must</b> have a working "
+"IPv6 stack and you <b>must</b> have an IPv6 connection).</center>"
+msgstr ""
+"<center>Esta marcação identifica os servidores IPv6.<br>Se activado, o KVirc "
+"irá tentar usar o protocolo IPv6 (então o seu OS <b>tem que ter</b> uma "
+"pilha IPv6 a funcionar e <b>tem</b> que ter uma conexão IPv6).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:624
+msgid "Use SSL protocol"
+msgstr "Usar Protocolo SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:627
+msgid ""
+"<center>This check will cause the connection to use the <b>Secure Socket "
+"Layer</b> encryption support. Obviously, this server must have support for "
+"this, too. :)</center>"
+msgstr ""
+"<center>Esta marca irá fazer com que a conexão use o suporte de encriptação "
+"<b>Disposição Segura do Socket</b>. Obviamente, este servidor tem que ter "
+"suporte para isto também. :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:636
+msgid "Connect to this server at startup"
+msgstr "Conectar a este Servidor ao Iniciar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:641
+msgid ""
+"<center>This option will cause KVIrc to connect to the IRC server when it is "
+"started.</center>"
+msgstr ""
+"<center>Esta opção faz com que o KVirc se conecte ao servidor IRC quando é "
+"iniciado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:650
+msgid ""
+"<center>This box allows you to choose the preferred encoding for this sever. "
+"If you choose \"Use Network Encoding\" then the encoding will be inherited "
+"from the network that this server belongs to.</center>"
+msgstr ""
+"<center>Esta caixa permite-lhe escolher a codificação preferida para este "
+"servidor. Se escolher \"Usar Codificação da Rede\" então a codificação irá "
+"ser herdada da rede onde este servidor pertence.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:659
+msgid "Use Network Encoding"
+msgstr "Usar Codificação da Rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:672
+msgid "Link filter:"
+msgstr "Filtro de ligação:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:701
+msgid ""
+"<center>This field specifies the name of a module that exports a link filter "
+"for this type of server.<br>For plain IRC connections, you don't need any "
+"link filters; this is used for incompatible protocols.</center>"
+msgstr ""
+"<center>Este campo especifica o nome de um módulo que exporta um filtro de "
+"ligação para este tipo de servidor.<br>Para conexões IRC simples, não "
+"precisa de qualquer filtro de ligação; isto é usado para protocolos "
+"incompativeis.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:705
+msgid "Id:"
+msgstr "Id:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:713
+msgid ""
+"<center>This field allows you to specify a really unique id for this server. "
+"You will then be able to use /server -x &lt;this_id&gt; to make the "
+"connection. This is especially useful when you have multiple server entries "
+"with the same hostname and port in different networks (bouncers?)</center>"
+msgstr ""
+"<center>Este campo permite-lhe indicar um id realmente único para este "
+"servidor. Poderá então usar /server -x &lt;este_id&gt; para efectuar a "
+"conexão. Isto é especialmente útil quando tem várias entradas de servidores "
+"com o mesmo nome de endereço e a porta em diferentes redes (bouncers?)</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:719
+msgid "Proxy server:"
+msgstr "Servidor proxy:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:724
+msgid ""
+"<center>This is the <b>proxy</b> that KVIrc will use to connect to thos "
+"server.\n"
+"If this field is set in \"Default\" KVirc will use global proxy settings, if "
+"it is set in \"Direct connection\" KVirc will connect to this server without "
+"proxy. You can define new proxy server in global options' \"Proxy servers\" "
+"menu.</center>"
+msgstr ""
+"<center>Este é o <b>proxy</b> que o KVirc irá usar para se ligar nesse "
+"servidor.\n"
+"Se este campo estiver definido na configuração \"Predefinida\", o KVirc irá "
+"usar as configurações globais, se estiver definido em \"Conexão directa\", o "
+"KVirc irá conectar-se neste servidor sem proxy. Pode definir um novo "
+"servidor proxy no meu de opções globais \"Servidores Proxy\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:729
+msgid "Default"
+msgstr "Predefinido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:730
+msgid "Direct connection"
+msgstr "Conexão directa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:746
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:28
+msgid "Connection"
+msgstr "Conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:758
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to this server has been established. To add a channel, type its "
+"name in the text input below and click \"<b>Add</b>\".</center>"
+msgstr ""
+"<center>Aqui pode definir a lista de canais para entrar automaticamente após "
+"a conexão para este servidor estar estabelecida. Para adicionar um canal, "
+"escreva o seu nome na entrada de texto em baixo e clique \"<b>Adicionar</b>"
+"\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:776
+msgid ""
+"<center>The following commands will be executed after a connection has been "
+"established.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote pass secret</tt> instead of <tt>/quote pass secret</"
+"tt>).<br>KVIrc will first send the USER command, then eventually PASS and "
+"NICK and then execute this command sequence.<br>This is particularly useful "
+"for IRC bouncers that require login commands.</center>"
+msgstr ""
+"<center>Os seguintes comandos irão ser executados após a conexão ter sido "
+"estabelecida.<br><b>Importante:</b> Indique os comandos <b>sem</b> uma barra "
+"precedente (p.ex.<tt>quote senha secreto</tt> em vez de <tt>/quote senha "
+"secreto</tt>).<br>O KVirc irá em primeiro enviar o comando USER, depois "
+"eventualmente PASS e NICK e então executar esta sequência de comandos."
+"<br>Isto é particularmente útil para bouncers IRC que requerem comandos de "
+"autenticação.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:796
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"this server.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote privatelog</tt>)."
+"<br>This is useful for automatically opening queries, setting variables, etc."
+"</center>"
+msgstr ""
+"<center>Os seguintes comandos serão executados a seguir a uma autenticação "
+"bem sucessida neste servidor.<br><b>Importante:</b> Digitar comandos <b>sem</"
+"b> barra precedente (p.ex. <tt>quote privatelog</tt> em vez de <tt>/quote "
+"privatelog</tt>).<br>Isto é útil para entrar em canais automaticamente, "
+"abrir privados, definir variáveis, etc.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1041
+msgid "Server"
+msgstr "Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1042
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:73
+msgid "Description"
+msgstr "Descrição"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1054
+msgid ""
+"<center>This is the list of available IRC servers.<br>Right-click on the "
+"list to add or remove servers and perform other actions.<br>Double-click on "
+"a item for advanced options.</center>"
+msgstr ""
+"<center>Esta é a lista de Servidores IRC disponiveis.<br>Clique direito na "
+"lista para adicionar ou remover servidores e/ou outras acções.<br>Duplo "
+"clique num item para opções avançadas.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1069
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1430
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1554
+msgid "New Network"
+msgstr "Nova Rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1077
+msgid "New Server"
+msgstr "Novo Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1086
+msgid "Remove Network/Server"
+msgstr "Remover Rede/Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1098
+msgid "Copy Server"
+msgstr "Copiar Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1107
+msgid "Paste Server"
+msgstr "Colar Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1446
+msgid "Import List"
+msgstr "Importar Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1125
+msgid "Active Configuration"
+msgstr "Configuração Activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1332
+msgid "Server:"
+msgstr "Servidor:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1130
+msgid ""
+"<center>This is the name of the currently selected server or network</center>"
+msgstr ""
+"<center>Este é o nome do servidor ou rede actualmente seleccionado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1153
+msgid "Advanced..."
+msgstr "Avançado..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1156
+msgid "<center>Click here to edit advanced options for this entry</center>"
+msgstr "<center>Clique aqui para editar as opções avançadas</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1159
+msgid "Connect &Now"
+msgstr "Conectar &Agora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1164
+msgid ""
+"<center>Hit this button to connect to the currently selected server.</center>"
+msgstr ""
+"<center>Prima este botão para conectar ao actual servidor seleccionado.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1177
+msgid ""
+"<center>This button shows a list of recently used servers. It allows you to "
+"quickly find them in the list.</center>"
+msgstr ""
+"<center>Este botão mostra uma lista dos servidores recentemente usados. "
+"Permite-lhe rápidamente encontrá-los nesta lista.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1181
+msgid "Show this dialog at startup"
+msgstr "Mostrar esta janela ao iniciar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1184
+msgid ""
+"<center>If this option is enabled, the Servers dialog will appear every time "
+"you start KVIrc</center>"
+msgstr ""
+"<center>Se esta opção estiver activada, o diálogo dos Servidores irá "
+"aparecer sempre que iniciar o KVirc</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1335
+msgid "Network:"
+msgstr "Rede:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1345
+msgid "No selection"
+msgstr "Sem Seleção"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1364
+msgid "UnknownNet"
+msgstr "RedeDesconhecida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1431
+msgid "Remove Network"
+msgstr "Remover Rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1434
+msgid "&New Server"
+msgstr "&Novo Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1435
+msgid "Re&move Server"
+msgstr "Re&mover Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1437
+msgid "&Copy Server"
+msgstr "&Copiar Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1439
+msgid "&Paste Server"
+msgstr "&Colar Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1444
+msgid "Clear List"
+msgstr "Limpar Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1483
+msgid ""
+"Oops... something weird happened:<br>Can't find any module capable of "
+"importing servers."
+msgstr ""
+"Oops... aconteceu algo esquisito:<br>Não consigo encontrar módulos capazes "
+"de importar servidores."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1500
+msgid ""
+"Oops... something weird happened:<br>Can't find the module that was capable "
+"of this import action. :("
+msgstr ""
+"Oops... aconteceu algo esquisito:<br>Não consigo encontrar o módulo capaz "
+"desta importante acção. :("
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1574
+msgid "irc.unknown.net"
+msgstr "irc.desconhecido.net"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:39
+msgid "Disable parser warnings"
+msgstr "Desactivar avisos do analisador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:40
+msgid "Disable broken event handlers"
+msgstr "Desactivar controladores de eventos falhados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:41
+msgid "Kill broken timers"
+msgstr "Matar/Kill temporizadores danificados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:42
+msgid "Send unknown commands as /RAW"
+msgstr "Enviar comando desconhecido como /RAW"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:46
+msgid "Automatically unload unused modules"
+msgstr "Automaticamente descarregar módulos não usados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:47
+msgid "Ignore module versions (dangerous)"
+msgstr "Ignorar versões de módulos (perigoso)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:51
+msgid "Relay errors and warnings to debug window"
+msgstr "Erros de retransmissão e avisos para a janela de depuração"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:52
+msgid "Create minimized debug window"
+msgstr "Criar janela de depuração minimizada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:59
+msgid "Nickname alternatives"
+msgstr "Alcunhas alternativas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:62
+msgid ""
+"<center>Here you can choose up to three nicknames alternative to the primary "
+"one. KVIrc will use the alternatives if the primary nick is already used by "
+"someone else on a particular IRC network.</center>"
+msgstr ""
+"<center>Aqui pode escolher até três alcunhas alternativas em relação à "
+"principal. O KVirc irá usar as alcunhas alternativas se a primeira já "
+"estiver a ser usada por alguém em particular no IRC.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:69
+msgid "Alt. Nickname 1:"
+msgstr "Alcunha Alternativa 1:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:76
+msgid "Alt. Nickname 2:"
+msgstr "Alcunha Alternativa 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:83
+msgid "Alt. Nickname 3:"
+msgstr "Alcunha Alternativa 3:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Ok"
+msgstr "Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:130
+msgid "Avatar Download - KVIrc"
+msgstr "Transferência de Avatar - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:136
+msgid "<center>Please wait while the avatar is being downloaded</center>"
+msgstr "<center>Por favor aguarde enquanto a avatar é transferida</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:139
+msgid "Abort"
+msgstr "Abortar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:170
+msgid "Failed to start the download"
+msgstr "Falha ao iniciar a transferência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:184
+msgid "Download aborted by user"
+msgstr "Transferência abortada pelo utilizador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:213
+msgid "Choose Avatar - KVIrc"
+msgstr "Escolher Avatar - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:219
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+"Por favor escolha uma imagem Avatar. Pode usar uma localização completa para "
+"um ficheiro local ou uma imagem na Web.<br>Se quiser usar um ficheiro local, "
+"clique no botão \"<b>Procurar</b>\" para procurar ficheiros locais.<br>O URL "
+"completo de uma imagem (incluindo <b>http://</b>) pode ser indicado "
+"manualmente."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:237
+msgid "&Browse..."
+msgstr "&Procurar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:275
+msgid "Choose an Image File - KVIrc"
+msgstr "Escolha um Ficheiro de Imagem - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:316
+msgid "Basic Properties"
+msgstr "Propriedades Básicas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:323
+msgid ""
+"<center>Your <b>nickname</b> is your primary form of identification on IRC."
+"<br>Since servers cannot accept multiple users sharing the same nickname "
+"(case insensitive), you can provide alternative nicknames to be used in "
+"casethe server refuses to accept the default one.</center>"
+msgstr ""
+"<center>A sua <b>alcunha</b> é a sua primeira forma de identificação no IRC. "
+"<br>Já que os servidores não podem aceitar utilizadores múltiplos a usar a "
+"mesma alcunha, pode indicar alcunhas alternativas no caso de o servidor não "
+"aceitar a que está predefinida.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:331
+msgid "Alternatives..."
+msgstr "Alternativos..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:337
+msgid ""
+"<center>This is the <b>username</b> that you will use to connect to the "
+"server.<br>In the past, it was used as a form of authentication, but it "
+"normally has no special use now.<br>In addition to your nickname, you are "
+"identified on IRC by your <b>username@hostname</b>.</br>Basically, you can "
+"enter any word you like here. :D</center>"
+msgstr ""
+"<center>Este é o <b>nome de utilizador</b> que irá usar para se conectar ao "
+"servidor. No passado, usava-se como forma de autenticação, mas agora já não "
+"tem qualquer uso específico.<br>Em relação à sua alcunha, é identificado no "
+"IRC pelo seu<b>nome_utilizador@endereço</b>.</br>Basicamente, aqui pode "
+"indicar uma palavra qualquer. :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:346
+msgid ""
+"<center>This text will appear when someone does a /WHOIS on you.<br>It is "
+"intended to be your real name, but people tend to put random quotes and "
+"phrases here too.</center>"
+msgstr ""
+"<center>Este texto irá aparecer quando alguém lhe fizer um /WHOIS. <br>Quere-"
+"se que seja o seu nome real, mas geralmente as pessoas tendem a colocar aqui "
+"umas citações ou frases quaisquer.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:351
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+"este campo é opcional e irá aparecer como parte da resposta CTCP USERINFO."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:356
+msgid "Profile"
+msgstr "Perfil"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:361
+msgid "Age:"
+msgstr "Idade:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:366
+msgid "Here you can specify your age."
+msgstr "Aqui pode indicar a sua idade."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:401
+msgid "Unspecified"
+msgstr "Não indicado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:391
+msgid "Gender:"
+msgstr "Género:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:396
+msgid "Here you can specify your gender."
+msgstr "Aqui pode indicar o seu género."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:402
+msgid "Female"
+msgstr "Mulher"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:403
+msgid "Male"
+msgstr "Homem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:414
+msgid "Location:"
+msgstr "Localização:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:417
+msgid ""
+"You can describe here your approximate physical location. Something like "
+"\"Region, Country\" will be ok. Please note that this information will be "
+"viewable by anyone so putting more data (like the exact address), generally, "
+"<b>is not a good idea</b>."
+msgstr ""
+"Aqui pode descrever aproximadamente a sua localização física. Algo do tipo "
+"\"Região, País\". Por favor note que esta informação será vista por qualquer "
+"pessoa, como tal adicionar mais informações (como o endereço exacto), "
+"geralmente <b>ão é boa ideia</b>."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:422
+msgid "Languages:"
+msgstr "Linguagens:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:425
+msgid ""
+"You can put here the short names of the languages you can speak. An example "
+"might be \"EN,IT\" that would mean that you speak both Italian and English."
+msgstr ""
+"Aqui pode indicar os nomes curtos das línguas que fala. Por exemplo pode ser "
+"\"EN,PT\" que significa que fala ambas as línguas, Inglês e Português."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:429
+msgid "Other:"
+msgstr "Outros:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:432
+msgid ""
+"You can put here some additional personal data. It might be a funny quote or "
+"your homepage url... Please note that this information will be viewable by "
+"anyone so <b>don't put any sensible data</b> (passwords, telephone or credit "
+"card numbers)."
+msgstr ""
+"pode indicar aqui algumas informações pessoais adicionaos. Pode ser uma "
+"frase engraçada ou a sua página pessoal... Por favor note que esta "
+"informação será vista por qualquer pessoa, portanto <b>não ponha qualquer "
+"informação</b> (senhas, telefone ou números de cartões de crédito)."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:502
+msgid ""
+"Here you can choose your avatar image. It will be visible<br>by other people "
+"that request it. Choose a nice image of yourself,<br>possibly avoiding "
+"obscenity and offending images. It is a good idea<br>to choose a relatively "
+"small file (say 150 Kb max) because<br>most clients have a limit on the size "
+"of avatars being downloaded.<br>The image also should be smaller than "
+"800x600 pixels since<br>it will have to be viewable in everyone's monitor."
+msgstr ""
+"Aqui pode escolher a sua imagem avatar. Será visivel<br>para outras pessoas "
+"que a pedirem, Escolha uma boa imagem de si próprio,<br>geralmente evitando "
+"obscinidades e imagens ofensivas. é uma boa ideia escolher<br>uma "
+"relativamente pquena (tipo 150 Kb máximo) porque<br>muitos clientes têm "
+"limite no tamanho das avatares a ser transferidas.<br>A imagem deve também "
+"ser mais pequena que 800x600 pontos já que<br>irá ter que ser vista nos "
+"monitores de todaa as pessoas."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:511
+msgid "Use avatar"
+msgstr "Usar Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:537
+msgid "Choose..."
+msgstr "Escolher..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:598
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:637
+msgid "Failed to Load Avatar - KVIrc"
+msgstr "Falha ao Carregar Avatar - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:599
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:638
+msgid ""
+"Failed to load the avatar image.<br>It may be an unaccessible file or an "
+"unsupported image format."
+msgstr ""
+"Falha ao carregar imagem avatar.<br>Pode ser um ficheiro inacessível ou um "
+"formato de imagem não suportado."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:606
+msgid "Failed to download the avatar image.<br><b>%Q</b>"
+msgstr "Falha na transferência da imagem avatar.<br><b>%Q</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:608
+msgid "Avatar Download Failed - KVIrc"
+msgstr "Transferência Falhada de Avatar - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:649
+msgid "Avatar Might Be Too Big - KVIrc"
+msgstr "Imagem Avatar Talvez Demasiado Grande - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:650
+msgid ""
+"The avatar you have choosen is bigger than 1024x768 pixels.<br>Such a big "
+"image will not be seen on all the user monitors<br>and will probably be "
+"scaled by the remote clients with poor quality<br>algorithms to improve "
+"performance. You *should* scale it manually<br>to a sane size (like 800x600) "
+"or choose a different image."
+msgstr ""
+"A imagem avatar que escolheu é maior que1024x76 pontos.<br>Uma imagem tão "
+"grande não será vista por todos os monitores<br>e provavelmente irá ser "
+"redimensionada pelos clientes remotos com algoritmos de pouca "
+"qualidade<br>para melhorar a performance. Deve escalá-la manualmente<br>para "
+"um bom tamanho (tipo 800x600) ou escolher uma imagem diferente."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:688
+msgid "Default Messages"
+msgstr "Mensagem Predefinidas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:691
+msgid "Part message:"
+msgstr "Mensagem de saída de canal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:695
+msgid ""
+"<center>This is the default part message that will be used when you<br>leave "
+"a channel by closing a channel window.</center>"
+msgstr ""
+"<center>Esta é a mensagem de saída de canal predefinida que será usada "
+"quando <br>deixar um canal ao fechar a janela do canal.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:699
+msgid "Quit message:"
+msgstr "Mensagem de saída (quit):"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:702
+msgid ""
+"<center>This is the default quit message that will be used when you<br>quit "
+"your IRC session by closing the console window or disconnecting by pressing "
+"the disconnect button.</center>"
+msgstr ""
+"<center>Esta é a mensagem de saída (quit) predefinida que será usada quando "
+"<br>fechar a sua sessão IRC ao fechar a janela da consola ou ao desconectar "
+"com o premir o botão desconectar.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:42
+msgid "Open Query For"
+msgstr "Abrir Privado Para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:40
+msgid "Private messages"
+msgstr "Mensagens privadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:46
+msgid ""
+"<center>This option enables query window creation when a private message "
+"(PRIVMSG) is received.<br>If you disable this, private messages will be "
+"shown in the active window or a common channel.</center>"
+msgstr ""
+"<center>Esta opção activa a criação de uma janela de privado quando uma "
+"mensagem privada (PRIVMSG) é recebida..<br>Se desactivar esta opção, as "
+"mensagens privadas serão mostradas na janela activa ou numa janela comum.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:42
+msgid "Private notices"
+msgstr "Noticias privadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:55
+msgid ""
+"<center>This option enables query window creation when a private notice "
+"(NOTICE) is received.<br>If you disable this, private notices will be shown "
+"in the active window or a common channel.</center>"
+msgstr ""
+"<center>Esta opção activa a criação de uma janela de privado quando uma "
+"noticia privada (NOTICE) é recebida..<br>Se desactivar esta opção, as "
+"noticias privadas serão mostradas na janela activa ou numa janela comum.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:62
+msgid "Always open queries as minimized"
+msgstr "Abrir sempre todos os privados como minimizados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:66
+msgid ""
+"<center>This option causes newly created query windows to be immediately "
+"minimized.<br>Enable this if you don't like queries popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+"<center>Esta opção faz com que as novas janelas de privados criadas sejam "
+"imediatamente minimizadas.<br>Active esta opção se não quer janelas de "
+"privados aparecerem enquanto escreve algo num canal. :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:74
+msgid "Enable target user tracking"
+msgstr "Activar seguimento do utilizador marcado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:77
+msgid ""
+"<center>This option will enable target user tracking.<br>Some actions of the "
+"target user (e.g. joins and parts) will be displayed in the window.<br></"
+"center>"
+msgstr ""
+"<center>Esta opção irá activar o seguimento do utilizador.<br>Algumas acções "
+"do utilizador em questão (p.ex. entrar e sair) serão mostradas na janela."
+"<br></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:83
+msgid "Flash system taskbar on new query message"
+msgstr "Piscar barra de tarefas em novas mensagens privadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:86
+msgid ""
+"<center>This option causes the system taskbar entry for KVIrc to flash when "
+"a new query message is received and the KVIrc window is not the active.</"
+"center>"
+msgstr ""
+"<center>Esta opção faz com que o sistema da barra de tarefas KVirc pisque "
+"quando chega uma nova mensagem privada e a janela do KVirc não está activa.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:91
+msgid "Popup notifier on new query message"
+msgstr "Mostrar notificador em nova mensagem privada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:94
+msgid ""
+"<center>This option causes a small notifier window to pop up in the low "
+"right corner of the screen when a new message is received and the KVIrc "
+"window is not active.</center>"
+msgstr ""
+"<center>Esta opção faz com que uma pequena janela de notificação seja "
+"mostrada no canto inferior direito do ecrã quando é recebida uma nova "
+"mensagem e a janela do KVirc não está activa.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:98
+msgid "Show information about query target at the top of the query"
+msgstr "Mostrar informação acerca do privado de destino no topo da janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:101
+msgid ""
+"<center>This option enables query window information label. It can show you "
+"known information about query target at the top of the window.<br>Uncheck if "
+"you think,that it wastes your query space/</center>"
+msgstr ""
+"<center>Esta opção permite mostrar informação na janela do privado. Pode "
+"mostrar informação acerca do privado de destino no topo da janela."
+"<br>Desmarque esta opção se pensa que ocupa demasiado espaço na janela de "
+"privado</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:39
+msgid "Use global application font"
+msgstr "Usar tipo de letra global na aplicação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:40
+msgid "Hide icons in Popup"
+msgstr "Ocultar Ícones no Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:41
+msgid "Global application font:"
+msgstr "Tipo de letra global na aplicação:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:67
+msgid "Enable fake transparency"
+msgstr "Activar transparência falsa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:71
+msgid ""
+"<center>This option makes all KVIrc windows look transparent.<br>You must "
+"choose a blending background image to below or check the \"Use KDE desktop "
+"for transparency\" option.</center>"
+msgstr ""
+"<center>Esta opção torna todas as janelas do KVirc transparentes.<br>Deve "
+"escolher uma imagem de fundo que se misture para ficar por baixo ou marque a "
+"opção \"Usar ecrã KDE para transparência.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:77
+msgid ""
+"<center>This option makes all KVIrc windows look like transparent.<br>You "
+"must choose a blending background image to below.</center>"
+msgstr ""
+"<center>Esta opção torna todas as janelas do KVirc transparentes.<br>Deve "
+"escolher imagem de fundo que se misture para ficar por baixo.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:83
+msgid "Child window opacity:"
+msgstr "Opacidade da janela secundária:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:87
+msgid "Parent window opacity:"
+msgstr "Opacidade da janela principal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:91
+msgid "Blend color:"
+msgstr "Cor de Mistura:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:97
+msgid "Use KDE desktop for transparency"
+msgstr "Usar ecrã KDE para transparência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:102
+msgid "Keep in sync with KDE background changes"
+msgstr "Manter em sincronização com as mudanças do plano de fundo KDE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:111
+msgid "Transparency blend image:"
+msgstr "Imagem de mistura da transparência:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:155
+msgid "Active Background"
+msgstr "Fundo Activo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:156
+msgid "Inactive Background"
+msgstr "Fundo Inactivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:157
+msgid "Active Text (Primary)"
+msgstr "Texto Activo (Primário)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:158
+msgid "Active Text (Secondary)"
+msgstr "Texto Activo (Secundário)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:159
+msgid "Inactive Text (Primary)"
+msgstr "Texto Inactivo (Primário)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:160
+msgid "Inactive Text (Secondary)"
+msgstr "Texto Inactivo (Secundário)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:197
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:44
+msgid "Background"
+msgstr "Plano de Fundo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:178
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:205
+msgid "Background Image"
+msgstr "Imagem de Fundo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:198
+msgid "Low-Contrast Foreground"
+msgstr "Contraste Baixo do Primeiro Plano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:199
+msgid "Mid-Contrast Foreground"
+msgstr "Contraste Médio do Primeiro Plano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:200
+msgid "Active High-Contrast Foreground (Primary)"
+msgstr "Contraste Alto Activo no Primeiro Plano (Primário)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:201
+msgid "Active High-Contrast Foreground (Secondary)"
+msgstr "Contraste Alto Activo no Primeiro Plano (Secundário)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:202
+msgid "Inactive High-Contrast Foreground (Primary)"
+msgstr "Contraste Alto Inactivo no Primeiro Plano (Primário)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:203
+msgid "Inactive High-Contrast Foreground (Secondary)"
+msgstr "Contraste Alto Inactivo no Primeiro Plano (Secundário)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:40
+msgid "Scaling in userlist"
+msgstr "Redimensionar na lista de utilizadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:41
+msgid "Scale avatar images in userlist (recommended)"
+msgstr "Redimensionar imagens avatar na lista de utilizadores (recomendado)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:43
+msgid ""
+"<center>This option will force KVIrc to scale avatars shown in the userlist."
+"<br>Avatars will be scaled to fit the constraints set below. Better keep "
+"this option on. :)</center>"
+msgstr ""
+"<center>Esta opção irá forçar o KVirc a redimensionar avatares mostradas na "
+"lista de utilizador.<br>As avatares irão ser redimensionadas para caber nos "
+"limites definidos em baixo. Será melhor manter esta opção ligada. :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:48
+msgid "Do not scale avatar if it is less than required size"
+msgstr "Não escalar avatar se for menor que o tamanho requerido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:59
+msgid "Image width:"
+msgstr "Comprimento da imagem:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:61
+msgid "Image height:"
+msgstr "Altura da imagem:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:56
+msgid "Scaling on load (and in user tooltips)"
+msgstr "Redimensionar ao carregar (e nas dicas de utilizador)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:57
+msgid "Scale avatar images on image load"
+msgstr "Redimensionar imagens avatar ao carregar imagem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:65
+msgid "Request CTCP"
+msgstr "Pedir CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:66
+msgid "Request missing avatars"
+msgstr "Requisitar avatars em falta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:67
+msgid "Maximum requested file size:"
+msgstr "Tamanho máximo do ficheiro pedido:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to send a DCC GET request when someone "
+"sets an avatar and there is no cached copy available.</center>"
+msgstr ""
+"<center>Esta opção faz com que o KVIrc envie um pedido DCC GET quando alguém "
+"tem uma avatar e não há uma cópia em cache disponível.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:74
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:317
+msgid " bytes"
+msgstr " bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:77
+msgid ""
+"<center>This is the maximum size for avatar images that will be "
+"automatically requested.<br>A reasonable value might be 102400 bytes (100 K)."
+"</center>"
+msgstr ""
+"<center>Este é o tamanho máximo para imagens avatar que serão "
+"automaticamente pedidas.<br>Um valor razoável pode ser de 102400 bytes (100 "
+"K).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:83
+msgid "Automatically accept incoming avatars"
+msgstr "Aceitar automaticamente avatares enviadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:87
+msgid ""
+"<center>This option will cause KVIrc to auto-accept DCC SEND requests for "
+"incoming avatars.<br>If you're using the \"Request missing avatars\" option "
+"above, enabling this may by useful.<br>Avatars will be saved in the local "
+"KVIrc directory.</center>"
+msgstr ""
+"<center>Esta opção irá fazer com que o KVirc auto aceite pedidos DCC SEND "
+"para avatares. <br>Se estiver a usar a opção \"Pedir avatares em falta\", "
+"activar isto pode ser útil.<br> As avatares serão gravadas no directório "
+"KVIrc local .</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:94
+msgid "Remember avatars for registered users"
+msgstr "Lembrar avatares para utilizadores registados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:99
+msgid ""
+"<center>Use a user's last known avatar by default (only for users that are "
+"registered).</center>"
+msgstr ""
+"<center>Usar a última avatar de utilizador conhecida por predefinição "
+"(apenas para utilizadores registados).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:103
+msgid "Avatar offer timeout:"
+msgstr "Tempo limite de oferta Avatar:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:104
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:162
+msgid " sec"
+msgstr " seg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:107
+msgid ""
+"<center>This is the amount of time to make an avatar available for transfer "
+"when requested.<br>When someone sends a CTCP AVATAR request, KVIrc will "
+"reply with a CTCP AVATAR message containing the name and size of your avatar "
+"image.<br>A time-limited file offer is added for the image file to the "
+"requesting user.</center>"
+msgstr ""
+"<center>Este é o limite de tempo para colocar uma avatar disponível para "
+"transferir, quando pedido. <br>Quando alguém envia um pedido CTCP AVATAR, o "
+"KVirc irá responder com uma mensagem CTCP AVATAR que contenha o nome e o "
+"tamanho da sua imagem avatar.<br> É adicionado um tempo limite de envio de "
+"ficheiro para o ficheiro de imagem para o utilizador em questão.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:115
+msgid "Ignore requests if no avatar is set"
+msgstr "Ignorar pedidos se nenhuma avatar estiver definida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:118
+msgid ""
+"This option will cause KVIrc to ignore channel CTCP AVATAR requests when you "
+"have no avatar set. This is usually a good practice since it helps in "
+"reducing traffic by not sending a reply that would be empty."
+msgstr ""
+"Esta opção faz com que o KVirc ignore um pedido de canal CTCP AVATAR quando "
+"não tiver nenhuma avatar definida. Normalmente é uma boa opção, já que ajuda "
+"a reduzir o tráfego não enviar uma resposta que estaria vazia."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:39
+msgid "Use online notify list"
+msgstr "Usar lista de notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:44
+msgid "Configuration"
+msgstr "Configuração"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:45
+msgid "Show notifications in active window"
+msgstr "Mostrar notificações na janela activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:50
+msgid "Flash window when users are going online"
+msgstr "Piscar janela quando os utilizadores estão ligados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:55
+msgid "Popup notifier when users are going online"
+msgstr "Mostrar notificador quando os utilizadores estão ligados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:59
+msgid "Advanced configuration"
+msgstr "Configuração avançada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:64
+msgid "Check USERHOST for online users"
+msgstr "Verificar USERHOST para os utilizadores ligados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:69
+msgid "Use \"smart\" notify list manager"
+msgstr "Usar gestor \"inteligente\"da lista de notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:74
+msgid "Use the WATCH method if available"
+msgstr "Usar método WATCH se disponível"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:79
+msgid "Check interval (in seconds)"
+msgstr "Verificar intervalo (em segundos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:85
+msgid "ISON delay (in seconds)"
+msgstr "Atraso ISON (em segundos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:91
+msgid "USERHOST delay (in seconds)"
+msgstr "Atraso USERHOST (em segundos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:96
+msgid ""
+"<p><b>Note:</b><br>The notify list is managed using the \"Registered Users\" "
+"settings.</p>"
+msgstr ""
+"<p><b>Nota:</b><br>A lista de notificação gere as configurações dos "
+"\"Utilizadores Registados\".</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:112
+msgid "Forcibly and completely disable the notifier"
+msgstr "Forçar e desactivar totalmente o notificador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:115
+msgid ""
+"This is an option for the impatient: it allows to forcibly and permanently "
+"disable the notifier window. Please note that if this option is activated "
+"then the notifier will NOT popup even if all the other options around "
+"specify to use it in response to particular events. Also note that this "
+"option will make all the /notifier.* commands fail silently."
+msgstr ""
+"Esta é uma opção para o impaciente: permite forçosamente e permanentemente "
+"desactivar a janela de notificação. Por favor note que se esta opção estiver "
+"activada, então o notificador NÃO irá ser mostrado, mesmo se todas as outras "
+"opções sobre como especificar para o usar como resposta a eventos "
+"particulares. Note também que esta opção irá fazer com que todos os comando /"
+"notifier.* falhem silenciosamente."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:123
+msgid "Disable notifier window flashing"
+msgstr "Desactivar piscar da janela do notificador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:124
+msgid "Disable notifier window fade effect"
+msgstr "Desactivar efeito de desvanescimento na janela de notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:39
+msgid "Default away message:"
+msgstr "Mensagem de ausência predefinida:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:41
+msgid "User input exits away mode"
+msgstr "Sair de \"ausente\" ao digitar algo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:43
+msgid "Away Nickname"
+msgstr "Alcunha de Ausência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:44
+msgid "Change nickname on away"
+msgstr "Mudar alcunha ao ficar ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:47
+msgid "Use automatic nickname ([5 letters]AWAY)"
+msgstr "Usar alcunha gerada automaticamente ([5 letras] AWAY)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:55
+#, c-format
+msgid "Custom nickname (%%nick%% means a current nick):"
+msgstr "Alcunha personalizada (%%nick%% significa uma alcunha actual):"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/libkvioptions.cpp:199
+msgid "No such options page class name %Q"
+msgstr "Nenhum nome de classe nas opções da página %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:47
+msgid "Use system URL handlers"
+msgstr "Usar executáveis URL do sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:50
+msgid "<b>http://</b> handler command:"
+msgstr "<b>http://</b> comando:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:51
+msgid "<b>https://</b> handler command:"
+msgstr "<b>https://</b> comando:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:52
+msgid "<b>ftp://</b> handler command:"
+msgstr "<b>ftp://</b> comando:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:53
+msgid "<b>mailto:</b> handler command:"
+msgstr "<b>mailto:</b> comando:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:54
+msgid "<b>file://</b> handler command:"
+msgstr "<b>file://</b> comando:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:55
+msgid "Unknown protocol handler command:"
+msgstr "Comando para protocolo desconhecido:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:61
+msgid "Use proxy"
+msgstr "Usar proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:65
+msgid "Proxy"
+msgstr "Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:76
+msgid ""
+"<center>This is the list of available proxy servers.<br>Right-click on the "
+"list to add or remove proxies.</center>"
+msgstr ""
+"<center>Esta é a lista dos servidores proxy disponiveis.<br>Clique direito "
+"na lista para adicionar ou remover proxies.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:90
+msgid "New Proxy"
+msgstr "Novo Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:99
+msgid "Remove Proxy"
+msgstr "Remover Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:111
+msgid "Proxy:"
+msgstr "Proxy:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:131
+msgid "Protocol:"
+msgstr "Protocolo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:336
+msgid "&New Proxy"
+msgstr "&Novo Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:337
+msgid "Re&move Proxy"
+msgstr "Re&mover Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:71
+msgid "Pattern"
+msgstr "Padrão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:72
+msgid "MIME Type"
+msgstr "Tipo MIME"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:87
+msgid "MIME type:"
+msgstr "Tipo MIME:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:92
+msgid "File pattern:"
+msgstr "Ficheiro padrão:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:97
+msgid "Magic bytes:"
+msgstr "Bytes mágicos:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:102
+msgid "Save path:"
+msgstr "Gravar localização:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:107
+msgid "Local open command:"
+msgstr "Comando de abrir local:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:112
+msgid ""
+"<center>This field contains the command to execute to open a local file."
+"<br><tt>$0</tt> is used in place of the filename</center>"
+msgstr ""
+"<center>Este campo contém o comando a executar para abrir um ficheiro local. "
+"<br><tt>$0</tt> é usado no lugar do nome do ficheiro</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:116
+msgid "Remote open command:"
+msgstr "Comando de abrir remoto:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:121
+msgid ""
+"<center>This field contains the command to execute when automatically "
+"opening a received file.<br><tt>$0</tt> is used in place of the filename</"
+"center>"
+msgstr ""
+"<center>Este campo contém o comando a executar quando abrir automaticamente "
+"um ficheiro recebido.<br><tt>$0</tt> é usado no lugar do nome do ficheiro</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:125
+msgid "Icon"
+msgstr "Ícone"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:134
+msgid "&New"
+msgstr "&Novo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:138
+msgid "Re&move"
+msgstr "Re&mover"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:184
+msgid "[Unknown Media Type]"
+msgstr "[Tipo de Média Desconhecido}"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:230
+msgid "New Media Type"
+msgstr "Novo Tipo de Média"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:53
+msgid "Nickname Colors"
+msgstr "Cores da Alcunha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:56
+msgid "Channel owner:"
+msgstr "Dono do canal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:57
+msgid "Channel admin:"
+msgstr "Admin. do Canal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:58
+msgid "Op:"
+msgstr "Op:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:59
+msgid "Half-op:"
+msgstr "Meio-op:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:60
+msgid "Voice:"
+msgstr "Voz:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:61
+msgid "User-op:"
+msgstr "Utilizador-op:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:62
+msgid "Away:"
+msgstr "Ausente:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:66
+msgid "Use different color for own nick:"
+msgstr "Usar cor diferente para alcunha própria:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:81
+msgid "Draw nickname grid"
+msgstr "Desenhar grelha das alcunhas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:83
+msgid "Grid color:"
+msgstr "Cor da grelha:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:90
+msgid "Grid type:"
+msgstr "Tipo de grelha:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:94
+msgid "3D Grid"
+msgstr "Grelha 3D"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:95
+msgid "3D Buttons"
+msgstr "Botões 3D"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:96
+msgid "Plain Grid"
+msgstr "Grelha Plana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:97
+msgid "Dotted Grid"
+msgstr "Grelha Pontilhada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:131
+msgid "Horizontal Alignment:"
+msgstr "Alinhamento Horizontal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:135
+msgid "Vertical Alignment:"
+msgstr "Alinhamento Vertical:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:231
+msgid "Show gender icons"
+msgstr "Mostrar género dos ícones"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:232
+msgid "Show user channel icons"
+msgstr "Mostrar ícones do utilizador no canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:233
+msgid "Show user channel activity indicator"
+msgstr "Mostrar indicador de actividade do utilizador no canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:234
+msgid "Hide users label"
+msgstr "Ocultar nome dos utilizadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:235
+msgid "Enable user tooltips"
+msgstr "Activar dicas do utilizador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:236
+msgid "Hide avatars"
+msgstr "Ocultar avatares"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:79
+msgid "Use flood protection (recommended)"
+msgstr "Usar protecção flood (recomendado)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:81
+msgid ""
+"<center>This option makes KVIrc only respond to a limited number of CTCP "
+"requests within a specified time interval, to prevent \"flooding\" CTCP "
+"messages.</center>"
+msgstr ""
+"<center>Esta opção faz com que o KVirc apenas responda a número limitado de "
+"pedidos CTCP dentro de um intervalo de tempo especificado, para prevenir o "
+"\"flood\" de mensagens CTCP.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:83
+msgid "Allow up to:"
+msgstr "Permitir até:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:84
+msgid " requests"
+msgstr " pedidos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:86
+msgid ""
+"<center>Minimum value: <b>0 requests</b><br>Maximum value: <b>10000 "
+"requests</b></center>"
+msgstr ""
+"<center>Valor mínimo: <b>0 pedidos</b><br>Valor máximo: <b>10000 pedidos</"
+"b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:89
+msgid "within:"
+msgstr "dentro de:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:92
+msgid ""
+"<center>Minimum value: <b>1 sec</b><br>Maximum value: <b>3600 sec</b></"
+"center>"
+msgstr ""
+"<center>Valor mínimo: <b>1 seg</b><br>Valor máximo: <b>3600 seg</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:96
+msgid "Ignored Requests"
+msgstr "Pedidos Ignorados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:97
+msgid "PING"
+msgstr "PING"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:98
+msgid "FINGER"
+msgstr "FINGER"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:99
+msgid "CLIENTINFO"
+msgstr "CLIENTINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:100
+msgid "USERINFO"
+msgstr "USERINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:101
+msgid "VERSION"
+msgstr "VERSION"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:102
+msgid "SOURCE"
+msgstr "SOURCE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:103
+msgid "TIME"
+msgstr "TIME"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:104
+msgid "PAGE"
+msgstr "PAGE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:105
+msgid "AVATAR"
+msgstr "AVATAR"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:106
+msgid "DCC/TDCC"
+msgstr "DCC/TDCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:131
+msgid "General Preferences"
+msgstr "Preferências Gerais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:134
+msgid "Theme Preferences"
+msgstr "Preferências do Tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:136
+msgid "KVIrc Preferences"
+msgstr "Preferências KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:139
+msgid ""
+"This dialog contains a set of KVIrc settings.<br> Use the icons on the left "
+"to navigate through the option pages. The text box in the bottom left corner "
+"is a small search engine. It will highlight the pages that contain options "
+"related to the search term you have entered."
+msgstr ""
+"Este diálogo contém um conjunto de definições KVirc.<br>Use os ícones à sua "
+"esquerda para navegar através das páginas de opções. A caixa de texto no "
+"canto esquerdo ao fundo é um pequeno motor de busca. Irá destacar as páginas "
+"que contenham opções relacionadas com a procura que tenha indicado."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:147
+msgid ""
+"Many settings have tooltips that can be shown by holding the cursor over "
+"their label for a few seconds."
+msgstr ""
+"Muitas definições têm dicas que podem ser mostradas ao apontar o cursor "
+"sobre o seu rótulo por alguns segundos."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:152
+msgid ""
+"When you have finished, click \"<b>OK</b>\" to accept your changes or "
+"\"<b>Cancel</b>\" to discard them. Clicking \"<b>Apply</b>\" will commit "
+"your changes without closing the window."
+msgstr ""
+"Quando tiver terminado, clique em \"<b>OK</b>\" para aceitar as suas "
+"alterações ou clique em \"<b>Cancelar</b>\" para as perder. Ao clicar em "
+"\"<b>Aplicar</b>\" irá aplicar as suas alterações sem fechar a janela."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:217
+msgid ""
+"<p>This is the search tool for this options dialog.</p><p>You can enter a "
+"search term either in your native language or in english and press the "
+"button on the right. The pages that contain some options related to the "
+"search term will be highlighted and you will be able to quickly find them.</"
+"p><p>Try \"nickname\" for example.</p>"
+msgstr ""
+"<p>Esta é a ferramenta de procura para este diálogo de opções.</p><p>Pode "
+"indicar um termo de procura na sua língua nativa ou em inglês e premir o "
+"botão à direita. As páginas que contenham algumas opções relacionadas com os "
+"termos de procura serão destacadas e irá poder encontrá-las facilmente.</"
+"p><p>Por exemplo tente \"alcunha\".</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:249
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:61
+msgid "Close this dialog, accepting all changes."
+msgstr "Fecha esta caixa de diálogo, aceitando todas as alterações."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:255
+msgid "&Apply"
+msgstr "&Aplicar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:256
+msgid "Commit all changes immediately."
+msgstr "Aplicar as alterações imediatamente."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:69
+msgid "Close this dialog, discarding all changes."
+msgstr "Fecha esta caixa de diálogo, rejeitando todas as alterações."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:149
+msgid ""
+"This table contains the text icon associations.<br>KVirc will use them to "
+"display the CTRL+I escape sequences and eventually the emoticons."
+msgstr ""
+"Esta tabela contém as associações texto ícone.<br>O KVirc irá usá-las para "
+"mostrar as sequências de escape CTRL+I e eventualmente as emoções."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:165
+msgid "Add"
+msgstr "Adicionar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:169
+msgid "Delete"
+msgstr "Apagar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:191
+msgid "unnamed"
+msgstr "Sem nome"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:53
+msgid "Enable word highlighting"
+msgstr "Activar destaque de palavras"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:55
+msgid "Words to highlight:"
+msgstr "Palavras a destacar:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:57
+msgid "Word splitters:"
+msgstr "Separador de palavras:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:59
+msgid "Highlight messages containing my nickname"
+msgstr "Destacar mensagens que contenham a minha alcunha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:61
+msgid ""
+"<center>If this option is enabled, KVIrc will highlight any user message "
+"containing your current nickname</center>"
+msgstr ""
+"<center>Se esta opção estiver activada, o KVirc irá destacar qualquer "
+"mensagem de utilizador que tenha a sua alcunha actual</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:63
+msgid "Flash the system taskbar entry on highlighted messages"
+msgstr "Piscar barra de tarefas do sistema nas mensagens destacadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:65
+msgid ""
+"<center>If this option is enabled, KVIrc will (attempt to) flash the system "
+"taskbar entry when a highlighted message is printed and KVIrc is not the "
+"active window</center>"
+msgstr ""
+"<center>Se esta opção estiver activada, o KVirc irá (tentar) piscar a barra "
+"de tarefas do sistema quando uma mensagem destacada é exibida e a janela do "
+"KVirc não está activa.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:67
+msgid "Popup the notifier window on highlighted messages"
+msgstr "Mostrar janela de notificação nas mensagens destacadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:69
+msgid ""
+"<center>If this option is enabled, KVIrc will popup a little notifier window "
+"in the low right corner of your desktop when a highlighted message is "
+"printed and KVIrc is not the active window</center>"
+msgstr ""
+"<center>Se esta opção estiver activada, o KVirc irá mostrar uma pequena "
+"janela de notificação no canto inferior direito do seu ecrã, quando uma "
+"mensagem destacada é exibida e a janela do KVirc não esta activa</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:91
+msgid "Alert Restrictions"
+msgstr "Restrições de Alerta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:92
+msgid "Restrict alert"
+msgstr "Alerta restrito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:94
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if a "
+"normal message is received in a channel.<br>Actions like joins, parts and "
+"mode changes will be ignored.<br> This is useful if you are in channels with "
+"a high rate of traffic and only want to be alerted for messages that are "
+"interesting to you.</center>"
+msgstr ""
+"<center>Se esta opção está activada, o KVirc irá alertar na barra de tarefas "
+"apenas se uma mensagem normal for recebida num canal.<br>Acções como entrar, "
+"partir e mudança de modos irão ser ignoradas.<br> Isto é útil se está em "
+"canais com uma taxa alta de tráfego e apenas quer ser alertado por mensagens "
+"que lhe interessam.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:96
+msgid "Alert for highlighted words"
+msgstr "Alerta para palavras destacadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:98
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which contain a word from the highlighted words list above.</center>"
+msgstr ""
+"<center>Se esta opção estiver activada, a barra de tarefas irá também "
+"alertar para mensagens que contenham uma palavra da lista de palavras "
+"destacadas.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:100
+msgid "Alert for query messages"
+msgstr "Alerta para mensagens nos privados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:102
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which are shown in queries.</center>"
+msgstr ""
+"<center>Se esta opção estiver activada, a barra de tarefas irá também "
+"alertar para as mensagens que são mostradas nos privados.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:107
+msgid "Use custom alert level"
+msgstr "Usar nível de alerta personalizado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:109
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if "
+"the specified alert level is reached.</center>"
+msgstr ""
+"<center>Se esta opção estiver activada, o KVirc irá alertar na barra de "
+"tarefas apenas se se chegar ao nível do alerta especificado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:111
+msgid "Minimum alert level:"
+msgstr "Nível de alerta mínimo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:114
+msgid ""
+"<center>This option sets the minimum alert level for the taskbar.</center>"
+msgstr ""
+"<center>Esta opção define o nível de alerta mínimo para a barra de tarefas.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:213
+msgid "Output verbosity"
+msgstr "Saída detalhada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:49
+msgid "Mute"
+msgstr "Mudo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:50
+msgid "Quiet"
+msgstr "Inactivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:51
+msgid "Normal"
+msgstr "Normal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:52
+msgid "Verbose"
+msgstr "Detalhado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:53
+msgid "Paranoic"
+msgstr "Paranóico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:59
+msgid "Show in active window"
+msgstr "Mostrar na janela activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:60
+msgid "External messages"
+msgstr "Mensagens externas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:61
+msgid "External CTCP replies"
+msgstr "Respostas CTCP externas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:62
+msgid "Whois replies"
+msgstr "Respostas whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:63
+msgid "ChanServ and NickServ notices"
+msgstr "Noticias Chanserv e Nickserv"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:64
+msgid "Invite messages"
+msgstr "Mensagens de convite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:65
+msgid "Server replies"
+msgstr "Respostas do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:66
+msgid "Server notices"
+msgstr "Noticias do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:67
+msgid "Broadcast and WALLOPS messages"
+msgstr "Mensagens de difusão e WALLOPS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:70
+msgid "Show extended server information"
+msgstr "Mostrar informações extendidas do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:71
+msgid "Show server pings"
+msgstr "Mostrar pings do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:72
+msgid "Show own parts in the console"
+msgstr "Mostrar as suas próprias saídas na consola"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:73
+msgid "Show compact mode changes"
+msgstr "Mostrar mudanças de modo compactas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:43
+msgid "Minimize on startup"
+msgstr "Minimizar no arranque"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:44
+msgid "Confirm quit with active connections"
+msgstr "Confirmar saída com conexões activas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:45
+msgid "Remember window properties"
+msgstr "Lembrar propriedades da janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:50
+msgid "Disable splash screen"
+msgstr "Desactivar ecrã de arranque"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:54
+msgid "Enable visual effects"
+msgstr "Activar efeitos visuais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:55
+msgid "Hide Channel window tool buttons by default"
+msgstr "Esconder botões da barra da janela do canal por predefinição"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:57
+msgid "Open Dialog Window For"
+msgstr "Abrir Janela de Diálogo Para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:58
+msgid "Preferences"
+msgstr "Preferências"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:59
+msgid "Registered Users"
+msgstr "Utilizadores Registados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:149
+msgid "Servers"
+msgstr "Servidores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.cpp:40
+msgid ""
+"This section contains irc tools<br><p>like<b> away, lag and logging system. "
+"</b> </p>"
+msgstr ""
+"Esta secção contém ferramentas irc<br><p>como<b> ausência, lag e sistema de "
+"registos.</b></p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:39
+msgid "On Disconnect"
+msgstr "Ao Desconectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:42
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:55
+msgid "Keep channels open"
+msgstr "Manter canais abertos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:44
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after disconnect."
+"</center>"
+msgstr ""
+"<center>Esta opção irá fazer com que o KVirc mantenha os canais abertosapós "
+"desconectar.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:47
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:60
+msgid "Keep queries open"
+msgstr "Manter privados abertos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:49
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after disconnect.</"
+"center>"
+msgstr ""
+"<center>Esta opção irá fazer com que o KVIrc mantenha os privados abertos "
+"após desconectar.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:52
+msgid "On Unexpected Disconnect"
+msgstr "Ao Desconectar Inesperadamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+"<center>Esta opção irá fazer com que o KVirc mantenha os canais abertos após "
+"uma desconexão inesperada.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:62
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+"<center>Esta opção irá fazer com que o KVIrc mantenha os privados abertos "
+"após uma desconexão inesperada.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:65
+msgid "Rejoin channels after reconnect"
+msgstr "Reentrar nos canais após reconectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:67
+msgid ""
+"<center>This option will cause KVIrc to rejoin channels after a successful "
+"reconnect attempt.</center>"
+msgstr ""
+"<center>Esta opção irá fazer com que o KVIrc reentre nos canais após uma "
+"nova tentativa de conexão bem sucedida.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:69
+msgid "Reopen queries after reconnect"
+msgstr "Reabrir privados após reconectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to reopen query windows after a "
+"successful reconnect attempt.</center>"
+msgstr ""
+"<center>Esta opção irá fazer com que o KVIrc reabra as janelas de privados "
+"após uma nova tentativa de conexão bem sucedida.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:75
+msgid "Automatically reconnect"
+msgstr "Reconectar automaticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:77
+msgid ""
+"<center>This option will enable auto-reconnecting after an unexpected "
+"disconnect. An unexpected disconnect is the <b>termination</b> of a <b>fully "
+"connected IRC session</b> that was <b>not requested by the user</b> by the "
+"means of the QUIT message.<p><b>Warning:</b> If you use /RAW to send a QUIT "
+"message to the server, this option will not behave correctly, since does not "
+"detect the outgoing QUIT message and will attempt to reconnect after the "
+"server has closed the connection. For this reason, always use the /QUIT "
+"command to close your connections. This option may also behave incorrectly "
+"with bouncers that support detaching, in this case a solution could be to "
+"prepare an alias that sends the bouncer \"detach\" command immediately "
+"before the \"quit\" command.<br><tt>alias(bncdetach){ raw bouncer detach; "
+"quit; }</tt></p></center>"
+msgstr ""
+"<center>Esta opção activa a auto-reconexão após uma desconectar inesperada. "
+"Uma desconexão inesperada é o <b>fim</b> de uma<b> sessão IRC activa</b> que "
+"não foi <b>pedida pelo utilizador</b> através de uma mensagem QUIT. "
+"<p><b>Aviso:</b> se usar /RAW para enviar uma mensagem QUIT para o servidor, "
+"esta opção não será feita correctamente, isto porque não detecta a saída de "
+"uma mensagem QUIT e tenta reconectar após o servidor fechar a ligação. Por "
+"esta razão, use sempre o comando /QUIT para fechar as suas ligações. Esta "
+"opção também pode ter um comportamento incorrecto com 'bouncers' que "
+"suportem desanexamento, neste caso a solução pode passar por preparar uma "
+"'alias' que envie o comando \"detach\" do 'bouncer' imediatamente antes do "
+"comando \"quit\". <br><tt>alias(bncdetach){ raw bouncer detach; quit; }</"
+"tt></p></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:89
+msgid "Maximum attempts (0: unlimited):"
+msgstr "Número máximo de tentativas (0: ilimitado):"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:94
+msgid "Delay between attempts:"
+msgstr "Atraso entre tentativas:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:100
+msgid ""
+"<center>Minimum value: <b>0 sec</b><br>Maximum value: <b>86400 sec</b></"
+"center>"
+msgstr ""
+"<center>Valor mínimo: <b>0 seg</b><br>Valor máximo: <b>86400 seg</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:123
+msgid "Certificate"
+msgstr "Certificar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:125
+msgid "Use SSL certificate (PEM format only)"
+msgstr "Usar certificado SSL (apenas formato PEM)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:127
+msgid "Certificate location:"
+msgstr "Certificar localização:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:130
+msgid "Certificate password:"
+msgstr "Certificar senha:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:134
+msgid "Private Key"
+msgstr "Chave Privada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:135
+msgid "Use SSL private key"
+msgstr "Usar chave SSL privada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:137
+msgid "Private key location:"
+msgstr "Localização da chave privada:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:140
+msgid "Private key password:"
+msgstr "Chave privada da senha:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:146
+msgid "This executable has no SSL support."
+msgstr "Este executável não tem suporte SSL."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:165
+msgid "Timeout Values"
+msgstr "Valores do Limite de Tempo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:166
+msgid "Connect timeout:"
+msgstr "Tempo limite da ligação:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:168
+msgid "Outgoing data queue flush timeout:"
+msgstr "Tempo limite da saída de dados em fila:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:170
+msgid "Limit outgoing traffic"
+msgstr "Limitar saída de tráfego"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:171
+msgid "Limit to 1 message every:"
+msgstr "Limitar para 1 mensagem todos os:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:173
+msgid " usec"
+msgstr " useg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:175
+msgid ""
+"<center>Minimum value: <b>10000 usec</b><br>Maximum value: <b>10000000 usec</"
+"b></center>"
+msgstr ""
+"<center>Valor mínimo: <b>10000 usec</b><br>Valor máximo: <b>10000000 usec</"
+"b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:179
+msgid "Network Interfaces"
+msgstr "Interfaces de Rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:181
+msgid "Bind IPv4 connections to:"
+msgstr "Juntar ligações IPv4 para:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:185
+msgid "Bind IPv6 connections to:"
+msgstr "Juntar ligações IPv6 para:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:210
+msgid "Enable ident service (bad practice on UNIX!)"
+msgstr "Activar serviço de identificação (não recomendado em UNIX)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:216
+msgid "Output identd messages to:"
+msgstr "Mostrar mensagens 'identd' para:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:218
+msgid "Active window"
+msgstr "Janela activa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:219
+msgid "Console"
+msgstr "Consola"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:220
+msgid "Do not show any identd messages"
+msgstr "Não mostrar qualquer mensagens 'identd'"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:237
+msgid "Enable ident service only while connecting to server"
+msgstr "Activar serviço de identidade apenas ao conectar no servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:240
+msgid "Ident username:"
+msgstr "Identificação do utilizador:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:243
+msgid "Service port:"
+msgstr "Porta de serviço:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:248
+msgid "IPv6 Settings"
+msgstr "Configurações IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:249
+msgid "Enable service for IPv6"
+msgstr "Activar serviço para IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:258
+msgid "IP stack treats IPv4 as part of IPv6 namespace"
+msgstr "Os endereços IP tratam o IPv4 como parte do nome IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:265
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications. If it is possible, install a real ident daemon.</p>"
+msgstr ""
+"<p><b>Aviso:</b><br>Isto é um <b>serviço de identificação (daemon ident) </"
+"b>não RFC 1413 complacente que implementa apenas um subgrupo de "
+"especificações do Protocolo de Identificação. Se possível, instale um "
+"serviço de identificação real.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:270
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications.<br>On UNIX, you may also need root privileges to bind to the "
+"auth port (113).<br>It is <b>highly recommended</b> that a <b>real</b> "
+"system-wide ident daemon be used instead, or none at all if ident is not "
+"required.</p>"
+msgstr ""
+"<p><b>Aviso:</b><br>Isto é um serviço de identificação (daemon ident) <b>não "
+"RFC 1413 complacente</b> que implementa apenas um limite de subdefinições "
+"das especificações do Protocolo de Identificação. <br>Em UNIX, pode também "
+"precisar de privilégios root para ligar à porta de autenticação (113).<br>É "
+"<b>altamente recomendado</b> que um servidor de identificação <b>real</b> do "
+"sistema geral seja usado, ou nenhum se o identificador não é pedido.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.cpp:39
+msgid ""
+"This section contains the general client options<br><p>like<b> sound, "
+"mediafiles, URL handler </b> etc... </p>"
+msgstr ""
+"Esta secção contém as opções gerais do cliente irc<br><p>como<b> som, "
+"ficheiros multimédia, gestores URL, </b>etc...</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:39
+msgid "Automatically Log"
+msgstr "Registar Automaticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:40
+msgid "Query windows"
+msgstr "Janelas de privados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:41
+msgid "Channel windows"
+msgstr "Janelas de canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:42
+msgid "DCC Chat windows"
+msgstr "Janelas DCC Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:43
+msgid "Console windows"
+msgstr "Janelas de consola"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:45
+msgid "Gzip logs"
+msgstr "Registos gzip"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:47
+msgid "Strip colors in logs"
+msgstr "Remover cores dos registos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:48
+msgid "Auto flush logs every"
+msgstr "Auto esvaziar registos a todos os"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:49
+msgid " min"
+msgstr " minutos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:52
+msgid ""
+"<center>Save logs with the current interval<br>Set to 0 to disable this "
+"feature</center>"
+msgstr ""
+"<center>Grava os registos com o intervalo de tempo actual<br>Defina para 0 "
+"para desactivar esta opção</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:49
+msgid "Minimize console after successful login"
+msgstr "Minimizar consola após autenticação com sucesso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:52
+msgid ""
+"<center>This option will cause KVIrc to minimize the console window after "
+"successfully logging into a server.</center>"
+msgstr ""
+"<center>Esta opção irá fazer com que o KVirc minimize a janela da consola "
+"após autenticação com sucesso num servidor.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:55
+msgid "Show network name in console taskbar entry"
+msgstr "Mostrar nome da rede na barra de tarefas da consola"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to show the network name as the console "
+"taskbar entry instead of the server name. This is nice to keep on unless "
+"your servers are not organized in networks or you often connect to two "
+"servers of the same network.</center>"
+msgstr ""
+"<center>Esta opção irá fazer com que o KVirc mostre o nome da rede como na "
+"entrada da barra de tarefas da consola em vez de mostrar o nome do servidor. "
+"É bom manter esta opção a não ser que os seus servidores não estejam "
+"organizados em redes ou geralmente se conecta a dois servidores da mesma "
+"rede.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:75
+msgid "Force immediate quit"
+msgstr "Forçar saída imediata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:78
+msgid ""
+"<center>This option causes KVIrc to close the connection immediately after "
+"sending the QUIT message.<br>When this option is disabled, KVIrc will wait "
+"for the server to close the connection.<br>Note that if you use this, your "
+"QUIT message may be not displayed.</center>"
+msgstr ""
+"<center>Esta opção faz com que o KVirc feche a conexão imediatamente após "
+"enviar a mensagem QUIT.<br>Quando esta opção está desactivada, o KVirc irá "
+"esperar que o servidor feche a conexão.</br>Note que a mensagem de QUIT pode "
+"não ser mostrada.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:84
+msgid "Prepend gender info to realname"
+msgstr "Adicionar informação acerca do género ao nome real"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:110
+msgid "On Channel Kick"
+msgstr "Ao Ser Expulso do Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:112
+msgid "Rejoin channel"
+msgstr "Reentrar no canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:115
+msgid ""
+"<center>This option will cause KVIrc to attempt to rejoin a channel after "
+"being kicked.</center>"
+msgstr ""
+"<center>Esta opção faz com que o KVirc tente reentrar num canal após ter "
+"sido expulso.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:129
+msgid "Keep channel open"
+msgstr "Manter janela do canal aberta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:121
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"being kicked.<br>It might be a good idea to also enable the \"Rejoin channel"
+"\" option.</center>"
+msgstr ""
+"<center>Esta opção faz com que o KVirc mantenha a janela do canal aberta "
+"depois de ter sido expulso.<br>Pode ser também uma boa ideia activar a opção"
+"\"Reentrar no canal\".</br></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:127
+msgid "On Channel Part"
+msgstr "Ao Sair do Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:132
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"leaving it.</center>"
+msgstr ""
+"<center>Esta opção irá fazer com que o KVirc mantenha a janela do canal "
+"aberta depois de a deixar.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:136
+msgid "Automatically join channel on invite"
+msgstr "Automaticamente entrar no canal quando convidado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:139
+msgid ""
+"<center>This option will cause KVIrc to automatically join a channel when an "
+"INVITE message for that channel is received.<br><b>Warning:</b> This may "
+"help spammers harass you. :)</center>"
+msgstr ""
+"<center>Esta opção faz com que o KVirc automaticamente entre num canal "
+"quando uma mensagem de CONVITE para esse canal é recebida.<br><b>Aviso:</"
+"b>Isto pode ajudar ou fazer com que alguns spammers o chateiem. :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:144
+msgid "Always open channels as minimized"
+msgstr "Abrir sempre os canais como minimizados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:148
+msgid ""
+"<center>This option causes newly created channel windows to be immediately "
+"minimized.<br>Enable this if you don't like channels popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+"<center>Esta opção faz com que as janelas dos novos canais criados sejam "
+"imediatamente minimizadas.<br>Active esta opção se não quer janelas de "
+"canais a aparecerem enquanto digita algo num canal. :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:168
+msgid "Log joined channels history"
+msgstr "Registar histórico de canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:170
+msgid "Default ban mask:"
+msgstr "Máscara de banir predefinida:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:188
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:202
+msgid "On Channel Join"
+msgstr "Ao Entrar num Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:189
+msgid "Do not send /WHO request"
+msgstr "Não enviar pedido /WHO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:190
+msgid "Do not request ban list"
+msgstr "Não pedir lista de banimentos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:191
+msgid "Do not request ban exception list"
+msgstr "Não pedir lista com excepções de banimentos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:192
+msgid "Do not request invite list"
+msgstr "Não pedir lista de convites"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:194
+msgid "Do not update the away list"
+msgstr "Não actualizar a lista de ausência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:197
+msgid ""
+"<center>KVIrc sends out a channel /WHO message every now and then to keep "
+"the channel away list in sync. Use this option to disable this feature (and "
+"to save your IRC bandwidth.</center>"
+msgstr ""
+"<center>O KVirc envia uma mensagem /WHO a um canal sempre que necessário "
+"para manter a lista de ausências sincronizada. Use este protocolo para "
+"desactivar esta opção (e para poupar a sua largura de banda IRC.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:203
+msgid "Echo channel topic"
+msgstr "Mostrar tópico do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:204
+msgid "Show channel sync time"
+msgstr "Mostrar hora de sincronização do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:40
+msgid "Default text encoding:"
+msgstr "Codificação padrão do texto:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:109
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:133
+msgid "Use Language Encoding"
+msgstr "Usar Codificação da Linguagem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:59
+msgid "Force language:"
+msgstr "Forçar linguagem:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:65
+msgid "<b>Note:</b> You need to restart KVirc to apply a language changing"
+msgstr ""
+"<b>Nota:</b> Precisa reiniciar o KVirc para aplicar a mudança de língua"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:68
+msgid "Automatic detection"
+msgstr "Detecção automática"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:69
+msgid "en"
+msgstr "en"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Unable to write language information to"
+msgstr "Não é possível escrever informação da língua para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:39
+msgid "Enable Anti-spam For"
+msgstr "Activar Anti-spam Para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:45
+msgid "Silent anti-spam (no warnings)"
+msgstr "Anti-spam Silencioso (sem avisos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:46
+msgid "Words considered spam:"
+msgstr "Palavras consideradas spam:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:51
+msgid "Use workaround for firewall"
+msgstr "Usar Método para Firewall"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:54
+msgid ""
+"<center>Enable this option if you can't accept incoming connections."
+"<br>KVIrc will try to use different methods to send and receive files."
+"<br>Please note that these methods may NOT work when communicating with a "
+"non-KVIrc client.</center>"
+msgstr ""
+"<center>Active esta opção se não consegue aceitar envíos.<br>O KVirc irá "
+"tentar usar diferentes métodos para enviar e receber ficheiros.<br>Note que "
+"estes métodos podem NÃO funcionar quando estiver a comunicar com "
+"utilizadores que usem outros clientes que não o KVirc.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:73
+msgid "Network Properties"
+msgstr "Propriedades da Rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:75
+msgid "Use user-defined address or network interface"
+msgstr "Usar endereço definido de utilizador ou um interface de rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:79
+msgid ""
+"<center>Enable this option if you are on a multihost machine and want to "
+"force one of the available IP addresses to be used for outgoing DCCs."
+"<br>This is especially useful when you use IPv6 and IPv4 addresses.<br>You "
+"can force KVIrc to always choose the IPv4 interface.</center>"
+msgstr ""
+"<center>Active esta opção se está numa máquina com multi-endereços e deseja "
+"forçar um dos endereços IP disponíveis a ser usado para envíos DCC.<br>Isto "
+"é especialmente usado quando usa um endereço IPv6 ou IPv4. <br>Pode forçar o "
+"KVirc para escolher sempre um interface IPv4.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:84
+msgid "Listen on address/interface:"
+msgstr "Escutar num endereço/interface:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:87
+msgid ""
+"<center>This is the IP address or name of the interface to use by default "
+"for outgoing DCC transfers.<br>On UNIX systems that support it, you can also "
+"specify IPv4 interface names (such as <b>ppp0</b>).<br>If you set it to "
+"<b>0.0.0.0</b>, KVIrc will try to use the first available IPv4 interface</"
+"center>"
+msgstr ""
+"<center>Este é o endereço IP ou nome de interface a ser usado por omissão "
+"para transferências de envíos DCC. <br>Em sistemas UNIX que o suportam, "
+"também pode especificar nomes de interfaces IPv4 (tais como <b>ppp0</b>)."
+"<br>Se o definir para <b>0.0.0.0</b>, o KVirc irá tentar usar o primeiro "
+"interface IPv4 disponível.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:94
+msgid "Use user-defined port range"
+msgstr "Usar o alcance definido da porta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:97
+msgid ""
+"<center>Enable this option if you want specify a local port range for DCC.</"
+"center>"
+msgstr ""
+"<center>Active esta opção se quiser especificar um alcance de porta local "
+"para DCC.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:102
+msgid "Lowest port:"
+msgstr "Porta mais baixa:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:105
+msgid "Highest port:"
+msgstr "Porta mais alta:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:108
+msgid "Send a fixed address in requests"
+msgstr "Enviar um endereço fixo nos pedidos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:111
+msgid ""
+"<center>Enable this option if you want to always send a fake IP address in "
+"your DCC requests.<br>This might be useful if you're behind a router with a "
+"static address that does network address translation (NAT) and forwards all "
+"or a range of ports.</center>"
+msgstr ""
+"<center>Active esta opção se quiser enviar sempre um falso endereço IP nos "
+"seus pedidos DCC. <br>Isto pode ser útil se estiver atrás de um router com "
+"um endereço estático que faz traduções de endereços de rede (NAT) e adianta "
+"todas ou apenas uma extensão de portas.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:115
+msgid "Send address/interface:"
+msgstr "Enviar endereço/interface:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:119
+msgid ""
+"<center>This is the fixed address that will be sent with all DCC requests if "
+"you enable the option above.</center>"
+msgstr ""
+"<center>Este é o endereço fixo que será enviado a todos os pedidos DCC se "
+"activar esta opção.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:123
+msgid "Guess address from IRC server if unroutable"
+msgstr "Adivinhar o endereço do servidor IRC se fora de alcance"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:128
+msgid ""
+"<center>You can enable this option if you are behind a router that forwards "
+"all or a range of ports.<br>KVIrc will try to guess the IP address to use "
+"for DCC by looking up the local hostname as seen by the IRC server you're "
+"connected to.<br>This method is an exclusive alternative to the \"fixed "
+"address\" above.<br>It might guess the correct address automatically if "
+"certain conditions are met (e.g. the IRC server does not mask hostnames).</"
+"center>"
+msgstr ""
+"<center>Pode activar esta opção se está atrás de um router que envia tudo ou "
+"um intervalo de portas.<br>O KVirc irá tentar adivinhar o endereço IP a usar "
+"para DCC ao procurar o nome do servidor local como visto pelo servidor IRC "
+"onde está conectado.<br>Este método é uma alternativa exclusiva ao "
+"\"endereço fixo\" indicado.<br>Pode adivinhar automaticamente o endereço "
+"correcto se se verificarem certas condições(por ex: o servidor IRC não "
+"máscara os nomes dos servidores).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:134
+msgid "Use \"broken bouncer hack\" to detect address"
+msgstr "Usar \"broken bouncer hack\" para detectar endereços"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:137
+msgid ""
+"<center>When you're behind a dialup router and also tunneling through a "
+"psyBNC bouncer, you can use a bug in the bouncer to force KVIrc to bind the "
+"DCC connections to the dialup router's address.<br>It's an ugly hack - use "
+"it only if nothing else works.</center>"
+msgstr ""
+"<center>Quando está atrás de um router que se conecta por modem telefónico, "
+"e também passar através de um bouncer psyBNC, pode usar um erro no bouncer "
+"para forçar o KVirc a juntar as ligações DCC ao endereço do modem onde o "
+"router se liga.<br>É um hack feio, use-o apenas se mais nada resultar.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:144
+msgid "Notify failed DCC handshakes to the remote end"
+msgstr "Notificação falhada na negociação DDC com a máquina remota"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:147
+msgid ""
+"<center>If you enable this option, when a DCC request from a remote user "
+"can't be satisfied KVIrc will notify him by a CTCP ERRMSG. This is a nice "
+"feature so it is a good idea to leave it on unless for some reason you have "
+"deactivated the antiflood system: in this case turning off this option might "
+"help if you often get attacked by CTCP floods.</center>"
+msgstr ""
+"<center>Se activar esta opção, quando um pedido DCC de um utilizador remoto "
+"não pode ser satisfeito, o KVirc irá notificá-lo por um CTCP ERRMSG. Esta é "
+"uma boa opção, então é bom deixá-la activada, a não ser que por alguma razão "
+"tenha desactivado o sistema anti-flood: nesse caso será melhor desligar a "
+"opção, pois poderá ajudar se costuma ser atacado por floods CTCP.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:154
+msgid "Maximum number of DCC sessions"
+msgstr "Número máximo de sessões DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:156
+msgid ""
+"<center>This is the maximum number of concurrent DCC sessions and it "
+"includes all the DCC types (send,chat,recv...). KVIrc will refuse the "
+"requests when this limit is reached.</center>"
+msgstr ""
+"<center>Este é o número máximo de sessões DCC concorrentes e contém todos os "
+"tipos de DCC (send,chat,recv...). O KVirc irá recusar os pedidos quando este "
+"limite for alcançado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:161
+msgid "DCC socket timeout:"
+msgstr "Tempo limite para DCC Socket:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:164
+msgid ""
+"<center>This is the amount of time that KVIrc will wait for a response "
+"before assuming that a DCC has failed because the remote client was unable "
+"to connect to our listening socket.</center>"
+msgstr ""
+"<center>Este é o tempo que o KVirc irá esperar por uma resposta antes de "
+"assumir que o DCC falhou devido ao cliente remoto não ter conseguido "
+"conectar-se ao nosso socket de escuta.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:198
+msgid "On Incoming File"
+msgstr "Em Ficheiro Enviado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:371
+msgid "Automatically accept"
+msgstr "Aceitar automaticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:200
+msgid "Open transfer window as minimized when auto-accepted"
+msgstr "Abrir janela de transferência como minimizada quando auto-aceite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:201
+msgid "Automatically resume when auto-accepted"
+msgstr "Resumir automaticamente quando auto-aceite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:203
+msgid "Save Location"
+msgstr "Gravar Localização"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:204
+msgid "Download folder:"
+msgstr "Pasta de Transferências:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:205
+msgid "Sort saved files by nicknames (create subfolders)"
+msgstr "Ordenar ficheiros gravados por alcunhas (criar subpastas)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:206
+msgid "Guess save path from media type"
+msgstr "Adivinhar localização de gravação pelo tipo de média"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:209
+msgid "On Download Completion"
+msgstr "Ao Terminar a Transferência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:210
+msgid "Notify completion in console"
+msgstr "Notificar finalização na consola"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:211
+msgid "Notify completion in notifier"
+msgstr "Notificar finalização no notificador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:212
+msgid "Automatically clear transfer"
+msgstr "Limpar transferência automaticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:215
+msgid ""
+"<center>This option will cause succesfully terminated transfers to be "
+"automatically removed from the transfer window.</center>"
+msgstr ""
+"<center>Esta opção faz com que as trasnferências terminadas sejam "
+"automaticamente removidas da janela de transferência.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:220
+msgid "Always open transfer window as minimized"
+msgstr "Abrir sempre janela de transferência minimizada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:238
+msgid "Bug Compatibility"
+msgstr "Compatibilidade de Erros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:239
+msgid "Send ACK for byte 0"
+msgstr "Enviar ACK por byte 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:242
+msgid ""
+"<center>This option causes KVIrc to send a zero-byte acknowledge to kick-"
+"start the DCC transfer with some buggy IRC clients.<br>Use it only if your "
+"DCC transfers stall just after establishing a connection without sending any "
+"data.</center>"
+msgstr ""
+"<center>Esta opção faz com que o KVirc envie um reconhecimento zero-byte "
+"para responder/iniciar as transferências DCC com alguns clientes IRC com "
+"erros.<br>Use-o apenas se a sua transferência DCC parar logo a seguir a "
+"estabelecer uma conexão sem enviar quaisquer dados.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:247
+msgid "Accept broken RESUME (mIRC file.ext)"
+msgstr "Aceitar RESUMO danificado (ficheiro.ext mIRC)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:250
+msgid ""
+"<center>This option causes KVIrc to accept RESUME requests with invalid "
+"filenames.<br>Use it if KVIrc fails to accept RESUME requests from other "
+"clients (e.g. some versions of mIRC).</center>"
+msgstr ""
+"<center>Esta opção faz com que o KVirc aceite pedidos RESUME com ficheiros "
+"inválidos.<br>Use-o se o KVirc falhar ao aceitar o pedido RESUME de outros "
+"clientes (p.ex: outras versões do mIRC).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:254
+msgid "Replace spaces with underscores in outgoing filenames"
+msgstr ""
+"Substituir espaços por traços 'underscore' nos nomes de ficheiros a sair"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:257
+msgid ""
+"<center>This option causes KVIrc to replace spaces with underscores in "
+"filenames for all the outgoing file transfers. This will fix filename "
+"handling with some buggy clients (e.g. some versions of mIRC)."
+msgstr ""
+"<center>Esta opção faz com que o KVirc substitua espaços por traços "
+"'underscore' nos nomes de ficheiros para todas as transferências de saída. "
+"Isto irá corrigir o tratamento de nomes de ficheiros com alguns clientes que "
+"não o aceitam (p.ex. algumas versões do mIRC)."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:262
+msgid "Limits"
+msgstr "Limites"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:265
+msgid "Limit upload bandwidth to"
+msgstr "Limite de largura de banda para envios"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:273
+msgid "bytes/sec"
+msgstr "bytes/seg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:271
+msgid "Limit download bandwidth to"
+msgstr "Limite de largura de banda para transferências"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:277
+msgid "Maximum number of DCC transfers"
+msgstr "Número máximo de transferências DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:279
+msgid ""
+"<center>This is the maximum number of concurrent DCC transfers. KVIrc will "
+"refuse the requests when this limit is reached.</center>"
+msgstr ""
+"<center>Este é o número máximo de transferências DCC concorrentes. O KVirc "
+"irá recusar os pedidos quando este limite é alcançado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:283
+msgid "Tweaks"
+msgstr "Melhoramentos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:285
+msgid "Use fast send (send ahead)"
+msgstr "Usar envio rápido (enviar à frente)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:288
+msgid ""
+"<center>The \"send ahead\" DCC method allows data to be sent faster by "
+"breaking some of the rules of the original DCC SEND protocol specification."
+"<br>Most clients can handle this kind of optimisation so disable it only if "
+"you have problems.</center>"
+msgstr ""
+"<center>O método DCC \"enviar em primeiro\" permite que os dados sejam "
+"enviados rápidamente ao quebrar algumas das regras do protocolo DCC SEND "
+"original.<br>Muitos clientes conseguem gerir este tipo de optimização, então "
+"desactive-o apenas se tiver problemas.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:295
+msgid "Force idle step"
+msgstr "Forçar passo inactivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:298
+msgid ""
+"<center>Enable this option when the dcc file transfers tend to block your "
+"computer by consuming too much CPU time. When this option is enabled the "
+"idle interval below will be forcibly inserted between each sent/received "
+"data packet.</center>"
+msgstr ""
+"<center>Active esta opção quando a transferência de ficheiros por DCC tende "
+"a bloquear o seu computador ao consumir demasiado tempo de CPU. Quando esta "
+"opção está activada o intervalo de inactividade em baixo será forçosamente "
+"inserido entre os pacotes de dados enviados/recebidos.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:310
+msgid ""
+"<center>This parameter controls the average delay between two packets sent "
+"or received.<br>A smaller interval will cause you to send data faster but "
+"will also add load to your CPU, disk and network interface.<br>Reasonable "
+"values are from 5 to 50 milliseconds.</center>"
+msgstr ""
+"<center>Este parâmetro controla a média de atraso entre dois pacotes "
+"enviados ou recebidos.<br>Um intervalo mais pequeno faz com que dados sejam "
+"enviados mais rápidamente mas também adiciona carga ao CPU, o disco e "
+"interface da rede.<br>Valores razoáveis vão de 5 a 50 milisegundos.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:316
+msgid "Packet size:"
+msgstr "Tamanho do pacote:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:320
+msgid ""
+"<center>This parameter controls the packet size used for DCC SEND.<br>With "
+"bigger packets you will be probably send data faster, but you will also "
+"saturate your bandwidth and in some cases cause more disk activity."
+"<br>Reasonable values are from 512 to 4096 bytes.</center>"
+msgstr ""
+"<center>Este parâmetro controla o tamanho do pacote usado para DCC SEND. "
+"<br>Com pacotes maiores irá provavelmente enviar dados rapidamente, mas irá "
+"também saturar a largura de banda e em alguns casos causar mais actividade "
+"no disco.<br>Os valores razoáveis vão de 512 a 4096 bytes.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:349
+msgid "On Chat Request"
+msgstr "No Pedido de Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:351
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:373
+msgid "Open minimized when auto-accepted"
+msgstr "Abrir minimizado quando auto-aceite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:353
+msgid "Always open as minimized"
+msgstr "Abrir sempre como minimizado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:369
+msgid "Open all minimized"
+msgstr "Abrir todos minimizados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:370
+msgid "On Voice Request"
+msgstr "No Pedido de Voz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:376
+msgid "Force half-duplex mode on sound device"
+msgstr "Forçar modo half-duplex no dispositivo de som"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:377
+msgid "Volume slider controls PCM, not Master"
+msgstr "Controlos de volume PCM, não Master"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:379
+msgid "Sound device:"
+msgstr "Dispositivo de som:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:380
+msgid "Mixer device:"
+msgstr "Dispositivo misturador:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:382
+msgid "Pre-buffer size:"
+msgstr "Tamanho pre-buffer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:38
+msgid "Enable Ignore For"
+msgstr "Activar Ignore Para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:39
+msgid "Private/channel messages"
+msgstr "Mensagens Privadas/Canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:40
+msgid "Private/channel notices"
+msgstr "Noticias Privadas/Canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:44
+msgid "Use verbose ignore (show messages in console)"
+msgstr "Usar ignorar detalhado (mostrar mensagens na consola)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:46
+msgid "Sound System"
+msgstr "Sistema de Som"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:66
+msgid "This allows you to select the sound system to be used with KVIrc."
+msgstr "Isto permite-lhe seleccionar o som do sistema a ser usado no KVirc."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:72
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:88
+msgid "Auto-detect"
+msgstr "Auto detectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:91
+msgid "Test"
+msgstr "Teste"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:79
+msgid "Media Player"
+msgstr "Leitor Multimédia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:81
+msgid ""
+"This allows you to select the preferred media player to be used with the "
+"mediaplayer.* module commands and functions."
+msgstr ""
+"Isto permite-lhe seleccionar o leitor de multimédia preferido a ser usado "
+"com os comandos e funções do módulo mediaplayer.*."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:102
+msgid "ID3 tags' encoding"
+msgstr "Codificação das marcas ID3"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:104
+msgid "This allows you to select encoding of mp3 tags."
+msgstr "Isto permite-lhe seleccionar a codificação das marcas mp3."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:125
+msgid "Winamp messages ecoding"
+msgstr "Codificação de mensagens winamp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:127
+msgid "This allows you to select encoding of winamp messages."
+msgstr "Isto permite-lhe seleccionar a codificação das mensagens winamp."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:290
+msgid "New Query opened"
+msgstr "Novo privado aberto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:293
+msgid "New message in inactive query"
+msgstr "Nova mensagem em privado inactivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:296
+msgid "Highlighted message in inactive window"
+msgstr "Mensagem destacada em janela inactiva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:299
+msgid "Me have been kicked"
+msgstr "Fui expulso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:39
+msgid "Selection background color"
+msgstr "Seleccionar cor de fundo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:40
+msgid "Selection foreground color"
+msgstr "Seleccionar cor de primeiro plano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:41
+msgid "Control char color"
+msgstr "Controlar cor dos caracteres"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:42
+msgid "Cursor color"
+msgstr "Cor do Cursor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:141
+msgid "Warp cursor at the end of line when browsing history"
+msgstr "Mover cursor para o final da linha quando navegar pelo histórico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:142
+msgid "Disable the input history window and it's log memory."
+msgstr "Desactivar janela do histórico e o seu registo de memória."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:143
+msgid "Hide input toolbuttons by default"
+msgstr "Esconder entrada de botões na barra por predefinição"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:144
+msgid "Nick completion"
+msgstr "Completação da alcunha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:145
+msgid "Use bash-like nick completion"
+msgstr "Usar completação tipo bash da alcunha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:146
+msgid "Nick completion postfix string"
+msgstr "Testo de sufixo para completar a alcunha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:147
+msgid "Use the completion postfix string for the first word only"
+msgstr "Usar texto de sufixo para completar apenas para a primeira palavra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:148
+msgid "Commandline in user-friendly mode by default"
+msgstr "Linha de comandos em modo amigável por predefinição"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:81
+msgid "Show message icons"
+msgstr "Mostrar ícones das mensagens"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:82
+msgid "Draw some emoticons (smileys) as pictures"
+msgstr "Desenhar algumas emoções (sorrisos) como imagens"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:83
+msgid "Don't show colors in user messages"
+msgstr "Não mostrar cores nas mensagens de utilizadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:88
+msgid "Nicknames"
+msgstr "Alcunhas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:90
+msgid "\"Smart\" nickname colors"
+msgstr "Cores de alcunhas \"Inteligentes\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:91
+msgid "Use same colors as in the userlist"
+msgstr "Usar as mesmas cores como na lista de utilizadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:93
+msgid "Show nicknames in bold"
+msgstr "Mostrar alcunhas a negrito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:94
+msgid "Show user and host"
+msgstr "Mostrar utilizador e endereço"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:95
+msgid "Show channel mode prefix"
+msgstr "Mostrar prefixo do modo do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:96
+msgid "User-defined prefix and postfix"
+msgstr "Prefixo e sufixo definidos pelo utilizador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:98
+msgid "[PREFIX]nickname[!user@host][POSTFIX] message"
+msgstr "[PREFIXO]alcunha[!utilizador@endereço][SUFIXO] mensagem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:112
+msgid "Prefix:"
+msgstr "Prefixo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:117
+msgid "Postfix:"
+msgstr "Sufixo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:131
+msgid "Show timestamp"
+msgstr "Mostrar marcação horária"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:134
+msgid "Use UTC time for timestamp"
+msgstr "Usar hora UTC nas horas das mensagens"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:141
+msgid "Use special color for timestamps"
+msgstr "Usar cor especial nas horas das mensagens"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:147
+msgid "Timestamp format:"
+msgstr "Formato horário:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:320
+msgid "Transparent"
+msgstr "Transparente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:401
+msgid "Message Type"
+msgstr "Tipo de Mensagem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:417
+msgid "Background:"
+msgstr "Fundo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:426
+msgid "Foreground:"
+msgstr "Primeiro plano:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:434
+msgid "Alert level:"
+msgstr "Nível de alerta:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:454
+msgid "Log this"
+msgstr "Registar isto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:458
+msgid "Load From..."
+msgstr "Carregar De..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:460
+msgid "Save As..."
+msgstr "Gravar Como..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:589
+msgid "Choose a Filename - KVIrc"
+msgstr "Escolher um Ficheiro - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:646
+msgid "Choose a Filename - KVIrc "
+msgstr "Escolha um Ficheiro - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:40
+msgid "Enable lag meter"
+msgstr "Activar medição de lag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:42
+msgid ""
+"<center>This enables the lag meter engine, which checks at regular intervals "
+"how much lag (latency) the server has.</center>"
+msgstr ""
+"<center>Isto activa o motor da medição de lag, que verifica em intervalos "
+"regulares quanto lag (latência) o servidor tem.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:45
+msgid "Lag meter heartbeat:"
+msgstr "Medição da frequência do lag:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:49
+msgid ""
+"<center>This option allows you to set the lag meter heartbeat interval."
+"<br>The lower the heartbeat interval the higher will be the accuracy of the "
+"lag check but also higher cpu usage and data traffic to the server."
+"<br>Please note that this is NOT the interval between pings sent to the "
+"server: the pings (if any) will be sent really less often. 5000 is a "
+"reasonable value.</center>"
+msgstr ""
+"<center>Esta opção permite-lhe definir o intervalo de batimento medidor do "
+"lag.<br>Quanto mais baixo for o intervalo de batimento maior será a "
+"exactidão da verificação do lag mas também maior será o uso do CPU e tráfego "
+"de dados para o servidor.<br>Por favor note que NÃO é o intervalo entre os "
+"pings enviados para o servidor: os pings (se algum) serão enviados com muito "
+"menos frequência. 5000 é o valor razoável .</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:58
+msgid "Trigger event if lag exceeds:"
+msgstr "Correr evento se o lag exceder:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:61
+msgid ""
+"<center>This option controls the threshold for the OnLagAlarmTimeUp and "
+"OnLagAlarmTimeDown events. When the lag goes above the threshold "
+"OnLagAlarmTimeUp will be triggered and when the lag falls back below the "
+"threshold then OnLagAlarmTimeDown will be triggered</center>"
+msgstr ""
+"<center>Esta opção controla o ponto inicial para os eventos do Alarme "
+"Superior do Lag e do Alarme Inferior do Lag. Quando o lag vai acima do ponto "
+"inicial o Alarme Superior do Lag será disparado e quando o lag cai abaixo do "
+"ponto inicial então o Alarme Inferior do Lag será disparado</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:68
+msgid "Show lag in IRC context display"
+msgstr "Mostrar lag no indicador do contexto IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:70
+msgid ""
+"<center>This makes the IRC context display applet show the current lag after "
+"the user's nickname (in seconds)</center>"
+msgstr ""
+"<center>Isto faz com que a 'applet' para mostrar o contexto IRC exiba o lag "
+"actual após o nick do utilizador (em segundos)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.h:28
+msgid "Away"
+msgstr "Ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.h:28
+msgid "CTCP"
+msgstr "CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:28
+msgid "DCC"
+msgstr "DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:59
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:41
+msgid "Advanced"
+msgstr "Avançado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:72
+msgid "File Transfer"
+msgstr "Transferência de Ficheiros"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:113
+msgid "Chat"
+msgstr "Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:126
+msgid "Voice"
+msgstr "Voz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:32
+msgid "IRC"
+msgstr "IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:73
+msgid "Channel"
+msgstr "Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:28
+msgid "Lag"
+msgstr "Lag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:30
+msgid "time,ping"
+msgstr "tempo,ping"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:37
+msgid "authentication,identify"
+msgstr "autenticação,identificar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:31
+msgid "Language"
+msgstr "Língua"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:34
+msgid "language,encoding,charset,codepage"
+msgstr "língua,codificação,caracteres,código de página"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:28
+msgid "Contacts"
+msgstr "Contactos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:30
+msgid "notify,buddy,buddies,friends"
+msgstr "notificar,amigo,amigos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:42
+msgid "Notifier"
+msgstr "Notificador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:43
+msgid "popup"
+msgstr "menu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:37
+msgid "Text"
+msgstr "Texto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:38
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:49
+msgid "theme,colors,output"
+msgstr "tema,cores,saída"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:52
+msgid "Message Style"
+msgstr "Estilo de Mensagem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:56
+msgid "theme,privmsg,output,format"
+msgstr "tema,mensagem privada,saída,formato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:67
+msgid "Timestamp"
+msgstr "Marcação horária"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:71
+msgid "time,timestamp"
+msgstr "hora,marcação horária"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:88
+msgid "Message Colors"
+msgstr "Cores de Mensagem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:169
+msgid "theme,colors,messages,output"
+msgstr "tema,cores,mensagens,sída"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:168
+msgid "Color Set"
+msgstr "Conjunto de Cores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.h:32
+msgid "Avatars"
+msgstr "Avatares"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:32
+msgid "Sound"
+msgstr "Som"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:48
+msgid "sound,xmms,audio,play,amarok"
+msgstr "som,xmms,áudio,tocar,amarok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:81
+msgid "Sounds"
+msgstr "Sons"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:83
+msgid "sound,events"
+msgstr "Som,eventos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:28
+msgid "URL handlers"
+msgstr "Executáveis URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:31
+msgid "url,programs"
+msgstr "url,programas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:29
+msgid "Tray icon"
+msgstr "Ícone da barra de tarefas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:31
+msgid "tray,dockwidget"
+msgstr "barra de tarefas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.h:33
+msgid "Tools"
+msgstr "Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.h:28
+msgid "General options"
+msgstr "Opções gerais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.h:31
+msgid "Interface"
+msgstr "Interface"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:29
+msgid "Text icons"
+msgstr "Ícones com Texto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:31
+msgid "smileys,emoticons"
+msgstr "sorrisos,emoções"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:34
+msgid "Output"
+msgstr "Saída"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:48
+msgid "Look"
+msgstr "Aparência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:101
+msgid "Features"
+msgstr "Opções"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:46
+msgid "Media Types"
+msgstr "Tipos de Média"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:48
+msgid "file,audio,video,programs"
+msgstr "ficheiro,áudio,vídeo,programas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:114
+msgid "theme"
+msgstr "tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:47
+msgid "Transparency"
+msgstr "Transparência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:48
+msgid "theme,background"
+msgstr "tema,fundo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:74
+msgid "Window Captions"
+msgstr "Captações de Janelas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:88
+msgid "theme,mdi"
+msgstr "tema,mdi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:87
+msgid "Workspace"
+msgstr "Área de Trabalho"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:100
+msgid "ToolBar Applets"
+msgstr "Barra de Componentes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:101
+msgid "theme,toolbar"
+msgstr "tema,barra de ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:150
+msgid "connection"
+msgstr "conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:33
+msgid "Protection"
+msgstr "Protecção"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:36
+msgid "ctcp,flood"
+msgstr "ctcp,flood"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:144
+msgid "Avatar"
+msgstr "Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.h:28
+msgid "Anti-spam"
+msgstr "Anti-spam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:32
+msgid "Verbosity And Output"
+msgstr "Detalhe e Saída"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:34
+msgid "debug"
+msgstr "detalhe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:28
+msgid "Logging"
+msgstr "Registos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:29
+msgid "save,output"
+msgstr "gravar,saída"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:50
+msgid "Input"
+msgstr "Entrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:33
+msgid "theme,colors,text"
+msgstr "tema,cores,texto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:33
+msgid "Taskbar"
+msgstr "Barra de Tarefas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:47
+msgid "Tree Taskbar"
+msgstr "Barra de Tarefas em Árvore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:65
+msgid "Foreground"
+msgstr "Primeiro plano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:111
+msgid "Classic Taskbar"
+msgstr "Barra de Tarefas Clássica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:52
+msgid "Proxy Hosts"
+msgstr "Endereços Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:54
+msgid "connection,servers"
+msgstr "conexão,servidores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:28
+msgid "Alert/Highlight"
+msgstr "Alerta/Destaque"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:42
+msgid "Highlight"
+msgstr "Destaque"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:55
+msgid "Taskbar Alert"
+msgstr "Alerta da Barra de Tarefas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.h:29
+msgid "Flood Protection"
+msgstr "Protecção Flood"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:30
+msgid "Userlist"
+msgstr "Lista de Utilizadores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:31
+msgid "theme,userlist,channel"
+msgstr "tema,lista de utilizadores,canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:45
+msgid "theme,userlist,channel,background"
+msgstr "tema,lista de utilizadores,canal,fundo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:66
+msgid "theme,userlist,channel,colors"
+msgstr "tema,lista de utilizadores,canal,cores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:81
+msgid "Nickname Grid"
+msgstr "Grelha do Nick"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:82
+msgid "theme,userlist,channel,grid"
+msgstr "tema,lista de utilizadores,canal,grelha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:102
+msgid "userlist,channel"
+msgstr "lista de utilizadores,canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:29
+msgid "Labels"
+msgstr "Rótulos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:30
+msgid "theme,topic"
+msgstr "tema,tópico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:28
+msgid "Scripting Engine"
+msgstr "Opções do Script"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:29
+msgid "scripting,kvs,debug"
+msgstr "script,kvs,depurar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:55
+msgid "SSL"
+msgstr "SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:72
+msgid "Socket"
+msgstr "Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:87
+msgid "Ident Service"
+msgstr "Serviço de Identificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:29
+msgid "Ignore"
+msgstr "Ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:31
+msgid "protection"
+msgstr "protecção"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:28
+msgid "Query"
+msgstr "Privado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:30
+msgid "chat"
+msgstr "conversar"
diff --git a/po/modules/options/options_pt_BR.po b/po/modules/options/options_pt_BR.po
new file mode 100644
index 00000000..74f4c3d1
--- /dev/null
+++ b/po/modules/options/options_pt_BR.po
@@ -0,0 +1,13608 @@
+# translation of kvirc_pt_BR.po to
+# translation of kvirc_pt_BR.po to
+# translation of kvirc_pt_BR.po to
+# translation of kvirc.po to Brazilian-Protugues
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Adilson Gonçalves Soares Junior <[email protected]>, 2004, 2005.
+#
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:304
+msgid ""
+msgstr ""
+"Project-Id-Version: kvirc_pt_BR\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-05-26 22:52+0000\n"
+"Last-Translator: \n"
+"Language-Team: <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:232
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:51
+msgid "Font:"
+msgstr "Fonte:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:47
+msgid "Background color:"
+msgstr "Cor de fundo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:129
+msgid "Background image:"
+msgstr "Imagem de fundo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:51
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:46
+#, fuzzy
+msgid "Horizontal align:"
+msgstr "Local do certificado:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:50
+#, fuzzy
+msgid "Vertical align:"
+msgstr "Local do certificado:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:59
+msgid "Mark Line:"
+msgstr "Linha de Marcação:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:66
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:124
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:59
+msgid "Tile"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:62
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:55
+msgid "Left"
+msgstr "Esquerda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:56
+msgid "Right"
+msgstr "Direita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:132
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:62
+#, fuzzy
+msgid "Center"
+msgstr "Geral"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:60
+msgid "Top"
+msgstr "Topo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:61
+msgid "Bottom"
+msgstr "Abaixo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:149
+msgid "Enable URL highlighting"
+msgstr "Habilitar destaque de URLs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:150
+msgid "Use line wrap margin"
+msgstr "Usar margem para quebra de linha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:151
+msgid "Maximum buffer size:"
+msgstr "Tamanho máximo de buffer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:152
+msgid " lines"
+msgstr " linhas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:153
+msgid "Link tooltip show delay:"
+msgstr "Tempo de espera para exibir descriçoes de links :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:306
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:59
+msgid " msec"
+msgstr " mseg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:155
+msgid "Link tooltip hide delay:"
+msgstr "Tempo de espera para ocultar descriçoes de links :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:157
+msgid "Track last read text line"
+msgstr "Marcar a última linha de texto lida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:48
+msgid "NickServ Authentication Rule"
+msgstr "Rugras de Autenticação do NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:55
+msgid "Registered NickName"
+msgstr "Apelido Registrado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:60
+msgid "Put here the nickname that you have registered with NickServ"
+msgstr "Coloque aqui o apelido que você registou com o Nickserv"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:277
+msgid "NickServ Mask"
+msgstr "Máscara do NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:70
+#, fuzzy, c-format
+msgid ""
+"This is the mask that NickServ must match to be correctly identified as the "
+"NickServ service. This usually will be something like <b>NickServ!"
+"[email protected]</b>.<br>You can use wildcards for this field, but "
+"generally it is a security flaw. If you're 100%% sure that NO user on the "
+"network can use the nickname \"NickServ\", the mask <b>NickServ!*@*</b> may "
+"be safe to use in this field."
+msgstr ""
+"Esta é a máscara que deve concordar com NickServ para ser corretamente "
+"identificado como o servicio NickServ. Habitualmente será algo como "
+"<b>[email protected]</b>.<br>Você pode usar comodines para "
+"este campo, mas isto é considerado um falha de segurança. Se estiver 100% "
+"seguro que NENHUM usuario na rede pode utilizar o apelido \"NickServ\", pode "
+"ser seguro utilizar a máscara <b>NickServ!*@*</b> neste campo."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:78
+msgid "Message Regexp"
+msgstr "Mensagem Regexp"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:86
+msgid ""
+"This is the simple regular expression that the identification request "
+"message from NickServ must match in order to be correctly recognized.<br>The "
+"message is usually something like \"To identify yourself please use /ns "
+"IDENTIFY password\" and it is sent when the NickServ wants you to "
+"authenticate yourself. You can use the * and ? wildcards."
+msgstr ""
+"Esta é a expressão regular simples que o pedido/mensagem de identificação do "
+"Nickserv tem que coincidir para que seja corretamente reconhecido.<br>A "
+"mensagem normalmente é qualquer coisa como \"Para se identificar por favor "
+"use /ns IDENTIFY password\" e é enviado quando o Nickserv quer que você se "
+"identifique. Pode usar os caracteres * e ?."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:259
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:279
+msgid "Identify Command"
+msgstr "Comando de Identificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:98
+msgid ""
+"This is the command that will be executed when NickServ requests "
+"authentication for the nickname described in this rule (if the both server "
+"and NickServ mask are matched). This usually will be something like <b>msg "
+"NickServ identify &lt;yourpassword&gt;</b>.<br>You can use <b>msg -q</b> if "
+"you don't want the password echoed on the screen. Please note that there is "
+"no leading slash in this command."
+msgstr ""
+"Este é o comando que irá ser executado quando o NickServ pedir autenticação "
+"para o apelido descrito nesta regra (se ambas as máscaras do servidor e do "
+"NickServ coincidem). Isto normalmente será algo como <b>msg NickServ "
+"identify &lt;senha&gt;</b>. <br>Pode usar <b>msg -q</b> se não quiser que a "
+"senha seja exibida na tela. Por favor note que este comando não utiliza "
+"barra no inicio.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:256
+msgid "Server mask"
+msgstr "Máscara do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:117
+msgid ""
+"This is the mask that the current server must match in order for this rule "
+"to apply. It can contain * and ? wildcards.<br>Do NOT use simply \"*\" "
+"here..."
+msgstr ""
+"Esta é a máscara a que o servidor atual deve corresponder para que esta "
+"regra seja aplicada. Pode conter caracteres \"*\" e \"?\".<br>NÃO use "
+"simplesmente o \"*\" aqui..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:128
+msgid "Hint: Move the mouse cursor over the fields to get help"
+msgstr "Sugestão: Mova o cursor do mouse sobre os campos para obter ajuda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:137
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:68
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:803
+msgid "OK"
+msgstr "Aceitar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:164
+msgid "Invalid NickServ Rule"
+msgstr "Regra Nickserv Inválida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:169
+msgid "The Nickname field can't be empty!"
+msgstr "O campo do Apelido não pode estar vazio!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:175
+msgid "The Nickname field can't contain spaces!"
+msgstr "O campo do Apelido não pode conter espaços!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:183
+msgid "The NickServ mask can't be empty!<br>You must put at least * there."
+msgstr ""
+"A mascara do Nickserv não pode estar vazia!<br>Tem que ter pelo menos um *."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:191
+msgid "The Message Regexp can't be empty!<br>You must put at least * there."
+msgstr ""
+"A Mensagem Regexp não pode estar vazia!<br>Tem que ter pelo menos um *."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:199
+msgid "The Identify Command can't be empty!"
+msgstr "O Comando de Identificação não pode estar vazio!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:265
+msgid "Enable NickServ Identification"
+msgstr "Ativar Identificação do NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:269
+msgid "This check enables the automatic identification with NickServ"
+msgstr "Esta caixa ativa a identificação automática do Nickserv"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:276
+msgid "Nickname"
+msgstr "Apelido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:258
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:278
+msgid "NickServ Request Mask"
+msgstr "Pedido da Máscara do NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:265
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on all the networks."
+"<br>Please be aware that this feature can cause your NickServ passwords to "
+"be stolen if used improperly. Make sure that you fully understand the "
+"NickServ authentication protocol.<br>In other words, be sure to know what "
+"you're doing.<br>Also note that the password that you provide is stored as "
+"<b>PLAIN TEXT</b>.<br>KVIrc supports also per-network NickServ "
+"authentication rules that can be created in the \"Advanced...\" network "
+"options (accessible from the servers dialog).</center>"
+msgstr ""
+"<center>Esta é a lista das regras de identificação do NickServ. O KVirc irá "
+"utilizá-las para modelar a sua interação automática com o NickServ em todas "
+"as redes.<br>Por favor tenha atenção porque esta característica pode causar "
+"o roubo da sua senha do NickServ se for utilizada inaprópriadamente. "
+"Certifique-se que compreendeu completamente o protocolo de autenticação do "
+"NickServ. <br>Em outras palavras, tenha a certeza do que fazendo.<br>Note "
+"também que a senha que você forneceu é salva como<b>TEXTO SIMPLES</"
+"b><br>KVIrc suporta também, regras de autenticação NickServ per-network e "
+"pode ser criada em opções \"Advançadas...\" derede (acessível a partir da "
+"janela de servidores).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:293
+msgid "Add Rule"
+msgstr "Adicionar Regra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:298
+msgid "Edit Rule"
+msgstr "Editar Regra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:302
+msgid "Delete Rule"
+msgstr "Deletar Regra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:31
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:36
+msgid "Font"
+msgstr "Fonte"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:38
+msgid "Foreground color"
+msgstr "Cor de primeiro plano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:37
+msgid "Background color"
+msgstr "Cor de fundo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:34
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:44
+msgid "Background image"
+msgstr "Imagem de fundo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:40
+#, fuzzy
+msgid "Enable tray icon"
+msgstr "Habilitar criptografia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:41
+#, fuzzy
+msgid "Close in tray"
+msgstr "Minimizar novos privados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:42
+#, fuzzy
+msgid "Minimize in tray"
+msgstr "Minimizar novos privados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:44
+#, fuzzy
+msgid "Enable tray icon flashing"
+msgstr "Habilitar destaque de palavras"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:45
+msgid "Enable level-based message notification (not a message-type based)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:47
+msgid "Select message levels to notify"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:49
+msgid "Minimum level for low-priority messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:53
+msgid "Minimum level for high-priority message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.cpp:40
+msgid ""
+"This section contains irc protection tools<br><p>like<b> flood, ignore, "
+"antispam. </b> </p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:40
+#, fuzzy
+msgid ""
+"<center><b>Settings for CTCP.</b></center><p>The <b>Client-To-Client "
+"Protocol</b> (CTCP) is used to transmit special control messages over an IRC "
+"connection. These messages can request information from clients or negotiate "
+"file transfers.<br><br></p>"
+msgstr ""
+"<center><b>Esta seção contém as configurações para CTCP</b></"
+"center><br><br><p>O <b>Protocolo Cliente-Para-Cliente</b> (CTCP) é usado "
+"para transmitir mensagens especias de controle em uma conexão IRC. Estas "
+"mensagens podem pedir informação de clientes ou negociar transferências de "
+"arquivos.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:47
+#, fuzzy
+msgid "CTCP Replies"
+msgstr "Respostas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:48
+msgid "Append to VERSION reply:"
+msgstr "Anexar à resposta VERSION:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:52
+msgid ""
+"<center>This text will be appended to the CTCP VERSION reply.<br>For "
+"example, you can place a script name here.</center>"
+msgstr ""
+"<center>Este texto será anexado à resposta CTCP VERSION. <br>Por exemplo, "
+"você pode substituir o nome do script aqui.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:55
+msgid "Append to SOURCE reply:"
+msgstr "Anexar à resposta SOURCE:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:59
+msgid ""
+"<center>This text will be appended to the CTCP SOURCE reply.<br>For example, "
+"you can place the source URL for a script here.</center>"
+msgstr ""
+"<center>Este texto será anexado à resposta CTCP SOURCE. <br>Por exemplo, "
+"pode substituir aqui a URL da origem de um script.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:69
+msgid "PAGE reply:"
+msgstr "Resposta PAGE:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:73
+msgid ""
+"<center>This is the CTCP PAGE reply.<br>It should contain some sort of "
+"acknowledgement for CTCP PAGE messages.</center>"
+msgstr ""
+"<center>Esta é a resposta CTCP PAGE. <br>Deve conter algum tipo de "
+"reconhecimento para mensagens CTCP PAGE.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:76
+msgid "Show the CTCP replies in the active window"
+msgstr "Exibe as respostas CTCP na janela ativa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:78
+msgid "Show dialog for CTCP page requests"
+msgstr "Exibir janela de dialogo para pedidos de CTCP page"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:36
+msgid "Use tree taskbar"
+msgstr "Usar Barra de tarefas em árvore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:37
+msgid "Sort windows by name"
+msgstr "Ordenar janelas por nome"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:38
+msgid "Show window icons in taskbar"
+msgstr "Exibir icones na barra de tarefas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:39
+msgid "Show activity meter in taskbar"
+msgstr "Exibir medidor de atividade na barra de tarefas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:41
+msgid ""
+"<center>This option enables the usage of the taskbar activity meter. Each "
+"window entry will have a small indicator of the activity that is going on in "
+"that window. The indicator is a small square that changes colors, dark "
+"colors mean low activity, while bright colors signal high activity. KVIrc "
+"also uses some heuristics to determine whether the activity is somewhat "
+"\"human\" or it is generated by automated entities (such as bots or IRC "
+"servers). \"Human\" activity causes the indicator to be shaded red while "
+"automated activity causes the indicator to be shaded blue.</center>"
+msgstr ""
+"<center>Esta opção habilita o uso do medidor de atividade na barra de "
+"tarefas. Cada janela terá um pequeno indicador de atividade. O indicador é "
+"um pequeno retângulo que alterna de cor; preto significa baixa atividade e "
+"as cores mais brillantes indicam alta atividade. O KVIrc utiliza algumas "
+"heurísticas para averiguar quando se trata de atividade \"humana\" ou se é "
+"atividade gerada por entidades automáticas (como bots ou servidores de IRC). "
+"A atividade \"humana\" faz com o que o indicador fique sombreado em vermelho "
+"enquanto que a atividade automática faz com que o indicador fique sombreado "
+"em azul.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:49
+msgid "Show IRC context indicator in taskbar"
+msgstr "Exibir incador do contexto de IRC na barra de tarefas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:50
+msgid "Enable window tooltips"
+msgstr "Habilitar dicas de janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:233
+msgid "Text/Alert Colors"
+msgstr "Texto/Cores de Alerta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:125
+msgid "Normal:"
+msgstr "Normal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:126
+msgid "Selected:"
+msgstr "Selecionado:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:236
+msgid "Alert Level 1:"
+msgstr "Nível de alerta 1:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:237
+msgid "Alert Level 2:"
+msgstr "Nível de alerta 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:238
+msgid "Alert Level 3:"
+msgstr "Nível de alerta 3:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:239
+msgid "Alert Level 4:"
+msgstr "Nível de alerta 4:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:240
+msgid "Alert Level 5:"
+msgstr "Nível de alerta 5:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:241
+msgid "Progress bar color:"
+msgstr "Cor da barra de progresso:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:124
+msgid "Background Colors"
+msgstr "Cores de fundo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:212
+#, fuzzy
+msgid "Show header"
+msgstr "Exibir Editor de Ban"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:214
+msgid "Minimum width:"
+msgstr "Largura mínima:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:215
+msgid "Maximum width:"
+msgstr "Largura máxima:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:235
+msgid "Minimized:"
+msgstr "Minimizado:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:242
+msgid "Minimum width of buttons:"
+msgstr "Largura mínima dos botões:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:244
+#, fuzzy
+msgid "Set maximum button width"
+msgstr "Largura máxima:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:245
+#, fuzzy
+msgid "Maximum width of buttons:"
+msgstr "Largura mínima dos botões:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:246
+msgid "Use flat buttons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:96
+msgid "Network Details"
+msgstr "Detalhes da Rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:82
+msgid "Description:"
+msgstr "Descrição:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:116
+msgid "<center>Put here a brief description of the network.</center>"
+msgstr "<center>Digite aqui uma breve descrição da rede</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:477
+msgid "Properties"
+msgstr "Propriedades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:123
+msgid "Username:"
+msgstr "Nome de usuário:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:134
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to servers "
+"on this network.\n"
+"If this field is left empty (most common case), KVIrc will use the default "
+"username specified in the \"Identity\" options tab.</center>"
+msgstr ""
+"<center>Este é o <b>nome de usuário</b> que o KVirc irá utilizar para entrar "
+"nos servidores desta rede.\n"
+"Se este campo for deixado vazio, o KVirc irá usar o nome de usuário padrão "
+"especificado nas opções de \"Identidade\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:498
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:320
+msgid "Nickname:"
+msgstr "Apelido:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:145
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to the servers on this network.<br>If this field is left empty (most "
+"common case), the default nickname (specified in the \"Identity\" settings) "
+"will be used.</center>"
+msgstr ""
+"<center>Pode especificar um <b>Apelido</b> \"especial\" que será usado para "
+"entrar nos servidores desta rede.<br>Se este campo for deixado vazio (caso "
+"mais comum), o nick padrão (especificado nas configurações de \"Identidade"
+"\") será usado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:509
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:342
+msgid "Real name:"
+msgstr "Nome Real:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:153
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with the servers on this network.<br>If you leave this field empty "
+"(most common case), the default \"real name\" (specified in the \"Identity\" "
+"settings) will be used.</center>"
+msgstr ""
+"<center>Pode especificar um <b>nome real</b> \"especial\" que irá ser usado "
+"para entrar nos servidores desta rede.<br>Se deixar este campo vazio (caso "
+"mais comum), o \"nome real\" padrão (especificado nas configurações de "
+"\"Identidade\") será usado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:644
+msgid "Encoding:"
+msgstr "Codificação:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:164
+msgid ""
+"<center>This box allows you to choose the preferred encoding for the servers "
+"in this network. If you choose \"Use System Encoding\" then the encoding "
+"will be set to the systemwide value that you choose in the \"Encoding\" page "
+"of the options dialog.</center>"
+msgstr ""
+"<center>Esta caixa permite-lhe escolher a codificação preferida para os "
+"servidores desta rede. Se você escolher \"Usar Codificação do Sistema\" "
+"então a codificação irá ser definida para o valor global do sistema que você "
+"escolheu no diálogo de opções da página de \"Codificação\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:173
+msgid "Use System Encoding"
+msgstr "Usar Codificação do Sistema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:185
+#, fuzzy
+msgid "Connect to this network at startup"
+msgstr "Conectar ao servidor ao iniciar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:189
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to automatically connect to this "
+"network at startup</center>"
+msgstr ""
+"<center>Esta opção fará com que o KVIrc conecte ao servidor de IRC quando "
+"for iniciado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:79
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:120
+msgid "General"
+msgstr "Geral"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:756
+msgid "Channels to join automatically upon connect:"
+msgstr "Canais para entrar automaticamente ao conectar:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:211
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to a server in this network has been established. To add a "
+"channel, type its name in the text input below and click \"<b>Add</b>\".</"
+"center>"
+msgstr ""
+"<center>Aqui você pode definir a lista de canais para entrar automaticamente "
+"após a conexão com um servidor desta rede estiver estabelecida. Para "
+"adicionar um canal, escreva o seu nome na entrada de texto abaixo e clique "
+"\"<b>Adicionar</b>\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:217
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:62
+msgid "Join Channels"
+msgstr "Entrar nos Canais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:228
+msgid ""
+"<center>The following commands will be executed after a connection to a "
+"server in this network has been established.<br><b>Important:</b> Enter "
+"commands <b>without</b> a preceding slash (e.g. <tt>quote pass secret</tt> "
+"instead of <tt>/quote pass secret</tt>).<br>KVIrc will first send the USER "
+"command, then eventually PASS and NICK and then execute this command "
+"sequence.</center>"
+msgstr ""
+"<center>Os seguintes comandos serão executados após a conexão com um "
+"servidor for estabelecida.<br><b>Importante:</b> Indique os comandos <b>sem</"
+"b> uma barra precedente (p.ex.<tt>quote pass secret</tt> em vez de <tt>/"
+"quote pass secret</tt>).<br>O KVirc primeiro enviará o comando USER, depois "
+"eventualmente PASS e NICK e então executar esta sequência de comandos."
+"<br>Isto é particularmente útil para bouncers IRC que requerem comandos de "
+"entrada.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:782
+msgid "On Connect"
+msgstr "Em Conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:249
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"a server in this network.<br><b>Important:</b> Enter commands <b>without</b> "
+"a preceding slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote "
+"privatelog</tt>).<br>This is useful for automatically opening queries, "
+"setting variables, etc.</center>"
+msgstr ""
+"<center>Os seguintes comandos irão ser executados após uma entrada bem "
+"sucedida neste servidor.<br><b>Importante:</b> Digitar comandos <b>sem</b> "
+"barra precedente (p.ex. <tt>quote privatelog</tt> em vez de <tt>/quote "
+"privatelog</tt>).<br>Isto é útil para automaticamente abrir queries, definir "
+"variáveis, etc.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:801
+msgid "On Login"
+msgstr "Em Login"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:285
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on this network.<br>Please "
+"be aware that this feature can cause your NickServ passwords to be stolen if "
+"used improperly. Make sure that you fully understand the NickServ "
+"authentication protocol.<br>In other words, be sure to know what you're "
+"doing.<br>Also note that the password that you provide is stored as <b>PLAIN "
+"TEXT</b>.</center>"
+msgstr ""
+"<center>Esta é a lista das regras de identificação do NickServ. O KVirc irá "
+"utilizá-las para modelar a sua interacção automática com o NickServ.<br>Por "
+"favor tenha atenção porque esta característica pode causar o roubo da sua "
+"senha do NickServ se for utilizada inaprópriadamente. Certifique-se que "
+"compreendeu completamente o protocolo de autenticação do NickServ. <br>Em "
+"outras palavras, tenha a certeza do que fazendo.<br>Note também que a senha "
+"que você forneceu é salva como<b>TEXTO SIMPLES</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:35
+msgid "NickServ"
+msgstr "NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:323
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:60
+msgid "&OK"
+msgstr "&Aceitar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:449
+msgid "Server Details"
+msgstr "Detalhes do Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:465
+msgid ""
+"<center>This is a brief description of this server. This field has no "
+"restrictions but many server lists use it to describe the server's physical "
+"location</center>"
+msgstr ""
+"<center>Esta é uma breve descrição deste servidor. Este campo não tem "
+"nenhuma restrição, mas muitas listas de servidores usam-no para descrever a "
+"posição física dos servidores</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:484
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to this "
+"server.\n"
+"If this field is left empty (most common case), KVIrc will first look if an "
+"username is specified for the network that this server belongs to, and if "
+"that is empty then KVIrc will use the default username specified in the "
+"\"Identity\" options tab.</center>"
+msgstr ""
+"<center>Este é o <b>nome de usuário</b> que o KVirc irá usar para entrar "
+"neste servidor.\n"
+"Se este campo estiver vazio, o KVirc irá primeiro procurar se um nome de "
+"usuário está especificado para a rede que este servidor pertence, e se "
+"estiver vazio então o KVirc irá usar o nome de usuário padrão especificado "
+"nas opções de \"Identidade\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:490
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:127
+msgid "Password:"
+msgstr "Senha:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:495
+msgid ""
+"<center>If this server requires a password, put it in this field, otherwise "
+"leave it empty.</center>"
+msgstr ""
+"<center>Se este servidor requer uma senha, insira-a neste campo, se não "
+"deixe-o vazio.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:504
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to this server.<br>If this field is left empty (most common case), "
+"KVIrc will first look if a nickname is specified for the network that this "
+"server belongs to, and if that is empty then the default nickname (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center>Você pode especificar um <b>Apelido</b> \"especial\" que será "
+"utilizado para entrar neste servidor.<br>Se deixar este campo vazio (caso "
+"mais comum), o KVirc irá primeiro procurar se um apelido está especificado "
+"para a rede que este servidor pertence, e se estiver vazio o Apelido padrão "
+"(especificado nas configuraçoes de \"Identidade\") será usado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:513
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with this server.<br>If you leave this field empty (most common case), "
+"KVIrc will first look if a real name is specified for the network that this "
+"server belongs to, and if that is empty the default \"real name\" (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center>Pode especificar um <b>nome real</b> \"especial\" que será utilizado "
+"para entrar neste servidor.<br>Se deixar este campo vazio (caso mais comum), "
+"o KVirc irá primeiro procurar se um nome real está especificado para a rede "
+"que este servidor pertence, e se estiver vazio o\"nome real\" padrão "
+"(especificado nas configurações de \"Identidade\") será usado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:683
+msgid "User Mode"
+msgstr "Modo de Usuário"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:520
+msgid "Use default user mode"
+msgstr "Usar modo de usuário padrão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:522
+msgid ""
+"<center>If this is enabled, the global initial <b>user mode</b> (configured "
+"from the identity dialog) will be used. If disabled, you can configure an "
+"initial user mode for this server"
+msgstr ""
+"<center>Se isto for habilitado, o <b>modo de usuário</b> global inicial "
+"(configurarado no diálogo de identificação) será usado. Se estiver "
+"desabilitado, você pode configurarar um modo de usuário inicial para este "
+"servidor."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:684
+msgid "Invisible (+i)"
+msgstr "Invisivel (+i)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:534
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:685
+msgid "Server notices (+s)"
+msgstr "Notícias do Servidor (+s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:686
+msgid "Wallops (+w)"
+msgstr "Wallops (+w)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:548
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:60
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:104
+msgid "Identity"
+msgstr "Identidade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:115
+msgid "Port:"
+msgstr "Porta:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:565
+msgid ""
+"<center>This is the default <b>port</b> that this server will be contacted "
+"on.<br>Usually <b>6667</b> is OK.</center>"
+msgstr ""
+"<center>Esta é a <b>porta</b> padrão em que este servidor será contactado."
+"<br>Geralmente, <b>6667</b> é a correta.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:571
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:119
+msgid "IP address:"
+msgstr "Endereço IP:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:576
+msgid ""
+"<center>This is the <b>IP address</b> of this server, it is here for caching "
+"purposes.<br>If you leave this field empty, KVIrc will fill it in the first "
+"time it connects to the server. If you enable the \"cache IP address\" "
+"option below, KVIrc will use it as a \"cached result\" and avoid looking it "
+"up again.</center>"
+msgstr ""
+"<center>Este é o <b>endereço IP</b> deste servidor, ele está aqui para ser "
+"armazenado.<br>Se este campo estiver vazio, o KVIrc irá preenchê-lo na "
+"primeira vez que conectar ao servidor. Se você habilitar o \"armazenamento "
+"do endereço IP\" na opção abaixo, o KVIrc irá utilizá-lo como \"resultado de "
+"armazenamento\" e evitará de pesquisá-lo outra vez.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:596
+msgid "Cache IP address"
+msgstr "Armazenar endereço IP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:599
+msgid ""
+"<center>This check will enable <b>IP address caching</b> for this server:"
+"<br>DNS lookups can be time-consuming and might be blocking on some "
+"platforms; this option will cause KVIrc to look up the server hostname only "
+"once.<br><br> Advanced: you can also use this option to force a certain "
+"server name to resolve to a fixed ip address when either the dns for that "
+"server is temporairly unreachable or you want to avoid the round-robin "
+"lookups.</center>"
+msgstr ""
+"<center>Esta caixa irá ativar o <b>armazenamento do endereço IP</b> para "
+"este servidor:<br> As procuras de DNS podem consumir muito tempo e também "
+"estarbloqueando em algumas plataformas; esta opção irá fazer com que o KVirc "
+"procure o nome de máquina do servidor apenas uma vez.<br><br>Avançado: você "
+"também pode usar esta opção para forçar um certo nome de servidor a resolver "
+"para um endereço IP fixo quando o dns para esse servidor estiver "
+"temporariamente indisponível ou quiser evitar uma procura demorada.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:609
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:140
+msgid "Use IPv6 protocol"
+msgstr "Usar protocolo IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:619
+msgid ""
+"<center>This check identifies IPv6 servers.<br>If enabled, KVIrc will "
+"attempt to use the IPv6 protocol (thus your OS <b>must</b> have a working "
+"IPv6 stack and you <b>must</b> have an IPv6 connection).</center>"
+msgstr ""
+"<center>Esta opção identifica os servidores IPv6.<br>Se estiver habilitada, "
+"o KVIrc tentará usar o protocólo IPv6 (seu S.O. <b>deve</b> ter uma pila "
+"IPv6 funcionando e <b>deve</b> ter uma conexão IPv6).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:624
+msgid "Use SSL protocol"
+msgstr "Usar protocolo SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:627
+msgid ""
+"<center>This check will cause the connection to use the <b>Secure Socket "
+"Layer</b> encryption support. Obviously, this server must have support for "
+"this, too. :)</center>"
+msgstr ""
+"<center>Esta opção obrigará a utilização do suporte de cripitografia do "
+"<b>Secure Socket Layer</b> na conexão. Obviamente, este servidor deve ter "
+"suporte também. :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:636
+msgid "Connect to this server at startup"
+msgstr "Conectar ao servidor ao iniciar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:641
+msgid ""
+"<center>This option will cause KVIrc to connect to the IRC server when it is "
+"started.</center>"
+msgstr ""
+"<center>Esta opção fará com que o KVIrc conecte ao servidor de IRC quando "
+"for iniciado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:650
+msgid ""
+"<center>This box allows you to choose the preferred encoding for this sever. "
+"If you choose \"Use Network Encoding\" then the encoding will be inherited "
+"from the network that this server belongs to.</center>"
+msgstr ""
+"<center>Esta caixa lhe permite escolher a codificação preferida para este "
+"servidor. Se você escolher \"Usar Codificação da Rede\" então a codificação "
+"será herdada da rede que este servidor pertence.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:659
+msgid "Use Network Encoding"
+msgstr "Usar Codificação da Rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:672
+msgid "Link filter:"
+msgstr "Filtro de link:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:701
+msgid ""
+"<center>This field specifies the name of a module that exports a link filter "
+"for this type of server.<br>For plain IRC connections, you don't need any "
+"link filters; this is used for incompatible protocols.</center>"
+msgstr ""
+"<center>Este campo especifica o nome de um módulo que exporte um filtro de "
+"link para este tipo de servidor.<br>Para conexões normais de IRC, você não "
+"precisa de nenhum filtro de link; isto é usado para protocolos incompatíveis."
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:705
+#, fuzzy
+msgid "Id:"
+msgstr "Id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:713
+msgid ""
+"<center>This field allows you to specify a really unique id for this server. "
+"You will then be able to use /server -x &lt;this_id&gt; to make the "
+"connection. This is especially useful when you have multiple server entries "
+"with the same hostname and port in different networks (bouncers?)</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:719
+#, fuzzy
+msgid "Proxy server:"
+msgstr "Copiar Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:724
+msgid ""
+"<center>This is the <b>proxy</b> that KVIrc will use to connect to thos "
+"server.\n"
+"If this field is set in \"Default\" KVirc will use global proxy settings, if "
+"it is set in \"Direct connection\" KVirc will connect to this server without "
+"proxy. You can define new proxy server in global options' \"Proxy servers\" "
+"menu.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:729
+msgid "Default"
+msgstr "Padrão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:730
+#, fuzzy
+msgid "Direct connection"
+msgstr "conexão segura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:746
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:28
+msgid "Connection"
+msgstr "Conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:758
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to this server has been established. To add a channel, type its "
+"name in the text input below and click \"<b>Add</b>\".</center>"
+msgstr ""
+"<center>Aqui você pode configurar uma lista de canais para entrar "
+"automaticamente após que a conexão com este servidor for estabelecida. Para "
+"adicionar um canal, digite seu nome na caixa de texto abaixo e clique em \" "
+"<b>Adicionar</b> \".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:776
+msgid ""
+"<center>The following commands will be executed after a connection has been "
+"established.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote pass secret</tt> instead of <tt>/quote pass secret</"
+"tt>).<br>KVIrc will first send the USER command, then eventually PASS and "
+"NICK and then execute this command sequence.<br>This is particularly useful "
+"for IRC bouncers that require login commands.</center>"
+msgstr ""
+"<center>Os seguintes comandos serão executados depois que uma conexão for "
+"estabelecida.<br><b>Importante:</b> Digite os comandos <b>sem</b> uma barra "
+"precedente (ex: <tt>quote pass secret</tt> ao invés de <tt>/quotepass "
+"secret</tt>).<br> O KVIrc primeiramente eviará um comando USER, então "
+"eventualmente PASS e NICK executando então esta seqüência de comandos. Isto "
+"é particularmente útil para os bouncers de IRC que requerem comandos no "
+"início de uma sessão.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:796
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"this server.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote privatelog</tt>)."
+"<br>This is useful for automatically opening queries, setting variables, etc."
+"</center>"
+msgstr ""
+"<center>Os seguintes comandos serão executados depois que se tiver iniciado "
+"corretamente uma sessão com este servidor.<br><b>Importante:</b> Digite os "
+"comandos <b>sem</b> uma barra precedente (ex:. <tt>quote privatelog</tt> ao "
+"invés de <tt>/quote privatelog</tt>).<br>Isto é útil para abrir queries "
+"automaticamente, inicializar variáveis, etc.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1041
+msgid "Server"
+msgstr "Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1042
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:73
+msgid "Description"
+msgstr "Descrição"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1054
+msgid ""
+"<center>This is the list of available IRC servers.<br>Right-click on the "
+"list to add or remove servers and perform other actions.<br>Double-click on "
+"a item for advanced options.</center>"
+msgstr ""
+"<center>Esta é a lista de servidores IRC disponíveis.<br>Clique duas vezes "
+"na lista para adicionar ou remover servidores e realizar outras ações."
+"<br>Clique duas vezes em um elemento para exibir as opções avançadas.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1069
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1430
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1554
+msgid "New Network"
+msgstr "Nova Rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1077
+msgid "New Server"
+msgstr "Novo Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1086
+msgid "Remove Network/Server"
+msgstr "Remover Rede/Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1098
+msgid "Copy Server"
+msgstr "Copiar Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1107
+msgid "Paste Server"
+msgstr "Colar Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1446
+msgid "Import List"
+msgstr "Importar Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1125
+#, fuzzy
+msgid "Active Configuration"
+msgstr "&Salvar Configuração"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1332
+msgid "Server:"
+msgstr "Servidor:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1130
+msgid ""
+"<center>This is the name of the currently selected server or network</center>"
+msgstr ""
+"<center>Este é o nome do servidor ou da rede atualmente selecionado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1153
+msgid "Advanced..."
+msgstr "Avançado..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1156
+msgid "<center>Click here to edit advanced options for this entry</center>"
+msgstr ""
+"<center>Clique aqui para editar as opções avançadas para esta entrada</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1159
+msgid "Connect &Now"
+msgstr "Co&nectar Agora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1164
+msgid ""
+"<center>Hit this button to connect to the currently selected server.</center>"
+msgstr ""
+"<center>Aperte este botão para conectar ao servidor atualmente selecionado.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1177
+msgid ""
+"<center>This button shows a list of recently used servers. It allows you to "
+"quickly find them in the list.</center>"
+msgstr ""
+"<center>Este botão exibe a lista de servidores usados recentemente. Isto "
+"permite que você encontre-os rapidamente na lista..</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1181
+msgid "Show this dialog at startup"
+msgstr "Exibir esta janela ao iniciar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1184
+msgid ""
+"<center>If this option is enabled, the Servers dialog will appear every time "
+"you start KVIrc</center>"
+msgstr ""
+"<center>Se esta opção estiver habilitada, a Janela de Servidores aparecerá "
+"toda vez que você executar o KVIrc</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1335
+msgid "Network:"
+msgstr "Rede:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1345
+msgid "No selection"
+msgstr "Sem Seleção"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1364
+msgid "UnknownNet"
+msgstr "RedeDesconhecida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1431
+msgid "Remove Network"
+msgstr "Remove Rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1434
+msgid "&New Server"
+msgstr "&Novo Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1435
+msgid "Re&move Server"
+msgstr "Re&mover Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1437
+msgid "&Copy Server"
+msgstr "&Copiar Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1439
+msgid "&Paste Server"
+msgstr "&Colar Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1444
+msgid "Clear List"
+msgstr "Limpar Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1483
+msgid ""
+"Oops... something weird happened:<br>Can't find any module capable of "
+"importing servers."
+msgstr ""
+"Oopa... algo estranho aconteceu:<br>Não foi possível encontrar um módulo "
+"responsável pela importação dos servidores."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1500
+msgid ""
+"Oops... something weird happened:<br>Can't find the module that was capable "
+"of this import action. :("
+msgstr ""
+"Oopa... algo estranho aconteceu:<br>Não foi possível encontrar um módulo "
+"responsável por esta ação de importação."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1574
+msgid "irc.unknown.net"
+msgstr "irc.desconhecido.net"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:39
+msgid "Disable parser warnings"
+msgstr "Desabilitar avisos de parser"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:40
+msgid "Disable broken event handlers"
+msgstr "Desativar manipuladores de eventos errados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:41
+msgid "Kill broken timers"
+msgstr "Matar timers errados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:42
+msgid "Send unknown commands as /RAW"
+msgstr "Enviar comando desconhecido como /RAW"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:46
+msgid "Automatically unload unused modules"
+msgstr "Descarregar automaticamente módulos não utilizados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:47
+msgid "Ignore module versions (dangerous)"
+msgstr "Ignorar versões de módulos (perigoso)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:51
+msgid "Relay errors and warnings to debug window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:52
+#, fuzzy
+msgid "Create minimized debug window"
+msgstr "Minimizar todas las janelas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:59
+msgid "Nickname alternatives"
+msgstr "Apelidos alternativos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:62
+msgid ""
+"<center>Here you can choose up to three nicknames alternative to the primary "
+"one. KVIrc will use the alternatives if the primary nick is already used by "
+"someone else on a particular IRC network.</center>"
+msgstr ""
+"<center>Aqui você pode escolher até três apelidos alternativos ao "
+"preliminar. O KVIrc usará as alternativas se o apelido preliminar estiver em "
+"uso por alguma outra pessoa em uma rede particular de IRC.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:69
+msgid "Alt. Nickname 1:"
+msgstr "Apelido Alt. 1:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:76
+msgid "Alt. Nickname 2:"
+msgstr "Apelido Alt. 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:83
+msgid "Alt. Nickname 3:"
+msgstr "Apelido Alt. 3:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Ok"
+msgstr "Aceitar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:130
+msgid "Avatar Download - KVIrc"
+msgstr "Transferência de Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:136
+msgid "<center>Please wait while the avatar is being downloaded</center>"
+msgstr ""
+"<center>Por favor aguarde enquanto o avatar esta sendo transferido</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:139
+msgid "Abort"
+msgstr "Abortar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:170
+msgid "Failed to start the download"
+msgstr "Falhou ao iniciar a transferência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:184
+msgid "Download aborted by user"
+msgstr "Transferência cancelada pelo usuário"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:213
+msgid "Choose Avatar - KVIrc"
+msgstr "Escolha o Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:219
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+"Escolhe uma imagem Avatar. O caminho completo para o arquivo local ou uma "
+"imagem na web, podem ser usados.<br>Se quiseres usar um arquivo local, "
+"clique no botão \"<b>Procurar</b>\" para procurar arquivos locais.<br>A URL "
+"completa para uma imagem (incluindo <b>http://</b>) pode ser digitada "
+"manualmente."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:237
+msgid "&Browse..."
+msgstr "&Procurar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:275
+msgid "Choose an Image File - KVIrc"
+msgstr "Escolha um arquivo de Imagem - KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:316
+#, fuzzy
+msgid "Basic Properties"
+msgstr "Propriedades"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:323
+msgid ""
+"<center>Your <b>nickname</b> is your primary form of identification on IRC."
+"<br>Since servers cannot accept multiple users sharing the same nickname "
+"(case insensitive), you can provide alternative nicknames to be used in "
+"casethe server refuses to accept the default one.</center>"
+msgstr ""
+"<center>Seu <b>apelido</b> é seu formulário preliminar de identificação no "
+"IRC.<br>Desde de que os servidores não podem aceitar multiplos usuários "
+"compartilhando o mesmo apelido (caso isso ocorra), você pode prover apelidos "
+"alternativos que podem ser usados caso o servidor recuse o seu apelido "
+"padrão.</center> "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:331
+msgid "Alternatives..."
+msgstr "Alternativos..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:337
+msgid ""
+"<center>This is the <b>username</b> that you will use to connect to the "
+"server.<br>In the past, it was used as a form of authentication, but it "
+"normally has no special use now.<br>In addition to your nickname, you are "
+"identified on IRC by your <b>username@hostname</b>.</br>Basically, you can "
+"enter any word you like here. :D</center>"
+msgstr ""
+"<center>Este é o <b>nome de usuário</b> que você irá usar para se conectar "
+"ao servidor.<br>No passado, foi usado como formulário de autenticação, mas "
+"agora nao tem nenhum uso especial.<br>Além de seu apelido você é "
+"identificado no IRC pelo seu <b>nomedeusuário@hostname</b>.</br>Basicamente, "
+"você pode preencher com alguma palavra que você goste aqui. :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:346
+msgid ""
+"<center>This text will appear when someone does a /WHOIS on you.<br>It is "
+"intended to be your real name, but people tend to put random quotes and "
+"phrases here too.</center>"
+msgstr ""
+"<center>Este texto aparecerá quando alguém fizer um /WHOIS em você."
+"<br>Pretende-se que seja seu nome real, mas as pessoas tendem a pôr aqui "
+"citações e frases aleatórias .</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:351
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:356
+#, fuzzy
+msgid "Profile"
+msgstr "Prólogo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:361
+msgid "Age:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:366
+msgid "Here you can specify your age."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:401
+#, fuzzy
+msgid "Unspecified"
+msgstr "Nenhum nome especificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:391
+#, fuzzy
+msgid "Gender:"
+msgstr "Geral"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:396
+msgid "Here you can specify your gender."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:402
+msgid "Female"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:403
+#, fuzzy
+msgid "Male"
+msgstr "Valor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:414
+#, fuzzy
+msgid "Location:"
+msgstr "&Localização:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:417
+msgid ""
+"You can describe here your approximate physical location. Something like "
+"\"Region, Country\" will be ok. Please note that this information will be "
+"viewable by anyone so putting more data (like the exact address), generally, "
+"<b>is not a good idea</b>."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:422
+msgid "Languages:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:425
+msgid ""
+"You can put here the short names of the languages you can speak. An example "
+"might be \"EN,IT\" that would mean that you speak both Italian and English."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:429
+#, fuzzy
+msgid "Other:"
+msgstr "Outro..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:432
+msgid ""
+"You can put here some additional personal data. It might be a funny quote or "
+"your homepage url... Please note that this information will be viewable by "
+"anyone so <b>don't put any sensible data</b> (passwords, telephone or credit "
+"card numbers)."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:502
+msgid ""
+"Here you can choose your avatar image. It will be visible<br>by other people "
+"that request it. Choose a nice image of yourself,<br>possibly avoiding "
+"obscenity and offending images. It is a good idea<br>to choose a relatively "
+"small file (say 150 Kb max) because<br>most clients have a limit on the size "
+"of avatars being downloaded.<br>The image also should be smaller than "
+"800x600 pixels since<br>it will have to be viewable in everyone's monitor."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:511
+msgid "Use avatar"
+msgstr "Usar avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:537
+msgid "Choose..."
+msgstr "Escolher..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:598
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:637
+msgid "Failed to Load Avatar - KVIrc"
+msgstr "Falhou ao carregar o avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:599
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:638
+msgid ""
+"Failed to load the avatar image.<br>It may be an unaccessible file or an "
+"unsupported image format."
+msgstr ""
+"Falhou ao carregar a imagem de avatar.<br>Pode ser um arquivo inacessível ou "
+"um formato de imagem não suportado."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:606
+msgid "Failed to download the avatar image.<br><b>%Q</b>"
+msgstr "Falhou o download da imagem de avatar.<br><b>%Q</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:608
+msgid "Avatar Download Failed - KVIrc"
+msgstr "Houve um erro no download do avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:649
+#, fuzzy
+msgid "Avatar Might Be Too Big - KVIrc"
+msgstr "Transferência de Avatar - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:650
+msgid ""
+"The avatar you have choosen is bigger than 1024x768 pixels.<br>Such a big "
+"image will not be seen on all the user monitors<br>and will probably be "
+"scaled by the remote clients with poor quality<br>algorithms to improve "
+"performance. You *should* scale it manually<br>to a sane size (like 800x600) "
+"or choose a different image."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:688
+#, fuzzy
+msgid "Default Messages"
+msgstr "Mensagem de ausência padrão:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:691
+#, fuzzy
+msgid "Part message:"
+msgstr "Messagem de partida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:695
+msgid ""
+"<center>This is the default part message that will be used when you<br>leave "
+"a channel by closing a channel window.</center>"
+msgstr ""
+"<center>Esta é a mensagem padrão de saída que será usada quando <br>deixar "
+"um canal ao fechar a janela do canal.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:699
+#, fuzzy
+msgid "Quit message:"
+msgstr "Mensagem de saída"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:702
+msgid ""
+"<center>This is the default quit message that will be used when you<br>quit "
+"your IRC session by closing the console window or disconnecting by pressing "
+"the disconnect button.</center>"
+msgstr ""
+"<center>Esta é a mensagem quit padrão que será usada quando <br>fechar a sua "
+"sessão IRC ao fechar a janela do console ou desconectar ao clicar no botão "
+"desconectar.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:42
+msgid "Open Query For"
+msgstr "Abrir privado com"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:40
+msgid "Private messages"
+msgstr "Mensagens privadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:46
+msgid ""
+"<center>This option enables query window creation when a private message "
+"(PRIVMSG) is received.<br>If you disable this, private messages will be "
+"shown in the active window or a common channel.</center>"
+msgstr ""
+"<center>Esta opção permite a criação da janela de privado quando uma "
+"mensagem privada (PRIVMSG) for recebida.<br>Se você desabilitar isto, as "
+"mensagens privadas serão exibidas na janela ativa ou em um canal comum.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:42
+msgid "Private notices"
+msgstr "Noticias privadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:55
+msgid ""
+"<center>This option enables query window creation when a private notice "
+"(NOTICE) is received.<br>If you disable this, private notices will be shown "
+"in the active window or a common channel.</center>"
+msgstr ""
+"<center>Esta opção permite a criação da janela de privado quando uma notícia "
+"privada (NOTICE) for recebida.<br>Se você desabilitar isto, as notícias "
+"privadas serão exibidas na janela ativa ou em um canal comum.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:62
+#, fuzzy
+msgid "Always open queries as minimized"
+msgstr "Abrir todos minimizados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:66
+msgid ""
+"<center>This option causes newly created query windows to be immediately "
+"minimized.<br>Enable this if you don't like queries popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+"<center>Esta opção faz com que a janela de privado seja minimizada "
+"imediatamente após ser criada. <br>Habilite isto se você não gosta que "
+"janelas de query sejam instantaneamente exibidas enquanto esitiver digitando "
+"algo em um canal. :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:74
+msgid "Enable target user tracking"
+msgstr "Habilitar perseguição usuário"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:77
+msgid ""
+"<center>This option will enable target user tracking.<br>Some actions of the "
+"target user (e.g. joins and parts) will be displayed in the window.<br></"
+"center>"
+msgstr ""
+"<center>Esta opção permitirá seguir um usuário. Algumas ações do usuário "
+"(ex: entrar e sair de um canal) serão exibidas na janela.<br></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:83
+msgid "Flash system taskbar on new query message"
+msgstr ""
+"Piscar barra de tarefas do sistema ao receber uma nova mensagem de privado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:86
+msgid ""
+"<center>This option causes the system taskbar entry for KVIrc to flash when "
+"a new query message is received and the KVIrc window is not the active.</"
+"center>"
+msgstr ""
+"<center>Esta opção faz com que a entrada do KVIrc na barra de tarefas do "
+"sistema pisque quando uma nova mensagem de privado for recebida e a janela "
+"do KVIrc não for a ativa.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:91
+msgid "Popup notifier on new query message"
+msgstr "Popup do notificador ao receber uma nova mensagem de privado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:94
+msgid ""
+"<center>This option causes a small notifier window to pop up in the low "
+"right corner of the screen when a new message is received and the KVIrc "
+"window is not active.</center>"
+msgstr ""
+"<center>Esta opção faz com que uma pequena janela de notificação seja "
+"exibida instantaneamente no canto direito inferior da tela quando uma nova "
+"mensagem for recebida e a janela do KVIrc não for a ativa.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:98
+msgid "Show information about query target at the top of the query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:101
+msgid ""
+"<center>This option enables query window information label. It can show you "
+"known information about query target at the top of the window.<br>Uncheck if "
+"you think,that it wastes your query space/</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:39
+msgid "Use global application font"
+msgstr "Usar fonte global para aplicação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:40
+#, fuzzy
+msgid "Hide icons in Popup"
+msgstr "Ocultar Janela de Procura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:41
+msgid "Global application font:"
+msgstr "Fonte global da aplicação:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:67
+msgid "Enable fake transparency"
+msgstr "Ativar transparência falsa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:71
+msgid ""
+"<center>This option makes all KVIrc windows look transparent.<br>You must "
+"choose a blending background image to below or check the \"Use KDE desktop "
+"for transparency\" option.</center>"
+msgstr ""
+"<center>Esta opção faz com que a janela do KVirc pareça transparente. "
+"<br>Você deve escolher uma imagem para misturar com o fundo ou marcar a "
+"opção \"Usar a Área de Trabalho KDE para transparência\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:77
+msgid ""
+"<center>This option makes all KVIrc windows look like transparent.<br>You "
+"must choose a blending background image to below.</center>"
+msgstr ""
+"<center>Esta opção faz com que a janela do KVirc pareça transparente. "
+"<br>Deve escolher uma imagem para misturar com o fundo.</center> "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:83
+msgid "Child window opacity:"
+msgstr "Opacidade da janela criada:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:87
+msgid "Parent window opacity:"
+msgstr "Opacidade da janela principal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:91
+msgid "Blend color:"
+msgstr "Cor de Mistura:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:97
+msgid "Use KDE desktop for transparency"
+msgstr "Usar o ambiente KDE para transparência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:102
+msgid "Keep in sync with KDE background changes"
+msgstr "Sincronizar mudanças com o plano de fundo do KDE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:111
+msgid "Transparency blend image:"
+msgstr "Imagem de mistura da transparência:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:155
+msgid "Active Background"
+msgstr "Plano de fundo ativo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:156
+msgid "Inactive Background"
+msgstr "Plano de fundo inativo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:157
+msgid "Active Text (Primary)"
+msgstr "Texto Ativo (Primário)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:158
+msgid "Active Text (Secondary)"
+msgstr "Texto Ativo (Secundário)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:159
+msgid "Inactive Text (Primary)"
+msgstr "Texto Inativo (Primário)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:160
+msgid "Inactive Text (Secondary)"
+msgstr "Texto Inativo (Secundário)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:197
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:44
+msgid "Background"
+msgstr "Plano de fundo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:178
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:205
+msgid "Background Image"
+msgstr "Imagem de Fundo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:198
+msgid "Low-Contrast Foreground"
+msgstr "Contraste Baixo do Primeiro Plano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:199
+msgid "Mid-Contrast Foreground"
+msgstr "Contraste Médio do Primeiro Plano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:200
+msgid "Active High-Contrast Foreground (Primary)"
+msgstr "Contraste Alto Ativo do Primeiro Plano (Primário)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:201
+msgid "Active High-Contrast Foreground (Secondary)"
+msgstr "Contraste Alto Ativo do Primeiro Plano (Secundário)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:202
+msgid "Inactive High-Contrast Foreground (Primary)"
+msgstr "Contraste Alto Inativo do Primeiro Plano (Primário)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:203
+msgid "Inactive High-Contrast Foreground (Secondary)"
+msgstr "Contraste Alto Inativo do Primeiro Plano (Secundário)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:40
+#, fuzzy
+msgid "Scaling in userlist"
+msgstr "Iniciando lista de notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:41
+#, fuzzy
+msgid "Scale avatar images in userlist (recommended)"
+msgstr "Dimensionar imagens avatar (recomendado)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:43
+msgid ""
+"<center>This option will force KVIrc to scale avatars shown in the userlist."
+"<br>Avatars will be scaled to fit the constraints set below. Better keep "
+"this option on. :)</center>"
+msgstr ""
+"<center>Esta opção obrigará o KVIrc a dimensionar os avatares exibidos na "
+"lista de usuários.<br>Os Avatares serão dimensionados para caber nos limites "
+"definidos abaixo. Melhor deixar esta opção ativada. :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:48
+msgid "Do not scale avatar if it is less than required size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:59
+msgid "Image width:"
+msgstr "Largura da Imagem:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:61
+msgid "Image height:"
+msgstr "Altura da Imagem:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:56
+#, fuzzy
+msgid "Scaling on load (and in user tooltips)"
+msgstr "Iniciando lista de notificação"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:57
+#, fuzzy
+msgid "Scale avatar images on image load"
+msgstr "Dimensionar imagens avatar (recomendado)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:65
+#, fuzzy
+msgid "Request CTCP"
+msgstr "Pedir Lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:66
+msgid "Request missing avatars"
+msgstr "Requisitar avatars que faltam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:67
+msgid "Maximum requested file size:"
+msgstr "Tamanho máximo do arquivo pedido:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to send a DCC GET request when someone "
+"sets an avatar and there is no cached copy available.</center>"
+msgstr ""
+"<center>Esta opção faz com que o KVIrc envie um pedido de DCC GET quando "
+"alguém tiver um avatar sem uma cópia disponível armazenada .</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:74
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:317
+msgid " bytes"
+msgstr " bytes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:77
+msgid ""
+"<center>This is the maximum size for avatar images that will be "
+"automatically requested.<br>A reasonable value might be 102400 bytes (100 K)."
+"</center>"
+msgstr ""
+"<center>Este é o tamanho máximo para imagens avatar que serão "
+"automaticamente requisitadas.<br>Um valor razoável pode ser de 102400 bytes "
+"(100 K).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:83
+msgid "Automatically accept incoming avatars"
+msgstr "Aceitar automaticamente avatars"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:87
+msgid ""
+"<center>This option will cause KVIrc to auto-accept DCC SEND requests for "
+"incoming avatars.<br>If you're using the \"Request missing avatars\" option "
+"above, enabling this may by useful.<br>Avatars will be saved in the local "
+"KVIrc directory.</center>"
+msgstr ""
+"<center>Esta opção irá fazer com que o KVirc auto aceite pedidos DCC SEND "
+"para avatars. <br>Se estiver usando a opção \"Pedir avatars que faltam\", "
+"ativar isto pode ser útil.<br> Os avatars serão gravados na diretório KVIrc "
+"local .</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:94
+#, fuzzy
+msgid "Remember avatars for registered users"
+msgstr "Armazenar avatar para usuários registados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:99
+msgid ""
+"<center>Use a user's last known avatar by default (only for users that are "
+"registered).</center>"
+msgstr ""
+"<center>Utilize o último avatar conhecido do usuário por padrão (somente "
+"para usuários registados).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:103
+msgid "Avatar offer timeout:"
+msgstr "Tempo límite de compartilhamento do Avatar:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:104
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:162
+msgid " sec"
+msgstr " segundos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:107
+msgid ""
+"<center>This is the amount of time to make an avatar available for transfer "
+"when requested.<br>When someone sends a CTCP AVATAR request, KVIrc will "
+"reply with a CTCP AVATAR message containing the name and size of your avatar "
+"image.<br>A time-limited file offer is added for the image file to the "
+"requesting user.</center>"
+msgstr ""
+"<center>Este é o límite de tempo para colocar um avatar disponível para "
+"transferência, quando pedido. <br>Quando alguém envia um pedido de CTCP "
+"AVATAR, o KVirc irá responder com uma mensagem CTCP AVATAR que contenha o "
+"nome e o tamanho da sua imagem avatar.<br> Será adicionado um tempo límite "
+"de envio do arquivo de imagem para o usuário em questão.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:115
+msgid "Ignore requests if no avatar is set"
+msgstr "Ignorar pedidos se nenhum avatar estiver definido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:118
+msgid ""
+"This option will cause KVIrc to ignore channel CTCP AVATAR requests when you "
+"have no avatar set. This is usually a good practice since it helps in "
+"reducing traffic by not sending a reply that would be empty."
+msgstr ""
+"Esta opção faz com que o KVirc ignore um pedido de canal CTCP AVATAR quando "
+"não tiver nenhum avatar definido. Geralmente isto é uma boa prática já que "
+"ajuda a reduzir o tráfego ao não enviar uma resposta que estaria vazia."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:39
+msgid "Use online notify list"
+msgstr "Usar lista de notificação online"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:44
+msgid "Configuration"
+msgstr "Configuração"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:45
+msgid "Show notifications in active window"
+msgstr "Exibir notificações na janela ativa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:50
+msgid "Flash window when users are going online"
+msgstr "Piscar janela quando usuários ficarem online"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:55
+msgid "Popup notifier when users are going online"
+msgstr "Notificador por popup quando usuários ficarm online"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:59
+msgid "Advanced configuration"
+msgstr "Configuração avançada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:64
+msgid "Check USERHOST for online users"
+msgstr "Verificar USERHOSTpara usuários online"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:69
+msgid "Use \"smart\" notify list manager"
+msgstr "Usar gerenciador da lista de notificação \"esperto\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:74
+msgid "Use the WATCH method if available"
+msgstr "Usar o método WATCH se disponível"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:79
+msgid "Check interval (in seconds)"
+msgstr "Intervalo de Verificação (em segundos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:85
+msgid "ISON delay (in seconds)"
+msgstr "Intervalo para ISON (em segundos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:91
+msgid "USERHOST delay (in seconds)"
+msgstr "Intervalo para USERHOST(em segundos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:96
+msgid ""
+"<p><b>Note:</b><br>The notify list is managed using the \"Registered Users\" "
+"settings.</p>"
+msgstr ""
+"<p><b>Nota:</b><br>A lista de notificação é gerenciada usando as "
+"configurações dos \"Usuários Registrados\".</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:112
+msgid "Forcibly and completely disable the notifier"
+msgstr "Force a desativação completa do notificador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:115
+msgid ""
+"This is an option for the impatient: it allows to forcibly and permanently "
+"disable the notifier window. Please note that if this option is activated "
+"then the notifier will NOT popup even if all the other options around "
+"specify to use it in response to particular events. Also note that this "
+"option will make all the /notifier.* commands fail silently."
+msgstr ""
+"Esta é uma opção para os impacientes: permite a desativação forçada e "
+"permanente da janela de notificação. Por favor note que se esta opção for "
+"ativada o notificador não exibirá o popup mesmo que todas as opções "
+"restantes especifiquem para usá-lo em resposta as eventos particulares. Note "
+"também que esta opção fará com que todos os comandos /notifier. * falhem "
+"silenciosamente."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:123
+msgid "Disable notifier window flashing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:124
+msgid "Disable notifier window fade effect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:39
+msgid "Default away message:"
+msgstr "Mensagem de ausência padrão:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:41
+msgid "User input exits away mode"
+msgstr "Sair do \"ausente\" ao digitar algo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:43
+msgid "Away Nickname"
+msgstr "Apelido de Ausência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:44
+msgid "Change nickname on away"
+msgstr "Mudar apelido ao ficar ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:47
+msgid "Use automatic nickname ([5 letters]AWAY)"
+msgstr "Usar apelido gerado automaticamente ([5 letras] AWAY)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:55
+#, c-format
+msgid "Custom nickname (%%nick%% means a current nick):"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/libkvioptions.cpp:199
+#, fuzzy
+msgid "No such options page class name %Q"
+msgstr "Sem opções de nome de classe na página"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:47
+#, fuzzy
+msgid "Use system URL handlers"
+msgstr "Manipuladores de URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:50
+msgid "<b>http://</b> handler command:"
+msgstr "Manipulador de comando <b>http://</b>:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:51
+msgid "<b>https://</b> handler command:"
+msgstr "Manipulador de comando <b>https://</b>:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:52
+msgid "<b>ftp://</b> handler command:"
+msgstr "Manipulador de comando <b>ftp://</b>:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:53
+msgid "<b>mailto:</b> handler command:"
+msgstr "Manipulador de comando <b>mailto:</b>:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:54
+msgid "<b>file://</b> handler command:"
+msgstr "Manipulador de comando <b> file://</b>:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:55
+msgid "Unknown protocol handler command:"
+msgstr "Manipulador de protocolo desconhecido:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:61
+msgid "Use proxy"
+msgstr "Usar proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:65
+msgid "Proxy"
+msgstr "Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:76
+msgid ""
+"<center>This is the list of available proxy servers.<br>Right-click on the "
+"list to add or remove proxies.</center>"
+msgstr ""
+"<center>Esta é a lista de servidores proxy disponíveis.<br>Clique com o "
+"botão direito- na lista para adicionar ou remover proxies.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:90
+msgid "New Proxy"
+msgstr "Novo Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:99
+msgid "Remove Proxy"
+msgstr "Remover Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:111
+msgid "Proxy:"
+msgstr "Proxy:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:131
+msgid "Protocol:"
+msgstr "Protocolo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:336
+msgid "&New Proxy"
+msgstr "&Novo Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:337
+msgid "Re&move Proxy"
+msgstr "&Novo Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:71
+msgid "Pattern"
+msgstr "Padrão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:72
+msgid "MIME Type"
+msgstr "Tipo de MIME"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:87
+msgid "MIME type:"
+msgstr "Tipo de MIME:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:92
+msgid "File pattern:"
+msgstr "Padrão de Arquivo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:97
+msgid "Magic bytes:"
+msgstr "Bytes mágicos:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:102
+msgid "Save path:"
+msgstr "Salvar caminho:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:107
+msgid "Local open command:"
+msgstr "Comando de abertura local:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:112
+msgid ""
+"<center>This field contains the command to execute to open a local file."
+"<br><tt>$0</tt> is used in place of the filename</center>"
+msgstr ""
+"<center>Este campo contem o comando para executar a abertura de um arquivo "
+"local.<br><tt>$0</tt> é usado no lugar do nome do arquivo</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:116
+msgid "Remote open command:"
+msgstr "Comando de abertura remota:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:121
+msgid ""
+"<center>This field contains the command to execute when automatically "
+"opening a received file.<br><tt>$0</tt> is used in place of the filename</"
+"center>"
+msgstr ""
+"<center>Este campo contem o comando para executar automaticamente a abertura "
+"um arquivo recebido.<br><tt>$0</tt> é usado no lugar do nome do arquivo</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:125
+msgid "Icon"
+msgstr "Ícone"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:134
+msgid "&New"
+msgstr "&Novo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:138
+msgid "Re&move"
+msgstr "Re&mover"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:184
+msgid "[Unknown Media Type]"
+msgstr "[Tipo de Midia Desconhecida]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:230
+msgid "New Media Type"
+msgstr "Novo Tipo de Midia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:53
+msgid "Nickname Colors"
+msgstr "Cores de Apelido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:56
+msgid "Channel owner:"
+msgstr "Proprietário do canal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:57
+msgid "Channel admin:"
+msgstr "Administrador do Canal:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:58
+msgid "Op:"
+msgstr "Op:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:59
+msgid "Half-op:"
+msgstr "Semioperador:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:60
+msgid "Voice:"
+msgstr "Voice:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:61
+msgid "User-op:"
+msgstr "Usuários operadores:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:62
+#, fuzzy
+msgid "Away:"
+msgstr "Ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:66
+msgid "Use different color for own nick:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:81
+msgid "Draw nickname grid"
+msgstr "Desenhar grade de apelido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:83
+msgid "Grid color:"
+msgstr "Cor da grade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:90
+msgid "Grid type:"
+msgstr "Tipo de Grade:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:94
+msgid "3D Grid"
+msgstr "Grade-3D"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:95
+msgid "3D Buttons"
+msgstr "Botões-3D"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:96
+msgid "Plain Grid"
+msgstr "Grade Plana"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:97
+msgid "Dotted Grid"
+msgstr "Grade Pontilhada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:131
+msgid "Horizontal Alignment:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:135
+#, fuzzy
+msgid "Vertical Alignment:"
+msgstr "Local do certificado:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:231
+#, fuzzy
+msgid "Show gender icons"
+msgstr "Exibir ícones nas mensagens"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:232
+msgid "Show user channel icons"
+msgstr "Exibir ícones de usuário do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:233
+msgid "Show user channel activity indicator"
+msgstr "Exibir indicador de atividade de usuários do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:234
+msgid "Hide users label"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:235
+msgid "Enable user tooltips"
+msgstr "Habilitar dicas de usuário"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:236
+#, fuzzy
+msgid "Hide avatars"
+msgstr "Usar avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:79
+msgid "Use flood protection (recommended)"
+msgstr "Usar proteção contra flood (recomendado)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:81
+msgid ""
+"<center>This option makes KVIrc only respond to a limited number of CTCP "
+"requests within a specified time interval, to prevent \"flooding\" CTCP "
+"messages.</center>"
+msgstr ""
+"<center>Esta opção faz com que o KVirc apenas responda a número limitado de "
+"pedidos CTCP dentro de um intervalo de tempo especificado, para prevenir o "
+"\"flood\" de mensagens CTCP.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:83
+msgid "Allow up to:"
+msgstr "Permitir até:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:84
+msgid " requests"
+msgstr " pedidos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:86
+msgid ""
+"<center>Minimum value: <b>0 requests</b><br>Maximum value: <b>10000 "
+"requests</b></center>"
+msgstr ""
+"<center>Valor mínimo: <b>0 pedidos</b><br>Valor máximo: <b>10000 pedidos</"
+"b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:89
+msgid "within:"
+msgstr "dentro de:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:92
+msgid ""
+"<center>Minimum value: <b>1 sec</b><br>Maximum value: <b>3600 sec</b></"
+"center>"
+msgstr ""
+"<center>Valor mínimo: <b>1 seg</b><br>Valor máximo: <b>3600 seg</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:96
+msgid "Ignored Requests"
+msgstr "Pedidos Ignorados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:97
+msgid "PING"
+msgstr "PING"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:98
+msgid "FINGER"
+msgstr "FINGER"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:99
+msgid "CLIENTINFO"
+msgstr "CLIENTINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:100
+msgid "USERINFO"
+msgstr "USERINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:101
+msgid "VERSION"
+msgstr "VERSION"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:102
+msgid "SOURCE"
+msgstr "SOURCE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:103
+msgid "TIME"
+msgstr "TIME"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:104
+msgid "PAGE"
+msgstr "PAGE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:105
+msgid "AVATAR"
+msgstr "AVATAR"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:106
+msgid "DCC/TDCC"
+msgstr "DCC/TDCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:131
+msgid "General Preferences"
+msgstr "Preferências Gerais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:134
+#, fuzzy
+msgid "Theme Preferences"
+msgstr "Preferências"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:136
+#, fuzzy
+msgid "KVIrc Preferences"
+msgstr "Preferências"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:139
+msgid ""
+"This dialog contains a set of KVIrc settings.<br> Use the icons on the left "
+"to navigate through the option pages. The text box in the bottom left corner "
+"is a small search engine. It will highlight the pages that contain options "
+"related to the search term you have entered."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:147
+msgid ""
+"Many settings have tooltips that can be shown by holding the cursor over "
+"their label for a few seconds."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:152
+msgid ""
+"When you have finished, click \"<b>OK</b>\" to accept your changes or "
+"\"<b>Cancel</b>\" to discard them. Clicking \"<b>Apply</b>\" will commit "
+"your changes without closing the window."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:217
+msgid ""
+"<p>This is the search tool for this options dialog.</p><p>You can enter a "
+"search term either in your native language or in english and press the "
+"button on the right. The pages that contain some options related to the "
+"search term will be highlighted and you will be able to quickly find them.</"
+"p><p>Try \"nickname\" for example.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:249
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:61
+msgid "Close this dialog, accepting all changes."
+msgstr "Fecha esta caixa de diálogo, aceitando todas as alterações."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:255
+msgid "&Apply"
+msgstr "&Aplicar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:256
+msgid "Commit all changes immediately."
+msgstr "Aplicar as alterações imediatamente."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:69
+msgid "Close this dialog, discarding all changes."
+msgstr "Fecha esta caixa de diálogo, rejeitando todas as alterações."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:149
+msgid ""
+"This table contains the text icon associations.<br>KVirc will use them to "
+"display the CTRL+I escape sequences and eventually the emoticons."
+msgstr ""
+"Esta tabela contém as associações de ícones de texto.<br>O KVIrc os "
+"utilizará para visualizar às sequências de escape CTRL+I e eventualmente os "
+"ícones emotivos."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:165
+msgid "Add"
+msgstr "Adicionar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:169
+msgid "Delete"
+msgstr "Deletar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:191
+msgid "unnamed"
+msgstr "Semnome"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:53
+msgid "Enable word highlighting"
+msgstr "Habilitar destaque de palavras"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:55
+msgid "Words to highlight:"
+msgstr "Palavras a destacar:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:57
+msgid "Word splitters:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:59
+msgid "Highlight messages containing my nickname"
+msgstr "Destacar mensagens que contenham o meu apelido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:61
+msgid ""
+"<center>If this option is enabled, KVIrc will highlight any user message "
+"containing your current nickname</center>"
+msgstr ""
+"<center>Se esta opção estiver ativa, o KVirc irá destacar qualquer mensagem "
+"de usuário que tenha o seu apelido atual</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:63
+msgid "Flash the system taskbar entry on highlighted messages"
+msgstr "Piscar a barra de tarefas do sistema nas mensagens destacadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:65
+msgid ""
+"<center>If this option is enabled, KVIrc will (attempt to) flash the system "
+"taskbar entry when a highlighted message is printed and KVIrc is not the "
+"active window</center>"
+msgstr ""
+"<center>Se esta opção estiver ativa, o KVirc irá (tentar) piscar a entrada "
+"na barra de tarefas do sistema quando uma mensagem destacada for exibida e a "
+"janela do KVirc não estiver ativa.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:67
+msgid "Popup the notifier window on highlighted messages"
+msgstr "Exibir a janela de notificação nas mensagens destacadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:69
+msgid ""
+"<center>If this option is enabled, KVIrc will popup a little notifier window "
+"in the low right corner of your desktop when a highlighted message is "
+"printed and KVIrc is not the active window</center>"
+msgstr ""
+"<center>Se esta opção estiver ativa, o KVirc irá mostrar uma pequena janela "
+"de notificação no canto inferior direito do seu Área de Trabalho, quando uma "
+"mensagem destacada for exibida e o KVirc não for a janela ativa</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:91
+#, fuzzy
+msgid "Alert Restrictions"
+msgstr "Editar Registro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:92
+msgid "Restrict alert"
+msgstr "Alerta restrito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:94
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if a "
+"normal message is received in a channel.<br>Actions like joins, parts and "
+"mode changes will be ignored.<br> This is useful if you are in channels with "
+"a high rate of traffic and only want to be alerted for messages that are "
+"interesting to you.</center>"
+msgstr ""
+"<center>Se esta opção estíver ativa, o KVirc irá alertar na barra de tarefas "
+"apenas se uma mensagem normal for recebida em um canal.<br>Ações como "
+"entrar, partir e mudança de modos serão ignoradas.<br> Isto é útil se "
+"estiver em canais com uma alta taxa de tráfego e você quiser ser alertado "
+"apenas por mensagens que lhe interessam.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:96
+msgid "Alert for highlighted words"
+msgstr "Alerta para palavras destacadas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:98
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which contain a word from the highlighted words list above.</center>"
+msgstr ""
+"<center>Se esta opção estiver ativa, a barra de tarefas também irá alertar "
+"para mensagens que contenham uma palavra da lista de palavras destacadas.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:100
+msgid "Alert for query messages"
+msgstr "Alerta para mensagens query"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:102
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which are shown in queries.</center>"
+msgstr ""
+"<center>Se esta opção estiver ativa, a barra de tarefas também irá alertar "
+"para mensagens exibidas nos queries.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:107
+msgid "Use custom alert level"
+msgstr "Usar nível de alerta personalizado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:109
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if "
+"the specified alert level is reached.</center>"
+msgstr ""
+"<center>Se esta opção estiver ativa, o KVirc irá alertar na barra de tarefas "
+"apenas se o nível de alerta especificado for alcançado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:111
+msgid "Minimum alert level:"
+msgstr "Nível de alerta mínimo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:114
+msgid ""
+"<center>This option sets the minimum alert level for the taskbar.</center>"
+msgstr ""
+"<center>Esta opção define o nível de alerta mínimo para a barra de tarefas.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:213
+msgid "Output verbosity"
+msgstr "Saída detalhada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:49
+msgid "Mute"
+msgstr "Mudo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:50
+msgid "Quiet"
+msgstr "Quieto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:51
+msgid "Normal"
+msgstr "Normal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:52
+msgid "Verbose"
+msgstr "Verbose"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:53
+msgid "Paranoic"
+msgstr "Paranoico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:59
+msgid "Show in active window"
+msgstr "Exibir na janela ativa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:60
+msgid "External messages"
+msgstr "Mensagens externas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:61
+msgid "External CTCP replies"
+msgstr "Resposta CTCP externas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:62
+msgid "Whois replies"
+msgstr "Respostas whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:63
+msgid "ChanServ and NickServ notices"
+msgstr "Noticias do Chanserv e Nickserv"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:64
+msgid "Invite messages"
+msgstr "Mensagens de convite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:65
+msgid "Server replies"
+msgstr "Respostas do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:66
+msgid "Server notices"
+msgstr "Noticias do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:67
+msgid "Broadcast and WALLOPS messages"
+msgstr "Mensagens de difusão da rede e WALLOPS"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:70
+msgid "Show extended server information"
+msgstr "Exibir informações extendidas do servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:71
+msgid "Show server pings"
+msgstr "Exibir pings do Servidor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:72
+msgid "Show own parts in the console"
+msgstr "Exibir saídas próprias no console"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:73
+msgid "Show compact mode changes"
+msgstr "Exibir mudanças de modo compactas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:43
+#, fuzzy
+msgid "Minimize on startup"
+msgstr "Minimizar novos privados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:44
+msgid "Confirm quit with active connections"
+msgstr "Confirmar quit com conexões ativas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:45
+msgid "Remember window properties"
+msgstr "Lembrar propriedades da janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:50
+#, fuzzy
+msgid "Disable splash screen"
+msgstr "Desabilitar avisos de parser"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:54
+msgid "Enable visual effects"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:55
+msgid "Hide Channel window tool buttons by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:57
+msgid "Open Dialog Window For"
+msgstr "Abrir Janela de Diálogo Para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:58
+msgid "Preferences"
+msgstr "Preferências"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:59
+msgid "Registered Users"
+msgstr "Usuários Registados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:149
+msgid "Servers"
+msgstr "Servidores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.cpp:40
+msgid ""
+"This section contains irc tools<br><p>like<b> away, lag and logging system. "
+"</b> </p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:39
+#, fuzzy
+msgid "On Disconnect"
+msgstr "Desconectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:42
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:55
+msgid "Keep channels open"
+msgstr "Manter canais abertos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:44
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after disconnect."
+"</center>"
+msgstr ""
+"<center>Esta opção faz com que o KVIrc mantenha os canais abertos após uma "
+"desconexão inesperada.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:47
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:60
+msgid "Keep queries open"
+msgstr "Manter conversas abertas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:49
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after disconnect.</"
+"center>"
+msgstr ""
+"<center>Esta opção faz com que o KVIrc mantenha os queries abertos após uma "
+"desconexão inesperada.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:52
+msgid "On Unexpected Disconnect"
+msgstr "Ao Desconectar Inesperadamente "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+"<center>Esta opção faz com que o KVIrc mantenha os canais abertos após uma "
+"desconexão inesperada.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:62
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+"<center>Esta opção faz com que o KVIrc mantenha os queries abertos após uma "
+"desconexão inesperada.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:65
+msgid "Rejoin channels after reconnect"
+msgstr "Voltar aos canais após reconectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:67
+msgid ""
+"<center>This option will cause KVIrc to rejoin channels after a successful "
+"reconnect attempt.</center>"
+msgstr ""
+"<center>Esta opção faz com que o KVIrc volte aos canais após uma tentativa "
+"de reconexão bem sucedida.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:69
+msgid "Reopen queries after reconnect"
+msgstr "Reabrir queries após reconectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to reopen query windows after a "
+"successful reconnect attempt.</center>"
+msgstr ""
+"<center>Esta opção faz o KVIrc abrir novamente os queries após uma tentativa "
+"de reconexão bem sucedida.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:75
+msgid "Automatically reconnect"
+msgstr "Reconectar automaticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:77
+msgid ""
+"<center>This option will enable auto-reconnecting after an unexpected "
+"disconnect. An unexpected disconnect is the <b>termination</b> of a <b>fully "
+"connected IRC session</b> that was <b>not requested by the user</b> by the "
+"means of the QUIT message.<p><b>Warning:</b> If you use /RAW to send a QUIT "
+"message to the server, this option will not behave correctly, since does not "
+"detect the outgoing QUIT message and will attempt to reconnect after the "
+"server has closed the connection. For this reason, always use the /QUIT "
+"command to close your connections. This option may also behave incorrectly "
+"with bouncers that support detaching, in this case a solution could be to "
+"prepare an alias that sends the bouncer \"detach\" command immediately "
+"before the \"quit\" command.<br><tt>alias(bncdetach){ raw bouncer detach; "
+"quit; }</tt></p></center>"
+msgstr ""
+"<center>Esta opção ativa a auto-reconexão após uma desconexão inesperada. "
+"Uma desconexão inesperada é a <b>finalização</b> de uma<b> sessão de IRC "
+"completa </b>que não foi <b>pedida pelo usuário</b> por meio de uma mensagem "
+"QUIT.<p><b>Aviso:</b> se utilizar o /RAW para enviar uma mensagem QUIT para "
+"o servidor, esta opção não irá funcionar corretamente, isto porque não será "
+"detectada a saida de uma mensagem QUIT e tentará reconectar depois que o "
+"servidor fechar a conexão. Por esta razão, use sempre o comando /QUIT para "
+"fechar as suas conexões. Esta opção também pode se comportar incorretamente "
+"com 'bouncers' que suportem 'detaching', neste caso a solução pode ser "
+"preparar um alias que envie o comando \"detach\" do 'bouncer' imediatamente "
+"antes do comando \"quit\".<br><tt>alias(bncdetach){ raw bouncer detach; "
+"quit; }</tt></p></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:89
+msgid "Maximum attempts (0: unlimited):"
+msgstr "Máximo de tentativas (0: ilimitadas):"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:94
+msgid "Delay between attempts:"
+msgstr "Intervalo de tempo entre às tentativas:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:100
+msgid ""
+"<center>Minimum value: <b>0 sec</b><br>Maximum value: <b>86400 sec</b></"
+"center>"
+msgstr ""
+"<center>Valor mínimo: <b>0 segundos</b><br>Valor máximo: <b>86400 segundos</"
+"b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:123
+msgid "Certificate"
+msgstr "Certificado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:125
+msgid "Use SSL certificate (PEM format only)"
+msgstr "Usar certificado SSL (somente formato PEM)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:127
+msgid "Certificate location:"
+msgstr "Local do certificado:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:130
+msgid "Certificate password:"
+msgstr "Senha do certificado:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:134
+msgid "Private Key"
+msgstr "Chave privada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:135
+msgid "Use SSL private key"
+msgstr "Usar chave SSL privada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:137
+msgid "Private key location:"
+msgstr "Local da chave privada:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:140
+msgid "Private key password:"
+msgstr "Senha da chave privada:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:146
+msgid "This executable has no SSL support."
+msgstr "Este executavel nao tem suporte SSL."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:165
+msgid "Timeout Values"
+msgstr "Valores de Limite deTempo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:166
+msgid "Connect timeout:"
+msgstr "Limite de tempo para conectar:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:168
+msgid "Outgoing data queue flush timeout:"
+msgstr "Limite de Tempo para voltar com a saída de dados:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:170
+msgid "Limit outgoing traffic"
+msgstr "Limitar trafego de saida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:171
+msgid "Limit to 1 message every:"
+msgstr "Limite a 1 mensagem cada:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:173
+msgid " usec"
+msgstr " microsegundos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:175
+msgid ""
+"<center>Minimum value: <b>10000 usec</b><br>Maximum value: <b>10000000 usec</"
+"b></center>"
+msgstr ""
+"<center>Valor mínimo: <b>10000 microsegundos</b><br>Valor máximo: "
+"<b>10000000 microsegundos</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:179
+msgid "Network Interfaces"
+msgstr "Interfaces de Rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:181
+msgid "Bind IPv4 connections to:"
+msgstr "Fazer conexões IPv4 usando:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:185
+msgid "Bind IPv6 connections to:"
+msgstr "Fazer conexões IPv4 usando:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:210
+msgid "Enable ident service (bad practice on UNIX!)"
+msgstr "Habilitar serviço de ident (não recomendado no UNIX)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:216
+#, fuzzy
+msgid "Output identd messages to:"
+msgstr "Mensagem de saída"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:218
+#, fuzzy
+msgid "Active window"
+msgstr "Janelas lado a lado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:219
+#, fuzzy
+msgid "Console"
+msgstr "Fechar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:220
+#, fuzzy
+msgid "Do not show any identd messages"
+msgstr "Não exibir cores nas mensagens de usuários"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:237
+msgid "Enable ident service only while connecting to server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:240
+msgid "Ident username:"
+msgstr "Nome de usuário do ident:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:243
+msgid "Service port:"
+msgstr "Porta do serviço:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:248
+msgid "IPv6 Settings"
+msgstr "Configurações do IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:249
+msgid "Enable service for IPv6"
+msgstr "Habilitar serviço para IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:258
+msgid "IP stack treats IPv4 as part of IPv6 namespace"
+msgstr "A pilha do sistema trata IPv4 como parte do espaço de nomes IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:265
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications. If it is possible, install a real ident daemon.</p>"
+msgstr ""
+"<p><b>Aviso:</b><br>Isto é um <b>daemon ident</b> não RFC 1413 complilante "
+"que implementa apenas um sub grupo de especificações do Protocolo de "
+"Identificação. Se possível, instale um daemon ident real.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:270
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications.<br>On UNIX, you may also need root privileges to bind to the "
+"auth port (113).<br>It is <b>highly recommended</b> that a <b>real</b> "
+"system-wide ident daemon be used instead, or none at all if ident is not "
+"required.</p>"
+msgstr ""
+"<p><b>Aviso:</b><br>Isto é um daemon ident <b>não RFC 1413 complacente</b> "
+"que implementa apenas um limite de sub definições das especificações do "
+"Protocolo de Identificação. <br>Em UNIX, você pode também precisar de "
+"privilégios root para ligar à porta de autenticação (113).<br>É <b>altamente "
+"recomendado</b> que um daemon ident <b>real</b> do sistema seja usado, ou "
+"nenhum se o ident não for requerido.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.cpp:39
+msgid ""
+"This section contains the general client options<br><p>like<b> sound, "
+"mediafiles, URL handler </b> etc... </p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:39
+msgid "Automatically Log"
+msgstr "Log Automático"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:40
+msgid "Query windows"
+msgstr "Janelas de Privado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:41
+msgid "Channel windows"
+msgstr "Janelas de canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:42
+msgid "DCC Chat windows"
+msgstr "Janelas de DCC Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:43
+msgid "Console windows"
+msgstr "Janelas de console"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:45
+msgid "Gzip logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:47
+#, fuzzy
+msgid "Strip colors in logs"
+msgstr "Tirar cores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:48
+msgid "Auto flush logs every"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:49
+msgid " min"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:52
+msgid ""
+"<center>Save logs with the current interval<br>Set to 0 to disable this "
+"feature</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:49
+msgid "Minimize console after successful login"
+msgstr "Minimizar console após entrar corretamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:52
+msgid ""
+"<center>This option will cause KVIrc to minimize the console window after "
+"successfully logging into a server.</center>"
+msgstr ""
+"<center>Esta opção irá fazer com que o KVirc minimize a janela de console "
+"depois de entrar com sucesso em um servidor.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:55
+#, fuzzy
+msgid "Show network name in console taskbar entry"
+msgstr "Exibir icones na barra de tarefas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to show the network name as the console "
+"taskbar entry instead of the server name. This is nice to keep on unless "
+"your servers are not organized in networks or you often connect to two "
+"servers of the same network.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:75
+msgid "Force immediate quit"
+msgstr "Forçar quit imediato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:78
+msgid ""
+"<center>This option causes KVIrc to close the connection immediately after "
+"sending the QUIT message.<br>When this option is disabled, KVIrc will wait "
+"for the server to close the connection.<br>Note that if you use this, your "
+"QUIT message may be not displayed.</center>"
+msgstr ""
+"<center>Esta opção faz com que o KVirc feche a conexão imediatamente após "
+"enviar a mensagem QUIT.<br>Quando esta opção está desativada, o KVirc irá "
+"esperar que servidor feche a conexão.<br>Note que se utilizar isto, a "
+"mensagem de QUIT pode não ser exibida.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:84
+msgid "Prepend gender info to realname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:110
+msgid "On Channel Kick"
+msgstr "Ao ser Chutado do Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:112
+msgid "Rejoin channel"
+msgstr "Reentrar no canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:115
+msgid ""
+"<center>This option will cause KVIrc to attempt to rejoin a channel after "
+"being kicked.</center>"
+msgstr ""
+"<center>Esta opção faz com que o KVirc tente reentrar em um canal depois de "
+"ser chutado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:129
+msgid "Keep channel open"
+msgstr "Manter janela de canal aberta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:121
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"being kicked.<br>It might be a good idea to also enable the \"Rejoin channel"
+"\" option.</center>"
+msgstr ""
+"<center>Esta opção fará com que o KVirc mantenha a janela do canal aberta "
+"após ser chutado.<br>Pode ser uma boa ideia também ativar a opção\"Reentrar "
+"no canal\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:127
+msgid "On Channel Part"
+msgstr "Ao Sair do Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:132
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"leaving it.</center>"
+msgstr ""
+"<center>Esta opção fará com que o KVirc mantenha a janela do canal aberta "
+"depois de sair do canal.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:136
+msgid "Automatically join channel on invite"
+msgstr "Entrar automaticamente no canal quando convidado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:139
+msgid ""
+"<center>This option will cause KVIrc to automatically join a channel when an "
+"INVITE message for that channel is received.<br><b>Warning:</b> This may "
+"help spammers harass you. :)</center>"
+msgstr ""
+"<center>Esta opção fará com que o KVirc entre automaticamente em um canal "
+"quando uma mensagem de CONVITE para esse canal for recebida.<br><b>Aviso:</"
+"b>Isto pode ajudar alguns spammers a te chatear. :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:144
+#, fuzzy
+msgid "Always open channels as minimized"
+msgstr "Abrir todos minimizados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:148
+#, fuzzy
+msgid ""
+"<center>This option causes newly created channel windows to be immediately "
+"minimized.<br>Enable this if you don't like channels popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+"<center>Esta opção faz com que a janela de privado seja minimizada "
+"imediatamente após ser criada. <br>Habilite isto se você não gosta que "
+"janelas de query sejam instantaneamente exibidas enquanto esitiver digitando "
+"algo em um canal. :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:168
+#, fuzzy
+msgid "Log joined channels history"
+msgstr "Lista de canais registrados:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:170
+#, fuzzy
+msgid "Default ban mask:"
+msgstr "Mensagem de ausência padrão:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:188
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:202
+msgid "On Channel Join"
+msgstr "Ao Entrar em um Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:189
+msgid "Do not send /WHO request"
+msgstr "Não enviar pedido /WHO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:190
+msgid "Do not request ban list"
+msgstr "Não enviar pedido de lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:191
+msgid "Do not request ban exception list"
+msgstr "Não pedir lista com excepções de bans"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:192
+msgid "Do not request invite list"
+msgstr "Não pedir lista de convites"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:194
+#, fuzzy
+msgid "Do not update the away list"
+msgstr "Não enviar pedido de lista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:197
+msgid ""
+"<center>KVIrc sends out a channel /WHO message every now and then to keep "
+"the channel away list in sync. Use this option to disable this feature (and "
+"to save your IRC bandwidth.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:203
+msgid "Echo channel topic"
+msgstr "Exibir tópico do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:204
+msgid "Show channel sync time"
+msgstr "Exibir o tempo de sincronização do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:40
+msgid "Default text encoding:"
+msgstr "Codificação de texto padrão:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:109
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:133
+msgid "Use Language Encoding"
+msgstr "Usar Codificação de Língua"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:59
+msgid "Force language:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:65
+msgid "<b>Note:</b> You need to restart KVirc to apply a language changing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:68
+#, fuzzy
+msgid "Automatic detection"
+msgstr "Reconectar automaticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:69
+msgid "en"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+#, fuzzy
+msgid "Unable to write language information to"
+msgstr "Não foi possível escrever no arquivo de ações."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:39
+msgid "Enable Anti-spam For"
+msgstr "Ativar Anti-spam Para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:45
+msgid "Silent anti-spam (no warnings)"
+msgstr "Anti-spam Silencioso (sem avisos)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:46
+msgid "Words considered spam:"
+msgstr "Palavras consideradas spam:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:51
+msgid "Use workaround for firewall"
+msgstr "Tentar funcionar atrás de firewall"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:54
+msgid ""
+"<center>Enable this option if you can't accept incoming connections."
+"<br>KVIrc will try to use different methods to send and receive files."
+"<br>Please note that these methods may NOT work when communicating with a "
+"non-KVIrc client.</center>"
+msgstr ""
+"<center>Ative esta opção se não consegue aceitar conexões.<br>O KVirc irá "
+"tentar usar diferentes métodos para enviar e receber arquivos.<br>Por favor "
+"note que este método pode NÃO funcionar quando estiver se comunicando com "
+"clientes que não utilizem o KVirc.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:73
+msgid "Network Properties"
+msgstr "Propriedades da Rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:75
+msgid "Use user-defined address or network interface"
+msgstr "Usar o endereço definido pelo usuário ou uma interface de rede"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:79
+msgid ""
+"<center>Enable this option if you are on a multihost machine and want to "
+"force one of the available IP addresses to be used for outgoing DCCs."
+"<br>This is especially useful when you use IPv6 and IPv4 addresses.<br>You "
+"can force KVIrc to always choose the IPv4 interface.</center>"
+msgstr ""
+"<center>Ative esta opção se ester em uma máquina multihost e quer forçar um "
+"dos endereços IP disponiveis para ser usado no envio de DCCs.<br>Isto é "
+"especialmente util quando se utiliza endereço IPv6 e IPv4. <br>Você pode "
+"forçar o KVirc para sempre escolher um interface IPv4.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:84
+msgid "Listen on address/interface:"
+msgstr "Escutar em um endereço/interface:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:87
+msgid ""
+"<center>This is the IP address or name of the interface to use by default "
+"for outgoing DCC transfers.<br>On UNIX systems that support it, you can also "
+"specify IPv4 interface names (such as <b>ppp0</b>).<br>If you set it to "
+"<b>0.0.0.0</b>, KVIrc will try to use the first available IPv4 interface</"
+"center>"
+msgstr ""
+"<center>Este é o endereço IP ou nome de interface para ser usada por padrão "
+"para envio de transferências DCC. <br>Em sistemas UNIX que suportam isto, "
+"você também pode especificar nomes de interfaces IPv4 (tais como <b>ppp0</"
+"b>).<br>Se você definir para utilizar <b>0.0.0.0</b>, o KVirc irá tentar "
+"usar a primeira interface IPv4 disponível.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:94
+msgid "Use user-defined port range"
+msgstr "Usar intervalo de portas definido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:97
+msgid ""
+"<center>Enable this option if you want specify a local port range for DCC.</"
+"center>"
+msgstr ""
+"<center>Ative esta opção se quiser especificar um intervalo de portas locais "
+"para DCC.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:102
+msgid "Lowest port:"
+msgstr "Porta mais baixa:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:105
+msgid "Highest port:"
+msgstr "Porta mais alta:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:108
+msgid "Send a fixed address in requests"
+msgstr "Enviar um endereço fixo nos pedidos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:111
+msgid ""
+"<center>Enable this option if you want to always send a fake IP address in "
+"your DCC requests.<br>This might be useful if you're behind a router with a "
+"static address that does network address translation (NAT) and forwards all "
+"or a range of ports.</center>"
+msgstr ""
+"<center>Ative esta opção se quiser enviar sempre um endereço IP falso nos "
+"seus pedidos DCC. <br>Isto pode ser útil se estiver atrás de um router com "
+"um endereço estático que faz traduções de endereços de rede (NAT) e adianta "
+"todas ou apenas uma extensão de portas.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:115
+msgid "Send address/interface:"
+msgstr "Enviar endereço/interface:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:119
+msgid ""
+"<center>This is the fixed address that will be sent with all DCC requests if "
+"you enable the option above.</center>"
+msgstr ""
+"<center>Este é o endereço fixo que será enviado a todos os pedidos DCC se "
+"você ativar a opção acima.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:123
+msgid "Guess address from IRC server if unroutable"
+msgstr "Adivinhar o endereço do servidor de IRC se fora de alcance"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:128
+msgid ""
+"<center>You can enable this option if you are behind a router that forwards "
+"all or a range of ports.<br>KVIrc will try to guess the IP address to use "
+"for DCC by looking up the local hostname as seen by the IRC server you're "
+"connected to.<br>This method is an exclusive alternative to the \"fixed "
+"address\" above.<br>It might guess the correct address automatically if "
+"certain conditions are met (e.g. the IRC server does not mask hostnames).</"
+"center>"
+msgstr ""
+"<center>Você pode ativar esta opção se estiver atrás de um router que envia "
+"tudo ou um intervalo de portas.<br>O KVirc irá tentar adivinhar o endereço "
+"IP a usar para DCC ao procurar o nome do servidor local como visto pelo "
+"servidor IRC onde está ligado.<br>Este método é uma alternativa exclusiva ao "
+"\"endereço fixo\" indicado.<br>Voc pode adivinhar automaticamente o endereço "
+"correto se verificarem certas condições(por ex: o servidor de IRC não "
+"mascára os nomes dos servidores).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:134
+msgid "Use \"broken bouncer hack\" to detect address"
+msgstr "Usar \"broken bouncer hack\" para detectar endereços"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:137
+msgid ""
+"<center>When you're behind a dialup router and also tunneling through a "
+"psyBNC bouncer, you can use a bug in the bouncer to force KVIrc to bind the "
+"DCC connections to the dialup router's address.<br>It's an ugly hack - use "
+"it only if nothing else works.</center>"
+msgstr ""
+"<center>Quando estiver atrás de um roteador dialup, e também passa através "
+"de um bouncer psyBNC, você pode usar um erro no bouncer para forçar o KVirc "
+"a juntar as ligações DCC ao endereço do modem de onde o roteador se liga."
+"<br>É um hack feio, use-o apenas se nada mais tiver dado resultado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:144
+msgid "Notify failed DCC handshakes to the remote end"
+msgstr "Notificar ao outro extremo as negociações de DCC que falharem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:147
+msgid ""
+"<center>If you enable this option, when a DCC request from a remote user "
+"can't be satisfied KVIrc will notify him by a CTCP ERRMSG. This is a nice "
+"feature so it is a good idea to leave it on unless for some reason you have "
+"deactivated the antiflood system: in this case turning off this option might "
+"help if you often get attacked by CTCP floods.</center>"
+msgstr ""
+"<center>Se ativar esta opção, quando não puder satisfazer um pedido DCC de "
+"um usuário remoto, KVIrc o notificará mediante um CTCP ERRMSG. Esta é uma "
+"característica agradável por isso é uma boa idéia deixa-la ativa a menos que "
+"por alguma razão tenha desativado o sistema antiflood: neste caso desativar "
+"esta opção pode ajudar se você for frequentemente atacado por CTCP floods</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:154
+msgid "Maximum number of DCC sessions"
+msgstr "Número máximo de sessões DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:156
+msgid ""
+"<center>This is the maximum number of concurrent DCC sessions and it "
+"includes all the DCC types (send,chat,recv...). KVIrc will refuse the "
+"requests when this limit is reached.</center>"
+msgstr ""
+"<center>Este é o número máximo de sessões DCC simultâneas e inclue todos os "
+"tipos de DCC (envío, chat, recepção...). KVIrc irá recusar os pedidos quando "
+"este límite for alcançado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:161
+msgid "DCC socket timeout:"
+msgstr "Tempo limite do Socket DCC:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:164
+msgid ""
+"<center>This is the amount of time that KVIrc will wait for a response "
+"before assuming that a DCC has failed because the remote client was unable "
+"to connect to our listening socket.</center>"
+msgstr ""
+"<center>Este é o tempo que o KVirc irá esperar por uma resposta antes de "
+"assumir que o DCC falhou, porque o cliente remoto não foi capaz de conectar "
+"ao nosso socket em escuta.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:198
+msgid "On Incoming File"
+msgstr "Ao Receber Arquivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:371
+msgid "Automatically accept"
+msgstr "Aceitar automaticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:200
+#, fuzzy
+msgid "Open transfer window as minimized when auto-accepted"
+msgstr "Abrir minimizado quando aceitar automaticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:201
+msgid "Automatically resume when auto-accepted"
+msgstr "Resumir automaticamente quando auto-aceitar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:203
+#, fuzzy
+msgid "Save Location"
+msgstr "&Localização:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:204
+msgid "Download folder:"
+msgstr "Diretório de Download:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:205
+msgid "Sort saved files by nicknames (create subfolders)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:206
+msgid "Guess save path from media type"
+msgstr "Adivinhar o caminho de gravação pelo tipo de mídia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:209
+#, fuzzy
+msgid "On Download Completion"
+msgstr "Diretório de Download:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:210
+msgid "Notify completion in console"
+msgstr "Notificar no console ao completar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:211
+msgid "Notify completion in notifier"
+msgstr "Notificar a conclusão no notificador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:212
+#, fuzzy
+msgid "Automatically clear transfer"
+msgstr "Aceitar automaticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:215
+#, fuzzy
+msgid ""
+"<center>This option will cause succesfully terminated transfers to be "
+"automatically removed from the transfer window.</center>"
+msgstr ""
+"<center>Esta opção fará com que o KVIrc conecte ao servidor de IRC quando "
+"for iniciado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:220
+msgid "Always open transfer window as minimized"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:238
+msgid "Bug Compatibility"
+msgstr "Compatibilidade de Erro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:239
+msgid "Send ACK for byte 0"
+msgstr "Enviar ACK para o byte 0"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:242
+msgid ""
+"<center>This option causes KVIrc to send a zero-byte acknowledge to kick-"
+"start the DCC transfer with some buggy IRC clients.<br>Use it only if your "
+"DCC transfers stall just after establishing a connection without sending any "
+"data.</center>"
+msgstr ""
+"<center>Esta opção fará com que o KVIrc envie um reconhecimento zero-"
+"bytepara iniciar rápidamente transferências DCC com alguns clientes IRC "
+"problemáticos.<br>Utilize-o apenas se sua transferência DCC parar logo após "
+"estabelecer uma conexão sem enviar quaisquer dados.</center> "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:247
+msgid "Accept broken RESUME (mIRC file.ext)"
+msgstr "Aceitar RESUME quebrado (arquivo.ext mIRC)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:250
+msgid ""
+"<center>This option causes KVIrc to accept RESUME requests with invalid "
+"filenames.<br>Use it if KVIrc fails to accept RESUME requests from other "
+"clients (e.g. some versions of mIRC).</center>"
+msgstr ""
+"<center>Esta opção faz com que o KVirc aceite pedidos RESUME com arquivos "
+"inválidos.<br>Utilize-o se o KVirc falhar ao aceitar pedido de RESUME de "
+"outros clientes (ex: outras versões do mIRC).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:254
+msgid "Replace spaces with underscores in outgoing filenames"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:257
+#, fuzzy
+msgid ""
+"<center>This option causes KVIrc to replace spaces with underscores in "
+"filenames for all the outgoing file transfers. This will fix filename "
+"handling with some buggy clients (e.g. some versions of mIRC)."
+msgstr ""
+"<center>Esta opção faz com que o KVirc aceite pedidos RESUME com arquivos "
+"inválidos.<br>Utilize-o se o KVirc falhar ao aceitar pedido de RESUME de "
+"outros clientes (ex: outras versões do mIRC).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:262
+msgid "Limits"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:265
+msgid "Limit upload bandwidth to"
+msgstr "Limitar a largura de banda de envio para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:273
+msgid "bytes/sec"
+msgstr "bytes/sec"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:271
+msgid "Limit download bandwidth to"
+msgstr "Limitar a largura de banda de recebimento para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:277
+msgid "Maximum number of DCC transfers"
+msgstr "Número máximo de transferências DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:279
+msgid ""
+"<center>This is the maximum number of concurrent DCC transfers. KVIrc will "
+"refuse the requests when this limit is reached.</center>"
+msgstr ""
+"<center>Este é o número máximo de transferências DCC simultâneas. KVIrc irá "
+"recusar os pedidos quando este límite for alcançado.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:283
+#, fuzzy
+msgid "Tweaks"
+msgstr "Testar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:285
+msgid "Use fast send (send ahead)"
+msgstr "Usar envio rápido (send ahead)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:288
+msgid ""
+"<center>The \"send ahead\" DCC method allows data to be sent faster by "
+"breaking some of the rules of the original DCC SEND protocol specification."
+"<br>Most clients can handle this kind of optimisation so disable it only if "
+"you have problems.</center>"
+msgstr ""
+"<center>O método DCC \"send ahead\" permite que os dados sejam enviados "
+"rápidamente ao quebrar algumas das regras do protocolo original DCC SEND."
+"<br>Muitos clientes podem tratar este tipo de otimização, então desative-o "
+"apenas se tiver problemas.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:295
+msgid "Force idle step"
+msgstr "Forçar Inatividade"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:298
+msgid ""
+"<center>Enable this option when the dcc file transfers tend to block your "
+"computer by consuming too much CPU time. When this option is enabled the "
+"idle interval below will be forcibly inserted between each sent/received "
+"data packet.</center>"
+msgstr ""
+"<center>Ative esta opção quando a transferência de arquivos por DCC tenda a "
+"bloquear o seu computador ao consumir demasiadamente o tempo da CPU. Quando "
+"esta opção está ativa o intervalo de inatividade será forçadamente inserido "
+"entre os pacotes de dados enviados/recebidos.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:310
+msgid ""
+"<center>This parameter controls the average delay between two packets sent "
+"or received.<br>A smaller interval will cause you to send data faster but "
+"will also add load to your CPU, disk and network interface.<br>Reasonable "
+"values are from 5 to 50 milliseconds.</center>"
+msgstr ""
+"<center>Este parâmetro controla a média de atraso entre dois pacotes "
+"enviados ou recebidos.<br>Um intervalo pequeno faz com que dados sejam "
+"enviados mais rápidamente mas também adiciona carga à CPU, ao disco e a "
+"interface da rede.<br>Valores razoáveis vão de 5 a 50 milisegundos.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:316
+msgid "Packet size:"
+msgstr "Tamanho dos pacotes:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:320
+msgid ""
+"<center>This parameter controls the packet size used for DCC SEND.<br>With "
+"bigger packets you will be probably send data faster, but you will also "
+"saturate your bandwidth and in some cases cause more disk activity."
+"<br>Reasonable values are from 512 to 4096 bytes.</center>"
+msgstr ""
+"<center>Este parâmetro controla o tamanho do pacote usado para o DCC SEND. "
+"<br>Com pacotes maiores irá provavelmente enviar dados rápidamente, mas "
+"também irá saturar a largura de banda e em alguns casos causar mais "
+"atividade em disco.<br>Os valores razoáveis vão de 512 a 4096 bytes.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:349
+msgid "On Chat Request"
+msgstr "Em Pedido de Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:351
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:373
+msgid "Open minimized when auto-accepted"
+msgstr "Abrir minimizado quando aceitar automaticamente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:353
+#, fuzzy
+msgid "Always open as minimized"
+msgstr "Abrir todos minimizados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:369
+msgid "Open all minimized"
+msgstr "Abrir todos minimizados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:370
+msgid "On Voice Request"
+msgstr "Em Pedido de Voice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:376
+msgid "Force half-duplex mode on sound device"
+msgstr "Forçar modo Half-duplex no dispositivo de som"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:377
+msgid "Volume slider controls PCM, not Master"
+msgstr "Controle de Volume PCM, não Master"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:379
+msgid "Sound device:"
+msgstr "Dispositivo de som:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:380
+msgid "Mixer device:"
+msgstr "Dispositivo misturador:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:382
+msgid "Pre-buffer size:"
+msgstr "Tamanho do Pre-buffer:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:38
+msgid "Enable Ignore For"
+msgstr "Habilitar Ignore para "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:39
+msgid "Private/channel messages"
+msgstr "Mensagens Privada/Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:40
+msgid "Private/channel notices"
+msgstr "Noticias Privada/Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:44
+msgid "Use verbose ignore (show messages in console)"
+msgstr "Usar ignore explicito (exibe mensagens no console)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:46
+msgid "Sound System"
+msgstr "Sistema de Som"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:66
+msgid "This allows you to select the sound system to be used with KVIrc."
+msgstr ""
+"Isto permite a você selecionar o sistema de som para ser usado com o KVIrc."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:72
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:88
+msgid "Auto-detect"
+msgstr "Auto-detectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:91
+msgid "Test"
+msgstr "Testar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:79
+msgid "Media Player"
+msgstr "Leitor Multimedia"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:81
+msgid ""
+"This allows you to select the preferred media player to be used with the "
+"mediaplayer.* module commands and functions."
+msgstr ""
+"Isto permite a você selecionar seu leitor de multimédia preferido para ser "
+"usado com os comandos e funções do módulo mediaplayer.*."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:102
+msgid "ID3 tags' encoding"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:104
+#, fuzzy
+msgid "This allows you to select encoding of mp3 tags."
+msgstr ""
+"Isto permite a você selecionar o sistema de som para ser usado com o KVIrc."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:125
+msgid "Winamp messages ecoding"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:127
+#, fuzzy
+msgid "This allows you to select encoding of winamp messages."
+msgstr ""
+"Isto permite a você selecionar o sistema de som para ser usado com o KVIrc."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:290
+#, fuzzy
+msgid "New Query opened"
+msgstr "Manter conversas abertas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:293
+msgid "New message in inactive query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:296
+#, fuzzy
+msgid "Highlighted message in inactive window"
+msgstr "Destacar mensagens que contenham o meu apelido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:299
+#, fuzzy
+msgid "Me have been kicked"
+msgstr "Você foi paginado por"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:39
+msgid "Selection background color"
+msgstr "Selecionar cor de fundo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:40
+msgid "Selection foreground color"
+msgstr "Selecionar cor de primeiro plano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:41
+msgid "Control char color"
+msgstr "Cor dos caracteres de controle"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:42
+msgid "Cursor color"
+msgstr "Cor do Curso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:141
+msgid "Warp cursor at the end of line when browsing history"
+msgstr "Mover o cursor para o final da linha quando navegar pelo histórico"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:142
+msgid "Disable the input history window and it's log memory."
+msgstr ""
+"Desabilitar a janela de entrada no histórico e o seu registo de memória."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:143
+msgid "Hide input toolbuttons by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:144
+msgid "Nick completion"
+msgstr "Complemento de Apelido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:145
+msgid "Use bash-like nick completion"
+msgstr "Usar complemento de apelido no estilo bash"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:146
+msgid "Nick completion postfix string"
+msgstr "String de sufixo para o complemento de apelido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:147
+msgid "Use the completion postfix string for the first word only"
+msgstr "Usar a string de sufixo somente para o complemento da primeira palavra"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:148
+msgid "Commandline in user-friendly mode by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:81
+msgid "Show message icons"
+msgstr "Exibir ícones nas mensagens"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:82
+msgid "Draw some emoticons (smileys) as pictures"
+msgstr "Desenhar alguns icones emotivos (carinhas) como figuras."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:83
+msgid "Don't show colors in user messages"
+msgstr "Não exibir cores nas mensagens de usuários"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:88
+#, fuzzy
+msgid "Nicknames"
+msgstr "Apelido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:90
+msgid "\"Smart\" nickname colors"
+msgstr "Cores de apelido \"espertas\" "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:91
+msgid "Use same colors as in the userlist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:93
+msgid "Show nicknames in bold"
+msgstr "Exibir apelidos em negrito"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:94
+msgid "Show user and host"
+msgstr "Mostra usuário e máquina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:95
+msgid "Show channel mode prefix"
+msgstr "Exibir prefixo do modo do canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:96
+msgid "User-defined prefix and postfix"
+msgstr "Prefixo e sufixo definidos pelo usuário"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:98
+msgid "[PREFIX]nickname[!user@host][POSTFIX] message"
+msgstr "[PREFIXO]apelido[!usuário@máquina][SUFIXO] mensagem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:112
+msgid "Prefix:"
+msgstr "Prefixo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:117
+msgid "Postfix:"
+msgstr "Sufixo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:131
+msgid "Show timestamp"
+msgstr "Exibir marca de tempo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:134
+msgid "Use UTC time for timestamp"
+msgstr "Usar horário UTC na marca de tempo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:141
+msgid "Use special color for timestamps"
+msgstr "Usar cor especial na marca de tempo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:147
+#, fuzzy
+msgid "Timestamp format:"
+msgstr "Cor da marca de tempo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:320
+msgid "Transparent"
+msgstr "Transparente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:401
+msgid "Message Type"
+msgstr "Tipo de Mensagem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:417
+msgid "Background:"
+msgstr "Plano de Fundo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:426
+msgid "Foreground:"
+msgstr "Primeiro Plano:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:434
+msgid "Alert level:"
+msgstr "Nível de alerta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:454
+msgid "Log this"
+msgstr "Log isto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:458
+msgid "Load From..."
+msgstr "Carregar de...."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:460
+msgid "Save As..."
+msgstr "Salvar Como..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:589
+msgid "Choose a Filename - KVIrc"
+msgstr "Escolha um arquivo - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:646
+msgid "Choose a Filename - KVIrc "
+msgstr "Escolher Nome de Arquivo - KVIrc "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:40
+msgid "Enable lag meter"
+msgstr "Habilitar medidor de lag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:42
+msgid ""
+"<center>This enables the lag meter engine, which checks at regular intervals "
+"how much lag (latency) the server has.</center>"
+msgstr ""
+"<center>Isto habilita o medidor de lag, que verificará em intervalos "
+"regulares quanto de lag (latência) o servidor tem.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:45
+msgid "Lag meter heartbeat:"
+msgstr "Medição da frequência do lag:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:49
+msgid ""
+"<center>This option allows you to set the lag meter heartbeat interval."
+"<br>The lower the heartbeat interval the higher will be the accuracy of the "
+"lag check but also higher cpu usage and data traffic to the server."
+"<br>Please note that this is NOT the interval between pings sent to the "
+"server: the pings (if any) will be sent really less often. 5000 is a "
+"reasonable value.</center>"
+msgstr ""
+"<center>Esta opção lhe permite definir o intervalo de batimento do medidor "
+"de lag.<br>Quanto mais baixo for o intervalo de batimento maior será a "
+"exatidão da verificação do lag mas também maior será o uso do CPU e tráfego "
+"de dados para o servidor.<br>Por favor note que NÃO é o intervalo entre os "
+"pings enviados para o servidor: os pings (se algum) serão enviados com muito "
+"menos frequência. 5000 é o valor razoável .</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:58
+msgid "Trigger event if lag exceeds:"
+msgstr "Disparar evento se o lag exceder:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:61
+msgid ""
+"<center>This option controls the threshold for the OnLagAlarmTimeUp and "
+"OnLagAlarmTimeDown events. When the lag goes above the threshold "
+"OnLagAlarmTimeUp will be triggered and when the lag falls back below the "
+"threshold then OnLagAlarmTimeDown will be triggered</center>"
+msgstr ""
+"<center>Esta opção controla o ponto inicial para os eventos OnLagAlarmTimeUp "
+"e OnLagAlarmTimeDown. Quando o lag exceder o ponto inicial se disparará o "
+"evento OnLagAlarmTimeUp e quando o lag cair abaixo do ponto inicial se "
+"disparará OnLagAlarmTimeDown</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:68
+msgid "Show lag in IRC context display"
+msgstr "Exibir lag no monitor de contexto de IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:70
+msgid ""
+"<center>This makes the IRC context display applet show the current lag after "
+"the user's nickname (in seconds)</center>"
+msgstr ""
+"<center>Isto faz com que o applet monitor de contexto de IRC exiba o lag "
+"atual depois do apelido dos usuários (em segundos)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.h:28
+msgid "Away"
+msgstr "Ausente"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.h:28
+msgid "CTCP"
+msgstr "CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:28
+msgid "DCC"
+msgstr "DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:59
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:41
+msgid "Advanced"
+msgstr "Avançado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:72
+msgid "File Transfer"
+msgstr "Transferência de Arquivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:113
+msgid "Chat"
+msgstr "Chat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:126
+msgid "Voice"
+msgstr "Voice"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:32
+msgid "IRC"
+msgstr "IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:73
+msgid "Channel"
+msgstr "Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:28
+msgid "Lag"
+msgstr "Lag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:30
+msgid "time,ping"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:37
+msgid "authentication,identify"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:31
+msgid "Language"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:34
+msgid "language,encoding,charset,codepage"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:28
+#, fuzzy
+msgid "Contacts"
+msgstr "Conectar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:30
+msgid "notify,buddy,buddies,friends"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:42
+msgid "Notifier"
+msgstr "Notificador"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:43
+#, fuzzy
+msgid "popup"
+msgstr "Popup"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:37
+msgid "Text"
+msgstr "Texto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:38
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:49
+msgid "theme,colors,output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:52
+#, fuzzy
+msgid "Message Style"
+msgstr "Tipo de Mensagem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:56
+msgid "theme,privmsg,output,format"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:67
+msgid "Timestamp"
+msgstr "Marca de tempo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:71
+#, fuzzy
+msgid "time,timestamp"
+msgstr "Marca de tempo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:88
+#, fuzzy
+msgid "Message Colors"
+msgstr "Cores de Apelido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:169
+msgid "theme,colors,messages,output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:168
+#, fuzzy
+msgid "Color Set"
+msgstr "Cores"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.h:32
+msgid "Avatars"
+msgstr "Avatares"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:32
+#, fuzzy
+msgid "Sound"
+msgstr "Som"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:48
+msgid "sound,xmms,audio,play,amarok"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:81
+#, fuzzy
+msgid "Sounds"
+msgstr "Som"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:83
+msgid "sound,events"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:28
+msgid "URL handlers"
+msgstr "Manipuladores de URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:31
+msgid "url,programs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:29
+#, fuzzy
+msgid "Tray icon"
+msgstr "Ícones de texto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:31
+msgid "tray,dockwidget"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.h:33
+msgid "Tools"
+msgstr "Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.h:28
+#, fuzzy
+msgid "General options"
+msgstr "Ações genéricas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.h:31
+msgid "Interface"
+msgstr "Interface"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:29
+msgid "Text icons"
+msgstr "Ícones de texto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:31
+#, fuzzy
+msgid "smileys,emoticons"
+msgstr "milisegundos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:34
+msgid "Output"
+msgstr "Saída"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:48
+msgid "Look"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:101
+msgid "Features"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:46
+msgid "Media Types"
+msgstr "Tipos de Midias"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:48
+msgid "file,audio,video,programs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:114
+#, fuzzy
+msgid "theme"
+msgstr "Tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:47
+msgid "Transparency"
+msgstr "Transparência"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:48
+#, fuzzy
+msgid "theme,background"
+msgstr "Plano de fundo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:74
+#, fuzzy
+msgid "Window Captions"
+msgstr "Operações de Janela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:88
+msgid "theme,mdi"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:87
+msgid "Workspace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:100
+msgid "ToolBar Applets"
+msgstr "Applet da Barra de Ferramentas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:101
+msgid "theme,toolbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:150
+msgid "connection"
+msgstr "conexão"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:33
+#, fuzzy
+msgid "Protection"
+msgstr "Proteção de Flood"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:36
+msgid "ctcp,flood"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:144
+msgid "Avatar"
+msgstr "Avatar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.h:28
+msgid "Anti-spam"
+msgstr "Anti-spam"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:32
+msgid "Verbosity And Output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:34
+msgid "debug"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:28
+msgid "Logging"
+msgstr "Registro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:29
+msgid "save,output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:50
+msgid "Input"
+msgstr "Entrada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:33
+msgid "theme,colors,text"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:33
+msgid "Taskbar"
+msgstr "Barra de tarefas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:47
+#, fuzzy
+msgid "Tree Taskbar"
+msgstr "Barra de tarefas em árvore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:65
+msgid "Foreground"
+msgstr "Primeiro Plano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:111
+#, fuzzy
+msgid "Classic Taskbar"
+msgstr "Barra de tarefas clássica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:52
+msgid "Proxy Hosts"
+msgstr "Servidores Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:54
+#, fuzzy
+msgid "connection,servers"
+msgstr "Conexão com servidor foi perdida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:28
+msgid "Alert/Highlight"
+msgstr "Alerta/Destaque"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:42
+#, fuzzy
+msgid "Highlight"
+msgstr "&Destaque"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:55
+msgid "Taskbar Alert"
+msgstr "Alerta da Barra de Tarefas"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.h:29
+msgid "Flood Protection"
+msgstr "Proteção de Flood"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:30
+msgid "Userlist"
+msgstr "Lista de Usuários"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:31
+msgid "theme,userlist,channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:45
+#, fuzzy
+msgid "theme,userlist,channel,background"
+msgstr "Plano de fundo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:66
+#, fuzzy
+msgid "theme,userlist,channel,colors"
+msgstr "Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:81
+msgid "Nickname Grid"
+msgstr "Grade de Apelido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:82
+#, fuzzy
+msgid "theme,userlist,channel,grid"
+msgstr "Plano de fundo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:102
+#, fuzzy
+msgid "userlist,channel"
+msgstr "Canal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:29
+msgid "Labels"
+msgstr "Rótulos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:30
+msgid "theme,topic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:28
+#, fuzzy
+msgid "Scripting Engine"
+msgstr "Scripting"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:29
+msgid "scripting,kvs,debug"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:55
+msgid "SSL"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:72
+msgid "Socket"
+msgstr "Socket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:87
+msgid "Ident Service"
+msgstr "Serviço de ident"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:29
+msgid "Ignore"
+msgstr "Ignorar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:31
+#, fuzzy
+msgid "protection"
+msgstr "Proteção de Flood"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:28
+msgid "Query"
+msgstr "Privado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:30
+#, fuzzy
+msgid "chat"
+msgstr "Chat"
+
+#, fuzzy
+#~ msgid "Output verosity"
+#~ msgstr "Saída detalhada"
+
+#, fuzzy
+#~ msgid "Scaling"
+#~ msgstr "Scripting"
+
+#~ msgid "Save Current Theme"
+#~ msgstr "Salvar Tema Atual"
+
+#~ msgid "Theme name:"
+#~ msgstr "Nome do Tema:"
+
+#~ msgid "Version:"
+#~ msgstr "Versão:"
+
+#~ msgid "Author:"
+#~ msgstr "Autor:"
+
+#, fuzzy
+#~ msgid "Package format:"
+#~ msgstr "Formato da Mensagem"
+
+#~ msgid "Save Theme - KVIrc"
+#~ msgstr "Salvar Tema - KVIrc"
+
+#~ msgid "Unable to create theme directory."
+#~ msgstr "Impossível de criar o diretório de tema"
+
+#~ msgid "Theme saved successfully to "
+#~ msgstr "O tema foi salvo com sucesso em "
+
+#, fuzzy
+#~ msgid "Choose save directory"
+#~ msgstr "Escolha um Diretório - KVIrc"
+
+#, fuzzy
+#~ msgid "You must select save directory"
+#~ msgstr "Escolha um Diretório - KVIrc"
+
+#, fuzzy
+#~ msgid "Unable to create theme files directory."
+#~ msgstr "Impossível de criar o diretório de tema"
+
+#, fuzzy
+#~ msgid "Unable to create theme utils directory."
+#~ msgstr "Impossível de criar o diretório de tema"
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for reading."
+#~ msgstr "Não foi possível abrir o arquivo %s para leitura."
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for writing."
+#~ msgstr "Não foi possível abrir o arquivo \"%s\" em modo de escrita."
+
+#, fuzzy
+#~ msgid "Choose filaname"
+#~ msgstr "Escolha Arquivo de Registro - KVIrc"
+
+#, fuzzy
+#~ msgid "You must select filename"
+#~ msgstr "Você deve escolher um nome do tema!"
+
+#~ msgid "You must choose a theme name!"
+#~ msgstr "Você deve escolher um nome do tema!"
+
+#~ msgid "Refresh Theme List"
+#~ msgstr "Atualizar Lista de Temas"
+
+#~ msgid "Save Current Theme..."
+#~ msgstr "Salvar Tema Atual..."
+
+#, fuzzy
+#~ msgid "Delete Selected Theme"
+#~ msgstr "&Remover Selecionada(s)"
+
+#~ msgid "Get More Themes..."
+#~ msgstr "Baixar Mais Temas..."
+
+#, fuzzy
+#~ msgid "Open Theme - KVIrc"
+#~ msgstr "Salvar Tema - KVIrc"
+
+#, fuzzy
+#~ msgid "You must select file"
+#~ msgstr "Não existem entradas selecionadas."
+
+#~ msgid "Current Theme"
+#~ msgstr "Tema Atual"
+
+#~ msgid "<p>The active theme settings</p>"
+#~ msgstr "<p>Configurações do tema ativo</p>"
+
+#~ msgid "<p>Theme: %1</p>"
+#~ msgstr "<p>Tema: %1</p>"
+
+#~ msgid "<p>Version: %1</p>"
+#~ msgstr "<p>Versão: %1</p>"
+
+#~ msgid "<p>Date: %1</p>"
+#~ msgstr "<p>Data: %1</p>"
+
+#~ msgid "<p>Author: %1</p>"
+#~ msgstr "<p>Autor: %1</p>"
+
+#~ msgid "Timestamp color"
+#~ msgstr "Cor da marca de tempo"
+
+#~ msgid "Minimize new queries"
+#~ msgstr "Minimizar novos privados"
+
+#~ msgid "Automatically close on completion"
+#~ msgstr "Fechar automaticamente ao completar"
+
+#~ msgid "Speed limits"
+#~ msgstr "Limtes de velocidade"
+
+#~ msgid "Idle interval:"
+#~ msgstr "Intervalo de inatividade:"
+
+#~ msgid ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">General Preferences</font></h1></center></td></"
+#~ "tr><tr><td><br><br><center><b>These sections contain various settings for "
+#~ "KVIrc</b></center><br><br><p>When you have finished, click \"<b>OK</b>\" "
+#~ "to accept your changes or \"<b>Cancel</b>\" to discard them. Clicking "
+#~ "\"<b>Apply</b>\" will commit your changes without closing the window.</"
+#~ "td></tr><tr><td>Many settings have tooltips that can be shown by holding "
+#~ "the cursor over their label for a few seconds.</p></td></tr></table>"
+#~ msgstr ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font "
+#~ "color= \"#FFFFFF\">Preferências Gerais</font></h1></center></td></"
+#~ "tr><tr><td><br><br><center><b>Estas seções contém várias configurações "
+#~ "para o KVIrc</b></center><br><br><p>Quando tiver acabado clique em "
+#~ "\"<b>Aceitar</b>\" para aceitar as alterações ou \"<b>Cancelar</b>\" para "
+#~ "rejeitar. Ao clicar em \"<b>Aplicar</b>\" irá efetuar as alterações, sem "
+#~ "que a janela seja fechada.</td></tr><tr><td>Muitas configurações têm "
+#~ "dicas que são exibidas ao passar o cursor do mouse por cima delas por "
+#~ "alguns segundos.</p></td></tr></table>"
+
+#~ msgid ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">General Preferences</font></h1></center></td></"
+#~ "tr><tr><td><br><br>Select a category in the list view on the left to view "
+#~ "the related settings. When you have finished, click \"<b>OK</b>\" to "
+#~ "accept your changes or \"<b>Cancel</b>\" to discard them. Clicking "
+#~ "\"<b>Apply</b>\" will commit your changes without closing this window."
+#~ "<br><br></td></tr></table>"
+#~ msgstr ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">Preferências Gerais</font></h1></center></td></"
+#~ "tr><tr><td><br><br>Selecione uma categoria da parte esquerda da lista "
+#~ "para ver as configurações associadas. Quando tiver acabado, clique em "
+#~ "\"<b>Aceitar</b>\" para aceitar as alterações ou \"<b>Cancelar</b>\" para "
+#~ "rejeitar. Ao clicar em \"<b>Aplicar</b>\" irá efetuar as alterações sem "
+#~ "que a janela seja fechada.<br><br></td></tr></table>"
+
+#~ msgid "Preferences - KVIrc"
+#~ msgstr "Preferências - KVirc"
+
+#~ msgid "Standard Colors"
+#~ msgstr "Cores Padrão"
+
+#, fuzzy
+#~ msgid "Avatar Handling"
+#~ msgstr "Mudança de avatar"
+
+#~ msgid "MDI Captions"
+#~ msgstr "Subtítulos de MDI"
+
+#~ msgid "MDI Area"
+#~ msgstr "Área MDI"
+
+#, fuzzy
+#~ msgid "Load & Save"
+#~ msgstr "&Salvar"
+
+#, fuzzy
+#~ msgid "Output Style"
+#~ msgstr "Saída"
+
+#~ msgid "Maximum number of rows:"
+#~ msgstr "Número máximo de fileiras:"
+
+#~ msgid ""
+#~ "The list below shows the currently installed themes. To apply a theme "
+#~ "select it and click \"Ok\" or \"Apply\". Please note that the message "
+#~ "text colors are applied only to new messages in each window.<br>To "
+#~ "install a new theme, unpack it to:<br><b>"
+#~ msgstr ""
+#~ "A lista inferior exibe os temas instalados atualmente. Para aplicar um "
+#~ "tema, selecione-o e clique em \"Aceitar\" ou \"Aplicar\". Por favor, "
+#~ "observe que as cores do texto das mensagens serão aplicadas somente às "
+#~ "novas mensagens em cada janela.<br>Para instalar um novo tema, "
+#~ "descompacte-o em:<br><b>"
+
+#~ msgid "Custom nickname:"
+#~ msgstr "Apelido personalizado"
+
+#, fuzzy
+#~ msgid "Normal user"
+#~ msgstr "Usuário Normal"
+
+#, fuzzy
+#~ msgid "Experienced user"
+#~ msgstr "usuário com voice"
+
+#, fuzzy
+#~ msgid "Novice"
+#~ msgstr "Voice"
+
+#~ msgid "Alias"
+#~ msgstr "Alias"
+
+#, fuzzy
+#~ msgid "Rename"
+#~ msgstr "Nome Real:"
+
+#, fuzzy
+#~ msgid "Edit the alias or namespace name"
+#~ msgstr "Editar o nome do alias."
+
+#, fuzzy
+#~ msgid "Add Alias"
+#~ msgstr "Alias"
+
+#, fuzzy
+#~ msgid "Export Selected..."
+#~ msgstr "&Exportar Selecionado Para..."
+
+#, fuzzy
+#~ msgid "Export All..."
+#~ msgstr "&Exportar Todos Para..."
+
+#, fuzzy
+#~ msgid "Find In Aliases..."
+#~ msgstr "Aliases..."
+
+#, fuzzy
+#~ msgid "Alias Export"
+#~ msgstr "Editor de Alias"
+
+#~ msgid "Write Failed - KVIrc"
+#~ msgstr "Escrita Falhou - KVirc"
+
+#~ msgid "Unable to write to the alias file."
+#~ msgstr "Incapaz de escrever no arquivo de alias."
+
+#, fuzzy
+#~ msgid "Do you really want to remove the alias \"%Q\" ?"
+#~ msgstr "Você deseja realmente deletar a barra de ferramentas \"%1\" ?"
+
+#, fuzzy
+#~ msgid "Do you really want to remove the namespace \"%Q\" ?"
+#~ msgstr "Você deseja realmente deletar a barra de ferramentas \"%1\" ?"
+
+#, fuzzy
+#~ msgid "Remove item"
+#~ msgstr "Remover %Q"
+
+#~ msgid "Yes"
+#~ msgstr "Sim"
+
+#, fuzzy
+#~ msgid "Yes to All"
+#~ msgstr "Selecionar &Todos"
+
+#~ msgid "No"
+#~ msgstr "Não"
+
+#, fuzzy
+#~ msgid "Missing Alias Name"
+#~ msgstr "Faltando o nome do alias"
+
+#, fuzzy
+#~ msgid "Missing Namespace Name"
+#~ msgstr "Faltando nome do timer"
+
+#, fuzzy
+#~ msgid "Please enter the name for the new alias"
+#~ msgstr ""
+#~ "Por favor especifique as propriedades para a barra de ferramentas nova"
+
+#, fuzzy
+#~ msgid "Please enter the name for the new namespace"
+#~ msgstr ""
+#~ "Por favor especifique as propriedades para a barra de ferramentas nova"
+
+#, fuzzy
+#~ msgid "Rename Alias"
+#~ msgstr "Re&mover Alias"
+
+#, fuzzy
+#~ msgid "Please enter the new name for the alias"
+#~ msgstr "Por favor escolha o ícone da Barra de Ferramentas"
+
+#, fuzzy
+#~ msgid "Namespace"
+#~ msgstr "Tipo de Mensagem"
+
+#~ msgid "Alias Editor"
+#~ msgstr "Editor de Alias"
+
+#, fuzzy
+#~ msgid "The config file with id '%Q' is not open"
+#~ msgstr "O arquivo de configuração com id '%s' não está aberto"
+
+#~ msgid ""
+#~ "The config file '%s' has been changed but is opened as read-only: changes "
+#~ "will be lost"
+#~ msgstr ""
+#~ "O arquivo de configuração '%s' foi alterado mas está aberto como somente "
+#~ "leitura: as alterações serão perdidas"
+
+#, fuzzy
+#~ msgid "The config file with id '%Q' is read only"
+#~ msgstr "O arquivo de configuração com id '%s' é somente leitura"
+
+#~ msgid "Request Links"
+#~ msgstr "Requisitar Links"
+
+#~ msgid "Link"
+#~ msgstr "Link"
+
+#~ msgid "Hops"
+#~ msgstr "Saltos"
+
+#~ msgid "(None)"
+#~ msgstr "(Nenhum)"
+
+#~ msgid "Sent links request, waiting for reply..."
+#~ msgstr "Requisição de links enviada, aguardando resposta..."
+
+#~ msgid "Cannot request links: No active connection"
+#~ msgstr "Não foi possível pedir links: Nenhuma conexão ativa"
+
+#~ msgid "Connected to %s (%s)"
+#~ msgstr "Conectedo em %s (%s)"
+
+#~ msgid "Links cannot be requested: Not connected to a server"
+#~ msgstr ""
+#~ "Os links não podem ser requisitados: Não estás conectado a um servidor"
+
+#~ msgid "Links for %Q [IRC Context %u]"
+#~ msgstr "Links para %Q [Contexto de IRC %u]"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Links for %Q</b></font> <font color=\"%s\">"
+#~ "[IRC Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>Links para %Q</b></font> <font color=\"%s\">"
+#~ "[Contexto de IRC %u]</font></nobr>"
+
+#~ msgid "Received end of links."
+#~ msgstr "Fim dos links recebido."
+
+#~ msgid ""
+#~ "Broken link: Missing parent (%s) for %s (%d hops): %s (used /LINKS "
+#~ "<mask> ?)"
+#~ msgstr ""
+#~ "Link quebrado: Falta o pai (%s) para %s (%d saltos): %s (/LINKS usado "
+#~ "<mascara> ?)"
+
+#~ msgid "%s: Parent link %s"
+#~ msgstr "%s:Link Pai %s"
+
+#~ msgid ""
+#~ "Warning: No root link was sent by the server, the stats may be invalid."
+#~ msgstr ""
+#~ "Aviso: Nenhum link de raiz foi enviado pelo servidor, as estatísticas "
+#~ "podem ser inválidas."
+
+#~ msgid "%c%cLinks for %Q"
+#~ msgstr "%c%cLinks para %Q"
+
+#~ msgid "Total hosts listed"
+#~ msgstr "Total de máquinas listadas"
+
+#~ msgid "Total hosts in the network"
+#~ msgstr "Total de máquinas na rede"
+
+#~ msgid "Wildcard servers (hubs?): %d"
+#~ msgstr "Servidores Wildcard (hubs?): %d"
+
+#~ msgid "Direct links: %d (~%d.%d %)"
+#~ msgstr "Links Diretos : %d (~%d.%d %)"
+
+#~ msgid "Close links (1 <= hops <= 3): %d (~%d.%d %)"
+#~ msgstr "Links próximos (1 <= saltos <= 3): %d (~%d.%d %)"
+
+#~ msgid "Mid-range links (4 <= hops <= 6): %d (~%d.%d %)"
+#~ msgstr "Links de médio alcance (1 <= saltos <= 3): %d (~%d.%d %)"
+
+#~ msgid "Distant links (7 <= hops): %d (~%d.%d %)"
+#~ msgstr "Links distantes (7 <= saltos): %d (~%d.%d %)"
+
+#~ msgid "Broken (unknown) links: %d"
+#~ msgstr "Links (desconhecidos) quebrados: %d"
+
+#~ msgid "Maximum links per host: %d [%s]"
+#~ msgstr "Máximo de links por máquina: %d [%s]"
+
+#~ msgid "Total links: %d"
+#~ msgstr "Total de links : %d"
+
+#~ msgid "Maximum hops: %d [%s]"
+#~ msgstr "Saltos máximos: %d [%s]"
+
+#~ msgid "Average hops: ~%d.%d"
+#~ msgstr "Saltos médios: ~%d.%d"
+
+#~ msgid "(Unknown)"
+#~ msgstr "(desconhecido)"
+
+#~ msgid "Incomplete LINKS result, no stats available"
+#~ msgstr "Resultado incompleto de LINKS: nenhuma estatística disponível"
+
+#~ msgid "You're not connected to a server"
+#~ msgstr "Você não esta conectado em um servidor"
+
+#~ msgid "Reset"
+#~ msgstr "Reinicializar"
+
+#~ msgid "Processing link: %s"
+#~ msgstr "Processando link: %s"
+
+#~ msgid "Broken message syntax, can't extract hops number, assuming 0"
+#~ msgstr ""
+#~ "Sintaxe da mensagem danificada, não se pode extrair o número de saltos, "
+#~ "assumindo 0"
+
+#~ msgid "Links window alread open for this IRC context"
+#~ msgstr "Janela de links já aberta para este contexto de IRC"
+
+#~ msgid "Current window is not a channel"
+#~ msgstr "A Janela atual não é um canal"
+
+#~ msgid "List window alread open for this IRC context"
+#~ msgstr "Lista de janelas já esta aberta para o contexto de IRC"
+
+#~ msgid "Request List"
+#~ msgstr "Pedir Lista"
+
+#~ msgid "Stop list download"
+#~ msgstr "Parar recebimento da lista"
+
+#~ msgid ""
+#~ "<center><b>/LIST command parameters:</b><br>Many servers accept special "
+#~ "parameters that allow you to filter the returned entries.<br>Commonly, "
+#~ "masked channel names (*kvirc*) are accepted as parameters, as well as "
+#~ "strings like <b>c&lt;n</b> or <b>c&gt;n</b> where <b>n</b> is the minimum "
+#~ "or maximum of users on the channel.</center>"
+#~ msgstr ""
+#~ "<center><b>Parâmetros do comando /LIST:</b><br>Muitos servidores aceitam "
+#~ "parâmetros especiais que permitem filtrar as entradas retornadas. "
+#~ "<br>Normalmente, os nomes de canais mascarados (*kvirc*) são aceitos como "
+#~ "parâmetros, assim como strings tipo <b>c&lt;n</b> ou <b>c&gt;n</b> onde "
+#~ "<b>n</b> é o mínimo ou o máximo de usuários no canal.</center>"
+
+#~ msgid "Users"
+#~ msgstr "Usuários"
+
+#~ msgid "Topic"
+#~ msgstr "Tópico"
+
+#~ msgid "Sent list request, waiting for reply..."
+#~ msgstr "Pedido de lista enviado: aguardando resposta..."
+
+#~ msgid "Cannot request list: No active connection"
+#~ msgstr "Não foi possível pedir a lista: Nenhuma conexão ativa"
+
+#~ msgid "Stopping the list download..."
+#~ msgstr "Parando o recebimento da lista..."
+
+#~ msgid "Cannot stop list download, no active connection."
+#~ msgstr ""
+#~ "Não foi possível parar o recebimento da lista: Nenhuma conexão ativa"
+
+#~ msgid "List cannot be requested: Not connected to a server"
+#~ msgstr "Não foi possível pedir a lista: Não estás conectado a um servidor"
+
+#~ msgid "Channel List [IRC Context %u]"
+#~ msgstr "Lista de Canais [Contexto de IRC %u]"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Channel List</b></font> <font color=\"%s\">"
+#~ "[IRC Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>Lista de Canais</b></font> <font color=\"%s\">"
+#~ "[Contexto de IRC %u]</font></nobr>"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Channel list</b></font> <font color=\"%s\">"
+#~ "[IRC Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>Lista de canais </b></font> <font color=\"%s"
+#~ "\">[Contexto de IRC %u]</font></nobr>"
+
+#~ msgid "Channels list download finished"
+#~ msgstr "Recebimento da lista de canais terminou"
+
+#~ msgid "Processing list: %Q"
+#~ msgstr "Processando a lista: %Q"
+
+#~ msgid "Search keywords"
+#~ msgstr "Procurar palavras-chave"
+
+#~ msgid "Help Browser"
+#~ msgstr "Navegador de Ajuda "
+
+#~ msgid "No such channel/netmask entry in the database"
+#~ msgstr ""
+#~ "Não existe uma entrada para esse canal/máscara de rede na base de dados"
+
+#~ msgid "Channel: %c%s@%s"
+#~ msgstr "Canal: %c%s@%s"
+
+#~ msgid " Property: %s=%s"
+#~ msgstr " Propriedade: %s=%s "
+
+#~ msgid "Total %d channels"
+#~ msgstr "Canais totais %d"
+
+#~ msgid "Show URL List"
+#~ msgstr "Exibir Lista de URL"
+
+#~ msgid "Shows the URL list window"
+#~ msgstr "Exibir janela da lista de URL"
+
+#~ msgid "&Configure"
+#~ msgstr "&Configurar"
+
+#~ msgid "&Help"
+#~ msgstr "&Ajuda"
+
+#~ msgid "Clo&se"
+#~ msgstr "Fec&har"
+
+#~ msgid "&Module"
+#~ msgstr "&Módulo"
+
+#~ msgid "&Load"
+#~ msgstr "&Carregar"
+
+#~ msgid "&Clear"
+#~ msgstr "&Limpar"
+
+#~ msgid "&List"
+#~ msgstr "&Lista"
+
+#~ msgid "URL"
+#~ msgstr "URL"
+
+#~ msgid "Window"
+#~ msgstr "Janela"
+
+#~ msgid "Count"
+#~ msgstr "Contador"
+
+#~ msgid "Warning - KVIrc"
+#~ msgstr "Aviso - KVIrc"
+
+#~ msgid "Select an URL."
+#~ msgstr "Selecionar uma URL."
+
+#~ msgid "&Remove"
+#~ msgstr "&Remover"
+
+#~ msgid "&Find Text"
+#~ msgstr "&Procurar texto"
+
+#~ msgid "&Say to Window"
+#~ msgstr "&Dizer para Janela"
+
+#~ msgid "Window not found."
+#~ msgstr "Janela não encontrada"
+
+#~ msgid "URL Module Configuration"
+#~ msgstr "Configuração do Módulo URL"
+
+#~ msgid "Save URL list on module unload"
+#~ msgstr "Salvar lista de URL ao descarregar o módulo"
+
+#~ msgid "Save columns width on URL list close"
+#~ msgstr "Salvar a largura das colunas ao fechar a lista de URL"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Cancelar"
+
+#~ msgid "Enable URL ban list"
+#~ msgstr "Habilitar a lista de URL proibidas"
+
+#~ msgid "&Add Ban"
+#~ msgstr "&Adicionar Proibição"
+
+#~ msgid "&Remove Selected"
+#~ msgstr "&Remover Selecionada(s)"
+
+#~ msgid "URL Ban List"
+#~ msgstr "Lista de URL proibidas"
+
+#~ msgid "Select a ban."
+#~ msgstr "Selecionar proibição"
+
+#, fuzzy
+#~ msgid "Window with ID '%Q' not found"
+#~ msgstr "Janela com ID '%s' não encontrada"
+
+#, fuzzy
+#~ msgid "The specified window (%Q) is not a channel/query/DCC chat"
+#~ msgstr "A Janela especificada (%s) não é um canal/privado/DCC de chat"
+
+#~ msgid "File not found or empty"
+#~ msgstr "Arquivo não encontrado ou vazio"
+
+#~ msgid "I can't open that file"
+#~ msgstr "Não foi possível abrir este arquivo"
+
+#~ msgid "Could not paste file"
+#~ msgstr "Não foi possível colar arquivo"
+
+#~ msgid "The specified window (%s) is not a channel/query/dcc"
+#~ msgstr "A janela especificada (%s) não é um canal/privado/dcc"
+
+#~ msgid "Slow-paste ID:%d Window:%s"
+#~ msgstr "Colar devagar ID:%d Janela:%s"
+
+#, fuzzy
+#~ msgid "Window %Q not found"
+#~ msgstr "Janela %s não encontrada"
+
+#~ msgid "Missing window id after the 'w' switch"
+#~ msgstr "Faltando id da janela após o alternador 'w'"
+
+#, fuzzy
+#~ msgid "Can't log to file %Q"
+#~ msgstr "Não foi possível registar no arquivo %s"
+
+#~ msgid "This window has no logging capabilities"
+#~ msgstr "Esta janela não tem capacidades de registo"
+
+#, fuzzy
+#~ msgid "Window with id '%Q' not found, returning empty string"
+#~ msgstr "Janela com id '%s' não encontrada, retornar string vazia"
+
+#~ msgid "< &Back"
+#~ msgstr "< &Voltar"
+
+#~ msgid "&Next >"
+#~ msgstr "&Próximo >"
+
+#~ msgid "Finish"
+#~ msgstr "Finalizar"
+
+#~ msgid ""
+#~ "<p><h2>Welcome :)</h2>This is your first time running this version of "
+#~ "KVIrc.<br>This wizard will guide you through the few steps required to "
+#~ "complete the setup.<br><br>If you had a previous version of KVIrc "
+#~ "installed, no worries. You will have a chance to preserve the old "
+#~ "configuration.</p><p>Click \"<b>Next</b>\" to proceed.</p>"
+#~ msgstr ""
+#~ "<p><h2>Bem vindo :)</h2>Esta é a primeira execução desta versão do KVIrc."
+#~ "<br>Este assistente lhe ajudará através dos poucos passos necessários "
+#~ "para completar a configuração.<br><br>Caso tenha instalado uma versão "
+#~ "anterior do KVIrc não se preocupe, terá oportunidade de manter sua "
+#~ "configuração antiga.</p><p>Clique em \"<b>Próximo</b>\" para continuar.</"
+#~ "p>"
+
+#~ msgid "Welcome to KVIrc"
+#~ msgstr "Bem vindo ao KVIrc"
+
+#~ msgid ""
+#~ "<p>All of the files in this distribution are covered by the GPL. In human "
+#~ "terms this can be read as follows:<br><ul><li><b>KVIrc is free</b>, use "
+#~ "it, have fun! <b>:)</b></li><li>If you use <b>any</b> part of KVIrc in "
+#~ "your own project, you <b>must</b> release that project under the same "
+#~ "license.</li></ul></p><p>The \"legalese\" version of the license is shown "
+#~ "in the box below.</p>"
+#~ msgstr ""
+#~ "<p>Todos os arquivos desta distribuição estão protegidos pela GPL.<br>Em "
+#~ "termos humanos isto quer dizer o seguinte:<br><ul><li><b>O KVIrc é livre</"
+#~ "b>, use e divirta-se <b>:)</b></li><li>Se utilizar <b>qualquer</b> parte "
+#~ "do KVIrc em seu projeto, <b>DEVE</b> liberá-lo com a mesma licença.</li></"
+#~ "ul></p><p>A versão \"legal\" da licença se encontra no Quadro abaixo.</p>"
+
+#~ msgid ""
+#~ "Oops... can't find the license file.\n"
+#~ "It MUST be included in the distribution...\n"
+#~ "Please report to <pragma at kvirc dot net>"
+#~ msgstr ""
+#~ "Oopa... não foi possível encontrar o arquivo de licença.\n"
+#~ "Isto DEVE estar incluso na distribuição...\n"
+#~ "Por favor, informe isto para <pragma at kvirc dot net>"
+
+#~ msgid "Dreaded License Agreement"
+#~ msgstr "Acordo De Licença Temido"
+
+#~ msgid "KVIrc Setup"
+#~ msgstr "Configuração do KVIrc"
+
+#~ msgid ""
+#~ "Please choose a Nickname.<br><br>Your nickname is the name that other IRC "
+#~ "users will know you by. It can't contain spaces or punctuation. Some IRC "
+#~ "networks will shorten your nickname if it is more than 9 characters long."
+#~ "<br><br>If in doubt, just enter the first nick that comes to mind. You "
+#~ "will be able to change it later in the Identity properties, or with the /"
+#~ "NICK command."
+#~ msgstr ""
+#~ "Por favor, escolha um apelido.<br><br>Seu apelido é o nome que você será "
+#~ "conhecido pelos outros usuários do IRC. Não pode conter espaços ou "
+#~ "carácteres de pontuação. Algumas redes de IRC reduzirão seu apelido se "
+#~ "tiver mais de 9 carácteres.<br><br>Em caso de dúvida, digite o primeiro "
+#~ "apelido que vier à cabeça. Você poderá trocá-lo mais tarde nas "
+#~ "propriedades do diálogo de Identidade, ou com o comando /NICK."
+
+#~ msgid "<b>Nickname:</b>"
+#~ msgstr "<b>Apelido:</b>"
+
+#~ msgid ""
+#~ "<p>Please choose a folder for KVIrc to store its settings and other data, "
+#~ "and another for downloaded files. Make sure that you have permission to "
+#~ "write to both folders.<br><br>The suggested locations are fine in most "
+#~ "cases, so if you don't know what is this about, just click \"<b>Next</b>"
+#~ "\".<br><br>If you had a previous version of KVIrc installed, you can "
+#~ "choose the existing directory for the settings, and your configuration "
+#~ "will be preserved.</p>"
+#~ msgstr ""
+#~ "<p>Por favor, escolha um diretório para que o KVIrc salve suas "
+#~ "configurações e outros dados, e outro para os arquivos baixados. Tenha "
+#~ "certeza de que possui permissões de escrita em ambos os diretórios."
+#~ "<br><br>A configuração sugerida estará correta, em muitos casos, se você "
+#~ "não souber o que é isto, Apenas clique em \"<b>Próximo</b>\".<br><br>Se "
+#~ "você tiver instalado uma versão anterior do KVIrc pode escolher os "
+#~ "diretórios existentes e sua configuração será preservada.</p>"
+
+#~ msgid "Application Folders"
+#~ msgstr "Diretórios da Aplicação"
+
+#~ msgid "<b>Store configuration in folder:</b>"
+#~ msgstr "<b>Salvar a configuração no diretório:</b>"
+
+#~ msgid "<b>Download files to folder:</b>"
+#~ msgstr "<b>Diretório para arquivos baixados:</b>"
+
+#~ msgid ""
+#~ "<p>Here you can choose the default appearance of KVIrc.<br><br>The Fancy "
+#~ "Theme uses icons, a transparent background and a lot of colors. The "
+#~ "Minimalist Theme is designed for low-color displays or for \"console\" "
+#~ "extremists; it's more or less white text on a black background.<br><br>If "
+#~ "you had a previous version of KVIrc installed, you can choose to not "
+#~ "apply any theme in order to preserve your current visual settings."
+#~ "<br><br>If you don't know what to choose, just use the default.</p>"
+#~ msgstr ""
+#~ "<p>Aqui você pode escolher a aparência padrão do KVIrc.<br><br>O Tema "
+#~ "Fantasia usa ícones, um fundo transparente e um monte de cores. O Tema "
+#~ "Minimalista está projetado para monitores com poucas cores ou para "
+#~ "extremistas do \"console\"; mais ou menos é texto branco sobre fundo "
+#~ "preto.<br><br>Se tiver instalado uma versão anterior do KVIrc, você pode "
+#~ "escolher não aplicar nenhum tema para preservar suas configurações "
+#~ "visuais atuais.<br><br>Se não souber o que quer, escolha a configuração "
+#~ "padrão.</p>"
+
+#~ msgid "&Fancy Theme"
+#~ msgstr "&Tema Fantasia"
+
+#~ msgid "&Minimalist Theme"
+#~ msgstr "Tema &Minimalista"
+
+#~ msgid "&Don't apply any theme"
+#~ msgstr "&Não aplicar tema algum"
+
+#~ msgid "Default Theme"
+#~ msgstr "Tema Padrão"
+
+#~ msgid ""
+#~ "<p>Setup can make a shortcut to the KVIrc program on your desktop, so you "
+#~ "can access it quickly.</p><p>Do you want this shortcut to be created?</p>"
+#~ msgstr ""
+#~ "<p>A configuração pode criar um atalho, em sua Área de Trabalho, direto "
+#~ "para o executável do KVIrc. </p><p>Deseja criá-lo?</p>"
+
+#~ msgid "<p>If you're unsure just say \"Yes\"</p>"
+#~ msgstr "<p>Se você não estiver seguro, simplesmente diga \"Sim\"</p>"
+
+#~ msgid "&Yes"
+#~ msgstr "&Sim"
+
+#~ msgid "&No"
+#~ msgstr "&Não"
+
+#~ msgid "Desktop Shortcut"
+#~ msgstr "Atalho na Área de Trabalho"
+
+#~ msgid ""
+#~ "<p>Setup can now set KVIrc as default application for the irc:// and "
+#~ "irc6:// urls.</p><p>Do you want these settings to be applied?</p>"
+#~ msgstr ""
+#~ "<p>Você pode configurar KVIrc como aplicação padrão para as urls irc:// "
+#~ "e irc6://.</p><p>Deseja aplicar essas mudanças?</p>"
+
+#~ msgid "URL Handlers"
+#~ msgstr "Manipuladores de URL"
+
+#~ msgid ""
+#~ "<p><h2>Setup Complete</h2>Setup now has all the necessary information to "
+#~ "configure KVIrc.</p><p>Please click the \"<b>Finish</b>\" button to save "
+#~ "your choices and start KVIrc.</p>"
+#~ msgstr ""
+#~ "<p><h2>Configuração Concluida</h2>O assistente terá agora toda a "
+#~ "informação necessária para configurar o KVIrc.</p><p>Por favor, clique no "
+#~ "botão \"<b>Finalizar</b>\" para salvar suas preferências e iniciar o "
+#~ "KVIrc.</p>"
+
+#~ msgid "Finish Setup"
+#~ msgstr "Finalizar Configuração"
+
+#~ msgid "Choose a Configuration Folder - KVIrc Setup"
+#~ msgstr "Escolha um Diretório de Configuração - Asistente do KVIrc"
+
+#~ msgid "Choose a Download Folder - KVIrc Setup"
+#~ msgstr "Escolha um Diretório de Download - Asistente do KVIrc"
+
+#~ msgid "Abort Setup - KVIrc Setup"
+#~ msgstr "Abortar Configuração - Asistente do KVIrc"
+
+#~ msgid ""
+#~ "You have chosen to abort the setup.<br>KVIrc cannot run until you "
+#~ "complete this procedure.<br><br>Do you really wish to abort?"
+#~ msgstr ""
+#~ "Você escolheu abortar a configuração.<br>O KVIrc não funcionará até que "
+#~ "complete este procedimento.<br><br>Deseja Realmente abortar?"
+
+#~ msgid ""
+#~ "Cannot create directory %s.\n"
+#~ "You may not have write permission for that path. Please go back and "
+#~ "choose another directory."
+#~ msgstr ""
+#~ "Não foi possível criar o diretório %s.\n"
+#~ "É possível que não tenha permissão de escrita para este caminho. Por "
+#~ "favor, Volte e escolha outro diretório."
+
+#, fuzzy
+#~ msgid "Can't add a null object"
+#~ msgstr "Não foi possível adicionar um objeto não widget"
+
+#, fuzzy
+#~ msgid "No string parameter given - using empty string"
+#~ msgstr "Parâmetro de texto quebrado: assumindo string vazia"
+
+#, fuzzy
+#~ msgid "Invalid insertion Policy"
+#~ msgstr "id inválida do timer"
+
+#~ msgid "Can't add a non-widget object"
+#~ msgstr "Não foi possível adicionar um objeto não widget"
+
+#, fuzzy
+#~ msgid "Not a widget object"
+#~ msgstr "Não é um objeto do widget"
+
+#~ msgid "Can't find the tab "
+#~ msgstr "Não foi possível encontrar a tab "
+
+#, fuzzy
+#~ msgid "Unknown position 'Q%'"
+#~ msgstr "Função desconhecida"
+
+#~ msgid "Invalid timeout (%s)"
+#~ msgstr "Intervalo de tempo inválido (%s)"
+
+#~ msgid "Another connection in progress"
+#~ msgstr "Outra conexão em progresso"
+
+#~ msgid "Invalid port specified: the kernel will choose one"
+#~ msgstr "Porta especificada inválida: o kernel irá escolher uma"
+
+#~ msgid "No IPV6 support in this executable"
+#~ msgstr "Sem suporte IPV6 neste executável"
+
+#~ msgid "Invalid IP address specified (%s)"
+#~ msgstr "endereço ip (%s) especificado inválido"
+
+#~ msgid "Socket creation failed"
+#~ msgstr "Criação do socket falhou"
+
+#~ msgid "Invalid socket address"
+#~ msgstr "Endereço inválido de socket"
+
+#~ msgid "Bind failure"
+#~ msgstr "Associação (bind) falhou"
+
+#~ msgid "Listen failure"
+#~ msgstr "Escuta falhou"
+
+#~ msgid "unknown"
+#~ msgstr "desconhecido"
+
+#~ msgid "No socket object specified"
+#~ msgstr "Nenhum objeto socket especificado"
+
+#~ msgid "Invalid socket object specified (it doesn't inherit from socket)"
+#~ msgstr "Objecto socket especificado inválido (não herdou do socket)"
+
+#~ msgid "There is no connection to accept!"
+#~ msgstr "Não há nenhuma conexão para aceitar!"
+
+#~ msgid "Invalid port (%s)"
+#~ msgstr "Porta (%s) inválida"
+
+#~ msgid "Invalid ip address (%s)"
+#~ msgstr "endereço ip (%s) inválido"
+
+#~ msgid "Failed to create the socket"
+#~ msgstr "Falha ao criar o socket"
+
+#~ msgid "Failed to setup a nonblocking socket"
+#~ msgstr "Falhou ao configurar um socket de não bloqueio"
+
+#~ msgid "Connect failure: %s"
+#~ msgstr "Conexão falhou: %s"
+
+#~ msgid "Connect attempt timed out"
+#~ msgstr "Tentativa de conexão expirou"
+
+#~ msgid "Can't start the DNS thread"
+#~ msgstr "Não foi possível iniciar o processo DNS"
+
+#~ msgid ""
+#~ "Too much unprocessed incoming data (you've left this socket unmanaged ?)"
+#~ msgstr ""
+#~ "Muitos dados recebidos não foram processados (Você deixou este socket sem "
+#~ "gerenciamento?)"
+
+#, fuzzy
+#~ msgid "Can't add a non - popupmenu object"
+#~ msgstr "Não foi possível adicionar um objeto não widget"
+
+#, fuzzy
+#~ msgid "Unknown text position '%Q'"
+#~ msgstr "Função desconhecida"
+
+#, fuzzy
+#~ msgid "Invalid selection mode '%Q' assuming single"
+#~ msgstr "Direção inválida para este motor"
+
+#~ msgid "The parent of a layout must be a widget!"
+#~ msgstr "O pai de um layout deve ser um widget!"
+
+#, fuzzy
+#~ msgid "Invalid resize mode defaulting to Auto"
+#~ msgstr ""
+#~ "Modo de redimensionamento invalido (%s): usando padrão automaticamente"
+
+#~ msgid "Empty string"
+#~ msgstr "String vazia"
+
+#~ msgid "Empty filename string"
+#~ msgstr "String de nome de arquivo vazia"
+
+#~ msgid "No such open mode: %s"
+#~ msgstr "Sem modo aberto: %s"
+
+#~ msgid "File is not open !"
+#~ msgstr "O arquivo não está aberto !"
+
+#~ msgid "Negative file index supplied !"
+#~ msgstr "Índice de arquivo negativo fornecido!"
+
+#~ msgid "Argument to long, using only first char"
+#~ msgstr "Argumento muito longo, usando apenas o caracter"
+
+#~ msgid "Argument length is 0 - empty string"
+#~ msgstr "O comprimento do argumento é 0 - string vazia"
+
+#~ msgid "Write error occured !"
+#~ msgstr "Ocorreu um erro de escrita!"
+
+#~ msgid "Read error occured !"
+#~ msgstr "Ocorreu um erro de leitura!"
+
+#~ msgid "An error occured !"
+#~ msgstr "Ocorreu um erro!"
+
+#~ msgid "Length is a negative number !"
+#~ msgstr "Comprimento é um número negativo!"
+
+#~ msgid "Nothing to write"
+#~ msgstr "Nada para escrever"
+
+#, fuzzy
+#~ msgid "No such open mode: '%Q'"
+#~ msgstr "Sem modo aberto: %s"
+
+#, fuzzy
+#~ msgid "File is not open!"
+#~ msgstr "O arquivo não está aberto !"
+
+#, fuzzy
+#~ msgid "One of the geometry array parameters didn't evaluate to an integer"
+#~ msgstr "O parâmetro da ação não avaliou para um índice"
+
+#, fuzzy
+#~ msgid "The first parameter didn't evaluate to an array nor an integer"
+#~ msgstr "O parâmetro da ação não avaliou para um índice"
+
+#, fuzzy
+#~ msgid "One of the array parameters didn't evaluate to an integer"
+#~ msgstr "O parâmetro da ação não avaliou para um índice"
+
+#, fuzzy
+#~ msgid "Unknown orientation"
+#~ msgstr "Função desconhecida"
+
+#, fuzzy
+#~ msgid "Widget or Pixmap required "
+#~ msgstr "Widget ou Pixmap requerido (%s)"
+
+#, fuzzy
+#~ msgid "Invalid mode '%Q'"
+#~ msgstr "imagem inválida"
+
+#~ msgid "Pixmap object required"
+#~ msgstr "Objeto pixmap requerido"
+
+#, fuzzy
+#~ msgid "Unknown mode "
+#~ msgstr "Modo eco desconhecido"
+
+#, fuzzy
+#~ msgid "Unknown segment style "
+#~ msgstr "Tipo de widget desconhecido: %s"
+
+#, fuzzy
+#~ msgid "Failed to find the widget to wrap"
+#~ msgstr "Não foi possível encontrar o widget (%s)"
+
+#~ msgid "Non-negative integer length expected as parameter"
+#~ msgstr ""
+#~ "Esperava-se para o parâmetro o comprimentodeeum inteiro não negativo"
+
+#~ msgid "Non-negative integer index expected as first parameter"
+#~ msgstr ""
+#~ "Esperava-se para primeiro parâmetro o índice de um inteiro não negativo"
+
+#~ msgid "Non-negative integer length expected as second parameter"
+#~ msgstr ""
+#~ "Esperava-se para segundo parâmetro o comprimento de um inteiro não "
+#~ "negativo"
+
+#~ msgid "Widget object required"
+#~ msgstr "Objeto widget requerido"
+
+#~ msgid "Can't find the widget object to add (%s)"
+#~ msgstr "Não foi possível encontrar o objeto widget para adicionar %s"
+
+#~ msgid "Invalid object"
+#~ msgstr "Objeto inválido"
+
+#, fuzzy
+#~ msgid "Can't find the specified file '%s'."
+#~ msgstr "Eu não posso encontrar o arquivo especificado."
+
+#, fuzzy
+#~ msgid "I can't find the specified file %Q."
+#~ msgstr "Eu não posso encontrar o arquivo especificado."
+
+#, fuzzy
+#~ msgid "No such line number"
+#~ msgstr "Nenhum timer (%s)"
+
+#, fuzzy
+#~ msgid "Unknown word wrap '%Q'"
+#~ msgstr "Operação de associação desconhecida '%Q'"
+
+#, fuzzy
+#~ msgid "One of the colors array parameters didn't evaluate to an integer"
+#~ msgstr "O parâmetro da ação não avaliou para um índice"
+
+#, fuzzy
+#~ msgid "Unknown text format '%Q'"
+#~ msgstr "Função desconhecida"
+
+#, fuzzy
+#~ msgid " I can't find the specified file '%Q'."
+#~ msgstr "Eu não posso encontrar o arquivo especificado."
+
+#, fuzzy
+#~ msgid " I cannot read the file %Q'."
+#~ msgstr " Eu não posso ler o arquivo."
+
+#, fuzzy
+#~ msgid "Unknown alignment '%Q'"
+#~ msgstr "Alinhamento desconhecido: %s"
+
+#, fuzzy
+#~ msgid "Unknown auto formatting mode '%Q'"
+#~ msgstr "Operação de associação desconhecida '%Q'"
+
+#, fuzzy
+#~ msgid "Unknown vertical alignment '%Q'"
+#~ msgstr "Alinhamento desconhecido: %s"
+
+#, fuzzy
+#~ msgid "Unknown dock area '%Q'"
+#~ msgstr "Operador desconhecido"
+
+#, fuzzy
+#~ msgid "Class is undefined"
+#~ msgstr "Classe %s é indefinida"
+
+#, fuzzy
+#~ msgid "Widget or Pixmap required"
+#~ msgstr "Widget ou Pixmap requerido (%s)"
+
+#, fuzzy
+#~ msgid "Processing aborted"
+#~ msgstr "Processando a lista: %Q"
+
+#, fuzzy
+#~ msgid "XML support not available in the Qt library"
+#~ msgstr "Medição de Lag ainda não disponível"
+
+#~ msgid "Invalid width parameter"
+#~ msgstr "Comprimento de parâmetro inválido"
+
+#~ msgid "Invalid height parameter"
+#~ msgstr "Altura de parâmetro inválida"
+
+#~ msgid "The parameters do not define a rectangle"
+#~ msgstr "Os parâmetros não definem um rectângulo"
+
+#~ msgid "The parameters do not define a point"
+#~ msgstr "Os parâmetros não definem um ponto"
+
+#~ msgid "The parameters are do not define a valid size"
+#~ msgstr "Os parâmetros não definem um tamanho válido"
+
+#~ msgid "Invalid size parameter (%s)"
+#~ msgstr "Tamanho de parâmetro inválido (%s)"
+
+#~ msgid "Unknown widget type: %s"
+#~ msgstr "Tipo de widget desconhecido: %s"
+
+#, fuzzy
+#~ msgid "Can't find the widget object assuming 0"
+#~ msgstr "Não foi possível encontrar o objeto widget (%s)"
+
+#, fuzzy
+#~ msgid "Parent must be a widget object"
+#~ msgstr "Não é um objeto do widget"
+
+#~ msgid "Invalid parameters"
+#~ msgstr "Parâmetros inválidos"
+
+#~ msgid "Invalid Parameters"
+#~ msgstr "Parâmetros inválidos"
+
+#~ msgid "No Layout associated to the widget "
+#~ msgstr "Nenhuma Disposição associada ao widget "
+
+#~ msgid "Invalid row parameter (%s)"
+#~ msgstr "Linha de parâmetro inválida (%s)"
+
+#~ msgid "Invalid column parameter (%s)"
+#~ msgstr "Coluna de parâmetro inválida (%s)"
+
+#, fuzzy
+#~ msgid "Unknown widget flag '%Q'"
+#~ msgstr "Tipo de widget desconhecido: %s"
+
+#, fuzzy
+#~ msgid "Unknown style '%Q'"
+#~ msgstr "Frame desconhecido / estilo sombra: %s"
+
+#, fuzzy
+#~ msgid "Unknown alignment: '%Q'"
+#~ msgstr "Alinhamento desconhecido: %s"
+
+#, fuzzy
+#~ msgid "Unknown frame style"
+#~ msgstr "Frame desconhecido / estilo sombra: %s"
+
+#, fuzzy
+#~ msgid "Unknown echo mode %Q"
+#~ msgstr "Modo eco desconhecido"
+
+#~ msgid "the toolbar cannot be a parent-widget!"
+#~ msgstr "a barra de ferramentas não pode ser parent-widget!"
+
+#, fuzzy
+#~ msgid "pix '%Q' doesn't exists"
+#~ msgstr "A ação \"%s\" não existe"
+
+#~ msgid "Doesn't a widget object"
+#~ msgstr "Não é um objeto do widget"
+
+#~ msgid "Process could not be starded."
+#~ msgstr "O processo nao pode ser iniciado."
+
+#, fuzzy
+#~ msgid "Unknown alignment"
+#~ msgstr "Alinhamento desconhecido: %s"
+
+#, fuzzy
+#~ msgid "Unknown orientation: "
+#~ msgstr "Função desconhecida"
+
+#, fuzzy
+#~ msgid "Not Enough Parameters"
+#~ msgstr "Parâmetros insuficientes"
+
+#, fuzzy
+#~ msgid "Unknown tickmark '%Q'"
+#~ msgstr "Comando desconhecido"
+
+#, fuzzy
+#~ msgid "Unknown orientation '%Q'"
+#~ msgstr "Função desconhecida"
+
+#, fuzzy
+#~ msgid "Context sensitive help"
+#~ msgstr "&Diferenciar Maiúsculas/minúsculas"
+
+#, fuzzy
+#~ msgid "&Replace"
+#~ msgstr "Respostas"
+
+#, fuzzy
+#~ msgid "Find & Repalce"
+#~ msgstr "Respostas"
+
+#~ msgid "Find"
+#~ msgstr "Procurar"
+
+#, fuzzy
+#~ msgid "Replace with"
+#~ msgstr "Respostas"
+
+#, fuzzy
+#~ msgid "&Findnext"
+#~ msgstr "&Procurar próximo"
+
+#, fuzzy
+#~ msgid "&Replace(WIP)"
+#~ msgstr "Respostas"
+
+#~ msgid "orphan_servers"
+#~ msgstr "servidores_órfãos"
+
+#~ msgid ""
+#~ "%s doesn't look like a servers.ini file.\n"
+#~ "Import failed."
+#~ msgstr ""
+#~ "%s não parece ser um arquivo servers.ini.\n"
+#~ "Importação falhou."
+
+#~ msgid "Choose a servers.ini file"
+#~ msgstr "Escolha o arquivo servers.ini"
+
+#~ msgid "Remote mIRC servers.ini Import Wizard"
+#~ msgstr "Assistente de Importação remota do servers.ini do mIRC"
+
+#~ msgid ""
+#~ "<center><b>Welcome!</b><br><br>This wizard will guide you in the process "
+#~ "of downloading a list of IRC servers. Please click \"<b>Next</b>\" to "
+#~ "begin the operation.</center>"
+#~ msgstr ""
+#~ "<center><b>Bem vindo!</b><br><br>Este assistente irá guiá-lo no processo "
+#~ "de transferência de uma lista de servidores IRC. Por favor clique em "
+#~ "\"<b>Próximo</b>\" para iniciar a operação.</center>"
+
+#~ msgid ""
+#~ "<center>Here you can modify the URL that the list will be downloaded "
+#~ "from. In most cases the default URL is acceptable.</center>"
+#~ msgstr ""
+#~ "<center>Aqui você pode modificar a URL de onde a lista será transferida. "
+#~ "Na maior parte dos casos a URL padrão é aceitável.</center>"
+
+#~ msgid "URL Selection"
+#~ msgstr "Seleção de URL"
+
+#~ msgid "Please wait while the list is being downloaded"
+#~ msgstr "Por favor aguarde enquanto a lista é transferida"
+
+#~ msgid "List Download"
+#~ msgstr "Lista de Transferências"
+
+#~ msgid "Failed to start the server list transfer :("
+#~ msgstr "Falhou ao iniciar a transferência da lista de servidores"
+
+#~ msgid "File downloaded: processing ..."
+#~ msgstr "Arquivo transferido: processando..."
+
+#~ msgid "%1 servers imported succesfully"
+#~ msgstr "%1 servidor(es) importado(s) com sucesso"
+
+#~ msgid "No servers imported"
+#~ msgstr "Nenhum servidor importado"
+
+#~ msgid "Import from servers.ini"
+#~ msgstr "Importar de servers.ini"
+
+#~ msgid "Import from http://www.mirc.co.uk/servers.ini"
+#~ msgstr "Importar de http://www.mirc.co.uk/servers.ini"
+
+#~ msgid "Internal error: I'm not in the user database ?"
+#~ msgstr "Erro interno: Eu não estou na base de dados de usuários ?"
+
+#, fuzzy
+#~ msgid ""
+#~ "Can't set the current avatar to '%Q': failed to start the http transfer"
+#~ msgstr ""
+#~ "Não foi possivel colocar o avatar atual para '%s': falha ao iniciar a "
+#~ "transferência http"
+
+#, fuzzy
+#~ msgid "Can't set the current avatar to '%Q': can't load the image"
+#~ msgstr ""
+#~ "Não foi possivel colocar o avatar atual para '%s': não foi possivel "
+#~ "carregar a imagem"
+
+#~ msgid "Invalid timeout specified, using default"
+#~ msgstr "Intervalo de tempo especificado inválido: usar pre-definido"
+
+#, fuzzy
+#~ msgid "Can't add a file offer for file %Q (huh ? file not readable ?)"
+#~ msgstr ""
+#~ "Não foi possível adicionar o compartilhamento do arquivo %s (huh? arquivo "
+#~ "não legível?)"
+
+#, fuzzy
+#~ msgid "Added %d secs file offer for file %Q (%Q) and receiver %Q"
+#~ msgstr "Adicionado %d seg ao envío do arquivo %s (%s) e receptor %s"
+
+#, fuzzy
+#~ msgid "Notifying avatar '%Q' to %Q"
+#~ msgstr "Notificando avatar ' %s' para %s"
+
+#, fuzzy
+#~ msgid "Unknown "
+#~ msgstr "Desconhecido"
+
+#~ msgid "Invalid DCOP parameter syntax"
+#~ msgstr "Sintaxe inválida do parâmetro de DCOP"
+
+#~ msgid "The specified parameter is not an integer"
+#~ msgstr "O parâmetro especificado não é um inteiro"
+
+#~ msgid "Unsupported DCOP parameter type %s"
+#~ msgstr "Não suportado parâmetro DCOP do tipo %s "
+
+#~ msgid "DCOP call failed"
+#~ msgstr "Chamada DCOP falhou"
+
+#~ msgid "DCOP calls are available only when KDE support is compiled in"
+#~ msgstr ""
+#~ "Chamadas DCOP estão disponíveis apenas quando compilado com suporte KDE"
+
+#~ msgid "Item"
+#~ msgstr "Ítem"
+
+#~ msgid "Submenu"
+#~ msgstr "Submenu"
+
+#~ msgid "External Menu"
+#~ msgstr "Menu Externo"
+
+#~ msgid "Separator"
+#~ msgstr "Separador"
+
+#~ msgid "Label"
+#~ msgstr "Rótulo"
+
+#~ msgid "### Epilogue ###"
+#~ msgstr "### Epílogo ###"
+
+#~ msgid "Epilogue"
+#~ msgstr "Epílogo"
+
+#~ msgid "### Prologue ###"
+#~ msgstr "### Prólogo ###"
+
+#~ msgid "Popup name"
+#~ msgstr "Nome do popup"
+
+#~ msgid "Type"
+#~ msgstr "Tipo"
+
+#~ msgid "Text:"
+#~ msgstr "Texto:"
+
+#~ msgid ""
+#~ "<center><b>Visible text</b><br>May contain identifiers that will be "
+#~ "evaluated at popup call time.<br>For labels, this text can contain also "
+#~ "limited HTML tags.</center>"
+#~ msgstr ""
+#~ "<center><b>Texto Visível</b><br>Pode conter identificadores que serão "
+#~ "avaliados no momento da chamada ao popup.<br>Para rótulos, este texto "
+#~ "pode conter também alguns marcadores html.</center>"
+
+#~ msgid "Condition:"
+#~ msgstr "Condição:"
+
+#~ msgid ""
+#~ "<center><b>Boolean condition</b><br>Will be evaluated at popup call time "
+#~ "in order to decide if this entry has to be shown.<br>An empty condition "
+#~ "evaluates to true.</center>"
+#~ msgstr ""
+#~ "<center><b>Condição Lógica</b><br>Será avaliada no momento da chamada ao "
+#~ "popup para decidir se deve exibir esta opção.<br>Uma condição vazia se "
+#~ "avalia como certa.</center>"
+
+#~ msgid "Icon:"
+#~ msgstr "Ícone:"
+
+#~ msgid ""
+#~ "<center><b>Icon identifier</b><br>May be an internal icon ID, an absolute "
+#~ "path or a relative path.<br>Portable scripts should never use absolute "
+#~ "paths.</center>"
+#~ msgstr ""
+#~ "<center><b>Ícone Identificador</b><br>Pode ser um ID de ícone interno, um "
+#~ "caminho absoluto ou um relativo<br>. Os scripts portáveis nunca deveriam "
+#~ "usar caminhos absolutos.</center>"
+
+#~ msgid "External menu:"
+#~ msgstr "Menu externo:"
+
+#~ msgid ""
+#~ "<center><b>External menu name</b><br>This allows to nest externally "
+#~ "defined popup menus. The popup menu with the specified name will be "
+#~ "looked up at menu setup time.</center>"
+#~ msgstr ""
+#~ "<center><b>Nome de menu externo</b><br>Isto permite aninhar menus popups "
+#~ "definidos externamente. O menu com o nome especificado será pesquisado no "
+#~ "momento de configuração do mesmo.</center>"
+
+#~ msgid "Item Id:"
+#~ msgstr "Id do Ítem:"
+
+#~ msgid ""
+#~ "<center><b>Item id</b><br>This will allow you to use delpopupitem later.</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center><b>Itém id</b><br>Isto permitirá você a utilizar delpopupitem "
+#~ "mais tarde.</center>"
+
+#~ msgid "New Separator Below"
+#~ msgstr "Novo Separator Abaixo"
+
+#~ msgid "New Separator Above"
+#~ msgstr "Novo Separador Acima"
+
+#~ msgid "New Separator Inside"
+#~ msgstr "Novo Separador Interno"
+
+#~ msgid "New Label Below"
+#~ msgstr "Novo Rótulo Abaixo"
+
+#~ msgid "New Label Above"
+#~ msgstr "Novo Rótulo Acima"
+
+#~ msgid "New Label Inside"
+#~ msgstr "Novo Rótulo Interno"
+
+#~ msgid "New Item Below"
+#~ msgstr "Novo Item Abaixo"
+
+#~ msgid "New Item Above"
+#~ msgstr "Novo Item Acima"
+
+#~ msgid "New Item Inside"
+#~ msgstr "Novo Item Interno"
+
+#~ msgid "New Menu Below"
+#~ msgstr "Novo Menu Abaixo"
+
+#~ msgid "New Menu Above"
+#~ msgstr "Novo Menu Acima"
+
+#~ msgid "New Menu Inside"
+#~ msgstr "Novo Menu Interno"
+
+#~ msgid "New External Menu Below"
+#~ msgstr "Novo Menu Externo Abaixo"
+
+#~ msgid "New External Menu Above"
+#~ msgstr "Novo Menu Externo Acima"
+
+#~ msgid "New External Menu Inside"
+#~ msgstr "Novo Menu Externo Interno"
+
+#~ msgid "Cu&t"
+#~ msgstr "Recor&tar"
+
+#~ msgid "&Copy"
+#~ msgstr "&Copiar"
+
+#~ msgid "&Paste Below"
+#~ msgstr "Co&lar Abaixo"
+
+#~ msgid "Paste Above"
+#~ msgstr "Colar acima"
+
+#~ msgid "Paste Inside"
+#~ msgstr "Colar dentro"
+
+#~ msgid "New Menu Prologue"
+#~ msgstr "Novo Prólogo de Menu"
+
+#~ msgid "New Menu Epilogue"
+#~ msgstr "Novo Epílogo de Menu "
+
+#~ msgid "&Export All To..."
+#~ msgstr "&Exportar Todos Para..."
+
+#~ msgid "&Export selected To..."
+#~ msgstr "&Exportar selecionado Para..."
+
+#~ msgid "&New Popup"
+#~ msgstr "&Novo Popup"
+
+#~ msgid "Re&move Popup"
+#~ msgstr "Re&mover Popup"
+
+#~ msgid "&Export Popup To..."
+#~ msgstr "&Exportar Popup para..."
+
+#~ msgid "Unable to write to the popup file."
+#~ msgstr "Impossível escrever no arquivo de popup."
+
+#~ msgid "Popup Editor"
+#~ msgstr "Editor de Popup"
+
+#~ msgid "Missing both encrypt and decrypt key: at least one is needed"
+#~ msgstr ""
+#~ "Faltando tanto a chave de criptografia quanto a de descriptografia: é "
+#~ "necessário pelo menos uma"
+
+#~ msgid "Error 0: Success ?"
+#~ msgstr "Erro 0: Sucesso ?"
+
+#~ msgid "Unsupported crypt mode"
+#~ msgstr "Mode de criptografia não suportado"
+
+#~ msgid "Unsupported direction"
+#~ msgstr "Direção não suportada"
+
+#~ msgid "Unsupported key length"
+#~ msgstr "Tamanho de chave não suportado"
+
+#~ msgid "Bad key data"
+#~ msgstr "Dados de chave errados"
+
+#~ msgid "Engine not initialized"
+#~ msgstr "Motor não inicializado"
+
+#~ msgid "Invalid direction for this engine"
+#~ msgstr "Direção inválida para este motor"
+
+#~ msgid "Corrupted message data or invalid decrypt key"
+#~ msgstr "Dados da mensagem corrompidos ou chave de descriptografia inválida"
+
+#~ msgid "Unknown error"
+#~ msgstr "Erro desconhecido"
+
+#~ msgid "Ops...encrypt cipher not initialized"
+#~ msgstr "Opa...motor de criptografia não inicializado"
+
+#~ msgid "Data buffer too long"
+#~ msgstr "Buffer de dados muito grande"
+
+#~ msgid "Ops...decrypt cipher not initialized"
+#~ msgstr "Opa...motor de descriptografia não inicializado"
+
+#~ msgid "The message is not a hexadecimal string: this is not my stuff"
+#~ msgstr "A mensagem não é uma string hexadecimal: Isto não é meu"
+
+#~ msgid "The message is not a base64 string: this is not my stuff"
+#~ msgstr "A mensagem não é uma string de base64: Isto não é meu"
+
+#~ msgid "The message doesn't seem to be encoded with CBC Mircryption"
+#~ msgstr "A mensagem não parece estar codificada com CBC Mircryption"
+
+#~ msgid ""
+#~ "Cryptographic engine based on the\n"
+#~ "Advanced Encryption Standard (AES)\n"
+#~ "algorithm called Rijndael.\n"
+#~ "The text is first encrypted with rijndael\n"
+#~ "and then converted to %s notation.\n"
+#~ "The keys used are %d bit long and will be padded\n"
+#~ "with zeros if you provide shorter ones.\n"
+#~ "If only one key is provided, this engine\n"
+#~ "will use it for both encrypting and decrypting.\n"
+#~ "See the rijndael module documentation\n"
+#~ "for more info on the algorithm used.\n"
+#~ msgstr ""
+#~ "Motor criptográfico baseado em \n"
+#~ "Advanced Encryption Standard (AES)\n"
+#~ "algoritmo chamado Rijndael.\n"
+#~ "O texto é encriptado primero com rijndael\n"
+#~ "e depois convertido a notação %s.\n"
+#~ "As chaves usadas são de tamanho %d bits e serão completadas\n"
+#~ "com zeros se você fornecer uma mais curta.\n"
+#~ "Se você só fornecer uma chave, este motor\n"
+#~ "a utilizará para encriptação e desencriptação.\n"
+#~ "Leia a documentação do módulo rijndael\n"
+#~ "para obter mais informações sobre o algoritmo usado.\n"
+
+#~ msgid "hexadecimal"
+#~ msgstr "hexadecimal"
+
+#~ msgid "base64"
+#~ msgstr "base64"
+
+#~ msgid ""
+#~ "Popular cryptographic engine based on the\n"
+#~ "old Blowfish encryption algorithm.\n"
+#~ "The text is first encrypted with Blowfish \n"
+#~ "and then converted to base64 notation.\n"
+#~ "The keys used have variable length and\n"
+#~ "are specified as character strings.\n"
+#~ "You can specify keys long up to 56 bytes (448 bits).\n"
+#~ "If only one key is provided, this engine\n"
+#~ "will use it for both encrypting and decrypting.\n"
+#~ "This engine works in ECB mode by default:\n"
+#~ "if you want to use CBC mode you must prefix\n"
+#~ "your key(s) with \"cbc:\".\n"
+#~ msgstr ""
+#~ "Motor de criptografia popular baseado no\n"
+#~ "antigo algoritmo de criptografia chamado Blowfish.\n"
+#~ "O texto é encriptado primero com Blowfish\n"
+#~ "e depois convertido a notação base64\n"
+#~ "As chaves utilizadas tem comprimento variável e\n"
+#~ "e são especificadas como carácteres string\n"
+#~ "Você pode fornecer chaves com até 56 bytes (448 bits).\n"
+#~ "Se apenas uma chave for fornecida, este motor a utilizará para as "
+#~ "operações de criptografia e descriptografia.\n"
+#~ "Este motor trabalha no modo ECB por padrão \n"
+#~ "Se você quiser utilizarar o modo CBC você deve prefixar\n"
+#~ " sua(s) chaves(s) com \"cbc:\".\n"
+
+#~ msgid "Choose the file to share"
+#~ msgstr "Escolha o arquivo para compartilhar"
+
+#~ msgid "Outgoing traffic"
+#~ msgstr "Tráfego de saída"
+
+#~ msgid "Incoming traffic"
+#~ msgstr "Tráfego de entrada"
+
+#~ msgid "[IDENT]: Service shutdown (spontaneous)"
+#~ msgstr "[IDENT]: Serviço desligado (espontâneo)"
+
+#~ msgid "[IDENT]: Service shutdown (on request)"
+#~ msgstr "[IDENT]: Serviço desligado (a pedido)"
+
+#~ msgid "The current window is not a channel"
+#~ msgstr "A janela corrente não é um canal"
+
+#, fuzzy
+#~ msgid "Can't find the window with id '%Q'"
+#~ msgstr "A janela com id '%s' não foi encontrada."
+
+#, fuzzy
+#~ msgid "The specified window (%Q) is not a channel"
+#~ msgstr "A janela (%s) especificada não é um canal"
+
+#~ msgid "The specified toolbar doesn't exist"
+#~ msgstr "A barra de ferramentas especificada não existe"
+
+#, fuzzy
+#~ msgid "No action name/index specified"
+#~ msgstr "Nenhum nome de opção especificado"
+
+#~ msgid "The action parameter didn't evaluate to an index"
+#~ msgstr "O parâmetro da ação não avaliou para um índice"
+
+#~ msgid "The toolbar does not contain the specified item"
+#~ msgstr "A Barra de Ferramentas não contém o ítem especificado"
+
+#, fuzzy
+#~ msgid "The action \"%Q\" doesn't exist"
+#~ msgstr "A ação \"%s\" não existe"
+
+#~ msgid "KVIrc"
+#~ msgstr "KVIrc"
+
+#~ msgid "Context"
+#~ msgstr "Contexto"
+
+#~ msgid "&Configure KVIrc..."
+#~ msgstr "&Configurar KVIrc..."
+
+#~ msgid "&About KVIrc"
+#~ msgstr "Sobre o &KVIrc"
+
+#~ msgid "Un&dock"
+#~ msgstr "&Remover Ícone do panel"
+
+#~ msgid "&Quit"
+#~ msgstr "&Sair do KVIrc"
+
+#~ msgid "Ctrl+Q"
+#~ msgstr "Ctrl+Q"
+
+#~ msgid "Nothing is happening..."
+#~ msgstr "Nada esta acontecendo..."
+
+#~ msgid "Just idling..."
+#~ msgstr "Apenas Inativo...."
+
+#~ msgid "Dum de dum de dum..."
+#~ msgstr "Dum de dum de dum..."
+
+#~ msgid "Hey man... do something!"
+#~ msgstr "Ei!...faz alguma coisa!"
+
+#~ msgid "Umpf!"
+#~ msgstr "Umpf!"
+
+#~ msgid "Silence speaking"
+#~ msgstr "Falando em silêncio"
+
+#~ msgid "Are ya here?"
+#~ msgstr "Estás aí?"
+
+#~ msgid "The world has stopped?"
+#~ msgstr "O mundo parou?"
+
+#~ msgid "Everything is all right"
+#~ msgstr "Está tudo bem"
+
+#~ msgid "idle()"
+#~ msgstr "inativo()"
+
+#~ msgid "It's so cold here..."
+#~ msgstr "Aqui está muito frio..."
+
+#~ msgid "Do not disturb... watching TV"
+#~ msgstr "Não incomode...estou vendo televisão"
+
+#~ msgid "Just vegetating"
+#~ msgstr "Apenas vegetando"
+
+#~ msgid "Hey... are ya sure that your network is up?"
+#~ msgstr "Ei!...tem certeza que a sua internet está ok?"
+
+#~ msgid "Seems like the world has stopped spinning"
+#~ msgstr "Parece que o mundo parou de rodar"
+
+#~ msgid "This silence is freaking me out!"
+#~ msgstr "Este silêncio está me assustando!"
+
+#~ msgid "Mieeeeeowww!"
+#~ msgstr "Miaaaaauuuu!"
+
+#~ msgid "idle idle idle idle!"
+#~ msgstr "inativo inativo inativo inativo!"
+
+#~ msgid "Hide Window"
+#~ msgstr "Ocultar a Janela"
+
+#~ msgid "Show Window"
+#~ msgstr "Exibir a Janela"
+
+#~ msgid "A really lame text transformation engine :D"
+#~ msgstr "Um motor de transformação de texto realmente simple :D"
+
+#, fuzzy
+#~ msgid "A really lame text transformation engine: Light Version."
+#~ msgstr "Um motor de transformação de texto realmente simple :D"
+
+#~ msgid "The window with id '%s' does not exist"
+#~ msgstr "A Janela com id '%s' não existe"
+
+#~ msgid "Window type or 'all' expected as first parameter"
+#~ msgstr "Tipo de janela ou ' todas ' se esperava como primeiro parâmetro"
+
+#, fuzzy
+#~ msgid "Invalid IRC context id '%Q'"
+#~ msgstr "Id '%s' de contexto de IRC inválido"
+
+#~ msgid ""
+#~ "The specified IRC context is not valid: creating a context free window"
+#~ msgstr ""
+#~ "O contexto de IRC especificado não é válido: criando uma janela de "
+#~ "contexto livre"
+
+#~ msgid "The specified window is not of type \"userwnd\""
+#~ msgstr "A janela especificada não é do tipo \"userwnd\""
+
+#, fuzzy
+#~ msgid "Background not found %Q "
+#~ msgstr "Cor de fundo"
+
+#, fuzzy
+#~ msgid "Pixmap objects required !"
+#~ msgstr "Objeto pixmap requerido"
+
+#~ msgid "Both -n and -m switchess specified, -n takes precedence"
+#~ msgstr "Ambas as opções -n e -m especificadas, -n toma precedência"
+
+#~ msgid "Failed to allocate the specified crypt engine"
+#~ msgstr "Falhou ao alocar motor de criptografia especificado"
+
+#~ msgid "This executable has been compiled without crypt support"
+#~ msgstr "Este executável está compilado sem suporte a criptografia"
+
+#~ msgid "User Registration Wizard - KVIrc"
+#~ msgstr "Assistente de Registro de usuários - KVIrc"
+
+#~ msgid ""
+#~ "<p>Welcome to the user registration wizard.<br>This process allows you to "
+#~ "add an IRC user to the database and set properties for that user. KVIrc "
+#~ "will be (hopefully) able to recognize the user, add him to the notify "
+#~ "list, and display the associated avatar.<br><br>First of all, you must "
+#~ "insert an <b>entry name or real name</b> for the user you're going to "
+#~ "register. The name will be used to identify the database entry and has no "
+#~ "specific requirements, it can be a given name, nickname, or just some "
+#~ "text to remind you of the real person.<br>Examples: \"George W Bush\", "
+#~ "\"Dubya\".\n"
+#~ "</p>"
+#~ msgstr ""
+#~ "<p>Bem vindo ao assistente de registro de usuários.<br>Este processo "
+#~ "permite adicionar um usuário de IRC a base de dados do KVIrc e configurar "
+#~ "algumas de suas propriedades. O KVIrc será capaz (confiantemente) de "
+#~ "reconhecer o usuário, adicioná-lo a lista de notificações, exibir seu "
+#~ "avatar associado, etc...<br><br>Primeiramente, deve escrever o <b>nome de "
+#~ "entrada ou o nome Real</b> do usuário que será registrado. O nome será "
+#~ "usado para identificar a entrada da base de dados e não tem nenhum "
+#~ "requerimento específico, pode ser um nome, um apelido ou somente um texto "
+#~ "que te lembre a pessoa.<br>Exemplos: \"Luis Inácio Lula da Silva\", \"Lula"
+#~ "\".\n"
+#~ "</p>"
+
+#~ msgid "Step 1: Entry Name"
+#~ msgstr "Passo 1: Nome de Entrada"
+
+#~ msgid ""
+#~ "<p>A registered user is identified by one or more <b>IRC masks</b>.<br>A "
+#~ "mask must be in the following form:<br><b>nickname!username@hostname</"
+#~ "b><br>and can contain wildcard characters '*' and '?'. Be careful in "
+#~ "choosing the masks, as they are the only way to verify the identity of a "
+#~ "registered user.<br><br>You can enter at most two masks here, if you wish "
+#~ "to add more masks, use the \"<b>Edit</b>\" button in the Registered Users "
+#~ "dialog. You must enter at least one mask.</p>"
+#~ msgstr ""
+#~ "<p>Um usuário registrado é identificado por uma ou mais <b>máscaras de "
+#~ "IRC</b>.<br>A máscara deve estar no seguinte formato:<br><b>apelido!"
+#~ "nome_de_usuário@máquina</b><br>e pode conter wildcards '*' e '?'. Seja "
+#~ "cuidadoso ao escolher às máscaras: são o único método para verificar a "
+#~ "identidade de um usuário registrado.<br><br>Aqui você só pode digitar "
+#~ "duas máscaras; se desejar adicionar mais, utilize o botão \"<b>Editar</b>"
+#~ "\" no diálogo de Usuários Registrados. Você precisa digitar pelo menos "
+#~ "uma máscara.</p>"
+
+#~ msgid "Step 2: Mask Selection"
+#~ msgstr "Passo 2: Seleção da máscara"
+
+#~ msgid ""
+#~ "<p>If you want to store an avatar image for this user, you can set it "
+#~ "here. KVIrc will show the avatar in the userlist next to the user's "
+#~ "nickname.<br>An avatar can be in any supported image format (PNG is "
+#~ "recommended). Keep in mind that KVIrc stores avatars in memory and has to "
+#~ "resize them to fit in the userlist, thus it's better to use small, low-"
+#~ "resolution images.</p>"
+#~ msgstr ""
+#~ "<p>Se você quiser armazenar uma imagem de avatar para este usuário, você "
+#~ "pode configurar aqui. O KVIrc a exibirá junto ao apelido na lista de "
+#~ "usuários.<br>Um avatar pode estar em qualquer formato de imagem "
+#~ "reconhecido (se recomenda usar PNG). Tenha em mente que o KVIrc mantém os "
+#~ "avatares na memória e tem que redimensioná-los para caber na lista de "
+#~ "usuários, de modo que é melhor usar pequenas imagens de baixa resolução.</"
+#~ "p>"
+
+#~ msgid "Store an avatar for this user"
+#~ msgstr "Armazenar um avatar para este usuário"
+
+#~ msgid "Step 3: Avatar Selection"
+#~ msgstr "Paso 3: Seleção do Avatar"
+
+#~ msgid ""
+#~ "<p>If you want to be notified when this user is online or goes offline, "
+#~ "you must specify the list of nicknames that KVIrc will look for."
+#~ "<br><br>You can enter at most two nicknames here, if you wish to add more "
+#~ "nicknames, use the \"<b>Edit</b>\" button in the Registered Users dialog."
+#~ "</p>"
+#~ msgstr ""
+#~ "<p>Se você deseja ser avisado quando este usuário se conectar ou "
+#~ "desconectar, Você deve especificar a lista de apelidos na qual o KVIrc "
+#~ "irá procurar por ele.<br><br>Aqui você só pode digitar dois nicks; se "
+#~ "desejar adicionar mais, utilize o botão \"<b>Editar</b>\" no Diálogo de "
+#~ "Usuários Registrados.</p>"
+
+#~ msgid "Add this user to the notify list"
+#~ msgstr "Adicionar este usuário na lista de notificações"
+
+#~ msgid "Nickname 2:"
+#~ msgstr "Apelido 2:"
+
+#~ msgid "Step 4: Notify List"
+#~ msgstr "Paso 4: Lista de Notificações"
+
+#~ msgid ""
+#~ "<p>That's it. The user registration has been completed.<br><br>Click "
+#~ "\"<b>Finish</b>\" to close this dialog.</p>"
+#~ msgstr ""
+#~ "<p>Iste é tudo. O registro de usuário foi concluido correctamente."
+#~ "<br><br>Clique em \"Finalizar\" para fechar este diálogo.</p>"
+
+#~ msgid "Registration Complete"
+#~ msgstr "Registro concluido"
+
+#~ msgid "User already registered: found exact name match"
+#~ msgstr "O usuário ja está registrado: um nome semelhante foi encontrado"
+
+#, fuzzy
+#~ msgid "Mask %Q is already used to identify user %s"
+#~ msgstr "A máscara %s já esta em uso para identificar o usuário %s"
+
+#, fuzzy
+#~ msgid "User not found (%Q)"
+#~ msgstr "Usuário não encontrado (%s)"
+
+#~ msgid "No mask specified"
+#~ msgstr "Máscara não especificada"
+
+#, fuzzy
+#~ msgid "User %Q not found"
+#~ msgstr "Usuário %s não encontrado"
+
+#, fuzzy
+#~ msgid "Mask %Q already used to identify user %Q"
+#~ msgstr "Máscara %s já está sendo usada para identificar o usuário %s"
+
+#, fuzzy
+#~ msgid "Mask %Q not found"
+#~ msgstr "Máscara %s não encontrada"
+
+#~ msgid "No property specified"
+#~ msgstr "Nenhuma propiedade especificada"
+
+#~ msgid "Registered users database dump:"
+#~ msgstr "Despejar base de datos de usuários registrados:"
+
+#~ msgid " User: %c%Q"
+#~ msgstr " Usurário: %c%Q"
+
+#~ msgid " Warning: this user has no registration masks"
+#~ msgstr " Atenção: este usuário não tem máscaras de registro"
+
+#~ msgid " Mask: %Q!%Q@%Q"
+#~ msgstr " Máscara: %Q!%Q@%Q"
+
+#~ msgid " Property: %Q=%Q"
+#~ msgstr " Propriedade: %Q=%Q"
+
+#~ msgid " No properties"
+#~ msgstr " Sem propriedades"
+
+#~ msgid "Total: %d matching users (of %d in the database)"
+#~ msgstr "Total: %d usuários semelhantes (de %d na base de datos)"
+
+#~ msgid "Property Editor"
+#~ msgstr "Editor de Propriedade"
+
+#~ msgid "Property"
+#~ msgstr "Propriedade"
+
+#~ msgid "Mask Editor"
+#~ msgstr "Editor de Máscaras"
+
+#~ msgid ""
+#~ "Insert a mask for this user.<br>It can contain the wildcard characters "
+#~ "'*' and '?'."
+#~ msgstr ""
+#~ "Inserir uma máscara para este usuário.<br>Esta pode conter carácteres "
+#~ "wildcard como '*' e '?'."
+
+#~ msgid ""
+#~ "<center>This the <b>nickname</b> that will match this user, default value "
+#~ "is the registered name.</center>"
+#~ msgstr ""
+#~ "<center>Este é o <b>Apelido</b> que coincidirá com este usuário, o valor "
+#~ "padrão é o nome registrado.</center>"
+
+#~ msgid ""
+#~ "<center>This the <b>username</b> that will match this user. <b>*</b> will "
+#~ "match any username.</center>"
+#~ msgstr ""
+#~ "<center>Este é o <b>nome de usuário</b> que coincidirá com este usuário. "
+#~ "<b>*</b> coincidirá com qualquer nome de usuário.</center>"
+
+#~ msgid ""
+#~ "<center>This the <b>hostname</b> that will match this user. <b>*</b> will "
+#~ "match any hostname.</center>"
+#~ msgstr ""
+#~ "<center>Este é o <b>nome de máquina</b> que coincidirá com este usuário. "
+#~ "<b>*</b> coincidirá com qualquer nome de máquina.</center>"
+
+#~ msgid "Registered User Entry"
+#~ msgstr "Entrada de Usuários Registrados"
+
+#~ msgid "Name:"
+#~ msgstr "Nome:"
+
+#~ msgid "Masks:"
+#~ msgstr "Máscara"
+
+#~ msgid "&Add..."
+#~ msgstr "&Adicionar..."
+
+#~ msgid "&Edit"
+#~ msgstr "&Editar"
+
+#~ msgid "Notify when user is online"
+#~ msgstr "Notificar quando o usuário ficar online"
+
+#~ msgid "Notify nicknames:"
+#~ msgstr "Notificar apelidos:"
+
+#~ msgid "<center>You can enter a space separated list of nicknames.</center>"
+#~ msgstr ""
+#~ "<center>Você pode digitar uma lista de apelidos separados por espaços.</"
+#~ "center>"
+
+#~ msgid "All Properties..."
+#~ msgstr "Todas às propriedades ..."
+
+#~ msgid "Registered Users - KVIrc"
+#~ msgstr "Usuários registrados - KVIrc"
+
+#~ msgid "Name"
+#~ msgstr "Nome"
+
+#~ msgid "Notify"
+#~ msgstr "Notificar"
+
+#~ msgid ""
+#~ "<center>This is the list of registered users. KVIrc can automatically "
+#~ "recognize and associate properties to them.<br>Use the buttons on the "
+#~ "right to add, edit and remove entries. The \"notify\" column allows you "
+#~ "to quickly add users to the notify list. Notify list fine-tuning can be "
+#~ "performed by editing the entry properties.</center>"
+#~ msgstr ""
+#~ "<center>Esta é a lista de usuários registrados. O KVIrc pode reconhecer e "
+#~ "associar propriedades de forma automática.<br>Utilizar os botões da "
+#~ "direita para adicionar, editar ou remover entradas.<br>A columna "
+#~ "\"notificação\" te permite adicionarr usuários a lista de notificações "
+#~ "rápidamente. O ajuste da lista de notificações pode ser feito se editando "
+#~ "a entrada da propriedades.</center> "
+
+#~ msgid "Add (Wizard)..."
+#~ msgstr "Adicionar (assistente)..."
+
+#~ msgid "Add a registered user by means of a user-friendly wizard."
+#~ msgstr "Adicionar um usuário registrado por meio de um amigável assistente."
+
+#~ msgid "Open the edit dialog to create a new user entry."
+#~ msgstr "Abrir a diálogo de edição para criar uma nova entrada de usuário."
+
+#~ msgid "Remove the currently selected entries."
+#~ msgstr "Remover às entradas atualmente selecionadas."
+
+#~ msgid "&Edit..."
+#~ msgstr "&Editar..."
+
+#~ msgid "Edit the first selected entry."
+#~ msgstr "Editar a primeira entrada selecionada."
+
+#~ msgid "Export To..."
+#~ msgstr "Exportar Para..."
+
+#~ msgid ""
+#~ "Export the selected entries to a file.<br>All the data associated with "
+#~ "the selected registered users will be exported.<br>You (or anyone else) "
+#~ "can later import the entries by using the \"Import\" button."
+#~ msgstr ""
+#~ "Exporta às entradas selecionadas para um arquivo.<br>Todos os dados "
+#~ "associados aos usuários registrados selecionados serão exportados."
+#~ "<br>Você, ou qualquer outro, pode importar as entradas mais tarde usando "
+#~ "o botão \"Importar\"."
+
+#~ msgid "Import From..."
+#~ msgstr "Importar de..."
+
+#~ msgid ""
+#~ "Import entries from a file exported earlier by the \"export\" function of "
+#~ "this dialog."
+#~ msgstr ""
+#~ "Importa às entradas de um arquivo exportado anteriormente pela função "
+#~ "\"Exportar\" deste diálogo."
+
+#~ msgid "No entries selected."
+#~ msgstr "Não existem entradas selecionadas."
+
+#~ msgid "Can't open file %s for writing."
+#~ msgstr "Não foi possível abrir o arquivo \"%s\" em modo de escrita."
+
+#~ msgid "Can't export the registered users database: Write error."
+#~ msgstr ""
+#~ "Não foi possível exportar a base de dados de usuários registrados: Erro "
+#~ "de escrita."
+
+#~ msgid "Can't open file %s for reading."
+#~ msgstr "Não foi possível abrir o arquivo %s para leitura."
+
+#~ msgid "The file %s doesn't appear to be a valid registered users database."
+#~ msgstr ""
+#~ "O arquivo %s não parece ser uma base de dados de usuários registrados "
+#~ "válida."
+
+#~ msgid "The file %s contains an invalid registered users database version."
+#~ msgstr ""
+#~ "O arquivo %s contém uma versão inválida da base de dados de usuários "
+#~ "registrados."
+
+#~ msgid "Can't import the registered users database: Read error."
+#~ msgstr ""
+#~ "Não foi possível importar a base de dados de usuários registrados: Erro "
+#~ "de leitura."
+
+#~ msgid "Drop here the icons from the toolbars to remove them"
+#~ msgstr ""
+#~ "Arraste para cá os ícones que deseja remover da barra de ferramentas"
+
+#~ msgid "ToolBar Properties"
+#~ msgstr "Propriedades da Barra de Ferramentas"
+
+#~ msgid "Id"
+#~ msgstr "Id"
+
+#~ msgid "Please choose the icon for the ToolBar"
+#~ msgstr "Por favor escolha o ícone da Barra de Ferramentas"
+
+#~ msgid "Invalid ToolBar Label"
+#~ msgstr "Rótulo da Barras de Ferramentas inválido"
+
+#~ msgid "The ToolBar Label can't be empty!"
+#~ msgstr "O Rótulo da Barra de Ferramentas não pode estar vazio!"
+
+#~ msgid "Duplicate ToolBar Id"
+#~ msgstr "id da Barras de Ferramentas Duplicada"
+
+#~ msgid ""
+#~ "The specified ToolBar Id already exists.<br>Would you like KVIrc to "
+#~ "assign it automatically (so it doesn't collide with any other toolbar) or "
+#~ "you prefer to do it manually ?"
+#~ msgstr ""
+#~ "A Id especificada para Barra de Ferramentas já existe.<br>Deseja que o "
+#~ "KVirc atribua isto automáticamente (para que não colida com outra barra "
+#~ "de ferramentas) ou você prefere fazer manualmente?"
+
+#~ msgid "Manually"
+#~ msgstr "Manualmente"
+
+#~ msgid "Automatically"
+#~ msgstr "Automaticamente"
+
+#~ msgid "Hide Advanced"
+#~ msgstr "Ocultar Avançado"
+
+#~ msgid "Customize Toolbars"
+#~ msgstr "Personalizar Barras de Ferramentas"
+
+#~ msgid "New ToolBar"
+#~ msgstr "Nova Barra de Ferramentas"
+
+#~ msgid "Delete ToolBar"
+#~ msgstr "Deletar Barras de Ferramentas"
+
+#~ msgid "Edit ToolBar"
+#~ msgstr "Editar Barra de Ferramentas"
+
+#~ msgid "Export ToolBar"
+#~ msgstr "Exportar Barra de Ferramentas"
+
+#~ msgid "Confirm ToolBar Deletion"
+#~ msgstr "Confirmar a deleção da barra de ferramentas"
+
+#~ msgid "Do you really want to delete toolbar \"%1\" ?"
+#~ msgstr "Você deseja realmente deletar a barra de ferramentas \"%1\" ?"
+
+#~ msgid "ToolBar Export"
+#~ msgstr "Exportar Barra de Ferramentas"
+
+#~ msgid "Do you want the associated actions to be exported with the toolbar ?"
+#~ msgstr ""
+#~ "Você deseja que as ações associadas sejam exportadas com a barra de "
+#~ "ferramentas ?"
+
+#~ msgid "Unable to write to the toolbar file."
+#~ msgstr "Não foi possível escrever no arquivo de barra de ferramentas"
+
+#~ msgid "Please specify the properties for the toolbar \"%1\""
+#~ msgstr ""
+#~ "Por favor especifique as propriedades para a barra de ferramentas \"%1\""
+
+#~ msgid "Please specify the properties for the new toolbar"
+#~ msgstr ""
+#~ "Por favor especifique as propriedades para a barra de ferramentas nova"
+
+#~ msgid "My ToolBar"
+#~ msgstr "Minha Barra de Ferramentas"
+
+#~ msgid "Terminal emulator"
+#~ msgstr "Emulador de terminal"
+
+#~ msgid "Close this window"
+#~ msgstr "Fechar esta janela"
+
+#~ msgid "Can't create the terminal emulation part"
+#~ msgstr "impossível criar uma parte da emulação de terminal"
+
+#~ msgid "Can't retrieve the terminal emulation factory"
+#~ msgstr "Impossível recuperar a fábrica de emulação terminal"
+
+#~ msgid "Terminal"
+#~ msgstr "Terminal"
+
+#~ msgid "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+#~ msgstr "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+
+#~ msgid "This window has no associated irc context"
+#~ msgstr "Esta janela no tem um contexto de irc associado"
+
+#~ msgid "No such irc context (%d)"
+#~ msgstr "Sem contexto de irc (%d)"
+
+#~ msgid "Internal unique name for the action"
+#~ msgstr "Nome interno único para a ação"
+
+#~ msgid "Label:"
+#~ msgstr "Rótulo:"
+
+#~ msgid ""
+#~ "Visible name for this action.<br>This string will be displayed to the "
+#~ "user so it is a good idea to use $tr() here"
+#~ msgstr ""
+#~ "Nome visível para esta ação.<br>Esta string será exibida para o "
+#~ "usuárioentão é uma boa ideia utilizar $tr() aqui "
+
+#~ msgid "Action code"
+#~ msgstr "Código da ação"
+
+#~ msgid "Code"
+#~ msgstr "Código"
+
+#~ msgid "Category:"
+#~ msgstr "Categoria:"
+
+#~ msgid "Choose the category that best fits for this action"
+#~ msgstr "Escolha a categoria que seja melhor para esta ação"
+
+#~ msgid ""
+#~ "Visible short description for this action.<br>This string will be "
+#~ "displayed to the user so it is a good idea to use $tr() here"
+#~ msgstr ""
+#~ "Pequena descrição visível para esta ação.<br>Esta string será exibida "
+#~ "para o usuário então é uma boa ideia utilizar $tr() aqui"
+
+#~ msgid "Small Icon:"
+#~ msgstr "Ícones Pequenos:"
+
+#~ msgid ""
+#~ "The small icon associated to this action.<br>It will appear at least in "
+#~ "the popup menus when this action is inserted.<br>It should be 16x16 "
+#~ "pixels."
+#~ msgstr ""
+#~ "O ícone pequeno associado a esta ação.<br>Irá aparecer pelo menos nos "
+#~ "botões do menu popup quando esta ação for inserida. <br>Deve ser 16x16 "
+#~ "pixels."
+
+#~ msgid "Big Icon:"
+#~ msgstr "Ícones Grandes:"
+
+#~ msgid ""
+#~ "The big icon associated to this action.<br>It will appear at least in the "
+#~ "toolbar buttons when this action is inserted.<br>It should be 32x32 "
+#~ "pixels."
+#~ msgstr ""
+#~ "O ícone grande associado a esta ação.<br>Irá aparecer pelo menos nos "
+#~ "botões da barra de ferramentas quando esta ação for inserida. <br>Deve "
+#~ "ser 32x32 pixels."
+
+#~ msgid "Key Sequence:"
+#~ msgstr "Sequência de Chave:"
+
+#~ msgid ""
+#~ "Optional keyboard sequence that will activate this action.<br>The "
+#~ "sequence should be expressed as a string of up to four key codes "
+#~ "separated by commas eventually combined with the modifiers \"Ctrl\","
+#~ "\"Shift\",\"Alt\" and \"Meta\".<br>Examples of such sequences are \"Ctrl+X"
+#~ "\", \"Ctrl+Alt+Z\", \"Ctrl+X,Ctrl+C\" ..."
+#~ msgstr ""
+#~ "A sequência de teclado opcional que irá ativar esta ação.<br>Esta "
+#~ "sequência deve ser expressa como uma string de até quatro códigos chaves "
+#~ "separados por vírgulas eventualmente combinadas com os modificadores "
+#~ "\"Ctrl\",\"Shift\",\"Alt\" e \"Meta\".<br>Exemplos de tais sequências são "
+#~ "\"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl+X, Ctrl+C\" ..."
+
+#~ msgid "Needs IRC Context"
+#~ msgstr "Precisa de um Contexto de IRC"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window belongs to an irc context"
+#~ msgstr ""
+#~ "Marque esta opção se esta ação deve ser habilitada apenas quando a janela "
+#~ "ativa pertence a um contexto de IRC"
+
+#~ msgid "Needs IRC Connection"
+#~ msgstr "Precisa de uma Conexão de IRC"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window has an active IRC connection"
+#~ msgstr ""
+#~ "Marque esta opção se esta ação deve ser habilitada apenas quando a janela "
+#~ "ativa tiver uma conexão IRC activa"
+
+#~ msgid "Enable at Login"
+#~ msgstr "Habilitar no Login"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled also during the login "
+#~ "operations (so when the logical IRC connection hasn't been estabilished "
+#~ "yet)"
+#~ msgstr ""
+#~ "Marque esta opção se esta ação deve ser habilitada também durante as "
+#~ "operações de login (enquanto a conexão IRC ainda não estiver estabelecida)"
+
+#~ msgid "Enable Only in Specified Windows"
+#~ msgstr "Habilitar Apenas nas Janelas Especificadas"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window is of a specified type"
+#~ msgstr ""
+#~ "Marque esta opção se esta ação deve ser habilitada apenas quando a "
+#~ "janelaativa for um console"
+
+#~ msgid "Enable in Console Windows"
+#~ msgstr "Habilitar nas Janelas de Console"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window is a console"
+#~ msgstr ""
+#~ "Marque esta opção se esta ação deve ser habilitada apenas quando a "
+#~ "janelaativa for um console"
+
+#~ msgid "Only If There Are Selected Users"
+#~ msgstr "Apenas Se Existir Usuários Selecionados"
+
+#~ msgid ""
+#~ "This will enable the action only if there are selected users in the "
+#~ "active window"
+#~ msgstr ""
+#~ "Isto habilitará a ação apenas se existirem usuários selecionados na "
+#~ "janela ativa "
+
+#~ msgid "Enable in Channel Windows"
+#~ msgstr "Habilitar nas Janelas de Canal"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window is a channel"
+#~ msgstr ""
+#~ "Marque esta opção se esta ação deve ser habilitada apenas quando a "
+#~ "janelaativa for um canal"
+
+#~ msgid "Enable in Query Windows"
+#~ msgstr "Habilitar nas Janelas de Privado"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window is a query"
+#~ msgstr ""
+#~ "Marque esta opção se esta ação deve ser habilitada apenas quando a "
+#~ "janelaativa for um privado"
+
+#~ msgid "Enable in DCC Chat Windows"
+#~ msgstr "Permitir nas Janelas de DCC Chat"
+
+#~ msgid ""
+#~ "Check this option if this action should be enabled only when the active "
+#~ "window is a dcc chat"
+#~ msgstr ""
+#~ "Marque esta opção se esta ação deve ser habilitada apenas quando a "
+#~ "janelaativa for um dcc chat"
+
+#~ msgid "Action"
+#~ msgstr "Ação"
+
+#~ msgid "New Action"
+#~ msgstr "Nova Ações"
+
+#~ msgid "Delete Actions"
+#~ msgstr "Deletar Ações"
+
+#~ msgid "Export Actions..."
+#~ msgstr "Exportar Ações..."
+
+#~ msgid "My Action"
+#~ msgstr "Minhas Ações"
+
+#~ msgid "Put here a short description of your action"
+#~ msgstr "Digite aqui uma breve descrição da sua ação"
+
+#~ msgid "Action Editor"
+#~ msgstr "Editor de Ações"
+
+#~ msgid "Apply"
+#~ msgstr "Aplicar"
+
+#~ msgid "Socket Spy [IRC Context %u]"
+#~ msgstr "Espião de Sockets [Contexto de IRC de %u]"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Socket Spy</b></font> <font color=\"%s\">[IRC "
+#~ "Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>Espião de Sockets</b></font> <font color=\"%s"
+#~ "\">[Contexto de IRC %u]</font></nobr>"
+
+#~ msgid "Socket open"
+#~ msgstr "Socket aberto"
+
+#~ msgid "Socket closed"
+#~ msgstr "Socket fechado"
+
+#, fuzzy
+#~ msgid "Sound file '%Q' not found"
+#~ msgstr "Arquivo de som '%s' não encontrado"
+
+#, fuzzy
+#~ msgid "Unable to play sound '%Q'"
+#~ msgstr "Não foi possível tocar o som '%s'"
+
+#~ msgid "Sorry , I can't find a sound system to use on this machine"
+#~ msgstr ""
+#~ "Desculpe, não foi possível encontrar um sistema de som para usar nesta "
+#~ "máquina"
+
+#~ msgid "Sound system detected to: %s"
+#~ msgstr "Sistema de som detectado :%s"
+
+#~ msgid "Manage Script-Based Addons"
+#~ msgstr "Gerênciar Addons Script-Based"
+
+#~ msgid "Configure"
+#~ msgstr "Configurar"
+
+#~ msgid "Show Help"
+#~ msgstr "Exibir Ajuda"
+
+#~ msgid "Uninstall"
+#~ msgstr "Desinstalar"
+
+#~ msgid "Install Addon..."
+#~ msgstr "Instalar Addon..."
+
+#~ msgid "More Addons..."
+#~ msgstr "Mais Addons..."
+
+#~ msgid "Do you really want to uninstall the addon \"%1\" ?"
+#~ msgstr "Você deseja realmente desinstalar o addon \"%1\" ?"
+
+#~ msgid "Confirm addon uninstallation"
+#~ msgstr "Confirmar desinstalação do addon"
+
+#~ msgid "Please select the addon installation file"
+#~ msgstr "Por favor selecione o arquivo de instalação do addon"
+
+#~ msgid "%cAddon id %Q, version %Q%c"
+#~ msgstr "%cAddon id %Q, versão %Q%"
+
+#~ msgid "Name: %Q"
+#~ msgstr "Nome: %Q"
+
+#~ msgid "Description: %Q"
+#~ msgstr "Descrição: %Q"
+
+#~ msgid "Total: %d addons installed"
+#~ msgstr "Total: %d addons instalados"
+
+#~ msgid "Uninstalling existing addon version %Q"
+#~ msgstr "Desinstalando a versão %Q do addon existente "
+
+#~ msgid "The addon \"%1\" does not exist"
+#~ msgstr "O addon \"%1\" não existe"
+
+#~ msgid "The addon \"%1\" has no configure callback set"
+#~ msgstr "O addon \"%1\" não tem nenhum retorno de chamada definido"
+
+#~ msgid "The addon \"%1\" has no help callback set"
+#~ msgstr ""
+#~ "O addon \"%1 \" não tem nenhum retorno de chamada de ajuda configurada."
+
+#~ msgid "The specified version \"%Q\" is not a valid version string"
+#~ msgstr "A versão \"%Q\" especificada não é uma string de versão válida"
+
+#, fuzzy
+#~ msgid "The specified KVIrc version \"%Q\" is not a valid version string"
+#~ msgstr ""
+#~ "A versão \"%s\" do KVIrc especificada não é uma string de versão válida"
+
+#, fuzzy
+#~ msgid ""
+#~ "This KVIrc executable is too old to run this addon (minimum version "
+#~ "required is %Q)"
+#~ msgstr ""
+#~ "O executável do KVirc é muito antigo para executar este script (a versão "
+#~ "mínima requerida é %s)"
+
+#~ msgid "Attempting to register addon \"%Q\" with version %Q"
+#~ msgstr "Tentando registar o addon \"%Q\" com a versão %Q"
+
+#~ msgid ""
+#~ "The script addon \"%Q\" already exists with version %Q which is higher "
+#~ "than %Q"
+#~ msgstr ""
+#~ "O script addon \"%Q\" já existe com a versão %Q que é maior que a %Q"
+
+#~ msgid "Script registration failed"
+#~ msgstr "Instalação do script falhou"
+
+#~ msgid "Script succesfully registered"
+#~ msgstr "Script registado com suceso"
+
+#~ msgid "Destinaion file exists: no copy made"
+#~ msgstr "O arquivo de destino existe: nenhuma cópia feita"
+
+#~ msgid "Failed to copy from %Q to %Q"
+#~ msgstr "Falhou copiar %Q para %Q"
+
+#~ msgid ""
+#~ "Either the source doesn't exist or the destination can not be created"
+#~ msgstr "Ou a origem não existe ou o destino não pode ser criado"
+
+#~ msgid "Failed to write to file %Q: the destination couldn't be opened"
+#~ msgstr "Falhou ao escrever o arquivo %Q: o destino não pode ser aberto"
+
+#~ msgid "Destination file exists: file not renamed"
+#~ msgstr "O arquivo de destino existe: arquivo não renomeado"
+
+#~ msgid "Failed to rename %Q to %Q"
+#~ msgstr "Falhou ao renomear %Q para %Q"
+
+#~ msgid "Failed to make the directory %Q"
+#~ msgstr "Falhou ao criar o diretório %Q"
+
+#~ msgid "Failed to remove the file %Q"
+#~ msgstr "Falhou ao remover o arquivo %Q"
+
+#~ msgid "Failed to remove the directory %Q"
+#~ msgstr "Falhou ao remover o diretório %Q"
+
+#~ msgid "The specified directory does not exist '%Q'"
+#~ msgstr "O directório especificado não existe '%Q'"
+
+#~ msgid "Can't open the file \"%Q\" for reading"
+#~ msgstr "Não foi possível abrir o arquivo \"%Q\" para leitura"
+
+#~ msgid "Read error for file %Q"
+#~ msgstr "Erro de leitura para o arquivo %Q"
+
+#~ msgid ""
+#~ "Read error for file %Q (have been unable to read the requested size in "
+#~ "1000 retries)"
+#~ msgstr ""
+#~ "Erro de leitura para o arquivo %Q (não foi possível ler o tamanho pedido "
+#~ "em 1000 tentativas)"
+
+#, fuzzy
+#~ msgid "Can't open the file \"%Q\" for writing"
+#~ msgstr "Não foi possível abrir o arquivo \"%Q\" para leitura"
+
+#~ msgid "Event"
+#~ msgstr "Evento"
+
+#~ msgid "Edit the event handler name."
+#~ msgstr "Editar o nome dos manipuladores de eventos."
+
+#~ msgid "&Enable Handler"
+#~ msgstr "&Ativar Manipulador"
+
+#~ msgid "&Disable Handler"
+#~ msgstr "&Desativar Manipulador"
+
+#~ msgid "Re&move Handler"
+#~ msgstr "Re&mover Manipulador"
+
+#~ msgid "&Export Handler To..."
+#~ msgstr "&Exportar Manipulador Para..."
+
+#~ msgid "&New Handler"
+#~ msgstr "&Novo Manipulador"
+
+#~ msgid "default"
+#~ msgstr "padrão"
+
+#~ msgid "none"
+#~ msgstr "nenhum"
+
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "\tEvent:\n"
+#~ "\t\t%s\n"
+#~ "\n"
+#~ "\tParameters:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "\tEvento:\n"
+#~ "\t\t%s\n"
+#~ "\n"
+#~ "\tParâmetros:\n"
+#~ "%s"
+
+#~ msgid "Unable to write to the event file."
+#~ msgstr "Incapaz de escrever no arquivo de evento."
+
+#~ msgid "Unable to write to the events file."
+#~ msgstr "Incapaz de escrever no arquivo de eventos."
+
+#~ msgid "Event Editor"
+#~ msgstr "Editor de Eventos"
+
+#~ msgid "Default part message:"
+#~ msgstr "Mensagem padrão de saída de canal:"
+
+#~ msgid "Default quit message:"
+#~ msgstr "Mensagem quit padrão:"
+
+#, fuzzy
+#~ msgid "Hide avatars in userlist"
+#~ msgstr "Usar avatar"
+
+#~ msgid "USERINFO reply:"
+#~ msgstr "Resposta USERINFO:"
+
+#~ msgid ""
+#~ "<center>This is the CTCP USERINFO reply.<br>It can contain some "
+#~ "information about yourself.</center>"
+#~ msgstr ""
+#~ "<center>Esta é a resposta CTCP USERINFO. <br>Pode conter alguma "
+#~ "informação sobre você mesmo.</center>"
+
+#~ msgid "Show at startup"
+#~ msgstr "Exibir ao iniciar"
+
+#~ msgid "Did you know..."
+#~ msgstr "Você sabia..."
+
+#~ msgid "<b>Can't find any tip... :(</b>"
+#~ msgstr "<b>Não foi possível encontrar nenhuma dica...: (</b."
+
+#~ msgid "Lag meter was not enabled"
+#~ msgstr "O medidor de Lag não foi ativado"
+
+#~ msgid "Ops.. internal error"
+#~ msgstr "Opa.. erro interno"
+
+#~ msgid "Manage File &Transfers"
+#~ msgstr "Gerênciar Transferências de arquivos"
+
+#~ msgid "Password"
+#~ msgstr "Senha"
+
+#~ msgid "&Join"
+#~ msgstr "&Entrar"
+
+#~ msgid "Show this window after connecting"
+#~ msgstr "Exibir esta janela após conectar"
+
+#~ msgid "Recent Channels"
+#~ msgstr "Canais Recentes"
+
+#~ msgid "Registered Channels"
+#~ msgstr "Canais Registrados"
+
+#~ msgid "Raw Event"
+#~ msgstr "Evento Raw"
+
+#, fuzzy
+#~ msgid "Edit the raw event handler name."
+#~ msgstr "Editar o nome dos manipuladores de eventos."
+
+#~ msgid "&Add Raw Event..."
+#~ msgstr "&Adicionar Evento Raw..."
+
+#~ msgid "New Raw Event"
+#~ msgstr "Novo Evento Raw"
+
+#~ msgid "Enter the numeric code of the message (0-999)"
+#~ msgstr "Digite o código numérico da mensagem (0-999)"
+
+#, fuzzy
+#~ msgid "Unable to write to the raw event file."
+#~ msgstr "Incapaz de escrever no arquivo de evento."
+
+#, fuzzy
+#~ msgid "Unable to write to the raw events file."
+#~ msgstr "Incapaz de escrever no arquivo de eventos."
+
+#~ msgid "Raw Editor"
+#~ msgstr "Editor de Raw"
+
+#~ msgid "%cCore action: %Q"
+#~ msgstr "%cAção do núcleo: %Q"
+
+#~ msgid "%cUser action: %Q"
+#~ msgstr "%cAção de Usuário: %Q"
+
+#~ msgid "Label: %Q"
+#~ msgstr "Rótulo: %Q"
+
+#~ msgid "Category: %Q"
+#~ msgstr "Categoria: %Q"
+
+#~ msgid "The action \"%1\" is disabled"
+#~ msgstr "A ação \"%1\" está desabilitada"
+
+#~ msgid "The action \"%1\" does not exist"
+#~ msgstr "A ação \"%1\" não existe"
+
+#~ msgid "The action \"%1\" is a core action and cannot be destroyed"
+#~ msgstr "A ação \"%1\" é uma ação do núcleo e não pode ser destruída"
+
+#~ msgid "The switch -l requires -c"
+#~ msgstr "A opção -l requer -c"
+
+#~ msgid ""
+#~ "The switch -s requires -w with a combination of flags 'c','x' and 'q'"
+#~ msgstr "A opção -s requer -w com a combinação das opções 'c','x' e 'q'"
+
+#~ msgid ""
+#~ "The action \"%1\" is already defined as core action and cannot be "
+#~ "overridden"
+#~ msgstr ""
+#~ "A ação \"%1 \" já está definida como ação do núcleo e não pode ser "
+#~ "sobreposta"
+
+#~ msgid "&Execute"
+#~ msgstr "&Executar"
+
+#~ msgid "Params:"
+#~ msgstr "Parâmetros:"
+
+#~ msgid "Script Tester"
+#~ msgstr "Testar Script"
+
+#~ msgid ""
+#~ "Broken slot '%s' in target object '%s' while emitting signal '%s' from "
+#~ "object '%s': disconnecting"
+#~ msgstr ""
+#~ "Slot quebrado ' %s' no objeto de destino ' %s' ao emitir o sinal ' %s' "
+#~ "do objeto ' %s': desconectando"
+
+#~ msgid ""
+#~ "No slot function '%s' exported by target object '%s' while emitting "
+#~ "signal '%s' from object '%s': disconnecting"
+#~ msgstr ""
+#~ "Nenhuma função do slot ' %s' exportada pelo objeto de destino ' %s' ao "
+#~ "emitir sinal '%s' do objeto ' %s': desconectando"
+
+#~ msgid "Invalid timeout"
+#~ msgstr "Intervalo inválido"
+
+#~ msgid "Invalid timer id"
+#~ msgstr "id inválida do timer"
+
+#~ msgid "%cListing Qt Properties for widget object %s (%s)"
+#~ msgstr "%cListando Propriedades Qt para obejeto widget %s (%s)"
+
+#~ msgid "Properties class: %c%s%c"
+#~ msgstr "Classe das propriedades : %c%s%c"
+
+#~ msgid "Property: %c%s%c, type: %s"
+#~ msgstr "Propriedade: %c%s%c, tipo: %s"
+
+#~ msgid ", enum ("
+#~ msgstr ", enum ("
+
+#~ msgid ", set"
+#~ msgstr ", definir"
+
+#~ msgid ", writeable"
+#~ msgstr ", modificável"
+
+#~ msgid "Oops... no such property: %s"
+#~ msgstr "Oopa... nenhuma propriedade encontrada: %s"
+
+#~ msgid "Not enough parameters"
+#~ msgstr "Parâmetros insuficientes"
+
+#~ msgid "No such QT property (%s)"
+#~ msgstr "Nenhuma propriedade Qt (%s)"
+
+#~ msgid "missing parameter"
+#~ msgstr "parâmetro faltando"
+
+#~ msgid "Invalid parameter (%s)"
+#~ msgstr "Parâmetro inválido (%s)"
+
+#~ msgid "Pixmap Object required"
+#~ msgstr "Objeto Pixmap requerido"
+
+#~ msgid "Pixmap not found"
+#~ msgstr "Pixmap não encontrado"
+
+#~ msgid "Unsupported QT property (%s)"
+#~ msgstr "Protocolo %s não suportado"
+
+#~ msgid "Missing parameters"
+#~ msgstr "Parâmetros faltando"
+
+#~ msgid "This window has no associated IRC context"
+#~ msgstr "Esta janela não tem contexto de IRC associado"
+
+#~ msgid "Unknown"
+#~ msgstr "Desconhecido"
+
+#~ msgid "[Parser warning in '%Q']: %Q"
+#~ msgstr "[Aviso do Analisador em '%Q']: %Q"
+
+#~ msgid "Can't find the multimedia file %s"
+#~ msgstr "Não foi possível encontrar o arquivo multimidia %s"
+
+#~ msgid "Missing target, no action taken"
+#~ msgstr "Destino faltando, nenhuma ação tomada"
+
+#~ msgid "Invalid timeout specified , using default"
+#~ msgstr "Intervalo especificado iválido, usando padrão"
+
+#~ msgid "Can't add a file offer for file %s (huh ? file not readable ?)"
+#~ msgstr ""
+#~ "Não foi possível adicionar o compartilhamento do arquivo %s (huh? arquivo "
+#~ "não legível?)"
+
+#~ msgid "Added %d secs file offer for file %s (%s) and receiver %s"
+#~ msgstr "Adicionado %d seg ao envío do arquivo %s (%s) e receptor %s"
+
+#~ msgid "%s plays '%s'"
+#~ msgstr "%s reproduz '%s'"
+
+#~ msgid "%s plays '%s' to %s"
+#~ msgstr "%s reproduz '%s' para %s"
+
+#~ msgid "Error in command: %c%c%Q"
+#~ msgstr "Erro no comando: %c%c%Q"
+
+#, fuzzy
+#~ msgid "Error token: %c%Q"
+#~ msgstr "Símbolo do erro: %c%s"
+
+#~ msgid "Parsing stopped at %cline %d , character %d"
+#~ msgstr "A análise parou em %cline %d, caracter %d"
+
+#~ msgid " %s"
+#~ msgstr " %s"
+
+#~ msgid "Object scope: name (%s), class (%s)"
+#~ msgstr "Objeto espaço: nome (%s), classe (%s)"
+
+#~ msgid "Object scope: deleted object"
+#~ msgstr "Objeto espaço: objeto deletado"
+
+#~ msgid "This pointer: name (%s), class (%s)"
+#~ msgstr "Este ponteiro: nome (%s), classe (%s)"
+
+#~ msgid "This pointer: deleted object"
+#~ msgstr "Este ponteiro: objeto deletado"
+
+#~ msgid "Internal call stack:"
+#~ msgstr "Pilha de chamadas internas:"
+
+#~ msgid ""
+#~ " Current command stack depth: %d frames (stopping output at 25th frame)"
+#~ msgstr ""
+#~ " Profundidade da pilha do comando atual: %d frames (parando saída no "
+#~ "frame 25)"
+
+#~ msgid " Parent command stack depth: %d frames"
+#~ msgstr " Profundidade da piha de comandos pai: %d frames"
+
+#~ msgid "You are not connected to a server"
+#~ msgstr "Você não está conectado a um servidor"
+
+#~ msgid "%s (module %s)"
+#~ msgstr "%s (modulo %s)"
+
+#~ msgid "Module '%s', Command '%s'"
+#~ msgstr "Modulo '%s', Comando '%s'"
+
+#~ msgid "Can't rebind the command: window with id %s not found"
+#~ msgstr "Não foi possível religar o comando: janela com id %s não encontrado"
+
+#~ msgid ""
+#~ "Can't rebind the command: missing window identifier after the -r switch"
+#~ msgstr ""
+#~ "Não foi possível religar o comando: faltando o identificador da janela a "
+#~ "após à opção -r"
+
+#~ msgid "Error triggered from raw event handler %c%s::%Q"
+#~ msgstr "Erro provocado pelo manipulador do evento raw %c%s::%Q"
+
+#~ msgid "Error triggered from event handler %c%Q::%Q"
+#~ msgstr "Erro provocado pelo manipulador do evento %c%Q::%Q"
+
+#~ msgid "Raw event handler %s::%Q is broken: disabling"
+#~ msgstr "Manipulador do evento raw %s::%Q está quebrado: desativando"
+
+#~ msgid "Event handler %Q::%Q is broken: disabling"
+#~ msgstr "Manipulador do evento %Q::%Q está quebrado: desativando"
+
+#~ msgid "Variable evaluated to \"%s\""
+#~ msgstr "Variável avaliada para \"%s\""
+
+#~ msgid "Module '%s', Function '%s'"
+#~ msgstr "Modulo '%s', Função '%s'"
+
+#~ msgid "Identifier evaluated to \"%s\""
+#~ msgstr "Identificador avaliado para \"%s\""
+
+#~ msgid ""
+#~ "The regular expression matched a zero-length substring: this is not valid "
+#~ "in the s/// operator"
+#~ msgstr ""
+#~ "A expressão regular se assemelha a uma substring zero-comprimento: isto é "
+#~ "inválido no operador s///"
+
+#~ msgid "Skipping the substitution"
+#~ msgstr "Pulando a substituição"
+
+#~ msgid "Left operand of operator %s (%s{%s}) is undefined : assuming 0"
+#~ msgstr ""
+#~ "Operando esquerdo do operador %s (%s{%s}) está indefinido: assumir 0"
+
+#~ msgid "Left operand of operator %s (%s[%s]) is undefined : assuming 0"
+#~ msgstr ""
+#~ "Operando esquerdo do operador %s (%s[%s]) está indefinido: assumir 0"
+
+#~ msgid "Left operand of operator %s (%s) is undefined : assuming 0"
+#~ msgstr "Operando esquerdo do operador %s (%s) está indefinido: assumir 0"
+
+#~ msgid "Variable %s{%s} evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Variável %s{%s} avaliada para '%s' no operador %s (não é um número)"
+
+#~ msgid "Variable %s[%s] evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Variável %s[%s] avaliada para'%s' no operador %s (não é um número)"
+
+#~ msgid "Variable %s evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Variável %s avaliada para'%s' no operador %s (não é um número)"
+
+#~ msgid "Right operand of operator %s evaluated to '%s' (not a number)"
+#~ msgstr ""
+#~ "Operando direito do operador %s avaliado para '%s' (não é um número)"
+
+#~ msgid "operator %c%c"
+#~ msgstr "operador %c%c"
+
+#~ msgid "Broken condition in menu setup: assuming false"
+#~ msgstr "Condição falhou na configuração do menu: assumindo falso"
+
+#~ msgid "Broken icon parameter: ignoring"
+#~ msgstr "Parâmetro de ícone quebrado: ignorando"
+
+#~ msgid "Can't find the icon \"%Q\": ignoring"
+#~ msgstr "Não foi possível encontrar o icone \"%Q\": ignorando"
+
+#~ msgid "Broken text parameter: assuming empty string"
+#~ msgstr "Parâmetro de texto quebrado: assumindo string vazia"
+
+#~ msgid "Recursive definition detected for popup '%Q': ignoring"
+#~ msgstr "Definição recursiva detectada para o popup '%Q': ignorando"
+
+#~ msgid "Can't find the external popup '%Q'; ignoring"
+#~ msgstr "Não foi possível encontrar o popup externo '%Q': ignorando"
+
+#~ msgid "Broken prologue in popup menu '%Q': ignoring"
+#~ msgstr "Prólogo quebrado no menu popup '%Q': ignorando"
+
+#~ msgid "Broken epilogue in popup menu '%Q': ignoring"
+#~ msgstr "Epílogo quebrado no menu popup '%Q': ignorando"
+
+#~ msgid "Say parse error: Broken command"
+#~ msgstr "Diz erro do analisador: comando quebrado"
+
+#, fuzzy
+#~ msgid ""
+#~ "Another connection is already in progress in the selected IRC context"
+#~ msgstr "Outra conexão em progresso"
+
+#, fuzzy
+#~ msgid "No menu bar item with text '%Q'"
+#~ msgstr "Nenhum ítem da barra de menu com texto ' %s'"
+
+#, fuzzy
+#~ msgid "Invalid index specified: ignored"
+#~ msgstr "Intervalo de tempo especificado inválido: usar pre-definido"
+
+#, fuzzy
+#~ msgid "The popup '%Q' is not defined"
+#~ msgstr "O popup '%s' não está definido"
+
+#, fuzzy
+#~ msgid "No target channel specified and the current window is not a channel"
+#~ msgstr "A janela especificada não é um canal"
+
+#, fuzzy
+#~ msgid "No catalogue %Q for the current language found"
+#~ msgstr "Não foi possível encontrar o catálogo %s para a línguagem atual"
+
+#, fuzzy
+#~ msgid "The catalogue %Q was not loaded"
+#~ msgstr "O catálogo '%s' não foi carregado"
+
+#, fuzzy
+#~ msgid "Invalid IRC url (%Q)"
+#~ msgstr "url de IRC (%s) Inválida"
+
+#, fuzzy
+#~ msgid "The commandline for this url type seems to be broken (%Q)"
+#~ msgstr "A linha de comando para este tipo de URL parece estar quebrado (%s)"
+
+#, fuzzy
+#~ msgid "No commandline specified for this type of url (%Q)"
+#~ msgstr "Nenhuma linha de comando especificada para este tipo de URL (%s)"
+
+#~ msgid ""
+#~ "Option setting error: Unknown option or invalid value for option type"
+#~ msgstr ""
+#~ "Erro no ajuste da opção: opção desconhecida ou valor inválido para o tipo "
+#~ "de opção"
+
+#~ msgid "Choose a file to parse"
+#~ msgstr "Escolha o arquivo para analisar"
+
+#~ msgid "Failed to load the file '%Q' for parsing"
+#~ msgstr "Falhou ao carregar o arquivo '%Q' para analise"
+
+#~ msgid "Missing channel list"
+#~ msgstr "Faltando lista de canais"
+
+#~ msgid "You don't appear to be on channel %s"
+#~ msgstr "Você não parece estar no canal %s"
+
+#~ msgid "Popup %Q is not defined"
+#~ msgstr "Popup %Q não esta definido."
+
+#~ msgid "A popup menu cannot be popped up twice"
+#~ msgstr "Um menu popup não pode ser chamado duas vezes"
+
+#~ msgid "Invalid syntax for screen coordinates, using cursor position"
+#~ msgstr ""
+#~ "Sintaxe inválida para as coordenadas da tela, usando a posição do cursor"
+
+#~ msgid "Empty target specified"
+#~ msgstr "Destino especificado está vazio "
+
+#~ msgid "[RAW]: %Q"
+#~ msgstr "[RAW]: %Q"
+
+#~ msgid "Window with id %Q not found: no rebinding performed"
+#~ msgstr "Janela com id %Q não encontrado: nenhuma religação feita"
+
+#, fuzzy
+#~ msgid "Failed to execute command '%Q'"
+#~ msgstr "Falhou ao executar o comando '%s'"
+
+#~ msgid ""
+#~ "The argument of the array count '#' operator didn't evaluate to an array: "
+#~ "automatic conversion from type '%Q' supplied"
+#~ msgstr ""
+#~ "O argumento da contagem do operador do array '#' não avaliou para um "
+#~ "array: conversão automática a partir do tipo '%Q' fornecido"
+
+#~ msgid "Call to undefined function '%Q'"
+#~ msgstr "Chamada para função indefinida '%Q'"
+
+#~ msgid "Error in inner alias function call '%Q', called from this context"
+#~ msgstr ""
+#~ "Erro na chamada a função interna de alias '%Q', chamada deste contexto"
+
+#~ msgid "Stray dot ('.') character or invalid following module command name"
+#~ msgstr ""
+#~ "Caracter ponto ('.') disperso ou após um nome de comando do módulo "
+#~ "inválido"
+
+#~ msgid "Syntax error: malformed module command identifier"
+#~ msgstr "Erro de sintaxe: identificador de comando do módulo malformado"
+
+#, fuzzy
+#~ msgid "Stray '::' sequence or invalid following alias name"
+#~ msgstr ""
+#~ "Caracter ponto ('.') disperso ou após um nome de comando do módulo "
+#~ "inválido"
+
+#, fuzzy
+#~ msgid "Syntax error: malformed alias identifier"
+#~ msgstr "Erro de sintaxe: identificador de comando do módulo malformado"
+
+#, fuzzy
+#~ msgid "Syntax error: malformed (alias?) command identifier"
+#~ msgstr "Erro de sintaxe: identificador de comando do módulo malformado"
+
+#~ msgid "Unknown callback command \"%Q\""
+#~ msgstr "Comando de retorno de chamada \"%Q\" desconhecido"
+
+#~ msgid ""
+#~ "Timer name omitted but there is not current timer (this is not a timer "
+#~ "callback)"
+#~ msgstr ""
+#~ "Nome do cronomêtro omitido, mas não é um cronomêtro atual (isto não é um "
+#~ "retorno dechamada do cronomêtro)"
+
+#~ msgid "Can't kill the timer '%Q' since it is not running"
+#~ msgstr ""
+#~ "Não foi possível matar o cronomêtro '%Q' já que não está em execução"
+
+#~ msgid "Hash reference assert failed: the variable evaluated to type '%Q'"
+#~ msgstr ""
+#~ "Falhou a verificação da referencia hash: a variável foi avaliada como do "
+#~ "tipo '%Q'"
+
+#~ msgid "DNS Lookup result for query \"%s\""
+#~ msgstr "Resultado da pesquisa do DNS para a pergunta \"%s \""
+
+#~ msgid "Error: %Q"
+#~ msgstr "Erro: %Q"
+
+#~ msgid "Hostname %d: %s"
+#~ msgstr "Nome do host %d: %s"
+
+#~ msgid "IP address %d: %s"
+#~ msgstr "Endereço IP %d: %s"
+
+#~ msgid "Operand of unary operator didn't evaluate to a number"
+#~ msgstr "O operando do operador unário não avaliou para um número"
+
+#~ msgid "Left operand didn't evaluate to a number"
+#~ msgstr "O operando esquerdo não avaliou para um número"
+
+#~ msgid "Right operand didn't evaluate to a number"
+#~ msgstr "O operando direito não avaliou para um número"
+
+#~ msgid "Division by zero"
+#~ msgstr "Divisão por zero"
+
+#~ msgid "Hash key evaluated to empty string: fix the script"
+#~ msgstr "Avaliação da chave hash para string vazia: reparar o script"
+
+#~ msgid ""
+#~ "The argument of the {} subscript didn't evaluate to a hash: automatic "
+#~ "conversion from type '%Q' supplied"
+#~ msgstr ""
+#~ "O argumento do subscript {} não avaliou para uma hash de conversão "
+#~ "automática do tipo %Q fornecido"
+
+#~ msgid ""
+#~ "The argument of the {} subscript didn't evaluate to a hash automatic "
+#~ "conversion from %Q supplied"
+#~ msgstr ""
+#~ "O argumento do subscript {} não avaliou para uma hash de conversão "
+#~ "automática a partir do %Q fornecido "
+
+#~ msgid "Module function call failed: can't load the module '%Q'"
+#~ msgstr ""
+#~ "A chamada da função módulo falhou: não foi possível carregar o módulo '%Q'"
+
+#~ msgid ""
+#~ "Module function call failed: the module '%Q' doesn't export a function "
+#~ "named '%Q'"
+#~ msgstr ""
+#~ "A chamada da função módulo falhou: o módulo '%Q' não exporta a função "
+#~ "chamada '%Q'"
+
+#~ msgid "This window has no associated IRC context and is not a DCC chat"
+#~ msgstr ""
+#~ "Esta janela não tem um contexto de IRC associado e não é um DCC Chat"
+
+#~ msgid "Class \"%Q\" is not defined"
+#~ msgstr "Classe \"%Q\" indefinida"
+
+#~ msgid "The specified parent object does not exist"
+#~ msgstr "O objeto pai especificado não existe"
+
+#, fuzzy
+#~ msgid "There is no option named '%Q'"
+#~ msgstr "Nenhuma opção chamada '%s'"
+
+#~ msgid "No such IRC context (%u)"
+#~ msgstr "Sem contexto de irc (%u)"
+
+#, fuzzy
+#~ msgid "This window is not associated to an IRC context"
+#~ msgstr "Esta janela não tem contexto de IRC associado"
+
+#~ msgid "Event handler %Q is broken: disabling"
+#~ msgstr "Manipulador de eventos %Q está quebrado: desativando"
+
+#~ msgid "line %d, near character %d"
+#~ msgstr "linha %d, caracter aproximando %d"
+
+#~ msgid "beginning of input"
+#~ msgstr "Ínicio da entrada"
+
+#~ msgid ""
+#~ "Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %"
+#~ "s\" for the command syntax"
+#~ msgstr ""
+#~ "Caracter '%q' (unicode 0x%x) encontrado onde '%c' era esperado: ver \"/"
+#~ "help %s\" para a sintax de comando"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found end of input where character '%c' was expected: see \"/help %s\" "
+#~ "for the command syntax"
+#~ msgstr ""
+#~ "Caracter '%q' (unicode 0x%x) encontrado onde '%c' era esperado: ver \"/"
+#~ "help %s\" para a sintax de comando"
+
+#~ msgid "Empty script"
+#~ msgstr "Script vazio"
+
+#~ msgid ""
+#~ "Syntax error after '%' variable prefix. If you want to use a plain '%' in "
+#~ "the code you need to escape it"
+#~ msgstr ""
+#~ "Erro de sintaxe após o prefixo '%' de variável. Se quiser usar um '%' "
+#~ "código precisa escapá-lo"
+
+#~ msgid "Objects have no extended scope variables"
+#~ msgstr "O objeto não tem variáveis de espaço extendidas"
+
+#~ msgid ""
+#~ "Declaring global variables with an uppercase letter is deprecated. Global "
+#~ "variables should be declared with 'global'"
+#~ msgstr ""
+#~ "Declarar variáveis globais com uma letra máiuscula é depreciado. "
+#~ "Variáveis globais devem ser declaradas com 'global'"
+
+#~ msgid "Found character '%q' (unicode %x) where an instruction was expected"
+#~ msgstr ""
+#~ "Caracter '%q' (unicode %x) encontrado onde era esperado uma instrução"
+
+#~ msgid "Unterminated instruction block"
+#~ msgstr "Bloco de instruções indeterminado"
+
+#~ msgid ""
+#~ "Unexpected end of script in instruction block (missing closing brace)"
+#~ msgstr ""
+#~ "Fim do script inesperado no bloco de instrução (falta chave de fechamento)"
+
+#, fuzzy
+#~ msgid ""
+#~ "The dash after a command should be followed by a letter (switch), by a "
+#~ "digit (negative number) or be escaped"
+#~ msgstr ""
+#~ "O traço após o comando deve ser seguido por uma letra ou um número ou não "
+#~ "ter nada (alternando)"
+
+#~ msgid "Unexpected character '%q' (unicode %x) after a switch dash"
+#~ msgstr "Caracter inesperado '%q' (unicode %x) após uma barra de troca"
+
+#~ msgid "Unexpected end of script after a switch dash"
+#~ msgstr "Fim do script inesperado após uma barra de troca"
+
+#~ msgid ""
+#~ "The above problem might be related to the switch dash and the following "
+#~ "equal sign"
+#~ msgstr ""
+#~ "O problema em questão pode estar relacionado com a barra de troca e o "
+#~ "seguinte sinal de igual"
+
+#~ msgid "Unexpected end of script in parameter list"
+#~ msgstr "Fim do script inesperado na lista de parâmetros"
+
+#~ msgid "Unexpected end of line in parameter list"
+#~ msgstr "Fim de linha inesperado na lista de parâmetros"
+
+#, fuzzy
+#~ msgid "Skipping nested terminator character %q"
+#~ msgstr "linha %d, caracter aproximando %d"
+
+#~ msgid "Stray backslash at the end of the script"
+#~ msgstr "Barra no fim do script"
+
+#~ msgid "Unterminated hash key"
+#~ msgstr "Chave hash não terminada"
+
+#~ msgid "Unexpected end of script in hash key (missing '}' character ?)"
+#~ msgstr "Fim de script inesperado na chave hash (falta o caracter '}'?)"
+
+#~ msgid ""
+#~ "Unexpected end of line in hash key (missing '}' character or unescaped "
+#~ "newline)"
+#~ msgstr ""
+#~ "Fim da linha inesperado na chave hash (falta o caracter '}' ou nova linha)"
+
+#~ msgid "Unterminated string constant"
+#~ msgstr "String constante não terminada"
+
+#~ msgid "Unexpected end of script in string constant (missing \" character ?)"
+#~ msgstr "Fim de script inesperado na string constante (falta um caracter?))"
+
+#~ msgid ""
+#~ "Unexpected end of line in string constant (missing \" character or "
+#~ "unescaped newline)"
+#~ msgstr ""
+#~ "Fim de linha inesperado na string constante ( faltando o caracter \" ou "
+#~ "uma nova linha)"
+
+#~ msgid "Unknown binary operator '=%q': did you mean '==' ?"
+#~ msgstr "Operador binário desconhecido'=%q': você queria dizer que '==' ?"
+
+#~ msgid "Unknown binary operator '%q'"
+#~ msgstr "Operador binário '%q' desconhecido"
+
+#~ msgid "Unexpected end of script in expression"
+#~ msgstr "Fim do script inesperado na expressão"
+
+#~ msgid ""
+#~ "Unexpected character %q (unicode %h) in expression. If it meant to be a "
+#~ "string use the quotes."
+#~ msgstr ""
+#~ "Caracter inesperado %q (unicode %h) na expressão. Se é para ser uma "
+#~ "string, use as citações."
+
+#~ msgid "Internal error: pure virtual evaluateReadOnly called"
+#~ msgstr "Error interno: se chamou o método virtual puro evaluateReadOnly"
+
+#~ msgid ""
+#~ "Internal error: trying to evaluate as read-write a read-only data location"
+#~ msgstr ""
+#~ "Erro interno: tentando avaliar uma posição de dados de somente leitura "
+#~ "como de leitura-escrita"
+
+#~ msgid "Internal error: pure virtual evaluateReadOnlyInObjectScope called"
+#~ msgstr "Erro interno: método virtual puro evaluateReadOnly chamado"
+
+#~ msgid "Error triggered from process callback handler: killing process"
+#~ msgstr ""
+#~ "Erro provocado pelo manipulador do processo de chamadas: matando processo"
+
+#~ msgid "This command can be used only in windows bound to an IRC context"
+#~ msgstr ""
+#~ "Este comando só pode ser usado nas janelas associadas para um contexto de "
+#~ "IRC"
+
+#~ msgid "You're not connected to an IRC server"
+#~ msgstr "Você não está conectado a um servidor IRC"
+
+#~ msgid "Missing parameter"
+#~ msgstr "Parâmetro faltando"
+
+#, fuzzy
+#~ msgid "Failed to send an unknown command as /raw"
+#~ msgstr "Enviar comando desconhecido como /RAW"
+
+#~ msgid "Call to undefined command '%Q'"
+#~ msgstr "Chamada para comando indefinido '%Q'"
+
+#~ msgid "Error in inner alias command call '%Q', called from this context"
+#~ msgstr ""
+#~ "Erro na chamada ao comando interno de álias '%Q', chamado a partir deste "
+#~ "contexto"
+
+#, fuzzy
+#~ msgid "Missing class name"
+#~ msgstr "Faltando o nome do alias"
+
+#, fuzzy
+#~ msgid "Can't override the builtin class \"%Q\""
+#~ msgstr "Não pode matar uma classe interna "
+
+#~ msgid "Window with ID '%s' not found, returning empty string"
+#~ msgstr "Janela com ID '%s' não encontrado, retornando string vazia"
+
+#~ msgid "The specified window is not a channel"
+#~ msgstr "A janela especificada não é um canal"
+
+#, fuzzy
+#~ msgid "Module function call failed: can't load the module 'str'"
+#~ msgstr ""
+#~ "A chamada da função módulo falhou: não foi possível carregar o módulo '%Q'"
+
+#, fuzzy
+#~ msgid ""
+#~ "Module function call failed: the module 'str' doesn't export a function "
+#~ "named 'split'"
+#~ msgstr ""
+#~ "A chamada da função módulo falhou: o módulo '%Q' não exporta a função "
+#~ "chamada '%Q'"
+
+#~ msgid "The $sw() function can be used only in aliases"
+#~ msgstr "A função $sw() só pode ser usada em aliases"
+
+#~ msgid "Window with caption %Q not found"
+#~ msgstr "Janela com título %Q não encontrada"
+
+#~ msgid "Array reference assert failed: the variable evaluated to type '%Q'"
+#~ msgstr ""
+#~ "Falhou a comprovação da referência do array: a variável foi avaliada como "
+#~ "do tipo '%Q'"
+
+#~ msgid "Module command call failed: can't load the module '%Q'"
+#~ msgstr ""
+#~ "Chamada de comando do módulo falhou: não foi possível carregar o módulo '%"
+#~ "Q'"
+
+#~ msgid ""
+#~ "Module command call failed: the module '%Q' doesn't export a callback "
+#~ "command named '%Q'"
+#~ msgstr ""
+#~ "Chamada de comando do módulo falhou: o módulo '%Q' não exporta um retorno "
+#~ "de chamada chamado '%Q'"
+
+#~ msgid "Unexpected end of script after '$' function call prefix"
+#~ msgstr "Fim do script inesperado após o prefixo '$' de chamada da função"
+
+#~ msgid "Unexpected character %q (unicode %x) after '$' function call prefix"
+#~ msgstr ""
+#~ "Caracter inespeardo %q (unicode %x) após o prefixo '$' de chamada da "
+#~ "função"
+
+#~ msgid ""
+#~ "Syntax error after '$' function call prefix. If you want to use a plain "
+#~ "'$' in the code you need to escape it"
+#~ msgstr ""
+#~ "Erro de sintaxe após o prefixo '$' de chamada da função. Se quiser usar "
+#~ "uma '$' no código, precisa escapá-lo"
+
+#~ msgid "Invalid expression evaluation in object scope"
+#~ msgstr "Avaliação de expressão inválida no objecto espaço"
+
+#~ msgid "Invalid command evaluation in object scope"
+#~ msgstr "Avaliação de comando inválido no objecto espaço"
+
+#~ msgid "Empty instruction block for command evaluation"
+#~ msgstr "Bloco de intruções vazio para avaliação de comando"
+
+#~ msgid ""
+#~ "Parameter identifiers are forbidden in object scope (after the '->' "
+#~ "operator)"
+#~ msgstr ""
+#~ "Identificadores de parâmetros são proibidos no objecto espaço ( após o "
+#~ "operador '->')"
+
+#~ msgid ""
+#~ "Ending index of a multiple parameter identifier is lower or equal to the "
+#~ "starting index. This will evaluate to a single parameter identifier."
+#~ msgstr ""
+#~ "O índice final de um identificador de parâmetro múltiplo é mais baixo ou "
+#~ "igual ao índice inicial. Isto avaliará para um identificador de parâmetro "
+#~ "simples."
+
+#, fuzzy
+#~ msgid "Syntax error: malformed alias function call identifier"
+#~ msgstr "Erro de sintaxe: identificador de comando do módulo malformado"
+
+#, fuzzy
+#~ msgid "Syntax error: malformed (alias?) function call identifier"
+#~ msgstr "Erro de sintaxe: identificador de comando do módulo malformado"
+
+#~ msgid "Array index didn't evaluate to an integer"
+#~ msgstr "O índice do array não avaliou para um inteiro"
+
+#~ msgid ""
+#~ "Array index evaluated to a negative integer (non negative integer "
+#~ "expected)"
+#~ msgstr ""
+#~ "Índice de array avaliado para um inteiro negativo (era esperado um "
+#~ "inteiro não negativo )"
+
+#~ msgid ""
+#~ "The argument of the [] subscript didn't evaluate to an array: automatic "
+#~ "conversion from %Q supplied"
+#~ msgstr ""
+#~ "O argumento do subscript [] não avaliou para um array: conversão "
+#~ "automática de %Q fornecida "
+
+#~ msgid ""
+#~ "The argument of the [] subscript didn't evaluate to an array: automatic "
+#~ "conversion from type '%Q' supplied"
+#~ msgstr ""
+#~ "O argumento do subscript [] não avaliou para um array: conversão "
+#~ "automática do tipo %Q fornecida"
+
+#~ msgid ""
+#~ "The argument of the hash count '#' operator didn't evaluate to a hash: "
+#~ "automatic conversion from type '%Q' supplied"
+#~ msgstr ""
+#~ "O operador de contagem hash '#' não foi avaliado como um hash: conversão "
+#~ "automática a partir do tipo '%Q' fornecido"
+
+#~ msgid "This is not a channel"
+#~ msgstr "Isto não é um canal"
+
+#~ msgid "Unterminated c-style multiline comment"
+#~ msgstr "Comentário multilinha no estilo-c não terminado"
+
+#~ msgid "Unexpected end of script in multiline comment"
+#~ msgstr "Fim do script inesperado nos comentários multilinha"
+
+#~ msgid ""
+#~ "Unexpected character '%q' (unicode %x) after a slash (it is a typo or a "
+#~ "malformed comment begin ?)"
+#~ msgstr ""
+#~ "Caracter inesperado '%q' (unicode %x) após a barra (é um tipo ou um "
+#~ "começo de comentário mal formado?)"
+
+#~ msgid ""
+#~ "The popup '%s' is actually locked: 'self-modifications' are not allowed"
+#~ msgstr ""
+#~ "O popup '%s' está atualmente bloqueado: modificações automáticas não "
+#~ "estãopermitidas"
+
+#~ msgid "The target variable didn't evaluate to an integer or real value"
+#~ msgstr "A variável de destino não avaliou para um valor inteiro ou real"
+
+#~ msgid "The right side of operator '&=' didn't evaluate to an integer"
+#~ msgstr "O lado direito do operador '&=' não foi avaliado como um inteiro"
+
+#~ msgid "The left side of operator '&=' didn't evaluate to an integer"
+#~ msgstr "O lado esquerdo do operador '&=' não foi avaliado como um inteiro"
+
+#~ msgid "The right side of operator '/=' didn't evaluate to a number"
+#~ msgstr "O lado direito do operador '/=' não foi avaliado como um número"
+
+#~ msgid "The left side of operator '/=' didn't evaluate to a number"
+#~ msgstr "O lado esquerdo do operador '/=' não foi avaliado como um número"
+
+#~ msgid "The right side of operator '%=' didn't evaluate to a number"
+#~ msgstr "O lado direito do operador '%=' não foi avaliado como um número"
+
+#~ msgid "The left side of operator '%=' didn't evaluate to a number"
+#~ msgstr "O lado esquerdo do operador '%=' não foi avaliado como um número"
+
+#~ msgid "The right side of operator '*=' didn't evaluate to a number"
+#~ msgstr "O lado direito do operador '*=' não foi avaliado como um número"
+
+#~ msgid "The left side of operator '*=' didn't evaluate to a number"
+#~ msgstr "O lado esquerdo do operador '*=' não foi avaliado como um número"
+
+#~ msgid "The right side of operator '|=' didn't evaluate to an integer"
+#~ msgstr "O lado direito do operador '|=' não foi avaliado como um número"
+
+#~ msgid "The left side of operator '|=' didn't evaluate to an integer"
+#~ msgstr "O lado esquerdo do operador '|=' não foi avaliado como um número"
+
+#~ msgid "The right side of operator '<<=' didn't evaluate to an integer"
+#~ msgstr "O lado direito do operador '<<=' não foi avaliado como um inteiro"
+
+#~ msgid "The left side of operator '<<=' didn't evaluate to an integer"
+#~ msgstr "O lado esquerdo do operador '<<=' não foi avaliado como um inteiro"
+
+#~ msgid "The right side of operator '>>=' didn't evaluate to an integer"
+#~ msgstr "O lado direito do operador '>>=' não foi avaliado como um inteiro"
+
+#~ msgid "The left side of operator '>>=' didn't evaluate to an integer"
+#~ msgstr "O lado esquerdo do operador '>>=' não foi avaliado como um inteiro"
+
+#~ msgid "The right side of operator '-=' didn't evaluate to a number"
+#~ msgstr "O lado direito do operador '-=' não foi avaliado como um número"
+
+#~ msgid "The left side of operator '-=' didn't evaluate to a number"
+#~ msgstr "O lado esquerdo do operador '-=' não foi avaliado como um número"
+
+#~ msgid "The right side of operator '+=' didn't evaluate to a number"
+#~ msgstr "O lado direito do operador '+=' não foi avaliado como um número"
+
+#~ msgid "The left side of operator '+=' didn't evaluate to a number"
+#~ msgstr "O lado esquerdo do operador '+=' não foi avaliado como um número"
+
+#~ msgid "The right side of operator '^=' didn't evaluate to an integer"
+#~ msgstr "O lado direito do operador '^=' não foi avaliado como um inteiro"
+
+#~ msgid "The left side of operator '^=' didn't evaluate to an integer"
+#~ msgstr "O lado esquerdo do operador '^=' não foi avaliado como um inteiro"
+
+#~ msgid ""
+#~ "The regular expression matched a zero-length substring: this is not valid "
+#~ "in the s/// operator, skipping"
+#~ msgstr ""
+#~ "A expressão regular se assemelha a uma substring zero-comprimento: isto é "
+#~ "inválido no operador s///, pulando"
+
+#~ msgid "Window with ID '%s' not found"
+#~ msgstr "Janela com ID '%s' não encontrada"
+
+#~ msgid "Missing alias name"
+#~ msgstr "Faltando o nome do alias"
+
+#~ msgid "The alias %Q is not existing"
+#~ msgstr "O alias %Q não existe."
+
+#~ msgid "The specified window has no button containers"
+#~ msgstr "A janela especificada não tem recepiente de botões"
+
+#, fuzzy
+#~ msgid "Window button '%Q' not found"
+#~ msgstr "Botão de janela '%s' não encontrado"
+
+#, fuzzy
+#~ msgid "Can't find the icon '%Q'"
+#~ msgstr "Não foi possível encontrar o icone '%s'"
+
+#, fuzzy
+#~ msgid "No such event (%Q)"
+#~ msgstr "Nenhum evento (%s)"
+
+#, fuzzy
+#~ msgid "No handler '%Q' for raw numeric event '%d'"
+#~ msgstr "Sem manipulador '%s' para o evento númerico raw '%d'"
+
+#, fuzzy
+#~ msgid "No handler '%Q' for event '%Q'"
+#~ msgstr "Sem manipulador '%s' para o evento '%s'"
+
+#~ msgid "The specified ping time is invalid: assuming zero (no ping)"
+#~ msgstr "O tempo de ping especificado é inválido: assumindo zero (sem ping)"
+
+#~ msgid "The specified maximum run time is invalid: assuming zero (infinite)"
+#~ msgstr ""
+#~ "O tempo máximo de execução especificado é inválido: assumindo zero "
+#~ "(infinito)"
+
+#~ msgid "Failed to start the process"
+#~ msgstr "Falhou ao iniciar o processo"
+
+#, fuzzy
+#~ msgid "The specified object does not exist"
+#~ msgstr "O objeto pai especificado não existe"
+
+#~ msgid "Missing timer name"
+#~ msgstr "Faltando nome do timer"
+
+#~ msgid "Missing timeout delay"
+#~ msgstr "Faltando intervalo de atraso"
+
+#~ msgid "The timeout delay didn't evaluate to an integer"
+#~ msgstr "O atraso do tempo de expiracão não é um número inteiro"
+
+#~ msgid "Unable to add the timer: insufficient system resources"
+#~ msgstr ""
+#~ "Incapaz de adicionar o cronomêtro: recursos do sistema insuficientes"
+
+#~ msgid ""
+#~ "The left side of the scope operator didn't evaluate as an object reference"
+#~ msgstr ""
+#~ "O lado esquerdo do operador do espaço não foi avaliado para uma "
+#~ "referência de objeto"
+
+#~ msgid ""
+#~ "The left side of the scope operator evaluated to a null object reference"
+#~ msgstr ""
+#~ "O lado esquerdo do operador do espaço foi avaliado para uma referência de "
+#~ "objeto nula "
+
+#~ msgid ""
+#~ "The left side of the scope operator evaluated to an invalid object "
+#~ "reference (object doesn't exist)"
+#~ msgstr ""
+#~ "O lado esquerdo do operador do espaço foi avaliado para uma referência de "
+#~ "objeto inválida (objeto não existe)."
+
+#~ msgid ""
+#~ "Broken slot '%Q' in target object '%Q::%Q' while emitting signal '%Q' "
+#~ "from object '%Q::%Q': disconnecting"
+#~ msgstr ""
+#~ "Slot quebrado '%Q' no objeto de destino '%Q::%Q' ao emitir o sinal '%Q' "
+#~ "do objeto '%Q::%Q': desconectando"
+
+#~ msgid ""
+#~ "Slot target object destroyed while emitting signal '%Q' from object '%Q::%"
+#~ "Q'"
+#~ msgstr ""
+#~ "Slot do objeto de destino destruido ao emitir o sinal '%Q' do objeto '%Q::"
+#~ "%Q'"
+
+#~ msgid "Listing Qt properties for object named \"%Q\" of KVS class %Q"
+#~ msgstr "Listando propriedades Qt para o objeto \"%Q\" da classe KVS %Q"
+
+#~ msgid "Properties for Qt class %s"
+#~ msgstr "Propriedades para classe Qt %s"
+
+#~ msgid "Property: %c%Q%c, type %s"
+#~ msgstr "Propriedade: %c%Q%c, tipo %s"
+
+#~ msgid "%d properties listed"
+#~ msgstr "%d propriedades listadas"
+
+#~ msgid "The object named \"%Q\" of class %Q has no Qt properties"
+#~ msgstr "O objeto \"%Q\" da classe %Q não tem propriedades Qt "
+
+#~ msgid "No Qt property named \"%Q\" for object named \"%Q\" of class %Q"
+#~ msgstr "Não existe propriedade Qt \"%Q\" para o objeto \"%Q\" da classe %Q"
+
+#~ msgid ""
+#~ "Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+#~ "property is indexed but it doesn't really exist"
+#~ msgstr ""
+#~ "Não foi possível encontrar a propriedade \"%Q\" para o objeto \"%Q\" da "
+#~ "classe %Q: a propriedade está indexada, mas nao existe realmente."
+
+#~ msgid ""
+#~ "Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the "
+#~ "property is indexed and defined but the returned variant is not valid"
+#~ msgstr ""
+#~ "Não foi possível encontrar a propriedade \"%Q\" para o objeto \"%Q\" da "
+#~ "classe %Q: a propriedade esta indexada e definida mas a variante "
+#~ "retornada é invalida."
+
+#~ msgid ""
+#~ "The property is of type %s but the supplied argument can't be converted "
+#~ "to that type (expecting \"%s\")"
+#~ msgstr ""
+#~ "A propriedade é do tipo %s mas o argumento fornecido nao pode ser "
+#~ "convertido para este tipo (esperando \"%s\")"
+
+#~ msgid ""
+#~ "A pixmap object, an image_id or an image file path is required for this "
+#~ "property"
+#~ msgstr ""
+#~ "Um objeto do pixmap, uma image_id ou um caminho de arquivo de imagem são "
+#~ "requeridos para esta propriedade"
+
+#~ msgid "Can't find the requested image"
+#~ msgstr "Não foi possível encontrar a imagem requisitada."
+
+#~ msgid ""
+#~ "Property \"%Q\" for object named \"%Q\" of class %Q has an unsupported "
+#~ "data type"
+#~ msgstr ""
+#~ "Propriedade \"%Q\" para objeto \"%Q\" da classe %Q tem um tipo de dados "
+#~ "não suportado"
+
+#~ msgid "Cannot find object function $%Q for object named \"%Q\" of class %Q"
+#~ msgstr ""
+#~ "Não foi possível encontrar a função de objeto $%Q para o objeto \"%Q\" da "
+#~ "classe %Q"
+
+#~ msgid ""
+#~ "Cannot find object function $%Q::%Q for object named \"%Q\" of class %Q"
+#~ msgstr ""
+#~ "Não foi possível encontra a função de obejto $%Q::%Q para o objeto \"%Q\" "
+#~ "da classe %Q"
+
+#, fuzzy
+#~ msgid ""
+#~ "Cannot call internal object function $%Q (for object named \"%Q\" of "
+#~ "class %Q) from this context"
+#~ msgstr ""
+#~ "Não foi possível encontrar a função de objeto $%Q para o objeto \"%Q\" da "
+#~ "classe %Q"
+
+#~ msgid "Found character '%q' (unicode %x) where a slash '/' was expected"
+#~ msgstr ""
+#~ "Caracter '%q' (unicode %x) encontrado onde uma barra '/' era esperada"
+
+#~ msgid ""
+#~ "Unexpected end of command in binding operation, at least two slashes are "
+#~ "missing"
+#~ msgstr ""
+#~ "Fim de comando inesperado na operação de associação pelo menos duas "
+#~ "barras estão faltando"
+
+#~ msgid ""
+#~ "Unexpected end of command in binding operation, at least one slash is "
+#~ "missing"
+#~ msgstr ""
+#~ "Fim de comando inesperado na operação de associação pelo menos uma barra "
+#~ "está faltando"
+
+#~ msgid "Unknown binding operation '%Q'"
+#~ msgstr "Operação de associação desconhecida '%Q'"
+
+#~ msgid "Missing right side operand for the binding operator '=~'"
+#~ msgstr ""
+#~ "Faltando o operando do lado direito para a operação de associação '=~'"
+
+#~ msgid "Trailing garbage ignored after operator '++'"
+#~ msgstr "Os caracteres após o operador '++' foram ignorados"
+
+#~ msgid "Missing right operand for operator '+='"
+#~ msgstr "Faltando o operando do lado direito para o operador '+='"
+
+#~ msgid "Trailing garbage ignored after operator '--'"
+#~ msgstr "Os caracteres após o operador '--' foram ignorados"
+
+#~ msgid "Missing right operand for operator '-='"
+#~ msgstr "Faltando o operando do lado direito para o operador '-='"
+
+#~ msgid "Missing right operand for operator '<<='"
+#~ msgstr "Faltando o operando do lado direito para o operador '<<='"
+
+#~ msgid "Missing right operand for operator '<<'"
+#~ msgstr "Faltando o operando do lado direito para o operador '<<'"
+
+#~ msgid "Missing right operand for operator '<,'"
+#~ msgstr "Faltando o operando do lado direito para o operador '<,'"
+
+#~ msgid "Missing right operand for operator '>>='"
+#~ msgstr "Faltando o operando do lado direito para o operador '>>='"
+
+#~ msgid "Missing right operand for operator '.='"
+#~ msgstr "Faltando o operando do lado direito para o operador '.='"
+
+#~ msgid "Missing right operand for operator '"
+#~ msgstr "Faltando o operando do lado direito para o operador '"
+
+#~ msgid "='"
+#~ msgstr "='"
+
+#~ msgid "Unknown operator"
+#~ msgstr "Operador desconhecido"
+
+#~ msgid "Unexpected (and senseless) read-only data evaluation"
+#~ msgstr "Avaliação de dados somente leitura inesperada (sem sentido)"
+
+#~ msgid "Syntax error: confused by earlier errors: bailing out"
+#~ msgstr "Erro de sintaxe: confundido por erros anteriores: alucinando"
+
+#~ msgid ""
+#~ "Unexpected end of script after a variable reference: expected operator"
+#~ msgstr ""
+#~ "Fim de script inesperado depois da referência da variável: operador "
+#~ "esperado"
+
+#~ msgid ""
+#~ "Unexpected character '%q' (unicode %x) after a void function call: end of "
+#~ "instruction expected"
+#~ msgstr ""
+#~ "Caracter '%q' inesperado (unicode %x) após a chamada da função void: fim "
+#~ "da instrução esperada"
+
+#~ msgid "Unexpected character '%q' (unicode %x)"
+#~ msgstr "Caracter '%q' inesperado (unicode %x)"
+
+#, fuzzy
+#~ msgid "Invalid pitch value: using default"
+#~ msgstr "Caminho (%s) inválido: usando padrão"
+
+#, fuzzy
+#~ msgid "Invalid duration value: using default"
+#~ msgstr "Duração (%s) inválida: usando padrão"
+
+#, fuzzy
+#~ msgid "No button with type %Q named %Q"
+#~ msgstr "Nenhum botão com tipo %s chamado %s"
+
+#~ msgid "Can't delete a null object reference"
+#~ msgstr "Não é possível deletar uma referência nula do objeto"
+
+#~ msgid "Can't delete an inexisting object"
+#~ msgstr "Não é possível deletar um objeto inexistente"
+
+#, fuzzy
+#~ msgid "Inexisting popup \"%Q\""
+#~ msgstr "popup \"%s\" inexistente"
+
+#, fuzzy
+#~ msgid "The menu item with id \"%Q\" does not exist in popup \"%Q\""
+#~ msgstr "O itém de menu com id \"%s\" não existe no popup \"%s\""
+
+#~ msgid ""
+#~ "The argument of the -w switch did not evaluate to a valid window id: "
+#~ "using default"
+#~ msgstr ""
+#~ "O argumento da opção -w não foi avaliado como id de janela válido: usando "
+#~ "o valor padrão"
+
+#~ msgid ""
+#~ "The argument of the i switch did not evaluate to a number: using default"
+#~ msgstr ""
+#~ "O argumento da opção i não foi avaliado para um numero: usando o valor "
+#~ "padrão"
+
+#, fuzzy
+#~ msgid "Invalid color-set specification, using default"
+#~ msgstr "Especificação do ícone inválida ' %s', usando o padrão"
+
+#~ msgid "Window '%s' not found, using current one"
+#~ msgstr "Janela ' %s' não encontrada, usando somente a atual"
+
+#~ msgid "Timer '%Q' has a broken callback handler: killing the timer"
+#~ msgstr ""
+#~ "O cronômetro '%Q' danificou o manipulador de chamadas: matar o cronômetro"
+
+#~ msgid "Invalid data type for parameter \"%s\""
+#~ msgstr "Tipo de dado inválido pra o parâmetro \"%s\""
+
+#~ msgid "found empty string where type '%s' was expected"
+#~ msgstr "encontrada uma string vazia onde o tipo '%s' era esperado "
+
+#~ msgid "found string value \"%Q\" where type '%s' was expected"
+#~ msgstr "encontrado um valor de string \"%Q\" onde o tipo '%s' era esperado"
+
+#~ msgid "found type %Q where type '%s' was expected"
+#~ msgstr "encontrado tipo \"%Q\" onde o tipo '%s' era esperado"
+
+#~ msgid "Missing non-optional parameter \"%s\""
+#~ msgstr "faltando parâmetro \"%s\" não-opcional"
+
+#~ msgid "found empty string while a non empty one was expected"
+#~ msgstr "encontrada uma string vazia onde se era esperado uma não vazia"
+
+#~ msgid ""
+#~ "found signed integer \"%d\" where type 'unsigned integer' was expected"
+#~ msgstr ""
+#~ "encontrado inteiro assinado \"%d\" onde o tipo 'inteiro não assinado' era "
+#~ "esperado"
+
+#~ msgid "[KVS]%c Warning: %Q"
+#~ msgstr "[KVS]%c Aviso: %Q"
+
+#~ msgid "[KVS]%c Compilation Error: %Q"
+#~ msgstr "[KVS]%c Erro de compilação: %Q"
+
+#~ msgid "[KVS]%c Runtime Error: %Q"
+#~ msgstr "[KVS]%c Erro de execução: %Q"
+
+#~ msgid "[KVS] in script context \"%Q\""
+#~ msgstr "[KVS] no contexto do script \"%Q\""
+
+#~ msgid "[KVS] in script context \"%Q\", %Q"
+#~ msgstr "[KVS] no contexto do script \"%Q\", %Q"
+
+#~ msgid "[KVS] Code listing:"
+#~ msgstr "[KVS] Lista de códigos:"
+
+#, fuzzy
+#~ msgid "[KVS] Window:"
+#~ msgstr "Exibir a Janela"
+
+#~ msgid "[KVS] Call stack:"
+#~ msgstr "[KVS] Chamada de pilha:"
+
+#~ msgid "There are no extended scope variables in this scope"
+#~ msgstr "Não há variáveis de espaço extendidas neste espaço"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of command buffer while looking for the \"perl.end\" "
+#~ "statement"
+#~ msgstr ""
+#~ "Fim de buffer Inesperado enquanto procurava o caracter ')' no comando "
+#~ "'for'"
+
+#~ msgid "Trailing garbage at the end of the break command: ignored"
+#~ msgstr "Os caracteres sobrando após o final do comando break: ignorando"
+
+#~ msgid "The 'unset' command needs a variable list"
+#~ msgstr "O comando 'unset' precisa de uma lista variável"
+
+#~ msgid "Found character %q (unicode %x) where a variable was expected"
+#~ msgstr "Caracter %q (unicode %x) encontrado onde a variável era esperada"
+
+#~ msgid "'unset' command used without a variable list"
+#~ msgstr "o comando 'unset' utilizado sem uma lista variável"
+
+#~ msgid "The 'global' command needs a variable list"
+#~ msgstr "O comando 'global' precisa de uma lista variável"
+
+#~ msgid ""
+#~ "Found character %q (unicode %x) where an open parenthesis was expected"
+#~ msgstr ""
+#~ "Caracter '%q' (unicode %x) encontrado onde era esperado um parênteses "
+#~ "aberto"
+
+#, fuzzy
+#~ msgid "Unexpected end of buffer in class definition"
+#~ msgstr "Fim de buffer Inesperado na mudança do bloco de condição"
+
+#, fuzzy
+#~ msgid "Found character %q (unicode %x) where a function name was expected"
+#~ msgstr ""
+#~ "Caracter '%q' (unicode %x) encontrado onde era esperado uma instrução"
+
+#, fuzzy
+#~ msgid "Unexpected end of buffer in function parameter list reminder"
+#~ msgstr "Fim de linha inesperado na lista de parâmetros"
+
+#, fuzzy
+#~ msgid "The while command needs an expression enclosed in parenthesis"
+#~ msgstr "O comando while precisa de uma expressão entre parênteses"
+
+#~ msgid ""
+#~ "The last while command in the buffer has no conditional instructions: "
+#~ "it's senseless"
+#~ msgstr ""
+#~ "O último comando while em buffer não tem instruções condicionais: sem "
+#~ "sentido"
+
+#~ msgid ""
+#~ "Unexpected end of script while looking for the instruction block of the "
+#~ "while command"
+#~ msgstr ""
+#~ "Fim de script inesperado enquanto procurava pelo bloco de instruções do "
+#~ "comando while"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of command after the 'do' command block: expected 'while' "
+#~ "keyword"
+#~ msgstr ""
+#~ "Fim de comando Inesperado após o bloco de comando 'do': palavra chave "
+#~ "'while' esperada"
+
+#~ msgid "Found character %q (unicode %x) where a 'while' keyword was expected"
+#~ msgstr ""
+#~ "Caracter '%q' (unicode %x) encontrado onde uma palavra chave 'while' era "
+#~ "esperada"
+
+#, fuzzy
+#~ msgid ""
+#~ "The 'while' block of the 'do' command needs an expression enclosed in "
+#~ "parenthesis"
+#~ msgstr ""
+#~ "O bloco 'while' do comando 'do' precisa de uma expressão entre parênteses"
+
+#~ msgid "Garbage string after the expression in 'do' command: ignored"
+#~ msgstr "Strings sobrando depois da expressão do comando 'do': ignorando"
+
+#, fuzzy
+#~ msgid "The 'if' command needs an expression enclosed in parenthesis"
+#~ msgstr "O comando 'if' precisa de uma expressão entre parênteses"
+
+#~ msgid ""
+#~ "The last if command in the buffer has no conditional instructions: it's "
+#~ "senseless"
+#~ msgstr ""
+#~ "O último comando if em buffer não tem instruções condicionais: sem sentido"
+
+#~ msgid ""
+#~ "Unexpected end of script while looking for the instruction block of the "
+#~ "if command"
+#~ msgstr ""
+#~ "Fim de script Inesperado enquanto procurava o bloco de instruções do "
+#~ "comando if"
+
+#~ msgid ""
+#~ "Unexpected end of buffer while looking for the closing ')' in the 'for' "
+#~ "command"
+#~ msgstr ""
+#~ "Fim de buffer Inesperado enquanto procurava o caracter ')' no comando "
+#~ "'for'"
+
+#, fuzzy
+#~ msgid "The 'for' command needs an expression enclosed in parenthesis"
+#~ msgstr "O comando 'for' precisa de uma expressão entre parênteses"
+
+#~ msgid ""
+#~ "Found char %q (unicode %x) while looking for the terminating ')' in 'for' "
+#~ "command"
+#~ msgstr ""
+#~ "Caracter %q (unicode %x) encontrado enquanto procurava pela terminação "
+#~ "')' no comando 'for'"
+
+#~ msgid "Empty infinite 'for' loop: fix the script"
+#~ msgstr "Loop 'for' infinito: reparar o script"
+
+#, fuzzy
+#~ msgid "The 'foreach' command needs an expression enclosed in parenthesis"
+#~ msgstr "O comando 'foreach' precisa de uma expressão entre parênteses"
+
+#~ msgid ""
+#~ "The 'foreach' command expects a writeable iteration variable as first "
+#~ "parameter"
+#~ msgstr ""
+#~ "O comando 'foreach' espera uma variável iteração de escrita como primeiro "
+#~ "parâmetro"
+
+#~ msgid ""
+#~ "Found character '%q' (unicode %x) where '%' or '$' was expected: see /"
+#~ "help foreach for the command syntax"
+#~ msgstr ""
+#~ "Caracter '%q' (unicode %x) encontrado onde '%' ou '$' era esperado: ver /"
+#~ "help para a sintaxe de comando"
+
+#~ msgid "Unexpected function call as 'foreach' iteration variable"
+#~ msgstr "Chamada inesperada a função como variável de iteração 'foreach'"
+
+#~ msgid "Unexpected read-only variable as 'foreach' iteration variable"
+#~ msgstr ""
+#~ "Variável somente leitura inesperada como variável de iteração 'foreach'"
+
+#~ msgid ""
+#~ "Unexpected end of 'foreach' parameters: at least one iteration data "
+#~ "argument must be given"
+#~ msgstr ""
+#~ "Fim de parâmetros 'foreach' Inesperado: pelo menos uma interação de "
+#~ "argumento de dados tem que ser dada"
+
+#~ msgid ""
+#~ "The 'foreach' command expects a comma separated list of iteration data "
+#~ "items after the first parameter"
+#~ msgstr ""
+#~ "O comando 'foreach' espera uma lista de elementos de iteração separados "
+#~ "por virgulas depois do primeiro parâmetro"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found empty 'foreach' execution block: maybe you need to fix your script ?"
+#~ msgstr "Bloco de execução 'foreach' vazio: reparar o script"
+
+#, fuzzy
+#~ msgid "The 'switch' command needs an expression enclosed in parenthesis"
+#~ msgstr "O comando 'switch' precisa de uma expressão entre parênteses"
+
+#~ msgid "Unexpected end of buffer in switch condition block"
+#~ msgstr "Fim de buffer Inesperado na mudança do bloco de condição"
+
+#~ msgid ""
+#~ "Found character %q (unicode %x) where a 'case','match','regexp','default' "
+#~ "or 'break' label was expected"
+#~ msgstr ""
+#~ "Caracter %q (unicode %x) encontrado onde se esperava um "
+#~ "'case','match','regexp', 'default' ou 'break'"
+
+#~ msgid ""
+#~ "Found 'break' label where a 'case','match','regexp' or 'default' label "
+#~ "was expected"
+#~ msgstr ""
+#~ "Encontrado o rótulo 'break' onde um rótulo 'case','match','regexp' ou "
+#~ "'default' era esperado"
+
+#~ msgid ""
+#~ "Found token '%Q' where a 'case','match','regexp','default' or 'break' "
+#~ "label was expected"
+#~ msgstr ""
+#~ "Encontrado '%Q' onde se esperava uma expressao do tipo 'case','match', "
+#~ "'regexp', ou 'break'"
+
+#~ msgid "Senseless empty switch command: fix the script"
+#~ msgstr "Comando switch vazio sem sentido: reparar o script"
+
+#~ msgid "Unexpected end of buffer in defpopup block"
+#~ msgstr "Fim de buffer Inesperado no blobo defpopup"
+
+#~ msgid ""
+#~ "Found character %q (unicode %x) where a "
+#~ "'prologue','separator','label','popup','item','extpopup' or 'epilogue' "
+#~ "label was expected"
+#~ msgstr ""
+#~ "Caracter %q (unicode %x) encontrado onde uma expressão do "
+#~ "tipo'prologue','separator','label','popup','item','extpopup' ou "
+#~ "'epilogue' era esperada"
+
+#, fuzzy
+#~ msgid "Found empty prologue block: maybe you need to fix the script?"
+#~ msgstr "Bloco prólogo vazio sem sentido: reparar o script"
+
+#, fuzzy
+#~ msgid "Found empty epilogue block: maybe you need to fix the script?"
+#~ msgstr "Bloco epílogo vazio sem sentido: reparar o script"
+
+#~ msgid ""
+#~ "Unexpected empty <text> field in label parameters. See /help defpopup for "
+#~ "the syntax"
+#~ msgstr ""
+#~ "Campo <texto> vazio inesperado nos parâmetros do rótulo. Veja o /help "
+#~ "defpopup para a sintaxe"
+
+#~ msgid ""
+#~ "Unexpected empty <text> field in extpopup parameters. See /help defpopup "
+#~ "for the syntax"
+#~ msgstr ""
+#~ "Campo <texto> vazio inesperado nos parâmetros exrpopup. Veja /help "
+#~ "defpopup para a sintaxe"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found empty instruction for popup item: maybe you need to fix the script?"
+#~ msgstr "Instrução vazia sem sentido para o item do popup: reparar o script"
+
+#~ msgid ""
+#~ "Unexpected empty <name> field in extpopup parameters. See /help defpopup "
+#~ "for the syntax"
+#~ msgstr ""
+#~ "Campo <nome> vazio inesperado nos parâmetros extpopup. Veja /help "
+#~ "defpopup para a sintaxe"
+
+#~ msgid ""
+#~ "Found token '%Q' where a "
+#~ "'prologue','separator','label','popup','item','extpopup' or 'epilogue' "
+#~ "label was expected"
+#~ msgstr ""
+#~ "Símbolo '%Q' encontrado onde "
+#~ "'prologue','separator','label','popup','item','extpopup' or 'epilogue' "
+#~ "label era esperado"
+
+#, fuzzy
+#~ msgid "The 'defpopup' command needs an expression enclosed in parenthesis"
+#~ msgstr "O comando 'defpopup' precisa de uma expressão entre parênteses"
+
+#, fuzzy
+#~ msgid "Module command call failed: can't load the module '%Q': %Q"
+#~ msgstr ""
+#~ "Chamada de comando do módulo falhou: não foi possível carregar o módulo '%"
+#~ "Q'"
+
+#~ msgid ""
+#~ "Module command call failed: the module '%Q' doesn't export a command "
+#~ "named '%Q'"
+#~ msgstr ""
+#~ "Chamada de comando do módulo falhou: o módulo '%Q' não exporta um comando "
+#~ "chamado '%Q'"
+
+#, fuzzy
+#~ msgid "Received ping from \r!s\r%Q\r (PING %Q), replied pong"
+#~ msgstr "Ping recebido de \r!s\r%s\r (PING %s), respondendo com pong"
+
+#~ msgid "Received pong from \r!s\r%s\r (PONG %s)"
+#~ msgstr "Pong recebido de \r!s\r%s\r (PONG %s)"
+
+#~ msgid "Server ERROR: %Q"
+#~ msgstr "ERRO do Servidor : %Q"
+
+#~ msgid "Missing channel parameter in join message"
+#~ msgstr "Faltando parâmetro do canal na mensagem de entrada"
+
+#~ msgid "Received a join message for an unknown channel, possible desync"
+#~ msgstr ""
+#~ "Recebida uma mensagem de entrada de um canal desconhecido, possível "
+#~ "dessincronização?"
+
+#~ msgid ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r [implicit +%c umode "
+#~ "change]"
+#~ msgstr ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] entrou no \r!c\r%Q\r [implicito +%c umode "
+#~ "alterado]]"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] entrou no \r!c\r%Q\r"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just joined \r!c\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] acabou de entrar em \r!c\r%Q\r"
+
+#~ msgid "Received a part message for an unknown channel, possible desync"
+#~ msgstr ""
+#~ "Recebida uma mensagem de saída de um canal desconhecido, possível "
+#~ "dessincronização?"
+
+#~ msgid "You have left channel \r!c\r%Q\r"
+#~ msgstr "Acabou de sair do canal \r!c\r%Q\r"
+
+#~ msgid "You have left channel \r!c\r%Q\r: %Q"
+#~ msgstr "Acabou de sair do canal \r!c\r%Q\r: %Q"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r: %Q"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] saiu do \r!c\r%Q\r: %Q"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] acabou de sair do \r!c\r%Q\r"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r: %Q"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] acabou de sair do \r!c\r%Q\r: %Q"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] acabou de sair do \r!c\r%Q\r"
+
+#~ msgid "Netsplit detected: %s"
+#~ msgstr "Netsplit detectado: %s"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] saiu do irc %Q"
+
+#~ msgid "Received a kick message for an unknown channel, possible desync"
+#~ msgstr ""
+#~ "Recebida uma mensagem de chute de um canal desconhecido, possível "
+#~ "dessincronização?"
+
+#~ msgid ""
+#~ "You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "Você foi chutado de \r!c\r%Q\r por \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid "Attempting to rejoin \r!c\r%Q\r..."
+#~ msgstr "Tentando reentrar em \r!c\r%Q\r..."
+
+#~ msgid ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has been kicked from \r!c\r%Q\r by \r!n\r%Q\r "
+#~ "[%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] foi chutadado de \r!c\r%Q\r by \r!n\r%Q\r [%Q@"
+#~ "\r!h\r%Q\r]: %Q"
+
+#~ msgid ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just been kicked from \r!c\r%Q\r by \r!n\r%"
+#~ "Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] acabou de ser kickado de \r!c\r%Q\r por \r!n\r%"
+#~ "Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid ""
+#~ "The following message appears to be encrypted, but the crypto engine "
+#~ "failed to decode it: %s"
+#~ msgstr ""
+#~ "A seguinte mensagem parece estar criptografada, mas o motor de "
+#~ "criptografia falhou ao decodificá-la: %s"
+
+#~ msgid "Ignoring PRIVMSG from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "Ignorando PRIVMSG de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid ""
+#~ "Spam privmsg from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%s"
+#~ "\")"
+#~ msgstr ""
+#~ "Spam privmsg de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (palavra spam coincidente "
+#~ "\"%s\")"
+
+#~ msgid "Ignoring NOTICE from %Q (%Q)"
+#~ msgstr "Ignorando NOTICE de %Q (%Q)"
+
+#~ msgid "NickServ requests authentication, executing scheduled command"
+#~ msgstr "NickServ pediu autenticação, executando comando programado"
+
+#~ msgid ""
+#~ "The scheduled NickServ identification command appears to be broken, "
+#~ "please change the setting"
+#~ msgstr ""
+#~ "O comando de identificação NickServ programado parece estar incorreto, "
+#~ "por favor altere a configuração"
+
+#~ msgid ""
+#~ "Spam notice from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%Q\")"
+#~ msgstr ""
+#~ "Noticia spam de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (palavra spam coincidente "
+#~ "\"%s\")"
+
+#~ msgid "Received a topic message for an unknown channel, possible desync"
+#~ msgstr ""
+#~ "Recebida uma mensagem de tópico de um canal desconhecido, possível "
+#~ "dessincronização?"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has changed topic to \"%Q%c\""
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] mudou o tópico para \"%Q%c\""
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] é agora conhecido como \r!n\r%Q\r"
+
+#~ msgid "You have changed your nickname to %Q"
+#~ msgstr "Você alterou seu apelido para %Q"
+
+#~ msgid ""
+#~ "The target of this query was lost and has been found when \r!n\r%Q\r [%Q@"
+#~ "\r!h\r%Q\r] changed his nickname to \r!n\r%Q\r"
+#~ msgstr ""
+#~ "O destino deste query se perdeu e foi encontrado quando \r!n\r%Q\r [%Q@\r!"
+#~ "h\r%Q\r] aletrou seu apelido para \r!n\r%Q\r"
+
+#, fuzzy
+#~ msgid ""
+#~ "The recent nickname change from \r!n\r%Q\r to \r!n\r%Q\r caused a query "
+#~ "collision: merging output"
+#~ msgstr ""
+#~ "A mudança recente de apelido de \r!n\r%Q\r para \r!n\r%Q\r causou uma "
+#~ "colisãode query: mesclando a saída"
+
+#~ msgid "End of merged output"
+#~ msgstr "Final de saída mesclada"
+
+#~ msgid "autojoining"
+#~ msgstr "autoentar"
+
+#~ msgid "double-click the channel name to join"
+#~ msgstr "Clique duas vezes no nome do canal para entrar"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] invites you to channel \r!c\r%Q\r (%Q)"
+#~ msgstr ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] convidou você para o canal \r!c\r%Q\r (%Q)"
+
+#~ msgid "Received an invite message directed to another nick, possible desync"
+#~ msgstr ""
+#~ "Recebida uma mensagem INVITE dirigida a outro apelido, possível "
+#~ "dessincronização"
+
+#~ msgid "WALLOPS from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "WALLOPS de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid "You have set user mode %s"
+#~ msgstr "Você setou o modo de usuário %s"
+
+#~ msgid "Received a mode change for an unknown channel, possible desync"
+#~ msgstr ""
+#~ "Recebida uma mudança de modo de um canal desconhecido, possível "
+#~ "dessincronização"
+
+#~ msgid "%Q [%Q@%Q] has set channel key to \"\r!m-k\r%Q\r\""
+#~ msgstr "%Q [%Q@%Q] colocou a senha \"\r!m-k\r%Q\r\" no canal "
+
+#~ msgid "%Q [%Q@%Q] has unset the channel key"
+#~ msgstr "%Q [%Q@%Q] removeu a senha do canal"
+
+#~ msgid "%Q [%Q@%Q] has set channel \r!m-l\rlimit to %Q\r"
+#~ msgstr "%Q [%Q@%Q] colocou o limite do canal \r!m-l\rpara %Q\r"
+
+#~ msgid "%Q [%Q@%Q] has unset the channel limit"
+#~ msgstr "%Q [%Q@%Q] removeu limite do canal"
+
+#~ msgid "%Q [%Q@%Q] has set mode %c%c \r!n\r%Q\r"
+#~ msgstr "%Q [%Q@%Q] colocou o modo %c%c \r!n\r%Q\r"
+
+#~ msgid "%Q [%Q@%Q] has set mode %c%c \r!m%c%c\r%Q\r"
+#~ msgstr "%Q [%Q@%Q] colocou o modo %c%c \r!m%c%c\r%Q\r"
+
+#~ msgid "%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"
+#~ msgstr "%Q [%Q@%Q] colocou o canal \r!m%c%c\rmodo %c%c\r"
+
+#~ msgid "%Q [%Q@%Q] has set mode %s %Q"
+#~ msgstr "%Q [%Q@%Q] colocou o modo %s %Q"
+
+#~ msgid "%Q [%Q@%Q] has set channel mode %s"
+#~ msgstr "%Q [%Q@%Q] colocou o modo de canal %s"
+
+#~ msgid ""
+#~ "[Server parser]: Encountered problems while parsing the following message:"
+#~ msgstr ""
+#~ "[Parser do servidor ]: Problemas encontrados enquanto se analisava a "
+#~ "seguinte mensagem:"
+
+#~ msgid "[Server parser]: [%s][%s] %Q"
+#~ msgstr "[Parser do servidor ]: [%s][%s] %Q"
+
+#~ msgid "[Server parser]: %s"
+#~ msgstr "[Parser do servidor ]: %s"
+
+#~ msgid "The following CTCP reply has unrecognized target %Q"
+#~ msgstr "A seguinte resposta CTCP não tem um destino reconhecido %Q"
+
+#~ msgid "Channel CTCP"
+#~ msgstr "CTCP de canal"
+
+#~ msgid "%Q %S reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "%Q %S resposta de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid "The following CTCP request has unrecognized target %Q"
+#~ msgstr "O seguinte pedido CTCP não tem um destino reconhecido %Q"
+
+#~ msgid ""
+#~ "%Q %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignored (flood limit "
+#~ "exceeded)"
+#~ msgstr ""
+#~ "%Q %S pedido de \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignorado (limite de "
+#~ "flood excedido)"
+
+#~ msgid "ignored (unrecognized)"
+#~ msgstr "ignorado (desconhecido)"
+
+#~ msgid "ignored"
+#~ msgstr "ignorado"
+
+#~ msgid "replied"
+#~ msgstr "respondido"
+
+#~ msgid "%Q %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+#~ msgstr "%Q %S pedido de \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+
+#~ msgid "The following CTCP PING reply has unrecognized target \"%Q\""
+#~ msgstr "A seguinte resposta CTCP PING não tem um destino reconhecido \"%Q\""
+
+#~ msgid ""
+#~ "The following CTCP PING reply has a broken time identifier \"%S\", don't "
+#~ "trust the displayed time"
+#~ msgstr ""
+#~ "A seguente resposta CTCP PING tem um identificador de tempo quebrado \"%S"
+#~ "\", não confie no tempo exibido"
+
+#~ msgid "%Q PING reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sec %u msec"
+#~ msgstr "%Q resposta PING de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u seg %u mseg"
+
+#~ msgid "The following CTCP ACTION has unrecognized target %Q"
+#~ msgstr "A seguinte CTCP ACTION não tem um destino reconhecido %Q"
+
+#~ msgid "CTCP ACTION from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "CTCP ACTION de \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid "Unable to add file offer for file %Q (File not readable?)"
+#~ msgstr ""
+#~ "Não foi possível adicionar um compartilhamento de arquivo para %Q "
+#~ "(Arquivo ilegível?)"
+
+#~ msgid "Added %d sec file offer for file %Q (%Q) to recipient %Q"
+#~ msgstr ""
+#~ "Adicionado(s) %d seg(s) ao pedido de envio para o arquivo %Q (%Q) para %Q"
+
+#~ msgid "private"
+#~ msgstr "notificação"
+
+#~ msgid "channel notification:"
+#~ msgstr "notificação do canal:"
+
+#~ msgid "notification"
+#~ msgstr "privada"
+
+#~ msgid "%Q unsets avatar"
+#~ msgstr "%Q remover avatar"
+
+#~ msgid "%Q changes avatar to %s"
+#~ msgstr "%Q mudou o avatar para %s"
+
+#~ msgid ""
+#~ ": No valid local copy of avatar available, requesting one (HTTP GET %s)"
+#~ msgstr ""
+#~ ": Não existe copia local válida do avatar disponível, pedindo um (HTTP "
+#~ "GET %s)"
+
+#~ msgid ""
+#~ ": No valid local copy of avatar available; failed to start an HTTP "
+#~ "transfer, ignoring"
+#~ msgstr ""
+#~ ": Não existe copia local válida do avatar disponível; falhou o inicio de "
+#~ "uma transferência HTTP, ignorando"
+
+#~ msgid ""
+#~ ": No valid local copy of avatar available, requesting one (DCC GET %s)"
+#~ msgstr ""
+#~ ": Não existe copia local válida do avatar disponível; pedindo um (DCC GET "
+#~ "%s)"
+
+#~ msgid ""
+#~ ": No valid local copy of avatar available; flood limit exceeded, ignoring"
+#~ msgstr ""
+#~ ": Não existe copia local válida do avatar disponível; limite de flood "
+#~ "excedido, ignorando"
+
+#~ msgid ": No valid local copy of avatar available, ignoring"
+#~ msgstr ": Não existe copia local válida do avatar disponível; ignorando"
+
+#~ msgid ": No such nickname in the user database, ignoring the change"
+#~ msgstr ""
+#~ ": Não existe tal apelido na base de dados de usuarios, ignorando a mudança"
+
+#~ msgid "Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%S %S)"
+#~ msgstr "Ignorando o pedido DCC %S de \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%S %S)"
+
+#, fuzzy
+#~ msgid "Processing DCC %Q request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%S %S)"
+#~ msgstr "Processando o pedido DCC %S de \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%S %S)"
+
+#~ msgid "Unable to process the above request: Cannot load DCC module (%s)"
+#~ msgstr ""
+#~ "Impossível processar o pedido anterior: Não foi possível carregar o "
+#~ "módulo DCC (%s)"
+
+#~ msgid "Unable to process the above request: DCC module may be broken"
+#~ msgstr ""
+#~ "Impossível processar o pedido anterior: O módulo DCC pode estar quebrado"
+
+#~ msgid "Channel operators"
+#~ msgstr "Operadores de canal"
+
+#~ msgid "Voiced users"
+#~ msgstr "Usuarios com voice"
+
+#~ msgid "Half-operators"
+#~ msgstr "semioperadores"
+
+#~ msgid "Ban masks"
+#~ msgstr "Máscaras de Ban"
+
+#~ msgid "Color free (no ANSI colors)"
+#~ msgstr "Livre de cores (sem cores ANSI)"
+
+#~ msgid "Ban exception masks"
+#~ msgstr "Máscaras de exceções de ban"
+
+#~ msgid "Invite exception masks or forbid /INVITE"
+#~ msgstr "Máscaras de exceção de invite ou proibir /INVITE"
+
+#~ msgid "Secret"
+#~ msgstr "Secreto"
+
+#~ msgid "Private"
+#~ msgstr "Privado"
+
+#~ msgid "Topic change restricted"
+#~ msgstr "Mudança de tópico restringida"
+
+#~ msgid "Invite only"
+#~ msgstr "Somente por convite"
+
+#~ msgid "No external messages"
+#~ msgstr "Sem mensagens externas"
+
+#~ msgid "Anonymous or protected user"
+#~ msgstr "Usuário anônimo ou protegido"
+
+#~ msgid "Quiet or channel owner"
+#~ msgstr "Quieto ou proprietário do canal"
+
+#~ msgid "Limited number of users"
+#~ msgstr "Número de usuários limitado"
+
+#~ msgid "Key"
+#~ msgstr "Senha"
+
+#~ msgid "Moderated"
+#~ msgstr "Moderado"
+
+#~ msgid "Registered"
+#~ msgstr "Registrado"
+
+#~ msgid "Censor swear words"
+#~ msgstr "Palavrões censurados"
+
+#~ msgid "Only registered nicks can join"
+#~ msgstr "Somentes apelidos registrados podem entar"
+
+#~ msgid "No kicks able (unless U-Line)"
+#~ msgstr "Sem poder de chute (exceto U-line)"
+
+#~ msgid "IRC-Op only channel"
+#~ msgstr "Canal somente para IRC-Op"
+
+#~ msgid "Server/Network/Tech Admin only channel"
+#~ msgstr "Canal somente para Administrador de Servidor/Rede/Técnico"
+
+#~ msgid "Forbid /KNOCK"
+#~ msgstr "Proibido /KNOCK"
+
+#~ msgid "Redirect on channel full"
+#~ msgstr "Redirecionar em canais cheios"
+
+#~ msgid "Forbid channel CTCPs"
+#~ msgstr "Poibido CTCP no Canal"
+
+#~ msgid "User-operators OR Auditorium: /NAMES and /WHO show only ops"
+#~ msgstr "Usuários-operadores OU Auditorium: /NAMES e /WHO mostram apenas ops"
+
+#~ msgid "Unknown channel mode"
+#~ msgstr "Modo de canal desconhecido"
+
+#~ msgid ""
+#~ "One or more standard mode flags are missing in the server available "
+#~ "modes.\n"
+#~ "This is caused either by a non RFC1459-compliant IRC daemon or a broken "
+#~ "server reply.\n"
+#~ "Server umodes seem to be '%s' and channel modes seem to be '%s'.\n"
+#~ "Ignoring this reply and assuming that the basic set of modes is "
+#~ "available.\n"
+#~ "If you have strange problems, try changing the server."
+#~ msgstr ""
+#~ "Um ou mais modos de flags padrões estão faltando nos modos de servidor "
+#~ "disponiveis.\n"
+#~ "Isto é causado por um daemon RFC1459 não compatível ou uma resposta de "
+#~ "servidor quebrada.\n"
+#~ "Os umodes do servidor parecem ser '%s' e os modos de canal parecem ser '%"
+#~ "s'.\n"
+#~ "Ignorando esta resposta e assumindo que o ajuste de modos básico está "
+#~ "disponível.\n"
+#~ "Se você tiver problemas estranhos, tente mudar de servidor."
+
+#~ msgid "Available user modes:"
+#~ msgstr "Modos de usuário disponíveis"
+
+#~ msgid "o: IRC operator (OPER)"
+#~ msgstr "Modos de usuário disponiveis:"
+
+#~ msgid "O: Local IRC operator (LOCOP)"
+#~ msgstr "O: Operador de IRC Local (LOCOP)"
+
+#~ msgid "i: Invisible"
+#~ msgstr "i: Invisível"
+
+#~ msgid "w: Recipient for WALLOPS messages"
+#~ msgstr "w: Receptor de mensagens WALLOPS"
+
+#~ msgid ""
+#~ "r: User with restricted connection (or recipient for messages about "
+#~ "rejected bots)"
+#~ msgstr ""
+#~ "r: Usuário com conexão restrita (ou recepiente para mensagens sobre bots "
+#~ "rejeitados)"
+
+#~ msgid "s: Recipient for server notices"
+#~ msgstr "s: Recipiente para noticias de servidor"
+
+#~ msgid "z: Recipient for oper wallop messages"
+#~ msgstr "z: Receptor de mensagens wallop do operador"
+
+#~ msgid "c: Recipient for cconn messages"
+#~ msgstr "c: Receptor de mensagens cconn"
+
+#~ msgid "k: Recipient for server kill messages"
+#~ msgstr "k: Receptor de mensagens kill do servidor"
+
+#~ msgid "f: Recipient for full server notices"
+#~ msgstr "f: Recipiente para noticias cheias de servidores"
+
+#~ msgid "y: Spy :)"
+#~ msgstr "y: Espião :)"
+
+#~ msgid "d: Obscure 'DEBUG' flag"
+#~ msgstr "d: flag 'DEPURAR' obscura"
+
+#~ msgid "n: Recipient for nick changes"
+#~ msgstr "n: Recipiente para mudanças de nicks"
+
+#~ msgid ": Unknown user mode"
+#~ msgstr ":Modo de usuário desconhecido"
+
+#~ msgid "Available channel modes:"
+#~ msgstr "Modos de canal disponíveis"
+
+#~ msgid ""
+#~ "Server %Q version %S supporting user modes '%S' and channel modes '%S'"
+#~ msgstr ""
+#~ "Servidor %Q na versão %S suportando os modos de usuário '%S' e modos de "
+#~ "canal '%S'"
+
+#~ msgid "This server supports the WATCH notify list method, it will be used"
+#~ msgstr ""
+#~ "Este servidor suporta o método WATCH da lista de notificação, e será "
+#~ "utilizado"
+
+#~ msgid "The current network is %Q"
+#~ msgstr "A rede atual é %Q"
+
+#~ msgid "This server supports the CODEPAGE command, it will be used"
+#~ msgstr "Este servidor suporta o comando CODEPAGE, e será utilizado"
+
+#~ msgid "This server supports: %s"
+#~ msgstr "Este servidor suporta: %s"
+
+#~ msgid "End of NAMES for \r!c\r%Q\r"
+#~ msgstr "Fim de NAMES para \r!c\r%Q\r"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c: %Q"
+#~ msgstr "Informações de %c\r!n\r%Q\r%c : %Q"
+
+#~ msgid "Names for \r!c\r%Q\r: %Q"
+#~ msgstr "Nomes para \r!c\r%Q\r: %Q"
+
+#~ msgid "(unknown)"
+#~ msgstr "(Desconhecido)"
+
+#~ msgid "Channel topic is: %Q"
+#~ msgstr "O tópico do canal é: %Q"
+
+#~ msgid "Topic for \r!c\r%Q\r is: %Q"
+#~ msgstr "Tópico para \r!c\r%Q\r é: %Q"
+
+#~ msgid "No channel topic is set"
+#~ msgstr "O canal não possui um tópico"
+
+#~ msgid "No topic is set for channel \r!c\r%Q\r"
+#~ msgstr "Nenhum tópico posto para o canal \r!c\r%Q\r"
+
+#~ msgid "Topic was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r on %Q"
+#~ msgstr "Tópico foi posto por \r!n\r%Q\r!%Q@\r!h\r%Q\r em %Q"
+
+#~ msgid "Topic was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+#~ msgstr "Tópico foi posto por \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+
+#~ msgid "Topic for \r!c\r%Q\r was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r on %Q"
+#~ msgstr "Tópico para \r!c\r%Q\r foi posto por \r!n\r%Q\r!%Q@\r!h\r%Q\r em %Q"
+
+#~ msgid "Topic for \r!c\r%Q\r was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+#~ msgstr "Tópico para \r!c\r%Q\r foi posto por \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+
+#~ msgid "Channel mode for \r!c\r%Q\r is %s"
+#~ msgstr "Modo de canal para \r!c\r%Q\r é %s"
+
+#~ msgid "User mode for \r!n\r%Q\r is %s"
+#~ msgstr "Modo de usuário para \r!c\r%Q\r é %s"
+
+#~ msgid "End of channel %Q for \r!c\r%Q\r"
+#~ msgstr "Fim do canal %Q para \r!c\r%Q\r"
+
+#~ msgid "ban list"
+#~ msgstr "Lista de bans"
+
+#~ msgid "invite list"
+#~ msgstr "Lista de convites"
+
+#~ msgid "ban exception list"
+#~ msgstr "Lista de exceções de bans"
+
+#~ msgid "%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"
+#~ msgstr "%Q para \r!c\r%Q\r: \r!m-%c\r%Q\r (posto por %Q em %Q)"
+
+#~ msgid "Ban listing"
+#~ msgstr "Listagem de bans"
+
+#~ msgid "Invite listing"
+#~ msgstr "Listagem de convites"
+
+#~ msgid "Ban exception listing"
+#~ msgstr "Listagem de excepções de bans"
+
+#~ msgid ""
+#~ "WHO entry for %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cChannel%c: \r!c\r%Q\r, %"
+#~ "cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAway%c: %Q, %cReal "
+#~ "name%c: %Q"
+#~ msgstr ""
+#~ "Entrada WHO para %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cCanal%c: \r!c\r%Q\r, %"
+#~ "cServidor%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAusente%c: %Q, %"
+#~ "cNome Real %c: %Q"
+
+#~ msgid "End of WHO list for %Q"
+#~ msgstr "Fim da lista WHO para %Q"
+
+#~ msgid ""
+#~ "Something really weird is happening: the server is refusing all the login "
+#~ "nicknames..."
+#~ msgstr ""
+#~ "Alguma coisa muito esquisita está acontecendo: o servidor está "
+#~ "recusandologin de todos os nicks..."
+
+#~ msgid ""
+#~ "The server is refusing all the login nicknames: giving up, you must send "
+#~ "the nickname manually"
+#~ msgstr ""
+#~ "O servidor está a recusando o login de todos os nicks: desistindo, você "
+#~ "tem que enviar o nick manualmente"
+
+#~ msgid "No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."
+#~ msgstr ""
+#~ "Não há meio de fazer login como '\r!n\r%Q\r' (%d: %Q), tentando '%Q'..."
+
+#~ msgid "%c\r!n\r%Q\r%c is away: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c está ausente: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+#~ msgstr "%c\r!n\r%Q\r%c é %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#~ msgid "%c\r!n\r%Q\r%c's real name: %Q"
+#~ msgstr "Nome real de %c\r!n\r%Q\r%c : %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c was %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+#~ msgstr "%c\r!n\r%Q\r%c era %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#~ msgid "%c\r!n\r%Q\r%c's real name was: %Q"
+#~ msgstr "Nome real de %c\r!n\r%Q\r%c era: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c's channels: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c está nos canais: %Q"
+
+#~ msgid "Received a broken RPL_WHOISIDLE, can't evaluate the idle time"
+#~ msgstr ""
+#~ "Recebido um RPL_WHOISIDLE quebrado, não possível calcular o tempo que "
+#~ "esteve inativo"
+
+#~ msgid "%c\r!n\r%Q\r%c's idle time: %ud %uh %um %us"
+#~ msgstr "Tempo inativo de %c\r!n\r%Q\r%c : %ud %uh %um %us"
+
+#~ msgid "%c\r!n\r%Q\r%c's signon time: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c entrou em: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c's server: \r!s\r%Q\r - %Q"
+#~ msgstr "Servidor em que %c\r!n\r%Q\r%c está: \r!s\r%Q\r - %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c is authenticated as %Q"
+#~ msgstr "%c\r!n\r%Q\r%c está autenticado como %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c's info: %Q"
+#~ msgstr "Informações de %c\r!n\r%Q\r%c : %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c WHOIS info from \r!s\r%Q\r"
+#~ msgstr "Informção do WHOIS de %c\r!n\r%Q\r%c vinda de \r!s\r%Q\r"
+
+#~ msgid "%c\r!n\r%Q\r%c WHOWAS info from \r!s\r%Q\r"
+#~ msgstr "Informção do WHOWAS de %c\r!n\r%Q\r%c vinda de \r!s\r%Q\r"
+
+#~ msgid "Can't evaluate creation time"
+#~ msgstr "Impossivel avaliar o tempo de criação"
+
+#~ msgid "Channel was created at %Q"
+#~ msgstr "Canal criado em %Q"
+
+#~ msgid "Channel \r!c\r%Q\r was created at %Q"
+#~ msgstr "Canal \r!c\r%Q\r foi criado em %Q"
+
+#~ msgid "USERHOST info: %Q"
+#~ msgstr "Informação USERHOST: %Q"
+
+#~ msgid "Channel list begin: channel, users, topic"
+#~ msgstr "Início da lista de canais: canal, usuarios, tópico"
+
+#~ msgid "List: %Q"
+#~ msgstr "Lista: %Q"
+
+#~ msgid "End of LIST"
+#~ msgstr "Fim de LIST"
+
+#~ msgid "Link: %Q"
+#~ msgstr "Link: %Q"
+
+#~ msgid "End of LINKS"
+#~ msgstr "Fim de LINKS"
+
+#~ msgid "[Leaving away status after %ud %uh %um %us]: %Q"
+#~ msgstr "[Saindo do estado de ausente após %ud %uh %um %us]: %Q"
+
+#~ msgid "[Leaving away status]: %Q"
+#~ msgstr "[Saindo do estado de ausente]: %Q"
+
+#~ msgid "Restoring pre-away nickname (%Q)"
+#~ msgstr "Restaurando apelido pré-ausente (%Q)"
+
+#~ msgid "[Entering away status]: %Q"
+#~ msgstr "[Entrando em estado ausente]: %Q"
+
+#~ msgid "Setting away nickname (%Q)"
+#~ msgstr "Definindo apelido de ausente (%Q)"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's server info: %s"
+#~ msgstr "Informações de %c\r!n\r%Q\r%c : %Q"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's administrator is %s"
+#~ msgstr "Informações de %c\r!n\r%Q\r%c : %Q"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's contact adress is %s"
+#~ msgstr "%c\r!n\r%Q\r%c está nos canais: %Q"
+
+#, fuzzy
+#~ msgid "\r!n\r%Q\r invited %Q into channel %Q"
+#~ msgstr ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] convidou você para o canal \r!c\r%Q\r (%Q)"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's information:"
+#~ msgstr "Informações de %c\r!n\r%Q\r%c : %Q"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's time is %Q"
+#~ msgstr "Informações de %c\r!n\r%Q\r%c : %Q"
+
+#, fuzzy
+#~ msgid "Cannot sent to channel: %Q"
+#~ msgstr "Nenhum tópico posto para o canal \r!c\r%Q\r"
+
+#, fuzzy
+#~ msgid "Cannot sent text to channel %Q: %Q"
+#~ msgstr "Acabou de sair do canal \r!c\r%Q\r: %Q"
+
+#, fuzzy
+#~ msgid "Cannot sent to channel"
+#~ msgstr "A Janela atual não é um canal"
+
+#, fuzzy
+#~ msgid "Cannot sent text to channel %Q"
+#~ msgstr "Nenhum tópico posto para o canal \r!c\r%Q\r"
+
+#~ msgid "Your encoding is now %Q"
+#~ msgstr "Sua codificação agora é %Q"
+
+#, fuzzy
+#~ msgid "%c\r!n\r%Q\r%c's codepage is %Q: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c está nos canais: %Q"
+
+#~ msgid "Your user mode is %s"
+#~ msgstr "Seu modo de usuário é %s"
+
+#~ msgid "Hostname resolution aborted"
+#~ msgstr "Resolução do nome do host abortada"
+
+#~ msgid "Attempting %Q to %Q (%Q) on port %u"
+#~ msgstr "Tentando %Q com %Q (%Q) na porta %u"
+
+#~ msgid "secure connection"
+#~ msgstr "conexão segura"
+
+#~ msgid "Attempting to 'bounce' on proxy %s on port %u (protocol %s)"
+#~ msgstr "Tentar 'bounce' no proxy %s na porta %u (protocolo %s)"
+
+#~ msgid "Using cached proxy IP address (%s)"
+#~ msgstr "Usando ENDEREÇO IP do proxy armazenado (%s)"
+
+#~ msgid "Unable to look up the IRC proxy hostname: Can't start the DNS slave"
+#~ msgstr ""
+#~ "Não foi possível encontrar o nome de máquina do proxy IRC: não pude "
+#~ "iniciar o DNS escravo"
+
+#~ msgid "Resuming direct server connection"
+#~ msgstr "Recomeçando a conexão direta do servidor"
+
+#~ msgid "Looking up the proxy hostname (%s)..."
+#~ msgstr "Localizando nome de host do proxy (%s)..."
+
+#~ msgid "Can't find the proxy IP address: %Q"
+#~ msgstr "Não foi possível encontrar o endereço IP do proxy: %Q"
+
+#~ msgid "Proxy hostname resolved to %s"
+#~ msgstr "O nome do host do proxy foi resolvido para %s"
+
+#~ msgid "Proxy %s has a nickname: %s"
+#~ msgstr "Proxy %s tem um apelido: %s"
+
+#~ msgid "Using cached server IP address (%s)"
+#~ msgstr "Usando o ENDEREÇO IP (%s) armazenado do servidor"
+
+#~ msgid "Unable to look up the server hostname: Can't start the DNS slave"
+#~ msgstr ""
+#~ "Não foi possível encontrar o nome de máquina do servidor: não pude "
+#~ "iniciar o DNS escravo"
+
+#~ msgid "Looking up the server hostname (%s)..."
+#~ msgstr "Localizando nome de máquina do servidor (%s)..."
+
+#~ msgid "Can't find the server IP address: %Q"
+#~ msgstr "Não foi possível encontrar o endereço IP do servidor: %Q"
+
+#~ msgid "If this server is an IPv6 one, try /server -i %s"
+#~ msgstr "Se este servidor utilizar somente IPv6, tente /server -i %s"
+
+#~ msgid "Server hostname resolved to %s"
+#~ msgstr "O nome de máquina do servidor foi resolvido como %s"
+
+#~ msgid "Real hostname for %s is %s"
+#~ msgstr "O nome do host real para %s é %s"
+
+#~ msgid "Server %s has a nickname: %s"
+#~ msgstr "Servidor %s tem um apelido: %s"
+
+#~ msgid "The specified bind address (%Q) is not valid"
+#~ msgstr "O endereço (%Q) especificado para fazer conexões não é válido."
+
+#~ msgid ""
+#~ "The specified bind address (%Q) is not valid (the interface it refers to "
+#~ "might be down)"
+#~ msgstr ""
+#~ "O endereço (%Q) especificado para fazer conexões não é válido (A "
+#~ "interface a que ele se refere pode estar desativada)"
+
+#~ msgid "The system-wide IPv6 bind address (%s) is not valid"
+#~ msgstr ""
+#~ "O endereço (%s) do sistema especificado para fazer conexões IPv6 não é "
+#~ "válido"
+
+#~ msgid ""
+#~ "The system-wide IPv6 bind address (%s) is not valid (the interface it "
+#~ "refers to might be down)"
+#~ msgstr ""
+#~ "O endereço (%s) do sistema especificado para fazer conexões IPv6 não é "
+#~ "válido (A interface a que ele se refere pode estar desativada)"
+
+#~ msgid "The system-wide IPv4 bind address (%s) is not valid"
+#~ msgstr ""
+#~ "O endereço (%s) do sistema especificado para fazer conexões IPv4 não é "
+#~ "válido"
+
+#~ msgid ""
+#~ "The system-wide IPv4 bind address (%s) is not valid (the interface it "
+#~ "refers to might be down)"
+#~ msgstr ""
+#~ "O endereço (%s) do sistema especificado para fazer conexões IPv4 não é "
+#~ "válido (A interface a que ele se refere pode estar desativada)"
+
+#~ msgid "Configure Servers..."
+#~ msgstr "Configurar Servidores..."
+
+#~ msgid ""
+#~ "Allows you to configure the servers and eventually to connect to them"
+#~ msgstr ""
+#~ "Permite a você configurar aos servidores e eventualmente conectar-se a "
+#~ "eles"
+
+#~ msgid "Manage Addons..."
+#~ msgstr "Gerênciar Addons..."
+
+#~ msgid "Allows you to manage the script-based addons"
+#~ msgstr "Permite a você gerenciar os addons baseados no script"
+
+#~ msgid "Configure Registered Users..."
+#~ msgstr "Configurar Usuários Registrados..."
+
+#~ msgid "Shows a dialog that allows editing the registered user entries"
+#~ msgstr ""
+#~ "Exibe a janela que permite a você editar entradas de usuários registrados"
+
+#~ msgid "Configure Identity..."
+#~ msgstr "Configurar Identidade..."
+
+#~ msgid "Allows you to configure nickname, username, avatar etc..."
+#~ msgstr ""
+#~ "Permite a você configurar o apelido, nome de usuário, avatar e etc..."
+
+#~ msgid "Show SocketSpy..."
+#~ msgstr "Exibir Socket espião..."
+
+#~ msgid "Shows a window that allows monitoring the socket traffic"
+#~ msgstr "Exibe a janela que permite a você monitorar o tráfego do socket"
+
+#~ msgid "Get Network Links"
+#~ msgstr "Requisitar Links da Rede"
+
+#~ msgid "Shows a window that allows viewing the network links"
+#~ msgstr "Exibe a janela que permite a você ver os links da rede"
+
+#~ msgid "Get Channel List"
+#~ msgstr "Requisitar Lista de Canais"
+
+#~ msgid "Shows a window that allows listing the network channels"
+#~ msgstr "Exibe a janela que permite a você listar os canais da rede"
+
+#~ msgid "Configure KVIrc..."
+#~ msgstr "Configurar KVIrc..."
+
+#~ msgid "Shows the general options dialog"
+#~ msgstr "Exibir o dialogo geral de opções"
+
+#~ msgid "Customize Toolbars..."
+#~ msgstr "Personalizar Barras de Ferramentas..."
+
+#~ msgid "Shows a window that allows editing script toolbars"
+#~ msgstr ""
+#~ "Exibe a janela que permite a você editar script de barra de ferramentas"
+
+#~ msgid "Join Channels..."
+#~ msgstr "Entrar nos Canais..."
+
+#~ msgid "Shows a dialog that allows you joing channels"
+#~ msgstr "Exibe o diálogo que permite a você entrar nos canais"
+
+#~ msgid "Edit Actions..."
+#~ msgstr "Editando ações..."
+
+#~ msgid "Shows a window that allows editing actions"
+#~ msgstr "Exibe a janela que permite a você editar as ações"
+
+#~ msgid "Edit Aliases..."
+#~ msgstr "Aliases..."
+
+#~ msgid "Shows a window that allows editing aliases"
+#~ msgstr "Exibe a janela que permite a você editar os aliases"
+
+#~ msgid "Edit Events..."
+#~ msgstr "Eventos..."
+
+#~ msgid "Shows a window that allows editing script events"
+#~ msgstr "Exibe a janela que permite a você editar eventos do script"
+
+#~ msgid "Edit Popups..."
+#~ msgstr "Popups..."
+
+#~ msgid "Shows a window that allows editing popup menus"
+#~ msgstr "Exibe a janela que permite a você editar menus popup"
+
+#~ msgid "Edit Raw Events..."
+#~ msgstr "Eventos Raw..."
+
+#~ msgid "Shows a window that allows editing raw scripting events"
+#~ msgstr "Exibe a janela que permite a você editar eventos de script raw"
+
+#~ msgid "New Script Tester"
+#~ msgstr "Testar Script"
+
+#~ msgid "Creates an embedded editor for long scripts"
+#~ msgstr "Cría um editor embutido para scripts longos"
+
+#~ msgid "Execute Script..."
+#~ msgstr "Executar Script..."
+
+#~ msgid "Allows executing a KVS script from file"
+#~ msgstr "Permite executar um script KVS a partir de um arquivo"
+
+#~ msgid "Help Index"
+#~ msgstr "Índice da Ajuda"
+
+#~ msgid "Shows the documentation index"
+#~ msgstr "Exibir o índice da documentação"
+
+#~ msgid "Subscribe to the Mailing List"
+#~ msgstr "Inscrever-se na Lista de E-mail"
+
+#~ msgid "Allows subscribing to the KVIrc mailing list"
+#~ msgstr "Inscrever-se na Lista de E-mail"
+
+#~ msgid "KVIrc WWW"
+#~ msgstr "KVIrc WWW"
+
+#~ msgid "Opens the KVIrc homepage"
+#~ msgstr "Página do KVIrc"
+
+#~ msgid "Cascade windows"
+#~ msgstr "Janela em cascata"
+
+#~ msgid "Arranges the MDI windows in a maximized-cascade fashion"
+#~ msgstr "Organiza as janelas MDI na forma de casata-maximizada"
+
+#~ msgid "Tiles the MDI windows with the currently selected tile method"
+#~ msgstr ""
+#~ "Organiza as janelas MDI no método Lado a Lado atualmente selecionado"
+
+#~ msgid "Minimize all windows"
+#~ msgstr "Minimizar todas las janelas"
+
+#~ msgid "Minimized all the currently visible MDI windows"
+#~ msgstr "Minimiza todas as janelas MDI atualmente visíveis"
+
+#~ msgid "New IRC Context"
+#~ msgstr "Nova janela de servidor"
+
+#~ msgid "Creates a new IRC context console"
+#~ msgstr "Cría um novo console de contexto de IRC"
+
+#~ msgid "Quit KVIrc"
+#~ msgstr "Fechar o KVIrc"
+
+#~ msgid "Quits KVIrc closing all the current connections"
+#~ msgstr "Fecha o KVIrc encerrando todas as conexões ativas"
+
+#~ msgid "IRC Context Display"
+#~ msgstr "Barra de Ferramentas de Contexto de IRC"
+
+#~ msgid "Shows a small display with IRC context informations"
+#~ msgstr "Exibe uma pequena janela com as informações de contexto de IRC"
+
+#~ msgid "Acts as a separator for other items: performs no action"
+#~ msgstr ""
+#~ "Atua como um separador para outros elementos: não realiza nenhuma ação"
+
+#~ msgid "Connect/Disconnect"
+#~ msgstr "Conectar/Desconectar"
+
+#~ msgid ""
+#~ "Allows you to connect to a server or to terminate the current connection"
+#~ msgstr ""
+#~ "Permite a você se conectar a um servidor ou terminar a conexão atual"
+
+#~ msgid "Connect"
+#~ msgstr "Conectar"
+
+#~ msgid "Abort Connection"
+#~ msgstr "Abortar Conexão"
+
+#~ msgid "Join Channel"
+#~ msgstr "Entrar no Canal"
+
+#~ msgid "Shows a popup menu that allows quickly selecting a channel to join"
+#~ msgstr ""
+#~ "Exibe menu popup que permite selecionar rapidamente um canal para entrar"
+
+#~ msgid "Change Nickname"
+#~ msgstr "Alterar Apelido"
+
+#~ msgid "Shows a popup menu that allows quickly changing the nickname"
+#~ msgstr "Exibe um menu popup que permite alterar rapidamente o apelido "
+
+#~ msgid "Connect To"
+#~ msgstr "Conectar para"
+
+#~ msgid "Shows a popup menu that allows quickly connecting to a server"
+#~ msgstr "Exibe um menu popup que permite conectar rapidamente a um servidor"
+
+#~ msgid "Shows a popup menu that allows quickly changing user modes"
+#~ msgstr ""
+#~ "Exibe um menu popup que permite alterar rapidamente os modos de usuário"
+
+#~ msgid "Server Notices (+s)"
+#~ msgstr "Noticias do Servidor (+s)"
+
+#~ msgid "Away/Back"
+#~ msgstr "Ausente/Voltar"
+
+#~ msgid "Allows entering and leaving away state"
+#~ msgstr "Pemite entrar e sair do estado de ausente"
+
+#~ msgid "Enter Away Mode"
+#~ msgstr "Entrar no Modos de Ausente"
+
+#~ msgid "Leave Away Mode"
+#~ msgstr "Sair do Modo de Ausente"
+
+#~ msgid "Irc Tools"
+#~ msgstr "Ferramentas de IRC"
+
+#~ msgid "Shows a popup menu with some IRC Tools"
+#~ msgstr "Exibe um menu popup com algumas Ferramentas de IRC"
+
+#~ msgid "Irc Actions"
+#~ msgstr "Ações"
+
+#~ msgid "Shows a popup menu with some IRC Actions"
+#~ msgstr "Exibe um menu popup com algumas Ações de IRC"
+
+#~ msgid "Failed to set the encoding to %Q: mapping not available."
+#~ msgstr ""
+#~ "Falhou ao configurar a codificação para %Q: mapeamento não disponível."
+
+#~ msgid "Changed text encoding to %Q"
+#~ msgstr "Codificação do texto alterada para %Q"
+
+#~ msgid "Connection to server established"
+#~ msgstr "Conexão com servidor estabelecida"
+
+#~ msgid "[LINK WARNING]: Socket message truncated to 512 bytes."
+#~ msgstr "[AVISO DO LINK]: Mensagem do socket truncada a 512 bytes."
+
+#~ msgid ""
+#~ "The server seems to support the WATCH notify list method, will try to use "
+#~ "it"
+#~ msgstr ""
+#~ "Este servidor parece suportar o método de lista de notificação WATCH, "
+#~ "tentarei usar isto."
+
+#~ msgid "Can't resolve local host address, using user supplied one (%Q)"
+#~ msgstr ""
+#~ "Não foi possível resolver o endereço de máquina local, usando o fornecido "
+#~ "pelo usuário (%Q)"
+
+#~ msgid "Can't resolve local host address, using default 127.0.0.1"
+#~ msgstr ""
+#~ "Não foi possível resolver o endereço de máquina local, usando o padrão "
+#~ "127.0.0.1"
+
+#~ msgid "Local host address is %Q"
+#~ msgstr "O endereço de máquina local é %Q"
+
+#~ msgid "The server seems to have changed the idea about the local hostname"
+#~ msgstr "O servidor parece ter mudado de idéia sobre o nome da máquina local"
+
+#~ msgid ""
+#~ "You're probably using a broken bouncer or maybe something weird is "
+#~ "happening on the IRC server"
+#~ msgstr ""
+#~ "Provavelmente você esta usando um bouncer quebarado ou algo muito "
+#~ "estranho está acontecendo no servidor de IRC"
+
+#~ msgid ""
+#~ "Here goes your \"broken bouncer hack\": The server has changed the "
+#~ "hostname but I'll ignore the IP address change"
+#~ msgstr ""
+#~ "Aqui vai seu \"hack do bouncer quebarado\": O servidor mudou seu nome de "
+#~ "máquina, mas vou ignorou a mudança de endereço IP"
+
+#~ msgid "The local IP address as seen by the IRC server is %Q"
+#~ msgstr "O endereço IP local visto pelo servidor IRC é %Q"
+
+#~ msgid "Can't start the DNS slave thread"
+#~ msgstr "Não foi possível iniciar o processo escravo do DNS"
+
+#~ msgid "Unable to resolve the local hostname as seen by the IRC server: %Q"
+#~ msgstr ""
+#~ "Não foi possível resolver o nome da máquina local como foi visto pelo "
+#~ "servidor de IRC: %Q"
+
+#~ msgid "Looking up the local hostname as seen by the IRC server (%Q)"
+#~ msgstr ""
+#~ "Buscando o nome de máquina local como o visto pelo servidor de IRC (%Q)"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unable to resolve the local hostname as seen by the IRC server: %Q, using "
+#~ "previously resolved %Q"
+#~ msgstr ""
+#~ "Não foi possível resolver o nome da máquina local como foi visto pelo "
+#~ "servidor de IRC: %Q"
+
+#~ msgid "Local hostname as seen by the IRC server resolved to %s"
+#~ msgstr ""
+#~ "O endereço IP local visto pelo servidor de IRC foi resolvido como %s"
+
+#~ msgid "Using server specific username (%Q)"
+#~ msgstr "Utilizando nome de usuário especifico do servidor (%Q)"
+
+#~ msgid "Using network specific username (%Q)"
+#~ msgstr "Utilizando nome de usuário especifico da rede (%Q)"
+
+#~ msgid "Using server specific nickname (%Q)"
+#~ msgstr "Utilizando apelido especifico do servidor (%Q)"
+
+#~ msgid "Using network specific nickname (%Q)"
+#~ msgstr "Utilizando apelido especifico da rede (%Q)"
+
+#~ msgid "Using server specific real name (%Q)"
+#~ msgstr "Utilizando nome real especifico do servidor (%Q)"
+
+#~ msgid "Using network specific real name (%Q)"
+#~ msgstr "Utilizando nome real especifico da rede (%Q)"
+
+#~ msgid "Logging in as %Q!%Q :%Q"
+#~ msgstr "Entrando como %Q!%Q :%Q"
+
+#~ msgid "Sending %s as password"
+#~ msgstr "Enviando %s como senha"
+
+#~ msgid "Executing scheduled network specific \"on connect\" commands"
+#~ msgstr ""
+#~ "Executando os comandos específicos da rede programados \"ao conectar\""
+
+#~ msgid "Executing scheduled server specific \"on connect\" commands"
+#~ msgstr ""
+#~ "Executando os comandos específicos do servidor programados \"ao conectar\""
+
+#~ msgid ""
+#~ "The server refused the suggested nickname (%s) and named you %s instead"
+#~ msgstr ""
+#~ "O servidor recusou o apelido sugerido (%s) e nomeou-o %s preferivelmente"
+
+#~ msgid "Login operations complete, happy ircing!"
+#~ msgstr "Operações de entrada concluídas: bom bate-papo :)"
+
+#~ msgid "Executing scheduled network specific \"on login\" commands"
+#~ msgstr ""
+#~ "Executando os comandos específicos da rede programados \"ao entrar/login\""
+
+#~ msgid "Executing scheduled server specific \"on login\" commands"
+#~ msgstr ""
+#~ "Executando os comandos específicos do servidor programados \"ao entrar/"
+#~ "login\""
+
+#~ msgid "Setting configured user mode"
+#~ msgstr "Colocando os modos de usuário configurados"
+
+#~ msgid "Auto-joining network specific channels"
+#~ msgstr "Entrando automaticamente nos canais específicos da rede"
+
+#~ msgid "Auto-joining server specific channels"
+#~ msgstr "Entrando automáticamente nos canais específicos do servidor"
+
+#, fuzzy
+#~ msgid "Updating away state for channel %Q"
+#~ msgstr "Nenhum tópico posto para o canal \r!c\r%Q\r"
+
+#~ msgid ""
+#~ "Ops...it looks like I can't load modules on this sytem.\n"
+#~ "I have been looking for the %s library but I haven't been able to load "
+#~ "it\n"
+#~ "due to the following error: \"%s\"\n"
+#~ "Aborting."
+#~ msgstr ""
+#~ "Opa.. parece que não posso carregar módulos nesse sistema.procurei pela "
+#~ "biblioteca %s mas não fui capaz de carrega-la\n"
+#~ "devido ao seguinte erro: \"%s\"\n"
+#~ "Abortando."
+
+#~ msgid ""
+#~ "Ops...it looks like you have a broken distribution.\n"
+#~ "The setup module does not export the \"setup_begin\" function.\n"
+#~ "Aborting!"
+#~ msgstr ""
+#~ "Ops... parece que você tem uma distribuição defeituosa.\n"
+#~ "O módulo de configuração não exporta a função \"setup_begin\".\n"
+#~ "Abortando!"
+
+#~ msgid "Setup aborted"
+#~ msgstr "Configuração abortada"
+
+#~ msgid ""
+#~ "Ops...it looks like you have a broken distribution.\n"
+#~ "The setup module does not export the \"setup_finish\" function.\n"
+#~ "Trying to continue anyway..."
+#~ msgstr ""
+#~ "Ops... parece que você tem uma distribuição defeituosa.\n"
+#~ "O módulo de configuração não exporta a função \"setup_finish\" Tentando "
+#~ "continuar de todas as maneiras..."
+
+#, fuzzy
+#~ msgid ""
+#~ "Failed writing the kvirc home directory path to %Q.\n"
+#~ "You will need to do it manually , otherwise KVirc will restart with\n"
+#~ "the setup!"
+#~ msgstr ""
+#~ "Falha ao escrever no diretório do kvirc %s.\n"
+#~ " Você precisará fazê-lo manualmente, se não o KVirc reiniciará o com\n"
+#~ "o processo de configuração!"
+
+#~ msgid "Normal text"
+#~ msgstr "Texto Normal"
+
+#~ msgid "Selection"
+#~ msgstr "Seleção"
+
+#~ msgid "Highlighted text"
+#~ msgstr "Texto destacado"
+
+#~ msgid "URL foreground"
+#~ msgstr "Cor de primeiro plano da URL"
+
+#~ msgid "Link overlay foreground"
+#~ msgstr "Link da capa de primeiro plano"
+
+#~ msgid "Parser error"
+#~ msgstr "Erro do analisador"
+
+#~ msgid "Parser warning"
+#~ msgstr "Aviso do analisador"
+
+#~ msgid "Host lookup result"
+#~ msgstr "Resultado da pesquisa da máquina"
+
+#~ msgid "Socket message"
+#~ msgstr "Mensagem de socket"
+
+#~ msgid "Socket warning"
+#~ msgstr "Aviso de socket"
+
+#~ msgid "Socket error"
+#~ msgstr "Erro de socket"
+
+#~ msgid "System error"
+#~ msgstr "Erro do sistema"
+
+#~ msgid "Raw data to server"
+#~ msgstr "Dados raw para o servidor"
+
+#~ msgid "Connection status"
+#~ msgstr "Estado da conexão"
+
+#~ msgid "System warning"
+#~ msgstr "Aviso do sistema"
+
+#~ msgid "System message"
+#~ msgstr "Mensagem do sistema"
+
+#~ msgid "Unhandled server reply"
+#~ msgstr "Resposta não manipulada do servidor"
+
+#~ msgid "Server information"
+#~ msgstr "Informação do servidor"
+
+#~ msgid "Server Message of the Day"
+#~ msgstr "Mensagem do Dia do Servidor"
+
+#~ msgid "Server ping"
+#~ msgstr "Ping do Servidor"
+
+#~ msgid "Join message"
+#~ msgstr "Mensagem de entrada"
+
+#~ msgid "Unrecognized/broken message"
+#~ msgstr "Mensagem desconhecida/quebrada"
+
+#~ msgid "Topic message"
+#~ msgstr "Mensagem de tópico"
+
+#~ msgid "Own private message"
+#~ msgstr "Mensagem do privado próprio"
+
+#~ msgid "Channel private message"
+#~ msgstr "Mensagem privada ao canal"
+
+#~ msgid "Query private message"
+#~ msgstr "Mensagem de pergunta privada"
+
+#~ msgid "CTCP reply"
+#~ msgstr "Resposta de CTCP"
+
+#~ msgid "CTCP request replied"
+#~ msgstr "Pedido de CTCP respondido"
+
+#~ msgid "CTCP request ignored"
+#~ msgstr "Pedido de CTCP ignorado"
+
+#~ msgid "CTCP request flood warning"
+#~ msgstr "Aviso de flood de pedido CTCP"
+
+#~ msgid "CTCP request unknown"
+#~ msgstr "Pedido de CTCP desconhecido"
+
+#~ msgid "User action"
+#~ msgstr "Ação do Usuário"
+
+#~ msgid "Avatar change"
+#~ msgstr "Mudança de avatar"
+
+#~ msgid "Split message"
+#~ msgstr "Messagem de separação"
+
+#~ msgid "Quit on netsplit message"
+#~ msgstr "Sair com a mensagem de separação"
+
+#~ msgid "Nick changes"
+#~ msgstr "Mudanças de apelido"
+
+#~ msgid "+o mode change"
+#~ msgstr "mudou o modo para +o"
+
+#~ msgid "-o mode change"
+#~ msgstr "mudou o modo para -o"
+
+#~ msgid "+v mode change"
+#~ msgstr "mudou o modo para +v"
+
+#~ msgid "-v mode change"
+#~ msgstr "mudou o modo para -v"
+
+#~ msgid "Multiple user mode change"
+#~ msgstr "Mudança múltipla do modo de usuário"
+
+#~ msgid "Channel key change"
+#~ msgstr "Mudança da senha do canal"
+
+#~ msgid "Channel limit change"
+#~ msgstr "Mudança do limite do canal"
+
+#~ msgid "+b mode change"
+#~ msgstr "mudar modo para +b"
+
+#~ msgid "-b mode change"
+#~ msgstr "mudar modo para -b"
+
+#~ msgid "+e mode change"
+#~ msgstr "mudar modo para +e"
+
+#, fuzzy
+#~ msgid "-e mode change"
+#~ msgstr "mudou o modo para -o"
+
+#~ msgid "+I mode change"
+#~ msgstr "mudar modo para +i"
+
+#~ msgid "-I mode change"
+#~ msgstr "mudar modo para -i"
+
+#~ msgid "Multiple channel mode change"
+#~ msgstr "Mudança múltipla do modo de canal"
+
+#~ msgid "Who reply"
+#~ msgstr "Resposta de Who"
+
+#~ msgid "DCC request"
+#~ msgstr "Pedido de DCC"
+
+#~ msgid "DCC message"
+#~ msgstr "Mensagem de DCC"
+
+#~ msgid "DCC error"
+#~ msgstr "Erro de DCC"
+
+#~ msgid "Nickname problem"
+#~ msgstr "Problema no apelido"
+
+#~ msgid "Whois user reply"
+#~ msgstr "Resposta whois do usuário"
+
+#~ msgid "Whois channels reply"
+#~ msgstr "Resposta Whois dos canais"
+
+#~ msgid "Whois idle reply"
+#~ msgstr "Resposta Whois inativo"
+
+#~ msgid "Whois server reply"
+#~ msgstr "Resposta Whois do servidor"
+
+#~ msgid "Whois other reply"
+#~ msgstr "Outras respostas de Whois"
+
+#~ msgid "Channel creation time reply"
+#~ msgstr "Resposta de tempo na criação do canal"
+
+#~ msgid "Notify list joins"
+#~ msgstr "Notificar entradas na lista"
+
+#~ msgid "Notify list leaves"
+#~ msgstr "Notificar saídas da lista"
+
+#~ msgid "Own encrypted private message"
+#~ msgstr "Mensagem privada própria criptografada"
+
+#~ msgid "Channel encrypted private message"
+#~ msgstr "Mensagem privada criptografada do canal"
+
+#~ msgid "Query encrypted private message"
+#~ msgstr "Mensagem privada criptografada do privado"
+
+#~ msgid "DCC chat message"
+#~ msgstr "Mensagem de DCC chat"
+
+#~ msgid "Encrypted DCC chat message"
+#~ msgstr "Mensagem de DCC chat criptografada"
+
+#~ msgid "Login operations completed"
+#~ msgstr "Operações de entrada completas"
+
+#~ msgid "Kick action"
+#~ msgstr "Ação de chute"
+
+#~ msgid "Links reply"
+#~ msgstr "Resposta de Links"
+
+#~ msgid "Spam report"
+#~ msgstr "Reportar spam"
+
+#~ msgid "ICQ message"
+#~ msgstr "Mensagem de ICQ"
+
+#~ msgid "ICQ user-message"
+#~ msgstr "Mensagem de usuário do ICQ"
+
+#~ msgid "Outgoing ICQ user-message"
+#~ msgstr "Mensagem de saida de usuário do ICQ"
+
+#~ msgid "Channel notice"
+#~ msgstr "Notícia do Canal"
+
+#~ msgid "Encrypted channel notice"
+#~ msgstr "Notícia do Canal criptografada"
+
+#~ msgid "Query notice"
+#~ msgstr "Notícia de privado"
+
+#~ msgid "Encrypted query notice"
+#~ msgstr "Notícia de privado criptografada"
+
+#~ msgid "Server notice"
+#~ msgstr "Notícia do servidor"
+
+#~ msgid "Halfop mode change"
+#~ msgstr "Mudaça de modo semioperador"
+
+#~ msgid "Unknown CTCP reply"
+#~ msgstr "Resposta CTCP desconhecida"
+
+#~ msgid "NickServ message"
+#~ msgstr "Mensagem do NickServ"
+
+#~ msgid "ChanServ message"
+#~ msgstr "Mensagem do ChanServ"
+
+#~ msgid "Away message"
+#~ msgstr "Mensagem de ausente"
+
+#~ msgid "Ident message"
+#~ msgstr "Mensagem de ident"
+
+#~ msgid "Channel list message"
+#~ msgstr "Mensagem da lista de canais"
+
+#~ msgid "Half-deop mode change"
+#~ msgstr "Mudança de modo deop semioperador"
+
+#~ msgid "Invite message"
+#~ msgstr "Mensagem de convite"
+
+#~ msgid "Multimedia message"
+#~ msgstr "Mensagem multimídia"
+
+#~ msgid "Query trace message"
+#~ msgstr "Rastrear mensagem de privado"
+
+#~ msgid "Wallops message"
+#~ msgstr "Mensagem wallops"
+
+#~ msgid "Join error message"
+#~ msgstr "Mensagem de erro ao entrar"
+
+#~ msgid "Broadcast private message"
+#~ msgstr "Mensagem de privado difundida"
+
+#~ msgid "Broadcast notice"
+#~ msgstr "Difundir notícia"
+
+#~ msgid "Am kicked"
+#~ msgstr "Am chutado"
+
+#~ msgid "Am op'd"
+#~ msgstr "Am \"opado\""
+
+#~ msgid "Am voiced"
+#~ msgstr "Am \"voiceado\""
+
+#~ msgid "Am deop'd"
+#~ msgstr "Am \"desopado\""
+
+#~ msgid "Am devoiced"
+#~ msgstr "\"Am devoiceado\""
+
+#~ msgid "Am halfop'd"
+#~ msgstr "Am \"semiopado\""
+
+#~ msgid "Am de-halfop'd"
+#~ msgstr "Am \"semidesopado\""
+
+#~ msgid "Ban matching my mask"
+#~ msgstr "Banir semelhança com minha máscara"
+
+#~ msgid "Unban matching my mask"
+#~ msgstr "Desbanir semelhança com minha máscara"
+
+#~ msgid "Ban exception matching my mask"
+#~ msgstr "Exceção de ban semelhante a minha máscara"
+
+#~ msgid "Ban unexception matching my mask"
+#~ msgstr "Ban sem exceção combina com minha máscara"
+
+#~ msgid "Invite exception matching my mask"
+#~ msgstr "A exceção de convite combina com minha máscara"
+
+#~ msgid "Invite unexception matching my mask"
+#~ msgstr "Convite sem exceção combina com minha máscara"
+
+#~ msgid "Ignored user message"
+#~ msgstr "Mensagem de usuário ignorada"
+
+#~ msgid "Server statistics"
+#~ msgstr "Estatisticas do servidor"
+
+#~ msgid "SSL message"
+#~ msgstr "Mensagem SSL"
+
+#~ msgid "Search"
+#~ msgstr "Procurar"
+
+#~ msgid "Generic success"
+#~ msgstr "Sucesso genérico"
+
+#~ msgid "Generic status"
+#~ msgstr "Estado genérico"
+
+#~ msgid "Generic verbose message"
+#~ msgstr "Mensagem genérica detalhada"
+
+#~ msgid "Generic warning"
+#~ msgstr "Aviso genérico"
+
+#~ msgid "Generic error"
+#~ msgstr "Erro genérico"
+
+#~ msgid "Generic critical error"
+#~ msgstr "Erro crítico genérico"
+
+#~ msgid "Chan admin status set"
+#~ msgstr "Colocado estado de admin de canal"
+
+#~ msgid "Chan admin status unset"
+#~ msgstr "Retirado estado de admin de canal"
+
+#~ msgid "Own chan admin status set"
+#~ msgstr "Colocado estado de admin proprietário do canal"
+
+#~ msgid "Own chan admin status unset"
+#~ msgstr "Removido estado de admin proprietário do canal"
+
+#~ msgid "Userop mode change"
+#~ msgstr "Mudança de modo usuario operador"
+
+#~ msgid "User-deop mode change"
+#~ msgstr "Mudança de modo usuario não operador"
+
+#~ msgid "Am userop'd"
+#~ msgstr "Am \"opado\""
+
+#~ msgid "Am de-userop'd"
+#~ msgstr "Am \"desopado\""
+
+#~ msgid "Verbose/Debug"
+#~ msgstr "Verbose/Depurar"
+
+#~ msgid "Chan owner status set"
+#~ msgstr "Posto estado de proprietário do canal"
+
+#~ msgid "Chan owner status unset"
+#~ msgstr "Removido estado de propietario do canal"
+
+#~ msgid "Own chan owner status set"
+#~ msgstr "Posto o estado de proprietário do canal "
+
+#~ msgid "Own chan owner status unset"
+#~ msgstr "Removido estado de proprietário do canal "
+
+#~ msgid "Server error"
+#~ msgstr "Erro do servidor"
+
+#~ msgid "Boolean options (1/0)"
+#~ msgstr "Opções booleanas (1/0)"
+
+#~ msgid "Rectangle options (x,y,width,height)"
+#~ msgstr "Opções do retângulo (x, y, largura, altura)"
+
+#~ msgid "String options (string value)"
+#~ msgstr "Opções da string (valor da string)"
+
+#~ msgid "Color options (#RRGGBB)"
+#~ msgstr "Opções de cor (#RRGGBB)"
+
+#~ msgid "Mirccolor options (#RRGGBB)"
+#~ msgstr "Opções de Mirccolor (#RRGGBB)"
+
+#~ msgid "Irc context color options (#RRGGBB)"
+#~ msgstr "Opções da cor do contexto do IRC (# RRGGBB)"
+
+#~ msgid "Pixmap options (image path)"
+#~ msgstr "Opções de Pixmap (caminho da imagem)"
+
+#~ msgid "Unsigned integer options (unsigned integer constant)"
+#~ msgstr "Opções do inteiro não assinadas (constante de inteiro não assinada)"
+
+#~ msgid "Font options (family,pointsize,style,charset,weight,flags (biusf))"
+#~ msgstr ""
+#~ "Opções de fonte (family,pointsize,style,charset,weight,flags (biusf))"
+
+#~ msgid "Message color options (image_id,foreground,background,logFlag (0/1))"
+#~ msgstr ""
+#~ "Opções de cor da mensagem (image_id, primeiro plano, fundo, logFlag (0/1))"
+
+#~ msgid "String list options (comma separated list of strings)"
+#~ msgstr ""
+#~ "Opções da lista de strings (lista de strings separadas por vírgulas)"
+
+#~ msgid "Icon Table"
+#~ msgstr "Tabela de Icones"
+
+#~ msgid "%Q is on IRC"
+#~ msgstr "%Q está no IRC"
+
+#~ msgid "%Q has left IRC"
+#~ msgstr "%Q saiu do IRC"
+
+#~ msgid "Notify list: No users to check for, quitting"
+#~ msgstr "Lista de Notificação: Não existem usuários para verificar, saindo"
+
+#~ msgid ""
+#~ "Notify list: Timeout (%d sec) is too short, resetting to something more "
+#~ "reasonable (15 sec)"
+#~ msgstr ""
+#~ "Lista de Notificação: Intervalo de tempo (%d segundos) é muito pequeno, "
+#~ "configurando um valor mais razoável (15 segundos)"
+
+#~ msgid "Notify list: Notify list empty, quitting"
+#~ msgstr "Lista de Notificação: lista de notificação vazia, saindo"
+
+#~ msgid ""
+#~ "Notify list: ISON delay (%d sec) is too short, resetting to something "
+#~ "more reasonable (5 sec)"
+#~ msgstr ""
+#~ "Lista de Notificação: O intervalo de tempo para o ISON (%d segundoss) é "
+#~ "muito pequeno, configurando algo mais razoável (5 segundos)"
+
+#~ msgid "Notify list: Checking for: %Q"
+#~ msgstr "Lista de Notificação: Verificando: %Q"
+
+#~ msgid ""
+#~ "Notify list: Hey! You've used ISON behind my back? (I might be confused "
+#~ "now...)"
+#~ msgstr ""
+#~ "Lista de Notificação: Ei! Você utilizou ISON pelas minhas costas? (Agora "
+#~ "posso estar confuso...)"
+
+#~ msgid "registration mask changed, or nickname is being used by someone else"
+#~ msgstr ""
+#~ "máscara de registro alterada, ou apelido está sendo usado por alguém"
+
+#~ msgid ""
+#~ "Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q"
+#~ "\r] does not match (registration mask does not match, or nickname is "
+#~ "being used by someone else)"
+#~ msgstr ""
+#~ "Lista de Notificação: \r!n\r%Q\r parece estar conectado, mas a máscara (%"
+#~ "Q@\r!h\r%Q\r) não coincide (a máscara de registo não combina, ou o nick "
+#~ "está sendo utilizado por outra pessoa)"
+
+#~ msgid ""
+#~ "Notify list: Unexpected inconsistency, registered user DB modified? "
+#~ "(restarting)"
+#~ msgstr ""
+#~ "Lista de Notificação: inconsistência inesperada, A base de dados de "
+#~ "usuários registrados foi modificada? (reiniciando)"
+
+#~ msgid ""
+#~ "Notify list: Unexpected inconsistency, expected \r!n\r%Q\r in the "
+#~ "registered user DB"
+#~ msgstr ""
+#~ "Lista de Notificação: Inconsistência inesperada, o esperado era \r!n\r%Q"
+#~ "\r no registo de usuário da Base de Dados"
+
+#~ msgid ""
+#~ "Notify list: USERHOST delay (%d sec) is too short, resetting to something "
+#~ "more reasonable (5 sec)"
+#~ msgstr ""
+#~ "Lista de Notificação: O intervalo de tempo para USERHOST (%d segundos) é "
+#~ "muito pequeno, configurando para algo mais razoável (5 segundos)"
+
+#~ msgid "Notify list: Unexpected inconsistency, userhost list is empty!"
+#~ msgstr ""
+#~ "Lista de Notificação: Inconsistência inesperada, a lista usuario-máquina "
+#~ "está vazia!"
+
+#~ msgid "Notify list: Checking userhost for: %Q"
+#~ msgstr "Lista de Notificação: Verificando userhost para: %Q"
+
+#~ msgid ""
+#~ "Notify list: Hey! You've used USERHOST behind my back? (I might be "
+#~ "confused now...)"
+#~ msgstr ""
+#~ "Lista de Notificação: Ei! Você utilizou USERHOST pelas minhas costas? "
+#~ "(Agora posso estar confuso...)"
+
+#~ msgid "Notify list: Broken USERHOST reply from the server? (%s)"
+#~ msgstr ""
+#~ "Lista de Notificação: Resposta USERHOST do servidor esta quebrada? (%s)"
+
+#~ msgid ""
+#~ "Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST "
+#~ "reply was received, will recheck in the next loop"
+#~ msgstr ""
+#~ "Lista de Notificação: parece que \r!n\r%Q\r ficou offline antes da "
+#~ "resposta USERHOST, será verificado no próximo passo"
+
+#~ msgid "No users in the notify list"
+#~ msgstr "Não existem usuários na lista de notificação"
+
+#~ msgid "Notify list: Checking for:%Q"
+#~ msgstr "Lista de Notificação: Verificando: %Q"
+
+#~ msgid ""
+#~ "Notify list: Timeout (%d sec) is too short, resetting to something more "
+#~ "reasonable (5 sec)"
+#~ msgstr ""
+#~ "Lista de Notificação: O tempo para expiracão (%d segundos) é muito "
+#~ "pequeno, configurando para algo mais razoável (5 segundos)"
+
+#~ msgid "Notify list: Adding watch entries for%Q"
+#~ msgstr "Lista de Notificação: Adicionando entradas watch para %Q"
+
+#~ msgid "watch entry listing requested by user"
+#~ msgstr "listagem watch requisitada pelo usuário"
+
+#~ msgid "possible watch list desync"
+#~ msgstr "possível dessincronização da lista de watch"
+
+#~ msgid "registration mask changed or desync with the watch service"
+#~ msgstr ""
+#~ "máscara de registro alterada ou se dessincronizou com o serviço watch"
+
+#~ msgid ""
+#~ "Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q"
+#~ "\r] does not match (watch: registration mask does not match, or nickname "
+#~ "is being used by someone else)"
+#~ msgstr ""
+#~ "Lista de Notificação: \r!n\r%Q\r parece estar conectado, mas a máscara (%"
+#~ "Q@\r!h\r%Q\r) não coincide (a máscara de registo não combina, ou o nick "
+#~ "está sendo utilizado por outra pessoa)"
+
+#~ msgid ""
+#~ "Notify list: Unexpected inconsistency, registered user DB modified? "
+#~ "(watch: restarting)"
+#~ msgstr ""
+#~ "Lista de Notificação: inconsistência inesperada, A base de dados de "
+#~ "usuários registrados foi modificada? (watch: reiniciando)"
+
+#~ msgid "watch entry added by user"
+#~ msgstr "entrada watch adicionada pelo usuário"
+
+#~ msgid "removed from watch list"
+#~ msgstr "removido da lista watch"
+
+#~ msgid "Notify list: Stopped watching for \r!n\r%Q\r"
+#~ msgstr "Lista de Notificação: Parou de verificar por \r!n\r%Q\r"
+
+#~ msgid "watch"
+#~ msgstr "watch"
+
+#~ msgid "Notify list: \r!n\r%Q\r is offline (watch)"
+#~ msgstr "Lista de Notificação: \r!n\r%Q\r está desconectado (watch)"
+
+#~ msgid "unmatched watch list entry"
+#~ msgstr "entrada da lista watch não bate."
+
+#, fuzzy
+#~ msgid "commandline"
+#~ msgstr "Nenhuma linha de comando especificada"
+
+#~ msgid "[SSL]: %c%s"
+#~ msgstr "[SSL]: %c%s"
+
+#~ msgid "[SSL]: Cipher: %c%s"
+#~ msgstr "[SSL]: Cifra: %c%s"
+
+#~ msgid "[SSL]: Version: %c%s"
+#~ msgstr "[SSL]: Versão: %c%s"
+
+#~ msgid "[SSL]: Bits: %c%d (%d used)"
+#~ msgstr "[SSL]: Bits: %c%d (%d usado(s))"
+
+#~ msgid "[SSL]: Version: %c%d"
+#~ msgstr "[SSL]: Versão: %c%d"
+
+#~ msgid "[SSL]: Serial number: %c%d"
+#~ msgstr "[SSL]: Número de série: %c%d"
+
+#~ msgid "[SSL]: Subject:"
+#~ msgstr "[SSL]: Assunto"
+
+#~ msgid "[SSL]: Common name: %c%s"
+#~ msgstr "[SSL]: Nome comum: %c%s"
+
+#~ msgid "[SSL]: Organization: %c%s"
+#~ msgstr "[SSL]:: Organização: %c%s"
+
+#~ msgid "[SSL]: Organizational unit: %c%s"
+#~ msgstr "[SSL]: Unidade organizacional: %c%s"
+
+#~ msgid "[SSL]: Country: %c%s"
+#~ msgstr "[SSL]: País: %c%s"
+
+#~ msgid "[SSL]: State or province: %c%s"
+#~ msgstr "[SSL]: Estado ou província: %c%s"
+
+#~ msgid "[SSL]: Locality: %c%s"
+#~ msgstr "[SSL]: Localidade: %c%s"
+
+#~ msgid "[SSL]: Issuer:"
+#~ msgstr "[SSL]: Emissor:"
+
+#~ msgid "[SSL]: Public key: %c%s (%d bits)"
+#~ msgstr "[SSL]: Chave pública : %c%s (%d bits)"
+
+#~ msgid "[SSL]: Signature type: %c%s"
+#~ msgstr "[SSL]: Tipo da assinatura: %c%s"
+
+#~ msgid "[SSL]: Signature contents: %c%s"
+#~ msgstr "[SSL]: Conteúdo da assinatura: %c%s"
+
+#~ msgid "Peer X509 certificate"
+#~ msgstr "Ponta X509 certificada"
+
+#~ msgid "[SSL]: The peer didn't provide a certificate"
+#~ msgstr "[SSL]: A ponta não forneceu um certificado"
+
+#~ msgid "Current transmission cipher"
+#~ msgstr "Cifra atual da transmissão"
+
+#~ msgid "[SSL]: Can't find out the current cipher info"
+#~ msgstr "[SSL]: Não foi possível encontrar fora a informação da cifra atual "
+
+#~ msgid "[%s]: [SSL]: Using certificate file %s"
+#~ msgstr "[%s]: [SSL]: Usando arquivo de certificado %s"
+
+#~ msgid ""
+#~ "[%s]: [SSL ERROR]: File I/O error while trying to use the certificate "
+#~ "file %s"
+#~ msgstr ""
+#~ "[%s]: [ERRO de SSL]: Erro de E/S de arquivo enquanto tentava-se usar o "
+#~ "arquivo de certificado %s"
+
+#~ msgid "[%s]: [SSL ERROR]: %s"
+#~ msgstr "[%s]: [ERRO de SSL]: %s"
+
+#~ msgid "[%s]: [SSL]: Using private key file %s"
+#~ msgstr "[%s]: [SSL]: Usando arquivo de chave privada %s"
+
+#~ msgid ""
+#~ "[%s]: [SSL ERROR]: File I/O error while trying to use the private key "
+#~ "file %s"
+#~ msgstr ""
+#~ "[%s]: [ERRO de SSL]: Erro de E/S de arquivo enquanto tentava-se usar o "
+#~ "arquivo de chave privada %s"
+
+#~ msgid "Ops... for some reason the link object has been destroyed"
+#~ msgstr "Opa... por alguma razão o objeto de ligação foi destruido"
+
+#~ msgid "Using filtered IRC protocol: Link filter is \"%Q\""
+#~ msgstr "Usando protocolo IRC filtrado: O filtro de link é \"%Q\""
+
+#~ msgid "Failed to set up the link filter \"%Q\", will try with plain IRC"
+#~ msgstr "Falha ao iniciar filtro de link \"%Q\", se tentará com IRC puro"
+
+#~ msgid "Failed to start the connection: %Q"
+#~ msgstr "Falha ao iniciar a conexão: %Q"
+
+#~ msgid "Contacting %Q %s (%s) on port %u"
+#~ msgstr "Contactando %Q %s (%s) na porta %u"
+
+#~ msgid "proxy host"
+#~ msgstr "Servidor proxy"
+
+#~ msgid "IRC server"
+#~ msgstr "Servidor IRC"
+
+#~ msgid "Low-level transport connection established [%s (%s:%u)]"
+#~ msgstr "Estabelecida conexão de transporte de baixo nível [%s (%s:%u)]"
+
+#~ msgid "Starting Secure Socket Layer handshake"
+#~ msgstr "Iniciando negociação do Secure Socket Layer"
+
+#~ msgid "%Q established [%s (%s:%u)]"
+#~ msgstr "%Q estabelecida [%s (%s:%u)]"
+
+#~ msgid "Secure proxy connection"
+#~ msgstr "Conexão de proxy segura"
+
+#~ msgid "Proxy connection"
+#~ msgstr "Conexão de proxy"
+
+#~ msgid "Negotiating relay information"
+#~ msgstr "Negociando informoção de retransmissão"
+
+#~ msgid "Sent connection request, waiting for acknowledgement"
+#~ msgstr "Pedido de conexão enviado, esperando a confirmação"
+
+#~ msgid "Sent target host data, waiting for acknowledgement"
+#~ msgstr "Dados enviados à maquina de destino, esperando a confirmação"
+
+#~ msgid "Sent auth method request, waiting for acknowledgement"
+#~ msgstr "Enviado pedido de autenticação, esperando a confirmação"
+
+#~ msgid "Sent username and password, waiting for acknowledgement"
+#~ msgstr "Enviados usuário e senha, esperando a confirmação"
+
+#~ msgid "Sent connection request, waiting for \"HTTP 200\" acknowledgement"
+#~ msgstr "Enviado pedido de conexão, esperando a confirmação \"HTTP 200\""
+
+#~ msgid "[SSL]: %Q"
+#~ msgstr "[SSL]: %Q"
+
+#~ msgid "[SSL ERROR]: %Q"
+#~ msgstr "[ERROR de SSL ]: %Q"
+
+#~ msgid "[PROXY]: %Q"
+#~ msgstr "[PROXY]: %Q"
+
+#~ msgid "[PROXY ERROR]: %Q"
+#~ msgstr "[ERROR de PROXY]: %Q"
+
+#~ msgid "[SOCKET]: %Q"
+#~ msgstr "[SOCKET]: %Q"
+
+#~ msgid "[SOCKET ERROR]: %Q"
+#~ msgstr "[ERRO DE SOCKET]: %Q"
+
+#~ msgid "[SOCKET WARNING]: %Q"
+#~ msgstr "[AVISO DE SOCKET]: %Q"
+
+#~ msgid "Binding to local address %s"
+#~ msgstr "Associando ao endereço %s "
+
+#~ msgid ""
+#~ "Binding to local address %s failed: the kernel will choose the correct "
+#~ "interface"
+#~ msgstr ""
+#~ "Associação ao endereço local %s falhou : o núcleo escolherá a "
+#~ "corretainterface"
+
+#~ msgid "Using HTTP protocol."
+#~ msgstr "Usando protocolo HTTP"
+
+#~ msgid "Using SOCKSV4 protocol."
+#~ msgstr "Usando protocolo SOCKSV4."
+
+#~ msgid "Using SOCKSV5 protocol."
+#~ msgstr "Usando protocolo SOCKSV5."
+
+#~ msgid "We can accept auth method 0 (no auth)"
+#~ msgstr "Podemos aceitar o método 0 do auth (sem auth)"
+
+#~ msgid "We can accept auth method 0 (no auth) or 2 (user/pass)"
+#~ msgstr "Podemos aceitar o método 0 do auth (sem auth) ou 2 (usuário/senha)"
+
+#~ msgid "Proxy response: auth OK: access granted"
+#~ msgstr "Resposta do proxy: auth OK : acesso garantido"
+
+#~ msgid "Proxy response: Auth method OK: using method 0 (no auth)"
+#~ msgstr "Resposta do proxy: Método auth Ok usando método 0 (sem auth)"
+
+#~ msgid "Proxy response: Auth method OK: using method 2 (user/pass)"
+#~ msgstr "Resposta do proxy: Método auth Ok usando método 2 (usuário/senha)"
+
+#~ msgid "Proxy response: target data OK: request granted"
+#~ msgstr "Resposta do proxy: dados de destino OK: pedido garantido"
+
+#~ msgid "Proxy response: "
+#~ msgstr "Resposta do Proxy:"
+
+#~ msgid "Proxy said something about \""
+#~ msgstr "O proxy disse algo sobre \""
+
+#~ msgid "\" ...that looks like an error to me..."
+#~ msgstr "\" ...isso me parece um erro..."
+
+#~ msgid "Server X509 certificate"
+#~ msgstr "Servidor X509 certificado"
+
+#~ msgid "The server didn't provide a certificate"
+#~ msgstr "O Servidor não provê um certificado"
+
+#~ msgid "Unable to determine the current cipher"
+#~ msgstr "Impossível de determinar a cifra atual"
+
+#~ msgid "Partial socket write: packet broken into smaller pieces."
+#~ msgstr "Escrita parcial em socket: pacote dividido em partes menores"
+
+#~ msgid "Installation problems ?"
+#~ msgstr "Problemas na instalação ?"
+
+#~ msgid ""
+#~ "<b>Ooops...</b><br><br><b>There are some reasons that make me think that "
+#~ "your KVIrc installation is incomplete.</b><br><br>I might be wrong, but "
+#~ "you seem to miss some of the features that the default KVIrc script "
+#~ "provides.This may happen because you have upgraded to an unstable cvs "
+#~ "version, because you have accidentally deleted or damaged your "
+#~ "configuration files, because you have installed an incomplete script or "
+#~ "because you have hit a bug in KVIrc.<br><br>I can repeat the installation "
+#~ "of the default script in order to restore the missing features.<br><b>Do "
+#~ "you want the default script to be restored ?</b><br><br><font size=\"-1"
+#~ "\">Hint: If you're a scripter and have intentionally removed some of the "
+#~ "scripting features then you may safely click on \"No and Don't Ask Me "
+#~ "Again\", otherwise it might be a good idea to click \"Yes\". If you still "
+#~ "want to choose \"No\" you can always restore the default script by "
+#~ "choosing the appropriate entry from the \"Scripting\" menu.</font>"
+#~ msgstr ""
+#~ "<b>Ooopa...</b><br><br><b>Por alguma razão me fez pensar que a sua "
+#~ "instalação do KVirc não está completa.</b><br><br>Eu posso estar errado, "
+#~ "mas parecem faltar algumas opções que o script padrão do KVirc fornece. "
+#~ "Isto pode acontecer porque vocêatualizou para uma versão cvs instável, "
+#~ "porque acidentalmente você apagou ou danificou os seus arquivos de "
+#~ "configuração, porque você instalou um script incompleto ou porque você "
+#~ "encontrou algum erro no KVirc.<br><br>Eu posso repetir a instalação do "
+#~ "script padrão para restaurar as opções que faltam. <br><b>Deseja "
+#~ "restaurar o script padrão ?</b><br><br><font size=\"-1\">Nota: se você "
+#~ "for um programador e removeu intencionalmente algumas opções do script "
+#~ "pode seguramente clicar em \"Não e Não me pergunte novamente\", ou pode "
+#~ "ser uma boa ideia clicar em \"Sim\". Se ainda quiser escolher \"Não\" "
+#~ "sempre poderá restaurar o script padrão ao escolher a entrada apropriada "
+#~ "no menu \"Scripting\".</font>"
+
+#~ msgid "No and Don't Ask Me Again"
+#~ msgstr "Não e Não me pergunte novamente."
+
+#~ msgid "Restore Default Script - KVIrc"
+#~ msgstr "Restaurar Script Padrão - KVIrc"
+
+#~ msgid ""
+#~ "You are about to restore the default script.<br>This will erase any "
+#~ "script changes you have made.<br>Do you wish to proceed?"
+#~ msgstr ""
+#~ "Você está prestes a restaurar o script padrão.<br>Isto apagará todas as "
+#~ "mudanças no script que voce tenha feito.<br>Você deseja proseguir? "
+
+#~ msgid "Remote command received (%s ...)"
+#~ msgstr "Comando remoto recebido (%s ...)"
+
+#~ msgid "File download failed"
+#~ msgstr "Download do arquivo falhou"
+
+#~ msgid "File download from %1 failed"
+#~ msgstr "Download do arquivo de %1 falhou "
+
+#~ msgid "File download terminated"
+#~ msgstr "Download do arquivo terminou"
+
+#~ msgid "File download from %1 terminated"
+#~ msgstr "Download do arquivo de %1 terminou"
+
+#~ msgid "Avatar download failed for %Q!%Q@%Q and url %Q: %Q"
+#~ msgstr "Download do avatar falhou para %Q!%Q@%Q e url %Q: %Q"
+
+#~ msgid "The commandline for media type '%s' seems to be broken"
+#~ msgstr "A linha de comando para tipo de mídia '%s' parece estar quebrada"
+
+#~ msgid "Media type of file %s matched to '%s' but no commandline specified"
+#~ msgstr ""
+#~ "O tipo de mídia %s é semelhante a '%s' mas a linha de comando não foi "
+#~ "especificada"
+
+#~ msgid "No idea on how to play file %s (no media type match)"
+#~ msgstr ""
+#~ "Sem idéia de como reproduzir o arquivo %s (Tipo de mídia não reconhecida)"
+
+#~ msgid "Sending out PING based lag probe"
+#~ msgstr "Enviando um PING baseado na verificação do lag"
+
+#~ msgid "Sending out CTCP based lag probe"
+#~ msgstr "Enviando um CTCP baseado na verificação do lag"
+
+#~ msgid "Registered lag check with reliability %u (%s)"
+#~ msgstr "Verificação do lag registada com confiabilidade %u (%s)"
+
+#~ msgid "Lag check completed (%s)"
+#~ msgstr "Verificação do lag completa (%s)"
+
+#~ msgid "Lag check aborted (%s)"
+#~ msgstr "Verificação do lag abortaeda (%s)"
+
+#~ msgid "Backward compatibility action for toolbar.define"
+#~ msgstr "Ação de compatibilidade inversa para toolbar.define"
+
+#~ msgid "IRC Context related actions"
+#~ msgstr "Ações Relacionadas ao Contexto de IRC"
+
+#~ msgid "Generic"
+#~ msgstr "Genérico"
+
+#~ msgid "Generic actions"
+#~ msgstr "Ações genéricas"
+
+#~ msgid "Settings"
+#~ msgstr "Configurações"
+
+#~ msgid "Actions related to settings"
+#~ msgstr "Acões relacionadas às configurações"
+
+#~ msgid "Scripting"
+#~ msgstr "Scripting"
+
+#~ msgid "Scripting related actions"
+#~ msgstr "Acões relacionadas ao Scripting"
+
+#~ msgid "GUI"
+#~ msgstr "GUI"
+
+#~ msgid "Actions related to the Graphic User Interface"
+#~ msgstr "Acões relacionadas à Interface Gráfica do Usuário (GUI)"
+
+#~ msgid "IRC Channel related actions"
+#~ msgstr "Ações Relacionadas ao Contexto de IRC"
+
+#~ msgid "Actions that will appear in the \"Tools\" menu"
+#~ msgstr "Ações que aparecerão no menu \"Ferramentas\""
+
+#~ msgid "Reconnect attempt aborted"
+#~ msgstr "Tentativa de reconexão abortada"
+
+#~ msgid ""
+#~ "No servers available. Check the options dialog or use the /SERVER command"
+#~ msgstr ""
+#~ "Não existem servidores disponíveis. Verifique o diálogo de opções ou "
+#~ "utilize o comando /SERVER"
+
+#~ msgid "No proxy hosts available, resuming direct connection"
+#~ msgstr ""
+#~ "Não existem servidores proxy disponíveis, continuando conexão direta"
+
+#~ msgid "Connection attempt failed [%s]"
+#~ msgstr "A tentativa de conexão falhou [ %s ]"
+
+#~ msgid "Will attempt to reconnect in %d seconds"
+#~ msgstr "Tentar reconectar em %d segundos"
+
+#~ msgid "%d of %d"
+#~ msgstr "%d de %d"
+
+#~ msgid "Maximum number of reconnect attempts reached (%d): giving up"
+#~ msgstr ""
+#~ "O número máximo de tentativas para reconectar chegaram a (%d): desistindo"
+
+#~ msgid ""
+#~ "The connection attempt failed while using a cached IP address for the "
+#~ "current server"
+#~ msgstr ""
+#~ "A tentativa de conexão falhou enquanto se utiizava um endereço IP "
+#~ "armazenado para o servidor atual "
+
+#~ msgid "The problem *might* be caused by an updated DNS entry"
+#~ msgstr "O problema *poderia* ser causado por uma entrada DNS atualizada"
+
+#~ msgid "Try reconnecting with caching disabled"
+#~ msgstr "Tentando reconectar com armazenamento desabilitado"
+
+#~ msgid "Secure connection"
+#~ msgstr "Conexão segura"
+
+#~ msgid "Connection terminated [%s (%s:%u)]"
+#~ msgstr "Conexão terminada [%s (%s:%u)]"
+
+#~ msgid "The connection terminated unexpectedly. Trying to reconnect..."
+#~ msgstr "A conexão terminou inesperadamente, tentando reconectar..."
+
+#~ msgid "Sent QUIT, waiting for the server to close the connection..."
+#~ msgstr "QUIT enviado, esperando servidor fechar a conexão..."
+
+#~ msgid "No "
+#~ msgstr "Não "
+
+#~ msgid " symbol exported: not a kvirc module ?"
+#~ msgstr " símbolo exportado: não é um módulo do kvirc?"
+
+#~ msgid "This module has no version informations: refusing to load it"
+#~ msgstr ""
+#~ "Este módulo não tem informação de versão: recusando seu carregamento"
+
+#~ msgid ""
+#~ "This module was compiled for a different KVIrc version and can't be loaded"
+#~ msgstr ""
+#~ "Este módulo foi compilado para uma versão diferente do KVirc e não pode "
+#~ "ser carregado"
+
+#~ msgid "Failed to execute the init routine"
+#~ msgstr "Falha ao executar a rotina de inicialização"
+
+#~ msgid "Loaded module '%s' (%s)"
+#~ msgstr "Módulo carregado '%s' (%s)"
+
+#~ msgid "Unloaded module '%s'"
+#~ msgstr "Módulo descarregado '%s'"
+
+#~ msgid "This option is also available as"
+#~ msgstr "Esta opção também está disponível como"
+
+#~ msgid "Channel mode"
+#~ msgstr "Modos do Canal"
+
+#~ msgid "Split View"
+#~ msgstr "Visão Separada"
+
+#~ msgid "User List"
+#~ msgstr "Lista de Usuários"
+
+#, fuzzy
+#~ msgid "Ban Editor"
+#~ msgstr "Editor de Raw"
+
+#, fuzzy
+#~ msgid "Ban Exception Editor"
+#~ msgstr "Exibir Editor de Execeções de Bans"
+
+#, fuzzy
+#~ msgid "Invite Exception Editor"
+#~ msgstr "Exibir Editor de Execeção de Convite"
+
+#, fuzzy
+#~ msgid "Mode Editor"
+#~ msgstr "Exibir Editor de Modos"
+
+#~ msgid "said something recently"
+#~ msgstr "disse alguma coisa recentemente"
+
+#~ msgid "is talking"
+#~ msgstr "está falando"
+
+#~ msgid "and"
+#~ msgstr "e"
+
+#~ msgid "were talking recently"
+#~ msgstr "esteve/estiveram falando recentemente"
+
+#~ msgid "are talking"
+#~ msgstr "estão falando"
+
+#~ msgid "and other %1 users"
+#~ msgstr "e outros %1 usuários"
+
+#~ msgid "Dead channel"
+#~ msgstr "Canal morto"
+
+#~ msgid "operator"
+#~ msgstr "operador"
+
+#~ msgid "operators"
+#~ msgstr "operadores"
+
+#~ msgid "active user"
+#~ msgstr "usuário ativo"
+
+#~ msgid "active users"
+#~ msgstr "usuários ativos"
+
+#~ msgid "hot user"
+#~ msgstr "usuário quente"
+
+#~ msgid "hot users"
+#~ msgstr "usuários quentes"
+
+#~ msgid "channel owner"
+#~ msgstr "proprietário do canal"
+
+#~ msgid "channel owners"
+#~ msgstr "proprietários do canal"
+
+#~ msgid "channel administrator"
+#~ msgstr "Administrador do canal"
+
+#~ msgid "channel administrators"
+#~ msgstr "Administradores do canal"
+
+#~ msgid "half-operator"
+#~ msgstr "meio-operador"
+
+#~ msgid "half-operators"
+#~ msgstr "meio-operadores"
+
+#~ msgid "voiced user"
+#~ msgstr "usuário com voice"
+
+#~ msgid "voiced users"
+#~ msgstr "Usuários com voice"
+
+#~ msgid "user-operator"
+#~ msgstr "usuário-operador"
+
+#~ msgid "user-operators"
+#~ msgstr "usuários-operadores"
+
+#~ msgid "user total"
+#~ msgstr "usuário total"
+
+#~ msgid "users total"
+#~ msgstr "usuários totais"
+
+#~ msgid "No activity"
+#~ msgstr "Sem atividade"
+
+#~ msgid "Minimal activity"
+#~ msgstr "Atividade mínima"
+
+#~ msgid "Very low activity"
+#~ msgstr "Atividade muito baixa "
+
+#~ msgid "Might be low activity"
+#~ msgstr "Pode ser baixa atividade"
+
+#~ msgid "Low activity"
+#~ msgstr "Baixa atividade"
+
+#~ msgid "Might be medium activity"
+#~ msgstr "Pode ser atividade média"
+
+#~ msgid "Medium activity"
+#~ msgstr "Atividade média"
+
+#~ msgid "Might be high activity"
+#~ msgstr "Pode ser alta atividade"
+
+#~ msgid "High activity"
+#~ msgstr "Alta atividade"
+
+#~ msgid "Might be very high activity"
+#~ msgstr "Pode ser atividade muito alta "
+
+#~ msgid "Very high activity"
+#~ msgstr "Atividade muito alta "
+
+#~ msgid "Might be flooded with messages"
+#~ msgstr "Pode ser floodado/inundado com mensagens"
+
+#~ msgid "Flooded with messages"
+#~ msgstr "Flooded/inundado com mensagens"
+
+#~ msgid "human"
+#~ msgstr "humano"
+
+#~ msgid "[Dead channel]"
+#~ msgstr "[Canal morto]"
+
+#~ msgid " on "
+#~ msgstr " em "
+
+#~ msgid ""
+#~ "The crypto engine was unable to encrypt the current message (%Q): %s, no "
+#~ "data sent to the server"
+#~ msgstr ""
+#~ "O motor de criptografia foi incapaz de criptografar a mensagem atual (%"
+#~ "Q): %s, nenhum dado enviado para o servidor"
+
+#~ msgid "Sent part request, waiting for reply..."
+#~ msgstr "Enviado pedido de PART, aguardando resposta..."
+
+#~ msgid "<b>Channel mode:</b>"
+#~ msgstr "<b>Modos do Canal:</b>"
+
+#~ msgid "<br><b>Key:</b> %s"
+#~ msgstr "<br><b>Chave:</b> %s"
+
+#~ msgid "<br><b>Limit:</b> %s"
+#~ msgstr "<br><b>Limite:</b> %s"
+
+#~ msgid "Channel synchronized in %d.%d seconds"
+#~ msgstr "Canal sincronizado em %d.%d segundos"
+
+#~ msgid "No topic message has been received from the server yet"
+#~ msgstr "Nenhuma mensagem do tópico foi recebida do servidor ainda"
+
+#~ msgid "Channel topic:"
+#~ msgstr "Tópico do Canal:"
+
+#~ msgid "Set by"
+#~ msgstr "Colocado pôr"
+
+#~ msgid "Set on"
+#~ msgstr "Posto em"
+
+#~ msgid "Double-click to edit..."
+#~ msgstr "Dois cliques para editar..."
+
+#~ msgid "No topic is set"
+#~ msgstr "Nenhum tópico definido"
+
+#~ msgid "Double-click to set..."
+#~ msgstr "Clique duas vezes para definir..."
+
+#, fuzzy
+#~ msgid "History"
+#~ msgstr "diretório"
+
+#~ msgid "Commit Changes"
+#~ msgstr "Aplicar Mudanças"
+
+#~ msgid "Discard Changes"
+#~ msgstr "Cancelar Mudanças"
+
+#~ msgid "Copy to clipboard"
+#~ msgstr "Copiar para a Área de Transferência"
+
+#~ msgid "CTCP Page - KVIrc"
+#~ msgstr "CTCP Page - KVIrc"
+
+#~ msgid "Active Bans"
+#~ msgstr "Bans Ativos"
+
+#~ msgid "Active Invite Exceptions"
+#~ msgstr "Exceções de convites ativas"
+
+#~ msgid "Active Ban Exceptions"
+#~ msgstr "Exceções de Bans ativas"
+
+#~ msgid "Mask"
+#~ msgstr "Máscara"
+
+#~ msgid "Set at"
+#~ msgstr "Posto em"
+
+#~ msgid "Window List"
+#~ msgstr "Lista de Janelas"
+
+#~ msgid ""
+#~ "<b>Shift+Drag</b> or <b>Ctrl+Drag</b> to move the applet "
+#~ "around<br><b>Right click</b> to see the other options"
+#~ msgstr ""
+#~ "<b>Shift+Arraste</b> ou <b>Ctrl+Arraste</b> para mover a applet ao "
+#~ "redor<br><b>Clique com o botão direito </b> para ver as outras opções"
+
+#~ msgid "<b>Right click</b> to add/remove applets"
+#~ msgstr "<b>Clique com o botão direito</b> para adicionar/remover applets"
+
+#~ msgid "Remove %Q"
+#~ msgstr "Remover %Q"
+
+#~ msgid "Add Applet"
+#~ msgstr "Adicionar Applet"
+
+#~ msgid ""
+#~ "Drag the applet while holding the Shift or Ctrl key to move it to the "
+#~ "desired position"
+#~ msgstr ""
+#~ "Arraste a applet enquanto pressiona a tecla Shift ou Ctrl para a mover "
+#~ "para a posição desejada"
+
+#~ msgid "Connection in progress..."
+#~ msgstr "Conexão em progresso..."
+
+#~ msgid "Login in progress..."
+#~ msgstr "Login em progresso..."
+
+#~ msgid "Not connected"
+#~ msgstr "Desconectado"
+
+#~ msgid "No IRC context"
+#~ msgstr "Sem contexto de IRC"
+
+#, fuzzy
+#~ msgid "Crypting"
+#~ msgstr "Criptografia"
+
+#~ msgid "Private Text Encoding"
+#~ msgstr "Codificação de Texto Privada"
+
+#~ msgid "Ops...I've accidentally lost the crypting engine..."
+#~ msgstr "Opa... eu perdi acidentalmente o motor de crypting..."
+
+#~ msgid "List of window types available in this release of KVIrc:"
+#~ msgstr "Lista dos tipos da janela disponíveis nesta liberação de KVIrc:"
+
+#~ msgid "Use Default Encoding"
+#~ msgstr "Usar Codificação Padrão"
+
+#~ msgid "Standard"
+#~ msgstr "Padrão"
+
+#~ msgid "Smart"
+#~ msgstr "Esperto"
+
+#~ msgid "&Undock"
+#~ msgstr "&Desacoplar a janela"
+
+#~ msgid "&Dock"
+#~ msgstr "&Acoplar a janela"
+
+#~ msgid "Mi&nimize"
+#~ msgstr "Mi&nimizar"
+
+#~ msgid "Ma&ximize"
+#~ msgstr "Ma&ximizar"
+
+#~ msgid "&Restore"
+#~ msgstr "&Restaurar"
+
+#~ msgid "Text &Encoding"
+#~ msgstr "&Codificação do Texto"
+
+#~ msgid "Sa&ve Window Properties"
+#~ msgstr "Sal&var Propriedades da Janela"
+
+#~ msgid "Search tools"
+#~ msgstr "Ferrametas de pesquisa"
+
+#~ msgid "### Log session terminated at %s ###"
+#~ msgstr "### Sessão de log terminada em %s ###"
+
+#~ msgid "### Log session started at %s ###"
+#~ msgstr "### Sessão de log iniciada em %s ###"
+
+#~ msgid "### Existing data buffer:"
+#~ msgstr "### Buffer de dados existente:"
+
+#~ msgid "### End of existing data buffer."
+#~ msgstr "### Fim do buffer de dados existentes"
+
+#~ msgid "Hide Find Window"
+#~ msgstr "Ocultar Janela de Procura"
+
+#~ msgid "Show Find Window"
+#~ msgstr "Exibir Janela de Procura"
+
+#~ msgid "Zoom In"
+#~ msgstr "Ampliar"
+
+#~ msgid "Zoom Out"
+#~ msgstr "Reduzir"
+
+#~ msgid "Choose Temporary Font..."
+#~ msgstr "Escolha a Fonte Temporária..."
+
+#~ msgid "Choose Temporary Background..."
+#~ msgstr "Escolha um Plano de Fundo Temporário..."
+
+#~ msgid "Reset Temporary Background"
+#~ msgstr "Restaurar Plano de Fundo Temporário..."
+
+#~ msgid "Clear Buffer"
+#~ msgstr "Limpar Buffer"
+
+#~ msgid "Choose the background image..."
+#~ msgstr "Escolha a imagem de fundo..."
+
+#~ msgid "Invalid image"
+#~ msgstr "imagem inválida"
+
+#~ msgid "Failed to load the selected image"
+#~ msgstr "Falhou ao carregar a imagem selecionada"
+
+#~ msgid "Pos %d"
+#~ msgstr "Pos %d"
+
+#~ msgid "Not found"
+#~ msgstr "Não encontrado"
+
+#~ msgid "Looking up host %Q..."
+#~ msgstr "Localizando máquina %Q..."
+
+#~ msgid "Double-click to open this link"
+#~ msgstr "Clique duas vezes para abrir esta ligação"
+
+#~ msgid "Unable to look it up hostname: Hostname appears to be masked"
+#~ msgstr ""
+#~ "Não foi possível encontrar o nome da máquina: o nome da máquina parece "
+#~ "estar máscarado"
+
+#~ msgid "Unable to look it up hostname: Unknown host"
+#~ msgstr ""
+#~ "Não foi possível encontrar o nome da máquina: nome de máquina desconhecido"
+
+#~ msgid ""
+#~ "Double-click to look up this hostname<br>Right-click to view other options"
+#~ msgstr ""
+#~ "Clique duas vezes para procurar este nome de máquina<br>Clique com o "
+#~ "botão direito para ver outras opcões"
+
+#~ msgid "Server appears to be a network hub<br>"
+#~ msgstr "O servidor parece ser um centro de rede (hub)<br>"
+
+#~ msgid "Unknown server<br>"
+#~ msgstr "Servidor desconhecido<br>"
+
+#~ msgid "Double-click to read the MOTD<br>Right-click to view other options"
+#~ msgstr ""
+#~ "Clique duas vezes para ler o MOTD<br>Clique com o botão direito para "
+#~ "outras opções"
+
+#~ msgid "Double-click to set<br>"
+#~ msgstr "Clique duas vezes para definir<br>"
+
+#~ msgid "You're not an operator: You may not change channel modes"
+#~ msgstr "Você não é um operador: Você não pode alterar os modos do canal"
+
+#~ msgid "Nothing known about %Q"
+#~ msgstr "Não sabe-se nada sobre %Q"
+
+#~ msgid "Nothing known about %Q (no connection)"
+#~ msgstr "Não sabe-se nada sobre %Q (no connection)"
+
+#~ msgid "<b>%Q</b>: +%Q (%u users)<hr>%Q"
+#~ msgstr "<b>%Q</b>: +%Q (%u usuários)<hr>%Q"
+
+#~ msgid "Double-click to join %Q<br>Right click to view other options"
+#~ msgstr ""
+#~ "Clique duas vezes para entrar %Q<br>Clique com o botão direito para "
+#~ "outras opções"
+
+#~ msgid "<b>Double-click:</b><br>%Q"
+#~ msgstr "<b>Clique duplo:</b><br>%Q"
+
+#~ msgid "<b>Middle-click:</b><br>%Q"
+#~ msgstr "<b>Clique com o botão do meio:</b><br>%Q"
+
+#~ msgid "<b>Right-click:</b><br>%Q"
+#~ msgstr "<b>Clique com botão direito:</b><br>%Q"
+
+#~ msgid "Toolbars"
+#~ msgstr "Barras de ferramentas"
+
+#~ msgid "Orientation"
+#~ msgstr "Orientação"
+
+#~ msgid "Detached"
+#~ msgstr "Desatachado"
+
+#~ msgid "Flat"
+#~ msgstr "Liso"
+
+#~ msgid "Icon Size"
+#~ msgstr "Tamanho do Icone"
+
+#~ msgid "Small (22x22)"
+#~ msgstr "Pequeno (22x22)"
+
+#~ msgid "Large (32x32)"
+#~ msgstr "Grande (32x32)"
+
+#~ msgid "Show User List"
+#~ msgstr "Exibir Lista de Usuários"
+
+#~ msgid "Query Targets"
+#~ msgstr "Destinos do Query"
+
+#, fuzzy
+#~ msgid "Query target:"
+#~ msgstr "Destinos do Query"
+
+#, fuzzy
+#~ msgid "%1 is using irc server: %2 (%3 hops)"
+#~ msgstr "Usando servidor <b>%1</b>"
+
+#, fuzzy
+#~ msgid "%1 is using irc server: %2"
+#~ msgstr "Usando servidor <b>%1</b>"
+
+#, fuzzy
+#~ msgid "[Dead Query]"
+#~ msgstr "[Query morto]"
+
+#, fuzzy
+#~ msgid ", using server %1"
+#~ msgstr "Usando servidor <b>%1</b>"
+
+#, fuzzy
+#~ msgid " (%1 hops)"
+#~ msgstr "%1 saltos"
+
+#, fuzzy
+#~ msgid "Common channels: %2"
+#~ msgstr "Entrar nos Canais"
+
+#~ msgid ""
+#~ "The target of this query has changed from \r!n\r%Q\r [%Q@\r!h\r%Q\r] to "
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+#~ msgstr ""
+#~ "O destino deste query foi alterado de \r!n\r%Q\r [%Q@\r!h\r%Q\r] para \r!n"
+#~ "\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#~ msgid "Common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "Canais em comum com \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid "No common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+#~ msgstr "Nenhum canal em comum com \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#~ msgid "[Dead query]"
+#~ msgstr "[Query morto]"
+
+#~ msgid "This query has no active targets, no message sent"
+#~ msgstr ""
+#~ "O usuário deste query não está mais online, nenhuma mensagem enviada"
+
+#~ msgid "No connection"
+#~ msgstr "Desconectado"
+
+#~ msgid "IRC Context"
+#~ msgstr "Contexto de IRC"
+
+#~ msgid "Lag: %d.%d%d"
+#~ msgstr "Lag: %d.%d%d"
+
+#~ msgid "Lag: ?.??"
+#~ msgstr "Lag: ?.??"
+
+#~ msgid "away"
+#~ msgstr "ausente"
+
+#~ msgid "In progress..."
+#~ msgstr "Em progresso..."
+
+#~ msgid "Clipboard"
+#~ msgstr "Área de Transferência"
+
+#~ msgid "line break"
+#~ msgstr "quebra de linha"
+
+#~ msgid "line breaks"
+#~ msgstr "quebras de linha"
+
+#~ msgid "&Paste"
+#~ msgstr "C&olar"
+
+#~ msgid "Paste (Slowly)"
+#~ msgstr "Colar (Devagar)"
+
+#~ msgid "Paste &File"
+#~ msgstr "Colar &Arquivo"
+
+#~ msgid "Stop Paste"
+#~ msgstr "Parar Colagem"
+
+#~ msgid "Clear"
+#~ msgstr "Limpar"
+
+#~ msgid "Select All"
+#~ msgstr "Selecionar todos"
+
+#~ msgid "%d matches: %Q"
+#~ msgstr "%d combina com: %Q"
+
+#~ msgid "No matches"
+#~ msgstr "Sem combinaçoes"
+
+#~ msgid "Show History<br>&lt;Ctrl+PageUp&gt;"
+#~ msgstr "Exibir Histórico<br>&lt;Ctrl+PageUp&gt;"
+
+#~ msgid "Input History Disabled"
+#~ msgstr "Entrada de Histórico Desativada"
+
+#~ msgid "Show Icons Popup<br>&lt;Ctrl+I&gt;<br>See also /help texticons"
+#~ msgstr ""
+#~ "Exibir Popup de Ícones<br>&lt;Ctrl+I&gt;<br>Ver também /help texticons"
+
+#~ msgid "Multi-line Editor<br>&lt;Ctrl+Backspace&gt;"
+#~ msgstr "Editor Multi-linha<br>&lt;Ctrl+Backspace&gt;"
+
+#~ msgid "Confirm Multiline Message"
+#~ msgstr "Confirmar Mensagem Multilinhas"
+
+#~ msgid ""
+#~ "You're about to send a message with %1 lines of text.<br><br>There is "
+#~ "nothing wrong with it, this warning is<br>here to prevent you from "
+#~ "accidentally sending<br>a really large message just because you didn't "
+#~ "edit it<br>properly after pasting text from the clipboard.<br><br>Do you "
+#~ "want the message to be sent?"
+#~ msgstr ""
+#~ "Você está prestes a enviar uma mensagem com %1 linhas de texto."
+#~ "<br><br>Não há nenhum problema, este aviso <br>aqui é para o prevenir "
+#~ "enviar de acidentalmente <br> uma mensagem muito comprida só porque não a "
+#~ "editou<br> devidamente antes de ter colado o texto da área de "
+#~ "transferência. <br><br>Deseja que a mensagem seja enviada?"
+
+#~ msgid "Yes, always"
+#~ msgstr "Sim, sempre"
+
+#, fuzzy
+#~ msgid "<Ctrl+Return>; submits, <Ctrl+Backspace>; hides this editor"
+#~ msgstr ""
+#~ "&lt;Ctrl+Return&gt; envia, &lt;Ctrl+Backspace&gt; Oculta este editor"
+
+#~ msgid "&Cascade Windows"
+#~ msgstr "Janela em &Cascata"
+
+#~ msgid "Cascade &Maximized"
+#~ msgstr "Cascata &maximizada"
+
+#~ msgid "&Tile Windows"
+#~ msgstr "Janelas &Lado a Lado"
+
+#~ msgid "&Auto Tile"
+#~ msgstr "Lado a Lado &Automático"
+
+#~ msgid "Anodine's Full Grid"
+#~ msgstr "Grade-cheia do Anodine"
+
+#~ msgid "Pragma's Horizontal 4-Grid"
+#~ msgstr "4-Grades Horizontais do Pragma"
+
+#~ msgid "Pragma's Vertical 4-Grid"
+#~ msgstr "4-Grades Verticais do Pragma"
+
+#~ msgid "Pragma's Horizontal 6-Grid"
+#~ msgstr "6-Grades Horizontais do Pragma"
+
+#~ msgid "Pragma's Vertical 6-Grid"
+#~ msgstr "6-Grades Verticais do Pragma"
+
+#~ msgid "Pragma's Horizontal 9-Grid"
+#~ msgstr "9-Grades Horizontais do Pragma"
+
+#~ msgid "Pragma's Vertical 9-Grid"
+#~ msgstr "9-Grades Verticais do Pragma"
+
+#~ msgid "Tile Met&hod"
+#~ msgstr "Mét&odos Lado a Lado"
+
+#~ msgid "Expand &Vertically"
+#~ msgstr "Expandir &verticalmente"
+
+#~ msgid "Expand &Horizontally"
+#~ msgstr "Expandir &Horizontalmente"
+
+#~ msgid "Mi&nimize All"
+#~ msgstr "Mi&nimizar Todas"
+
+#~ msgid "What's this?"
+#~ msgstr "O que é isto?"
+
+#~ msgid "Notify List"
+#~ msgstr "Lista de Notificação"
+
+#~ msgid "Part All Channels"
+#~ msgstr "Sair de todos os canais"
+
+#~ msgid "Close All Queries"
+#~ msgstr "Fechar todos os queries"
+
+#~ msgid "Unhighlight All Windows"
+#~ msgstr "Remover destaque de todas as janelas"
+
+#~ msgid "Unhighlight All Channels"
+#~ msgstr "Remover destaque de todos os canais"
+
+#~ msgid "Unhighlight All Queries"
+#~ msgstr "Remover Destaque de Todos os Queries"
+
+#~ msgid "Registered as"
+#~ msgstr "Registrado como"
+
+#~ msgid "Matched by"
+#~ msgstr "Coincide por"
+
+#~ msgid "On <b>"
+#~ msgstr "Em <b>"
+
+#~ msgid "Using server <b>%1</b>"
+#~ msgstr "Usando servidor <b>%1</b>"
+
+#~ msgid "%1 hops"
+#~ msgstr "%1 saltos"
+
+#~ msgid "Confirmation - KVIrc"
+#~ msgstr "Confirmação - KVIrc"
+
+#~ msgid ""
+#~ "You have just attempted to close a console window<br>with an active "
+#~ "connection inside.<br>Are you sure you wish to terminate the connection?"
+#~ msgstr ""
+#~ "Você acabou de tentar fechar uma janela de console.<br>com uma conexão "
+#~ "ativa dentro.<br>Tem certeza de que quer terminar conexão?"
+
+#~ msgid "&Always"
+#~ msgstr "&Sempre"
+
+#~ msgid ""
+#~ "You have just attempted to close the last console window.<br>Are you sure "
+#~ "you wish to quit KVIrc?"
+#~ msgstr ""
+#~ "Você acaba de tentar fechar a janela do último console.<br>Tem certeza de "
+#~ "que quer fechar o KVirc?"
+
+#~ msgid "Failed to load avatar with name \"%Q\" and local path \"%Q\""
+#~ msgstr "Falha ao carregar avatar com o nome \"%Q\" e caminho local \"%Q\""
+
+#~ msgid "channels"
+#~ msgstr "Canais"
+
+#~ msgid "query"
+#~ msgstr "query"
+
+#~ msgid "queries"
+#~ msgstr "queries"
+
+#~ msgid "Connected since"
+#~ msgstr "Conectado desde"
+
+#~ msgid "Online for"
+#~ msgstr "Conectado durante"
+
+#~ msgid "Server idle for"
+#~ msgstr "Servidor inativo durante"
+
+#~ msgid "Script"
+#~ msgstr "Script"
+
+#~ msgid "The file %s already exists.<br>Do you wish to overwrite it?"
+#~ msgstr "O arquivo %s já existe.<br>Deseja sobrescrever?"
+
+#~ msgid "File Exists - KVIrc"
+#~ msgstr "Arquivo já existe - KVIrc"
+
+#~ msgid "Channel Modes"
+#~ msgstr "Modos de Canal"
+
+#~ msgid "There are active connections, are you sure you wish to "
+#~ msgstr "Existem conexões ativas, tem certeza de que deseja "
+
+#~ msgid "quit KVIrc?"
+#~ msgstr "fechar o KVIrc?"
+
+#~ msgid "Show %1"
+#~ msgstr "Exibir %1"
+
+#~ msgid "Customize..."
+#~ msgstr "Personalizar..."
+
+#~ msgid "Away Indicator"
+#~ msgstr "Indicador de Ausência"
+
+#~ msgid "Away since"
+#~ msgstr "Ausente desde"
+
+#~ msgid "Double click to leave away mode"
+#~ msgstr "Clique duas vezes para deixar o modo ausente"
+
+#~ msgid "Not away"
+#~ msgstr "Não ausente"
+
+#~ msgid "Double click to enter away mode"
+#~ msgstr "Clique duas vezes para entrar em modo ausente"
+
+#~ msgid "Last checked %d mins %d secs ago"
+#~ msgstr "Última verificação à %d mins %d segs"
+
+#~ msgid "Lag measure not available yet"
+#~ msgstr "Medição de Lag ainda não disponível"
+
+#~ msgid "Lag meter engine disabled"
+#~ msgstr "Medidor de Lag desativado"
+
+#~ msgid "Double click to enable it"
+#~ msgstr "Clique duas vezes para ativar"
+
+#~ msgid "Lag Indicator"
+#~ msgstr "Indicador de Lag"
+
+#~ msgid "Simple Clock"
+#~ msgstr "Relógio Simples"
+
+#, fuzzy
+#~ msgid "Show total connection time"
+#~ msgstr "Exibir o tempo de sincronização do canal"
+
+#~ msgid "Connection Timer"
+#~ msgstr "Cronometro da Conexão"
+
+#~ msgid "Unloadable: %s"
+#~ msgstr "Descarregado: %s"
+
+#~ msgid "Choose a File - KVIrc"
+#~ msgstr "Escolha um Arquivo - KVIrc"
+
+#~ msgid "A&dd"
+#~ msgstr "A&dicionar"
+
+#~ msgid "Sample Text"
+#~ msgstr "Exemplo"
+
+#~ msgid "Joined on <b>%1</b>"
+#~ msgstr "Entrou no <b>%1</b>"
+
+#~ msgid "Quiet for <b>%1h %2m %3s</b>"
+#~ msgstr "Silêncioso por <b>%1h %2m %3s</b>"
+
+#~ msgid "Cryptography/text transformation"
+#~ msgstr "Transforção de texto/criptográfica"
+
+#~ msgid "Use the crypt engine"
+#~ msgstr "Usar motor de criptografia"
+
+#~ msgid "Encrypt key:"
+#~ msgstr "Chave criptográfica:"
+
+#~ msgid "Hex"
+#~ msgstr "Hex"
+
+#~ msgid "Enable decryption"
+#~ msgstr "Habilitar descriptografia"
+
+#~ msgid "Decrypt key:"
+#~ msgstr "Chave descriptográfica:"
+
+#~ msgid ""
+#~ "If you dont want to encrypt a particular text line then just start it "
+#~ "with the CTRL+P prefix"
+#~ msgstr ""
+#~ "Se não quiser criptografar uma linha de texto em particular então inicie-"
+#~ "a com o prefixo CTRL+P"
+
+#~ msgid "Sorry, no crypt engines available"
+#~ msgstr "Lamento, nenhum motror de criptografia disponível"
+
+#~ msgid "Crypt: Can't create an engine instance: crypting disabled"
+#~ msgstr ""
+#~ "Criptografia: Não foi possivel criar uma instância de motor: criptografia "
+#~ "desabilitada"
+
+#~ msgid "Crypt: Can't initialize the engine :%s"
+#~ msgstr "Criptografia: Não foi possível inicializar o motor: %s"
+
+#~ msgid ""
+#~ "Crypt: You have to enable encryption and/or decryption for the engine to "
+#~ "work"
+#~ msgstr ""
+#~ "Criptografia: Você tem que permitir criptografia e/ou a descriptografia "
+#~ "para queo motor trabalhe"
+
+#~ msgid "Choose image ..."
+#~ msgstr "Escolha a imagem..."
+
+#~ msgid "Builtin images"
+#~ msgstr "Imagens embutidas"
+
+#~ msgid "Small icons"
+#~ msgstr "Ícones pequenos"
+
+#~ msgid "Full path"
+#~ msgstr "Caminho completo"
+
+#~ msgid "directory"
+#~ msgstr "diretório"
+
+#~ msgid "pixels"
+#~ msgstr "pixels"
+
+#~ msgid "bytes"
+#~ msgstr "bytes"
+
+#~ msgid "<b><font color=\"#EAEAEA\" size=\"-1\">Find Text</font></b>"
+#~ msgstr "<b><font color=\"#EAEAEA\" size=\"-1\">Procurar Texto</font></b>"
+
+#~ msgid "&Regular expression"
+#~ msgstr "Expressão &Regular "
+
+#~ msgid "E&xtended regexp."
+#~ msgstr "Expressão regular e&stendida."
+
+#~ msgid "C&ase sensitive"
+#~ msgstr "&Diferenciar Maiúsculas/minúsculas"
+
+#~ msgid "Find &Prev."
+#~ msgstr "&Procurar Anterior"
+
+#~ msgid "&Find Next"
+#~ msgstr "&Procurar próximo"
+
+#~ msgid "Set &All"
+#~ msgstr "Selecionar &Todos"
+
+#~ msgid "Set &None"
+#~ msgstr "Selecionar &Nenhum"
+
+#~ msgid "&Load From..."
+#~ msgstr "&Carrgar de..."
+
+#~ msgid "&Save As..."
+#~ msgstr "&Salvas Como..."
+
+#~ msgid "Filter"
+#~ msgstr "Filtro"
+
+#~ msgid "Select a Filter File"
+#~ msgstr "Selecionar um arquivo de filtro"
+
+#~ msgid "Can't open the filter file %s for reading."
+#~ msgstr "Impossível abrir o arquivo filtro %s para leitura."
+
+#~ msgid "Select a Name for the Filter File"
+#~ msgstr "Escolha um nome para o arquivo filtro"
+
+#~ msgid "Failed to write the filter file %s (IO Error)"
+#~ msgstr "Falha ao escrever no arquivo de filtro %s (Erro E/S)"
+
+#~ msgid "Can't open the filter file %s for writing"
+#~ msgstr "Impossível abrir o arquivo de filtro %s para escrita"
+
+#~ msgid "Scri&pting"
+#~ msgstr "Scri&pts"
+
+#~ msgid "&Tools"
+#~ msgstr "&Ferramentas"
+
+#~ msgid "&Settings"
+#~ msgstr "&Configurações"
+
+#~ msgid "&Window"
+#~ msgstr "&Janela"
+
+#~ msgid "&Help Browser (Panel)"
+#~ msgstr "&Navegador de Ajuda(Painel)"
+
+#~ msgid "Help Browser (&Window)"
+#~ msgstr "Navegador de Ajuda(&Janela)"
+
+#~ msgid "&Tip of the Day"
+#~ msgstr "&Dica do dia"
+
+#~ msgid "About &KVIrc"
+#~ msgstr "Sobre o &KVIrc"
+
+#~ msgid "KVIrc Home&page"
+#~ msgstr "&Página do KVIrc"
+
+#~ msgid "Report a Bug"
+#~ msgstr "Reportar um Erro"
+
+#~ msgid "Show StatusBar"
+#~ msgstr "Exibir Barra de Status"
+
+#~ msgid "Restore &Default Script"
+#~ msgstr "Restaurar Script &Padrão"
+
+#~ msgid "New &Connection To"
+#~ msgstr "Nova &Conexão para"
+
+#~ msgid "Hide &Dock Icon"
+#~ msgstr "Ocultar &Icone do Painel"
+
+#~ msgid "Show &Dock Icon"
+#~ msgstr "Exibir &Icone do Painel"
+
+#~ msgid "&Other..."
+#~ msgstr "&Outro..."
+
+#~ msgid "Show &Icon Table"
+#~ msgstr "Exibir Tabela de &Icones "
+
+#~ msgid "Open &Terminal"
+#~ msgstr "Abrir &Terminal"
+
+#~ msgid "Success"
+#~ msgstr "Sucesso"
+
+#~ msgid "Internal error"
+#~ msgstr "Erro interno"
+
+#~ msgid "Unknown command"
+#~ msgstr "Comando desconhecido"
+
+#~ msgid "Missing closing brace"
+#~ msgstr "chave de fechamento ( '`}' ) faltando"
+
+#~ msgid "Unexpected end of command in string"
+#~ msgstr "Fim de comando inesperado na string"
+
+#~ msgid "Unexpected end of command in dictionary key"
+#~ msgstr "Fim de comando inesperado na chave do dicionário"
+
+#~ msgid "Switch dash without switch letter"
+#~ msgstr "Troque o hífen sem trocar a letra"
+
+#~ msgid "Unknown function"
+#~ msgstr "Função desconhecida"
+
+#~ msgid "Unexpected end of command in parenthesis"
+#~ msgstr "Fim de comando inesperado no parênteses"
+
+#~ msgid "Unexpected end of command in function parameters"
+#~ msgstr "Fim de comando inesperado nos parâmetros da função"
+
+#~ msgid "Missing variable name"
+#~ msgstr "Faltando o nome da variável"
+
+#~ msgid "Variable or identifier expected"
+#~ msgstr "Variável ou identificador esperado"
+
+#~ msgid "Left operand is not a number"
+#~ msgstr "O operador esquerdo não é um número"
+
+#~ msgid "Multiple operations not supported for numeric operators"
+#~ msgstr "Operações múltiplas não suportadas para operadores numéricos"
+
+#~ msgid "Modulo by zero"
+#~ msgstr "Módulo por zero"
+
+#~ msgid "Right operand is not a number"
+#~ msgstr "O operador direito não é um número"
+
+#~ msgid "Unterminated expression (missing ')' ?)"
+#~ msgstr "Expressão não terminada (Faltando ')' ?)"
+
+#~ msgid "Unterminated subexpression (Parenthesis mismatch)"
+#~ msgstr "Subexpressão não terminada (Má combinação de parênteses)"
+
+#~ msgid "Unexpected character"
+#~ msgstr "Caracter Inesperado"
+
+#~ msgid "No host to resolve"
+#~ msgstr "Sem host para resolver"
+
+#~ msgid "(DNS Internal) Unsupported address family"
+#~ msgstr "(DNS Interno) Familia de endereços não suportada"
+
+#~ msgid "Valid name but the host has no IP address"
+#~ msgstr "Nome válido mas a maquina não tem um endereço IP "
+
+#~ msgid "Unrecoverable nameserver error (crashed ?)"
+#~ msgstr "Erro irrecuperável do servidor de nomes (Deixou de funcionar ?)"
+
+#~ msgid "Dns temporaneous fault (try again)"
+#~ msgstr "DNS falhou temporariamente (tente outra vez)"
+
+#~ msgid "(DNS Internal) Bad flags"
+#~ msgstr "(DNS Interno) Opções inválidas"
+
+#~ msgid "(DNS Internal) Out of memory"
+#~ msgstr "(DNS Interno) Sem memória"
+
+#~ msgid "(DNS Internal) Service not supported"
+#~ msgstr "(DNS Interno) Serviço não suportado"
+
+#~ msgid "Unknown node (host not found)"
+#~ msgstr "Nó desconhecido (host não encontrado)"
+
+#~ msgid "(DNS Internal) Unsupported socket type"
+#~ msgstr "(DNS Interno) tipo de socket não suportado"
+
+#~ msgid "Dns query failed"
+#~ msgstr "Consulta de DNS falhou"
+
+#~ msgid "This KVIrc executable has no IPV6 support"
+#~ msgstr "Este executável do KVIrc não tem suporte a IPV6"
+
+#~ msgid "Host not found"
+#~ msgstr "Host não encontrado"
+
+#~ msgid "(DNS Internal) IPC failure (slave data corrupted)"
+#~ msgstr "(Dns Interno) IPC Falhou (dados escravo corrompidos)"
+
+#~ msgid "Invalid IP address"
+#~ msgstr "Endereço IP inválido"
+
+#~ msgid "Failed to put the socket in non blocking mode"
+#~ msgstr "Falha ao por o socket em modo não bloqueante"
+
+#~ msgid "Bad file descriptor"
+#~ msgstr "Descritor de arquivo inválido"
+
+#~ msgid "Out of address space"
+#~ msgstr "Fim do espaço de endereço"
+
+#~ msgid "Connection refused"
+#~ msgstr "Conexão recusada"
+
+#~ msgid "Kernel networking panic"
+#~ msgstr "Rede do núcleo em pânico"
+
+#~ msgid "Connection timed out"
+#~ msgstr "Tempo esgotado para conexão"
+
+#~ msgid "Network is unreachable"
+#~ msgstr "Rede inalcançavel"
+
+#~ msgid "Broken pipe"
+#~ msgstr "Pipe quebrado"
+
+#~ msgid "Invalid proxy address"
+#~ msgstr "Endereço de proxy invalido"
+
+#~ msgid "Remote end has closed the connection"
+#~ msgstr "O computador remoto fechou a conexão"
+
+#~ msgid "Invalid irc context id"
+#~ msgstr "id de contexto do IRC inválido"
+
+#~ msgid "Error in loading module"
+#~ msgstr "Erro ao carregar módulo"
+
+#~ msgid "No such module command"
+#~ msgstr "Não existe tal comando de módulo"
+
+#~ msgid "No such module function"
+#~ msgstr "Não existe tal função de módulo"
+
+#~ msgid "Left operand is not a dictionary reference"
+#~ msgstr "O operador esquerdo não é uma referência do dicionário"
+
+#~ msgid "Right operand is not a dictionary reference"
+#~ msgstr "O operador direito não é uma referência do dicionário"
+
+#~ msgid "Missing object class name"
+#~ msgstr "Falta o nome da classe do objeto"
+
+#~ msgid "No such object class"
+#~ msgstr "Não existe essa classe de objeto"
+
+#~ msgid "No such object"
+#~ msgstr "Não existe esse objeto"
+
+#~ msgid "No such object function"
+#~ msgstr "Não existe essa função de objeto"
+
+#~ msgid "Invalid left operand"
+#~ msgstr "Operador esquerdo invalido"
+
+#~ msgid "Integer parameter expected"
+#~ msgstr "Se esperava parâmetro inteiro"
+
+#~ msgid "Invalid parameter"
+#~ msgstr "Parâmetro inválido"
+
+#~ msgid "No such file"
+#~ msgstr "Arquivo não existe "
+
+#~ msgid "Open parenthesis expected"
+#~ msgstr "Abertura de parênteses esperada"
+
+#~ msgid "Open brace expected"
+#~ msgstr "Abertura de chave('{') esperada"
+
+#~ msgid "Can't kill a builtin class"
+#~ msgstr "Não pode matar uma classe interna "
+
+#~ msgid "The SOCKSV4 protocol lacks IpV6 support"
+#~ msgstr "O protocolo SOCKSV4 não tem suporte a IpV6"
+
+#~ msgid "Unrecognized proxy reply"
+#~ msgstr "Resposta do proxy desconhecida"
+
+#~ msgid "Proxy response: auth failed: access denied"
+#~ msgstr "Resposta do proxy: auth Falhou : Acesso negado"
+
+#~ msgid "Proxy response: No acceptable auth method: request rejected"
+#~ msgstr "Resposta do proxy: auth não aceito: requisição rejeitada"
+
+#~ msgid "Proxy response: request failed"
+#~ msgstr "Resposta do Proxy: requisição falhou"
+
+#~ msgid "Proxy response: ident failed"
+#~ msgstr "Resposta do Proxy: ident falhou"
+
+#~ msgid "Proxy response: ident not matching"
+#~ msgstr "Resposta do Proxy: ident não combina"
+
+#~ msgid "Proxy response: general SOCKS failure"
+#~ msgstr "Resposta do Proxy: Falha geral do SOCKS"
+
+#~ msgid "Proxy response: connection not allowed"
+#~ msgstr "Resposta do Proxy: conexão não permitida"
+
+#~ msgid "Proxy response: network unreachable"
+#~ msgstr "Resposta do proxy: Rede inalcançavel"
+
+#~ msgid "Proxy response: host unreachable"
+#~ msgstr "Resposta do proxy: host inalcançavel"
+
+#~ msgid "Proxy response: connection refused"
+#~ msgstr "Resposta do Proxy: conexão recusada"
+
+#~ msgid "Proxy response: TTL expired"
+#~ msgstr "Resposta do Proxy: TTL expirada"
+
+#~ msgid "Proxy response: command not supported"
+#~ msgstr "Resposta do Proxy: comando não suportado"
+
+#~ msgid "Proxy response: address type not supported"
+#~ msgstr "Resposta do Proxy: tipo de endereço não suportado"
+
+#~ msgid "Proxy response: invalid address"
+#~ msgstr "Resposta do Proxy: endereço inválido"
+
+#~ msgid "Invalid port number"
+#~ msgstr "Número de porta inválido"
+
+#~ msgid "Socket not connected"
+#~ msgstr "Socket não conectado"
+
+#~ msgid "Insufficient resources to complete the operation"
+#~ msgstr "Recursos insuficientes para completar a operação"
+
+#~ msgid "Can't setup a listening socket : bind failed"
+#~ msgstr "Não pude configurar um socket de escuta : ligação falhou"
+
+#~ msgid "Can't resolve the localhost name"
+#~ msgstr "Não foi possível resolver o nome do host local"
+
+#~ msgid "Unsupported image format"
+#~ msgstr "Formato de imagem não suportado"
+
+#~ msgid "Can't open file for appending"
+#~ msgstr "Não foi possível abrir o arquivo para adicionar"
+
+#~ msgid "Can't open file for writing"
+#~ msgstr "Não foi possível abrir o arquivo para escrever"
+
+#~ msgid "File I/O error"
+#~ msgstr "Arquivo I/O erro"
+
+#~ msgid "Acknowledge error"
+#~ msgstr "Erro na confirmação"
+
+#~ msgid "Can't open file for reading"
+#~ msgstr "Não foi possível abrir o arquivo para ler"
+
+#~ msgid "Can't send a zero-size file"
+#~ msgstr "Não foi possível enviar arquivo tamanho-zero"
+
+#~ msgid "Missing popup name"
+#~ msgstr "Nome do popup faltando"
+
+#~ msgid "'item', 'popup', 'label' or 'separator' keyword expected"
+#~ msgstr "'ítem', 'popup', 'label' ou 'separador' palavra esperada "
+
+#~ msgid "Self modification not allowed"
+#~ msgstr "Automodificação não permitida"
+
+#~ msgid "UNUSED"
+#~ msgstr "NÃO UTILIZADO"
+
+#~ msgid "Feature not available"
+#~ msgstr "Característica não disponível"
+
+#~ msgid "Unexpected characters in array index"
+#~ msgstr "Caráteres inesperados no índice do array"
+
+#~ msgid "Unexpected end in expression"
+#~ msgstr "Fim inesperado na expressão"
+
+#~ msgid "Unexpected end in array index"
+#~ msgstr "Finalização inesperada no índice do array"
+
+#~ msgid "Connection thru HTTP proxy failed"
+#~ msgstr "Conexão através do proxy HTTP falhou"
+
+#~ msgid "Case , match , regexp , default or break keyword expected"
+#~ msgstr "Se esperava uma palavra clave case, match, regexp, default ou break"
+
+#~ msgid "Access denied"
+#~ msgstr "Acesso negado"
+
+#~ msgid "Address already in use"
+#~ msgstr "Endereço já esta em uso"
+
+#~ msgid "Can't assign the requested address"
+#~ msgstr "Não foi possível atribuir o endereço requisitado"
+
+#~ msgid "Connection reset by peer"
+#~ msgstr "Conexão reiniciada pelo outro lado"
+
+#~ msgid "Host unreachable (no route to host)"
+#~ msgstr "Host inalcançavel (sem rota para o host)"
+
+#~ msgid "Variable expected"
+#~ msgstr "Variável esperada"
+
+#~ msgid "Invalid array index: positive integer expected"
+#~ msgstr "Índice inválido do array: inteiro positivo esperado"
+
+#~ msgid "listen() call failed"
+#~ msgstr "chamada listen() falhou"
+
+#~ msgid "This executable has been compiled without SSL support"
+#~ msgstr "Este executável está compilado sem suporte a SSL"
+
+#~ msgid "Secure Socket Layer error"
+#~ msgstr "Erro do Secure Socket Layer"
+
+#~ msgid "Slash (/) character expected"
+#~ msgstr "Slash (/) caráter esperado"
+
+#~ msgid "Unknown string manipulation operation"
+#~ msgstr "Operação de manipulação de string desconhecida"
+
+#~ msgid "Operation aborted"
+#~ msgstr "Operação abortada"
+
+#~ msgid "Unexpected token"
+#~ msgstr "Símbolo inesperado"
+
+#~ msgid "Scope object already defined (unexpected @)"
+#~ msgstr "Já se definiu o escopo do objeto (@ inesperado)"
+
+#~ msgid "There is no $this pointer in this scope (unexpected @)"
+#~ msgstr "Não há um ponteiro $this neste escopo (@ inesperado)"
+
+#~ msgid "- d -- h -- m -- s"
+#~ msgstr "- d -- h -- m -- s"
+
+#~ msgid "%u h %u m %u s"
+#~ msgstr "%u h %u m %u s"
+
+#~ msgid "%u h %u%u m %u%u s"
+#~ msgstr "%u h %u%u m %u%u s"
+
+#~ msgid "%u m %u s"
+#~ msgstr "%u m %u s"
+
+#~ msgid "%u m %u%u s"
+#~ msgstr "%u m %u%u s"
+
+#~ msgid "%u s"
+#~ msgstr "%u s"
+
+#~ msgid "%u d %u h %u m %u s"
+#~ msgstr "%u d %u h %u m %u s"
+
+#~ msgid "%u d %u%u h %u%u m %u%u s"
+#~ msgstr "%u d %u%u h %u%u m %u%u s"
+
+#~ msgid "Select color"
+#~ msgstr "Selecionar cor"
+
+#~ msgid "&Basic colors"
+#~ msgstr "Cores &Básicas"
+
+#~ msgid "&Custom colors"
+#~ msgstr "&Cores personalizadas"
+
+#~ msgid "&Red"
+#~ msgstr "Verme&lho"
+
+#~ msgid "&Green"
+#~ msgstr "&Verde"
+
+#~ msgid "Bl&ue"
+#~ msgstr "Az&ul"
+
+#~ msgid "&Define Custom Colors >>"
+#~ msgstr "&Definir Cores Personalizadas >>"
+
+#~ msgid "&Add to Custom Colors"
+#~ msgstr "&Adicionar às Cores Personalizadas"
+
+#~ msgid "Select Font"
+#~ msgstr "Selecionar Fonte"
+
+#~ msgid "&Font"
+#~ msgstr "&Fonte"
+
+#~ msgid "Font st&yle"
+#~ msgstr "Est&ilo de Fonte"
+
+#~ msgid "&Size"
+#~ msgstr "&Tamanho"
+
+#~ msgid "Sample"
+#~ msgstr "Exemplo"
+
+#~ msgid "Effects"
+#~ msgstr "Efeitos"
+
+#~ msgid "Stri&keout"
+#~ msgstr "Stri&keout"
+
+#~ msgid "&Underline"
+#~ msgstr "&Sublinhado"
+
+#~ msgid "Scr&ipt"
+#~ msgstr "Scr&ipt"
+
+#~ msgid "Parent Directory"
+#~ msgstr "Diretório Acima"
+
+#~ msgid "Back"
+#~ msgstr "Voltar"
+
+#~ msgid "Forward"
+#~ msgstr "Próximo"
+
+#~ msgid "Reload"
+#~ msgstr "Recarregar"
+
+#~ msgid "New Directory"
+#~ msgstr "Novo Diretório"
+
+#~ msgid "Bookmarks"
+#~ msgstr "Favoritos"
+
+#~ msgid "Add Bookmark"
+#~ msgstr "Adicionar Favorito"
+
+#~ msgid "&Edit Bookmarks"
+#~ msgstr "&Editar Favoritos"
+
+#~ msgid "New Bookmark Folder..."
+#~ msgstr "Nova Pasta de Favoritos..."
+
+#~ msgid "Sorting"
+#~ msgstr "Ordenar"
+
+#~ msgid "By Name"
+#~ msgstr "Por Nome"
+
+#~ msgid "By Date"
+#~ msgstr "Por Data"
+
+#~ msgid "By Size"
+#~ msgstr "Por Tamanho"
+
+#~ msgid "Reverse"
+#~ msgstr "Reverso"
+
+#~ msgid "Directories First"
+#~ msgstr "Diretórios Primeiro"
+
+#~ msgid "Case Insensitive"
+#~ msgstr "Não Distinguir Maiúsculas"
+
+#~ msgid "Short View"
+#~ msgstr "Visão Abreviada"
+
+#~ msgid "Detailed View"
+#~ msgstr "Visão Detalhada"
+
+#~ msgid "Show Hidden Files"
+#~ msgstr "Exibir Arquivos Ocultos"
+
+#~ msgid "Show Quick Access Navigation Panel"
+#~ msgstr "Exibir Painel de Navegação Rápida"
+
+#~ msgid "Show Preview"
+#~ msgstr "Exibir Pré-visão"
+
+#~ msgid "Separate Directories"
+#~ msgstr "Separar Diretórios"
+
+#~ msgid "Often used directories"
+#~ msgstr "Diretórios frequentemente usados"
+
+#~ msgid "Desktop"
+#~ msgstr "Área de Trabalho"
+
+#~ msgid "Home Directory"
+#~ msgstr "Pasta Pessoal"
+
+#~ msgid "Floppy"
+#~ msgstr "Disquete"
+
+#~ msgid "Temporary Files"
+#~ msgstr "Arquivos Temporários"
+
+#~ msgid "Network"
+#~ msgstr "Rede"
+
+#~ msgid "New Directory..."
+#~ msgstr "Novo Diretório..."
+
+#~ msgid "Thumbnail Previews"
+#~ msgstr "Pré-Visualizações"
+
+#~ msgid "Large Icons"
+#~ msgstr "Icones Grandes"
+
+#~ msgid "Small Icons"
+#~ msgstr "Ícones Pequenos"
+
+#~ msgid "Properties..."
+#~ msgstr "Propriedades..."
+
+#~ msgid "&Automatic Preview"
+#~ msgstr "Pré-visão &Automática"
+
+#~ msgid "&Preview"
+#~ msgstr "&Pre-visão"
+
+#~ msgid "&Filter:"
+#~ msgstr "&Filtro:"
+
+#~ msgid "All Files"
+#~ msgstr "Todos os arquivos"
+
+#~ msgid "Directory"
+#~ msgstr "Diretório"
+
+#~ msgid "Fifo"
+#~ msgstr "FIFO"
+
+#~ msgid "Block device"
+#~ msgstr "Dispositivo de bloco"
+
+#~ msgid "Char device"
+#~ msgstr "Dispositivo de caracteres"
+
+#~ msgid "Octet stream (unknown)"
+#~ msgstr "Fluxo de bytes (desconhecido)"
+
+#~ msgid "Invalid crypt engine"
+#~ msgstr "Mecanismo criptográfico inválido"
+
+#~ msgid "WARNING : Can not load image library %s"
+#~ msgstr "AVISO: Não foi possível carregar a biblioteca de imagem %s"
+
+#, fuzzy
+#~ msgid "The specified network has no server entries"
+#~ msgstr "A janela especificada não tem recepiente de botões"
+
+#~ msgid "Aborted"
+#~ msgstr "Abortado"
+
+#~ msgid "No request"
+#~ msgstr "Nenhum pedido"
+
+#~ msgid "No filename specified for the \"StoreToFile\" processing type"
+#~ msgstr ""
+#~ "Nenhum arquivo especificado para o tipo de processamento \"StoreToFile\""
+
+#~ msgid "Invalid URL: Missing hostname"
+#~ msgstr "URL invalida: Faltando nome da máquina"
+
+#, fuzzy
+#~ msgid "Unsupported protocol %1"
+#~ msgstr "Protocolo %s não suportado"
+
+#~ msgid "Unable to start the DNS lookup"
+#~ msgstr "Impossível iniciar a pesquisa DNS"
+
+#~ msgid "Looking up host %s"
+#~ msgstr "Localizando máquina %s"
+
+#~ msgid "Host %s resolved to %s"
+#~ msgstr "Nomde de máquina %s resolvido para %s"
+
+#~ msgid "Unable to start the request slave thread"
+#~ msgstr "Não foi possível iniciar processo de requisição"
+
+#~ msgid "Contacting host %s on port %u"
+#~ msgstr "Contatando máquina %s na porta %u"
+
+#~ msgid "Connection established, sending request"
+#~ msgstr "Conexão estabelecida, enviando pedido"
+
+#~ msgid "Failed to rename the existing file, please rename manually and retry"
+#~ msgstr ""
+#~ "Falha ao renomear o arquivo existente, por favor renomeie manualmente e "
+#~ "tente de novo"
+
+#~ msgid "Can't open file \"%s\" for writing"
+#~ msgstr "Não foi possível abrir o arquivo \"%s\" em modo de escrita"
+
+#~ msgid "Invalid HTTP response: %s"
+#~ msgstr "Resposta HTTP Inválida: %s"
+
+#~ msgid "Received HTTP response: %s"
+#~ msgstr "Resposta HTTP recebida: %s"
+
+#~ msgid "Stream exceeding maximum length"
+#~ msgstr "Stream excedeu o tamanho máximo"
+
+#~ msgid "Stream exceeded expected length"
+#~ msgstr "Stream excedeu o comprimento esperado"
+
+#~ msgid "Header too long: exceeded 4096 bytes"
+#~ msgstr "Cabeçalho muito longo: Excedeu 4096 bytes"
+
+#~ msgid "Select error: %s (errno=%d)"
+#~ msgstr "Erro em Select: %s (errno=%d)"
+
+#~ msgid "Operation timed out"
+#~ msgstr "Tempo esgotado para a operação"
+
+#~ msgid "Failed to enter non blocking mode"
+#~ msgstr "Falha ao entrar no modo desbloqueado"
+
+#~ msgid "Invalid target address"
+#~ msgstr "Endereço de destino inválido"
+
+#~ msgid "Connect error: %s (errno=%d)"
+#~ msgstr "Erro de conexão: %s (errno=%d)"
+
+#~ msgid "Write error: %s (errno=%d)"
+#~ msgstr "Erro de escrita: %s (errno=%d)"
+
+#~ msgid "Operation timed out (while selecting for read)"
+#~ msgstr "Tempo esgotado para a operação (enquanto selecionava para leitura)"
+
+#~ msgid "Read error: %s (errno=%d)"
+#~ msgstr "Erro de leitura: %s (errno=%d)"
+
+#~ msgid "Encoding"
+#~ msgstr "Codificação"
+
+#, fuzzy
+#~ msgid "Reconnection Options"
+#~ msgstr "conexão"
+
+#, fuzzy
+#~ msgid "Usage"
+#~ msgstr "Utilização"
+
+#, fuzzy
+#~ msgid "message"
+#~ msgstr "Tipo de Mensagem"
+
+#~ msgid "Usage:"
+#~ msgstr "Utilização"
+
+#~ msgid "You must be connected to a server"
+#~ msgstr "Você deve estar conectado em um servidor"
+
+#~ msgid "Lag is"
+#~ msgstr "Lag é"
+
+#~ msgid "reason"
+#~ msgstr "razão"
+
+#~ msgid "This is not a channel window"
+#~ msgstr "Isto não é uma janela de canal"
+
+#~ msgid "Unsupported type: $0"
+#~ msgstr "Tipo não suportado: $0"
+
+#~ msgid "You must use DNS in an IRC context"
+#~ msgstr "Você deve usar DNS em um contexto de IRC"
+
+#~ msgid "No such user: $0"
+#~ msgstr "Não existe o usuário: $0"
+
+#~ msgid "Options"
+#~ msgstr "Opções"
+
+#~ msgid "Stop Highlighting (Local)"
+#~ msgstr "Parar Destaque (Local)"
+
+#~ msgid "Start Highlighting (Local)"
+#~ msgstr "Iniciar Destaque (Local)"
+
+#~ msgid "Always Highlight"
+#~ msgstr "Sempre Destacar"
+
+#~ msgid "Highlight as"
+#~ msgstr "Destaque como"
+
+#~ msgid "Stop Highlighting"
+#~ msgstr "Parar Destaque"
+
+#~ msgid "is being ignored"
+#~ msgstr "esta sendo ignorado"
+
+#~ msgid "is not being ignored"
+#~ msgstr "não está sendo ignorado"
+
+#~ msgid "Ignore as"
+#~ msgstr "Ignorar como"
+
+#~ msgid "Unignore"
+#~ msgstr "Designorar"
+
+#~ msgid "is registered as"
+#~ msgstr "registrado como"
+
+#~ msgid "is in the notify list"
+#~ msgstr "está na lista de notificação"
+
+#~ msgid "has a default avatar"
+#~ msgstr "tem um avatar padrão"
+
+#~ msgid "is not registered"
+#~ msgstr "não está registrado"
+
+#~ msgid "Register"
+#~ msgstr "Registrar"
+
+#~ msgid "Quick Registration"
+#~ msgstr "Registro Rápido"
+
+#~ msgid "Register as"
+#~ msgstr "Registrar como"
+
+#~ msgid "Unregister"
+#~ msgstr "Desregistrar"
+
+#~ msgid "Add to Notify"
+#~ msgstr "Adicionar para Notificação"
+
+#~ msgid "Remove from Notify"
+#~ msgstr "Remover da Notificação"
+
+#~ msgid "Choose"
+#~ msgstr "Escolher"
+
+#~ msgid "Choose Avatar Image File"
+#~ msgstr "Escolha o Arquivo de Imagem Avatar"
+
+#~ msgid "Set as Default"
+#~ msgstr "Colocar como Padrão"
+
+#~ msgid "Clear Default"
+#~ msgstr "Apagar Padrão"
+
+#, fuzzy
+#~ msgid "Copy To Clipboard"
+#~ msgstr "Copiar para a Área de Transferência"
+
+#~ msgid "Channel Owner"
+#~ msgstr "Proprietário do canal"
+
+#~ msgid "Channel Administrator"
+#~ msgstr "Administrador do canal"
+
+#~ msgid "Channel Operator"
+#~ msgstr "Operador do canal"
+
+#~ msgid "Half Operator"
+#~ msgstr "Semioperador"
+
+#~ msgid "User Operator"
+#~ msgstr "Usuário Ooperador"
+
+#~ msgid "Normal User"
+#~ msgstr "Usuário Normal"
+
+#~ msgid "Ban"
+#~ msgstr "Banir"
+
+#~ msgid "Multiple Users"
+#~ msgstr "Múltiplos Usuários"
+
+#~ msgid "&Ban"
+#~ msgstr "&Banir"
+
+#~ msgid "idle time"
+#~ msgstr "Tempo de inatividade"
+
+#~ msgid "&Information"
+#~ msgstr "&Informação"
+
+#~ msgid "DNS for"
+#~ msgstr "DNS de"
+
+#~ msgid "Mask for"
+#~ msgstr "Máscara de"
+
+#~ msgid "&Control"
+#~ msgstr "&Controle"
+
+#~ msgid "O&wner"
+#~ msgstr "&Proprietário para"
+
+#~ msgid "&Deowner"
+#~ msgstr "Remover proprietário de"
+
+#~ msgid "&Administrator"
+#~ msgstr "&Administrador para"
+
+#~ msgid "&Deadministrator"
+#~ msgstr "Remover Administrador de"
+
+#~ msgid "&Op"
+#~ msgstr "&Op para"
+
+#~ msgid "&Deop"
+#~ msgstr "Remover Op de"
+
+#~ msgid "&Halfop"
+#~ msgstr "&Semioperador para"
+
+#~ msgid "&Dehalfop"
+#~ msgstr "Remover semioperador de"
+
+#~ msgid "&Voice"
+#~ msgstr "&Voice para"
+
+#~ msgid "D&evoice"
+#~ msgstr "Remover Voice de"
+
+#~ msgid "&Kick"
+#~ msgstr "&Chutar"
+
+#~ msgid "K&ick"
+#~ msgstr "C&hutar"
+
+#~ msgid "With..."
+#~ msgstr "Com..."
+
+#~ msgid "Kick Reason"
+#~ msgstr "Razão do chute"
+
+#~ msgid "Enter a kick reason"
+#~ msgstr "Digite a razão do chute"
+
+#~ msgid "Kick/Ban"
+#~ msgstr "Chutar/Banir"
+
+#~ msgid "Kick/Ban Reason"
+#~ msgstr "Razão do chute/banimento"
+
+#~ msgid "Enter a kick/ban reason"
+#~ msgstr "Digite a razão do chute/banimento"
+
+#~ msgid "&Kick/Ban"
+#~ msgstr "&Chutar/Banir"
+
+#~ msgid "&Query"
+#~ msgstr "&Abrir privado com"
+
+#~ msgid "&Registration"
+#~ msgstr "&Registro"
+
+#~ msgid "Ig&nore"
+#~ msgstr "Ig&norar"
+
+#~ msgid "Notify Avatar"
+#~ msgstr "Notificar Avatar"
+
+#~ msgid "&Part"
+#~ msgstr "&Sair do"
+
+#~ msgid "Channels"
+#~ msgstr "Canais"
+
+#~ msgid "&Join Channels..."
+#~ msgstr "&Entrar nos Canais"
+
+#~ msgid "&Hop"
+#~ msgstr "&Saltar do"
+
+#~ msgid "l (Connections)"
+#~ msgstr "l (Conexões)"
+
+#~ msgid "m (Command Usage)"
+#~ msgstr "m (Utilização dos Comandos)"
+
+#~ msgid "o (Operators)"
+#~ msgstr "o (Operadores)"
+
+#~ msgid "t (Connection stats ?)"
+#~ msgstr "t (Estatisticas da conexão?)"
+
+#~ msgid "u (Uptime)"
+#~ msgstr "u (Tempo de Funcionamento)"
+
+#~ msgid "y (y-Lines)"
+#~ msgstr "y (Linhas-y)"
+
+#~ msgid "z (Debug Stats?)"
+#~ msgstr "z (Estatisticas de depuraração)"
+
+#~ msgid "Chat with"
+#~ msgstr "Chat com"
+
+#~ msgid "Secure Chat with"
+#~ msgstr "Chat Seguro com"
+
+#~ msgid "Send to"
+#~ msgstr "Enviar arquivo para"
+
+#~ msgid "Reverse Send to"
+#~ msgstr "Enviar arquivo em modo Reverso para"
+
+#~ msgid "TDCC Send to"
+#~ msgstr "Enviar TDCC para"
+
+#~ msgid "TDCC Reverse Send to"
+#~ msgstr "Enviar TDCC Reverso para"
+
+#~ msgid "Voice Chat"
+#~ msgstr "Chat com voz"
+
+#~ msgid "&Ignore"
+#~ msgstr "&Ignorar"
+
+#~ msgid "Logging to"
+#~ msgstr "Registrando em"
+
+#~ msgid "Flush Log File"
+#~ msgstr "Nivelar o Arquivo de Log"
+
+#~ msgid "Stop Logging"
+#~ msgstr "Parar o Registro"
+
+#~ msgid "Not Logging"
+#~ msgstr "Não está Registrando"
+
+#~ msgid "Log To Default File"
+#~ msgstr "Registrar Para Arquivo Padrão"
+
+#~ msgid "Include Existing Buffer"
+#~ msgstr "Incluir Buffer Existente"
+
+#~ msgid "Log To..."
+#~ msgstr "Registrar em..."
+
+#~ msgid "Notify avatar"
+#~ msgstr "Notificar Avatar"
+
+#~ msgid "The default script has been successfully installed."
+#~ msgstr "O Script padrão foi instalado com sucesso."
+
+#~ msgid "To connect to a server, type /server <server name>"
+#~ msgstr "Para conectar em um servidor, digite /sever <nome do servidor>"
+
+#~ msgid "Happy ircing :)"
+#~ msgstr "Bom bate-papo :)"
+
+#~ msgid "The config file with id '%s' is not open"
+#~ msgstr "O arquivo de configuração com id '%s' não está aberto"
+
+#~ msgid "The config file with id '%s' is read only"
+#~ msgstr "O arquivo de configuração com id '%s' é somente leitura"
+
+#~ msgid "No nickname specified"
+#~ msgstr "Nenhum apelido especificado"
+
+#~ msgid "No netmask specified"
+#~ msgstr "Nenhuma máscara de rede especificada"
+
+#~ msgid "No property name specified"
+#~ msgstr "Nenhuma propriedade especificada"
+
+#~ msgid "Missing property name"
+#~ msgstr "Faltando nome da propriedade"
+
+#~ msgid "The specified window (%s) is not a channel/query/DCC chat"
+#~ msgstr "A Janela especificada (%s) não é um canal/privado/DCC de chat"
+
+#~ msgid "No file specified"
+#~ msgstr "Nenhum arquivo especifico"
+
+#~ msgid "Window %s not found"
+#~ msgstr "Janela %s não encontrada"
+
+#~ msgid "Can't log to file %s"
+#~ msgstr "Não foi possível registar no arquivo %s"
+
+#~ msgid "Window with id '%s' not found, returning empty string"
+#~ msgstr "Janela com id '%s' não encontrada, retornar string vazia"
+
+#~ msgid "Invalid progress value (%s)"
+#~ msgstr "Valor de progresso inválido (%s)"
+
+#~ msgid "Error:not enough parameters!"
+#~ msgstr "Erro: Parâmetros insuficientes!"
+
+#~ msgid "The (%s) object is not a pixmap"
+#~ msgstr "O objeto (%s) não é um pixmap"
+
+#~ msgid ""
+#~ "Error occured: the suitable file is not of the correct format or it is "
+#~ "not a valid icon number."
+#~ msgstr ""
+#~ "Ocorreu um erro: o arquivo não é do formato correto ou não é um número de "
+#~ "ícone válido."
+
+#~ msgid "Invalid index parameter (%s)"
+#~ msgstr "Parâmetro de índice inválido (%s)"
+
+#~ msgid "Invalid parameter"
+#~ msgstr "Parâmetro inválido"
+
+#~ msgid "Can't find the object "
+#~ msgstr "Não foi possível encontrar o obejeto "
+
+#~ msgid "Can't find the tab object "
+#~ msgstr "Não foi possível encontrar o objeto tab "
+
+#~ msgid "Can't find the widget(%s)"
+#~ msgstr "Não foi possível encontrar o widget %s"
+
+#~ msgid "Invalid marging value (%s)"
+#~ msgstr "Valor de margem inválido (%s)"
+
+#, fuzzy
+#~ msgid "This object is not a toolbutton item!"
+#~ msgstr "Este objeto não é um ítem PopupMenu!"
+
+#~ msgid "No value to insert"
+#~ msgstr "Nenhum valor a inserir"
+
+#~ msgid "Invalid index(%s)"
+#~ msgstr "Índice inválido (%s)"
+
+#~ msgid "No index specified"
+#~ msgstr "Nenhum índice especificado"
+
+#~ msgid "index %u out of range"
+#~ msgstr "Índice %u fora de alcance"
+
+#~ msgid "Invalid index (%s)"
+#~ msgstr "Índice inválido (%s)"
+
+#~ msgid "Index %u out of range"
+#~ msgstr "Índice %u fora de alcance"
+
+#~ msgid "Invalid resize mode (%s): defaulting to Auto"
+#~ msgstr ""
+#~ "Modo de redimensionamento invalido (%s): usando padrão automaticamente"
+
+#~ msgid "Invalid margin value (%s)"
+#~ msgstr "Valor de margem inválido (%s)"
+
+#~ msgid "Invalid spacing value (%s)"
+#~ msgstr "Valor de espaço inválido (%s)"
+
+#~ msgid "Invalid stretch value (%s)"
+#~ msgstr "Valor de esticar inválido (%s)"
+
+#~ msgid "Invalid from_row parameter (%s)"
+#~ msgstr "Parâmetro de_linha inválido (%s)"
+
+#~ msgid "Invalid to_row parameter (%s)"
+#~ msgstr "Parâmetro para_linha inválido (%s)"
+
+#~ msgid "Invalid from_column parameter (%s)"
+#~ msgstr "Parâmetro de_coluna inválido (%s)"
+
+#~ msgid "Invalid to_column parameter (%s)"
+#~ msgstr "Parâmetro para_coluna inválido (%s)"
+
+#~ msgid "Invalid parameters"
+#~ msgstr "Parâmetros inválido"
+
+#~ msgid "Invalid XCor or YCor range:[min=0] [max=99]"
+#~ msgstr "Escala XCor ou YCor inválida:[min=0] [max=99]"
+
+#~ msgid "$begin() function MUST take 1 parmeter."
+#~ msgstr "A função $begin() DEVE ter 1 parametro."
+
+#~ msgid "Can't find the widget/pixmap (%s)"
+#~ msgstr "Não foi possível encontrar o widget/pixmap %s"
+
+#~ msgid "Widget or Pixmap required (%s)"
+#~ msgstr "Widget ou Pixmap requerido (%s)"
+
+#~ msgid "Invalid bgMode: valid values are Transparent and Opaque"
+#~ msgstr "bgMode inválido: os valores válidos são Transparente e Opaco"
+
+#~ msgid "Can't find the widget object to remove (%s)"
+#~ msgstr "Não foi possível encontrar o objeto widget para remover (%s)"
+
+#~ msgid "Can't remove a non-widget object"
+#~ msgstr "Não foi possível remover um objeto não widget"
+
+#~ msgid "Can't find the widget (%s)"
+#~ msgstr "Não foi possível encontrar o widget (%s)"
+
+#~ msgid "Widget type object required"
+#~ msgstr "Tipo de objeto widget requerido"
+
+#~ msgid "Invalid zoom value (%s)"
+#~ msgstr "Valor zoom inválido (%s)"
+
+#~ msgid "Invalid depth value (%s)"
+#~ msgstr "Valor de profundidade inválido (%s)"
+
+#~ msgid "Invalid value (%s)"
+#~ msgstr "Valor inválido (%s)"
+
+#~ msgid "Invalid paragraph value (%s)"
+#~ msgstr "Valor de parágrafo inválido (%s)"
+
+#~ msgid "There is no widget"
+#~ msgstr "Não há nenhum widget"
+
+#~ msgid " I can't find the specified file."
+#~ msgstr "Eu não posso encontrar o arquivo especificado."
+
+#~ msgid " I cannot read the file."
+#~ msgstr " Eu não posso ler o arquivo."
+
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "Não foi possível encontrar o objeto para adicionar (%s)"
+
+#~ msgid "Class %s is undefined"
+#~ msgstr "Classe %s é indefinida"
+
+#~ msgid "The source object '%s' is not existing"
+#~ msgstr "A origem do objeto ' %s' não existe"
+
+#~ msgid "The target object '%s' is not existing"
+#~ msgstr "O objeto de destino ' %s' não existe"
+
+#~ msgid "No signal '%s' to disconnect"
+#~ msgstr "Nenhum sinal '%s' para desconectar"
+
+#~ msgid "No destination specified"
+#~ msgstr "Nenhum destino especificado"
+
+#~ msgid "Can't find the destination widget/pixmap (%s)"
+#~ msgstr "Não foi possível encontrar o destino widget/pixmap (%s)"
+
+#~ msgid "No source specified"
+#~ msgstr "Nenhuma origem especificada"
+
+#~ msgid "Can't find the source widget/pixmap (%s)"
+#~ msgstr "Não foi possível encontrar a origem widget/pixmap (%s)"
+
+#~ msgid "Invalid x parameter (%s)"
+#~ msgstr "Parâmetro x inválido (%s)"
+
+#~ msgid "Invalid y parameter (%s)"
+#~ msgstr "Parâmetro y inválido (%s)"
+
+#~ msgid "Can't find the listviewitem object to add (%s)"
+#~ msgstr ""
+#~ "Não foi possível encontrar o objeto listviewitem para adicionar (%s)"
+
+#~ msgid "Invalid column (%s)"
+#~ msgstr "Coluna inválida (%s)"
+
+#~ msgid "Invalid margin parameter"
+#~ msgstr "Parâmetro de margem inválido"
+
+#~ msgid "Unknown alignment: %s"
+#~ msgstr "Alinhamento desconhecido: %s"
+
+#~ msgid "Unknown frame / shadow style: %s"
+#~ msgstr "Frame desconhecido / estilo sombra: %s"
+
+#~ msgid "Hey ! You wanna know my echo mode or what ?"
+#~ msgstr "Hei ! Você quer saber o meu modo eco ou o que ?"
+
+#~ msgid "Unknown echo mode"
+#~ msgstr "Modo eco desconhecido"
+
+#~ msgid "No toolbar to add separator."
+#~ msgstr "Nenhuma barra de ferramentas para adicionar separador."
+
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "Não foi possível encontrar o objeto para adicionar (%s)"
+
+#~ msgid "Invalid object."
+#~ msgstr "Objeto inválido."
+
+#~ msgid "Can't find the popupmenu object to add (%s)"
+#~ msgstr "Não foi possível encontrar o objeto popupmenu para adicionar (%s)"
+
+#~ msgid "Doesn't a popupmenu object"
+#~ msgstr "Não é um objecto popupmenu"
+
+#~ msgid "Can't find the widget object (%s)"
+#~ msgstr "Não foi possível encontrar o objeto widget (%s)"
+
+#~ msgid "Invalid columns value (%s)"
+#~ msgstr "Valor de coluna inválido (%s)"
+
+#~ msgid "Invalid size value (%s)"
+#~ msgstr "Valor de tamanho inválido (%s)"
+
+#~ msgid "Invalid icon identifier"
+#~ msgstr "Identificador de ícone inválido"
+
+#~ msgid ""
+#~ "Can't set the current avatar to '%s': failed to start the http transfer"
+#~ msgstr ""
+#~ "Não foi possivel colocar o avatar atual para '%s': falha ao iniciar a "
+#~ "transferência http"
+
+#~ msgid "Can't set the current avatar to '%s': can't load the image"
+#~ msgstr ""
+#~ "Não foi possivel colocar o avatar atual para '%s': não foi possivel "
+#~ "carregar a imagem"
+
+#~ msgid "No environment variable name given"
+#~ msgstr "Não foi possível encontra a variável de ambiente dada"
+
+#~ msgid "Can't find the window with id '%s'"
+#~ msgstr "A janela com id '%s' não foi encontrada."
+
+#~ msgid "The specified window (%s) is not a channel"
+#~ msgstr "A janela (%s) especificada não é um canal"
+
+#~ msgid "No button name specified!"
+#~ msgstr "Nenhum nome de botão especificado"
+
+#~ msgid ""
+#~ "The action \"%1\" is already defined as core action: choosing an "
+#~ "alternate name"
+#~ msgstr ""
+#~ "A ação \"%1\" já está definida como uma ação de núcleo: escolhendo um "
+#~ "nome alternativo"
+
+#~ msgid "No separator name specified"
+#~ msgstr "Nenhum nome de separador especificado"
+
+#~ msgid "No toolbar id specified"
+#~ msgstr "Nenhum id de barra de ferramentas especificado"
+
+#~ msgid "The action \"%s\" doesn't exist"
+#~ msgstr "A ação \"%s\" não existe"
+
+#~ msgid "Invalid IRC context id '%s'"
+#~ msgstr "Id '%s' de contexto de IRC inválido"
+
+#, fuzzy
+#~ msgid "Background not found %s "
+#~ msgstr "Cor de fundo"
+
+#~ msgid "Mask %s is already used to identify user %s"
+#~ msgstr "A máscara %s já esta em uso para identificar o usuário %s"
+
+#~ msgid "User not found (%s)"
+#~ msgstr "Usuário não encontrado (%s)"
+
+#~ msgid "User %s not found"
+#~ msgstr "Usuário %s não encontrado"
+
+#~ msgid "Mask %s already used to identify user %s"
+#~ msgstr "Máscara %s já está sendo usada para identificar o usuário %s"
+
+#~ msgid "Mask %s not found"
+#~ msgstr "Máscara %s não encontrada"
+
+#~ msgid "Sound file '%s' not found"
+#~ msgstr "Arquivo de som '%s' não encontrado"
+
+#~ msgid "Unable to play sound '%s'"
+#~ msgstr "Não foi possível tocar o som '%s'"
+
+#~ msgid "The specified name is empty"
+#~ msgstr "O nome especificado está vazio"
+
+#~ msgid "The specified visible name is empty"
+#~ msgstr "O nome visível especificado está vazio"
+
+#~ msgid "The specified description is empty"
+#~ msgstr "A descrição especificada está vazia"
+
+#~ msgid "The specified KVIrc version \"%s\" is not a valid version string"
+#~ msgstr ""
+#~ "A versão \"%s\" do KVIrc especificada não é uma string de versão válida"
+
+#~ msgid ""
+#~ "This KVIrc executable is too old to run this addon (minimum version "
+#~ "required is %s)"
+#~ msgstr ""
+#~ "O executável do KVirc é muito antigo para executar este script (a versão "
+#~ "mínima requerida é %s)"
+
+#~ msgid "Destination file exists: no copy made"
+#~ msgstr "O arquivo de destino existe: nenhuma cópia feita"
+
+#~ msgid "Failed to copy %s to %s"
+#~ msgstr "Falhou copiar %s para %s"
+
+#~ msgid "Failed to write to file %s"
+#~ msgstr "Falhou ao escrever no arquivo %s"
+
+#~ msgid "Failed to rename %s to %s"
+#~ msgstr "Falhou ao renomear %s para %s"
+
+#~ msgid "Failed to make the directory %s"
+#~ msgstr "Falhou ao criar o diretório %s"
+
+#~ msgid "Failed to remove the file %s"
+#~ msgstr "Falhou ao remover o arquivo %s"
+
+#~ msgid "Failed to remove the directory %s"
+#~ msgstr "Falhou ao remover o diretório %s"
+
+#~ msgid "The specified directory does not exist '%s'"
+#~ msgstr "O directório especificado não existe '%s'"
+
+#~ msgid "Can't open the file \"%s\" for reading"
+#~ msgstr "Não foi possível abrir o arquivo \"%s\" para leitura"
+
+#~ msgid "Read error for file %s"
+#~ msgstr "Erro de leitura para o arquivo %s"
+
+#~ msgid ""
+#~ "Read error for file %s (have been unable to read the requested size in "
+#~ "1000 retries)"
+#~ msgstr ""
+#~ "Erro de leitura para o arquivo %s (foi incapaz de ler o tamanho pedido em "
+#~ "1000 tentativas)"
+
+#~ msgid "No such options page class name"
+#~ msgstr "Sem opções de nome de classe na página"
+
+#, fuzzy
+#~ msgid "%Q is not an integer"
+#~ msgstr "Popup %Q não esta definido."
+
+#~ msgid "Window with caption '%s' not found, returning 0"
+#~ msgstr "Janela com título '%s' não encontrada, retornando 0"
+
+#~ msgid "The specified UNIX time is not valid (%s)"
+#~ msgstr "O tempo UNIX especificado não é válido (%s)"
+
+#~ msgid "The specified time format is not valid (%s)"
+#~ msgstr "O formato de tempo especificado não é valido (%s)"
+
+#~ msgid "No option named '%s'"
+#~ msgstr "Nenhuma opção chamada '%s'"
+
+#~ msgid "No option name specified"
+#~ msgstr "Nenhum nome de opção especificado"
+
+#, fuzzy
+#~ msgid "No link text specified"
+#~ msgstr "Nenhum índice especificado"
+
+#~ msgid "No command specified"
+#~ msgstr "Nenhum comando especificado"
+
+#~ msgid "$sw should be called only in aliases"
+#~ msgstr "$sw devia ser apenas chamado nas aliases"
+
+#~ msgid "Broken prologue code for menu '%s', error detail follows"
+#~ msgstr ""
+#~ "Código prologo quebrado para o menu '%s', os detalhes do erro seguem"
+
+#~ msgid "Broken expression for menu item '%Q', ignoring"
+#~ msgstr "Expressão quebrada para o item do menu '%Q', ignorando"
+
+#~ msgid "Can't find the external popup '%Q', ignoring"
+#~ msgstr "Não foi possel encontrar o popup externo '%Q', ignorando"
+
+#~ msgid "Broken epilogue code for menu '%s', error details follow"
+#~ msgstr "Código epílogo para o menu '%s' quebrado, detalhes do erro a seguir"
+
+#~ msgid "Function name expected"
+#~ msgstr "Nome da função esperado"
+
+#~ msgid "No catalogue %s for the current language found"
+#~ msgstr "Não foi possível encontrar o catálogo %s para a línguagem atual"
+
+#~ msgid "The catalogue %s was not loaded"
+#~ msgstr "O catálogo '%s' não foi carregado"
+
+#~ msgid "Invalid icon specification '%s', using default"
+#~ msgstr "Especificação do ícone inválida ' %s', usando o padrão"
+
+#~ msgid "Missing icon number after the 'i' switch"
+#~ msgstr "Faltando número do ícone após o alternador 'i'"
+
+#~ msgid "Missing window ID after the 'w' switch"
+#~ msgstr "Faltando ID da janela a seguir à letra 'w'"
+
+#~ msgid "No targets specified"
+#~ msgstr "Sem objetivo especifico"
+
+#~ msgid "Missing new nickname"
+#~ msgstr "Novo apelido faltando"
+
+#~ msgid "Missing target"
+#~ msgstr "Objetivo faltando"
+
+#~ msgid "Missing target channel"
+#~ msgstr "Faltando canal de destino"
+
+#~ msgid "No such object (%s)"
+#~ msgstr "Nenhum objeto (%s)"
+
+#~ msgid "Invalid screen coordinates"
+#~ msgstr "Coordenadas inválidas da tela"
+
+#~ msgid "Invalid syntax for the screen coordinates"
+#~ msgstr "Sintaxe inválida para as coordenadas de tela"
+
+#~ msgid "Invalid timeout delay '%s'"
+#~ msgstr "Intervalo de atraso '%s' inválido"
+
+#~ msgid "Empty command block for timer '%s', timer not started"
+#~ msgstr ""
+#~ "Bloco de comandos vazio para o cronômetro '%s', contagem não iniciada"
+
+#~ msgid ""
+#~ "Internal error: Unable to add timer %s, insufficient system resources"
+#~ msgstr ""
+#~ "Erro interno: Incapaz de adicionar cronômetro %s, recursos do sistema "
+#~ "insuficientes"
+
+#~ msgid "No such timer (%s)"
+#~ msgstr "Nenhum timer (%s)"
+
+#~ msgid "No such event (%s)"
+#~ msgstr "Nenhum evento (%s)"
+
+#~ msgid "No handler '%s' for raw numeric event '%d'"
+#~ msgstr "Sem manipulador '%s' para o evento númerico raw '%d'"
+
+#~ msgid "No handler '%s' for event '%s'"
+#~ msgstr "Sem manipulador '%s' para o evento '%s'"
+
+#~ msgid "Failed to execute command '%s'"
+#~ msgstr "Falhou ao executar o comando '%s'"
+
+#~ msgid "Invalid IRC url (%s)"
+#~ msgstr "url de IRC (%s) Inválida"
+
+#~ msgid "The commandline for this url type seems to be broken (%s)"
+#~ msgstr "A linha de comando para este tipo de URL parece estar quebrado (%s)"
+
+#~ msgid "No commandline specified for this type of url (%s)"
+#~ msgstr "Nenhuma linha de comando especificada para este tipo de URL (%s)"
+
+#~ msgid "Invalid pitch (%s): using default"
+#~ msgstr "Caminho (%s) inválido: usando padrão"
+
+#~ msgid "Invalid duration (%s): using default"
+#~ msgstr "Duração (%s) inválida: usando padrão"
+
+#~ msgid "Can't find the icon '%s'"
+#~ msgstr "Não foi possível encontrar o icone '%s'"
+
+#~ msgid "Window button '%s' not found"
+#~ msgstr "Botão de janela '%s' não encontrado"
+
+#~ msgid "Can't rebind the command sequence: missing window identifier"
+#~ msgstr ""
+#~ "Não posso religar a sequência de comandos: faltando o identificador da "
+#~ "janela"
+
+#~ msgid "Can't rebind the command sequence: window with id %s not found"
+#~ msgstr ""
+#~ "Não foi possível religar a sequência de comandos: janela com id %s não "
+#~ "encontrado"
+
+#~ msgid "Unmatched parenthesis in expression body: ignoring trailing garbage"
+#~ msgstr ""
+#~ "Os parênteses não coincidem no corpo da expressão: ignorando caracteres "
+#~ "seguintes "
+
+#~ msgid "Error triggered from timer callback handler %c'%s'"
+#~ msgstr "Erro provocado pelo cronômetro de chamadas %c'%s'"
+
+#~ msgid "Timer callback handler '%s' is broken: killing"
+#~ msgstr "cronômetro de chamadas '%s' está quebrado: finalizando"
+
+#, fuzzy
+#~ msgid "Initializing scripting engine..."
+#~ msgstr "Mecanismo criptográfico inválido"
+
+#~ msgid "Loading actions..."
+#~ msgstr "Carregando ações..."
+
+#~ msgid "Loading icons..."
+#~ msgstr "Carregando ícones..."
+
+#~ msgid "Performing early initializations..."
+#~ msgstr "Executando iniciações adiantadas..."
+
+#~ msgid "Loading window configuration database..."
+#~ msgstr "Carregando a base de dados da configuração de janela..."
+
+#~ msgid "Loading server & proxy database..."
+#~ msgstr "Carregando base de dados de servidores e proxys..."
+
+#~ msgid "Loading event handlers..."
+#~ msgstr "Carregando manipuladores de eventos..."
+
+#~ msgid "Loading raw event handlers..."
+#~ msgstr "Carregando manipuladores de eventos planos..."
+
+#~ msgid "Loading popups..."
+#~ msgstr "Carregando popups..."
+
+#~ msgid "Loading toolbars..."
+#~ msgstr "Carregando barras de ferramentas..."
+
+#~ msgid "Loading aliases..."
+#~ msgstr "Carregando aliases..."
+
+#~ msgid "Loading text icon associations..."
+#~ msgstr "Carregando associações de ícones dos textos..."
+
+#~ msgid "Loading recent entries..."
+#~ msgstr "Carregando entradas recentes..."
+
+#~ msgid "Loading media types..."
+#~ msgstr "Carregando tipos de mídia...."
+
+#~ msgid "Loading registered users..."
+#~ msgstr "Carregando usuários registrados..."
+
+#~ msgid "Loading registered channels..."
+#~ msgstr "Carregando canais registrados..."
+
+#~ msgid "Loading file trader configuration..."
+#~ msgstr "Carregando configuração de compartilhamento de arquivos..."
+
+#~ msgid "Loading nick serv service configuration..."
+#~ msgstr "Carregando configuração do servidor de apelido..."
+
+#~ msgid "Loading history entries..."
+#~ msgstr "Carregando entradas do histórico..."
+
+#~ msgid "Loading avatar cache..."
+#~ msgstr "Carregando avatares armazenados..."
+
+#~ msgid "Creating internal structures..."
+#~ msgstr "Criando estruturas internas..."
+
+#~ msgid "Starting up the engine..."
+#~ msgstr "Inicializando o reator nuclear..."
+
+#~ msgid "Have fun! :)"
+#~ msgstr "Divirta-se :) "
+
+#~ msgid "Show Crypto Controller"
+#~ msgstr "Exibir Controlador de Cripitografia"
+
+#~ msgid "Toggle Notify List"
+#~ msgstr "Alternar lista de notificação"
+
+#~ msgid "Initiating startup sequence..."
+#~ msgstr "Iniciando seqüência de inicio..."
+
+#~ msgid "&New Alias"
+#~ msgstr "&Novo Alias"
+
+#~ msgid "Loading options..."
+#~ msgstr "Carregando as opções..."
+
+#~ msgid "defpopup: internal error"
+#~ msgstr "defpopup: erro interno"
+
+#, fuzzy
+#~ msgid "User Messages"
+#~ msgstr "Mensagem do sistema"
+
+#~ msgid "Transport"
+#~ msgstr "Transporte"
+
+#, fuzzy
+#~ msgid "The specified window does not exist"
+#~ msgstr "O objeto pai especificado não existe"
+
+#, fuzzy
+#~ msgid "The specified timeout is not valid, assuming 0"
+#~ msgstr "O formato de tempo especificado não é valido (%s)"
+
+#, fuzzy
+#~ msgid "No url specified"
+#~ msgstr "Nenhuma origem especificada"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %s"
+#~ msgstr "Falhou ao iniciar o processo"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %Q"
+#~ msgstr "Falhou ao iniciar o processo"
+
+#, fuzzy
+#~ msgid "<unknown size>"
+#~ msgstr "desconhecido"
+
+#, fuzzy
+#~ msgid "Unable to get address of interface %Q"
+#~ msgstr "Escutar em um endereço/interface:"
+
+#, fuzzy
+#~ msgid "Missing target nickname"
+#~ msgstr "Novo apelido faltando"
+
+#, fuzzy
+#~ msgid "Missing filename"
+#~ msgstr "Faltando nome do timer"
+
+#, fuzzy
+#~ msgid "The file size is not an positive number"
+#~ msgstr "O parâmetro especificado não é um inteiro"
+
+#, fuzzy
+#~ msgid "Invalid sample rate '%s', defaulting to 8000"
+#~ msgstr ""
+#~ "Modo de redimensionamento invalido (%s): usando padrão automaticamente"
+
+#, fuzzy
+#~ msgid "The current window has no associated DCC session"
+#~ msgstr "Esta janela não tem contexto de IRC associado"
+
+#, fuzzy
+#~ msgid "The specified parameter is not a valid DCC identifier"
+#~ msgstr "O parâmetro especificado não é um inteiro"
+
+#, fuzzy
+#~ msgid "The specified window identifier is not valid"
+#~ msgstr "O endereço (%Q) especificado para fazer conexões não é válido."
+
+#, fuzzy
+#~ msgid "The first parameter must be an unsigned number"
+#~ msgstr "O parâmetro especificado não é um inteiro"
+
+#, fuzzy
+#~ msgid "No filename specified"
+#~ msgstr "Nenhum nome especificado"
+
+#, fuzzy
+#~ msgid "The file '%s' is not readable"
+#~ msgstr "O popup '%s' não está definido"
+
+#, fuzzy
+#~ msgid "Invalid timeout, ignoring"
+#~ msgstr "Intervalo inválido"
+
+#, fuzzy
+#~ msgid "Invalid visible name: using default"
+#~ msgstr "Caminho (%s) inválido: usando padrão"
+
+#, fuzzy
+#~ msgid "Ops..failed to add the sharedfile..."
+#~ msgstr "Falhou ao carregar a imagem selecionada"
+
+#, fuzzy
+#~ msgid "The specified file size is invalid"
+#~ msgstr "O tempo UNIX especificado não é válido (%s)"
+
+#~ msgid "[Parser warning in '%s']: %s"
+#~ msgstr "[Aviso do analisador em '%s']: %s"
+
+#, fuzzy
+#~ msgid "Windows XP style"
+#~ msgstr "Lista de Janelas"
+
+#, fuzzy
+#~ msgid " I can't find the specified file %s."
+#~ msgstr "Eu não posso encontrar o arquivo especificado."
+
+#~ msgid "-e mode change change"
+#~ msgstr "mudar modo para -e"
+
+#~ msgid ""
+#~ "Can't set the current avatar to '%s' (failed to start the http transfer): "
+#~ "no message sent"
+#~ msgstr ""
+#~ "Não foi possivel colocar o avatar corrente para '%s' (falha ao iniciar a "
+#~ "transferência http): mensagem não enviada"
+
+#~ msgid ""
+#~ "Can't set the current avatar to '%s' (can't load the image): no message "
+#~ "sent"
+#~ msgstr ""
+#~ "Não foi possivel colocar avatar atual para '%s' (não foi possivel "
+#~ "carregar a imagem): nenhuma mensagem enviada"
+
+#~ msgid "No socket text specified"
+#~ msgstr "Nenhum texto do socket especificado"
+
+#~ msgid "Parser"
+#~ msgstr "Analisador"
+
+#~ msgid "Defaults"
+#~ msgstr "Padrões"
+
+#~ msgid "Folders"
+#~ msgstr "Diretórios"
diff --git a/po/modules/options/options_ru.po b/po/modules/options/options_ru.po
new file mode 100644
index 00000000..e3c14f6d
--- /dev/null
+++ b/po/modules/options/options_ru.po
@@ -0,0 +1,4422 @@
+# translation of options_ru.po to Russian
+# translation of options_ru.po to
+# translation of kvirc_ru.po to
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Valerius <[email protected]>, 2004, 2005.
+# Valeriy Girchenko <[email protected]>, 2005.
+# root <[email protected]>, 2005, 2006.
+# Alexey <[email protected]>, 2005.
+# Alexey Uzhva <alexey at kvirc dot ru>, 2007.
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:304
+msgid ""
+msgstr ""
+"Project-Id-Version: options_ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-03-31 10:19+0400\n"
+"Last-Translator: Alexey Uzhva <alexey at kvirc dot ru>\n"
+"Language-Team: Russian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1: 2);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:232
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:51
+msgid "Font:"
+msgstr "Шрифт:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:47
+msgid "Background color:"
+msgstr "Цвет фона:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:129
+msgid "Background image:"
+msgstr "Фоновое изображение:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:51
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:46
+msgid "Horizontal align:"
+msgstr "Горизонтальное расположение:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:50
+msgid "Vertical align:"
+msgstr "Вертикальное расположение:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:59
+msgid "Mark Line:"
+msgstr "Разделительная линия:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:66
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:124
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:59
+msgid "Tile"
+msgstr "Заместить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:62
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:55
+msgid "Left"
+msgstr "Слева"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:56
+msgid "Right"
+msgstr "Справа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:132
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:62
+msgid "Center"
+msgstr "По центру"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:60
+msgid "Top"
+msgstr "Сверху"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:61
+msgid "Bottom"
+msgstr "Снизу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:149
+msgid "Enable URL highlighting"
+msgstr "Подсвечивать URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:150
+msgid "Use line wrap margin"
+msgstr "Использовать линию для разделения полей"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:151
+msgid "Maximum buffer size:"
+msgstr "Максимальный размер буфера:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:152
+msgid " lines"
+msgstr " строк"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:153
+msgid "Link tooltip show delay:"
+msgstr "Задержка всплывающих подсказок:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:306
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:59
+msgid " msec"
+msgstr " мсек"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:155
+msgid "Link tooltip hide delay:"
+msgstr "Скрывать всплывающую подсказку через:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:157
+msgid "Track last read text line"
+msgstr "Отслеживать последнюю прочитанную строку текста"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:48
+msgid "NickServ Authentication Rule"
+msgstr "Правило идентификации NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:55
+msgid "Registered NickName"
+msgstr "Зарегистрированный ник"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:60
+msgid "Put here the nickname that you have registered with NickServ"
+msgstr "Укажите здесь ники под которыми вы зарегистрированы на NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:277
+msgid "NickServ Mask"
+msgstr "Маска NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:70
+#, c-format
+msgid ""
+"This is the mask that NickServ must match to be correctly identified as the "
+"NickServ service. This usually will be something like <b>NickServ!"
+"[email protected]</b>.<br>You can use wildcards for this field, but "
+"generally it is a security flaw. If you're 100%% sure that NO user on the "
+"network can use the nickname \"NickServ\", the mask <b>NickServ!*@*</b> may "
+"be safe to use in this field."
+msgstr ""
+"Это маска NickServ должна соответствовать правильной маске сервиса "
+"идентификации NickServ. Обычно это что-то типа <b>NickServ!service@services."
+"dalnet</b>.<br>Вы можете использовать здесь шаблоны, но как правило это "
+"будет пробел в защите. Если вы на 100%% уверены что никакой пользователь в "
+"сети не может использовать ник \"NickServ\", маска <b>NickServ!*@*</b> может "
+"быть безопасной."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:78
+msgid "Message Regexp"
+msgstr "Сообщение в виде регулярного выражения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:86
+msgid ""
+"This is the simple regular expression that the identification request "
+"message from NickServ must match in order to be correctly recognized.<br>The "
+"message is usually something like \"To identify yourself please use /ns "
+"IDENTIFY password\" and it is sent when the NickServ wants you to "
+"authenticate yourself. You can use the * and ? wildcards."
+msgstr ""
+"Это простое регулярное выражение, которому должно соответствовать сообщение "
+"запроса идентификации NickServ чтобы оно было принято.<br>Обычно это что-то "
+"типа \"To identify yourself please use /ns IDENTIFY password\", и это "
+"NickServ присылает тогда, когда хочет чтобы вы аутентифицировались. Вы "
+"можете использовать * и ? в шаблонах."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:259
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:279
+msgid "Identify Command"
+msgstr "Команда идентификации"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:98
+msgid ""
+"This is the command that will be executed when NickServ requests "
+"authentication for the nickname described in this rule (if the both server "
+"and NickServ mask are matched). This usually will be something like <b>msg "
+"NickServ identify &lt;yourpassword&gt;</b>.<br>You can use <b>msg -q</b> if "
+"you don't want the password echoed on the screen. Please note that there is "
+"no leading slash in this command."
+msgstr ""
+"Это команда которая будет выполняться для запроса аутентификации с указанным "
+"в этом правиле ником (если сервер и маска NickServ совпадут). Это обычно что-"
+"то типа<b>msg NickServ identify &lt;вашпароль&gt;</b>.<br>Вы можете "
+"использовать <b>msg -q</b> если не хотите чтобы пароль выводился на экран. "
+"Пожалуйста имейте ввиду, что в этой команде нет начального слеша"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:256
+msgid "Server mask"
+msgstr "Маска сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:117
+msgid ""
+"This is the mask that the current server must match in order for this rule "
+"to apply. It can contain * and ? wildcards.<br>Do NOT use simply \"*\" "
+"here..."
+msgstr ""
+"Это маска, которой должен соответствовать сервер, чтобы к нему было "
+"применено правило. Здесь можно использовать символы * и ? <br>Не используйте "
+"просто \"*\" здесь..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:128
+msgid "Hint: Move the mouse cursor over the fields to get help"
+msgstr ""
+"Намёк: Поместите курсор мыши над элементами по которым вы хотите получить "
+"справку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:137
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:68
+msgid "Cancel"
+msgstr "О&тмена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:803
+msgid "OK"
+msgstr "Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:164
+msgid "Invalid NickServ Rule"
+msgstr "Недействительное правило NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:169
+msgid "The Nickname field can't be empty!"
+msgstr "Ник не может быть пустым!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:175
+msgid "The Nickname field can't contain spaces!"
+msgstr "Ник не может содержать пробелы!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:183
+msgid "The NickServ mask can't be empty!<br>You must put at least * there."
+msgstr ""
+"Маска NickServ не может быть пустой!<br>Вы должны поместить там хотя бы *."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:191
+msgid "The Message Regexp can't be empty!<br>You must put at least * there."
+msgstr ""
+"Регулярное выражение не может быть пустым!<br>Вы должны поместить там хотя "
+"бы *."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:199
+msgid "The Identify Command can't be empty!"
+msgstr "Команда идентификации не может быть пустой!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:265
+msgid "Enable NickServ Identification"
+msgstr "Включить идентификацию NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:269
+msgid "This check enables the automatic identification with NickServ"
+msgstr "Эта опция включает автоматическую идентификацию на NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:276
+msgid "Nickname"
+msgstr "Ник"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:258
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:278
+msgid "NickServ Request Mask"
+msgstr "Запрос маски NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:265
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on all the networks."
+"<br>Please be aware that this feature can cause your NickServ passwords to "
+"be stolen if used improperly. Make sure that you fully understand the "
+"NickServ authentication protocol.<br>In other words, be sure to know what "
+"you're doing.<br>Also note that the password that you provide is stored as "
+"<b>PLAIN TEXT</b>.<br>KVIrc supports also per-network NickServ "
+"authentication rules that can be created in the \"Advanced...\" network "
+"options (accessible from the servers dialog).</center>"
+msgstr ""
+"<center>Это список правил идентификации NickServ. KVIrc будет использовать "
+"их чтобы автоматически смоделировать взаимодействие с NickServ во всех сетях."
+"<br>Вы должны знать что использование этой возможности может стать причиной "
+"утери ваших паролей при неправильном использовании NickServ. Убедитесь в "
+"том, что вы полностью понимаете механизм аутентификации по протоколу "
+"NickServ.<br>Другими словами, вы должны знать что вы делаете.<br>Также "
+"имейте ввиду, что пароль сохраняется как <b>ОБЫЧНЫЙ ТЕКСТ</b>.<br>KVIrc "
+"также поддерживает правила аутентификации NickServ per-network, которые "
+"могут быть созданы в опциях сети \"Дополнительно...\" (доступно в диалоге "
+"серверов).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:293
+msgid "Add Rule"
+msgstr "Добавить правило"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:298
+msgid "Edit Rule"
+msgstr "Редактировать правило"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:302
+msgid "Delete Rule"
+msgstr "Удалить правило"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:31
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:36
+msgid "Font"
+msgstr "Шрифт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:38
+msgid "Foreground color"
+msgstr "Цвет переднего плана"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:37
+msgid "Background color"
+msgstr "Цвет фона"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:34
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:44
+msgid "Background image"
+msgstr "Фоновое изображение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:40
+msgid "Enable tray icon"
+msgstr "Активировать иконку в трее"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:41
+msgid "Close in tray"
+msgstr "Сворачиваться в трей при закрытии окна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:42
+msgid "Minimize in tray"
+msgstr "Сворачиваться в трей при минимизации окна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:44
+msgid "Enable tray icon flashing"
+msgstr "Активировать мерцание иконки в трее"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:45
+msgid "Enable level-based message notification (not a message-type based)"
+msgstr "Включить поуровневое уведомление (независимое от типов сообщений)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:47
+msgid "Select message levels to notify"
+msgstr "Выбрать уровни сообщения для извещения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:49
+msgid "Minimum level for low-priority messages"
+msgstr "Минимальный уровень для низко-приоритетных сообщений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:53
+msgid "Minimum level for high-priority message"
+msgstr "Минимальный уровень для высоко-приоритетных сообщений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.cpp:40
+msgid ""
+"This section contains irc protection tools<br><p>like<b> flood, ignore, "
+"antispam. </b> </p>"
+msgstr ""
+"Этот раздел содержит утилиты защиты в irc сетях<br><p>такие как<b> антифлуд, "
+"игнорирование, антиспам. </b> </p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:40
+msgid ""
+"<center><b>Settings for CTCP.</b></center><p>The <b>Client-To-Client "
+"Protocol</b> (CTCP) is used to transmit special control messages over an IRC "
+"connection. These messages can request information from clients or negotiate "
+"file transfers.<br><br></p>"
+msgstr ""
+"<center><b>Эта секция содержит настройки CTCP</b></"
+"center><br><br><p><b>Протокол Клиент - Клиент</b> (CTCP) используется для "
+"передачи специальных сообщений поверх IRC соединения. Эти сообщения могут "
+"запрашивать информацию у клиента а также позволяют обмениваться файлами.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:47
+msgid "CTCP Replies"
+msgstr "CTCP ответы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:48
+msgid "Append to VERSION reply:"
+msgstr "Добавить к ответу VERSION:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:52
+msgid ""
+"<center>This text will be appended to the CTCP VERSION reply.<br>For "
+"example, you can place a script name here.</center>"
+msgstr "<center>Этот текст будет добавлен к ответу CTCP VERSION.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:55
+msgid "Append to SOURCE reply:"
+msgstr "Добавить к ответу SOURCE:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:59
+msgid ""
+"<center>This text will be appended to the CTCP SOURCE reply.<br>For example, "
+"you can place the source URL for a script here.</center>"
+msgstr "<center>Этот текст будет добавлен к ответу CTCP SOURCE.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:69
+msgid "PAGE reply:"
+msgstr "Ответ PAGE:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:73
+msgid ""
+"<center>This is the CTCP PAGE reply.<br>It should contain some sort of "
+"acknowledgement for CTCP PAGE messages.</center>"
+msgstr ""
+"<center>Это ответ пейджера CTCP.<br>Здесь должна содержаться информация для "
+"сообщений CTCP пейджера.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:76
+msgid "Show the CTCP replies in the active window"
+msgstr "Показывать ответы CTCP в активном окне"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:78
+msgid "Show dialog for CTCP page requests"
+msgstr "Показать диалог CTCP пейджера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:36
+msgid "Use tree taskbar"
+msgstr "Использовать дерево панели задач"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:37
+msgid "Sort windows by name"
+msgstr "Сортировать окна по имени"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:38
+msgid "Show window icons in taskbar"
+msgstr "Показывать иконки окон в панели задач"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:39
+msgid "Show activity meter in taskbar"
+msgstr "Показывать индикатор активности"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:41
+msgid ""
+"<center>This option enables the usage of the taskbar activity meter. Each "
+"window entry will have a small indicator of the activity that is going on in "
+"that window. The indicator is a small square that changes colors, dark "
+"colors mean low activity, while bright colors signal high activity. KVIrc "
+"also uses some heuristics to determine whether the activity is somewhat "
+"\"human\" or it is generated by automated entities (such as bots or IRC "
+"servers). \"Human\" activity causes the indicator to be shaded red while "
+"automated activity causes the indicator to be shaded blue.</center>"
+msgstr ""
+"<center>Эта опция включит индикатор активности панели задач. Каждое окно "
+"будет иметь небольшой индикатор активности который будет показываться в этом "
+"окне. Индикатор является небольшим квадратиком который изменяет цвета, "
+"чёрный цвет соответствует низкой активности, тогда как яркие цвета "
+"показывают высокую активность. KVIrc также использует некоторую эвристику "
+"для определения того, или это \"человеческая\" активность, или нечто "
+"автоматически генерирующее (например боты или IRC серверы). \"Человеческую\" "
+"активность показывает индикатор в красных тонах, а автоматическую - в синих."
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:49
+msgid "Show IRC context indicator in taskbar"
+msgstr "Показывать контекстный индикатор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:50
+msgid "Enable window tooltips"
+msgstr "Показывать всплывающую подсказку по окнам"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:233
+msgid "Text/Alert Colors"
+msgstr "Цвета текста/предупреждений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:125
+msgid "Normal:"
+msgstr "Нормальный:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:126
+msgid "Selected:"
+msgstr "Выбранный:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:236
+msgid "Alert Level 1:"
+msgstr "Уровень предупреждений 1:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:237
+msgid "Alert Level 2:"
+msgstr "Уровень предупреждений 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:238
+msgid "Alert Level 3:"
+msgstr "Уровень предупреждений 3:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:239
+msgid "Alert Level 4:"
+msgstr "Уровень предупреждений 4:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:240
+msgid "Alert Level 5:"
+msgstr "Уровень предупреждений 5:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:241
+msgid "Progress bar color:"
+msgstr "Цвет полосы прогресса:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:124
+msgid "Background Colors"
+msgstr "Цвета фона"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:212
+msgid "Show header"
+msgstr "Показать заголовок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:214
+msgid "Minimum width:"
+msgstr "Минимальная ширина:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:215
+msgid "Maximum width:"
+msgstr "Максимальная ширина:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:235
+msgid "Minimized:"
+msgstr "Минимизированный:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:242
+msgid "Minimum width of buttons:"
+msgstr "Минимальная ширина кнопок:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:244
+msgid "Set maximum button width"
+msgstr "Установить максимальную ширину кнопки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:245
+msgid "Maximum width of buttons:"
+msgstr "Максимальная ширина кнопок:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:246
+msgid "Use flat buttons"
+msgstr "Использовать плоские кнопки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:96
+msgid "Network Details"
+msgstr "Подробности о сети"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:82
+msgid "Description:"
+msgstr "Описание:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:116
+msgid "<center>Put here a brief description of the network.</center>"
+msgstr "<center>Укажите здесь краткое описание сети.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:477
+msgid "Properties"
+msgstr "Свойства"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:123
+msgid "Username:"
+msgstr "Имя пользователя:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:134
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to servers "
+"on this network.\n"
+"If this field is left empty (most common case), KVIrc will use the default "
+"username specified in the \"Identity\" options tab.</center>"
+msgstr ""
+"<center>Это <b>имя пользователя</b> которое KVIrc будет использовать для "
+"входа на сервера этой сети.\n"
+"Если это поле оставлено пустым (наиболее общий случай), KVIrc будет "
+"использовать значение имени по умолчанию определённое в секции "
+"\"Идентификация\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:498
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:320
+msgid "Nickname:"
+msgstr "Ник:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:145
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to the servers on this network.<br>If this field is left empty (most "
+"common case), the default nickname (specified in the \"Identity\" settings) "
+"will be used.</center>"
+msgstr ""
+"<center>Вы можете определить \"специальный\" <b>ник</b> который будет "
+"использоваться для идентификации на серверах этой сети.<br>Если это поле "
+"оставлено пустым (наиболее общий случай), используется значение по умолчанию "
+"(определённое в секции \"Идентификация\").</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:509
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:342
+msgid "Real name:"
+msgstr "Реальное имя:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:153
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with the servers on this network.<br>If you leave this field empty "
+"(most common case), the default \"real name\" (specified in the \"Identity\" "
+"settings) will be used.</center>"
+msgstr ""
+"<center>Вы можете определить \"специальное\" <b>реальное имя</b> который "
+"будет использоваться для идентификации на серверах этой сети.<br>Если это "
+"поле оставлено пустым (наиболее общий случай), используется значение по "
+"умолчанию (определённое в секции \"Идентификация\").</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:644
+msgid "Encoding:"
+msgstr "Кодировка:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:164
+msgid ""
+"<center>This box allows you to choose the preferred encoding for the servers "
+"in this network. If you choose \"Use System Encoding\" then the encoding "
+"will be set to the systemwide value that you choose in the \"Encoding\" page "
+"of the options dialog.</center>"
+msgstr ""
+"<center>Здесь вы можете выбрать предпочтительную кодировку для серверов этой "
+"сети. Если вы выберите \"Использовать кодировку системы\", то установится "
+"общесистемное значение определённое в секции \"Кодировка\"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:173
+msgid "Use System Encoding"
+msgstr "Использовать кодировку системы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:185
+msgid "Connect to this network at startup"
+msgstr "Подключаться к этой сети при запуске программы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:189
+msgid ""
+"<center>This option will cause KVIrc to automatically connect to this "
+"network at startup</center>"
+msgstr ""
+"<center>Эта опция заставит KVIrc подключаться к этой IRC сети при старте.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:79
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:120
+msgid "General"
+msgstr "Общие"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:756
+msgid "Channels to join automatically upon connect:"
+msgstr "Автоматически входить на каналы при подключении:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:211
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to a server in this network has been established. To add a "
+"channel, type its name in the text input below and click \"<b>Add</b>\".</"
+"center>"
+msgstr ""
+"<center>Здесь вы можете определить список каналов для автоматического входа "
+"после подключения к серверу. Для того чтобы добавить канал впишите его имя в "
+"текстовое поле и нажмите кнопку<b>Добавить</b>\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:217
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:62
+msgid "Join Channels"
+msgstr "Входить на каналы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:228
+msgid ""
+"<center>The following commands will be executed after a connection to a "
+"server in this network has been established.<br><b>Important:</b> Enter "
+"commands <b>without</b> a preceding slash (e.g. <tt>quote pass secret</tt> "
+"instead of <tt>/quote pass secret</tt>).<br>KVIrc will first send the USER "
+"command, then eventually PASS and NICK and then execute this command "
+"sequence.</center>"
+msgstr ""
+"<center>Следующие команды будут выполнены после подключения к серверу сети."
+"<br><b>Важно:</b> Вводите команды <b>без</b> начального слеша (например "
+"<tt>quote pass secret</tt> вместо <tt>/quote pass secret</tt>).<br>KVIrc "
+"сначала посылает команду USER, затем PASS и NICK и только после этого "
+"выполнит эти команды.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:782
+msgid "On Connect"
+msgstr "При подключении"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:249
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"a server in this network.<br><b>Important:</b> Enter commands <b>without</b> "
+"a preceding slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote "
+"privatelog</tt>).<br>This is useful for automatically opening queries, "
+"setting variables, etc.</center>"
+msgstr ""
+"<center>Следующие команды будут выполнены после успешного входа на сервер "
+"сети.<br><b>Важно:</b> Вводите команды <b>без</b> начального слеша (например "
+"<tt>quote privatelog</tt> вместо <tt>/quote privatelog</tt>).<br>Это полезно "
+"чтобы автоматически открывать окна приватов, устанавливать переменные, и т.п."
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:801
+msgid "On Login"
+msgstr "При входе"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:285
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on this network.<br>Please "
+"be aware that this feature can cause your NickServ passwords to be stolen if "
+"used improperly. Make sure that you fully understand the NickServ "
+"authentication protocol.<br>In other words, be sure to know what you're "
+"doing.<br>Also note that the password that you provide is stored as <b>PLAIN "
+"TEXT</b>.</center>"
+msgstr ""
+"<center>Это список правил идентификации NickServ. KVIrc будет использовать "
+"их чтобы автоматически смоделировать взаимодействие с NickServ.<br>Вы должны "
+"знать что использование этой возможности может стать причиной утери ваших "
+"паролей при неправильном использовании NickServ. Убедитесь в том, что вы "
+"полностью понимаете механизм аутентификации по протоколу NickServ."
+"<br>Другими словами, вы должны знать что вы делаете.<br>Также имейте ввиду, "
+"что пароль сохраняется как <b>ОБЫЧНЫЙ ТЕКСТ</b>.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:35
+msgid "NickServ"
+msgstr "NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:323
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:60
+msgid "&OK"
+msgstr "&Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:449
+msgid "Server Details"
+msgstr "Подробности о сервере"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:465
+msgid ""
+"<center>This is a brief description of this server. This field has no "
+"restrictions but many server lists use it to describe the server's physical "
+"location</center>"
+msgstr ""
+"<center>Это краткое описание сервера. Вы можете писать здесь что угодно, но "
+"обычно это поле используется для указания физического расположения сервера</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:484
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to this "
+"server.\n"
+"If this field is left empty (most common case), KVIrc will first look if an "
+"username is specified for the network that this server belongs to, and if "
+"that is empty then KVIrc will use the default username specified in the "
+"\"Identity\" options tab.</center>"
+msgstr ""
+"<center>Это <b>имя пользователя</b> KVIrc будет использовать для входа на "
+"этот сервер.\n"
+"Если это поле оставлено пустым (наиболее общий случай), KVIrc сначала "
+"попытается найти имя заданное для сети к которой принадлежит этот сервер, а "
+"если и это поле пустое, то будет использоваться имя пользователя, заданное в "
+"секции \"Идентификация\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:490
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:127
+msgid "Password:"
+msgstr "Пароль:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:495
+msgid ""
+"<center>If this server requires a password, put it in this field, otherwise "
+"leave it empty.</center>"
+msgstr ""
+"<center>Если сервер требует пароль, укажите его в этом поле. В противном "
+"случае оставьте поле пустым.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:504
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to this server.<br>If this field is left empty (most common case), "
+"KVIrc will first look if a nickname is specified for the network that this "
+"server belongs to, and if that is empty then the default nickname (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center>Вы можете определить \"специальный\" <b>ник</b> который будет "
+"использоваться для входа на на этот сервер.<br>Если это поле оставлено "
+"пустым (наиболее общий случай), KVIrc сначала попытается найти ник заданный "
+"для сети к которой принадлежит этот сервер, а если и это поле пустое, то "
+"будет использоваться ник, заданный в секции \"Идентификация\"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:513
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with this server.<br>If you leave this field empty (most common case), "
+"KVIrc will first look if a real name is specified for the network that this "
+"server belongs to, and if that is empty the default \"real name\" (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center>Вы можете определить \"специальное\" <b>реальное имя</b> которое "
+"будет использоваться при входа на на этом сервер.<br>Если это поле оставлено "
+"пустым (наиболее общий случай), KVIrc сначала попытается найти реальное имя "
+"заданное для сети к которой принадлежит этот сервер, а если и это поле "
+"пустое, то будет использоваться реальное имя, заданное в секции "
+"\"Идентификация\"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:683
+msgid "User Mode"
+msgstr "Режим пользователя"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:520
+msgid "Use default user mode"
+msgstr "Использовать режимы по умолчанию"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:522
+msgid ""
+"<center>If this is enabled, the global initial <b>user mode</b> (configured "
+"from the identity dialog) will be used. If disabled, you can configure an "
+"initial user mode for this server"
+msgstr ""
+"<center>Если включена эта опция, будет использован глобальный исходный "
+"<b>режим пользователя</b> (сконфигурированный в диалоге идентификации) Если "
+"это выключено, вы сможете сконфигурировать режимы пользователя для этого "
+"сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:684
+msgid "Invisible (+i)"
+msgstr "Невидимый (+i)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:534
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:685
+msgid "Server notices (+s)"
+msgstr "Извещения сервера (+s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:686
+msgid "Wallops (+w)"
+msgstr "Wallops (+w)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:548
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:60
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:104
+msgid "Identity"
+msgstr "Идентификация"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:115
+msgid "Port:"
+msgstr "Порт:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:565
+msgid ""
+"<center>This is the default <b>port</b> that this server will be contacted "
+"on.<br>Usually <b>6667</b> is OK.</center>"
+msgstr ""
+"<center>Это <b>порт</b> сервера который будет использоваться по умолчанию "
+"для подключения.<br>Обычно используется <b>6667</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:571
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:119
+msgid "IP address:"
+msgstr "IP адрес:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:576
+msgid ""
+"<center>This is the <b>IP address</b> of this server, it is here for caching "
+"purposes.<br>If you leave this field empty, KVIrc will fill it in the first "
+"time it connects to the server. If you enable the \"cache IP address\" "
+"option below, KVIrc will use it as a \"cached result\" and avoid looking it "
+"up again.</center>"
+msgstr ""
+"<center>Это <b>IP адрес</b> этого сервера, который будет кешироваться."
+"<br>Если вы оставите это поле пустым, KVIrc заполнит его при первом "
+"подключении к серверу. Если вы включите ниже опцию \"Кешировать IP адрес\", "
+"KVIrc будет использовать это значение как \"результат кеширования\" и по "
+"возможности не будет искать его снова. </center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:596
+msgid "Cache IP address"
+msgstr "Кешировать IP адрес"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:599
+msgid ""
+"<center>This check will enable <b>IP address caching</b> for this server:"
+"<br>DNS lookups can be time-consuming and might be blocking on some "
+"platforms; this option will cause KVIrc to look up the server hostname only "
+"once.<br><br> Advanced: you can also use this option to force a certain "
+"server name to resolve to a fixed ip address when either the dns for that "
+"server is temporairly unreachable or you want to avoid the round-robin "
+"lookups.</center>"
+msgstr ""
+"<center>Эта опция включит <b>кеширование IP адреса</b> для этого сервера."
+"<br>Поиск DNS может быть довольно рессурсоёмким и даже блокировать некоторые "
+"платформы; эта опция заставит KVIrc искать сервер только один раз.<br><br> "
+"Дополнительно: вы можете также использовать эту опцию, чтобы форсировать "
+"разыменование сервера в фиксированный IP адрес когда DNS этого сервера "
+"временно не доступен или вы хотите избежать зацикливания поиска.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:609
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:140
+msgid "Use IPv6 protocol"
+msgstr "Использовать IPv6 протокол"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:619
+msgid ""
+"<center>This check identifies IPv6 servers.<br>If enabled, KVIrc will "
+"attempt to use the IPv6 protocol (thus your OS <b>must</b> have a working "
+"IPv6 stack and you <b>must</b> have an IPv6 connection).</center>"
+msgstr ""
+"<center>Это опция идентификации на IPv6 серверах.<br>Если включено, KVIrc "
+"попытается использовать IPv6 протокол (ваша ОС также <b>должна</b> иметь "
+"поддержку работы с IPv6 стеком и вы <b>должны</b> иметь IPv6 соединение).</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:624
+msgid "Use SSL protocol"
+msgstr "Использовать SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:627
+msgid ""
+"<center>This check will cause the connection to use the <b>Secure Socket "
+"Layer</b> encryption support. Obviously, this server must have support for "
+"this, too. :)</center>"
+msgstr ""
+"<center>Эта опция включит при соединении поддержку шифрования <b>SSL</b>. "
+"Очевидно что и сервер должен иметь такую поддержку :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:636
+msgid "Connect to this server at startup"
+msgstr "Подключаться к этому серверу при старте"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:641
+msgid ""
+"<center>This option will cause KVIrc to connect to the IRC server when it is "
+"started.</center>"
+msgstr ""
+"<center>Эта опция заставит KVIrc подключаться к этому IRC серверу при старте."
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:650
+msgid ""
+"<center>This box allows you to choose the preferred encoding for this sever. "
+"If you choose \"Use Network Encoding\" then the encoding will be inherited "
+"from the network that this server belongs to.</center>"
+msgstr ""
+"<center>Здесь вы можете указать предпочтительную кодировку для этого "
+"сервера. Если вы выберите \"Использовать кодировку сети\", то унаследуется "
+"кодировка заданная для сети, к которой принадлежит этот сервер.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:659
+msgid "Use Network Encoding"
+msgstr "Использовать кодировку сети"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:672
+msgid "Link filter:"
+msgstr "Фильтр ссылки:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:701
+msgid ""
+"<center>This field specifies the name of a module that exports a link filter "
+"for this type of server.<br>For plain IRC connections, you don't need any "
+"link filters; this is used for incompatible protocols.</center>"
+msgstr ""
+"<center>Это поле определяет имя модуля который экспортирует фильтр ссылки "
+"для этого типа сервера.<br>Для обычных IRC соединений вам не нужны никакие "
+"фильтры, это используется для несовместимых протоколов.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:705
+msgid "Id:"
+msgstr "Id:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:713
+msgid ""
+"<center>This field allows you to specify a really unique id for this server. "
+"You will then be able to use /server -x &lt;this_id&gt; to make the "
+"connection. This is especially useful when you have multiple server entries "
+"with the same hostname and port in different networks (bouncers?)</center>"
+msgstr ""
+"<center>Здесь Вы можете определить действительно уникальный id для этого "
+"сервера. Это даст возможность использовать /server -x &lt;этот_id&gt; , "
+"чтобы подключиться. Это особенно полезно, когда Вы имеете многократные "
+"подключения к серверу с тем же самым именем хоста и портом в различных сетях "
+"(bouncers?)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:719
+msgid "Proxy server:"
+msgstr "Прокси сервер:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:724
+msgid ""
+"<center>This is the <b>proxy</b> that KVIrc will use to connect to thos "
+"server.\n"
+"If this field is set in \"Default\" KVirc will use global proxy settings, if "
+"it is set in \"Direct connection\" KVirc will connect to this server without "
+"proxy. You can define new proxy server in global options' \"Proxy servers\" "
+"menu.</center>"
+msgstr ""
+"<center>Это <b>прокси</b> который KVIrc будет использовать для подключения к "
+"этому серверу.\n"
+"Если эта область будет установлена в значение \"По умолчанию \" то KVirc "
+"будет использовать глобальные настройки, если это будет установлено в "
+"\"Прямое подключение\" то KVirc соединится с этим сервером без прокси. Вы "
+"можете определить новый прокси-сервер в глобальных опциях меню \"Прокси "
+"серверы\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:729
+msgid "Default"
+msgstr "По умолчанию"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:730
+msgid "Direct connection"
+msgstr "Прямое подключение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:746
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:28
+msgid "Connection"
+msgstr "Соединение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:758
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to this server has been established. To add a channel, type its "
+"name in the text input below and click \"<b>Add</b>\".</center>"
+msgstr ""
+"<center>Здесь вы можете определить список каналов на которые вы будете "
+"автоматически входить после того как будет установлена связь с сервером. Для "
+"добавления канала введите его имя в текстовом поле внизу и нажмите кнопку "
+"\"<b>Добавить</b>\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:776
+msgid ""
+"<center>The following commands will be executed after a connection has been "
+"established.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote pass secret</tt> instead of <tt>/quote pass secret</"
+"tt>).<br>KVIrc will first send the USER command, then eventually PASS and "
+"NICK and then execute this command sequence.<br>This is particularly useful "
+"for IRC bouncers that require login commands.</center>"
+msgstr ""
+"<center>Указанные команды будут выполнены после установления соединения."
+"<br><b>Важно:</b> Вводите команды <b>без</b> предшествующего слеша (например "
+"<tt>quote pass secret</tt> вместо <tt>/quote pass secret</tt>).<br>KVIrc "
+"сначала посылает команду USER, потом PASS и NICK и только после этого "
+"выполнит указанные команды.<br>Это особенно полезно для IRC баунсеров, "
+"которые требуют выполнения команд при входе.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:796
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"this server.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote privatelog</tt>)."
+"<br>This is useful for automatically opening queries, setting variables, etc."
+"</center>"
+msgstr ""
+"<center>Указанные команды будут выполнены после удачного входа на этот "
+"сервер.<br><b>Важно:</b> Вводите команды <b>без</b> предшествующего слеша "
+"(например <tt>quote privatelog</tt> вместо <tt>/quote privatelog</tt>)."
+"<br>Это полезно для автоматического открытия окон приватов, установки "
+"значений переменных и т.п.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1041
+msgid "Server"
+msgstr "Сервер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1042
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:73
+msgid "Description"
+msgstr "Описание"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1054
+msgid ""
+"<center>This is the list of available IRC servers.<br>Right-click on the "
+"list to add or remove servers and perform other actions.<br>Double-click on "
+"a item for advanced options.</center>"
+msgstr ""
+"<center>Это список доступных IRC серверов.<br>Щёлкните правой на списке для "
+"добавления, удаления серверов и выполнения других операций.<br>Двойной клик "
+"на пункте - для вызова дополнительных опций.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1069
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1430
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1554
+msgid "New Network"
+msgstr "Новая сеть"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1077
+msgid "New Server"
+msgstr "Новый сервер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1086
+msgid "Remove Network/Server"
+msgstr "Удалить сеть/сервер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1098
+msgid "Copy Server"
+msgstr "Копировать сервер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1107
+msgid "Paste Server"
+msgstr "Вставить сервер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1446
+msgid "Import List"
+msgstr "Импортировать список"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1125
+msgid "Active Configuration"
+msgstr "Текущая конфигурация"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1332
+msgid "Server:"
+msgstr "Сервер:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1130
+msgid ""
+"<center>This is the name of the currently selected server or network</center>"
+msgstr "<center>Это имя текущего выбранного сервера или сети</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1153
+msgid "Advanced..."
+msgstr "Дополнительно..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1156
+msgid "<center>Click here to edit advanced options for this entry</center>"
+msgstr ""
+"<center>Кликните здесь для редактирования дополнительных опций</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1159
+msgid "Connect &Now"
+msgstr "Подключиться &сейчас"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1164
+msgid ""
+"<center>Hit this button to connect to the currently selected server.</center>"
+msgstr ""
+"<center>Нажмите на эту кнопку для подключения к выбранному серверу.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1177
+msgid ""
+"<center>This button shows a list of recently used servers. It allows you to "
+"quickly find them in the list.</center>"
+msgstr ""
+"<center>Эта кнопка покажет список недавно использовавшихся серверов. Она "
+"позволит вам быстро находить их в списке.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1181
+msgid "Show this dialog at startup"
+msgstr "Показать этот диалог при старте"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1184
+msgid ""
+"<center>If this option is enabled, the Servers dialog will appear every time "
+"you start KVIrc</center>"
+msgstr ""
+"<center>Если включена эта опция, диалог Серверов появляется при каждом "
+"запуске KVIrc</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1335
+msgid "Network:"
+msgstr "Сеть:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1345
+msgid "No selection"
+msgstr "Не выбрано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1364
+msgid "UnknownNet"
+msgstr "Неизвестная Сеть"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1431
+msgid "Remove Network"
+msgstr "Удалить сеть"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1434
+msgid "&New Server"
+msgstr "&Новый сервер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1435
+msgid "Re&move Server"
+msgstr "Уда&лить сервер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1437
+msgid "&Copy Server"
+msgstr "&Копировать сервер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1439
+msgid "&Paste Server"
+msgstr "&Вставить сервер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1444
+msgid "Clear List"
+msgstr "Очистить список"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1483
+msgid ""
+"Oops... something weird happened:<br>Can't find any module capable of "
+"importing servers."
+msgstr ""
+"Упс... произошло что-то странное:<br>Не могу найти ни одного модуля "
+"способного импортировать сервера."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1500
+msgid ""
+"Oops... something weird happened:<br>Can't find the module that was capable "
+"of this import action. :("
+msgstr ""
+"Упс... произошло что-то странное:<br>Не могу найти ни одного модуля "
+"способного импортировать действие. :("
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1574
+msgid "irc.unknown.net"
+msgstr "irc.сервер.net"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:39
+msgid "Disable parser warnings"
+msgstr "Выключить предупреждения синтаксического анализатора"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:40
+msgid "Disable broken event handlers"
+msgstr "Выключить битые обработчики событий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:41
+msgid "Kill broken timers"
+msgstr "Убить битые таймеры"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:42
+msgid "Send unknown commands as /RAW"
+msgstr "Посылать неизвестные команды как /RAW"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:46
+msgid "Automatically unload unused modules"
+msgstr "Автоматически выгружать неиспользуемые модули"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:47
+msgid "Ignore module versions (dangerous)"
+msgstr "Игнорировать версии модулей (опасно!)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:51
+msgid "Relay errors and warnings to debug window"
+msgstr "Записывать ошибки и предупреждение в отладочное окно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:52
+msgid "Create minimized debug window"
+msgstr "Создать свернутое окно отладки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:59
+msgid "Nickname alternatives"
+msgstr "Альтернативные ники"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:62
+msgid ""
+"<center>Here you can choose up to three nicknames alternative to the primary "
+"one. KVIrc will use the alternatives if the primary nick is already used by "
+"someone else on a particular IRC network.</center>"
+msgstr ""
+"<center>Здесь вы можете выбрать до трёх альтернативных ников. KVIrc будет их "
+"использовать, если первичный ник уже занят.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:69
+msgid "Alt. Nickname 1:"
+msgstr "Альтернативный ник 1:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:76
+msgid "Alt. Nickname 2:"
+msgstr "Альтернативный ник 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:83
+msgid "Alt. Nickname 3:"
+msgstr "Альтернативный ник 3:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Ok"
+msgstr "Ок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:130
+msgid "Avatar Download - KVIrc"
+msgstr "Загрузка аватара - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:136
+msgid "<center>Please wait while the avatar is being downloaded</center>"
+msgstr "<center>Пожалуйста подождите пока загрузится аватар</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:139
+msgid "Abort"
+msgstr "Прервать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:170
+msgid "Failed to start the download"
+msgstr "Не удалось запустить загрузку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:184
+msgid "Download aborted by user"
+msgstr "Загрузка прервана пользователем"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:213
+msgid "Choose Avatar - KVIrc"
+msgstr "Выбор аватара - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:219
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+"Пожалуйста выберите картинку аватара. Это может быть полный путь к "
+"локальному файлу или Web-адрес.<br>Если вы хотите использовать локальный "
+"файл, щёлкните по кнопке \"<b>Выбрать</b>\" чтобы просмотреть локальные "
+"каталоги.<br>Полный URL картинки (включая <b>http://</b>) можно ввести "
+"вручную."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:237
+msgid "&Browse..."
+msgstr "&Выбрать..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:275
+msgid "Choose an Image File - KVIrc"
+msgstr "Выберите файл картинки - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:316
+msgid "Basic Properties"
+msgstr "Основные настройки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:323
+msgid ""
+"<center>Your <b>nickname</b> is your primary form of identification on IRC."
+"<br>Since servers cannot accept multiple users sharing the same nickname "
+"(case insensitive), you can provide alternative nicknames to be used in "
+"casethe server refuses to accept the default one.</center>"
+msgstr ""
+"<center>Ваш <b>ник</b> является первичной формой идентификации в IRC."
+"<br>Поскольку сервера не могут принять нескольких пользователей, "
+"использующих один и тот же ник (без учёта регистра), вы можете задать "
+"альтернативные ники, которые будут использоваться если сервер не сможет "
+"принять основной ник.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:331
+msgid "Alternatives..."
+msgstr "Альтернативы..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:337
+msgid ""
+"<center>This is the <b>username</b> that you will use to connect to the "
+"server.<br>In the past, it was used as a form of authentication, but it "
+"normally has no special use now.<br>In addition to your nickname, you are "
+"identified on IRC by your <b>username@hostname</b>.</br>Basically, you can "
+"enter any word you like here. :D</center>"
+msgstr ""
+"<center>Это <b>имя пользователя</b> которое будет использоваться для "
+"подключения к серверу<br>Раньше использовалось как форма аутентификации, но "
+"сейчас обычно для этого не применяется.<br>В дополнение к своему нику вы "
+"идентифицируетесь в IRC как <b>имяпользователя@хост</b>.</br>Вы можете "
+"ввести здесь любое слово которое вам понравится :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:346
+msgid ""
+"<center>This text will appear when someone does a /WHOIS on you.<br>It is "
+"intended to be your real name, but people tend to put random quotes and "
+"phrases here too.</center>"
+msgstr ""
+"<center>Этот текст появится когда кто-то выполнит /WHOIS на вас.<br>Это "
+"должно быть ваше реальное имя, но люди обычно помещают здесь произвольные "
+"фразы.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:351
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+"Это поле не обязательно, оно будет отображаться в информации, возвращаемой с "
+"помощью CTCP USERINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:356
+msgid "Profile"
+msgstr "Профиль"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:361
+msgid "Age:"
+msgstr "Возраст:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:366
+msgid "Here you can specify your age."
+msgstr "Здесь вы можете указать свой возраст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:401
+msgid "Unspecified"
+msgstr "Не задано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:391
+msgid "Gender:"
+msgstr "Пол:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:396
+msgid "Here you can specify your gender."
+msgstr "Здесь вы можете указать свой пол."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:402
+msgid "Female"
+msgstr "Женский"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:403
+msgid "Male"
+msgstr "Мужской"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:414
+msgid "Location:"
+msgstr "Расположение:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:417
+msgid ""
+"You can describe here your approximate physical location. Something like "
+"\"Region, Country\" will be ok. Please note that this information will be "
+"viewable by anyone so putting more data (like the exact address), generally, "
+"<b>is not a good idea</b>."
+msgstr ""
+"Здесь вы можете описать свое примерное географическое местоположение. Что-"
+"нибудь в роде \"Регион, Страна\". Помните, что эта информация может быть "
+"просмотрена кем угодно и не стоит указывать информацию, которую вы не хотите "
+"о себе рассказывать (например точный адрес)."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:422
+msgid "Languages:"
+msgstr "Языки:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:425
+msgid ""
+"You can put here the short names of the languages you can speak. An example "
+"might be \"EN,IT\" that would mean that you speak both Italian and English."
+msgstr ""
+"Вы можете здесь указать короткие называния языков, на которых вы можете "
+"разговаривать. Например \"RU,EN\" будет значить что вы можете говорить на "
+"русском и английском."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:429
+msgid "Other:"
+msgstr "Дополнительная информация:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:432
+msgid ""
+"You can put here some additional personal data. It might be a funny quote or "
+"your homepage url... Please note that this information will be viewable by "
+"anyone so <b>don't put any sensible data</b> (passwords, telephone or credit "
+"card numbers)."
+msgstr ""
+"Здесь вы можете указать дополнительные сведения о себе. Это может быть "
+"смешная цитата или адрес домашней странички... Помните, что эта информация "
+"общедоступна, <b>не указывайте никаких персональных данных, которые не "
+"должны быть доступны публично</b> (пароли, номера телефонов или кредитных "
+"карт)."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:502
+msgid ""
+"Here you can choose your avatar image. It will be visible<br>by other people "
+"that request it. Choose a nice image of yourself,<br>possibly avoiding "
+"obscenity and offending images. It is a good idea<br>to choose a relatively "
+"small file (say 150 Kb max) because<br>most clients have a limit on the size "
+"of avatars being downloaded.<br>The image also should be smaller than "
+"800x600 pixels since<br>it will have to be viewable in everyone's monitor."
+msgstr ""
+"Здесь вы можете выбрать свой аватар. Он будет виден другим людям <br>. "
+"Выберите изображение, характеризующее вас, <br> избегая изображений, которые "
+"могут вызвать негативные эмоции у ваших собеседников. Не забывайте <br> о "
+"размере изображений. Не выбирайте <br> картинок с размером более чем 150 "
+"килобайт, т.к. большинство удаленных пользователей имеют ограничения на "
+"размер загружаемого <br> файла, и они не станут использовать предложенное "
+"вами изображение. <br> Избегайте также больших размеров картинки в высоту и "
+"ширину. помните, что не у всех есть большой монитор."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:511
+msgid "Use avatar"
+msgstr "Использовать аватар"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:537
+msgid "Choose..."
+msgstr "Выбрать..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:598
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:637
+msgid "Failed to Load Avatar - KVIrc"
+msgstr "Невозможно загрузить аватар - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:599
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:638
+msgid ""
+"Failed to load the avatar image.<br>It may be an unaccessible file or an "
+"unsupported image format."
+msgstr ""
+"Не могу загрузить рисунок аватара<br>Файл может быть не доступен или это не "
+"поддерживаемый формат картинки."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:606
+msgid "Failed to download the avatar image.<br><b>%Q</b>"
+msgstr "Невозможно загрузить аватар.<br><b>%Q</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:608
+msgid "Avatar Download Failed - KVIrc"
+msgstr "Ошибка загрузки аватара - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:649
+msgid "Avatar Might Be Too Big - KVIrc"
+msgstr "Аватар слишком большой - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:650
+msgid ""
+"The avatar you have choosen is bigger than 1024x768 pixels.<br>Such a big "
+"image will not be seen on all the user monitors<br>and will probably be "
+"scaled by the remote clients with poor quality<br>algorithms to improve "
+"performance. You *should* scale it manually<br>to a sane size (like 800x600) "
+"or choose a different image."
+msgstr ""
+"Выбранный вами аватар больше чем 1024х768 пикселей. <br>Такие большие "
+"аватары не смогут быть показаны на всех мониторах <br> и, возможно, будут "
+"уменьшены удаленным пользователем с потерей качества <br> и скорости "
+"отображения картинки. Вы должны уменьшить его вручную или выбрать другое "
+"изображение."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:688
+msgid "Default Messages"
+msgstr "Сообщения при выходе"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:691
+msgid "Part message:"
+msgstr "При выходе с канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:695
+msgid ""
+"<center>This is the default part message that will be used when you<br>leave "
+"a channel by closing a channel window.</center>"
+msgstr ""
+"<center>Это сообщение по умолчанию при покидании канала,<br>которое будет "
+"выводиться в канал при закрытии окна канала.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:699
+msgid "Quit message:"
+msgstr "При выходе из сети:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:702
+msgid ""
+"<center>This is the default quit message that will be used when you<br>quit "
+"your IRC session by closing the console window or disconnecting by pressing "
+"the disconnect button.</center>"
+msgstr ""
+"<center>Это сообщение о выходе по умолчанию которое будет использоваться "
+"когда вы<br>выходите из IRC сессии закрывая консольное окно или нажав кнопку "
+"Разъединить.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:42
+msgid "Open Query For"
+msgstr "Открывать отдельные окна для"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:40
+msgid "Private messages"
+msgstr "Приватных сообщений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:46
+msgid ""
+"<center>This option enables query window creation when a private message "
+"(PRIVMSG) is received.<br>If you disable this, private messages will be "
+"shown in the active window or a common channel.</center>"
+msgstr ""
+"<center>Эта опция включит создание отдельного окна при получении приватного "
+"сообщения (PRIVMSG). Если это выключить, приватные сообщения будут "
+"выводиться в активное окно или общий канал.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:42
+msgid "Private notices"
+msgstr "Приватных извещений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:55
+msgid ""
+"<center>This option enables query window creation when a private notice "
+"(NOTICE) is received.<br>If you disable this, private notices will be shown "
+"in the active window or a common channel.</center>"
+msgstr ""
+"<center>Эта опция включит создание отдельного окна при получении приватного "
+"уведомления (NOTICE).<br>Если это выключить, приватные уведомления будут "
+"выводиться в активное окно или общий канал.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:62
+msgid "Always open queries as minimized"
+msgstr "Всегда открывать приваты свернутыми"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:66
+msgid ""
+"<center>This option causes newly created query windows to be immediately "
+"minimized.<br>Enable this if you don't like queries popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+"<center>Эта опция заставит немедленно минимизировать вновь созданное окно "
+"привата.<br>Включите эту опцию если вам не нравятся выскакивающие окна "
+"приватов когда вы печатаете что-то в канале. :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:74
+msgid "Enable target user tracking"
+msgstr "Включить трассировку пользователя"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:77
+msgid ""
+"<center>This option will enable target user tracking.<br>Some actions of the "
+"target user (e.g. joins and parts) will be displayed in the window.<br></"
+"center>"
+msgstr ""
+"<center>Эта опция включит трассировку пользователя.<br> Какие-либо действия "
+"пользователя (например вход, выход на канал) будут отображаться в окне.<br></"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:83
+msgid "Flash system taskbar on new query message"
+msgstr "Подсвечивать системную панель задач при новых приватных сообщениях"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:86
+msgid ""
+"<center>This option causes the system taskbar entry for KVIrc to flash when "
+"a new query message is received and the KVIrc window is not the active.</"
+"center>"
+msgstr ""
+"<center>Эта опция заставит подсвечиваться пункт KVIrc в системной панели "
+"задач при поступлении новых приватных сообщений когда окно KVIrc не активно."
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:91
+msgid "Popup notifier on new query message"
+msgstr "Всплывающее окно извещателя при новых приватных сообщениях"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:94
+msgid ""
+"<center>This option causes a small notifier window to pop up in the low "
+"right corner of the screen when a new message is received and the KVIrc "
+"window is not active.</center>"
+msgstr ""
+"<center>Эта опция заставит выводить небольшое окно в правом нижнем углу "
+"экрана при получении новых сообщений и если окно KVIrc не активно.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:98
+msgid "Show information about query target at the top of the query"
+msgstr "Показывать информацию о собеседнике в верхней части окна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:101
+msgid ""
+"<center>This option enables query window information label. It can show you "
+"known information about query target at the top of the window.<br>Uncheck if "
+"you think,that it wastes your query space/</center>"
+msgstr ""
+"<center>Если включена эта опциф, то KVirc будет показывать известную ему "
+"информациюо собеседнике в верхней части окна привата.<br>Не используйте эту "
+"опцию если считаете что данная информация бесполезна и только занимает "
+"место</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:39
+msgid "Use global application font"
+msgstr "Использовать глобальный шрифт приложения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:40
+msgid "Hide icons in Popup"
+msgstr "Скрыть иконки в всплывающем меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:41
+msgid "Global application font:"
+msgstr "Глобальный шрифт:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:67
+msgid "Enable fake transparency"
+msgstr "Включить имитацию полупрозрачности"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:71
+msgid ""
+"<center>This option makes all KVIrc windows look transparent.<br>You must "
+"choose a blending background image to below or check the \"Use KDE desktop "
+"for transparency\" option.</center>"
+msgstr ""
+"<center>Эта опция делает все окна KVIrc полупрозрачными.<br>Вы должны "
+"выбрать ниже подмешиваемое к заднему плану изображение или включить опцию "
+"\"Использовать десктоп KDE для полупрозрачности\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:77
+msgid ""
+"<center>This option makes all KVIrc windows look like transparent.<br>You "
+"must choose a blending background image to below.</center>"
+msgstr ""
+"<center>Эта опция делает все окна KVIrc похожими на полупрозрачные.<br>Вы "
+"должны выбрать ниже подмешиваемое к заднему плану изображение.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:83
+msgid "Child window opacity:"
+msgstr "Затемнённость дочерних окон:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:87
+msgid "Parent window opacity:"
+msgstr "Затемнённость родительских окон:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:91
+msgid "Blend color:"
+msgstr "Подмешиваемый цвет:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:97
+msgid "Use KDE desktop for transparency"
+msgstr "Использовать десктоп КДЕ для полупрозрачности"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:102
+msgid "Keep in sync with KDE background changes"
+msgstr "Синхронизировать с изменениями фона рабочего стола КДЕ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:111
+msgid "Transparency blend image:"
+msgstr "Подмешиваемое изображение:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:155
+msgid "Active Background"
+msgstr "Активный фон"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:156
+msgid "Inactive Background"
+msgstr "Неактивный фон"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:157
+msgid "Active Text (Primary)"
+msgstr "Активный текст (первичный)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:158
+msgid "Active Text (Secondary)"
+msgstr "Активный текст (вторичный)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:159
+msgid "Inactive Text (Primary)"
+msgstr "Неактивный текст (первичный)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:160
+msgid "Inactive Text (Secondary)"
+msgstr "Неактивный текст (вторичный)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:197
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:44
+msgid "Background"
+msgstr "Фон"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:178
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:205
+msgid "Background Image"
+msgstr "Фоновое изображение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:198
+msgid "Low-Contrast Foreground"
+msgstr "Низко-контрастный передний план"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:199
+msgid "Mid-Contrast Foreground"
+msgstr "Средне-контрастный передний план"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:200
+msgid "Active High-Contrast Foreground (Primary)"
+msgstr "Активный высоко-контрастный передний план (первичный)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:201
+msgid "Active High-Contrast Foreground (Secondary)"
+msgstr "Активный высоко-контрастный передний план (вторичный)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:202
+msgid "Inactive High-Contrast Foreground (Primary)"
+msgstr "Неактивный высоко-контрастный передний план (первичный)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:203
+msgid "Inactive High-Contrast Foreground (Secondary)"
+msgstr "Неактивный высоко-контрастный передний план (вторичный)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:40
+msgid "Scaling in userlist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:41
+#, fuzzy
+msgid "Scale avatar images in userlist (recommended)"
+msgstr "Масштабировать аватар (рекомендуется)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:43
+msgid ""
+"<center>This option will force KVIrc to scale avatars shown in the userlist."
+"<br>Avatars will be scaled to fit the constraints set below. Better keep "
+"this option on. :)</center>"
+msgstr ""
+"<center>Эта опция заставит KVIrc масштабировать аватары, показываемые в "
+"списке пользователей.<br>Аватары будут масштабироваться чтобы сохранить "
+"целостность списка. Лучше включить эту опцию :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:48
+msgid "Do not scale avatar if it is less than required size"
+msgstr "Не масштабировать аватар если он меньше заданного размера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:59
+msgid "Image width:"
+msgstr "Ширина картинки:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:61
+msgid "Image height:"
+msgstr "Высота картинки:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:56
+msgid "Scaling on load (and in user tooltips)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:57
+#, fuzzy
+msgid "Scale avatar images on image load"
+msgstr "Масштабировать аватар (рекомендуется)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:65
+msgid "Request CTCP"
+msgstr "Запросить CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:66
+msgid "Request missing avatars"
+msgstr "Запрашивать отсутствующие аватары"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:67
+msgid "Maximum requested file size:"
+msgstr "Максимальный запрашиваемый размер файла:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to send a DCC GET request when someone "
+"sets an avatar and there is no cached copy available.</center>"
+msgstr ""
+"<center>Эта опция заставит KVIrc посылать запросы DCC GET когда кто-нибудь "
+"установит аватар и у вас в кеше нет его копии.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:74
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:317
+msgid " bytes"
+msgstr " байт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:77
+msgid ""
+"<center>This is the maximum size for avatar images that will be "
+"automatically requested.<br>A reasonable value might be 102400 bytes (100 K)."
+"</center>"
+msgstr ""
+"<center>Это максимальный размер аватара который будет автоматически "
+"запрашиваться.<br>Разумное значение 102400 байт (100 K).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:83
+msgid "Automatically accept incoming avatars"
+msgstr "Автоматически принимать входящие аватары"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:87
+msgid ""
+"<center>This option will cause KVIrc to auto-accept DCC SEND requests for "
+"incoming avatars.<br>If you're using the \"Request missing avatars\" option "
+"above, enabling this may by useful.<br>Avatars will be saved in the local "
+"KVIrc directory.</center>"
+msgstr ""
+"<center>Эта опция предписывает KVIrc автоматически принимать запросы DCC "
+"SEND для входящих аватаров.<br>Если вы раньше включили опцию \"Запрашивать "
+"отсутствующие аватары\", вам это может быть полезно.<br>Аватары будут "
+"сохраняться в локальном каталоге KVIrc.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:94
+msgid "Remember avatars for registered users"
+msgstr "Запоминать аватары зарегистрированных пользователей"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:99
+msgid ""
+"<center>Use a user's last known avatar by default (only for users that are "
+"registered).</center>"
+msgstr ""
+"<center>Использовать последний известный аватар пользователя (только для "
+"зарегистрированных пользователей).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:103
+msgid "Avatar offer timeout:"
+msgstr "Таймаут предложения аватара:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:104
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:162
+msgid " sec"
+msgstr " сек"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:107
+msgid ""
+"<center>This is the amount of time to make an avatar available for transfer "
+"when requested.<br>When someone sends a CTCP AVATAR request, KVIrc will "
+"reply with a CTCP AVATAR message containing the name and size of your avatar "
+"image.<br>A time-limited file offer is added for the image file to the "
+"requesting user.</center>"
+msgstr ""
+"<center>Это время когда аватар доступен для передачи после поступления "
+"запроса.<br>Когда кто-нибуть присылает запрос CTCP AVATAR , KVIrc отвечает "
+"сообщением CTCP AVATAR содержащем имя и размер своего аватара.<br> Лимит "
+"времени доступности добавляется к запросу файла.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:115
+msgid "Ignore requests if no avatar is set"
+msgstr "Игнорировать запросы, если аватар отсутствует"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:118
+msgid ""
+"This option will cause KVIrc to ignore channel CTCP AVATAR requests when you "
+"have no avatar set. This is usually a good practice since it helps in "
+"reducing traffic by not sending a reply that would be empty."
+msgstr ""
+"Эта опция заставит KVIrc игнорировать запросы CTCP AVATAR если у вас нет "
+"аватара. С его помощью можно уменьшить траффик за счёт пустых ответов."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:39
+msgid "Use online notify list"
+msgstr "Использовать онлайн список уведомлений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:44
+msgid "Configuration"
+msgstr "Конфигурация"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:45
+msgid "Show notifications in active window"
+msgstr "Показывать уведомления в активном окне"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:50
+msgid "Flash window when users are going online"
+msgstr "Подсвечивать окно когда пользователи появляются в онлайн"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:55
+msgid "Popup notifier when users are going online"
+msgstr "Всплывающее окно извещателя, когда пользователи появляются в онлайн"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:59
+msgid "Advanced configuration"
+msgstr "Расширенные настройки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:64
+msgid "Check USERHOST for online users"
+msgstr "Проверять USERHOST для онлайн пользователей"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:69
+msgid "Use \"smart\" notify list manager"
+msgstr "Использовать \"умный\" менеджер списка уведомлений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:74
+msgid "Use the WATCH method if available"
+msgstr "Использовать WATCH метод если возможно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:79
+msgid "Check interval (in seconds)"
+msgstr "Интервал проверки (в сек.)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:85
+msgid "ISON delay (in seconds)"
+msgstr "Задержка ISON (в сек.)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:91
+msgid "USERHOST delay (in seconds)"
+msgstr "Задержка USERHOST (в сек.)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:96
+msgid ""
+"<p><b>Note:</b><br>The notify list is managed using the \"Registered Users\" "
+"settings.</p>"
+msgstr ""
+"<p><b>Замечание:</b><br>Список уведомлений использует настройки "
+"\"Зарегистрированных Пользователей\".</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:112
+msgid "Forcibly and completely disable the notifier"
+msgstr "Полностью выключить всплывающее окно извещателя"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:115
+msgid ""
+"This is an option for the impatient: it allows to forcibly and permanently "
+"disable the notifier window. Please note that if this option is activated "
+"then the notifier will NOT popup even if all the other options around "
+"specify to use it in response to particular events. Also note that this "
+"option will make all the /notifier.* commands fail silently."
+msgstr ""
+"Эта опция для самых раздражительных: она позволяет раз и навсегда выключить "
+"окно извещателя. Пожалуйста имейте ввиду, что если эта опция активирована, "
+"извещатель НИКОГДА не будет появляться даже если у вас включены все "
+"остальные опции вокруг. Также имейте ввиду, что эта опция молча запретит все "
+"команды /notifier.*."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:123
+msgid "Disable notifier window flashing"
+msgstr "Отключить мерцание окна извещателя"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:124
+#, fuzzy
+msgid "Disable notifier window fade effect"
+msgstr "Отключить мерцание окна извещателя"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:39
+msgid "Default away message:"
+msgstr "Сообщение в режиме Отошёл по умолчанию:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:41
+msgid "User input exits away mode"
+msgstr "Ввод сообщения выключает режим Отошёл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:43
+msgid "Away Nickname"
+msgstr "Ник в режиме \"Отошёл\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:44
+msgid "Change nickname on away"
+msgstr "Изменять ник"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:47
+msgid "Use automatic nickname ([5 letters]AWAY)"
+msgstr "Использовать автоматический ник [5 букв]AWAY"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:55
+#, c-format
+msgid "Custom nickname (%%nick%% means a current nick):"
+msgstr "Другой ник( %%nick%% означает текущий ник):"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/libkvioptions.cpp:199
+msgid "No such options page class name %Q"
+msgstr "Нет такого имени класса на странице опций %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:47
+msgid "Use system URL handlers"
+msgstr "Использовать системные обработчики URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:50
+msgid "<b>http://</b> handler command:"
+msgstr "Команда обработки <b>http://</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:51
+msgid "<b>https://</b> handler command:"
+msgstr "Команда обработки <b>https://</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:52
+msgid "<b>ftp://</b> handler command:"
+msgstr "Команда обработки <b>ftp://</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:53
+msgid "<b>mailto:</b> handler command:"
+msgstr "Команда обработки <b>mailto:</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:54
+msgid "<b>file://</b> handler command:"
+msgstr "Команда обработки <b>file://</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:55
+msgid "Unknown protocol handler command:"
+msgstr "Команда обработки неизвестных протоколов:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:61
+msgid "Use proxy"
+msgstr "Использовать прокси"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:65
+msgid "Proxy"
+msgstr "Прокси"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:76
+msgid ""
+"<center>This is the list of available proxy servers.<br>Right-click on the "
+"list to add or remove proxies.</center>"
+msgstr ""
+"<center>Это список доступных прокси серверов.<br>Клик правой кнопкой по "
+"списку позволит добавить или удалить прокси.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:90
+msgid "New Proxy"
+msgstr "Новый прокси"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:99
+msgid "Remove Proxy"
+msgstr "Удалить прокси"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:111
+msgid "Proxy:"
+msgstr "Прокси:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:131
+msgid "Protocol:"
+msgstr "Протокол:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:336
+msgid "&New Proxy"
+msgstr "&Новый прокси"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:337
+msgid "Re&move Proxy"
+msgstr "Уда&лить прокси"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:71
+msgid "Pattern"
+msgstr "Образец"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:72
+msgid "MIME Type"
+msgstr "MIME Тип"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:87
+msgid "MIME type:"
+msgstr "MIME тип:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:92
+msgid "File pattern:"
+msgstr "Файл образца:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:97
+msgid "Magic bytes:"
+msgstr "Магические байты:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:102
+msgid "Save path:"
+msgstr "Путь сохранения:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:107
+msgid "Local open command:"
+msgstr "Команда открытия:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:112
+msgid ""
+"<center>This field contains the command to execute to open a local file."
+"<br><tt>$0</tt> is used in place of the filename</center>"
+msgstr ""
+"<center>Это поле содержит команду которая будет выполняется для открытия "
+"локального файла. <br><tt>$0</tt> подставляется как имя файла</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:116
+msgid "Remote open command:"
+msgstr "Команда удалённого открытия:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:121
+msgid ""
+"<center>This field contains the command to execute when automatically "
+"opening a received file.<br><tt>$0</tt> is used in place of the filename</"
+"center>"
+msgstr ""
+"<center>Это поле содержит команду которая будет автоматически выполняться "
+"для открытия полученного файла.<br><tt>$0</tt> подставляется как имя файла</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:125
+msgid "Icon"
+msgstr "Иконка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:134
+msgid "&New"
+msgstr "&Новый"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:138
+msgid "Re&move"
+msgstr "&Удалить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:184
+msgid "[Unknown Media Type]"
+msgstr "[Неизвестный медиа тип]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:230
+msgid "New Media Type"
+msgstr "Новый медиа тип"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:53
+msgid "Nickname Colors"
+msgstr "Цвета ников"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:56
+msgid "Channel owner:"
+msgstr "Хозяин канала:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:57
+msgid "Channel admin:"
+msgstr "Администратор канала:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:58
+msgid "Op:"
+msgstr "Оператор:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:59
+msgid "Half-op:"
+msgstr "Полу-оператор:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:60
+msgid "Voice:"
+msgstr "С правом голоса:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:61
+msgid "User-op:"
+msgstr "Пользователь-оператор:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:62
+msgid "Away:"
+msgstr "Отошёл:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:66
+msgid "Use different color for own nick:"
+msgstr "Использовать другой цвет для своего ника:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:81
+msgid "Draw nickname grid"
+msgstr "Рисовать сетку между никами"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:83
+msgid "Grid color:"
+msgstr "Цвет сетки:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:90
+msgid "Grid type:"
+msgstr "Тип сетки:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:94
+msgid "3D Grid"
+msgstr "3D Сетка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:95
+msgid "3D Buttons"
+msgstr "3D Кнопки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:96
+msgid "Plain Grid"
+msgstr "Плоская сетка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:97
+msgid "Dotted Grid"
+msgstr "Точечная сетка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:131
+msgid "Horizontal Alignment:"
+msgstr "Горизонтальное расположение:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:135
+msgid "Vertical Alignment:"
+msgstr "Вертикальное расположение:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:231
+msgid "Show gender icons"
+msgstr "Показывать иконки пола"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:232
+msgid "Show user channel icons"
+msgstr "Показывать иконки пользователей на канале"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:233
+msgid "Show user channel activity indicator"
+msgstr "Показывать индикатор активности пользователей на канале"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:234
+msgid "Hide users label"
+msgstr "Скрыть метки пользователей"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:235
+msgid "Enable user tooltips"
+msgstr "Включить всплывающие подсказки по пользователям"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:236
+msgid "Hide avatars"
+msgstr "Спрятать аватары в списке пользователей"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:79
+msgid "Use flood protection (recommended)"
+msgstr "Использовать защиту от флуда (рекомендуется)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:81
+msgid ""
+"<center>This option makes KVIrc only respond to a limited number of CTCP "
+"requests within a specified time interval, to prevent \"flooding\" CTCP "
+"messages.</center>"
+msgstr ""
+"<center>Эта опция указывает KVIrc отвечать только на ограниченное число "
+"запросов CTCP в течении определённого времени чтобы предотвратить \"флуд\" "
+"сообщениями CTCP.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:83
+msgid "Allow up to:"
+msgstr "Допускать до:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:84
+msgid " requests"
+msgstr " запросов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:86
+msgid ""
+"<center>Minimum value: <b>0 requests</b><br>Maximum value: <b>10000 "
+"requests</b></center>"
+msgstr ""
+"<center>Минимальное значение: <b>0 запросов</b><br>Максимальное значение: "
+"<b>10000 запросов</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:89
+msgid "within:"
+msgstr "в течении:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:92
+msgid ""
+"<center>Minimum value: <b>1 sec</b><br>Maximum value: <b>3600 sec</b></"
+"center>"
+msgstr ""
+"<center>Минимальное значение: <b>1 сек</b><br>Максимальное значение: <b>3600 "
+"сек</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:96
+msgid "Ignored Requests"
+msgstr "Игнорировать запросы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:97
+msgid "PING"
+msgstr "PING"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:98
+msgid "FINGER"
+msgstr "FINGER"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:99
+msgid "CLIENTINFO"
+msgstr "CLIENTINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:100
+msgid "USERINFO"
+msgstr "USERINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:101
+msgid "VERSION"
+msgstr "VERSION"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:102
+msgid "SOURCE"
+msgstr "SOURCE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:103
+msgid "TIME"
+msgstr "TIME"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:104
+msgid "PAGE"
+msgstr "PAGE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:105
+msgid "AVATAR"
+msgstr "AVATAR"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:106
+msgid "DCC/TDCC"
+msgstr "DCC/TDCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:131
+msgid "General Preferences"
+msgstr "Общие настройки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:134
+msgid "Theme Preferences"
+msgstr "Настройки темы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:136
+msgid "KVIrc Preferences"
+msgstr "Настройки KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:139
+msgid ""
+"This dialog contains a set of KVIrc settings.<br> Use the icons on the left "
+"to navigate through the option pages. The text box in the bottom left corner "
+"is a small search engine. It will highlight the pages that contain options "
+"related to the search term you have entered."
+msgstr ""
+"Этот диалог содержит настройки KVIrc. <br> Используйте иконки слева для "
+"навигации на страницах опций. Поле ввода в левой нижней части - небольшой "
+"поисковый механизм. Он выделяет все страницы опций, которые содержать "
+"введенный текст."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:147
+msgid ""
+"Many settings have tooltips that can be shown by holding the cursor over "
+"their label for a few seconds."
+msgstr ""
+"Множество настроек имеют всплывающие подсказки, которые появляются, когда вы "
+"задерживаете курсор мыши на заголовке."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:152
+msgid ""
+"When you have finished, click \"<b>OK</b>\" to accept your changes or "
+"\"<b>Cancel</b>\" to discard them. Clicking \"<b>Apply</b>\" will commit "
+"your changes without closing the window."
+msgstr ""
+"Когда вы завершите, нажмите \"<b>OK</b>\" для сохранения настроек или "
+"\"<b>Отмена</b>\" для их отмены. Нажатие \"<b>Применить</b>\" сохранит "
+"настройки без закрытия окна."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:217
+msgid ""
+"<p>This is the search tool for this options dialog.</p><p>You can enter a "
+"search term either in your native language or in english and press the "
+"button on the right. The pages that contain some options related to the "
+"search term will be highlighted and you will be able to quickly find them.</"
+"p><p>Try \"nickname\" for example.</p>"
+msgstr ""
+"<p>Это инструмент поиска для диалога опций.</p><p>Вы можете здесь ввести "
+"поисковую фразу на вашем языке или на английском и нажать кнопку справа для "
+"поиска. Окна, содержащие введенную вами фразу, будут подсвечены и вы сможете "
+"их легко увидеть.</p><p>Попробуйте, например ввести \"ник\".</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:249
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:61
+msgid "Close this dialog, accepting all changes."
+msgstr "Закрыть этот диалог, применив все изменения."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:255
+msgid "&Apply"
+msgstr "&Применить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:256
+msgid "Commit all changes immediately."
+msgstr "Применить все изменения немедленно."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:69
+msgid "Close this dialog, discarding all changes."
+msgstr "Закрыть этот диалог, забыв обо всех изменениях."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:149
+msgid ""
+"This table contains the text icon associations.<br>KVirc will use them to "
+"display the CTRL+I escape sequences and eventually the emoticons."
+msgstr ""
+"Эта таблица содержит текстовые иконки.<br>KVirc will use them to display the "
+"CTRL+I escape sequences and eventually the emoticons."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:165
+msgid "Add"
+msgstr "Добавить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:169
+msgid "Delete"
+msgstr "Удалить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:191
+msgid "unnamed"
+msgstr "без имени"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:53
+msgid "Enable word highlighting"
+msgstr "Включить подсветку слов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:55
+msgid "Words to highlight:"
+msgstr "Подсвечиваемые слова:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:57
+msgid "Word splitters:"
+msgstr "Разделители слов:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:59
+msgid "Highlight messages containing my nickname"
+msgstr "Подсвечивать сообщения содержащие мой ник"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:61
+msgid ""
+"<center>If this option is enabled, KVIrc will highlight any user message "
+"containing your current nickname</center>"
+msgstr ""
+"<center>Если включена эта опция, KVIrc выделит любое сообщение "
+"пользователей, содержащее ваш текущий ник</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:63
+msgid "Flash the system taskbar entry on highlighted messages"
+msgstr "Подсвечивать системную панель задач при появлении указанных сообщений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:65
+msgid ""
+"<center>If this option is enabled, KVIrc will (attempt to) flash the system "
+"taskbar entry when a highlighted message is printed and KVIrc is not the "
+"active window</center>"
+msgstr ""
+"<center>Если включена эта опция, KVIrc будет (пытаться) подсвечивать "
+"системную панель задач когда одно из указанных сообщений появилось в "
+"неактивном окне KVIrc</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:67
+msgid "Popup the notifier window on highlighted messages"
+msgstr "Всплывающее окно извещателя для подсвечиваемых сообщений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:69
+msgid ""
+"<center>If this option is enabled, KVIrc will popup a little notifier window "
+"in the low right corner of your desktop when a highlighted message is "
+"printed and KVIrc is not the active window</center>"
+msgstr ""
+"<center>Если включена эта опция, KVIrc будет выводить небольшое окно "
+"извещателя в правом нижнем углу десктопа когда выделенное сообщение "
+"появилось в неактивном окне KVIrc</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:91
+msgid "Alert Restrictions"
+msgstr "Ограничение предупреждений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:92
+msgid "Restrict alert"
+msgstr "Ограничить предупреждения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:94
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if a "
+"normal message is received in a channel.<br>Actions like joins, parts and "
+"mode changes will be ignored.<br> This is useful if you are in channels with "
+"a high rate of traffic and only want to be alerted for messages that are "
+"interesting to you.</center>"
+msgstr ""
+"<center>Если включена эта опция, KVIrc будет подсвечивать панель задач "
+"только если сообщение появилось на канале.<br>Действия типа покидания, "
+"присоединения к каналу и изменения режимов будут проигнорированы.<br>Эта "
+"опция полезна если на вашем канале большое движение а вы хотите узнавать "
+"только о новых сообщениях.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:96
+msgid "Alert for highlighted words"
+msgstr "Предупреждать при появлении подсвечиваемых слов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:98
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which contain a word from the highlighted words list above.</center>"
+msgstr ""
+"<center>Если включена эта опция, панель задач будет предупреждать о "
+"появлении сообщений содержащих указанные в списке слова.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:100
+msgid "Alert for query messages"
+msgstr "Предупреждать при получении личных сообщений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:102
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which are shown in queries.</center>"
+msgstr ""
+"<center>Если эта опция включена, панель задач будет также предупреждать о "
+"сообщениях в приватах.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:107
+msgid "Use custom alert level"
+msgstr "Использовать заданный уровень предупреждений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:109
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if "
+"the specified alert level is reached.</center>"
+msgstr ""
+"<center>Если включена эта опция, KVIrc будет подсвечивать панель задач "
+"только если достигнут заданный уровень предупреждений.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:111
+msgid "Minimum alert level:"
+msgstr "Минимальный уровень предупреждений:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:114
+msgid ""
+"<center>This option sets the minimum alert level for the taskbar.</center>"
+msgstr ""
+"<center>Эта опция задаёт минимальный уровень предупреждений для панели задач."
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:213
+msgid "Output verbosity"
+msgstr "Многословность вывода"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:49
+msgid "Mute"
+msgstr "Молчать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:50
+msgid "Quiet"
+msgstr "Тихо"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:51
+msgid "Normal"
+msgstr "Нормально"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:52
+msgid "Verbose"
+msgstr "Многословный"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:53
+msgid "Paranoic"
+msgstr "Параноидальный"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:59
+msgid "Show in active window"
+msgstr "Показывать в активном окне"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:60
+msgid "External messages"
+msgstr "Внешние сообщения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:61
+msgid "External CTCP replies"
+msgstr "Внешние CTCP ответы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:62
+msgid "Whois replies"
+msgstr "Ответы Whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:63
+msgid "ChanServ and NickServ notices"
+msgstr "Извещения ChanServ и NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:64
+msgid "Invite messages"
+msgstr "Сообщения о приглашении"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:65
+msgid "Server replies"
+msgstr "Ответы сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:66
+msgid "Server notices"
+msgstr "Извещения сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:67
+msgid "Broadcast and WALLOPS messages"
+msgstr "Широковещательные и WALLOPS сообщения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:70
+msgid "Show extended server information"
+msgstr "Показывать подробную информацию от сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:71
+msgid "Show server pings"
+msgstr "Показывать пинги сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:72
+msgid "Show own parts in the console"
+msgstr "Показывать свои выходы с каналов в консоли"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:73
+msgid "Show compact mode changes"
+msgstr "Компактный режим показа изменений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:43
+msgid "Minimize on startup"
+msgstr "Сворачиваться в трей при старте программы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:44
+msgid "Confirm quit with active connections"
+msgstr "Подтверждать выход при активных соединениях"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:45
+msgid "Remember window properties"
+msgstr "Запоминать состояние окон"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:50
+msgid "Disable splash screen"
+msgstr "Выключить заставку при запуске программы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:54
+msgid "Enable visual effects"
+msgstr "Включить визуальные эффекты"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:55
+msgid "Hide Channel window tool buttons by default"
+msgstr "Скрывать кнопки инструментов канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:57
+msgid "Open Dialog Window For"
+msgstr "Открывать в отдельном окне"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:58
+msgid "Preferences"
+msgstr "Настройки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:59
+msgid "Registered Users"
+msgstr "Список зарегистрированных пользователей"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:149
+msgid "Servers"
+msgstr "Список серверов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.cpp:40
+msgid ""
+"This section contains irc tools<br><p>like<b> away, lag and logging system. "
+"</b> </p>"
+msgstr ""
+"Этот раздел содержит irc утилиты,<br><p>например <b> системы away, "
+"логирования. </b> </p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:39
+msgid "On Disconnect"
+msgstr "При отключении"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:42
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:55
+msgid "Keep channels open"
+msgstr "Сохранять каналы открытыми"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:44
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after disconnect."
+"</center>"
+msgstr ""
+"<center>Эта опция заставит KVIrc сохранять открытыми каналы после "
+"разъединения.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:47
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:60
+msgid "Keep queries open"
+msgstr "Сохранять приваты открытыми"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:49
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after disconnect.</"
+"center>"
+msgstr ""
+"<center>Эта опция заставит KVIrc сохранять открытыми окна приватов после "
+"разъединения.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:52
+msgid "On Unexpected Disconnect"
+msgstr "При неожиданном разъединении"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+"<center>Эта опция заставит KVIrc сохранять открытыми каналы после "
+"неожиданного разъединения.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:62
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+"<center>Эта опция заставит KVIrc сохранять открытыми окна приватов после "
+"неожиданного разъединения.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:65
+msgid "Rejoin channels after reconnect"
+msgstr "Входить на канал после повторного подключения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:67
+msgid ""
+"<center>This option will cause KVIrc to rejoin channels after a successful "
+"reconnect attempt.</center>"
+msgstr ""
+"<center>Эта опция заставит KVirc заново войти на канал после удачной попытки "
+"повторного соединения.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:69
+msgid "Reopen queries after reconnect"
+msgstr "Снова открывать окна приватов после повторного соединения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to reopen query windows after a "
+"successful reconnect attempt.</center>"
+msgstr ""
+"<center>Эта опция заставит KVirc заново открывать окна приватов после "
+"успешной попытки повторного подключения.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:75
+msgid "Automatically reconnect"
+msgstr "Автоматически подключаться снова"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:77
+msgid ""
+"<center>This option will enable auto-reconnecting after an unexpected "
+"disconnect. An unexpected disconnect is the <b>termination</b> of a <b>fully "
+"connected IRC session</b> that was <b>not requested by the user</b> by the "
+"means of the QUIT message.<p><b>Warning:</b> If you use /RAW to send a QUIT "
+"message to the server, this option will not behave correctly, since does not "
+"detect the outgoing QUIT message and will attempt to reconnect after the "
+"server has closed the connection. For this reason, always use the /QUIT "
+"command to close your connections. This option may also behave incorrectly "
+"with bouncers that support detaching, in this case a solution could be to "
+"prepare an alias that sends the bouncer \"detach\" command immediately "
+"before the \"quit\" command.<br><tt>alias(bncdetach){ raw bouncer detach; "
+"quit; }</tt></p></center>"
+msgstr ""
+"<center>Эта опция включает автоподключение после неожиданного разъединения. "
+"Неожиданное разъединение это <b>полное закрытие соединения IRC сессии</b> "
+"без <b>отправки пользователям</b> сообщения QUIT.<p><b>Внимание:</b> Если вы "
+"используете /RAW в качестве сообщения о выходе, эта опция не будет вести "
+"себя правильно, поскольку не обнаруживает исходящее сообщение QUIT и "
+"попытается пересоединиться снова после того как сервер закрыл соединение. По "
+"этой причине используйте команду /QUIT для закрытия соединения. Эта опция "
+"может работать неверно с выпинателями которые поддерживают функцию "
+"разделения, в этом случае хорошим решением было бы подготовить псевдоним, "
+"который посылает выпинателю команду \"detach\" немедленно перед командой "
+"\"quit\".<br><tt>alias(bncdetach){ raw bouncer detach; quit; }</tt></p></"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:89
+msgid "Maximum attempts (0: unlimited):"
+msgstr "Максимальное количество попыток (0: не ограничено):"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:94
+msgid "Delay between attempts:"
+msgstr "Задержка между попытками:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:100
+msgid ""
+"<center>Minimum value: <b>0 sec</b><br>Maximum value: <b>86400 sec</b></"
+"center>"
+msgstr ""
+"<center>Минимальное значение: <b>0 сек</b><br>Максимальное значение: "
+"<b>86400 сек</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:123
+msgid "Certificate"
+msgstr "Сертификат"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:125
+msgid "Use SSL certificate (PEM format only)"
+msgstr "Использовать SSL для сертификата (только формат PEM)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:127
+msgid "Certificate location:"
+msgstr "Расположение сертификата:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:130
+msgid "Certificate password:"
+msgstr "Пароль сертификата:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:134
+msgid "Private Key"
+msgstr "Приватный ключ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:135
+msgid "Use SSL private key"
+msgstr "Использовать SSL для приватного ключа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:137
+msgid "Private key location:"
+msgstr "Расположение приватного ключа:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:140
+msgid "Private key password:"
+msgstr "Пароль приватного ключа:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:146
+msgid "This executable has no SSL support."
+msgstr "Эта сборка программы не поддерживает SSL."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:165
+msgid "Timeout Values"
+msgstr "Значение таймаута"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:166
+msgid "Connect timeout:"
+msgstr "Таймаут соединения:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:168
+msgid "Outgoing data queue flush timeout:"
+msgstr "Таймаут сброса исходящих данных:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:170
+msgid "Limit outgoing traffic"
+msgstr "Ограничить исходящий трафик"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:171
+msgid "Limit to 1 message every:"
+msgstr "Ограничить 1-м сообщением в:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:173
+msgid " usec"
+msgstr " мксек"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:175
+msgid ""
+"<center>Minimum value: <b>10000 usec</b><br>Maximum value: <b>10000000 usec</"
+"b></center>"
+msgstr ""
+"<center>Минимальное значение: <b>10000 мксек</b><br>Максимальное значение: "
+"<b>10000000 мксек</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:179
+msgid "Network Interfaces"
+msgstr "Сетевые интерфейсы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:181
+msgid "Bind IPv4 connections to:"
+msgstr "Использовать адрес для IPv4 соединений:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:185
+msgid "Bind IPv6 connections to:"
+msgstr "Использовать адрес для IPv6 соединений:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:210
+msgid "Enable ident service (bad practice on UNIX!)"
+msgstr "Включить сервис идентификации (не рекомендуется на UNIX!)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:216
+#, fuzzy
+msgid "Output identd messages to:"
+msgstr "При выходе из сети:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:218
+#, fuzzy
+msgid "Active window"
+msgstr "Показывать в активном окне"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:219
+#, fuzzy
+msgid "Console"
+msgstr "Окна терминалов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:220
+#, fuzzy
+msgid "Do not show any identd messages"
+msgstr "Не окрашивать сообщения пользователей"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:237
+msgid "Enable ident service only while connecting to server"
+msgstr "Включить ident сервис только на время подключения к серверу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:240
+msgid "Ident username:"
+msgstr "Идентификационное имя:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:243
+msgid "Service port:"
+msgstr "Порт сервиса:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:248
+msgid "IPv6 Settings"
+msgstr "Свойства IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:249
+msgid "Enable service for IPv6"
+msgstr "Включить сервис для IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:258
+msgid "IP stack treats IPv4 as part of IPv6 namespace"
+msgstr "Обрабатывать IPv4 как часть пространства имён IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:265
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications. If it is possible, install a real ident daemon.</p>"
+msgstr ""
+"<p><b>Внимание:</b><br>Это <b>не полная реализация RFC 1413</b> демона "
+"идентификации и обеспечивает только часть спецификации Протокола "
+"Идентификации. Если возможно, установите реальный демон идентификации.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:270
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications.<br>On UNIX, you may also need root privileges to bind to the "
+"auth port (113).<br>It is <b>highly recommended</b> that a <b>real</b> "
+"system-wide ident daemon be used instead, or none at all if ident is not "
+"required.</p>"
+msgstr ""
+"<p><b>Внимание:</b><br>Этот сервис идентификации <b>не одобряется RFC 1413</"
+"b> и реализует часть спецификации Протокола Идентификации. <br>В UNIX, вам "
+"возможно понадобятся привилегии root для использования порта аутентификации"
+"(113).<br> <b>Очень рекомендуется</b> вместо этого использовать <b>реальный</"
+"b> системный демон аутентификации, или не использовать его вообще.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.cpp:39
+msgid ""
+"This section contains the general client options<br><p>like<b> sound, "
+"mediafiles, URL handler </b> etc... </p>"
+msgstr ""
+"Этот раздел содержит основные клиентские настройки,<br><p>такие как<b> звук, "
+"файлы медиа, URL обработчики </b> и т.д... </p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:39
+msgid "Automatically Log"
+msgstr "Автоматически журналировать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:40
+msgid "Query windows"
+msgstr "Окна приватов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:41
+msgid "Channel windows"
+msgstr "Окна каналов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:42
+msgid "DCC Chat windows"
+msgstr "Окна DCC чатов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:43
+msgid "Console windows"
+msgstr "Окна терминалов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:45
+msgid "Gzip logs"
+msgstr "Сжать логи при помощи gzip"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:47
+msgid "Strip colors in logs"
+msgstr "Вырезать цвета в файлах логов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:48
+msgid "Auto flush logs every"
+msgstr "Автоматически записывать логи каждые"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:49
+msgid " min"
+msgstr " минут"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:52
+msgid ""
+"<center>Save logs with the current interval<br>Set to 0 to disable this "
+"feature</center>"
+msgstr ""
+"<center>Сохранять логи через заданный интервал времени.<br>Установите в 0 "
+"для того, чтобы отменить эту возможность</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:49
+msgid "Minimize console after successful login"
+msgstr "Минимизировать консоль после удачного входа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:52
+msgid ""
+"<center>This option will cause KVIrc to minimize the console window after "
+"successfully logging into a server.</center>"
+msgstr ""
+"<center>Эта опция заставит KVirc минимизировать окно консоли после удачного "
+"входа на сервер.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:55
+msgid "Show network name in console taskbar entry"
+msgstr "Показывать имя сети вместо имени сервера в списке каналов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to show the network name as the console "
+"taskbar entry instead of the server name. This is nice to keep on unless "
+"your servers are not organized in networks or you often connect to two "
+"servers of the same network.</center>"
+msgstr ""
+"<center>Эта опция заставит KVIrc показывать имя сети вместо имени сервера в "
+"списке опций. Это достаточно удобно до тех пор, пока вы не захотите "
+"подключиться к двум разным серверам в одной сети</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:75
+msgid "Force immediate quit"
+msgstr "Форсировать немедленный выход"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:78
+msgid ""
+"<center>This option causes KVIrc to close the connection immediately after "
+"sending the QUIT message.<br>When this option is disabled, KVIrc will wait "
+"for the server to close the connection.<br>Note that if you use this, your "
+"QUIT message may be not displayed.</center>"
+msgstr ""
+"<center>Эта опция является основанием для KVIrc, чтобы закрыть соединение "
+"немедленно после того как отослано сообщение QUIT.<br>Если эта опция "
+"выключена, KVIrc ожидает ответ сервера чтобы закрыть соединение.<br>Имейте "
+"ввиду, что если включена эта опция вы не увидите своё сообщение QUIT</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:84
+msgid "Prepend gender info to realname"
+msgstr "Добавить невидимый индикатор пола к реальному имени"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:110
+msgid "On Channel Kick"
+msgstr "При кике на канале"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:112
+msgid "Rejoin channel"
+msgstr "Перезайти на канал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:115
+msgid ""
+"<center>This option will cause KVIrc to attempt to rejoin a channel after "
+"being kicked.</center>"
+msgstr ""
+"<center>Эта опция заставит KVIrc попытаться войти на канал после кика</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:129
+msgid "Keep channel open"
+msgstr "Сохранять канал открытым"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:121
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"being kicked.<br>It might be a good idea to also enable the \"Rejoin channel"
+"\" option.</center>"
+msgstr ""
+"<center>Эта опция заставит KVIrc оставить окно канала открытым после кикания."
+"<br>Это может быть хорошей идеей вместе с включенной опцией \"Заново войти "
+"на канал\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:127
+msgid "On Channel Part"
+msgstr "При покидании канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:132
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"leaving it.</center>"
+msgstr ""
+"<center>Эта опция указывает KVIrc оставить окно канала открытым при "
+"покидании канала.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:136
+msgid "Automatically join channel on invite"
+msgstr "Автоматически входить на канал по приглашению"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:139
+msgid ""
+"<center>This option will cause KVIrc to automatically join a channel when an "
+"INVITE message for that channel is received.<br><b>Warning:</b> This may "
+"help spammers harass you. :)</center>"
+msgstr ""
+"<center>Эта опция заставит KVIrc автоматически присоединиться к каналу при "
+"получении сообщения INVITE для этого канала.<br><b>Внимание:</b> Это может "
+"помочь спамерам которые могут вас беспокоить. :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:144
+msgid "Always open channels as minimized"
+msgstr "Всегда открывать каналы минимизированными"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:148
+msgid ""
+"<center>This option causes newly created channel windows to be immediately "
+"minimized.<br>Enable this if you don't like channels popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+"<center>Эта опция заставит немедленно минимизировать вновь созданное окно "
+"канала.<br>Включите эту опцию если вам не нравятся выскакивающие окна "
+"каналов когда вы печатаете что-то в другом окне. :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:168
+msgid "Log joined channels history"
+msgstr "Запоминать каналы, на которые вы заходите"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:170
+msgid "Default ban mask:"
+msgstr "Маска бана по умолчанию:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:188
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:202
+msgid "On Channel Join"
+msgstr "При входе на канал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:189
+msgid "Do not send /WHO request"
+msgstr "Не посылать запросы /WHO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:190
+msgid "Do not request ban list"
+msgstr "Не запрашивать бан-лист"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:191
+msgid "Do not request ban exception list"
+msgstr "Не запрашивать список исключений из банов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:192
+msgid "Do not request invite list"
+msgstr "Не запрашивать список приглашений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:194
+msgid "Do not update the away list"
+msgstr "Не запрашивать список людей в режиме \"отошел\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:197
+msgid ""
+"<center>KVIrc sends out a channel /WHO message every now and then to keep "
+"the channel away list in sync. Use this option to disable this feature (and "
+"to save your IRC bandwidth.</center>"
+msgstr ""
+"<center>KVIrc через определенные промежутки времени отправляет запрос /WHO "
+"на каналы для того чтобы поддерживать актуальность списка людей в режиме "
+"away. Можете выбрать эту опцию чтобы отменить обновление списка отошедших "
+"людей и сохранить IRC траффик</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:203
+msgid "Echo channel topic"
+msgstr "Показывать тему канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:204
+msgid "Show channel sync time"
+msgstr "Показывать синхронизацию времени канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:40
+msgid "Default text encoding:"
+msgstr "Кодировка текста по умолчанию:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:109
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:133
+msgid "Use Language Encoding"
+msgstr "Использовать кодировку языка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:59
+msgid "Force language:"
+msgstr "Принудительно указать язык программы по умолчанию:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:65
+msgid "<b>Note:</b> You need to restart KVirc to apply a language changing"
+msgstr ""
+"<b>Внимание:</b> Вы должны перезапустить KVirc для изменения языка "
+"интерфейса программы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:68
+msgid "Automatic detection"
+msgstr "Автоматическое определение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:69
+msgid "en"
+msgstr "en"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Unable to write language information to"
+msgstr "Не могу записать информацию о языке в"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:39
+msgid "Enable Anti-spam For"
+msgstr "Включить антиспам для"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:45
+msgid "Silent anti-spam (no warnings)"
+msgstr "Молчаливый антиспам (без предупреждений)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:46
+msgid "Words considered spam:"
+msgstr "Слова, которые считаются спамом:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:51
+msgid "Use workaround for firewall"
+msgstr "Использовать обход для фаервола"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:54
+msgid ""
+"<center>Enable this option if you can't accept incoming connections."
+"<br>KVIrc will try to use different methods to send and receive files."
+"<br>Please note that these methods may NOT work when communicating with a "
+"non-KVIrc client.</center>"
+msgstr ""
+"<center>Включите эту опцию если вы не можете принять входящие соединения."
+"<br>KVIrc попытается использовать другие методы для передачи и приёма файлов."
+"<br>Пожалуйста имейте ввиду, что эти методы могут НЕ работать с не-KVIrc "
+"клиентами.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:73
+msgid "Network Properties"
+msgstr "Свойства сети"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:75
+msgid "Use user-defined address or network interface"
+msgstr "Использовать адрес или сетевой интерфейс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:79
+msgid ""
+"<center>Enable this option if you are on a multihost machine and want to "
+"force one of the available IP addresses to be used for outgoing DCCs."
+"<br>This is especially useful when you use IPv6 and IPv4 addresses.<br>You "
+"can force KVIrc to always choose the IPv4 interface.</center>"
+msgstr ""
+"<center>Включите эту опцию если у вас мультихост компьютер и вы хотите "
+"работать только с одним из доступных IP адресов для исходящих DCC.<br>Это "
+"особенно полезно когда вы используете IPv6 и IPv4 адресацию.<br>Вы можете "
+"заставить KVIrc всегда предпочитать IPv4 интерфейс.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:84
+msgid "Listen on address/interface:"
+msgstr "Слушать адрес/интерфейс:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:87
+msgid ""
+"<center>This is the IP address or name of the interface to use by default "
+"for outgoing DCC transfers.<br>On UNIX systems that support it, you can also "
+"specify IPv4 interface names (such as <b>ppp0</b>).<br>If you set it to "
+"<b>0.0.0.0</b>, KVIrc will try to use the first available IPv4 interface</"
+"center>"
+msgstr ""
+"<center>Это IP адрес или имя интерфейса который будет использоваться по "
+"умолчанию для исходящих DCC передач.<br>В UNIX системах которые поддерживают "
+"это, вы можете определить имя интерфейса IPv4 (такой как <b>ppp0</b>)."
+"<br>Если вы определите его как <b>0.0.0.0</b>, KVIrc попытается использовать "
+"первый доступный IPv4 интерфейс. </center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:94
+msgid "Use user-defined port range"
+msgstr "Использовать диапазон портов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:97
+msgid ""
+"<center>Enable this option if you want specify a local port range for DCC.</"
+"center>"
+msgstr ""
+"<center>Включите эту опцию чтобы задать локальный диапазон портов DCC.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:102
+msgid "Lowest port:"
+msgstr "Нижний предел:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:105
+msgid "Highest port:"
+msgstr "Верхний предел:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:108
+msgid "Send a fixed address in requests"
+msgstr "Отсылать фиксированный адрес в запросах"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:111
+msgid ""
+"<center>Enable this option if you want to always send a fake IP address in "
+"your DCC requests.<br>This might be useful if you're behind a router with a "
+"static address that does network address translation (NAT) and forwards all "
+"or a range of ports.</center>"
+msgstr ""
+"<center>Включите эту опцию если вы хотите всегда отсылать фальшивый IP адрес "
+"в DCC запросах.<br>Это может быть полезно, если вы за маршрутизатором со "
+"статическим адресом в сети с Network Address Translation (NAT) и "
+"форвардингом всех или диапазона портов. </center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:115
+msgid "Send address/interface:"
+msgstr "Отсылать адрес/интерфейс:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:119
+msgid ""
+"<center>This is the fixed address that will be sent with all DCC requests if "
+"you enable the option above.</center>"
+msgstr ""
+"<center>Это фиксированный адрес, который будет отсылать все DCC запросы если "
+"вы включили опцию выше</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:123
+msgid "Guess address from IRC server if unroutable"
+msgstr "Определять локальный адрес по данным IRC сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:128
+msgid ""
+"<center>You can enable this option if you are behind a router that forwards "
+"all or a range of ports.<br>KVIrc will try to guess the IP address to use "
+"for DCC by looking up the local hostname as seen by the IRC server you're "
+"connected to.<br>This method is an exclusive alternative to the \"fixed "
+"address\" above.<br>It might guess the correct address automatically if "
+"certain conditions are met (e.g. the IRC server does not mask hostnames).</"
+"center>"
+msgstr ""
+"<center>Вы можете включить эту опцию если вы за маршрутизатором с "
+"форвардингом всех или диапазона портов.<br>KVIrc попытается определить адрес "
+"IP используемый DCC по данным IRC сервера.<br>Этот метод является "
+"единственной альтернативой для \"фиксированного адреса\" выше.<br>Он может "
+"определить правильный IP адрес автоматически если выполнены определённые "
+"условия (например IRC сервер не маскирует хост).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:134
+msgid "Use \"broken bouncer hack\" to detect address"
+msgstr "Использовать \"broken bouncer hack\" для определения адреса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:137
+msgid ""
+"<center>When you're behind a dialup router and also tunneling through a "
+"psyBNC bouncer, you can use a bug in the bouncer to force KVIrc to bind the "
+"DCC connections to the dialup router's address.<br>It's an ugly hack - use "
+"it only if nothing else works.</center>"
+msgstr ""
+"<center>Если вы на диалапе за роутером и также через туннель psyBNC, вы "
+"можете использовать баг в нём чтобы заставить KVIrc связываться через DCC "
+"соединения на адрес диалап роутера.<br>Это грубый хак - используйте его "
+"только если ничто другое не работает.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:144
+msgid "Notify failed DCC handshakes to the remote end"
+msgstr "Уведомлять о неудачных передачах DCC удалённую сторону"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:147
+msgid ""
+"<center>If you enable this option, when a DCC request from a remote user "
+"can't be satisfied KVIrc will notify him by a CTCP ERRMSG. This is a nice "
+"feature so it is a good idea to leave it on unless for some reason you have "
+"deactivated the antiflood system: in this case turning off this option might "
+"help if you often get attacked by CTCP floods.</center>"
+msgstr ""
+"<center>Если включена эта опция и когда запросы DCC от удалённого "
+"пользователя не могут быть удовлетворены, KVIrc уведомит его сообщением CTCP "
+"ERRMSG. Это хороший выбор если вы по какой-либо причине не выключили систему "
+"антифлуда: в таком случае эта опция поможет вам, если вас часто атакуют "
+"флудом CTCP</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:154
+msgid "Maximum number of DCC sessions"
+msgstr "Максимальное количество DCC сессий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:156
+msgid ""
+"<center>This is the maximum number of concurrent DCC sessions and it "
+"includes all the DCC types (send,chat,recv...). KVIrc will refuse the "
+"requests when this limit is reached.</center>"
+msgstr ""
+"<center>Это максимальное количество DCC сессий и оно включает все типы DCC "
+"(передачу, чат, recv). KVIrc будет отклонять все запросы по достижении этого "
+"предела.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:161
+msgid "DCC socket timeout:"
+msgstr "Таймаут сокета DCC:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:164
+msgid ""
+"<center>This is the amount of time that KVIrc will wait for a response "
+"before assuming that a DCC has failed because the remote client was unable "
+"to connect to our listening socket.</center>"
+msgstr ""
+"<center>Это время которое KVIrc будет ожидать прежде чем сделает вывод о "
+"неудавшейся передаче DCC когда удалённый клиент не в состоянии подключиться "
+"к вашему сокету.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:198
+msgid "On Incoming File"
+msgstr "Входящие файлы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:371
+msgid "Automatically accept"
+msgstr "Автоматически принимать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:200
+msgid "Open transfer window as minimized when auto-accepted"
+msgstr "Открывать окно принятия файлов минимизированным при авто-приёме"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:201
+msgid "Automatically resume when auto-accepted"
+msgstr "Автоматически резюмировать при авто-приёме"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:203
+msgid "Save Location"
+msgstr "Параметры хранения загрузок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:204
+msgid "Download folder:"
+msgstr "Каталог загрузки:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:205
+msgid "Sort saved files by nicknames (create subfolders)"
+msgstr "Сортировать сохраняемые файлы по нику (создавать подкаталоги)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:206
+msgid "Guess save path from media type"
+msgstr "Сохранять предполагаемый путь из медиа типа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:209
+msgid "On Download Completion"
+msgstr "При завершении загрузки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:210
+msgid "Notify completion in console"
+msgstr "Вывести уведомление в консоли"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:211
+msgid "Notify completion in notifier"
+msgstr "Вывести уведомление в извещателе"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:212
+msgid "Automatically clear transfer"
+msgstr "Удалить закачку из списка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:215
+msgid ""
+"<center>This option will cause succesfully terminated transfers to be "
+"automatically removed from the transfer window.</center>"
+msgstr ""
+"<center>Эта опция заставит KVIrc подключаться к этой IRC сети при старте.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:220
+msgid "Always open transfer window as minimized"
+msgstr "Всегда открывать окно передач файлов минимизированным"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:238
+msgid "Bug Compatibility"
+msgstr "Баг-совместимость"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:239
+msgid "Send ACK for byte 0"
+msgstr "Отсылать ACK для 0-го байта"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:242
+msgid ""
+"<center>This option causes KVIrc to send a zero-byte acknowledge to kick-"
+"start the DCC transfer with some buggy IRC clients.<br>Use it only if your "
+"DCC transfers stall just after establishing a connection without sending any "
+"data.</center>"
+msgstr ""
+"<center>Эта опция заставит KVIrc отсылать нулевой байт подтверждения при "
+"старте DCC передачи с IRC клиентами, которые имеют некоторые баги."
+"<br>Используйте это только если ваша DCC передача останавливается после "
+"установившегося соединения и никакие данные не передаются.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:247
+msgid "Accept broken RESUME (mIRC file.ext)"
+msgstr "Принимать битый RESUME (mIRC file.ext)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:250
+msgid ""
+"<center>This option causes KVIrc to accept RESUME requests with invalid "
+"filenames.<br>Use it if KVIrc fails to accept RESUME requests from other "
+"clients (e.g. some versions of mIRC).</center>"
+msgstr ""
+"<center>Эта опция заставляет KVIrc принимать RESUME запросы с "
+"недействительными именами файлов.<br>Используйте это если KVIrc не может "
+"принять RESUME запросы от других клиентов (например, некоторые версии mIRC)."
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:254
+msgid "Replace spaces with underscores in outgoing filenames"
+msgstr ""
+"Заменять пробелы символами нижнего подчеркивания в именах исходящих файлов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:257
+msgid ""
+"<center>This option causes KVIrc to replace spaces with underscores in "
+"filenames for all the outgoing file transfers. This will fix filename "
+"handling with some buggy clients (e.g. some versions of mIRC)."
+msgstr ""
+"<center>Эта опция заставляет KVIrc заменять пробелы в именах файлов "
+"символами нижнего подчеркивания, что улучшает совместимость с некоторыми IRC "
+"клиентами (в том числе и старыми версиями mIRC)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:262
+msgid "Limits"
+msgstr "Ограничения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:265
+msgid "Limit upload bandwidth to"
+msgstr "Предел при передаче до"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:273
+msgid "bytes/sec"
+msgstr "байт/сек"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:271
+msgid "Limit download bandwidth to"
+msgstr "Предел при загрузке до"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:277
+msgid "Maximum number of DCC transfers"
+msgstr "Максимальное количество DCC передач"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:279
+msgid ""
+"<center>This is the maximum number of concurrent DCC transfers. KVIrc will "
+"refuse the requests when this limit is reached.</center>"
+msgstr ""
+"<center>Это максимальное количество параллельных DCC передач. KVIrc начнёт "
+"отклонять запросы когда будет достигнут этот предел.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:283
+msgid "Tweaks"
+msgstr "Настройки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:285
+msgid "Use fast send (send ahead)"
+msgstr "Использовать быструю передачу (передачу с опережением)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:288
+msgid ""
+"<center>The \"send ahead\" DCC method allows data to be sent faster by "
+"breaking some of the rules of the original DCC SEND protocol specification."
+"<br>Most clients can handle this kind of optimisation so disable it only if "
+"you have problems.</center>"
+msgstr ""
+"<center>DCC метод \"передачи с опережением\" допускает быструю передачу с "
+"нарушением некоторых правил оригинальной спецификации протокола DCC SEND."
+"<br> Большинство клиентов работают с этим корректно. Выключите эту опцию, "
+"если у вас будут проблемы.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:295
+msgid "Force idle step"
+msgstr "Форсировать шаги при простое"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:298
+msgid ""
+"<center>Enable this option when the dcc file transfers tend to block your "
+"computer by consuming too much CPU time. When this option is enabled the "
+"idle interval below will be forcibly inserted between each sent/received "
+"data packet.</center>"
+msgstr ""
+"<center>Включите эту опцию когда передачи файла через dcc блокируют ваш "
+"компьютер отбирая слишком много процессорных ресурсов. Когда включена эта "
+"опция время простоя между передачей/отправкой пакетов будет меньше.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:310
+msgid ""
+"<center>This parameter controls the average delay between two packets sent "
+"or received.<br>A smaller interval will cause you to send data faster but "
+"will also add load to your CPU, disk and network interface.<br>Reasonable "
+"values are from 5 to 50 milliseconds.</center>"
+msgstr ""
+"<center>Этот параметр устанавливает среднюю задержку между между двумя "
+"принятыми или отправленными пакетами.<br>При меньшем значении данные будут "
+"передаваться быстрее, но это увеличит загрузку CPU, жёсткого диска и сетевых "
+"интерфейсов.<br>Разумные величины от 5 до 50 миллисекунд.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:316
+msgid "Packet size:"
+msgstr "Размер пакета:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:320
+msgid ""
+"<center>This parameter controls the packet size used for DCC SEND.<br>With "
+"bigger packets you will be probably send data faster, but you will also "
+"saturate your bandwidth and in some cases cause more disk activity."
+"<br>Reasonable values are from 512 to 4096 bytes.</center>"
+msgstr ""
+"<center>Этот параметр определяет размер пакета для DCC SEND.<br>С бОльшими "
+"пакетами передача вероятно будет происходить быстрее, но в некоторых случаях "
+"это может вызвать и бОльшую дисковую активность.<br>Разумные значения от 512 "
+"до 4096 байт.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:349
+msgid "On Chat Request"
+msgstr "Запрос чата"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:351
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:373
+msgid "Open minimized when auto-accepted"
+msgstr "Открывать минимизированным при авто-приёме"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:353
+msgid "Always open as minimized"
+msgstr "Всегда открывать минимизированным"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:369
+msgid "Open all minimized"
+msgstr "Открыть всё минимизированным"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:370
+msgid "On Voice Request"
+msgstr "Запросы разговора"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:376
+msgid "Force half-duplex mode on sound device"
+msgstr "Форсировать полудуплексный режим звукового устройства"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:377
+msgid "Volume slider controls PCM, not Master"
+msgstr "Регулятор громкости использует PCM, а не Master"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:379
+msgid "Sound device:"
+msgstr "Звуковое устройство:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:380
+msgid "Mixer device:"
+msgstr "Устройство микшера:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:382
+msgid "Pre-buffer size:"
+msgstr "Размер буфера:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:38
+msgid "Enable Ignore For"
+msgstr "Использовать игнор для"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:39
+msgid "Private/channel messages"
+msgstr "Сообщений приватных каналов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:40
+msgid "Private/channel notices"
+msgstr "Извещений приватных каналов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:44
+msgid "Use verbose ignore (show messages in console)"
+msgstr "Выводить расширенную информацию при игноре (в консоль)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:46
+msgid "Sound System"
+msgstr "Звуковая система"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:66
+msgid "This allows you to select the sound system to be used with KVIrc."
+msgstr ""
+"Эта опция позволяет вам выбрать звуковую систему, которая будет использована "
+"в KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:72
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:88
+msgid "Auto-detect"
+msgstr "Автоопределение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:91
+msgid "Test"
+msgstr "Тест"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:79
+msgid "Media Player"
+msgstr "Мультимедиа проигрыватель"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:81
+msgid ""
+"This allows you to select the preferred media player to be used with the "
+"mediaplayer.* module commands and functions."
+msgstr ""
+"Здесь вы можете выбрать предпочтительный музыкальный проигрыватель, который "
+"будет использоваться модулем mediaplayer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:102
+msgid "ID3 tags' encoding"
+msgstr "Кодировка ID3 тегов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:104
+msgid "This allows you to select encoding of mp3 tags."
+msgstr "Эта опция позволяет выбрать кодировку тегов в MP3 файле"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:125
+msgid "Winamp messages ecoding"
+msgstr "Кодировка сообщений винампа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:127
+msgid "This allows you to select encoding of winamp messages."
+msgstr ""
+"Эта опция позволяет выбрать кодировку сообщений, отправляемых winamp`ом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:290
+msgid "New Query opened"
+msgstr "Открыт новый приват"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:293
+msgid "New message in inactive query"
+msgstr "Новое сообщение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:296
+msgid "Highlighted message in inactive window"
+msgstr "Подсвечиваемое сообщение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:299
+msgid "Me have been kicked"
+msgstr "Был кикнут"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:39
+msgid "Selection background color"
+msgstr "Цвет выбранного фона"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:40
+msgid "Selection foreground color"
+msgstr "Цвет выбранного переднего плана"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:41
+msgid "Control char color"
+msgstr "Цвет управляющего символа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:42
+msgid "Cursor color"
+msgstr "Цвет курсора"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:141
+msgid "Warp cursor at the end of line when browsing history"
+msgstr "Устанавливать курсор в конце строки при просмотре истории"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:142
+msgid "Disable the input history window and it's log memory."
+msgstr "Отключить историю ввода и занимаемую ей память"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:143
+msgid "Hide input toolbuttons by default"
+msgstr "Спрятать кнопки панели инструментов ввода"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:144
+msgid "Nick completion"
+msgstr "Завершение ника"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:145
+msgid "Use bash-like nick completion"
+msgstr "Использовать bash-стиль завершения ников"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:146
+msgid "Nick completion postfix string"
+msgstr "Окончание при завершении ника"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:147
+msgid "Use the completion postfix string for the first word only"
+msgstr "Использовать это окончание только если ник - первое слово"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:148
+msgid "Commandline in user-friendly mode by default"
+msgstr "Дружественный режим командной строки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:81
+msgid "Show message icons"
+msgstr "Показывать иконки сообщений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:82
+msgid "Draw some emoticons (smileys) as pictures"
+msgstr "Рисовать некоторые иконки (смайлы) как картинки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:83
+msgid "Don't show colors in user messages"
+msgstr "Не окрашивать сообщения пользователей"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:88
+msgid "Nicknames"
+msgstr "Ники"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:90
+msgid "\"Smart\" nickname colors"
+msgstr "\"Умные\" цвета ников"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:91
+msgid "Use same colors as in the userlist"
+msgstr "Использовать те же цвета, что и в списке пользователей"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:93
+msgid "Show nicknames in bold"
+msgstr "Показывать ники жирным шрифтом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:94
+msgid "Show user and host"
+msgstr "Показывать пользователя и хостмаску"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:95
+msgid "Show channel mode prefix"
+msgstr "Показывать префикс режима канала"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:96
+msgid "User-defined prefix and postfix"
+msgstr "Определить префикс и постфикс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:98
+msgid "[PREFIX]nickname[!user@host][POSTFIX] message"
+msgstr "[PREFIX]ник[!user@host][POSTFIX] сообщение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:112
+msgid "Prefix:"
+msgstr "Префикс:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:117
+msgid "Postfix:"
+msgstr "Постфикс:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:131
+msgid "Show timestamp"
+msgstr "Показывать отметки времени"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:134
+msgid "Use UTC time for timestamp"
+msgstr "Использовать UTC для отметок времени"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:141
+msgid "Use special color for timestamps"
+msgstr "использовать специальный цвет для меток времени"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:147
+msgid "Timestamp format:"
+msgstr "Формат отметки времени"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:320
+msgid "Transparent"
+msgstr "Прозрачность"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:401
+msgid "Message Type"
+msgstr "Типы сообщений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:417
+msgid "Background:"
+msgstr "Фон:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:426
+msgid "Foreground:"
+msgstr "Передний план:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:434
+msgid "Alert level:"
+msgstr "Уровень предупреждений:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:454
+msgid "Log this"
+msgstr "Журналировать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:458
+msgid "Load From..."
+msgstr "Загрузить из..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:460
+msgid "Save As..."
+msgstr "Сохранить как..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:589
+msgid "Choose a Filename - KVIrc"
+msgstr "Выберите имя файла - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:646
+msgid "Choose a Filename - KVIrc "
+msgstr "Выберите имя файла - KVIrc "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:40
+msgid "Enable lag meter"
+msgstr "Включить определение задержек"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:42
+msgid ""
+"<center>This enables the lag meter engine, which checks at regular intervals "
+"how much lag (latency) the server has.</center>"
+msgstr ""
+"<center>Это включает измеритель задержек, который регулярно проверяет какие "
+"задержки (время ожидания) имеет сервер.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:45
+msgid "Lag meter heartbeat:"
+msgstr "Интервал измерения задержки:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:49
+msgid ""
+"<center>This option allows you to set the lag meter heartbeat interval."
+"<br>The lower the heartbeat interval the higher will be the accuracy of the "
+"lag check but also higher cpu usage and data traffic to the server."
+"<br>Please note that this is NOT the interval between pings sent to the "
+"server: the pings (if any) will be sent really less often. 5000 is a "
+"reasonable value.</center>"
+msgstr ""
+"<center>Эта опция задаёт интервал измерения задержки.<br>Меньшее значение "
+"даст более высокую точность измерения задержки, но вместе с тем и более "
+"высокую загрузку CPU и больший траффик с сервером.<br>Пожалуйста имейте "
+"ввиду, что это НЕ интервал между пингами посылаемыми на сервер, пинги (если "
+"задано) будут отсылаться значительно реже. Разумная величина - 5000.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:58
+msgid "Trigger event if lag exceeds:"
+msgstr "Запустить событие, если задержка превышает:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:61
+msgid ""
+"<center>This option controls the threshold for the OnLagAlarmTimeUp and "
+"OnLagAlarmTimeDown events. When the lag goes above the threshold "
+"OnLagAlarmTimeUp will be triggered and when the lag falls back below the "
+"threshold then OnLagAlarmTimeDown will be triggered</center>"
+msgstr ""
+"<center>Эта опция устанавливает порог событий OnLagAlarmTimeUp и "
+"OnLagAlarmTimeDown. Когда задержка выше порога инициируется событие "
+"OnLagAlarmTimeUp, а когда ниже - OnLagAlarmTimeDown</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:68
+msgid "Show lag in IRC context display"
+msgstr "Показывать задержку в контексте IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:70
+msgid ""
+"<center>This makes the IRC context display applet show the current lag after "
+"the user's nickname (in seconds)</center>"
+msgstr ""
+"<center>Это заставит дисплей IRC контекста показывать текущую задержку после "
+"ника пользователя (в секундах)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.h:28
+msgid "Away"
+msgstr "Отошёл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.h:28
+msgid "CTCP"
+msgstr "CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:28
+msgid "DCC"
+msgstr "DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:59
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:41
+msgid "Advanced"
+msgstr "Дополнительно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:72
+msgid "File Transfer"
+msgstr "Передачи файлов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:113
+msgid "Chat"
+msgstr "Чат"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:126
+msgid "Voice"
+msgstr "Голос"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:32
+msgid "IRC"
+msgstr "IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:73
+msgid "Channel"
+msgstr "Канал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:28
+msgid "Lag"
+msgstr "Задержка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:30
+msgid "time,ping"
+msgstr "время,пинг"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:37
+msgid "authentication,identify"
+msgstr "идентификация,аутентификация"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:31
+msgid "Language"
+msgstr "Язык"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:34
+msgid "language,encoding,charset,codepage"
+msgstr "язык,кодировка,кодовая страница"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:28
+msgid "Contacts"
+msgstr "Контакты"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:30
+msgid "notify,buddy,buddies,friends"
+msgstr "уведомления,друг,друзья,приятели,контакты"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:42
+msgid "Notifier"
+msgstr "Извещатель"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:43
+msgid "popup"
+msgstr "всплывающее меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:37
+msgid "Text"
+msgstr "Текст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:38
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:49
+msgid "theme,colors,output"
+msgstr "тема,цвета,вывод"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:52
+msgid "Message Style"
+msgstr "Стиль сообщений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:56
+msgid "theme,privmsg,output,format"
+msgstr "тема,сообщение,формат,вывод"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:67
+msgid "Timestamp"
+msgstr "Отметка времени"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:71
+msgid "time,timestamp"
+msgstr "время,Отметка времени"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:88
+msgid "Message Colors"
+msgstr "Цвета сообщений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:169
+msgid "theme,colors,messages,output"
+msgstr "тема,цвета,сообщения,вывод"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:168
+msgid "Color Set"
+msgstr "Набор цветов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.h:32
+msgid "Avatars"
+msgstr "Аватары"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:32
+msgid "Sound"
+msgstr "Звук"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:48
+msgid "sound,xmms,audio,play,amarok"
+msgstr "звук,xmms,аудио,проигрывать,amarok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:81
+msgid "Sounds"
+msgstr "Звуки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:83
+msgid "sound,events"
+msgstr "звуки,события"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:28
+msgid "URL handlers"
+msgstr "Обработчики URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:31
+msgid "url,programs"
+msgstr "url,программы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:29
+msgid "Tray icon"
+msgstr "Иконка в трее"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:31
+msgid "tray,dockwidget"
+msgstr "трей, иконка, системный лоток"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.h:33
+msgid "Tools"
+msgstr "Инструменты"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.h:28
+msgid "General options"
+msgstr "Общие настройки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.h:31
+msgid "Interface"
+msgstr "Интерфейс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:29
+msgid "Text icons"
+msgstr "Текстовые иконки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:31
+msgid "smileys,emoticons"
+msgstr "смайлы,иконки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:34
+msgid "Output"
+msgstr "Вывод"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:48
+msgid "Look"
+msgstr "Вид"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:101
+msgid "Features"
+msgstr "Возможности"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:46
+msgid "Media Types"
+msgstr "Медиа типы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:48
+msgid "file,audio,video,programs"
+msgstr "файл,аудио,видео,программы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:114
+msgid "theme"
+msgstr "тема"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:47
+msgid "Transparency"
+msgstr "Прозрачность"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:48
+msgid "theme,background"
+msgstr "тема, фон"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:74
+msgid "Window Captions"
+msgstr "Заголовки окон"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:88
+msgid "theme,mdi"
+msgstr "тема, mdi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:87
+msgid "Workspace"
+msgstr "Рабочее пространство"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:100
+msgid "ToolBar Applets"
+msgstr "Апплеты панели инструментов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:101
+msgid "theme,toolbar"
+msgstr "тема, панель инструментов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:150
+msgid "connection"
+msgstr "соединение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:33
+msgid "Protection"
+msgstr "Защита"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:36
+msgid "ctcp,flood"
+msgstr "ctcp,флуд"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:144
+msgid "Avatar"
+msgstr "Аватар"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.h:28
+msgid "Anti-spam"
+msgstr "Антиспам"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:32
+msgid "Verbosity And Output"
+msgstr "Многословность вывода"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:34
+msgid "debug"
+msgstr "отладка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:28
+msgid "Logging"
+msgstr "Логирование"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:29
+msgid "save,output"
+msgstr "сохранение,вывод"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:50
+msgid "Input"
+msgstr "Ввод"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:33
+msgid "theme,colors,text"
+msgstr "тема,цвета,текст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:33
+msgid "Taskbar"
+msgstr "Панель задач"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:47
+msgid "Tree Taskbar"
+msgstr "Дерево панели задач"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:65
+msgid "Foreground"
+msgstr "Передний план"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:111
+msgid "Classic Taskbar"
+msgstr "Классическая панель задач"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:52
+msgid "Proxy Hosts"
+msgstr "Прокси серверы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:54
+msgid "connection,servers"
+msgstr "соединение,сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:28
+msgid "Alert/Highlight"
+msgstr "Предупреждения/Подсветка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:42
+msgid "Highlight"
+msgstr "Подсветка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:55
+msgid "Taskbar Alert"
+msgstr "Панель задач предупреждений"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.h:29
+msgid "Flood Protection"
+msgstr "Защита от флуда"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:30
+msgid "Userlist"
+msgstr "Список пользователей"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:31
+msgid "theme,userlist,channel"
+msgstr "тема,список пользователей,канал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:45
+msgid "theme,userlist,channel,background"
+msgstr "тема,список пользователей,канал,фон"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:66
+msgid "theme,userlist,channel,colors"
+msgstr "тема,список пользователей,канал,цвета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:81
+msgid "Nickname Grid"
+msgstr "Таблица ников"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:82
+msgid "theme,userlist,channel,grid"
+msgstr "тема,список пользователей,канал,сетка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:102
+msgid "userlist,channel"
+msgstr "список пользователей,канал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:29
+msgid "Labels"
+msgstr "Надписи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:30
+msgid "theme,topic"
+msgstr "тема,топик"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:28
+msgid "Scripting Engine"
+msgstr "Движок скриптинга"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:29
+msgid "scripting,kvs,debug"
+msgstr "скриптинг,kvs,отладка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:55
+msgid "SSL"
+msgstr "SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:72
+msgid "Socket"
+msgstr "Сокет"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:87
+msgid "Ident Service"
+msgstr "Сервис идентификации"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:29
+msgid "Ignore"
+msgstr "Игнор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:31
+msgid "protection"
+msgstr "защита"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:28
+msgid "Query"
+msgstr "Приват"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:30
+msgid "chat"
+msgstr "чат"
+
+#, fuzzy
+#~ msgid "Output verosity"
+#~ msgstr "Многословность вывода"
+
+#~ msgid "Scaling"
+#~ msgstr "Масштабирование"
diff --git a/po/modules/options/options_sr.po b/po/modules/options/options_sr.po
new file mode 100644
index 00000000..da31332c
--- /dev/null
+++ b/po/modules/options/options_sr.po
@@ -0,0 +1,15804 @@
+# SOME DESCRIPTIVE TITLE. Copyright (C) YEAR Free Software Foundation, Inc.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:304
+msgid ""
+msgstr ""
+"Project-Id-Version: kvirc_sr\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2002-06-08 21:44GMT+1\n"
+"Last-Translator: Prethorian <[email protected]>\n"
+"Language-Team: Serbian <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 0.9.5\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:232
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:51
+#, fuzzy
+msgid "Font:"
+msgstr "Font"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:47
+#, fuzzy
+msgid "Background color:"
+msgstr "Boja pozadine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:129
+#, fuzzy
+msgid "Background image:"
+msgstr "Pozadinska slika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:51
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:46
+#, fuzzy
+msgid "Horizontal align:"
+msgstr "Server X509 sertifikat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:50
+#, fuzzy
+msgid "Vertical align:"
+msgstr "Server X509 sertifikat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:59
+msgid "Mark Line:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:66
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:124
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:59
+#, fuzzy
+msgid "Tile"
+msgstr "&Par�e"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:62
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:55
+msgid "Left"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:56
+msgid "Right"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:132
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:62
+#, fuzzy
+msgid "Center"
+msgstr "Generalne opcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:60
+#, fuzzy
+msgid "Top"
+msgstr "Naslov"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:61
+msgid "Bottom"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:149
+msgid "Enable URL highlighting"
+msgstr "Omogu�i URL isticanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:150
+#, fuzzy
+msgid "Use line wrap margin"
+msgstr "Koristi prelamaju�u marginu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:151
+#, fuzzy
+msgid "Maximum buffer size:"
+msgstr "Maksimalna veli�ina bafera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:152
+#, fuzzy
+msgid " lines"
+msgstr "odgovoreno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:153
+msgid "Link tooltip show delay:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:306
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:59
+msgid " msec"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:155
+msgid "Link tooltip hide delay:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:157
+msgid "Track last read text line"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:48
+#, fuzzy
+msgid "NickServ Authentication Rule"
+msgstr "NickServ identifikaciona pravila"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:55
+#, fuzzy
+msgid "Registered NickName"
+msgstr "Registrovani korisnici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:60
+msgid "Put here the nickname that you have registered with NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:277
+#, fuzzy
+msgid "NickServ Mask"
+msgstr "NickServ maska"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:70
+#, fuzzy, c-format
+msgid ""
+"This is the mask that NickServ must match to be correctly identified as the "
+"NickServ service. This usually will be something like <b>NickServ!"
+"[email protected]</b>.<br>You can use wildcards for this field, but "
+"generally it is a security flaw. If you're 100%% sure that NO user on the "
+"network can use the nickname \"NickServ\", the mask <b>NickServ!*@*</b> may "
+"be safe to use in this field."
+msgstr ""
+"<center>Ovo je maska koja mora da se ta�no poklopi sa NickServ-om da bi se "
+"korektno identifikovali NickServ servisu. Ovo je obi�no ne�to nalik <b> "
+"[email protected]</b>...Mo�ete koristiti �okere za ovo "
+"polje, ali generalno to je sigurnosno slabo. Ako ste 100% sigurni da NI "
+"JEDAN korisnik na mre�i ne mo�e da promeni svoj nadimak kod NickServ-a onda "
+"verovatno <b>NickServ!*@*</b> �e biti u redu za ovo polje.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:78
+#, fuzzy
+msgid "Message Regexp"
+msgstr "Tip poruke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:86
+msgid ""
+"This is the simple regular expression that the identification request "
+"message from NickServ must match in order to be correctly recognized.<br>The "
+"message is usually something like \"To identify yourself please use /ns "
+"IDENTIFY password\" and it is sent when the NickServ wants you to "
+"authenticate yourself. You can use the * and ? wildcards."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:259
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:279
+#, fuzzy
+msgid "Identify Command"
+msgstr "Komanda predstavljanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:98
+#, fuzzy
+msgid ""
+"This is the command that will be executed when NickServ requests "
+"authentication for the nickname described in this rule (if the both server "
+"and NickServ mask are matched). This usually will be something like <b>msg "
+"NickServ identify &lt;yourpassword&gt;</b>.<br>You can use <b>msg -q</b> if "
+"you don't want the password echoed on the screen. Please note that there is "
+"no leading slash in this command."
+msgstr ""
+"<center>Ovo je komanda koja �e biti izvr�ena kad NickServ zatra�i "
+"autentifikaciju za nadimak opisan u ovom pravilu (ako se poklapa i server i "
+"NickServ maska). Ovo �e biti obi�no ne�to kao <b>msg NickServ identify &lt;"
+"va�alozinka&gt; </b>.Mo�ete koristiti \"msg -q\" ako ne �elite da lozinka "
+"bude vidljiva na ekranu. Molim imajte na umu da ovde nema po�etne kose crte "
+"u ovoj komandi.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:256
+#, fuzzy
+msgid "Server mask"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:117
+msgid ""
+"This is the mask that the current server must match in order for this rule "
+"to apply. It can contain * and ? wildcards.<br>Do NOT use simply \"*\" "
+"here..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:128
+msgid "Hint: Move the mouse cursor over the fields to get help"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:137
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:68
+msgid "Cancel"
+msgstr "Poni�ti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:803
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:164
+#, fuzzy
+msgid "Invalid NickServ Rule"
+msgstr "Pogre�an ID tajmera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:169
+msgid "The Nickname field can't be empty!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:175
+msgid "The Nickname field can't contain spaces!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:183
+msgid "The NickServ mask can't be empty!<br>You must put at least * there."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:191
+msgid "The Message Regexp can't be empty!<br>You must put at least * there."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:199
+#, fuzzy
+msgid "The Identify Command can't be empty!"
+msgstr "Komanda predstavljanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:265
+#, fuzzy
+msgid "Enable NickServ Identification"
+msgstr "Omogu�i automatsku NickServ identifikaciju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:269
+msgid "This check enables the automatic identification with NickServ"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:276
+msgid "Nickname"
+msgstr "Nadimak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:258
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:278
+#, fuzzy
+msgid "NickServ Request Mask"
+msgstr "NickServ maska"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:265
+#, fuzzy
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on all the networks."
+"<br>Please be aware that this feature can cause your NickServ passwords to "
+"be stolen if used improperly. Make sure that you fully understand the "
+"NickServ authentication protocol.<br>In other words, be sure to know what "
+"you're doing.<br>Also note that the password that you provide is stored as "
+"<b>PLAIN TEXT</b>.<br>KVIrc supports also per-network NickServ "
+"authentication rules that can be created in the \"Advanced...\" network "
+"options (accessible from the servers dialog).</center>"
+msgstr ""
+"<center>Ovo je lista NickServ identifikacionih pravila. KVIrc �e ih "
+"koristiti da napravi svoju automatsku interakciju sa NickServ-om.<br>Molim "
+"imajte na umu da ova mogu�nost mo�e prouzrokovati da va�a NickServ lozinka "
+"bude ukradena, ako je koristite neoprezno: molim pratite sugestije u "
+"savetima i budite sigurni da ste potpuno razumeli protokol NickServ "
+"autorizacije.<br> Drugim re�ima: budite sigurni da znate �ta radite."
+"<br>Takodje imajte na umu da lozinke koje se �uvaju su u �ITLJIV TEKST u "
+"KVIrc konfiguracionom fajlu. <br>Desni klik za dodavanje/uklanjanje pravila."
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:293
+#, fuzzy
+msgid "Add Rule"
+msgstr "Dodaj zabranu (ban)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:298
+#, fuzzy
+msgid "Edit Rule"
+msgstr "Izmeni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:302
+#, fuzzy
+msgid "Delete Rule"
+msgstr "Obri�i ovo pravilo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:31
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:36
+msgid "Font"
+msgstr "Font"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:38
+msgid "Foreground color"
+msgstr "Boja ispisa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:37
+msgid "Background color"
+msgstr "Boja pozadine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:34
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:44
+msgid "Background image"
+msgstr "Pozadinska slika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:40
+#, fuzzy
+msgid "Enable tray icon"
+msgstr "Omogu�i �ifrovanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:41
+#, fuzzy
+msgid "Close in tray"
+msgstr "M&inimizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:42
+#, fuzzy
+msgid "Minimize in tray"
+msgstr "M&inimizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:44
+#, fuzzy
+msgid "Enable tray icon flashing"
+msgstr "Omogu�i nagla�avanje re�i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:45
+msgid "Enable level-based message notification (not a message-type based)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:47
+msgid "Select message levels to notify"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:49
+msgid "Minimum level for low-priority messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:53
+msgid "Minimum level for high-priority message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.cpp:40
+msgid ""
+"This section contains irc protection tools<br><p>like<b> flood, ignore, "
+"antispam. </b> </p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:40
+msgid ""
+"<center><b>Settings for CTCP.</b></center><p>The <b>Client-To-Client "
+"Protocol</b> (CTCP) is used to transmit special control messages over an IRC "
+"connection. These messages can request information from clients or negotiate "
+"file transfers.<br><br></p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:47
+#, fuzzy
+msgid "CTCP Replies"
+msgstr "odgovoreno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:48
+msgid "Append to VERSION reply:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:52
+msgid ""
+"<center>This text will be appended to the CTCP VERSION reply.<br>For "
+"example, you can place a script name here.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:55
+msgid "Append to SOURCE reply:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:59
+msgid ""
+"<center>This text will be appended to the CTCP SOURCE reply.<br>For example, "
+"you can place the source URL for a script here.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:69
+#, fuzzy
+msgid "PAGE reply:"
+msgstr "CTCP odgovor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:73
+msgid ""
+"<center>This is the CTCP PAGE reply.<br>It should contain some sort of "
+"acknowledgement for CTCP PAGE messages.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:76
+#, fuzzy
+msgid "Show the CTCP replies in the active window"
+msgstr "nema spoljnih poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:78
+msgid "Show dialog for CTCP page requests"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:36
+#, fuzzy
+msgid "Use tree taskbar"
+msgstr "Taskbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:37
+msgid "Sort windows by name"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:38
+#, fuzzy
+msgid "Show window icons in taskbar"
+msgstr "Poka�i zadebljane nadimke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:39
+msgid "Show activity meter in taskbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:41
+msgid ""
+"<center>This option enables the usage of the taskbar activity meter. Each "
+"window entry will have a small indicator of the activity that is going on in "
+"that window. The indicator is a small square that changes colors, dark "
+"colors mean low activity, while bright colors signal high activity. KVIrc "
+"also uses some heuristics to determine whether the activity is somewhat "
+"\"human\" or it is generated by automated entities (such as bots or IRC "
+"servers). \"Human\" activity causes the indicator to be shaded red while "
+"automated activity causes the indicator to be shaded blue.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:49
+#, fuzzy
+msgid "Show IRC context indicator in taskbar"
+msgstr "&Nov irc kontekst"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:50
+#, fuzzy
+msgid "Enable window tooltips"
+msgstr "GUI Efekat: Animiraj savete-alata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:233
+#, fuzzy
+msgid "Text/Alert Colors"
+msgstr "Zatvori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:125
+#, fuzzy
+msgid "Normal:"
+msgstr "Normalni mod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:126
+#, fuzzy
+msgid "Selected:"
+msgstr "Sa�uvaj selektovano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:236
+#, fuzzy
+msgid "Alert Level 1:"
+msgstr "Nivo upozorenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:237
+#, fuzzy
+msgid "Alert Level 2:"
+msgstr "Nivo upozorenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:238
+#, fuzzy
+msgid "Alert Level 3:"
+msgstr "Nivo upozorenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:239
+#, fuzzy
+msgid "Alert Level 4:"
+msgstr "Nivo upozorenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:240
+#, fuzzy
+msgid "Alert Level 5:"
+msgstr "Nivo upozorenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:241
+#, fuzzy
+msgid "Progress bar color:"
+msgstr "Linija progresa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:124
+#, fuzzy
+msgid "Background Colors"
+msgstr "Boja pozadine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:212
+#, fuzzy
+msgid "Show header"
+msgstr "Tekstualni editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:214
+#, fuzzy
+msgid "Minimum width:"
+msgstr "Minimalna �irina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:215
+#, fuzzy
+msgid "Maximum width:"
+msgstr "Maksimalna �irina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:235
+#, fuzzy
+msgid "Minimized:"
+msgstr "M&inimizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:242
+#, fuzzy
+msgid "Minimum width of buttons:"
+msgstr "Minimalna �irina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:244
+#, fuzzy
+msgid "Set maximum button width"
+msgstr "Maksimalna �irina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:245
+#, fuzzy
+msgid "Maximum width of buttons:"
+msgstr "Minimalna �irina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:246
+msgid "Use flat buttons"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:96
+#, fuzzy
+msgid "Network Details"
+msgstr "Pode�avanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:82
+msgid "Description:"
+msgstr "Opis:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:116
+#, fuzzy
+msgid "<center>Put here a brief description of the network.</center>"
+msgstr ""
+"<center>Klikni ovde za editovanje naprednih opcija za ovaj server...</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:477
+msgid "Properties"
+msgstr "Pode�avanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:123
+msgid "Username:"
+msgstr "Korisnik:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:134
+#, fuzzy
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to servers "
+"on this network.\n"
+"If this field is left empty (most common case), KVIrc will use the default "
+"username specified in the \"Identity\" options tab.</center>"
+msgstr ""
+"<center>Ovo je <b>korisni�ko ime</b> koje �e KVIrc koristiti za login na "
+"ovaj server.\n"
+"Ako ostavite ovo polje prazno (veoma va�an slu�aj), KVIrc �e koristiti "
+"predefinisano korisni�ko ime navedeno u \"Identitet\" jezi�ku u opcijama.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:498
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:320
+msgid "Nickname:"
+msgstr "Nickname (nadimak):"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:145
+#, fuzzy
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to the servers on this network.<br>If this field is left empty (most "
+"common case), the default nickname (specified in the \"Identity\" settings) "
+"will be used.</center>"
+msgstr ""
+"<center> Mo�ete definisati \"specijalan\" <b>nadimak</b> koji mo�e biti "
+"kori��en za logovanje na ovaj server. <br> Ako ostavite ovo polje prazno "
+"(veoma �est slu�aj), predefinisan nadimak (definisan u \"identity\" tab-u) "
+"�e biti kori��en. </center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:509
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:342
+#, fuzzy
+msgid "Real name:"
+msgstr "Stvarno ime"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:153
+#, fuzzy
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with the servers on this network.<br>If you leave this field empty "
+"(most common case), the default \"real name\" (specified in the \"Identity\" "
+"settings) will be used.</center>"
+msgstr ""
+"<center>Mo�ete definisati \"specijalno <b>stvarno ime</b> koje ce biti "
+"kori��eno za logovanje na ovaj server. <br> Ako ostavite ovo polje prazno "
+"(�esto kori��en slu�aj), predefinisano \"stvarno ime\" (definisano u "
+"\"identity\" tab-u) �e biti kori��eno.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:644
+#, fuzzy
+msgid "Encoding:"
+msgstr "dolaze�e"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:164
+msgid ""
+"<center>This box allows you to choose the preferred encoding for the servers "
+"in this network. If you choose \"Use System Encoding\" then the encoding "
+"will be set to the systemwide value that you choose in the \"Encoding\" page "
+"of the options dialog.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:173
+#, fuzzy
+msgid "Use System Encoding"
+msgstr "Koristi ma�inu za �ifrovanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:185
+#, fuzzy
+msgid "Connect to this network at startup"
+msgstr "Isteklo je vreme za povezivanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:189
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to automatically connect to this "
+"network at startup</center>"
+msgstr ""
+"<center>Ova opcija ce prouzrokovati da KVIrc poku�a<br>da ponovo u�e na "
+"kanal sa koga ste izba�eni.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:79
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:120
+#, fuzzy
+msgid "General"
+msgstr "Generalne opcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:756
+msgid "Channels to join automatically upon connect:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:211
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to a server in this network has been established. To add a "
+"channel, type its name in the text input below and click \"<b>Add</b>\".</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:217
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:62
+#, fuzzy
+msgid "Join Channels"
+msgstr "Ovo nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:228
+#, fuzzy
+msgid ""
+"<center>The following commands will be executed after a connection to a "
+"server in this network has been established.<br><b>Important:</b> Enter "
+"commands <b>without</b> a preceding slash (e.g. <tt>quote pass secret</tt> "
+"instead of <tt>/quote pass secret</tt>).<br>KVIrc will first send the USER "
+"command, then eventually PASS and NICK and then execute this command "
+"sequence.</center>"
+msgstr ""
+"<center>Prate�e komande �e biti izvr�ene posle uspostavljene konekcije.<br> "
+"KVIrc �e prvo poslati USER komandu , onda eventualno PASS i NICK i onda �e "
+"izvr�iti ovu<br>sekvencu komandi.<br>Ovo je prvenstveno korisno za bouncere</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:782
+#, fuzzy
+msgid "On Connect"
+msgstr "Pove�i se"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:249
+#, fuzzy
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"a server in this network.<br><b>Important:</b> Enter commands <b>without</b> "
+"a preceding slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote "
+"privatelog</tt>).<br>This is useful for automatically opening queries, "
+"setting variables, etc.</center>"
+msgstr ""
+"<center>Prate�e komande �e biti izvr�ene posle uspostavljene konekcije.<br> "
+"KVIrc �e prvo poslati USER komandu , onda eventualno PASS i NICK i onda �e "
+"izvr�iti ovu<br>sekvencu komandi.<br>Ovo je prvenstveno korisno za bouncere</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:801
+#, fuzzy
+msgid "On Login"
+msgstr "odlaze�e"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:285
+#, fuzzy
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on this network.<br>Please "
+"be aware that this feature can cause your NickServ passwords to be stolen if "
+"used improperly. Make sure that you fully understand the NickServ "
+"authentication protocol.<br>In other words, be sure to know what you're "
+"doing.<br>Also note that the password that you provide is stored as <b>PLAIN "
+"TEXT</b>.</center>"
+msgstr ""
+"<center>Ovo je lista NickServ identifikacionih pravila. KVIrc �e ih "
+"koristiti da napravi svoju automatsku interakciju sa NickServ-om.<br>Molim "
+"imajte na umu da ova mogu�nost mo�e prouzrokovati da va�a NickServ lozinka "
+"bude ukradena, ako je koristite neoprezno: molim pratite sugestije u "
+"savetima i budite sigurni da ste potpuno razumeli protokol NickServ "
+"autorizacije.<br> Drugim re�ima: budite sigurni da znate �ta radite."
+"<br>Takodje imajte na umu da lozinke koje se �uvaju su u �ITLJIV TEKST u "
+"KVIrc konfiguracionom fajlu. <br>Desni klik za dodavanje/uklanjanje pravila."
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:35
+#, fuzzy
+msgid "NickServ"
+msgstr "NickServ maska"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:323
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:60
+#, fuzzy
+msgid "&OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:449
+#, fuzzy
+msgid "Server Details"
+msgstr "Detalji servera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:465
+#, fuzzy
+msgid ""
+"<center>This is a brief description of this server. This field has no "
+"restrictions but many server lists use it to describe the server's physical "
+"location</center>"
+msgstr ""
+"<center>Ovo je kratak opis servera: ovo polje nema ograni�enja ali mnoge "
+"liste servera ga koriste za opis fizi�ke lokacije servera</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:484
+#, fuzzy
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to this "
+"server.\n"
+"If this field is left empty (most common case), KVIrc will first look if an "
+"username is specified for the network that this server belongs to, and if "
+"that is empty then KVIrc will use the default username specified in the "
+"\"Identity\" options tab.</center>"
+msgstr ""
+"<center>Ovo je <b>korisni�ko ime</b> koje �e KVIrc koristiti za login na "
+"ovaj server.\n"
+"Ako ostavite ovo polje prazno (veoma va�an slu�aj), KVIrc �e koristiti "
+"predefinisano korisni�ko ime navedeno u \"Identitet\" jezi�ku u opcijama.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:490
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:127
+msgid "Password:"
+msgstr "Lozinka:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:495
+#, fuzzy
+msgid ""
+"<center>If this server requires a password, put it in this field, otherwise "
+"leave it empty.</center>"
+msgstr ""
+"<center>Ako server zahteva lozinku, stavite je u ovo polje, u protivnom nek "
+"ostane prazno.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:504
+#, fuzzy
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to this server.<br>If this field is left empty (most common case), "
+"KVIrc will first look if a nickname is specified for the network that this "
+"server belongs to, and if that is empty then the default nickname (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center> Mo�ete definisati \"specijalan\" <b>nadimak</b> koji mo�e biti "
+"kori��en za logovanje na ovaj server. <br> Ako ostavite ovo polje prazno "
+"(veoma �est slu�aj), predefinisan nadimak (definisan u \"identity\" tab-u) "
+"�e biti kori��en. </center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:513
+#, fuzzy
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with this server.<br>If you leave this field empty (most common case), "
+"KVIrc will first look if a real name is specified for the network that this "
+"server belongs to, and if that is empty the default \"real name\" (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center>Mo�ete definisati \"specijalno <b>stvarno ime</b> koje ce biti "
+"kori��eno za logovanje na ovaj server. <br> Ako ostavite ovo polje prazno "
+"(�esto kori��en slu�aj), predefinisano \"stvarno ime\" (definisano u "
+"\"identity\" tab-u) �e biti kori��eno.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:683
+#, fuzzy
+msgid "User Mode"
+msgstr "&Mod korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:520
+#, fuzzy
+msgid "Use default user mode"
+msgstr "Mogu�i modovi korisnika:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:522
+msgid ""
+"<center>If this is enabled, the global initial <b>user mode</b> (configured "
+"from the identity dialog) will be used. If disabled, you can configure an "
+"initial user mode for this server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:684
+#, fuzzy
+msgid "Invisible (+i)"
+msgstr "i (nevidljivost)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:534
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:685
+#, fuzzy
+msgid "Server notices (+s)"
+msgstr "s (Obave�tenja servera)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:686
+#, fuzzy
+msgid "Wallops (+w)"
+msgstr "w (Wallops)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:548
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:60
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:104
+msgid "Identity"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:115
+msgid "Port:"
+msgstr "Port:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:565
+msgid ""
+"<center>This is the default <b>port</b> that this server will be contacted "
+"on.<br>Usually <b>6667</b> is OK.</center>"
+msgstr ""
+"<center>Ovo je predefinisan <b>port</b> na koji �e se server kontaktirati. "
+"<br>Obi�no <b>6667</b> je OK.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:571
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:119
+#, fuzzy
+msgid "IP address:"
+msgstr "IP Adresa:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:576
+#, fuzzy
+msgid ""
+"<center>This is the <b>IP address</b> of this server, it is here for caching "
+"purposes.<br>If you leave this field empty, KVIrc will fill it in the first "
+"time it connects to the server. If you enable the \"cache IP address\" "
+"option below, KVIrc will use it as a \"cached result\" and avoid looking it "
+"up again.</center>"
+msgstr ""
+"<center>Ovo je <b>IP adresa</b> servera, ona je ovde u svrsi ke�iranja. "
+"<br>Ako ostavite ovo polje prazno, KVIrc �e ga popuniti prvi put kada se "
+"zaka�i na server: Iako ste omogu�ili \"ke�iraj IP adrese\" u opciji ispod, "
+"KVIrc �e je koristiti kao \"ke�iran rezultat\" i izbe�i ponovni pregled "
+"servera za njegovom IP adresom.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:596
+msgid "Cache IP address"
+msgstr "Ke�iraj IP adresu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:599
+#, fuzzy
+msgid ""
+"<center>This check will enable <b>IP address caching</b> for this server:"
+"<br>DNS lookups can be time-consuming and might be blocking on some "
+"platforms; this option will cause KVIrc to look up the server hostname only "
+"once.<br><br> Advanced: you can also use this option to force a certain "
+"server name to resolve to a fixed ip address when either the dns for that "
+"server is temporairly unreachable or you want to avoid the round-robin "
+"lookups.</center>"
+msgstr ""
+"<center>Ova potvrda �e omogu�iti <b>Ke�iranje IP adrese</b> za ovaj server:"
+"<br>DNS provera mo�e biti gubljenje vremena i mo�e biti blokirana na "
+"pojedinim platformama; ova opcija �e prouzrokovati da KViIrc proveri "
+"serverovo ime hosta samo jednom.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:609
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:140
+#, fuzzy
+msgid "Use IPv6 protocol"
+msgstr "Koristi IpV6 protokol"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:619
+#, fuzzy
+msgid ""
+"<center>This check identifies IPv6 servers.<br>If enabled, KVIrc will "
+"attempt to use the IPv6 protocol (thus your OS <b>must</b> have a working "
+"IPv6 stack and you <b>must</b> have an IPv6 connection).</center>"
+msgstr ""
+"<center>Ova opcija identifikuje IPV6 servere.<br>Ako je uklju�ena, KVIrc �e "
+"poku�ati da koristi IPV6 protokol (naravno Va� kernel <b>mora imati</b> "
+"upotrebljiv IPV6 stek i Vi <b>morate imati</b> IPV6 konekciju). </center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:624
+#, fuzzy
+msgid "Use SSL protocol"
+msgstr "Kori��enje IpV6 protokola"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:627
+#, fuzzy
+msgid ""
+"<center>This check will cause the connection to use the <b>Secure Socket "
+"Layer</b> encryption support. Obviously, this server must have support for "
+"this, too. :)</center>"
+msgstr ""
+"<center>Ova opcija ce omogu�iti da kod konektovanja koristite <b>Sigurni "
+"Nivo Priklju�ka (SSL)</b><br>podr�ku. O�igledno server tako�e mora imati "
+"podr�ku za SSL :-)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:636
+#, fuzzy
+msgid "Connect to this server at startup"
+msgstr "Isteklo je vreme za povezivanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:641
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to connect to the IRC server when it is "
+"started.</center>"
+msgstr ""
+"<center>Ova opcija ce prouzrokovati da KVIrc poku�a<br>da ponovo u�e na "
+"kanal sa koga ste izba�eni.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:650
+msgid ""
+"<center>This box allows you to choose the preferred encoding for this sever. "
+"If you choose \"Use Network Encoding\" then the encoding will be inherited "
+"from the network that this server belongs to.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:659
+#, fuzzy
+msgid "Use Network Encoding"
+msgstr "Koristi ma�inu za �ifrovanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:672
+#, fuzzy
+msgid "Link filter:"
+msgstr "Slu�anje neuspe�no"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:701
+msgid ""
+"<center>This field specifies the name of a module that exports a link filter "
+"for this type of server.<br>For plain IRC connections, you don't need any "
+"link filters; this is used for incompatible protocols.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:705
+#, fuzzy
+msgid "Id:"
+msgstr "Id"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:713
+msgid ""
+"<center>This field allows you to specify a really unique id for this server. "
+"You will then be able to use /server -x &lt;this_id&gt; to make the "
+"connection. This is especially useful when you have multiple server entries "
+"with the same hostname and port in different networks (bouncers?)</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:719
+#, fuzzy
+msgid "Proxy server:"
+msgstr "irc server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:724
+msgid ""
+"<center>This is the <b>proxy</b> that KVIrc will use to connect to thos "
+"server.\n"
+"If this field is set in \"Default\" KVirc will use global proxy settings, if "
+"it is set in \"Direct connection\" KVirc will connect to this server without "
+"proxy. You can define new proxy server in global options' \"Proxy servers\" "
+"menu.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:729
+#, fuzzy
+msgid "Default"
+msgstr "predefinisano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:730
+#, fuzzy
+msgid "Direct connection"
+msgstr "nema konekcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:746
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:28
+msgid "Connection"
+msgstr "Konekcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:758
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to this server has been established. To add a channel, type its "
+"name in the text input below and click \"<b>Add</b>\".</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:776
+#, fuzzy
+msgid ""
+"<center>The following commands will be executed after a connection has been "
+"established.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote pass secret</tt> instead of <tt>/quote pass secret</"
+"tt>).<br>KVIrc will first send the USER command, then eventually PASS and "
+"NICK and then execute this command sequence.<br>This is particularly useful "
+"for IRC bouncers that require login commands.</center>"
+msgstr ""
+"<center>Prate�e komande �e biti izvr�ene posle uspostavljene konekcije.<br> "
+"KVIrc �e prvo poslati USER komandu , onda eventualno PASS i NICK i onda �e "
+"izvr�iti ovu<br>sekvencu komandi.<br>Ovo je prvenstveno korisno za bouncere</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:796
+#, fuzzy
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"this server.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote privatelog</tt>)."
+"<br>This is useful for automatically opening queries, setting variables, etc."
+"</center>"
+msgstr ""
+"<center>Prate�e komande �e biti izvr�ene posle uspostavljene konekcije.<br> "
+"KVIrc �e prvo poslati USER komandu , onda eventualno PASS i NICK i onda �e "
+"izvr�iti ovu<br>sekvencu komandi.<br>Ovo je prvenstveno korisno za bouncere</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1041
+msgid "Server"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1042
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:73
+msgid "Description"
+msgstr "Opis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1054
+#, fuzzy
+msgid ""
+"<center>This is the list of available IRC servers.<br>Right-click on the "
+"list to add or remove servers and perform other actions.<br>Double-click on "
+"a item for advanced options.</center>"
+msgstr ""
+"<center>Ovo je lista mogu�ih IRC servera.<br>Desni klik na listu za "
+"dodavanje ili uklanjanje servera ili za druge opcije</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1069
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1430
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1554
+msgid "New Network"
+msgstr "Nova Mre�a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1077
+#, fuzzy
+msgid "New Server"
+msgstr "Mre�a/Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1086
+#, fuzzy
+msgid "Remove Network/Server"
+msgstr "Ukloni mre�u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1098
+#, fuzzy
+msgid "Copy Server"
+msgstr "Kopiraj server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1107
+#, fuzzy
+msgid "Paste Server"
+msgstr "Prenesi server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1446
+#, fuzzy
+msgid "Import List"
+msgstr "Uvezi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1125
+#, fuzzy
+msgid "Active Configuration"
+msgstr "&Sa�uvaj pode�avanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1332
+msgid "Server:"
+msgstr "Server:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1130
+#, fuzzy
+msgid ""
+"<center>This is the name of the currently selected server or network</center>"
+msgstr "<center>Ovo je <b>ime hosta</b> trenutno izabranog servera.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1153
+#, fuzzy
+msgid "Advanced..."
+msgstr "Napredno ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1156
+#, fuzzy
+msgid "<center>Click here to edit advanced options for this entry</center>"
+msgstr ""
+"<center>Klikni ovde za editovanje naprednih opcija za ovaj server...</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1159
+#, fuzzy
+msgid "Connect &Now"
+msgstr "Pove�i se"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1164
+#, fuzzy
+msgid ""
+"<center>Hit this button to connect to the currently selected server.</center>"
+msgstr ""
+"<center>Pritisnite ovo dugme za konektovanje na trenutno izabran server u "
+"trenutnom IRC kontekstu</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1177
+#, fuzzy
+msgid ""
+"<center>This button shows a list of recently used servers. It allows you to "
+"quickly find them in the list.</center>"
+msgstr ""
+"<center>Ovo dugme prikazuje listu naj�e��e kori��enih servera, omogu�ava Vam "
+"da brzo ih brzo prona�ete u listi</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1181
+#, fuzzy
+msgid "Show this dialog at startup"
+msgstr "Poka�i ovaj dijalog za servere uvek kada se pokrene KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1184
+#, fuzzy
+msgid ""
+"<center>If this option is enabled, the Servers dialog will appear every time "
+"you start KVIrc</center>"
+msgstr ""
+"<center>Ako ozna�ite ovu opciju , vide�ete ovaj dijalog svaki put kad "
+"pokrenete KVIrc</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1335
+msgid "Network:"
+msgstr "Mre�a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1345
+msgid "No selection"
+msgstr "Bez izbora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1364
+msgid "UnknownNet"
+msgstr "NepoznataMre�a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1431
+#, fuzzy
+msgid "Remove Network"
+msgstr "Ukloni mre�u"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1434
+#, fuzzy
+msgid "&New Server"
+msgstr "Mre�a/Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1435
+#, fuzzy
+msgid "Re&move Server"
+msgstr "Ukloni server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1437
+#, fuzzy
+msgid "&Copy Server"
+msgstr "Kopiraj server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1439
+#, fuzzy
+msgid "&Paste Server"
+msgstr "Prenesi server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1444
+#, fuzzy
+msgid "Clear List"
+msgstr "Isprazni listu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1483
+msgid ""
+"Oops... something weird happened:<br>Can't find any module capable of "
+"importing servers."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1500
+msgid ""
+"Oops... something weird happened:<br>Can't find the module that was capable "
+"of this import action. :("
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1574
+msgid "irc.unknown.net"
+msgstr "irc.nepoznat.net"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:39
+#, fuzzy
+msgid "Disable parser warnings"
+msgstr "Isklju�i upozorenja parsera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:40
+msgid "Disable broken event handlers"
+msgstr "Isklju�i prekinute upravlja�e doga�ajima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:41
+msgid "Kill broken timers"
+msgstr "Ubij prekinute tajmere"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:42
+msgid "Send unknown commands as /RAW"
+msgstr "Posalji nepoznatu komandu kao /RAW"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:46
+#, fuzzy
+msgid "Automatically unload unused modules"
+msgstr "Automatski u�i na kanal na koi si pozvan (INVITE)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:47
+msgid "Ignore module versions (dangerous)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:51
+msgid "Relay errors and warnings to debug window"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:52
+#, fuzzy
+msgid "Create minimized debug window"
+msgstr "Kreiraj minimizirane upit prozore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:59
+#, fuzzy
+msgid "Nickname alternatives"
+msgstr "Nadimak 4"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:62
+msgid ""
+"<center>Here you can choose up to three nicknames alternative to the primary "
+"one. KVIrc will use the alternatives if the primary nick is already used by "
+"someone else on a particular IRC network.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:69
+#, fuzzy
+msgid "Alt. Nickname 1:"
+msgstr "Nadimak 1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:76
+#, fuzzy
+msgid "Alt. Nickname 2:"
+msgstr "Nadimak 2"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:83
+#, fuzzy
+msgid "Alt. Nickname 3:"
+msgstr "Nadimak 3"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Ok"
+msgstr "Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:130
+msgid "Avatar Download - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:136
+msgid "<center>Please wait while the avatar is being downloaded</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:139
+msgid "Abort"
+msgstr "Prekini"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:170
+#, fuzzy
+msgid "Failed to start the download"
+msgstr "Ne mogu da odredim lokalni port"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:184
+msgid "Download aborted by user"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:213
+#, fuzzy
+msgid "Choose Avatar - KVIrc"
+msgstr "Izaberite direktorijum..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:219
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:237
+#, fuzzy
+msgid "&Browse..."
+msgstr "Pregledaj..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:275
+#, fuzzy
+msgid "Choose an Image File - KVIrc"
+msgstr "Izaberite jednu sliku..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:316
+#, fuzzy
+msgid "Basic Properties"
+msgstr "Pode�avanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:323
+msgid ""
+"<center>Your <b>nickname</b> is your primary form of identification on IRC."
+"<br>Since servers cannot accept multiple users sharing the same nickname "
+"(case insensitive), you can provide alternative nicknames to be used in "
+"casethe server refuses to accept the default one.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:331
+#, fuzzy
+msgid "Alternatives..."
+msgstr "Pode�avanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:337
+msgid ""
+"<center>This is the <b>username</b> that you will use to connect to the "
+"server.<br>In the past, it was used as a form of authentication, but it "
+"normally has no special use now.<br>In addition to your nickname, you are "
+"identified on IRC by your <b>username@hostname</b>.</br>Basically, you can "
+"enter any word you like here. :D</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:346
+msgid ""
+"<center>This text will appear when someone does a /WHOIS on you.<br>It is "
+"intended to be your real name, but people tend to put random quotes and "
+"phrases here too.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:351
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:356
+#, fuzzy
+msgid "Profile"
+msgstr "Uvod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:361
+msgid "Age:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:366
+msgid "Here you can specify your age."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:401
+#, fuzzy
+msgid "Unspecified"
+msgstr "Nije navedeno ime"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:391
+#, fuzzy
+msgid "Gender:"
+msgstr "Generalne opcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:396
+msgid "Here you can specify your gender."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:402
+msgid "Female"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:403
+#, fuzzy
+msgid "Male"
+msgstr "Vrednost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:414
+#, fuzzy
+msgid "Location:"
+msgstr "obave�tenje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:417
+msgid ""
+"You can describe here your approximate physical location. Something like "
+"\"Region, Country\" will be ok. Please note that this information will be "
+"viewable by anyone so putting more data (like the exact address), generally, "
+"<b>is not a good idea</b>."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:422
+msgid "Languages:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:425
+msgid ""
+"You can put here the short names of the languages you can speak. An example "
+"might be \"EN,IT\" that would mean that you speak both Italian and English."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:429
+#, fuzzy
+msgid "Other:"
+msgstr "Izm&ena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:432
+msgid ""
+"You can put here some additional personal data. It might be a funny quote or "
+"your homepage url... Please note that this information will be viewable by "
+"anyone so <b>don't put any sensible data</b> (passwords, telephone or credit "
+"card numbers)."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:502
+msgid ""
+"Here you can choose your avatar image. It will be visible<br>by other people "
+"that request it. Choose a nice image of yourself,<br>possibly avoiding "
+"obscenity and offending images. It is a good idea<br>to choose a relatively "
+"small file (say 150 Kb max) because<br>most clients have a limit on the size "
+"of avatars being downloaded.<br>The image also should be smaller than "
+"800x600 pixels since<br>it will have to be viewable in everyone's monitor."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:511
+#, fuzzy
+msgid "Use avatar"
+msgstr "Avatar slika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:537
+msgid "Choose..."
+msgstr "Izaberi..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:598
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:637
+msgid "Failed to Load Avatar - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:599
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:638
+msgid ""
+"Failed to load the avatar image.<br>It may be an unaccessible file or an "
+"unsupported image format."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:606
+msgid "Failed to download the avatar image.<br><b>%Q</b>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:608
+#, fuzzy
+msgid "Avatar Download Failed - KVIrc"
+msgstr "Izaberi fajl za ponudu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:649
+#, fuzzy
+msgid "Avatar Might Be Too Big - KVIrc"
+msgstr "Izaberi fajl za ponudu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:650
+msgid ""
+"The avatar you have choosen is bigger than 1024x768 pixels.<br>Such a big "
+"image will not be seen on all the user monitors<br>and will probably be "
+"scaled by the remote clients with poor quality<br>algorithms to improve "
+"performance. You *should* scale it manually<br>to a sane size (like 800x600) "
+"or choose a different image."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:688
+#, fuzzy
+msgid "Default Messages"
+msgstr "Predefinisana poruka odsutnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:691
+#, fuzzy
+msgid "Part message:"
+msgstr "poruka izlaska"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:695
+msgid ""
+"<center>This is the default part message that will be used when you<br>leave "
+"a channel by closing a channel window.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:699
+#, fuzzy
+msgid "Quit message:"
+msgstr "poruka prekida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:702
+msgid ""
+"<center>This is the default quit message that will be used when you<br>quit "
+"your IRC session by closing the console window or disconnecting by pressing "
+"the disconnect button.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:42
+msgid "Open Query For"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:40
+#, fuzzy
+msgid "Private messages"
+msgstr "li�na privatna poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:46
+#, fuzzy
+msgid ""
+"<center>This option enables query window creation when a private message "
+"(PRIVMSG) is received.<br>If you disable this, private messages will be "
+"shown in the active window or a common channel.</center>"
+msgstr ""
+"<center>Ova opcija omogu�ava kreiranje upit prozora<br>kada je primljena "
+"privatna poruka.<br>Ako je isklju�ite, privatna poruka �e biti<br> prikazana "
+"u aktivnom prozoru.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:42
+#, fuzzy
+msgid "Private notices"
+msgstr "obave�tenje servera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:55
+#, fuzzy
+msgid ""
+"<center>This option enables query window creation when a private notice "
+"(NOTICE) is received.<br>If you disable this, private notices will be shown "
+"in the active window or a common channel.</center>"
+msgstr ""
+"<center>Ova opcija omogu�ava kreiranje upit prozora<br>kada je primljeno "
+"privatno obave�tenje.<br>Ako je isklju�ite, privatna obave�tenja �e<br>biti "
+"prikazana u aktivnom prozoru.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:62
+#, fuzzy
+msgid "Always open queries as minimized"
+msgstr "Kreiraj minimizirano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:66
+#, fuzzy
+msgid ""
+"<center>This option causes newly created query windows to be immediately "
+"minimized.<br>Enable this if you don't like queries popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+"<center>Ova opcija prouzrukuje da novo kreirani<br>upit prozor bude "
+"momentalno minimiziran.<br>Uklju�ite je ako ne volite da upiti<br>iska�u dok "
+"ste zauzeti va�im pisanjem na kanalu :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:74
+#, fuzzy
+msgid "Enable target user tracking"
+msgstr "Uklju�i upit-korisnik pre�enje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:77
+#, fuzzy
+msgid ""
+"<center>This option will enable target user tracking.<br>Some actions of the "
+"target user (e.g. joins and parts) will be displayed in the window.<br></"
+"center>"
+msgstr ""
+"<center>Ova opcija omogu�ava upit-korisnikov pra�enje:<br>acije kostisnika u "
+"aktuelnom upitu<br>�e biti prikazane u aktivnom prozoru.<br>(Na primer ovim "
+"mo�ete da znate kad on ulazi i izlazi sa kanala).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:83
+msgid "Flash system taskbar on new query message"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:86
+msgid ""
+"<center>This option causes the system taskbar entry for KVIrc to flash when "
+"a new query message is received and the KVIrc window is not the active.</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:91
+#, fuzzy
+msgid "Popup notifier on new query message"
+msgstr "ignorisana poruka korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:94
+msgid ""
+"<center>This option causes a small notifier window to pop up in the low "
+"right corner of the screen when a new message is received and the KVIrc "
+"window is not active.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:98
+msgid "Show information about query target at the top of the query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:101
+msgid ""
+"<center>This option enables query window information label. It can show you "
+"known information about query target at the top of the window.<br>Uncheck if "
+"you think,that it wastes your query space/</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:39
+msgid "Use global application font"
+msgstr "Koristi globalni font aplikacije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:40
+#, fuzzy
+msgid "Hide icons in Popup"
+msgstr "&Terminal prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:41
+#, fuzzy
+msgid "Global application font:"
+msgstr "Globalni font aplikacije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:67
+#, fuzzy
+msgid "Enable fake transparency"
+msgstr "Omogu�i deljenje (share) fajlova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:71
+#, fuzzy
+msgid ""
+"<center>This option makes all KVIrc windows look transparent.<br>You must "
+"choose a blending background image to below or check the \"Use KDE desktop "
+"for transparency\" option.</center>"
+msgstr ""
+"Ova opcija pravi sve KVIrc prozore da budu transparentni (providni)"
+"<br>Morate izabrati globalnu pixmapu pozadine ispod ili uklju�ite<br>Preuzmi "
+"globalnu pozadinu od KDE\" opciju."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:77
+#, fuzzy
+msgid ""
+"<center>This option makes all KVIrc windows look like transparent.<br>You "
+"must choose a blending background image to below.</center>"
+msgstr ""
+"Ova opcija �e da napravi da svi KVIrc prozori budu providni.<br>Morate "
+"izabrati tako�e globalnu pozadinsku sliku ispod."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:83
+msgid "Child window opacity:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:87
+#, fuzzy
+msgid "Parent window opacity:"
+msgstr "Stariji fade faktor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:91
+#, fuzzy
+msgid "Blend color:"
+msgstr "uske boje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:97
+msgid "Use KDE desktop for transparency"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:102
+msgid "Keep in sync with KDE background changes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:111
+msgid "Transparency blend image:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:155
+#, fuzzy
+msgid "Active Background"
+msgstr "Aktivna pozadina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:156
+#, fuzzy
+msgid "Inactive Background"
+msgstr "Aktivna pozadina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:157
+msgid "Active Text (Primary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:158
+msgid "Active Text (Secondary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:159
+msgid "Inactive Text (Primary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:160
+msgid "Inactive Text (Secondary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:197
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:44
+#, fuzzy
+msgid "Background"
+msgstr "Pozadina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:178
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:205
+#, fuzzy
+msgid "Background Image"
+msgstr "Pozadinska slika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:198
+#, fuzzy
+msgid "Low-Contrast Foreground"
+msgstr "Veza prekriva ispis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:199
+#, fuzzy
+msgid "Mid-Contrast Foreground"
+msgstr "Veza prekriva ispis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:200
+msgid "Active High-Contrast Foreground (Primary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:201
+msgid "Active High-Contrast Foreground (Secondary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:202
+msgid "Inactive High-Contrast Foreground (Primary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:203
+msgid "Inactive High-Contrast Foreground (Secondary)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:40
+#, fuzzy
+msgid "Scaling in userlist"
+msgstr "Pokre�em listu obave�tenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:41
+#, fuzzy
+msgid "Scale avatar images in userlist (recommended)"
+msgstr "Avatar slika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:43
+#, fuzzy
+msgid ""
+"<center>This option will force KVIrc to scale avatars shown in the userlist."
+"<br>Avatars will be scaled to fit the constraints set below. Better keep "
+"this option on. :)</center>"
+msgstr ""
+"<center>Ova opcija ce forsirati KVIrc da prilagodi veli�inu avatara<br>da bi "
+"je prikazao u listi korisnika.<br>Avatari �e biti smanjeni da bi popunili "
+"<br> pravougaonik definisan ispod. Bolje da dr�ite ovu opciju uklju�enom :-)."
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:48
+msgid "Do not scale avatar if it is less than required size"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:59
+#, fuzzy
+msgid "Image width:"
+msgstr "Minimalna �irina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:61
+msgid "Image height:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:56
+#, fuzzy
+msgid "Scaling on load (and in user tooltips)"
+msgstr "Pokre�em listu obave�tenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:57
+msgid "Scale avatar images on image load"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:65
+#, fuzzy
+msgid "Request CTCP"
+msgstr "Zahtevaj listu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:66
+msgid "Request missing avatars"
+msgstr "Zahtevaj avatare koji nedostaju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:67
+#, fuzzy
+msgid "Maximum requested file size:"
+msgstr "Maksimalna veli�ina bafera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:71
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to send a DCC GET request when someone "
+"sets an avatar and there is no cached copy available.</center>"
+msgstr ""
+"Ova opcija omogu�ava da KVIrc ponovo otvori upit prozore posle uspe�nog "
+"ponovnog konektovanja."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:74
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:317
+#, fuzzy
+msgid " bytes"
+msgstr "0 bajtova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:77
+#, fuzzy
+msgid ""
+"<center>This is the maximum size for avatar images that will be "
+"automatically requested.<br>A reasonable value might be 102400 bytes (100 K)."
+"</center>"
+msgstr ""
+"<center>Ovo je maksimalna veli�ina za avatar slike <br>koji �e biti "
+"automatski zahtevani.(Pogledajte opciju ispod)<br>Rezonska vrednost mo�e "
+"biti 1024000 Bajtova=100 KB</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:83
+#, fuzzy
+msgid "Automatically accept incoming avatars"
+msgstr "Automatsko prihvatanje dolaze�ih avatara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:87
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to auto-accept DCC SEND requests for "
+"incoming avatars.<br>If you're using the \"Request missing avatars\" option "
+"above, enabling this may by useful.<br>Avatars will be saved in the local "
+"KVIrc directory.</center>"
+msgstr ""
+"<center>Ova opcija omogu�ava KVIrc-u da auto-prihvata<br> DCC SEND zahteve "
+"za dolaze�e avatare<br>(one koji mogu biti zahtevani)<br>ako ste koristili "
+"\"Zahtevaj nedostaju�e avatare\" opciju<br>iznad, kori��enje ove mo�e biti "
+"dobra ideja.<br>Avatari �e biti sa�uvani u KVIrc lokalnom direktorijumu<br> "
+"i automatski pode�eni za izvornog korisnika (vlasnika).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:94
+#, fuzzy
+msgid "Remember avatars for registered users"
+msgstr "Postavi zadnji avatar kao predefinisani za registrovanog korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:99
+#, fuzzy
+msgid ""
+"<center>Use a user's last known avatar by default (only for users that are "
+"registered).</center>"
+msgstr ""
+"<center>Postavlja poslednji korisnikov avatar kao predefinisan<br>(ali samo "
+"za korisnike koje su registrovani.<br>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:103
+#, fuzzy
+msgid "Avatar offer timeout:"
+msgstr "Vreme isteka avatar ponude u sekundama"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:104
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:162
+msgid " sec"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:107
+msgid ""
+"<center>This is the amount of time to make an avatar available for transfer "
+"when requested.<br>When someone sends a CTCP AVATAR request, KVIrc will "
+"reply with a CTCP AVATAR message containing the name and size of your avatar "
+"image.<br>A time-limited file offer is added for the image file to the "
+"requesting user.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:115
+msgid "Ignore requests if no avatar is set"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:118
+msgid ""
+"This option will cause KVIrc to ignore channel CTCP AVATAR requests when you "
+"have no avatar set. This is usually a good practice since it helps in "
+"reducing traffic by not sending a reply that would be empty."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:39
+#, fuzzy
+msgid "Use online notify list"
+msgstr "Koristi listu obave�tenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:44
+#, fuzzy
+msgid "Configuration"
+msgstr "&Sa�uvaj pode�avanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:45
+#, fuzzy
+msgid "Show notifications in active window"
+msgstr "Promene liste obave�tenja u aktivni prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:50
+#, fuzzy
+msgid "Flash window when users are going online"
+msgstr "lista obave�tenja ulasci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:55
+#, fuzzy
+msgid "Popup notifier when users are going online"
+msgstr "lista obave�tenja ulasci"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:59
+#, fuzzy
+msgid "Advanced configuration"
+msgstr "&Sa�uvaj pode�avanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:64
+msgid "Check USERHOST for online users"
+msgstr "Proveri USERHOST za korisnike na vezi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:69
+#, fuzzy
+msgid "Use \"smart\" notify list manager"
+msgstr "Koristi \"inteligentan\" upravlja� liste obave�tenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:74
+#, fuzzy
+msgid "Use the WATCH method if available"
+msgstr "Koristi \"WATCH\" metodu ako je server podr�ava"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:79
+#, fuzzy
+msgid "Check interval (in seconds)"
+msgstr "Vreme isteka ka�enja (u milisek)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:85
+msgid "ISON delay (in seconds)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:91
+msgid "USERHOST delay (in seconds)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:96
+msgid ""
+"<p><b>Note:</b><br>The notify list is managed using the \"Registered Users\" "
+"settings.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:112
+msgid "Forcibly and completely disable the notifier"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:115
+msgid ""
+"This is an option for the impatient: it allows to forcibly and permanently "
+"disable the notifier window. Please note that if this option is activated "
+"then the notifier will NOT popup even if all the other options around "
+"specify to use it in response to particular events. Also note that this "
+"option will make all the /notifier.* commands fail silently."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:123
+msgid "Disable notifier window flashing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:124
+msgid "Disable notifier window fade effect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:39
+#, fuzzy
+msgid "Default away message:"
+msgstr "Predefinisana poruka odsutnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:41
+msgid "User input exits away mode"
+msgstr "Korisnikov unos izlaska iz moda odsutnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:43
+#, fuzzy
+msgid "Away Nickname"
+msgstr "Nadimak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:44
+#, fuzzy
+msgid "Change nickname on away"
+msgstr "Promeni nadimak pri odsutnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:47
+#, fuzzy
+msgid "Use automatic nickname ([5 letters]AWAY)"
+msgstr ""
+"Koristi automatski generisan nadimak za odsutnost (prvih 5 slova + AWAY)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:55
+#, c-format
+msgid "Custom nickname (%%nick%% means a current nick):"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/libkvioptions.cpp:199
+#, fuzzy
+msgid "No such options page class name %Q"
+msgstr "Nema takvog imena klase za stranicu opcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:47
+#, fuzzy
+msgid "Use system URL handlers"
+msgstr "Dodaj manipulator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:50
+#, fuzzy
+msgid "<b>http://</b> handler command:"
+msgstr "Nema takve komande modula"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:51
+#, fuzzy
+msgid "<b>https://</b> handler command:"
+msgstr "Nema takve komande modula"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:52
+#, fuzzy
+msgid "<b>ftp://</b> handler command:"
+msgstr "Nema takve komande modula"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:53
+#, fuzzy
+msgid "<b>mailto:</b> handler command:"
+msgstr "Nema takve komande modula"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:54
+#, fuzzy
+msgid "<b>file://</b> handler command:"
+msgstr "Nema takve komande modula"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:55
+#, fuzzy
+msgid "Unknown protocol handler command:"
+msgstr "Nepoznata komanda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:61
+#, fuzzy
+msgid "Use proxy"
+msgstr "Koristi proksi host"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:65
+msgid "Proxy"
+msgstr "Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:76
+#, fuzzy
+msgid ""
+"<center>This is the list of available proxy servers.<br>Right-click on the "
+"list to add or remove proxies.</center>"
+msgstr ""
+"<center>Ovo je lista mogu�ih IRC servera.<br>Desni klik na listu za "
+"dodavanje ili uklanjanje servera ili za druge opcije</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:90
+#, fuzzy
+msgid "New Proxy"
+msgstr "Proxy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:99
+#, fuzzy
+msgid "Remove Proxy"
+msgstr "Ukloni proksi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:111
+msgid "Proxy:"
+msgstr "Proxy:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:131
+msgid "Protocol:"
+msgstr "Protokol:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:336
+#, fuzzy
+msgid "&New Proxy"
+msgstr "Iska�u�i meni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:337
+#, fuzzy
+msgid "Re&move Proxy"
+msgstr "Ukloni proksi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:71
+#, fuzzy
+msgid "Pattern"
+msgstr "Prenesi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:72
+#, fuzzy
+msgid "MIME Type"
+msgstr "Vrsta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:87
+#, fuzzy
+msgid "MIME type:"
+msgstr "IANA tip"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:92
+#, fuzzy
+msgid "File pattern:"
+msgstr "Naziv fajla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:97
+#, fuzzy
+msgid "Magic bytes:"
+msgstr "Magi�ni bajtovi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:102
+#, fuzzy
+msgid "Save path:"
+msgstr "Sa�uvaj putanju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:107
+#, fuzzy
+msgid "Local open command:"
+msgstr "Lokalna izvr�na komanda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:112
+msgid ""
+"<center>This field contains the command to execute to open a local file."
+"<br><tt>$0</tt> is used in place of the filename</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:116
+#, fuzzy
+msgid "Remote open command:"
+msgstr "Daljinska izvr�na komanda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:121
+msgid ""
+"<center>This field contains the command to execute when automatically "
+"opening a received file.<br><tt>$0</tt> is used in place of the filename</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:125
+msgid "Icon"
+msgstr "Ikona"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:134
+msgid "&New"
+msgstr "&Novi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:138
+#, fuzzy
+msgid "Re&move"
+msgstr "Ukloni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:184
+#, fuzzy
+msgid "[Unknown Media Type]"
+msgstr "Nepoznat tip medija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:230
+#, fuzzy
+msgid "New Media Type"
+msgstr "Nov tip medija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:53
+#, fuzzy
+msgid "Nickname Colors"
+msgstr "Nadimak 4"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:56
+#, fuzzy
+msgid "Channel owner:"
+msgstr "Mod kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:57
+#, fuzzy
+msgid "Channel admin:"
+msgstr "Mod kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:58
+msgid "Op:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:59
+#, fuzzy
+msgid "Half-op:"
+msgstr "Operatori kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:60
+#, fuzzy
+msgid "Voice:"
+msgstr "Naslov"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:61
+#, fuzzy
+msgid "User-op:"
+msgstr "Korisnik"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:62
+#, fuzzy
+msgid "Away:"
+msgstr "&Odsutnost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:66
+msgid "Use different color for own nick:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:81
+#, fuzzy
+msgid "Draw nickname grid"
+msgstr "Nije dat nadimak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:83
+#, fuzzy
+msgid "Grid color:"
+msgstr "uske boje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:90
+#, fuzzy
+msgid "Grid type:"
+msgstr "Nov tip medija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:94
+msgid "3D Grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:95
+#, fuzzy
+msgid "3D Buttons"
+msgstr "Dodaj zabranu (ban)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:96
+#, fuzzy
+msgid "Plain Grid"
+msgstr "Na�i slede�e"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:97
+msgid "Dotted Grid"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:131
+msgid "Horizontal Alignment:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:135
+#, fuzzy
+msgid "Vertical Alignment:"
+msgstr "Server X509 sertifikat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:231
+#, fuzzy
+msgid "Show gender icons"
+msgstr "Poka�i ikone poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:232
+msgid "Show user channel icons"
+msgstr "Poka�i kanalne ikone korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:233
+#, fuzzy
+msgid "Show user channel activity indicator"
+msgstr "Pokazi kanalno stanje korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:234
+msgid "Hide users label"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:235
+#, fuzzy
+msgid "Enable user tooltips"
+msgstr "GUI Efekat: Animiraj savete-alata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:236
+#, fuzzy
+msgid "Hide avatars"
+msgstr "Avatar slika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:79
+#, fuzzy
+msgid "Use flood protection (recommended)"
+msgstr "Koristi flood za�titu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:81
+msgid ""
+"<center>This option makes KVIrc only respond to a limited number of CTCP "
+"requests within a specified time interval, to prevent \"flooding\" CTCP "
+"messages.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:83
+msgid "Allow up to:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:84
+#, fuzzy
+msgid " requests"
+msgstr "DCC zahtev"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:86
+msgid ""
+"<center>Minimum value: <b>0 requests</b><br>Maximum value: <b>10000 "
+"requests</b></center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:89
+msgid "within:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:92
+msgid ""
+"<center>Minimum value: <b>1 sec</b><br>Maximum value: <b>3600 sec</b></"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:96
+#, fuzzy
+msgid "Ignored Requests"
+msgstr "Ignori�i FINGER zahteve"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:97
+msgid "PING"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:98
+msgid "FINGER"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:99
+msgid "CLIENTINFO"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:100
+msgid "USERINFO"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:101
+msgid "VERSION"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:102
+msgid "SOURCE"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:103
+msgid "TIME"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:104
+msgid "PAGE"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:105
+msgid "AVATAR"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:106
+msgid "DCC/TDCC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:131
+msgid "General Preferences"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:134
+msgid "Theme Preferences"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:136
+msgid "KVIrc Preferences"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:139
+msgid ""
+"This dialog contains a set of KVIrc settings.<br> Use the icons on the left "
+"to navigate through the option pages. The text box in the bottom left corner "
+"is a small search engine. It will highlight the pages that contain options "
+"related to the search term you have entered."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:147
+msgid ""
+"Many settings have tooltips that can be shown by holding the cursor over "
+"their label for a few seconds."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:152
+msgid ""
+"When you have finished, click \"<b>OK</b>\" to accept your changes or "
+"\"<b>Cancel</b>\" to discard them. Clicking \"<b>Apply</b>\" will commit "
+"your changes without closing the window."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:217
+msgid ""
+"<p>This is the search tool for this options dialog.</p><p>You can enter a "
+"search term either in your native language or in english and press the "
+"button on the right. The pages that contain some options related to the "
+"search term will be highlighted and you will be able to quickly find them.</"
+"p><p>Try \"nickname\" for example.</p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:249
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:61
+msgid "Close this dialog, accepting all changes."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:255
+#, fuzzy
+msgid "&Apply"
+msgstr "Primeni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:256
+#, fuzzy
+msgid "Commit all changes immediately."
+msgstr "Izvr�i promene"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:69
+msgid "Close this dialog, discarding all changes."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:149
+msgid ""
+"This table contains the text icon associations.<br>KVirc will use them to "
+"display the CTRL+I escape sequences and eventually the emoticons."
+msgstr ""
+"Ova tabla sadr�i asocijacije teks\bt ikona.<br>KVIrc �e ih koristiti za "
+"prikazivanja CTRL+I pomo�ne sekvence i eventualno za emocije."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:165
+msgid "Add"
+msgstr "Dodaj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:169
+msgid "Delete"
+msgstr "Obri�i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:191
+msgid "unnamed"
+msgstr "bezimena"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:53
+msgid "Enable word highlighting"
+msgstr "Omogu�i nagla�avanje re�i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:55
+#, fuzzy
+msgid "Words to highlight:"
+msgstr "Omogu�i URL isticanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:57
+msgid "Word splitters:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:59
+#, fuzzy
+msgid "Highlight messages containing my nickname"
+msgstr "Uvek naglasi poruke sa mojim nadimkom u njima"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:61
+#, fuzzy
+msgid ""
+"<center>If this option is enabled, KVIrc will highlight any user message "
+"containing your current nickname</center>"
+msgstr ""
+"<center>Ako ozna�ite ovu opciju , vide�ete ovaj dijalog svaki put kad "
+"pokrenete KVIrc</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:63
+msgid "Flash the system taskbar entry on highlighted messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:65
+#, fuzzy
+msgid ""
+"<center>If this option is enabled, KVIrc will (attempt to) flash the system "
+"taskbar entry when a highlighted message is printed and KVIrc is not the "
+"active window</center>"
+msgstr ""
+"<center>Ako ozna�ite ovu opciju , vide�ete ovaj dijalog svaki put kad "
+"pokrenete KVIrc</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:67
+#, fuzzy
+msgid "Popup the notifier window on highlighted messages"
+msgstr "ignorisana poruka korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:69
+#, fuzzy
+msgid ""
+"<center>If this option is enabled, KVIrc will popup a little notifier window "
+"in the low right corner of your desktop when a highlighted message is "
+"printed and KVIrc is not the active window</center>"
+msgstr ""
+"<center>Ako ozna�ite ovu opciju , vide�ete ovaj dijalog svaki put kad "
+"pokrenete KVIrc</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:91
+#, fuzzy
+msgid "Alert Restrictions"
+msgstr "login operacija kompletna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:92
+#, fuzzy
+msgid "Restrict alert"
+msgstr "&Obnovi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:94
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if a "
+"normal message is received in a channel.<br>Actions like joins, parts and "
+"mode changes will be ignored.<br> This is useful if you are in channels with "
+"a high rate of traffic and only want to be alerted for messages that are "
+"interesting to you.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:96
+#, fuzzy
+msgid "Alert for highlighted words"
+msgstr "Nagla�ene re�i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:98
+#, fuzzy
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which contain a word from the highlighted words list above.</center>"
+msgstr ""
+"<center>Ako ozna�ite ovu opciju , vide�ete ovaj dijalog svaki put kad "
+"pokrenete KVIrc</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:100
+#, fuzzy
+msgid "Alert for query messages"
+msgstr "ignorisana poruka korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:102
+#, fuzzy
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which are shown in queries.</center>"
+msgstr ""
+"<center>Ako ozna�ite ovu opciju , vide�ete ovaj dijalog svaki put kad "
+"pokrenete KVIrc</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:107
+#, fuzzy
+msgid "Use custom alert level"
+msgstr "Nivo upozorenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:109
+#, fuzzy
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if "
+"the specified alert level is reached.</center>"
+msgstr ""
+"<center>Ako ozna�ite ovu opciju , vide�ete ovaj dijalog svaki put kad "
+"pokrenete KVIrc</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:111
+#, fuzzy
+msgid "Minimum alert level:"
+msgstr "Nivo upozorenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:114
+#, fuzzy
+msgid ""
+"<center>This option sets the minimum alert level for the taskbar.</center>"
+msgstr ""
+"<center>Ova opcija ce prouzrokovati da KVIrc poku�a<br>da ponovo u�e na "
+"kanal sa koga ste izba�eni.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:213
+#, fuzzy
+msgid "Output verbosity"
+msgstr "Izlazni bafer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:49
+msgid "Mute"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:50
+#, fuzzy
+msgid "Quiet"
+msgstr "&Zavr�i"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:51
+#, fuzzy
+msgid "Normal"
+msgstr "Normalni mod"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:52
+msgid "Verbose"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:53
+#, fuzzy
+msgid "Paranoic"
+msgstr "obave�tenje servera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:59
+#, fuzzy
+msgid "Show in active window"
+msgstr "Promene liste obave�tenja u aktivni prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:60
+#, fuzzy
+msgid "External messages"
+msgstr "nema spoljnih poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:61
+msgid "External CTCP replies"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:62
+#, fuzzy
+msgid "Whois replies"
+msgstr "ko (who) odgovor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:63
+#, fuzzy
+msgid "ChanServ and NickServ notices"
+msgstr "obave�tenje servera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:64
+#, fuzzy
+msgid "Invite messages"
+msgstr "poruka pozivanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:65
+#, fuzzy
+msgid "Server replies"
+msgstr "serverov ping"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:66
+#, fuzzy
+msgid "Server notices"
+msgstr "obave�tenje servera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:67
+#, fuzzy
+msgid "Broadcast and WALLOPS messages"
+msgstr "privatna poruka prenosa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:70
+#, fuzzy
+msgid "Show extended server information"
+msgstr "Prika�i dodatne informacije servera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:71
+msgid "Show server pings"
+msgstr "Prikazi pingove servera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:72
+msgid "Show own parts in the console"
+msgstr "Prika�i vlastite odlaske sa kanala u konzoli"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:73
+msgid "Show compact mode changes"
+msgstr "Poka�i skraceno promene moda"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:43
+#, fuzzy
+msgid "Minimize on startup"
+msgstr "M&inimizuj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:44
+#, fuzzy
+msgid "Confirm quit with active connections"
+msgstr "Ne mogu da zahtevam listu: nema aktivne konekcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:45
+#, fuzzy
+msgid "Remember window properties"
+msgstr "Prozor nije prona�en"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:50
+#, fuzzy
+msgid "Disable splash screen"
+msgstr "Isklju�i upozorenja parsera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:54
+msgid "Enable visual effects"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:55
+msgid "Hide Channel window tool buttons by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:57
+msgid "Open Dialog Window For"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:58
+msgid "Preferences"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:59
+#, fuzzy
+msgid "Registered Users"
+msgstr "Registrovani korisnici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:149
+#, fuzzy
+msgid "Servers"
+msgstr "Server"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.cpp:40
+msgid ""
+"This section contains irc tools<br><p>like<b> away, lag and logging system. "
+"</b> </p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:39
+#, fuzzy
+msgid "On Disconnect"
+msgstr "Prekini vezu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:42
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:55
+#, fuzzy
+msgid "Keep channels open"
+msgstr "Zadr�i kanal otvoren kad te izbace (KICK)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:44
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after disconnect."
+"</center>"
+msgstr ""
+"Ova opcina omogu�ava da se KVIrc vrati na kanale posle uspe�nog ponovnog "
+"konektovanja."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:47
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:60
+msgid "Keep queries open"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:49
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after disconnect.</"
+"center>"
+msgstr ""
+"Ova opcija omogu�ava da KVIrc ponovo otvori upit prozore posle uspe�nog "
+"ponovnog konektovanja."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:52
+#, fuzzy
+msgid "On Unexpected Disconnect"
+msgstr "Automatski zaka�i na neo�ekivano odka�injanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:57
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+"Ova opcina omogu�ava da se KVIrc vrati na kanale posle uspe�nog ponovnog "
+"konektovanja."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:62
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+"Ova opcija omogu�ava da KVIrc ponovo otvori upit prozore posle uspe�nog "
+"ponovnog konektovanja."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:65
+msgid "Rejoin channels after reconnect"
+msgstr "Ponovo u�i na kanale po ponovnom ka�enju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:67
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to rejoin channels after a successful "
+"reconnect attempt.</center>"
+msgstr ""
+"Ova opcina omogu�ava da se KVIrc vrati na kanale posle uspe�nog ponovnog "
+"konektovanja."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:69
+msgid "Reopen queries after reconnect"
+msgstr "Ponovo otvori upite po ponovnom ka�enju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:71
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to reopen query windows after a "
+"successful reconnect attempt.</center>"
+msgstr ""
+"Ova opcija omogu�ava da KVIrc ponovo otvori upit prozore posle uspe�nog "
+"ponovnog konektovanja."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:75
+msgid "Automatically reconnect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:77
+#, fuzzy
+msgid ""
+"<center>This option will enable auto-reconnecting after an unexpected "
+"disconnect. An unexpected disconnect is the <b>termination</b> of a <b>fully "
+"connected IRC session</b> that was <b>not requested by the user</b> by the "
+"means of the QUIT message.<p><b>Warning:</b> If you use /RAW to send a QUIT "
+"message to the server, this option will not behave correctly, since does not "
+"detect the outgoing QUIT message and will attempt to reconnect after the "
+"server has closed the connection. For this reason, always use the /QUIT "
+"command to close your connections. This option may also behave incorrectly "
+"with bouncers that support detaching, in this case a solution could be to "
+"prepare an alias that sends the bouncer \"detach\" command immediately "
+"before the \"quit\" command.<br><tt>alias(bncdetach){ raw bouncer detach; "
+"quit; }</tt></p></center>"
+msgstr ""
+"Ova opcija omogu�ava auto-ka�enje posle neo�ekivanog odka�injanja.<br>Jedno "
+"\"neo�ekivano odka�injanje\" je prekid <b>kompletne IRC sesije</b><br>koje "
+"nije <b>zahtevano od korisnika</b> na �ta se misli na KRAJ (QUIT) poruku."
+"<br>UPOZORENJE: Ako koristite /RAW za slanje KRAJ (QUIT) poruke "
+"serveru<br>ova opcija �e biti nekorektna, jer ne�e detektovati odlaze�u KRAJ "
+"(QUIT) poruku i poku�a�e da se ponovo zaka�i kad server zatvori konekciju."
+"<br>Zbog ovog razloga , uvek koristite /QUIT komandu da bi ste zatvorili "
+"va�u konekciju.<br>Ova opcija tako�e mo�e biti nekorektna sa bouncerima koji "
+"podr�avaju<br>odvajanje: u ovom slu�aju jedna ideja je da se pripremi alijas "
+"koji �e poslati<br>bounceru \"detach\" (odvajanje) komandu i odmah zatik i "
+"\"quit\" (kraj) komandu.<br><b>alias(bncdetach){ raw bouncer detach; quit }</"
+"b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:89
+msgid "Maximum attempts (0: unlimited):"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:94
+msgid "Delay between attempts:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:100
+msgid ""
+"<center>Minimum value: <b>0 sec</b><br>Maximum value: <b>86400 sec</b></"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:123
+#, fuzzy
+msgid "Certificate"
+msgstr "Server X509 sertifikat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:125
+msgid "Use SSL certificate (PEM format only)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:127
+#, fuzzy
+msgid "Certificate location:"
+msgstr "Server X509 sertifikat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:130
+#, fuzzy
+msgid "Certificate password:"
+msgstr "Server X509 sertifikat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:134
+#, fuzzy
+msgid "Private Key"
+msgstr "privatno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:135
+msgid "Use SSL private key"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:137
+msgid "Private key location:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:140
+#, fuzzy
+msgid "Private key password:"
+msgstr "Lozinka:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:146
+#, fuzzy
+msgid "This executable has no SSL support."
+msgstr "Ovaj KVIrc nema IPV6 podr�ku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:165
+msgid "Timeout Values"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:166
+#, fuzzy
+msgid "Connect timeout:"
+msgstr "Konektovanje isteklo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:168
+#, fuzzy
+msgid "Outgoing data queue flush timeout:"
+msgstr "Odlaze�i red podataka -vreme isteka (100-2000 msekundi)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:170
+#, fuzzy
+msgid "Limit outgoing traffic"
+msgstr "Odlaze�i saobra�aj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:171
+#, fuzzy
+msgid "Limit to 1 message every:"
+msgstr "Tip poruke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:173
+#, fuzzy
+msgid " usec"
+msgstr "voiced korisnici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:175
+msgid ""
+"<center>Minimum value: <b>10000 usec</b><br>Maximum value: <b>10000000 usec</"
+"b></center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:179
+#, fuzzy
+msgid "Network Interfaces"
+msgstr "Mre�a je nedostupna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:181
+#, fuzzy
+msgid "Bind IPv4 connections to:"
+msgstr "Pove�i IRC IPv4 konekcije na prate�i interfejs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:185
+#, fuzzy
+msgid "Bind IPv6 connections to:"
+msgstr "Pove�i IRC IPv4 konekcije na prate�i interfejs"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:210
+msgid "Enable ident service (bad practice on UNIX!)"
+msgstr "Omogu�i ident servis (lo�a praksa na UNIX-u!)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:216
+#, fuzzy
+msgid "Output identd messages to:"
+msgstr "poruka prekida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:218
+#, fuzzy
+msgid "Active window"
+msgstr "&Terminal prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:219
+#, fuzzy
+msgid "Console"
+msgstr "Zatvori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:220
+#, fuzzy
+msgid "Do not show any identd messages"
+msgstr "Ne prikazuj skrivene fajlove"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:237
+msgid "Enable ident service only while connecting to server"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:240
+#, fuzzy
+msgid "Ident username:"
+msgstr "Ident korisni�ko ime"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:243
+#, fuzzy
+msgid "Service port:"
+msgstr "Port servisa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:248
+#, fuzzy
+msgid "IPv6 Settings"
+msgstr "&Pode�avanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:249
+#, fuzzy
+msgid "Enable service for IPv6"
+msgstr "Omogu�i IPV6 servis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:258
+#, fuzzy
+msgid "IP stack treats IPv4 as part of IPv6 namespace"
+msgstr "Sistemov stek tretira IPV4 kao deo IPV6 prostora za ime"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:265
+#, fuzzy
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications. If it is possible, install a real ident daemon.</p>"
+msgstr ""
+"<center>Upozorenje: ovo je <b>RFC1413/913 nekompatibilan</b> ident demon "
+"koji implementira samo odre�ene podsetove IDENTD servis specifikacija. Ako "
+"je mogu�e, instalirajte stvarni ident demon.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:270
+#, fuzzy
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications.<br>On UNIX, you may also need root privileges to bind to the "
+"auth port (113).<br>It is <b>highly recommended</b> that a <b>real</b> "
+"system-wide ident daemon be used instead, or none at all if ident is not "
+"required.</p>"
+msgstr ""
+"<center>Upozorenje: ovo je <b>RFC1413/913 nekompatibilan</b> ident demon "
+"koji implementira samo odre�ene podsetove IDENTD servis specifikacija. "
+"<br>Na UNIX-u mo�e vam tako�e budu potrebne root privilegije da spojite port "
+"113.<br> To je definitivno dobra ideja da se koristi <b>stvarni</b> sistem-"
+"wide ident demon.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.cpp:39
+msgid ""
+"This section contains the general client options<br><p>like<b> sound, "
+"mediafiles, URL handler </b> etc... </p>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:39
+msgid "Automatically Log"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:40
+#, fuzzy
+msgid "Query windows"
+msgstr "&Terminal prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:41
+#, fuzzy
+msgid "Channel windows"
+msgstr "&Nasla�i prozore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:42
+#, fuzzy
+msgid "DCC Chat windows"
+msgstr "&Nasla�i prozore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:43
+#, fuzzy
+msgid "Console windows"
+msgstr "&Terminal prozor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:45
+msgid "Gzip logs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:47
+#, fuzzy
+msgid "Strip colors in logs"
+msgstr "uske boje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:48
+msgid "Auto flush logs every"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:49
+#, fuzzy
+msgid " min"
+msgstr "odgovoreno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:52
+msgid ""
+"<center>Save logs with the current interval<br>Set to 0 to disable this "
+"feature</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:49
+#, fuzzy
+msgid "Minimize console after successful login"
+msgstr "Ponovo u�i na kanale po ponovnom ka�enju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:52
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to minimize the console window after "
+"successfully logging into a server.</center>"
+msgstr ""
+"Ova opcija omogu�ava da KVIrc ponovo otvori upit prozore posle uspe�nog "
+"ponovnog konektovanja."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:55
+#, fuzzy
+msgid "Show network name in console taskbar entry"
+msgstr "Poka�i zadebljane nadimke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to show the network name as the console "
+"taskbar entry instead of the server name. This is nice to keep on unless "
+"your servers are not organized in networks or you often connect to two "
+"servers of the same network.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:75
+msgid "Force immediate quit"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:78
+#, fuzzy
+msgid ""
+"<center>This option causes KVIrc to close the connection immediately after "
+"sending the QUIT message.<br>When this option is disabled, KVIrc will wait "
+"for the server to close the connection.<br>Note that if you use this, your "
+"QUIT message may be not displayed.</center>"
+msgstr ""
+"<center>Ova opcija izaziva da KVIrc zatvori<br>konekciju momentalno posle "
+"slanja QUIT (KRAJ) poruke.<br>Kad je ova opcija isklju�ena , KVIrc �e �ekati "
+"da server<br>zatvori konekciju.<br>Imajte na umu da ako koristite ovu "
+"opciju, Va�a QUIT poruka mo�e da ne bude prikazana.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:84
+msgid "Prepend gender info to realname"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:110
+#, fuzzy
+msgid "On Channel Kick"
+msgstr "obave�tenje kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:112
+#, fuzzy
+msgid "Rejoin channel"
+msgstr "Ovo nije kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:115
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to attempt to rejoin a channel after "
+"being kicked.</center>"
+msgstr ""
+"<center>Ova opcija ce prouzrokovati da KVIrc poku�a<br>da ponovo u�e na "
+"kanal sa koga ste izba�eni.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:129
+#, fuzzy
+msgid "Keep channel open"
+msgstr "Zadr�i kanal otvoren kad te izbace (KICK)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:121
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"being kicked.<br>It might be a good idea to also enable the \"Rejoin channel"
+"\" option.</center>"
+msgstr ""
+"<center>Ova opcija �e prouzrokovati da KVIrc dr�i<br>prozore kanala "
+"otvorenim i ako Vas neko izbaci sa tih kanala.<br>Dobra je ideja da uz ovu "
+"opciju aktivirate tako�e<br>\"Ponovo u�i na kanal po KICK-u\" opciju.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:127
+#, fuzzy
+msgid "On Channel Part"
+msgstr "obave�tenje kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:132
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"leaving it.</center>"
+msgstr ""
+"Ova opcina omogu�ava da se KVIrc vrati na kanale posle uspe�nog ponovnog "
+"konektovanja."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:136
+#, fuzzy
+msgid "Automatically join channel on invite"
+msgstr "Automatski u�i na kanal na koi si pozvan (INVITE)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:139
+#, fuzzy
+msgid ""
+"<center>This option will cause KVIrc to automatically join a channel when an "
+"INVITE message for that channel is received.<br><b>Warning:</b> This may "
+"help spammers harass you. :)</center>"
+msgstr ""
+"<center>Ova opcija �e prouzrokovati da KVIrc automatski<br>u�e na kanal kad "
+"primi INVITE poruku za taj kanal.<br>Imajte na umu da ovo mo�e pomo�i "
+"spamerima da vam dosa�uju :-)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:144
+#, fuzzy
+msgid "Always open channels as minimized"
+msgstr "Kreiraj minimizirano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:148
+#, fuzzy
+msgid ""
+"<center>This option causes newly created channel windows to be immediately "
+"minimized.<br>Enable this if you don't like channels popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+"<center>Ova opcija prouzrukuje da novo kreirani<br>upit prozor bude "
+"momentalno minimiziran.<br>Uklju�ite je ako ne volite da upiti<br>iska�u dok "
+"ste zauzeti va�im pisanjem na kanalu :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:168
+#, fuzzy
+msgid "Log joined channels history"
+msgstr "Nedostaje lista kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:170
+#, fuzzy
+msgid "Default ban mask:"
+msgstr "Predefinisana poruka odsutnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:188
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:202
+#, fuzzy
+msgid "On Channel Join"
+msgstr "obave�tenje kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:189
+msgid "Do not send /WHO request"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:190
+#, fuzzy
+msgid "Do not request ban list"
+msgstr "Zahtevaj listu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:191
+msgid "Do not request ban exception list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:192
+msgid "Do not request invite list"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:194
+#, fuzzy
+msgid "Do not update the away list"
+msgstr "Zahtevaj listu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:197
+msgid ""
+"<center>KVIrc sends out a channel /WHO message every now and then to keep "
+"the channel away list in sync. Use this option to disable this feature (and "
+"to save your IRC bandwidth.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:203
+#, fuzzy
+msgid "Echo channel topic"
+msgstr "Nema postavljenog naslova kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:204
+msgid "Show channel sync time"
+msgstr "Poka�i vreme sinhronizovanja kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:40
+#, fuzzy
+msgid "Default text encoding:"
+msgstr "Izaberi fajlove za slanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:109
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:133
+#, fuzzy
+msgid "Use Language Encoding"
+msgstr "Koristi ma�inu za �ifrovanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:59
+msgid "Force language:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:65
+msgid "<b>Note:</b> You need to restart KVirc to apply a language changing"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:68
+#, fuzzy
+msgid "Automatic detection"
+msgstr "Automatski prihvati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:69
+msgid "en"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+#, fuzzy
+msgid "Unable to write language information to"
+msgstr "Neuspe�no pisanje u fajl %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:39
+msgid "Enable Anti-spam For"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:45
+#, fuzzy
+msgid "Silent anti-spam (no warnings)"
+msgstr "Tihi anti-spam (nema povratnih stvari za sve: samo ignori�i)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:46
+msgid "Words considered spam:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:51
+msgid "Use workaround for firewall"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:54
+#, fuzzy
+msgid ""
+"<center>Enable this option if you can't accept incoming connections."
+"<br>KVIrc will try to use different methods to send and receive files."
+"<br>Please note that these methods may NOT work when communicating with a "
+"non-KVIrc client.</center>"
+msgstr ""
+"Uklju�ite ovu opciju ako ne mo�ete da prihvatate dolaze�e konekcije<br> "
+"KVIrc �e probati da koristi razli�ite tehnike za slanje i primanje fajlova."
+"<br> Imajte na umu ove tehnike mogu da NE funkcioni�u sa drugim "
+"klijentima...."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:73
+#, fuzzy
+msgid "Network Properties"
+msgstr "Pode�avanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:75
+msgid "Use user-defined address or network interface"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:79
+#, fuzzy
+msgid ""
+"<center>Enable this option if you are on a multihost machine and want to "
+"force one of the available IP addresses to be used for outgoing DCCs."
+"<br>This is especially useful when you use IPv6 and IPv4 addresses.<br>You "
+"can force KVIrc to always choose the IPv4 interface.</center>"
+msgstr ""
+"Uklju�ite ovu opciju ako ste na multi-ip masini i �elite da forsirate jednu "
+"od IP da bude kori��ena za odlaze�e DCC-ove.<br>Ovo je naro�ito korisno kada "
+"koristite IPV6 i IPV4 adrese.<br>Mo�ete naterati KVIrc da uvek izabere IPV4 "
+"interfejs. Stavite ime interfejsa ili adresu u polje ispod (mo�e biti tako�e "
+"ne�to kao ppp0 !)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:84
+#, fuzzy
+msgid "Listen on address/interface:"
+msgstr "Ne mogu da dobijem adresu interfejsa %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:87
+#, fuzzy
+msgid ""
+"<center>This is the IP address or name of the interface to use by default "
+"for outgoing DCC transfers.<br>On UNIX systems that support it, you can also "
+"specify IPv4 interface names (such as <b>ppp0</b>).<br>If you set it to "
+"<b>0.0.0.0</b>, KVIrc will try to use the first available IPv4 interface</"
+"center>"
+msgstr ""
+"Ovo je adresa ili ime interfejsa za kori��enje za odlaze�e DCC prenose.<br> "
+"Na UNIX sistemima koji ga podr�avaju , tako�e mo�ete koristiti IPV4 imena "
+"interfejsa (kao �to je ppp0).<br>Ako ga podesite na 0.0.0.0 , KVIrc �e "
+"poku�ati da prona�e prvi mogu�i IPV4 interfejs."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:94
+#, fuzzy
+msgid "Use user-defined port range"
+msgstr "Korisni�ki definisan default opseg portova"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:97
+#, fuzzy
+msgid ""
+"<center>Enable this option if you want specify a local port range for DCC.</"
+"center>"
+msgstr ""
+"Uklju�ite ovu opciju ako �elite da defini�ete opseg lokalnog porta za DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:102
+#, fuzzy
+msgid "Lowest port:"
+msgstr " Host (ip:port) :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:105
+#, fuzzy
+msgid "Highest port:"
+msgstr "Port servisa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:108
+msgid "Send a fixed address in requests"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:111
+#, fuzzy
+msgid ""
+"<center>Enable this option if you want to always send a fake IP address in "
+"your DCC requests.<br>This might be useful if you're behind a router with a "
+"static address that does network address translation (NAT) and forwards all "
+"or a range of ports.</center>"
+msgstr ""
+"Uklju�ite ovu opciju ako �elite da se uvek �alje la�na IP adresa u Va�im DCC "
+"zahtevima.<br>Ovo mo�e biti korisno ako ste iza rutera koji ima prevo�enje "
+"mre�nih adresa.<br>Tako�e ce vam biti potreban gornji opseg portova..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:115
+#, fuzzy
+msgid "Send address/interface:"
+msgstr "Ne mogu da dobijem adresu interfejsa %s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:119
+#, fuzzy
+msgid ""
+"<center>This is the fixed address that will be sent with all DCC requests if "
+"you enable the option above.</center>"
+msgstr ""
+"Ovo je la�na adresa koja �e biti poslata sa svim DCC zahtevima ako uklju�ite "
+"gornju opciju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:123
+msgid "Guess address from IRC server if unroutable"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:128
+msgid ""
+"<center>You can enable this option if you are behind a router that forwards "
+"all or a range of ports.<br>KVIrc will try to guess the IP address to use "
+"for DCC by looking up the local hostname as seen by the IRC server you're "
+"connected to.<br>This method is an exclusive alternative to the \"fixed "
+"address\" above.<br>It might guess the correct address automatically if "
+"certain conditions are met (e.g. the IRC server does not mask hostnames).</"
+"center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:134
+msgid "Use \"broken bouncer hack\" to detect address"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:137
+msgid ""
+"<center>When you're behind a dialup router and also tunneling through a "
+"psyBNC bouncer, you can use a bug in the bouncer to force KVIrc to bind the "
+"DCC connections to the dialup router's address.<br>It's an ugly hack - use "
+"it only if nothing else works.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:144
+msgid "Notify failed DCC handshakes to the remote end"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:147
+msgid ""
+"<center>If you enable this option, when a DCC request from a remote user "
+"can't be satisfied KVIrc will notify him by a CTCP ERRMSG. This is a nice "
+"feature so it is a good idea to leave it on unless for some reason you have "
+"deactivated the antiflood system: in this case turning off this option might "
+"help if you often get attacked by CTCP floods.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:154
+#, fuzzy
+msgid "Maximum number of DCC sessions"
+msgstr "ograni�en broj korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:156
+msgid ""
+"<center>This is the maximum number of concurrent DCC sessions and it "
+"includes all the DCC types (send,chat,recv...). KVIrc will refuse the "
+"requests when this limit is reached.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:161
+#, fuzzy
+msgid "DCC socket timeout:"
+msgstr "DCC vreme isteka priklju�ka (sek)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:164
+#, fuzzy
+msgid ""
+"<center>This is the amount of time that KVIrc will wait for a response "
+"before assuming that a DCC has failed because the remote client was unable "
+"to connect to our listening socket.</center>"
+msgstr ""
+"Ovo je vreme za koje �e KVIrc da �eka pre nego sto shvati da je DCC "
+"neuspe�an zbog toga �to udaljeni krajnji nije u mogu�nosti da se zaka�i na "
+"na� slu�aju�i priklju�ak."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:198
+#, fuzzy
+msgid "On Incoming File"
+msgstr "Dolaze�i saobra�aj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:371
+#, fuzzy
+msgid "Automatically accept"
+msgstr "Automatski prihvati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:200
+#, fuzzy
+msgid "Open transfer window as minimized when auto-accepted"
+msgstr "Napravi minimizirano kad automatski-prihvata�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:201
+#, fuzzy
+msgid "Automatically resume when auto-accepted"
+msgstr "Napravi minimizirano kad automatski-prihvata�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:203
+#, fuzzy
+msgid "Save Location"
+msgstr "obave�tenje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:204
+#, fuzzy
+msgid "Download folder:"
+msgstr "Direktorijum za svla�enje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:205
+msgid "Sort saved files by nicknames (create subfolders)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:206
+#, fuzzy
+msgid "Guess save path from media type"
+msgstr "Smatrana vrsta medija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:209
+#, fuzzy
+msgid "On Download Completion"
+msgstr "Direktorijum za svla�enje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:210
+#, fuzzy
+msgid "Notify completion in console"
+msgstr "Obavesti o uspe�nom u konzoli"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:211
+#, fuzzy
+msgid "Notify completion in notifier"
+msgstr "Obavesti o uspe�nom u konzoli"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:212
+#, fuzzy
+msgid "Automatically clear transfer"
+msgstr "Automatski prihvati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:215
+#, fuzzy
+msgid ""
+"<center>This option will cause succesfully terminated transfers to be "
+"automatically removed from the transfer window.</center>"
+msgstr ""
+"<center>Ova opcija ce prouzrokovati da KVIrc poku�a<br>da ponovo u�e na "
+"kanal sa koga ste izba�eni.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:220
+#, fuzzy
+msgid "Always open transfer window as minimized"
+msgstr "Nov &okvir prozora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:238
+msgid "Bug Compatibility"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:239
+msgid "Send ACK for byte 0"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:242
+msgid ""
+"<center>This option causes KVIrc to send a zero-byte acknowledge to kick-"
+"start the DCC transfer with some buggy IRC clients.<br>Use it only if your "
+"DCC transfers stall just after establishing a connection without sending any "
+"data.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:247
+msgid "Accept broken RESUME (mIRC file.ext)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:250
+msgid ""
+"<center>This option causes KVIrc to accept RESUME requests with invalid "
+"filenames.<br>Use it if KVIrc fails to accept RESUME requests from other "
+"clients (e.g. some versions of mIRC).</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:254
+msgid "Replace spaces with underscores in outgoing filenames"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:257
+msgid ""
+"<center>This option causes KVIrc to replace spaces with underscores in "
+"filenames for all the outgoing file transfers. This will fix filename "
+"handling with some buggy clients (e.g. some versions of mIRC)."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:262
+msgid "Limits"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:265
+msgid "Limit upload bandwidth to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:273
+#, fuzzy
+msgid "bytes/sec"
+msgstr "0 bajtova/sek"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:271
+msgid "Limit download bandwidth to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:277
+#, fuzzy
+msgid "Maximum number of DCC transfers"
+msgstr "ograni�en broj korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:279
+msgid ""
+"<center>This is the maximum number of concurrent DCC transfers. KVIrc will "
+"refuse the requests when this limit is reached.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:283
+#, fuzzy
+msgid "Tweaks"
+msgstr "Tester"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:285
+#, fuzzy
+msgid "Use fast send (send ahead)"
+msgstr "Koristi brzo slanja (ili slanje napred)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:288
+msgid ""
+"<center>The \"send ahead\" DCC method allows data to be sent faster by "
+"breaking some of the rules of the original DCC SEND protocol specification."
+"<br>Most clients can handle this kind of optimisation so disable it only if "
+"you have problems.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:295
+msgid "Force idle step"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:298
+msgid ""
+"<center>Enable this option when the dcc file transfers tend to block your "
+"computer by consuming too much CPU time. When this option is enabled the "
+"idle interval below will be forcibly inserted between each sent/received "
+"data packet.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:310
+msgid ""
+"<center>This parameter controls the average delay between two packets sent "
+"or received.<br>A smaller interval will cause you to send data faster but "
+"will also add load to your CPU, disk and network interface.<br>Reasonable "
+"values are from 5 to 50 milliseconds.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:316
+#, fuzzy
+msgid "Packet size:"
+msgstr "Veli�ina paketa (bajtova)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:320
+msgid ""
+"<center>This parameter controls the packet size used for DCC SEND.<br>With "
+"bigger packets you will be probably send data faster, but you will also "
+"saturate your bandwidth and in some cases cause more disk activity."
+"<br>Reasonable values are from 512 to 4096 bytes.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:349
+#, fuzzy
+msgid "On Chat Request"
+msgstr "DCC %s zahtev"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:351
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:373
+#, fuzzy
+msgid "Open minimized when auto-accepted"
+msgstr "Napravi minimizirano kad automatski-prihvata�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:353
+#, fuzzy
+msgid "Always open as minimized"
+msgstr "Kreiraj minimizirano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:369
+#, fuzzy
+msgid "Open all minimized"
+msgstr "Kreiraj minimizirano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:370
+#, fuzzy
+msgid "On Voice Request"
+msgstr "voiced korisnici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:376
+msgid "Force half-duplex mode on sound device"
+msgstr "Forsiraj half-duplex mod na muzi�kom ure�aju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:377
+#, fuzzy
+msgid "Volume slider controls PCM, not Master"
+msgstr "Kliza� ja�ine tona kontroli�e PCM, ne glavnu ja�inu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:379
+#, fuzzy
+msgid "Sound device:"
+msgstr "Muzi�ki ure�aj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:380
+#, fuzzy
+msgid "Mixer device:"
+msgstr "Mikser ure�aj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:382
+#, fuzzy
+msgid "Pre-buffer size:"
+msgstr "Veli�ina pre-bafera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:38
+#, fuzzy
+msgid "Enable Ignore For"
+msgstr "Omogu�i ignorisanje za NOTICE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:39
+#, fuzzy
+msgid "Private/channel messages"
+msgstr "li�na privatna poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:40
+#, fuzzy
+msgid "Private/channel notices"
+msgstr "�ifrovano obave�tenje kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:44
+#, fuzzy
+msgid "Use verbose ignore (show messages in console)"
+msgstr "Preop�irno ignorisanje: (poka�i ignorisane poruke u konzoli)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:46
+#, fuzzy
+msgid "Sound System"
+msgstr "Muzi�ki sistem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:66
+msgid "This allows you to select the sound system to be used with KVIrc."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:72
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:88
+msgid "Auto-detect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:91
+#, fuzzy
+msgid "Test"
+msgstr "Tester"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:79
+#, fuzzy
+msgid "Media Player"
+msgstr "Nov tip medija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:81
+msgid ""
+"This allows you to select the preferred media player to be used with the "
+"mediaplayer.* module commands and functions."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:102
+#, fuzzy
+msgid "ID3 tags' encoding"
+msgstr "Tekstualni editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:104
+msgid "This allows you to select encoding of mp3 tags."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:125
+msgid "Winamp messages ecoding"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:127
+msgid "This allows you to select encoding of winamp messages."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:290
+msgid "New Query opened"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:293
+msgid "New message in inactive query"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:296
+#, fuzzy
+msgid "Highlighted message in inactive window"
+msgstr "nema spoljnih poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:299
+msgid "Me have been kicked"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:39
+msgid "Selection background color"
+msgstr "Biranje boje pozadine"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:40
+msgid "Selection foreground color"
+msgstr "Biranje boje ispisa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:41
+msgid "Control char color"
+msgstr "Boja kontrolnog znaka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:42
+msgid "Cursor color"
+msgstr "Boja kursora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:141
+msgid "Warp cursor at the end of line when browsing history"
+msgstr "Postavi kursor na kraj linije kad se pregleda istorija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:142
+msgid "Disable the input history window and it's log memory."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:143
+msgid "Hide input toolbuttons by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:144
+#, fuzzy
+msgid "Nick completion"
+msgstr "akcija izbacivanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:145
+msgid "Use bash-like nick completion"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:146
+msgid "Nick completion postfix string"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:147
+msgid "Use the completion postfix string for the first word only"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:148
+msgid "Commandline in user-friendly mode by default"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:81
+msgid "Show message icons"
+msgstr "Poka�i ikone poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:82
+#, fuzzy
+msgid "Draw some emoticons (smileys) as pictures"
+msgstr "Nacrtaj neke emocije kao stvarne ikone"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:83
+msgid "Don't show colors in user messages"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:88
+#, fuzzy
+msgid "Nicknames"
+msgstr "Nadimak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:90
+#, fuzzy
+msgid "\"Smart\" nickname colors"
+msgstr "Pametno bojenje nadimaka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:91
+#, fuzzy
+msgid "Use same colors as in the userlist"
+msgstr "Poka�i srazmernu avatar sliku u listi korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:93
+#, fuzzy
+msgid "Show nicknames in bold"
+msgstr "Poka�i zadebljane nadimke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:94
+msgid "Show user and host"
+msgstr "Poka�i korisnika i host"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:95
+#, fuzzy
+msgid "Show channel mode prefix"
+msgstr "nepoznat mod kanala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:96
+msgid "User-defined prefix and postfix"
+msgstr "Korisni�ki-definisan prefiks i postfiks"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:98
+msgid "[PREFIX]nickname[!user@host][POSTFIX] message"
+msgstr "[PREFIKS]nadimak[!korisnik@host][POSTFIKS] poruka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:112
+#, fuzzy
+msgid "Prefix:"
+msgstr "Prefiks"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:117
+#, fuzzy
+msgid "Postfix:"
+msgstr "Postfiks"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:131
+msgid "Show timestamp"
+msgstr "Poka�i datum i vreme"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:134
+#, fuzzy
+msgid "Use UTC time for timestamp"
+msgstr "Koristi UTC datum i vreme"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:141
+#, fuzzy
+msgid "Use special color for timestamps"
+msgstr "Koristi UTC datum i vreme"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:147
+#, fuzzy
+msgid "Timestamp format:"
+msgstr "Datum i vreme"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:320
+msgid "Transparent"
+msgstr "Transparentno "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:401
+#, fuzzy
+msgid "Message Type"
+msgstr "Tip poruke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:417
+#, fuzzy
+msgid "Background:"
+msgstr "Pozadina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:426
+#, fuzzy
+msgid "Foreground:"
+msgstr "Boja ispisa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:434
+#, fuzzy
+msgid "Alert level:"
+msgstr "Nivo upozorenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:454
+msgid "Log this"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:458
+#, fuzzy
+msgid "Load From..."
+msgstr "U�itavanje ikona..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:460
+#, fuzzy
+msgid "Save As..."
+msgstr "S&a�uvaj kao..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:589
+#, fuzzy
+msgid "Choose a Filename - KVIrc"
+msgstr "Izaberi fajl za parseovanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:646
+#, fuzzy
+msgid "Choose a Filename - KVIrc "
+msgstr "Izaberi fajl za parseovanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:40
+#, fuzzy
+msgid "Enable lag meter"
+msgstr "Pogre�an parametar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:42
+msgid ""
+"<center>This enables the lag meter engine, which checks at regular intervals "
+"how much lag (latency) the server has.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:45
+msgid "Lag meter heartbeat:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:49
+msgid ""
+"<center>This option allows you to set the lag meter heartbeat interval."
+"<br>The lower the heartbeat interval the higher will be the accuracy of the "
+"lag check but also higher cpu usage and data traffic to the server."
+"<br>Please note that this is NOT the interval between pings sent to the "
+"server: the pings (if any) will be sent really less often. 5000 is a "
+"reasonable value.</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:58
+msgid "Trigger event if lag exceeds:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:61
+msgid ""
+"<center>This option controls the threshold for the OnLagAlarmTimeUp and "
+"OnLagAlarmTimeDown events. When the lag goes above the threshold "
+"OnLagAlarmTimeUp will be triggered and when the lag falls back below the "
+"threshold then OnLagAlarmTimeDown will be triggered</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:68
+msgid "Show lag in IRC context display"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:70
+msgid ""
+"<center>This makes the IRC context display applet show the current lag after "
+"the user's nickname (in seconds)</center>"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.h:28
+#, fuzzy
+msgid "Away"
+msgstr "&Odsutnost"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.h:28
+#, fuzzy
+msgid "CTCP"
+msgstr "CTCP Page"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:28
+msgid "DCC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:59
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:41
+#, fuzzy
+msgid "Advanced"
+msgstr "Napredno ..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:72
+#, fuzzy
+msgid "File Transfer"
+msgstr "Obri�i mrtve prenose"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:113
+#, fuzzy
+msgid "Chat"
+msgstr "Izmeni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:126
+#, fuzzy
+msgid "Voice"
+msgstr "Naslov"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:32
+msgid "IRC"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:73
+msgid "Channel"
+msgstr "Kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:28
+#, fuzzy
+msgid "Lag"
+msgstr "Bele�ke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:30
+msgid "time,ping"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:37
+msgid "authentication,identify"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:31
+msgid "Language"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:34
+msgid "language,encoding,charset,codepage"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:28
+#, fuzzy
+msgid "Contacts"
+msgstr "Pove�i se"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:30
+msgid "notify,buddy,buddies,friends"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:42
+#, fuzzy
+msgid "Notifier"
+msgstr "Lista obave�tenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:43
+#, fuzzy
+msgid "popup"
+msgstr "Iska�u�i meni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:37
+#, fuzzy
+msgid "Text"
+msgstr "Tekst:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:38
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:49
+msgid "theme,colors,output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:52
+#, fuzzy
+msgid "Message Style"
+msgstr "Tip poruke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:56
+msgid "theme,privmsg,output,format"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:67
+msgid "Timestamp"
+msgstr "Datum i vreme"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:71
+#, fuzzy
+msgid "time,timestamp"
+msgstr "Datum i vreme"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:88
+#, fuzzy
+msgid "Message Colors"
+msgstr "Nadimak 4"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:169
+msgid "theme,colors,messages,output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:168
+#, fuzzy
+msgid "Color Set"
+msgstr "Zatvori"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.h:32
+#, fuzzy
+msgid "Avatars"
+msgstr "Avatar slika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:32
+#, fuzzy
+msgid "Sound"
+msgstr "Po�alji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:48
+msgid "sound,xmms,audio,play,amarok"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:81
+#, fuzzy
+msgid "Sounds"
+msgstr "Po�alji"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:83
+msgid "sound,events"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:28
+#, fuzzy
+msgid "URL handlers"
+msgstr "Dodaj manipulator"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:31
+msgid "url,programs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:29
+#, fuzzy
+msgid "Tray icon"
+msgstr "Tekstualni editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:31
+msgid "tray,dockwidget"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.h:33
+#, fuzzy
+msgid "Tools"
+msgstr "&Alati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.h:28
+#, fuzzy
+msgid "General options"
+msgstr "Gnutella opcije"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.h:31
+#, fuzzy
+msgid "Interface"
+msgstr "Adresa interfejsa (ili ime)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:29
+#, fuzzy
+msgid "Text icons"
+msgstr "Tekstualni editor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:31
+#, fuzzy
+msgid "smileys,emoticons"
+msgstr "sekundi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:34
+#, fuzzy
+msgid "Output"
+msgstr "Izlazni bafer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:48
+#, fuzzy
+msgid "Look"
+msgstr "Zaklju�aj"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:101
+msgid "Features"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:46
+#, fuzzy
+msgid "Media Types"
+msgstr "Nov tip medija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:48
+msgid "file,audio,video,programs"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:114
+#, fuzzy
+msgid "theme"
+msgstr "Stavka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:47
+#, fuzzy
+msgid "Transparency"
+msgstr "Transparentno "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:48
+#, fuzzy
+msgid "theme,background"
+msgstr "Pozadina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:74
+#, fuzzy
+msgid "Window Captions"
+msgstr "Prozor nije prona�en"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:88
+msgid "theme,mdi"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:87
+msgid "Workspace"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:100
+#, fuzzy
+msgid "ToolBar Applets"
+msgstr "&Alati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:101
+msgid "theme,toolbar"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:150
+msgid "connection"
+msgstr "konekcija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:33
+#, fuzzy
+msgid "Protection"
+msgstr "Koristi flood za�titu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:36
+msgid "ctcp,flood"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:144
+#, fuzzy
+msgid "Avatar"
+msgstr "Avatar slika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.h:28
+msgid "Anti-spam"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:32
+msgid "Verbosity And Output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:34
+msgid "debug"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:28
+#, fuzzy
+msgid "Logging"
+msgstr "odlaze�e"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:29
+msgid "save,output"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:50
+msgid "Input"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:33
+msgid "theme,colors,text"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:33
+msgid "Taskbar"
+msgstr "Taskbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:47
+#, fuzzy
+msgid "Tree Taskbar"
+msgstr "Taskbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:65
+#, fuzzy
+msgid "Foreground"
+msgstr "Boja ispisa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:111
+#, fuzzy
+msgid "Classic Taskbar"
+msgstr "Taskbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:52
+#, fuzzy
+msgid "Proxy Hosts"
+msgstr "proksi host"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:54
+#, fuzzy
+msgid "connection,servers"
+msgstr "Isteklo je vreme za povezivanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:28
+#, fuzzy
+msgid "Alert/Highlight"
+msgstr "Omogu�i URL isticanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:42
+#, fuzzy
+msgid "Highlight"
+msgstr "Omogu�i URL isticanje"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:55
+#, fuzzy
+msgid "Taskbar Alert"
+msgstr "Taskbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.h:29
+#, fuzzy
+msgid "Flood Protection"
+msgstr "Koristi flood za�titu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:30
+#, fuzzy
+msgid "Userlist"
+msgstr "Lista korisnika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:31
+msgid "theme,userlist,channel"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:45
+#, fuzzy
+msgid "theme,userlist,channel,background"
+msgstr "Pozadina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:66
+#, fuzzy
+msgid "theme,userlist,channel,colors"
+msgstr "Kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:81
+#, fuzzy
+msgid "Nickname Grid"
+msgstr "Nadimak 1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:82
+#, fuzzy
+msgid "theme,userlist,channel,grid"
+msgstr "Pozadina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:102
+#, fuzzy
+msgid "userlist,channel"
+msgstr "Kanal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:29
+#, fuzzy
+msgid "Labels"
+msgstr "Labela"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:30
+msgid "theme,topic"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:28
+#, fuzzy
+msgid "Scripting Engine"
+msgstr "Opis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:29
+msgid "scripting,kvs,debug"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:55
+#, fuzzy
+msgid "SSL"
+msgstr "Koristi SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:72
+msgid "Socket"
+msgstr "Priklju�ak"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:87
+#, fuzzy
+msgid "Ident Service"
+msgstr "Ident korisni�ko ime"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:29
+#, fuzzy
+msgid "Ignore"
+msgstr "ignorisano"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:31
+#, fuzzy
+msgid "protection"
+msgstr "Koristi flood za�titu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:28
+#, fuzzy
+msgid "Query"
+msgstr "upit obave�tenja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:30
+#, fuzzy
+msgid "chat"
+msgstr "Izmeni"
+
+#, fuzzy
+#~ msgid "Output verosity"
+#~ msgstr "Izlazni bafer"
+
+#, fuzzy
+#~ msgid "Scaling"
+#~ msgstr "Opis"
+
+#, fuzzy
+#~ msgid "Theme name:"
+#~ msgstr "Stvarno ime"
+
+#, fuzzy
+#~ msgid "Version:"
+#~ msgstr "Opis:"
+
+#, fuzzy
+#~ msgid "Package format:"
+#~ msgstr "Tip poruke"
+
+#, fuzzy
+#~ msgid "Save Theme - KVIrc"
+#~ msgstr "Sa�uvaj putanju"
+
+#, fuzzy
+#~ msgid "Unable to create theme directory."
+#~ msgstr "Neuspe�no uklanjanje direktorijuma %s"
+
+#, fuzzy
+#~ msgid "Theme saved successfully to "
+#~ msgstr "Prenos uspe�an"
+
+#, fuzzy
+#~ msgid "Choose save directory"
+#~ msgstr "Izaberite direktorijum..."
+
+#, fuzzy
+#~ msgid "You must select save directory"
+#~ msgstr "Nekompletan direktorijum"
+
+#, fuzzy
+#~ msgid "Unable to create theme files directory."
+#~ msgstr "Neuspe�no uklanjanje direktorijuma %s"
+
+#, fuzzy
+#~ msgid "Unable to create theme utils directory."
+#~ msgstr "Neuspe�no uklanjanje direktorijuma %s"
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for reading."
+#~ msgstr "Ne mogu da otvorim fajl %s za �itanje"
+
+#, fuzzy
+#~ msgid "Cannot open install.kvs for writing."
+#~ msgstr "Ne mogu da otvorim fajl %s za upisivanje"
+
+#, fuzzy
+#~ msgid "Choose filaname"
+#~ msgstr "Izaberi ime konfiguracionog fajla"
+
+#, fuzzy
+#~ msgid "You must select filename"
+#~ msgstr "Nekompletan direktorijum"
+
+#, fuzzy
+#~ msgid "Refresh Theme List"
+#~ msgstr "U�itaj listu"
+
+#, fuzzy
+#~ msgid "Delete Selected Theme"
+#~ msgstr "Obri�i masku"
+
+#, fuzzy
+#~ msgid "Open Theme - KVIrc"
+#~ msgstr "Sa�uvaj putanju"
+
+#, fuzzy
+#~ msgid "You must select file"
+#~ msgstr "Nekompletan direktorijum"
+
+#, fuzzy
+#~ msgid "Current Theme"
+#~ msgstr "Trenutni direktorijum"
+
+#, fuzzy
+#~ msgid "<p>Theme: %1</p>"
+#~ msgstr "Stvarno ime"
+
+#, fuzzy
+#~ msgid "<p>Version: %1</p>"
+#~ msgstr "[SSL]: Verzija: %1%s"
+
+#, fuzzy
+#~ msgid "Timestamp color"
+#~ msgstr "Datum i vreme"
+
+#, fuzzy
+#~ msgid "Minimize new queries"
+#~ msgstr "M&inimizuj"
+
+#, fuzzy
+#~ msgid "Automatically close on completion"
+#~ msgstr "Automatski u�i na kanal na koi si pozvan (INVITE)"
+
+#, fuzzy
+#~ msgid "Speed limits"
+#~ msgstr "Brzina (KBit/sek)"
+
+#, fuzzy
+#~ msgid "Idle interval:"
+#~ msgstr "Ident korisni�ko ime"
+
+#, fuzzy
+#~ msgid ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">General Preferences</font></h1></center></td></"
+#~ "tr><tr><td><br><br><center><b>These sections contain various settings for "
+#~ "KVIrc</b></center><br><br><p>When you have finished, click \"<b>OK</b>\" "
+#~ "to accept your changes or \"<b>Cancel</b>\" to discard them. Clicking "
+#~ "\"<b>Apply</b>\" will commit your changes without closing the window.</"
+#~ "td></tr><tr><td>Many settings have tooltips that can be shown by holding "
+#~ "the cursor over their label for a few seconds.</p></td></tr></table>"
+#~ msgstr ""
+#~ "<h1><b><center>Generalne opcije</center></b></"
+#~ "h1><br><hr><br><center>Izaberite kategoriju u listi na levoj strani za "
+#~ "pregled vezanih opcija.Kada budete zavr�ili kliknite na 'OK' za "
+#~ "prihvatanje Va�ih promena ili 'Poni�ti' za odbacivanje. Klikom na "
+#~ "'Primeni' �ete izvr�iti Va�e promene bez zatvaranja ovog prozora.</"
+#~ "center><br><br><center>Mnoge opcije imaju \"brza pomo�\" mogu�nost kojoj "
+#~ "se mo�e pristupiti stavljanjem pokaziva�a mi�a preko selektora opcije na "
+#~ "nekoliko sekundi.</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<table width=\"100%\"><tr><td bgcolor=\"#303030\"><center><h1><font color="
+#~ "\"#FFFFFF\">General Preferences</font></h1></center></td></"
+#~ "tr><tr><td><br><br>Select a category in the list view on the left to view "
+#~ "the related settings. When you have finished, click \"<b>OK</b>\" to "
+#~ "accept your changes or \"<b>Cancel</b>\" to discard them. Clicking "
+#~ "\"<b>Apply</b>\" will commit your changes without closing this window."
+#~ "<br><br></td></tr></table>"
+#~ msgstr ""
+#~ "<h1><b><center>Generalne opcije</center></b></"
+#~ "h1><br><hr><br><center>Izaberite kategoriju u listi na levoj strani<br>za "
+#~ "pregled srodnih opcija.<br>Kada zavr�ite kliknite Ok za prihvatanje Va�ih "
+#~ "promena<br>ili Poni�ti za odbacivanje.<br>Klik na Primeni �e aktivirati "
+#~ "Va�e promene bez zatvaranja ovog prozora.<br><br></center>"
+
+#, fuzzy
+#~ msgid "Standard Colors"
+#~ msgstr "uske boje"
+
+#, fuzzy
+#~ msgid "Avatar Handling"
+#~ msgstr "promena avatara"
+
+#, fuzzy
+#~ msgid "MDI Captions"
+#~ msgstr "Akcije"
+
+#, fuzzy
+#~ msgid "Load & Save"
+#~ msgstr "&Sa�uvaj"
+
+#, fuzzy
+#~ msgid "Output Style"
+#~ msgstr "Izlazni bafer"
+
+#, fuzzy
+#~ msgid "Maximum number of rows:"
+#~ msgstr "ograni�en broj korisnika"
+
+#, fuzzy
+#~ msgid "Custom nickname:"
+#~ msgstr "Nickname (nadimak):"
+
+#, fuzzy
+#~ msgid "Newbie"
+#~ msgstr "Nova stavka"
+
+#, fuzzy
+#~ msgid "Normal user"
+#~ msgstr "Normalni tekst"
+
+#, fuzzy
+#~ msgid "Experienced user"
+#~ msgstr "voiced korisnici"
+
+#, fuzzy
+#~ msgid "Novice"
+#~ msgstr "Naslov"
+
+#~ msgid "Alias"
+#~ msgstr "Alias"
+
+#, fuzzy
+#~ msgid "No item selected"
+#~ msgstr "Nema izabranih stavki"
+
+#~ msgid "Rename"
+#~ msgstr "Preimenuj"
+
+#, fuzzy
+#~ msgid "Edit the alias or namespace name"
+#~ msgstr "Ime alijasa"
+
+#, fuzzy
+#~ msgid "Add Alias"
+#~ msgstr "Dodaj novi alijas"
+
+#, fuzzy
+#~ msgid "Remove Selected"
+#~ msgstr "Ukloni izabrano"
+
+#, fuzzy
+#~ msgid "Export Selected..."
+#~ msgstr "Ukloni ovaj alijas"
+
+#, fuzzy
+#~ msgid "Export All..."
+#~ msgstr "Ukloni ovaj alijas"
+
+#, fuzzy
+#~ msgid "Find In Aliases..."
+#~ msgstr "Alijasi..."
+
+#, fuzzy
+#~ msgid "Alias Export"
+#~ msgstr "Ime alijasa"
+
+#, fuzzy
+#~ msgid "Write Failed - KVIrc"
+#~ msgstr "Izaberi fajl za parseovanje"
+
+#, fuzzy
+#~ msgid "Unable to write to the alias file."
+#~ msgstr "Neuspe�no pisanje u fajl %s"
+
+#, fuzzy
+#~ msgid "Remove item"
+#~ msgstr "Ukloni"
+
+#~ msgid "Yes"
+#~ msgstr "Da"
+
+#, fuzzy
+#~ msgid "Yes to All"
+#~ msgstr "Izaberi sve"
+
+#~ msgid "No"
+#~ msgstr "Ne"
+
+#, fuzzy
+#~ msgid "Missing Alias Name"
+#~ msgstr "Nedostaje ime promenljive"
+
+#, fuzzy
+#~ msgid "Missing Namespace Name"
+#~ msgstr "Nedostaje ime tajmera"
+
+#, fuzzy
+#~ msgid "Please enter the name for the new alias"
+#~ msgstr "Nema korisnika u listi obave�tenja"
+
+#, fuzzy
+#~ msgid "Rename Alias"
+#~ msgstr "Ukloni ovaj alijas"
+
+#, fuzzy
+#~ msgid "Please enter the new name for the alias"
+#~ msgstr "Izaberi ime za hit listu"
+
+#, fuzzy
+#~ msgid "Rename Namespace"
+#~ msgstr "Pravo Ime: "
+
+#, fuzzy
+#~ msgid "Namespace"
+#~ msgstr "Tip poruke"
+
+#, fuzzy
+#~ msgid "Alias Editor"
+#~ msgstr "Ime alijasa"
+
+#, fuzzy
+#~ msgid "The config file with id '%Q' is not open"
+#~ msgstr "Fajl pode�avanja sa ID-om '%s' nije otvoren"
+
+#~ msgid ""
+#~ "The config file '%s' has been changed but is opened as read-only: changes "
+#~ "will be lost"
+#~ msgstr ""
+#~ "Fajl sa pode�avanjem '%s' je promenjen ali je otvorn samo za �itanje: "
+#~ "promene ce biti izgubljene"
+
+#, fuzzy
+#~ msgid "The config file with id '%Q' is read only"
+#~ msgstr "Fajl sa pode�avanjima sa ID-om '%s' je samo za �itanje"
+
+#, fuzzy
+#~ msgid "Request Links"
+#~ msgstr "Zahtevaj linkove"
+
+#~ msgid "Link"
+#~ msgstr "Link"
+
+#~ msgid "Hops"
+#~ msgstr "Hops"
+
+#~ msgid "(None)"
+#~ msgstr "(Nijedan)"
+
+#, fuzzy
+#~ msgid "Sent links request, waiting for reply..."
+#~ msgstr "Poslat zahtev za linkove: �ekam odgovor..."
+
+#, fuzzy
+#~ msgid "Cannot request links: No active connection"
+#~ msgstr "Ne mogu da zahtevam linkove: nema aktivne konekcije"
+
+#, fuzzy
+#~ msgid "Connected to %s (%s)"
+#~ msgstr "Povezan na %s:%s"
+
+#, fuzzy
+#~ msgid "Links cannot be requested: Not connected to a server"
+#~ msgstr "Niste zaka�eni na IRC server"
+
+#~ msgid "Links for %Q [IRC Context %u]"
+#~ msgstr "Linkovi za %Q [IRC Kontekst %u]"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Links for %Q</b></font> <font color=\"%s\">"
+#~ "[IRC Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>Linkovi za %Q</b></font> <font color=\"%s\">"
+#~ "[IRC Kontekst %u]</font></nobr>"
+
+#~ msgid "Received end of links."
+#~ msgstr "Primljen kraj linkova"
+
+#, fuzzy
+#~ msgid ""
+#~ "Broken link: Missing parent (%s) for %s (%d hops): %s (used /LINKS "
+#~ "<mask> ?)"
+#~ msgstr ""
+#~ "Prekinut link : nedostaje glavni (%s) za %s (%d hops): %s (kori�ceno /"
+#~ "LINKS <maska> ?)"
+
+#, fuzzy
+#~ msgid "%s: Parent link %s"
+#~ msgstr "%s : Mati�ni link %s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Warning: No root link was sent by the server, the stats may be invalid."
+#~ msgstr ""
+#~ "Upozorenje : Nije poslat glavni link od servera : statistika mo�e biti "
+#~ "pogre�na."
+
+#~ msgid "%c%cLinks for %Q"
+#~ msgstr "%c%cLinkovi za %Q"
+
+#, fuzzy
+#~ msgid "Total hosts listed"
+#~ msgstr "Ukupno hostova %s : %d"
+
+#, fuzzy
+#~ msgid "Total hosts in the network"
+#~ msgstr "u mre�i"
+
+#, fuzzy
+#~ msgid "Wildcard servers (hubs?): %d"
+#~ msgstr "Divlji serveri (hubovi ?) : %d"
+
+#, fuzzy
+#~ msgid "Direct links: %d (~%d.%d %)"
+#~ msgstr "Direktni linkovi : %d (~%d.%d %)"
+
+#, fuzzy
+#~ msgid "Close links (1 <= hops <= 3): %d (~%d.%d %)"
+#~ msgstr "Najbli�i linkovi (1<= skokova <= 3) : %d (~%d.%d %)"
+
+#, fuzzy
+#~ msgid "Mid-range links (4 <= hops <= 6): %d (~%d.%d %)"
+#~ msgstr "Srednji rang linkova (4<= skokova <= 6) : %d (~%d.%d %)"
+
+#, fuzzy
+#~ msgid "Distant links (7 <= hops): %d (~%d.%d %)"
+#~ msgstr "Daleki linkovi (7 <= skokova) : %d (~%d.%d %)"
+
+#, fuzzy
+#~ msgid "Broken (unknown) links: %d"
+#~ msgstr "Prekinutih (nepoznatih) linkova : %d"
+
+#, fuzzy
+#~ msgid "Maximum links per host: %d [%s]"
+#~ msgstr "Maksimum linkova po hostu : %d [%s]"
+
+#, fuzzy
+#~ msgid "Total links: %d"
+#~ msgstr "Ukupno linkova : %d"
+
+#, fuzzy
+#~ msgid "Maximum hops: %d [%s]"
+#~ msgstr "Maksimum skokova : %d [%s]"
+
+#, fuzzy
+#~ msgid "Average hops: ~%d.%d"
+#~ msgstr "Prose�nih skokova : ~%d.%d"
+
+#~ msgid "(Unknown)"
+#~ msgstr "(Nepoznat)"
+
+#, fuzzy
+#~ msgid "Incomplete LINKS result, no stats available"
+#~ msgstr "Parcijalni LINKS rezultat : Nema mogu�e statistike"
+
+#~ msgid "You're not connected to a server"
+#~ msgstr "Niste zaka�eni na IRC server"
+
+#~ msgid "Reset"
+#~ msgstr "Resetuj"
+
+#~ msgid "Processing link: %s"
+#~ msgstr "Obra�eno linkova: %s"
+
+#, fuzzy
+#~ msgid "Broken message syntax, can't extract hops number, assuming 0"
+#~ msgstr ""
+#~ "Prekinuta sintaksa poruke: ne mogu da izdvojim broj skokova, dodeljujem 0"
+
+#~ msgid "Links window alread open for this IRC context"
+#~ msgstr "Linkovi prozor je ve� otvoren za ovaj IRC kontekst"
+
+#, fuzzy
+#~ msgid "Current window is not a channel"
+#~ msgstr "Trenutni prozor nije kanal"
+
+#~ msgid "List window alread open for this IRC context"
+#~ msgstr "Prozor liste ve� otvoren za ovaj IRC kontekst"
+
+#, fuzzy
+#~ msgid "Request List"
+#~ msgstr "Zahtevaj listu"
+
+#, fuzzy
+#~ msgid "Stop list download"
+#~ msgstr "Ne mogu da odredim lokalni port"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center><b>/LIST command parameters:</b><br>Many servers accept special "
+#~ "parameters that allow you to filter the returned entries.<br>Commonly, "
+#~ "masked channel names (*kvirc*) are accepted as parameters, as well as "
+#~ "strings like <b>c&lt;n</b> or <b>c&gt;n</b> where <b>n</b> is the minimum "
+#~ "or maximum of users on the channel.</center>"
+#~ msgstr ""
+#~ "/LIST parametri komande\n"
+#~ "Mnogi serveri prihvataju specijalne parametre koji vam omogu�uju da "
+#~ "kontroli�ete (obi�no redukovane) vra�ene odgovore.\n"
+#~ "Uglavnom , maske imena kanala su o�ekivani parametri isto kao i "
+#~ "stringovi\n"
+#~ "nalik \"c<n\" ili \"c>n\" gde je 'n' minimum ili maksimum korisnika na "
+#~ "kanalu."
+
+#~ msgid "Users"
+#~ msgstr "Korisnika"
+
+#~ msgid "Topic"
+#~ msgstr "Naslov"
+
+#, fuzzy
+#~ msgid "Sent list request, waiting for reply..."
+#~ msgstr "Poslat zahtev za listu: �ekam odgovor..."
+
+#, fuzzy
+#~ msgid "Cannot request list: No active connection"
+#~ msgstr "Ne mogu da zahtevam listu: nema aktivne konekcije"
+
+#, fuzzy
+#~ msgid "Cannot stop list download, no active connection."
+#~ msgstr "Ne mogu da zahtevam listu: nema aktivne konekcije"
+
+#, fuzzy
+#~ msgid "List cannot be requested: Not connected to a server"
+#~ msgstr "Niste zaka�eni na IRC server"
+
+#, fuzzy
+#~ msgid "Channel List [IRC Context %u]"
+#~ msgstr "Lista kanala [IRC Kontekst %u]"
+
+#, fuzzy
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Channel List</b></font> <font color=\"%s\">"
+#~ "[IRC Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>Lista kanala</b></font> <font color=\"%s\">"
+#~ "[IRC Kontekst %u]</font></nobr>"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Channel list</b></font> <font color=\"%s\">"
+#~ "[IRC Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>Lista kanala</b></font> <font color=\"%s\">"
+#~ "[IRC Kontekst %u]</font></nobr>"
+
+#~ msgid "Processing list: %Q"
+#~ msgstr "Obra�ujem listu %Q"
+
+#~ msgid "Search keywords"
+#~ msgstr "Pretra�i klju�ne re�i"
+
+#, fuzzy
+#~ msgid "Help Browser"
+#~ msgstr "&Pomo� (stati�ki �ita�)"
+
+#, fuzzy
+#~ msgid "Channel: %c%s@%s"
+#~ msgstr "Kanali: %c%s"
+
+#, fuzzy
+#~ msgid " Property: %s=%s"
+#~ msgstr " Vlasni�tvo: %s=%s"
+
+#, fuzzy
+#~ msgid "Total %d channels"
+#~ msgstr "Napusti sve kanale"
+
+#, fuzzy
+#~ msgid "Show URL List"
+#~ msgstr "URL lista"
+
+#, fuzzy
+#~ msgid "Shows the URL list window"
+#~ msgstr "Zatvori ovaj prozor"
+
+#~ msgid "&Configure"
+#~ msgstr "&Podesi"
+
+#~ msgid "&Help"
+#~ msgstr "&Pomo�"
+
+#, fuzzy
+#~ msgid "Clo&se"
+#~ msgstr "Zatvori"
+
+#~ msgid "&Module"
+#~ msgstr "&Modul"
+
+#~ msgid "&Load"
+#~ msgstr "&U�itaj"
+
+#~ msgid "&Clear"
+#~ msgstr "&O�isti"
+
+#~ msgid "&List"
+#~ msgstr "&Lista"
+
+#~ msgid "URL"
+#~ msgstr "URL"
+
+#~ msgid "Window"
+#~ msgstr "Prozor"
+
+#~ msgid "Count"
+#~ msgstr "Broj"
+
+#, fuzzy
+#~ msgid "Warning - KVIrc"
+#~ msgstr "Upozorenje"
+
+#, fuzzy
+#~ msgid "Select an URL."
+#~ msgstr "Izaberi neki URL"
+
+#~ msgid "&Remove"
+#~ msgstr "&Ukloni"
+
+#~ msgid "&Find Text"
+#~ msgstr "&Na�i tekst"
+
+#~ msgid "&Say to Window"
+#~ msgstr "&Kazi u prozor"
+
+#, fuzzy
+#~ msgid "Window not found."
+#~ msgstr "Prozor nije prona�en"
+
+#~ msgid "URL Module Configuration"
+#~ msgstr "URL Konfiguracija Modula"
+
+#~ msgid "Save URL list on module unload"
+#~ msgstr "Sa�uvaj URL listu po iz�itavanju modula"
+
+#~ msgid "Save columns width on URL list close"
+#~ msgstr "Sa�uvaj �irinu kolona po zatvaranju URL liste"
+
+#, fuzzy
+#~ msgid "&Cancel"
+#~ msgstr "Poni�ti"
+
+#~ msgid "Enable URL ban list"
+#~ msgstr "Aktiviraj listu URL zabrane"
+
+#, fuzzy
+#~ msgid "&Add Ban"
+#~ msgstr "Dodaj zabranu (ban)"
+
+#, fuzzy
+#~ msgid "&Remove Selected"
+#~ msgstr "Ukloni izabrano"
+
+#, fuzzy
+#~ msgid "URL Ban List"
+#~ msgstr "Lista URL zabrane"
+
+#, fuzzy
+#~ msgid "Select a ban."
+#~ msgstr "Izaberi zabranu (ban)"
+
+#, fuzzy
+#~ msgid "Window with ID '%Q' not found"
+#~ msgstr "Dugme prozora '%s' nije na�eno"
+
+#, fuzzy
+#~ msgid "The specified window (%Q) is not a channel/query/DCC chat"
+#~ msgstr "Navedeni prozor (%s) nije kanal/upit/dcc"
+
+#~ msgid "File not found or empty"
+#~ msgstr "Fajl nije na�en ili je prazan"
+
+#~ msgid "I can't open that file"
+#~ msgstr "I ne mogu da otvorim taj fajl"
+
+#~ msgid "Could not paste file"
+#~ msgstr "Ne mogu da prenesem fajl"
+
+#~ msgid "The specified window (%s) is not a channel/query/dcc"
+#~ msgstr "Navedeni prozor (%s) nije kanal/upit/dcc"
+
+#, fuzzy
+#~ msgid "Slow-paste ID:%d Window:%s"
+#~ msgstr "Spor prenos ID:%d Prozor:%s"
+
+#, fuzzy
+#~ msgid "Window %Q not found"
+#~ msgstr "Prozor %s nije na�en"
+
+#~ msgid "Missing window id after the 'w' switch"
+#~ msgstr "Nedostaje ID prozora posle 'w' prekida�a"
+
+#, fuzzy
+#~ msgid "Can't log to file %Q"
+#~ msgstr "Ne mogu da logujem u fajl %s"
+
+#~ msgid "This window has no logging capabilities"
+#~ msgstr "Ovaj prozor nema mogu�nost logovanja"
+
+#, fuzzy
+#~ msgid "Window with id '%Q' not found, returning empty string"
+#~ msgstr "Prozor sa ID-om '%s' nije na�en, vra�am prazan znakovni niz"
+
+#, fuzzy
+#~ msgid "&Next >"
+#~ msgstr "Tekst:"
+
+#~ msgid "Finish"
+#~ msgstr "Zavr�i"
+
+#, fuzzy
+#~ msgid ""
+#~ "<p><h2>Welcome :)</h2>This is your first time running this version of "
+#~ "KVIrc.<br>This wizard will guide you through the few steps required to "
+#~ "complete the setup.<br><br>If you had a previous version of KVIrc "
+#~ "installed, no worries. You will have a chance to preserve the old "
+#~ "configuration.</p><p>Click \"<b>Next</b>\" to proceed.</p>"
+#~ msgstr ""
+#~ "<h2>Donrodo�li :-)</h2><br><br>Upravo ste instalirali novu verziju KVIrc-"
+#~ "a i pokre�ete je po prvi put.<br><br>Ovaj �arobnjak �e Vas voditi kroz "
+#~ "nekoliko koraka potrebnih za kompletiranje setup-a.<br><br>Klikni "
+#~ "\"Slede�e\" za nastavak."
+
+#, fuzzy
+#~ msgid "Welcome to KVIrc"
+#~ msgstr "Dobrodo�li"
+
+#, fuzzy
+#~ msgid ""
+#~ "<p>All of the files in this distribution are covered by the GPL. In human "
+#~ "terms this can be read as follows:<br><ul><li><b>KVIrc is free</b>, use "
+#~ "it, have fun! <b>:)</b></li><li>If you use <b>any</b> part of KVIrc in "
+#~ "your own project, you <b>must</b> release that project under the same "
+#~ "license.</li></ul></p><p>The \"legalese\" version of the license is shown "
+#~ "in the box below.</p>"
+#~ msgstr ""
+#~ "Svi fajlovi u ovoj distribuciji su pokriveni GPL licencom.<br> U ljudskim "
+#~ "terminima ovo mo�e biti shva�eno na slede�i na�in:<br><ul><li><b>KVIrc je "
+#~ "besplatan</b> , koristite ga i zabavljajte se! <b> :-)</b></li><li>Ako "
+#~ "koristite <b> bilo koji</b> deo KVIrc-a u Va�em li�nom projektu MORATE da "
+#~ "izdate taj projekat sa istom licencom</li></ul><br>\"Pravilo\" verzije "
+#~ "ove licence je u boxu ispod.<br>"
+
+#, fuzzy
+#~ msgid ""
+#~ "Oops... can't find the license file.\n"
+#~ "It MUST be included in the distribution...\n"
+#~ "Please report to <pragma at kvirc dot net>"
+#~ msgstr ""
+#~ "Ups...ne mogu da pronadjem fajl licence...\n"
+#~ "Fajl MORA biti uklju�en u distribuciju...\n"
+#~ "molim posaljite report na <pragma at kvirc dot net>"
+
+#, fuzzy
+#~ msgid "KVIrc Setup"
+#~ msgstr "KVIrc pode�avanje"
+
+#, fuzzy
+#~ msgid "<b>Nickname:</b>"
+#~ msgstr "Nickname (nadimak):"
+
+#, fuzzy
+#~ msgid ""
+#~ "<p>Please choose a folder for KVIrc to store its settings and other data, "
+#~ "and another for downloaded files. Make sure that you have permission to "
+#~ "write to both folders.<br><br>The suggested locations are fine in most "
+#~ "cases, so if you don't know what is this about, just click \"<b>Next</b>"
+#~ "\".<br><br>If you had a previous version of KVIrc installed, you can "
+#~ "choose the existing directory for the settings, and your configuration "
+#~ "will be preserved.</p>"
+#~ msgstr ""
+#~ "Morate sad da izaberete direktorijum.<br>KVIrc ce ga koristiti da u njemu "
+#~ "sa�uva pode�avanja a takodje i svu�ene fajlove.<br>Budite sigurni da "
+#~ "imate dozvolu za pisanje u tom direktorijumu.<br>Savet: izaberite putanju "
+#~ "koju �ete biti u mogu�nosti da kasnije brzo prona�ete<br>"
+
+#, fuzzy
+#~ msgid "Application Folders"
+#~ msgstr "Fascikla pode�avanja"
+
+#, fuzzy
+#~ msgid "<b>Store configuration in folder:</b>"
+#~ msgstr "Fascikla pode�avanja"
+
+#, fuzzy
+#~ msgid "<b>Download files to folder:</b>"
+#~ msgstr "Fascikla pode�avanja"
+
+#, fuzzy
+#~ msgid "Default Theme"
+#~ msgstr "Predefinisani TTL"
+
+#, fuzzy
+#~ msgid ""
+#~ "<p>Setup can make a shortcut to the KVIrc program on your desktop, so you "
+#~ "can access it quickly.</p><p>Do you want this shortcut to be created?</p>"
+#~ msgstr ""
+#~ "KVIrc mo�e da napravi pre�icu do KVIrc programa na Va�em desktop-u , "
+#~ "dakle bi�ete u mogu�nosti da ga pokrenete brzo.<br>Da li �elite da bude "
+#~ "napravljena pre�ica ?"
+
+#, fuzzy
+#~ msgid "&Yes"
+#~ msgstr "Da"
+
+#, fuzzy
+#~ msgid "&No"
+#~ msgstr "Ne"
+
+#, fuzzy
+#~ msgid "URL Handlers"
+#~ msgstr "Dodaj manipulator"
+
+#, fuzzy
+#~ msgid ""
+#~ "<p><h2>Setup Complete</h2>Setup now has all the necessary information to "
+#~ "configure KVIrc.</p><p>Please click the \"<b>Finish</b>\" button to save "
+#~ "your choices and start KVIrc.</p>"
+#~ msgstr ""
+#~ "<b>Prikupljanje informacija zavr�eno</b><br><br>Sve informacije su "
+#~ "prikupljene uspe�no.<br>Molim kliknite na \"Zavr�i\" da stvarno izvr�ite "
+#~ "operacije i pokrenete KVIrc."
+
+#, fuzzy
+#~ msgid "Finish Setup"
+#~ msgstr "Zavr�i"
+
+#, fuzzy
+#~ msgid "Choose a Configuration Folder - KVIrc Setup"
+#~ msgstr "Izaberi fajl za ponudu"
+
+#, fuzzy
+#~ msgid "Choose a Download Folder - KVIrc Setup"
+#~ msgstr "Izaberi fajl za ponudu"
+
+#, fuzzy
+#~ msgid ""
+#~ "Cannot create directory %s.\n"
+#~ "You may not have write permission for that path. Please go back and "
+#~ "choose another directory."
+#~ msgstr ""
+#~ "Ups...ne mogu da napravim direktorijum %s, verovatno nedostaju dozvole za "
+#~ "pisanje negde u putanji. Molim vratite se i izaberite drugi direktorijum."
+
+#, fuzzy
+#~ msgid "Can't add a null object"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Invalid insertion Policy"
+#~ msgstr "Pogre�an ID tajmera"
+
+#, fuzzy
+#~ msgid "Not a widget object"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Can't find the tab "
+#~ msgstr "Ne mogu da prona�em ikonu '%s'"
+
+#, fuzzy
+#~ msgid "Unknown position 'Q%'"
+#~ msgstr "Nepoznata funkcija"
+
+#~ msgid "Invalid timeout (%s)"
+#~ msgstr "Pogre�no vreme isteka (%s)"
+
+#~ msgid "Another connection in progress"
+#~ msgstr "Jo� jedna konekcija je u toku"
+
+#~ msgid "Invalid port specified: the kernel will choose one"
+#~ msgstr "Pogre�no definisan port: kernel �e da izabere jedan"
+
+#~ msgid "No IPV6 support in this executable"
+#~ msgstr "Nema IPV6 podr�ke u ovom KVIrc izvr�nom fajlu"
+
+#~ msgid "Invalid IP address specified (%s)"
+#~ msgstr "Pogre�no navedena IP adesa (%s)"
+
+#~ msgid "Socket creation failed"
+#~ msgstr "Neuspe�no kreiranje priklju�ka"
+
+#~ msgid "Invalid socket address"
+#~ msgstr "Pogre�na adresa priklju�ka"
+
+#~ msgid "Bind failure"
+#~ msgstr "Gre�ka u vezivanju (bind)"
+
+#~ msgid "Listen failure"
+#~ msgstr "Slu�anje neuspe�no"
+
+#~ msgid "unknown"
+#~ msgstr "nepoznat"
+
+#~ msgid "No socket object specified"
+#~ msgstr "Nije naveden objekat priklju�ka"
+
+#~ msgid "Invalid socket object specified (it doesn't inherit from socket)"
+#~ msgstr "Neispravno naveden objekat priklju�ka (nije nasle�en od priklju�ka)"
+
+#~ msgid "There is no connection to accept!"
+#~ msgstr "Nema konekcije za prihvatanje"
+
+#~ msgid "Invalid port (%s)"
+#~ msgstr "Neispravan port (%s)"
+
+#~ msgid "Invalid ip address (%s)"
+#~ msgstr "Neispravna IP adresa (%s)"
+
+#~ msgid "Failed to create the socket"
+#~ msgstr "Ne mogu da napravim priklju�ak"
+
+#~ msgid "Failed to setup a nonblocking socket"
+#~ msgstr "Nisam uspeo da postavim neblokiraju�i priklju�ak"
+
+#~ msgid "Connect failure: %s"
+#~ msgstr "Povezivanje neuspe�no: %s"
+
+#~ msgid "Connect attempt timed out"
+#~ msgstr "Isteklo je vreme za povezivanje"
+
+#~ msgid "Can't start the DNS thread"
+#~ msgstr "Ne mogu da pokrenem DNS traganje"
+
+#~ msgid ""
+#~ "Too much unprocessed incoming data (you've left this socket unmanaged ?)"
+#~ msgstr ""
+#~ "Previ�e neobra�enih dolaze�ih podataka (ostavili ste ovaj priklju�ak bez "
+#~ "upravljanja ?)"
+
+#, fuzzy
+#~ msgid "Can't add a non - popupmenu object"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Unknown text position '%Q'"
+#~ msgstr "Nepoznata funkcija"
+
+#, fuzzy
+#~ msgid "Invalid selection mode '%Q' assuming single"
+#~ msgstr "Pogre�an pravac za ovu ma�inu"
+
+#, fuzzy
+#~ msgid "Invalid resize mode defaulting to Auto"
+#~ msgstr "Neispravan koder '%s': predefini�em u 'adpcm'"
+
+#~ msgid "Empty string"
+#~ msgstr "Prazan string"
+
+#~ msgid "Empty filename string"
+#~ msgstr "Prazan string imena fajla"
+
+#~ msgid "No such open mode: %s"
+#~ msgstr "Nema takvog moda otvaranja: %s"
+
+#~ msgid "File is not open !"
+#~ msgstr "Fajl nije otvoren !"
+
+#~ msgid "Negative file index supplied !"
+#~ msgstr "Dobavljen negativan indeks fajla"
+
+#~ msgid "Argument to long, using only first char"
+#~ msgstr "Argument je preduga�ak, koristim samo prvi znak"
+
+#~ msgid "Argument length is 0 - empty string"
+#~ msgstr "Du�ina argumenta je 0 - prazan string"
+
+#~ msgid "Write error occured !"
+#~ msgstr "Dogodila se gre�ka u pisanju !"
+
+#~ msgid "Read error occured !"
+#~ msgstr "Dogodila se gre�ka u �itanju !"
+
+#~ msgid "An error occured !"
+#~ msgstr "Dogodila se gre�ka !"
+
+#~ msgid "Length is a negative number !"
+#~ msgstr "Du�ina je negativan broj !"
+
+#~ msgid "Nothing to write"
+#~ msgstr "Nema ni�ta za pisanje"
+
+#, fuzzy
+#~ msgid "No such open mode: '%Q'"
+#~ msgstr "Nema takvog moda otvaranja: %s"
+
+#, fuzzy
+#~ msgid "File is not open!"
+#~ msgstr "Fajl nije otvoren !"
+
+#, fuzzy
+#~ msgid "One of the geometry array parameters didn't evaluate to an integer"
+#~ msgstr "Levi operator nije broj"
+
+#, fuzzy
+#~ msgid "The first parameter didn't evaluate to an array nor an integer"
+#~ msgstr "Levi operator nije broj"
+
+#, fuzzy
+#~ msgid "One of the array parameters didn't evaluate to an integer"
+#~ msgstr "Levi operator nije broj"
+
+#, fuzzy
+#~ msgid "Unknown orientation"
+#~ msgstr "Nepoznata funkcija"
+
+#, fuzzy
+#~ msgid "Invalid mode '%Q'"
+#~ msgstr "Pogre�no vreme isteka"
+
+#, fuzzy
+#~ msgid "Unknown mode "
+#~ msgstr "Nepoznat mod"
+
+#, fuzzy
+#~ msgid "Unknown segment style "
+#~ msgstr "Nepoznato poravnanje: %s"
+
+#, fuzzy
+#~ msgid "Failed to find the widget to wrap"
+#~ msgstr "Ne mogu da pove�em priklju�ak"
+
+#~ msgid "Non-negative integer length expected as parameter"
+#~ msgstr "Ne-negativna du�ina celog broja je o�ekivana kao parametar"
+
+#~ msgid "Non-negative integer index expected as first parameter"
+#~ msgstr "Ne-negativan indeks celog broja je o�ekivana kao prvi parametar"
+
+#~ msgid "Non-negative integer length expected as second parameter"
+#~ msgstr "Ne-negativna du�ina celog broja je o�ekivana kao drugi parametar"
+
+#, fuzzy
+#~ msgid "Can't find the widget object to add (%s)"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Invalid object"
+#~ msgstr "Pogre�no vreme isteka"
+
+#, fuzzy
+#~ msgid "Can't fill non-widget object"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Invalid x offset parameter (%s)"
+#~ msgstr "Pogre�an parametar"
+
+#, fuzzy
+#~ msgid "Invalid y offset parameter (%s)"
+#~ msgstr "Pogre�an parametar"
+
+#, fuzzy
+#~ msgid "Can't find the specified file '%s'."
+#~ msgstr "Ne mogu da na�em multimedijalni fajl %s"
+
+#, fuzzy
+#~ msgid "I can't find the specified file %Q."
+#~ msgstr "Ne mogu da na�em multimedijalni fajl %s"
+
+#, fuzzy
+#~ msgid "No such line number"
+#~ msgstr "Nema takvog tajmera (%s)"
+
+#, fuzzy
+#~ msgid "Unknown word wrap '%Q'"
+#~ msgstr "Nepoznat operator"
+
+#, fuzzy
+#~ msgid "One of the colors array parameters didn't evaluate to an integer"
+#~ msgstr "Levi operator nije broj"
+
+#, fuzzy
+#~ msgid "Unknown text format '%Q'"
+#~ msgstr "Nepoznata funkcija"
+
+#, fuzzy
+#~ msgid " I can't find the specified file '%Q'."
+#~ msgstr "Ne mogu da na�em multimedijalni fajl %s"
+
+#, fuzzy
+#~ msgid " I cannot read the file %Q'."
+#~ msgstr "I ne mogu da otvorim taj fajl"
+
+#, fuzzy
+#~ msgid "Unknown alignment '%Q'"
+#~ msgstr "Nepoznato poravnanje: %s"
+
+#, fuzzy
+#~ msgid "Unknown auto formatting mode '%Q'"
+#~ msgstr "Nepoznat operator"
+
+#, fuzzy
+#~ msgid "Unknown vertical alignment '%Q'"
+#~ msgstr "Nepoznato poravnanje: %s"
+
+#, fuzzy
+#~ msgid "Unknown dock area '%Q'"
+#~ msgstr "Nepoznat mod"
+
+#, fuzzy
+#~ msgid "Class is undefined"
+#~ msgstr "Klasa %s nije definisana"
+
+#, fuzzy
+#~ msgid "Processing aborted"
+#~ msgstr "Obra�ujem listu %Q"
+
+#, fuzzy
+#~ msgid "XML support not available in the Qt library"
+#~ msgstr "Mogu�nost nije dostupna"
+
+#~ msgid "Invalid width parameter"
+#~ msgstr "Neispravan parametar �irine"
+
+#~ msgid "Invalid height parameter"
+#~ msgstr "Neispravan parametar visine"
+
+#~ msgid "The parameters do not define a rectangle"
+#~ msgstr "Parametri ne defini�u pravougaonik"
+
+#~ msgid "The parameters do not define a point"
+#~ msgstr "Parametri ne defini�u ta�ku"
+
+#~ msgid "The parameters are do not define a valid size"
+#~ msgstr "Parametri ne defini�u va�e�u veli�inu"
+
+#, fuzzy
+#~ msgid "Invalid size parameter (%s)"
+#~ msgstr "Pogre�an parametar"
+
+#, fuzzy
+#~ msgid "Unknown widget type: %s"
+#~ msgstr "Nepoznato poravnanje: %s"
+
+#, fuzzy
+#~ msgid "Can't find the widget object assuming 0"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Parent must be a widget object"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Invalid parameters"
+#~ msgstr "Pogre�an parametar"
+
+#, fuzzy
+#~ msgid "Invalid Parameters"
+#~ msgstr "Pogre�an parametar"
+
+#, fuzzy
+#~ msgid "Invalid row parameter (%s)"
+#~ msgstr "Pogre�an parametar"
+
+#, fuzzy
+#~ msgid "Invalid column parameter (%s)"
+#~ msgstr "Pogre�an parametar ivice"
+
+#, fuzzy
+#~ msgid "Unknown widget flag '%Q'"
+#~ msgstr "Nepoznato poravnanje: %s"
+
+#, fuzzy
+#~ msgid "Unknown style '%Q'"
+#~ msgstr "nepoznata vrsta DCC-a '%s'"
+
+#, fuzzy
+#~ msgid "Unknown alignment: '%Q'"
+#~ msgstr "Nepoznato poravnanje: %s"
+
+#, fuzzy
+#~ msgid "Unknown frame style"
+#~ msgstr "Nepoznat okvir / stila senke: %s"
+
+#, fuzzy
+#~ msgid "Unknown echo mode %Q"
+#~ msgstr "Nepoznat eho mod"
+
+#, fuzzy
+#~ msgid "The parent-widget isn't a MainWindow."
+#~ msgstr "Trenutni prozor nije kanal"
+
+#, fuzzy
+#~ msgid "pix '%Q' doesn't exists"
+#~ msgstr "Fajl pode�avanja sa ID-om '%s' nije otvoren"
+
+#, fuzzy
+#~ msgid "Doesn't a widget object"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Unknown alignment"
+#~ msgstr "Nepoznato poravnanje: %s"
+
+#, fuzzy
+#~ msgid "Unknown orientation: "
+#~ msgstr "Nepoznata funkcija"
+
+#, fuzzy
+#~ msgid "Not Enough Parameters"
+#~ msgstr "Nema dovoljno parametara"
+
+#, fuzzy
+#~ msgid "Unknown tickmark '%Q'"
+#~ msgstr "Nepoznata komanda"
+
+#, fuzzy
+#~ msgid "Unknown orientation '%Q'"
+#~ msgstr "Nepoznata funkcija"
+
+#, fuzzy
+#~ msgid "Context sensitive help"
+#~ msgstr "Razlikuj velika i mala slova"
+
+#, fuzzy
+#~ msgid "&Replace"
+#~ msgstr "odgovoreno"
+
+#, fuzzy
+#~ msgid "Find & Repalce"
+#~ msgstr "odgovoreno"
+
+#~ msgid "Find"
+#~ msgstr "Na�i"
+
+#, fuzzy
+#~ msgid "Replace with"
+#~ msgstr "odgovoreno"
+
+#, fuzzy
+#~ msgid "&Findnext"
+#~ msgstr "Na�i slede�e"
+
+#, fuzzy
+#~ msgid "&Replace(WIP)"
+#~ msgstr "odgovoreno"
+
+#~ msgid "orphan_servers"
+#~ msgstr "orphan_servers"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s doesn't look like a servers.ini file.\n"
+#~ "Import failed."
+#~ msgstr "%s ne izgleda kao server.ini fajl"
+
+#~ msgid "Choose a servers.ini file"
+#~ msgstr "Izaberi server.ini fajl"
+
+#, fuzzy
+#~ msgid "URL Selection"
+#~ msgstr "selekcija"
+
+#, fuzzy
+#~ msgid "Failed to start the server list transfer :("
+#~ msgstr "Ne mogu da po�nem da slu�am"
+
+#, fuzzy
+#~ msgid "No servers imported"
+#~ msgstr "obave�tenje servera"
+
+#, fuzzy
+#~ msgid "Import from servers.ini"
+#~ msgstr "Spoj listu iz server.ini"
+
+#, fuzzy
+#~ msgid "Import from http://www.mirc.co.uk/servers.ini"
+#~ msgstr "Spoj listu iz server.ini"
+
+#, fuzzy
+#~ msgid ""
+#~ "Can't set the current avatar to '%Q': failed to start the http transfer"
+#~ msgstr ""
+#~ "Ne mogu da postavim trenutni avatar na '%s' (ne mogu da u�itam sliku): "
+#~ "nije poslata poruka"
+
+#, fuzzy
+#~ msgid "Can't set the current avatar to '%Q': can't load the image"
+#~ msgstr ""
+#~ "Ne mogu da postavim trenutni avatar na '%s' (ne mogu da u�itam sliku): "
+#~ "nije poslata poruka"
+
+#, fuzzy
+#~ msgid "Invalid timeout specified, using default"
+#~ msgstr "Pogre�no definisan odziv , koristim predefinisano"
+
+#, fuzzy
+#~ msgid "Can't add a file offer for file %Q (huh ? file not readable ?)"
+#~ msgstr ""
+#~ "Ne mogu da dodam ponudu fajla za fajl %s (huh ? fajl nije �itljiv ?)"
+
+#, fuzzy
+#~ msgid "Added %d secs file offer for file %Q (%Q) and receiver %Q"
+#~ msgstr "Dodato %d sekundi ponude fajla za fajl %s (%s) i prima�a %s"
+
+#, fuzzy
+#~ msgid "Notifying avatar '%Q' to %Q"
+#~ msgstr "Avatar obave�tenje '%s' za %s"
+
+#, fuzzy
+#~ msgid "Unknown "
+#~ msgstr "Nepoznato"
+
+#, fuzzy
+#~ msgid "Invalid DCOP parameter syntax"
+#~ msgstr "Pogre�an parametar"
+
+#, fuzzy
+#~ msgid "The specified parameter is not an integer"
+#~ msgstr "Naveden prozor nije kanal"
+
+#, fuzzy
+#~ msgid "Unsupported DCOP parameter type %s"
+#~ msgstr "Nepodr�an pravac"
+
+#, fuzzy
+#~ msgid "DCOP call failed"
+#~ msgstr "listen() poziv neuspe�an"
+
+#~ msgid "Submenu"
+#~ msgstr "Podmeni"
+
+#, fuzzy
+#~ msgid "External Menu"
+#~ msgstr "Spolja�nji meni"
+
+#~ msgid "Separator"
+#~ msgstr "Razdvaja�"
+
+#~ msgid "Label"
+#~ msgstr "Labela"
+
+#~ msgid "### Epilogue ###"
+#~ msgstr "### Zaklju�ak ###"
+
+#~ msgid "Epilogue"
+#~ msgstr "Zaklju�ak"
+
+#~ msgid "### Prologue ###"
+#~ msgstr "### Uvod ###"
+
+#~ msgid "Popup name"
+#~ msgstr "Naziv iska�u�eg menija"
+
+#~ msgid "Type"
+#~ msgstr "Vrsta"
+
+#~ msgid "Text:"
+#~ msgstr "Tekst:"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center><b>Visible text</b><br>May contain identifiers that will be "
+#~ "evaluated at popup call time.<br>For labels, this text can contain also "
+#~ "limited HTML tags.</center>"
+#~ msgstr ""
+#~ "<center><b>Vidljiv tekst</b><br>Mo�e sadr�ati identifikatore koji ce biti "
+#~ "vredni za vreme pozivanja popup-a.<br>Za labele ovaj tekst mo�e imati "
+#~ "takodje ograni�ene html tagove.</center>"
+
+#~ msgid "Condition:"
+#~ msgstr "Uslov:"
+
+#~ msgid ""
+#~ "<center><b>Boolean condition</b><br>Will be evaluated at popup call time "
+#~ "in order to decide if this entry has to be shown.<br>An empty condition "
+#~ "evaluates to true.</center>"
+#~ msgstr ""
+#~ "<center><b>Boolean uslov</b><br>Ovo �e biti upotrebljeno u vreme "
+#~ "pozivanja popup-a u slu�aju da treba odlu�iti da li ovaj ulaz treba biti "
+#~ "pokazan.<br> Prazan uslov se tretira kao ta�an (Buulean true).</center>"
+
+#~ msgid "Icon:"
+#~ msgstr "Ikona:"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center><b>Icon identifier</b><br>May be an internal icon ID, an absolute "
+#~ "path or a relative path.<br>Portable scripts should never use absolute "
+#~ "paths.</center>"
+#~ msgstr ""
+#~ "<center><b>Identifikator Ikone</b><br>Mo�e biti ID interne ikone, ili "
+#~ "neka apsolutna ili relativna putanja<br>Prenosiva skripta ne bi trebalo "
+#~ "da koristi apsolutne putanje</center>"
+
+#~ msgid "External menu:"
+#~ msgstr "Spolja�nji meni:"
+
+#~ msgid ""
+#~ "<center><b>External menu name</b><br>This allows to nest externally "
+#~ "defined popup menus. The popup menu with the specified name will be "
+#~ "looked up at menu setup time.</center>"
+#~ msgstr ""
+#~ "<center><b>Ime spoljnog menija</b><br>Ovo omogu�ava u�tedu na definisanju "
+#~ "spoljnih iska�ucih menija. Iska�u�i meni sa navedenim imenom �e biti "
+#~ "zaklju�an u setup vremenu menija.</center>"
+
+#, fuzzy
+#~ msgid "Item Id:"
+#~ msgstr "Stvarno ime"
+
+#, fuzzy
+#~ msgid "New Separator Below"
+#~ msgstr "Nov razdvaja� ispod"
+
+#, fuzzy
+#~ msgid "New Separator Above"
+#~ msgstr "Nov razdvaja� iznad"
+
+#, fuzzy
+#~ msgid "New Separator Inside"
+#~ msgstr "Nov razdvaja� unutar"
+
+#, fuzzy
+#~ msgid "New Label Below"
+#~ msgstr "Nova labela ispod"
+
+#, fuzzy
+#~ msgid "New Label Above"
+#~ msgstr "Nova labela iznad"
+
+#, fuzzy
+#~ msgid "New Label Inside"
+#~ msgstr "Nova labela unutar"
+
+#, fuzzy
+#~ msgid "New Item Below"
+#~ msgstr "Nova stavka ispod"
+
+#, fuzzy
+#~ msgid "New Item Above"
+#~ msgstr "Nova stavka iznad"
+
+#, fuzzy
+#~ msgid "New Item Inside"
+#~ msgstr "Nova stavka unutar"
+
+#, fuzzy
+#~ msgid "New Menu Below"
+#~ msgstr "Nov meni ispod"
+
+#, fuzzy
+#~ msgid "New Menu Above"
+#~ msgstr "Nov meni iznad"
+
+#, fuzzy
+#~ msgid "New Menu Inside"
+#~ msgstr "Nov meni unutar"
+
+#, fuzzy
+#~ msgid "New External Menu Below"
+#~ msgstr "Nov spoljni meni ispod"
+
+#, fuzzy
+#~ msgid "New External Menu Above"
+#~ msgstr "Nov spoljni meni iznad"
+
+#, fuzzy
+#~ msgid "New External Menu Inside"
+#~ msgstr "Nov spoljni meni unutar"
+
+#, fuzzy
+#~ msgid "Cu&t"
+#~ msgstr "Iseci"
+
+#, fuzzy
+#~ msgid "&Copy"
+#~ msgstr "Kopiraj"
+
+#, fuzzy
+#~ msgid "&Paste Below"
+#~ msgstr "Prenesi ispod"
+
+#, fuzzy
+#~ msgid "Paste Above"
+#~ msgstr "Prenesi iznad"
+
+#, fuzzy
+#~ msgid "Paste Inside"
+#~ msgstr "Prenesi unutar"
+
+#, fuzzy
+#~ msgid "New Menu Prologue"
+#~ msgstr "Nov meni ispod"
+
+#, fuzzy
+#~ msgid "New Menu Epilogue"
+#~ msgstr "Nov meni ispod"
+
+#, fuzzy
+#~ msgid "&Export All To..."
+#~ msgstr "Ukloni ovaj alijas"
+
+#, fuzzy
+#~ msgid "&Export selected To..."
+#~ msgstr "Izvezi selektovano"
+
+#, fuzzy
+#~ msgid "&New Popup"
+#~ msgstr "Iska�u�i meni"
+
+#, fuzzy
+#~ msgid "Re&move Popup"
+#~ msgstr "Ukloni ovaj iska�u�i meni"
+
+#, fuzzy
+#~ msgid "&Export Popup To..."
+#~ msgstr "Iska�u�i meniji"
+
+#, fuzzy
+#~ msgid "Unable to write to the popup file."
+#~ msgstr "Neuspe�no pisanje u fajl %s"
+
+#, fuzzy
+#~ msgid "Popup Editor"
+#~ msgstr "Naziv iska�u�eg menija"
+
+#~ msgid "Missing both encrypt and decrypt key: at least one is needed"
+#~ msgstr ""
+#~ "Nedostaju oba kriptuju�a i dekriptuju�a klju�a: najmanje jedan je potreban"
+
+#~ msgid "Error 0: Success ?"
+#~ msgstr "Gre�aka 0: Uspe�no ?"
+
+#~ msgid "Unsupported crypt mode"
+#~ msgstr "Nepodr�an mod kriptovanja"
+
+#~ msgid "Unsupported direction"
+#~ msgstr "Nepodr�an pravac"
+
+#~ msgid "Unsupported key length"
+#~ msgstr "Nepodr�ana du�ina klju�a"
+
+#~ msgid "Bad key data"
+#~ msgstr "Lo�i podaci klju�a"
+
+#~ msgid "Engine not initialized"
+#~ msgstr "Ma�ina nije inicijalizovana"
+
+#~ msgid "Invalid direction for this engine"
+#~ msgstr "Pogre�an pravac za ovu ma�inu"
+
+#~ msgid "Corrupted message data or invalid decrypt key"
+#~ msgstr "O�te�eni podaci poruke ili pogre�an klju� za de�ifrovanje"
+
+#~ msgid "Unknown error"
+#~ msgstr "Nepoznata gre�ka"
+
+#~ msgid "Ops...encrypt cipher not initialized"
+#~ msgstr "Ups...kriptuju�a �ifra nije inicijalizovana"
+
+#~ msgid "Data buffer too long"
+#~ msgstr "Bafer podataka je preduga�ak"
+
+#~ msgid "Ops...decrypt cipher not initialized"
+#~ msgstr "Ups...dekriptuju�a �ifra nije inicijalizovana"
+
+#~ msgid "The message is not a hexadecimal string: this is not my stuff"
+#~ msgstr "Poruka nije heksadecimalni znakovni niz: ovo nije moja stvar"
+
+#~ msgid "The message is not a base64 string: this is not my stuff"
+#~ msgstr "Poruka nije base64 znakovni niz: ovo nije moja stvar"
+
+#~ msgid ""
+#~ "Cryptographic engine based on the\n"
+#~ "Advanced Encryption Standard (AES)\n"
+#~ "algorithm called Rijndael.\n"
+#~ "The text is first encrypted with rijndael\n"
+#~ "and then converted to %s notation.\n"
+#~ "The keys used are %d bit long and will be padded\n"
+#~ "with zeros if you provide shorter ones.\n"
+#~ "If only one key is provided, this engine\n"
+#~ "will use it for both encrypting and decrypting.\n"
+#~ "See the rijndael module documentation\n"
+#~ "for more info on the algorithm used.\n"
+#~ msgstr ""
+#~ "Kriptografska ma�ina bazirana na\n"
+#~ "Advanced Encryption Standard (AES)\n"
+#~ "algoritmu zvanom Rijndael.\n"
+#~ "Tekst je prvo �ifrovan sa rijndael\n"
+#~ "a onda konvertovan u %s notaciju.\n"
+#~ "Klju�evi koji su kori��eni su %d bita duga�ki i bi�e umetnuti\n"
+#~ "sa nulama ako navedete kra�e klju�eve.\n"
+#~ "Ako je samo jedan klju� naveden, ova ma�ina\n"
+#~ "�e ga koristiti i za �ifrovanje i za de�ifrovanje.\n"
+#~ "Pogledajte dokumentaciju rijndael modula\n"
+#~ "za vi�e informacija o kori��enom algoritmu.\n"
+
+#~ msgid "hexadecimal"
+#~ msgstr "heksadecimalno"
+
+#~ msgid "base64"
+#~ msgstr "base64"
+
+#, fuzzy
+#~ msgid ""
+#~ "Popular cryptographic engine based on the\n"
+#~ "old Blowfish encryption algorithm.\n"
+#~ "The text is first encrypted with Blowfish \n"
+#~ "and then converted to base64 notation.\n"
+#~ "The keys used have variable length and\n"
+#~ "are specified as character strings.\n"
+#~ "You can specify keys long up to 56 bytes (448 bits).\n"
+#~ "If only one key is provided, this engine\n"
+#~ "will use it for both encrypting and decrypting.\n"
+#~ "This engine works in ECB mode by default:\n"
+#~ "if you want to use CBC mode you must prefix\n"
+#~ "your key(s) with \"cbc:\".\n"
+#~ msgstr ""
+#~ "Kriptografska ma�ina bazirana na\n"
+#~ "Advanced Encryption Standard (AES)\n"
+#~ "algoritmu zvanom Rijndael.\n"
+#~ "Tekst je prvo �ifrovan sa rijndael\n"
+#~ "a onda konvertovan u %s notaciju.\n"
+#~ "Klju�evi koji su kori��eni su %d bita duga�ki i bi�e umetnuti\n"
+#~ "sa nulama ako navedete kra�e klju�eve.\n"
+#~ "Ako je samo jedan klju� naveden, ova ma�ina\n"
+#~ "�e ga koristiti i za �ifrovanje i za de�ifrovanje.\n"
+#~ "Pogledajte dokumentaciju rijndael modula\n"
+#~ "za vi�e informacija o kori��enom algoritmu.\n"
+
+#, fuzzy
+#~ msgid "Choose the file to share"
+#~ msgstr "Izaberi fajlove za slanje"
+
+#~ msgid "Outgoing traffic"
+#~ msgstr "Odlaze�i saobra�aj"
+
+#~ msgid "Incoming traffic"
+#~ msgstr "Dolaze�i saobra�aj"
+
+#~ msgid "[IDENT]: Service shutdown (spontaneous)"
+#~ msgstr "[IDENT]: Ga�enje servisa (spontano)"
+
+#~ msgid "[IDENT]: Service shutdown (on request)"
+#~ msgstr "[IDENT]: Ga�enje servisa (na zahtev)"
+
+#~ msgid "The current window is not a channel"
+#~ msgstr "Trenutni prozor nije kanal"
+
+#, fuzzy
+#~ msgid "Can't find the window with id '%Q'"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "The specified window (%Q) is not a channel"
+#~ msgstr "Navedeni prozor (%s) nije kanal"
+
+#, fuzzy
+#~ msgid "No action name/index specified"
+#~ msgstr "Nije navedeno ime opcije"
+
+#, fuzzy
+#~ msgid "The action parameter didn't evaluate to an index"
+#~ msgstr "Levi operator nije broj"
+
+#, fuzzy
+#~ msgid "The toolbar does not contain the specified item"
+#~ msgstr "Nije navedeno ime opcije"
+
+#, fuzzy
+#~ msgid "The action \"%Q\" doesn't exist"
+#~ msgstr "Fajl pode�avanja sa ID-om '%s' nije otvoren"
+
+#, fuzzy
+#~ msgid "KVIrc"
+#~ msgstr "&Pove�aj KVIrc przor"
+
+#, fuzzy
+#~ msgid "Context"
+#~ msgstr "Pove�i se"
+
+#~ msgid "&Configure KVIrc..."
+#~ msgstr "&Opcije"
+
+#, fuzzy
+#~ msgid "&About KVIrc"
+#~ msgstr "O &KVIrc-u..."
+
+#, fuzzy
+#~ msgid "Un&dock"
+#~ msgstr "&Pove�aj"
+
+#~ msgid "&Quit"
+#~ msgstr "&Zavr�i"
+
+#~ msgid "Nothing is happening..."
+#~ msgstr "Ni�ta se ne de�ava..."
+
+#~ msgid "Just idling..."
+#~ msgstr "Samo neaktivan..."
+
+#~ msgid "Dum de dum de dum..."
+#~ msgstr "Dum dum dum..."
+
+#, fuzzy
+#~ msgid "Hey man... do something!"
+#~ msgstr "Hej �ove�e...radi ne�to!"
+
+#~ msgid "Umpf!"
+#~ msgstr "Umpf!"
+
+#~ msgid "Silence speaking"
+#~ msgstr "Tihi razgovor"
+
+#, fuzzy
+#~ msgid "Are ya here?"
+#~ msgstr "Da li si ovde ?"
+
+#, fuzzy
+#~ msgid "The world has stopped?"
+#~ msgstr "Svet je zaustavljen ?"
+
+#, fuzzy
+#~ msgid "Everything is all right"
+#~ msgstr "Sve je u redu"
+
+#~ msgid "idle()"
+#~ msgstr "neaktivnost()"
+
+#, fuzzy
+#~ msgid "It's so cold here..."
+#~ msgstr "Tako je hladno ovde...."
+
+#, fuzzy
+#~ msgid "Do not disturb... watching TV"
+#~ msgstr "Ne uznemiravaj....gledam TV"
+
+#~ msgid "Just vegetating"
+#~ msgstr "Upravo vegetiram"
+
+#, fuzzy
+#~ msgid "Hey... are ya sure that your network is up?"
+#~ msgstr "Hej...da li si siguran da ti je mre�a podignuta ?"
+
+#~ msgid "Seems like the world has stopped spinning"
+#~ msgstr "Izgleda da je svet prestao da se okre�e"
+
+#~ msgid "This silence is freaking me out!"
+#~ msgstr "Ti�ina me �udno tera napolje!"
+
+#~ msgid "Mieeeeeowww!"
+#~ msgstr "Mijaoooooooo!"
+
+#~ msgid "idle idle idle idle!"
+#~ msgstr "Mirno mirno mirno!"
+
+#, fuzzy
+#~ msgid "Hide Window"
+#~ msgstr "&Terminal prozor"
+
+#, fuzzy
+#~ msgid "Show Window"
+#~ msgstr "&Kazi u prozor"
+
+#~ msgid "A really lame text transformation engine :D"
+#~ msgstr "Ma�ina za tranformisanje stvarno lamerskog teksta :D"
+
+#, fuzzy
+#~ msgid "A really lame text transformation engine: Light Version."
+#~ msgstr "Ma�ina za tranformisanje stvarno lamerskog teksta :D"
+
+#, fuzzy
+#~ msgid "The window with id '%s' does not exist"
+#~ msgstr "Fajl pode�avanja sa ID-om '%s' nije otvoren"
+
+#~ msgid "Window type or 'all' expected as first parameter"
+#~ msgstr "Vrsta prozora ili 'all' o�ekivano kao prvi parametar"
+
+#, fuzzy
+#~ msgid "Invalid IRC context id '%Q'"
+#~ msgstr "Pogre�an ID IRC konteksta '%s'"
+
+#, fuzzy
+#~ msgid ""
+#~ "The specified IRC context is not valid: creating a context free window"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#, fuzzy
+#~ msgid "The specified window is not of type \"userwnd\""
+#~ msgstr "Naveden prozor nije kanal"
+
+#, fuzzy
+#~ msgid "Background not found %Q "
+#~ msgstr "Boja pozadine"
+
+#, fuzzy
+#~ msgid "Failed to allocate the specified crypt engine"
+#~ msgstr "Ne mogu da otvorim fajl %Q"
+
+#, fuzzy
+#~ msgid "This executable has been compiled without crypt support"
+#~ msgstr "Ovaj KVIrc je kompajliran bez SSL podr�ke"
+
+#, fuzzy
+#~ msgid "User Registration Wizard - KVIrc"
+#~ msgstr "akcija korisnika"
+
+#, fuzzy
+#~ msgid "Step 1: Entry Name"
+#~ msgstr "Stvarno ime"
+
+#, fuzzy
+#~ msgid "Store an avatar for this user"
+#~ msgstr "Postavi zadnji avatar kao predefinisani za registrovanog korisnika"
+
+#, fuzzy
+#~ msgid "Add this user to the notify list"
+#~ msgstr "Nema korisnika u listi obave�tenja"
+
+#, fuzzy
+#~ msgid "Nickname 2:"
+#~ msgstr "Nadimak 2"
+
+#, fuzzy
+#~ msgid "Step 4: Notify List"
+#~ msgstr "Lista obave�tenja"
+
+#, fuzzy
+#~ msgid "Registration Complete"
+#~ msgstr "login operacija kompletna"
+
+#~ msgid "User already registered: found exact name match"
+#~ msgstr "Korisnik je ve� registrovan: nadjeno tacno ime da se poklapa"
+
+#, fuzzy
+#~ msgid "Mask %Q is already used to identify user %s"
+#~ msgstr "Maska %s je ve� iskori��ena da identifikuje korisnika %s"
+
+#, fuzzy
+#~ msgid "User not found (%Q)"
+#~ msgstr "Korisnik nije na�en (%s)"
+
+#~ msgid "No mask specified"
+#~ msgstr "Nema navedena maska"
+
+#, fuzzy
+#~ msgid "User %Q not found"
+#~ msgstr "Korisnik %s nije prona�en"
+
+#, fuzzy
+#~ msgid "Mask %Q already used to identify user %Q"
+#~ msgstr "Maska %s je ve� iskori��ena da identifikuje korisnika %s"
+
+#, fuzzy
+#~ msgid "Mask %Q not found"
+#~ msgstr "Maska %s nije na�ena"
+
+#~ msgid "No property specified"
+#~ msgstr "Nije navedena osobina"
+
+#~ msgid "Registered users database dump:"
+#~ msgstr "Prikazbaze podataka registrovanih korisnika:"
+
+#~ msgid " User: %c%Q"
+#~ msgstr "Korisnik: %c%Q"
+
+#~ msgid " Warning: this user has no registration masks"
+#~ msgstr " Upozorenje: ovaj korisnik nema registrovane maske"
+
+#~ msgid " Mask: %Q!%Q@%Q"
+#~ msgstr " Maska: %Q!%Q@%Q"
+
+#~ msgid " Property: %Q=%Q"
+#~ msgstr " Vlasni�tvo: %Q=%Q"
+
+#~ msgid " No properties"
+#~ msgstr " Nema svojstava"
+
+#~ msgid "Total: %d matching users (of %d in the database)"
+#~ msgstr "Ukupno: %d odgovaraju�ih korisnika (od %d u bazi podataka)"
+
+#, fuzzy
+#~ msgid "Property Editor"
+#~ msgstr "Vlasni�tvo"
+
+#~ msgid "Property"
+#~ msgstr "Vlasni�tvo"
+
+#, fuzzy
+#~ msgid "Mask Editor"
+#~ msgstr "Ime alijasa"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This the <b>nickname</b> that will match this user, default value "
+#~ "is the registered name.</center>"
+#~ msgstr ""
+#~ "<center>Ovo je <b>ime hosta</b> trenutno izabranog servera.</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This the <b>username</b> that will match this user. <b>*</b> will "
+#~ "match any username.</center>"
+#~ msgstr ""
+#~ "<center>Ovo je <b>ime hosta</b> trenutno izabranog servera.</center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This the <b>hostname</b> that will match this user. <b>*</b> will "
+#~ "match any hostname.</center>"
+#~ msgstr ""
+#~ "<center>Ovo je <b>ime hosta</b> trenutno izabranog servera.</center>"
+
+#, fuzzy
+#~ msgid "Registered User Entry"
+#~ msgstr "Registrovan korisnik:"
+
+#~ msgid "Name:"
+#~ msgstr "Naziv:"
+
+#~ msgid "Masks:"
+#~ msgstr "Maske:"
+
+#, fuzzy
+#~ msgid "&Add..."
+#~ msgstr "Dodaj..."
+
+#~ msgid "&Edit"
+#~ msgstr "Izm&ena"
+
+#, fuzzy
+#~ msgid "Notify when user is online"
+#~ msgstr "lista obave�tenja ulasci"
+
+#, fuzzy
+#~ msgid "Notify nicknames:"
+#~ msgstr "Nickname (nadimak):"
+
+#, fuzzy
+#~ msgid "All Properties..."
+#~ msgstr "Pode�avanja"
+
+#, fuzzy
+#~ msgid "Registered Users - KVIrc"
+#~ msgstr "Registrovani korisnici"
+
+#~ msgid "Name"
+#~ msgstr "Naziv"
+
+#, fuzzy
+#~ msgid "Notify"
+#~ msgstr "Lista obave�tenja"
+
+#, fuzzy
+#~ msgid "Remove the currently selected entries."
+#~ msgstr ""
+#~ "<center>Ovo je <b>ime hosta</b> trenutno izabranog servera.</center>"
+
+#, fuzzy
+#~ msgid "&Edit..."
+#~ msgstr "Izm&ena"
+
+#, fuzzy
+#~ msgid "Import From..."
+#~ msgstr "U�itavanje ikona..."
+
+#, fuzzy
+#~ msgid "No entries selected."
+#~ msgstr "Nema izabranih stavki"
+
+#, fuzzy
+#~ msgid "Can't open file %s for writing."
+#~ msgstr "Ne mogu da otvorim fajl %s za upisivanje"
+
+#, fuzzy
+#~ msgid "Can't export the registered users database: Write error."
+#~ msgstr ""
+#~ "Ne mogu da izvezem databazu registrovanih korisnika: gre�ka u pisanju"
+
+#, fuzzy
+#~ msgid "Can't open file %s for reading."
+#~ msgstr "Ne mogu da otvorim fajl %s za �itanje"
+
+#, fuzzy
+#~ msgid "The file %s doesn't appear to be a valid registered users database."
+#~ msgstr ""
+#~ "Fajl %s ne izgleda da ce da bude validna databaza registrovanih korisnika"
+
+#, fuzzy
+#~ msgid "The file %s contains an invalid registered users database version."
+#~ msgstr "Fajl %s sadr�i pogre�nu verziju databaze registrovanih korisnika"
+
+#, fuzzy
+#~ msgid "Can't import the registered users database: Read error."
+#~ msgstr ""
+#~ "Ne mogu da uvezem databazu registrovanih korisnika: gre�ka u �itanju"
+
+#, fuzzy
+#~ msgid "ToolBar Properties"
+#~ msgstr "&Alati"
+
+#~ msgid "Id"
+#~ msgstr "Id"
+
+#, fuzzy
+#~ msgid "Invalid ToolBar Label"
+#~ msgstr "Pogre�an broj porta"
+
+#, fuzzy
+#~ msgid "The ToolBar Label can't be empty!"
+#~ msgstr "Komanda predstavljanja"
+
+#, fuzzy
+#~ msgid "Automatically"
+#~ msgstr "Automatski prihvati"
+
+#, fuzzy
+#~ msgid "Hide Advanced"
+#~ msgstr "Napredno ..."
+
+#, fuzzy
+#~ msgid "Customize Toolbars"
+#~ msgstr "Boja kursora"
+
+#, fuzzy
+#~ msgid "New ToolBar"
+#~ msgstr "Irc Traka sa alatima"
+
+#, fuzzy
+#~ msgid "Delete ToolBar"
+#~ msgstr "Obri�i ovo pravilo"
+
+#, fuzzy
+#~ msgid "Edit ToolBar"
+#~ msgstr "Markeri"
+
+#, fuzzy
+#~ msgid "Export ToolBar"
+#~ msgstr "Irc Traka sa alatima"
+
+#, fuzzy
+#~ msgid "ToolBar Export"
+#~ msgstr "Uklju�i/isklju�i editor zabrana"
+
+#, fuzzy
+#~ msgid "Unable to write to the toolbar file."
+#~ msgstr "Neuspe�no pisanje u fajl %s"
+
+#, fuzzy
+#~ msgid "My ToolBar"
+#~ msgstr "Irc Traka sa alatima"
+
+#~ msgid "Terminal emulator"
+#~ msgstr "Terminal emulator"
+
+#~ msgid "Close this window"
+#~ msgstr "Zatvori ovaj prozor"
+
+#~ msgid "Can't create the terminal emulation part"
+#~ msgstr "Ne mogu da kreiram deo terminal emulatora"
+
+#~ msgid "Can't retrieve the terminal emulation factory"
+#~ msgstr "Ne mogu da preuzmem fabriku za emulaciju terminala"
+
+#, fuzzy
+#~ msgid "Terminal"
+#~ msgstr "&Terminal prozor"
+
+#, fuzzy
+#~ msgid "<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"
+#~ msgstr "<nobr><font color=\"%s\"><b>Terminal emulator</b></font></nobr>"
+
+#~ msgid "This window has no associated irc context"
+#~ msgstr "Ovaj prozor nema odgovaraju�i IRC kontekst"
+
+#~ msgid "No such irc context (%d)"
+#~ msgstr "Nema takvog IRC konteksta (%d)"
+
+#, fuzzy
+#~ msgid "Internal unique name for the action"
+#~ msgstr "Izaberi ime fajla za skriptu"
+
+#, fuzzy
+#~ msgid "Label:"
+#~ msgstr "Labela"
+
+#, fuzzy
+#~ msgid "Action code"
+#~ msgstr "Fascikla pode�avanja"
+
+#, fuzzy
+#~ msgid "Code"
+#~ msgstr "Cpp mod"
+
+#, fuzzy
+#~ msgid "Category:"
+#~ msgstr "Kategorija"
+
+#, fuzzy
+#~ msgid "Small Icon:"
+#~ msgstr "Poka�i ikone poruka"
+
+#, fuzzy
+#~ msgid "Big Icon:"
+#~ msgstr "U�itavanje ikona..."
+
+#, fuzzy
+#~ msgid "Needs IRC Context"
+#~ msgstr "&Nov irc kontekst"
+
+#, fuzzy
+#~ msgid "Needs IRC Connection"
+#~ msgstr "&Novo konektovanje na"
+
+#, fuzzy
+#~ msgid "Enable at Login"
+#~ msgstr "Omogu�i �ifrovanje"
+
+#, fuzzy
+#~ msgid "Enable in Console Windows"
+#~ msgstr "&Terminal prozor"
+
+#, fuzzy
+#~ msgid "Enable in Channel Windows"
+#~ msgstr "&Nasla�i prozore"
+
+#, fuzzy
+#~ msgid "Enable in Query Windows"
+#~ msgstr "Auto-uklju�enje logovanja u upit prozoru"
+
+#, fuzzy
+#~ msgid "Enable in DCC Chat Windows"
+#~ msgstr "&Nasla�i prozore"
+
+#, fuzzy
+#~ msgid "Flags"
+#~ msgstr "Filter"
+
+#, fuzzy
+#~ msgid "Action"
+#~ msgstr "Akcije"
+
+#, fuzzy
+#~ msgid "New Action"
+#~ msgstr "Akcije"
+
+#, fuzzy
+#~ msgid "Delete Actions"
+#~ msgstr "selekcija"
+
+#, fuzzy
+#~ msgid "Export Actions..."
+#~ msgstr "Ukloni ovaj alijas"
+
+#, fuzzy
+#~ msgid "My Action"
+#~ msgstr "Akcije"
+
+#, fuzzy
+#~ msgid "Put here a short description of your action"
+#~ msgstr ""
+#~ "<center>Klikni ovde za editovanje naprednih opcija za ovaj server...</"
+#~ "center>"
+
+#, fuzzy
+#~ msgid "Action Editor"
+#~ msgstr "Ime alijasa"
+
+#~ msgid "Apply"
+#~ msgstr "Primeni"
+
+#~ msgid "Socket Spy [IRC Context %u]"
+#~ msgstr "�pijun Priklju�ka [IRC Kontekst %u]"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>Socket Spy</b></font> <font color=\"%s\">[IRC "
+#~ "Context %u]</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>�pijun Priklju�ka</b></font> <font color=\"%s"
+#~ "\">[IRC Kontekst %u]</font></nobr>"
+
+#~ msgid "Socket open"
+#~ msgstr "Priklju�ak otvoren"
+
+#~ msgid "Socket closed"
+#~ msgstr "Priklju�ak zatvoren"
+
+#, fuzzy
+#~ msgid "Sound file '%Q' not found"
+#~ msgstr "Prozor %s nije na�en"
+
+#, fuzzy
+#~ msgid "Unable to play sound '%Q'"
+#~ msgstr "Ne mogu da kopiram %s u %s"
+
+#, fuzzy
+#~ msgid "Sound system detected to: %s"
+#~ msgstr "Detektovano razdvajanje mre�a :%s"
+
+#, fuzzy
+#~ msgid "Configure"
+#~ msgstr "&Podesi"
+
+#, fuzzy
+#~ msgid "Show Help"
+#~ msgstr "&Pove�aj KVIrc przor"
+
+#, fuzzy
+#~ msgid "More Addons..."
+#~ msgstr "Ukloni ovaj alijas"
+
+#, fuzzy
+#~ msgid "Name: %Q"
+#~ msgstr "Naziv:"
+
+#, fuzzy
+#~ msgid "Description: %Q"
+#~ msgstr "Opis: %s"
+
+#, fuzzy
+#~ msgid "Total: %d addons installed"
+#~ msgstr "Ukupno hostova %s : %d"
+
+#, fuzzy
+#~ msgid "The addon \"%1\" does not exist"
+#~ msgstr "Izvorni objekat '%Q' je ne postoje�i"
+
+#, fuzzy
+#~ msgid "The addon \"%1\" has no help callback set"
+#~ msgstr "Izvorni objekat '%Q' je ne postoje�i"
+
+#, fuzzy
+#~ msgid "The specified version \"%Q\" is not a valid version string"
+#~ msgstr "Specifi�na bind adresa (%Q) nije validna"
+
+#, fuzzy
+#~ msgid "The specified KVIrc version \"%Q\" is not a valid version string"
+#~ msgstr "Specifi�na bind adresa (%s) nije validna"
+
+#, fuzzy
+#~ msgid "Script registration failed"
+#~ msgstr "Neuspe�no kreiranje priklju�ka"
+
+#, fuzzy
+#~ msgid "Destinaion file exists: no copy made"
+#~ msgstr "Odredi�ni fajl postoji: nije napravljena kopija"
+
+#, fuzzy
+#~ msgid "Failed to copy from %Q to %Q"
+#~ msgstr "Ne mogu da kopiram %s u %s"
+
+#~ msgid "Destination file exists: file not renamed"
+#~ msgstr "Odredi�ni fajl postoji; fajl nije preimenovan"
+
+#, fuzzy
+#~ msgid "Failed to rename %Q to %Q"
+#~ msgstr "Ne mogu da preimenujem %s u %s"
+
+#, fuzzy
+#~ msgid "Failed to make the directory %Q"
+#~ msgstr "Ne mogu da napravim direktorijum %s"
+
+#, fuzzy
+#~ msgid "Failed to remove the file %Q"
+#~ msgstr "Neuspe�no uklanjanje fajla %s"
+
+#, fuzzy
+#~ msgid "Failed to remove the directory %Q"
+#~ msgstr "Neuspe�no uklanjanje direktorijuma %s"
+
+#, fuzzy
+#~ msgid "The specified directory does not exist '%Q'"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#, fuzzy
+#~ msgid "Can't open the file \"%Q\" for reading"
+#~ msgstr "Ne mogu da otvorim fajl \"%s\" za �itanje"
+
+#, fuzzy
+#~ msgid "Read error for file %Q"
+#~ msgstr "Gre�ka u �itanju za fajl %s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Read error for file %Q (have been unable to read the requested size in "
+#~ "1000 retries)"
+#~ msgstr ""
+#~ "Gre�ka u �itanju za fajl %s (nisam mogao da pro�itam zahtevanu veli�inu u "
+#~ "1000 poku�aja)"
+
+#, fuzzy
+#~ msgid "Can't open the file \"%Q\" for writing"
+#~ msgstr "Ne mogu da otvorim fajl %s za upisivanje"
+
+#~ msgid "Event"
+#~ msgstr "Doga�aj"
+
+#, fuzzy
+#~ msgid "Edit the event handler name."
+#~ msgstr "U�itavam upravlja� doga�aja...."
+
+#, fuzzy
+#~ msgid "&Enable Handler"
+#~ msgstr "Omogu�i ovaj manipulator"
+
+#, fuzzy
+#~ msgid "&Disable Handler"
+#~ msgstr "Omogu�i ovaj manipulator"
+
+#, fuzzy
+#~ msgid "Re&move Handler"
+#~ msgstr "Ukloni ovaj manipulator"
+
+#, fuzzy
+#~ msgid "&Export Handler To..."
+#~ msgstr "Ukloni ovaj alijas"
+
+#, fuzzy
+#~ msgid "&New Handler"
+#~ msgstr "Dodaj manipulator"
+
+#~ msgid "default"
+#~ msgstr "predefinisano"
+
+#~ msgid "none"
+#~ msgstr "ni�ta"
+
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "\tEvent:\n"
+#~ "\t\t%s\n"
+#~ "\n"
+#~ "\tParameters:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "\tDoga�aj:\n"
+#~ "\t\t%s\n"
+#~ "\n"
+#~ "\tParametri:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Unable to write to the event file."
+#~ msgstr "Neuspe�no pisanje u fajl %s"
+
+#, fuzzy
+#~ msgid "Unable to write to the events file."
+#~ msgstr "Neuspe�no pisanje u fajl %s"
+
+#, fuzzy
+#~ msgid "Event Editor"
+#~ msgstr "Tekstualni editor"
+
+#, fuzzy
+#~ msgid "Default part message:"
+#~ msgstr "Predefinisana poruka odsutnosti"
+
+#, fuzzy
+#~ msgid "Default quit message:"
+#~ msgstr "Predefinisana poruka odsutnosti"
+
+#, fuzzy
+#~ msgid "USERINFO reply:"
+#~ msgstr "CTCP odgovor"
+
+#~ msgid "Show at startup"
+#~ msgstr "Poka�i na po�etku"
+
+#~ msgid "Did you know..."
+#~ msgstr "Da li ste znali..."
+
+#~ msgid "<b>Can't find any tip... :(</b>"
+#~ msgstr "<b>Ne mogu da nadjem nikakav savet... :-(</b>"
+
+#, fuzzy
+#~ msgid "Ops.. internal error"
+#~ msgstr "Ups...interna gre�ka ?"
+
+#, fuzzy
+#~ msgid "Manage File &Transfers"
+#~ msgstr "Obri�i mrtve prenose"
+
+#, fuzzy
+#~ msgid "Password"
+#~ msgstr "Lozinka:"
+
+#, fuzzy
+#~ msgid "&Join"
+#~ msgstr "U�i"
+
+#, fuzzy
+#~ msgid "Show this window after connecting"
+#~ msgstr "Prika�i posle konekcije na server"
+
+#, fuzzy
+#~ msgid "Recent Channels"
+#~ msgstr "&Skora�nji kanali"
+
+#, fuzzy
+#~ msgid "Registered Channels"
+#~ msgstr "Registrovani korisnici"
+
+#, fuzzy
+#~ msgid "Raw Event"
+#~ msgstr "Sirovi doga�aji"
+
+#, fuzzy
+#~ msgid "Edit the raw event handler name."
+#~ msgstr "U�itavam upravlja� doga�aja...."
+
+#, fuzzy
+#~ msgid "&Add Raw Event..."
+#~ msgstr "Sirovi doga�aji"
+
+#, fuzzy
+#~ msgid "New Raw Event"
+#~ msgstr "Sirovi doga�aji"
+
+#, fuzzy
+#~ msgid "Unable to write to the raw event file."
+#~ msgstr "Neuspe�no pisanje u fajl %s"
+
+#, fuzzy
+#~ msgid "Unable to write to the raw events file."
+#~ msgstr "Neuspe�no pisanje u fajl %s"
+
+#, fuzzy
+#~ msgid "Raw Editor"
+#~ msgstr "Tekstualni editor"
+
+#, fuzzy
+#~ msgid "%cUser action: %Q"
+#~ msgstr "akcija korisnika"
+
+#, fuzzy
+#~ msgid "Label: %Q"
+#~ msgstr "Labela"
+
+#, fuzzy
+#~ msgid "Category: %Q"
+#~ msgstr "Kategorija"
+
+#, fuzzy
+#~ msgid "The action \"%1\" does not exist"
+#~ msgstr "Izvorni objekat '%Q' je ne postoje�i"
+
+#, fuzzy
+#~ msgid "&Execute"
+#~ msgstr "Izvr�i"
+
+#~ msgid "Params:"
+#~ msgstr "Parametri:"
+
+#, fuzzy
+#~ msgid "Script Tester"
+#~ msgstr "Centar za skripte"
+
+#~ msgid ""
+#~ "Broken slot '%s' in target object '%s' while emitting signal '%s' from "
+#~ "object '%s': disconnecting"
+#~ msgstr ""
+#~ "Prekinut slot '%s' u odredi�nom objektu '%s' dok je emitovan signal '%s' "
+#~ "od\robjekta '%s': prekidam vezu"
+
+#~ msgid ""
+#~ "No slot function '%s' exported by target object '%s' while emitting "
+#~ "signal '%s' from object '%s': disconnecting"
+#~ msgstr ""
+#~ "Nema slot funkcije '%s' izvezene od odredi�nog objekta '%s' dok je "
+#~ "emitovan '%s' signal od objekta '%s': prekidam vezu"
+
+#~ msgid "Invalid timeout"
+#~ msgstr "Pogre�no vreme isteka"
+
+#~ msgid "Invalid timer id"
+#~ msgstr "Pogre�an ID tajmera"
+
+#, fuzzy
+#~ msgid "%cListing Qt Properties for widget object %s (%s)"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Properties class: %c%s%c"
+#~ msgstr "Svojstva:"
+
+#, fuzzy
+#~ msgid "Property: %c%s%c, type: %s"
+#~ msgstr " Vlasni�tvo: %s=%s"
+
+#, fuzzy
+#~ msgid "Oops... no such property: %s"
+#~ msgstr " Vlasni�tvo: %s=%s"
+
+#~ msgid "Not enough parameters"
+#~ msgstr "Nema dovoljno parametara"
+
+#, fuzzy
+#~ msgid "No such QT property (%s)"
+#~ msgstr "Nema takvog objekta (%s)"
+
+#, fuzzy
+#~ msgid "missing parameter"
+#~ msgstr "Nedostaje odredi�te (meta)"
+
+#, fuzzy
+#~ msgid "Invalid parameter (%s)"
+#~ msgstr "Pogre�an parametar"
+
+#, fuzzy
+#~ msgid "Pixmap not found"
+#~ msgstr "Host nije prona�en"
+
+#, fuzzy
+#~ msgid "Unsupported QT property (%s)"
+#~ msgstr "Nepodr�an pravac"
+
+#, fuzzy
+#~ msgid "Missing parameters"
+#~ msgstr "Nedostaje odredi�te (meta)"
+
+#, fuzzy
+#~ msgid "This window has no associated IRC context"
+#~ msgstr "Ovaj prozor nema odgovaraju�i IRC kontekst"
+
+#~ msgid "Unknown"
+#~ msgstr "Nepoznato"
+
+#~ msgid "[Parser warning in '%Q']: %Q"
+#~ msgstr "[parser upozorenje u '%Q'] : %Q"
+
+#, fuzzy
+#~ msgid "Can't find the multimedia file %s"
+#~ msgstr "Ne mogu da na�em multimedijalni fajl %s"
+
+#, fuzzy
+#~ msgid "Missing target, no action taken"
+#~ msgstr "Nedostaje odredi�te; nema preuzete akcije"
+
+#~ msgid "Invalid timeout specified , using default"
+#~ msgstr "Pogre�no definisan odziv , koristim predefinisano"
+
+#~ msgid "Can't add a file offer for file %s (huh ? file not readable ?)"
+#~ msgstr ""
+#~ "Ne mogu da dodam ponudu fajla za fajl %s (huh ? fajl nije �itljiv ?)"
+
+#~ msgid "Added %d secs file offer for file %s (%s) and receiver %s"
+#~ msgstr "Dodato %d sekundi ponude fajla za fajl %s (%s) i prima�a %s"
+
+#~ msgid "%s plays '%s'"
+#~ msgstr "%s reprodukuje '%s'"
+
+#~ msgid "%s plays '%s' to %s"
+#~ msgstr "%s reprodukuje '%s' u %s"
+
+#~ msgid "Error in command: %c%c%Q"
+#~ msgstr "Gre�ka u komandi: %c%c%Q"
+
+#, fuzzy
+#~ msgid "Error token: %c%Q"
+#~ msgstr "Gre�ka simbola: %c%s"
+
+#~ msgid "Parsing stopped at %cline %d , character %d"
+#~ msgstr "Obrada zaustavljena u %cliniji %d , karakter %d"
+
+#~ msgid " %s"
+#~ msgstr " %s"
+
+#~ msgid "Object scope: name (%s), class (%s)"
+#~ msgstr "Podru�je objekta: ime (%s), klasa (%s)"
+
+#~ msgid "Object scope: deleted object"
+#~ msgstr "Podru�je objekta: obrisan objekat"
+
+#~ msgid "This pointer: name (%s), class (%s)"
+#~ msgstr "Ovaj pokaziva�: ime (%s), klasa (%s)"
+
+#~ msgid "This pointer: deleted object"
+#~ msgstr "Ovaj pokaziva�: obrisan objekat"
+
+#~ msgid "Internal call stack:"
+#~ msgstr "Interni poziv stek-a:"
+
+#, fuzzy
+#~ msgid "You are not connected to a server"
+#~ msgstr "Niste zaka�eni na IRC server"
+
+#~ msgid "%s (module %s)"
+#~ msgstr "%s (modul %s)"
+
+#~ msgid "Module '%s', Command '%s'"
+#~ msgstr "Modul '%s', Komanda '%s'"
+
+#~ msgid "Can't rebind the command: window with id %s not found"
+#~ msgstr "Ne mogu da pove�em komandu: prozor sa ID-om %s nije na�en"
+
+#~ msgid ""
+#~ "Can't rebind the command: missing window identifier after the -r switch"
+#~ msgstr ""
+#~ "Ne mogu da pove�em komandu: nedostaje identifikator prozora posle -r "
+#~ "prekida�a"
+
+#~ msgid "Error triggered from raw event handler %c%s::%Q"
+#~ msgstr "Gre�ka nastala od upravlja�a sirovog (raw) doga�aja %c%s::%Q"
+
+#~ msgid "Error triggered from event handler %c%Q::%Q"
+#~ msgstr "Gre�ka nastala od upravlja�a doga�aja %c%Q::%Q"
+
+#~ msgid "Raw event handler %s::%Q is broken: disabling"
+#~ msgstr "Upravlja� sirovog (raw) doga�aja %s::%Q je prekinut: isklju�ujem"
+
+#~ msgid "Event handler %Q::%Q is broken: disabling"
+#~ msgstr "Upravlja� doga�aja %Q::%Q je prekinut: isklju�ujem"
+
+#~ msgid "Variable evaluated to \"%s\""
+#~ msgstr "Promenljiva procenjena na \"%s\""
+
+#~ msgid "Module '%s', Function '%s'"
+#~ msgstr "Modul '%s', Funkcija '%s'"
+
+#~ msgid "Identifier evaluated to \"%s\""
+#~ msgstr "Pokazitelj procenjen u \"%s\""
+
+#~ msgid "Left operand of operator %s (%s{%s}) is undefined : assuming 0"
+#~ msgstr "Levi operand operatora %s (%s{%s}) je nedefinisan : podrazumevam 0"
+
+#~ msgid "Left operand of operator %s (%s[%s]) is undefined : assuming 0"
+#~ msgstr "Levi operand operatora %s (%s[%s]) nije definisan : podrazumevam 0"
+
+#~ msgid "Left operand of operator %s (%s) is undefined : assuming 0"
+#~ msgstr "Levi operand operatora %s (%s) nije definisan : podrazumevam 0"
+
+#~ msgid "Variable %s{%s} evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Promenljiva %s{%s} procenjena na '%s' u operatoru %s (nije broj)"
+
+#~ msgid "Variable %s[%s] evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Promenljiva %s[%s] procenjena na '%s' u operatoru %s (nije broj)"
+
+#~ msgid "Variable %s evaluated to '%s' in operator %s (not a number)"
+#~ msgstr "Promenljiva %s procenjena na '%s' u operatoru %s (nije broj)"
+
+#~ msgid "Right operand of operator %s evaluated to '%s' (not a number)"
+#~ msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#~ msgid "operator %c%c"
+#~ msgstr "operator %c%c"
+
+#, fuzzy
+#~ msgid "Broken icon parameter: ignoring"
+#~ msgstr "Prekinut izraz sa stavku menija '%s': ignori�em"
+
+#~ msgid "Can't find the icon \"%Q\": ignoring"
+#~ msgstr "Ne mogu da prona�em ikonu '%Q'"
+
+#~ msgid "Recursive definition detected for popup '%Q': ignoring"
+#~ msgstr "Ne mogu da na�em spoljni popup '%Q': ignori�em"
+
+#~ msgid "Can't find the external popup '%Q'; ignoring"
+#~ msgstr "Ne mogu da na�em spoljni popup '%Q': ignori�em"
+
+#~ msgid "Broken prologue in popup menu '%Q': ignoring"
+#~ msgstr "Prekinut izraz sa stavku menija '%Q': ignori�em"
+
+#~ msgid "Broken epilogue in popup menu '%Q': ignoring"
+#~ msgstr "Prekinut izraz sa stavku menija '%Q': ignori�em"
+
+#, fuzzy
+#~ msgid ""
+#~ "Another connection is already in progress in the selected IRC context"
+#~ msgstr "Jo� jedna konekcija je u toku"
+
+#, fuzzy
+#~ msgid "No menu bar item with text '%Q'"
+#~ msgstr "Nema stavke meni trake sa tekstom '%s'"
+
+#, fuzzy
+#~ msgid "Invalid index specified: ignored"
+#~ msgstr "Pogre�no definisan odziv , koristim predefinisano"
+
+#, fuzzy
+#~ msgid "The popup '%Q' is not defined"
+#~ msgstr "Iska�i�i meni (popup) '%s' nije definisan"
+
+#, fuzzy
+#~ msgid "No target channel specified and the current window is not a channel"
+#~ msgstr "Naveden prozor nije kanal"
+
+#, fuzzy
+#~ msgid "The catalogue %Q was not loaded"
+#~ msgstr "Fajl '%s' nije �itljiv"
+
+#, fuzzy
+#~ msgid "Invalid IRC url (%Q)"
+#~ msgstr "Pogre�an IRC url (%s)"
+
+#, fuzzy
+#~ msgid "The commandline for this url type seems to be broken (%Q)"
+#~ msgstr "Komandna linija za ovaj url izgleda da je prekinuta (%s)"
+
+#, fuzzy
+#~ msgid "No commandline specified for this type of url (%Q)"
+#~ msgstr "Nema navedene komandne linije za ovu vrstu url-a (%s)"
+
+#, fuzzy
+#~ msgid ""
+#~ "Option setting error: Unknown option or invalid value for option type"
+#~ msgstr ""
+#~ "Neuspe�na postavka ocije: nepoznata opcija ili pogre�na tip vrednosti za "
+#~ "tip opcije"
+
+#~ msgid "Choose a file to parse"
+#~ msgstr "Izaberi fajl za parseovanje"
+
+#~ msgid "Failed to load the file '%Q' for parsing"
+#~ msgstr "Ne mogu da otvorim fajl %Q"
+
+#~ msgid "Missing channel list"
+#~ msgstr "Nedostaje lista kanala"
+
+#, fuzzy
+#~ msgid "You don't appear to be on channel %s"
+#~ msgstr "Niste operator; ne mo�ete da menjate modove kanala"
+
+#~ msgid "Popup %Q is not defined"
+#~ msgstr "Iska�i�i meni (popup) '%Q' nije definisan"
+
+#, fuzzy
+#~ msgid "Invalid syntax for screen coordinates, using cursor position"
+#~ msgstr "Neispravna sintaksa ta koordinate ekrana"
+
+#~ msgid "Empty target specified"
+#~ msgstr "Definisan prazno odredi�te (meta)"
+
+#~ msgid "[RAW]: %Q"
+#~ msgstr "[RAW]: %Q"
+
+#~ msgid "Window with id %Q not found: no rebinding performed"
+#~ msgstr "Prozor sa ID-om '%Q' nije na�en, vra�am prazan znakovni niz"
+
+#, fuzzy
+#~ msgid "Failed to execute command '%Q'"
+#~ msgstr "Ne mogu da izvr�im komandu '%s'"
+
+#~ msgid "Call to undefined function '%Q'"
+#~ msgstr "Ne mogu da prona�em ikonu '%Q'"
+
+#, fuzzy
+#~ msgid "Unknown callback command \"%Q\""
+#~ msgstr "Nepoznata komanda"
+
+#~ msgid "Can't kill the timer '%Q' since it is not running"
+#~ msgstr "Ne mogu da na�em spoljni popup '%Q': ignori�em"
+
+#~ msgid "DNS Lookup result for query \"%s\""
+#~ msgstr "DNS rezultat pregleda za upit \"%s\""
+
+#~ msgid "Error: %Q"
+#~ msgstr "Gre�ka: %Q"
+
+#~ msgid "Hostname %d: %s"
+#~ msgstr "Ime hosta %d: %s"
+
+#~ msgid "IP address %d: %s"
+#~ msgstr "IP adresa %d: %s"
+
+#, fuzzy
+#~ msgid "Operand of unary operator didn't evaluate to a number"
+#~ msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#, fuzzy
+#~ msgid "Left operand didn't evaluate to a number"
+#~ msgstr "Levi operator nije broj"
+
+#, fuzzy
+#~ msgid "Right operand didn't evaluate to a number"
+#~ msgstr "Desni operator nije broj"
+
+#~ msgid "Division by zero"
+#~ msgstr "Deljenje sa nulom"
+
+#, fuzzy
+#~ msgid "This window has no associated IRC context and is not a DCC chat"
+#~ msgstr "Ovaj prozor nema odgovaraju�i IRC kontekst"
+
+#, fuzzy
+#~ msgid "Class \"%Q\" is not defined"
+#~ msgstr "Klasa %s nije definisana"
+
+#, fuzzy
+#~ msgid "The specified parent object does not exist"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#, fuzzy
+#~ msgid "There is no option named '%Q'"
+#~ msgstr "Nema opcije sa imenom '%s'"
+
+#, fuzzy
+#~ msgid "No such IRC context (%u)"
+#~ msgstr "Nema takvog IRC konteksta (%u)"
+
+#, fuzzy
+#~ msgid "This window is not associated to an IRC context"
+#~ msgstr "Ovaj prozor nema odgovaraju�i IRC kontekst"
+
+#, fuzzy
+#~ msgid "Event handler %Q is broken: disabling"
+#~ msgstr "Upravlja� doga�aja %Q::%s je prekinut: isklju�ujem"
+
+#, fuzzy
+#~ msgid "line %d, near character %d"
+#~ msgstr "Obrada zaustavljena u %cliniji %d , karakter %d"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %"
+#~ "s\" for the command syntax"
+#~ msgstr "Neo�ekivani karakteri u nizu indeksa"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found end of input where character '%c' was expected: see \"/help %s\" "
+#~ "for the command syntax"
+#~ msgstr "Neo�ekivani karakteri u nizu indeksa"
+
+#, fuzzy
+#~ msgid "Empty script"
+#~ msgstr "Prazan string"
+
+#, fuzzy
+#~ msgid "Unterminated instruction block"
+#~ msgstr "Neo�ekivan kraj komande u klju�u re�nika"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of script in instruction block (missing closing brace)"
+#~ msgstr "Neo�ekivan kraj komande u klju�u re�nika"
+
+#, fuzzy
+#~ msgid "Unexpected character '%q' (unicode %x) after a switch dash"
+#~ msgstr "Neo�ekivani karakteri u nizu indeksa"
+
+#, fuzzy
+#~ msgid "Unexpected end of script after a switch dash"
+#~ msgstr "Neo�ekivan kraj komande u klju�u re�nika"
+
+#, fuzzy
+#~ msgid "Unexpected end of script in parameter list"
+#~ msgstr "Neo�ekivan kraj komande u funkcijskim parametrima"
+
+#, fuzzy
+#~ msgid "Unexpected end of line in parameter list"
+#~ msgstr "Neo�ekivan kraj komande u funkcijskim parametrima"
+
+#, fuzzy
+#~ msgid "Skipping nested terminator character %q"
+#~ msgstr "Obrada zaustavljena u %cliniji %d , karakter %d"
+
+#, fuzzy
+#~ msgid "Unexpected end of script in hash key (missing '}' character ?)"
+#~ msgstr "Neo�ekivan kraj komande u funkcijskim parametrima"
+
+#, fuzzy
+#~ msgid "Unexpected end of script in string constant (missing \" character ?)"
+#~ msgstr "Neo�ekivan kraj komande u klju�u re�nika"
+
+#, fuzzy
+#~ msgid "Unknown binary operator '=%q': did you mean '==' ?"
+#~ msgstr "Nepoznat operator"
+
+#, fuzzy
+#~ msgid "Unknown binary operator '%q'"
+#~ msgstr "Nepoznat operator"
+
+#, fuzzy
+#~ msgid "Unexpected end of script in expression"
+#~ msgstr "Neo�ekivan kraj u izrazu"
+
+#, fuzzy
+#~ msgid "Error triggered from process callback handler: killing process"
+#~ msgstr "Gre�ka nastala od upravlja�a vremeskog odziva %c'%s'"
+
+#, fuzzy
+#~ msgid "You're not connected to an IRC server"
+#~ msgstr "Niste zaka�eni na IRC server"
+
+#, fuzzy
+#~ msgid "Missing parameter"
+#~ msgstr "Nedostaje odredi�te (meta)"
+
+#, fuzzy
+#~ msgid "Failed to send an unknown command as /raw"
+#~ msgstr "Posalji nepoznatu komandu kao /RAW"
+
+#~ msgid "Call to undefined command '%Q'"
+#~ msgstr "Ne mogu da izvr�im komandu '%Q'"
+
+#, fuzzy
+#~ msgid "Missing class name"
+#~ msgstr "Nedostaje ime promenljive"
+
+#, fuzzy
+#~ msgid "Can't override the builtin class \"%Q\""
+#~ msgstr "Ne mogu da ubijem ugra�enu klasu"
+
+#, fuzzy
+#~ msgid "Window with ID '%s' not found, returning empty string"
+#~ msgstr "Prozor sa ID-om '%s' nije na�en, vra�am prazan znakovni niz"
+
+#~ msgid "The specified window is not a channel"
+#~ msgstr "Naveden prozor nije kanal"
+
+#~ msgid "Window with caption %Q not found"
+#~ msgstr "Prozor sa naslovom '%Q' nije na�en, vra�am 0"
+
+#, fuzzy
+#~ msgid "Unexpected end of script after '$' function call prefix"
+#~ msgstr "Neo�ekivan kraj komande u klju�u re�nika"
+
+#, fuzzy
+#~ msgid "Array index didn't evaluate to an integer"
+#~ msgstr "Levi operator nije broj"
+
+#~ msgid "This is not a channel"
+#~ msgstr "Ovo nije kanal"
+
+#, fuzzy
+#~ msgid "Unexpected end of script in multiline comment"
+#~ msgstr "Neo�ekivan kraj komande u funkcijskim parametrima"
+
+#, fuzzy
+#~ msgid "The target variable didn't evaluate to an integer or real value"
+#~ msgstr "Levi operator nije broj"
+
+#, fuzzy
+#~ msgid "The right side of operator '&=' didn't evaluate to an integer"
+#~ msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#, fuzzy
+#~ msgid "The left side of operator '&=' didn't evaluate to an integer"
+#~ msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#, fuzzy
+#~ msgid "The right side of operator '/=' didn't evaluate to a number"
+#~ msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#, fuzzy
+#~ msgid "The left side of operator '/=' didn't evaluate to a number"
+#~ msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#, fuzzy
+#~ msgid "The right side of operator '%=' didn't evaluate to a number"
+#~ msgstr "Desni operand operatora %= procenjen na '%s' (nije broj)"
+
+#, fuzzy
+#~ msgid "The left side of operator '%=' didn't evaluate to a number"
+#~ msgstr "Desni operand operatora %= procenjen na '%s' (nije broj)"
+
+#, fuzzy
+#~ msgid "The right side of operator '*=' didn't evaluate to a number"
+#~ msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#, fuzzy
+#~ msgid "The left side of operator '*=' didn't evaluate to a number"
+#~ msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#, fuzzy
+#~ msgid "The right side of operator '|=' didn't evaluate to an integer"
+#~ msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#, fuzzy
+#~ msgid "The left side of operator '|=' didn't evaluate to an integer"
+#~ msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#, fuzzy
+#~ msgid "The right side of operator '<<=' didn't evaluate to an integer"
+#~ msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#, fuzzy
+#~ msgid "The left side of operator '<<=' didn't evaluate to an integer"
+#~ msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#, fuzzy
+#~ msgid "The right side of operator '>>=' didn't evaluate to an integer"
+#~ msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#, fuzzy
+#~ msgid "The left side of operator '>>=' didn't evaluate to an integer"
+#~ msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#, fuzzy
+#~ msgid "The right side of operator '-=' didn't evaluate to a number"
+#~ msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#, fuzzy
+#~ msgid "The left side of operator '-=' didn't evaluate to a number"
+#~ msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#, fuzzy
+#~ msgid "The right side of operator '+=' didn't evaluate to a number"
+#~ msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#, fuzzy
+#~ msgid "The left side of operator '+=' didn't evaluate to a number"
+#~ msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#, fuzzy
+#~ msgid "The right side of operator '^=' didn't evaluate to an integer"
+#~ msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#, fuzzy
+#~ msgid "The left side of operator '^=' didn't evaluate to an integer"
+#~ msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#, fuzzy
+#~ msgid "Window with ID '%s' not found"
+#~ msgstr "Dugme prozora '%s' nije na�eno"
+
+#, fuzzy
+#~ msgid "Missing alias name"
+#~ msgstr "Nedostaje ime promenljive"
+
+#~ msgid "The alias %Q is not existing"
+#~ msgstr "Izvorni objekat '%Q' je ne postoje�i"
+
+#~ msgid "The specified window has no button containers"
+#~ msgstr "Navedeni prozor nema pripadaju�ih dugmadi"
+
+#, fuzzy
+#~ msgid "Window button '%Q' not found"
+#~ msgstr "Dugme prozora '%s' nije na�eno"
+
+#, fuzzy
+#~ msgid "Can't find the icon '%Q'"
+#~ msgstr "Ne mogu da prona�em ikonu '%s'"
+
+#, fuzzy
+#~ msgid "No such event (%Q)"
+#~ msgstr "Nema takvog doga�aja (%s)"
+
+#, fuzzy
+#~ msgid "No handler '%Q' for raw numeric event '%d'"
+#~ msgstr "Nema upravlja�e '%s' za sirov (raw) brojni doga�aj '%d'"
+
+#, fuzzy
+#~ msgid "No handler '%Q' for event '%Q'"
+#~ msgstr "Nema upravlja�a '%s' za doga�aj '%s'"
+
+#, fuzzy
+#~ msgid "The specified ping time is invalid: assuming zero (no ping)"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#, fuzzy
+#~ msgid "Failed to start the process"
+#~ msgstr "Ne mogu da po�nem da slu�am"
+
+#, fuzzy
+#~ msgid "The specified object does not exist"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#~ msgid "Missing timer name"
+#~ msgstr "Nedostaje ime tajmera"
+
+#~ msgid "Missing timeout delay"
+#~ msgstr "Nedostaje ka�njenje odziva"
+
+#, fuzzy
+#~ msgid "The timeout delay didn't evaluate to an integer"
+#~ msgstr "Levi operator nije broj"
+
+#, fuzzy
+#~ msgid "Unable to add the timer: insufficient system resources"
+#~ msgstr ""
+#~ "Interna gre�ka: ne mogu da dodam tajmer %s, nedovoljno sistemskih resursa"
+
+#, fuzzy
+#~ msgid ""
+#~ "The left side of the scope operator didn't evaluate as an object reference"
+#~ msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#, fuzzy
+#~ msgid ""
+#~ "The left side of the scope operator evaluated to a null object reference"
+#~ msgstr "Desni operand operatora %s procenjen na '%s' (nije broj)"
+
+#, fuzzy
+#~ msgid ""
+#~ "Broken slot '%Q' in target object '%Q::%Q' while emitting signal '%Q' "
+#~ "from object '%Q::%Q': disconnecting"
+#~ msgstr ""
+#~ "Prekinut slot '%s' u odredi�nom objektu '%s' dok je emitovan signal '%s' "
+#~ "od\robjekta '%s': prekidam vezu"
+
+#, fuzzy
+#~ msgid ""
+#~ "Slot target object destroyed while emitting signal '%Q' from object '%Q::%"
+#~ "Q'"
+#~ msgstr ""
+#~ "Prekinut slot '%s' u odredi�nom objektu '%s' dok je emitovan signal '%s' "
+#~ "od\robjekta '%s': prekidam vezu"
+
+#, fuzzy
+#~ msgid "Listing Qt properties for object named \"%Q\" of KVS class %Q"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Properties for Qt class %s"
+#~ msgstr "Svojstva:"
+
+#, fuzzy
+#~ msgid "Property: %c%Q%c, type %s"
+#~ msgstr " Vlasni�tvo: %s=%s"
+
+#, fuzzy
+#~ msgid "Can't find the requested image"
+#~ msgstr "Ne mogu da dodelim tra�enu adresu"
+
+#, fuzzy
+#~ msgid "Found character '%q' (unicode %x) where a slash '/' was expected"
+#~ msgstr "Neo�ekivani karakteri u nizu indeksa"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of command in binding operation, at least two slashes are "
+#~ "missing"
+#~ msgstr "Neo�ekivan kraj komande u funkcijskim parametrima"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of command in binding operation, at least one slash is "
+#~ "missing"
+#~ msgstr "Neo�ekivan kraj komande u funkcijskim parametrima"
+
+#, fuzzy
+#~ msgid "Unknown binding operation '%Q'"
+#~ msgstr "Nepoznat operator"
+
+#~ msgid "Unknown operator"
+#~ msgstr "Nepoznat operator"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of script after a variable reference: expected operator"
+#~ msgstr "Neo�ekivan kraj komande u funkcijskim parametrima"
+
+#, fuzzy
+#~ msgid "Unexpected character '%q' (unicode %x)"
+#~ msgstr "Neo�ekivani znak"
+
+#, fuzzy
+#~ msgid "Invalid pitch value: using default"
+#~ msgstr "Pogre�an nivo (%s): koristim predefinisano"
+
+#, fuzzy
+#~ msgid "Invalid duration value: using default"
+#~ msgstr "Pogre�no trajanje (%s): koristim predefinisano"
+
+#, fuzzy
+#~ msgid "No button with type %Q named %Q"
+#~ msgstr "Nema dugmeta sa %s tipom i %s imenom"
+
+#, fuzzy
+#~ msgid "Can't delete a null object reference"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Can't delete an inexisting object"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Inexisting popup \"%Q\""
+#~ msgstr "Nedostaje ime iska�u�eg menija"
+
+#, fuzzy
+#~ msgid "The menu item with id \"%Q\" does not exist in popup \"%Q\""
+#~ msgstr "Fajl pode�avanja sa ID-om '%s' nije otvoren"
+
+#, fuzzy
+#~ msgid "Invalid color-set specification, using default"
+#~ msgstr "Pogre�no navedena ikona '%s', koristim predefinisano"
+
+#~ msgid "Window '%s' not found, using current one"
+#~ msgstr "Prozor '%s' nije na�en, koristim trenutni"
+
+#, fuzzy
+#~ msgid "Invalid data type for parameter \"%s\""
+#~ msgstr "Pogre�an parametar"
+
+#, fuzzy
+#~ msgid "found string value \"%Q\" where type '%s' was expected"
+#~ msgstr "Neo�ekivani karakteri u nizu indeksa"
+
+#, fuzzy
+#~ msgid "found type %Q where type '%s' was expected"
+#~ msgstr "Neo�ekivani karakteri u nizu indeksa"
+
+#, fuzzy
+#~ msgid "Missing non-optional parameter \"%s\""
+#~ msgstr "Nedostaje odredi�te (meta)"
+
+#, fuzzy
+#~ msgid ""
+#~ "found signed integer \"%d\" where type 'unsigned integer' was expected"
+#~ msgstr "Neozna�ene celobrojne opcije (neozna�ena celobrojna konstanta)"
+
+#, fuzzy
+#~ msgid "[KVS]%c Warning: %Q"
+#~ msgstr "KVIrc : Upozorenje"
+
+#, fuzzy
+#~ msgid "[KVS] in script context \"%Q\""
+#~ msgstr "Pogre�an ID IRC konteksta '%Q'"
+
+#, fuzzy
+#~ msgid "[KVS] in script context \"%Q\", %Q"
+#~ msgstr "Pogre�an ID IRC konteksta '%Q'"
+
+#, fuzzy
+#~ msgid "[KVS] Window:"
+#~ msgstr "&Kazi u prozor"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of command buffer while looking for the \"perl.end\" "
+#~ "statement"
+#~ msgstr "Neo�ekivan kraj komande u klju�u re�nika"
+
+#, fuzzy
+#~ msgid "Found character %q (unicode %x) where a variable was expected"
+#~ msgstr "Neo�ekivani karakteri u nizu indeksa"
+
+#, fuzzy
+#~ msgid "Unexpected end of buffer in class definition"
+#~ msgstr "Neo�ekivan kraj komande u klju�u re�nika"
+
+#, fuzzy
+#~ msgid "Found character %q (unicode %x) where a function name was expected"
+#~ msgstr "Neo�ekivani karakteri u nizu indeksa"
+
+#, fuzzy
+#~ msgid "Unexpected end of buffer in function parameter list reminder"
+#~ msgstr "Neo�ekivan kraj komande u funkcijskim parametrima"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of script while looking for the instruction block of the "
+#~ "while command"
+#~ msgstr "Neo�ekivan kraj komande u klju�u re�nika"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of command after the 'do' command block: expected 'while' "
+#~ "keyword"
+#~ msgstr "Neo�ekivan kraj komande u klju�u re�nika"
+
+#, fuzzy
+#~ msgid "Found character %q (unicode %x) where a 'while' keyword was expected"
+#~ msgstr "Neo�ekivani karakteri u nizu indeksa"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of script while looking for the instruction block of the "
+#~ "if command"
+#~ msgstr "Neo�ekivan kraj komande u klju�u re�nika"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unexpected end of buffer while looking for the closing ')' in the 'for' "
+#~ "command"
+#~ msgstr "Neo�ekivan kraj komande u klju�u re�nika"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found character '%q' (unicode %x) where '%' or '$' was expected: see /"
+#~ "help foreach for the command syntax"
+#~ msgstr "Neo�ekivani karakteri u nizu indeksa"
+
+#, fuzzy
+#~ msgid "Unexpected end of buffer in switch condition block"
+#~ msgstr "Neo�ekivan kraj komande u klju�u re�nika"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found character %q (unicode %x) where a 'case','match','regexp','default' "
+#~ "or 'break' label was expected"
+#~ msgstr "Neo�ekivani karakteri u nizu indeksa"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found token '%Q' where a 'case','match','regexp','default' or 'break' "
+#~ "label was expected"
+#~ msgstr "Case , match , regexp , default ili break su o�ekivane klju�ne re�i"
+
+#, fuzzy
+#~ msgid "Unexpected end of buffer in defpopup block"
+#~ msgstr "Neo�ekivan kraj komande u klju�u re�nika"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found character %q (unicode %x) where a "
+#~ "'prologue','separator','label','popup','item','extpopup' or 'epilogue' "
+#~ "label was expected"
+#~ msgstr "Neo�ekivani karakteri u nizu indeksa"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found token '%Q' where a "
+#~ "'prologue','separator','label','popup','item','extpopup' or 'epilogue' "
+#~ "label was expected"
+#~ msgstr "Case , match , regexp , default ili break su o�ekivane klju�ne re�i"
+
+#, fuzzy
+#~ msgid "Received ping from \r!s\r%Q\r (PING %Q), replied pong"
+#~ msgstr "Primljen ping od \r!s\r%s\r (PING %s) : odgovoren pong"
+
+#, fuzzy
+#~ msgid "Received pong from \r!s\r%s\r (PONG %s)"
+#~ msgstr "Primljen ping od \r!s\r%s\r (PING %s) : odgovoren pong"
+
+#, fuzzy
+#~ msgid "Server ERROR: %Q"
+#~ msgstr "[SSL GRE�KA]: %Q"
+
+#, fuzzy
+#~ msgid "Missing channel parameter in join message"
+#~ msgstr "Nedostaje parametar kanala u JOIN poruci"
+
+#, fuzzy
+#~ msgid "Received a join message for an unknown channel, possible desync"
+#~ msgstr "Primljena PART poruka za nepoznat kanal...desinhronizovano?"
+
+#~ msgid ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r [implicit +%c umode "
+#~ "change]"
+#~ msgstr ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] ulazi na \r!c\r%Q\r [implicitno +%c promena "
+#~ "umoda]"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] ulazi na \r!c\r%Q\r"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just joined \r!c\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] upravo ulazi na \r!c\r%Q\r"
+
+#, fuzzy
+#~ msgid "Received a part message for an unknown channel, possible desync"
+#~ msgstr "Primljena PART poruka za nepoznat kanal...desinhronizovano?"
+
+#, fuzzy
+#~ msgid "You have left channel \r!c\r%Q\r"
+#~ msgstr "Napustio si kanal \r!c\r%Q\r :%s"
+
+#~ msgid "You have left channel \r!c\r%Q\r: %Q"
+#~ msgstr "Napustio si kanal \r!c\r%Q\r :%Q"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r: %Q"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] je napustio \r!c\r%Q\r :%Q"
+
+#, fuzzy
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] je napustio \r!c\r%Q\r :%s"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r: %Q"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] je upravo napustio \r!c\r%Q\r :%Q"
+
+#, fuzzy
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] je upravo napustio \r!c\r%Q\r :%s"
+
+#, fuzzy
+#~ msgid "Netsplit detected: %s"
+#~ msgstr "Detektovano razdvajanje mre�a :%s"
+
+#, fuzzy
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] je prekinuo IRC %Q%s"
+
+#, fuzzy
+#~ msgid "Received a kick message for an unknown channel, possible desync"
+#~ msgstr "Primljena PART poruka za nepoznat kanal...desinhronizovano?"
+
+#~ msgid ""
+#~ "You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "Izba�eni ste sa \r!c\r%Q\r od \r!n\r%Q\r [%Q@\r!h\r%Q\r] :%Q"
+
+#~ msgid "Attempting to rejoin \r!c\r%Q\r..."
+#~ msgstr "Poku�avam da ponovo u�em na \r!c\r%Q\r"
+
+#~ msgid ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has been kicked from \r!c\r%Q\r by \r!n\r%Q\r "
+#~ "[%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] je izba�en sa \r!c\r%Q\r od \r!n\r%Q\r [%Q@\r!h"
+#~ "\r%Q\r] :%Q"
+
+#~ msgid ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just been kicked from \r!c\r%Q\r by \r!n\r%"
+#~ "Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr ""
+#~ "\r!n\r%Q\r [%Q@\r!h\r%Q\r] je upravo izba�en sa \r!c\r%Q\r od \r!n\r%Q\r "
+#~ "[%Q@\r!h\r%Q\r] :%Q"
+
+#, fuzzy
+#~ msgid ""
+#~ "The following message appears to be encrypted, but the crypto engine "
+#~ "failed to decode it: %s"
+#~ msgstr ""
+#~ "Prate�a poruka izgleda da je �ifrovana, ali ma�ina za de�ifrovanje ne "
+#~ "mo�e da je de�ifruje: %s"
+
+#, fuzzy
+#~ msgid "Ignoring PRIVMSG from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "Ignori�em PRIVMSG od %Q: %Q"
+
+#~ msgid ""
+#~ "Spam privmsg from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%s"
+#~ "\")"
+#~ msgstr ""
+#~ "Spam privatna poruka od \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (poklapa se sa "
+#~ "spam re�ju \"%s\")"
+
+#~ msgid "Ignoring NOTICE from %Q (%Q)"
+#~ msgstr "Ignori�em PRIVMSG od %Q: %Q"
+
+#, fuzzy
+#~ msgid "NickServ requests authentication, executing scheduled command"
+#~ msgstr "NickServ zahteva auttentifikaciju; izvr�avam zadatu komandu"
+
+#, fuzzy
+#~ msgid ""
+#~ "The scheduled NickServ identification command appears to be broken, "
+#~ "please change the setting"
+#~ msgstr ""
+#~ "Zadata NickServ identifikaciona komanda izgleda da je prekinuta; molim "
+#~ "popravite to u dijalogu opcija"
+
+#~ msgid ""
+#~ "Spam notice from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%Q\")"
+#~ msgstr ""
+#~ "Spam obave�tenje od \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (poklapa se sa spam "
+#~ "re�ju \"%Q\")"
+
+#, fuzzy
+#~ msgid "Received a topic message for an unknown channel, possible desync"
+#~ msgstr "Primljena PART poruka za nepoznat kanal...desinhronizovano?"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] has changed topic to \"%Q%c\""
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] je promenio topic (naslov) u \"%Q%c\""
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] je sad poznat kao \r!n\r%Q\r"
+
+#~ msgid "You have changed your nickname to %Q"
+#~ msgstr "Promenili ste va� nadimak u %Q"
+
+#~ msgid "autojoining"
+#~ msgstr "autoulazak"
+
+#, fuzzy
+#~ msgid "double-click the channel name to join"
+#~ msgstr "dupli klik na ima kanala za ulazak"
+
+#~ msgid "\r!n\r%Q\r [%Q@\r!h\r%Q\r] invites you to channel \r!c\r%Q\r (%Q)"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] vas poziva na kanal \r!c\r%Q\r (%Q)"
+
+#, fuzzy
+#~ msgid "Received an invite message directed to another nick, possible desync"
+#~ msgstr "Primljena je INVITE poruka namenjena nekom drugom...hmmm"
+
+#~ msgid "WALLOPS from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "WALLOPS od \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid "You have set user mode %s"
+#~ msgstr "Postavili ste korisnikov mod %s"
+
+#, fuzzy
+#~ msgid "Received a mode change for an unknown channel, possible desync"
+#~ msgstr "Primljena PART poruka za nepoznat kanal...desinhronizovano?"
+
+#~ msgid "%Q [%Q@%Q] has set channel key to \"\r!m-k\r%Q\r\""
+#~ msgstr "%Q [%Q@%Q] je postavio klju� kanala u \"\r!m-k\r%Q\r\""
+
+#~ msgid "%Q [%Q@%Q] has unset the channel key"
+#~ msgstr "%Q [%Q@%Q] je sklonio klju� kanala"
+
+#~ msgid "%Q [%Q@%Q] has set channel \r!m-l\rlimit to %Q\r"
+#~ msgstr "%Q [%Q@%Q] je postavio na kanalu \r!m-l\rograni�enje na %Q\r"
+
+#~ msgid "%Q [%Q@%Q] has unset the channel limit"
+#~ msgstr "%Q [%Q@%Q] je uklonio ograni�enje kanala"
+
+#~ msgid "%Q [%Q@%Q] has set mode %c%c \r!n\r%Q\r"
+#~ msgstr "%Q [%Q@%Q] je postavio mod %ce \r!m%ce\r%Q\r"
+
+#, fuzzy
+#~ msgid "%Q [%Q@%Q] has set mode %c%c \r!m%c%c\r%Q\r"
+#~ msgstr "%Q [%Q@%Q] je postavio mod %ce \r!m%ce\r%c\r"
+
+#~ msgid "%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"
+#~ msgstr "%Q [%Q@%Q] je postavio na kanalu \r!m%c%c\rmod %c%c\r"
+
+#~ msgid "%Q [%Q@%Q] has set mode %s %Q"
+#~ msgstr "%Q [%Q@%Q] je postavio mod %s %Q"
+
+#~ msgid "%Q [%Q@%Q] has set channel mode %s"
+#~ msgstr "%Q [%Q@%Q] je postavio mod kanala %s"
+
+#, fuzzy
+#~ msgid ""
+#~ "[Server parser]: Encountered problems while parsing the following message:"
+#~ msgstr ""
+#~ "[Serverov parser]: nai�ao sam na probleme dok sam parseovao sledecu "
+#~ "poruku:"
+
+#, fuzzy
+#~ msgid "[Server parser]: [%s][%s] %Q"
+#~ msgstr "[Serverov parser]: [%s][%s] %W"
+
+#~ msgid "[Server parser]: %s"
+#~ msgstr "[Serverov parser]: %s"
+
+#~ msgid "The following CTCP reply has unrecognized target %Q"
+#~ msgstr "Slede�i CTCP odgovor ima nepoznatu metu \"%Q\""
+
+#~ msgid "Channel CTCP"
+#~ msgstr "CTCP Kanala"
+
+#~ msgid "%Q %S reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "%Q %S odgovor od %Q [%Q@%Q]: %Q"
+
+#~ msgid "The following CTCP request has unrecognized target %Q"
+#~ msgstr "Slede�i CTCP zahtev ima nepoznatu metu %Q"
+
+#~ msgid ""
+#~ "%Q %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignored (flood limit "
+#~ "exceeded)"
+#~ msgstr "%Q %S zahtev od %Q [%Q@%Q] (%Q): ignorisan (flood limit ostvaren)"
+
+#, fuzzy
+#~ msgid "ignored (unrecognized)"
+#~ msgstr "ignorisan (nije prepoznat)"
+
+#~ msgid "ignored"
+#~ msgstr "ignorisano"
+
+#~ msgid "replied"
+#~ msgstr "odgovoreno"
+
+#~ msgid "%Q %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"
+#~ msgstr "%Q %S zahtev od %Q [%Q@%Q] (%Q): %Q"
+
+#~ msgid "The following CTCP PING reply has unrecognized target \"%Q\""
+#~ msgstr "Slede�i CTCP PING odgovor ima nepoznatu metu \"%Q\""
+
+#~ msgid ""
+#~ "The following CTCP PING reply has a broken time identifier \"%S\", don't "
+#~ "trust the displayed time"
+#~ msgstr ""
+#~ "Slede�i CTCP PING odgovor ima prekinut identifikator vremena \"%S\": ne "
+#~ "verujte prikazanom vremenu"
+
+#~ msgid "%Q PING reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sec %u msec"
+#~ msgstr "%Q PING odgovor od %Q [%Q@%Q]: ~ %u sekundi %u msekundi"
+
+#, fuzzy
+#~ msgid "http://www.kvirc.net/"
+#~ msgstr ""
+#~ "\n"
+#~ "Glavna stranica: http://www.kvirc.net"
+
+#~ msgid "The following CTCP ACTION has unrecognized target %Q"
+#~ msgstr "Slede�i CTCP zahtev ima nepoznatu metu %Q"
+
+#, fuzzy
+#~ msgid "CTCP ACTION from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "CTCP ACTION od %Q [%Q@%Q] ka nepoznatoj meti %Q: %s"
+
+#, fuzzy
+#~ msgid "Unable to add file offer for file %Q (File not readable?)"
+#~ msgstr ""
+#~ "Ne mogu da dodam ponudu fajla za fajl %s (huh ? fajl nije �itljiv ?)"
+
+#, fuzzy
+#~ msgid "Added %d sec file offer for file %Q (%Q) to recipient %Q"
+#~ msgstr "Dodato %d sekundi ponude fajla za fajl %s (%s) i prima�a %Q"
+
+#~ msgid "private"
+#~ msgstr "privatno"
+
+#~ msgid "channel notification:"
+#~ msgstr "obave�tenje kanala"
+
+#~ msgid "notification"
+#~ msgstr "obave�tenje"
+
+#, fuzzy
+#~ msgid "%Q unsets avatar"
+#~ msgstr "Avatar slika"
+
+#, fuzzy
+#~ msgid "%Q changes avatar to %s"
+#~ msgstr "%Q [%Q@%Q] menja avatar u %s (%Q bajtova, %Q %s)"
+
+#, fuzzy
+#~ msgid ""
+#~ ": No valid local copy of avatar available, requesting one (HTTP GET %s)"
+#~ msgstr ""
+#~ ": Nema validne lokalne kopije avatar slike; zahtevaj jednu (DCC GET %s)"
+
+#, fuzzy
+#~ msgid ""
+#~ ": No valid local copy of avatar available; failed to start an HTTP "
+#~ "transfer, ignoring"
+#~ msgstr ""
+#~ ": Nema validne lokalne kopije avatar slike; flood limit postignut: "
+#~ "ignori�em"
+
+#, fuzzy
+#~ msgid ""
+#~ ": No valid local copy of avatar available, requesting one (DCC GET %s)"
+#~ msgstr ""
+#~ ": Nema validne lokalne kopije avatar slike; zahtevaj jednu (DCC GET %s)"
+
+#, fuzzy
+#~ msgid ""
+#~ ": No valid local copy of avatar available; flood limit exceeded, ignoring"
+#~ msgstr ""
+#~ ": Nema validne lokalne kopije avatar slike; flood limit postignut: "
+#~ "ignori�em"
+
+#, fuzzy
+#~ msgid ": No valid local copy of avatar available, ignoring"
+#~ msgstr ": Nema validne lokalne kopije avatar slike; ignori�em"
+
+#, fuzzy
+#~ msgid ": No such nickname in the user database, ignoring the change"
+#~ msgstr ": Nema takvog nadimka u bazi korisnika; ignori�em promene"
+
+#~ msgid "Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%S %S)"
+#~ msgstr "Ignori�em DCC %S zahtev od %Q [%Q@%Q] (%S %S)"
+
+#, fuzzy
+#~ msgid "Processing DCC %Q request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%S %S)"
+#~ msgstr "Obra�ujem DCC %S zahtev od %Q [%Q@%Q] (%S %S)"
+
+#, fuzzy
+#~ msgid "Unable to process the above request: Cannot load DCC module (%s)"
+#~ msgstr ""
+#~ "Ne mogu da odradim navedeni zahtev: ne mogu da u�itam dcc modul (%s)"
+
+#, fuzzy
+#~ msgid "Unable to process the above request: DCC module may be broken"
+#~ msgstr "Ne mogu da odradim gornji zahtev: dcc modul izgleda da je o�te�en"
+
+#, fuzzy
+#~ msgid "Channel operators"
+#~ msgstr "Operatori kanala"
+
+#, fuzzy
+#~ msgid "Voiced users"
+#~ msgstr "voiced korisnici"
+
+#, fuzzy
+#~ msgid "Half-operators"
+#~ msgstr "Operatori kanala"
+
+#, fuzzy
+#~ msgid "Ban masks"
+#~ msgstr "maske zabrana"
+
+#, fuzzy
+#~ msgid "Color free (no ANSI colors)"
+#~ msgstr "bez boje (nema ANSI boja)"
+
+#, fuzzy
+#~ msgid "Ban exception masks"
+#~ msgstr "maske izuzetaka zabrane"
+
+#, fuzzy
+#~ msgid "Invite exception masks or forbid /INVITE"
+#~ msgstr "maske izuzetka poziva ili odbij /INVITE"
+
+#, fuzzy
+#~ msgid "Secret"
+#~ msgstr "tajno"
+
+#, fuzzy
+#~ msgid "Private"
+#~ msgstr "privatno"
+
+#, fuzzy
+#~ msgid "Topic change restricted"
+#~ msgstr "ograni�ena promena naslova (topic-a)"
+
+#, fuzzy
+#~ msgid "Invite only"
+#~ msgstr "samo pozvani"
+
+#, fuzzy
+#~ msgid "No external messages"
+#~ msgstr "nema spoljnih poruka"
+
+#, fuzzy
+#~ msgid "Anonymous or protected user"
+#~ msgstr "anonimni ili za�ti�eni korisnici"
+
+#, fuzzy
+#~ msgid "Quiet or channel owner"
+#~ msgstr "tiho ili vlasnik kanala"
+
+#, fuzzy
+#~ msgid "Limited number of users"
+#~ msgstr "ograni�en broj korisnika"
+
+#, fuzzy
+#~ msgid "Key"
+#~ msgstr "klju�"
+
+#, fuzzy
+#~ msgid "Moderated"
+#~ msgstr "moderisano"
+
+#, fuzzy
+#~ msgid "Registered"
+#~ msgstr "registrovano"
+
+#, fuzzy
+#~ msgid "Censor swear words"
+#~ msgstr "cenzurisane re�i"
+
+#, fuzzy
+#~ msgid "Only registered nicks can join"
+#~ msgstr "samo registrovani nadimci mogu da u�u"
+
+#, fuzzy
+#~ msgid "No kicks able (unless U-Line)"
+#~ msgstr "nije mogu�e isteravanje (kick) (osim U-Line)"
+
+#~ msgid "IRC-Op only channel"
+#~ msgstr "Kanal samo za IRC-Opove"
+
+#, fuzzy
+#~ msgid "Server/Network/Tech Admin only channel"
+#~ msgstr "Kanal samo za Server Admine | Admine Mre�e | Admine Podu�avanja"
+
+#, fuzzy
+#~ msgid "Forbid /KNOCK"
+#~ msgstr "odbi /KNOCK"
+
+#, fuzzy
+#~ msgid "Redirect on channel full"
+#~ msgstr "preusmeri ako je kanal pun"
+
+#, fuzzy
+#~ msgid "Forbid channel CTCPs"
+#~ msgstr "odbi CTCP kanala"
+
+#, fuzzy
+#~ msgid "User-operators OR Auditorium: /NAMES and /WHO show only ops"
+#~ msgstr "auditorijum : /NAMES i /WHO pokazuje samo operatore"
+
+#, fuzzy
+#~ msgid "Unknown channel mode"
+#~ msgstr "nepoznat mod kanala"
+
+#, fuzzy
+#~ msgid ""
+#~ "One or more standard mode flags are missing in the server available "
+#~ "modes.\n"
+#~ "This is caused either by a non RFC1459-compliant IRC daemon or a broken "
+#~ "server reply.\n"
+#~ "Server umodes seem to be '%s' and channel modes seem to be '%s'.\n"
+#~ "Ignoring this reply and assuming that the basic set of modes is "
+#~ "available.\n"
+#~ "If you have strange problems, try changing the server."
+#~ msgstr ""
+#~ "Jedna ili vi�e nod zastavica nedostaje u mogu�im modovima servera.\n"
+#~ "Ovo je prouzrokovano IRC serverom koji nije RFC1459 kompatibilan ili je "
+#~ "prekinut odgovor servera.\n"
+#~ "Server modovi korisnika mogu biti '%s' a modovi kanala mogu biti ?%s'.\n"
+#~ "Ako imate �udne probleme, probajte da promenite server."
+
+#~ msgid "Available user modes:"
+#~ msgstr "Mogu�i modovi korisnika:"
+
+#, fuzzy
+#~ msgid "o: IRC operator (OPER)"
+#~ msgstr "o: IRC operator (OPER)"
+
+#, fuzzy
+#~ msgid "O: Local IRC operator (LOCOP)"
+#~ msgstr "O: lokalni irc operator (LOCOP)"
+
+#, fuzzy
+#~ msgid "i: Invisible"
+#~ msgstr "i: nevidljiv"
+
+#, fuzzy
+#~ msgid "w: Recipient for WALLOPS messages"
+#~ msgstr "w: primalac WALLOPS poruka"
+
+#, fuzzy
+#~ msgid ""
+#~ "r: User with restricted connection (or recipient for messages about "
+#~ "rejected bots)"
+#~ msgstr ""
+#~ "r: korisnik sa ograni�enom konekcijom (ili primalac poruka o odbijenim "
+#~ "botovima)"
+
+#, fuzzy
+#~ msgid "s: Recipient for server notices"
+#~ msgstr "s: prima� serverskih obave�tenja"
+
+#, fuzzy
+#~ msgid "z: Recipient for oper wallop messages"
+#~ msgstr "z: prima� oper wallop poruka"
+
+#, fuzzy
+#~ msgid "c: Recipient for cconn messages"
+#~ msgstr "c: prima� cconn poruka"
+
+#, fuzzy
+#~ msgid "k: Recipient for server kill messages"
+#~ msgstr "k: primalac serverskih kill poruka"
+
+#, fuzzy
+#~ msgid "f: Recipient for full server notices"
+#~ msgstr "f: primalac za puna serverska obave�tenja"
+
+#, fuzzy
+#~ msgid "y: Spy :)"
+#~ msgstr "y: �pijun :-)"
+
+#, fuzzy
+#~ msgid "d: Obscure 'DEBUG' flag"
+#~ msgstr "d: kori��enje 'DEBUG' zastavice"
+
+#, fuzzy
+#~ msgid "n: Recipient for nick changes"
+#~ msgstr "n: primalac za promenu nadimka"
+
+#, fuzzy
+#~ msgid ": Unknown user mode"
+#~ msgstr ": nepoznat korisni�ki mod"
+
+#~ msgid "Available channel modes:"
+#~ msgstr "Mogu�i modovi kanala:"
+
+#~ msgid ""
+#~ "Server %Q version %S supporting user modes '%S' and channel modes '%S'"
+#~ msgstr "Server %Q verzija %S podr�ani modovi '%S' i '%S'"
+
+#, fuzzy
+#~ msgid "This server supports the WATCH notify list method, it will be used"
+#~ msgstr ""
+#~ "Server izgleda podr�ava WATCH listu obave�tenja: probacemo da je "
+#~ "koristimo."
+
+#~ msgid "The current network is %Q"
+#~ msgstr "Trenutni upit nema metu '%Q'"
+
+#, fuzzy
+#~ msgid "This server supports the CODEPAGE command, it will be used"
+#~ msgstr ""
+#~ "Server izgleda podr�ava WATCH listu obave�tenja: probacemo da je "
+#~ "koristimo."
+
+#, fuzzy
+#~ msgid "This server supports: %s"
+#~ msgstr "[Serverov parser]: %s"
+
+#~ msgid "End of NAMES for \r!c\r%Q\r"
+#~ msgstr "Kraj imena za \r!c\r%Q\r"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c: %Q"
+#~ msgstr "[\r!s\r%s\r]: %s"
+
+#~ msgid "Names for \r!c\r%Q\r: %Q"
+#~ msgstr "Imena za \r!c\r%Q\r: %Q"
+
+#, fuzzy
+#~ msgid "(unknown)"
+#~ msgstr "(Nepoznat)"
+
+#~ msgid "Channel topic is: %Q"
+#~ msgstr "Naslov kanala (topic) je: %Q"
+
+#~ msgid "Topic for \r!c\r%Q\r is: %Q"
+#~ msgstr "Naslov (topic) za \r!c\r%Q\r je: %Q"
+
+#~ msgid "No channel topic is set"
+#~ msgstr "Nema postavljenog naslova kanala"
+
+#~ msgid "No topic is set for channel \r!c\r%Q\r"
+#~ msgstr "Nema postavljenog naslova za kanal \r!c\r%Q\r"
+
+#, fuzzy
+#~ msgid "Topic was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r on %Q"
+#~ msgstr "Naslov je postavljen od \r!n\r%Q\r u %Q"
+
+#, fuzzy
+#~ msgid "Topic was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+#~ msgstr "Naslov je postavljen od \r!n\r%Q\r"
+
+#, fuzzy
+#~ msgid "Topic for \r!c\r%Q\r was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r on %Q"
+#~ msgstr "Naslov za \r!c\r%Q\r je postavljen od \r!n\r%Q\r u %Q"
+
+#, fuzzy
+#~ msgid "Topic for \r!c\r%Q\r was set by \r!n\r%Q\r!%Q@\r!h\r%Q\r"
+#~ msgstr "Naslov za \r!c\r%Q\r je postavljen od \r!n\r%Q\r"
+
+#~ msgid "Channel mode for \r!c\r%Q\r is %s"
+#~ msgstr "Mod kanala za \r!c\r%Q\r je %s"
+
+#~ msgid "User mode for \r!n\r%Q\r is %s"
+#~ msgstr "Mod kanala za \r!c\r%Q\r je %s"
+
+#, fuzzy
+#~ msgid "End of channel %Q for \r!c\r%Q\r"
+#~ msgstr "Kraj liste zabrana (ban) za \r!c\r%Q\r"
+
+#, fuzzy
+#~ msgid "ban list"
+#~ msgstr "Lista URL zabrane"
+
+#, fuzzy
+#~ msgid "invite list"
+#~ msgstr "Sa�uvaj listu"
+
+#, fuzzy
+#~ msgid "ban exception list"
+#~ msgstr "maske izuzetaka zabrane"
+
+#, fuzzy
+#~ msgid "%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"
+#~ msgstr ""
+#~ "Unos zabrane (ban) za \r!c\r%Q\r: \r!m-b\r%Q\r (postavljen od %c u %Q)"
+
+#, fuzzy
+#~ msgid "Ban listing"
+#~ msgstr "Lista URL zabrane"
+
+#, fuzzy
+#~ msgid "Invite listing"
+#~ msgstr "poruka pozivanja"
+
+#, fuzzy
+#~ msgid "Ban exception listing"
+#~ msgstr "maske izuzetaka zabrane"
+
+#, fuzzy
+#~ msgid ""
+#~ "WHO entry for %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cChannel%c: \r!c\r%Q\r, %"
+#~ "cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAway%c: %Q, %cReal "
+#~ "name%c: %Q"
+#~ msgstr ""
+#~ "Ko (WHO) unos za %c\r!n\r%Q\r%c[%Q@\r!h\r%Q\r]: %cKanal:%c \r!c\r%Q\r, %"
+#~ "cServer%c: \r!s\r%Q\r, %cSkokova:%c %d, %cOdsutnost:%c %Q. %cStvarno ime:%"
+#~ "c %Q"
+
+#, fuzzy
+#~ msgid "End of WHO list for %Q"
+#~ msgstr "Kraj /WHO liste za %W"
+
+#~ msgid "No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."
+#~ msgstr ""
+#~ "Nema �anse da se logujete kao '\r!n\r%Q\r' (%d:%Q): poku�avam '%Q'..."
+
+#~ msgid "%c\r!n\r%Q\r%c is away: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c je odsutan: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+#~ msgstr "%c\r!n\r%Q\r%c je %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#, fuzzy
+#~ msgid "%c\r!n\r%Q\r%c's real name: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c - pravo ime je: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c was %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+#~ msgstr "%c\r!n\r%Q\r%c je %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"
+
+#~ msgid "%c\r!n\r%Q\r%c's real name was: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c - pravo ime je: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c's channels: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c - kanali: %Q"
+
+#, fuzzy
+#~ msgid "Received a broken RPL_WHOISIDLE, can't evaluate the idle time"
+#~ msgstr ""
+#~ "Primljen prekinut RPL_WHOISIDLE: nemogu da procenim vreme neaktivnosti"
+
+#~ msgid "%c\r!n\r%Q\r%c's idle time: %ud %uh %um %us"
+#~ msgstr "%c\r!n\r%Q\r%c - vreme neaktivnosti: %u d %u h %u m %u s"
+
+#~ msgid "%c\r!n\r%Q\r%c's signon time: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c - vreme logovanja: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c's server: \r!s\r%Q\r - %Q"
+#~ msgstr "%c\r!n\r%Q\r%c - server: \r!s\r%Q\r : %Q"
+
+#, fuzzy
+#~ msgid "%c\r!n\r%Q\r%c is authenticated as %Q"
+#~ msgstr "%c\r!n\r%Q\r%c - pravo ime je: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c's info: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c - informacije: %Q"
+
+#~ msgid "%c\r!n\r%Q\r%c WHOIS info from \r!s\r%Q\r"
+#~ msgstr "%c\r!n\r%Q\r%c ko je (whois) informacije od \r!s\r%Q\r"
+
+#~ msgid "%c\r!n\r%Q\r%c WHOWAS info from \r!s\r%Q\r"
+#~ msgstr "%c\r!n\r%Q\r%c ko je (whois) informacije od \r!s\r%Q\r"
+
+#, fuzzy
+#~ msgid "Can't evaluate creation time"
+#~ msgstr "Ne mogu da prora�inam vreme kreiranja"
+
+#~ msgid "Channel was created at %Q"
+#~ msgstr "Kanal je kreiran u %Q"
+
+#~ msgid "Channel \r!c\r%Q\r was created at %Q"
+#~ msgstr "Kanal \r!c\r%Q\r je bio kreiran u %Q"
+
+#, fuzzy
+#~ msgid "Channel list begin: channel, users, topic"
+#~ msgstr "Po�etak liste kanala: Kamal , korisnika , naslov"
+
+#~ msgid "List: %Q"
+#~ msgstr "Lista: %Q"
+
+#, fuzzy
+#~ msgid "End of LIST"
+#~ msgstr "Kraj linkova"
+
+#~ msgid "Link: %Q"
+#~ msgstr "Link: %Q"
+
+#~ msgid "[Leaving away status after %ud %uh %um %us]: %Q"
+#~ msgstr "[Napu�ta status odsutnosti posle %u d %u h %u m %u s]: %Q"
+
+#~ msgid "[Leaving away status]: %Q"
+#~ msgstr "[Napusta status odsutnosti]: %Q"
+
+#~ msgid "Restoring pre-away nickname (%Q)"
+#~ msgstr "Koristim serverski naveden nadimak (%Q)"
+
+#~ msgid "[Entering away status]: %Q"
+#~ msgstr "[Prelazi u status odsutnosti]: %Q"
+
+#, fuzzy
+#~ msgid "Setting away nickname (%Q)"
+#~ msgstr "Server %Q ima nadimak: %s"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's server info: %s"
+#~ msgstr "%c\r!n\r%Q\r%c - informacije: %Q"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's administrator is %s"
+#~ msgstr "%c\r!n\r%Q\r%c - informacije: %Q"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's contact adress is %s"
+#~ msgstr "%c\r!n\r%Q\r%c - kanali: %Q"
+
+#, fuzzy
+#~ msgid "\r!n\r%Q\r invited %Q into channel %Q"
+#~ msgstr "\r!n\r%Q\r [%Q@\r!h\r%Q\r] vas poziva na kanal \r!c\r%Q\r (%Q)"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's information:"
+#~ msgstr "%c\r!n\r%Q\r%c - informacije: %Q"
+
+#, fuzzy
+#~ msgid "%c\r!s\r%s\r%c's time is %Q"
+#~ msgstr "[\r!s\r%s\r]: %s"
+
+#, fuzzy
+#~ msgid "Cannot sent to channel: %Q"
+#~ msgstr "Nema postavljenog naslova za kanal \r!c\r%Q\r"
+
+#, fuzzy
+#~ msgid "Cannot sent text to channel %Q: %Q"
+#~ msgstr "Napustio si kanal \r!c\r%Q\r :%Q"
+
+#, fuzzy
+#~ msgid "Cannot sent to channel"
+#~ msgstr "Trenutni prozor nije kanal"
+
+#, fuzzy
+#~ msgid "Cannot sent text to channel %Q"
+#~ msgstr "Nema postavljenog naslova za kanal \r!c\r%Q\r"
+
+#, fuzzy
+#~ msgid "Your encoding is now %Q"
+#~ msgstr "Va� korisni�ki mod je %s"
+
+#, fuzzy
+#~ msgid "%c\r!n\r%Q\r%c's codepage is %Q: %Q"
+#~ msgstr "%c\r!n\r%Q\r%c - kanali: %Q"
+
+#~ msgid "Your user mode is %s"
+#~ msgstr "Va� korisni�ki mod je %s"
+
+#, fuzzy
+#~ msgid "Hostname resolution aborted"
+#~ msgstr "Konektovanje prekinuto"
+
+#, fuzzy
+#~ msgid "Attempting %Q to %Q (%Q) on port %u"
+#~ msgstr "Poku�avam %w ka %s (%s) na portu %u"
+
+#~ msgid "secure connection"
+#~ msgstr "sigurna konekcija"
+
+#~ msgid "Attempting to 'bounce' on proxy %s on port %u (protocol %s)"
+#~ msgstr "Poku�avam 'skok' na proksi %s na portu %u (protokol %s)"
+
+#~ msgid "Using cached proxy IP address (%s)"
+#~ msgstr "Koristim ke�iranu IP adresu proksija (%s)"
+
+#, fuzzy
+#~ msgid "Unable to look up the IRC proxy hostname: Can't start the DNS slave"
+#~ msgstr ""
+#~ "Ne mogu da pronadjem ime hosta IRC proksija: Ne mogu da pokrenem DNS slave"
+
+#~ msgid "Resuming direct server connection"
+#~ msgstr "Nastavljam direktno konektovanje na server"
+
+#, fuzzy
+#~ msgid "Looking up the proxy hostname (%s)..."
+#~ msgstr "Tra�im ime hosta za proksi (%s)"
+
+#~ msgid "Can't find the proxy IP address: %Q"
+#~ msgstr "Ne mogu da na�em IP adresu proksija: %Q"
+
+#~ msgid "Proxy hostname resolved to %s"
+#~ msgstr "Ime hosta proksija pronadjeno kao %s"
+
+#~ msgid "Proxy %s has a nickname: %s"
+#~ msgstr "Proksi %s ima nadimak: %s"
+
+#~ msgid "Using cached server IP address (%s)"
+#~ msgstr "Koristim ke�iranu IP adresu servera (%s)"
+
+#, fuzzy
+#~ msgid "Unable to look up the server hostname: Can't start the DNS slave"
+#~ msgstr ""
+#~ "Ne mogu da pronadjem ime hosta IRC servera: Ne mogu da pokrenem DNS slave"
+
+#, fuzzy
+#~ msgid "Looking up the server hostname (%s)..."
+#~ msgstr "Tra�im ime hosta za irc server (%s)"
+
+#~ msgid "Can't find the server IP address: %Q"
+#~ msgstr "Ne mogu da na�em IP adresu servera: %Q"
+
+#, fuzzy
+#~ msgid "If this server is an IPv6 one, try /server -i %s"
+#~ msgstr "Ako je ovaj server IPV6, probajte /server -i %s"
+
+#~ msgid "Server hostname resolved to %s"
+#~ msgstr "Ime hosta servera prona�eno kao %s"
+
+#~ msgid "Real hostname for %s is %s"
+#~ msgstr "Stvarno ime hosta za %s je %s"
+
+#~ msgid "Server %s has a nickname: %s"
+#~ msgstr "Server %s ima nadimak: %s"
+
+#~ msgid "The specified bind address (%Q) is not valid"
+#~ msgstr "Specifi�na bind adresa (%Q) nije validna"
+
+#~ msgid ""
+#~ "The specified bind address (%Q) is not valid (the interface it refers to "
+#~ "might be down)"
+#~ msgstr ""
+#~ "Specifi�na bind adresa (%Q) nije validna (interfejs izgleda da je otkazao)"
+
+#, fuzzy
+#~ msgid "The system-wide IPv6 bind address (%s) is not valid"
+#~ msgstr "Sistemsko globalno IPV6 povezivanje adrese (%s) nije va�e�e"
+
+#, fuzzy
+#~ msgid ""
+#~ "The system-wide IPv6 bind address (%s) is not valid (the interface it "
+#~ "refers to might be down)"
+#~ msgstr ""
+#~ "Sistemsko globalno IPV6 povezivanje adrese (%s) nije va�e�e: izgleda da "
+#~ "je interfejs pao"
+
+#, fuzzy
+#~ msgid "The system-wide IPv4 bind address (%s) is not valid"
+#~ msgstr "Sistemsko globalno IPV4 povezivanje adrese (%s) nije va�e�e"
+
+#, fuzzy
+#~ msgid ""
+#~ "The system-wide IPv4 bind address (%s) is not valid (the interface it "
+#~ "refers to might be down)"
+#~ msgstr ""
+#~ "Sistemsko globalno IPV4 povezivanje adrese (%s) nije va�e�e: izgleda da "
+#~ "je interfejs pao"
+
+#, fuzzy
+#~ msgid "Configure Servers..."
+#~ msgstr "&Podesi"
+
+#, fuzzy
+#~ msgid "Manage Addons..."
+#~ msgstr "U�itavanje ikona..."
+
+#~ msgid "Configure Registered Users..."
+#~ msgstr "Registrovani korisnici..."
+
+#, fuzzy
+#~ msgid "Configure Identity..."
+#~ msgstr "&Podesi"
+
+#, fuzzy
+#~ msgid "Show SocketSpy..."
+#~ msgstr "�&pijun priklju�ka"
+
+#, fuzzy
+#~ msgid "Get Network Links"
+#~ msgstr "Nova Mre�a"
+
+#~ msgid "Get Channel List"
+#~ msgstr "Lista kanala"
+
+#~ msgid "Configure KVIrc..."
+#~ msgstr "Opcije"
+
+#, fuzzy
+#~ msgid "Shows the general options dialog"
+#~ msgstr "Poka�i dijalog opcija kao toplevel prozor"
+
+#, fuzzy
+#~ msgid "Customize Toolbars..."
+#~ msgstr "&Alati"
+
+#, fuzzy
+#~ msgid "Join Channels..."
+#~ msgstr "Ovo nije kanal"
+
+#, fuzzy
+#~ msgid "Edit Actions..."
+#~ msgstr "U�itavanje opcija..."
+
+#~ msgid "Edit Aliases..."
+#~ msgstr "Alijasi..."
+
+#~ msgid "Edit Events..."
+#~ msgstr "Doga�aji..."
+
+#~ msgid "Edit Popups..."
+#~ msgstr "Iska�u�i meni..."
+
+#~ msgid "Edit Raw Events..."
+#~ msgstr "Sirovi doga�aji..."
+
+#, fuzzy
+#~ msgid "New Script Tester"
+#~ msgstr "Centar za skripte"
+
+#, fuzzy
+#~ msgid "Help Index"
+#~ msgstr "Prozor za pomo�"
+
+#, fuzzy
+#~ msgid "Shows the documentation index"
+#~ msgstr "Poka�i dijalog opcija kao toplevel prozor"
+
+#, fuzzy
+#~ msgid "KVIrc WWW"
+#~ msgstr "&Pove�aj KVIrc przor"
+
+#, fuzzy
+#~ msgid "Opens the KVIrc homepage"
+#~ msgstr "KVIrc po�etna &stranica"
+
+#, fuzzy
+#~ msgid "Cascade windows"
+#~ msgstr "&Nasla�i prozore"
+
+#, fuzzy
+#~ msgid "Minimize all windows"
+#~ msgstr "M&inimizuj"
+
+#, fuzzy
+#~ msgid "New IRC Context"
+#~ msgstr "&Nov irc kontekst"
+
+#, fuzzy
+#~ msgid "Quit KVIrc"
+#~ msgstr "&Zavr�i Kvirc"
+
+#, fuzzy
+#~ msgid "IRC Context Display"
+#~ msgstr "&Nov irc kontekst"
+
+#, fuzzy
+#~ msgid "Connect/Disconnect"
+#~ msgstr "Konekcija"
+
+#~ msgid "Connect"
+#~ msgstr "Pove�i se"
+
+#, fuzzy
+#~ msgid "Abort Connection"
+#~ msgstr "nema konekcije"
+
+#, fuzzy
+#~ msgid "Join Channel"
+#~ msgstr "Ovo nije kanal"
+
+#, fuzzy
+#~ msgid "Change Nickname"
+#~ msgstr "Promeni nadimak pri odsutnosti"
+
+#, fuzzy
+#~ msgid "Connect To"
+#~ msgstr "Pove�i se"
+
+#, fuzzy
+#~ msgid "Server Notices (+s)"
+#~ msgstr "s (Obave�tenja servera)"
+
+#, fuzzy
+#~ msgid "Away/Back"
+#~ msgstr "&Odsutnost"
+
+#, fuzzy
+#~ msgid "Enter Away Mode"
+#~ msgstr "&Odsutnost"
+
+#, fuzzy
+#~ msgid "Leave Away Mode"
+#~ msgstr "&Odsutnost"
+
+#, fuzzy
+#~ msgid "Irc Tools"
+#~ msgstr "Irc alati"
+
+#, fuzzy
+#~ msgid "Irc Actions"
+#~ msgstr "Akcije"
+
+#, fuzzy
+#~ msgid "Changed text encoding to %Q"
+#~ msgstr "Izaberi fajlove za slanje"
+
+#, fuzzy
+#~ msgid "Connection to server established"
+#~ msgstr "Pove�i na izabrano"
+
+#, fuzzy
+#~ msgid "[LINK WARNING]: Socket message truncated to 512 bytes."
+#~ msgstr "Poruka priklju�ka skra�ena na 512 bajtova."
+
+#, fuzzy
+#~ msgid ""
+#~ "The server seems to support the WATCH notify list method, will try to use "
+#~ "it"
+#~ msgstr ""
+#~ "Server izgleda podr�ava WATCH listu obave�tenja: probacemo da je "
+#~ "koristimo."
+
+#~ msgid "Can't resolve local host address, using user supplied one (%Q)"
+#~ msgstr ""
+#~ "Ne mogu da re�im adresu lokalnog hosta : koristim postavku krisnika (%Q)"
+
+#, fuzzy
+#~ msgid "Can't resolve local host address, using default 127.0.0.1"
+#~ msgstr ""
+#~ "Ne mogu da re�im adresu lokalnog hosta : koristim predefinisanu 127.0.0.1"
+
+#~ msgid "Local host address is %Q"
+#~ msgstr "Adresa lokalnog hosta je %Q"
+
+#~ msgid "The local IP address as seen by the IRC server is %Q"
+#~ msgstr "Tra�im ime hosta za proksi (%Q)"
+
+#, fuzzy
+#~ msgid "Can't start the DNS slave thread"
+#~ msgstr "Ne mogu da pokrenem DNS traganje"
+
+#~ msgid "Unable to resolve the local hostname as seen by the IRC server: %Q"
+#~ msgstr "Tra�im ime hosta za proksi (%Q)"
+
+#, fuzzy
+#~ msgid "Looking up the local hostname as seen by the IRC server (%Q)"
+#~ msgstr "Tra�im ime hosta za proksi (%s)"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unable to resolve the local hostname as seen by the IRC server: %Q, using "
+#~ "previously resolved %Q"
+#~ msgstr "Tra�im ime hosta za proksi (%s)"
+
+#, fuzzy
+#~ msgid "Local hostname as seen by the IRC server resolved to %s"
+#~ msgstr "Tra�im ime hosta za proksi (%s)"
+
+#~ msgid "Using server specific username (%Q)"
+#~ msgstr "Koristim serverski navedeno ime korisnika (%Q)"
+
+#~ msgid "Using network specific username (%Q)"
+#~ msgstr "Koristim serverski navedeno ime korisnika (%Q)"
+
+#~ msgid "Using server specific nickname (%Q)"
+#~ msgstr "Koristim serverski naveden nadimak (%Q)"
+
+#~ msgid "Using network specific nickname (%Q)"
+#~ msgstr "Koristim serverski naveden nadimak (%Q)"
+
+#~ msgid "Using server specific real name (%Q)"
+#~ msgstr "Koristim serverski navedeno stvarno ime (%Q)"
+
+#~ msgid "Using network specific real name (%Q)"
+#~ msgstr "Koristim serverski navedeno stvarno ime (%Q)"
+
+#~ msgid "Logging in as %Q!%Q :%Q"
+#~ msgstr "Prijavljeni ste kao %Q!%Q :%Q"
+
+#~ msgid "Sending %s as password"
+#~ msgstr "�aljem %s kao lozinku"
+
+#, fuzzy
+#~ msgid "Executing scheduled network specific \"on connect\" commands"
+#~ msgstr "Izvr�avam raspore�ene \"on connect\" komande specifi�ne za server"
+
+#~ msgid "Executing scheduled server specific \"on connect\" commands"
+#~ msgstr "Izvr�avam raspore�ene \"on connect\" komande specifi�ne za server"
+
+#~ msgid ""
+#~ "The server refused the suggested nickname (%s) and named you %s instead"
+#~ msgstr ""
+#~ "Server odbija predlo�eni nadimak (%s) i umesto toga vas imenuje sa %s"
+
+#, fuzzy
+#~ msgid "Login operations complete, happy ircing!"
+#~ msgstr "Operacija prijavljivanja je kompletna: prijatno ircanje!"
+
+#, fuzzy
+#~ msgid "Executing scheduled network specific \"on login\" commands"
+#~ msgstr "Izvr�avam raspore�ene \"on connect\" komande specifi�ne za server"
+
+#, fuzzy
+#~ msgid "Executing scheduled server specific \"on login\" commands"
+#~ msgstr "Izvr�avam raspore�ene \"on connect\" komande specifi�ne za server"
+
+#, fuzzy
+#~ msgid "Auto-joining network specific channels"
+#~ msgstr "Koristim serverski naveden nadimak (%s)"
+
+#, fuzzy
+#~ msgid "Auto-joining server specific channels"
+#~ msgstr "Koristim serverski naveden nadimak (%s)"
+
+#, fuzzy
+#~ msgid "Updating away state for channel %Q"
+#~ msgstr "Nema postavljenog naslova za kanal \r!c\r%Q\r"
+
+#~ msgid ""
+#~ "Ops...it looks like I can't load modules on this sytem.\n"
+#~ "I have been looking for the %s library but I haven't been able to load "
+#~ "it\n"
+#~ "due to the following error: \"%s\"\n"
+#~ "Aborting."
+#~ msgstr ""
+#~ "Ups... izgleda da ne mogu da u�itam module na ovom sistemu.\n"
+#~ "Gledao sam za %s biblioteku ali nisam u mogu�nosti da je u�itam\n"
+#~ "uz prate�u gre�ku: \"%s\"\n"
+#~ "Prekidam."
+
+#, fuzzy
+#~ msgid ""
+#~ "Ops...it looks like you have a broken distribution.\n"
+#~ "The setup module does not export the \"setup_begin\" function.\n"
+#~ "Aborting!"
+#~ msgstr ""
+#~ "Ups...izgleda da imate o�te�enu distribuciju.\n"
+#~ "Modul za pode�avanje nije izvezo \"setup_wizard\" funkciju.\n"
+#~ "Prekidam!"
+
+#~ msgid "Setup aborted"
+#~ msgstr "Pode�avanje prekinuto"
+
+#, fuzzy
+#~ msgid ""
+#~ "Ops...it looks like you have a broken distribution.\n"
+#~ "The setup module does not export the \"setup_finish\" function.\n"
+#~ "Trying to continue anyway..."
+#~ msgstr ""
+#~ "Ups...izgleda da imate o�te�enu distribuciju.\n"
+#~ "Modul za pode�avanje nije izvezo \"setup_wizard\" funkciju.\n"
+#~ "Prekidam!"
+
+#, fuzzy
+#~ msgid ""
+#~ "Failed writing the kvirc home directory path to %Q.\n"
+#~ "You will need to do it manually , otherwise KVirc will restart with\n"
+#~ "the setup!"
+#~ msgstr ""
+#~ "Neuspe�no zapisivanje putanje kvirc home direktorijuma u %s.\n"
+#~ "Mora�ete to da uradite ru�no , u protivnom KVIrc �e ponoviti\n"
+#~ "podesavanje!"
+
+#~ msgid "Normal text"
+#~ msgstr "Normalni tekst"
+
+#, fuzzy
+#~ msgid "Selection"
+#~ msgstr "selekcija"
+
+#, fuzzy
+#~ msgid "Highlighted text"
+#~ msgstr "Nagla�eni tekst"
+
+#, fuzzy
+#~ msgid "URL foreground"
+#~ msgstr "URL ispis"
+
+#, fuzzy
+#~ msgid "Link overlay foreground"
+#~ msgstr "Veza prekriva ispis"
+
+#, fuzzy
+#~ msgid "Parser error"
+#~ msgstr "Gre�ka parsera"
+
+#, fuzzy
+#~ msgid "Parser warning"
+#~ msgstr "Upozorenje parsera"
+
+#, fuzzy
+#~ msgid "Host lookup result"
+#~ msgstr "Rezultat potrage hosta"
+
+#, fuzzy
+#~ msgid "Socket message"
+#~ msgstr "poruka priklju�ka"
+
+#, fuzzy
+#~ msgid "Socket warning"
+#~ msgstr "upozorenje priklju�ka"
+
+#, fuzzy
+#~ msgid "Socket error"
+#~ msgstr "gre�ka priklju�ka"
+
+#, fuzzy
+#~ msgid "System error"
+#~ msgstr "sistemska gre�ka"
+
+#, fuzzy
+#~ msgid "Raw data to server"
+#~ msgstr "sirovi podaci ka serveru"
+
+#, fuzzy
+#~ msgid "Connection status"
+#~ msgstr "status konekcije"
+
+#, fuzzy
+#~ msgid "System warning"
+#~ msgstr "sistemsko upozorenje"
+
+#, fuzzy
+#~ msgid "System message"
+#~ msgstr "sistemska poruka"
+
+#, fuzzy
+#~ msgid "Unhandled server reply"
+#~ msgstr "nepodr�an odgovor servera"
+
+#, fuzzy
+#~ msgid "Server information"
+#~ msgstr "informacije servera"
+
+#, fuzzy
+#~ msgid "Server Message of the Day"
+#~ msgstr "serverska poruka dana"
+
+#, fuzzy
+#~ msgid "Server ping"
+#~ msgstr "serverov ping"
+
+#, fuzzy
+#~ msgid "Join message"
+#~ msgstr "poruka ulaska"
+
+#, fuzzy
+#~ msgid "Unrecognized/broken message"
+#~ msgstr "neprepoznatljiva/prekinuta poruka"
+
+#, fuzzy
+#~ msgid "Topic message"
+#~ msgstr "poruka teme (topic-a)"
+
+#, fuzzy
+#~ msgid "Own private message"
+#~ msgstr "li�na privatna poruka"
+
+#, fuzzy
+#~ msgid "Channel private message"
+#~ msgstr "privatna poruka kanala"
+
+#, fuzzy
+#~ msgid "Query private message"
+#~ msgstr "upit privatne poruke"
+
+#~ msgid "CTCP reply"
+#~ msgstr "CTCP odgovor"
+
+#~ msgid "CTCP request replied"
+#~ msgstr "CTCP zahtev odgovoren"
+
+#~ msgid "CTCP request ignored"
+#~ msgstr "CTCP zahtev ignorisan"
+
+#~ msgid "CTCP request flood warning"
+#~ msgstr "CTCP zahtev upozorenje na poplavu"
+
+#~ msgid "CTCP request unknown"
+#~ msgstr "CTCP zahtev nepoznat"
+
+#, fuzzy
+#~ msgid "User action"
+#~ msgstr "akcija korisnika"
+
+#, fuzzy
+#~ msgid "Avatar change"
+#~ msgstr "promena avatara"
+
+#, fuzzy
+#~ msgid "Split message"
+#~ msgstr "poruka razdvajanja"
+
+#, fuzzy
+#~ msgid "Quit on netsplit message"
+#~ msgstr "poruka prekida pri razdvajanju"
+
+#, fuzzy
+#~ msgid "Nick changes"
+#~ msgstr "promena nadimka"
+
+#~ msgid "+o mode change"
+#~ msgstr "+o promena moda"
+
+#~ msgid "-o mode change"
+#~ msgstr "-o promena moda"
+
+#~ msgid "+v mode change"
+#~ msgstr "+v promena moda"
+
+#~ msgid "-v mode change"
+#~ msgstr "-v promena moda"
+
+#, fuzzy
+#~ msgid "Multiple user mode change"
+#~ msgstr "promena moda za vi�e korisnika"
+
+#, fuzzy
+#~ msgid "Channel key change"
+#~ msgstr "promena klju�a kanala"
+
+#, fuzzy
+#~ msgid "Channel limit change"
+#~ msgstr "promena limita kanala"
+
+#~ msgid "+b mode change"
+#~ msgstr "+b promena moda"
+
+#~ msgid "-b mode change"
+#~ msgstr "-b promena moda"
+
+#~ msgid "+e mode change"
+#~ msgstr "+e promena moda"
+
+#, fuzzy
+#~ msgid "-e mode change"
+#~ msgstr "-o promena moda"
+
+#~ msgid "+I mode change"
+#~ msgstr "+i promena moda"
+
+#~ msgid "-I mode change"
+#~ msgstr "-i promena moda"
+
+#, fuzzy
+#~ msgid "Multiple channel mode change"
+#~ msgstr "promena moda za vi�e kanala"
+
+#, fuzzy
+#~ msgid "Who reply"
+#~ msgstr "ko (who) odgovor"
+
+#, fuzzy
+#~ msgid "DCC request"
+#~ msgstr "DCC %s zahtev"
+
+#, fuzzy
+#~ msgid "DCC message"
+#~ msgstr "ICQ poruka"
+
+#, fuzzy
+#~ msgid "DCC error"
+#~ msgstr "DCC gre�ka"
+
+#, fuzzy
+#~ msgid "Nickname problem"
+#~ msgstr "problem nadimka"
+
+#, fuzzy
+#~ msgid "Whois user reply"
+#~ msgstr "koje (whois) odgovor korisnika"
+
+#, fuzzy
+#~ msgid "Whois channels reply"
+#~ msgstr "koje (whois) odgovor kanala"
+
+#, fuzzy
+#~ msgid "Whois idle reply"
+#~ msgstr "koje (whois) neuposlen odgovor"
+
+#, fuzzy
+#~ msgid "Whois server reply"
+#~ msgstr "koje (whois) odgovor servera"
+
+#, fuzzy
+#~ msgid "Whois other reply"
+#~ msgstr "koje (whois) ostali odgovori"
+
+#, fuzzy
+#~ msgid "Channel creation time reply"
+#~ msgstr "odgovor vremena stvaranja"
+
+#, fuzzy
+#~ msgid "Notify list joins"
+#~ msgstr "lista obave�tenja ulasci"
+
+#, fuzzy
+#~ msgid "Notify list leaves"
+#~ msgstr "lista obave�tenja odlasci"
+
+#, fuzzy
+#~ msgid "Own encrypted private message"
+#~ msgstr "vlastita privatna �ifrovana poruka"
+
+#, fuzzy
+#~ msgid "Channel encrypted private message"
+#~ msgstr "�ifrovana privatna poruka kanala"
+
+#, fuzzy
+#~ msgid "Query encrypted private message"
+#~ msgstr "upit privatne �ifrovane poruke"
+
+#~ msgid "DCC chat message"
+#~ msgstr "DCC poruka za razgovor"
+
+#, fuzzy
+#~ msgid "Encrypted DCC chat message"
+#~ msgstr "�ifrovana poruka DCC razgovora"
+
+#, fuzzy
+#~ msgid "Login operations completed"
+#~ msgstr "login operacija kompletna"
+
+#, fuzzy
+#~ msgid "Kick action"
+#~ msgstr "akcija izbacivanja"
+
+#, fuzzy
+#~ msgid "Links reply"
+#~ msgstr "odgovor linkova"
+
+#, fuzzy
+#~ msgid "Spam report"
+#~ msgstr "spam izve�taj"
+
+#~ msgid "ICQ message"
+#~ msgstr "ICQ poruka"
+
+#~ msgid "ICQ user-message"
+#~ msgstr "ICQ poruka korisnika"
+
+#, fuzzy
+#~ msgid "Outgoing ICQ user-message"
+#~ msgstr "odlaze�a IRC korisni�ka-poruka"
+
+#, fuzzy
+#~ msgid "Channel notice"
+#~ msgstr "obave�tenje kanala"
+
+#, fuzzy
+#~ msgid "Encrypted channel notice"
+#~ msgstr "�ifrovano obave�tenje kanala"
+
+#, fuzzy
+#~ msgid "Query notice"
+#~ msgstr "upit obave�tenja"
+
+#, fuzzy
+#~ msgid "Encrypted query notice"
+#~ msgstr "�ifrovano obave�tenje kanala"
+
+#, fuzzy
+#~ msgid "Server notice"
+#~ msgstr "obave�tenje servera"
+
+#, fuzzy
+#~ msgid "Halfop mode change"
+#~ msgstr "half op promena moda"
+
+#, fuzzy
+#~ msgid "Unknown CTCP reply"
+#~ msgstr "nepoznat CTCP odgovor"
+
+#~ msgid "NickServ message"
+#~ msgstr "NickServ poruka"
+
+#~ msgid "ChanServ message"
+#~ msgstr "ChanServ poruka"
+
+#, fuzzy
+#~ msgid "Away message"
+#~ msgstr "poruka odsutnosti"
+
+#, fuzzy
+#~ msgid "Ident message"
+#~ msgstr "ident poruka"
+
+#, fuzzy
+#~ msgid "Channel list message"
+#~ msgstr "poruka liste kanala"
+
+#, fuzzy
+#~ msgid "Half-deop mode change"
+#~ msgstr "half deop promena moda"
+
+#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "poruka pozivanja"
+
+#, fuzzy
+#~ msgid "Multimedia message"
+#~ msgstr "multimedijalna poruka"
+
+#, fuzzy
+#~ msgid "Query trace message"
+#~ msgstr "upit prati poruke"
+
+#, fuzzy
+#~ msgid "Wallops message"
+#~ msgstr "wallops poruka"
+
+#, fuzzy
+#~ msgid "Join error message"
+#~ msgstr "poruka gre�ke ulaza"
+
+#, fuzzy
+#~ msgid "Broadcast private message"
+#~ msgstr "privatna poruka prenosa"
+
+#, fuzzy
+#~ msgid "Broadcast notice"
+#~ msgstr "obave�tenje prenosa"
+
+#, fuzzy
+#~ msgid "Am kicked"
+#~ msgstr "ja isteran"
+
+#, fuzzy
+#~ msgid "Am op'd"
+#~ msgstr "me oped"
+
+#, fuzzy
+#~ msgid "Am voiced"
+#~ msgstr "me voiced"
+
+#, fuzzy
+#~ msgid "Am deop'd"
+#~ msgstr "me de-oped"
+
+#, fuzzy
+#~ msgid "Am devoiced"
+#~ msgstr "me de-voiced"
+
+#, fuzzy
+#~ msgid "Am halfop'd"
+#~ msgstr "me half-oped"
+
+#, fuzzy
+#~ msgid "Am de-halfop'd"
+#~ msgstr "me de-half-oped"
+
+#, fuzzy
+#~ msgid "Ban matching my mask"
+#~ msgstr "poklapanje zabrane (ban) po masci"
+
+#, fuzzy
+#~ msgid "Unban matching my mask"
+#~ msgstr "poklapanje unban-a po masci"
+
+#, fuzzy
+#~ msgid "Ban exception matching my mask"
+#~ msgstr "izuzetak zabrane (ban-a) po masci"
+
+#, fuzzy
+#~ msgid "Ban unexception matching my mask"
+#~ msgstr "neizuzetna zabrana po masci"
+
+#, fuzzy
+#~ msgid "Invite exception matching my mask"
+#~ msgstr "izuzetak poziva koji se poklapa po masci"
+
+#, fuzzy
+#~ msgid "Invite unexception matching my mask"
+#~ msgstr "neizuzetak poziva koji se poklapa po masci"
+
+#, fuzzy
+#~ msgid "Ignored user message"
+#~ msgstr "ignorisana poruka korisnika"
+
+#, fuzzy
+#~ msgid "Server statistics"
+#~ msgstr "statistike servera"
+
+#, fuzzy
+#~ msgid "SSL message"
+#~ msgstr "DCC poruka"
+
+#, fuzzy
+#~ msgid "Search"
+#~ msgstr "Pretra�i"
+
+#, fuzzy
+#~ msgid "Generic success"
+#~ msgstr "status konekcije"
+
+#, fuzzy
+#~ msgid "Generic status"
+#~ msgstr "status konekcije"
+
+#, fuzzy
+#~ msgid "Generic verbose message"
+#~ msgstr "ignorisana poruka korisnika"
+
+#, fuzzy
+#~ msgid "Generic warning"
+#~ msgstr "Upozorenje parsera"
+
+#, fuzzy
+#~ msgid "Generic error"
+#~ msgstr "Interna gre�ka."
+
+#, fuzzy
+#~ msgid "Generic critical error"
+#~ msgstr "Interna gre�ka."
+
+#, fuzzy
+#~ msgid "Chan admin status set"
+#~ msgstr "Operatori kanala"
+
+#, fuzzy
+#~ msgid "Chan admin status unset"
+#~ msgstr "Operatori kanala"
+
+#, fuzzy
+#~ msgid "Own chan admin status set"
+#~ msgstr "Operatori kanala"
+
+#, fuzzy
+#~ msgid "Own chan admin status unset"
+#~ msgstr "Operatori kanala"
+
+#, fuzzy
+#~ msgid "Userop mode change"
+#~ msgstr "+o promena moda"
+
+#, fuzzy
+#~ msgid "User-deop mode change"
+#~ msgstr "-o promena moda"
+
+#, fuzzy
+#~ msgid "Am de-userop'd"
+#~ msgstr "me de-oped"
+
+#, fuzzy
+#~ msgid "Chan owner status set"
+#~ msgstr "Operatori kanala"
+
+#, fuzzy
+#~ msgid "Chan owner status unset"
+#~ msgstr "Operatori kanala"
+
+#, fuzzy
+#~ msgid "Own chan owner status set"
+#~ msgstr "Operatori kanala"
+
+#, fuzzy
+#~ msgid "Own chan owner status unset"
+#~ msgstr "Operatori kanala"
+
+#, fuzzy
+#~ msgid "Server error"
+#~ msgstr "Gre�ka parsera"
+
+#~ msgid "Boolean options (1/0)"
+#~ msgstr "Boolean opcije (1/0)"
+
+#~ msgid "Rectangle options (x,y,width,height)"
+#~ msgstr "Opcije pravougaonika (x,y,�irina,visina)"
+
+#~ msgid "String options (string value)"
+#~ msgstr "Opcije znakova (znakovna vrednost)"
+
+#~ msgid "Color options (#RRGGBB)"
+#~ msgstr "Opcije boja (#RRGGBB)"
+
+#~ msgid "Mirccolor options (#RRGGBB)"
+#~ msgstr "Opcije mirc boja (#RRGGBB)"
+
+#~ msgid "Irc context color options (#RRGGBB)"
+#~ msgstr "Opcije boja IRC konteksta (#RRGGBB)"
+
+#~ msgid "Pixmap options (image path)"
+#~ msgstr "Pixmap opcije (putanja slike)"
+
+#~ msgid "Unsigned integer options (unsigned integer constant)"
+#~ msgstr "Neozna�ene celobrojne opcije (neozna�ena celobrojna konstanta)"
+
+#~ msgid "Font options (family,pointsize,style,charset,weight,flags (biusf))"
+#~ msgstr "Opcije fontova (vrsta,veli�ina.stil.karakterset,�irina,zastavice)"
+
+#~ msgid "Message color options (image_id,foreground,background,logFlag (0/1))"
+#~ msgstr "Opcije boja poruka (id_slike,pozadina,ispis,logFlag (0/1))"
+
+#~ msgid "String list options (comma separated list of strings)"
+#~ msgstr "Opcije liste znakova (zarezom razdvojena lista znakova)"
+
+#, fuzzy
+#~ msgid "Icon Table"
+#~ msgstr "&Ikone widget"
+
+#~ msgid "%Q is on IRC"
+#~ msgstr "\r!n\r%Q\r je na IRC-u"
+
+#~ msgid "%Q has left IRC"
+#~ msgstr "\r!n\r%Q\r je napustio IRC"
+
+#, fuzzy
+#~ msgid "Notify list: No users to check for, quitting"
+#~ msgstr "Lista obave�tenja: nema korisnika za proveru: zaustavljam"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: Timeout (%d sec) is too short, resetting to something more "
+#~ "reasonable (15 sec)"
+#~ msgstr ""
+#~ "Vreme isteka liste obave�tenja (%d sek) je stvarno premalo: resetujem na "
+#~ "ne�to mnogo prihvatljivije (15 sekundi)"
+
+#, fuzzy
+#~ msgid "Notify list: Notify list empty, quitting"
+#~ msgstr "Lista obavestenja: lista obave�tenja je prazna: zaustavljam"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: ISON delay (%d sec) is too short, resetting to something "
+#~ "more reasonable (5 sec)"
+#~ msgstr ""
+#~ "ISON ka�njenje liste obave�tenja (%d sek) je premalo: resetujema na ne�to "
+#~ "mnogo prihvatljivije (5 sekundi)"
+
+#~ msgid "Notify list: Checking for: %Q"
+#~ msgstr "Lista obave�tenja: proveravam za: %Q"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: Hey! You've used ISON behind my back? (I might be confused "
+#~ "now...)"
+#~ msgstr ""
+#~ "Lista obave�tenja: hej! koristili ste ISON iza mojih le�a ? (sada mogu "
+#~ "biti zbunjen....)"
+
+#, fuzzy
+#~ msgid "registration mask changed, or nickname is being used by someone else"
+#~ msgstr ""
+#~ "\r!n\r%s\r (%s@\r!h\r%s\r) je napustio IRC (registrovana maska je "
+#~ "promenjena ili neko drugi sad koristi njegov pseudonim)"
+
+#~ msgid ""
+#~ "Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q"
+#~ "\r] does not match (registration mask does not match, or nickname is "
+#~ "being used by someone else)"
+#~ msgstr ""
+#~ "Lista obave�tenja: \r!n\r%Q\r izgleda da je na vezi , ali maska (%Q@\r!h\r"
+#~ "%Q\r) se ne poklapa (neko drugi koristi njegov pseudonim ili se tvoja "
+#~ "registrovana maska(e) ne poklapa)"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: Unexpected inconsistency, registered user DB modified? "
+#~ "(restarting)"
+#~ msgstr ""
+#~ "Lista obave�tenja: neo�ekivana nedoslednost: baza registrovanih korisnika "
+#~ "modifikovana ? (restartujem)"
+
+#~ msgid ""
+#~ "Notify list: Unexpected inconsistency, expected \r!n\r%Q\r in the "
+#~ "registered user DB"
+#~ msgstr ""
+#~ "Lista obave�tenja: neo�ekivana nedoslednost: mislim da imamo \r!n\r%Q\r u "
+#~ "re�niku registrovanik korisnika..."
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: USERHOST delay (%d sec) is too short, resetting to something "
+#~ "more reasonable (5 sec)"
+#~ msgstr ""
+#~ "USERHOST ka�njenje liste obave�tenja (%d sek) je stvarno premalo: "
+#~ "resetujem na ne�to mnogo prihvatljivije (5 sekundi)"
+
+#, fuzzy
+#~ msgid "Notify list: Unexpected inconsistency, userhost list is empty!"
+#~ msgstr ""
+#~ "Lista obave�tenja: neo�ekivana nedoslednost: userhost lista je prazna...."
+#~ "mhhhh"
+
+#~ msgid "Notify list: Checking userhost for: %Q"
+#~ msgstr "Lista obave�tenja: proveravam userhost za: %Q"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: Hey! You've used USERHOST behind my back? (I might be "
+#~ "confused now...)"
+#~ msgstr ""
+#~ "Lista obave�tenja: hej! koristili ste USERHOST iza mojih le�a ? (sada "
+#~ "mogu biti zbunjen....)"
+
+#, fuzzy
+#~ msgid "Notify list: Broken USERHOST reply from the server? (%s)"
+#~ msgstr ""
+#~ "Lista obave�tenja: mmmg...primljen prekinut USERHOST odgovor od servera ? "
+#~ "(%s)"
+
+#~ msgid ""
+#~ "Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST "
+#~ "reply was received, will recheck in the next loop"
+#~ msgstr ""
+#~ "Lista obave�tenja: izgleda da je \r!n\r%Q\r oti�ao dok sam cekao njegov "
+#~ "USERHOST odgovor, proveri�u u slede�em krugu"
+
+#~ msgid "No users in the notify list"
+#~ msgstr "Nema korisnika u listi obave�tenja"
+
+#~ msgid "Notify list: Checking for:%Q"
+#~ msgstr "Lista obave�tenja: proveravam za: %Q"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: Timeout (%d sec) is too short, resetting to something more "
+#~ "reasonable (5 sec)"
+#~ msgstr ""
+#~ "Vreme isteka liste obave�tenja (%d sek) je stvarno malo: resetujem na "
+#~ "ne�to mnogo prihvatljivije (5 sekundi)"
+
+#~ msgid "Notify list: Adding watch entries for%Q"
+#~ msgstr "Lista obave�tenja: dodajem zapis za pra�enje za %Q"
+
+#, fuzzy
+#~ msgid "registration mask changed or desync with the watch service"
+#~ msgstr ""
+#~ "\r!n\r%s\r (%s@\r!h\r%s\r) je napustio IRC (traga�: registrovana maska "
+#~ "promenjena ili nije sinhronizovana sa traga� 'watch' servisom)"
+
+#~ msgid ""
+#~ "Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q"
+#~ "\r] does not match (watch: registration mask does not match, or nickname "
+#~ "is being used by someone else)"
+#~ msgstr ""
+#~ "Lista obave�tenja: \r!n\r%Q\r izgleda da je na vezi , ali maska (%Q@\r!h\r"
+#~ "%Q\r) se ne poklapa (traga�: neko drugi koristi njegov nadimak ili se "
+#~ "va�a registrovana maska ne poklapa)"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: Unexpected inconsistency, registered user DB modified? "
+#~ "(watch: restarting)"
+#~ msgstr ""
+#~ "Lista obave�tenja: neo�ekivana nedoslednost: modifikovana baza "
+#~ "registrovanih korisnika ? (traga�: restartujem)"
+
+#~ msgid "Notify list: Stopped watching for \r!n\r%Q\r"
+#~ msgstr "Lista obave�tenja: zaustavljeno traganje za \r!n\r%Q\r"
+
+#, fuzzy
+#~ msgid "watch"
+#~ msgstr "Putanja"
+
+#~ msgid "Notify list: \r!n\r%Q\r is offline (watch)"
+#~ msgstr "Lista obave�tenja: \r!n\r%Q\r nej na vezi (traga�)"
+
+#, fuzzy
+#~ msgid "commandline"
+#~ msgstr "Nije definisana komandna linija"
+
+#~ msgid "[SSL]: %c%s"
+#~ msgstr "[SSL]: %c%s"
+
+#~ msgid "[SSL]: Cipher: %c%s"
+#~ msgstr "[SSL]: �ifra: %c%s"
+
+#~ msgid "[SSL]: Version: %c%s"
+#~ msgstr "[SSL]: Verzija: %c%s"
+
+#~ msgid "[SSL]: Bits: %c%d (%d used)"
+#~ msgstr "[SSL]: Bitova: %c%d (%d kori��eno)"
+
+#~ msgid "[SSL]: Version: %c%d"
+#~ msgstr "[SSL]: Verzija: %c%d"
+
+#~ msgid "[SSL]: Serial number: %c%d"
+#~ msgstr "[SSL]: Serijski broj: %c%d"
+
+#~ msgid "[SSL]: Subject:"
+#~ msgstr "[SSL]: Tema:"
+
+#~ msgid "[SSL]: Common name: %c%s"
+#~ msgstr "[SSL]: Uobi�ajeno ime: %c%s"
+
+#~ msgid "[SSL]: Organization: %c%s"
+#~ msgstr "[SSL]: Organizacija: %c%s"
+
+#~ msgid "[SSL]: Organizational unit: %c%s"
+#~ msgstr "[SSL]: Organizaciona jedinica: %c%s"
+
+#~ msgid "[SSL]: Country: %c%s"
+#~ msgstr "[SSL]: Zemlja: %c%s"
+
+#~ msgid "[SSL]: State or province: %c%s"
+#~ msgstr "[SSL]: Dr�ava ili provincija: %c%s"
+
+#~ msgid "[SSL]: Locality: %c%s"
+#~ msgstr "[SSL]: Mesto: %c%s"
+
+#~ msgid "[SSL]: Issuer:"
+#~ msgstr "[SSL]: Emitent:"
+
+#~ msgid "[SSL]: Public key: %c%s (%d bits)"
+#~ msgstr "[SSL]: Javni klju�: %c%s (%d bitova)"
+
+#~ msgid "[SSL]: Signature type: %c%s"
+#~ msgstr "[SSL]: Vrsta potpisa: %c%s"
+
+#~ msgid "[SSL]: Signature contents: %c%s"
+#~ msgstr "[SSL]: Sadr�aj potpisa: %c%s"
+
+#, fuzzy
+#~ msgid "Peer X509 certificate"
+#~ msgstr "Server X509 sertifikat"
+
+#, fuzzy
+#~ msgid "[SSL]: The peer didn't provide a certificate"
+#~ msgstr "Server nije obezbedio sertifikat"
+
+#~ msgid "Current transmission cipher"
+#~ msgstr "Trenutna �ifra preno�enja"
+
+#, fuzzy
+#~ msgid "[%s]: [SSL ERROR]: %s"
+#~ msgstr "[SSL GRE�KA]: %s"
+
+#, fuzzy
+#~ msgid "Failed to start the connection: %Q"
+#~ msgstr "Ne mogu da odredim lokalni port"
+
+#, fuzzy
+#~ msgid "Contacting %Q %s (%s) on port %u"
+#~ msgstr "Kontaktiram %w %s (%s) na portu %u"
+
+#~ msgid "proxy host"
+#~ msgstr "proksi host"
+
+#, fuzzy
+#~ msgid "IRC server"
+#~ msgstr "irc server"
+
+#, fuzzy
+#~ msgid "Low-level transport connection established [%s (%s:%u)]"
+#~ msgstr "Uspostavljena konekcija niskog nivoa transporta [%s (%s:%u)]"
+
+#~ msgid "Starting Secure Socket Layer handshake"
+#~ msgstr "Pokrenuto rukovanje Sigurnog Nivoa Priklju�ka"
+
+#, fuzzy
+#~ msgid "%Q established [%s (%s:%u)]"
+#~ msgstr "%w uspostavljen [%s (%s:%u)]"
+
+#~ msgid "Secure proxy connection"
+#~ msgstr "Sigurna proksi konekcija"
+
+#~ msgid "Proxy connection"
+#~ msgstr "Proksi konekcija"
+
+#, fuzzy
+#~ msgid "Negotiating relay information"
+#~ msgstr "Informacije relejnog pregovaranja"
+
+#, fuzzy
+#~ msgid "Sent connection request, waiting for acknowledgement"
+#~ msgstr "Poslat zahtev konektovanja, �ekam potvr�ivanje"
+
+#, fuzzy
+#~ msgid "Sent target host data, waiting for acknowledgement"
+#~ msgstr "Poslati podaci �eljenom hostu, �ekam potvr�ivanje"
+
+#, fuzzy
+#~ msgid "Sent auth method request, waiting for acknowledgement"
+#~ msgstr "Poslata zahtev za auth metodu, �ekam potvr�ivanje"
+
+#, fuzzy
+#~ msgid "Sent username and password, waiting for acknowledgement"
+#~ msgstr "Poslato ime korisnika i �ifra, �ekam potvr�ivanje"
+
+#, fuzzy
+#~ msgid "Sent connection request, waiting for \"HTTP 200\" acknowledgement"
+#~ msgstr "Poslat zahtev za konektovanje, �ekam za \"HTTP 200\" potvrdom"
+
+#~ msgid "[SSL]: %Q"
+#~ msgstr "[SSL]: %Q"
+
+#~ msgid "[SSL ERROR]: %Q"
+#~ msgstr "[SSL GRE�KA]: %Q"
+
+#~ msgid "[PROXY]: %Q"
+#~ msgstr "[PROKSI]: %Q"
+
+#~ msgid "[PROXY ERROR]: %Q"
+#~ msgstr "[PROKSI GRE�KA]: %Q"
+
+#~ msgid "[SOCKET]: %Q"
+#~ msgstr "[PRIKLJU�AK]: %Q"
+
+#~ msgid "[SOCKET ERROR]: %Q"
+#~ msgstr "[GRE�KA PRIKLJU�KA]: %Q"
+
+#~ msgid "[SOCKET WARNING]: %Q"
+#~ msgstr "[UPOZORENJE PRIKLJU�KA]: %Q"
+
+#~ msgid "Binding to local address %s"
+#~ msgstr "Ugra�ivanje na lokalnu adresu %s"
+
+#~ msgid ""
+#~ "Binding to local address %s failed: the kernel will choose the correct "
+#~ "interface"
+#~ msgstr ""
+#~ "Ugra�ivanje na lokalnu adresu %s neuspe�no: kernel ce izabrati korektan "
+#~ "interfejs"
+
+#~ msgid "Using HTTP protocol."
+#~ msgstr "Kori��enje HTTP protokola."
+
+#~ msgid "Using SOCKSV4 protocol."
+#~ msgstr "Kori��enje SOCKSV4 protokola."
+
+#~ msgid "Using SOCKSV5 protocol."
+#~ msgstr "Kori��enje SOCKSV5 protokola."
+
+#~ msgid "We can accept auth method 0 (no auth)"
+#~ msgstr "Mi mo�emo prihvatiti auth metodu 0 (nema auth)"
+
+#~ msgid "We can accept auth method 0 (no auth) or 2 (user/pass)"
+#~ msgstr "Mi mo�emo prihvatiti auth metodu 0 (nema auth) ili 2 (user/pass)"
+
+#~ msgid "Proxy response: auth OK: access granted"
+#~ msgstr "Odgovor proksija: auth OK: pristup odobren"
+
+#~ msgid "Proxy response: Auth method OK: using method 0 (no auth)"
+#~ msgstr "Odgovor proksija: Auth metoda je OK: kori��ena metoda 0 (nema auth)"
+
+#~ msgid "Proxy response: Auth method OK: using method 2 (user/pass)"
+#~ msgstr "Odgovor proksija: Auth metoda je OK: kori��ena metoda 2 (user/pass)"
+
+#~ msgid "Proxy response: target data OK: request granted"
+#~ msgstr "Odgovor proksija: ciljni podaci OK: zahtev je odobren"
+
+#~ msgid "Proxy response: "
+#~ msgstr "Odgovor proksija: "
+
+#~ msgid "Proxy said something about \""
+#~ msgstr "Proksi govori ne�to o \""
+
+#~ msgid "\" ...that looks like an error to me..."
+#~ msgstr "\" ...to izgleda kao gre�ka za mene..."
+
+#~ msgid "Server X509 certificate"
+#~ msgstr "Server X509 sertifikat"
+
+#~ msgid "The server didn't provide a certificate"
+#~ msgstr "Server nije obezbedio sertifikat"
+
+#~ msgid "Unable to determine the current cipher"
+#~ msgstr "Ne mogu da ustanovim trenutnu �ifru"
+
+#~ msgid "Partial socket write: packet broken into smaller pieces."
+#~ msgstr "Parcijalni zapis priklju�ka: paket razbijen na manje par�i�e."
+
+#~ msgid "Remote command received (%s ...)"
+#~ msgstr "Primljena je udaljena komanda (%s ...)"
+
+#, fuzzy
+#~ msgid "File download failed"
+#~ msgstr "Direktorijum za svla�enje"
+
+#, fuzzy
+#~ msgid "File download from %1 failed"
+#~ msgstr "U�itaj iz fajla"
+
+#~ msgid "The commandline for media type '%s' seems to be broken"
+#~ msgstr "Komandna linija za '%s' tip medija izgleda da je prekinuta"
+
+#~ msgid "Media type of file %s matched to '%s' but no commandline specified"
+#~ msgstr ""
+#~ "Tip medija fajla %s se poklapa sa %s ali nije definisana komandna linija"
+
+#~ msgid "No idea on how to play file %s (no media type match)"
+#~ msgstr "Nemam ideju kako da pustim fajl %s (nema odgovaraju�eg tipa medija)"
+
+#, fuzzy
+#~ msgid "IRC Context related actions"
+#~ msgstr "&Nov irc kontekst"
+
+#, fuzzy
+#~ msgid "Generic"
+#~ msgstr "Generalne opcije"
+
+#, fuzzy
+#~ msgid "Generic actions"
+#~ msgstr "status konekcije"
+
+#, fuzzy
+#~ msgid "Settings"
+#~ msgstr "&Pode�avanja"
+
+#, fuzzy
+#~ msgid "Scripting"
+#~ msgstr "Opis"
+
+#, fuzzy
+#~ msgid "IRC Channel related actions"
+#~ msgstr "&Nov irc kontekst"
+
+#, fuzzy
+#~ msgid "Reconnect attempt aborted"
+#~ msgstr "Isteklo je vreme za povezivanje"
+
+#, fuzzy
+#~ msgid ""
+#~ "No servers available. Check the options dialog or use the /SERVER command"
+#~ msgstr ""
+#~ "Nema mogu�eg servera: proverite u server opcijama ili koristite /SERVER "
+#~ "komandu"
+
+#, fuzzy
+#~ msgid "No proxy hosts available, resuming direct connection"
+#~ msgstr "Nema mogu�eg proksi hosta: prebacujem na direktno konektovanje"
+
+#~ msgid "Connection attempt failed [%s]"
+#~ msgstr "Neuspe�an poku�aj ka�enja [%s]"
+
+#, fuzzy
+#~ msgid ""
+#~ "The connection attempt failed while using a cached IP address for the "
+#~ "current server"
+#~ msgstr ""
+#~ "Poku�ak konektovanja neuspe�an doje je ke�iranje IP adrese za ovaj server "
+#~ "uklju�eno"
+
+#, fuzzy
+#~ msgid "The problem *might* be caused by an updated DNS entry"
+#~ msgstr "Problem *mo�e* biti prouzrokovan promenom DNS unosa"
+
+#~ msgid "Secure connection"
+#~ msgstr "Sigurna konekcija"
+
+#~ msgid "Connection terminated [%s (%s:%u)]"
+#~ msgstr "Konekcija prekinuta [%s (%s:%u)]"
+
+#, fuzzy
+#~ msgid "The connection terminated unexpectedly. Trying to reconnect..."
+#~ msgstr "Konekcija je neo�ekivano prekinuta: poku�avam da rekonektujem..."
+
+#, fuzzy
+#~ msgid "Sent QUIT, waiting for the server to close the connection..."
+#~ msgstr "Poslat QUIT...�ekam da server zatvori konekciju"
+
+#, fuzzy
+#~ msgid "No "
+#~ msgstr "Ne"
+
+#, fuzzy
+#~ msgid " symbol exported: not a kvirc module ?"
+#~ msgstr "Nije izvezen kvirc_module_info simbol: nije kvirc modul ?"
+
+#~ msgid "Failed to execute the init routine"
+#~ msgstr "Ne mogu da izvr�im init rutinu"
+
+#~ msgid "Loaded module '%s' (%s)"
+#~ msgstr "U�itan modul '%s' (%s)"
+
+#~ msgid "Unloaded module '%s'"
+#~ msgstr "Iz�itan modul '%s'"
+
+#~ msgid "Channel mode"
+#~ msgstr "Mod kanala"
+
+#, fuzzy
+#~ msgid "Split View"
+#~ msgstr "poruka razdvajanja"
+
+#, fuzzy
+#~ msgid "User List"
+#~ msgstr "Lista korisnika"
+
+#, fuzzy
+#~ msgid "Ban Editor"
+#~ msgstr "Tekstualni editor"
+
+#, fuzzy
+#~ msgid "Ban Exception Editor"
+#~ msgstr "Uklju�i/isklju�i editor izuzetaka zabrana"
+
+#, fuzzy
+#~ msgid "Invite Exception Editor"
+#~ msgstr "Uklju�i/isklju�i editor izuzetaka poziva"
+
+#, fuzzy
+#~ msgid "Mode Editor"
+#~ msgstr "Uklju�i/isklju�i editor modova"
+
+#, fuzzy
+#~ msgid "said something recently"
+#~ msgstr "Proksi govori ne�to o \""
+
+#, fuzzy
+#~ msgid "are talking"
+#~ msgstr "Upozorenje parsera"
+
+#, fuzzy
+#~ msgid "and other %1 users"
+#~ msgstr "voiced korisnici"
+
+#, fuzzy
+#~ msgid "Dead channel"
+#~ msgstr "Odbaci izmene"
+
+#, fuzzy
+#~ msgid "operator"
+#~ msgstr "operator %c%c"
+
+#, fuzzy
+#~ msgid "operators"
+#~ msgstr "operator %c%c"
+
+#, fuzzy
+#~ msgid "active user"
+#~ msgstr "Aktivne zabrane"
+
+#, fuzzy
+#~ msgid "active users"
+#~ msgstr "voiced korisnici"
+
+#, fuzzy
+#~ msgid "hot user"
+#~ msgstr "voiced korisnici"
+
+#, fuzzy
+#~ msgid "hot users"
+#~ msgstr "voiced korisnici"
+
+#, fuzzy
+#~ msgid "channel owner"
+#~ msgstr "tiho ili vlasnik kanala"
+
+#, fuzzy
+#~ msgid "channel owners"
+#~ msgstr "Modovi kanala"
+
+#, fuzzy
+#~ msgid "channel administrator"
+#~ msgstr "Operatori kanala"
+
+#, fuzzy
+#~ msgid "channel administrators"
+#~ msgstr "Operatori kanala"
+
+#, fuzzy
+#~ msgid "half-operator"
+#~ msgstr "Operatori kanala"
+
+#, fuzzy
+#~ msgid "half-operators"
+#~ msgstr "Operatori kanala"
+
+#, fuzzy
+#~ msgid "voiced user"
+#~ msgstr "voiced korisnici"
+
+#~ msgid "voiced users"
+#~ msgstr "voiced korisnici"
+
+#, fuzzy
+#~ msgid "user-operator"
+#~ msgstr "operator %c%c"
+
+#, fuzzy
+#~ msgid "user-operators"
+#~ msgstr "operator %c%c"
+
+#, fuzzy
+#~ msgid "Flooded with messages"
+#~ msgstr "poruka razdvajanja"
+
+#, fuzzy
+#~ msgid "[Dead channel]"
+#~ msgstr "Odbaci izmene"
+
+#~ msgid " on "
+#~ msgstr " na "
+
+#~ msgid ""
+#~ "The crypto engine was unable to encrypt the current message (%Q): %s, no "
+#~ "data sent to the server"
+#~ msgstr ""
+#~ "Ma�ina za �ifrovanje nije u mogu�nosti da �ifruje trenutnu poruku (%Q): %"
+#~ "s nema podataka poslatih serveru"
+
+#, fuzzy
+#~ msgid "Sent part request, waiting for reply..."
+#~ msgstr "Poslat zahtev za listu: �ekam odgovor..."
+
+#, fuzzy
+#~ msgid "<b>Channel mode:</b>"
+#~ msgstr "<b>Mod kanala</b><br>"
+
+#, fuzzy
+#~ msgid "<br><b>Key:</b> %s"
+#~ msgstr "<br>klju�: %s"
+
+#, fuzzy
+#~ msgid "<br><b>Limit:</b> %s"
+#~ msgstr "<br>ograni�enje: %s"
+
+#~ msgid "Channel synchronized in %d.%d seconds"
+#~ msgstr "Kanal sinhronizovan za %d.%d sekundi"
+
+#, fuzzy
+#~ msgid "No topic message has been received from the server yet"
+#~ msgstr "Nije jo� primljena poruka za naslov (topic) od servera"
+
+#, fuzzy
+#~ msgid "Channel topic:"
+#~ msgstr "Naslov kanala (topic) je: %s"
+
+#~ msgid "Set by"
+#~ msgstr "Postavljeno od"
+
+#, fuzzy
+#~ msgid "Set on"
+#~ msgstr "Nijedan"
+
+#, fuzzy
+#~ msgid "Double-click to edit..."
+#~ msgstr "<br>Dupli klik za editovanje"
+
+#, fuzzy
+#~ msgid "No topic is set"
+#~ msgstr "Nema postavljenog naslova kanala"
+
+#, fuzzy
+#~ msgid "Double-click to set..."
+#~ msgstr "Dupli klik za postavljanje<br>"
+
+#, fuzzy
+#~ msgid "History"
+#~ msgstr "Direktorijum"
+
+#, fuzzy
+#~ msgid "Commit Changes"
+#~ msgstr "Izvr�i promene"
+
+#, fuzzy
+#~ msgid "Discard Changes"
+#~ msgstr "Odbaci izmene"
+
+#, fuzzy
+#~ msgid "CTCP Page - KVIrc"
+#~ msgstr "CTCP Page"
+
+#, fuzzy
+#~ msgid "Active Bans"
+#~ msgstr "Aktivne zabrane"
+
+#, fuzzy
+#~ msgid "Active Invite Exceptions"
+#~ msgstr "Aktivni izuzeci poziva"
+
+#, fuzzy
+#~ msgid "Active Ban Exceptions"
+#~ msgstr "Aktivni izuzeci zabrane"
+
+#~ msgid "Mask"
+#~ msgstr "Maska"
+
+#~ msgid "Set at"
+#~ msgstr "Postavljeno u"
+
+#~ msgid "Window List"
+#~ msgstr "Lista prozora"
+
+#, fuzzy
+#~ msgid "Remove %Q"
+#~ msgstr "Ukloni"
+
+#, fuzzy
+#~ msgid "Add Applet"
+#~ msgstr "Dodaj osobinu"
+
+#, fuzzy
+#~ msgid "Connection in progress..."
+#~ msgstr "konektovanje u toku..."
+
+#, fuzzy
+#~ msgid "Login in progress..."
+#~ msgstr "prijavljivanje u toku..."
+
+#, fuzzy
+#~ msgid "Not connected"
+#~ msgstr "Nema konekcije"
+
+#, fuzzy
+#~ msgid "No IRC context"
+#~ msgstr "&Nov irc kontekst"
+
+#, fuzzy
+#~ msgid "Crypting"
+#~ msgstr "Opis"
+
+#, fuzzy
+#~ msgid "Private Text Encoding"
+#~ msgstr "Tekstualni editor"
+
+#~ msgid "Ops...I've accidentally lost the crypting engine..."
+#~ msgstr "Ups...Slu�ajno sam izgubio ma�inu za �ifrovanje..."
+
+#~ msgid "List of window types available in this release of KVIrc:"
+#~ msgstr "Lista vrste prozora mogu�ih u ovoj verziji KVIrc-a"
+
+#, fuzzy
+#~ msgid "Use Default Encoding"
+#~ msgstr "Koristi ma�inu za �ifrovanje"
+
+#, fuzzy
+#~ msgid "Standard"
+#~ msgstr "uske boje"
+
+#, fuzzy
+#~ msgid "Smart"
+#~ msgstr "Prenesi"
+
+#~ msgid "&Undock"
+#~ msgstr "&Sakrij spu�ten widget"
+
+#, fuzzy
+#~ msgid "&Dock"
+#~ msgstr "&Spusti"
+
+#, fuzzy
+#~ msgid "Mi&nimize"
+#~ msgstr "M&inimizuj"
+
+#, fuzzy
+#~ msgid "Ma&ximize"
+#~ msgstr "&Maksimizuj"
+
+#, fuzzy
+#~ msgid "&Restore"
+#~ msgstr "&Obnovi"
+
+#, fuzzy
+#~ msgid "Text &Encoding"
+#~ msgstr "Tekstualni editor"
+
+#, fuzzy
+#~ msgid "Sa&ve Window Properties"
+#~ msgstr "Prozor nije prona�en"
+
+#~ msgid "Search tools"
+#~ msgstr "Alati za pretra�ivanje"
+
+#~ msgid "### Log session terminated at %s ###"
+#~ msgstr "### Sesija bele�enja prekinuta u %s ###"
+
+#~ msgid "### Log session started at %s ###"
+#~ msgstr "### Sesija bele�enja pokrenuta u %s ###"
+
+#~ msgid "### Existing data buffer:"
+#~ msgstr "### Postoje�i bufer podataka:"
+
+#~ msgid "### End of existing data buffer."
+#~ msgstr "### Kraj postoje�eg bufera podataka."
+
+#, fuzzy
+#~ msgid "Hide Find Window"
+#~ msgstr "&Terminal prozor"
+
+#, fuzzy
+#~ msgid "Show Find Window"
+#~ msgstr "&Kazi u prozor"
+
+#, fuzzy
+#~ msgid "Choose Temporary Font..."
+#~ msgstr "Izaberite jednu sliku..."
+
+#, fuzzy
+#~ msgid "Choose Temporary Background..."
+#~ msgstr "Izaberite jednu sliku..."
+
+#, fuzzy
+#~ msgid "Reset Temporary Background"
+#~ msgstr "Izaberite jednu sliku..."
+
+#, fuzzy
+#~ msgid "Choose the background image..."
+#~ msgstr "Globalna slika pozadine"
+
+#, fuzzy
+#~ msgid "Invalid image"
+#~ msgstr "Pogre�no vreme isteka"
+
+#, fuzzy
+#~ msgid "Failed to load the selected image"
+#~ msgstr "Ne mogu da otvorim fajl %Q"
+
+#~ msgid "Pos %d"
+#~ msgstr "Poz %d"
+
+#~ msgid "Not found"
+#~ msgstr "Nije na�eno"
+
+#~ msgid "Looking up host %Q..."
+#~ msgstr "Tra�im host %Q..."
+
+#, fuzzy
+#~ msgid "Double-click to open this link"
+#~ msgstr "Dupli klik za postavljanje<br>"
+
+#, fuzzy
+#~ msgid "Unable to look it up hostname: Hostname appears to be masked"
+#~ msgstr ""
+#~ "Ne mogu da pronadjem ime hosta IRC servera: Ne mogu da pokrenem DNS slave"
+
+#, fuzzy
+#~ msgid "Unable to look it up hostname: Unknown host"
+#~ msgstr ""
+#~ "Ne mogu da pronadjem ime hosta IRC proksija: Ne mogu da pokrenem DNS slave"
+
+#, fuzzy
+#~ msgid ""
+#~ "Double-click to look up this hostname<br>Right-click to view other options"
+#~ msgstr ""
+#~ "Dupli klik za re�avanje ovog hosta<br>Desni klik za pregled ostalih opcija"
+
+#, fuzzy
+#~ msgid "Unknown server<br>"
+#~ msgstr "Nepoznata gre�ka"
+
+#, fuzzy
+#~ msgid "Double-click to read the MOTD<br>Right-click to view other options"
+#~ msgstr ""
+#~ "Dupli klik za �itanje MOTD-a<br>Desni klik za pregled ostalih opcija"
+
+#, fuzzy
+#~ msgid "Double-click to set<br>"
+#~ msgstr "Dupli klik za postavljanje<br>"
+
+#, fuzzy
+#~ msgid "You're not an operator: You may not change channel modes"
+#~ msgstr "Niste operator; ne mo�ete da menjate modove kanala"
+
+#~ msgid "Nothing known about %Q"
+#~ msgstr "Ni�ta poznato o %Q"
+
+#~ msgid "Nothing known about %Q (no connection)"
+#~ msgstr "Ni�ta poznato o %Q (mi nismo na vezi)"
+
+#~ msgid "<b>%Q</b>: +%Q (%u users)<hr>%Q"
+#~ msgstr "<b>%Q</b>: +%Q (%u korisnika)<hr>%Q"
+
+#~ msgid "Double-click to join %Q<br>Right click to view other options"
+#~ msgstr "Dupli klik za ulazak na %Q<br>Desni klik za pregled ostalih opcija"
+
+#~ msgid "<b>Double-click:</b><br>%Q"
+#~ msgstr "<b>Dupli klik:</b><br>%Q"
+
+#~ msgid "<b>Middle-click:</b><br>%Q"
+#~ msgstr "<b>Srednji klik:</b><br>%Q"
+
+#~ msgid "<b>Right-click:</b><br>%Q"
+#~ msgstr "<b>Desni klik:</b><br>%Q"
+
+#, fuzzy
+#~ msgid "Toolbars"
+#~ msgstr "&Alati"
+
+#, fuzzy
+#~ msgid "Orientation"
+#~ msgstr "obave�tenje"
+
+#, fuzzy
+#~ msgid "Detached"
+#~ msgstr "Odbaci izmene"
+
+#, fuzzy
+#~ msgid "Flat"
+#~ msgstr "Filter"
+
+#, fuzzy
+#~ msgid "Icon Size"
+#~ msgstr "&Ikone widget"
+
+#, fuzzy
+#~ msgid "Show User List"
+#~ msgstr "URL lista"
+
+#, fuzzy
+#~ msgid "Query Targets"
+#~ msgstr "Upit za ciljeve"
+
+#, fuzzy
+#~ msgid "Query target:"
+#~ msgstr "Upit za ciljeve"
+
+#, fuzzy
+#~ msgid "%1 is using irc server: %2 (%3 hops)"
+#~ msgstr "<nobr>Koristi server <b>%1</b>"
+
+#, fuzzy
+#~ msgid "%1 is using irc server: %2"
+#~ msgstr "<nobr>Koristi server <b>%1</b>"
+
+#, fuzzy
+#~ msgid "[Dead Query]"
+#~ msgstr "Odbaci izmene"
+
+#, fuzzy
+#~ msgid ", using server %1"
+#~ msgstr "<nobr>Koristi server <b>%1</b>"
+
+#, fuzzy
+#~ msgid " (%1 hops)"
+#~ msgstr " (%d skokova)</nobr>"
+
+#, fuzzy
+#~ msgid "Common channels: %2"
+#~ msgstr "Komandna linija: %s"
+
+#~ msgid "Common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+#~ msgstr "Uobi�ajeni kanali za \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"
+
+#~ msgid "No common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+#~ msgstr "Nema uobi�ajenih kanala za \r!n\r%Q\r [%Q@\r!h\r%Q\r]"
+
+#, fuzzy
+#~ msgid "This query has no active targets, no message sent"
+#~ msgstr "Ovaj upit nema aktivnih ciljeva: nije poslata poruka"
+
+#~ msgid "No connection"
+#~ msgstr "Nema konekcije"
+
+#, fuzzy
+#~ msgid "IRC Context"
+#~ msgstr "&Nov irc kontekst"
+
+#, fuzzy
+#~ msgid "away"
+#~ msgstr " odsutnost)"
+
+#~ msgid "In progress..."
+#~ msgstr "U toku..."
+
+#, fuzzy
+#~ msgid "&Paste"
+#~ msgstr "Prenesi"
+
+#, fuzzy
+#~ msgid "Paste (Slowly)"
+#~ msgstr "Prenesi (polako)"
+
+#, fuzzy
+#~ msgid "Paste &File"
+#~ msgstr "Prenesi unutar"
+
+#, fuzzy
+#~ msgid "Stop Paste"
+#~ msgstr "Prenesi"
+
+#~ msgid "Clear"
+#~ msgstr "O�isti"
+
+#~ msgid "Select All"
+#~ msgstr "Izaberi sve"
+
+#~ msgid "%d matches: %Q"
+#~ msgstr "%d podudara: %Q"
+
+#~ msgid "No matches"
+#~ msgstr "Nema podudaranja"
+
+#, fuzzy
+#~ msgid "Confirm Multiline Message"
+#~ msgstr "multimedijalna poruka"
+
+#, fuzzy
+#~ msgid "&Cascade Windows"
+#~ msgstr "&Nasla�i prozore"
+
+#, fuzzy
+#~ msgid "Cascade &Maximized"
+#~ msgstr "Nasla�i &maksimizirano"
+
+#, fuzzy
+#~ msgid "&Tile Windows"
+#~ msgstr "&Terminal prozor"
+
+#, fuzzy
+#~ msgid "&Auto Tile"
+#~ msgstr "&Auto par�e"
+
+#, fuzzy
+#~ msgid "Anodine's Full Grid"
+#~ msgstr "Anodineova puna-mre�a"
+
+#, fuzzy
+#~ msgid "Pragma's Horizontal 4-Grid"
+#~ msgstr "Pragmin horizontalan 4-mre�ni"
+
+#, fuzzy
+#~ msgid "Pragma's Vertical 4-Grid"
+#~ msgstr "Pragmin vertikalan 4-mre�ni"
+
+#, fuzzy
+#~ msgid "Pragma's Horizontal 6-Grid"
+#~ msgstr "Pragmin horizontalan 6-mre�ni"
+
+#, fuzzy
+#~ msgid "Pragma's Vertical 6-Grid"
+#~ msgstr "Pragmin vertikalan 6-mre�ni"
+
+#, fuzzy
+#~ msgid "Pragma's Horizontal 9-Grid"
+#~ msgstr "Pragmin horizontalan 9-mre�ni"
+
+#, fuzzy
+#~ msgid "Pragma's Vertical 9-Grid"
+#~ msgstr "Pragmin vertikalan 9-mre�ni"
+
+#, fuzzy
+#~ msgid "Tile Met&hod"
+#~ msgstr "Par�e met&oda"
+
+#, fuzzy
+#~ msgid "Expand &Vertically"
+#~ msgstr "Ra�iri &vertikalno"
+
+#, fuzzy
+#~ msgid "Expand &Horizontally"
+#~ msgstr "Ra�iri &horizontalno"
+
+#, fuzzy
+#~ msgid "Mi&nimize All"
+#~ msgstr "M&inimizuj"
+
+#, fuzzy
+#~ msgid "What's this?"
+#~ msgstr "�ta je ovo ?"
+
+#, fuzzy
+#~ msgid "Notify List"
+#~ msgstr "Lista obave�tenja"
+
+#, fuzzy
+#~ msgid "Part All Channels"
+#~ msgstr "Napusti sve kanale"
+
+#, fuzzy
+#~ msgid "Close All Queries"
+#~ msgstr "Zatvori sve upite"
+
+#, fuzzy
+#~ msgid "Unhighlight All Windows"
+#~ msgstr "M&inimizuj"
+
+#, fuzzy
+#~ msgid "Unhighlight All Channels"
+#~ msgstr "Napusti sve kanale"
+
+#, fuzzy
+#~ msgid "Unhighlight All Queries"
+#~ msgstr "Zatvori sve upite"
+
+#, fuzzy
+#~ msgid "Registered as"
+#~ msgstr "Registrovani korisnici"
+
+#, fuzzy
+#~ msgid "On <b>"
+#~ msgstr " na <b>"
+
+#~ msgid "Using server <b>%1</b>"
+#~ msgstr "<nobr>Koristi server <b>%1</b>"
+
+#, fuzzy
+#~ msgid "Confirmation - KVIrc"
+#~ msgstr "&Opcije"
+
+#, fuzzy
+#~ msgid "&Always"
+#~ msgstr "&Odsutnost"
+
+#, fuzzy
+#~ msgid "channels"
+#~ msgstr "Kanal"
+
+#, fuzzy
+#~ msgid "query"
+#~ msgstr "upit obave�tenja"
+
+#, fuzzy
+#~ msgid "queries"
+#~ msgstr "upit obave�tenja"
+
+#, fuzzy
+#~ msgid "Connected since"
+#~ msgstr "Povezivanje"
+
+#, fuzzy
+#~ msgid "Server idle for"
+#~ msgstr "Port servisa"
+
+#, fuzzy
+#~ msgid "Script"
+#~ msgstr "Opis"
+
+#, fuzzy
+#~ msgid "The file %s already exists.<br>Do you wish to overwrite it?"
+#~ msgstr ""
+#~ "Fajl %s ve� �pstoji.\n"
+#~ "Prepisati ga ?"
+
+#, fuzzy
+#~ msgid "File Exists - KVIrc"
+#~ msgstr "Fajl postoji"
+
+#, fuzzy
+#~ msgid "Channel Modes"
+#~ msgstr "Modovi kanala"
+
+#, fuzzy
+#~ msgid "There are active connections, are you sure you wish to "
+#~ msgstr "Ne mogu da po�aljem podatke: nema aktivne konekcije"
+
+#, fuzzy
+#~ msgid "quit KVIrc?"
+#~ msgstr "&Zavr�i Kvirc"
+
+#, fuzzy
+#~ msgid "Show %1"
+#~ msgstr "&Pove�aj KVIrc przor"
+
+#, fuzzy
+#~ msgid "Away Indicator"
+#~ msgstr "Ime alijasa"
+
+#, fuzzy
+#~ msgid "Away since"
+#~ msgstr "Nadimak"
+
+#, fuzzy
+#~ msgid "Double click to leave away mode"
+#~ msgstr "<br>Dupli klik za editovanje"
+
+#, fuzzy
+#~ msgid "Not away"
+#~ msgstr " odsutnost)"
+
+#, fuzzy
+#~ msgid "Double click to enter away mode"
+#~ msgstr "Dupli klik za postavljanje<br>"
+
+#, fuzzy
+#~ msgid "Lag measure not available yet"
+#~ msgstr "Mogu�nost nije dostupna"
+
+#, fuzzy
+#~ msgid "Double click to enable it"
+#~ msgstr "<br>Dupli klik za editovanje"
+
+#, fuzzy
+#~ msgid "Lag Indicator"
+#~ msgstr "Tekstualni editor"
+
+#, fuzzy
+#~ msgid "Show total connection time"
+#~ msgstr "Poka�i vreme sinhronizovanja kanala"
+
+#, fuzzy
+#~ msgid "Connection Timer"
+#~ msgstr "Isteklo je vreme za povezivanje"
+
+#, fuzzy
+#~ msgid "Unloadable: %s"
+#~ msgstr "Iz�itan modul '%s'"
+
+#, fuzzy
+#~ msgid "Choose a File - KVIrc"
+#~ msgstr "Izaberi fajl za parseovanje"
+
+#, fuzzy
+#~ msgid "A&dd"
+#~ msgstr "Dodaj"
+
+#, fuzzy
+#~ msgid "Sample Text"
+#~ msgstr "&Oblik"
+
+#~ msgid "Joined on <b>%1</b>"
+#~ msgstr "<hr><nobr>U�ao na kanal <b>%1</b></nobr>"
+
+#, fuzzy
+#~ msgid "Quiet for <b>%1h %2m %3s</b>"
+#~ msgstr "<%1><nobr>Tiho jos od <b>%2 h %3 m %d s</b></nobr>"
+
+#~ msgid "Cryptography/text transformation"
+#~ msgstr "Kriptografija/tekst transformacija"
+
+#~ msgid "Use the crypt engine"
+#~ msgstr "Koristi ma�inu za �ifrovanje"
+
+#~ msgid "Encrypt key:"
+#~ msgstr "Klju� za �ifrovanje"
+
+#~ msgid "Hex"
+#~ msgstr "Hex"
+
+#~ msgid "Enable decryption"
+#~ msgstr "Omogu�i de�ifrovanje"
+
+#~ msgid "Decrypt key:"
+#~ msgstr "Klju� za de�ifrovanje"
+
+#~ msgid "Sorry, no crypt engines available"
+#~ msgstr "�ao mi je, nema dostupne ma�ine za �ifrovanje"
+
+#~ msgid "Crypt: Can't create an engine instance: crypting disabled"
+#~ msgstr ""
+#~ "�ifrovanje: Ne mogu da napravim interfejs za ma�inu; �ifrovanje isklju�eno"
+
+#~ msgid "Crypt: Can't initialize the engine :%s"
+#~ msgstr "�ifrovanje: Ne mogu da inicijalizujem ma�inu :%s"
+
+#~ msgid ""
+#~ "Crypt: You have to enable encryption and/or decryption for the engine to "
+#~ "work"
+#~ msgstr ""
+#~ "�ifrovanje: Morate da omogu�ite �ifrovanje i/ili de�ifrovanje da bi "
+#~ "ma�ina radila"
+
+#, fuzzy
+#~ msgid "Choose image ..."
+#~ msgstr "Izaberite jednu sliku..."
+
+#, fuzzy
+#~ msgid "Builtin images"
+#~ msgstr "poruka prekida"
+
+#, fuzzy
+#~ msgid "Small icons"
+#~ msgstr "Poka�i ikone poruka"
+
+#, fuzzy
+#~ msgid "directory"
+#~ msgstr "Direktorijum"
+
+#, fuzzy
+#~ msgid "pixels"
+#~ msgstr "Isti�e"
+
+#, fuzzy
+#~ msgid "bytes"
+#~ msgstr "0 bajtova"
+
+#, fuzzy
+#~ msgid "<b><font color=\"#EAEAEA\" size=\"-1\">Find Text</font></b>"
+#~ msgstr "<font color=\"#8060FF\" size=\"-1\">Alati za pretra�ivanje</font>"
+
+#, fuzzy
+#~ msgid "&Regular expression"
+#~ msgstr "Regularni izraz"
+
+#, fuzzy
+#~ msgid "E&xtended regexp."
+#~ msgstr "Pro�ireni regularni izraz"
+
+#, fuzzy
+#~ msgid "C&ase sensitive"
+#~ msgstr "Razlikuj velika i mala slova"
+
+#, fuzzy
+#~ msgid "Find &Prev."
+#~ msgstr "Na�i prethodno"
+
+#, fuzzy
+#~ msgid "&Find Next"
+#~ msgstr "&Na�i tekst"
+
+#, fuzzy
+#~ msgid "Set &All"
+#~ msgstr "Izaberi sve"
+
+#, fuzzy
+#~ msgid "Set &None"
+#~ msgstr "Nijedan"
+
+#, fuzzy
+#~ msgid "&Load From..."
+#~ msgstr "U�itavanje ikona..."
+
+#, fuzzy
+#~ msgid "&Save As..."
+#~ msgstr "S&a�uvaj kao..."
+
+#~ msgid "Filter"
+#~ msgstr "Filter"
+
+#, fuzzy
+#~ msgid "Select a Filter File"
+#~ msgstr "Izaberite filter fajla"
+
+#, fuzzy
+#~ msgid "Can't open the filter file %s for reading."
+#~ msgstr "Ne mogu da otvorim filter fajla %s za �itanje"
+
+#, fuzzy
+#~ msgid "Select a Name for the Filter File"
+#~ msgstr "Izaberite ime za filter fajla"
+
+#~ msgid "Failed to write the filter file %s (IO Error)"
+#~ msgstr "Neuspe�no pisanje filter fajla %s (IO gre�ka)"
+
+#~ msgid "Can't open the filter file %s for writing"
+#~ msgstr "Ne mogu da otvorim filter fajl %s za pisanje"
+
+#, fuzzy
+#~ msgid "Scri&pting"
+#~ msgstr "Opis"
+
+#~ msgid "&Tools"
+#~ msgstr "&Alati"
+
+#~ msgid "&Settings"
+#~ msgstr "&Pode�avanja"
+
+#~ msgid "&Window"
+#~ msgstr "&Prozor"
+
+#~ msgid "&Help Browser (Panel)"
+#~ msgstr "&Pomo� (stati�ki �ita�)"
+
+#~ msgid "Help Browser (&Window)"
+#~ msgstr "Pomo� (&MDI �ita�)"
+
+#~ msgid "&Tip of the Day"
+#~ msgstr "&Da li ste znali..."
+
+#~ msgid "About &KVIrc"
+#~ msgstr "O &KVIrc-u..."
+
+#~ msgid "KVIrc Home&page"
+#~ msgstr "KVIrc po�etna &stranica"
+
+#, fuzzy
+#~ msgid "Show StatusBar"
+#~ msgstr "Poka�i na po�etku"
+
+#, fuzzy
+#~ msgid "New &Connection To"
+#~ msgstr "&Novo konektovanje na"
+
+#~ msgid "Hide &Dock Icon"
+#~ msgstr "Sakrij &spu�taju�i widget"
+
+#~ msgid "Show &Dock Icon"
+#~ msgstr "Poka�i &spu�taju�i widget"
+
+#, fuzzy
+#~ msgid "Show &Icon Table"
+#~ msgstr "&Ikone widget"
+
+#, fuzzy
+#~ msgid "Open &Terminal"
+#~ msgstr "&Terminal prozor"
+
+#~ msgid "Success"
+#~ msgstr "Uspe�no"
+
+#~ msgid "Internal error"
+#~ msgstr "Interna gre�ka."
+
+#~ msgid "Unknown command"
+#~ msgstr "Nepoznata komanda"
+
+#~ msgid "Missing closing brace"
+#~ msgstr "Nedostaje zatvorena zagrada"
+
+#~ msgid "Unexpected end of command in string"
+#~ msgstr "Neo�ekivan kraj komande u nizu"
+
+#~ msgid "Unexpected end of command in dictionary key"
+#~ msgstr "Neo�ekivan kraj komande u klju�u re�nika"
+
+#~ msgid "Switch dash without switch letter"
+#~ msgstr "Kosa kontrolna crta bez kontrolnog slova"
+
+#~ msgid "Unknown function"
+#~ msgstr "Nepoznata funkcija"
+
+#~ msgid "Unexpected end of command in parenthesis"
+#~ msgstr "Neo�ekivan kraj komande u zagradama"
+
+#~ msgid "Unexpected end of command in function parameters"
+#~ msgstr "Neo�ekivan kraj komande u funkcijskim parametrima"
+
+#~ msgid "Missing variable name"
+#~ msgstr "Nedostaje ime promenljive"
+
+#~ msgid "Variable or identifier expected"
+#~ msgstr "O�ekivana promenljiva ili identifikator"
+
+#~ msgid "Left operand is not a number"
+#~ msgstr "Levi operator nije broj"
+
+#~ msgid "Multiple operations not supported for numeric operators"
+#~ msgstr "Vise�truke operacije nisu podr�ane za numeri�ke operatore"
+
+#~ msgid "Modulo by zero"
+#~ msgstr "Mno�enje sa nulom"
+
+#~ msgid "Right operand is not a number"
+#~ msgstr "Desni operator nije broj"
+
+#~ msgid "Unterminated expression (missing ')' ?)"
+#~ msgstr "Nedovr�en izraz (nedostaje ')' ?)"
+
+#~ msgid "Unterminated subexpression (Parenthesis mismatch)"
+#~ msgstr "Besprekidni podizraz (Neodgovaraju�e zagrade)"
+
+#~ msgid "Unexpected character"
+#~ msgstr "Neo�ekivani znak"
+
+#~ msgid "No host to resolve"
+#~ msgstr "Nema hosta za re�avanje"
+
+#~ msgid "(DNS Internal) Unsupported address family"
+#~ msgstr "(DNS Interni) Nepodr�ana vrsta adrese"
+
+#~ msgid "Valid name but the host has no IP address"
+#~ msgstr "Ispravno ime ali host nema IP adresu"
+
+#~ msgid "Unrecoverable nameserver error (crashed ?)"
+#~ msgstr "Fatalna gre�ka DNS servera (sru�en ?)"
+
+#~ msgid "Dns temporaneous fault (try again)"
+#~ msgstr "DNS privremena gre�ka (probaj ponovo)"
+
+#~ msgid "(DNS Internal) Bad flags"
+#~ msgstr "(DNS Interni) Lo�e zastavice"
+
+#~ msgid "(DNS Internal) Out of memory"
+#~ msgstr "(DNS Interni) Nema vi�e memorije"
+
+#~ msgid "(DNS Internal) Service not supported"
+#~ msgstr "(DNS Interni\b) Servis nije podr�an"
+
+#~ msgid "Unknown node (host not found)"
+#~ msgstr "Nepoznat �vor (host nije prona�en)"
+
+#~ msgid "(DNS Internal) Unsupported socket type"
+#~ msgstr "(DNS Interni) Nepodr�an tip priklju�ka"
+
+#~ msgid "Dns query failed"
+#~ msgstr "DNS upit neuspe�an"
+
+#~ msgid "This KVIrc executable has no IPV6 support"
+#~ msgstr "Ovaj KVIrc nema IPV6 podr�ku"
+
+#~ msgid "Host not found"
+#~ msgstr "Host nije prona�en"
+
+#~ msgid "(DNS Internal) IPC failure (slave data corrupted)"
+#~ msgstr "(DNS Interni) IPC gre�ka (o�te�eni podaci)"
+
+#~ msgid "Invalid IP address"
+#~ msgstr "Pogre�na IP adresa"
+
+#~ msgid "Failed to put the socket in non blocking mode"
+#~ msgstr "Nisam uspeo da stavim priklju�ak u ne blokiraju�i mod"
+
+#~ msgid "Bad file descriptor"
+#~ msgstr "Lo� opisiva� fajla"
+
+#~ msgid "Out of address space"
+#~ msgstr "Van adresnog prostora"
+
+#~ msgid "Connection refused"
+#~ msgstr "Konekcija odbijena"
+
+#~ msgid "Kernel networking panic"
+#~ msgstr "Kernelov mre�ni deo je u panici"
+
+#~ msgid "Connection timed out"
+#~ msgstr "Isteklo je vreme za povezivanje"
+
+#~ msgid "Network is unreachable"
+#~ msgstr "Mre�a je nedostupna"
+
+#~ msgid "Broken pipe"
+#~ msgstr "Prekinuto prosle�ivanje"
+
+#~ msgid "Invalid proxy address"
+#~ msgstr "Neispravna adresa proksija"
+
+#~ msgid "Remote end has closed the connection"
+#~ msgstr "Udaljeni krajnji je zatvorio konekciju"
+
+#~ msgid "Invalid irc context id"
+#~ msgstr "Pogre�an ID irc konteksta"
+
+#~ msgid "Error in loading module"
+#~ msgstr "Gre�ka u u�itavanju modula"
+
+#~ msgid "No such module command"
+#~ msgstr "Nema takve komande modula"
+
+#~ msgid "No such module function"
+#~ msgstr "Nema takve funkcije modula"
+
+#~ msgid "Left operand is not a dictionary reference"
+#~ msgstr "Levi operand nije referenca re�nika"
+
+#~ msgid "Right operand is not a dictionary reference"
+#~ msgstr "Desni operand nije referenca re�nika"
+
+#~ msgid "Missing object class name"
+#~ msgstr "Nedostaje ime klase objekta"
+
+#~ msgid "No such object class"
+#~ msgstr "Nema takve klase objekta"
+
+#~ msgid "No such object"
+#~ msgstr "Nema takvog objekta"
+
+#~ msgid "No such object function"
+#~ msgstr "Nema takve funkcije objekta"
+
+#~ msgid "Invalid left operand"
+#~ msgstr "Neispravan levi operand"
+
+#~ msgid "Integer parameter expected"
+#~ msgstr "Celobrojni parametar je o�ekivan"
+
+#~ msgid "Invalid parameter"
+#~ msgstr "Pogre�an parametar"
+
+#~ msgid "No such file"
+#~ msgstr "Nema takvog fajla"
+
+#~ msgid "Open parenthesis expected"
+#~ msgstr "Otvorena iskaz o�ekivan"
+
+#~ msgid "Open brace expected"
+#~ msgstr "Otvorena zagrada o�ekivana"
+
+#~ msgid "Can't kill a builtin class"
+#~ msgstr "Ne mogu da ubijem ugra�enu klasu"
+
+#~ msgid "The SOCKSV4 protocol lacks IpV6 support"
+#~ msgstr "SOCKSV4 protokol nedostaje u IpV6 podr�ci"
+
+#~ msgid "Unrecognized proxy reply"
+#~ msgstr "Nepoznat odgovor proksija"
+
+#~ msgid "Proxy response: auth failed: access denied"
+#~ msgstr "Odgovor proksija: autentifikacija neuspe�na: zabranjen pristup"
+
+#~ msgid "Proxy response: No acceptable auth method: request rejected"
+#~ msgstr ""
+#~ "Odgovor proksija: Nema prihvatljive metode autorizacije: zahtev odbijen"
+
+#~ msgid "Proxy response: request failed"
+#~ msgstr "Odgovor proksija: zahtev neuspe�an"
+
+#~ msgid "Proxy response: ident failed"
+#~ msgstr "Odgovor proksija: pogre�an ident"
+
+#~ msgid "Proxy response: ident not matching"
+#~ msgstr "Odgovor proksija: ident se ne poklapa"
+
+#~ msgid "Proxy response: general SOCKS failure"
+#~ msgstr "Odgovor proksija: Op�ta SOCKS gre�ka"
+
+#~ msgid "Proxy response: connection not allowed"
+#~ msgstr "Odgovor proksija: konekcija nije dozvoljena"
+
+#~ msgid "Proxy response: network unreachable"
+#~ msgstr "Odgovor proksija: mre�a nedostupna"
+
+#~ msgid "Proxy response: host unreachable"
+#~ msgstr "Odgovor proksija: host nedostupan"
+
+#~ msgid "Proxy response: connection refused"
+#~ msgstr "Odgovor proksija: Konekcija odbijena"
+
+#~ msgid "Proxy response: TTL expired"
+#~ msgstr "Odgovor proksija: TTL istekao"
+
+#~ msgid "Proxy response: command not supported"
+#~ msgstr "Odgovor proksija: komanda nije podr�ana"
+
+#~ msgid "Proxy response: address type not supported"
+#~ msgstr "Odgovor proksija: tip adrese nije podr�an"
+
+#~ msgid "Proxy response: invalid address"
+#~ msgstr "Odgovor proksija: pogre�na adresa"
+
+#~ msgid "Invalid port number"
+#~ msgstr "Pogre�an broj porta"
+
+#~ msgid "Socket not connected"
+#~ msgstr "Priklju�ak nije povezan"
+
+#~ msgid "Insufficient resources to complete the operation"
+#~ msgstr "Nedovoljno resursa za kompletiranje operacije"
+
+#~ msgid "Can't setup a listening socket : bind failed"
+#~ msgstr "Ne mogu da postavim slu�aju�i priklju�ak: dodeljivanje neuspe�no"
+
+#~ msgid "Can't resolve the localhost name"
+#~ msgstr "Ne mogu da re�im ime lokalnog hosta"
+
+#~ msgid "Unsupported image format"
+#~ msgstr "Nepodr�an format slike"
+
+#~ msgid "Can't open file for appending"
+#~ msgstr "Ne mogu da otvof\brim fajl za dodavanje\b"
+
+#~ msgid "Can't open file for writing"
+#~ msgstr "Ne mogu da otvorim fajl za upisivanje"
+
+#~ msgid "File I/O error"
+#~ msgstr "Ulazno-izlazna gre�ka"
+
+#~ msgid "Acknowledge error"
+#~ msgstr "Primljena gre�ka"
+
+#~ msgid "Can't open file for reading"
+#~ msgstr "Ne mogu da otvorim fajl za �itanje"
+
+#~ msgid "Can't send a zero-size file"
+#~ msgstr "Ne mogu da po�aljem prazan fajl"
+
+#~ msgid "Missing popup name"
+#~ msgstr "Nedostaje ime iska�u�eg menija"
+
+#~ msgid "'item', 'popup', 'label' or 'separator' keyword expected"
+#~ msgstr "'item', 'popup', 'label' ili 'separator' su o�ekivane re�i"
+
+#~ msgid "Self modification not allowed"
+#~ msgstr "Automodifikovanje nije dozvoljeno"
+
+#~ msgid "Feature not available"
+#~ msgstr "Mogu�nost nije dostupna"
+
+#~ msgid "Unexpected characters in array index"
+#~ msgstr "Neo�ekivani karakteri u nizu indeksa"
+
+#~ msgid "Unexpected end in expression"
+#~ msgstr "Neo�ekivan kraj u izrazu"
+
+#~ msgid "Unexpected end in array index"
+#~ msgstr "Neo�ekivani kraj u nizu indeksa"
+
+#~ msgid "Connection thru HTTP proxy failed"
+#~ msgstr "Konekcija kroz HTTP proksi neuspe�na"
+
+#~ msgid "Case , match , regexp , default or break keyword expected"
+#~ msgstr "Case , match , regexp , default ili break su o�ekivane klju�ne re�i"
+
+#~ msgid "Access denied"
+#~ msgstr "Pristup odbijen"
+
+#~ msgid "Address already in use"
+#~ msgstr "Adresa se ve� koristi"
+
+#~ msgid "Can't assign the requested address"
+#~ msgstr "Ne mogu da dodelim tra�enu adresu"
+
+#~ msgid "Connection reset by peer"
+#~ msgstr "Konekcija resetovana od peer"
+
+#~ msgid "Host unreachable (no route to host)"
+#~ msgstr "Host nedostupan (nema rute ka hostu)"
+
+#~ msgid "Variable expected"
+#~ msgstr "Promenljiva o�ekivana"
+
+#~ msgid "Invalid array index: positive integer expected"
+#~ msgstr "Pogre�an niz indeksa: o�ekivan pozitivni ceo broj"
+
+#~ msgid "listen() call failed"
+#~ msgstr "listen() poziv neuspe�an"
+
+#~ msgid "This executable has been compiled without SSL support"
+#~ msgstr "Ovaj KVIrc je kompajliran bez SSL podr�ke"
+
+#~ msgid "Secure Socket Layer error"
+#~ msgstr "Gre�a Sigurnog Nivo-a Priklju�ka (SSL-a)"
+
+#~ msgid "Slash (/) character expected"
+#~ msgstr "Kosa crta (/) je o�ekivani znak"
+
+#~ msgid "Unknown string manipulation operation"
+#~ msgstr "Nepoznata operacija manipulacije znakom"
+
+#, fuzzy
+#~ msgid "Operation aborted"
+#~ msgstr "Konektovanje prekinuto"
+
+#, fuzzy
+#~ msgid "Unexpected token"
+#~ msgstr "Neo�ekivani znak"
+
+#~ msgid "%u h %u m %u s"
+#~ msgstr "%u h %u m %u s"
+
+#, fuzzy
+#~ msgid "%u h %u%u m %u%u s"
+#~ msgstr "%u h %u m %u s"
+
+#, fuzzy
+#~ msgid "%u m %u s"
+#~ msgstr "%u h %u m %d s"
+
+#~ msgid "%u m %u%u s"
+#~ msgstr "%u h %u m %u s"
+
+#, fuzzy
+#~ msgid "%u d %u h %u m %u s"
+#~ msgstr "%u h %u m %u s"
+
+#, fuzzy
+#~ msgid "%u d %u%u h %u%u m %u%u s"
+#~ msgstr "%u h %u m %u s"
+
+#, fuzzy
+#~ msgid "Select color"
+#~ msgstr "Izaberi sve"
+
+#, fuzzy
+#~ msgid "&Basic colors"
+#~ msgstr "uske boje"
+
+#, fuzzy
+#~ msgid "&Custom colors"
+#~ msgstr "Boja kursora"
+
+#, fuzzy
+#~ msgid "Select Font"
+#~ msgstr "selekcija"
+
+#, fuzzy
+#~ msgid "&Font"
+#~ msgstr "Font"
+
+#, fuzzy
+#~ msgid "&Size"
+#~ msgstr "Veli�ina"
+
+#, fuzzy
+#~ msgid "Sample"
+#~ msgstr "&Oblik"
+
+#, fuzzy
+#~ msgid "Scr&ipt"
+#~ msgstr "Opis"
+
+#, fuzzy
+#~ msgid "Parent Directory"
+#~ msgstr "Direktorijum"
+
+#, fuzzy
+#~ msgid "New Directory"
+#~ msgstr "Direktorijum"
+
+#~ msgid "Bookmarks"
+#~ msgstr "Markeri"
+
+#, fuzzy
+#~ msgid "Add Bookmark"
+#~ msgstr "Dodaj marker"
+
+#, fuzzy
+#~ msgid "&Edit Bookmarks"
+#~ msgstr "Markeri"
+
+#, fuzzy
+#~ msgid "Sorting"
+#~ msgstr "Deljenje"
+
+#, fuzzy
+#~ msgid "By Name"
+#~ msgstr "Naziv"
+
+#, fuzzy
+#~ msgid "By Size"
+#~ msgstr "Veli�ina"
+
+#, fuzzy
+#~ msgid "Reverse"
+#~ msgstr "Server"
+
+#, fuzzy
+#~ msgid "Directories First"
+#~ msgstr "&Direktorijum �ita�"
+
+#, fuzzy
+#~ msgid "Case Insensitive"
+#~ msgstr "Razlikuj velika i mala slova"
+
+#, fuzzy
+#~ msgid "Short View"
+#~ msgstr "poruka razdvajanja"
+
+#, fuzzy
+#~ msgid "Show Hidden Files"
+#~ msgstr "Prika�i skrivene fajlove"
+
+#, fuzzy
+#~ msgid "Show Preview"
+#~ msgstr "&Kazi u prozor"
+
+#, fuzzy
+#~ msgid "Separate Directories"
+#~ msgstr "Razdvaja�"
+
+#, fuzzy
+#~ msgid "Desktop"
+#~ msgstr "Link radne povr�ine"
+
+#, fuzzy
+#~ msgid "Home Directory"
+#~ msgstr "Korisni�ki direktorijum"
+
+#~ msgid "Network"
+#~ msgstr "Mre�a"
+
+#, fuzzy
+#~ msgid "New Directory..."
+#~ msgstr "Direktorijum"
+
+#, fuzzy
+#~ msgid "Small Icons"
+#~ msgstr "Poka�i ikone poruka"
+
+#, fuzzy
+#~ msgid "Properties..."
+#~ msgstr "Pode�avanja"
+
+#, fuzzy
+#~ msgid "&Preview"
+#~ msgstr "&Pita"
+
+#, fuzzy
+#~ msgid "&Filter:"
+#~ msgstr "Filter"
+
+#, fuzzy
+#~ msgid "All Files"
+#~ msgstr "Fajl"
+
+#~ msgid "Directory"
+#~ msgstr "Direktorijum"
+
+#~ msgid "Fifo"
+#~ msgstr "Fifo"
+
+#~ msgid "Block device"
+#~ msgstr "Blok ure�aj"
+
+#~ msgid "Char device"
+#~ msgstr "Karakter ure�aj"
+
+#~ msgid "Octet stream (unknown)"
+#~ msgstr "Oktet strim (nepoznat)"
+
+#~ msgid "Invalid crypt engine"
+#~ msgstr "Pogre�na ma�ina za kriptovanje"
+
+#~ msgid "WARNING : Can not load image library %s"
+#~ msgstr "UPOZORENJE : Ne mogu da u�itam biblioteku slike %s"
+
+#, fuzzy
+#~ msgid "The specified network has no server entries"
+#~ msgstr "Navedeni prozor nema pripadaju�ih dugmadi"
+
+#, fuzzy
+#~ msgid "Aborted"
+#~ msgstr "Prekini"
+
+#, fuzzy
+#~ msgid "No request"
+#~ msgstr "DCC zahtev"
+
+#, fuzzy
+#~ msgid "Unsupported protocol %1"
+#~ msgstr "Nepodr�an pravac"
+
+#, fuzzy
+#~ msgid "Unable to start the DNS lookup"
+#~ msgstr "Ne mogu da pokrenem DNS traganje"
+
+#~ msgid "Looking up host %s"
+#~ msgstr "Tra�im host %s"
+
+#, fuzzy
+#~ msgid "Host %s resolved to %s"
+#~ msgstr "Ime hosta proksija pronadjeno kao %s"
+
+#, fuzzy
+#~ msgid "Unable to start the request slave thread"
+#~ msgstr "Ne mogu da pokrenem DNS traganje"
+
+#~ msgid "Contacting host %s on port %u"
+#~ msgstr "Kontaktiram host %s na portu %u"
+
+#, fuzzy
+#~ msgid "Connection established, sending request"
+#~ msgstr "Pove�i na izabrano"
+
+#, fuzzy
+#~ msgid "Can't open file \"%s\" for writing"
+#~ msgstr "Ne mogu da otvorim fajl %s za upisivanje"
+
+#, fuzzy
+#~ msgid "Invalid HTTP response: %s"
+#~ msgstr "Neispravna IP adresa (%s)"
+
+#~ msgid "Select error: %s (errno=%d)"
+#~ msgstr "Gre�ka selektovanja: %s (broj gre�ke=%d)"
+
+#~ msgid "Operation timed out"
+#~ msgstr "Isteklo vreme za operaciju"
+
+#~ msgid "Failed to enter non blocking mode"
+#~ msgstr "Ne mogu da u�em u ne-blokiraju�i mod"
+
+#~ msgid "Invalid target address"
+#~ msgstr "Pogre�na odredi�na adresa"
+
+#~ msgid "Connect error: %s (errno=%d)"
+#~ msgstr "Gre�ka konektovanja: %s (broj gre�ke=%d)"
+
+#~ msgid "Write error: %s (errno=%d)"
+#~ msgstr "Gre�ka u pisanju: %s (broj gre�ke=%d)"
+
+#~ msgid "Operation timed out (while selecting for read)"
+#~ msgstr "Operacija istekla (dok je birano za �itanje)"
+
+#~ msgid "Read error: %s (errno=%d)"
+#~ msgstr "Gre�ka �itanja: %s (broj gre�ke=%d)"
+
+#, fuzzy
+#~ msgid "Encoding"
+#~ msgstr "dolaze�e"
+
+#, fuzzy
+#~ msgid "Reconnection Options"
+#~ msgstr "konekcija"
+
+#, fuzzy
+#~ msgid "Usage"
+#~ msgstr "Tip poruke"
+
+#, fuzzy
+#~ msgid "message"
+#~ msgstr "Tip poruke"
+
+#, fuzzy
+#~ msgid "Usage:"
+#~ msgstr "Tip poruke"
+
+#, fuzzy
+#~ msgid "You must be connected to a server"
+#~ msgstr "Niste zaka�eni na IRC server"
+
+#, fuzzy
+#~ msgid "Lag is"
+#~ msgstr "Bele�ke"
+
+#, fuzzy
+#~ msgid "This is not a channel window"
+#~ msgstr "Ovo nije kanal"
+
+#, fuzzy
+#~ msgid "Unsupported type: $0"
+#~ msgstr "Nepodr�an mod kriptovanja"
+
+#, fuzzy
+#~ msgid "No such user: $0"
+#~ msgstr "Nema takvog tajmera (%s)"
+
+#, fuzzy
+#~ msgid "Stop Highlighting (Local)"
+#~ msgstr "Omogu�i nagla�avanje re�i"
+
+#, fuzzy
+#~ msgid "Start Highlighting (Local)"
+#~ msgstr "Omogu�i nagla�avanje re�i"
+
+#, fuzzy
+#~ msgid "Always Highlight"
+#~ msgstr "Omogu�i URL isticanje"
+
+#, fuzzy
+#~ msgid "Highlight as"
+#~ msgstr "Nagla�eni tekst"
+
+#, fuzzy
+#~ msgid "Stop Highlighting"
+#~ msgstr "Omogu�i nagla�avanje re�i"
+
+#, fuzzy
+#~ msgid "is being ignored"
+#~ msgstr "ignorisano"
+
+#, fuzzy
+#~ msgid "is not being ignored"
+#~ msgstr "ignorisano"
+
+#, fuzzy
+#~ msgid "Ignore as"
+#~ msgstr "ignorisano"
+
+#, fuzzy
+#~ msgid "Unignore"
+#~ msgstr "ignorisano"
+
+#, fuzzy
+#~ msgid "is registered as"
+#~ msgstr "Registrovani korisnici"
+
+#, fuzzy
+#~ msgid "is in the notify list"
+#~ msgstr "Nema korisnika u listi obave�tenja"
+
+#, fuzzy
+#~ msgid "has a default avatar"
+#~ msgstr "Avatar slika"
+
+#, fuzzy
+#~ msgid "is not registered"
+#~ msgstr "registrovano"
+
+#, fuzzy
+#~ msgid "Register"
+#~ msgstr "registrovano"
+
+#, fuzzy
+#~ msgid "Quick Registration"
+#~ msgstr "akcija izbacivanja"
+
+#, fuzzy
+#~ msgid "Register as"
+#~ msgstr "Registrovani korisnici"
+
+#, fuzzy
+#~ msgid "Unregister"
+#~ msgstr "registrovano"
+
+#, fuzzy
+#~ msgid "Add to Notify"
+#~ msgstr "Lista obave�tenja"
+
+#, fuzzy
+#~ msgid "Remove from Notify"
+#~ msgstr "Ukloni proksi"
+
+#, fuzzy
+#~ msgid "Choose"
+#~ msgstr "Izaberi..."
+
+#, fuzzy
+#~ msgid "Choose Avatar Image File"
+#~ msgstr "Izaberite jednu sliku..."
+
+#, fuzzy
+#~ msgid "Set as Default"
+#~ msgstr "predefinisano"
+
+#, fuzzy
+#~ msgid "Clear Default"
+#~ msgstr "Obri�i sve"
+
+#, fuzzy
+#~ msgid "Channel Owner"
+#~ msgstr "Mod kanala"
+
+#, fuzzy
+#~ msgid "Channel Administrator"
+#~ msgstr "Operatori kanala"
+
+#, fuzzy
+#~ msgid "Channel Operator"
+#~ msgstr "Operatori kanala"
+
+#, fuzzy
+#~ msgid "Half Operator"
+#~ msgstr "Operatori kanala"
+
+#, fuzzy
+#~ msgid "User Operator"
+#~ msgstr "operator %c%c"
+
+#, fuzzy
+#~ msgid "Normal User"
+#~ msgstr "Normalni tekst"
+
+#, fuzzy
+#~ msgid "Ban"
+#~ msgstr "Dodaj zabranu (ban)"
+
+#, fuzzy
+#~ msgid "Multiple Users"
+#~ msgstr "promena moda za vi�e korisnika"
+
+#, fuzzy
+#~ msgid "&Ban"
+#~ msgstr "Dodaj zabranu (ban)"
+
+#, fuzzy
+#~ msgid "idle time"
+#~ msgstr "Proteklo vreme"
+
+#, fuzzy
+#~ msgid "&Information"
+#~ msgstr "informacije servera"
+
+#, fuzzy
+#~ msgid "Mask for"
+#~ msgstr "Ime alijasa"
+
+#, fuzzy
+#~ msgid "&Control"
+#~ msgstr "Pove�i se"
+
+#, fuzzy
+#~ msgid "O&wner"
+#~ msgstr "&Umetni"
+
+#, fuzzy
+#~ msgid "&Deowner"
+#~ msgstr "Dodaj manipulator"
+
+#, fuzzy
+#~ msgid "&Administrator"
+#~ msgstr "Operatori kanala"
+
+#, fuzzy
+#~ msgid "&Deadministrator"
+#~ msgstr "Operatori kanala"
+
+#, fuzzy
+#~ msgid "&Op"
+#~ msgstr "&Otvori"
+
+#, fuzzy
+#~ msgid "&Deop"
+#~ msgstr "Link radne povr�ine"
+
+#, fuzzy
+#~ msgid "&Halfop"
+#~ msgstr "Operatori kanala"
+
+#, fuzzy
+#~ msgid "&Dehalfop"
+#~ msgstr "me de-half-oped"
+
+#, fuzzy
+#~ msgid "&Voice"
+#~ msgstr "Naslov"
+
+#, fuzzy
+#~ msgid "D&evoice"
+#~ msgstr "me de-voiced"
+
+#, fuzzy
+#~ msgid "&Kick"
+#~ msgstr "Nadimak"
+
+#, fuzzy
+#~ msgid "K&ick"
+#~ msgstr "Nadimak"
+
+#, fuzzy
+#~ msgid "With..."
+#~ msgstr "Izm&ena"
+
+#, fuzzy
+#~ msgid "Kick Reason"
+#~ msgstr "akcija izbacivanja"
+
+#, fuzzy
+#~ msgid "Kick/Ban"
+#~ msgstr "akcija izbacivanja"
+
+#, fuzzy
+#~ msgid "Kick/Ban Reason"
+#~ msgstr "akcija izbacivanja"
+
+#, fuzzy
+#~ msgid "Enter a kick/ban reason"
+#~ msgstr "akcija izbacivanja"
+
+#, fuzzy
+#~ msgid "&Kick/Ban"
+#~ msgstr "akcija izbacivanja"
+
+#, fuzzy
+#~ msgid "&Registration"
+#~ msgstr "login operacija kompletna"
+
+#, fuzzy
+#~ msgid "Ig&nore"
+#~ msgstr "ignorisano"
+
+#, fuzzy
+#~ msgid "Notify Avatar"
+#~ msgstr "Lista obave�tenja"
+
+#, fuzzy
+#~ msgid "&Part"
+#~ msgstr "Prenesi"
+
+#, fuzzy
+#~ msgid "Channels"
+#~ msgstr "Kanal"
+
+#, fuzzy
+#~ msgid "&Join Channels..."
+#~ msgstr "Ovo nije kanal"
+
+#, fuzzy
+#~ msgid "&Hop"
+#~ msgstr "Hops"
+
+#, fuzzy
+#~ msgid "l (Connections)"
+#~ msgstr "Konekcija"
+
+#, fuzzy
+#~ msgid "o (Operators)"
+#~ msgstr "operator %c%c"
+
+#, fuzzy
+#~ msgid "t (Connection stats ?)"
+#~ msgstr "status konekcije"
+
+#, fuzzy
+#~ msgid "Chat with"
+#~ msgstr "Izmeni"
+
+#, fuzzy
+#~ msgid "Secure Chat with"
+#~ msgstr "Izmeni"
+
+#, fuzzy
+#~ msgid "Send to"
+#~ msgstr "Postavljeno u"
+
+#, fuzzy
+#~ msgid "Reverse Send to"
+#~ msgstr "Server"
+
+#, fuzzy
+#~ msgid "TDCC Send to"
+#~ msgstr "Postavljeno u"
+
+#, fuzzy
+#~ msgid "TDCC Reverse Send to"
+#~ msgstr "Server"
+
+#, fuzzy
+#~ msgid "Voice Chat"
+#~ msgstr "Naslov"
+
+#, fuzzy
+#~ msgid "&Ignore"
+#~ msgstr "ignorisano"
+
+#, fuzzy
+#~ msgid "Logging to"
+#~ msgstr "odlaze�e"
+
+#, fuzzy
+#~ msgid "Flush Log File"
+#~ msgstr "Izaberi ime konfiguracionog fajla"
+
+#, fuzzy
+#~ msgid "Stop Logging"
+#~ msgstr "odlaze�e"
+
+#, fuzzy
+#~ msgid "Not Logging"
+#~ msgstr "odlaze�e"
+
+#, fuzzy
+#~ msgid "Include Existing Buffer"
+#~ msgstr "### Postoje�i bufer podataka:"
+
+#, fuzzy
+#~ msgid "Log To..."
+#~ msgstr "U�itavanje ikona..."
+
+#, fuzzy
+#~ msgid "Notify avatar"
+#~ msgstr "Lista obave�tenja"
+
+#~ msgid "The config file with id '%s' is not open"
+#~ msgstr "Fajl pode�avanja sa ID-om '%s' nije otvoren"
+
+#~ msgid "The config file with id '%s' is read only"
+#~ msgstr "Fajl sa pode�avanjima sa ID-om '%s' je samo za �itanje"
+
+#, fuzzy
+#~ msgid "No nickname specified"
+#~ msgstr "Nije navedeno ime"
+
+#, fuzzy
+#~ msgid "No netmask specified"
+#~ msgstr "Nema navedena maska"
+
+#, fuzzy
+#~ msgid "No property name specified"
+#~ msgstr "Nije navedena osobina"
+
+#, fuzzy
+#~ msgid "Missing property name"
+#~ msgstr "Nedostaje ime iska�u�eg menija"
+
+#, fuzzy
+#~ msgid "The specified window (%s) is not a channel/query/DCC chat"
+#~ msgstr "Navedeni prozor (%s) nije kanal/upit/dcc"
+
+#~ msgid "No file specified"
+#~ msgstr "Nije naveden fajl"
+
+#~ msgid "Window %s not found"
+#~ msgstr "Prozor %s nije na�en"
+
+#~ msgid "Can't log to file %s"
+#~ msgstr "Ne mogu da logujem u fajl %s"
+
+#~ msgid "Window with id '%s' not found, returning empty string"
+#~ msgstr "Prozor sa ID-om '%s' nije na�en, vra�am prazan znakovni niz"
+
+#, fuzzy
+#~ msgid "Invalid progress value (%s)"
+#~ msgstr "neispravan indeks (%s)"
+
+#, fuzzy
+#~ msgid "Error:not enough parameters!"
+#~ msgstr "Nema dovoljno parametara"
+
+#, fuzzy
+#~ msgid "The (%s) object is not a pixmap"
+#~ msgstr "Izvorni objekat '%s' je ne postoje�i"
+
+#, fuzzy
+#~ msgid "Invalid index parameter (%s)"
+#~ msgstr "Pogre�an parametar"
+
+#, fuzzy
+#~ msgid "Invalid parameter"
+#~ msgstr "Pogre�an parametar"
+
+#, fuzzy
+#~ msgid "Can't find the object "
+#~ msgstr "Ne mogu da prona�em ikonu '%s'"
+
+#, fuzzy
+#~ msgid "Can't set a non-widget object"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Can't find the tab object "
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Can't find the widget(%s)"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Invalid marging value (%s)"
+#~ msgstr "neispravan indeks (%s)"
+
+#, fuzzy
+#~ msgid "This object is not a toolbutton item!"
+#~ msgstr "Izvorni objekat '%s' je ne postoje�i"
+
+#~ msgid "No value to insert"
+#~ msgstr "Nema vrednosti za ubacivanje"
+
+#~ msgid "Invalid index(%s)"
+#~ msgstr "Neispravan indeks(%s)"
+
+#~ msgid "No index specified"
+#~ msgstr "Nije definisan index"
+
+#~ msgid "index %u out of range"
+#~ msgstr "indeks %u je van opsega"
+
+#~ msgid "Invalid index (%s)"
+#~ msgstr "neispravan indeks (%s)"
+
+#~ msgid "Index %u out of range"
+#~ msgstr "Indeks %u je van opsega"
+
+#, fuzzy
+#~ msgid "Invalid resize mode (%s): defaulting to Auto"
+#~ msgstr "Neispravan koder '%s': predefini�em u 'adpcm'"
+
+#, fuzzy
+#~ msgid "Invalid margin value (%s)"
+#~ msgstr "neispravan indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid spacing value (%s)"
+#~ msgstr "neispravan indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid stretch value (%s)"
+#~ msgstr "Neispravan port (%s)"
+
+#, fuzzy
+#~ msgid "Invalid from_row parameter (%s)"
+#~ msgstr "Pogre�an parametar ivice"
+
+#, fuzzy
+#~ msgid "Invalid to_row parameter (%s)"
+#~ msgstr "Pogre�an parametar"
+
+#, fuzzy
+#~ msgid "Invalid from_column parameter (%s)"
+#~ msgstr "Pogre�an parametar ivice"
+
+#, fuzzy
+#~ msgid "Invalid to_column parameter (%s)"
+#~ msgstr "Pogre�an parametar ivice"
+
+#, fuzzy
+#~ msgid "Invalid parameters"
+#~ msgstr "Pogre�an parametar"
+
+#, fuzzy
+#~ msgid "Can't find the widget/pixmap (%s)"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Can't find the widget object to remove (%s)"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Can't remove a non-widget object"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Can't find the widget (%s)"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Invalid zoom value (%s)"
+#~ msgstr "Neispravan port (%s)"
+
+#, fuzzy
+#~ msgid "Invalid depth value (%s)"
+#~ msgstr "Neispravan port (%s)"
+
+#, fuzzy
+#~ msgid "Invalid value (%s)"
+#~ msgstr "Neispravan port (%s)"
+
+#, fuzzy
+#~ msgid "Invalid paragraph value (%s)"
+#~ msgstr "neispravan indeks (%s)"
+
+#, fuzzy
+#~ msgid "There is no widget"
+#~ msgstr "&Uklju�i/isklju�i widget tra�enja"
+
+#, fuzzy
+#~ msgid " I can't find the specified file."
+#~ msgstr "Ne mogu da na�em multimedijalni fajl %s"
+
+#, fuzzy
+#~ msgid " I cannot read the file."
+#~ msgstr "I ne mogu da otvorim taj fajl"
+
+#, fuzzy
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#~ msgid "Class %s is undefined"
+#~ msgstr "Klasa %s nije definisana"
+
+#~ msgid "The source object '%s' is not existing"
+#~ msgstr "Izvorni objekat '%s' je ne postoje�i"
+
+#~ msgid "The target object '%s' is not existing"
+#~ msgstr "Odredi�ni objekat '%s' je ne postoje�i"
+
+#~ msgid "No signal '%s' to disconnect"
+#~ msgstr "Nema signala '%s' za prekid veze"
+
+#, fuzzy
+#~ msgid "No destination specified"
+#~ msgstr "Nije navedeno ime"
+
+#, fuzzy
+#~ msgid "Can't find the destination widget/pixmap (%s)"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "No source specified"
+#~ msgstr "Nije naveden fajl"
+
+#, fuzzy
+#~ msgid "Can't find the source widget/pixmap (%s)"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Invalid x parameter (%s)"
+#~ msgstr "Pogre�an parametar"
+
+#, fuzzy
+#~ msgid "Invalid y parameter (%s)"
+#~ msgstr "Pogre�an parametar"
+
+#, fuzzy
+#~ msgid "Can't find the listviewitem object to add (%s)"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Invalid column (%s)"
+#~ msgstr "neispravan indeks (%s)"
+
+#~ msgid "Invalid margin parameter"
+#~ msgstr "Pogre�an parametar ivice"
+
+#~ msgid "Unknown alignment: %s"
+#~ msgstr "Nepoznato poravnanje: %s"
+
+#~ msgid "Unknown frame / shadow style: %s"
+#~ msgstr "Nepoznat okvir / stila senke: %s"
+
+#~ msgid "Hey ! You wanna know my echo mode or what ?"
+#~ msgstr "Hej ! �eli� da zna� moj mod ili �ta ve� ?"
+
+#~ msgid "Unknown echo mode"
+#~ msgstr "Nepoznat eho mod"
+
+#, fuzzy
+#~ msgid "Can't find the object to add (%s)"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Invalid object."
+#~ msgstr "Pogre�no vreme isteka"
+
+#, fuzzy
+#~ msgid "Can't setStretchableWidget a non-widget object."
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Can't find the popupmenu object to add (%s)"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Can't find the widget object (%s)"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#, fuzzy
+#~ msgid "Invalid columns value (%s)"
+#~ msgstr "neispravan indeks (%s)"
+
+#, fuzzy
+#~ msgid "Invalid size value (%s)"
+#~ msgstr "Neispravan port (%s)"
+
+#, fuzzy
+#~ msgid "Invalid icon identifier"
+#~ msgstr "Pogre�an uslu�ni identifikator"
+
+#, fuzzy
+#~ msgid ""
+#~ "Can't set the current avatar to '%s': failed to start the http transfer"
+#~ msgstr ""
+#~ "Ne mogu da postavim trenutni avatar na '%s' (ne mogu da u�itam sliku): "
+#~ "nije poslata poruka"
+
+#, fuzzy
+#~ msgid "Can't set the current avatar to '%s': can't load the image"
+#~ msgstr ""
+#~ "Ne mogu da postavim trenutni avatar na '%s' (ne mogu da u�itam sliku): "
+#~ "nije poslata poruka"
+
+#~ msgid "No environment variable name given"
+#~ msgstr "Nije dato ime prmenljive okru�enja"
+
+#~ msgid "Can't find the window with id '%s'"
+#~ msgstr "Ne mogu da prona�em prozor sa ID-om '%s'"
+
+#~ msgid "The specified window (%s) is not a channel"
+#~ msgstr "Navedeni prozor (%s) nije kanal"
+
+#, fuzzy
+#~ msgid "No button name specified!"
+#~ msgstr "Nije navedeno ime opcije"
+
+#, fuzzy
+#~ msgid "No separator name specified"
+#~ msgstr "Nije navedeno ime opcije"
+
+#, fuzzy
+#~ msgid "No toolbar id specified"
+#~ msgstr "Nije navedeno ime opcije"
+
+#, fuzzy
+#~ msgid "The action \"%s\" doesn't exist"
+#~ msgstr "Fajl pode�avanja sa ID-om '%s' nije otvoren"
+
+#~ msgid "Invalid IRC context id '%s'"
+#~ msgstr "Pogre�an ID IRC konteksta '%s'"
+
+#, fuzzy
+#~ msgid "Background not found %s "
+#~ msgstr "Boja pozadine"
+
+#~ msgid "Mask %s is already used to identify user %s"
+#~ msgstr "Maska %s je ve� iskori��ena da identifikuje korisnika %s"
+
+#~ msgid "User not found (%s)"
+#~ msgstr "Korisnik nije na�en (%s)"
+
+#~ msgid "User %s not found"
+#~ msgstr "Korisnik %s nije prona�en"
+
+#~ msgid "Mask %s already used to identify user %s"
+#~ msgstr "Maska %s je ve� iskori��ena da identifikuje korisnika %s"
+
+#~ msgid "Mask %s not found"
+#~ msgstr "Maska %s nije na�ena"
+
+#, fuzzy
+#~ msgid "Sound file '%s' not found"
+#~ msgstr "Prozor %s nije na�en"
+
+#, fuzzy
+#~ msgid "Unable to play sound '%s'"
+#~ msgstr "Ne mogu da kopiram %s u %s"
+
+#, fuzzy
+#~ msgid "The specified name is empty"
+#~ msgstr "Naveden prozor nije kanal"
+
+#, fuzzy
+#~ msgid "The specified visible name is empty"
+#~ msgstr "Navedena veli�ina fajla je neispravna"
+
+#, fuzzy
+#~ msgid "The specified description is empty"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#, fuzzy
+#~ msgid "The specified KVIrc version \"%s\" is not a valid version string"
+#~ msgstr "Specifi�na bind adresa (%s) nije validna"
+
+#~ msgid "Destination file exists: no copy made"
+#~ msgstr "Odredi�ni fajl postoji: nije napravljena kopija"
+
+#~ msgid "Failed to copy %s to %s"
+#~ msgstr "Ne mogu da kopiram %s u %s"
+
+#~ msgid "Failed to write to file %s"
+#~ msgstr "Neuspe�no pisanje u fajl %s"
+
+#~ msgid "Failed to rename %s to %s"
+#~ msgstr "Ne mogu da preimenujem %s u %s"
+
+#~ msgid "Failed to make the directory %s"
+#~ msgstr "Ne mogu da napravim direktorijum %s"
+
+#~ msgid "Failed to remove the file %s"
+#~ msgstr "Neuspe�no uklanjanje fajla %s"
+
+#~ msgid "Failed to remove the directory %s"
+#~ msgstr "Neuspe�no uklanjanje direktorijuma %s"
+
+#, fuzzy
+#~ msgid "The specified directory does not exist '%s'"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#~ msgid "Can't open the file \"%s\" for reading"
+#~ msgstr "Ne mogu da otvorim fajl \"%s\" za �itanje"
+
+#~ msgid "Read error for file %s"
+#~ msgstr "Gre�ka u �itanju za fajl %s"
+
+#~ msgid ""
+#~ "Read error for file %s (have been unable to read the requested size in "
+#~ "1000 retries)"
+#~ msgstr ""
+#~ "Gre�ka u �itanju za fajl %s (nisam mogao da pro�itam zahtevanu veli�inu u "
+#~ "1000 poku�aja)"
+
+#~ msgid "No such options page class name"
+#~ msgstr "Nema takvog imena klase za stranicu opcija"
+
+#, fuzzy
+#~ msgid "%Q is not an integer"
+#~ msgstr "Iska�i�i meni (popup) '%Q' nije definisan"
+
+#~ msgid "Window with caption '%s' not found, returning 0"
+#~ msgstr "Prozor sa naslovom '%s' nije na�en, vra�am 0"
+
+#, fuzzy
+#~ msgid "The specified UNIX time is not valid (%s)"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#, fuzzy
+#~ msgid "The specified time format is not valid (%s)"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#~ msgid "No option named '%s'"
+#~ msgstr "Nema opcije sa imenom '%s'"
+
+#~ msgid "No option name specified"
+#~ msgstr "Nije navedeno ime opcije"
+
+#~ msgid "No link text specified"
+#~ msgstr "Nije naveden tekst za link"
+
+#~ msgid "No command specified"
+#~ msgstr "Nije navedena komanda"
+
+#, fuzzy
+#~ msgid "Broken prologue code for menu '%s', error detail follows"
+#~ msgstr "Prekinut kod predgovora za meni '%s': prate�i detalji gre�ke"
+
+#~ msgid "Broken expression for menu item '%Q', ignoring"
+#~ msgstr "Prekinut izraz sa stavku menija '%Q': ignori�em"
+
+#~ msgid "Can't find the external popup '%Q', ignoring"
+#~ msgstr "Ne mogu da na�em spoljni popup '%Q': ignori�em"
+
+#, fuzzy
+#~ msgid "Broken epilogue code for menu '%s', error details follow"
+#~ msgstr "Prekinut kod zaklju�ka za meni '%s': prate�i detalji o gre�ci"
+
+#~ msgid "Function name expected"
+#~ msgstr "Ime funkcije o�ekivano"
+
+#, fuzzy
+#~ msgid "The catalogue %s was not loaded"
+#~ msgstr "Fajl '%s' nije �itljiv"
+
+#~ msgid "Invalid icon specification '%s', using default"
+#~ msgstr "Pogre�no navedena ikona '%s', koristim predefinisano"
+
+#~ msgid "Missing icon number after the 'i' switch"
+#~ msgstr "Nedostaje broj ikone posle 'i' prekida�a"
+
+#, fuzzy
+#~ msgid "Missing window ID after the 'w' switch"
+#~ msgstr "Nedostaje ID prozora posle 'w' prekida�a"
+
+#~ msgid "No targets specified"
+#~ msgstr "Nema definisanih odredi�ta (meta)"
+
+#~ msgid "Missing new nickname"
+#~ msgstr "Nedostaje nov nadimak"
+
+#~ msgid "Missing target"
+#~ msgstr "Nedostaje odredi�te (meta)"
+
+#~ msgid "Missing target channel"
+#~ msgstr "Nedostaje odredi�te kanala"
+
+#~ msgid "No such object (%s)"
+#~ msgstr "Nema takvog objekta (%s)"
+
+#~ msgid "Invalid screen coordinates"
+#~ msgstr "Neispravne koordinate ekrana"
+
+#~ msgid "Invalid syntax for the screen coordinates"
+#~ msgstr "Neispravna sintaksa ta koordinate ekrana"
+
+#~ msgid "Invalid timeout delay '%s'"
+#~ msgstr "Pogre�no ka�njenje odziva '%s'"
+
+#, fuzzy
+#~ msgid "Empty command block for timer '%s', timer not started"
+#~ msgstr "Prazan komandni blok za tajmer '%s': tajmer nije pokrenut"
+
+#, fuzzy
+#~ msgid ""
+#~ "Internal error: Unable to add timer %s, insufficient system resources"
+#~ msgstr ""
+#~ "Interna gre�ka: ne mogu da dodam tajmer %s, nedovoljno sistemskih resursa"
+
+#~ msgid "No such timer (%s)"
+#~ msgstr "Nema takvog tajmera (%s)"
+
+#~ msgid "No such event (%s)"
+#~ msgstr "Nema takvog doga�aja (%s)"
+
+#~ msgid "No handler '%s' for raw numeric event '%d'"
+#~ msgstr "Nema upravlja�e '%s' za sirov (raw) brojni doga�aj '%d'"
+
+#~ msgid "No handler '%s' for event '%s'"
+#~ msgstr "Nema upravlja�a '%s' za doga�aj '%s'"
+
+#~ msgid "Failed to execute command '%s'"
+#~ msgstr "Ne mogu da izvr�im komandu '%s'"
+
+#~ msgid "Invalid IRC url (%s)"
+#~ msgstr "Pogre�an IRC url (%s)"
+
+#~ msgid "The commandline for this url type seems to be broken (%s)"
+#~ msgstr "Komandna linija za ovaj url izgleda da je prekinuta (%s)"
+
+#~ msgid "No commandline specified for this type of url (%s)"
+#~ msgstr "Nema navedene komandne linije za ovu vrstu url-a (%s)"
+
+#~ msgid "Invalid pitch (%s): using default"
+#~ msgstr "Pogre�an nivo (%s): koristim predefinisano"
+
+#~ msgid "Invalid duration (%s): using default"
+#~ msgstr "Pogre�no trajanje (%s): koristim predefinisano"
+
+#~ msgid "Can't find the icon '%s'"
+#~ msgstr "Ne mogu da prona�em ikonu '%s'"
+
+#~ msgid "Window button '%s' not found"
+#~ msgstr "Dugme prozora '%s' nije na�eno"
+
+#, fuzzy
+#~ msgid "Can't rebind the command sequence: missing window identifier"
+#~ msgstr ""
+#~ "Ne mogu da pove�em komandu: nedostaje identifikator prozora posle -r "
+#~ "prekida�a"
+
+#, fuzzy
+#~ msgid "Can't rebind the command sequence: window with id %s not found"
+#~ msgstr "Ne mogu da pove�em komandu: prozor sa ID-om %s nije na�en"
+
+#~ msgid "Unmatched parenthesis in expression body: ignoring trailing garbage"
+#~ msgstr "Nepodudaraju�e zagrade u telu izraza: ignori�em teku�e �ubre"
+
+#~ msgid "Error triggered from timer callback handler %c'%s'"
+#~ msgstr "Gre�ka nastala od upravlja�a vremeskog odziva %c'%s'"
+
+#~ msgid "Timer callback handler '%s' is broken: killing"
+#~ msgstr "Upravlja� vremenskog odziva '%s' je prekinut: ubijam"
+
+#, fuzzy
+#~ msgid "Initializing scripting engine..."
+#~ msgstr "Pogre�na ma�ina za kriptovanje"
+
+#, fuzzy
+#~ msgid "Loading actions..."
+#~ msgstr "U�itavanje opcija..."
+
+#~ msgid "Loading icons..."
+#~ msgstr "U�itavanje ikona..."
+
+#~ msgid "Performing early initializations..."
+#~ msgstr "Izvr�avam prethodnu inicijalizaciju..."
+
+#~ msgid "Loading window configuration database..."
+#~ msgstr "U�itavam bazu konfiguracije prozora"
+
+#~ msgid "Loading server & proxy database..."
+#~ msgstr "U�itavam server & proksi bazu podataka..."
+
+#~ msgid "Loading event handlers..."
+#~ msgstr "U�itavam upravlja� doga�aja...."
+
+#~ msgid "Loading raw event handlers..."
+#~ msgstr "U�itavam upravlja� osnovnim doga�ajima..."
+
+#~ msgid "Loading popups..."
+#~ msgstr "U�itavam iska�u�e menije..."
+
+#, fuzzy
+#~ msgid "Loading toolbars..."
+#~ msgstr "U�itavanje opcija..."
+
+#~ msgid "Loading aliases..."
+#~ msgstr "U�itavam alijase..."
+
+#~ msgid "Loading text icon associations..."
+#~ msgstr "U�itavasocijacije tekst ikona..."
+
+#~ msgid "Loading recent entries..."
+#~ msgstr "U�itavam skora�nje unose..."
+
+#~ msgid "Loading media types..."
+#~ msgstr "U�itavam tipove medija..."
+
+#~ msgid "Loading registered users..."
+#~ msgstr "U�itavam registrovane korisnike..."
+
+#, fuzzy
+#~ msgid "Loading registered channels..."
+#~ msgstr "U�itavam registrovane korisnike..."
+
+#~ msgid "Loading file trader configuration..."
+#~ msgstr "U�itavam konfiguraciju fajl razmenjiva�a ..."
+
+#~ msgid "Loading nick serv service configuration..."
+#~ msgstr "U�itavam konfiguraciju NickServ servisa..."
+
+#, fuzzy
+#~ msgid "Loading history entries..."
+#~ msgstr "U�itavam skora�nje unose..."
+
+#, fuzzy
+#~ msgid "Loading avatar cache..."
+#~ msgstr "U�itavam alijase..."
+
+#~ msgid "Creating internal structures..."
+#~ msgstr "Kreiram interne strukture..."
+
+#~ msgid "Starting up the engine..."
+#~ msgstr "Startujem ma�inu..."
+
+#~ msgid "Have fun! :)"
+#~ msgstr "Puno zabave! :-)"
+
+#, fuzzy
+#~ msgid "Show Crypto Controller"
+#~ msgstr "Uklju�i/isklju�i kontroler za kriptovanje"
+
+#, fuzzy
+#~ msgid "Toggle Notify List"
+#~ msgstr "Uklju�i/isklju�i listu obave�tenja"
+
+#~ msgid "Initiating startup sequence..."
+#~ msgstr "Iniciram po�etnu sekvencu"
+
+#, fuzzy
+#~ msgid "&New Alias"
+#~ msgstr "Alias"
+
+#~ msgid "Loading options..."
+#~ msgstr "U�itavanje opcija..."
+
+#, fuzzy
+#~ msgid "defpopup: internal error"
+#~ msgstr "Ups...interna gre�ka ?"
+
+#, fuzzy
+#~ msgid "User Messages"
+#~ msgstr "sistemska poruka"
+
+#, fuzzy
+#~ msgid "Transport"
+#~ msgstr "Transparentno "
+
+#, fuzzy
+#~ msgid "The specified window does not exist"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#, fuzzy
+#~ msgid "The specified timeout is not valid, assuming 0"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#, fuzzy
+#~ msgid "No url specified"
+#~ msgstr "Nije naveden fajl"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %s"
+#~ msgstr "Ne mogu da po�nem da slu�am"
+
+#, fuzzy
+#~ msgid "Failed to start the get request: %Q"
+#~ msgstr "Ne mogu da po�nem da slu�am"
+
+#~ msgid "Input buffer: %d bytes"
+#~ msgstr "Ulazni bafer: %d bajtova"
+
+#~ msgid "Output buffer: %d bytes"
+#~ msgstr "Izlazni bafer: %d bajtova"
+
+#~ msgid "Volume: %i"
+#~ msgstr "Ja�ina: %i"
+
+#~ msgid "<unknown size>"
+#~ msgstr "<nepoznata veli�ina>"
+
+#~ msgid "\"any\""
+#~ msgstr "\"bilo koji\""
+
+#, fuzzy
+#~ msgid "Unable to get address of interface %Q"
+#~ msgstr "Ne mogu da dobijem adresu interfejsa %s"
+
+#, fuzzy
+#~ msgid "No suitable interfaces to listen on, use -i"
+#~ msgstr "Nema pogodnog interfejsa za slu�anje: koristi -i"
+
+#~ msgid "Missing target nickname"
+#~ msgstr "Nedostaje odredi�ni nadimak"
+
+#~ msgid "-c requires -i and -p"
+#~ msgstr "-c zahteva -i i -p"
+
+#~ msgid "Missing filename"
+#~ msgstr "Nedostaje ime fajla"
+
+#, fuzzy
+#~ msgid "The file size is not an positive number"
+#~ msgstr "Veli�ina fajla nije neobele�eni broj"
+
+#, fuzzy
+#~ msgid "Invalid sample rate '%s', defaulting to 8000"
+#~ msgstr "Neispravna brzina semplovanja '%s' predefini�em na 8000"
+
+#, fuzzy
+#~ msgid "The current window has no associated DCC session"
+#~ msgstr "Ovaj prozor nema odgovaraju�i IRC kontekst"
+
+#, fuzzy
+#~ msgid "The specified parameter is not a valid DCC identifier"
+#~ msgstr "Naveden prozor nije kanal"
+
+#, fuzzy
+#~ msgid "The specified window identifier is not valid"
+#~ msgstr "Specifi�na bind adresa (%Q) nije validna"
+
+#, fuzzy
+#~ msgid "The first parameter must be an unsigned number"
+#~ msgstr "Veli�ina fajla nije neobele�eni broj"
+
+#~ msgid "No filename specified"
+#~ msgstr "Nije navedeno ime fajla"
+
+#, fuzzy
+#~ msgid "The file '%s' is not readable"
+#~ msgstr "Iska�i�i meni (popup) '%s' nije definisan"
+
+#~ msgid "Invalid timeout, ignoring"
+#~ msgstr "Neispravno vreme isteka, ignori�em"
+
+#~ msgid "Invalid visible name: using default"
+#~ msgstr "Neispravno vidljivo ime: koristim predefinisano"
+
+#, fuzzy
+#~ msgid "Ops..failed to add the sharedfile..."
+#~ msgstr "Ups...Ne mogu da dodam ponudu...."
+
+#, fuzzy
+#~ msgid "The specified file size is invalid"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#, fuzzy
+#~ msgid "No sharedfile with visible name '%s' and user mask '%s'"
+#~ msgstr "Nema ponude sa vidljivim imenom '%s' i maskom korisnika '%s'"
+
+#, fuzzy
+#~ msgid "[Parser warning in '%s']: %s"
+#~ msgstr "[parser upozorenje u '%s'] : %s"
+
+#, fuzzy
+#~ msgid "Windows XP style"
+#~ msgstr "Lista prozora"
+
+#, fuzzy
+#~ msgid " I can't find the specified file %s."
+#~ msgstr "Ne mogu da na�em multimedijalni fajl %s"
+
+#~ msgid "-e mode change change"
+#~ msgstr "-e promena moda"
+
+#, fuzzy
+#~ msgid "Missing file name to parse"
+#~ msgstr "Nedostaje ime fajla"
+
+#, fuzzy
+#~ msgid "A popup name is expected as parameter"
+#~ msgstr "Ne-negativna du�ina celog broja je o�ekivana kao parametar"
+
+#~ msgid "%Q [%Q@%Q] unsets avatar (%Q %Q)"
+#~ msgstr "%Q [%Q@%Q] sklonio avatar (%Q %Q)"
+
+#, fuzzy
+#~ msgid ""
+#~ "Can't set the current avatar to '%s' (failed to start the http transfer): "
+#~ "no message sent"
+#~ msgstr ""
+#~ "Ne mogu da postavim trenutni avatar na '%s' (ne mogu da u�itam sliku): "
+#~ "nije poslata poruka"
+
+#~ msgid ""
+#~ "Can't set the current avatar to '%s' (can't load the image): no message "
+#~ "sent"
+#~ msgstr ""
+#~ "Ne mogu da postavim trenutni avatar na '%s' (ne mogu da u�itam sliku): "
+#~ "nije poslata poruka"
+
+#, fuzzy
+#~ msgid "No socket text specified"
+#~ msgstr "Nije naveden objekat priklju�ka"
+
+#, fuzzy
+#~ msgid "&Export Alias To..."
+#~ msgstr "Ukloni ovaj alijas"
+
+#, fuzzy
+#~ msgid "The script \"%1\" does not exist"
+#~ msgstr "Izvorni objekat '%Q' je ne postoje�i"
+
+#, fuzzy
+#~ msgid "Defaults"
+#~ msgstr "predefinisano"
+
+#, fuzzy
+#~ msgid "Folders"
+#~ msgstr "Filter"
+
+#, fuzzy
+#~ msgid "Parser"
+#~ msgstr "Prenesi"
+
+#, fuzzy
+#~ msgid "runtime warning"
+#~ msgstr "Upozorenje parsera"
+
+#, fuzzy
+#~ msgid "compilation warning"
+#~ msgstr "Upozorenje parsera"
+
+#, fuzzy
+#~ msgid "runtime error"
+#~ msgstr "Interna gre�ka."
+
+#, fuzzy
+#~ msgid "Missing data to evaluate"
+#~ msgstr "Nedostaje odredi�te (meta)"
+
+#~ msgid "Can't find a running winamp window"
+#~ msgstr "Ne mogu da pronadjem pokrenut winamp prozor"
+
+#~ msgid "Can't load the xmms library (libxmms.so)"
+#~ msgstr "Ne mogu da u�itam xmms biblioteku (libxmms.so)"
+
+#~ msgid "Can't find symbol %s in libxmms.so"
+#~ msgstr "Ne mogu da na�em simbol %s u libxmms.so"
+
+#~ msgid ""
+#~ "The winamp plugin has not been installed properly. Check /help $mp3player."
+#~ "gettitle"
+#~ msgstr ""
+#~ "Winamp dodatak nije pravilno instaliran: proveri /help $mp3player.gettitle"
+
+#~ msgid "Help"
+#~ msgstr "Pomo�"
+
+#~ msgid "Enable automatic NickServ identification"
+#~ msgstr "Omogu�i automatsku NickServ identifikaciju"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is a list of NickServ identification rules. KVIrc will use "
+#~ "them to model its automatic interaction with NickServ.<br>Please be aware "
+#~ "that this feature can cause your NickServ passwords to be stolen if used "
+#~ "improperly. Follow the suggestions in the tooltips and make sure that you "
+#~ "fully understand the NickServ authentication protocol.<br>In other words, "
+#~ "be sure to know what you're doing.<br>Also note that the password that "
+#~ "you provide is stored as <b>PLAIN TEXT</b>.Right-click to add/remove "
+#~ "rules.</center>"
+#~ msgstr ""
+#~ "<center>Ovo je lista NickServ identifikacionih pravila. KVIrc �e ih "
+#~ "koristiti da napravi svoju automatsku interakciju sa NickServ-om."
+#~ "<br>Molim imajte na umu da ova mogu�nost mo�e prouzrokovati da va�a "
+#~ "NickServ lozinka bude ukradena, ako je koristite neoprezno: molim pratite "
+#~ "sugestije u savetima i budite sigurni da ste potpuno razumeli protokol "
+#~ "NickServ autorizacije.<br> Drugim re�ima: budite sigurni da znate �ta "
+#~ "radite.<br>Takodje imajte na umu da lozinke koje se �uvaju su u �ITLJIV "
+#~ "TEKST u KVIrc konfiguracionom fajlu. <br>Desni klik za dodavanje/"
+#~ "uklanjanje pravila.</center>"
+
+#, fuzzy
+#~ msgid "Identification Rule"
+#~ msgstr "obave�tenje"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the nickname that this rule will attempt to authenticate "
+#~ "with NickServ, i.e. the nickname that you have registered with NickServ</"
+#~ "center>"
+#~ msgstr ""
+#~ "<center>Ovo je nadimak za koji �e ovo pravilo poku�ati da identifikuje sa "
+#~ "NickServ-om: na primer nadimak koji ste registrovali sa NickServ-om</"
+#~ "center>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is a mask that defines the server(s) that this "
+#~ "identification rule will apply to. For a single server, this option "
+#~ "should just be a hostname like <b>irc.webchat.org</b>. You can use "
+#~ "wildcards to match multiple servers, e.g. <b>*.freenode.net</b> will work "
+#~ "on the whole freenode network (by matching any server names that end in "
+#~ "\".freenode.net\").<br>Please note that some servers have more than one "
+#~ "name. For example, <b>irc.eu.dal.net</b> redirects to a \"random\" DALNet "
+#~ "server, so the real server name will be different. You must provide the "
+#~ "name that the server calls itself, usually displayed in the console "
+#~ "window title.</center>"
+#~ msgstr ""
+#~ "<center>Ovo je maska koja defini�e server(e) na kojima �e raditi ovo "
+#~ "identifikaciono pravilo. Za jedan server, ova opcija bi bila ne�to kao "
+#~ "<b>irc.kvsky.net</b>. Mo�ete koristiti �okere da poklopite vi�e servera: "
+#~ "<b>*.openprojects.net</b> i radi�e na celoj OpenProjects mre�i.(poklapa "
+#~ "samo sva imena servera koja imaju na kraju \".openprojects.net\")."
+#~ "<br>Molim imajte na umu da neki serveri imaju vi�e od jednog imena: kao "
+#~ "primer , irc.eu.dal.net predstavlja \"random\" DalNer server, ali stvarno "
+#~ "ime servera ce biti druga�ije. Morate definisati ime servera koji �elite "
+#~ "koristiti da ga \"identifikujete\". Mo�ete pogledati njegovo ime "
+#~ "koriste�i �pijun Priklju�ka.</center>"
+
+#, fuzzy
+#~ msgid "NickServ mask:"
+#~ msgstr "NickServ maska"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the mask that NickServ must match to be correctly "
+#~ "identified as the NickServ service. This usually will be something like "
+#~ "<b>[email protected]</b>.<br>You can use wildcards for "
+#~ "this field, but generally it is a security flaw. If you're absolutely "
+#~ "sure that NO user on the network can use the nickname \"NickServ\", the "
+#~ "mask <b>NickServ!*@*</b> may be safe to use in this field.</center>"
+#~ msgstr ""
+#~ "<center>Ovo je maska koja mora da se ta�no poklopi sa NickServ-om da bi "
+#~ "se korektno identifikovali NickServ servisu. Ovo je obi�no ne�to nalik "
+#~ "<b> [email protected]</b>...Mo�ete koristiti �okere za "
+#~ "ovo polje, ali generalno to je sigurnosno slabo. Ako ste 100% sigurni da "
+#~ "NI JEDAN korisnik na mre�i ne mo�e da promeni svoj nadimak kod NickServ-a "
+#~ "onda verovatno <b>NickServ!*@*</b> �e biti u redu za ovo polje.</center>"
+
+#, fuzzy
+#~ msgid "Identify command:"
+#~ msgstr "Komanda predstavljanja"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center>This is the command that will be executed when NickServ requests "
+#~ "authentication for the nickname described in this rule (if the both "
+#~ "server and NickServ mask are matched). This usually will be something "
+#~ "like <b>msg NickServ identify &lt;yourpassword&gt;</b>.<br>You can use "
+#~ "<b>msg -q</b> if you don't want the password echoed on the screen. Please "
+#~ "note that there is no leading slash in this command.</center>"
+#~ msgstr ""
+#~ "<center>Ovo je komanda koja �e biti izvr�ena kad NickServ zatra�i "
+#~ "autentifikaciju za nadimak opisan u ovom pravilu (ako se poklapa i server "
+#~ "i NickServ maska). Ovo �e biti obi�no ne�to kao <b>msg NickServ identify "
+#~ "&lt;va�alozinka&gt; </b>.Mo�ete koristiti \"msg -q\" ako ne �elite da "
+#~ "lozinka bude vidljiva na ekranu. Molim imajte na umu da ovde nema po�etne "
+#~ "kose crte u ovoj komandi.</center>"
+
+#, fuzzy
+#~ msgid "&New Rule"
+#~ msgstr "Novo pravilo"
+
+#, fuzzy
+#~ msgid "Re&move Rule"
+#~ msgstr "Ukloni"
+
+#, fuzzy
+#~ msgid "Uknown"
+#~ msgstr "Nepoznato"
+
+#, fuzzy
+#~ msgid "Main"
+#~ msgstr "Mini"
+
+#, fuzzy
+#~ msgid "Show IRC Context Toolbar"
+#~ msgstr "&Nov irc kontekst"
+
+#, fuzzy
+#~ msgid "IRC Tools"
+#~ msgstr "&Alati"
+
+#, fuzzy
+#~ msgid "&User Mode"
+#~ msgstr "&Mod korisnika"
+
+#, fuzzy
+#~ msgid "&Join Channel"
+#~ msgstr "Ovo nije kanal"
+
+#~ msgid "Tool bar button '%s' not found"
+#~ msgstr "Dugme trake alata '%s' nije na�eno"
+
+#, fuzzy
+#~ msgid "Options Toolbar"
+#~ msgstr "Opcije"
+
+#, fuzzy
+#~ msgid "Change server settings"
+#~ msgstr "Prikazi pingove servera"
+
+#, fuzzy
+#~ msgid "Change identity settings"
+#~ msgstr "Generalne opcije"
+
+#, fuzzy
+#~ msgid "Configure KVIrc"
+#~ msgstr "&Opcije"
+
+#, fuzzy
+#~ msgid "Window Toolbar"
+#~ msgstr "&Alati"
+
+#, fuzzy
+#~ msgid "Cascade"
+#~ msgstr "Poni�ti"
+
+#, fuzzy
+#~ msgid "Minimize All"
+#~ msgstr "M&inimizuj"
+
+#, fuzzy
+#~ msgid ""
+#~ "The specified name is assigned to an item that is not a separator (%s)"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#, fuzzy
+#~ msgid "The specified toolbar doesn't exist (%s)"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#, fuzzy
+#~ msgid "The specified button doesn't exist (%s)"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#, fuzzy
+#~ msgid "The specified name is assigned to an item that is not a button (%s)"
+#~ msgstr "Nevedeno unix vreme nije ispravno (%s)"
+
+#, fuzzy
+#~ msgid "Toolbar name:"
+#~ msgstr "Ime alijasa"
+
+#, fuzzy
+#~ msgid "New &Button"
+#~ msgstr "Nova Mre�a"
+
+#, fuzzy
+#~ msgid "New &Separator"
+#~ msgstr "Nov razdvaja�"
+
+#, fuzzy
+#~ msgid "URL List Toolbar"
+#~ msgstr "URL lista"
+
+#, fuzzy
+#~ msgid "Scripting Toolbar"
+#~ msgstr "Opcije"
+
+#, fuzzy
+#~ msgid "Show alias editor"
+#~ msgstr "Tekstualni editor"
+
+#, fuzzy
+#~ msgid "Show event editor"
+#~ msgstr "Tekstualni editor"
+
+#, fuzzy
+#~ msgid "Show popup editor"
+#~ msgstr "Uklju�i/isklju�i editor modova"
+
+#, fuzzy
+#~ msgid "Show raw event editor"
+#~ msgstr "Tekstualni editor"
+
+#, fuzzy
+#~ msgid "Show toolbar editor"
+#~ msgstr "Uklju�i/isklju�i editor zabrana"
+
+#, fuzzy
+#~ msgid "<nobr><font color=\"%s\"><b>Help Browser</b></font></nobr>"
+#~ msgstr "<nobr><font color=\"%s\"><b>Prozor za pomo�</b></font></nobr>"
+
+#, fuzzy
+#~ msgid "[USEROP]: "
+#~ msgstr "[SSL GRE�KA]: %Q"
+
+#, fuzzy
+#~ msgid "[DNS]: "
+#~ msgstr "[SSL]: %Q"
+
+#, fuzzy
+#~ msgid " /dns <nickname>"
+#~ msgstr "Dodaj nadimak"
+
+#, fuzzy
+#~ msgid "&Add"
+#~ msgstr "Dodaj"
+
+#~ msgid "%c%Q%c's real name: %Q"
+#~ msgstr "%c%Q%c - pravo ime: %Q"
+
+#~ msgid "[Parser warning in '%s']: %w"
+#~ msgstr "[parser upozorenje u '%s'] : %w"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] has quit IRC: NETSPLIT %s"
+#~ msgstr "\r!n\r%s\r [%s@\r!h\r%s\r] je prekinuo IRC %s%s"
+
+#~ msgid ""
+#~ "\r!n\r%s\r, a target of this query, has just quit IRC and has been "
+#~ "removed from the target list. Use \r![!dbl]addtarget %s[!txt]Double click "
+#~ "here to re-add %s to the target list\r/addtarget %s\r to add him again"
+#~ msgstr ""
+#~ "\r!n\r%s\r, meta ovog upita, je upravo prekinula IRC i bi�e uklonjena sa "
+#~ "liste meta. Koristi \r![!dbl]addtarget %s[!txt] Kliknite duplo da ponovo "
+#~ "dodate %s u listu meta ili \r/addtarget %s\r da ga ponovo dodate"
+
+#~ msgid "%s [%s@%s] has set mode %co %s"
+#~ msgstr "%s [%s@%s] je postavio mod %co %s"
+
+#~ msgid "%s [%s@%s] has set mode %ch %s"
+#~ msgstr "%s [%s@%s] je postavio mod %ch %s"
+
+#~ msgid "%s [%s@%s] has set mode %cv %s"
+#~ msgstr "%s [%s@%s] je postavio mod %cv %s"
+
+#, fuzzy
+#~ msgid "%s [%s@%s] has set mode %cu %s"
+#~ msgstr "%s [%s@%s] je postavio mod %co %s"
+
+#, fuzzy
+#~ msgid "%s [%s@%s] has set mode %ca %s"
+#~ msgstr "%s [%s@%s] je postavio mod %co %s"
+
+#~ msgid "%s [%s@%s] has set mode %cb \r!m%cb\r%s\r"
+#~ msgstr "%s [%s@%s] je postavio mod %cb \r!m%cb\r%s\r"
+
+#~ msgid "%s [%s@%s] has set mode %cI \r!m%cI\r%s\r"
+#~ msgstr "%s [%s@%s] je postavio mod %cI \r!m%cI\r%s\r"
+
+#~ msgid "End of channel invite list for \r!c\r%W\r"
+#~ msgstr "Kraj liste poziva (invite) na kanal za \r!c\r%W\r"
+
+#~ msgid "Invite entry for \r!c\r%W\r: \r!m-I\r%S\r (set by %S on %S)"
+#~ msgstr ""
+#~ "Unos poziva (invite) za \r!c\r%W\r: \r!m-I\r%S\r (postavljen od %S u %S)"
+
+#~ msgid "End of channel ban exception list for \r!c\r%W\r"
+#~ msgstr "Kraj liste izuzetaka zabrane za \r!c\r%W\r"
+
+#~ msgid "Ban exception entry for \r!c\r%W\r: \r!m-e\r%S\r (set by %S on %S)"
+#~ msgstr ""
+#~ "Unos izuzetka zabrane za \r!c\r%W\r: \r!m-e\r%S\r (postavljen od %S u %S)"
+
+#, fuzzy
+#~ msgid "[No targets]"
+#~ msgstr "Nema ciljeva"
+
+#~ msgid "The current window is not a query: no targets added"
+#~ msgstr "Trenutni prozor nije upit: nema dodatih meta"
+
+#~ msgid "The current query has no target '%s'"
+#~ msgstr "Trenutni upit nema metu '%s'"
+
+#~ msgid "The current window is not a query: no targets removed"
+#~ msgstr "Trenutni prozor nije upit: nema uklonjenih meta"
+
+#, fuzzy
+#~ msgid "close this window?"
+#~ msgstr "Zatvori ovaj prozor"
+
+#~ msgid "New &Frame Window"
+#~ msgstr "Nov &okvir prozora"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] is on IRC"
+#~ msgstr "\r!n\r%s\r (%s@\r!h\r%s\r) je na IRC-u"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] is on IRC (watch)"
+#~ msgstr "\r!n\r%s\r (%s@\r!h\r%s\r) je na irc-u (traga�)"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] is on IRC (watch: list requested by user)"
+#~ msgstr ""
+#~ "\r!n\r%s\r (%s@\r!h\r%s\r) je na irc-u (traga�: korisnik zahteva listu)"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: \r!n\r%s\r [%s@\r!h\r%s\r] is on IRC (watch: possible list "
+#~ "desync)"
+#~ msgstr ""
+#~ "Lista obave�tenja: \r!n\r%s\r (%s@\r!h\r%s\r) je na IRC-u (traga�: lista "
+#~ "traganja nije sinhronizovana ?)"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] is on IRC (watch: added by user)"
+#~ msgstr "\r!n\r%s\r (%s@\r!h\r%s\r) je na irc-u (traga�)"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] has left IRC (watch: removed from list)"
+#~ msgstr ""
+#~ "\r!n\r%s\r (%s@\r!h\r%s\r) je napustio IRC (traga�: zaustavljam potragu)"
+
+#, fuzzy
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r] has left IRC (watch)"
+#~ msgstr "\r!n\r%s\r (%s@\r!h\r%s\r) je napustio IRC (traga�)"
+
+#, fuzzy
+#~ msgid ""
+#~ "Notify list: \r!n\r%s\r [%s@\r!h\r%s\r] has left IRC (watch: unmatched "
+#~ "notify list entry)"
+#~ msgstr ""
+#~ "Lista obave�tenja: \r!n\r%s\r (%s@\r!h\r%s\r) je napustio IRC (traga�: "
+#~ "neodgovaraju�i ulaz u listi obave�tenja)"
+
+#, fuzzy
+#~ msgid "15 minutes"
+#~ msgstr "odgovoreno"
+
+#, fuzzy
+#~ msgid "30 minutes"
+#~ msgstr "odgovoreno"
+
+#, fuzzy
+#~ msgid "Disable"
+#~ msgstr "i (nevidljivost)"
+
+#, fuzzy
+#~ msgid "%s%c%s%c (%s)"
+#~ msgstr "Strana %s%c%s (%c)"
+
+#, fuzzy
+#~ msgid "Connection attempt failed (%s): %s"
+#~ msgstr "Poku�aj konektovanja neuspe�an (%s) : %s"
+
+#~ msgid "Socket message truncated to 512 bytes."
+#~ msgstr "Poruka priklju�ka skra�ena na 512 bajtova."
+
+#~ msgid "listed"
+#~ msgstr "izlistano"
+
+#, fuzzy
+#~ msgid "File Transfers"
+#~ msgstr "Obri�i mrtve prenose"
+
+#, fuzzy
+#~ msgid "<nobr><font color=\"%s\"><b>File Transfers</b></font></nobr>"
+#~ msgstr "<nobr><font color=\"%s\"><b>Pregleda� Logova</b></font></nobr>"
+
+#~ msgid ""
+#~ "The specified bind address (%s) is not valid (the interface it refers to "
+#~ "might be down)"
+#~ msgstr ""
+#~ "Specifi�na bind adresa (%s) nije validna (interfejs izgleda da je otkazao)"
+
+#~ msgid "Not connected to server"
+#~ msgstr "Nije zaka�en na server"
+
+#, fuzzy
+#~ msgid "Be verbose (show some internal actions)"
+#~ msgstr "Budi preop�iran (prika�i neke interne akcije)"
+
+#~ msgid "Add new proxy"
+#~ msgstr "Dodaj nov proksi"
+
+#~ msgid "Ops..failed to add the offer..."
+#~ msgstr "Ups...Ne mogu da dodam ponudu...."
+
+#~ msgid "No offer with visible name '%s' and user mask '%s'"
+#~ msgstr "Nema ponude sa vidljivim imenom '%s' i maskom korisnika '%s'"
+
+#~ msgid "%c%d. %s"
+#~ msgstr "%c%d. %s"
+
+#~ msgid " File: %s (%u bytes)"
+#~ msgstr " Fajl: %s (%u bajtova)"
+
+#~ msgid " Mask: %s"
+#~ msgstr " Maska: %s"
+
+#~ msgid " Expires in %d hours %d minutes %d seconds"
+#~ msgstr " Isti�e u %d sati %d minuta %d sekundi"
+
+#~ msgid "No active file offers"
+#~ msgstr "Nema aktivnih fajl ponuda"
+
+#~ msgid "Total: %d offers"
+#~ msgstr "Ukupno: %d ponuda"
+
+#~ msgid "Never"
+#~ msgstr "Nikad"
+
+#~ msgid "Offer list window"
+#~ msgstr "Prozor liste ponuda"
+
+#~ msgid "Expires"
+#~ msgstr "Isti�e"
+
+#~ msgid "File name"
+#~ msgstr "Naziv fajla"
+
+#~ msgid ""
+#~ "<center>Files in this list can be requested by remote users with the "
+#~ "folliwing commandline:<br><b>CTCP &lt;yournick&gt; DCC GET &lt;name&gt;</"
+#~ "b><br>If DCC doesn't work , XDCC can be used instead.</center>"
+#~ msgstr ""
+#~ "<center>Fajlovi u ovoj listi mogu biti zahtevani od udaljenih korisnika "
+#~ "sa prate�om komandnom linijom:<br><b>CTCP &lt;vasnadimak&gt; DCC GET &lt;"
+#~ "naziv&gt;</b><br>Ako DCC ne radi , XDCC mo�e tako�e biti kori��en.</"
+#~ "center>"
+
+#~ msgid "The files "
+#~ msgstr "Fajlovi"
+
+#~ msgid "Remove all"
+#~ msgstr "Ukloni sve"
+
+#~ msgid "User mask"
+#~ msgstr "Korisni�ka maska"
+
+#~ msgid "Expires in"
+#~ msgstr "Isti�e u"
+
+#~ msgid "Choose the file to offer"
+#~ msgstr "Izaberi fajl za ponudu"
+
+#~ msgid "Active file offer list"
+#~ msgstr "Aktivna lista ponu�enih fajlova"
+
+#, fuzzy
+#~ msgid "Animate popup menus"
+#~ msgstr "GUI Efekat: Animiraj iska�u�e menije"
+
+#, fuzzy
+#~ msgid "Fade popup menus"
+#~ msgstr "GUI Efekat: Fade iska�u�ih menija"
+
+#, fuzzy
+#~ msgid "Fade tool-tips"
+#~ msgstr "GUI Efekat: Fade za savet-alata"
+
+#, fuzzy
+#~ msgid "Animate combo-boxes"
+#~ msgstr "GUI Efekat: Animiraj combo-box-ove"
+
+#, fuzzy
+#~ msgid "Frame caption"
+#~ msgstr "Smer"
+
+#~ msgid "Use pseudo transparency (use a global background image)"
+#~ msgstr "Koristi pseudo transparentnost (koristi globalnu sliku pozadine)"
+
+#~ msgid "Child fade factor"
+#~ msgstr "Mla�i fade faktor"
+
+#~ msgid "Fade color"
+#~ msgstr "Boja prelaska"
+
+#~ msgid "Obtain global background from KDE"
+#~ msgstr "Preuzmi globalnu pozadinu od KDE"
+
+#~ msgid "Global background image (you need it)"
+#~ msgstr "Globalna slika pozadine (potrebna je)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<center><b>This section contains settings for the tree and classic "
+#~ "taskbars</b></center>"
+#~ msgstr ""
+#~ "<center>Stranica ispod sadr�i stari stil i stablo taskbar opcija</center>"
+
+#, fuzzy
+#~ msgid "Activity:"
+#~ msgstr "Aktivan"
+
+#, fuzzy
+#~ msgid "System:"
+#~ msgstr "sistemska gre�ka"
+
+#~ msgid "Tool tip show timeout (in msecs)"
+#~ msgstr "Saveti alata vreme prikaza (u milisek)"
+
+#~ msgid "Tool tip hide timeout (in msecs)"
+#~ msgstr "Saveti alata vreme skrivanja (u milisek)"
+
+#, fuzzy
+#~ msgid "Taskbar Settings"
+#~ msgstr "Taskbar"
+
+#~ msgid "Nickname 2"
+#~ msgstr "Nadimak 2"
+
+#, fuzzy
+#~ msgid "&Change"
+#~ msgstr "Kanal"
+
+#, fuzzy
+#~ msgid "<br><br>Set by <b>"
+#~ msgstr "<br><br>Postavljeno od <b>"
+
+#~ msgid " on <b>"
+#~ msgstr " na <b>"
+
+#, fuzzy
+#~ msgid "<b>Channel topic:</b><br>"
+#~ msgstr "<b>Naslov kanala</b><br>"
+
+#, fuzzy
+#~ msgid "No topic is set<br>Double-click to set<br>"
+#~ msgstr "Nema postavljenog naslova<br>Dupli klik za postavljanje<br>"
+
+#, fuzzy
+#~ msgid "Use taskbar activity meter"
+#~ msgstr "Koristi indikator taskbar-a za IRC-kontekst"
+
+#~ msgid "Logging enabled"
+#~ msgstr "Logovanje omogu�eno"
+
+#~ msgid "Load"
+#~ msgstr "U�itaj"
+
+#~ msgid "Save"
+#~ msgstr "Sa�uvaj"
+
+#~ msgid "Windows remember properties"
+#~ msgstr "Prilago�avanje pam�enja prozora"
+
+#~ msgid "Show the registered users dialog as toplevel window"
+#~ msgstr "Poka�i dijalog registrovanih korisnika kao toplevel prozor"
+
+#~ msgid "Show the join channels dialog as a toplevel window"
+#~ msgstr "Poka�i dijalog ulaska na kanale kao toplevel prozor"
+
+#~ msgid "Show the servers connect dialog as a toplevel window"
+#~ msgstr "Poka�i dijalog konektovanja na server kao toplevel prozor"
+
+#~ msgid "Show the identity dialog as a toplevel window"
+#~ msgstr "Pokazi dijalog identifikovanja kao toplevel prozor"
+
+#~ msgid "Use task bar IRC-context indicator"
+#~ msgstr "Koristi indikator taskbar-a za IRC-kontekst"
+
+#~ msgid "Use tree-window-list task bar"
+#~ msgstr "Koristi stablo-liste-prozora za taskbar"
+
+#, fuzzy
+#~ msgid "Connections in progress"
+#~ msgstr "konektovanje u toku..."
+
+#~ msgid "%c\r!n\r%s\r%c whowas info from \r!s\r%s\r"
+#~ msgstr "%c\r!n\r%s\r%c whowas informacije od \r!s\r%s\r"
+
+#, fuzzy
+#~ msgid "Userhost info: %s"
+#~ msgstr "Korisnik nije na�en (%s)"
+
+#~ msgid "End of channel list"
+#~ msgstr "Kraj liste kanala"
+
+#, fuzzy
+#~ msgid "Interface features"
+#~ msgstr "Adresa interfejsa (ili ime)"
+
+#, fuzzy
+#~ msgid "Failed to write the file"
+#~ msgstr "Neuspe�no pisanje u fajl %s"
+
+#, fuzzy
+#~ msgid "Select the file name for the exported aliases file"
+#~ msgstr "Izaberi ime za hit listu"
+
+#~ msgid "You're connected to %s (%s)"
+#~ msgstr "Vi ste zaka�eni na %s (%s)"
+
+#~ msgid "You're not connected to a server: list cannot be requested"
+#~ msgstr "Niste zaka�eni na server: lista ne mo�e biti zahtevana"
+
+#~ msgid "You're not connected to a server: links cannot be requested"
+#~ msgstr "Niste zaka�eni na server: linkovi ne mogu biti zahtevani"
+
+#, fuzzy
+#~ msgid "Select the file name for the exported popup file"
+#~ msgstr "Izaberite ime za filter fajla"
+
+#, fuzzy
+#~ msgid "Select the file name for the exported popups file"
+#~ msgstr "Izaberite ime za filter fajla"
+
+#~ msgid "Delete property"
+#~ msgstr "Obri�i osobinu"
+
+#~ msgid "Import"
+#~ msgstr "Uvezi"
+
+#~ msgid "Choose the name of the db file"
+#~ msgstr "Unesite ime fajla databaze"
+
+#~ msgid "Can't open the file %s for reading"
+#~ msgstr "Ne mogu da otvorim fajl %s za �itanje"
+
+#, fuzzy
+#~ msgid "Generate \"defpopup\" Script Snippet"
+#~ msgstr "Generi�i ise�ak defpopup skripte"
+
+#, fuzzy
+#~ msgid "KVIrc Scripts (*.kvs);;All Files (*)"
+#~ msgstr "KVIrc skripte (*.kvs);;Svi fajlovi (*)"
+
+#~ msgid "Create query for server notices"
+#~ msgstr "Kreiraj upit za poruke servera"
+
+#, fuzzy
+#~ msgid "Legalese: The License"
+#~ msgstr "Pravilo: Licenca"
+
+#, fuzzy
+#~ msgid "B&rowse..."
+#~ msgstr "Pregledaj..."
+
+#, fuzzy
+#~ msgid "Commit Your Settings"
+#~ msgstr "Izvr�avanje Va�ih izbora"
+
+#~ msgid "Choose a save file name"
+#~ msgstr "Izaberi ime fajla za �uvanje"
+
+#~ msgid "Cut"
+#~ msgstr "Iseci"
+
+#~ msgid "Copy"
+#~ msgstr "Kopiraj"
+
+#~ msgid "New label"
+#~ msgstr "Nova oznaka"
+
+#~ msgid "New menu"
+#~ msgstr "Nov meni"
+
+#~ msgid "New external menu"
+#~ msgstr "Nov spolja�nji meni"
+
+#~ msgid "New prologue at this level"
+#~ msgstr "Nov prolog u ovom nivou"
+
+#~ msgid "New epilogue at this level"
+#~ msgstr "Nov zaklju�ak u ovom nivou"
+
+#~ msgid "Add new popup"
+#~ msgstr "Dodaj nov iska�u�i meni"
+
+#, fuzzy
+#~ msgid "Add button"
+#~ msgstr "Dodaj zabranu (ban)"
+
+#, fuzzy
+#~ msgid "Add separator"
+#~ msgstr "Nov razdvaja�"
+
+#, fuzzy
+#~ msgid "Choose file for saving the definition"
+#~ msgstr "Izaberi ime fajla za skriptu"
+
+#, fuzzy
+#~ msgid "Channel admin foreground color"
+#~ msgstr "Biranje boje ispisa"
+
+#~ msgid "Op foreground color"
+#~ msgstr "OP boja ispisa"
+
+#~ msgid "Half-op foreground color"
+#~ msgstr "Half-OP boja ispisa"
+
+#~ msgid "Voice foreground color"
+#~ msgstr "VOICE boja ispisa"
+
+#, fuzzy
+#~ msgid "User-op foreground color"
+#~ msgstr "OP boja ispisa"
+
+#~ msgid "Normal foreground color"
+#~ msgstr "Normalna boja ispisa"
+
+#~ msgid ""
+#~ "I'm behind a firewall (or similar): can't accept incoming DCC connections"
+#~ msgstr ""
+#~ "Ja sam iza firewall-a (ili sli�no): ne mogu da prihvatim dolaze�e DCC "
+#~ "konekcije"
+
+#~ msgid "Force the following interface for listening (unless -i is used)"
+#~ msgstr "Forsiraj prate�i interfejs za slu�anje (izuzev ako je -i kori��eno)"
+
+#~ msgid "Interface address (or name)"
+#~ msgstr "Adresa interfejsa (ili ime)"
+
+#~ msgid "Max"
+#~ msgstr "Maks"
+
+#~ msgid "Always send the following fake IP (unless -a is used)"
+#~ msgstr "Uvek �alji slede�u la�nu IP (izuzev ako je -a kori��eno)"
+
+#~ msgid "Create minimized when auto-accepted (when incoming)"
+#~ msgstr "Napravi minimizirano kad je automatsko prihvatanje (kod dolaze�ih)"
+
+#~ msgid "Auto close on success"
+#~ msgstr "Automatski zatvori ako je uspe�no"
+
+#~ msgid "Idle step (msecs)"
+#~ msgstr "Korak mirovanja (msek)"
+
+#~ msgid "Send zero-byte-acknowledge (when receiving files)"
+#~ msgstr "Po�alji nula-bajtnu-potvrdu prijema (kad prima� fajlove)"
+
+#~ msgid "Use Media-Type guessed save path"
+#~ msgstr "Koristi smatran Tip-Medija putanje za �uvanje"
+
+#~ msgid "Echo the channel topic on channel join"
+#~ msgstr "Eho naslova kanala po ulasku na kanal"
+
+#~ msgid "Use anti-spam on PRIVMSG"
+#~ msgstr "Koristi ANTI-SPAM na PRIVMSG"
+
+#~ msgid "Use anti-spam on NOTICE"
+#~ msgstr "Koristi ANTI-SPAM na NOTICE"
+
+#~ msgid "Spam words"
+#~ msgstr "Spam re�i"
+
+#~ msgid "Auto-enable logging in channel windows"
+#~ msgstr "Auto-uklju�enje logovanja u kanal prozoru"
+
+#~ msgid "Auto-enable logging in dcc-chat windows"
+#~ msgstr "Auto-uklju�enje logovanja u dcc-chat prozoru"
+
+#~ msgid "Auto-enable logging in console windows"
+#~ msgstr "Auto-uklju�enje logovanja u konzolnom prozoru"
+
+#~ msgid "Allow max (0-10000)"
+#~ msgstr "Dozvoli maksimum (0-1000)"
+
+#~ msgid "CTCP's in (1-3600) secs"
+#~ msgstr "CTCP-a u (1-3600) sekundi"
+
+#~ msgid "Ignore PING requests"
+#~ msgstr "Ignori�i PING zahteve"
+
+#~ msgid "Ignore VERSION requests"
+#~ msgstr "Ignori�i VERSION zahteve"
+
+#~ msgid "Ignore CLIENTINFO requests"
+#~ msgstr "Ignori�i CLIENTINFO zahteve"
+
+#~ msgid "Ignore USERINFO requests"
+#~ msgstr "Ignori�i USERINFO zahteve"
+
+#~ msgid "Ignore SOURCE requests"
+#~ msgstr "Ignori�i SOURCE zahteve"
+
+#~ msgid "Ignore TIME requests"
+#~ msgstr "Ignori�i TIME zahteve"
+
+#, fuzzy
+#~ msgid "Ignore PAGE requests"
+#~ msgstr "Ignori�i PING zahteve"
+
+#, fuzzy
+#~ msgid "Ignore AVATAR requests"
+#~ msgstr "Ignori�i TIME zahteve"
+
+#~ msgid "Ignore DCC/TDCC requests"
+#~ msgstr "Ignori�i DCC/TDCC zahteve"
+
+#~ msgid "Show channel flags"
+#~ msgstr "Poka�i zastavice kanala"
+
+#~ msgid "Create query on PRIVMSG"
+#~ msgstr "Kreiraj upit na PRIVMSG"
+
+#~ msgid "Create query on NOTICE"
+#~ msgstr "Kreiraj upit na NOTICE"
+
+#~ msgid ""
+#~ "To add someone to the notify list, use the /notify command.\n"
+#~ "Tecnically speaking: you must register\n"
+#~ "his mask in the registered users database and then set his \"notify\"\n"
+#~ "property to the nicknames that you want to be notified."
+#~ msgstr ""
+#~ "Za dodavanje nekoga u listu obave�tenja, koristi /notify komandu.\n"
+#~ "Tehni�ki govore�i: mo�ete registrovati\n"
+#~ "njegovu masku u databazi registrovanih korisnika i onda da postavite "
+#~ "njegovo \"notify\"\n"
+#~ "svojstvo nadimku koji zelite da bude notiran."
+
+#~ msgid ""
+#~ "<center><b>CTCP</b> stands for <b>C</b>lient <b>t</b>o <b>C</b>lient "
+#~ "<b>p</b>rotocol.<br><br>It is used to transmit special control messages "
+#~ "over an IRC connection.<br>The options in this section will modify the "
+#~ "KVIrc behaviour regarding the CTCP requests and replies.<br><br>Tip: do "
+#~ "NOT totally disable CTCP's: they are useful and fun. KVIrc has a builtin "
+#~ "CTCP-flood protection system: use that instead.</center>"
+#~ msgstr ""
+#~ "<center><b>CTCP</b> postoji za <b>K</b>lijent <b>k</b>a <b>K</b>lijentu "
+#~ "<b>p</b>rotokol.<br><br>Koristi se za prenos specijalnih kontrolnih "
+#~ "poruka preko IRC konekcije.<br>Opcije u ovoj sekciji �e izmeniti "
+#~ "pona�anje KVIrc-a po pitanju CTCP zahteva i odgovora.<br><br>Savet: "
+#~ "NEMOJTE totalno isklju�iti CTCP-ove: oni su korisni i zabavni. KVIrc ima "
+#~ "ugra�en sistem CTCP flood za�tite: koristite je.</center>"
+
+#~ msgid "File mask"
+#~ msgstr "Maska fajla"
+
+#~ msgid "New"
+#~ msgstr "Novi"
+
+#~ msgid ""
+#~ "<center>This option will cause KVIrc to send a DCC GET<br>when someone "
+#~ "sets an avatar and there is no local copy available.<br>There is a "
+#~ "maximum file size for the avatars that will get requested<br>(it can be "
+#~ "set below) , make sure that the value is not too big.</center>"
+#~ msgstr ""
+#~ "<center>Ova opcija omogu�ava KVIrc-u da �alje DCC GET<br>kad neko postavi "
+#~ "svoj avatar i kad nema lokalne kopije.<br>Ovde je i maksimalna veli�ina "
+#~ "fajla za avatar koji je zahtevan<br>(mo�e biti pode�eno ispod) , budite "
+#~ "sigurni vrednost nije previ�e velika.</center>"
+
+#~ msgid "Maximum requested avatar size (in bytes)"
+#~ msgstr "Maksimalna veli�ina zahtevanog avatara (u bajtovima)"
+
+#~ msgid ""
+#~ "<center>When someone sends you a CTCP AVATAR request,<br>KVIrc will reply "
+#~ "with a CTCP AVATAR containing the name<br>of your avatar file and its "
+#~ "size.<br>A time-limited file offer will be added for the avatar "
+#~ "file<br>and the requesting user (so he will be able to download "
+#~ "your<br>avatar by issuing a DCC GET message).<br>This is the offer "
+#~ "timeout: the time after that the offer will expire.</center>"
+#~ msgstr ""
+#~ "<center>Kada Vam neko po�alje CTCP AVATAR zahtev,<br>KVIrc �e odgovoriti "
+#~ "sa CTCP AVATAR koji sadr�i ime<br>Va�eg avatara i njegovu veli�inu."
+#~ "<br>Vremenski ograni�ena ponuda �e biti dodata za avatar fajl<br> i "
+#~ "zahteve korisnika (da bi mogli da preuzmu Va� <br>avatar koriste�i DCC "
+#~ "GET poruku).<br>Ovo je vreme ponude: posle ovoga ponuda �e iste�i-</"
+#~ "center>"
+
+#~ msgid "Bounding rectangle width"
+#~ msgstr "Krajnja �irina pravougaonika"
+
+#~ msgid "Bounding rectangle height"
+#~ msgstr "Krajnja visina pravougaonika"
+
+#, fuzzy
+#~ msgid "Send/Recv"
+#~ msgstr "Po�alji"
+
+#, fuzzy
+#~ msgid "Secure sockets layer"
+#~ msgstr "Gre�a Sigurnog Nivo-a Priklju�ka (SSL-a)"
+
+#, fuzzy
+#~ msgid "Ctcp flood protection"
+#~ msgstr "Koristi flood za�titu"
+
+#~ msgid "Disable this handler"
+#~ msgstr "Onemogu�i ovaj manipulator"
+
+#, fuzzy
+#~ msgid "Join Channel - KVIrc"
+#~ msgstr "Dodaj nov server"
+
+#~ msgid "Handler name"
+#~ msgstr "Ime manipulatora"
+
+#~ msgid "Add raw event"
+#~ msgstr "Dodaj sirov doga�aj"
+
+#~ msgid "New raw event handler"
+#~ msgstr "Nov upravlja� raw doga�aja"
+
+#~ msgid "Please enter the RAW message number (0-999)"
+#~ msgstr "Molim unesite broj RAW poruke (0-999)"
+
+#~ msgid "Active foreground"
+#~ msgstr "Aktivni ispis"
+
+#~ msgid "Highlight level 1"
+#~ msgstr "Nivo nagla�enosti 1"
+
+#~ msgid "Highlight level 2"
+#~ msgstr "Nivo nagla�enosti 2"
+
+#~ msgid "Highlight level 3"
+#~ msgstr "Nivo nagla�enosti 3"
+
+#~ msgid "Highlight level 4"
+#~ msgstr "Nivo nagla�enosti 4"
+
+#~ msgid "Highlight level 5"
+#~ msgstr "Nivo nagla�enosti 5"
+
+#~ msgid "Minimized text"
+#~ msgstr "Minimizirani tekst"
+
+#~ msgid "Force brutal QUIT"
+#~ msgstr "Forsiraj brutalni IZLAZAK (QUIT)"
+
+#~ msgid "Attempt to rejoin channel when kicked"
+#~ msgstr "Poku�aj da u�e� na kanal kad si izba�en"
+
+#~ msgid "Keep channel open on KICK"
+#~ msgstr "Zadr�i kanal otvoren kad te izbace (KICK)"
+
+#~ msgid "1 message every (10000-10000000 usec.)"
+#~ msgstr "1 poruka na svakuh (10000-10000000 usec.)"
+
+#, fuzzy
+#~ msgid "Default /PART message"
+#~ msgstr "Predefinisana poruka odsutnosti"
+
+#, fuzzy
+#~ msgid "Default /QUIT message"
+#~ msgstr "Predefinisana poruka odsutnosti"
+
+#, fuzzy
+#~ msgid "This button adds a new network."
+#~ msgstr "Dodaj novu mre�u"
+
+#, fuzzy
+#~ msgid "This button adds a new server to the current network."
+#~ msgstr "Dodaj novu mre�u"
+
+#, fuzzy
+#~ msgid "Removes the current network or server."
+#~ msgstr "Trenutni upit nema metu '%s'"
+
+#~ msgid "Enable ignore on PRIVMSG"
+#~ msgstr "Omogu�i ignorisanje za PRIVMSG"
+
+#~ msgid "Custom away nick"
+#~ msgstr "Obi�an nadimak odsutnosti"
+
+#~ msgid "Commit"
+#~ msgstr "Izvr�i"
+
+#, fuzzy
+#~ msgid "Double-click to open this link<br>Right-click to view other options"
+#~ msgstr ""
+#~ "Dupli klik za otvaranje ovog linka<br>Desni klik za pregled ostalih opcija"
+
+#~ msgid "[Unknown]"
+#~ msgstr "[Nepoznat]"
+
+#~ msgid ""
+#~ "<center>The options in the pages below will modify the look & feel of the "
+#~ "KVIrc components</center>"
+#~ msgstr ""
+#~ "<center>Ova opcija na donjoj strani �e promeniti izgled & ose�aj za KVIrc "
+#~ "komponente</center>"
+
+#, fuzzy
+#~ msgid "Server connect:"
+#~ msgstr "Sigurna konekcija"
+
+#, fuzzy
+#~ msgid "Limit outgoing"
+#~ msgstr "Ograni�i odlaze�i saobra�aj na"
+
+#, fuzzy
+#~ msgid "&Recent Channels"
+#~ msgstr "&Skora�nji kanali"
+
+#, fuzzy
+#~ msgid "&Add Channel"
+#~ msgstr "Dodaj novi alijas"
+
+#, fuzzy
+#~ msgid "Add Channel - KVIrc"
+#~ msgstr "Dodaj nov server"
+
+#, fuzzy
+#~ msgid "IRC Servers"
+#~ msgstr "Server"
+
+#, fuzzy
+#~ msgid "Ident"
+#~ msgstr "Indeks"
+
+#~ msgid ""
+#~ "This server seems to support the WATCH notify list method: will try to "
+#~ "use it."
+#~ msgstr ""
+#~ "Server izgleda podr�ava WATCH listu obave�tenja: probacemo da je "
+#~ "koristimo."
+
+#, fuzzy
+#~ msgid "Text Editor"
+#~ msgstr "Tekstualni editor"
+
+#~ msgid "Row:0 Col:0"
+#~ msgstr "Red:0 Kolona:0"
+
+#~ msgid "Save &As.."
+#~ msgstr "S&a�uvaj kao..."
+
+#~ msgid "&Close"
+#~ msgstr "&Zatvori"
+
+#~ msgid "&Switch mode"
+#~ msgstr "&Promena moda"
+
+#~ msgid "&File"
+#~ msgstr "&Fajl"
+
+#~ msgid "Unnamed"
+#~ msgstr "Bezimeni"
+
+#~ msgid "Row:%d Col:%d"
+#~ msgstr "Red:%d Kolona %d"
+
+#, fuzzy
+#~ msgid "Plain text"
+#~ msgstr "Na�i slede�e"
+
+#~ msgid ", modified"
+#~ msgstr ", izmenjen"
+
+#~ msgid "Save to file"
+#~ msgstr "Sa�uvaj u fajl"
+
+#~ msgid ""
+#~ "Save failed!\n"
+#~ "Cant open the file %s for writing"
+#~ msgstr ""
+#~ "Snimanje nije uspelo!\n"
+#~ "Ne mogu da otvorim fajl %s za pisanje"
+
+#~ msgid "Choose a script file to load"
+#~ msgstr "Izaberi fajl skripte za u�itavanje"
+
+#~ msgid "Failed to open the file %s"
+#~ msgstr "Ne mogu da otvorim fajl %s"
+
+#~ msgid "Toggle double view"
+#~ msgstr "Uklju�i/isklju�i dupli prikaz"
+
+#~ msgid "Toggle user list"
+#~ msgstr "Uklju�i/isklju�i korisni�ku listu"
+
+#~ msgid "Toggle ban editor"
+#~ msgstr "Uklju�i/isklju�i editor zabrana"
+
+#~ msgid "What is this ?"
+#~ msgstr "�ta je ovo ?"
+
+#~ msgid "This looks like a masked hostname: can't look it up"
+#~ msgstr "Ovo li�i na maskirano ime hosta: ne mogu da ga re�im"
+
+#~ msgid "This looks like an unknown hostname: can't look it up"
+#~ msgstr "Ovo li�i na nepoznato ime hosta: ne mogu da ga re�im"
+
+#~ msgid "This looks like a hub server<br>"
+#~ msgstr "Ovo izgleda kao HUB server<br>"
+
+#~ msgid "This looks like an unknown server<br>"
+#~ msgstr "Ovo izgleda kao nepoznat server<br>"
+
+#~ msgid "Show &KVIrc"
+#~ msgstr "&Pove�aj KVIrc przor"
+
+#, fuzzy
+#~ msgid "Hide &KVIrc"
+#~ msgstr "&Zavr�i Kvirc"
+
+#, fuzzy
+#~ msgid "Big"
+#~ msgstr "Podizanje"
+
+#, fuzzy
+#~ msgid "Position"
+#~ msgstr "Uslov:"
+
+#~ msgid "w (Wallops)"
+#~ msgstr "w (Wallops)"
+
+#~ msgid "s (Server notices)"
+#~ msgstr "s (Obave�tenja servera)"
+
+#~ msgid "i (Invisible)"
+#~ msgstr "i (nevidljivost)"
+
+#~ msgid "\r!n\r%s\r (%s@\r!h\r%s\r) is on irc (user-added watch)"
+#~ msgstr "\r!n\r%s\r (%s@\r!h\r%s\r) je na IRC-u (kosrisnik dodat traga�u)"
+
+#, fuzzy
+#~ msgid "Manage S&hared Files"
+#~ msgstr "Nema deljenih fajlova"
+
+#~ msgid "Username"
+#~ msgstr "Korisni�ko ime"
+
+#~ msgid "Real name"
+#~ msgstr "Stvarno ime"
+
+#~ msgid "concurrent transfers limit reached (%u of %u transfers running)"
+#~ msgstr "Dostignut limit istovremenih prenosa (%u od %u prenosa pokrenuto)"
+
+#~ msgid "slots limit reached (%u slots of %u)"
+#~ msgstr "dostignut limit slotova (%u slotova od %u)"
+
+#~ msgid "too many pending connections"
+#~ msgstr "previ�e nere�enih konekcija"
+
+#~ msgid "invalid port number %s"
+#~ msgstr "pogre�an broj porta %s"
+
+#~ msgid "invalid ip address in old format %s"
+#~ msgstr "pogre�na IP adresa u starom formatu %s"
+
+#~ msgid "invalid ip address %s"
+#~ msgstr "pogre�na IP adresa %s"
+
+#~ msgid ""
+#~ "This executable has been compiled without SSL support: the SSL extension "
+#~ "to DCC CHAT is not available"
+#~ msgstr ""
+#~ "KVIrc je kompajliran bez SSL podr�ke: SSL ekstenzija u DCC �ASKANJU (CHAT-"
+#~ "u) nije mogu�a"
+
+#~ msgid ""
+#~ "This executable has been compiled without SSL support: the SSL extension "
+#~ "to DCC SEND is not available"
+#~ msgstr ""
+#~ "KVIrc je kompajliran bez SSL podr�ke: SSL ekstenzija u DCC SLANJU (SEND) "
+#~ "nije mogu�a"
+
+#~ msgid ""
+#~ "can't proceed with dcc recv: transfer not initiated for file %s on port %s"
+#~ msgstr ""
+#~ "ne mogu da odradim DCC primanje: prenos nije otpo�eo za fajl %s na portu %"
+#~ "s"
+
+#~ msgid "invalid resume position argument '%s'"
+#~ msgstr "neispravan argument pozicije za nastavak %s"
+
+#~ msgid ""
+#~ "can't proceed with dcc send: transfer not initiated for file %s on port %"
+#~ "s, or invalid resume size"
+#~ msgstr ""
+#~ "ne mogu da odradim DCC slanje: nije otpo�eo prenos za fajl %s ma portu %"
+#~ "s, ili je pogre�na veli�ina za nastavak"
+
+#~ msgid ""
+#~ "This executable has been compiled without SSL support: the SSL extension "
+#~ "to DCC RECV is not available"
+#~ msgstr ""
+#~ "KVIrc je kompajliran bez SSL podr�ke: SSL ekstenzija u DCC PRIMANJU "
+#~ "(RECV) nije mogu�a"
+
+#~ msgid "invalid recv request: position %u is 'out of the file'"
+#~ msgstr "pogre�an zahtev za primanje: pozicija %u je 'prema�ila fajl'"
+
+#~ msgid ""
+#~ "This executable has been compiled without SSL support: the SSL extension "
+#~ "to DCC RSEND is not available"
+#~ msgstr ""
+#~ "KVIrc je kompajliran bez SSL podr�ke: SSL ekstenzija u DCC RSEND nije "
+#~ "mogu�a"
+
+#~ msgid ""
+#~ "This executable has been compiled without SSL support: the SSL extension "
+#~ "to DCC GET is not available"
+#~ msgstr ""
+#~ "KVIrc je kompajliran bez SSL podr�ke: SSL ekstenzija u DCC GET nije mogu�"
+
+#~ msgid "no file offer named '%s' (with size %s) available for %s [%s@%s]"
+#~ msgstr ""
+#~ "nema ponu�enog imena fajla '%s' (sa veli�inom %s) dostupnog za %s [%s@%s]"
+
+#, fuzzy
+#~ msgid "total users"
+#~ msgstr "voiced korisnici"
+
+#~ msgid ""
+#~ "The server seems to support the WATCH notify list method: going to use it"
+#~ msgstr ""
+#~ "Izgleda da server podr�ava WATCH metodu liste obave�tenja: upotrebi�u to"
+
+#, fuzzy
+#~ msgid "Connection started at"
+#~ msgstr "Konektovanje prekinuto"
+
+#, fuzzy
+#~ msgid "Silence from server"
+#~ msgstr "irc server"
+
+#~ msgid "You might try to disable caching and reconnect again"
+#~ msgstr "Mo�ete isklju�iti ke�iranje i probati konektovanje ponovo"
+
+#, fuzzy
+#~ msgid "What's This?"
+#~ msgstr "�ta je ovo ?"
+
+#~ msgid ""
+#~ "(IpV6 support is disabled: the identd will listen only on IpV4 interfaces)"
+#~ msgstr ""
+#~ "(IPV6 podr�ka je isklju�ena: identd ce slu�ati samo na IPV4 interfejsima)"
+
+#, fuzzy
+#~ msgid "Default user mode:"
+#~ msgstr "Mogu�i modovi korisnika:"
+
+#, fuzzy
+#~ msgid "Wallops"
+#~ msgstr "w (Wallops)"
+
+#, fuzzy
+#~ msgid "Server Notices"
+#~ msgstr "obave�tenje servera"
+
+#~ msgid "Avatar image"
+#~ msgstr "Avatar slika"
+
+#~ msgid "Change now"
+#~ msgstr "Promeni sad"
+
+#~ msgid "Ip address:"
+#~ msgstr "IP Adresa:"
+
+#~ msgid "Use IpV6 protocol"
+#~ msgstr "Koristi IpV6 protokol"
+
+#~ msgid "Connect timeout (5-6000 sec.)"
+#~ msgstr "Vreme isteka konekcije (5-6000 sek.)"
+
+#, fuzzy
+#~ msgid "Recent channels"
+#~ msgstr "&Skora�nji kanali"
+
+#~ msgid "Recursion too deep"
+#~ msgstr "Rekurzija je preduboka"
+
+#~ msgid "Icon table"
+#~ msgstr "Tabela ikona"
+
+#~ msgid "normal text"
+#~ msgstr "normalni tekst"
+
+#~ msgid "dcc request"
+#~ msgstr "DCC zahtev"
+
+#~ msgid "query notice crypted"
+#~ msgstr "�ifrovan upit obave�tenja"
+
+#~ msgid "ssl message"
+#~ msgstr "ssl poruka"
+
+#~ msgid "Someone is joining an inexisting channel...desync ?"
+#~ msgstr "Neko je u�ao na nepostoje�i kanal...desinhronizacija ?"
+
+#~ msgid "Kick message to an inexisting channel...desync ?"
+#~ msgstr "Kick poruka na nepostoje�em kanalu...desinhronizacija ?"
+
+#~ msgid "Received a TOPIC message for an unknown channel...desync ?"
+#~ msgstr "Primljena TOPIC poruka za nepoznat kanal...desinhronizacija ?"
+
+#~ msgid "Mode change for an unknown channel ?"
+#~ msgstr "Promena moda za nepoznati kanal ?"
+
+#~ msgid "Sent PART request , waiting for reply..."
+#~ msgstr "Poslat PART zahtev , �ekam odgovor..."
+
+#~ msgid "KVIrc local directory"
+#~ msgstr "KVirc lokalni direktorijum"
+
+#, fuzzy
+#~ msgid "Irc context"
+#~ msgstr "Nema irc konteksta"
+
+#~ msgid "No irc context"
+#~ msgstr "Nema irc konteksta"
+
+#~ msgid "&Links"
+#~ msgstr "&Linkovi"
+
+#, fuzzy
+#~ msgid "&Connect to server"
+#~ msgstr "Nije zaka�en na server"
+
+#~ msgid "All"
+#~ msgstr "Sve"
+
+#~ msgid " - Mask - List - "
+#~ msgstr " - Maska - Lista - "
+
+#, fuzzy
+#~ msgid "&Minimize all"
+#~ msgstr "M&inimizuj"
+
+#, fuzzy
+#~ msgid "&Restore all"
+#~ msgstr "&Obnovi"
+
+#~ msgid "&Tile"
+#~ msgstr "&Par�e"
+
+#, fuzzy
+#~ msgid "Choose a file..."
+#~ msgstr "Izaberite jednu sliku..."
+
+#, fuzzy
+#~ msgid "Save properties as default for this window type"
+#~ msgstr "&Sa�uvaj pode�avanja kao predefinisana za ovu vrstu prozora"
+
+#, fuzzy
+#~ msgid "Quit KVirc ?"
+#~ msgstr "&Zavr�i Kvirc"
+
+#~ msgid "Html mode"
+#~ msgstr "Html mod"
+
+#~ msgid "KVIrc : general options"
+#~ msgstr "KVIrc : generalne opcije"
+
+#, fuzzy
+#~ msgid "After login join channels"
+#~ msgstr "Auto-uklju�enje logovanja u kanal prozoru"
+
+#, fuzzy
+#~ msgid "After connect execute"
+#~ msgstr "Po konektovanju izvr�i:"
+
+#~ msgid "Uses IpV6 protocol"
+#~ msgstr "Kori��enje IpV6 protokola"
+
+#~ msgid "Add new network"
+#~ msgstr "Dodaj novu mre�u"
+
+#~ msgid "Add new server"
+#~ msgstr "Dodaj nov server"
+
+#, fuzzy
+#~ msgid "Ops.. can't create the theme directory"
+#~ msgstr "Ne mogu da kreiram deo terminal emulatora"
+
+#~ msgid "Limit alias recursion (Bad practice TM)"
+#~ msgstr "Ograni�i alijas rekurziju (Lo�a praksa TM)"
+
+#, fuzzy
+#~ msgid "Browse ..."
+#~ msgstr "Pregledaj..."
+
+#, fuzzy
+#~ msgid "Choose the data folder"
+#~ msgstr "Izaberi fajl za ponudu"
+
+#, fuzzy
+#~ msgid "Abort setup"
+#~ msgstr "Kvirc pode�avanja"
+
+#, fuzzy
+#~ msgid "Server options"
+#~ msgstr "Generalne opcije"
+
+#, fuzzy
+#~ msgid "Restore all windows"
+#~ msgstr "M&inimizuj"
+
+#~ msgid "Close &Window"
+#~ msgstr "Zatvori pr&ozor"
+
+#~ msgid "Accept changes"
+#~ msgstr "Prihvati izmene"
+
+#~ msgid "URL List Window"
+#~ msgstr "Prozor URL liste"
+
+#, fuzzy
+#~ msgid "Log viewer"
+#~ msgstr "&Prikaziva� zapisa"
+
+#, fuzzy
+#~ msgid "Shared files window"
+#~ msgstr "Zajedni�ki (shared) fajlovi"
+
+#, fuzzy
+#~ msgid "&Old Tools"
+#~ msgstr "&Alati"
+
+#, fuzzy
+#~ msgid ""
+#~ "Check this option if you want to get the IP for dcc requests by using "
+#~ "the /dns <mynick> irc command."
+#~ msgstr ""
+#~ "Uklju�ite ovu opciju ako �elite da se uvek �alje la�na IP adresa u Va�im "
+#~ "DCC zahtevima.<br>Ovo mo�e biti korisno ako ste iza rutera koji ima "
+#~ "prevo�enje mre�nih adresa.<br>Tako�e ce vam biti potreban gornji opseg "
+#~ "portova..."
+
+#, fuzzy
+#~ msgid "Current Interface address (got by /dns)"
+#~ msgstr "Adresa interfejsa (ili ime)"
+
+#, fuzzy
+#~ msgid ""
+#~ "This is the IP that will be sent with all the dcc requests if you check "
+#~ "the option above"
+#~ msgstr ""
+#~ "Ovo je la�na adresa koja �e biti poslata sa svim DCC zahtevima ako "
+#~ "uklju�ite gornju opciju"
+
+#, fuzzy
+#~ msgid "&Log viewer (toplevel)"
+#~ msgstr "Prikaziva� zapisa (&MDI)"
+
+#~ msgid "Log viewer (&MDI)"
+#~ msgstr "Prikaziva� zapisa (&MDI)"
+
+#~ msgid "&Offer list"
+#~ msgstr "&Lista ponuda"
+
+#~ msgid "Log Viewer"
+#~ msgstr "Pregleda� Logova"
+
+#~ msgid "<nobr><font color=\"%s\"><b>Log Viewer</b></font></nobr>"
+#~ msgstr "<nobr><font color=\"%s\"><b>Pregleda� Logova</b></font></nobr>"
+
+#~ msgid "Log"
+#~ msgstr "Bele�ke"
+
+#~ msgid "Channel:"
+#~ msgstr "Kanal:"
+
+#~ msgid ""
+#~ "You need to choose a folder now.<br>KVIrc will use it to store its "
+#~ "configuration and to save the downloaded files.<br>Tip: choose a folder "
+#~ "that you will be able to find easily later<br>"
+#~ msgstr ""
+#~ "Morate sada da izaberete fasciklu.<br>KVIrc �e da je koristi za svoja "
+#~ "pode�avanja i za �uvanje svu�enih fajlova.<br>Savet: izaberite fasciklu "
+#~ "koju �ete kasnije biti u mogu�nosti da brzo i lako pronadjete<br>"
+
+#~ msgid "Configuration directory"
+#~ msgstr "Direktorijum pode�avanja"
+
+#~ msgid "Kvirc setup"
+#~ msgstr "Kvirc pode�avanja"
+
+#~ msgid ""
+#~ "The directory '%s' already exists.\n"
+#~ "(maybe from a previous Kvirc installation)\n"
+#~ "If you experience any problems try deleting the old directory:\n"
+#~ "the setup program will be started automatically again."
+#~ msgstr ""
+#~ "Direktorijum '%s' ve� postoji.\n"
+#~ "(mo�da od prethodne instalacije KVIrc-a)\n"
+#~ "Ako o�ekujete ili imate probleme probajte da obri�ete stari "
+#~ "direktorijum:\n"
+#~ "setup program �e se automatski ponovo pokrenuti."
+
+#~ msgid ">>"
+#~ msgstr ">>"
+
+#~ msgid ""
+#~ ": No valid local copy of avatar available; unacceptable/invalid avatar "
+#~ "size (%u): ignoring"
+#~ msgstr ""
+#~ ": Nema mogu�e ispravne lokalne kopije avatara; neprihvatljiva/pogre�na "
+#~ "veli�ina avatara (%u): ignori�em"
+
+#, fuzzy
+#~ msgid "About KVirc..."
+#~ msgstr "O &KVIrc-u..."
+
+#, fuzzy
+#~ msgid "About"
+#~ msgstr "Prekini"
+
+#, fuzzy
+#~ msgid "License"
+#~ msgstr "&Linija"
+
+#~ msgid ""
+#~ "Can't send the DCC %s request to %s: the connection has been terminated"
+#~ msgstr ""
+#~ "Ne mogu da po�aljem DCC %s zahtev za %s: konekcija je bila prekinuta"
+
+#~ msgid ""
+#~ "<center><b>%s [%s@%s]</b> requests a<br><b>Direct Client Connection</b> "
+#~ "in <b>%s</b> mode.<br>"
+#~ msgstr ""
+#~ "<center><b>%s [%s@%s]</b> zahteva <br><b>Direktnu Konekciju Klijenta (DCC)"
+#~ "</b> u <b>%s</b> modu.<br>"
+
+#~ msgid "The connection will be secured using SSL.<br>"
+#~ msgstr "Konekcija �e biti osigurana kori��enjem SSL-a.<br>"
+
+#~ msgid ""
+#~ "The connection target will be host <b>%s</b> on port <b>%s</"
+#~ "b><br><br><hr><br>Do you accept ?<br></center>"
+#~ msgstr ""
+#~ "Odredi�te konekcije �e biti host <b>%s</b> na portu <b>%s</"
+#~ "<br><br><hr><br>Da li prihvatate ?<br></center>"
+
+#~ msgid ""
+#~ "<center><b>%s [%s@%s]</b> requests a<br><b>Direct Client Connection</b> "
+#~ "in <b>VOICE</b> mode.<br>The connection target will be host <b>%s</b> on "
+#~ "port <b>%s</b><br><br><hr><br>Do you accept ?<br></center>"
+#~ msgstr ""
+#~ "<center><b>%s [%s@%s]</b> zahteva <br><b>Direktno Konektovanje Klijena</"
+#~ "b> u <b>VOICE</b> modu.<br>Meta konektovanja ce biti host <b>%s</b> na "
+#~ "portu <b>%s</b><br><br><hr><br>Da li prihvatate ?<br></center>"
+
+#~ msgid "DCC VOICE request"
+#~ msgstr "DCC VOICE zahtev"
+
+#~ msgid ""
+#~ "<center><b>%s [%s@%s]</b> requests a<br><b>Direct Client Connection</b> "
+#~ "in <b>CANVAS</b> mode.<br>The connection target will be host <b>%s</b> on "
+#~ "port <b>%s</b><br><br><hr><br>Do you accept ?<br></center>"
+#~ msgstr ""
+#~ "<center><b>%s [%s@%s]</b> zahteva <br><b>Direktno konektovanje klijenata</"
+#~ "b> u <b>CANVAS</b> modu.<br>Meta konektovanja �e biti host <b>%s</b> na "
+#~ "portu <b>%s</b><br><br><hr><br>Da li prihvatate ?<br></center>"
+
+#~ msgid "DCC CANVAS request"
+#~ msgstr "DCC CANVAS zahtev"
+
+#~ msgid ""
+#~ "<center><b>%s [%s@%s]</b> wants to send you the file<br>'<b>%s</b>' <b>%"
+#~ "s</b> bytes long.<br>The connection target will be host <b>%s</b> on port "
+#~ "<b>%s</b><br><br><hr><br>Do you accept ?<br></center>"
+#~ msgstr ""
+#~ "<center><b>%s [%s@%s]</b> �eli da Vam po�alje fajl<br>'<b>%s</b>' <b>%s</"
+#~ "b> bajtova duga�ak.<br>Meta konektovanja �e biti host <b>%s</b> na portu "
+#~ "<b>%s</b><br><br><hr><br>Da li prihvatate ?<br></center>"
+
+#~ msgid ""
+#~ "<center><b>%s [%s@%s]</b> wants to send you the file<br>'<b>%s</b>' <b>%"
+#~ "s</b> bytes long.<br>You will be the passive side of the connection."
+#~ "<br><br><hr><br>Do you accept ?<br></center>"
+#~ msgstr ""
+#~ "<center><b>%s [%s@%s]</b> �eli da Vam po�alje fajl<br>'<b>%s</b>' <b>%s</"
+#~ "b> bajtova duga�ak.<br>Vi �ete biti pasivna strana konekcije."
+#~ "<br><br><hr><br>Da li prihvatate ?<br></center>"
+
+#~ msgid ""
+#~ "<br><hr><center><b>Notes:</b><br>The file looks to be an avatar that you "
+#~ "have requested.<br>You should not change its file name and<br>save it in "
+#~ "a place where KVIrc can find it:<br>this can be the KVIrc 'avatars' "
+#~ "directory, your home directory,<br>the KVIrc 'incoming' directory, the "
+#~ "KVIrc 'pics' directory,<br>or the save directory for the incoming file "
+#~ "type...<br>Usually accepting the default save path suggested in "
+#~ "the<br>dialog will do the job.<br>You can also instruct KVirc to auto-"
+#~ "accept the incoming avatars<br>by setting the option "
+#~ "'boolAutoAcceptIncomingAvatars' to true.<br></center>"
+#~ msgstr ""
+#~ "<br><hr><center><b>Obave�tenje:</b><br>Fajl izgleda kao da je avatar koji "
+#~ "imate zahtevan .<br>Ne biste trebali da menjate njegovo ime "
+#~ "i<br>sa�uvajte ga na mesto gde ga KVIrc mo�e na�i:<br>ovo mo�e biti KVIrc "
+#~ "'avatars' direktorijum, Va� home direktorijum,<br>KVIrc 'incoming' "
+#~ "direktorijum, KVIrc 'pics' direktorijum,<br>ili direktorijum za �uvanje "
+#~ "dolaze�ih fajlova...<br>Obi�no je prihvatljiva predefinisana putanja "
+#~ "predlo�ena u br>dijalogu, i zavr�i�e posao.<br>Mo�ete tako�e navesti "
+#~ "KVirc-u da automatski prihvata dolaze�e avatare<br> postavkom opcije "
+#~ "'boolAutoAcceptIncomingAvatars' na tacno.<br></center>"
+
+#~ msgid "Auto-accepting DCC %s request from %s!%s@%s for file %s"
+#~ msgstr "Auto-prihvatanje DCC %s zahteva od %s!%s@%s za fajl %s"
+
+#~ msgid "Auto-saving DCC %s file %s as \r![!dbl]play $0\r%s\r"
+#~ msgstr "Automatsko snimanje DCC %s fajla %s kao \r![!dbl]play $0\r%s\r"
+
+#~ msgid ""
+#~ "<center><b>The file %s already exists</b><br>and is <b>%d</b> bytes long."
+#~ "<br>Do you want to <b>overwrite</b> it, <b>auto-rename</b> the incoming "
+#~ "one, orthreat it as an incomplete download and <b>resume</b> it ?<br></"
+#~ "center>"
+#~ msgstr ""
+#~ "<center><b>Fajl %s ve� postoji</b><br>i duga�ak je<b>%d</b> bajtova."
+#~ "<br>Da li �elite da <b>prepi�ete</b> it, <b>auto-reimenujete</b> "
+#~ "dolaze�i, ili da ga tretirate kao nekompletno svu�en i <b>nastavite</b> "
+#~ "sa njim ?<br></center>"
+
+#~ msgid "File %s exists: auto-renaming to %s.rnm"
+#~ msgstr "Fajl %s postoji: suto-preimenovanje u %s.rnm"
+
+#~ msgid "Attempting a passive DCC CANVAS connection"
+#~ msgstr "Poku�avam pasivnu DCC CANVAS konekciju"
+
+#~ msgid "Listening on interface %s port %s"
+#~ msgstr "Slu�am interfejs %s na portu %s"
+
+#~ msgid ""
+#~ "Sent DCC CANVAS request to %s...waiting for the remote client to connect"
+#~ msgstr ""
+#~ "Poslat DCC CANVAS zahtev u %s...�ekam udaljenog klijenta da se konektuje"
+
+#~ msgid "DCC CANVAS request not sent: awaiting manual connections"
+#~ msgstr "DCC CANVAS zahtev nije poslat: �ekanje ru�ne konekcije"
+
+#~ msgid "Attempting an active DCC CANVAS connection"
+#~ msgstr "Poku�avam da primim DCC CANVAS konekciju"
+
+#~ msgid "Contacting host %s on port %s"
+#~ msgstr "Kontaktiram host %s na portu %s"
+
+#~ msgid "DCC Failed: %s"
+#~ msgstr "DCC Neuspe�an: %s"
+
+#~ msgid "Local end is %s:%s"
+#~ msgstr "Lokalni krajnji je %s:%s"
+
+#~ msgid "&Line"
+#~ msgstr "&Linija"
+
+#~ msgid "&Rectangle"
+#~ msgstr "&Pravougaonik"
+
+#~ msgid "&Ellipse"
+#~ msgstr "&Elipsa"
+
+#~ msgid "&Chord"
+#~ msgstr "&Akord"
+
+#~ msgid "&Rich text (html)"
+#~ msgstr "&Oboga�eni tekst (html)"
+
+#~ msgid "&Triangle"
+#~ msgstr "&Trougao"
+
+#~ msgid "&Pentagon"
+#~ msgstr "&Petougao"
+
+#~ msgid "&Hexagon"
+#~ msgstr "�e&stougao"
+
+#~ msgid "&Item"
+#~ msgstr "&Stavka"
+
+#~ msgid "&Polygons"
+#~ msgstr "&Poligoni"
+
+#~ msgid "Attempting a passive DCC %s connection"
+#~ msgstr "Poku�avam pasivnu DCC %s konekciju"
+
+#~ msgid "Attempting an active DCC %s connection"
+#~ msgstr "Poku�avam aktivnu DCC %s konekciju"
+
+#~ msgid "Sent DCC %s request to %s...waiting for the remote client to connect"
+#~ msgstr ""
+#~ "Poslat DCC %s zahtev za %s...�ekam udaljenog klijenta da se konektuje"
+
+#~ msgid "DCC %s request not sent: awaiting manual connections"
+#~ msgstr "DCC %s zahtev nije poslat: o�ekujem ru�no konektovanje"
+
+#, fuzzy
+#~ msgid "Low lewel transport connection estabilished"
+#~ msgstr "Uspostavljena konekcija niskog nivoa transporta [%s (%s:%u)]"
+
+#~ msgid ""
+#~ "The crypt engine was not able to encrypt the current message (%s): %s: no "
+#~ "data sent to the remote end"
+#~ msgstr ""
+#~ "Ma�ina za �ifrovanje nije u mogu�nosti da �ifruje trenutnu poruku (%s): %"
+#~ "s: nisu poslati podaci udaljenom krajnjem"
+
+#~ msgid "ERROR: %s"
+#~ msgstr "GRE�KA: %s"
+
+#~ msgid "DCC %s Failed: %s"
+#~ msgstr "DCC %s Neuspe�an: %s"
+
+#~ msgid "Reject"
+#~ msgstr "Odbaci"
+
+#~ msgid "Accept"
+#~ msgstr "Prihvati"
+
+#~ msgid "Choose the save file name"
+#~ msgstr "Izaberi ime fajla za �uvanje"
+
+#~ msgid "Overwrite"
+#~ msgstr "Prepi�i"
+
+#~ msgid "Resume"
+#~ msgstr "Nastavi"
+
+#~ msgid "DCC: File already existing"
+#~ msgstr "DCC: Fajl ve� postoji"
+
+#~ msgid ""
+#~ "This window has no associated irc context (you need one unless you pass -"
+#~ "c or -n)"
+#~ msgstr ""
+#~ "Ovaj prozor nema asociraju�i IRC kontekst (potreban Vam je jedan da bi "
+#~ "pro�lo -c ili -n)"
+
+#~ msgid ""
+#~ "You are not connected to a server (you need a connection unless you pass -"
+#~ "c or -n)"
+#~ msgstr ""
+#~ "Niste zaka�eni na server (potrebna vam je konekcija da bi pro�lo -c ili -"
+#~ "n)"
+
+#~ msgid "This executable was build without SSL support: -s switch ignored"
+#~ msgstr "Ovaj KVIrc je napravljen bez SSL podr�ke: ignorisan -s prekida�"
+
+#~ msgid ""
+#~ "This executable has been compiled without SSL support: -s switch ignored"
+#~ msgstr "Ovaj KVIrc je kompajliran bez SSL podr�ke: ignorisan -s prekida�"
+
+#~ msgid "Invalid file size specified: no message sent"
+#~ msgstr "Neispravna veli�ina fajla: nije poslata poruka"
+
+#~ msgid "this executable has no SSL support: -s switch ignored"
+#~ msgstr "ovaj KVIrc nema SSL podr�ku: ignorisan -s prekida�"
+
+#~ msgid "Unable to process the above request: %s: %s"
+#~ msgstr "Ne mogu da odradim navedeni zahtev: %s: %s"
+
+#~ msgid "ignoring and notifying failure"
+#~ msgstr "ignori�em i obave�tavam o neuspehu"
+
+#~ msgid "ignoring"
+#~ msgstr "ignorisanje"
+
+#~ msgid ""
+#~ "The above request is broken: the second parameter is '%s' and shoud be "
+#~ "'chat'; trying to continue"
+#~ msgstr ""
+#~ "Nevedeni zahtev je prekinut: drugi parametar je '%s' a trebao bi biti "
+#~ "'chat'; poku�avam da nastavim"
+
+#~ msgid ""
+#~ "The above request is broken: the fourth parameter should be the file size "
+#~ "but does not look as an unsigned number; trying to continue"
+#~ msgstr ""
+#~ "Navedeni zahtev je prekinut: �etvrti parametar bi trebalo da bude "
+#~ "veli�ina fajla ali ne izgleda kao potreban broj; poku�avam da nastavim"
+
+#~ msgid ""
+#~ "The above request is broken: the filename contains path components; "
+#~ "stripping the leading path and trying to continue"
+#~ msgstr ""
+#~ "Navedeni zahtev je prekinut: ime fajla sadr�i komponente putanje; "
+#~ "izdvajam vode�u putanju i poku�avam da nastavim"
+
+#~ msgid ""
+#~ "The above request has resume file size missing: we assume a resume file "
+#~ "size of 0"
+#~ msgstr ""
+#~ "Navedeni zahtev nema veli�inu fajla za nastavljanje: dodeljujemo fajlu "
+#~ "veli�inu 0"
+
+#~ msgid "0"
+#~ msgstr "0"
+
+#~ msgid "%s [%s@%s] is ready to receive the file \"%s\""
+#~ msgstr "%s [%s@%s] je spreman da primi fajl \"%s\""
+
+#~ msgid "The remote client is listening on interface %s and port %s"
+#~ msgstr "Udaljeni klijent je slu�ao na intefejsu %s i portu %s"
+
+#~ msgid ""
+#~ "Use %c\r![!dbl]dcc.send %s -i=%s -p=%s %s\r/dcc.send %s -i=%s -p=%s %s\r%"
+#~ "c to send the file (or simply double click on the link)"
+#~ msgstr ""
+#~ "Koristite %c\r![!dbl]dcc.send %s -i=%s -p=%s %s\r/dcc.send %s -i=%s -p=%s "
+#~ "%s\r%c za slanje fajla (ili prosto dupli klik na link)"
+
+#~ msgid ""
+#~ "No suitable interface to listen on: Trying to continue anyway... but "
+#~ "don't expect nice results"
+#~ msgstr ""
+#~ "Nema odgovaraju�eg intefrejsa za slu�anje: Poku�avam da nastavim...ali ne "
+#~ "o�ekujem dobre rezultate"
+
+#~ msgid ""
+#~ "Accepting file request from %s [%s@%s] for '%s' (real file: %s): offering "
+#~ "DCC %s since we can't accept incoming connections (user option)"
+#~ msgstr ""
+#~ "Prihvatanje zahteva od %s [%s@%s] za '%s' (pravi fajl: %s): Predla�e DCC %"
+#~ "s iako mi ne mo�emo da prihvatimo dolaze�e konekcije (opcije korisnika)"
+
+#~ msgid ""
+#~ "Accepting file request from %s [%s@%s] for '%s' (real file: %s): offering "
+#~ "DCC %s"
+#~ msgstr ""
+#~ "Prihvatanje zahteva za fajl od %s [%s@%s] za '%s' (stvarni fajl: %s): "
+#~ "predla�e DCC %s"
+
+#~ msgid "The above request can't be accepted: unsupported codec '%s'"
+#~ msgstr "Navedeni zahtev nije prihvatljiv: nepodr�an koder '%s'"
+
+#~ msgid ""
+#~ "The above request looks to be broken: invalid sample-rate '%s': "
+#~ "defaulting to 8000"
+#~ msgstr ""
+#~ "Navedeni zahtev izgleda da je prekinut: neispravna brzina semplovanja '%"
+#~ "s': predefini�em na 8000"
+
+#~ msgid "WARNING: The peer is sending garbage data past the end of the file"
+#~ msgstr ""
+#~ "UPOZORENJE: Udaljeni je poslao podatke koji su �ubre posle kraja fajla"
+
+#~ msgid ""
+#~ "WARNING: Ignoring data after the declared length and forcibly closing the "
+#~ "connection"
+#~ msgstr ""
+#~ "UPOZORENJE; Ignori�em podatke posle deklarisane du�ine i forsirano "
+#~ "zatvaram konekciju"
+
+#~ msgid ""
+#~ "Data transfer terminated: waiting 30 secs for the peer to close the "
+#~ "connection"
+#~ msgstr ""
+#~ "Prenos podataka prekinut: �ekam 30 sekundi za udaljenog da zatvori "
+#~ "konekciju"
+
+#~ msgid ""
+#~ "Data transfer was terminated 30 secs ago: forcibly closing the connection"
+#~ msgstr ""
+#~ "Prenos podataka je prekinut pre 30 sekundi: forsirano zatvaranje konekcije"
+
+#~ msgid ""
+#~ "WARNING: Received data in a DCC TSEND: there should be no acknowledges"
+#~ msgstr ""
+#~ "UPOZORENJE: Primljen podatak u DCC TSEND: ovde bi trebalo da nema "
+#~ "rukovanja"
+
+#~ msgid "File: %s (%s bytes)"
+#~ msgstr "Fajl: %s (%s bajtova)"
+
+#~ msgid "Local file name: %s"
+#~ msgstr "Naziv lokalnog fajla: %s"
+
+#~ msgid "Data progress"
+#~ msgstr "Napredak podataka"
+
+#~ msgid "Acknowledge progress"
+#~ msgstr "Napredak potvrde"
+
+#~ msgid "0 h 0 m 0 s"
+#~ msgstr "0 h 0 m 0 s"
+
+#~ msgid "Bytes transferred"
+#~ msgstr "Bajtova prene�eno"
+
+#~ msgid "Average transfer speed"
+#~ msgstr "Prose�na brzina prenosa"
+
+#~ msgid "Instant transfer speed"
+#~ msgstr "Trenutna brzina prenosa"
+
+#~ msgid "Sent DCC RESUME request...waiting for ACCEPT"
+#~ msgstr "Poslat DCC RESUME zahtev...�ekam ACCEPT"
+
+#~ msgid "Open folder"
+#~ msgstr "Otvori fasciklu"
+
+#~ msgid "Open file (/play)"
+#~ msgstr "Otvori fajl (/play)"
+
+#~ msgid "File: %s"
+#~ msgstr "Fajl: %s"
+
+#~ msgid "Iana type: %s"
+#~ msgstr "Iana tip: %s"
+
+#~ msgid "File mask: %s"
+#~ msgstr "Maska fajla: %s"
+
+#~ msgid "Magic bytes: %s"
+#~ msgstr "Magi�nih bajtova: %s"
+
+#~ msgid "No media type match for file \"%s\""
+#~ msgstr "Nema vrste medija za fajl \"%s\""
+
+#~ msgid "Close all terminated transfers"
+#~ msgstr "Zatvori sve prekinute prenose"
+
+#~ msgid ""
+#~ "DCC %s transfer with %s@%s:%s succesfull: file \r![!dbl]play $0\r%s\r"
+#~ msgstr "DCC %s prenos sa %s@%s:%s je uspe�an: fajl \r![!dbl]play $0\r%s\r"
+
+#~ msgid "Received %d bytes"
+#~ msgstr "Primljeno %d bajtova"
+
+#~ msgid "%d h %d m %d s"
+#~ msgstr "%d h %d m %d s"
+
+#~ msgid "Avg: %d (bytes/sec)"
+#~ msgstr "Prosek: %d (bajtova/sek)"
+
+#~ msgid "Spd: %d (bytes/sec)"
+#~ msgstr "Brzina: %d (bajtova/sek)"
+
+#~ msgid "Sent %d bytes"
+#~ msgstr "Poslato %d bajtova"
+
+#~ msgid "RESUME accepted: the transfer will begin at position %s"
+#~ msgstr "NASTAVAK (RESUME) prihva�en: prenos �e po�eti od pozicije %s"
+
+#~ msgid "Internal error in RESUME request"
+#~ msgstr "Interna gre�ka u NASTAVAK (RESUME) zahtevu"
+
+#~ msgid "Invalid RESUME request: position %u is 'out of the file'"
+#~ msgstr "Neispravan NASTAVAK (RESUME) zahtev: pozicija %u je 'prema�en fajl'"
+
+#~ msgid "Accepting RESUME request: transfer will initiate at position %u"
+#~ msgstr ""
+#~ "Prihva�en NASTAVAK (RESUME) zahtev: prenos �e odpo�eti od pozicije %u"
+
+#~ msgid "Can't retrieve a suitable local IPV4 address"
+#~ msgstr "Ne mogu da uspostavim pogodnu lokalnu IPV4 adresu"
+
+#~ msgid ""
+#~ "Can't listen on default interface '%s': fix it in the options dialog, "
+#~ "disabling the option (so the next dcc will work)"
+#~ msgstr ""
+#~ "Ne mogu da slu�am na predefinisanom interfejsu '%s'; popravite to u "
+#~ "dijalogu opcija, isklju�ite opciju (pa �e slede�i dcc raditi)"
+
+#~ msgid ""
+#~ "WARNING: failed to check the soundcard duplex capabilities: if this is a "
+#~ "half-duplex soundcard , use the DCC VOICE option to force half-duplex "
+#~ "algorithm"
+#~ msgstr ""
+#~ "UPOZORENJE: Ne mogu da proverim dupleks mogu�nost muzi�ke kartice: ako je "
+#~ "ovo half-dupleks muzi�ka, koristite DCC VOICE opcije za forsiranje half-"
+#~ "dupleks algoritma"
+
+#~ msgid ""
+#~ "Half duplex soundcard detected, you will not be able to talk and listen "
+#~ "at the same time"
+#~ msgstr ""
+#~ "Detektovana half-dupleks muzi�ka kartica, ne�ete mo�i da govorite i "
+#~ "slu�ate u isto vreme"
+
+#~ msgid ""
+#~ "WARNING: failed to set the requested sample rate (%d): the device used "
+#~ "closest match (%d)"
+#~ msgstr ""
+#~ "UPOZORENJE: ne mogu da postavim zahtevano semplovanje (%d): ure�aj "
+#~ "koristi najbli�i predvi�en (%d)"
+
+#~ msgid "Ops...failed to test the soundcard capabilities...expect problems..."
+#~ msgstr ""
+#~ "Ups...Ne mogu da testiram sposobnost mozi�ke kartice...o�ekujem "
+#~ "probleme..."
+
+#~ msgid "Input buffer"
+#~ msgstr "Ulazni bafer"
+
+#~ msgid "Attempting a passive DCC VOICE connection"
+#~ msgstr "Poku�avam pasivnu DCC VOICE konekciju"
+
+#~ msgid "Attempting an active DCC VOICE connection"
+#~ msgstr "Poku�avam aktivnu DCC VOICE konekciju"
+
+#~ msgid ""
+#~ "Sent DCC VOICE (%s) request to %s...waiting for the remote client to "
+#~ "connect"
+#~ msgstr ""
+#~ "Poslat DCC VOICE (%s) zahtev %s...�ekam da se udaljeni klijent konektuje"
+
+#~ msgid "DCC VOICE request not sent: awaiting manual connections"
+#~ msgstr "DCC VOICE zahtev nije poslat: o�ekujem ru�no konektovanje"
+
+#~ msgid "Actual codec used is '%s'"
+#~ msgstr "Aktuelni kori�ceni koder je '%s'"
+
+#, fuzzy
+#~ msgid "Link suicide"
+#~ msgstr "Link: %s"
+
+#~ msgid "Connect in new irc context"
+#~ msgstr "Konektuj u novom IRC kontekstu"
+
+#~ msgid ""
+#~ "<center>Hit this button to connect to the currently selected server in a "
+#~ "new irc context.<br>(as a new additional connection)</center>"
+#~ msgstr ""
+#~ "<center>Pritisnite ovo dugme za konektovanje na trenutno izabran server u "
+#~ "novom IRC kontekstu<br>(kao dodatna konekcija)</center>"
+
+#~ msgid "Details for server %s"
+#~ msgstr "Detalji za server %s"
+
+#~ msgid "Use SSL"
+#~ msgstr "Koristi SSL"
+
+#, fuzzy
+#~ msgid "Initial Usermode:"
+#~ msgstr "Mogu�i modovi korisnika:"
+
+#~ msgid ""
+#~ "<hr>\n"
+#~ "Registered as %s<br>\n"
+#~ "(Matched by %s)"
+#~ msgstr ""
+#~ "<hr>\n"
+#~ "Registerovan kao %s<br>\n"
+#~ "(Poklapa se sa %s)"
+
+#~ msgid "<hr>On <b>"
+#~ msgstr "<hr>Na <b>"
+
+#~ msgid "[>> %s] %s"
+#~ msgstr "[>> %s] %s"
+
+#~ msgid "\r!n\r%s\r [%s@\r!h\r%s\r]: %s"
+#~ msgstr "\r!n\r%s\r [%s@\r!h\r%s\r]: %s"
+
+#~ msgid "\r!n\r%s\r: %s"
+#~ msgstr "\r!n\r%s\r: %s"
+
+#~ msgid "%c%s [%s on %s]"
+#~ msgstr "%c%s [%s na %s]"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>%c%s</b></font> <font color=\"%s\">[%s on %s]"
+#~ "</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>%c%s</b></font> <font color=\"%s\">[%s na %s]"
+#~ "</font></nobr>"
+
+#~ msgid "%s [%s on %s]"
+#~ msgstr "%s [%s na %s]"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>%s</b></font> <font color=\"%s\">[%s on %s]</"
+#~ "font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>%s</b></font> <font color=\"%s\">[%s na %s]</"
+#~ "font></nobr>"
+
+#~ msgid "<b>mode %s %c%c %s</b>"
+#~ msgstr "<b>mod %s %c%c %s</b>"
+
+#~ msgid "<b>mode %s %c%c</b>"
+#~ msgstr "<b>mod %s %c%c</b>"
+
+#~ msgid "&Script center"
+#~ msgstr "&Skriptni centar"
+
+#~ msgid "&Gnutella window"
+#~ msgstr "&Gnutella prozor"
+
+#~ msgid "&Directory browser (MDI)"
+#~ msgstr "&Direktorijum �ita� (MDI)"
+
+#~ msgid "&Build info"
+#~ msgstr "&Informacije o pravljenju"
+
+#~ msgid "[unknown]"
+#~ msgstr "[nepoznat]"
+
+#~ msgid " away) on "
+#~ msgstr " odsutnost) na "
+
+#~ msgid ") on "
+#~ msgstr ") na "
+
+#~ msgid " (away) on "
+#~ msgstr " (odsutnost) na "
+
+#~ msgid "%s [%s]"
+#~ msgstr "%s [%s]"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>%s</b></font> <font color=\"%s\">[%s]</font></"
+#~ "nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>%s</b></font> <font color=\"%s\">[%s]</font></"
+#~ "nobr>"
+
+#~ msgid "<b>No connection</b><br>(Irc context %u)"
+#~ msgstr "<b>Nema konekcije</b><br>(Irc kontekst %u)"
+
+#~ msgid "<b>%s</b><br>%s<br>(Irc context %u)"
+#~ msgstr "<b>%s</b><br>%s<br>(Irc kontekst %u)"
+
+#~ msgid " (away)"
+#~ msgstr " (odsutnost)"
+
+#~ msgid "&Recent nicknames"
+#~ msgstr "&Skora�nji nadimci"
+
+#~ msgid "&Recent servers"
+#~ msgstr "&Skora�nji serveri"
+
+#~ msgid ""
+#~ "<center>You have been paged by<br><b>%s [%s@%s]</b><br>on %s:<br><br><b>%"
+#~ "s</b></center>"
+#~ msgstr ""
+#~ "<center>Upravo ste pageovani od<br><b>%s [%s@%s]</b><br>na %s:<br><br><b>%"
+#~ "s</b></center>"
+
+#~ msgid "Tile : Not enouh space"
+#~ msgstr "Par�e : Nema dovoljno prostora"
+
+#~ msgid "Tile : Not enough space"
+#~ msgstr "Par�e : Nema dovoljno prostora"
+
+#~ msgid "About KVirc"
+#~ msgstr "O KVIrc-u"
+
+#~ msgid "KVirc build info"
+#~ msgstr "Informacije o pravljenju KVIrc-a"
+
+#~ msgid ""
+#~ "\n"
+#~ "Script language tag: "
+#~ msgstr ""
+#~ "\n"
+#~ "Tag skriptnog jezika: "
+
+#~ msgid ""
+#~ "\n"
+#~ "Build number: "
+#~ msgstr ""
+#~ "\n"
+#~ "Broj pravljenja: "
+
+#~ msgid ""
+#~ "\n"
+#~ "Build date: "
+#~ msgstr ""
+#~ "\n"
+#~ "Datum pravljenja: "
+
+#~ msgid "What the #$%&@^& !?!?\n"
+#~ msgstr "�ta je bre ovo, #$%&@^& !?!?\n"
+
+#~ msgid "Out of memory for biff applet!"
+#~ msgstr "Nema vi�e memorije za udarni aplet!"
+
+#~ msgid "Already checking for mail on this account."
+#~ msgstr "Ve� proveravam po�tu za ovaj nalog."
+
+#~ msgid "Checking for mail in %s"
+#~ msgstr "Provera po�te u %s"
+
+#~ msgid "%s: %i new."
+#~ msgstr "%s: %i novo."
+
+#~ msgid "%s: no new messages."
+#~ msgstr "%s: nema novih poruka."
+
+#~ msgid "Close after joining"
+#~ msgstr "Zatvori posle ulaska"
+
+#~ msgid "Can't open directory %s"
+#~ msgstr "Ne mogu da otvorim direktorijum %s"
+
+#~ msgid "&Home"
+#~ msgstr "&Po�etni direktorijum"
+
+#~ msgid "&Up"
+#~ msgstr "&Gore"
+
+#~ msgid "&Go"
+#~ msgstr "&Kreni"
+
+#~ msgid "."
+#~ msgstr "."
+
+#~ msgid "Directory browser error"
+#~ msgstr "Gre�ka pretra�iva�a direktorijuma"
+
+#~ msgid "DirBrowser [%s]"
+#~ msgstr "DirPretra�iva� [%s]"
+
+#~ msgid ""
+#~ "<nobr><font color=\"%s\"><b>DirBrowser</b></font> <font color=\"%s\">[%s]"
+#~ "</font></nobr>"
+#~ msgstr ""
+#~ "<nobr><font color=\"%s\"><b>DirPretra�iva�</b></font> <font color=\"%s\">"
+#~ "[%s]</font></nobr>"
+
+#~ msgid "Huh ?"
+#~ msgstr "Huh ?"
+
+#~ msgid "EOF"
+#~ msgstr "EOF"
+
+#~ msgid "Read error: %s"
+#~ msgstr "Gre�ka u �itanju: %s"
+
+#~ msgid "Failed to connect : errno = %d (%s)"
+#~ msgstr "Neuspe�no konektovanje : broj-gre�ke = %d (%s)"
+
+#~ msgid "Write error : errno = %d (%s)"
+#~ msgstr "Gre�ka u pisanju : broj-gre�ke = %d (%s)"
+
+#~ msgid "Minimum network connections"
+#~ msgstr "Minimum mre�nih konekcija"
+
+#~ msgid "Maximum network connections"
+#~ msgstr "Maksimum mre�nih konekcija"
+
+#~ msgid "Listen for network connections"
+#~ msgstr "Slu�anje mre�nih konekcija"
+
+#~ msgid "Network listen port"
+#~ msgstr "Mre�ni slu�aju�i port"
+
+#~ msgid "Handshake timeout (in msecs)"
+#~ msgstr "Vreme isteka rukovanja (u milisek)"
+
+#~ msgid "Connection speed (KBit/sec)"
+#~ msgstr "Brzina konekcije (KBit/sek)"
+
+#~ msgid "Transfer listen port"
+#~ msgstr "Port za slu�anje prenosa"
+
+#~ msgid "Max uploads"
+#~ msgstr "Maksimum uploada"
+
+#~ msgid "Drop network connections when downloading"
+#~ msgstr "Odba�ene mre�ne konekcije za vreme svla�enja"
+
+#~ msgid "Max network connections to drop per download"
+#~ msgstr "Maksimum mre�nih konekcija za odbacivanje po svla�enju"
+
+#~ msgid "Can't start search: failed to send all the query packets"
+#~ msgstr "Ne mogu da pokrenem pretragu: neuspe�no slanje svih upit paketa"
+
+#~ msgid ""
+#~ "Search started for \"%s\" and minimum speed of %u KB/S: sent %d packets "
+#~ "to neighbours"
+#~ msgstr ""
+#~ "Pokrenuta pretraga za \"%s\" i minimalna brzina je %u KB/S: poslato %d "
+#~ "paketa kom�iluku"
+
+#~ msgid "Handshake failed: response header longer than 1024 bytes"
+#~ msgstr "Rukovanje neuspe�no: odzivno zaglavlje du�e od 1024 bajtova"
+
+#~ msgid "Handshake failed: unexpected handshake action \"%s\""
+#~ msgstr "Rukovanje neuspe�no; neo�ekivana akcija rukovanja \"%s\""
+
+#~ msgid ""
+#~ "Handshake failed: unexpected response (proto 6 step 2):\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Rukovanje neuspe�no: neo�ekivan odgovor (proto 6 korak 2):\n"
+#~ "%s"
+
+#~ msgid "Internal error: inconsistent handshaking node state"
+#~ msgstr "Interna gre�ka: neusagla�eno stanje ta�ke rukovanja"
+
+#~ msgid ""
+#~ "Handshake failed: invalid response:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Rukovanje neuspe�no: pogre�an odgovor:\n"
+#~ "%s"
+
+#~ msgid ""
+#~ "Handshake failed: unexpected response:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Rukovanje neuspe�no: neo�ekivan odgovor:\n"
+#~ "%s"
+
+#~ msgid "Invalid payload length %u for PING descriptor (should be 0)"
+#~ msgstr ""
+#~ "Pogre�na du�ina %u korisnog materijala za PING opisiva� (treba da bude 0)"
+
+#~ msgid "Evil: loops back my own PING packets with hops < 2"
+#~ msgstr "�avo: vra�a moje PING pakete sa skokom < 2"
+
+#~ msgid "Invalid payload length %u for PONG descriptor (should be 14)"
+#~ msgstr ""
+#~ "Pogre�na du�ina %u korisnog materijala PONG opisiva�a (treba da bude 14)"
+
+#~ msgid "Invalid payload length %u for QUERY descriptor (should be >= 2)"
+#~ msgstr ""
+#~ "Pogre�na du�ina %u korisnog materijala UPIT (QUERY) opisiva�a (mora da "
+#~ "bude >= 2)"
+
+#~ msgid "Evil: loops back my own QUERY packets with hops < 2"
+#~ msgstr "�avo: vraca nazad moje UPIT (QUERY) pakete sa skokom < 2"
+
+#~ msgid "Invalid payload length %u for QUERYHIT descriptor (should be >= 27)"
+#~ msgstr ""
+#~ "Pogre�na korisna du�ina %u za QUERYHIT opisiva� (treba da bude >=27)"
+
+#~ msgid "Invalid payload length %u for QUERYHIT descriptor (should be >= %u)"
+#~ msgstr ""
+#~ "Pogre�na korisna du�ina %u za QUERYHIT opisiva� (treba da bude >= %u)"
+
+#~ msgid "Invalid payload length %u for PUSH descriptor (should be 26)"
+#~ msgstr "Pogre�na korisna du�ina %u za PUSH opisiva� (treba da bude 26)"
+
+#~ msgid "Hanshake timeout"
+#~ msgstr "Vreme isteka za rukovanje"
+
+#~ msgid "Size (Bytes)"
+#~ msgstr "Veli�ina (bajtova)"
+
+#~ msgid "Host"
+#~ msgstr "Host"
+
+#~ msgid "Port"
+#~ msgstr "Port"
+
+#~ msgid "Extra info"
+#~ msgstr "Dodatni info"
+
+#~ msgid "File name regexp:"
+#~ msgstr "Ime fajla regexp"
+
+#~ msgid "Apply filter"
+#~ msgstr "Primeni filter"
+
+#~ msgid "Clear duplicates"
+#~ msgstr "Obri�i duplikate"
+
+#~ msgid "Store"
+#~ msgstr "Smesti"
+
+#~ msgid "Search for"
+#~ msgstr "Pretra�i za:"
+
+#~ msgid "Minimum speed"
+#~ msgstr "Minimalna brzina"
+
+#~ msgid "Clear selected"
+#~ msgstr "Obri�i selektovano"
+
+#~ msgid "Download selected"
+#~ msgstr "Svuci selektovano"
+
+#~ msgid "%d hits (%d visible, %d pending)"
+#~ msgstr "%d pogodaka (%d vidljivo, %d neizbe�nih)"
+
+#~ msgid "Select a hit list file"
+#~ msgstr "Izaberi fajl hit liste"
+
+#~ msgid ""
+#~ "Failed to setup the listening socket: can't accept incoming network "
+#~ "connections"
+#~ msgstr ""
+#~ "Nisam uspeo da postavim slu�aju�i priklju�ak: ne mogu da prihvatim "
+#~ "dolaze�e mre�ne konekcije"
+
+#~ msgid "Listening for network connections on port %u"
+#~ msgstr "Slu�am za mre�ne konekcije na portu %u"
+
+#~ msgid "Listening for network connections disabled: (user option)"
+#~ msgstr "Slu�anje za mre�ne konekcije onemogu�eno: (opcije korisnika)"
+
+#~ msgid ""
+#~ "Failed to setup the listening socket: can't accept incoming transfer "
+#~ "connections"
+#~ msgstr ""
+#~ "Neuspe�no postavljanje slu�aju�eg priklju�ka: ne mogu da prihvatim "
+#~ "dolaze�e prenosne konekcije"
+
+#~ msgid "Listening for transfer connections on port %u"
+#~ msgstr "Slu�am za prenosne konekcije na portu %u"
+
+#~ msgid "Listening for transfer connections disabled: (user option)"
+#~ msgstr "Slu�anje za prenosne konekcije onemogu�eno: (opcije korisnika)"
+
+#~ msgid ""
+#~ "Can't connect to node %s:%u: another connection to this node is already "
+#~ "in progress"
+#~ msgstr ""
+#~ "Ne mogu da se pove�em na �vor %s:%u: jo� jedna konekcija na ovaj �vor je "
+#~ "ve� u toku"
+
+#~ msgid "Can't connect to node %s:%u: it is my own address"
+#~ msgstr "Ne mogu da se pove�em na �vor %s:%u: to je moja vlastita adresa"
+
+#~ msgid "Can't find node %d"
+#~ msgstr "Ne mogu da na�em �vor %d"
+
+#~ msgid "User kill request"
+#~ msgstr "Korisnik ubija zahtev"
+
+#~ msgid "Can't start the PUSH request: the source node is dead"
+#~ msgstr "Ne mogu da pokrenem PUSH zahtev: izvorni �vor je mrtav"
+
+#~ msgid "Can't start the PUSH request, the source node is no longer existing"
+#~ msgstr "Ne mogu da pokrenem PUSH zahtev: izvorni �vor vi�e ne postoji"
+
+#~ msgid ""
+#~ "Rejecting connection from node %s:%u: not accepting connections (user "
+#~ "option)"
+#~ msgstr ""
+#~ "Odbijam konekciju od �vora %s:%u: ne prihvatam konekcije (opcije "
+#~ "korisnika)"
+
+#~ msgid "Rejecting connection from node %s:%u: connection limit reached"
+#~ msgstr "Odbijam konekciju od �vora %s:%u:: dostignuto ograni�enje konekcija"
+
+#~ msgid ""
+#~ "Rejecting connection from node %s:%u: another connection to this node is "
+#~ "already in progress"
+#~ msgstr ""
+#~ "Odbijam konekciju od �vora %s:%u:: jo� jedna konekcija ka ovom �voru je "
+#~ "ve� u toku"
+
+#~ msgid "Net bandwidth: I: %d O: %d (bytes/sec)"
+#~ msgstr "mre�na �irina opsega: I: %d O: %d (bajtova/sek)"
+
+#~ msgid "errno = %d (%s)"
+#~ msgstr "broj gre�ke = %d (%s)"
+
+#~ msgid "Too many connections: freeing bandwidth: dropping handshaking node"
+#~ msgstr ""
+#~ "Previ�e konekcija: rastere�ujem �irinu opsega: odbacujem rukuju�i �vor"
+
+#~ msgid "Too many connections: freeing bandwidth: dropping connected node"
+#~ msgstr ""
+#~ "Previ�e konekcija: rastere�ujem �irinu opsega:: odbacujem zaka�en �vor"
+
+#~ msgid "System select() error: errno=%d (%s)"
+#~ msgstr "Sistemska select() gre�ka: broj gre�ke=%d (%s)"
+
+#~ msgid "Local DB Search: \"%s\" (%u matches)"
+#~ msgstr "Lokalna DB pretraga: \"%s\" (%u poklapanja)"
+
+#~ msgid "Status"
+#~ msgstr "Status"
+
+#~ msgid "Progress"
+#~ msgstr "Napredak"
+
+#~ msgid "Remove selected transfers"
+#~ msgstr "Ukloni izabrane prenose"
+
+#~ msgid "Kill"
+#~ msgstr "Ubij"
+
+#~ msgid "Retry (same host)"
+#~ msgstr "Ponovi (isti host)"
+
+#~ msgid "Search for this filename"
+#~ msgstr "Pretra�i za ovo ime fajla"
+
+#~ msgid "Dead (Retry killed)"
+#~ msgstr "Mrtav (Ponavljanje ubijeno)"
+
+#~ msgid "Waiting for retry (%u secs)"
+#~ msgstr "�ekam ponavljanje (%u sekundi)"
+
+#~ msgid "Passive"
+#~ msgstr "Pasivan"
+
+#~ msgid "Recv"
+#~ msgstr "Primi"
+
+#~ msgid "Dead (Failed+Retried)"
+#~ msgstr "Mrtav (Neuspe�no+Ponovljeno)"
+
+#~ msgid ""
+#~ "[smart download]: Attempting to retry transfer for file \"%s\": same "
+#~ "host , attempt %u"
+#~ msgstr ""
+#~ "[pametni download]: Poku�avam da ponovim prenos za fajl \"%s\": isti "
+#~ "host , poku�aj %u"
+
+#~ msgid ""
+#~ "[smart download]: Attempting to retry transfer for file \"%s\": changing "
+#~ "host"
+#~ msgstr ""
+#~ "[pametni download]: Poku�avam da ponovim renos za fajl \"%s\": menjanje "
+#~ "host-a"
+
+#~ msgid ""
+#~ "[smart download]: No alternate hit found for file \"%s\": performing a "
+#~ "query; will retry again in 30 secs"
+#~ msgstr ""
+#~ "[pametno svla�enje] Nema alternativnog hit-a za fajl \"%s\": izvr�avanje "
+#~ "upit; ponovi�u za 30 sekundi"
+
+#~ msgid "Waiting for push"
+#~ msgstr "�ekam za push"
+
+#~ msgid "Handshaking"
+#~ msgstr "Rukovanje"
+
+#~ msgid "Transferring"
+#~ msgstr "Preno�enje"
+
+#~ msgid "Dead (Completed)"
+#~ msgstr "Mrtav (Kompletiran)"
+
+#~ msgid "Dead (Failed)"
+#~ msgstr "Mrtav (Neuspe�no)"
+
+#~ msgid "Connection closed by remote host"
+#~ msgstr "Konekciju zatvorio udaljeni host"
+
+#~ msgid "HTTP header too long (broken client ?)"
+#~ msgstr "HTTP zaglavlje preduga�ko (prekinut klijent ?)"
+
+#~ msgid "[transfer %u]: %s"
+#~ msgstr "[prenos %u]: %s"
+
+#~ msgid "Unroutable IP address"
+#~ msgstr "Ne rutiraju�a IP adresa"
+
+#~ msgid "Failed to create the listening socket"
+#~ msgstr "Neuspe�no kreiranje slu�aju�eg priklju�ka"
+
+#~ msgid "Too many invalid connections"
+#~ msgstr "Previ�e pogre�nih konekcija"
+
+#~ msgid "Invalid GIV header"
+#~ msgstr "Pogreno GIV zaglavlje"
+
+#~ msgid "The index specified in the header is not the expected one (%u)"
+#~ msgstr "Indeks definisan u zaglavlju nije kao o�ekivani (%u)"
+
+#~ msgid "Broken servent identifier"
+#~ msgstr "Prekinut uslu�ni identifikator"
+
+#~ msgid "The servent identifier is not the expected one (%s)"
+#~ msgstr "Neo�ekivani uslu�ni identifikator (%s)"
+
+#~ msgid "The file name is not the expected one (%s)"
+#~ msgstr "Ime fajla nije o�ekivano (%s)"
+
+#~ msgid "Rejecting PUSH: Invalid GIV request: %s"
+#~ msgstr "Odbijanje PUSH: Pogre�an GIV zahtev: %s"
+
+#~ msgid "Invalid request syntax"
+#~ msgstr "Neispravna sintaksa zahteva"
+
+#~ msgid "File Not Found"
+#~ msgstr "Fajl nije prona�en"
+
+#~ msgid "The file index requested does not match the PUSH request"
+#~ msgstr "Zahtevani indeks fajla se ne poklapa sa PUSH zahtevom"
+
+#~ msgid "The file name requested does not match the PUSH request"
+#~ msgstr "Zahtevano ime fajla se ne poklapa sa PUSH zahtevom"
+
+#~ msgid "Invalid \"Range\" request"
+#~ msgstr "Neispravan \"Opseg\" zahtev"
+
+#~ msgid "Broken \"Range\" request"
+#~ msgstr "Prekinut \"Opseg\" zahtev"
+
+#~ msgid "Too many uploads"
+#~ msgstr "Previ�e upload-a"
+
+#~ msgid "Accepting GET request from %s:%u for file %s (range %u-%u)"
+#~ msgstr "Prihvatanje GET zahteva od %s:%u za fajl %s (opseg %u-%u)"
+
+#~ msgid "Rejecting GET request: "
+#~ msgstr "Odbijanje GET zahteva: "
+
+#~ msgid ""
+#~ "\n"
+#~ "[transfer %u]: %s"
+#~ msgstr ""
+#~ "\n"
+#~ "[prenos %u]: %s"
+
+#~ msgid ""
+#~ "[transfer %u]: The server declared the data content size to be %u bytes "
+#~ "instead of %u (expected from QueryHit), trusting him, even if I'm "
+#~ "confused a bit"
+#~ msgstr ""
+#~ "[prenos %u]: Veli�ina serverski deklarisanih podataka je %u bajtova "
+#~ "umesto %u (o�ekivano od QueryHtt), verujem mu, iako sam malo zbunjen"
+
+#~ msgid ""
+#~ "[transfer %u]: Invalid Content-length header line sent by the server (%"
+#~ "s): trusting the QueryHit file size"
+#~ msgstr ""
+#~ "[prenos %u]: Pogre�no zaglavlje du�ine sadr�aja boslato od servera (%s): "
+#~ "verujem QueryHit veli�ini fajla"
+
+#~ msgid ""
+#~ "No Content-length header line sent by the server: trusting the QueryHit "
+#~ "file size"
+#~ msgstr ""
+#~ "Nema zaglavlja veli�ine sadr�aja poslatog od servera: verujem QueryHit "
+#~ "veli�ini fajla"
+
+#~ msgid ""
+#~ "[transfer %u]: The server specified an invalid resume position (%u where %"
+#~ "u was expected), this was rather fatal"
+#~ msgstr ""
+#~ "[prenos %u]: Server je definisao pogre�nu poziciju nastavka (%u gde je %u "
+#~ "o�ekivano), ovo je prili�no fatalno"
+
+#~ msgid "Invalid resume position"
+#~ msgstr "Neispravna pozicija nastavka"
+
+#~ msgid ""
+#~ "[transfer %u]: Invalid Content-range header line sent by the server (%s): "
+#~ "trying to blindly trust the server"
+#~ msgstr ""
+#~ "[prenos %u] Pogresno zaglavlje veli�ine sadr�aja poslato od servera (%s): "
+#~ "poku�avam da slepo verujem serveru"
+
+#~ msgid ""
+#~ "No Content-range header line sent by the server: trying to blindly trust "
+#~ "the server"
+#~ msgstr ""
+#~ "Nema zaglavlja veli�ine sadr�aja poslatog od servera: poku�avam da slepo "
+#~ "verujem serveru"
+
+#~ msgid "Server response to HTTP GET:"
+#~ msgstr "Server odgovara na HTTP GET:"
+
+#~ msgid "Invalid response while expecting http OK: "
+#~ msgstr "Pogre�an odgovor dok je o�ekivan http OK: "
+
+#~ msgid "%u of %u bytes [%d% at %u (bytes/sec)%s"
+#~ msgstr "%u od %u bajtova [%d% pri %u (bajtova/sek)%s"
+
+#~ msgid "]: stalled"
+#~ msgstr "]: zastoj"
+
+#~ msgid "Unexpected 0 bytes transfer requested"
+#~ msgstr "Neo�ekivano zahtevan 0 bajtni prenos"
+
+#~ msgid "File I/O Error: can't seek to the resume position"
+#~ msgstr "Fajl I/O Gre�ka: ne mogu da istra�im poziciju nastavka"
+
+#~ msgid "File I/O Error: unexpected EOF"
+#~ msgstr "Fajl I/O Gre�ka: neo�ekivani EOF"
+
+#~ msgid "Stalled (user option kill)"
+#~ msgstr "Zastoj (ubila opcija korisnika)"
+
+#~ msgid "Completed at %u (bytes/sec)"
+#~ msgstr "Kompletirano sa %u (bajtova/sek)"
+
+#~ msgid "Invalid empty file name"
+#~ msgstr "Neispravno prazno ime fajla"
+
+#~ msgid "Failed to seek the file to the resume position"
+#~ msgstr "Neuspe�no istra�ivanje pozicije nastavka fajla"
+
+#~ msgid "The downloaded file has been saved as file:/%s"
+#~ msgstr "Svu�en fajl je sa�uvan kao :/%s"
+
+#~ msgid ""
+#~ "Failed to rename the downloaded file to %s, it is actually saved as file:/"
+#~ "%s (it would be a good idea to move it from there)"
+#~ msgstr ""
+#~ "Ne mogu da preimenujem svu�eni fajl u %s, in je trenutno sa�uvan kao "
+#~ "fajl: /%s (bila bi dobra ideja da se pomeri odatle)"
+
+#~ msgid ""
+#~ "[transfer %u]: The file is currently locked by filelock %s, so it might "
+#~ "be actually being downloaded.If you feel this message to be in error, "
+#~ "please remove the filelock by hand and restart the download."
+#~ msgstr ""
+#~ "[prenos %u]: Fajl je trenutno zaklju�an on filelock-a %s, zna�i da mo�e "
+#~ "da bude da je trenutno svu�en. Ako ose�ate da je ova poruka mogu�a "
+#~ "gre�ka, molim uklonite filelock ru�no i restartujte svla�enje (download)"
+
+#~ msgid ""
+#~ "[transfer %u]: The file %s exists on disk but it has size greater than "
+#~ "expected: this might be a terminated download"
+#~ msgstr ""
+#~ "[prenos %u]: Fajl %s postoji na disku ali je veli�ina ve�a od o�ekivane: "
+#~ "ovo mo�e biti zbog prekinutog svla�enja"
+
+#~ msgid ""
+#~ "[transfer %u]: The file %s exists on disk: attempting a resume from "
+#~ "position %u"
+#~ msgstr ""
+#~ "[prenos %u]: Fajl %s postoji na disku: poku�avam da nastavim od pozicije %"
+#~ "u"
+
+#~ msgid ""
+#~ "[transfer %u]: The file %s exists on disk but the expected final sizes do "
+#~ "not match"
+#~ msgstr ""
+#~ "[prenos %u]: Fajl %s postoji na disku ali o�ekivana krjnja veli�ina se ne "
+#~ "poklapa"
+
+#~ msgid ""
+#~ "[transfer %u]: The file %s exists on disk but there was an arror while "
+#~ "analyzing it (stat() call failed)"
+#~ msgstr ""
+#~ "[prenos %u]: Fajl %s postoji na disku ali postoji gre�ka dok je "
+#~ "analiziran (stat() poziv neuspe�an)"
+
+#~ msgid ""
+#~ "[transfer %u]: File %s exists on disk but its lock seems to be broken"
+#~ msgstr ""
+#~ "[prenos %u]: Fajl %s postoji na disku ali je zaklju�an, izgleda da je "
+#~ "prekinut"
+
+#~ msgid ""
+#~ "[transfer %u]: File %s exists: Moving it out of my way (renaming to %s."
+#~ "rnm)"
+#~ msgstr ""
+#~ "[prenos %u]: Fajl %s postoji: Sklanjam ga sa puta (preimenujem u %s.rnm)"
+
+#~ msgid "[transfer %u]: Failed to write the lock file (%s)"
+#~ msgstr "[prenos %u]: Ne mogu da zapisem zaklju�an fajl (%s)"
+
+#~ msgid ""
+#~ "[transfer %u]: Failed to open the lock file for writing (%s): %s (errno=%"
+#~ "d)"
+#~ msgstr ""
+#~ "[prenos %u]: Ne mogu da otvorim zaklju�an fajl za pisanje (%s): %s (broj "
+#~ "gre�ke=%d)"
+
+#~ msgid "[transfer %u]: Failed to write the resume lock file (%s)"
+#~ msgstr "[prenos %u]: Ne mogu da zapi�em nastavak zaklju�anog fajla (%s)"
+
+#~ msgid ""
+#~ "[transfer %u]: Failed to open the resume lock file for writing (%s): %s "
+#~ "(errno=%d)"
+#~ msgstr ""
+#~ "[prenos %u]: Ne mogu da otvorim nastavljen zaklju�an fajl za pisanje (%"
+#~ "s): %s (broj gre�ke=%d)"
+
+#~ msgid "Can't lock the download file (Another download in progress ?)"
+#~ msgstr "Ne mogu da zaklju�am svla�e�i fajl (Jo� jedno svla�enje u toku ?)"
+
+#~ msgid ""
+#~ "[transfer %d]: Failed to connect to the remote host, attempting a PUSH"
+#~ msgstr "[prenos %d]: Ne mogu da se zaka�im na udaljeni host, poku�avam PUSH"
+
+#~ msgid "[transfer %d]: Failed to connect to the remote host, PUSH failed"
+#~ msgstr "[prenos %d]: Ne mogu da se zaka�im na udaljeni host, PUSH neuspe�an"
+
+#~ msgid "[transfer %u]: Succesfully terminated"
+#~ msgstr "[prenos %u]: Uspe�no prekinut"
+
+#~ msgid "Bandwidth (bytes/sec)"
+#~ msgstr "Propusni opseg (bajtova/sek)"
+
+#~ msgid "Remove selected nodes"
+#~ msgstr "Ukloni izabrane �vorove"
+
+#~ msgid "Remove non connected nodes"
+#~ msgstr "Ukloni �vorove koji nisu zaka�eni"
+
+#~ msgid "Accept incoming connections"
+#~ msgstr "Prihvati dolaze�e konekcije"
+
+#~ msgid "Auto-connect to reach min-connections"
+#~ msgstr "Auto-ka�enje da ostvarim min-konekcija"
+
+#~ msgid "ID"
+#~ msgstr "ID"
+
+#~ msgid "File size (bytes)"
+#~ msgstr "Veli�ina fajla (bajtova)"
+
+#~ msgid "Spy local search results"
+#~ msgstr "�pijuniraj rezultate lokalne pretrage"
+
+#~ msgid "Transfer"
+#~ msgstr "Prenos"
+
+#~ msgid "ops..can't start the slave gnutella thread"
+#~ msgstr "ups..ne mogu da pokrenem pomo�nu gnutella nit"
+
+#~ msgid "On network: %d nodes connected"
+#~ msgstr "Na mre�i: %d �vorova zaka�eno"
+
+#~ msgid "Not on network"
+#~ msgstr "Nije na mre�i"
+
+#~ msgid "Failed to lookup host %s: %s"
+#~ msgstr "Ne mogu da prona�em host %s: %s"
+
+#~ msgid "Gnutella"
+#~ msgstr "Gnutella"
+
+#~ msgid "<nobr><font color=\"%s\"><b>Gnutella</b></font></nobr>"
+#~ msgstr "<nobr><font color=\"%s\"><b>Gnutella</b></font></nobr>"
+
+#~ msgid "Connected (Incoming handshake)"
+#~ msgstr "Povezan (Dolaze�e rukovanje)"
+
+#~ msgid "Just born"
+#~ msgstr "Upravo ro�en"
+
+#~ msgid "New %s node: %s:%s"
+#~ msgstr "Nov %s �vor: %s:%s"
+
+#~ msgid "Lost node: %s:%s : %s"
+#~ msgstr "Izgubljen �vor: %s:%s : %s"
+
+#~ msgid "Connecting (proto 0.4)"
+#~ msgstr "Povezivanje (proto 0.4)"
+
+#~ msgid "Connecting (proto 0.6)"
+#~ msgstr "Povezivanje (proto 0.6)"
+
+#~ msgid "Connected (Handshake)"
+#~ msgstr "Povezan (Rukovanje)"
+
+#~ msgid "Connected (On Network) (0.4)"
+#~ msgstr "Povezan (Na Mre�u) (0.4)"
+
+#~ msgid "Connected (On Network) (0.6)"
+#~ msgstr "Povezan (Na Mre�u) (0.6)"
+
+#~ msgid "Stats for node %d %c: %s:%u"
+#~ msgstr "Statistika za �vor %d %c: %s:%u"
+
+#~ msgid " Connection type %c: %s"
+#~ msgstr " Vrsta konekcije %c: %s"
+
+#~ msgid " Protocol %c: %s"
+#~ msgstr " Protokol %c: %s"
+
+#~ msgid ""
+#~ " Public headers :\n"
+#~ "%s"
+#~ msgstr ""
+#~ " Javnih zaglavlja :\n"
+#~ "%s"
+
+#~ msgid " Packets processed %c: %u"
+#~ msgstr " Paketa obra�eno %c: %u"
+
+#~ msgid " Packets enqueued %c: %u"
+#~ msgstr " Paketa dodato %c: %u"
+
+#~ msgid " Bytes received %c: %u"
+#~ msgstr " Bajtova primljeno %c: %u"
+
+#~ msgid " Bytes sent %c: %u"
+#~ msgstr " Bajtova poslato %c: %u"
+
+#~ msgid " Dropped packets:"
+#~ msgstr " Odba�eni paketi:"
+
+#~ msgid " Duplicated %c: %u"
+#~ msgstr " Duplirano %c: %u"
+
+#~ msgid " Looped-back %c: %u"
+#~ msgstr " Vra�eno-nazad %c: %u"
+
+#~ msgid " Expired %c: %u"
+#~ msgstr " Isteklo %c: %u"
+
+#~ msgid " Unroutable (no path) %c: %u"
+#~ msgstr " Neusmerljivo (nema putanje) %c: %u"
+
+#~ msgid " Unknown %c: %u"
+#~ msgstr " Nepoznato %c: %u"
+
+#~ msgid " Incoming packet types:"
+#~ msgstr " Vrste dolaze�ih paketa:"
+
+#~ msgid ""
+#~ " Ping %c: %u (%u routed, %u dropped (%u looped back, %u "
+#~ "ttl expired, %u duplicated))"
+#~ msgstr ""
+#~ " Ping %c: %u (%u usmerenih, %u odbijenih (%u vra�enih "
+#~ "nazad, %u ttl istekao, %u duplranih))"
+
+#~ msgid ""
+#~ " Pong %c: %u (%u routed, %u directed to me, %u dropped "
+#~ "(%u ttl expired, %u unroutable))"
+#~ msgstr ""
+#~ " Pong %c: %u (%u usmerenih, %u upu�enih meni, %u "
+#~ "odbijenih (%u ttl istekao, %u neusmerljivih))"
+
+#~ msgid ""
+#~ " Query %c: %u (%u routed, %u dropped (%u looped back, %u "
+#~ "ttl expired, %u duplicated))"
+#~ msgstr ""
+#~ " Upit %c: %u (%u usmerenih, %u odbijenih (%u vra�enih "
+#~ "nazad, %u ttl istekao, %u duplranih))"
+
+#~ msgid ""
+#~ " QueryHit %c: %u (%u routed, %u directed to me, %u "
+#~ "dropped (%u ttl expired, %u unroutable))"
+#~ msgstr ""
+#~ " QueryHit %c: %u (%u usmerenih, %u upu�enih meni, %u "
+#~ "odbijenih (%u ttl istekao, %u neusmerljivih))"
+
+#~ msgid ""
+#~ " Push %c: %u (%u routed, %u directed to me, %u dropped "
+#~ "(%u ttl expired, %u unroutable, %u duplicated))"
+#~ msgstr ""
+#~ " Guraj %c: %u (%u trasirano, %u direktno meni, %u "
+#~ "odba�eno (%u ttl istekao, %u netrasiraju�e, %u duplirano))"
+
+#~ msgid "Select the files to share"
+#~ msgstr "Izaberite fajlove za deljenje"
+
+#~ msgid "No Gnutella window: use gnutella.open first"
+#~ msgstr "Nema Gnutella prozora: koristi prvo otvaranje gnutella"
+
+#~ msgid "Invalid node address"
+#~ msgstr "Pogre�na adresa �vora"
+
+#~ msgid "The editor page is already open"
+#~ msgstr "Editorska stranica je ve� otvorena"
+
+#~ msgid "Show the script center as toplevel window"
+#~ msgstr "Poka�i skriptni centar kao toplevel prozor"
+
+#~ msgid "Use single IRC tool bar"
+#~ msgstr "Koristi samu IRC traku alata"
+
+#~ msgid "Connect in current irc context"
+#~ msgstr "Konektuj u trenutnom IRC kontekstu"
+
+#~ msgid "Add mask"
+#~ msgstr "Dodaj masku"
+
+#~ msgid "Remove nickname"
+#~ msgstr "Ukloni nadimak"
+
+#~ msgid "Masks"
+#~ msgstr "Maske"
+
+#~ msgid "New User 0"
+#~ msgstr "Nov korsnik 0"
+
+#~ msgid "New User %d"
+#~ msgstr "Nov korisnik %d"
+
+#~ msgid "Apply changes"
+#~ msgstr "Primeni izmene"
+
+#~ msgid "%cTracking database entry for \r!n\r%s\r"
+#~ msgstr "%c Tra�im stavku u bazi podataka za \r!n\r%s\r"
+
+#~ msgid "Created on %c%s"
+#~ msgstr "Napravljen %c%s"
+
+#~ msgid "Last updated on %c%s"
+#~ msgstr "Poslednji put a�urirano u %c%s"
+
+#~ msgid "Last event: %c%s"
+#~ msgstr "Poslednji doga�aj: %c%s"
+
+#~ msgid ""
+#~ "\r![!dbl]tracker.info $0[!txt]Double click the nickname to see the info "
+#~ "entry\r"
+#~ msgstr ""
+#~ "\r![!dbl]tracker.info $0[!txt]Dupli klik na nadimak za gledanje info "
+#~ "stavke\r"
+
+#~ msgid "Chained nicknames: %c%s"
+#~ msgstr "Lan�ani nadimci: %c%s"
+
+#~ msgid "Usernames: %c%s"
+#~ msgstr "Korisni�ka imena: %c%s"
+
+#~ msgid "Hosts: %c%s"
+#~ msgstr "Hostovi: %c%s"
+
+#~ msgid "Was observed from: %c%s"
+#~ msgstr "Je preuzet od: %c%s"
+
+#~ msgid "Event counts (total tracking time: %u d %u h %u m %u s)"
+#~ msgstr "Broja� doga�aja (ukupno vreme motanja:%u d %u h %u m %u s)"
+
+#~ msgid "Joins count: %c%u"
+#~ msgstr "Broj ulazaka: %c%u"
+
+#~ msgid "Parts count: %c%u"
+#~ msgstr "Broj izlazaka: %c%u"
+
+#~ msgid "Quits count: %c%u"
+#~ msgstr "Broj prekida (quit): %c%u"
+
+#~ msgid "Chan privmsgs count: %c%u"
+#~ msgstr "Broj privatnih poruka kanala: %c%u"
+
+#~ msgid "Me privmsgs count: %c%u"
+#~ msgstr "Broj privatnih poruka za mene: %c%u"
+
+#~ msgid "Last %d private messages directed to me"
+#~ msgstr "Zadnjih %d privatnih poruka upu�enih meni"
+
+#~ msgid "[%s]: %s"
+#~ msgstr "[%s]: %s"
+
+#~ msgid "%cEnd of tracking database entry for \r!n\r%s\r"
+#~ msgstr "%cKraj premotavanja po databzi za \r!n\r%s\r"
+
+#~ msgid "No database entry for %s"
+#~ msgstr "Nema stavki u databazi za %s"
+
+#~ msgid "Show URL list button on frame window created"
+#~ msgstr "Prika�i dugme URL liste na okviru kreiranog prozora"
diff --git a/po/modules/options/options_uk.po b/po/modules/options/options_uk.po
new file mode 100644
index 00000000..65fca11f
--- /dev/null
+++ b/po/modules/options/options_uk.po
@@ -0,0 +1,4403 @@
+# translation of options_ua.po to
+# translation of options_ua.po to ukrainian
+# translation of options_ua.po to українська
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE' COPYRIGHT HOLDER.
+# Belyaev Stanislav <[email protected]>, 2007.
+#
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:304
+msgid ""
+msgstr ""
+"Project-Id-Version: options_ua\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-12-19 15:00+0200\n"
+"Last-Translator: Belyaev Stanislav <[email protected]>\n"
+"Language-Team: Ukrainian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1:2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1:2);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:232
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:51
+msgid "Font:"
+msgstr "Шрифт:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:47
+msgid "Background color:"
+msgstr "Кольори тла:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:114
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:129
+msgid "Background image:"
+msgstr "Фонове зображення:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:51
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:116
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:46
+msgid "Horizontal align:"
+msgstr "Горизонтальне розташування:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:50
+msgid "Vertical align:"
+msgstr "Вертикальне розташування:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:59
+msgid "Mark Line:"
+msgstr "Розділова лінія:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:66
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:124
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:129
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:144
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:59
+msgid "Tile"
+msgstr "Замістити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:62
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:125
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:140
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:55
+msgid "Left"
+msgstr "Ліворуч"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:56
+msgid "Right"
+msgstr "Праворуч"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:69
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:132
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:147
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:57
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:62
+msgid "Center"
+msgstr "По центрі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:67
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:145
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:60
+msgid "Top"
+msgstr "Зверху"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:131
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:146
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:61
+msgid "Bottom"
+msgstr "Знизу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:149
+msgid "Enable URL highlighting"
+msgstr "Подсвічувати URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:150
+msgid "Use line wrap margin"
+msgstr "Використати лінію для поділу полів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:151
+msgid "Maximum buffer size:"
+msgstr "Максимальний розмір буфера:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:152
+msgid " lines"
+msgstr " рядків"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:153
+msgid "Link tooltip show delay:"
+msgstr "Затримка спливаючих підказок:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:154
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:156
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:306
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:46
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:59
+msgid " msec"
+msgstr " мсек"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:155
+msgid "Link tooltip hide delay:"
+msgstr "Приховувати спливаючу підказку через:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.cpp:157
+msgid "Track last read text line"
+msgstr "Відслідковувати останній прочитаний рядок тексту"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:48
+msgid "NickServ Authentication Rule"
+msgstr "Правило ідентифікації NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:55
+msgid "Registered NickName"
+msgstr "Зареєстрований Нік"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:60
+msgid "Put here the nickname that you have registered with NickServ"
+msgstr "Укажіть тут ніки під якими ви зареєстровані на NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:257
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:277
+msgid "NickServ Mask"
+msgstr "Маска NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:70
+#, c-format
+msgid ""
+"This is the mask that NickServ must match to be correctly identified as the "
+"NickServ service. This usually will be something like <b>NickServ!"
+"[email protected]</b>.<br>You can use wildcards for this field, but "
+"generally it is a security flaw. If you're 100%% sure that NO user on the "
+"network can use the nickname \"NickServ\", the mask <b>NickServ!*@*</b> may "
+"be safe to use in this field."
+msgstr ""
+"Це маска NickServ повинна відповідати правильній масці сервісу ідентифікації "
+"NickServ. Звичайно це щось типу <b>[email protected]</b>."
+"<br>Ви можете використати тут шаблони, але як правило це буде пробіл у "
+"захисті. Якщо ви на 100%% упевнені що ніякий користувач в мережі не може "
+"використати Нік \"NickServ\", маска <b>NickServ!*@*</b> може бути безпечної."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:78
+msgid "Message Regexp"
+msgstr "Повідомлення у вигляді регулярного вираження"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:86
+msgid ""
+"This is the simple regular expression that the identification request "
+"message from NickServ must match in order to be correctly recognized.<br>The "
+"message is usually something like \"To identify yourself please use /ns "
+"IDENTIFY password\" and it is sent when the NickServ wants you to "
+"authenticate yourself. You can use the * and ? wildcards."
+msgstr ""
+"Це просте регулярне вираження, якому повинне відповідати повідомлення запиту "
+"ідентифікації NickServ щоб воно було прийнято<br>Звичайно це щось типу \"To "
+"identify yourself please use /ns IDENTIFY password\", і це NickServ надсилає "
+"тоді, коли хоче щоб ви аутентифікувались. Ви можете використати * і ? у "
+"шаблонах."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:259
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:279
+msgid "Identify Command"
+msgstr "Команда ідентифікації"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:98
+msgid ""
+"This is the command that will be executed when NickServ requests "
+"authentication for the nickname described in this rule (if the both server "
+"and NickServ mask are matched). This usually will be something like <b>msg "
+"NickServ identify &lt;yourpassword&gt;</b>.<br>You can use <b>msg -q</b> if "
+"you don't want the password echoed on the screen. Please note that there is "
+"no leading slash in this command."
+msgstr ""
+"Це команда яка буде виконуватися для запиту аутентификації із зазначеним у "
+"цьому правилі ніком (якщо сервер і маска NickServ збіжаться). Це звичайно що-"
+"те типу<b>msg NickServ identify &lt;ваш пароль&gt;</b>.<br>Ви можете "
+"використати <b>msg -q</b> якщо не хочете щоб пароль виводився на екран. Будь "
+"ласка майте через, що в цій команді немає початкового слеша"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:256
+msgid "Server mask"
+msgstr "Маска сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:117
+msgid ""
+"This is the mask that the current server must match in order for this rule "
+"to apply. It can contain * and ? wildcards.<br>Do NOT use simply \"*\" "
+"here..."
+msgstr ""
+"Це маска, який повинен відповідати сервер, щоб до нього було застосоване "
+"правило. Тут можна використати символи * і ? <br>Не використайте просто \"*"
+"\" тут..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:128
+msgid "Hint: Move the mouse cursor over the fields to get help"
+msgstr ""
+"Натяк: Помістите курсор миші над елементами по яких ви хочете одержати "
+"довідку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:137
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:329
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:809
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:92
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:247
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:261
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:68
+msgid "Cancel"
+msgstr "О&тмена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:142
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:165
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:803
+msgid "OK"
+msgstr "Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:164
+msgid "Invalid NickServ Rule"
+msgstr "Недійсне правило NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:169
+msgid "The Nickname field can't be empty!"
+msgstr "Нік не може бути порожнім!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:175
+msgid "The Nickname field can't contain spaces!"
+msgstr "Нік не може містити пробіли!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:183
+msgid "The NickServ mask can't be empty!<br>You must put at least * there."
+msgstr ""
+"Маска NickServ не може бути порожній!<br>Ви повинні помістити там хоча б *."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:191
+msgid "The Message Regexp can't be empty!<br>You must put at least * there."
+msgstr ""
+"Регулярне вираження не може бути порожнім!<br>Ви повинні помістити там хоча "
+"би *."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:199
+msgid "The Identify Command can't be empty!"
+msgstr "Команда ідентифікації не може бути порожній!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:244
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:265
+msgid "Enable NickServ Identification"
+msgstr "Включити ідентифікацію NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:269
+msgid "This check enables the automatic identification with NickServ"
+msgstr "Ця опція включає автоматичну ідентифікацію на NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:255
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:276
+msgid "Nickname"
+msgstr "Нік"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:258
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:278
+msgid "NickServ Request Mask"
+msgstr "Запит маски NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:265
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on all the networks."
+"<br>Please be aware that this feature can cause your NickServ passwords to "
+"be stolen if used improperly. Make sure that you fully understand the "
+"NickServ authentication protocol.<br>In other words, be sure to know what "
+"you're doing.<br>Also note that the password that you provide is stored as "
+"<b>PLAIN TEXT</b>.<br>KVIrc supports also per-network NickServ "
+"authentication rules that can be created in the \"Advanced...\" network "
+"options (accessible from the servers dialog).</center>"
+msgstr ""
+"<center>Це список правил ідентифікації NickServ. KVIrc буде використати їх "
+"щоб автоматично змоделювати взаємодія з NickServ у всіх мережах.<br>Ви "
+"повинні знати що використання цієї можливості може стати причиною втрати "
+"ваших паролів при неправильному використанні NickServ. Переконаєтеся в тім, "
+"що ви повністю розумієте механізм аутнетифікації по протоколі NickServ."
+"<br>Інакше кажучи, ви повинні знати що ви робите<br>Також майте через, що "
+"пароль зберігається як <b>ЗВИЧАЙНИЙ ТЕКСТ</b>.<br>KVIrc також підтримує "
+"правила аутнетифікації NickServ per-network, які можуть бути створені в "
+"опціях мережі \"Додатково...\" (доступно в діалозі серверів).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:293
+msgid "Add Rule"
+msgstr "Додати правило"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:280
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:298
+msgid "Edit Rule"
+msgstr "Редагувати правило"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.cpp:284
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:302
+msgid "Delete Rule"
+msgstr "Видалити правило"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:31
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:195
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:36
+msgid "Font"
+msgstr "Шрифт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:38
+msgid "Foreground color"
+msgstr "Кольори переднього плану"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:37
+msgid "Background color"
+msgstr "Кольори тла"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.cpp:34
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:44
+msgid "Background image"
+msgstr "Фонове зображення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:40
+msgid "Enable tray icon"
+msgstr "Активувати іконку в треє"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:41
+msgid "Close in tray"
+msgstr "Згортатись в трей при закритті вікна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:42
+msgid "Minimize in tray"
+msgstr "Згортатись в трей при мінімізації вікна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:44
+msgid "Enable tray icon flashing"
+msgstr "Активувати мерехтіння іконки в треє"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:45
+msgid "Enable level-based message notification (not a message-type based)"
+msgstr "Включити порівневе повідомлення (незалежне від типів повідомлень)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:47
+msgid "Select message levels to notify"
+msgstr "Вибрати рівні повідомлення для повідомлень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:49
+msgid "Minimum level for low-priority messages"
+msgstr "Мінімальний рівень для низьких-пріоритетних повідомлень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.cpp:53
+msgid "Minimum level for high-priority message"
+msgstr "Мінімальний рівень для високо-пріоритетних повідомлень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.cpp:40
+msgid ""
+"This section contains irc protection tools<br><p>like<b> flood, ignore, "
+"antispam. </b> </p>"
+msgstr ""
+"Цей розділ містить утиліти захисту в irc мережах<br><p>такі як<b> антіфлуд, "
+"ігнорування, антіспам. </b> </p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:40
+msgid ""
+"<center><b>Settings for CTCP.</b></center><p>The <b>Client-To-Client "
+"Protocol</b> (CTCP) is used to transmit special control messages over an IRC "
+"connection. These messages can request information from clients or negotiate "
+"file transfers.<br><br></p>"
+msgstr ""
+"<center><b>Ця секція містить настроювання CTCP</b></"
+"center><br><br><p><b>Протокол Клієнт - Клієнт</b> (CTCP) використається для "
+"передачі спеціальних повідомлень поверх IRC з'єднання. Ці повідомлення "
+"можуть запитувати інформацію в клієнта а також дозволяють обмінюватися "
+"файлами</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:47
+msgid "CTCP Replies"
+msgstr "CTCP відповіді"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:48
+msgid "Append to VERSION reply:"
+msgstr "Додати до відповіді VERSION:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:52
+msgid ""
+"<center>This text will be appended to the CTCP VERSION reply.<br>For "
+"example, you can place a script name here.</center>"
+msgstr "<center>Цей текст буде доданий до відповіді CTCP VERSION.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:55
+msgid "Append to SOURCE reply:"
+msgstr "Додати до відповіді SOURCE:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:59
+msgid ""
+"<center>This text will be appended to the CTCP SOURCE reply.<br>For example, "
+"you can place the source URL for a script here.</center>"
+msgstr "<center>Цей текст буде доданий до відповіді CTCP SOURCE.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:69
+msgid "PAGE reply:"
+msgstr "Відповідь PAGE:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:73
+msgid ""
+"<center>This is the CTCP PAGE reply.<br>It should contain some sort of "
+"acknowledgement for CTCP PAGE messages.</center>"
+msgstr ""
+"<center>Це відповідь пейджера CTCP.<br>Тут повинна втримуватися інформація "
+"для повідомлень CTCP пейджера.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:76
+msgid "Show the CTCP replies in the active window"
+msgstr "Показувати відповіді CTCP в активному вікні"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.cpp:78
+msgid "Show dialog for CTCP page requests"
+msgstr "Показати діалог CTCP пейджера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:36
+msgid "Use tree taskbar"
+msgstr "Використати дерево панелі завдань"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:37
+msgid "Sort windows by name"
+msgstr "Сортувати вікна по імені"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:38
+msgid "Show window icons in taskbar"
+msgstr "Показувати іконки вікон у панелі завдань"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:39
+msgid "Show activity meter in taskbar"
+msgstr "Показувати індикатор активності"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:41
+msgid ""
+"<center>This option enables the usage of the taskbar activity meter. Each "
+"window entry will have a small indicator of the activity that is going on in "
+"that window. The indicator is a small square that changes colors, dark "
+"colors mean low activity, while bright colors signal high activity. KVIrc "
+"also uses some heuristics to determine whether the activity is somewhat "
+"\"human\" or it is generated by automated entities (such as bots or IRC "
+"servers). \"Human\" activity causes the indicator to be shaded red while "
+"automated activity causes the indicator to be shaded blue.</center>"
+msgstr ""
+"<center>Ця опція включить індикатор активності панелі завдань. Кожне вікно "
+"буде мати невеликий індикатор активності який буде показуватися в цьому "
+"вікні. Індикатор є невеликим квадратиком який змінює кольори, чорні кольори "
+"відповідає низької активності, тоді як яскраві кольори показують високу "
+"активність. KVIrc також використає деяку евристику для визначення того, або "
+"це \"людська\" активність, або щось автоматично генерує (наприклад боти або "
+"IRC сервери). \"Людську\" активність показує індикатор у червоних тонах, а "
+"автоматичну - у сині.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:49
+msgid "Show IRC context indicator in taskbar"
+msgstr "Показувати контекстний індикатор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:50
+msgid "Enable window tooltips"
+msgstr "Показувати спливаючу підказку по вікнах"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:233
+msgid "Text/Alert Colors"
+msgstr "Кольори тексту/попереджень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:82
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:111
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:54
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:125
+msgid "Normal:"
+msgstr "Нормальний:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:83
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:112
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:55
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:126
+msgid "Selected:"
+msgstr "Обраний:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:84
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:236
+msgid "Alert Level 1:"
+msgstr "Рівень попереджень 1:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:85
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:237
+msgid "Alert Level 2:"
+msgstr "Рівень попереджень 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:238
+msgid "Alert Level 3:"
+msgstr "Рівень попереджень 3:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:87
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:239
+msgid "Alert Level 4:"
+msgstr "Рівень попереджень 4:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:88
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:240
+msgid "Alert Level 5:"
+msgstr "Рівень попереджень 5:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:241
+msgid "Progress bar color:"
+msgstr "Кольори смуги прогресу:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:124
+msgid "Background Colors"
+msgstr "Кольори тла"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:212
+msgid "Show header"
+msgstr "Показати заголовок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:214
+msgid "Minimum width:"
+msgstr "Мінімальна ширина:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:215
+msgid "Maximum width:"
+msgstr "Максимальна ширина:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:235
+msgid "Minimized:"
+msgstr "Мінімізований:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:242
+msgid "Minimum width of buttons:"
+msgstr "Мінімальна ширина кнопок:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:244
+msgid "Set maximum button width"
+msgstr "Установити максимальну ширину кнопки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:245
+msgid "Maximum width of buttons:"
+msgstr "Максимальна ширина кнопок:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.cpp:246
+msgid "Use flat buttons"
+msgstr "Використати плоскі кнопки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:96
+msgid "Network Details"
+msgstr "Подробиці про мережі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:110
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:459
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:82
+msgid "Description:"
+msgstr "Опис:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:116
+msgid "<center>Put here a brief description of the network.</center>"
+msgstr "<center>Укажіть тут короткий опис мережі</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:127
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:477
+msgid "Properties"
+msgstr "Властивості"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:130
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:480
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:334
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:123
+msgid "Username:"
+msgstr "Ім'я користувача:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:134
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to servers "
+"on this network.\n"
+"If this field is left empty (most common case), KVIrc will use the default "
+"username specified in the \"Identity\" options tab.</center>"
+msgstr ""
+"<center>Це <b>ім'я користувача</b> яке KVIrc буде використати для входу на "
+"сервера цієї мережі.\n"
+"Якщо це поле залишене порожнім (найбільш загальний випадок), KVIrc буде "
+"використати значення імені за замовчуванням певне в секції \"Ідентифікація\"."
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:139
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:498
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:320
+msgid "Nickname:"
+msgstr "Нік:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:145
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to the servers on this network.<br>If this field is left empty (most "
+"common case), the default nickname (specified in the \"Identity\" settings) "
+"will be used.</center>"
+msgstr ""
+"<center>Ви можете визначити \"спеціальний\" <b>Нік</b> який буде "
+"використатися для ідентифікації на серверах цієї мережі<br>Якщо це поле "
+"залишено порожнім (найбільш загальний випадок), використається значення за "
+"замовчуванням (певне в секції \"Ідентифікація\").</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:149
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:509
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:342
+msgid "Real name:"
+msgstr "Реальне ім'я:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:153
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with the servers on this network.<br>If you leave this field empty "
+"(most common case), the default \"real name\" (specified in the \"Identity\" "
+"settings) will be used.</center>"
+msgstr ""
+"<center>Ви можете визначити \"спеціальне\" <b>реальне ім'я</b> який буде "
+"використатися для ідентифікації на серверах цієї мережі<br>Якщо це поле "
+"залишене порожнім (найбільш загальний випадок), використається значення по "
+"умовчанню (певне в секції \"Ідентифікація\").</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:158
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:644
+msgid "Encoding:"
+msgstr "Кодування:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:164
+msgid ""
+"<center>This box allows you to choose the preferred encoding for the servers "
+"in this network. If you choose \"Use System Encoding\" then the encoding "
+"will be set to the systemwide value that you choose in the \"Encoding\" page "
+"of the options dialog.</center>"
+msgstr ""
+"<center>Тут ви можете вибрати краще кодування для серверів цієї мережі. Якщо "
+"ви виберіть \"Використати кодування системи\", то встановиться "
+"загальносистемне значення певне в секції \"Кодування\"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:173
+msgid "Use System Encoding"
+msgstr "Використати кодування системи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:185
+msgid "Connect to this network at startup"
+msgstr "Підключатися до цієї мережі при запуску програми"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:189
+msgid ""
+"<center>This option will cause KVIrc to automatically connect to this "
+"network at startup</center>"
+msgstr ""
+"<center>Ця опція змусить KVIrc підключатися до цієї IRC мережі при старті</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:79
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:86
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:120
+msgid "General"
+msgstr "Загальні"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:209
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:756
+msgid "Channels to join automatically upon connect:"
+msgstr "Автоматично входити на канали при підключенні:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:211
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to a server in this network has been established. To add a "
+"channel, type its name in the text input below and click \"<b>Add</b>\".</"
+"center>"
+msgstr ""
+"<center>Тут ви можете визначити список каналів для автоматичного входу після "
+"підключення до сервера. Для того щоб додати канал впишіть його ім'я в "
+"текстове поле й натисніть кнопку<b>Додати</b>\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:217
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:764
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:62
+msgid "Join Channels"
+msgstr "Входити на канали"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:228
+msgid ""
+"<center>The following commands will be executed after a connection to a "
+"server in this network has been established.<br><b>Important:</b> Enter "
+"commands <b>without</b> a preceding slash (e.g. <tt>quote pass secret</tt> "
+"instead of <tt>/quote pass secret</tt>).<br>KVIrc will first send the USER "
+"command, then eventually PASS and NICK and then execute this command "
+"sequence.</center>"
+msgstr ""
+"<center>Наступні команди будуть виконані після підключення до сервера мережі."
+"<br><b>Важливо:</b> Уводите команди <b>без</b> початкового слеша (наприклад "
+"<tt>quote pass secret</tt> замість <tt>/quote pass secret</tt>).<br>KVIrc "
+"спочатку посилає команду USER, потім PASS і NICK і тільки після цього "
+"виконає ці команди</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:234
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:782
+msgid "On Connect"
+msgstr "При підключенні"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:249
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"a server in this network.<br><b>Important:</b> Enter commands <b>without</b> "
+"a preceding slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote "
+"privatelog</tt>).<br>This is useful for automatically opening queries, "
+"setting variables, etc.</center>"
+msgstr ""
+"<center>Наступні команди будуть виконані після успішного входу на сервер "
+"мережі<br><b>Важливо:</b> Уводите команди <b>без</b> початкового слеша "
+"(наприклад <tt>quote privatelog</tt> замість <tt>/quote privatelog</tt>)."
+"<br>Це корисно щоб автоматично відкривати вікна приватів, установлювати "
+"змінні, і т.п.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:254
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:801
+msgid "On Login"
+msgstr "При вході"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:285
+msgid ""
+"<center>This is a list of NickServ identification rules. KVIrc will use them "
+"to model its automatic interaction with NickServ on this network.<br>Please "
+"be aware that this feature can cause your NickServ passwords to be stolen if "
+"used improperly. Make sure that you fully understand the NickServ "
+"authentication protocol.<br>In other words, be sure to know what you're "
+"doing.<br>Also note that the password that you provide is stored as <b>PLAIN "
+"TEXT</b>.</center>"
+msgstr ""
+"<center>Це список правил ідентифікації NickServ. KVIrc буде використати їх "
+"щоб автоматично змоделювати взаємодія NickServ.<br>Ви повинні знати що "
+"використання цієї можливості може стати причиною втрати ваших паролів при "
+"неправильному використанні NickServ. Переконаєтеся в тім, що ви повністю "
+"розумієте механізм аутнетифікації по протоколі NickServ.<br>Інакше кажучи, "
+"ви повинні знати що ви робите<br>Також майте через, що пароль зберігається "
+"як <b>ЗВИЧАЙНИЙ ТЕКСТ</b>.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:321
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:35
+msgid "NickServ"
+msgstr "NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:323
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:241
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:248
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:60
+msgid "&OK"
+msgstr "&Ok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:449
+msgid "Server Details"
+msgstr "Подробиці про сервер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:465
+msgid ""
+"<center>This is a brief description of this server. This field has no "
+"restrictions but many server lists use it to describe the server's physical "
+"location</center>"
+msgstr ""
+"<center>Цей короткий опис сервера. Ви можете писати тут що завгодно, але "
+"звичайно це поле використається для вказівки фізичного розташування сервера</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:484
+msgid ""
+"<center>This is the <b>username</b> that KVIrc will use to login to this "
+"server.\n"
+"If this field is left empty (most common case), KVIrc will first look if an "
+"username is specified for the network that this server belongs to, and if "
+"that is empty then KVIrc will use the default username specified in the "
+"\"Identity\" options tab.</center>"
+msgstr ""
+"<center>Це <b>ім'я користувачів</b> KVIrc буде використати для входу на цей "
+"сервер.\n"
+"Якщо це поле залишене порожнім (найбільш загальний випадок), KVIrc спочатку "
+"спробує знайти ім'я задане для мережі до якої належить цей сервер, а якщо й "
+"це поле порожнє, то буде використатися ім'я користувача, задане в секції "
+"\"Ідентифікація\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:490
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:127
+msgid "Password:"
+msgstr "Пароль:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:495
+msgid ""
+"<center>If this server requires a password, put it in this field, otherwise "
+"leave it empty.</center>"
+msgstr ""
+"<center>Якщо сервер вимагає пароль, укажіть його в цьому полі. У противному "
+"випадку залишіть поле порожнім</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:504
+msgid ""
+"<center>You can specify a \"special\" <b>nickname</b> that will be used to "
+"log in to this server.<br>If this field is left empty (most common case), "
+"KVIrc will first look if a nickname is specified for the network that this "
+"server belongs to, and if that is empty then the default nickname (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center>Ви можете визначити \"спеціальний\" <b>Нік</b> який буде "
+"використатися для входу на на цей сервер<br>Якщо це поле залишене порожнім "
+"(найбільш загальний випадок), KVIrc спочатку спробує знайти Нік заданий для "
+"мережі до якої належить цей сервер, а якщо й це поле порожнє, те буде "
+"використатися Нік, заданий у секції \"Ідентифікація\"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:513
+msgid ""
+"<center>You can specify a \"special\" <b>real name</b> that will be used to "
+"login with this server.<br>If you leave this field empty (most common case), "
+"KVIrc will first look if a real name is specified for the network that this "
+"server belongs to, and if that is empty the default \"real name\" (specified "
+"in the \"Identity\" settings) will be used.</center>"
+msgstr ""
+"<center>Ви можете визначити \"спеціальне\" <b>реальне ім'я</b> яке буде "
+"використатися при входу на на цьому сервер<br>Якщо це поле залишене порожнім "
+"(найбільш загальний випадок), KVIrc спочатку спробує знайти реальне ім'я "
+"задане для мережі до якої належить цей сервер, а якщо й це поле порожнє, то "
+"буде використатися реальне ім'я, задане в секції \"Ідентифікація\"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:517
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:683
+msgid "User Mode"
+msgstr "Режим користувача"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:520
+msgid "Use default user mode"
+msgstr "Використати режими за замовчуванням"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:522
+msgid ""
+"<center>If this is enabled, the global initial <b>user mode</b> (configured "
+"from the identity dialog) will be used. If disabled, you can configure an "
+"initial user mode for this server"
+msgstr ""
+"<center>Якщо включено цю опцію, буде використаний глобальний вихідний "
+"<b>режим користувача</b> (сконфігурований у діалозі ідентифікації) Якщо це "
+"виключено, ви зможете сконфігурувати режими користувача для цього сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:530
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:684
+msgid "Invisible (+i)"
+msgstr "Невидимий (+i)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:534
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:685
+msgid "Server notices (+s)"
+msgstr "Повідомлення сервера (+s)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:538
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:686
+msgid "Wallops (+w)"
+msgstr "Wallops (+w)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:548
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:60
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:104
+msgid "Identity"
+msgstr "Ідентифікація"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:555
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:115
+msgid "Port:"
+msgstr "Порт:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:565
+msgid ""
+"<center>This is the default <b>port</b> that this server will be contacted "
+"on.<br>Usually <b>6667</b> is OK.</center>"
+msgstr ""
+"<center>Це <b>порт</b> сервера який буде використатися за замовчуванням для "
+"підключення<br>Звичайно використається <b>6667</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:571
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:119
+msgid "IP address:"
+msgstr "IP адреса:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:576
+msgid ""
+"<center>This is the <b>IP address</b> of this server, it is here for caching "
+"purposes.<br>If you leave this field empty, KVIrc will fill it in the first "
+"time it connects to the server. If you enable the \"cache IP address\" "
+"option below, KVIrc will use it as a \"cached result\" and avoid looking it "
+"up again.</center>"
+msgstr ""
+"<center>Це <b>IP адреса</b> цього сервера, що буде кешироватись.<br>Якщо ви "
+"залишите це поле порожнім, KVIrc заповнить його при першому підключенні до "
+"сервера. Якщо ви включите нижче опцію \"Кешировати IP адреса\", KVIrc буде "
+"використати це значення як \"результат кешировання\" і по можливості не буде "
+"шукати його знову. </center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:596
+msgid "Cache IP address"
+msgstr "Кеширувати IP адреса"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:599
+msgid ""
+"<center>This check will enable <b>IP address caching</b> for this server:"
+"<br>DNS lookups can be time-consuming and might be blocking on some "
+"platforms; this option will cause KVIrc to look up the server hostname only "
+"once.<br><br> Advanced: you can also use this option to force a certain "
+"server name to resolve to a fixed ip address when either the dns for that "
+"server is temporairly unreachable or you want to avoid the round-robin "
+"lookups.</center>"
+msgstr ""
+"<center>Ця опція включить <b>кеширование IP адреси</b> для цього сервера."
+"<br>Пошук DNS може бути досить ресурсойомким і навіть блокувати деякі "
+"платформи; ця опція змусить KVIrc шукати сервер тільки один раз<br><br> "
+"Додатково: ви можете також використати цю опцію, щоб форсувати разименування "
+"сервера у фіксований IP адреса коли DNS цього сервера тимчасово не доступний "
+"або ви хочете уникнути зациклення пошуку</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:609
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:140
+msgid "Use IPv6 protocol"
+msgstr "Використати IPv6 протокол"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:619
+msgid ""
+"<center>This check identifies IPv6 servers.<br>If enabled, KVIrc will "
+"attempt to use the IPv6 protocol (thus your OS <b>must</b> have a working "
+"IPv6 stack and you <b>must</b> have an IPv6 connection).</center>"
+msgstr ""
+"<center>Це опція ідентифікації на IPv6 серверах<br>Якщо включено, KVIrc "
+"спробує використати IPv6 протокол (ваша ОС також <b>повинна</b> мати "
+"підтримку роботи з IPv6 стеком і ви <b>повинні</b> мати IPv6 з'єднання).</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:624
+msgid "Use SSL protocol"
+msgstr "Використати SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:627
+msgid ""
+"<center>This check will cause the connection to use the <b>Secure Socket "
+"Layer</b> encryption support. Obviously, this server must have support for "
+"this, too. :)</center>"
+msgstr ""
+"<center>Ця опція включить при з'єднанні підтримку шифрування <b>SSL</b>. "
+"Очевидно що й сервер повинен мати таку підтримку :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:636
+msgid "Connect to this server at startup"
+msgstr "Підключатися до цього сервера при старті"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:641
+msgid ""
+"<center>This option will cause KVIrc to connect to the IRC server when it is "
+"started.</center>"
+msgstr ""
+"<center>Ця опція змусить KVIrc підключатися до цьому IRC серверу при старті."
+"</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:650
+msgid ""
+"<center>This box allows you to choose the preferred encoding for this sever. "
+"If you choose \"Use Network Encoding\" then the encoding will be inherited "
+"from the network that this server belongs to.</center>"
+msgstr ""
+"<center>Тут ви можете вказати краще кодування для цього сервера. Якщо ви "
+"виберіть \"Використати кодування мережі\", то унаслідується кодування задана "
+"для мережі, до якого належить цей сервер</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:659
+msgid "Use Network Encoding"
+msgstr "Використати кодування мережі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:672
+msgid "Link filter:"
+msgstr "Фільтр посилання:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:701
+msgid ""
+"<center>This field specifies the name of a module that exports a link filter "
+"for this type of server.<br>For plain IRC connections, you don't need any "
+"link filters; this is used for incompatible protocols.</center>"
+msgstr ""
+"<center>Це поле визначає ім'я модуля який експортує фільтр посилання для "
+"цього типу сервера<br>Для звичайних IRC з'єднань вам не потрібні ніякі "
+"фільтри, це використається для несумісних протоколів</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:705
+msgid "Id:"
+msgstr "Id:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:713
+msgid ""
+"<center>This field allows you to specify a really unique id for this server. "
+"You will then be able to use /server -x &lt;this_id&gt; to make the "
+"connection. This is especially useful when you have multiple server entries "
+"with the same hostname and port in different networks (bouncers?)</center>"
+msgstr ""
+"<center>Тут Ви можете визначити дійсно унікальний id для цього сервера. Це "
+"дасть можливість використати /server -x &lt;цей_id&gt; , щоб підключитися. "
+"Це особливо корисно, коли Ви маєте багаторазові підключення до сервера з тим "
+"же самим ім'ям хоста й портом у різних мережах (bouncers?)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:719
+msgid "Proxy server:"
+msgstr "Проксі сервер:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:724
+msgid ""
+"<center>This is the <b>proxy</b> that KVIrc will use to connect to thos "
+"server.\n"
+"If this field is set in \"Default\" KVirc will use global proxy settings, if "
+"it is set in \"Direct connection\" KVirc will connect to this server without "
+"proxy. You can define new proxy server in global options' \"Proxy servers\" "
+"menu.</center>"
+msgstr ""
+"<center>Це <b>Проксі</b> який KVIrc буде використати для підключення до "
+"цьому серверу.\n"
+"Якщо ця область буде встановлена в значення \"За замовчуванням \" те KVirc "
+"буде використати глобальні настроювання, якщо це буде встановлене в \"Пряме "
+"підключення\" те KVirc з'єднається із цим сервером без Проксі. Ви можете "
+"визначити новий Проксі-сервер у глобальних опціях меню \"Проксі сервери\".</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:729
+msgid "Default"
+msgstr "За замовчуванням"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:730
+msgid "Direct connection"
+msgstr "Пряме підключення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:746
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:28
+msgid "Connection"
+msgstr "З'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:758
+msgid ""
+"<center>Here you can set a list of channels to be joined automatically after "
+"a connection to this server has been established. To add a channel, type its "
+"name in the text input below and click \"<b>Add</b>\".</center>"
+msgstr ""
+"<center>Тут ви можете визначити список каналів на які ви будете автоматично "
+"входити після того як буде встановлений зв'язок із сервером. Для додавання "
+"каналу введіть його ім'я в текстовому полі внизу й натисніть кнопку "
+"\"<b>Додати</b>\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:776
+msgid ""
+"<center>The following commands will be executed after a connection has been "
+"established.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote pass secret</tt> instead of <tt>/quote pass secret</"
+"tt>).<br>KVIrc will first send the USER command, then eventually PASS and "
+"NICK and then execute this command sequence.<br>This is particularly useful "
+"for IRC bouncers that require login commands.</center>"
+msgstr ""
+"<center>Зазначені команди будуть виконані після встановлення з'єднання."
+"<br><b>Важливо:</b> Уводите команди <b>без</b> попереднього слеша (наприклад "
+"<tt>quote pass secret</tt> замість <tt>/quote pass secret</tt>).<br>KVIrc "
+"спочатку посилає команду USER, потім PASS і NICK і тільки після цього "
+"виконає зазначені команди<br>Це особливо корисно для IRC баунсеров, які "
+"вимагають виконання команд при вході</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:796
+msgid ""
+"<center>The following commands will be executed after a successful login to "
+"this server.<br><b>Important:</b> Enter commands <b>without</b> a preceding "
+"slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote privatelog</tt>)."
+"<br>This is useful for automatically opening queries, setting variables, etc."
+"</center>"
+msgstr ""
+"<center>Зазначені команди будуть виконані після вдалого входу на цей "
+"сервер<br><b>Важливо:</b> Уводите команди <b>без</b> попереднього слеша "
+"(наприклад <tt>quote privatelog</tt> замість <tt>/quote privatelog</tt>)."
+"<br>Це корисно для автоматичного відкриття вікон приватів, установки значень "
+"змінних і т.п.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1041
+msgid "Server"
+msgstr "Сервер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1042
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:73
+msgid "Description"
+msgstr "Опис"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1054
+msgid ""
+"<center>This is the list of available IRC servers.<br>Right-click on the "
+"list to add or remove servers and perform other actions.<br>Double-click on "
+"a item for advanced options.</center>"
+msgstr ""
+"<center>Це список доступних IRC серверів<br>Клацніть правої на списку для "
+"додавання, видалення серверів і виконання інших операцій<br>Подвійний клич "
+"на пункті - для виклику додаткових опцій</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1069
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1430
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1554
+msgid "New Network"
+msgstr "Нова мережа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1077
+msgid "New Server"
+msgstr "Новий сервер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1086
+msgid "Remove Network/Server"
+msgstr "Видалити мережа/сервер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1098
+msgid "Copy Server"
+msgstr "Копіювати сервер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1107
+msgid "Paste Server"
+msgstr "Вставити сервер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1446
+msgid "Import List"
+msgstr "Імпортувати список"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1125
+msgid "Active Configuration"
+msgstr "Поточна конфігурація"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1126
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1332
+msgid "Server:"
+msgstr "Сервер:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1130
+msgid ""
+"<center>This is the name of the currently selected server or network</center>"
+msgstr "<center>Це ім'я поточного обраного сервера або мережі</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1153
+msgid "Advanced..."
+msgstr "Додатково..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1156
+msgid "<center>Click here to edit advanced options for this entry</center>"
+msgstr "<center>Кликніть тут для редагування додаткових опцій</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1159
+msgid "Connect &Now"
+msgstr "Підключитися &зараз"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1164
+msgid ""
+"<center>Hit this button to connect to the currently selected server.</center>"
+msgstr ""
+"<center>Натисніть на цю кнопку для підключення до обраного сервера</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1177
+msgid ""
+"<center>This button shows a list of recently used servers. It allows you to "
+"quickly find them in the list.</center>"
+msgstr ""
+"<center>Ця кнопка покаже список недавно, що використалися серверів. Вона "
+"дозволить вам швидко знаходити їх в списку.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1181
+msgid "Show this dialog at startup"
+msgstr "Показати цей діалог при старті"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1184
+msgid ""
+"<center>If this option is enabled, the Servers dialog will appear every time "
+"you start KVIrc</center>"
+msgstr ""
+"<center>Якщо включено цю опцію, діалог Серверів з'являється при кожному "
+"запуску KVIrc</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1335
+msgid "Network:"
+msgstr "Мережа:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1345
+msgid "No selection"
+msgstr "Не обрано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1364
+msgid "UnknownNet"
+msgstr "Невідома Мережа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1431
+msgid "Remove Network"
+msgstr "Видалити мережа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1434
+msgid "&New Server"
+msgstr "&Новий сервер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1435
+msgid "Re&move Server"
+msgstr "Уда&лити сервер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1437
+msgid "&Copy Server"
+msgstr "&Копіювати сервер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1439
+msgid "&Paste Server"
+msgstr "&Вставити сервер"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1444
+msgid "Clear List"
+msgstr "Очистити список"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1483
+msgid ""
+"Oops... something weird happened:<br>Can't find any module capable of "
+"importing servers."
+msgstr ""
+"Упс... відбулося щось дивне:<br>Не можу знайти жодного модуля здатного "
+"імпортувати сервера."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1500
+msgid ""
+"Oops... something weird happened:<br>Can't find the module that was capable "
+"of this import action. :("
+msgstr ""
+"Упс... відбулося щось дивне:<br>Не можу знайти жодного модуля здатного "
+"імпортувати дія. :("
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.cpp:1574
+msgid "irc.unknown.net"
+msgstr "irc.сервер.net"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:39
+msgid "Disable parser warnings"
+msgstr "Виключити попередження синтаксичного аналізатора"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:40
+msgid "Disable broken event handlers"
+msgstr "Виключити биті оброблювачі подій"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:41
+msgid "Kill broken timers"
+msgstr "Убити биті таймери"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:42
+msgid "Send unknown commands as /RAW"
+msgstr "Посилати невідомі команди як /RAW"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:46
+msgid "Automatically unload unused modules"
+msgstr "Автоматично вивантажувати невикористовувані модулі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:47
+msgid "Ignore module versions (dangerous)"
+msgstr "Ігнорувати версії модулів (небезпечно!)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:51
+msgid "Relay errors and warnings to debug window"
+msgstr "Записувати помилки й попередження в отладочне вікно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.cpp:52
+msgid "Create minimized debug window"
+msgstr "Створити згорнуте вікно налагодження"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:59
+msgid "Nickname alternatives"
+msgstr "Альтернативні ніки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:62
+msgid ""
+"<center>Here you can choose up to three nicknames alternative to the primary "
+"one. KVIrc will use the alternatives if the primary nick is already used by "
+"someone else on a particular IRC network.</center>"
+msgstr ""
+"<center>Тут ви можете вибрати до трьох альтернативних ніків. KVIrc буде їх "
+"використати, якщо первинний Нік уже зайнятий</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:69
+msgid "Alt. Nickname 1:"
+msgstr "Альтернативний Нік 1:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:76
+msgid "Alt. Nickname 2:"
+msgstr "Альтернативний Нік 2:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:83
+msgid "Alt. Nickname 3:"
+msgstr "Альтернативний Нік 3:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:96
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Ok"
+msgstr "Ок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:130
+msgid "Avatar Download - KVIrc"
+msgstr "Завантаження аватара - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:136
+msgid "<center>Please wait while the avatar is being downloaded</center>"
+msgstr "<center>Будь ласка почекайте поки завантажиться аватар</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:139
+msgid "Abort"
+msgstr "Перервати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:170
+msgid "Failed to start the download"
+msgstr "Не вдалося запустити завантаження"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:184
+msgid "Download aborted by user"
+msgstr "Завантаження перерване користувачем"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:213
+msgid "Choose Avatar - KVIrc"
+msgstr "Вибір аватара - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:219
+msgid ""
+"Please select an avatar image. The full path to a local file or an image on "
+"the Web can be used.<br>If you wish to use a local image file, click the "
+"\"<b>Browse</b>\"button to browse local folders.<br>The full URL for an "
+"image (including <b>http://</b>) can be entered manually."
+msgstr ""
+"Будь ласка виберіть картинку аватара. Це може бути повний шлях до локальному "
+"файлу або Web-адреса<br>Якщо ви хочете використати локальний файл, клацніть "
+"по кнопці \"<b>Вибрати</b>\" щоб переглянути локальні каталоги<br>Повний URL "
+"картинки (включаючи <b>http://</b>) можна ввести вручну."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:237
+msgid "&Browse..."
+msgstr "&Вибрати..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:275
+msgid "Choose an Image File - KVIrc"
+msgstr "Виберіть файл картинки - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:316
+msgid "Basic Properties"
+msgstr "Основні настроювання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:323
+msgid ""
+"<center>Your <b>nickname</b> is your primary form of identification on IRC."
+"<br>Since servers cannot accept multiple users sharing the same nickname "
+"(case insensitive), you can provide alternative nicknames to be used in "
+"casethe server refuses to accept the default one.</center>"
+msgstr ""
+"<center>Ваш <b>Нік</b> є первинною формою ідентифікації в IRC.<br>Оскільки "
+"сервера не можуть прийняти декількох користувачів, використовуючих той самий "
+"Нік (без обліку регістра), ви можете задати альтернативні нікі, які будуть "
+"використатися якщо сервер не зможе прийняти основний Нік</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:331
+msgid "Alternatives..."
+msgstr "Альтернативи..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:337
+msgid ""
+"<center>This is the <b>username</b> that you will use to connect to the "
+"server.<br>In the past, it was used as a form of authentication, but it "
+"normally has no special use now.<br>In addition to your nickname, you are "
+"identified on IRC by your <b>username@hostname</b>.</br>Basically, you can "
+"enter any word you like here. :D</center>"
+msgstr ""
+"<center>Це <b>ім'я користувача</b> яке буде використатися для підключення до "
+"сервера<br>Раніше використалася як форма аутнетифікації, але зараз звичайно "
+"для цього не застосовується<br>На додаток до своєму нику ви ідентифікуєтеся "
+"в IRC як <b>ім’якористувача@хост</b>.</br>Ви можете увести тут будь-яке "
+"слово яке вам сподобається :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:346
+msgid ""
+"<center>This text will appear when someone does a /WHOIS on you.<br>It is "
+"intended to be your real name, but people tend to put random quotes and "
+"phrases here too.</center>"
+msgstr ""
+"<center>Цей текст з'явиться коли хтось виконає /WHOIS на вас<br>Це повинне "
+"бути ваше реальне ім'я, але люди звичайно поміщають тут довільні фрази</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:351
+msgid ""
+"This field is optional and will appear as part of the CTCP USERINFO reply."
+msgstr ""
+"Це поле не обов'язково, воно буде відображатися в інформації, що повертає з "
+"допомогою CTCP USERINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:356
+msgid "Profile"
+msgstr "Профіль"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:361
+msgid "Age:"
+msgstr "Вік:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:366
+msgid "Here you can specify your age."
+msgstr "Тут ви можете вказати свій вік"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:370
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:401
+msgid "Unspecified"
+msgstr "Не задано"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:391
+msgid "Gender:"
+msgstr "Стать:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:396
+msgid "Here you can specify your gender."
+msgstr "Тут ви можете вказати свою стать."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:402
+msgid "Female"
+msgstr "Жіночий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:403
+msgid "Male"
+msgstr "Чоловічий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:414
+msgid "Location:"
+msgstr "Розташування:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:417
+msgid ""
+"You can describe here your approximate physical location. Something like "
+"\"Region, Country\" will be ok. Please note that this information will be "
+"viewable by anyone so putting more data (like the exact address), generally, "
+"<b>is not a good idea</b>."
+msgstr ""
+"Тут ви можете описати своє зразкове географічне місце розташування. Що-"
+"небудь у роді \"Регіон, Країна\". Помнете, що ця інформація може бути "
+"переглянута ким завгодно й не варто вказувати інформацію, що ви не хочете "
+"про себе розповідати (наприклад точна адреса)."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:422
+msgid "Languages:"
+msgstr "Мови:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:425
+msgid ""
+"You can put here the short names of the languages you can speak. An example "
+"might be \"EN,IT\" that would mean that you speak both Italian and English."
+msgstr ""
+"Ви можете тут указати короткі назви мов, на яких ви можете розмовляти. "
+"Наприклад \"RU,EN\" буде значити що ви можете говорити на російському й "
+"англійському."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:429
+msgid "Other:"
+msgstr "Додаткова інформація:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:432
+msgid ""
+"You can put here some additional personal data. It might be a funny quote or "
+"your homepage url... Please note that this information will be viewable by "
+"anyone so <b>don't put any sensible data</b> (passwords, telephone or credit "
+"card numbers)."
+msgstr ""
+"Тут ви можете вказати додаткові відомості про себе. Це може бути смішна "
+"цитата або адреса домашньої сторінки... Помнете, що ця інформація "
+"загальнодоступна, <b>не вказуйте ніяких персональних даних, які не повинні "
+"бути доступні привселюдно</b> (паролі, номери телефонів або кредитних карт)."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:502
+msgid ""
+"Here you can choose your avatar image. It will be visible<br>by other people "
+"that request it. Choose a nice image of yourself,<br>possibly avoiding "
+"obscenity and offending images. It is a good idea<br>to choose a relatively "
+"small file (say 150 Kb max) because<br>most clients have a limit on the size "
+"of avatars being downloaded.<br>The image also should be smaller than "
+"800x600 pixels since<br>it will have to be viewable in everyone's monitor."
+msgstr ""
+"Тут ви можете вибрати свій аватар. Він буде видний іншим людям <br>. "
+"Виберіть зображення, що характеризує вас, <br> уникаючи зображень, які "
+"можуть викликати негативні емоції у ваших співрозмовників. Не забувайте <br> "
+"про розмірі зображень. Не вибирайте <br> картинок з розміром більш ніж 150 "
+"кілобайт, тому що більшість вилучених користувачів мають обмеження на розмір "
+"що завантажує <br> файлу, і вони не стануть використати запропоноване вами "
+"зображення. <br> Уникайте також більших розмірів картинки у висоту й ширину. "
+"помнете, що не в усіх є великий монітор."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:511
+msgid "Use avatar"
+msgstr "Використати аватар"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:537
+msgid "Choose..."
+msgstr "Вибрати..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:598
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:637
+msgid "Failed to Load Avatar - KVIrc"
+msgstr "Неможливо завантажити аватар - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:599
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:638
+msgid ""
+"Failed to load the avatar image.<br>It may be an unaccessible file or an "
+"unsupported image format."
+msgstr ""
+"Не можу завантажити малюнок аватара<br>Файл може бути не доступний або це не "
+"підтримуваний формат картинки."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:606
+msgid "Failed to download the avatar image.<br><b>%Q</b>"
+msgstr "Неможливо завантажити аватар.<br><b>%Q</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:608
+msgid "Avatar Download Failed - KVIrc"
+msgstr "Помилка завантаження аватара - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:649
+msgid "Avatar Might Be Too Big - KVIrc"
+msgstr "Аватар занадто великий - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:650
+msgid ""
+"The avatar you have choosen is bigger than 1024x768 pixels.<br>Such a big "
+"image will not be seen on all the user monitors<br>and will probably be "
+"scaled by the remote clients with poor quality<br>algorithms to improve "
+"performance. You *should* scale it manually<br>to a sane size (like 800x600) "
+"or choose a different image."
+msgstr ""
+"Обраний вами аватар більше чим 1024х768 пикселей. <br>Такі більші аватары не "
+"зможуть бути показані на всіх моніторах <br> і, можливо, будуть зменшені "
+"вилученим користувачем із втратою якості <br> і швидкості відображення "
+"картинки. Ви повинні зменшити його вручну або вибрати інше зображення."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:688
+msgid "Default Messages"
+msgstr "Повідомлення при виході"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:691
+msgid "Part message:"
+msgstr "При виході з каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:695
+msgid ""
+"<center>This is the default part message that will be used when you<br>leave "
+"a channel by closing a channel window.</center>"
+msgstr ""
+"<center>Це повідомлення за замовчуванням при покиданні каналу,<br>яке буде "
+"виводитися в канал при закритті вікна каналу</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:699
+msgid "Quit message:"
+msgstr "При виході з мережі:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.cpp:702
+msgid ""
+"<center>This is the default quit message that will be used when you<br>quit "
+"your IRC session by closing the console window or disconnecting by pressing "
+"the disconnect button.</center>"
+msgstr ""
+"<center>Це повідомлення про вихід за замовчуванням яке буде використатися "
+"коли ви<br>виходите з IRC сесії закриваючи консольне вікно або нажавши "
+"кнопку Роз'єднатися</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:42
+msgid "Open Query For"
+msgstr "Відкривати окремі вікна для"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:40
+msgid "Private messages"
+msgstr "Приватних повідомлень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:46
+msgid ""
+"<center>This option enables query window creation when a private message "
+"(PRIVMSG) is received.<br>If you disable this, private messages will be "
+"shown in the active window or a common channel.</center>"
+msgstr ""
+"<center>Ця опція включить створення окремого вікна при одержанні приватного "
+"повідомлення (PRIVMSG). Якщо це виключити, приватні повідомлення будуть "
+"виводитися в активне вікно або загальний канал</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:42
+msgid "Private notices"
+msgstr "Приватних повідомлень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:55
+msgid ""
+"<center>This option enables query window creation when a private notice "
+"(NOTICE) is received.<br>If you disable this, private notices will be shown "
+"in the active window or a common channel.</center>"
+msgstr ""
+"<center>Ця опція включить створення окремого вікна при одержанні приватного "
+"повідомлення (NOTICE).<br>Якщо це виключити, приватні повідомлення будуть "
+"виводитися в активне вікно або загальний канал</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:62
+msgid "Always open queries as minimized"
+msgstr "Завжди відкривати привати згорнутими"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:66
+msgid ""
+"<center>This option causes newly created query windows to be immediately "
+"minimized.<br>Enable this if you don't like queries popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+"<center>Ця опція змусить негайно мінімізувати знову створене вікно привата."
+"<br>Включите цю опцію якщо вам не подобаються вікна, що вискакують, приватів "
+"коли ви друкуєте щось у каналі. :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:74
+msgid "Enable target user tracking"
+msgstr "Включити трасування користувача"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:77
+msgid ""
+"<center>This option will enable target user tracking.<br>Some actions of the "
+"target user (e.g. joins and parts) will be displayed in the window.<br></"
+"center>"
+msgstr ""
+"<center>Ця опція включить трасування користувача<br> Які-небудь дії "
+"користувача (наприклад вхід, вихід на канал) будуть відображатися вокне."
+"<br></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:83
+msgid "Flash system taskbar on new query message"
+msgstr "Подсвечувать системну панель завдань при нових приватних повідомленнях"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:86
+msgid ""
+"<center>This option causes the system taskbar entry for KVIrc to flash when "
+"a new query message is received and the KVIrc window is not the active.</"
+"center>"
+msgstr ""
+"<center>Ця опція змусить подсвечуваться пункт KVIrc у системній панелі "
+"завдань при надходженні нових приватних повідомлень коли вікно KVIrc не "
+"активно.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:91
+msgid "Popup notifier on new query message"
+msgstr "Спливаюче вікно извещателя при нових приватних повідомленнях"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:94
+msgid ""
+"<center>This option causes a small notifier window to pop up in the low "
+"right corner of the screen when a new message is received and the KVIrc "
+"window is not active.</center>"
+msgstr ""
+"<center>Ця опція змусить виводити невелике вікно в правому нижньому куті "
+"екрана при одержанні нових повідомлень і якщо вікно KVIrc не активно.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:98
+msgid "Show information about query target at the top of the query"
+msgstr "Показувати інформацію про співрозмовника у верхній частині вікна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.cpp:101
+msgid ""
+"<center>This option enables query window information label. It can show you "
+"known information about query target at the top of the window.<br>Uncheck if "
+"you think,that it wastes your query space/</center>"
+msgstr ""
+"<center>Якщо включено ця опциф, те KVirc буде показувати відому йому "
+"информаціюю о співрозмовнику у верхній частині вікна привата.<br>Не "
+"використайте цю опцію якщо вважаєте що дана інформація марна й тільки займає "
+"місце</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:39
+msgid "Use global application font"
+msgstr "Використати глобальний шрифт додатка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:40
+msgid "Hide icons in Popup"
+msgstr "Сховати іконки в спливаючому меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:41
+msgid "Global application font:"
+msgstr "Глобальний шрифт:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:67
+msgid "Enable fake transparency"
+msgstr "Включити імітацію напівпрозорості"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:71
+msgid ""
+"<center>This option makes all KVIrc windows look transparent.<br>You must "
+"choose a blending background image to below or check the \"Use KDE desktop "
+"for transparency\" option.</center>"
+msgstr ""
+"<center>Ця опція робить всі вікна KVIrc напівпрозорими<br>Ви повинні вибрати "
+"зображення, що підміли нижче до заднього плану, або включити опцію "
+"\"Використати десктоп KDE для напівпрозорості\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:77
+msgid ""
+"<center>This option makes all KVIrc windows look like transparent.<br>You "
+"must choose a blending background image to below.</center>"
+msgstr ""
+"<center>Ця опція робить всі вікна KVIrc схожими на напівпрозорі<br>Ви "
+"повинні вибрати зображення, що підміли нижче до заднього плану</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:83
+msgid "Child window opacity:"
+msgstr "Затемненность дочірніх вікон:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:87
+msgid "Parent window opacity:"
+msgstr "Затемненность батьківських вікон:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:91
+msgid "Blend color:"
+msgstr "Підміли цвет, що:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:97
+msgid "Use KDE desktop for transparency"
+msgstr "Використати десктоп КДЕ для напівпрозорості"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:102
+msgid "Keep in sync with KDE background changes"
+msgstr "Синхронізувати зі змінами тла робочого стола КДЕ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:105
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:111
+msgid "Transparency blend image:"
+msgstr "Підміли изображение, що:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:155
+msgid "Active Background"
+msgstr "Активне тло"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:156
+msgid "Inactive Background"
+msgstr "Неактивне тло"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:157
+msgid "Active Text (Primary)"
+msgstr "Активний текст (первинний)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:158
+msgid "Active Text (Secondary)"
+msgstr "Активний текст (вторинний)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:159
+msgid "Inactive Text (Primary)"
+msgstr "Неактивний текст (первинний)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:160
+msgid "Inactive Text (Secondary)"
+msgstr "Неактивний текст (вторинний)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:177
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:197
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:78
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:44
+msgid "Background"
+msgstr "Тло"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:178
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:205
+msgid "Background Image"
+msgstr "Фонове зображення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:198
+msgid "Low-Contrast Foreground"
+msgstr "Низький-контрастний передній план"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:199
+msgid "Mid-Contrast Foreground"
+msgstr "Середньо-контрастний передній план"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:200
+msgid "Active High-Contrast Foreground (Primary)"
+msgstr "Активний високо-контрастний передній план (первинний)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:201
+msgid "Active High-Contrast Foreground (Secondary)"
+msgstr "Активний високо-контрастний передній план (вторинний)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:202
+msgid "Inactive High-Contrast Foreground (Primary)"
+msgstr "Неактивний високо-контрастний передній план (первинний)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.cpp:203
+msgid "Inactive High-Contrast Foreground (Secondary)"
+msgstr "Неактивний високо-контрастний передній план (вторинний)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:40
+msgid "Scaling in userlist"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:41
+#, fuzzy
+msgid "Scale avatar images in userlist (recommended)"
+msgstr "Масштабувати аватар (рекомендується)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:43
+msgid ""
+"<center>This option will force KVIrc to scale avatars shown in the userlist."
+"<br>Avatars will be scaled to fit the constraints set below. Better keep "
+"this option on. :)</center>"
+msgstr ""
+"<center>Ця опція змусить KVIrc масштабувати аватары, показувані в списку "
+"користувачів<br>Аватары будуть масштабуватися щоб зберегти цілісність "
+"списку. Краще включити цю опцію :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:48
+msgid "Do not scale avatar if it is less than required size"
+msgstr "Не масштабувати аватар якщо він менше заданого розміру"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:50
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:59
+msgid "Image width:"
+msgstr "Ширина картинки:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:52
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:61
+msgid "Image height:"
+msgstr "Висота картинки:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:56
+msgid "Scaling on load (and in user tooltips)"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:57
+#, fuzzy
+msgid "Scale avatar images on image load"
+msgstr "Масштабувати аватар (рекомендується)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:65
+msgid "Request CTCP"
+msgstr "Запросити CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:66
+msgid "Request missing avatars"
+msgstr "Запитувати відсутні аватари"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:67
+msgid "Maximum requested file size:"
+msgstr "Максимальний запитуваний розмір файлу:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to send a DCC GET request when someone "
+"sets an avatar and there is no cached copy available.</center>"
+msgstr ""
+"<center>Ця опція змусить KVIrc посилати запити DCC GET коли хто-небудь "
+"установить аватар і у вас у кеше немає його копії</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:74
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:317
+msgid " bytes"
+msgstr " байт"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:77
+msgid ""
+"<center>This is the maximum size for avatar images that will be "
+"automatically requested.<br>A reasonable value might be 102400 bytes (100 K)."
+"</center>"
+msgstr ""
+"<center>Це максимальний розмір аватара який буде автоматично "
+"запитуватися<br>Розумне значення 102400 байт (100 K).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:83
+msgid "Automatically accept incoming avatars"
+msgstr "Автоматично приймати вхідні аватары"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:87
+msgid ""
+"<center>This option will cause KVIrc to auto-accept DCC SEND requests for "
+"incoming avatars.<br>If you're using the \"Request missing avatars\" option "
+"above, enabling this may by useful.<br>Avatars will be saved in the local "
+"KVIrc directory.</center>"
+msgstr ""
+"<center>Ця опція пропонує KVIrc автоматично приймати запити DCC SEND для "
+"вхідних аватаров.<br>Якщо ви раніше включили опцію \"Запитувати відсутні "
+"аватари\", вам це може бути корисно.<br>Аватары будуть зберігатися в "
+"локальному каталозі KVIrc.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:94
+msgid "Remember avatars for registered users"
+msgstr "Запам'ятовувати аватари зареєстрованих користувачів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:99
+msgid ""
+"<center>Use a user's last known avatar by default (only for users that are "
+"registered).</center>"
+msgstr ""
+"<center>Використати останній відомий аватар користувача (тільки для "
+"зареєстрованих користувачів).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:103
+msgid "Avatar offer timeout:"
+msgstr "Таймаут пропозиції аватара:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:104
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:90
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:162
+msgid " sec"
+msgstr " сек"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:107
+msgid ""
+"<center>This is the amount of time to make an avatar available for transfer "
+"when requested.<br>When someone sends a CTCP AVATAR request, KVIrc will "
+"reply with a CTCP AVATAR message containing the name and size of your avatar "
+"image.<br>A time-limited file offer is added for the image file to the "
+"requesting user.</center>"
+msgstr ""
+"<center>Цей час коли аватар доступний для передачі після надходження "
+"запиту<br>Коли кто-небудь надсилає запит CTCP AVATAR , KVIrc відповідає "
+"повідомленням CTCP AVATAR утримуюче ім'я й розмір свого аватара.<br> Ліміт "
+"часу доступності додається до запиту файлу</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:115
+msgid "Ignore requests if no avatar is set"
+msgstr "Ігнорувати запити, якщо аватар відсутній"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.cpp:118
+msgid ""
+"This option will cause KVIrc to ignore channel CTCP AVATAR requests when you "
+"have no avatar set. This is usually a good practice since it helps in "
+"reducing traffic by not sending a reply that would be empty."
+msgstr ""
+"Ця опція змусить KVIrc ігнорувати запити CTCP AVATAR якщо у вас ні аватара. "
+"З його допомогою можна зменшити трафік за рахунок порожніх відповідей."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:39
+msgid "Use online notify list"
+msgstr "Використати онлайн список повідомлень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:40
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:106
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:235
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:44
+msgid "Configuration"
+msgstr "Конфігурація"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:45
+msgid "Show notifications in active window"
+msgstr "Показувати повідомлення в активному вікні"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:50
+msgid "Flash window when users are going online"
+msgstr "Подсвечивать вікно коли користувачі з'являються в онлайн"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:55
+msgid "Popup notifier when users are going online"
+msgstr "Спливаюче вікно извещателя, коли користувачі з'являються в онлайн"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:59
+msgid "Advanced configuration"
+msgstr "Розширені настроювання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:64
+msgid "Check USERHOST for online users"
+msgstr "Перевіряти USERHOST для онлайн користувачів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:69
+msgid "Use \"smart\" notify list manager"
+msgstr "Використати \"розумний\" менеджер списку повідомлень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:74
+msgid "Use the WATCH method if available"
+msgstr "Використати WATCH метод якщо можливо"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:79
+msgid "Check interval (in seconds)"
+msgstr "Інтервал перевірки (у сек.)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:85
+msgid "ISON delay (in seconds)"
+msgstr "Затримка ISON (у сек.)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:91
+msgid "USERHOST delay (in seconds)"
+msgstr "Затримка USERHOST (у сек.)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:96
+msgid ""
+"<p><b>Note:</b><br>The notify list is managed using the \"Registered Users\" "
+"settings.</p>"
+msgstr ""
+"<p><b>Зауваження:</b><br>Список повідомлень використає настроювання "
+"\"Зареєстрованих Користувачів\".</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:112
+msgid "Forcibly and completely disable the notifier"
+msgstr "Повністю виключити спливаюче вікно извещателя"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:115
+msgid ""
+"This is an option for the impatient: it allows to forcibly and permanently "
+"disable the notifier window. Please note that if this option is activated "
+"then the notifier will NOT popup even if all the other options around "
+"specify to use it in response to particular events. Also note that this "
+"option will make all the /notifier.* commands fail silently."
+msgstr ""
+"Ця опція для самих дратівливих: вона дозволяє раз і назавжди виключити вікно "
+"извещателя. Будь ласка майте через, що якщо ця опція активована, Оповіщувач "
+"НІКОЛИ не буде з'являтися навіть якщо у вас включені всі інші опції навколо. "
+"Також майте через, що ця опція мовчачи заборонить всі команди /notifier.*."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:123
+msgid "Disable notifier window flashing"
+msgstr "Відключити мерехтіння вікна извещателя"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.cpp:124
+#, fuzzy
+msgid "Disable notifier window fade effect"
+msgstr "Відключити мерехтіння вікна извещателя"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:39
+msgid "Default away message:"
+msgstr "Повідомлення в режимі Відійшов за замовчуванням:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:41
+msgid "User input exits away mode"
+msgstr "Уведення повідомлення виключає режим Відійшло"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:43
+msgid "Away Nickname"
+msgstr "Нік у режимі \"Відійшов\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:44
+msgid "Change nickname on away"
+msgstr "Змінювати Нік"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:47
+msgid "Use automatic nickname ([5 letters]AWAY)"
+msgstr "Використати автоматичний Нік [5 букв]AWAY"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.cpp:55
+#, c-format
+msgid "Custom nickname (%%nick%% means a current nick):"
+msgstr "Іншої Нік( %%nick%% означає поточний Нік):"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/libkvioptions.cpp:199
+msgid "No such options page class name %Q"
+msgstr "Немає такого імені класу на сторінці опцій %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:47
+msgid "Use system URL handlers"
+msgstr "Використати системні оброблювачі URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:50
+msgid "<b>http://</b> handler command:"
+msgstr "Команда обробки <b>http://</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:51
+msgid "<b>https://</b> handler command:"
+msgstr "Команда обробки <b>https://</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:52
+msgid "<b>ftp://</b> handler command:"
+msgstr "Команда обробки <b>ftp://</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:53
+msgid "<b>mailto:</b> handler command:"
+msgstr "Команда обробки <b>mailto:</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:54
+msgid "<b>file://</b> handler command:"
+msgstr "Команда обробки <b>file://</b>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.cpp:55
+msgid "Unknown protocol handler command:"
+msgstr "Команда обробки невідомих протоколів:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:61
+msgid "Use proxy"
+msgstr "Використати Проксі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:65
+msgid "Proxy"
+msgstr "Проксі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:76
+msgid ""
+"<center>This is the list of available proxy servers.<br>Right-click on the "
+"list to add or remove proxies.</center>"
+msgstr ""
+"<center>Це список доступних Проксі серверів<br>Клич правою кнопкою по списку "
+"дозволить додати або видалити Проксі.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:90
+msgid "New Proxy"
+msgstr "Новий Проксі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:99
+msgid "Remove Proxy"
+msgstr "Видалити Проксі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:111
+msgid "Proxy:"
+msgstr "Проксі:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:131
+msgid "Protocol:"
+msgstr "Протокол:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:336
+msgid "&New Proxy"
+msgstr "&Новий Проксі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.cpp:337
+msgid "Re&move Proxy"
+msgstr "Уда&лити Проксі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:71
+msgid "Pattern"
+msgstr "Зразок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:72
+msgid "MIME Type"
+msgstr "MIME Тип"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:87
+msgid "MIME type:"
+msgstr "MIME тип:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:92
+msgid "File pattern:"
+msgstr "Файл зразка:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:97
+msgid "Magic bytes:"
+msgstr "Магічні байти:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:102
+msgid "Save path:"
+msgstr "Шлях збереження:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:107
+msgid "Local open command:"
+msgstr "Команда відкриття:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:112
+msgid ""
+"<center>This field contains the command to execute to open a local file."
+"<br><tt>$0</tt> is used in place of the filename</center>"
+msgstr ""
+"<center>Це поле містить команду яка буде виконується для відкриття "
+"локального файлу. <br><tt>$0</tt> підставляється як ім'я файлу</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:116
+msgid "Remote open command:"
+msgstr "Команда вилученого відкриття:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:121
+msgid ""
+"<center>This field contains the command to execute when automatically "
+"opening a received file.<br><tt>$0</tt> is used in place of the filename</"
+"center>"
+msgstr ""
+"<center>Це поле містить команду яка буде автоматично виконуватися для "
+"відкриття отриманого файлу<br><tt>$0</tt> підставляється як ім'я файлу</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:125
+msgid "Icon"
+msgstr "Іконка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:134
+msgid "&New"
+msgstr "&Новий"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:138
+msgid "Re&move"
+msgstr "&Видалити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:184
+msgid "[Unknown Media Type]"
+msgstr "[Невідомий медіа тип]"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.cpp:230
+msgid "New Media Type"
+msgstr "Новий медіа тип"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:53
+msgid "Nickname Colors"
+msgstr "Кольори ніків"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:56
+msgid "Channel owner:"
+msgstr "Хазяїн каналу:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:57
+msgid "Channel admin:"
+msgstr "Адміністратор каналу:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:58
+msgid "Op:"
+msgstr "Оператор:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:59
+msgid "Half-op:"
+msgstr "Стат-оператор:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:60
+msgid "Voice:"
+msgstr "Із правом голосу:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:61
+msgid "User-op:"
+msgstr "Користувач-оператор:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:62
+msgid "Away:"
+msgstr "Відійшов:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:66
+msgid "Use different color for own nick:"
+msgstr "Використати інші кольори для свого ника:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:81
+msgid "Draw nickname grid"
+msgstr "Малювати сітку між ніками"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:83
+msgid "Grid color:"
+msgstr "Кольори сітки:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:90
+msgid "Grid type:"
+msgstr "Тип сітки:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:94
+msgid "3D Grid"
+msgstr "3D Сітка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:95
+msgid "3D Buttons"
+msgstr "3D Кнопки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:96
+msgid "Plain Grid"
+msgstr "Плоска сітка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:97
+msgid "Dotted Grid"
+msgstr "Крапкова сітка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:131
+msgid "Horizontal Alignment:"
+msgstr "Горизонтальне розташування:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:135
+msgid "Vertical Alignment:"
+msgstr "Вертикальне розташування:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:231
+msgid "Show gender icons"
+msgstr "Показувати іконки статі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:232
+msgid "Show user channel icons"
+msgstr "Показувати іконки користувачів на каналі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:233
+msgid "Show user channel activity indicator"
+msgstr "Показувати індикатор активності користувачів на каналі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:234
+msgid "Hide users label"
+msgstr "Сховати мітки користувачів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:235
+msgid "Enable user tooltips"
+msgstr "Включити спливаючі підказки по користувачах"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.cpp:236
+msgid "Hide avatars"
+msgstr "Сховати аватари в списку користувачів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:79
+msgid "Use flood protection (recommended)"
+msgstr "Використати захист від флуда (рекомендується)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:81
+msgid ""
+"<center>This option makes KVIrc only respond to a limited number of CTCP "
+"requests within a specified time interval, to prevent \"flooding\" CTCP "
+"messages.</center>"
+msgstr ""
+"<center>Ця опція вказує KVIrc відповідати тільки на обмежене число запитів "
+"CTCP у плині певного часу щоб запобігти \"флуд\" повідомленнями CTCP.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:83
+msgid "Allow up to:"
+msgstr "Допускати до:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:84
+msgid " requests"
+msgstr " запитів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:86
+msgid ""
+"<center>Minimum value: <b>0 requests</b><br>Maximum value: <b>10000 "
+"requests</b></center>"
+msgstr ""
+"<center>Мінімальне значення: <b>0 запитів</b><br>Максимальне значення: "
+"<b>10000 запитів</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:89
+msgid "within:"
+msgstr "у плині:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:92
+msgid ""
+"<center>Minimum value: <b>1 sec</b><br>Maximum value: <b>3600 sec</b></"
+"center>"
+msgstr ""
+"<center>Мінімальне значення: <b>1 сек</b><br>Максимальне значення: <b>3600 "
+"сік</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:96
+msgid "Ignored Requests"
+msgstr "Ігнорувати запити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:97
+msgid "PING"
+msgstr "PING"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:98
+msgid "FINGER"
+msgstr "FINGER"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:99
+msgid "CLIENTINFO"
+msgstr "CLIENTINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:100
+msgid "USERINFO"
+msgstr "USERINFO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:101
+msgid "VERSION"
+msgstr "VERSION"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:102
+msgid "SOURCE"
+msgstr "SOURCE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:103
+msgid "TIME"
+msgstr "TIME"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:104
+msgid "PAGE"
+msgstr "PAGE"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:105
+msgid "AVATAR"
+msgstr "AVATAR"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.cpp:106
+msgid "DCC/TDCC"
+msgstr "DCC/TDCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:131
+msgid "General Preferences"
+msgstr "Загальні настроювання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:134
+msgid "Theme Preferences"
+msgstr "Настроювання теми"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:136
+msgid "KVIrc Preferences"
+msgstr "Настроювання KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:139
+msgid ""
+"This dialog contains a set of KVIrc settings.<br> Use the icons on the left "
+"to navigate through the option pages. The text box in the bottom left corner "
+"is a small search engine. It will highlight the pages that contain options "
+"related to the search term you have entered."
+msgstr ""
+"Цей діалог містить настроювання KVIrc. <br> Використайте іконки ліворуч для "
+"навігації на сторінках опцій. Поле уведення в лівій нижній частині - "
+"невеликий пошуковий механізм. Він виділяє всі сторінки опцій, які містити "
+"уведений текст."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:147
+msgid ""
+"Many settings have tooltips that can be shown by holding the cursor over "
+"their label for a few seconds."
+msgstr ""
+"Безліч настроювань мають спливаючі підказки, які з'являються, коли ви "
+"затримуєте курсор миші на заголовку."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:152
+msgid ""
+"When you have finished, click \"<b>OK</b>\" to accept your changes or "
+"\"<b>Cancel</b>\" to discard them. Clicking \"<b>Apply</b>\" will commit "
+"your changes without closing the window."
+msgstr ""
+"Коли ви завершите, натисніть \"<b>OK</b>\" для збереження настроювань або "
+"\"<b>Скасування</b>\" для їхнього скасування. Натискання \"<b>Застосувати</b>"
+"\" збереже настроювання без закриття вікна."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:217
+msgid ""
+"<p>This is the search tool for this options dialog.</p><p>You can enter a "
+"search term either in your native language or in english and press the "
+"button on the right. The pages that contain some options related to the "
+"search term will be highlighted and you will be able to quickly find them.</"
+"p><p>Try \"nickname\" for example.</p>"
+msgstr ""
+"<p>Це інструмент пошуку для діалогу опцій</p><p>Ви можете тут увести "
+"пошукову фразу на вашій мові або на англійському й нажати кнопку праворуч "
+"для пошуку. Вікна, що містять уведену вами фразу, будуть підсвічені й ви "
+"зможете їх легко побачити</p><p>Спробуйте, наприклад увести \"Нік\".</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:249
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:61
+msgid "Close this dialog, accepting all changes."
+msgstr "Закрити цей діалог, застосувавши всі зміни."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:255
+msgid "&Apply"
+msgstr "&Застосувати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:256
+msgid "Commit all changes immediately."
+msgstr "Застосувати всі зміни негайно."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/dialog.cpp:262
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/container.cpp:69
+msgid "Close this dialog, discarding all changes."
+msgstr "Закрити цей діалог, забувши про всі зміни."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:149
+msgid ""
+"This table contains the text icon associations.<br>KVirc will use them to "
+"display the CTRL+I escape sequences and eventually the emoticons."
+msgstr ""
+"Ця таблиця містить текстові іконки<br>KVirc will use them to display the CTRL"
+"+I escape sequences and eventually the emoticons."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:165
+msgid "Add"
+msgstr "Додати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:169
+msgid "Delete"
+msgstr "Видалити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.cpp:191
+msgid "unnamed"
+msgstr "без імені"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:53
+msgid "Enable word highlighting"
+msgstr "Включити підсвічування слів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:55
+msgid "Words to highlight:"
+msgstr "Подсвечиваємі слова:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:57
+msgid "Word splitters:"
+msgstr "Роздільники слів:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:59
+msgid "Highlight messages containing my nickname"
+msgstr "Подсвечувати повідомлення утримуючі мій Нік"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:61
+msgid ""
+"<center>If this option is enabled, KVIrc will highlight any user message "
+"containing your current nickname</center>"
+msgstr ""
+"<center>Якщо включено цю опцію, KVIrc виділить будь-яке повідомлення "
+"користувачів, що містить ваш поточний Нік</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:63
+msgid "Flash the system taskbar entry on highlighted messages"
+msgstr "Подсвечивати системну панель завдань із появою зазначених повідомлень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:65
+msgid ""
+"<center>If this option is enabled, KVIrc will (attempt to) flash the system "
+"taskbar entry when a highlighted message is printed and KVIrc is not the "
+"active window</center>"
+msgstr ""
+"<center>Якщо включено цю опцію, KVIrc буде (намагатися) подсвечивати "
+"системну панель завдань коли одне із зазначених повідомлень з'явилося в "
+"неактивному вікні KVIrc</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:67
+msgid "Popup the notifier window on highlighted messages"
+msgstr "Спливаюче вікно извещателя для подсвечиваємих повідомлень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:69
+msgid ""
+"<center>If this option is enabled, KVIrc will popup a little notifier window "
+"in the low right corner of your desktop when a highlighted message is "
+"printed and KVIrc is not the active window</center>"
+msgstr ""
+"<center>Якщо включено цю опцію, KVIrc буде виводити невелике вікно "
+"извещателя в правому нижньому куті десктопа коли виділене повідомлення "
+"з'явилося в неактивному вікні KVIrc</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:91
+msgid "Alert Restrictions"
+msgstr "Обмеження попереджень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:92
+msgid "Restrict alert"
+msgstr "Обмежити попередження"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:94
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if a "
+"normal message is received in a channel.<br>Actions like joins, parts and "
+"mode changes will be ignored.<br> This is useful if you are in channels with "
+"a high rate of traffic and only want to be alerted for messages that are "
+"interesting to you.</center>"
+msgstr ""
+"<center>Якщо включено цю опцію, KVIrc буде подсвечувати панель завдань "
+"тільки якщо повідомлення з'явилося на каналі<br>Дії типу покидання, "
+"приєднання до каналу й зміни режимів будуть зігноровані<br>Ця опція корисна "
+"якщо на вашому каналі великий рух а ви хочете дізнаватися тільки про нові "
+"повідомлення</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:96
+msgid "Alert for highlighted words"
+msgstr "Попереджати з появою подсвечиваємих слів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:98
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which contain a word from the highlighted words list above.</center>"
+msgstr ""
+"<center>Якщо включено цю опцію, панель завдань буде попереджати про появі "
+"повідомлень утримуючих зазначені в списку слова</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:100
+msgid "Alert for query messages"
+msgstr "Попереджати при одержанні особистих повідомлень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:102
+msgid ""
+"<center>If this option is enabled, the taskbar will also alert for messages "
+"which are shown in queries.</center>"
+msgstr ""
+"<center>Якщо ця опція включена, панель завдань буде також попереджати про "
+"повідомленнях в приватах.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:107
+msgid "Use custom alert level"
+msgstr "Використати заданий рівень попереджень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:109
+msgid ""
+"<center>If this option is enabled, KVIrc will alert in the taskbar only if "
+"the specified alert level is reached.</center>"
+msgstr ""
+"<center>Якщо включено цю опцію, KVIrc буде подсвечувати панель завдань "
+"тільки якщо досягнуть заданий рівень попереджень</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:111
+msgid "Minimum alert level:"
+msgstr "Мінімальний рівень попереджень:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.cpp:114
+msgid ""
+"<center>This option sets the minimum alert level for the taskbar.</center>"
+msgstr ""
+"<center>Ця опція задає мінімальний рівень попереджень для панелі завдань.</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:43
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:213
+msgid "Output verbosity"
+msgstr "Багатослівність висновку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:49
+msgid "Mute"
+msgstr "Мовчати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:50
+msgid "Quiet"
+msgstr "Тихо"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:51
+msgid "Normal"
+msgstr "Нормально"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:52
+msgid "Verbose"
+msgstr "Багатослівний"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:53
+msgid "Paranoic"
+msgstr "Параноідальний"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:59
+msgid "Show in active window"
+msgstr "Показувати в активному вікні"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:60
+msgid "External messages"
+msgstr "Зовнішні повідомлення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:61
+msgid "External CTCP replies"
+msgstr "Зовнішні CTCP відповіді"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:62
+msgid "Whois replies"
+msgstr "Відповіді Whois"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:63
+msgid "ChanServ and NickServ notices"
+msgstr "Повідомлення ChanServ і NickServ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:64
+msgid "Invite messages"
+msgstr "Повідомлення про запрошення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:65
+msgid "Server replies"
+msgstr "Відповіді сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:66
+msgid "Server notices"
+msgstr "Повідомлення сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:67
+msgid "Broadcast and WALLOPS messages"
+msgstr "Широкомовні й WALLOPS повідомлення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:70
+msgid "Show extended server information"
+msgstr "Показувати докладну інформацію від сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:71
+msgid "Show server pings"
+msgstr "Показувати пінги сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:72
+msgid "Show own parts in the console"
+msgstr "Показувати свої виходи з каналів у консолі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.cpp:73
+msgid "Show compact mode changes"
+msgstr "Компактний режим показу змін"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:43
+msgid "Minimize on startup"
+msgstr "Згортатись в трей при старті програми"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:44
+msgid "Confirm quit with active connections"
+msgstr "Підтверджувати вихід при активних з'єднаннях"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:45
+msgid "Remember window properties"
+msgstr "Запам'ятовувати стан вікон"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:50
+msgid "Disable splash screen"
+msgstr "Виключити заставку при запуску програми"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:54
+msgid "Enable visual effects"
+msgstr "Включити візуальні ефекти"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:55
+msgid "Hide Channel window tool buttons by default"
+msgstr "Приховувати кнопки інструментів каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:57
+msgid "Open Dialog Window For"
+msgstr "Відкривати в окремому вікні"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:58
+msgid "Preferences"
+msgstr "Настроювання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:59
+msgid "Registered Users"
+msgstr "Список зареєстрованих користувачів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.cpp:61
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:149
+msgid "Servers"
+msgstr "Список серверів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.cpp:40
+msgid ""
+"This section contains irc tools<br><p>like<b> away, lag and logging system. "
+"</b> </p>"
+msgstr ""
+"Цей розділ містить irc утиліти,<br><p>наприклад <b> системи away, "
+"логіруванняя. </b> </p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:39
+msgid "On Disconnect"
+msgstr "При відключенні"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:42
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:55
+msgid "Keep channels open"
+msgstr "Зберігати канали відкритими"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:44
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after disconnect."
+"</center>"
+msgstr ""
+"<center>Ця опція змусить KVIrc зберігати відкритими канали після "
+"роз'єднання</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:47
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:60
+msgid "Keep queries open"
+msgstr "Зберігати привати відкритими"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:49
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after disconnect.</"
+"center>"
+msgstr ""
+"<center>Ця опція змусить KVIrc зберігати відкритими вікна приватів після "
+"роз'єднання</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:52
+msgid "On Unexpected Disconnect"
+msgstr "При несподіваному роз'єднанні"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to keep channels open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+"<center>Ця опція змусить KVIrc зберігати відкритими канали після "
+"несподіваного роз'єднання</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:62
+msgid ""
+"<center>This option will cause KVIrc to keep queries open after an "
+"unexpected disconnect.</center>"
+msgstr ""
+"<center>Ця опція змусить KVIrc зберігати відкритими вікна приватів після "
+"несподіваного роз'єднання</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:65
+msgid "Rejoin channels after reconnect"
+msgstr "Входити на канал після повторного підключення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:67
+msgid ""
+"<center>This option will cause KVIrc to rejoin channels after a successful "
+"reconnect attempt.</center>"
+msgstr ""
+"<center>Ця опція змусить KVirc заново ввійти на канал після вдалої спроби "
+"повторного з'єднання</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:69
+msgid "Reopen queries after reconnect"
+msgstr "Снову відкривати вікна приватів після повторного з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:71
+msgid ""
+"<center>This option will cause KVIrc to reopen query windows after a "
+"successful reconnect attempt.</center>"
+msgstr ""
+"<center>Ця опція змусить KVirc заново відкривати вікна приватів після "
+"успішної спроби повторного підключення</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:75
+msgid "Automatically reconnect"
+msgstr "Автоматично підключатися знову"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:77
+msgid ""
+"<center>This option will enable auto-reconnecting after an unexpected "
+"disconnect. An unexpected disconnect is the <b>termination</b> of a <b>fully "
+"connected IRC session</b> that was <b>not requested by the user</b> by the "
+"means of the QUIT message.<p><b>Warning:</b> If you use /RAW to send a QUIT "
+"message to the server, this option will not behave correctly, since does not "
+"detect the outgoing QUIT message and will attempt to reconnect after the "
+"server has closed the connection. For this reason, always use the /QUIT "
+"command to close your connections. This option may also behave incorrectly "
+"with bouncers that support detaching, in this case a solution could be to "
+"prepare an alias that sends the bouncer \"detach\" command immediately "
+"before the \"quit\" command.<br><tt>alias(bncdetach){ raw bouncer detach; "
+"quit; }</tt></p></center>"
+msgstr ""
+"<center>Ця опція включає автопідключення після несподіваного роз'єднання. "
+"Несподіване роз'єднання це <b>повне закриття з'єднання IRC сесії</b> без "
+"<b>відправлення користувачам</b> повідомлення QUIT.<p><b>Увага:</b> Якщо ви "
+"використаєте /RAW як повідомлення про вихід, ця опція не буде вести себе "
+"правильно, оскільки не виявляє вихідне повідомлення QUIT і спробує "
+"перез'єднатися знову після того як сервер закрив з'єднання. По цій причині "
+"використайте команду /QUIT для закриття з'єднання. Ця опція може працювати "
+"невірно з випінателями які підтримують функцію поділу, у цьому випадку "
+"гарним рішенням було б підготувати псевдонім, який посилає випинателю "
+"команду \"detach\" негайно перед командою \"quit\".<br><tt>alias(bncdetach)"
+"{ raw bouncer detach; quit; }</tt></p></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:89
+msgid "Maximum attempts (0: unlimited):"
+msgstr "Максимальна кількість спроб (0: не обмежене):"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:94
+msgid "Delay between attempts:"
+msgstr "Затримка між спробами:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:100
+msgid ""
+"<center>Minimum value: <b>0 sec</b><br>Maximum value: <b>86400 sec</b></"
+"center>"
+msgstr ""
+"<center>Мінімальне значення: <b>0 сек</b><br>Максимальне значення: <b>86400 "
+"сек</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:123
+msgid "Certificate"
+msgstr "Сертифікат"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:125
+msgid "Use SSL certificate (PEM format only)"
+msgstr "Використати SSL для сертифіката (тільки формат PEM)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:127
+msgid "Certificate location:"
+msgstr "Розташування сертифіката:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:130
+msgid "Certificate password:"
+msgstr "Пароль сертифіката:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:134
+msgid "Private Key"
+msgstr "Приватний ключ"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:135
+msgid "Use SSL private key"
+msgstr "Використати SSL для приватного ключа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:137
+msgid "Private key location:"
+msgstr "Розташування приватного ключа:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:140
+msgid "Private key password:"
+msgstr "Пароль приватного ключа:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:146
+msgid "This executable has no SSL support."
+msgstr "Ця зборка програми не підтримує SSL."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:165
+msgid "Timeout Values"
+msgstr "Значення таймаута"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:166
+msgid "Connect timeout:"
+msgstr "Таймаут з'єднання:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:168
+msgid "Outgoing data queue flush timeout:"
+msgstr "Таймаут скидання вихідних даних:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:170
+msgid "Limit outgoing traffic"
+msgstr "Обмежити вихідний трафік"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:171
+msgid "Limit to 1 message every:"
+msgstr "Обмежити 1-м повідомленням в:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:173
+msgid " usec"
+msgstr " мксек"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:175
+msgid ""
+"<center>Minimum value: <b>10000 usec</b><br>Maximum value: <b>10000000 usec</"
+"b></center>"
+msgstr ""
+"<center>Мінімальне значення: <b>10000 мксек</b><br>Максимальне значення: "
+"<b>10000000 мксек</b></center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:179
+msgid "Network Interfaces"
+msgstr "Мережні інтерфейси"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:181
+msgid "Bind IPv4 connections to:"
+msgstr "Використати адресу для IPv4 з'єднань:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:185
+msgid "Bind IPv6 connections to:"
+msgstr "Використати адресу для IPv6 з'єднань:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:210
+msgid "Enable ident service (bad practice on UNIX!)"
+msgstr "Включити сервіс ідентифікації (не рекомендується на UNIX!)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:216
+#, fuzzy
+msgid "Output identd messages to:"
+msgstr "При виході з мережі:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:218
+#, fuzzy
+msgid "Active window"
+msgstr "Показувати в активному вікні"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:219
+#, fuzzy
+msgid "Console"
+msgstr "Вікна терміналів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:220
+#, fuzzy
+msgid "Do not show any identd messages"
+msgstr "Не офарблювати повідомлення користувачів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:237
+msgid "Enable ident service only while connecting to server"
+msgstr "Включити ident сервіс тільки на час підключення до сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:240
+msgid "Ident username:"
+msgstr "Ідентифікаційне ім'я:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:243
+msgid "Service port:"
+msgstr "Порт сервісу:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:248
+msgid "IPv6 Settings"
+msgstr "Властивості IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:249
+msgid "Enable service for IPv6"
+msgstr "Включити сервіс для IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:258
+msgid "IP stack treats IPv4 as part of IPv6 namespace"
+msgstr "Обробляти IPv4 як частина простору імен IPv6"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:265
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications. If it is possible, install a real ident daemon.</p>"
+msgstr ""
+"<p><b>Увага:</b><br>Це <b>не повна реалізація RFC 1413</b> демона "
+"ідентифікації й забезпечує тільки частина специфікації Протоколу "
+"Ідентифікації. Якщо можливо, установите реальний демон ідентифікації</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.cpp:270
+msgid ""
+"<p><b>Warning:</b><br>This is a <b>non RFC 1413 compliant</b> ident daemon "
+"that implements only a limited subset of the Identification Protocol "
+"specifications.<br>On UNIX, you may also need root privileges to bind to the "
+"auth port (113).<br>It is <b>highly recommended</b> that a <b>real</b> "
+"system-wide ident daemon be used instead, or none at all if ident is not "
+"required.</p>"
+msgstr ""
+"<p><b>Увага:</b><br>Цей сервіс ідентифікації <b>не схвалюється RFC 1413</b> "
+"і реалізує частина специфікації Протоколу Ідентифікації. <br>В UNIX, вам "
+"можливо знадобляться привілеї root для використання порту аутнетифікації"
+"(113).<br> <b>Дуже рекомендується</b> замість цього використати <b>реальний</"
+"b> системний демон аутнетифікації, або не використати його взагалі.</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.cpp:39
+msgid ""
+"This section contains the general client options<br><p>like<b> sound, "
+"mediafiles, URL handler </b> etc... </p>"
+msgstr ""
+"Цей розділ містить основні клієнтські настроювання,<br><p>такі як<b> звук, "
+"файли медіа, URL оброблювачі </b> і т.д...</p>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:39
+msgid "Automatically Log"
+msgstr "Автоматично журналювати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:40
+msgid "Query windows"
+msgstr "Вікна приватів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:41
+msgid "Channel windows"
+msgstr "Вікна каналів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:42
+msgid "DCC Chat windows"
+msgstr "Вікна DCC чатів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:43
+msgid "Console windows"
+msgstr "Вікна терміналів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:45
+msgid "Gzip logs"
+msgstr "Стиснути логі за допомогою gzip"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:47
+msgid "Strip colors in logs"
+msgstr "Вирізати кольори у файлах балок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:48
+msgid "Auto flush logs every"
+msgstr "Автоматично записувати логі кожні"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:49
+msgid " min"
+msgstr " хвилин"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.cpp:52
+msgid ""
+"<center>Save logs with the current interval<br>Set to 0 to disable this "
+"feature</center>"
+msgstr ""
+"<center>Зберігати логі через заданий інтервал часу<br>Установите в 0 для "
+"того, щоб скасувати цю можливість</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:49
+msgid "Minimize console after successful login"
+msgstr "Мінімізувати консоль після вдалого входу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:52
+msgid ""
+"<center>This option will cause KVIrc to minimize the console window after "
+"successfully logging into a server.</center>"
+msgstr ""
+"<center>Ця опція змусить KVirc мінімізувати вікно консолі після вдалого "
+"входу на сервер</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:55
+msgid "Show network name in console taskbar entry"
+msgstr "Показувати ім'я мережі замість імені сервера в списку каналів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:57
+msgid ""
+"<center>This option will cause KVIrc to show the network name as the console "
+"taskbar entry instead of the server name. This is nice to keep on unless "
+"your servers are not organized in networks or you often connect to two "
+"servers of the same network.</center>"
+msgstr ""
+"<center>Ця опція змусить KVIrc показувати ім'я мережі замість імені сервера "
+"в списку опцій. Це досить зручно доти, поки ви не захочете підключитися до "
+"двох різних серверів в одній мережі</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:75
+msgid "Force immediate quit"
+msgstr "Форсувати негайний вихід"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:78
+msgid ""
+"<center>This option causes KVIrc to close the connection immediately after "
+"sending the QUIT message.<br>When this option is disabled, KVIrc will wait "
+"for the server to close the connection.<br>Note that if you use this, your "
+"QUIT message may be not displayed.</center>"
+msgstr ""
+"<center>Ця опція є підставою для KVIrc, щоб закрити з'єднання негайно після "
+"того як відіслане повідомлення QUIT.<br>Якщо ця опція виключена, KVIrc "
+"очікує відповідь сервера щоб закрити з'єднання<br>Майте через, що якщо "
+"включено цю опцію ви не побачите своє повідомлення QUIT</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:84
+msgid "Prepend gender info to realname"
+msgstr "Додати невидимий індикатор статі до реального імені"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:110
+msgid "On Channel Kick"
+msgstr "При кікі на каналі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:112
+msgid "Rejoin channel"
+msgstr "Перезайти на канал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:115
+msgid ""
+"<center>This option will cause KVIrc to attempt to rejoin a channel after "
+"being kicked.</center>"
+msgstr ""
+"<center>Ця опція змусить KVIrc спробувати ввійти на канал після кика</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:129
+msgid "Keep channel open"
+msgstr "Зберігати канал відкритим"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:121
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"being kicked.<br>It might be a good idea to also enable the \"Rejoin channel"
+"\" option.</center>"
+msgstr ""
+"<center>Ця опція змусить KVIrc залишити вікно каналу відкритим після кікання."
+"<br>Це може бути гарною ідеєю разом із включеною опцією \"Заново ввійти на "
+"канал\".</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:127
+msgid "On Channel Part"
+msgstr "При покиданні каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:132
+msgid ""
+"<center>This option will cause KVIrc to keep the channel window open after "
+"leaving it.</center>"
+msgstr ""
+"<center>Ця опція вказує KVIrc залишити вікно каналу відкритим при покиданні "
+"каналу</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:136
+msgid "Automatically join channel on invite"
+msgstr "Автоматично входити на канал за запрошенням"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:139
+msgid ""
+"<center>This option will cause KVIrc to automatically join a channel when an "
+"INVITE message for that channel is received.<br><b>Warning:</b> This may "
+"help spammers harass you. :)</center>"
+msgstr ""
+"<center>Ця опція змусить KVIrc автоматично приєднатися до каналу при "
+"одержанні повідомлення INVITE для цього каналу<br><b>Увага:</b> Це може "
+"допомогти спамерам які можуть вас турбувати. :)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:144
+msgid "Always open channels as minimized"
+msgstr "Завжди відкривати канали мінімізованими"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:148
+msgid ""
+"<center>This option causes newly created channel windows to be immediately "
+"minimized.<br>Enable this if you don't like channels popping up while you're "
+"typing something in a channel. :D</center>"
+msgstr ""
+"<center>Ця опція змусить негайно мінімізувати знову створене вікно "
+"каналу<br>Включите цю опцію якщо вам не подобаються вікна, що вискакують, "
+"каналів коли ви друкуєте щось в іншім вікні. :D</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:168
+msgid "Log joined channels history"
+msgstr "Запам'ятовувати канали, на які ви заходите"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:170
+msgid "Default ban mask:"
+msgstr "Маска бана за замовчуванням:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:188
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:202
+msgid "On Channel Join"
+msgstr "При вході на канал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:189
+msgid "Do not send /WHO request"
+msgstr "Не посилати запити /WHO"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:190
+msgid "Do not request ban list"
+msgstr "Не запитувати бан-лист"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:191
+msgid "Do not request ban exception list"
+msgstr "Не запитувати список виключень із банів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:192
+msgid "Do not request invite list"
+msgstr "Не запитувати список запрошень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:194
+msgid "Do not update the away list"
+msgstr "Не запитувати список людей у режимі \"відійшов\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:197
+msgid ""
+"<center>KVIrc sends out a channel /WHO message every now and then to keep "
+"the channel away list in sync. Use this option to disable this feature (and "
+"to save your IRC bandwidth.</center>"
+msgstr ""
+"<center>KVIrc через певні проміжки часу відправляє запит /WHO на канали для "
+"того щоб підтримувати актуальність списку людей у режимі away. Можете "
+"вибрати цю опцію щоб скасувати відновлення списку отошедших людей і зберегти "
+"IRC трафік</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:203
+msgid "Echo channel topic"
+msgstr "Показувати тему каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.cpp:204
+msgid "Show channel sync time"
+msgstr "Показувати синхронізацію часу каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:40
+msgid "Default text encoding:"
+msgstr "Кодування тексту за замовчуванням:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:45
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:109
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:133
+msgid "Use Language Encoding"
+msgstr "Використати кодування мови"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:59
+msgid "Force language:"
+msgstr "Примусово вказати мова програми за замовчуванням:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:65
+msgid "<b>Note:</b> You need to restart KVirc to apply a language changing"
+msgstr ""
+"<b>Увага:</b> Ви повинні запустити знову KVirc для зміни мови інтерфейсу "
+"програми"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:68
+msgid "Automatic detection"
+msgstr "Автоматичне визначення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:69
+msgid "en"
+msgstr "en"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.cpp:132
+msgid "Unable to write language information to"
+msgstr "Не можу записати інформацію про мову в"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:39
+msgid "Enable Anti-spam For"
+msgstr "Включити антіспам для"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:45
+msgid "Silent anti-spam (no warnings)"
+msgstr "Мовчазний антіспам (без попереджень)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.cpp:46
+msgid "Words considered spam:"
+msgstr "Слова, які вважаються спамом:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:51
+msgid "Use workaround for firewall"
+msgstr "Використати обхід для фаєрвола"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:54
+msgid ""
+"<center>Enable this option if you can't accept incoming connections."
+"<br>KVIrc will try to use different methods to send and receive files."
+"<br>Please note that these methods may NOT work when communicating with a "
+"non-KVIrc client.</center>"
+msgstr ""
+"<center>Включите цю опцію якщо ви не можете прийняти вхідні з'єднання."
+"<br>KVIrc спробує використати інші методи для передачі й прийому файлів."
+"<br>Будь ласка майте через, що ці методи можуть НЕ працювати з не-KVIrc "
+"клієнтами</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:73
+msgid "Network Properties"
+msgstr "Властивості мережі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:75
+msgid "Use user-defined address or network interface"
+msgstr "Використати адресу або мережний інтерфейс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:79
+msgid ""
+"<center>Enable this option if you are on a multihost machine and want to "
+"force one of the available IP addresses to be used for outgoing DCCs."
+"<br>This is especially useful when you use IPv6 and IPv4 addresses.<br>You "
+"can force KVIrc to always choose the IPv4 interface.</center>"
+msgstr ""
+"<center>Включите цю опцію якщо у вас мультихост комп'ютер і ви хочете "
+"працювати тільки з одним з доступних IP адрес для вихідних DCC.<br>Це "
+"особливо корисно коли ви використаєте IPv6 і IPv4 адресацію<br>Ви можете "
+"змусити KVIrc завжди предпочитати IPv4 інтерфейс</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:84
+msgid "Listen on address/interface:"
+msgstr "Слухати адреса/інтерфейс:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:87
+msgid ""
+"<center>This is the IP address or name of the interface to use by default "
+"for outgoing DCC transfers.<br>On UNIX systems that support it, you can also "
+"specify IPv4 interface names (such as <b>ppp0</b>).<br>If you set it to "
+"<b>0.0.0.0</b>, KVIrc will try to use the first available IPv4 interface</"
+"center>"
+msgstr ""
+"<center>Це IP адреса або ім'я інтерфейсу який буде використатися по "
+"умовчанню для вихідних DCC передач<br>В UNIX системах які підтримують це, ви "
+"можете визначити ім'я інтерфейсу IPv4 (такий як <b>ppp0</b>).<br>Якщо ви "
+"визначите його як <b>0.0.0.0</b>, KVIrc спробує використати перший доступний "
+"IPv4 інтерфейс. </center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:94
+msgid "Use user-defined port range"
+msgstr "Використати діапазон портів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:97
+msgid ""
+"<center>Enable this option if you want specify a local port range for DCC.</"
+"center>"
+msgstr ""
+"<center>Включите цю опцію щоб задати локальний діапазон портів DCC.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:102
+msgid "Lowest port:"
+msgstr "Нижня межа:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:105
+msgid "Highest port:"
+msgstr "Верхня межа:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:108
+msgid "Send a fixed address in requests"
+msgstr "Відсилати фіксована адреса в запитах"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:111
+msgid ""
+"<center>Enable this option if you want to always send a fake IP address in "
+"your DCC requests.<br>This might be useful if you're behind a router with a "
+"static address that does network address translation (NAT) and forwards all "
+"or a range of ports.</center>"
+msgstr ""
+"<center>Включите цю опцію якщо ви хочете завжди відсилати фальшивий IP "
+"адресу в DCC запитах<br>Це може бути корисно, якщо ви за маршрутизатором з "
+"статичною адресою в мережі з Network Address Translation (NAT) і "
+"форвардінгом усіх або діапазону портів. </center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:115
+msgid "Send address/interface:"
+msgstr "Відсилати адреса/інтерфейс:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:119
+msgid ""
+"<center>This is the fixed address that will be sent with all DCC requests if "
+"you enable the option above.</center>"
+msgstr ""
+"<center>Це фіксована адреса, що буде відсилати всі DCC запити якщо ви "
+"включили опцію вище</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:123
+msgid "Guess address from IRC server if unroutable"
+msgstr "Визначати локальна адреса по даним IRC сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:128
+msgid ""
+"<center>You can enable this option if you are behind a router that forwards "
+"all or a range of ports.<br>KVIrc will try to guess the IP address to use "
+"for DCC by looking up the local hostname as seen by the IRC server you're "
+"connected to.<br>This method is an exclusive alternative to the \"fixed "
+"address\" above.<br>It might guess the correct address automatically if "
+"certain conditions are met (e.g. the IRC server does not mask hostnames).</"
+"center>"
+msgstr ""
+"<center>Ви можете включити цю опцію якщо ви за маршрутизатором з "
+"форвардінгом усіх або діапазону портів<br>KVIrc спробує визначити адреса IP "
+"використовуваний DCC по даним IRC сервера<br>Цей метод є єдиною "
+"альтернативою для \"фіксованої адреси\" вище.<br>Він може визначити "
+"правильний IP адреса автоматично якщо виконані певні умови (наприклад IRC "
+"сервер не маскує хост).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:134
+msgid "Use \"broken bouncer hack\" to detect address"
+msgstr "Використати \"broken bouncer hack\" для визначення адреси"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:137
+msgid ""
+"<center>When you're behind a dialup router and also tunneling through a "
+"psyBNC bouncer, you can use a bug in the bouncer to force KVIrc to bind the "
+"DCC connections to the dialup router's address.<br>It's an ugly hack - use "
+"it only if nothing else works.</center>"
+msgstr ""
+"<center>Якщо ви на діалапе за роутером і також через тунель psyBNC, ви "
+"можете використати баг у ньому щоб змусити KVIrc зв'язуватися через DCC "
+"з'єднання на адресу диалап роутера.<br>Це грубий хак - використайте його "
+"тільки якщо ніщо інше не працюється</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:144
+msgid "Notify failed DCC handshakes to the remote end"
+msgstr "Повідомляти про невдалі передачі DCC вилучену сторону"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:147
+msgid ""
+"<center>If you enable this option, when a DCC request from a remote user "
+"can't be satisfied KVIrc will notify him by a CTCP ERRMSG. This is a nice "
+"feature so it is a good idea to leave it on unless for some reason you have "
+"deactivated the antiflood system: in this case turning off this option might "
+"help if you often get attacked by CTCP floods.</center>"
+msgstr ""
+"<center>Якщо включено цю опцію й коли запити DCC від вилученого користувача "
+"не можуть бути задоволені, KVIrc повідомить його повідомленням CTCP ERRMSG. "
+"Це гарний вибір якщо ви з якої-небудь причини не виключили систему "
+"антіфлуда: у такому випадку ця опція допоможе вам, якщо вас часто атакують "
+"флудом CTCP</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:154
+msgid "Maximum number of DCC sessions"
+msgstr "Максимальна кількість DCC сесій"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:156
+msgid ""
+"<center>This is the maximum number of concurrent DCC sessions and it "
+"includes all the DCC types (send,chat,recv...). KVIrc will refuse the "
+"requests when this limit is reached.</center>"
+msgstr ""
+"<center>Ця максимальна кількість DCC сесій і воно включає всі типи DCC "
+"(передачу, чат, recv). KVIrc буде відхиляти всі запити по досягненні цього "
+"межі</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:161
+msgid "DCC socket timeout:"
+msgstr "Таймаут сокета DCC:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:164
+msgid ""
+"<center>This is the amount of time that KVIrc will wait for a response "
+"before assuming that a DCC has failed because the remote client was unable "
+"to connect to our listening socket.</center>"
+msgstr ""
+"<center>Цей час яке KVIrc буде очікувати перш ніж зробить висновок про "
+"невдалій передачі DCC коли вилучений клієнт не в змозі підключитися до "
+"вашому сокету.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:198
+msgid "On Incoming File"
+msgstr "Вхідні файли"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:199
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:350
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:371
+msgid "Automatically accept"
+msgstr "Автоматично приймати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:200
+msgid "Open transfer window as minimized when auto-accepted"
+msgstr "Відкривати вікно прийняття файлів мінімізованим при авто-прийомі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:201
+msgid "Automatically resume when auto-accepted"
+msgstr "Автоматично резюмувати при авто-прийомі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:203
+msgid "Save Location"
+msgstr "Параметри зберігання завантажень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:204
+msgid "Download folder:"
+msgstr "Каталог завантаження:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:205
+msgid "Sort saved files by nicknames (create subfolders)"
+msgstr "Сортувати зберігають файлы, що, по ніку (створювати підкаталоги)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:206
+msgid "Guess save path from media type"
+msgstr "Зберігати передбачуваний шлях з медиа типу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:209
+msgid "On Download Completion"
+msgstr "При завершенні завантаження"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:210
+msgid "Notify completion in console"
+msgstr "Вивести повідомлення в консолі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:211
+msgid "Notify completion in notifier"
+msgstr "Вивести повідомлення в извещателе"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:212
+msgid "Automatically clear transfer"
+msgstr "Видалити накачування зі списку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:215
+msgid ""
+"<center>This option will cause succesfully terminated transfers to be "
+"automatically removed from the transfer window.</center>"
+msgstr ""
+"<center>Ця опція змусить KVIrc підключатися до цієї IRC мережі при старті</"
+"center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:220
+msgid "Always open transfer window as minimized"
+msgstr "Завжди відкривати вікно передач файлів мінімізованим"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:238
+msgid "Bug Compatibility"
+msgstr "Баг-совместимость"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:239
+msgid "Send ACK for byte 0"
+msgstr "Відсилати ACK для 0-го байта"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:242
+msgid ""
+"<center>This option causes KVIrc to send a zero-byte acknowledge to kick-"
+"start the DCC transfer with some buggy IRC clients.<br>Use it only if your "
+"DCC transfers stall just after establishing a connection without sending any "
+"data.</center>"
+msgstr ""
+"<center>Ця опція змусить KVIrc відсилати нульовий байт підтвердження при "
+"старті DCC передачі з IRC клієнтами, які мають деякі баги.<br>Використайте "
+"це тільки якщо ваша DCC передача зупиняється після сталого з'єднання й "
+"ніяких даних не передаються</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:247
+msgid "Accept broken RESUME (mIRC file.ext)"
+msgstr "Приймати битий RESUME (mIRC file.ext)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:250
+msgid ""
+"<center>This option causes KVIrc to accept RESUME requests with invalid "
+"filenames.<br>Use it if KVIrc fails to accept RESUME requests from other "
+"clients (e.g. some versions of mIRC).</center>"
+msgstr ""
+"<center>Ця опція змушує KVIrc приймати RESUME запити з недійсними іменами "
+"файлів<br>Використайте це якщо KVIrc не може прийняти RESUME запити від "
+"інших клієнтів (наприклад, деякі версії mIRC).</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:254
+msgid "Replace spaces with underscores in outgoing filenames"
+msgstr ""
+"Заміняти пробіли символами нижнього підкреслення в іменах вихідних файлів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:257
+msgid ""
+"<center>This option causes KVIrc to replace spaces with underscores in "
+"filenames for all the outgoing file transfers. This will fix filename "
+"handling with some buggy clients (e.g. some versions of mIRC)."
+msgstr ""
+"<center>Ця опція змушує KVIrc заміняти пробіли в іменах файлів символами "
+"нижнього підкреслення, що поліпшує сумісність із деякими IRC клієнтами (у "
+"тому числі й старих версіях mIRC)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:262
+msgid "Limits"
+msgstr "Обмеження"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:265
+msgid "Limit upload bandwidth to"
+msgstr "Межа при передачі до"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:267
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:273
+msgid "bytes/sec"
+msgstr "байт/сек"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:271
+msgid "Limit download bandwidth to"
+msgstr "Межа при завантаженні до"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:277
+msgid "Maximum number of DCC transfers"
+msgstr "Максимальна кількість DCC передач"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:279
+msgid ""
+"<center>This is the maximum number of concurrent DCC transfers. KVIrc will "
+"refuse the requests when this limit is reached.</center>"
+msgstr ""
+"<center>Ця максимальна кількість паралельних DCC передач. KVIrc почне "
+"відхиляти запити коли буде досягнута цей межа</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:283
+msgid "Tweaks"
+msgstr "Настроювання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:285
+msgid "Use fast send (send ahead)"
+msgstr "Використати швидку передачу (передачу з випередженням)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:288
+msgid ""
+"<center>The \"send ahead\" DCC method allows data to be sent faster by "
+"breaking some of the rules of the original DCC SEND protocol specification."
+"<br>Most clients can handle this kind of optimisation so disable it only if "
+"you have problems.</center>"
+msgstr ""
+"<center>DCC метод \"передачі з випередженням\" допускає швидку передачу з "
+"порушенням деяких правил оригінальної специфікації протоколу DCC SEND.<br> "
+"Більшість клієнтів працюють із цим коректно. Виключите цю опцію, якщо у вас "
+"будуть проблеми</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:295
+msgid "Force idle step"
+msgstr "Форсувати кроки при простої"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:298
+msgid ""
+"<center>Enable this option when the dcc file transfers tend to block your "
+"computer by consuming too much CPU time. When this option is enabled the "
+"idle interval below will be forcibly inserted between each sent/received "
+"data packet.</center>"
+msgstr ""
+"<center>Включите цю опцію коли передачі файлу через dcc блокують ваш "
+"комп'ютер відбираючи занадто багато процесорних ресурсів. Коли включена ця "
+"опція час простою між передачею/відправленням пакетів буде менше.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:310
+msgid ""
+"<center>This parameter controls the average delay between two packets sent "
+"or received.<br>A smaller interval will cause you to send data faster but "
+"will also add load to your CPU, disk and network interface.<br>Reasonable "
+"values are from 5 to 50 milliseconds.</center>"
+msgstr ""
+"<center>Цей параметр установлює середню затримку між між двома прийнятими "
+"або відправленими пакетами<br>При меншому значенні дані будуть передаватися "
+"швидше, але це збільшить завантаження CPU, жорсткого диска й мережних "
+"інтерфейсів<br>Розумні величини від 5 до 50 міллісекунд.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:316
+msgid "Packet size:"
+msgstr "Розмір пакета:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:320
+msgid ""
+"<center>This parameter controls the packet size used for DCC SEND.<br>With "
+"bigger packets you will be probably send data faster, but you will also "
+"saturate your bandwidth and in some cases cause more disk activity."
+"<br>Reasonable values are from 512 to 4096 bytes.</center>"
+msgstr ""
+"<center>Цей параметр визначає розмір пакета для DCC SEND.<br>З більшими "
+"пакетами передача ймовірно буде відбуватися швидше, але в деяких випадках це "
+"може викликати й більша дискова активність<br>Розумні значення від 512 до "
+"4096 байт</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:349
+msgid "On Chat Request"
+msgstr "Запит чата"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:351
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:373
+msgid "Open minimized when auto-accepted"
+msgstr "Відкривати мінімізованим при авто-прийомі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:353
+msgid "Always open as minimized"
+msgstr "Завжди відкривати мінімізованим"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:369
+msgid "Open all minimized"
+msgstr "Відкрити всі мінімізованим"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:370
+msgid "On Voice Request"
+msgstr "Запити розмови"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:376
+msgid "Force half-duplex mode on sound device"
+msgstr "Форсувати напівдуплексний режим звукового устрою"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:377
+msgid "Volume slider controls PCM, not Master"
+msgstr "Регулятор гучності використає PCM, а не Master"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:379
+msgid "Sound device:"
+msgstr "Звуковий устрій:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:380
+msgid "Mixer device:"
+msgstr "Устрій мікшера:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.cpp:382
+msgid "Pre-buffer size:"
+msgstr "Розмір буфера:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:38
+msgid "Enable Ignore For"
+msgstr "Використати ігнор для"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:39
+msgid "Private/channel messages"
+msgstr "Повідомлень приватних каналів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:40
+msgid "Private/channel notices"
+msgstr "Повідомлень приватних каналів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.cpp:44
+msgid "Use verbose ignore (show messages in console)"
+msgstr "Виводити розширену інформацію при ігноре (у консоль)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:64
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:46
+msgid "Sound System"
+msgstr "Звукова система"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:66
+msgid "This allows you to select the sound system to be used with KVIrc."
+msgstr ""
+"Ця опція дозволяє вам вибрати звукову систему, що буде використана в KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:72
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:88
+msgid "Auto-detect"
+msgstr "Автоопределение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:91
+msgid "Test"
+msgstr "Тест"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:79
+msgid "Media Player"
+msgstr "Мультімедіа програвач"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:81
+msgid ""
+"This allows you to select the preferred media player to be used with the "
+"mediaplayer.* module commands and functions."
+msgstr ""
+"Тут ви можете вибрати кращий музичний програвач, що буде використатися "
+"модулем mediaplayer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:102
+msgid "ID3 tags' encoding"
+msgstr "Кодування ID3 тегів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:104
+msgid "This allows you to select encoding of mp3 tags."
+msgstr "Ця опція дозволяє вибрати кодування тегів в MP3 файлі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:125
+msgid "Winamp messages ecoding"
+msgstr "Кодування повідомлень вінампа"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:127
+msgid "This allows you to select encoding of winamp messages."
+msgstr ""
+"Ця опція дозволяє вибрати кодування повідомлень, що відправляють winamp'ом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:290
+msgid "New Query opened"
+msgstr "Відкритий новий приват"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:293
+msgid "New message in inactive query"
+msgstr "Нове повідомлення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:296
+msgid "Highlighted message in inactive window"
+msgstr "Подсвічуваєме повідомлення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.cpp:299
+msgid "Me have been kicked"
+msgstr "Був кікнут"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:39
+msgid "Selection background color"
+msgstr "Кольори обраного тла"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:40
+msgid "Selection foreground color"
+msgstr "Кольори обраного переднього плану"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:41
+msgid "Control char color"
+msgstr "Кольори керуючого символу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:42
+msgid "Cursor color"
+msgstr "Кольори курсору"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:141
+msgid "Warp cursor at the end of line when browsing history"
+msgstr "Установлювати курсор наприкінці рядка при перегляді історії"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:142
+msgid "Disable the input history window and it's log memory."
+msgstr "Відключити історію уведення й займану їй пам'ять"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:143
+msgid "Hide input toolbuttons by default"
+msgstr "Сховати кнопки панелі інструментів уведення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:144
+msgid "Nick completion"
+msgstr "Завершення ніка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:145
+msgid "Use bash-like nick completion"
+msgstr "Використати bash-стиль завершення ников"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:146
+msgid "Nick completion postfix string"
+msgstr "Закінчення при завершенні ніка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:147
+msgid "Use the completion postfix string for the first word only"
+msgstr "Використати це закінчення тільки якщо Нік - перше слово"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.cpp:148
+msgid "Commandline in user-friendly mode by default"
+msgstr "Дружній режим командного рядка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:81
+msgid "Show message icons"
+msgstr "Показувати іконки повідомлень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:82
+msgid "Draw some emoticons (smileys) as pictures"
+msgstr "Малювати деякі іконки (смайли) як картинки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:83
+msgid "Don't show colors in user messages"
+msgstr "Не офарблювати повідомлення користувачів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:88
+msgid "Nicknames"
+msgstr "Нікі"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:90
+msgid "\"Smart\" nickname colors"
+msgstr "\"Розумні\" кольори ніків"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:91
+msgid "Use same colors as in the userlist"
+msgstr "Використати ті ж кольори, що й у списку користувачів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:93
+msgid "Show nicknames in bold"
+msgstr "Показувати нікі жирним шрифтом"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:94
+msgid "Show user and host"
+msgstr "Показувати користувача й хостмаску"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:95
+msgid "Show channel mode prefix"
+msgstr "Показувати префікс режиму каналу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:96
+msgid "User-defined prefix and postfix"
+msgstr "Визначити префікс і постфікс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:98
+msgid "[PREFIX]nickname[!user@host][POSTFIX] message"
+msgstr "[PREFIX]Нік[!user@host][POSTFIX] повідомлення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:112
+msgid "Prefix:"
+msgstr "Префікс:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:117
+msgid "Postfix:"
+msgstr "Постфікс:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:131
+msgid "Show timestamp"
+msgstr "Показувати оцінки часу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:134
+msgid "Use UTC time for timestamp"
+msgstr "Використати UTC для оцінок часу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:141
+msgid "Use special color for timestamps"
+msgstr "використати спеціальні кольори для міток часу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:147
+msgid "Timestamp format:"
+msgstr "Формат оцінки часу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:320
+msgid "Transparent"
+msgstr "Прозорість"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:401
+msgid "Message Type"
+msgstr "Типи повідомлень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:417
+msgid "Background:"
+msgstr "Тло:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:426
+msgid "Foreground:"
+msgstr "Передній план:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:434
+msgid "Alert level:"
+msgstr "Рівень попереджень:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:454
+msgid "Log this"
+msgstr "Журналювати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:458
+msgid "Load From..."
+msgstr "Завантажити з..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:460
+msgid "Save As..."
+msgstr "Зберегти як..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:589
+msgid "Choose a Filename - KVIrc"
+msgstr "Виберіть ім'я файлу - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.cpp:646
+msgid "Choose a Filename - KVIrc "
+msgstr "Виберіть ім'я файлу - KVIrc "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:40
+msgid "Enable lag meter"
+msgstr "Включити визначення затримок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:42
+msgid ""
+"<center>This enables the lag meter engine, which checks at regular intervals "
+"how much lag (latency) the server has.</center>"
+msgstr ""
+"<center>Це включає вимірник затримок, що регулярно перевіряє які затримки "
+"(час очікування) має сервер</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:45
+msgid "Lag meter heartbeat:"
+msgstr "Інтервал виміру затримки:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:49
+msgid ""
+"<center>This option allows you to set the lag meter heartbeat interval."
+"<br>The lower the heartbeat interval the higher will be the accuracy of the "
+"lag check but also higher cpu usage and data traffic to the server."
+"<br>Please note that this is NOT the interval between pings sent to the "
+"server: the pings (if any) will be sent really less often. 5000 is a "
+"reasonable value.</center>"
+msgstr ""
+"<center>Ця опція задає інтервал виміру затримки<br>Менше значення дасть "
+"більше високу точність виміру затримки, але разом з тим і більше високе "
+"завантаження CPU і більший трафік з сервером.<br>Будь ласка майте через, що "
+"це НЕ інтервал між пінгами посилають на сервер, пінгі (якщо задано) будуть "
+"відсилатися значно рідше. Розумна величина - 5000.</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:58
+msgid "Trigger event if lag exceeds:"
+msgstr "Запустити подія, якщо затримка перевищує:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:61
+msgid ""
+"<center>This option controls the threshold for the OnLagAlarmTimeUp and "
+"OnLagAlarmTimeDown events. When the lag goes above the threshold "
+"OnLagAlarmTimeUp will be triggered and when the lag falls back below the "
+"threshold then OnLagAlarmTimeDown will be triggered</center>"
+msgstr ""
+"<center>Ця опція встановлює поріг подій OnLagAlarmTimeUp і "
+"OnLagAlarmTimeDown. Коли затримка вище порога ініціюється подія "
+"OnLagAlarmTimeUp, а коли нижче - OnLagAlarmTimeDown</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:68
+msgid "Show lag in IRC context display"
+msgstr "Показувати затримку в контексті IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.cpp:70
+msgid ""
+"<center>This makes the IRC context display applet show the current lag after "
+"the user's nickname (in seconds)</center>"
+msgstr ""
+"<center>Це змусить дисплей IRC контексту показувати поточну затримку після "
+"ника користувача (у секундах)</center>"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_away.h:28
+msgid "Away"
+msgstr "Відійшов"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcp.h:28
+msgid "CTCP"
+msgstr "CTCP"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:28
+msgid "DCC"
+msgstr "DCC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:56
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:100
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:59
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:101
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:169
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:41
+msgid "Advanced"
+msgstr "Додатково"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:72
+msgid "File Transfer"
+msgstr "Передачі файлів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:113
+msgid "Chat"
+msgstr "Чат"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_dcc.h:126
+msgid "Voice"
+msgstr "Голос"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:32
+msgid "IRC"
+msgstr "IRC"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_irc.h:73
+msgid "Channel"
+msgstr "Канал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:28
+msgid "Lag"
+msgstr "Затримка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_lag.h:30
+msgid "time,ping"
+msgstr "час,пінг"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_nickserv.h:37
+msgid "authentication,identify"
+msgstr "ідентифікація,аутентификация"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:31
+msgid "Language"
+msgstr "Мова"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_textencoding.h:34
+msgid "language,encoding,charset,codepage"
+msgstr "мова,кодування,кодова сторінка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:28
+msgid "Contacts"
+msgstr "Контакти"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:30
+msgid "notify,buddy,buddies,friends"
+msgstr "повідомлення,друг,друзі,приятелі,контакти"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:42
+msgid "Notifier"
+msgstr "Оповіщувач"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_notify.h:43
+msgid "popup"
+msgstr "спливаюче меню"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:37
+msgid "Text"
+msgstr "Текст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:38
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:49
+msgid "theme,colors,output"
+msgstr "тема,кольори,висновок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:52
+msgid "Message Style"
+msgstr "Стиль повідомлень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:56
+msgid "theme,privmsg,output,format"
+msgstr "тема,повідомлення,формат,висновок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:67
+msgid "Timestamp"
+msgstr "Оцінка часу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:71
+msgid "time,timestamp"
+msgstr "час,Оцінка часу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:88
+msgid "Message Colors"
+msgstr "Кольори повідомлень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:89
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:169
+msgid "theme,colors,messages,output"
+msgstr "тема,кольори,повідомлення,висновок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_messages.h:168
+msgid "Color Set"
+msgstr "Набір квітів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_avatar.h:32
+msgid "Avatars"
+msgstr "Аватари"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:32
+msgid "Sound"
+msgstr "Звук"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:48
+msgid "sound,xmms,audio,play,amarok"
+msgstr "звук,xmms,аудіо,програвати,amarok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:81
+msgid "Sounds"
+msgstr "Звуки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_sound.h:83
+msgid "sound,events"
+msgstr "звуки,події"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:28
+msgid "URL handlers"
+msgstr "Оброблювачі URL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_urlhandlers.h:31
+msgid "url,programs"
+msgstr "url,програми"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:29
+msgid "Tray icon"
+msgstr "Іконка в треє"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tray.h:31
+msgid "tray,dockwidget"
+msgstr "трей, іконка, системний лоток"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_tools.h:33
+msgid "Tools"
+msgstr "Інструменти"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_generalopt.h:28
+msgid "General options"
+msgstr "Загальні настроювання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacefeatures.h:31
+msgid "Interface"
+msgstr "Інтерфейс"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:29
+msgid "Text icons"
+msgstr "Текстові іконки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_texticons.h:31
+msgid "smileys,emoticons"
+msgstr "смайли, іконки"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:34
+msgid "Output"
+msgstr "Висновок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:48
+msgid "Look"
+msgstr "Вид"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircview.h:68
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:97
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:101
+msgid "Features"
+msgstr "Можливості"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:46
+msgid "Media Types"
+msgstr "Медіа типи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_mediatypes.h:48
+msgid "file,audio,video,programs"
+msgstr "файл,аудіо,відео,програми"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:33
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:35
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:49
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:65
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:80
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:99
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:114
+msgid "theme"
+msgstr "тема"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:47
+msgid "Transparency"
+msgstr "Прозорість"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:48
+msgid "theme,background"
+msgstr "тема, тло"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:74
+msgid "Window Captions"
+msgstr "Заголовки вікон"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:75
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:88
+msgid "theme,mdi"
+msgstr "тема, mdi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:87
+msgid "Workspace"
+msgstr "Робочий простір"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:100
+msgid "ToolBar Applets"
+msgstr "Апплети панелі інструментів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_interfacelookglobal.h:101
+msgid "theme,toolbar"
+msgstr "тема, панель інструментів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_servers.h:150
+msgid "connection"
+msgstr "з'єднання"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:33
+msgid "Protection"
+msgstr "Захист"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_protection.h:36
+msgid "ctcp,flood"
+msgstr "ctcp,флуд"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_identity.h:144
+msgid "Avatar"
+msgstr "Аватар"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_antispam.h:28
+msgid "Anti-spam"
+msgstr "Антіспам"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:32
+msgid "Verbosity And Output"
+msgstr "Багатослівність висновку"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ircoutput.h:34
+msgid "debug"
+msgstr "налагодження"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:28
+msgid "Logging"
+msgstr "Логірування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_logging.h:29
+msgid "save,output"
+msgstr "збереження,висновок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:32
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:50
+msgid "Input"
+msgstr "Уведення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_input.h:33
+msgid "theme,colors,text"
+msgstr "тема,кольори,текст"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:33
+msgid "Taskbar"
+msgstr "Панель завдань"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:47
+msgid "Tree Taskbar"
+msgstr "Дерево панелі завдань"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:63
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:65
+msgid "Foreground"
+msgstr "Передній план"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_taskbar.h:111
+msgid "Classic Taskbar"
+msgstr "Класична панель завдань"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:52
+msgid "Proxy Hosts"
+msgstr "Проксі сервери"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_proxy.h:54
+msgid "connection,servers"
+msgstr "з'єднання,сервера"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:28
+msgid "Alert/Highlight"
+msgstr "Попередження/Підсвічування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:42
+msgid "Highlight"
+msgstr "Підсвічування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_highlighting.h:55
+msgid "Taskbar Alert"
+msgstr "Панель завдань попереджень"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ctcpfloodprotection.h:29
+msgid "Flood Protection"
+msgstr "Захист від флуда"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:30
+msgid "Userlist"
+msgstr "Список користувачів"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:31
+msgid "theme,userlist,channel"
+msgstr "тема,список користувачів,канал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:45
+msgid "theme,userlist,channel,background"
+msgstr "тема,список користувачів,канал,тло"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:66
+msgid "theme,userlist,channel,colors"
+msgstr "тема,список користувачів,канал,кольори"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:81
+msgid "Nickname Grid"
+msgstr "Таблиця ніків"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:82
+msgid "theme,userlist,channel,grid"
+msgstr "тема,список користувачів,канал,сітка"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_userlist.h:102
+msgid "userlist,channel"
+msgstr "список користувачів,канал"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:29
+msgid "Labels"
+msgstr "Напису"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_topiclabel.h:30
+msgid "theme,topic"
+msgstr "тема,топік"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:28
+msgid "Scripting Engine"
+msgstr "Движок скріптінга"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_uparser.h:29
+msgid "scripting,kvs,debug"
+msgstr "скріптінг,kvs,налагодження"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:55
+msgid "SSL"
+msgstr "SSL"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:72
+msgid "Socket"
+msgstr "Сокет"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_connection.h:87
+msgid "Ident Service"
+msgstr "Сервіс ідентифікації"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:29
+msgid "Ignore"
+msgstr "Ігнор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_ignore.h:31
+msgid "protection"
+msgstr "захист"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:28
+msgid "Query"
+msgstr "Приват"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/options/optw_query.h:30
+msgid "chat"
+msgstr "чат"
+
+#, fuzzy
+#~ msgid "Output verosity"
+#~ msgstr "Багатослівність висновку"
+
+#~ msgid "Scaling"
+#~ msgstr "Масштабування"
diff --git a/po/modules/perl/Makefile.am b/po/modules/perl/Makefile.am
new file mode 100644
index 00000000..1ccc443d
--- /dev/null
+++ b/po/modules/perl/Makefile.am
@@ -0,0 +1,74 @@
+###############################################################################
+# KVirc IRC client Makefile - 18.09.99 Szymon Stefanek <pragma at kvirc dot net>
+###############################################################################
+
+# The name of this module
+THISMODULE = perl
+
+# Don't touch this
+tmpdir = $(localedir)
+
+# The *.mo files to generate
+tmp_DATA = perl_ca.mo \
+ perl_cs.mo \
+ perl_it.mo \
+ perl_de.mo \
+ perl_pt.mo \
+ perl_es.mo \
+ perl_ru.mo \
+ perl_pt_BR.mo \
+ perl_fr.mo \
+ perl_hu.mo \
+ perl_fi.mo \
+ perl_uk.mo
+
+# The *.po files to generate
+POFILES = perl_ca.po \
+ perl_cs.po \
+ perl_it.po \
+ perl_de.po \
+ perl_pt.po \
+ perl_es.po \
+ perl_ru.po \
+ perl_pt_BR.po \
+ perl_fr.po \
+ perl_hu.po \
+ perl_fi.po \
+ perl_uk.po
+
+
+###############################################################################
+# STOP EDITING HERE
+###############################################################################
+
+# Killed the fuzzy entries: don't use them , they may SEGV
+# - touch $@ && $(SS_MSGFMT) -fvo $@ $<
+
+CLEANFILES = $(tmp_DATA)
+EXTRA_DIST = $(POFILES)
+
+%.mo: %.po
+ -touch $@ && $(SS_MSGFMT) -vo $@ $<
+
+messages-extract:
+ @find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.cpp > files; \
+ find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.h >> files; \
+ xgettext -o $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot -k__tr_ctx -k__tr_no_lookup_ctx -k__tr2qs_ctx -k__tr2wc_ctx -k__tr2ws_ctx -f files; \
+ rm files; \
+ echo "Messages extracted to $(THISMODULE).pot";
+
+messages-update:
+ @old=_old; \
+ if test -f "$(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot"; then \
+ for lang in $(POFILES); do \
+ echo "Updating file $$lang"; \
+ mv -f $$lang $$lang$$old; \
+ msgmerge -o $$lang $$lang$$old $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot && rm -f $$lang$$old; \
+ done; \
+ else \
+ echo "----------------------------------------------------"; \
+ echo "- WARNING: ./$(THISMODULE).pot does not exist"; \
+ echo "- WARNING: You must run make messages-extract first"; \
+ echo "----------------------------------------------------"; \
+ fi
+messages: messages-extract messages-update
diff --git a/po/modules/perl/perl_ca.po b/po/modules/perl/perl_ca.po
new file mode 100644
index 00000000..ed3370ce
--- /dev/null
+++ b/po/modules/perl/perl_ca.po
@@ -0,0 +1,48 @@
+# translation of perl_ca.po to Català
+# translation of perl_es.po to Spanish
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# José Luis Sánchez<[email protected]>, 2004.
+# Marc Serra Romero <[email protected]>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: perl_ca\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-02-24 23:48+0100\n"
+"Last-Translator: Marc Serra Romero <[email protected]>\n"
+"Language-Team: Català <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.2\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:48
+msgid "The perlcore module can't be loaded: perl support not available"
+msgstr "El mòdul perlcode no pot ser carregat: suport de perl no disponible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:49
+msgid "To see more details about loading failure try /perlcore.load"
+msgstr ""
+"Per a veure més detalls sobre la fallida durant la càrrega provi amb /"
+"perlcore.load"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:62
+msgid "This KVIrc executable has been compiled without perl scripting support"
+msgstr ""
+"Aquest executable de KVIrc ha estat compilat sense suport d'scripts perl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:536
+msgid ""
+"The perlcore module failed to execute the code: something is wrong with the "
+"perl support"
+msgstr ""
+"El mòdul perlcode ha fallat a l'executar el còdi: alguna cosa està malament "
+"en el suport de perl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:483
+msgid "Perl execution error:"
+msgstr "Error d'execució Perl:"
diff --git a/po/modules/perl/perl_cs.po b/po/modules/perl/perl_cs.po
new file mode 100644
index 00000000..b5e56827
--- /dev/null
+++ b/po/modules/perl/perl_cs.po
@@ -0,0 +1,43 @@
+# Czech translation of Kvirc 3.
+# Copyright (C) 2004 THE Kvirc 3'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the Kvirc 3 package.
+# Dusan Hokuv <[email protected]>, 2004.
+#
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Kvirc 3\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2004-10-16 11:22+0200\n"
+"Last-Translator: Dusan Hokuv <[email protected]>\n"
+"Language-Team: Czech <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:48
+msgid "The perlcore module can't be loaded: perl support not available"
+msgstr "Modul perlcore nemůže být nahrán: chybí podpora perlu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:49
+msgid "To see more details about loading failure try /perlcore.load"
+msgstr "Pro více detailů o selhání zkuste /perlcore.load"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:62
+msgid "This KVIrc executable has been compiled without perl scripting support"
+msgstr "Tato verze KVIrc byla zkompilována bez podpory perl skriptování"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:536
+msgid ""
+"The perlcore module failed to execute the code: something is wrong with the "
+"perl support"
+msgstr ""
+"Modul perlcore selhal při spuštění kódu: něco je v nepořádku s podporou perlu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:483
+msgid "Perl execution error:"
+msgstr "Spouštěcí chyba Perlu:"
diff --git a/po/modules/perl/perl_de.po b/po/modules/perl/perl_de.po
new file mode 100644
index 00000000..0a908318
--- /dev/null
+++ b/po/modules/perl/perl_de.po
@@ -0,0 +1,51 @@
+# translation of perl_de.po to german
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Szymon Stefanek <[email protected]>, 2004.
+# Christoph Thielecke <[email protected]>, 2004.
+# Markus Rennings <[email protected]>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: perl_de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-11-13 00:59+0100\n"
+"Last-Translator: Markus Rennings <[email protected]>\n"
+"Language-Team: german <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:48
+msgid "The perlcore module can't be loaded: perl support not available"
+msgstr ""
+"Das perlcore-Modul kann nicht geladen werden: Perl-Unterstützung nicht "
+"verfügbar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:49
+msgid "To see more details about loading failure try /perlcore.load"
+msgstr ""
+"Um mehr Details über den Fehler beim Laden zu erfahren /perlcore.load "
+"ausführen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:62
+msgid "This KVIrc executable has been compiled without perl scripting support"
+msgstr ""
+"Diese Version von KVIrc wurde ohne Perl-Skript-Unterstützung kompiliert"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:536
+msgid ""
+"The perlcore module failed to execute the code: something is wrong with the "
+"perl support"
+msgstr ""
+"Das Perlcore-Modul konnte den Code nicht ausführen: Irgendetwas stimmt mit "
+"der Perl-Unterstützung nicht"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:483
+msgid "Perl execution error:"
+msgstr "Perl-Ausführungsfehler:"
diff --git a/po/modules/perl/perl_es.po b/po/modules/perl/perl_es.po
new file mode 100644
index 00000000..b6be5f7f
--- /dev/null
+++ b/po/modules/perl/perl_es.po
@@ -0,0 +1,45 @@
+# translation of perl_es.po to Spanish
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# José Luis Sánchez<[email protected]>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: perl_es\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2004-10-20 23:57+0200\n"
+"Last-Translator: José Luis <[email protected]>\n"
+"Language-Team: Spanish <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:48
+msgid "The perlcore module can't be loaded: perl support not available"
+msgstr "El módulo perlcore no puede ser cargado: soporte de perl no disponible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:49
+msgid "To see more details about loading failure try /perlcore.load"
+msgstr ""
+"Para ver más detalles acerca del fallo durante la carga prueba con /perlcore."
+"load"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:62
+msgid "This KVIrc executable has been compiled without perl scripting support"
+msgstr "Este ejecutable de KVIrc ha sido compilado sin soporte de scripts perl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:536
+msgid ""
+"The perlcore module failed to execute the code: something is wrong with the "
+"perl support"
+msgstr ""
+"El módulo perlcore falló al ejecutar el código: algo está mal en el soporte "
+"de perl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:483
+msgid "Perl execution error:"
+msgstr "Error de ejecución Perl:"
diff --git a/po/modules/perl/perl_fi.po b/po/modules/perl/perl_fi.po
new file mode 100644
index 00000000..7e8e6076
--- /dev/null
+++ b/po/modules/perl/perl_fi.po
@@ -0,0 +1,42 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: perl_fi\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-11-21 17:10+0100\n"
+"PO-Revision-Date: 2007-11-27 18:38+0200\n"
+"Last-Translator: Santeri Piippo <[email protected]>\n"
+"Language-Team: LANGUAGE <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:48
+msgid "The perlcore module can't be loaded: perl support not available"
+msgstr "Moduulia perlcore ei voitu ladata: perl-tuke ei saatavilla"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:49
+msgid "To see more details about loading failure try /perlcore.load"
+msgstr "Saadaksesi lisätietoja latausvirheestä, kokeile /perlcore.load"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:62
+msgid "This KVIrc executable has been compiled without perl scripting support"
+msgstr "Tämä KVIrc suoritettava on käännetty ilman perl-skriptaus tukea"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:536
+msgid ""
+"The perlcore module failed to execute the code: something is wrong with the "
+"perl support"
+msgstr ""
+"Perlcore -moduuli ei onnistunut ajamaan koodia: jokin on vialla perl-tuessa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:483
+msgid "Perl execution error:"
+msgstr "Perl-ajo virhe:"
diff --git a/po/modules/perl/perl_fr.po b/po/modules/perl/perl_fr.po
new file mode 100644
index 00000000..c9b11db0
--- /dev/null
+++ b/po/modules/perl/perl_fr.po
@@ -0,0 +1,48 @@
+# translation of perl_fr.po to Français
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Ahinu <[email protected]>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: perl_fr\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-04-24 15:11+0200\n"
+"Last-Translator: Ahinu <[email protected]>\n"
+"Language-Team: Français <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:48
+msgid "The perlcore module can't be loaded: perl support not available"
+msgstr ""
+"Le module perlcore ne peut être chargé : le support de perl n'est pas "
+"disponible"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:49
+msgid "To see more details about loading failure try /perlcore.load"
+msgstr ""
+"Afin d'avoir plus de détails à propos du problème de chargement, essayez /"
+"perlcore.load"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:62
+msgid "This KVIrc executable has been compiled without perl scripting support"
+msgstr ""
+"Cet executable KVIrc n'a pas été compilé avec le support de scryptage perl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:536
+msgid ""
+"The perlcore module failed to execute the code: something is wrong with the "
+"perl support"
+msgstr ""
+"Le module perlcore n'a pas réussi à executer le code : il y a un problème "
+"dans le support de perl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:483
+msgid "Perl execution error:"
+msgstr "Erreur d'exécution de perl :"
diff --git a/po/modules/perl/perl_hu.po b/po/modules/perl/perl_hu.po
new file mode 100644
index 00000000..6a65dbac
--- /dev/null
+++ b/po/modules/perl/perl_hu.po
@@ -0,0 +1,43 @@
+# translation of perl_hu.po to hungarian
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# �d�m Fibinger <[email protected]>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: perl_hu\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2006-05-24 04:54+0200\n"
+"Last-Translator: �d�m Fibinger <[email protected]>\n"
+"Language-Team: hungarian <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10.2\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:48
+msgid "The perlcore module can't be loaded: perl support not available"
+msgstr "A perl mag modul nem t�lthet� be, perl t�mogat�s nem lesz el�rhet�"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:49
+msgid "To see more details about loading failure try /perlcore.load"
+msgstr "Tov�bbi r�szletek�rt a bet�lt�si hib�r�l pr�b�ld: /perlcore.load"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:62
+msgid "This KVIrc executable has been compiled without perl scripting support"
+msgstr "Ez a KVIrc verzi� perl t�mogat�s n�lk�l lett leford�tva"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:536
+msgid ""
+"The perlcore module failed to execute the code: something is wrong with the "
+"perl support"
+msgstr ""
+"A perl mag modul nem k�pes k�dot futtatni. Valami nem stimmel a perl "
+"t�mogat�ssal"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:483
+msgid "Perl execution error:"
+msgstr "Perl v�grehajt�si hiba:"
diff --git a/po/modules/perl/perl_it.po b/po/modules/perl/perl_it.po
new file mode 100644
index 00000000..21e11b72
--- /dev/null
+++ b/po/modules/perl/perl_it.po
@@ -0,0 +1,50 @@
+# translation of perl_it.po to
+# translation of perl_it.po
+# KVIrc Perl module Italian translation file
+# Italian translation file for KVIrc 3.0
+# Copyright (C) Szymon Stefanek
+# This file is distributed under the same license as the KVIrc package.
+#
+# Szymon Stefanek <pragma at kvirc dot net>, 2004.
+# Etherea <cle at virg0 dot org>, 2006.
+# Elvio Basello <[email protected]>, 2005, 2006
+# Nate Grey <[email protected]>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: perl_it\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2006-02-16 01:12+0100\n"
+"Last-Translator: Nate Grey <[email protected]>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.1\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:48
+msgid "The perlcore module can't be loaded: perl support not available"
+msgstr ""
+"Impossibile caricare il module perlcode: il supporto perl non è disponibile"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:49
+msgid "To see more details about loading failure try /perlcore.load"
+msgstr "Per altri dettagli sul fallimento del caricamento prova /perlcore.load"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:62
+msgid "This KVIrc executable has been compiled without perl scripting support"
+msgstr "Questo eseguibile KVIrc è stato compilato senza il supporto perl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:536
+msgid ""
+"The perlcore module failed to execute the code: something is wrong with the "
+"perl support"
+msgstr ""
+"Il modulo perlcore non ha eseguito il codice: il supporto perl è sbagliato"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:483
+msgid "Perl execution error:"
+msgstr "Errore nell'esecuzione perl:"
diff --git a/po/modules/perl/perl_pt.po b/po/modules/perl/perl_pt.po
new file mode 100644
index 00000000..395cbb20
--- /dev/null
+++ b/po/modules/perl/perl_pt.po
@@ -0,0 +1,48 @@
+# translation of perl_pt.po to Português
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Szymon Stefanek <[email protected]>, 2004.
+# Zé <[email protected]>, 2004.
+# José Melo <[email protected]>, 2005, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: perl_pt\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2006-05-09 01:19+0100\n"
+"Last-Translator: José Melo <[email protected]>\n"
+"Language-Team: Português <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.2\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:48
+msgid "The perlcore module can't be loaded: perl support not available"
+msgstr ""
+"O módulo perlcore não pode ser carregado: o suporte perl não está disponível"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:49
+msgid "To see more details about loading failure try /perlcore.load"
+msgstr ""
+"Para ver mais detalhes acerca da falha de carregamento tente /perlcore.load"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:62
+msgid "This KVIrc executable has been compiled without perl scripting support"
+msgstr "Este executável KVirc foi compilado sem suporte de script perl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:536
+msgid ""
+"The perlcore module failed to execute the code: something is wrong with the "
+"perl support"
+msgstr ""
+"O módulo perlcore falhou ao executar o código: alguma coisa não está "
+"correcta o suporte perl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:483
+msgid "Perl execution error:"
+msgstr "Erro de execução perl:"
diff --git a/po/modules/perl/perl_pt_BR.po b/po/modules/perl/perl_pt_BR.po
new file mode 100644
index 00000000..de752ed5
--- /dev/null
+++ b/po/modules/perl/perl_pt_BR.po
@@ -0,0 +1,45 @@
+# translation of perl_pt_BR.po to
+# translation of perl.pot to Brazilian-Protugues
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Adilson GonAalves Soares Junior <[email protected]>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: perl_pt_BR\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2004-11-15 02:21+0000\n"
+"Last-Translator: \n"
+"Language-Team: <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:48
+msgid "The perlcore module can't be loaded: perl support not available"
+msgstr ""
+"O móulo perlcore não pode ser carregado: suporte à perl não está disponivel"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:49
+msgid "To see more details about loading failure try /perlcore.load"
+msgstr "Para ver mais detalhes sobre a falha ao carregar tente /perlcore.load"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:62
+msgid "This KVIrc executable has been compiled without perl scripting support"
+msgstr "Este executável do KVirc foi compilado sem suporte perl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:536
+msgid ""
+"The perlcore module failed to execute the code: something is wrong with the "
+"perl support"
+msgstr ""
+"O módulo perlcore falhou ao executar o código: algo está errado no suporte "
+"da perl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:483
+msgid "Perl execution error:"
+msgstr "Erro de execução Perl:"
diff --git a/po/modules/perl/perl_ru.po b/po/modules/perl/perl_ru.po
new file mode 100644
index 00000000..b2bd5810
--- /dev/null
+++ b/po/modules/perl/perl_ru.po
@@ -0,0 +1,46 @@
+# translation of perl_ru.po to russian
+# translation of perl_ru.po to русский
+# translation of perl.po to русский
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Valerius <[email protected]>, 2004.
+# Valeriy Girchenko <[email protected]>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: perl_ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-02-16 19:46+0200\n"
+"Last-Translator: Valeriy Girchenko <[email protected]>\n"
+"Language-Team: russian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:48
+msgid "The perlcore module can't be loaded: perl support not available"
+msgstr "Не возможно загрузить модуль perlcore: поддержка perl не доступна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:49
+msgid "To see more details about loading failure try /perlcore.load"
+msgstr "Более подробная информация об ошибке загрузки модуля /perlcore.load"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:62
+msgid "This KVIrc executable has been compiled without perl scripting support"
+msgstr "Эта сборка KVIrc не имеет поддержки perl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:536
+msgid ""
+"The perlcore module failed to execute the code: something is wrong with the "
+"perl support"
+msgstr "Модуль perlcore не может выполнить код: проблемма с поддержкой perl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:483
+msgid "Perl execution error:"
+msgstr "Ошибка выполнения perl:"
diff --git a/po/modules/perl/perl_uk.po b/po/modules/perl/perl_uk.po
new file mode 100644
index 00000000..6f8107f4
--- /dev/null
+++ b/po/modules/perl/perl_uk.po
@@ -0,0 +1,46 @@
+# translation of perl_ua.po to
+# translation of perl_ua.po to ukrainian
+# translation of perl_ua.po to українська
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE' COPYRIGHT HOLDER.
+# Belyaev Stanislav <[email protected]>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: perl_ua\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-12-19 15:00+0200\n"
+"Last-Translator: Belyaev Stanislav <[email protected]>\n"
+"Language-Team: Ukrainian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1:2);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:48
+msgid "The perlcore module can't be loaded: perl support not available"
+msgstr "Не можливо завантажити модуль perlcore: підтримка perl не доступна"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:49
+msgid "To see more details about loading failure try /perlcore.load"
+msgstr ""
+"Більше докладна інформація про помилку завантаження модуля /perlcore.load"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:62
+msgid "This KVIrc executable has been compiled without perl scripting support"
+msgstr "Ця зборка KVIrc не має підтримки perl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:462
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:536
+msgid ""
+"The perlcore module failed to execute the code: something is wrong with the "
+"perl support"
+msgstr "Модуль perlcore не може виконати код: проблема з підтримкою perl"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:479
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perl/libkviperl.cpp:483
+msgid "Perl execution error:"
+msgstr "Помилка виконання perl:"
diff --git a/po/modules/perlcore/Makefile.am b/po/modules/perlcore/Makefile.am
new file mode 100644
index 00000000..1770b57f
--- /dev/null
+++ b/po/modules/perlcore/Makefile.am
@@ -0,0 +1,72 @@
+###############################################################################
+# KVirc IRC client Makefile - 18.09.99 Szymon Stefanek <pragma at kvirc dot net>
+###############################################################################
+
+# The name of this module
+THISMODULE = perlcore
+
+# Don't touch this
+tmpdir = $(localedir)
+
+# The *.mo files to generate
+tmp_DATA = perlcore_ca.mo \
+ perlcore_cs.mo \
+ perlcore_it.mo \
+ perlcore_de.mo \
+ perlcore_es.mo \
+ perlcore_ru.mo \
+ perlcore_pt_BR.mo \
+ perlcore_fr.mo \
+ perlcore_fi.mo \
+ perlcore_hu.mo \
+ perlcore_uk.mo
+
+# The *.po files to generate
+POFILES = perlcore_ca.po \
+ perlcore_cs.po \
+ perlcore_it.po \
+ perlcore_de.po \
+ perlcore_es.po \
+ perlcore_ru.po \
+ perlcore_pt_BR.po \
+ perlcore_fr.po \
+ perlcore_fi.po \
+ perlcore_hu.po \
+ perlcore_uk.po
+
+
+###############################################################################
+# STOP EDITING HERE
+###############################################################################
+
+# Killed the fuzzy entries: don't use them , they may SEGV
+# - touch $@ && $(SS_MSGFMT) -fvo $@ $<
+
+CLEANFILES = $(tmp_DATA)
+EXTRA_DIST = $(POFILES)
+
+%.mo: %.po
+ -touch $@ && $(SS_MSGFMT) -vo $@ $<
+
+messages-extract:
+ @find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.cpp > files; \
+ find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.h >> files; \
+ xgettext -o $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot -k__tr_ctx -k__tr_no_lookup_ctx -k__tr2qs_ctx -k__tr2wc_ctx -k__tr2ws_ctx -f files; \
+ rm files; \
+ echo "Messages extracted to $(THISMODULE).pot";
+
+messages-update:
+ @old=_old; \
+ if test -f "$(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot"; then \
+ for lang in $(POFILES); do \
+ echo "Updating file $$lang"; \
+ mv -f $$lang $$lang$$old; \
+ msgmerge -o $$lang $$lang$$old $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot && rm -f $$lang$$old; \
+ done; \
+ else \
+ echo "----------------------------------------------------"; \
+ echo "- WARNING: ./$(THISMODULE).pot does not exist"; \
+ echo "- WARNING: You must run make messages-extract first"; \
+ echo "----------------------------------------------------"; \
+ fi
+messages: messages-extract messages-update
diff --git a/po/modules/perlcore/perlcore_ca.po b/po/modules/perlcore/perlcore_ca.po
new file mode 100644
index 00000000..4bfe5c09
--- /dev/null
+++ b/po/modules/perlcore/perlcore_ca.po
@@ -0,0 +1,23 @@
+# translation of perlcore_ca.po to Català
+# translation of perlcore_es.po to Spanish
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# José Luis Sánchez <[email protected]>, 2004.
+# Marc Serra Romero <[email protected]>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: perlcore_ca\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-02-24 23:49+0100\n"
+"Last-Translator: Marc Serra Romero <[email protected]>\n"
+"Language-Team: Català <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.2\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perlcore/libkviperlcore.cpp:224
+msgid "Internal error: perl interpreter not initialized"
+msgstr "Error intern: intèrpret perl no inicializat"
diff --git a/po/modules/perlcore/perlcore_cs.po b/po/modules/perlcore/perlcore_cs.po
new file mode 100644
index 00000000..ae822048
--- /dev/null
+++ b/po/modules/perlcore/perlcore_cs.po
@@ -0,0 +1,21 @@
+# Czech translation of Kvirc 3.
+# Copyright (C) 2004 THE Kvirc 3'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the Kvirc 3 package.
+# Dusan Hokuv <[email protected]>, 2004.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Kvirc 3\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2004-10-16 11:22+0200\n"
+"Last-Translator: Dusan Hokuv <[email protected]>\n"
+"Language-Team: Czech <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perlcore/libkviperlcore.cpp:224
+msgid "Internal error: perl interpreter not initialized"
+msgstr "Interní chyba: interpreter perlu není inicializován"
diff --git a/po/modules/perlcore/perlcore_de.po b/po/modules/perlcore/perlcore_de.po
new file mode 100644
index 00000000..de926043
--- /dev/null
+++ b/po/modules/perlcore/perlcore_de.po
@@ -0,0 +1,23 @@
+# translation of perlcore_de.po to german
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Szymon Stefanek <[email protected]>, 2004.
+# Markus Rennings <[email protected]>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: perlcore_de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-11-17 01:04+0100\n"
+"Last-Translator: Markus Rennings <[email protected]>\n"
+"Language-Team: german <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perlcore/libkviperlcore.cpp:224
+msgid "Internal error: perl interpreter not initialized"
+msgstr "Interner Fehler: Perl-Interpreter nicht initialisiert"
diff --git a/po/modules/perlcore/perlcore_es.po b/po/modules/perlcore/perlcore_es.po
new file mode 100644
index 00000000..39de5637
--- /dev/null
+++ b/po/modules/perlcore/perlcore_es.po
@@ -0,0 +1,21 @@
+# translation of perlcore_es.po to Spanish
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# José Luis Sánchez <[email protected]>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: perlcore_es\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2004-10-20 23:48+0200\n"
+"Last-Translator: José Luis <[email protected]>\n"
+"Language-Team: Spanish <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perlcore/libkviperlcore.cpp:224
+msgid "Internal error: perl interpreter not initialized"
+msgstr "Error interno: intérprete perl no inicializado"
diff --git a/po/modules/perlcore/perlcore_fi.po b/po/modules/perlcore/perlcore_fi.po
new file mode 100644
index 00000000..c59892f5
--- /dev/null
+++ b/po/modules/perlcore/perlcore_fi.po
@@ -0,0 +1,21 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: perlcore_fi.po\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-11-21 17:10+0100\n"
+"PO-Revision-Date: 2007-11-27 17:58+0200\n"
+"Last-Translator: Santeri Piippo <[email protected]>\n"
+"Language-Team: LANGUAGE <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perlcore/libkviperlcore.cpp:224
+msgid "Internal error: perl interpreter not initialized"
+msgstr "Sisäinen virhe: perl tulkkia ei voitu initialisoida"
diff --git a/po/modules/perlcore/perlcore_fr.po b/po/modules/perlcore/perlcore_fr.po
new file mode 100644
index 00000000..d6200a2a
--- /dev/null
+++ b/po/modules/perlcore/perlcore_fr.po
@@ -0,0 +1,21 @@
+# translation of perlcore_fr.po to Français
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Ahinu <[email protected]>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: perlcore_fr\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-05-05 19:27+0200\n"
+"Last-Translator: Ahinu <[email protected]>\n"
+"Language-Team: Français <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perlcore/libkviperlcore.cpp:224
+msgid "Internal error: perl interpreter not initialized"
+msgstr "Erreur interne : interpréteur perl non initialisé"
diff --git a/po/modules/perlcore/perlcore_hu.po b/po/modules/perlcore/perlcore_hu.po
new file mode 100644
index 00000000..3eca2083
--- /dev/null
+++ b/po/modules/perlcore/perlcore_hu.po
@@ -0,0 +1,21 @@
+# translation of perlcore.po to hungarian
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Ádám Fibinger <[email protected]>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: perlcore\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2008-02-26 08:03+0100\n"
+"Last-Translator: Ádám Fibinger <[email protected]>\n"
+"Language-Team: hungarian <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perlcore/libkviperlcore.cpp:224
+msgid "Internal error: perl interpreter not initialized"
+msgstr "Belső hiba: perl értelmező nem lett inicializálva"
diff --git a/po/modules/perlcore/perlcore_it.po b/po/modules/perlcore/perlcore_it.po
new file mode 100644
index 00000000..220d9c39
--- /dev/null
+++ b/po/modules/perlcore/perlcore_it.po
@@ -0,0 +1,23 @@
+# translation of perlcore_it.po
+# KVIrc PerlCore module Italian translation file
+# Italian translation file for KVIrc 3.0
+# Copyright (C) Szymon Stefanek
+# This file is distributed under the same license as the KVIrc package.
+# Szymon Stefanek <pragma at kvirc dot net>, 2004.
+# Etherea <cle at virg0 dot org>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: KVIrc 3.0.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2006-02-11 16:29+0100\n"
+"Last-Translator: Etherea <cle at virg0 dot org>\n"
+"Language-Team: Italian <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perlcore/libkviperlcore.cpp:224
+msgid "Internal error: perl interpreter not initialized"
+msgstr "Errore interno: interprete perl non inizializzato"
diff --git a/po/modules/perlcore/perlcore_pt_BR.po b/po/modules/perlcore/perlcore_pt_BR.po
new file mode 100644
index 00000000..7665e91c
--- /dev/null
+++ b/po/modules/perlcore/perlcore_pt_BR.po
@@ -0,0 +1,22 @@
+# translation of perlcore_pt_BR.po to
+# translation of perlcore.pot to Brazilian-Protugues
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Adilson GonAalves Soares Junior <[email protected]>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: perlcore_pt_BR\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2004-11-15 02:21+0000\n"
+"Last-Translator: \n"
+"Language-Team: <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perlcore/libkviperlcore.cpp:224
+msgid "Internal error: perl interpreter not initialized"
+msgstr "Erro interno: interpretador perl não inicializado"
diff --git a/po/modules/perlcore/perlcore_ru.po b/po/modules/perlcore/perlcore_ru.po
new file mode 100644
index 00000000..70970c80
--- /dev/null
+++ b/po/modules/perlcore/perlcore_ru.po
@@ -0,0 +1,26 @@
+# translation of perlcore_ru.po to russian
+# translation of perlcore_ru.po to русский
+# translation of perlcore.po to русский
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Valerius <[email protected]>, 2004.
+# Valeriy Girchenko <[email protected]>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: perlcore_ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-02-16 19:46+0200\n"
+"Last-Translator: Valeriy Girchenko <[email protected]>\n"
+"Language-Team: russian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perlcore/libkviperlcore.cpp:224
+msgid "Internal error: perl interpreter not initialized"
+msgstr "Внутренняя ошибка: интерпретатор perl не инициализирован"
diff --git a/po/modules/perlcore/perlcore_uk.po b/po/modules/perlcore/perlcore_uk.po
new file mode 100644
index 00000000..a8a411b9
--- /dev/null
+++ b/po/modules/perlcore/perlcore_uk.po
@@ -0,0 +1,26 @@
+# translation of perlcore_ua.po to
+# translation of perlcore_ua.po to ukrainian
+# translation of perlcore_ua.po to українська
+# translation of perlcore.po to українська
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE' COPYRIGHT HOLDER.
+# Belyaev Stanislav <[email protected]>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: perlcore_ua\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-12-19 15:00+0200\n"
+"Last-Translator: Belyaev Stanislav <[email protected]>\n"
+"Language-Team: Ukrainian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1:2);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/perlcore/libkviperlcore.cpp:224
+msgid "Internal error: perl interpreter not initialized"
+msgstr "Внутрішня помилка: інтерпретатор perl не ініаліцізован"
diff --git a/po/modules/sharedfileswindow/Makefile.am b/po/modules/sharedfileswindow/Makefile.am
new file mode 100644
index 00000000..159b56b0
--- /dev/null
+++ b/po/modules/sharedfileswindow/Makefile.am
@@ -0,0 +1,77 @@
+###############################################################################
+# KVirc IRC client Makefile - 18.09.99 Szymon Stefanek <pragma at kvirc dot net>
+###############################################################################
+
+# The name of this module
+THISMODULE = sharedfileswindow
+
+# Don't touch this
+tmpdir = $(localedir)
+
+# The *.mo files to generate
+tmp_DATA = sharedfileswindow_ca.mo \
+ sharedfileswindow_cs.mo \
+ sharedfileswindow_it.mo \
+ sharedfileswindow_de.mo \
+ sharedfileswindow_es.mo \
+ sharedfileswindow_pt.mo \
+ sharedfileswindow_ru.mo \
+ sharedfileswindow_pt_BR.mo \
+ sharedfileswindow_fr.mo \
+ sharedfileswindow_fi.mo \
+ sharedfileswindow_hr.mo \
+ sharedfileswindow_hu.mo \
+ sharedfileswindow_uk.mo
+
+# The *.po files to generate
+POFILES = sharedfileswindow_ca.po \
+ sharedfileswindow_cs.po \
+ sharedfileswindow_it.po \
+ sharedfileswindow_de.po \
+ sharedfileswindow_es.po \
+ sharedfileswindow_pt.po \
+ sharedfileswindow_ru.po \
+ sharedfileswindow_pt_BR.po \
+ sharedfileswindow_fr.po \
+ sharedfileswindow_fi.po \
+ sharedfileswindow_hr.po \
+ sharedfileswindow_hu.po \
+ sharedfileswindow_uk.po
+
+
+###############################################################################
+# STOP EDITING HERE
+###############################################################################
+
+# Killed the fuzzy entries: don't use them , they may SEGV
+# - touch $@ && $(SS_MSGFMT) -fvo $@ $<
+
+CLEANFILES = $(tmp_DATA)
+EXTRA_DIST = $(POFILES)
+
+%.mo: %.po
+ -touch $@ && $(SS_MSGFMT) -vo $@ $<
+
+messages-extract:
+ @find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.cpp > files; \
+ find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.h >> files; \
+ xgettext -o $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot -k__tr_ctx -k__tr_no_lookup_ctx -k__tr2qs_ctx -k__tr2wc_ctx -k__tr2ws_ctx -f files; \
+ rm files; \
+ echo "Messages extracted to $(THISMODULE).pot";
+
+messages-update:
+ @old=_old; \
+ if test -f "$(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot"; then \
+ for lang in $(POFILES); do \
+ echo "Updating file $$lang"; \
+ mv -f $$lang $$lang$$old; \
+ msgmerge -o $$lang $$lang$$old $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot && rm -f $$lang$$old; \
+ done; \
+ else \
+ echo "----------------------------------------------------"; \
+ echo "- WARNING: ./$(THISMODULE).pot does not exist"; \
+ echo "- WARNING: You must run make messages-extract first"; \
+ echo "----------------------------------------------------"; \
+ fi
+
+messages: messages-extract messages-update
diff --git a/po/modules/sharedfileswindow/sharedfileswindow_ca.po b/po/modules/sharedfileswindow/sharedfileswindow_ca.po
new file mode 100644
index 00000000..c5c8a1d8
--- /dev/null
+++ b/po/modules/sharedfileswindow/sharedfileswindow_ca.po
@@ -0,0 +1,124 @@
+# translation of sharedfileswindow_ca.po to Catal�
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Marc Serra Romero <[email protected]>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sharedfileswindow_ca\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-02-24 23:55+0100\n"
+"Last-Translator: Marc Serra Romero <[email protected]>\n"
+"Language-Team: Catal� <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.2\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/libkvisharedfileswindow.cpp:125
+msgid "Manage S&hared Files"
+msgstr "Gestionar Arxius Compartides"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:60
+msgid "Edit Shared File - KVIrc"
+msgstr "Editar Arxiu Compartit - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:62
+msgid "Share name:"
+msgstr "Nom compartit:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:68
+msgid "File path:"
+msgstr "Ruta de l'Arxiu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:74
+msgid "&Browse..."
+msgstr "&Navegar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:78
+msgid "User mask:"
+msgstr "M�scara d'usuari:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:84
+msgid "Expire at:"
+msgstr "Expira el:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:94
+msgid "&OK"
+msgstr "&Acceptar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:98
+msgid "Cancel"
+msgstr "Cancel�lar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:156
+msgid "Invalid expire time"
+msgstr "Moment d'expiraci� no v�lid"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:157
+msgid ""
+"The expire date/time is in the past: please either remove the \"expires"
+"\"check mark or specify a expire date/time in the future"
+msgstr ""
+"La data/hora d'expiraci� pertanyent al passat: si us plau, desactiva l'opci� "
+"\"comprobar expiraci�\" o especifica una data/hora del futur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:159
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:176
+msgid "OK"
+msgstr "Acceptar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:165
+msgid "Invalid share name"
+msgstr "El nom d'arxiu a compartir no �s v�lid"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:166
+msgid "The share name can't be empty, please correct it"
+msgstr ""
+"El nom de l'arxiu compartit no pot estar buit; si us plau, corretgeixi-ho"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:174
+msgid "Can't open the file"
+msgstr "No he pogut obrir l'arxiu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:175
+msgid "The file doesn't exist or it is not readable, please check the path"
+msgstr "L'arxiu no existeix o no es pot llegir,si us plau, verifiqui la ruta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:195
+msgid "Never"
+msgstr "Mai"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:220
+msgid "Name"
+msgstr "Nom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:221
+msgid "Filename"
+msgstr "Nom de l'arxiu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:222
+msgid "Mask"
+msgstr "M�scara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:223
+msgid "Expires"
+msgstr "Expira"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:233
+msgid "&Add..."
+msgstr "&Afegir..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:235
+msgid "Re&move"
+msgstr "Eli&minar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:237
+msgid "&Edit"
+msgstr "&Editar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:689
+msgid "Shared Files"
+msgstr "Arxius Compartits"
diff --git a/po/modules/sharedfileswindow/sharedfileswindow_cs.po b/po/modules/sharedfileswindow/sharedfileswindow_cs.po
new file mode 100644
index 00000000..1d1634c8
--- /dev/null
+++ b/po/modules/sharedfileswindow/sharedfileswindow_cs.po
@@ -0,0 +1,124 @@
+# Czech translation of Kvirc.
+# Copyright (C) 2004 THE Kvirc'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the Kvirc package.
+# Dušan Hokův <[email protected]>, 2004.
+# , fuzzy
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Kvirc\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2004-06-22 19:09+0200\n"
+"Last-Translator: Dušan Hokův <[email protected]>\n"
+"Language-Team: Czech <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/libkvisharedfileswindow.cpp:125
+msgid "Manage S&hared Files"
+msgstr "Spravovat S&dílené soubory"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:60
+msgid "Edit Shared File - KVIrc"
+msgstr "Upravit sdílený soubor - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:62
+msgid "Share name:"
+msgstr "Název sdílení:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:68
+msgid "File path:"
+msgstr "Cesta k souboru:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:74
+msgid "&Browse..."
+msgstr "&Procházet..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:78
+msgid "User mask:"
+msgstr "Uživ. maska:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:84
+msgid "Expire at:"
+msgstr "Vyprší v:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:94
+msgid "&OK"
+msgstr "&OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:98
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:156
+msgid "Invalid expire time"
+msgstr "Neplatný čas vypršení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:157
+msgid ""
+"The expire date/time is in the past: please either remove the \"expires"
+"\"check mark or specify a expire date/time in the future"
+msgstr ""
+"The expire date/time is in the past: please either remove the \"expires"
+"\"check mark or specify a expire date/time in the future"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:159
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:176
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:165
+msgid "Invalid share name"
+msgstr "Neplatný název sdílení"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:166
+msgid "The share name can't be empty, please correct it"
+msgstr "Název sdílení nemůže být prázdný, prosím upravte jej"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:174
+msgid "Can't open the file"
+msgstr "Nelze otevřít soubor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:175
+msgid "The file doesn't exist or it is not readable, please check the path"
+msgstr "Soubor neexistuje nebo není čitelný, prosím zkontrolujte cestu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:195
+msgid "Never"
+msgstr "Nikdy"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:220
+msgid "Name"
+msgstr "Jméno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:221
+msgid "Filename"
+msgstr "Soubor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:222
+msgid "Mask"
+msgstr "Maska"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:223
+msgid "Expires"
+msgstr "Vyprší"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:233
+msgid "&Add..."
+msgstr "&Přidat..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:235
+msgid "Re&move"
+msgstr "Od&ebrat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:237
+msgid "&Edit"
+msgstr "&Upravit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:689
+msgid "Shared Files"
+msgstr "Sdílené soubory"
diff --git a/po/modules/sharedfileswindow/sharedfileswindow_de.po b/po/modules/sharedfileswindow/sharedfileswindow_de.po
new file mode 100644
index 00000000..b86005d1
--- /dev/null
+++ b/po/modules/sharedfileswindow/sharedfileswindow_de.po
@@ -0,0 +1,125 @@
+# translation of sharedfileswindow_de2.po to Deutsch
+# translation of sharedfileswindow_de.po to Deutsch
+# translation of sharedfileswindow.po to Deutsch
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Christoph Thielecke <[email protected]>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sharedfileswindow_de2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2004-05-12 00:27+0200\n"
+"Last-Translator: Christoph Thielecke <[email protected]>\n"
+"Language-Team: Deutsch <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-15\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/libkvisharedfileswindow.cpp:125
+msgid "Manage S&hared Files"
+msgstr "&Freigegebene Daterien verwalten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:60
+msgid "Edit Shared File - KVIrc"
+msgstr "Freigegebene Daterien bearbeiten - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:62
+msgid "Share name:"
+msgstr "Freigabename:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:68
+msgid "File path:"
+msgstr "Dateipfad:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:74
+msgid "&Browse..."
+msgstr "&Ausw�hlen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:78
+msgid "User mask:"
+msgstr "Benutzermaske:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:84
+msgid "Expire at:"
+msgstr "L�uft ab am:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:94
+msgid "&OK"
+msgstr "&OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:98
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:156
+msgid "Invalid expire time"
+msgstr "Ung�ltige Ablaufzeit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:157
+msgid ""
+"The expire date/time is in the past: please either remove the \"expires"
+"\"check mark or specify a expire date/time in the future"
+msgstr ""
+"Das Ablaufdatum/die Ablaufzeit ist in der Vergangenheit: Bitte \"L�uft ab\"-"
+"Option deaktivieren oder ein Datum/eine Zeit in der Zukunft angeben"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:159
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:176
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:165
+msgid "Invalid share name"
+msgstr "Ung�ltiger Freigabename"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:166
+msgid "The share name can't be empty, please correct it"
+msgstr "Der Freigabename kann nicht leer sein, bitte korrigieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:174
+msgid "Can't open the file"
+msgstr "Datei kann nicht ge�ffnet werden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:175
+msgid "The file doesn't exist or it is not readable, please check the path"
+msgstr "Die Datei existiert nicht oder ist nicht lesbar, bitte Pfad pr�fen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:195
+msgid "Never"
+msgstr "Nie"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:220
+msgid "Name"
+msgstr "Name"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:221
+msgid "Filename"
+msgstr "Dateiname"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:222
+msgid "Mask"
+msgstr "Maske"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:223
+msgid "Expires"
+msgstr "L�uft ab"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:233
+msgid "&Add..."
+msgstr "&Hinzuf�gen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:235
+msgid "Re&move"
+msgstr "&L�schen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:237
+msgid "&Edit"
+msgstr "&Bearbeiten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:689
+msgid "Shared Files"
+msgstr "Freigegebene Dateien"
diff --git a/po/modules/sharedfileswindow/sharedfileswindow_es.po b/po/modules/sharedfileswindow/sharedfileswindow_es.po
new file mode 100644
index 00000000..71c6c1e1
--- /dev/null
+++ b/po/modules/sharedfileswindow/sharedfileswindow_es.po
@@ -0,0 +1,123 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sharedfileswindow_es\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2004-04-05 16:30+0200\n"
+"Last-Translator: Jos� Luis S�nchez <[email protected]>\n"
+"Language-Team: espa�ol <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/libkvisharedfileswindow.cpp:125
+msgid "Manage S&hared Files"
+msgstr "Gestionar Archivos Compartidos"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:60
+msgid "Edit Shared File - KVIrc"
+msgstr "Editar Archivo Compartido - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:62
+msgid "Share name:"
+msgstr "Nombre compartido:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:68
+msgid "File path:"
+msgstr "Ruta del Archivo:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:74
+msgid "&Browse..."
+msgstr "&Navegar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:78
+msgid "User mask:"
+msgstr "M�scara de usuario:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:84
+msgid "Expire at:"
+msgstr "Expira el:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:94
+msgid "&OK"
+msgstr "&Aceptar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:98
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:156
+msgid "Invalid expire time"
+msgstr "Momento de expiraci�n no v�lido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:157
+msgid ""
+"The expire date/time is in the past: please either remove the \"expires"
+"\"check mark or specify a expire date/time in the future"
+msgstr ""
+"La fecha/hora de expiraci�n pertenece al pasado: por favor, desactiva la "
+"opci�n \"comprobar expiraci�n\" o especifica una fecha/hora del futuro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:159
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:176
+msgid "OK"
+msgstr "Aceptar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:165
+msgid "Invalid share name"
+msgstr "El nombre de archivo a compartir no es v�lido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:166
+msgid "The share name can't be empty, please correct it"
+msgstr ""
+"El nombre del archivo compartido no puede estar vac�o; por favor, corr�gelo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:174
+msgid "Can't open the file"
+msgstr "No pude abrir el archivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:175
+msgid "The file doesn't exist or it is not readable, please check the path"
+msgstr "El archivo no existe o no se puede leer, por favor, comprueba la ruta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:195
+msgid "Never"
+msgstr "Nunca"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:220
+msgid "Name"
+msgstr "Nombre"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:221
+msgid "Filename"
+msgstr "Nombre del archivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:222
+msgid "Mask"
+msgstr "M�scara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:223
+msgid "Expires"
+msgstr "Expira"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:233
+msgid "&Add..."
+msgstr "&A�adir..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:235
+msgid "Re&move"
+msgstr "Eli&minar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:237
+msgid "&Edit"
+msgstr "&Editar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:689
+msgid "Shared Files"
+msgstr "Archivos Compartidos"
diff --git a/po/modules/sharedfileswindow/sharedfileswindow_fi.po b/po/modules/sharedfileswindow/sharedfileswindow_fi.po
new file mode 100644
index 00000000..4d70ec6c
--- /dev/null
+++ b/po/modules/sharedfileswindow/sharedfileswindow_fi.po
@@ -0,0 +1,123 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Santeri Piippo <[email protected]>, 2007.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: sharedfileswindow_fi\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-11-21 17:10+0100\n"
+"PO-Revision-Date: 2007-11-27 19:58+0200\n"
+"Last-Translator: Santeri Piippo <[email protected]>\n"
+"Language-Team: LANGUAGE <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/libkvisharedfileswindow.cpp:125
+msgid "Manage S&hared Files"
+msgstr "Järjestä &jaettuja tiedostoja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:60
+msgid "Edit Shared File - KVIrc"
+msgstr "Muokkaa jaettua tiedostoa - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:62
+msgid "Share name:"
+msgstr "Jaosnimi:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:68
+msgid "File path:"
+msgstr "Polku:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:74
+msgid "&Browse..."
+msgstr "&Selaa..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:78
+msgid "User mask:"
+msgstr "Käyttäjämaski:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:84
+msgid "Expire at:"
+msgstr "Poistuu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:94
+msgid "&OK"
+msgstr "&OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:98
+msgid "Cancel"
+msgstr "Peruuta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:156
+msgid "Invalid expire time"
+msgstr "Vääränmuotoinen poistumisaika"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:157
+msgid ""
+"The expire date/time is in the past: please either remove the \"expires"
+"\"check mark or specify a expire date/time in the future"
+msgstr ""
+"Poistumisaika/päiväys on menneisyydessä: poista joko \"poistuu\" -valinta "
+"tai valitse aika/päiväys tulevaisuudesta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:159
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:176
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:165
+msgid "Invalid share name"
+msgstr "Vääränmuotoinen jaosnimi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:166
+msgid "The share name can't be empty, please correct it"
+msgstr "Jaosnimi ei voi olla tyhjä, ole hyvä ja korjaa se"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:174
+msgid "Can't open the file"
+msgstr "Ei voida avata tiedostoa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:175
+msgid "The file doesn't exist or it is not readable, please check the path"
+msgstr "Tiedosto ei joko ole olemassa tai sitä ei voi lukea, ole hyvä ja tarkista polku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:195
+msgid "Never"
+msgstr "Ei koskaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:220
+msgid "Name"
+msgstr "Nimi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:221
+msgid "Filename"
+msgstr "Tiedostonimi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:222
+msgid "Mask"
+msgstr "Maski"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:223
+msgid "Expires"
+msgstr "Poistuu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:233
+msgid "&Add..."
+msgstr "&Lisää..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:235
+msgid "Re&move"
+msgstr "&Poista"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:237
+msgid "&Edit"
+msgstr "&Muokkaa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:689
+msgid "Shared Files"
+msgstr "Jaetut tiedostot"
diff --git a/po/modules/sharedfileswindow/sharedfileswindow_fr.po b/po/modules/sharedfileswindow/sharedfileswindow_fr.po
new file mode 100644
index 00000000..1cdd0260
--- /dev/null
+++ b/po/modules/sharedfileswindow/sharedfileswindow_fr.po
@@ -0,0 +1,123 @@
+# translation of sharedfileswindow_fr.po to Français
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Ahinu <[email protected]>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sharedfileswindow_fr\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-05-05 19:40+0200\n"
+"Last-Translator: Ahinu <[email protected]>\n"
+"Language-Team: Français <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/libkvisharedfileswindow.cpp:125
+msgid "Manage S&hared Files"
+msgstr "Gérer Fichiers P&artagés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:60
+msgid "Edit Shared File - KVIrc"
+msgstr "Éditer Fichier Partagés - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:62
+msgid "Share name:"
+msgstr "Nom de partage :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:68
+msgid "File path:"
+msgstr "Chemin du fichier :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:74
+msgid "&Browse..."
+msgstr "&Naviguer..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:78
+msgid "User mask:"
+msgstr "Masque utilisateur :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:84
+msgid "Expire at:"
+msgstr "Expire le :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:94
+msgid "&OK"
+msgstr "&Valider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:98
+msgid "Cancel"
+msgstr "Annuler"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:156
+msgid "Invalid expire time"
+msgstr "Date d'expiration invalide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:157
+msgid ""
+"The expire date/time is in the past: please either remove the \"expires"
+"\"check mark or specify a expire date/time in the future"
+msgstr ""
+"La date d'expiration est dans le passé : décochez la marque \"Expirations\" "
+"ou spécifiez une date future"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:159
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:176
+msgid "OK"
+msgstr "Valider"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:165
+msgid "Invalid share name"
+msgstr "Nom de partage invalide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:166
+msgid "The share name can't be empty, please correct it"
+msgstr "Le nom de partage de fichier ne peut être vide, corrigez le"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:174
+msgid "Can't open the file"
+msgstr "Impossible d'ouvrir le fichier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:175
+msgid "The file doesn't exist or it is not readable, please check the path"
+msgstr "Le fichier n'existe pas ou est illisible, vérifiez le chemin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:195
+msgid "Never"
+msgstr "Jamais"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:220
+msgid "Name"
+msgstr "Nom"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:221
+msgid "Filename"
+msgstr "Nom de fichier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:222
+msgid "Mask"
+msgstr "Masque"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:223
+msgid "Expires"
+msgstr "Expirations"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:233
+msgid "&Add..."
+msgstr "&Ajouter..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:235
+msgid "Re&move"
+msgstr "Suppri&mer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:237
+msgid "&Edit"
+msgstr "&Editer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:689
+msgid "Shared Files"
+msgstr "Fichiers Partagés"
diff --git a/po/modules/sharedfileswindow/sharedfileswindow_hr.po b/po/modules/sharedfileswindow/sharedfileswindow_hr.po
new file mode 100644
index 00000000..a72713bf
--- /dev/null
+++ b/po/modules/sharedfileswindow/sharedfileswindow_hr.po
@@ -0,0 +1,123 @@
+# translation of sharedfileswindow_hr.po to Hrvatski
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# SpeedyGhost <[email protected]>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: sharedfileswindow_hr\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2008-02-14 02:40+0100\n"
+"Last-Translator: SpeedyGhost <[email protected]>\n"
+"Language-Team: Hrvatski <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/libkvisharedfileswindow.cpp:125
+msgid "Manage S&hared Files"
+msgstr "Manage S&hared Files"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:60
+msgid "Edit Shared File - KVIrc"
+msgstr "Uredi Dijeljene Datoteke - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:62
+msgid "Share name:"
+msgstr "Dijeljeno ime:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:68
+msgid "File path:"
+msgstr "Putanja datoteke:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:74
+msgid "&Browse..."
+msgstr "&Pretraži..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:78
+msgid "User mask:"
+msgstr "Korisnička maska:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:84
+msgid "Expire at:"
+msgstr "Ističe:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:94
+msgid "&OK"
+msgstr "&OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:98
+msgid "Cancel"
+msgstr "Poništi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:156
+msgid "Invalid expire time"
+msgstr "Neispravno vrijeme trajanja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:157
+msgid ""
+"The expire date/time is in the past: please either remove the \"expires"
+"\"check mark or specify a expire date/time in the future"
+msgstr ""
+"Vrijeme isticanja je u prošlosti: molim ili uklonite \"ističe\" kvačicu, ili "
+"odredite vrijeme isticanja u budućnosti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:159
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:176
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:165
+msgid "Invalid share name"
+msgstr "Neispravno dijeljeno ime"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:166
+msgid "The share name can't be empty, please correct it"
+msgstr "Dijeljeno ime ne može biti prazno, molim ispravite"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:174
+msgid "Can't open the file"
+msgstr "Ne mogu otvoriti datoteku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:175
+msgid "The file doesn't exist or it is not readable, please check the path"
+msgstr "Datoteka ne postoji ili nije čitljiva, molim provjerite putanju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:195
+msgid "Never"
+msgstr "Nikada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:220
+msgid "Name"
+msgstr "Ime"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:221
+msgid "Filename"
+msgstr "Ime datoteke"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:222
+msgid "Mask"
+msgstr "Maska"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:223
+msgid "Expires"
+msgstr "ističe"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:233
+msgid "&Add..."
+msgstr "Dod&aj..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:235
+msgid "Re&move"
+msgstr "Uklo&ni"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:237
+msgid "&Edit"
+msgstr "Ure&edi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:689
+msgid "Shared Files"
+msgstr "Dijeljene Datoteke"
diff --git a/po/modules/sharedfileswindow/sharedfileswindow_hu.po b/po/modules/sharedfileswindow/sharedfileswindow_hu.po
new file mode 100644
index 00000000..2806e051
--- /dev/null
+++ b/po/modules/sharedfileswindow/sharedfileswindow_hu.po
@@ -0,0 +1,124 @@
+# translation of sharedfileswindow_hu.po to hungarian
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Ádám Fibinger <[email protected]>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: sharedfileswindow_hu\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2008-03-03 10:03+0100\n"
+"Last-Translator: Ádám Fibinger <[email protected]>\n"
+"Language-Team: hungarian <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/libkvisharedfileswindow.cpp:125
+msgid "Manage S&hared Files"
+msgstr "Megosztott fájlok kezelése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:60
+msgid "Edit Shared File - KVIrc"
+msgstr "Megosztott fájl szerkesztése - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:62
+msgid "Share name:"
+msgstr "Megosztási név:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:68
+msgid "File path:"
+msgstr "Fájl útvonala:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:74
+msgid "&Browse..."
+msgstr "&Böngészés..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:78
+msgid "User mask:"
+msgstr "Felhasználó maszk:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:84
+msgid "Expire at:"
+msgstr "Lejár:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:94
+msgid "&OK"
+msgstr "&OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:98
+msgid "Cancel"
+msgstr "Mégsem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:156
+msgid "Invalid expire time"
+msgstr "Helytelen lejárati idő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:157
+msgid ""
+"The expire date/time is in the past: please either remove the \"expires"
+"\"check mark or specify a expire date/time in the future"
+msgstr ""
+"A lejárati idő/dátum a múltban van, kérlek ne használd a lejárati időt vagy "
+"adj meg helyes, jövőbeli időt/dátumot."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:159
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:176
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:165
+msgid "Invalid share name"
+msgstr "Helytelen megosztási név"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:166
+msgid "The share name can't be empty, please correct it"
+msgstr "A megosztási név nem lehet üres, kérlek javítsd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:174
+msgid "Can't open the file"
+msgstr "Fájl nem nyitható meg"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:175
+msgid "The file doesn't exist or it is not readable, please check the path"
+msgstr ""
+"A fájl nem létezik, vagy nem olvasható: kérlek ellenőrízd az elérési utat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:195
+msgid "Never"
+msgstr "Soha"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:220
+msgid "Name"
+msgstr "Név"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:221
+msgid "Filename"
+msgstr "Fájlnév"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:222
+msgid "Mask"
+msgstr "Maszk"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:223
+msgid "Expires"
+msgstr "Lejárat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:233
+msgid "&Add..."
+msgstr "Hozzáadás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:235
+msgid "Re&move"
+msgstr "Eltávolítás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:237
+msgid "&Edit"
+msgstr "Szerkesztés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:689
+msgid "Shared Files"
+msgstr "Megosztott Fájlok"
diff --git a/po/modules/sharedfileswindow/sharedfileswindow_it.po b/po/modules/sharedfileswindow/sharedfileswindow_it.po
new file mode 100644
index 00000000..16c1c6db
--- /dev/null
+++ b/po/modules/sharedfileswindow/sharedfileswindow_it.po
@@ -0,0 +1,128 @@
+# translation of sharedfileswindow_it.po to
+# translation of sharedfileswindow_it.po
+# KVIrc SharedFilesWindow module Italian translation file
+# Italian translation file for KVIrc 3.0
+# Copyright (C) Szymon Stefanek
+# This file is distributed under the same license as the KVIrc package.
+# Eva <[email protected]>, 2004.
+# Etherea <cle at virg0 dot org>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sharedfileswindow_it\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2006-06-06 01:57+0200\n"
+"Last-Translator: \n"
+"Language-Team: <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.2\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/libkvisharedfileswindow.cpp:125
+msgid "Manage S&hared Files"
+msgstr "Organizza File &Condivisi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:60
+msgid "Edit Shared File - KVIrc"
+msgstr "Edita File Condivisi - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:62
+msgid "Share name:"
+msgstr "Nome Condiviso:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:68
+msgid "File path:"
+msgstr "Percorso:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:74
+msgid "&Browse..."
+msgstr "&Scegli..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:78
+msgid "User mask:"
+msgstr "Maschera Utente:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:84
+msgid "Expire at:"
+msgstr "Scadenza:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:94
+msgid "&OK"
+msgstr "&OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:98
+msgid "Cancel"
+msgstr "Cancella"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:156
+msgid "Invalid expire time"
+msgstr "Tempo di scadenza non valido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:157
+msgid ""
+"The expire date/time is in the past: please either remove the \"expires"
+"\"check mark or specify a expire date/time in the future"
+msgstr ""
+"La data/ora di scadenza è impostata al passato: per favore rimuovi l'opzione "
+"\"Scandenza\" o specifica una data/ora con scadenza futura"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:159
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:176
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:165
+msgid "Invalid share name"
+msgstr "Nome condiviso non valido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:166
+msgid "The share name can't be empty, please correct it"
+msgstr "Il nome condiviso non puo essere nullo, perfavore correggerlo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:174
+msgid "Can't open the file"
+msgstr "Impossibile aprire il file"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:175
+msgid "The file doesn't exist or it is not readable, please check the path"
+msgstr ""
+"Il file non esiste o non è leggibile, perfavore controlla il suo percorso"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:195
+msgid "Never"
+msgstr "Mai"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:220
+msgid "Name"
+msgstr "Nome"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:221
+msgid "Filename"
+msgstr "Nome del File"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:222
+msgid "Mask"
+msgstr "Maschera"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:223
+msgid "Expires"
+msgstr "Scadenza"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:233
+msgid "&Add..."
+msgstr "&Aggiungi..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:235
+msgid "Re&move"
+msgstr "&Rimuovi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:237
+msgid "&Edit"
+msgstr "&Modifica"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:689
+msgid "Shared Files"
+msgstr "File Condivisi"
diff --git a/po/modules/sharedfileswindow/sharedfileswindow_pt.po b/po/modules/sharedfileswindow/sharedfileswindow_pt.po
new file mode 100644
index 00000000..6e2f71cf
--- /dev/null
+++ b/po/modules/sharedfileswindow/sharedfileswindow_pt.po
@@ -0,0 +1,128 @@
+# translation of sharedfileswindow_pt.po to Português
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Zé <[email protected]>, 2004.
+# José Melo <[email protected]>, 2005, 2006.
+# José Melo <[email protected]>, 2005.
+# Zé <[email protected]>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: sharedfileswindow_pt\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2006-11-03 17:39+0000\n"
+"Last-Translator: Zé <[email protected]>\n"
+"Language-Team: Português <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/libkvisharedfileswindow.cpp:125
+msgid "Manage S&hared Files"
+msgstr "&Gerir Ficheiros Partilhados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:60
+msgid "Edit Shared File - KVIrc"
+msgstr "Editar Ficheiro Partilhado - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:62
+msgid "Share name:"
+msgstr "Nome partilhado:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:68
+msgid "File path:"
+msgstr "Localização de ficheiros:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:74
+msgid "&Browse..."
+msgstr "&Procurar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:78
+msgid "User mask:"
+msgstr "Máscara de utilizador:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:84
+msgid "Expire at:"
+msgstr "Expira em:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:94
+msgid "&OK"
+msgstr "&OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:98
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:156
+msgid "Invalid expire time"
+msgstr "Tempo de expiração inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:157
+msgid ""
+"The expire date/time is in the past: please either remove the \"expires"
+"\"check mark or specify a expire date/time in the future"
+msgstr ""
+"A data/hora de expiração está no passado: por favor remova a opção \"expira"
+"\" ou indique uma data/hora de expiração no futuro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:159
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:176
+msgid "OK"
+msgstr "OK"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:165
+msgid "Invalid share name"
+msgstr "Nome de partilha inválido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:166
+msgid "The share name can't be empty, please correct it"
+msgstr "O nome da partilha não pode estar vazio, por favor corrija-o"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:174
+msgid "Can't open the file"
+msgstr "Não é possível abrir o ficheiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:175
+msgid "The file doesn't exist or it is not readable, please check the path"
+msgstr ""
+"O ficheiro não existe ou ão esta legível, por favor verifique a localização"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:195
+msgid "Never"
+msgstr "Nunca"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:220
+msgid "Name"
+msgstr "Nome"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:221
+msgid "Filename"
+msgstr "Nome de ficheiro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:222
+msgid "Mask"
+msgstr "Máscara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:223
+msgid "Expires"
+msgstr "Expira"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:233
+msgid "&Add..."
+msgstr "&Adicionar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:235
+msgid "Re&move"
+msgstr "Re&mover"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:237
+msgid "&Edit"
+msgstr "&Editar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:689
+msgid "Shared Files"
+msgstr "Ficheiros Partilhados"
diff --git a/po/modules/sharedfileswindow/sharedfileswindow_pt_BR.po b/po/modules/sharedfileswindow/sharedfileswindow_pt_BR.po
new file mode 100644
index 00000000..a0401427
--- /dev/null
+++ b/po/modules/sharedfileswindow/sharedfileswindow_pt_BR.po
@@ -0,0 +1,128 @@
+# translation of sharedfileswindow_pt_BR.po to
+# translation of sharedfileswindow_pt_BR.po to
+# translation of sharedfileswindow_pt.po to
+# translation of sharedfileswindow_es.po to Portugu�s
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Z� <[email protected]>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sharedfileswindow_pt_BR\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2004-11-15 02:22+0000\n"
+"Last-Translator: \n"
+"Language-Team: <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/libkvisharedfileswindow.cpp:125
+msgid "Manage S&hared Files"
+msgstr "&Ger�nciar Arquivos Compartilhados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:60
+msgid "Edit Shared File - KVIrc"
+msgstr "Editar Arquivo Compartilhado - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:62
+msgid "Share name:"
+msgstr "Nome de compartilhamento:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:68
+msgid "File path:"
+msgstr "Caminho dos Arquivos:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:74
+msgid "&Browse..."
+msgstr "&Procurar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:78
+msgid "User mask:"
+msgstr "M�scara de usu�rio:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:84
+msgid "Expire at:"
+msgstr "Expira em:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:94
+msgid "&OK"
+msgstr "&Aceitar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:98
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:156
+msgid "Invalid expire time"
+msgstr "Tempo de expira��o inv�lido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:157
+msgid ""
+"The expire date/time is in the past: please either remove the \"expires"
+"\"check mark or specify a expire date/time in the future"
+msgstr ""
+"A data/hora de expira��o foi ultrapassada: por favor, desative a op��o "
+"\"verificar expira��o\" ou espec�fique uma data/hora de expira��o no futuro"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:159
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:176
+msgid "OK"
+msgstr "Aceitar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:165
+msgid "Invalid share name"
+msgstr "Nome de compartilhamento inv�lido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:166
+msgid "The share name can't be empty, please correct it"
+msgstr ""
+"O nome do arquivo compartilhado n�o pode estar vazio, por favor corrija isto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:174
+msgid "Can't open the file"
+msgstr "N�o foi poss�vel abrir o arquivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:175
+msgid "The file doesn't exist or it is not readable, please check the path"
+msgstr ""
+"O arquivo n�o existe ou n�o esta acess�vel, por favor verifique o caminho"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:195
+msgid "Never"
+msgstr "Nunca"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:220
+msgid "Name"
+msgstr "Nome"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:221
+msgid "Filename"
+msgstr "Nome de arquivo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:222
+msgid "Mask"
+msgstr "M�scara"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:223
+msgid "Expires"
+msgstr "Expira"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:233
+msgid "&Add..."
+msgstr "&Adicionar..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:235
+msgid "Re&move"
+msgstr "Re&mover"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:237
+msgid "&Edit"
+msgstr "&Editar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:689
+msgid "Shared Files"
+msgstr "Arquivos Compartilhados"
diff --git a/po/modules/sharedfileswindow/sharedfileswindow_ru.po b/po/modules/sharedfileswindow/sharedfileswindow_ru.po
new file mode 100644
index 00000000..c9412178
--- /dev/null
+++ b/po/modules/sharedfileswindow/sharedfileswindow_ru.po
@@ -0,0 +1,129 @@
+# translation of sharedfileswindow_ru.po to russian
+# translation of sharedfileswindow_ru.po to русский
+# translation of sharedfileswindow.po to русский
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Valerius <[email protected]>, 2004.
+# Valeriy Girchenko <[email protected]>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sharedfileswindow_ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2005-02-16 19:47+0200\n"
+"Last-Translator: Valeriy Girchenko <[email protected]>\n"
+"Language-Team: russian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/libkvisharedfileswindow.cpp:125
+msgid "Manage S&hared Files"
+msgstr "Управление &общими файлами"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:60
+msgid "Edit Shared File - KVIrc"
+msgstr "Редактирование общих файлов - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:62
+msgid "Share name:"
+msgstr "Имя общего файла:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:68
+msgid "File path:"
+msgstr "Путь к файлу:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:74
+msgid "&Browse..."
+msgstr "&Просмотр..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:78
+msgid "User mask:"
+msgstr "Маска пользователя:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:84
+msgid "Expire at:"
+msgstr "Истекает в:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:94
+msgid "&OK"
+msgstr "&Ок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:98
+msgid "Cancel"
+msgstr "Отмена"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:156
+msgid "Invalid expire time"
+msgstr "Недействительное время окончания"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:157
+msgid ""
+"The expire date/time is in the past: please either remove the \"expires"
+"\"check mark or specify a expire date/time in the future"
+msgstr ""
+"Истекла дата/время: пожалуйста удалите одно из двух этих значений, проверьте "
+"и укажите дату/время для использования в будущем"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:159
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:176
+msgid "OK"
+msgstr "Ок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:165
+msgid "Invalid share name"
+msgstr "Недействительное имя общего файла"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:166
+msgid "The share name can't be empty, please correct it"
+msgstr "Имя общего файла не может быть пустым, пожалуйста скорректируйте его"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:174
+msgid "Can't open the file"
+msgstr "Не возможно открыть файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:175
+msgid "The file doesn't exist or it is not readable, please check the path"
+msgstr "Файл не существует или не читаем, пожалуйста проверьте путь"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:195
+msgid "Never"
+msgstr "Никогда"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:220
+msgid "Name"
+msgstr "Имя"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:221
+msgid "Filename"
+msgstr "Имя файла"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:222
+msgid "Mask"
+msgstr "Маска"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:223
+msgid "Expires"
+msgstr "Заканчивается"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:233
+msgid "&Add..."
+msgstr "&Добавить..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:235
+msgid "Re&move"
+msgstr "&Удалить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:237
+msgid "&Edit"
+msgstr "&Редактировать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:689
+msgid "Shared Files"
+msgstr "Общие файлы"
diff --git a/po/modules/sharedfileswindow/sharedfileswindow_uk.po b/po/modules/sharedfileswindow/sharedfileswindow_uk.po
new file mode 100644
index 00000000..d221d8b0
--- /dev/null
+++ b/po/modules/sharedfileswindow/sharedfileswindow_uk.po
@@ -0,0 +1,130 @@
+# translation of sharedfileswindow_ua.po to
+# translation of sharedfileswindow_ua.po to ukrainian
+# translation of sharedfileswindow_ua.po to українська
+# translation of sharedfileswindow.po to українська
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE' COPYRIGHT HOLDER.
+# Belyaev Stanislav <[email protected]>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sharedfileswindow_ua\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-12-19 15:00+0200\n"
+"Last-Translator: Belyaev Stanislav <[email protected]>\n"
+"Language-Team: Ukrainian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1:2);\n"
+"10<=4 && (n%100<10 || n%100>=20) ? 1:2);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/libkvisharedfileswindow.cpp:125
+msgid "Manage S&hared Files"
+msgstr "Керування &загальними файлами"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:60
+msgid "Edit Shared File - KVIrc"
+msgstr "Редагування загальних файлів - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:62
+msgid "Share name:"
+msgstr "Ім'я загального файлу:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:68
+msgid "File path:"
+msgstr "Шлях до файлу:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:74
+msgid "&Browse..."
+msgstr "&Перегляд..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:78
+msgid "User mask:"
+msgstr "Маска користувача:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:84
+msgid "Expire at:"
+msgstr "Минає в:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:94
+msgid "&OK"
+msgstr "&Ок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:98
+msgid "Cancel"
+msgstr "Скасування"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:156
+msgid "Invalid expire time"
+msgstr "Недійсний час закінчення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:157
+msgid ""
+"The expire date/time is in the past: please either remove the \"expires"
+"\"check mark or specify a expire date/time in the future"
+msgstr ""
+"Минула дата/час: будь ласка видалите одне із двох цих значень, перевірте і "
+"вкажіть дату/час для використання в майбутньому"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:159
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:167
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:176
+msgid "OK"
+msgstr "Ок"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:165
+msgid "Invalid share name"
+msgstr "Недійсне ім'я загального файлу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:166
+msgid "The share name can't be empty, please correct it"
+msgstr ""
+"Ім'я загального файлу не може бути порожнім, будь ласка скорегуйте його"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:174
+msgid "Can't open the file"
+msgstr "Не можливо відкрити файл"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:175
+msgid "The file doesn't exist or it is not readable, please check the path"
+msgstr "Файл не існує або не читаємо, будь ласка перевірте шлях"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:195
+msgid "Never"
+msgstr "Ніколи"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:220
+msgid "Name"
+msgstr "Ім'я"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:221
+msgid "Filename"
+msgstr "Ім'я файлу"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:222
+msgid "Mask"
+msgstr "Маска"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:223
+msgid "Expires"
+msgstr "Закінчується"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:233
+msgid "&Add..."
+msgstr "&Додати..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:235
+msgid "Re&move"
+msgstr "&Видалити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:237
+msgid "&Edit"
+msgstr "&Редагувати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/sharedfileswindow/sharedfileswindow.cpp:689
+msgid "Shared Files"
+msgstr "Загальні файли"
diff --git a/po/modules/theme/Makefile.am b/po/modules/theme/Makefile.am
new file mode 100644
index 00000000..c45e1435
--- /dev/null
+++ b/po/modules/theme/Makefile.am
@@ -0,0 +1,68 @@
+###############################################################################
+# KVirc IRC client Makefile - 18.09.99 Szymon Stefanek <pragma at kvirc dot net>
+###############################################################################
+
+# The name of this module
+THISMODULE = theme
+
+# Don't touch this
+tmpdir = $(localedir)
+
+# The *.mo files to generate
+tmp_DATA = theme_it.mo \
+ theme_ru.mo \
+ theme_pt.mo \
+ theme_de.mo \
+ theme_fi.mo \
+ theme_cs.mo \
+ theme_hu.mo \
+ theme_uk.mo \
+ theme_fr.mo
+
+# The *.po files to generate
+POFILES = theme_it.po \
+ theme_ru.po \
+ theme_pt.po \
+ theme_de.po \
+ theme_fi.po \
+ theme_cs.po \
+ theme_hu.po \
+ theme_uk.po \
+ theme_fr.po
+
+
+###############################################################################
+# STOP EDITING HERE
+###############################################################################
+
+# Killed the fuzzy entries: don't use them , they may SEGV
+# - touch $@ && $(SS_MSGFMT) -fvo $@ $<
+
+CLEANFILES = $(tmp_DATA)
+EXTRA_DIST = $(POFILES)
+
+%.mo: %.po
+ -touch $@ && $(SS_MSGFMT) -vo $@ $<
+
+messages-extract:
+ @find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.cpp > files; \
+ find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.h >> files; \
+ xgettext -o $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot -k__tr_ctx -k__tr_no_lookup_ctx -k__tr2qs_ctx -k__tr2wc_ctx -k__tr2ws_ctx -f files; \
+ rm files; \
+ echo "Messages extracted to $(THISMODULE).pot";
+
+messages-update:
+ @old=_old; \
+ if test -f "$(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot"; then \
+ for lang in $(POFILES); do \
+ echo "Updating file $$lang"; \
+ mv -f $$lang $$lang$$old; \
+ msgmerge -o $$lang $$lang$$old $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot && rm -f $$lang$$old; \
+ done; \
+ else \
+ echo "----------------------------------------------------"; \
+ echo "- WARNING: ./$(THISMODULE).pot does not exist"; \
+ echo "- WARNING: You must run make messages-extract first"; \
+ echo "----------------------------------------------------"; \
+ fi
+messages: messages-extract messages-update
diff --git a/po/modules/theme/theme_cs.po b/po/modules/theme/theme_cs.po
new file mode 100644
index 00000000..0bd972ec
--- /dev/null
+++ b/po/modules/theme/theme_cs.po
@@ -0,0 +1,370 @@
+# Czech translation of Kvirc.
+# Copyright (C) 2004 THE Kvirc'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the Kvirc package.
+# Dušan Hokův <[email protected]>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Kvirc\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-12-05 18:29+0100\n"
+"Last-Translator: Dusan Hokuv <[email protected]>\n"
+"Language-Team: Czech <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:50
+msgid "The selected file does not seem to be a valid KVIrc theme package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:70
+msgid "The selected file does not seem to be a valid KVIrc package: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:316
+msgid "Author"
+msgstr "Autor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:317
+msgid "Created at"
+msgstr "Vytvořeno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:318
+msgid "Created with"
+msgstr "Vytvořeno s"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:200
+msgid "Warning: The theme might be incompatible with this version of KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:209
+msgid "Go Back to Package Data"
+msgstr "Zpět na data balíčku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:216
+msgid ""
+"Warning: Some of the theme contained in this package might be either "
+"corrupted or incompatible with this version of KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:220
+msgid "Show Details"
+msgstr "Zobrazit detaily"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:272
+msgid "Install Theme Pack - KVIrc"
+msgstr "Instalovat Balíček témat - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:273
+msgid "You're about to install the following theme package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:274
+msgid "Do you want to proceed with the installation ?"
+msgstr "Chcete pokračovat v instalaci?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:275
+msgid "Do Not Install"
+msgstr "Neinstalovat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:276
+msgid "Yes, Proceed"
+msgstr "Ano, pokračovat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:293
+msgid "Failed to unpack the selected file: %Q"
+msgstr "Selhalo rozbalení zvoleného souboru: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:319
+msgid "Theme Engine Version"
+msgstr "Verze enginu témat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:320
+msgid "Subdirectory"
+msgstr "Podadresář"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:87
+msgid "Your name here"
+msgstr "Vaše jméno"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:89
+msgid "Put a package description here..."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:347
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:476
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+msgid "Export Theme - KVIrc"
+msgstr "Eport tématu - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:130
+msgid ""
+"This procedure allows you to export the selected themes to a single package. "
+"It is useful when you want to distribute your themes to the public."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:132
+msgid ""
+"You will be asked to provide a package name, a description and, if you want, "
+"an icon/screenshot."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:83
+msgid "Hit the \"Next\" button to begin."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:90
+msgid "Welcome"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:153
+msgid ""
+"This is the information list for the themes you're packaging. If it looks OK "
+"press \"Next\" to continue, otherwise press \"Cancel\" and rewiew your "
+"themes first."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:203
+msgid "Theme Data"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:215
+msgid ""
+"Here you need to provide informations about you (the packager) and a short "
+"description of the package you're creating."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:220
+msgid "Package Name:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:228
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:115
+msgid "Version:"
+msgstr "Verze:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:236
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:123
+msgid "Description:"
+msgstr "Popis:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:244
+msgid "Package Author:"
+msgstr "Autor balíčku:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:255
+msgid "Package Informations"
+msgstr "Informace o balíčku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:267
+msgid ""
+"Here you can choose the image that will appear in the installation dialog "
+"for your theme package. It can be an icon, a logo or a screenshot and it "
+"should be not larger than 300x225. If you don't provide an image a simple "
+"default icon will be used at installation stage."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:284
+msgid "Icon/Screenshot"
+msgstr "Ikona/Snímek obrazovky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:296
+msgid ""
+"Here you must choose the file name for the theme package. It should have a *."
+"%1 extension."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:306
+msgid "Finally hit the \"Finish\" button to complete the packaging operation."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:312
+msgid "Package Path"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:347
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:206
+msgid "Failed to load the selected image"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:387
+msgid "Failed to load the selected image: please fix it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:461
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:473
+msgid "Packaging failed"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:73
+msgid "Error installing theme package: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:110
+msgid "Choose a file to save the screenshot to"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:125
+msgid "Error making screenshot"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:101
+msgid "by"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:147
+msgid "Manage Themes - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:165
+msgid "Save Current Theme..."
+msgstr "Uložit současné téma..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:175
+msgid "Export Selected Themes to a Distributable Package"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:181
+msgid "Delete Selected Themes"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:191
+msgid "Install Theme Package From Disk"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:197
+msgid "Get More Themes..."
+msgstr "Získat další témata..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:286
+msgid "&Remove Theme"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:287
+msgid "&Apply Theme"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:316
+msgid "Apply theme - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:304
+msgid "Do you wish to apply theme \"%Q\" (version %Q)?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:315
+msgid "Failed to apply the specified theme: %Q"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:329
+msgid "Delete Theme - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:330
+msgid "Do you really wish to delete theme \"%Q\" (version %Q)?"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:346
+msgid "Open Theme - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:206
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:264
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:286
+msgid "Save Current Theme - KVIrc"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:79
+msgid ""
+"This procedure allows you to save the current theme settings to a single "
+"directory. It is useful if you want to apply other themes or play with the "
+"theme settings and later come back to this theme with a single click. It "
+"will also allow you to manually modify the theme settings and later export "
+"them to a distributable package."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:81
+msgid ""
+"You will be asked to provide a theme name, a description and, if you want, a "
+"screenshot."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:102
+msgid ""
+"Here you need to provide informations about you (the author) and a short "
+"description of the theme you're creating."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:107
+msgid "Theme Name:"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:131
+msgid "Theme Author:"
+msgstr "Autor tématu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:142
+msgid "Theme Informations"
+msgstr "Informace o tématu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:154
+msgid ""
+"Here you can either choose a screenshot image from disk or make one now. The "
+"screenshot will be displayed in the tooltips of the theme management dialog "
+"and will be also visible in the package installation dialog if you will "
+"export the theme to a distributable package."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:170
+msgid "Make Screenshot Now"
+msgstr "Udělat snímek obrazovky nyní"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:177
+msgid "Screenshot"
+msgstr "Snímek obrazovky"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:227
+msgid "Acquire Screenshot - KVIrc"
+msgstr "Udělat snímek obrazovky - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:227
+msgid "Failed to make screenshot"
+msgstr "Vytvoření snímku obrazovky selhalo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:243
+msgid "You must choose a theme name!"
+msgstr "Musíte si vybrat název tématu!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:264
+msgid "Unable to create theme directory."
+msgstr "Nelze vytvořit adresář tématu."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:275
+msgid "Unable to save theme: %Q"
+msgstr "Nelze uložit soubor: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:286
+msgid "Failed to load the selected screenshot image: please fix it"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:293
+msgid "Theme saved successfully to "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:296
+msgid "Save Theme - KVIrc"
+msgstr ""
diff --git a/po/modules/theme/theme_de.po b/po/modules/theme/theme_de.po
new file mode 100644
index 00000000..d2b94bcf
--- /dev/null
+++ b/po/modules/theme/theme_de.po
@@ -0,0 +1,407 @@
+# translation of theme_de.po to german
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Markus Rennings <[email protected]>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: theme_de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-11-17 22:17+0100\n"
+"Last-Translator: Markus Rennings <[email protected]>\n"
+"Language-Team: german <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:50
+msgid "The selected file does not seem to be a valid KVIrc theme package"
+msgstr "Die ausgewählte Datei scheint kein gültiges KVIrc-Themenpaket zu sein"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:70
+msgid "The selected file does not seem to be a valid KVIrc package: %Q"
+msgstr "Die ausgewählte Datei scheint kein gültiges KVIrc-Paket zu sein: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:316
+msgid "Author"
+msgstr "Autor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:317
+msgid "Created at"
+msgstr "Erstellt am"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:318
+msgid "Created with"
+msgstr "Erstellt mit"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:200
+msgid "Warning: The theme might be incompatible with this version of KVIrc"
+msgstr "Warnung: Das Thema könnte inkompatibel mit dieser KVIrc-Version sein"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:209
+msgid "Go Back to Package Data"
+msgstr "Zurück zu den Paketdaten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:216
+msgid ""
+"Warning: Some of the theme contained in this package might be either "
+"corrupted or incompatible with this version of KVIrc"
+msgstr ""
+"Warnung: Einiges des Themas dieses Pakets kann fehlerhaft oder inkompatibel "
+"mit dieser KVIrc-Version sein"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:220
+msgid "Show Details"
+msgstr "Details anzeigen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:272
+msgid "Install Theme Pack - KVIrc"
+msgstr "Themenpaket installieren - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:273
+msgid "You're about to install the following theme package"
+msgstr "Du installierst das folgende Themenpaket"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:274
+msgid "Do you want to proceed with the installation ?"
+msgstr "Willst Du mit der Installation forfahren?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:275
+msgid "Do Not Install"
+msgstr "Nicht installieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:276
+msgid "Yes, Proceed"
+msgstr "Ja, weitermachen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:293
+msgid "Failed to unpack the selected file: %Q"
+msgstr "Entpacken der ausgewählten Datei fehlgeschlagen: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:319
+msgid "Theme Engine Version"
+msgstr "Themenroutine-Version"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:320
+msgid "Subdirectory"
+msgstr "Unterverzeichnis"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:87
+msgid "Your name here"
+msgstr "Dein Name hier"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:89
+msgid "Put a package description here..."
+msgstr "Trage hier eine Paketbeschreibung ein..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:347
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:476
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+msgid "Export Theme - KVIrc"
+msgstr "Thema exportieren - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:130
+msgid ""
+"This procedure allows you to export the selected themes to a single package. "
+"It is useful when you want to distribute your themes to the public."
+msgstr ""
+"Diese Prozedur erlaubt das Exportieren des ausgewählten Themas in ein "
+"einzelnes Paket. Dies ist nützlich, um das Thema öffentlich zu verteilen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:132
+msgid ""
+"You will be asked to provide a package name, a description and, if you want, "
+"an icon/screenshot."
+msgstr ""
+"Du wirst aufgefordert werden, einen Paketnamen und eine Beschreibung "
+"anzugeben, und wenn gewünscht ein Icon/Bildschirmabbild (Screenshot)."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:83
+msgid "Hit the \"Next\" button to begin."
+msgstr "Klicke auf \"Weiter\" um zu beginnen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:90
+msgid "Welcome"
+msgstr "Willkommen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:153
+msgid ""
+"This is the information list for the themes you're packaging. If it looks OK "
+"press \"Next\" to continue, otherwise press \"Cancel\" and rewiew your "
+"themes first."
+msgstr ""
+"Dies ist die Informationsliste für das zu packende Thema. Wenn es Ok "
+"aussieht, drücke \"Weiter\" um weiter zu machen, ansonsten klicke \"Abbrechen"
+"\" und überprüfe das Thema zuvor."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:203
+msgid "Theme Data"
+msgstr "Themendaten"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:215
+msgid ""
+"Here you need to provide informations about you (the packager) and a short "
+"description of the package you're creating."
+msgstr ""
+"Hier musst Du Informationen über Dich (den Packer) angeben und eine kurze "
+"Beschreibung des zu erstellenden Pakets."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:220
+msgid "Package Name:"
+msgstr "Paketname:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:228
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:115
+msgid "Version:"
+msgstr "Version:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:236
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:123
+msgid "Description:"
+msgstr "Beschreibung:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:244
+msgid "Package Author:"
+msgstr "Paketautor:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:255
+msgid "Package Informations"
+msgstr "Paketinformationen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:267
+msgid ""
+"Here you can choose the image that will appear in the installation dialog "
+"for your theme package. It can be an icon, a logo or a screenshot and it "
+"should be not larger than 300x225. If you don't provide an image a simple "
+"default icon will be used at installation stage."
+msgstr ""
+"Hier kannst Du ein Bild wählen, das im Installationsdialog für dieses Paket "
+"erscheinen soll. Es kann ein Icon, ein Logo oder ein Bildschirmabbild sein "
+"und sollte nicht größer als 300x225 sein. Wenn Du kein Bild angibst, wird "
+"ein einfaches Standard-icon bei der Installation benutzt."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:284
+msgid "Icon/Screenshot"
+msgstr "Icon/Bildschirmabbild"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:296
+msgid ""
+"Here you must choose the file name for the theme package. It should have a *."
+"%1 extension."
+msgstr ""
+"Hier musst Du einen Dateinamen für das Themenpaket angeben. Dieser sollte "
+"eine *.%1-Erweiterung haben."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:306
+msgid "Finally hit the \"Finish\" button to complete the packaging operation."
+msgstr ""
+"Zum Schluss klicke den \"Beenden\"-Knopf, um das Paketerstellen "
+"abzuschließen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:312
+msgid "Package Path"
+msgstr "Paketpfad"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:347
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:206
+msgid "Failed to load the selected image"
+msgstr "Laden des ausgewählten Bildes fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:387
+msgid "Failed to load the selected image: please fix it"
+msgstr "Laden des ausgewählten Bildes fehlgeschlagen: Bitte reparieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:461
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:473
+msgid "Packaging failed"
+msgstr "Paket erstellen fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:73
+msgid "Error installing theme package: %Q"
+msgstr "Fehler beim Installieren des Themenpakets: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:110
+msgid "Choose a file to save the screenshot to"
+msgstr "Datei zum Speichern des Bildschirmabbildes wählen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:125
+msgid "Error making screenshot"
+msgstr "Fehler beim Erstellen des Bildschirmabbildes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:101
+msgid "by"
+msgstr "von"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:147
+msgid "Manage Themes - KVIrc"
+msgstr "Themen verwalten - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:165
+msgid "Save Current Theme..."
+msgstr "Aktuelles Thema speichern..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:175
+msgid "Export Selected Themes to a Distributable Package"
+msgstr "Ausgewählte Themen in ein verteilbares Paket exportieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:181
+msgid "Delete Selected Themes"
+msgstr "Ausgewählte Themen löschen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:191
+msgid "Install Theme Package From Disk"
+msgstr "Themenpaket von Festplatte installieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:197
+msgid "Get More Themes..."
+msgstr "Mehr Themen..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:286
+msgid "&Remove Theme"
+msgstr "Thema entfe&rnen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:287
+msgid "&Apply Theme"
+msgstr "Thema &anwenden"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:316
+msgid "Apply theme - KVIrc"
+msgstr "Thema anwenden - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:304
+msgid "Do you wish to apply theme \"%Q\" (version %Q)?"
+msgstr "Willst Du das Thema \"%Q\" (Version %Q) anwenden?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:315
+msgid "Failed to apply the specified theme: %Q"
+msgstr "Anwenden des angegebenen Themas fehlgeschlagen: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:329
+msgid "Delete Theme - KVIrc"
+msgstr "Thema löschen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:330
+msgid "Do you really wish to delete theme \"%Q\" (version %Q)?"
+msgstr "Willst Du wirklich das Thema \"%Q\" (Version %Q) löschen?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:346
+msgid "Open Theme - KVIrc"
+msgstr "Thema öffnen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:206
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:264
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:286
+msgid "Save Current Theme - KVIrc"
+msgstr "Aktuelles Thema speichern - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:79
+msgid ""
+"This procedure allows you to save the current theme settings to a single "
+"directory. It is useful if you want to apply other themes or play with the "
+"theme settings and later come back to this theme with a single click. It "
+"will also allow you to manually modify the theme settings and later export "
+"them to a distributable package."
+msgstr ""
+"Diese Prozedur erlaubt es, die aktuellen Themeneinstellungen in ein "
+"einzelnes Verzeichnis zu speichern. Dies ist nützlich, wenn man andere "
+"Themen anwenden will, oder mit den Themeneinstellungen spielen will und "
+"später mit einem Klick zu diesem Thema zurückkommen will. Es ermöglicht "
+"auch, manuell die Themeneinstellungen zu verändern und später in ein zu "
+"verteilendes Paket zu exportieren."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:81
+msgid ""
+"You will be asked to provide a theme name, a description and, if you want, a "
+"screenshot."
+msgstr ""
+"Du wirst aufgefordert werden, einen Themennamen und eine Beschreibung "
+"anzugeben, und wenn gewünscht ein Bildschirmabbild (Screenshot)."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:102
+msgid ""
+"Here you need to provide informations about you (the author) and a short "
+"description of the theme you're creating."
+msgstr ""
+"Hier musst Du Informationen über Dich (den Autor) und eine Kurzbeschreibung "
+"des zu erstellenden Themas angeben."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:107
+msgid "Theme Name:"
+msgstr "Themenname:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:131
+msgid "Theme Author:"
+msgstr "Themenautor:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:142
+msgid "Theme Informations"
+msgstr "Themeninformationen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:154
+msgid ""
+"Here you can either choose a screenshot image from disk or make one now. The "
+"screenshot will be displayed in the tooltips of the theme management dialog "
+"and will be also visible in the package installation dialog if you will "
+"export the theme to a distributable package."
+msgstr ""
+"Hier kannst Du entweder ein Bildschirmabbild von der Festplatte wählen oder "
+"ein neues erstellen. Das Bildschirmabbild wird in den Werkzeugtips (tool "
+"tips) des Themenmanagement-Dialogs angezeigt und wird auch im "
+"Paketinstallationsdialog sichtbar sein, wenn Du das Paket in ein zu "
+"verteilendes Paket exportierst."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:170
+msgid "Make Screenshot Now"
+msgstr "Jetzt Bildschirmabbild erstellen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:177
+msgid "Screenshot"
+msgstr "Bildschirmabbild"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:227
+msgid "Acquire Screenshot - KVIrc"
+msgstr "Bildschirmabbild erfassen - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:227
+msgid "Failed to make screenshot"
+msgstr "Erstellen des Bildschirmabbildes fehlgeschlagen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:243
+msgid "You must choose a theme name!"
+msgstr "Du musst einen Themennamen wählen!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:264
+msgid "Unable to create theme directory."
+msgstr "Konnte das Themenverzeichnis nicht erstellen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:275
+msgid "Unable to save theme: %Q"
+msgstr "Konnte das Thema nicht speichern: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:286
+msgid "Failed to load the selected screenshot image: please fix it"
+msgstr ""
+"Laden des gewählten Bildschirmabbildes fehlgeschlagen: Bitte reparieren"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:293
+msgid "Theme saved successfully to "
+msgstr "Thema erfolgreich gespeichert nach "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:296
+msgid "Save Theme - KVIrc"
+msgstr "Thema speichern - KVIrc"
diff --git a/po/modules/theme/theme_fi.po b/po/modules/theme/theme_fi.po
new file mode 100644
index 00000000..3029f731
--- /dev/null
+++ b/po/modules/theme/theme_fi.po
@@ -0,0 +1,398 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:50
+msgid "The selected file does not seem to be a valid KVIrc theme package"
+msgstr "Valittu tiedosto ei näytä olevan kelvollinen KVIrc -teemapaketti"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:70
+msgid "The selected file does not seem to be a valid KVIrc package: %Q"
+msgstr "Valittu tiedosto ei näytä olevan kelvollinen KVIrc -teemapaketti: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:316
+msgid "Author"
+msgstr "Tekijä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:317
+msgid "Created at"
+msgstr "Luotu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:318
+msgid "Created with"
+msgstr "Luotu käyttäen ohjelmaa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:200
+msgid "Warning: The theme might be incompatible with this version of KVIrc"
+msgstr "Varoitus: Tämä teema saattaa olla ei-yhteensopiva tämän KVIrc -version kanssa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:209
+msgid "Go Back to Package Data"
+msgstr "Mene takaisin paketoidaksesi dataa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:216
+msgid ""
+"Warning: Some of the theme contained in this package might be either "
+"corrupted or incompatible with this version of KVIrc"
+msgstr ""
+"Varoitus: Jotkin teeman sisältämät osat saattavat olla joko "
+"kelvottomia tai ei-yhteensopivia tämän KVIrc -version kanssa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:220
+msgid "Show Details"
+msgstr "Näytä lisätiedot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:272
+msgid "Install Theme Pack - KVIrc"
+msgstr "Asenna teemapaketti - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:273
+msgid "You're about to install the following theme package"
+msgstr "Aiot asentaa seuraavan teemapaketin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:274
+msgid "Do you want to proceed with the installation ?"
+msgstr "Haluatko jatkaa asennusta ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:275
+msgid "Do Not Install"
+msgstr "Älä asenna"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:276
+msgid "Yes, Proceed"
+msgstr "Kyllä, jatka"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:293
+msgid "Failed to unpack the selected file: %Q"
+msgstr "Ei voitu purkaa valittua tiedostoa: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:319
+msgid "Theme Engine Version"
+msgstr "Teemakoneiston versio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:320
+msgid "Subdirectory"
+msgstr "Alikansio"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:87
+msgid "Your name here"
+msgstr "Sinun nimi tähän"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:89
+msgid "Put a package description here..."
+msgstr "Laita tähän kuvaus..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:347
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:476
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+msgid "Export Theme - KVIrc"
+msgstr "Vie teema - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:130
+msgid ""
+"This procedure allows you to export the selected themes to a single package. "
+"It is useful when you want to distribute your themes to the public."
+msgstr ""
+"Tämä proseduuri sallii sinun viedä valitut teemat yhteen pakettiin. "
+"Se on kätevää kun haluat jakaa teemasi."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:132
+msgid ""
+"You will be asked to provide a package name, a description and, if you want, "
+"an icon/screenshot."
+msgstr ""
+"Sinua pyydetään antamaan paketin nimi, kuvaus, ja jos haluat, kuvake/kuvakaappaus."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:83
+msgid "Hit the \"Next\" button to begin."
+msgstr "Paina \"Seuraava\" -nappia aloittaaksesi."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:90
+msgid "Welcome"
+msgstr "Tervetuloa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:153
+msgid ""
+"This is the information list for the themes you're packaging. If it looks OK "
+"press \"Next\" to continue, otherwise press \"Cancel\" and rewiew your "
+"themes first."
+msgstr ""
+"Tämä on tietolista teemoista joita paketoit. Jos se näyttää oikealta, paina "
+"\"Seuraava\" -nappia jatkaaksesi, muutoin paina \"Peruuta\" ja käy läpi teemasi "
+"ensin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:203
+msgid "Theme Data"
+msgstr "Teeman tietoja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:215
+msgid ""
+"Here you need to provide informations about you (the packager) and a short "
+"description of the package you're creating."
+msgstr ""
+"Tänne sinun on annettava tietoja sinusta (paketoija) ja lyhyt kuvaus "
+"paketista jonka luot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:220
+msgid "Package Name:"
+msgstr "Paketin nimi:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:228
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:115
+msgid "Version:"
+msgstr "Versio:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:236
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:123
+msgid "Description:"
+msgstr "Kuvaus:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:244
+msgid "Package Author:"
+msgstr "Tekijä:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:255
+msgid "Package Informations"
+msgstr "Paketin tietoja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:267
+msgid ""
+"Here you can choose the image that will appear in the installation dialog "
+"for your theme package. It can be an icon, a logo or a screenshot and it "
+"should be not larger than 300x225. If you don't provide an image a simple "
+"default icon will be used at installation stage."
+msgstr ""
+"Täällä voit valita kuvan mikä näkyy asennusikkunassa, joka asentaa tämän teeman. "
+"Se voi olla kuvake, logo, tai kuvakaappaus, eikä sen pitäisi olla suurempi kuin "
+"300x225. Jos et anna kuvaa, yksinkertainen oletuskuvake näytetään asennuksen "
+"aikana."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:284
+msgid "Icon/Screenshot"
+msgstr "Kuvake/Kuvakaappaus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:296
+msgid ""
+"Here you must choose the file name for the theme package. It should have a *."
+"%1 extension."
+msgstr ""
+"Täällä sinun täytyy valita tiedostonimi teemapaketille. Sen pitäisi käyttää *."
+"%1 -päätettä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:306
+msgid "Finally hit the \"Finish\" button to complete the packaging operation."
+msgstr "Lopulta, paina \"Valmis\" -nappia saadaksesi paketoinnin tehdyksi."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:312
+msgid "Package Path"
+msgstr "Paketin polku"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:347
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:206
+msgid "Failed to load the selected image"
+msgstr "Ei voitu ladata valittua kuvaa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:387
+msgid "Failed to load the selected image: please fix it"
+msgstr "Ei voitu ladata valittua kuvaa: ole hyvä ja korjaa se"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:461
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:473
+msgid "Packaging failed"
+msgstr "Paketointi epäonnistui"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:73
+msgid "Error installing theme package: %Q"
+msgstr "Virhe asentaessa teemapakettia: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:110
+msgid "Choose a file to save the screenshot to"
+msgstr "Valitse tiedosto mihin kuvakaappaus tallennetaan"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:125
+msgid "Error making screenshot"
+msgstr "Virhe kuvakaappausta tehdessä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:101
+msgid "by"
+msgstr "tekijänä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:147
+msgid "Manage Themes - KVIrc"
+msgstr "Järjestä teemat - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:165
+msgid "Save Current Theme..."
+msgstr "Tallenna nykyinen teema..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:175
+msgid "Export Selected Themes to a Distributable Package"
+msgstr "Vie valitut teemat jaettavaan pakettiin"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:181
+msgid "Delete Selected Themes"
+msgstr "Poista valitut teemat"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:191
+msgid "Install Theme Package From Disk"
+msgstr "Asenna teemapaketti levyltä"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:197
+msgid "Get More Themes..."
+msgstr "Hae lisää teemoja..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:286
+msgid "&Remove Theme"
+msgstr "&Poista teema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:287
+msgid "&Apply Theme"
+msgstr "&Ota teema käyttöön"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:316
+msgid "Apply theme - KVIrc"
+msgstr "Ota teema käyttöön - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:304
+msgid "Do you wish to apply theme \"%Q\" (version %Q)?"
+msgstr "Haluatko ottaa teeman \"%Q\"n (versio %Q) käyttöön?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:315
+msgid "Failed to apply the specified theme: %Q"
+msgstr "Ei voitu ottaa teemaa käyttöön: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:329
+msgid "Delete Theme - KVIrc"
+msgstr "Poista teema - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:330
+msgid "Do you really wish to delete theme \"%Q\" (version %Q)?"
+msgstr "Halutako varmasti poistaa teeman \"%Q\"n (versio %Q)?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:346
+msgid "Open Theme - KVIrc"
+msgstr "Avaa teema - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:206
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:264
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:286
+msgid "Save Current Theme - KVIrc"
+msgstr "Tallenna nykyinen teema - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:79
+msgid ""
+"This procedure allows you to save the current theme settings to a single "
+"directory. It is useful if you want to apply other themes or play with the "
+"theme settings and later come back to this theme with a single click. It "
+"will also allow you to manually modify the theme settings and later export "
+"them to a distributable package."
+msgstr ""
+"Tämä proseduuri sallii sinun tallentaa nykyiset teema-asetukset yhteen "
+"kansion. Se on kätevää jos haluat ottaa muun teeman käyttöön tai leikkiä "
+"teema-asetuksien kanssa ja tulla myöhemmin takaisin ottaaksesi vanhan teeman "
+"käyttöön yhdella napin painalluksella. Se myös sallii sinun muokata teema-asetuksia "
+"ja myöhemmin viedä ne jaettavaan pakettiin."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:81
+msgid ""
+"You will be asked to provide a theme name, a description and, if you want, a "
+"screenshot."
+msgstr ""
+"Sinua pyydetään antamaan teeman nimi, kuvaus, ja jos haluat, kuvakaappaus."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:102
+msgid ""
+"Here you need to provide informations about you (the author) and a short "
+"description of the theme you're creating."
+msgstr ""
+"Tänne sinun täytyy antaa tietoja sinusta (tekijästä) ja lyhyt kuvaus teemasta "
+"jota olet luomassa."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:107
+msgid "Theme Name:"
+msgstr "Teeman nimi:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:131
+msgid "Theme Author:"
+msgstr "Teeman tekijä:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:142
+msgid "Theme Informations"
+msgstr "Teeman tietoja"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:154
+msgid ""
+"Here you can either choose a screenshot image from disk or make one now. The "
+"screenshot will be displayed in the tooltips of the theme management dialog "
+"and will be also visible in the package installation dialog if you will "
+"export the theme to a distributable package."
+msgstr ""
+"Täällä voit joko valita kuvakaappauskuvan levyltä tai tehdä yhden nyt. Kuvakaappausta"
+"näytetään teemanhallinta-ikkunan työkaluvihjeissä ja paketinasennusikkunassa jos "
+"haluat viedä teeman jaettavaan pakettiin."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:170
+msgid "Make Screenshot Now"
+msgstr "Tee kuvakaappaus nyt"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:177
+msgid "Screenshot"
+msgstr "Kuvakaappaus"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:227
+msgid "Acquire Screenshot - KVIrc"
+msgstr "Ota kuvakaappaus - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:227
+msgid "Failed to make screenshot"
+msgstr "Ei voitu ottaa kuvakaappausta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:243
+msgid "You must choose a theme name!"
+msgstr "Sinun on valittava teeman nimi!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:264
+msgid "Unable to create theme directory."
+msgstr "Ei voitu luoda teemakansiota."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:275
+msgid "Unable to save theme: %Q"
+msgstr "Ei voitu tallentaa teemaa: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:286
+msgid "Failed to load the selected screenshot image: please fix it"
+msgstr "Ei voitu ladata kuvakaappaus -kuvaa: ole hyvä ja korjaa se"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:293
+msgid "Theme saved successfully to "
+msgstr "Teema asennettu kansioon "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:296
+msgid "Save Theme - KVIrc"
+msgstr "Tallenna teema - KVIrc"
diff --git a/po/modules/theme/theme_fr.po b/po/modules/theme/theme_fr.po
new file mode 100644
index 00000000..ed5d6c67
--- /dev/null
+++ b/po/modules/theme/theme_fr.po
@@ -0,0 +1,410 @@
+# translation of theme_fr.po to Français
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Elephantman <[email protected]>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: theme_fr\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2008-03-06 19:12+0100\n"
+"Last-Translator: Elephantman <[email protected]>\n"
+"Language-Team: Français <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:50
+msgid "The selected file does not seem to be a valid KVIrc theme package"
+msgstr ""
+"Le fichier sélectionné ne semble pas être un paquet de thème KVIrc valide"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:70
+msgid "The selected file does not seem to be a valid KVIrc package: %Q"
+msgstr ""
+"Le fichier sélectionné ne semble pas être un paquet de thème KVIrc valide : %"
+"Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:316
+msgid "Author"
+msgstr "Auteur"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:317
+msgid "Created at"
+msgstr "Créé le"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:318
+msgid "Created with"
+msgstr "Créé avec"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:200
+msgid "Warning: The theme might be incompatible with this version of KVIrc"
+msgstr ""
+"Avertissement : Le thème pourrait être incompatible avec cette version de "
+"KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:209
+msgid "Go Back to Package Data"
+msgstr "Retourner aux données du paquet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:216
+msgid ""
+"Warning: Some of the theme contained in this package might be either "
+"corrupted or incompatible with this version of KVIrc"
+msgstr ""
+"Avertissement : Une partie du thème contenu dans ce paquet peut être soit "
+"corrompu ou incompatible avec cette version de KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:220
+msgid "Show Details"
+msgstr "Afficher les détails"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:272
+msgid "Install Theme Pack - KVIrc"
+msgstr "Installer un pack de thème - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:273
+msgid "You're about to install the following theme package"
+msgstr "Vous êtes sur le point d'installer le paquet de thème suivant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:274
+msgid "Do you want to proceed with the installation ?"
+msgstr "Voulez vous lancer l'installation ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:275
+msgid "Do Not Install"
+msgstr "Ne pas installer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:276
+msgid "Yes, Proceed"
+msgstr "Oui, installer"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:293
+msgid "Failed to unpack the selected file: %Q"
+msgstr "Echec de la décompression du fichier sélectionné : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:319
+msgid "Theme Engine Version"
+msgstr "Version du système de Thèmes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:320
+msgid "Subdirectory"
+msgstr "Sous-repertoire"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:87
+msgid "Your name here"
+msgstr "Votre nom ici"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:89
+msgid "Put a package description here..."
+msgstr "Insérez ici une description du paquet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:347
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:476
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+msgid "Export Theme - KVIrc"
+msgstr "Exporter Thème - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:130
+msgid ""
+"This procedure allows you to export the selected themes to a single package. "
+"It is useful when you want to distribute your themes to the public."
+msgstr ""
+"Cette procédure permet d'exporter le thème sélectionné dans un packet "
+"unique. C'est utile pour diffuser vos thèmes publiquement."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:132
+msgid ""
+"You will be asked to provide a package name, a description and, if you want, "
+"an icon/screenshot."
+msgstr ""
+"Vous devrez fournir un nom de paquet, une description et, si vous le voulez, "
+"une icône/capture d'écran."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:83
+msgid "Hit the \"Next\" button to begin."
+msgstr "Cliquez sur \"Suivant\" pour commencer."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:90
+msgid "Welcome"
+msgstr "Bienvenue"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:153
+msgid ""
+"This is the information list for the themes you're packaging. If it looks OK "
+"press \"Next\" to continue, otherwise press \"Cancel\" and rewiew your "
+"themes first."
+msgstr ""
+"Ceci est la liste d'informations pour les thèmes que vous êtes en train "
+"d'exporter. Si tout semble OK, cliquez sur \"Suivant\" pour continuer, sinon "
+"cliquez que \"Annuler\" et révisez vos thèmes."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:203
+msgid "Theme Data"
+msgstr "Données du Thème"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:215
+msgid ""
+"Here you need to provide informations about you (the packager) and a short "
+"description of the package you're creating."
+msgstr ""
+"Vous devez fournir ici des informations à propos de vous (le créateur du "
+"thème) et une description courte du paquet que vous créez."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:220
+msgid "Package Name:"
+msgstr "Nom du paquet :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:228
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:115
+msgid "Version:"
+msgstr "Version :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:236
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:123
+msgid "Description:"
+msgstr "Description :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:244
+msgid "Package Author:"
+msgstr "Auteur du paquet :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:255
+msgid "Package Informations"
+msgstr "Informations sur le paquet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:267
+msgid ""
+"Here you can choose the image that will appear in the installation dialog "
+"for your theme package. It can be an icon, a logo or a screenshot and it "
+"should be not larger than 300x225. If you don't provide an image a simple "
+"default icon will be used at installation stage."
+msgstr ""
+"Vous pouvez choisir ici l'image qui apparaîtra dans l'interface "
+"d'installation de votre thème. Il peut s'agir d'une icône, d'un logo ou "
+"d'une capture d'écran et elle ne doit pas dépasser 300x225 pixels. Si vous "
+"ne fournissez pas d'image, une icône par défaut sera utilisée."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:284
+msgid "Icon/Screenshot"
+msgstr "Icône/Capture d'écran"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:296
+msgid ""
+"Here you must choose the file name for the theme package. It should have a *."
+"%1 extension."
+msgstr ""
+"Ivi vous devez choisir le nom du fichier pour le paquet du thème. Il doit "
+"avoir une extension *.%1."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:306
+msgid "Finally hit the \"Finish\" button to complete the packaging operation."
+msgstr "Pour terminer, cliquez sur \"Terminer\" pour compléter le paquetage."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:312
+msgid "Package Path"
+msgstr "Chemin du paquet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:347
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:206
+msgid "Failed to load the selected image"
+msgstr "Echec du chargement de l'image sélectionnée"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:387
+msgid "Failed to load the selected image: please fix it"
+msgstr ""
+"Echec du chargement de l'image sélectionnée : merci de rectifier le problème"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:461
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:473
+msgid "Packaging failed"
+msgstr "Paquetage échoué"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:73
+msgid "Error installing theme package: %Q"
+msgstr "Erreur pendant l'installation du thème : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:110
+msgid "Choose a file to save the screenshot to"
+msgstr ""
+"Choisir le fichier dans lequel vous souhaitez enregistrer la capture d'écran"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:125
+msgid "Error making screenshot"
+msgstr "Erreur pendant la création de la capture d'écran"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:101
+msgid "by"
+msgstr "par"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:147
+msgid "Manage Themes - KVIrc"
+msgstr "Gérer les thèmes - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:165
+msgid "Save Current Theme..."
+msgstr "Enregistrer le thème en cours..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:175
+msgid "Export Selected Themes to a Distributable Package"
+msgstr "Exoporter les thèmes sélectionnés dans un paquet distribuable"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:181
+msgid "Delete Selected Themes"
+msgstr "Supprimer les thèmes sélectionnés"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:191
+msgid "Install Theme Package From Disk"
+msgstr "Installer un thème depuis le disque"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:197
+msgid "Get More Themes..."
+msgstr "Obtenir d'autres thèmes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:286
+msgid "&Remove Theme"
+msgstr "&Retirer le thème"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:287
+msgid "&Apply Theme"
+msgstr "&Appliquer le thème"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:316
+msgid "Apply theme - KVIrc"
+msgstr "Appliquer le thème - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:304
+msgid "Do you wish to apply theme \"%Q\" (version %Q)?"
+msgstr "Voulez-vous appliquer le thème \"%Q\" (version %Q) ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:315
+msgid "Failed to apply the specified theme: %Q"
+msgstr "L'application du thème choisi a échoué : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:329
+msgid "Delete Theme - KVIrc"
+msgstr "Supprimer thème - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:330
+msgid "Do you really wish to delete theme \"%Q\" (version %Q)?"
+msgstr "Voulez-vous vraiment supprimer le thème \"%Q\" (version %Q) ?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:346
+msgid "Open Theme - KVIrc"
+msgstr "Ouvrir thème - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:206
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:264
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:286
+msgid "Save Current Theme - KVIrc"
+msgstr "Enregistrer le thème actuel - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:79
+msgid ""
+"This procedure allows you to save the current theme settings to a single "
+"directory. It is useful if you want to apply other themes or play with the "
+"theme settings and later come back to this theme with a single click. It "
+"will also allow you to manually modify the theme settings and later export "
+"them to a distributable package."
+msgstr ""
+"Cette procédure vous permet d'enregistrer les réglages du thème actuel dans "
+"un dossier unique. C'est utile si vous voulez appliquer d'autres thèmes ou "
+"jouer avec les réglages puis revenir par la suite au thème actuel d'un "
+"simple clic. Cela vous permettra aussi de modifier manuellement les réglages "
+"du thème pour les exporter dans un paquet distribuable."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:81
+msgid ""
+"You will be asked to provide a theme name, a description and, if you want, a "
+"screenshot."
+msgstr ""
+"Vous devrez fournir un nom de thème, une description, et si vous le "
+"souhaitez, une capture d'écran."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:102
+msgid ""
+"Here you need to provide informations about you (the author) and a short "
+"description of the theme you're creating."
+msgstr ""
+"Ici vous devez fournir des informations à propos de vous (l'auteur) et une "
+"description courte du thème que vous créez."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:107
+msgid "Theme Name:"
+msgstr "Nom du thème :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:131
+msgid "Theme Author:"
+msgstr "Auteur du thème :"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:142
+msgid "Theme Informations"
+msgstr "Informations à propos du thème"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:154
+msgid ""
+"Here you can either choose a screenshot image from disk or make one now. The "
+"screenshot will be displayed in the tooltips of the theme management dialog "
+"and will be also visible in the package installation dialog if you will "
+"export the theme to a distributable package."
+msgstr ""
+"Ici vous pouvez soit choisir une capture d'écran depuis le disque dur, ou en "
+"faire une maintenant. La capture d'écran sera affichée dans les info-bulles "
+"de l'interface de gestion des thèmes, et sera aussi visible pendant "
+"l'installation du thème si vous l'exportez dans un paquet."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:170
+msgid "Make Screenshot Now"
+msgstr "Faire une capture d'écran maintenant"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:177
+msgid "Screenshot"
+msgstr "Capture d'écran"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:227
+msgid "Acquire Screenshot - KVIrc"
+msgstr "Acquérir capture d'écran - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:227
+msgid "Failed to make screenshot"
+msgstr "Echec de la capture d'écran"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:243
+msgid "You must choose a theme name!"
+msgstr "Vous devez choisir un nom pour le thème !"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:264
+msgid "Unable to create theme directory."
+msgstr "Impossible de créer le repertoire du thème."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:275
+msgid "Unable to save theme: %Q"
+msgstr "Impossible d'enregistrer le thème : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:286
+msgid "Failed to load the selected screenshot image: please fix it"
+msgstr ""
+"Echec du chargement de la capture d'écran choisie : merci de corriger le "
+"problème"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:293
+msgid "Theme saved successfully to "
+msgstr "Thème enregistré avec succès vers"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:296
+msgid "Save Theme - KVIrc"
+msgstr "Enregistrer thème - KVIrc"
diff --git a/po/modules/theme/theme_hu.po b/po/modules/theme/theme_hu.po
new file mode 100644
index 00000000..d2ae0250
--- /dev/null
+++ b/po/modules/theme/theme_hu.po
@@ -0,0 +1,404 @@
+# translation of theme_hu.po to hungarian
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Ádám Fibinger <[email protected]>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: theme_hu\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2008-03-03 10:04+0100\n"
+"Last-Translator: Ádám Fibinger <[email protected]>\n"
+"Language-Team: hungarian <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:50
+msgid "The selected file does not seem to be a valid KVIrc theme package"
+msgstr "A kiválasztott fájl valószínűleg nem érvényes KVIrc kinézet csomag"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:70
+msgid "The selected file does not seem to be a valid KVIrc package: %Q"
+msgstr "A kiválasztott fájl valószínűleg nem érvényes KVIrc kinézet csomag: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:316
+msgid "Author"
+msgstr "Készítő"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:317
+msgid "Created at"
+msgstr "Készült "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:318
+msgid "Created with"
+msgstr "Készült"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:200
+msgid "Warning: The theme might be incompatible with this version of KVIrc"
+msgstr ""
+"Figyelmeztetés: A kinézet nem biztos, hogy kompatibilis a KVIrc ezen "
+"verziójával"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:209
+msgid "Go Back to Package Data"
+msgstr "Vissza a Csomag Adatokhoz"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:216
+msgid ""
+"Warning: Some of the theme contained in this package might be either "
+"corrupted or incompatible with this version of KVIrc"
+msgstr ""
+"Figyelmeztetés: a csomag tartalmaz olyan elemeket, amelyek nem biztos, hogy "
+"kompatibilisek a KVIrc ezen verziójával vagy a fájl sérült."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:220
+msgid "Show Details"
+msgstr "Részletek Megjelenítése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:272
+msgid "Install Theme Pack - KVIrc"
+msgstr "Kinézet Csomag Telepítése - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:273
+msgid "You're about to install the following theme package"
+msgstr "A következő kinézet csomag kerül telepítésre:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:274
+msgid "Do you want to proceed with the installation ?"
+msgstr "Szeretnéd folytatni a telepítéssel?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:275
+msgid "Do Not Install"
+msgstr "Ne Telepíts"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:276
+msgid "Yes, Proceed"
+msgstr "Igen, Folytatás"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:293
+msgid "Failed to unpack the selected file: %Q"
+msgstr "A kiválaszott fájl kicsomagolása sikertelen: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:319
+msgid "Theme Engine Version"
+msgstr "Kinézet Motor Verzió"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:320
+msgid "Subdirectory"
+msgstr "Alkönyvtár"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:87
+msgid "Your name here"
+msgstr "A neved"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:89
+msgid "Put a package description here..."
+msgstr "A csomag leírása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:347
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:476
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+msgid "Export Theme - KVIrc"
+msgstr "Kinézet Exportálása - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:130
+msgid ""
+"This procedure allows you to export the selected themes to a single package. "
+"It is useful when you want to distribute your themes to the public."
+msgstr ""
+"Ezzel ki tudod exportálni a kijelölt kinézeteket egy külső csomagba. "
+"Hasznos, ha szeretnéd ezeket megosztani másokkal."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:132
+msgid ""
+"You will be asked to provide a package name, a description and, if you want, "
+"an icon/screenshot."
+msgstr ""
+"Szükség lesz egy csomag névre, leírásra és ha szeretnéd ikonra/képernyőképre."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:83
+msgid "Hit the \"Next\" button to begin."
+msgstr "Kattints a \"Következő\" gombra a kezdéshez."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:90
+msgid "Welcome"
+msgstr "Üdvözlet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:153
+msgid ""
+"This is the information list for the themes you're packaging. If it looks OK "
+"press \"Next\" to continue, otherwise press \"Cancel\" and rewiew your "
+"themes first."
+msgstr ""
+"Ez az információs lista azokról a kinézetekről, amit épp csomagolsz. Ha úgy "
+"néz ki rendben van, kattints a \"Következő\" gombra a folytatáshoz, vagy a "
+"\"Mégsem\" gombra a megszakításhoz."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:203
+msgid "Theme Data"
+msgstr "Kinézet Adatok"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:215
+msgid ""
+"Here you need to provide informations about you (the packager) and a short "
+"description of the package you're creating."
+msgstr ""
+"Itt meg kell adnod néhány információt magadról (csomagkészítő) és egy rövid "
+"leírást a csomagról, amit készítesz."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:220
+msgid "Package Name:"
+msgstr "Csomag Neve:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:228
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:115
+msgid "Version:"
+msgstr "Verzió:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:236
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:123
+msgid "Description:"
+msgstr "Leírás:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:244
+msgid "Package Author:"
+msgstr "Csomag készítő:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:255
+msgid "Package Informations"
+msgstr "Csomag információk:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:267
+msgid ""
+"Here you can choose the image that will appear in the installation dialog "
+"for your theme package. It can be an icon, a logo or a screenshot and it "
+"should be not larger than 300x225. If you don't provide an image a simple "
+"default icon will be used at installation stage."
+msgstr ""
+"Itt kiválaszthatod a képet, ami a telepítő dialógusban fog megjelenni a "
+"kinézet csomagodnál. Lehet ikon, logó, képernyőkép és lehetőleg ne legyen "
+"nagyobb, mint 300x225. Ha nem adsz meg képet, egy egyszerű alapértelmezett "
+"ikon fog megjelenni."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:284
+msgid "Icon/Screenshot"
+msgstr "Ikon/Képernyőkép"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:296
+msgid ""
+"Here you must choose the file name for the theme package. It should have a *."
+"%1 extension."
+msgstr ""
+"Itt ki kell választanod a fájlnevet a kinézet csomagodhoz. A kiterjesztésnek "
+"%1 -nek kell lennie."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:306
+msgid "Finally hit the \"Finish\" button to complete the packaging operation."
+msgstr ""
+"Végül kattints a \"Befejezés\" gombra, hogy elkezdődjön a csomag készítése."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:312
+msgid "Package Path"
+msgstr "Csomag Útvonala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:347
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:206
+msgid "Failed to load the selected image"
+msgstr "Kiválasztott kép betöltése sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:387
+msgid "Failed to load the selected image: please fix it"
+msgstr "Kiválasztott kép betöltése sikertelen: kérlek javítsd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:461
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:473
+msgid "Packaging failed"
+msgstr "Csomagkészítés sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:73
+msgid "Error installing theme package: %Q"
+msgstr "Hiba a kinézet-csomag telepítésekor: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:110
+msgid "Choose a file to save the screenshot to"
+msgstr "Add meg a fájlt, ahova a képernyőképet mentsem"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:125
+msgid "Error making screenshot"
+msgstr "Képernyőkép készítése sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:101
+msgid "by"
+msgstr "-"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:147
+msgid "Manage Themes - KVIrc"
+msgstr "Kinézet Kezelése - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:165
+msgid "Save Current Theme..."
+msgstr "Aktuális Kinézet Mentése..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:175
+msgid "Export Selected Themes to a Distributable Package"
+msgstr "A kiválsztott csomag exportálása hordozható csomagba"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:181
+msgid "Delete Selected Themes"
+msgstr "Kiválasztott Kinézet(ek) Törlése"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:191
+msgid "Install Theme Package From Disk"
+msgstr "Kinézet csomag telepítése lemezről"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:197
+msgid "Get More Themes..."
+msgstr "Még több kinézet..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:286
+msgid "&Remove Theme"
+msgstr "Kinézet eltávolítása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:287
+msgid "&Apply Theme"
+msgstr "Kinézet &Alkalmazása"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:316
+msgid "Apply theme - KVIrc"
+msgstr "Kinézet Alkalmazása - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:304
+msgid "Do you wish to apply theme \"%Q\" (version %Q)?"
+msgstr "Szeretnéd alkalmazni a \"%Q\" Kinézetet (%Q verzió)"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:315
+msgid "Failed to apply the specified theme: %Q"
+msgstr "A megadott kinézet alkalmazása sikertelen: Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:329
+msgid "Delete Theme - KVIrc"
+msgstr "Kinézet Törlése - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:330
+msgid "Do you really wish to delete theme \"%Q\" (version %Q)?"
+msgstr "Tényleg törölni szeretnéd a kinézetet \"%Q\" (Verzió: %Q)?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:346
+msgid "Open Theme - KVIrc"
+msgstr "Kinézet Megnyitása - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:206
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:264
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:286
+msgid "Save Current Theme - KVIrc"
+msgstr "Aktuális Kinézet Mentése - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:79
+msgid ""
+"This procedure allows you to save the current theme settings to a single "
+"directory. It is useful if you want to apply other themes or play with the "
+"theme settings and later come back to this theme with a single click. It "
+"will also allow you to manually modify the theme settings and later export "
+"them to a distributable package."
+msgstr ""
+"Ez az eljárás lehetővé teszi, hogy a jelenlegi kinézet beállításait "
+"exportáld egy könyvtárba. Hasznos lehet, ha szeretnéd ezt megosztani "
+"másokkal vagy egyszerűen szeretnél kísérletezni a beállításokkal és bármikor "
+"visszatérni az előzőhöz néhány kattintás segítségével. Természetesen "
+"manuálisan is módosíthatod a beállításokat és később is exportálhatod "
+"csomagba."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:81
+msgid ""
+"You will be asked to provide a theme name, a description and, if you want, a "
+"screenshot."
+msgstr ""
+"Meg kell majd adnod egy kinézet nevet, leírást és - ha szeretnéd - "
+"képernyőképet."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:102
+msgid ""
+"Here you need to provide informations about you (the author) and a short "
+"description of the theme you're creating."
+msgstr ""
+"Itt meg kell adnod néhány információt magadról (készítő) és egy rövid "
+"leírást a kinézetről, amit készítettél."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:107
+msgid "Theme Name:"
+msgstr "Kinézet Neve:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:131
+msgid "Theme Author:"
+msgstr "Kinézet Készítője:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:142
+msgid "Theme Informations"
+msgstr "Kinézet Információk"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:154
+msgid ""
+"Here you can either choose a screenshot image from disk or make one now. The "
+"screenshot will be displayed in the tooltips of the theme management dialog "
+"and will be also visible in the package installation dialog if you will "
+"export the theme to a distributable package."
+msgstr ""
+"Itt kiválaszhatsz egy korábbi képernyőképet vagy készíthetsz egyet. A "
+"képernyőkép meg fog jelenni a Kinézet Kezelő ablakban eszköztippként fog "
+"megjelenni, illetve a csomagtelepítő ablakban, ha exportálod a csomagot "
+"hordozható csomagként."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:170
+msgid "Make Screenshot Now"
+msgstr "Képernyőkép készítése most"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:177
+msgid "Screenshot"
+msgstr "Képernyőkép"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:227
+msgid "Acquire Screenshot - KVIrc"
+msgstr "Képernyőkép Készítése - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:227
+msgid "Failed to make screenshot"
+msgstr "Képernyőkép készítése sikertelen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:243
+msgid "You must choose a theme name!"
+msgstr "Meg kell adnod egy kinézet nevet!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:264
+msgid "Unable to create theme directory."
+msgstr "Kinézet könyvtár létrehozása sikertelen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:275
+msgid "Unable to save theme: %Q"
+msgstr "%Q kinézet mentése sikertelen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:286
+msgid "Failed to load the selected screenshot image: please fix it"
+msgstr "A kiválasztott képernyőkép betöltése nem lehetséges: kérlek javítsd"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:293
+msgid "Theme saved successfully to "
+msgstr "A kinézet sikeresen mentve "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:296
+msgid "Save Theme - KVIrc"
+msgstr "Kinézet Mentése - KVIrc"
diff --git a/po/modules/theme/theme_it.po b/po/modules/theme/theme_it.po
new file mode 100644
index 00000000..29d2b0a9
--- /dev/null
+++ b/po/modules/theme/theme_it.po
@@ -0,0 +1,405 @@
+# translation of theme_it.po to
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: theme_it\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-02-07 16:32+0100\n"
+"Last-Translator: \n"
+"Language-Team: <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:50
+msgid "The selected file does not seem to be a valid KVIrc theme package"
+msgstr ""
+"Il file selezionato non sembra essere un valido pacchetto tema per KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:70
+msgid "The selected file does not seem to be a valid KVIrc package: %Q"
+msgstr "Il file selezionato non sembra essere un valido pacchetto KVIrc: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:316
+msgid "Author"
+msgstr "Autore"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:317
+msgid "Created at"
+msgstr "Creato il"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:318
+msgid "Created with"
+msgstr "Creato con"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:200
+msgid "Warning: The theme might be incompatible with this version of KVIrc"
+msgstr ""
+"Attenzione: il tema potrebbe essere incompatibile con questa versione di "
+"KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:209
+msgid "Go Back to Package Data"
+msgstr "Torna ai Dati del Pacchetto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:216
+msgid ""
+"Warning: Some of the theme contained in this package might be either "
+"corrupted or incompatible with this version of KVIrc"
+msgstr ""
+"Attenzione: alcuni temi contenuti in questo pacchetto potrebbero essere "
+"corrotti o incompatibili con questa versione di KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:220
+msgid "Show Details"
+msgstr "Mostra Dettagli"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:272
+msgid "Install Theme Pack - KVIrc"
+msgstr "Installa Pacchetto Tema - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:273
+msgid "You're about to install the following theme package"
+msgstr "Stai per installare il sequente pacchetto tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:274
+msgid "Do you want to proceed with the installation ?"
+msgstr "Vuoi procedere con l'installazione?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:275
+msgid "Do Not Install"
+msgstr "Non Installare"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:276
+msgid "Yes, Proceed"
+msgstr "Sì, Procedi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:293
+msgid "Failed to unpack the selected file: %Q"
+msgstr "Impossibile decomprimere il file selezionato: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:319
+msgid "Theme Engine Version"
+msgstr "Versione Motore Temi"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:320
+msgid "Subdirectory"
+msgstr "Sottodirectory"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:87
+msgid "Your name here"
+msgstr "Tuo nome"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:89
+msgid "Put a package description here..."
+msgstr "Inserisci una descrizione del tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:347
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:476
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+msgid "Export Theme - KVIrc"
+msgstr "Esporta Tema - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:130
+msgid ""
+"This procedure allows you to export the selected themes to a single package. "
+"It is useful when you want to distribute your themes to the public."
+msgstr ""
+"Questa procedura ti permette di esportare i temi selezionati in un singolo "
+"pacchetto. E' comodo quando vuoi distribuire i tuoi temi al pubblico."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:132
+msgid ""
+"You will be asked to provide a package name, a description and, if you want, "
+"an icon/screenshot."
+msgstr ""
+"Ti verrà chiesto di inserire un nome del pacchetto, una descrizione e, se "
+"vuoi, un'icona/screenshot."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:83
+msgid "Hit the \"Next\" button to begin."
+msgstr "Premi il bottone \"Avanti\" per iniziare."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:90
+msgid "Welcome"
+msgstr "Benvenuto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:153
+msgid ""
+"This is the information list for the themes you're packaging. If it looks OK "
+"press \"Next\" to continue, otherwise press \"Cancel\" and rewiew your "
+"themes first."
+msgstr ""
+"Questa è la lista di informazioni per i temi che stai pacchettizzando. Se ti "
+"sembra a posto premi \"Avanti\" per continuare, altrimenti premi \"Annulla\" "
+"e ricontrolla i temi."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:203
+msgid "Theme Data"
+msgstr "Dati Tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:215
+msgid ""
+"Here you need to provide informations about you (the packager) and a short "
+"description of the package you're creating."
+msgstr ""
+"Qui devi inserire informazioni su di te (il pacchettizzatore) e una piccola "
+"descrizione del pacchetto che stai creando."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:220
+msgid "Package Name:"
+msgstr "Nome Pacchetto:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:228
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:115
+msgid "Version:"
+msgstr "Versione:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:236
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:123
+msgid "Description:"
+msgstr "Descrizione:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:244
+msgid "Package Author:"
+msgstr "Autore Pacchetto:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:255
+msgid "Package Informations"
+msgstr "Informazioni Pacchetto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:267
+msgid ""
+"Here you can choose the image that will appear in the installation dialog "
+"for your theme package. It can be an icon, a logo or a screenshot and it "
+"should be not larger than 300x225. If you don't provide an image a simple "
+"default icon will be used at installation stage."
+msgstr ""
+"Qui puoi scegliere l'immagine che apparirà nel dialog di installazione per "
+"il tuo tema. Può essere un'icona, un logo o uno screenshot e non dev'essere "
+"più grande di 300x225. Se non inserisci un'immagine verrà usata una semplice "
+"immagine di default durante l'installazione."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:284
+msgid "Icon/Screenshot"
+msgstr "Icona/Screenshot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:296
+msgid ""
+"Here you must choose the file name for the theme package. It should have a *."
+"%1 extension."
+msgstr ""
+"Qui devi scegliere il nome del file per il tema. Dovrebbe avere "
+"un'estensione *.%1."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:306
+msgid "Finally hit the \"Finish\" button to complete the packaging operation."
+msgstr ""
+"Infine premi il bottone \"Termina\" per completare la pacchettizzazione."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:312
+msgid "Package Path"
+msgstr "Percorso Pacchetto"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:347
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:206
+msgid "Failed to load the selected image"
+msgstr "Impossibile caricare l'immagine selezionata"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:387
+msgid "Failed to load the selected image: please fix it"
+msgstr "Impossibile caricare l'immagine selezionata: sistemala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:461
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:473
+msgid "Packaging failed"
+msgstr "Pacchettizzazione fallita"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:73
+msgid "Error installing theme package: %Q"
+msgstr "Errore durante l'installazione del tema: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:110
+msgid "Choose a file to save the screenshot to"
+msgstr "Scegli un file per salvare lo screenshot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:125
+msgid "Error making screenshot"
+msgstr "Errore nella creazione dello screenshot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:101
+msgid "by"
+msgstr "da"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:147
+msgid "Manage Themes - KVIrc"
+msgstr "Gestione Temi - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:165
+msgid "Save Current Theme..."
+msgstr "Salva Tema Corrente..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:175
+msgid "Export Selected Themes to a Distributable Package"
+msgstr "Esporta Temi Selezionati in Pacchetti Distribuibili"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:181
+msgid "Delete Selected Themes"
+msgstr "Cancella Temi Selezionati"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:191
+msgid "Install Theme Package From Disk"
+msgstr "Installa Tema Da Disco"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:197
+msgid "Get More Themes..."
+msgstr "Scarica Nuovi Temi..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:286
+msgid "&Remove Theme"
+msgstr "Elimina Tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:287
+msgid "&Apply Theme"
+msgstr "Applica Tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:316
+msgid "Apply theme - KVIrc"
+msgstr "Applica tema - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:304
+msgid "Do you wish to apply theme \"%Q\" (version %Q)?"
+msgstr "Vuoi applicare il tema \"%Q\" (versione %Q)?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:315
+msgid "Failed to apply the specified theme: %Q"
+msgstr "Applicazione del tema specificato fallita: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:329
+msgid "Delete Theme - KVIrc"
+msgstr "Cancella Tema - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:330
+msgid "Do you really wish to delete theme \"%Q\" (version %Q)?"
+msgstr "Sei sicuro di voler cancellare il tema \"%Q\" (versione %Q)?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:346
+msgid "Open Theme - KVIrc"
+msgstr "Apri Tema - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:206
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:264
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:286
+msgid "Save Current Theme - KVIrc"
+msgstr "Salva Tema Corrente - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:79
+msgid ""
+"This procedure allows you to save the current theme settings to a single "
+"directory. It is useful if you want to apply other themes or play with the "
+"theme settings and later come back to this theme with a single click. It "
+"will also allow you to manually modify the theme settings and later export "
+"them to a distributable package."
+msgstr ""
+"Questa procedura ti permette di salvare il tema corrente in una sola "
+"directory. E' utile se vuoi applicare altri temi o giocare coi settaggi del "
+"tema e tornare più tardi a questo tema con un singolo click. Ti permette "
+"inoltre di modificare manualmente i settaggi del tema e esportarli poi in un "
+"pacchetto distribuibile"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:81
+msgid ""
+"You will be asked to provide a theme name, a description and, if you want, a "
+"screenshot."
+msgstr ""
+"Ti verrà chiesto di inserire un nome del pacchetto, una descrizione e, se "
+"vuoi, uno screenshot."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:102
+msgid ""
+"Here you need to provide informations about you (the author) and a short "
+"description of the theme you're creating."
+msgstr ""
+"Qui devi inserire informazioni su di te (l'autore) e una piccola descrizione "
+"del pacchetto che stai creando."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:107
+msgid "Theme Name:"
+msgstr "Nome Tema:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:131
+msgid "Theme Author:"
+msgstr "Autore Tema:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:142
+msgid "Theme Informations"
+msgstr "Informazioni Tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:154
+msgid ""
+"Here you can either choose a screenshot image from disk or make one now. The "
+"screenshot will be displayed in the tooltips of the theme management dialog "
+"and will be also visible in the package installation dialog if you will "
+"export the theme to a distributable package."
+msgstr ""
+"Qui puoi scegliere sia uno screenshot dal tuo disco o crearne uno ora. Lo "
+"screenshot sarà visualizzato nelle tooltip del dialog di gestione dei temi e "
+"sarà visibile nel dialog di installazione del pacchetto se esporterai il "
+"tema in un pacchetto distribuibile"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:170
+msgid "Make Screenshot Now"
+msgstr "Crea uno Screenshot Ora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:177
+msgid "Screenshot"
+msgstr "Screenshot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:227
+msgid "Acquire Screenshot - KVIrc"
+msgstr "Acquisisci Screenshot - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:227
+msgid "Failed to make screenshot"
+msgstr "Errore nella creazione dello screenshot"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:243
+msgid "You must choose a theme name!"
+msgstr "Devi scegliere un nome per il tema!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:264
+msgid "Unable to create theme directory."
+msgstr "Impossibile creare la directory del tema."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:275
+msgid "Unable to save theme: %Q"
+msgstr "Impossibile salvare il tema: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:286
+msgid "Failed to load the selected screenshot image: please fix it"
+msgstr "Impossibile caricare l'immagine selezionata: sistemala"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:293
+msgid "Theme saved successfully to "
+msgstr "Tema salvato con successo in"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:296
+msgid "Save Theme - KVIrc"
+msgstr "Salva Tema - KVIrc"
diff --git a/po/modules/theme/theme_pt.po b/po/modules/theme/theme_pt.po
new file mode 100644
index 00000000..70bfc98c
--- /dev/null
+++ b/po/modules/theme/theme_pt.po
@@ -0,0 +1,403 @@
+# translation of theme_pt.po to Português
+# translation of theme_it.po to
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Zé <[email protected]>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: theme_pt\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-11-26 04:53+0000\n"
+"Last-Translator: Zé <[email protected]>\n"
+"Language-Team: Português <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:50
+msgid "The selected file does not seem to be a valid KVIrc theme package"
+msgstr "O ficheiro seleccionado não parece ser uma pacote de tema KVirc válido"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:70
+msgid "The selected file does not seem to be a valid KVIrc package: %Q"
+msgstr "O ficheiro seleccionado não parece ser um pacote KVirc válido: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:316
+msgid "Author"
+msgstr "Autor"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:317
+msgid "Created at"
+msgstr "Criado por"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:318
+msgid "Created with"
+msgstr "Criado com"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:200
+msgid "Warning: The theme might be incompatible with this version of KVIrc"
+msgstr "Aviso: O tema pode ser incompatível com esta versão do KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:209
+msgid "Go Back to Package Data"
+msgstr "Voltar aos Dados do Pacote"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:216
+msgid ""
+"Warning: Some of the theme contained in this package might be either "
+"corrupted or incompatible with this version of KVIrc"
+msgstr ""
+"Aviso: Alguns dos temas contidos neste pacote podem estar corrompidos ou "
+"podem ser incompatíveis com esta versão do KVirc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:220
+msgid "Show Details"
+msgstr "Mostrar Detalhes"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:272
+msgid "Install Theme Pack - KVIrc"
+msgstr "Instalar Pacote Tema - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:273
+msgid "You're about to install the following theme package"
+msgstr "Está prestes a instalar o seguinte pacote tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:274
+msgid "Do you want to proceed with the installation ?"
+msgstr "Deseja proceder com a instalaçaão?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:275
+msgid "Do Not Install"
+msgstr "Não instalar"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:276
+msgid "Yes, Proceed"
+msgstr "Sim, proceder"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:293
+msgid "Failed to unpack the selected file: %Q"
+msgstr "Não é possível desempacotar o ficheiro seleccionado: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:319
+msgid "Theme Engine Version"
+msgstr "Versão do Motor do Tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:320
+msgid "Subdirectory"
+msgstr "Subdirectório"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:87
+msgid "Your name here"
+msgstr "O seu nome aqui"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:89
+msgid "Put a package description here..."
+msgstr "Coloque uma descrição do pacote aqui..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:347
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:476
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+msgid "Export Theme - KVIrc"
+msgstr "Exportar Tema - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:130
+msgid ""
+"This procedure allows you to export the selected themes to a single package. "
+"It is useful when you want to distribute your themes to the public."
+msgstr ""
+"Este procedimento permite-lhe exportar os temas seleccionados para um único "
+"pacote. É útil quando quer distribuir os seus temas publicamente."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:132
+msgid ""
+"You will be asked to provide a package name, a description and, if you want, "
+"an icon/screenshot."
+msgstr ""
+"Será-lhe pedido para indicar um nome ao pacote, uma descrição e, sequiser, "
+"um ícone/captura de ecrã."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:83
+msgid "Hit the \"Next\" button to begin."
+msgstr "Prima o botão \"Próximo para iniciar."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:90
+msgid "Welcome"
+msgstr "Bem-vindo"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:153
+msgid ""
+"This is the information list for the themes you're packaging. If it looks OK "
+"press \"Next\" to continue, otherwise press \"Cancel\" and rewiew your "
+"themes first."
+msgstr ""
+"Esta é a lista de informação para os temas que está a empacotar. Se lhe "
+"parece estar bem prima \"Próximo\" para continuar. caso contrário prima "
+"\"Cancelar\" e rever primeiro os seus temas."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:203
+msgid "Theme Data"
+msgstr "Data do Tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:215
+msgid ""
+"Here you need to provide informations about you (the packager) and a short "
+"description of the package you're creating."
+msgstr ""
+"Aqui precisa indicar informação acerca de si (o empacotador) e uma breve "
+"descrição do pacote que está a criar."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:220
+msgid "Package Name:"
+msgstr "Nome do Pacote:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:228
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:115
+msgid "Version:"
+msgstr "Versão:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:236
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:123
+msgid "Description:"
+msgstr "Descrição:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:244
+msgid "Package Author:"
+msgstr "Autor do Pacote:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:255
+msgid "Package Informations"
+msgstr "Informações do Pacote"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:267
+msgid ""
+"Here you can choose the image that will appear in the installation dialog "
+"for your theme package. It can be an icon, a logo or a screenshot and it "
+"should be not larger than 300x225. If you don't provide an image a simple "
+"default icon will be used at installation stage."
+msgstr ""
+"Aqui pode escolher a imagem que irá aparecer no diálogo de instalação no seu "
+"pacote do tema. Pode ser um ícone, um logo ou uma captura de ecrã e não deve "
+"ser maior que 300x225. Se não fornecer uma imagem, um simples ícone "
+"predefinido irá ser usado na instalação."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:284
+msgid "Icon/Screenshot"
+msgstr "Ícone/Captura de ecrã"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:296
+msgid ""
+"Here you must choose the file name for the theme package. It should have a *."
+"%1 extension."
+msgstr ""
+"Aqui deve escolher o nome do ficheiro para o pacote do tema. Deve ter uma "
+"extensão *.%1."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:306
+msgid "Finally hit the \"Finish\" button to complete the packaging operation."
+msgstr "Finalmente prima o botão \"Finalizar\" para terminar o empacotamento."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:312
+msgid "Package Path"
+msgstr "Localização do Pacote"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:347
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:206
+msgid "Failed to load the selected image"
+msgstr "Não é possível carregar a imagem seleccionada"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:387
+msgid "Failed to load the selected image: please fix it"
+msgstr "Não é possível carregar a imagem seleccionada: por favor corrija"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:461
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:473
+msgid "Packaging failed"
+msgstr "Empacotamento falhado"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:73
+msgid "Error installing theme package: %Q"
+msgstr "Erro ao instalar o tema: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:110
+msgid "Choose a file to save the screenshot to"
+msgstr "Escolha um ficheiro para gravar a captura de ecrã"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:125
+msgid "Error making screenshot"
+msgstr "Erro ao criar a captura de ecrã"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:101
+msgid "by"
+msgstr "por"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:147
+msgid "Manage Themes - KVIrc"
+msgstr "Gerir Temas - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:165
+msgid "Save Current Theme..."
+msgstr "Gravar Tema Actual..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:175
+msgid "Export Selected Themes to a Distributable Package"
+msgstr "Exportar Temas Seleccionados para um Pacote de Distribuição"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:181
+msgid "Delete Selected Themes"
+msgstr "Apagar Temas Seleccionados"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:191
+msgid "Install Theme Package From Disk"
+msgstr "Instalar Tema Do Disco"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:197
+msgid "Get More Themes..."
+msgstr "Obter Mais Temas..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:286
+msgid "&Remove Theme"
+msgstr "&Remover Tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:287
+msgid "&Apply Theme"
+msgstr "&Aplicar Tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:316
+msgid "Apply theme - KVIrc"
+msgstr "Aplicar tema - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:304
+msgid "Do you wish to apply theme \"%Q\" (version %Q)?"
+msgstr "Deseja aplicar o tema \"%Q\" (versão %Q)?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:315
+msgid "Failed to apply the specified theme: %Q"
+msgstr "Falha ao aplicar o tema indicado: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:329
+msgid "Delete Theme - KVIrc"
+msgstr "Apagar Tema - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:330
+msgid "Do you really wish to delete theme \"%Q\" (version %Q)?"
+msgstr "Deseja realmente apagar o tema \"%Q\" (versão %Q)?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:346
+msgid "Open Theme - KVIrc"
+msgstr "Abrir Tema - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:206
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:264
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:286
+msgid "Save Current Theme - KVIrc"
+msgstr "Gravar Tema Actual - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:79
+msgid ""
+"This procedure allows you to save the current theme settings to a single "
+"directory. It is useful if you want to apply other themes or play with the "
+"theme settings and later come back to this theme with a single click. It "
+"will also allow you to manually modify the theme settings and later export "
+"them to a distributable package."
+msgstr ""
+"Este procedimento permite-lhe as definições actuais do tema num único "
+"directório. É útil se quiser aplicar outros temas ou brincar com as "
+"definições do tema e mais tarde voltar a este tema com um simples clique. "
+"Permite-lhe também modificar manualmente as definições do tema e mais tarde "
+"exporta-las para um pacote distribuível."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:81
+msgid ""
+"You will be asked to provide a theme name, a description and, if you want, a "
+"screenshot."
+msgstr ""
+"Será-lhe pedido para indicar um nome ao tema, uma descrição e, e se quiser, "
+"uma captura de ecrã."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:102
+msgid ""
+"Here you need to provide informations about you (the author) and a short "
+"description of the theme you're creating."
+msgstr ""
+"Aqui precisa indicar informação acerca de si (o autor) e uma breve descrição "
+"do pacote que está a criar."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:107
+msgid "Theme Name:"
+msgstr "Nome do Tema:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:131
+msgid "Theme Author:"
+msgstr "Autor do Tema::"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:142
+msgid "Theme Informations"
+msgstr "Informações do Tema"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:154
+msgid ""
+"Here you can either choose a screenshot image from disk or make one now. The "
+"screenshot will be displayed in the tooltips of the theme management dialog "
+"and will be also visible in the package installation dialog if you will "
+"export the theme to a distributable package."
+msgstr ""
+"Aqui pode escolher uma imagem de captura de ecrã do disco ou criar uma "
+"agora. A captura de ecrºa será mostrada nas dicas do diálogo de gestão de "
+"temas e será também visível no diálogo de instalação do pacote se exportar o "
+"tema para um pacote distribuível."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:170
+msgid "Make Screenshot Now"
+msgstr "Criar Captura de Ecrã Agora"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:177
+msgid "Screenshot"
+msgstr "Captura de ecrã"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:227
+msgid "Acquire Screenshot - KVIrc"
+msgstr "Adquirir Captura de Ecrã - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:227
+msgid "Failed to make screenshot"
+msgstr "Falha ao criar captura de ecrã"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:243
+msgid "You must choose a theme name!"
+msgstr "Deve escolher o nome de um tema!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:264
+msgid "Unable to create theme directory."
+msgstr "Não é possível criar um directório do tema."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:275
+msgid "Unable to save theme: %Q"
+msgstr "Não é possível gravar o tema: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:286
+msgid "Failed to load the selected screenshot image: please fix it"
+msgstr "Não é possível carregar a imagem seleccionada: por favor corrija-a"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:293
+msgid "Theme saved successfully to "
+msgstr "Tema gravado com sucesso para"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:296
+msgid "Save Theme - KVIrc"
+msgstr "Gravar Tema - KVIrc"
diff --git a/po/modules/theme/theme_ru.po b/po/modules/theme/theme_ru.po
new file mode 100644
index 00000000..96fa4cd2
--- /dev/null
+++ b/po/modules/theme/theme_ru.po
@@ -0,0 +1,396 @@
+# translation of theme_ru.po to Russian
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Alexey Uzhva <alexey ar kvirc dot ru>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: theme_ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-03-31 09:45+0400\n"
+"Last-Translator: Alexey Uzhva <alexey ar kvirc dot ru>\n"
+"Language-Team: Russian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:50
+msgid "The selected file does not seem to be a valid KVIrc theme package"
+msgstr "Выбранные файлы не являются пакетами темы KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:70
+msgid "The selected file does not seem to be a valid KVIrc package: %Q"
+msgstr "Выбранный файл не является пакетом темы KVIrc : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:316
+msgid "Author"
+msgstr "Автор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:317
+msgid "Created at"
+msgstr "Дата создания"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:318
+msgid "Created with"
+msgstr "Создано с помощью"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:200
+msgid "Warning: The theme might be incompatible with this version of KVIrc"
+msgstr "Предупреждение: тема может быть не совместима с вашей версией KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:209
+msgid "Go Back to Package Data"
+msgstr "Вернуться к данным пакета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:216
+msgid ""
+"Warning: Some of the theme contained in this package might be either "
+"corrupted or incompatible with this version of KVIrc"
+msgstr ""
+"Предупреждение: некоторые файлы этого пакета могут быть повреждены или не "
+"совместимы с вашей версией KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:220
+msgid "Show Details"
+msgstr "Показать подробности"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:272
+msgid "Install Theme Pack - KVIrc"
+msgstr "Установить пакет темы - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:273
+msgid "You're about to install the following theme package"
+msgstr "Вы пытаетесь установить пакет темы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:274
+msgid "Do you want to proceed with the installation ?"
+msgstr "Вы хотите продолжить установку?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:275
+msgid "Do Not Install"
+msgstr "Не устанавливать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:276
+msgid "Yes, Proceed"
+msgstr "Да, продолжить"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:293
+msgid "Failed to unpack the selected file: %Q"
+msgstr "Не могу распаковать выбранный файл: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:319
+msgid "Theme Engine Version"
+msgstr "Версия движка темы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:320
+msgid "Subdirectory"
+msgstr "Подкаталог"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:87
+msgid "Your name here"
+msgstr "Ваше имя"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:89
+msgid "Put a package description here..."
+msgstr "Запишите здесь описание вашего пакета..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:347
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:476
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+msgid "Export Theme - KVIrc"
+msgstr "Экспорт темы - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:130
+msgid ""
+"This procedure allows you to export the selected themes to a single package. "
+"It is useful when you want to distribute your themes to the public."
+msgstr ""
+"Эта процедура позволяет вам экспортировать выделенные темы в один пакет. Это "
+"очень удобно, если вы хотите распространять ваши темы в интернете."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:132
+msgid ""
+"You will be asked to provide a package name, a description and, if you want, "
+"an icon/screenshot."
+msgstr ""
+"Вам будет предложено заполнить описание вашей темы, и, если вы захотите, "
+"приложить скриншот."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:83
+msgid "Hit the \"Next\" button to begin."
+msgstr "Нажмите \"Далее\" для продолжения."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:90
+msgid "Welcome"
+msgstr "Добро пожаловать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:153
+msgid ""
+"This is the information list for the themes you're packaging. If it looks OK "
+"press \"Next\" to continue, otherwise press \"Cancel\" and rewiew your "
+"themes first."
+msgstr ""
+"Это информация о темах, которые вы хотите запаковать. Если она в порядке, "
+"нажмите \"Далее\" для продолжения. Иначе, нажмите \"Отмена\" и измените ее."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:203
+msgid "Theme Data"
+msgstr "Данные темы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:215
+msgid ""
+"Here you need to provide informations about you (the packager) and a short "
+"description of the package you're creating."
+msgstr "Здесь вы должны указать информацию о себе и краткое описание пакета."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:220
+msgid "Package Name:"
+msgstr "Имя пакета:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:228
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:115
+msgid "Version:"
+msgstr "Версия:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:236
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:123
+msgid "Description:"
+msgstr "Описание:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:244
+msgid "Package Author:"
+msgstr "Автор:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:255
+msgid "Package Informations"
+msgstr "Информация о пакете"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:267
+msgid ""
+"Here you can choose the image that will appear in the installation dialog "
+"for your theme package. It can be an icon, a logo or a screenshot and it "
+"should be not larger than 300x225. If you don't provide an image a simple "
+"default icon will be used at installation stage."
+msgstr ""
+"Здесь вы можете выбрать изображение, которое будет видно пользователю во "
+"время установки темы. Это может быть иконка или скриншот, но их размер не "
+"может превышать 300х225 пикселей. Если вы не укажете изображения, то будет "
+"использовано изображение по умолчанию."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:284
+msgid "Icon/Screenshot"
+msgstr "Иконка или скриншот"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:296
+msgid ""
+"Here you must choose the file name for the theme package. It should have a *."
+"%1 extension."
+msgstr ""
+"Здесь вы можете выбрать имя файла вашего пакета темы. оно должно иметь "
+"расширение *.%1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:306
+msgid "Finally hit the \"Finish\" button to complete the packaging operation."
+msgstr "Для завершения операции упаковки нажмите \"Завершить\"."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:312
+msgid "Package Path"
+msgstr "Путь к пакету"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:347
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:206
+msgid "Failed to load the selected image"
+msgstr "Не могу загрузить выбранное изображение"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:387
+msgid "Failed to load the selected image: please fix it"
+msgstr "Не могу загрузить выбранное изображение: пожалуйста, исправьте его"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:461
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:473
+msgid "Packaging failed"
+msgstr "Упаковка завершена неудачно"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:73
+msgid "Error installing theme package: %Q"
+msgstr "Не могу установить пакет темы: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:110
+msgid "Choose a file to save the screenshot to"
+msgstr "Выберите файл для сохранения скриншота."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:125
+msgid "Error making screenshot"
+msgstr "Не могу сделать скриншот."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:101
+msgid "by"
+msgstr "от"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:147
+msgid "Manage Themes - KVIrc"
+msgstr "Управление темами - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:165
+msgid "Save Current Theme..."
+msgstr "Сохранить текущую тему..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:175
+msgid "Export Selected Themes to a Distributable Package"
+msgstr "Экспортировать выбранные темы в пакет для дальнейшего распространения"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:181
+msgid "Delete Selected Themes"
+msgstr "Удалить выбранные темы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:191
+msgid "Install Theme Package From Disk"
+msgstr "Установить пакет темы с локального диска"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:197
+msgid "Get More Themes..."
+msgstr "Получить больше тем"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:286
+msgid "&Remove Theme"
+msgstr "Удалить тему"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:287
+msgid "&Apply Theme"
+msgstr "Применить тему"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:316
+msgid "Apply theme - KVIrc"
+msgstr "Применить тему - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:304
+msgid "Do you wish to apply theme \"%Q\" (version %Q)?"
+msgstr "Вы действительно хотите применить тему \"%Q\" (версии %Q)?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:315
+msgid "Failed to apply the specified theme: %Q"
+msgstr "Не могу применить выбранную тему: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:329
+msgid "Delete Theme - KVIrc"
+msgstr "Удалить тему - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:330
+msgid "Do you really wish to delete theme \"%Q\" (version %Q)?"
+msgstr "Вы действительно хотите удалить \"%Q\" (версии %Q)?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:346
+msgid "Open Theme - KVIrc"
+msgstr "Открыть тему - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:206
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:264
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:286
+msgid "Save Current Theme - KVIrc"
+msgstr "Сохранить текущую тему - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:79
+msgid ""
+"This procedure allows you to save the current theme settings to a single "
+"directory. It is useful if you want to apply other themes or play with the "
+"theme settings and later come back to this theme with a single click. It "
+"will also allow you to manually modify the theme settings and later export "
+"them to a distributable package."
+msgstr ""
+"Эта процедура позволить сохранить все настройки текущей темы в одну папку. "
+"Это удобно, если вы хотите применить другую тему и хотите потом вернуться "
+"обратно в один клик. Это также удобно, если вы хотите вручную изменить тему "
+"(например, изменить или добавить свои изображения или иконки) а потом "
+"экспортировать в пакет темы."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:81
+msgid ""
+"You will be asked to provide a theme name, a description and, if you want, a "
+"screenshot."
+msgstr "Вам будет предложено указать имя темы, описание и скриншот."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:102
+msgid ""
+"Here you need to provide informations about you (the author) and a short "
+"description of the theme you're creating."
+msgstr ""
+"Здесь вы должны указать информацию о себе (авторе) и короткое описание темы, "
+"которую вы создаете."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:107
+msgid "Theme Name:"
+msgstr "Имя темы:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:131
+msgid "Theme Author:"
+msgstr "Автор темы:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:142
+msgid "Theme Informations"
+msgstr "Информация о теме"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:154
+msgid ""
+"Here you can either choose a screenshot image from disk or make one now. The "
+"screenshot will be displayed in the tooltips of the theme management dialog "
+"and will be also visible in the package installation dialog if you will "
+"export the theme to a distributable package."
+msgstr ""
+"Здесь вы можете выбрать скриншот или изображение для вашей темы. Это "
+"изображение будет показано во всплывающих подсказках диалога управления "
+"темы, а также будет видно при установке пакеты темы, если вы в дальнейшем "
+"захотите его создать."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:170
+msgid "Make Screenshot Now"
+msgstr "Создать скриншот сейчас."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:177
+msgid "Screenshot"
+msgstr "Скриншот"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:227
+msgid "Acquire Screenshot - KVIrc"
+msgstr "Сделать скриншот - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:227
+msgid "Failed to make screenshot"
+msgstr "Не могу сделать скриншот"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:243
+msgid "You must choose a theme name!"
+msgstr "Вы должны выбрать имя темы!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:264
+msgid "Unable to create theme directory."
+msgstr "Не могу создать папку темы"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:275
+msgid "Unable to save theme: %Q"
+msgstr "Не могу сохранить тему: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:286
+msgid "Failed to load the selected screenshot image: please fix it"
+msgstr "Не могу загрузить выбранное изображение. Пожалуйста, исправьте его."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:293
+msgid "Theme saved successfully to "
+msgstr "Тема успешно сохранена в "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:296
+msgid "Save Theme - KVIrc"
+msgstr "Сохранить тему - KVIrc"
diff --git a/po/modules/theme/theme_uk.po b/po/modules/theme/theme_uk.po
new file mode 100644
index 00000000..ff0617ff
--- /dev/null
+++ b/po/modules/theme/theme_uk.po
@@ -0,0 +1,397 @@
+# translation of theme_ua.po to Ukrainian
+# Copyright (C) YEAR THE PACKAGE' COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Belyaev Stanislav <[email protected]>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: theme_ua\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-21 01:02+0100\n"
+"PO-Revision-Date: 2007-12-19 15:00+0200\n"
+"Last-Translator: Belyaev Stanislav <[email protected]>\n"
+"Language-Team: Ukrainian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:50
+msgid "The selected file does not seem to be a valid KVIrc theme package"
+msgstr "Обрані файли не є пакетами теми KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:70
+msgid "The selected file does not seem to be a valid KVIrc package: %Q"
+msgstr "Обраний файл не є пакетом теми KVIrc : %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:118
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:316
+msgid "Author"
+msgstr "Автор"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:119
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:317
+msgid "Created at"
+msgstr "Дата створення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:120
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:318
+msgid "Created with"
+msgstr "Створено за допомогою"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:200
+msgid "Warning: The theme might be incompatible with this version of KVIrc"
+msgstr "Попередження: тема може бути не сумісна з вашою версією KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:209
+msgid "Go Back to Package Data"
+msgstr "Повернутися до даних пакета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:216
+msgid ""
+"Warning: Some of the theme contained in this package might be either "
+"corrupted or incompatible with this version of KVIrc"
+msgstr ""
+"Попередження: деякі файли цього пакета можуть бути ушкоджені або не сумісні "
+"з вашою версією KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:220
+msgid "Show Details"
+msgstr "Показати подробиці"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:272
+msgid "Install Theme Pack - KVIrc"
+msgstr "Установити пакет теми - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:273
+msgid "You're about to install the following theme package"
+msgstr "Ви намагаєтеся встановити пакет теми"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:274
+msgid "Do you want to proceed with the installation ?"
+msgstr "Ви хочете продовжити установку?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:275
+msgid "Do Not Install"
+msgstr "Не встановлювати"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:276
+msgid "Yes, Proceed"
+msgstr "Так, продовжити"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:293
+msgid "Failed to unpack the selected file: %Q"
+msgstr "Не можу розпакувати обраний файл: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:319
+msgid "Theme Engine Version"
+msgstr "Версія движка теми"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/themefunctions.cpp:320
+msgid "Subdirectory"
+msgstr "Підкаталог"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:87
+msgid "Your name here"
+msgstr "Ваше ім'я"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:89
+msgid "Put a package description here..."
+msgstr "Запишіть тут опис вашого пакета..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:121
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:347
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:387
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:464
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:476
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:484
+msgid "Export Theme - KVIrc"
+msgstr "Експорт теми - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:130
+msgid ""
+"This procedure allows you to export the selected themes to a single package. "
+"It is useful when you want to distribute your themes to the public."
+msgstr ""
+"Ця процедура дозволяє вам експортувати виділені теми в один пакет. Це дуже "
+"зручно, якщо ви хочете поширювати ваші теми в інтернеті."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:132
+msgid ""
+"You will be asked to provide a package name, a description and, if you want, "
+"an icon/screenshot."
+msgstr ""
+"Вам буде запропонований заповнити опис вашої теми, і, якщо ви захочете, "
+"прикласти скріншот."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:134
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:83
+msgid "Hit the \"Next\" button to begin."
+msgstr "Натисніть \"Далі\" для продовження."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:141
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:90
+msgid "Welcome"
+msgstr "Ласкаво просимо"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:153
+msgid ""
+"This is the information list for the themes you're packaging. If it looks OK "
+"press \"Next\" to continue, otherwise press \"Cancel\" and rewiew your "
+"themes first."
+msgstr ""
+"Це інформація про теми, які ви хочете запакувати. Якщо вона в порядку, "
+"натисніть \"Далі\" для продовження. Інакше, натисніть \"Скасування\" і "
+"зміните її."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:203
+msgid "Theme Data"
+msgstr "Даної теми"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:215
+msgid ""
+"Here you need to provide informations about you (the packager) and a short "
+"description of the package you're creating."
+msgstr "Тут ви повинні вказати інформацію про себе й короткий опис пакета."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:220
+msgid "Package Name:"
+msgstr "Ім'я пакета:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:228
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:115
+msgid "Version:"
+msgstr "Версія:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:236
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:123
+msgid "Description:"
+msgstr "Опис:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:244
+msgid "Package Author:"
+msgstr "Автор:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:255
+msgid "Package Informations"
+msgstr "Інформація про пакет"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:267
+msgid ""
+"Here you can choose the image that will appear in the installation dialog "
+"for your theme package. It can be an icon, a logo or a screenshot and it "
+"should be not larger than 300x225. If you don't provide an image a simple "
+"default icon will be used at installation stage."
+msgstr ""
+"Тут ви можете вибрати зображення, що буде видно користувачеві в час "
+"установки теми. Це може бути іконка або скріншот, але їхній розмір не може "
+"перевищувати 300х225 пікселей. Якщо ви не вкажете зображення, то буде "
+"використане зображення за замовчуванням."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:284
+msgid "Icon/Screenshot"
+msgstr "Іконка або скріншот"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:296
+#, fuzzy
+msgid ""
+"Here you must choose the file name for the theme package. It should have a *."
+"%1 extension."
+msgstr ""
+"Тут ви можете вибрати ім'я файлу вашого пакета теми. воно повинне мати "
+"розширення *. %1"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:306
+msgid "Finally hit the \"Finish\" button to complete the packaging operation."
+msgstr "Для завершення операції впакування натисніть \"Завершити\"."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:312
+msgid "Package Path"
+msgstr "Шлях до пакета"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:347
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:206
+msgid "Failed to load the selected image"
+msgstr "Не можу завантажити обране зображення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:387
+msgid "Failed to load the selected image: please fix it"
+msgstr "Не можу завантажити обране зображення: будь ласка, виправте його"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:461
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/packthemedialog.cpp:473
+msgid "Packaging failed"
+msgstr "Упакування завершене невдало"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:73
+msgid "Error installing theme package: %Q"
+msgstr "Не можу встановити пакет теми: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:110
+msgid "Choose a file to save the screenshot to"
+msgstr "Виберіть файл для збереження скріншота."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/libkvitheme.cpp:125
+msgid "Error making screenshot"
+msgstr "Не можу зробити скріншот."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:101
+msgid "by"
+msgstr "від"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:147
+msgid "Manage Themes - KVIrc"
+msgstr "Керування темами - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:165
+msgid "Save Current Theme..."
+msgstr "Зберегти поточну тему..."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:175
+msgid "Export Selected Themes to a Distributable Package"
+msgstr "Експортувати обрані теми в пакет для подальшого поширення"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:181
+msgid "Delete Selected Themes"
+msgstr "Видалити обрані теми"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:191
+msgid "Install Theme Package From Disk"
+msgstr "Установити пакет теми з локального диска"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:197
+msgid "Get More Themes..."
+msgstr "Одержати більше тим"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:286
+msgid "&Remove Theme"
+msgstr "Видалити тему"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:287
+msgid "&Apply Theme"
+msgstr "Застосувати тему"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:303
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:316
+msgid "Apply theme - KVIrc"
+msgstr "Застосувати тему - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:304
+msgid "Do you wish to apply theme \"%Q\" (version %Q)?"
+msgstr "Ви дійсно хочете застосувати тему \"%Q\" (версії %Q)?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:315
+msgid "Failed to apply the specified theme: %Q"
+msgstr "Не можу застосувати обрану тему: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:329
+msgid "Delete Theme - KVIrc"
+msgstr "Видалити тему - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:330
+msgid "Do you really wish to delete theme \"%Q\" (version %Q)?"
+msgstr "Ви дійсно хочете видалити \"%Q\" (версії %Q)?"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/managementdialog.cpp:346
+msgid "Open Theme - KVIrc"
+msgstr "Відкрити тему - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:70
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:206
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:243
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:264
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:276
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:286
+msgid "Save Current Theme - KVIrc"
+msgstr "Зберегти поточну тему - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:79
+msgid ""
+"This procedure allows you to save the current theme settings to a single "
+"directory. It is useful if you want to apply other themes or play with the "
+"theme settings and later come back to this theme with a single click. It "
+"will also allow you to manually modify the theme settings and later export "
+"them to a distributable package."
+msgstr ""
+"Ця процедура дозволити зберегти всі настроювання поточної теми в одну папку. "
+"Це зручно, якщо ви хочете застосувати іншу тему й хочете потім повернутися "
+"назад в один клич. Це також зручно, якщо ви хочете вручну змінити тему "
+"(наприклад, змінити або додати свої зображення або іконки) а потім "
+"експортувати в пакет теми."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:81
+msgid ""
+"You will be asked to provide a theme name, a description and, if you want, a "
+"screenshot."
+msgstr "Вам буде запропоновано вказати ім'я теми, опис і скріншот."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:102
+msgid ""
+"Here you need to provide informations about you (the author) and a short "
+"description of the theme you're creating."
+msgstr ""
+"Тут ви повинні вказати інформацію про себе (авторі) і короткий опис теми, "
+"яку ви створюєте."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:107
+msgid "Theme Name:"
+msgstr "Ім'я теми:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:131
+msgid "Theme Author:"
+msgstr "Автор теми:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:142
+msgid "Theme Informations"
+msgstr "Інформація про тему"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:154
+msgid ""
+"Here you can either choose a screenshot image from disk or make one now. The "
+"screenshot will be displayed in the tooltips of the theme management dialog "
+"and will be also visible in the package installation dialog if you will "
+"export the theme to a distributable package."
+msgstr ""
+"Тут ви можете вибрати скріншот або зображення для вашої теми. Це зображення "
+"буде показано в спливаючих підказках діалогу керування теми, а також буде "
+"видно при установці пакети теми, якщо ви надалі захочете його створити."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:170
+msgid "Make Screenshot Now"
+msgstr "Створити скріншот зараз."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:177
+msgid "Screenshot"
+msgstr "Скріншот"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:227
+msgid "Acquire Screenshot - KVIrc"
+msgstr "Зробити скріншот - KVIrc"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:227
+msgid "Failed to make screenshot"
+msgstr "Не можу зробити скріншот"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:243
+msgid "You must choose a theme name!"
+msgstr "Ви повинні вибрати ім'я теми!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:264
+msgid "Unable to create theme directory."
+msgstr "Не можу створити папку теми"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:275
+msgid "Unable to save theme: %Q"
+msgstr "Не можу зберегти тему: %Q"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:286
+msgid "Failed to load the selected screenshot image: please fix it"
+msgstr "Не можу завантажити обране зображення. Будь ласка, виправте його."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:293
+msgid "Theme saved successfully to "
+msgstr "Тема успішно збережена в "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/theme/savethemedialog.cpp:296
+msgid "Save Theme - KVIrc"
+msgstr "Зберегти тему - KVIrc"
diff --git a/po/modules/torrent/Makefile.am b/po/modules/torrent/Makefile.am
new file mode 100644
index 00000000..df033870
--- /dev/null
+++ b/po/modules/torrent/Makefile.am
@@ -0,0 +1,68 @@
+################################################################################
+# KVirc IRC client Makefile - 18.09.99 Szymon Stefanek <pragma at kvirc dot net>
+################################################################################
+
+# The name of this module
+THISMODULE = torrent
+
+# Don't touch this
+tmpdir = $(localedir)
+
+# The *.mo files to generate
+tmp_DATA = torrent_de.mo \
+ torrent_it.mo \
+ torrent_hu.mo \
+ torrent_pt.mo \
+ torrent_fi.mo \
+ torrent_ru.mo \
+ torrent_cs.mo \
+ torrent_hr.mo \
+ torrent_uk.mo
+
+# The *.po files to generate
+POFILES = torrent_de.po \
+ torrent_it.po \
+ torrent_hu.po \
+ torrent_pt.po \
+ torrent_fi.po \
+ torrent_ru.po \
+ torrent_cs.po \
+ torrent_hr.po \
+ torrent_uk.po
+
+
+###############################################################################
+# STOP EDITING HERE
+###############################################################################
+
+# Killed the fuzzy entries: don't use them , they may SEGV
+# - touch $@ && $(SS_MSGFMT) -fvo $@ $<
+
+CLEANFILES = $(tmp_DATA)
+EXTRA_DIST = $(POFILES)
+
+%.mo: %.po
+ -touch $@ && $(SS_MSGFMT) -vo $@ $<
+
+messages-extract:
+ @find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.cpp > files; \
+ find $(topdir)/src/modules/$(THISMODULE)/ -maxdepth 10 -name *.h >> files; \
+ xgettext -o $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot -k__tr_ctx -k__tr_no_lookup_ctx -k__tr2qs_ctx -k__tr2wc_ctx -k__tr2ws_ctx -f files; \
+ rm files; \
+ echo "Messages extracted to $(THISMODULE).pot";
+
+messages-update:
+ @old=_old; \
+ if test -f "$(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot"; then \
+ for lang in $(POFILES); do \
+ echo "Updating file $$lang"; \
+ mv -f $$lang $$lang$$old; \
+ msgmerge -o $$lang $$lang$$old $(topdir)/po/modules/$(THISMODULE)/$(THISMODULE).pot && rm -f $$lang$$old; \
+ done; \
+ else \
+ echo "----------------------------------------------------"; \
+ echo "- WARNING: ./$(THISMODULE).pot does not exist"; \
+ echo "- WARNING: You must run make messages-extract first"; \
+ echo "----------------------------------------------------"; \
+ fi
+messages: messages-extract messages-update
diff --git a/po/modules/torrent/torrent_cs.po b/po/modules/torrent/torrent_cs.po
new file mode 100644
index 00000000..df8b556a
--- /dev/null
+++ b/po/modules/torrent/torrent_cs.po
@@ -0,0 +1,67 @@
+# Czech translation of Kvirc.
+# Copyright (C) 2004 THE Kvirc'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the Kvirc package.
+# Dušan Hokův <[email protected]>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Kvirc\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-13 00:55+0100\n"
+"PO-Revision-Date: 2007-12-05 18:20+0100\n"
+"Last-Translator: Dusan Hokuv <[email protected]>\n"
+"Language-Team: Czech <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:64
+msgid "No client selected!"
+msgstr "Nebyl zvolen klient!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_ktorrentdcopinterface.cpp:45
+msgid ""
+"An interface to KDE's excellent KTorrent client.\n"
+"Download it from http://www.ktorrent.org\n"
+msgstr ""
+"Interface ke skvělému KDE KTorrent klientu.\n"
+"Stahujte na http://www.ktorrent.org\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_ktorrentdcopinterface.cpp:61
+#, c-format
+msgid "Index out of range: %d [0-%d]!"
+msgstr "Index mimo rozsah: %d [0-%d]!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:63
+msgid "Trying torrent client interface \"%Q\": score %d"
+msgstr "Zkouším interface torrent klienta \"%Q\": skóre %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:103
+msgid "Choosing torrent client interface \"%Q\""
+msgstr "Vybírám interface torrent klienta \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:110
+msgid "Seems that there is no usable torrent client on this machine"
+msgstr "Vypadá to, že na tomto počítači není použitelný torrent klient"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:119
+msgid "No torrent client interface selected. Try /torrent.detect"
+msgstr "Nebyl zvolen interface torrent klienta. Zkuste /torrent.detect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:129
+msgid ""
+"The selected torrent client interface failed to execute the requested "
+"function"
+msgstr "Zvolený interface torrent klienta selhal ve spuštění požadované funkce"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:130
+msgid "Last interface error: "
+msgstr "POslední chyba interfacu:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:712
+msgid "Using client interface \"%Q\"."
+msgstr "Používám interface klienta \"%Q\"."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:720
+msgid "Invalid client interface \"%Q\"!"
+msgstr "Neplatný interface klienta \"%Q\"!"
diff --git a/po/modules/torrent/torrent_de.po b/po/modules/torrent/torrent_de.po
new file mode 100644
index 00000000..175971c5
--- /dev/null
+++ b/po/modules/torrent/torrent_de.po
@@ -0,0 +1,77 @@
+# translation of torrent_de.po to german
+# Czech translation of KVIrc.
+# Copyright (C) 2005 THE KVIrc'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the KVIrc package.
+#
+# Dušan Hokův <[email protected]>, 2005.
+# Markus Rennings <[email protected]>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: torrent_de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-13 00:55+0100\n"
+"PO-Revision-Date: 2007-11-21 18:31+0100\n"
+"Last-Translator: Markus Rennings <[email protected]>\n"
+"Language-Team: german <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:64
+msgid "No client selected!"
+msgstr "Keine Schnittstelle ausgewählt!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_ktorrentdcopinterface.cpp:45
+msgid ""
+"An interface to KDE's excellent KTorrent client.\n"
+"Download it from http://www.ktorrent.org\n"
+msgstr ""
+"Eine Schnittstelle für KTorrent.\n"
+"Sie können es von http://www.ktorrent.org herunterladen.\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_ktorrentdcopinterface.cpp:61
+#, c-format
+msgid "Index out of range: %d [0-%d]!"
+msgstr "Index ausserhalb des gültigen Bereichs: %d [0-%d]!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:63
+msgid "Trying torrent client interface \"%Q\": score %d"
+msgstr "Versuche Torrent-Client Schnittstelle \"%Q\": %d Punkte."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:103
+msgid "Choosing torrent client interface \"%Q\""
+msgstr "Benutze Torrent-Client Schnittstelle \"%Q\"."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:110
+msgid "Seems that there is no usable torrent client on this machine"
+msgstr ""
+"Es scheint kein Benutzbarer Torrent-Client auf diesem System installiert zu "
+"sein."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:119
+msgid "No torrent client interface selected. Try /torrent.detect"
+msgstr ""
+"Keine Torrent-Client Schnittstelle ausgewählt. Probieren Sie /torrent.detect "
+"auszuführen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:129
+msgid ""
+"The selected torrent client interface failed to execute the requested "
+"function"
+msgstr ""
+"Die ausgewählte Torrent-Client Schnittstelle konnte die Funktion nicht "
+"ausführen."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:130
+msgid "Last interface error: "
+msgstr "Letzter Schnittstellen-Fehler: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:712
+msgid "Using client interface \"%Q\"."
+msgstr "Benutze Client Schnittstelle \"%Q\"."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:720
+msgid "Invalid client interface \"%Q\"!"
+msgstr "Ungültige Client-Schnittstelle \"%Q\"!"
diff --git a/po/modules/torrent/torrent_fi.po b/po/modules/torrent/torrent_fi.po
new file mode 100644
index 00000000..26a20158
--- /dev/null
+++ b/po/modules/torrent/torrent_fi.po
@@ -0,0 +1,70 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Santeri Piippo [email protected], 2007.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: torrent_fi\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-11-21 17:34+0100\n"
+"PO-Revision-Date: 2007-11-27 18:16+0200\n"
+"Last-Translator: Santeri Piippo <[email protected]>\n"
+"Language-Team: LANGUAGE <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:64
+msgid "No client selected!"
+msgstr "Ei asiakasohjelmaa valittu!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_ktorrentdcopinterface.cpp:45
+msgid ""
+"An interface to KDE's excellent KTorrent client.\n"
+"Download it from http://www.ktorrent.org\n"
+msgstr ""
+"Käyttöliittymä KDEn mainioon KTorrent -asiakasohjelmaan.\n"
+"Lataa se osoitteesta http://www.ktorrent.org\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_ktorrentdcopinterface.cpp:61
+#, c-format
+msgid "Index out of range: %d [0-%d]!"
+msgstr "Indeksi ei ole sallittu: %d [0-%d]!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:63
+msgid "Trying torrent client interface \"%Q\": score %d"
+msgstr "Yritetään torrenttiasiakasohjelman käyttöliittymää \"%Q\": tulos %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:103
+msgid "Choosing torrent client interface \"%Q\""
+msgstr "Valitaan torrenttiasiakasohjelman käyttöliittymä \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:110
+msgid "Seems that there is no usable torrent client on this machine"
+msgstr "Näyttää siltä ettei tällä koneella ole käytettävää torrenttiasiakasohjelmaa"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:119
+msgid "No torrent client interface selected. Try /torrent.detect"
+msgstr "Ei torrenttiasiakasohjelman käyttölittymää valittu. Yritä /torrent.detect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:129
+msgid ""
+"The selected torrent client interface failed to execute the requested "
+"function"
+msgstr ""
+"Valittu torrenttiasiakasohjelman käyttöliittymä ei onnistunut ajamaan "
+"pyydettyä tehtävää"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:130
+msgid "Last interface error: "
+msgstr "Viimeisin käyttöliittymävirhe: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:707
+msgid "Using client interface \"%Q\"."
+msgstr "Käytetään asiakasohjelman käyttöliittymää \"%Q\"."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:715
+msgid "Invalid client interface \"%Q\"!"
+msgstr "Viallinen asiakasohjelman käyttöliittymä \"%Q\"!"
diff --git a/po/modules/torrent/torrent_hr.po b/po/modules/torrent/torrent_hr.po
new file mode 100644
index 00000000..bf7c1072
--- /dev/null
+++ b/po/modules/torrent/torrent_hr.po
@@ -0,0 +1,68 @@
+# translation of torrent.po to Hrvatski
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# SpeedyGhost <[email protected]>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: torrent\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-13 00:55+0100\n"
+"PO-Revision-Date: 2008-01-12 03:57+0100\n"
+"Last-Translator: SpeedyGhost <[email protected]>\n"
+"Language-Team: Hrvatski <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:64
+msgid "No client selected!"
+msgstr "Nema odabranog klijenta!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_ktorrentdcopinterface.cpp:45
+msgid ""
+"An interface to KDE's excellent KTorrent client.\n"
+"Download it from http://www.ktorrent.org\n"
+msgstr ""
+"Sučelje za KDE-ov sjajni KTorrent klijent.\n"
+"Preuzmite ga sa http://www.ktorrent.org\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_ktorrentdcopinterface.cpp:61
+#, c-format
+msgid "Index out of range: %d [0-%d]!"
+msgstr "Indeks izvan dometa: %d [0-%d]!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:63
+msgid "Trying torrent client interface \"%Q\": score %d"
+msgstr "Pokušavam torrent sučelje za klijenta \"%Q\": score %d "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:103
+msgid "Choosing torrent client interface \"%Q\""
+msgstr "Odabiranje sučelja za torrent klijent \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:110
+msgid "Seems that there is no usable torrent client on this machine"
+msgstr "Čini se da nema korisnih torrent klijenata na ovom računalu"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:119
+msgid "No torrent client interface selected. Try /torrent.detect"
+msgstr "Nema odabranih torrent klijent sučelja. Pokušajte /torrent.detect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:129
+msgid ""
+"The selected torrent client interface failed to execute the requested "
+"function"
+msgstr "Odabrani torrent klijent nije uspio izvršiti zatraženu funkciju"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:130
+msgid "Last interface error: "
+msgstr "Posljednja greška sučelja. "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:712
+msgid "Using client interface \"%Q\"."
+msgstr "Koristim klijent sućelje \"%Q\"."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:720
+msgid "Invalid client interface \"%Q\"!"
+msgstr "Neispravno klijent sučelje \"%Q\"!"
diff --git a/po/modules/torrent/torrent_hu.po b/po/modules/torrent/torrent_hu.po
new file mode 100644
index 00000000..7ae86998
--- /dev/null
+++ b/po/modules/torrent/torrent_hu.po
@@ -0,0 +1,70 @@
+# translation of torrent_hu.po to hungarian
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Ádám Fibinger <[email protected]>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: torrent_hu\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-13 00:55+0100\n"
+"PO-Revision-Date: 2008-02-26 08:37+0100\n"
+"Last-Translator: Ádám Fibinger <[email protected]>\n"
+"Language-Team: hungarian <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:64
+msgid "No client selected!"
+msgstr "Nincs kliens kiválasztva!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_ktorrentdcopinterface.cpp:45
+msgid ""
+"An interface to KDE's excellent KTorrent client.\n"
+"Download it from http://www.ktorrent.org\n"
+msgstr ""
+"Egy kezelőfelület a KDE kitűnő KTorrent klienséhez.\n"
+"Letölthető a http://www.ktorrent.org címről.\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_ktorrentdcopinterface.cpp:61
+#, c-format
+msgid "Index out of range: %d [0-%d]!"
+msgstr "Az index értékhatáron túli: %d [0-%d]!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:63
+msgid "Trying torrent client interface \"%Q\": score %d"
+msgstr " \"%Q\" tesztelése: %d pont"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:103
+msgid "Choosing torrent client interface \"%Q\""
+msgstr "Torrent kliens interfészének kiválasztása: \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:110
+msgid "Seems that there is no usable torrent client on this machine"
+msgstr "Úgy néz ki nincs torrent kliens telepítve ezen a számítógépen"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:119
+msgid "No torrent client interface selected. Try /torrent.detect"
+msgstr "Nincs torrent kliens kiválasztva. Próbáld a /torrent.detect parancsot."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:129
+msgid ""
+"The selected torrent client interface failed to execute the requested "
+"function"
+msgstr ""
+"A kiválasztott torrent kliens interfész nem tudta végrehajtani a kért "
+"műveletet"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:130
+msgid "Last interface error: "
+msgstr "Utolsó interfész hiba:"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:712
+msgid "Using client interface \"%Q\"."
+msgstr "Kliens interfészének kiválasztása: \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:720
+msgid "Invalid client interface \"%Q\"!"
+msgstr "Helytelen kliens interfész: \"%Q\""
diff --git a/po/modules/torrent/torrent_it.po b/po/modules/torrent/torrent_it.po
new file mode 100644
index 00000000..ecd2fd70
--- /dev/null
+++ b/po/modules/torrent/torrent_it.po
@@ -0,0 +1,69 @@
+# translation of torrent_it.po to
+# Italian translation file
+# Copyright (C) YEAR THE KVIrc COPYRIGHT HOLDER
+# This file is distributed under the same license as the KVIrc package.
+# Elvio Basello <hellvis69 at altervista dot org>, 2007
+msgid ""
+msgstr ""
+"Project-Id-Version: torrent_it\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-13 00:55+0100\n"
+"PO-Revision-Date: 2007-11-21 17:43+0100\n"
+"Last-Translator: \n"
+"Language-Team: <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:64
+msgid "No client selected!"
+msgstr "Nessun client selezionato!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_ktorrentdcopinterface.cpp:45
+msgid ""
+"An interface to KDE's excellent KTorrent client.\n"
+"Download it from http://www.ktorrent.org\n"
+msgstr ""
+"Un'interfaccia all'eccellente client KDE KTorrent.\n"
+"Scaricalo da http://www.ktorrent.org\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_ktorrentdcopinterface.cpp:61
+#, c-format
+msgid "Index out of range: %d [0-%d]!"
+msgstr "Indice fuori dal range: %d [0-%d]!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:63
+msgid "Trying torrent client interface \"%Q\": score %d"
+msgstr "Provo l'interfaccia al client torrent \"%Q\": punteggio %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:103
+msgid "Choosing torrent client interface \"%Q\""
+msgstr "Scelgo l'interfaccia al client torrent \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:110
+msgid "Seems that there is no usable torrent client on this machine"
+msgstr "Sembra che non ci siano client torrent usabili su questa macchina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:119
+msgid "No torrent client interface selected. Try /torrent.detect"
+msgstr "Nessuna interfaccia selezionata. Prova con /torrent.detect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:129
+msgid ""
+"The selected torrent client interface failed to execute the requested "
+"function"
+msgstr ""
+"L'interfaccia selezionata ha fallito nell'eseguire la funzione richiesta"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:130
+msgid "Last interface error: "
+msgstr "Ultimo errore: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:712
+msgid "Using client interface \"%Q\"."
+msgstr "Scelgo l'interfaccia al client torrent \"%Q\"."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:720
+msgid "Invalid client interface \"%Q\"!"
+msgstr "Interfaccia al client torrent \"%Q\" invalida!"
diff --git a/po/modules/torrent/torrent_pt.po b/po/modules/torrent/torrent_pt.po
new file mode 100644
index 00000000..751b9ee2
--- /dev/null
+++ b/po/modules/torrent/torrent_pt.po
@@ -0,0 +1,70 @@
+# translation of torrent_pt.po to Português
+# Zé <[email protected]>, 2007.
+# Copyright (C) YEAR THE KVIrc COPYRIGHT HOLDER
+# This file is distributed under the same license as the KVIrc package.
+msgid ""
+msgstr ""
+"Project-Id-Version: torrent_pt\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-13 00:55+0100\n"
+"PO-Revision-Date: 2007-11-26 04:55+0000\n"
+"Last-Translator: Zé <[email protected]>\n"
+"Language-Team: Português <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:64
+msgid "No client selected!"
+msgstr "Nenhum cliente seleccionado!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_ktorrentdcopinterface.cpp:45
+msgid ""
+"An interface to KDE's excellent KTorrent client.\n"
+"Download it from http://www.ktorrent.org\n"
+msgstr ""
+"Um interface para o cliente KDE KTorrent.\n"
+"Transfira-o de http://www.ktorrent.org\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_ktorrentdcopinterface.cpp:61
+#, c-format
+msgid "Index out of range: %d [0-%d]!"
+msgstr "Índice fora de alcance: %d [0-%d]!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:63
+msgid "Trying torrent client interface \"%Q\": score %d"
+msgstr "A tentar o interface do cliente torrent \"%Q\": pontuação %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:103
+msgid "Choosing torrent client interface \"%Q\""
+msgstr "E escolher o interface do cliente torrent \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:110
+msgid "Seems that there is no usable torrent client on this machine"
+msgstr "Parece que não existe nenhum cliente torrent nesta máquina"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:119
+msgid "No torrent client interface selected. Try /torrent.detect"
+msgstr "Nenhum interface seleccionado. Tente /torrent.detect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:129
+msgid ""
+"The selected torrent client interface failed to execute the requested "
+"function"
+msgstr ""
+"O interface de cliente torrent seleccionado falhou ao executar a função "
+"pedida"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:130
+msgid "Last interface error: "
+msgstr "Ultimo erro do interface: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:712
+msgid "Using client interface \"%Q\"."
+msgstr "A usar o interface do cliente \"%Q\"."
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:720
+msgid "Invalid client interface \"%Q\"!"
+msgstr "Interface de cliente inválido \"%Q\"!"
diff --git a/po/modules/torrent/torrent_ru.po b/po/modules/torrent/torrent_ru.po
new file mode 100644
index 00000000..4bba6945
--- /dev/null
+++ b/po/modules/torrent/torrent_ru.po
@@ -0,0 +1,73 @@
+# translation of torrent_ru.po to
+# Russian translation file
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the KVIrc package.
+#
+# Govorov Igor <govorov.igor at-sign gmail.com>, 2007
+msgid ""
+msgstr ""
+"Project-Id-Version: torrent_ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-13 00:55+0100\n"
+"PO-Revision-Date: 2007-11-21 09:19+0300\n"
+"Last-Translator: Govorov Igor <govorov.igor at-sign gmail.com>\n"
+"Language-Team: Russian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:64
+msgid "No client selected!"
+msgstr "Не выбран клиент!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_ktorrentdcopinterface.cpp:45
+msgid ""
+"An interface to KDE's excellent KTorrent client.\n"
+"Download it from http://www.ktorrent.org\n"
+msgstr ""
+"Интерфейс для замечательного KDEшного клиента KTorrent. \n"
+"Который можно скачать здесь: http://www.ktorrent.org\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_ktorrentdcopinterface.cpp:61
+#, c-format
+msgid "Index out of range: %d [0-%d]!"
+msgstr "Индекс не попадает в пределы: %d [0-%d]!"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:63
+msgid "Trying torrent client interface \"%Q\": score %d"
+msgstr "Пробую интерфейс torrent-клиента \"%Q\": score %d"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:103
+msgid "Choosing torrent client interface \"%Q\""
+msgstr "Выбран интерфейс torrent-клиента \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:110
+msgid "Seems that there is no usable torrent client on this machine"
+msgstr ""
+"На данной машине не найдено torrent-клиента, который можно было бы "
+"использовать"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:119
+msgid "No torrent client interface selected. Try /torrent.detect"
+msgstr "Не выбран интерфейс torrent-клиента. Попробуйте /torrent.detect"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:129
+msgid ""
+"The selected torrent client interface failed to execute the requested "
+"function"
+msgstr ""
+"Выбранный интерфейс torrent-клиента не смог выполнить запрошенную функцию"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:130
+msgid "Last interface error: "
+msgstr "Последняя ошибка интерфейса: "
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:712
+#, fuzzy
+msgid "Using client interface \"%Q\"."
+msgstr "Выбран интерфейс torrent-клиента \"%Q\""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:720
+#, fuzzy
+msgid "Invalid client interface \"%Q\"!"
+msgstr "Выбран интерфейс torrent-клиента \"%Q\""
diff --git a/po/modules/torrent/torrent_uk.po b/po/modules/torrent/torrent_uk.po
new file mode 100644
index 00000000..52ddcf11
--- /dev/null
+++ b/po/modules/torrent/torrent_uk.po
@@ -0,0 +1,66 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-13 00:55+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_statusbarapplet.cpp:64
+msgid "No client selected!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_ktorrentdcopinterface.cpp:45
+msgid ""
+"An interface to KDE's excellent KTorrent client.\n"
+"Download it from http://www.ktorrent.org\n"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/tc_ktorrentdcopinterface.cpp:61
+#, c-format
+msgid "Index out of range: %d [0-%d]!"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:63
+msgid "Trying torrent client interface \"%Q\": score %d"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:103
+msgid "Choosing torrent client interface \"%Q\""
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:110
+msgid "Seems that there is no usable torrent client on this machine"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:119
+msgid "No torrent client interface selected. Try /torrent.detect"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:129
+msgid ""
+"The selected torrent client interface failed to execute the requested "
+"function"
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:130
+msgid "Last interface error: "
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:712
+msgid "Using client interface \"%Q\"."
+msgstr ""
+
+#: /home/hellvis69/kvircsvn/trunk/kvirc/src/modules/torrent/libkvitorrent.cpp:720
+msgid "Invalid client interface \"%Q\"!"
+msgstr ""
diff --git a/scripts/Makefile.am b/scripts/Makefile.am
new file mode 100644
index 00000000..15f3de1e
--- /dev/null
+++ b/scripts/Makefile.am
@@ -0,0 +1,5 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+SUBDIRS = browser config helpsearch
diff --git a/scripts/browser/Makefile.am b/scripts/browser/Makefile.am
new file mode 100644
index 00000000..6e5f216a
--- /dev/null
+++ b/scripts/browser/Makefile.am
@@ -0,0 +1,6 @@
+###############################################################################
+# KVirc Makefile 08.12.98 Szymon Stefanek
+###############################################################################
+bin_SCRIPTS = kvi_run_netscape
+
+EXTRA_DIST= $(bin_SCRIPTS)
diff --git a/scripts/browser/kvi_run_netscape b/scripts/browser/kvi_run_netscape
new file mode 100755
index 00000000..4ee301a4
--- /dev/null
+++ b/scripts/browser/kvi_run_netscape
@@ -0,0 +1,24 @@
+#! /bin/sh
+
+set -e
+
+BROWSER=
+
+if [ -z "$1" ]; then
+ echo "Missing URL"
+else
+ for BROWSER in firefox seamonkey mozilla netscape ""; do
+ if [ -z "$BROWSER" ]; then
+ echo "Could not find either Netscape or Mozilla"
+ exit 0
+ fi
+ if which "$BROWSER" > /dev/null; then
+ break;
+ fi
+ done
+
+ if ! "$BROWSER" -remote "openURL($1)" 2> /dev/null; then
+ echo "$BROWSER is not currently running. Starting a new instance..."
+ exec "$BROWSER" "$1"
+ fi
+fi
diff --git a/scripts/config/Makefile.am b/scripts/config/Makefile.am
new file mode 100644
index 00000000..94c39e09
--- /dev/null
+++ b/scripts/config/Makefile.am
@@ -0,0 +1,6 @@
+###############################################################################
+# KVirc Makefile 08.12.98 Szymon Stefanek
+###############################################################################
+bin_SCRIPTS = kvirc-config
+
+EXTRA_DIST= kvirc-config.in
diff --git a/scripts/config/kvirc-config.in b/scripts/config/kvirc-config.in
new file mode 100644
index 00000000..eaaa0899
--- /dev/null
+++ b/scripts/config/kvirc-config.in
@@ -0,0 +1,189 @@
+#!/bin/sh
+
+#
+# A script for retrieving the latest KVIrc IRC Client build configuration
+# Mainly used for building plugins out of the source tree
+# The idea is "stolen" from the gtk-config and xmms-config scripts :)
+#
+# 09-04-2000 Szymon Stefanek (Initial release)
+# 31-01-2002 Szymon Stefanek (Revised for KVIrc 3.0.0)
+# 27-07-2002 Szymon Stefanek (Revised again for KVIrc 3.0.0)
+#
+# This program is FREE software. You can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your opinion) any later version.
+#
+# This program is distributed in the HOPE that it will be USEFUL,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the GNU General Public License for more details.
+#
+# You 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 02110-1301, USA.
+#
+
+set -e
+
+srcdir="@srcdir@"
+top_srcdir="@top_srcdir@"
+prefix="@prefix@"
+exec_prefix="@exec_prefix@"
+
+bindir="@bindir@"
+sbindir="@sbindir@"
+libexecdir="@libexecdir@"
+datadir="@datadir@"
+sysconfdir="@sysconfdir@"
+sharedstatedir="@sharedstatedir@"
+localstatedir="@localstatedir@"
+libdir="@libdir@"
+infodir="@infodir@"
+mandir="@mandir@"
+includedir="@includedir@"
+oldincludedir="/usr/include"
+headersdir="@headersdir@"
+applnkdir="@applnkdir@"
+configdir="@configdir@"
+configmodulesdir="@configmodulesdir@"
+defscriptdir="@defscriptdir@"
+globalkvircdir="@globalkvircdir@"
+helpdir="@helpdir@"
+iconapps32datadir="@iconapps32datadir@"
+iconapps48datadir="@iconapps48datadir@"
+iconmime32datadir="@iconmime32datadir@"
+iconmime48datadir="@iconmime48datadir@"
+install_sh="@install_sh@"
+kdeservicesdir="@kdeservicesdir@"
+licensedir="@licensedir@"
+localedir="@localedir@"
+mimelnkdir="@mimelnkdir@"
+picsdir="@globalkvircdir@/pics"
+pluglibdir="@pluglibdir@"
+topdir="@topdir@"
+
+
+build_alias="@build_alias@"
+build_triplet="@build@"
+host_alias="@host_alias@"
+host_triplet="@host@"
+target_alias="@target_alias@"
+target_triplet="@target@"
+
+SS_CPPFLAGS="@SS_CPPFLAGS@"
+SS_INCDIRS="@SS_INCDIRS@"
+SS_LDFLAGS="@SS_LDFLAGS@"
+SS_LIBDIRS="@SS_LIBDIRS@"
+SS_LIBLINK="@SS_LIBLINK@"
+SS_MSGFMT="@SS_MSGFMT@"
+SS_QT_MOC="@SS_QT_MOC@"
+SS_RPATH="@SS_RPATH@"
+SS_TOPSRCDIR="@SS_TOPSRCDIR@"
+VERSION="@VERSION@"
+
+print_syntax()
+{
+ echo "kvirc-config (KVIrc @VERSION@)"
+ echo " A script for retrieving the latest KVIrc build configuration"
+ echo ""
+ echo "Syntax : kvirc-config [OPTIONS]"
+ echo " options:"
+ echo " --version : KVIrc version"
+ echo " --prefix : Intallation prefix"
+ echo " --include_dir : KVIrc include directory (where headers are stored)"
+ echo " --exec_prefix : Binaries installation prefix"
+ echo " --rpath_flags : Rpath flags used in the KVIrc compilation"
+ echo " --cpp_flags : CPP flags used in the KVIrc compilation"
+ echo " --include_dirs : Include directories used in the KVIrc compilation"
+ echo " --ld_flags : Linker flags used in the KVirc compilation"
+ echo " --lib_dirs : Library directories used in the KVIrc compilation"
+ echo " --libraries : External libraries that KVIrc has been linked to"
+ echo " --qt_moc_path : Qt meta object compiler path"
+ echo " --modules_dir : KVIrc modules dir"
+ echo " --plugin_dir : Compat alias for modules_dir"
+ echo " --bin_dir : KVIrc binaries installation directory"
+ echo " --lib_dir : KVIrc libraries installation directory"
+ echo " --help_dir : KVIrc help files installation directory"
+ echo " --locale_dir : KVIrc translation files directory"
+ echo " --pics_dir : KVIrc shared pictures directory"
+ exit 0
+}
+
+if test $# -eq 0; then
+ print_syntax 1 1>&2
+fi
+
+SS_STUFF_TO_ECHO=""
+
+while test $# -gt 0; do
+ case "$1" in
+ -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) optarg= ;;
+ esac
+
+ case $1 in
+ --prefix)
+ SS_STUFF_TO_ECHO="$SS_STUFF_TO_ECHO $prefix"
+ ;;
+ --exec_prefix)
+ SS_STUFF_TO_ECHO="$SS_STUFF_TO_ECHO $exec_prefix"
+ ;;
+ --include_dir)
+ SS_STUFF_TO_ECHO="$SS_STUFF_TO_ECHO $headersdir"
+ ;;
+ --version)
+ SS_STUFF_TO_ECHO="$SS_STUFF_TO_ECHO $VERSION"
+ ;;
+ --rpath_flags)
+ SS_STUFF_TO_ECHO="$SS_STUFF_TO_ECHO $SS_RPATH"
+ ;;
+ --qt_moc_path)
+ SS_STUFF_TO_ECHO="$SS_STUFF_TO_ECHO $SS_QT_MOC"
+ ;;
+ --cpp_flags)
+ SS_STUFF_TO_ECHO="$SS_STUFF_TO_ECHO $SS_CPPFLAGS"
+ ;;
+ --include_dirs)
+ SS_STUFF_TO_ECHO="$SS_STUFF_TO_ECHO $SS_INCDIRS"
+ ;;
+ --ld_flags)
+ SS_STUFF_TO_ECHO="$SS_STUFF_TO_ECHO $SS_LDFLAGS"
+ ;;
+ --lib_dirs)
+ SS_STUFF_TO_ECHO="$SS_STUFF_TO_ECHO $SS_LIBDIRS"
+ ;;
+ --libraries)
+ SS_STUFF_TO_ECHO="$SS_STUFF_TO_ECHO $SS_LIBLINK"
+ ;;
+ --plugin_dir)
+ SS_STUFF_TO_ECHO="$SS_STUFF_TO_ECHO $pluglibdir"
+ ;;
+ --modules_dir)
+ SS_STUFF_TO_ECHO="$SS_STUFF_TO_ECHO $pluglibdir"
+ ;;
+ --bin_dir)
+ SS_STUFF_TO_ECHO="$SS_STUFF_TO_ECHO $bindir"
+ ;;
+ --lib_dir)
+ SS_STUFF_TO_ECHO="$SS_STUFF_TO_ECHO $libdir"
+ ;;
+ --help_dir)
+ SS_STUFF_TO_ECHO="$SS_STUFF_TO_ECHO $helpdir"
+ ;;
+ --locale_dir)
+ SS_STUFF_TO_ECHO="$SS_STUFF_TO_ECHO $localedir"
+ ;;
+ --pics_dir)
+ SS_STUFF_TO_ECHO="$SS_STUFF_TO_ECHO $picsdir"
+ ;;
+ *)
+ print_syntax 1 1>&2
+ ;;
+ esac
+ shift
+done
+
+if test -n "$SS_STUFF_TO_ECHO"; then
+ echo $SS_STUFF_TO_ECHO
+fi
diff --git a/scripts/helpsearch/Makefile.am b/scripts/helpsearch/Makefile.am
new file mode 100644
index 00000000..45f812a6
--- /dev/null
+++ b/scripts/helpsearch/Makefile.am
@@ -0,0 +1,6 @@
+###############################################################################
+# KVirc Makefile 08.12.98 Szymon Stefanek
+###############################################################################
+bin_SCRIPTS = kvi_search_help
+
+EXTRA_DIST= $(bin_SCRIPTS)
diff --git a/scripts/helpsearch/kvi_search_help b/scripts/helpsearch/kvi_search_help
new file mode 100755
index 00000000..bf962f1c
--- /dev/null
+++ b/scripts/helpsearch/kvi_search_help
@@ -0,0 +1,123 @@
+#!/bin/sh
+
+# Arguments:
+# $1 = directory to search in
+# $2 = filename to produce
+# $3- = search string
+
+if test -z "$1"; then
+ echo "Search error : missing files to search"
+ exit -1
+fi
+
+if test -z "$2"; then
+ echo "Search error : missing target filename"
+ exit -1
+fi
+
+if test -z "$3"; then
+ echo "Search error : missing search string"
+ exit -1
+fi
+
+# Build the search criteria string...not so funky, but works
+
+SEARCH_CRITERIA="$3"
+SEARCH_WORDS="$3"
+
+if test -n "$4"; then
+ SEARCH_WORDS="$SEARCH_WORDS $4"
+ SEARCH_CRITERIA="$SEARCH_CRITERIA AND $4"
+fi
+if test -n "$5"; then
+ SEARCH_WORDS="$SEARCH_WORDS $5"
+ SEARCH_CRITERIA="$SEARCH_CRITERIA AND $5"
+fi
+if test -n "$6"; then
+ SEARCH_WORDS="$SEARCH_WORDS $6"
+ SEARCH_CRITERIA="$SEARCH_CRITERIA AND $6"
+fi
+if test -n "$7"; then
+ SEARCH_WORDS="$SEARCH_WORDS $7"
+ SEARCH_CRITERIA="$SEARCH_CRITERIA AND $7"
+fi
+if test -n "$8"; then
+ SEARCH_WORDS="$SEARCH_WORDS $8"
+ SEARCH_CRITERIA="$SEARCH_CRITERIA AND $8"
+fi
+if test -n "$9"; then
+ SEARCH_WORDS="$SEARCH_WORDS $9"
+ SEARCH_CRITERIA="$SEARCH_CRITERIA AND $9"
+fi
+
+
+DOCUMENT="<html>
+<head><title>Search results</title></head>
+<body bgcolor=\"#FFFFFF\" text=\"#000000\">
+KVirc documentation<br>
+<hr>
+<table bgcolor=\"#A0A0A0\" width=\"100%\">
+<tr>
+ <td><h1>Search results for \"$SEARCH_CRITERIA\"</h1></td>
+</tr>
+"
+
+FILES_TO_SEARCH=`find $1 -name "*.html"`
+
+if test -z "$FILES_TO_SEARCH"; then
+ DOCUMENT="$DOCUMENT <tr bgcolor=\"#F0F0F0\"></td><b>Internal error: no files to search</b></td></tr></table><hr><a href=\"index.html\">Main index</a></html>"
+ echo "$DOCUMENT" > $2
+ exit 0
+fi
+
+# Now grep the files
+SEARCH_RESULT=""
+for a_word in $SEARCH_WORDS; do
+ if test -z "$SEARCH_RESULT"; then
+ SEARCH_RESULT=`grep -i -l $a_word $FILES_TO_SEARCH`
+ else
+ SEARCH_RESULT=`grep -i -l $a_word $SEARCH_RESULT`
+ fi
+ if test -z "$SEARCH_RESULT"; then
+
+ DOCUMENT="$DOCUMENT <tr bgcolor=\"#F0F0F0\"><td><b>No matches found</b></td></tr></table><hr><a href=\"index.html\">Main index</a></html>"
+ echo "$DOCUMENT" > $2
+ exit 0
+ fi
+done
+
+DOCS_COUNT="0"
+
+for a_file in $SEARCH_RESULT; do
+
+ RESULT_DESCRIPTION="<b>["
+ for a_word in $SEARCH_WORDS; do
+ WORD_MATCHES=`grep -i -h -c $a_word "$a_file"`
+ RESULT_DESCRIPTION="$RESULT_DESCRIPTION $a_word:$WORD_MATCHES "
+ done
+ RESULT_DESCRIPTION="$RESULT_DESCRIPTION ]</b>"
+
+ DOC_TITLE=`grep -i -h "<title>" "$a_file" | sed -e 's/title/b/g'`
+ if test -z "$DOC_TITLE"; then
+ DOC_TITLE="<b>Untitled</b>"
+ fi
+ DOC_PREMATCH=`grep -i -h -A 30 "searchbody" "$a_file" | tac | tail -n 30 | tac`
+ DOC_MATCH=`echo "$DOC_PREMATCH" | sed -e 's/<[a-zA-Z0-9 _ \=\"\#\%\&\/\.]*>/ /g'`
+ DOC_MATCH=`echo "$DOC_MATCH" | sed -e 's/</\&lt/g'`
+ DOC_MATCH=`echo "$DOC_MATCH" | sed -e 's/>/\&gt/g'`
+ DOC_MATCH=`echo "$DOC_MATCH" | grep -h "[a-zA-Z0-9{}]"`
+ DOC_MATCH=`echo "$DOC_MATCH" | sed -e 's/^[ ]*//'`
+ DOC_MATCH=`echo "$DOC_MATCH" | tac | tail -n 10 | tac`
+ if test -z "$DOC_MATCH"; then
+ DOC_MATCH="No document body found"
+ fi
+
+ DOCS_COUNT=`expr $DOCS_COUNT + 1`
+
+ DOCUMENT="$DOCUMENT <tr bgcolor=\"#F0F0F0\"><td><a href=\"$a_file\"><b>$DOCS_COUNT</b>. $DOC_TITLE</a><br><br><I>...$DOC_MATCH...</I><br><br><b>$RESULT_DESCRIPTION</b></td></tr>"
+
+done
+
+DOCUMENT="$DOCUMENT</table><hr><br>Found $DOCS_COUNT matches</html>"
+
+echo "$DOCUMENT" > $2
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 00000000..a3f12af2
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,10 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+SUBDIRS = kvilib kvirc modules
+
+headers_HEADERS=kvi_configstatus.h
+
+kvi_configstatus.h: config.h
+ cp -f config.h kvi_configstatus.h
diff --git a/src/config.h.in b/src/config.h.in
new file mode 100644
index 00000000..e79ea040
--- /dev/null
+++ b/src/config.h.in
@@ -0,0 +1,247 @@
+/* src/config.h.in. Generated from configure.in by autoheader. */
+
+/* define this to the number of average channel users */
+#undef AVERAGE_CHANNEL_USERS
+
+/* define this if you are on a big endian machine */
+#undef BIG_ENDIAN_MACHINE_BYTE_ORDER
+
+/* this is the build date (configure date rather) */
+#undef BUILD_DATE
+
+/* these are the build flags */
+#undef BUILD_FLAGS
+
+/* define if you want to enable the Arts daemon support */
+#undef COMPILE_ARTS_SUPPORT
+
+/* define if you want to enable the Audiofile library support */
+#undef COMPILE_AUDIOFILE_SUPPORT
+
+/* define if you want to compile the crypt support */
+#undef COMPILE_CRYPT_SUPPORT
+
+/* define if you want to disable DCC VOICE sound support */
+#undef COMPILE_DISABLE_DCC_VOICE
+
+/* define if you want to enable the Esound daemon support */
+#undef COMPILE_ESD_SUPPORT
+
+/* define if you have the SIOCGIFADDR ioctl and the related headers */
+#undef COMPILE_GET_INTERFACE_ADDRESS
+
+/* define this if you want to ignore the SIGALARM signal */
+#undef COMPILE_IGNORE_SIGALARM
+
+/* define if you want the info tips to be compiled in */
+#undef COMPILE_INFO_TIPS
+
+/* define if you want the IpV6 support */
+#undef COMPILE_IPV6_SUPPORT
+
+/* define if you want to compile the KDE 3.x support */
+#undef COMPILE_KDE_SUPPORT
+
+/* define if you want the memory checks */
+#undef COMPILE_MEMORY_CHECKS
+
+/* define if you want the gcc memory profile */
+#undef COMPILE_MEMORY_PROFILE
+
+/* define if you want to enable the new KVS parser */
+#undef COMPILE_NEW_KVS
+
+/* define this if you want to disable the inter-process communication support
+ */
+#undef COMPILE_NO_IPC
+
+/* define if you want to ignore X Windows completely */
+#undef COMPILE_NO_X
+
+/* define if you want to disable the X bell support */
+#undef COMPILE_NO_X_BELL
+
+/* define if you want to use only the new KVS parser */
+#undef COMPILE_ONLY_NEW_KVS
+
+/* define if you want to enable OSS sound support */
+#undef COMPILE_OSS_SUPPORT
+
+/* define if you have perl and want the perl scripting support in kvirc */
+#undef COMPILE_PERL_SUPPORT
+
+/* define if you have the KDE support and want the pseudo transparency */
+#undef COMPILE_PSEUDO_TRANSPARENCY
+
+/* define if you have openssl and want the ssl support in kvirc */
+#undef COMPILE_SSL_SUPPORT
+
+/* define if you want to use the pthreads library */
+#undef COMPILE_THREADS_USE_POSIX
+
+/* define if you want to use the solaris libthread */
+#undef COMPILE_THREADS_USE_SOLARIS_LIBTHREAD
+
+/* define if your compiler supports gotos do dynamic labels */
+#undef COMPILE_USE_DYNAMIC_LABELS
+
+/* define if you have libgsm and want the GSM code to be compiled */
+#undef COMPILE_USE_GSM
+
+/* define if you want to compile the Qt 4.x support */
+#undef COMPILE_USE_QT4
+
+/* define if you trust your memmove() function */
+#undef COMPILE_WITH_SYSTEM_MEMMOVE
+
+/* define if you want to enable the ZLib library support */
+#undef COMPILE_XSS_SUPPORT
+
+/* define if you want to enable the ZLib library support */
+#undef COMPILE_ZLIB_SUPPORT
+
+/* define if you want the i386 asm code */
+#undef COMPILE_ix86_ASM
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the `getenv' function. */
+#undef HAVE_GETENV
+
+/* Define to 1 if you have the `getnameinfo' function. */
+#undef HAVE_GETNAMEINFO
+
+/* Define to 1 if you have the `gmtime_r' function. */
+#undef HAVE_GMTIME_R
+
+/* Define to 1 if you have the `inet_aton' function. */
+#undef HAVE_INET_ATON
+
+/* Define to 1 if you have the `inet_ntoa' function. */
+#undef HAVE_INET_NTOA
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the <linux/soundcard.h> header file. */
+#undef HAVE_LINUX_SOUNDCARD_H
+
+/* Define to 1 if you have the `localtime_r' function. */
+#undef HAVE_LOCALTIME_R
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `putenv' function. */
+#undef HAVE_PUTENV
+
+/* Define to 1 if you have the `setenv' function. */
+#undef HAVE_SETENV
+
+/* Define to 1 if you have the <soundcard.h> header file. */
+#undef HAVE_SOUNDCARD_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `strerror' function. */
+#undef HAVE_STRERROR
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/soundcard.h> header file. */
+#undef HAVE_SYS_SOUNDCARD_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the `unsetenv' function. */
+#undef HAVE_UNSETENV
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* The size of `int', as computed by sizeof. */
+#undef SIZEOF_INT
+
+/* The size of `long int', as computed by sizeof. */
+#undef SIZEOF_LONG_INT
+
+/* The size of `long long int', as computed by sizeof. */
+#undef SIZEOF_LONG_LONG_INT
+
+/* The size of `short int', as computed by sizeof. */
+#undef SIZEOF_SHORT_INT
+
+/* The size of `unsigned int', as computed by sizeof. */
+#undef SIZEOF_UNSIGNED_INT
+
+/* The size of `unsigned long int', as computed by sizeof. */
+#undef SIZEOF_UNSIGNED_LONG_INT
+
+/* The size of `unsigned long long int', as computed by sizeof. */
+#undef SIZEOF_UNSIGNED_LONG_LONG_INT
+
+/* The size of `unsigned short int', as computed by sizeof. */
+#undef SIZEOF_UNSIGNED_SHORT_INT
+
+/* The size of `void *', as computed by sizeof. */
+#undef SIZEOF_VOID_P
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
+
+/* MAJOR.MINOR part of version */
+#undef VERSION_BRANCH
+
+/* Define to 1 if the X Window System is missing or not being used. */
+#undef X_DISPLAY_MISSING
+
+/* Define to 1 if on AIX 3.
+ System headers sometimes define this.
+ We just want to avoid a redefinition error message. */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+ this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#undef _POSIX_SOURCE
diff --git a/src/kvi_configstatus.h b/src/kvi_configstatus.h
new file mode 100644
index 00000000..c776b26a
--- /dev/null
+++ b/src/kvi_configstatus.h
@@ -0,0 +1,248 @@
+/* src/config.h. Generated from config.h.in by configure. */
+/* src/config.h.in. Generated from configure.in by autoheader. */
+
+/* define this to the number of average channel users */
+#define AVERAGE_CHANNEL_USERS 101
+
+/* define this if you are on a big endian machine */
+/* #undef BIG_ENDIAN_MACHINE_BYTE_ORDER */
+
+/* this is the build date (configure date rather) */
+#define BUILD_DATE "Thu Mar 13 02:29:23 UTC 2008"
+
+/* these are the build flags */
+#define BUILD_FLAGS "x86_64-cfgikopsAGTZ"
+
+/* define if you want to enable the Arts daemon support */
+/* #undef COMPILE_ARTS_SUPPORT */
+
+/* define if you want to enable the Audiofile library support */
+#define COMPILE_AUDIOFILE_SUPPORT 1
+
+/* define if you want to compile the crypt support */
+#define COMPILE_CRYPT_SUPPORT 1
+
+/* define if you want to disable DCC VOICE sound support */
+/* #undef COMPILE_DISABLE_DCC_VOICE */
+
+/* define if you want to enable the Esound daemon support */
+/* #undef COMPILE_ESD_SUPPORT */
+
+/* define if you have the SIOCGIFADDR ioctl and the related headers */
+#define COMPILE_GET_INTERFACE_ADDRESS 1
+
+/* define this if you want to ignore the SIGALARM signal */
+/* #undef COMPILE_IGNORE_SIGALARM */
+
+/* define if you want the info tips to be compiled in */
+#define COMPILE_INFO_TIPS 1
+
+/* define if you want the IpV6 support */
+#define COMPILE_IPV6_SUPPORT 1
+
+/* define if you want to compile the KDE 3.x support */
+#define COMPILE_KDE_SUPPORT 1
+
+/* define if you want the memory checks */
+/* #undef COMPILE_MEMORY_CHECKS */
+
+/* define if you want the gcc memory profile */
+/* #undef COMPILE_MEMORY_PROFILE */
+
+/* define if you want to enable the new KVS parser */
+#define COMPILE_NEW_KVS 1
+
+/* define this if you want to disable the inter-process communication support
+ */
+/* #undef COMPILE_NO_IPC */
+
+/* define if you want to ignore X Windows completely */
+/* #undef COMPILE_NO_X */
+
+/* define if you want to disable the X bell support */
+/* #undef COMPILE_NO_X_BELL */
+
+/* define if you want to use only the new KVS parser */
+#define COMPILE_ONLY_NEW_KVS 1
+
+/* define if you want to enable OSS sound support */
+#define COMPILE_OSS_SUPPORT 1
+
+/* define if you have perl and want the perl scripting support in kvirc */
+#define COMPILE_PERL_SUPPORT 1
+
+/* define if you have the KDE support and want the pseudo transparency */
+#define COMPILE_PSEUDO_TRANSPARENCY 1
+
+/* define if you have openssl and want the ssl support in kvirc */
+#define COMPILE_SSL_SUPPORT 1
+
+/* define if you want to use the pthreads library */
+#define COMPILE_THREADS_USE_POSIX 1
+
+/* define if you want to use the solaris libthread */
+/* #undef COMPILE_THREADS_USE_SOLARIS_LIBTHREAD */
+
+/* define if your compiler supports gotos do dynamic labels */
+#define COMPILE_USE_DYNAMIC_LABELS 1
+
+/* define if you have libgsm and want the GSM code to be compiled */
+#define COMPILE_USE_GSM 1
+
+/* define if you want to compile the Qt 4.x support */
+/* #undef COMPILE_USE_QT4 */
+
+/* define if you trust your memmove() function */
+#define COMPILE_WITH_SYSTEM_MEMMOVE 1
+
+/* define if you want to enable the ZLib library support */
+#define COMPILE_XSS_SUPPORT 1
+
+/* define if you want to enable the ZLib library support */
+#define COMPILE_ZLIB_SUPPORT 1
+
+/* define if you want the i386 asm code */
+/* #undef COMPILE_ix86_ASM */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the `getenv' function. */
+#define HAVE_GETENV 1
+
+/* Define to 1 if you have the `getnameinfo' function. */
+#define HAVE_GETNAMEINFO 1
+
+/* Define to 1 if you have the `gmtime_r' function. */
+#define HAVE_GMTIME_R 1
+
+/* Define to 1 if you have the `inet_aton' function. */
+#define HAVE_INET_ATON 1
+
+/* Define to 1 if you have the `inet_ntoa' function. */
+#define HAVE_INET_NTOA 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the <linux/soundcard.h> header file. */
+#define HAVE_LINUX_SOUNDCARD_H 1
+
+/* Define to 1 if you have the `localtime_r' function. */
+#define HAVE_LOCALTIME_R 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `putenv' function. */
+#define HAVE_PUTENV 1
+
+/* Define to 1 if you have the `setenv' function. */
+#define HAVE_SETENV 1
+
+/* Define to 1 if you have the <soundcard.h> header file. */
+/* #undef HAVE_SOUNDCARD_H */
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/soundcard.h> header file. */
+#define HAVE_SYS_SOUNDCARD_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the `unsetenv' function. */
+#define HAVE_UNSETENV 1
+
+/* Name of package */
+#define PACKAGE "kvirc"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT ""
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME ""
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING ""
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION ""
+
+/* The size of `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of `long int', as computed by sizeof. */
+#define SIZEOF_LONG_INT 8
+
+/* The size of `long long int', as computed by sizeof. */
+#define SIZEOF_LONG_LONG_INT 8
+
+/* The size of `short int', as computed by sizeof. */
+#define SIZEOF_SHORT_INT 2
+
+/* The size of `unsigned int', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_INT 4
+
+/* The size of `unsigned long int', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_LONG_INT 8
+
+/* The size of `unsigned long long int', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_LONG_LONG_INT 8
+
+/* The size of `unsigned short int', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_SHORT_INT 2
+
+/* The size of `void *', as computed by sizeof. */
+#define SIZEOF_VOID_P 8
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Version number of package */
+#define VERSION "3.4.0"
+
+/* MAJOR.MINOR part of version */
+#define VERSION_BRANCH "3.4"
+
+/* Define to 1 if the X Window System is missing or not being used. */
+/* #undef X_DISPLAY_MISSING */
+
+/* Define to 1 if on AIX 3.
+ System headers sometimes define this.
+ We just want to avoid a redefinition error message. */
+#ifndef _ALL_SOURCE
+/* # undef _ALL_SOURCE */
+#endif
+
+/* Define to 1 if on MINIX. */
+/* #undef _MINIX */
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+ this defined. */
+/* #undef _POSIX_1_SOURCE */
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+/* #undef _POSIX_SOURCE */
diff --git a/src/kvilib/Makefile.am b/src/kvilib/Makefile.am
new file mode 100644
index 00000000..1268e5e0
--- /dev/null
+++ b/src/kvilib/Makefile.am
@@ -0,0 +1,5 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+SUBDIRS = build config core ext file include irc net system tal
diff --git a/src/kvilib/build/Makefile.am b/src/kvilib/build/Makefile.am
new file mode 100644
index 00000000..51e9333a
--- /dev/null
+++ b/src/kvilib/build/Makefile.am
@@ -0,0 +1,339 @@
+########################################################################################################################
+#
+# KVILIB Makefile : KVIrc utility library
+# Szymon Stefanek 21.09.2001
+#
+########################################################################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ $(SS_INCDIRS) $(SS_CPPFLAGS)
+
+lib_LTLIBRARIES = libkvilib.la
+libkvilib_la_LDFLAGS = $(SS_LDFLAGS) -version-info 3:0:0 $(SS_LIBDIRS)
+libkvilib_la_LIBADD = $(SS_LIBLINK)
+
+#
+# Command useful to find out all the sources
+# SRC=`find ../ -name *.cpp | sort`
+# echo $SRC
+#
+
+nodist_libkvilib_la_SOURCES = \
+ ../ext/moc_kvi_crypt.cpp \
+ ../ext/moc_kvi_garbage.cpp \
+ ../ext/moc_kvi_regusersdb.cpp \
+ ../ext/moc_kvi_sharedfiles.cpp \
+ ../irc/moc_kvi_ircuserdb.cpp \
+ ../net/moc_kvi_dns.cpp \
+ ../net/moc_kvi_http.cpp \
+ ../system/moc_kvi_locale.cpp \
+ ../system/moc_kvi_thread.cpp \
+ ../tal/moc_kvi_tal_wizard.cpp
+
+libkvilib_la_SOURCES = \
+ ../core/kvi_error.cpp \
+ ../core/kvi_heapobject.cpp \
+ ../core/kvi_malloc.cpp \
+ ../core/kvi_memmove.cpp \
+ ../core/kvi_qstring.cpp \
+ ../core/kvi_string.cpp \
+ ../core/kvi_stringarray.cpp \
+ ../ext/kvi_cmdformatter.cpp \
+ ../ext/kvi_config.cpp \
+ ../ext/kvi_crypt.cpp \
+ ../ext/kvi_databuffer.cpp \
+ ../ext/kvi_dcophelper.cpp \
+ ../ext/kvi_doublebuffer.cpp \
+ ../ext/kvi_garbage.cpp \
+ ../ext/kvi_osinfo.cpp \
+ ../ext/kvi_imagelib.cpp \
+ ../ext/kvi_md5.cpp \
+ ../ext/kvi_mediatype.cpp \
+ ../ext/kvi_miscutils.cpp \
+ ../ext/kvi_msgtype.cpp \
+ ../ext/kvi_parameterlist.cpp \
+ ../ext/kvi_pixmap.cpp \
+ ../ext/kvi_proxydb.cpp \
+ ../ext/kvi_regchan.cpp \
+ ../ext/kvi_regusersdb.cpp \
+ ../ext/kvi_sharedfiles.cpp \
+ ../ext/kvi_stringconversion.cpp \
+ ../file/kvi_file.cpp \
+ ../file/kvi_fileutils.cpp \
+ ../file/kvi_packagefile.cpp \
+ ../irc/kvi_avatar.cpp \
+ ../irc/kvi_avatarcache.cpp \
+ ../irc/kvi_ircmask.cpp \
+ ../irc/kvi_ircserver.cpp \
+ ../irc/kvi_ircserverdb.cpp \
+ ../irc/kvi_ircuserdb.cpp \
+ ../irc/kvi_mirccntrl.cpp \
+ ../irc/kvi_nickserv.cpp \
+ ../irc/kvi_useridentity.cpp \
+ ../net/kvi_dns.cpp \
+ ../net/kvi_http.cpp \
+ ../net/kvi_netutils.cpp \
+ ../net/kvi_socket.cpp \
+ ../net/kvi_ssl.cpp \
+ ../net/kvi_url.cpp \
+ ../system/kvi_env.cpp \
+ ../system/kvi_locale.cpp \
+ ../system/kvi_thread.cpp \
+ ../system/kvi_time.cpp \
+ ../tal/kvi_tal_application.cpp \
+ ../tal/kvi_tal_filedialog.cpp \
+ ../tal/kvi_tal_grid.cpp \
+ ../tal/kvi_tal_groupbox.cpp \
+ ../tal/kvi_tal_hbox.cpp \
+ ../tal/kvi_tal_iconview.cpp \
+ ../tal/kvi_tal_listbox.cpp \
+ ../tal/kvi_tal_listview.cpp \
+ ../tal/kvi_tal_mainwindow.cpp \
+ ../tal/kvi_tal_menubar.cpp \
+ ../tal/kvi_tal_popupmenu.cpp \
+ ../tal/kvi_tal_scrollview.cpp \
+ ../tal/kvi_tal_tabdialog.cpp \
+ ../tal/kvi_tal_textedit.cpp \
+ ../tal/kvi_tal_toolbar.cpp \
+ ../tal/kvi_tal_tooltip.cpp \
+ ../tal/kvi_tal_vbox.cpp \
+ ../tal/kvi_tal_widgetstack.cpp \
+ ../tal/kvi_tal_wizard.cpp
+
+#
+# Command useful to find out all the headers
+# rm -f ../include/*.h
+# SRC=`find ../ -name *.h | sort`
+# echo $SRC
+#
+
+
+headers_HEADERS = \
+ ../config/kvi_confignames.h \
+ ../config/kvi_debug.h \
+ ../config/kvi_defaults.h \
+ ../config/kvi_fileextensions.h \
+ ../config/kvi_settings.h \
+ ../config/kvi_sourcesdate.h \
+ ../config/kvi_wincfg.h \
+ ../core/kvi_bswap.h \
+ ../core/kvi_error.h \
+ ../core/kvi_heapobject.h \
+ ../core/kvi_inttypes.h \
+ ../core/kvi_malloc.h \
+ ../core/kvi_memmove.h \
+ ../core/kvi_pointerlist.h \
+ ../core/kvi_pointerhashtable.h \
+ ../core/kvi_qcstring.h \
+ ../core/kvi_qstring.h \
+ ../core/kvi_strasm.h \
+ ../core/kvi_string.h \
+ ../core/kvi_stringarray.h \
+ ../core/kvi_valuelist.h \
+ ../ext/kvi_accel.h \
+ ../ext/kvi_cmdformatter.h \
+ ../ext/kvi_config.h \
+ ../ext/kvi_crypt.h \
+ ../ext/kvi_databuffer.h \
+ ../ext/kvi_doublebuffer.h \
+ ../ext/kvi_draganddrop.h \
+ ../ext/kvi_osinfo.h \
+ ../ext/kvi_garbage.h \
+ ../ext/kvi_imagelib.h \
+ ../ext/kvi_md5.h \
+ ../ext/kvi_mediatype.h \
+ ../ext/kvi_miscutils.h \
+ ../ext/kvi_msgtype.h \
+ ../ext/kvi_parameterlist.h \
+ ../ext/kvi_pixmap.h \
+ ../ext/kvi_proxydb.h \
+ ../ext/kvi_regchan.h \
+ ../ext/kvi_regusersdb.h \
+ ../ext/kvi_sharedfiles.h \
+ ../ext/kvi_stringconversion.h \
+ ../ext/kvi_xlib.h \
+ ../file/kvi_file.h \
+ ../file/kvi_fileutils.h \
+ ../file/kvi_packagefile.h \
+ ../irc/kvi_avatar.h \
+ ../irc/kvi_avatarcache.h \
+ ../irc/kvi_ircmask.h \
+ ../irc/kvi_ircserverdb.h \
+ ../irc/kvi_ircserver.h \
+ ../irc/kvi_ircuserdb.h \
+ ../irc/kvi_mirccntrl.h \
+ ../irc/kvi_nickserv.h \
+ ../irc/kvi_useridentity.h \
+ ../net/kvi_dns.h \
+ ../net/kvi_http.h \
+ ../net/kvi_netutils.h \
+ ../net/kvi_socket.h \
+ ../net/kvi_sockettype.h \
+ ../net/kvi_ssl.h \
+ ../net/kvi_url.h \
+ ../system/kvi_env.h \
+ ../system/kvi_library.h \
+ ../system/kvi_locale.h \
+ ../system/kvi_process.h \
+ ../system/kvi_stdarg.h \
+ ../system/kvi_thread.h \
+ ../system/kvi_time.h \
+ ../tal/kvi_tal_application.h \
+ ../tal/kvi_tal_application_kde.h \
+ ../tal/kvi_tal_application_qt.h \
+ ../tal/kvi_tal_filedialog.h \
+ ../tal/kvi_tal_filedialog_kde.h \
+ ../tal/kvi_tal_filedialog_qt.h \
+ ../tal/kvi_tal_filedialog_qt4.h \
+ ../tal/kvi_tal_grid.h \
+ ../tal/kvi_tal_grid_qt3.h \
+ ../tal/kvi_tal_grid_qt4.h \
+ ../tal/kvi_tal_groupbox.h \
+ ../tal/kvi_tal_groupbox_qt3.h \
+ ../tal/kvi_tal_groupbox_qt4.h \
+ ../tal/kvi_tal_hbox.h \
+ ../tal/kvi_tal_hbox_qt3.h \
+ ../tal/kvi_tal_hbox_qt4.h \
+ ../tal/kvi_tal_iconview.h \
+ ../tal/kvi_tal_iconview_qt3.h \
+ ../tal/kvi_tal_iconview_qt4.h \
+ ../tal/kvi_tal_listbox.h \
+ ../tal/kvi_tal_listbox_qt3.h \
+ ../tal/kvi_tal_listbox_qt4.h \
+ ../tal/kvi_tal_listview.h \
+ ../tal/kvi_tal_listview_qt3.h \
+ ../tal/kvi_tal_listview_qt4.h \
+ ../tal/kvi_tal_mainwindow.h \
+ ../tal/kvi_tal_mainwindow_kde.h \
+ ../tal/kvi_tal_mainwindow_qt3.h \
+ ../tal/kvi_tal_mainwindow_qt4.h \
+ ../tal/kvi_tal_menubar.h \
+ ../tal/kvi_tal_menubar_kde.h \
+ ../tal/kvi_tal_menubar_qt.h \
+ ../tal/kvi_tal_popupmenu.h \
+ ../tal/kvi_tal_popupmenu_qt3.h \
+ ../tal/kvi_tal_popupmenu_qt4.h \
+ ../tal/kvi_tal_scrollview.h \
+ ../tal/kvi_tal_scrollview_qt3.h \
+ ../tal/kvi_tal_scrollview_qt4.h \
+ ../tal/kvi_tal_tabdialog.h \
+ ../tal/kvi_tal_tabdialog_qt3.h \
+ ../tal/kvi_tal_tabdialog_qt4.h \
+ ../tal/kvi_tal_textedit.h \
+ ../tal/kvi_tal_textedit_qt3.h \
+ ../tal/kvi_tal_textedit_qt4.h \
+ ../tal/kvi_tal_toolbar.h \
+ ../tal/kvi_tal_toolbar_kde.h \
+ ../tal/kvi_tal_toolbar_qt3.h \
+ ../tal/kvi_tal_toolbar_qt4.h \
+ ../tal/kvi_tal_toolbardocktype.h \
+ ../tal/kvi_tal_tooltip.h \
+ ../tal/kvi_tal_vbox.h \
+ ../tal/kvi_tal_vbox_qt3.h \
+ ../tal/kvi_tal_vbox_qt4.h \
+ ../tal/kvi_tal_widgetstack.h \
+ ../tal/kvi_tal_widgetstack_qt3.h \
+ ../tal/kvi_tal_widgetstack_qt4.h \
+ ../tal/kvi_tal_wizard.h \
+ ../tal/kvi_tal_windowstate.h
+
+
+../ext/moc_%.cpp: ../ext/%.h
+ $(SS_QT_MOC) $(SS_QT_MOC_FLAGS) $< -o $@
+
+../file/moc_%.cpp: ../file/%.h
+ $(SS_QT_MOC) $(SS_QT_MOC_FLAGS) $< -o $@
+
+../irc/moc_%.cpp: ../irc/%.h
+ $(SS_QT_MOC) $(SS_QT_MOC_FLAGS) $< -o $@
+
+../net/moc_%.cpp: ../net/%.h
+ $(SS_QT_MOC) $(SS_QT_MOC_FLAGS) $< -o $@
+
+../system/moc_%.cpp: ../system/%.h
+ $(SS_QT_MOC) $(SS_QT_MOC_FLAGS) $< -o $@
+
+../tal/moc_%.cpp: ../tal/%.h
+ $(SS_QT_MOC) $(SS_QT_MOC_FLAGS) $< -o $@
+
+
+%.moc: %.h
+ $(SS_QT_MOC) $(SS_QT_MOC_FLAGS) $< -o $@
+
+#%.h.gch: %.h
+# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c $< -o $@
+
+#PRECOMPILED_HDRS = \
+# ../config/kvi_confignames.h.gch \
+# ...
+
+#
+# Command useful to find the moc dependancies
+# grep "\.moc" ../*/*.cpp | sort | sed -e 's/[[:space:]]*#include//' | sed -e 's/\"//g'
+# needs to be modified by hand then to add the moc file path... :)
+#
+
+../tal/kvi_tal_application.cpp: ../tal/kvi_tal_application_kde.moc
+../tal/kvi_tal_application.cpp: ../tal/kvi_tal_application_qt.moc
+../tal/kvi_tal_mainwindow.cpp: ../tal/kvi_tal_mainwindow_kde.moc
+../tal/kvi_tal_mainwindow.cpp: ../tal/kvi_tal_mainwindow_qt3.moc
+../tal/kvi_tal_mainwindow.cpp: ../tal/kvi_tal_mainwindow_qt4.moc
+../tal/kvi_tal_menubar.cpp: ../tal/kvi_tal_menubar_kde.moc
+../tal/kvi_tal_menubar.cpp: ../tal/kvi_tal_menubar_qt.moc
+../tal/kvi_tal_filedialog.cpp: ../tal/kvi_tal_filedialog_kde.moc
+../tal/kvi_tal_filedialog.cpp: ../tal/kvi_tal_filedialog_qt.moc
+../tal/kvi_tal_filedialog.cpp: ../tal/kvi_tal_filedialog_qt4.moc
+../tal/kvi_tal_grid.cpp: ../tal/kvi_tal_grid_qt3.moc
+../tal/kvi_tal_grid.cpp: ../tal/kvi_tal_grid_qt4.moc
+../tal/kvi_tal_groupbox.cpp: ../tal/kvi_tal_groupbox_qt3.moc
+../tal/kvi_tal_groupbox.cpp: ../tal/kvi_tal_groupbox_qt4.moc
+../tal/kvi_tal_hbox.cpp: ../tal/kvi_tal_hbox_qt3.moc
+../tal/kvi_tal_hbox.cpp: ../tal/kvi_tal_hbox_qt4.moc
+../tal/kvi_tal_vbox.cpp: ../tal/kvi_tal_vbox_qt3.moc
+../tal/kvi_tal_vbox.cpp: ../tal/kvi_tal_vbox_qt4.moc
+../tal/kvi_tal_popupmenu.cpp: ../tal/kvi_tal_popupmenu_qt3.moc
+../tal/kvi_tal_popupmenu.cpp: ../tal/kvi_tal_popupmenu_qt4.moc
+../tal/kvi_tal_listview.cpp: ../tal/kvi_tal_listview_qt3.moc
+../tal/kvi_tal_listview.cpp: ../tal/kvi_tal_listview_qt4.moc
+../tal/kvi_tal_listbox.cpp: ../tal/kvi_tal_listbox_qt3.moc
+../tal/kvi_tal_listbox.cpp: ../tal/kvi_tal_listbox_qt4.moc
+../tal/kvi_tal_iconview.cpp: ../tal/kvi_tal_iconview_qt3.moc
+../tal/kvi_tal_iconview.cpp: ../tal/kvi_tal_iconview_qt4.moc
+../tal/kvi_tal_scrollview.cpp: ../tal/kvi_tal_scrollview_qt3.moc
+../tal/kvi_tal_scrollview.cpp: ../tal/kvi_tal_scrollview_qt4.moc
+../tal/kvi_tal_tabdialog.cpp: ../tal/kvi_tal_tabdialog_qt3.moc
+../tal/kvi_tal_tabdialog.cpp: ../tal/kvi_tal_tabdialog_qt4.moc
+../tal/kvi_tal_textedit.cpp: ../tal/kvi_tal_textedit_qt3.moc
+../tal/kvi_tal_textedit.cpp: ../tal/kvi_tal_textedit_qt4.moc
+../tal/kvi_tal_toolbar.cpp: ../tal/kvi_tal_toolbar_qt3.moc
+../tal/kvi_tal_toolbar.cpp: ../tal/kvi_tal_toolbar_qt4.moc
+../tal/kvi_tal_toolbar.cpp: ../tal/kvi_tal_toolbar_kde.moc
+../tal/kvi_tal_tooltip.cpp: ../tal/kvi_tal_tooltip.moc
+../tal/kvi_tal_widgetstack.cpp: ../tal/kvi_tal_widgetstack_qt3.moc
+../tal/kvi_tal_widgetstack.cpp: ../tal/kvi_tal_widgetstack_qt4.moc
+
+#
+# All the cpp files depend on the precompiled headers being up-to-date
+#
+
+#../*/*.cpp: symlinks $(PRECOMPILED_HDRS) gchsymlinks
+
+../*/*.cpp: symlinks
+
+#
+# Symlinks depend on all the header files: symlink is rebuilt whenewer an *.h file changes
+#
+
+symlinks: ../config/*.h ../core/*.h ../ext/*.h ../file/*.h ../irc/*.h ../net/*.h ../system/*.h ../tal/*.h
+ cd ../include; for i in kvi_*.h; do if [ ! -f $$i ]; then rm -f $$i; fi; done; for i in $(SS_TOPSRCDIR)/src/kvilib/*/kvi_*.h; do $(LN_S) $$i . >/dev/null 2>&1; echo "Created link to $$i"; done;
+ touch symlinks
+
+# gchsymlinks: ../config/*.h ../core/*.h ../ext/*.h ../file/*.h ../irc/*.h ../net/*.h ../system/*.h ../tal/*.h
+# cd ../include; for i in kvi_*.gch; do if [ ! -f $$i ]; then rm -f $$i; fi; done; for i in $(SS_TOPSRCDIR)/src/kvilib/*/kvi_*.h.gch; do $(LN_S) $$i . >/dev/null 2>&1; echo "Created link to $$i"; done;
+# touch gchsymlinks
+
+#
+# When cleaning...remove also the symlinks, gchsymlinks and gch headers
+#
+
+#CLEANFILES = ../include/*.h ../include/*.gch symlinks gchsymlinks ../*/*.moc ../*/moc_kvi_*.cpp ../*/*.gch
+CLEANFILES = ../include/*.h symlinks ../*/*.moc ../*/moc_kvi_*.cpp
diff --git a/src/kvilib/config/Makefile.am b/src/kvilib/config/Makefile.am
new file mode 100644
index 00000000..23078cbb
--- /dev/null
+++ b/src/kvilib/config/Makefile.am
@@ -0,0 +1,5 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+EXTRA_DIST = *.h
diff --git a/src/kvilib/config/kvi_confignames.h b/src/kvilib/config/kvi_confignames.h
new file mode 100644
index 00000000..ccff3399
--- /dev/null
+++ b/src/kvilib/config/kvi_confignames.h
@@ -0,0 +1,61 @@
+#ifndef _KVI_CONFIGNAMES_H_
+#define _KVI_CONFIGNAMES_H_
+
+//=============================================================================
+//
+// File : kvi_confignames.h
+// Creation date : Wed Oct 18 2000 14:16:22 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_fileextensions.h"
+
+//=============================================================================
+// This file contains the config file names used in KVIrc
+//
+// You can play a bit with these, but be aware that some (bad) scripts
+// may find themselves in trouble
+//=============================================================================
+
+#define KVI_CONFIGFILE_MAIN "main." KVI_FILEEXTENSION_CONFIG
+#define KVI_CONFIGFILE_WINPROPERTIES "winproperties." KVI_FILEEXTENSION_CONFIG
+#define KVI_CONFIGFILE_SERVERDB "serverdb." KVI_FILEEXTENSION_CONFIG
+#define KVI_CONFIGFILE_PROXYDB "proxydb." KVI_FILEEXTENSION_CONFIG
+#define KVI_CONFIGFILE_EVENTS "events." KVI_FILEEXTENSION_CONFIG
+#define KVI_CONFIGFILE_RAWEVENTS "rawevents." KVI_FILEEXTENSION_CONFIG
+#define KVI_CONFIGFILE_POPUPS "popups." KVI_FILEEXTENSION_CONFIG
+#define KVI_CONFIGFILE_SCRIPTTOOLBARS "toolbars." KVI_FILEEXTENSION_CONFIG
+#define KVI_CONFIGFILE_CUSTOMTOOLBARS "customtoolbars." KVI_FILEEXTENSION_CONFIG
+#define KVI_CONFIGFILE_MEDIATYPES "mediatypes." KVI_FILEEXTENSION_CONFIG
+#define KVI_CONFIGFILE_REGUSERDB "reguserdb." KVI_FILEEXTENSION_CONFIG
+#define KVI_CONFIGFILE_SHAREDFILES "sharedfiles." KVI_FILEEXTENSION_CONFIG
+#define KVI_CONFIGFILE_RECENT "recent." KVI_FILEEXTENSION_CONFIG
+#define KVI_CONFIGFILE_TOOLBARS "toolbarpos." KVI_FILEEXTENSION_CONFIG
+#define KVI_CONFIGFILE_ALIASES "aliases." KVI_FILEEXTENSION_CONFIG
+#define KVI_CONFIGFILE_NICKSERVDATABASE "nickserv." KVI_FILEEXTENSION_CONFIG
+#define KVI_CONFIGFILE_TEXTICONS "texticons." KVI_FILEEXTENSION_CONFIG
+#define KVI_CONFIGFILE_REGCHANDB "regchan." KVI_FILEEXTENSION_CONFIG
+#define KVI_CONFIGFILE_INPUTHISTORY "inputhistory." KVI_FILEEXTENSION_CONFIG
+#define KVI_CONFIGFILE_AVATARCACHE "avatarcache." KVI_FILEEXTENSION_CONFIG
+#define KVI_CONFIGFILE_USERACTIONS "useractions." KVI_FILEEXTENSION_CONFIG
+#define KVI_CONFIGFILE_SCRIPTADDONS "scriptaddons." KVI_FILEEXTENSION_CONFIG
+#define KVI_CONFIGFILE_IDENTITIES "identities." KVI_FILEEXTENSION_CONFIG
+
+#endif //_KVI_CONFIGNAMES_H_
diff --git a/src/kvilib/config/kvi_debug.h b/src/kvilib/config/kvi_debug.h
new file mode 100644
index 00000000..8ae1a120
--- /dev/null
+++ b/src/kvilib/config/kvi_debug.h
@@ -0,0 +1,52 @@
+#ifndef _KVI_DEBUG_H_
+#define _KVI_DEBUG_H_
+
+//=============================================================================
+//
+// File : kvi_debug.h
+// Creation date : Fri Mar 19 1999 03:10:39 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include <qglobal.h>
+
+//=============================================================================
+// This file contains the definition of the debug macros
+// You can enable ALL the debugging output by uncommenting the next line
+//
+// #define _KVI_DEBUG_CHECK_RANGE_
+//
+//=============================================================================
+
+#ifdef _KVI_DEBUG_CHECK_RANGE_
+ #define __range_valid(_expr) if(!(_expr))debug("[kvirc]: ASSERT FAILED: \"%s\" is false in %s (%d)",#_expr,__FILE__,__LINE__)
+ #define __range_invalid(_expr) if(_expr)debug("[kvirc]: ASSERT FAILED: \"%s\" is true in %s (%d)",#_expr,__FILE__,__LINE__)
+#else
+ #define __range_valid(_expr)
+ #define __range_invalid(_expr)
+#endif
+
+#if defined(_KVI_DEBUG_) || defined(__KVI_DEBUG__)
+ #define __ASSERT(_expr) if(!(_expr))debug("[kvirc]: ASSERT FAILED: \"%s\" is false in %s (%d)",#_expr,__FILE__,__LINE__)
+#else
+ #define __ASSERT(_expr)
+#endif
+
+#endif //_KVI_DEBUG_H_
diff --git a/src/kvilib/config/kvi_defaults.h b/src/kvilib/config/kvi_defaults.h
new file mode 100644
index 00000000..fc375b05
--- /dev/null
+++ b/src/kvilib/config/kvi_defaults.h
@@ -0,0 +1,65 @@
+#ifndef _KVI_DEFAULTS_H_
+#define _KVI_DEFAULTS_H_
+
+//=============================================================================
+//
+// File : kvi_defaults.h
+// Creation date : Wed Jun 21 2000 13:23:13 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+//=============================================================================
+// This file contains (more or less) freely customizable compile time defaults
+//
+// You can safely play with the ones you understand the meaning of
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_ON_WINDOWS
+ #define KVI_HOME_CONFIG_FILE_NAME "kvirc.ini"
+#else
+ #define KVI_HOME_CONFIG_FILE_NAME ".kvirc.rc"
+#endif
+
+
+#define KVI_DEFAULT_INCOMING_SUBDIRECTORY_NAME "download"
+
+#define KVI_DEFAULT_NICKNAME1 "newbie"
+#define KVI_DEFAULT_NICKNAME2 "[newbie]"
+#define KVI_DEFAULT_NICKNAME3 "_newbie_"
+#define KVI_DEFAULT_NICKNAME4 "newbie4"
+#define KVI_DEFAULT_USERNAME "kvirc"
+#define KVI_DEFAULT_REALNAME "KVIrc " VERSION " '" KVI_RELEASE_NAME "' http://kvirc.net/"
+
+#define KVI_DEFAULT_PART_MESSAGE "No matter how dark the night, somehow the Sun rises once again"
+#define KVI_DEFAULT_QUIT_MESSAGE "KVIrc $version $version(r) http://www.kvirc.net/"
+#define KVI_DEFAULT_CTCP_USERINFO_REPLY "I'm too lazy to edit this field."
+#define KVI_DEFAULT_CTCP_PAGE_REPLY "Your message has been received and logged"
+#define KVI_DEFAULT_AWAY_MESSAGE "I'm off to see the wizard."
+#define KVI_DEFAULT_AWAY_NICK "%nick%|NotHere"
+
+#define KVI_MAX_PENDING_AVATARS 20
+#define KVI_MAX_RECENT_SERVERS 10
+#define KVI_MAX_RECENT_CHANNELS 30
+#define KVI_MAX_RECENT_NICKNAMES 10
+#define KVI_RECENT_TOPIC_ENTRIES 20
+
+#endif //_KVI_DEFAULTS_H_
diff --git a/src/kvilib/config/kvi_fileextensions.h b/src/kvilib/config/kvi_fileextensions.h
new file mode 100644
index 00000000..e181c974
--- /dev/null
+++ b/src/kvilib/config/kvi_fileextensions.h
@@ -0,0 +1,37 @@
+#ifndef _KVI_FILEEXTENSIONS_H_
+#define _KVI_FILEEXTENSIONS_H_
+
+//=============================================================================
+//
+// File : kvi_fileextensions.h
+// Creation date : Tue Dec 26 2006 05:09:22 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+//=============================================================================
+// This file contains the file extensions used by KVIrc
+//=============================================================================
+
+#define KVI_FILEEXTENSION_CONFIG "kvc"
+#define KVI_FILEEXTENSION_SCRIPT "kvs"
+#define KVI_FILEEXTENSION_THEMEPACKAGE "kvt"
+#define KVI_FILEEXTENSION_ADDONPACKAGE "kva"
+
+#endif //_KVI_FILEEXTENSIONS_H_
diff --git a/src/kvilib/config/kvi_settings.h b/src/kvilib/config/kvi_settings.h
new file mode 100644
index 00000000..ee6044bd
--- /dev/null
+++ b/src/kvilib/config/kvi_settings.h
@@ -0,0 +1,140 @@
+#ifndef _KVI_SETTINGS_H_
+#define _KVI_SETTINGS_H_
+
+//=============================================================================
+//
+// File : kvi_settings.h
+// Creation date : Fri Mar 19 1999 05:21:13 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+//=============================================================================
+// This file contains compile time settings, either set by configure or
+// non-customizable defaults
+//
+// Better do not touch this
+//=============================================================================
+
+#include <qglobal.h>
+
+#if defined(_OS_WIN32_) || defined(Q_OS_WIN32) || defined(Q_OS_WIN32_)
+
+ #define FEEL_LIKE_I_AM_COMPILING_UNDER_WINDOZE
+ #define COMPILE_ON_WINDOWS
+
+ // Windows has no config.h
+
+ #include "kvi_wincfg.h"
+
+ #ifdef __KVILIB__
+ #define KVILIB_API __declspec(dllexport)
+ #else
+ #define KVILIB_API __declspec(dllimport)
+ #endif
+
+ #ifdef __KVIRC__
+ #define KVIRC_API __declspec(dllexport)
+ #else
+ #define KVIRC_API __declspec(dllimport)
+ #endif
+
+#else
+
+ #ifdef KVIRC_EXTERNAL_MODULE
+ // when compiling an external module
+ // include the last configuration
+ #include "kvi_configstatus.h"
+ #else
+ #ifdef HAVE_CONFIG_H
+ #include "config.h"
+ #else
+ #error "You're missing the config.h file: you must run configure before running make!"
+ #endif
+ #endif
+
+ #define KVILIB_API
+ #define KVIRC_API
+
+ #ifndef VERSION
+ #define VERSION "?.?.?"
+ #endif
+
+ #ifndef BUILD_DATE
+ #define BUILD_DATE "?"
+ #endif
+
+ #ifndef BUILD_FLAGS
+ #define BUILD_FLAGS "?"
+ #endif
+
+#endif
+
+#define KVI_VERSION VERSION
+#define KVI_VERSION_BRANCH VERSION_BRANCH
+#define KVI_BUILD_DATE BUILD_DATE
+#define KVI_BUILD_FLAGS BUILD_FLAGS
+
+#define KVI_RELEASE_NAME "Virgo"
+
+// We want _GNU_SOURCE features
+#ifndef _GNU_SOURCE
+ #define _GNU_SOURCE
+#endif
+
+
+#if defined(__GNUC__)
+ // gcc
+ #if __GNUC__ >= 3
+ #define KVI_PTR2MEMBER(__x) &__x
+ #else
+ #define KVI_PTR2MEMBER(__x) &(__x)
+ #endif
+#elif defined(COMPILE_ON_WINDOWS)
+ // Visual C++
+ #define KVI_PTR2MEMBER(__x) &__x
+#elif defined(__SUNPRO_CC)
+ // Sun Forte
+ #define KVI_PTR2MEMBER(__x) (__x)
+#else
+ // default
+ #define KVI_PTR2MEMBER(__x) &(__x)
+#endif
+
+#ifdef COMPILE_NO_X
+ #ifndef COMPILE_NO_X_BELL
+ #define COMPILE_NO_X_BELL
+ #endif
+#endif
+
+/*
+#if __GNUC__ - 0 > 3 || (__GNUC__ - 0 == 3 && __GNUC_MINOR__ - 0 >= 2)
+ #define KVI_DEPRECATED __attribute__ ((deprecated))
+#else
+ #define KVI_DEPRECATED
+#endif
+*/
+#define KVI_DEPRECATED
+
+#ifdef COMPILE_USE_QT4
+ #define debug qDebug
+#endif
+
+
+#endif //_KVI_SETTINGS_H_
diff --git a/src/kvilib/config/kvi_sourcesdate.h b/src/kvilib/config/kvi_sourcesdate.h
new file mode 100644
index 00000000..263fc092
--- /dev/null
+++ b/src/kvilib/config/kvi_sourcesdate.h
@@ -0,0 +1,40 @@
+
+#ifndef _KVI_SOURCESDATE_H_
+#define _KVI_SOURCESDATE_H_
+
+//=============================================================================
+//
+// File : kvi_sourcesdate.h
+// Creation date : Sun Mar 5 2006 23:22:22 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#define KVI_SOURCES_DATE "20080323"
+#define KVI_SOURCES_DATE_NUMERIC 0x20080323
+
+// this is the date of the sources before that we should force a setup
+// this is usually changed only when a setup is really needed because
+// of an incompatible change in the configuration files
+// .. so do NOT change it just when you change KVI_SOURCES_DATE_NUMERIC :)
+#define KVI_SOURCES_DATE_NUMERIC_FORCE_SETUP 0x20080101
+
+#endif //!_KVI_SOURCESDATE_H_
diff --git a/src/kvilib/config/kvi_version.h b/src/kvilib/config/kvi_version.h
new file mode 100644
index 00000000..e09dacef
--- /dev/null
+++ b/src/kvilib/config/kvi_version.h
@@ -0,0 +1,33 @@
+#ifndef _KVI_VERSION_H_
+#define _KVI_VERSION_H_
+
+//=============================================================================
+//
+// File : kvi_version.h
+// Creation date : Sun Mar 5 2006 23:22:22 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+
+
+#endif //!_KVI_VERSION_H_
+
diff --git a/src/kvilib/config/kvi_wincfg.h b/src/kvilib/config/kvi_wincfg.h
new file mode 100644
index 00000000..f90998a8
--- /dev/null
+++ b/src/kvilib/config/kvi_wincfg.h
@@ -0,0 +1,210 @@
+#ifndef _KVI_WINCFG_H_
+#define _KVI_WINCFG_H_
+
+//=============================================================================
+//
+// File : kvi_wincfg.h
+// Creation date : Fri Sep 21 16:21:09 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+//=============================================================================
+// Windows configuration: do not touch
+//=============================================================================
+
+/* define if you want to compile with new parser */
+#define COMPILE_NEW_KVS 1
+
+/* define if you want to use the Qt 4.x support */
+/* #undef COMPILE_USE_QT4 */
+
+#define COMPILE_USE_QT4
+
+/* define if you want to use only the new KVS parser */
+#define COMPILE_ONLY_NEW_KVS 1
+
+/* define if you want to disable DCC VOICE sound support */
+/* #undef COMPILE_WITH_NO_SOUND */
+
+/* define if you have libgsm and want the GSM code to be compiled */
+/* #undef COMPILE_USE_GSM */
+
+/* define if you want the info tips to be compiled in */
+#define COMPILE_INFO_TIPS 1
+
+/* define if you want to compile the KDE 2.x support */
+/* #undef COMPILE_KDE_SUPPORT */
+
+/* define if you want the gcc memory profile */
+/* #undef COMPILE_MEMORY_PROFILE */
+
+/* define if you want the memory checks */
+/* #undef COMPILE_MEMORY_CHECKS */
+
+/* define if you trust your memmove() function */
+#define COMPILE_WITH_SYSTEM_MEMMOVE 1
+
+/* define if you want to compile the crypt support */
+#define COMPILE_CRYPT_SUPPORT 1
+
+/* define if you want the i386 asm code */
+/* #undef COMPILE_ix86_ASM */
+
+/* define if your compiler supports gotos do dynamic labels */
+/* #undef COMPILE_USE_DYNAMIC_LABELS */
+
+/* define if you want to compile the localization support */
+#define COMPILE_LOCALE_STUFF 1
+
+/* define if you want the IpV6 support */
+#define COMPILE_IPV6_SUPPORT 1
+
+/* define if you want zlib support */
+#define COMPILE_ZLIB_SUPPORT 1
+
+/* define if you want to use the pthreads library */
+/* #undef COMPILE_THREADS_USE_POSIX */
+
+/* define if you want to use the solaris libthread */
+/* #undef COMPILE_THREADS_USE_SOLARIS_LIBTHREAD */
+
+#define COMPILE_PSEUDO_TRANSPARENCY
+
+/* define if you have the SIOCGIFADDR ioctl and the related headers */
+/* #undef COMPILE_GET_INTERFACE_ADDRESS */
+
+/* this is the build date (configure date rather) */
+#define BUILD_DATE __DATE__" "__TIME__
+
+/* these are the build flags */
+#define BUILD_FLAGS "win32"
+
+/* define if you have strings.h */
+/* #undef HAVE_STRINGS_H */
+
+/* define if you have the getenv function */
+/* #undef HAVE_GETENV */
+
+/* define if you have the strerror function */
+#define HAVE_STRERROR 1
+
+/* define if you have the inet_aton function */
+/* #define HAVE_INET_ATON 1 */
+
+/* define if you have the inet_ntoa function */
+/* #define HAVE_INET_NTOA 1 */
+
+/* define if you have the inet_pton function */
+/* #undef HAVE_INET_PTON */
+
+/* define if you have the inet_ntop function */
+/* #undef HAVE_INET_NTOP */
+
+/* define if you have the getnameinfo function */
+#define HAVE_GETNAMEINFO
+
+/* define if you have the getaddrinfo function */
+#define HAVE_GETADDRINFO
+
+/* define this to the number of average channel users */
+#define AVERAGE_CHANNEL_USERS 101
+
+/* define this if you want to ignore the SIGALARM signal */
+/* #undef COMPILE_IGNORE_SIGALARM */
+
+/* define this if you are on a big endian machine */
+/* #undef BIG_ENDIAN_MACHINE_BYTE_ORDER */
+
+/* define this if you want to use the unicode-local 8bit charset translation */
+/* #undef COMPILE_USE_LOCAL_8BIT */
+
+/* define this if you want to disable the inter-process communication support */
+/* #undef COMPILE_NO_IPC */
+
+/* Define if you have the `getenv' function. */
+/* #undef HAVE_GETENV */
+
+/* Define if you have the <linux/soundcard.h> header file. */
+/* #undef HAVE_LINUX_SOUNDCARD_H */
+
+/* Define if you have the <soundcard.h> header file. */
+/* #undef HAVE_SOUNDCARD_H */
+
+/* Define if you have the <sys/soundcard.h> header file. */
+/* #undef HAVE_SYS_SOUNDCARD_H */
+
+/* Name of package */
+#define PACKAGE "kvirc"
+
+/* Version number of package */
+#define VERSION "3.4.0"
+
+#define VERSION_BRANCH "3.4"
+
+
+/* Define if the system does not provide POSIX.1 features except with this
+ defined. */
+/* #undef _POSIX_1_SOURCE */
+
+/* Define if you need to in order for `stat' and other things to work. */
+/* #undef _POSIX_SOURCE */
+
+// for now we need this....dcc voice is not ported yet
+#define COMPILE_WITH_NO_SOUND
+
+#define COMPILE_DISABLE_DCC_VOICE
+
+/* No X support */
+#define COMPILE_NO_X
+
+/* No X bell! */
+#define COMPILE_NO_X_BELL
+
+/* define if you have openssl and want the ssl support in kvirc */
+#define COMPILE_SSL_SUPPORT
+
+/* define if you want perl scripting support */
+#define COMPILE_PERL_SUPPORT
+
+/* The size of a `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of a `long int', as computed by sizeof. */
+#define SIZEOF_LONG_INT 4
+
+/* The size of a `long long int', as computed by sizeof. */
+#define SIZEOF_LONG_LONG_INT 8
+
+/* The size of a `short int', as computed by sizeof. */
+#define SIZEOF_SHORT_INT 2
+
+/* The size of a `unsigned int', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_INT 4
+
+/* The size of a `unsigned long int', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_LONG_INT 4
+
+/* The size of a `unsigned long long int', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_LONG_LONG_INT 8
+
+/* The size of a `unsigned short int', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_SHORT_INT 2
+
+#endif //_KVI_WINCFG_H_
diff --git a/src/kvilib/core/Makefile.am b/src/kvilib/core/Makefile.am
new file mode 100644
index 00000000..c84487eb
--- /dev/null
+++ b/src/kvilib/core/Makefile.am
@@ -0,0 +1,5 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+EXTRA_DIST = *.cpp *.h
diff --git a/src/kvilib/core/kvi_bswap.h b/src/kvilib/core/kvi_bswap.h
new file mode 100644
index 00000000..5d5ef5bb
--- /dev/null
+++ b/src/kvilib/core/kvi_bswap.h
@@ -0,0 +1,63 @@
+#ifndef _KVI_BSWAP_H_
+#define _KVI_BSWAP_H_
+
+//=============================================================================
+//
+// File : kvi_bswap.h
+// Creation date : Fri Mar 19 1999 03:15:21 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_inttypes.h"
+
+
+// KVILIB_API has been removed from therse two functions
+// these should always go inlined
+
+inline kvi_u64_t kvi_swap64(kvi_u64_t i)
+{
+ // abcdefgh to hgfedcba
+ return ((i << 56) | /* h to a */
+ ((i & 0xff00) << 40) | /* g to b */
+ ((i & 0xff0000) << 24) | /* f to c */
+ ((i & 0xff000000) << 8) | /* e to d */
+ ((i >> 8) & 0xff000000) | /* d to e */
+ ((i >> 24) & 0xff0000) | /* c to f */
+ ((i >> 40) & 0xff00) | /* b to g */
+ (i >> 56)); /* a to h */
+}
+
+inline kvi_u32_t kvi_swap32(kvi_u32_t i)
+{
+ // abcd to dcba
+ return ((i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24));
+}
+
+inline kvi_u16_t kvi_swap16(kvi_u16_t i)
+{
+ // ab to ba
+ return ((i << 8) | (i >> 8));
+}
+
+
+
+
+#endif // !_KVI_BSWAP_H_
diff --git a/src/kvilib/core/kvi_error.cpp b/src/kvilib/core/kvi_error.cpp
new file mode 100644
index 00000000..6497c757
--- /dev/null
+++ b/src/kvilib/core/kvi_error.cpp
@@ -0,0 +1,237 @@
+//=============================================================================
+//
+// File : kvi_error.cpp
+// Creation date : Sun Jul 02 2000 18:37:02 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+#define _KVI_ERROR_CPP_
+
+#include "kvi_locale.h"
+#include "kvi_error.h"
+#include "kvi_settings.h"
+
+
+#ifdef COMPILE_ON_WINDOWS
+#include <winsock2.h> // for the WSAE* error codes
+#endif
+
+#include <errno.h>
+
+#ifdef HAVE_STRERROR
+#include <string.h> // for strerror()
+#endif
+
+// FIXME: This stuff should basically die and be eventually replaced with some
+// helper functions for handling ONLY system errors.
+//
+// WARNING: getDescription() is not even thread safe... it will die in the near future
+
+const char * g_errorTable[KVI_NUM_ERRORS]=
+{
+ __tr_no_lookup("Success"), // 000: success
+ __tr_no_lookup("Unknown error"), // 001: unkonwnError
+ __tr_no_lookup("Internal error"), // 002: internalError
+ __tr_no_lookup("Unknown command"), // 003: unknownCommand
+ __tr_no_lookup("Missing closing brace"), // 004: missingClosingBrace
+ __tr_no_lookup("Unexpected end of command in string"), // 005: unexpectedEndInString
+ __tr_no_lookup("Unexpected end of command in dictionary key"), // 006: unexpectedEndInDictionaryKey
+ __tr_no_lookup("Switch dash without switch letter"), // 007: switchDashWithoutSwitchLetter
+ __tr_no_lookup("Unknown function"), // 008: unknownFunction
+ __tr_no_lookup("Unexpected end of command in parenthesis"), // 009: unexpectedEndInParenthesis
+ __tr_no_lookup("Unexpected end of command in function parameters"), // 010: unexpectedEndInFunctionParams
+ __tr_no_lookup("Missing variable name"), // 011: missingVariableName
+ __tr_no_lookup("Variable or identifier expected"), // 012: variableOrIdentifierExpected
+ __tr_no_lookup("Left operand is not a number"), // 013: leftOperandIsNotANumber
+ __tr_no_lookup("Multiple operations not supported for numeric operators"), // 014: multipleOpsNotSupportedForOperator
+ __tr_no_lookup("Division by zero"), // 015: divisionByZero
+ __tr_no_lookup("Modulo by zero"), // 016: moduloByZero
+ __tr_no_lookup("Right operand is not a number"), // 017: rightOperandIsNotANumber
+ __tr_no_lookup("Unterminated expression (missing ')' ?)"), // 018: unterminatedExpression
+ __tr_no_lookup("Unterminated subexpression (Parenthesis mismatch)"), // 019: unterminatedSubexpression
+ __tr_no_lookup("Unexpected character"), // 020: unexpectedCharacter
+ __tr_no_lookup("Unknown operator"), // 021: unknownOperator
+ __tr_no_lookup("No host to resolve"), // 022
+ __tr_no_lookup("(DNS Internal) Unsupported address family"), // 023
+ __tr_no_lookup("Valid name but the host has no IP address"), // 024
+ __tr_no_lookup("Unrecoverable nameserver error (crashed ?)"), // 025
+ __tr_no_lookup("Dns temporaneous fault (try again)"), // 026
+ __tr_no_lookup("(DNS Internal) Bad flags"), // 027
+ __tr_no_lookup("(DNS Internal) Out of memory"), // 028
+ __tr_no_lookup("(DNS Internal) Service not supported"), // 029
+ __tr_no_lookup("Unknown node (host not found)"), // 030
+ __tr_no_lookup("(DNS Internal) Unsupported socket type"), // 031
+ __tr_no_lookup("Dns query failed"), // 032
+ __tr_no_lookup("This KVIrc executable has no IPV6 support"), // 033
+ __tr_no_lookup("Host not found"), // 034
+ __tr_no_lookup("(DNS Internal) IPC failure (slave data corrupted)"), // 035
+ __tr_no_lookup("Another connection in progress"), // 036
+ __tr_no_lookup("Invalid IP address"), // 037
+ __tr_no_lookup("Socket creation failed"), // 038
+ __tr_no_lookup("Failed to put the socket in non blocking mode"), // 039
+ __tr_no_lookup("Bad file descriptor"), // 040
+ __tr_no_lookup("Out of address space"), // 041
+ __tr_no_lookup("Connection refused"), // 042
+ __tr_no_lookup("Kernel networking panic"), // 043
+ __tr_no_lookup("Connection timed out"), // 044
+ __tr_no_lookup("Network is unreachable"), // 045
+ __tr_no_lookup("Broken pipe"), // 046
+ __tr_no_lookup("Invalid proxy address"), // 047
+ __tr_no_lookup("Remote end has closed the connection"), // 048
+ __tr_no_lookup("Invalid irc context id"), // 049
+ __tr_no_lookup("Error in loading module"), // 050
+ __tr_no_lookup("No such module command"), // 051
+ __tr_no_lookup("No such module function"), // 052
+ __tr_no_lookup("Left operand is not a dictionary reference"), // 053
+ __tr_no_lookup("Right operand is not a dictionary reference"), // 054
+ __tr_no_lookup("Missing object class name"), // 055
+ __tr_no_lookup("No such object class"), // 056
+ __tr_no_lookup("No such object"), // 057
+ __tr_no_lookup("No such object function"), // 058
+ __tr_no_lookup("Invalid left operand"), // 059
+ __tr_no_lookup("Not enough parameters"), // 060
+ __tr_no_lookup("Integer parameter expected"), // 061
+ __tr_no_lookup("Invalid parameter"), // 062
+ __tr_no_lookup("No such file"), // 063
+ __tr_no_lookup("Open parenthesis expected"), // 064
+ __tr_no_lookup("Open brace expected"), // 065
+ __tr_no_lookup("Can't kill a builtin class"), // 066
+ __tr_no_lookup("The SOCKSV4 protocol lacks IpV6 support"), // 067
+ __tr_no_lookup("Unrecognized proxy reply"), // 068
+ __tr_no_lookup("Proxy response: auth failed: access denied"),
+ __tr_no_lookup("Proxy response: No acceptable auth method: request rejected"),
+ __tr_no_lookup("Proxy response: request failed"),
+ __tr_no_lookup("Proxy response: ident failed"),
+ __tr_no_lookup("Proxy response: ident not matching"),
+ __tr_no_lookup("Proxy response: general SOCKS failure"),
+ __tr_no_lookup("Proxy response: connection not allowed"),
+ __tr_no_lookup("Proxy response: network unreachable"),
+ __tr_no_lookup("Proxy response: host unreachable"),
+ __tr_no_lookup("Proxy response: connection refused"),
+ __tr_no_lookup("Proxy response: TTL expired"),
+ __tr_no_lookup("Proxy response: command not supported"),
+ __tr_no_lookup("Proxy response: address type not supported"),
+ __tr_no_lookup("Proxy response: invalid address"),
+ __tr_no_lookup("Invalid port number"),
+ __tr_no_lookup("Socket not connected"),
+ __tr_no_lookup("Insufficient resources to complete the operation"),
+ __tr_no_lookup("Can't setup a listening socket : bind failed"),
+ __tr_no_lookup("Can't resolve the localhost name"),
+ __tr_no_lookup("Unsupported image format"),
+ __tr_no_lookup("Can't open file for appending"),
+ __tr_no_lookup("Can't open file for writing"),
+ __tr_no_lookup("File I/O error"),
+ __tr_no_lookup("Acknowledge error"),
+ __tr_no_lookup("Can't open file for reading"),
+ __tr_no_lookup("Can't send a zero-size file"),
+ __tr_no_lookup("Missing popup name"),
+ __tr_no_lookup("'item', 'popup', 'label' or 'separator' keyword expected"),
+ __tr_no_lookup("Self modification not allowed"),
+ __tr_no_lookup("UNUSED"),
+ __tr_no_lookup("Feature not available"),
+ __tr_no_lookup("Unexpected characters in array index"),
+ __tr_no_lookup("Unexpected end in expression"),
+ __tr_no_lookup("Unexpected end in array index"),
+ __tr_no_lookup("Connection thru HTTP proxy failed"),
+ __tr_no_lookup("Case , match , regexp , default or break keyword expected"),
+ __tr_no_lookup("Access denied"),
+ __tr_no_lookup("Address already in use"),
+ __tr_no_lookup("Can't assign the requested address"),
+ __tr_no_lookup("Connection reset by peer"),
+ __tr_no_lookup("Host unreachable (no route to host)"),
+ __tr_no_lookup("Variable expected"),
+ __tr_no_lookup("Invalid array index: positive integer expected"),
+ __tr_no_lookup("listen() call failed"),
+ __tr_no_lookup("This executable has been compiled without SSL support"),
+ __tr_no_lookup("Secure Socket Layer error"),
+ __tr_no_lookup("Slash (/) character expected"),
+ __tr_no_lookup("Unknown string manipulation operation"),
+ __tr_no_lookup("Operation aborted"),
+ __tr_no_lookup("Unexpected token"),
+ __tr_no_lookup("Scope object already defined (unexpected @)"),
+ __tr_no_lookup("There is no $this pointer in this scope (unexpected @)")
+};
+
+namespace KviError
+{
+ const char * getUntranslatedDescription(int iErrorCode)
+ {
+ if((iErrorCode < KVI_NUM_ERRORS) && (iErrorCode >= 0))
+ return g_errorTable[iErrorCode];
+#ifdef HAVE_STRERROR
+ if(iErrorCode < 0)return strerror(-iErrorCode);
+#endif
+ return g_errorTable[KviError_unknownError];
+ }
+
+ QString getDescription(int iErrorCode)
+ {
+ return __tr2qs_no_xgettext(getUntranslatedDescription(iErrorCode));
+ }
+
+ int translateSystemError(int iErrNo)
+ {
+#ifdef COMPILE_ON_WINDOWS
+ switch(iErrNo)
+ {
+ case EBADF: return KviError_badFileDescriptor; break;
+ case WSAEINVAL:
+ case WSAEFAULT:
+ case EFAULT: return KviError_outOfAddressSpace; break;
+ case WSAECONNREFUSED: return KviError_connectionRefused; break;
+ case WSAENOTSOCK: return KviError_kernelNetworkingPanic; break;
+ case WSAETIMEDOUT: return KviError_connectionTimedOut; break;
+ case WSAENETUNREACH: return KviError_networkUnreachable; break;
+ case EPIPE: return KviError_brokenPipe; break;
+ case WSAENOTCONN: return KviError_socketNotConnected; break;
+
+ case WSAEACCES: return KviError_accessDenied; break;
+ case WSAEADDRINUSE: return KviError_addressAlreadyInUse; break;
+ case WSAEADDRNOTAVAIL: return KviError_cantAssignRequestedAddress; break;
+ case WSAEAFNOSUPPORT: return KviError_unsupportedAddressFamily; break;
+ case WSAECONNRESET: return KviError_connectionResetByPeer; break;
+ case WSAEHOSTUNREACH: return KviError_hostUnreachable; break;
+
+ //case ENOBUFS: return KviError_insufficientResources; break;
+ // Unhandled error...pass errno to the strerror function
+ default: return -iErrNo; break;
+ }
+#else
+ switch(iErrNo)
+ {
+ case EBADF: return KviError_badFileDescriptor; break;
+ case EFAULT: return KviError_outOfAddressSpace; break;
+ case ECONNREFUSED: return KviError_connectionRefused; break;
+ case ENOTSOCK: return KviError_kernelNetworkingPanic; break;
+ case ETIMEDOUT: return KviError_connectionTimedOut; break;
+ case ENETUNREACH: return KviError_networkUnreachable; break;
+ case EPIPE: return KviError_brokenPipe; break;
+ case ENOTCONN: return KviError_socketNotConnected; break;
+ case ENOBUFS: return KviError_insufficientResources; break;
+ case EHOSTUNREACH: return KviError_hostUnreachable; break;
+ // Unhandled error...pass errno to the strerror function
+ default: return -iErrNo; break;
+ }
+#endif
+ }
+};
+
diff --git a/src/kvilib/core/kvi_error.h b/src/kvilib/core/kvi_error.h
new file mode 100644
index 00000000..7ab55e88
--- /dev/null
+++ b/src/kvilib/core/kvi_error.h
@@ -0,0 +1,188 @@
+#ifndef _KVI_ERROR_H_
+#define _KVI_ERROR_H_
+//=============================================================================
+//
+// File : kvi_error.h
+// Creation date : Sun Jul 02 2000 18:35:56 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+
+#define KviError_success 0
+#define KviError_unknownError 1
+#define KviError_internalError 2
+#define KviError_unknownCommand 3
+#define KviError_missingClosingBrace 4
+#define KviError_unexpectedEndInString 5
+#define KviError_unexpectedEndInDictionaryKey 6
+#define KviError_switchDashWithoutSwitchLetter 7
+#define KviError_unknownFunction 8
+#define KviError_unexpectedEndInParenthesis 9
+#define KviError_unexpectedEndInFunctionParams 10
+#define KviError_missingVariableName 11
+#define KviError_variableOrIdentifierExpected 12
+#define KviError_leftOperandIsNotANumber 13
+#define KviError_multipleOpsNotSupportedForOperator 14
+#define KviError_divisionByZero 15
+#define KviError_moduloByZero 16
+#define KviError_rightOperandIsNotANumber 17
+#define KviError_unterminatedExpression 18
+#define KviError_unterminatedSubexpression 19
+#define KviError_unexpectedCharacter 20
+#define KviError_unknownOperator 21
+
+#define KviError_noHostToResolve 22
+#define KviError_unsupportedAddressFamily 23
+#define KviError_validNameButNoIpAddress 24
+#define KviError_unrecoverableNameserverError 25
+#define KviError_dnsTemporaneousFault 26
+#define KviError_dnsInternalErrorBadFlags 27
+#define KviError_dnsInternalErrorOutOfMemory 28
+#define KviError_dnsInternalErrorServiceNotSupported 29
+#define KviError_dnsNoName 30
+#define KviError_dnsInternalErrorUnsupportedSocketType 31
+#define KviError_dnsQueryFailed 32
+#define KviError_noIpV6Support 33
+#define KviError_hostNotFound 34
+#define KviError_dnsInternalIPCFailure 35
+
+#define KviError_anotherConnectionInProgress 36
+#define KviError_invalidIpAddress 37
+#define KviError_socketCreationFailed 38
+#define KviError_asyncSocketFailed 39
+#define KviError_badFileDescriptor 40
+#define KviError_outOfAddressSpace 41
+#define KviError_connectionRefused 42
+#define KviError_kernelNetworkingPanic 43
+#define KviError_connectionTimedOut 44
+#define KviError_networkUnreachable 45
+#define KviError_brokenPipe 46
+#define KviError_invalidProxyAddress 47
+#define KviError_remoteEndClosedConnection 48
+
+#define KviError_invalidIrcContextId 49
+#define KviError_errorInLoadingModule 50
+#define KviError_noSuchModuleCommand 51
+#define KviError_noSuchModuleFunction 52
+
+#define KviError_leftOperandIsNotADictionaryReference 53
+#define KviError_rightOperandIsNotADictionaryReference 54
+
+#define KviError_missingObjectClassName 55
+#define KviError_noSuchObjectClass 56
+#define KviError_noSuchObject 57
+#define KviError_noSuchObjectFunction 58
+
+#define KviError_invalidLeftOperand 59
+
+#define KviError_notEnoughParameters 60
+#define KviError_integerParameterExpected 61
+#define KviError_invalidParameter 62
+
+#define KviError_noSuchFile 63
+
+#define KviError_openParenthesisExpected 64
+#define KviError_openBraceExpected 65
+
+#define KviError_cantKillABuiltinClass 66
+#define KviError_socksV4LacksIpV6Support 67
+#define KviError_unrecognizedProxyReply 68
+#define KviError_proxyAuthFailed 69
+#define KviError_proxyNoAcceptableAuthMethod 70
+
+#define KviError_proxyReply91RequestFailed 71
+#define KviError_proxyReply92IdentFailed 72
+#define KviError_proxyReply93IdentNotMatching 73
+#define KviError_proxyReply01GeneralSOCKSFailure 74
+#define KviError_proxyReply02ConnectionNotAllowed 75
+#define KviError_proxyReply03NetworkUnreachable 76
+#define KviError_proxyReply04HostUnreachable 77
+#define KviError_proxyReply05ConnectionRefused 78
+#define KviError_proxyReply06TTLExpired 79
+#define KviError_proxyReply07CommandNotSupported 80
+#define KviError_proxyReply08AddressTypeNotSupported 81
+#define KviError_proxyReply09InvalidAddress 82
+
+#define KviError_invalidPortNumber 83
+#define KviError_socketNotConnected 84
+#define KviError_insufficientResources 85
+#define KviError_bindFailed 86
+#define KviError_cantResolveLocalhost 87
+
+#define KviError_unsupportedImageFormat 88
+
+#define KviError_cantOpenFileForAppending 89
+#define KviError_cantOpenFileForWriting 90
+#define KviError_fileIOError 91
+#define KviError_acknowledgeError 92
+#define KviError_cantOpenFileForReading 93
+#define KviError_cantSendAZeroSizeFile 94
+
+#define KviError_missingPopupName 95
+#define KviError_itemPopupOrSeparatorExpected 96
+#define KviError_selfModificationNotAllowed 97
+
+//#define KviError_recursionTooDeep 98
+#define KviError_featureNotAvailable 99
+
+#define KviError_unexpectedCharactersInArrayIndex 100
+#define KviError_unexpectedEndInExpression 101
+#define KviError_unexpectedEndInArrayIndex 102
+
+#define KviError_proxyHttpFailure 103
+#define KviError_caseMatchRegexpDefaultOrBreakExpected 104
+
+
+#define KviError_accessDenied 105
+#define KviError_addressAlreadyInUse 106
+#define KviError_cantAssignRequestedAddress 107
+#define KviError_connectionResetByPeer 108
+#define KviError_hostUnreachable 109
+
+#define KviError_variableExpected 110
+#define KviError_invalidArrayIndex 111
+
+#define KviError_listenFailed 112
+
+#define KviError_noSSLSupport 113
+#define KviError_SSLError 114
+
+#define KviError_slashCharacterExpected 115
+#define KviError_unknownStringManipulationOperator 116
+
+#define KviError_operationAborted 117
+
+#define KviError_unexpectedToken 118
+
+#define KviError_scopeObjectAlreadyDefined 119
+#define KviError_noThisObject 120
+
+#define KVI_NUM_ERRORS 121
+
+namespace KviError
+{
+ KVILIB_API QString getDescription(int iErrorCode);
+ KVILIB_API const char * getUntranslatedDescription(int iErrorCode);
+ KVILIB_API int translateSystemError(int iErrNo);
+};
+
+#endif //_KVI_ERROR_H_
diff --git a/src/kvilib/core/kvi_heapobject.cpp b/src/kvilib/core/kvi_heapobject.cpp
new file mode 100644
index 00000000..7568086d
--- /dev/null
+++ b/src/kvilib/core/kvi_heapobject.cpp
@@ -0,0 +1,96 @@
+//=============================================================================
+//
+// File : kvi_heapobject.cpp
+// Created on Wed 24 Mar 2004 04:45:17 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004-2006 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+
+#include "kvi_heapobject.h"
+#include "kvi_malloc.h"
+
+// On windows we need to override new and delete operators
+// to ensure that always the right new/delete pair is called for an object instance
+// This bug jumps out because windows uses a local heap for each
+// executable module (exe or dll).
+// (this is a well known bug described in Q122675 of MSDN)
+
+// on Linux it is not needed: there is a single global heap
+
+
+
+// 05.02.2005 : scalar/vector deleting destructors in modules
+//
+// There are also other issues involving the MSVC compiler.
+// When the operator new is called on an object with a virtual
+// destructor the compiler generates a helper function
+// called "vector deleting destructor" that is used to both
+// free the object's memory and call the object's destructor.
+// (In fact there is also a "scalar deleting destructor" but
+// MSVC seems to call the vector version also for scalar deletes ?!?)
+// The problem arises when operator new is called in a module:
+// the helper function gets stuffed in one of the module's sections
+// and when the module is unloaded any attempt to delete
+// the object will simply jump into no man's land.
+
+// An "unhandled exception" in a "call [%eax]" corresponding
+// to a delete <pointer> may be a symptom of this problem.
+
+// I haven't been able to find a solution nicer than having
+// a static allocation function in each class that can be
+// created from inside a module and destroyed anywhere else
+// and has a virtual destructor.
+
+#ifdef COMPILE_ON_WINDOWS
+ void * KviHeapObject::operator new(size_t uSize)
+ {
+ return kvi_malloc(uSize);
+ }
+
+ void KviHeapObject::operator delete(void * pData)
+ {
+ kvi_free(pData);
+ }
+
+ void * KviHeapObject::operator new[](size_t uSize)
+ {
+ return kvi_malloc(uSize);
+ }
+
+ void KviHeapObject::operator delete[](void * pData)
+ {
+ kvi_free(pData);
+ }
+
+ // these are the debug versions...
+ void * KviHeapObject::operator new(size_t uSize,const char *,int)
+ {
+ return kvi_malloc(uSize);
+ }
+
+ void KviHeapObject::operator delete(void * pData,const char *,int)
+ {
+ kvi_free(pData);
+ }
+#endif
+
+
diff --git a/src/kvilib/core/kvi_heapobject.h b/src/kvilib/core/kvi_heapobject.h
new file mode 100644
index 00000000..3d1638cf
--- /dev/null
+++ b/src/kvilib/core/kvi_heapobject.h
@@ -0,0 +1,50 @@
+#ifndef _KVI_HEAPOBJECT_H_
+#define _KVI_HEAPOBJECT_H_
+//=============================================================================
+//
+// File : kvi_heapobject.h
+// Created on Wed 24 Mar 2004 04:45:17 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004-2006 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+// See kvi_heapobject.cpp for comments on this class
+
+#ifdef COMPILE_ON_WINDOWS
+
+ class KVILIB_API KviHeapObject
+ {
+ public:
+ void * operator new(size_t uSize);
+ void operator delete(void * pData);
+ void * operator new[](size_t uSize);
+ void operator delete[](void * pData);
+ void * operator new(size_t uSize,const char *,int);
+ void operator delete(void * pData,const char *,int);
+ };
+#else //!COMPILE_ON_WINDOWS
+ class KVILIB_API KviHeapObject
+ {
+ // on other platforms this crap is not necessary
+ };
+#endif //!COMPILE_ON_WINDOWS
+
+#endif //!_KVI_HEAPOBJECT_H_
diff --git a/src/kvilib/core/kvi_inttypes.h b/src/kvilib/core/kvi_inttypes.h
new file mode 100644
index 00000000..6405ee79
--- /dev/null
+++ b/src/kvilib/core/kvi_inttypes.h
@@ -0,0 +1,95 @@
+#ifndef _KVI_INTTYPES_H_
+#define _KVI_INTTYPES_H_
+//=============================================================================
+//
+// File : kvi_inttypes.h
+// Creation date : Wed Sep 4 22:28:00 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_ON_WINDOWS
+ // we don't have a configure script here
+ // so we can't check the size of types
+ // We rely on the ms specific definitions then
+ typedef __int64 kvi_i64_t;
+ typedef unsigned __int64 kvi_u64_t;
+ typedef int kvi_i32_t;
+ typedef unsigned int kvi_u32_t;
+ typedef short int kvi_i16_t;
+ typedef short unsigned int kvi_u16_t;
+ typedef char kvi_i8_t;
+ typedef unsigned char kvi_u8_t;
+#else
+ #if SIZEOF_LONG_INT == 8
+ // the most common case on 64 bit machines
+ typedef long int kvi_i64_t;
+ typedef unsigned long int kvi_u64_t;
+ #elif SIZEOF_INT == 8
+ // 64 bit ints ?.. a Cray ? :D
+ typedef int kvi_i64_t;
+ typedef unsigned int kvi_u64_t;
+ #elif SIZEOF_LONG_LONG_INT == 8
+ // the most common case on 32 bit machines
+ typedef long long int kvi_i64_t;
+ typedef unsigned long long int kvi_u64_t;
+ #else
+ // attempt to live without a 64bit integer type anyway...
+ // dunno if it will work tough...
+ typedef long long int kvi_i64_t;
+ typedef unsigned long long int kvi_u64_t;
+ #endif
+
+ #if SIZEOF_INT == 4
+ // the most common case
+ typedef int kvi_i32_t;
+ typedef unsigned int kvi_u32_t;
+ #elif SIZEOF_SHORT_INT == 4
+ // 32 bit shorts ?.. a Cray ? :D
+ typedef short int kvi_i32_t;
+ typedef short unsigned int kvi_u32_t;
+ #elif SIZEOF_LONG_INT == 4
+ typedef long int kvi_i32_t;
+ typedef unsigned long int kvi_u32_t;
+ #else
+ #error "Can't find a 32 bit integral type on this system"
+ #error "Please report to pragma at kvirc dot net"
+ #endif
+
+ #if SIZEOF_SHORT_INT == 2
+ // the most common case
+ typedef short int kvi_i16_t;
+ typedef short unsigned int kvi_u16_t;
+ #elif SIZEOF_INT == 2
+ // this isn't going to work anyway, I think..
+ typedef int kvi_i16_t;
+ typedef long int kvi_u16_t;
+ #else
+ #error "Can't find a 16 bit integral type on this system"
+ #error "Please report to pragma at kvirc dot net"
+ #endif
+
+ // assume that char is always 8 bit
+ typedef char kvi_i8_t;
+ typedef unsigned char kvi_u8_t;
+#endif
+
+#endif //_KVI_INTTYPES_H_
diff --git a/src/kvilib/core/kvi_malloc.cpp b/src/kvilib/core/kvi_malloc.cpp
new file mode 100644
index 00000000..9c418ec5
--- /dev/null
+++ b/src/kvilib/core/kvi_malloc.cpp
@@ -0,0 +1,198 @@
+//=============================================================================
+//
+// File : kvi_malloc.cpp
+// Creation date : Sun Jun 18 2000 18:26:27 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+//=============================================================================
+// C memory allocation routines
+// This stuff is rather unused, because in normal compilations
+// kvi_malloc , kvi_free and kvi_realloc are macros (see kvi_malloc.h)
+//=============================================================================
+
+#define __KVILIB__
+
+#define _KVI_MALLOC_CPP_
+#include "kvi_malloc.h"
+
+#include <stdio.h>
+
+
+
+#ifdef COMPILE_MEMORY_PROFILE
+
+ //
+ // Memory profile stuff
+ // Used to find memory leaks etc...
+ //
+
+ #include "kvi_pointerlist.h"
+
+ typedef struct _KviMallocEntry {
+ struct _KviMallocEntry * prev;
+ void * pointer;
+ int size;
+ void * return_addr1;
+ void * return_addr2;
+ struct _KviMallocEntry * next;
+ } KviMallocEntry;
+
+ int g_iMaxRequestSize = 0;
+ void * g_pMaxRequestReturnAddress1 = 0;
+ void * g_pMaxRequestReturnAddress2 = 0;
+ unsigned int g_iMallocCalls = 0;
+ unsigned int g_iReallocCalls = 0;
+ unsigned int g_iFreeCalls = 0;
+ unsigned int g_iTotalMemAllocated = 0;
+ unsigned int g_uAllocationPeak = 0;
+ KviMallocEntry * g_pEntries = 0;
+
+ void * kvi_malloc(int size)
+ {
+ g_iMallocCalls ++;
+ g_iTotalMemAllocated += size;
+ if(g_iTotalMemAllocated > g_uAllocationPeak)g_uAllocationPeak = g_iTotalMemAllocated;
+ if(g_iMaxRequestSize < size){
+ g_iMaxRequestSize = size;
+ g_pMaxRequestReturnAddress1 = __builtin_return_address(1);
+ g_pMaxRequestReturnAddress2 = __builtin_return_address(2);
+ }
+ KviMallocEntry * e = (KviMallocEntry *)malloc(sizeof(KviMallocEntry));
+ e->pointer = malloc(size);
+ e->size = size;
+ e->return_addr1 = __builtin_return_address(1);
+ e->return_addr2 = __builtin_return_address(2);
+ e->next = g_pEntries;
+ e->prev = 0;
+ if(g_pEntries)g_pEntries->prev = e;
+ g_pEntries = e;
+ return e->pointer;
+ }
+
+ void * kvi_realloc(void * ptr,int size)
+ {
+ g_iReallocCalls ++;
+ if(ptr == 0)return kvi_malloc(size);
+ if(g_iMaxRequestSize < size){
+ g_iMaxRequestSize = size;
+ g_pMaxRequestReturnAddress1 = __builtin_return_address(1);
+ g_pMaxRequestReturnAddress2 = __builtin_return_address(2);
+ }
+ KviMallocEntry *e = g_pEntries;
+ while(e){
+ if(e->pointer == ptr){
+ g_iTotalMemAllocated -= e->size;
+ g_iTotalMemAllocated += size;
+ if(g_iTotalMemAllocated > g_uAllocationPeak)g_uAllocationPeak = g_iTotalMemAllocated;
+ e->pointer = realloc(ptr,size);
+ e->size = size;
+ e->return_addr1 = __builtin_return_address(1);
+ e->return_addr2 = __builtin_return_address(2);
+ return e->pointer;
+ }
+ e = e->next;
+ }
+ fprintf(stderr,"Attempt to realloc an inexisting pointer (%p) (called from %p (%p))\n",ptr,__builtin_return_address(1),__builtin_return_address(2));
+ return realloc(ptr,size);
+ }
+
+ void kvi_free(void * ptr)
+ {
+ g_iFreeCalls++;
+ if(ptr == 0){
+ fprintf(stderr,"Attempt to free a null pointer (called from %p (%p))\n",__builtin_return_address(1),__builtin_return_address(2));
+ exit(-1);
+ }
+ KviMallocEntry * e= g_pEntries;
+ while(e){
+ if(e->pointer == ptr){
+ g_iTotalMemAllocated -= e->size;
+ if(e->prev){
+ if(e == g_pEntries)fprintf(stderr,"Mem profiling internal error!\n");
+ e->prev->next = e->next;
+ if(e->next)e->next->prev = e->prev;
+ } else {
+ if(e != g_pEntries)fprintf(stderr,"Mem profiling internal error!\n");
+ if(e->next)e->next->prev = 0;
+ g_pEntries = e->next;
+ }
+ free(e);
+ return;
+ }
+ e = e->next;
+ }
+ fprintf(stderr,"Attempt to free an inexisting pointer (%p) (called from %p (%p))\n",ptr,__builtin_return_address(1),__builtin_return_address(2));
+ }
+
+ void kvi_memory_profile() __attribute__((destructor));
+ void kvi_memory_profile()
+ {
+ unsigned int countUnfreed = 0;
+ KviMallocEntry * e = g_pEntries;
+ while(e){
+ countUnfreed++;
+ e = e->next;
+ }
+ fprintf(stderr,"|====|====|====|====|====|====|====|====\n");
+ fprintf(stderr,"| Memory profile for KVIrc\n");
+ fprintf(stderr,"| Unfreed chunks : %d\n",countUnfreed);
+ fprintf(stderr,"| Total unfreed memory : %u bytes\n",g_iTotalMemAllocated);
+ fprintf(stderr,"|====|====|====|====|====|====|====|====\n");
+ fprintf(stderr,"| Possible unfreed chunks dump:\n");
+ e = g_pEntries;
+ while(e){
+ fprintf(stderr,"|====|====|\n");
+ fprintf(stderr,"| Currently unfreed chunk: %p\n",e->pointer);
+ fprintf(stderr,"| Size: %d\n",e->size);
+ fprintf(stderr,"| Caller address 1: %p\n",e->return_addr1);
+ fprintf(stderr,"| Caller address 2: %p\n",e->return_addr2);
+ if(e->size > 10)fprintf(stderr,"| Data: %.10s\n",e->pointer);
+ else if(e->size > 5)fprintf(stderr,"| Data: %.5s\n",e->pointer);
+ KviMallocEntry *toFree = e;
+ e = e->next;
+ free(toFree);
+ }
+ fprintf(stderr,"|====|====|====|====|====|====|====|====\n");
+ fprintf(stderr,"| Allocation peak : %u bytes\n",g_uAllocationPeak);
+ fprintf(stderr,"|====|====|====|====|====|====|====|====\n");
+ fprintf(stderr,"| Max request size : %d bytes\n",g_iMaxRequestSize);
+ fprintf(stderr,"| Called from %p (%p)\n",g_pMaxRequestReturnAddress1,g_pMaxRequestReturnAddress2);
+ fprintf(stderr,"|====|====|====|====|====|====|====|====\n");
+ fprintf(stderr,"| Malloc calls: %u\n",g_iMallocCalls);
+ fprintf(stderr,"| Realloc calls: %u\n",g_iReallocCalls);
+ fprintf(stderr,"| Free calls: %u\n",g_iFreeCalls);
+ fprintf(stderr,"|====|====|====|====|====|====|====|====\n");
+ }
+
+#else
+
+ #ifdef COMPILE_MEMORY_CHECKS
+
+ void outOfMemory()
+ {
+ //What a cool message :)
+ fprintf(stderr,"Virtual memory exhausted in malloc call....bye!\n");
+ exit(-1);
+ }
+
+ #endif
+
+#endif
diff --git a/src/kvilib/core/kvi_malloc.h b/src/kvilib/core/kvi_malloc.h
new file mode 100644
index 00000000..8a7204a5
--- /dev/null
+++ b/src/kvilib/core/kvi_malloc.h
@@ -0,0 +1,88 @@
+#ifndef _KVI_MALLOC_H_
+#define _KVI_MALLOC_H_
+
+//=============================================================================
+//
+// File : kvi_malloc.h
+// Creation date : Sun Jun 18 2000 18:18:36 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+//=============================================================================
+// C memory allocation routines: macros in common compilations
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include <stdlib.h>
+
+#ifdef COMPILE_MEMORY_PROFILE
+
+ #ifdef COMPILE_ON_WINDOWS
+ #error "This stuff should be never compiled on Windows"
+ #endif
+
+ extern void * kvi_malloc(int size);
+ extern void * kvi_realloc(void * ptr,int size);
+ extern void kvi_free(void * ptr);
+
+#else
+
+ #ifndef COMPILE_MEMORY_CHECKS
+
+ // These two are the "common" ones
+ #define kvi_malloc(__size_) malloc(__size_)
+ #define kvi_realloc(__ptr_,__size_) realloc((void *)__ptr_,__size_)
+
+ #else
+
+ #ifdef COMPILE_ON_WINDOWS
+ #error "This stuff should be never compiled on Windows"
+ #endif
+
+ // Want to check all the pointers
+ #define kvi_malloc(__size_) kvi_safe_malloc(__size_)
+ #define kvi_realloc(__ptr_,__size_) kvi_safe_realloc((void *)__ptr_,__size_)
+
+ #ifndef _KVI_MALLOC_CPP_
+ extern void outOfMemory();
+ #endif
+
+ inline void * kvi_safe_malloc(int size)
+ {
+ void * ptr = malloc(size);
+ if(!ptr)outOfMemory();
+ return ptr;
+ }
+
+ inline void * kvi_safe_realloc(void * ptr,int size)
+ {
+ ptr = realloc(ptr,size);
+ if(!ptr)outOfMemory();
+ return ptr;
+ }
+
+ #endif //COMPILE_MEMORY_CHECKS
+
+ #define kvi_free(__ptr_) free((void *)__ptr_)
+
+#endif
+
+#endif //_KVI_MALLOC_H_
diff --git a/src/kvilib/core/kvi_memmove.cpp b/src/kvilib/core/kvi_memmove.cpp
new file mode 100644
index 00000000..1beb920a
--- /dev/null
+++ b/src/kvilib/core/kvi_memmove.cpp
@@ -0,0 +1,253 @@
+//=============================================================================
+//
+// File : kvi_memmove.cpp
+// Creation date : Sun Jun 18 2000 18:27:50 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+#define _KVI_DEBUG_CHECK_RANGE_
+#include "kvi_debug.h"
+
+#define _KVI_MEMMOVE_CPP_
+#include "kvi_memmove.h"
+
+// FIXME: #warning "With system memmove could be guessed by configure"
+
+#ifndef COMPILE_WITH_SYSTEM_MEMMOVE
+
+ #ifdef COMPILE_ix86_ASM
+
+
+ void *kvi_memmove(void * dst_ptr,const void *src_ptr,int len)
+ {
+ __range_valid(dst_ptr);
+ __range_valid(src_ptr);
+ __range_valid(len >= 0);
+ // Save pointer registers
+ asm(" pushl %esi"); // save %esi
+ asm(" pushl %edi"); // save %edi
+ // Load arguments
+ asm(" movl 16(%ebp),%ecx"); // %ecx = len
+ asm(" movl 12(%ebp),%esi"); // %esi = src
+ asm(" movl 8(%ebp),%edi"); // %edi = dst
+ // Compare src and dest
+ asm(" cmpl %esi,%edi"); // %edi - %esi
+ asm(" jbe move_from_bottom_to_top"); // if(%edi < %esi) jump to move_from_bottom_to_top
+ // dst_ptr > src_ptr
+ asm(" addl %ecx,%esi"); // %esi += %ecx (src_ptr += len);
+ asm(" addl %ecx,%edi"); // %edi += %ecx (dst_ptr += len);
+ asm(" decl %esi"); // %esi--; (src_ptr--);
+ asm(" decl %edi"); // %edi--; (dst_ptr--);
+ asm(" std"); // set direction flag (decrement esi and edi in movsb)
+ // Optimization : check for non-odd len (1,3,5,7...)
+ asm(" shr $1,%ecx"); // %ecx >> 1 , shifted bit -> CF
+ asm(" jnc move_two_bytes_top_to_bottom_directly"); // if !carry (CF == 0) skip this move
+ // Move the first byte (non-odd)
+ asm(" movsb %ds:(%esi),%es:(%edi)"); // *dst-- = *src-- if DF else *dst++ = *src++
+ asm("move_two_bytes_top_to_bottom_directly:");
+ asm(" decl %esi"); // %esi--; (src_ptr--);
+ asm(" decl %edi"); // %edi--; (dst_ptr--);
+ asm("move_two_bytes_top_to_bottom:");
+ asm(" shr $1,%ecx"); // %ecx >> 1 , shifted bit -> CF
+ asm(" jnc move_the_rest_top_to_bottom_directly"); // if !carry (CF == 0) skip this move
+ // Move the next two bytes
+ asm(" movsw %ds:(%esi),%es:(%edi)"); // *((word *)dst)-- = *((word)src)-- if DF else *((word *)dst)++ = *((word)src)++
+ asm("move_the_rest_top_to_bottom_directly:");
+ asm(" subl $2,%esi"); // %esi-=2; (src-=2);
+ asm(" subl $2,%edi"); // %edi-=2; (dst-=2);
+ asm(" jmp move_the_rest"); // call last repnz movsl
+ // dst_ptr <= src_ptr
+ asm("move_from_bottom_to_top:");
+ asm(" cld"); // clear direction flag (increment esi and edi in movsb)
+ // Optimization : check for non-odd len (1,3,5,7...)
+ asm(" shr $1,%ecx"); // %ecx >> 1 , shifted bit -> CF
+ asm(" jnc move_two_bytes"); // if !carry (CF == 0) skip this move
+ // Move the first byte (non-odd)
+ asm(" movsb %ds:(%esi),%es:(%edi)"); // *dst-- = *src-- if DF else *dst++ = *src++
+ // Optimization : pass 2 , check for %2 and %3
+ asm("move_two_bytes:");
+ asm(" shr $1,%ecx"); // %ecx >> 1 , shifted bit -> CF
+ asm(" jnc move_the_rest"); // if !carry (CF == 0) skip this move
+ // Move the next two bytes
+ asm(" movsw %ds:(%esi),%es:(%edi)"); // *((word *)dst)-- = *((word)src)-- if DF else *((word *)dst)++ = *((word)src)++
+ // Main move remaining part
+ asm("move_the_rest:");
+ asm(" repnz; movsl %ds:(%esi),%es:(%edi)"); // loop moving 4 bytes at once (increment or decrement as above)
+ // Restore pointer registers
+ asm(" popl %edi"); // restore %edi
+ asm(" popl %esi"); // restore %esi
+ return dst_ptr; //asm(" movl 8(%ebp),%eax"); <-- gcc will put that (AFTER THE OPTIMISATION PASS!)
+ }
+
+ void *kvi_memmoveodd(void * dst_ptr,const void *src_ptr,int len)
+ {
+ __range_valid(dst_ptr);
+ __range_valid(src_ptr);
+ __range_valid(len >= 0);
+ // Save pointer registers
+ asm(" pushl %esi"); // save %esi
+ asm(" pushl %edi"); // save %edi
+ // Load arguments
+ asm(" movl 16(%ebp),%ecx"); // %ecx = len
+ asm(" movl 12(%ebp),%esi"); // %esi = src
+ asm(" movl 8(%ebp),%edi"); // %edi = dst
+ // Compare src and dest
+ asm(" cmpl %esi,%edi"); // %edi - %esi
+ asm(" jbe xmove_from_bottom_to_top"); // if(%edi < %esi) jump to move_from_bottom_to_top
+ // dst_ptr > src_ptr
+ asm(" addl %ecx,%esi"); // %esi += %ecx (src_ptr += len);
+ asm(" addl %ecx,%edi"); // %edi += %ecx (dst_ptr += len);
+ asm(" std"); // set direction flag (decrement esi and edi in movsb)
+ // start moving
+ asm(" shr $2,%ecx"); // %ecx >> 2 , last shifted bit -> CF
+ asm(" jnc xmove_the_rest_top_to_bottom_directly"); // if !carry (CF == 0) skip this move
+ // Move the next two bytes
+ asm(" subl $2,%esi"); // %esi-=2; (src_ptr-=2);
+ asm(" subl $2,%edi"); // %edi-=2; (dst_ptr-=2);
+ asm(" movsw %ds:(%esi),%es:(%edi)"); // *((word *)dst)-- = *((word)src)-- if DF else *((word *)dst)++ = *((word)src)++
+ asm(" subl $2,%esi"); // %esi-=2; (src_ptr-=2);
+ asm(" subl $2,%edi"); // %edi-=2; (dst_ptr-=2);
+ asm(" jmp xmove_the_rest");
+ asm("xmove_the_rest_top_to_bottom_directly:");
+ asm(" subl $4,%esi"); // %esi-=4; (src-=4);
+ asm(" subl $4,%edi"); // %edi-=4; (dst-=4);
+ asm(" jmp xmove_the_rest"); // call last repnz movsl
+ // dst_ptr <= src_ptr
+ asm("xmove_from_bottom_to_top:");
+ asm(" cld"); // clear direction flag (increment esi and edi in movsb)
+ // move it
+ asm(" shr $2,%ecx"); // %ecx >> 2 , last shifted bit -> CF
+ asm(" jnc xmove_the_rest"); // if !carry (CF == 0) skip this move
+ // Move the next two bytes
+ asm(" movsw %ds:(%esi),%es:(%edi)"); // *((word *)dst)-- = *((word)src)-- if DF else *((word *)dst)++ = *((word)src)++
+ // Main move remaining part
+ asm("xmove_the_rest:");
+ asm(" repnz; movsl %ds:(%esi),%es:(%edi)"); // loop moving 4 bytes at once (increment or decrement as above)
+ // Restore pointer registers
+ asm(" popl %edi"); // restore %edi
+ asm(" popl %esi"); // restore %esi
+ return dst_ptr; //asm(" movl 8(%ebp),%eax"); <-- gcc will put that (AFTER THE OPTIMISATION PASS!)
+ }
+
+ #else // ndef COMPILE_ix86_ASM
+
+
+
+ // The next 4 functions could be optimized with the & and shift technique
+ // used in the assembly implementations but the compilers usually
+ // will not translate the carry bit trick producing code
+ // that works slower on short block of memory (really near the average case)
+
+ // The trick would be:
+ //
+ // if(len & 1) // the length is even
+ // *dst-- = *src--; // move one byte
+ // len >> 1; // drop the last bit (thus divide by 2)
+ // if(len & 1) // the length is still even
+ // *((short *)dst)-- = *((short *)src)--; // move two bytes
+ // len >> 1; // again drop the last bit (thus divide by 2)
+ // while(len--)*((int *)dst)-- = *((int *)src)--; // move four bytes at a time
+ //
+ //
+
+ void *kvi_memmove(void *dst_ptr,const void *src_ptr,int len)
+ {
+ __range_valid(dst_ptr);
+ __range_valid(src_ptr);
+ __range_valid(len >= 0);
+ register char *dst;
+ register const char *src;
+ if(dst_ptr > src_ptr){
+ dst = (char *)dst_ptr + len - 1;
+ src = (const char *)src_ptr + len - 1;
+ while(len--)*dst-- = *src--;
+ } else { //it is valid even if dst_ptr == src_ptr
+ dst = (char *)dst_ptr;
+ src = (const char *)src_ptr;
+ while(len--)*dst++ = *src++;
+ }
+ return dst_ptr;
+ }
+
+ void *kvi_memmoveodd(void *dst_ptr,const void *src_ptr,int len)
+ {
+ __range_valid(dst_ptr);
+ __range_valid(src_ptr);
+ __range_valid(len >= 0);
+ __range_valid((len & 1) == 0);
+ register short *dst;
+ register const short *src;
+ if(dst_ptr > src_ptr){
+ dst = (short *) (((char *)dst_ptr) + len - 2);
+ src = (const short *) (((const char *)src_ptr) + len - 2);
+ while(len > 0)
+ {
+ *dst-- = *src--;
+ len -= 2;
+ }
+ } else { //it is valid even if dst_ptr == src_ptr
+ dst = (short *)dst_ptr;
+ src = (const short *)src_ptr;
+ while(len > 0)
+ {
+ *dst++ = *src++;
+ len -= 2;
+ }
+ }
+ return dst_ptr;
+ }
+
+ void kvi_fastmove(void *dst_ptr,const void *src_ptr,int len)
+ {
+ __range_valid(dst_ptr);
+ __range_valid(src_ptr);
+ __range_valid(len >= 0);
+ register const char *src = (const char *)src_ptr;
+ register char *dst = (char *)dst_ptr;
+ while(len--)*dst++ = *src++;
+ }
+
+ void kvi_fastmoveodd(void *dst_ptr,const void *src_ptr,int len)
+ {
+ __range_valid(dst_ptr);
+ __range_valid(src_ptr);
+ __range_valid(len >= 0);
+ __range_valid((len & 1) == 0);
+ register const short *src = (const short *)src_ptr;
+ register short *dst = (short *)dst_ptr;
+ while(len > 0){
+ *dst++ = *src++;
+ len -= 2;
+ }
+ }
+
+ #endif // !COMPILE_ix86_ASM
+
+ void kvi_memset(void *dst_ptr,char c,int len)
+ {
+ __range_valid(dst_ptr);
+ __range_valid(len >= 0);
+ register char *dst = (char *)dst_ptr;
+ while(len--)*dst++ = c;
+ }
+
+#endif // !COMPILE_WITH_SYSTEM_MEMMOVE
diff --git a/src/kvilib/core/kvi_memmove.h b/src/kvilib/core/kvi_memmove.h
new file mode 100644
index 00000000..d1319a41
--- /dev/null
+++ b/src/kvilib/core/kvi_memmove.h
@@ -0,0 +1,105 @@
+#ifndef _KVI_MEMMOVE_H_
+#define _KVI_MEMMOVE_H_
+
+//=============================================================================
+//
+// File : kvi_memmove.h
+// Creation date : Fri Mar 19 1999 03:15:21 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+#include "kvi_settings.h"
+
+//#undef COMPILE_WITH_SYSTEM_MEMMOVE
+//#define COMPILE_MMX_ASM
+
+#ifndef _KVI_MEMMOVE_CPP_
+
+ #ifdef COMPILE_WITH_SYSTEM_MEMMOVE
+
+ #include <string.h>
+
+ #define kvi_memmove memmove
+ #define kvi_memmoveodd memmove
+ #define kvi_memset memset
+ #define kvi_fastmove memcpy
+ #define kvi_fastmoveodd memcpy
+
+ #else
+
+ #ifdef COMPILE_ON_WINDOWS
+ #error "This stuff should be never compiled on Windows"
+ #endif
+
+ extern void *kvi_memmove(void *dst_ptr,const void *src_ptr,int len);
+ extern void *kvi_memmoveodd(void *dst_ptr,const void *src_ptr,int len);
+ extern void *kvi_memset(void *dst_ptr,char c,int len);
+ // In fastmove the src and dst may not overlap
+
+ #ifdef COMPILE_ix86_ASM
+
+ // WE WANT repnz; movsq\n"!!!
+
+ inline void kvi_fastmove(void * dst_ptr,const void *src_ptr,int len)
+ {
+ __asm__ __volatile__(
+ " cld\n"
+ " shr $1,%0\n"
+ " jnc 1f\n"
+ " movsb\n"
+ "1:\n"
+ " shr $1,%0\n"
+ " jnc 2f\n"
+ " movsw\n"
+ "2:\n"
+ " repnz; movsl\n"
+ : "=c" (len), "=&S" (src_ptr), "=&D" (dst_ptr)
+ : "0" (len), "1" (src_ptr), "2" (dst_ptr)
+ );
+ }
+
+ inline void kvi_fastmoveodd(void * dst_ptr,const void *src_ptr,int len)
+ {
+ __asm__ __volatile__(
+ " cld\n"
+ " shr $2,%0\n"
+ " jnc 1f\n"
+ " movsw\n"
+ "1:\n"
+ " repnz; movsl\n"
+ : "=c" (len), "=&S" (src_ptr), "=&D" (dst_ptr)
+ : "0" (len), "1" (src_ptr), "2" (dst_ptr)
+ );
+ }
+
+ #else // ! COMPILE_ix86_ASM
+
+ extern void kvi_fastmove(void *dst_ptr,const void *src_ptr,int len);
+ extern void kvi_fastmoveodd(void *dst_ptr,const void *src_ptr,int len);
+
+ #endif // !COMPILE_ix86_ASM
+
+ #endif // COMPILE_WITH_SYSTEM_MEMMOVE
+
+#endif // _KVI_MEMMOVE_CPP_
+
+#endif // !_KVI_MEMMOVE_H_
diff --git a/src/kvilib/core/kvi_pointerhashtable.h b/src/kvilib/core/kvi_pointerhashtable.h
new file mode 100644
index 00000000..9066c091
--- /dev/null
+++ b/src/kvilib/core/kvi_pointerhashtable.h
@@ -0,0 +1,999 @@
+#ifndef _KVI_POINTERHASHTABLE_H_
+#define _KVI_POINTERHASHTABLE_H_
+//=================================================================================================
+//
+// File : kvi_pointerhashtable.h
+// Creation date : Sat Jan 12 2008 04:53 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2008 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=================================================================================================
+
+#include "kvi_settings.h"
+#include "kvi_pointerlist.h"
+#include "kvi_string.h"
+#include "kvi_qstring.h"
+#include "kvi_malloc.h"
+#include "kvi_memmove.h"
+
+#include <ctype.h>
+
+///
+/// Hash functions for various data types
+///
+
+inline unsigned int kvi_hash_hash(const char * szKey,bool bCaseSensitive)
+{
+ unsigned int uResult = 0;
+ if(bCaseSensitive)
+ {
+ while(*szKey)
+ {
+ uResult += (unsigned char)(*(szKey));
+ szKey++;
+ }
+ } else {
+ while(*szKey)
+ {
+ uResult += (unsigned char)tolower(*(szKey));
+ szKey++;
+ }
+ }
+ return uResult;
+}
+
+inline bool kvi_hash_key_equal(const char * szKey1,const char * szKey2,bool bCaseSensitive)
+{
+ if(bCaseSensitive)
+ {
+ while(*szKey1 && *szKey2)
+ {
+ if(*szKey1 != *szKey2)
+ return false;
+ szKey1++;
+ szKey2++;
+ }
+ } else {
+ while(*szKey1 && *szKey2)
+ {
+ if(tolower(*szKey1) != tolower(*szKey2))
+ return false;
+ szKey1++;
+ szKey2++;
+ }
+ }
+ return true;
+}
+
+inline void kvi_hash_key_copy(const char * const &szFrom,const char * &szTo,bool bDeepCopy)
+{
+ if(bDeepCopy)
+ {
+ int len = kvi_strLen(szFrom);
+ char * dst = (char *)kvi_malloc(len+1);
+ kvi_fastmove(dst,szFrom,len+1);
+ szTo = dst;
+ } else {
+ szTo = szFrom; // we never modify it anyway
+ }
+}
+
+inline void kvi_hash_key_destroy(const char * &szKey,bool bDeepCopy)
+{
+ if(bDeepCopy)
+ kvi_free(szKey);
+}
+
+inline const char * & kvi_hash_key_default(const char **)
+{
+ static const char * static_null = NULL;
+ return static_null;
+}
+
+inline unsigned int kvi_hash_hash(const KviStr &szKey,bool bCaseSensitive)
+{
+ unsigned int uResult = 0;
+ const char * p = szKey.ptr();
+ if(bCaseSensitive)
+ {
+ while(*p)
+ {
+ uResult += *((const unsigned char *)p);
+ p++;
+ }
+ } else {
+ while(*p)
+ {
+ uResult += tolower(*((const unsigned char *)p));
+ p++;
+ }
+ }
+ return uResult;
+}
+
+inline bool kvi_hash_key_equal(const KviStr &szKey1,const KviStr &szKey2)
+{
+ return kvi_hash_key_equal(szKey1.ptr(),szKey2.ptr());
+}
+
+inline void kvi_hash_key_copy(const KviStr &szFrom,KviStr &szTo,bool)
+{
+ szTo = szFrom;
+}
+
+inline void kvi_hash_key_destroy(KviStr &szKey,bool)
+{
+}
+
+inline const KviStr & kvi_hash_key_default(KviStr *)
+{
+ return KviStr::emptyString();
+}
+
+inline unsigned int kvi_hash_hash(const int &iKey,bool)
+{
+ return (unsigned int)iKey;
+}
+
+inline bool kvi_hash_key_equal(const int &iKey1,const int &iKey2,bool)
+{
+ return iKey1 == iKey2;
+}
+
+inline void kvi_hash_key_copy(const int &iKeyFrom,int &iKeyTo,bool)
+{
+ iKeyTo = iKeyFrom;
+}
+
+inline void kvi_hash_key_destroy(int &iKey,bool)
+{
+}
+
+inline const int & kvi_hash_key_default(int *)
+{
+ static int static_default = 0;
+ return static_default;
+}
+
+inline unsigned int kvi_hash_hash(const unsigned short &iKey,bool)
+{
+ return (unsigned int)iKey;
+}
+
+inline bool kvi_hash_key_equal(const unsigned short &iKey1,const unsigned short &iKey2,bool)
+{
+ return iKey1 == iKey2;
+}
+
+inline void kvi_hash_key_copy(const unsigned short &iKeyFrom,unsigned short &iKeyTo,bool)
+{
+ iKeyTo = iKeyFrom;
+}
+
+inline void kvi_hash_key_destroy(unsigned short &iKey,bool)
+{
+}
+
+inline const unsigned short & kvi_hash_key_default(unsigned short *)
+{
+ static unsigned short static_default = 0;
+ return static_default;
+}
+
+
+inline unsigned int kvi_hash_hash(void * pKey,bool)
+{
+ unsigned char * pBytes = (unsigned char *)&(pKey);
+ unsigned char * pEnd = pBytes + sizeof(void *);
+ unsigned int uSum = 0;
+ while(pBytes < pEnd)
+ {
+ uSum += *pBytes;
+ pBytes++;
+ }
+ return uSum;
+}
+
+inline bool kvi_hash_key_equal(void *pKey1,void *pKey2,bool)
+{
+ return pKey1 == pKey2;
+}
+
+inline void kvi_hash_key_copy(void * const &pKeyFrom,void *&pKeyTo,bool)
+{
+ pKeyTo = pKeyFrom;
+}
+
+inline void kvi_hash_key_destroy(void *iKey,bool)
+{
+}
+
+inline void * & kvi_hash_key_default(void *)
+{
+ static void * static_default = NULL;
+ return static_default;
+}
+
+inline unsigned int kvi_hash_hash(const QString &szKey,bool bCaseSensitive)
+{
+ unsigned int uResult = 0;
+ const QChar * p = KviQString::nullTerminatedArray(szKey);
+ if(!p)return 0;
+ if(bCaseSensitive)
+ {
+ while(p->unicode())
+ {
+ uResult += p->unicode();
+ p++;
+ }
+ } else {
+ while(p->unicode())
+ {
+#ifdef COMPILE_USE_QT4
+ uResult += p->toLower().unicode();
+#else
+ uResult += p->lower().unicode();
+#endif
+ p++;
+ }
+ }
+ return uResult;
+}
+
+inline bool kvi_hash_key_equal(const QString &szKey1,const QString &szKey2,bool bCaseSensitive)
+{
+ if(bCaseSensitive)
+ return KviQString::equalCS(szKey1,szKey2);
+ return KviQString::equalCI(szKey1,szKey2);
+}
+
+inline void kvi_hash_key_copy(const QString &szFrom,QString &szTo,bool)
+{
+ szTo = szFrom;
+}
+
+inline void kvi_hash_key_destroy(QString &szKey,bool)
+{
+}
+
+inline const QString & kvi_hash_key_default(QString *)
+{
+ return KviQString::empty;
+}
+
+template<typename Key,typename T> class KviPointerHashTable;
+template<typename Key,typename T> class KviPointerHashTableIterator;
+
+template<typename Key,typename T> class KviPointerHashTableEntry
+{
+ friend class KviPointerHashTable<Key,T>;
+protected:
+ T * pData;
+ Key hKey;
+public:
+ Key & key(){ return hKey; };
+ T * data(){ return pData; };
+};
+
+///
+///
+/// \class KviPointerHashTable
+/// \brief A fast pointer hash table implementation
+///
+/// A very cool, very fast hash table implementation :P
+///
+/// To use this hash table you need to provide implementations
+/// for the following functions:
+///
+/// \verbatim
+///
+/// unsigned int kvi_hash_hash(const Key &hKey,bool bCaseSensitive);
+/// bool kvi_hash_key_equal(const Key &hKey1,const Key &hKey2,bool bCaseSensitive);
+/// void kvi_hash_key_copy(const Key &hKeyFrom,Key &hKeyTo,bool bDeepCopy);
+/// void kvi_hash_key_destroy(Key &hKey,bool bIsDeepCopy);
+/// const Key & kvi_hash_key_default(Key *);
+///
+/// \endverbatim
+///
+/// Implementations for the most likey Key data types are provided below.
+/// KviPointerHashTable will automagically work with const char *,QString,KviStr
+/// and integer types as keys.
+///
+/// For string Key types, the hash table may or may not be case sensitive.
+/// For other Key types the case sensitive flag has no meaning and will
+/// (hopefully) be optimized out by the compiler.
+///
+/// For pointer based keys the hash table may or may not mantain deep copies
+/// of Key data. For example, with char * keys, if deep copying is enabled
+/// then a private copy of the string data will be mantained. With deep
+/// copying disabled only char * pointers will be kept. For types
+/// that do not have meaning of deep copy the deep copying code will
+/// (hopefully) be optimized out by the compiler.
+///
+/// The hashtable mantains an array of KviPointerList based buckets.
+/// The number of buckets may be specified by the application user
+/// and does NOT need to be a prime number. Yet better to have it a power
+/// of two so the memory allocation routines will feel better and are
+/// less likely to waste space.
+///
+template<class Key,class T> class KviPointerHashTable
+{
+ friend class KviPointerHashTableIterator<Key,T>;
+protected:
+ KviPointerList<KviPointerHashTableEntry<Key,T> > ** m_pDataArray;
+ bool m_bAutoDelete;
+ unsigned int m_uSize;
+ unsigned int m_uCount;
+ bool m_bCaseSensitive;
+ bool m_bDeepCopyKeys;
+ unsigned int m_uIteratorIdx;
+public:
+ ///
+ /// Returns the item associated to the key hKey
+ /// or NULL if no such item exists in the hash table.
+ /// Places the hash table iterator at the position
+ /// of the item found.
+ ///
+ T * find(const Key & hKey)
+ {
+ m_uIteratorIdx = kvi_hash_hash(hKey,m_bCaseSensitive) % m_uSize;
+ if(!m_pDataArray[m_uIteratorIdx])return 0;
+ for(KviPointerHashTableEntry<Key,T> * e = m_pDataArray[m_uIteratorIdx]->first();e;e = m_pDataArray[m_uIteratorIdx]->next())
+ {
+ if(kvi_hash_key_equal(e->hKey,hKey,m_bCaseSensitive))return (T *)e->pData;
+ }
+ return 0;
+ }
+
+ ///
+ /// Returns the item associated to the key hKey
+ /// or NULL if no such item exists in the hash table.
+ /// Places the hash table iterator at the position
+ /// of the item found. This is an alias to find().
+ ///
+ T * operator[](const Key & hKey)
+ {
+ return find(hKey);
+ }
+
+ ///
+ /// Returns the number of items in this hash table
+ ///
+ unsigned int count() const
+ {
+ return m_uCount;
+ }
+
+ ///
+ /// Returns true if the hash table is empty
+ ///
+ bool isEmpty() const
+ {
+ return m_uCount == 0;
+ }
+
+ ///
+ /// Inserts the item pData at the position specified by the key hKey.
+ /// Replaces any previous item with the same key
+ /// The replaced item is deleted if autodelete is enabled.
+ /// The hash table iterator is placed at the newly inserted item.
+ ///
+ void insert(const Key & hKey,T * pData)
+ {
+ if(!pData)return;
+ unsigned int uEntry = kvi_hash_hash(hKey,m_bCaseSensitive) % m_uSize;
+ if(!m_pDataArray[uEntry])m_pDataArray[uEntry] = new KviPointerList<KviPointerHashTableEntry<Key,T> >(true);
+ for(KviPointerHashTableEntry<Key,T> * e = m_pDataArray[uEntry]->first();e;e = m_pDataArray[uEntry]->next())
+ {
+ if(kvi_hash_key_equal(e->hKey,hKey,m_bCaseSensitive))
+ {
+ if(!m_bCaseSensitive)
+ {
+ // must change the key too
+ kvi_hash_key_destroy(e->hKey,m_bDeepCopyKeys);
+ kvi_hash_key_copy(hKey,e->hKey,m_bDeepCopyKeys);
+ }
+ if(m_bAutoDelete)delete e->pData;
+ e->pData = pData;
+ return;
+ }
+ }
+ KviPointerHashTableEntry<Key,T> * n = new KviPointerHashTableEntry<Key,T>;
+ kvi_hash_key_copy(hKey,n->hKey,m_bDeepCopyKeys);
+ n->pData = pData;
+ m_pDataArray[uEntry]->append(n);
+ m_uCount++;
+ }
+
+ ///
+ /// Inserts the item pData at the position specified by the key hKey.
+ /// Replaces any previous item with the same key
+ /// The replaced item is deleted if autodelete is enabled.
+ /// The hash table iterator is placed at the newly inserted item.
+ /// This is just an alias to insert() with a different name.
+ ///
+ void replace(const Key & hKey,T * pData)
+ {
+ insert(hKey,pData);
+ }
+
+ ///
+ /// Removes the item pointer associated to the key hKey, if such an item
+ /// exists in the hash table. The item is deleted if autodeletion
+ /// is enabled. Returns true if the item was found and removed and false if it wasn't found.
+ /// Invalidates the hash table iterator.
+ ///
+ bool remove(const Key & hKey)
+ {
+ unsigned int uEntry = kvi_hash_hash(hKey,m_bCaseSensitive) % m_uSize;
+ if(!m_pDataArray[uEntry])return false;
+ for(KviPointerHashTableEntry<Key,T> * e = m_pDataArray[uEntry]->first();e;e = m_pDataArray[uEntry]->next())
+ {
+ if(kvi_hash_key_equal(e->hKey,hKey,m_bCaseSensitive))
+ {
+ kvi_hash_key_destroy(e->hKey,m_bDeepCopyKeys);
+ if(m_bAutoDelete)delete ((T *)(e->pData));
+ m_pDataArray[uEntry]->removeRef(e);
+ if(m_pDataArray[uEntry]->isEmpty())
+ {
+ delete m_pDataArray[uEntry];
+ m_pDataArray[uEntry] = 0;
+ }
+ m_uCount--;
+ return true;
+ }
+ }
+ return false;
+ }
+
+ ///
+ /// Removes the first occurence of the item pointer pRef. The item is deleted if autodeletion
+ /// is enabled. Returns true if the pointer was found and false otherwise
+ /// Invalidates the hash table iterator.
+ ///
+ bool removeRef(const T * pRef)
+ {
+ for(unsigned int i=0;i<m_uSize;i++)
+ {
+ if(m_pDataArray[i])
+ {
+ for(KviPointerHashTableEntry<Key,T> * e = m_pDataArray[i]->first();e;e = m_pDataArray[i]->next())
+ {
+ if(e->pData == pRef)
+ {
+ kvi_hash_key_destroy(e->hKey,m_bDeepCopyKeys);
+ if(m_bAutoDelete)delete ((T *)(e->pData));
+ m_pDataArray[i]->removeRef(e);
+ if(m_pDataArray[i]->isEmpty())
+ {
+ delete m_pDataArray[i];
+ m_pDataArray[i] = 0;
+ }
+ m_uCount--;
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ ///
+ /// Removes all the items from the hash table.
+ /// The items are deleted if autodeletion is enabled.
+ /// Invalidates the hash table iterator.
+ ///
+ void clear()
+ {
+ for(unsigned int i=0;i<m_uSize;i++)
+ {
+ if(m_pDataArray[i])
+ {
+ for(KviPointerHashTableEntry<Key,T> * e = m_pDataArray[i]->first();e;e = m_pDataArray[i]->next())
+ {
+ kvi_hash_key_destroy(e->hKey,m_bDeepCopyKeys);
+ if(m_bAutoDelete)
+ delete ((T *)(e->pData));
+ }
+ delete m_pDataArray[i];
+ m_pDataArray[i] = 0;
+ }
+ }
+ m_uCount = 0;
+ }
+
+ ///
+ /// Searches for the item pointer pRef and returns
+ /// it's hash table entry, if found, and NULL otherwise.
+ /// The hash table iterator is placed at the item found.
+ ///
+ KviPointerHashTableEntry<Key,T> * findRef(const T * pRef)
+ {
+ for(m_uIteratorIdx = 0;m_uIteratorIdx<m_uSize;m_uIteratorIdx++)
+ {
+ if(m_pDataArray[m_uIteratorIdx])
+ {
+ for(KviPointerHashTableEntry<Key,T> * e = m_pDataArray[m_uIteratorIdx]->first();e;e = m_pDataArray[m_uIteratorIdx]->next())
+ {
+ if(e->pData == pRef)return e;
+ }
+ }
+ }
+ return 0;
+ }
+
+ ///
+ /// Returns the entry pointed by the hash table iterator.
+ /// This function must be preceeded by a call to firstEntry(), first()
+ /// or findRef().
+ ///
+ KviPointerHashTableEntry<Key,T> * currentEntry()
+ {
+ if(m_uIteratorIdx >= m_uSize)return 0;
+ if(m_pDataArray[m_uIteratorIdx])return m_pDataArray[m_uIteratorIdx]->current();
+ return 0;
+ }
+
+ ///
+ /// Places the hash table iterator at the first entry
+ /// and returns it.
+ ///
+ KviPointerHashTableEntry<Key,T> * firstEntry()
+ {
+ m_uIteratorIdx = 0;
+ while(m_uIteratorIdx < m_uSize && (!m_pDataArray[m_uIteratorIdx]))
+ {
+ m_uIteratorIdx++;
+ }
+ if(m_uIteratorIdx == m_uSize)return 0;
+ return m_pDataArray[m_uIteratorIdx]->first();
+ }
+
+ ///
+ /// Places the hash table iterator at the next entry
+ /// and returns it.
+ /// This function must be preceeded by a call to firstEntry(), first()
+ /// or findRef().
+ ///
+ KviPointerHashTableEntry<Key,T> * nextEntry()
+ {
+ if(m_uIteratorIdx >= m_uSize)return 0;
+
+ if(m_uIteratorIdx < m_uSize)
+ {
+ KviPointerHashTableEntry<Key,T> * t = m_pDataArray[m_uIteratorIdx]->next();
+ if(t)return t;
+ }
+
+ m_uIteratorIdx++;
+
+ while(m_uIteratorIdx < m_uSize && (!m_pDataArray[m_uIteratorIdx]))
+ {
+ m_uIteratorIdx++;
+ }
+
+ if(m_uIteratorIdx == m_uSize)return 0;
+
+ return m_pDataArray[m_uIteratorIdx]->first();
+
+ }
+
+ ///
+ /// Returns the data value pointer pointed by the hash table iterator.
+ /// This function must be preceeded by a call to firstEntry(), first()
+ /// or findRef().
+ ///
+ T * current()
+ {
+ if(m_uIteratorIdx >= m_uSize)return 0;
+ if(m_pDataArray[m_uIteratorIdx])
+ {
+ KviPointerHashTableEntry<Key,T> * e = m_pDataArray[m_uIteratorIdx]->current();
+ if(!e)return 0;
+ return e->data();
+ }
+ return 0;
+ }
+
+ ///
+ /// Returns the key pointed by the hash table iterator.
+ /// This function must be preceeded by a call to firstEntry(), first()
+ /// or findRef().
+ ///
+ const Key & currentKey()
+ {
+ if(m_uIteratorIdx >= m_uSize)return kvi_hash_key_default(((Key *)NULL));
+ if(m_pDataArray[m_uIteratorIdx])
+ {
+ KviPointerHashTableEntry<Key,T> * e = m_pDataArray[m_uIteratorIdx]->current();
+ if(!e)return kvi_hash_key_default(((Key *)NULL));
+ return e->key();
+ }
+ return kvi_hash_key_default(((Key *)NULL));
+ }
+
+ ///
+ /// Places the hash table iterator at the first entry
+ /// and returns the associated data value pointer.
+ ///
+ T * first()
+ {
+ m_uIteratorIdx = 0;
+ while(m_uIteratorIdx < m_uSize && (!m_pDataArray[m_uIteratorIdx]))
+ {
+ m_uIteratorIdx++;
+ }
+ if(m_uIteratorIdx == m_uSize)return 0;
+ KviPointerHashTableEntry<Key,T> * e = m_pDataArray[m_uIteratorIdx]->first();
+ if(!e)return 0;
+ return e->data();
+ }
+
+ ///
+ /// Places the hash table iterator at the next entry
+ /// and returns the associated data value pointer.
+ /// This function must be preceeded by a call to firstEntry(), first()
+ /// or findRef().
+ ///
+ T * next()
+ {
+ if(m_uIteratorIdx >= m_uSize)return 0;
+
+ if(m_uIteratorIdx < m_uSize)
+ {
+ KviPointerHashTableEntry<Key,T> * t = m_pDataArray[m_uIteratorIdx]->next();
+ if(t)
+ {
+ return t->data();
+ }
+ }
+
+ m_uIteratorIdx++;
+
+ while(m_uIteratorIdx < m_uSize && (!m_pDataArray[m_uIteratorIdx]))
+ {
+ m_uIteratorIdx++;
+ }
+
+ if(m_uIteratorIdx == m_uSize)return 0;
+
+ KviPointerHashTableEntry<Key,T> * e = m_pDataArray[m_uIteratorIdx]->first();
+ if(!e)return 0;
+ return e->data();
+ }
+
+ ///
+ /// Removes all items in the hash table and then
+ /// makes a complete shallow copy of the data contained in t.
+ /// The removed items are deleted if autodeletion is enabled.
+ /// The hash table iterator is invalidated.
+ /// Does not change autodelete flag: make sure you not delete the items twice :)
+ ///
+ void copyFrom(KviPointerHashTable<Key,T> &t)
+ {
+ clear();
+ for(KviPointerHashTableEntry<Key,T> * e = t.firstEntry();e;e = t.nextEntry())
+ insert(e->key(),e->data());
+ }
+
+ ///
+ /// Inserts a complete shallow copy of the data contained in t.
+ /// The hash table iterator is invalidated.
+ ///
+ void insert(KviPointerHashTable<Key,T> &t)
+ {
+ for(KviPointerHashTableEntry<Key,T> * e = t.firstEntry();e;e = t.nextEntry())
+ insert(e->key(),e->data());
+ }
+
+ ///
+ /// Enables or disabled the autodeletion feature.
+ /// Items are deleted upon removal when the feature is enabled.
+ ///
+ void setAutoDelete(bool bAutoDelete)
+ {
+ m_bAutoDelete = bAutoDelete;
+ }
+
+ ///
+ /// Creates an empty hash table.
+ /// Automatic deletion is enabled.
+ ///
+ /// \param uSize The number of hash buckets: does NOT necesairly need to be prime
+ /// \param bCaseSensitive Are the key comparisons case sensitive ?
+ /// \param Do we need to mantain deep copies of keys ?
+ ///
+ KviPointerHashTable(unsigned int uSize = 32,bool bCaseSensitive = true,bool bDeepCopyKeys = true)
+ {
+ m_uCount = 0;
+ m_bCaseSensitive = bCaseSensitive;
+ m_bAutoDelete = true;
+ m_bDeepCopyKeys = bDeepCopyKeys;
+ m_uSize = uSize > 0 ? uSize : 32;
+ m_pDataArray = new KviPointerList<KviPointerHashTableEntry<Key,T> > *[m_uSize];
+ for(unsigned int i=0;i<m_uSize;i++)m_pDataArray[i] = NULL;
+ }
+
+ ///
+ /// First creates an empty hash table
+ /// and then inserts a copy of all the item pointers present in t.
+ /// The autodelete feature is automatically disabled (take care!).
+ ///
+ KviPointerHashTable(KviPointerHashTable<Key,T> &t)
+ {
+ m_uCount = 0;
+ m_bAutoDelete = false;
+ m_bCaseSensitive = t.m_bCaseSensitive;
+ m_bDeepCopyKeys = t.m_bDeepCopyKeys;
+ m_uSize = t.m_uSize;
+ m_pDataArray = new KviPointerList<KviPointerHashTableEntry<Key,T> > *[m_uSize];
+ for(unsigned int i=0;i<m_uSize;i++)m_pDataArray[i] = NULL;
+ copyFrom(t);
+ }
+
+ ///
+ /// Destroys the hash table and all the items contained within.
+ /// Items are deleted if autodeletion is enabled.
+ ///
+ ~KviPointerHashTable()
+ {
+ clear();
+ delete [] m_pDataArray;
+ }
+};
+
+template<typename Key,typename T> class KviPointerHashTableIterator
+{
+protected:
+ const KviPointerHashTable<Key,T> * m_pHashTable;
+ unsigned int m_uEntryIndex;
+ KviPointerListIterator<KviPointerHashTableEntry<Key,T> > * m_pIterator;
+public:
+ ///
+ /// Creates an iterator copy.
+ /// The new iterator points exactly to the item pointed by src.
+ ///
+ void operator = (const KviPointerHashTableIterator<Key,T> &src)
+ {
+ m_pHashTable = src.m_pHashTable;
+ m_uEntryIndex = src.m_uEntryIndex;
+ if(src.m_pIterator)
+ m_pIterator = new KviPointerListIterator<KviPointerHashTableEntry<Key,T> >(*(src.m_pIterator));
+ else
+ m_pIterator = NULL;
+ }
+
+ ///
+ /// Moves the iterator to the first element of the hash table.
+ /// Returns true in case of success or false if the hash table is empty.
+ ///
+ bool moveFirst()
+ {
+ if(m_pIterator)
+ {
+ delete m_pIterator;
+ m_pIterator = NULL;
+ }
+
+ m_uEntryIndex = 0;
+ while((m_uEntryIndex < m_pHashTable->m_uSize) && (!(m_pHashTable->m_pDataArray[m_uEntryIndex])))
+ {
+ m_uEntryIndex++;
+ }
+
+ if(m_uEntryIndex == m_pHashTable->m_uSize)
+ return false;
+
+ m_pIterator = new KviPointerListIterator<KviPointerHashTableEntry<Key,T> >(*(m_pHashTable->m_pDataArray[m_uEntryIndex]));
+ bool bRet = m_pIterator->moveFirst();
+ if(!bRet)
+ {
+ delete m_pIterator;
+ m_pIterator = NULL;
+ }
+ return bRet;
+ }
+
+ ///
+ /// Moves the iterator to the last element of the hash table.
+ /// Returns true in case of success or false if the hash table is empty.
+ ///
+ bool moveLast()
+ {
+ if(m_pIterator)
+ {
+ delete m_pIterator;
+ m_pIterator = NULL;
+ }
+
+ m_uEntryIndex = m_pHashTable->m_uSize;
+ while(m_uEntryIndex > 0)
+ {
+ m_uEntryIndex--;
+ if(m_pHashTable->m_pDataArray[m_uEntryIndex])
+ {
+ m_pIterator = new KviPointerListIterator<KviPointerHashTableEntry<Key,T> >(*(m_pHashTable->m_pDataArray[m_uEntryIndex]));
+ bool bRet = m_pIterator->moveLast();
+ if(!bRet)
+ {
+ delete m_pIterator;
+ m_pIterator = NULL;
+ }
+ return bRet;
+ }
+ }
+ return false;
+ }
+
+ ///
+ /// Moves the iterator to the next element of the hash table.
+ /// The iterator must be actually valid for this function to work.
+ /// Returns true in case of success or false if there is no next item.
+ ///
+ bool moveNext()
+ {
+ if(!m_pIterator)
+ return false;
+ if(m_pIterator->moveNext())
+ return true;
+ if(m_pIterator)
+ {
+ delete m_pIterator;
+ m_pIterator = NULL;
+ }
+ m_uEntryIndex++;
+ while((m_uEntryIndex < m_pHashTable->m_uSize) && (!(m_pHashTable->m_pDataArray[m_uEntryIndex])))
+ {
+ m_uEntryIndex++;
+ }
+ if(m_uEntryIndex == m_pHashTable->m_uSize)
+ return false;
+ m_pIterator = new KviPointerListIterator<KviPointerHashTableEntry<Key,T> >(*(m_pHashTable->m_pDataArray[m_uEntryIndex]));
+ bool bRet = m_pIterator->moveFirst();
+ if(!bRet)
+ {
+ delete m_pIterator;
+ m_pIterator = NULL;
+ }
+ return bRet;
+ }
+
+ ///
+ /// Moves the iterator to the next element of the hash table.
+ /// The iterator must be actually valid for this function to work.
+ /// Returns true in case of success or false if there is no next item.
+ /// This is just an alias to moveNext().
+ ///
+ bool operator ++()
+ {
+ return moveNext();
+ }
+
+ ///
+ /// Moves the iterator to the previous element of the hash table.
+ /// The iterator must be actually valid for this function to work.
+ /// Returns true in case of success or false if there is no previous item.
+ ///
+ bool movePrev()
+ {
+ if(!m_pIterator)
+ return false;
+ if(m_pIterator->movePrev())
+ return true;
+ if(m_pIterator)
+ {
+ delete m_pIterator;
+ m_pIterator = NULL;
+ }
+ if(m_uEntryIndex >= m_pHashTable->m_uSize)
+ return false;
+ while(m_uEntryIndex > 0)
+ {
+ m_uEntryIndex--;
+ if(m_pHashTable->m_pDataArray[m_uEntryIndex])
+ {
+ m_pIterator = new KviPointerListIterator<KviPointerHashTableEntry<Key,T> >(*(m_pHashTable->m_pDataArray[m_uEntryIndex]));
+ bool bRet = m_pIterator->moveLast();
+ if(!bRet)
+ {
+ delete m_pIterator;
+ m_pIterator = NULL;
+ }
+ return bRet;
+ }
+ }
+ return false;
+ }
+
+
+ ///
+ /// Moves the iterator to the previous element of the hash table.
+ /// The iterator must be actually valid for this function to work.
+ /// Returns true in case of success or false if there is no previous item.
+ /// This is just an alias to movePrev() with a different name.
+ ///
+ bool operator --()
+ {
+ return movePrev();
+ }
+
+ ///
+ /// Returs the value pointed by the iterator
+ /// or a default constructed value if the iterator is not valid.
+ /// This is an alias to operator *() with just a different name.
+ ///
+ T * current() const
+ {
+ return m_pIterator ? m_pIterator->current()->data() : NULL;
+ }
+
+ ///
+ /// Returs the value pointed by the iterator
+ /// or a default constructed value if the iterator is not valid.
+ /// This is an alias to current() with just a different name.
+ ///
+ T * operator *() const
+ {
+ return m_pIterator ? m_pIterator->current()->data() : NULL;
+ }
+
+ ///
+ /// Returs the key pointed by the iterator
+ /// or a default constructed key if the iterator is not valid.
+ ///
+ const Key & currentKey() const
+ {
+ return m_pIterator ? m_pIterator->current()->key() : kvi_hash_key_default(((Key *)NULL));
+ }
+
+ ///
+ /// Moves the iterator to the first element of the hash table.
+ /// Returns the first item found or NULL if the hash table is empty.
+ ///
+ T * toFirst()
+ {
+ if(!moveFirst())
+ return NULL;
+ return current();
+ }
+public:
+ ///
+ /// Creates an iterator pointing to the first item in the hash table, if any.
+ ///
+ KviPointerHashTableIterator(const KviPointerHashTable<Key,T> &hTable)
+ {
+ m_pHashTable = &hTable;
+ m_uEntryIndex = 0;
+ m_pIterator = NULL;
+ moveFirst();
+ }
+
+ ///
+ /// Destroys the iterator
+ ///
+ ~KviPointerHashTableIterator()
+ {
+ if(m_pIterator)
+ delete m_pIterator;
+ }
+};
+
+
+
+
+#endif //_KVI_POINTERHASHTABLE_H_
diff --git a/src/kvilib/core/kvi_pointerlist.h b/src/kvilib/core/kvi_pointerlist.h
new file mode 100644
index 00000000..381780c8
--- /dev/null
+++ b/src/kvilib/core/kvi_pointerlist.h
@@ -0,0 +1,1069 @@
+#ifndef _KVI_POINTERLIST_H_
+#define _KVI_POINTERLIST_H_
+//=================================================================================================
+//
+// File : kvi_pointerlist.h
+// Creation date : Tue Jul 6 1999 14:52:20 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=================================================================================================
+//=============================================================================
+//
+// C++ Template based double linked pointer list class
+// Original ss_list.h Created on 10 Dec 2001
+// Copyright (C) 2001-2007 Szymon Stefanek (pragma at kvirc dot net)
+// Added to KVIrc on 02 Jan 2008.
+//
+//=============================================================================
+
+// Qt changes the collection classes too much and too frequently.
+// I think we need to be independent of that to the maximum degree possible.
+// That's why we have our own fast pointer list class.
+// This does not depend on Qt AT ALL and has an interface similar
+// to the Qt<=3.x series. The pointer lists with the autodelete
+// feature was great and I don't completly understand why they have
+// been removed from Qt4 in favor of the value based non-autodeleting
+// lists... anyway: here we go :)
+
+#include "kvi_settings.h"
+
+template<typename T> class KviPointerList;
+template<typename T> class KviPointerListIterator;
+
+#ifndef NULL
+ #define NULL 0
+#endif
+
+///
+/// \internal
+///
+class KviPointerListNode
+{
+public:
+ KviPointerListNode * m_pPrev;
+ void * m_pData;
+ KviPointerListNode * m_pNext;
+};
+
+///
+/// \class KviPointerListIterator
+/// \brief A fast KviPointerList iterator.
+///
+/// This class allows traversing the list sequentially.
+/// Multilpe iterators can traverse the list at the same time.
+///
+/// Iteration example 1:
+///
+/// \verbatim
+/// KviPointerListIterator<T> it(list);
+/// for(bool b = it.moveFirst();b;b = it.moveNext())
+/// {
+/// T * pData = it.data();
+/// doSomethingWithData(pData);
+/// }
+/// \endverbatim
+///
+/// Iteration example 2:
+///
+/// \verbatim
+/// KviPointerListIterator<T> it(list);
+/// if(it.moveFirst())
+/// {
+/// do {
+/// T * pData = it.data();
+/// doSomethingWithData(pData);
+/// } while(it.moveNext());
+/// }
+/// \endverbatim
+///
+/// Iteration example 3:
+///
+/// \verbatim
+/// KviPointerListIterator<T> it(list.iteratorAt(10));
+/// if(it.isValid())
+/// {
+/// do {
+/// T * pData = it.data();
+/// doSomethingWithData(pData);
+/// while(it.movePrev());
+/// }
+/// \endverbatim
+///
+/// Please note that you must NOT remove any item from
+/// the list when using the iterators. An iterator pointing
+/// to a removed item will crash your application if you use it.
+/// The following code will NOT work (and crash):
+///
+/// \verbatim
+/// KviPointerList<T> l;
+/// l.append(new KviStr("x"));
+/// l.append(new KviStr("y"));
+/// KviPointerListIterator<T> it(l);
+/// it.moveFirst();
+/// l.removeFirst();
+/// KviStr * tmp = it.data(); <-- this will crash
+/// \endverbatim
+///
+/// In the rare cases in that you need to remove items
+/// while traversing the list you should put them
+/// in a temporary list and remove them after the iteration.
+///
+/// I've choosen this way because usually you don't modify
+/// the list while traversing it and a fix for this
+/// would add a constant overhead to several list operation.
+/// You just must take care of it yourself.
+///
+/// \warning This class is not thread safe by itself.
+///
+template<typename T> class KviPointerListIterator
+{
+protected:
+ KviPointerList<T> * m_pList;
+ KviPointerListNode * m_pNode;
+public:
+ ///
+ /// Creates an iterator copy.
+ /// The new iterator points exactly to the item pointed by src.
+ ///
+ KviPointerListIterator(const KviPointerListIterator<T> &src)
+ {
+ m_pList = src.m_pList;
+ m_pNode = src.m_pNode;
+ }
+
+ ///
+ /// Creates an iterator for the list l.
+ /// The iterator points to the first list item, if any.
+ ///
+ KviPointerListIterator(KviPointerList<T> &l)
+ {
+ m_pList = (KviPointerList<T> *)&l;
+ m_pNode = m_pList->m_pHead;
+ }
+
+ ///
+ /// Creates an iterator for the list l.
+ /// The iterator points to the specified list node.
+ ///
+ KviPointerListIterator(KviPointerList<T> &l,KviPointerListNode * pNode)
+ {
+ m_pList = (KviPointerList<T> *)&l;
+ m_pNode = pNode;
+ }
+
+ ///
+ /// Creates an iterator copy.
+ /// The new iterator points exactly to the item pointed by src.
+ ///
+ void operator = (const KviPointerListIterator<T> &src)
+ {
+ m_pList = src.m_pList;
+ m_pNode = src.m_pNode;
+ }
+public:
+ ///
+ /// Moves the iterator to the first element of the list.
+ /// Returns true in case of success or false if the list is empty.
+ ///
+ bool moveFirst()
+ {
+ m_pNode = m_pList->m_pHead;
+ return m_pNode != NULL;
+ }
+
+ ///
+ /// Moves the iterator to the last element of the list.
+ /// Returns true in case of success or false if the list is empty.
+ ///
+ bool moveLast()
+ {
+ m_pNode = m_pList->m_pTail;
+ return m_pNode != NULL;
+ }
+
+ ///
+ /// Moves the iterator to the next element of the list.
+ /// The iterator must be actually valid for this function to work.
+ /// Returns true in case of success or false if there is no next item.
+ ///
+ bool moveNext()
+ {
+ if(!m_pNode)return false;
+ m_pNode = m_pNode->m_pNext;
+ return m_pNode != NULL;
+ }
+
+ ///
+ /// Moves the iterator to the next element of the list.
+ /// The iterator must be actually valid for this operator to work.
+ /// Returns true in case of success or false if there is no next item.
+ /// This is just a convenient alias to moveNext().
+ ///
+ bool operator ++()
+ {
+ if(!m_pNode)return false;
+ m_pNode = m_pNode->m_pNext;
+ return m_pNode != NULL;
+ }
+
+ ///
+ /// Moves the iterator to the previous element of the list.
+ /// The iterator must be actually valid for this function to work.
+ /// Returns true in case of success or false if there is no previous item.
+ ///
+ bool movePrev()
+ {
+ if(!m_pNode)return false;
+ m_pNode = m_pNode->m_pPrev;
+ return m_pNode != NULL;
+ }
+
+ ///
+ /// Moves the iterator to the previous element of the list.
+ /// The iterator must be actually valid for this operator to work.
+ /// Returns true in case of success or false if there is no previous item.
+ /// This is just a convenient alias to movePrev().
+ ///
+ bool operator --()
+ {
+ if(!m_pNode)return false;
+ m_pNode = m_pNode->m_pPrev;
+ return m_pNode != NULL;
+ }
+
+ ///
+ /// Returs the value pointed by the iterator
+ /// or NULL if the iterator is not valid.
+ ///
+ T * current()
+ {
+ return m_pNode ? (T *)(m_pNode->m_pData) : NULL;
+ }
+
+ ///
+ /// Returs the value pointed by the iterator
+ /// or NULL if the iterator is not valid.
+ /// This is just an alias to current().
+ ///
+ T * operator *()
+ {
+ return m_pNode ? (T *)(m_pNode->m_pData) : NULL;
+ }
+
+ ///
+ /// Returns true if this iterator points to a valid
+ /// element of the list and false otherwise.
+ ///
+ bool isValid()
+ {
+ return m_pNode != NULL;
+ }
+};
+
+///
+/// \class KviPointerList
+/// \brief A template double linked list of pointers.
+///
+/// The main advantage of this type of list is speed.
+/// Insertion of pointers is very fast when compared
+/// to the typical "copy constructor" call used
+/// in the "plain type" template list implementations.
+///
+/// Iterating over pointers is also very fast and this
+/// class contains an internal iterator that allows to
+/// write loops in a compact and clean way.
+/// See the first(), next(), current() and findRef()
+/// functions for the description of this feature.
+///
+/// There is also a non-const external iterator
+/// that you can use to traverse the list concurrently.
+/// There is no const iterator (and no const access methods)
+/// since the list provides the autoDelete() method
+/// which vould implicitly violate constness.
+/// If you have to deal with const objects then
+/// you need to use a QList instead.
+///
+/// Your objects also do not need to support copy constructors
+/// or >= operators. This class will work fine without them
+/// as opposed to a plain QList.
+///
+/// This class also supports automatic deletion of the inseted items.
+/// See the setAutoDelete() and autoDelete() members for the
+/// description of the feature.
+///
+/// Typcal usage:
+///
+/// \verbatim
+/// KviPointerList<MyClass> list();
+/// list.append(new MyClass());
+/// list.append(new MyClass());
+/// ...
+/// for(MyClass * c = list.first();c;c = list.next())doSomethingWith(c);
+/// delete list; // autodelete is set to true in the constructor
+/// \endverbatim
+///
+/// \warning This class is absolutely NOT thread safe. You must
+/// protect concurrent access from multiple threads by
+/// using an external synchronization tool (such as KviMutex).
+///
+template<typename T> class KviPointerList
+{
+ friend class KviPointerListIterator<T>;
+protected:
+ bool m_bAutoDelete; //< do we automatically delete items when they are removed ?
+
+ KviPointerListNode * m_pHead; //< our list head pointer (NULL if there are no items in the list)
+ KviPointerListNode * m_pTail; //< our list tail
+ KviPointerListNode * m_pAux; //< our iteration pointer
+
+ unsigned int m_uCount; //< the count of items in the list
+protected:
+ ///
+ /// \internal
+ ///
+ /// inserts the item d before the item ref or at the beginning
+ /// if ref is not found in the list
+ /// also sets the current iteration pointer to the newly inserted item
+ ///
+ void insertBeforeSafe(KviPointerListNode * ref,const T * d)
+ {
+ m_pAux = ref;
+ KviPointerListNode * n = new KviPointerListNode;
+ n->m_pPrev = m_pAux->m_pPrev;
+ n->m_pNext = m_pAux;
+ if(m_pAux->m_pPrev)
+ {
+ m_pAux->m_pPrev->m_pNext = n;
+ } else {
+ m_pHead = n;
+ }
+ m_pAux->m_pPrev = n;
+ n->m_pData = (void *)d;
+ m_uCount++;
+ }
+
+ ///
+ /// \internal
+ ///
+ /// Grabs the first element from the list src
+ /// and puts it as the first element of this list.
+ ///
+ void grabFirstAndPrepend(KviPointerList<T> * src)
+ {
+ KviPointerListNode * pNewHead = src->m_pHead;
+ if(!pNewHead)
+ return;
+
+ if(pNewHead->m_pNext)
+ {
+ src->m_pHead = pNewHead->m_pNext;
+ src->m_pHead->m_pPrev = NULL;
+ } else {
+ src->m_pHead = NULL;
+ src->m_pTail = NULL;
+ }
+
+ if(m_pHead)
+ {
+ m_pHead->m_pPrev = pNewHead;
+ pNewHead->m_pNext = m_pHead;
+ m_pHead = pNewHead;
+ } else {
+ m_pHead = pNewHead;
+ m_pTail = pNewHead;
+ m_pHead->m_pNext = NULL;
+ }
+ m_uCount++;
+ src->m_uCount--;
+ }
+
+ ///
+ /// \internal
+ ///
+ /// Removes the current iteration item assuming that it is valid.
+ ///
+ void removeCurrentSafe()
+ {
+ if(m_pAux->m_pPrev)
+ m_pAux->m_pPrev->m_pNext = m_pAux->m_pNext;
+ else
+ m_pHead = m_pAux->m_pNext;
+ if(m_pAux->m_pNext)
+ m_pAux->m_pNext->m_pPrev = m_pAux->m_pPrev;
+ else
+ m_pTail = m_pAux->m_pPrev;
+ const T * pAuxData = (const T *)(m_pAux->m_pData);
+ delete m_pAux;
+ m_pAux = NULL;
+ m_uCount--;
+ if(m_bAutoDelete)
+ delete pAuxData; // this can cause recursion, so do it at the end
+ }
+
+public:
+ ///
+ /// Inserts the list src inside this list
+ /// by respecting the sort order.
+ /// The src list elements are removed.
+ ///
+ void merge(KviPointerList<T> * src)
+ {
+ m_pAux = m_pHead;
+ KviPointerListNode * n = src->m_pHead;
+ m_uCount += src->m_uCount;
+ while(m_pAux && n)
+ {
+ if(kvi_compare((const T *)(m_pAux->m_pData),(const T *)(n->m_pData)) > 0)
+ {
+ // our element is greater, n->m_pData goes first
+ KviPointerListNode * pNext = n->m_pNext;
+ n->m_pPrev = m_pAux->m_pPrev; // his prev becomes
+ n->m_pNext = m_pAux;
+ if(m_pAux->m_pPrev)
+ m_pAux->m_pPrev->m_pNext = n;
+ else
+ m_pHead = n;
+ m_pAux->m_pPrev = n;
+ n = pNext;
+ } else {
+ // that element is greater
+ m_pAux = m_pAux->m_pNext;
+ }
+ }
+ if(n)
+ {
+ // last items to append
+ if(m_pTail)
+ {
+ m_pTail->m_pNext = n;
+ n->m_pPrev = m_pTail;
+ } else {
+ m_pHead = n;
+ m_pTail = n;
+ n->m_pPrev = NULL;
+ }
+ m_pTail = src->m_pTail;
+ }
+
+ src->m_pHead = NULL;
+ src->m_pTail = NULL;
+ src->m_uCount = 0;
+ }
+
+ void swap(KviPointerList<T> * src)
+ {
+ KviPointerListNode * n = m_pHead;
+ m_pHead = src->m_pHead;
+ src->m_pHead = n;
+ n = m_pTail;
+ m_pTail = src->m_pTail;
+ src->m_pTail = n;
+ unsigned int uCount = m_uCount;
+ m_uCount = src->m_uCount;
+ src->m_uCount = uCount;
+ }
+
+
+ ///
+ /// Sorts this list in ascending order.
+ /// There must be an int kvi_compare(const T *p1,const T *p2) function
+ /// which returns a value less than, equal to
+ /// or greater than zero when the item p1 is considered lower than,
+ /// equal to or greater than p2.
+ ///
+ void sort()
+ {
+ if(m_uCount < 2)return;
+
+ KviPointerList<T> carry;
+ KviPointerList<T> tmp[64];
+ KviPointerList * fill = &tmp[0];
+ KviPointerList * counter;
+
+ do {
+ carry.grabFirstAndPrepend(this);
+
+ for(counter = &tmp[0];counter != fill && !counter->isEmpty();++counter)
+ {
+ counter->merge(&carry);
+ carry.swap(counter);
+ }
+ carry.swap(counter);
+ if(counter == fill)
+ ++fill;
+ } while(m_uCount > 0);
+
+ for(counter = &tmp[1];counter != fill;++counter)
+ counter->merge(counter-1);
+ swap(fill-1);
+ }
+
+ ///
+ /// Inserts the item respecting the sorting order inside the list.
+ /// The list itself must be already sorted for this to work correctly.
+ /// There must be a int kvi_compare(const T *p1,const T * p2)
+ /// that returns a value less than, equal to
+ /// or greater than zero when the item p1 is considered lower than,
+ /// equal to or greater than p2.
+ ///
+ void inSort(T * t)
+ {
+ KviPointerListNode * x = m_pHead;
+ while(x && (kvi_compare(((T *)x->m_pData),t) > 0))x = x->m_pNext;
+ if(!x)append(t);
+ else insertBeforeSafe(x,t);
+ }
+
+ ///
+ /// Returns true if the list is empty
+ ///
+ bool isEmpty() const
+ {
+ return (m_pHead == NULL);
+ }
+
+ ///
+ /// Returns the count of the items in the list
+ ///
+ unsigned int count() const
+ {
+ return m_uCount;
+ }
+
+ ///
+ /// Sets the iteration pointer to the first item in the list
+ /// and returns that item (or 0 if the list is empty)
+ ///
+ T * first()
+ {
+ if(!m_pHead)
+ {
+ m_pAux = NULL;
+ return NULL;
+ }
+ m_pAux = m_pHead;
+ return (T *)(m_pAux->m_pData);
+ }
+
+ ///
+ /// Removes the first element from the list
+ /// and returns it to the caller. This function
+ /// obviously never deletes the item (regadless of autoDeletion()).
+ ///
+ T * takeFirst()
+ {
+ if(!m_pHead)return NULL;
+ T * pData = (T *)m_pHead->m_pData;
+ if(m_pHead->m_pNext)
+ {
+ m_pHead = m_pHead->m_pNext;
+ delete m_pHead->m_pPrev;
+ m_pHead->m_pPrev = NULL;
+ } else {
+ delete m_pHead;
+ m_pHead = NULL;
+ m_pTail = NULL;
+ }
+ m_uCount--;
+ return pData;
+ }
+
+ ///
+ /// Returns an iterator pointing to the first item of the list.
+ ///
+ KviPointerListIterator<T> iteratorAtFirst()
+ {
+ return KviPointerListIterator<T>(*this,m_pHead);
+ }
+
+ ///
+ /// Sets the iteration pointer to the last item in the list
+ /// and returns that item (or 0 if the list is empty)
+ ///
+ T * last()
+ {
+ if(!m_pTail)
+ {
+ m_pAux = NULL;
+ return NULL;
+ }
+ m_pAux = m_pTail;
+ return (T *)(m_pAux->m_pData);
+ }
+
+ ///
+ /// Returns an iterator pointing to the first item of the list.
+ ///
+ KviPointerListIterator<T> iteratorAtLast()
+ {
+ return KviPointerListIterator<T>(*this,m_pTail);
+ }
+
+ ///
+ /// Returns the current iteration item
+ /// A call to this function MUST be preceded by a call to
+ /// first(),last(),at() or findRef()
+ ///
+ T * current()
+ {
+ return (T *)(m_pAux->m_pData);
+ }
+
+ ///
+ /// Returns the current iteration item
+ /// A call to this function should be preceded by a call to
+ /// first(),last(),at() or findRef().
+ /// This function will return a NULL pointer if the current
+ /// item has been invalidated due to a remove operation.
+ ///
+ T * safeCurrent()
+ {
+ return m_pAux ? (T *)(m_pAux->m_pData) : NULL;
+ }
+
+
+ ///
+ /// Returns an iterator pointing to the current item in the list.
+ /// A call to this function MUST be preceded by a call to
+ /// first(),last(),at() or findRef()
+ ///
+ KviPointerListIterator<T> iteratorAtCurrent()
+ {
+ return KviPointerListIterator<T>(*this,m_pAux);
+ }
+
+ ///
+ /// Sets the iteration pointer to the next item in the list
+ /// and returns that item (or 0 if the end of the list has been reached)
+ /// A call to this function MUST be preceded by a _succesfull_ call to
+ /// first(),last(),at() or findRef().
+ ///
+ T * next()
+ {
+ if(!m_pAux)return NULL;
+ m_pAux = m_pAux->m_pNext;
+ if(m_pAux)return (T *)(m_pAux->m_pData);
+ return NULL;
+ }
+
+ ///
+ /// Sets the iteration pointer to the previous item in the list
+ /// and returns that item (or 0 if the beginning of the list has been reached)
+ /// A call to this function MUST be preceded by a _succesfull_ call to
+ /// first(),last(),at() or findRef()
+ ///
+ T * prev()
+ {
+ if(!m_pAux)return NULL;
+ m_pAux = m_pAux->m_pPrev;
+ if(m_pAux)return (T *)(m_pAux->m_pData);
+ return NULL;
+ }
+
+ ///
+ /// Sets the iteration pointer to the nTh item in the list
+ /// and returns that item (or 0 if the index is out of range)
+ ///
+ T * at(int idx)
+ {
+ T * t = first();
+ int cnt = 0;
+ while(t)
+ {
+ if(idx == cnt)return t;
+ t = next();
+ cnt++;
+ }
+ return 0;
+ }
+
+ ///
+ /// Returns an iterator pointing to the item at the specified index.
+ ///
+ KviPointerListIterator<T> iteratorAt(int idx)
+ {
+ KviPointerListNode * n = m_pHead;
+ int cnt = 0;
+ while(n)
+ {
+ if(idx == cnt)
+ return KviPointerListIterator<T>(*this,n);
+ n = n->m_pNext;
+ cnt++;
+ }
+ return KviPointerListIterator<T>(*this,NULL);
+ }
+
+ ///
+ /// Sets the iteration pointer to the item with pointer d
+ /// and returns its position (zero based index) in the list or -1 if the
+ /// item cannot be found
+ ///
+ int findRef(const T * d)
+ {
+ int ret = 0;
+ for(T * t = first();t;t = next())
+ {
+ if(t == d)return ret;
+ ret++;
+ }
+ return -1;
+ }
+
+ ///
+ /// Returns an iterator pointing to the item with pointer d.
+ ///
+ KviPointerListIterator<T> iteratorAtRef(const T * d)
+ {
+ KviPointerListNode * n = m_pHead;
+ while(n)
+ {
+ if(n->m_pData == d)
+ return KviPointerListIterator<T>(*this,n);
+ n = n->m_pNext;
+ }
+ return KviPointerListIterator<T>(*this,NULL);
+ }
+
+ ///
+ /// Appends an item at the end of the list
+ ///
+ void append(const T * d)
+ {
+ if(!m_pHead)
+ {
+ m_pHead = new KviPointerListNode;
+ m_pHead->m_pPrev = NULL;
+ m_pHead->m_pNext = NULL;
+ m_pHead->m_pData = (void *)d;
+ m_pTail = m_pHead;
+ } else {
+ m_pTail->m_pNext = new KviPointerListNode;
+ m_pTail->m_pNext->m_pPrev = m_pTail;
+ m_pTail->m_pNext->m_pNext = NULL;
+ m_pTail->m_pNext->m_pData = (void *)d;
+ m_pTail = m_pTail->m_pNext;
+ }
+ m_uCount++;
+ }
+
+ ///
+ /// Appends all the items from the list l to this list
+ ///
+ void append(KviPointerList<T> * l)
+ {
+ for(T * t = l->first();t;t = l->next())append(t);
+ }
+
+ ///
+ /// Prepends (inserts in head position) all the items from
+ /// the list l to this list
+ ///
+ void prepend(KviPointerList<T> * l)
+ {
+ for(T * t = l->last();t;t = l->prev())prepend(t);
+ }
+
+ ///
+ /// Inserts the item d in the head position
+ ///
+ void prepend(const T * d)
+ {
+ if(!m_pHead)
+ {
+ m_pHead = new KviPointerListNode;
+ m_pHead->m_pPrev = NULL;
+ m_pHead->m_pNext = NULL;
+ m_pHead->m_pData = (void *)d;
+ m_pTail = m_pHead;
+ } else {
+ m_pHead->m_pPrev = new KviPointerListNode;
+ m_pHead->m_pPrev->m_pNext = m_pHead;
+ m_pHead->m_pPrev->m_pPrev = NULL;
+ m_pHead->m_pPrev->m_pData = (void *)d;
+ m_pHead = m_pHead->m_pPrev;
+ m_uCount++;
+ }
+ }
+
+ ///
+ /// Inserts the item d at the zero-based position
+ /// specified by iIndex. If the specified position
+ /// is out of the list then the item is appended.
+ /// Note that this function costs O(n).
+ /// It's really better to use insertAfter() or
+ /// insertBefore(), if possible.
+ ///
+ void insert(int iIndex,const T * d)
+ {
+ m_pAux = m_pHead;
+ while(m_pAux && iIndex > 0)
+ {
+ iIndex--;
+ m_pAux = m_pAux->m_pNext;
+ }
+ if(m_pAux)
+ insertBeforeSafe(m_pAux,d);
+ else
+ append(d);
+ }
+
+ ///
+ /// Removes the firstitem (if any)
+ /// the item is deleted if autoDelete() is set to true
+ ///
+ bool removeFirst()
+ {
+ if(!m_pHead)return false;
+ const T * pAuxData;
+ if(m_pHead->m_pNext)
+ {
+ m_pHead = m_pHead->m_pNext;
+ pAuxData = (const T *)(m_pHead->m_pPrev->m_pData);
+ delete m_pHead->m_pPrev;
+ m_pHead->m_pPrev = NULL;
+ } else {
+ pAuxData = (const T *)(m_pHead->m_pData);
+ delete m_pHead;
+ m_pHead = NULL;
+ m_pTail = NULL;
+ }
+ m_pAux = NULL;
+ m_uCount--;
+ if(m_bAutoDelete)
+ delete pAuxData;
+ return true;
+ }
+
+ ///
+ /// Removes the firstitem (if any)
+ /// the item is deleted if autoDelete() is set to true
+ ///
+ bool removeLast()
+ {
+ if(!m_pTail)return false;
+ const T * pAuxData;
+ if(m_pTail->m_pPrev)
+ {
+ m_pTail = m_pTail->m_pPrev;
+ pAuxData = (const T *)(m_pTail->m_pNext->m_pData);
+ delete m_pTail->m_pNext;
+ m_pTail->m_pNext = NULL;
+ } else {
+ pAuxData = (const T *)(m_pTail->m_pData);
+ delete m_pTail;
+ m_pHead = NULL;
+ m_pTail = NULL;
+ }
+ m_pAux = NULL;
+ m_uCount--;
+ if(m_bAutoDelete)
+ delete pAuxData;
+ return true;
+ }
+
+ ///
+ /// Removes the item at zero-based position iIndex.
+ /// Does nothing and returns false if iIndex is out of the list.
+ /// Please note that this function costs O(n).
+ ///
+ bool remove(int iIndex)
+ {
+ m_pAux = m_pHead;
+ while(m_pAux && iIndex > 0)
+ {
+ iIndex--;
+ m_pAux = m_pAux->m_pNext;
+ }
+ if(!m_pAux)
+ return false;
+ removeCurrentSafe();
+ return true;
+ }
+
+ ///
+ /// Sets the autodelete flag
+ /// When this flag is on (default) , all the items
+ /// are deleted when removed from the list (or when the list is destroyed
+ /// or cleared explicitly)
+ ///
+ void setAutoDelete(bool bAutoDelete)
+ {
+ m_bAutoDelete = bAutoDelete;
+ }
+
+ ///
+ /// Returns the autodelete flag.
+ ///
+ bool autoDelete()
+ {
+ return m_bAutoDelete;
+ };
+
+ ///
+ /// Removes all the items from the list
+ /// (the items are deleted if the autoDelete() flag is set to true)
+ ///
+ void clear()
+ {
+ while(m_pHead)removeFirst();
+ }
+
+ ///
+ /// Removes the current iteration item.
+ /// Returns true if the current iteration item was valid (and was removed)
+ /// and false otherwise.
+ ///
+ bool removeCurrent()
+ {
+ if(!m_pAux)
+ return false;
+ removeCurrentSafe();
+ return true;
+ }
+
+ ///
+ /// Removes the item pointed by d (if found in the list)
+ /// the item is deleted if the autoDelete() flag is set to true)
+ /// Returns true if the item was in the list and false otherwise.
+ ///
+ bool removeRef(const T * d)
+ {
+ if(findRef(d) == -1)return false;
+ removeCurrentSafe();
+ return true;
+ }
+
+ ///
+ /// inserts the item d after the item ref or at the end
+ /// if ref is not found in the list
+ /// also sets the current iteration pointer to the newly inserted item
+ ///
+ void insertAfter(const T * ref,const T * d)
+ {
+ if(findRef(ref) == -1)
+ {
+ append(d);
+ return;
+ }
+ KviPointerListNode * n = new KviPointerListNode;
+ n->m_pPrev = m_pAux;
+ n->m_pNext = m_pAux->m_pNext;
+ if(m_pAux->m_pNext)
+ m_pAux->m_pNext->m_pPrev = n;
+ else
+ m_pTail = n;
+ m_pAux->m_pNext = n;
+ n->m_pData = (void *)d;
+ m_uCount++;
+ }
+
+ ///
+ /// inserts the item d before the item ref or at the beginning
+ /// if ref is not found in the list
+ /// also sets the current iteration pointer to the newly inserted item
+ ///
+ void insertBefore(const T * ref,const T * d)
+ {
+ if(findRef(ref) == -1)
+ {
+ prepend(d);
+ return;
+ }
+ KviPointerListNode * n = new KviPointerListNode;
+ n->m_pPrev = m_pAux->m_pPrev;
+ n->m_pNext = m_pAux;
+ if(m_pAux->m_pPrev)
+ m_pAux->m_pPrev->m_pNext = n;
+ else
+ m_pHead = n;
+ m_pAux->m_pPrev = n;
+ n->m_pData = (void *)d;
+ m_uCount++;
+ }
+
+ ///
+ /// Inverts the elements in the list.
+ ///
+ void invert()
+ {
+ if(!m_pHead)return;
+ KviPointerListNode * oldHead = m_pHead;
+ KviPointerListNode * oldTail = m_pTail;
+ KviPointerListNode * n = m_pHead;
+ while(n)
+ {
+ KviPointerListNode * next = n->m_pNext;
+ n->m_pNext = n->m_pPrev;
+ n->m_pPrev = next;
+ n = next;
+ }
+ m_pTail = oldHead;
+ m_pHead = oldTail;
+ }
+
+ ///
+ /// clears the list and inserts all the items from the list l
+ ///
+ void copyFrom(KviPointerList<T> * l)
+ {
+ clear();
+ for(T * t = l->first();t;t = l->next())append(t);
+ }
+
+ ///
+ /// equivalent to copyFrom(l)
+ ///
+ KviPointerList<T> & operator = (KviPointerList<T> &l)
+ {
+ copyFrom(&l);
+ return *this;
+ }
+
+ ///
+ /// creates a template list
+ ///
+ KviPointerList<T>(bool bAutoDelete = true)
+ {
+ m_bAutoDelete = bAutoDelete;
+ m_pHead = NULL;
+ m_pTail = NULL;
+ m_uCount = 0;
+ m_pAux = NULL;
+ };
+
+ ///
+ /// destroys the list
+ /// if autoDelete() is set to true, all the items are deleted
+ ///
+ virtual ~KviPointerList<T>()
+ {
+ clear();
+ };
+};
+
+#define KviPointerListBase KviPointerList
+
+// BROKEN MSVC LINKER
+#ifdef COMPILE_ON_WINDOWS
+ #include "kvi_string.h"
+ template class KVILIB_API KviPointerList<KviStr>;
+#endif
+
+#endif //_KVI_POINTERLIST_H_
diff --git a/src/kvilib/core/kvi_qcstring.h b/src/kvilib/core/kvi_qcstring.h
new file mode 100644
index 00000000..0693e205
--- /dev/null
+++ b/src/kvilib/core/kvi_qcstring.h
@@ -0,0 +1,39 @@
+#ifndef _KVI_QCSTRING_H_
+#define _KVI_QCSTRING_H_
+
+//=============================================================================
+//
+// File : kvi_qcstring.h
+// Creation date : Thu Jan 18 2007 00:34:33 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_USE_QT4
+ #include <q3cstring.h> // includes <qbytearray.h>
+ #define KviQCString QByteArray
+#else
+ // this is dead in Qt 4.x
+ #include <qcstring.h>
+ #define KviQCString QCString
+#endif
+
+#endif //!_KVI_QCSTRING_H_
diff --git a/src/kvilib/core/kvi_qstring.cpp b/src/kvilib/core/kvi_qstring.cpp
new file mode 100644
index 00000000..eba255aa
--- /dev/null
+++ b/src/kvilib/core/kvi_qstring.cpp
@@ -0,0 +1,1125 @@
+//=============================================================================
+//
+// File : kvi_qstring.cpp
+// Creation date : Mon Aug 04 2003 13:36:33 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+//=============================================================================
+//
+// Helper functions for the QString class
+//
+//=============================================================================
+
+#define __KVILIB__
+
+
+#include "kvi_qstring.h"
+#include "kvi_string.h"
+#include "kvi_malloc.h"
+#include "kvi_locale.h"
+
+#include <ctype.h> // for tolower()
+#include <stdio.h> // for sprintf()
+#include <qregexp.h>
+
+// kvi_string.cpp
+extern unsigned char iso88591_toLower_map[256];
+extern unsigned char iso88591_toUpper_map[256];
+
+#define MY_MIN(a,b) (((a) < (b)) ? (a) : (b))
+
+namespace KviQString
+{
+ // The global empty (and null) string
+ const QString empty;
+
+ bool equalCSN(const QString &sz1,const QString &sz2,unsigned int len)
+ {
+ if(len == 0)return true; // assume equal
+ const QChar * c1 = sz1.unicode();
+ const QChar * c2 = sz2.unicode();
+ unsigned int lmin = MY_MIN(sz1.length(),sz2.length());
+ if(lmin < len)return false;
+ const QChar * c1e = c1 + len;
+
+ if(!c1 || !c2)return (c1 == c2);
+
+ while(c1 < c1e)
+ {
+ if(c1->unicode() != c2->unicode())return false;
+ c1++;
+ c2++;
+ }
+ return (c1 == c1e);
+ }
+
+ bool equalCIN(const QString &sz1,const QString &sz2,unsigned int len)
+ {
+ if(len == 0)return true; // assume equal
+ const QChar * c1 = sz1.unicode();
+ const QChar * c2 = sz2.unicode();
+ unsigned int lmin = MY_MIN(sz1.length(),sz2.length());
+ if(lmin < len)return false;
+ const QChar * c1e = c1 + len;
+
+ if(!c1 || !c2)return (c1 == c2);
+
+ while(c1 < c1e)
+ {
+#ifdef COMPILE_USE_QT4
+ if(c1->toLower().unicode() != c2->toLower().unicode())return false;
+#else
+ if(c1->lower().unicode() != c2->lower().unicode())return false;
+#endif
+ c1++;
+ c2++;
+ }
+ return (c1 == c1e);
+ }
+
+ bool equalCSN(const QString &sz1,const char * sz2,unsigned int len)
+ {
+ if(len == 0)return true; // assume equal
+ const QChar * c1 = sz1.unicode();
+ if(sz1.length() < len)return false;
+ const QChar * c1e = c1 + len;
+
+ if(!sz2)return !c1;
+ if(!c1)return !sz2;
+
+ while((c1 < c1e) && (*sz2))
+ {
+ if(c1->unicode() != *sz2)return false;
+ c1++;
+ sz2++;
+ }
+ return (c1 == c1e);
+ }
+
+ bool equalCIN(const QString &sz1,const char * sz2,unsigned int len)
+ {
+ if(len == 0)return true; // assume equal
+ const QChar * c1 = sz1.unicode();
+ if(sz1.length() < len)return false;
+ const QChar * c1e = c1 + len;
+
+ if(!sz2)return !c1;
+ if(!c1)return !(*sz2);
+
+ while((c1 < c1e) && (*sz2))
+ {
+#ifdef COMPILE_USE_QT4
+ if(c1->toLower().unicode() != tolower(*sz2))return false;
+#else
+ if(c1->lower().unicode() != tolower(*sz2))return false;
+#endif
+ c1++;
+ sz2++;
+ }
+ return (c1 == c1e);
+ }
+
+ // sz2 is assumed to be null terminated, sz1 is not!
+ bool equalCIN(const QString &sz1,const QChar *sz2,unsigned int len)
+ {
+ if(len == 0)return true; // assume equal
+ const QChar * c1 = sz1.unicode();
+ if(sz1.length() < len)return false;
+ const QChar * c1e = c1 + len;
+
+ if(!sz2)return !c1;
+ if(!c1)return !(sz2->unicode());
+
+ while((c1 < c1e) && (sz2->unicode()))
+ {
+#ifdef COMPILE_USE_QT4
+ if(c1->toLower().unicode() != sz2->toLower().unicode())return false;
+#else
+ if(c1->lower().unicode() != sz2->lower().unicode())return false;
+#endif
+ c1++;
+ sz2++;
+ }
+ return (c1 == c1e);
+ }
+
+ QString makeSizeReadable(size_t bytes)
+ {
+ double size = bytes;
+ if(size<900)
+ return QString(__tr2qs("%1 bytes")).arg(size,0,'f',3);
+
+ size/=1024;
+ if(size<900)
+ return QString(__tr2qs("%1 KB")).arg(size,0,'f',3);
+
+ size/=1024;
+ if(size<900)
+ return QString(__tr2qs("%1 MB")).arg(size,0,'f',3);
+
+ //Pirated DVD?;)
+ size/=1024;
+ if(size<900)
+ return QString(__tr2qs("%1 GB")).arg(size,0,'f',3);
+
+ //Uhm.. We are downloading a whole internet:)))
+ size/=1024;
+ return QString(__tr2qs("%1 TB")).arg(size,0,'f',3);
+ }
+
+ bool equalCS(const QString &sz1,const QString &sz2)
+ {
+ if(sz1.length() != sz2.length())return false;
+
+ const QChar * c1 = sz1.unicode();
+ const QChar * c2 = sz2.unicode();
+ const QChar * c1e = c1 + sz1.length();
+
+ if(!c1 || !c2)return (c1 == c2);
+
+ while(c1 < c1e)
+ {
+ if(c1->unicode() != c2->unicode())return false;
+ c1++;
+ c2++;
+ }
+ return (c1 == c1e);
+ }
+
+ bool equalCI(const QString &sz1,const QString &sz2)
+ {
+ if(sz1.length() != sz2.length())return false;
+
+ const QChar * c1 = sz1.unicode();
+ const QChar * c2 = sz2.unicode();
+ const QChar * c1e = c1 + sz1.length();
+
+ if(!c1 || !c2)return (c1 == c2);
+
+ while(c1 < c1e)
+ {
+#ifdef COMPILE_USE_QT4
+ if(c1->toLower().unicode() != c2->toLower().unicode())return false;
+#else
+ if(c1->lower().unicode() != c2->lower().unicode())return false;
+#endif
+ c1++;
+ c2++;
+ }
+ return (c1 == c1e);
+ }
+
+ // sz2 is assumed to be null terminated, sz1 is not!
+ bool equalCI(const QString &sz1,const QChar *sz2)
+ {
+ const QChar * c1 = sz1.unicode();
+ const QChar * c1e = c1 + sz1.length();
+
+ if(!c1 || !sz2)return (c1 == sz2);
+
+ while(c1 < c1e)
+ {
+ if(!sz2->unicode())return false; // sz1 has at least another character
+#ifdef COMPILE_USE_QT4
+ if(c1->toLower().unicode() != sz2->toLower().unicode())return false;
+#else
+ if(c1->lower().unicode() != sz2->lower().unicode())return false;
+#endif
+ c1++;
+ sz2++;
+ }
+ return (c1 == c1e) && (!sz2->unicode());
+ }
+
+ bool equalCS(const QString &sz1,const char * sz2)
+ {
+ const QChar * c1 = sz1.unicode();
+ const QChar * c1e = c1 + sz1.length();
+
+ if(!c1)return !sz2;
+
+ while((c1 < c1e) && (*sz2))
+ {
+ if(c1->unicode() != *sz2)return false;
+ c1++;
+ sz2++;
+ }
+ return ((c1 == c1e) && (*sz2 == '\0'));
+ }
+
+ bool equalCI(const QString &sz1,const char * sz2)
+ {
+ const QChar * c1 = sz1.unicode();
+ const QChar * c1e = c1 + sz1.length();
+
+ if(!c1)return !sz2;
+
+ while((c1 < c1e) && (*sz2))
+ {
+#ifdef COMPILE_USE_QT4
+ if(c1->toLower().unicode() != tolower(*sz2))return false;
+#else
+ if(c1->lower().unicode() != tolower(*sz2))return false;
+#endif
+ c1++;
+ sz2++;
+ }
+ return ((c1 == c1e) && (*sz2 == '\0'));
+ }
+
+ int cmpCS(const QString &sz1,const QString &sz2)
+ {
+ const QChar * c1 = sz1.unicode();
+ const QChar * c2 = sz2.unicode();
+ const QChar * c1e = c1 + sz1.length();
+ const QChar * c2e = c2 + sz2.length();
+
+ if(!c1)
+ {
+ if(!c2)return 0;
+ return -1;
+ }
+ if(!c2)return 1;
+
+
+ for(;;)
+ {
+ if(c1 >= c1e)
+ {
+ if(c2 < c2e)return /* 0 */ - (c2->unicode());
+ return 0;
+ }
+ if(c2 >= c2e)return c1->unicode() /* - 0 */;
+
+ int diff = c1->unicode() - c2->unicode();
+ if(diff)return diff;
+
+ c1++;
+ c2++;
+ }
+
+ return 0; // never here
+ }
+
+ int cmpCI(const QString &sz1,const QString &sz2)
+ {
+ const QChar * c1 = sz1.unicode();
+ const QChar * c2 = sz2.unicode();
+ const QChar * c1e = c1 + sz1.length();
+ const QChar * c2e = c2 + sz2.length();
+
+ if(!c1)
+ {
+ if(!c2)return 0;
+ return -1;
+ }
+ if(!c2)return 1;
+
+ for(;;)
+ {
+ if(c1 >= c1e)
+ {
+#ifdef COMPILE_USE_QT4
+ if(c2 < c2e)return /* 0 */ - (c2->toLower().unicode());
+#else
+ if(c2 < c2e)return /* 0 */ - (c2->lower().unicode());
+#endif
+ return 0;
+ }
+#ifdef COMPILE_USE_QT4
+ if(c2 >= c2e)return c1->toLower().unicode() /* - 0 */;
+#else
+ if(c2 >= c2e)return c1->lower().unicode() /* - 0 */;
+#endif
+
+#ifdef COMPILE_USE_QT4
+ int diff = c1->toLower().unicode() - c2->toLower().unicode();
+#else
+ int diff = c1->lower().unicode() - c2->lower().unicode();
+#endif
+ if(diff)return diff;
+
+ c1++;
+ c2++;
+ }
+
+ return 0; // never here
+ }
+
+ int cmpCIN(const QString &sz1,const QString &sz2,unsigned int len)
+ {
+ if(len == 0)return 0; // assume equal
+ unsigned int l1 = MY_MIN(len,sz1.length());
+ unsigned int l = MY_MIN(l1,sz2.length()); // FIXME: THIS IS NOT OK
+
+ const QChar * c1 = sz1.unicode();
+ const QChar * c2 = sz2.unicode();
+ const QChar * c1e = c1 + l;
+
+ if(!c1)
+ {
+ if(!c2)return 0;
+ return -1;
+ }
+ if(!c2)return 1;
+
+ int diff = 0;
+
+#ifdef COMPILE_USE_QT4
+ while((c1 < c1e) && !(diff = (c1->toLower().unicode() - c2->toLower().unicode())))
+#else
+ while((c1 < c1e) && !(diff = (c1->lower().unicode() - c2->lower().unicode())))
+#endif
+ {
+ c1++;
+ c2++;
+ }
+
+ return diff;
+ }
+
+ void ensureLastCharIs(QString &szString,const QChar &c)
+ {
+ if(!lastCharIs(szString,c))szString.append(c);
+ }
+
+ QString getToken(QString &szString,const QChar &sep)
+ {
+ int i=0;
+ while(i < szString.length())
+ {
+ if(szString[i] == sep)break;
+ i++;
+ }
+ QString ret;
+ if(i == szString.length())
+ {
+ ret = szString;
+ szString = "";
+ } else {
+ ret = szString.left(i);
+ while(i < szString.length())
+ {
+ if(szString[i] != sep)break;
+ i++;
+ }
+ if(i == szString.length())szString = "";
+ else szString.remove(0,i);
+ }
+ return ret;
+ }
+
+ void stripRightWhiteSpace(QString &s)
+ {
+ int iRemove = 0;
+ while(iRemove < s.length())
+ {
+ if(s.at(s.length() - (iRemove + 1)).isSpace())iRemove++;
+ else break;
+ }
+ if(iRemove > 0)s.remove(s.length() - iRemove,iRemove);
+ }
+
+ void stripRight(QString &s,const QChar &c)
+ {
+ int iRemove = 0;
+ while(iRemove < s.length())
+ {
+ if(s.at(s.length() - (iRemove + 1)) == c)iRemove++;
+ else break;
+ }
+ if(iRemove > 0)s.remove(s.length() - iRemove,iRemove);
+ }
+
+ void stripLeft(QString &s,const QChar &c)
+ {
+ int iRemove = 0;
+ while(iRemove < s.length())
+ {
+ if(s[iRemove] == c)
+ iRemove++;
+ else
+ break;
+ }
+ if(iRemove > 0)s.remove(0,iRemove);
+ }
+
+ void detach(QString &sz)
+ {
+#ifdef COMPILE_USE_QT4
+ sz.resize(sz.length());
+#else
+ sz.setLength(sz.length());
+#endif
+ }
+
+ const QChar * nullTerminatedArray(const QString &sz)
+ {
+ //sz.setLength(sz.length()); // detach!
+#ifdef COMPILE_USE_QT4
+ return sz.constData();
+#else
+ return (const QChar *)sz.ucs2(); // MAY BE NULL!
+#endif
+ }
+
+ void appendNumber(QString &s,double dReal)
+ {
+ char buffer[512];
+ ::sprintf(buffer,"%f",dReal);
+ s.append(buffer);
+ }
+
+ void appendNumber(QString &s,int iInteger)
+ {
+ char buffer[64];
+ ::sprintf(buffer,"%d",iInteger);
+ s.append(buffer);
+ }
+
+ void appendNumber(QString &s,kvi_i64_t iInteger)
+ {
+ char buffer[64];
+ ::sprintf(buffer,"%ld",iInteger);
+ s.append(buffer);
+ }
+
+ void appendNumber(QString &s,kvi_u64_t uInteger)
+ {
+ char buffer[64];
+ ::sprintf(buffer,"%lu",uInteger);
+ s.append(buffer);
+ }
+
+ void appendNumber(QString &s,unsigned int uInteger)
+ {
+ char buffer[64];
+ ::sprintf(buffer,"%u",uInteger);
+ s.append(buffer);
+ }
+
+ void vsprintf(QString &s,const QString &szFmt,kvi_va_list list)
+ {
+#define MEMINCREMENT 32
+
+ int reallen = 0;
+ int allocsize = MEMINCREMENT;
+
+ //s.setLength(allocsize);
+
+ const QChar * fmt = nullTerminatedArray(szFmt);
+ if(!fmt)
+ {
+ s = QString::null;
+ return;
+ }
+
+ QChar * buffer = (QChar *)kvi_malloc(sizeof(QChar) * allocsize);
+ //QChar * p = (QChar *)s.unicode();
+
+ char *argString;
+ long argValue;
+ unsigned long argUValue;
+
+ //9999999999999999999999999999999\0
+ char numberBuffer[32]; //enough ? 10 is enough for 32bit unsigned int...
+ char *pNumBuf;
+ unsigned int tmp;
+
+ QChar * p = buffer;
+
+#define INCREMENT_MEM \
+ { \
+ allocsize += MEMINCREMENT; \
+ buffer = (QChar *)kvi_realloc(buffer,sizeof(QChar) * allocsize); \
+ p = buffer + reallen; \
+ }
+
+#define INCREMENT_MEM_BY(numchars) \
+ { \
+ allocsize += numchars + MEMINCREMENT; \
+ buffer = (QChar *)kvi_realloc(buffer,sizeof(QChar) * allocsize); \
+ p = buffer + reallen; \
+ }
+
+
+ for(; fmt->unicode() ; ++fmt)
+ {
+ if(reallen == allocsize)INCREMENT_MEM
+
+ //copy up to a '%'
+ if(fmt->unicode() != '%')
+ {
+ *p++ = *fmt;
+ reallen++;
+ continue;
+ }
+
+ ++fmt; //skip this '%'
+ switch(fmt->unicode())
+ {
+ case 's': // char * string
+ {
+ argString = kvi_va_arg(list,char *);
+ if(!argString)argString = "[!NULL!]";
+ QString str(argString);
+ if(str.isEmpty())continue;
+ int len = str.length();
+ const QChar * ch = str.unicode();
+ if(!ch)continue;
+ if((allocsize - reallen) < len)INCREMENT_MEM_BY(len)
+ while(len--)*p++ = *ch++;
+ reallen += str.length();
+ continue;
+ }
+ case 'S': // KviStr * string
+ {
+ KviStr * str = kvi_va_arg(list,KviStr *);
+ if(!str)continue;
+ if((allocsize - reallen) < str->len())INCREMENT_MEM_BY(str->len())
+ argString = str->ptr();
+ while(*argString)*p++ = QChar(*argString++);
+ reallen += str->len();
+ continue;
+ }
+ case 'Q': // QString * string
+ {
+ QString * str = kvi_va_arg(list,QString *);
+ if(!str)continue;
+ if(str->isEmpty())continue;
+ int len = str->length();
+ const QChar * ch = str->unicode();
+ if(!ch)continue;
+ if((allocsize - reallen) < len)INCREMENT_MEM_BY(len)
+ while(len--)*p++ = *ch++;
+ reallen += str->length();
+ continue;
+ }
+ case 'c': //char
+ {
+ //
+ // I'm not sure about this...
+ // In the linux kernel source the
+ // unsigned char is extracted from an integer type.
+ // We assume that gcc stacks a char argument
+ // as sizeof(int) bytes value.
+ // Is this always true ?
+ //
+ *p++ = (char)kvi_va_arg(list,int);
+ reallen++;
+ continue;
+ }
+ case 'q': // QChar *
+ {
+ //
+ // I'm not sure about this...
+ // In the linux kernel source the
+ // unsigned char is extracted from an integer type.
+ // We assume that gcc stacks a char argument
+ // as sizeof(int) bytes value.
+ // Is this always true ?
+ //
+ *p++ = *((QChar *)kvi_va_arg(list,QChar *));
+ reallen++;
+ continue;
+ }
+ case 'd': //signed integer
+ {
+ argValue = kvi_va_arg(list,int);
+ if(argValue < 0)
+ { //negative integer
+ *p++ = '-';
+ reallen++;
+ argValue = -argValue; //need to have it positive
+ // most negative integer exception (avoid completely senseless (non digit) responses)
+ if(argValue < 0)argValue = 0; //we get -0 here
+ }
+ //write the number in a temporary buffer
+ pNumBuf = numberBuffer;
+ do {
+ tmp = argValue / 10;
+ *pNumBuf++ = argValue - (tmp * 10) + '0';
+ } while((argValue = tmp));
+ //copy now....
+ argUValue = pNumBuf - numberBuffer; //length of the number string
+ if((allocsize - reallen) < (int)argUValue)INCREMENT_MEM_BY(argUValue)
+ do { *p++ = QChar(*--pNumBuf); } while(pNumBuf != numberBuffer);
+ reallen += argUValue;
+ continue;
+ }
+ case 'u': //unsigned integer
+ {
+ argUValue = kvi_va_arg(list,unsigned int); //many implementations place int here
+ //write the number in a temporary buffer
+ pNumBuf = numberBuffer;
+ do {
+ tmp = argUValue / 10;
+ *pNumBuf++ = argUValue - (tmp * 10) + '0';
+ } while((argUValue = tmp));
+ //copy now....
+ argValue = pNumBuf - numberBuffer; //length of the number string
+ if((allocsize - reallen) < argValue)INCREMENT_MEM_BY(argValue)
+ do { *p++ = *--pNumBuf; } while(pNumBuf != numberBuffer);
+ reallen += argValue;
+ continue;
+ }
+ case 'h':
+ case 'x': // hexadecimal unsigned integer
+ {
+ static char hexsmalldigits[]="0123456789abcdef";
+ argUValue = kvi_va_arg(list,unsigned int); //many implementations place int here
+ //write the number in a temporary buffer
+ pNumBuf = numberBuffer;
+ do {
+ tmp = argUValue / 16;
+ *pNumBuf++ = hexsmalldigits[argUValue - (tmp * 16)];
+ } while((argUValue = tmp));
+ //copy now....
+ argValue = pNumBuf - numberBuffer; //length of the number string
+ if((allocsize - reallen) < argValue)INCREMENT_MEM_BY(argValue)
+ do { *p++ = *--pNumBuf; } while(pNumBuf != numberBuffer);
+ reallen += argValue;
+ continue;
+ }
+ case 'H':
+ case 'X': // hexadecimal unsigned integer
+ {
+ static char hexbigdigits[]="0123456789ABCDEF";
+ argUValue = kvi_va_arg(list,unsigned int); //many implementations place int here
+ //write the number in a temporary buffer
+ pNumBuf = numberBuffer;
+ do {
+ tmp = argUValue / 16;
+ *pNumBuf++ = hexbigdigits[argUValue - (tmp * 16)];
+ } while((argUValue = tmp));
+ //copy now....
+ argValue = pNumBuf - numberBuffer; //length of the number string
+ if((allocsize - reallen) < argValue)INCREMENT_MEM_BY(argValue)
+ do { *p++ = *--pNumBuf; } while(pNumBuf != numberBuffer);
+ reallen += argValue;
+ continue;
+ }
+ default: //a normal percent followed by some char
+ {
+ *p++ = '%'; //write it
+ reallen++;
+ if(fmt->unicode())
+ {
+ if(reallen == allocsize)INCREMENT_MEM
+ *p++ = *fmt;
+ reallen++;
+ }
+ continue;
+ }
+ }
+ }
+
+ s.setUnicode(buffer,reallen);
+ kvi_free(buffer);
+ //s.squeeze();
+ }
+
+
+ QString & sprintf(QString &s,const QString &szFmt,...)
+ {
+ kvi_va_list list;
+ kvi_va_start_by_reference(list,szFmt);
+ //print...with max 256 chars
+ KviQString::vsprintf(s,szFmt,list);
+ kvi_va_end(list);
+ return s;
+ }
+
+ void appendFormatted(QString &s,const QString &szFmt,...)
+ {
+ QString tmp;
+ kvi_va_list list;
+ kvi_va_start_by_reference(list,szFmt);
+ //print...with max 256 chars
+ KviQString::vsprintf(tmp,szFmt,list);
+ kvi_va_end(list);
+ s.append(tmp);
+ }
+
+ bool matchWildExpressionsCI(const QString &szM1,const QString &szM2)
+ {
+ //Matches two regular expressions containging wildcards (* and ?)
+
+ // s1
+ // m1
+ // mask1 : *xor
+ // mask2 : xorand*xor
+ // m2
+ // s2
+
+ // s2
+ // m2
+ // |
+ //
+ // *!*@*.net
+ // |
+ // m1
+ // s1
+ //
+
+#ifdef COMPILE_USE_QT4
+ const QChar * m1 = (const QChar *)szM1.constData();
+ const QChar * m2 = (const QChar *)szM2.constData();
+#else
+ const QChar * m1 = (const QChar *)szM1.ucs2();
+ const QChar * m2 = (const QChar *)szM2.ucs2();
+#endif
+
+ if(!(m1 && m2 && (m1->unicode())))return false;
+ const QChar * savePos1 = 0;
+ const QChar * savePos2 = m2;
+ while(m1->unicode())
+ {
+ //loop managed by m1 (initially first mask)
+ if(m1->unicode()=='*')
+ {
+ //Found a wildcard in m1
+ savePos1 = ++m1; //move to the next char and save the position...this is our jolly
+ if(!savePos1->unicode())return true; //last was a wildcard , matches everything ahead...
+ savePos2 = m2+1; //next return state for the second string
+ continue; //and return
+ }
+ if(!m2->unicode())return false; //m2 finished and we had something to match here!
+#ifdef COMPILE_USE_QT4
+ if(m1->toLower()==m2->toLower())
+#else
+ if(m1->lower()==m2->lower())
+#endif
+ {
+ //chars matched
+ m1++; //Go ahead in the two strings
+ m2++; //
+ if((!(m1->unicode())) && m2->unicode() && savePos1)
+ {
+ //m1 finished , but m2 not yet and we have a savePosition for m1 (there was a wildcard)...
+ //retry matching the string following the * from the savePos2 (one char ahead last time)
+ m1 = savePos1; //back to char after wildcard
+ m2 = savePos2; //back to last savePos2
+ savePos2++; //next savePos2 will be next char
+ }
+ } else {
+ if(m2->unicode() == '*')
+ {
+ //A wlidcard in the second string
+ //Invert the game : mask1 <-> mask2
+ //mask2 now leads the game...
+ savePos1 = m1; //aux
+ m1 = m2; //...swap
+ m2 = savePos1; //...swap
+ savePos1 = m1; //sync save pos1
+ savePos2 = m2 + 1; //sync save pos2
+ continue; //...and again
+ }
+ // m1 != m2 , m1 != * , m2 != *
+ if((m1->unicode() == '?') || (m2->unicode() == '?'))
+ {
+ m1++;
+ m2++;
+ if((!(m1->unicode())) && m2->unicode() && savePos1)
+ {
+ //m1 finished , but m2 not yet and we have a savePosition for m1 (there was a wildcard)...
+ //retry matching the string following the * from the savePos2 (one char ahead last time)
+ m1 = savePos1; //back to char after wildcard
+ m2 = savePos2; //back to last savePos2
+ savePos2++; //next savePos2 will be next char
+ }
+ } else {
+ if(savePos1)
+ {
+ //Have a jolly man...allow not matching...
+ m1 = savePos1; //go back to char after wildcard...need to rematch...
+ m2 = savePos2; //back to last savePos2
+ savePos2++; //and set next savePos2
+ } else return false; //No previous wildcards...not matched!
+ }
+ }
+ }
+ return (!(m2->unicode())); //m1 surely finished , so for the match , m2 must be finished too
+ }
+
+ bool matchStringCI(const QString &szExp,const QString &szStr,bool bIsRegExp,bool bExact)
+ {
+ QString szWildcard;
+#ifdef COMPILE_USE_QT4
+ QChar* ptr=(QChar*)szExp.constData();
+#else
+ QChar* ptr=(QChar*)szExp.ucs2();
+#endif
+ if(!ptr) return 0;
+ while(ptr->unicode())
+ {
+ if((ptr->unicode()=='[') || (ptr->unicode()==']'))
+ {
+ szWildcard.append("[");
+ szWildcard.append(*ptr);
+ szWildcard.append("]");
+ } else {
+ szWildcard.append(*ptr);
+ }
+ ptr++;
+ }
+#ifdef COMPILE_USE_QT4
+ QRegExp re(szWildcard,Qt::CaseInsensitive,bIsRegExp ? QRegExp::RegExp : QRegExp::Wildcard);
+#else
+ QRegExp re(szWildcard,false,!bIsRegExp);
+#endif
+ if(bExact) return re.exactMatch(szStr);
+#ifdef COMPILE_USE_QT4
+ return re.indexIn(szStr) != -1;
+#else
+ return re.search(szStr) != -1;
+#endif
+ }
+
+ bool matchStringCS(const QString &szExp,const QString &szStr,bool bIsRegExp,bool bExact)
+ {
+ QString szWildcard;
+#ifdef COMPILE_USE_QT4
+ QChar* ptr=(QChar*)szExp.constData();
+#else
+ QChar* ptr=(QChar*)szExp.ucs2();
+#endif
+ if(!ptr) return 0;
+ while(ptr->unicode())
+ {
+ if((ptr->unicode()=='[')) // <-- hum ?
+ {
+ szWildcard.append("[");
+ szWildcard.append(*ptr);
+ szWildcard.append("]");
+ } else {
+ szWildcard.append(*ptr);
+ }
+ ptr++;
+ }
+#ifdef COMPILE_USE_QT4
+ QRegExp re(szWildcard,Qt::CaseSensitive,bIsRegExp ? QRegExp::RegExp : QRegExp::Wildcard);
+#else
+ QRegExp re(szWildcard,true,!bIsRegExp);
+#endif
+ if(bExact) return re.exactMatch(szStr);
+#ifdef COMPILE_USE_QT4
+ return re.indexIn(szStr) != -1;
+#else
+ return re.search(szStr) != -1;
+#endif
+ }
+
+ void cutFromFirst(QString &s,const QChar &c,bool bIncluded)
+ {
+#ifdef COMPILE_USE_QT4
+ int idx = s.indexOf(c);
+#else
+ int idx = s.find(c);
+#endif
+ if(idx == -1)return;
+ s.truncate(bIncluded ? idx : idx + 1);
+ }
+
+ void cutFromLast(QString &s,const QChar &c,bool bIncluded)
+ {
+#ifdef COMPILE_USE_QT4
+ int idx = s.lastIndexOf(c);
+#else
+ int idx = s.findRev(c);
+#endif
+ if(idx == -1)return;
+ s.truncate(bIncluded ? idx : idx + 1);
+ }
+
+ void cutToFirst(QString &s,const QChar &c,bool bIncluded,bool bClearIfNotFound)
+ {
+#ifdef COMPILE_USE_QT4
+ int idx = s.indexOf(c);
+#else
+ int idx = s.find(c);
+#endif
+ if(idx == -1)
+ {
+ if(bClearIfNotFound)s = "";
+ return;
+ }
+ s.remove(0,bIncluded ? idx + 1 : idx);
+ }
+
+ void cutToLast(QString &s,const QChar &c,bool bIncluded,bool bClearIfNotFound)
+ {
+#ifdef COMPILE_USE_QT4
+ int idx = s.lastIndexOf(c);
+#else
+ int idx = s.findRev(c);
+#endif
+ if(idx == -1)
+ {
+ if(bClearIfNotFound)s = "";
+ return;
+ }
+ s.remove(0,bIncluded ? idx + 1 : idx);
+ }
+
+ void cutFromFirst(QString &s,const QString &c,bool bIncluded)
+ {
+#ifdef COMPILE_USE_QT4
+ int idx = s.indexOf(c);
+#else
+ int idx = s.find(c);
+#endif
+ if(idx == -1)return;
+ s.truncate(bIncluded ? idx : idx + c.length());
+ }
+
+ void cutFromLast(QString &s,const QString &c,bool bIncluded)
+ {
+#ifdef COMPILE_USE_QT4
+ int idx = s.lastIndexOf(c);
+#else
+ int idx = s.findRev(c);
+#endif
+ if(idx == -1)return;
+ s.truncate(bIncluded ? idx : idx + c.length());
+ }
+
+ void cutToFirst(QString &s,const QString &c,bool bIncluded,bool bClearIfNotFound)
+ {
+#ifdef COMPILE_USE_QT4
+ int idx = s.indexOf(c);
+#else
+ int idx = s.find(c);
+#endif
+ if(idx == -1)
+ {
+ if(bClearIfNotFound)s = "";
+ return;
+ }
+ s.remove(0,bIncluded ? idx + c.length() : idx);
+ }
+
+ void cutToLast(QString &s,const QString &c,bool bIncluded,bool bClearIfNotFound)
+ {
+#ifdef COMPILE_USE_QT4
+ int idx = s.lastIndexOf(c);
+#else
+ int idx = s.findRev(c);
+#endif
+ if(idx == -1)
+ {
+ if(bClearIfNotFound)s = "";
+ return;
+ }
+ s.remove(0,bIncluded ? idx + c.length() : idx);
+ }
+
+ QString upperISO88591(const QString &szSrc)
+ {
+ const QChar * c = nullTerminatedArray(szSrc);
+ if(!c)
+ {
+ QString ret;
+ return ret;
+ }
+ QChar * buffer = (QChar *)kvi_malloc(sizeof(QChar) * szSrc.length());
+ QChar * b = buffer;
+ unsigned short us = c->unicode();
+ while(us)
+ {
+ if(us < 256)
+ *b=QChar((unsigned short)iso88591_toUpper_map[us]);
+ else
+ *b = *c;
+ c++;
+ b++;
+ us = c->unicode();
+ }
+ QString ret(buffer,szSrc.length());
+ kvi_free(buffer);
+ return ret;
+ }
+
+ QString lowerISO88591(const QString &szSrc)
+ {
+ const QChar * c = nullTerminatedArray(szSrc);
+ if(!c)
+ {
+ QString ret;
+ return ret;
+ }
+ QChar * buffer = (QChar *)kvi_malloc(sizeof(QChar) * szSrc.length());
+ QChar * b = buffer;
+ unsigned short us = c->unicode();
+ while(us)
+ {
+ if(us < 256)
+ {
+ *b=QChar((unsigned short)iso88591_toLower_map[us]);
+ } else
+ *b = *c;
+ c++;
+ b++;
+ us = c->unicode();
+ }
+ QString ret(buffer,szSrc.length());
+ kvi_free(buffer);
+ return ret;
+ }
+
+ void transliterate(QString &s,const QString &szToFind,const QString &szReplacement)
+ {
+ int i=0;
+ int il = MY_MIN(szToFind.length(),szReplacement.length());
+ while(i < il)
+ {
+ int k=0;
+ int kl = s.length();
+ while(k < kl)
+ {
+ if(s[k] == szToFind[i])s[k] = szReplacement[i];
+ k++;
+ }
+ i++;
+ }
+ }
+
+ static char hexdigits[16] = { '0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f' };
+
+ void bufferToHex(QString &szRetBuffer,const unsigned char * buffer,unsigned int len)
+ {
+#ifdef COMPILE_USE_QT4
+ szRetBuffer.resize(len * 2);
+#else
+ szRetBuffer.setLength(len * 2);
+#endif
+ unsigned int i=0;
+ while(i < (len*2))
+ {
+ szRetBuffer[int(i)] = QChar( (unsigned int) hexdigits[(*buffer) / 16] );
+ i++;
+ szRetBuffer[int(i)] = QChar( (unsigned int)hexdigits[(*buffer) % 16] );
+ i++;
+ buffer++;
+ }
+ }
+};
diff --git a/src/kvilib/core/kvi_qstring.h b/src/kvilib/core/kvi_qstring.h
new file mode 100644
index 00000000..c82063e9
--- /dev/null
+++ b/src/kvilib/core/kvi_qstring.h
@@ -0,0 +1,293 @@
+#ifndef _KVI_QSTRING_H_
+#define _KVI_QSTRING_H_
+
+//=============================================================================
+//
+// File : kvi_qstring.h
+// Creation date : Mon Aug 04 2003 13:36:33 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+//=============================================================================
+//
+// Helper functions for the QString class
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_inttypes.h"
+#include "kvi_stdarg.h"
+#include "kvi_qcstring.h"
+
+#include <qstring.h>
+
+///
+/// \namespace KviQString
+///
+/// \brief A namespace for QString helper functions
+///
+/// This namespace contains several helper functions
+/// that are used when dealing with QString.
+///
+namespace KviQString
+{
+ extern KVILIB_API QString makeSizeReadable(size_t size);
+ extern KVILIB_API bool equalCS(const QString &sz1,const QString &sz2);
+ extern KVILIB_API bool equalCI(const QString &sz1,const QString &sz2);
+ extern KVILIB_API bool equalCS(const QString &sz1,const char * sz2);
+ extern KVILIB_API bool equalCI(const QString &sz1,const char * sz2);
+ // sz2 is assumed to be null terminated here!
+ extern KVILIB_API bool equalCI(const QString &sz1,const QChar * sz2);
+ inline bool equalCS(const char * sz1,const QString &sz2)
+ { return equalCS(sz2,sz1); };
+ inline bool equalCI(const char * sz1,const QString &sz2)
+ { return equalCI(sz2,sz1); };
+ // sz1 is assumed to be null terminated here!
+ inline bool equalCI(const QChar * sz1,const QString &sz2)
+ { return equalCI(sz2,sz1); };
+
+ extern KVILIB_API bool equalCSN(const QString &sz1,const QString &sz2,unsigned int len);
+ extern KVILIB_API bool equalCIN(const QString &sz1,const QString &sz2,unsigned int len);
+ extern KVILIB_API bool equalCSN(const QString &sz1,const char * sz2,unsigned int len);
+ extern KVILIB_API bool equalCIN(const QString &sz1,const char * sz2,unsigned int len);
+ // sz2 is assumed to be null terminated here!
+ extern KVILIB_API bool equalCIN(const QString &sz1,const QChar * sz2,unsigned int len);
+ inline bool equalCSN(const char * sz1,const QString &sz2,unsigned int len)
+ { return equalCSN(sz2,sz1,len); };
+ inline bool equalCIN(const char * sz1,const QString &sz2,unsigned int len)
+ { return equalCIN(sz2,sz1,len); };
+ // sz1 is assumed to be null terminated here!
+ inline bool equalCIN(const QChar * sz1,const QString &sz2,unsigned int len)
+ { return equalCIN(sz2,sz1,len); };
+
+ //note that greater here means that come AFTER in the alphabetic order
+ // return < 0 ---> str1 < str2
+ // return = 0 ---> str1 = str2
+ // return > 0 ---> str1 > str2
+ extern KVILIB_API int cmpCI(const QString &sz1,const QString &sz2);
+ extern KVILIB_API int cmpCIN(const QString &sz1,const QString &sz2,unsigned int len);
+ extern KVILIB_API int cmpCS(const QString &sz1,const QString &sz2);
+
+ extern KVILIB_API void detach(QString &sz);
+
+ // this makes the QString sz appear as a null terminated array
+ // it MAY RETURN 0 when the QString is null!
+ extern KVILIB_API const QChar * nullTerminatedArray(const QString &sz);
+
+ inline bool lastCharIs(QString &szString,const QChar &c)
+ { return szString.endsWith(c); };
+
+ extern KVILIB_API void ensureLastCharIs(QString &szString,const QChar &c);
+
+ // wild expression matching
+ extern KVILIB_API bool matchWildExpressionsCI(const QString &szM1,const QString &szM2);
+ // wild or regexp matching
+ extern KVILIB_API bool matchStringCI(const QString &szExp,const QString &szStr,bool bIsRegExp = false,bool bExact = false);
+ extern KVILIB_API bool matchStringCS(const QString &szExp,const QString &szStr,bool bIsRegExp = false,bool bExact = false);
+
+ extern KVILIB_API void vsprintf(QString &s,const QString &szFmt,kvi_va_list list);
+ extern KVILIB_API QString & sprintf(QString &s,const QString &szFmt,...);
+ extern KVILIB_API void stripRightWhiteSpace(QString &s);
+ extern KVILIB_API void stripLeft(QString &s,const QChar &c);
+ extern KVILIB_API void stripRight(QString &s,const QChar &c);
+ extern KVILIB_API void appendFormatted(QString &s,const QString &szFmt,...);
+ extern KVILIB_API void appendNumber(QString &s,double dReal);
+ extern KVILIB_API void appendNumber(QString &s,kvi_i64_t iInteger);
+ extern KVILIB_API void appendNumber(QString &s,int iInteger);
+ extern KVILIB_API void appendNumber(QString &s,unsigned int uInteger);
+ extern KVILIB_API void appendNumber(QString &s,kvi_u64_t uInteger);
+
+ extern KVILIB_API void cutFromFirst(QString &s,const QChar &c,bool bIncluded = true);
+ extern KVILIB_API void cutFromLast(QString &s,const QChar &c,bool bIncluded = true);
+ extern KVILIB_API void cutToFirst(QString &s,const QChar &c,bool bIncluded = true,bool bClearIfNotFound = false);
+ extern KVILIB_API void cutToLast(QString &s,const QChar &c,bool bIncluded = true,bool bClearIfNotFound = false);
+ extern KVILIB_API void cutFromFirst(QString &s,const QString &c,bool bIncluded = true);
+ extern KVILIB_API void cutFromLast(QString &s,const QString &c,bool bIncluded = true);
+ extern KVILIB_API void cutToFirst(QString &s,const QString &c,bool bIncluded = true,bool bClearIfNotFound = false);
+ extern KVILIB_API void cutToLast(QString &s,const QString &c,bool bIncluded = true,bool bClearIfNotFound = false);
+
+ extern KVILIB_API QString upperISO88591(const QString &szSrc);
+ extern KVILIB_API QString lowerISO88591(const QString &szSrc);
+ extern KVILIB_API QString getToken(QString &szString,const QChar &sep);
+
+ extern KVILIB_API void transliterate(QString &s,const QString &szToFind,const QString &szReplacement);
+
+ extern KVILIB_API void bufferToHex(QString &szRetBuffer,const unsigned char * buffer,unsigned int len);
+
+ // a global empty string (note that this is ALSO NULL under Qt 3.x)
+ extern KVILIB_API const QString empty;
+
+ ///
+ /// A portability wrapper which with Qt3 and Qt4.
+ /// Returns a lowcase version of the parameter string.
+ ///
+ inline QString toLower(const QString &s)
+ {
+#ifdef COMPILE_USE_QT4
+ return s.toLower();
+#else
+ return s.lower();
+#endif
+ }
+
+ inline int find(const QString &s,QChar c,int index = 0,bool cs = true)
+ {
+#ifdef COMPILE_USE_QT4
+ return s.indexOf(c,index,cs ? Qt::CaseSensitive : Qt::CaseInsensitive);
+#else
+ return s.find(c,index,cs);
+#endif
+ }
+
+ inline int find(const QString &s,char c,int index = 0,bool cs = true)
+ {
+#ifdef COMPILE_USE_QT4
+ return s.indexOf(c,index,cs ? Qt::CaseSensitive : Qt::CaseInsensitive);
+#else
+ return s.find(c,index,cs);
+#endif
+ }
+
+ inline int find(const QString &s,const QString & str,int index = 0,bool cs = true)
+ {
+#ifdef COMPILE_USE_QT4
+ return s.indexOf(str,index,cs ? Qt::CaseSensitive : Qt::CaseInsensitive);
+#else
+ return s.find(str,index,cs);
+#endif
+ }
+
+ inline int find(const QString &s,const QRegExp & rx,int index = 0)
+ {
+#ifdef COMPILE_USE_QT4
+ return s.indexOf(rx,index);
+#else
+ return s.find(rx,index);
+#endif
+ }
+
+ inline int find(const QString &s,const char * str,int index = 0)
+ {
+#ifdef COMPILE_USE_QT4
+ return s.indexOf(QString(str),index);
+#else
+ return s.find(str,index);
+#endif
+ }
+
+ inline int findRev(const QString &s,QChar c,int index = -1,bool cs = true)
+ {
+#ifdef COMPILE_USE_QT4
+ return s.lastIndexOf(c,index,cs ? Qt::CaseSensitive : Qt::CaseInsensitive);
+#else
+ return s.findRev(c,index,cs);
+#endif
+ }
+
+ inline int findRev(const QString &s,char c,int index = -1,bool cs = true)
+ {
+#ifdef COMPILE_USE_QT4
+ return s.lastIndexOf(c,index,cs ? Qt::CaseSensitive : Qt::CaseInsensitive);
+#else
+ return s.findRev(c,index,cs);
+#endif
+ }
+
+ inline int findRev(const QString &s,const QString & str,int index = -1,bool cs = true)
+ {
+#ifdef COMPILE_USE_QT4
+ return s.lastIndexOf(str,index,cs ? Qt::CaseSensitive : Qt::CaseInsensitive);
+#else
+ return s.findRev(str,index,cs);
+#endif
+ }
+
+ inline int findRev(const QString &s,const QRegExp & rx,int index = -1)
+ {
+#ifdef COMPILE_USE_QT4
+ return s.lastIndexOf(rx,index);
+#else
+ return s.findRev(rx,index);
+#endif
+ }
+
+ inline int findRev(const QString &s,const char * str,int index = -1)
+ {
+#ifdef COMPILE_USE_QT4
+ return s.lastIndexOf(QString(str),index);
+#else
+ return s.findRev(str,index);
+#endif
+ }
+
+ inline QString trimmed(const QString &s)
+ {
+#ifdef COMPILE_USE_QT4
+ return s.trimmed();
+#else
+ return s.stripWhiteSpace();
+#endif
+ }
+
+ // WARNING: DO NOT USE CONSTRUCTS LIKE char * c = KviQString::toUtf8(something).data();
+ // They are dangerous since with many compilers the returned string gets destroyed
+ // at the end of the instruction and the c pointer gets thus invalidated.
+ // Use
+ // KviQCString tmp = KviQString::toUtf8(something);
+ // char * c = tmp.data();
+ // instead.
+ // Yes, I know that it sucks, but it's the only way to
+ // transit to qt 4.x more or less cleanly...
+ inline KviQCString toUtf8(const QString &s)
+ {
+#ifdef COMPILE_USE_QT4
+ return s.toUtf8();
+#else
+ return s.utf8();
+#endif
+ }
+
+ inline KviQCString toLocal8Bit(const QString &s)
+ {
+ return s.local8Bit();
+ }
+
+ inline kvi_i64_t toI64(QString &szNumber,bool * bOk)
+ {
+#if SIZEOF_LONG_INT == 8
+ return szNumber.toLong(bOk);
+#else
+ return szNumber.toLongLong(bOk);
+#endif
+ }
+
+ inline kvi_u64_t toU64(QString &szNumber,bool * bOk)
+ {
+#if SIZEOF_LONG_INT == 8
+ return szNumber.toULong(bOk);
+#else
+ return szNumber.toULongLong(bOk);
+#endif
+ }
+};
+
+// QT4SUX: Because QString::null is gone. QString() is SLOWER than QString::null since it invokes a constructor and destructor.
+
+#endif //!_KVI_QSTRING_H_
diff --git a/src/kvilib/core/kvi_strasm.h b/src/kvilib/core/kvi_strasm.h
new file mode 100644
index 00000000..5d3b19ca
--- /dev/null
+++ b/src/kvilib/core/kvi_strasm.h
@@ -0,0 +1,194 @@
+#ifndef _KVI_STRASM_H_
+#define _KVI_STRASM_H_
+
+//=============================================================================
+//
+// File : kvi_strasm.h
+// Creation date : Sun Jun 18 2000 18:38:26 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+//=============================================================================
+//
+// Inline assembly implementations of the commonly used string functions
+// These will work only on i386 based machines and can be compiled
+// only by gcc
+//
+//=============================================================================
+
+extern inline bool kvi_strEqualCS(const char * str1,const char * str2)
+{
+ // An instruction pattern is really useful in this case.
+ // When inlining, GCC can optimize to load esi and edi
+ // directly with the strings , without pushing and getting it
+ // from the stack...
+ register bool eax;
+ __asm__ __volatile__ (
+ " cld\n"
+ "1:\n"
+ " lodsb %%ds:(%%esi),%%al\n"
+ " scasb %%es:(%%edi),%%al\n"
+ " jne 2f\n"
+ " testb %%al,%%al\n"
+ " jne 1b\n"
+ " movl $0x1,%%eax\n"
+ " jmp 3f\n"
+ "2:\n"
+ " xorl %%eax,%%eax\n"
+ "3:"
+ : "=a" (eax), "=&S" (str1), "=&D" (str2)
+ : "1" (str1), "2" (str2)
+ );
+ return eax;
+}
+
+extern inline bool kvi_strEqualCSN(const char * str1,const char * str2,int len)
+{
+ register bool eax;
+ __asm__ __volatile__ (
+ "1:\n"
+ " decl %3\n"
+ " js 2f\n"
+ " movb (%1),%%al\n"
+ " incl %1\n"
+ " cmpb %%al,(%2)\n"
+ " jne 3f\n"
+ " incl %2\n"
+ " testb %%al,%%al\n"
+ " jne 1b\n"
+ "2:\n"
+ " movl $0x1,%%eax\n"
+ " jmp 4f\n"
+ "3:\n"
+ " xorl %%eax,%%eax\n"
+ "4:\n"
+ : "=a" (eax), "=r" (str1), "=r" (str2), "=r" (len)
+ : "1" (str1), "2" (str2), "3" (len)
+ );
+ return eax;
+}
+
+// OPTIMIZATION
+// The following two functions are used to compare a variable string with one in that
+// only A-Z<->a-z case insensivity is significant.
+// For example
+// kvi_strEqualNoLocalCI("a string that does not contain any strange char",str2)
+// will always give the correct result
+// These will NOT work with localizable characters:
+// 'a' with umlaut will be not equal to 'A' with umlaut
+
+extern inline bool kvi_strEqualNoLocaleCI(const char *str1,const char *str2)
+{
+ // Trivial implementation
+ // Ignores completely locales....only A-Z chars are transformed to a-z
+ // Anyway...it will work for IRC :)
+ register int reg;
+ register bool eax;
+ __asm__ __volatile__ (
+ "1:\n"
+ " movb (%2),%%al\n"
+ " cmpb $65,%%al\n"
+ " jb 2f\n"
+ " cmpb $90,%%al\n"
+ " ja 2f\n"
+ " addb $32,%%al\n"
+ "2:\n"
+ " movb (%3),%b1\n"
+ " cmpb $65,%b1\n"
+ " jb 3f\n"
+ " cmpb $90,%b1\n"
+ " ja 3f\n"
+ " addb $32,%b1\n"
+ "3:\n"
+ " cmpb %%al,%b1\n"
+ " jne 4f\n"
+ " incl %2\n"
+ " incl %3\n"
+ " testb %%al,%%al\n"
+ " jne 1b\n"
+ " movl $1,%%eax\n"
+ " jmp 5f\n"
+ "4:\n"
+ " xorl %%eax,%%eax\n"
+ "5:\n"
+ : "=a" (eax), "=q" (reg), "=r" (str1), "=r" (str2)
+ : "2" (str1), "3" (str2)
+ );
+ return eax;
+}
+
+extern inline bool kvi_strEqualNoLocaleCIN(const char *str1,const char *str2,int len)
+{
+
+ register int reg;
+ register bool eax;
+ __asm__ __volatile__ (
+ "1:\n"
+ " decl %4\n"
+ " js 4f\n"
+ " movb (%2),%%al\n"
+ " cmpb $65,%%al\n"
+ " jb 2f\n"
+ " cmpb $90,%%al\n"
+ " ja 2f\n"
+ " addb $32,%%al\n"
+ "2:\n"
+ " movb (%3),%b1\n"
+ " cmpb $65,%b1\n"
+ " jb 3f\n"
+ " cmpb $90,%b1\n"
+ " ja 3f\n"
+ " addb $32,%b1\n"
+ "3:\n"
+ " cmpb %%al,%b1\n"
+ " jne 5f\n"
+ " incl %2\n"
+ " incl %3\n"
+ " testb %%al,%%al\n"
+ " jne 1b\n"
+ "4:\n"
+ " movl $1,%%eax\n"
+ " jmp 6f\n"
+ "5:\n"
+ " xorl %%eax,%%eax\n"
+ "6:\n"
+ : "=a" (eax), "=q" (reg), "=r" (str1), "=r" (str2), "=r" (len)
+ : "2" (str1), "3" (str2), "4" (len)
+ );
+ return eax;
+}
+
+
+extern inline int kvi_strLen(const char * str)
+{
+ register int ecx;
+ __asm__ __volatile__(
+ " cld\n"
+ " repne\n"
+ " scasb\n"
+ " notl %0\n"
+ " decl %0"
+ : "=c" (ecx), "=&D" (str)
+ : "0" (0xffffffff), "1" (str), "a" (0)
+ );
+ return ecx;
+}
+
+#endif //_KVI_STRASM_H_
diff --git a/src/kvilib/core/kvi_string.cpp b/src/kvilib/core/kvi_string.cpp
new file mode 100644
index 00000000..3f201352
--- /dev/null
+++ b/src/kvilib/core/kvi_string.cpp
@@ -0,0 +1,3063 @@
+//=============================================================================
+//
+// File : kvi_string.cpp
+// Creation date : Fri Mar 19 1999 03:20:45 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+
+#define _KVI_DEBUG_CHECK_RANGE_
+#include "kvi_debug.h"
+
+#define _KVI_STRING_CPP_
+#include "kvi_string.h"
+
+#include "kvi_memmove.h"
+#include "kvi_malloc.h"
+
+#include "kvi_qstring.h"
+
+kvi_wslen_t kvi_wstrlen(const kvi_wchar_t * str)
+{
+ const kvi_wchar_t * ptr = str;
+ while(*ptr)ptr++;
+ return (ptr - str);
+}
+
+
+// %s = Latin1 char string (can't be null)
+// %d = signed int (short,char)
+// %u = unsigned int (short,char)
+// %c = char value (kvi_wchar_t value)
+
+// %f = double value
+
+// %w = kvi_wchar_t string (can't be null)
+
+// %S = Latin1 KviStr pointer (#ifdef WSTRINGCONFIG_USE_KVISTR) : can't be NULL!
+// %W = KviWStr pointer : can't be NULL!
+// %Q = QString pointer : can't be NULL!
+
+#define _WSTRING_WMEMCPY(_dst,_src,_len) kvi_fastmoveodd((void *)(_dst),(const void *)(_src),sizeof(kvi_wchar_t) * (_len))
+#define _WSTRING_STRLEN(_str) kvi_strLen(_str)
+
+#define WVSNPRINTF_BODY \
+\
+ register kvi_wchar_t *p; \
+ long int argValue; \
+ unsigned long argUValue; \
+\
+ kvi_wchar_t numberBuffer[32]; \
+ kvi_wchar_t *pNumBuf; \
+ unsigned int tmp; \
+\
+ for(p=buffer ; *fmt ; ++fmt) \
+ { \
+ if(len < 1)return (-1); \
+\
+ if(*fmt != '%') \
+ { \
+ *p++ = *fmt; \
+ --len; \
+ continue; \
+ } \
+\
+ ++fmt; \
+\
+ switch(*fmt) \
+ { \
+ case 's': \
+ { \
+ char * argString = kvi_va_arg(list,char *); \
+ argValue = (int)_WSTRING_STRLEN(argString); \
+ if(len <= argValue)return (-1); \
+ while(*argString)*p++ = *argString++; \
+ len -= argValue; \
+ } \
+ break; \
+ case 'S': \
+ { \
+ KviStr * pString = kvi_va_arg(list,KviStr *); \
+ char * argString = pString->ptr(); \
+ if(len <= ((int)(pString->len())))return (-1); \
+ while(*argString)*p++ = *argString++; \
+ len -= pString->len(); \
+ } \
+ break; \
+ case 'Q': \
+ { \
+ QString * pString = kvi_va_arg(list,QString *); \
+ if(pString->length() > 0) \
+ { \
+ if(len <= ((int)(pString->length())))return (-1); \
+ _WSTRING_WMEMCPY(p,pString->unicode(),pString->length()); \
+ p += pString->length(); \
+ len -= pString->length(); \
+ } \
+ } \
+ break; \
+ case 'd': \
+ argValue = kvi_va_arg(list,int); \
+ if(argValue < 0) \
+ { \
+ *p++ = '-'; \
+ if(--len == 0)return (-1); \
+ argValue = -argValue; \
+ if(argValue < 0)argValue = 0; \
+ } \
+ pNumBuf = numberBuffer; \
+ do { \
+ tmp = argValue / 10; \
+ *pNumBuf++ = argValue - (tmp * 10) + '0'; \
+ } while((argValue = tmp)); \
+ argUValue = pNumBuf - numberBuffer; \
+ if(((unsigned int)len) <= argUValue)return (-1); \
+ do { \
+ *p++ = *--pNumBuf; \
+ } while(pNumBuf != numberBuffer); \
+ len -= argUValue; \
+ break; \
+ case 'u': \
+ argUValue = kvi_va_arg(list,unsigned int); \
+ pNumBuf = numberBuffer; \
+ do { \
+ tmp = argUValue / 10; \
+ *pNumBuf++ = argUValue - (tmp * 10) + '0'; \
+ } while((argUValue = tmp)); \
+ argValue = pNumBuf - numberBuffer; \
+ if(len <= argValue)return (-1); \
+ do { \
+ *p++ = *--pNumBuf; \
+ } while(pNumBuf != numberBuffer); \
+ len -= argValue; \
+ break; \
+ case 'f': \
+ { \
+ double dVal = (double)kvi_va_arg(list,double); \
+ char sprintfBuffer[32]; \
+ argValue = sprintf(sprintfBuffer,"%f",dVal); \
+ if(len <= argValue)return (-1); \
+ char * pSprintfBuffer = sprintfBuffer; \
+ while(*pSprintfBuffer)*p++ = *pSprintfBuffer++; \
+ len -= argValue; \
+ } \
+ break; \
+ case 'c': \
+ *p++ = (kvi_wchar_t)kvi_va_arg(list,int); \
+ --len; \
+ break; \
+ default: \
+ *p++ = '%'; \
+ if(--len == 0)return (-1); \
+ if(*fmt){ \
+ *p++ = *fmt; \
+ --len; \
+ } \
+ break; \
+ } \
+ continue; \
+ } \
+ if(len < 1)return (-1); \
+ *p = 0; \
+ return p-buffer;
+
+int kvi_wvsnprintcf(kvi_wchar_t *buffer,kvi_wslen_t len,const char *fmt,kvi_va_list list)
+{
+ WVSNPRINTF_BODY
+}
+
+int kvi_wvsnprintf(kvi_wchar_t *buffer,kvi_wslen_t len,const kvi_wchar_t *fmt,kvi_va_list list)
+{
+ WVSNPRINTF_BODY
+}
+
+bool kvi_qstringEqualCI(const QString &s1,const QString &s2)
+{
+ const QChar * p1 = s1.unicode();
+ const QChar * p2 = s2.unicode();
+ int l = s1.length() < s2.length() ? s1.length() : s2.length();
+#ifdef COMPILE_USE_QT4
+ while(l-- && (p1->toLower() == p2->toLower()))p1++,p2++;
+#else
+ while(l-- && (p1->lower() == p2->lower()))p1++,p2++;
+#endif
+ if(l==-1)return true;
+ return false;
+}
+
+bool kvi_matchStringCI(register const char * exp,register const char * str)
+{
+ // a
+ // .
+ // exp = a*x?mem*a
+ // str = arexoxmexamemizazv
+ // .
+ // n
+ const char * afterWild = 0;
+ const char * nextStrToCheck = 0;
+
+ while(*exp)
+ {
+ if(*exp == '*')
+ {
+ // exp is a wildcard...
+ afterWild = ++exp;
+ nextStrToCheck = str + 1;
+ if(!(*exp))return true; // and it's the last char in the string: matches everything ahead
+ continue;
+ }
+
+ if(!(*str))return false; // str finished but we had something to match :(
+
+ if(tolower(*exp) == tolower(*str))
+ {
+ // chars matched
+ ++exp;
+ ++str;
+ if((!(*exp)) && *str)goto check_recovery;
+ continue;
+ }
+
+ if(*exp == '?')
+ {
+ // any-char wildcard
+ ++exp;
+ ++str;
+ continue;
+ }
+
+check_recovery:
+ // chars unmatched!!!
+ if(afterWild)
+ {
+ // we had a wildcard in exp...
+ // let's use this jolly then
+ exp = afterWild;
+ str = nextStrToCheck;
+ nextStrToCheck++;
+ // and try to compare now
+ continue;
+ }
+
+ return false; // no match :(
+ }
+ return (!(*str));
+}
+
+
+bool kvi_matchStringCS(register const char * exp,register const char * str)
+{
+ // a
+ // .
+ // exp = a*x?mem*a
+ // str = arexoxmexamemizazv
+ // .
+ // n
+ const char * afterWild = 0;
+ const char * nextStrToCheck = 0;
+
+ while(*exp)
+ {
+ if(*exp == '*')
+ {
+ // exp is a wildcard...
+ afterWild = ++exp;
+ nextStrToCheck = str + 1;
+ if(!(*exp))return true; // and it's the last char in the string: matches everything ahead
+ continue;
+ }
+
+ if(!(*str))return false; // str finished but we had something to match :(
+
+ if(*exp == *str)
+ {
+ // chars matched
+ ++exp;
+ ++str;
+ if((!(*exp)) && *str)goto check_recovery;
+ continue;
+ }
+
+ if(*exp == '?')
+ {
+ // any-char wildcard
+ ++exp;
+ ++str;
+ continue;
+ }
+
+check_recovery:
+ // chars unmatched!!!
+ if(afterWild)
+ {
+ // we had a wildcard in exp...
+ // let's use this jolly then
+ exp = afterWild;
+ str = nextStrToCheck;
+ nextStrToCheck++;
+ // and try to compare now
+ continue;
+ }
+
+ return false; // no match :(
+ }
+ return (!(*str));
+}
+
+
+
+bool kvi_matchStringWithTerminator(register const char * exp,register const char * str,char terminator,const char ** r1,const char ** r2)
+{
+#define NOT_AT_END(__str) (*__str && (*__str != terminator))
+
+ // a
+ // .
+ // exp = a*x?mem*a
+ // str = arexoxmexamemizazv
+ // .
+ // n
+ const char * afterWild = 0;
+ const char * nextStrToCheck = 0;
+
+ while(NOT_AT_END(exp))
+ {
+ if(*exp == '*')
+ {
+ // exp is a wildcard...
+ afterWild = ++exp;
+ nextStrToCheck = str + 1;
+ if(!(NOT_AT_END(exp)))
+ {
+ while(NOT_AT_END(str))str++;
+ *r1 = exp;
+ *r2 = str;
+ return true; // and it's the last char in the string: matches everything ahead
+ }
+ continue;
+ }
+
+ if(!(*str))return false; // str finished but we had something to match :(
+
+ if(tolower(*exp) == tolower(*str))
+ {
+ // chars matched
+ ++exp;
+ ++str;
+ if((!(NOT_AT_END(exp))) && NOT_AT_END(str))goto check_recovery;
+ continue;
+ }
+
+ if(*exp == '?')
+ {
+ // any-char wildcard
+ ++exp;
+ ++str;
+ continue;
+ }
+
+check_recovery:
+ // chars unmatched!!!
+ if(afterWild)
+ {
+ // we had a wildcard in exp...
+ // let's use this jolly then
+ exp = afterWild;
+ str = nextStrToCheck;
+ nextStrToCheck++;
+ // and try to compare now
+ continue;
+ }
+
+ return false; // no match :(
+ }
+ *r1 = exp;
+ *r2 = str;
+ return (!(NOT_AT_END(str)));
+
+#undef NOT_AT_END
+}
+
+bool kvi_matchWildExpr(register const char *m1,register const char *m2)
+{
+ //Matches two regular expressions containging wildcards (* and ?)
+
+ // s1
+ // m1
+ // mask1 : *xor
+ // mask2 : xorand*xor
+ // m2
+ // s2
+
+ // s2
+ // m2
+ // |
+ //
+ // *!*@*.net
+ // |
+ // m1
+ // s1
+ //
+
+ if(!(m1 && m2 && (*m1)))return false;
+ const char * savePos1 = 0;
+ const char * savePos2 = m2;
+ while(*m1)
+ {
+ //loop managed by m1 (initially first mask)
+ if(*m1=='*')
+ {
+ //Found a wildcard in m1
+ savePos1 = ++m1; //move to the next char and save the position...this is our jolly
+ if(!*savePos1)return true; //last was a wildcard , matches everything ahead...
+ savePos2 = m2+1; //next return state for the second string
+ continue; //and return
+ }
+ if(!(*m2))return false; //m2 finished and we had something to match here!
+ if(tolower(*m1)==tolower(*m2))
+ {
+ //chars matched
+ m1++; //Go ahead in the two strings
+ m2++; //
+ if((!(*m1)) && *m2 && savePos1)
+ {
+ //m1 finished , but m2 not yet and we have a savePosition for m1 (there was a wildcard)...
+ //retry matching the string following the * from the savePos2 (one char ahead last time)
+ m1 = savePos1; //back to char after wildcard
+ m2 = savePos2; //back to last savePos2
+ savePos2++; //next savePos2 will be next char
+ }
+ } else {
+ if(*m2 == '*')
+ {
+ //A wlidcard in the second string
+ //Invert the game : mask1 <-> mask2
+ //mask2 now leads the game...
+ savePos1 = m1; //aux
+ m1 = m2; //...swap
+ m2 = savePos1; //...swap
+ savePos1 = m1; //sync save pos1
+ savePos2 = m2 + 1; //sync save pos2
+ continue; //...and again
+ }
+ // m1 != m2 , m1 != * , m2 != *
+ if((*m1 == '?') || (*m2 == '?'))
+ {
+ m1++;
+ m2++;
+ if((!(*m1)) && *m2 && savePos1)
+ {
+ //m1 finished , but m2 not yet and we have a savePosition for m1 (there was a wildcard)...
+ //retry matching the string following the * from the savePos2 (one char ahead last time)
+ m1 = savePos1; //back to char after wildcard
+ m2 = savePos2; //back to last savePos2
+ savePos2++; //next savePos2 will be next char
+ }
+ } else {
+ if(savePos1)
+ {
+ //Have a jolly man...allow not matching...
+ m1 = savePos1; //go back to char after wildcard...need to rematch...
+ m2 = savePos2; //back to last savePos2
+ savePos2++; //and set next savePos2
+ } else return false; //No previous wildcards...not matched!
+ }
+ }
+ }
+ return (!(*m2)); //m1 surely finished , so for the match , m2 must be finished too
+
+}
+
+/*
+
+ WARNING: Don't remove: working code but actually unused in KVIrc
+ Later it might become useful
+
+bool kvi_matchWildExprCS(register const char *m1,register const char *m2)
+{
+ if(!(m1 && m2 && (*m1)))return false;
+ const char * savePos1 = 0;
+ const char * savePos2 = m2;
+ while(*m1){ //loop managed by m1 (initially first mask)
+ if(*m1=='*'){
+ //Found a wildcard in m1
+ savePos1 = ++m1; //move to the next char and save the position...this is our jolly
+ if(!*savePos1)return true; //last was a wildcard , matches everything ahead...
+ savePos2 = m2+1; //next return state for the second string
+ continue; //and return
+ }
+ if(!(*m2))return false; //m2 finished and we had something to match here!
+ if((*m1)==(*m2)){
+ //chars matched
+ m1++; //Go ahead in the two strings
+ m2++; //
+ if((!(*m1)) && *m2 && savePos1){
+ //m1 finished , but m2 not yet and we have a savePosition for m1 (there was a wildcard)...
+ //retry matching the string following the * from the savePos2 (one char ahead last time)
+ m1 = savePos1; //back to char after wildcard
+ m2 = savePos2; //back to last savePos2
+ savePos2++; //next savePos2 will be next char
+ }
+ } else {
+ if(*m2 == '*'){
+ //A wlidcard in the second string
+ //Invert the game : mask1 <-> mask2
+ //mask2 now leads the game...
+ savePos1 = m1; //aux
+ m1 = m2; //...swap
+ m2 = savePos1; //...swap
+ savePos1 = m1; //sync save pos1
+ savePos2 = m2 + 1; //sync save pos2
+ continue; //...and again
+ }
+ if(savePos1){ //Have a jolly man...allow not matching...
+ m1 = savePos1; //go back to char after wildcard...need to rematch...
+ m2 = savePos2; //back to last savePos2
+ savePos2++; //and set next savePos2
+ } else return false; //No previous wildcards...not matched!
+ }
+ }
+ return (!(*m2)); //m1 surely finished , so for the match , m2 must be finished too
+
+}
+*/
+
+bool kvi_matchWildExprWithTerminator(register const char *m1,register const char *m2,char terminator,
+ const char ** r1,const char ** r2)
+{
+ //Matches two regular expressions containging wildcards
+
+#define NOT_AT_END(__str) (*__str && (*__str != terminator))
+
+ bool bSwapped = false;
+ if(!(m1 && m2 && (NOT_AT_END(m1))))return false;
+ const char * savePos1 = 0;
+ const char * savePos2 = m2;
+ while(NOT_AT_END(m1))
+ {
+ //loop managed by m1 (initially first mask)
+ if(*m1=='*')
+ {
+ //Found a wildcard in m1
+ savePos1 = ++m1; //move to the next char and save the position...this is our jolly
+ if(!NOT_AT_END(savePos1))
+ {
+ //last was a wildcard , matches everything ahead...
+ while(NOT_AT_END(m2))m2++;
+ *r1 = bSwapped ? m2 : m1;
+ *r2 = bSwapped ? m1 : m2;
+ return true;
+ }
+ savePos2 = m2+1; //next return state for the second string
+ continue; //and return
+ }
+ if(!NOT_AT_END(m2))return false; //m2 finished and we had something to match here!
+ if(tolower(*m1)==tolower(*m2))
+ {
+ //chars matched
+ m1++; //Go ahead in the two strings
+ m2++; //
+ if((!NOT_AT_END(m1)) && NOT_AT_END(m2) && savePos1)
+ {
+ //m1 finished , but m2 not yet and we have a savePosition for m1 (there was a wildcard)...
+ //retry matching the string following the * from the savePos2 (one char ahead last time)
+ m1 = savePos1; //back to char after wildcard
+ m2 = savePos2; //back to last savePos2
+ savePos2++; //next savePos2 will be next char
+ }
+ } else {
+ if(*m2 == '*')
+ {
+ //A wlidcard in the second string
+ //Invert the game : mask1 <-> mask2
+ //mask2 now leads the game...
+ bSwapped = !bSwapped;
+ savePos1 = m1; //aux
+ m1 = m2; //...swap
+ m2 = savePos1; //...swap
+ savePos1 = m1; //sync save pos1
+ savePos2 = m2 + 1; //sync save pos2
+ continue; //...and again
+ }
+ // m1 != m2 , m1 != * , m2 != *
+ if((*m1 == '?') || (*m2 == '?'))
+ {
+ m1++;
+ m2++;
+ if((!NOT_AT_END(m1)) && NOT_AT_END(m2) && savePos1)
+ {
+ //m1 finished , but m2 not yet and we have a savePosition for m1 (there was a wildcard)...
+ //retry matching the string following the * from the savePos2 (one char ahead last time)
+ m1 = savePos1; //back to char after wildcard
+ m2 = savePos2; //back to last savePos2
+ savePos2++; //next savePos2 will be next char
+ }
+ } else {
+ if(savePos1)
+ {
+ //Have a jolly man...allow not matching...
+ m1 = savePos1; //go back to char after wildcard...need to rematch...
+ m2 = savePos2; //back to last savePos2
+ savePos2++; //and set next savePos2
+ } else return false; //No previous wildcards...not matched!
+ }
+ }
+ }
+ *r1 = bSwapped ? m2 : m1;
+ *r2 = bSwapped ? m1 : m2;
+
+ return (!NOT_AT_END(m2)); //m1 surely finished , so for the match , m2 must be finished too
+
+#undef NOT_AT_END
+}
+
+
+
+const char * kvi_extractToken(KviStr &str,const char *aux_ptr,char sep)
+{
+ __range_valid(aux_ptr);
+ while(*aux_ptr && (*aux_ptr == sep))aux_ptr++;
+ const char *p=aux_ptr;
+ while(*p && (*p != sep))p++;
+ str.m_len=p-aux_ptr;
+ str.m_ptr = (char *)kvi_realloc(str.m_ptr,str.m_len+1);
+ kvi_fastmove(str.m_ptr,aux_ptr,str.m_len);
+ *(str.m_ptr+str.m_len)='\0';
+ while(*p && (*p == sep))p++;
+ return p;
+}
+
+const char * kvi_extractUpTo(KviStr &str,const char *aux_ptr,char sep)
+{
+ __range_valid(aux_ptr);
+ const char *p=aux_ptr;
+ while(*p && (*p != sep))p++;
+ str.m_len=p-aux_ptr;
+ str.m_ptr = (char *)kvi_realloc(str.m_ptr,str.m_len+1);
+ kvi_fastmove(str.m_ptr,aux_ptr,str.m_len);
+ *(str.m_ptr+str.m_len)='\0';
+ return p;
+}
+
+int kvi_vsnprintf(char *buffer,int len,const char *fmt,kvi_va_list list)
+{
+ __range_valid(fmt);
+ __range_valid(buffer);
+ __range_valid(len > 0); //printing 0 characters is senseless
+
+ register char *p;
+ char *argString;
+ long argValue;
+ unsigned long argUValue;
+
+ //9999999999999999999999999999999\0
+ char numberBuffer[32]; //enough ? 10 is enough for 32bit unsigned int...
+ char *pNumBuf;
+ unsigned int tmp;
+
+
+ for(p=buffer ; *fmt ; ++fmt)
+ {
+ if(len < 1)return (-1); //not enough space ... (in fact this could be len < 2 for the terminator)
+ //copy up to a '%'
+ if(*fmt != '%')
+ {
+ *p++ = *fmt;
+ --len;
+ continue;
+ }
+
+ ++fmt; //skip this '%'
+ switch(*fmt)
+ {
+ case 's': //string
+ argString = kvi_va_arg(list,char *);
+ if(!argString)continue;
+ argValue = (long)strlen(argString);
+ //check for space...
+ if(len <= argValue)return (-1); //not enough space for buffer and terminator
+ while(*argString)*p++ = *argString++;
+ len -= argValue;
+ continue;
+ case 'd': //signed integer
+ argValue = kvi_va_arg(list,int);
+ if(argValue < 0){ //negative integer
+ *p++ = '-';
+ if(--len == 0)return (-1);
+ argValue = -argValue; //need to have it positive
+ // most negative integer exception (avoid completely senseless (non digit) responses)
+ if(argValue < 0)argValue = 0; //we get -0 here
+ }
+ //write the number in a temporary buffer
+ pNumBuf = numberBuffer;
+ do {
+ tmp = argValue / 10;
+ *pNumBuf++ = argValue - (tmp * 10) + '0';
+ } while((argValue = tmp));
+ //copy now....
+ argUValue = pNumBuf - numberBuffer; //length of the number string
+ if(((uint)len) <= argUValue)return (-1); //not enough space for number and terminator
+ do { *p++ = *--pNumBuf; } while(pNumBuf != numberBuffer);
+ len -= argUValue;
+ continue;
+ case 'u': //unsigned integer
+ argUValue = kvi_va_arg(list,unsigned int); //many implementations place int here
+ //write the number in a temporary buffer
+ pNumBuf = numberBuffer;
+ do {
+ tmp = argUValue / 10;
+ *pNumBuf++ = argUValue - (tmp * 10) + '0';
+ } while((argUValue = tmp));
+ //copy now....
+ argValue = pNumBuf - numberBuffer; //length of the number string
+ if(len <= argValue)return (-1); //not enough space for number and terminator
+ do { *p++ = *--pNumBuf; } while(pNumBuf != numberBuffer);
+ len -= argValue;
+ continue;
+ case 'c': //char
+ //
+ // I'm not sure about this...
+ // In the linux kernel source the
+ // unsigned char is extracted from an integer type.
+ // We assume that gcc stacks a char argument
+ // as sizeof(int) bytes value.
+ // Is this always true ?
+ //
+ *p++ = (char)kvi_va_arg(list,int);
+ --len;
+ continue;
+ case 'Q': // QString! (this should almost never happen)
+ {
+ QString * s = kvi_va_arg(list,QString *);
+ KviQCString cs = KviQString::toUtf8(*s);
+ const char * t = cs.data();
+ if(!t)continue; // nothing to do
+ //check for space...
+ if(len <= (int)cs.length())return (-1); //not enough space for buffer and terminator
+ while(*t)*p++ = *t++;
+ len -= cs.length();
+ continue;
+ }
+ default: //a normal percent
+ *p++ = '%'; //write it
+ if(--len == 0)return (-1); //not enough space for next char or terminator
+ if(*fmt){ //this if is just in case that we have a % at the end of the string.
+ *p++ = *fmt; //and write this char
+ --len;
+ }
+ continue;
+ }
+ }
+ if(len < 1)return (-1); //missing space for terminator
+ *p = '\0';
+ return p-buffer;
+}
+
+//
+// Nearly the same as the above function...
+//
+
+int kvi_irc_vsnprintf(char *buffer,const char *fmt,kvi_va_list list,bool *bTruncated)
+{
+ __range_valid(fmt);
+ __range_valid(buffer);
+ if( !( buffer && fmt) ) return false;
+ register char *p;
+ char *argString;
+ long argValue;
+ unsigned long argUValue;
+ char numberBuffer[64]; //enough ? 10 is enough for 32bit unsigned int...
+ char *pNumBuf;
+ unsigned int tmp;
+ *bTruncated = false;
+ int len = 512;
+
+ for (p=buffer ; *fmt ; ++fmt) {
+ if(len < 3)goto truncate;
+ //copy up to a '%'
+ if (*fmt != '%') {
+ *p++ = *fmt;
+ --len;
+ continue;
+ }
+ ++fmt; //skip this '%'
+ switch(*fmt){
+ case 's': //string
+ argString = kvi_va_arg(list,char *);
+ if(!argString)continue;
+ //check for space...
+ while(*argString){
+ *p++ = *argString++;
+ if(--len < 3)goto truncate;
+ }
+ continue;
+ case 'Q': // QString! (this should almost never happen)
+ {
+ QString * s = kvi_va_arg(list,QString *);
+ KviQCString cs = KviQString::toUtf8(*s);
+ const char * t = cs.data();
+ if(!t)continue; // nothing to do
+ while(*t)
+ {
+ *p++ = *t++;
+ if(--len < 3)goto truncate;
+ }
+ continue;
+ }
+ case 'd': //signed integer
+ argValue = kvi_va_arg(list,int);
+ if(argValue < 0){ //negative integer
+ *p++ = '-';
+ if(--len < 3)goto truncate; //place just for CRLF
+ argValue = -argValue; //need to have it positive
+ if(argValue < 0)argValue = 0; // -0 (hack the exception)
+ }
+ //write the number in a temporary buffer
+ pNumBuf = numberBuffer;
+ do {
+ tmp = argValue / 10;
+ *pNumBuf++ = argValue - (tmp * 10) + '0';
+ } while((argValue = tmp));
+ //copy now....
+ do {
+ *p++ = *--pNumBuf;
+ if(--len < 3)goto truncate;
+ } while(pNumBuf != numberBuffer);
+ continue;
+ case 'u': //unsigned integer
+ argUValue = kvi_va_arg(list,unsigned int); //many implementations place int here
+ //write the number in a temporary buffer
+ pNumBuf = numberBuffer;
+ do {
+ tmp = argUValue / 10;
+ *pNumBuf++ = argUValue - (tmp * 10) + '0';
+ } while((argUValue = tmp));
+ //copy now....
+ if(--len < 3)goto truncate; //no place for digits
+ do {
+ *p++ = *--pNumBuf;
+ if(--len < 3)goto truncate;
+ } while(pNumBuf != numberBuffer);
+ continue;
+ case 'c': //char
+ *p++ = (char)kvi_va_arg(list,int);
+ --len;
+ continue;
+ default: //a normal percent
+ *p++ = '%'; //write it
+ if(--len < 3)goto truncate; //not enough space for next char
+ if(*fmt){ //this if is just in case that we have a % at the end of the string.
+ *p++ = *fmt; //and write this char
+ --len;
+ }
+ continue;
+ }
+ }
+ //succesfull finish
+ __range_valid(len >= 2);
+ *p++ = '\r';
+ *p = '\n';
+ return ((p-buffer)+1);
+truncate:
+ __range_valid(len >= 2);
+ *bTruncated = true;
+ *p++ = '\r';
+ *p = '\n';
+ return ((p-buffer)+1);
+}
+
+#ifndef COMPILE_ix86_ASM
+
+bool kvi_strEqualCS(const char *str1,const char *str2)
+{
+ __range_valid(str1);
+ __range_valid(str2);
+ if( !( str1 && str2 ) ) return false;
+ register unsigned char *s1 = (unsigned char *)str1;
+ register unsigned char *s2 = (unsigned char *)str2;
+ while(*s1)if(*s1++ != *s2++)return false;
+ return (*s1 == *s2);
+}
+
+bool kvi_strEqualCSN(const char *str1,const char *str2,int len)
+{
+ __range_valid(str1);
+ __range_valid(str2);
+ __range_valid(len >= 0);
+ if( !( str1 && str2 && (len >= 0) ) ) return false;
+ register unsigned char *s1 = (unsigned char *)str1;
+ register unsigned char *s2 = (unsigned char *)str2;
+ while(len-- && *s1)if(*s1++ != *s2++)return false;
+ return (len < 0);
+}
+
+#endif
+
+bool kvi_strEqualCIN(const char *str1,const char *str2,int len)
+{
+ __range_valid(str1);
+ __range_valid(str2);
+ __range_valid(len >= 0);
+ if( !( str1 && str2 && (len >= 0) ) ) return false;
+ register unsigned char *s1 = (unsigned char *)str1;
+ register unsigned char *s2 = (unsigned char *)str2;
+ while(len-- && *s1)if(tolower(*s1++) != tolower(*s2++))return false;
+ return (len < 0);
+}
+
+bool kvi_strEqualCI(const char *str1,const char *str2)
+{
+ __range_valid(str1);
+ __range_valid(str2);
+ if( !( str1 && str2) ) return false;
+ register unsigned char *s1 = (unsigned char *)str1;
+ register unsigned char *s2 = (unsigned char *)str2;
+ while(*s1)if(tolower(*s1++) != tolower(*s2++))return false;
+ return (*s1 == *s2);
+}
+
+//note that greater here means that come AFTER in the alphabetic order
+// return < 0 ---> str1 < str2
+// return = 0 ---> str1 = str2
+// return > 0 ---> str1 > str2
+int kvi_strcmpCI(const char *str1,const char *str2)
+{
+ //abcd abce
+ __range_valid(str1);
+ __range_valid(str2);
+ if( !( str1 && str2) ) return false;
+ register unsigned char *s1 = (unsigned char *)str1;
+ register unsigned char *s2 = (unsigned char *)str2;
+ int diff;
+ unsigned char rightchar;
+ while(!(diff=(rightchar=tolower(*s1++)) - tolower(*s2++)))if(!rightchar)break;
+ return diff; //diff is nonzero or end of both was reached (it is positive if *s2 > *s1
+}
+
+//
+////note that greater here means that come AFTER in the alphabetic order
+//// return < 0 ---> str1 < str2
+//// return = 0 ---> str1 = str2
+//// return > 0 ---> str1 > str2
+//int kvi_strcmpCIN(const char *str1,const char *str2,int len)
+//{
+// //abcd abce
+// __range_valid(str1);
+// __range_valid(str2);
+// register unsigned char *s1 = (unsigned char *)str1;
+// register unsigned char *s2 = (unsigned char *)str2;
+// int diff;
+// unsigned char rightchar;
+// while(len--)
+// {
+// if(!(diff=(rightchar=tolower(*s1++)) - tolower(*s2++)))break;
+// if(!rightchar)break;
+// }
+// return diff; //diff is nonzero or end of both was reached (it is positive if *s2 > *s1
+//}
+
+int kvi_strcmpCS(const char *str1,const char *str2)
+{
+ //abcd abce
+ __range_valid(str1);
+ __range_valid(str2);
+ if( !( str1 && str2) ) return false;
+ register unsigned char *s1 = (unsigned char *)str1;
+ register unsigned char *s2 = (unsigned char *)str2;
+ int diff;
+ while(!(diff=(*s1)-(*s2++)))if(!*s1++)break;
+ return diff; //diff is nonzero or end of both was reached (it is positive if *s2 > *s1
+}
+
+int kvi_strMatchRevCS(const char *str1, const char *str2, int index)
+{
+ __range_valid(str1);
+ __range_valid(str2);
+ if( !( str1 && str2) ) return false;
+ register char *s1=(char *)str1;
+ register char *s2=(char *)str2;
+
+ int curlen=(int)strlen(str1);
+ int diff;
+
+ if (index<0 || index >= curlen) index = curlen-1;
+
+ s1+=index;
+ while (*s2) s2++;
+ s2--;
+
+ // now start comparing
+ while (1){
+ /* in this case, we have str1 = "lo" and str2 = "hello" */
+ if (s1<str1 && !(s2<str2)) return 256;
+ if (s2<str2) return 0;
+ if ((diff=(*s1)-(*s2))) return diff;
+ s1--;
+ s2--;
+ }
+}
+
+KviStr::KviStr()
+{
+ m_ptr = (char *)kvi_malloc(1);
+ *m_ptr = '\0';
+ m_len = 0;
+}
+
+KviStr::KviStr(const char *str)
+{
+ //Deep copy constructor
+ if(str){
+ //Deep copy
+ m_len = (int)strlen(str);
+ m_ptr = (char *)kvi_malloc(m_len+1);
+ kvi_fastmove(m_ptr,str,m_len+1);
+ } else {
+ m_ptr = (char *)kvi_malloc(1);
+ *m_ptr = '\0';
+ m_len = 0;
+ }
+}
+
+KviStr::KviStr(const KviQCString &str)
+{
+ //Deep copy constructor
+ if(str.data())
+ {
+ //Deep copy
+ m_len = str.length();
+ m_ptr = (char *)kvi_malloc(m_len+1);
+ kvi_fastmove(m_ptr,str,m_len+1);
+ } else {
+ m_ptr = (char *)kvi_malloc(1);
+ *m_ptr = '\0';
+ m_len = 0;
+ }
+}
+
+
+KviStr::KviStr(const char *str,int len)
+{
+ __range_valid(str);
+ //__range_valid(len <= ((int)strlen(str))); <-- we trust the user here (and a strlen() call may run AFTER len if data is not null terminated)
+ __range_valid(len >= 0);
+ m_len = len;
+ m_ptr = (char *)kvi_malloc(m_len+1);
+ kvi_fastmove(m_ptr,str,m_len);
+ *(m_ptr+m_len) = '\0';
+}
+
+KviStr::KviStr(const char *bg,const char *end)
+{
+ __range_valid(bg);
+ __range_valid(end);
+ __range_valid(bg <= end);
+ m_len = end-bg;
+ m_ptr = (char *)kvi_malloc(m_len +1);
+ kvi_fastmove(m_ptr,bg,m_len);
+ *(m_ptr + m_len)='\0';
+}
+
+KviStr::KviStr(KviFormatConstructorTag tag,const char *fmt,...)
+{
+ m_ptr=(char *)kvi_malloc(256);
+ //First try
+ kvi_va_list list;
+ kvi_va_start(list,fmt);
+ //print...with max 256 chars
+ m_len=kvi_vsnprintf(m_ptr,256,fmt,list);
+ kvi_va_end(list);
+
+ //check if we failed
+ if(m_len < 0){
+ //yes , failed....
+ int dummy=256;
+ do{ //we failed , so retry with 256 more chars
+ dummy+=256;
+ //realloc
+ m_ptr=(char *)kvi_realloc(m_ptr,dummy);
+ //print...
+ kvi_va_start(list,fmt);
+ m_len=kvi_vsnprintf(m_ptr,dummy,fmt,list);
+ kvi_va_end(list);
+ } while(m_len < 0);
+ }
+ //done...
+ //now m_len is the length of the written string not including the terminator...
+ //perfect! :)
+ m_ptr=(char *)kvi_realloc(m_ptr,m_len+1);
+}
+
+KviStr::KviStr(const KviStr &str)
+{
+ __range_valid(str.m_ptr);
+ m_len = str.m_len;
+ m_ptr = (char *)kvi_malloc(m_len+1);
+ kvi_fastmove(m_ptr,str.m_ptr,m_len+1);
+}
+
+KviStr::KviStr(const QString &str)
+{
+ KviQCString sz = KviQString::toUtf8(str);
+ if(sz.length() > 0)
+ {
+ m_len = sz.length();
+ m_ptr = (char *)kvi_malloc(m_len+1);
+ kvi_fastmove(m_ptr,sz.data(),m_len+1);
+ } else {
+ m_ptr = (char *)kvi_malloc(1);
+ *m_ptr = '\0';
+ m_len = 0;
+ }
+}
+
+KviStr::KviStr(char c,int fillLen)
+{
+ __range_valid(fillLen >= 0);
+ m_len = fillLen;
+ m_ptr = (char *)kvi_malloc(m_len+1);
+ register char *p=m_ptr;
+ while(fillLen--)*p++=c;
+ *p='\0';
+}
+
+
+KviStr::KviStr(const kvi_wchar_t * unicode)
+{
+ if(!unicode)
+ {
+ m_len = 0;
+ m_ptr = (char *)kvi_malloc(1);
+ *m_ptr = 0;
+ } else {
+ m_len = kvi_wstrlen(unicode);
+ m_ptr = (char *)kvi_malloc(m_len + 1);
+ register char * p = m_ptr;
+ while(*unicode)*p++ = *unicode++;
+ *p = 0;
+ }
+}
+
+KviStr::KviStr(const kvi_wchar_t * unicode,int len)
+{
+ m_len = len;
+ m_ptr = (char *)kvi_malloc(m_len + 1);
+ register char * p = m_ptr;
+ char * end = p + len;
+ while(p != end)
+ {
+ *p++ = *unicode++;
+ }
+ *p = 0;
+}
+
+
+
+
+KviStr::~KviStr()
+{
+ kvi_free(m_ptr);
+}
+
+void KviStr::setLength(int iLen)
+{
+ __range_valid(iLen >= 0);
+ m_len = iLen;
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
+ *(m_ptr + m_len) = '\0';
+}
+
+KviStr & KviStr::operator=(const KviStr &str)
+{
+ __range_valid(str.m_ptr);
+ __range_valid(str.m_ptr != m_ptr);
+ m_len = str.m_len;
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
+ kvi_fastmove(m_ptr,str.m_ptr,m_len+1);
+ return (*this);
+}
+
+KviStr & KviStr::operator=(const KviQCString &str)
+{
+ m_len = str.length();
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
+ if(str.data())kvi_fastmove(m_ptr,str.data(),m_len+1);
+ else *m_ptr = 0;
+ return (*this);
+}
+
+KviStr & KviStr::operator=(const char *str)
+{
+ //__range_valid(str);
+ if(str){
+ m_len = (int)strlen(str);
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
+ kvi_memmove(m_ptr,str,m_len+1);
+ } else {
+ m_ptr = (char *)kvi_realloc(m_ptr,1);
+ *m_ptr = '\0';
+ m_len = 0;
+ }
+ return (*this);
+}
+
+void KviStr::clear()
+{
+ m_ptr = (char *)kvi_realloc(m_ptr,1);
+ *m_ptr = '\0';
+ m_len = 0;
+}
+
+
+bool KviStr::hasNonWhiteSpaceData() const
+{
+ const char * aux = m_ptr;
+ while(*aux)
+ {
+ if(((*aux) != ' ') && ((*aux) != '\t'))return true;
+ aux++;
+ }
+ return false;
+}
+
+static char hexdigits[16] = { '0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f' };
+
+void KviStr::bufferToHex(const char *buffer,int len)
+{
+ __range_valid(buffer);
+ m_len = (len * 2);
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len + 1);
+ char * aux = m_ptr;
+ while(len)
+ {
+ *aux = hexdigits[(unsigned int)(((unsigned char)(*buffer)) / 16)];
+ aux++;
+ *aux = hexdigits[(unsigned int)(((unsigned char)(*buffer)) % 16)];
+ aux++;
+ len--;
+ buffer++;
+ }
+ *(m_ptr+m_len) = '\0';
+}
+
+
+
+static char get_decimal_from_hex_digit_char(char dgt)
+{
+ if((dgt >= '0') && (dgt <= '9'))return (dgt - '0');
+ if((dgt >= 'A') && (dgt <= 'F'))return (10 + (dgt - 'A'));
+ if((dgt >= 'a') && (dgt <= 'f'))return (10 + (dgt - 'a'));
+ return -1;
+}
+
+// This is just error-correcting...it treats non hex stuff as zeros
+/*
+static inline char get_decimal_from_hex_digit_char(char dgt)
+{
+ char c = pedantic_get_decimal_from_hex_digit(dgt);
+ if(c == -1)return 0;
+ return c;
+}
+
+int KviStr::hexToBuffer(char ** buffer,bool bNullToNewlines)
+{
+ int len;
+ if(m_len % 2)len = (m_len / 2) + 1;
+ else len = (m_len / 2);
+ *buffer = (char *)kvi_malloc(len);
+
+ char * ptr = *buffer;
+
+ char * aux = m_ptr;
+ while(*aux)
+ {
+ *ptr = get_decimal_from_hex_digit_char(*aux) * 16;
+ aux++;
+ if(*aux)
+ {
+ *ptr += get_decimal_from_hex_digit_char(*aux);
+ aux++;
+ }
+ if(bNullToNewlines)if(!(*ptr))*ptr = '\n';
+ ptr++;
+ }
+ return len;
+}
+*/
+
+int KviStr::hexToBuffer(char ** buffer,bool bNullToNewlines)
+{
+ *buffer = 0;
+ if((m_len == 0) || (m_len & 1))return -1; // this is an error
+ int len = (m_len / 2);
+ if(len < 1)return -1;
+ *buffer = (char *)kvi_malloc(len);
+
+ char * ptr = *buffer;
+ char * aux = m_ptr;
+
+ char aux2;
+
+ while(*aux)
+ {
+ *ptr = get_decimal_from_hex_digit_char(*aux) * 16;
+ if(*ptr == -1)
+ {
+ kvi_free(*buffer);
+ *buffer = 0;
+ return -1;
+ }
+ aux++;
+ aux2 = get_decimal_from_hex_digit_char(*aux);
+ if(aux2 == -1)
+ {
+ kvi_free(*buffer);
+ *buffer = 0;
+ return -1;
+ }
+ *ptr += aux2;
+ aux++;
+ if(bNullToNewlines)if(!(*ptr))*ptr = '\n';
+ ptr++;
+ }
+ return len;
+}
+
+static const char * base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+
+
+void KviStr::bufferToBase64(const char * buffer,int len)
+{
+ m_len = (len / 3) << 2;
+ if(len % 3)m_len += 4;
+
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len + 1);
+
+ unsigned char aux1,aux2,aux3;
+ char * aux_ptr = m_ptr;
+ while(len > 2)
+ {
+ aux1 = (unsigned char)*buffer++;
+ aux2 = (unsigned char)*buffer++;
+ aux3 = (unsigned char)*buffer++;
+ *aux_ptr++ = base64_chars[(aux1 & 0xFC) >> 2];
+ *aux_ptr++ = base64_chars[((aux1 & 0x03) << 4) | ((aux2 & 0xF0) >> 4)];
+ *aux_ptr++ = base64_chars[((aux2 & 0x0F) << 2) | ((aux3 & 0xC0) >> 6)];
+ *aux_ptr++ = base64_chars[(aux3 & 0x3F)];
+ len -= 3;
+ }
+ switch(len)
+ {
+ case 2:
+ aux1 = (unsigned char)*buffer++;
+ aux2 = (unsigned char)*buffer++;
+ *aux_ptr++ = base64_chars[(aux1 & 0xFC) >> 2];
+ *aux_ptr++ = base64_chars[((aux1 & 0x03) << 4) | ((aux2 & 0xF0) >> 4)];
+ *aux_ptr++ = base64_chars[((aux2 & 0x0F) << 2)];
+ *aux_ptr++ = '=';
+ break;
+ case 1:
+ aux1 = (unsigned char)*buffer++;
+ aux2 = (unsigned char)*buffer++;
+ *aux_ptr++ = base64_chars[(aux1 & 0xFC) >> 2];
+ *aux_ptr++ = base64_chars[((aux1 & 0x03) << 4)];
+ *aux_ptr++ = '=';
+ *aux_ptr++ = '=';
+ break;
+ }
+ *aux_ptr = 0;
+}
+
+static unsigned char get_base64_idx(char base64)
+{
+ if((base64 >= 'A') && (base64 <= 'Z'))return (base64 - 'A');
+ if((base64 >= 'a') && (base64 <= 'z'))return ((base64 - 'a') + 26);
+ if((base64 >= '0') && (base64 <= '9'))return ((base64 - '0') + 52);
+ if(base64 == '+')return 62;
+ if(base64 == '/')return 63;
+ if(base64 == '=')return 64;
+ return 65;
+}
+
+
+int KviStr::base64ToBuffer(char ** buffer,bool bNullToNewlines)
+{
+ *buffer = 0;
+ if((m_len == 0) || (m_len & 3))return -1; // this is an error
+ int len = (m_len >> 2) * 3;
+ *buffer = (char *)kvi_malloc(len);
+
+ char * auxBuf = *buffer;
+
+ unsigned char aux1,aux2,aux3,aux4;
+ char * aux_ptr = m_ptr;
+
+ int newLen = len;
+
+ while(*aux_ptr)
+ {
+ if(newLen != len)
+ {
+ // ops... there was a padding and we still have chars after it
+ // this is an error
+ kvi_free(*buffer);
+ *buffer = 0;
+ return -1;
+ }
+ aux1 = get_base64_idx(*aux_ptr++);
+ aux2 = get_base64_idx(*aux_ptr++);
+ aux3 = get_base64_idx(*aux_ptr++);
+ aux4 = get_base64_idx(*aux_ptr++);
+ if((aux3 > 64) || (aux4 > 64))
+ {
+ // error
+ kvi_free(*buffer);
+ *buffer = 0;
+ return -1;
+ }
+ if((aux1 | aux2) > 63)
+ {
+ // again error...impossible padding
+ kvi_free(*buffer);
+ *buffer = 0;
+ return -1;
+ }
+ if(aux4 == 64)
+ {
+ if(aux3 == 64)
+ {
+ // Double padding, only one digit here
+ *auxBuf++ = (char)((aux1 << 2) | (aux2 >> 4));
+ newLen -= 2;
+ } else {
+ // Single padding, two digits here
+ *auxBuf++ = (char)((aux1 << 2) | (aux2 >> 4)); // >> 4 is a shr , not a ror! :)
+ *auxBuf++ = (char)((aux2 << 4) | (aux3 >> 2));
+ newLen -= 1;
+ }
+ } else {
+ if(aux3 == 64)
+ {
+ // error... impossible padding
+ kvi_free(*buffer);
+ *buffer = 0;
+ return -1;
+ } else {
+ // Ok , no padding, three digits here
+ *auxBuf++ = (char)((aux1 << 2) | (aux2 >> 4));
+ *auxBuf++ = (char)((aux2 << 4) | (aux3 >> 2));
+ *auxBuf++ = (char)((aux3 << 6) | aux4);
+ }
+ }
+ }
+
+ if(newLen != len)*buffer = (char *)kvi_realloc(*buffer,newLen);
+ return newLen;
+}
+
+KviStr & KviStr::setStr(const char *str,int len)
+{
+ if(!str)
+ {
+ clear();
+ return *this;
+ }
+ int alen = (int)strlen(str);
+ if((len < 0) || (len > alen))m_len = alen;
+ else m_len = len;
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
+ kvi_memmove(m_ptr,str,m_len);
+ *(m_ptr+m_len) = '\0';
+ return (*this);
+}
+
+KviStr & KviStr::operator=(const QString &str)
+{
+ KviQCString sz = KviQString::toUtf8(str);
+ if(sz.length() > 0){
+ m_len = sz.length();
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
+ kvi_fastmove(m_ptr,sz.data(),m_len+1);
+ } else {
+ m_ptr = (char *)kvi_realloc(m_ptr,1);
+ *m_ptr = '\0';
+ m_len = 0;
+ }
+ return (*this);
+}
+
+KviStr & KviStr::operator=(char c)
+{
+ m_len = 1;
+ m_ptr = (char *)kvi_realloc(m_ptr,2);
+ *m_ptr = c;
+ *(m_ptr+1)='\0';
+ return (*this);
+}
+
+void KviStr::append(char c)
+{
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+2);
+ *(m_ptr+m_len)=c;
+ m_len++;
+ *(m_ptr+m_len)='\0';
+}
+
+void KviStr::append(const KviStr &str)
+{
+ __range_valid(str.m_ptr);
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+str.m_len+1);
+ kvi_fastmove((m_ptr+m_len),str.m_ptr,str.m_len+1);
+ m_len += str.m_len;
+}
+
+void KviStr::append(const char *str)
+{
+ if(!str)return;
+ int len = (int)strlen(str);
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+len+1);
+ kvi_fastmove((m_ptr+m_len),str,len+1);
+ m_len += len;
+}
+
+void KviStr::append(const QString &str)
+{
+ KviQCString sz = KviQString::toUtf8(str);
+ if(sz.length() < 1)return;
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+sz.length()+1);
+ kvi_fastmove((m_ptr+m_len),sz.data(),sz.length()+1);
+ m_len += sz.length();
+}
+
+void KviStr::append(const char *str,int len)
+{
+ __range_valid(str);
+// __range_valid(len <= ((int)strlen(str)));
+ __range_valid(len >= 0);
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+len+1);
+ kvi_fastmove((m_ptr+m_len),str,len);
+ m_len += len;
+ *(m_ptr + m_len)='\0';
+}
+
+void KviStr::append(KviFormatConstructorTag tag,const char *fmt,...)
+{
+ int auxLen;
+ m_ptr=(char *)kvi_realloc(m_ptr,m_len + 256);
+ //First try
+ kvi_va_list list;
+ kvi_va_start(list,fmt);
+ //print...with max 256 chars
+ auxLen =kvi_vsnprintf(m_ptr + m_len,256,fmt,list);
+ kvi_va_end(list);
+
+ //check if we failed
+ if(auxLen < 0){
+ //yes , failed....
+ int dummy=256;
+ do{ //we failed , so retry with 256 more chars
+ dummy+=256;
+ //realloc
+ m_ptr=(char *)kvi_realloc(m_ptr,m_len + dummy);
+ //print...
+ kvi_va_start(list,fmt);
+ auxLen=kvi_vsnprintf(m_ptr + m_len,dummy,fmt,list);
+ kvi_va_end(list);
+ } while(auxLen < 0);
+ }
+ m_len += auxLen;
+ //done...
+ //now m_len is the length of the written string not including the terminator...
+ //perfect! :)
+ m_ptr=(char *)kvi_realloc(m_ptr,m_len+1);
+}
+
+void KviStr::extractFromString(const char *begin,const char *end)
+{
+ __range_valid(begin);
+ __range_valid(end);
+ __range_valid(end >= begin);
+ m_len = end-begin;
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
+ kvi_fastmove(m_ptr,begin,m_len);
+ *(m_ptr + m_len)='\0';
+}
+
+void KviStr::prepend(const KviStr &str)
+{
+ __range_valid(str.m_ptr);
+ __range_valid(str.m_ptr != m_ptr);
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+str.m_len+1);
+ kvi_memmove((m_ptr+str.m_len),m_ptr,m_len+1); //move self
+ kvi_fastmove(m_ptr,str.m_ptr,str.m_len);
+ m_len += str.m_len;
+}
+
+void KviStr::prepend(const char *str)
+{
+ if(!str)return;
+ int len = (int)strlen(str);
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+len+1);
+ kvi_memmove((m_ptr+len),m_ptr,m_len+1); //move self
+ kvi_fastmove(m_ptr,str,len);
+ m_len += len;
+}
+
+void KviStr::prepend(const char *str,int len)
+{
+ __range_valid(str);
+ __range_valid(len <= ((int)strlen(str)));
+ __range_valid(len >= 0);
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+len+1);
+ kvi_memmove((m_ptr+len),m_ptr,m_len+1); //move self
+ kvi_fastmove(m_ptr,str,len);
+ m_len += len;
+}
+
+unsigned char iso88591_toUpper_map[256]=
+{
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
+};
+
+void KviStr::toUpperISO88591()
+{
+ register char *p=m_ptr;
+ while(*p)
+ {
+ *p=(char)iso88591_toUpper_map[(unsigned char)*p];
+ p++;
+ }
+}
+
+void KviStr::toUpper()
+{
+ register char *p=m_ptr;
+ while(*p)
+ {
+ *p=toupper(*p);
+ p++;
+ }
+}
+
+unsigned char iso88591_toLower_map[256]=
+{
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
+};
+
+void KviStr::toLowerISO88591()
+{
+ register char *p=m_ptr;
+ while(*p)
+ {
+ *p=(char)iso88591_toLower_map[(unsigned char)*p];
+ p++;
+ }
+}
+
+
+void KviStr::toLower()
+{
+ register char *p=m_ptr;
+ while(*p)
+ {
+ *p=tolower(*p);
+ p++;
+ }
+}
+
+KviStr KviStr::upper() const
+{
+ KviStr tmp(*this);
+ tmp.toUpper();
+ return tmp;
+}
+
+KviStr KviStr::upperISO88591() const
+{
+ KviStr tmp(*this);
+ tmp.toUpperISO88591();
+ return tmp;
+}
+
+KviStr KviStr::lower() const
+{
+ KviStr tmp(*this);
+ tmp.toLower();
+ return tmp;
+}
+
+KviStr KviStr::lowerISO88591() const
+{
+ KviStr tmp(*this);
+ tmp.toLowerISO88591();
+ return tmp;
+}
+
+KviStr KviStr::left(int maxLen) const
+{
+ if(maxLen <= 0)
+ {
+ KviStr empty;
+ return empty;
+ }
+ if(maxLen > m_len)maxLen=m_len;
+ KviStr str(m_ptr,maxLen);
+ return str;
+}
+
+KviStr KviStr::right(int maxLen) const
+{
+ if(maxLen <= 0)
+ {
+ KviStr empty;
+ return empty;
+ }
+ if(maxLen > m_len)maxLen=m_len;
+ KviStr str((m_ptr+(m_len-maxLen)),maxLen);
+ return str;
+}
+
+KviStr KviStr::middle(int idx,int maxLen) const
+{
+ __range_valid(maxLen >= 0);
+ __range_valid(idx >= 0);
+ if((maxLen <= 0) || (idx < 0)){ //max len negative...invalid params
+ KviStr ret;
+ return ret;
+ }
+ if((maxLen + idx) <= m_len){ //valid params
+ KviStr str(m_ptr+idx,maxLen);
+ return str;
+ }
+ if(idx < m_len){ //string shorter than requested
+ KviStr str(m_ptr+idx);
+ return str;
+ }
+ // idx out of bounds
+ KviStr ret;
+ return ret;
+}
+
+KviStr ** KviStr::splitToArray(char sep,int max,int * realCount) const
+{
+ KviStr ** strings = (KviStr **)kvi_malloc(sizeof(KviStr *));
+ int number = 0;
+ char * ptr = m_ptr;
+ char * last = ptr;
+ while((max > 0) && *ptr)
+ {
+ strings = (KviStr **)kvi_realloc((void *)strings,sizeof(KviStr *) * (number + 2));
+ if(max > 1)
+ {
+ while(*ptr && (*ptr != sep))ptr++;
+ strings[number] = new KviStr(last,ptr - last);
+ } else {
+ strings[number] = new KviStr(ptr);
+ }
+ number++;
+ max--;
+ if(*ptr)
+ {
+ ptr++;
+ last = ptr;
+ }
+ }
+ if(realCount)*realCount = number;
+ strings[number] = 0;
+ return strings;
+}
+/*
+ WORKING BUT UNUSED
+
+KviStr ** KviStr::splitToArray(const char * sep,int max,int * realCount) const
+{
+ KviStr ** strings = (KviStr **)kvi_malloc(sizeof(KviStr *));
+ KviStr tmp = *this;
+ int idx = tmp.findFirstIdx(sep);
+ int number = 0;
+ int seplen = kvi_strLen(sep);
+
+
+ while(idx != -1)
+ {
+ strings = (KviStr **)kvi_realloc(sizeof(KviStr *) * (number + 2));
+ strings[number] = new KviStr(tmp.ptr(),idx);
+ tmp.cutLeft(idx + seplen);
+ number++;
+ idx = tmp.findFirstIdx(sep);
+ }
+
+ if(tmp.hasData())
+ {
+ strings = (KviStr **)kvi_realloc(sizeof(KviStr *) * (number + 2));
+ strings[number] = new KviStr(tmp);
+ number++;
+ }
+
+ if(realCount)*realCount = number;
+ strings[number] = 0;
+ return strings;
+}
+*/
+void KviStr::freeArray(KviStr ** strings)
+{
+ if(!strings)return;
+ KviStr ** aux = strings;
+ while(*aux)
+ {
+ delete (*aux); // delete (KviStr *)
+ aux++;
+ }
+ kvi_free(strings);
+}
+
+void KviStr::freeBuffer(char * buffer)
+{
+ if(!buffer)return;
+ kvi_free(buffer);
+}
+
+void KviStr::joinFromArray(KviStr ** strings,const char * sep,bool bLastSep)
+{
+ setLen(0);
+ if(!strings)return;
+
+ while(*strings)
+ {
+ append(*(*strings));
+ strings++;
+ if(*strings)
+ {
+ if(sep)append(sep);
+ } else {
+ if(sep && bLastSep)append(sep);
+ }
+ }
+}
+
+KviStr & KviStr::insert(int idx,const char *data)
+{
+ __range_valid(data);
+ if(idx <= m_len){
+ int len = (int)strlen(data);
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+len+1);
+ kvi_memmove(m_ptr+idx+len,m_ptr+idx,(m_len - idx)+1);
+ kvi_fastmove(m_ptr+idx,data,len);
+ m_len+=len;
+ }
+ return (*this);
+}
+
+KviStr & KviStr::insert(int idx,char c)
+{
+ if(idx <= m_len){
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+2);
+ kvi_memmove(m_ptr+idx+1,m_ptr+idx,(m_len - idx)+1);
+ m_len++;
+ *(m_ptr + idx) = c;
+ }
+ return (*this);
+}
+
+// FIXME: #warning "Double check the following two functions !!!"
+
+KviStr & KviStr::hexEncodeWithTable(const unsigned char table[256])
+{
+ char * aux = m_ptr;
+ char * begin = m_ptr;
+
+ char * n = 0;
+ int curSize = 0;
+
+ while(*aux)
+ {
+ if(table[*((unsigned char *)aux)] || (*aux == '%'))
+ {
+ int len = aux - begin;
+ n = (char *)kvi_realloc(n,curSize + len + 3);
+ kvi_memmove(n + curSize,begin,len);
+ curSize += len;
+
+ n[curSize] = '%';
+ curSize++;
+ n[curSize] = hexdigits[(unsigned int)(((unsigned char)(*aux)) / 16)];
+ curSize++;
+ n[curSize] = hexdigits[(unsigned int)(((unsigned char)(*aux)) % 16)];
+ curSize++;
+
+ aux++;
+ begin = aux;
+
+ } else aux++;
+ }
+
+ int len = aux - begin;
+ n = (char *)kvi_realloc(n,curSize + len + 1);
+ kvi_memmove(n + curSize,begin,len);
+ curSize += len;
+
+ n[curSize] = '\0';
+
+ kvi_free((void *)m_ptr);
+ m_ptr = n;
+ m_len = curSize;
+
+ return (*this);
+}
+
+KviStr & KviStr::hexEncodeWhiteSpace()
+{
+ static unsigned char ascii_jump_table[256]=
+ {
+ // 000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015
+ // NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
+ 1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,
+ // 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031
+ // DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
+ 1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,
+ // 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047
+ // ! " # $ % & ' ( ) * + , - . /
+ 1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063
+ // 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079
+ // @ A B C D E F G H I J K L M N O
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095
+ // P Q R S T U V W X Y Z [ \ ] ^ _
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111
+ // ` a b c d e f g h i j k l m n o
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
+ // p q r s t u v w x y z { | } ~ 
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
+ //
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
+ //
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
+ //
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
+ //
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
+ // � � � � � � � � � � � � � � � �
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
+ // � � � � � � � � � � � � � � � �
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
+ // � � � � � � � � � � � � � � � �
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
+ // � � � � � � � �
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0
+ };
+
+ return hexEncodeWithTable(ascii_jump_table);
+}
+
+KviStr & KviStr::hexDecode(const char * pFrom)
+{
+ // WARNING: pFrom can be also m_ptr here!
+ const char * aux = pFrom;
+ const char * begin = pFrom;
+
+ char * n = 0;
+ int curSize = 0;
+
+ while(*aux)
+ {
+ if(*aux == '%')
+ {
+ // move last block
+ int len = aux - begin;
+ n = (char *)kvi_realloc(n,curSize + len + 1);
+ kvi_memmove(n + curSize,begin,len);
+ curSize += len;
+
+ // get the hex code
+ aux++;
+
+ char theChar = get_decimal_from_hex_digit_char(*aux);
+ if(theChar < 0)
+ {
+ n[curSize] = '%'; // wrong code...just a '%'
+ curSize++;
+ } else {
+ aux++;
+ char theChar2 = get_decimal_from_hex_digit_char(*aux);
+ if(theChar2 < 0)
+ {
+ // wrong code...just a '%' and step back
+ n[curSize] = '%';
+ curSize++;
+ aux--;
+ } else {
+ n[curSize] = (theChar * 16) + theChar2;
+ curSize++;
+ aux++;
+ }
+ }
+
+ begin = aux;
+
+ } else aux++;
+ }
+
+ int len = aux - begin;
+ n = (char *)kvi_realloc(n,curSize + len + 2);
+ kvi_memmove(n + curSize,begin,len);
+ curSize += len;
+ n[curSize] = '\0';
+
+ kvi_free((void *)m_ptr);
+ m_ptr = n;
+ m_len = curSize;
+
+ return (*this);
+}
+
+KviStr & KviStr::replaceAll(char c,const char *str)
+{
+ int idx = findFirstIdx(c);
+ KviStr tmp;
+ while(idx >= 0){
+ if(idx > 0)tmp += left(idx);
+ cutLeft(idx+1);
+ tmp.append(str);
+ idx = findFirstIdx(c);
+ }
+ tmp.append(*this);
+ // Now copy
+ m_len = tmp.m_len;
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
+ kvi_fastmove(m_ptr,tmp.m_ptr,m_len+1);
+ return (*this);
+}
+
+KviStr & KviStr::replaceAll(char *toFind,const char *str,bool bCaseS)
+{
+ int len = (int)strlen(toFind);
+ int idx = findFirstIdx(toFind,bCaseS);
+ KviStr tmp;
+ while(idx >= 0)
+ {
+ if(idx > 0)tmp += left(idx);
+ cutLeft(idx+len);
+ tmp.append(str);
+ idx = findFirstIdx(toFind,bCaseS);
+ }
+ tmp.append(*this);
+ // Now copy
+ m_len = tmp.m_len;
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
+ kvi_fastmove(m_ptr,tmp.m_ptr,m_len+1);
+ return (*this);
+}
+
+KviStr & KviStr::transliterate(const char * szToFind,const char * szReplacement)
+{
+ while(*szToFind && *szReplacement)
+ {
+ char * p = m_ptr;
+ while(*p)
+ {
+ if(*p == *szToFind)*p = *szReplacement;
+ ++p;
+ }
+ ++szToFind;
+ ++szReplacement;
+ }
+ return (*this);
+}
+
+
+int KviStr::occurences(char c,bool caseS) const
+{
+ register char *p = m_ptr;
+ int cnt=0;
+ if(caseS){
+ while(*p){
+ if(*p == c)cnt++;
+ p++;
+ }
+ } else {
+ char b=tolower(c);
+ while(*p){
+ if(tolower(*p) == b)cnt++;
+ p++;
+ }
+ }
+ return cnt;
+}
+
+int KviStr::occurences(const char *str,bool caseS) const
+{
+ __range_valid(str);
+ register char *p = m_ptr;
+ int cnt=0;
+ int len = (int)strlen(str);
+ if(caseS){
+ while(*p){
+ if(*p == *str){
+ if(kvi_strEqualCSN(p,str,len))cnt++;
+ }
+ p++;
+ }
+ } else {
+ while(*p){
+ char c = tolower(*str);
+ if(tolower(*p) == c){
+ if(kvi_strEqualCIN(p,str,len))cnt++;
+ }
+ p++;
+ }
+ }
+ return cnt;
+}
+
+bool KviStr::contains(char c,bool caseS) const
+{
+ register char *p = m_ptr;
+ if(caseS)
+ {
+ while(*p)
+ {
+ if(*p == c)return true;
+ p++;
+ }
+ } else {
+ char b=tolower(c);
+ while(*p)
+ {
+ if(tolower(*p) == b)return true;
+ p++;
+ }
+ }
+ return false;
+}
+
+bool KviStr::contains(const char *str,bool caseS) const
+{
+ __range_valid(str);
+ register char *p = m_ptr;
+ int len = (int)strlen(str);
+ if(caseS)
+ {
+ while(*p)
+ {
+ if(*p == *str)
+ {
+ if(kvi_strEqualCSN(p,str,len))return true;
+ }
+ p++;
+ }
+ } else {
+ while(*p)
+ {
+ char c = tolower(*str);
+ if(tolower(*p) == c)
+ {
+ if(kvi_strEqualCIN(p,str,len))return true;
+ }
+ p++;
+ }
+ }
+ return false;
+}
+
+
+KviStr & KviStr::setNum(long num)
+{
+ char numberBuffer[30];
+ bool bNegative = false;
+ long tmp;
+ register char *p;
+ register char *pNumBuf = numberBuffer;
+
+ // somebody can explain me why -(-2147483648) = -2147483648 ? (2^31)
+ // it is like signed char x = 128 ---> 10000000 that is signed -0 (!?)
+ // mmmmh...or it is assumed to be -128 (a number rappresentation exception)
+ // at least on my machine it happens...
+
+ // found the solution by myself today...
+ //
+ // ABS(3) Linux Programmer's Manual ABS(3)
+ // NAME
+ // abs - computes the absolute value of an integer.
+ // ...
+ // DESCRIPTION
+ // The abs() function computes the absolute value of the integer argument j.
+ // RETURN VALUE
+ // Returns the absolute value of the integer argument.
+ // CONFORMING TO
+ // SVID 3, POSIX, BSD 4.3, ISO 9899
+ // NOTE ##################################################################################
+ // Trying to take the absolute value of the most negative integer is not defined.
+ // #######################################################################################
+
+ // so should i use temporaneous doubles to make calculations ?
+
+ if(num < 0){ //negative integer
+ bNegative = true;
+ num = -num; //need to have it positive
+ if(num < 0){ // 2^31 exception
+ // We need to avoid absurd responses like ".(./),." :)
+ num = 0; // we get a negative zero here...it is still an exception
+ }
+ }
+
+ //write the number in a temporary buffer (at least '0')
+ do {
+ tmp = num / 10;
+ *pNumBuf++ = num - (tmp * 10) + '0';
+ } while((num = tmp));
+
+ //copy now....
+ m_len = pNumBuf - numberBuffer; //length of the number string
+ if(bNegative){
+ m_len++;
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
+ p=m_ptr;
+ *p++='-';
+ } else {
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
+ p=m_ptr;
+ }
+ do { *p++ = *--pNumBuf; } while(pNumBuf != numberBuffer);
+ *(m_ptr + m_len)='\0';
+ return (*this);
+}
+
+KviStr & KviStr::setNum(unsigned long num)
+{
+ char numberBuffer[30];
+ unsigned long tmp;
+ register char *p;
+ register char *pNumBuf = numberBuffer;
+
+ //write the number in a temporary buffer (at least '0')
+ do {
+ tmp = num / 10;
+ *pNumBuf++ = num - (tmp * 10) + '0';
+ } while((num = tmp));
+
+ //copy now....
+ m_len = pNumBuf - numberBuffer; //length of the number string
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
+ p=m_ptr;
+ do { *p++ = *--pNumBuf; } while(pNumBuf != numberBuffer);
+ *(m_ptr + m_len)='\0';
+ return (*this);
+}
+
+long KviStr::toLong(bool *bOk) const
+{
+ long result = 0;
+ if(bOk)*bOk = false;
+ register char *p=m_ptr;
+ bool bNeg = false;
+ while(isspace(*p))p++; //skip spaces
+ if(*p == '-'){
+ bNeg = true;
+ p++;
+ } else {
+ if(*p == '+')p++;
+ }
+ if(isdigit(*p)){ //point to something interesting ?
+ do{
+ result = (result * 10) + (*p - '0');
+ p++;
+ } while(isdigit(*p));
+ if(bNeg)result = -result;
+ while(isspace(*p))p++; //skip trailing spaces
+ if(*p)return 0; //if this is not the end...die.
+ if(bOk)*bOk = true;
+ return result;
+ }
+ return 0;
+}
+
+unsigned long KviStr::toULong(bool *bOk) const
+{
+ unsigned long result = 0;
+ if(bOk)*bOk = false;
+ register char *p=m_ptr;
+ while(isspace(*p))p++; //skip spaces
+ if(isdigit(*p)){ //point to something interesting ?
+ do{
+ result = (result * 10) + (*p - '0');
+ p++;
+ } while(isdigit(*p));
+ while(isspace(*p))p++; //skip trailing spaces
+ if(*p)return 0; //if this is not the end...die.
+ if(bOk)*bOk = true;
+ return result;
+ }
+ return 0;
+}
+
+long KviStr::toLongExt(bool *bOk,int base)
+{
+ if(m_len == 0){
+ if(bOk)*bOk = false;
+ return 0;
+ }
+ char * endptr;
+ long result = strtol(m_ptr,&endptr,base);
+ if(*endptr){
+ // must be whitespaces , otherwise there is trailing garbage inside
+ while(isspace(*endptr) && (*endptr))endptr++;
+ if(*endptr){
+ // still not at the end
+ // trailing garbage not allowed
+ if(bOk)*bOk = false;
+ return result;
+ }
+ }
+ if(bOk)*bOk = true;
+ return result;
+}
+
+//
+//working code , but unused in kvirc
+//
+//unsigned long KviStr::toULongExt(bool *bOk = 0,int base = 0)
+//{
+// if(m_len == 0){
+// if(bOk)*bOk = false;
+// return 0;
+// }
+// char * endptr;
+// unsigned long result = strtoul(m_ptr,&endptr,base);
+// if(*endptr != '\0'){
+// if(bOk)*bOk = false;
+// }
+// return result;
+//}
+
+KviStr & KviStr::cutLeft(int len)
+{
+ __range_valid(len >= 0);
+ if(len <= m_len){
+ m_len -= len;
+ kvi_memmove(m_ptr,m_ptr+len,m_len+1);
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
+ } else {
+ m_ptr = (char *)kvi_realloc(m_ptr,1);
+ *m_ptr = '\0';
+ m_len = 0;
+ }
+ return (*this);
+}
+
+KviStr & KviStr::cutRight(int len)
+{
+ __range_valid(len >= 0);
+ if(len <= m_len){
+ m_len -= len;
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
+ *(m_ptr +m_len)='\0';
+ } else {
+ m_ptr = (char *)kvi_realloc(m_ptr,1);
+ *m_ptr = '\0';
+ m_len = 0;
+ }
+ return (*this);
+}
+
+KviStr & KviStr::cut(int idx,int len)
+{
+ __range_valid(idx >= 0);
+ __range_valid(len >= 0);
+ if(idx < m_len){
+ // idx = 3 len = 3 m_len = 10
+ // 0123456789
+ // abcdefghij
+ // ^ ^
+ // p1 p2
+ char * p1 = m_ptr+idx;
+ if(len + idx > m_len)len = m_len - idx;
+ char * p2 = p1+len;
+ kvi_memmove(p1,p2,(m_len - (len+idx)) +1);
+ m_len -= len;
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
+ }
+ return (*this);
+}
+
+KviStr & KviStr::cutToFirst(char c,bool bIncluded)
+{
+ int idx = findFirstIdx(c);
+ if(idx != -1)cutLeft(bIncluded ? idx + 1 : idx);
+ return (*this);
+}
+
+KviStr KviStr::leftToFirst(char c,bool bIncluded) const
+{
+ int idx = findFirstIdx(c);
+ if(idx == -1)return KviStr(*this);
+ return KviStr(m_ptr,bIncluded ? idx + 1 : idx);
+}
+
+
+KviStr KviStr::leftToLast(char c,bool bIncluded) const
+{
+ int idx = findLastIdx(c);
+ return KviStr(m_ptr,bIncluded ? idx + 1 : idx);
+}
+
+KviStr & KviStr::cutFromFirst(char c,bool bIncluded)
+{
+ int idx = findFirstIdx(c);
+ if(idx != -1)cutRight(bIncluded ? (m_len - idx) : (m_len - (idx + 1)));
+ return (*this);
+}
+
+KviStr & KviStr::cutToLast(char c,bool bIncluded)
+{
+ int idx = findLastIdx(c);
+ if(idx != -1)cutLeft(bIncluded ? idx + 1 : idx);
+ return (*this);
+}
+
+KviStr & KviStr::cutFromLast(char c,bool bIncluded)
+{
+ int idx = findLastIdx(c);
+ if(idx != -1)cutRight(bIncluded ? (m_len - idx) : (m_len - (idx + 1)));
+ return (*this);
+}
+
+KviStr & KviStr::cutToFirst(const char *c,bool bIncluded)
+{
+ int len = (int)strlen(c);
+ int idx = findFirstIdx(c);
+ if(idx != -1)cutLeft(bIncluded ? idx + len : idx);
+ return (*this);
+}
+
+KviStr & KviStr::cutFromFirst(const char *c,bool bIncluded)
+{
+ int len = (int)strlen(c);
+ int idx = findFirstIdx(c);
+ if(idx != -1)cutRight(bIncluded ? (m_len - idx) : (m_len - (idx + len)));
+ return (*this);
+}
+
+KviStr & KviStr::cutToLast(const char *c,bool bIncluded)
+{
+ int len = (int)strlen(c);
+ int idx = findLastIdx(c);
+ if(idx != -1)cutLeft(bIncluded ? idx + len : idx);
+ return (*this);
+}
+
+KviStr & KviStr::cutFromLast(const char *c,bool bIncluded)
+{
+ int len = (int)strlen(c);
+ int idx = findLastIdx(c);
+ if(idx != -1)cutRight(bIncluded ? (m_len - idx) : (m_len - (idx + len)));
+ return (*this);
+}
+
+KviStr & KviStr::setLen(int len)
+{
+ __range_valid(len >= 0);
+ m_ptr = (char *)kvi_realloc(m_ptr,len+1);
+ *(m_ptr+len)='\0';
+ m_len = len;
+ return (*this);
+}
+
+KviStr & KviStr::stripLeftWhiteSpace()
+{
+ register char *p=m_ptr;
+ while(isspace(*p))p++;
+ m_len -= (p-m_ptr);
+ kvi_memmove(m_ptr,p,m_len+1);
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
+ return (*this);
+}
+
+KviStr & KviStr::stripLeft(char c)
+{
+ __range_valid(c != '\0');
+ register char *p=m_ptr;
+ while(*p == c)p++;
+ m_len -= (p-m_ptr);
+ kvi_memmove(m_ptr,p,m_len+1);
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
+ return (*this);
+}
+
+bool KviStr::getToken(KviStr & str,char sep)
+{
+ __range_valid(str.m_ptr);
+ __range_valid(str.m_ptr != m_ptr);
+ register char *p=m_ptr;
+ //skip to the end
+ while(*p && (*p != sep))p++;
+ //0123456789
+ //abcd xyz
+ //^ ^
+ str.m_len = p-m_ptr;
+ str.m_ptr = (char *)kvi_realloc(str.m_ptr,str.m_len+1);
+ kvi_fastmove(str.m_ptr,m_ptr,str.m_len);
+ *(str.m_ptr + str.m_len)='\0';
+ while(*p && (*p == sep))p++;
+ cutLeft(p-m_ptr);
+ return (m_len != 0);
+}
+
+bool KviStr::getLine(KviStr &str)
+{
+ __range_valid(str.m_ptr);
+ __range_valid(str.m_ptr != m_ptr);
+ if(m_len == 0)return false;
+ register char *p=m_ptr;
+ //skip to the end
+ while(*p && (*p != '\n'))p++;
+ //0123456789
+ //abcd xyz
+ //^ ^
+ str.m_len = p-m_ptr;
+ str.m_ptr = (char *)kvi_realloc(str.m_ptr,str.m_len+1);
+ kvi_fastmove(str.m_ptr,m_ptr,str.m_len);
+ *(str.m_ptr + str.m_len)='\0';
+ p++;
+ cutLeft(p-m_ptr);
+ return true;
+}
+
+KviStr KviStr::getToken(char sep)
+{
+ register char *p=m_ptr;
+ while(*p && (*p != sep))p++;
+ KviStr ret(m_ptr,p);
+ while(*p && (*p == sep))p++;
+ cutLeft(p-m_ptr);
+ return ret;
+}
+
+KviStr & KviStr::sprintf(const char *fmt,...)
+{
+ m_ptr=(char *)kvi_realloc(m_ptr,256);
+ //First try
+ kvi_va_list list;
+ kvi_va_start(list,fmt);
+ //print...with max 256 chars
+ m_len=kvi_vsnprintf(m_ptr,256,fmt,list);
+ kvi_va_end(list);
+
+ //check if we failed
+ if(m_len < 0){
+ //yes , failed....
+ int dummy=256;
+ do{ //we failed , so retry with 256 more chars
+ dummy+=256;
+ //realloc
+ m_ptr=(char *)kvi_realloc(m_ptr,dummy);
+ //print...
+ kvi_va_start(list,fmt);
+ m_len=kvi_vsnprintf(m_ptr,dummy,fmt,list);
+ kvi_va_end(list);
+ } while(m_len < 0);
+ }
+ //done...
+ //now m_len is the length of the written string not including the terminator...
+ //perfect! :)
+ m_ptr=(char *)kvi_realloc(m_ptr,m_len+1);
+ return (*this);
+}
+
+int KviStr::find(const char *str,int idx,bool caseS) const
+{
+ if(idx >= m_len)return -1;
+ register char *p=m_ptr + idx;
+ int len = (int)strlen(str);
+ if(caseS){
+ for(;;){
+ while(*p && (*p != *str))p++;
+ if(*p){
+ if(kvi_strEqualCSN(str,p,len))return (p-m_ptr);
+ else p++;
+ } else return -1;
+ }
+ } else {
+ for(;;){
+ char tmp = toupper(*str);
+ while(*p && (toupper(*p) != tmp))p++;
+ if(*p){
+ if(kvi_strEqualCIN(str,p,len))return (p-m_ptr);
+ else p++;
+ } else return -1;
+ }
+ }
+}
+
+int KviStr::find(char c,int idx) const
+{
+ if(idx >= m_len)return -1;
+ register char *p=m_ptr + idx;
+ while(*p && (*p != c))p++;
+ return (*p ? p-m_ptr : -1);
+}
+
+
+int KviStr::findRev(const char *str,int idx,bool caseS) const
+{
+ if((m_len + idx) < 0)return -1;
+ register char *p=m_ptr + m_len + idx;
+ int len = (int)strlen(str);
+ if(caseS)
+ {
+ for(;;)
+ {
+ while((p >= m_ptr) && (*p != *str))p--;
+ if(p >= m_ptr){
+ if(kvi_strEqualCSN(str,p,len))return (p-m_ptr);
+ else p--;
+ } else return -1;
+ }
+ } else {
+ for(;;){
+ char tmp = toupper(*str);
+ while((p >= m_ptr) && (toupper(*p) != tmp))p--;
+ if(p >= m_ptr){
+ if(kvi_strEqualCIN(str,p,len))return (p-m_ptr);
+ else p--;
+ } else return -1;
+ }
+ }
+}
+
+int KviStr::findFirstIdx(char c) const
+{
+ register char *p=m_ptr;
+ while(*p && (*p != c))p++;
+ return (*p ? p-m_ptr : -1);
+}
+
+int KviStr::findFirstIdx(const char *str,bool caseS) const
+{
+ // This function can't be used to search inside
+ // multibyte encoded strings... convert your
+ // code to QString and use QString::findRev().
+ // We must throw away KviStr at all in this case...
+
+ // return QString(m_ptr).find(QString(str),0,caseS);;
+
+ // Both this KviStr and the const char * str are assumed
+ // to be in the proper (and same) encoding.
+ // If KviStr is in encoding A then QString(m_ptr) might
+ // or not be decoded correctly.
+ // Also if KviStr is in UTF-8 (for example), then
+ // a position in QString() does not map to the position in the char array
+ // since a single UNICODE char may use one or more bytes...
+
+ __range_valid(str);
+ register char *p=m_ptr;
+ int len = (int)strlen(str);
+ if(caseS){
+ for(;;){
+ while(*p && (*p != *str))p++;
+ if(*p){
+ if(kvi_strEqualCSN(str,p,len))return (p-m_ptr);
+ else p++;
+ } else return -1;
+ }
+ } else {
+ // this will NOT work for strings that aren't in the current system encoding :(
+ for(;;){
+ char tmp = toupper(*str);
+ while(*p && (toupper(*p) != tmp))p++;
+ if(*p){
+ if(kvi_strEqualCIN(str,p,len))return (p-m_ptr);
+ else p++;
+ } else return -1;
+ }
+ }
+}
+
+int KviStr::findLastIdx(char c) const
+{
+ //Empty string ?
+ if(m_len < 1)return -1;
+ //p points to the last character in the string
+ register char *p=((m_ptr+m_len)-1);
+ //go back until we find a match or we run to the first char in the string.
+ while((*p != c) && (p > m_ptr))p--;
+ //if *p == c --> matched , else we are at the beginning of the string.
+ return ((*p == c)? p-m_ptr : -1);
+}
+
+int KviStr::findLastIdx(const char *str,bool caseS) const
+{
+ // This function can't be used to search inside
+ // multibyte encoded strings... convert your
+ // code to QString and use QString::findRev().
+ // We must throw away KviStr at all in this case...
+
+ // return QString(m_ptr).findRev(QString(str),-1,caseS);
+
+ __range_valid(str);
+ //Calc the len of the searched string
+ int len = (int)strlen(str);
+ //Too long ?
+ if(m_len < len)return -1;
+ //p points to the last character in the string
+ register char *p=((m_ptr+m_len)-1);
+ if(caseS){
+ for(;;){
+ //go back until we find a character that mathes or we run to the first char.
+ while((*p != *str) && (p > m_ptr))p--;
+ if(*p == *str){
+ //maybe occurence....
+ if(kvi_strEqualCSN(str,p,len))return (p-m_ptr);
+ else {
+ //Nope...continue if there is more data to check...
+ if(p == m_ptr)return -1;
+ p--;
+ }
+ } else return -1; //Beginning of the string
+ }
+ } else {
+ // case insensitive
+ for(;;){
+ //go back until we find a character that mathes or we run to the first char.
+ char tmp = toupper(*str);
+ while((toupper(*p) != tmp) && (p > m_ptr))p--;
+ if(toupper(*p) == tmp){
+ //maybe occurence....
+ if(kvi_strEqualCIN(str,p,len))return (p-m_ptr);
+ else {
+ //Nope...continue if there is more data to check...
+ if(p == m_ptr)return -1;
+ p--;
+ }
+ } else return -1; //Beginning of the string
+ }
+ }
+}
+
+KviStr & KviStr::stripWhiteSpace()
+{
+ // 0123456789
+ // abcd 0
+ // ^ ^
+ // left right
+ register char *left=m_ptr;
+ register char *right=m_ptr+m_len-1;
+ // skip initial spaces
+ while(isspace(*left))left++;
+ if(*left){
+ // valid string , left points to first non-space
+ while((right >= left) && isspace(*right))right--;
+ // 0123456789
+ // abcd 0
+ // ^ ^
+ // left right
+ m_len = (right - left)+1;
+ kvi_memmove(m_ptr,left,m_len);
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
+ *(m_ptr+m_len)='\0';
+ } else {
+ m_ptr = (char *)kvi_realloc(m_ptr,1);
+ *m_ptr = '\0';
+ m_len = 0;
+ }
+ return (*this);
+}
+
+KviStr & KviStr::stripRightWhiteSpace()
+{
+ if(*m_ptr)
+ {
+ register char *right=m_ptr+m_len-1;
+ const char *start=right;
+ while((right >= m_ptr) && isspace( *right ))right--;
+ if(right != start)
+ {
+ m_len = (right - m_ptr) + 1;
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
+ *(m_ptr+m_len)='\0';
+ }
+ }
+ return (*this);
+}
+
+KviStr & KviStr::stripRight(char c)
+{
+ if(*m_ptr)
+ {
+ register char *right=m_ptr+m_len-1;
+ const char *start=right;
+ while((right >= m_ptr) && (*right == c))right--;
+ if(right != start)
+ {
+ m_len = (right - m_ptr) + 1;
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
+ *(m_ptr+m_len)='\0';
+ }
+ }
+ return (*this);
+}
+
+KviStr & KviStr::stripSpace()
+{
+ // 0123456789
+ // abcd 0
+ // ^ ^
+ // left right
+ register char *left=m_ptr;
+ register char *right=m_ptr+m_len-1;
+ // skip initial spaces
+ while((*left == ' ') || (*left == '\t'))left++;
+ if(*left){
+ // valid string , left points to first non-space
+ while((right >= left) && ((*right == ' ') || (*right == '\t')))right--;
+ // 0123456789
+ // abcd 0
+ // ^ ^
+ // left right
+ m_len = (right - left)+1;
+ kvi_memmove(m_ptr,left,m_len);
+ m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
+ *(m_ptr+m_len)='\0';
+ } else {
+ m_ptr = (char *)kvi_realloc(m_ptr,1);
+ *m_ptr = '\0';
+ m_len = 0;
+ }
+ return (*this);
+}
+
+bool KviStr::isNum() const
+{
+ register char *p=m_ptr;
+ while(isspace(*p))p++;
+ if(*p=='-')p++;
+ if(!isdigit(*p))return false;
+ while(isdigit(*p))p++;
+ while(isspace(*p))p++;
+ return (*p=='\0');
+}
+
+bool KviStr::isUnsignedNum() const
+{
+ register char *p=m_ptr;
+ while(isspace(*p))p++;
+ if(!isdigit(*p))return false;
+ while(isdigit(*p))p++;
+ while(isspace(*p))p++;
+ return (*p=='\0');
+}
+
+static KviStr g_szApplicationWideEmptyString;
+
+KviStr & KviStr::emptyString()
+{
+ return g_szApplicationWideEmptyString;
+}
+
+
+bool KviStr::ext_contains(register const char * data,const char * item,bool caseS)
+{
+ if(item && data)
+ {
+ int len = (int)strlen(item);
+ char c = tolower(*item);
+ if(caseS)
+ {
+ while(*data)
+ {
+ while(*data && (tolower(*data) != c))data++;
+ if(*data)
+ {
+ if(kvi_strEqualCSN(item,data,len))return true;
+ else data++;
+ }
+ }
+ } else {
+ while(*data)
+ {
+ while(*data && (tolower(*data) != c))data++;
+ if(*data)
+ {
+ if(kvi_strEqualCIN(item,data,len))return true;
+ else data++;
+ }
+ }
+ }
+ }
+ return false;
+}
+
+
+//void KviStr::pointerToBitString(const void * ptr)
+//{
+// m_len = (sizeof(void *) * 8);
+// m_ptr = kvi_realloc(m_ptr,m_len + 1);
+// for(int i=0;i < m_len;i++)
+// {
+// m_ptr[i] = (ptr & 1) ? '1' : '0';
+// ptr >> 1;
+// }
+// m_ptr[i] = '\0';
+//}
+//
+//void * KviStr::bitStringToPointer()
+//{
+// if(m_len != (sizeof(void *) * 8))return 0;
+// const char * aux = m_ptr;
+// void * ptr = 0;
+// for(int i=m_len - 1;i >= 0;i--)
+// {
+// if(m_ptr[i] == '1')ptr &= 1;
+// else if(m_ptr[i] !='0')return 0;
+// ptr << 1;
+// }
+// return ptr;
+//}
+
+
+
+
+// static char ascii_jump_table[256]=
+// {
+// // 000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015
+// // NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
+// 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+// // 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031
+// // DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
+// 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+// // 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047
+// // ! " # $ % & ' ( ) * + , - . /
+// 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+// // 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063
+// // 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+// 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+// // 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079
+// // @ A B C D E F G H I J K L M N O
+// 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+// // 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095
+// // P Q R S T U V W X Y Z [ \ ] ^ _
+// 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+// // 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111
+// // ` a b c d e f g h i j k l m n o
+// 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+// // 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
+// // p q r s t u v w x y z { | } ~ 
+// 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+// // 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
+// //
+// 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+// // 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
+// //
+// 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+// // 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
+// //
+// 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+// // 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
+// //
+// 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+// // 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
+// // � � � � � � � � � � � � � � � �
+// 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+// // 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
+// // � � � � � � � � � � � � � � � �
+// 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+// // 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
+// // � � � � � � � � � � � � � � � �
+// 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+// // 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
+// // � � � � � � � �
+// 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0
+// };
diff --git a/src/kvilib/core/kvi_string.h b/src/kvilib/core/kvi_string.h
new file mode 100644
index 00000000..602173cd
--- /dev/null
+++ b/src/kvilib/core/kvi_string.h
@@ -0,0 +1,552 @@
+#ifndef _KVI_STRING_H_
+#define _KVI_STRING_H_
+//=============================================================================
+//
+// File : kvi_string.h
+// Creation date : Fri Mar 19 1999 03:06:26 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+
+#ifdef HAVE_STRINGS_H
+ #include <strings.h> // useless ?
+#endif
+
+#include <qglobal.h>
+#include <qstring.h>
+
+
+#include "kvi_qcstring.h"
+#include "kvi_inttypes.h"
+#include "kvi_heapobject.h"
+#include "kvi_stdarg.h"
+
+
+
+//
+// sigh...
+// IRC is not UNICODE ...(yet) :(
+//
+
+#undef __KVI_EXTERN
+#ifdef _KVI_STRING_CPP_
+ #define __KVI_EXTERN
+#else
+ #define __KVI_EXTERN extern
+#endif
+
+
+__KVI_EXTERN KVILIB_API bool kvi_qstringEqualCI(const QString &s1,const QString &s2);
+
+
+// Include inlined assembly implementations if required
+#ifdef COMPILE_ix86_ASM
+ #include "kvi_strasm.h"
+#else
+ // Returns true if the string str1 is equal to str2. case sensitive.
+ __KVI_EXTERN KVILIB_API bool kvi_strEqualCS(const char *str1,const char *str2);
+ // Returns true if the forst len characters of string str1 are equal to str2.
+ // case sensitive.
+ // Note that if str1 or str2 are shorter than len characters then are considered as NOT equal!
+ __KVI_EXTERN KVILIB_API bool kvi_strEqualCSN(const char *str1,const char *str2,int len);
+ // no such tricks in non-asm
+ #define kvi_strEqualNoLocaleCI(str1,str2) kvi_strEqualCI(str1,str2)
+ #define kvi_strEqualNoLocaleCIN(str1,str2,len) kvi_strEqualCIN(str1,str2,len)
+ #define kvi_strLen(str) strlen(str)
+#endif
+
+// Returns true if the string str1 is equal to str2.
+// case insensitive.
+__KVI_EXTERN KVILIB_API bool kvi_strEqualCI(const char *str1,const char *str2);
+// Returns true if the forst len characters of string str1 are equal to str2.
+// case insensitive.
+// Note that if str1 or str2 are shorter than len characters then are considered as NOT equal!
+__KVI_EXTERN KVILIB_API bool kvi_strEqualCIN(const char *str1,const char *str2,int len);
+// My own implementations of strcmp and strncasecmp
+// Once I wrote it , I KNOW what they do : ALWAYS :)
+// Note that greater here means that comes AFTER in the alphabetic order.
+__KVI_EXTERN KVILIB_API int kvi_strcmpCI(const char *str1,const char *str2);
+//__KVI_EXTERN KVILIB_API int kvi_strcmpCIN(const char *str1,const char *str2,int len);
+__KVI_EXTERN KVILIB_API int kvi_strcmpCS(const char *str1,const char *str2);
+
+// some wide char stuff
+typedef kvi_u16_t kvi_wchar_t;
+typedef kvi_u32_t kvi_wslen_t;
+
+__KVI_EXTERN KVILIB_API kvi_wslen_t kvi_wstrlen(const kvi_wchar_t * str);
+__KVI_EXTERN KVILIB_API int kvi_wvsnprintcf(kvi_wchar_t * buffer,kvi_wslen_t len,const char *fmt,kvi_va_list list);
+__KVI_EXTERN KVILIB_API int kvi_wvsnprintf(kvi_wchar_t * buffer,kvi_wslen_t len,const kvi_wchar_t *fmt,kvi_va_list list);
+
+//=============================================================================
+//
+// A simple string class.<br>
+// -No data sharing.<br>
+// -Not UNICODE.<br>
+// -Has ALWAYS NON-NULL DATA.<br>
+// -(Maybe)Unsafe :)<br>
+// WARNING : Handle with care and use at own risk :)<br>
+//
+//=============================================================================
+
+class KVILIB_API KviStr : public KviHeapObject
+{
+public:
+ // No particular reason for these two names...
+ // It is just because I like it :)
+
+ enum KviFormatConstructorTag { Format , Sprintf };
+
+ //=============================================================================
+ // Constructors
+ //=============================================================================
+
+ // Empty string == "", len = 0, 1 byte allocated
+ KviStr();
+
+ // Deep copy of the NULL TERMINATED string (NULL str SAFE)
+ KviStr(const char *str);
+
+ // Copy len characters from string str (NOT NULL str SAFE, str MUST be at least len chars long)
+ KviStr(const char *str,int len);
+
+ // bg and end are pointers to a SINGLE string.<br>
+ // A string is extracted starting from bg and ending at end (not included).<br>
+ KviStr(const char *bg,const char *end);
+
+ // Format constructor.<br>
+ // tag is....yes....a dummy number used to resolve ambiguities.<br>
+ // It is SAFE: will fail only if we run out of memory,<br>
+ // but can handle only %s %d %u and %c.
+ KviStr(KviFormatConstructorTag tag,const char *fmt,...);
+
+ // Carbon copy :)...fast
+ KviStr(const KviStr &str);
+
+ // Compat with QT...<br>
+ // WARNING : With QT2.x it WILL loose UNICODE data.<br>
+ // Safe even if the QString is null.
+ KviStr(const QString &str);
+
+ KviStr(const KviQCString &str);
+
+ // Fill sonstructor.
+ // Creates a string long fillLen characters filled with character c.<br>
+ KviStr(char c,int fillLen = 1);
+
+ KviStr(const kvi_wchar_t * unicode);
+
+ KviStr(const kvi_wchar_t * unicode,int len);
+
+ // just free(m_ptr)
+ ~KviStr();
+public:
+ //yes...public..but think it as private...:)
+ char *m_ptr; // pointer to allocated buffer , do not change this!
+ int m_len; // string data length not including the terminator
+
+public:
+ //=============================================================================
+ // Basic const interface (read stuff)
+ //=============================================================================
+
+ // Internal data buffer
+ char * ptr() const { return m_ptr; };
+ // Length: fast, cached
+ int len() const { return m_len; };
+
+ // I hate this operator...but sometimes it is really useful
+ // especially in macros (kvi_options.cpp)
+ operator const char * () const { return m_ptr; };
+
+ bool isEmpty() const { return (m_len == 0); };
+ bool hasData() const { return (m_len != 0); };
+
+ // this is better than string = "", it does not call strlen
+ void clear();
+
+ // forces the length of this string to be iLen (iLen does NOT include the trailing null : it is automatically added)
+ void setLength(int iLen);
+
+ // Returns true if there is something "readable" inside the string
+ bool hasNonWhiteSpaceData() const;
+
+ // Character at zero-based index : always safe!
+ char & at(int idx) const { return ((idx < m_len) ? m_ptr[idx] : m_ptr[m_len]); };
+
+ // character checks
+ bool lastCharIs(char ch) const { return (m_len > 0) ? (*(m_ptr + m_len - 1) == ch) : false; };
+ bool firstCharIs(char ch) const { return (*m_ptr == ch); };
+
+ // upper and lower case copies
+ KviStr upper() const;
+ KviStr lower() const;
+ KviStr upperISO88591() const;
+ KviStr lowerISO88591() const;
+
+ // left , right & co.
+ // all parameters are safety-checked
+ KviStr left(int maxLen) const;
+ KviStr right(int maxLen) const ;
+ KviStr middle(int idx,int maxLen) const;
+
+ KviStr leftToFirst(char c,bool bIncluded = false) const;
+ KviStr leftToLast(char c,bool bIncluded = false) const;
+// KviStr leftToFirst(const char * str); const;
+
+ //=============================================================================
+ // Non-const interface (write stuff)
+ //=============================================================================
+
+ // Null terminator is NOT included in len
+ KviStr & setLen(int len);
+ // str must not be 0, but len can be anything (it is checked)
+ KviStr & setStr(const char *str,int len = -1);
+ // Like the special constructor that gets the same args.
+ void extractFromString(const char *begin,const char *end);
+
+
+ // Safe sprintf. This one will never write past the end of the string
+ // It can handle only %s %d %u and %c format flags.
+ KviStr & sprintf(const char *fmt,...);
+
+ // append functions
+ void append(const KviStr &str);
+ void append(const QString &str);
+ void append(char c);
+ void append(const char *str); // str CAN be 0
+ void append(const char *str,int len); // str CAN NOT be 0, and MUST be at least len chars long
+ void append(KviFormatConstructorTag dummy,const char *fmt,...);
+
+ // prepend stuff , same as above
+ void prepend(const KviStr &str);
+ void prepend(const char *str); // str CAN be 0
+ void prepend(const char *str,int len); // str CAN NOT be 0, and MUST be at least len chars long
+
+ // if lastCharIs ch does nothing otherwise appends it
+ void ensureLastCharIs(char ch) { if(!lastCharIs(ch))append(ch); };
+
+ // Change THIS string to uppercase or lowercase
+ void toUpperISO88591();
+ void toUpper(); // this is LOCALE AWARE (in Turkish it maps i to Ý!)
+ void toLowerISO88591();
+ void toLower();
+
+ // Assignment
+ KviStr & operator=(const KviStr &str); // deep copy
+ KviStr & operator=(const char *str); // str can be NULL here
+ KviStr & operator=(char c); // 2 bytes allocated ,m_len = 1
+ KviStr & operator=(const QString &str);
+ KviStr & operator=(const KviQCString &str);
+
+ // Append operators
+ KviStr & operator+=(const KviStr &str) { append(str); return (*this); };
+ KviStr & operator+=(const char *str) { append(str); return (*this); };
+ KviStr & operator+=(char c) { append(c); return (*this); };
+ KviStr & operator+=(const QString &str) { append(str); return (*this); };
+
+ // Comparison
+ bool equalsCI(const KviStr &other) const { if(m_len != other.m_len)return false; return kvi_strEqualCI(m_ptr,other.m_ptr); };
+ bool equalsCS(const KviStr &other) const { if(m_len != other.m_len)return false; return kvi_strEqualCS(m_ptr,other.m_ptr); };
+ bool equalsCI(const char * other) const { return kvi_strEqualCI(m_ptr,other); };
+ bool equalsCS(const char * other) const { return kvi_strEqualCS(m_ptr,other); };
+ bool equalsCIN(const char * other,int len) const { return kvi_strEqualCIN(m_ptr,other,len); };
+ bool equalsCSN(const char * other,int len) const { return kvi_strEqualCSN(m_ptr,other,len); };
+
+ //=============================================================================
+ // HEX and Base64 stuff
+ //=============================================================================
+
+ // HEX transforms functions
+ void bufferToHex(const char *buffer,int len);
+ // Allocates the needed buffer and returns the allocated length,
+ // returns -1 in case of error (and allocates nothing)
+ // The string MUST contain only hex digits, and the digits MUST be in couples. (len % 2) must equal 0!
+ // So this will fail also if there are leading or trailing spaces!
+ int hexToBuffer(char ** buffer,bool bNullToNewlines = false);
+ // BASE64 stuff
+ void bufferToBase64(const char * buffer,int len);
+ // same as hexToBuffer but obviously transforms base64 notation to binary data (len % 4) must equal 0!
+ int base64ToBuffer(char ** buffer,bool bNullToNewlines = false);
+
+ // frees a buffer allocated by hexToBuffer or base64ToBuffer
+ static void freeBuffer(char * buffer);
+
+ //=============================================================================
+ // Splitters
+ //=============================================================================
+
+ // cut
+ KviStr & cutLeft(int len); // kills the first len characters
+ KviStr & cutRight(int len); // kills the last len characters
+ KviStr & cut(int idx,int len);
+ KviStr & cutToFirst(char c,bool bIncluded = true); // cuts the left part of the string up to the first character c or does nothing if the char c is not in the string
+ KviStr & cutToLast(char c,bool bIncluded = true);
+ KviStr & cutFromFirst(char c,bool bIncluded = true);
+ KviStr & cutFromLast(char c,bool bIncluded = true);
+ KviStr & cutToFirst(const char *c,bool bIncluded = true); // cuts the left part of the string up to the first character c or does nothing if the char c is not in the string
+ KviStr & cutToLast(const char *c,bool bIncluded = true);
+ KviStr & cutFromFirst(const char *c,bool bIncluded = true);
+ KviStr & cutFromLast(const char *c,bool bIncluded = true);
+ // & paste
+ KviStr & insert(int idx,const char *data);
+ KviStr & insert(int idx,char c);
+ //Replaces all occurences of char c with the string str
+ KviStr & replaceAll(char c,const char *str);
+ //same as above but with a string
+ KviStr & replaceAll(char *toFind,const char *str,bool bCaseS = true);
+
+ KviStr & transliterate(const char * szToFind,const char * szReplacement);
+
+ // Strips whitespace characters from beginning of this string.
+ KviStr & stripLeftWhiteSpace();
+ KviStr & stripRightWhiteSpace();
+ // Stips inital and final WHITESPACE characters (see man isspace),<br>
+ // and returns a reference to this string.
+ KviStr & stripWhiteSpace();
+
+ // Strips spaces and tabs only
+ KviStr & stripSpace();
+ // Strips all occurences of the character c from the beginning of the string.<br>
+ // Note that c can not be '\0' :)
+ KviStr & stripLeft(char c);
+ KviStr & stripRight(char c);
+
+ //=============================================================================
+ // Tokenize
+ //=============================================================================
+
+ // Extracts (copy to str and remove) a token from this string ,<br>
+ // and returns true if there are more tokens to extract<br>
+ // Does not strip initial separators!!<br>
+ // str can NOT be this string.
+ bool getToken(KviStr &str,char sep);
+ // Does not strip initial separators!<br>
+ // Can assign also to this string.
+ KviStr getToken(char sep);
+ // Extracts a line from the string.<br>
+ // Returns false if there was no data to extract
+ bool getLine(KviStr &str);
+
+ // splits this string in a null-terminated array of strings
+ // separated by sep.
+ KviStr ** splitToArray(char sep,int max,int * realCount) const;
+ //KviStr ** splitToArray(const char * sep,int max,int * realCount) const;
+ static void freeArray(KviStr ** strings);
+ // joins the array to this string
+ // if sep is not 0 , it is inserted between the strings
+ // if bLastSep is true and sep is non 0 , then sep is also appended at the end
+ // of the buffer (after the last string)
+ void joinFromArray(KviStr ** strings,const char * sep = 0,bool bLastSep = false);
+
+ //=============================================================================
+ // Utils
+ //=============================================================================
+
+ // encodes chars that have nonzero in the jumptable
+ // into %HH equivalents
+ KviStr & hexEncodeWithTable(const unsigned char table[256]);
+ KviStr & hexEncodeWhiteSpace();
+ KviStr & hexDecode(const char * pFrom);
+ KviStr & hexDecode(){ return hexDecode(m_ptr); };
+
+ //=============================================================================
+ // Contains / occurence count
+ //=============================================================================
+
+ // Returns true if at least one occurence of str is found
+ bool contains(const char *str,bool caseS=true) const;
+ // Returns true if at least one occurence of character c is found in this string
+ bool contains(char c,bool caseS=true) const;
+ // Returns the number of occurences of string str in this string.<br>
+ // Overlapped matches are counted.
+ int occurences(const char *str,bool caseS=true) const;
+ // Returns the number of occurences of character c in this string
+ int occurences(char c,bool caseS=true) const;
+
+ //=============================================================================
+ // Find
+ //=============================================================================
+
+ // Finds the first occurence of the character c in this string,<br>
+ // and returns its zero-based index or -1 if c can not be found.<br>
+ // c can NOT be '\0' here.
+ int findFirstIdx(char c) const;
+ // Finds the first occurence of the sub-string str in this string,<br>
+ // and returns its zero-based index or -1 if the sub-string can not be found.<br>
+ // str can NOT be 0 here.
+ int findFirstIdx(const char *str,bool caseS = true) const;
+ // Finds the last occurence of the character c in this string,<br>
+ // and returns its zero-based index or -1 if the character can not be found.
+ int findLastIdx(char c) const;
+ // Finds the last occurence of the sub-string str in this string,<br>
+ // and returns its zero-based index or -1 if the sub-string can not be found.<br>
+ // str can NOT be 0 here.
+ int findLastIdx(const char *str,bool caseS = true) const;
+
+ int find(char c,int startIdx) const;
+ int find(const char * str,int startIdx,bool caseS = true) const;
+ int findRev(const char * str,int startIdx,bool caseS = true) const;
+
+ //=============================================================================
+ // Numbers
+ //=============================================================================
+
+ // everything in base 10.... no overflow checks here
+ long toLong(bool *bOk=0) const;
+ unsigned long toULong(bool *bOk=0) const;
+ char toChar(bool *bOk=0) const { return (char)toLong(bOk); };
+ unsigned char toUChar(bool *bOk=0) const { return (unsigned char)toULong(bOk); };
+ int toInt(bool *bOk=0) const { return (int)toLong(bOk); };
+ unsigned int toUInt(bool *bOk=0) const { return (unsigned int)toULong(bOk); };
+ short toShort(bool *bOk=0) const { return (short)toLong(bOk); };
+ unsigned short toUShort(bool *bOk=0) const { return (unsigned short)toLong(bOk); };
+
+ KviStr & setNum(long num);
+ KviStr & setNum(unsigned long num);
+
+ KviStr & setNum(int num) { return setNum((long)num); };
+ KviStr & setNum(unsigned int num) { return setNum((unsigned long)num); };
+ KviStr & setNum(short num) { return setNum((long)num); };
+ KviStr & setNum(unsigned short num) { return setNum((unsigned long)num); };
+ KviStr & setNum(char num) { return setNum((long)num); };
+ KviStr & setNum(unsigned char num) { return setNum((unsigned long)num); };
+
+ // Retuns true if the string contains only digits and an optional '-' character
+ // at the beginning.<be>
+ // Space characters are allowed at the begginning and the end.<br>
+ // There is no overflow check!
+ bool isNum() const;
+ bool isUnsignedNum() const;
+
+ // special functions for multiple bases
+ long toLongExt(bool *bOk = 0,int base = 0);
+ // unsigned long toULongExt(bool *bOk = 0,int base = 0); //never used
+
+ // returns an empty string...
+ // this if often useful!
+ static KviStr & emptyString();
+
+ //=============================================================================
+ // Dead interface
+ //=============================================================================
+
+ // Transform a pointer to a string with all 0 and 1
+ // void pointerToBitString(const void * ptr);
+ // Get a pointer from a string all of 0 and 1 : return 0 if invalid
+ // void * bitStringToPointer();
+
+ //=============================================================================
+ // "External string" helper functions
+ //=============================================================================
+
+ // FIXME: Should it be KviStrExt::contains namespace ?
+ static bool ext_contains(register const char * data,const char * item,bool caseS = true);
+};
+
+// FIXME: the functions below should end in the KviStr namespace ???
+
+
+// Cool string parsing function.
+// It will extract the first found token from the string aux_ptr , and return
+// a pointer to the beginning of the next token , or end of the string.
+// It skips the initial sep characters!
+__KVI_EXTERN KVILIB_API const char * kvi_extractToken(KviStr &str,const char *aux_ptr,char sep =' ');
+// Does not skip the beginning separators!
+// Extracts data from the string up to the next separator character or the end of the string.
+// and returns a pointer to that separator (or string end).
+__KVI_EXTERN KVILIB_API const char * kvi_extractUpTo(KviStr &str,const char *aux_ptr,char sep=' ');
+// Reduced vsnprintf...
+// Handles %s,%c,%d,%u (%% are TWO percents here and not one.)
+// Returns -1 if the formatted string exceeded the buffer length.
+// Otherwise returns the length of the formatted buffer...(not including '\0')
+__KVI_EXTERN KVILIB_API int kvi_vsnprintf(char *buffer,int len,const char *fmt,kvi_va_list list);
+// Reduced vsnprintf: special version for irc.
+// Handles %s,%c,%d,%u (%% are TWO percents here and not one.)
+// Writes up to 510 characters and terminates the string with a CRLF
+// Sets bTruncated if the requested format string was too large to fit in 512 bytes
+// otherwise sets it to false; The buffer MUST be at least 512 bytes long.
+// Always returns the length of the formatted buffer...(max 512 - min 2=CRLF)
+__KVI_EXTERN KVILIB_API int kvi_irc_vsnprintf(char *buffer,const char *fmt,kvi_va_list list,bool *bTruncated);
+
+// WILDCARD EXPRESSION MATCHING FUNCTIONS
+
+// Returns true if the two regular expressions with wildcards matches
+__KVI_EXTERN KVILIB_API bool kvi_matchWildExpr(register const char *m1,register const char *m2);
+// Returns true if the two regular expressions with wildcards matches, case sensitive
+//__KVI_EXTERN bool kvi_matchWildExprCS(register const char *m1,register const char *m2); // actually unused
+// Same as kvi_matchWildExpr but with an additional char that acts as string terminator
+// If there is a match this function returns true and puts the pointers where it stopped in r1 and r2
+__KVI_EXTERN KVILIB_API bool kvi_matchWildExprWithTerminator(register const char *m1,register const char *m2,char terminator,
+ const char ** r1,const char ** r2);
+
+// Returns true if the wildcard expression exp matches the string str
+__KVI_EXTERN KVILIB_API bool kvi_matchStringCI(register const char * exp,register const char * str);
+#define kvi_matchString kvi_matchStringCI
+__KVI_EXTERN KVILIB_API bool kvi_matchStringCS(register const char * exp,register const char * str);
+__KVI_EXTERN KVILIB_API bool kvi_matchStringWithTerminator(register const char * exp,register const char * str,char terminator,const char ** r1,const char ** r2);
+
+// This function works like a particular case of strncmp.
+// It evaluates if str2 is the terminal part of str1.
+// example: if str1 is "this is an experiment" and str2 is "xperiment"
+// return 0.
+// With the index parameter, the match start on str1 from the specified
+// index. For example:
+// if str1 is "this is an experiment" and str2 is "an" we have return !0
+// but "this is an experiment"
+// 012345678901234567890
+// if we call kvi_strsubRevCS("this is an experiment","an", 9) we got a match.
+__KVI_EXTERN KVILIB_API int kvi_strMatchRevCS(const char *str1, const char *str2, int index=-1);
+
+// KviStr comparison non-member operators
+__KVI_EXTERN KVILIB_API inline bool operator==(const KviStr &left,const KviStr &right)
+{ return (left.m_len == right.m_len) ? kvi_strEqualCS(left.m_ptr,right.m_ptr) : false; }
+__KVI_EXTERN KVILIB_API inline bool operator==(const KviStr &left,const char *right)
+{ return kvi_strEqualCS(left.m_ptr,right); }
+__KVI_EXTERN KVILIB_API inline bool operator==(const char *left,const KviStr &right)
+{ return kvi_strEqualCS(left,right.m_ptr); }
+__KVI_EXTERN KVILIB_API inline bool operator!=(const KviStr &left,const KviStr &right)
+{ return !kvi_strEqualCS(left.m_ptr,right.m_ptr); }
+__KVI_EXTERN KVILIB_API inline bool operator!=(const KviStr &left,const char *right)
+{ return !kvi_strEqualCS(left.m_ptr,right); }
+__KVI_EXTERN KVILIB_API inline bool operator!=(const char *left,const KviStr &right)
+{ return !kvi_strEqualCS(left,right.m_ptr); }
+
+__KVI_EXTERN KVILIB_API inline KviStr operator+(const KviStr &left,const KviStr &right)
+{ KviStr ret(left); ret += right; return ret; }
+__KVI_EXTERN KVILIB_API inline KviStr operator+(const KviStr &left,const char *right)
+{ KviStr ret(left); ret += right; return ret; }
+__KVI_EXTERN KVILIB_API inline KviStr operator+(const char *left,const KviStr &right)
+{ KviStr ret(left); ret += right; return ret; }
+__KVI_EXTERN KVILIB_API inline KviStr operator+(const KviStr &left,char right)
+{ KviStr ret(left); ret += right; return ret; }
+__KVI_EXTERN KVILIB_API inline KviStr operator+(char left,const KviStr &right)
+{ KviStr ret(left); ret += right; return ret; }
+
+inline int kvi_compare(const KviStr * p1,const KviStr * p2)
+{
+ return kvi_strcmpCI(p1->ptr(),p2->ptr());
+}
+
+#endif //_KVI_STRING_H_
diff --git a/src/kvilib/core/kvi_stringarray.cpp b/src/kvilib/core/kvi_stringarray.cpp
new file mode 100644
index 00000000..d160ce28
--- /dev/null
+++ b/src/kvilib/core/kvi_stringarray.cpp
@@ -0,0 +1,119 @@
+//=================================================================================================
+//
+// File : kvi_stringarray.cpp
+// Creation date : Tue Jun 6 02:20:20 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=================================================================================================
+
+#define __KVILIB__
+
+
+#include "kvi_stringarray.h"
+#include "kvi_malloc.h"
+
+KviStringArray::KviStringArray()
+{
+ m_uSize = 0;
+ m_pData = 0;
+ m_uHighestIdx = 0;
+}
+
+KviStringArray::~KviStringArray()
+{
+ if(m_pData)clear();
+}
+
+
+void KviStringArray::clear()
+{
+ if(!m_pData)return;
+ for(unsigned int i=0;i<m_uSize;i++)
+ {
+ if(m_pData[i])delete m_pData[i];
+ }
+ kvi_free(m_pData);
+ m_pData = 0;
+ m_uHighestIdx = 0;
+ m_uSize = 0;
+}
+
+void KviStringArray::insert(unsigned int uIdx,KviStr * pVal)
+{
+ if(m_uSize <= uIdx)
+ {
+ unsigned int uOldSize = m_uSize;
+ m_uSize = uIdx + KVI_STRING_ARRAY_FREESPACE_SIZE;
+ m_pData = (KviStr **)kvi_realloc(m_pData,m_uSize * sizeof(KviStr *));
+ for(unsigned int u = uOldSize;u < m_uSize;u++)
+ {
+ m_pData[u] = 0;
+ }
+ } else {
+ if(m_pData[uIdx])delete m_pData[uIdx];
+ }
+ if(uIdx > m_uHighestIdx)m_uHighestIdx = uIdx;
+ m_pData[uIdx] = pVal;
+}
+
+void KviStringArray::remove(unsigned int uIdx)
+{
+ if(uIdx > m_uHighestIdx)return;
+ if(m_pData[uIdx])
+ {
+ delete m_pData[uIdx];
+ m_pData[uIdx] = 0;
+ if(uIdx == m_uHighestIdx)
+ {
+ // shrink the array
+ if(m_uHighestIdx == 0)clear();
+ else {
+ unsigned int u = m_uHighestIdx - 1;
+ while(!m_pData[u])u--;
+ if((m_uHighestIdx - u) > KVI_STRING_ARRAY_FREESPACE_SIZE)shrink(u);
+ else m_uHighestIdx = u; // just set the max index
+ }
+ }
+ }
+}
+
+void KviStringArray::shrink(unsigned int uMaxItem)
+{
+ m_uHighestIdx = uMaxItem;
+ m_uSize = uMaxItem + 1;
+ m_pData = (KviStr **)kvi_realloc(m_pData,sizeof(KviStr *) * m_uSize);
+}
+
+void KviStringArray::copyFrom(KviStringArray * a)
+{
+ clear();
+ m_uSize = a->m_uSize;
+ m_uHighestIdx = a->m_uHighestIdx;
+ if(m_uSize > 0)
+ {
+ m_pData = (KviStr **)kvi_malloc(sizeof(KviStr *) * m_uSize);
+ for(unsigned int i=0;i<m_uSize;i++)
+ {
+ if(a->m_pData[i])m_pData[i] = new KviStr(*(a->m_pData[i]));
+ else m_pData[i] = 0;
+ }
+ } else {
+ m_pData = 0;
+ }
+}
diff --git a/src/kvilib/core/kvi_stringarray.h b/src/kvilib/core/kvi_stringarray.h
new file mode 100644
index 00000000..3db9a564
--- /dev/null
+++ b/src/kvilib/core/kvi_stringarray.h
@@ -0,0 +1,55 @@
+#ifndef _KVI_STRINGARRAY_H_
+#define _KVI_STRINGARRAY_H_
+//=================================================================================================
+//
+// File : kvi_stringarray.h
+// Creation date : Tue Jun 6 02:20:20 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=================================================================================================
+
+#include "kvi_settings.h"
+#include "kvi_string.h"
+#include "kvi_heapobject.h"
+
+#define KVI_STRING_ARRAY_FREESPACE_SIZE 16
+
+class KVILIB_API KviStringArray : public KviHeapObject
+{
+public:
+ KviStringArray();
+ ~KviStringArray();
+public:
+ unsigned int m_uSize;
+ unsigned int m_uHighestIdx;
+ KviStr ** m_pData;
+public:
+ void clear();
+ void insert(unsigned int uIdx,KviStr * pVal);
+ void copyFrom(KviStringArray * a);
+ unsigned int size(){ return (m_uSize == 0) ? 0 : (m_uHighestIdx + 1); };
+ bool isEmpty(){ return m_uSize == 0; };
+ void remove(unsigned int uIdx);
+ void shrink(unsigned int uMaxItem);
+ KviStr * uncheckedAt(unsigned int uIdx){ return m_pData[uIdx]; };
+ KviStr * at(unsigned int uIdx){ return m_uSize > uIdx ? m_pData[uIdx] : 0; };
+ KviStr * getAt(unsigned int uIdx){ KviStr * t = at(uIdx); if(t)m_pData[uIdx] = 0; return t; };
+};
+
+#endif //_KVI_STRINGARRAY_H_
diff --git a/src/kvilib/core/kvi_valuelist.h b/src/kvilib/core/kvi_valuelist.h
new file mode 100644
index 00000000..fde9d5b6
--- /dev/null
+++ b/src/kvilib/core/kvi_valuelist.h
@@ -0,0 +1,37 @@
+#ifndef _KVI_VALUELIST_H_
+#define _KVI_VALUELIST_H_
+//=================================================================================================
+//
+// File : kvi_valuelist.h
+// Creation date : Mon Jan 15 2007 04:53 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=================================================================================================
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_USE_QT4
+ #include <q3valuelist.h>
+ #define KviValueList Q3ValueList
+#else
+ #include <qvaluelist.h>
+ #define KviValueList QValueList
+#endif
+
+#endif //_KVI_VALUELIST_H_
diff --git a/src/kvilib/ext/Makefile.am b/src/kvilib/ext/Makefile.am
new file mode 100644
index 00000000..c84487eb
--- /dev/null
+++ b/src/kvilib/ext/Makefile.am
@@ -0,0 +1,5 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+EXTRA_DIST = *.cpp *.h
diff --git a/src/kvilib/ext/kvi_accel.h b/src/kvilib/ext/kvi_accel.h
new file mode 100644
index 00000000..34cca3c1
--- /dev/null
+++ b/src/kvilib/ext/kvi_accel.h
@@ -0,0 +1,38 @@
+#ifndef _KVI_ACCEL_H_
+#define _KVI_ACCEL_H_
+
+//=============================================================================
+//
+// File : kvi_accel.h
+// Creation date : Wed Feb 01 2007 01:45:21 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_USE_QT4
+ #include <q3accel.h>
+ #define KviAccel Q3Accel
+#else
+ #include <qaccel.h>
+ #define KviAccel QAccel
+#endif
+
+#endif //!_KVI_ACCEL_H_
diff --git a/src/kvilib/ext/kvi_cmdformatter.cpp b/src/kvilib/ext/kvi_cmdformatter.cpp
new file mode 100644
index 00000000..e2b3e1f6
--- /dev/null
+++ b/src/kvilib/ext/kvi_cmdformatter.cpp
@@ -0,0 +1,242 @@
+//=============================================================================
+//
+// File : kvi_cmdformatter.cpp
+// Creation date : Tue Jun 12 2001 03:08:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+#include "kvi_cmdformatter.h"
+
+namespace KviCommandFormatter
+{
+ bool hasLeadingChars(KviStr ** array,char c)
+ {
+ if(!(*array))return false; // can't have more leading chars
+ bool bGotIt = false;
+ while(*array)
+ {
+ if(*((*array)->ptr()) == c)
+ {
+ // found at least one such leading char
+ bGotIt = true;
+ } else {
+ // we pretend this line to be empty
+ KviStr tmp = *(*array);
+ tmp.stripWhiteSpace();
+ if(tmp.hasData())return false;
+ *(*array) = ""; // set it to empty also in the main buffer
+ }
+ array++;
+ }
+ return bGotIt;
+ }
+
+ bool hasLeadingChars(QStringList &list,const QChar &c)
+ {
+ bool bGotIt = false;
+ for(QStringList::Iterator it = list.begin();it != list.end();++it)
+ {
+ if((*it).length() < 1)continue;
+ if((*it).at(0) == c)
+ {
+ // found at least one such leading char
+ bGotIt = true;
+ } else {
+ // we pretend this line to be empty
+ QString tmp = *it;
+#ifdef COMPILE_USE_QT4
+ tmp = tmp.trimmed();
+#else
+ tmp = tmp.stripWhiteSpace();
+#endif
+ if(!tmp.isEmpty())return false;
+ *it = ""; // set it to empty also in the main buffer
+ }
+ }
+ return bGotIt;
+ }
+
+ void trimLeading(KviStr ** array)
+ {
+ while(*array)
+ {
+ if((*array)->hasData())(*array)->cutLeft(1);
+ array++;
+ }
+ }
+
+ void trimLeading(QStringList &list)
+ {
+ for(QStringList::Iterator it = list.begin();it != list.end();++it)
+ {
+ (*it).remove(0,1);
+ }
+ }
+
+
+ void addLeading(KviStr ** array,char c)
+ {
+ while(*array)
+ {
+ if((*array)->hasData())(*array)->prepend(c);
+ array++;
+ }
+ }
+
+ void addLeading(QStringList &list,const QChar & c)
+ {
+ for(QStringList::Iterator it = list.begin();it != list.end();++it)
+ {
+ (*it).prepend(c);
+ }
+ }
+
+
+ void unindent(KviStr &buffer)
+ {
+ // we can format correctly up to 65536 lines (that's really enough)
+ int realLen;
+ KviStr ** array = buffer.splitToArray('\n',65536,&realLen);
+ if(array)
+ {
+ while(hasLeadingChars(array,'\t') || hasLeadingChars(array,' '))trimLeading(array);
+ buffer.joinFromArray(array,"\n",true);
+ KviStr::freeArray(array);
+ }
+ }
+
+
+ void unindent(QString &buffer)
+ {
+#ifdef COMPILE_USE_QT4
+ QStringList list = buffer.split("\n",QString::KeepEmptyParts);
+#else
+ QStringList list = QStringList::split("\n",buffer,true);
+#endif
+ while(hasLeadingChars(list,QChar('\t')) || hasLeadingChars(list,QChar(' ')))trimLeading(list);
+ //buffer = list.join("\n"); join implementation sux :D
+ // we WANT the last newline
+ buffer = "";
+ for(QStringList::Iterator it = list.begin();it != list.end();++it)
+ {
+ buffer.append(*it);
+ buffer.append(QChar('\n'));
+ }
+ }
+
+
+ void bufferFromBlock(KviStr &buffer)
+ {
+ buffer.stripWhiteSpace();
+
+ if((*(buffer.ptr()) == '{') && buffer.lastCharIs('}'))
+ {
+ // leading and trailing { must be stripped
+ buffer.cutLeft(1);
+ buffer.cutRight(1);
+ }
+
+ unindent(buffer);
+
+ buffer.stripWhiteSpace();
+ }
+
+ void bufferFromBlock(QString &buffer)
+ {
+#ifdef COMPILE_USE_QT4
+ buffer = buffer.trimmed();
+#else
+ buffer = buffer.stripWhiteSpace();
+#endif
+
+ if(buffer.isEmpty())return;
+
+ if((buffer.at(0) == QChar('{')) && buffer.endsWith(QChar('}')))
+ {
+ buffer.remove(0,1);
+ buffer.remove(buffer.length() - 1,1);
+ while((buffer.length() > 0) && ((buffer.at(0) == QChar('\n')) || (buffer.at(0) == QChar('\r'))))
+ buffer.remove(0,1);
+ }
+
+ unindent(buffer);
+
+#ifdef COMPILE_USE_QT4
+ buffer = buffer.trimmed();
+#else
+ buffer = buffer.stripWhiteSpace();
+#endif
+ }
+
+
+ void indent(KviStr &buffer)
+ {
+ // we can format correctly up to 65536 lines (that's really enough)
+ int realLen;
+ KviStr ** array = buffer.splitToArray('\n',65536,&realLen);
+ if(array)
+ {
+ addLeading(array,'\t');
+ buffer.joinFromArray(array,"\n",true);
+ KviStr::freeArray(array);
+ }
+ }
+
+ void indent(QString &buffer)
+ {
+#ifdef COMPILE_USE_QT4
+ QStringList list = buffer.split("\n",QString::KeepEmptyParts);
+#else
+ QStringList list = QStringList::split("\n",buffer,true);
+#endif
+ addLeading(list,QChar('\t'));
+ //buffer = list.join("\n"); join implementation sux :D
+ // we WANT the last newline
+ buffer = "";
+ for(QStringList::Iterator it = list.begin();it != list.end();++it)
+ {
+ buffer.append(*it);
+ buffer.append(QChar('\n'));
+ }
+ }
+
+
+ void blockFromBuffer(KviStr &buffer)
+ {
+ indent(buffer);
+ buffer.prepend("{\n");
+ buffer.stripRightWhiteSpace();
+ buffer.ensureLastCharIs('\n');
+ buffer.append("}\n");
+ }
+
+ void blockFromBuffer(QString &buffer)
+ {
+ indent(buffer);
+ buffer.prepend("{\n");
+ KviQString::stripRightWhiteSpace(buffer);
+ KviQString::ensureLastCharIs(buffer,'\n');
+ buffer.append("}\n");
+ }
+};
+
+// FIXME: #warning "move popups and events to this formatting stuff!"
diff --git a/src/kvilib/ext/kvi_cmdformatter.h b/src/kvilib/ext/kvi_cmdformatter.h
new file mode 100644
index 00000000..b6efa98b
--- /dev/null
+++ b/src/kvilib/ext/kvi_cmdformatter.h
@@ -0,0 +1,64 @@
+#ifndef _KVI_CMDFORMATTER_H_
+#define _KVI_CMDFORMATTER_H_
+
+//=============================================================================
+//
+// File : kvi_cmdformatter.h
+// Creation date : Tue Jun 12 2001 03:04:05 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_string.h"
+#include "kvi_settings.h"
+
+#include "kvi_qstring.h"
+#include <qstringlist.h>
+
+namespace KviCommandFormatter
+{
+ extern KVILIB_API bool hasLeadingChars(KviStr * array,char c);
+ extern KVILIB_API bool hasLeadingChars(QStringList &list,const QChar &c);
+
+ extern KVILIB_API void trimLeading(KviStr ** array);
+ extern KVILIB_API void trimLeading(QStringList &list);
+
+ extern KVILIB_API void addLeading(KviStr ** array,char c);
+ extern KVILIB_API void addLeading(QStringList &list,const QChar &c);
+
+ extern KVILIB_API void trimBlockBraces(KviStr &buffer);
+ extern KVILIB_API void trimBlockBraces(QString &buffer);
+
+ extern KVILIB_API void unindent(KviStr &buffer);
+ extern KVILIB_API void unindent(QString &buffer);
+
+ extern KVILIB_API void bufferFromBlock(KviStr &buffer);
+ extern KVILIB_API void bufferFromBlock(QString &buffer);
+
+ extern KVILIB_API void addBlockBraces(KviStr &buffer);
+ extern KVILIB_API void addBlockBraces(QString &buffer);
+
+ extern KVILIB_API void indent(KviStr &buffer);
+ extern KVILIB_API void indent(QString &buffer);
+
+ extern KVILIB_API void blockFromBuffer(KviStr &buffer);
+ extern KVILIB_API void blockFromBuffer(QString &buffer);
+};
+
+#endif //_KVI_CMDFORMATTER_H_
diff --git a/src/kvilib/ext/kvi_config.cpp b/src/kvilib/ext/kvi_config.cpp
new file mode 100644
index 00000000..eb3dc0bc
--- /dev/null
+++ b/src/kvilib/ext/kvi_config.cpp
@@ -0,0 +1,1007 @@
+//==========================================================================================
+//
+// File : kvi_config.cpp
+// Last major modification : Thu Jan 14 1999 18:03:59 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//==========================================================================================
+
+#define __KVILIB__
+
+#include "kvi_config.h"
+#include "kvi_fileutils.h"
+#include "kvi_pixmap.h"
+#include "kvi_msgtype.h"
+#include "kvi_stringconversion.h"
+#include "kvi_memmove.h"
+#include "kvi_malloc.h"
+#include "kvi_file.h"
+
+
+KviConfig::KviConfig(const QString &filename,FileMode f,bool bLocal8Bit)
+{
+ m_bLocal8Bit = bLocal8Bit;
+ m_szFileName = filename;
+ m_bDirty = false;
+ m_szGroup = KVI_CONFIG_DEFAULT_GROUP;
+ m_bPreserveEmptyGroups = false;
+ m_bReadOnly = (f == KviConfig::Read);
+ m_pDict = new KviPointerHashTable<QString,KviConfigGroup>(17,false);
+ m_pDict->setAutoDelete(true);
+ if(f != KviConfig::Write)load();
+}
+
+KviConfig::KviConfig(const char* filename,FileMode f,bool bLocal8Bit)
+{
+ m_bLocal8Bit = bLocal8Bit;
+ m_szFileName = QString::fromUtf8(filename);
+ m_bDirty = false;
+ m_szGroup = KVI_CONFIG_DEFAULT_GROUP;
+ m_bPreserveEmptyGroups = false;
+ m_bReadOnly = (f == KviConfig::Read);
+ m_pDict = new KviPointerHashTable<QString,KviConfigGroup>(17,false);
+ m_pDict->setAutoDelete(true);
+ if(f != KviConfig::Write)load();
+}
+
+
+KviConfig::~KviConfig()
+{
+ if(m_bDirty)save();
+ delete m_pDict;
+}
+
+void KviConfig::clear()
+{
+ delete m_pDict;
+ m_pDict = new KviPointerHashTable<QString,KviConfigGroup>(17,false);
+ m_pDict->setAutoDelete(true);
+ m_bDirty = false;
+ m_szGroup = KVI_CONFIG_DEFAULT_GROUP;
+}
+
+void KviConfig::clearGroup(const QString & szGroup)
+{
+ m_bDirty = true;
+ m_pDict->remove(szGroup);
+ if(!m_pDict->find(m_szGroup))m_szGroup = KVI_CONFIG_DEFAULT_GROUP; //removed the current one
+}
+
+void KviConfig::clearKey(const QString & szKey)
+{
+ m_bDirty = true;
+ KviConfigGroup * p_group = getCurrentGroup();
+ p_group->remove(szKey);
+ if(p_group->count() == 0)clearGroup(m_szGroup);
+}
+
+/*
+void KviConfig::getContentsString(KviStr &buffer)
+{
+ buffer = __tr("Contents of config file ");
+ buffer.append(m_szFileName.ptr());
+ buffer.append('\n');
+ int sections = 0;
+ int keys = 0;
+ KviPointerHashTableIterator<QString,KviStrDict> it(*m_pDict);
+ while(it.current()){
+ buffer.append(" Section [");
+ buffer.append(it.currentKey());
+ buffer.append("]\n");
+ int sectionKeys = 0;
+ KviPointerHashTableIterator<QString,KviStr> it2(*it.current());
+ while(it2.current()){
+ buffer.append(" Key [");
+ buffer.append(it2.currentKey());
+ buffer.append("] : ");
+ buffer.append(it2.current()->ptr());
+ buffer.append('\n');
+ ++it2;
+ ++sectionKeys;
+ ++keys;
+ }
+ KviStr tmp(KviStr::Format,__tr(" Total: %d keys"),sectionKeys);
+ buffer.append(tmp);
+ buffer.append('\n');
+ ++it;
+ ++sections;
+ }
+ KviStr tmp(KviStr::Format,__tr("Total: %d keys in %d sections"),keys,sections);
+ buffer.append(tmp);
+}
+*/
+
+
+
+#define LOAD_BLOCK_SIZE 32768
+
+bool KviConfig::load()
+{
+ // this is really faster than the old version :)
+
+ // open the file
+ KviFile f(m_szFileName);
+ if(!f.openForReading())return false;
+
+ KviStr tmp;
+ KviConfigGroup * p_group = 0;
+
+ int iLoadBlockSize = LOAD_BLOCK_SIZE;
+
+ char * buffer = (char *)kvi_malloc(iLoadBlockSize * sizeof(char));
+
+ int toRead;
+ int readedLen;
+ int remainingLen = 0;
+
+ char * p = buffer; // start writing to the beginning of the buffer
+
+ do {
+ // compute the length to read
+ toRead = iLoadBlockSize - remainingLen;
+ if(toRead < 1)
+ {
+ // ops... a string longer than iLoadBlockSize - 1 chars
+ iLoadBlockSize += LOAD_BLOCK_SIZE;
+ int iOffset = p - buffer;
+ buffer = (char *)kvi_realloc(buffer,iLoadBlockSize * sizeof(char));
+ p = buffer + iOffset;
+ toRead += LOAD_BLOCK_SIZE;
+ }
+
+ // do read
+ readedLen = f.readBlock(p,toRead);
+ if(readedLen < toRead)
+ {
+ // check for errors
+ if(readedLen <= 0)
+ {
+ if(readedLen < 0)
+ {
+ // error at all
+ f.close();
+ kvi_free(buffer);
+ return true; // nothing more to parse anyway
+ } else {
+ // just a zero byte read
+ if(remainingLen == 0)
+ {
+ // there was nothing in the buffer
+ f.close(); // nothing to parse anyway
+ kvi_free(buffer);
+ return true;
+ }
+ // there is something in the buffer but we have readed 0 bytes
+ // this usually means that the last line in the file has no trailing newline
+ // ...we just fake it :)
+ *p = '\n';
+ readedLen = 1;
+ }
+ } else {
+ // just readed something but less than expected
+ // check if the last readed char is a newline
+ // if it isn't , fake it
+ if(*(p + readedLen - 1) != '\n')
+ {
+ *(p + readedLen) = '\n';
+ readedLen++;
+ }
+ }
+ }
+ // compute the end pointer
+ char * endp = p + readedLen;
+
+ p = buffer; // start from beginning of the data buffer at all
+ // begin of the current string
+ char * begin = p;
+
+ // and loop
+ while(p < endp)
+ {
+ // find a newline
+ if(*p != '\n')
+ {
+ p++;
+ continue;
+ }
+ // newline!
+ *p = 0;
+ // now begin points to the string that terminates in p
+ // skip leading whitespace
+ while((*begin == '\t') || (*begin == ' '))begin++;
+
+ if(p == begin)
+ {
+ // empty line
+ p++;
+ begin = p;
+ continue;
+ }
+ // now p > begin
+ // check if there are trailing spaces (include CR so CRLF is trimmed too)
+ char * trail = p - 1;
+
+ p++;
+
+ while(trail >= begin)
+ {
+ if((*trail == '\r') || (*trail == '\t') || (*trail == ' '))*trail = 0;
+ else break;
+ trail--;
+ }
+
+ // yeah, have some data in this line :D
+ switch(*begin)
+ {
+ case 0:
+ // empty line
+ break;
+ case '#':
+ // comment: just skip it
+ break;
+ case '[':
+ // group ?
+ begin++;
+ if(*begin && (*begin != ']'))
+ {
+ char * z = begin;
+#define COMPAT_WITH_OLD_CONFIGS
+#ifdef COMPAT_WITH_OLD_CONFIGS
+ // run to the end of the string
+ while(*z)z++;
+ // run back to the trailing ']'
+ while((z > begin) && (*z != ']'))z--;
+ // if it is not ther just run back to the end of the string
+ if(*z != ']')while(*z)z++;
+#else
+ // new configs have it always encoded properly
+ while(*z && (*z != ']'))z++;
+#endif
+ *z = 0;
+ tmp.hexDecode(begin);
+ tmp.stripRightWhiteSpace(); // no external spaces in group names
+
+ if(!tmp.isEmpty())
+ {
+ QString szGroup = m_bLocal8Bit ?
+ QString::fromLocal8Bit(tmp.ptr(),tmp.len()) :
+ QString::fromUtf8(tmp.ptr(),tmp.len());
+ p_group = m_pDict->find(szGroup);
+ if(!p_group)
+ {
+ p_group = new KviConfigGroup(17,false);
+ p_group->setAutoDelete(true);
+ m_pDict->insert(szGroup,p_group);
+ }
+ }
+ }
+ break;
+ default:
+ {
+ // real data ?
+ char * z = begin;
+ while(*z && (*z != '='))z++;
+ if(*z && (z != begin))
+ {
+ *z = 0;
+ tmp.hexDecode(begin);
+ tmp.stripRightWhiteSpace(); // No external spaces at all in keys
+ if(!tmp.isEmpty())
+ {
+ QString szKey = m_bLocal8Bit ?
+ QString::fromLocal8Bit(tmp.ptr(),tmp.len()) :
+ QString::fromUtf8(tmp.ptr(),tmp.len());
+ z++;
+ while(*z && ((*z == ' ') || (*z == '\t')))z++;
+ if(*z)
+ {
+ tmp.hexDecode(z);
+ QString * pVal = new QString( m_bLocal8Bit ?
+ QString::fromLocal8Bit(tmp.ptr(),tmp.len()) :
+ QString::fromUtf8(tmp.ptr(),tmp.len())
+ );
+ if(!p_group)
+ {
+ // ops...we're missing a group
+ // use the default one
+ p_group = new KviConfigGroup(17,false);
+ p_group->setAutoDelete(true);
+ m_pDict->insert(KVI_CONFIG_DEFAULT_GROUP,p_group);
+ }
+ p_group->replace(szKey,pVal);
+ } else {
+ // we in fact need this (mercy :D)
+ // otherwise the empty options will be treated as non-existing ones
+ // and will get the defaults (which is bad)
+ QString * pVal = new QString(QString::null);
+ p_group->replace(szKey,pVal);
+ }
+ }
+ }
+ }
+ break;
+ }
+ begin = p;
+ }
+ if(begin != endp)
+ {
+ // there is data with no trailing newline in the buffer
+ remainingLen = endp-begin;
+ if(buffer != begin)
+ {
+ kvi_memmove(buffer,begin,remainingLen);
+ p = buffer + remainingLen;
+ } // else p remains where it is
+ } else {
+ p = buffer;
+ }
+ } while(readedLen == toRead);
+
+ f.close();
+ kvi_free(buffer);
+ return true;
+}
+
+/*
+
+bool KviConfig::load()
+{
+ QFile f(m_szFileName);
+ if(!f.open(IO_ReadOnly))return false;
+
+
+ KviConfigGroup * p_group = 0;
+
+ KviStr dataLine;
+ bool bContinue;
+
+ do {
+ bContinue = kvi_readLine(&f,dataLine);
+ dataLine.stripWhiteSpace();
+ if(dataLine.hasData())
+ {
+ switch(*(dataLine.ptr()))
+ {
+ case '#':
+ // just skip it , it is a comment
+ break;
+ case '[':
+ {
+ //set the group
+ dataLine.cutLeft(1);
+ dataLine.cutRight(1);
+ dataLine.hexDecode();
+ if(dataLine.hasData())
+ {
+ QString szUtf8 = QString::fromUtf8(dataLine.ptr());
+ p_group = m_pDict->find(szUtf8);
+
+ if(!p_group)
+ {
+ p_group = new KviConfigGroup(17,false);
+ p_group->setAutoDelete(true);
+ m_pDict->insert(szUtf8,p_group);
+ }
+ }
+ }
+ break;
+ default:
+ {
+ //data entry...split in two...
+ KviStr name=dataLine.getToken('=');
+ name.stripRightWhiteSpace(); // strip any whitespace added externally
+ name.hexDecode();
+ if(name.hasData())
+ {
+ dataLine.stripLeftWhiteSpace(); // strip any whitespace added externally
+ dataLine.hexDecode();
+ //insert (replace items if needed)
+ QString *p_data=new QString(QString::fromUtf8(dataLine.ptr()));
+ if(!p_group)
+ {
+ // ops...we're missing a group
+ // use the default one
+ p_group = new KviConfigGroup(17,false);
+ p_group->setAutoDelete(true);
+ m_pDict->insert(KVI_CONFIG_DEFAULT_GROUP,p_group);
+ }
+ QString szName = QString::fromUtf8(name.ptr());
+ p_group->replace(szName,p_data);
+ }
+ }
+ break;
+ }
+ }
+ } while (bContinue);
+
+ f.close();
+ return true;
+}
+
+*/
+
+bool KviConfig::save()
+{
+ static unsigned char encode_table[256]=
+ {
+ // 000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015
+ // NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
+ 1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,
+ // 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031
+ // DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
+ 1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,
+ // 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047
+ // ! " # $ % & ' ( ) * + , - . /
+ 1 ,0 ,0 ,1 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063
+ // 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,
+ // 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079
+ // @ A B C D E F G H I J K L M N O
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095
+ // P Q R S T U V W X Y Z [ \ ] ^ _
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,1 ,0 ,0 ,
+ // 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111
+ // ` a b c d e f g h i j k l m n o
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
+ // p q r s t u v w x y z { | } ~ 
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
+ //
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
+ //
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
+ //
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
+ //
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
+ // � � � � � � � � � � � � � � � �
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
+ // � � � � � � � � � � � � � � � �
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
+ // � � � � � � � � � � � � � � � �
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
+ // � � � � � � � �
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0
+ };
+
+
+ if(m_bReadOnly)return false;
+
+ KviFile f(m_szFileName);
+ if(!f.openForWriting())return false;
+ if(f.writeBlock("# KVIrc configuration file\n",27) != 27)return false;
+
+ KviPointerHashTableIterator<QString,KviConfigGroup> it(*m_pDict);
+ while (it.current())
+ {
+ if((it.current()->count() != 0) || (m_bPreserveEmptyGroups))
+ {
+ KviStr group(m_bLocal8Bit ? KviQString::toLocal8Bit(it.currentKey()) : KviQString::toUtf8(it.currentKey()));
+ group.hexEncodeWithTable(encode_table);
+
+ if(!f.putChar('['))return false;
+ if(f.writeBlock(group.ptr(),group.len()) < (int) group.len())return false;
+ if(f.writeBlock("]\n",2) < 2)return false;
+
+ KviConfigGroup * dict = (KviConfigGroup *)it.current();
+ KviConfigGroupIterator it2(*dict);
+
+ KviStr szName,szValue;
+ while(QString * p_str = it2.current())
+ {
+ szName = m_bLocal8Bit ? KviQString::toLocal8Bit(it2.currentKey()) : KviQString::toUtf8(it2.currentKey());
+ szValue = m_bLocal8Bit ? KviQString::toLocal8Bit(*p_str) : KviQString::toUtf8(*p_str);
+ szName.hexEncodeWithTable(encode_table);
+ szValue.hexEncodeWhiteSpace();
+
+ if(f.writeBlock(szName.ptr(),szName.len()) < (int) szName.len())return false;
+ if(!f.putChar('='))return false;
+ if(f.writeBlock(szValue.ptr(),szValue.len()) < (int) szValue.len())return false;
+ if(!f.putChar('\n'))return false;
+ ++it2;
+ }
+ }
+ ++it;
+ }
+ f.close();
+ m_bDirty = false;
+ return true;
+}
+
+void KviConfig::setGroup(const QString & szGroup)
+{
+ m_szGroup = szGroup;
+ if(m_bPreserveEmptyGroups)
+ {
+ if(!hasGroup(szGroup))
+ {
+ getCurrentGroup(); // we need it to be created.
+ m_bDirty = true;
+ }
+ }
+}
+
+bool KviConfig::hasKey(const QString & szKey)
+{
+ KviConfigGroup * p_group = getCurrentGroup();
+ return (p_group->find(szKey) != 0);
+}
+
+bool KviConfig::hasGroup(const QString & szGroup)
+{
+ return (m_pDict->find(szGroup) != 0);
+}
+
+KviConfigGroup * KviConfig::getCurrentGroup()
+{
+ if(m_szGroup.isEmpty())m_szGroup = KVI_CONFIG_DEFAULT_GROUP;
+ KviConfigGroup * p_group = m_pDict->find(m_szGroup);
+ if(!p_group)
+ {
+ //create the group
+ p_group = new KviConfigGroup(17,false);
+ p_group->setAutoDelete(true);
+ m_pDict->insert(m_szGroup,p_group);
+ }
+ return p_group;
+}
+
+////////////////////////////////// KviStr
+
+void KviConfig::writeEntry(const QString & szKey,const QString & szValue)
+{
+ m_bDirty = true;
+ KviConfigGroup * p_group = getCurrentGroup();
+ QString *p_data=new QString(szValue);
+ p_group->replace(szKey,p_data);
+}
+
+// FIXME: #warning "We have probs here ?"
+
+QString KviConfig::readEntry(const QString & szKey,const QString & szDefault)
+{
+ KviConfigGroup * p_group = getCurrentGroup();
+ QString * p_str = p_group->find(szKey);
+ if(!p_str)
+ {
+ m_szStrBuffer = szDefault;
+ } else {
+ m_szStrBuffer = *p_str;
+ }
+ return m_szStrBuffer;
+}
+
+//////////////////////////////////// QString
+
+/*
+QString KviConfig::readQStringEntry(const char *szKey,const QString &szDefault)
+{
+ KviStrDict * p_group = getCurrentGroup();
+ KviStr * p_str = p_group->find(szKey);
+ if(!p_str)return szDefault;
+ return QString::fromUtf8(p_str->ptr());
+}
+*/
+
+/*
+void KviConfig::writeEntry(const char *szKey,const QString &szValue)
+{
+ m_bDirty = true;
+ KviStrDict * p_group = getCurrentGroup();
+ p_group->replace(szKey,new KviStr(szValue.utf8().data()));
+}
+*/
+
+////////////////////////////////// QStringList
+
+static QString g_szConfigStringListSeparator(",\\[ITEM],");
+
+QStringList KviConfig::readStringListEntry(const QString & szKey,const QStringList &list)
+{
+ KviConfigGroup * p_group = getCurrentGroup();
+ QString * p_str = p_group->find(szKey);
+ if(!p_str)return list;
+#ifdef COMPILE_USE_QT4
+ return p_str->split(g_szConfigStringListSeparator);
+#else
+ return QStringList::split(g_szConfigStringListSeparator,*p_str);
+#endif
+}
+
+void KviConfig::writeEntry(const QString & szKey,const QStringList &list)
+{
+ m_bDirty = true;
+ KviConfigGroup * p_group = getCurrentGroup();
+ QString *p_data=new QString(list.join(g_szConfigStringListSeparator));
+ p_group->replace(szKey,p_data);
+}
+
+////////////////////////////////// KviValueList<int>
+
+KviValueList<int> KviConfig::readIntListEntry(const QString & szKey,const KviValueList<int> &list)
+{
+ KviConfigGroup * p_group = getCurrentGroup();
+ QString * p_str = p_group->find(szKey);
+ if(!p_str)
+ {
+ //debug("Returning default list for group %s and key %s",m_szGroup.latin1(),szKey.latin1());
+ return list;
+ }
+#ifdef COMPILE_USE_QT4
+ QStringList sl = p_str->split(",");
+#else
+ QStringList sl = QStringList::split(",",*p_str);
+#endif
+ KviValueList<int> ret;
+
+ //debug("Got option list for group %s and key %s: %s",m_szGroup.latin1(),szKey.latin1(),p_str->latin1());
+
+ for(QStringList::Iterator it = sl.begin();it != sl.end();++it)
+ {
+ bool bOk;
+ int iTmp = (*it).toInt(&bOk);
+ if(bOk)ret.append(iTmp);
+ }
+
+ return ret;
+}
+
+
+void KviConfig::writeEntry(const QString & szKey,const KviValueList<int> &list)
+{
+ m_bDirty = true;
+ KviConfigGroup * p_group = getCurrentGroup();
+ KviStr szData;
+ for(KviValueList<int>::ConstIterator it = list.begin();it != list.end();++it)
+ {
+ if(szData.hasData())szData.append(',');
+ szData.append(KviStr::Format,"%d",*it);
+ }
+ //debug("Writing option list for group %s and key %s: %s",m_szGroup.latin1(),szKey.latin1(),szData.ptr());
+
+ p_group->replace(szKey,new QString(szData.ptr()));
+}
+
+////////////////////////////////// KviPixmap
+
+// FIXME: #warning "Spaces in image names ?"
+
+void KviConfig::writeEntry(const QString & szKey,const KviPixmap &pixmap)
+{
+ m_bDirty = true;
+ KviConfigGroup * p_group = getCurrentGroup();
+ QString *p_data=new QString();
+ KviStringConversion::toString(pixmap,*p_data);
+ p_group->replace(szKey,p_data);
+}
+
+KviPixmap KviConfig::readPixmapEntry(const QString & szKey,const KviPixmap &pixDef)
+{
+ KviConfigGroup * p_group = getCurrentGroup();
+ QString * p_str = p_group->find(szKey);
+ if(p_str)
+ {
+ KviPixmap ret("");
+ return KviStringConversion::fromString(*p_str,ret) ? ret : pixDef;
+ } else {
+ return pixDef;
+ }
+}
+
+////////////////////////////////// KviMsgType
+
+void KviConfig::writeEntry(const QString & szKey,const KviMsgType &msg)
+{
+ m_bDirty = true;
+ KviConfigGroup * p_group = getCurrentGroup();
+ QString szData;
+ KviStringConversion::toString(msg,szData);
+ p_group->replace(szKey,new QString(szData));
+}
+
+KviMsgType KviConfig::readMsgTypeEntry(const QString & szKey,const KviMsgType &msgDef)
+{
+ KviConfigGroup * p_group = getCurrentGroup();
+ QString * p_str = p_group->find(szKey);
+ if(!p_str)return msgDef;
+ KviMsgType ret = msgDef;
+ KviStringConversion::fromString(*p_str,ret);
+ return ret;
+}
+
+////////////////////////////////// QColor
+
+void KviConfig::writeEntry(const QString & szKey,const QColor &clr)
+{
+ m_bDirty = true;
+ KviConfigGroup * p_group = getCurrentGroup();
+ KviStr szData(KviStr::Format,"%d,%d,%d",clr.red(),clr.green(),clr.blue());
+ p_group->replace(szKey,new QString(szData.ptr()));
+}
+
+QColor KviConfig::readColorEntry(const QString & szKey,const QColor &clr)
+{
+ KviConfigGroup * p_group = getCurrentGroup();
+ QColor color(clr);
+ QString * pointer_that_IS_initialized = p_group->find(szKey);
+
+
+ if(pointer_that_IS_initialized)
+ {
+
+ KviStr str(*pointer_that_IS_initialized);
+ str.stripLeftWhiteSpace();
+
+ KviStr red,green,blue;
+
+ str.getToken(red,',');
+ str.getToken(green,',');
+ str.getToken(blue,',');
+
+ if((red.isUnsignedNum())&&(green.isUnsignedNum())&&(blue.isUnsignedNum())){
+ bool bOk;
+ int r = red.toInt(&bOk) % 256;
+ int g = green.toInt(&bOk) % 256;
+ int b = blue.toInt(&bOk) % 256;
+ if(r < 0)r = -r;
+ if(g < 0)g = -g;
+ if(b < 0)b = -b;
+ color.setRgb(r,g,b);
+ }
+ }
+ return color;
+}
+
+////////////////////////////////// QFont
+
+void KviConfig::getFontProperties(KviStr & buffer,QFont *fnt)
+{
+ QString tmp;
+ KviStringConversion::toString(*fnt,tmp);
+ buffer = tmp;
+}
+
+void KviConfig::writeEntry(const QString & szKey,QFont &fnt)
+{
+ m_bDirty = true;
+ KviConfigGroup * p_group = getCurrentGroup();
+ QString *p_data = new QString();
+ KviStringConversion::toString(fnt,*p_data);
+ p_group->replace(szKey,p_data);
+}
+
+
+void KviConfig::setFontProperties(KviStr & str,QFont *fnt)
+{
+ KviStringConversion::fromString(str.ptr(),*fnt);
+}
+
+QFont KviConfig::readFontEntry(const QString & szKey,const QFont &fnt)
+{
+ QFont font(fnt);
+ KviConfigGroup * p_group = getCurrentGroup();
+ QString * p_str = p_group->find(szKey);
+ if(p_str)
+ {
+ //FontEntry=Arial,12,9,0,100,italic,underline,strikeout,
+ KviStr str(*p_str);
+ str.stripLeftWhiteSpace();
+ setFontProperties(str,&font);
+ }
+ return font;
+}
+
+////////////////////////////////// bool
+
+void KviConfig::writeEntry(const QString & szKey,bool bTrue)
+{
+ m_bDirty = true;
+ KviConfigGroup * p_group = getCurrentGroup();
+ QString *p_data = new QString(bTrue ? "true" : "false");
+ p_group->replace(szKey,p_data);
+}
+
+bool KviConfig::readBoolEntry(const QString & szKey,bool bTrue)
+{
+ KviConfigGroup * p_group = getCurrentGroup();
+ QString * p_str = p_group->find(szKey);
+ if(!p_str)return bTrue;
+ static QString szTrue = "true";
+ return (KviQString::toLower(*p_str) == szTrue);
+}
+
+////////////////////////////////// QRect
+
+void KviConfig::writeEntry(const QString & szKey,const QRect &rct)
+{
+ m_bDirty = true;
+ KviConfigGroup * p_group = getCurrentGroup();
+ QString szBuf;
+ KviStringConversion::toString(rct,szBuf);
+ p_group->replace(szKey,new QString(szBuf));
+}
+
+QRect KviConfig::readRectEntry(const QString & szKey,const QRect &rct)
+{
+ KviConfigGroup * p_group = getCurrentGroup();
+ QString * str = p_group->find(szKey);
+ if(!str)return rct;
+ QRect ret;
+ return KviStringConversion::fromString(*str,ret) ? ret : rct;
+}
+
+////////////////////////////////// unsigned short
+
+void KviConfig::writeEntry(const QString & szKey,unsigned short usValue)
+{
+ m_bDirty = true;
+ KviConfigGroup * p_group = getCurrentGroup();
+ QString *p_data = new QString();
+ p_data->setNum(usValue);
+ p_group->replace(szKey,p_data);
+}
+
+unsigned short int KviConfig::readUShortEntry(const QString & szKey,unsigned short int usDefault)
+{
+ KviConfigGroup * p_group = getCurrentGroup();
+ QString * p_str = p_group->find(szKey);
+ if(!p_str)return usDefault;
+ bool bOk;
+ unsigned short int usVal=p_str->toUShort(&bOk);
+ return bOk ? usVal : usDefault;
+}
+
+/*
+////////////////////////////////// unsigned long
+
+Unused code
+void KviConfig::writeEntry(const char *szKey,unsigned long lValue)
+{
+ m_bDirty = true;
+ KviStrDict * p_group = getCurrentGroup();
+ KviStr *p_data = new KviStr();
+ p_data->setNum(lValue);
+ p_group->replace(szKey,p_data);
+}
+
+unsigned long KviConfig::readULongEntry(const char *szKey,unsigned long lDefault)
+{
+ KviStrDict * p_group = getCurrentGroup();
+ KviStr * p_str = p_group->find(szKey);
+ if(!p_str)return lDefault;
+ bool bOk;
+ unsigned long lVal=p_str->toULong(&bOk);
+ return bOk ? lVal : lDefault;
+}
+*/
+
+////////////////////////////////// int
+
+void KviConfig::writeEntry(const QString & szKey,int iValue)
+{
+ m_bDirty = true;
+ KviConfigGroup * p_group = getCurrentGroup();
+ QString *p_data = new QString();
+ p_data->setNum(iValue);
+ p_group->replace(szKey,p_data);
+}
+
+int KviConfig::readIntEntry(const QString & szKey,int iDefault)
+{
+ KviConfigGroup * p_group = getCurrentGroup();
+ QString * p_str = p_group->find(szKey);
+ if(!p_str)return iDefault;
+ bool bOk;
+ int iVal=p_str->toInt(&bOk);
+ return bOk ? iVal : iDefault;
+}
+
+////////////////////////////////// unsigned int
+
+void KviConfig::writeEntry(const QString & szKey,unsigned int iValue)
+{
+ m_bDirty = true;
+ KviConfigGroup * p_group = getCurrentGroup();
+ QString *p_data = new QString();
+ p_data->setNum(iValue);
+ p_group->replace(szKey,p_data);
+}
+
+unsigned int KviConfig::readUIntEntry(const QString & szKey,unsigned int iDefault)
+{
+ KviConfigGroup * p_group = getCurrentGroup();
+ QString * p_str = p_group->find(szKey);
+ if(!p_str)return iDefault;
+ bool bOk;
+ unsigned int iVal=p_str->toUInt(&bOk);
+ return bOk ? iVal : iDefault;
+}
+
+////////////////////////////////// char
+
+void KviConfig::writeEntry(const QString & szKey,char iValue)
+{
+ m_bDirty = true;
+ KviConfigGroup * p_group = getCurrentGroup();
+ QString * p_data = new QString();
+ p_data->setNum(iValue);
+ p_group->replace(szKey,p_data);
+}
+
+char KviConfig::readCharEntry(const QString & szKey,char iDefault)
+{
+ KviConfigGroup * p_group = getCurrentGroup();
+ QString * p_str = p_group->find(szKey);
+ if(!p_str)return iDefault;
+ bool bOk;
+ char iVal=(char)p_str->toInt(&bOk);
+ return bOk ? iVal : iDefault;
+}
+
+////////////////////////////////// unsigned char
+
+void KviConfig::writeEntry(const QString & szKey,unsigned char iValue)
+{
+ m_bDirty = true;
+ KviConfigGroup * p_group = getCurrentGroup();
+ QString *p_data = new QString();
+ p_data->setNum(iValue);
+ p_group->replace(szKey,p_data);
+}
+
+unsigned char KviConfig::readUCharEntry(const QString & szKey,unsigned char iDefault)
+{
+ KviConfigGroup * p_group = getCurrentGroup();
+ QString * p_str = p_group->find(szKey);
+ if(!p_str)return iDefault;
+ bool bOk;
+ unsigned char iVal=(unsigned char)p_str->toUInt(&bOk);
+ return bOk ? iVal : iDefault;
+}
+
+
+#ifdef COMPILE_ON_WINDOWS
+
+ // On windows we need to override new and delete operators
+ // to ensure that always the right new/delete pair is called for an object instance
+ // This bug is present in all the classes exported by a module that
+ // can be instantiated/destroyed from external modules.
+ // (this is a well known bug described in Q122675 of MSDN)
+
+ void * KviConfig::operator new(size_t tSize)
+ {
+ return kvi_malloc(tSize);
+ }
+
+ void KviConfig::operator delete(void * p)
+ {
+ kvi_free(p);
+ }
+
+#endif
diff --git a/src/kvilib/ext/kvi_config.h b/src/kvilib/ext/kvi_config.h
new file mode 100644
index 00000000..6eef4e05
--- /dev/null
+++ b/src/kvilib/ext/kvi_config.h
@@ -0,0 +1,162 @@
+#ifndef _KVI_CONFIG_H_INCLUDED_
+#define _KVI_CONFIG_H_INCLUDED_
+
+//=============================================================================
+//
+// File : kvi_config.h (/usr/build/NEW_kvirc/kvirc/kvilib/kvi_config.h)
+// Last major modification : Thu Jan 14 1999 18:01:22 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_string.h"
+#include "kvi_settings.h"
+#include "kvi_heapobject.h"
+#include "kvi_pointerhashtable.h"
+#include "kvi_valuelist.h"
+
+#include <qcolor.h>
+#include <qfont.h>
+#include <qrect.h>
+#include <qstringlist.h>
+
+#define KVI_CONFIG_DEFAULT_GROUP "KVIrc"
+
+class KviPixmap;
+class KviMsgType;
+
+typedef KviPointerHashTable<QString,QString> KviConfigGroup;
+typedef KviPointerHashTableIterator<QString,QString> KviConfigGroupIterator;
+typedef KviPointerHashTableIterator<QString,KviConfigGroup> KviConfigIterator;
+
+class KVILIB_API KviConfig : public KviHeapObject
+{
+public:
+ enum FileMode { Read = 1 , Write = 2 , ReadWrite = 3 };
+public:
+ KviConfig(const QString &filename,FileMode f/* = ReadWrite*/,bool bLocal8Bit = false);
+ KviConfig(const char *filename,FileMode f/* = ReadWrite*/,bool bLocal8Bit = false);
+ ~KviConfig();
+private:
+ bool m_bLocal8Bit;
+ KviPointerHashTable<QString,KviConfigGroup> * m_pDict;
+ QString m_szFileName;
+ bool m_bDirty;
+ QString m_szStrBuffer;
+ QString m_szGroup;
+ bool m_bPreserveEmptyGroups;
+ bool m_bReadOnly;
+private:
+ bool load();
+ bool save();
+ KviConfigGroup * getCurrentGroup();
+public:
+ //
+ // Useful when saving...
+ // Normally this class does not save empty groups
+ // and setGroup() is never a config modification.
+ // If the group is not existing it will be effectively
+ // created only at the first attempt to read from it or write to it.
+ // With this flag set to true the KviConfig class will
+ // write down also the empty groups , and calls to setGroup()
+ // will create the groups if not existing yet (and set the config data
+ // as modified).
+ //
+ void preserveEmptyGroups(bool bPreserve){ m_bPreserveEmptyGroups = bPreserve; };
+ const QString & fileName(){ return m_szFileName; };
+ bool readOnly(){ return m_bReadOnly; };
+ void setReadOnly(bool bReadOnly){ m_bReadOnly = bReadOnly; };
+ bool dirty(){ return m_bDirty; };
+ //
+ // This sets the save path for the config file
+ // In this way you can load a system-wide read-only config file
+ // as default configuration, alter its settings and save it to the
+ // user local configuration directory
+ void setSavePath(const QString & savePath){ m_szFileName = savePath; };
+ KviPointerHashTable<QString,KviConfigGroup> *dict(){ return m_pDict; };
+
+ void clearDirtyFlag(){ m_bDirty = false; };
+ void clear();
+ void clearGroup(const QString & szGroup);
+ void clearKey(const QString & szKey);
+ unsigned int groupsCount(){ return m_pDict->count(); };
+ bool sync(){ return save(); };
+ bool hasKey(const QString & szKey);
+ bool hasGroup(const QString & szGroup);
+ void setGroup(const QString & szGroup);
+ //void getContentsString(KviStr &buffer);
+ const QString & group(){ return m_szGroup; };
+ void writeEntry(const QString & szKey,const QString & szValue);
+ void writeEntry(const QString & szKey,const char * szValue)
+ { writeEntry(szKey,QString::fromUtf8(szValue)); };
+ QString readEntry(const QString & szKey,const QString & szDefault = QString::null);
+ // HACK for KviOptions.. (FIXME)
+ QString readKviStrEntry(const QString &szKey,const KviStr &szDefault)
+ { return readEntry(szKey,szDefault.ptr()); };
+ //void writeEntry(const char *szKey,KviStr &szValue);
+ //const char * readEntry(const char *szKey,KviStr &szDefault);
+ void writeEntry(const QString & szKey,const KviPixmap &pixmap);
+ KviPixmap readPixmapEntry(const QString & szKey,const KviPixmap &pixDef);
+ void writeEntry(const QString & szKey,const KviMsgType &msg);
+ KviMsgType readMsgTypeEntry(const QString & szKey,const KviMsgType &msgDef);
+ void writeEntry(const QString & szKey,const QColor &clr);
+ QColor readColorEntry(const QString & szKey,const QColor &clr);
+ void writeEntry(const QString & szKey,QFont &fnt);
+ QFont readFontEntry(const QString & szKey,const QFont &fnt);
+ void writeEntry(const QString & szKey,bool bTrue);
+ bool readBoolEntry(const QString & szKey,bool bTrue);
+ QRect readRectEntry(const QString & szKey,const QRect &rct);
+ void writeEntry(const QString & szKey,const QRect &rct);
+ QStringList readStringListEntry(const QString & szKey,const QStringList &list);
+ void writeEntry(const QString & szKey,const QStringList &list);
+ KviValueList<int> readIntListEntry(const QString & ,const KviValueList<int> &list);
+ void writeEntry(const QString & szKey,const KviValueList<int> &list);
+ QString readQStringEntry(const QString & szKey,const QString &szDefault = QString::null)
+ { return readEntry(szKey,szDefault); };
+ //void writeEntry(const QString & szKey,const QString &szValue);
+ //void writeEntry(const char *szKey,unsigned long lValue);
+ //unsigned long readULongEntry(const char *szKey,unsigned long lDefault);
+ //void writeEntry(const char *szKey,long lValue);
+ //long readLongEntry(const char *szKey,long lDefault);
+ void writeEntry(const QString & szKey,int iValue);
+ int readIntEntry(const QString & szKey,int iDefault);
+ void writeEntry(const QString & szKey,unsigned short int usValue);
+ unsigned short int readUShortEntry(const QString & szKey,unsigned short int usDefault);
+ void writeEntry(const QString & szKey,unsigned int iValue);
+ unsigned int readUIntEntry(const QString & szKey,unsigned int iDefault);
+ void writeEntry(const QString & szKey,char iValue);
+ char readCharEntry(const QString & szKey,char iDefault);
+ void writeEntry(const QString & szKey,unsigned char iValue);
+ unsigned char readUCharEntry(const QString & szKey,unsigned char iDefault);
+
+ static void getFontProperties(KviStr & buffer,QFont *fnt);
+ static void setFontProperties(KviStr & str,QFont *fnt);
+
+#ifdef COMPILE_ON_WINDOWS
+ // On windows we need to override new and delete operators
+ // to ensure that always the right new/delete pair is called for an object instance
+ // This bug is present in all the classes exported by a module that
+ // can be instantiated/destroyed from external modules.
+ // (this is a well known bug described in Q122675 of MSDN)
+ void * operator new(size_t tSize);
+ void operator delete(void * p);
+#endif
+};
+
+#endif //!_KVI_CONFIG_H_INCLUDED_
diff --git a/src/kvilib/ext/kvi_crypt.cpp b/src/kvilib/ext/kvi_crypt.cpp
new file mode 100644
index 00000000..84a636aa
--- /dev/null
+++ b/src/kvilib/ext/kvi_crypt.cpp
@@ -0,0 +1,240 @@
+//=============================================================================
+//
+// File : kvi_crypt.cpp
+// Creation date : Fri Nov 03 2000 02:34:43 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+#include "kvi_crypt.h"
+#include "kvi_locale.h"
+
+#ifdef COMPILE_ON_WINDOWS
+ #include "kvi_malloc.h"
+#endif
+
+/*
+ @doc: crypt_engines
+ @type:
+ generic
+ @keyterms:
+ cryptography, privacy, private key, text transformation
+ @title:
+ Cryptography and text transformation
+ @short:
+ Crypt/text transformation engines and how to use them
+ @body:
+ [big]Introduction[/big][br]
+ Well , there is a concrete background noise about security around the net.
+ And I've thought that adding a little cryptography support to KVIrc wasn't
+ a bad idea. So I've first comed out with the "crypt engines", that
+ allowed to have secure conversations on channels, queries and dcc chats;
+ then found out that the realized structure was perfect to be "generalized"
+ into "text transformation" support.[br]
+ [big]The concept[/big][br]
+ In few words, the "text transformation" engine is a layer between the user and the
+ IRC connection. You type some text in the input line of a query window (for example),
+ the engine transforms the text in some way and then sends it to the remote target.
+ The trick works also in the reverse way: some data come from the remote target,
+ the engine retransforms the text in some other way and displays it to the local user.[br]
+ The "incoming" transformation is usually the inverse of the "outgoing" one, but it
+ is not mandatory. It will become clear in few sentences that some engines will do no "incoming"
+ transformation at all. The original use of the transformation engines was to crypt the
+ outgoing data and to decrypt the incoming data; anyway, the engines can perform
+ other funky tasks. One of them is remapping the local charset to a "standardized" one
+ when sending text to a channel (or some other target) and doing the inverse map on
+ the way back. A totally "fantastic" usage of this concept could be an "on-the-fly translator";
+ it could translate for example Italian to English while sending to a channel
+ and English to Italian on the way back...the implementation of a such engine is left
+ to the reader as exercise :) Another (maybe less interesting) usage is to
+ colorize the outgoing text, or transform it
+ in a way that it is still readable but has a different look. This engine
+ would not require a back transformation (so no "decrypt stage"). A "symmetric"
+ idea could be an engine that strips the color codes from the incoming text: this
+ engine would not require a "crypting" stage.[br]
+
+ [big]The name of this stuf[/big][br]
+ Initially all this stuff was named "cryptography support".
+ Then the "cryptography" comed out to be not "enough" to describe
+ the framework, so "text transformation" is a more generic term.
+ Anyway, both terms were used in the documentation and the source.
+ Just as example, the "text transformation engine" is called
+ KviCryptEngine in the sources. So actually the terms "crypt"
+ and "text transformations" refer to the "same thing".
+ You will often find the term "encrypt" standing for "outgoing text
+ transformation" and "decrypt" standing for "incoming text transformation".[br]
+
+ [big]Yes, but why cryptography (on IRC) ?[/big][br]
+ Because it MAY be useful. More than once people have asked me to add some
+ crypting support to the dcc chats. Yes , I know that there are other
+ "secure communication" tools , but actually I can't find one that is able to
+ implement a "secure real time conversation". And what about a MULTIPLE real
+ time secure conversation ? This can be done on an IRC channel now.[br]
+
+ [big]The working things[/big][br]
+ KVIrc can use a text transformation engine on irc channels, in the queries
+ and the dcc chats. At the time I am writing, only the [module:rijndael]Rijndael[/module] crypt engine
+ is available: this is a private key encryption algorithm that assures
+ a "pretty good" security level. More engines will be surely available
+ at the time of the 3.0.0 release of KVIrc. The engines
+ can be activated by the dedicated dialog that can be accessed from the "button bar"
+ of the window. Once an engine has been enabled all the text that you type
+ in the input line (that is not a command obviously) is encrypted
+ and sent to the remote endpoint. If you want to sent a non crypted message
+ while an engine is working you can use the CTRL+P escape: by placing
+ that character as the FIRST CHARACTER of the line you will avoid crypting.
+ Every engine has different capabilities: some can both encrypt
+ and decrypt, other perform only half of the operations. Some engines
+ need a key (the crypt engines obviously), or two keys (you can specify
+ one for the outgoing data and one for the incoming). You can specify
+ all these options in the crypt/text transformation dialog.[br]
+ Obviously (with the current implementations) all the conversation endpoints
+ must agree on the engine (or better algorithm) used and on the key(s).
+ The key is user specified, so you have to find a secure way to negotiate
+ it with your communication engpoints. If you can meet the persons in the "real life",
+ this is the best way to exchange the keys, otherwise you can use mail & pgp.
+ Yes, this is a "miss" of the crypt protocol: it is missing a public key handshake.[br]
+
+ [big]The first test[/big][br]
+ A cool way to test a crypting engine is to use a "self query": connect to
+ any irc server, and execute [cmd]query[/cmd] <yournickname>; a query window
+ with you both as source and target will popup; activate a crypt engine
+ and enable both encryption and decryption; specify the same key for
+ bot directions and then type some text in the input line: you will see
+ the message twice: one is "your local text" and the other is the server routed one.
+ Then you can try to activate encryption only and leaving decryption disabled:
+ you will see how the text would appear to a possible "man in the middle".
+ You can also try to use different keys for encrypting and decrypting,
+ and play with the CTRL+P escape.[br]
+
+ [big]The protocol[/big][br]
+ Well, there is no protocol actually , only the existing implementations , that
+ can be accessed by anyone that want to reproduce them. There are only some
+ points relating to the crypting engines that need to be cleared:[br]
+ The crypted text must be suitable to be sent thru an IRC connection;
+ this means that some characters can not appear in the crypted text (e.g. CR,LF,NULL....).
+ KVIrc solves it in a simple way: the crypted binary data is encoded,
+ either as hexadecimal numeric string or in base64.[br]
+ An escape character has been defined to identify messages that are "crypted" from the
+ ones that are not: this character has ascii code 30 (decimal).[br]
+ The encoding is used in private messages only and has the following format:[br]
+ PRIVMSG <target> :<escape_char_ascii_30><encrypted message>[br]
+ ASCII 30 does not correspond to any widely used escape sequence and allows
+ mixing encrypted and plain text messages in a conversation...Well, this is not
+ so pretty but you can exchange crypted messages with one or two friends while
+ talking on a normal IRC channel: nobody else than your friends will be able
+ to understand the message; others will see senseless sequences of characters.
+ You will be still able to read the unencrypted messages of the other people
+ on the channel.[br] The escape character is not needed if the engine
+ performs non-crypting tasks: a charset mapper will produce text that
+ is meant to be readed by anyone on the channel, a text colorizer will
+ act in a similar way too. So the escape character is used for the "crypting"
+ engines only.
+
+ [big]An idea for the future implementations[/big][br]
+ A "public key" handshake protocol could be implemented.
+*/
+
+
+ KviCryptEngine::KviCryptEngine()
+ {
+#ifdef COMPILE_CRYPT_SUPPORT
+ setLastError(__tr2qs("Invalid crypt engine"));
+ m_iMaxEncryptLen = -1; // unlimited
+ m_deallocFunc = 0;
+#endif //COMPILE_CRYPT_SUPPORT
+ }
+
+ KviCryptEngine::~KviCryptEngine()
+ {
+ }
+
+#ifdef COMPILE_CRYPT_SUPPORT
+
+ bool KviCryptEngine::init(const char *,int,const char *,int)
+ {
+ return false;
+ }
+
+ KviCryptEngine::EncryptResult KviCryptEngine::encrypt(const char *,KviStr &)
+ {
+// debug("Pure virtual KviCryptEngine::encrypt() called");
+ return EncryptError;
+ }
+
+ KviCryptEngine::DecryptResult KviCryptEngine::decrypt(const char *,KviStr &)
+ {
+// debug("Pure virtual KviCryptEngine::decrypt() called");
+ return DecryptError;
+ }
+
+
+ KviCryptEngineManager::KviCryptEngineManager()
+ {
+ m_pEngineDict = new KviPointerHashTable<QString,KviCryptEngineDescription>;
+ m_pEngineDict->setAutoDelete(true);
+ }
+
+ KviCryptEngineManager::~KviCryptEngineManager()
+ {
+ delete m_pEngineDict;
+ }
+
+ void KviCryptEngineManager::registerEngine(KviCryptEngineDescription * d)
+ {
+ m_pEngineDict->replace(d->szName,d);
+ }
+
+ void KviCryptEngineManager::unregisterEngine(const QString &szName)
+ {
+ m_pEngineDict->remove(szName);
+ }
+
+ void KviCryptEngineManager::unregisterEngines(void * providerHandle)
+ {
+ KviPointerHashTableIterator<QString,KviCryptEngineDescription> it(*m_pEngineDict);
+ while(it.current())
+ {
+ if(it.current()->providerHandle == providerHandle)
+ m_pEngineDict->remove(it.currentKey());
+ else
+ ++it;
+ }
+ }
+
+ KviCryptEngine * KviCryptEngineManager::allocateEngine(const QString &szName)
+ {
+ KviCryptEngineDescription * d = m_pEngineDict->find(szName);
+ if(!d)return 0;
+ KviCryptEngine * e = d->allocFunc();
+ if(!e)return 0;
+ e->m_deallocFunc = d->deallocFunc; // remember the dealloc func from now on
+ return e;
+ }
+
+ void KviCryptEngineManager::deallocateEngine(KviCryptEngine * e)
+ {
+ if(!e)return;
+ crypt_engine_deallocator_func deallocFunc = e->m_deallocFunc;
+ deallocFunc(e);
+ }
+
+#endif //COMPILE_CRYPT_SUPPORT
diff --git a/src/kvilib/ext/kvi_crypt.h b/src/kvilib/ext/kvi_crypt.h
new file mode 100644
index 00000000..ae3bc4f0
--- /dev/null
+++ b/src/kvilib/ext/kvi_crypt.h
@@ -0,0 +1,160 @@
+#ifndef _KVI_CRYPT_H_
+#define _KVI_CRYPT_H_
+
+//=============================================================================
+//
+// File : kvi_crypt.h
+// Creation date : Fri Nov 03 2000 01:45:21 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+
+//
+// Base class for all IRC crypt engines
+// These intend to encrypt plain text into something
+// that can be sent through the IRC protocol...
+// so it should not contain NULL, CR , LF and other
+// similar stuff...
+//
+
+
+#include "kvi_qstring.h"
+#include "kvi_string.h"
+#include "kvi_heapobject.h"
+#include "kvi_pointerhashtable.h"
+
+#include <qobject.h>
+
+#ifdef COMPILE_CRYPT_SUPPORT
+ class KviCryptEngine;
+
+ typedef KviCryptEngine * (*crypt_engine_allocator_func)();
+ typedef void (*crypt_engine_deallocator_func)(KviCryptEngine *);
+#endif //COMPILE_CRYPT_SUPPORT
+
+ // we must include this declaration to make moc happy even
+ // if we're not compiling the crypt support
+
+ class KVILIB_API KviCryptEngine : public QObject, public KviHeapObject
+ {
+ Q_OBJECT
+ friend class KviCryptEngineManager;
+ public:
+ KviCryptEngine();
+ virtual ~KviCryptEngine();
+
+#ifdef COMPILE_CRYPT_SUPPORT
+ private:
+ crypt_engine_deallocator_func m_deallocFunc; // this is accessed by KviCryptEngineManager only
+ QString m_szLastError;
+ int m_iMaxEncryptLen;
+ public:
+ void setMaxEncryptLen(int m){ m_iMaxEncryptLen = m; };
+ int maxEncryptLen(){ return m_iMaxEncryptLen; };
+ virtual bool init(const char * encKey,int encKeyLen,const char * decKey,int decKeyLen);
+ //
+ // Encrypts utf8 plainText and returns the encrypted
+ // data in outBuffer. The encrypted data must be
+ // suitable for sending thru an IRC (eventually DCC
+ // that is less restrictive) connection and must be utf8 encoded: so
+ // no NULL, CR and LF in the output.
+ // 0x01 should be also avoided since
+ // it is the CTCP delimiter.
+ // Converting the result in a HEX string
+ // is a good trick...also Base64 could be used.
+ // Should return false in case of an error.
+ // Theoretically we could allow NULLs in plainText
+ // but this is not the case of KVIrc.
+ //
+ enum EncryptResult { Encrypted, Encoded, EncryptError };
+ virtual EncryptResult encrypt(const char * plainText,KviStr &outBuffer);
+ //
+ // Decrypts the utf8 data in inBuffer and puts the decrypted utf8
+ // stuff in plainText. inBuffer is the thingie
+ // that we got from outBuffer of encrupt() so it
+ // follows the same rules.
+ // Should return false in case of error.
+ //
+ enum DecryptResult { DecryptOkWasEncrypted, DecryptOkWasEncoded, DecryptOkWasPlainText, DecryptError };
+ virtual DecryptResult decrypt(const char * inBuffer,KviStr &plainText);
+ //
+ // Returns the string containing the description
+ // of the last error or an empty string if there
+ // was no error after the last init() call.
+ //
+ const QString &lastError(){ return m_szLastError; };
+ protected:
+ //
+ // The following two should have clear meaning
+ //
+ void clearLastError(){ m_szLastError = ""; };
+ void setLastError(const QString &err){ m_szLastError = err; };
+#endif //COMPILE_CRYPT_SUPPORT
+ };
+
+#ifdef COMPILE_CRYPT_SUPPORT
+ #define KVI_CRYPTENGINE_CAN_ENCRYPT 1
+ #define KVI_CRYPTENGINE_CAN_DECRYPT 2
+ #define KVI_CRYPTENGINE_WANT_ENCRYPT_KEY 4
+ #define KVI_CRYPTENGINE_WANT_DECRYPT_KEY 8
+
+ class KVILIB_API KviCryptEngineDescription : public KviHeapObject
+ {
+ public:
+ KviCryptEngineDescription(){};
+ virtual ~KviCryptEngineDescription(){};
+ public:
+ QString szName; // engine name
+ QString szDescription; // details
+ QString szAuthor; // algorithm author
+ int iFlags; // properties
+ crypt_engine_allocator_func allocFunc; // engine allocator
+ crypt_engine_deallocator_func deallocFunc; // deallocation function (if called from outside the origin module)
+ void * providerHandle; // used to identify the provider module
+ };
+
+
+ class KVILIB_API KviCryptEngineManager
+ {
+ public:
+ KviCryptEngineManager();
+ virtual ~KviCryptEngineManager();
+ private:
+ KviPointerHashTable<QString,KviCryptEngineDescription> * m_pEngineDict;
+ public:
+ const KviPointerHashTable<QString,KviCryptEngineDescription> * engineDict(){ return m_pEngineDict; };
+ void registerEngine(KviCryptEngineDescription * d);
+ void unregisterEngine(const QString &szName);
+ void unregisterEngines(void * providerHandle);
+ //
+ // Allocates a crypt engine
+ // Please note that the engine may be deleted from outside
+ // so you'd better connect the "destroyed" signal
+ //
+ KviCryptEngine * allocateEngine(const QString &szName);
+ void deallocateEngine(KviCryptEngine * e);
+ };
+
+#endif //COMPILE_CRYPT_SUPPORT
+
+
+#endif //!_KVI_CRYPT_H_
diff --git a/src/kvilib/ext/kvi_databuffer.cpp b/src/kvilib/ext/kvi_databuffer.cpp
new file mode 100644
index 00000000..7cad39c4
--- /dev/null
+++ b/src/kvilib/ext/kvi_databuffer.cpp
@@ -0,0 +1,135 @@
+//
+// File : kvi_databuffer.cpp
+// Creation date : Thu Aug 23 17:04:24 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#define __KVILIB__
+
+
+#define _KVI_DEBUG_CHECK_RANGE_
+
+#include "kvi_debug.h"
+
+#include "kvi_databuffer.h"
+#include "kvi_malloc.h"
+#include "kvi_memmove.h"
+
+// FIXME: this could resize in chunks!...this would be damn faster :)
+
+KviDataBuffer::KviDataBuffer(int uSize,const unsigned char * data)
+{
+ __range_valid(uSize > 0);
+ m_uSize = uSize;
+ m_pData = (unsigned char *)kvi_malloc(sizeof(unsigned char) * uSize);
+ if(data)kvi_memmove(m_pData,data,uSize);
+}
+
+KviDataBuffer::KviDataBuffer()
+{
+ m_uSize = 0;
+ m_pData = 0;
+}
+
+KviDataBuffer::~KviDataBuffer()
+{
+ if(m_pData)
+ {
+ __range_valid(m_uSize);
+ kvi_free(m_pData);
+ }
+}
+
+int KviDataBuffer::find(const unsigned char * block,int uSize)
+{
+ if(uSize < 1)return -1;
+ if(uSize > m_uSize)return -1;
+
+ int uSearchSize = (m_uSize - uSize) + 1;
+
+ for(int i=0;i<uSearchSize;i++)
+ {
+ if(m_pData[i] == *block)
+ {
+ // good beginning
+ if(uSize == 1)return i;
+ int j;
+ for(j = 1;j<uSize;j++)
+ {
+ if(m_pData[i + j] != block[j])
+ {
+ j = 0;
+ break;
+ }
+ }
+ if(j > 0)return i;
+ }
+ }
+
+ return -1;
+}
+
+int KviDataBuffer::find(unsigned char c)
+{
+ const unsigned char * p = m_pData;
+ const unsigned char * e = p + m_uSize;
+ while(p < e)
+ {
+ if(*p == c)return (p - m_pData);
+ p++;
+ }
+ return -1;
+}
+
+
+void KviDataBuffer::remove(int uSize)
+{
+ __range_valid((uSize <= m_uSize) && (uSize > 0));
+
+ m_uSize -= uSize;
+
+ if(m_uSize > 0)
+ {
+ kvi_memmove(m_pData,m_pData + uSize,m_uSize);
+ m_pData = (unsigned char *)kvi_realloc(m_pData,m_uSize * sizeof(unsigned char));
+ } else {
+ kvi_free(m_pData);
+ m_pData = 0;
+ }
+}
+
+void KviDataBuffer::resize(int uSize)
+{
+ __range_valid(uSize >= 0);
+ if(uSize > 0)
+ {
+ m_pData = (unsigned char *)kvi_realloc(m_pData,uSize * sizeof(unsigned char));
+ } else {
+ kvi_free(m_pData);
+ m_pData = 0;
+ }
+ m_uSize = uSize;
+}
+
+void KviDataBuffer::append(const unsigned char * data,int uSize)
+{
+ m_pData = (unsigned char *)kvi_realloc(m_pData,m_uSize + uSize);
+ kvi_memmove(m_pData + m_uSize,data,uSize);
+ m_uSize += uSize;
+}
diff --git a/src/kvilib/ext/kvi_databuffer.h b/src/kvilib/ext/kvi_databuffer.h
new file mode 100644
index 00000000..62e09b06
--- /dev/null
+++ b/src/kvilib/ext/kvi_databuffer.h
@@ -0,0 +1,56 @@
+#ifndef _KVI_DATABUFFER_H_
+#define _KVI_DATABUFFER_H_
+//
+// File : kvi_databuffer.h
+// Creation date : Thu Aug 23 17:04:25 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+#include "kvi_heapobject.h"
+
+class KVILIB_API KviDataBuffer : public KviHeapObject
+{
+public:
+ // uSize MUST be greater than 0
+ // if data is non-zero, it MUST point to a buffer at least uSize bytes long
+ // and the data is COPIED from that buffer!
+ KviDataBuffer(int uSize,const unsigned char * data = 0);
+ KviDataBuffer();
+ ~KviDataBuffer();
+private:
+ int m_uSize;
+ unsigned char * m_pData;
+public:
+ int size() const { return m_uSize; };
+ unsigned char * data() const { return m_pData; };
+ // uSize MUST be smaller or equal to size()
+ // consumes data!
+ void remove(int uSize);
+ void clear(){ if(m_uSize > 0)remove(m_uSize); };
+ // uSize MUST be greater than 0
+ void resize(int uSize);
+ void addSize(int uSize){ resize(m_uSize + uSize); };
+ void append(const unsigned char * data,int uSize);
+ void append(const KviDataBuffer &b){ append(b.data(),b.size()); };
+ int find(unsigned char c);
+ int find(const unsigned char * block,int uSize);
+};
+
+#endif //_KVI_DATABUFFER_H_
diff --git a/src/kvilib/ext/kvi_dcophelper.cpp b/src/kvilib/ext/kvi_dcophelper.cpp
new file mode 100644
index 00000000..83f34f4e
--- /dev/null
+++ b/src/kvilib/ext/kvi_dcophelper.cpp
@@ -0,0 +1,357 @@
+//=============================================================================
+//
+// File : kvi_dcophelper.cpp
+// Created on Sat 20 Jan 2007 12:35:21 by Alexander Stillich
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+// Copyright (C) 2007 Alexander Stillich <torque at pltn dot org>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+#include "kvi_dcophelper.h"
+
+#ifdef COMPILE_KDE_SUPPORT
+
+#include "dcopclient.h"
+
+#include <qdatastream.h>
+#include <qvaluelist.h>
+
+// must be included this way, since kvilib is built
+// before kvirc and symlinks to headers aren't set yet
+#include "../../kvirc/kernel/kvi_app.h"
+#include "kvi_thread.h"
+
+KviDCOPHelper::KviDCOPHelper(bool bStartApp, const KviQCString &szAppId)
+{
+ m_szAppId = szAppId;
+}
+
+KviDCOPHelper::~KviDCOPHelper()
+{
+}
+
+bool KviDCOPHelper::ensureAppRunning(const QString &szApp)
+{
+ if (findRunningApp(m_szAppId))
+ return true;
+
+ if (m_bStartApp)
+ return startApp(m_szAppId,400);
+
+ return false;
+}
+
+
+bool KviDCOPHelper::voidRetVoidDCOPCall(const KviQCString &szObj,const KviQCString &szFunc)
+{
+ if(!ensureAppRunning(m_szAppId))return false;
+ QByteArray data;
+ return g_pApp->dcopClient()->send(m_szAppId,szObj,szFunc,data);
+}
+
+bool KviDCOPHelper::voidRetBoolDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,bool bVal)
+{
+ if(!ensureAppRunning(m_szAppId))return false;
+ QByteArray data;
+ QDataStream arg(data, IO_WriteOnly);
+ arg << bVal;
+ return g_pApp->dcopClient()->send(m_szAppId,szObj,szFunc,data);
+}
+
+bool KviDCOPHelper::voidRetIntDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,int iVal)
+{
+ if(!ensureAppRunning(m_szAppId))return false;
+ QByteArray data;
+ QDataStream arg(data, IO_WriteOnly);
+ arg << iVal;
+ return g_pApp->dcopClient()->send(m_szAppId,szObj,szFunc,data);
+}
+
+bool KviDCOPHelper::voidRetIntBoolDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,int iVal, bool bVal)
+{
+ if(!ensureAppRunning(m_szAppId))return false;
+ QByteArray data;
+ QDataStream arg(data, IO_WriteOnly);
+ arg << iVal;
+ arg << bVal;
+ return g_pApp->dcopClient()->send(m_szAppId,szObj,szFunc,data);
+}
+
+bool KviDCOPHelper::voidRetIntIntIntDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,int iVal1, int iVal2, int iVal3)
+{
+ if(!ensureAppRunning(m_szAppId))return false;
+ QByteArray data;
+ QDataStream arg(data, IO_WriteOnly);
+ arg << iVal1;
+ arg << iVal2;
+ arg << iVal3;
+ return g_pApp->dcopClient()->send(m_szAppId,szObj,szFunc,data);
+}
+
+bool KviDCOPHelper::voidRetFloatDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,float fVal)
+{
+ if(!ensureAppRunning(m_szAppId))return false;
+ QByteArray data;
+ QDataStream arg(data, IO_WriteOnly);
+ arg << fVal;
+ return g_pApp->dcopClient()->send(m_szAppId,szObj,szFunc,data);
+}
+
+bool KviDCOPHelper::voidRetStringDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,const QString &szVal)
+{
+ if(!ensureAppRunning(m_szAppId))return false;
+ QByteArray data;
+ QDataStream arg(data, IO_WriteOnly);
+ arg << szVal;
+ return g_pApp->dcopClient()->send(m_szAppId,szObj,szFunc,data);
+}
+
+bool KviDCOPHelper::stringRetVoidDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,QString &szRet)
+{
+ if(!ensureAppRunning(m_szAppId))return false;
+ QByteArray data, replyData;
+ KviQCString replyType;
+ if(!g_pApp->dcopClient()->call(m_szAppId,szObj,szFunc,data,replyType,replyData))
+ return false;
+ QDataStream reply( replyData, IO_ReadOnly );
+ if(replyType == "QString")
+ {
+ reply >> szRet;
+ return true;
+ }
+ return false;
+}
+
+bool KviDCOPHelper::stringRetIntDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,QString &szRet,int iVal)
+{
+ if(!ensureAppRunning(m_szAppId))return false;
+ QByteArray data, replyData;
+ KviQCString replyType;
+
+ QDataStream arg(data, IO_WriteOnly);
+ arg << iVal;
+
+ if(!g_pApp->dcopClient()->call(m_szAppId,szObj,szFunc,data,replyType,replyData))
+ return false;
+
+ QDataStream reply( replyData, IO_ReadOnly );
+ if(replyType == "QString")
+ {
+ reply >> szRet;
+ return true;
+ }
+ return false;
+}
+
+bool KviDCOPHelper::intRetVoidDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,int &ret)
+{
+ if(!ensureAppRunning(m_szAppId))return false;
+ QByteArray data, replyData;
+ KviQCString replyType;
+ if(!g_pApp->dcopClient()->call(m_szAppId,szObj,szFunc,data,replyType,replyData))
+ return false;
+ QDataStream reply( replyData, IO_ReadOnly );
+ if(replyType == "int")
+ {
+ reply >> ret;
+ return true;
+ }
+ return false;
+}
+
+bool KviDCOPHelper::intRetIntDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,int &ret, int iVal)
+{
+ if(!ensureAppRunning(m_szAppId))return false;
+ QByteArray data, replyData;
+ KviQCString replyType;
+
+ QDataStream arg(data, IO_WriteOnly);
+ arg << iVal;
+
+ if(!g_pApp->dcopClient()->call(m_szAppId,szObj,szFunc,data,replyType,replyData))
+ return false;
+
+ QDataStream reply( replyData, IO_ReadOnly );
+ if(replyType == "int")
+ {
+ reply >> ret;
+ return true;
+ }
+ return false;
+}
+
+bool KviDCOPHelper::boolRetVoidDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,bool &ret)
+{
+ if(!ensureAppRunning(m_szAppId))return false;
+ QByteArray data, replyData;
+ KviQCString replyType;
+ if(!g_pApp->dcopClient()->call(m_szAppId,szObj,szFunc,data,replyType,replyData))
+ return false;
+ QDataStream reply( replyData, IO_ReadOnly );
+ if(replyType == "bool")
+ {
+ reply >> ret;
+ return true;
+ }
+ return false;
+}
+
+bool KviDCOPHelper::qvalueListIntRetIntDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,KviValueList<int> &ret, int iVal)
+{
+ if(!ensureAppRunning(m_szAppId))
+ return false;
+
+ QByteArray data, replyData;
+ KviQCString replyType;
+ QDataStream arg(data, IO_WriteOnly);
+
+ arg << iVal;
+
+
+ if(!g_pApp->dcopClient()->call(m_szAppId,szObj,szFunc,data,replyType,replyData))
+ return false;
+
+ if(replyType != "QValueList<int>")
+ return false;
+
+ QDataStream replyStream(replyData, IO_ReadOnly);
+ replyStream >> ret;
+
+ return true;
+}
+
+bool KviDCOPHelper::qcstringListRetVoidDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,KviQCStringList &ret)
+{
+ QByteArray data, replyData;
+ KviQCString replyType;
+
+ if (!g_pApp->dcopClient()->call(m_szAppId,szObj,szFunc,data,replyType,replyData))
+ return false;
+
+ if (replyType != "KviQCStringList")
+ return false;
+
+ QDataStream replyStream(replyData, IO_ReadOnly);
+ replyStream >> ret;
+
+ return true;
+}
+
+bool KviDCOPHelper::qcstringListRetIntDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,KviQCStringList &ret, int iVal)
+{
+ QByteArray data, replyData;
+ KviQCString replyType;
+
+ QDataStream arg(data, IO_WriteOnly);
+ arg << iVal;
+
+ if (!g_pApp->dcopClient()->call(m_szAppId,szObj,szFunc,data,replyType,replyData))
+ return false;
+
+ if (replyType != "KviQCStringList")
+ return false;
+
+ QDataStream replyStream(replyData, IO_ReadOnly);
+ replyStream >> ret;
+
+ return true;
+}
+
+bool KviDCOPHelper::findRunningApp(const QString &szApp)
+{
+ QValueList<KviQCString> allApps = g_pApp->dcopClient() ->registeredApplications();
+ QValueList<KviQCString>::iterator iterator;
+ KviQCString sz = szApp.local8Bit();
+ for (iterator = allApps.begin();iterator != allApps.end();iterator++)
+ {
+ if(*iterator == sz)
+ return true;
+ }
+ return false;
+}
+
+int KviDCOPHelper::detectApp(const QString &szApp,bool bStart,int iScoreWhenFound,int iScoreWhenStarted)
+{
+ // dcop available
+ if(!g_pApp->dcopClient())
+ return 0;
+
+ if(findRunningApp(szApp))
+ return 95; // found a running app, no need to run further
+
+ // no app found running
+ if(bStart)
+ {
+ // try to start it
+ if(!startApp(szApp,5000))
+ return 10; // very low possibility
+ return findRunningApp(szApp) ? 99 : 0; // try to find it again
+ }
+
+ return 30; // it still might be installed on the system but we're just unable to start it...
+}
+
+
+bool KviDCOPHelper::startApp(const QString &szApp,int iWaitMSecs)
+{
+ // we could use KApplication::startServiceByDesktopName here
+ // but we want to be able to wait a defined amount of time
+ QStringList tmp;
+ QByteArray data, replyData;
+ KviQCString replyType;
+ QDataStream arg(data, IO_WriteOnly);
+ arg << szApp << tmp;
+ if(!g_pApp->dcopClient()->call(
+ "klauncher",
+ "klauncher",
+ "start_service_by_desktop_name(QString,QStringList)",
+ data,
+ replyType,
+ replyData))
+ {
+ return false;
+ } else {
+ QDataStream reply(replyData, IO_ReadOnly);
+ if(replyType != "serviceResult")return false;
+ int result;
+ KviQCString dcopName;
+ QString error;
+ reply >> result >> dcopName >> error;
+ if(result != 0)return false;
+ }
+ // ok , we seem to have started it.. but it might take some seconds
+ // for the app to get registered
+ // we wait up to five seconds
+ if(iWaitMSecs > 0)
+ {
+ int i = 0;
+ while(i < iWaitMSecs)
+ {
+ if(findRunningApp(szApp))return true;
+ KviThread::msleep(100);
+ i += 100;
+ }
+ return findRunningApp(szApp);
+ }
+ return true;
+}
+
+
+#endif //COMPILE_KDE_SUPPORT
diff --git a/src/kvilib/ext/kvi_dcophelper.h b/src/kvilib/ext/kvi_dcophelper.h
new file mode 100644
index 00000000..de605e37
--- /dev/null
+++ b/src/kvilib/ext/kvi_dcophelper.h
@@ -0,0 +1,82 @@
+#ifndef _KVI_DCOPHELPER_H_
+#define _KVI_DCOPHELPER_H_
+//=============================================================================
+//
+// File : kvi_dcophelper.h
+// Created on Sat 20 Jan 2007 12:35:21 by Alexander Stillich
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+// Copyright (C) 2007 Alexander Stillich <torque at pltn dot org>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_qcstring.h"
+#include "kvi_valuelist.h"
+
+#ifdef COMPILE_KDE_SUPPORT
+
+typedef KviValueList<KviQCString> KviQCStringList;
+
+class KVILIB_API KviDCOPHelper
+{
+
+public:
+
+ // Constructs a DCOP helper object.
+ // bStartApp: tries to start application when a dcop call is about to be made and the app is not already running
+ // szAppID: application name as seen by DCOP
+ KviDCOPHelper(bool bStartApp, const KviQCString &szAppId);
+ ~KviDCOPHelper();
+
+protected:
+
+ KviQCString m_szAppId;
+ bool m_bStartApp;
+
+protected:
+
+ bool ensureAppRunning(const QString &szApp);
+ bool findRunningApp(const QString &szApp);
+ bool startApp(const QString &szApp,int iWaitMSecs = 0);
+ int detectApp(const QString &szApp,bool bStart,int iScoreWhenFound,int iScoreWhenStarted);
+
+ // naming convention: [return value] Ret [argument type(s)] DCOPCall
+
+ bool voidRetVoidDCOPCall(const KviQCString &szObj,const KviQCString &szFunc);
+ bool voidRetIntDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,int iVal);
+ bool voidRetIntBoolDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,int iVal, bool bVal);
+ bool voidRetIntIntIntDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,int iVal1, int iVal2, int iVal3);
+ bool voidRetBoolDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,bool bVal);
+ bool voidRetStringDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,const QString &szVal);
+ bool voidRetFloatDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,float fVal);
+ bool stringRetVoidDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,QString &szRet);
+ bool stringRetIntDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,QString &szRet,int iVal);
+ bool intRetVoidDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,int &ret);
+ bool intRetIntDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,int &ret, int iVal);
+ bool boolRetVoidDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,bool &ret);
+
+ bool qvalueListIntRetIntDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,KviValueList<int> &ret, int iVal);
+ bool qcstringListRetIntDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,KviQCStringList &ret, int iVal);
+ bool qcstringListRetVoidDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,KviQCStringList &ret);
+};
+
+#endif //COMPILE_KDE_SUPPORT
+
+#endif // _KVI_DCOPHELPER_H_
diff --git a/src/kvilib/ext/kvi_doublebuffer.cpp b/src/kvilib/ext/kvi_doublebuffer.cpp
new file mode 100644
index 00000000..5997e934
--- /dev/null
+++ b/src/kvilib/ext/kvi_doublebuffer.cpp
@@ -0,0 +1,90 @@
+//=============================================================================
+//
+// File : kvi_doublebuffer.cpp
+// Created on Fri 27 Jan 2006 18:59:54 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2006 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+#include "kvi_doublebuffer.h"
+
+static QPixmap * g_pMemoryPixmap = 0;
+static unsigned int g_uMaxRequestedWidth = 0;
+static unsigned int g_uMaxRequestedHeight = 0;
+
+KviDoubleBuffer::KviDoubleBuffer(unsigned int uWidth,unsigned int uHeight)
+{
+ if((g_pMemoryPixmap->width() < uWidth) || (g_pMemoryPixmap->height() < uHeight))
+ {
+ // The memory buffer is too small
+ // There is either no such user requirement or it has grown by the meantime
+ unsigned int uMaxW = uWidth > g_pMemoryPixmap->width() ? uWidth : g_pMemoryPixmap->width();
+ unsigned int uMaxH = uHeight > g_pMemoryPixmap->height() ? uHeight : g_pMemoryPixmap->height();
+#ifdef COMPILE_USE_QT4
+ // QT4SUX: QPixmap::resize() is missing (it's a widely used function and assigning a new QPixmap() seems to be slower and not intuitive)
+ *g_pMemoryPixmap = QPixmap(uMaxW,uMaxH);
+#else
+ g_pMemoryPixmap->resize(uMaxW,uMaxH);
+#endif
+ }
+
+ if(uWidth > g_uMaxRequestedWidth)g_uMaxRequestedWidth = uWidth;
+ if(uHeight > g_uMaxRequestedHeight)g_uMaxRequestedHeight = uHeight;
+}
+
+KviDoubleBuffer::~KviDoubleBuffer()
+{
+ // We never shrink here (it's time consuming)
+}
+
+QPixmap * KviDoubleBuffer::pixmap()
+{
+ return g_pMemoryPixmap;
+}
+
+void KviDoubleBuffer::init()
+{
+ if(g_pMemoryPixmap)return;
+ g_pMemoryPixmap = new QPixmap();
+}
+
+void KviDoubleBuffer::done()
+{
+ if(!g_pMemoryPixmap)return;
+ delete g_pMemoryPixmap;
+ g_pMemoryPixmap = 0;
+}
+
+void KviDoubleBuffer::heartbeat()
+{
+ if(((g_uMaxRequestedHeight + 64) < g_pMemoryPixmap->height()) || ((g_uMaxRequestedWidth + 64) < g_pMemoryPixmap->width()))
+ {
+ // do shrink :)
+#ifdef COMPILE_USE_QT4
+ // QT4SUX: QPixmap::resize() is missing (it's a widely used function and assigning a new QPixmap() seems to be slower and not intuitive)
+ *g_pMemoryPixmap = QPixmap(g_uMaxRequestedWidth,g_uMaxRequestedHeight);
+#else
+ g_pMemoryPixmap->resize(g_uMaxRequestedWidth,g_uMaxRequestedHeight);
+#endif
+ }
+ g_uMaxRequestedHeight = 0;
+ g_uMaxRequestedWidth = 0;
+}
diff --git a/src/kvilib/ext/kvi_doublebuffer.h b/src/kvilib/ext/kvi_doublebuffer.h
new file mode 100644
index 00000000..103759a1
--- /dev/null
+++ b/src/kvilib/ext/kvi_doublebuffer.h
@@ -0,0 +1,62 @@
+#ifndef _KVI_DOUBLEBUFFER_H_
+#define _KVI_DOUBLEBUFFER_H_
+//=============================================================================
+//
+// File : kvi_doublebuffer.h
+// Created on Fri 27 Jan 2006 18:59:54 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2006 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include <qpixmap.h>
+
+//
+// This class is basically a huge shared memory pixmap meant to be used in double-buffer
+// painting operations. The memory buffer is resized on the fly so you will always obtain
+// a pixmap that is at least of the specified size. The problem is that this is a time
+// consuming operation (not good in a paint event). We solve it by keeping the buffer
+// with the greatest requested size in the last N minutes.
+//
+// The keyword in all this thingie is "memory is cheap, processing time is not".
+// We know in advance that KVIrc needs a huge double buffer anyway...
+// So we basically grow instantly but we are really lazy at shrinking.
+//
+
+class KVILIB_API KviDoubleBuffer
+{
+public:
+ KviDoubleBuffer(unsigned int uWidth,unsigned int uHeight);
+ ~KviDoubleBuffer();
+public:
+ // This returns a pointer to the memory buffer. The buffer is at least
+ // of the size declared in the constructor.
+ QPixmap * pixmap();
+
+ // The stuff below is internal (used only by KviApp)
+
+ // to be called at application initialisation and cleanup
+ static void init();
+ static void done();
+ // this has to be called at sensible intervals (like 2 minutes)
+ static void heartbeat();
+};
+
+#endif //!_KVI_DOUBLEBUFFER_H_
diff --git a/src/kvilib/ext/kvi_draganddrop.h b/src/kvilib/ext/kvi_draganddrop.h
new file mode 100644
index 00000000..c8bd9f3e
--- /dev/null
+++ b/src/kvilib/ext/kvi_draganddrop.h
@@ -0,0 +1,45 @@
+#ifndef _KVI_DRAGANDDROP_H_
+#define _KVI_DRAGANDDROP_H_
+
+//=============================================================================
+//
+// File : kvi_draganddrop.h
+// Creation date : Wed Feb 01 2007 01:45:21 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+
+#ifdef COMPILE_USE_QT4
+ #include <q3dragobject.h>
+ #define KviDragObject Q3DragObject
+ #define KviUriDrag Q3UriDrag
+ #define KviTextDrag Q3TextDrag
+ #define KviImageDrag Q3ImageDrag
+#else
+ #include <qdragobject.h>
+ #define KviDragObject QDragObject
+ #define KviUriDrag QUriDrag
+ #define KviTextDrag QTextDrag
+ #define KviImageDrag QImageDrag
+#endif
+
+#endif //!_KVI_DRAGANDDROP_H_
diff --git a/src/kvilib/ext/kvi_garbage.cpp b/src/kvilib/ext/kvi_garbage.cpp
new file mode 100644
index 00000000..0e2e8881
--- /dev/null
+++ b/src/kvilib/ext/kvi_garbage.cpp
@@ -0,0 +1,148 @@
+//
+// File : kvi_garbage.cpp
+// Creation date : Mon Dec 3 16:49:15 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#define __KVILIB__
+
+
+
+#include "kvi_garbage.h"
+
+#include <qvariant.h>
+
+KviGarbageCollector::KviGarbageCollector()
+: QObject(0)
+{
+ m_pGarbageList = 0;
+ m_pCleanupTimer = 0;
+ m_bForceCleanupNow = false;
+}
+
+KviGarbageCollector::~KviGarbageCollector()
+{
+ m_bForceCleanupNow = true;
+ cleanup();
+}
+
+void KviGarbageCollector::collect(QObject * g)
+{
+ if(!m_pGarbageList)
+ {
+ m_pGarbageList = new KviPointerList<QObject>;
+ m_pGarbageList->setAutoDelete(true);
+ }
+ //debug("COLLECTING GARBAGE %s",g->className());
+ m_pGarbageList->append(g);
+// debug("Registering garbage object %d (%s:%s)",g,g->className(),g->name());
+ connect(g,SIGNAL(destroyed()),this,SLOT(garbageSuicide()));
+ triggerCleanup(0);
+}
+
+void KviGarbageCollector::garbageSuicide()
+{
+ if(!m_pGarbageList)
+ {
+ debug("Ops... garbage suicide while no garbage list");
+ return;
+ }
+ int idx = m_pGarbageList->findRef(sender());
+ if(idx == -1)
+ {
+ debug("Ops... unregistered garbage suicide");
+ return;
+ }
+ m_pGarbageList->removeRef(sender());
+ if(m_pGarbageList->isEmpty())
+ {
+ cleanup();
+ }
+}
+
+void KviGarbageCollector::triggerCleanup(int iTimeout)
+{
+ //debug("TRIGGERING CLEANUP AFTER %d msecs",iTimeout);
+ if(m_pCleanupTimer)
+ {
+ m_pCleanupTimer->stop();
+ } else {
+ m_pCleanupTimer = new QTimer(this);
+ connect(m_pCleanupTimer,SIGNAL(timeout()),this,SLOT(cleanup()));
+ }
+ m_pCleanupTimer->start(iTimeout);
+}
+
+void KviGarbageCollector::cleanup()
+{
+ //debug("CLEANUP CALLED !");
+ if(m_pGarbageList)
+ {
+ //debug("SOME GARBAGE TO DELETE");
+ KviPointerList<QObject> dying;
+ dying.setAutoDelete(false);
+ for(QObject * o = m_pGarbageList->first();o;o = m_pGarbageList->next())
+ {
+ //debug("CHECKING GARBAGE CLASS %s",o->className());
+ bool bDeleteIt = m_bForceCleanupNow;
+ if(!bDeleteIt)
+ {
+ //debug("CLEANUP NOT FORCED");
+ QVariant v = o->property("blockingDelete");
+ if(v.isValid())
+ {
+ //debug("HAS A VALID VARIANT!");
+// debug("[Garbage collector]: garbage has a blockingDelete property");
+ bDeleteIt = !(v.toBool());
+// if(!bDeleteIt)debug("And doesn't want to be delete now!");
+ } else bDeleteIt = true; // must be deleted
+ }
+ if(bDeleteIt)dying.append(o);
+ }
+
+ for(QObject * o2 = dying.first();o2;o2 = dying.next())
+ {
+ //debug("KILLING GARBAGE CLASS %s",o2->className());
+ disconnect(o2,SIGNAL(destroyed()),this,SLOT(garbageSuicide()));
+ m_pGarbageList->removeRef(o2);
+ }
+
+ if(m_pGarbageList->isEmpty())
+ {
+ delete m_pGarbageList;
+ m_pGarbageList = 0;
+ }
+ }
+
+ if(m_pGarbageList)
+ {
+// debug("[Garbage collector cleanup]: Some stuff left to be deleted, will retry in a while");
+ // something left to be destroyed
+ if(m_bForceCleanupNow)debug("[Garbage collector]: Ops...I've left some undeleted stuff!");
+ triggerCleanup(5000); // retry in 5 sec
+ } else {
+// debug("[Garbage collector cleanup]: Completed");
+ // nothing left to delete
+ if(m_pCleanupTimer)
+ {
+ delete m_pCleanupTimer;
+ m_pCleanupTimer = 0;
+ }
+ }
+}
+
diff --git a/src/kvilib/ext/kvi_garbage.h b/src/kvilib/ext/kvi_garbage.h
new file mode 100644
index 00000000..6bb75641
--- /dev/null
+++ b/src/kvilib/ext/kvi_garbage.h
@@ -0,0 +1,51 @@
+#ifndef _KVI_GARBAGE_H_
+#define _KVI_GARBAGE_H_
+//
+// File : kvi_garbage.h
+// Creation date : Mon Dec 3 16:49:13 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+
+#include <qobject.h>
+#include "kvi_pointerlist.h"
+#include <qtimer.h>
+
+
+class KVILIB_API KviGarbageCollector : public QObject
+{
+ Q_OBJECT
+public:
+ KviGarbageCollector();
+ ~KviGarbageCollector();
+protected:
+ KviPointerList<QObject> * m_pGarbageList;
+ QTimer * m_pCleanupTimer;
+ bool m_bForceCleanupNow;
+public:
+ void collect(QObject * g);
+protected:
+ void triggerCleanup(int iTimeout);
+protected slots:
+ void cleanup();
+ void garbageSuicide();
+};
+
+#endif //_KVI_GARBAGE_H_
diff --git a/src/kvilib/ext/kvi_imagelib.cpp b/src/kvilib/ext/kvi_imagelib.cpp
new file mode 100644
index 00000000..10835b25
--- /dev/null
+++ b/src/kvilib/ext/kvi_imagelib.cpp
@@ -0,0 +1,138 @@
+//=============================================================================
+//
+// File : kvi_imagelib.cpp
+// Creation date : Wed Jul 21 1999 16:41:26 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+#include <qnamespace.h>
+
+#include "kvi_imagelib.h"
+#include "kvi_fileutils.h"
+#include "kvi_locale.h"
+#include "kvi_memmove.h"
+
+#include <qpixmap.h>
+
+
+//KviImageLibrary::KviImageLibrary(const QPixmap &pixmap,int imageWidth,int imageHeight)
+//{
+// if(pixmap.isNull())m_pLibrary=0;
+// else m_pLibrary=new QPixmap(pixmap);
+// setImageSize(imageWidth,imageHeight);
+//}
+
+KviImageLibrary::KviImageLibrary(const QString &path,int imageWidth,int imageHeight)
+{
+ m_pLibrary=0;
+ loadLibrary(path);
+ setImageSize(imageWidth,imageHeight);
+}
+
+KviImageLibrary::KviImageLibrary(const QString &path1,const QString &path2,int imageWidth,int imageHeight)
+{
+ m_pLibrary=0;
+ if(KviFileUtils::fileExists(path1))
+ {
+ loadLibrary(path1);
+ if(m_pLibrary==0)loadLibrary(path2);
+ } else loadLibrary(path2);
+ setImageSize(imageWidth,imageHeight);
+}
+
+
+KviImageLibrary::~KviImageLibrary()
+{
+ unloadLibrary();
+}
+
+void KviImageLibrary::unloadLibrary()
+{
+ if(m_pLibrary)delete m_pLibrary;
+ m_pLibrary=0;
+}
+
+bool KviImageLibrary::setImageSize(int imageWidth,int imageHeight)
+{
+ m_iWidth=((imageWidth>0) ? imageWidth : 16);
+ m_iHeight=((imageHeight>0) ? imageHeight : 16);
+ return true;
+}
+
+bool KviImageLibrary::loadLibrary(const QString &path)
+{
+ if(m_pLibrary)delete m_pLibrary;
+ m_pLibrary=new QImage(path);
+ if(m_pLibrary->isNull())
+ {
+ delete m_pLibrary;
+ m_pLibrary=0;
+ debug("WARNING : Can not load image library %s",KviQString::toUtf8(path).data());
+ }
+ return (m_pLibrary != 0);
+}
+
+int KviImageLibrary::imageCount()
+{
+ if(!m_pLibrary)return 0;
+ if((m_iWidth<1)||(m_iHeight<1))return 0;
+ int nRows=m_pLibrary->width()/m_iWidth;
+ return ( nRows * (m_pLibrary->height()/m_iHeight));
+}
+
+QPixmap KviImageLibrary::getImage(int zeroBasedIndex)
+{
+ if((zeroBasedIndex >= imageCount())||(zeroBasedIndex < 0)||(m_pLibrary->depth() < 8))
+ {
+ QPixmap image(32,32);
+ image.fill(); //White fill
+ return image;
+ }
+
+ // Im per row is not zero...because imageCount returned non zero.
+ int imPerRow=(m_pLibrary->width() / m_iWidth);
+ int xOffset=(zeroBasedIndex % imPerRow) * m_iWidth;
+ int yOffset=(zeroBasedIndex / imPerRow) * m_iHeight;
+
+#ifdef COMPILE_USE_QT4
+ QImage image(m_iWidth,m_iHeight,m_pLibrary->format());
+#else
+ QImage image(m_iWidth,m_iHeight,m_pLibrary->depth());
+#endif
+
+ int d = image.depth() / 8;
+#ifndef COMPILE_USE_QT4
+ if(d == 4)image.setAlphaBuffer(true); // Qt 4.x should manage it automagically
+#endif
+ //Copy the image data
+ //bitBlt(&image,0,0,m_pLibrary,xOffset,yOffset,m_iWidth,m_iHeight,Qt::CopyROP,false);
+
+ for(int i=0;i<m_iHeight;i++)
+ kvi_memmove(image.scanLine(i),m_pLibrary->scanLine(i + yOffset) + (xOffset * d),m_iWidth * d);
+
+#ifdef COMPILE_USE_QT4
+ QPixmap p = QPixmap::fromImage(image);
+#else
+ QPixmap p(image);
+#endif
+ return p;
+}
diff --git a/src/kvilib/ext/kvi_imagelib.h b/src/kvilib/ext/kvi_imagelib.h
new file mode 100644
index 00000000..d78c8d19
--- /dev/null
+++ b/src/kvilib/ext/kvi_imagelib.h
@@ -0,0 +1,73 @@
+#ifndef _KVI_IMAGELIB_H_
+#define _KVI_IMAGELIB_H_
+
+//
+// File : kvi_imagelib.h
+// Creation date : Wed Jul 21 1999 16:41:26 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+//
+// A class to manage multiple image libraries.
+// The library is in fact a big image that contains
+// several rows of other smaller images of the same size.
+// The images inside the 'library' are indexed in the following way:
+//
+// -------------
+// |...|...|...|
+// |.0.|.1.|.2.|
+// -------------
+// |...|...|...|
+// |.3.|.4.|.5.|
+// -------------
+// |...|...|...|
+//
+// The 'library' image should have the size that is a multiple
+// of the single image size. If not , the remaining part is ignored.
+// The first image starts always in the left upper corner.
+//
+
+// WARNING: This class will be removed in the near future. Don't use it.
+
+#include "kvi_settings.h"
+
+#include <qimage.h>
+
+class KVILIB_API KviImageLibrary
+{
+public: // Consruction & Destruction
+// KviImageLibrary(const QPixmap &pixmap,int imageWidth,int imageHeight);
+ KviImageLibrary(const QString &path,int imageWidth,int imageHeight);
+ KviImageLibrary(const QString &path1,const QString &path2,int imageWidth,int imageHeight);
+ ~KviImageLibrary();
+public: // Fields
+ QImage *m_pLibrary;
+ int m_iWidth;
+ int m_iHeight;
+public: // Methods
+ bool loadLibrary(const QString &path);
+ void unloadLibrary();
+ int imageCount();
+ bool libraryLoaded(){ return (m_pLibrary != 0); };
+ QImage *getLibrary(){ return m_pLibrary; };
+ QPixmap getImage(int zeroBasedIndex);
+ bool setImageSize(int imageWidth,int imageHeight);
+};
+
+#endif //_KVI_IMAGELIB_H_INCLUDED_
diff --git a/src/kvilib/ext/kvi_md5.cpp b/src/kvilib/ext/kvi_md5.cpp
new file mode 100644
index 00000000..cbf01500
--- /dev/null
+++ b/src/kvilib/ext/kvi_md5.cpp
@@ -0,0 +1,298 @@
+//
+// File : kvi_md5.cpp
+// Creation date : Wed Sep 4 22:16:45 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#define __KVILIB__
+
+
+
+/*
+ ######################################################################
+
+ MD5Sum - MD5 Message Digest Algorithm.
+
+ This code implements the MD5 message-digest algorithm. The algorithm is
+ due to Ron Rivest. This code was written by Colin Plumb in 1993, no
+ copyright is claimed. This code is in the public domain; do with it what
+ you wish.
+
+ Equivalent code is available from RSA Data Security, Inc. This code has
+ been tested against that, and is equivalent, except that you don't need to
+ include two pages of legalese with every copy.
+
+ To compute the message digest of a chunk of bytes, instantiate the class,
+ and repeatedly call one of the Add() members. When finished the Result
+ method will return the Hash and finalize the value.
+
+ Changed so as no longer to depend on Colin Plumb's `usual.h' header
+ definitions; now uses stuff from dpkg's config.h.
+ - Ian Jackson <[email protected]>.
+
+ Changed into a C++ interface and made work with APT's config.h.
+ - Jason Gunthorpe <[email protected]>
+
+ Interface adapted to the KVIrc irc client
+ - Szymon Stefanek <pragma at kvirc dot net>
+
+ The classes use arrays of char that are a specific size. We cast those
+ arrays to uint8_t's and go from there. This allows us to advoid using
+ the uncommon inttypes.h in a public header or internally newing memory.
+ In theory if C9x becomes nicely accepted
+
+ ##################################################################### */
+
+#include "kvi_md5.h"
+#include "kvi_settings.h"
+#include "kvi_bswap.h"
+#include "kvi_memmove.h"
+
+/* Swap n 32 bit longs in given buffer */
+#ifdef BIG_ENDIAN_MACHINE_BYTE_ORDER
+ static void byteSwap(kvi_u32_t *buf,unsigned int words)
+ {
+// kvi_u8_t *p = (kvi_u8_t *)buf;
+// do
+// {
+// *buf++ = (kvi_u32_t)((unsigned)p[3] << 8 | p[2]) << 16 | ((unsigned)p[1] << 8 | p[0]);
+// p += 4;
+// } while (--words);
+ do {
+ *buf = kvi_swap32(*buf);
+ buf++;
+ } while(--words);
+ }
+#else
+ #define byteSwap(buf,words)
+#endif
+
+/* The core of the MD5 algorithm, this alters an existing MD5 hash to
+ reflect the addition of 16 longwords of new data. Add blocks
+ the data and converts bytes into longwords for this routine. */
+
+// The four core functions - F1 is optimized somewhat
+// #define F1(x, y, z) (x & y | ~x & z)
+#define F1(x, y, z) (z ^ (x & (y ^ z)))
+#define F2(x, y, z) F1(z, x, y)
+#define F3(x, y, z) (x ^ y ^ z)
+#define F4(x, y, z) (y ^ (x | ~z))
+
+// This is the central step in the MD5 algorithm.
+#define MD5STEP(f,w,x,y,z,in,s) \
+ (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
+
+static void MD5Transform(kvi_u32_t buf[4],const kvi_u32_t in[16])
+{
+ register kvi_u32_t a, b, c, d;
+
+ a = buf[0];
+ b = buf[1];
+ c = buf[2];
+ d = buf[3];
+
+ MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);
+ MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
+ MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);
+ MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
+ MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
+ MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);
+ MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);
+ MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);
+ MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);
+ MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
+ MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
+ MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);
+ MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);
+ MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);
+ MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);
+ MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);
+
+ MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);
+ MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);
+ MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);
+ MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
+ MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);
+ MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);
+ MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
+ MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
+ MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
+ MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);
+ MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
+ MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);
+ MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
+ MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
+ MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);
+ MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
+
+ MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);
+ MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);
+ MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
+ MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);
+ MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);
+ MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
+ MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
+ MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
+ MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
+ MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
+ MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
+ MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);
+ MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
+ MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
+ MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
+ MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
+
+ MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);
+ MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);
+ MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);
+ MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);
+ MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);
+ MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
+ MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);
+ MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);
+ MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
+ MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
+ MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);
+ MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
+ MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);
+ MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);
+ MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
+ MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);
+
+ buf[0] += a;
+ buf[1] += b;
+ buf[2] += c;
+ buf[3] += d;
+}
+
+KviMd5::KviMd5()
+{
+ kvi_u32_t *buf = (kvi_u32_t *)m_pBuf;
+ kvi_u32_t *bytes = (kvi_u32_t *)m_pBytes;
+
+ buf[0] = 0x67452301;
+ buf[1] = 0xefcdab89;
+ buf[2] = 0x98badcfe;
+ buf[3] = 0x10325476;
+
+ bytes[0] = 0;
+ bytes[1] = 0;
+
+ m_bDone = false;
+}
+
+KviMd5::~KviMd5()
+{
+}
+
+bool KviMd5::add(const unsigned char *data,unsigned long len)
+{
+ if(m_bDone)return false;
+
+ kvi_u32_t *buf = (kvi_u32_t *)m_pBuf;
+ kvi_u32_t *bytes = (kvi_u32_t *)m_pBytes;
+ kvi_u32_t *in = (kvi_u32_t *)m_pIn;
+
+ // Update byte count and carry (this could be done with a long long?)
+ kvi_u32_t t = bytes[0];
+
+ if ((bytes[0] = t + len) < t)bytes[1]++;
+
+ // Space available (at least 1)
+ t = 64 - (t & 0x3f);
+ if (t > len)
+ {
+ kvi_fastmove((unsigned char *)in + 64 - t,data,len);
+ return true;
+ }
+
+ // First chunk is an odd size
+ kvi_fastmove((unsigned char *)in + 64 - t,data,t);
+ byteSwap(in, 16);
+
+ MD5Transform(buf,in);
+ data += t;
+ len -= t;
+
+ // Process data in 64-byte chunks
+ while (len >= 64)
+ {
+ kvi_fastmove(in,data,64);
+ byteSwap(in,16);
+ MD5Transform(buf,in);
+ data += 64;
+ len -= 64;
+ }
+
+ // Handle any remaining bytes of data.
+ kvi_memmove(in,data,len);
+
+ return true;
+}
+
+
+// ---------------------------------------------------------------------
+/* Because this must add in the last bytes of the series it prevents anyone
+ from calling add after. */
+
+KviStr KviMd5::result()
+{
+ kvi_u32_t *buf = (kvi_u32_t *)m_pBuf;
+ kvi_u32_t *bytes = (kvi_u32_t *)m_pBytes;
+ kvi_u32_t *in = (kvi_u32_t *)m_pIn;
+
+ if(!m_bDone)
+ {
+ // Number of bytes in In
+ int count = bytes[0] & 0x3f;
+ unsigned char *p = (unsigned char *)in + count;
+
+ // Set the first char of padding to 0x80. There is always room.
+ *p++ = 0x80;
+
+ // Bytes of padding needed to make 56 bytes (-8..55)
+ count = 56 - 1 - count;
+
+ // Padding forces an extra block
+ if (count < 0)
+ {
+ kvi_memset(p,0,count + 8);
+ byteSwap(in, 16);
+ MD5Transform(buf,in);
+ p = (unsigned char *)in;
+ count = 56;
+ }
+
+ kvi_memset(p, 0, count);
+ byteSwap(in, 14);
+
+ // Append length in bits and transform
+ in[14] = bytes[0] << 3;
+ in[15] = bytes[1] << 3 | bytes[0] >> 29;
+ MD5Transform(buf,in);
+ byteSwap(buf,4);
+ m_bDone = true;
+ }
+
+ // m_pBuf now contains the md5 sum
+ KviStr ret;
+ ret.bufferToHex((char *)m_pBuf,16);
+
+ return ret;
+}
diff --git a/src/kvilib/ext/kvi_md5.h b/src/kvilib/ext/kvi_md5.h
new file mode 100644
index 00000000..113c3a7c
--- /dev/null
+++ b/src/kvilib/ext/kvi_md5.h
@@ -0,0 +1,68 @@
+#ifndef _KVI_MD5_H_
+#define _KVI_MD5_H_
+//
+// File : kvi_md5.h
+// Creation date : Wed Sep 4 22:16:44 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+
+/* ######################################################################
+
+ MD5SumValue - Storage for a MD5Sum
+ MD5Summation - MD5 Message Digest Algorithm.
+
+ This is a C++ interface to a set of MD5Sum functions. The class can
+ store a MD5Sum in 16 bytes of memory.
+
+ A MD5Sum is used to generate a (hopefully) unique 16 byte number for a
+ block of data. This can be used to gaurd against corruption of a file.
+ MD5 should not be used for tamper protection, use SHA or something more
+ secure.
+
+ There are two classes because computing a MD5 is not a continual
+ operation unless 64 byte blocks are used. Also the summation requires an
+ extra 18*4 bytes to operate.
+
+ ##################################################################### */
+
+#include "kvi_settings.h"
+#include "kvi_inttypes.h"
+#include "kvi_string.h"
+
+class KviMd5
+{
+public:
+ KviMd5();
+ ~KviMd5();
+protected:
+ unsigned char m_pBuf[4*4];
+ unsigned char m_pBytes[2*4];
+ unsigned char m_pIn[16*4];
+ bool m_bDone;
+
+public:
+ bool add(const unsigned char *Data,unsigned long Size);
+
+ KviStr result();
+};
+
+
+#endif //_KVI_MD5_H_
diff --git a/src/kvilib/ext/kvi_mediatype.cpp b/src/kvilib/ext/kvi_mediatype.cpp
new file mode 100644
index 00000000..87c7926d
--- /dev/null
+++ b/src/kvilib/ext/kvi_mediatype.cpp
@@ -0,0 +1,541 @@
+//
+// File : kvi_mediatype.cpp
+// Creation date : Mon Aug 21 2000 17:51:56 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#define __KVILIB__
+
+
+//#define _KVI_DEBUG_CHECK_RANGE_
+
+
+
+#include "kvi_debug.h"
+#include "kvi_mediatype.h"
+#include "kvi_config.h"
+#include "kvi_fileutils.h"
+#include "kvi_locale.h"
+#include "kvi_file.h"
+
+#include "kvi_settings.h"
+
+#include <qregexp.h>
+#include <qdir.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+
+#ifndef COMPILE_ON_WINDOWS
+ #include <unistd.h>
+ #include "kvi_malloc.h"
+#endif
+
+
+
+#ifndef S_ISDIR
+#define S_ISDIR(__f) (__f & _S_IFDIR)
+#endif
+
+#ifndef S_ISFIFO
+#define S_ISFIFO(__f) (__f & _S_IFIFO)
+#endif
+
+#ifndef S_ISREG
+#define S_ISREG(__f) (__f & _S_IFREG)
+#endif
+
+#ifndef S_ISCHR
+#define S_ISCHR(__f) (__f & _S_IFCHR)
+#endif
+
+#ifndef COMPILE_ON_WINDOWS
+ #include <dirent.h>
+#else
+ #include "kvi_malloc.h"
+#endif
+
+
+
+
+KviMediaManager::KviMediaManager()
+: KviMutex()
+{
+ m_pMediaTypeList = new KviPointerList<KviMediaType>;
+ m_pMediaTypeList->setAutoDelete(true);
+}
+
+KviMediaManager::~KviMediaManager()
+{
+ delete m_pMediaTypeList;
+}
+
+KviMediaType * KviMediaManager::findMediaTypeByIanaType(const char * ianaType)
+{
+ __range_valid(locked());
+ for(KviMediaType * mt = m_pMediaTypeList->first();mt;mt = m_pMediaTypeList->next())
+ {
+ if(kvi_strEqualCI(mt->szIanaType.ptr(),ianaType))return mt;
+ }
+
+ return 0;
+}
+
+KviMediaType * KviMediaManager::findMediaTypeByFileMask(const char * filemask)
+{
+ __range_valid(locked());
+ for(KviMediaType * mt = m_pMediaTypeList->first();mt;mt = m_pMediaTypeList->next())
+ {
+// FIXME: #warning "Should this be case sensitive ?"
+ if(kvi_strEqualCI(mt->szFileMask.ptr(),filemask))return mt;
+ }
+
+ return 0;
+}
+
+void KviMediaManager::copyMediaType(KviMediaType * dst,KviMediaType * src)
+{
+ dst->szFileMask = src->szFileMask;
+ dst->szMagicBytes = src->szMagicBytes;
+ dst->szIanaType = src->szIanaType;
+ dst->szDescription = src->szDescription;
+ dst->szSavePath = src->szSavePath;
+ dst->szCommandline = src->szCommandline;
+ dst->szRemoteExecCommandline = src->szRemoteExecCommandline;
+ dst->szIcon = src->szIcon;
+}
+
+
+void KviMediaManager::insertMediaType(KviMediaType * m)
+{
+ __range_valid(locked());
+ int iWildCount = m->szFileMask.occurences('*');
+ int iNonWildCount = m->szFileMask.len() - iWildCount;
+
+ // The masks with no wildcards go first in the list
+ // then we insert the ones with more non-wild chars
+
+ int index = 0;
+ for(KviMediaType * mt = m_pMediaTypeList->first();mt;mt = m_pMediaTypeList->next())
+ {
+ if(iWildCount)
+ {
+ // the new mask has wildcards... if the current one has none, skip it
+ int iWildCountExisting = mt->szFileMask.occurences('*');
+ if(iWildCountExisting)
+ {
+ // the one in the list has wildcards too...
+ // the ones with more non-wild chars go first...
+ int iNonWildCountExisting = mt->szFileMask.len() - iWildCountExisting;
+ if(iNonWildCountExisting < iNonWildCount)
+ {
+ // ok...the new one has more non-wildcards , insert
+ m_pMediaTypeList->insert(index,m);
+ return;
+ } else {
+ if(iNonWildCount == iNonWildCountExisting)
+ {
+ // the same number of non-wildcards
+ // let the number of wildcards decide (it will be eventually equal)
+ if(iWildCount < iWildCountExisting)
+ {
+ // the new one has less wildcards... goes first
+ m_pMediaTypeList->insert(index,m);
+ return;
+ } // else the same number of wildcards and non-wildcards...skip
+ } // else the existing one has more non-wildcards...skip
+ }
+ } // else the current has no wildcards...skip
+ } else {
+ // the new mask has no wildcards....
+ if(mt->szFileMask.contains('*'))
+ {
+ // current one has wildcards...insert
+ m_pMediaTypeList->insert(index,m);
+ return;
+ }
+ // the current one has no wildcards...
+ // the longer masks go first....
+ if(mt->szFileMask.len() < m->szFileMask.len())
+ {
+ // the current one is shorter than the new one...insert
+ m_pMediaTypeList->insert(index,m);
+ return;
+ } // else current one is longer...skip
+ }
+ index++;
+ }
+ m_pMediaTypeList->append(m);
+
+/*
+ // the masks with no wildcards go first
+ // longer masks go first
+
+ bool bHasWildcards = m->szFileMask.contains('*');
+ int index = 0;
+ for(KviMediaType * mt = m_pMediaTypeList->first();mt;mt = m_pMediaTypeList->next())
+ {
+ if(bHasWildcards)
+ {
+ if(mt->szFileMask.len() < m->szFileMask.len())
+ {
+ m_pMediaTypeList->insert(index,m);
+ return;
+ } else if(mt->szFileMask.len() == m->szFileMask.len())
+ {
+ if(mt->szMagicBytes.len() < m->szMagicBytes.len())
+ {
+ m_pMediaTypeList->insert(index,m);
+ return;
+ }
+ }
+ } else {
+ if(mt->szFileMask.contains('*'))
+ {
+ m_pMediaTypeList->insert(index,m);
+ return;
+ } else {
+ if(mt->szFileMask.len() < m->szFileMask.len())
+ {
+ m_pMediaTypeList->insert(index,m);
+ return;
+ } else if(mt->szFileMask.len() == m->szFileMask.len())
+ {
+ if(mt->szMagicBytes.len() < m->szMagicBytes.len())
+ {
+ m_pMediaTypeList->insert(index,m);
+ return;
+ }
+ }
+ }
+ }
+ index++;
+ }
+ m_pMediaTypeList->append(m);
+*/
+}
+
+
+KviMediaType * KviMediaManager::findMediaType(const char * filename,bool bCheckMagic)
+{
+ // FIXME: This should be ported at least to QString....
+ __range_valid(locked());
+
+ KviStr szFullPath = filename;
+ if(!kvi_isAbsolutePath(szFullPath.ptr()))
+ {
+#ifdef COMPILE_USE_QT4
+ KviStr tmp = QDir::currentPath();
+#else
+ KviStr tmp = QDir::currentDirPath();
+#endif
+ tmp.ensureLastCharIs('/');
+ szFullPath.prepend(tmp);
+ }
+
+ KviStr szFile = filename;
+ szFile.cutToLast('/',true);
+
+
+ // first of all , lstat() the file
+#ifdef COMPILE_ON_WINDOWS
+ struct _stat st;
+ if(_stat(szFullPath.ptr(),&st) != 0)
+#else
+ struct stat st;
+ if(lstat(szFullPath.ptr(),&st) != 0)
+#endif
+ {
+ //debug("Problems while stating file %s",szFullPath.ptr());
+ // We do just the pattern matching
+ // it's better to avoid magic checks
+ // if the file is a device , we would be blocked while attempting to read data
+ return findMediaTypeForRegularFile(szFullPath.ptr(),szFile.ptr(),false);
+ } else {
+ // If it is a link , stat() the link target
+#ifndef COMPILE_ON_WINDOWS
+ if(S_ISLNK(st.st_mode))
+ {
+ if(stat(szFullPath.ptr(),&st) != 0)
+ {
+ debug("Problems while stating() target for link %s",szFullPath.ptr());
+ // Same as above
+ return findMediaTypeForRegularFile(szFullPath.ptr(),szFile.ptr(),false);
+ }
+ }
+#endif
+ }
+
+
+ if(S_ISDIR(st.st_mode))
+ {
+ // Directory : return default media type
+ KviMediaType * mtd = findMediaTypeByIanaType("inode/directory");
+ if(!mtd)
+ {
+ // Add it
+ mtd = new KviMediaType;
+ mtd->szIanaType = "inode/directory";
+ mtd->szDescription = __tr("Directory");
+ mtd->szCommandline = "dirbrowser.open -m $0";
+ mtd->szIcon = "kvi_dbfolder.png"; // hardcoded ?
+ insertMediaType(mtd);
+ }
+ return mtd;
+ }
+
+
+#ifndef COMPILE_ON_WINDOWS
+ if(S_ISSOCK(st.st_mode))
+ {
+ // Socket : return default media type
+ KviMediaType * mtd = findMediaTypeByIanaType("inode/socket");
+ if(!mtd)
+ {
+ // Add it
+ mtd = new KviMediaType;
+ mtd->szIanaType = "inode/socket";
+ mtd->szDescription = __tr("Socket");
+ mtd->szIcon = "kvi_dbsocket.png"; // hardcoded ?
+ insertMediaType(mtd);
+ }
+ return mtd;
+ }
+#endif
+
+ if(S_ISFIFO(st.st_mode))
+ {
+ // Fifo: return default media type
+ KviMediaType * mtd = findMediaTypeByIanaType("inode/fifo");
+ if(!mtd)
+ {
+ // Add it
+ mtd = new KviMediaType;
+ mtd->szIanaType = "inode/fifo";
+ mtd->szDescription = __tr("Fifo");
+ mtd->szIcon = "kvi_dbfifo.png"; // hardcoded ?
+ insertMediaType(mtd);
+ }
+ return mtd;
+ }
+
+#ifndef COMPILE_ON_WINDOWS
+ if(S_ISBLK(st.st_mode))
+ {
+ // Block device: return default media type
+ KviMediaType * mtd = findMediaTypeByIanaType("inode/blockdevice");
+ if(!mtd)
+ {
+ // Add it
+ mtd = new KviMediaType;
+ mtd->szIanaType = "inode/blockdevice";
+ mtd->szDescription = __tr("Block device");
+ mtd->szIcon = "kvi_dbblockdevice.png"; // hardcoded ?
+ insertMediaType(mtd);
+ }
+ return mtd;
+ }
+#endif
+
+ if(S_ISCHR(st.st_mode))
+ {
+ // Char device: return default media type
+ KviMediaType * mtd = findMediaTypeByIanaType("inode/chardevice");
+ if(!mtd)
+ {
+ // Add it
+ mtd = new KviMediaType;
+ mtd->szIanaType = "inode/chardevice";
+ mtd->szDescription = __tr("Char device");
+ mtd->szIcon = "kvi_dbchardevice.png"; // hardcoded ?
+ insertMediaType(mtd);
+ }
+ return mtd;
+ }
+
+
+ // this is a regular file (or at least it looks like one)
+ return findMediaTypeForRegularFile(szFullPath.ptr(),szFile.ptr(),bCheckMagic);
+}
+
+KviMediaType * KviMediaManager::findMediaTypeForRegularFile(const char * szFullPath,const char * szFileName,bool bCheckMagic)
+{
+ char buffer[17];
+ int len = 0;
+
+ if(bCheckMagic)
+ {
+ QString szTmp=QString::fromUtf8(szFullPath);
+ KviFile f(szTmp);
+ if(f.openForReading())
+ {
+ len = f.readBlock(buffer,16);
+ if(len > 0)
+ {
+ buffer[len] = '\0';
+ if(buffer[0] == 0)len = 0; // no way to match it
+ }
+ f.close();
+ }
+ }
+
+ for(KviMediaType * m = m_pMediaTypeList->first();m;m = m_pMediaTypeList->next())
+ {
+// FIXME: #warning "Should this be case sensitive ?"
+ if(kvi_matchWildExpr(m->szFileMask.ptr(),szFileName))
+ {
+ if(len && m->szMagicBytes.hasData())
+ {
+ QRegExp re(m->szMagicBytes.ptr());
+ // It looks like they can't decide the name for this function :D
+ // ... well, maybe the latest choice is the best one.
+#ifdef COMPILE_USE_QT4
+ if(re.indexIn(buffer) > -1)return m; // matched!
+#else
+ #if QT_VERSION >= 300
+ if(re.search(buffer) > -1)return m; // matched!
+ #else
+ if(re.find(buffer,0) > -1)return m; // matched!
+ #endif
+#endif
+ // else magic failed...not a match
+ } else return m; // matched! (no magic check)
+ }
+ }
+
+ KviMediaType * mtd = findMediaTypeByIanaType("application/octet-stream");
+ if(!mtd)
+ {
+ // Add it
+ mtd = new KviMediaType;
+ mtd->szIanaType = "application/octet-stream";
+ mtd->szDescription = __tr("Octet stream (unknown)");
+ mtd->szCommandline = "editor.open $0";
+ mtd->szIcon = "kvi_dbunknown.png"; // hardcoded ?
+ insertMediaType(mtd);
+ }
+
+ return mtd;
+}
+
+typedef struct _KviDefaultMediaType
+{
+ const char * filemask;
+ const char * magicbytes;
+ const char * ianatype;
+ const char * description;
+ const char * commandline;
+} KviDefaultMediaType;
+
+
+// FIXME : default handlers for windows ?
+
+static KviDefaultMediaType g_defMediaTypes[]=
+{
+ { "*.jpg","^\\0330\\0377","image/jpeg","JPEG image","run kview $0" },
+ { "*.jpeg","^\\0330\\0377","image/jpeg","JPEG image","run kview $0" },
+ { "*.png","","image/png","PNG image","run kview $0" },
+ { "*.mp3","","audio/mpeg","MPEG audio","run xmms -e $0" },
+ { "*.gif","","image/gif","GIF image","run kvirc $0" },
+ { "*.mpeg","","video/mpeg","MPEG video","run xanim $0" },
+ { "*.exe","","application/x-executable-file","Executable file","run $0" },
+ { "*.zip","^PK\\0003\\0004","application/zip","ZIP archive","run ark $0" },
+ { "*.tar.gz","","application/x-gzip","GZipped tarball","run ark $0" },
+ { "*.tar.bz2","","applicatoin/x-bzip2","BZipped tarball","run ark $0" },
+ { "*.tgz","","application/x-gzip","GZipped tarball","run ark $0" },
+ { "*.wav","","audio/wav","Wave audio","run play $0" },
+ { 0,0,0,0,0 }
+};
+
+void KviMediaManager::load(const char * filename)
+{
+ __range_valid(locked());
+
+ KviConfig cfg(filename,KviConfig::Read);
+ cfg.setGroup("MediaTypes");
+ unsigned int nEntries = cfg.readUIntEntry("NEntries",0);
+ for(unsigned int i = 0; i < nEntries;i++)
+ {
+ KviMediaType * m = new KviMediaType;
+ KviStr tmp(KviStr::Format,"%dFileMask",i);
+ m->szFileMask = cfg.readEntry(tmp.ptr(),"");
+ tmp.sprintf("%dMagicBytes",i);
+ m->szMagicBytes = cfg.readEntry(tmp.ptr(),"");
+ tmp.sprintf("%dIanaType",i);
+ m->szIanaType = cfg.readEntry(tmp.ptr(),"application/unknown");
+ tmp.sprintf("%dDescription",i);
+ m->szDescription = cfg.readEntry(tmp.ptr(),"");
+ tmp.sprintf("%dSavePath",i);
+ m->szSavePath = cfg.readEntry(tmp.ptr(),"");
+ tmp.sprintf("%dCommandline",i);
+ m->szCommandline = cfg.readEntry(tmp.ptr(),"");
+ tmp.sprintf("%dRemoteExecCommandline",i);
+ m->szRemoteExecCommandline = cfg.readEntry(tmp.ptr(),"");
+ tmp.sprintf("%dIcon",i);
+ m->szIcon = cfg.readEntry(tmp.ptr(),"");
+ insertMediaType(m);
+ }
+
+ for(int u = 0;g_defMediaTypes[u].filemask;u++)
+ {
+ if(!findMediaTypeByFileMask(g_defMediaTypes[u].filemask))
+ {
+ KviMediaType * m = new KviMediaType;
+ m->szFileMask = g_defMediaTypes[u].filemask;
+ m->szMagicBytes = g_defMediaTypes[u].magicbytes;
+ m->szIanaType = g_defMediaTypes[u].ianatype;
+ m->szDescription = g_defMediaTypes[u].description;
+ m->szCommandline = g_defMediaTypes[u].commandline;
+ insertMediaType(m);
+ }
+ }
+
+}
+
+void KviMediaManager::save(const char * filename)
+{
+ __range_valid(locked());
+ KviConfig cfg(filename,KviConfig::Write);
+
+ cfg.clear();
+ cfg.setGroup("MediaTypes");
+ cfg.writeEntry("NEntries",m_pMediaTypeList->count());
+ int index = 0;
+ for(KviMediaType * m= m_pMediaTypeList->first();m;m = m_pMediaTypeList->next())
+ {
+ KviStr tmp(KviStr::Format,"%dFileMask",index);
+ cfg.writeEntry(tmp.ptr(),m->szFileMask.ptr());
+ tmp.sprintf("%dMagicBytes",index);
+ cfg.writeEntry(tmp.ptr(),m->szMagicBytes.ptr());
+ tmp.sprintf("%dIanaType",index);
+ cfg.writeEntry(tmp.ptr(),m->szIanaType.ptr());
+ tmp.sprintf("%dDescription",index);
+ cfg.writeEntry(tmp.ptr(),m->szDescription.ptr());
+ tmp.sprintf("%dSavePath",index);
+ cfg.writeEntry(tmp.ptr(),m->szSavePath.ptr());
+ tmp.sprintf("%dCommandline",index);
+ cfg.writeEntry(tmp.ptr(),m->szCommandline.ptr());
+ tmp.sprintf("%dRemoteExecCommandline",index);
+ cfg.writeEntry(tmp.ptr(),m->szRemoteExecCommandline.ptr());
+ tmp.sprintf("%dIcon",index);
+ cfg.writeEntry(tmp.ptr(),m->szIcon.ptr());
+ ++index;
+ }
+}
diff --git a/src/kvilib/ext/kvi_mediatype.h b/src/kvilib/ext/kvi_mediatype.h
new file mode 100644
index 00000000..77e96594
--- /dev/null
+++ b/src/kvilib/ext/kvi_mediatype.h
@@ -0,0 +1,83 @@
+#ifndef _KVI_MEDIATYPE_H_
+#define _KVI_MEDIATYPE_H_
+//
+// File : kvi_mediatype.h
+// Creation date : Mon Aug 21 2000 17:19:56 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+#include "kvi_heapobject.h"
+#include "kvi_string.h"
+#include "kvi_thread.h"
+
+#include "kvi_pointerlist.h"
+
+
+//
+// IANA media-types matching subsystem
+//
+// WARNING: This class is used in multiple threads
+// Thus every usage of the classes and structures defined
+// in this file MUST be protected by calls
+// to KviMediaManager::lock() and KviMediaManager::unlock()
+//
+
+
+class KVILIB_API KviMediaType : public KviHeapObject
+{
+public:
+ KviMediaType(){};
+ ~KviMediaType(){};
+public:
+ KviStr szFileMask;
+ KviStr szMagicBytes;
+ KviStr szIanaType;
+ KviStr szDescription;
+ KviStr szSavePath;
+ KviStr szCommandline;
+ KviStr szRemoteExecCommandline;
+ KviStr szIcon;
+};
+
+class KVILIB_API KviMediaManager : public KviMutex
+{
+public:
+ KviMediaManager();
+ ~KviMediaManager();
+protected:
+ KviPointerList<KviMediaType> * m_pMediaTypeList;
+private:
+ KviMediaType * findMediaTypeForRegularFile(const char * szFullPath,const char * szFileName,bool bCheckMagic);
+public:
+ KviPointerList<KviMediaType> * mediaTypeList(){ return m_pMediaTypeList; };
+ KviMediaType * findMediaTypeByFileMask(const char * filemask);
+ KviMediaType * findMediaTypeByIanaType(const char * ianaType);
+ bool removeMediaType(KviMediaType * t){ return m_pMediaTypeList->removeRef(t); };
+ void clear(){ m_pMediaTypeList->clear(); };
+ void insertMediaType(KviMediaType * t);
+ KviMediaType * findMediaType(const char * filename,bool bCheckMagic = true);
+ static void copyMediaType(KviMediaType * dst,KviMediaType * src);
+
+ void load(const char * filename);
+ void save(const char * filename);
+};
+
+
+#endif //_KVI_MEDIATYPE_H_
diff --git a/src/kvilib/ext/kvi_miscutils.cpp b/src/kvilib/ext/kvi_miscutils.cpp
new file mode 100644
index 00000000..184345ed
--- /dev/null
+++ b/src/kvilib/ext/kvi_miscutils.cpp
@@ -0,0 +1,86 @@
+//=============================================================================
+//
+// File : kvi_miscutils.cpp
+// Created on Mon 08 Jan 2007 04:07:31 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2007 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+#include "kvi_miscutils.h"
+
+#include <qstringlist.h>
+
+namespace KviMiscUtils
+{
+ int compareVersions(const QString &szVersion1,const QString &szVersion2)
+ {
+#ifdef COMPILE_USE_QT4
+ QStringList sl1 = szVersion1.split(".");
+ QStringList sl2 = szVersion2.split(".");
+#else
+ QStringList sl1 = QStringList::split(".",szVersion1);
+ QStringList sl2 = QStringList::split(".",szVersion2);
+#endif
+
+ QStringList::Iterator it1 = sl1.begin();
+ QStringList::Iterator it2 = sl2.begin();
+ while((it1 != sl1.end()) && (it2 != sl2.end()))
+ {
+ bool bOk;
+ int i1 = (*it1).toInt(&bOk);
+ if(!bOk)return 1;
+ int i2 = (*it2).toInt(&bOk);
+ if(!bOk)return -1;
+ if(i1 != i2)
+ {
+ // field not equal
+ if(i1 > i2)return -1;
+ else return 1;
+ }
+ it1++;
+ it2++;
+ }
+ // both are equal until now
+ if(it1 != sl1.end())return -1; // 1 has at least one field more
+ if(it2 != sl2.end())return 1; // 2 has at least one field more
+ // both are equal also in length
+ return 0;
+ }
+
+ bool isValidVersionString(const QString &szVersion)
+ {
+#ifdef COMPILE_USE_QT4
+ QStringList sl = szVersion.split(".");
+#else
+ QStringList sl = QStringList::split(".",szVersion);
+#endif
+ if(sl.isEmpty())return false;
+ // must all be numbers
+ for(QStringList::Iterator it = sl.begin();it != sl.end();++it)
+ {
+ bool bOk;
+ int i = (*it).toInt(&bOk);
+ if(!bOk)return false;
+ if(i < 0)return false;
+ }
+ return true;
+ }
+
+};
diff --git a/src/kvilib/ext/kvi_miscutils.h b/src/kvilib/ext/kvi_miscutils.h
new file mode 100644
index 00000000..f09d63a7
--- /dev/null
+++ b/src/kvilib/ext/kvi_miscutils.h
@@ -0,0 +1,44 @@
+#ifndef _KVI_MISCUTILS_H_
+#define _KVI_MISCUTILS_H_
+//=============================================================================
+//
+// File : kvi_miscutils.h
+// Created on Mon 08 Jan 2007 04:07:31 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2007 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+
+// this is the namespace for single function stuff that doesn't really fit anywhere else
+
+namespace KviMiscUtils
+{
+ // Compare two x.y.z... version strings.
+ // The function behaves like strcmp: it returns 0 when the versions
+ // are equal, -1 if the szVersion1 is greater and 1 if szVersion2 is greater
+ extern KVILIB_API int compareVersions(const QString &szVersion1,const QString &szVersion2);
+
+ // Check if the argument string is a valid x.y.z.... version string
+ extern KVILIB_API bool isValidVersionString(const QString &szVersion);
+
+};
+
+#endif //!_KVI_MISCUTILS_H_
diff --git a/src/kvilib/ext/kvi_msgtype.cpp b/src/kvilib/ext/kvi_msgtype.cpp
new file mode 100644
index 00000000..d79a6220
--- /dev/null
+++ b/src/kvilib/ext/kvi_msgtype.cpp
@@ -0,0 +1,68 @@
+//
+// File : kvi_msgtype.cpp
+// Creation date : Fri 30 24 2000 13:53:21 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#define __KVILIB__
+
+
+#define _KVI_DEBUG_CHECK_RANGE_
+
+#include "kvi_debug.h"
+#include "kvi_msgtype.h"
+
+KviMsgType::KviMsgType(const char * type,int pixId,unsigned char fore,unsigned char back,bool bLog,int iLevel)
+{
+ m_szType = type;
+ m_iPixId = pixId;
+ m_cForeColor = fore;
+ m_cBackColor = back;
+ m_bLogEnabled = bLog;
+ if((iLevel < KVI_MSGTYPE_MINLEVEL) || (iLevel > KVI_MSGTYPE_MAXLEVEL))iLevel = 1;
+ m_iLevel = iLevel;
+}
+
+KviMsgType::KviMsgType(const KviMsgType &msg)
+{
+ m_szType = msg.m_szType;
+ m_iPixId = msg.m_iPixId;
+ m_cForeColor = msg.m_cForeColor;
+ m_cBackColor = msg.m_cBackColor;
+ m_bLogEnabled = msg.m_bLogEnabled;
+ m_iLevel = msg.m_iLevel;
+}
+
+KviMsgType::~KviMsgType()
+{
+}
+
+
+
+KviMsgType & KviMsgType::operator=(const KviMsgType &msg)
+{
+ //if(m_szType.ptr() == msg.m_szType.ptr())return (*this); // self assignment (!!!)
+ m_szType = msg.m_szType;
+ m_iPixId = msg.m_iPixId;
+ m_cForeColor = msg.m_cForeColor;
+ m_cBackColor = msg.m_cBackColor;
+ m_bLogEnabled = msg.m_bLogEnabled;
+ m_iLevel = msg.m_iLevel;
+ return (*this);
+}
diff --git a/src/kvilib/ext/kvi_msgtype.h b/src/kvilib/ext/kvi_msgtype.h
new file mode 100644
index 00000000..ca4553ef
--- /dev/null
+++ b/src/kvilib/ext/kvi_msgtype.h
@@ -0,0 +1,74 @@
+#ifndef _KVI_MSGTYPE_H_
+#define _KVI_MSGTYPE_H_
+
+//
+// File : kvi_msgtype.h
+// Creation date : Fri Jun 30 2000 13:50:11 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+#include "kvi_string.h"
+
+#define KVI_MSGTYPE_MINLEVEL 0
+#define KVI_MSGTYPE_LEVEL_0 0
+#define KVI_MSGTYPE_LEVEL_1 1
+#define KVI_MSGTYPE_LEVEL_2 2
+#define KVI_MSGTYPE_LEVEL_3 3
+#define KVI_MSGTYPE_LEVEL_4 4
+#define KVI_MSGTYPE_LEVEL_5 5
+#define KVI_MSGTYPE_MAXLEVEL 5
+
+// 1 : Common activity
+// 2 : People talking
+// 3 : Response messages (whois , dns)
+// 4 :
+// 5 : Highlighted text
+
+// FIXME: Check the message ranges!!!
+
+class KVILIB_API KviMsgType
+{
+public:
+ KviMsgType(const char * type,int pixId,unsigned char fore,unsigned char back,bool bLog,int iLevel);
+ KviMsgType(const KviMsgType &msg);
+ ~KviMsgType();
+public:
+ const char * m_szType;
+ int m_iPixId;
+ unsigned char m_cForeColor;
+ unsigned char m_cBackColor;
+ bool m_bLogEnabled;
+ int m_iLevel;
+public:
+ void setBack(char back){ m_cBackColor = back; };
+ void setFore(char fore){ m_cForeColor = fore; };
+ int pixId(){ return m_iPixId; };
+ int level(){ return m_iLevel; };
+ void setLevel(int iLevel){ if((iLevel < KVI_MSGTYPE_MINLEVEL) || (iLevel > KVI_MSGTYPE_MAXLEVEL))m_iLevel = 1; else m_iLevel = iLevel; };
+ void setPixId(int pixId){ m_iPixId = pixId; };
+ unsigned char back(){ return m_cBackColor; };
+ unsigned char fore(){ return m_cForeColor; };
+ bool logEnabled(){ return m_bLogEnabled; };
+ void enableLogging(bool bEnable){ m_bLogEnabled = bEnable; };
+ const char * type(){ return m_szType; };
+ KviMsgType & operator=(const KviMsgType &msg); // deep copy
+};
+
+#endif //_KVI_MSGTYPE_H_
diff --git a/src/kvilib/ext/kvi_osinfo.cpp b/src/kvilib/ext/kvi_osinfo.cpp
new file mode 100644
index 00000000..51037a48
--- /dev/null
+++ b/src/kvilib/ext/kvi_osinfo.cpp
@@ -0,0 +1,510 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// File : kvi_osinfo.cpp
+// Creation date : 19 Jan 2006 GMT by Alexey Uzhva
+//
+// This toolbar is part of the KVirc irc client distribution
+// Copyright (C) 2006 Alexey Uzhva
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define __KVILIB__
+
+#include "kvi_osinfo.h"
+#include "kvi_locale.h"
+#include "kvi_qstring.h"
+
+#ifndef COMPILE_ON_WINDOWS
+ #include <sys/utsname.h>
+ #include <stdlib.h>
+ #include <unistd.h>
+#endif
+
+#ifdef COMPILE_ON_WINDOWS
+#include <windows.h>
+
+typedef enum QueryInfo
+{
+ Os_Release,
+ Os_Version,
+ Os_Type
+};
+typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO);
+typedef BOOL (WINAPI *PGETPRODUCTINFO)(DWORD,DWORD,DWORD,DWORD,PDWORD);
+
+#define SM_SERVERR2 89
+#define BUFSIZE 1024
+
+//Vista :/
+
+#define PRODUCT_BUSINESS 0x00000006
+#define PRODUCT_BUSINESS_N 0x00000010
+#define PRODUCT_CLUSTER_SERVER 0x00000012
+#define PRODUCT_DATACENTER_SERVER 0x00000008
+#define PRODUCT_DATACENTER_SERVER_CORE 0x0000000C
+#define PRODUCT_ENTERPRISE 0x00000004
+#define PRODUCT_ENTERPRISE_SERVER 0x0000000A
+#define PRODUCT_ENTERPRISE_SERVER_CORE 0x0000000E
+#define PRODUCT_ENTERPRISE_SERVER_IA64 0x0000000F
+#define PRODUCT_HOME_BASIC 0x00000002
+#define PRODUCT_HOME_BASIC_N 0x00000005
+#define PRODUCT_HOME_PREMIUM 0x00000003
+#define PRODUCT_HOME_SERVER 0x00000013
+#define PRODUCT_SERVER_FOR_SMALLBUSINESS 0x00000018
+#define PRODUCT_SMALLBUSINESS_SERVER 0x00000009
+#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM 0x00000019
+#define PRODUCT_STANDARD_SERVER 0x00000007
+#define PRODUCT_STANDARD_SERVER_CORE 0x0000000D
+#define PRODUCT_STARTER 0x0000000B
+#define PRODUCT_STORAGE_ENTERPRISE_SERVER 0x00000017
+#define PRODUCT_STORAGE_EXPRESS_SERVER 0x00000014
+#define PRODUCT_STORAGE_STANDARD_SERVER 0x00000015
+#define PRODUCT_STORAGE_WORKGROUP_SERVER 0x00000016
+#define PRODUCT_UNDEFINED 0x00000000
+#define PRODUCT_ULTIMATE 0x00000001
+#define PRODUCT_WEB_SERVER 0x00000011
+
+static QString queryWinInfo( QueryInfo info)
+{
+ QString szVersion;
+ OSVERSIONINFOEX osvi;
+ SYSTEM_INFO si;
+ PGNSI pGNSI;
+ BOOL bOsVersionInfoEx;
+
+ ZeroMemory(&si, sizeof(SYSTEM_INFO));
+ ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
+
+ // Try calling GetVersionEx using the OSVERSIONINFOEX structure.
+ // If that fails, try using the OSVERSIONINFO structure.
+
+ osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
+
+ if( !(bOsVersionInfoEx = GetVersionEx ((OSVERSIONINFO *) &osvi)) )
+ {
+ osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
+ if (! GetVersionEx ( (OSVERSIONINFO *) &osvi) )
+ return FALSE;
+ }
+
+ // Call GetNativeSystemInfo if supported or GetSystemInfo otherwise.
+
+ pGNSI = (PGNSI) GetProcAddress(
+ GetModuleHandle(TEXT("kernel32.dll")),
+ "GetNativeSystemInfo");
+ if(NULL != pGNSI)
+ pGNSI(&si);
+ else GetSystemInfo(&si);
+
+ switch (osvi.dwPlatformId)
+ {
+ // Test for the Windows NT product family.
+
+ case VER_PLATFORM_WIN32_NT:
+
+ // Test for the specific product.
+
+ if ( osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 0 )
+ {
+ if( osvi.wProductType == VER_NT_WORKSTATION )
+ szVersion+= "Windows Vista ";
+ else szVersion+="Windows Server \"Longhorn\" ";
+ }
+
+ if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2 )
+ {
+ if( GetSystemMetrics(SM_SERVERR2) )
+ szVersion+="Windows Server 2003 \"R2\" ";
+ else if( osvi.wProductType == VER_NT_WORKSTATION &&
+ si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64)
+ {
+ szVersion+="Windows XP Professional x64 Edition ";
+ }
+ else szVersion+="Windows Server 2003, ";
+ }
+
+ if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1 )
+ szVersion+="Windows XP ";
+
+ if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0 )
+ szVersion+="Windows 2000 ";
+
+ if ( osvi.dwMajorVersion <= 4 )
+ szVersion+="Windows NT ";
+
+ PGETPRODUCTINFO pGetProductInfo;
+ pGetProductInfo = (PGETPRODUCTINFO) GetProcAddress(
+ GetModuleHandle(TEXT("kernel32.dll")), "GetProductInfo");
+ // Test for specific product on Windows NT 4.0 SP6 and later.
+ if( bOsVersionInfoEx )
+ {
+ DWORD dwPlatformInfo;
+ if(NULL != pGetProductInfo)
+ if(pGetProductInfo(osvi.dwMajorVersion,osvi.dwMinorVersion,
+ osvi.wServicePackMajor,osvi.wServicePackMinor,&dwPlatformInfo))
+ {
+ switch(dwPlatformInfo)
+ {
+ case PRODUCT_BUSINESS:
+ szVersion+="Business Edition";
+ break;
+ case PRODUCT_BUSINESS_N:
+ szVersion+="Business N Edition";
+ break;
+ case PRODUCT_CLUSTER_SERVER:
+ szVersion+="Cluster Server Edition";
+ break;
+ case PRODUCT_DATACENTER_SERVER:
+ szVersion+="Server Datacenter Edition (full installation)";
+ break;
+ case PRODUCT_DATACENTER_SERVER_CORE:
+ szVersion+="Server Datacenter Edition (core installation)";
+ break;
+ case PRODUCT_ENTERPRISE:
+ szVersion+="Enterprise Edition";
+ break;
+ case PRODUCT_ENTERPRISE_SERVER:
+ szVersion+="Server Enterprise Edition (full installation)";
+ break;
+ case PRODUCT_ENTERPRISE_SERVER_CORE:
+ szVersion+="Server Enterprise Edition (core installation)";
+ break;
+ case PRODUCT_ENTERPRISE_SERVER_IA64:
+ szVersion+="Server Enterprise Edition for Itanium-based Systems";
+ break;
+ case PRODUCT_HOME_BASIC:
+ szVersion+="Home Basic Edition";
+ break;
+ case PRODUCT_HOME_BASIC_N:
+ szVersion+="Home Basic N Edition";
+ break;
+ case PRODUCT_HOME_PREMIUM:
+ szVersion+="Home Premium Edition";
+ break;
+ case PRODUCT_HOME_SERVER:
+ szVersion+="Home Server Edition";
+ break;
+ case PRODUCT_SERVER_FOR_SMALLBUSINESS:
+ szVersion+="Server for Small Business Edition";
+ break;
+ case PRODUCT_SMALLBUSINESS_SERVER:
+ szVersion+="Small Business Server";
+ break;
+ case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM:
+ szVersion+="Small Business Server Premium Edition";
+ break;
+ case PRODUCT_STANDARD_SERVER:
+ szVersion+="Server Standard Edition (full installation)";
+ break;
+ case PRODUCT_STANDARD_SERVER_CORE:
+ szVersion+="Server Standard Edition (core installation)";
+ break;
+ case PRODUCT_STARTER:
+ szVersion+="Starter Edition";
+ break;
+ case PRODUCT_STORAGE_ENTERPRISE_SERVER:
+ szVersion+="Storage Server Enterprise Edition";
+ break;
+ case PRODUCT_STORAGE_EXPRESS_SERVER:
+ szVersion+="Storage Server Express Edition";
+ break;
+ case PRODUCT_STORAGE_STANDARD_SERVER:
+ szVersion+="Storage Server Standard Edition";
+ break;
+ case PRODUCT_STORAGE_WORKGROUP_SERVER:
+ szVersion+="Storage Server Workgroup Edition";
+ break;
+ case PRODUCT_UNDEFINED:
+ szVersion+="An unknown product";
+ break;
+ case PRODUCT_ULTIMATE:
+ szVersion+="Ultimate Edition";
+ break;
+ case PRODUCT_WEB_SERVER:
+ szVersion+="Web Server Edition";
+ break;
+
+ }
+ szVersion+=" ";
+ if (si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64)
+ {
+ szVersion+="(x64) ";
+ }
+ } else {
+ // Test for the workstation type.
+ if ( osvi.wProductType == VER_NT_WORKSTATION &&
+ si.wProcessorArchitecture!=PROCESSOR_ARCHITECTURE_AMD64)
+ {
+ if( osvi.dwMajorVersion == 4 )
+ szVersion+= "Workstation 4.0 " ;
+ else if( osvi.wSuiteMask & VER_SUITE_PERSONAL )
+ szVersion+= "Home Edition " ;
+ else szVersion+= "Professional " ;
+ }
+
+ // Test for the server type.
+ else if ( osvi.wProductType == VER_NT_SERVER ||
+ osvi.wProductType == VER_NT_DOMAIN_CONTROLLER )
+ {
+ if(osvi.dwMajorVersion==5 && osvi.dwMinorVersion==2)
+ {
+ if ( si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_IA64 )
+ {
+ if( osvi.wSuiteMask & VER_SUITE_DATACENTER )
+ szVersion+= "Datacenter Edition for Itanium-based Systems" ;
+ else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
+ szVersion+= "Enterprise Edition for Itanium-based Systems" ;
+ }
+
+ else if ( si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64 )
+ {
+ if( osvi.wSuiteMask & VER_SUITE_DATACENTER )
+ szVersion+= "Datacenter x64 Edition " ;
+ else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
+ szVersion+= "Enterprise x64 Edition " ;
+ else szVersion+= "Standard x64 Edition " ;
+ }
+
+ else
+ {
+ if( osvi.wSuiteMask & VER_SUITE_DATACENTER )
+ szVersion+= "Datacenter Edition " ;
+ else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
+ szVersion+= "Enterprise Edition " ;
+ else if ( osvi.wSuiteMask == VER_SUITE_BLADE )
+ szVersion+= "Web Edition " ;
+ else szVersion+= "Standard Edition " ;
+ }
+ }
+ else if(osvi.dwMajorVersion==5 && osvi.dwMinorVersion==0)
+ {
+ if( osvi.wSuiteMask & VER_SUITE_DATACENTER )
+ szVersion+= "Datacenter Server " ;
+ else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
+ szVersion+= "Advanced Server " ;
+ else szVersion+= "Server " ;
+ }
+ else // Windows NT 4.0
+ {
+ if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
+ szVersion+="Server 4.0, Enterprise Edition " ;
+ else szVersion+= "Server 4.0 " ;
+ }
+ }
+ }
+ }
+ // Test for specific product on Windows NT 4.0 SP5 and earlier
+ else
+ {
+ HKEY hKey;
+ TCHAR szProductType[BUFSIZE];
+ DWORD dwBufLen=BUFSIZE*sizeof(TCHAR);
+ LONG lRet;
+
+ lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
+ TEXT("SYSTEM\\CurrentControlSet\\Control\\ProductOptions"),
+ 0, KEY_QUERY_VALUE, &hKey );
+ if( lRet != ERROR_SUCCESS )
+ return FALSE;
+
+ lRet = RegQueryValueEx( hKey, TEXT("ProductType"), NULL, NULL,
+ (LPBYTE) szProductType, &dwBufLen);
+ RegCloseKey( hKey );
+
+ if( (lRet != ERROR_SUCCESS) || (dwBufLen > BUFSIZE*sizeof(TCHAR)) )
+ return FALSE;
+
+ if ( lstrcmpi( TEXT("WINNT"), szProductType) == 0 )
+ szVersion+= "Workstation " ;
+ if ( lstrcmpi( TEXT("LANMANNT"), szProductType) == 0 )
+ szVersion+= "Server " ;
+ if ( lstrcmpi( TEXT("SERVERNT"), szProductType) == 0 )
+ szVersion+= "Advanced Server " ;
+ }
+
+
+ // Display service pack (if any) and build number.
+
+ if( osvi.dwMajorVersion == 4 &&
+ lstrcmpi( osvi.szCSDVersion, TEXT("Service Pack 6") ) == 0 )
+ {
+ HKEY hKey;
+ LONG lRet;
+
+ // Test for SP6 versus SP6a.
+ lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
+ TEXT("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Hotfix\\Q246009"),
+ 0, KEY_QUERY_VALUE, &hKey );
+ if( lRet == ERROR_SUCCESS )
+ szVersion+= QString("Service Pack 6a (Build %1)").arg( osvi.dwBuildNumber & 0xFFFF );
+ else // Windows NT 4.0 prior to SP6a
+ {
+ szVersion+= QString( "%1 (Build %2)").arg( osvi.szCSDVersion).arg( osvi.dwBuildNumber & 0xFFFF);
+ }
+
+ RegCloseKey( hKey );
+ }
+ else // not Windows NT 4.0
+ {
+ szVersion+= QString( "%1 (Build %2)").arg( osvi.szCSDVersion).arg( osvi.dwBuildNumber & 0xFFFF);
+ }
+
+ break;
+
+ // Test for the Windows Me/98/95.
+ case VER_PLATFORM_WIN32_WINDOWS:
+
+ if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 0)
+ {
+ szVersion+="Windows 95 ";
+ if (osvi.szCSDVersion[1]=='C' || osvi.szCSDVersion[1]=='B')
+ szVersion+="OSR2 ";
+ }
+
+ if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 10)
+ {
+ szVersion+="Windows 98 ";
+ if ( osvi.szCSDVersion[1]=='A' || osvi.szCSDVersion[1]=='B')
+ szVersion+="SE ";
+ }
+
+ if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 90)
+ {
+ szVersion+="Windows Millennium Edition";
+ }
+ break;
+
+ case VER_PLATFORM_WIN32s:
+
+ szVersion+="Win32s";
+ break;
+ }
+ if(info==Os_Release)
+ {
+ unsigned long major = osvi.dwMajorVersion;
+ unsigned long minor = osvi.dwMinorVersion;
+ unsigned long release = osvi.dwBuildNumber;
+ QString szMajor, szMinor, szRelease, szVersion;
+ szMajor.setNum(major);
+ szMinor.setNum(minor);
+ szRelease.setNum(release);
+ szVersion = "Release : "+szMajor +"."+ szMinor +"."+ szRelease;
+ return szVersion;
+ }
+ if(info==Os_Type)
+ {
+ if(osvi.dwPlatformId == VER_PLATFORM_WIN32_NT) return " NT ";
+ if(osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) return " Windows ";
+ if(osvi.dwPlatformId == VER_PLATFORM_WIN32s) return " Win32s ";
+ return __tr2qs("Unknown ");
+ }
+ if(info==Os_Version)
+ {
+ return szVersion;
+ }
+
+ return "what's wrong? o.O";
+}
+#endif
+
+
+namespace KviOsInfo
+{
+ QString type()
+ {
+#ifdef COMPILE_ON_WINDOWS
+ return queryWinInfo(Os_Type);
+#else
+ #ifdef Q_OS_MACX
+ return "macosx";
+ #else
+ return "unix";
+ #endif
+#endif
+ }
+
+ QString name()
+ {
+#ifdef COMPILE_ON_WINDOWS
+ return "windows";
+#else
+ struct utsname uts;
+ if(uname(&uts) == 0)
+ return QString::fromLocal8Bit(uts.sysname);
+ return KviQString::empty;
+#endif
+ }
+
+ QString version()
+ {
+#ifdef COMPILE_ON_WINDOWS
+ return queryWinInfo(Os_Version);
+#else
+ struct utsname uts;
+ if(uname(&uts) == 0)
+ return QString::fromLocal8Bit(uts.version);
+ return KviQString::empty;
+#endif
+ }
+
+ QString release()
+ {
+#ifdef COMPILE_ON_WINDOWS
+ return queryWinInfo(Os_Release);
+#else
+ struct utsname uts;
+ if(uname(&uts) == 0)
+ return QString::fromLocal8Bit(uts.release);
+ return KviQString::empty;
+#endif
+ }
+
+ QString machine()
+ {
+#ifdef COMPILE_ON_WINDOWS
+ QString mach = getenv("PROCESSOR_IDENTIFIER");
+ return mach.section(",",0,0);
+#else
+ struct utsname uts;
+ if(uname(&uts) == 0)
+ return QString::fromLocal8Bit(uts.machine);
+ return KviQString::empty;
+#endif
+ }
+
+ QString nodename()
+ {
+#ifdef COMPILE_ON_WINDOWS
+ return "windows";
+#else
+ struct utsname uts;
+ if(uname(&uts) == 0)
+ return QString::fromLocal8Bit(uts.nodename);
+ return KviQString::empty;
+#endif
+ }
+
+ QString hostname()
+ {
+ char hbuffer[1024];
+ if(gethostname(hbuffer,1024) == 0)
+ return QString::fromLocal8Bit(hbuffer);
+ else
+ return KviQString::empty;
+ }
+}
+
diff --git a/src/kvilib/ext/kvi_osinfo.h b/src/kvilib/ext/kvi_osinfo.h
new file mode 100644
index 00000000..9df4a990
--- /dev/null
+++ b/src/kvilib/ext/kvi_osinfo.h
@@ -0,0 +1,43 @@
+#ifndef _KVI_OSINFO_H_
+#define _KVI_OSINFO_H_
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// File : kvi_osinfo.h
+// Creation date : 19 Jan 2006 GMT by Alexey Uzhva
+//
+// This toolbar is part of the KVirc irc client distribution
+// Copyright (C) 2006 Alexey Uzhva
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include "kvi_settings.h"
+
+#include <qstring.h>
+
+namespace KviOsInfo
+{
+ extern KVILIB_API QString type();
+ extern KVILIB_API QString name();
+ extern KVILIB_API QString version();
+ extern KVILIB_API QString release();
+ extern KVILIB_API QString machine();
+ extern KVILIB_API QString nodename();
+ extern KVILIB_API QString hostname();
+};
+
+#endif //!_KVI_OSINFO_H_
diff --git a/src/kvilib/ext/kvi_parameterlist.cpp b/src/kvilib/ext/kvi_parameterlist.cpp
new file mode 100644
index 00000000..318cd3d1
--- /dev/null
+++ b/src/kvilib/ext/kvi_parameterlist.cpp
@@ -0,0 +1,254 @@
+//
+// File : kvi_parameterlist.cpp
+// Creation date : Tue Sep 12 2000 18:14:01 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#define __KVILIB__
+
+
+#include "kvi_parameterlist.h"
+
+KviParameterList::KviParameterList()
+: KviPointerList<KviStr>()
+{
+ setAutoDelete(true);
+}
+
+KviParameterList::KviParameterList(KviStr *p1)
+: KviPointerList<KviStr>()
+{
+ setAutoDelete(true);
+ append(p1);
+}
+
+KviParameterList::KviParameterList(KviStr *p1,KviStr *p2)
+: KviPointerList<KviStr>()
+{
+ setAutoDelete(true);
+ append(p1);
+ append(p2);
+}
+
+KviParameterList::KviParameterList(KviStr *p1,KviStr *p2,KviStr *p3)
+: KviPointerList<KviStr>()
+{
+ setAutoDelete(true);
+ append(p1);
+ append(p2);
+ append(p3);
+}
+
+KviParameterList::KviParameterList(KviStr *p1,KviStr *p2,KviStr *p3,KviStr *p4)
+: KviPointerList<KviStr>()
+{
+ setAutoDelete(true);
+ append(p1);
+ append(p2);
+ append(p3);
+ append(p4);
+}
+
+KviParameterList::KviParameterList(KviStr *p1,KviStr *p2,KviStr *p3,KviStr *p4,KviStr *p5)
+: KviPointerList<KviStr>()
+{
+ setAutoDelete(true);
+ append(p1);
+ append(p2);
+ append(p3);
+ append(p4);
+ append(p5);
+}
+
+KviParameterList::KviParameterList(KviStr *p1,KviStr *p2,KviStr *p3,KviStr *p4,KviStr *p5,KviStr *p6)
+: KviPointerList<KviStr>()
+{
+ setAutoDelete(true);
+ append(p1);
+ append(p2);
+ append(p3);
+ append(p4);
+ append(p5);
+ append(p6);
+}
+
+
+KviParameterList::KviParameterList(KviStr *p1,KviStr *p2,KviStr *p3,KviStr *p4,KviStr *p5,KviStr *p6,KviStr *p7)
+: KviPointerList<KviStr>()
+{
+ setAutoDelete(true);
+ append(p1);
+ append(p2);
+ append(p3);
+ append(p4);
+ append(p5);
+ append(p6);
+ append(p7);
+}
+
+KviParameterList::KviParameterList(const char *paramBuffer)
+: KviPointerList<KviStr>()
+{
+ setAutoDelete(true);
+ while(*paramBuffer)
+ {
+ KviStr * pStr = new KviStr();
+ paramBuffer = kvi_extractToken(*pStr,paramBuffer);
+ append(pStr);
+ }
+}
+
+KviParameterList::~KviParameterList()
+{
+}
+
+KviStr * KviParameterList::safeFirst()
+{
+ KviStr * f= first();
+ return f ? f : &m_szEmpty;
+}
+
+KviStr * KviParameterList::safeNext()
+{
+ KviStr * f = next();
+ return f ? f : &m_szEmpty;
+}
+
+
+bool KviParameterList::getBool()
+{
+ KviStr * par = current();
+ (void)next();
+ if(par)
+ {
+ if(kvi_strEqualCS(par->ptr(),"0"))return false;
+ }
+ return true; // default
+}
+
+int KviParameterList::getInt(bool * bOk)
+{
+ KviStr * par = current();
+ (void)next();
+ if(par)
+ {
+ return par->toInt(bOk);
+ }
+ if(bOk)*bOk = false;
+ return 0;
+}
+
+unsigned int KviParameterList::getUInt(bool * bOk)
+{
+ KviStr * par = current();
+ (void)next();
+ if(par)
+ {
+ return par->toUInt(bOk);
+ }
+ if(bOk)*bOk = false;
+ return 0;
+}
+
+QRect KviParameterList::getRect(bool * bOk)
+{
+ int val[4];
+ for(int i=0;i<4;i++)
+ {
+ KviStr * pszv = current();
+ (void)next();
+ if(!pszv)
+ {
+ if(bOk)*bOk = false;
+ return QRect(); // invalid
+ }
+ bool mybOk;
+ val[i] = pszv->toInt(&mybOk);
+ if(!mybOk)
+ {
+ if(bOk)*bOk = false;
+ return QRect(); // invalid
+ }
+ }
+ if(bOk)*bOk = true;
+ return QRect(val[0],val[1],val[2],val[3]);
+}
+
+QPoint KviParameterList::getPoint(bool * bOk)
+{
+ int val[2];
+ for(int i=0;i<2;i++)
+ {
+ KviStr * pszv = current();
+ (void)next();
+ if(!pszv)
+ {
+ if(bOk)*bOk = false;
+ return QPoint(); // invalid
+ }
+ bool mybOk;
+ val[i] = pszv->toInt(&mybOk);
+ if(!mybOk)
+ {
+ if(bOk)*bOk = false;
+ return QPoint(); // invalid
+ }
+ }
+ if(bOk)*bOk = true;
+ return QPoint(val[0],val[1]);
+}
+
+QSize KviParameterList::getSize(bool * bOk)
+{
+ int val[2];
+ for(int i=0;i<2;i++)
+ {
+ KviStr * pszv = current();
+ (void)next();
+ if(!pszv)
+ {
+ if(bOk)*bOk = false;
+ return QSize(); // invalid
+ }
+ bool mybOk;
+ val[i] = pszv->toInt(&mybOk);
+ if(!mybOk)
+ {
+ if(bOk)*bOk = false;
+ return QSize(); // invalid
+ }
+ }
+ if(bOk)*bOk = true;
+ return QSize(val[0],val[1]);
+}
+
+//#ifdef COMPILE_ON_WINDOWS
+//
+// #include "kvi_malloc.h"
+//
+// void * KviParameterList::operator new(size_t tSize)
+// {
+// return kvi_malloc(tSize);
+// }
+//
+// void KviParameterList::operator delete(void * p)
+// {
+// kvi_free(p);
+// }
+//#endif
diff --git a/src/kvilib/ext/kvi_parameterlist.h b/src/kvilib/ext/kvi_parameterlist.h
new file mode 100644
index 00000000..51c573e0
--- /dev/null
+++ b/src/kvilib/ext/kvi_parameterlist.h
@@ -0,0 +1,72 @@
+#ifndef _KVI_PARAMETERLIST_H_
+#define _KVI_PARAMETERLIST_H_
+
+//
+// File : kvi_parameterlist.h
+// Creation date : Tue Sep 12 2000 18:00:01 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+#include "kvi_heapobject.h"
+#include "kvi_string.h"
+
+#include "kvi_pointerlist.h"
+#include <qrect.h>
+#include <qpoint.h>
+#include <qsize.h>
+
+class KVILIB_API KviParameterList : public KviPointerList<KviStr>, public KviHeapObject
+{
+public:
+ KviParameterList();
+ KviParameterList(KviStr *p1);
+ KviParameterList(KviStr *p1,KviStr *p2);
+ KviParameterList(KviStr *p1,KviStr *p2,KviStr *p3);
+ KviParameterList(KviStr *p1,KviStr *p2,KviStr *p3,KviStr *p4);
+ KviParameterList(KviStr *p1,KviStr *p2,KviStr *p3,KviStr *p4,KviStr *p5);
+ KviParameterList(KviStr *p1,KviStr *p2,KviStr *p3,KviStr *p4,KviStr *p5,KviStr *p6);
+ KviParameterList(KviStr *p1,KviStr *p2,KviStr *p3,KviStr *p4,KviStr *p5,KviStr *p6,KviStr *p7);
+ KviParameterList(const char * paramBuffer);
+ virtual ~KviParameterList();
+private:
+ KviStr m_szEmpty;
+public:
+ void init(){ (void)first(); };
+ // These functions have to be called when the
+ // current() points to the FIRST item that has
+ // to be interpreted as Bool,Int,UInt,Rect etc...
+ // At the call exit the current() points
+ // to the first item that was NOT used by the call
+ bool getBool();
+ int getInt(bool * bOk = 0);
+ unsigned int getUInt(bool * bOk = 0);
+ QRect getRect(bool * bOk = 0);
+ QPoint getPoint(bool * bOk = 0);
+ QSize getSize(bool * bOk = 0);
+ KviStr * safeFirst();
+ KviStr * safeNext();
+ const char * safeFirstParam(){ return safeFirst()->ptr(); };
+ const char * safeNextParam(){ return safeNext()->ptr(); };
+
+};
+
+
+
+#endif //_KVI_PARAMETERLIST_H_
diff --git a/src/kvilib/ext/kvi_pixmap.cpp b/src/kvilib/ext/kvi_pixmap.cpp
new file mode 100644
index 00000000..f22b03ef
--- /dev/null
+++ b/src/kvilib/ext/kvi_pixmap.cpp
@@ -0,0 +1,180 @@
+//=============================================================================
+//
+// File : kvi_pixmap.cpp
+// Creation date : Sat Jun 24 2000 14:00:27 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#define __KVILIB__
+
+
+#include "kvi_debug.h"
+#include "kvi_pixmap.h"
+#include "kvi_qstring.h"
+
+#include <qpainter.h>
+
+KviPixmap::KviPixmap()
+{
+ m_pPix = 0;
+}
+
+KviPixmap::KviPixmap(const char * path)
+{
+ m_pPix = 0;
+ load(path);
+}
+
+KviPixmap::KviPixmap(const KviPixmap &pix)
+{
+ m_pPix = 0;
+ m_szPath = pix.path();
+
+ if(!m_szPath.isEmpty())
+ {
+ if(pix.pixmap())
+ {
+ m_pPix = new QPixmap(*(pix.pixmap()));
+ }
+ }
+}
+
+KviPixmap::~KviPixmap()
+{
+ if(m_pPix)delete m_pPix;
+ m_pPix = 0; // just to be sure :)
+}
+
+bool KviPixmap::load(const char * path)
+{
+ if(m_pPix)delete m_pPix;
+ m_pPix = 0;
+ m_szPath = path;
+ if(m_szPath.isEmpty())return false;
+
+ m_pPix = new QPixmap(m_szPath);
+
+ if(m_pPix->isNull())
+ {
+ delete m_pPix;
+ m_pPix = 0;
+ m_szPath = "";
+ return false;
+ }
+ return true;
+}
+
+bool KviPixmap::load(const QString& path)
+{
+ if(m_pPix)delete m_pPix;
+ m_pPix = 0;
+ m_szPath = path;
+ if(m_szPath.isEmpty())return false;
+
+ m_pPix = new QPixmap(m_szPath);
+
+ if(m_pPix->isNull())
+ {
+ delete m_pPix;
+ m_pPix = 0;
+ m_szPath = "";
+ return false;
+ }
+ return true;
+}
+
+void KviPixmap::set(const QPixmap &pix,const QString &szPath)
+{
+ if(pix.isNull())
+ {
+ setNull();
+ return;
+ }
+
+ if(m_pPix)delete m_pPix;
+ m_pPix = new QPixmap(pix);
+ m_szPath = szPath;
+}
+
+
+void KviPixmap::setNull()
+{
+ if(m_pPix)delete m_pPix;
+ m_pPix = 0;
+ m_szPath = "";
+}
+
+KviPixmap & KviPixmap::operator=(const KviPixmap &pix)
+{
+ if(m_pPix == pix.m_pPix)return (*this); // self assignment (!!!)
+ if(KviQString::equalCI(m_szPath,pix.path()))return (*this); // same pix
+
+ if(m_pPix)delete m_pPix;
+ m_pPix = 0;
+ m_szPath = pix.path();
+
+ if(!m_szPath.isEmpty())
+ {
+ if(pix.pixmap())
+ {
+ m_pPix = new QPixmap(*(pix.pixmap()));
+ }
+ }
+ return (*this);
+}
+
+
+void KviPixmapUtils::drawPixmapWithPainter(QPainter* p,QPixmap * pix,int flags,const QRect& paintRect,int iWidgetWidth,int iWidgetHeight,int dx,int dy)
+{
+ if(!pix)return;
+ if(!flags)
+ {
+ p->drawTiledPixmap(paintRect.left(),paintRect.top(),paintRect.width(),paintRect.height(),*pix,dx,dy);
+ return;
+ }
+
+ int iPixWidth=pix->width();
+ int iPixHeight=pix->height();
+ int x=0;
+ int y=0;
+
+ if( !(flags & Qt::AlignHorizontal_Mask ))
+ x=-1;
+ else if ( flags & Qt::AlignRight )
+ x=iWidgetWidth - iPixWidth;
+ else if( flags & Qt::AlignHCenter )
+ x=(iWidgetWidth - iPixWidth)/2;
+
+ if( !(flags & Qt::AlignVertical_Mask ))
+ y=-1;
+ else if ( flags & Qt::AlignBottom )
+ y=iWidgetHeight - iPixHeight;
+ else if( flags & Qt::AlignVCenter )
+ y=(iWidgetHeight - iPixHeight)/2;
+
+ if(x==-1) {
+ p->drawTiledPixmap(paintRect.left(),y,paintRect.width(),iPixHeight,*pix,dx,dy);
+ } else if(y==-1) {
+ p->drawTiledPixmap(x,paintRect.top(),iPixWidth,paintRect.height(),*pix,dx,dy);
+ } else {
+ p->drawPixmap(x,y,*pix);
+ }
+}
diff --git a/src/kvilib/ext/kvi_pixmap.h b/src/kvilib/ext/kvi_pixmap.h
new file mode 100644
index 00000000..7ba91cec
--- /dev/null
+++ b/src/kvilib/ext/kvi_pixmap.h
@@ -0,0 +1,61 @@
+#ifndef _KVI_PIXMAP_H_
+#define _KVI_PIXMAP_H_
+
+//=============================================================================
+//
+// File : kvi_pixmap.h
+// Creation date : Sat Jun 24 2000 13:59:04 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "kvi_settings.h"
+#include "kvi_string.h"
+#include <qpixmap.h>
+
+class KVILIB_API KviPixmap
+{
+public:
+ KviPixmap();
+ KviPixmap(const char * path);
+ KviPixmap(const KviPixmap &pix);
+ ~KviPixmap();
+private:
+ QPixmap * m_pPix;
+ QString m_szPath;
+public:
+ bool isNull(){ return m_pPix == 0; };
+ bool load(const char * path);
+ bool load(const QString& path);
+ const QString& path() const { return m_szPath; };
+ QPixmap * pixmap() const { return m_pPix; };
+ void set(const QPixmap &pix,const QString &szPath);
+ KviPixmap & operator=(const KviPixmap &pix); // deep copy
+ void setNull();
+};
+
+namespace KviPixmapUtils
+{
+ extern KVILIB_API void drawPixmapWithPainter(QPainter* p,QPixmap * pix,int flags,const QRect& paintRect,int iWidgetWidth,int iWidgetHeight,int dx,int dy);
+ inline void drawPixmapWithPainter(QPainter* p,QPixmap * pix,int flags,const QRect& paintRect,int iWidgetWidth,int iWidgetHeight)
+ { KviPixmapUtils::drawPixmapWithPainter(p,pix,flags,paintRect,iWidgetWidth,iWidgetHeight,paintRect.left(),paintRect.top()); };
+};
+
+#endif //_KVI_PIXMAP_H_
diff --git a/src/kvilib/ext/kvi_proxydb.cpp b/src/kvilib/ext/kvi_proxydb.cpp
new file mode 100644
index 00000000..917795c3
--- /dev/null
+++ b/src/kvilib/ext/kvi_proxydb.cpp
@@ -0,0 +1,192 @@
+//
+// File : kvi_proxydb.cpp
+// Creation date : Sat Jul 22 2000 18:23:23 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#define __KVILIB__
+
+
+#include "kvi_proxydb.h"
+#include "kvi_config.h"
+
+
+KviProxy::KviProxy()
+{
+ m_szHostname = "proxy.example.net";
+ m_uPort = 1080;
+ m_protocol = Socks4;
+ m_bIsIpV6 = false;
+}
+
+KviProxy::KviProxy(const KviProxy &prx)
+{
+ m_szHostname = prx.m_szHostname;
+ m_szIp = prx.m_szIp;
+ m_szUser = prx.m_szUser;
+ m_szPass = prx.m_szPass;
+ m_uPort = prx.m_uPort;
+ m_protocol = prx.m_protocol;
+ m_bIsIpV6 = prx.m_bIsIpV6;
+}
+
+KviProxy::~KviProxy()
+{
+}
+
+static const char * proxy_protocols_table[3]= { "SOCKSv4", "SOCKSv5", "HTTP" };
+
+const char * KviProxy::protocolName() const
+{
+ switch(m_protocol)
+ {
+ case Socks5: return proxy_protocols_table[1]; break;
+ case Http: return proxy_protocols_table[2]; break;
+ default: return proxy_protocols_table[0]; break;
+ }
+
+ return proxy_protocols_table[0];
+}
+
+void KviProxy::setNamedProtocol(const char * proto)
+{
+ if(kvi_strEqualCI(proto,"SOCKSv5"))m_protocol = KviProxy::Socks5;
+ else if(kvi_strEqualCI(proto,"HTTP"))m_protocol = KviProxy::Http;
+ else m_protocol = KviProxy::Socks4;
+}
+
+void KviProxy::getSupportedProtocolNames(QStringList & buf)
+{
+ for(int i=0;i<3;i++)buf.append(QString(proxy_protocols_table[i]));
+}
+
+void KviProxy::normalizeUserAndPass()
+{
+ m_szUser.stripWhiteSpace();
+ m_szPass.stripWhiteSpace();
+}
+
+KviProxyDataBase::KviProxyDataBase()
+{
+ m_pProxyList = new KviPointerList<KviProxy>;
+ m_pProxyList->setAutoDelete(true);
+ m_pCurrentProxy = 0;
+}
+
+KviProxyDataBase::~KviProxyDataBase()
+{
+ delete m_pProxyList;
+}
+
+void KviProxyDataBase::updateProxyIp(const char * proxy,const char * ip)
+{
+ for(KviProxy * prx = m_pProxyList->first();prx;prx = m_pProxyList->next())
+ {
+ if(kvi_strEqualCI(proxy,prx->m_szHostname.ptr()))
+ {
+ prx->m_szIp = ip;
+ return;
+ }
+ }
+}
+
+void KviProxyDataBase::clear()
+{
+ delete m_pProxyList;
+ m_pProxyList = new KviPointerList<KviProxy>;
+ m_pProxyList->setAutoDelete(true);
+ m_pCurrentProxy = 0;
+}
+
+void KviProxyDataBase::load(const char * filename)
+{
+ clear();
+ KviConfig cfg(filename,KviConfig::Read);
+
+ unsigned int nEntries = cfg.readUIntEntry("Entries",0);
+
+ for(unsigned int i=0;i<nEntries;i++)
+ {
+ KviProxy * p = new KviProxy();
+ KviStr tmp(KviStr::Format,"%u_Hostname",i);
+ p->m_szHostname = cfg.readEntry(tmp.ptr(),"proxy.example.net");
+ tmp.sprintf("%u_Port",i);
+ p->m_uPort = cfg.readUIntEntry(tmp.ptr(),7000);
+ tmp.sprintf("%u_Ip",i);
+ p->m_szIp = cfg.readEntry(tmp.ptr(),"");
+ tmp.sprintf("%u_User",i);
+ p->m_szUser = cfg.readEntry(tmp.ptr(),"");
+ tmp.sprintf("%u_Pass",i);
+ p->m_szPass = cfg.readEntry(tmp.ptr(),"");
+
+ tmp.sprintf("%u_Protocol",i);
+ KviStr type = cfg.readEntry(tmp.ptr(),"SOCKSv4");
+ p->setNamedProtocol(type.ptr());
+
+ tmp.sprintf("%u_IsIpV6",i);
+ p->m_bIsIpV6 = cfg.readBoolEntry(tmp.ptr(),false);
+ tmp.sprintf("%u_Current",i);
+ if(cfg.readBoolEntry(tmp.ptr(),false))m_pCurrentProxy = p;
+ m_pProxyList->append(p);
+ }
+
+ if(!m_pCurrentProxy)m_pCurrentProxy = m_pProxyList->first();
+}
+
+void KviProxyDataBase::save(const char * filename)
+{
+ KviConfig cfg(filename,KviConfig::Write);
+
+ cfg.clear();
+
+ cfg.writeEntry("Entries",m_pProxyList->count());
+
+
+ int i=0;
+
+ for(KviProxy * p=m_pProxyList->first();p;p=m_pProxyList->next())
+ {
+ KviStr tmp(KviStr::Format,"%u_Hostname",i);
+ cfg.writeEntry(tmp.ptr(),p->m_szHostname.ptr());
+ tmp.sprintf("%u_Port",i);
+ cfg.writeEntry(tmp.ptr(),p->m_uPort);
+ tmp.sprintf("%u_Ip",i);
+ cfg.writeEntry(tmp.ptr(),p->m_szIp.ptr());
+ tmp.sprintf("%u_User",i);
+ cfg.writeEntry(tmp.ptr(),p->m_szUser.ptr());
+ tmp.sprintf("%u_Pass",i);
+ cfg.writeEntry(tmp.ptr(),p->m_szPass.ptr());
+
+ tmp.sprintf("%u_Protocol",i);
+ KviStr type;
+ switch(p->m_protocol)
+ {
+ case KviProxy::Socks5: type = "SOCKSv5"; break;
+ case KviProxy::Http: type = "HTTP"; break;
+ default: type = "SOCKSv4"; break;
+ }
+ cfg.writeEntry(tmp.ptr(),type.ptr());
+
+ tmp.sprintf("%u_IsIpV6",i);
+ cfg.writeEntry(tmp.ptr(),p->m_bIsIpV6);
+ tmp.sprintf("%u_Current",i);
+ if(m_pCurrentProxy == p)cfg.writeEntry(tmp.ptr(),true);
+ i++;
+ }
+}
diff --git a/src/kvilib/ext/kvi_proxydb.h b/src/kvilib/ext/kvi_proxydb.h
new file mode 100644
index 00000000..92fa2c44
--- /dev/null
+++ b/src/kvilib/ext/kvi_proxydb.h
@@ -0,0 +1,86 @@
+#ifndef _KVI_PROXYDB_H_
+#define _KVI_PROXYDB_H_
+
+//
+// File : kvi_proxydb.h
+// Creation date : Sat Jul 22 2000 18:19:01 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+
+#include "kvi_string.h"
+#include "kvi_inttypes.h"
+#include "kvi_pointerlist.h"
+#include <qstringlist.h>
+
+class KVILIB_API KviProxy
+{
+public:
+ enum Protocol { Socks4 , Socks5 , Http };
+ KviProxy();
+ KviProxy(const KviProxy &prx);
+ ~KviProxy();
+public:
+ KviStr m_szHostname;
+ KviStr m_szIp;
+ KviStr m_szPass;
+ KviStr m_szUser;
+ kvi_u32_t m_uPort;
+ Protocol m_protocol;
+ bool m_bIsIpV6;
+public:
+ bool isIpV6() const { return m_bIsIpV6; };
+ Protocol protocol() const { return m_protocol; };
+ const char * protocolName() const;
+ void setNamedProtocol(const char * proto);
+ kvi_u32_t port() const { return m_uPort; };
+ const char * user() const { return m_szUser.ptr(); };
+ const char * pass() const { return m_szPass.ptr(); };
+ const char * ip() const { return m_szIp.ptr(); };
+ const char * hostname() const { return m_szHostname.ptr(); };
+ void normalizeUserAndPass();
+ bool hasPass() const { return m_szPass.hasData(); };
+ bool hasUser() const { return m_szUser.hasData(); };
+ unsigned int passLen() const { return (unsigned int)m_szPass.len(); };
+ unsigned int userLen() const { return (unsigned int)m_szUser.len(); };
+ static void getSupportedProtocolNames(QStringList & buf);
+};
+
+
+class KVILIB_API KviProxyDataBase
+{
+public:
+ KviProxyDataBase();
+ ~KviProxyDataBase();
+private:
+ KviPointerList<KviProxy> * m_pProxyList;
+ KviProxy * m_pCurrentProxy;
+public:
+ void clear();
+ KviPointerList<KviProxy> * proxyList(){ return m_pProxyList; };
+ KviProxy * currentProxy(){ return m_pCurrentProxy; };
+ void updateProxyIp(const char * proxy,const char * ip);
+ void setCurrentProxy(KviProxy * prx){ m_pCurrentProxy = prx; };
+ void insertProxy(KviProxy * prx){ m_pProxyList->append(prx); };
+ void load(const char * filename);
+ void save(const char * filename);
+};
+
+#endif //_KVI_PROXYDB_H_
diff --git a/src/kvilib/ext/kvi_regchan.cpp b/src/kvilib/ext/kvi_regchan.cpp
new file mode 100644
index 00000000..a26c5969
--- /dev/null
+++ b/src/kvilib/ext/kvi_regchan.cpp
@@ -0,0 +1,181 @@
+//=============================================================================
+//
+// File : kvi_regchan.cpp
+// Creation date : Sat Jun 29 01:01:16 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+#include "kvi_regchan.h"
+#include "kvi_config.h"
+#include "kvi_qstring.h"
+
+KviRegisteredChannel::KviRegisteredChannel(const KviStr &name,const KviStr &netmask)
+{
+ m_szName = name;
+ m_szNetMask = netmask;
+ m_pPropertyDict = new KviPointerHashTable<const char *,KviStr>(7,false,true);
+ m_pPropertyDict->setAutoDelete(true);
+}
+
+KviRegisteredChannel::~KviRegisteredChannel()
+{
+ delete m_pPropertyDict;
+}
+
+
+
+KviRegisteredChannelDataBase::KviRegisteredChannelDataBase()
+{
+ m_pChannelDict = new KviPointerHashTable<const char *,KviRegisteredChannelList>(17,false,true);
+ m_pChannelDict->setAutoDelete(true);
+}
+
+KviRegisteredChannelDataBase::~KviRegisteredChannelDataBase()
+{
+ delete m_pChannelDict;
+}
+
+void KviRegisteredChannelDataBase::load(const char * filename)
+{
+ KviConfig cfg(filename,KviConfig::Read);
+ m_pChannelDict->clear();
+ KviConfigIterator it(*(cfg.dict()));
+ while(KviConfigGroup * d = it.current())
+ {
+ KviStr szMask = it.currentKey();
+ KviStr szChan = szMask.leftToLast('@');
+ szMask.cutToLast('@');
+ KviRegisteredChannel * c = new KviRegisteredChannel(szChan,szMask);
+ add(c);
+ KviConfigGroupIterator sit(*d);
+ while(QString * s = sit.current())
+ {
+ c->setProperty(KviQString::toUtf8(sit.currentKey()).data(),new KviStr(*s));
+ ++sit;
+ }
+ ++it;
+ }
+}
+
+void KviRegisteredChannelDataBase::save(const char * filename)
+{
+ KviConfig cfg(filename,KviConfig::Write);
+ cfg.clear();
+
+ KviPointerHashTableIterator<const char *,KviRegisteredChannelList> it(*m_pChannelDict);
+ while(KviRegisteredChannelList * l = it.current())
+ {
+ for(KviRegisteredChannel * c = l->first();c;c = l->next())
+ {
+ KviStr szGrp(KviStr::Format,"%s@%s",c->name().ptr(),c->netMask().ptr());
+ cfg.setGroup(szGrp.ptr());
+ KviPointerHashTableIterator<const char *,KviStr> pit(*(c->propertyDict()));
+ while(KviStr * s = pit.current())
+ {
+ cfg.writeEntry(pit.currentKey(),s->ptr());
+ ++pit;
+ }
+ }
+ ++it;
+ }
+}
+
+KviRegisteredChannel * KviRegisteredChannelDataBase::find(const char * name,const char * net)
+{
+ KviRegisteredChannelList * l = m_pChannelDict->find(name);
+ if(!l)return 0;
+ for(KviRegisteredChannel * c = l->first();c;c = l->next())
+ {
+ if(kvi_matchString(c->netMask().ptr(),net))return c;
+ }
+
+ return 0;
+}
+
+KviRegisteredChannel * KviRegisteredChannelDataBase::findExact(const char * name,const char * netmask)
+{
+ KviRegisteredChannelList * l = m_pChannelDict->find(name);
+ if(!l)return 0;
+ for(KviRegisteredChannel * c = l->first();c;c = l->next())
+ {
+ if(kvi_strEqualCI(c->netMask().ptr(),netmask))return c;
+ }
+ return 0;
+}
+
+void KviRegisteredChannelDataBase::remove(KviRegisteredChannel * c)
+{
+ KviRegisteredChannelList * l = m_pChannelDict->find(c->name().ptr());
+ if(!l)return;
+ for(KviRegisteredChannel * ch = l->first();ch;ch = l->next())
+ {
+ if(ch == c)
+ {
+ if(l->count() <= 1)
+ {
+ m_pChannelDict->remove(c->name().ptr());
+ } else {
+ l->removeRef(c);
+ }
+ return;
+ }
+ }
+}
+
+
+void KviRegisteredChannelDataBase::add(KviRegisteredChannel * c)
+{
+ KviRegisteredChannel * old = findExact(c->name().ptr(),c->netMask().ptr());
+ if(old)
+ {
+ KviPointerHashTableIterator<const char *,KviStr> pit(*(old->propertyDict()));
+ while(KviStr *s = pit.current())
+ {
+ if(!c->property(pit.currentKey()))
+ c->setProperty(pit.currentKey(),new KviStr(*s));
+ ++pit;
+ }
+ remove(old);
+ }
+ KviRegisteredChannelList * l = m_pChannelDict->find(c->name().ptr());
+ if(!l)
+ {
+ l = new KviRegisteredChannelList;
+ l->setAutoDelete(true);
+ m_pChannelDict->insert(c->name().ptr(),l);
+ }
+ // insert where there are less wildcards
+ int o = c->netMask().occurences('*');
+ int idx = 0;
+ for(KviRegisteredChannel * rc = l->first();rc;rc = l->next())
+ {
+ if(rc->netMask().occurences('*') > o)
+ {
+ // the existing has more wildcards , insert here!
+ l->insert(idx,c);
+ return;
+ }
+ idx++;
+ }
+ l->append(c);
+}
+
diff --git a/src/kvilib/ext/kvi_regchan.h b/src/kvilib/ext/kvi_regchan.h
new file mode 100644
index 00000000..f447c313
--- /dev/null
+++ b/src/kvilib/ext/kvi_regchan.h
@@ -0,0 +1,74 @@
+#ifndef _KVI_REGCHAN_H_
+#define _KVI_REGCHAN_H_
+//=============================================================================
+//
+// File : kvi_regchan.h
+// Creation date : Sat Jun 29 01:01:15 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_heapobject.h"
+#include "kvi_string.h"
+#include "kvi_pointerlist.h"
+
+#include "kvi_pointerhashtable.h"
+
+class KVILIB_API KviRegisteredChannel : public KviHeapObject
+{
+ friend class KviRegisteredChannelDataBase;
+public:
+ KviRegisteredChannel(const KviStr &name,const KviStr &netmask);
+ ~KviRegisteredChannel();
+protected:
+ KviStr m_szName;
+ KviStr m_szNetMask;
+ KviPointerHashTable<const char *,KviStr> * m_pPropertyDict;
+public:
+ KviPointerHashTable<const char *,KviStr> * propertyDict(){ return m_pPropertyDict; };
+ const KviStr & name(){ return m_szName; };
+ const KviStr & netMask(){ return m_szNetMask; };
+ KviStr * property(const char * name){ return m_pPropertyDict->find(name); };
+ // val must be allocated with NEW!
+ void setProperty(const char * name,KviStr * val){ m_pPropertyDict->replace(name,val); };
+ void removeProperty(const char * name){ m_pPropertyDict->remove(name); };
+};
+
+typedef KVILIB_API KviPointerList<KviRegisteredChannel> KviRegisteredChannelList;
+
+class KVILIB_API KviRegisteredChannelDataBase
+{
+public:
+ KviRegisteredChannelDataBase();
+ ~KviRegisteredChannelDataBase();
+protected:
+ KviPointerHashTable<const char *,KviRegisteredChannelList> * m_pChannelDict;
+public:
+ KviPointerHashTable<const char *,KviRegisteredChannelList> * channelDict(){ return m_pChannelDict; };
+ KviRegisteredChannel * find(const char * name,const char * net);
+ KviRegisteredChannel * findExact(const char * name,const char * netmask);
+ void remove(KviRegisteredChannel * c);
+ void add(KviRegisteredChannel * c);
+ void load(const char * filename);
+ void save(const char * filename);
+};
+
+
+#endif //_KVI_REGCHAN_H_
diff --git a/src/kvilib/ext/kvi_regusersdb.cpp b/src/kvilib/ext/kvi_regusersdb.cpp
new file mode 100644
index 00000000..6d36c975
--- /dev/null
+++ b/src/kvilib/ext/kvi_regusersdb.cpp
@@ -0,0 +1,743 @@
+//=================================================================================================
+//
+// File : kvi_regusersdb.cpp
+// Creation date : Sat Sep 09 2000 15:46:12 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=================================================================================================
+
+
+#define __KVILIB__
+
+#include "kvi_debug.h"
+
+#define _KVI_REGUSERDB_CPP_
+#include "kvi_regusersdb.h"
+
+#include "kvi_config.h"
+#include "kvi_locale.h"
+
+/*
+ @doc: registered_users
+ @title:
+ Registered users
+ @type:
+ generic
+ @short:
+ Registration of users in KVIrc
+ @keyterms:
+ registered users, registration mask, registered user properties,
+ user properties, notify property, avatar property
+ @body:
+ [big]Introduction[/big][br]
+ The "registered user database" is basically a set of users with associated
+ [doc:irc_masks]irc-masks[/doc] and properties.[br]
+ It is used to recognize users on IRC and associate properties to them.[br]
+ This works more or less like the IRC ban list, K-Line list, or invite list.[br]
+ [big]User entry[/big][br]
+ A registered user database entry is identified by an [b]unique[/b] name.[br]
+ It may be the nickname of the user that you want to match, or the real name (if you know it)
+ or any other string (even with spaces). The name is an "internal identifier" for the user entry:
+ each name maps to a single entry and each entry has a single name.[br]
+ Each entry has a set of registration [doc:irc_masks]irc-masks[/doc]: these masks
+ are used to recognize the user on irc.[br]
+ [br]
+ [big]Registration masks[/big][br]
+ The masks have the common IRC mask format: [b]<nick>!<user>@<host>[/b][br]
+ The masks may contain '*' and '?' wildcards that match any portion of text.[br]
+ [b]*!*@*[/b][br]
+ [b]Pragma!*@*[/b][br]
+ [b]*!~daemon@*[/b][br]
+ [b]Pragma!*daemon@*.it[/b][br]
+ [b]Pragma!?daemon@some*.it[/b][br]
+ [b][email protected][/b][br]
+ Are examples of valid registration masks.[br]
+ The masks with wildcards can actually match more than a single user.[br]
+ For example the mask *!root@*.host.com will match all the users
+ having root as username and coming from the host.com domain.[br]
+ For this reason putting wildcards in nicknames could become a problem
+ if not used carefully (but may also be used to achieve interesting tricks).[br]
+ If you don't use wildcards in nicknames you are sure that
+ in a single irc connection , a mask will always refer to a single user.[br]
+ You will commonly use the following format:[br]
+ <nick>!*<username>@*.<host>.<top>[br]
+ or[br]
+ <nick>!*<username>@<number>.<number>.<number>.*[br]
+ In this way you can be 95% sure that the mask will really match the correct user.[br]
+ [br]
+ [big]Example of registration and lookups[/big]
+ Assume that you want to registere a friend of yours: Derek Riggs.[br]
+ Derek often uses "Eddie" as his nickname
+ "stranger" as username and has a dial-up connection that makes his IP address appear as
+ <variable-number>.somewhere.in.time.org.[br]
+ You will add an entry with name "Derek Riggs" and a registration mask like the following:
+ Eddie!stranger@*.somewhere.in.time.org.[br]
+ If the IRC servers keep adding strange characters ([doc:irc_masks]prefixes[/doc]) at the beginning of his username you may use
+ Eddie!*stranger@*.somewhere.in.time.org.[br]
+ If Eddie also often connects from the wasted.years.org domain and gets 'eddie' as username there, you might add a second registration mask as follows:
+ Eddie!*eddie@*.wasted.years.org.[br]
+ An alternative could be use only one mask with *.org as domain and allow any username (Eddie!*@*.org) but this
+ could become dangerous since it could match the users that you don't want to.[br]
+ On the other hand, if you dislike the users with the nickname Eddie that come from .org
+ and you're implementing an auto-kick system, the correct mask to register is "Eddie!*@*.org".[br]
+ [br]
+ KVirc ties to be smart , and always find the most correct match for an user:
+ If you have two masks registered: Pragma!*xor@*.myisp.it and *!*@*.myisp.it,
+ kvirc will match [email protected] with the first one even if the second
+ one matches too; the firs one is a best match.[br]
+ [br]
+ [big]Properties[/big][br]
+ A registered user has an (eventually empty) set of properties
+ defined by name/value pairs. (In versions prior to 3.0.0 flags were used instead,
+ but revealed to be insufficient).[br]
+ KVirc recognizes some of these proprietes and associates semantic actions to it; other properties
+ are left for scripting extension. Property names are case insensitive.[br]
+ One of the recognized properties is the "[doc:notify_list]notify[/doc]" property.
+ When an user is found to have this property set to a special value
+ KVIrc will attempt to track the user presence on IRC.
+ Another one is the [doc:avatar]avatar[/doc] property. Its value should be the
+ name of the "default" [doc:avatar]avatar image file[/doc] for the specified user.[br]
+ The "ignore" property should be set to "1" (or "true") for users that have to be ignored (:D).[br]
+ [br]
+ [big]The interface to the database[/big][br]
+ The [module:reguser]reguser module[/module] is the interface to the "registered users database".[br]
+ It provides a set of commands for adding and removing masks and manipulating properties.[br]
+*/
+
+//============================================================================================================
+//
+// KviRegisteredMask
+//
+
+KVILIB_API KviRegisteredUserDataBase* g_pRegisteredUserDataBase = 0;
+
+KviRegisteredMask::KviRegisteredMask(KviRegisteredUser * u,KviIrcMask * m)
+{
+ m_pUser = u;
+ m_pMask = m;
+ m_iMaskNonWildChars = m_pMask->nonWildChars();
+}
+
+//============================================================================================================
+//
+// KviRegisteredUser
+//
+
+
+KviRegisteredUser::KviRegisteredUser(const QString & name)
+{
+ m_iIgnoreFlags =0;
+ m_bIgnoreEnabled=false;
+ m_szName = name;
+ m_pPropertyDict = 0;
+ m_pMaskList = new KviPointerList<KviIrcMask>;
+ m_pMaskList->setAutoDelete(true);
+}
+
+KviRegisteredUser::~KviRegisteredUser()
+{
+ if(m_pPropertyDict)delete m_pPropertyDict;
+ delete m_pMaskList;
+}
+
+bool KviRegisteredUser::isIgnoreEnabledFor(IgnoreFlags flag)
+{
+ if(!m_bIgnoreEnabled) return false;
+ return m_iIgnoreFlags & flag;
+}
+
+KviIrcMask * KviRegisteredUser::findMask(const KviIrcMask &mask)
+{
+ for(KviIrcMask * m = m_pMaskList->first();m;m = m_pMaskList->next())
+ {
+ if(*m == mask)return m;
+ }
+ return 0;
+}
+
+bool KviRegisteredUser::addMask(KviIrcMask * mask)
+{
+ if(findMask(*mask))
+ {
+ delete mask;
+ mask = 0;
+ return false;
+ }
+ m_pMaskList->append(mask);
+ return true;
+}
+
+bool KviRegisteredUser::removeMask(KviIrcMask * mask)
+{
+ if(!mask)return false;
+ return m_pMaskList->removeRef(mask);
+}
+
+bool KviRegisteredUser::matches(const KviIrcMask &mask)
+{
+ for(KviIrcMask * m = m_pMaskList->first();m;m = m_pMaskList->next())
+ {
+ if(m->matches(mask))return true;
+ }
+ return false;
+}
+
+bool KviRegisteredUser::matchesFixed(const KviIrcMask &mask)
+{
+ for(KviIrcMask * m = m_pMaskList->first();m;m = m_pMaskList->next())
+ {
+ if(m->matchesFixed(mask))return true;
+ }
+ return false;
+}
+
+bool KviRegisteredUser::matchesFixed(const QString & nick,const QString & user,const QString & host)
+{
+ for(KviIrcMask * m = m_pMaskList->first();m;m = m_pMaskList->next())
+ {
+ if(m->matchesFixed(nick,user,host))return true;
+ }
+ return false;
+}
+
+void KviRegisteredUser::setProperty(const QString &name,bool value)
+{
+ setProperty(name,value ? QString("true") : QString("false"));
+}
+
+void KviRegisteredUser::setProperty(const QString & name,const QString & value)
+{
+ if(!value.isEmpty())
+ {
+ if(!m_pPropertyDict)
+ {
+ m_pPropertyDict = new KviPointerHashTable<QString,QString>(7,false);
+ m_pPropertyDict->setAutoDelete(true);
+ }
+#ifdef COMPILE_USE_QT4
+ QString * val = new QString(value.trimmed());
+#else
+ QString * val = new QString(value.stripWhiteSpace());
+#endif
+ if(!val->isEmpty())
+ {
+ m_pPropertyDict->replace(name,val);
+ } else {
+ delete val;
+ val = 0;
+ }
+ } else {
+ if(m_pPropertyDict)m_pPropertyDict->remove(name);
+ }
+}
+
+bool KviRegisteredUser::getProperty(const QString & name,QString &value)
+{
+ if(!m_pPropertyDict)return false;
+ if(name.isEmpty()) return false;
+ QString * pValue = m_pPropertyDict->find(name);
+ if(pValue)value = *pValue;
+ else return false;
+ return true;
+}
+
+const QString & KviRegisteredUser::getProperty(const QString & name)
+{
+ if(!m_pPropertyDict)return KviQString::empty;
+ if(name.isEmpty())return KviQString::empty;
+ QString * pValue = m_pPropertyDict->find(name);
+ if(pValue)return *pValue;
+ return KviQString::empty;
+}
+
+bool KviRegisteredUser::getBoolProperty(const QString & name,bool def)
+{
+ if(!m_pPropertyDict)return def;
+ if(name.isEmpty()) return def;
+ QString * pValue = m_pPropertyDict->find(name);
+ if(pValue)
+ {
+ // be flexible , allow more "true" values (pragma)
+ if(KviQString::equalCS(*pValue,"1"))return true;
+ if(KviQString::equalCI(*pValue,"true"))return true;
+ if(KviQString::equalCI(*pValue,"yes"))return true;
+ //if(KviQString::equalCI(*pValue,"yeah"))return true;
+ //if(KviQString::equalCI(*pValue,"sure"))return true;
+ //if(KviQString::equalCI(*pValue,"sureashell"))return true;
+ }
+ return def;
+}
+
+//============================================================================================================
+//
+// KviRegisteredUserGroup
+//
+
+KviRegisteredUserGroup::KviRegisteredUserGroup(const QString &name)
+{
+ setName(name);
+}
+
+KviRegisteredUserGroup::~KviRegisteredUserGroup()
+{
+}
+
+
+//============================================================================================================
+//
+// KviRegisteredUserDb
+//
+
+KviRegisteredUserDataBase::KviRegisteredUserDataBase()
+{
+ m_pUserDict = new KviPointerHashTable<QString,KviRegisteredUser>(31,false); // do not copy keys
+ m_pUserDict->setAutoDelete(true);
+
+ m_pWildMaskList = new KviRegisteredMaskList;
+ m_pWildMaskList->setAutoDelete(true);
+
+ m_pMaskDict = new KviPointerHashTable<QString,KviRegisteredMaskList>(49,false); // copy keys here!
+ m_pMaskDict->setAutoDelete(true);
+
+ m_pGroupDict = new KviPointerHashTable<QString,KviRegisteredUserGroup>(5,false); // copy keys here!
+ m_pGroupDict->setAutoDelete(true);
+}
+
+KviRegisteredUserDataBase::~KviRegisteredUserDataBase()
+{
+ emit(databaseCleared());
+ delete m_pUserDict;
+ delete m_pWildMaskList;
+ delete m_pMaskDict;
+ delete m_pGroupDict;
+}
+
+KviRegisteredUser * KviRegisteredUserDataBase::addUser(const QString & name)
+{
+ if(name.isEmpty()) return false;
+ if(m_pUserDict->find(name))return 0;
+ KviRegisteredUser * u = new KviRegisteredUser(name);
+ m_pUserDict->replace(u->name(),u); //u->name() because we're NOT copying keys!
+ emit(userAdded(name));
+ return u;
+}
+
+KviRegisteredUserGroup * KviRegisteredUserDataBase::addGroup(const QString & name)
+{
+ if(name.isEmpty()) return false;
+ if(m_pGroupDict->find(name))return 0;
+ KviRegisteredUserGroup * pGroup = new KviRegisteredUserGroup(name);
+ m_pGroupDict->replace(pGroup->name(),pGroup); //u->name() because we're NOT copying keys!
+ return pGroup;
+}
+
+KviRegisteredUser * KviRegisteredUserDataBase::getUser(const QString & name)
+{
+ if(name.isEmpty()) return 0;
+ KviRegisteredUser * u = m_pUserDict->find(name);
+ if(!u)
+ {
+ u = new KviRegisteredUser(name);
+ m_pUserDict->replace(u->name(),u); //u->name() because we're NOT copying keys!
+ }
+ return u;
+}
+
+static void append_mask_to_list(KviRegisteredMaskList *l,KviRegisteredUser *u,KviIrcMask *mask)
+{
+ KviRegisteredMask * newMask = new KviRegisteredMask(u,mask);
+ int idx = 0;
+ for(KviRegisteredMask * m = l->first();m;m = l->next())
+ {
+ if(m->nonWildChars() < newMask->nonWildChars())
+ {
+ l->insert(idx,newMask);
+ return;
+ }
+ idx++;
+ }
+ l->append(newMask);
+}
+
+KviRegisteredUser * KviRegisteredUserDataBase::addMask(KviRegisteredUser * u,KviIrcMask * mask)
+{
+ if(!u || !mask) return 0;
+ __range_valid(u == m_pUserDict->find(u->name()));
+
+ KviRegisteredMaskList * l;
+ if(mask->hasWildNick())
+ {
+ for(KviRegisteredMask * m = m_pWildMaskList->first();m;m = m_pWildMaskList->next())
+ {
+ if(*(m->mask()) == *mask)
+ {
+ delete mask;
+ mask = 0;
+ return m->user();
+ }
+ }
+ // not found ...ok... add it
+ // masks with more info go first in the list
+ l = m_pWildMaskList;
+ } else {
+ l = m_pMaskDict->find(mask->nick());
+ if(l)
+ {
+ // FIXME: #warning "Here we could compare the host and username only: nick matches for sure"
+ for(KviRegisteredMask * m = l->first();m;m = l->next())
+ {
+ if(*(m->mask()) == *mask)
+ {
+ delete mask;
+ mask = 0;
+ return m->user();
+ }
+ }
+ // not found ...ok... add it
+ } else {
+ // not found ...ok... add it
+ // this is the first mask in the list
+ l = new KviRegisteredMaskList;
+ l->setAutoDelete(true);
+ if(!u->addMask(mask))
+ {
+ debug(" Ops...got an incoherent regusers action...recovered ?");
+ delete l;
+ l = 0;
+ } else {
+ append_mask_to_list(l,u,mask);
+ m_pMaskDict->insert(mask->nick(),l);
+ }
+ return 0;
+ }
+ }
+ // Ok...add it
+ if(!u->addMask(mask))
+ {
+ debug("ops...got an incoherent regusers action...recovered ?");
+ return 0; // ops...already there ?
+ }
+ append_mask_to_list(l,u,mask);
+ return 0;
+}
+
+void KviRegisteredUserDataBase::copyFrom(KviRegisteredUserDataBase * db)
+{
+ m_pUserDict->clear();
+ m_pWildMaskList->clear();
+ m_pMaskDict->clear();
+ m_pGroupDict->clear();
+ emit(databaseCleared());
+
+ KviPointerHashTableIterator<QString,KviRegisteredUser> it(*(db->m_pUserDict));
+
+ while(KviRegisteredUser * theCur = it.current())
+ {
+ KviRegisteredUser * u = getUser(theCur->name());
+ // copy masks
+ KviPointerList<KviIrcMask> * l = theCur->maskList();
+ for(KviIrcMask * m=l->first();m;m = l->next())
+ {
+ KviIrcMask * m2 = new KviIrcMask(*m);
+ addMask(u,m2);
+ }
+ // copy properties
+ KviPointerHashTable<QString,QString> * pd = theCur->propertyDict();
+ if(pd)
+ {
+ KviPointerHashTableIterator<QString,QString> pdi(*pd);
+ while(pdi.current())
+ {
+ u->setProperty(pdi.currentKey(),*(pdi.current()));
+ ++pdi;
+ }
+ }
+ u->m_iIgnoreFlags=theCur->m_iIgnoreFlags;
+ u->m_bIgnoreEnabled=theCur->m_bIgnoreEnabled;
+ u->setGroup(theCur->group());
+ ++it;
+ }
+
+ KviPointerHashTableIterator<QString,KviRegisteredUserGroup> git(*db->m_pGroupDict);
+ while(git.current())
+ {
+ addGroup(git.currentKey());
+ ++git;
+ }
+}
+
+
+bool KviRegisteredUserDataBase::removeUser(const QString & name)
+{
+ if(name.isEmpty()) return false;
+ KviRegisteredUser * u = m_pUserDict->find(name);
+ if(!u)return false;
+ while(KviIrcMask * mask = u->maskList()->first())
+ {
+ if(!removeMaskByPointer(mask))
+ debug("Ops... removeMaskByPointer(%s) failed ?",KviQString::toUtf8(name).data());
+ }
+ emit(userRemoved(name));
+ m_pUserDict->remove(name);
+ return true;
+}
+bool KviRegisteredUserDataBase::removeGroup(const QString & name)
+{
+ if(name.isEmpty()) return false;
+ m_pGroupDict->remove(name);
+ return true;
+}
+
+bool KviRegisteredUserDataBase::removeMask(const KviIrcMask &mask)
+{
+ // find the mask pointer
+ KviRegisteredMask * m = findExactMask(mask);
+ // and remove it
+ if(m){
+ if(removeMaskByPointer(m->mask()))
+ {
+ return true;
+ }
+ }
+ return 0;
+}
+
+bool KviRegisteredUserDataBase::removeMaskByPointer(KviIrcMask * mask)
+{
+ if(!mask) return 0;
+ if(mask->hasWildNick())
+ {
+ // remove from the wild list
+ for(KviRegisteredMask * m = m_pWildMaskList->first();m;m = m_pWildMaskList->next())
+ {
+ if(m->mask() == mask)
+ {
+ // ok..got it, remove from the list and from the user struct (user struct deletes it!)
+ emit(userChanged(mask->nick()));
+ m->user()->removeMask(mask); // this one deletes m->mask()
+ m_pWildMaskList->removeRef(m); // this one deletes m
+ return true;
+ }
+ }
+ // not found ...opz :)
+ } else {
+ KviRegisteredMaskList * l = m_pMaskDict->find(mask->nick());
+ if(l)
+ {
+ // FIXME: #warning "Here we could compare the host and username only: nick matches for sure"
+ for(KviRegisteredMask * m = l->first();m;m = l->next())
+ {
+ if(m->mask() == mask)
+ {
+ QString nick = mask->nick();
+ emit(userChanged(nick));
+ m->user()->removeMask(mask); // this one deletes m->mask() (or mask)
+ l->removeRef(m); // this one deletes m
+ if(l->count() == 0)m_pMaskDict->remove(nick);
+ return true;
+ }
+ }
+ // not found ...opz
+ }
+ }
+ // not found...
+ return false;
+}
+
+
+
+/*
+KviRegisteredUser * KviRegisteredUserDataBase::findMatchingUser(const KviIrcMask &mask)
+{
+ // first lookup the nickname in the maskDict
+ KviRegisteredMaskList * l = m_pMaskDict->find(mask.nick());
+ if(l)
+ {
+ for(KviRegisteredMask *m = l->first();m;m = l->next())
+ {
+ if(m->mask()->matchesFixed(0,mask.user(),mask.host()))return m->user();
+ }
+ }
+ // not found....lookup the wild ones
+ for(KviRegisteredMask * m = m_pWildMaskList->first();m;m = m_pWildMaskList->next())
+ {
+ if(m->mask()->matchesFixed(mask))return m->user();
+ }
+ return 0; // no match at all
+}
+*/
+KviRegisteredUser * KviRegisteredUserDataBase::findMatchingUser(const QString & nick,const QString &user,const QString & host)
+{
+ KviRegisteredMask * m = findMatchingMask(nick,user,host);
+ if(m)return m->user();
+ return 0; // no match at all
+}
+
+KviRegisteredMask * KviRegisteredUserDataBase::findMatchingMask(const QString & nick,const QString &user,const QString & host)
+{
+ // first lookup the nickname in the maskDict
+ if(nick.isEmpty()) return false;
+ KviRegisteredMaskList * l = m_pMaskDict->find(nick);
+ if(l)
+ {
+ for(KviRegisteredMask *m = l->first();m;m = l->next())
+ {
+ if(m->mask()->matchesFixed(nick,user,host))return m;
+ }
+ }
+ // not found....lookup the wild ones
+ for(KviRegisteredMask * m = m_pWildMaskList->first();m;m = m_pWildMaskList->next())
+ {
+ if(m->mask()->matchesFixed(nick,user,host))return m;
+ }
+ return 0; // no match at all
+}
+
+KviRegisteredUser * KviRegisteredUserDataBase::findUserWithMask(const KviIrcMask &mask)
+{
+ KviRegisteredMask * m = findExactMask(mask);
+ if(m)return m->user();
+ return 0;
+}
+
+KviRegisteredMask * KviRegisteredUserDataBase::findExactMask(const KviIrcMask &mask)
+{
+ // first lookup the nickname in the maskDict
+ if(mask.nick()=="") return 0;
+ KviRegisteredMaskList * l = m_pMaskDict->find(mask.nick());
+ if(l)
+ {
+ for(KviRegisteredMask *m = l->first();m;m = l->next())
+ {
+ if(*(m->mask()) == mask)return m;
+ }
+ }
+ // not found....lookup the wild ones
+ for(KviRegisteredMask * m = m_pWildMaskList->first();m;m = m_pWildMaskList->next())
+ {
+ if(*(m->mask()) == mask)return m;
+ }
+ return 0; // no match at all
+}
+/*
+bool KviRegisteredUserDataBase::isIgnoredUser(const QString & nick,const QString & user,const QString & host)
+{
+ KviRegisteredUser * u = findMatchingUser(nick,user,host);
+ if(u)return u->getBoolProperty("IGNORE");
+ else return false;
+}
+*/
+void KviRegisteredUserDataBase::load(const QString & filename)
+{
+ QString szCurrent;
+ KviConfig cfg(filename,KviConfig::Read);
+
+ KviConfigIterator it(*cfg.dict());
+ while(it.current())
+ {
+ cfg.setGroup(it.currentKey());
+ szCurrent=it.currentKey();
+ if(KviQString::equalCSN("#Group ",szCurrent,7))
+ {
+ szCurrent.remove(0,7);
+ addGroup(szCurrent);
+ } else {
+ KviRegisteredUser * u = addUser(szCurrent);
+
+ if(u)
+ {
+ u->setIgnoreEnabled(cfg.readBoolEntry("IgnoreEnabled",false));
+ u->setIgnoreFlags(cfg.readIntEntry("IgnoreFlags",0));
+ KviConfigGroupIterator sdi(*(it.current()));
+ while(sdi.current())
+ {
+ QString tmp = sdi.currentKey();
+ if(KviQString::equalCSN("prop_",tmp,5))
+ {
+ tmp.remove(0,5);
+ u->setProperty(tmp,*(sdi.current()));
+ } else if(KviQString::equalCSN("mask_",tmp,5))
+ {
+ KviIrcMask * mask = new KviIrcMask(*(sdi.current()));
+ addMask(u,mask);
+ } else if(KviQString::equalCI(tmp,"Group"))
+ {
+ u->setGroup(*(sdi.current()));
+ }
+ ++sdi;
+ }
+ }
+ }
+ ++it;
+ }
+ if(!m_pGroupDict->find(__tr("Default")))
+ addGroup(__tr("Default"));
+}
+
+
+void KviRegisteredUserDataBase::save(const QString & filename)
+{
+ KviConfig cfg(filename,KviConfig::Write);
+ cfg.clear();
+ cfg.preserveEmptyGroups(true);
+
+ KviPointerHashTableIterator<QString,KviRegisteredUser> it(*m_pUserDict);
+
+ while(it.current())
+ {
+ cfg.setGroup(it.current()->name());
+ // Write properties
+ cfg.writeEntry("IgnoreEnabled",it.current()->ignoreEnagled());
+ cfg.writeEntry("IgnoreFlags",it.current()->ignoreFlags());
+ if(it.current()->propertyDict())
+ {
+ KviPointerHashTableIterator<QString,QString> pit(*(it.current()->propertyDict()));
+ while(pit.current())
+ {
+ QString tmp = "prop_";
+ tmp.append(pit.currentKey());
+ cfg.writeEntry(tmp,*(pit.current()));
+ ++pit;
+ }
+ }
+ // Write masks
+ int idx = 0;
+ for(KviIrcMask * m = it.current()->maskList()->first();m;m = it.current()->maskList()->next())
+ {
+ QString tmp;
+ KviQString::sprintf(tmp,"mask_%d",idx);
+ QString mask;
+ m->mask(mask,KviIrcMask::NickUserHost);
+ cfg.writeEntry(tmp,mask);
+ ++idx;
+ }
+ cfg.writeEntry("Group",it.current()->group());
+ ++it;
+ }
+
+ KviPointerHashTableIterator<QString,KviRegisteredUserGroup> git(*m_pGroupDict);
+ QString szTmp;
+ while(git.current())
+ {
+ KviQString::sprintf(szTmp,"#Group %Q",&(git.current()->name()));
+ cfg.setGroup(szTmp);
+ ++git;
+ }
+
+}
diff --git a/src/kvilib/ext/kvi_regusersdb.h b/src/kvilib/ext/kvi_regusersdb.h
new file mode 100644
index 00000000..06152f24
--- /dev/null
+++ b/src/kvilib/ext/kvi_regusersdb.h
@@ -0,0 +1,201 @@
+#ifndef _KVI_REGUSERSDB_H_
+#define _KVI_REGUSERSDB_H_
+//=================================================================================================
+//
+// File : kvi_regusersdb.h
+// Creation date : Sat Sep 09 2000 15:30:56 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=================================================================================================
+
+//
+// REGISTERED USERS
+//
+// Here we manage users resigered by mask and their (generic!) properties
+//
+
+#include "kvi_settings.h"
+#include "kvi_heapobject.h"
+#include "kvi_qstring.h"
+#include "kvi_ircmask.h"
+#include "kvi_debug.h"
+
+#include "kvi_pointerlist.h"
+#include "kvi_pointerhashtable.h"
+#include <qobject.h>
+
+class KviRegisteredUserDataBase;
+
+#ifndef _KVI_REGUSERDB_CPP_
+ extern KVILIB_API KviRegisteredUserDataBase * g_pRegisteredUserDataBase;
+#endif //!_KVI_REGUSERDB_CPP_
+
+//=================================================================================================
+//
+// KviRegisteredUser
+//
+
+class KVILIB_API KviRegisteredUser : public KviHeapObject
+{
+ friend class KviRegisteredUserDataBase;
+public:
+ enum IgnoreFlags {
+ Channel=1,
+ Query=2,
+ Notice=4,
+ Ctcp=8,
+ Invite=16,
+ Dcc=32
+ };
+
+ KviRegisteredUser(const QString &name);
+ ~KviRegisteredUser();
+private:
+ int m_iIgnoreFlags;
+ bool m_bIgnoreEnabled;
+ QString m_szName;
+ QString m_szGroup;
+ KviPointerHashTable<QString,QString> * m_pPropertyDict; // owned properties
+ KviPointerList<KviIrcMask> * m_pMaskList; // owned masks
+protected:
+ // mask ownership is transferred! (always!) returns false if the mask was already there
+ bool addMask(KviIrcMask * mask);
+ bool removeMask(KviIrcMask * mask);
+ KviIrcMask * findMask(const KviIrcMask &mask);
+public:
+ int ignoreFlags() { return m_iIgnoreFlags; };
+ void setIgnoreFlags(int flags) {m_iIgnoreFlags=flags; };
+ bool ignoreEnagled() { return m_bIgnoreEnabled; };
+ void setIgnoreEnabled(bool enabled) {m_bIgnoreEnabled=enabled;};
+ bool isIgnoreEnabledFor(IgnoreFlags flag);
+
+ const QString &name(){ return m_szName; };
+ bool matches(const KviIrcMask &mask);
+ bool matchesFixed(const KviIrcMask &mask);
+ bool matchesFixed(const QString &nick,const QString &user,const QString &host);
+
+ void setProperty(const QString &name,const QString &value);
+ void setProperty(const QString &name,bool value);
+
+ void setGroup(const QString &name) { m_szGroup=name; };
+ const QString &group(){ return m_szGroup; };
+
+ const QString & getProperty(const QString &name); // returns 0 if the property is not there
+ bool getProperty(const QString &name,QString &value); // returns false if the property is not there
+ bool getBoolProperty(const QString &name,bool def=FALSE); // returns true if the property is there and is true
+ // the propertyDict may be 0!
+ KviPointerHashTable<QString,QString> * propertyDict(){ return m_pPropertyDict; };
+ // this is never zero (but may contain no masks)
+ KviPointerList<KviIrcMask> * maskList(){ return m_pMaskList; };
+};
+
+//============================================================================================================
+//
+// KviRegisteredUserGroup
+//
+
+class KVILIB_API KviRegisteredUserGroup : public KviHeapObject
+{
+ friend class KviRegisteredUserDataBase;
+public:
+ KviRegisteredUserGroup(const QString &name);
+ ~KviRegisteredUserGroup();
+
+ void setName(const QString &name) { m_szName=name; };
+ const QString &name(){ return m_szName; };
+private:
+ QString m_szName;
+};
+//============================================================================================================
+//
+// KviRegisteredMask
+//
+
+class KVILIB_API KviRegisteredMask
+{
+private:
+ KviRegisteredUser * m_pUser; // pointer , not owned!
+ KviIrcMask * m_pMask; // pointer , not owned!
+ int m_iMaskNonWildChars;
+public:
+ KviRegisteredMask(KviRegisteredUser * u,KviIrcMask * m);
+ ~KviRegisteredMask(){};
+public:
+ int nonWildChars(){ return m_iMaskNonWildChars; };
+ KviRegisteredUser * user(){ return m_pUser; };
+ KviIrcMask * mask(){ return m_pMask; };
+};
+
+typedef KviPointerList<KviRegisteredMask> KviRegisteredMaskList;
+
+//=================================================================================================
+//
+// KviRegisteredUsersDb
+//
+// Manages a set of KviRegisteredUser instances stored in the m_pUserDict dictionary
+// The users are identified by masks stored in m_pMaskDict and m_pWildMaskList
+// m_pMaskDict contains lists of non wild-nick KviRegisteredMask that point to users
+// m_pWildMaskList is a list of wild-nick KviRegisteredMask that point to users
+//
+
+class KVILIB_API KviRegisteredUserDataBase : public QObject
+{
+ Q_OBJECT
+public:
+ KviRegisteredUserDataBase();
+ ~KviRegisteredUserDataBase();
+private:
+ KviPointerHashTable<QString,KviRegisteredUser> * m_pUserDict; // unique namespace, owns the objects, does not copy keys
+ KviPointerHashTable<QString,KviRegisteredMaskList> * m_pMaskDict; // owns the objects, copies the keys
+ KviRegisteredMaskList * m_pWildMaskList; // owns the objects
+ KviPointerHashTable<QString,KviRegisteredUserGroup>* m_pGroupDict;
+public:
+ void copyFrom(KviRegisteredUserDataBase * db);
+ KviRegisteredUser * addUser(const QString &name); // returns 0 if already there
+ KviRegisteredUser * getUser(const QString &name); // returns existing or adds
+ bool removeUser(const QString &name);
+ bool removeGroup(const QString &name);
+ KviRegisteredUser * findUserByName(const QString &name){ return m_pUserDict->find(name); };
+ // mask must be allocated on the heap and the ownership is transferred!
+ // returns non zero if there is already an user with this mask (returns the pointer to it!)
+ KviRegisteredUser * addMask(KviRegisteredUser * u,KviIrcMask * mask);
+ bool removeMaskByPointer(KviIrcMask * mask);
+ bool removeMask(const KviIrcMask &mask);
+ KviRegisteredUser * findMatchingUser(const QString &nick,const QString &user,const QString &host);
+ KviRegisteredUser * findUserWithMask(const KviIrcMask &mask);
+ KviRegisteredMask * findExactMask(const KviIrcMask &mask);
+ KviRegisteredMask * findMatchingMask(const QString &nick,const QString &user,const QString &host);
+ //Only used in few places (actually one) of the code, but lot of times;perfect for inlining...
+ //bool isIgnoredUser(const char * nick,const char * user,const char * host);
+ void load(const QString &filename);
+ void save(const QString &filename);
+
+ KviPointerHashTable<QString,KviRegisteredUser> * userDict(){ return m_pUserDict; };
+ KviPointerHashTable<QString,KviRegisteredUserGroup>* groupDict() { return m_pGroupDict; };
+
+ KviRegisteredUserGroup* addGroup(const QString &name);
+signals:
+ void userRemoved(const QString&);
+ void userChanged(const QString&);
+ void userAdded (const QString&);
+ void databaseCleared();
+};
+
+
+#endif //_KVI_REGUSERSDB_H_
diff --git a/src/kvilib/ext/kvi_sharedfiles.cpp b/src/kvilib/ext/kvi_sharedfiles.cpp
new file mode 100644
index 00000000..65ce0d69
--- /dev/null
+++ b/src/kvilib/ext/kvi_sharedfiles.cpp
@@ -0,0 +1,391 @@
+//=============================================================================
+//
+// File : kvi_filetrader.cpp
+// Creation date : Wed Aug 27 2000 10:33:11 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+
+#include "kvi_sharedfiles.h"
+
+#include "kvi_config.h"
+#include "kvi_fileutils.h"
+
+#include <qfileinfo.h>
+
+// TODO: Match servers that the file requests come from
+// TODO: Max number of downloads ?
+
+// FIXME: MD5SUM ?
+
+/*
+ @doc: shared_files
+ @title:
+ Sharing files with KVIrc
+ @type:
+ generic
+ @short:
+ Automatically sharing your files with other IRC users
+ @keyterms:
+ file sharing
+ @body:
+ [big]What is this ?[/big]
+ The "file offers" are a simple way to share your files with other IRC users.[br]
+ Basically , you setup an offer by selecting a local file, choosing a "visible name" for it.
+ Remote users will be able to request you the file and download it automatically by
+ issuing a simple DCC GET request.[br]
+ [big]Details[/big]
+ Each offer refers to an existing file on one of your locally mounted file systems.
+ The offer is given a visible name that the remote users will effectively request.
+ To share the file /usr/arch/mp3/SonataArctica_SingInSilence_Live.mp3 you will add a file offer
+ with /usr/arch/mp3/SonataArctica_SingInSilence_Live.mp3 as real file path , something like
+ "SonataArctica_SingInSilence.mp3". A remote user will then request you a DCC GET SonataArctica_SingInSilence.mp3
+ and KVIrc will automatically send the file.[br]
+ Each file offer has an "user mask" that the requesting remote users must match to
+ obtain the file: *!*@* matches any user, Pragma!*@* matches any user with nickname pragma,
+ *!*@*.omnikron.net matches any user coming from the omnikron.net domain.[br]
+ Each offer can have an expire time: the offer will be automatically removed after
+ a defined number of seconds. An expire time of '0' seconds means that the offer should never expire.[br]
+ If you have two file offers with the same name and different file, the remote user can
+ use an additional "size" parameter in the DCC GET request.[br]
+ [big]Security issues[/big]
+ This is a nice but unsecure method of sharing files.[br]
+ The user mask is a good protection but you have to use it properly!.[br]
+ Setting the user mask to Nick!*@* can be easily exploited (just by making an user disconnect
+ in one of the well known ways and then by using his nickname).[br]
+ On the other side, the remote end must know exactly the visible name of the offer to request
+ and noone but you will tell him that name.[br]
+ In sum:[br]
+ Don't share any really important files: this *might* be like putting it on your webpage :D[br]
+ Please don't send complains if someone stoles your /etc/passwd : it is because you have permitted that.[br]
+*/
+
+KviSharedFile::KviSharedFile(const QString &szName,const QString &szAbsPath,const QString &szUserMask,time_t expireTime,unsigned int uFileSize)
+{
+ m_szName = szName;
+ m_szAbsFilePath = szAbsPath;
+ m_szUserMask = szUserMask;
+ m_expireTime = expireTime;
+ m_uFileSize = uFileSize;
+#ifdef COMPILE_USE_QT4
+ // QT4ROX: Because they have finally moved the functionality of QString::contains() to QString::count(), and QString::contains() now does the right job
+ m_uWildCount = m_szUserMask.count('*');
+#else
+ m_uWildCount = m_szUserMask.contains('*');
+#endif
+ m_uNonWildCount = m_szUserMask.length() - m_uWildCount;
+}
+
+KviSharedFile::~KviSharedFile()
+{
+}
+
+
+KviSharedFilesManager::KviSharedFilesManager()
+: QObject()
+{
+ m_pSharedListDict = new KviPointerHashTable<QString,KviSharedFileList>();
+ m_pSharedListDict->setAutoDelete(true);
+ m_pCleanupTimer = new QTimer();
+ connect(m_pCleanupTimer,SIGNAL(timeout()),this,SLOT(cleanup()));
+}
+
+KviSharedFilesManager::~KviSharedFilesManager()
+{
+ if(m_pCleanupTimer->isActive())m_pCleanupTimer->stop();
+ delete m_pCleanupTimer;
+ delete m_pSharedListDict;
+}
+
+void KviSharedFilesManager::cleanup()
+{
+ KviPointerHashTableIterator<QString,KviSharedFileList> it(*m_pSharedListDict);
+ time_t curTime = time(0);
+
+ bool bOtherStuffToCleanup = false;
+ //bool bChanged = false;
+
+ KviPointerList<QString> lDying;
+ lDying.setAutoDelete(true);
+
+ while(KviSharedFileList * l = it.current())
+ {
+ KviPointerList<KviSharedFile> tmp;
+ tmp.setAutoDelete(false);
+ for(KviSharedFile * o = l->first();o;o = l->next())
+ {
+ if(o->expireTime() > 0)
+ {
+ if(((int)o->expireTime()) <= ((int)curTime))
+ {
+ tmp.append(o);
+ //bChanged = true;
+ } else {
+ bOtherStuffToCleanup = true;
+ }
+ }
+ }
+ for(KviSharedFile * fo = tmp.first();fo;fo = tmp.next())
+ {
+ l->removeRef(fo);
+ emit sharedFileRemoved(fo);
+ }
+ if(l->count() == 0)
+ lDying.append(new QString(it.currentKey()));
+
+ ++it;
+ }
+
+ for(QString * pDyingKey = lDying.first();pDyingKey;pDyingKey = lDying.next())
+ m_pSharedListDict->remove(*pDyingKey);
+
+ if(!bOtherStuffToCleanup)m_pCleanupTimer->stop();
+ //if(bChanged)emit sharedFilesChanged();
+}
+
+void KviSharedFilesManager::clear()
+{
+ m_pSharedListDict->clear();
+ emit sharedFilesChanged();
+}
+
+void KviSharedFilesManager::doInsert(KviSharedFileList * l, KviSharedFile * o)
+{
+ int index = 0;
+ for(KviSharedFile * fo =l->first();fo;fo = l->next())
+ {
+ if(o->wildcardCount() > 0)
+ {
+ // the new mask has wildcards... if the current one has none, skip it
+ if(fo->wildcardCount() > 0)
+ {
+ // the one in the list has wildcards too...
+ // the ones with more non-wild chars go first...
+ if(fo->nonWildcardCount() < o->nonWildcardCount())
+ {
+ // ok...the new one has more non-wildcards , insert
+ l->insert(index,o);
+ return;
+ } else {
+ if(o->nonWildcardCount() == fo->nonWildcardCount())
+ {
+ // the same number of non-wildcards
+ // let the number of wildcards decide (it will be eventually equal)
+ if(o->wildcardCount() < fo->wildcardCount())
+ {
+ // the new one has less wildcards... goes first
+ l->insert(index,o);
+ return;
+ } // else the same number of wildcards and non-wildcards...skip
+ } // else the existing one has more non-wildcards...skip
+ }
+ } // else the current has no wildcards...skip
+ } else {
+ // the new mask has no wildcards....
+ if(fo->wildcardCount() > 0)
+ {
+ // current one has wildcards...insert
+ l->insert(index,o);
+ return;
+ }
+ // the current one has no wildcards...
+ // the longer masks go first....
+ if(fo->maskLength() < o->maskLength())
+ {
+ // the current one is shorter than the new one...insert
+ l->insert(index,o);
+ return;
+ } // else current one is longer...skip
+ }
+ index++;
+ }
+ l->append(o);
+}
+
+void KviSharedFilesManager::addSharedFile(KviSharedFile * f)
+{
+ // First find the list
+ KviSharedFileList * l = m_pSharedListDict->find(f->name());
+ if(!l)
+ {
+ l = new KviSharedFileList;
+ l->setAutoDelete(true);
+ m_pSharedListDict->replace(f->name(),l);
+ }
+
+ doInsert(l,f);
+
+ if(((int)f->expireTime()) > 0)
+ {
+ if(!m_pCleanupTimer->isActive())m_pCleanupTimer->start(60000);
+ }
+
+ emit sharedFileAdded(f);
+}
+
+KviSharedFile * KviSharedFilesManager::addSharedFile(const QString &szName,const QString &szAbsPath,const QString &szMask,int timeoutInSecs)
+{
+ QFileInfo inf(szAbsPath);
+ if(inf.exists() && inf.isFile() && inf.isReadable() && (inf.size() > 0))
+ {
+ // First find the list
+ KviSharedFileList * l = m_pSharedListDict->find(szName);
+ if(!l)
+ {
+ l = new KviSharedFileList;
+ l->setAutoDelete(true);
+ m_pSharedListDict->replace(szName,l);
+ }
+
+ // Now insert
+ KviSharedFile * o = new KviSharedFile(szName,szAbsPath,szMask,timeoutInSecs > 0 ? (((int)(time(0))) + timeoutInSecs) : 0,inf.size());
+
+ doInsert(l,o);
+
+ if(((int)o->expireTime()) > 0)
+ {
+ if(!m_pCleanupTimer->isActive())m_pCleanupTimer->start(60000);
+ }
+
+ emit sharedFileAdded(o);
+
+ return o;
+ } else {
+ debug("File %s unreadable: can't add offer",KviQString::toUtf8(szAbsPath).data());
+ return 0;
+ }
+}
+
+KviSharedFile * KviSharedFilesManager::lookupSharedFile(const QString &szName,KviIrcMask * mask,unsigned int uFileSize)
+{
+ KviSharedFileList * l = m_pSharedListDict->find(szName);
+ if(!l)return 0;
+
+ for(KviSharedFile * o = l->first();o;o = l->next())
+ {
+ bool bMatch;
+ if(mask)
+ {
+ KviIrcMask umask(o->userMask());
+ bMatch = mask->matchedBy(umask);
+ } else bMatch = KviQString::equalCS(o->userMask(),"*!*@*");
+ if(bMatch)
+ {
+ if(uFileSize > 0)
+ {
+ if(uFileSize == o->fileSize())return o;
+ } else return o;
+ }
+ }
+
+ return 0;
+}
+bool KviSharedFilesManager::removeSharedFile(const QString &szName,const QString &szMask,unsigned int uFileSize)
+{
+ KviSharedFileList * l = m_pSharedListDict->find(szName);
+ if(!l)return false;
+ for(KviSharedFile * o = l->first();o;o = l->next())
+ {
+ if(KviQString::equalCI(szMask,o->userMask()))
+ {
+ bool bMatch = uFileSize > 0 ? uFileSize == o->fileSize() : true;
+ if(bMatch)
+ {
+ QString save = szName; // <-- szName MAY Be a pointer to o->name()
+ l->removeRef(o);
+ if(l->count() == 0)m_pSharedListDict->remove(save);
+ emit sharedFileRemoved(o);
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+bool KviSharedFilesManager::removeSharedFile(const QString &szName,KviSharedFile * off)
+{
+ KviSharedFileList * l = m_pSharedListDict->find(szName);
+ if(!l)return false;
+ for(KviSharedFile * o = l->first();o;o = l->next())
+ {
+ if(off == o)
+ {
+ QString save = szName; // <-- szName MAY Be a pointer to o->name()
+ l->removeRef(o);
+ if(l->count() == 0)m_pSharedListDict->remove(save);
+ emit sharedFileRemoved(off);
+ return true;
+ }
+ }
+ return false;
+}
+
+
+void KviSharedFilesManager::load(const QString &filename)
+{
+ KviConfig cfg(filename,KviConfig::Read);
+ //cfg.clear();
+ cfg.setGroup("PermanentFileOffers");
+ int num = cfg.readIntEntry("NEntries",0);
+ for(int idx=0;idx<num;idx++)
+ {
+ QString tmp;
+ KviQString::sprintf(tmp,"%dFName",idx);
+ QString szName = cfg.readQStringEntry(tmp,"");
+ KviQString::sprintf(tmp,"%dFilePath",idx);
+ QString szPath = cfg.readQStringEntry(tmp,"");
+ KviQString::sprintf(tmp,"%dUserMask",idx);
+ QString szMask = cfg.readQStringEntry(tmp,"");
+ if(!szMask.isEmpty() && !szPath.isEmpty() && !szName.isEmpty())
+ addSharedFile(szName,szPath,szMask,0);
+ }
+}
+
+void KviSharedFilesManager::save(const QString &filename)
+{
+ KviConfig cfg(filename,KviConfig::Write);
+ cfg.clear();
+ cfg.setGroup("PermanentFileOffers");
+
+ KviPointerHashTableIterator<QString,KviSharedFileList> it(*m_pSharedListDict);
+ int idx = 0;
+ while(KviSharedFileList * l = it.current())
+ {
+ for(KviSharedFile * o = l->first();o;o = l->next())
+ {
+ if(((int)(o->expireTime())) == 0)
+ {
+ QString tmp;
+ KviQString::sprintf(tmp,"%dFName",idx);
+ cfg.writeEntry(tmp,it.currentKey());
+ KviQString::sprintf(tmp,"%dFilePath",idx);
+ cfg.writeEntry(tmp,o->absFilePath());
+ KviQString::sprintf(tmp,"%dUserMask",idx);
+ cfg.writeEntry(tmp,o->userMask());
+ ++idx;
+ }
+ }
+ ++it;
+ }
+ cfg.writeEntry("NEntries",idx);
+}
+
diff --git a/src/kvilib/ext/kvi_sharedfiles.h b/src/kvilib/ext/kvi_sharedfiles.h
new file mode 100644
index 00000000..3a6d2239
--- /dev/null
+++ b/src/kvilib/ext/kvi_sharedfiles.h
@@ -0,0 +1,133 @@
+#ifndef _KVI_FILETRADER_H_
+#define _KVI_FILETRADER_H_
+//=============================================================================
+//
+// File : kvi_filetrader.h
+// Creation date : Wed Aug 27 2000 10:28:51 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_heapobject.h"
+#include "kvi_string.h"
+#include "kvi_ircmask.h"
+#include "kvi_pointerlist.h"
+#include "kvi_qstring.h"
+
+#include "kvi_pointerhashtable.h"
+
+#include <time.h>
+#include <qtimer.h>
+
+
+class KVILIB_API KviSharedFile : public KviHeapObject
+{
+public:
+ KviSharedFile(const QString &szName,const QString &szAbsPath,const QString &szUserMask,time_t expireTime,unsigned int uFileSize);
+ ~KviSharedFile();
+private:
+ QString m_szName;
+ QString m_szAbsFilePath;
+ time_t m_expireTime;
+ QString m_szUserMask;
+ unsigned int m_uFileSize;
+ unsigned int m_uWildCount;
+ unsigned int m_uNonWildCount;
+public:
+ const QString &name(){ return m_szName; };
+
+ const QString &absFilePath(){ return m_szAbsFilePath; };
+
+ const QString &userMask(){ return m_szUserMask; };
+
+ time_t expireTime(){ return m_expireTime; };
+ bool expires(){ return (m_expireTime != 0); };
+
+ unsigned int fileSize(){ return m_uFileSize; };
+
+ unsigned int wildcardCount(){ return m_uWildCount; };
+ unsigned int nonWildcardCount(){ return m_uNonWildCount; };
+ int maskLength(){ return m_szUserMask.length(); };
+};
+
+
+typedef KviPointerList<KviSharedFile> KviSharedFileList;
+
+
+class KVILIB_API KviSharedFilesManager : public QObject
+{
+ Q_OBJECT
+public:
+ KviSharedFilesManager();
+ ~KviSharedFilesManager();
+private:
+ QTimer * m_pCleanupTimer;
+ KviPointerHashTable<QString,KviSharedFileList> * m_pSharedListDict;
+public:
+ void addSharedFile(KviSharedFile * f);
+ KviSharedFile * addSharedFile(const QString &szName,const QString &szAbsPath,const QString &szMask,int timeoutInSecs);
+ KviSharedFile * lookupSharedFile(const QString &szName,KviIrcMask * mask,unsigned int uFileSize = 0);
+ bool removeSharedFile(const QString &szName,const QString &szMask,unsigned int uFileSize);
+ bool removeSharedFile(const QString &szName,KviSharedFile * off);
+ void load(const QString &filename);
+ void save(const QString &filename);
+ void clear();
+ KviPointerHashTable<QString,KviSharedFileList> * sharedFileListDict(){ return m_pSharedListDict; };
+private:
+ void doInsert(KviSharedFileList * l, KviSharedFile * o);
+private slots:
+ void cleanup();
+signals:
+ void sharedFilesChanged(); // emitted when the list is cleared at once
+ void sharedFileAdded(KviSharedFile * f);
+ void sharedFileRemoved(KviSharedFile * f);
+};
+
+
+/*
+class KviSharedFile
+{
+ KviSharedFile();
+ KviSharedFile(const KviStr &filePath,const KviStr &userMask);
+ ~KviSharedFile();
+protected:
+ KviStr m_szFilePath;
+ KviStr m_szVisibleName;
+ KviStr m_szMd5Sum;
+ KviStr m_szUserMask;
+ unsigned short int m_uWildCount;
+ unsigned short int m_uNonWildCount;
+
+ unsigned int m_uFileSize;
+ time_t m_tExpireTime;
+public:
+ void setFilePath(const KviStr &filePath);
+ void setUserMask(const KviStr &userMask);
+ void setVisibleName(const KviStr &visibleName);
+ void setMd5Sum(const KviStr &md5Sum);
+ void setFileSize(unsigned int uFileSize);
+ void setExpireTime(time_t expireTime);
+ void doNotExpire(){ setExpireTime((time_t)0); };
+
+ void computeMd5Sum();
+};
+*/
+
+#endif //_KVI_FILETRADER_H_
diff --git a/src/kvilib/ext/kvi_stringconversion.cpp b/src/kvilib/ext/kvi_stringconversion.cpp
new file mode 100644
index 00000000..3d0255cc
--- /dev/null
+++ b/src/kvilib/ext/kvi_stringconversion.cpp
@@ -0,0 +1,277 @@
+//=============================================================================
+//
+// File : kvi_stringconversion.cpp
+// Creation date : Thu Oct 20 2000 14:12:21 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+
+#define _KVI_STRINGCONVERSION_CPP_
+#include "kvi_stringconversion.h"
+
+#include "kvi_qstring.h"
+#include <stdio.h>
+
+QString g_szGlobalDir;
+QString g_szLocalDir;
+
+namespace KviStringConversion
+{
+
+ void init(const QString& szGlobalDir,const QString& szLocalDir)
+ {
+ g_szGlobalDir=szGlobalDir;
+ g_szLocalDir=szLocalDir;
+ }
+
+ void encodePath(QString& buffer)
+ {
+ if(!buffer.isEmpty())
+ {
+ if(!g_szLocalDir.isEmpty())
+ {
+ if(KviQString::find(buffer,g_szLocalDir)==0)
+ {
+ buffer.remove(0,g_szLocalDir.length());
+ buffer.prepend("local://");
+ }
+ }
+ if(!g_szGlobalDir.isEmpty())
+ {
+ if(KviQString::find(buffer,g_szGlobalDir)==0)
+ {
+ buffer.remove(0,g_szGlobalDir.length());
+ buffer.prepend("global://");
+ }
+ }
+ }
+ }
+
+ void decodePath(QString& buffer)
+ {
+ if(!buffer.isEmpty())
+ {
+ if(!g_szLocalDir.isEmpty())
+ {
+ if(KviQString::find(buffer,"local://")==0)
+ {
+ buffer.remove(0,8);
+ buffer.prepend(g_szLocalDir);
+ }
+ }
+ if(!g_szGlobalDir.isEmpty())
+ {
+ if(KviQString::find(buffer,"global://")==0)
+ {
+ buffer.remove(0,9);
+ buffer.prepend(g_szGlobalDir);
+ }
+ }
+ }
+ }
+
+ void encodePath(QStringList& buffer)
+ {
+ for ( QStringList::Iterator it = buffer.begin(); it != buffer.end(); ++it )
+ {
+ encodePath(*it);
+ }
+ }
+
+ void decodePath(QStringList& buffer)
+ {
+ for ( QStringList::Iterator it = buffer.begin(); it != buffer.end(); ++it )
+ {
+ decodePath(*it);
+ }
+ }
+
+ void toString(const bool bValue,QString &buffer)
+ {
+ buffer = bValue ? '1' : '0';
+ }
+
+ bool fromString(const QString & szValue,bool &buffer)
+ {
+ if(szValue.isEmpty())buffer = false;
+ else buffer = !((KviQString::equalCS(szValue,"0")) || (KviQString::equalCI(szValue,"false")));
+ return true;
+ }
+
+ void toString(const int iValue,QString &buffer)
+ {
+ buffer.setNum(iValue);
+ }
+
+ bool fromString(const QString &szValue,int &buffer)
+ {
+ bool bOk;
+ buffer = szValue.toInt(&bOk);
+ return bOk;
+ }
+
+ void toString(const unsigned int uValue,QString &buffer)
+ {
+ buffer.setNum(uValue);
+ }
+
+ bool fromString(const QString & szValue,unsigned int &buffer)
+ {
+ bool bOk;
+ buffer= szValue.toUInt(&bOk);
+ return bOk;
+ }
+
+ void toString(const QRect &rValue,QString &buffer)
+ {
+ buffer.sprintf("%d,%d,%d,%d",rValue.x(),rValue.y(),rValue.width(),rValue.height());
+ }
+
+ bool fromString(const QString & szValue,QRect &buffer)
+ {
+ KviQCString tmp = KviQString::toUtf8(szValue);
+ const char * c = tmp.data();
+ if(!c)return false;
+ int l,t,w,h;
+ if(sscanf(c,"%d,%d,%d,%d",&l,&t,&w,&h) != 4)return false;
+ buffer.setRect(l,t,w,h);
+ return true;
+ }
+
+ void toString(const QString &szValue,QString &buffer)
+ {
+ buffer = szValue;
+ }
+
+ bool fromString(const QString & szValue,QString &buffer)
+ {
+ buffer = szValue;
+ return true;
+ }
+
+ void toString(const KviPixmap &pValue,QString &buffer)
+ {
+ buffer=pValue.path();
+ encodePath(buffer);
+ }
+
+ bool fromString(const QString & szValue,KviPixmap &buffer)
+ {
+ QString szPath(szValue);
+ decodePath(szPath);
+ if(szPath.isEmpty()) {
+ buffer.setNull();
+ return true;
+ } else {
+ return buffer.load(szPath);
+ }
+ }
+
+ void toString(const KviMsgType &mValue,QString &buffer)
+ {
+ buffer.sprintf("%d,%u,%u,%d,%d",mValue.m_iPixId,mValue.m_cForeColor,mValue.m_cBackColor,mValue.m_bLogEnabled,mValue.m_iLevel);
+ }
+
+ bool fromString(const QString & szValue,KviMsgType &buffer)
+ {
+ int iId,iLog,iLevel;
+ unsigned int uFore,uBack;
+ KviQCString tmp = KviQString::toUtf8(szValue);
+ char * cx = tmp.data();
+ if(!cx)return false;
+ if(sscanf(cx,"%d,%u,%u,%d,%d",&iId,&uFore,&uBack,&iLog,&iLevel) != 5)return false;
+ buffer = KviMsgType(buffer.m_szType,iId,uFore,uBack,iLog,iLevel);
+ return true;
+ }
+
+ void toString(const QColor &cValue,QString &buffer)
+ {
+ buffer = cValue.name();
+ }
+
+ bool fromString(const QString & szValue,QColor &buffer)
+ {
+ buffer.setNamedColor(szValue); return true;
+ }
+
+ void toString(const QFont &fValue,QString &buffer)
+ {
+ QString family(fValue.family());
+ buffer.sprintf("%s,%d,%d,%d",KviQString::toUtf8(family).data(),fValue.pointSize(),fValue.styleHint(),fValue.weight());
+ QString options;
+ if(fValue.bold())options.append('b');
+ if(fValue.italic())options.append('i');
+ if(fValue.underline())options.append('u');
+ if(fValue.strikeOut())options.append('s');
+ if(fValue.fixedPitch())options.append('f');
+
+ if(!options.isEmpty())
+ {
+ buffer.append(',');
+ buffer.append(options);
+ }
+ }
+
+ bool fromString(const QString & szValue,QFont &buffer)
+ {
+ KviStr str = szValue;
+ KviStr family,pointSize,styleHint,weight,options;
+ str.getToken(family,',');
+ str.getToken(pointSize,',');
+ str.getToken(styleHint,',');
+ str.getToken(weight,',');
+ if(!family.isEmpty())buffer.setFamily(family.ptr());
+ int i;
+ bool bOk;
+ i = pointSize.toInt(&bOk);
+ if(bOk && (i > 0))buffer.setPointSize(i);
+ i = styleHint.toInt(&bOk);
+ if(bOk && (i >= 0))buffer.setStyleHint((QFont::StyleHint)i);
+ i = weight.toInt(&bOk);
+ if(bOk && (i >= 0))buffer.setWeight(i);
+ if(!str.isEmpty())
+ {
+ buffer.setBold(str.contains("b"));
+ buffer.setItalic(str.contains("i"));
+ buffer.setUnderline(str.contains("u"));
+ buffer.setStrikeOut(str.contains("s"));
+ buffer.setFixedPitch(str.contains("f"));
+ }
+ return true;
+ }
+
+ void toString(const QStringList &sValue,QString &buffer)
+ {
+ buffer = sValue.join(",");
+ }
+
+ bool fromString(const QString & szValue,QStringList &buffer)
+ {
+#ifdef COMPILE_USE_QT4
+ buffer = szValue.split(",");
+#else
+ buffer = QStringList::split(",",szValue);
+#endif
+ return true;
+ }
+
+}
diff --git a/src/kvilib/ext/kvi_stringconversion.h b/src/kvilib/ext/kvi_stringconversion.h
new file mode 100644
index 00000000..78f8d417
--- /dev/null
+++ b/src/kvilib/ext/kvi_stringconversion.h
@@ -0,0 +1,91 @@
+#ifndef _KVI_STRINGCONVERSION_H_
+#define _KVI_STRINGCONVERSION_H_
+
+//=============================================================================
+//
+// File : kvi_stringconversion.h
+// Creation date : Thu Oct 20 2000 13:27:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_string.h"
+#include "kvi_pixmap.h"
+#include "kvi_msgtype.h"
+
+#include <qrect.h>
+#include <qcolor.h>
+#include <qfont.h>
+#include <qstringlist.h>
+#include <qstring.h>
+
+
+namespace KviStringConversion
+{
+ extern KVILIB_API void init(const QString& szGlobalDir,const QString& szLocalDir);
+
+ extern KVILIB_API void encodePath(QString& buffer);
+ extern KVILIB_API void decodePath(QString& buffer);
+
+ extern KVILIB_API void encodePath(QStringList& buffer);
+ extern KVILIB_API void decodePath(QStringList& buffer);
+
+ // bool <->
+ extern KVILIB_API void toString(const bool bValue,QString &buffer);
+ extern KVILIB_API bool fromString(const QString &szValue,bool &buffer);
+
+ // int <-> QString
+ extern KVILIB_API void toString(const int iValue,QString &buffer);
+ extern KVILIB_API bool fromString(const QString &szValue,int &buffer);
+
+ // uint <-> QString
+ extern KVILIB_API void toString(const unsigned int uValue,QString &buffer);
+ extern KVILIB_API bool fromString(const QString &szValue,unsigned int &buffer);
+
+ // QRect <-> QString
+ extern KVILIB_API void toString(const QRect &rValue,QString &buffer);
+ extern KVILIB_API bool fromString(const QString &szValue,QRect &buffer);
+
+ // QString <-> QString (Null conversion)
+ extern KVILIB_API void toString(const QString &szValue,QString &buffer);
+ extern KVILIB_API bool fromString(const QString &szValue,QString &buffer);
+
+ // KviPixmap <-> QString
+ extern KVILIB_API void toString(const KviPixmap &pValue,QString &buffer);
+ extern KVILIB_API bool fromString(const QString &szValue,KviPixmap &buffer);
+
+ // QFont <-> QString
+ extern KVILIB_API void toString(const QFont &fValue,QString &buffer);
+ extern KVILIB_API bool fromString(const QString &szValue,QFont &buffer);
+
+ // KviMsgType <-> QString
+ extern KVILIB_API void toString(const KviMsgType &mValue,QString &buffer);
+ extern KVILIB_API bool fromString(const QString &szValue,KviMsgType &buffer);
+
+ // QColor <-> QString
+ extern KVILIB_API void toString(const QColor &cValue,QString &buffer);
+ extern KVILIB_API bool fromString(const QString &szValue,QColor &buffer);
+
+ // QStringList <-> QString
+ extern KVILIB_API void toString(const QStringList &sValue,QString &buffer);
+ extern KVILIB_API bool fromString(const QString &szValue,QStringList &buffer);
+};
+
+#endif //!_KVI_STRINGCONVERSION_H_
diff --git a/src/kvilib/ext/kvi_xlib.h b/src/kvilib/ext/kvi_xlib.h
new file mode 100644
index 00000000..ef6ca177
--- /dev/null
+++ b/src/kvilib/ext/kvi_xlib.h
@@ -0,0 +1,45 @@
+#ifndef _KVI_XLIB_H_
+#define _KVI_XLIB_H_
+//=============================================================================
+//
+// File : kvi_xlib.h
+// Creation date : Tue Aug 14 18:17:21 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#ifndef COMPILE_NO_X
+
+ #ifdef Bool
+ // Someone has defined Bool ?
+ #undef Bool
+ #endif
+
+ #include <X11/Xlib.h>
+
+ // Too bad that X11/Xlib.h defines Bool, Error and Success... this basically
+ // SUX since we can't use them anywhere in the source!
+ // this breaks, enums in Qt, enums in KVIrc and other stuff all around...
+ // Shame on you Xlib.h author :D
+
+#endif // !COMPILE_NO_X
+
+#endif //_KVI_XLIB_H_
diff --git a/src/kvilib/ext/moc_kvi_crypt.cpp b/src/kvilib/ext/moc_kvi_crypt.cpp
new file mode 100644
index 00000000..89c29d46
--- /dev/null
+++ b/src/kvilib/ext/moc_kvi_crypt.cpp
@@ -0,0 +1,94 @@
+/****************************************************************************
+** KviCryptEngine meta object code from reading C++ file 'kvi_crypt.h'
+**
+** Created: Sun Mar 23 20:56:10 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_crypt.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviCryptEngine::className() const
+{
+ return "KviCryptEngine";
+}
+
+QMetaObject *KviCryptEngine::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviCryptEngine( "KviCryptEngine", &KviCryptEngine::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviCryptEngine::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviCryptEngine", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviCryptEngine::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviCryptEngine", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviCryptEngine::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QObject::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviCryptEngine", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviCryptEngine.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviCryptEngine::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviCryptEngine" ) )
+ return this;
+ if ( !qstrcmp( clname, "KviHeapObject" ) )
+ return (KviHeapObject*)this;
+ return QObject::qt_cast( clname );
+}
+
+bool KviCryptEngine::qt_invoke( int _id, QUObject* _o )
+{
+ return QObject::qt_invoke(_id,_o);
+}
+
+bool KviCryptEngine::qt_emit( int _id, QUObject* _o )
+{
+ return QObject::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviCryptEngine::qt_property( int id, int f, QVariant* v)
+{
+ return QObject::qt_property( id, f, v);
+}
+
+bool KviCryptEngine::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvilib/ext/moc_kvi_garbage.cpp b/src/kvilib/ext/moc_kvi_garbage.cpp
new file mode 100644
index 00000000..0c1a98ef
--- /dev/null
+++ b/src/kvilib/ext/moc_kvi_garbage.cpp
@@ -0,0 +1,104 @@
+/****************************************************************************
+** KviGarbageCollector meta object code from reading C++ file 'kvi_garbage.h'
+**
+** Created: Sun Mar 23 20:56:12 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_garbage.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviGarbageCollector::className() const
+{
+ return "KviGarbageCollector";
+}
+
+QMetaObject *KviGarbageCollector::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviGarbageCollector( "KviGarbageCollector", &KviGarbageCollector::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviGarbageCollector::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviGarbageCollector", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviGarbageCollector::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviGarbageCollector", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviGarbageCollector::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QObject::staticMetaObject();
+ static const QUMethod slot_0 = {"cleanup", 0, 0 };
+ static const QUMethod slot_1 = {"garbageSuicide", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "cleanup()", &slot_0, QMetaData::Protected },
+ { "garbageSuicide()", &slot_1, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviGarbageCollector", parentObject,
+ slot_tbl, 2,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviGarbageCollector.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviGarbageCollector::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviGarbageCollector" ) )
+ return this;
+ return QObject::qt_cast( clname );
+}
+
+bool KviGarbageCollector::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: cleanup(); break;
+ case 1: garbageSuicide(); break;
+ default:
+ return QObject::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviGarbageCollector::qt_emit( int _id, QUObject* _o )
+{
+ return QObject::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviGarbageCollector::qt_property( int id, int f, QVariant* v)
+{
+ return QObject::qt_property( id, f, v);
+}
+
+bool KviGarbageCollector::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvilib/ext/moc_kvi_regusersdb.cpp b/src/kvilib/ext/moc_kvi_regusersdb.cpp
new file mode 100644
index 00000000..092add9f
--- /dev/null
+++ b/src/kvilib/ext/moc_kvi_regusersdb.cpp
@@ -0,0 +1,143 @@
+/****************************************************************************
+** KviRegisteredUserDataBase meta object code from reading C++ file 'kvi_regusersdb.h'
+**
+** Created: Sun Mar 23 20:56:14 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_regusersdb.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviRegisteredUserDataBase::className() const
+{
+ return "KviRegisteredUserDataBase";
+}
+
+QMetaObject *KviRegisteredUserDataBase::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviRegisteredUserDataBase( "KviRegisteredUserDataBase", &KviRegisteredUserDataBase::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviRegisteredUserDataBase::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviRegisteredUserDataBase", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviRegisteredUserDataBase::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviRegisteredUserDataBase", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviRegisteredUserDataBase::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QObject::staticMetaObject();
+ static const QUParameter param_signal_0[] = {
+ { 0, &static_QUType_QString, 0, QUParameter::In }
+ };
+ static const QUMethod signal_0 = {"userRemoved", 1, param_signal_0 };
+ static const QUParameter param_signal_1[] = {
+ { 0, &static_QUType_QString, 0, QUParameter::In }
+ };
+ static const QUMethod signal_1 = {"userChanged", 1, param_signal_1 };
+ static const QUParameter param_signal_2[] = {
+ { 0, &static_QUType_QString, 0, QUParameter::In }
+ };
+ static const QUMethod signal_2 = {"userAdded", 1, param_signal_2 };
+ static const QUMethod signal_3 = {"databaseCleared", 0, 0 };
+ static const QMetaData signal_tbl[] = {
+ { "userRemoved(const QString&)", &signal_0, QMetaData::Public },
+ { "userChanged(const QString&)", &signal_1, QMetaData::Public },
+ { "userAdded(const QString&)", &signal_2, QMetaData::Public },
+ { "databaseCleared()", &signal_3, QMetaData::Public }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviRegisteredUserDataBase", parentObject,
+ 0, 0,
+ signal_tbl, 4,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviRegisteredUserDataBase.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviRegisteredUserDataBase::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviRegisteredUserDataBase" ) )
+ return this;
+ return QObject::qt_cast( clname );
+}
+
+// SIGNAL userRemoved
+void KviRegisteredUserDataBase::userRemoved( const QString& t0 )
+{
+ activate_signal( staticMetaObject()->signalOffset() + 0, t0 );
+}
+
+// SIGNAL userChanged
+void KviRegisteredUserDataBase::userChanged( const QString& t0 )
+{
+ activate_signal( staticMetaObject()->signalOffset() + 1, t0 );
+}
+
+// SIGNAL userAdded
+void KviRegisteredUserDataBase::userAdded( const QString& t0 )
+{
+ activate_signal( staticMetaObject()->signalOffset() + 2, t0 );
+}
+
+// SIGNAL databaseCleared
+void KviRegisteredUserDataBase::databaseCleared()
+{
+ activate_signal( staticMetaObject()->signalOffset() + 3 );
+}
+
+bool KviRegisteredUserDataBase::qt_invoke( int _id, QUObject* _o )
+{
+ return QObject::qt_invoke(_id,_o);
+}
+
+bool KviRegisteredUserDataBase::qt_emit( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->signalOffset() ) {
+ case 0: userRemoved((const QString&)static_QUType_QString.get(_o+1)); break;
+ case 1: userChanged((const QString&)static_QUType_QString.get(_o+1)); break;
+ case 2: userAdded((const QString&)static_QUType_QString.get(_o+1)); break;
+ case 3: databaseCleared(); break;
+ default:
+ return QObject::qt_emit(_id,_o);
+ }
+ return TRUE;
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviRegisteredUserDataBase::qt_property( int id, int f, QVariant* v)
+{
+ return QObject::qt_property( id, f, v);
+}
+
+bool KviRegisteredUserDataBase::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvilib/ext/moc_kvi_sharedfiles.cpp b/src/kvilib/ext/moc_kvi_sharedfiles.cpp
new file mode 100644
index 00000000..83ea82a4
--- /dev/null
+++ b/src/kvilib/ext/moc_kvi_sharedfiles.cpp
@@ -0,0 +1,157 @@
+/****************************************************************************
+** KviSharedFilesManager meta object code from reading C++ file 'kvi_sharedfiles.h'
+**
+** Created: Sun Mar 23 20:56:15 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_sharedfiles.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviSharedFilesManager::className() const
+{
+ return "KviSharedFilesManager";
+}
+
+QMetaObject *KviSharedFilesManager::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviSharedFilesManager( "KviSharedFilesManager", &KviSharedFilesManager::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviSharedFilesManager::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviSharedFilesManager", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviSharedFilesManager::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviSharedFilesManager", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviSharedFilesManager::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QObject::staticMetaObject();
+ static const QUMethod slot_0 = {"cleanup", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "cleanup()", &slot_0, QMetaData::Private }
+ };
+ static const QUMethod signal_0 = {"sharedFilesChanged", 0, 0 };
+ static const QUParameter param_signal_1[] = {
+ { "f", &static_QUType_ptr, "KviSharedFile", QUParameter::In }
+ };
+ static const QUMethod signal_1 = {"sharedFileAdded", 1, param_signal_1 };
+ static const QUParameter param_signal_2[] = {
+ { "f", &static_QUType_ptr, "KviSharedFile", QUParameter::In }
+ };
+ static const QUMethod signal_2 = {"sharedFileRemoved", 1, param_signal_2 };
+ static const QMetaData signal_tbl[] = {
+ { "sharedFilesChanged()", &signal_0, QMetaData::Private },
+ { "sharedFileAdded(KviSharedFile*)", &signal_1, QMetaData::Private },
+ { "sharedFileRemoved(KviSharedFile*)", &signal_2, QMetaData::Private }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviSharedFilesManager", parentObject,
+ slot_tbl, 1,
+ signal_tbl, 3,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviSharedFilesManager.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviSharedFilesManager::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviSharedFilesManager" ) )
+ return this;
+ return QObject::qt_cast( clname );
+}
+
+// SIGNAL sharedFilesChanged
+void KviSharedFilesManager::sharedFilesChanged()
+{
+ activate_signal( staticMetaObject()->signalOffset() + 0 );
+}
+
+#include <qobjectdefs.h>
+#include <qsignalslotimp.h>
+
+// SIGNAL sharedFileAdded
+void KviSharedFilesManager::sharedFileAdded( KviSharedFile* t0 )
+{
+ if ( signalsBlocked() )
+ return;
+ QConnectionList *clist = receivers( staticMetaObject()->signalOffset() + 1 );
+ if ( !clist )
+ return;
+ QUObject o[2];
+ static_QUType_ptr.set(o+1,t0);
+ activate_signal( clist, o );
+}
+
+// SIGNAL sharedFileRemoved
+void KviSharedFilesManager::sharedFileRemoved( KviSharedFile* t0 )
+{
+ if ( signalsBlocked() )
+ return;
+ QConnectionList *clist = receivers( staticMetaObject()->signalOffset() + 2 );
+ if ( !clist )
+ return;
+ QUObject o[2];
+ static_QUType_ptr.set(o+1,t0);
+ activate_signal( clist, o );
+}
+
+bool KviSharedFilesManager::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: cleanup(); break;
+ default:
+ return QObject::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviSharedFilesManager::qt_emit( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->signalOffset() ) {
+ case 0: sharedFilesChanged(); break;
+ case 1: sharedFileAdded((KviSharedFile*)static_QUType_ptr.get(_o+1)); break;
+ case 2: sharedFileRemoved((KviSharedFile*)static_QUType_ptr.get(_o+1)); break;
+ default:
+ return QObject::qt_emit(_id,_o);
+ }
+ return TRUE;
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviSharedFilesManager::qt_property( int id, int f, QVariant* v)
+{
+ return QObject::qt_property( id, f, v);
+}
+
+bool KviSharedFilesManager::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvilib/file/Makefile.am b/src/kvilib/file/Makefile.am
new file mode 100644
index 00000000..c84487eb
--- /dev/null
+++ b/src/kvilib/file/Makefile.am
@@ -0,0 +1,5 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+EXTRA_DIST = *.cpp *.h
diff --git a/src/kvilib/file/kvi_file.cpp b/src/kvilib/file/kvi_file.cpp
new file mode 100644
index 00000000..8ab1e739
--- /dev/null
+++ b/src/kvilib/file/kvi_file.cpp
@@ -0,0 +1,256 @@
+//=============================================================================
+//
+// File : kvi_file.cpp
+// Creation date : Mon Dec 17 2001 00:04:12 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+
+#include "kvi_file.h"
+#include "kvi_byteorder.h"
+
+
+KviFile::KviFile()
+: QFile()
+{
+}
+
+KviFile::KviFile(const QString &name)
+: QFile(name)
+{
+}
+
+KviFile::~KviFile()
+{
+}
+
+bool KviFile::openForReading()
+{
+#ifdef COMPILE_USE_QT4
+ return open(QFile::ReadOnly);
+#else
+ return open(IO_ReadOnly);
+#endif
+}
+
+bool KviFile::openForWriting(bool bAppend)
+{
+#ifdef COMPILE_USE_QT4
+ return open(QFile::WriteOnly | (bAppend ? QFile::Append : QFile::Truncate));
+#else
+ return open(IO_WriteOnly | (bAppend ? IO_Append : IO_Truncate));
+#endif
+}
+
+
+bool KviFile::save(const QByteArray &bData)
+{
+ if(!save((kvi_u32_t)(bData.size())))return false;
+ return (writeBlock(bData.data(),bData.size()) == ((int)(bData.size())));
+}
+
+bool KviFile::load(QByteArray &bData)
+{
+ kvi_u32_t iLen;
+ if(!load(iLen))return false;
+ bData.resize(iLen); // it is automatically null terminated in Qt 4.x... BLEAH :D
+ if(readBlock((char *)(bData.data()),iLen) != iLen)return false;
+ return true;
+}
+
+#ifndef COMPILE_USE_QT4
+
+bool KviFile::save(const KviQCString &szData)
+{
+ if(!save((kvi_u32_t)(szData.length())))return false;
+ return (writeBlock(szData.data(),szData.length()) == ((int)(szData.length())));
+}
+
+bool KviFile::load(KviQCString &szData)
+{
+ kvi_u32_t iLen;
+ if(!load(iLen))return false;
+ szData.resize(iLen + 1); // this would allocate one extra byte with Qt 4.x...
+ if(readBlock((char *)(szData.data()),iLen) != iLen)return false;
+ *(szData.data() + iLen) = 0;
+ return true;
+}
+
+#endif
+
+
+bool KviFile::save(const QString &szData)
+{
+ KviQCString c = KviQString::toUtf8(szData);
+ if(!save((kvi_u32_t)(c.length())))return false;
+ return (writeBlock(c.data(),c.length()) == ((int)(c.length())));
+}
+
+bool KviFile::load(QString &szData)
+{
+ kvi_u32_t iLen;
+ if(!load(iLen))return false;
+ KviQCString tmp;
+ tmp.resize(iLen + 1);
+ if(readBlock((char *)(tmp.data()),iLen) != iLen)return false;
+ *(tmp.data() + iLen) = 0;
+ szData = QString::fromUtf8(tmp.data());
+ return true;
+}
+
+bool KviFile::save(const KviStr &szData)
+{
+ if(!save((kvi_u32_t)(szData.len())))return false;
+ return (writeBlock(szData.ptr(),szData.len()) == (int) szData.len());
+}
+
+bool KviFile::load(KviStr &szData)
+{
+ kvi_u32_t iLen;
+ if(!load(iLen))return false;
+ szData.setLength(iLen);
+ return (readBlock((char *)(szData.ptr()),iLen) == iLen);
+}
+
+bool KviFile::save(kvi_u32_t t)
+{
+#ifndef LOCAL_CPU_LITTLE_ENDIAN
+ t = kvi_localCpuToLittleEndian32(t);
+#endif
+ return (writeBlock((const char *)(&t),sizeof(kvi_u32_t)) == sizeof(kvi_u32_t));
+}
+
+bool KviFile::load(kvi_u32_t &t)
+{
+ if(!(readBlock((char *)(&t),sizeof(kvi_u32_t)) == sizeof(kvi_u32_t)))return false;
+#ifndef LOCAL_CPU_LITTLE_ENDIAN
+ t = kvi_littleEndianToLocalCpu32(t);
+#endif
+ return true;
+}
+
+bool KviFile::save(kvi_u64_t t)
+{
+#ifndef LOCAL_CPU_LITTLE_ENDIAN
+ t = kvi_localCpuToLittleEndian64(t);
+#endif
+ return (writeBlock((const char *)(&t),sizeof(kvi_u64_t)) == sizeof(kvi_u64_t));
+}
+
+bool KviFile::load(kvi_u64_t &t)
+{
+ if(!(readBlock((char *)(&t),sizeof(kvi_u32_t)) == sizeof(kvi_u32_t)))return false;
+#ifndef LOCAL_CPU_LITTLE_ENDIAN
+ t = kvi_littleEndianToLocalCpu32(t);
+#endif
+ return true;
+}
+
+
+bool KviFile::save(kvi_u16_t t)
+{
+#ifndef LOCAL_CPU_LITTLE_ENDIAN
+ t = kvi_localCpuToLittleEndian16(t);
+#endif
+ return (writeBlock((const char *)(&t),sizeof(kvi_u16_t)) == sizeof(kvi_u16_t));
+}
+
+bool KviFile::load(kvi_u16_t &t)
+{
+ if(!(readBlock((char *)(&t),sizeof(kvi_u16_t)) == sizeof(kvi_u16_t)))return false;
+#ifndef LOCAL_CPU_LITTLE_ENDIAN
+ t = kvi_littleEndianToLocalCpu16(t);
+#endif
+ return true;
+}
+
+bool KviFile::save(kvi_u8_t t)
+{
+ return (writeBlock((const char *)(&t),sizeof(kvi_u8_t)) == sizeof(kvi_u8_t));
+}
+
+bool KviFile::load(kvi_u8_t &t)
+{
+ return (readBlock((char *)(&t),sizeof(kvi_u8_t)) == sizeof(kvi_u8_t));
+}
+
+
+bool KviFile::save(KviPointerList<KviStr> * pData)
+{
+ if(!save((int)(pData->count())))return false;
+ for(KviStr * s = pData->first();s;s = pData->next())
+ {
+ if(!save(*s))return false;
+ }
+ return true;
+}
+
+bool KviFile::load(KviPointerList<KviStr> * pData)
+{
+ pData->clear();
+ int iCount;
+ if(!load(iCount))return false;
+ for(int i=0;i<iCount;i++)
+ {
+ KviStr * s = new KviStr();
+ if(!load(*s))
+ {
+ delete s;
+ s = 0;
+ return false;
+ }
+ pData->append(s);
+ }
+ return true;
+}
+
+bool KviFile::skipFirst(char t,unsigned int maxdist)
+{
+ while(maxdist > 0)
+ {
+ char c;
+ if(!getChar(&c))return false;
+ if(((char)c) == t)return true;
+ maxdist--;
+ }
+ return false;
+}
+
+bool KviFile::skipFirst(const KviStr &t,unsigned int maxdist)
+{
+ char * ptr = t.ptr();
+ while(maxdist > 0)
+ {
+ char c;
+ if(!getChar(&c))return false;
+ if(c == *ptr)
+ {
+ ptr++;
+ if(!*ptr)return true;
+ } else {
+ ptr = t.ptr();
+ }
+ maxdist--;
+ }
+ return false;
+}
+
diff --git a/src/kvilib/file/kvi_file.h b/src/kvilib/file/kvi_file.h
new file mode 100644
index 00000000..188a9dad
--- /dev/null
+++ b/src/kvilib/file/kvi_file.h
@@ -0,0 +1,120 @@
+#ifndef _KVI_FILE_H_
+#define _KVI_FILE_H_
+
+//=============================================================================
+//
+// File : kvi_file.h
+// Creation date : Mon Dec 17 2001 00:05:04 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_heapobject.h"
+#include "kvi_qstring.h"
+#include "kvi_string.h"
+#include "kvi_pointerlist.h"
+#include "kvi_inttypes.h"
+#include "kvi_qcstring.h"
+
+#include <qfile.h>
+#include <time.h>
+
+#ifdef COMPILE_USE_QT4
+ #define kvi_file_offset_t qlonglong
+#else
+ #define kvi_file_offset_t QFile::Offset
+#endif
+
+
+class KVILIB_API KviFile : public QFile, public KviHeapObject
+{
+public:
+ KviFile();
+ KviFile(const QString &name);
+ ~KviFile();
+public:
+ // Wrappers portable across Qt 3.x and Qt 4.x
+ bool openForReading();
+ bool openForWriting(bool bAppend = false);
+
+#ifndef COMPILE_USE_QT4
+ // Functions present in Qt 4.x but not Qt 3.x
+ bool putChar(char c){ return putch(c) != -1; };
+ bool ungetChar(char c){ return ungetch(c) != -1; };
+ bool getChar(char * c){ *c = getch(); return *c != -1; };
+ bool seek(kvi_file_offset_t o){ return at(o); };
+ kvi_file_offset_t pos(){ return at(); };
+#endif
+
+#ifdef COMPILE_USE_QT4
+ // Missing functions in Qt 4.x
+ quint64 writeBlock(const char * data,quint64 uLen){ return write(data,uLen); };
+ quint64 readBlock(char * data,quint64 uLen){ return read(data,uLen); };
+#endif
+
+ // This stuff loads and saves LITTLE ENDIAN DATA!
+ bool save(kvi_u64_t t);
+ bool load(kvi_u64_t &t);
+
+ bool save(kvi_i64_t t){ return save((kvi_u64_t)t); };
+ bool load(kvi_i64_t &t){ return load((kvi_u64_t &)t); };
+
+ bool save(kvi_u32_t t);
+ bool load(kvi_u32_t &t);
+
+ bool save(kvi_i32_t t){ return save((kvi_u32_t)t); };
+ bool load(kvi_i32_t &t){ return load((kvi_u32_t &)t); };
+
+ bool save(kvi_u16_t t);
+ bool load(kvi_u16_t &t);
+
+ bool save(kvi_i16_t t){ return save((kvi_u16_t)t); };
+ bool load(kvi_i16_t &t){ return load((kvi_u16_t &)t); };
+
+ bool save(kvi_u8_t t);
+ bool load(kvi_u8_t &t);
+
+ bool save(kvi_i8_t t){ return save((kvi_u8_t)t); };
+ bool load(kvi_i8_t &t){ return load((kvi_u8_t &)t); };;
+
+ bool save(const KviStr &szData);
+ bool load(KviStr &szData);
+
+#ifndef COMPILE_USE_QT4
+ // Under Qt 4.x these collide with QByteArray
+ bool save(const KviQCString &szData);
+ bool load(KviQCString &szData);
+#endif
+
+ bool save(const QByteArray &bData);
+ bool load(QByteArray &bData);
+
+ bool save(const QString &szData);
+ bool load(QString &szData);
+
+ bool skipFirst(char t,unsigned int maxdist = 0xffffffff);
+ bool skipFirst(const KviStr &t,unsigned int maxdist = 0xffffffff);
+
+ bool save(KviPointerList<KviStr> * pData);
+ bool load(KviPointerList<KviStr> * pData);
+};
+
+
+#endif //_KVI_FILE_H_
diff --git a/src/kvilib/file/kvi_fileutils.cpp b/src/kvilib/file/kvi_fileutils.cpp
new file mode 100644
index 00000000..648d9125
--- /dev/null
+++ b/src/kvilib/file/kvi_fileutils.cpp
@@ -0,0 +1,505 @@
+//=============================================================================
+//
+// File : kvi_fileutils.cpp
+// Creation date : Fri Dec 25 1998 18:26:48 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1998-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+
+#define _KVI_FILEUTLIS_CPP_
+#include "kvi_fileutils.h"
+#include "kvi_qstring.h"
+#include "kvi_file.h"
+#include "kvi_malloc.h"
+
+#include <qdir.h>
+#include <qfileinfo.h>
+#include <qglobal.h>
+#include <qtextcodec.h>
+#include <qtextstream.h>
+
+
+namespace KviFileUtils
+{
+ /*
+ WORKING CODE BUT UNUSED FOR NOW
+ bool readLine(QFile * f,QString &szBuffer,bool bClearBuffer)
+ {
+ // FIXME: Should this assume UTF8 encoding ?
+ char tmp_buf[256];
+ int cur_len = 0;
+ //char *cur_ptr = tmp_buf;
+ if(bClearBuffer)szBuffer = "";
+ int ch = f->getch();
+
+ while((ch != -1)&&(ch != '\n')&&(ch != 0))
+ {
+ tmp_buf[cur_len] = ch;
+ cur_len++;
+ if(cur_len > 255)
+ {
+ if(tmp_buf[255] == '\r')cur_len--; //Ignore CR...
+ int lastlen = szBuffer.length();
+ szBuffer.setLength(lastlen + cur_len);
+ QChar *p1 = szBuffer.unicode() + lastlen;
+ char * p2 = tmp_buf;
+ for(int i=0;i<cur_len;i++)*p1++ = *p2++;
+ cur_len = 0;
+ }
+ ch = f->getch();
+ }
+ if(ch == 0)
+ {
+ debug("Warning : %s is not an ascii file",f->name().latin1());
+ }
+ if(cur_len > 0)
+ {
+ if(tmp_buf[cur_len - 1] == '\r')cur_len--; //Ignore CR...
+ int lastlen = szBuffer.length();
+ szBuffer.setLength(lastlen + cur_len);
+ QChar *p1 = szBuffer.unicode() + lastlen;
+ char * p2 = tmp_buf;
+ for(int i=0;i<cur_len;i++)*p1++ = *p2++;
+ }
+ return (ch == '\n'); //more data to read else a broken file or EOF
+ }
+
+ bool loadFileStripCR(const QString &szPath,QString &szBuffer)
+ {
+ QFile f(szPath);
+ if(!f.open(IO_ReadOnly))return false;
+ szBuffer = "";
+ while(readLine(&f,szBuffer,false))
+ {
+ szBuffer.append('\n'); // readLine returned true...last char was a newline
+ }
+ // readLine returned false , no ending newline encountered
+ return true;
+ }
+ */
+
+ bool makeDir(const QString &szPath)
+ {
+ QDir d;
+ QString dir = KviQString::trimmed(szPath);
+ adjustFilePath(dir);
+ QString createdDir;
+
+#ifdef COMPILE_ON_WINDOWS
+#ifdef COMPILE_USE_QT4
+ int idx = dir.indexOf(':');
+#else
+ int idx = dir.find(':');
+#endif
+ if(idx == 1)
+ {
+ createdDir = dir.left(2);
+ dir.remove(0,2);
+ }
+#endif
+
+ KviQString::stripLeft(dir,KVI_PATH_SEPARATOR_CHAR);
+ while(!dir.isEmpty())
+ {
+ createdDir += KVI_PATH_SEPARATOR;
+ createdDir += KviQString::getToken(dir,KVI_PATH_SEPARATOR_CHAR);
+ if(!directoryExists(createdDir))
+ {
+ if(!d.mkdir(createdDir))
+ {
+ debug("Can't create directory %s",KviQString::toUtf8(createdDir).data());
+ return false;
+ }
+ }
+ KviQString::stripLeft(dir,KVI_PATH_SEPARATOR_CHAR);
+ }
+ return true;
+ }
+
+ bool makeDir(const char* path)
+ {
+ QString szPath=QString::fromUtf8(path);
+ return makeDir(szPath);
+ }
+
+ bool renameFile(const QString &szSrc,const QString &szDst)
+ {
+ QDir d;
+ return d.rename(szSrc,szDst);
+ }
+
+ bool renameFile(const char* path,const char* path2)
+ {
+ QString szPath=QString::fromUtf8(path);
+ QString szPath2=QString::fromUtf8(path2);
+ return renameFile(szPath,szPath2);
+ }
+
+ bool copyFile(const QString &szSrc,const QString &szDst)
+ {
+ KviFile f1(szSrc);
+ if(!f1.openForReading())return false;
+ KviFile f2(szDst);
+ if(!f2.openForWriting())
+ {
+ f1.close();
+ return false;
+ }
+ char buffer[1024];
+ while(!f1.atEnd())
+ {
+ int len = f1.readBlock(buffer,1024);
+ if(len <= 0)
+ {
+ f1.close();
+ f2.close();
+ return false; //"serious error"
+ }
+ f2.writeBlock(buffer,len);
+ }
+ f1.close();
+ f2.close();
+ return true;
+ }
+
+ bool copyFile(const char* path,const char* path2)
+ {
+ QString szPath=QString::fromUtf8(path);
+ QString szPath2=QString::fromUtf8(path2);
+ return copyFile(szPath,szPath2);
+ }
+
+ bool loadFile(const QString &szPath,QString &szBuffer,bool bUtf8)
+ {
+ KviFile f(szPath);
+ if(!f.openForReading())return false;
+ if(bUtf8)
+ {
+ QByteArray ba = f.readAll();
+ szBuffer = QString::fromUtf8(ba.data(),ba.size());
+ //debug("BUFFERLEN: %d",szBuffer.length());
+ } else {
+ szBuffer = QString(f.readAll());
+ }
+ return true;
+ }
+
+ bool loadFile(const char* path,QString &szBuffer,bool bUtf8)
+ {
+ QString szPath=QString::fromUtf8(path);
+ return loadFile(szPath,szBuffer,bUtf8);
+ }
+
+ void adjustFilePath(QString &szPath)
+ {
+#ifdef COMPILE_ON_WINDOWS
+ szPath.replace('/',"\\");
+#ifdef COMPILE_USE_QT4
+ szPath.replace("\\\\","\\");
+#else
+ while(szPath.find("\\\\") != -1)szPath.replace("\\\\","\\");
+#endif
+ // FIXME: Use the default drive here ?
+ if(szPath.startsWith("\\"))szPath.prepend("C:");
+#else
+ szPath.replace('\\',"/");
+#ifdef COMPILE_USE_QT4
+ szPath.replace("//","/");
+#else
+ while(KviQString::find(szPath,"//") != -1)szPath.replace("//","/");
+#endif
+ // deal with windows paths
+ if((szPath.length() > 2) && (szPath.at(0) != QChar('/')))
+ {
+ if((szPath.at(1) == QChar(':')) && (szPath.at(2) == QChar('/')))
+ {
+ szPath.remove(0,2);
+ }
+ }
+#ifdef COMPILE_USE_QT4
+ szPath=QDir::cleanPath(szPath);
+#else
+ szPath=QDir::cleanDirPath(szPath);
+#endif
+#endif
+
+ }
+
+ bool directoryExists(const QString &szPath)
+ {
+ QFileInfo f(szPath);
+ return (f.exists() && f.isDir());
+ }
+
+ bool directoryExists(const char* path)
+ {
+ QString szPath=QString::fromUtf8(path);
+ QFileInfo f(szPath);
+ return (f.exists() && f.isDir());
+ }
+
+ bool fileExists(const QString &szPath)
+ {
+ QFileInfo f(szPath);
+ return (f.exists() && f.isFile());
+ }
+
+ bool fileExists(const char* path)
+ {
+ QString szPath=QString::fromUtf8(path);
+ return fileExists(szPath);
+ }
+
+ bool removeFile(const QString &szPath)
+ {
+ QDir d;
+ return d.remove(szPath);
+ }
+
+ bool removeFile(const char* path)
+ {
+ QString szPath=QString::fromUtf8(path);
+ return removeFile(szPath);
+ }
+
+ bool removeDir(const QString &szPath)
+ {
+ QDir d;
+ return d.rmdir(szPath);
+ }
+
+ bool removeDir(const char* path)
+ {
+ QString szPath=QString::fromUtf8(path);
+ return removeDir(szPath);
+ }
+
+ bool deleteDir(const QString &szPath)
+ {
+ QDir d(szPath);
+ QStringList sl = d.entryList(QDir::Dirs);
+ QStringList::Iterator it;
+ for(it=sl.begin();it != sl.end();it++)
+ {
+ QString szSubdir = *it;
+ if(!(KviQString::equalCS(szSubdir,"..") || KviQString::equalCS(szSubdir,".")))
+ {
+ QString szSubPath = szPath;
+ KviQString::ensureLastCharIs(szSubPath,QChar(KVI_PATH_SEPARATOR_CHAR));
+ szSubPath += szSubdir;
+ if(!KviFileUtils::deleteDir(szSubPath))
+ return false;
+ }
+ }
+
+ sl = d.entryList(QDir::Files);
+ for(it=sl.begin();it != sl.end();it++)
+ {
+ QString szFilePath = szPath;
+ KviQString::ensureLastCharIs(szFilePath,QChar(KVI_PATH_SEPARATOR_CHAR));
+ szFilePath += *it;
+ if(!KviFileUtils::removeFile(szFilePath))
+ return false;
+ }
+
+ return KviFileUtils::removeDir(szPath);
+ }
+
+ bool writeFile(const QString &szPath,const QString &szData,bool bAppend)
+ {
+ KviFile f(szPath);
+ if(!f.openForWriting(bAppend))return false;
+ KviQCString szTmp = KviQString::toUtf8(szData);
+ if(!szTmp.data())return true;
+ if(f.writeBlock(szTmp.data(),szTmp.length()) != ((int)(szTmp.length())))return false;
+ return true;
+ }
+
+ bool writeFile(const char* path,const QString &szData,bool bAppend)
+ {
+ QString szPath=QString::fromUtf8(path);
+ return writeFile(szPath,szData,bAppend);
+ }
+
+ bool writeFileLocal8Bit(const QString &szPath,const QString &szData,bool bAppend)
+ {
+ KviFile f(szPath);
+ if(!f.openForWriting(bAppend))return false;
+ KviQCString szTmp = QTextCodec::codecForLocale()->fromUnicode(szData);
+ if(!szTmp.data())return true;
+ if(f.writeBlock(szTmp.data(),szTmp.length()) != ((int)(szTmp.length())))return false;
+ return true;
+ }
+
+ bool writeFileLocal8Bit(const char* path,const QString &szData,bool bAppend)
+ {
+ QString szPath=QString::fromUtf8(path);
+ return writeFileLocal8Bit(szPath,szData,bAppend);
+ }
+
+ bool readFile(const QString &szPath,QString &szBuffer,unsigned int uMaxSize)
+ {
+ KviFile f(szPath);
+ if(!f.openForReading())return false;
+ if(f.size() < 1)
+ {
+ szBuffer = "";
+ f.close();
+ return true;
+ }
+ if(f.size() > uMaxSize)return false;
+ char * buf = new char[f.size() + 1];
+ if(f.readBlock(buf,f.size()) != ((long int)f.size()))
+ {
+ delete buf;
+ buf = 0;
+ return false;
+ }
+ buf[f.size()] = '\0';
+ szBuffer = QString::fromUtf8(buf);
+ delete[] buf;
+ return true;
+ }
+
+ bool readFile(const char* path,QString &szBuffer,unsigned int uMaxSize)
+ {
+ QString szPath=QString::fromUtf8(path);
+ return readFile(szPath,szBuffer,uMaxSize);
+ }
+
+
+ QString extractFileName(const QString &szFileNameWithPath)
+ {
+ return QFileInfo(szFileNameWithPath).fileName();
+ }
+
+ QString extractFilePath(const QString &szFileNameWithPath)
+ {
+ return QFileInfo(szFileNameWithPath).dirPath(true);
+ }
+
+ bool readLine(QFile * f,QString &szBuffer,bool bUtf8)
+ {
+ QTextStream stream(f);
+ stream.setEncoding(bUtf8 ? QTextStream::UnicodeUTF8 : QTextStream::Locale);
+ szBuffer=stream.readLine();
+ return !szBuffer.isNull();
+ }
+
+ bool readLines(QFile * f,QStringList &buffer,int iStartLine, int iCount, bool bUtf8)
+ {
+ QTextStream stream( f );
+ stream.setEncoding(bUtf8 ? QTextStream::UnicodeUTF8 : QTextStream::Locale);
+ for(int i=0;i<iStartLine;i++)
+ stream.readLine();
+
+ if(iCount>0)
+ {
+ for(; (iCount>0 && !stream.atEnd()) ; iCount-- )
+ buffer.append(stream.readLine());
+ } else {
+ while(!stream.atEnd()) {
+ buffer.append(stream.readLine());
+ }
+ }
+ return buffer.count()!= 0;
+ }
+
+ bool isReadable(const QString &szFname)
+ {
+ QFileInfo f(szFname);
+ return (f.exists() && f.isFile() && f.isReadable());
+ }
+
+ bool isReadable(const char* path)
+ {
+ QString szPath=QString::fromUtf8(path);
+ return isReadable(szPath);
+ }
+
+ bool isAbsolutePath(const QString &szPath)
+ {
+ QFileInfo f(szPath);
+ return !f.isRelative();
+ }
+};
+
+static char hexchars[16] = { '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , 'A' , 'B' , 'C' , 'D' , 'E' , 'F' };
+
+
+void kvi_encodeFileName(KviStr & path)
+{
+ QString szPath(path.ptr());
+ kvi_encodeFileName(szPath);
+ path=szPath;
+}
+
+void kvi_encodeFileName(QString & path)
+{
+ QString src(path);
+ path="";
+ for(int i=0;i<src.length();i++)
+ {
+ QChar cur=src[i];
+ if( ! (cur.isLetter() || cur.isDigit() || cur==' ' || cur=='_' || cur=='.' || cur=='#' || cur=='%') )
+ {
+ if(cur.row()!=0)
+ {
+ path+='%';
+ path+=hexchars[cur.row() >> 4];
+ path+=hexchars[cur.row() & 15];
+ }
+ path+='%';
+ path+=hexchars[cur.cell() >> 4];
+ path+=hexchars[cur.cell() & 15];
+ } else if (cur=='%')
+ {
+ path+="%%";
+ } else {
+ path+=cur;
+ }
+ }
+}
+
+//================ kvi_isAbsolutePath ===============//
+
+bool kvi_isAbsolutePath(const char *path)
+{
+ if(*path == '/')return true;
+ if(isalpha(*path))
+ {
+ if((*(path + 1)) == ':')return true;
+ }
+ return false;
+}
+
+//=================== kvi_readLine =====================//
+
+bool kvi_readLine(QFile *f,KviStr &str)
+{
+ QTextStream stream(f);
+ QString szBuff=stream.readLine();
+ str=szBuff;
+ return szBuff.isNull() ? 1 : 0;
+}
+
+
diff --git a/src/kvilib/file/kvi_fileutils.h b/src/kvilib/file/kvi_fileutils.h
new file mode 100644
index 00000000..dcead8ae
--- /dev/null
+++ b/src/kvilib/file/kvi_fileutils.h
@@ -0,0 +1,112 @@
+#ifndef _KVI_FILEUTILS_H_
+#define _KVI_FILEUTILS_H_
+
+//
+// File : kvi_fileutils.h
+// Creation date : Fri Dec 25 1998 18:27:04 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+#include "kvi_string.h"
+
+#include <qfile.h>
+#include <qstringlist.h>
+
+#include <time.h>
+
+
+#ifdef COMPILE_ON_WINDOWS
+ #define KVI_PATH_SEPARATOR "\\"
+ #define KVI_PATH_SEPARATOR_CHAR '\\'
+#else
+ #define KVI_PATH_SEPARATOR "/"
+ #define KVI_PATH_SEPARATOR_CHAR '/'
+#endif
+
+// #warning "Add kvi_trashFile(const char * path) ? - is it needed in the whole app"
+// #warning "or should it be availible only for dirbrowser module ?"
+namespace KviFileUtils
+{
+ //extern KVILIB_API bool readLine(QFile * f,QString &szBuffer,bool bClearBuffer = true);
+ //extern KVILIB_API bool loadFileStripCR(const QString &szPath,QString &szBuffer);
+
+ // loads the file at szPath to szBuffer eventually converting from utf8
+ extern KVILIB_API bool loadFile(const QString &szPath,QString &szBuffer,bool bUtf8 = true);
+ extern KVILIB_API bool loadFile(const char* szPath,QString &szBuffer,bool bUtf8 = true);
+ // adjusts the file path to the current platform
+ extern KVILIB_API void adjustFilePath(QString &szPath);
+ // returns true if szPath points to an existing directory
+ extern KVILIB_API bool directoryExists(const QString &szPath);
+ extern KVILIB_API bool directoryExists(const char* path);
+ // returns true if szPath points to an existing file
+ extern KVILIB_API bool fileExists(const QString &szPath);
+ extern KVILIB_API bool fileExists(const char* szPath);
+ // removes a file
+ extern KVILIB_API bool removeFile(const QString &szPath);
+ extern KVILIB_API bool removeFile(const char* path);
+ // removes a dir (must be empty)
+ extern KVILIB_API bool removeDir(const QString &szPath);
+ extern KVILIB_API bool removeDir(const char* path);
+ // removes a dir recursively
+ extern KVILIB_API bool deleteDir(const QString &szPath);
+ // writes a complete file (utf8 version)
+ extern KVILIB_API bool writeFile(const QString &szPath,const QString &szData,bool bAppend = false);
+ extern KVILIB_API bool writeFile(const char* path,const QString &szData,bool bAppend = false);
+ // writes a complete file (local 8 bit version)
+ extern KVILIB_API bool writeFileLocal8Bit(const QString &szPath,const QString &szData,bool bAppend = false);
+ extern KVILIB_API bool writeFileLocal8Bit(const char* path,const QString &szData,bool bAppend = false);
+ // reads a complete file and puts it in the string szBuffer, if the file is smaller than uMaxSize bytes
+ extern KVILIB_API bool readFile(const QString &szPath,QString &szBuffer,unsigned int uMaxSize = 65535);
+ extern KVILIB_API bool readFile(const char* path,QString &szBuffer,unsigned int uMaxSize = 65535);
+ // extracts the filename from a complete path (strips leading path)
+ extern KVILIB_API QString extractFileName(const QString &szFileNameWithPath);
+
+ extern KVILIB_API QString extractFilePath(const QString &szFileNameWithPath);
+ // cp -f
+ extern KVILIB_API bool copyFile(const QString &szSrc,const QString &szDst);
+ extern KVILIB_API bool copyFile(const char* src,const char* dst);
+ // mv
+ extern KVILIB_API bool renameFile(const QString &szSrc,const QString &szDst);
+ extern KVILIB_API bool renameFile(const char* src,const char* dst);
+ // mkdir
+ extern KVILIB_API bool makeDir(const QString &szPath);
+ extern KVILIB_API bool makeDir(const char* path);
+ // reads a text line, returns false if EOF is reached
+ extern KVILIB_API bool readLine(QFile * f,QString &szBuffer,bool bUtf8 = true);
+ extern KVILIB_API bool readLines(QFile * f,QStringList &buffer,int iStartLine = 0, int iCount = -1, bool bUtf8 = true);
+ extern KVILIB_API bool isReadable(const QString &szFname);
+ extern KVILIB_API bool isAbsolutePath(const QString &szPath);
+};
+
+// ALL THIS STUFF BELOW SHOULD DIE: IF YOU SEE IT, REPLACE WITH THE FUNCTIONS IN THE NAMESPACE ABOVE
+
+// Returns true if the path begins with '/'
+KVILIB_API extern bool kvi_isAbsolutePath(const char *path);
+// Translates ANY string into a valid filename (with no path!)
+// There is NO way to come back to the original string
+// the algo is one-way only
+KVILIB_API extern void kvi_encodeFileName(KviStr & path);
+KVILIB_API extern void kvi_encodeFileName(QString & path);
+
+// Reads a single line from the file and returns false if EOF was encountered.
+KVILIB_API extern bool kvi_readLine(QFile *f,KviStr &str);
+// Removes a file
+
+#endif //_KVI_FILEUTILS_H_INCLUDED_
diff --git a/src/kvilib/file/kvi_packagefile.cpp b/src/kvilib/file/kvi_packagefile.cpp
new file mode 100644
index 00000000..3e7bcc17
--- /dev/null
+++ b/src/kvilib/file/kvi_packagefile.cpp
@@ -0,0 +1,1028 @@
+//=============================================================================
+//
+// File : kvi_packagefile.cpp
+// Created on Tue 26 Dec 2006 05:33:33 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2006 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+#include "kvi_packagefile.h"
+
+#include "kvi_file.h"
+#include "kvi_fileutils.h"
+#include "kvi_locale.h"
+#include "kvi_inttypes.h"
+
+#include <qprogressdialog.h>
+#include <qlabel.h>
+
+#include <qdir.h>
+
+#ifdef COMPILE_ZLIB_SUPPORT
+ #include <zlib.h>
+#endif
+
+//
+// A KVIrc Package File is basically a simple zip file with some additional meta-data.
+// The package file has the following format
+//
+
+// Field Type Bytes Description
+//-------------------------------------------------------------------------------
+// Package:
+// PackageHeader
+// PackageInfo
+// PackageData
+
+// PackageHeader:
+// Magic Bytes 4 'KVPF': Signature for the Kvirc Package File
+// Version uint32 4 0x00000001: Version of this package file
+// Flags uint32 4 0x00000000: Flags, in version 1 is reserved and must be zero
+//
+
+// PackageInfo:
+// InfoFieldCount uint32 4 Number of package info fields
+// InfoField InfoField Variable A list of informational name-value pairs
+// InfoField InfoField Variable A list of informational name-value pairs
+// InfoField InfoField Variable A list of informational name-value pairs
+// .... .... ....
+
+// PackageData:
+// DataField DataField Variable A list of data fields with format defined below
+// DataField DataField Variable A list of data fields with format defined below
+// DataField DataField Variable A list of data fields with format defined below
+// .... .... ....
+
+// InfoField:
+// Name UniString Variable The "name" element of the info field
+// ValueType uint32 4 The type of the following ValueData field
+// ValueData ValueData Variable
+
+// ValueData for ValueType 1 (string field)
+// Value UniString Variable The value element of type string of the the info field
+
+// ValueData for ValueType 2 (binary buffer field)
+// BufferLen uint32 4 The length of the binary buffer
+// BufferData Bytes Variable The data for the binary buffer
+
+
+// UniString:
+// StringLen uint32 4 The length of the string data in BYTES (null terminator NOT included)
+// StringData Bytes StringLen An utf8 encoded string (do NOT write the NULL terminator)
+
+// Bytes:
+// Byte uint8 1 A byte
+// Byte uint8 1 A byte
+// .... .... ....
+
+// DataField:
+// FieldType uint32 4 The type of the field, see below for defined values
+// FieldLen uint32 4 FieldData length in bytes (useful for skipping a field if unsupported)
+// FieldData Variable FieldLen The data of the field, see below for defined values
+
+// FieldData for FieldType 1 (file field)
+// Flags uint32 4 Bitmask. Bits: 1=FileIsDeflated
+// Path UniString Variable A relative path expressed as utf8 string. \ AND / are considered to be separators
+// Size uint32 4 Size of the following file data
+// FilePayload Bytes Variable
+
+// Everything is stored in LITTLE ENDIAN byte order.
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Da Base Engine
+
+KviPackageIOEngine::KviPackageIOEngine()
+{
+ m_pProgressDialog = 0;
+ m_pStringInfoFields = new KviPointerHashTable<QString,QString>();
+ m_pStringInfoFields->setAutoDelete(true);
+ m_pBinaryInfoFields = new KviPointerHashTable<QString,QByteArray>();
+ m_pBinaryInfoFields->setAutoDelete(true);
+}
+
+KviPackageIOEngine::~KviPackageIOEngine()
+{
+ if(m_pProgressDialog)delete m_pProgressDialog;
+ delete m_pStringInfoFields;
+ delete m_pBinaryInfoFields;
+}
+
+
+bool KviPackageIOEngine::updateProgress(int iProgress,const QString &szLabel)
+{
+ if(!m_pProgressDialog)return true;
+#ifdef COMPILE_USE_QT4
+ m_pProgressDialog->setValue(iProgress);
+#else
+ m_pProgressDialog->setProgress(iProgress);
+#endif
+ m_pProgressDialogLabel->setText(szLabel);
+ qApp->processEvents();
+ if(m_pProgressDialog->wasCanceled())
+ {
+ setLastError(__tr2qs("Operation cancelled"));
+ return false;
+ }
+ return true;
+}
+
+void KviPackageIOEngine::showProgressDialog(const QString &szCaption,int iTotalSteps)
+{
+#ifdef COMPILE_USE_QT4
+ m_pProgressDialog = new QProgressDialog(QString(""),__tr2qs("Cancel"),0,iTotalSteps,0);
+ m_pProgressDialog->setModal(true);
+ m_pProgressDialog->setWindowTitle(szCaption);
+#else
+ m_pProgressDialog = new QProgressDialog(QString(""),__tr2qs("Cancel"),iTotalSteps,0,"",true);
+ m_pProgressDialog->setCaption(szCaption);
+#endif
+ m_pProgressDialogLabel = new QLabel(m_pProgressDialog);
+ m_pProgressDialogLabel->setMaximumSize(500,300);
+ m_pProgressDialog->setLabel(m_pProgressDialogLabel);
+}
+
+void KviPackageIOEngine::hideProgressDialog()
+{
+ if(!m_pProgressDialog)return;
+ delete m_pProgressDialog;
+ m_pProgressDialog = 0;
+}
+
+bool KviPackageIOEngine::writeError()
+{
+ setLastError(__tr2qs("File write error"));
+ return false;
+}
+
+bool KviPackageIOEngine::readError()
+{
+ setLastError(__tr2qs("File read error"));
+ return false;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Da Writer
+
+
+KviPackageWriter::KviPackageWriter()
+: KviPackageIOEngine()
+{
+ m_pDataFields = new KviPointerList<DataField>();
+ m_pDataFields->setAutoDelete(true);
+}
+
+KviPackageWriter::~KviPackageWriter()
+{
+ delete m_pDataFields;
+}
+
+void KviPackageWriter::addInfoField(const QString &szName,const QString &szValue)
+{
+ m_pStringInfoFields->replace(szName,new QString(szValue));
+}
+
+void KviPackageWriter::addInfoField(const QString &szName,QByteArray * pValue)
+{
+ m_pBinaryInfoFields->replace(szName,pValue);
+}
+
+bool KviPackageWriter::addFile(const QString &szLocalFileName,const QString &szTargetFileName,kvi_u32_t uAddFileFlags)
+{
+ QFileInfo fi(szLocalFileName);
+ return addFileInternal(&fi,szLocalFileName,szTargetFileName,uAddFileFlags);
+}
+
+bool KviPackageWriter::addFileInternal(const QFileInfo * fi,const QString &szLocalFileName,const QString &szTargetFileName,kvi_u32_t uAddFileFlags)
+{
+ if(!(fi->isFile() && fi->isReadable()))
+ return false;
+
+ if(!(uAddFileFlags & FollowSymLinks))
+ {
+ if(fi->isSymLink())
+ return true; // do NOT add a symlink
+ }
+
+ DataField * f = new DataField();
+ f->m_uType = KVI_PACKAGE_DATAFIELD_TYPE_FILE;
+ f->m_bFileAllowCompression = !(uAddFileFlags & NoCompression);
+ f->m_szFileLocalName = szLocalFileName;
+ f->m_szFileTargetName = szTargetFileName;
+ m_pDataFields->append(f);
+
+ return true;
+}
+
+bool KviPackageWriter::addDirectory(const QString &szLocalDirectoryName,const QString &szTargetDirectoryPrefix,kvi_u32_t uAddFileFlags)
+{
+ QDir d(szLocalDirectoryName);
+#ifdef COMPILE_USE_QT4
+ QDir::Filters iFlags;
+#else
+ int iFlags;
+#endif
+ iFlags = QDir::Files | QDir::Readable;
+ if(!(uAddFileFlags & FollowSymLinks))
+ iFlags |= QDir::NoSymLinks;
+
+ // QT4SUX: Because the QDir::entryInfoList() breaks really a lot of code by returning an object that behaves in a _totally_ different way.. it's also much slower
+
+#ifdef COMPILE_USE_QT4
+ int j;
+ QFileInfoList sl = d.entryInfoList(iFlags);
+ for(j=0;j<sl.size();j++)
+ {
+#else
+ const QFileInfoList * sl = d.entryInfoList(iFlags);
+ if(!sl)return false;
+ QFileInfoListIterator it(*sl);
+ while(QFileInfo * fi = it.current())
+ {
+#endif
+ QString szSFileName = szLocalDirectoryName;
+ KviQString::ensureLastCharIs(szSFileName,QChar(KVI_PATH_SEPARATOR_CHAR));
+#ifdef COMPILE_USE_QT4
+ QFileInfo slowCopy = sl.at(j);
+ szSFileName += slowCopy.fileName();
+#else
+ szSFileName += fi->fileName();
+#endif
+ QString szDFileName = szTargetDirectoryPrefix;
+ KviQString::ensureLastCharIs(szDFileName,QChar(KVI_PATH_SEPARATOR_CHAR));
+#ifdef COMPILE_USE_QT4
+ szDFileName += slowCopy.fileName();
+ if(!addFileInternal(&slowCopy,szSFileName,szDFileName,uAddFileFlags))
+ return false;
+#else
+ szDFileName += fi->fileName();
+ if(!addFileInternal(fi,szSFileName,szDFileName,uAddFileFlags))
+ return false;
+#endif
+#ifndef COMPILE_USE_QT4
+ ++it;
+#endif
+ }
+ iFlags = QDir::Dirs | QDir::Readable;
+ if(!(uAddFileFlags & FollowSymLinks))
+ iFlags |= QDir::NoSymLinks;
+ sl = d.entryInfoList(iFlags);
+#ifdef COMPILE_USE_QT4
+ for(j=0;j<sl.size();j++)
+ {
+ QString szDir = sl.at(j).fileName();
+#else
+ if(!sl)return false;
+ QFileInfoListIterator it2(*sl);
+ while(QFileInfo * fi2 = it2.current())
+ {
+ QString szDir = fi2->fileName();
+#endif
+ if(!KviQString::equalCS(szDir,"..") && !KviQString::equalCS(szDir,"."))
+ {
+ QString szSDirName = szLocalDirectoryName;
+ KviQString::ensureLastCharIs(szSDirName,QChar(KVI_PATH_SEPARATOR_CHAR));
+ szSDirName += szDir;
+ QString szDDirName = szTargetDirectoryPrefix;
+ KviQString::ensureLastCharIs(szDDirName,QChar(KVI_PATH_SEPARATOR_CHAR));
+ szDDirName += szDir;
+ if(!addDirectory(szSDirName,szDDirName,uAddFileFlags))
+ return false;
+ }
+#ifndef COMPILE_USE_QT4
+ ++it2;
+#endif
+ }
+
+ return true;
+}
+
+
+
+#define BUFFER_SIZE 32768
+
+bool KviPackageWriter::packFile(KviFile * pFile,DataField * pDataField)
+{
+ QString szProgressText;
+ KviQString::sprintf(szProgressText,__tr2qs("Packaging file %Q"),&(pDataField->m_szFileLocalName));
+ if(!updateProgress(m_iCurrentProgress,szProgressText))
+ return false; // aborted
+
+
+ KviFile source(pDataField->m_szFileLocalName);
+ if(!source.openForReading())
+ {
+ setLastError(__tr2qs("Failed to open a source file for reading"));
+ return false;
+ }
+
+ kvi_u32_t uSize = source.size();
+
+ // Flags
+#ifdef COMPILE_ZLIB_SUPPORT
+ kvi_u32_t uFlags = pDataField->m_bFileAllowCompression ?
+ (uSize > 64 ? KVI_PACKAGE_DATAFIELD_FLAG_FILE_DEFLATE : 0)
+ : 0;
+#else
+ kvi_u32_t uFlags = 0;
+#endif
+
+ if(!pFile->save(uFlags))return writeError();
+
+ KviQCString szTargetFileName = KviQString::toUtf8(pDataField->m_szFileTargetName);
+
+ // Path
+ if(!pFile->save(szTargetFileName))return writeError();
+
+ kvi_file_offset_t savedSizeOffset = pFile->pos();
+
+ // Size : will update it if compression is requested
+ if(!pFile->save(uSize))return writeError();
+
+ pDataField->m_uWrittenFieldLength = 4 + 4 + 4 + szTargetFileName.length(); // sizeof(flags + uncompressed size + path len + path)
+
+ // FilePayload
+#ifdef COMPILE_ZLIB_SUPPORT
+ if(uFlags & KVI_PACKAGE_DATAFIELD_FLAG_FILE_DEFLATE)
+ {
+ unsigned char ibuffer[BUFFER_SIZE];
+ unsigned char obuffer[BUFFER_SIZE];
+
+ kvi_i32_t iReaded = source.readBlock((char *)ibuffer,BUFFER_SIZE);
+ if(iReaded < 0)
+ return readError();
+
+ z_stream zstr;
+ zstr.zalloc = Z_NULL;
+ zstr.zfree = Z_NULL;
+ zstr.opaque = Z_NULL;
+ zstr.next_in = ibuffer;
+ zstr.avail_in = iReaded;
+ zstr.next_out = obuffer;
+ zstr.avail_out = BUFFER_SIZE;
+
+ if(deflateInit(&zstr,9) != Z_OK)
+ {
+ setLastError(__tr2qs("Compression library initialization error"));
+ return false;
+ }
+
+ while(iReaded > 0)
+ {
+ zstr.next_out = obuffer;
+ zstr.avail_out = BUFFER_SIZE;
+
+ if(deflate(&zstr,Z_NO_FLUSH) != Z_OK)
+ {
+ setLastError(__tr2qs("Compression library error"));
+ return false;
+ }
+
+ if(zstr.avail_out < BUFFER_SIZE)
+ {
+ int iCompressed = zstr.next_out - obuffer;
+ pDataField->m_uWrittenFieldLength += iCompressed;
+ if(pFile->writeBlock((char *)obuffer,iCompressed) != iCompressed)
+ {
+ deflateEnd(&zstr);
+ return writeError();
+ }
+ }
+
+ if(zstr.avail_in < BUFFER_SIZE)
+ {
+ int iDataToRead = BUFFER_SIZE - zstr.avail_in;
+ if(iDataToRead < BUFFER_SIZE)
+ {
+ if(ibuffer != zstr.next_in)
+ {
+ // hum, there is still some data in the buffer to be readed
+ // and it is not at the beginning...move it to the beginning of ibuffer
+ memmove(ibuffer,zstr.next_in,zstr.avail_in);
+ }
+ }
+ iReaded = source.readBlock((char *)(ibuffer + zstr.avail_in),iDataToRead);
+ if(iReaded < 0)
+ {
+ deflateEnd(&zstr);
+ return readError();
+ }
+ zstr.avail_in += iReaded;
+ zstr.next_in = ibuffer;
+
+ if((zstr.total_in % 2000000) == 0)
+ {
+ QString szTmp;
+ KviQString::sprintf(szTmp,QString(" (%d of %d bytes)"),zstr.total_in,uSize);
+ QString szPrg = szProgressText + szTmp;
+ if(!updateProgress(m_iCurrentProgress,szPrg))
+ return false; // aborted
+ }
+
+
+ }
+ }
+
+ // flush pending output
+ zstr.next_out = obuffer;
+ zstr.avail_out = BUFFER_SIZE;
+
+ int ret;
+ do
+ {
+ ret = deflate(&zstr,Z_FINISH);
+
+ if((ret == Z_OK) || (ret == Z_STREAM_END))
+ {
+ if(zstr.avail_out < BUFFER_SIZE)
+ {
+ int iCompressed = zstr.next_out - obuffer;
+ pDataField->m_uWrittenFieldLength += iCompressed;
+ if(pFile->writeBlock((char *)obuffer,iCompressed) != iCompressed)
+ {
+ deflateEnd(&zstr);
+ return writeError();
+ }
+ } else {
+ deflateEnd(&zstr);
+ setLastError(__tr2qs("Compression library internal error"));
+ return false;
+ }
+
+ zstr.next_out = obuffer;
+ zstr.avail_out = BUFFER_SIZE;
+ }
+
+ } while(ret == Z_OK);
+
+ // store the compressed data size
+ kvi_file_offset_t here = pFile->pos();
+ pFile->seek(savedSizeOffset);
+ uSize = zstr.total_out;
+
+ deflateEnd(&zstr);
+ if(!pFile->save(uSize))return writeError();
+
+ if(ret != Z_STREAM_END)
+ {
+ setLastError(__tr2qs("Error while compressing a file stream"));
+ return false;
+ }
+
+ pFile->seek(here);
+ } else {
+#endif
+ unsigned char buffer[BUFFER_SIZE];
+ int iTotalFileSize = 0;
+ kvi_i32_t iReaded = source.readBlock((char *)buffer,BUFFER_SIZE);
+ if(iReaded < 0)
+ return readError();
+ while(iReaded > 0)
+ {
+ iTotalFileSize += iReaded;
+ if((iTotalFileSize % 1000000) == 0)
+ {
+ QString szTmp;
+ KviQString::sprintf(szTmp,QString(" (%d of %d bytes)"),iTotalFileSize,uSize);
+ QString szPrg = szProgressText + szTmp;
+ if(!updateProgress(m_iCurrentProgress,szPrg))
+ return false; // aborted
+ }
+ pDataField->m_uWrittenFieldLength += iReaded;
+ if(pFile->writeBlock((char *)buffer,iReaded) != iReaded)
+ return writeError();
+ iReaded = source.readBlock((char *)buffer,BUFFER_SIZE);
+ }
+#ifdef COMPILE_ZLIB_SUPPORT
+ }
+#endif
+ source.close();
+
+ return true;
+}
+
+bool KviPackageWriter::pack(const QString &szFileName,kvi_u32_t uPackFlags)
+{
+ m_iCurrentProgress = 0;
+ if(!(uPackFlags & NoProgressDialog))
+ {
+ showProgressDialog(__tr2qs("Creating package..."),100);
+ updateProgress(m_iCurrentProgress,__tr2qs("Writing package header"));
+ }
+
+ bool bRet = packInternal(szFileName,uPackFlags);
+
+ hideProgressDialog();
+ return bRet;
+}
+
+bool KviPackageWriter::packInternal(const QString &szFileName,kvi_u32_t uPackFlags)
+{
+
+ KviFile f(szFileName);
+ if(!f.openForWriting())
+ {
+ setLastError(__tr2qs("Can't open file for writing"));
+ return false;
+ }
+
+ // write the PackageHeader
+
+ // Magic
+ char magic[4];
+ magic[0] = 'K';
+ magic[1] = 'V';
+ magic[2] = 'P';
+ magic[3] = 'F';
+ if(f.writeBlock(magic,4) != 4)return writeError();
+
+ // Version
+ kvi_u32_t uVersion = 0x1;
+ if(!f.save(uVersion))return writeError();
+
+ // Flags
+ kvi_u32_t uFlags = 0x0;
+ if(!f.save(uFlags))return writeError();
+
+ // write PackageInfo
+
+ // InfoFieldCount
+ kvi_u32_t uCount = m_pStringInfoFields->count() + m_pBinaryInfoFields->count();
+ if(!f.save(uCount))return writeError();
+
+ m_iCurrentProgress = 5;
+ if(!updateProgress(m_iCurrentProgress,__tr2qs("Writing informational fields")))
+ return false; // aborted
+
+ // InfoFields (string)
+ KviPointerHashTableIterator<QString,QString> it(*m_pStringInfoFields);
+ while(QString * s = it.current())
+ {
+ if(!f.save(it.currentKey()))return writeError();
+ kvi_u32_t uType = KVI_PACKAGE_INFOFIELD_TYPE_STRING;
+ if(!f.save(uType))return writeError();
+ if(!f.save(*s))return writeError();
+ ++it;
+ }
+
+ // InfoFields (binary)
+ KviPointerHashTableIterator<QString,QByteArray> it2(*m_pBinaryInfoFields);
+ while(QByteArray * b = it2.current())
+ {
+ if(!f.save(it2.currentKey()))return writeError();
+ kvi_u32_t uType = KVI_PACKAGE_INFOFIELD_TYPE_BINARYBUFFER;
+ if(!f.save(uType))return writeError();
+ if(!f.save(*b))return writeError();
+ ++it2;
+ }
+
+ m_iCurrentProgress = 10;
+ if(!updateProgress(m_iCurrentProgress,__tr2qs("Writing package data")))
+ return false; // aborted
+
+ // write PackageData
+ int iIdx = 0;
+ for(DataField * pDataField = m_pDataFields->first();pDataField;pDataField = m_pDataFields->next())
+ {
+ kvi_u32_t uDataFieldType = pDataField->m_uType;
+ if(!f.save(uDataFieldType))return writeError();
+
+ kvi_file_offset_t savedLenOffset = f.pos();
+ // here we will store the length of the field once it's written
+ if(!f.save(uDataFieldType))return writeError();
+
+ m_iCurrentProgress = 10 + ((90 * iIdx) / m_pDataFields->count());
+
+ switch(pDataField->m_uType)
+ {
+ case KVI_PACKAGE_DATAFIELD_TYPE_FILE:
+ if(!packFile(&f,pDataField))
+ return false;
+ break;
+ default:
+ setLastError(__tr2qs("Internal error"));
+ return false;
+ break;
+ }
+
+ kvi_file_offset_t savedEndOffset = f.pos();
+ f.seek(savedLenOffset);
+ if(!f.save(pDataField->m_uWrittenFieldLength))
+ return writeError();
+
+ f.seek(savedEndOffset);
+ iIdx++;
+ }
+
+ return true;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Da Reader
+
+KviPackageReader::KviPackageReader()
+: KviPackageIOEngine()
+{
+}
+
+KviPackageReader::~KviPackageReader()
+{
+}
+
+bool KviPackageReader::readHeaderInternal(KviFile * pFile,const QString &szLocalFileName)
+{
+ // read the PackageHeader
+
+ // Magic
+ char magic[4];
+
+ if(pFile->readBlock(magic,4) != 4)return readError();
+ if((magic[0] != 'K') || (magic[1] != 'V') || (magic[2] != 'P') || (magic[3] != 'F'))
+ {
+ setLastError(__tr2qs("The file specified is not a valid KVIrc package"));
+ return false;
+ }
+
+ // Version
+ kvi_u32_t uVersion;
+ if(!pFile->load(uVersion))return readError();
+ if(uVersion != 0x1)
+ {
+ setLastError(__tr2qs("The package has an invalid version number, it might have been created by a newer KVIrc"));
+ return false;
+ }
+
+ // Flags
+ kvi_u32_t uFlags;
+ if(!pFile->load(uFlags))return readError();
+ // we ignore them at the moment
+
+ // read PackageInfo
+
+ // InfoFieldCount
+ kvi_u32_t uCount;
+ if(!pFile->load(uCount))return writeError();
+
+ m_pStringInfoFields->clear();
+ m_pBinaryInfoFields->clear();
+
+ kvi_u32_t uIdx = 0;
+ while(uIdx < uCount)
+ {
+ QString szKey;
+ if(!pFile->load(szKey))return readError();
+ kvi_u32_t uFieldType;
+ if(!pFile->load(uFieldType))return readError();
+ switch(uFieldType)
+ {
+ case KVI_PACKAGE_INFOFIELD_TYPE_STRING:
+ {
+ QString szValue;
+ if(!pFile->load(szValue))return readError();
+ m_pStringInfoFields->replace(szKey,new QString(szValue));
+ }
+ break;
+ case KVI_PACKAGE_INFOFIELD_TYPE_BINARYBUFFER:
+ {
+ QByteArray * pbValue = new QByteArray();
+ if(!pFile->load(*pbValue))
+ {
+ delete pbValue;
+ return readError();
+ }
+ m_pBinaryInfoFields->replace(szKey,pbValue);
+ }
+ break;
+ default:
+ setLastError(__tr2qs("Invalid info field: the package is probably corrupt"));
+ break;
+ }
+ uIdx++;
+ }
+
+ return true;
+}
+
+
+bool KviPackageReader::readHeader(const QString &szLocalFileName)
+{
+ KviFile f(szLocalFileName);
+ if(!f.openForReading())
+ {
+ setLastError(__tr2qs("Can't open file for reading"));
+ return false;
+ }
+
+ return readHeaderInternal(&f,szLocalFileName);
+}
+
+bool KviPackageReader::unpackFile(KviFile * pFile,const QString &szUnpackPath)
+{
+ // Flags
+ kvi_u32_t uFlags;
+ if(!pFile->load(uFlags))return readError();
+
+#ifndef COMPILE_ZLIB_SUPPORT
+ if(uFlags & KVI_PACKAGE_DATAFIELD_FLAG_FILE_DEFLATE)
+ {
+ setLastError(__tr2qs("The package contains compressed data but this executable does not support compression"));
+ return false;
+ }
+#endif
+
+ // Path
+ QString szPath;
+ if(!pFile->load(szPath))return readError();
+
+ QString szFileName = szUnpackPath;
+ KviQString::ensureLastCharIs(szFileName,QChar(KVI_PATH_SEPARATOR_CHAR));
+
+ szFileName += szPath;
+
+ // no attacks please :)
+ szFileName.replace(QString("..\\"),QString(""));
+ szFileName.replace(QString("..//"),QString(""));
+
+ KviFileUtils::adjustFilePath(szFileName);
+
+ int idx = KviQString::findRev(szFileName,QChar(KVI_PATH_SEPARATOR_CHAR));
+ if(idx != -1)
+ {
+ QString szPrefixPath = szFileName.left(idx);
+ if(!KviFileUtils::makeDir(szPrefixPath))
+ {
+ setLastError(__tr2qs("Failed to create the target directory"));
+ return false;
+ }
+ }
+
+ KviFile dest(szFileName);
+ if(!dest.openForWriting())
+ {
+ setLastError(__tr2qs("Failed to open a source file for reading"));
+ return false;
+ }
+
+ QString szProgressText;
+ KviQString::sprintf(szProgressText,__tr2qs("Unpacking file %Q"),&szFileName);
+ if(!updateProgress(pFile->pos(),szProgressText))
+ return false; // aborted
+
+ // Size
+ kvi_u32_t uSize;
+ if(!pFile->load(uSize))return readError();
+
+
+ // FilePayload
+#ifdef COMPILE_ZLIB_SUPPORT
+ if(uFlags & KVI_PACKAGE_DATAFIELD_FLAG_FILE_DEFLATE)
+ {
+ int iRemainingSize = uSize;
+ unsigned char ibuffer[BUFFER_SIZE];
+ unsigned char obuffer[BUFFER_SIZE];
+
+ int iToRead = iRemainingSize;
+ if(iToRead > BUFFER_SIZE)iToRead = BUFFER_SIZE;
+ int iReaded = pFile->readBlock((char *)ibuffer,iToRead);
+ iRemainingSize -= iReaded;
+
+ z_stream zstr;
+ zstr.zalloc = Z_NULL;
+ zstr.zfree = Z_NULL;
+ zstr.opaque = Z_NULL;
+ zstr.next_in = ibuffer;
+ zstr.avail_in = iReaded;
+ zstr.next_out = obuffer;
+ zstr.avail_out = BUFFER_SIZE;
+
+ if(inflateInit(&zstr) != Z_OK)
+ {
+ setLastError(__tr2qs("Compression library initialization error"));
+ return false;
+ }
+
+ while((iReaded > 0) && (iRemainingSize > 0))
+ {
+ zstr.next_out = obuffer;
+ zstr.avail_out = BUFFER_SIZE;
+
+ if(inflate(&zstr,Z_NO_FLUSH) != Z_OK)
+ {
+ setLastError(__tr2qs("Compression library error"));
+ return false;
+ }
+
+ if(zstr.avail_out < BUFFER_SIZE)
+ {
+ int iDecompressed = zstr.next_out - obuffer;
+ if(dest.writeBlock((char *)obuffer,iDecompressed) != iDecompressed)
+ {
+ inflateEnd(&zstr);
+ return writeError();
+ }
+ }
+
+ if(zstr.avail_in < BUFFER_SIZE)
+ {
+ int iDataToRead = BUFFER_SIZE - zstr.avail_in;
+ if(iDataToRead < BUFFER_SIZE)
+ {
+ if(ibuffer != zstr.next_in)
+ {
+ // hum, there is still some data in the buffer to be readed
+ // and it is not at the beginning...move it to the beginning of ibuffer
+ memmove(ibuffer,zstr.next_in,zstr.avail_in);
+ }
+ }
+
+ if(iDataToRead > iRemainingSize)
+ iDataToRead = iRemainingSize;
+
+ iReaded = pFile->readBlock((char *)(ibuffer + zstr.avail_in),iDataToRead);
+ if(iReaded < 0)
+ {
+ inflateEnd(&zstr);
+ return readError();
+ }
+
+ iRemainingSize -= iReaded;
+ zstr.avail_in += iReaded;
+ zstr.next_in = ibuffer;
+
+ if((zstr.total_in % 2000000) == 0)
+ {
+ QString szTmp;
+ KviQString::sprintf(szTmp,QString(" (%d of %d bytes)"),zstr.total_in,uSize);
+ QString szPrg = szProgressText + szTmp;
+ if(!updateProgress(pFile->pos(),szPrg))
+ return false; // aborted
+ }
+ }
+ }
+
+ // flush pending output
+ zstr.next_out = obuffer;
+ zstr.avail_out = BUFFER_SIZE;
+
+ int ret;
+
+ do {
+ ret = inflate(&zstr,Z_FINISH);
+
+ if((ret == Z_OK) || (ret == Z_STREAM_END) || (ret == Z_BUF_ERROR))
+ {
+ if(zstr.avail_out < BUFFER_SIZE)
+ {
+ int iDecompressed = zstr.next_out - obuffer;
+ if(dest.writeBlock((char *)obuffer,iDecompressed) != iDecompressed)
+ {
+ inflateEnd(&zstr);
+ return writeError();
+ }
+ } /* else { THIS HAPPENS FOR ZERO SIZE FILES
+ debug("hum.... internal, rEWq (ret = %d) (avail_out = %d)",ret,zstr.avail_out);
+
+ inflateEnd(&zstr);
+ setLastError(__tr2qs("Compression library internal error"));
+ return false;
+ } */
+ zstr.next_out = obuffer;
+ zstr.avail_out = BUFFER_SIZE;
+ }
+
+ } while((ret == Z_OK) || (ret == Z_BUF_ERROR));
+
+ inflateEnd(&zstr);
+
+ if(ret != Z_STREAM_END)
+ {
+ setLastError(__tr2qs("Error in compressed file stream"));
+ return false;
+ }
+
+ } else {
+#endif
+ unsigned char buffer[BUFFER_SIZE];
+ int iTotalFileSize = 0;
+ int iRemainingData = uSize;
+ int iToRead = iRemainingData;
+ if(iToRead > BUFFER_SIZE)iToRead = BUFFER_SIZE;
+ int iReaded = 1;
+
+ while((iReaded > 0) && (iToRead > 0))
+ {
+ iReaded = pFile->readBlock((char *)buffer,iToRead);
+ if(iReaded > 0)
+ {
+ iTotalFileSize += iReaded;
+ iRemainingData -= iReaded;
+
+ if((iTotalFileSize % 3000000) == 0)
+ {
+ QString szTmp;
+ KviQString::sprintf(szTmp,QString(" (%d of %d bytes)"),iTotalFileSize,uSize);
+ QString szPrg = szProgressText + szTmp;
+ if(!updateProgress(pFile->pos(),szPrg))
+ return false; // aborted
+ }
+
+ if(dest.writeBlock((char *)buffer,iReaded) != iReaded)
+ return writeError();
+ }
+
+ int iToRead = iRemainingData;
+ if(iToRead > BUFFER_SIZE)iToRead = BUFFER_SIZE;
+ }
+#ifdef COMPILE_ZLIB_SUPPORT
+ }
+#endif
+ dest.close();
+
+ return true;
+}
+
+bool KviPackageReader::getStringInfoField(const QString &szName,QString &szBuffer)
+{
+ QString * pVal = m_pStringInfoFields->find(szName);
+ if(!pVal)return false;
+ szBuffer = *pVal;
+ return true;
+}
+
+bool KviPackageReader::unpack(const QString &szLocalFileName,const QString &szUnpackPath,kvi_u32_t uUnpackFlags)
+{
+ bool bRet = unpackInternal(szLocalFileName,szUnpackPath,uUnpackFlags);
+ hideProgressDialog();
+ return bRet;
+}
+
+bool KviPackageReader::unpackInternal(const QString &szLocalFileName,const QString &szUnpackPath,kvi_u32_t uUnpackFlags)
+{
+
+ KviFile f(szLocalFileName);
+ if(!f.openForReading())
+ {
+ setLastError(__tr2qs("Can't open file for reading"));
+ return false;
+ }
+
+ kvi_file_offset_t size = f.size();
+
+ if(!(uUnpackFlags & NoProgressDialog))
+ {
+ showProgressDialog(__tr2qs("Reading package..."),size);
+ updateProgress(0,__tr2qs("Reading package header"));
+ }
+
+
+ if(!readHeaderInternal(&f,szLocalFileName))
+ return false;
+
+ if(!updateProgress(f.pos(),__tr2qs("Reading package data")))
+ return false; // aborted
+
+ while(!f.atEnd())
+ {
+ // DataFieldType
+ kvi_u32_t uDataFieldType;
+ if(!f.load(uDataFieldType))return readError();
+ // DataFieldLen
+ kvi_u32_t uDataFieldLen;
+ if(!f.load(uDataFieldLen))return readError();
+
+ switch(uDataFieldType)
+ {
+ case KVI_PACKAGE_DATAFIELD_TYPE_FILE:
+ if(!unpackFile(&f,szUnpackPath))
+ return false;
+ break;
+ default:
+ setLastError(__tr2qs("Invalid data field: the package is probably corrupt"));
+ return false;
+ break;
+ }
+
+ }
+
+ return true;
+}
+
+
+
diff --git a/src/kvilib/file/kvi_packagefile.h b/src/kvilib/file/kvi_packagefile.h
new file mode 100644
index 00000000..3e330554
--- /dev/null
+++ b/src/kvilib/file/kvi_packagefile.h
@@ -0,0 +1,142 @@
+#ifndef _KVI_PACKAGEFILE_H_
+#define _KVI_PACKAGEFILE_H_
+//=============================================================================
+//
+// File : kvi_packagefile.h
+// Created on Tue 26 Dec 2006 05:33:33 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2006 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_pointerhashtable.h"
+#include "kvi_qcstring.h" // QByteArray anyway
+#include <qobject.h>
+#include "kvi_pointerlist.h"
+
+class KviFile;
+class QProgressDialog;
+class QLabel;
+class QFileInfo;
+
+//
+// This class is used for creating KVIrc package files.
+// You simply instantiate it, add some info fields, add some files and then call pack().
+//
+
+class KVILIB_API KviPackageIOEngine
+{
+public:
+ KviPackageIOEngine();
+ virtual ~KviPackageIOEngine();
+protected:
+ QString m_szLastError;
+ KviPointerHashTable<QString,QString> * m_pStringInfoFields;
+ KviPointerHashTable<QString,QByteArray> * m_pBinaryInfoFields;
+ QProgressDialog * m_pProgressDialog;
+ QLabel * m_pProgressDialogLabel;
+public:
+ const QString & lastError(){ return m_szLastError; };
+ void setLastError(const QString &szLastError){ m_szLastError = szLastError; };
+ KviPointerHashTable<QString,QString> * stringInfoFields(){ return m_pStringInfoFields; };
+ KviPointerHashTable<QString,QByteArray> * binaryInfoFields(){ return m_pBinaryInfoFields; };
+protected:
+ void showProgressDialog(const QString &szCaption,int iTotalSteps);
+ void hideProgressDialog();
+ bool updateProgress(int iProgress,const QString &szLabel);
+ bool writeError();
+ bool readError();
+};
+
+#define KVI_PACKAGE_INFOFIELD_TYPE_STRING 1
+#define KVI_PACKAGE_INFOFIELD_TYPE_BINARYBUFFER 2
+
+#define KVI_PACKAGE_DATAFIELD_TYPE_FILE 1
+
+#define KVI_PACKAGE_DATAFIELD_FLAG_FILE_DEFLATE 1
+
+class KVILIB_API KviPackageWriter : public KviPackageIOEngine
+{
+public:
+ KviPackageWriter();
+ virtual ~KviPackageWriter();
+protected:
+
+ class DataField
+ {
+ public:
+ kvi_u32_t m_uType;
+ // output length of the field
+ kvi_u32_t m_uWrittenFieldLength;
+ // data fields for the File DataFieldType
+ bool m_bFileAllowCompression;
+ QString m_szFileLocalName;
+ QString m_szFileTargetName;
+ };
+
+ KviPointerList<DataField> * m_pDataFields;
+ int m_iCurrentProgress;
+public:
+ // Adds a file to the package. The file must be specified as absolute local
+ // path and as target path relative to the KVIrc local directory.
+ // ... more ?
+ enum AddFileFlags {
+ NoCompression = 1,
+ FollowSymLinks = 2
+ };
+ bool addFile(const QString &szLocalFileName,const QString &szTargetFileName,kvi_u32_t uAddFileFlags = 0);
+ bool addDirectory(const QString &szLocalDirectoryName,const QString &szTargetDirectoryPrefix,kvi_u32_t uAddFileFlags = 0);
+ // Adds an info field as a name=value pair
+ void addInfoField(const QString &szName,const QString &szValue);
+ void addInfoField(const QString &szName,QByteArray * pArray);
+ // Attempts to pack everything and store it as the specified file.
+ // There is no mandatory extension but you *should* use KVI_FILEEXTENSION_THEMEPACKAGE for themes
+ // and KVI_FILEEXTENSION_ADDONPACKAGE for addons. See kvi_fileextension.h
+ enum PackFlags {
+ NoProgressDialog = 1
+ };
+ bool pack(const QString &szFileName,kvi_u32_t uPackFlags = 0);
+private:
+ bool packInternal(const QString &szFileName,kvi_u32_t uPackFlags = 0);
+ bool packFile(KviFile * pFile,DataField * pDataField);
+ bool addFileInternal(const QFileInfo * fi,const QString &szLocalFileName,const QString &szTargetFileName,kvi_u32_t uAddFileFlags = 0);
+};
+
+class KVILIB_API KviPackageReader : public KviPackageIOEngine
+{
+public:
+ KviPackageReader();
+ virtual ~KviPackageReader();
+public:
+ bool readHeader(const QString &szLocalFileName);
+ enum UnpackFlags {
+ NoProgressDialog = 1
+ };
+ bool getStringInfoField(const QString &szName,QString &szBuffer);
+ bool unpack(const QString &szLocalFileName,const QString &szUnpackPath,kvi_u32_t uUnpackFlags = 0);
+private:
+ bool unpackInternal(const QString &szLocalFileName,const QString &szUnpackPath,kvi_u32_t uUnpackFlags = 0);
+ bool unpackFile(KviFile * pFile,const QString &szUnpackPath);
+ bool readHeaderInternal(KviFile * pFile,const QString &szLocalFileName);
+};
+
+
+
+#endif //!_KVI_PACKAGEFILE_H_
diff --git a/src/kvilib/include/Makefile.am b/src/kvilib/include/Makefile.am
new file mode 100644
index 00000000..60838ee7
--- /dev/null
+++ b/src/kvilib/include/Makefile.am
@@ -0,0 +1,4 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
diff --git a/src/kvilib/irc/Makefile.am b/src/kvilib/irc/Makefile.am
new file mode 100644
index 00000000..c84487eb
--- /dev/null
+++ b/src/kvilib/irc/Makefile.am
@@ -0,0 +1,5 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+EXTRA_DIST = *.cpp *.h
diff --git a/src/kvilib/irc/kvi_avatar.cpp b/src/kvilib/irc/kvi_avatar.cpp
new file mode 100644
index 00000000..1642560a
--- /dev/null
+++ b/src/kvilib/irc/kvi_avatar.cpp
@@ -0,0 +1,165 @@
+//=============================================================================
+//
+// File : kvi_avatar.cpp
+// Creation date : Fri Dec 01 2000 13:58:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+#define __KVILIB__
+
+
+#include "kvi_avatar.h"
+#include "kvi_qstring.h"
+
+#include <qimage.h>
+
+
+/*
+ @doc: ctcp_avatar
+ @title:
+ The AVATAR idea
+ @short:
+ Extending IRC fun: the AVATAR idea
+ @body:
+ [big]Introduction[/big]
+ Starting from version 3.0.0 KVIrc supports the AVATAR protocol.
+ The AVATAR term dictionary definitions include:[br]
+ - Hindu mythology incarnation of a God[br]
+ - Embodiment of a concept or philosophy[br]
+ - In [b]cyberspace communities[/b], the rappresentation of an
+ user in a shared virtual reality.[br]
+ The AVATAR protocol attempts to improve the IRC communication
+ by adding a method for associating a graphical rappresentation
+ to an IRC user.[br]
+ Since this may involve binary data transfers between users,
+ the protocol is intended to be client based.
+ [big]The terms[/big]
+ The user that wants to offer a digital rappresentation of himself
+ will be called "source user". The ones that will receive the notification
+ will be called "target users".
+ Every irc user can be either a source user or target user.
+ [big]The idea[/big]
+ Every irc user has a client-side property called AVATAR. Let's say that there
+ are two users: A and B.[br]
+ When user A wants to see the B's avatar he simply sends a CTCP AVATAR request
+ to B (the request is sent through a PRIVMSG irc command).[br]
+ User B replies with a CTCP AVATAR notification (sent through a NOTICE irc command)
+ with the name or url of his avatar.[br]
+ The actual syntax for the notification is:[br]
+ [b]AVATAR <avatar_file> [<filesize>][/b]
+ The <avatar_file> may be either the name of a B's local image file or an url
+ pointing to an image on some web server.[br]
+ The optional <filesize> parameter is sent only if <avatar_file> is
+ stored on the B's machine and there will be more info on that later.[br]
+ Anyway, after A has received the notification he tries to locate the avatar
+ file in its local cache (yes, <filesize> may help here and more on this later).
+ If the file can be found
+ and loaded then it is simply displayed in some way near the B's nickname
+ otherwise A must download the avatar from some place.
+ If the <avatar_file> contains a leading url prefix (http://) then
+ A fetches the image from the specified url and after that displays
+ it near the B's nickname. If the <avatar_file> does not contain the
+ leading url prefix then it is assumed that B offers this file for
+ downloading via DCC from his machine. In this case A may also avoid
+ requesting the file if the <filesize> is too large and the transfer
+ would occupy too much bandwidth (for example).
+ The DCC download is initiated by issuing a DCC GET <avatar_file> request to B.
+ B may then reply with a standard DCC SEND or a DCC RSEND (kvirc's extension).[br]
+ The implementation of the DCC GET protocol is defined by other documents here around :).[br]
+ [br]
+ The CTCP AVATAR messages can be sent to a single user , a set of users or a channel:
+ this depends only on the source user and how many clients he wants to reach.
+ [br]
+ There should be a convention on the image sizes: not a protocol limit.
+ For example, the convention could be that all the images should be smaller than
+ 129x129 pixels. The preferred image format is "png" (Portable Network Graphics)
+ since it allows good compression rates without compromising the image quality.
+ Other formats may be accepted as well (Theoretically this protocol could be
+ extended to allow movies or 3D images).
+ The "preferred" image size may grow with time, as the network transmission speed grows.
+*/
+
+KviAvatar::KviAvatar(const QString &szLocalPath,const QString &szName,QPixmap * pix)
+{
+ m_pPixmap = pix;
+ m_pScaledPixmap = 0;
+ if(m_pPixmap == 0)m_pPixmap = new QPixmap(32,32); // cool memory map :)
+
+ m_bRemote = KviQString::equalCIN("http://",szName,7);
+
+ m_szLocalPath = szLocalPath;
+ m_szName = szName;
+}
+
+KviAvatar::~KviAvatar()
+{
+ delete m_pPixmap;
+ if(m_pScaledPixmap)delete m_pScaledPixmap;
+}
+
+QPixmap * KviAvatar::scaledPixmap(unsigned int w,unsigned int h)
+{
+ if(((unsigned int)(m_pPixmap->width())) == w)
+ {
+ if(((unsigned int)(m_pPixmap->height())) == h)
+ return m_pPixmap;
+ }
+
+ if(m_pScaledPixmap)
+ {
+ if((m_uLastScaleWidth == w) && (m_uLastScaleHeight == h))return m_pScaledPixmap;
+ delete m_pScaledPixmap;
+ m_pScaledPixmap = 0;
+ }
+
+ int curW = m_pPixmap->width();
+ int curH = m_pPixmap->height();
+
+ if(curW < 1)curW = 1;
+ if(curH < 1)curH = 1;
+
+ m_uLastScaleWidth = w;
+ m_uLastScaleHeight = h;
+
+ int scaleW = w;
+ int scaleH;
+
+ /* We want to maintain the aspect of the image instead simply set
+ height and width. The first step is trying to adapt the image size
+ by "w" vaule */
+
+ scaleH = (curH * scaleW) / curW;
+
+ /* Now check the resized image size. If it is too wide or too tall,
+ resize it again by "h" value */
+ if(scaleH > h) {
+ scaleH = h;
+ scaleW = (scaleH * curW) / curH;
+ }
+
+#ifdef COMPILE_USE_QT4
+ m_pScaledPixmap = new QPixmap(m_pPixmap->scaled(scaleW,scaleH));
+#else
+ QImage img = m_pPixmap->convertToImage();
+
+ m_pScaledPixmap = new QPixmap();
+ m_pScaledPixmap->convertFromImage(img.smoothScale(scaleW,scaleH));
+#endif
+ return m_pScaledPixmap;
+}
diff --git a/src/kvilib/irc/kvi_avatar.h b/src/kvilib/irc/kvi_avatar.h
new file mode 100644
index 00000000..ba8edbc5
--- /dev/null
+++ b/src/kvilib/irc/kvi_avatar.h
@@ -0,0 +1,83 @@
+#ifndef _KVI_AVATAR_H_
+#define _KVI_AVATAR_H_
+
+//=============================================================================
+//
+// File : kvi_avatar.h
+// Creation date : Fri Dec 01 2000 13:54:04 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_string.h"
+#include "kvi_heapobject.h"
+#include "kvi_settings.h"
+
+#include <qpixmap.h>
+
+class KVILIB_API KviAvatar : public KviHeapObject
+{
+public:
+ KviAvatar(const QString &szLocalPath,const QString &szName,QPixmap * pix);
+ ~KviAvatar();
+private:
+ QString m_szLocalPath;
+ QString m_szName;
+ bool m_bRemote;
+
+ QPixmap * m_pPixmap;
+ QPixmap * m_pScaledPixmap;
+
+ unsigned int m_uLastScaleWidth;
+ unsigned int m_uLastScaleHeight;
+public:
+ QPixmap * pixmap(){ return m_pPixmap; };
+ QPixmap * scaledPixmap(unsigned int w,unsigned int h);
+
+ bool isRemote(){ return m_bRemote; };
+
+ const QString &localPath(){ return m_szLocalPath; };
+ const QString &name(){ return m_szName; };
+
+ // string that uniquely identifies this avatar
+ // for remote avatars that have name starting with http://
+ // the name is used.
+ // for local avatars the localPath is used instead
+ const QString &identificationString(){ return m_bRemote ? m_szName : m_szLocalPath; };
+
+
+ // if name is http://xxxx
+ // then identification is the name
+ // if name is xxx.png
+ // then identification is the local path
+
+
+ // name : visible name of the avatar : url or filename
+ // ex: http://www.kvirc.net/img/pragma.png
+ // ex: pragma.png
+ // local path : local path
+ // ex: /home/pragma/.kvirc/avatars/http.www.kvirc.net.img.pragma.png
+ // ex: /home/pragma/.kvirc/avatars/pragma.png
+
+ // local path->name : strip leading path informations
+ // name->local path : replace : / and
+
+};
+
+#endif //_KVI_AVATAR_H_
diff --git a/src/kvilib/irc/kvi_avatarcache.cpp b/src/kvilib/irc/kvi_avatarcache.cpp
new file mode 100644
index 00000000..d24562ea
--- /dev/null
+++ b/src/kvilib/irc/kvi_avatarcache.cpp
@@ -0,0 +1,250 @@
+//=============================================================================
+//
+// File : kvi_avatarcache.cpp
+// Created on Sat 27 Dec 2003 21:19:47 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+#define __KVILIB__
+
+
+#include "kvi_avatarcache.h"
+#include "kvi_pointerlist.h"
+#include "kvi_config.h"
+
+// this level triggers a cleanup
+#define MAX_AVATARS_IN_CACHE 100
+// this is the level that has be reached by a cleanup
+#define CACHE_GUARD_LEVEL 85
+// dictionary size
+#define CACHE_DICT_SIZE 101
+// keep the unaccessed avatars for 30 days
+#define MAX_UNACCESSED_TIME (3600 * 24 * 30)
+
+
+KviAvatarCache * KviAvatarCache::m_pAvatarCacheInstance = 0;
+
+void KviAvatarCache::init()
+{
+ if(m_pAvatarCacheInstance)
+ {
+ debug("WARNING: trying to initialize the avatar cache twice");
+ return;
+ }
+
+ m_pAvatarCacheInstance = new KviAvatarCache();
+}
+
+void KviAvatarCache::done()
+{
+ if(!m_pAvatarCacheInstance)
+ {
+ debug("WARNING: trying to destroy an uninitialized avatar cache");
+ return;
+ }
+
+ delete m_pAvatarCacheInstance;
+ m_pAvatarCacheInstance = 0;
+}
+
+
+KviAvatarCache::KviAvatarCache()
+{
+ m_pAvatarDict = new KviPointerHashTable<QString,KviAvatarCacheEntry>(CACHE_DICT_SIZE,false);
+ m_pAvatarDict->setAutoDelete(true);
+}
+
+KviAvatarCache::~KviAvatarCache()
+{
+ delete m_pAvatarDict;
+}
+
+
+void KviAvatarCache::replace(const QString &szIdString,const KviIrcMask &mask,const QString &szNetwork)
+{
+ QString szKey;
+
+ mask.mask(szKey,KviIrcMask::NickCleanUserSmartNet);
+ szKey.append(QChar('+'));
+ szKey.append(szNetwork);
+
+ KviAvatarCacheEntry * e = new KviAvatarCacheEntry;
+ e->szIdString = szIdString;
+ e->tLastAccess = kvi_unixTime();
+
+ m_pAvatarDict->replace(szKey,e);
+
+ if(m_pAvatarDict->count() > MAX_AVATARS_IN_CACHE)
+ {
+ cleanup();
+ }
+}
+
+void KviAvatarCache::remove(const KviIrcMask &mask,const QString &szNetwork)
+{
+ QString szKey;
+
+ mask.mask(szKey,KviIrcMask::NickCleanUserSmartNet);
+ szKey.append(QChar('+'));
+ szKey.append(szNetwork);
+
+ m_pAvatarDict->remove(szKey);
+}
+
+
+
+const QString & KviAvatarCache::lookup(const KviIrcMask &mask,const QString &szNetwork)
+{
+ QString szKey;
+
+ mask.mask(szKey,KviIrcMask::NickCleanUserSmartNet);
+ szKey.append(QChar('+'));
+ szKey.append(szNetwork);
+
+ KviAvatarCacheEntry * e = m_pAvatarDict->find(szKey);
+ if(!e)return KviQString::empty;
+ e->tLastAccess = kvi_unixTime();
+ return e->szIdString;
+}
+
+void KviAvatarCache::load(const QString &szFileName)
+{
+ m_pAvatarDict->clear();
+
+ KviConfig cfg(szFileName,KviConfig::Read);
+
+ kvi_time_t tNow = kvi_unixTime();
+
+ KviConfigIterator it(*(cfg.dict()));
+
+ int cnt = 0;
+
+ while(it.current())
+ {
+ cfg.setGroup(it.currentKey());
+
+ kvi_time_t tLastAccess = cfg.readUIntEntry("LastAccess",0);
+ if((tNow - tLastAccess) < MAX_UNACCESSED_TIME)
+ {
+ QString szIdString = cfg.readQStringEntry("Avatar","");
+
+ if(!szIdString.isEmpty())
+ {
+ KviAvatarCacheEntry * e = new KviAvatarCacheEntry;
+ e->tLastAccess = tLastAccess;
+ e->szIdString = szIdString;
+ m_pAvatarDict->replace(it.currentKey(),e);
+ cnt++;
+ if(cnt >= MAX_AVATARS_IN_CACHE)return; // done
+ }
+ }
+ ++it;
+ }
+}
+
+void KviAvatarCache::save(const QString &szFileName)
+{
+ KviConfig cfg(szFileName,KviConfig::Write);
+// cfg.clear(); // not needed with KviConfig::Write
+
+ KviPointerHashTableIterator<QString,KviAvatarCacheEntry> it(*m_pAvatarDict);
+
+ while(KviAvatarCacheEntry * e = it.current())
+ {
+ if(e->tLastAccess)
+ {
+ cfg.setGroup(it.currentKey());
+ cfg.writeEntry("Avatar",e->szIdString);
+ cfg.writeEntry("LastAccess",((unsigned int)(e->tLastAccess)));
+ }
+ ++it;
+ }
+}
+
+void KviAvatarCache::cleanup()
+{
+ // first do a quick run deleting the avatars really too old
+ KviPointerHashTableIterator<QString,KviAvatarCacheEntry> it(*m_pAvatarDict);
+
+ kvi_time_t tNow = kvi_unixTime();
+
+ KviPointerList<QString> l;
+ l.setAutoDelete(false);
+
+ KviAvatarCacheEntry * e;
+
+ while((e = it.current()))
+ {
+ if((tNow - e->tLastAccess) > MAX_UNACCESSED_TIME)
+ {
+ l.append(new QString(it.currentKey()));
+ }
+ ++it;
+ }
+
+ for(QString *s = l.first();s;s = l.next())m_pAvatarDict->remove(*s);
+
+ if(m_pAvatarDict->count() < CACHE_GUARD_LEVEL)return;
+
+ // not done.. need to kill the last accessed :/
+
+ it.toFirst();
+
+ KviPointerList<KviAvatarCacheEntry> ll;
+ ll.setAutoDelete(true);
+
+ // here we use the cache entries in another way
+ // szAvatar is the KEY instead of the avatar name
+
+ while((e = it.current()))
+ {
+ KviAvatarCacheEntry * current = ll.first();
+ unsigned int idx = 0;
+ while(current)
+ {
+ // if the current is newer than the inserted one
+ // then stop searching and insert it just before
+ if(current->tLastAccess > e->tLastAccess)break;
+ // otherwise the current is older and the inserted
+ // one goes after
+ current = ll.next();
+ idx++;
+ }
+
+ KviAvatarCacheEntry * xx = new KviAvatarCacheEntry;
+ xx->szIdString = it.currentKey();
+ xx->tLastAccess = e->tLastAccess;
+
+ if(current)ll.insert(idx,xx);
+ else ll.append(xx);
+ ++it;
+ }
+
+ // the oldest keys are at the beginning
+ int uRemove = ll.count() - CACHE_GUARD_LEVEL;
+ if(uRemove < 1)return; // huh ?
+
+ // remember that szAvatar contains the key!
+ for(e = ll.first();e && (uRemove > 0);e = ll.next())
+ {
+ m_pAvatarDict->remove(e->szIdString);
+ uRemove--;
+ }
+ // now we should be ok
+}
diff --git a/src/kvilib/irc/kvi_avatarcache.h b/src/kvilib/irc/kvi_avatarcache.h
new file mode 100644
index 00000000..7d715256
--- /dev/null
+++ b/src/kvilib/irc/kvi_avatarcache.h
@@ -0,0 +1,69 @@
+#ifndef _KVI_AVATARCACHE_H_
+#define _KVI_AVATARCACHE_H_
+//=============================================================================
+//
+// File : kvi_avatarcache.h
+// Created on Sat 27 Dec 2003 21:19:47 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_time.h"
+#include "kvi_ircmask.h"
+
+#include "kvi_pointerhashtable.h"
+
+
+typedef struct _KviAvatarCacheEntry
+{
+ QString szIdString;
+ kvi_time_t tLastAccess;
+} KviAvatarCacheEntry;
+
+
+
+class KVILIB_API KviAvatarCache
+{
+protected:
+ KviAvatarCache();
+ ~KviAvatarCache();
+public:
+ KviPointerHashTable<QString,KviAvatarCacheEntry> * m_pAvatarDict;
+protected:
+ static KviAvatarCache * m_pAvatarCacheInstance;
+public:
+ static void init();
+ static void done();
+
+ static KviAvatarCache * instance(){ return m_pAvatarCacheInstance; };
+
+ void replace(const QString &szIdString,const KviIrcMask &mask,const QString &szNetwork);
+ void remove(const KviIrcMask &mask,const QString &szNetwork);
+ const QString & lookup(const KviIrcMask &mask,const QString &szNetwork);
+
+ void cleanup();
+
+ void load(const QString &szFileName);
+ void save(const QString &szFileName);
+};
+
+
+#endif //!_KVI_AVATARCACHE_H_
diff --git a/src/kvilib/irc/kvi_ircmask.cpp b/src/kvilib/irc/kvi_ircmask.cpp
new file mode 100644
index 00000000..dbdc1b6c
--- /dev/null
+++ b/src/kvilib/irc/kvi_ircmask.cpp
@@ -0,0 +1,760 @@
+//=============================================================================
+//
+// File : kvi_ircuser.cpp
+// Creation date : Fri Jan 8 1999 20:56:07 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+
+#include "kvi_debug.h"
+#include "kvi_ircmask.h"
+
+/*
+ @doc: irc_masks
+ @title:
+ Irc masks
+ @type:
+ generic
+ @short:
+ Decription of the standard IRC masks
+ @keyterms:
+ irc masks , nickname , username , hostname , wildcard
+ @body:
+ [big]Simple masks[/big][br]
+ An irc mask is a string in a special format that identifies an user on irc.[br]
+ The standard basic format is:[br]
+ [b]<nick>!<username>@<host>[/b][br]
+ The <nick> part contains the nickname with that the user is widely known across the network.[br]
+ The nickname format is generally restricted by the irc network rules: usually it has a maximum
+ length (9 on actual IrcNet servers for example), and can contain only a defined set of characters.
+ Just as example, the character '!' obviously can't be included in a nickname.[br]
+ The <username> part is the machine username of the remote user: this is usually
+ retrieved by the irc server at connect time by contacting the ident service on the user's machine.
+ Some IRC servers allow specifying this username inside the login messages and do not connect
+ to the ident service at all.[br]
+ The <username> often has a special prefix character added by the irc server:[br]
+ this is rather server specific protocol , but the prefixes are somewhat standardized and
+ the common meanings of them are:[br]
+ noprefix: I line with ident[br]
+ ^: I line with OTHER type ident[br]
+ ~: I line, no ident[br]
+ +: i line with ident[br]
+ =: i line with OTHER type ident[br]
+ -: i line, no ident[br]
+ So finally you can find <username> strings like "~pragma" or "^pragma", where "pragma"
+ is the system username of the irc-user and ~ and ^ are prefixes.[br]
+ The <host> part is the hostname of the remote user.[br]
+ In most cases it is the human-readable format of the host name, but sometimes
+ it happens to be an IP-address (when the host has no reverse dns entry).[br]
+ The IP address can be either in IPV4 format or in IPV6 format.[br]
+ Some (weird from my point of view) servers hide certain parts of the IP address to
+ prevent attacks to the user's machine.[br]
+ Here are some examples of full irc-masks:[br]
+ Pragma!^[email protected][br]
+ [jazz][email protected][br]
+ HAN!^solo@ff0f:a0a0:1011::ea80:1[br]
+ The irc-masks are [b]case insensitive[/b].[br]
+ [br]
+ [big]Wildcard masks[/big][br]
+ In some contexts the irc-masks can contain '*' and '?' wildcards.[br]
+ The wild masks are used to "match" an user within a set of them.[br]
+ '*' matches any sequence (eventually empty) of characters and '?' matches a single character.[br]
+ Wildcards are allowed only in the <nick> , <user> and <host> part: so the
+ "wildest" mask possible is:[br]
+ [b]*!*@*[/b][br]
+ that designates "any nickname, any username on any host".[br]
+ Here are some examples of wild masks:[br]
+ Pragma!*[email protected].*: matches any user with nickname "Pragma" , username that ends with "pragma" and
+ coming from any machine on the 212.101.102 network.[br]
+ *!solo@*.starwars.org: matches any nick with username solo (no prefix!) coming from any machine in
+ the starwars.org domain.[br]
+ Pragma!*@*: matches any user with nickname "Pragma".[br]
+*/
+
+/*
+const char * KviIrcMask::setMask(const char *szMask,char c)
+{
+ __range_valid(szMask);
+ //0123456789
+ register const char *p=szMask;
+ //Run over nick....
+ while(*p && (*p != '!'))p++;
+ int len = p - szMask;
+ if(len > 0){
+ m_nick_ptr = (char *)kvi_realloc(m_nick_ptr,len+1);
+ kvi_memmove((void *)m_nick_ptr,(void *)szMask,len);
+ } else { //Empty nick...set it to "*"
+ len = 1;
+ m_nick_ptr = (char *)kvi_realloc(m_nick_ptr,len+1);
+ kvi_memmove((void *)m_nick_ptr,(void *)"*",len);
+ }
+ *(m_nick_ptr+len) = '\0'; //With zero length nick it will be just an empty-string
+ if(!(*p)){
+ setHost("*");
+ setUsername("*");
+ return p;
+ }
+ szMask = ++p;
+ //The username
+ while(*p && (*p != '@'))p++;
+ len = p - szMask;
+ if(len > 0){
+ m_user_ptr = (char *)kvi_realloc(m_user_ptr,len+1);
+ kvi_memmove((void *)m_user_ptr,(void *)szMask,len);
+ } else {
+ len = 1;
+ m_user_ptr = (char *)kvi_realloc(m_user_ptr,len+1);
+ kvi_memmove((void *)m_user_ptr,(void *)"*",len);
+ }
+ *(m_user_ptr+len) = '\0';
+ if(!(*p)){
+ setHost("*");
+ return p;
+ }
+ szMask = ++p;
+ //And finally the host
+ while(*p && (*p != c))p++;
+ len = p - szMask;
+ if(len > 0){
+ m_host_ptr = (char *)kvi_realloc(m_host_ptr,len+1);
+ kvi_memmove((void *)m_host_ptr,(void *)szMask,len);
+ } else {
+ len = 1;
+ m_host_ptr = (char *)kvi_realloc(m_host_ptr,len+1);
+ kvi_memmove((void *)m_host_ptr,(void *)"*",len);
+ }
+ *(m_host_ptr+len) = '\0';
+ return p;
+}
+
+const char * KviIrcMask::setUserhostMask(const char *szMask)
+{
+ __range_valid(szMask);
+ //nick[*]=<+!->[email protected]
+ //0123456789
+ register const char *p=szMask;
+ // Run over nick....
+ while(*p && (*p != '*') && (*p != '=') && (!isspace(*p)))p++;
+ // extract it
+ int len = p - szMask;
+ if(len > 0){
+ m_nick_ptr = (char *)kvi_realloc(m_nick_ptr,len+1);
+ kvi_memmove((void *)m_nick_ptr,(void *)szMask,len);
+ } else { //Empty nick...set it to "*"
+ len = 1;
+ m_nick_ptr = (char *)kvi_realloc(m_nick_ptr,len+1);
+ kvi_memmove((void *)m_nick_ptr,(void *)"*",len);
+ }
+ *(m_nick_ptr+len) = '\0'; //With zero length nick it will be just an empty-string
+ // now skip all the flags
+ while(*p && ((*p=='*')||(*p=='=')||(*p=='+')||(*p=='-')) && (!isspace(*p)))p++;
+ // check...
+ if((!(*p)) || isspace(*p)){
+ // ooops , finished or isspace
+ setHost("*");
+ setUsername("*");
+ while(*p && isspace(*p))p++;
+ return p;
+ }
+
+ szMask = p;
+ //The username
+ while(*p && (*p != '@') && (!isspace(*p)))p++;
+ len = p - szMask;
+ if(len > 0){
+ m_user_ptr = (char *)kvi_realloc(m_user_ptr,len+1);
+ kvi_memmove((void *)m_user_ptr,(void *)szMask,len);
+ } else {
+ len = 1;
+ m_user_ptr = (char *)kvi_realloc(m_user_ptr,len+1);
+ kvi_memmove((void *)m_user_ptr,(void *)"*",len);
+ }
+ *(m_user_ptr+len) = '\0';
+
+ if((!(*p))||isspace(*p)){
+ // oops finished or isspace
+ setHost("*");
+ while(*p && isspace(*p))p++;
+ return p;
+ }
+ szMask = ++p;
+ //And finally the host
+ while(*p && (!isspace(*p)))p++;
+ len = p - szMask;
+ if(len > 0){
+ m_host_ptr = (char *)kvi_realloc(m_host_ptr,len+1);
+ kvi_memmove((void *)m_host_ptr,(void *)szMask,len);
+ } else {
+ len = 1;
+ m_host_ptr = (char *)kvi_realloc(m_host_ptr,len+1);
+ kvi_memmove((void *)m_host_ptr,(void *)"*",len);
+ }
+ *(m_host_ptr+len) = '\0';
+ while(*p && isspace(*p))p++;
+ return p;
+}
+
+*/
+
+KviIrcMask::KviIrcMask()
+{
+ m_szHost = m_szWild;
+ m_szUser = m_szWild;
+ m_szNick = m_szWild;
+}
+
+KviIrcMask::KviIrcMask(const QString &szMask)
+{
+ static QString szWild("*");
+ const QChar * b = KviQString::nullTerminatedArray(szMask);
+ if(b)
+ {
+ const QChar * p = b;
+ while(p->unicode() && (p->unicode() != '!'))p++;
+ if(p->unicode())
+ {
+ if(p != b)
+ {
+ m_szNick.setUnicode(b,p-b);
+ } else {
+ m_szNick = szWild; // ???
+ }
+ } else {
+ if(p != b)m_szNick.setUnicode(b,p-b);
+ else m_szNick = szWild; // ???
+ m_szUser = szWild;
+ m_szHost = szWild;
+ return;
+ }
+ p++;
+ b = p;
+ while(p->unicode() && (p->unicode() != '@'))p++;
+ if(p->unicode())
+ {
+ if(p != b)
+ {
+ m_szUser.setUnicode(b,p-b);
+ } else {
+ m_szUser = szWild; // ???
+ }
+ } else {
+ if(p != b)m_szUser.setUnicode(b,p-b);
+ else m_szUser = szWild; // ???
+ m_szHost = szWild;
+ return;
+ }
+ p++;
+ b=p;
+ while(p->unicode())p++;
+ if(p != b)
+ {
+ m_szHost.setUnicode(b,p-b);
+ } else {
+ m_szHost = szWild; // ???
+ }
+
+ } else {
+ m_szUser = szWild;
+ m_szHost = szWild;
+ m_szNick = szWild;
+ }
+}
+
+QString KviIrcMask::m_szWild("*");
+
+bool KviIrcMask::hasNumericHost() const
+{
+ const QChar * p = KviQString::nullTerminatedArray(m_szHost);
+ if(!p)return false;
+ int nPoints = 0;
+ int nDoublePoints = 0;
+ unsigned short uc;
+ while((uc = p->unicode()))
+ {
+ if(uc == '.')nPoints++; // ipv6 masks can contain dots too!
+ else {
+ if(uc == ':')nDoublePoints++;
+ else {
+ if((uc < '0') || (uc > '9'))
+ {
+#ifdef COMPILE_USE_QT4
+ uc = p->toUpper().unicode();
+#else
+ uc = p->upper().unicode();
+#endif
+ if((uc < 'A') || (uc > 'F'))return false;
+ }
+ }
+ }
+ p++;
+ }
+ return ((nPoints == 3) || (nDoublePoints > 1));
+}
+
+
+/**
+* Retuns in szMask the specified (if possible) mask of this user.<br>
+* If the host or username are not known , the mask may contain less information
+* than requested.<br>
+* Mask types:<br>
+* 0 : [email protected] ([email protected]) (default)<br>
+* 1 : nick!user@*.host.top ([email protected].*)<br>
+* 2 : nick!user@*<br>
+* 3 : nick!*@machine.host.top ([email protected])<br>
+* 4 : nick!*@*.host.top ([email protected].*)<br>
+* 5 : nick!*@*<br>
+* 7 : *!user@*.host.top (*[email protected].*)<br>
+* 8 : *!user@*<br>
+* 9 : *!*@machine.host.top (*!*@XXX.XXX.XXX.XXX)<br>
+* 10: *!*@*.host.top (*!*@XXX.XXX.XXX.*)<br>
+* 11: nick!*[email protected] (nick!*[email protected])<br>
+* 12: nick!*user@*.host.top (nick!*user@*.host.top)<br>
+* 13: nick!*user@*<br>
+* 15: *!*user@*.host.top (*!*user@*.host.top)<br>
+* 16: *!*user@*<br>
+* 17: nick!~user@*.host.top ([email protected].*)
+* 18: nick!*@*.host.top (nick!*@XXX.XXX.*)
+* 19: *!~user@*.host.top (*[email protected].*)
+* 20: nick!*user@*.host.top (nick!*[email protected].*)
+* 21: *!*user@*.host.top (*!user@*XXX.XXX.*)
+* smart versions of the masks 17-21 that try take care of masked ip addresses
+* in the form xxx.xxx.INVALID-TOP-MASK
+* 22: nick!~user@*.host.top ([email protected].*)
+* 23: nick!*@*.host.top (nick!*@XXX.XXX.*)
+* 24: *!~user@*.host.top (*[email protected].*)
+* 25: nick!*user@*.host.top (nick!*[email protected].*)
+* 26: *!*user@*.host.top (*!user@*XXX.XXX.*)
+* If some data is missing , these types may change:<br>
+* For example , if hostname is missing , the mask type 3 or 4 may be reduced to type 5
+*/
+
+/*
+** ident is fun.. ahem
+** prefixes used:
+** none I line with ident
+** ^ I line with OTHER type ident
+** ~ I line, no ident
+** + i line with ident
+** = i line with OTHER type ident
+** - i line, no ident
+*/
+
+static unsigned char maskTable[27][3] = {
+ { 0 , 0 , 0 }, //0 means normal block
+ { 0 , 0 , 2 }, //2 in the third field means type *.abc.host.top (or XXX.XXX.XXX.*) host mask
+ { 0 , 0 , 1 }, //2 in the second field means *user (strip prefixes)
+ { 0 , 1 , 0 }, //1 means *
+ { 0 , 1 , 2 }, //3 in the third field means type *.host.top (or XXX.XXX.*) host mask
+ { 0 , 1 , 1 }, //4 in the third field is like 3 but tries to detect masked ip addresses too
+ { 1 , 0 , 0 },
+ { 1 , 0 , 2 },
+ { 1 , 0 , 1 },
+ { 1 , 1 , 0 },
+ { 1 , 1 , 2 },
+ { 0 , 2 , 0 },
+ { 0 , 2 , 2 },
+ { 0 , 2 , 1 },
+ { 1 , 2 , 0 },
+ { 1 , 2 , 2 },
+ { 1 , 2 , 1 },
+ { 0 , 0 , 3 },
+ { 0 , 1 , 3 },
+ { 1 , 0 , 3 },
+ { 0 , 2 , 3 },
+ { 1 , 2 , 3 },
+ { 0 , 0 , 4 },
+ { 0 , 1 , 4 },
+ { 1 , 0 , 4 },
+ { 0 , 2 , 4 },
+ { 1 , 2 , 4 }
+};
+
+void KviIrcMask::mask(QString &szMask,MaskType eMaskType) const
+{
+ if((((int)eMaskType) > 26)||(((int)eMaskType) < 0))eMaskType = NickUserHost;
+ szMask = maskTable[((int)eMaskType)][0] ? m_szWild : m_szNick;
+ szMask.append("!");
+ switch(maskTable[((int)eMaskType)][1])
+ {
+ case 0:
+ szMask.append(m_szUser);
+ break;
+ case 1:
+ szMask.append(m_szWild);
+ break;
+ default:
+ if (m_szUser.length() > 0) {
+ if(m_szUser[0].unicode() != '*')
+ szMask.append(m_szWild);
+ if ((m_szUser[0].unicode() == '~') ||
+ (m_szUser[0].unicode() == '^') ||
+ (m_szUser[0].unicode() == '+') ||
+ (m_szUser[0].unicode() == '-') ||
+ (m_szUser[0].unicode() == '='))szMask.append(m_szUser.right(m_szUser.length() - 1));
+ else
+ szMask.append(m_szUser);
+ }
+ break;
+ }
+ szMask.append('@');
+ switch(maskTable[((int)eMaskType)][2])
+ {
+ case 0:
+ szMask.append(m_szHost);
+ break;
+ case 1:
+ szMask.append(m_szWild);
+ break;
+ case 2:
+ if(m_szHost != m_szWild)
+ {
+ if(hasNumericHost())
+ {
+ QString szHost(m_szHost.left(getIpDomainMaskLen()));
+ szMask.append(szHost);
+ szMask.append(m_szWild);
+ } else {
+ szMask.append(m_szWild);
+ szMask.append(getHostDomainMask());
+ }
+ } else {
+ szMask.append(m_szWild);
+ }
+ break;
+ case 3:
+ if(m_szHost != m_szWild)
+ {
+ if(hasNumericHost())
+ {
+ QString szHost(m_szHost.left(getLargeIpDomainMaskLen()));
+ szMask.append(szHost);
+ szMask.append(m_szWild);
+ } else {
+ szMask.append(m_szWild);
+ szMask.append(getLargeHostDomainMask());
+ }
+ } else {
+ szMask.append(m_szWild);
+ }
+ break;
+ default: // case 4 and others
+ if(m_szHost != m_szWild)
+ {
+ if(hasNumericHost() || hasMaskedIp())
+ {
+ QString szHost(m_szHost.left(getLargeIpDomainMaskLen()));
+ szMask.append(szHost);
+ szMask.append(m_szWild);
+ } else {
+ szMask.append(m_szWild);
+ szMask.append(getLargeHostDomainMask());
+ }
+ } else {
+ szMask.append(m_szWild);
+ }
+ break;
+ }
+}
+
+
+/*
+bool KviIrcMask::matches(const char *szMask)
+{
+ const char * ret1;
+ const char * ret2;
+
+ if(kvi_matchWildExprWithTerminator(szMask,m_nick_ptr,'!',&ret1,&ret2))
+ {
+ if(*ret1 == '!')
+ {
+ ret1++;
+ if(kvi_matchWildExprWithTerminator(ret1,m_user_ptr,'@',&ret1,&ret2))
+ {
+ if(*ret1 == '@')
+ {
+ ret1++;
+ return kvi_matchWildExpr(ret1,m_host_ptr);
+ }
+ }
+ }
+ }
+ return false;
+}
+*/
+
+/*
+bool KviIrcMask::matchesFixed(const char *szMask) const
+{
+ const char * ret1;
+ const char * ret2;
+
+ if(kvi_matchStringWithTerminator(m_nick_ptr,szMask,'!',&ret1,&ret2))
+ {
+ if(*ret2 == '!')
+ {
+ ret2++;
+ if(kvi_matchStringWithTerminator(m_user_ptr,ret2,'@',&ret1,&ret2))
+ {
+ if(*ret2 == '@')
+ {
+ ret2++;
+ return kvi_matchString(m_host_ptr,ret2);
+ }
+ }
+ }
+ }
+ return false;
+}
+*/
+
+/*
+bool KviIrcMask::matchedBy(const QString &szMask) const
+{
+ const char * ret1;
+ const char * ret2;
+
+ if(kvi_matchStringWithTerminator(szMask,m_nick_ptr,'!',&ret1,&ret2))
+ {
+ if(*ret1 == '!')
+ {
+ ret1++;
+ if(kvi_matchStringWithTerminator(ret1,m_user_ptr,'@',&ret1,&ret2))
+ {
+ if(*ret1 == '@')
+ {
+ ret1++;
+ return kvi_matchString(ret1,m_host_ptr);
+ }
+ }
+ }
+ }
+ return false;
+}
+*/
+
+bool KviIrcMask::matches(const KviIrcMask &mask) const
+{
+ if(KviQString::matchWildExpressionsCI(m_szNick,mask.m_szNick))
+ {
+ if(KviQString::matchWildExpressionsCI(m_szUser,mask.m_szUser))
+ {
+ if(KviQString::matchWildExpressionsCI(m_szHost,mask.m_szHost))return true;
+ }
+ }
+ return false;
+}
+
+bool KviIrcMask::matchesFixed(const KviIrcMask &mask) const
+{
+ if(KviQString::matchStringCI(m_szNick,mask.m_szNick,0,1))
+ {
+ if(KviQString::matchStringCI(m_szUser,mask.m_szUser,0,1))
+ {
+ if(KviQString::matchStringCI(m_szHost,mask.m_szHost,0,1))return true;
+ }
+ }
+ return false;
+}
+
+/*
+bool KviIrcMask::matches(const char * nick,const char * user,const char * host)
+{
+ if(nick)
+ {
+ if(!kvi_matchWildExpr(m_nick_ptr,nick))return false;
+ }
+
+ if(user)
+ {
+ if(!kvi_matchWildExpr(m_user_ptr,user))return false;
+ }
+
+ if(host)
+ {
+ if(!kvi_matchWildExpr(m_host_ptr,host))return false;
+ }
+ return true;
+}
+*/
+
+bool KviIrcMask::matchesFixed(const QString &nick,const QString &user,const QString &host) const
+{
+ if(!KviQString::matchStringCI(m_szNick,nick,0,1))return false;
+ if(!KviQString::matchStringCI(m_szUser,user,0,1))return false;
+ if(!KviQString::matchStringCI(m_szHost,host,0,1))return false;
+ return true;
+}
+
+//Internals for mask()
+
+int KviIrcMask::getIpDomainMaskLen() const
+{
+ int len = m_szHost.length();
+ const QChar *p = m_szHost.unicode();
+ const QChar *b = p;
+ p += len;
+ if(b < p)
+ {
+ p--;
+ while((b < p) && (p->unicode() != '.') && (p->unicode() != ':'))p--;
+ }
+ // 000.000.000.000
+ // p
+ //
+ return (p == b) ? 0 : ((p-b) + 1);
+}
+
+
+int KviIrcMask::getLargeIpDomainMaskLen() const
+{
+ int len = m_szHost.length();
+ const QChar *p = m_szHost.unicode();
+ const QChar *b = p;
+ p += len;
+ if(b < p)
+ {
+ p--;
+ while((b < p) && (p->unicode() != '.') && (p->unicode() != ':'))p--;
+ if(b < p)
+ {
+ p--;
+ while((b < p) && (p->unicode() != '.') && (p->unicode() != ':'))p--;
+ }
+ }
+ // 000.000.000.000
+ // p
+ //
+ return (p == b) ? 0 : ((p-b) + 1);
+}
+
+QString KviIrcMask::getHostDomainMask() const
+{
+ int len = m_szHost.length();
+ const QChar *p=KviQString::nullTerminatedArray(m_szHost);
+ if(!p)return QString::null;
+ const QChar *b = p;
+ while(p->unicode() && p->unicode() != '.')p++;
+ QString ret(p,len - (p - b));
+ return ret;
+}
+
+
+QString KviIrcMask::getLargeHostDomainMask() const
+{
+ int len = m_szHost.length();
+ const QChar *p = m_szHost.unicode();
+ const QChar *b = p;
+ p += len;
+
+ if(b < p)
+ {
+ p--;
+ while((b < p) && (p->unicode() != '.'))p--;
+ if(b < p)
+ {
+ p--;
+ while((b < p) && (p->unicode() != '.'))p--;
+ }
+ }
+
+ // xyz.klm.abc.host.top
+ // p
+
+ QString ret(p,len - (p - b));
+ return ret;
+}
+
+// this is just a GUESS and must be called AFTER making sure that it is NOT a plain numeric IP
+bool KviIrcMask::hasMaskedIp() const
+{
+ int len = m_szHost.length();
+ const QChar *p = m_szHost.unicode();
+ const QChar *b = p;
+ if(len == 0)return false;
+ //run to the end
+ p += len;
+ const QChar *e = p;
+ p--;
+ while((b < p) && (p->unicode() != '.'))p--;
+ return ((e - p) > 4); // at the moment 4 should be enough : the largest top part is "name"
+}
+
+
+bool KviIrcMask::operator==(const KviIrcMask &user)
+{
+ if(KviQString::equalCI(m_szNick,user.m_szNick))
+ {
+ if(KviQString::equalCI(m_szUser,user.m_szUser))
+ {
+ if(KviQString::equalCI(m_szHost,user.m_szHost))return true;
+ }
+ }
+ return false;
+}
+
+bool KviIrcMask::hasWildNick()
+{
+ const QChar * aux = KviQString::nullTerminatedArray(m_szNick);
+ if(!aux)return false;
+ unsigned short uc;
+ while((uc = aux->unicode()))
+ {
+ if((uc == '*') || (uc == '?'))return true;
+ aux++;
+ }
+ return false;
+}
+
+int KviIrcMask::nonWildChars()
+{
+ int iCnt = 0;
+ const QChar * aux = KviQString::nullTerminatedArray(m_szNick);
+ if(!aux)return 0;
+ unsigned short uc;
+
+ while((uc = aux->unicode()))
+ {
+ if((uc != '*') && (uc != '?'))iCnt++;
+ aux++;
+ }
+
+ aux = KviQString::nullTerminatedArray(m_szUser);
+ while((uc = aux->unicode()))
+ {
+ if((uc != '*') && (uc != '?'))iCnt++;
+ aux++;
+ }
+
+
+ aux = KviQString::nullTerminatedArray(m_szHost);
+ while((uc = aux->unicode()))
+ {
+ if((uc != '*') && (uc != '?'))iCnt++;
+ aux++;
+ }
+ return iCnt;
+}
diff --git a/src/kvilib/irc/kvi_ircmask.h b/src/kvilib/irc/kvi_ircmask.h
new file mode 100644
index 00000000..3c9ccf5d
--- /dev/null
+++ b/src/kvilib/irc/kvi_ircmask.h
@@ -0,0 +1,164 @@
+#ifndef _KVI_IRCMASK_H_
+#define _KVI_IRCMASK_H_
+
+//=============================================================================
+//
+// File : kvi_ircmask.h
+// Creation date : Fri Jan 8 1999 19:50:35 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+// originally this file was named kvi_ircuser.h and the class was KviIrcUser
+// ported to UNICODE on 2004.10.28 1:50 am
+
+#include "kvi_settings.h"
+#include "kvi_heapobject.h"
+#include "kvi_qstring.h"
+
+//=============================================================================
+// Irc user mask abstraction
+//=============================================================================
+
+class KVILIB_API KviIrcMask : public KviHeapObject
+{
+ friend class KviIrcUserList;
+ friend class KviIrcUserChanList;
+private:
+ QString m_szNick;
+ QString m_szUser;
+ QString m_szHost;
+ static QString m_szWild;
+public:
+ // Sets the nick for this user.<br>
+ // If szNick is NULL or it points to an empty string the nick is set to "*".<br>
+ void setNick(const QString &szNick){ m_szNick = szNick.isEmpty() ? m_szWild : szNick; };
+ // Sets the username for this user.<br>
+ // If szUsername is NULL or it points to an empty string the username is set to "*".<br>
+ void setUsername(const QString &szUser){ m_szUser = szUser.isEmpty() ? m_szWild : szUser; };
+ void setUser(const QString &szUser){ m_szUser = szUser.isEmpty() ? m_szWild : szUser; };
+ // Sets the host for this user.<br>
+ // If szHost is NULL or it points to an empty string the host is set to "*".<br>
+ void setHost(const QString &szHost){ m_szHost = szHost.isEmpty() ? m_szWild : szHost; };
+ // Sets the host , nick and username extracting it from an irc mask:<br>
+ // nick!user@host<br>
+ // The mask is terminated by end-of string null character or a character equal to c in the string.<br>
+ // Returns the pointer to the end of the mask in the szMask string.(c or null-terminator)<br>
+ //const char * setMask(const QString &szMask,char c=' ');
+ // Sets the host , nick and username extracting it from an userhost mask:<br>
+ // nick[*]=<+|->user@host<br>
+ // The mask is terminated by end-of string null char or a space character.<br>
+ // Returns the pointer to the next non-space char in the szMask string or to the null-terminator<br>
+ // If there are no more masks avaiable.
+ // WARNING : the szMask pointer can NOT be NULL
+ //const char *setUserhostMask(const QString &szMask);
+ // Returns the nick of this user.<br>
+ // In the worst case you get a string == "*"<br>
+ const QString &nick() const { return m_szNick; };
+ // DEPRECATED!
+ const QString &username() const { return m_szUser; };
+ const QString &user() const { return m_szUser; };
+ const QString &host() const { return m_szHost; };
+
+ bool hasUser() const { return !(m_szUser.isEmpty() || (m_szUser == m_szWild)); };
+ bool hasHost() const { return !(m_szHost.isEmpty() || (m_szHost == m_szWild)); };
+
+ bool hasNumericHost() const;
+ // Retuns in szMask the specified (if possible) mask of this user.<br>
+ // If the host or username are not known , the mask may contain less information
+ // than requested.<br>
+
+ enum MaskType
+ {
+ NickUserHost = 0, // [email protected] ([email protected]) (default)
+ NickUserNet = 1, // 1 : nick!~user@*.abc.host.top ([email protected].*)
+ NickUser = 2, // 2 : nick!~user@*
+ NickHost = 3, // 3 : nick!*@machine.host.top (nick!*@XXX.XXX.XXX.XXX)
+ NickNet = 4, // 4 : nick!*@*.abc.host.top (nick!*@XXX.XXX.XXX.*)
+ Nick = 5, // 5 : nick!*@*
+ UserHost = 6, // 6 : *[email protected] (*[email protected])
+ UserNet = 7, // 7 : *!~user@*.abc.host.top (*[email protected].*)
+ User = 8, // 8 : *!~user@*
+ Host = 9, // 9 : *!*@machine.host.top (*!*@XXX.XXX.XXX.XXX)
+ Net = 10, // 10: *!*@*.abc.host.top (*!*@XXX.XXX.XXX.*)
+ NickCleanUserHost = 11, // 11 : nick!*[email protected] (nick!*[email protected])
+ NickCleanUserNet = 12, // 12 : nick!*user@*.abc.host.top (nick!*[email protected].*)
+ NickCleanUser = 13, // 13 : nick!*user@*
+ CleanUserHost = 14, // 14 : *!*[email protected] (*!user@*XXX.XXX.XXX.XXX)
+ CleanUserNet = 15, // 15 : *!*user@*.abc.host.top (*!user@*XXX.XXX.XXX.*)
+ CleanUser = 16, // 16 : *!*user@*
+ NickUserLargeNet = 17, // 17 : nick!~user@*.host.top ([email protected].*)
+ NickLargeNet = 18, // 18 : nick!*@*.host.top (nick!*@XXX.XXX.*)
+ UserLargeNet = 19, // 19 : *!~user@*.host.top (*[email protected].*)
+ NickCleanUserLargeNet = 20, // 20 : nick!*user@*.host.top (nick!*[email protected].*)
+ CleanUserLargeNet = 21, // 21 : *!*user@*.host.top (*!user@*XXX.XXX.*)
+ // smart versions of the masks 17-21 that try take care of masked ip addresses
+ // in the form xxx.xxx.INVALID-TOP-MASK
+ NickUserSmartNet = 22, // 22 : nick!~user@*.host.top ([email protected].*)
+ NickSmartNet = 23, // 23 : nick!*@*.host.top (nick!*@XXX.XXX.*)
+ UserSmartNet = 24, // 24 : *!~user@*.host.top (*[email protected].*)
+ NickCleanUserSmartNet = 25, // 25 : nick!*user@*.host.top (nick!*[email protected].*)
+ CleanUserSmartNet = 26 // 26 : *!*user@*.host.top (*!user@*XXX.XXX.*)
+ };
+
+ void mask(QString &szMask,MaskType eMaskType = NickCleanUserHost) const;
+ bool hasWildNick();
+
+ // Wild external matches (this and external are wild)
+
+// bool matches(const char *szMask);
+// // passing 0 as one of params here means that it is a match by default
+// bool matches(const char *nick,const char *user,const char *host);
+ bool matches(const KviIrcMask &mask) const;
+
+
+ // Fixed external matches (this is wild , external is fixed)
+ bool matchesFixed(const QString &nick,const QString &user,const QString &host) const;
+// bool matchesFixed(const QString &szMask) const;
+ bool matchesFixed(const KviIrcMask &mask) const;
+
+ // Fixed internal matches (this is fixed , external is wild)
+ //bool matchedBy(const QString &szMask) const;
+ bool matchedBy(const KviIrcMask &mask) const { return mask.matchesFixed(*this); };
+
+ int nonWildChars();
+ bool operator==(const KviIrcMask &user);
+public:
+ // Constructs an empty mask (*!*@*)
+ KviIrcMask();
+ // Constructs this KviIrcMask object from a string mask
+ KviIrcMask(const QString &szMask);
+ // Carbon copy
+ KviIrcMask(const KviIrcMask &ircUser)
+ : m_szNick(ircUser.m_szNick), m_szUser(ircUser.m_szUser), m_szHost(ircUser.m_szHost) {};
+ KviIrcMask(const QString &nick,const QString &user,const QString &host)
+ : m_szNick(nick), m_szUser(user), m_szHost(host) {};
+private:
+ int getIpDomainMaskLen() const;
+ QString getHostDomainMask() const;
+ int getLargeIpDomainMaskLen() const;
+ QString getLargeHostDomainMask() const;
+ // this is just a GUESS and must be called AFTER making sure that it is NOT a plain numeric IP
+ bool hasMaskedIp() const;
+};
+
+
+
+
+#endif //_KVI_IRCMASK_H_
diff --git a/src/kvilib/irc/kvi_ircserver.cpp b/src/kvilib/irc/kvi_ircserver.cpp
new file mode 100644
index 00000000..5f03fb5e
--- /dev/null
+++ b/src/kvilib/irc/kvi_ircserver.cpp
@@ -0,0 +1,373 @@
+//=============================================================================
+//
+// File : kvi_ircserver.cpp
+// Creation date : Mon Jul 10 2000 03:42:59 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+#include "kvi_ircserver.h"
+#include "kvi_malloc.h"
+
+#include "kvi_config.h"
+#include "kvi_nickserv.h"
+#include "kvi_time.h"
+#include "kvi_proxydb.h"
+#include <stdlib.h>
+
+// This is not allowed on windows unless we force the symbol to be undefined
+// It works on linux since gcc allows undefined symbols by default
+// but it is also "theoretically" wrong:
+// kvilib is not linked to kvirc: it's kvirc being linked to kvilib
+// thus kvilib should not depend on symbols defined in the kvirc core.
+// We must find another way to do that (like having just the id and finding
+// the proxy in the kvirc core, or just passing the pointer to the db from outside).
+// Pragma
+
+//extern KVIRC_API KviProxyDataBase * g_pProxyDataBase;
+
+// FIXME: This should be renamed to KviServer or sth like that
+KviIrcServer::KviIrcServer()
+{
+ m_pReconnectInfo=0;
+ m_uFlags = 0;
+ m_uPort = 6667;
+ m_pChannelList = 0;
+ m_bAutoConnect = false;
+ m_iProxy = -1;
+}
+
+KviProxy* KviIrcServer::proxyServer(KviProxyDataBase * pDb)
+{
+ int i=0;
+ if(proxy()<0) return 0;
+ KviPointerList<KviProxy> * proxylist = pDb->proxyList();
+ for(KviProxy * p = proxylist->first();p;p = proxylist->next())
+ {
+ if(i==proxy()) return p;
+ i++;
+ }
+ return 0;
+}
+
+KviIrcServer::KviIrcServer(const KviIrcServer &serv)
+{
+ m_pReconnectInfo = 0;
+ m_szHostname = serv.m_szHostname;
+ m_szIp = serv.m_szIp;
+ m_szDescription = serv.m_szDescription;
+ m_szUser = serv.m_szUser;
+ m_szPass = serv.m_szPass;
+ m_uPort = serv.m_uPort;
+ m_szNick = serv.m_szNick;
+ m_szRealName = serv.m_szRealName;
+ m_szEncoding = serv.m_szEncoding;
+ m_uFlags = serv.m_uFlags;
+ m_szInitUMode = serv.m_szInitUMode;
+ m_szOnConnectCommand = serv.m_szOnConnectCommand;
+ m_szOnLoginCommand = serv.m_szOnLoginCommand;
+ m_szLinkFilter = serv.m_szLinkFilter;
+ m_szId = serv.m_szId;
+ m_iProxy = serv.m_iProxy;
+ m_szUserIdentityId = serv.m_szUserIdentityId;
+ if(serv.m_pChannelList)
+ m_pChannelList = new QStringList(*(serv.m_pChannelList));
+ else m_pChannelList = 0;
+ m_bAutoConnect = serv.m_bAutoConnect;
+}
+
+void KviIrcServer::operator=(const KviIrcServer &serv)
+{
+ m_szHostname = serv.m_szHostname;
+ m_szIp = serv.m_szIp;
+ m_szDescription = serv.m_szDescription;
+ m_szUser = serv.m_szUser;
+ m_szPass = serv.m_szPass;
+ m_uPort = serv.m_uPort;
+ m_szNick = serv.m_szNick;
+ m_szRealName = serv.m_szRealName;
+ m_szEncoding = serv.m_szEncoding;
+ m_uFlags = serv.m_uFlags;
+ m_szInitUMode = serv.m_szInitUMode;
+ m_szOnConnectCommand = serv.m_szOnConnectCommand;
+ m_szOnLoginCommand = serv.m_szOnLoginCommand;
+ m_szLinkFilter = serv.m_szLinkFilter;
+ m_szId = serv.m_szId;
+ m_szUserIdentityId = serv.m_szUserIdentityId;
+ m_iProxy = serv.m_iProxy;
+ if(m_pChannelList)delete m_pChannelList;
+ if(serv.m_pChannelList)
+ m_pChannelList = new QStringList(*(serv.m_pChannelList));
+ else m_pChannelList = 0;
+ m_bAutoConnect = serv.m_bAutoConnect;
+}
+
+
+KviIrcServer::~KviIrcServer()
+{
+ if(m_pChannelList)delete m_pChannelList;
+ if(m_pReconnectInfo) delete m_pReconnectInfo;
+}
+
+void KviIrcServer::generateUniqueId()
+{
+ struct timeval tv;
+ kvi_gettimeofday(&tv,0);
+ KviQString::sprintf(m_szId,"myserver%d%d%d",tv.tv_usec,rand() % 1000,rand() % 1000);
+}
+
+QString KviIrcServer::ircUri()
+{
+ QString uri("irc");
+ if(useSSL())uri += "s";
+ if(isIpV6())uri += "6";
+ uri += "://";
+ uri += m_szHostname;
+
+ if(m_uPort!=6667)
+ {
+ uri += ":";
+ QString num;
+ num.setNum(m_uPort);
+ uri += num;
+ }
+ return uri;
+}
+
+void KviIrcServer::setAutoJoinChannelList(QStringList * pNewChannelList)
+{
+ if(m_pChannelList)delete m_pChannelList;
+ m_pChannelList = pNewChannelList;
+}
+
+
+bool KviIrcServer::load(KviConfig * cfg,const QString &prefix)
+{
+ QString tmp;
+ KviQString::sprintf(tmp,"%QHostname",&prefix);
+ m_szHostname = cfg->readQStringEntry(tmp);
+ KviQString::sprintf(tmp,"%QIp",&prefix);
+ m_szIp = cfg->readQStringEntry(tmp);
+ if(m_szHostname.isEmpty() && m_szIp.isEmpty())return false;
+ KviQString::sprintf(tmp,"%QDescription",&prefix);
+ m_szDescription = cfg->readQStringEntry(tmp);
+ KviQString::sprintf(tmp,"%QUser",&prefix);
+ m_szUser = cfg->readQStringEntry(tmp);
+ KviQString::sprintf(tmp,"%QPass",&prefix);
+ m_szPass = cfg->readQStringEntry(tmp);
+ KviQString::sprintf(tmp,"%QNick",&prefix);
+ m_szNick = cfg->readQStringEntry(tmp);
+ KviQString::sprintf(tmp,"%QRealName",&prefix);
+ m_szRealName = cfg->readQStringEntry(tmp);
+ KviQString::sprintf(tmp,"%QInitUmode",&prefix);
+ m_szInitUMode = cfg->readQStringEntry(tmp);
+ KviQString::sprintf(tmp,"%QAutoJoinChannels",&prefix);
+ QStringList l = cfg->readStringListEntry(tmp,QStringList());
+ if(l.count() > 0)setAutoJoinChannelList(new QStringList(l));
+ KviQString::sprintf(tmp,"%QAutoConnect",&prefix);
+ m_bAutoConnect = cfg->readBoolEntry(tmp,false);
+ KviQString::sprintf(tmp,"%QEncoding",&prefix);
+ m_szEncoding = cfg->readQStringEntry(tmp);
+ KviQString::sprintf(tmp,"%QOnConnectCommand",&prefix);
+ m_szOnConnectCommand = cfg->readQStringEntry(tmp);
+ KviQString::sprintf(tmp,"%QOnLoginCommand",&prefix);
+ m_szOnLoginCommand = cfg->readQStringEntry(tmp);
+ KviQString::sprintf(tmp,"%QLinkFilter",&prefix);
+ m_szLinkFilter = cfg->readQStringEntry(tmp);
+ KviQString::sprintf(tmp,"%QPort",&prefix);
+ m_uPort = cfg->readUIntEntry(tmp,6667);
+ KviQString::sprintf(tmp,"%QId",&prefix);
+ m_szId = cfg->readQStringEntry(tmp);
+ if(m_szId.isEmpty())generateUniqueId();
+ KviQString::sprintf(tmp,"%QIpV6",&prefix);
+ setIpV6(cfg->readBoolEntry(tmp,false));
+ KviQString::sprintf(tmp,"%QCacheIp",&prefix);
+ setCacheIp(cfg->readBoolEntry(tmp,false)); // true ?
+ KviQString::sprintf(tmp,"%QSSL",&prefix);
+ setUseSSL(cfg->readBoolEntry(tmp,false));
+ KviQString::sprintf(tmp,"%QProxy",&prefix);
+ setProxy(cfg->readIntEntry(tmp,-2));
+ KviQString::sprintf(tmp,"%QUserIdentityId",&prefix);
+ m_szUserIdentityId = cfg->readQStringEntry(tmp);
+ return true;
+}
+
+void KviIrcServer::save(KviConfig * cfg,const QString &prefix)
+{
+ QString tmp;
+ KviQString::sprintf(tmp,"%QHostname",&prefix);
+ cfg->writeEntry(tmp,m_szHostname);
+ KviQString::sprintf(tmp,"%QId",&prefix);
+ cfg->writeEntry(tmp,m_szId);
+ if(!m_szIp.isEmpty())
+ {
+ KviQString::sprintf(tmp,"%QIp",&prefix);
+ cfg->writeEntry(tmp,m_szIp);
+ }
+ if(!m_szDescription.isEmpty())
+ {
+ KviQString::sprintf(tmp,"%QDescription",&prefix);
+ cfg->writeEntry(tmp,m_szDescription);
+ }
+ if(!m_szUser.isEmpty())
+ {
+ KviQString::sprintf(tmp,"%QUser",&prefix);
+ cfg->writeEntry(tmp,m_szUser);
+ }
+ if(!m_szPass.isEmpty())
+ {
+ KviQString::sprintf(tmp,"%QPass",&prefix);
+ cfg->writeEntry(tmp,m_szPass);
+ }
+ if(!m_szNick.isEmpty())
+ {
+ KviQString::sprintf(tmp,"%QNick",&prefix);
+ cfg->writeEntry(tmp,m_szNick);
+ }
+ if(!m_szRealName.isEmpty())
+ {
+ KviQString::sprintf(tmp,"%QRealName",&prefix);
+ cfg->writeEntry(tmp,m_szRealName);
+ }
+ if(!m_szInitUMode.isEmpty())
+ {
+ KviQString::sprintf(tmp,"%QInitUMode",&prefix);
+ cfg->writeEntry(tmp,m_szInitUMode);
+ }
+ if(autoJoinChannelList())
+ {
+ KviQString::sprintf(tmp,"%QAutoJoinChannels",&prefix);
+ cfg->writeEntry(tmp,*(autoJoinChannelList()));
+ }
+ if(autoConnect()) // otherwise it defaults to false anyway
+ {
+ KviQString::sprintf(tmp,"%QAutoConnect",&prefix);
+ cfg->writeEntry(tmp,autoConnect());
+ }
+ if(!m_szEncoding.isEmpty())
+ {
+ KviQString::sprintf(tmp,"%QEncoding",&prefix);
+ cfg->writeEntry(tmp,m_szEncoding);
+ }
+ if(!m_szOnConnectCommand.isEmpty())
+ {
+ KviQString::sprintf(tmp,"%QOnConnectCommand",&prefix);
+ cfg->writeEntry(tmp,m_szOnConnectCommand);
+ }
+ if(!m_szOnLoginCommand.isEmpty())
+ {
+ KviQString::sprintf(tmp,"%QOnLoginCommand",&prefix);
+ cfg->writeEntry(tmp,m_szOnLoginCommand);
+ }
+ if(!m_szLinkFilter.isEmpty())
+ {
+ KviQString::sprintf(tmp,"%QLinkFilter",&prefix);
+ cfg->writeEntry(tmp,m_szLinkFilter);
+ }
+ if(m_uPort != 6667)
+ {
+ KviQString::sprintf(tmp,"%QPort",&prefix);
+ cfg->writeEntry(tmp,m_uPort);
+ }
+ if(isIpV6())
+ {
+ KviQString::sprintf(tmp,"%QIpV6",&prefix);
+ cfg->writeEntry(tmp,isIpV6());
+ }
+ if(cacheIp())
+ {
+ KviQString::sprintf(tmp,"%QCacheIp",&prefix);
+ cfg->writeEntry(tmp,cacheIp());
+ }
+ if(useSSL())
+ {
+ KviQString::sprintf(tmp,"%QSSL",&prefix);
+ cfg->writeEntry(tmp,useSSL());
+ }
+ if(proxy()!=-2)
+ {
+ KviQString::sprintf(tmp,"%QProxy",&prefix);
+ cfg->writeEntry(tmp,proxy());
+ }
+ if(!m_szUserIdentityId.isEmpty())
+ {
+ KviQString::sprintf(tmp,"%QUserIdentityId",&prefix);
+ cfg->writeEntry(tmp,m_szUserIdentityId);
+ }
+}
+
+
+
+KviIrcNetwork::KviIrcNetwork(const KviIrcNetwork &src)
+{
+ m_pChannelList = 0;
+ m_pNickServRuleSet = 0;
+ copyFrom(src);
+}
+
+KviIrcNetwork::KviIrcNetwork(const QString &name)
+{
+ m_szName = name;
+ m_pChannelList = 0;
+ m_pNickServRuleSet = 0;
+ m_bAutoConnect = false;
+ // m_szEncoding = QString::null; // set by default
+}
+
+KviIrcNetwork::~KviIrcNetwork()
+{
+ if(m_pChannelList)delete m_pChannelList;
+ if(m_pNickServRuleSet)delete m_pNickServRuleSet;
+}
+
+void KviIrcNetwork::setAutoJoinChannelList(QStringList * pNewChannelList)
+{
+ if(m_pChannelList)delete m_pChannelList;
+ m_pChannelList = pNewChannelList;
+}
+
+void KviIrcNetwork::setNickServRuleSet(KviNickServRuleSet * s)
+{
+ if(m_pNickServRuleSet)delete m_pNickServRuleSet;
+ m_pNickServRuleSet = s;
+}
+
+
+void KviIrcNetwork::copyFrom(const KviIrcNetwork &src)
+{
+ m_szName = src.m_szName;
+ m_szEncoding = src.m_szEncoding;
+ m_szDescription = src.m_szDescription;
+ m_szNickName = src.m_szNickName;
+ m_szRealName = src.m_szRealName;
+ m_szUserName = src.m_szUserName;
+ m_bAutoConnect = src.m_bAutoConnect;
+ m_szUserIdentityId = src.m_szUserIdentityId;
+ m_szOnConnectCommand = src.m_szOnConnectCommand;
+ m_szOnLoginCommand = src.m_szOnLoginCommand;
+ if(m_pChannelList)delete m_pChannelList;
+ if(src.m_pChannelList)m_pChannelList = new QStringList(*(src.m_pChannelList));
+ else m_pChannelList = 0;
+ if(m_pNickServRuleSet)delete m_pNickServRuleSet;
+ if(src.m_pNickServRuleSet)m_pNickServRuleSet = new KviNickServRuleSet(*(src.m_pNickServRuleSet));
+ else m_pNickServRuleSet = 0;
+}
+
diff --git a/src/kvilib/irc/kvi_ircserver.h b/src/kvilib/irc/kvi_ircserver.h
new file mode 100644
index 00000000..4c0ca54d
--- /dev/null
+++ b/src/kvilib/irc/kvi_ircserver.h
@@ -0,0 +1,206 @@
+#ifndef _KVI_IRCSERVER_H_
+#define _KVI_IRCSERVER_H_
+
+//=============================================================================
+//
+// File : kvi_ircserver.h
+// Creation date : Mon Jul 10 2000 03:24:11 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_heapobject.h"
+#include "kvi_qstring.h"
+#include "kvi_pointerlist.h"
+
+#include <qstringlist.h>
+
+class KviConfig;
+class KviNickServRuleSet;
+class KviProxy;
+class KviProxyDataBase;
+class KviIrcServer;
+
+#define KVI_IRCSERVER_FLAG_IPV6 1
+#define KVI_IRCSERVER_FLAG_CACHEIP 2
+#define KVI_IRCSERVER_FLAG_SSL 4
+
+class KVILIB_API KviIrcServerReconnectInfo {
+public:
+ QString m_szNick;
+ QString m_szAwayReason;
+ QString m_szJoinChannels;
+ QStringList m_szOpenQueryes;
+ bool m_bIsAway;
+};
+
+class KVILIB_API KviIrcServer : public KviHeapObject
+{
+public:
+ KviIrcServer();
+ KviIrcServer(const KviIrcServer &serv);
+ ~KviIrcServer();
+public:
+ KviIrcServerReconnectInfo *m_pReconnectInfo;
+ QString m_szHostname; // the server hostname (or ip eventually)
+ QString m_szIp; // the server's cached ip (if we're caching)
+ QString m_szDescription; // the server description
+ kvi_u32_t m_uPort; // the server's port
+ unsigned short int m_uFlags; // flags
+
+ // Extended data
+ QString m_szUserIdentityId; // The user identity to use for this server: if empty
+ // Then use the network identity instead
+
+ QString m_szUser; // special username
+ QString m_szPass; // special password
+ QString m_szNick; // special nickname
+ QString m_szRealName; // special real name
+ QString m_szInitUMode; // special user mode
+ QString m_szOnConnectCommand; // the command to run on connect
+ QString m_szOnLoginCommand; // the command to run after login
+ QString m_szLinkFilter; // the link filter object
+ QString m_szEncoding; // if empty, use network encoding
+ QStringList * m_pChannelList; // Channels to auto join
+ bool m_bAutoConnect; // autoconnect
+ QString m_szId; // the server's may-be-unique id, may be auto-generated
+ int m_iProxy; // proxy server's id
+public:
+ int proxy() { return m_iProxy; };
+ KviProxy* proxyServer(KviProxyDataBase * pDb);
+
+ kvi_u32_t port() const { return m_uPort; };
+ const QString & ipAddress() const { return m_szIp; };
+ const QString & password() const { return m_szPass; };
+ const QString & nickName() const { return m_szNick; };
+ const QString & initUMode() const { return m_szInitUMode; };
+ const QString & hostName() const { return m_szHostname; };
+ const QString & ip() const { return m_szIp; };
+ const QString & onLoginCommand() const { return m_szOnLoginCommand; };
+ const QString & onConnectCommand() const { return m_szOnConnectCommand; };
+ const QString & userName() const { return m_szUser; };
+ const QString & realName() const { return m_szRealName; };
+ const QString & linkFilter() const { return m_szLinkFilter; };
+ const QString & description() const { return m_szDescription; };
+ const QString & encoding() const { return m_szEncoding; };
+ const QString & id() const { return m_szId; };
+ const QString & userIdentityId() const { return m_szUserIdentityId; };
+ bool autoConnect() const { return m_bAutoConnect; };
+ QStringList* autoJoinChannelList(){ return m_pChannelList; };
+ bool isIpV6() const { return (m_uFlags & KVI_IRCSERVER_FLAG_IPV6); };
+ bool useSSL() const { return (m_uFlags & KVI_IRCSERVER_FLAG_SSL); };
+ bool cacheIp() const { return (m_uFlags & KVI_IRCSERVER_FLAG_CACHEIP); };
+
+ void setProxy(int p){ m_iProxy = p; };
+ void setIpAddress(const QString &a){ m_szIp = a; };
+ void setPort(kvi_u32_t p){ m_uPort = p; };
+ void setHostName(const QString &n){ m_szHostname = n; };
+ void setDescription(const QString &d){ m_szDescription = d; };
+ void setUserName(const QString &u){ m_szUser = u; };
+ void setPassword(const QString &p){ m_szPass = p; };
+ void setNickName(const QString &n){ m_szNick = n; };
+ void setRealName(const QString &r){ m_szRealName = r; };
+ void setEncoding(const QString &e){ m_szEncoding = e; };
+ void setInitUMode(const QString &u){ m_szInitUMode = u; };
+ void setOnConnectCommand(const QString &cmd){ m_szOnConnectCommand = cmd; };
+ void setOnLoginCommand(const QString &cmd){ m_szOnLoginCommand = cmd; };
+ void setLinkFilter(const QString &f){ m_szLinkFilter = f; };
+ // the channel list must be allocated with new!
+ void setAutoJoinChannelList(QStringList * pNewChannelList);
+ void setAutoConnect(bool autoconnect) { m_bAutoConnect = autoconnect; };
+ void setUserIdentityId(const QString &szUserIdentityId){ m_szUserIdentityId = szUserIdentityId; };
+ void setIpV6(bool bSet)
+ {
+ if(bSet)m_uFlags |= KVI_IRCSERVER_FLAG_IPV6;
+ else m_uFlags &= ((unsigned short)~KVI_IRCSERVER_FLAG_IPV6);
+ };
+ void setUseSSL(bool bSet)
+ {
+ if(bSet)m_uFlags |= KVI_IRCSERVER_FLAG_SSL;
+ else m_uFlags &= ((unsigned short)~KVI_IRCSERVER_FLAG_SSL);
+ };
+ void setCacheIp(bool bSet)
+ {
+ if(bSet)m_uFlags |= KVI_IRCSERVER_FLAG_CACHEIP;
+ else m_uFlags &= ((unsigned short)~KVI_IRCSERVER_FLAG_CACHEIP);
+ };
+ void operator =(const KviIrcServer &s);
+
+ bool load(KviConfig * cfg,const QString &prefix);
+ void save(KviConfig * cfg,const QString &prefix);
+
+ void generateUniqueId();
+ void setId(const QString &szId){ m_szId = szId; if(m_szId.isEmpty())generateUniqueId(); };
+
+ QString ircUri();
+};
+
+class KVILIB_API KviIrcNetwork : public KviHeapObject
+{
+ friend class KviIrcServerDataBase;
+public:
+ KviIrcNetwork(const KviIrcNetwork &src);
+ KviIrcNetwork(const QString &name);
+ ~KviIrcNetwork();
+protected:
+ QString m_szName;
+ QString m_szDescription;
+ QString m_szEncoding; // if empty, use system default
+ QString m_szNickName; // preferred nick name
+ QString m_szUserName; // preferred user name
+ QString m_szRealName; // preferred real name
+ QString m_szOnConnectCommand; // the command to run on connect
+ QString m_szOnLoginCommand; // the command to run after login
+ QStringList * m_pChannelList; // Channels to auto join
+ KviNickServRuleSet * m_pNickServRuleSet; // set of nick serv rules
+ bool m_bAutoConnect; // autoconnect
+ QString m_szUserIdentityId; // The user identity to use for this server: if empty
+ // Then use the global primary identity
+public:
+ const QString & name() const { return m_szName; };
+ const QString & encoding() const { return m_szEncoding; };
+ const QString & description() const { return m_szDescription; };
+ const QString & nickName() const { return m_szNickName; };
+ const QString & realName() const { return m_szRealName; };
+ const QString & userName() const { return m_szUserName; };
+ const QString & onLoginCommand() const { return m_szOnLoginCommand; };
+ const QString & onConnectCommand() const { return m_szOnConnectCommand; };
+ const QString & userIdentityId() const { return m_szUserIdentityId; };
+ bool autoConnect() const { return m_bAutoConnect; };
+ QStringList* autoJoinChannelList(){ return m_pChannelList; };
+ KviNickServRuleSet * nickServRuleSet(){ return m_pNickServRuleSet; };
+ void setNickServRuleSet(KviNickServRuleSet * s);
+ void copyFrom(const KviIrcNetwork &d);
+ void setName(const QString &szName){ m_szName = szName; };
+ void setEncoding(const QString &szEncoding){ m_szEncoding = szEncoding; };
+ void setDescription(const QString &szDescription){ m_szDescription = szDescription; };
+ void setOnConnectCommand(const QString &cmd){ m_szOnConnectCommand = cmd; };
+ void setOnLoginCommand(const QString &cmd){ m_szOnLoginCommand = cmd; };
+ void setNickName(const QString &n){ m_szNickName = n; };
+ void setRealName(const QString &r){ m_szRealName = r; };
+ void setUserName(const QString &u){ m_szUserName = u; };
+ void setAutoJoinChannelList(QStringList * pNewChannelList);
+ void setAutoConnect(bool bAutoConnect){ m_bAutoConnect = bAutoConnect; };
+ void setUserIdentityId(const QString &szUserIdentityId){ m_szUserIdentityId = szUserIdentityId; };
+};
+
+
+
+#endif //_KVI_IRCSERVER_H_
diff --git a/src/kvilib/irc/kvi_ircserverdb.cpp b/src/kvilib/irc/kvi_ircserverdb.cpp
new file mode 100644
index 00000000..88198b12
--- /dev/null
+++ b/src/kvilib/irc/kvi_ircserverdb.cpp
@@ -0,0 +1,646 @@
+//=============================================================================
+//
+// File : kvi_ircserverdb.cpp
+// Creation date : Mon Jul 10 2000 14:25:00 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+
+#include <qapplication.h>
+#include <qlayout.h>
+#include <qmessagebox.h>
+#include <qcheckbox.h>
+
+#include "kvi_ircserverdb.h"
+#include "kvi_config.h"
+#include "kvi_locale.h"
+#include "kvi_netutils.h"
+#include "kvi_nickserv.h"
+
+KviIrcServerDataBaseRecord::KviIrcServerDataBaseRecord(KviIrcNetwork * n)
+{
+ m_pNetwork = n;
+ m_pServerList = new KviPointerList<KviIrcServer>;
+ m_pServerList->setAutoDelete(true);
+ m_pCurrentServer = 0;
+}
+
+KviIrcServerDataBaseRecord::~KviIrcServerDataBaseRecord()
+{
+ delete m_pNetwork;
+ delete m_pServerList;
+}
+
+void KviIrcServerDataBaseRecord::insertServer(KviIrcServer *srv)
+{
+ m_pServerList->append(srv);
+}
+
+KviIrcServer * KviIrcServerDataBaseRecord::findServer(const KviIrcServer * pServer)
+{
+ for(KviIrcServer *s=m_pServerList->first();s;s=m_pServerList->next())
+ {
+ if(KviQString::equalCI(s->m_szHostname,pServer->m_szHostname) &&
+ (s->m_uPort == pServer->m_uPort) &&
+ (s->useSSL() == pServer->useSSL()) &&
+ (s->isIpV6() == pServer->isIpV6()))return s;
+ }
+ return 0;
+}
+
+void KviIrcServerDataBaseRecord::setCurrentServer(KviIrcServer *srv)
+{
+ if(m_pServerList->findRef(srv) != -1)m_pCurrentServer = srv;
+}
+
+KviIrcServer * KviIrcServerDataBaseRecord::currentServer()
+{
+ if(m_pCurrentServer)return m_pCurrentServer;
+ m_pCurrentServer = m_pServerList->first();
+ return m_pCurrentServer;
+}
+
+
+
+
+
+
+
+
+
+
+KviIrcServerDataBase::KviIrcServerDataBase()
+{
+ m_pRecords = new KviPointerHashTable<QString,KviIrcServerDataBaseRecord>(17,false);
+ m_pRecords->setAutoDelete(true);
+ m_pAutoConnectOnStartupServers = 0;
+ m_pAutoConnectOnStartupNetworks = 0;
+}
+
+KviIrcServerDataBase::~KviIrcServerDataBase()
+{
+ delete m_pRecords;
+ if(m_pAutoConnectOnStartupServers)delete m_pAutoConnectOnStartupServers;
+ if(m_pAutoConnectOnStartupNetworks)delete m_pAutoConnectOnStartupNetworks;
+}
+
+void KviIrcServerDataBase::clearAutoConnectOnStartupServers()
+{
+ if(!m_pAutoConnectOnStartupServers)return;
+ delete m_pAutoConnectOnStartupServers;
+ m_pAutoConnectOnStartupServers = 0;
+}
+
+void KviIrcServerDataBase::clearAutoConnectOnStartupNetworks()
+{
+ if(!m_pAutoConnectOnStartupNetworks)return;
+ delete m_pAutoConnectOnStartupNetworks;
+ m_pAutoConnectOnStartupNetworks = 0;
+}
+
+void KviIrcServerDataBase::clear()
+{
+ m_pRecords->clear();
+ m_szCurrentNetwork = "";
+}
+
+KviIrcServerDataBaseRecord * KviIrcServerDataBase::insertNetwork(KviIrcNetwork *n)
+{
+ KviIrcServerDataBaseRecord * r = new KviIrcServerDataBaseRecord(n);
+ m_pRecords->replace(n->name(),r);
+ return r;
+}
+
+KviIrcServerDataBaseRecord * KviIrcServerDataBase::findRecord(const QString &szNetName)
+{
+ return m_pRecords->find(szNetName);
+}
+
+
+KviIrcNetwork * KviIrcServerDataBase::findNetwork(const QString &szName)
+{
+ KviIrcServerDataBaseRecord * r = m_pRecords->find(szName);
+ if(!r)return 0;
+ return r->network();
+}
+
+KviIrcServerDataBaseRecord * KviIrcServerDataBase::currentRecord()
+{
+ KviIrcServerDataBaseRecord * r = 0;
+ if(!m_szCurrentNetwork.isEmpty())r = m_pRecords->find(m_szCurrentNetwork);
+ if(r)return r;
+
+ KviPointerHashTableIterator<QString,KviIrcServerDataBaseRecord> it(*m_pRecords);
+ r = it.current();
+ if(!r)return 0;
+ m_szCurrentNetwork = r->network()->name();
+ return r;
+}
+
+void KviIrcServerDataBase::updateServerIp(KviIrcServer * pServer,const QString & ip)
+{
+ KviPointerHashTableIterator<QString,KviIrcServerDataBaseRecord> it(*m_pRecords);
+ while(KviIrcServerDataBaseRecord * r = it.current())
+ {
+ KviIrcServer * srv = r->findServer(pServer);
+ if(srv)
+ {
+ srv->m_szIp = ip;
+ return;
+ }
+ ++it;
+ }
+}
+
+bool KviIrcServerDataBase::makeCurrentBestServerInNetwork(const QString &szNetName,KviIrcServerDataBaseRecord * r,QString &szError)
+{
+ m_szCurrentNetwork = szNetName;
+ // find a round-robin server in that network
+
+ if(r->m_pServerList->isEmpty())
+ {
+ szError = __tr2qs("The specified network has no server entries");
+ return false;
+ }
+
+ for(KviIrcServer * s = r->m_pServerList->first();s;s = r->m_pServerList->next())
+ {
+#ifdef COMPILE_USE_QT4
+ if(s->m_szDescription.contains("random",Qt::CaseInsensitive) ||
+ (s->m_szDescription.contains("round",Qt::CaseInsensitive) && s->m_szDescription.contains("robin",Qt::CaseInsensitive)))
+#else
+ if(s->m_szDescription.contains("random",false) ||
+ (s->m_szDescription.contains("round",false) && s->m_szDescription.contains("robin",false)))
+#endif
+ {
+ r->setCurrentServer(s);
+ return true;
+ }
+ }
+
+ // no explicit round robin... try some common names
+
+ QString tryAlso1,tryAlso2,tryAlso3;
+
+ KviQString::sprintf(tryAlso1,"irc.%Q.org",&szNetName);
+ KviQString::sprintf(tryAlso2,"irc.%Q.net",&szNetName);
+ KviQString::sprintf(tryAlso3,"irc.%Q.com",&szNetName);
+
+ for(KviIrcServer * ss = r->m_pServerList->first();ss;ss = r->m_pServerList->next())
+ {
+ if(KviQString::equalCI(ss->m_szHostname,tryAlso1) ||
+ KviQString::equalCI(ss->m_szHostname,tryAlso2) ||
+ KviQString::equalCI(ss->m_szHostname,tryAlso3))
+ {
+ r->setCurrentServer(ss);
+ return true;
+ }
+ }
+
+ // a random one in this network
+ return true;
+}
+
+
+bool KviIrcServerDataBase::makeCurrentServer(KviIrcServerDefinition * d,QString &szError)
+{
+ KviIrcServer * pServer = 0;
+
+ KviPointerHashTableIterator<QString,KviIrcServerDataBaseRecord> it(*m_pRecords);
+ KviIrcServerDataBaseRecord * r = 0;
+ KviIrcServer * srv;
+
+ if(KviQString::equalCIN(d->szServer,"net:",4))
+ {
+ // net:networkname form
+ QString szNet = d->szServer;
+ szNet.remove(0,4);
+ KviIrcServerDataBaseRecord * r = m_pRecords->find(szNet);
+ if(r)return makeCurrentBestServerInNetwork(szNet,r,szError);
+ szError = __tr2qs("The server specification seems to be in the net:<string> but the network couln't be found in the database");
+ return false;
+ }
+
+ if(KviQString::equalCIN(d->szServer,"id:",3))
+ {
+ // id:serverid form
+ QString szId = d->szServer;
+ szId.remove(0,3);
+
+ while((r = it.current()))
+ {
+ for(srv = r->serverList()->first();srv && (!pServer);srv = r->serverList()->next())
+ {
+ if(KviQString::equalCI(srv->id(),szId))
+ {
+ pServer = srv;
+ goto search_finished;
+ }
+ }
+ ++it;
+ }
+ szError = __tr2qs("The server specification seems to be in the id:<string> form but the identifier coulnd't be found in the database");
+ return false;
+ }
+
+ it.toFirst();
+
+ while((r = it.current()))
+ {
+ for(srv = r->serverList()->first();srv && (!pServer);srv = r->serverList()->next())
+ {
+ if(KviQString::equalCI(srv->hostName(),d->szServer))
+ {
+ if(d->bIpV6 == srv->isIpV6())
+ {
+ if(d->bSSL == srv->useSSL())
+ {
+ if(d->bPortIsValid)
+ {
+ // must match the port
+ if(d->uPort == srv->port())
+ {
+ // port matches
+ if(!d->szLinkFilter.isEmpty())
+ {
+ // must match the link filter
+ if(KviQString::equalCI(d->szLinkFilter,srv->linkFilter()))
+ {
+ // link filter matches
+ pServer = srv;
+ goto search_finished;
+ } // else link filter doesn't match
+ } else {
+ // no need to match the link filter
+ pServer = srv;
+ goto search_finished;
+ }
+ } // else port doesn't match
+ } else {
+ // no need to match the port
+ if(!d->szLinkFilter.isEmpty())
+ {
+ // must match the link filter
+ if(KviQString::equalCI(d->szLinkFilter,srv->linkFilter()))
+ {
+ // link filter matches
+ pServer = srv;
+ goto search_finished;
+ } // else link filter doesn't match
+ } else {
+ // no need to match the link filter
+ pServer = srv;
+ goto search_finished;
+ }
+ }
+ }
+ }
+ }
+ }
+ ++it;
+ }
+
+search_finished:
+
+ if(r && pServer)
+ {
+ if(!d->szNick.isEmpty())pServer->m_szNick = d->szNick;
+ if(!d->szPass.isEmpty())pServer->m_szPass = d->szPass; // don't clear the pass!
+ if(!d->szInitUMode.isEmpty())pServer->m_szInitUMode = d->szInitUMode;
+
+ m_szCurrentNetwork = r->network()->name();
+ r->setCurrentServer(pServer);
+ return true;
+ }
+
+ // no such server: is it a valid ip address or hostname ?
+ bool bIsValidIpV4 = KviNetUtils::isValidStringIp(d->szServer);
+#ifdef COMPILE_IPV6_SUPPORT
+ bool bIsValidIpV6 =KviNetUtils::isValidStringIp_V6(d->szServer);
+#else
+ bool bIsValidIpV6 = false;
+#endif
+
+ if(!(bIsValidIpV4 || bIsValidIpV6))
+ {
+ // is it a valid hostname ? (must contain at least one dot)
+#ifdef COMPILE_USE_QT4
+ if(!d->szServer.contains('.'))
+#else
+ if(d->szServer.contains('.') < 1)
+#endif
+ {
+ // assume it is a network name!
+ KviIrcServerDataBaseRecord * r = m_pRecords->find(d->szServer);
+ if(r)return makeCurrentBestServerInNetwork(d->szServer,r,szError);
+ // else probably not a network name
+ }
+ }
+
+ // a valid hostname or ip address , not found in list : add it and make it current
+
+ r = m_pRecords->find(__tr2qs("Standalone Servers"));
+ if(!r)
+ {
+ r = new KviIrcServerDataBaseRecord(new KviIrcNetwork(__tr2qs("Standalone Servers")));
+ m_pRecords->replace(r->network()->name(),r);
+ }
+
+ KviIrcServer * s = new KviIrcServer();
+ s->m_szHostname = d->szServer;
+ if(bIsValidIpV4)
+ {
+ s->m_szIp = d->szServer;
+ s->setCacheIp(true);
+#ifdef COMPILE_IPV6_SUPPORT
+ } else {
+ if(bIsValidIpV6)
+ {
+ s->m_szIp = d->szServer;
+ s->setCacheIp(true);
+ d->bIpV6 = true;
+ }
+ }
+#else
+ }
+#endif
+ s->m_uPort = d->bPortIsValid ? d->uPort : 6667;
+ s->setLinkFilter(d->szLinkFilter);
+ s->m_szPass= d->szPass;
+ s->m_szNick= d->szNick;
+ s->m_szInitUMode = d->szInitUMode;
+ s->setIpV6(d->bIpV6);
+ s->setUseSSL(d->bSSL);
+ r->insertServer(s);
+ m_szCurrentNetwork = r->network()->name();
+ r->setCurrentServer(s);
+
+ return true;
+}
+
+void parseMircServerRecord(QString entry,QString& szNet,
+ QString& szDescription,QString& szHost,QString& szPort,bool& bSsl,kvi_u32_t& uPort)
+{
+ bSsl = false;
+ int idx = KviQString::find(entry,"SERVER:");
+ if(idx != -1)
+ {
+ szDescription = entry.left(idx);
+ szNet=szDescription.section(':',0,0);
+ szDescription=szDescription.section(':',1,1);
+
+ entry.remove(0,idx + 7);
+ idx = KviQString::find(entry,"GROUP:");
+ if(idx != -1)
+ {
+ szHost = entry.left(idx);
+ } else {
+ szHost = entry;
+ }
+
+ szPort = szHost.section(':',1,1);
+ if(szPort[0]=='+')
+ {
+ bSsl = true;
+ szPort.remove(0,1);
+ }
+ szHost = szHost.section(':',0,0);
+
+ bool bOk;
+ uPort = szPort.toUInt(&bOk);
+ if(!bOk)uPort = 6667;
+ }
+}
+
+void KviIrcServerDataBase::loadFromMircIni(const QString & filename, const QString & szMircIni, QStringList& recentServers)
+{
+ clear();
+ recentServers.clear();
+ QString szDefaultServer;
+ KviConfig mircCfg(szMircIni,KviConfig::Read,true);
+ if(mircCfg.hasGroup("mirc"))
+ {
+ mircCfg.setGroup("mirc");
+ szDefaultServer = mircCfg.readQStringEntry("host");
+ }
+
+ KviConfig cfg(filename,KviConfig::Read,true);
+ int i = 0;
+
+ QString entry;
+ QString key;
+ if(cfg.hasGroup("recent"))
+ {
+ cfg.setGroup("recent");
+ do {
+ KviQString::sprintf(key,"n%d",i);
+ entry = cfg.readEntry(key);
+ if(!entry.isEmpty())
+ {
+ QString szNet;
+ QString szDescription;
+ QString szHost;
+ QString szPort;
+ bool bSsl = false;
+ kvi_u32_t uPort = 0;
+
+ parseMircServerRecord(entry,szNet,
+ szDescription,szHost,szPort,bSsl,uPort);
+
+ recentServers << (bSsl ? "ircs://" : "irc://" ) +szHost+":"+szPort;
+ }
+ i++;
+ } while(!entry.isEmpty());
+ }
+
+ i = 0;
+ if(cfg.hasGroup("servers"))
+ {
+ cfg.setGroup("servers");
+ do {
+ KviQString::sprintf(key,"n%d",i);
+ entry = cfg.readEntry(key);
+ if(!entry.isEmpty())
+ {
+ bool bDefault = false;
+ QString szNet;
+ QString szDescription;
+ QString szHost;
+ QString szPort;
+ bool bSsl = false;
+ kvi_u32_t uPort = 0;
+ // <net>:<description>SERVER:<server:port>GROUP:<group???>
+ if(entry==szDefaultServer)
+ bDefault = true;
+
+ parseMircServerRecord(entry,szNet,
+ szDescription,szHost,szPort,bSsl,uPort);
+
+ KviIrcServerDataBaseRecord * r = findRecord(szNet);
+
+ if(!r) {
+ KviIrcNetwork * n = new KviIrcNetwork(szNet);
+ r = insertNetwork(n);
+ }
+
+ KviIrcServer *s = new KviIrcServer();
+ s->m_szHostname = szHost;
+ s->m_szDescription = szDescription;
+ s->m_uPort = uPort;
+
+
+ r->m_pServerList->append(s);
+ if(bDefault)
+ {
+ m_szCurrentNetwork = szNet;
+ }
+ }
+ i++;
+ } while(!entry.isEmpty());
+ }
+}
+
+
+void KviIrcServerDataBase::load(const QString & filename)
+{
+ clear();
+ KviConfig cfg(filename,KviConfig::Read);
+
+ KviConfigIterator it(*(cfg.dict()));
+
+ QString tmp;
+
+ while(it.current())
+ {
+ if(it.current()->count() > 0)
+ {
+ KviIrcNetwork * n = new KviIrcNetwork(it.currentKey());
+ KviIrcServerDataBaseRecord * r = insertNetwork(n);
+ cfg.setGroup(it.currentKey());
+ n->m_szEncoding = cfg.readQStringEntry("Encoding");
+ n->m_szDescription = cfg.readQStringEntry("Description");
+ n->m_szNickName = cfg.readQStringEntry("NickName");
+ n->m_szRealName = cfg.readQStringEntry("RealName");
+ n->m_szUserName = cfg.readQStringEntry("UserName");
+ n->m_szOnConnectCommand = cfg.readQStringEntry("OnConnectCommand");
+ n->m_szOnLoginCommand = cfg.readQStringEntry("OnLoginCommand");
+ n->m_pNickServRuleSet = KviNickServRuleSet::load(&cfg,QString::null);
+ n->m_bAutoConnect = cfg.readBoolEntry("AutoConnect",false);
+ n->m_szUserIdentityId = cfg.readQStringEntry("UserIdentityId");
+ if(n->m_bAutoConnect)
+ {
+ if(!m_pAutoConnectOnStartupNetworks)
+ {
+ m_pAutoConnectOnStartupNetworks = new KviPointerList<KviIrcServerDataBaseRecord>;
+ m_pAutoConnectOnStartupNetworks->setAutoDelete(false);
+ }
+ m_pAutoConnectOnStartupNetworks->append(r);
+ }
+ QStringList l = cfg.readStringListEntry("AutoJoinChannels",QStringList());
+ if(l.count() > 0)n->setAutoJoinChannelList(new QStringList(l));
+
+ if(cfg.readBoolEntry("Current",false))m_szCurrentNetwork = it.currentKey();
+
+ int nServers = cfg.readIntEntry("NServers",0);
+ for(int i=0;i < nServers;i++)
+ {
+ KviIrcServer *s = new KviIrcServer();
+ KviQString::sprintf(tmp,"%d_",i);
+ if(s->load(&cfg,tmp))
+ {
+ r->m_pServerList->append(s);
+ KviQString::sprintf(tmp,"%d_Current",i);
+ if(cfg.readBoolEntry(tmp,false))r->m_pCurrentServer = s;
+ if(s->autoConnect())
+ {
+ if(!m_pAutoConnectOnStartupServers)
+ {
+ m_pAutoConnectOnStartupServers = new KviPointerList<KviIrcServer>;
+ m_pAutoConnectOnStartupServers->setAutoDelete(false);
+ }
+ m_pAutoConnectOnStartupServers->append(s);
+ }
+ } else delete s;
+ }
+ if(!r->m_pCurrentServer)r->m_pCurrentServer = r->m_pServerList->first();
+ }
+ ++it;
+ }
+}
+
+void KviIrcServerDataBase::save(const QString &filename)
+{
+ KviConfig cfg(filename,KviConfig::Write);
+
+ cfg.clear(); // clear any old entry
+
+ KviPointerHashTableIterator<QString,KviIrcServerDataBaseRecord> it(*m_pRecords);
+
+ QString tmp;
+
+ while(KviIrcServerDataBaseRecord * r = it.current())
+ {
+ KviIrcNetwork * n = r->network();
+ cfg.setGroup(n->m_szName);
+ cfg.writeEntry("NServers",r->m_pServerList->count());
+ if(n->m_bAutoConnect)
+ cfg.writeEntry("AutoConnect",true);
+ if(!n->m_szEncoding.isEmpty())
+ cfg.writeEntry("Encoding",n->m_szEncoding);
+ if(!n->m_szDescription.isEmpty())
+ cfg.writeEntry("Description",n->m_szDescription);
+ if(!n->m_szNickName.isEmpty())
+ cfg.writeEntry("NickName",n->m_szNickName);
+ if(!n->m_szRealName.isEmpty())
+ cfg.writeEntry("RealName",n->m_szRealName);
+ if(!n->m_szUserName.isEmpty())
+ cfg.writeEntry("UserName",n->m_szUserName);
+ if(!n->m_szOnConnectCommand.isEmpty())
+ cfg.writeEntry("OnConnectCommand",n->m_szOnConnectCommand);
+ if(!n->m_szOnLoginCommand.isEmpty())
+ cfg.writeEntry("OnLoginCommand",n->m_szOnLoginCommand);
+ if(n->m_pNickServRuleSet)n->m_pNickServRuleSet->save(&cfg,QString::null);
+ if(n->autoJoinChannelList())
+ cfg.writeEntry("AutoJoinChannels",*(n->autoJoinChannelList()));
+ if(n->m_szName == m_szCurrentNetwork)cfg.writeEntry("Current",true);
+ if(!n->m_szUserIdentityId.isEmpty())
+ cfg.writeEntry("UserIdentityId",n->m_szUserIdentityId);
+ int i=0;
+ for(KviIrcServer *s = r->m_pServerList->first();s;s = r->m_pServerList->next())
+ {
+ KviQString::sprintf(tmp,"%d_",i);
+ s->save(&cfg,tmp);
+
+ if(s == r->m_pCurrentServer)
+ {
+ KviQString::sprintf(tmp,"%d_Current",i);
+ cfg.writeEntry(tmp,true);
+ }
+
+ i++;
+ }
+ ++it;
+ }
+}
+
+
+
diff --git a/src/kvilib/irc/kvi_ircserverdb.h b/src/kvilib/irc/kvi_ircserverdb.h
new file mode 100644
index 00000000..b5d55231
--- /dev/null
+++ b/src/kvilib/irc/kvi_ircserverdb.h
@@ -0,0 +1,116 @@
+#ifndef _KVI_IRCSERVERDB_H_
+#define _KVI_IRCSERVERDB_H_
+//=============================================================================
+//
+// File : kvi_ircserverdb.h
+// Creation date : Mon Jul 10 2000 14:15:42 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_ircserver.h"
+
+#include "kvi_pointerhashtable.h"
+
+typedef struct _KviIrcServerDefinition
+{
+ QString szServer;
+ kvi_u32_t uPort;
+ bool bPortIsValid;
+ bool bIpV6;
+ bool bSSL;
+ QString szLinkFilter;
+ QString szPass;
+ QString szNick;
+ QString szInitUMode;
+} KviIrcServerDefinition;
+
+
+
+class KVILIB_API KviIrcServerDataBaseRecord
+{
+ friend class KviIrcServerDataBase;
+public:
+ KviIrcServerDataBaseRecord(KviIrcNetwork * n);
+ ~KviIrcServerDataBaseRecord();
+protected:
+ KviIrcNetwork * m_pNetwork;
+ KviPointerList<KviIrcServer> * m_pServerList;
+
+ KviIrcServer * m_pCurrentServer;
+public:
+ KviIrcNetwork * network(){ return m_pNetwork; };
+ KviPointerList<KviIrcServer> * serverList(){ return m_pServerList; };
+ KviIrcServer * currentServer();
+ void insertServer(KviIrcServer *srv);
+ KviIrcServer * findServer(const KviIrcServer * pServer);
+ void setCurrentServer(KviIrcServer *srv);
+};
+
+
+
+
+
+class KVILIB_API KviIrcServerDataBase
+{
+public:
+ KviIrcServerDataBase();
+ ~KviIrcServerDataBase();
+private:
+ KviPointerHashTable<QString,KviIrcServerDataBaseRecord> * m_pRecords;
+ QString m_szCurrentNetwork;
+ // This list is computed when the data are loaded from disk
+ // during the startup and is used by KviApp to
+ // start the connections.
+ // The pointer is zero if there are no autoConnect servers
+ // The list is valid only during the startup phase
+ // because it contains shallow pointers to the servers
+ // really contained in the server/network list
+ // and it is never updated later
+ KviPointerList<KviIrcServer> * m_pAutoConnectOnStartupServers;
+ KviPointerList<KviIrcServerDataBaseRecord> * m_pAutoConnectOnStartupNetworks;
+public:
+ void clear();
+ KviPointerHashTable<QString,KviIrcServerDataBaseRecord> * recordDict(){ return m_pRecords; };
+ KviPointerList<KviIrcServer> * autoConnectOnStartupServers(){ return m_pAutoConnectOnStartupServers; };
+ KviPointerList<KviIrcServerDataBaseRecord> * autoConnectOnStartupNetworks(){ return m_pAutoConnectOnStartupNetworks; };
+ void clearAutoConnectOnStartupServers();
+ void clearAutoConnectOnStartupNetworks();
+ void setCurrentNetwork(const QString &szNetName){ m_szCurrentNetwork = szNetName; };
+ const QString & currentNetworkName(){ return m_szCurrentNetwork; };
+ KviIrcServerDataBaseRecord * currentRecord();
+ KviIrcServerDataBaseRecord * findRecord(const QString &szNetName);
+ KviIrcNetwork * findNetwork(const QString &name);
+ void loadFromMircIni(const QString & filename, const QString & szMircIni, QStringList& recentServers);
+ void load(const QString & filename);
+ void save(const QString & filename);
+ KviIrcServerDataBaseRecord * insertNetwork(KviIrcNetwork * n);
+ void updateServerIp(KviIrcServer * pServer,const QString &ip);
+ bool makeCurrentServer(KviIrcServerDefinition * d,QString &szError);
+ bool makeCurrentBestServerInNetwork(const QString &szNetName,KviIrcServerDataBaseRecord * d,QString &szError);
+};
+
+
+
+
+
+
+#endif //_KVI_IRCSERVERDB_H_
diff --git a/src/kvilib/irc/kvi_ircuserdb.cpp b/src/kvilib/irc/kvi_ircuserdb.cpp
new file mode 100644
index 00000000..38b52522
--- /dev/null
+++ b/src/kvilib/irc/kvi_ircuserdb.cpp
@@ -0,0 +1,285 @@
+//=============================================================================
+//
+// File : kvi_ircuserdb.cpp
+// Creation date : Mon Jul 31 2000 21:23:22 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+
+#include "kvi_debug.h"
+#include "kvi_ircuserdb.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_qstring.h"
+#include "kvi_stringconversion.h"
+
+//static int cacheHit = 0;
+//static int cacheMiss = 0;
+
+KviIrcUserEntry::KviIrcUserEntry(const QString &user,const QString &host)
+{
+ m_szUser = user;
+ m_szHost = host;
+ m_pAvatar = 0;
+ m_nRefs = 1;
+ m_iHops = -1;
+ m_bAway = false;
+ m_eGender = Unknown;
+ m_bBot = false;
+ m_bNotFoundRegUserLoockup=false;
+ m_bUseCustomColor=false;
+}
+
+void KviIrcUserEntry::setRealName(const QString &rn)
+{
+ m_szRealName = rn;
+ m_szRealName = KviQString::trimmed(m_szRealName);
+ if(m_szRealName.length()>=3)
+ {
+ if( (m_szRealName[0].unicode()==KVI_TEXT_COLOR) && (m_szRealName[2].unicode()==KVI_TEXT_RESET) )
+ {
+ switch(m_szRealName[1].unicode())
+ {
+ case '1': // hum.. encoded as hidden color code eh ? publish is somewhere, so others might implement this...
+ setGender(Male);
+ break;
+ case '2':
+ setGender(Female);
+ break;
+ case '3':
+ setBot(true);
+ break;
+ }
+ m_szRealName.remove(0,3);
+ }
+ }
+}
+
+KviIrcUserEntry::~KviIrcUserEntry()
+{
+ if(m_pAvatar)delete m_pAvatar;
+}
+
+void KviIrcUserEntry::setAvatar(KviAvatar * av)
+{
+ if(m_pAvatar)delete m_pAvatar;
+ m_pAvatar = av;
+}
+
+KviAvatar * KviIrcUserEntry::forgetAvatar()
+{
+ KviAvatar * ret = m_pAvatar;
+ m_pAvatar = 0;
+ return ret;
+}
+
+KviIrcUserDataBase::KviIrcUserDataBase()
+: QObject()
+{
+ // we expect a maximum of ~4000 users (= ~16 KB array on a 32 bit machine)
+ // ...after that we will loose in performance
+ // ... well...4000 users is a really big number...say 6-7 really big channels
+ // (4001 is prime)
+ // up to 12000 users we will have a reasonably fast access.
+ // the performance increase since kvirc versions < 3.0.0
+ // is really big anyway (there was a linear list instead of a hash!!!)
+
+ m_pDict = new KviPointerHashTable<QString,KviIrcUserEntry>(4001,false);
+ m_pDict->setAutoDelete(true);
+ setupConnectionWithReguserDb();
+}
+
+KviIrcUserDataBase::~KviIrcUserDataBase()
+{
+ delete m_pDict;
+}
+
+bool KviIrcUserDataBase::haveCustomColor(const QString & nick)
+{
+ KviIrcUserEntry *u = find(nick);
+ if(!u) return false;
+ if( u->m_szLastRegisteredMatchNick!=nick)
+ registeredUser(nick);
+ if(!u->m_bNotFoundRegUserLoockup)
+ {
+ return u->m_bUseCustomColor;
+ }
+ return false;
+}
+
+QColor* KviIrcUserDataBase::customColor(const QString & nick)
+{
+ KviIrcUserEntry *u = find(nick);
+ if(!u) return 0;
+ if( u->m_szLastRegisteredMatchNick!=nick)
+ registeredUser(nick);
+
+ if(!u->m_bNotFoundRegUserLoockup)
+ {
+ return &(u->m_cachedColor);
+ }
+ return 0;
+}
+
+
+KviRegisteredUser* KviIrcUserDataBase::registeredUser(const QString & nick,const QString & user,const QString & host)
+{
+ if(nick.isEmpty()) return 0;
+ KviIrcUserEntry *u = find(nick);
+ if(!u) return g_pRegisteredUserDataBase->findMatchingUser(nick,user,host);
+ KviRegisteredUser* pUser=0;
+
+ if(u->m_bNotFoundRegUserLoockup && u->m_szLastRegisteredMatchNick==nick)
+ {
+ //cacheHit++;
+ //debug("cache hits/miss = %i/%i",cacheHit,cacheMiss);
+ return 0;
+ }
+
+ if(!u->m_szRegisteredUserName.isEmpty() && u->m_szLastRegisteredMatchNick==nick)
+ {
+ pUser = g_pRegisteredUserDataBase->getUser(u->m_szRegisteredUserName);
+ //if(pUser) cacheHit++;
+ }
+
+ if(!pUser) {
+ //user renamed or it is a first loockup
+ if(u->hasHost() && u->hasUser())
+ {
+ pUser=g_pRegisteredUserDataBase->findMatchingUser(nick,u->user(),u->host());
+ //cacheMiss++;
+ if(pUser) {
+ u->m_szLastRegisteredMatchNick=nick;
+ u->m_szRegisteredUserName=pUser->name();
+
+ u->m_bUseCustomColor=pUser->getBoolProperty("useCustomColor");
+ QString szTmp=pUser->getProperty("customColor");
+ KviStringConversion::fromString(szTmp,u->m_cachedColor);
+
+ u->m_bNotFoundRegUserLoockup=false; //to be shure
+ } else {
+ u->m_szLastRegisteredMatchNick=nick;
+ u->m_bNotFoundRegUserLoockup=true;
+ }
+ }
+ }
+
+// debug("cache hits/miss = %i/%i",cacheHit,cacheMiss);
+ return pUser;
+}
+
+KviRegisteredUser* KviIrcUserDataBase::registeredUser(const QString & nick)
+{
+ if(nick.isEmpty()) return 0;
+ KviIrcUserEntry *u = find(nick);
+ if(!u) return 0;
+ return registeredUser(nick,u->user(),u->host());
+}
+
+void KviIrcUserDataBase::clear()
+{
+ delete m_pDict;
+ m_pDict = new KviPointerHashTable<QString,KviIrcUserEntry>(4001,false);
+ m_pDict->setAutoDelete(true);
+}
+
+KviIrcUserEntry * KviIrcUserDataBase::insertUser(const QString &nick,const QString &user,const QString &hostname)
+{
+ KviIrcUserEntry * e = m_pDict->find(nick);
+ if(e)
+ {
+ e->m_nRefs++;
+ if(e->m_szUser.isEmpty())
+ {
+ e->m_szUser = user;
+ e->m_szHost = hostname;
+ }
+ } else {
+ e = new KviIrcUserEntry(user,hostname);
+ m_pDict->insert(nick,e);
+ }
+ return e;
+}
+
+void KviIrcUserDataBase::removeUser(const QString &nick,KviIrcUserEntry * e)
+{
+ e->m_nRefs--;
+ if(e->m_nRefs == 0)m_pDict->remove(nick);
+}
+
+void KviIrcUserDataBase::setupConnectionWithReguserDb()
+{
+ connect(g_pRegisteredUserDataBase,SIGNAL(userRemoved(const QString&)),this,SLOT(registeredUserRemoved(const QString&)));
+ connect(g_pRegisteredUserDataBase,SIGNAL(userChanged(const QString&)),this,SLOT(registeredUserChanged(const QString&)));
+ connect(g_pRegisteredUserDataBase,SIGNAL(userAdded(const QString&)),this,SLOT(registeredUserAdded(const QString&)));
+ connect(g_pRegisteredUserDataBase,SIGNAL(databaseCleared()),this,SLOT(registeredDatabaseCleared()));
+
+
+}
+
+void KviIrcUserDataBase::registeredUserRemoved(const QString& user)
+{
+ KviPointerHashTableIterator<QString,KviIrcUserEntry> it( *m_pDict );
+ for( ; it.current(); ++it )
+ {
+ if(it.current()->m_szRegisteredUserName==user)
+ {
+ it.current()->m_szRegisteredUserName="";
+ it.current()->m_bNotFoundRegUserLoockup=false;
+ }
+ }
+}
+
+void KviIrcUserDataBase::registeredUserChanged(const QString& user)
+{
+ //the same as above
+ KviPointerHashTableIterator<QString,KviIrcUserEntry> it( *m_pDict );
+ for( ; it.current(); ++it )
+ {
+ if(it.current()->m_szRegisteredUserName==user)
+ {
+ it.current()->m_szRegisteredUserName="";
+ it.current()->m_bNotFoundRegUserLoockup=false;
+ }
+ }
+}
+
+void KviIrcUserDataBase::registeredUserAdded(const QString& user)
+{
+ KviPointerHashTableIterator<QString,KviIrcUserEntry> it( *m_pDict );
+ for( ; it.current(); ++it )
+ {
+ if(it.current()->m_szRegisteredUserName.isEmpty())
+ {
+ it.current()->m_bNotFoundRegUserLoockup=false;
+ }
+ }
+}
+
+void KviIrcUserDataBase::registeredDatabaseCleared()
+{
+ KviPointerHashTableIterator<QString,KviIrcUserEntry> it( *m_pDict );
+ for( ; it.current(); ++it )
+ {
+ it.current()->m_szRegisteredUserName="";
+ it.current()->m_bNotFoundRegUserLoockup=false;
+ }
+}
diff --git a/src/kvilib/irc/kvi_ircuserdb.h b/src/kvilib/irc/kvi_ircuserdb.h
new file mode 100644
index 00000000..bdf7c51c
--- /dev/null
+++ b/src/kvilib/irc/kvi_ircuserdb.h
@@ -0,0 +1,145 @@
+#ifndef _KVI_IRCUSERDB_H_
+#define _KVI_IRCUSERDB_H_
+
+//=============================================================================
+//
+// File : kvi_ircuserdb.h
+// Creation date : Mon Jul 31 2000 20:59:12 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include "kvi_pointerhashtable.h"
+
+#include "kvi_string.h"
+#include "kvi_avatar.h"
+#include "kvi_regusersdb.h"
+
+class KviIrcUserDataBase;
+
+class KVILIB_API KviIrcUserEntry
+{
+ friend class KviIrcUserDataBase;
+public:
+ KviIrcUserEntry(const QString &user,const QString &host);
+ ~KviIrcUserEntry();
+
+ enum Gender {
+ Male = 0,
+ Female = 1,
+ Unknown = 3
+ };
+
+protected:
+ QString m_szUser;
+ QString m_szHost;
+
+ QString m_szServer;
+ QString m_szRealName;
+ int m_iHops;
+ Gender m_eGender;
+
+ bool m_bAway;
+
+ KviAvatar * m_pAvatar;
+
+ int m_nRefs;
+ bool m_bBot;
+
+ bool m_bNotFoundRegUserLoockup;
+ QString m_szRegisteredUserName;
+ QString m_szLastRegisteredMatchNick;
+
+ QColor m_cachedColor;
+ bool m_bUseCustomColor;
+public:
+ Gender gender() { return m_eGender; };
+ void setBot(bool bIsBot) { m_bBot = bIsBot; };
+ bool isBot() { return m_bBot; };
+ void setGender(Gender g) { m_eGender=g; };
+ void setUser(const QString &user) { m_szUser = user; };
+ bool hasUser() { return (!m_szUser.isEmpty()); };
+ void setHost(const QString &host) { m_szHost = host; };
+ bool hasHost() { return (!m_szHost.isEmpty()); };
+ void setServer(const QString &serv) { m_szServer = serv; };
+ void setRealName(const QString &rn);
+ void setHops(int hops) { m_iHops = hops; };
+ const QString &user() { return m_szUser; };
+ const QString &host() { return m_szHost; };
+ bool hasServer() { return (!m_szServer.isEmpty()); };
+ const QString &server() { return m_szServer; };
+ bool hasRealName() { return (!m_szRealName.isEmpty()); };
+ const QString &realName() { return m_szRealName; };
+ bool hasHops() { return m_iHops >= 0; };
+ int hops() { return m_iHops; };
+ KviAvatar * avatar() { return m_pAvatar; };
+ int nRefs() { return m_nRefs; };
+ bool isAway() const { return m_bAway; };
+ void setAway(bool bAway) { m_bAway = bAway; };
+ // warning! the ownership passes to this class!
+ void setAvatar(KviAvatar * av = 0);
+ KviAvatar * forgetAvatar();
+};
+
+// from least powerful to most powerful
+#define KVI_USERFLAG_USEROP 1
+#define KVI_USERFLAG_VOICE 2
+#define KVI_USERFLAG_HALFOP 4
+#define KVI_USERFLAG_OP 8
+#define KVI_USERFLAG_CHANADMIN 16
+#define KVI_USERFLAG_CHANOWNER 32
+
+// 1 | 2 | 4 | 8 | 16 | 32
+#define KVI_USERFLAG_MASK (KVI_USERFLAG_OP | KVI_USERFLAG_VOICE | KVI_USERFLAG_HALFOP | KVI_USERFLAG_CHANADMIN | KVI_USERFLAG_USEROP | KVI_USERFLAG_CHANOWNER)
+// at the moment all the flags are usermodes
+#define KVI_USERFLAG_MODEMASK KVI_USERFLAG_MASK
+
+
+class KVILIB_API KviIrcUserDataBase : public QObject
+{
+ Q_OBJECT
+public:
+ KviIrcUserDataBase();
+ ~KviIrcUserDataBase();
+private:
+ KviPointerHashTable<QString,KviIrcUserEntry> * m_pDict;
+public:
+ void clear();
+ KviIrcUserEntry * insertUser(const QString &nick,const QString &user,const QString &hostname);
+ KviIrcUserEntry * find(const QString &nick){ return m_pDict->find(nick); };
+ void removeUser(const QString &nick,KviIrcUserEntry * e);
+ KviPointerHashTable<QString,KviIrcUserEntry> * dict(){ return m_pDict; };
+
+ KviRegisteredUser* registeredUser(const QString & nick);
+ KviRegisteredUser* registeredUser(const QString & nick,const QString & user,const QString & host);
+
+ bool haveCustomColor(const QString & nick);
+ QColor* customColor(const QString & nick);
+
+ void setupConnectionWithReguserDb();
+protected slots:
+ void registeredUserRemoved(const QString&);
+ void registeredUserChanged(const QString&);
+ void registeredUserAdded (const QString&);
+ void registeredDatabaseCleared();
+};
+
+#endif //_KVI_IRCUSERDB_H_
diff --git a/src/kvilib/irc/kvi_mirccntrl.cpp b/src/kvilib/irc/kvi_mirccntrl.cpp
new file mode 100644
index 00000000..fbf3c2d3
--- /dev/null
+++ b/src/kvilib/irc/kvi_mirccntrl.cpp
@@ -0,0 +1,307 @@
+//
+// File : kvi_mirccntrl.cpp
+// Creation date : Sat Aug 31 17:07:36 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#define __KVILIB__
+
+#define _KVI_MIRCCNTRL_CPP_
+
+#include "kvi_mirccntrl.h"
+
+KVILIB_API const char * getColorBytes(const char *data_ptr,unsigned char *byte_1,unsigned char *byte_2)
+{
+ //
+ // Scans the data_ptr for a mIrc color code XX,XX
+ // and fills the color values in the two bytes
+ //
+
+ //First we can have a digit or a coma
+ if(((*data_ptr >= '0') && (*data_ptr <='9')))
+ {
+ //Something interesting ok.
+ (*byte_1)=(*data_ptr)-'0'; //store the code
+ data_ptr++; //and check the next
+ if(((*data_ptr >= '0') && (*data_ptr <= '9'))||(*data_ptr==','))
+ {
+ //Yes we can understand it
+ if(*data_ptr==',')
+ {
+ //A coma , need to check for background
+ data_ptr++;
+ } else {
+ //A number
+ (*byte_1)=((((*byte_1)*10)+((*data_ptr)-'0'))%16);
+ data_ptr++;
+ if(*data_ptr==',')
+ {
+ //A coma , need to check for background
+ data_ptr++;
+ } else {
+ //Senseless return
+ (*byte_2)=KVI_NOCHANGE;
+ return data_ptr;
+ }
+ }
+ } else {
+ //Senseless character control code OK and return
+ (*byte_2)=KVI_NOCHANGE;
+ return data_ptr;
+ }
+ } else {
+ //Senseless character : only a CTRL+K code
+ (*byte_1)=KVI_NOCHANGE;
+ (*byte_2)=KVI_NOCHANGE;
+ return data_ptr;
+ }
+
+ if((*data_ptr >= '0') && (*data_ptr <='9'))
+ {
+ //Background , a color code
+ (*byte_2)=(*data_ptr)-'0';
+ data_ptr++;
+ if((*data_ptr >= '0') && (*data_ptr <='9'))
+ {
+ (*byte_2)=((((*byte_2)*10)+((*data_ptr)-'0'))%16);
+ data_ptr++;
+ }
+ return data_ptr;
+ } else {
+ (*byte_2)=KVI_NOCHANGE;
+ return data_ptr-1;
+ }
+}
+
+
+KVILIB_API const kvi_wchar_t * getColorBytesW(const kvi_wchar_t *data_ptr,unsigned char *byte_1,unsigned char *byte_2)
+{
+ //
+ // Scans the data_ptr for a mIrc color code XX,XX
+ // and fills the color values in the two bytes
+ //
+
+ //First we can have a digit or a coma
+ if(((*data_ptr >= '0') && (*data_ptr <='9')))
+ {
+ //Something interesting ok.
+ (*byte_1)=((*data_ptr)-'0'); //store the code
+ data_ptr++; //and check the next
+ if(((*data_ptr >= '0') && (*data_ptr <= '9'))||(*data_ptr==','))
+ {
+ //Yes we can understand it
+ if(*data_ptr==',')
+ {
+ //A coma , need to check for background
+ data_ptr++;
+ } else {
+ //A number
+ //(*byte_1)=((((*byte_1)*10)+((*data_ptr)-'0'))%16);
+ (*byte_1)=((*byte_1)*10)+((*data_ptr)-'0');
+ data_ptr++;
+ if(*data_ptr==',')
+ {
+ //A coma , need to check for background
+ data_ptr++;
+ } else {
+ //Senseless return
+ (*byte_2)=KVI_NOCHANGE;
+ return data_ptr;
+ }
+ }
+ } else {
+ //Senseless character control code OK and return
+ (*byte_2)=KVI_NOCHANGE;
+ return data_ptr;
+ }
+ } else {
+ //Senseless character : only a CTRL+K code
+ (*byte_1)=KVI_NOCHANGE;
+ (*byte_2)=KVI_NOCHANGE;
+ return data_ptr;
+ }
+
+ if((*data_ptr >= '0') && (*data_ptr <='9'))
+ {
+ //Background , a color code
+ (*byte_2)=(*data_ptr)-'0';
+ data_ptr++;
+ if((*data_ptr >= '0') && (*data_ptr <='9'))
+ {
+ //(*byte_2)=((((*byte_2)*10)+((*data_ptr)-'0'))%16);
+ (*byte_2)=((*byte_2)*10)+((*data_ptr)-'0');
+ data_ptr++;
+ }
+ return data_ptr;
+ } else {
+ (*byte_2)=KVI_NOCHANGE;
+ return data_ptr-1;
+ }
+}
+
+KVILIB_API unsigned int getUnicodeColorBytes(const QString &szData,unsigned int charIdx,unsigned char *byte_1,unsigned char *byte_2)
+{
+ //
+ // Scans the szData for a mIrc color code XX,XX
+ // and fills the color values in the two bytes
+ //
+
+ if(charIdx >= szData.length())
+ {
+ (*byte_1)=KVI_NOCHANGE;
+ (*byte_2)=KVI_NOCHANGE;
+ return charIdx;
+ }
+
+ unsigned short c = szData[(int)charIdx].unicode();
+
+ //First we can have a digit or a coma
+ if(((c < '0') || (c > '9')))
+ {
+ // senseless : only a CTRL+K code
+ (*byte_1)=KVI_NOCHANGE;
+ (*byte_2)=KVI_NOCHANGE;
+ return charIdx;
+ }
+
+ //Something interesting ok.
+ (*byte_1)=c - '0'; //store the code
+ charIdx++;
+ if(charIdx >= szData.length())
+ {
+ (*byte_2)=KVI_NOCHANGE;
+ return charIdx;
+ }
+
+ c = szData[(int)charIdx].unicode();
+
+ if(((c < '0') || (c > '9')) && (c != ','))
+ {
+ (*byte_2)=KVI_NOCHANGE;
+ return charIdx;
+ }
+
+
+ if((c >= '0') && (c <= '9'))
+ {
+ (*byte_1)=(((*byte_1)*10)+(c-'0'))%16;
+ charIdx++;
+ if(charIdx >= szData.length())
+ {
+ (*byte_2)=KVI_NOCHANGE;
+ return charIdx;
+ }
+ c = szData[(int)charIdx].unicode();
+ }
+
+ if(c == ',')
+ {
+ charIdx++;
+ if(charIdx >= szData.length())
+ {
+ (*byte_2)=KVI_NOCHANGE;
+ return charIdx;
+ }
+ c = szData[(int)charIdx].unicode();
+ } else {
+ (*byte_2)=KVI_NOCHANGE;
+ return charIdx;
+ }
+
+ if((c < '0') || (c > '9'))
+ {
+ (*byte_2)=KVI_NOCHANGE;
+ if(szData[(int)(charIdx-1)].unicode()==',')
+ return charIdx-1;
+ else
+ return charIdx;
+ }
+
+ //Background , a color code
+ (*byte_2)=c-'0';
+ charIdx++;
+ if(charIdx >= szData.length())return charIdx;
+ c = szData[(int)charIdx].unicode();
+
+ if((c >= '0') && (c <='9'))
+ {
+ (*byte_2)=(((*byte_2)*10)+(c-'0'))%16;
+ charIdx++;
+ }
+
+ return charIdx;
+}
+
+
+namespace KviMircCntrl
+{
+ QString stripControlBytes(const QString &szData)
+ {
+ QString ret;
+
+ int i = 0;
+ int l = szData.length();
+ int begin = 0;
+ unsigned char b1;
+ unsigned char b2;
+ while(i < l)
+ {
+ switch(szData[i].unicode())
+ {
+ case KVI_TEXT_UNDERLINE:
+ case KVI_TEXT_BOLD:
+ case KVI_TEXT_RESET:
+ case KVI_TEXT_REVERSE:
+ case KVI_TEXT_CRYPTESCAPE:
+ case KVI_TEXT_CTCP:
+ if(i != begin)
+ ret += szData.mid(begin,i - begin);
+ i++;
+ begin = i;
+ break;
+ case KVI_TEXT_COLOR:
+ if(i != begin)
+ ret += szData.mid(begin,i - begin);
+ i++;
+ i = getUnicodeColorBytes(szData,i,&b1,&b2);
+ begin = i;
+ break;
+ case KVI_TEXT_ICON:
+ if(i != begin)
+ ret += szData.mid(begin,i - begin);
+ i++;
+ while(i < l)
+ {
+ if(szData[i].unicode() == ' ')break;
+ else i++;
+ }
+ begin = i;
+ break;
+ default:
+ i++;
+ break;
+ }
+ }
+ if(i != begin)
+ ret += szData.mid(begin,i - begin);
+ return ret;
+ }
+}
+
+
diff --git a/src/kvilib/irc/kvi_mirccntrl.h b/src/kvilib/irc/kvi_mirccntrl.h
new file mode 100644
index 00000000..c3028568
--- /dev/null
+++ b/src/kvilib/irc/kvi_mirccntrl.h
@@ -0,0 +1,163 @@
+#ifndef _KVI_MIRCCNTRL_H_
+#define _KVI_MIRCCNTRL_H_
+
+//=============================================================================
+//
+// File : kvi_mirccntrl.h
+// Creation date : Thu Jun 29 2000 21:06:55 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+//=============================================================================
+// This file contains non-customizable standards
+//
+// Better do not touch this :)
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_string.h"
+
+//
+// mIrc color codes
+//
+
+#define KVI_WHITE 0
+#define KVI_BLACK 1
+#define KVI_DARKBLUE 2
+#define KVI_DARKGREEN 3
+#define KVI_RED 4
+#define KVI_DARKRED 5
+#define KVI_DARKVIOLET 6
+#define KVI_ORANGE 7
+#define KVI_YELLOW 8
+#define KVI_LIGHTGREEN 9
+#define KVI_BLUEMARINE 10
+#define KVI_LIGHTBLUE 11
+#define KVI_BLUE 12
+#define KVI_LIGHTVIOLET 13
+#define KVI_DARKGRAY 14
+#define KVI_LIGHTGRAY 15
+
+#define KVI_MIRCCOLOR_MAX_FOREGROUND 15
+#define KVI_MIRCCOLOR_MAX_BACKGROUND 15
+
+//
+// Non-standard color codes for KviIrcView
+//
+#define KVI_TRANSPARENT 100
+#define KVI_NOCHANGE 101
+//
+// Internal control codes for KviIrcView
+//
+// (Totally artificial and internal to KviIrcView)
+#define KVI_TEXT_ESCAPE 0x04
+#define KVI_TEXT_UNESCAPE 0x05
+#define KVI_TEXT_UNICON 0x06
+//#define KVI_TEXT_EMOTICON 0x07
+
+// ASCII Stuff: the following defines are meant to be escape sequences
+// that can go thru an IRC connection
+
+// The following table is a 30-minute analysis of the escape characters commonly used over the IRC protocol...
+// created when looking for a good placement for the CRYPT escape char in KVirc.
+// I guess that the best chars to be used were FS,GS,RS,US,DC1,DC2,DC3,DC4...they have the "less defined"
+// meaning as ASCII control chars.
+// mmmh... :)
+
+// ASCII IRC Meaning
+// 000 NUL Null (Cannot be assigned)
+// 001 SOH Start of heading ( CTCP Escape: only beginning of the message )
+// 002 STX Start of text ( Bold text )
+// 003 ETX End of text ( Color text escape sequence )
+// 004 EOT End of transmission ( Assigned internally (escape) )
+// 005 ENQ Enquiry (WRU: Who are you) ( Assigned internally (unescape) )
+// 006 ACK Acknowledge (Not so good, but can be used as last resource)
+// 007 BEL Bell ( Recognized as bell by terminals and IRCII ) (Used also by some IRC servers)
+// 008 BS Backspace (Should not be assigned: terminal control)
+// 009 HT Horizontal tabulation (Should not be assigned: terminal control)
+// 010 LF Line feed (Should not be assigned: terminal control)
+// 011 VT Vertical tabulation (Should not be assigned: terminal control)
+// 012 FF Form feed (Should not be assigned: terminal control)
+// 013 CR Carriage return (Should not be assigned: terminal control)
+// 014 SO Shift out (Should not be assigned: terminal control)
+// 015 SI Shift in ( Resets Bold,Color,Underline and Reverse ) (Conflicting with terminal control)
+// 016 DLE Data link escape (Decent , can be assigned)
+// 017 DC1 Device control 1 (Good to be assigned)
+// 018 DC2 Device control 2 (Good to be assigned)
+// 019 DC3 Device control 3 (Good to be assigned)
+// 020 DC4 Device control 4 (Good to be assigned)
+// 021 NAK Negative acknowledge (Not so good, but could be used as last resource)
+// 022 SYN Synchronous idle ( Reverse text )
+// 023 ETB End of transmission block (Decent , can be assigned)
+// 024 CAN Cancel (Should not be assigned: terminal control)
+// 025 EM End of medium (Decent , can be assigned)
+// 026 SUB Substitute (Should not be assigned: terminal control)
+// 027 ESC Escape (Should not be assigned: terminal control)
+// 028 FS File separator (Excellent , should be used as first candidate)
+// 029 GS Group separator ( ICONS Escape: beginning of a word )
+// 030 RS Record separator ( CRYPT Escape: only beginning of the message )
+// 031 US Unit separator ( Underline text )
+
+
+//
+// mIrc control codes
+//
+
+//31 (0001 1111) US (Unit separator)
+#define KVI_TEXT_UNDERLINE 0x1f
+//2 (0000 0010) STX (Start of text)
+#define KVI_TEXT_BOLD 0x02
+//15 (0000 1111) SI (Shift in)
+#define KVI_TEXT_RESET 0x0f
+//22 (0001 0110) SYN (Synchronous idle)
+#define KVI_TEXT_REVERSE 0x16
+//3 (0000 0011) ETX (End of text)
+#define KVI_TEXT_COLOR 0x03
+
+//
+// Irc control codes
+//
+//1 (0000 0001) SOH (Start of heading)
+#define KVI_TEXT_CTCP 0x01
+
+//
+// KVirc added control codes
+//
+//30 (0001 1110) RS (Record separator)
+#define KVI_TEXT_CRYPTESCAPE 0x1e
+//29 (0001 1101) GS (Group separator)
+#define KVI_TEXT_ICON 0x1d
+
+#ifndef _KVI_MIRCCNTRL_CPP_
+ extern KVILIB_API const char * getColorBytes(const char *data_ptr,unsigned char *byte_1,unsigned char *byte_2);
+ extern KVILIB_API const kvi_wchar_t * getColorBytesW(const kvi_wchar_t *data_ptr,unsigned char *byte_1,unsigned char *byte_2);
+ extern KVILIB_API unsigned int getUnicodeColorBytes(const QString &szData,unsigned int charIdx,unsigned char *byte_1,unsigned char *byte_2);
+ inline const QChar * getUnicodeColorBytes(const QChar *pData,unsigned char *byte_1,unsigned char *byte_2)
+ { return (QChar *)getColorBytesW((const kvi_wchar_t *)pData,byte_1,byte_2); };
+
+#endif
+
+namespace KviMircCntrl
+{
+ KVILIB_API QString stripControlBytes(const QString &szData);
+}
+
+
+#endif //_KVI_MIRCCNTRL_H_
diff --git a/src/kvilib/irc/kvi_nickserv.cpp b/src/kvilib/irc/kvi_nickserv.cpp
new file mode 100644
index 00000000..a1809f84
--- /dev/null
+++ b/src/kvilib/irc/kvi_nickserv.cpp
@@ -0,0 +1,312 @@
+//=============================================================================
+//
+// File : kvi_nickserv.cpp
+// Creation date : Thu Aug 09 2001 17:44:56 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+
+#include "kvi_nickserv.h"
+#include "kvi_config.h"
+#include "kvi_ircmask.h"
+
+#include <qregexp.h>
+
+
+
+/*
+ @doc: nickserv_proto
+ @title:
+ Authentication with NickServ
+ @keyterms:
+ NickServ, automatic authentication with NickServ
+ @type:
+ generic
+ @short:
+ Automatic authentication with NickServ
+ @body:
+ KVIrc supports automatic authentication with the NickServ service.[br]
+ This service is commonly implemented on major IRC networks: basically
+ it is a program that allows users to register their nickname and protect
+ it from being stolen by others.[br] The NickServ protocol is
+ not standardized (at the time that I'm writing this doc) and automatic
+ authentication is a pure experimental protocol.[br]
+ Once you get on IRC with a registered nickname , the NickServ will
+ ask you for identification by sending you a NOTICE.[br]
+ The message will look in a way similar to the following:[br]
+ <b>You're using a registered nickname: if this is your nick,
+ please type /msg NickServ IDENTIFY password, otherwise please
+ choose another nickname</b>.[br]
+ The message is often broken in two or three lines of text.[br]
+ Please note that many network policies suggest to avoid automatic authentication
+ with NickServ.[br]I have implemented it because I know that it works on the networks
+ that I'm usually on.[br]You have to check that this protocol works on your network and
+ then eventually use it at your own risk.[br]
+*/
+
+
+// FIXME: The doc above is a bit outdated , fix it
+
+KviNickServRuleSet::KviNickServRuleSet()
+: KviHeapObject()
+{
+ m_bEnabled = false;
+ m_pRules = 0;
+}
+
+KviNickServRuleSet::KviNickServRuleSet(const KviNickServRuleSet &s)
+{
+ m_pRules = 0;
+ copyFrom(s);
+}
+
+
+KviNickServRuleSet::~KviNickServRuleSet()
+{
+ if(m_pRules)delete m_pRules;
+}
+
+void KviNickServRuleSet::save(KviConfig * cfg,const QString &prefix)
+{
+ if(!m_pRules)return; // nothing to save
+ if(m_pRules->isEmpty())return; // should never happen anyway
+ QString tmp;
+ if(m_bEnabled)
+ {
+ KviQString::sprintf(tmp,"%QNSEnabled",&prefix);
+ cfg->writeEntry(tmp,m_bEnabled);
+ }
+ KviQString::sprintf(tmp,"%QNSRules",&prefix);
+ cfg->writeEntry(tmp,m_pRules->count());
+ int idx = 0;
+ for(KviNickServRule * r = m_pRules->first();r;r = m_pRules->next())
+ {
+ KviQString::sprintf(tmp,"%QNSRule%d_",&prefix,idx);
+ r->save(cfg,tmp);
+ idx++;
+ }
+}
+
+KviNickServRuleSet * KviNickServRuleSet::load(KviConfig * cfg,const QString &prefix)
+{
+ QString tmp;
+ KviQString::sprintf(tmp,"%QNSRules",&prefix);
+ unsigned int cnt = cfg->readUIntEntry(tmp,0);
+ if(cnt == 0)return 0;
+ KviNickServRuleSet * s = new KviNickServRuleSet();
+ if(s->loadPrivate(cfg,prefix,cnt))return s;
+ delete s;
+ return 0;
+}
+
+void KviNickServRuleSet::load(const QString &szConfigFile)
+{
+ clear();
+ KviConfig cfg(szConfigFile,KviConfig::Read);
+
+ QString tmp;
+ KviQString::sprintf(tmp,"NSRules");
+ unsigned int cnt = cfg.readUIntEntry(tmp,0);
+ if(cnt == 0)return;
+ loadPrivate(&cfg,QString(""),cnt);
+}
+
+void KviNickServRuleSet::save(const QString &szConfigFile)
+{
+ KviConfig cfg(szConfigFile,KviConfig::Write);
+ cfg.clear();
+ save(&cfg,QString(""));
+}
+
+bool KviNickServRuleSet::loadPrivate(KviConfig * cfg,const QString &prefix,unsigned int nEntries)
+{
+ if(m_pRules)m_pRules->clear();
+ else {
+ m_pRules = new KviPointerList<KviNickServRule>;
+ m_pRules->setAutoDelete(true);
+ }
+
+ if(nEntries != 0)
+ {
+ QString tmp;
+ KviQString::sprintf(tmp,"%QNSEnabled",&prefix);
+ m_bEnabled = cfg->readBoolEntry(tmp,false);
+ for(unsigned int u=0;u<nEntries;u++)
+ {
+ KviQString::sprintf(tmp,"%QNSRule%u_",&prefix,u);
+ KviNickServRule * r = new KviNickServRule();
+ if(!r->load(cfg,tmp))delete r;
+ else m_pRules->append(r);
+ }
+ }
+
+ if(m_pRules->isEmpty())
+ {
+ m_bEnabled = false;
+ delete m_pRules;
+ m_pRules = 0;
+ return false;
+ }
+ return true;
+}
+
+void KviNickServRuleSet::clear()
+{
+ if(m_pRules)
+ {
+ delete m_pRules;
+ m_pRules = 0;
+ }
+ m_bEnabled = false;
+}
+
+void KviNickServRuleSet::addRule(KviNickServRule * r)
+{
+ if(!m_pRules)
+ {
+ m_pRules = new KviPointerList<KviNickServRule>;
+ m_pRules->setAutoDelete(true);
+ }
+ m_pRules->append(r);
+}
+
+KviNickServRuleSet * KviNickServRuleSet::createInstance()
+{
+ return new KviNickServRuleSet();
+}
+
+
+KviNickServRule * KviNickServRuleSet::matchRule(const QString &szNick,const KviIrcMask *nickServ,const QString &szMsg,const QString &szServer)
+{
+ if(!m_pRules)return 0;
+ for(KviNickServRule *r = m_pRules->first();r;r = m_pRules->next())
+ {
+ if(!KviQString::matchStringCI(r->registeredNick(),szNick,false,true)) continue;
+ if(!szServer.isEmpty())
+ {
+#ifdef COMPILE_USE_QT4
+ QRegExp res(r->serverMask(),Qt::CaseInsensitive,QRegExp::Wildcard);
+#else
+ QRegExp res(r->serverMask(),false,true);
+#endif
+ if(!res.exactMatch(szServer))continue;
+ }
+ if(!nickServ->matchedBy(KviIrcMask(r->nickServMask())))continue;
+#ifdef COMPILE_USE_QT4
+ QRegExp re(r->messageRegexp(),Qt::CaseInsensitive,QRegExp::Wildcard);
+#else
+ QRegExp re(r->messageRegexp(),false,true);
+#endif
+ if(re.exactMatch(szMsg))return r;
+ }
+ return 0;
+}
+
+void KviNickServRuleSet::copyFrom(const KviNickServRuleSet &src)
+{
+ if(src.m_pRules)
+ {
+ if(m_pRules)m_pRules->clear();
+ else {
+ m_pRules = new KviPointerList<KviNickServRule>;
+ m_pRules->setAutoDelete(true);
+ }
+ for(KviNickServRule * r = src.m_pRules->first();r;r = src.m_pRules->next())
+ {
+ KviNickServRule * c = new KviNickServRule();
+ c->copyFrom(*r);
+ m_pRules->append(c);
+ }
+ if(m_pRules->isEmpty())
+ {
+ m_bEnabled = false;
+ delete m_pRules;
+ m_pRules = 0;
+ } else {
+ m_bEnabled = src.m_bEnabled;
+ }
+ } else {
+ m_bEnabled = false;
+ if(m_pRules)
+ {
+ delete m_pRules;
+ m_pRules = 0;
+ }
+ }
+}
+
+
+void KviNickServRule::copyFrom(const KviNickServRule &src)
+{
+ m_szRegisteredNick = src.m_szRegisteredNick;
+ m_szNickServMask = src.m_szNickServMask;
+ m_szMessageRegexp = src.m_szMessageRegexp;
+ m_szIdentifyCommand = src.m_szIdentifyCommand;
+ m_szServerMask = src.m_szServerMask;
+}
+
+void KviNickServRule::save(KviConfig * cfg,const QString &prefix)
+{
+ QString tmp;
+ KviQString::sprintf(tmp,"%QRegisteredNick",&prefix);
+ cfg->writeEntry(tmp,m_szRegisteredNick);
+ KviQString::sprintf(tmp,"%QNickServMask",&prefix);
+ cfg->writeEntry(tmp,m_szNickServMask);
+ KviQString::sprintf(tmp,"%QMessageRegexp",&prefix);
+ cfg->writeEntry(tmp,m_szMessageRegexp);
+ KviQString::sprintf(tmp,"%QIdentifyCommand",&prefix);
+ cfg->writeEntry(tmp,m_szIdentifyCommand);
+ KviQString::sprintf(tmp,"%QServerMask",&prefix);
+ cfg->writeEntry(tmp,m_szServerMask);
+}
+
+bool KviNickServRule::load(KviConfig * cfg,const QString &prefix)
+{
+ QString tmp;
+ KviQString::sprintf(tmp,"%QRegisteredNick",&prefix);
+ m_szRegisteredNick = KviQString::trimmed(cfg->readQStringEntry(tmp));
+ if(m_szRegisteredNick.isEmpty())return false;
+ KviQString::sprintf(tmp,"%QNickServMask",&prefix);
+ m_szNickServMask = cfg->readQStringEntry(tmp);
+ if(m_szNickServMask.isEmpty())return false;
+ KviQString::sprintf(tmp,"%QServerMask",&prefix);
+ m_szServerMask = cfg->readQStringEntry(tmp,QString::null);
+ KviQString::sprintf(tmp,"%QMessageRegexp",&prefix);
+ m_szMessageRegexp = cfg->readQStringEntry(tmp);
+ if(m_szMessageRegexp.isEmpty())return false;
+ KviQString::sprintf(tmp,"%QIdentifyCommand",&prefix);
+ m_szIdentifyCommand = cfg->readQStringEntry(tmp);
+ return !m_szIdentifyCommand.isEmpty();
+}
+
+KviNickServRule * KviNickServRule::createInstance(const QString &szRegisteredNick,
+ const QString &szNickServMask,
+ const QString &szMessageRegexp,
+ const QString &szIdentifyCommand,
+ const QString &szServerMask)
+{
+ return new KviNickServRule(szRegisteredNick,szNickServMask,szMessageRegexp,szIdentifyCommand,szServerMask);
+}
+
+
+
+
diff --git a/src/kvilib/irc/kvi_nickserv.h b/src/kvilib/irc/kvi_nickserv.h
new file mode 100644
index 00000000..105eed1c
--- /dev/null
+++ b/src/kvilib/irc/kvi_nickserv.h
@@ -0,0 +1,112 @@
+#ifndef _KVI_NICKSERV_H_
+#define _KVI_NICKSERV_H_
+//=============================================================================
+//
+// File : kvi_nickserv.h
+// Creation date : Thu Aug 09 2001 16:43:56 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_heapobject.h"
+#include "kvi_pointerlist.h"
+
+class KviConfig;
+class KviIrcMask;
+
+class KVILIB_API KviNickServRule : public KviHeapObject
+{
+protected:
+ QString m_szRegisteredNick; // my registered nickname
+ QString m_szNickServMask; // the NickServ service mask
+ QString m_szMessageRegexp; // the NickServ message regexp
+ QString m_szIdentifyCommand; // the IDENTIFY command to send to server
+ QString m_szServerMask; // the mask that the server must match (not used in per-network rules)
+public:
+ KviNickServRule() : KviHeapObject() {};
+ KviNickServRule(
+ const QString &szRegisteredNick,
+ const QString &szNickServMask,
+ const QString &szMessageRegexp,
+ const QString &szIdentifyCommand,
+ const QString &szServerMask = QString::null)
+ : KviHeapObject(),
+ m_szRegisteredNick(szRegisteredNick),
+ m_szNickServMask(szNickServMask),
+ m_szMessageRegexp(szMessageRegexp),
+ m_szIdentifyCommand(szIdentifyCommand),
+ m_szServerMask(szServerMask)
+ {};
+public:
+ const QString & registeredNick() const { return m_szRegisteredNick; };
+ const QString & nickServMask() const { return m_szNickServMask; };
+ const QString & messageRegexp() const { return m_szMessageRegexp; };
+ const QString & identifyCommand() const { return m_szIdentifyCommand; };
+ const QString & serverMask() const { return m_szServerMask; };
+ void setRegisteredNick(const QString &szRegisteredNick){ m_szRegisteredNick = szRegisteredNick; };
+ void setNickServMask(const QString &szNickServMask){ m_szNickServMask = szNickServMask; };
+ void setMessageRegexp(const QString &szMessageRegexp){ m_szMessageRegexp = szMessageRegexp; };
+ void setIdentifyCommand(const QString &szIdentifyCommand){ m_szIdentifyCommand = szIdentifyCommand; };
+ void setServerMask(const QString &szServerMask){ m_szServerMask = szServerMask; };
+public:
+ // avoid crashes under windows
+ static KviNickServRule * createInstance(const QString &szRegisteredNick,
+ const QString &szNickServMask,
+ const QString &szMessageRegexp,
+ const QString &szIdentifyCommand,
+ const QString &szServerMask = QString::null);
+
+ void save(KviConfig * cfg,const QString &prefix);
+ // returns false if the loaded data has no sense
+ bool load(KviConfig * cfg,const QString &prefix);
+ void copyFrom(const KviNickServRule &src);
+};
+
+class KVILIB_API KviNickServRuleSet : public KviHeapObject
+{
+public:
+ KviNickServRuleSet();
+ KviNickServRuleSet(const KviNickServRuleSet &s);
+ ~KviNickServRuleSet();
+protected:
+ KviPointerList<KviNickServRule> * m_pRules; // FIXME: Replace with KviPointerHashTable<QString,KviPointerList>
+ bool m_bEnabled;
+public:
+ // avoid crashes under windows
+ static KviNickServRuleSet * createInstance();
+ void clear();
+ bool isEnabled(){ return m_bEnabled; };
+ void setEnabled(bool bEnabled){ m_bEnabled = bEnabled; };
+ bool isEmpty(){ return m_pRules ? m_pRules->isEmpty() : true; };
+ void addRule(KviNickServRule * r);
+ KviNickServRule * matchRule(const QString &szNick,const KviIrcMask *nickServ,const QString &szMsg,const QString &szServer = QString::null);
+ void copyFrom(const KviNickServRuleSet &src);
+ void load(const QString &szConfigFile);
+ void save(const QString &szConfigFile);
+ void save(KviConfig * cfg,const QString &prefix);
+ KviPointerList<KviNickServRule> * rules(){ return m_pRules; };
+ static KviNickServRuleSet * load(KviConfig * cfg,const QString &prefix);
+protected:
+ bool loadPrivate(KviConfig * cfg,const QString &prefix,unsigned int nEntries);
+};
+
+
+#endif // _KVI_NICKSERV_H_
diff --git a/src/kvilib/irc/kvi_useridentity.cpp b/src/kvilib/irc/kvi_useridentity.cpp
new file mode 100644
index 00000000..d4791333
--- /dev/null
+++ b/src/kvilib/irc/kvi_useridentity.cpp
@@ -0,0 +1,252 @@
+//=============================================================================
+//
+// File : kvi_useridentity.cpp
+// Created on Sun 21 Jan 2007 04:31:47 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2007 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+#include "kvi_useridentity.h"
+#include "kvi_locale.h"
+#include "kvi_defaults.h"
+
+// FIXME: Put here also the default away message, default away nick, default ctcp replies etc ?
+
+bool KviUserIdentity::load(KviConfig &cfg)
+{
+ m_szId = cfg.group();
+ m_szNickName = cfg.readQStringEntry("NickName");
+ m_szAltNickName1 = cfg.readQStringEntry("AltNickName1");
+ m_szAltNickName2 = cfg.readQStringEntry("AltNickName2");
+ m_szAltNickName3 = cfg.readQStringEntry("AltNickName3");
+ m_szUserName = cfg.readQStringEntry("UserName");
+ // FIXME: At least scramble the pass ?
+ m_szPassword = cfg.readQStringEntry("Password");
+ KviPixmap def;
+ m_pixAvatar = cfg.readPixmapEntry("Avatar",def);
+ m_szPartMessage = cfg.readQStringEntry("PartMessage");
+ m_szQuitMessage= cfg.readQStringEntry("QuitMessage");
+ m_szAge = cfg.readQStringEntry("Age");
+ m_szGender = cfg.readQStringEntry("Gender");
+ m_szLocation = cfg.readQStringEntry("Location");
+ m_szLanguages = cfg.readQStringEntry("Languages");
+ m_szOtherInfo = cfg.readQStringEntry("OtherInfo");
+ m_szUserMode = cfg.readQStringEntry("UserMode");
+ m_szOnConnectCommand = cfg.readQStringEntry("OnConnectCommand");
+ m_szOnLoginCommand = cfg.readQStringEntry("OnLoginCommand");
+ return !(m_szId.isEmpty() || m_szNickName.isEmpty());
+}
+
+bool KviUserIdentity::save(KviConfig &cfg)
+{
+ cfg.setGroup(m_szId);
+ cfg.writeEntry("NickName",m_szNickName);
+ cfg.writeEntry("AltNickName1",m_szAltNickName1);
+ cfg.writeEntry("AltNickName2",m_szAltNickName2);
+ cfg.writeEntry("AltNickName3",m_szAltNickName3);
+ cfg.writeEntry("UserName",m_szUserName);
+ // FIXME: At least scramble the pass ?
+ cfg.writeEntry("Password",m_szPassword);
+ cfg.writeEntry("Avatar",m_pixAvatar);
+ cfg.writeEntry("PartMessage",m_szPartMessage);
+ cfg.writeEntry("QuitMessage",m_szQuitMessage);
+ cfg.writeEntry("Age",m_szAge);
+ cfg.writeEntry("Gender",m_szGender);
+ cfg.writeEntry("Location",m_szLocation);
+ cfg.writeEntry("Languages",m_szLanguages);
+ cfg.writeEntry("OtherInfo",m_szOtherInfo);
+ cfg.writeEntry("UserMode",m_szUserMode);
+ cfg.writeEntry("OnConnectCommand",m_szOnConnectCommand);
+ cfg.writeEntry("OnLoginCommand",m_szOnLoginCommand);
+ return true;
+}
+
+void KviUserIdentity::copyFrom(const KviUserIdentity &src)
+{
+ m_szId = src.m_szId;
+ m_szNickName = src.m_szNickName;
+
+ m_szAltNickName1 = src.m_szAltNickName1;
+ m_szAltNickName2 = src.m_szAltNickName2;
+ m_szAltNickName3 = src.m_szAltNickName3;
+
+ m_szUserName = src.m_szUserName;
+ m_szRealName = src.m_szRealName;
+ m_szPassword = src.m_szPassword;
+
+ m_pixAvatar = src.m_pixAvatar;
+
+ m_szUserName = src.m_szUserName;
+ m_szRealName = src.m_szRealName;
+ m_szPassword = src.m_szPassword;
+
+ m_pixAvatar = src.m_pixAvatar;
+
+ m_szPartMessage = src.m_szPartMessage;
+ m_szQuitMessage = src.m_szQuitMessage;
+
+ m_szAge = src.m_szAge;
+ m_szGender = src.m_szGender;
+ m_szLocation = src.m_szLocation;
+ m_szLanguages = src.m_szLanguages;
+ m_szOtherInfo = src.m_szOtherInfo;
+
+ m_szUserMode = src.m_szUserMode;
+
+ m_szOnConnectCommand = src.m_szOnConnectCommand;
+ m_szOnLoginCommand = src.m_szOnLoginCommand;
+}
+
+
+KviUserIdentityManager * KviUserIdentityManager::m_pInstance = 0;
+
+KviUserIdentityManager::KviUserIdentityManager()
+: KviHeapObject()
+{
+ m_pIdentityDict = new KviPointerHashTable<QString,KviUserIdentity>();
+ m_pIdentityDict->setAutoDelete(true);
+}
+
+KviUserIdentityManager::~KviUserIdentityManager()
+{
+ delete m_pIdentityDict;
+}
+
+void KviUserIdentityManager::init()
+{
+ if(m_pInstance)return;
+ m_pInstance = new KviUserIdentityManager();
+}
+
+void KviUserIdentityManager::done()
+{
+ if(!m_pInstance)return;
+ delete m_pInstance;
+ m_pInstance = 0;
+}
+
+const KviUserIdentity * KviUserIdentityManager::defaultIdentity()
+{
+ KviUserIdentity * ret;
+ if(!m_szDefaultIdentity.isEmpty())
+ {
+ ret = m_pIdentityDict->find(m_szDefaultIdentity);
+ if(ret)return ret;
+ }
+
+ // the default identity is borken :/
+ // grab the first one
+ KviPointerHashTableIterator<QString,KviUserIdentity> it(*m_pIdentityDict);
+ ret = it.current();
+ if(ret)
+ {
+ m_szDefaultIdentity = ret->id();
+ return ret;
+ }
+ // no identities available: create the default
+ ret = new KviUserIdentity();
+
+ ret->setId(__tr2qs("Default"));
+ ret->setNickName(KVI_DEFAULT_NICKNAME1);
+ ret->setAltNickName1(KVI_DEFAULT_NICKNAME2);
+ ret->setAltNickName2(KVI_DEFAULT_NICKNAME3);
+ ret->setAltNickName3(KVI_DEFAULT_NICKNAME4);
+ ret->setUserName(KVI_DEFAULT_USERNAME);
+ ret->setRealName(KVI_DEFAULT_REALNAME);
+ ret->setPartMessage(KVI_DEFAULT_PART_MESSAGE);
+ ret->setQuitMessage(KVI_DEFAULT_QUIT_MESSAGE);
+
+ m_pIdentityDict->replace(ret->id(),ret);
+
+ return ret;
+}
+
+void KviUserIdentityManager::load(const QString &szFileName)
+{
+ m_pIdentityDict->clear();
+
+ KviConfig cfg(szFileName,KviConfig::Read);
+
+ cfg.setGroup("KVIrc");
+
+ m_szDefaultIdentity = cfg.readQStringEntry("DefaultIdentity","");
+
+ KviConfigIterator it(*(cfg.dict()));
+ while(KviConfigGroup * grp = it.current())
+ {
+ if(!KviQString::equalCI(it.currentKey(),"KVIrc"))
+ {
+ cfg.setGroup(it.currentKey());
+
+ KviUserIdentity * id = new KviUserIdentity();
+ if(id->load(cfg))
+ m_pIdentityDict->replace(id->id(),id);
+ else
+ delete id;
+ }
+ ++it;
+ }
+}
+
+void KviUserIdentityManager::save(const QString &szFileName)
+{
+ KviConfig cfg(szFileName,KviConfig::Write);
+ cfg.clear();
+
+ cfg.setGroup("KVIrc");
+
+ cfg.writeEntry("DefaultIdentity",m_szDefaultIdentity);
+
+ KviPointerHashTableIterator<QString,KviUserIdentity> it(*m_pIdentityDict);
+ while(KviUserIdentity * id = it.current())
+ {
+ id->save(cfg);
+ ++it;
+ }
+}
+
+void KviUserIdentityManager::copyFrom(KviUserIdentityManager * pWorkingCopy)
+{
+ m_pIdentityDict->clear();
+ m_szDefaultIdentity = pWorkingCopy->m_szDefaultIdentity;
+ KviPointerHashTableIterator<QString,KviUserIdentity> it(*(pWorkingCopy->m_pIdentityDict));
+ while(KviUserIdentity * id = it.current())
+ {
+ KviUserIdentity * pNew = new KviUserIdentity();
+ pNew->copyFrom(*id);
+ m_pIdentityDict->replace(pNew->id(),pNew);
+ ++it;
+ }
+}
+
+KviUserIdentityManager * KviUserIdentityManager::createWorkingCopy()
+{
+ KviUserIdentityManager * pCopy = new KviUserIdentityManager();
+ pCopy->copyFrom(this);
+ return pCopy;
+}
+
+void KviUserIdentityManager::releaseWorkingCopy(KviUserIdentityManager * pWorkingCopy)
+{
+ if(pWorkingCopy)delete pWorkingCopy;
+}
+
+
diff --git a/src/kvilib/irc/kvi_useridentity.h b/src/kvilib/irc/kvi_useridentity.h
new file mode 100644
index 00000000..c1018f1a
--- /dev/null
+++ b/src/kvilib/irc/kvi_useridentity.h
@@ -0,0 +1,145 @@
+#ifndef _KVI_USERIDENTITY_H_
+#define _KVI_USERIDENTITY_H_
+//=============================================================================
+//
+// File : kvi_useridentity.h
+// Created on Sun 21 Jan 2007 04:31:47 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2007 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_heapobject.h"
+#include "kvi_pixmap.h"
+#include "kvi_config.h"
+#include "kvi_pointerhashtable.h"
+
+class KVILIB_API KviUserIdentity : public KviHeapObject
+{
+ friend class KviUserIdentityManager;
+public:
+ KviUserIdentity()
+ : KviHeapObject()
+ {
+ }
+ ~KviUserIdentity()
+ {
+ }
+protected:
+ QString m_szId; // the identity set name
+
+ QString m_szNickName;
+
+ QString m_szAltNickName1;
+ QString m_szAltNickName2;
+ QString m_szAltNickName3;
+
+ QString m_szUserName;
+ QString m_szRealName;
+ QString m_szPassword;
+
+ KviPixmap m_pixAvatar;
+
+ QString m_szPartMessage;
+ QString m_szQuitMessage;
+
+ QString m_szAge;
+ QString m_szGender;
+ QString m_szLocation;
+ QString m_szLanguages;
+ QString m_szOtherInfo;
+
+ QString m_szUserMode;
+
+ QString m_szOnConnectCommand;
+ QString m_szOnLoginCommand;
+public:
+ const QString & id() const { return m_szId; };
+ const QString & nickName() const { return m_szNickName; };
+ const QString & altNickName1() const { return m_szAltNickName1; };
+ const QString & altNickName2() const { return m_szAltNickName2; };
+ const QString & altNickName3() const { return m_szAltNickName3; };
+ const QString & userName() const { return m_szUserName; };
+ const QString & password() const { return m_szPassword; };
+ const KviPixmap & avatar() const { return m_pixAvatar; };
+ const QString & partMessage() const { return m_szPartMessage; };
+ const QString & quitMessage() const { return m_szQuitMessage; };
+ const QString & age() const { return m_szAge; };
+ const QString & gender() const { return m_szGender; };
+ const QString & location() const { return m_szLocation; };
+ const QString & languages() const { return m_szLanguages; };
+ const QString & otherInfo() const { return m_szOtherInfo; };
+ const QString & userMode() const { return m_szUserMode; };
+ const QString & onConnectCommand() const { return m_szOnConnectCommand; };
+ const QString & onLoginCommand() const { return m_szOnLoginCommand; };
+ void setId(const QString &szId){ m_szId = szId; };
+ void setNickName(const QString &szNickName){ m_szNickName = szNickName; };
+ void setAltNickName1(const QString &szNickName){ m_szAltNickName1 = szNickName; };
+ void setAltNickName2(const QString &szNickName){ m_szAltNickName2 = szNickName; };
+ void setAltNickName3(const QString &szNickName){ m_szAltNickName3 = szNickName; };
+ void setUserName(const QString &szUserName){ m_szUserName = szUserName; };
+ void setRealName(const QString &szRealName){ m_szRealName = szRealName; };
+ void setPassword(const QString &szPassword){ m_szPassword = szPassword; };
+ void setAvatar(const KviPixmap &pix){ m_pixAvatar = pix; };
+ void setPartMessage(const QString &szMsg){ m_szPartMessage = szMsg; };
+ void setQuitMessage(const QString &szMsg){ m_szQuitMessage = szMsg; };
+ void setAge(const QString &szAge){ m_szAge = szAge; };
+ void setGender(const QString &szGender){ m_szGender = szGender; };
+ void setLocation(const QString &szLocation){ m_szLocation = szLocation; };
+ void setLanguages(const QString &szLanguages){ m_szLanguages = szLanguages; };
+ void setOtherInfo(const QString &szOtherInfo){ m_szOtherInfo = szOtherInfo; };
+ void setUserMode(const QString &szUserMode){ m_szUserMode = szUserMode; };
+ void setOnConnectCommand(const QString &szOnConnectCommand){ m_szOnConnectCommand = szOnConnectCommand; };
+ void setOnLoginCommand(const QString &szOnLoginCommand){ m_szOnLoginCommand = szOnLoginCommand; };
+protected:
+ void copyFrom(const KviUserIdentity &src);
+ bool save(KviConfig &cfg);
+ bool load(KviConfig &cfg);
+};
+
+class KVILIB_API KviUserIdentityManager : public KviHeapObject
+{
+protected:
+ KviUserIdentityManager();
+ ~KviUserIdentityManager();
+protected:
+ static KviUserIdentityManager * m_pInstance;
+ KviPointerHashTable<QString,KviUserIdentity> * m_pIdentityDict;
+ QString m_szDefaultIdentity;
+public:
+ static void init();
+ static void done();
+ static KviUserIdentityManager * instance(){ return m_pInstance; };
+
+ KviPointerHashTable<QString,KviUserIdentity> * identityDict(){ return m_pIdentityDict; };
+ const KviUserIdentity * findIdentity(const QString &szId){ return m_pIdentityDict->find(szId); };
+ // NEVER NULL
+ const KviUserIdentity * defaultIdentity();
+
+ void setDefaultIdentity(const QString &szIdentityId){ m_szDefaultIdentity = szIdentityId; };
+
+ KviUserIdentityManager * createWorkingCopy();
+ void copyFrom(KviUserIdentityManager * pWorkingCopy);
+ void releaseWorkingCopy(KviUserIdentityManager * pWorkingCopy);
+
+ void save(const QString &szFileName);
+ void load(const QString &szFileName);
+};
+
+#endif //!_KVI_USERIDENTITY_H_
diff --git a/src/kvilib/irc/moc_kvi_ircuserdb.cpp b/src/kvilib/irc/moc_kvi_ircuserdb.cpp
new file mode 100644
index 00000000..2b4d1482
--- /dev/null
+++ b/src/kvilib/irc/moc_kvi_ircuserdb.cpp
@@ -0,0 +1,119 @@
+/****************************************************************************
+** KviIrcUserDataBase meta object code from reading C++ file 'kvi_ircuserdb.h'
+**
+** Created: Sun Mar 23 20:56:18 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_ircuserdb.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviIrcUserDataBase::className() const
+{
+ return "KviIrcUserDataBase";
+}
+
+QMetaObject *KviIrcUserDataBase::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviIrcUserDataBase( "KviIrcUserDataBase", &KviIrcUserDataBase::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviIrcUserDataBase::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviIrcUserDataBase", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviIrcUserDataBase::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviIrcUserDataBase", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviIrcUserDataBase::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QObject::staticMetaObject();
+ static const QUParameter param_slot_0[] = {
+ { 0, &static_QUType_QString, 0, QUParameter::In }
+ };
+ static const QUMethod slot_0 = {"registeredUserRemoved", 1, param_slot_0 };
+ static const QUParameter param_slot_1[] = {
+ { 0, &static_QUType_QString, 0, QUParameter::In }
+ };
+ static const QUMethod slot_1 = {"registeredUserChanged", 1, param_slot_1 };
+ static const QUParameter param_slot_2[] = {
+ { 0, &static_QUType_QString, 0, QUParameter::In }
+ };
+ static const QUMethod slot_2 = {"registeredUserAdded", 1, param_slot_2 };
+ static const QUMethod slot_3 = {"registeredDatabaseCleared", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "registeredUserRemoved(const QString&)", &slot_0, QMetaData::Protected },
+ { "registeredUserChanged(const QString&)", &slot_1, QMetaData::Protected },
+ { "registeredUserAdded(const QString&)", &slot_2, QMetaData::Protected },
+ { "registeredDatabaseCleared()", &slot_3, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviIrcUserDataBase", parentObject,
+ slot_tbl, 4,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviIrcUserDataBase.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviIrcUserDataBase::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviIrcUserDataBase" ) )
+ return this;
+ return QObject::qt_cast( clname );
+}
+
+bool KviIrcUserDataBase::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: registeredUserRemoved((const QString&)static_QUType_QString.get(_o+1)); break;
+ case 1: registeredUserChanged((const QString&)static_QUType_QString.get(_o+1)); break;
+ case 2: registeredUserAdded((const QString&)static_QUType_QString.get(_o+1)); break;
+ case 3: registeredDatabaseCleared(); break;
+ default:
+ return QObject::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviIrcUserDataBase::qt_emit( int _id, QUObject* _o )
+{
+ return QObject::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviIrcUserDataBase::qt_property( int id, int f, QVariant* v)
+{
+ return QObject::qt_property( id, f, v);
+}
+
+bool KviIrcUserDataBase::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvilib/net/Makefile.am b/src/kvilib/net/Makefile.am
new file mode 100644
index 00000000..c84487eb
--- /dev/null
+++ b/src/kvilib/net/Makefile.am
@@ -0,0 +1,5 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+EXTRA_DIST = *.cpp *.h
diff --git a/src/kvilib/net/kvi_dns.cpp b/src/kvilib/net/kvi_dns.cpp
new file mode 100644
index 00000000..faa2e126
--- /dev/null
+++ b/src/kvilib/net/kvi_dns.cpp
@@ -0,0 +1,450 @@
+//=============================================================================
+//
+// File : kvi_dns.cpp
+// Creation date : Sat Jul 21 2000 17:19:31 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+#define __KVILIB__
+
+#include "kvi_dns.h"
+#include "kvi_error.h"
+#include "kvi_netutils.h"
+
+#include <errno.h>
+
+#ifdef COMPILE_ON_WINDOWS
+ #include <winsock2.h>
+
+ #ifdef COMPILE_IPV6_SUPPORT
+ #ifdef WIN2K
+ #include <ws2ip6.h>
+ #else
+ #include <ws2tcpip.h>
+ //#include <tpipv6.h>
+ #endif
+ #endif
+#else
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <netdb.h>
+#endif
+
+// this is for FreeBSD
+#ifndef EAI_ADDRFAMILY
+ #define EAI_ADDRFAMILY EAI_FAMILY
+#endif
+
+#ifndef EAI_NODATA
+ #define EAI_NODATA 0
+#endif
+
+
+
+KviDnsResult::KviDnsResult()
+{
+ m_iError = KviError_success;
+ m_pHostnameList = new KviPointerList<QString>;
+ m_pHostnameList->setAutoDelete(true);
+ m_pIpAddressList = new KviPointerList<QString>;
+ m_pIpAddressList->setAutoDelete(true);
+
+}
+
+KviDnsResult::~KviDnsResult()
+{
+ delete m_pHostnameList;
+ delete m_pIpAddressList;
+}
+
+void KviDnsResult::appendHostname(const QString &host)
+{
+ m_pHostnameList->append(new QString(host));
+}
+
+
+void KviDnsResult::appendAddress(const QString &addr)
+{
+ m_pIpAddressList->append(new QString(addr));
+}
+
+
+
+KviDnsThread::KviDnsThread(KviDns * pDns)
+{
+ m_pParentDns = pDns;
+}
+
+KviDnsThread::~KviDnsThread()
+{
+}
+
+int KviDnsThread::translateDnsError(int iErr)
+{
+#if defined(COMPILE_IPV6_SUPPORT) || !defined(COMPILE_ON_WINDOWS)
+
+ switch(iErr)
+ {
+ case EAI_FAMILY: return KviError_unsupportedAddressFamily; break;
+#if !defined(COMPILE_ON_WINDOWS) && defined(EAI_ADDRFAMILY) && (EAI_ADDRFAMILY != EAI_FAMILY)
+ case EAI_ADDRFAMILY: return KviError_unsupportedAddressFamily; break;
+#endif
+// NOT FreeBSD ARE WE?
+#if defined(EAI_NODATA) && (EAI_NODATA != EAI_NONAME)
+// YARR
+ case EAI_NODATA: return KviError_validNameButNoIpAddress; break;
+#endif
+ case EAI_FAIL: return KviError_unrecoverableNameserverError; break;
+ case EAI_AGAIN: return KviError_dnsTemporaneousFault; break;
+ // this should never happen
+ case EAI_BADFLAGS: return KviError_dnsInternalErrorBadFlags; break;
+ case EAI_MEMORY: return KviError_dnsInternalErrorOutOfMemory; break;
+ // got this when experimenting with protocols
+ case EAI_SERVICE: return KviError_dnsInternalErrorServiceNotSupported; break;
+#ifndef COMPILE_ON_WINDOWS
+ case EAI_NONAME: return KviError_dnsNoName; break;
+#endif
+ // got this when experimenting with protocols
+ case EAI_SOCKTYPE: return KviError_dnsInternalErrorUnsupportedSocketType; break;
+#ifndef COMPILE_ON_WINDOWS
+ case EAI_SYSTEM: return -errno;
+#endif
+ }
+
+#endif
+ return KviError_dnsQueryFailed;
+}
+
+void KviDnsThread::postDnsError(KviDnsResult * dns,int iErr)
+{
+ dns->setError(iErr);
+ KviThreadDataEvent<KviDnsResult> * e = new KviThreadDataEvent<KviDnsResult>(KVI_DNS_THREAD_EVENT_DATA);
+ e->setData(dns);
+ postEvent(m_pParentDns,e);
+}
+
+void KviDnsThread::run()
+{
+ KviDnsResult * dns = new KviDnsResult();
+
+ dns->setQuery(m_szQuery);
+
+ if(m_szQuery.isEmpty())
+ {
+ postDnsError(dns,KviError_noHostToResolve);
+ return;
+ }
+
+#ifndef COMPILE_IPV6_SUPPORT
+ if(m_queryType != KviDns::IpV4)
+ {
+ if(m_queryType == KviDns::IpV6)
+ {
+ postDnsError(dns,KviError_noIpV6Support);
+ return;
+ }
+ m_queryType = KviDns::IpV4;
+ }
+#endif
+
+#if defined(COMPILE_ON_WINDOWS) && !defined(COMPILE_IPV6_SUPPORT)
+
+ if(m_queryType == KviDns::IpV6)
+ {
+ postDnsError(dns,KviError_noIpV6Support);
+ return;
+ }
+
+ // gethostbyaddr and gethostbyname are thread-safe on Windoze
+ struct in_addr inAddr;
+ struct hostent *pHostEntry = 0;
+
+
+ // DIE DIE!....I hope that this stuff will disappear sooner or later :)
+
+ if(KviNetUtils::stringIpToBinaryIp(m_szQuery,&inAddr))
+ {
+ pHostEntry = gethostbyaddr((const char *)&inAddr,sizeof(inAddr),AF_INET);
+ } else {
+ pHostEntry = gethostbyname(m_szQuery);
+ }
+
+ if(!pHostEntry)
+ {
+ switch(h_errno)
+ {
+ case HOST_NOT_FOUND: dns->setError(KviError_hostNotFound); break;
+ case NO_ADDRESS: dns->setError(KviError_validNameButNoIpAddress); break;
+ case NO_RECOVERY: dns->setError(KviError_unrecoverableNameserverError); break;
+ case TRY_AGAIN: dns->setError(KviError_dnsTemporaneousFault); break;
+ default: dns->setError(KviError_dnsQueryFailed); break;
+ }
+ } else {
+ dns->appendHostname(pHostEntry->h_name);
+ QString szIp;
+ KviNetUtils::binaryIpToStringIp(* ((struct in_addr*)(pHostEntry->h_addr)),szIp);
+ dns->appendAddress(szIp);
+
+ int idx = 1;
+ while(pHostEntry->h_addr_list[idx])
+ {
+ QString tmp;
+ KviNetUtils::binaryIpToStringIp(* ((struct in_addr*)(pHostEntry->h_addr_list[idx])),tmp);
+ if(tmp.hasData())dns->appendAddress(tmp);
+ ++idx;
+ }
+ if(pHostEntry->h_aliases[0])
+ {
+ dns->appendHostname(QString::fromUtf8(pHostEntry->h_aliases[0]));
+ if(pHostEntry->h_aliases[1])dns->appendHostname(QString::fromUtf8(pHostEntry->h_aliases[1]));
+ }
+ }
+
+
+#else //!COMPILE_ON_WINDOWS || COMPILE_IPV6_SUPPORT
+
+ int retVal;
+
+
+//#ifdef HAVE_GETNAMEINFO
+ struct sockaddr_in ipv4Addr;
+
+#ifdef COMPILE_IPV6_SUPPORT
+ struct sockaddr_in6 ipv6Addr;
+ bool bIsIpV6Ip = false;
+#endif
+
+ bool bIsIpV4Ip = KviNetUtils::stringIpToBinaryIp(m_szQuery,(struct in_addr *)&(ipv4Addr.sin_addr));
+
+#ifdef COMPILE_IPV6_SUPPORT
+ if(!bIsIpV4Ip)bIsIpV6Ip = KviNetUtils::stringIpToBinaryIp_V6(m_szQuery,(struct in6_addr *)&(ipv6Addr.sin6_addr));
+#endif
+
+//#ifdef HAVE_GETNAMEINFO
+
+#ifdef COMPILE_IPV6_SUPPORT
+ if(bIsIpV4Ip || bIsIpV6Ip)
+ {
+#else
+ if(bIsIpV4Ip)
+ {
+#endif
+ // use getnameinfo...
+ char retname[1025]; // should be enough....
+
+#ifdef COMPILE_IPV6_SUPPORT
+ if(bIsIpV4Ip)
+ {
+#endif
+ ipv4Addr.sin_family = AF_INET;
+ ipv4Addr.sin_port = 0;
+ // NI_NAMEREQD as last param ?
+ retVal = getnameinfo((struct sockaddr *)&ipv4Addr,sizeof(ipv4Addr),retname,1025,0,0,NI_NAMEREQD);
+#ifdef COMPILE_IPV6_SUPPORT
+ } else {
+ ipv6Addr.sin6_family = AF_INET6;
+ ipv6Addr.sin6_port = 0;
+ retVal = getnameinfo((struct sockaddr *)&ipv6Addr,sizeof(ipv6Addr),retname,1025,0,0,NI_NAMEREQD);
+ }
+#endif
+
+ if(retVal != 0)dns->setError(translateDnsError(retVal));
+ else {
+ dns->appendHostname(retname);
+ dns->appendAddress(m_szQuery);
+ }
+
+ } else {
+//#endif //HAVE_GETNAMEINFO
+
+
+//#ifdef COMPILE_IPV6_SUPPORT
+// struct in6_addr in6Addr;
+//#endif
+ struct addrinfo * pRet = 0;
+ struct addrinfo * pNext;
+ struct addrinfo hints;
+ hints.ai_flags = 0; //AI_CANONNAME; <-- for IPV6 it makes cannoname to point to the IP address!
+#ifdef COMPILE_IPV6_SUPPORT
+ hints.ai_family = (m_queryType == KviDns::IpV6) ? PF_INET6 : ((m_queryType == KviDns::IpV4) ? PF_INET : PF_UNSPEC);
+#else
+ hints.ai_family = PF_INET;
+#endif
+ hints.ai_socktype = SOCK_STREAM;
+ hints.ai_protocol = 0;
+ hints.ai_addrlen = 0;
+ hints.ai_canonname = 0;
+ hints.ai_addr = 0;
+ hints.ai_next = 0;
+
+ retVal = getaddrinfo(KviQString::toUtf8(m_szQuery).data(),0,&hints,&pRet);
+
+ if(retVal != 0)dns->setError(translateDnsError(retVal));
+ else {
+ dns->appendHostname(pRet->ai_canonname ? QString::fromUtf8(pRet->ai_canonname) : m_szQuery);
+ QString szIp;
+#ifdef COMPILE_IPV6_SUPPORT
+ if(pRet->ai_family == PF_INET6)KviNetUtils::binaryIpToStringIp_V6(((sockaddr_in6 *)(pRet->ai_addr))->sin6_addr,szIp);
+ else {
+#endif
+ KviNetUtils::binaryIpToStringIp(((sockaddr_in *)(pRet->ai_addr))->sin_addr,szIp);
+#ifdef COMPILE_IPV6_SUPPORT
+ }
+#endif
+ dns->appendAddress(szIp);
+
+ pNext = pRet->ai_next;
+ while(pNext)
+ {
+ QString tmp;
+#ifdef COMPILE_IPV6_SUPPORT
+ if(pNext->ai_family == PF_INET6)KviNetUtils::binaryIpToStringIp_V6(((sockaddr_in6 *)(pNext->ai_addr))->sin6_addr,tmp);
+ else {
+#endif
+ KviNetUtils::binaryIpToStringIp(((sockaddr_in *)(pNext->ai_addr))->sin_addr,tmp);
+#ifdef COMPILE_IPV6_SUPPORT
+ }
+#endif
+ if(!tmp.isEmpty())dns->appendAddress(tmp);
+
+ if(pNext->ai_canonname)
+ {
+ // FIXME: only of not equal to other names ?
+ dns->appendHostname(QString::fromUtf8(pNext->ai_canonname));
+ }
+
+ pNext = pNext->ai_next;
+
+ }
+ }
+ if(pRet)freeaddrinfo(pRet);
+//#ifdef HAVE_GETNAMEINFO
+ }
+//#endif //HAVE_GETNAMEINFO
+
+#endif // !COMPILE_ON_WINDOWS
+
+
+ KviThreadDataEvent<KviDnsResult> * e = new KviThreadDataEvent<KviDnsResult>(KVI_DNS_THREAD_EVENT_DATA);
+ e->setData(dns);
+ postEvent(m_pParentDns,e);
+}
+
+
+
+
+KviDns::KviDns()
+: QObject()
+{
+ m_pSlaveThread = new KviDnsThread(this);
+ m_pDnsResult = new KviDnsResult();
+ m_pAuxData = 0;
+ m_state = Idle;
+}
+
+KviDns::~KviDns()
+{
+ if(m_pSlaveThread)delete m_pSlaveThread; // will eventually terminate it (but it will also block us!!!)
+ KviThreadManager::killPendingEvents(this);
+ if(m_pDnsResult)delete m_pDnsResult;
+ if(m_pAuxData)debug("You're leaking memory man! m_pAuxData is non 0!");
+}
+
+
+bool KviDns::isRunning() const
+{
+ return (m_state == Busy);
+};
+
+bool KviDns::lookup(const QString &query,QueryType type)
+{
+ if(m_state == Busy)return false;
+ m_pSlaveThread->setQuery(KviQString::trimmed(query),type);
+ bool bStarted = m_pSlaveThread->start();
+ m_state = bStarted ? Busy : Failure;
+ return bStarted;
+}
+
+int KviDns::error()
+{
+ if(!m_pDnsResult)return KviError_dnsQueryFailed;
+ return m_pDnsResult->error();
+}
+
+KviDnsResult * KviDns::result()
+{
+ if(!m_pDnsResult)m_pDnsResult = new KviDnsResult();
+ return m_pDnsResult;
+}
+
+KviPointerList<QString> * KviDns::hostnameList()
+{
+ return result()->hostnameList();
+}
+
+KviPointerList<QString> * KviDns::ipAddressList()
+{
+ return result()->ipAddressList();
+}
+
+int KviDns::hostnameCount()
+{
+ return result()->hostnameList()->count();
+}
+
+int KviDns::ipAddressCount()
+{
+ return result()->ipAddressList()->count();
+}
+
+const QString & KviDns::firstHostname()
+{
+ QString * pStr = result()->hostnameList()->first();
+ if(pStr)return *pStr;
+ return KviQString::empty;
+}
+
+const QString & KviDns::firstIpAddress()
+{
+ QString * pStr = result()->ipAddressList()->first();
+ if(pStr)return *pStr;
+ return KviQString::empty;
+}
+
+const QString & KviDns::query()
+{
+ return result()->query();
+}
+
+bool KviDns::event(QEvent *e)
+{
+ if(e->type() == KVI_THREAD_EVENT)
+ {
+ if(((KviThreadEvent *)e)->id() == KVI_DNS_THREAD_EVENT_DATA)
+ {
+ if(m_pDnsResult)delete m_pDnsResult;
+ m_pDnsResult = ((KviThreadDataEvent<KviDnsResult> *)e)->getData();
+ m_state = (m_pDnsResult->error() == KviError_success) ? Success : Failure;
+ emit lookupDone(this);
+ return true;
+ } // else ops... unknown thread event ?
+ }
+ return QObject::event(e);
+}
+
diff --git a/src/kvilib/net/kvi_dns.h b/src/kvilib/net/kvi_dns.h
new file mode 100644
index 00000000..3f423c24
--- /dev/null
+++ b/src/kvilib/net/kvi_dns.h
@@ -0,0 +1,142 @@
+#ifndef _KVI_DNS_H_
+#define _KVI_DNS_H_
+
+//=============================================================================
+//
+// File : kvi_dns.h
+// Creation date : Sat Jul 21 2000 13:59:11 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_heapobject.h"
+#include "kvi_thread.h"
+#include "kvi_qstring.h"
+
+
+class KviDnsThread; // not part of the API
+
+
+class KVILIB_API KviDnsResult : public KviHeapObject
+{
+ friend class KviDns;
+ friend class KviDnsThread;
+protected:
+ KviDnsResult();
+public:
+ ~KviDnsResult();
+protected:
+ int m_iError;
+ KviPointerList<QString> * m_pHostnameList;
+ KviPointerList<QString> * m_pIpAddressList;
+ QString m_szQuery;
+public:
+ int error(){ return m_iError; };
+ // never store nor delete these pointers!
+ // (these are NEVER 0)
+ KviPointerList<QString> * hostnameList(){ return m_pHostnameList; };
+ KviPointerList<QString> * ipAddressList(){ return m_pIpAddressList; };
+ const QString &query(){ return m_szQuery; };
+protected:
+ void setError(int iError){ m_iError = iError; };
+ void setQuery(const QString &query){ m_szQuery = query; };
+ void appendHostname(const QString &host);
+ void appendAddress(const QString &addr);
+};
+
+
+
+class KVILIB_API KviDns : public QObject, public KviHeapObject
+{
+ Q_OBJECT
+ Q_PROPERTY(bool blockingDelete READ isRunning)
+public:
+ KviDns();
+ ~KviDns();
+public:
+ enum QueryType { IpV4 , IpV6 , Any };
+ enum State { Idle , Busy , Failure , Success };
+protected:
+ void * m_pAuxData;
+ KviDnsThread * m_pSlaveThread;
+ KviDnsResult * m_pDnsResult;
+ State m_state;
+public:
+ /////////////////////////////////////////////////////////////////////////////////////////////////////
+ //
+ // Public interface
+ //
+
+ // Lookup start
+ bool lookup(const QString &szQuery,QueryType type);
+
+ // Current object state
+ State state(){ return m_state; };
+
+ // Results (return always non null-data..but valid results only if state() == Success or Failure)
+ int error();
+ const QString & firstHostname();
+ const QString & firstIpAddress();
+ int hostnameCount();
+ int ipAddressCount();
+ KviPointerList<QString> * hostnameList();
+ KviPointerList<QString> * ipAddressList();
+ const QString & query();
+ bool isRunning() const;
+
+ // Auxiliary data store
+ void setAuxData(void * pAuxData){ m_pAuxData = pAuxData; };
+ void * releaseAuxData(){ void * pData = m_pAuxData; m_pAuxData = 0; return pData; };
+protected:
+ virtual bool event(QEvent *e);
+private:
+ KviDnsResult * result();
+signals:
+ void lookupDone(KviDns *);
+};
+
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////
+// INTERNAL CLASSES
+//
+
+#define KVI_DNS_THREAD_EVENT_DATA (KVI_THREAD_USER_EVENT_BASE + 7432)
+
+class KviDnsThread : public KviThread
+{
+ friend class KviDns;
+protected:
+ KviDnsThread(KviDns * pDns);
+ ~KviDnsThread();
+protected:
+ QString m_szQuery;
+ KviDns::QueryType m_queryType;
+ KviDns * m_pParentDns;
+public:
+ void setQuery(const QString &query,KviDns::QueryType type){ m_szQuery = query; m_queryType = type; };
+protected:
+ virtual void run();
+ int translateDnsError(int iErr);
+ void postDnsError(KviDnsResult * dns,int iErr);
+};
+
+
+#endif //_KVI_DNS_H_
diff --git a/src/kvilib/net/kvi_http.cpp b/src/kvilib/net/kvi_http.cpp
new file mode 100644
index 00000000..2e94abbe
--- /dev/null
+++ b/src/kvilib/net/kvi_http.cpp
@@ -0,0 +1,1440 @@
+//=============================================================================
+//
+// File : kvi_http.cpp
+// Creation date : Sat Aug 17 13:43:32 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+
+#include <qdir.h>
+#include <qtimer.h>
+//#include <zlib.h>
+
+#include "kvi_http.h"
+#include "kvi_locale.h"
+#include "kvi_netutils.h"
+#include "kvi_dns.h"
+#include "kvi_error.h"
+#include "kvi_debug.h"
+#include "kvi_socket.h"
+#include "kvi_time.h"
+#ifdef COMPILE_SSL_SUPPORT
+ #include "kvi_ssl.h"
+#endif
+
+
+#define KVI_HTTP_REQUEST_THREAD_EVENT_CONNECTED (KVI_THREAD_USER_EVENT_BASE + 0xCAFE)
+#define KVI_HTTP_REQUEST_THREAD_EVENT_REQUESTSENT (KVI_THREAD_USER_EVENT_BASE + 0xCAFF)
+
+KviHttpRequest::KviHttpRequest()
+: QObject()
+{
+ m_pDns = 0;
+ m_pThread = 0;
+ m_pFile = 0;
+ m_pPrivateData = 0;
+ m_bHeaderProcessed = false;
+ m_pBuffer = new KviDataBuffer();
+
+ resetStatus();
+ resetData();
+}
+
+KviHttpRequest::~KviHttpRequest()
+{
+ resetInternalStatus();
+ delete m_pBuffer;
+}
+
+void KviHttpRequest::abort()
+{
+ resetInternalStatus();
+ m_szLastError = __tr2qs("Aborted");
+ emit terminated(false);
+}
+
+void KviHttpRequest::resetInternalStatus()
+{
+ if(m_pThread)delete m_pThread;
+ if(m_pDns)delete m_pDns;
+
+ m_pDns = 0;
+ m_pThread = 0;
+
+ if(!m_pFile)return;
+ m_pFile->close();
+ delete m_pFile;
+ m_pFile = 0;
+
+ m_pBuffer->clear();
+ m_bHeaderProcessed = false;
+
+ KviThreadManager::killPendingEvents(this);
+}
+
+void KviHttpRequest::resetStatus()
+{
+ m_szLastError = __tr2qs("No request");
+ m_uTotalSize = 0;
+ m_uReceivedSize = 0;
+}
+
+void KviHttpRequest::resetData()
+{
+ m_szFileName = "";
+ m_eProcessingType = WholeFile;
+ m_eExistingFileAction = RenameIncoming;
+ m_url = "";
+ m_uMaxContentLength = 0;
+ m_uContentOffset = 0;
+ m_bChunkedTransferEncoding = false;
+ m_bGzip = false;
+ m_bIgnoreRemainingData = false;
+ m_uRemainingChunkSize = 0;
+}
+
+void KviHttpRequest::reset()
+{
+ resetStatus();
+ resetData();
+ resetInternalStatus();
+}
+
+bool KviHttpRequest::get(const KviUrl &u,ProcessingType p,const QString &szFileName)
+{
+ reset();
+ setUrl(u);
+ setProcessingType(p);
+ setFileName(szFileName);
+ return start();
+}
+
+bool KviHttpRequest::start()
+{
+ // ensure that the file is closed
+ resetInternalStatus();
+ resetStatus();
+
+ if(m_eProcessingType == StoreToFile)
+ {
+ if(m_szFileName.isEmpty())
+ {
+ m_szLastError = __tr2qs("No filename specified for the \"StoreToFile\" processing type");
+ return false;
+ }
+
+ if((m_eExistingFileAction == Resume) && (m_uContentOffset == 0))
+ {
+ // determine the content offset automatically
+ if(KviFile::exists(m_szFileName))
+ {
+ // we check it
+ QFileInfo fi(m_szFileName);
+ m_uContentOffset = fi.size();
+ }
+ }
+ }
+
+ if(m_url.host().isEmpty())
+ {
+ resetInternalStatus();
+ m_szLastError = __tr2qs("Invalid URL: Missing hostname");
+ return false;
+ }
+
+ if((!kvi_strEqualCI(m_url.protocol().ptr(),"http")) && (!kvi_strEqualCI(m_url.protocol().ptr(),"https")))
+ {
+ resetInternalStatus();
+ m_szLastError=__tr2qs("Unsupported protocol %1").arg(m_url.protocol().ptr());
+ return false;
+ }
+
+ if(kvi_isValidStringIp(m_url.host().ptr()))
+ {
+ m_szIp = m_url.host();
+ QTimer::singleShot(10,this,SLOT(haveServerIp()));
+ return true;
+ }
+
+ return startDnsLookup();
+}
+
+bool KviHttpRequest::startDnsLookup()
+{
+ m_pDns = new KviDns();
+ connect(m_pDns,SIGNAL(lookupDone(KviDns *)),this,SLOT(dnsLookupDone(KviDns *)));
+
+ if(!m_pDns->lookup(m_url.host().ptr(),KviDns::IpV4))
+ {
+ resetInternalStatus();
+ m_szLastError = __tr2qs("Unable to start the DNS lookup");
+ return false;
+ }
+
+ QString tmp;
+ KviQString::sprintf(tmp,__tr2qs("Looking up host %s"),m_url.host().ptr());
+ emit status(tmp); // FIXME
+
+ emit resolvingHost(QString(m_url.host().ptr()));
+
+ return true;
+}
+
+void KviHttpRequest::dnsLookupDone(KviDns *d)
+{
+ if(d->state() == KviDns::Success)
+ {
+ m_szIp = d->firstIpAddress();
+ delete m_pDns;
+ m_pDns = 0;
+ QString tmp;
+ KviQString::sprintf(tmp,__tr2qs("Host %s resolved to %Q"),m_url.host().ptr(),&m_szIp);
+ emit status(tmp);
+ haveServerIp();
+ } else {
+ int iErr = d->error();
+ resetInternalStatus();
+ m_szLastError = KviError::getDescription(iErr);
+ emit terminated(false);
+ }
+}
+
+void KviHttpRequest::haveServerIp()
+{
+ unsigned short uPort = m_url.port();
+ if(uPort == 0)uPort = 80;
+
+ QString tmp;
+ KviQString::sprintf(tmp,"%Q:%u",&m_szIp,uPort);
+ emit contactingHost(tmp);
+
+ if(m_pThread)delete m_pThread;
+
+ m_pThread = new KviHttpRequestThread(
+ this,
+ m_url.host().ptr(),
+ m_szIp,
+ uPort,
+ m_url.path().ptr(),
+ m_uContentOffset,
+ (m_eProcessingType == HeadersOnly) ? KviHttpRequestThread::Head : (m_szPostData.isEmpty() ? KviHttpRequestThread::Get : KviHttpRequestThread::Post),
+ m_szPostData,
+ kvi_strEqualCI(m_url.protocol().ptr(),"https"));
+
+ if(!m_pThread->start())
+ {
+ resetInternalStatus();
+ m_szLastError = __tr2qs("Unable to start the request slave thread");
+ emit terminated(false);
+ return;
+ }
+
+ KviQString::sprintf(tmp,__tr2qs("Contacting host %Q on port %u"),&m_szIp,uPort);
+ emit status(tmp);
+}
+
+bool KviHttpRequest::event(QEvent *e)
+{
+ if(e->type() == KVI_THREAD_EVENT)
+ {
+ switch(((KviThreadEvent *)e)->id())
+ {
+ case KVI_THREAD_EVENT_BINARYDATA:
+ {
+ KviDataBuffer * b = ((KviThreadDataEvent<KviDataBuffer> *)e)->getData();
+ processData(b);
+ delete b;
+ return true;
+ }
+ break;
+ case KVI_HTTP_REQUEST_THREAD_EVENT_CONNECTED:
+ emit connectionEstabilished();
+ emit status(__tr2qs("Connection established, sending request"));
+ return true;
+ break;
+ case KVI_HTTP_REQUEST_THREAD_EVENT_REQUESTSENT:
+ {
+ QString * req = ((KviThreadDataEvent<QString> *)e)->getData();
+#ifdef COMPILE_USE_QT4
+ QStringList sl = req->split("\r\n");
+#else
+ QStringList sl = QStringList::split("\r\n",*req);
+#endif
+ emit requestSent(sl);
+ delete req;
+ return true;
+ }
+ break;
+ case KVI_THREAD_EVENT_SUCCESS:
+ if(!m_pThread && !m_bHeaderProcessed)
+ {
+ // the thread has already been deleted
+ // probably because the response was something like a 404
+ // just ignore the event
+ return true;
+ }
+ switch(m_eProcessingType)
+ {
+ case WholeFile:
+ // happens always
+ emit binaryData(*m_pBuffer);
+ break;
+ case Blocks:
+ // an unprocessed block ?.. should never happend.. but well :D
+ if(m_pBuffer->size() > 0)emit binaryData(*m_pBuffer);
+ break;
+ case Lines:
+ if(m_pBuffer->size() > 0)
+ {
+ // something left in the buffer and has no trailing LF
+ KviStr tmp((const char *)(m_pBuffer->data()),m_pBuffer->size());
+ emit data(tmp);
+ }
+ break;
+ case StoreToFile:
+ // same as above... should never happen.. but well :D
+ if(m_pFile && m_pBuffer->size() > 0)m_pFile->writeBlock((const char *)(m_pBuffer->data()),m_pBuffer->size());
+ break;
+ default:
+ // nothing... just make gcc happy
+ break;
+ }
+ resetInternalStatus();
+ m_szLastError = __tr2qs("Success");
+ emit terminated(true);
+ return true;
+ break;
+ case KVI_THREAD_EVENT_ERROR:
+ {
+ KviStr * err = ((KviThreadDataEvent<KviStr> *)e)->getData();
+ m_szLastError = __tr2qs_no_xgettext(err->ptr());
+ delete err;
+ resetInternalStatus();
+ emit terminated(false);
+ return true;
+ }
+ break;
+ case KVI_THREAD_EVENT_MESSAGE:
+ {
+ KviStr * msg = ((KviThreadDataEvent<KviStr> *)e)->getData();
+ emit status(__tr2qs_no_xgettext(msg->ptr()));
+ delete msg;
+ return true;
+ }
+ break;
+ }
+ }
+ return QObject::event(e);
+}
+
+void KviHttpRequest::emitLines(KviDataBuffer * pDataBuffer)
+{
+ int idx = pDataBuffer->find((const unsigned char *)"\n",1);
+ while(idx != -1)
+ {
+ KviStr tmp((const char *)(m_pBuffer->data()),idx);
+ tmp.stripRight('\r');
+ pDataBuffer->remove(idx + 1);
+ idx = pDataBuffer->find((const unsigned char *)"\n",1);
+ emit data(tmp);
+ }
+}
+
+// header += "Accept: ";
+// QString acceptHeader = metaData("accept");
+// if (!acceptHeader.isEmpty())
+// header += acceptHeader;
+// else
+// header += DEFAULT_ACCEPT_HEADER;
+// header += "\r\n";
+//
+//#ifdef DO_GZIP
+// if (m_request.allowCompressedPage)
+// header += "Accept-Encoding: x-gzip, x-deflate, gzip, deflate, identity\r\n";
+//#endif
+//
+// if (!m_request.charsets.isEmpty())
+// header += "Accept-Charset: " + m_request.charsets + "\r\n";
+//
+// if (!m_request.languages.isEmpty())
+// header += "Accept-Language: " + m_request.languages + "\r\n";
+//
+//
+// /* support for virtual hosts and required by HTTP 1.1 */
+// header += "Host: ";
+// header += "Pragma: no-cache\r\n"; /* for HTTP/1.0 caches */
+// header += "Cache-control: no-cache\r\n"; /* for HTTP >=1.1 caches */
+
+// header += "Referer: "; //Don't try to correct spelling!
+// header += m_request.referrer;
+// header += "\r\n";
+bool KviHttpRequest::openFile()
+{
+ if(m_eProcessingType != StoreToFile)return true;
+
+ bool bAppend = false;
+
+ // take action when the file is existing
+ if(KviFile::exists(m_szFileName))
+ {
+ switch(m_eExistingFileAction)
+ {
+ case Resume:
+ {
+ bAppend = true;
+ }
+ break;
+ case RenameIncoming:
+ {
+ int i=0;
+ QString tmp = m_szFileName;
+ do {
+ i++;
+ m_szFileName = tmp + QString(".kvirnm-%1").arg(i);
+ } while(KviFile::exists(m_szFileName));
+ }
+ break;
+ case RenameExisting:
+ {
+ int i=0;
+ QString tmp;
+ do {
+ i++;
+ tmp = m_szFileName + QString(".kvirnm-%1").arg(i);
+ } while(KviFile::exists(tmp));
+ QDir d;
+ if(!d.rename(m_szFileName,tmp))
+ {
+ // fail :(
+ resetInternalStatus();
+ m_szLastError = __tr2qs("Failed to rename the existing file, please rename manually and retry");
+ emit terminated(false);
+ return false;
+ }
+ }
+ break;
+ case Overwrite:
+ default:
+ // nothing
+ break;
+ }
+ }
+
+ m_pFile = new KviFile(m_szFileName);
+
+ if(!m_pFile->openForWriting(bAppend))
+ {
+ resetInternalStatus();
+ KviQString::sprintf(m_szLastError,__tr2qs("Can't open file \"%Q\" for writing"),&m_szFileName);
+ emit terminated(false);
+ return false;
+ }
+
+ return true;
+}
+
+
+
+
+
+bool KviHttpRequest::processHeader(KviStr &szHeader)
+{
+ int idx = szHeader.findFirstIdx("\r\n");
+ KviStr szResponse;
+ if(idx != -1)
+ {
+ szResponse = szHeader.left(idx);
+ szHeader.cutLeft(idx + 2);
+ } else {
+ szResponse = szHeader;
+ szHeader = "";
+ }
+
+ szResponse.stripWhiteSpace();
+
+ bool bValid = false;
+
+ unsigned int uStatus = 0;
+
+ // check the response value
+ if(kvi_strEqualCSN(szResponse.ptr(),"HTTP",4))
+ {
+ KviStr szR = szResponse;
+ szR.cutToFirst(' ');
+ szR.stripWhiteSpace();
+ int idx = szR.findFirstIdx(' ');
+ KviStr szNumber;
+ if(idx != -1)szNumber = szR.left(idx);
+ else szNumber = szR;
+ bool bOk;
+ uStatus = szNumber.toUInt(&bOk);
+ if(bOk)bValid = true;
+ }
+
+ if(!bValid)
+ {
+ // the response is invalid ?
+ resetInternalStatus();
+ m_szLastError=__tr2qs("Invalid HTTP response: %s").arg(szResponse.ptr());
+ emit terminated(false);
+ return false;
+ }
+
+ QString tmp;
+ KviQString::sprintf(tmp,__tr2qs("Received HTTP response: %s"),szResponse.ptr());
+
+ emit status(tmp);
+ emit receivedResponse(QString(szResponse.ptr()));
+
+ KviPointerList<KviStr> hlist;
+ hlist.setAutoDelete(true);
+
+ idx = szHeader.findFirstIdx("\r\n");
+ while(idx != -1)
+ {
+ if(idx > 0)
+ {
+ hlist.append(new KviStr(szHeader.ptr(),idx));
+ szHeader.cutLeft(idx + 2);
+ }
+ idx = szHeader.findFirstIdx("\r\n");
+ }
+ if(szHeader.hasData())hlist.append(new KviStr(szHeader));
+
+ KviPointerHashTable<const char *,KviStr> hdr(11,false,true);
+ hdr.setAutoDelete(true);
+
+ for(KviStr * s = hlist.first();s;s = hlist.next())
+ {
+ idx = s->findFirstIdx(":");
+ if(idx != -1)
+ {
+ KviStr szName = s->left(idx);
+ s->cutLeft(idx + 1);
+ s->stripWhiteSpace();
+ hdr.replace(szName.ptr(),new KviStr(*s));
+ //debug("FOUND HEADER (%s)=(%s)",szName.ptr(),s->ptr());
+ }
+ }
+
+ KviStr * size = hdr.find("Content-length");
+ if(size)
+ {
+ bool bOk;
+ m_uTotalSize = size->toUInt(&bOk);
+ if(!bOk)m_uTotalSize = 0;
+ }
+
+ KviStr * contentEncoding = hdr.find("Content-encoding");
+ if(contentEncoding)
+ {
+ m_bGzip = contentEncoding->equalsCI("gzip");
+ }
+
+ KviStr * transferEncoding = hdr.find("Transfer-Encoding");
+ if(transferEncoding)
+ {
+ if(kvi_strEqualCI(transferEncoding->ptr(),"chunked"))
+ {
+ // be prepared to handle the chunked transfer encoding as required by HTTP/1.1
+ m_bChunkedTransferEncoding = true;
+ m_uRemainingChunkSize = 0;
+ }
+ }
+
+ emit header(&hdr);
+
+ // check the status
+
+ // case 200: // OK
+ // case 206: // Partial content
+
+ // case 100: // Continue ??
+ // case 101: // Switching protocols ???
+ // case 201: // Created
+ // case 202: // Accepted
+ // case 203: // Non-Authoritative Information
+ // case 204: // No content
+ // case 205: // Reset content
+ // case 300: // Multiple choices
+ // case 301: // Moved permanently
+ // case 302: // Found
+ // case 303: // See Other
+ // case 304: // Not modified
+ // case 305: // Use Proxy
+ // case 306: // ???
+ // case 307: // Temporary Redirect
+ // case 400: // Bad request
+ // case 401: // Unauthorized
+ // case 402: // Payment Required
+ // case 403: // Forbidden
+ // case 404: // Not found
+ // case 405: // Method not allowed
+ // case 406: // Not acceptable
+ // case 407: // Proxy authentication required
+ // case 408: // Request timeout
+ // case 409: // Conflict
+ // case 410: // Gone
+ // case 411: // Length required
+ // case 412: // Precondition failed
+ // case 413: // Request entity too large
+ // case 414: // Request-URI Too Long
+ // case 415: // Unsupported media type
+ // case 416: // Requested range not satisfiable
+ // case 417: // Expectation Failed
+ // case 500: // Internal server error
+ // case 501: // Not implemented
+ // case 502: // Bad gateway
+ // case 503: // Service unavailable
+ // case 504: // Gateway timeout
+ // case 505: // HTTP Version not supported
+
+ if((uStatus != 200) && (uStatus != 206))
+ {
+ // this is not "OK" and not "Partial content"
+ // Error , redirect or something confusing
+ if(m_eProcessingType != HeadersOnly)
+ {
+ // this is an error then
+ resetInternalStatus();
+ m_szLastError = szResponse.ptr();
+ emit terminated(false);
+ return false;
+ } // else the server will terminate (it was a HEAD request)
+ }
+
+ if((m_uMaxContentLength > 0) && (m_uTotalSize > ((unsigned int)m_uMaxContentLength)))
+ {
+ resetInternalStatus();
+ m_szLastError=__tr2qs("Stream exceeding maximum length");
+ emit terminated(false);
+ return false;
+ }
+
+ // fixme: could check for data type etc...
+
+ return true;
+}
+#define BUFFER_SIZE 32768
+
+void KviHttpRequest::processData(KviDataBuffer * data)
+{
+// unsigned char obuffer[BUFFER_SIZE];
+ if(m_bChunkedTransferEncoding && m_bIgnoreRemainingData)
+ {
+ // In chunked transfer encoding mode there may be additional headers
+ // after the last chunk of data. We simply ignore them.
+ return;
+ }
+
+ if(!m_bHeaderProcessed)
+ {
+ // time to process the header
+ m_pBuffer->append(*data);
+
+ int idx = m_pBuffer->find((const unsigned char *)"\r\n\r\n",4);
+ if(idx == -1)
+ {
+ // header not complete
+ if(m_pBuffer->size() > 4096)
+ {
+ resetInternalStatus();
+ m_szLastError = __tr2qs("Header too long: exceeded 4096 bytes");
+ emit terminated(false);
+ }
+ return;
+ }
+ KviStr szHeader((const char *)(m_pBuffer->data()),idx);
+ m_pBuffer->remove(idx + 4);
+
+ if(!processHeader(szHeader))return;
+ m_bHeaderProcessed = true;
+
+ if(m_eProcessingType == StoreToFile)
+ {
+ if(!openFile())return;
+ }
+
+ m_uReceivedSize = m_pBuffer->size();
+
+
+ // here the header is complete and the eventual remaining data is in m_pBuffer. data has been already used.
+
+ } else {
+ // header already processed
+ m_uReceivedSize += data->size();
+
+ // here the header is complete and some data *might* be already in m_pBuffer. data is unused yet.
+
+ // Optimisation: If the transfer is NOT chunked (so we don't have to parse it)
+ // and the requested processing type is either Blocks or StoreToFile
+ // then we just can avoid to copy the data to m_pBuffer.
+ // This is a good optimisation since for large files we can save allocating
+ // space for and moving megabytes of data...
+
+
+ if((!m_bChunkedTransferEncoding) && ((m_eProcessingType == Blocks) || (m_eProcessingType == StoreToFile)))
+ {
+ switch(m_eProcessingType)
+ {
+ case Blocks:
+ emit binaryData(*data);
+ break;
+ case StoreToFile:
+ m_pFile->writeBlock((const char *)(data->data()),data->size());
+ break;
+ }
+
+ if(((m_uTotalSize > 0) && (m_uReceivedSize > m_uTotalSize)) || ((m_uMaxContentLength > 0) && (m_uReceivedSize > m_uMaxContentLength)))
+ {
+ resetInternalStatus();
+ m_szLastError=__tr2qs("Stream exceeded expected length");
+ emit terminated(false);
+ }
+
+ return;
+ }
+
+ // need to append to m_pBuffer and process it
+ m_pBuffer->append(*data);
+ }
+
+ // we're processing data in m_pBuffer here
+ if(m_bChunkedTransferEncoding)
+ {
+ // The transfer encoding is chunked: the buffer contains
+ // chunks of data with an initial header composed
+ // of a hexadecimal length, an optional bullshit and a single CRLF
+ // The transfer terminates when we read a last chunk of size 0
+ // that may be followed by optional headers...
+ // This sux :)
+ while(m_pBuffer->size() > 0) // <-- note that we may exit from this loop also for other conditions (there is a goto below)
+ {
+ // we process chunks of parts of chunks at a time.
+ if(m_uRemainingChunkSize > 0)
+ {
+ // process the current chunk data
+ unsigned int uProcessSize = m_uRemainingChunkSize;
+ if(uProcessSize > m_pBuffer->size())uProcessSize = m_pBuffer->size();
+ m_uRemainingChunkSize -= uProcessSize;
+
+ switch(m_eProcessingType)
+ {
+ case Blocks:
+ if(m_pBuffer->size() == uProcessSize)
+ {
+ // avoid copying to a new buffer
+ emit binaryData(*m_pBuffer);
+ } else {
+ // must copy
+ KviDataBuffer tmp(uProcessSize,m_pBuffer->data());
+ emit binaryData(tmp);
+ m_pBuffer->remove(uProcessSize);
+ }
+ break;
+ case Lines:
+ if(m_pBuffer->size() == uProcessSize)
+ {
+ // avoid copying to a new buffer
+ emitLines(m_pBuffer);
+ } else {
+ // must copy
+ KviDataBuffer tmp(uProcessSize,m_pBuffer->data());
+ emitLines(&tmp);
+ m_pBuffer->remove(uProcessSize);
+ }
+ break;
+ case StoreToFile:
+ m_pFile->writeBlock((const char *)(m_pBuffer->data()),uProcessSize);
+ m_pBuffer->remove(uProcessSize);
+ break;
+ default:
+ // nothing.. just make gcc happy
+ break;
+ }
+ // now either the buffer is empty or there is another chunk header: continue looping
+ } else {
+ // We're looking for the beginning of a chunk now.
+ // Note that we might be at the end of a previous chunk that has a CRLF terminator
+ // we need to skip it.
+ int crlf = m_pBuffer->find((const unsigned char *)"\r\n",2);
+ if(crlf != -1)
+ {
+ if(crlf == 0)
+ {
+ // This is a plain CRLF at the beginning of the buffer BEFORE a chunk header.
+ // It comes from the previous chunk terminator. Skip it.
+ m_pBuffer->remove(2);
+ } else {
+ // got a chunk header
+ KviStr szHeader((const char *)(m_pBuffer->data()),crlf);
+ szHeader.cutFromFirst(' ');
+ // now szHeader should contain a hexadecimal chunk length... (why the hell it is hex and not decimal ????)
+ QString szHexHeader = szHeader.ptr();
+ bool bOk;
+ m_uRemainingChunkSize = szHexHeader.toLong(&bOk,16);
+ if(!bOk)
+ {
+ resetInternalStatus();
+ m_szLastError = __tr2qs("Protocol error: invalid chunk size");
+ emit terminated(false);
+ return;
+ }
+ m_pBuffer->remove(crlf+2);
+ if(m_uRemainingChunkSize == 0)
+ {
+ // this is the last chunk of data. It may be followed by optional headers
+ // but we actually don't need them (since we're surely not in HEAD mode)
+ m_bIgnoreRemainingData = true;
+ m_pBuffer->clear();
+ goto check_stream_length;
+ }
+ }
+ // the rest is valid data of a non-zero chunk: continue looping
+ } else {
+ // chunk header not complete
+ if(m_pBuffer->size() > 4096)
+ {
+ resetInternalStatus();
+ m_szLastError = __tr2qs("Chunk header too long: exceeded 4096 bytes");
+ emit terminated(false);
+ return;
+ }
+ goto check_stream_length;
+ }
+ }
+ }
+ } else {
+ // the transfer encoding is not chunked: m_pBuffer contains only valid data
+ switch(m_eProcessingType)
+ {
+ case Blocks:
+ if(m_pBuffer->size() > 0)emit binaryData(*m_pBuffer);
+ m_pBuffer->clear();
+ break;
+ case Lines:
+ if(m_pBuffer->size() > 0)emitLines(m_pBuffer);
+ break;
+ case StoreToFile:
+ m_pFile->writeBlock((const char *)(m_pBuffer->data()),m_pBuffer->size());
+ m_pBuffer->clear();
+ break;
+ default:
+ // nothing.. just make gcc happy
+ break;
+ }
+ }
+
+check_stream_length:
+
+ if(((m_uTotalSize > 0) && (m_uReceivedSize > m_uTotalSize)) || ((m_uMaxContentLength > 0) && (m_uReceivedSize > m_uMaxContentLength)))
+ {
+ resetInternalStatus();
+ m_szLastError=__tr2qs("Stream exceeded expected length");
+ emit terminated(false);
+ }
+ return;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+KviHttpRequestThread::KviHttpRequestThread(
+ KviHttpRequest * r,
+ const QString &szHost,
+ const QString &szIp,
+ unsigned short uPort,
+ const QString & szPath,
+ unsigned int uContentOffset,
+ RequestMethod m,
+ const QString &szPostData,
+ bool bUseSSL
+) : KviSensitiveThread()
+{
+ m_pRequest = r;
+ m_szHost = szHost;
+ m_szIp = szIp;
+ m_szPath = szPath;
+ m_uPort = uPort > 0 ? uPort : 80;
+ m_uContentOffset = uContentOffset;
+ m_eRequestMethod = m;
+ m_szPostData = szPostData;
+ m_sock = KVI_INVALID_SOCKET;
+ m_bUseSSL = bUseSSL;
+#ifdef COMPILE_SSL_SUPPORT
+ m_pSSL = 0;
+#endif
+}
+
+KviHttpRequestThread::~KviHttpRequestThread()
+{
+}
+
+bool KviHttpRequestThread::processInternalEvents()
+{
+ while(KviThreadEvent *e = dequeueEvent())
+ {
+ switch(e->id())
+ {
+ case KVI_THREAD_EVENT_TERMINATE:
+ {
+ delete e;
+ return false;
+ }
+ break;
+ default:
+ debug("Unrecognized event in http thread");
+ delete e;
+ return false;
+ break;
+ }
+ }
+
+ return true;
+}
+
+bool KviHttpRequestThread::failure(const char *error)
+{
+ if(error)
+ {
+ postEvent(m_pRequest,new KviThreadDataEvent<KviStr>(KVI_THREAD_EVENT_ERROR,new KviStr(error)));
+ } /*else {
+ postEvent(m_pRequest,new KviThreadDataEvent<KviStr>(KVI_THREAD_EVENT_ERROR,new KviStr(__tr2qs("Aborted"))));
+ }*/
+ return false;
+}
+
+
+bool KviHttpRequestThread::selectForWrite(int iTimeoutInSecs)
+{
+
+ kvi_time_t startTime = kvi_unixTime();
+
+ for(;;)
+ {
+ if(!processInternalEvents())
+ {
+ return failure(0);
+ }
+
+ fd_set writeSet;
+
+ FD_ZERO(&writeSet);
+
+ FD_SET(m_sock,&writeSet);
+
+ struct timeval tmv;
+ tmv.tv_sec = 0;
+ tmv.tv_usec = 1000; // we wait 1000 usecs for an event
+
+
+ int nRet = kvi_socket_select(m_sock + 1,0,&writeSet,0,&tmv);
+
+ if(nRet > 0)
+ {
+ if(FD_ISSET(m_sock,&writeSet))
+ {
+ // connected!
+ return true;
+ }
+ } else {
+ if(nRet < 0)
+ {
+ int err = kvi_socket_error();
+#ifdef COMPILE_ON_WINDOWS
+ if((err != EAGAIN) && (err != EINTR) && (err != WSAEWOULDBLOCK))
+#else
+ if((err != EAGAIN) && (err != EINTR))
+#endif
+ {
+ return failure(KviError::getUntranslatedDescription(KviError::translateSystemError(err)));
+ }
+ }
+ }
+
+
+ if((time(0) - startTime) > iTimeoutInSecs)return failure(__tr_no_lookup("Operation timed out"));
+
+ usleep(100000); // 1/10 sec
+ }
+
+ return false;
+}
+
+bool KviHttpRequestThread::sslFailure()
+{
+#ifdef COMPILE_SSL_SUPPORT
+ KviStr buffer;
+ if(m_pSSL->getLastErrorString(buffer))
+ {
+ failure(buffer.ptr());
+ } else {
+ failure(__tr_no_lookup("Unexpected SSL error"));
+ }
+#endif
+ return false;
+}
+
+bool KviHttpRequestThread::connectToRemoteHost()
+{
+ m_sock = kvi_socket_create(KVI_SOCKET_PF_INET,KVI_SOCKET_TYPE_STREAM,0); //tcp
+ if(m_sock == KVI_INVALID_SOCKET)
+ return failure(__tr_no_lookup("Failed to create the socket"));
+
+ if(!kvi_socket_setNonBlocking(m_sock))
+ return failure(__tr_no_lookup("Failed to enter non blocking mode"));
+
+ sockaddr_in saddr;
+
+ if(!KviNetUtils::stringIpToBinaryIp(m_szIp,&(saddr.sin_addr)))
+ return failure(__tr_no_lookup("Invalid target address"));
+
+ saddr.sin_port = htons(m_uPort);
+ saddr.sin_family = AF_INET;
+
+ if(!kvi_socket_connect(m_sock,(struct sockaddr *)&saddr,sizeof(saddr)))
+ {
+ int err = kvi_socket_error();
+ if(!kvi_socket_recoverableConnectError(err))
+ {
+ return failure(KviError::getUntranslatedDescription(KviError::translateSystemError(err)));
+ }
+ }
+
+ // now loop selecting for write
+
+ //#warning "This should be a tuneable timeout"
+ if(!selectForWrite(60))return false;
+
+ int sockError;
+ int iSize=sizeof(sockError);
+ if(!kvi_socket_getsockopt(m_sock,SOL_SOCKET,SO_ERROR,(void *)&sockError,&iSize))sockError = -1;
+ if(sockError != 0)
+ {
+ //failed
+ if(sockError > 0)sockError = KviError::translateSystemError(sockError);
+ else sockError = KviError_unknownError;
+ return failure(KviError::getUntranslatedDescription(sockError));
+ }
+
+#ifdef COMPILE_SSL_SUPPORT
+ if(m_bUseSSL)
+ {
+ m_pSSL = new KviSSL();
+ if(!m_pSSL->initContext(KviSSL::Client))
+ return failure(__tr_no_lookup("Failed to initialize the SSL context"));
+ if(!m_pSSL->initSocket(m_sock))
+ return failure(__tr_no_lookup("Failed to initialize the SSL connection"));
+
+ for(;;)
+ {
+ switch(m_pSSL->connect())
+ {
+ case KviSSL::Success:
+ // done: connected.
+ return true;
+ break;
+ case KviSSL::WantRead:
+ if(!selectForRead(60))return false;
+ break;
+ case KviSSL::WantWrite:
+ if(!selectForWrite(60))return false;
+ break;
+ case KviSSL::RemoteEndClosedConnection:
+ return failure(__tr_no_lookup("Remote end has closed the connection"));
+ break;
+ case KviSSL::SSLError:
+ return sslFailure();
+ break;
+ case KviSSL::SyscallError:
+ {
+ // syscall problem
+ int err = kvi_socket_error();
+ if(!kvi_socket_recoverableError(err))
+ {
+ // Declare problems :)
+ return failure(__tr_no_lookup("Unrecoverable SSL error during handshake"));
+ } // else can recover ? (EAGAIN , EINTR ?) ... should select for read or for write
+ }
+ break;
+ default:
+ return sslFailure();
+ break;
+ }
+ }
+
+ // never here
+ return true;
+ }
+#endif
+
+ return true;
+}
+
+
+bool KviHttpRequestThread::sendBuffer(const char * buffer,int bufLen,int iTimeoutInSecs)
+{
+ const char * ptr = buffer;
+ int curLen = bufLen;
+
+ time_t startTime = time(0);
+
+ for(;;)
+ {
+ if(!processInternalEvents())return failure();
+
+ int wrtn;
+#ifdef COMPILE_SSL_SUPPORT
+ if(m_pSSL)
+ {
+ wrtn = m_pSSL->write((char *)ptr,curLen);
+ } else {
+#endif
+ wrtn = kvi_socket_send(m_sock,ptr,curLen);
+#ifdef COMPILE_SSL_SUPPORT
+ }
+#endif
+
+ if(wrtn > 0)
+ {
+ curLen -= wrtn;
+
+ if(curLen <= 0)break;
+
+ ptr += wrtn;
+ } else {
+ if(wrtn < 0)
+ {
+#ifdef COMPILE_SSL_SUPPORT
+ if(m_pSSL)
+ {
+ // ops...might be an SSL error
+ switch(m_pSSL->getProtocolError(wrtn))
+ {
+ case KviSSL::WantWrite:
+ if(!selectForWrite(60))return false;
+ break;
+ case KviSSL::WantRead:
+ if(!selectForRead(60))return false;
+ break;
+ case KviSSL::SyscallError:
+ if(wrtn == 0)
+ {
+ return failure(__tr_no_lookup("Remote end has closed the connection"));
+ } else {
+ int iSSLErr = m_pSSL->getLastError(true);
+ if(iSSLErr != 0)
+ {
+ return sslFailure();
+ } else {
+ goto handle_system_error;
+ }
+ }
+ break;
+ case KviSSL::SSLError:
+ return sslFailure();
+ break;
+ default:
+ return sslFailure();
+ break;
+ }
+ } else {
+#endif //COMPILE_SSL_SUPPORT
+
+handle_system_error:
+ int err = kvi_socket_error();
+#ifdef COMPILE_ON_WINDOWS
+ if((err != EAGAIN) && (err != EINTR) && (err != WSAEWOULDBLOCK))
+#else
+ if((err != EAGAIN) && (err != EINTR))
+#endif
+ {
+ return failure(KviError::getUntranslatedDescription(KviError::translateSystemError(err)));
+ }
+#ifdef COMPILE_SSL_SUPPORT
+ }
+#endif
+ }
+ }
+
+ int diff = time(0) - startTime;
+ if(diff > iTimeoutInSecs)
+ return failure(__tr_no_lookup("Operation timed out"));
+
+ usleep(10000);
+ }
+
+ return true;
+}
+
+
+int KviHttpRequestThread::selectForReadStep()
+{
+ // calls select on the main socket
+ // returns 1 if there is data available for reading
+ // returns 0 if there is no data available but there was no error
+ // returns -1 if there was a critical error (socket closed)
+ fd_set readSet;
+
+ FD_ZERO(&readSet);
+
+ FD_SET(m_sock,&readSet);
+
+ struct timeval tmv;
+ tmv.tv_sec = 0;
+ tmv.tv_usec = 1000; // we wait 1000 usecs for an event
+
+
+ int nRet = kvi_socket_select(m_sock + 1,&readSet,0,0,&tmv);
+
+ if(nRet > 0)
+ {
+ if(FD_ISSET(m_sock,&readSet))
+ {
+ // ok
+ return 1;
+ }
+ } else {
+ if(nRet < 0)
+ {
+ int err = kvi_socket_error();
+#ifdef COMPILE_ON_WINDOWS
+ if((err != EAGAIN) && (err != EINTR) && (err != WSAEWOULDBLOCK))
+#else
+ if((err != EAGAIN) && (err != EINTR))
+#endif
+ {
+ failure(KviError::getUntranslatedDescription(KviError::translateSystemError(err)));
+ return -1;
+ }
+ }
+ }
+
+ return 0;
+}
+
+
+bool KviHttpRequestThread::selectForRead(int iTimeoutInSecs)
+{
+ // waits for some data to arrive on the socket
+ // up to iTimeoutInSecs seconds
+ // returns true if data is available on the socket
+ // or false if there was a select() error or no data
+ // was available in the specified amount of time
+
+ time_t startTime = time(0);
+
+ for(;;)
+ {
+ if(!processInternalEvents())
+ {
+ return failure(); // ensure that the socket is closed
+ }
+
+ int nRet = selectForReadStep();
+
+ if(nRet < 0)return false;
+ if(nRet > 0)return true;
+
+ int diff = time(0) - startTime;
+ if(diff > iTimeoutInSecs)
+ return failure(__tr_no_lookup("Operation timed out (while selecting for read)"));
+
+ usleep(100000); // 1/10 sec
+ }
+
+ return false;
+}
+
+bool KviHttpRequestThread::readDataStep()
+{
+ unsigned char buffer[2048];
+ int readed;
+
+
+#ifdef COMPILE_SSL_SUPPORT
+ if(m_pSSL)
+ {
+ readed = m_pSSL->read((char *)buffer,2048);
+ if(readed <= 0)
+ {
+ // ssl error....?
+ switch(m_pSSL->getProtocolError(readed))
+ {
+ case KviSSL::ZeroReturn:
+ readed = 0;
+ break;
+ case KviSSL::WantRead:
+ return selectForRead(120);
+ break;
+ case KviSSL::WantWrite:
+ return selectForWrite(120);
+ break;
+ case KviSSL::SyscallError:
+ {
+ int iE = m_pSSL->getLastError(true);
+ if(iE != 0)return sslFailure();
+ }
+ break;
+ case KviSSL::SSLError:
+ return sslFailure();
+ break;
+ default:
+ return sslFailure();
+ break;
+ }
+ }
+ } else {
+#endif
+ readed = kvi_socket_read(m_sock,buffer,2048);
+#ifdef COMPILE_SSL_SUPPORT
+ }
+#endif
+
+ if(readed > 0)
+ {
+ postEvent(m_pRequest,new KviThreadDataEvent<KviDataBuffer>(KVI_THREAD_EVENT_BINARYDATA,new KviDataBuffer(readed,buffer)));
+ } else {
+ if(readed < 0)
+ {
+ // Read error ?
+ int err = kvi_socket_error();
+#ifdef COMPILE_ON_WINDOWS
+ if((err != EAGAIN) && (err != EINTR) && (err != WSAEWOULDBLOCK))
+#else
+ if((err != EAGAIN) && (err != EINTR))
+#endif
+ {
+ // yes...read error
+ return failure(KviError::getUntranslatedDescription(KviError::translateSystemError(err)));
+ }
+ return selectForRead(120); // EINTR or EAGAIN...transient problem
+ } else {
+ // readed == 0
+ // Connection closed by remote host
+ postEvent(m_pRequest,new KviThreadEvent(KVI_THREAD_EVENT_SUCCESS));
+ return false;
+ }
+ }
+ return selectForRead(120);
+}
+
+void KviHttpRequestThread::run()
+{
+ // setup:
+ // nothing needed
+
+ // run:
+ runInternal();
+
+ // cleanup:
+#ifdef COMPILE_SSL_SUPPORT
+ if(m_pSSL)
+ {
+ delete m_pSSL;
+ m_pSSL = 0;
+ }
+#endif
+
+ if(kvi_socket_isValid(m_sock))
+ {
+ kvi_socket_close(m_sock);
+ m_sock = KVI_INVALID_SOCKET;
+ }
+}
+
+void KviHttpRequestThread::runInternal()
+{
+#ifndef COMPILE_SSL_SUPPORT
+ if(m_bUseSSL)
+ {
+ failure(__tr_no_lookup("This KVIrc executable has no SSL support"));
+ return;
+ }
+#endif
+
+ if(!connectToRemoteHost())return;
+
+ postEvent(m_pRequest,new KviThreadEvent(KVI_HTTP_REQUEST_THREAD_EVENT_CONNECTED));
+
+ // FIXME: Other headers ?
+
+ KviStr szMethod;
+ switch(m_eRequestMethod)
+ {
+ case Head: szMethod = "HEAD"; break;
+ case Post: szMethod = "POST"; break;
+ case Get: szMethod = "GET"; break;
+ }
+
+ KviStr szRequest(KviStr::Format,"%s %s HTTP/1.1\r\n" \
+ "Host: %s\r\n" \
+ "Connection: Close\r\n" \
+ "User-Agent: KVIrc-http-slave/1.0.0\r\n" \
+ "Accept: */*\r\n",
+ szMethod.ptr(),KviQString::toUtf8(m_szPath).data(),KviQString::toUtf8(m_szHost).data());
+
+ if(m_uContentOffset > 0)
+ szRequest.append(KviStr::Format,"Range: bytes=%u-\r\n",m_uContentOffset);
+
+ if(m_eRequestMethod == Post)
+ {
+ szRequest.append(KviStr::Format,"Content-Type: application/x-www-form-urlencoded\r\n" \
+ "Content-Length: %u\r\n" \
+ "Cache-control: no-cache\r\n" \
+ "Pragma: no-cache\r\n",m_szPostData.length());
+ }
+
+ szRequest += "\r\n";
+
+ if(m_eRequestMethod == Post)
+ {
+ if(!m_szPostData.isEmpty())
+ szRequest.append(m_szPostData);
+ szRequest += "\r\n";
+ }
+
+ //debug("SENDING REQUEST:\n%s",szRequest.ptr());
+
+ if(!sendBuffer(szRequest.ptr(),szRequest.len(),60))return;
+
+ // now loop reading data
+ postEvent(m_pRequest,new KviThreadDataEvent<QString>(KVI_HTTP_REQUEST_THREAD_EVENT_REQUESTSENT,new QString(szRequest)));
+
+ for(;;)
+ {
+ if(!readDataStep())return;
+ }
+}
+
diff --git a/src/kvilib/net/kvi_http.h b/src/kvilib/net/kvi_http.h
new file mode 100644
index 00000000..1bd6a9d9
--- /dev/null
+++ b/src/kvilib/net/kvi_http.h
@@ -0,0 +1,209 @@
+#ifndef _KVI_HTTP_H_
+#define _KVI_HTTP_H_
+//=============================================================================
+//
+// File : kvi_http.h
+// Creation date : Sat Aug 17 13:43:31 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, write to the Free Software Foundation,
+// Inc. ,59 Temple Place - Suite 33, Boston, MA 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_heapobject.h"
+#include "kvi_string.h"
+#include "kvi_thread.h"
+#include "kvi_sockettype.h"
+#include "kvi_databuffer.h"
+#include "kvi_inttypes.h"
+#include "kvi_url.h"
+
+#include <qobject.h>
+#include "kvi_pointerhashtable.h"
+#include "kvi_file.h"
+#include <qstringlist.h>
+
+class KviDns;
+class KviSSL;
+class KviHttpRequestThread;
+
+//
+// This class implements a HTTP protocol client.
+// It's able to send GET, POST and HEAD requests,
+// download stuff to a file or to a qt SLOT().
+//
+
+class KVILIB_API KviHttpRequest : public QObject, public KviHeapObject
+{
+ Q_OBJECT
+public:
+ enum ProcessingType
+ {
+ HeadersOnly, // Download headers only (HEAD request)
+ WholeFile, // Emit the data as whole file (binaryData() is emitted)
+ Blocks, // Emit the data as blocks (binaryData() is emitted)
+ Lines, // Emit the data as ASCII text lines (the client must take care of decoding the data)
+ StoreToFile // Store the data to a file
+ };
+ enum ExistingFileAction
+ {
+ Overwrite, // Overwrite existing file
+ RenameIncoming, // Automatically rename the incoming file
+ RenameExisting, // Automatically rename the existing file
+ Resume // Attempt to resume the file (get partial content)
+ };
+public:
+ KviHttpRequest();
+ ~KviHttpRequest();
+protected:
+ // data
+ KviUrl m_url;
+ QString m_szFileName;
+ ProcessingType m_eProcessingType;
+ ExistingFileAction m_eExistingFileAction;
+ void * m_pPrivateData;
+ unsigned int m_uMaxContentLength;
+ unsigned int m_uContentOffset;
+ QString m_szPostData;
+ // status
+ QString m_szLastError;
+ unsigned int m_uTotalSize;
+ unsigned int m_uReceivedSize;
+ // internal status
+ QString m_szIp;
+ KviDns * m_pDns;
+ KviHttpRequestThread * m_pThread;
+ KviDataBuffer * m_pBuffer;
+ bool m_bHeaderProcessed;
+ bool m_bChunkedTransferEncoding;
+ bool m_bGzip;
+ unsigned int m_uRemainingChunkSize;
+ bool m_bIgnoreRemainingData; // used in chunked transfer after the last chunk has been seen
+ KviFile * m_pFile;
+protected:
+ bool startDnsLookup();
+ virtual bool event(QEvent *e);
+ void processData(KviDataBuffer * data);
+ bool processHeader(KviStr &szHeader);
+ bool openFile();
+ void emitLines(KviDataBuffer * pDataBuffer);
+
+ void resetStatus();
+ void resetData();
+ void resetInternalStatus();
+protected slots:
+ void dnsLookupDone(KviDns *d);
+ void haveServerIp();
+public:
+ const KviUrl & url(){ return m_url; };
+ ProcessingType processingType(){ return m_eProcessingType; };
+ ExistingFileAction existingFileAction(){ return m_eExistingFileAction; };
+ const QString &fileName(){ return m_szFileName; };
+ void * privateData(){ return m_pPrivateData; };
+ unsigned int maxContentLength(){ return m_uMaxContentLength; };
+ unsigned int contentOffset(){ return m_uContentOffset; };
+ unsigned int totalSize(){ return m_uTotalSize; };
+ unsigned int receivedSize(){ return m_uReceivedSize; };
+
+ void reset();
+
+ void setPostData(const QString &szPostData){ m_szPostData = szPostData; };
+ void setUrl(const KviUrl &u){ m_url = u; };
+ void setProcessingType(ProcessingType t){ m_eProcessingType = t; };
+ void setExistingFileAction(ExistingFileAction a){ m_eExistingFileAction = a; };
+ void setFileName(const QString &szFileName){ m_szFileName = szFileName; };
+ void setPrivateData(void * ptr){ m_pPrivateData = ptr; };
+ void setMaxContentLength(int uMaxContentLength){ m_uMaxContentLength = uMaxContentLength; }; //0 means unlimited
+ // this will work regardless of ExistingFileAction : even if the file doesn't exist
+ void setContentOffset(int uContentOffset){ m_uContentOffset = uContentOffset; };
+
+ bool start();
+
+ // this is a shortcut for reset()+setUrl()+setProcessingType()+setFileName()+start()
+ bool get(const KviUrl &u,ProcessingType p = WholeFile,const QString &szFileName = QString::null);
+
+ const QString & lastError(){ return m_szLastError; };
+
+ void abort();
+signals:
+ void resolvingHost(const QString &hostname);
+ void contactingHost(const QString &ipandport);
+ void connectionEstabilished();
+ void receivedResponse(const QString &response);
+
+ void terminated(bool bSuccess);
+
+
+ void status(const QString &message);
+ void data(const KviStr &data);
+ void binaryData(const KviDataBuffer &data);
+ void header(KviPointerHashTable<const char *,KviStr> * hdr);
+ void requestSent(const QStringList &request);
+};
+
+
+class KviHttpRequestThread : public KviSensitiveThread
+{
+ friend class KviHttpRequest;
+public:
+ enum RequestMethod { Post, Get , Head };
+protected:
+ KviHttpRequestThread(KviHttpRequest * r,
+ const QString &szHost,
+ const QString &szIp,
+ unsigned short uPort,
+ const QString &szPath,
+ unsigned int uContentOffset,
+ RequestMethod m,
+ const QString &szPostData = QString::null,
+ bool bUseSSL = false);
+
+public:
+ ~KviHttpRequestThread();
+protected:
+ KviHttpRequest * m_pRequest;
+
+ QString m_szHost;
+ QString m_szIp;
+ QString m_szPath;
+ unsigned int m_uContentOffset;
+ RequestMethod m_eRequestMethod;
+ QString m_szPostData;
+
+ unsigned short m_uPort;
+ kvi_socket_t m_sock;
+ bool m_bUseSSL;
+#ifdef COMPILE_SSL_SUPPORT
+ KviSSL * m_pSSL;
+#endif
+protected:
+ int selectForReadStep();
+ bool selectForRead(int iTimeoutInSecs);
+ bool readDataStep();
+ bool sendBuffer(const char *buffer,int bufLen,int iTimeoutInSecs);
+ bool failure(const char *error=0);
+ bool sslFailure();
+ bool selectForWrite(int iTimeoutInSecs);
+ bool connectToRemoteHost();
+ bool processInternalEvents();
+ void runInternal();
+ virtual void run();
+};
+
+
+#endif //_KVI_HTTP_H_
diff --git a/src/kvilib/net/kvi_netutils.cpp b/src/kvilib/net/kvi_netutils.cpp
new file mode 100644
index 00000000..0cdb8b02
--- /dev/null
+++ b/src/kvilib/net/kvi_netutils.cpp
@@ -0,0 +1,1504 @@
+//=============================================================================
+
+//
+
+// File : kvi_netutlis.cpp
+
+// Creation date : Sun Jun 18 2000 18:37:27 by Szymon Stefanek
+
+//
+
+// This file is part of the KVirc irc client distribution
+
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+
+//
+
+// This program is FREE software. You can redistribute it and/or
+
+// modify it under the terms of the GNU General Public License
+
+// as published by the Free Software Foundation; either version 2
+
+// of the License, or (at your opinion) any later version.
+
+//
+
+// This program is distributed in the HOPE that it will be USEFUL,
+
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+// See the GNU General Public License for more details.
+
+//
+
+// You 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 02110-1301, USA.
+
+//
+
+//=============================================================================
+
+// AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARGH!
+// This effect is caused by the combination of broken CVS installation and
+// the ugly windows "text mode" files
+
+#define __KVILIB__
+
+
+
+
+
+#define _KVI_NETUTILS_CPP_
+
+
+
+#include "kvi_netutils.h"
+
+#include "kvi_memmove.h"
+#include <qstringlist.h>
+
+
+#ifndef COMPILE_ON_WINDOWS
+
+#include <sys/time.h> // struct timeval
+
+#endif
+
+
+
+#include <sys/types.h>
+
+
+
+#include "kvi_qstring.h"
+
+
+
+#ifndef COMPILE_ON_WINDOWS
+
+ #include <unistd.h>
+
+ #include <netdb.h>
+
+#endif
+
+
+
+#ifdef COMPILE_GET_INTERFACE_ADDRESS
+
+ #include <sys/ioctl.h>
+
+ #include <net/if.h>
+
+#endif //COMPILE_GET_INTERFACE_ADDRESS
+
+
+
+#ifndef HAVE_INET_ATON
+
+
+
+
+
+// FIXME: #warning "Your system lacks the inet_aton function,"
+
+// FIXME: #warning "you're trying to compile this file without"
+
+// FIXME: #warning "the config.h created by the configure script,"
+
+// FIXME: #warning "Using own internal implementation of inet_aton."
+
+
+
+#include <ctype.h>
+
+
+
+
+
+// Need own inet_aton implementation
+
+
+
+//
+
+// Check whether "cp" is a valid ascii representation
+
+// of an Internet address and convert to a binary address.
+
+// Returns 1 if the address is valid, 0 if not.
+
+// This replaces inet_addr, the return value from which
+
+// cannot distinguish between failure and a local broadcast address.
+
+//
+
+// Original code comes from the ircd source.
+
+//
+
+
+
+bool kvi_stringIpToBinaryIp(const char *szIp,struct in_addr *address)
+
+{
+
+ register unsigned long val;
+
+ register int base, n;
+
+ register char c;
+
+ unsigned int parts[4];
+
+ register unsigned int *pp = parts;
+
+ if(!szIp)return false;
+
+ c = *szIp;
+
+ for(;;){
+
+ // Collect number up to ``.''.
+
+ // Values are specified as for C:
+
+ // 0x=hex, 0=octal, isdigit=decimal.
+
+ if(!isdigit(c))return false;
+
+ val = 0;
+
+ base = 10;
+
+ if(c == '0'){
+
+ c = *++szIp;
+
+ if((c == 'x')||(c == 'X'))base = 16, c = *++szIp;
+
+ else base = 8;
+
+ }
+
+ for (;;) {
+
+ if(isascii(c) && isdigit(c)) {
+
+ val = (val * base) + (c - '0');
+
+ c = *++szIp;
+
+ } else if (base == 16 && isascii(c) && isxdigit(c)) {
+
+ val = (val << 4) | (c + 10 - (islower(c) ? 'a' : 'A'));
+
+ c = *++szIp;
+
+ } else break;
+
+ }
+
+ if(c == '.'){
+
+ // Internet format:
+
+ // a.b.c.d
+
+ // a.b.c (with c treated as 16 bits)
+
+ // a.b (with b treated as 24 bits)
+
+ if(pp >= (parts + 3)) return false;
+
+ *pp++ = val;
+
+ c = *++szIp;
+
+ } else break;
+
+ }
+
+ // Check for trailing characters.
+
+ if ((c != '\0') && (!isascii(c) || !isspace(c)))return false;
+
+ // Concact the address according to
+
+ // the number of parts specified.
+
+ n = pp - parts + 1;
+
+ switch (n) {
+
+ case 0: return false; // initial nondigit
+
+ case 1: break; // a -- 32 bits
+
+ case 2: // a.b -- 8.24 bits
+
+ if(val > 0xffffff) return false;
+
+ val |= parts[0] << 24;
+
+ break;
+
+ case 3: // a.b.c -- 8.8.16 bits
+
+ if(val > 0xffff)return false;
+
+ val |= (parts[0] << 24) | (parts[1] << 16);
+
+ break;
+
+ case 4: // a.b.c.d -- 8.8.8.8 bits
+
+ if(val > 0xff)return false;
+
+ val |= (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8);
+
+ break;
+
+ }
+
+ if(address)address->s_addr = htonl(val);
+
+ return true;
+
+}
+
+
+
+#else //!HAVE_INET_ATON
+
+
+
+bool kvi_stringIpToBinaryIp(const char *szIp,struct in_addr *address)
+
+{
+
+ if(!szIp)return false;
+
+ return (inet_aton(szIp,address) != 0);
+
+}
+
+
+
+#endif //!HAVE_INET_ATON
+
+
+
+#ifndef HAVE_INET_NTOA
+
+
+
+// FIXME: #warning "Your system lacks the inet_ntoa function,"
+
+// FIXME: #warning "you're trying to compile this file without"
+
+// FIXME: #warning "the config.h created by the configure script,"
+
+// FIXME: #warning "Using own internal implementation of inet_ntoa."
+
+
+
+//
+
+// Original code comes from the ircd source.
+
+//
+
+
+
+bool kvi_binaryIpToStringIp(struct in_addr in,QString &szBuffer)
+
+{
+
+ unsigned char *s = (unsigned char *)&in;
+
+ int a,b,c,d;
+
+ a = (int)*s++;
+
+ b = (int)*s++;
+
+ c = (int)*s++;
+
+ d = (int)*s;
+
+ szBuffer.sprintf("%d.%d.%d.%d", a,b,c,d );
+
+ return true;
+
+}
+
+
+
+#else //HAVE_INET_NTOA
+
+
+
+bool kvi_binaryIpToStringIp(struct in_addr in,QString &szBuffer)
+
+{
+
+// FIXME: #warning "This is NOT thread safe!"
+
+ char * ptr = inet_ntoa(in);
+
+ if(!ptr)return false;
+
+ szBuffer = ptr;
+
+ return true;
+
+}
+
+
+
+#endif //HAVE_INET_NTOA
+
+
+
+bool kvi_isValidStringIp(const char *szIp)
+
+{
+
+ struct in_addr address;
+
+ if(!szIp)return false;
+
+ if(!isdigit(*szIp))return false;
+
+ return kvi_stringIpToBinaryIp(szIp,&address);
+
+}
+
+
+
+
+
+#ifdef COMPILE_IPV6_SUPPORT
+
+
+
+#ifdef COMPILE_ON_WINDOWS
+
+
+
+//#include <stdlib.h>
+
+//#include <sys/socket.h>
+
+//#include <arpa/inet.h>/
+
+//#include <errno.h>
+
+//#include "dietfeatures.h"
+
+
+
+static unsigned int scan_ip6(const char *s,char ip[16])
+
+{
+
+ unsigned int i;
+
+ unsigned int len=0;
+
+ unsigned long u;
+
+
+
+ char suffix[16];
+
+ unsigned int prefixlen=0;
+
+ unsigned int suffixlen=0;
+
+
+
+ for (i=0; i<16; i++) ip[i]=0;
+
+
+
+ for (;;) {
+
+ if (*s == ':') {
+
+ len++;
+
+ if (s[1] == ':') { /* Found "::", skip to part 2 */
+
+ s+=2;
+
+ len++;
+
+ break;
+
+ }
+
+ s++;
+
+ }
+
+ {
+
+ char *tmp;
+
+ u=strtoul(s,&tmp,16);
+
+ i=tmp-s;
+
+ }
+
+
+
+ if (!i) return 0;
+
+ if (prefixlen==12 && s[i]=='.') {
+
+ /* the last 4 bytes may be written as IPv4 address */
+
+ if (kvi_stringIpToBinaryIp(s,(struct in_addr*)(ip+12)))
+
+ return i+len;
+
+ else
+
+ return 0;
+
+ }
+
+ ip[prefixlen++] = (u >> 8);
+
+ ip[prefixlen++] = (u & 255);
+
+ s += i; len += i;
+
+ if (prefixlen==16)
+
+ return len;
+
+ }
+
+
+
+/* part 2, after "::" */
+
+ for (;;) {
+
+ if (*s == ':') {
+
+ if (suffixlen==0)
+
+ break;
+
+ s++;
+
+ len++;
+
+ } else if (suffixlen!=0)
+
+ break;
+
+ {
+
+ char *tmp;
+
+ u=strtol(s,&tmp,16);
+
+ i=tmp-s;
+
+ }
+
+ if (!i) {
+
+ if (*s) len--;
+
+ break;
+
+ }
+
+ if (suffixlen+prefixlen<=12 && s[i]=='.') {
+
+ if (kvi_stringIpToBinaryIp(s,(struct in_addr*)(suffix+suffixlen))) {
+
+ suffixlen+=4;
+
+ len+=(unsigned int)strlen(s);
+
+ break;
+
+ } else
+
+ prefixlen=12-suffixlen; /* make end-of-loop test true */
+
+ }
+
+ suffix[suffixlen++] = (u >> 8);
+
+ suffix[suffixlen++] = (u & 255);
+
+ s += i; len += i;
+
+ if (prefixlen+suffixlen==16)
+
+ break;
+
+ }
+
+ for (i=0; i<suffixlen; i++)
+
+ ip[16-suffixlen+i] = suffix[i];
+
+ return len;
+
+}
+
+
+
+#ifndef WIN2K
+
+
+
+int inet_pton(int AF, const char *CP, void *BUF) {
+
+ int len;
+
+ if (AF==AF_INET) {
+
+ if (!kvi_stringIpToBinaryIp(CP,(struct in_addr*)BUF))
+
+ return 0;
+
+ } else if (AF==AF_INET6) {
+
+ if (CP[len=scan_ip6(CP,(char *)BUF)])
+
+ return 0;
+
+ } else {
+
+ errno=WSAEPFNOSUPPORT;
+
+ return -1;
+
+ }
+
+ return 1;
+
+}
+
+
+
+#endif //WIN2K
+
+
+
+//#include <sys/socket.h>
+
+//#include <arpa/inet.h>
+
+
+
+//extern char *inet_ntoa_r(struct in_addr in,char* buf);
+
+
+
+static const unsigned char V4mappedprefix[12]={0,0,0,0,0,0,0,0,0,0,0xff,0xff};
+
+
+
+static char tohex(char hexdigit) {
+
+ return hexdigit>9?hexdigit+'a'-10:hexdigit+'0';
+
+}
+
+
+
+static int fmt_xlong(char* s,unsigned int i)
+
+{
+
+ char* bak=s;
+
+ *s=tohex((i>>12)&0xf); if (s!=bak || *s!='0') ++s;
+
+ *s=tohex((i>>8)&0xf); if (s!=bak || *s!='0') ++s;
+
+ *s=tohex((i>>4)&0xf); if (s!=bak || *s!='0') ++s;
+
+ *s=tohex(i&0xf);
+
+ return s-bak+1;
+
+}
+
+
+
+static unsigned int i2a(char* dest,unsigned int x)
+
+{
+
+ register unsigned int tmp=x;
+
+ register unsigned int len=0;
+
+ if (x>=100) { *dest++=tmp/100+'0'; tmp=tmp%100; ++len; }
+
+ if (x>=10) { *dest++=tmp/10+'0'; tmp=tmp%10; ++len; }
+
+ *dest++=tmp+'0';
+
+ return len+1;
+
+}
+
+
+
+char *inet_ntoa_r(struct in_addr in,char* buf)
+
+{
+
+ unsigned int len;
+
+ unsigned char *ip=(unsigned char*)&in;
+
+ len=i2a(buf,ip[0]); buf[len]='.'; ++len;
+
+ len+=i2a(buf+ len,ip[1]); buf[len]='.'; ++len;
+
+ len+=i2a(buf+ len,ip[2]); buf[len]='.'; ++len;
+
+ len+=i2a(buf+ len,ip[3]); buf[len]=0;
+
+ return buf;
+
+}
+
+
+
+
+
+unsigned int fmt_ip6(char *s,const char ip[16])
+
+{
+
+ unsigned int len;
+
+ unsigned int i;
+
+ unsigned int temp;
+
+ unsigned int compressing; // 0 not compressing , 1 compressing now , 2 already compressed once
+
+
+
+ len = 0;
+
+ compressing = 0;
+
+
+
+ for(int j=0;j<16;j+=2)
+
+ {
+
+ if (j==12 && !memcmp(ip,V4mappedprefix,12))
+
+ {
+
+ inet_ntoa_r(*(struct in_addr*)(ip+12),s);
+
+ temp=(unsigned int)strlen(s);
+
+ return len+temp;
+
+ }
+
+ temp = ((unsigned long) (unsigned char) ip[j] << 8) + (unsigned long) (unsigned char) ip[j+1];
+
+ if(temp == 0)
+
+ {
+
+ if(compressing == 0)
+
+ {
+
+ compressing=1;
+
+ if (j==0)
+
+ {
+
+ *s++=':';
+
+ ++len;
+
+ }
+
+ }
+
+ } else {
+
+ if(compressing == 1)
+
+ {
+
+ compressing=2; // don't do it again
+
+ *s++=':'; ++len;
+
+ }
+
+ i = fmt_xlong(s,temp);
+
+ len += i;
+
+ s += i;
+
+ if (j<14)
+
+ {
+
+ *s++ = ':';
+
+ ++len;
+
+ }
+
+ }
+
+ }
+
+ if(compressing == 1)
+
+ {
+
+ *s++=':';
+
+ ++len;
+
+ }
+
+ *s=0;
+
+ return len;
+
+}
+
+
+
+const char* inet_ntop(int AF, const void *CP, char *BUF, size_t LEN)
+
+{
+
+ char buf[100];
+
+ size_t len;
+
+ if (AF==AF_INET)
+
+ {
+
+ inet_ntoa_r(*(struct in_addr*)CP,buf);
+
+ len=strlen(buf);
+
+ } else if (AF==AF_INET6)
+
+ {
+
+ len=fmt_ip6(buf,(char *)CP);
+
+ } else
+
+ return 0;
+
+ if (len<LEN)
+
+ {
+
+ strcpy(BUF,buf);
+
+ return BUF;
+
+ }
+
+ return 0;
+
+}
+
+
+
+
+
+
+
+
+
+
+
+#endif
+
+
+
+
+
+bool kvi_stringIpToBinaryIp_V6(const char *szIp,struct in6_addr *address)
+
+{
+
+ if(!szIp)return false;
+
+ return (inet_pton(AF_INET6,szIp,(void *)address) == 1);
+
+}
+
+
+
+bool kvi_isValidStringIp_V6(const char *szIp)
+
+{
+
+ struct in6_addr address;
+
+ if(!szIp)return false;
+
+ return kvi_stringIpToBinaryIp_V6(szIp,&address);
+
+}
+
+
+
+
+
+
+
+bool kvi_binaryIpToStringIp_V6(struct in6_addr in,QString &szBuffer)
+
+{
+
+ char buf[46];
+
+ bool bRet = inet_ntop(AF_INET6,(void *)&in,buf,46);
+
+ szBuffer= buf;
+
+ return bRet;
+
+}
+
+
+
+#endif
+
+
+
+#include <errno.h>
+
+
+
+bool kvi_select(int fd,bool * bCanRead,bool * bCanWrite,int iUSecs)
+
+{
+
+ // FIXME: This stuff should DIE!
+
+ fd_set rs;
+
+ fd_set ws;
+
+ FD_ZERO(&rs);
+
+ FD_ZERO(&ws);
+
+ FD_SET(fd,&rs);
+
+ FD_SET(fd,&ws);
+
+ struct timeval tv;
+
+ tv.tv_sec = 0;
+
+ tv.tv_usec = iUSecs;
+
+ int ret = select(fd + 1,&rs,&ws,0,&tv);
+
+ if(ret < 1)return false; // EINTR or ENOSTUFFATALL
+
+ *bCanRead = FD_ISSET(fd,&rs);
+
+ *bCanWrite = FD_ISSET(fd,&ws);
+
+ return true;
+
+}
+
+
+
+namespace KviNetUtils
+
+{
+
+ bool stringIpToBinaryIp(const QString &szStringIp,struct in_addr * address)
+ {
+#ifndef HAVE_INET_ATON
+ QString szAddr = szStringIp.simplifyWhiteSpace();
+ Q_UINT32 iAddr=0;
+ QStringList ipv4 = QStringList::split(".", szAddr, FALSE);
+ if (ipv4.count() == 4) {
+ int i = 0;
+ bool ok = TRUE;
+ while(ok && i < 4) {
+ uint byteValue = ipv4[i].toUInt(&ok);
+ if ( (byteValue > 255) && ok )
+ ok = FALSE;
+ if (ok)
+ iAddr = (iAddr << 8) + byteValue;
+ ++i;
+ }
+ if (ok)
+ {
+ if(address)address->s_addr = htonl(iAddr);
+ return true;
+ }
+ }
+ return FALSE;
+#else //HAVE_INET_ATON
+ if(szStringIp.isEmpty())return false;
+ return (inet_aton(KviQString::toUtf8(szStringIp).data(),address) != 0);
+#endif //HAVE_INET_ATON
+ }
+
+
+ bool isValidStringIp(const QString &szIp)
+
+ {
+
+ struct in_addr address;
+
+ if(szIp.isEmpty())return false;
+
+ if(!szIp[0].isNumber())return false;
+
+ return stringIpToBinaryIp(szIp,&address);
+
+ }
+
+
+
+#ifdef COMPILE_IPV6_SUPPORT
+
+ bool stringIpToBinaryIp_V6(const QString &szStringIp,struct in6_addr * address)
+
+ {
+
+ return (inet_pton(AF_INET6,KviQString::toUtf8(szStringIp).data(),(void *)address) == 1);
+
+ }
+
+
+
+ bool isValidStringIp_V6(const QString &szIp)
+
+ {
+
+ struct in6_addr address;
+
+ if(szIp.isEmpty())return false;
+
+ return stringIpToBinaryIp_V6(szIp,&address);
+
+ }
+
+ bool binaryIpToStringIp_V6(struct in6_addr in,QString &szBuffer)
+ {
+ char buf[46];
+ bool bRet = inet_ntop(AF_INET6,(void *)&in,buf,46);
+ szBuffer= buf;
+ return bRet;
+ }
+
+
+#endif //COMPILE_IPV6_SUPPORT
+
+
+
+ bool binaryIpToStringIp(struct in_addr in,QString &szBuffer)
+
+ {
+
+ char * ptr = inet_ntoa(in);
+
+ if(!ptr)return false;
+
+ szBuffer = ptr;
+
+ return true;
+
+ }
+
+
+
+ bool isRoutableIpString(const QString &szIpString)
+
+ {
+
+ struct in_addr a;
+
+ if(szIpString.isEmpty())return false;
+
+ stringIpToBinaryIp(szIpString,&a);
+
+ return isRoutableIp((const char *)&a);
+
+ }
+
+
+
+ bool isRoutableIp(const char * ipaddr)
+
+ {
+
+ if(!ipaddr)return false;
+
+ const unsigned char * ip = (const unsigned char *)ipaddr;
+
+ if(ip[0] == 0)return false; // old-style broadcast
+
+ if(ip[0] == 10)return false; // Class A VPN
+
+ if(ip[0] == 127)return false; // loopback
+
+ if((ip[0] == 172) && (ip[1] >= 16) && (ip[1] <= 31))return false; // Class B VPN
+
+ if((ip[0] == 192) && (ip[1] == 168))return false; // Class C VPN
+
+ if((ip[0] == 169) && (ip[1] == 254))return false; // APIPA
+
+ if((ip[0] == 192) && (ip[1] == 0) && (ip[2] == 2))return false; // Class B VPN
+
+ if(ip[0] >= 224)return false; // class D multicast and class E reserved
+
+
+
+ return true;
+
+ }
+
+
+
+ bool getInterfaceAddress(const QString &szInterfaceName,QString &szBuffer)
+
+ {
+
+#ifdef COMPILE_GET_INTERFACE_ADDRESS
+
+ struct sockaddr *sa;
+
+ struct sockaddr_in *sin;
+
+ struct ifreq ifr;
+
+ int len = szInterfaceName.length();
+
+ if(len > (IFNAMSIZ - 1))return false; // invalid interface anyway
+
+
+
+ kvi_memmove(ifr.ifr_name,KviQString::toUtf8(szInterfaceName).data(),len + 1);
+
+
+
+ int fd = socket(AF_INET,SOCK_STREAM,0);
+
+ if(fd < 0)return false;
+
+
+
+ if(ioctl(fd,SIOCGIFADDR,&ifr) == -1)return false; // supports only IPV4 ?
+
+
+
+ close(fd);
+
+
+
+ sa = (struct sockaddr *)&(ifr.ifr_addr);
+
+
+
+ if (sa->sa_family != AF_INET) return false;
+
+ sin = (struct sockaddr_in*) sa;
+
+ return binaryIpToStringIp(sin->sin_addr,szBuffer);
+
+ // (this seems to work for AF_INET only anyway)
+
+#else //!COMPILE_GET_INTERFACE_ADDRESS
+
+ return false;
+
+#endif //!COMPILE_GET_INTERFACE_ADDRESS
+
+ }
+
+
+
+ void formatNetworkBandwidthString(QString &szBuffer,unsigned int uBytesPerSec)
+
+ {
+
+ if(uBytesPerSec > (1024 * 1024))
+
+ {
+
+ unsigned int uMB = uBytesPerSec / (1024 * 1024);
+
+ unsigned int uRem = ((uBytesPerSec % (1024 * 1024)) * 100) / (1024 * 1024);
+
+ KviQString::sprintf(szBuffer,"%u.%u%u MB/s",uMB,uRem / 10,uRem % 10);
+
+ return;
+
+ }
+
+ if(uBytesPerSec >= 1024)
+
+ {
+
+ unsigned int uKB = uBytesPerSec / 1024;
+
+ unsigned int uRem = ((uBytesPerSec % 1024) * 100) / 1024;
+
+ KviQString::sprintf(szBuffer,"%u.%u%u KB/s",uKB,uRem / 10,uRem % 10);
+
+ return;
+
+ }
+
+ KviQString::sprintf(szBuffer,"%u B/s",uBytesPerSec);
+
+ }
+
+
+
+
+
+};
+
+
+
+bool kvi_getInterfaceAddress(const char * ifname,QString &buffer)
+
+{
+
+ debug("kvi_getInterfaceAddress is deprecated: use KviNetUtils::getInterfaceAddress");
+
+ QString szRet;
+
+ bool bRes = KviNetUtils::getInterfaceAddress(QString(ifname),szRet);
+
+ buffer = szRet;
+
+ return bRes;
+
+}
+
+
+
+bool kvi_isRoutableIpString(const char * ipstring)
+
+{
+
+ struct in_addr a;
+
+ if(!ipstring)return false;
+
+ kvi_stringIpToBinaryIp(ipstring,&a);
+
+ return kvi_isRoutableIp((const char *)&a);
+
+}
+
+
+
+bool kvi_isRoutableIp(const char * ipaddr)
+
+{
+
+ if(!ipaddr)return false;
+
+ const unsigned char * ip = (const unsigned char *)ipaddr;
+
+ if(ip[0] == 0)return false; // old-style broadcast
+
+ if(ip[0] == 10)return false; // Class A VPN
+
+ if(ip[0] == 127)return false; // loopback
+
+ if((ip[0] == 172) && (ip[1] >= 16) && (ip[1] <= 31))return false; // Class B VPN
+
+ if((ip[0] == 192) && (ip[1] == 168))return false; // Class C VPN
+
+ if((ip[0] == 169) && (ip[1] == 254))return false; // APIPA
+
+ if((ip[0] == 192) && (ip[1] == 0) && (ip[2] == 2))return false; // Class B VPN
+
+ if(ip[0] >= 224)return false; // class D multicast and class E reserved
+
+
+
+ return true;
+
+}
+
+
+
+bool kvi_getLocalHostAddress(QString &buffer)
+
+{
+
+ // This will work only on windoze...
+
+ char buf[1024];
+
+ if(gethostname(buf,1024) != 0)return false;
+
+ struct hostent * h = gethostbyname(buf);
+
+ if(!h)return false;
+
+ QString tmp;
+
+ int i=0;
+
+ while(h->h_addr_list[i])
+
+ {
+
+ if(kvi_binaryIpToStringIp(*((struct in_addr *)(h->h_addr_list[i])),tmp))
+
+ {
+
+ if(kvi_isRoutableIp(h->h_addr_list[i]))
+
+ {
+
+ buffer = tmp;
+
+ return true;
+
+ }
+
+ }
+
+ i++;
+
+ }
+
+ buffer = tmp;
+
+ return true;
+
+}
+
+
+
+
+
+
+
+
+
+
+
+KviSockaddr::KviSockaddr(const char * szIpAddress,kvi_u32_t uPort,bool bIpV6,bool bUdp)
+
+{
+ struct addrinfo hints;
+ kvi_memset((void *)&hints,0,sizeof(hints));
+ hints.ai_flags = AI_NUMERICHOST;
+#ifdef COMPILE_IPV6_SUPPORT
+ hints.ai_family = bIpV6 ? PF_INET6 : PF_INET;
+#else
+ hints.ai_family = PF_INET;
+#endif
+
+ hints.ai_socktype = bUdp ? SOCK_DGRAM : SOCK_STREAM;
+
+ hints.ai_protocol = 0;
+ m_pData = 0;
+ KviStr szPort(KviStr::Format,"%u",uPort);
+ getaddrinfo(szIpAddress,szPort.ptr(),&hints,(struct addrinfo **)&m_pData);
+
+}
+
+
+KviSockaddr::KviSockaddr(kvi_u32_t uPort,bool bIpV6,bool bUdp) // passive sockaddr
+
+{
+ struct addrinfo hints;
+ kvi_memset((void *)&hints,0,sizeof(hints));
+ hints.ai_flags = AI_NUMERICHOST | AI_PASSIVE;
+#ifdef COMPILE_IPV6_SUPPORT
+ hints.ai_family = bIpV6 ? PF_INET6 : PF_INET;
+#else
+ hints.ai_family = PF_INET;
+#endif
+ hints.ai_socktype = bUdp ? SOCK_DGRAM : SOCK_STREAM;
+ hints.ai_protocol = 0;
+ m_pData = 0;
+ KviStr szPort(KviStr::Format,"%u",uPort);
+ getaddrinfo(0,szPort.ptr(),&hints,(struct addrinfo **)&m_pData);
+
+}
+
+
+
+KviSockaddr::~KviSockaddr()
+
+{
+
+ if(m_pData)
+
+ {
+
+ freeaddrinfo((struct addrinfo *)m_pData);
+
+ m_pData = 0;
+
+ }
+
+}
+
+
+
+struct sockaddr * KviSockaddr::socketAddress()
+
+{
+
+ if(!m_pData)return 0;
+
+ return ((struct addrinfo *)m_pData)->ai_addr;
+
+}
+
+
+
+size_t KviSockaddr::addressLength()
+
+{
+
+ if(!m_pData)return 0;
+
+ return ((struct addrinfo *)m_pData)->ai_addrlen;
+
+}
+
+
+
+int KviSockaddr::addressFamily()
+
+{
+
+ if(!m_pData)return 0;
+
+ return ((struct addrinfo *)m_pData)->ai_family;
+
+}
+
+
+
+bool KviSockaddr::isIpV6()
+
+{
+
+ if(!m_pData)return false;
+
+#ifdef COMPILE_IPV6_SUPPORT
+
+ return false;
+
+#else
+
+ return (addressFamily() == AF_INET6);
+
+#endif
+
+}
+
+
+
+kvi_u32_t KviSockaddr::port()
+
+{
+ if(!m_pData)return 0;
+#ifdef COMPILE_IPV6_SUPPORT
+ switch(((struct addrinfo *)m_pData)->ai_family)
+ {
+ case AF_INET:
+ return ntohs(((struct sockaddr_in *)(((struct addrinfo *)m_pData)->ai_addr))->sin_port);
+ break;
+ case AF_INET6:
+ return ntohs(((struct sockaddr_in6 *)(((struct addrinfo *)m_pData)->ai_addr))->sin6_port);
+ break;
+ }
+ return 0;
+#else
+ return ntohs(((struct sockaddr_in *)(((struct addrinfo *)m_pData)->ai_addr))->sin_port);
+#endif
+
+}
+
+
+
+bool KviSockaddr::getStringAddress(QString &szBuffer)
+
+{
+
+ if(!m_pData)return 0;
+
+#ifdef COMPILE_IPV6_SUPPORT
+
+ switch(((struct addrinfo *)m_pData)->ai_family)
+
+ {
+
+ case AF_INET:
+
+ return kvi_binaryIpToStringIp(((struct sockaddr_in *)(((struct addrinfo *)m_pData)->ai_addr))->sin_addr,szBuffer);
+
+ break;
+
+ case AF_INET6:
+
+ return kvi_binaryIpToStringIp_V6(((struct sockaddr_in6 *)(((struct addrinfo *)m_pData)->ai_addr))->sin6_addr,szBuffer);
+
+ break;
+
+ }
+
+ return false;
+
+#else
+
+ return kvi_binaryIpToStringIp(((struct sockaddr_in *)(((struct addrinfo *)m_pData)->ai_addr))->sin_addr,szBuffer);
+
+#endif
+
+}
+
diff --git a/src/kvilib/net/kvi_netutils.h b/src/kvilib/net/kvi_netutils.h
new file mode 100644
index 00000000..b43326f0
--- /dev/null
+++ b/src/kvilib/net/kvi_netutils.h
@@ -0,0 +1,104 @@
+#ifndef _KVI_NETUTILS_H_
+#define _KVI_NETUTILS_H_
+
+//
+// File : kvi_netutlis.h
+// Creation date : Sun Jun 18 2000 18:37:27 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+#include "kvi_inttypes.h"
+
+#ifdef COMPILE_ON_WINDOWS
+ #include <winsock2.h>
+ #ifdef COMPILE_IPV6_SUPPORT
+ #ifdef WIN2K
+ #include <ws2ip6.h>
+ #else
+ #include <ws2tcpip.h>
+ //#include <tpipv6.h>
+ #define in6_addr in_addr6
+ #endif
+ #endif
+#else
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h> //in_addr
+ #include <arpa/inet.h> //inet_ntoa inet_ntop and inet_pton depend on this one.
+#endif
+
+#include "kvi_string.h"
+
+
+KVILIB_API extern bool kvi_isValidStringIp(const char * szIp);
+KVILIB_API extern bool kvi_stringIpToBinaryIp(const char * szIp,struct in_addr * address);
+KVILIB_API extern bool kvi_binaryIpToStringIp(struct in_addr in,QString &szBuffer);
+
+#ifdef COMPILE_IPV6_SUPPORT
+ KVILIB_API extern bool kvi_isValidStringIp_V6(const char * szIp);
+ KVILIB_API extern bool kvi_stringIpToBinaryIp_V6(const char * szIp,struct in6_addr * address);
+ KVILIB_API extern bool kvi_binaryIpToStringIp_V6(struct in6_addr in,QString &szBuffer);
+#endif
+
+class KVILIB_API KviSockaddr
+{
+public:
+ KviSockaddr(const char * szIpAddress,kvi_u32_t uPort,bool bIpV6,bool bUdp = false);
+ KviSockaddr(kvi_u32_t uPort,bool bIpV6,bool bUdp = false); // passive
+ ~KviSockaddr();
+private:
+ void * m_pData; //addrinfo
+public:
+ struct sockaddr * socketAddress();
+ size_t addressLength();
+ int addressFamily();
+ bool isIpV6();
+ bool getStringAddress(QString &szBuffer);
+ kvi_u32_t port();
+
+};
+
+
+KVILIB_API extern bool kvi_select(int fd,bool * bCanRead,bool * bCanWrite,int iUSecs = 0);
+KVILIB_API extern bool kvi_getInterfaceAddress(const char * ifname,QString &buffer);
+
+// Warning : NOT THREAD SAFE!
+KVILIB_API extern bool kvi_getLocalHostAddress(QString &buffer);
+KVILIB_API extern bool kvi_isRoutableIp(const char * ipaddr);
+KVILIB_API extern bool kvi_isRoutableIpString(const char * ipstring);
+
+namespace KviNetUtils
+{
+ KVILIB_API bool stringIpToBinaryIp(const QString &szStringIp,struct in_addr * address);
+ KVILIB_API bool isValidStringIp(const QString &szStringIp);
+ KVILIB_API bool binaryIpToStringIp(struct in_addr in,QString &szBuffer);
+ KVILIB_API bool getInterfaceAddress(const QString &szInterfaceName,QString &szBuffer);
+#ifdef COMPILE_IPV6_SUPPORT
+ KVILIB_API bool isValidStringIp_V6(const QString &szStringIp);
+ KVILIB_API bool stringIpToBinaryIp_V6(const QString &szStringIp,struct in6_addr * address);
+ KVILIB_API bool binaryIpToStringIp_V6(struct in6_addr in,QString &szBuffer);
+#endif
+ KVILIB_API bool isRoutableIp(const char * ipaddr);
+ KVILIB_API bool isRoutableIpString(const QString &szIpString);
+ KVILIB_API void formatNetworkBandwidthString(QString &szBuffer,unsigned int uBytesPerSec);
+};
+
+
+#endif //!_KVI_NETUTILS_H_
diff --git a/src/kvilib/net/kvi_socket.cpp b/src/kvilib/net/kvi_socket.cpp
new file mode 100644
index 00000000..9bd3de9e
--- /dev/null
+++ b/src/kvilib/net/kvi_socket.cpp
@@ -0,0 +1,31 @@
+//
+// File : kvi_socket.cpp
+// Creation date : Thu Sep 20 03:50:24 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#define _KVI_SOCKET_CPP_
+
+#define __KVILIB__
+
+#include "kvi_socket.h"
+#include "kvi_inttypes.h"
+
+KVILIB_API kvi_u64_t g_uOutgoingTraffic;
+KVILIB_API kvi_u64_t g_uIncomingTraffic;
diff --git a/src/kvilib/net/kvi_socket.h b/src/kvilib/net/kvi_socket.h
new file mode 100644
index 00000000..47d51510
--- /dev/null
+++ b/src/kvilib/net/kvi_socket.h
@@ -0,0 +1,356 @@
+#ifndef _KVI_SOCKET_H_
+#define _KVI_SOCKET_H_
+//=============================================================================
+//
+// File : kvi_socket.h
+// Creation date : Thu Sep 20 03:50:22 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+//=============================================================================
+// Socket stuff abstraction layer
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_sockettype.h" // <--- this includes <winsock2.h> if needed
+
+#include <errno.h>
+
+#include "kvi_inttypes.h"
+
+//#ifndef _KVI_SOCKET_CPP_
+ extern KVILIB_API kvi_u64_t g_uOutgoingTraffic;
+ extern KVILIB_API kvi_u64_t g_uIncomingTraffic;
+//#endif //!_KVI_SOCKET_CPP_
+
+
+
+#ifdef COMPILE_ON_WINDOWS
+
+ #define KVI_INVALID_SOCKET INVALID_SOCKET
+
+#else
+
+ #include <sys/time.h>
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <netinet/tcp.h>
+ #include <netinet/in.h>
+ #include <fcntl.h>
+ #include <unistd.h>
+
+ #define KVI_INVALID_SOCKET (-1)
+
+#endif
+
+#ifndef MSG_NOSIGNAL
+ // At least solaris seems to not have it
+ #define MSG_NOSIGNAL 0
+#endif
+
+//#include "kvi_socketcalls.h"
+
+
+//================================================================================================
+// Constants for kvi_socket_create
+//
+
+#define KVI_SOCKET_PF_INET PF_INET
+#define KVI_SOCKET_PF_INET6 PF_INET6
+#define KVI_SOCKET_PF_UNIX PF_UNIX
+
+#define KVI_SOCKET_TYPE_STREAM SOCK_STREAM
+#define KVI_SOCKET_TYPE_DGRAM SOCK_DGRAM
+
+#define KVI_SOCKET_PROTO_TCP 0
+
+//================================================================================================
+// kvi_socket_create
+// kvi_socket_open
+//
+// Open a socket of the specified protocol family , type and protocol
+// You should always use the KVI_SOCKET_* constants as parameters
+// Returns KVI_INVALID_SOCKET if the socket creation has failed.
+// The returned socket is in blocking mode!
+//
+
+#define kvi_socket_open kvi_socket_create
+
+inline kvi_socket_t kvi_socket_create(int pf,int type,int proto)
+{
+ return (kvi_socket_t)socket(pf,type,proto);
+};
+
+//================================================================================================
+// kvi_socket_isValid
+//
+// Check if a socket is valid or not
+//
+
+inline void kvi_socket_flushTrafficCounters()
+{
+ g_uOutgoingTraffic = 0;
+ g_uIncomingTraffic = 0;
+}
+
+inline bool kvi_socket_isValid(kvi_socket_t sock)
+{
+ return (sock != ((kvi_socket_t)(KVI_INVALID_SOCKET)));
+}
+
+//================================================================================================
+// kvi_socket_destroy
+// kvi_socket_close
+//
+// Close a socket...that's all :)
+//
+
+#define kvi_socket_close kvi_socket_destroy
+
+inline void kvi_socket_destroy(kvi_socket_t sock)
+{
+#ifdef COMPILE_ON_WINDOWS
+ closesocket(sock);
+#else
+ close(sock);
+#endif
+};
+
+//================================================================================================
+// kvi_socket_setNonBlocking
+//
+// Sets the socket in nonBlocking mode. Obviously returns false in case of failure
+//
+
+inline bool kvi_socket_setNonBlocking(kvi_socket_t sock)
+{
+#ifdef COMPILE_ON_WINDOWS
+ unsigned long arg = 1;
+ return (ioctlsocket(sock,FIONBIO,(unsigned long FAR *)&arg) == 0);
+#else
+ return (fcntl(sock,F_SETFL,O_NONBLOCK) == 0);
+#endif
+};
+
+//================================================================================================
+// kvi_socket_bind
+//
+// Standard bind() call on the socket. Returns false in case of failure
+//
+
+inline bool kvi_socket_bind(kvi_socket_t sock,const struct sockaddr * sa,int salen)
+{
+ return (::bind(sock,sa,salen) == 0);
+};
+
+//================================================================================================
+// kvi_socket_connect
+//
+// Starts a connection to the specified remote address
+// returns false if the connection can not be started.
+// You might take a look at kvi_socket_errno() then.
+//
+
+inline bool kvi_socket_connect(kvi_socket_t sock,const struct sockaddr *sa,int salen)
+{
+#ifdef COMPILE_ON_WINDOWS
+ return (WSAConnect(sock,sa,salen,0,0,0,0) == 0);
+#else
+ return (::connect(sock,sa,salen) == 0);
+#endif
+};
+
+inline bool kvi_socket_recoverableConnectError(int err)
+{
+#ifdef COMPILE_ON_WINDOWS
+ return ((err == WSAEINPROGRESS) || (err == WSAEWOULDBLOCK));
+#else
+ return (err == EINPROGRESS);
+#endif
+};
+
+inline bool kvi_socket_recoverableError(int err)
+{
+#ifdef COMPILE_ON_WINDOWS
+ return ((err == WSAEWOULDBLOCK) || (err == EINTR) || (err == EAGAIN));
+#else
+ return ((err == EINTR) || (err = EAGAIN));
+#endif
+}
+
+//================================================================================================
+// kvi_socket_accept
+//
+// Standard accept() call. Returns KVI_INVALID_SOCKET in case of failure
+// You should check kvi_socket_errno() then.
+//
+
+inline kvi_socket_t kvi_socket_accept(kvi_socket_t sock,struct sockaddr *sa,int * salen)
+{
+#ifdef COMPILE_ON_WINDOWS
+ return (kvi_socket_t)::accept(sock,sa,salen);
+#else
+ return (kvi_socket_t)::accept(sock,sa,(socklen_t *)salen);
+#endif
+};
+
+//================================================================================================
+// kvi_socket_listen
+//
+// Standard listen() call. Returns false in case of failure
+// You should check kvi_socket_errno() then.
+//
+
+inline bool kvi_socket_listen(kvi_socket_t sock,int backlog)
+{
+ return (::listen(sock,backlog) == 0);
+};
+
+//================================================================================================
+// kvi_socket_select
+//
+// Standard select() call. This is complex so here is a mini-reminder:
+// nhpo is the number of the highest file descriptor in the sets plus one!
+// Returns the number of sockets with data available (or space available)
+// or something that is less than 0 in case of error. You should check kvi_socket_errno() then.
+//
+
+inline int kvi_socket_select(int nhpo,fd_set *r,fd_set *w,fd_set *e,struct timeval * t)
+{
+ return ::select(nhpo,r,w,e,t);
+};
+
+//================================================================================================
+// kvi_socket_send
+// kvi_socket_write
+//
+// Standard send() call. On UNIX ignores SIGPIPE. Returns the number of bytes sent or
+// -1 in case of failure. You should check kvi_socket_errno() then.
+//
+
+#define kvi_socket_write kvi_socket_send
+
+inline int kvi_socket_send(kvi_socket_t sock,const void * buf,int size)
+{
+ g_uOutgoingTraffic+=size;
+#ifdef COMPILE_ON_WINDOWS
+ return ::send(sock,(const char *)buf,size,0);
+#else
+ return ::send(sock,buf,size,MSG_NOSIGNAL | MSG_DONTWAIT);
+#endif
+};
+
+//================================================================================================
+// kvi_socket_recv
+// kvi_socket_read
+//
+// Standard read() call. On UNIX ignores SIGPIPE. Returns the number of bytes readed or
+// -1 in case of failure. You should check kvi_socket_errno() then.
+//
+
+#define kvi_socket_read kvi_socket_recv
+
+inline int kvi_socket_recv(kvi_socket_t sock,void * buf,int maxlen)
+{
+ int iReceived;
+#ifdef COMPILE_ON_WINDOWS
+ iReceived = ::recv(sock,(char *)buf,maxlen,0);
+#else
+ iReceived = ::recv(sock,buf,maxlen,MSG_NOSIGNAL);
+#endif
+ g_uIncomingTraffic+=iReceived;
+ return iReceived;
+};
+
+//================================================================================================
+// kvi_socket_getsockopt
+//
+// Standard getsockopt() call. Returns false in case of failure.
+// You should check kvi_socket_errno() then.
+//
+
+inline bool kvi_socket_getsockopt(kvi_socket_t sock,int level,int optname,void *optval,int *optlen)
+{
+#ifdef COMPILE_ON_WINDOWS
+ return (::getsockopt(sock,level,optname,(char FAR *)optval,optlen) == 0);
+#else
+ return (::getsockopt(sock,level,optname,optval,(socklen_t *)optlen) == 0);
+#endif
+}
+
+//================================================================================================
+// kvi_socket_setsockopt
+//
+// Standard setsockopt() call. Returns false in case of failure.
+// You should check kvi_socket_errno() then.
+//
+
+inline bool kvi_socket_setsockopt(kvi_socket_t sock,int level,int optname,const void *optval,int optlen)
+{
+#ifdef COMPILE_ON_WINDOWS
+ return (::setsockopt(sock,level,optname,(char FAR *)optval,optlen) == 0);
+#else
+ return (::setsockopt(sock,level,optname,optval,optlen) == 0);
+#endif
+}
+
+
+//================================================================================================
+// kvi_socket_disableNagle
+//
+// Disables the nagle algorithm (sets TCP_NODELAY)
+//
+
+/*
+ unused for now
+inline bool kvi_socket_disableNagle(kvi_socket_t sock)
+{
+ int opt = 1;
+ return kvi_socket_setsockopt(sock,IPPROTO_TCP,TCP_NODELAY,&opt,sizeof(opt));
+};
+*/
+
+//================================================================================================
+// kvi_socket_getsockname
+//
+// Standard getsockname() call. Returns false in case of failure.
+// You should check kvi_socket_errno() then.
+//
+
+inline bool kvi_socket_getsockname(kvi_socket_t sock,struct sockaddr * addr,int * addrlen)
+{
+#ifdef COMPILE_ON_WINDOWS
+ return (::getsockname(sock,addr,addrlen) == 0);
+#else
+ return (::getsockname(sock,addr,(socklen_t *)addrlen) == 0);
+#endif
+}
+
+inline int kvi_socket_error()
+{
+#ifdef COMPILE_ON_WINDOWS
+ return WSAGetLastError();
+#else
+ return errno;
+#endif
+}
+
+
+#endif //_KVI_SOCKET_H_
diff --git a/src/kvilib/net/kvi_sockettype.h b/src/kvilib/net/kvi_sockettype.h
new file mode 100644
index 00000000..c8a45743
--- /dev/null
+++ b/src/kvilib/net/kvi_sockettype.h
@@ -0,0 +1,45 @@
+#ifndef _KVI_SOCKETTYPE_H_
+#define _KVI_SOCKETTYPE_H_
+//=============================================================================
+//
+// File : kvi_sockettype.h
+// Creation date : Thu Sep 20 05:41:46 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+//=============================================================================
+// Socket stuff abstraction layer
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_ON_WINDOWS
+
+ #include <winsock2.h>
+
+ typedef SOCKET kvi_socket_t;
+
+#else
+
+ typedef int kvi_socket_t;
+
+#endif
+
+#endif //_KVI_SOCKETTYPE_H_
diff --git a/src/kvilib/net/kvi_ssl.cpp b/src/kvilib/net/kvi_ssl.cpp
new file mode 100644
index 00000000..6748e062
--- /dev/null
+++ b/src/kvilib/net/kvi_ssl.cpp
@@ -0,0 +1,687 @@
+//=============================================================================
+//
+// File : kvi_ssl.cpp
+// Creation date : Mon May 27 2002 21:36:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+
+#include "kvi_ssl.h"
+#include "kvi_locale.h"
+
+#ifdef COMPILE_SSL_SUPPORT
+
+#include "kvi_thread.h"
+#include "kvi_memmove.h"
+#include "kvi_malloc.h"
+
+#include <openssl/asn1.h>
+#include <openssl/err.h>
+#include <openssl/dh.h>
+
+#include <stdio.h>
+
+static bool g_bSSLInitialized = false;
+static KviMutex * g_pSSLMutex = 0;
+
+
+static inline void my_ssl_lock()
+{
+ g_pSSLMutex->lock();
+}
+
+static inline void my_ssl_unlock()
+{
+ g_pSSLMutex->unlock();
+}
+
+
+// THIS PART OF OpenSSL SUCKS
+
+static DH * dh_512 = 0;
+static DH * dh_1024 = 0;
+static DH * dh_2048 = 0;
+static DH * dh_4096 = 0;
+
+static unsigned char dh512_p[]={
+ 0x90,0x86,0xDD,0x06,0xE8,0x0F,0x10,0x86,0xF0,0x91,0xC5,0x55,
+ 0x4D,0x6B,0xAF,0x69,0x4F,0x01,0xED,0xF9,0x57,0x8F,0x3B,0xB8,
+ 0x9C,0x87,0xAE,0x85,0xC1,0xBF,0x57,0xA5,0xD5,0xBA,0x81,0x24,
+ 0xE7,0x99,0xE3,0xF6,0xCD,0xB4,0x41,0xB7,0x7F,0x6E,0x7B,0xB1,
+ 0xD2,0xF3,0xE9,0x0F,0xB9,0x0E,0x4D,0xEB,0x9D,0xD4,0xA9,0xE5,
+ 0x03,0x67,0xA7,0x27
+};
+static unsigned char dh512_g[]={ 0x05 };
+
+static unsigned char dh1024_p[]={
+ 0xA5,0x4C,0xB9,0xB9,0xC4,0x35,0x88,0x68,0x9B,0x79,0x48,0x6C,
+ 0x21,0xA7,0x8E,0xE2,0x9C,0xAF,0x2F,0x04,0xBF,0x45,0xBC,0xF5,
+ 0xAB,0x35,0x86,0xC8,0xBB,0x9B,0x75,0x18,0x7C,0x9B,0xAB,0xE8,
+ 0x52,0x7F,0x57,0x3E,0xD8,0x65,0x7D,0x2B,0xE1,0x6D,0x3D,0xA5,
+ 0x32,0xE8,0xA0,0x2B,0x7A,0x58,0x6B,0x47,0x16,0x4E,0xB1,0xFC,
+ 0x09,0xB7,0x7C,0xC6,0xE9,0x6E,0xC7,0xC7,0xA1,0x42,0x0F,0x4B,
+ 0x43,0xFB,0x58,0xBA,0xC7,0x66,0xD6,0xCA,0x6B,0xC7,0x45,0x7C,
+ 0x99,0xE4,0x46,0x02,0x93,0x3F,0x28,0xD2,0xCE,0x0C,0x8A,0xDD,
+ 0x6A,0x22,0x2E,0xA9,0x9A,0xCA,0x16,0x48,0x4E,0x67,0x4C,0xE9,
+ 0xC8,0x54,0xCD,0x18,0xC9,0xF3,0x30,0x3A,0x74,0xAB,0xF9,0xAF,
+ 0xE4,0xA4,0x0D,0x56,0x62,0x28,0x07,0xBF
+};
+static unsigned char dh1024_g[]={ 0x05 };
+
+static unsigned char dh2048_p[]={
+ 0xBF,0x67,0x7B,0x79,0xA5,0x22,0xD3,0xB5,0x0C,0x13,0xE6,0x92,
+ 0x54,0xFD,0x64,0xBF,0x57,0x25,0xBD,0x02,0x7C,0xFD,0x72,0x97,
+ 0x82,0xA4,0xA6,0x0A,0xB9,0xE6,0x4B,0xFA,0xBD,0xFA,0x71,0x8A,
+ 0x2E,0x36,0xF9,0x03,0x58,0x1B,0xB6,0x3A,0xFD,0x15,0xCC,0x87,
+ 0x5D,0x04,0xF7,0x45,0xE0,0xE2,0x34,0x7F,0x54,0x5F,0x5D,0x14,
+ 0xD3,0xCA,0x3E,0xFD,0x2A,0x92,0x10,0x89,0xA0,0xB0,0xB4,0xE5,
+ 0x80,0x05,0x13,0xBE,0xA3,0xD0,0x42,0x4B,0x98,0x44,0x54,0xB3,
+ 0xE0,0x23,0x26,0xF5,0x6B,0x0E,0x4D,0x2A,0x81,0xB2,0x8A,0x06,
+ 0xC8,0x00,0x9E,0xAB,0x1B,0x77,0xDC,0x87,0x9C,0x6C,0xD5,0xEE,
+ 0xB4,0xB4,0xDD,0xDA,0x3F,0x40,0xA3,0xFA,0xC1,0x1E,0xC0,0xA2,
+ 0x9E,0xB8,0xAC,0x31,0xE8,0x12,0x93,0x9C,0x71,0xF6,0xE7,0xF0,
+ 0x65,0x7F,0xA5,0x20,0xF7,0x49,0x3D,0xD6,0xF9,0xD3,0xF0,0x3F,
+ 0xB3,0xF0,0xD0,0x23,0x22,0x82,0xA5,0xDD,0xFB,0xD9,0x9C,0x7D,
+ 0xE7,0xA0,0x78,0xE8,0xF9,0x02,0x0C,0x2F,0x1D,0x52,0xC7,0x61,
+ 0xED,0xA0,0xC9,0x06,0x14,0xDF,0xE7,0xB1,0x1E,0x50,0x98,0x4F,
+ 0x10,0xB9,0x87,0x4C,0x1C,0x9C,0xB3,0xD2,0x98,0x23,0x7C,0x47,
+ 0xD2,0x3C,0xC5,0x29,0x65,0xC5,0x67,0x4E,0xC0,0x76,0x0F,0x43,
+ 0x27,0x28,0x89,0x69,0x30,0x7D,0x04,0xFD,0xF7,0x89,0xE5,0xD6,
+ 0xE6,0x97,0x7D,0xBB,0x54,0x5F,0xB7,0x94,0x1D,0xBC,0x82,0xAB,
+ 0x9A,0xF5,0x0A,0x0C,0x89,0x68,0xE7,0x0A,0x8C,0x2D,0x0D,0x82,
+ 0x44,0xA7,0xB8,0xF9,0x0B,0x8E,0xCB,0xA4,0x6A,0xA7,0xEC,0x5F,
+ 0x0A,0xF8,0x5F,0xE7
+};
+static unsigned char dh2048_g[]={ 0x05 };
+
+static unsigned char dh4096_p[]={
+ 0xFA,0x14,0x72,0x52,0xC1,0x4D,0xE1,0x5A,0x49,0xD4,0xEF,0x09,
+ 0x2D,0xC0,0xA8,0xFD,0x55,0xAB,0xD7,0xD9,0x37,0x04,0x28,0x09,
+ 0xE2,0xE9,0x3E,0x77,0xE2,0xA1,0x7A,0x18,0xDD,0x46,0xA3,0x43,
+ 0x37,0x23,0x90,0x97,0xF3,0x0E,0xC9,0x03,0x50,0x7D,0x65,0xCF,
+ 0x78,0x62,0xA6,0x3A,0x62,0x22,0x83,0xA1,0x2F,0xFE,0x79,0xBA,
+ 0x35,0xFF,0x59,0xD8,0x1D,0x61,0xDD,0x1E,0x21,0x13,0x17,0xFE,
+ 0xCD,0x38,0x87,0x9E,0xF5,0x4F,0x79,0x10,0x61,0x8D,0xD4,0x22,
+ 0xF3,0x5A,0xED,0x5D,0xEA,0x21,0xE9,0x33,0x6B,0x48,0x12,0x0A,
+ 0x20,0x77,0xD4,0x25,0x60,0x61,0xDE,0xF6,0xB4,0x4F,0x1C,0x63,
+ 0x40,0x8B,0x3A,0x21,0x93,0x8B,0x79,0x53,0x51,0x2C,0xCA,0xB3,
+ 0x7B,0x29,0x56,0xA8,0xC7,0xF8,0xF4,0x7B,0x08,0x5E,0xA6,0xDC,
+ 0xA2,0x45,0x12,0x56,0xDD,0x41,0x92,0xF2,0xDD,0x5B,0x8F,0x23,
+ 0xF0,0xF3,0xEF,0xE4,0x3B,0x0A,0x44,0xDD,0xED,0x96,0x84,0xF1,
+ 0xA8,0x32,0x46,0xA3,0xDB,0x4A,0xBE,0x3D,0x45,0xBA,0x4E,0xF8,
+ 0x03,0xE5,0xDD,0x6B,0x59,0x0D,0x84,0x1E,0xCA,0x16,0x5A,0x8C,
+ 0xC8,0xDF,0x7C,0x54,0x44,0xC4,0x27,0xA7,0x3B,0x2A,0x97,0xCE,
+ 0xA3,0x7D,0x26,0x9C,0xAD,0xF4,0xC2,0xAC,0x37,0x4B,0xC3,0xAD,
+ 0x68,0x84,0x7F,0x99,0xA6,0x17,0xEF,0x6B,0x46,0x3A,0x7A,0x36,
+ 0x7A,0x11,0x43,0x92,0xAD,0xE9,0x9C,0xFB,0x44,0x6C,0x3D,0x82,
+ 0x49,0xCC,0x5C,0x6A,0x52,0x42,0xF8,0x42,0xFB,0x44,0xF9,0x39,
+ 0x73,0xFB,0x60,0x79,0x3B,0xC2,0x9E,0x0B,0xDC,0xD4,0xA6,0x67,
+ 0xF7,0x66,0x3F,0xFC,0x42,0x3B,0x1B,0xDB,0x4F,0x66,0xDC,0xA5,
+ 0x8F,0x66,0xF9,0xEA,0xC1,0xED,0x31,0xFB,0x48,0xA1,0x82,0x7D,
+ 0xF8,0xE0,0xCC,0xB1,0xC7,0x03,0xE4,0xF8,0xB3,0xFE,0xB7,0xA3,
+ 0x13,0x73,0xA6,0x7B,0xC1,0x0E,0x39,0xC7,0x94,0x48,0x26,0x00,
+ 0x85,0x79,0xFC,0x6F,0x7A,0xAF,0xC5,0x52,0x35,0x75,0xD7,0x75,
+ 0xA4,0x40,0xFA,0x14,0x74,0x61,0x16,0xF2,0xEB,0x67,0x11,0x6F,
+ 0x04,0x43,0x3D,0x11,0x14,0x4C,0xA7,0x94,0x2A,0x39,0xA1,0xC9,
+ 0x90,0xCF,0x83,0xC6,0xFF,0x02,0x8F,0xA3,0x2A,0xAC,0x26,0xDF,
+ 0x0B,0x8B,0xBE,0x64,0x4A,0xF1,0xA1,0xDC,0xEE,0xBA,0xC8,0x03,
+ 0x82,0xF6,0x62,0x2C,0x5D,0xB6,0xBB,0x13,0x19,0x6E,0x86,0xC5,
+ 0x5B,0x2B,0x5E,0x3A,0xF3,0xB3,0x28,0x6B,0x70,0x71,0x3A,0x8E,
+ 0xFF,0x5C,0x15,0xE6,0x02,0xA4,0xCE,0xED,0x59,0x56,0xCC,0x15,
+ 0x51,0x07,0x79,0x1A,0x0F,0x25,0x26,0x27,0x30,0xA9,0x15,0xB2,
+ 0xC8,0xD4,0x5C,0xCC,0x30,0xE8,0x1B,0xD8,0xD5,0x0F,0x19,0xA8,
+ 0x80,0xA4,0xC7,0x01,0xAA,0x8B,0xBA,0x53,0xBB,0x47,0xC2,0x1F,
+ 0x6B,0x54,0xB0,0x17,0x60,0xED,0x79,0x21,0x95,0xB6,0x05,0x84,
+ 0x37,0xC8,0x03,0xA4,0xDD,0xD1,0x06,0x69,0x8F,0x4C,0x39,0xE0,
+ 0xC8,0x5D,0x83,0x1D,0xBE,0x6A,0x9A,0x99,0xF3,0x9F,0x0B,0x45,
+ 0x29,0xD4,0xCB,0x29,0x66,0xEE,0x1E,0x7E,0x3D,0xD7,0x13,0x4E,
+ 0xDB,0x90,0x90,0x58,0xCB,0x5E,0x9B,0xCD,0x2E,0x2B,0x0F,0xA9,
+ 0x4E,0x78,0xAC,0x05,0x11,0x7F,0xE3,0x9E,0x27,0xD4,0x99,0xE1,
+ 0xB9,0xBD,0x78,0xE1,0x84,0x41,0xA0,0xDF
+};
+static unsigned char dh4096_g[]={ 0x02 };
+
+static DH * my_get_dh(int keylength)
+{
+ DH * dh = 0;
+ unsigned char * p = 0;
+ unsigned char * g = 0;
+ int sp = 0;
+ int sg = 0;
+ switch(keylength)
+ {
+ case 512:
+ dh = dh_512;
+ p = dh512_p;
+ g = dh512_g;
+ sp = sizeof(dh512_p);
+ sg = sizeof(dh512_g);
+ break;
+ case 1024:
+ dh = dh_1024;
+ p = dh1024_p;
+ g = dh1024_g;
+ sp = sizeof(dh1024_p);
+ sg = sizeof(dh1024_g);
+ break;
+ case 2048:
+ dh = dh_2048;
+ p = dh2048_p;
+ g = dh2048_g;
+ sp = sizeof(dh2048_p);
+ sg = sizeof(dh2048_g);
+ break;
+ case 4096:
+ dh = dh_4096;
+ p = dh4096_p;
+ g = dh4096_g;
+ sp = sizeof(dh4096_p);
+ sg = sizeof(dh4096_g);
+ break;
+ default:
+ // What the hell do you want from me ?
+ debug("OpenSSL is asking for a DH param with keylen %d: no way :D",keylength);
+ break;
+
+ }
+
+ if(dh)return dh;
+ dh = DH_new();
+ if(!dh)return 0;
+ dh->p=BN_bin2bn(p,sp,0);
+ dh->g=BN_bin2bn(g,sg,0);
+ if((dh->p == 0) || (dh->g == 0))
+ {
+ DH_free(dh);
+ return 0;
+ }
+ return dh;
+}
+
+DH * my_ugly_dh_callback(SSL *s, int is_export, int keylength)
+{
+ my_ssl_lock();
+ DH *dh = my_get_dh(keylength);
+ my_ssl_unlock();
+ return dh;
+}
+
+void KviSSL::globalInit()
+{
+ if(g_pSSLMutex)return;
+ g_pSSLMutex = new KviMutex();
+}
+
+void KviSSL::globalDestroy()
+{
+ if(!g_pSSLMutex)return;
+ if(dh_512)DH_free(dh_512);
+ if(dh_1024)DH_free(dh_1024);
+ if(dh_2048)DH_free(dh_2048);
+ if(dh_4096)DH_free(dh_4096);
+ delete g_pSSLMutex;
+ g_pSSLMutex = 0;
+}
+
+KviSSL::KviSSL()
+{
+ my_ssl_lock();
+ if(!g_bSSLInitialized)
+ {
+ // FIXME: this should be done only if SSL is really needed
+ SSL_library_init();
+ SSL_load_error_strings();
+ g_bSSLInitialized = true;
+ }
+ my_ssl_unlock();
+ m_pSSL = 0;
+ m_pSSLCtx = 0;
+}
+
+KviSSL::~KviSSL()
+{
+ shutdown();
+}
+
+#ifdef COMPILE_ON_WINDOWS
+
+ // On windows we need to override new and delete operators
+ // to ensure that always the right new/delete pair is called for an object instance
+ // This bug is present in all the classes exported by a module that
+ // can be instantiated/destroyed from external modules.
+ // (this is a well known bug described in Q122675 of MSDN)
+
+ void * KviSSL::operator new(size_t tSize)
+ {
+ return kvi_malloc(tSize);
+ }
+
+ void KviSSL::operator delete(void * p)
+ {
+ kvi_free(p);
+ }
+
+#endif
+
+void KviSSL::shutdown()
+{
+ if(m_pSSL)
+ {
+ // At least attempt to shutdown the connection gracefully
+ SSL_shutdown(m_pSSL);
+ SSL_free(m_pSSL);
+ m_pSSL = 0;
+ }
+ if(m_pSSLCtx)
+ {
+ SSL_CTX_free(m_pSSLCtx);
+ m_pSSLCtx = 0;
+ }
+}
+
+
+bool KviSSL::initContext(Method m)
+{
+ if(m_pSSL)return false;
+ m_pSSLCtx = SSL_CTX_new(m == Client ? SSLv23_client_method() : SSLv23_server_method());
+ if(!m_pSSLCtx)return false;
+ // FIXME: this should be configurable ?
+ SSL_CTX_set_cipher_list(m_pSSLCtx,"ALL:eNULL");
+ SSL_CTX_set_tmp_dh_callback(m_pSSLCtx,my_ugly_dh_callback);
+ return true;
+}
+
+bool KviSSL::initSocket(kvi_socket_t fd)
+{
+ if(!m_pSSLCtx)return false;
+ m_pSSL = SSL_new(m_pSSLCtx);
+ if(!m_pSSL)return false;
+ if(!SSL_set_fd(m_pSSL,fd))return false;
+ return true;
+
+}
+
+static int cb(char *buf, int size, int rwflag, void *u)
+{
+ KviStr * p = (KviStr *)u;
+ int len = p->len();
+ if(len >= size)return 0;
+ kvi_memmove(buf,p->ptr(),len + 1);
+// debug("PASS REQYESTED: %s",p->ptr());
+ return len;
+}
+
+KviSSL::Result KviSSL::useCertificateFile(const char * cert,const char * pass)
+{
+ if(!m_pSSLCtx)return NotInitialized;
+ m_szPass = pass;
+ if(m_szPass.len() < 4)m_szPass.append("xxxx");
+ X509 * x509 = 0;
+
+ FILE * f = fopen(cert,"r");
+ if(!f)return FileIoError;
+
+// debug("READING CERTIFICATE %s",cert);
+ if(PEM_read_X509(f,&x509,cb,&m_szPass))
+ {
+ if(!SSL_CTX_use_certificate(m_pSSLCtx,x509))
+ {
+ X509_free(x509);
+ return SSLError;
+ }
+ }
+
+ fclose(f);
+ return Success;
+}
+
+
+KviSSL::Result KviSSL::usePrivateKeyFile(const char * key,const char * pass)
+{
+ if(!m_pSSLCtx)return NotInitialized;
+ m_szPass = pass;
+ if(m_szPass.len() < 4)m_szPass.append("xxxx");
+
+ EVP_PKEY * k = 0;
+
+ FILE * f = fopen(key,"r");
+ if(!f)return FileIoError;
+
+// debug("READING KEY %s",key);
+ if(PEM_read_PrivateKey(f,&k,cb,&m_szPass))
+ {
+ if(!SSL_CTX_use_PrivateKey(m_pSSLCtx,k))
+ {
+ EVP_PKEY_free(k);
+ return SSLError;
+ }
+ }
+
+ fclose(f);
+ return Success;
+}
+
+unsigned long KviSSL::getLastError(bool bPeek)
+{
+ return bPeek ? ERR_peek_error() : ERR_get_error();
+}
+
+bool KviSSL::getLastErrorString(KviStr &buffer,bool bPeek)
+{
+ unsigned long uErr = getLastError(bPeek);
+ if(uErr != 0)
+ {
+ const char * err = ERR_reason_error_string(uErr);
+ buffer = err ? err : "Unknown error";
+ return true;
+ }
+ return false;
+}
+
+KviSSL::Result KviSSL::connect()
+{
+ if(!m_pSSL)return NotInitialized;
+ int ret = SSL_connect(m_pSSL);
+ return connectOrAcceptError(ret);
+}
+
+KviSSL::Result KviSSL::accept()
+{
+ if(!m_pSSL)return NotInitialized;
+ int ret = SSL_accept(m_pSSL);
+ return connectOrAcceptError(ret);
+}
+
+KviSSL::Result KviSSL::connectOrAcceptError(int ret)
+{
+ switch(SSL_get_error(m_pSSL,ret))
+ {
+ case SSL_ERROR_NONE: return Success; break;
+ case SSL_ERROR_WANT_READ: return WantRead; break;
+ case SSL_ERROR_WANT_WRITE: return WantWrite; break;
+ case SSL_ERROR_ZERO_RETURN: return RemoteEndClosedConnection; break;
+ case SSL_ERROR_WANT_X509_LOOKUP: return ObscureError; break;
+ case SSL_ERROR_SYSCALL:
+ {
+ if(getLastError(true) != 0)return SSLError;
+ if(ret == 0)return RemoteEndClosedConnection;
+ return SyscallError;
+ }
+ break;
+ case SSL_ERROR_SSL: return SSLError; break;
+ default: return UnknownError; break;
+ }
+ return UnknownError;
+}
+
+int KviSSL::read(char * buffer,int len)
+{
+// if(!m_pSSL)return -1;
+ return SSL_read(m_pSSL,buffer,len);
+}
+int KviSSL::write(const char * buffer,int len)
+{
+// if(!m_pSSL)return -1;
+ return SSL_write(m_pSSL,buffer,len);
+}
+
+KviSSL::Result KviSSL::getProtocolError(int ret)
+{
+ if(!m_pSSL)return NotInitialized;
+ switch(SSL_get_error(m_pSSL,ret))
+ {
+ case SSL_ERROR_NONE: return Success; break;
+ case SSL_ERROR_WANT_READ: return WantRead; break;
+ case SSL_ERROR_WANT_WRITE: return WantWrite; break;
+ case SSL_ERROR_ZERO_RETURN: return ZeroReturn; break;
+ case SSL_ERROR_WANT_X509_LOOKUP: return ObscureError; break;
+ case SSL_ERROR_SYSCALL: return SyscallError; break;
+ case SSL_ERROR_SSL: return SSLError; break;
+ default: return UnknownError; break;
+ }
+ return UnknownError;
+}
+
+KviSSLCertificate * KviSSL::getPeerCertificate()
+{
+ if(!m_pSSL)return 0;
+ X509 * x509 = SSL_get_peer_certificate(m_pSSL);
+ if(!x509)return 0;
+ return new KviSSLCertificate(x509);
+}
+
+KviSSLCipherInfo * KviSSL::getCurrentCipherInfo()
+{
+ if(!m_pSSL)return 0;
+ SSL_CIPHER * c = SSL_get_current_cipher(m_pSSL);
+ if(!c)return 0;
+ return new KviSSLCipherInfo(c);
+}
+
+
+
+KviSSLCertificate::KviSSLCertificate(X509 * x509)
+{
+ m_pSubject = new KviPointerHashTable<const char *,KviStr>(17);
+ m_pSubject->setAutoDelete(true);
+ m_pIssuer = new KviPointerHashTable<const char *,KviStr>(17);
+ m_pIssuer->setAutoDelete(true);
+ m_pX509 = 0;
+ setX509(x509);
+}
+
+KviSSLCertificate::~KviSSLCertificate()
+{
+ X509_free(m_pX509);
+ delete m_pSubject;
+ delete m_pIssuer;
+}
+
+#ifdef COMPILE_ON_WINDOWS
+
+ // On windows we need to override new and delete operators
+ // to ensure that always the right new/delete pair is called for an object instance
+ // This bug is present in all the classes exported by a module that
+ // can be instantiated/destroyed from external modules.
+ // (this is a well known bug described in Q122675 of MSDN)
+
+ void * KviSSLCertificate::operator new(size_t tSize)
+ {
+ return kvi_malloc(tSize);
+ }
+
+ void KviSSLCertificate::operator delete(void * p)
+ {
+ kvi_free(p);
+ }
+
+#endif
+
+void KviSSLCertificate::setX509(X509 * x509)
+{
+ if(m_pX509)X509_free(m_pX509);
+ m_pX509 = x509;
+ m_iVersion = X509_get_version(x509);
+ extractSubject();
+ extractIssuer();
+ extractPubKeyInfo();
+ extractSerialNumber();
+ extractSignature();
+}
+
+void KviSSLCertificate::extractSubject()
+{
+ char buffer[1024];
+ char * t = X509_NAME_oneline(X509_get_subject_name(m_pX509),buffer,1024);
+ if (!t)return;
+ m_pSubject->clear();
+ splitX509String(m_pSubject,t);
+}
+
+void KviSSLCertificate::extractIssuer()
+{
+ char buffer[1024];
+ char * t = X509_NAME_oneline(X509_get_issuer_name(m_pX509),buffer,1024);
+ if (!t)return;
+ m_pIssuer->clear();
+ splitX509String(m_pIssuer,t);
+}
+
+void KviSSLCertificate::splitX509String(KviPointerHashTable<const char *,KviStr> * dict,const char * t)
+{
+ KviStr buf = t;
+ int cnt;
+ KviStr ** arr = buf.splitToArray('/',50,&cnt);
+ if(arr)
+ {
+ if(cnt > 0)
+ {
+ for(int i=0;i<cnt;i++)
+ {
+ int idx = arr[i]->findFirstIdx('=');
+ if(idx != -1)
+ {
+ KviStr szTok = arr[i]->left(idx);
+ arr[i]->cutLeft(idx + 1);
+ if(szTok.hasData() && arr[i]->hasData())
+ {
+ dict->replace(szTok.ptr(),new KviStr(arr[i]->ptr()));
+ }
+ }
+ }
+ }
+
+ KviStr::freeArray(arr);
+ }
+}
+
+
+const char * KviSSLCertificate::dictEntry(KviPointerHashTable<const char *,KviStr> * dict,const char * entry)
+{
+ KviStr * t = dict->find(entry);
+ if(!t)return __tr("Unknown");
+ return t->ptr();
+}
+
+
+/*
+void KviSSLCertificate::getPKeyType(int type,KviStr &buffer)
+{
+ switch(type)
+ {
+#ifndef NO_RSA
+ case EVP_PKEY_RSA: buffer = "RSA"; break;
+#endif
+#ifndef NO_DSA
+ case EVP_PKEY_DSA: buffer = "DSA"; break;
+#endif
+#ifndef NO_DH
+ case EVP_PKEY_DH: buffer = "DH"; break;
+#endif
+ case EVP_PKEY_NONE: buffer = "NONE"; break;
+ }
+}
+*/
+
+void KviSSLCertificate::extractPubKeyInfo()
+{
+ EVP_PKEY *p = X509_get_pubkey(m_pX509);
+ if(p)
+ {
+ m_iPubKeyBits = EVP_PKEY_bits(p);
+ m_szPubKeyType = (p->type == NID_undef) ? __tr("Unknown") : OBJ_nid2ln(p->type);
+// getPKeyType(p->type,m_szPubKeyType);
+ } else {
+ m_iPubKeyBits = 0;
+ m_szPubKeyType = "None";
+ }
+
+}
+
+void KviSSLCertificate::extractSerialNumber()
+{
+ ASN1_INTEGER * i = X509_get_serialNumber(m_pX509);
+ if(i)m_iSerialNumber = ASN1_INTEGER_get(i);
+ else m_iSerialNumber = -1;
+}
+
+void KviSSLCertificate::extractSignature()
+{
+ static char hexdigits[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
+
+ //getPKeyType(X509_get_signature_type(m_pX509),m_szSignatureType);
+
+ int i = OBJ_obj2nid(m_pX509->sig_alg->algorithm);
+ m_szSignatureType = (i == NID_undef) ? __tr("Unknown") : OBJ_nid2ln(i);
+
+ m_szSignatureContents = "";
+
+ for(i = 0;i < m_pX509->signature->length;i++)
+ {
+ if(m_szSignatureContents.hasData())m_szSignatureContents.append(":");
+ m_szSignatureContents.append(hexdigits[(m_pX509->signature->data[i] & 0xf0) >> 4]);
+ m_szSignatureContents.append(hexdigits[(m_pX509->signature->data[i] & 0x0f)]);
+ }
+}
+
+/*
+const char * KviSSLCertificate::verify()
+{
+
+}
+*/
+
+
+KviSSLCipherInfo::KviSSLCipherInfo(SSL_CIPHER * c)
+{
+ m_szVersion = SSL_CIPHER_get_version(c);
+ m_iNumBitsUsed = SSL_CIPHER_get_bits(c,&m_iNumBits);
+ m_szName = SSL_CIPHER_get_name(c);
+ char buf[1024];
+ m_szDescription = SSL_CIPHER_description(c,buf,1024);
+}
+
+KviSSLCipherInfo::~KviSSLCipherInfo()
+{
+}
+
+#ifdef COMPILE_ON_WINDOWS
+
+ // On windows we need to override new and delete operators
+ // to ensure that always the right new/delete pair is called for an object instance
+ // This bug is present in all the classes exported by a module that
+ // can be instantiated/destroyed from external modules.
+ // (this is a well known bug described in Q122675 of MSDN)
+
+ void * KviSSLCipherInfo::operator new(size_t tSize)
+ {
+ return kvi_malloc(tSize);
+ }
+
+ void KviSSLCipherInfo::operator delete(void * p)
+ {
+ kvi_free(p);
+ }
+
+#endif
+
+#endif //COMPILE_SSL_SUPPORT
diff --git a/src/kvilib/net/kvi_ssl.h b/src/kvilib/net/kvi_ssl.h
new file mode 100644
index 00000000..5547ecbb
--- /dev/null
+++ b/src/kvilib/net/kvi_ssl.h
@@ -0,0 +1,180 @@
+#ifndef _KVI_SSL_H_
+#define _KVI_SSL_H_
+//
+// File : kvi_ssl.h
+// Creation date : Mon May 27 2002 21:36:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_SSL_SUPPORT
+
+#include "kvi_string.h"
+#include "kvi_sockettype.h"
+
+#include "kvi_pointerhashtable.h"
+
+#include <openssl/ssl.h>
+
+
+class KVILIB_API KviSSLCertificate
+{
+public:
+ KviSSLCertificate(X509 * x509);
+ ~KviSSLCertificate();
+protected:
+ X509 * m_pX509;
+ KviPointerHashTable<const char *,KviStr> * m_pSubject;
+ KviPointerHashTable<const char *,KviStr> * m_pIssuer;
+ int m_iPubKeyBits;
+ KviStr m_szPubKeyType;
+ int m_iSerialNumber;
+ int m_iVersion;
+ KviStr m_szSignatureType;
+ KviStr m_szSignatureContents;
+private:
+ void extractSubject();
+ void extractIssuer();
+ void extractPubKeyInfo();
+ void extractSerialNumber();
+ void extractSignature();
+ const char * dictEntry(KviPointerHashTable<const char *,KviStr> * dict,const char * entry);
+ void splitX509String(KviPointerHashTable<const char *,KviStr> * dict,const char * t);
+// void getPKeyType(int type,KviStr &buffer);
+public:
+ void setX509(X509 * x509);
+
+ const char * signatureType(){ return m_szSignatureType.ptr(); };
+ const char * signatureContents(){ return m_szSignatureContents.ptr(); };
+
+ const char * subjectCountry(){ return dictEntry(m_pSubject,"C"); };
+ const char * subjectStateOrProvince(){ return dictEntry(m_pSubject,"ST"); };
+ const char * subjectLocality(){ return dictEntry(m_pSubject,"L"); };
+ const char * subjectOrganization(){ return dictEntry(m_pSubject,"O"); };
+ const char * subjectOrganizationalUnit(){ return dictEntry(m_pSubject,"OU"); };
+ const char * subjectCommonName(){ return dictEntry(m_pSubject,"CN"); };
+
+ const char * issuerCountry(){ return dictEntry(m_pIssuer,"C"); };
+ const char * issuerStateOrProvince(){ return dictEntry(m_pIssuer,"ST"); };
+ const char * issuerLocality(){ return dictEntry(m_pIssuer,"L"); };
+ const char * issuerOrganization(){ return dictEntry(m_pIssuer,"O"); };
+ const char * issuerOrganizationalUnit(){ return dictEntry(m_pIssuer,"OU"); };
+ const char * issuerCommonName(){ return dictEntry(m_pIssuer,"CN"); };
+
+ int publicKeyBits(){ return m_iPubKeyBits; };
+ const char * publicKeyType(){ return m_szPubKeyType.ptr(); };
+
+ int serialNumber(){ return m_iSerialNumber; };
+
+ int version(){ return m_iVersion; };
+#ifdef COMPILE_ON_WINDOWS
+ // On windows we need to override new and delete operators
+ // to ensure that always the right new/delete pair is called for an object instance
+ // This bug is present in all the classes exported by a module that
+ // can be instantiated/destroyed from external modules.
+ // (this is a well known bug described in Q122675 of MSDN)
+ void * operator new(size_t tSize);
+ void operator delete(void * p);
+#endif
+};
+
+class KVILIB_API KviSSLCipherInfo
+{
+public:
+ KviSSLCipherInfo(SSL_CIPHER * c);
+ ~KviSSLCipherInfo();
+protected:
+ KviStr m_szVersion;
+ int m_iNumBits;
+ int m_iNumBitsUsed;
+ KviStr m_szName;
+ KviStr m_szDescription;
+public:
+ const char * name(){ return m_szName.ptr(); };
+ const char * description(){ return m_szDescription.ptr(); };
+ int bits(){ return m_iNumBits; };
+ int bitsUsed(){ return m_iNumBitsUsed; };
+ const char * version(){ return m_szVersion.ptr(); };
+#ifdef COMPILE_ON_WINDOWS
+ // On windows we need to override new and delete operators
+ // to ensure that always the right new/delete pair is called for an object instance
+ // This bug is present in all the classes exported by a module that
+ // can be instantiated/destroyed from external modules.
+ // (this is a well known bug described in Q122675 of MSDN)
+ void * operator new(size_t tSize);
+ void operator delete(void * p);
+#endif
+};
+
+#ifdef Success
+ #undef Success
+#endif
+
+
+class KVILIB_API KviSSL
+{
+public:
+ enum Method { Client , Server };
+ enum Result { Success , NotInitialized , WantRead , WantWrite , ZeroReturn , FileIoError ,
+ UnknownError , ObscureError , SSLError , SyscallError , RemoteEndClosedConnection };
+public:
+ KviSSL();
+ ~KviSSL();
+public:
+ SSL * m_pSSL;
+ SSL_CTX * m_pSSLCtx;
+ KviStr m_szPass;
+public:
+ static void globalInit();
+ static void globalDestroy();
+public:
+ bool initSocket(kvi_socket_t fd);
+ bool initContext(KviSSL::Method m);
+ void shutdown();
+ KviSSL::Result connect();
+ KviSSL::Result accept();
+ int read(char * buffer,int len);
+ int write(const char * buffer,int len);
+ // SSL ERRORS
+ unsigned long getLastError(bool bPeek = false);
+ bool getLastErrorString(KviStr &buffer,bool bPeek = false);
+ // Protocol error
+ KviSSL::Result getProtocolError(int ret);
+ KviSSLCertificate * getPeerCertificate();
+ KviSSLCipherInfo * getCurrentCipherInfo();
+ KviSSL::Result useCertificateFile(const char * cert,const char * pass);
+ KviSSL::Result usePrivateKeyFile(const char * key,const char * pass);
+#ifdef COMPILE_ON_WINDOWS
+ // On windows we need to override new and delete operators
+ // to ensure that always the right new/delete pair is called for an object instance
+ // This bug is present in all the classes exported by a module that
+ // can be instantiated/destroyed from external modules.
+ // (this is a well known bug described in Q122675 of MSDN)
+ void * operator new(size_t tSize);
+ void operator delete(void * p);
+#endif
+private:
+ KviSSL::Result connectOrAcceptError(int ret);
+};
+
+
+#endif //COMPILE_SSL_SUPPORT
+
+#endif //_KVI_SSL_H_
diff --git a/src/kvilib/net/kvi_url.cpp b/src/kvilib/net/kvi_url.cpp
new file mode 100644
index 00000000..f980729c
--- /dev/null
+++ b/src/kvilib/net/kvi_url.cpp
@@ -0,0 +1,164 @@
+//
+// File : kvi_url.cpp
+// Creation date : Sat Aug 17 14:09:18 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#define __KVILIB__
+
+
+#include "kvi_url.h"
+
+KviUrl::KviUrl()
+{
+}
+
+KviUrl::KviUrl(const KviUrl & u)
+{
+ *this = u;
+}
+
+KviUrl::KviUrl(const char * szUrl)
+{
+ m_szUrl = szUrl;
+ parse();
+}
+
+KviUrl::KviUrl(const QString &szUrl)
+{
+ m_szUrl = szUrl;
+ parse();
+}
+
+KviUrl::~KviUrl()
+{
+
+}
+
+void KviUrl::parse()
+{
+ m_szProtocol = "";
+ m_szHost = "";
+ m_szPath = "";
+ m_szUser = "";
+ m_szPass = "";
+
+ m_szUrl.stripWhiteSpace();
+
+ KviStr u = m_szUrl;
+
+ // proto
+
+ kvi_u32_t uDefaultPort = 80;
+
+ int i = u.findFirstIdx(":/");
+ if(i != -1)
+ {
+ // there is a protocol path
+ m_szProtocol = u.left(i);
+ u.cutLeft(i + 2);
+ u.stripLeft('/');
+ u.stripWhiteSpace();
+
+ // fix the default ports
+ if(kvi_strEqualCI(m_szProtocol,"https"))uDefaultPort = 443;
+ else if(kvi_strEqualCI(m_szProtocol,"ftp"))uDefaultPort = 21;
+ } else {
+ // no proto... assume http
+ u.stripLeft('/');
+ m_szProtocol = "http";
+ }
+
+ m_uPort = uDefaultPort;
+
+ // user and pass
+
+ i = u.findFirstIdx('@');
+
+ if(i != -1)
+ {
+ KviStr szUserPass = u.left(i);
+ szUserPass.stripWhiteSpace();
+ u.cutLeft(i + 1);
+
+ i = szUserPass.findFirstIdx(':');
+ if(i != -1)
+ {
+ m_szUser = szUserPass.left(i);
+ szUserPass.cutLeft(i + 1);
+ m_szPass = szUserPass;
+ m_szPass.stripWhiteSpace();
+ } else {
+ m_szUser = szUserPass;
+ }
+ }
+
+ // host
+
+ i = u.findFirstIdx('/');
+ if(i != -1)
+ {
+ KviStr h = u.left(i);
+ u.cutLeft(i + 1);
+ i = h.findFirstIdx(':');
+ if(i != -1)
+ {
+ // has a port part
+ m_szHost = h.left(i);
+ h.cutLeft(i + 1);
+ h.stripWhiteSpace();
+ bool bOk;
+ m_uPort = h.toUInt(&bOk);
+ if(!bOk)m_uPort = uDefaultPort;
+ } else {
+ // no port : assume default
+ m_szHost = h;
+ }
+ m_szPath = u;
+ } else {
+ m_szHost = u;
+ }
+
+ m_szHost.stripWhiteSpace();
+ m_szPath.stripWhiteSpace();
+ if(!m_szPath.firstCharIs('/'))m_szPath.prepend('/');
+}
+
+
+KviUrl & KviUrl::operator=(const char * szUrl)
+{
+ m_szUrl = szUrl;
+ parse();
+ return *this;
+}
+
+KviUrl & KviUrl::operator=(const KviUrl &u)
+{
+ m_szUrl = u.m_szUrl;
+ m_szProtocol = u.m_szProtocol;
+ m_szHost = u.m_szHost;
+ m_szPath = u.m_szPath;
+ m_szUser = u.m_szUser;
+ m_szPass = u.m_szPass;
+ m_uPort = u.m_uPort;
+ return *this;
+}
+
+
diff --git a/src/kvilib/net/kvi_url.h b/src/kvilib/net/kvi_url.h
new file mode 100644
index 00000000..89adeb9f
--- /dev/null
+++ b/src/kvilib/net/kvi_url.h
@@ -0,0 +1,63 @@
+#ifndef _KVI_URL_H_
+#define _KVI_URL_H_
+//
+// File : kvi_url.h
+// Creation date : Sat Aug 17 14:09:16 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_string.h"
+#include "kvi_heapobject.h"
+#include "kvi_inttypes.h"
+
+class KVILIB_API KviUrl : public KviHeapObject
+{
+public:
+ KviUrl();
+ KviUrl(const char * szUrl);
+ KviUrl(const QString &szUrl);
+ KviUrl(const KviUrl &u);
+ ~KviUrl();
+protected:
+ KviStr m_szUrl;
+
+ KviStr m_szProtocol;
+ KviStr m_szHost;
+ KviStr m_szPath;
+ KviStr m_szUser;
+ KviStr m_szPass;
+ kvi_u32_t m_uPort;
+protected:
+ void parse();
+public:
+ const KviStr & url() const { return m_szUrl; };
+ const KviStr & protocol() const { return m_szProtocol; };
+ const KviStr & host() const { return m_szHost; };
+ const KviStr & path() const { return m_szPath; };
+ const KviStr & user() const { return m_szUser; };
+ const KviStr & pass() const { return m_szPass; };
+ kvi_u32_t port() const { return m_uPort; };
+
+ KviUrl & operator = (const char * szUrl);
+ KviUrl & operator = (const KviUrl &u);
+
+};
+
+
+#endif //_KVI_URL_H_
diff --git a/src/kvilib/net/moc_kvi_dns.cpp b/src/kvilib/net/moc_kvi_dns.cpp
new file mode 100644
index 00000000..5b8857a9
--- /dev/null
+++ b/src/kvilib/net/moc_kvi_dns.cpp
@@ -0,0 +1,137 @@
+/****************************************************************************
+** KviDns meta object code from reading C++ file 'kvi_dns.h'
+**
+** Created: Sun Mar 23 20:56:20 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_dns.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+#include <qvariant.h>
+const char *KviDns::className() const
+{
+ return "KviDns";
+}
+
+QMetaObject *KviDns::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviDns( "KviDns", &KviDns::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviDns::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviDns", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviDns::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviDns", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviDns::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QObject::staticMetaObject();
+ static const QUParameter param_signal_0[] = {
+ { 0, &static_QUType_ptr, "KviDns", QUParameter::In }
+ };
+ static const QUMethod signal_0 = {"lookupDone", 1, param_signal_0 };
+ static const QMetaData signal_tbl[] = {
+ { "lookupDone(KviDns*)", &signal_0, QMetaData::Private }
+ };
+#ifndef QT_NO_PROPERTIES
+ static const QMetaProperty props_tbl[1] = {
+ { "bool","blockingDelete", 0x12000001, &KviDns::metaObj, 0, -1 }
+ };
+#endif // QT_NO_PROPERTIES
+ metaObj = QMetaObject::new_metaobject(
+ "KviDns", parentObject,
+ 0, 0,
+ signal_tbl, 1,
+#ifndef QT_NO_PROPERTIES
+ props_tbl, 1,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviDns.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviDns::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviDns" ) )
+ return this;
+ if ( !qstrcmp( clname, "KviHeapObject" ) )
+ return (KviHeapObject*)this;
+ return QObject::qt_cast( clname );
+}
+
+#include <qobjectdefs.h>
+#include <qsignalslotimp.h>
+
+// SIGNAL lookupDone
+void KviDns::lookupDone( KviDns* t0 )
+{
+ if ( signalsBlocked() )
+ return;
+ QConnectionList *clist = receivers( staticMetaObject()->signalOffset() + 0 );
+ if ( !clist )
+ return;
+ QUObject o[2];
+ static_QUType_ptr.set(o+1,t0);
+ activate_signal( clist, o );
+}
+
+bool KviDns::qt_invoke( int _id, QUObject* _o )
+{
+ return QObject::qt_invoke(_id,_o);
+}
+
+bool KviDns::qt_emit( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->signalOffset() ) {
+ case 0: lookupDone((KviDns*)static_QUType_ptr.get(_o+1)); break;
+ default:
+ return QObject::qt_emit(_id,_o);
+ }
+ return TRUE;
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviDns::qt_property( int id, int f, QVariant* v)
+{
+ switch ( id - staticMetaObject()->propertyOffset() ) {
+ case 0: switch( f ) {
+ case 1: *v = QVariant( this->isRunning(), 0 ); break;
+ case 3: case 4: case 5: break;
+ default: return FALSE;
+ } break;
+ default:
+ return QObject::qt_property( id, f, v );
+ }
+ return TRUE;
+}
+
+bool KviDns::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvilib/net/moc_kvi_http.cpp b/src/kvilib/net/moc_kvi_http.cpp
new file mode 100644
index 00000000..7ea9b591
--- /dev/null
+++ b/src/kvilib/net/moc_kvi_http.cpp
@@ -0,0 +1,263 @@
+/****************************************************************************
+** KviHttpRequest meta object code from reading C++ file 'kvi_http.h'
+**
+** Created: Sun Mar 23 20:56:22 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_http.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviHttpRequest::className() const
+{
+ return "KviHttpRequest";
+}
+
+QMetaObject *KviHttpRequest::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviHttpRequest( "KviHttpRequest", &KviHttpRequest::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviHttpRequest::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviHttpRequest", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviHttpRequest::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviHttpRequest", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviHttpRequest::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QObject::staticMetaObject();
+ static const QUParameter param_slot_0[] = {
+ { "d", &static_QUType_ptr, "KviDns", QUParameter::In }
+ };
+ static const QUMethod slot_0 = {"dnsLookupDone", 1, param_slot_0 };
+ static const QUMethod slot_1 = {"haveServerIp", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "dnsLookupDone(KviDns*)", &slot_0, QMetaData::Protected },
+ { "haveServerIp()", &slot_1, QMetaData::Protected }
+ };
+ static const QUParameter param_signal_0[] = {
+ { "hostname", &static_QUType_QString, 0, QUParameter::In }
+ };
+ static const QUMethod signal_0 = {"resolvingHost", 1, param_signal_0 };
+ static const QUParameter param_signal_1[] = {
+ { "ipandport", &static_QUType_QString, 0, QUParameter::In }
+ };
+ static const QUMethod signal_1 = {"contactingHost", 1, param_signal_1 };
+ static const QUMethod signal_2 = {"connectionEstabilished", 0, 0 };
+ static const QUParameter param_signal_3[] = {
+ { "response", &static_QUType_QString, 0, QUParameter::In }
+ };
+ static const QUMethod signal_3 = {"receivedResponse", 1, param_signal_3 };
+ static const QUParameter param_signal_4[] = {
+ { "bSuccess", &static_QUType_bool, 0, QUParameter::In }
+ };
+ static const QUMethod signal_4 = {"terminated", 1, param_signal_4 };
+ static const QUParameter param_signal_5[] = {
+ { "message", &static_QUType_QString, 0, QUParameter::In }
+ };
+ static const QUMethod signal_5 = {"status", 1, param_signal_5 };
+ static const QUParameter param_signal_6[] = {
+ { "data", &static_QUType_ptr, "KviStr", QUParameter::In }
+ };
+ static const QUMethod signal_6 = {"data", 1, param_signal_6 };
+ static const QUParameter param_signal_7[] = {
+ { "data", &static_QUType_ptr, "KviDataBuffer", QUParameter::In }
+ };
+ static const QUMethod signal_7 = {"binaryData", 1, param_signal_7 };
+ static const QUParameter param_signal_8[] = {
+ { "hdr", &static_QUType_ptr, "KviPointerHashTable<const char*,KviStr>", QUParameter::In }
+ };
+ static const QUMethod signal_8 = {"header", 1, param_signal_8 };
+ static const QUParameter param_signal_9[] = {
+ { "request", &static_QUType_varptr, "\x04", QUParameter::In }
+ };
+ static const QUMethod signal_9 = {"requestSent", 1, param_signal_9 };
+ static const QMetaData signal_tbl[] = {
+ { "resolvingHost(const QString&)", &signal_0, QMetaData::Public },
+ { "contactingHost(const QString&)", &signal_1, QMetaData::Public },
+ { "connectionEstabilished()", &signal_2, QMetaData::Public },
+ { "receivedResponse(const QString&)", &signal_3, QMetaData::Public },
+ { "terminated(bool)", &signal_4, QMetaData::Public },
+ { "status(const QString&)", &signal_5, QMetaData::Public },
+ { "data(const KviStr&)", &signal_6, QMetaData::Public },
+ { "binaryData(const KviDataBuffer&)", &signal_7, QMetaData::Public },
+ { "header(KviPointerHashTable<const char*,KviStr>*)", &signal_8, QMetaData::Public },
+ { "requestSent(const QStringList&)", &signal_9, QMetaData::Public }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviHttpRequest", parentObject,
+ slot_tbl, 2,
+ signal_tbl, 10,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviHttpRequest.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviHttpRequest::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviHttpRequest" ) )
+ return this;
+ if ( !qstrcmp( clname, "KviHeapObject" ) )
+ return (KviHeapObject*)this;
+ return QObject::qt_cast( clname );
+}
+
+// SIGNAL resolvingHost
+void KviHttpRequest::resolvingHost( const QString& t0 )
+{
+ activate_signal( staticMetaObject()->signalOffset() + 0, t0 );
+}
+
+// SIGNAL contactingHost
+void KviHttpRequest::contactingHost( const QString& t0 )
+{
+ activate_signal( staticMetaObject()->signalOffset() + 1, t0 );
+}
+
+// SIGNAL connectionEstabilished
+void KviHttpRequest::connectionEstabilished()
+{
+ activate_signal( staticMetaObject()->signalOffset() + 2 );
+}
+
+// SIGNAL receivedResponse
+void KviHttpRequest::receivedResponse( const QString& t0 )
+{
+ activate_signal( staticMetaObject()->signalOffset() + 3, t0 );
+}
+
+// SIGNAL terminated
+void KviHttpRequest::terminated( bool t0 )
+{
+ activate_signal_bool( staticMetaObject()->signalOffset() + 4, t0 );
+}
+
+// SIGNAL status
+void KviHttpRequest::status( const QString& t0 )
+{
+ activate_signal( staticMetaObject()->signalOffset() + 5, t0 );
+}
+
+#include <qobjectdefs.h>
+#include <qsignalslotimp.h>
+
+// SIGNAL data
+void KviHttpRequest::data( const KviStr& t0 )
+{
+ if ( signalsBlocked() )
+ return;
+ QConnectionList *clist = receivers( staticMetaObject()->signalOffset() + 6 );
+ if ( !clist )
+ return;
+ QUObject o[2];
+ static_QUType_ptr.set(o+1,&t0);
+ activate_signal( clist, o );
+}
+
+// SIGNAL binaryData
+void KviHttpRequest::binaryData( const KviDataBuffer& t0 )
+{
+ if ( signalsBlocked() )
+ return;
+ QConnectionList *clist = receivers( staticMetaObject()->signalOffset() + 7 );
+ if ( !clist )
+ return;
+ QUObject o[2];
+ static_QUType_ptr.set(o+1,&t0);
+ activate_signal( clist, o );
+}
+
+// SIGNAL header
+void KviHttpRequest::header( KviPointerHashTable<const char*,KviStr>* t0 )
+{
+ if ( signalsBlocked() )
+ return;
+ QConnectionList *clist = receivers( staticMetaObject()->signalOffset() + 8 );
+ if ( !clist )
+ return;
+ QUObject o[2];
+ static_QUType_ptr.set(o+1,t0);
+ activate_signal( clist, o );
+}
+
+// SIGNAL requestSent
+void KviHttpRequest::requestSent( const QStringList& t0 )
+{
+ if ( signalsBlocked() )
+ return;
+ QConnectionList *clist = receivers( staticMetaObject()->signalOffset() + 9 );
+ if ( !clist )
+ return;
+ QUObject o[2];
+ static_QUType_varptr.set(o+1,&t0);
+ activate_signal( clist, o );
+}
+
+bool KviHttpRequest::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: dnsLookupDone((KviDns*)static_QUType_ptr.get(_o+1)); break;
+ case 1: haveServerIp(); break;
+ default:
+ return QObject::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviHttpRequest::qt_emit( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->signalOffset() ) {
+ case 0: resolvingHost((const QString&)static_QUType_QString.get(_o+1)); break;
+ case 1: contactingHost((const QString&)static_QUType_QString.get(_o+1)); break;
+ case 2: connectionEstabilished(); break;
+ case 3: receivedResponse((const QString&)static_QUType_QString.get(_o+1)); break;
+ case 4: terminated((bool)static_QUType_bool.get(_o+1)); break;
+ case 5: status((const QString&)static_QUType_QString.get(_o+1)); break;
+ case 6: data((const KviStr&)*((const KviStr*)static_QUType_ptr.get(_o+1))); break;
+ case 7: binaryData((const KviDataBuffer&)*((const KviDataBuffer*)static_QUType_ptr.get(_o+1))); break;
+ case 8: header((KviPointerHashTable<const char*,KviStr>*)static_QUType_ptr.get(_o+1)); break;
+ case 9: requestSent((const QStringList&)*((const QStringList*)static_QUType_ptr.get(_o+1))); break;
+ default:
+ return QObject::qt_emit(_id,_o);
+ }
+ return TRUE;
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviHttpRequest::qt_property( int id, int f, QVariant* v)
+{
+ return QObject::qt_property( id, f, v);
+}
+
+bool KviHttpRequest::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvilib/system/Makefile.am b/src/kvilib/system/Makefile.am
new file mode 100644
index 00000000..c84487eb
--- /dev/null
+++ b/src/kvilib/system/Makefile.am
@@ -0,0 +1,5 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+EXTRA_DIST = *.cpp *.h
diff --git a/src/kvilib/system/kvi_byteorder.h b/src/kvilib/system/kvi_byteorder.h
new file mode 100644
index 00000000..dea1902d
--- /dev/null
+++ b/src/kvilib/system/kvi_byteorder.h
@@ -0,0 +1,62 @@
+#ifndef _KVI_BYTEORDER_H_
+#define _KVI_BYTEORDER_H_
+
+//=============================================================================
+//
+// File : kvi_byteorder.h
+// Creation date : Mon Dec 25 2006 19:56:16 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_bswap.h"
+#include "kvi_inttypes.h"
+
+
+//
+// Byte Orders Reminder
+// Number 0xaabbccdd
+// Little Endian Stores 0xdd 0xcc 0xbb 0xaa
+// Big Endian Stores 0xaa 0xbb 0xcc 0xdd
+// Perverse Middle Endian 0xbb 0xaa 0xdd 0xcc or another braindamaged combination (unsupported)
+// Network Byte Order is Big Endian
+// Intel Stuff uses Little Endian
+//
+
+#ifdef BIG_ENDIAN_MACHINE_BYTE_ORDER
+ #define kvi_localCpuToLittleEndian16(u) kvi_swap16((kvi_u16_t)(u))
+ #define kvi_localCpuToLittleEndian32(u) kvi_swap32((kvi_u32_t)(u))
+ #define kvi_localCpuToLittleEndian64(u) kvi_swap64((kvi_u64_t)(u))
+ #define kvi_littleEndianToLocalCpu16(u) kvi_swap16((kvi_u16_t)(u))
+ #define kvi_littleEndianToLocalCpu32(u) kvi_swap32((kvi_u32_t)(u))
+ #define kvi_littleEndianToLocalCpu64(u) kvi_swap64((kvi_u64_t)(u))
+#else
+ // We ASSUME that the local cpu is little endian.. if it isn't.. well :)
+ #define LOCAL_CPU_LITTLE_ENDIAN
+ #define kvi_localCpuToLittleEndian16(u) (u)
+ #define kvi_localCpuToLittleEndian32(u) (u)
+ #define kvi_localCpuToLittleEndian64(u) (u)
+ #define kvi_littleEndianToLocalCpu16(u) (u)
+ #define kvi_littleEndianToLocalCpu32(u) (u)
+ #define kvi_littleEndianToLocalCpu64(u) (u)
+#endif
+
+
+#endif // !_KVI_BYTEORDER_H_
diff --git a/src/kvilib/system/kvi_env.cpp b/src/kvilib/system/kvi_env.cpp
new file mode 100644
index 00000000..1497632e
--- /dev/null
+++ b/src/kvilib/system/kvi_env.cpp
@@ -0,0 +1,89 @@
+//=============================================================================
+//
+// File : kvi_env.cpp
+// Creation date : Sat May 05 2002 02:15:21 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek ([email protected])
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+#define __KVILIB__
+
+#define _KVI_ENV_CPP_
+
+#include "kvi_env.h"
+#include "kvi_string.h"
+#include "kvi_malloc.h"
+#include "kvi_memmove.h"
+
+#ifndef COMPILE_ON_WINDOWS
+
+bool kvi_setenv(const char * name,const char * value)
+{
+#ifdef HAVE_SETENV
+ return (setenv(name,value,1) == 0);
+#else
+ #ifdef HAVE_PUTENV
+ int iLen1 = kvi_strLen(name);
+ int iLen2 = kvi_strLen(value);
+ char * buf = (char *)kvi_malloc(iLen1 + iLen2 + 2);
+ kvi_memmove(buf,name,iLen1);
+ *(buf + iLen1) = '=';
+ kvi_memmove(buf + iLen1 + 1,value,iLen2);
+ *(buf + iLen1 + iLen2 + 1) = '\0';
+ int iRet = putenv(buf);
+ if(iRet != 0)
+ {
+ kvi_free(buf);
+ return false;
+ }
+ return true;
+ #else
+ // no setenv , no putenv.. what the hell of system is this ?
+ return false;
+ #endif
+#endif
+}
+
+void kvi_unsetenv(const char * name)
+{
+#ifdef HAVE_UNSETENV
+ unsetenv(name);
+#else
+ #ifdef HAVE_PUTENV
+ int iLen1 = kvi_strLen(name);
+ char * buf = (char *)kvi_malloc(iLen1 + 1);
+ kvi_memmove(buf,name,iLen1);
+ *(buf + iLen1) = '\0';
+ int iRet = putenv(buf);
+ if(iRet != 0)
+ {
+ kvi_free(buf);
+ } else {
+ // hmmm
+ if(kvi_getenv(name) == 0)
+ {
+ // ok , the string is not in the environment
+ // we can free it
+ kvi_free(buf);
+ } // else this system sux
+ }
+ #endif
+#endif
+}
+
+#endif //!COMPILE_ON_WINDOWS
diff --git a/src/kvilib/system/kvi_env.h b/src/kvilib/system/kvi_env.h
new file mode 100644
index 00000000..b3b24a2f
--- /dev/null
+++ b/src/kvilib/system/kvi_env.h
@@ -0,0 +1,60 @@
+#ifndef _KVI_ENV_H_
+#define _KVI_ENV_H_
+
+//=============================================================================
+//
+// File : kvi_env.h
+// Creation date : Sat May 05 2002 02:15:21 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek ([email protected])
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+//=============================================================================
+// Enviroinement function wrappers
+//=============================================================================
+
+#include "kvi_settings.h"
+
+
+
+#include <stdlib.h>
+
+inline char * kvi_getenv(const char * name)
+{
+#ifdef HAVE_GETENV
+ return getenv(name);
+#else
+ return 0;
+#endif
+}
+
+#ifdef COMPILE_ON_WINDOWS
+ #define kvi_setenv(__name,__value) SetEnvironmentVariable(__name,__value)
+ #define kvi_unsetenv(__name) SetEnvironmentVariable(__name,NULL)
+#else
+ #ifndef _KVI_ENV_CPP_
+ KVILIB_API extern bool kvi_setenv(const char * name,const char * value);
+ KVILIB_API extern void kvi_unsetenv(const char * name);
+ #endif
+#endif
+
+
+
+
+#endif //_KVI_ENV_H_
diff --git a/src/kvilib/system/kvi_library.h b/src/kvilib/system/kvi_library.h
new file mode 100644
index 00000000..393ed5c7
--- /dev/null
+++ b/src/kvilib/system/kvi_library.h
@@ -0,0 +1,115 @@
+#ifndef _KVI_LIBRARY_H_
+#define _KVI_LIBRARY_H_
+
+//=====================================================================================
+//
+// File : kvi_library.h
+// Creation date : Tue Sep 25 16:20:40 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=====================================================================================
+
+
+//=====================================================================================
+// System dynamic linker interface abstraction
+//=====================================================================================
+
+
+#include "kvi_settings.h"
+
+
+#ifdef COMPILE_ON_WINDOWS
+
+ //#include <windows.h>
+ #include <winsock2.h> // this will pull in windows.h
+
+ typedef HMODULE kvi_library_t;
+
+ inline kvi_library_t kvi_library_open(const char * path)
+ {
+#ifndef DEBUG
+ // this is to avoid the ugly message boxes when the dll has
+ // ... but do it only in release mode
+ UINT nOldErrorMode = SetErrorMode(SEM_FAILCRITICALERRORS);
+#endif
+ kvi_library_t ret = LoadLibrary(path);
+#ifndef DEBUG
+ SetErrorMode(nOldErrorMode);
+#endif
+ return ret;
+ };
+
+ inline void kvi_library_close(kvi_library_t lib)
+ {
+ FreeLibrary(lib);
+ };
+
+ inline void * kvi_library_symbol(kvi_library_t lib,const char * symName)
+ {
+ return GetProcAddress(lib,symName);
+ };
+
+ inline const char * kvi_library_error()
+ {
+ return "Windoze-like error";
+ };
+
+#else
+
+ #include <dlfcn.h>
+
+ // sparc-unknown-openbsd3.0 (At least) has only RTLD_LAZY
+ #ifndef RTLD_NOW
+ #define RTLD_NOW RTLD_LAZY
+ #endif
+ #ifndef RTLD_GLOBAL
+ #define RTLD_GLOBAL 0
+ #endif
+
+ typedef void * kvi_library_t;
+
+ inline kvi_library_t kvi_library_open(const char * path)
+ {
+ return dlopen(path,RTLD_GLOBAL | RTLD_NOW);
+ };
+
+ inline void kvi_library_close(kvi_library_t lib)
+ {
+ dlclose(lib);
+ };
+
+
+ inline void * kvi_library_symbol(kvi_library_t lib,const char * symName)
+ {
+ return dlsym(lib,symName);
+ };
+
+ inline const char * kvi_library_error()
+ {
+ return dlerror();
+ };
+
+
+#endif //!COMPILE_ON_WINDOWS
+
+
+#define kvi_library_load kvi_library_open
+#define kvi_library_unload kvi_library_close
+
+#endif //_KVI_LIBRARY_H_
diff --git a/src/kvilib/system/kvi_locale.cpp b/src/kvilib/system/kvi_locale.cpp
new file mode 100644
index 00000000..f49eabe4
--- /dev/null
+++ b/src/kvilib/system/kvi_locale.cpp
@@ -0,0 +1,1191 @@
+//=============================================================================
+//
+// File : kvi_locale.cpp
+// Creation date : Fri Mar 19 1999 19:08:41 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+
+//#define _KVI_DEBUG_CHECK_RANGE_
+#include "kvi_debug.h"
+#include "kvi_malloc.h"
+#include "kvi_bswap.h"
+
+#define _KVI_LOCALE_CPP_
+#include "kvi_locale.h"
+
+#include <qglobal.h> //for debug()
+#include <qtextcodec.h>
+#include <qdir.h>
+
+#ifdef COMPILE_USE_QT4
+ #include <qlocale.h>
+#endif
+
+#include "kvi_string.h"
+#include "kvi_qcstring.h"
+#include "kvi_env.h"
+#include "kvi_fileutils.h"
+#include "kvi_file.h"
+
+
+KVILIB_API KviMessageCatalogue * g_pMainCatalogue = 0;
+
+static KviStr g_szLang;
+static KviTranslator * g_pTranslator = 0;
+static KviPointerHashTable<const char *,KviMessageCatalogue> * g_pCatalogueDict = 0;
+static QTextCodec * g_pUtf8TextCodec = 0;
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// The following code was extracted and adapted from gutf8.c
+// from the GNU GLIB2 package.
+//
+// gutf8.c - Operations on UTF-8 strings.
+//
+// Copyright (C) 1999 Tom Tromey
+// Copyright (C) 2000 Red Hat, Inc.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the
+// Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301, USA.
+//
+/////////////////////////////////////////////////////////////////////////////////////////////////////
+
+typedef char gchar;
+typedef unsigned char guchar;
+typedef signed int gssize;
+typedef unsigned int gunichar;
+
+
+
+#define UNICODE_VALID(Char) \
+ ((Char) < 0x110000 && \
+ (((Char) & 0xFFFFF800) != 0xD800) && \
+ ((Char) < 0xFDD0 || (Char) > 0xFDEF) && \
+ ((Char) & 0xFFFE) != 0xFFFE)
+
+#define CONTINUATION_CHAR \
+ if ((*(guchar *)p & 0xc0) != 0x80) /* 10xxxxxx */ \
+ goto error; \
+ val <<= 6; \
+ val |= (*(guchar *)p) & 0x3f;
+
+
+static const char *
+fast_validate (const char *str)
+
+{
+ gunichar val = 0;
+ gunichar min = 0;
+ const gchar *p;
+
+ for (p = str; *p; p++)
+ {
+ if (*(guchar *)p < 128)
+ /* done */;
+ else
+ {
+ const gchar *last;
+
+ last = p;
+ if ((*(guchar *)p & 0xe0) == 0xc0) /* 110xxxxx */
+ {
+ if ((*(guchar *)p & 0x1e) == 0)
+ goto error;
+ p++;
+ if ((*(guchar *)p & 0xc0) != 0x80) /* 10xxxxxx */
+ goto error;
+ }
+ else
+ {
+ if ((*(guchar *)p & 0xf0) == 0xe0) /* 1110xxxx */
+ {
+ min = (1 << 11);
+ val = *(guchar *)p & 0x0f;
+ goto TWO_REMAINING;
+ }
+ else if ((*(guchar *)p & 0xf8) == 0xf0) /* 11110xxx */
+ {
+ min = (1 << 16);
+ val = *(guchar *)p & 0x07;
+ }
+ else
+ goto error;
+
+ p++;
+ CONTINUATION_CHAR;
+ TWO_REMAINING:
+ p++;
+ CONTINUATION_CHAR;
+ p++;
+ CONTINUATION_CHAR;
+
+ if (val < min)
+ goto error;
+
+ if (!UNICODE_VALID(val))
+ goto error;
+ }
+
+ continue;
+
+ error:
+ return last;
+ }
+ }
+
+ return p;
+}
+
+static const gchar *
+fast_validate_len (const char *str,
+ gssize max_len)
+
+{
+ gunichar val = 0;
+ gunichar min = 0;
+ const gchar *p;
+
+ for (p = str; (max_len < 0 || (p - str) < max_len) && *p; p++)
+ {
+ if (*(guchar *)p < 128)
+ /* done */;
+ else
+ {
+ const gchar *last;
+
+ last = p;
+ if ((*(guchar *)p & 0xe0) == 0xc0) /* 110xxxxx */
+ {
+ if (max_len >= 0 && max_len - (p - str) < 2)
+ goto error;
+
+ if ((*(guchar *)p & 0x1e) == 0)
+ goto error;
+ p++;
+ if ((*(guchar *)p & 0xc0) != 0x80) /* 10xxxxxx */
+ goto error;
+ }
+ else
+ {
+ if ((*(guchar *)p & 0xf0) == 0xe0) /* 1110xxxx */
+ {
+ if (max_len >= 0 && max_len - (p - str) < 3)
+ goto error;
+
+ min = (1 << 11);
+ val = *(guchar *)p & 0x0f;
+ goto TWO_REMAINING;
+ }
+ else if ((*(guchar *)p & 0xf8) == 0xf0) /* 11110xxx */
+ {
+ if (max_len >= 0 && max_len - (p - str) < 4)
+ goto error;
+
+ min = (1 << 16);
+ val = *(guchar *)p & 0x07;
+ }
+ else
+ goto error;
+
+ p++;
+ CONTINUATION_CHAR;
+ TWO_REMAINING:
+ p++;
+ CONTINUATION_CHAR;
+ p++;
+ CONTINUATION_CHAR;
+
+ if (val < min)
+ goto error;
+ if (!UNICODE_VALID(val))
+ goto error;
+ }
+
+ continue;
+
+ error:
+ return last;
+ }
+ }
+
+ return p;
+}
+
+static bool g_utf8_validate (const char *str,
+ gssize max_len,
+ const gchar **end)
+
+{
+ const gchar *p;
+
+ if (max_len < 0)
+ p = fast_validate (str);
+ else
+ p = fast_validate_len (str, max_len);
+
+ if (end)
+ *end = p;
+
+ if ((max_len >= 0 && p != str + max_len) ||
+ (max_len < 0 && *p != '\0'))
+ return false;
+ else
+ return true;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////
+// End of gutf8.c
+///////////////////////////////////////////////////////////////////////////////////////////////
+
+
+class KviSmartTextCodec : public QTextCodec
+{
+protected:
+ KviQCString m_szName;
+ QTextCodec * m_pRecvCodec;
+ QTextCodec * m_pSendCodec;
+public:
+ KviSmartTextCodec(const char * szName,const char * szChildCodecName,bool bSendInUtf8)
+ : QTextCodec()
+ {
+ m_szName = szName;
+ if(!g_pUtf8TextCodec)
+ {
+ g_pUtf8TextCodec = QTextCodec::codecForName("UTF-8");
+ if(!g_pUtf8TextCodec)
+ {
+ debug("Can't find the global utf8 text codec!");
+ g_pUtf8TextCodec = QTextCodec::codecForLocale(); // try anything else...
+ }
+ }
+ m_pRecvCodec = QTextCodec::codecForName(szChildCodecName);
+ if(!m_pRecvCodec)
+ {
+ debug("Can't find the codec for name %s (composite codec creation)",szName);
+ m_pRecvCodec = g_pUtf8TextCodec;
+ }
+ if(bSendInUtf8)
+ m_pSendCodec = g_pUtf8TextCodec;
+ else
+ m_pSendCodec = m_pRecvCodec;
+ }
+public:
+ bool ok(){ return m_pRecvCodec && g_pUtf8TextCodec; };
+
+ virtual int mibEnum () const { return 0; };
+
+#ifdef COMPILE_USE_QT4
+ virtual QByteArray name() const { return m_szName; };
+protected:
+ virtual QByteArray convertFromUnicode(const QChar * input,int number,ConverterState * state) const
+ {
+ return m_pSendCodec->fromUnicode(input,number,state);
+ }
+ virtual QString convertToUnicode(const char * chars,int len,ConverterState * state) const
+ {
+ if(g_utf8_validate(chars,len,NULL))return g_pUtf8TextCodec->toUnicode(chars,len,state);
+ return m_pRecvCodec->toUnicode(chars,len,state);
+ }
+#else
+public:
+ virtual const char * mimeName () const { return m_pRecvCodec->mimeName(); };
+ virtual const char * name () const { return m_szName.data(); };
+ virtual QTextDecoder * makeDecoder () const { return m_pRecvCodec->makeDecoder(); };
+ virtual QTextEncoder * makeEncoder () const { return m_pSendCodec->makeEncoder(); };
+ QCString fromUnicode (const QString & uc) const { return m_pSendCodec->fromUnicode(uc); };
+ virtual QCString fromUnicode (const QString & uc,int & lenInOut) const { return m_pSendCodec->fromUnicode(uc,lenInOut); };
+ QString toUnicode(const char * chars) const
+ {
+ if(g_utf8_validate(chars,-1,NULL))return g_pUtf8TextCodec->toUnicode(chars);
+ return m_pRecvCodec->toUnicode(chars);
+ };
+ virtual QString toUnicode(const char * chars,int len) const
+ {
+ if(g_utf8_validate(chars,len,NULL))return g_pUtf8TextCodec->toUnicode(chars,len);
+ return m_pRecvCodec->toUnicode(chars,len);
+ };
+ QString toUnicode(const QByteArray & a,int len) const
+ {
+ if(g_utf8_validate(a.data(),len,NULL))return g_pUtf8TextCodec->toUnicode(a,len);
+ return m_pRecvCodec->toUnicode(a,len);
+ };
+ QString toUnicode(const QByteArray & a) const
+ {
+ if(g_utf8_validate(a.data(),a.size(),NULL))return g_pUtf8TextCodec->toUnicode(a);
+ return m_pRecvCodec->toUnicode(a);
+ };
+ QString toUnicode(const QCString & a,int len) const
+ {
+ if(g_utf8_validate(a.data(),len,NULL))return g_pUtf8TextCodec->toUnicode(a,len);
+ return m_pRecvCodec->toUnicode(a,len);
+ };
+ QString toUnicode(const QCString & a) const
+ {
+ if(g_utf8_validate(a.data(),-1,NULL))return g_pUtf8TextCodec->toUnicode(a);
+ return m_pRecvCodec->toUnicode(a);
+ };
+
+ virtual bool canEncode(QChar ch) const { return m_pSendCodec->canEncode(ch); };
+ virtual bool canEncode(const QString &s) const { return m_pSendCodec->canEncode(s); };
+ virtual int heuristicContentMatch(const char * chars,int len) const
+ {
+ int iii = g_pUtf8TextCodec->heuristicContentMatch(chars,len);
+ if(iii < 0)return m_pRecvCodec->heuristicContentMatch(chars,len);
+ return iii;
+ }
+ virtual int heuristicNameMatch(const char * hint) const { return 0; };
+#endif
+};
+
+static KviPointerHashTable<const char *,KviSmartTextCodec> * g_pSmartCodecDict = 0;
+
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// The following code was extracted and adapted from gettext.h and gettextP.h
+// from the GNU gettext package.
+//
+// Internal header for GNU gettext internationalization functions.
+// Copyright (C) 1995, 1997 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2, or (at your option)
+// any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with the GNU C Library; see the file COPYING.LIB. If not,
+// write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301, USA.
+//
+/////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#include <stdio.h>
+
+#if HAVE_LIMITS_H || _LIBC
+ #include <limits.h>
+#endif
+
+// The magic number of the GNU message catalog format.
+#define KVI_LOCALE_MAGIC 0x950412de
+#define KVI_LOCALE_MAGIC_SWAPPED 0xde120495
+
+// Revision number of the currently used .mo (binary) file format.
+#define MO_REVISION_NUMBER 0
+
+
+// Header for binary .mo file format.
+struct GnuMoFileHeader
+{
+ // The magic number.
+ kvi_u32_t magic;
+ // The revision number of the file format.
+ kvi_u32_t revision;
+ // The number of strings pairs.
+ kvi_u32_t nstrings;
+ // Offset of table with start offsets of original strings.
+ kvi_u32_t orig_tab_offset;
+ // Offset of table with start offsets of translation strings.
+ kvi_u32_t trans_tab_offset;
+ // Size of hashing table.
+ kvi_u32_t hash_tab_size;
+ // Offset of first hashing entry.
+ kvi_u32_t hash_tab_offset;
+};
+
+struct GnuMoStringDescriptor
+{
+ // Length of addressed string.
+ kvi_u32_t length;
+ // Offset of string in file.
+ kvi_u32_t offset;
+};
+
+#define KVI_SWAP_IF_NEEDED(flag,value) (flag ? kvi_swap32(value) : (value))
+
+///////////////////////////////////////////////////////////////////////////////////////////////
+// End of gettext.h & gettextP.h
+///////////////////////////////////////////////////////////////////////////////////////////////
+
+
+// HELPERS
+
+static int somePrimeNumbers[90]=
+{
+ 257 , 521 , 769 , 1031, 1087, 1091, 1103, 1117, 1123, 1151, // Incomplete *.mo files
+ 1163, 1171, 1181, 1193, 1201, 1213, 1217, 1223, 1229, 1231, // Complete *.mo files
+ 1237, 1249, 1259, 1277, 1283, 1289, 1291, 1297, 1307, 1319,
+ 1321, 1327, 1361, 1367, 1373, 1381, 1399, 1409, 1423, 1433,
+ 1447, 1459, 1471, 1481, 1493, 1511, 1523, 1531, 1543, 1553,
+ 1567, 1571, 1583, 1597, 1609, 1619, 1627, 1637, 1657, 1667, // Too big for KVIrc *.mo files
+ 1693, 1709, 1721, 1733, 1741, 1753, 1777, 1789, 1811, 1831,
+ 1907, 2069, 2111, 2221, 2309, 2441, 2531, 2617, 2731, 2837,
+ 2903, 3121, 3329, 3331, 3767, 4127, 5051, 6089, 7039, 9973
+};
+
+int kvi_getFirstBiggerPrime(int number)
+{
+ for(int i=0;i<90;i++){
+ if(somePrimeNumbers[i] >= number)return somePrimeNumbers[i];
+ }
+ return 9973; //error!
+}
+
+
+KviMessageCatalogue::KviMessageCatalogue()
+{
+ //m_uEncoding = 0;
+ m_pTextCodec = QTextCodec::codecForLocale();
+
+ //m_pMessages = new KviPointerHashTable<const char *,KviTranslationEntry>(1123,true,false); // dictSize, case sensitive , don't copy keys
+ m_pMessages = new KviPointerHashTable<const char *,KviTranslationEntry>(32,true,false); // dictSize, case sensitive , don't copy keys
+ m_pMessages->setAutoDelete(true);
+}
+
+KviMessageCatalogue::~KviMessageCatalogue()
+{
+ if(m_pMessages)
+ delete m_pMessages;
+}
+
+bool KviMessageCatalogue::load(const QString& name)
+{
+ QString szCatalogueFile(name);
+
+ // Try to load the header
+ KviFile f(szCatalogueFile);
+ if(!f.openForReading())
+ {
+ debug("[KviLocale]: Failed to open the messages file %s: probably doesn't exist",KviQString::toUtf8(szCatalogueFile).data());
+ return false;
+ }
+
+ GnuMoFileHeader hdr;
+
+ if(f.readBlock((char *)&hdr,sizeof(GnuMoFileHeader)) < (int)sizeof(GnuMoFileHeader))
+ {
+ debug("KviLocale: Failed to read header of %s",KviQString::toUtf8(szCatalogueFile).data());
+ f.close();
+ return false;
+ }
+
+ bool bMustSwap = false;
+
+ if(hdr.magic != KVI_LOCALE_MAGIC)
+ {
+ if(hdr.magic == KVI_LOCALE_MAGIC_SWAPPED)
+ {
+ debug("KviLocale: Swapped magic for file %s: swapping data too",KviQString::toUtf8(szCatalogueFile).data());
+ bMustSwap = true;
+ } else {
+ debug("KviLocale: Bad locale magic for file %s: not a *.mo file ?",KviQString::toUtf8(szCatalogueFile).data());
+ f.close();
+ return false;
+ }
+ }
+
+ if(KVI_SWAP_IF_NEEDED(bMustSwap,hdr.revision) != MO_REVISION_NUMBER)
+ {
+ debug("KviLocale: Invalid *.mo file revision number for file %s",KviQString::toUtf8(szCatalogueFile).data());
+ f.close();
+ return false;
+ }
+
+ int numberOfStrings = KVI_SWAP_IF_NEEDED(bMustSwap,hdr.nstrings);
+
+ if(numberOfStrings <= 0)
+ {
+ debug("KviLocale: No translated messages found in file %s",KviQString::toUtf8(szCatalogueFile).data());
+ f.close();
+ return false;
+ }
+
+ if(numberOfStrings >= 9972)
+ {
+ debug("Number of strings too big...sure that it is a KVIrc catalog file ?");
+ numberOfStrings = 9972;
+ }
+
+ // return back
+ f.seek(0);
+
+ unsigned int fSize = f.size();
+ char * buffer = (char *)kvi_malloc(fSize);
+
+ // FIXME: maybe read it in blocks eh ?
+ if(f.readBlock(buffer,fSize) < (int)fSize)
+ {
+ debug("KviLocale: Error while reading the translation file %s",KviQString::toUtf8(szCatalogueFile).data());
+ kvi_free(buffer);
+ f.close();
+ return false;
+ }
+
+ // Check for broken *.mo files
+ if(fSize < (24 + (sizeof(GnuMoStringDescriptor) * numberOfStrings)))
+ {
+ debug("KviLocale: Broken translation file %s (too small for all descriptors)",KviQString::toUtf8(szCatalogueFile).data());
+ kvi_free(buffer);
+ f.close();
+ return false;
+ }
+
+ GnuMoStringDescriptor * origDescriptor = (GnuMoStringDescriptor *)(buffer + KVI_SWAP_IF_NEEDED(bMustSwap,hdr.orig_tab_offset));
+ GnuMoStringDescriptor * transDescriptor = (GnuMoStringDescriptor *)(buffer + KVI_SWAP_IF_NEEDED(bMustSwap,hdr.trans_tab_offset));
+
+ // Check again for broken *.mo files
+ int expectedFileSize = KVI_SWAP_IF_NEEDED(bMustSwap,transDescriptor[numberOfStrings - 1].offset) +
+ KVI_SWAP_IF_NEEDED(bMustSwap,transDescriptor[numberOfStrings - 1].length);
+
+ if(fSize < (unsigned int)expectedFileSize)
+ {
+ debug("KviLocale: Broken translation file %s (too small for all the message strings)",KviQString::toUtf8(szCatalogueFile).data());
+ kvi_free(buffer);
+ f.close();
+ return false;
+ }
+
+ // Ok...we can run now
+
+ int dictSize = kvi_getFirstBiggerPrime(numberOfStrings);
+ if(m_pMessages)
+ delete m_pMessages;
+ m_pMessages = new KviPointerHashTable<const char *,KviTranslationEntry>(dictSize,true,false); // dictSize, case sensitive , don't copy keys
+ m_pMessages->setAutoDelete(true);
+
+ KviStr szHeader;
+
+ for(int i=0;i < numberOfStrings;i++)
+ {
+ // FIXME: "Check for NULL inside strings here ?"
+ //debug("original seems to be at %u and %u byttes long",KVI_SWAP_IF_NEEDED(bMustSwap,origDescriptor[i].offset),
+ // KVI_SWAP_IF_NEEDED(bMustSwap,origDescriptor[i].length));
+ //debug("translated seems to be at %u and %u byttes long",KVI_SWAP_IF_NEEDED(bMustSwap,transDescriptor[i].offset),
+ // KVI_SWAP_IF_NEEDED(bMustSwap,transDescriptor[i].length));
+
+ KviTranslationEntry * e = new KviTranslationEntry(
+ (char *)(buffer + KVI_SWAP_IF_NEEDED(bMustSwap,origDescriptor[i].offset)),
+ KVI_SWAP_IF_NEEDED(bMustSwap,origDescriptor[i].length),
+ (char *)(buffer + KVI_SWAP_IF_NEEDED(bMustSwap,transDescriptor[i].offset)),
+ KVI_SWAP_IF_NEEDED(bMustSwap,transDescriptor[i].length));
+
+ // In some (or all?) *.mo files the first string
+ // is zero bytes long and the translated one contains
+ // informations about the translation
+ if(e->m_szKey.len() == 0)
+ {
+ szHeader = e->m_szEncodedTranslation;
+ delete e;
+ continue;
+ }
+
+ m_pMessages->insert(e->m_szKey.ptr(),e);
+ }
+
+ kvi_free(buffer);
+ f.close();
+
+ m_pTextCodec = 0;
+
+ // find out the text encoding , if possible
+ if(szHeader.hasData())
+ {
+ // find "charset=*\n"
+ int idx = szHeader.findFirstIdx("charset=");
+ if(idx != -1)
+ {
+ szHeader.cutLeft(idx + 8);
+ szHeader.cutFromFirst('\n');
+ szHeader.stripWhiteSpace();
+ m_pTextCodec = KviLocale::codecForName(szHeader.ptr());
+ if(!m_pTextCodec)
+ {
+ debug("Can't find the codec for charset=%s",szHeader.ptr());
+ debug("Falling back to codecForLocale()");
+ m_pTextCodec = QTextCodec::codecForLocale();
+ }
+ }
+ }
+
+ if(!m_pTextCodec)
+ {
+ debug("The message catalogue does not have a \"charset\" header");
+ debug("Assuming utf8"); // FIXME: or codecForLocale() ?
+ m_pTextCodec = QTextCodec::codecForName("UTF-8");
+ }
+
+ return true;
+}
+
+const char * KviMessageCatalogue::translate(const char *text)
+{
+ KviTranslationEntry * aux = m_pMessages->find(text);
+ if(aux)return aux->m_szEncodedTranslation.ptr();
+ return text;
+}
+
+const QString & KviMessageCatalogue::translateToQString(const char *text)
+{
+ KviTranslationEntry * aux = m_pMessages->find(text);
+ if(aux)
+ {
+ if(aux->m_pQTranslation)return *(aux->m_pQTranslation);
+ aux->m_pQTranslation = new QString(m_pTextCodec->toUnicode(aux->m_szEncodedTranslation.ptr()));
+ return *(aux->m_pQTranslation);
+ }
+ // no translation is available: let's avoid continous string decoding
+ aux = new KviTranslationEntry(text);
+ m_pMessages->insert(aux->m_szKey.ptr(),aux);
+ aux->m_pQTranslation = new QString(m_pTextCodec->toUnicode(aux->m_szEncodedTranslation.ptr()));
+ return *(aux->m_pQTranslation);
+}
+
+
+
+
+namespace KviLocale
+{
+#ifndef QT_NO_BIG_CODECS
+ #define NUM_ENCODINGS 109
+#else
+ #define NUM_ENCODINGS 85
+#endif
+
+
+
+ static EncodingDescription supported_encodings[]=
+ {
+ { "UTF-8" , 0 , 0 , "8-bit Unicode" },
+ { "ISO-8859-1" , 0 , 0 , "Western, Latin-1" },
+ { "ISO-8859-2" , 0 , 0 , "Central European 1" },
+ { "ISO-8859-3" , 0 , 0 , "Central European 2" },
+ { "ISO-8859-4" , 0 , 0 , "Baltic, Standard" },
+ { "ISO-8859-5" , 0 , 0 , "Cyrillic, ISO" },
+ { "ISO-8859-6" , 0 , 0 , "Arabic, Standard" },
+ { "ISO-8859-7" , 0 , 0 , "Greek" },
+ { "ISO-8859-8" , 0 , 0 , "Hebrew, visually ordered" },
+ { "ISO-8859-8-i" , 0 , 0 , "Hebrew, logically ordered" },
+ { "ISO-8859-9" , 0 , 0 , "Turkish, Latin-5" },
+ { "ISO-8859-15" , 0 , 0 , "Western, Latin-1 + Euro" },
+ { "KOI8-R" , 0 , 0 , "Cyrillic, KOI" },
+ { "KOI8-U" , 0 , 0 , "Ukrainian" },
+ { "CP-1250" , 0 , 0 , "Central European 3" },
+ { "CP-1251" , 0 , 0 , "Cyrillic, Windows" },
+ { "CP-1252" , 0 , 0 , "Western, CP" },
+ { "CP-1253" , 0 , 0 , "Greek, CP" },
+ { "CP-1256" , 0 , 0 , "Arabic, CP" },
+ { "CP-1257" , 0 , 0 , "Baltic, CP" },
+ { "CP-1255" , 0 , 0 , "Hebrew, CP" },
+ { "CP-1254" , 0 , 0 , "Turkish, CP" },
+ { "TIS-620" , 0 , 0 , "Thai" },
+#ifndef QT_NO_BIG_CODECS
+ { "Big5" , 0 , 0 , "Chinese Traditional" },
+ { "Big5-HKSCS" , 0 , 0 , "Chinese Traditional, Hong Kong" },
+ { "GB18030" , 0 , 0 , "Chinese Simplified" },
+ { "JIS7" , 0 , 0 , "Japanese (JIS7)" },
+ { "Shift-JIS" , 0 , 0 , "Japanese (Shift-JIS)" },
+ { "EUC-JP" , 0 , 0 , "Japanese (EUC-JP)" },
+ { "EUC-KR" , 0 , 0 , "Korean" },
+ { "TSCII" , 0 , 0 , "Tamil" },
+#endif
+ { "ISO-8859-10" , 0 , 0 , "ISO-8859-10" },
+ { "ISO-8859-13" , 0 , 0 , "ISO-8859-13" },
+ { "ISO-8859-14" , 0 , 0 , "ISO-8859-14" },
+ { "IBM-850" , 0 , 0 , "IBM-850" },
+ { "IBM-866" , 0 , 0 , "IBM-866" },
+ { "CP874" , 0 , 0 , "CP874" },
+
+ // smart codecs that send in the local charset
+ { "ISO-8859-1 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Western Latin-1, O: Western Latin-1" },
+ { "ISO-8859-2 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Central European 1, O: Central European 1" },
+ { "ISO-8859-3 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Central European 2, O: Central European 2" },
+ { "ISO-8859-4 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Baltic, Standard, O: Baltic, Standard" },
+ { "ISO-8859-5 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Cyrillic, ISO, O: Cyrillic, ISO" },
+ { "ISO-8859-6 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Arabic, Standard, O: Arabic, Standard" },
+ { "ISO-8859-7 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Greek, O: Greek" },
+ { "ISO-8859-8 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Hebrew, visually ordered, O: Hebrew, visually ordered" },
+ { "ISO-8859-8-i [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Hebrew, logically ordered, O: Hebrew, logically ordered" },
+ { "ISO-8859-9 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Turkish, Latin-5, O: Turkish, Latin-5" },
+ { "ISO-8859-15 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Western, Latin-1 + Euro, O: Western, Latin-1 + Euro" },
+ { "KOI8-R [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Cyrillic, KOI, O: Cyrillic, KOI" },
+ { "KOI8-U [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Ukrainian, O: Ukrainian" },
+ { "CP-1250 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Central European 3, O: Central European 3" },
+ { "CP-1251 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Cyrillic, Windows, O: Cyrillic, Windows" },
+ { "CP-1252 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Western, CP, O: Western, CP" },
+ { "CP-1253 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Greek, CP, O: Greek, CP" },
+ { "CP-1256 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Arabic, CP, O: Arabic, CP" },
+ { "CP-1257 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Baltic, CP, O: Baltic, CP" },
+ { "CP-1255 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Hebrew, CP, O: Hebrew, CP" },
+ { "CP-1254 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Turkish, CP, O: Turkish, CP" },
+ { "TIS-620 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Thai, O: Thai" },
+#ifndef QT_NO_BIG_CODECS
+ { "Big5 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Chinese Traditional, O: Chinese Traditional" },
+ { "Big5-HKSCS [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Chinese Traditional, Hong Kong, O: Chinese Traditional, Hong Kong" },
+ { "GB18030 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Chinese Simplified, O: Chinese Simplified" },
+ { "JIS7 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Japanese (JIS7), O: Japanese " },
+ { "Shift-JIS [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Japanese (Shift-JIS), O: Japanese (Shift-JIS)" },
+ { "EUC-JP [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Japanese (EUC-JP), O: Japanese (EUC-JP)" },
+ { "EUC-KR [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Korean, O: Korean" },
+ { "TSCII [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / Tamil, O: Tamil" },
+#endif
+ { "ISO-8859-10 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / ISO-8859-10, O: ISO-8859-10" },
+ { "ISO-8859-13 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / ISO-8859-13, O: ISO-8859-13" },
+ { "ISO-8859-14 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / ISO-8859-14, O: ISO-8859-14" },
+ { "IBM-850 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / IBM-850, O: IBM-850" },
+ { "IBM-866 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / IBM-866, O: IBM-866" },
+ { "CP874 [UTF-8]" , 1 , 0 , "I: 8-bit Unicode / CP874, O: CP874" },
+
+ // smart codecs that send in utf8
+ { "UTF-8 [ISO-8859-1]" , 1 , 1 , "I: 8-bit Unicode / Western Latin-1, O: 8-bit Unicode" },
+ { "UTF-8 [ISO-8859-2]" , 1 , 1 , "I: 8-bit Unicode / Central European 1, O: 8-bit Unicode" },
+ { "UTF-8 [ISO-8859-3]" , 1 , 1 , "I: 8-bit Unicode / Central European 2, O: 8-bit Unicode" },
+ { "UTF-8 [ISO-8859-4]" , 1 , 1 , "I: 8-bit Unicode / Baltic, Standard, O: 8-bit Unicode" },
+
+ { "UTF-8 [ISO-8859-5]" , 1 , 1 , "I: 8-bit Unicode / Cyrillic, ISO, O: 8-bit Unicode" },
+ { "UTF-8 [ISO-8859-6]" , 1 , 1 , "I: 8-bit Unicode / Arabic, Standard, O: 8-bit Unicode" },
+ { "UTF-8 [ISO-8859-7]" , 1 , 1 , "I: 8-bit Unicode / Greek, O: 8-bit Unicode" },
+ { "UTF-8 [ISO-8859-8]" , 1 , 1 , "I: 8-bit Unicode / Hebrew, visually ordered, O: 8-bit Unicode" },
+
+ { "UTF-8 [ISO-8859-8-i]" , 1 , 1 , "I: 8-bit Unicode / Hebrew, logically ordered, O: 8-bit Unicode" },
+ { "UTF-8 [ISO-8859-9]" , 1 , 1 , "I: 8-bit Unicode / Turkish, Latin-5, O: 8-bit Unicode" },
+ { "UTF-8 [ISO-8859-15]" , 1 , 1 , "I: 8-bit Unicode / Western, Latin-1 + Euro, O: 8-bit Unicode" },
+ { "UTF-8 [KOI8-R]" , 1 , 1 , "I: 8-bit Unicode / Cyrillic, KOI, O: 8-bit Unicode" },
+
+ { "UTF-8 [KOI8-U]" , 1 , 1 , "I: 8-bit Unicode / Ukrainian, O: 8-bit Unicode" },
+ { "UTF-8 [CP-1250]" , 1 , 1 , "I: 8-bit Unicode / Central European 3, O: 8-bit Unicode" },
+ { "UTF-8 [CP-1251]" , 1 , 1 , "I: 8-bit Unicode / Cyrillic, Windows, O: 8-bit Unicode" },
+ { "UTF-8 [CP-1252]" , 1 , 1 , "I: 8-bit Unicode / Western, CP, O: 8-bit Unicode" },
+
+ { "UTF-8 [CP-1253]" , 1 , 1 , "I: 8-bit Unicode / Greek, CP, O: 8-bit Unicode" },
+ { "UTF-8 [CP-1256]" , 1 , 1 , "I: 8-bit Unicode / Arabic, CP, O: 8-bit Unicode" },
+ { "UTF-8 [CP-1257]" , 1 , 1 , "I: 8-bit Unicode / Baltic, CP, O: 8-bit Unicode" },
+ { "UTF-8 [CP-1255]" , 1 , 1 , "I: 8-bit Unicode / Hebrew, CP, O: 8-bit Unicode" },
+
+ { "UTF-8 [CP-1254]" , 1 , 1 , "I: 8-bit Unicode / Turkish, CP, O: 8-bit Unicode" },
+ { "UTF-8 [TIS-620]" , 1 , 1 , "I: 8-bit Unicode / Thai, O: 8-bit Unicode" },
+#ifndef QT_NO_BIG_CODECS
+ { "UTF-8 [Big5]" , 1 , 1 , "I: 8-bit Unicode / Chinese Traditional, O: 8-bit Unicode" },
+ { "UTF-8 [Big5-HKSCS]" , 1 , 1 , "I: 8-bit Unicode / Chinese Traditional, Hong Kong, O: 8-bit Unicode" },
+
+ { "UTF-8 [GB18030]" , 1 , 1 , "I: 8-bit Unicode / Chinese Simplified, O: 8-bit Unicode" },
+ { "UTF-8 [JIS7]" , 1 , 1 , "I: 8-bit Unicode / Japanese (JIS7), O: 8-bit Unicode" },
+ { "UTF-8 [Shift-JIS]" , 1 , 1 , "I: 8-bit Unicode / Japanese (Shift-JIS), O: Japanese (Shift-JIS)" },
+ { "UTF-8 [EUC-JP]" , 1 , 1 , "I: 8-bit Unicode / Japanese (EUC-JP), O: Japanese (EUC-JP)" },
+
+ { "UTF-8 [EUC-KR]" , 1 , 1 , "I: 8-bit Unicode / Korean, O: 8-bit Unicode" },
+ { "UTF-8 [TSCII]" , 1 , 1 , "I: 8-bit Unicode / Tamil, O: 8-bit Unicode" },
+#endif
+ { "UTF-8 [ISO-8859-10]" , 1 , 1 , "I: 8-bit Unicode / ISO-8859-10, O: 8-bit Unicode" },
+ { "UTF-8 [ISO-8859-13]" , 1 , 1 , "I: 8-bit Unicode / ISO-8859-13, O: 8-bit Unicode" },
+
+ { "UTF-8 [ISO-8859-14]" , 1 , 1 , "I: 8-bit Unicode / ISO-8859-14, O: 8-bit Unicode" },
+ { "UTF-8 [IBM-850]" , 1 , 1 , "I: 8-bit Unicode / IBM-850, O: 8-bit Unicode" },
+ { "UTF-8 [IBM-866]" , 1 , 1 , "I: 8-bit Unicode / IBM-866, O: 8-bit Unicode" },
+ { "UTF-8 [CP874]" , 1 , 1 , "I: 8-bit Unicode / CP874, O: 8-bit Unicode" },
+
+ { 0 , 0 , 0 , 0 }
+ };
+
+ EncodingDescription * encodingDescription(int iIdx)
+ {
+ if(iIdx > NUM_ENCODINGS)return &(supported_encodings[NUM_ENCODINGS]);
+ return &(supported_encodings[iIdx]);
+ }
+
+ QTextCodec * codecForName(const char * szName)
+ {
+ KviStr szTmp = szName;
+ int idx = szTmp.findFirstIdx('[');
+ if(idx != -1)
+ {
+ // composite codec: either UTF-8 [child codec] or child codec [UTF-8]
+ KviSmartTextCodec * c = g_pSmartCodecDict->find(szName);
+ if(c)return c;
+
+
+ if(kvi_strEqualCIN("UTF-8 [",szName,7))
+ {
+ szTmp.replaceAll("UTF-8 [","");
+ szTmp.replaceAll("]","");
+ // smart codec that sends UTF-8
+ c = new KviSmartTextCodec(szName,szTmp.ptr(),true);
+ } else {
+ szTmp.cutFromFirst(' ');
+ // smart codec that sends child encoding
+ c = new KviSmartTextCodec(szName,szTmp.ptr(),false);
+ }
+ if(c->ok())
+ {
+ g_pSmartCodecDict->replace(szName,c);
+ return c;
+ } else {
+ delete c;
+ }
+ }
+ return QTextCodec::codecForName(szName);
+ }
+
+ const KviStr & localeName()
+ {
+ return g_szLang;
+ }
+
+ bool loadCatalogue(const QString &name,const QString &szLocaleDir)
+ {
+ //debug("Looking up catalogue %s",name);
+ if(g_pCatalogueDict->find(KviQString::toUtf8(name).data()))return true; // already loaded
+
+ QString szBuffer;
+
+ if(findCatalogue(szBuffer,name,szLocaleDir))
+ {
+ KviMessageCatalogue * c = new KviMessageCatalogue();
+ if(c->load(szBuffer))
+ {
+ //debug("KviLocale: loaded catalogue %s",name);
+ g_pCatalogueDict->insert(KviQString::toUtf8(name).data(),c);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ bool unloadCatalogue(const QString &name)
+ {
+ //debug("Unloading catalogue : %s",name);
+ return g_pCatalogueDict->remove(KviQString::toUtf8(name).data());
+ }
+
+ bool findCatalogue(QString &szBuffer,const QString& name,const QString& szLocaleDir)
+ {
+ KviStr szLocale = g_szLang;
+
+ QString szLocDir = szLocaleDir;
+ KviQString::ensureLastCharIs(szLocDir,KVI_PATH_SEPARATOR_CHAR);
+
+ KviQString::sprintf(szBuffer,"%Q%Q_%s.mo",&szLocDir,&name,szLocale.ptr());
+
+ if(KviFileUtils::fileExists(szBuffer))return true;
+
+ if(szLocale.findFirstIdx('.') != -1)
+ {
+ // things like en_GB.utf8
+ // kill them
+ szLocale.cutFromFirst('.');
+
+ KviQString::sprintf(szBuffer,"%Q%Q_%s.mo",&szLocDir,&name,szLocale.ptr());
+ if(KviFileUtils::fileExists(szBuffer))return true;
+ }
+
+ if(szLocale.findFirstIdx('@') != -1)
+ {
+ // things like @euro ?
+ // kill them
+ szLocale.cutFromFirst('@');
+ KviQString::sprintf(szBuffer,"%Q%Q_%s.mo",&szLocDir,&name,szLocale.ptr());
+ if(KviFileUtils::fileExists(szBuffer))return true;
+ }
+
+ if(szLocale.findFirstIdx('_') != -1)
+ {
+ // things like en_GB
+ // kill them
+ szLocale.cutFromFirst('_');
+ KviQString::sprintf(szBuffer,"%Q%Q_%s.mo",&szLocDir,&name,szLocale.ptr());
+ if(KviFileUtils::fileExists(szBuffer))return true;
+ }
+
+ // try the lower case version too
+ szLocale.toLower();
+ KviQString::sprintf(szBuffer,"%Q%Q_%s.mo",&szLocDir,&name,szLocale.ptr());
+ if(KviFileUtils::fileExists(szBuffer))return true;
+
+ return false;
+ }
+
+ //
+ // This function attempts to determine the current locale
+ // and then load the corresponding translation file
+ // from the KVIrc locale directory
+ // Returns true if the locale was correctly set
+ // i.e. the locale is C or POSIX (no translation needed)
+ // or the locale is correctly defined and the
+ // translation map was sucesfully loaded
+ //
+
+ void init(QApplication * app,const QString &localeDir)
+ {
+ // first of all try to find out the current locale
+ g_szLang="";
+#ifdef COMPILE_USE_QT4
+ QString szLangFile=QString("%1/.kvirc_force_locale").arg(QDir::homePath());
+#else
+ QString szLangFile=QString("%1/.kvirc_force_locale").arg(QDir::homeDirPath());
+#endif
+ if(KviFileUtils::fileExists(szLangFile))
+ {
+ QString szTmp;
+ KviFileUtils::readFile(szLangFile,szTmp);
+ g_szLang=szTmp;
+ }
+ if(g_szLang.isEmpty())g_szLang = kvi_getenv("KVIRC_LANG");
+#ifdef COMPILE_USE_QT4
+ if(g_szLang.isEmpty())g_szLang = QLocale::system().name();
+#else
+ if(g_szLang.isEmpty())g_szLang = QTextCodec::locale();
+#endif
+ if(g_szLang.isEmpty())g_szLang = kvi_getenv("LC_MESSAGES");
+ if(g_szLang.isEmpty())g_szLang = kvi_getenv("LANG");
+ if(g_szLang.isEmpty())g_szLang = "en";
+ g_szLang.stripWhiteSpace();
+
+ // the main catalogue is supposed to be kvirc_<language>.mo
+ g_pMainCatalogue = new KviMessageCatalogue();
+ // the catalogue dict
+ g_pCatalogueDict = new KviPointerHashTable<const char *,KviMessageCatalogue>;
+ g_pCatalogueDict->setAutoDelete(true);
+
+ // the smart codec dict
+ g_pSmartCodecDict = new KviPointerHashTable<const char *,KviSmartTextCodec>;
+ // the Qt docs explicitly state that we shouldn't delete
+ // the codecs by ourselves...
+ g_pSmartCodecDict->setAutoDelete(false);
+
+ if(g_szLang.hasData())
+ {
+ QString szBuffer;
+ if(findCatalogue(szBuffer,"kvirc",localeDir))
+ {
+ g_pMainCatalogue->load(szBuffer);
+ g_pTranslator = new KviTranslator(app,"kvirc_translator");
+ app->installTranslator(g_pTranslator);
+ } else {
+ KviStr szTmp = g_szLang;
+ szTmp.cutFromFirst('.');
+ szTmp.cutFromFirst('_');
+ szTmp.cutFromFirst('@');
+ szTmp.toLower();
+ if(!(kvi_strEqualCI(szTmp.ptr(),"en") ||
+ kvi_strEqualCI(szTmp.ptr(),"c") ||
+ kvi_strEqualCI(szTmp.ptr(),"us") ||
+ kvi_strEqualCI(szTmp.ptr(),"gb") ||
+ kvi_strEqualCI(szTmp.ptr(),"posix")))
+ {
+ // FIXME: THIS IS NO LONGER VALID!!!
+ debug("Can't find the catalogue for locale \"%s\" (%s)",g_szLang.ptr(),szTmp.ptr());
+ debug("There is no such translation or the $LANG variable was incorrectly set");
+ debug("You can use $KVIRC_LANG to override the catalogue name");
+ debug("For example you can set KVIRC_LANG to it_IT to force usage of the it.mo catalogue");
+ }
+ }
+ }
+
+ //g_pTextCodec = QTextCodec::codecForLocale();
+ //if(!g_pTextCodec)g_pTextCodec = QTextCodec::codecForLocale();
+ }
+
+ void done(QApplication * app)
+ {
+ delete g_pMainCatalogue;
+ delete g_pCatalogueDict;
+ delete g_pSmartCodecDict;
+ g_pMainCatalogue = 0;
+ g_pCatalogueDict = 0;
+ g_pSmartCodecDict = 0;
+ if(g_pTranslator)
+ {
+ app->removeTranslator(g_pTranslator);
+ delete g_pTranslator;
+ g_pTranslator = 0;
+ }
+ }
+
+ KviMessageCatalogue * getLoadedCatalogue(const QString& name)
+ {
+ return g_pCatalogueDict->find(KviQString::toUtf8(name).data());
+ }
+
+
+ const char * translate(const char * text,const char * context)
+ {
+ if(context)
+ {
+ KviMessageCatalogue * c = g_pCatalogueDict->find(context);
+ if(!c)
+ {
+ // FIXME: Should really try to load the catalogue here!
+ c = new KviMessageCatalogue();
+ g_pCatalogueDict->insert(context,c);
+ }
+ return c->translate(text);
+ }
+ return g_pMainCatalogue->translate(text);
+ }
+
+ const QString & translateToQString(const char * text,const char * context)
+ {
+ if(context)
+ {
+ KviMessageCatalogue * c = g_pCatalogueDict->find(context);
+ if(!c)
+ {
+ // FIXME: Should really try to load the catalogue here!
+ c = new KviMessageCatalogue();
+ g_pCatalogueDict->insert(context,c);
+ }
+ return c->translateToQString(text);
+ }
+ return g_pMainCatalogue->translateToQString(text);
+ }
+};
+
+KviTranslator::KviTranslator(QObject * par,const char * nam)
+#ifdef COMPILE_USE_QT4
+: QTranslator(par)
+#else
+: QTranslator(par,nam)
+#endif
+{
+}
+
+KviTranslator::~KviTranslator()
+{
+}
+
+#ifdef COMPILE_USE_QT4
+QString KviTranslator::translate(const char *context,const char * message,const char * comment) const
+{
+ // we ignore contexts and comments for qt translations
+ return g_pMainCatalogue->translateToQString(message);
+}
+#endif
+
+QString KviTranslator::find(const char *context,const char * message) const
+{
+ // we ignore contexts for qt translations
+ return g_pMainCatalogue->translateToQString(message);
+}
+
+#ifndef COMPILE_USE_QT4
+QTranslatorMessage KviTranslator::findMessage(const char * context,const char * sourceText,const char * comment) const
+{
+ // we ignore contexts for qt translations
+ return QTranslatorMessage(context,sourceText,comment,g_pMainCatalogue->translateToQString(sourceText));
+}
+#endif
+
+#if 0
+
+// a fake table that will force these translations
+// to be included in the *.pot file
+
+static QString fake_translations_table[]=
+{
+ // global
+ __tr2qs("OK"),
+ __tr2qs("Cancel"),
+ // color dialog
+ __tr2qs("Select color"),
+ __tr2qs("&Basic colors"),
+ __tr2qs("&Custom colors"),
+ __tr2qs("&Red"),
+ __tr2qs("&Green"),
+ __tr2qs("Bl&ue"),
+ __tr2qs("&Define Custom Colors >>"),
+ __tr2qs("&Add to Custom Colors"),
+ // font dialog
+ __tr2qs("Select Font"),
+ __tr2qs("&Font"),
+ __tr2qs("Font st&yle"),
+ __tr2qs("&Size"),
+ __tr2qs("Sample"),
+ __tr2qs("Effects"),
+ __tr2qs("Stri&keout"),
+ __tr2qs("&Underline"),
+ __tr2qs("Scr&ipt"),
+ //File selector
+ __tr2qs("Parent Directory"),
+ __tr2qs("Back"),
+ __tr2qs("Forward"),
+ __tr2qs("Reload"),
+ __tr2qs("New Directory"),
+ __tr2qs("Bookmarks"),
+ __tr2qs("Add Bookmark"),
+ __tr2qs("&Edit Bookmarks"),
+ __tr2qs("New Bookmark Folder..."),
+ __tr2qs("Configure"),
+ __tr2qs("Sorting"),
+ __tr2qs("By Name"),
+ __tr2qs("By Date"),
+ __tr2qs("By Size"),
+ __tr2qs("Reverse"),
+ __tr2qs("Directories First"),
+ __tr2qs("Case Insensitive"),
+ __tr2qs("Short View"),
+ __tr2qs("Detailed View"),
+ __tr2qs("Show Hidden Files"),
+ __tr2qs("Show Quick Access Navigation Panel"),
+ __tr2qs("Show Preview"),
+ __tr2qs("Separate Directories"),
+ __tr2qs("Often used directories"),
+ __tr2qs("Desktop"),
+ __tr2qs("Home Directory"),
+ __tr2qs("Floppy"),
+ __tr2qs("Temporary Files"),
+ __tr2qs("Network"),
+ __tr2qs("New Directory..."),
+ __tr2qs("Delete"),
+ __tr2qs("Thumbnail Previews"),
+ __tr2qs("Large Icons"),
+ __tr2qs("Small Icons"),
+ __tr2qs("Properties..."),
+ __tr2qs("&Automatic Preview"),
+ __tr2qs("&Preview"),
+ __tr2qs("&Location:"),
+ __tr2qs("&Filter:"),
+ __tr2qs("All Files"),
+ __tr2qs("&OK"),
+ __tr2qs("&Cancel")
+
+}
+
+#endif
diff --git a/src/kvilib/system/kvi_locale.h b/src/kvilib/system/kvi_locale.h
new file mode 100644
index 00000000..bc3ed8eb
--- /dev/null
+++ b/src/kvilib/system/kvi_locale.h
@@ -0,0 +1,146 @@
+#ifndef _KVI_LOCALE_H_
+#define _KVI_LOCALE_H_
+
+//=============================================================================
+//
+// File : kvi_locale.h
+// Creation date : Sat Jan 16 1999 18:15:01 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_string.h"
+#include "kvi_pointerhashtable.h"
+
+#include <qapplication.h>
+
+class QTextCodec;
+class KviMessageCatalogue;
+
+namespace KviLocale
+{
+ typedef struct _EncodingDescription
+ {
+ char * szName;
+ char bSmart; // is it a smart codec ?
+ char bSendUtf8; // does it send utf8 or the local charset ?
+ char * szDescription;
+ } EncodingDescription;
+
+ // you MUST start iterating from 0 and terminate when
+ // you get an entry with a NULL szName
+ KVILIB_API EncodingDescription * encodingDescription(int iIdx);
+ KVILIB_API QTextCodec * codecForName(const char * szName);
+ KVILIB_API const KviStr & localeName();
+ KVILIB_API bool findCatalogue(QString &szBuffer,const QString& name,const QString& szLocaleDir);
+ KVILIB_API bool loadCatalogue(const QString& name,const QString& szLocaleDir);
+ KVILIB_API KviMessageCatalogue * getLoadedCatalogue(const QString& name);
+ KVILIB_API bool unloadCatalogue(const QString& name);
+ KVILIB_API void init(QApplication * app,const QString& localeDir);
+ KVILIB_API void done(QApplication * app);
+ KVILIB_API const char * translate(const char * text,const char * context);
+ KVILIB_API const QString & translateToQString(const char * text,const char * context);
+};
+
+// not exported
+class KviTranslationEntry
+{
+public:
+ KviStr m_szKey;
+ KviStr m_szEncodedTranslation;
+ QString * m_pQTranslation;
+public:
+ KviTranslationEntry(char * keyptr,int keylen,char * trptr,int trlen)
+ : m_szKey(keyptr,keylen) , m_szEncodedTranslation(trptr,trlen)
+ {
+ m_pQTranslation = 0;
+ }
+
+ KviTranslationEntry(const char * keyandtr)
+ : m_szKey(keyandtr) , m_szEncodedTranslation(keyandtr)
+ {
+ m_pQTranslation = 0;
+ }
+
+ ~KviTranslationEntry()
+ {
+ if(m_pQTranslation)delete m_pQTranslation;
+ }
+};
+
+
+class KVILIB_API KviMessageCatalogue
+{
+public:
+ KviMessageCatalogue();
+ ~KviMessageCatalogue();
+protected:
+ //KviPointerHashTable<const char *,KviTranslationEntry> * m_pMessages;
+ KviPointerHashTable<const char *,KviTranslationEntry> * m_pMessages;
+ QTextCodec * m_pTextCodec;
+public:
+ bool load(const QString& name);
+ const char * translate(const char * text);
+ const QString & translateToQString(const char * text);
+};
+
+#ifndef _KVI_LOCALE_CPP_
+ extern KVILIB_API KviMessageCatalogue * g_pMainCatalogue;
+#endif // !_KVI_LOCALE_CPP_
+
+#define __tr(__text__) g_pMainCatalogue->translate(__text__)
+#define __tr_no_lookup(__text__) __text__
+#define __tr_no_xgettext(__text__) g_pMainCatalogue->translate(__text__)
+
+#define __tr2qs(__text__) g_pMainCatalogue->translateToQString(__text__)
+#define __tr2qs_no_xgettext(__text__) g_pMainCatalogue->translateToQString(__text__)
+
+#define __tr_ctx(__text__,__context__) KviLocale::translate(__text__,__context__)
+#define __tr_no_lookup_ctx(__text__,__context__) __text__
+#define __tr_no_xgettext_ctx(__text__,__context__) KviLocale::translate(__text__,__context__)
+#define __tr2qs_ctx(__text__,__context__) KviLocale::translateToQString(__text__,__context__)
+#define __tr2qs_ctx_no_xgettext(__text__,__context__) KviLocale::translateToQString(__text__,__context__)
+#define __tr2qs_no_lookup(__text__) __text__
+
+#include <qtranslator.h>
+#include <qstring.h>
+
+class KVILIB_API KviTranslator : public QTranslator
+{
+ Q_OBJECT
+ public:
+ KviTranslator(QObject * parent,const char * name);
+ ~KviTranslator();
+ public:
+#ifdef COMPILE_USE_QT4
+ virtual QString translate(const char * context,const char * message,const char * comment) const;
+#endif
+ // Deprecated in qt 4.x
+ virtual QString find(const char * context,const char * message) const;
+#ifndef COMPILE_USE_QT4
+ // Dead in qt 4.x
+ virtual QTranslatorMessage findMessage(const char * context,const char * sourceText,const char * comment = 0) const;
+#endif
+};
+
+
+#endif //!_KVI_LOCALE_H_
diff --git a/src/kvilib/system/kvi_process.h b/src/kvilib/system/kvi_process.h
new file mode 100644
index 00000000..ea2275dc
--- /dev/null
+++ b/src/kvilib/system/kvi_process.h
@@ -0,0 +1,37 @@
+#ifndef _KVI_PROCESS_H_
+#define _KVI_PROCESS_H_
+//=============================================================================
+//
+// File : kvi_process.h
+// Creation date : Tue Jan 30 2007 04:05:41 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_USE_QT4
+ #include <q3process.h>
+ #define KviProcess Q3Process
+#else
+ #include <qprocess.h>
+ #define KviProcess QProcess
+#endif
+
+#endif //!_KVI_PROCESS_H_
diff --git a/src/kvilib/system/kvi_stdarg.h b/src/kvilib/system/kvi_stdarg.h
new file mode 100644
index 00000000..15c5e078
--- /dev/null
+++ b/src/kvilib/system/kvi_stdarg.h
@@ -0,0 +1,65 @@
+#ifndef _KVI_STDARG_H_
+#define _KVI_STDARG_H_
+
+//=============================================================================
+//
+// File : kvi_stdarg.h
+// Creation date : Sat Jan 03 2004 02:08:14 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include <stdarg.h>
+
+#define kvi_va_list va_list
+#define kvi_va_start va_start
+//
+// kvi_va_start_by_reference should be used when the last known argument
+// is a reference type and not a pointer
+//
+// int SomeClass::sprintf(const QString &fmt,...)
+// {
+// kvi_va_list list;
+// kvi_va_start_by_reference(list,fmt);
+// ...
+// }
+//
+//
+#ifdef COMPILE_ON_WINDOWS
+ #define kvi_va_start_by_reference(__list,__arg) \
+ { \
+ int supercalifragilisticoespiralidoso=_INTSIZEOF(__arg); \
+ __asm lea eax,__arg \
+ __asm add eax,supercalifragilisticoespiralidoso \
+ __asm mov __list,eax \
+ }
+#elif defined(__GNUC__)
+ // gcc doesn't use the second argument
+ // so we just fool it to avoid the warnings
+ #define kvi_va_start_by_reference(__list,__arg) va_start(__list,((const char *)(&(__arg))))
+#else
+ #define kvi_va_start_by_reference va_start
+#endif
+#define kvi_va_arg va_arg
+#define kvi_va_end va_end
+
+
+
+#endif //_KVI_STDARG_H_
diff --git a/src/kvilib/system/kvi_thread.cpp b/src/kvilib/system/kvi_thread.cpp
new file mode 100644
index 00000000..e9ec3ac5
--- /dev/null
+++ b/src/kvilib/system/kvi_thread.cpp
@@ -0,0 +1,644 @@
+//=============================================================================
+//
+// File : kvi_thread.cpp
+// Creation date : Tue Jul 6 1999 16:04:45 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+
+#ifndef _GNU_SOURCE
+ #define _GNU_SOURCE
+#endif
+
+#include "kvi_thread.h"
+
+#ifdef COMPILE_ON_WINDOWS
+ #include <io.h> // for _pipe()
+#else
+ #include <unistd.h> //for pipe() and other tricks
+ #include <signal.h> // on Windows it is useless
+ #include <fcntl.h>
+#endif
+
+#include <errno.h>
+
+
+#include "kvi_string.h"
+#include "kvi_settings.h"
+#include "kvi_error.h"
+
+
+#include <qapplication.h>
+
+
+static void kvi_threadIgnoreSigalarm()
+{
+ // On Windows this stuff is useless anyway
+#ifdef COMPILE_IGNORE_SIGALARM
+ #ifndef COMPILE_ON_WINDOWS
+ // Funky hack for some Solaris machines (maybe others ?)
+ // For an obscure (at least to me) reason
+ // when using threads ,some part of the system
+ // starts kidding us by sending a SIGALRM in apparently
+ // "random" circumstances. (Xlib ?) (XServer ?)
+ // The default action for SIGALRM is to exit the application.
+ // Could not guess more about this stuff...
+ // Here goes a "blind" hack for that.
+
+ // Update: now we have an explaination too
+ //
+ // From: "Andre Stechert" (astechert at email dot com)
+ // To: pragma at kvirc dot net
+ // Subject: sigalarm on solaris ...
+ // Date: 26/7/2005 09:36
+
+ // Hi,
+ //    I noticed in your readme that you were having problems with sigalarm
+ // in your solaris port and you weren't sure why.  I quickly scanned your
+ // source code and noticed that you use usleep and threads.  That's the problem,
+ // if you haven't already figured it out. On Solaris, usleep is implemented with
+ // SIGALARM. So is threading. So if you the active thread changes while
+ // a usleep is in progress, bang, the process is dead.
+ //
+ // There is no real feedback on this at the moment: if somebody
+ // experiences the problems please drop me a mail at pragma at kvirc dot net
+ // and we'll try to look for a better solution.
+ // If the explaination is correct then KVIrc could even lock up on those machines
+ // (never returning from an usleep() call ?)...
+
+ struct sigaction ignr_act;
+ ignr_act.sa_handler = SIG_IGN;
+ sigemptyset(&ignr_act.sa_mask);
+
+ #ifdef SA_NOMASK
+ ignr_act.sa_flags = SA_NOMASK;
+ #else
+ ignr_act.sa_flags = 0;
+ #endif
+
+ #ifdef SA_RESTART
+ ignr_act.sa_flags |= SA_RESTART;
+ #endif
+
+ if(sigaction(SIGALRM,&ignr_act,0) == -1)debug("Failed to set SIG_IGN for SIGALRM.");
+ #endif
+#endif
+}
+
+#ifndef COMPILE_ON_WINDOWS
+
+static void kvi_threadSigpipeHandler(int)
+{
+ debug("Thread ????: Caught SIGPIPE: ignoring.");
+}
+
+#endif
+
+static void kvi_threadCatchSigpipe()
+{
+ // On windows this stuff is useless
+#ifndef COMPILE_ON_WINDOWS
+ struct sigaction act;
+ act.sa_handler=&kvi_threadSigpipeHandler;
+ sigemptyset(&(act.sa_mask));
+ sigaddset(&(act.sa_mask), SIGPIPE);
+ // CC: take care of SunOS which automatically restarts interrupted system
+ // calls (and thus does not have SA_RESTART)
+#ifdef SA_NOMASK
+ act.sa_flags = SA_NOMASK;
+#else
+ act.sa_flags = 0;
+#endif
+
+#ifdef SA_RESTART
+ act.sa_flags |= SA_RESTART;
+#endif
+
+ if(sigaction(SIGPIPE,&act,0L) == -1)debug("Failed to set the handler for SIGPIPE.");
+#endif
+}
+
+static void kvi_threadInitialize()
+{
+#ifndef COMPILE_ON_WINDOWS
+ kvi_threadIgnoreSigalarm();
+ kvi_threadCatchSigpipe();
+#endif
+}
+
+
+
+#define KVI_THREAD_PIPE_SIDE_MASTER 0
+#define KVI_THREAD_PIPE_SIDE_SLAVE 1
+
+// the maximum length of the slave->master queue
+// over this length , the slave is forced to usleep()
+#define KVI_THREAD_MAX_EVENT_QUEUE_LENGTH 50
+
+static KviThreadManager * g_pThreadManager = 0;
+
+void KviThreadManager::globalInit()
+{
+ kvi_threadInitialize(); // we want this to apply to the main thread too
+ g_pThreadManager = new KviThreadManager();
+}
+
+void KviThreadManager::globalDestroy()
+{
+ delete g_pThreadManager;
+ g_pThreadManager = 0;
+}
+
+KviThreadManager::KviThreadManager()
+: QObject()
+{
+ if(g_pThreadManager)debug("Hey...what are ya doing ?");
+
+
+ m_pMutex = new KviMutex();
+ m_pThreadList = new KviPointerList<KviThread>;
+ m_pThreadList->setAutoDelete(false);
+
+ m_iWaitingThreads = 0;
+
+#ifndef COMPILE_ON_WINDOWS
+
+ m_iTriggerCount = 0;
+
+ m_pEventQueue = new KviPointerList<KviThreadPendingEvent>;
+ m_pEventQueue->setAutoDelete(true);
+
+ if(pipe(m_fd) != 0)
+ {
+ debug("Ops...thread manager pipe creation failed (%s)",KviQString::toUtf8(KviError::getDescription(KviError::translateSystemError(errno))).data());
+ }
+
+ if(fcntl(m_fd[KVI_THREAD_PIPE_SIDE_SLAVE],F_SETFL,O_NONBLOCK) == -1)
+ {
+ debug("Ops...thread manager slave pipe initialisation failed (%s)",KviQString::toUtf8(KviError::getDescription(KviError::translateSystemError(errno))).data());
+ }
+
+ if(fcntl(m_fd[KVI_THREAD_PIPE_SIDE_MASTER],F_SETFL,O_NONBLOCK) == -1)
+ {
+ debug("Ops...thread manager master pipe initialisation failed (%s)",KviQString::toUtf8(KviError::getDescription(KviError::translateSystemError(errno))).data());
+ }
+
+ m_pSn = new QSocketNotifier(m_fd[KVI_THREAD_PIPE_SIDE_MASTER],QSocketNotifier::Read);
+ connect(m_pSn,SIGNAL(activated(int)),this,SLOT(eventsPending(int)));
+ m_pSn->setEnabled(true);
+#endif
+}
+
+
+KviThreadManager::~KviThreadManager()
+{
+ m_pMutex->lock();
+ // Terminate all the slaves
+ while(KviThread *t = m_pThreadList->first())
+ {
+ m_pMutex->unlock();
+ delete t;
+ m_pMutex->lock();
+ }
+
+ // there are no more child threads
+ // thus no more slave events are sent.
+ // Disable the socket notifier, we no longer need it
+#ifndef COMPILE_ON_WINDOWS
+ m_pSn->setEnabled(false);
+ delete m_pSn;
+ m_pSn = 0;
+#endif
+
+ // we're no longer in this world
+ g_pThreadManager = 0;
+
+#ifndef COMPILE_ON_WINDOWS
+ // close the pipes
+ close(m_fd[KVI_THREAD_PIPE_SIDE_SLAVE]);
+ close(m_fd[KVI_THREAD_PIPE_SIDE_MASTER]);
+ // Kill the pending events
+ while(KviThreadPendingEvent *ev = m_pEventQueue->first())
+ {
+ delete ev->e;
+ m_pEventQueue->removeFirst();
+ }
+ delete m_pEventQueue;
+ m_pEventQueue = 0;
+#endif
+
+ m_pMutex->unlock();
+
+ // finish the cleanup
+ delete m_pMutex;
+ m_pMutex = 0;
+ delete m_pThreadList;
+ m_pThreadList = 0;
+
+ // byez :)
+}
+
+void KviThreadManager::killPendingEvents(QObject * receiver)
+{
+#ifndef COMPILE_ON_WINDOWS
+ if(!g_pThreadManager)return;
+ g_pThreadManager->killPendingEventsByReceiver(receiver);
+#endif
+}
+
+void KviThreadManager::killPendingEventsByReceiver(QObject * receiver)
+{
+#ifndef COMPILE_ON_WINDOWS
+ KviPointerList<KviThreadPendingEvent> l;
+ l.setAutoDelete(false);
+ m_pMutex->lock();
+ for(KviThreadPendingEvent * ev = m_pEventQueue->first();ev;ev = m_pEventQueue->next())
+ {
+ if(ev->o == receiver)l.append(ev);
+ }
+ for(KviThreadPendingEvent * ev = l.first();ev;ev = l.next())
+ {
+ delete ev->e;
+ m_pEventQueue->removeRef(ev);
+ }
+ m_pMutex->unlock();
+#endif
+}
+
+void KviThreadManager::registerSlaveThread(KviThread *t)
+{
+ m_pMutex->lock();
+ m_pThreadList->append(t);
+ m_pMutex->unlock();
+}
+
+void KviThreadManager::unregisterSlaveThread(KviThread *t)
+{
+ m_pMutex->lock();
+ m_pThreadList->removeRef(t);
+ m_pMutex->unlock();
+}
+
+void KviThreadManager::postSlaveEvent(QObject *o,QEvent *e)
+{
+#ifdef COMPILE_ON_WINDOWS
+ QApplication::postEvent(o,e); // we believe this to be thread-safe
+#else
+ KviThreadPendingEvent * ev = new KviThreadPendingEvent;
+ ev->o = o;
+ ev->e = e;
+
+ m_pMutex->lock();
+
+ // if the queue gets too long , make this (slave) thread sleep
+
+ // there is a special case where we can't stop the slaves posting events
+ // it's when a thread-master-side is waiting for it's thread-slave-side
+ // it the thread-master-side runs in the application main thread then
+ // the main thread is sleeping and can't process events.
+ // Since we can't be really sure that the thread-master-side will be running
+ // on the main application thread we also can't artificially process the events.
+ // So the solution is to skip this algorithm when at least one
+ // thread is in waiting state.
+ while((m_pEventQueue->count() > KVI_THREAD_MAX_EVENT_QUEUE_LENGTH) && (m_iWaitingThreads < 1))
+ {
+ // wait for the master to process the queue
+
+ m_pMutex->unlock();
+
+ // WARNING : This will fail if for some reason
+ // the master thread gets here! It will wait indefinitely for itself
+ // if(pthread_self() != m_hMasterThread) ... ????
+
+#ifdef COMPILE_ON_WINDOWS
+ ::Sleep(1); // 1ms
+#else
+ // FIXME : use nanosleep() ?
+ ::usleep(1000); // 1 ms
+#endif
+ m_pMutex->lock();
+ }
+
+ m_pEventQueue->append(ev);
+ // Write bulk to the pipe... but only if there is no other wakeup pending
+ if(m_iTriggerCount < 1)
+ {
+ // I don't know if writing to a pipe is reentrant
+ // thus, in doubt, the write is interlocked (it's non blocking anyway)
+ int written = write(m_fd[KVI_THREAD_PIPE_SIDE_SLAVE],"?",1);
+ if(written < 1)
+ {
+ // ops.. failed to write down the event..
+ // this is quite irritating now...
+ debug("Ops.. failed to write down the trigger");
+ // FIXME: maybe a single shot timer ?
+ } else {
+ m_iTriggerCount++;
+ }
+ } // else no need to trigger : there is a wakeup pending in there
+
+ m_pMutex->unlock();
+
+#endif
+}
+
+void KviThreadManager::eventsPending(int fd)
+{
+#ifndef COMPILE_ON_WINDOWS
+ char buf[10];
+ // do we need to check for errors here ?
+ int readed = read(fd,buf,10);
+
+ m_pMutex->lock();
+ // welcome to the critical section :)
+
+ // grab the first event in the queue
+ while(KviThreadPendingEvent *ev = m_pEventQueue->first())
+ {
+ // allow the other threads to post events:
+ // unlock the event queue
+ m_pMutex->unlock();
+ // let the app process the event
+ // DANGER !
+ QApplication::postEvent(ev->o,ev->e);
+
+ // jump out of the loop if we have been destroyed
+ if(!g_pThreadManager)return;
+ // ufff... we're still alive :)))
+
+ // regrab the event queue
+ m_pMutex->lock();
+ // remove the event we have just processed
+ m_pEventQueue->removeRef(ev);
+ // here we're looping locked and havn't decremended the trigger count
+ }
+ // decrement the trigger count on the line: still atomic
+ if(readed >= 0)
+ {
+ if(readed < m_iTriggerCount)
+ {
+ m_iTriggerCount -= readed;
+ } else {
+ m_iTriggerCount = 0;
+ }
+ }
+
+ // ok , job done.. can relax now
+ m_pMutex->unlock();
+
+#endif
+}
+
+void KviThreadManager::threadEnteredWaitState()
+{
+ m_pMutex->lock();
+ m_iWaitingThreads++;
+ m_pMutex->unlock();
+}
+
+void KviThreadManager::threadLeftWaitState()
+{
+ m_pMutex->lock();
+ m_iWaitingThreads--;
+ if(m_iWaitingThreads < 0)
+ {
+ debug("Ops.. got a negative number of waiting threads ?");
+ m_iWaitingThreads = 0;
+ }
+ m_pMutex->unlock();
+}
+
+#ifndef COMPILE_ON_WINDOWS
+ bool KviMutex::locked()
+ {
+ if(!kvi_threadMutexTryLock(&m_mutex))return true;
+ kvi_threadMutexUnlock(&m_mutex);
+ return false;
+ }
+#endif
+
+#ifdef COMPILE_ON_WINDOWS
+DWORD WINAPI internal_start_thread(LPVOID arg)
+{
+ // Slave thread...
+ ((KviThread *)arg)->internalThreadRun_doNotTouchThis();
+ return 0;
+}
+#else
+static void * internal_start_thread(void * arg)
+{
+ // Slave thread...
+ ((KviThread *)arg)->internalThreadRun_doNotTouchThis();
+ return 0;
+}
+#endif
+
+KviThread::KviThread()
+{
+ g_pThreadManager->registerSlaveThread(this);
+ m_pRunningMutex = new KviMutex();
+ setRunning(false);
+ setStartingUp(false);
+}
+
+KviThread::~KviThread()
+{
+// debug(">> KviThread::~KviThread() : (this = %d)",this);
+ wait();
+ delete m_pRunningMutex;
+ g_pThreadManager->unregisterSlaveThread(this);
+// debug("<< KviThread::~KviThread() : (this = %d)",this);
+}
+
+void KviThread::setRunning(bool bRunning)
+{
+ m_pRunningMutex->lock();
+ m_bRunning = bRunning;
+ m_pRunningMutex->unlock();
+}
+
+void KviThread::setStartingUp(bool bStartingUp)
+{
+ m_pRunningMutex->lock();
+ m_bStartingUp = bStartingUp;
+ m_pRunningMutex->unlock();
+}
+
+bool KviThread::isRunning()
+{
+ bool bRunning = true;
+ m_pRunningMutex->lock();
+ bRunning = m_bRunning;
+ m_pRunningMutex->unlock();
+ return bRunning;
+}
+
+bool KviThread::isStartingUp()
+{
+ bool bIsStartingUp = true;
+ m_pRunningMutex->lock();
+ bIsStartingUp = m_bStartingUp;
+ m_pRunningMutex->unlock();
+ return bIsStartingUp;
+}
+
+bool KviThread::start()
+{
+ // We're on the master side thread here!
+ if(isStartingUp() || isRunning())return false;
+ setStartingUp(true);
+ return kvi_threadCreate(&m_thread,internal_start_thread,this);
+}
+
+void KviThread::wait()
+{
+ // We're on the master side here...and we're waiting the slave to exit
+// debug(">> KviThread::wait() (this=%d)",this);
+ while(isStartingUp())usleep(500); // sleep 500 microseconds
+// debug("!! KviThread::wait() (this=%d)",this);
+ g_pThreadManager->threadEnteredWaitState();
+ while(isRunning())
+ {
+ usleep(500); // sleep 500 microseconds
+ }
+ g_pThreadManager->threadLeftWaitState();
+// debug("<< KviThread::wait() (this=%d)",this);
+}
+
+void KviThread::exit()
+{
+ // We're on the slave side thread here! (m_bRunning is true , m_bStartingUp is false)
+ setRunning(false);
+ kvi_threadExit();
+}
+
+void KviThread::internalThreadRun_doNotTouchThis()
+{
+ // we're on the slave thread here!
+// debug(">> KviThread::internalRun (this=%d)",this);
+ setRunning(true);
+ setStartingUp(false);
+ kvi_threadInitialize();
+ run();
+ setRunning(false);
+// debug("<< KviThread::internalRun (this=%d",this);
+}
+
+void KviThread::usleep(unsigned long usec)
+{
+#ifdef COMPILE_ON_WINDOWS
+ int s = usec / 1000;
+ if(s < 1)s = 1;
+ ::Sleep(s); // Sleep one millisecond...this is the best that we can do
+#else
+ // FIXME : use nanosleep() ?
+ ::usleep(usec);
+#endif
+}
+
+void KviThread::msleep(unsigned long msec)
+{
+#ifdef COMPILE_ON_WINDOWS
+ ::Sleep(msec);
+#else
+ // FIXME : use nanosleep() ?
+ ::usleep(msec * 1000);
+#endif
+}
+
+void KviThread::sleep(unsigned long sec)
+{
+#ifdef COMPILE_ON_WINDOWS
+ ::Sleep(sec * 1000);
+#else
+ ::sleep(sec);
+#endif
+}
+
+void KviThread::postEvent(QObject * o,QEvent *e)
+{
+ // slave side
+ g_pThreadManager->postSlaveEvent(o,e);
+}
+
+
+
+KviSensitiveThread::KviSensitiveThread()
+: KviThread()
+{
+ m_pLocalEventQueueMutex = new KviMutex();
+ m_pLocalEventQueue = new KviPointerList<KviThreadEvent>;
+ m_pLocalEventQueue->setAutoDelete(false);
+}
+
+KviSensitiveThread::~KviSensitiveThread()
+{
+// debug("Entering KviSensitiveThread::~KviSensitiveThread (this=%d)",this);
+ terminate();
+// debug("KviSensitiveThread::~KviSensitiveThread : terminate called (This=%d)",this);
+ m_pLocalEventQueueMutex->lock();
+ m_pLocalEventQueue->setAutoDelete(true);
+ delete m_pLocalEventQueue;
+ m_pLocalEventQueue = 0;
+ m_pLocalEventQueueMutex->unlock();
+ delete m_pLocalEventQueueMutex;
+ m_pLocalEventQueueMutex = 0;
+// debug("Exiting KviSensitiveThread::~KviSensitiveThread (this=%d)",this);
+}
+
+void KviSensitiveThread::enqueueEvent(KviThreadEvent *e)
+{
+// debug(">>> KviSensitiveThread::enqueueEvent() (this=%d)",this);
+ m_pLocalEventQueueMutex->lock();
+ if(!m_pLocalEventQueue)
+ {
+ // ops...already terminated (???)...eat the event and return
+ delete e;
+ m_pLocalEventQueueMutex->unlock();
+ return;
+ }
+ m_pLocalEventQueue->append(e);
+ m_pLocalEventQueueMutex->unlock();
+// debug("<<< KviSensitiveThread::enqueueEvent() (this=%d)",this);
+}
+
+KviThreadEvent * KviSensitiveThread::dequeueEvent()
+{
+// debug(">>> KviSensitiveThread::dequeueEvent() (this=%d)",this);
+ KviThreadEvent * ret;
+ m_pLocalEventQueueMutex->lock();
+ ret = m_pLocalEventQueue->first();
+ if(ret)m_pLocalEventQueue->removeFirst();
+ m_pLocalEventQueueMutex->unlock();
+// debug("<<< KviSensitiveThread::dequeueEvent() (this=%d)",this);
+ return ret;
+}
+
+void KviSensitiveThread::terminate()
+{
+// debug("Entering KviSensitiveThread::terminate (this=%d)",this);
+ enqueueEvent(new KviThreadEvent(KVI_THREAD_EVENT_TERMINATE));
+// debug("KviSensitiveThread::terminate() : event enqueued waiting (this=%d)",this);
+ wait();
+// debug("Exiting KviSensitiveThread::terminate (this=%d)",this);
+}
+
diff --git a/src/kvilib/system/kvi_thread.h b/src/kvilib/system/kvi_thread.h
new file mode 100644
index 00000000..bd6dab3b
--- /dev/null
+++ b/src/kvilib/system/kvi_thread.h
@@ -0,0 +1,378 @@
+#ifndef _KVI_THREAD_H_
+#define _KVI_THREAD_H_
+//
+// File : kvi_thread.h
+// Creation date : Mon May 17 1999 04:26:41 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+#include "kvi_heapobject.h"
+#include "kvi_string.h"
+
+#include <qnamespace.h>
+#include <qobject.h>
+#include <qsocketnotifier.h>
+#include "kvi_pointerlist.h"
+#include <qevent.h>
+
+
+//
+// Simple thread implementation
+// This is enough for KVIrc needs
+// HANDLE WITH CARE
+//
+
+
+// Portability stuff
+
+#ifdef COMPILE_ON_WINDOWS
+
+ #include <winsock2.h> // this will pull in windows.h and will avoid windock.h inclusion
+ //#include <windows.h>
+ // Windoze thread abstraction layer
+ #define kvi_mutex_t HANDLE
+ inline void kvi_threadMutexInit(kvi_mutex_t * _pMutex_t)
+ {
+ *_pMutex_t = CreateMutex(0,0,NULL);
+ }
+ #define kvi_threadMutexLock(_pMutex_t) WaitForSingleObject(*_pMutex_t,INFINITE)
+ #define kvi_threadMutexUnlock(_pMutex_t) ReleaseMutex(*_pMutex_t)
+ #define kvi_threadMutexDestroy(_pMutex_t) CloseHandle(*_pMutex_t)
+ inline bool kvi_threadMutexTryLock(kvi_mutex_t *_pMutex_t)
+ {
+ return (WaitForSingleObject(*_pMutex_t,0) == WAIT_OBJECT_0);
+ }
+
+ #define kvi_thread_t HANDLE
+
+ inline bool kvi_threadCreate(kvi_thread_t *t,LPTHREAD_START_ROUTINE start_routine,void * arg)
+ {
+ DWORD dwThreadId;
+ *t = CreateThread(NULL,0,start_routine,arg,0,&dwThreadId);
+ return (*t != NULL);
+ }
+
+ #define kvi_threadExit() ExitThread(0)
+
+#else
+ #ifdef COMPILE_THREADS_USE_POSIX
+ // Glibc pthread implementation
+
+ #include <pthread.h>
+ #include <errno.h> // for EBUSY
+
+ // Mutex stuff
+ #define kvi_mutex_t pthread_mutex_t
+ #define kvi_threadMutexInit(_pMutex_t) pthread_mutex_init(_pMutex_t,0)
+ #define kvi_threadMutexLock(_pMutex_t) pthread_mutex_lock(_pMutex_t)
+ #define kvi_threadMutexUnlock(_pMutex_t) pthread_mutex_unlock(_pMutex_t)
+ #define kvi_threadMutexDestroy(_pMutex_t) pthread_mutex_destroy(_pMutex_t)
+ inline bool kvi_threadMutexTryLock(kvi_mutex_t *_pMutex_t)
+ {
+ return (pthread_mutex_trylock(_pMutex_t) != EBUSY);
+ }
+ // Actually unused
+ // #define kvi_threadMutexTryLock(_pMutex_t) pthread_mutex_trylock(_pMutex_t)
+
+ // Thread stuff
+ #define kvi_thread_t pthread_t
+
+ inline bool kvi_threadCreate(kvi_thread_t *t,void * (*start_routine)(void *),void * arg)
+ {
+ pthread_attr_t a;
+ pthread_attr_init(&a);
+ pthread_attr_setinheritsched(&a,PTHREAD_INHERIT_SCHED);
+ pthread_attr_setdetachstate(&a,PTHREAD_CREATE_DETACHED);
+
+ int ret = pthread_create(t,&a,start_routine,arg);
+
+ pthread_attr_destroy(&a);
+ return (ret == 0);
+ }
+
+ // We don't care about exit codes at all
+ #define kvi_threadExit() pthread_exit(0)
+ #else
+ #ifdef COMPILE_THREADS_USE_SOLARIS_LIBTHREAD
+ // Native solaris implementation
+ #include <thread.h>
+ #include <synch.h>
+ #include <errno.h>
+
+ // Mutex stuff
+ #define kvi_mutex_t mutex_t
+ #define kvi_threadMutexInit(_pMutex_t) mutex_init(_pMutex_t,0,0)
+ #define kvi_threadMutexLock(_pMutex_t) mutex_lock(_pMutex_t)
+ #define kvi_threadMutexUnlock(_pMutex_t) mutex_unlock(_pMutex_t)
+ #define kvi_threadMutexDestroy(_pMutex_t) mutex_destroy(_pMutex_t)
+ inline bool kvi_threadMutexTryLock(kvi_mutex_t *_pMutex_t)
+ {
+ return (mutex_trylock(_pMutex_t) != EBUSY);
+ };
+ // Actually unused
+ // #define kvi_threadMutexTryLock(_pMutex_t) mutex_trylock(_pMutex_t)
+
+ // Thread stuff
+ #define kvi_thread_t thread_t
+
+ inline bool kvi_threadCreate(kvi_thread_t *t,void * (*start_routine)(void *),void *arg)
+ {
+ return (thr_create(0,0,start_routine,arg,THR_DETACHED,t) == 0);
+ }
+
+ // We don't care about exit codes at all
+ #define kvi_threadExit() thr_exit(0)
+ #else
+// FIXME: #warning "Missing a decent thread implementation: we're going to fail , sorry!"
+ #endif
+ #endif
+#endif
+
+class KVILIB_API KviMutex : public KviHeapObject
+{
+private:
+ kvi_mutex_t m_mutex;
+#ifdef COMPILE_ON_WINDOWS
+ bool m_bLocked;
+#endif
+public:
+ KviMutex(){ kvi_threadMutexInit(&m_mutex); };
+ virtual ~KviMutex(){ kvi_threadMutexDestroy(&m_mutex); };
+public:
+#ifdef COMPILE_ON_WINDOWS
+ void lock(){ kvi_threadMutexLock(&m_mutex); m_bLocked = true; };
+ void unlock(){ m_bLocked = false; kvi_threadMutexUnlock(&m_mutex); };
+ bool locked(){ return m_bLocked; };
+#else
+ void lock(){ kvi_threadMutexLock(&m_mutex); };
+ void unlock(){ kvi_threadMutexUnlock(&m_mutex); };
+ bool locked();
+#endif
+};
+
+
+// simple thread class implementation
+// this is also called "Blind" thread class
+
+class KVILIB_API KviThread : public KviHeapObject
+{
+public:
+ KviThread();
+ virtual ~KviThread();
+private:
+ kvi_thread_t m_thread;
+ bool m_bRunning;
+ bool m_bStartingUp;
+ KviMutex * m_pRunningMutex;
+ KviPointerList<QEvent> * m_pLocalEventQueue;
+public:
+ // public KviThread interface
+ // HANDLE WITH CARE
+
+ // Runs the thread...call only from external threads!!! :)
+ // This function returns true if the child thread has been succesfully created
+ // this des not mean that run() is being already executed...
+ // isStartingUp() will return true from this moment until
+ // the child thread jumps into run() where it will be set to running state (isRunning() == true)
+ // and removed from startingUp state.
+ bool start();
+ // Returns the state of the thread...safe to call from anywhere
+ bool isRunning();
+ // Returns the state of the thread...safe to call from anywhere
+ bool isStartingUp(); // start() called , but not in run() yet...
+ // Waits for the termination of this thread: call only from external threads!!! :)
+ void wait();
+ // DO NOT TOUCH THIS ONE!
+ void internalThreadRun_doNotTouchThis();
+
+ static void sleep(unsigned long sec);
+ static void msleep(unsigned long msec);
+ static void usleep(unsigned long usec);
+protected:
+ // protected KviThread interface
+ // HANDLE WITH CARE TOO!
+
+ // Reimplement this with your job
+ virtual void run(){};
+ // Terminates the execution of the calling thread
+ void exit();
+ // The tricky part: threadsafe event dispatching
+ // Slave thread -> main thread objects
+ void postEvent(QObject *o,QEvent *e);
+private:
+ void setRunning(bool bRunning);
+ void setStartingUp(bool bStartingUp);
+};
+
+// QEvent::Type for Thread events
+#define KVI_THREAD_EVENT (((int)QEvent::User) + 2000)
+
+// CONSTANTS FOR KviThreadEvent::eventId();
+
+///////////////////////////////////////////////////////////////
+// extern -> slave thread
+
+// Your reimplementation of KviSensitiveThread MUST handle this
+// and exit when this event is received
+
+// Terminate is a plain KviThreadEvent
+#define KVI_THREAD_EVENT_TERMINATE 0
+
+///////////////////////////////////////////////////////////////
+// slave thread -> master object
+
+// The following standard events are sent from the thread to the master object
+
+// The following are plain KviThreadEvent objects
+#define KVI_THREAD_EVENT_SUCCESS 100
+
+// The following are KviThreadDataEvent<int>
+#define KVI_THREAD_EVENT_STATECHANGE 150
+
+// The following are KviThreadDataEvent<KviStr>
+#define KVI_THREAD_EVENT_MESSAGE 200
+#define KVI_THREAD_EVENT_WARNING 201
+#define KVI_THREAD_EVENT_ERROR 202
+#define KVI_THREAD_EVENT_DATA 203
+
+// The following is KviThreadDataEvent<KviDataBuffer>
+#define KVI_THREAD_EVENT_BINARYDATA 300
+
+// The user events
+#define KVI_THREAD_USER_EVENT_BASE 1000
+
+// #warning "Get rid of the m_szMessage member of KviThreadEvent : eventual data should be passed with a KviThreadDataEvent"
+
+// Base class for all thread events
+class KVILIB_API KviThreadEvent : public QEvent, public KviHeapObject
+{
+protected:
+ int m_eventId;
+ KviThread * m_pSender;
+public:
+ KviThreadEvent(int evId,KviThread * sender = 0)
+ : QEvent((QEvent::Type)KVI_THREAD_EVENT) , m_eventId(evId) , m_pSender(sender) {};
+ virtual ~KviThreadEvent(){};
+public:
+ // This is the sender of the event
+ // WARNING : this MAY be null , threads CAN send anonymous events
+ KviThread * sender(){ return m_pSender; };
+ int id(){ return m_eventId; };
+};
+
+template<class TData> class KviThreadDataEvent : public KviThreadEvent
+{
+protected:
+ TData * m_pData;
+public:
+ KviThreadDataEvent(int evId,TData * pData = 0,KviThread * sender = 0)
+ : KviThreadEvent(evId,sender){ m_pData = pData; };
+ virtual ~KviThreadDataEvent(){ if(m_pData)delete m_pData; };
+public:
+ void setData(TData * d){ if(m_pData)delete m_pData; m_pData = d; };
+ TData * getData(){ TData * aux = m_pData; m_pData = 0; return aux; };
+ TData * data(){ return m_pData; };
+};
+
+// A thread that has also an internal event queue
+// so events can be posted from the master side to the slave one
+// Reimplementations of this class should periodically check
+// dequeueEvent() and eventually process the incoming events (and then DELETE it)
+
+// KVI_THREAD_EVENT_TERMINATE should be always handled by the reimplementation
+// and it should always exit (cleanly) when this event is received
+
+
+class KVILIB_API KviSensitiveThread : public KviThread
+{
+public:
+ KviSensitiveThread();
+ virtual ~KviSensitiveThread();
+protected:
+ KviMutex * m_pLocalEventQueueMutex;
+ KviPointerList<KviThreadEvent> * m_pLocalEventQueue;
+public:
+ // enqueues an event directed to THIS thread
+ // the event must be allocated with NEW and
+ // will be destroyed on the slave side
+ void enqueueEvent(KviThreadEvent *e);
+ // enqueues a terminate event and waits() for the slave thread
+ // the slave thread MUST handle KVI_THREAD_EVENT_TERMINATE
+ void terminate();
+protected:
+ // slave side:
+ // returns the first event in the local queue
+ // the event MUST BE DELETED after processing
+ KviThreadEvent * dequeueEvent();
+};
+
+// =============================================================================================//
+// This is private stuff...only KviThread and KviApp may use it
+// and may call only specific functions...don't touch.
+
+typedef struct _KviThreadPendingEvent
+{
+ QObject *o;
+ QEvent *e;
+} KviThreadPendingEvent;
+
+class KVILIB_API KviThreadManager : public QObject
+{
+ friend class KviApp;
+ friend class KviThread;
+ Q_OBJECT
+protected:
+ // These should be private...but we don't want anyone to complain
+ // Treat as private plz.
+ KviThreadManager();
+ ~KviThreadManager();
+public:
+ static void killPendingEvents(QObject * receiver);
+private:
+#ifndef COMPILE_ON_WINDOWS
+ QSocketNotifier * m_pSn;
+#endif
+ KviMutex * m_pMutex; // This class performs only atomic operations
+ KviPointerList<KviThread> * m_pThreadList;
+ int m_iWaitingThreads;
+#ifndef COMPILE_ON_WINDOWS
+ KviPointerList<KviThreadPendingEvent> * m_pEventQueue;
+ int m_fd[2];
+ int m_iTriggerCount;
+#endif
+protected:
+ // Public to KviThread only
+ void registerSlaveThread(KviThread *t);
+ void unregisterSlaveThread(KviThread *t);
+
+ void threadEnteredWaitState();
+ void threadLeftWaitState();
+
+ void postSlaveEvent(QObject *o,QEvent *e);
+ void killPendingEventsByReceiver(QObject * receiver);
+ // Public to KviApp only
+ static void globalInit();
+ static void globalDestroy();
+private slots:
+ void eventsPending(int fd);
+};
+
+
+#endif //!_KVI_THREAD_H_
diff --git a/src/kvilib/system/kvi_time.cpp b/src/kvilib/system/kvi_time.cpp
new file mode 100644
index 00000000..f500b7d4
--- /dev/null
+++ b/src/kvilib/system/kvi_time.cpp
@@ -0,0 +1,135 @@
+//=============================================================================
+//
+// File : kvi_time.cpp
+// Creation date : Tue Sep 25 17:35:13 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+
+#include "kvi_time.h"
+#include "kvi_qstring.h"
+#include "kvi_locale.h"
+
+#ifdef COMPILE_ON_WINDOWS
+ #include <windows.h> // GetSystemTime
+
+ // Call SystemTimeToFileTime to copy the system time to a FILETIME structure.
+ // Call GetSystemTime to get the current system time to pass to SystemTimeToFileTime.
+ // Copy the contents of the FILETIME structure to a ULARGE_INTEGER structure.
+ // Initialize a SYSTEMTIME structure with the date and time of the first second of January 1, 1970.
+ // Call SystemTimeToFileTime, passing the SYSTEMTIME structure initialized in Step 3 to the call.
+ // Copy the contents of the FILETIME structure returned by SystemTimeToFileTime in Step 4 to
+ // a second ULARGE_INTEGER. The copied value should be greater than or equal to the value copied
+ // in Step 2. Subtract the 64-bit value in the ULARGE_INTEGER structure initialized in Step 2
+ // from the 64-bit value of the ULARGE_INTEGER structure initialized in Step 5.
+ // This produces a value in 100-nanosecond intervals since January 1, 1970.
+ // To convert this value to seconds, divide by 10,000,000.
+
+ // buah buah buahhhh lol ghgh :DDDDDDDDD
+
+ void kvi_gettimeofday(struct timeval * tmv,struct timezone *)
+ {
+ SYSTEMTIME st;
+ GetSystemTime(&st);
+
+ // this is simply fucked up..
+ // to minimize the possibility of wrapping we use also the day field.
+ // we actually give something that is near the number of seconds from the beginning
+ // of the current month...
+ // We cannot use the wMonth field since the months have variable length :/
+ tmv->tv_sec = (st.wDay * 86400) + (st.wHour * 3600) + (st.wMinute * 60) + (st.wSecond);
+ tmv->tv_usec = st.wMilliseconds * 1000;
+ }
+#endif
+
+KviMSecTimeInterval::KviMSecTimeInterval()
+{
+ m_uReferenceSecs = 0;
+ m_uReferenceUSecs = 0;
+}
+
+
+unsigned long KviMSecTimeInterval::mark()
+{
+ struct timeval tmv;
+ kvi_gettimeofday(&tmv,0);
+ unsigned long uDiff = ((((unsigned long)(tmv.tv_sec)) - m_uReferenceSecs) * 1000);
+ if(((unsigned long)(tmv.tv_usec)) > m_uReferenceUSecs)uDiff += (((unsigned long)(tmv.tv_usec) - m_uReferenceUSecs) / 1000);
+ else uDiff -= ((m_uReferenceUSecs - (unsigned long)(tmv.tv_usec)) / 1000);
+ m_uReferenceSecs = (unsigned long)tmv.tv_sec;
+ m_uReferenceUSecs = (unsigned long)tmv.tv_usec;
+ return uDiff;
+}
+
+namespace KviTimeUtils
+{
+ void secondsToDaysHoursMinsSecs(unsigned int uSecs,
+ unsigned int * uD,unsigned int * uH,unsigned int * uM,unsigned int * uS)
+ {
+ *uD = uSecs / 86400;
+ uSecs = uSecs % 86400;
+ *uH = uSecs / 3600;
+ uSecs = uSecs % 3600;
+ *uM = uSecs / 60;
+ *uS = uSecs % 60;
+ }
+
+ QString formatTimeInterval(unsigned int uSeconds,int iFlags)
+ {
+ unsigned int d,h,m,s;
+ secondsToDaysHoursMinsSecs(uSeconds,&d,&h,&m,&s);
+ QString ret;
+ // the following tricks maybe will help translators a bit...
+ if(iFlags & FillWithHypens)
+ {
+ ret = __tr2qs("- d -- h -- m -- s");
+ } else {
+ if((iFlags & NoLeadingEmptyIntervals) && (d == 0))
+ {
+ if(h > 0)
+ {
+ if(iFlags & NoLeadingZeroes)
+ KviQString::sprintf(ret,__tr2qs("%u h %u m %u s"),h,m,s);
+ else
+ KviQString::sprintf(ret,__tr2qs("%u h %u%u m %u%u s"),h,m / 10,m % 10,s / 10,s % 10);
+ } else {
+ if(m > 0)
+ {
+ if(iFlags & NoLeadingZeroes)
+ KviQString::sprintf(ret,__tr2qs("%u m %u s"),m,s);
+ else
+ KviQString::sprintf(ret,__tr2qs("%u m %u%u s"),m,s / 10,s % 10);
+ } else {
+ KviQString::sprintf(ret,__tr2qs("%u s"),s);
+ }
+ }
+ } else {
+ if(iFlags & NoLeadingZeroes)
+ KviQString::sprintf(ret,__tr2qs("%u d %u h %u m %u s"),d,h,m,s);
+ else
+ KviQString::sprintf(ret,__tr2qs("%u d %u%u h %u%u m %u%u s"),d,h / 10,h % 10,m / 10,m % 10,s / 10,s % 10);
+ }
+ }
+ return ret;
+ }
+
+}
diff --git a/src/kvilib/system/kvi_time.h b/src/kvilib/system/kvi_time.h
new file mode 100644
index 00000000..309eec10
--- /dev/null
+++ b/src/kvilib/system/kvi_time.h
@@ -0,0 +1,92 @@
+#ifndef _KVI_TIME_H_
+#define _KVI_TIME_H_
+
+//=============================================================================
+//
+// File : kvi_time.h
+// Creation date : Tue Sep 25 17:28:46 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include <qstring.h>
+
+
+#include <time.h> // for time()
+
+#define kvi_unixTime() time(0)
+#define kvi_timeSpan(_time_now,_time_before) ((_time_now) - (_time_before))
+#define kvi_secondsSince(_that_time_t) kvi_timeSpan(kvi_unixTime(),_that_time_t)
+
+#define kvi_time_t time_t
+
+#ifdef COMPILE_ON_WINDOWS
+
+ #include <winsock2.h> // struct timeval
+
+ extern KVILIB_API void kvi_gettimeofday(struct timeval * tmv,struct timezone * tmz);
+
+#else //!COMPILE_ON_WINDOWS
+
+ #include <sys/time.h> // gettimeofday() , struct timeval
+
+ inline void kvi_gettimeofday(struct timeval * tmv,struct timezone * tmz)
+ {
+ gettimeofday(tmv,tmz);
+ };
+
+#endif //!COMPILE_ON_WINDOWS
+
+// this works for time intervals a bit longer than 24 days
+class KVILIB_API KviMSecTimeInterval
+{
+public:
+ KviMSecTimeInterval();
+protected:
+ unsigned long m_uReferenceSecs;
+ unsigned long m_uReferenceUSecs;
+public:
+ // returns the number of milliseconds since
+ // mark() was last called (and thus marks
+ // the beginning of a new interval).
+ unsigned long mark();
+ // this wors ONLY in the same second that mark was called in
+ // and returns the tv_sec field of the gettimeofday()
+ // (remember that gettimeofday() is broken on windows)
+ unsigned long secondsCounter(){ return m_uReferenceSecs; };
+};
+
+namespace KviTimeUtils
+{
+
+
+ // splits the time span uSecs in days, hours, minutes and seconds
+ KVILIB_API void secondsToDaysHoursMinsSecs(unsigned int uSecs,
+ unsigned int * uD,unsigned int * uH,unsigned int * uM,unsigned int * uS);
+ // returns a string formatted like x d x h xx m xx s
+ enum FormatTimeSpanFlags {
+ NoLeadingEmptyIntervals = 1, // causes the leading empty intervals to be omitted
+ NoLeadingZeroes = 2, // no leading zeroes are printed in hours and seconds
+ FillWithHypens = 4 // uses only -- %d -- %h -- etc.. discards all other flags
+ };
+ KVILIB_API QString formatTimeInterval(unsigned int uSeconds,int iFlags = 0);
+};
+
+#endif //_KVI_TIME_H_
diff --git a/src/kvilib/system/moc_kvi_locale.cpp b/src/kvilib/system/moc_kvi_locale.cpp
new file mode 100644
index 00000000..52e2ae22
--- /dev/null
+++ b/src/kvilib/system/moc_kvi_locale.cpp
@@ -0,0 +1,92 @@
+/****************************************************************************
+** KviTranslator meta object code from reading C++ file 'kvi_locale.h'
+**
+** Created: Sun Mar 23 20:56:24 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_locale.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviTranslator::className() const
+{
+ return "KviTranslator";
+}
+
+QMetaObject *KviTranslator::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviTranslator( "KviTranslator", &KviTranslator::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviTranslator::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviTranslator", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviTranslator::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviTranslator", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviTranslator::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QTranslator::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviTranslator", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviTranslator.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviTranslator::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviTranslator" ) )
+ return this;
+ return QTranslator::qt_cast( clname );
+}
+
+bool KviTranslator::qt_invoke( int _id, QUObject* _o )
+{
+ return QTranslator::qt_invoke(_id,_o);
+}
+
+bool KviTranslator::qt_emit( int _id, QUObject* _o )
+{
+ return QTranslator::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviTranslator::qt_property( int id, int f, QVariant* v)
+{
+ return QTranslator::qt_property( id, f, v);
+}
+
+bool KviTranslator::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvilib/system/moc_kvi_thread.cpp b/src/kvilib/system/moc_kvi_thread.cpp
new file mode 100644
index 00000000..556849a9
--- /dev/null
+++ b/src/kvilib/system/moc_kvi_thread.cpp
@@ -0,0 +1,104 @@
+/****************************************************************************
+** KviThreadManager meta object code from reading C++ file 'kvi_thread.h'
+**
+** Created: Sun Mar 23 20:56:25 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_thread.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviThreadManager::className() const
+{
+ return "KviThreadManager";
+}
+
+QMetaObject *KviThreadManager::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviThreadManager( "KviThreadManager", &KviThreadManager::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviThreadManager::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviThreadManager", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviThreadManager::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviThreadManager", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviThreadManager::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QObject::staticMetaObject();
+ static const QUParameter param_slot_0[] = {
+ { "fd", &static_QUType_int, 0, QUParameter::In }
+ };
+ static const QUMethod slot_0 = {"eventsPending", 1, param_slot_0 };
+ static const QMetaData slot_tbl[] = {
+ { "eventsPending(int)", &slot_0, QMetaData::Private }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviThreadManager", parentObject,
+ slot_tbl, 1,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviThreadManager.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviThreadManager::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviThreadManager" ) )
+ return this;
+ return QObject::qt_cast( clname );
+}
+
+bool KviThreadManager::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: eventsPending((int)static_QUType_int.get(_o+1)); break;
+ default:
+ return QObject::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviThreadManager::qt_emit( int _id, QUObject* _o )
+{
+ return QObject::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviThreadManager::qt_property( int id, int f, QVariant* v)
+{
+ return QObject::qt_property( id, f, v);
+}
+
+bool KviThreadManager::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvilib/tal/Makefile.am b/src/kvilib/tal/Makefile.am
new file mode 100644
index 00000000..c84487eb
--- /dev/null
+++ b/src/kvilib/tal/Makefile.am
@@ -0,0 +1,5 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+EXTRA_DIST = *.cpp *.h
diff --git a/src/kvilib/tal/kvi_tal_application.cpp b/src/kvilib/tal/kvi_tal_application.cpp
new file mode 100644
index 00000000..4d8bd0d5
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_application.cpp
@@ -0,0 +1,69 @@
+//
+// File : kvi_tal_application.coo
+// Creation date : Sun Aug 12 2001 04:34:21 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#define __KVILIB__
+
+
+#include "kvi_tal_application.h"
+
+#ifdef COMPILE_KDE_SUPPORT
+
+ // The constructor below triggers a warning
+ // ../tal/kvi_tal_application.cpp: In constructor
+ // `KviTalApplication::KviTalApplication(int, char**)':
+ // ../tal/kvi_tal_application.cpp:31: warning: `__base_ctor' is deprecated
+ // (declared at /opt/kde/include/kapplication.h:198)
+ //
+ // The KApplication constructor has been declared as deprecated
+ // in favor of a complexier initialization that uses KCmdLineArgs
+ // and can't be abstracted easily.
+ // The other constructors are not "old" and "stable" enough
+ // to be safely used at this time. We'll rethink this when KDE 4 is out.
+
+ KviTalApplication::KviTalApplication(int &argc,char ** argv)
+ : KApplication(argc,argv,"kvirc")
+ {
+
+
+
+ }
+
+ KviTalApplication::~KviTalApplication()
+ {
+ }
+
+ #include "kvi_tal_application_kde.moc"
+
+#else
+
+ KviTalApplication::KviTalApplication(int &argc,char ** argv)
+ : QApplication(argc,argv)
+ {
+ }
+
+ KviTalApplication::~KviTalApplication()
+ {
+ }
+
+ #include "kvi_tal_application_qt.moc"
+
+#endif
diff --git a/src/kvilib/tal/kvi_tal_application.h b/src/kvilib/tal/kvi_tal_application.h
new file mode 100644
index 00000000..4f9e96df
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_application.h
@@ -0,0 +1,34 @@
+#ifndef _KVI_TAL_APPLICATION_H_
+#define _KVI_TAL_APPLICATION_H_
+
+//
+// File : kvi_appbase_kde.h
+// Creation date : Sun Jun 18 2000 12:53:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_KDE_SUPPORT
+ #include "kvi_tal_application_kde.h"
+#else
+ #include "kvi_tal_application_qt.h"
+#endif
+
+#endif // _KVI_TAL_APPLICATION_H_
diff --git a/src/kvilib/tal/kvi_tal_application_kde.h b/src/kvilib/tal/kvi_tal_application_kde.h
new file mode 100644
index 00000000..05d6e87f
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_application_kde.h
@@ -0,0 +1,37 @@
+#ifndef _KVI_TAL_APPLICATION_KDE_H_
+#define _KVI_TAL_APPLICATION_KDE_H_
+
+//
+// File : kvi_tal_application_kde.h
+// Creation date : Sun Aug 12 2001 04:32:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include <kapp.h>
+
+
+class KVILIB_API KviTalApplication : public KApplication
+{
+ Q_OBJECT
+public:
+ KviTalApplication(int &argc,char ** argv);
+ ~KviTalApplication();
+};
+
+#endif // _KVI_TAL_APPLICATION_KDE_H_
diff --git a/src/kvilib/tal/kvi_tal_application_qt.h b/src/kvilib/tal/kvi_tal_application_qt.h
new file mode 100644
index 00000000..953608fe
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_application_qt.h
@@ -0,0 +1,37 @@
+#ifndef _KVI_TAL_APPLICATION_QT_H_
+#define _KVI_TAL_APPLICATION_QT_H_
+
+//
+// File : kvi_tal_application_qt.h
+// Creation date : Sun Aug 12 2001 04:33:21 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include <qapplication.h>
+
+
+class KVILIB_API KviTalApplication : public QApplication
+{
+ Q_OBJECT
+public:
+ KviTalApplication(int &argc,char ** argv);
+ ~KviTalApplication();
+};
+
+#endif // _KVI_TAL_APPLICATION_QT_H_
diff --git a/src/kvilib/tal/kvi_tal_filedialog.cpp b/src/kvilib/tal/kvi_tal_filedialog.cpp
new file mode 100644
index 00000000..b345fd0b
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_filedialog.cpp
@@ -0,0 +1,176 @@
+//=============================================================================
+//
+// File : kvi_tal_filedialog.coo
+// Creation date : Thu Sep 11 2003 04:09:24 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+
+#include "kvi_tal_filedialog.h"
+
+#ifdef COMPILE_USE_QT4
+
+ #include <qdir.h>
+
+ KviTalFileDialog::KviTalFileDialog(const QString &dirName,const QString &filter,QWidget *parent,const char *name,bool modal)
+ : QFileDialog(parent,"",dirName,filter)
+ {
+ setModal(modal);
+ }
+
+ KviTalFileDialog::~KviTalFileDialog()
+ {
+ }
+
+ void KviTalFileDialog::setFileMode(FileMode m)
+ {
+ switch(m)
+ {
+ case AnyFile:
+ QFileDialog::setFileMode(QFileDialog::AnyFile);
+ break;
+ case ExistingFile:
+ QFileDialog::setFileMode(QFileDialog::ExistingFile);
+ break;
+ case ExistingFiles:
+ QFileDialog::setFileMode(QFileDialog::ExistingFiles);
+ break;
+ case Directory:
+ QFileDialog::setFileMode(QFileDialog::Directory);
+ break;
+ case DirectoryOnly:
+ QFileDialog::setFileMode(QFileDialog::DirectoryOnly);
+ break;
+ default:
+ QFileDialog::setFileMode(QFileDialog::AnyFile);
+ break;
+ }
+ }
+
+ void KviTalFileDialog::setDirectory(const QString &szDirectory)
+ {
+ QFileDialog::setDirectory(szDirectory);
+ }
+
+
+ #include "kvi_tal_filedialog_qt4.moc"
+
+#else
+
+ #ifdef COMPILE_KDE_SUPPORT
+
+ KviTalFileDialog::KviTalFileDialog(const QString &dirName,const QString &filter,QWidget *parent,const char *name,bool modal)
+ : KFileDialog(dirName,filter,parent,name,modal)
+ {
+ clearWFlags(WDestructiveClose);
+ }
+
+ KviTalFileDialog::~KviTalFileDialog()
+ {
+ }
+
+ void KviTalFileDialog::setFileMode(FileMode m)
+ {
+ switch(m)
+ {
+ case AnyFile:
+ setMode(KFile::File | KFile::LocalOnly);
+ setOperationMode(Saving);
+ break;
+ case ExistingFile:
+ setMode(KFile::File | KFile::ExistingOnly | KFile::LocalOnly);
+ setOperationMode(Opening);
+ break;
+ case ExistingFiles:
+ setMode(KFile::Files | KFile::ExistingOnly | KFile::LocalOnly);
+ setOperationMode(Opening);
+ break;
+ case Directory:
+ setMode(KFile::Directory);
+ break;
+ case DirectoryOnly:
+ setMode(KFile::Directory);
+ break;
+ default:
+ setMode(KFile::File | KFile::LocalOnly);
+ setOperationMode(Saving);
+ break;
+ }
+ }
+
+ void KviTalFileDialog::setDirectory(const QString &szDirectory)
+ {
+ setURL(szDirectory);
+ }
+
+
+ #include "kvi_tal_filedialog_kde.moc"
+
+ #else
+
+ #include <qdir.h>
+
+ KviTalFileDialog::KviTalFileDialog(const QString &dirName,const QString &filter,QWidget *parent,const char *name,bool modal)
+ : QFileDialog(dirName,filter,parent,name,modal)
+ {
+ clearWFlags(WDestructiveClose);
+ }
+
+ KviTalFileDialog::~KviTalFileDialog()
+ {
+ }
+
+ void KviTalFileDialog::setFileMode(FileMode m)
+ {
+ switch(m)
+ {
+ case AnyFile:
+ setMode(QFileDialog::AnyFile);
+ break;
+ case ExistingFile:
+ setMode(QFileDialog::ExistingFile);
+ break;
+ case ExistingFiles:
+ setMode(QFileDialog::ExistingFiles);
+ break;
+ case Directory:
+ setMode(QFileDialog::Directory);
+ break;
+ case DirectoryOnly:
+ setMode(QFileDialog::DirectoryOnly);
+ break;
+ default:
+ setMode(QFileDialog::AnyFile);
+ break;
+ }
+ }
+
+ void KviTalFileDialog::setDirectory(const QString &szDirectory)
+ {
+ setDir(QDir(szDirectory));
+ }
+
+
+ #include "kvi_tal_filedialog_qt.moc"
+
+ #endif
+#endif
diff --git a/src/kvilib/tal/kvi_tal_filedialog.h b/src/kvilib/tal/kvi_tal_filedialog.h
new file mode 100644
index 00000000..eac2e645
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_filedialog.h
@@ -0,0 +1,40 @@
+#ifndef _KVI_TAL_FILEDIALOG_H_
+#define _KVI_TAL_FILEDIALOG_H_
+
+//=============================================================================
+//
+// File : kvi_tal_filedialog.h
+// Creation date : Thu Sep 11 2003 04:41:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_USE_QT4
+ #include "kvi_tal_filedialog_qt4.h"
+#else
+ #ifdef COMPILE_KDE_SUPPORT
+ #include "kvi_tal_filedialog_kde.h"
+ #else
+ #include "kvi_tal_filedialog_qt.h"
+ #endif
+#endif
+
+#endif // _KVI_TAL_FILEDIALOG_H_
diff --git a/src/kvilib/tal/kvi_tal_filedialog_kde.h b/src/kvilib/tal/kvi_tal_filedialog_kde.h
new file mode 100644
index 00000000..0f04a80c
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_filedialog_kde.h
@@ -0,0 +1,50 @@
+#ifndef _KVI_TAL_FILEDIALOG_KDE_H_
+#define _KVI_TAL_FILEDIALOG_KDE_H_
+
+//
+// File : kvi_tal_filedialog_kde.h
+// Creation date : Thu Aug 11 2003 04:43:58 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include <kfiledialog.h>
+#include <qfiledialog.h>
+
+class KVILIB_API KviTalFileDialog : public KFileDialog
+{
+ Q_OBJECT
+public:
+ KviTalFileDialog(const QString &dirName,const QString &filter = QString::null,QWidget *parent = 0,const char *name = 0,bool modal = FALSE);
+ ~KviTalFileDialog();
+public:
+ enum FileMode { AnyFile, ExistingFile, ExistingFiles, Directory, DirectoryOnly };
+
+ void setFileMode(FileMode m);
+ void setDirectory(const QString &szDirectory);
+
+
+ static QString getExistingDirectoryPath(const QString &dir = QString::null,const QString &caption = QString::null,QWidget *parent = 0)
+ {
+ // QFileDialog allows making new directories...kfiledialog not :/
+ return QFileDialog::getExistingDirectory(dir,parent,0,caption);
+ //return getExistingDirectory(dir,parent,caption);
+ };
+};
+
+#endif // _KVI_TAL_FILEDIALOG_KDE_H_
diff --git a/src/kvilib/tal/kvi_tal_filedialog_qt.h b/src/kvilib/tal/kvi_tal_filedialog_qt.h
new file mode 100644
index 00000000..14a24854
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_filedialog_qt.h
@@ -0,0 +1,44 @@
+#ifndef _KVI_TAL_FILEDIALOG_QT_H_
+#define _KVI_TAL_FILEDIALOG_QT_H_
+
+//
+// File : kvi_tal_filedialog_qt.h
+// Creation date : Thu Aug 11 2003 04:43:58 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include <qfiledialog.h>
+
+class KVILIB_API KviTalFileDialog : public QFileDialog
+{
+ Q_OBJECT
+public:
+ KviTalFileDialog(const QString &dirName,const QString &filter = QString::null,QWidget *parent = 0,const char *name = 0,bool modal = FALSE);
+ ~KviTalFileDialog();
+public:
+ enum FileMode { AnyFile, ExistingFile, ExistingFiles, Directory, DirectoryOnly };
+
+ void setFileMode(FileMode m);
+ void setDirectory(const QString &szDirectory);
+
+ static QString getExistingDirectoryPath(const QString &dir = QString::null,const QString &caption = QString::null,QWidget *parent = 0)
+ { return getExistingDirectory(dir,parent,0 /* name */,caption); };
+};
+
+#endif // _KVI_TAL_FILEDIALOG_QT_H_
diff --git a/src/kvilib/tal/kvi_tal_filedialog_qt4.h b/src/kvilib/tal/kvi_tal_filedialog_qt4.h
new file mode 100644
index 00000000..eb5f7ab6
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_filedialog_qt4.h
@@ -0,0 +1,46 @@
+#ifndef _KVI_TAL_FILEDIALOG_QT4_H_
+#define _KVI_TAL_FILEDIALOG_QT4_H_
+
+//=============================================================================
+//
+// File : kvi_tal_filedialog_qt4.h
+// Creation date : Fri 19 Jan 2007 02:17:12 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include <qfiledialog.h>
+
+class KVILIB_API KviTalFileDialog : public QFileDialog
+{
+ Q_OBJECT
+public:
+ KviTalFileDialog(const QString &dirName,const QString &filter = QString::null,QWidget *parent = 0,const char *name = 0,bool modal = FALSE);
+ ~KviTalFileDialog();
+public:
+ enum FileMode { AnyFile, ExistingFile, ExistingFiles, Directory, DirectoryOnly };
+
+ void setFileMode(FileMode m);
+ void setDirectory(const QString &szDirectory);
+
+ static QString getExistingDirectoryPath(const QString &dir = QString::null,const QString &caption = QString::null,QWidget *parent = 0)
+ { return getExistingDirectory(parent,caption,dir); };
+};
+
+#endif // _KVI_TAL_FILEDIALOG_QT_H_
diff --git a/src/kvilib/tal/kvi_tal_grid.cpp b/src/kvilib/tal/kvi_tal_grid.cpp
new file mode 100644
index 00000000..472af5a0
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_grid.cpp
@@ -0,0 +1,34 @@
+//=============================================================================
+//
+// File : kvi_tal_grid.cpp
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+#include "kvi_tal_grid.h"
+
+
+#ifdef COMPILE_USE_QT4
+ #include "kvi_tal_grid_qt4.moc"
+#else
+ #include "kvi_tal_grid_qt3.moc"
+#endif
+
diff --git a/src/kvilib/tal/kvi_tal_grid.h b/src/kvilib/tal/kvi_tal_grid.h
new file mode 100644
index 00000000..18c4af98
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_grid.h
@@ -0,0 +1,36 @@
+#ifndef _KVI_TAL_GRID_H_
+#define _KVI_TAL_GRID_H_
+
+//=============================================================================
+//
+// File : kvi_tal_grid.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_USE_QT4
+ #include "kvi_tal_grid_qt4.h"
+#else
+ #include "kvi_tal_grid_qt3.h"
+#endif
+
+#endif // _KVI_TAL_GRID_H_
diff --git a/src/kvilib/tal/kvi_tal_grid_qt3.h b/src/kvilib/tal/kvi_tal_grid_qt3.h
new file mode 100644
index 00000000..fd77d15c
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_grid_qt3.h
@@ -0,0 +1,39 @@
+#ifndef _KVI_TAL_GRID_QT3_H_
+#define _KVI_TAL_GRID_QT3_H_
+
+//=============================================================================
+//
+// File : kvi_tal_grid_qt3.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include <qgrid.h>
+
+class KVILIB_API KviTalGrid : public QGrid
+{
+ Q_OBJECT
+public:
+ KviTalGrid(int n,Qt::Orientation orient,QWidget * pParent = 0)
+ : QGrid(n,orient,pParent) {};
+ ~KviTalGrid() {};
+};
+
+#endif // _KVI_TAL_GRID_QT3_H_
diff --git a/src/kvilib/tal/kvi_tal_grid_qt4.h b/src/kvilib/tal/kvi_tal_grid_qt4.h
new file mode 100644
index 00000000..57612b3c
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_grid_qt4.h
@@ -0,0 +1,41 @@
+#ifndef _KVI_TAL_GRID_QT4_H_
+#define _KVI_TAL_GRID_QT4_H_
+
+//=============================================================================
+//
+// File : kvi_tal_grid_qt4.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include <q3grid.h>
+
+class KVILIB_API KviTalGrid : public Q3Grid
+{
+ Q_OBJECT
+public:
+ KviTalGrid(int n,Qt::Orientation orient,QWidget * pParent = 0)
+ : Q3Grid(n,orient,pParent) {};
+ ~KviTalGrid() {};
+};
+
+#endif // _KVI_TAL_GRID_QT4_H_
diff --git a/src/kvilib/tal/kvi_tal_groupbox.cpp b/src/kvilib/tal/kvi_tal_groupbox.cpp
new file mode 100644
index 00000000..bf2f5689
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_groupbox.cpp
@@ -0,0 +1,34 @@
+//=============================================================================
+//
+// File : kvi_tal_groupbox.cpp
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+#include "kvi_tal_groupbox.h"
+
+
+#ifdef COMPILE_USE_QT4
+ #include "kvi_tal_groupbox_qt4.moc"
+#else
+ #include "kvi_tal_groupbox_qt3.moc"
+#endif
+
diff --git a/src/kvilib/tal/kvi_tal_groupbox.h b/src/kvilib/tal/kvi_tal_groupbox.h
new file mode 100644
index 00000000..ae82519b
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_groupbox.h
@@ -0,0 +1,36 @@
+#ifndef _KVI_TAL_GROUPBOX_H_
+#define _KVI_TAL_GROUPBOX_H_
+
+//=============================================================================
+//
+// File : kvi_tal_groupbox.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_USE_QT4
+ #include "kvi_tal_groupbox_qt4.h"
+#else
+ #include "kvi_tal_groupbox_qt3.h"
+#endif
+
+#endif // _KVI_TAL_GROUPBOX_H_
diff --git a/src/kvilib/tal/kvi_tal_groupbox_qt3.h b/src/kvilib/tal/kvi_tal_groupbox_qt3.h
new file mode 100644
index 00000000..be3340a3
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_groupbox_qt3.h
@@ -0,0 +1,47 @@
+#ifndef _KVI_TAL_GROUPBOX_QT3_H_
+#define _KVI_TAL_GROUPBOX_QT3_H_
+
+//=============================================================================
+//
+// File : kvi_tal_groupbox_qt3.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include <qgroupbox.h>
+
+class KVILIB_API KviTalGroupBox : public QGroupBox
+{
+ Q_OBJECT
+public:
+ KviTalGroupBox(QWidget * parent = 0)
+ : QGroupBox(parent) {};
+ KviTalGroupBox(const QString & title,QWidget * parent = 0)
+ : QGroupBox(title,parent) {};
+ KviTalGroupBox(int strips,Qt::Orientation orientation,QWidget * parent = 0)
+ : QGroupBox(strips,orientation,parent) {};
+ KviTalGroupBox(int strips,Qt::Orientation orientation,const QString & title,QWidget * parent = 0)
+ : QGroupBox(strips,orientation,title,parent) {};
+ ~KviTalGroupBox() {};
+};
+
+
+
+#endif // _KVI_TAL_GROUPBOX_QT3_H_
diff --git a/src/kvilib/tal/kvi_tal_groupbox_qt4.h b/src/kvilib/tal/kvi_tal_groupbox_qt4.h
new file mode 100644
index 00000000..c8917385
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_groupbox_qt4.h
@@ -0,0 +1,47 @@
+#ifndef _KVI_TAL_GROUPBOX_QT4_H_
+#define _KVI_TAL_GROUPBOX_QT4_H_
+
+//=============================================================================
+//
+// File : kvi_tal_groupbox_qt4.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include <q3groupbox.h>
+
+class KVILIB_API KviTalGroupBox : public Q3GroupBox
+{
+ Q_OBJECT
+public:
+ KviTalGroupBox(QWidget * parent = 0)
+ : Q3GroupBox(parent) {};
+ KviTalGroupBox(const QString & title,QWidget * parent = 0)
+ : Q3GroupBox(title,parent) {};
+ KviTalGroupBox(int strips,Qt::Orientation orientation,QWidget * parent = 0)
+ : Q3GroupBox(strips,orientation,parent) {};
+ KviTalGroupBox(int strips,Qt::Orientation orientation,const QString & title,QWidget * parent = 0)
+ : Q3GroupBox(strips,orientation,title,parent) {};
+ ~KviTalGroupBox() {};
+};
+
+
+
+#endif // _KVI_TAL_GROUPBOX_QT4_H_
diff --git a/src/kvilib/tal/kvi_tal_hbox.cpp b/src/kvilib/tal/kvi_tal_hbox.cpp
new file mode 100644
index 00000000..6df56ee8
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_hbox.cpp
@@ -0,0 +1,32 @@
+//=============================================================================
+//
+// File : kvi_tal_hbox.cpp
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+#include "kvi_tal_hbox.h"
+
+#ifdef COMPILE_USE_QT4
+ #include "kvi_tal_hbox_qt4.moc"
+#else
+ #include "kvi_tal_hbox_qt3.moc"
+#endif
diff --git a/src/kvilib/tal/kvi_tal_hbox.h b/src/kvilib/tal/kvi_tal_hbox.h
new file mode 100644
index 00000000..6f955ed6
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_hbox.h
@@ -0,0 +1,36 @@
+#ifndef _KVI_TAL_HBOX_H_
+#define _KVI_TAL_HBOX_H_
+
+//=============================================================================
+//
+// File : kvi_tal_hbox.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_USE_QT4
+ #include "kvi_tal_hbox_qt4.h"
+#else
+ #include "kvi_tal_hbox_qt3.h"
+#endif
+
+#endif // _KVI_TAL_HBOX_H_
diff --git a/src/kvilib/tal/kvi_tal_hbox_qt3.h b/src/kvilib/tal/kvi_tal_hbox_qt3.h
new file mode 100644
index 00000000..992ca03a
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_hbox_qt3.h
@@ -0,0 +1,41 @@
+#ifndef _KVI_TAL_HBOX_QT3_H_
+#define _KVI_TAL_HBOX_QT3_H_
+
+//=============================================================================
+//
+// File : kvi_tal_hbox_qt3.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include <qhbox.h>
+
+class KVILIB_API KviTalHBox : public QHBox
+{
+ Q_OBJECT
+public:
+ KviTalHBox(QWidget * pParent)
+ : QHBox(pParent) {};
+ virtual ~KviTalHBox() {};
+};
+
+#endif // _KVI_TAL_HBOX_QT3_H_
diff --git a/src/kvilib/tal/kvi_tal_hbox_qt4.h b/src/kvilib/tal/kvi_tal_hbox_qt4.h
new file mode 100644
index 00000000..384910c2
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_hbox_qt4.h
@@ -0,0 +1,41 @@
+#ifndef _KVI_TAL_HBOX_QT4_H_
+#define _KVI_TAL_HBOX_QT4_H_
+
+//=============================================================================
+//
+// File : kvi_tal_hbox_qt4.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include <q3hbox.h>
+
+class KVILIB_API KviTalHBox : public Q3HBox
+{
+ Q_OBJECT
+public:
+ KviTalHBox(QWidget * pParent,char* name=0)
+ : Q3HBox(pParent,name) {};
+ virtual ~KviTalHBox() {};
+};
+
+#endif // _KVI_TAL_HBOX_QT4_H_
diff --git a/src/kvilib/tal/kvi_tal_iconview.cpp b/src/kvilib/tal/kvi_tal_iconview.cpp
new file mode 100644
index 00000000..2f63388c
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_iconview.cpp
@@ -0,0 +1,215 @@
+//=============================================================================
+//
+// File : kvi_tal_iconview.cpp
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+#include "kvi_tal_iconview.h"
+
+#ifdef COMPILE_USE_QT4
+
+ KviTalIconView::KviTalIconView(QWidget * pParent,Qt::WFlags f)
+ : Q3IconView(pParent,0,f)
+ {
+ connect(this,SIGNAL(selectionChanged(Q3IconViewItem *)),this,SLOT(redirect_selectionChanged(Q3IconViewItem *)));
+ connect(this,SIGNAL(currentChanged(Q3IconViewItem *)),this,SLOT(redirect_currentChanged(Q3IconViewItem *)));
+ connect(this,SIGNAL(clicked(Q3IconViewItem *)),this,SLOT(redirect_clicked(Q3IconViewItem *)));
+ connect(this,SIGNAL(clicked(Q3IconViewItem *,const QPoint &)),this,SLOT(redirect_clicked(Q3IconViewItem *,const QPoint &)));
+ connect(this,SIGNAL(pressed(Q3IconViewItem *)),this,SLOT(redirect_pressed(Q3IconViewItem *)));
+ connect(this,SIGNAL(pressed(Q3IconViewItem *,const QPoint &)),this,SLOT(redirect_pressed(Q3IconViewItem *,const QPoint &)));
+ connect(this,SIGNAL(doubleClicked(Q3IconViewItem *)),this,SLOT(redirect_doubleClicked(Q3IconViewItem *)));
+ connect(this,SIGNAL(returnPressed(Q3IconViewItem *)),this,SLOT(redirect_returnPressed(Q3IconViewItem *)));
+ connect(this,SIGNAL(rightButtonClicked(Q3IconViewItem *,const QPoint &)),this,SLOT(redirect_rightButtonClicked(Q3IconViewItem *,const QPoint &)));
+ connect(this,SIGNAL(rightButtonPressed(Q3IconViewItem *,const QPoint &)),this,SLOT(redirect_rightButtonPressed(Q3IconViewItem *,const QPoint &)));
+ connect(this,SIGNAL(mouseButtonClicked(int,Q3IconViewItem *,const QPoint &)),this,SLOT(redirect_mouseButtonClicked(int,Q3IconViewItem *,const QPoint &)));
+ connect(this,SIGNAL(mouseButtonPressed(int,Q3IconViewItem *,const QPoint &)),this,SLOT(redirect_mouseButtonPressed(int,Q3IconViewItem *,const QPoint &)));
+ connect(this,SIGNAL(contextMenuRequested(Q3IconViewItem *,const QPoint &)),this,SLOT(redirect_contextMenuRequested(Q3IconViewItem *,const QPoint &)));
+ connect(this,SIGNAL(onItem(Q3IconViewItem *)),this,SLOT(redirect_onItem(Q3IconViewItem *)));
+ }
+
+ void KviTalIconView::redirect_selectionChanged(Q3IconViewItem * pItem)
+ {
+ emit selectionChanged((KviTalIconViewItem *)pItem);
+ }
+
+ void KviTalIconView::redirect_currentChanged(Q3IconViewItem * pItem)
+ {
+ emit currentChanged((KviTalIconViewItem *)pItem);
+ }
+
+ void KviTalIconView::redirect_clicked(Q3IconViewItem * pItem)
+ {
+ emit clicked((KviTalIconViewItem *)pItem);
+ }
+
+ void KviTalIconView::redirect_clicked(Q3IconViewItem * pItem,const QPoint &pnt)
+ {
+ emit clicked((KviTalIconViewItem *)pItem,pnt);
+ }
+
+ void KviTalIconView::redirect_pressed(Q3IconViewItem * pItem)
+ {
+ emit pressed((KviTalIconViewItem *)pItem);
+ }
+
+ void KviTalIconView::redirect_pressed(Q3IconViewItem * pItem,const QPoint &pnt)
+ {
+ emit pressed((KviTalIconViewItem *)pItem,pnt);
+ }
+
+ void KviTalIconView::redirect_doubleClicked(Q3IconViewItem * pItem)
+ {
+ emit doubleClicked((KviTalIconViewItem *)pItem);
+ }
+
+ void KviTalIconView::redirect_returnPressed(Q3IconViewItem * pItem)
+ {
+ emit returnPressed((KviTalIconViewItem *)pItem);
+ }
+
+ void KviTalIconView::redirect_rightButtonClicked(Q3IconViewItem * pItem,const QPoint &pnt)
+ {
+ emit rightButtonClicked((KviTalIconViewItem *)pItem,pnt);
+ }
+
+ void KviTalIconView::redirect_rightButtonPressed(Q3IconViewItem * pItem,const QPoint &pnt)
+ {
+ emit rightButtonPressed((KviTalIconViewItem *)pItem,pnt);
+ }
+
+ void KviTalIconView::redirect_mouseButtonClicked(int iButton,Q3IconViewItem * pItem,const QPoint &pnt)
+ {
+ emit mouseButtonClicked(iButton,(KviTalIconViewItem *)pItem,pnt);
+ }
+
+ void KviTalIconView::redirect_mouseButtonPressed(int iButton,Q3IconViewItem * pItem,const QPoint &pnt)
+ {
+ emit mouseButtonPressed(iButton,(KviTalIconViewItem *)pItem,pnt);
+ }
+
+ void KviTalIconView::redirect_contextMenuRequested(Q3IconViewItem * pItem,const QPoint &pnt)
+ {
+ emit contextMenuRequested((KviTalIconViewItem *)pItem,pnt);
+ }
+
+ void KviTalIconView::redirect_onItem(Q3IconViewItem * pItem)
+ {
+ emit onItem((KviTalIconViewItem *)pItem);
+ }
+
+
+ #include "kvi_tal_iconview_qt4.moc"
+#else
+
+ KviTalIconView::KviTalIconView(QWidget * pParent,Qt::WFlags f)
+ : QIconView(pParent,0,f)
+ {
+ connect(this,SIGNAL(selectionChanged(QIconViewItem *)),this,SLOT(redirect_selectionChanged(QIconViewItem *)));
+ connect(this,SIGNAL(currentChanged(QIconViewItem *)),this,SLOT(redirect_currentChanged(QIconViewItem *)));
+ connect(this,SIGNAL(clicked(QIconViewItem *)),this,SLOT(redirect_clicked(QIconViewItem *)));
+ connect(this,SIGNAL(clicked(QIconViewItem *,const QPoint &)),this,SLOT(redirect_clicked(QIconViewItem *,const QPoint &)));
+ connect(this,SIGNAL(pressed(QIconViewItem *)),this,SLOT(redirect_pressed(QIconViewItem *)));
+ connect(this,SIGNAL(pressed(QIconViewItem *,const QPoint &)),this,SLOT(redirect_pressed(QIconViewItem *,const QPoint &)));
+ connect(this,SIGNAL(doubleClicked(QIconViewItem *)),this,SLOT(redirect_doubleClicked(QIconViewItem *)));
+ connect(this,SIGNAL(returnPressed(QIconViewItem *)),this,SLOT(redirect_returnPressed(QIconViewItem *)));
+ connect(this,SIGNAL(rightButtonClicked(QIconViewItem *,const QPoint &)),this,SLOT(redirect_rightButtonClicked(QIconViewItem *,const QPoint &)));
+ connect(this,SIGNAL(rightButtonPressed(QIconViewItem *,const QPoint &)),this,SLOT(redirect_rightButtonPressed(QIconViewItem *,const QPoint &)));
+ connect(this,SIGNAL(mouseButtonClicked(int,QIconViewItem *,const QPoint &)),this,SLOT(redirect_mouseButtonClicked(int,QIconViewItem *,const QPoint &)));
+ connect(this,SIGNAL(mouseButtonPressed(int,QIconViewItem *,const QPoint &)),this,SLOT(redirect_mouseButtonPressed(int,QIconViewItem *,const QPoint &)));
+ connect(this,SIGNAL(contextMenuRequested(QIconViewItem *,const QPoint &)),this,SLOT(redirect_contextMenuRequested(QIconViewItem *,const QPoint &)));
+ connect(this,SIGNAL(onItem(QIconViewItem *)),this,SLOT(redirect_onItem(QIconViewItem *)));
+ }
+
+ void KviTalIconView::redirect_selectionChanged(QIconViewItem * pItem)
+ {
+ emit selectionChanged((KviTalIconViewItem *)pItem);
+ }
+
+ void KviTalIconView::redirect_currentChanged(QIconViewItem * pItem)
+ {
+ emit currentChanged((KviTalIconViewItem *)pItem);
+ }
+
+ void KviTalIconView::redirect_clicked(QIconViewItem * pItem)
+ {
+ emit clicked((KviTalIconViewItem *)pItem);
+ }
+
+ void KviTalIconView::redirect_clicked(QIconViewItem * pItem,const QPoint &pnt)
+ {
+ emit clicked((KviTalIconViewItem *)pItem,pnt);
+ }
+
+ void KviTalIconView::redirect_pressed(QIconViewItem * pItem)
+ {
+ emit pressed((KviTalIconViewItem *)pItem);
+ }
+
+ void KviTalIconView::redirect_pressed(QIconViewItem * pItem,const QPoint &pnt)
+ {
+ emit pressed((KviTalIconViewItem *)pItem,pnt);
+ }
+
+ void KviTalIconView::redirect_doubleClicked(QIconViewItem * pItem)
+ {
+ emit doubleClicked((KviTalIconViewItem *)pItem);
+ }
+
+ void KviTalIconView::redirect_returnPressed(QIconViewItem * pItem)
+ {
+ emit returnPressed((KviTalIconViewItem *)pItem);
+ }
+
+ void KviTalIconView::redirect_rightButtonClicked(QIconViewItem * pItem,const QPoint &pnt)
+ {
+ emit rightButtonClicked((KviTalIconViewItem *)pItem,pnt);
+ }
+
+ void KviTalIconView::redirect_rightButtonPressed(QIconViewItem * pItem,const QPoint &pnt)
+ {
+ emit rightButtonPressed((KviTalIconViewItem *)pItem,pnt);
+ }
+
+ void KviTalIconView::redirect_mouseButtonClicked(int iButton,QIconViewItem * pItem,const QPoint &pnt)
+ {
+ emit mouseButtonClicked(iButton,(KviTalIconViewItem *)pItem,pnt);
+ }
+
+ void KviTalIconView::redirect_mouseButtonPressed(int iButton,QIconViewItem * pItem,const QPoint &pnt)
+ {
+ emit mouseButtonPressed(iButton,(KviTalIconViewItem *)pItem,pnt);
+ }
+
+ void KviTalIconView::redirect_contextMenuRequested(QIconViewItem * pItem,const QPoint &pnt)
+ {
+ emit contextMenuRequested((KviTalIconViewItem *)pItem,pnt);
+ }
+
+ void KviTalIconView::redirect_onItem(QIconViewItem * pItem)
+ {
+ emit onItem((KviTalIconViewItem *)pItem);
+ }
+
+
+ #include "kvi_tal_iconview_qt3.moc"
+#endif
+
diff --git a/src/kvilib/tal/kvi_tal_iconview.h b/src/kvilib/tal/kvi_tal_iconview.h
new file mode 100644
index 00000000..53b1137b
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_iconview.h
@@ -0,0 +1,36 @@
+#ifndef _KVI_TAL_ICONVIEW_H_
+#define _KVI_TAL_ICONVIEW_H_
+
+//=============================================================================
+//
+// File : kvi_tal_iconview.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_USE_QT4
+ #include "kvi_tal_iconview_qt4.h"
+#else
+ #include "kvi_tal_iconview_qt3.h"
+#endif
+
+#endif // _KVI_TAL_ICONVIEW_H_
diff --git a/src/kvilib/tal/kvi_tal_iconview_qt3.h b/src/kvilib/tal/kvi_tal_iconview_qt3.h
new file mode 100644
index 00000000..7cfec586
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_iconview_qt3.h
@@ -0,0 +1,100 @@
+#ifndef _KVI_TAL_ICONVIEW_QT3_H_
+#define _KVI_TAL_ICONVIEW_QT3_H_
+
+//=============================================================================
+//
+// File : kvi_tal_iconview_qt3.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+
+#include <qiconview.h>
+
+class KviTalIconViewItem;
+
+
+class KVILIB_API KviTalIconView : public QIconView
+{
+ Q_OBJECT
+public:
+ KviTalIconView(QWidget * pParent,Qt::WFlags f = 0);
+ virtual ~KviTalIconView() {};
+signals:
+ void selectionChanged(KviTalIconViewItem * pItem);
+ void currentChanged(KviTalIconViewItem * pItem);
+ void clicked(KviTalIconViewItem * pItem);
+ void clicked(KviTalIconViewItem * pItem,const QPoint &pnt);
+ void pressed(KviTalIconViewItem * pItem);
+ void pressed(KviTalIconViewItem * pItem,const QPoint &pnt);
+ void doubleClicked(KviTalIconViewItem * pItem);
+ void returnPressed(KviTalIconViewItem * pItem);
+ void rightButtonClicked(KviTalIconViewItem * pItem,const QPoint &pnt);
+ void rightButtonPressed(KviTalIconViewItem * pItem,const QPoint &pnt);
+ void mouseButtonClicked(int iButton,KviTalIconViewItem * pItem,const QPoint &pnt);
+ void mouseButtonPressed(int iButton,KviTalIconViewItem * pItem,const QPoint &pnt);
+ void contextMenuRequested(KviTalIconViewItem * pItem,const QPoint &pnt);
+ void onItem(KviTalIconViewItem * pItem);
+protected slots:
+ void redirect_selectionChanged(QIconViewItem * pItem);
+ void redirect_currentChanged(QIconViewItem * pItem);
+ void redirect_clicked(QIconViewItem * pItem);
+ void redirect_clicked(QIconViewItem * pItem,const QPoint &pnt);
+ void redirect_pressed(QIconViewItem * pItem);
+ void redirect_pressed(QIconViewItem * pItem,const QPoint &pnt);
+ void redirect_doubleClicked(QIconViewItem * pItem);
+ void redirect_returnPressed(QIconViewItem * pItem);
+ void redirect_rightButtonClicked(QIconViewItem * pItem,const QPoint &pnt);
+ void redirect_rightButtonPressed(QIconViewItem * pItem,const QPoint &pnt);
+ void redirect_mouseButtonClicked(int iButton,QIconViewItem * pItem,const QPoint &pnt);
+ void redirect_mouseButtonPressed(int iButton,QIconViewItem * pItem,const QPoint &pnt);
+ void redirect_contextMenuRequested(QIconViewItem * pItem,const QPoint &pnt);
+ void redirect_onItem(QIconViewItem * pItem);
+public:
+ KviTalIconViewItem * firstItem() const { return (KviTalIconViewItem *)QIconView::firstItem(); };
+ KviTalIconViewItem * lastItem() const { return (KviTalIconViewItem *)QIconView::lastItem(); };
+ KviTalIconViewItem * currentItem() const { return (KviTalIconViewItem *)QIconView::currentItem(); };
+};
+
+class KVILIB_API KviTalIconViewItem : public QIconViewItem
+{
+public:
+ KviTalIconViewItem(KviTalIconView * parent)
+ : QIconViewItem(parent) {};
+ KviTalIconViewItem(KviTalIconView * parent,KviTalIconViewItem * after)
+ : QIconViewItem(parent,after) {};
+ KviTalIconViewItem(KviTalIconView * parent, const QString & text)
+ : QIconViewItem(parent,text) {};
+ KviTalIconViewItem(KviTalIconView * parent, KviTalIconViewItem * after, const QString & text)
+ : QIconViewItem(parent,after,text) {};
+ KviTalIconViewItem(KviTalIconView * parent, const QString & text, const QPixmap & icon)
+ : QIconViewItem(parent,text,icon) {};
+ KviTalIconViewItem(KviTalIconView * parent, KviTalIconViewItem * after, const QString & text, const QPixmap & icon)
+ : QIconViewItem(parent,after,text,icon) {};
+public:
+ KviTalIconView * iconView() const { return (KviTalIconView *)QIconViewItem::iconView(); };
+ KviTalIconViewItem * prevItem() const { return (KviTalIconViewItem *)QIconViewItem::prevItem(); };
+ KviTalIconViewItem * nextItem() const { return (KviTalIconViewItem *)QIconViewItem::nextItem(); };
+};
+
+
+#endif // _KVI_TAL_ICONVIEW_QT3_H_
diff --git a/src/kvilib/tal/kvi_tal_iconview_qt4.h b/src/kvilib/tal/kvi_tal_iconview_qt4.h
new file mode 100644
index 00000000..899acaac
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_iconview_qt4.h
@@ -0,0 +1,99 @@
+#ifndef _KVI_TAL_ICONVIEW_QT4_H_
+#define _KVI_TAL_ICONVIEW_QT4_H_
+
+//=============================================================================
+//
+// File : kvi_tal_iconview_qt4.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, write to the Free Software Foundation,
+// Inc. ,59 Temple Place - Suite 440, Boston, MA 02111-1407, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+
+#include <q3iconview.h>
+
+class KviTalIconViewItem;
+
+class KVILIB_API KviTalIconView : public Q3IconView
+{
+ Q_OBJECT
+public:
+ KviTalIconView(QWidget * pParent,Qt::WFlags f = 0);
+ virtual ~KviTalIconView() {};
+signals:
+ void selectionChanged(KviTalIconViewItem * pItem);
+ void currentChanged(KviTalIconViewItem * pItem);
+ void clicked(KviTalIconViewItem * pItem);
+ void clicked(KviTalIconViewItem * pItem,const QPoint &pnt);
+ void pressed(KviTalIconViewItem * pItem);
+ void pressed(KviTalIconViewItem * pItem,const QPoint &pnt);
+ void doubleClicked(KviTalIconViewItem * pItem);
+ void returnPressed(KviTalIconViewItem * pItem);
+ void rightButtonClicked(KviTalIconViewItem * pItem,const QPoint &pnt);
+ void rightButtonPressed(KviTalIconViewItem * pItem,const QPoint &pnt);
+ void mouseButtonClicked(int iButton,KviTalIconViewItem * pItem,const QPoint &pnt);
+ void mouseButtonPressed(int iButton,KviTalIconViewItem * pItem,const QPoint &pnt);
+ void contextMenuRequested(KviTalIconViewItem * pItem,const QPoint &pnt);
+ void onItem(KviTalIconViewItem * pItem);
+protected slots:
+ void redirect_selectionChanged(Q3IconViewItem * pItem);
+ void redirect_currentChanged(Q3IconViewItem * pItem);
+ void redirect_clicked(Q3IconViewItem * pItem);
+ void redirect_clicked(Q3IconViewItem * pItem,const QPoint &pnt);
+ void redirect_pressed(Q3IconViewItem * pItem);
+ void redirect_pressed(Q3IconViewItem * pItem,const QPoint &pnt);
+ void redirect_doubleClicked(Q3IconViewItem * pItem);
+ void redirect_returnPressed(Q3IconViewItem * pItem);
+ void redirect_rightButtonClicked(Q3IconViewItem * pItem,const QPoint &pnt);
+ void redirect_rightButtonPressed(Q3IconViewItem * pItem,const QPoint &pnt);
+ void redirect_mouseButtonClicked(int iButton,Q3IconViewItem * pItem,const QPoint &pnt);
+ void redirect_mouseButtonPressed(int iButton,Q3IconViewItem * pItem,const QPoint &pnt);
+ void redirect_contextMenuRequested(Q3IconViewItem * pItem,const QPoint &pnt);
+ void redirect_onItem(Q3IconViewItem * pItem);
+public:
+ KviTalIconViewItem * firstItem() const { return (KviTalIconViewItem *)Q3IconView::firstItem(); };
+ KviTalIconViewItem * lastItem() const { return (KviTalIconViewItem *)Q3IconView::lastItem(); };
+ KviTalIconViewItem * currentItem() const { return (KviTalIconViewItem *)Q3IconView::currentItem(); };
+};
+
+class KVILIB_API KviTalIconViewItem : public Q3IconViewItem
+{
+public:
+ KviTalIconViewItem(KviTalIconView * parent)
+ : Q3IconViewItem(parent) {};
+ KviTalIconViewItem(KviTalIconView * parent,KviTalIconViewItem * after)
+ : Q3IconViewItem(parent,after) {};
+ KviTalIconViewItem(KviTalIconView * parent, const QString & text)
+ : Q3IconViewItem(parent,text) {};
+ KviTalIconViewItem(KviTalIconView * parent, KviTalIconViewItem * after, const QString & text)
+ : Q3IconViewItem(parent,after,text) {};
+ KviTalIconViewItem(KviTalIconView * parent, const QString & text, const QPixmap & icon)
+ : Q3IconViewItem(parent,text,icon) {};
+ KviTalIconViewItem(KviTalIconView * parent, KviTalIconViewItem * after, const QString & text, const QPixmap & icon)
+ : Q3IconViewItem(parent,after,text,icon) {};
+public:
+ KviTalIconView * iconView() const { return (KviTalIconView *)Q3IconViewItem::iconView(); };
+ KviTalIconViewItem * prevItem() const { return (KviTalIconViewItem *)Q3IconViewItem::prevItem(); };
+ KviTalIconViewItem * nextItem() const { return (KviTalIconViewItem *)Q3IconViewItem::nextItem(); };
+};
+
+
+#endif // _KVI_TAL_ICONVIEW_QT4_H_
diff --git a/src/kvilib/tal/kvi_tal_listbox.cpp b/src/kvilib/tal/kvi_tal_listbox.cpp
new file mode 100644
index 00000000..f5fcc087
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_listbox.cpp
@@ -0,0 +1,513 @@
+//=============================================================================
+//
+// File : kvi_tal_listbox.cpp
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+#include "kvi_tal_listbox.h"
+
+#ifdef COMPILE_USE_QT4
+ #include <qpainter.h>
+ #include <qstyle.h>
+ #include <qapplication.h>
+
+ KviTalListBox::KviTalListBox(QWidget * pParent,Qt::WFlags f)
+ : Q3ListBox(pParent,0,f)
+ {
+ connect(this,SIGNAL(highlighted(Q3ListBoxItem *)),this,SLOT(redirect_highlighted(Q3ListBoxItem *)));
+ connect(this,SIGNAL(selected(Q3ListBoxItem *)),this,SLOT(redirect_selected(Q3ListBoxItem *)));
+ connect(this,SIGNAL(selectionChanged(Q3ListBoxItem *)),this,SLOT(redirect_selectionChanged(Q3ListBoxItem *)));
+ connect(this,SIGNAL(currentChanged(Q3ListBoxItem *)),this,SLOT(redirect_currentChanged(Q3ListBoxItem *)));
+ connect(this,SIGNAL(clicked(Q3ListBoxItem *)),this,SLOT(redirect_clicked(Q3ListBoxItem *)));
+ connect(this,SIGNAL(clicked(Q3ListBoxItem *,const QPoint &)),this,SLOT(redirect_clicked(Q3ListBoxItem *,const QPoint &)));
+ connect(this,SIGNAL(pressed(Q3ListBoxItem *)),this,SLOT(redirect_pressed(Q3ListBoxItem *)));
+ connect(this,SIGNAL(pressed(Q3ListBoxItem *,const QPoint &)),this,SLOT(redirect_pressed(Q3ListBoxItem *,const QPoint &)));
+ connect(this,SIGNAL(doubleClicked(Q3ListBoxItem *)),this,SLOT(redirect_doubleClicked(Q3ListBoxItem *)));
+ connect(this,SIGNAL(returnPressed(Q3ListBoxItem *)),this,SLOT(redirect_returnPressed(Q3ListBoxItem *)));
+ connect(this,SIGNAL(rightButtonClicked(Q3ListBoxItem *, const QPoint &)),this,SLOT(redirect_rightButtonClicked(Q3ListBoxItem *, const QPoint &)));
+ connect(this,SIGNAL(rightButtonPressed(Q3ListBoxItem *, const QPoint &)),this,SLOT(redirect_rightButtonPressed(Q3ListBoxItem *, const QPoint &)));
+ connect(this,SIGNAL(mouseButtonPressed(int,Q3ListBoxItem *,const QPoint &)),this,SLOT(redirect_mouseButtonPressed(int,Q3ListBoxItem *,const QPoint &)));
+ connect(this,SIGNAL(mouseButtonClicked(int,Q3ListBoxItem *,const QPoint &)),this,SLOT(redirect_mouseButtonClicked(int,Q3ListBoxItem *,const QPoint &)));
+ connect(this,SIGNAL(contextMenuRequested(Q3ListBoxItem *,const QPoint &)),this,SLOT(redirect_contextMenuRequested(Q3ListBoxItem *,const QPoint &)));
+ connect(this,SIGNAL(onItem(Q3ListBoxItem *)),this,SLOT(redirect_onItem(Q3ListBoxItem *)));
+ }
+
+ void KviTalListBox::redirect_highlighted(Q3ListBoxItem *item)
+ {
+ emit highlighted((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_selected(Q3ListBoxItem *item)
+ {
+ emit selected((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_selectionChanged(Q3ListBoxItem * item)
+ {
+ emit selectionChanged((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_currentChanged(Q3ListBoxItem * item)
+ {
+ emit currentChanged((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_clicked(Q3ListBoxItem * item)
+ {
+ emit clicked((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_clicked(Q3ListBoxItem * item,const QPoint & pnt)
+ {
+ emit clicked((KviTalListBoxItem *)item,pnt);
+ }
+
+ void KviTalListBox::redirect_pressed(Q3ListBoxItem * item)
+ {
+ emit pressed((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_pressed(Q3ListBoxItem * item,const QPoint & pnt)
+ {
+ emit pressed((KviTalListBoxItem *)item,pnt);
+ }
+
+ void KviTalListBox::redirect_doubleClicked(Q3ListBoxItem * item)
+ {
+ emit doubleClicked((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_returnPressed(Q3ListBoxItem * item)
+ {
+ emit returnPressed((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_rightButtonClicked(Q3ListBoxItem * item, const QPoint &pnt)
+ {
+ emit rightButtonClicked((KviTalListBoxItem *)item,pnt);
+ }
+
+ void KviTalListBox::redirect_rightButtonPressed(Q3ListBoxItem * item, const QPoint &pnt)
+ {
+ emit rightButtonPressed((KviTalListBoxItem *)item,pnt);
+ }
+
+ void KviTalListBox::redirect_mouseButtonPressed(int button,Q3ListBoxItem * item,const QPoint & pos)
+ {
+ emit mouseButtonPressed(button,(KviTalListBoxItem *)item,pos);
+ }
+
+ void KviTalListBox::redirect_mouseButtonClicked(int button,Q3ListBoxItem * item,const QPoint & pos)
+ {
+ emit mouseButtonClicked(button,(KviTalListBoxItem *)item,pos);
+ }
+
+ void KviTalListBox::redirect_contextMenuRequested(Q3ListBoxItem * item,const QPoint & pos)
+ {
+ emit contextMenuRequested((KviTalListBoxItem *)item,pos);
+ }
+
+ void KviTalListBox::redirect_onItem(Q3ListBoxItem * i)
+ {
+ emit onItem((KviTalListBoxItem *)i);
+ }
+
+ KviTalListBoxText::KviTalListBoxText(KviTalListBox *listbox, const QString &text)
+ :KviTalListBoxItem(listbox)
+ {
+ setText(text);
+ }
+
+ KviTalListBoxText::KviTalListBoxText(const QString &text)
+ :KviTalListBoxItem()
+ {
+ setText(text);
+ }
+
+ KviTalListBoxText::KviTalListBoxText(KviTalListBox* listbox, const QString &text, KviTalListBoxItem *after)
+ : KviTalListBoxItem(listbox, after)
+ {
+ setText(text);
+ }
+
+ KviTalListBoxText::~KviTalListBoxText()
+ {
+ }
+
+ void KviTalListBoxText::paint(QPainter *painter)
+ {
+ int itemHeight = height(listBox());
+ QFontMetrics fm = painter->fontMetrics();
+ int yPos = ((itemHeight - fm.height()) / 2) + fm.ascent();
+ painter->drawText(3, yPos, text());
+ }
+
+ int KviTalListBoxText::height(const KviTalListBox* lb) const
+ {
+ int h = lb ? lb->fontMetrics().lineSpacing() + 2 : 0;
+ return qMax(h, QApplication::globalStrut().height());
+ }
+
+ int KviTalListBoxText::width(const KviTalListBox* lb) const
+ {
+ int w = lb ? lb->fontMetrics().width(text()) + 6 : 0;
+ return qMax(w, QApplication::globalStrut().width());
+ }
+
+ int KviTalListBoxText::rtti() const
+ {
+ return RTTI;
+ }
+
+ KviTalListBoxPixmap::KviTalListBoxPixmap(KviTalListBox* listbox, const QPixmap &pixmap)
+ : KviTalListBoxItem(listbox)
+ {
+ pm = pixmap;
+ }
+
+ KviTalListBoxPixmap::KviTalListBoxPixmap(const QPixmap &pixmap)
+ : KviTalListBoxItem()
+ {
+ pm = pixmap;
+ }
+
+ KviTalListBoxPixmap::KviTalListBoxPixmap(KviTalListBox* listbox, const QPixmap &pixmap, KviTalListBoxItem *after)
+ : KviTalListBoxItem(listbox, after)
+ {
+ pm = pixmap;
+ }
+
+ KviTalListBoxPixmap::~KviTalListBoxPixmap()
+ {
+ }
+
+ KviTalListBoxPixmap::KviTalListBoxPixmap(KviTalListBox* listbox, const QPixmap &pix, const QString& text)
+ : KviTalListBoxItem(listbox)
+ {
+ pm = pix;
+ setText(text);
+ }
+
+ KviTalListBoxPixmap::KviTalListBoxPixmap(const QPixmap & pix, const QString& text)
+ : KviTalListBoxItem()
+ {
+ pm = pix;
+ setText(text);
+ }
+
+ KviTalListBoxPixmap::KviTalListBoxPixmap(KviTalListBox* listbox, const QPixmap & pix, const QString& text,
+ KviTalListBoxItem *after)
+ : KviTalListBoxItem(listbox, after)
+ {
+ pm = pix;
+ setText(text);
+ }
+
+ void KviTalListBoxPixmap::paint(QPainter *painter)
+ {
+ int itemHeight = height(listBox());
+ int yPos;
+
+ const QPixmap *pm = pixmap();
+ if (pm && ! pm->isNull()) {
+ yPos = (itemHeight - pm->height()) / 2;
+ painter->drawPixmap(3, yPos, *pm);
+ }
+
+ if (!text().isEmpty()) {
+ QFontMetrics fm = painter->fontMetrics();
+ yPos = ((itemHeight - fm.height()) / 2) + fm.ascent();
+ painter->drawText(pm->width() + 5, yPos, text());
+ }
+ }
+
+ int KviTalListBoxPixmap::height(const KviTalListBox* lb) const
+ {
+ int h;
+ if (text().isEmpty())
+ h = pm.height();
+ else
+ h = qMax(pm.height(), lb->fontMetrics().lineSpacing() + 2);
+ return qMax(h, QApplication::globalStrut().height());
+ }
+
+ int KviTalListBoxPixmap::width(const KviTalListBox* lb) const
+ {
+ if (text().isEmpty())
+ return qMax(pm.width() + 6, QApplication::globalStrut().width());
+ return qMax(pm.width() + lb->fontMetrics().width(text()) + 6,
+ QApplication::globalStrut().width());
+ }
+
+ int KviTalListBoxPixmap::rtti() const
+ {
+ return RTTI;
+ }
+
+
+ #include "kvi_tal_listbox_qt4.moc"
+#else
+ #include <qpainter.h>
+ #include <qstyle.h>
+ #include <qapplication.h>
+
+
+ KviTalListBox::KviTalListBox(QWidget * pParent,Qt::WFlags f)
+ : QListBox(pParent,0,f)
+ {
+ connect(this,SIGNAL(highlighted(QListBoxItem *)),this,SLOT(redirect_highlighted(QListBoxItem *)));
+ connect(this,SIGNAL(selected(QListBoxItem *)),this,SLOT(redirect_selected(QListBoxItem *)));
+ connect(this,SIGNAL(selectionChanged(QListBoxItem *)),this,SLOT(redirect_selectionChanged(QListBoxItem *)));
+ connect(this,SIGNAL(currentChanged(QListBoxItem *)),this,SLOT(redirect_currentChanged(QListBoxItem *)));
+ connect(this,SIGNAL(clicked(QListBoxItem *)),this,SLOT(redirect_clicked(QListBoxItem *)));
+ connect(this,SIGNAL(clicked(QListBoxItem *,const QPoint &)),this,SLOT(redirect_clicked(QListBoxItem *,const QPoint &)));
+ connect(this,SIGNAL(pressed(QListBoxItem *)),this,SLOT(redirect_pressed(QListBoxItem *)));
+ connect(this,SIGNAL(pressed(QListBoxItem *,const QPoint &)),this,SLOT(redirect_pressed(QListBoxItem *,const QPoint &)));
+ connect(this,SIGNAL(doubleClicked(QListBoxItem *)),this,SLOT(redirect_doubleClicked(QListBoxItem *)));
+ connect(this,SIGNAL(returnPressed(QListBoxItem *)),this,SLOT(redirect_returnPressed(QListBoxItem *)));
+ connect(this,SIGNAL(rightButtonClicked(QListBoxItem *, const QPoint &)),this,SLOT(redirect_rightButtonClicked(QListBoxItem *, const QPoint &)));
+ connect(this,SIGNAL(rightButtonPressed(QListBoxItem *, const QPoint &)),this,SLOT(redirect_rightButtonPressed(QListBoxItem *, const QPoint &)));
+ connect(this,SIGNAL(mouseButtonPressed(int,QListBoxItem *,const QPoint &)),this,SLOT(redirect_mouseButtonPressed(int,QListBoxItem *,const QPoint &)));
+ connect(this,SIGNAL(mouseButtonClicked(int,QListBoxItem *,const QPoint &)),this,SLOT(redirect_mouseButtonClicked(int,QListBoxItem *,const QPoint &)));
+ connect(this,SIGNAL(contextMenuRequested(QListBoxItem *,const QPoint &)),this,SLOT(redirect_contextMenuRequested(QListBoxItem *,const QPoint &)));
+ connect(this,SIGNAL(onItem(QListBoxItem *)),this,SLOT(redirect_onItem(QListBoxItem *)));
+ }
+
+ void KviTalListBox::redirect_highlighted(QListBoxItem *item)
+ {
+ emit highlighted((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_selected(QListBoxItem *item)
+ {
+ emit selected((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_selectionChanged(QListBoxItem * item)
+ {
+ emit selectionChanged((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_currentChanged(QListBoxItem * item)
+ {
+ emit currentChanged((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_clicked(QListBoxItem * item)
+ {
+ emit clicked((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_clicked(QListBoxItem * item,const QPoint & pnt)
+ {
+ emit clicked((KviTalListBoxItem *)item,pnt);
+ }
+
+ void KviTalListBox::redirect_pressed(QListBoxItem * item)
+ {
+ emit pressed((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_pressed(QListBoxItem * item,const QPoint & pnt)
+ {
+ emit pressed((KviTalListBoxItem *)item,pnt);
+ }
+
+ void KviTalListBox::redirect_doubleClicked(QListBoxItem * item)
+ {
+ emit doubleClicked((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_returnPressed(QListBoxItem * item)
+ {
+ emit returnPressed((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_rightButtonClicked(QListBoxItem * item, const QPoint &pnt)
+ {
+ emit rightButtonClicked((KviTalListBoxItem *)item,pnt);
+ }
+
+ void KviTalListBox::redirect_rightButtonPressed(QListBoxItem * item, const QPoint &pnt)
+ {
+ emit rightButtonPressed((KviTalListBoxItem *)item,pnt);
+ }
+
+ void KviTalListBox::redirect_mouseButtonPressed(int button,QListBoxItem * item,const QPoint & pos)
+ {
+ emit mouseButtonPressed(button,(KviTalListBoxItem *)item,pos);
+ }
+
+ void KviTalListBox::redirect_mouseButtonClicked(int button,QListBoxItem * item,const QPoint & pos)
+ {
+ emit mouseButtonClicked(button,(KviTalListBoxItem *)item,pos);
+ }
+
+ void KviTalListBox::redirect_contextMenuRequested(QListBoxItem * item,const QPoint & pos)
+ {
+ emit contextMenuRequested((KviTalListBoxItem *)item,pos);
+ }
+
+ void KviTalListBox::redirect_onItem(QListBoxItem * i)
+ {
+ emit onItem((KviTalListBoxItem *)i);
+ }
+
+ KviTalListBoxText::KviTalListBoxText( KviTalListBox *listbox, const QString &text )
+ :KviTalListBoxItem( listbox )
+ {
+ setText( text );
+ }
+
+ KviTalListBoxText::KviTalListBoxText( const QString &text )
+ :KviTalListBoxItem()
+ {
+ setText( text );
+ }
+
+ KviTalListBoxText::KviTalListBoxText( KviTalListBox* listbox, const QString &text, KviTalListBoxItem *after )
+ : KviTalListBoxItem( listbox, after )
+ {
+ setText( text );
+ }
+
+ KviTalListBoxText::~KviTalListBoxText()
+ {
+ }
+
+ void KviTalListBoxText::paint( QPainter *painter )
+ {
+ int itemHeight = height( listBox() );
+ QFontMetrics fm = painter->fontMetrics();
+ int yPos = ( ( itemHeight - fm.height() ) / 2 ) + fm.ascent();
+ painter->drawText( 3, yPos, text() );
+ }
+
+ int KviTalListBoxText::height( const KviTalListBox* lb ) const
+ {
+ int h = lb ? lb->fontMetrics().lineSpacing() + 2 : 0;
+ return QMAX( h, QApplication::globalStrut().height() );
+ }
+
+ int KviTalListBoxText::width( const KviTalListBox* lb ) const
+ {
+ int w = lb ? lb->fontMetrics().width( text() ) + 6 : 0;
+ return QMAX( w, QApplication::globalStrut().width() );
+ }
+
+ int KviTalListBoxText::RTTI = 1;
+
+ int KviTalListBoxText::rtti() const
+ {
+ return RTTI;
+ }
+
+ KviTalListBoxPixmap::KviTalListBoxPixmap( KviTalListBox* listbox, const QPixmap &pixmap )
+ : KviTalListBoxItem( listbox )
+ {
+ pm = pixmap;
+ }
+
+ KviTalListBoxPixmap::KviTalListBoxPixmap( const QPixmap &pixmap )
+ : KviTalListBoxItem()
+ {
+ pm = pixmap;
+ }
+
+ KviTalListBoxPixmap::KviTalListBoxPixmap( KviTalListBox* listbox, const QPixmap &pixmap, KviTalListBoxItem *after )
+ : KviTalListBoxItem( listbox, after )
+ {
+ pm = pixmap;
+ }
+
+ KviTalListBoxPixmap::~KviTalListBoxPixmap()
+ {
+ }
+
+ KviTalListBoxPixmap::KviTalListBoxPixmap( KviTalListBox* listbox, const QPixmap &pix, const QString& text)
+ : KviTalListBoxItem( listbox )
+ {
+ pm = pix;
+ setText( text );
+ }
+
+ KviTalListBoxPixmap::KviTalListBoxPixmap( const QPixmap & pix, const QString& text)
+ : KviTalListBoxItem()
+ {
+ pm = pix;
+ setText( text );
+ }
+
+ KviTalListBoxPixmap::KviTalListBoxPixmap( KviTalListBox* listbox, const QPixmap & pix, const QString& text,
+ KviTalListBoxItem *after )
+ : KviTalListBoxItem( listbox, after )
+ {
+ pm = pix;
+ setText( text );
+ }
+
+ void KviTalListBoxPixmap::paint( QPainter *painter )
+ {
+ int itemHeight = height( listBox() );
+ int yPos;
+
+ const QPixmap *pm = pixmap();
+ if ( pm && ! pm->isNull() ) {
+ yPos = ( itemHeight - pm->height() ) / 2;
+ painter->drawPixmap( 3, yPos, *pm);
+ }
+
+ if ( !text().isEmpty() ) {
+ QFontMetrics fm = painter->fontMetrics();
+ yPos = ( ( itemHeight - fm.height() ) / 2 ) + fm.ascent();
+ painter->drawText( pm->width() + 5, yPos, text() );
+ }
+ }
+
+ int KviTalListBoxPixmap::height( const KviTalListBox* lb ) const
+ {
+ int h;
+ if ( text().isEmpty() )
+ h = pm.height();
+ else
+ h = QMAX( pm.height(), lb->fontMetrics().lineSpacing() + 2 );
+ return QMAX( h, QApplication::globalStrut().height() );
+ }
+
+ int KviTalListBoxPixmap::width( const KviTalListBox* lb ) const
+ {
+ if ( text().isEmpty() )
+ return QMAX( pm.width() + 6, QApplication::globalStrut().width() );
+ return QMAX( pm.width() + lb->fontMetrics().width( text() ) + 6,
+ QApplication::globalStrut().width() );
+ }
+
+ int KviTalListBoxPixmap::RTTI = 2;
+
+ int KviTalListBoxPixmap::rtti() const
+ {
+ return RTTI;
+ }
+
+ #include "kvi_tal_listbox_qt3.moc"
+#endif
+
diff --git a/src/kvilib/tal/kvi_tal_listbox.h b/src/kvilib/tal/kvi_tal_listbox.h
new file mode 100644
index 00000000..18594539
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_listbox.h
@@ -0,0 +1,50 @@
+#ifndef _KVI_TAL_LISTBOX_H_
+#define _KVI_TAL_LISTBOX_H_
+
+//=============================================================================
+//
+// File : kvi_tal_listbox.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+//
+// This is the only reasonable CROSS-QT3-QT4-COMPATIBLE implementation
+// of QListBox I've been able to find.
+// Note that using macros for the items will NOT work since moc
+// doesn't expand them. Note also that KviTalListBoxText must
+// be fully reimplemented and not be inherited from QListBoxText
+// to build up a consistent item object hierarchy. To complete
+// the obscenity, we need TWO COMPLETE implementations: one for Qt3
+// and one for Qt4... bleah :D
+//
+// The code for KviTalListBoxText is adapted from qlistbox.h/cpp
+// present in qt 3.3.6 AND in qt 4.1.2.
+//
+
+#ifdef COMPILE_USE_QT4
+ #include "kvi_tal_listbox_qt4.h"
+#else
+ #include "kvi_tal_listbox_qt3.h"
+#endif
+
+#endif // _KVI_TAL_LISTBOX_H_
diff --git a/src/kvilib/tal/kvi_tal_listbox_qt3.h b/src/kvilib/tal/kvi_tal_listbox_qt3.h
new file mode 100644
index 00000000..d65b7929
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_listbox_qt3.h
@@ -0,0 +1,157 @@
+#ifndef _KVI_TAL_LISTBOX_QT3_H_
+#define _KVI_TAL_LISTBOX_QT3_H_
+
+//=============================================================================
+//
+// File : kvi_tal_listbox_qt3.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include <qlistbox.h>
+
+class KviTalListBoxItem;
+
+class KVILIB_API KviTalListBox : public QListBox
+{
+ Q_OBJECT
+public:
+ KviTalListBox(QWidget * pParent,Qt::WFlags f = 0);
+ virtual ~KviTalListBox() {};
+public:
+ KviTalListBoxItem * firstItem() const { return (KviTalListBoxItem *)QListBox::firstItem(); };
+ KviTalListBoxItem * selectedItem() const { return (KviTalListBoxItem *)QListBox::selectedItem(); };
+ KviTalListBoxItem * item(int iIndex) const { return (KviTalListBoxItem *)QListBox::item(iIndex); };
+signals:
+ void highlighted(KviTalListBoxItem *);
+ void selected(KviTalListBoxItem *);
+ void selectionChanged(KviTalListBoxItem * item);
+ void currentChanged(KviTalListBoxItem * item);
+ void clicked(KviTalListBoxItem * item);
+ void clicked(KviTalListBoxItem * item,const QPoint & pnt);
+ void pressed(KviTalListBoxItem * item);
+ void pressed(KviTalListBoxItem * item,const QPoint & pnt);
+ void doubleClicked(KviTalListBoxItem * item);
+ void returnPressed(KviTalListBoxItem * item);
+ void rightButtonClicked(KviTalListBoxItem *, const QPoint &);
+ void rightButtonPressed(KviTalListBoxItem *, const QPoint &);
+ void mouseButtonPressed(int button,KviTalListBoxItem * item,const QPoint & pos);
+ void mouseButtonClicked(int button,KviTalListBoxItem * item,const QPoint & pos);
+ void contextMenuRequested(KviTalListBoxItem * item,const QPoint & pos);
+ void onItem(KviTalListBoxItem * i);
+protected slots:
+ void redirect_highlighted(QListBoxItem *item);
+ void redirect_selected(QListBoxItem *item);
+ void redirect_selectionChanged(QListBoxItem * item);
+ void redirect_currentChanged(QListBoxItem * item);
+ void redirect_clicked(QListBoxItem * item);
+ void redirect_clicked(QListBoxItem * item,const QPoint & pnt);
+ void redirect_pressed(QListBoxItem * item);
+ void redirect_pressed(QListBoxItem * item,const QPoint & pnt);
+ void redirect_doubleClicked(QListBoxItem * item);
+ void redirect_returnPressed(QListBoxItem * item);
+ void redirect_rightButtonClicked(QListBoxItem * item, const QPoint &pnt);
+ void redirect_rightButtonPressed(QListBoxItem * item, const QPoint &pnt);
+ void redirect_mouseButtonPressed(int button,QListBoxItem * item,const QPoint & pos);
+ void redirect_mouseButtonClicked(int button,QListBoxItem * item,const QPoint & pos);
+ void redirect_contextMenuRequested(QListBoxItem * item,const QPoint & pos);
+ void redirect_onItem(QListBoxItem * i);
+};
+
+class KVILIB_API KviTalListBoxItem : public QListBoxItem
+{
+public:
+ KviTalListBoxItem()
+ : QListBoxItem() {};
+ KviTalListBoxItem(KviTalListBox * pParent)
+ : QListBoxItem(pParent) {};
+ KviTalListBoxItem(KviTalListBox * pParent,KviTalListBoxItem * pAfter)
+ : QListBoxItem(pParent,pAfter) {};
+ virtual ~KviTalListBoxItem() {};
+public:
+ KviTalListBoxItem * next() const { return (KviTalListBoxItem *)QListBoxItem::next(); };
+ KviTalListBoxItem * prev() const { return (KviTalListBoxItem *)QListBoxItem::prev(); };
+ KviTalListBox * listBox() const { return (KviTalListBox *)QListBoxItem::listBox(); };
+ virtual int height(const KviTalListBox *) const { return 0; };
+ int height(const QListBox *lb) const { return height((KviTalListBox *)lb); };
+ virtual int width(const KviTalListBox *) const { return 0; };
+ int width(const QListBox *lb) const { return width((KviTalListBox *)lb); };
+};
+
+class KVILIB_API KviTalListBoxText : public KviTalListBoxItem
+{
+public:
+ KviTalListBoxText( KviTalListBox* listbox, const QString & text=QString::null );
+ KviTalListBoxText( const QString & text=QString::null );
+ KviTalListBoxText( KviTalListBox* listbox, const QString & text, KviTalListBoxItem *after );
+ ~KviTalListBoxText();
+
+ int height( const KviTalListBox * ) const;
+ int width( const KviTalListBox * ) const;
+
+ int rtti() const;
+ static int RTTI;
+
+protected:
+ virtual void paint( QPainter * );
+
+private: // Disabled copy constructor and operator=
+#if defined(Q_DISABLE_COPY)
+ KviTalListBoxText( const KviTalListBoxText & );
+ KviTalListBoxText &operator=( const KviTalListBoxText & );
+#endif
+};
+
+
+class KVILIB_API KviTalListBoxPixmap : public KviTalListBoxItem
+{
+public:
+ KviTalListBoxPixmap( KviTalListBox* listbox, const QPixmap & );
+ KviTalListBoxPixmap( const QPixmap & );
+ KviTalListBoxPixmap( KviTalListBox* listbox, const QPixmap & pix, KviTalListBoxItem *after );
+ KviTalListBoxPixmap( KviTalListBox* listbox, const QPixmap &, const QString& );
+ KviTalListBoxPixmap( const QPixmap &, const QString& );
+ KviTalListBoxPixmap( KviTalListBox* listbox, const QPixmap & pix, const QString&, KviTalListBoxItem *after );
+ ~KviTalListBoxPixmap();
+
+ const QPixmap *pixmap() const { return &pm; }
+
+ int height( const KviTalListBox * ) const;
+ int width( const KviTalListBox * ) const;
+
+ int rtti() const;
+ static int RTTI;
+
+protected:
+ virtual void paint( QPainter * );
+
+private:
+ QPixmap pm;
+private: // Disabled copy constructor and operator=
+#if defined(Q_DISABLE_COPY)
+ KviTalListBoxPixmap( const KviTalListBoxPixmap & );
+ KviTalListBoxPixmap &operator=( const KviTalListBoxPixmap & );
+#endif
+};
+
+
+#endif // _KVI_TAL_LISTBOX_QT3_H_
diff --git a/src/kvilib/tal/kvi_tal_listbox_qt4.h b/src/kvilib/tal/kvi_tal_listbox_qt4.h
new file mode 100644
index 00000000..dcb92f4d
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_listbox_qt4.h
@@ -0,0 +1,152 @@
+#ifndef _KVI_TAL_LISTBOX_QT4_H_
+#define _KVI_TAL_LISTBOX_QT4_H_
+
+//=============================================================================
+//
+// File : kvi_tal_listbox_qt4.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include <q3listbox.h>
+
+class KviTalListBoxItem;
+
+
+class KVILIB_API KviTalListBox : public Q3ListBox
+{
+ Q_OBJECT
+public:
+ KviTalListBox(QWidget * pParent,Qt::WFlags f = 0);
+ virtual ~KviTalListBox() {};
+public:
+ KviTalListBoxItem * firstItem() const { return (KviTalListBoxItem *)Q3ListBox::firstItem(); };
+ KviTalListBoxItem * selectedItem() const { return (KviTalListBoxItem *)Q3ListBox::selectedItem(); };
+ KviTalListBoxItem * item(int iIndex) const { return (KviTalListBoxItem *)Q3ListBox::item(iIndex); };
+signals:
+ void highlighted(KviTalListBoxItem *);
+ void selected(KviTalListBoxItem *);
+ void selectionChanged(KviTalListBoxItem * item);
+ void currentChanged(KviTalListBoxItem * item);
+ void clicked(KviTalListBoxItem * item);
+ void clicked(KviTalListBoxItem * item,const QPoint & pnt);
+ void pressed(KviTalListBoxItem * item);
+ void pressed(KviTalListBoxItem * item,const QPoint & pnt);
+ void doubleClicked(KviTalListBoxItem * item);
+ void returnPressed(KviTalListBoxItem * item);
+ void rightButtonClicked(KviTalListBoxItem *, const QPoint &);
+ void rightButtonPressed(KviTalListBoxItem *, const QPoint &);
+ void mouseButtonPressed(int button,KviTalListBoxItem * item,const QPoint & pos);
+ void mouseButtonClicked(int button,KviTalListBoxItem * item,const QPoint & pos);
+ void contextMenuRequested(KviTalListBoxItem * item,const QPoint & pos);
+ void onItem(KviTalListBoxItem * i);
+protected slots:
+ void redirect_highlighted(Q3ListBoxItem *);
+ void redirect_selected(Q3ListBoxItem *);
+ void redirect_selectionChanged(Q3ListBoxItem * item);
+ void redirect_currentChanged(Q3ListBoxItem * item);
+ void redirect_clicked(Q3ListBoxItem * item);
+ void redirect_clicked(Q3ListBoxItem * item,const QPoint & pnt);
+ void redirect_pressed(Q3ListBoxItem * item);
+ void redirect_pressed(Q3ListBoxItem * item,const QPoint & pnt);
+ void redirect_doubleClicked(Q3ListBoxItem * item);
+ void redirect_returnPressed(Q3ListBoxItem *);
+ void redirect_rightButtonClicked(Q3ListBoxItem *, const QPoint &);
+ void redirect_rightButtonPressed(Q3ListBoxItem *, const QPoint &);
+ void redirect_mouseButtonPressed(int button,Q3ListBoxItem * item,const QPoint & pos);
+ void redirect_mouseButtonClicked(int button,Q3ListBoxItem * item,const QPoint & pos);
+ void redirect_contextMenuRequested(Q3ListBoxItem * item,const QPoint & pos);
+ void redirect_onItem(Q3ListBoxItem * i);
+};
+
+class KVILIB_API KviTalListBoxItem : public Q3ListBoxItem
+{
+public:
+ KviTalListBoxItem()
+ : Q3ListBoxItem() {};
+ KviTalListBoxItem(KviTalListBox * pParent)
+ : Q3ListBoxItem(pParent) {};
+ KviTalListBoxItem(KviTalListBox * pParent,KviTalListBoxItem * pAfter)
+ : Q3ListBoxItem(pParent,pAfter) {};
+ virtual ~KviTalListBoxItem() {};
+public:
+ KviTalListBoxItem * next() const { return (KviTalListBoxItem *)Q3ListBoxItem::next(); };
+ KviTalListBoxItem * prev() const { return (KviTalListBoxItem *)Q3ListBoxItem::prev(); };
+ KviTalListBox * listBox() const { return (KviTalListBox *)Q3ListBoxItem::listBox(); };
+ virtual int height(const KviTalListBox *) const { return 0; };
+ int height(const Q3ListBox *lb) const { return height((KviTalListBox *)lb); };
+ virtual int width(const KviTalListBox *) const { return 0; };
+ int width(const Q3ListBox *lb) const { return width((KviTalListBox *)lb); };
+};
+
+
+class KVILIB_API KviTalListBoxText : public KviTalListBoxItem
+{
+public:
+ KviTalListBoxText(KviTalListBox* listbox, const QString & text=QString());
+ KviTalListBoxText(const QString & text=QString());
+ KviTalListBoxText(KviTalListBox* listbox, const QString & text, KviTalListBoxItem *after);
+ ~KviTalListBoxText();
+
+ int height(const KviTalListBox *) const;
+ int width(const KviTalListBox *) const;
+
+ int rtti() const;
+ enum { RTTI = 1 };
+
+protected:
+ virtual void paint(QPainter *);
+
+private:
+ Q_DISABLE_COPY(KviTalListBoxText)
+};
+
+
+class KVILIB_API KviTalListBoxPixmap : public KviTalListBoxItem
+{
+public:
+ KviTalListBoxPixmap(KviTalListBox* listbox, const QPixmap &);
+ KviTalListBoxPixmap(const QPixmap &);
+ KviTalListBoxPixmap(KviTalListBox* listbox, const QPixmap & pix, KviTalListBoxItem *after);
+ KviTalListBoxPixmap(KviTalListBox* listbox, const QPixmap &, const QString&);
+ KviTalListBoxPixmap(const QPixmap &, const QString&);
+ KviTalListBoxPixmap(KviTalListBox* listbox, const QPixmap & pix, const QString&, KviTalListBoxItem *after);
+ ~KviTalListBoxPixmap();
+
+ const QPixmap *pixmap() const { return &pm; }
+
+ int height(const KviTalListBox *) const;
+ int width(const KviTalListBox *) const;
+
+ int rtti() const;
+ enum { RTTI = 2 };
+
+protected:
+ virtual void paint(QPainter *);
+
+private:
+ Q_DISABLE_COPY(KviTalListBoxPixmap)
+
+ QPixmap pm;
+};
+
+#endif // _KVI_TAL_LISTBOX_QT4_H_
diff --git a/src/kvilib/tal/kvi_tal_listview.cpp b/src/kvilib/tal/kvi_tal_listview.cpp
new file mode 100644
index 00000000..01b253b3
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_listview.cpp
@@ -0,0 +1,1542 @@
+//=============================================================================
+//
+// File : kvi_tal_listview.cpp
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+#include "kvi_tal_listview.h"
+
+#include "kvi_pointerhashtable.h"
+
+
+#ifdef COMPILE_USE_QT4
+ #include <qpainter.h>
+ #include <qstyle.h>
+ #include <q3header.h>
+ #include <qapplication.h>
+ #include <qhash.h>
+ #include <qstyleoption.h>
+ #include <qaccessible.h>
+
+ static QStyleOptionQ3ListView getStyleOption(const Q3ListView *lv, const Q3ListViewItem *item)
+ {
+ QStyleOptionQ3ListView opt;
+ opt.init(lv);
+ opt.subControls = QStyle::SC_None;
+ opt.activeSubControls = QStyle::SC_None;
+ QWidget *vp = lv->viewport();
+ opt.viewportPalette = vp->palette();
+ opt.viewportBGRole = vp->backgroundRole();
+ opt.itemMargin = lv->itemMargin();
+ opt.sortColumn = 0;
+ opt.treeStepSize = lv->treeStepSize();
+ opt.rootIsDecorated = lv->rootIsDecorated();
+ bool firstItem = true;
+ while (item) {
+ QStyleOptionQ3ListViewItem lvi;
+ lvi.height = item->height();
+ lvi.totalHeight = item->totalHeight();
+ lvi.itemY = item->itemPos();
+ lvi.childCount = item->childCount();
+ lvi.features = QStyleOptionQ3ListViewItem::None;
+ lvi.state = QStyle::State_None;
+ if (item->isEnabled())
+ lvi.state |= QStyle::State_Enabled;
+ if (item->isOpen())
+ lvi.state |= QStyle::State_Open;
+ if (item->isExpandable())
+ lvi.features |= QStyleOptionQ3ListViewItem::Expandable;
+ if (item->multiLinesEnabled())
+ lvi.features |= QStyleOptionQ3ListViewItem::MultiLine;
+ if (item->isVisible())
+ lvi.features |= QStyleOptionQ3ListViewItem::Visible;
+ if (item->parent() && item->parent()->rtti() == 1
+ && static_cast<Q3CheckListItem *>(item->parent())->type() == Q3CheckListItem::Controller)
+ lvi.features |= QStyleOptionQ3ListViewItem::ParentControl;
+ opt.items.append(lvi);
+ if (!firstItem) {
+ item = item->nextSibling();
+ } else {
+ firstItem = false;
+ item = item->firstChild();
+ }
+ }
+ return opt;
+ }
+
+ KviTalListView::KviTalListView(QWidget * pParent)
+ : Q3ListView(pParent)
+ {
+ connect(this,SIGNAL(selectionChanged(Q3ListViewItem *)),this,SLOT(redirect_selectionChanged(Q3ListViewItem *)));
+ connect(this,SIGNAL(currentChanged(Q3ListViewItem *)),this,SLOT(redirect_currentChanged(Q3ListViewItem *)));
+ connect(this,SIGNAL(clicked(Q3ListViewItem *)),this,SLOT(redirect_clicked(Q3ListViewItem *)));
+ connect(this,SIGNAL(clicked(Q3ListViewItem *,const QPoint &,int)),this,SLOT(redirect_clicked(Q3ListViewItem *,const QPoint &,int)));
+ connect(this,SIGNAL(pressed(Q3ListViewItem *)),this,SLOT(redirect_pressed(Q3ListViewItem *)));
+ connect(this,SIGNAL(pressed(Q3ListViewItem *,const QPoint &,int)),this,SLOT(redirect_pressed(Q3ListViewItem *,const QPoint &,int)));
+ connect(this,SIGNAL(doubleClicked(Q3ListViewItem *)),this,SLOT(redirect_doubleClicked(Q3ListViewItem *)));
+ connect(this,SIGNAL(doubleClicked(Q3ListViewItem *,const QPoint &,int)),this,SLOT(redirect_doubleClicked(Q3ListViewItem *,const QPoint &,int)));
+ connect(this,SIGNAL(returnPressed(Q3ListViewItem *)),this,SLOT(redirect_returnPressed(Q3ListViewItem *)));
+ connect(this,SIGNAL(spacePressed(Q3ListViewItem *)),this,SLOT(redirect_spacePressed(Q3ListViewItem *)));
+ connect(this,SIGNAL(rightButtonClicked(Q3ListViewItem *,const QPoint &,int)),this,SLOT(redirect_rightButtonClicked(Q3ListViewItem *,const QPoint &,int)));
+ connect(this,SIGNAL(rightButtonPressed(Q3ListViewItem *,const QPoint &,int)),this,SLOT(redirect_rightButtonPressed(Q3ListViewItem *,const QPoint &,int)));
+ connect(this,SIGNAL(mouseButtonClicked(int,Q3ListViewItem *,const QPoint &,int)),this,SLOT(redirect_mouseButtonClicked(int,Q3ListViewItem *,const QPoint &,int)));
+ connect(this,SIGNAL(mouseButtonPressed(int,Q3ListViewItem *,const QPoint &,int)),this,SLOT(redirect_mouseButtonPressed(int,Q3ListViewItem *,const QPoint &,int)));
+ connect(this,SIGNAL(contextMenuRequested(Q3ListViewItem *,const QPoint &,int)),this,SLOT(redirect_contextMenuRequested(Q3ListViewItem *,const QPoint &,int)));
+ connect(this,SIGNAL(onItem(Q3ListViewItem *)),this,SLOT(redirect_onItem(Q3ListViewItem *)));
+ connect(this,SIGNAL(expanded(Q3ListViewItem *)),this,SLOT(redirect_expanded(Q3ListViewItem *)));
+ connect(this,SIGNAL(collapsed(Q3ListViewItem *)),this,SLOT(redirect_collapsed(Q3ListViewItem *)));
+ }
+
+ void KviTalListView::redirect_selectionChanged(Q3ListViewItem * pItem)
+ {
+ emit selectionChanged((KviTalListViewItem *)pItem);
+ }
+
+ void KviTalListView::redirect_currentChanged(Q3ListViewItem * pItem)
+ {
+ emit currentChanged((KviTalListViewItem *)pItem);
+ }
+
+ void KviTalListView::redirect_clicked(Q3ListViewItem * pItem)
+ {
+ emit clicked((KviTalListViewItem *)pItem);
+ }
+
+ void KviTalListView::redirect_clicked(Q3ListViewItem * pItem,const QPoint &pnt,int uColumn)
+ {
+ emit clicked((KviTalListViewItem *)pItem,pnt,uColumn);
+ }
+
+ void KviTalListView::redirect_pressed(Q3ListViewItem * pItem)
+ {
+ emit pressed((KviTalListViewItem *)pItem);
+ }
+
+ void KviTalListView::redirect_pressed(Q3ListViewItem * pItem,const QPoint &pnt,int uColumn)
+ {
+ emit pressed((KviTalListViewItem *)pItem,pnt,uColumn);
+ }
+
+ void KviTalListView::redirect_doubleClicked(Q3ListViewItem * pItem)
+ {
+ emit doubleClicked((KviTalListViewItem *)pItem);
+ }
+
+ void KviTalListView::redirect_doubleClicked(Q3ListViewItem * pItem,const QPoint &pnt,int uColumn)
+ {
+ emit doubleClicked((KviTalListViewItem *)pItem,pnt,uColumn);
+ }
+
+ void KviTalListView::redirect_returnPressed(Q3ListViewItem * pItem)
+ {
+ emit returnPressed((KviTalListViewItem *)pItem);
+ }
+
+ void KviTalListView::redirect_spacePressed(Q3ListViewItem * pItem)
+ {
+ emit spacePressed((KviTalListViewItem *)pItem);
+ }
+
+ void KviTalListView::redirect_rightButtonClicked(Q3ListViewItem * pItem,const QPoint &pnt,int uColumn)
+ {
+ emit rightButtonClicked((KviTalListViewItem *)pItem,pnt,uColumn);
+ }
+
+ void KviTalListView::redirect_rightButtonPressed(Q3ListViewItem * pItem,const QPoint &pnt,int uColumn)
+ {
+ emit rightButtonPressed((KviTalListViewItem *)pItem,pnt,uColumn);
+ }
+
+ void KviTalListView::redirect_mouseButtonClicked(int iButton,Q3ListViewItem * pItem,const QPoint &pnt,int uColumn)
+ {
+ emit mouseButtonClicked(iButton,(KviTalListViewItem *)pItem,pnt,uColumn);
+ }
+
+ void KviTalListView::redirect_mouseButtonPressed(int iButton,Q3ListViewItem * pItem,const QPoint &pnt,int uColumn)
+ {
+ emit mouseButtonPressed(iButton,(KviTalListViewItem *)pItem,pnt,uColumn);
+ }
+
+ void KviTalListView::redirect_contextMenuRequested(Q3ListViewItem * pItem,const QPoint &pnt,int uColumn)
+ {
+ emit contextMenuRequested((KviTalListViewItem *)pItem,pnt,uColumn);
+ }
+
+ void KviTalListView::redirect_onItem(Q3ListViewItem * pItem)
+ {
+ emit onItem((KviTalListViewItem *)pItem);
+ }
+
+ void KviTalListView::redirect_expanded(Q3ListViewItem * pItem)
+ {
+ emit expanded((KviTalListViewItem *)pItem);
+ }
+
+ void KviTalListView::redirect_collapsed(Q3ListViewItem * pItem)
+ {
+ emit collapsed((KviTalListViewItem *)pItem);
+ }
+
+
+ struct KviTalCheckListItemPrivate
+ {
+ KviTalCheckListItemPrivate():
+ exclusive(0),
+ currentState(KviTalCheckListItem::Off),
+ tristate(false) {}
+
+ KviTalCheckListItem *exclusive;
+ KviTalCheckListItem::ToggleState currentState;
+ QHash<KviTalCheckListItem *, KviTalCheckListItem::ToggleState> statesDict;
+ bool tristate;
+ };
+
+ KviTalCheckListItem::KviTalCheckListItem(KviTalCheckListItem *parent, const QString &text,
+ Type tt)
+ : KviTalListViewItem(parent, text, QString())
+ {
+ myType = tt;
+ init();
+ if (myType == RadioButton) {
+ if (parent->type() != RadioButtonController)
+ qWarning("KviTalCheckListItem::KviTalCheckListItem(), radio button must be "
+ "child of a controller");
+ else
+ d->exclusive = parent;
+ }
+ }
+
+ KviTalCheckListItem::KviTalCheckListItem(KviTalCheckListItem *parent, KviTalListViewItem *after,
+ const QString &text, Type tt)
+ : KviTalListViewItem(parent, after, text)
+ {
+ myType = tt;
+ init();
+ if (myType == RadioButton) {
+ if (parent->type() != RadioButtonController)
+ qWarning("KviTalCheckListItem::KviTalCheckListItem(), radio button must be "
+ "child of a controller");
+ else
+ d->exclusive = parent;
+ }
+ }
+
+ KviTalCheckListItem::KviTalCheckListItem(KviTalListViewItem *parent, const QString &text,
+ Type tt)
+ : KviTalListViewItem(parent, text, QString())
+ {
+ myType = tt;
+ if (myType == RadioButton) {
+ qWarning("KviTalCheckListItem::KviTalCheckListItem(), radio button must be "
+ "child of a KviTalCheckListItem");
+ }
+ init();
+ }
+
+ KviTalCheckListItem::KviTalCheckListItem(KviTalListViewItem *parent, KviTalListViewItem *after,
+ const QString &text, Type tt)
+ : KviTalListViewItem(parent, after, text)
+ {
+ myType = tt;
+ if (myType == RadioButton) {
+ qWarning("KviTalCheckListItem::KviTalCheckListItem(), radio button must be "
+ "child of a KviTalCheckListItem");
+ }
+ init();
+ }
+
+ KviTalCheckListItem::KviTalCheckListItem(KviTalListView *parent, const QString &text,
+ Type tt)
+ : KviTalListViewItem(parent, text)
+ {
+ myType = tt;
+ if (tt == RadioButton)
+ qWarning("KviTalCheckListItem::KviTalCheckListItem(), radio button must be "
+ "child of a KviTalCheckListItem");
+ init();
+ }
+
+ KviTalCheckListItem::KviTalCheckListItem(KviTalListView *parent, KviTalListViewItem *after,
+ const QString &text, Type tt)
+ : KviTalListViewItem(parent, after, text)
+ {
+ myType = tt;
+ if (tt == RadioButton)
+ qWarning("KviTalCheckListItem::KviTalCheckListItem(), radio button must be "
+ "child of a KviTalCheckListItem");
+ init();
+ }
+
+ int KviTalCheckListItem::rtti() const
+ {
+ return RTTI;
+ }
+
+ KviTalCheckListItem::KviTalCheckListItem(KviTalListView *parent, const QString &text,
+ const QPixmap & p)
+ : KviTalListViewItem(parent, text)
+ {
+ myType = RadioButtonController;
+ setPixmap(0, p);
+ init();
+ }
+
+ KviTalCheckListItem::KviTalCheckListItem(KviTalListViewItem *parent, const QString &text,
+ const QPixmap & p)
+ : KviTalListViewItem(parent, text)
+ {
+ myType = RadioButtonController;
+ setPixmap(0, p);
+ init();
+ }
+
+ void KviTalCheckListItem::init()
+ {
+ d = new KviTalCheckListItemPrivate();
+ on = false; // ### remove on ver 4
+ // CheckBoxControllers by default have tristate set to true
+ if (myType == CheckBoxController)
+ setTristate(true);
+ }
+
+ KviTalCheckListItem::~KviTalCheckListItem()
+ {
+ if (myType == RadioButton
+ && d->exclusive && d->exclusive->d
+ && d->exclusive->d->exclusive == this)
+ d->exclusive->turnOffChild();
+ d->exclusive = 0; // so the children won't try to access us.
+ delete d;
+ d = 0;
+ }
+
+ void KviTalCheckListItem::setTristate(bool b)
+ {
+ if ((myType != CheckBoxController) && (myType != CheckBox)) {
+ qWarning("KviTalCheckListItem::setTristate(), has no effect on RadioButton "
+ "or RadioButtonController.");
+ return;
+ }
+ d->tristate = b;
+ }
+
+ bool KviTalCheckListItem::isTristate() const
+ {
+ return d->tristate;
+ }
+
+ KviTalCheckListItem::ToggleState KviTalCheckListItem::state() const
+ {
+ if (!isTristate() && internalState() == NoChange)
+ return Off;
+ else
+ return d->currentState;
+ }
+
+ KviTalCheckListItem::ToggleState KviTalCheckListItem::internalState() const
+ {
+ return d->currentState;
+ }
+
+ void KviTalCheckListItem::setState(ToggleState s)
+ {
+ if (myType == CheckBoxController && state() == NoChange)
+ updateStoredState(this);
+ setState(s, true, true);
+ }
+
+ void KviTalCheckListItem::setState(ToggleState s, bool update, bool store)
+ {
+
+ if (s == internalState())
+ return;
+
+ if (myType == CheckBox) {
+ setCurrentState(s);
+ stateChange(state());
+ if (update && parent() && parent()->rtti() == 1
+ && ((KviTalCheckListItem*)parent())->type() == CheckBoxController)
+ ((KviTalCheckListItem*)parent())->updateController(update, store);
+ } else if (myType == CheckBoxController) {
+ if (s == NoChange && childCount()) {
+ restoreState(this);
+ } else {
+ KviTalListViewItem *item = firstChild();
+ int childCount = 0;
+ while(item) {
+ if (item->rtti() == 1 &&
+ (((KviTalCheckListItem*)item)->type() == CheckBox ||
+ ((KviTalCheckListItem*)item)->type() == CheckBoxController)) {
+ KviTalCheckListItem *checkItem = (KviTalCheckListItem*)item;
+ checkItem->setState(s, false, false);
+ childCount++;
+ }
+ item = item->nextSibling();
+ }
+ if (update) {
+ if (childCount > 0) {
+ ToggleState oldState = internalState();
+ updateController(false, false);
+ if (oldState != internalState() &&
+ parent() && parent()->rtti() == 1 &&
+ ((KviTalCheckListItem*)parent())->type() == CheckBoxController)
+ ((KviTalCheckListItem*)parent())->updateController(update, store);
+
+ updateController(update, store);
+ } else {
+ // if there are no children we simply set the CheckBoxController and update its parent
+ setCurrentState(s);
+ stateChange(state());
+ if (parent() && parent()->rtti() == 1
+ && ((KviTalCheckListItem*)parent())->type() == CheckBoxController)
+ ((KviTalCheckListItem*)parent())->updateController(update, store);
+ }
+ } else {
+ setCurrentState(s);
+ stateChange(state());
+ }
+
+ }
+ } else if (myType == RadioButton) {
+ if (s == On) {
+ if (d->exclusive && d->exclusive->d->exclusive != this)
+ d->exclusive->turnOffChild();
+ setCurrentState(s);
+ if (d->exclusive)
+ d->exclusive->d->exclusive = this;
+ } else {
+ if (d->exclusive && d->exclusive->d->exclusive == this)
+ d->exclusive->d->exclusive = 0;
+ setCurrentState(Off);
+ }
+ stateChange(state());
+ }
+ repaint();
+ }
+
+ void KviTalCheckListItem::setCurrentState(ToggleState s)
+ {
+ ToggleState old = d->currentState;
+ d->currentState = s;
+ if (d->currentState == On)
+ on = true;
+ else
+ on = false;
+
+ //#ifndef QT_NO_ACCESSIBILITY
+ // if (old != d->currentState && listView())
+ // QAccessible::updateAccessibility(listView()->viewport(), indexOfItem(this), QAccessible::StateChanged);
+ //#else
+ // Q_UNUSED(old);
+ //#endif
+ }
+
+ void KviTalCheckListItem::setStoredState(ToggleState newState, KviTalCheckListItem *key)
+ {
+ if (myType == CheckBox || myType == CheckBoxController)
+ d->statesDict[key] = newState;
+ }
+
+ KviTalCheckListItem::ToggleState KviTalCheckListItem::storedState(KviTalCheckListItem *key) const
+ {
+ QHash<KviTalCheckListItem *, KviTalCheckListItem::ToggleState>::Iterator it = d->statesDict.find(key);
+ if (it != d->statesDict.end())
+ return it.value();
+ else
+ return Off;
+ }
+
+ void KviTalCheckListItem::turnOffChild()
+ {
+ if (myType == RadioButtonController && d->exclusive)
+ d->exclusive->setOn(false);
+ }
+
+ void KviTalCheckListItem::activate()
+ {
+ KviTalListView * lv = listView();
+
+ if (lv && !lv->isEnabled() || !isEnabled())
+ return;
+
+ QPoint pos;
+ int boxsize = lv->style()->pixelMetric(QStyle::PM_CheckListButtonSize, 0, lv);
+ if (activatedPos(pos)) {
+ bool parentControl = false;
+ if (parent() && parent()->rtti() == 1 &&
+ ((KviTalCheckListItem*) parent())->type() == RadioButtonController)
+ parentControl = true;
+
+ int x = parentControl ? 0 : 3;
+ int align = lv->columnAlignment(0);
+ int marg = lv->itemMargin();
+ int y = 0;
+
+ if (align & Qt::AlignVCenter)
+ y = ((height() - boxsize) / 2) + marg;
+ else
+ y = (lv->fontMetrics().height() + 2 + marg - boxsize) / 2;
+
+ QRect r(x, y, boxsize-3, boxsize-3);
+ // columns might have been swapped
+ r.moveBy(lv->header()->sectionPos(0), 0);
+ if (!r.contains(pos))
+ return;
+ }
+ if ((myType == CheckBox) || (myType == CheckBoxController)) {
+ //lv->d->startEdit = FALSE;
+ switch (internalState()) {
+ case On:
+ setState(Off);
+ break;
+ case Off:
+ if (!isTristate() && myType == CheckBox) {
+ setState(On);
+ } else {
+ setState(NoChange);
+ if (myType == CheckBoxController && internalState() != NoChange)
+ setState(On);
+ }
+ break;
+ case NoChange:
+ setState(On);
+ break;
+ }
+ ignoreDoubleClick();
+ } else if (myType == RadioButton) {
+ setOn(true);
+ ignoreDoubleClick();
+ }
+ }
+
+ void KviTalCheckListItem::setOn(bool b )
+ {
+ if (b)
+ setState(On , true, true);
+ else
+ setState(Off , true, true);
+ }
+
+ void KviTalCheckListItem::stateChange(bool)
+ {
+ }
+
+ void KviTalCheckListItem::stateChange(ToggleState s)
+ {
+ stateChange(s == On);
+ }
+
+ void KviTalCheckListItem::restoreState(KviTalCheckListItem *key, int depth)
+ {
+ switch (type()) {
+ case CheckBox:
+ setCurrentState(storedState(key));
+ stateChange(state());
+ repaint();
+ break;
+ case CheckBoxController: {
+ KviTalListViewItem *item = firstChild();
+ int childCount = 0;
+ while (item) {
+ // recursively calling restoreState for children of type CheckBox and CheckBoxController
+ if (item->rtti() == 1 &&
+ (((KviTalCheckListItem*)item)->type() == CheckBox ||
+ ((KviTalCheckListItem*)item)->type() == CheckBoxController)) {
+ ((KviTalCheckListItem*)item)->restoreState(key , depth+1);
+ childCount++;
+ }
+ item = item->nextSibling();
+ }
+ if (childCount > 0) {
+ if (depth == 0)
+ updateController(true);
+ else
+ updateController(false);
+ } else {
+ // if there are no children we retrieve the CheckBoxController state directly.
+ setState(storedState(key), true, false);
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
+ void KviTalCheckListItem::updateController(bool update , bool store)
+ {
+ if (myType != CheckBoxController)
+ return;
+
+ KviTalCheckListItem *controller = 0;
+ // checks if this CheckBoxController has another CheckBoxController as parent
+ if (parent() && parent()->rtti() == 1
+ && ((KviTalCheckListItem*)parent())->type() == CheckBoxController)
+ controller = (KviTalCheckListItem*)parent();
+
+ ToggleState theState = Off;
+ bool first = true;
+ KviTalListViewItem *item = firstChild();
+ while(item && theState != NoChange) {
+ if (item->rtti() == 1 &&
+ (((KviTalCheckListItem*)item)->type() == CheckBox ||
+ ((KviTalCheckListItem*)item)->type() == CheckBoxController)) {
+ KviTalCheckListItem *checkItem = (KviTalCheckListItem*)item;
+ if (first) {
+ theState = checkItem->internalState();
+ first = false;
+ } else {
+ if (checkItem->internalState() == NoChange ||
+ theState != checkItem->internalState())
+ theState = NoChange;
+ else
+ theState = checkItem->internalState();
+ }
+ }
+ item = item->nextSibling();
+ }
+ if (internalState() != theState) {
+ setCurrentState(theState);
+ if (store && (internalState() == On || internalState() == Off))
+ updateStoredState(this);
+ stateChange(state());
+ if (update && controller) {
+ controller->updateController(update, store);
+ }
+ repaint();
+ }
+ }
+
+ void KviTalCheckListItem::updateStoredState(KviTalCheckListItem *key)
+ {
+ if (myType != CheckBoxController)
+ return;
+
+ KviTalListViewItem *item = firstChild();
+ while(item) {
+ if (item->rtti() == 1) {
+ KviTalCheckListItem *checkItem = (KviTalCheckListItem*)item;
+ if (checkItem->type() == CheckBox)
+ checkItem->setStoredState(checkItem->internalState(), key);
+ else if (checkItem->type() == CheckBoxController)
+ checkItem->updateStoredState(key);
+ }
+ item = item->nextSibling();
+ }
+ // this state is only needed if the CheckBoxController has no CheckBox / CheckBoxController children.
+ setStoredState(internalState() , key);
+ }
+
+ void KviTalCheckListItem::setup()
+ {
+ KviTalListViewItem::setup();
+ int h = height();
+ KviTalListView *lv = listView();
+ if (lv)
+ h = qMax(lv->style()->pixelMetric(QStyle::PM_CheckListButtonSize, 0, lv),
+ h);
+ h = qMax(h, QApplication::globalStrut().height());
+ setHeight(h);
+ }
+
+ int KviTalCheckListItem::width(const QFontMetrics& fm, const KviTalListView* lv, int column) const
+ {
+ int r = KviTalListViewItem::width(fm, lv, column);
+ if (column == 0) {
+ r += lv->itemMargin();
+ if (myType == RadioButtonController && pixmap(0)) {
+ // r += 0;
+ } else {
+ r += lv->style()->pixelMetric(QStyle::PM_CheckListButtonSize, 0, lv) + 4;
+ }
+ }
+ return qMax(r, QApplication::globalStrut().width());
+ }
+
+ void KviTalCheckListItem::paintCell(QPainter * p, const QColorGroup & cg,
+ int column, int width, int align)
+ {
+ if (!p)
+ return;
+
+ KviTalListView *lv = listView();
+ if (!lv)
+ return;
+
+ const QPalette::ColorRole crole = lv->foregroundRole();
+ if (cg.brush(crole) != lv->palette().brush(crole))
+ p->fillRect(0, 0, width, height(), cg.brush(crole));
+ else
+ lv->paintEmptyArea(p, QRect(0, 0, width, height()));
+
+ if (column != 0) {
+ // The rest is text, or for subclasses to change.
+ KviTalListViewItem::paintCell(p, cg, column, width, align);
+ return;
+ }
+
+ bool parentControl = false;
+ if (parent() && parent()->rtti() == 1 &&
+ ((KviTalCheckListItem*) parent())->type() == RadioButtonController)
+ parentControl = true;
+
+ QFontMetrics fm(lv->fontMetrics());
+ int boxsize = lv->style()->pixelMetric(myType == RadioButtonController ? QStyle::PM_CheckListControllerSize :
+ QStyle::PM_CheckListButtonSize, 0, lv);
+ int marg = lv->itemMargin();
+ int r = marg;
+
+ // Draw controller / checkbox / radiobutton ---------------------
+ QStyle::State styleflags = QStyle::State_None;
+ if (internalState() == On) {
+ styleflags |= QStyle::State_On;
+ } else if (internalState() == NoChange) {
+ if (myType == CheckBoxController && !isTristate())
+ styleflags |= QStyle::State_Off;
+ else
+ styleflags |= QStyle::State_NoChange;
+ } else {
+ styleflags |= QStyle::State_Off;
+ }
+ if (isSelected())
+ styleflags |= QStyle::State_Selected;
+ if (isEnabled() && lv->isEnabled())
+ styleflags |= QStyle::State_Enabled;
+ if (lv->window()->isActiveWindow())
+ styleflags |= QStyle::State_Active;
+
+ if (myType == RadioButtonController) {
+ int x = 0;
+ if(!parentControl)
+ x += 3;
+ if (!pixmap(0)) {
+ QStyleOptionQ3ListView opt = getStyleOption(lv, this);
+ opt.rect.setRect(x, 0, boxsize, fm.height() + 2 + marg);
+ opt.palette = cg;
+ opt.state = styleflags;
+ lv->style()->drawPrimitive(QStyle::PE_Q3CheckListController, &opt, p, lv);
+ r += boxsize + 4;
+ }
+ } else {
+ Q_ASSERT(lv); //###
+ int x = 0;
+ int y = 0;
+ if (!parentControl)
+ x += 3;
+ if (align & Qt::AlignVCenter)
+ y = ((height() - boxsize) / 2) + marg;
+ else
+ y = (fm.height() + 2 + marg - boxsize) / 2;
+
+ QStyleOptionQ3ListView opt = getStyleOption(lv, this);
+ opt.rect.setRect(x, y, boxsize, fm.height() + 2 + marg);
+ opt.palette = cg;
+ opt.state = styleflags;
+ lv->style()->drawPrimitive((myType == CheckBox || myType == CheckBoxController)
+ ? QStyle::PE_Q3CheckListIndicator
+ : QStyle::PE_Q3CheckListExclusiveIndicator, &opt, p, lv);
+ r += boxsize + 4;
+ }
+
+ // Draw text ----------------------------------------------------
+ p->translate(r, 0);
+ p->setPen(QPen(cg.text()));
+ KviTalListViewItem::paintCell(p, cg, column, width - r, align);
+ }
+
+ void KviTalCheckListItem::paintFocus(QPainter *p, const QColorGroup & cg,
+ const QRect & r)
+ {
+ bool intersect = true;
+ KviTalListView *lv = listView();
+ if (lv && lv->header()->mapToActual(0) != 0) {
+ int xdepth = lv->treeStepSize() * (depth() + (lv->rootIsDecorated() ? 1 : 0)) + lv->itemMargin();
+ int p = lv->header()->cellPos(lv->header()->mapToActual(0));
+ xdepth += p;
+ intersect = r.intersects(QRect(p, r.y(), xdepth - p + 1, r.height()));
+ }
+ bool parentControl = false;
+ if (parent() && parent()->rtti() == 1 &&
+ ((KviTalCheckListItem*) parent())->type() == RadioButtonController)
+ parentControl = true;
+ if (myType != RadioButtonController && intersect &&
+ (lv->rootIsDecorated() || myType == RadioButton ||
+ (myType == CheckBox && parentControl))) {
+ QRect rect;
+ int boxsize = lv->style()->pixelMetric(QStyle::PM_CheckListButtonSize, 0, lv);
+ if (lv->columnAlignment(0) == Qt::AlignCenter) {
+ QFontMetrics fm(lv->font());
+ int bx = (lv->columnWidth(0) - (boxsize + fm.width(text())))/2 + boxsize;
+ if (bx < 0) bx = 0;
+ rect.setRect(r.x() + bx + 5, r.y(), r.width() - bx - 5,
+ r.height());
+ } else
+ rect.setRect(r.x() + boxsize + 5, r.y(), r.width() - boxsize - 5,
+ r.height());
+ KviTalListViewItem::paintFocus(p, cg, rect);
+ } else {
+ KviTalListViewItem::paintFocus(p, cg, r);
+ }
+ }
+
+
+ #include "kvi_tal_listview_qt4.moc"
+#else
+ #include <qpainter.h>
+ #include <qstyle.h>
+ #include <qheader.h>
+ #include <qapplication.h>
+
+ KviTalListView::KviTalListView(QWidget * pParent)
+ : QListView(pParent)
+ {
+ connect(this,SIGNAL(selectionChanged(QListViewItem *)),this,SLOT(redirect_selectionChanged(QListViewItem *)));
+ connect(this,SIGNAL(currentChanged(QListViewItem *)),this,SLOT(redirect_currentChanged(QListViewItem *)));
+ connect(this,SIGNAL(clicked(QListViewItem *)),this,SLOT(redirect_clicked(QListViewItem *)));
+ connect(this,SIGNAL(clicked(QListViewItem *,const QPoint &,int)),this,SLOT(redirect_clicked(QListViewItem *,const QPoint &,int)));
+ connect(this,SIGNAL(pressed(QListViewItem *)),this,SLOT(redirect_pressed(QListViewItem *)));
+ connect(this,SIGNAL(pressed(QListViewItem *,const QPoint &,int)),this,SLOT(redirect_pressed(QListViewItem *,const QPoint &,int)));
+ connect(this,SIGNAL(doubleClicked(QListViewItem *)),this,SLOT(redirect_doubleClicked(QListViewItem *)));
+ connect(this,SIGNAL(doubleClicked(QListViewItem *,const QPoint &,int)),this,SLOT(redirect_doubleClicked(QListViewItem *,const QPoint &,int)));
+ connect(this,SIGNAL(returnPressed(QListViewItem *)),this,SLOT(redirect_returnPressed(QListViewItem *)));
+ connect(this,SIGNAL(spacePressed(QListViewItem *)),this,SLOT(redirect_spacePressed(QListViewItem *)));
+ connect(this,SIGNAL(rightButtonClicked(QListViewItem *,const QPoint &,int)),this,SLOT(redirect_rightButtonClicked(QListViewItem *,const QPoint &,int)));
+ connect(this,SIGNAL(rightButtonPressed(QListViewItem *,const QPoint &,int)),this,SLOT(redirect_rightButtonPressed(QListViewItem *,const QPoint &,int)));
+ connect(this,SIGNAL(mouseButtonClicked(int,QListViewItem *,const QPoint &,int)),this,SLOT(redirect_mouseButtonClicked(int,QListViewItem *,const QPoint &,int)));
+ connect(this,SIGNAL(mouseButtonPressed(int,QListViewItem *,const QPoint &,int)),this,SLOT(redirect_mouseButtonPressed(int,QListViewItem *,const QPoint &,int)));
+ connect(this,SIGNAL(contextMenuRequested(QListViewItem *,const QPoint &,int)),this,SLOT(redirect_contextMenuRequested(QListViewItem *,const QPoint &,int)));
+ connect(this,SIGNAL(onItem(QListViewItem *)),this,SLOT(redirect_onItem(QListViewItem *)));
+ connect(this,SIGNAL(expanded(QListViewItem *)),this,SLOT(redirect_expanded(QListViewItem *)));
+ connect(this,SIGNAL(collapsed(QListViewItem *)),this,SLOT(redirect_collapsed(QListViewItem *)));
+ }
+
+ void KviTalListView::redirect_selectionChanged(QListViewItem * pItem)
+ {
+ emit selectionChanged((KviTalListViewItem *)pItem);
+ }
+
+ void KviTalListView::redirect_currentChanged(QListViewItem * pItem)
+ {
+ emit currentChanged((KviTalListViewItem *)pItem);
+ }
+
+ void KviTalListView::redirect_clicked(QListViewItem * pItem)
+ {
+ emit clicked((KviTalListViewItem *)pItem);
+ }
+
+ void KviTalListView::redirect_clicked(QListViewItem * pItem,const QPoint &pnt,int uColumn)
+ {
+ emit clicked((KviTalListViewItem *)pItem,pnt,uColumn);
+ }
+
+ void KviTalListView::redirect_pressed(QListViewItem * pItem)
+ {
+ emit pressed((KviTalListViewItem *)pItem);
+ }
+
+ void KviTalListView::redirect_pressed(QListViewItem * pItem,const QPoint &pnt,int uColumn)
+ {
+ emit pressed((KviTalListViewItem *)pItem,pnt,uColumn);
+ }
+
+ void KviTalListView::redirect_doubleClicked(QListViewItem * pItem)
+ {
+ emit doubleClicked((KviTalListViewItem *)pItem);
+ }
+
+ void KviTalListView::redirect_doubleClicked(QListViewItem * pItem,const QPoint &pnt,int uColumn)
+ {
+ emit doubleClicked((KviTalListViewItem *)pItem,pnt,uColumn);
+ }
+
+ void KviTalListView::redirect_returnPressed(QListViewItem * pItem)
+ {
+ emit returnPressed((KviTalListViewItem *)pItem);
+ }
+
+ void KviTalListView::redirect_spacePressed(QListViewItem * pItem)
+ {
+ emit spacePressed((KviTalListViewItem *)pItem);
+ }
+
+ void KviTalListView::redirect_rightButtonClicked(QListViewItem * pItem,const QPoint &pnt,int uColumn)
+ {
+ emit rightButtonClicked((KviTalListViewItem *)pItem,pnt,uColumn);
+ }
+
+ void KviTalListView::redirect_rightButtonPressed(QListViewItem * pItem,const QPoint &pnt,int uColumn)
+ {
+ emit rightButtonPressed((KviTalListViewItem *)pItem,pnt,uColumn);
+ }
+
+ void KviTalListView::redirect_mouseButtonClicked(int iButton,QListViewItem * pItem,const QPoint &pnt,int uColumn)
+ {
+ emit mouseButtonClicked(iButton,(KviTalListViewItem *)pItem,pnt,uColumn);
+ }
+
+ void KviTalListView::redirect_mouseButtonPressed(int iButton,QListViewItem * pItem,const QPoint &pnt,int uColumn)
+ {
+ emit mouseButtonPressed(iButton,(KviTalListViewItem *)pItem,pnt,uColumn);
+ }
+
+ void KviTalListView::redirect_contextMenuRequested(QListViewItem * pItem,const QPoint &pnt,int uColumn)
+ {
+ emit contextMenuRequested((KviTalListViewItem *)pItem,pnt,uColumn);
+ }
+
+ void KviTalListView::redirect_onItem(QListViewItem * pItem)
+ {
+ emit onItem((KviTalListViewItem *)pItem);
+ }
+
+ void KviTalListView::redirect_expanded(QListViewItem * pItem)
+ {
+ emit expanded((KviTalListViewItem *)pItem);
+ }
+
+ void KviTalListView::redirect_collapsed(QListViewItem * pItem)
+ {
+ emit collapsed((KviTalListViewItem *)pItem);
+ }
+
+ struct KviTalCheckListItemPrivate
+ {
+ KviTalCheckListItemPrivate():
+ exclusive( 0 ),
+ currentState( KviTalCheckListItem::Off ),
+ statesDict( 0 ),
+ tristate( FALSE ) {}
+
+ KviTalCheckListItem *exclusive;
+ KviTalCheckListItem::ToggleState currentState;
+ KviPointerHashTable<void *,KviTalCheckListItem::ToggleState> *statesDict;
+ bool tristate;
+ };
+
+ // ### obscenity is warranted.
+
+ KviTalCheckListItem::KviTalCheckListItem( KviTalCheckListItem *parent, const QString &text,
+ Type tt )
+ : KviTalListViewItem( parent, text, QString::null )
+ {
+ myType = tt;
+ init();
+ if ( myType == RadioButton ) {
+ if ( parent->type() != RadioButtonController )
+ qWarning( "KviTalCheckListItem::KviTalCheckListItem(), radio button must be "
+ "child of a controller" );
+ else
+ d->exclusive = parent;
+ }
+ }
+
+ KviTalCheckListItem::KviTalCheckListItem( KviTalCheckListItem *parent, KviTalListViewItem *after,
+ const QString &text, Type tt )
+ : KviTalListViewItem( parent, after, text )
+ {
+ myType = tt;
+ init();
+ if ( myType == RadioButton ) {
+ if ( parent->type() != RadioButtonController )
+ qWarning( "KviTalCheckListItem::KviTalCheckListItem(), radio button must be "
+ "child of a controller" );
+ else
+ d->exclusive = parent;
+ }
+ }
+
+ KviTalCheckListItem::KviTalCheckListItem( KviTalListViewItem *parent, const QString &text,
+ Type tt )
+ : KviTalListViewItem( parent, text, QString::null )
+ {
+ myType = tt;
+ if ( myType == RadioButton ) {
+ qWarning( "KviTalCheckListItem::KviTalCheckListItem(), radio button must be "
+ "child of a KviTalCheckListItem" );
+ }
+ init();
+ }
+
+ KviTalCheckListItem::KviTalCheckListItem( KviTalListViewItem *parent, KviTalListViewItem *after,
+ const QString &text, Type tt )
+ : KviTalListViewItem( parent, after, text )
+ {
+ myType = tt;
+ if ( myType == RadioButton ) {
+ qWarning( "KviTalCheckListItem::KviTalCheckListItem(), radio button must be "
+ "child of a KviTalCheckListItem" );
+ }
+ init();
+ }
+
+ KviTalCheckListItem::KviTalCheckListItem( KviTalListView *parent, const QString &text,
+ Type tt )
+ : KviTalListViewItem( parent, text )
+ {
+ myType = tt;
+ if ( tt == RadioButton )
+ qWarning( "KviTalCheckListItem::KviTalCheckListItem(), radio button must be "
+ "child of a KviTalCheckListItem" );
+ init();
+ }
+
+ KviTalCheckListItem::KviTalCheckListItem( KviTalListView *parent, KviTalListViewItem *after,
+ const QString &text, Type tt )
+ : KviTalListViewItem( parent, after, text )
+ {
+ myType = tt;
+ if ( tt == RadioButton )
+ qWarning( "KviTalCheckListItem::KviTalCheckListItem(), radio button must be "
+ "child of a KviTalCheckListItem" );
+ init();
+ }
+
+
+ int KviTalCheckListItem::RTTI = 1;
+
+ int KviTalCheckListItem::rtti() const
+ {
+ return RTTI;
+ }
+
+ KviTalCheckListItem::KviTalCheckListItem( KviTalListView *parent, const QString &text,
+ const QPixmap & p )
+ : KviTalListViewItem( parent, text )
+ {
+ myType = RadioButtonController;
+ setPixmap( 0, p );
+ init();
+ }
+
+ KviTalCheckListItem::KviTalCheckListItem( KviTalListViewItem *parent, const QString &text,
+ const QPixmap & p )
+ : KviTalListViewItem( parent, text )
+ {
+ myType = RadioButtonController;
+ setPixmap( 0, p );
+ init();
+ }
+
+ void KviTalCheckListItem::init()
+ {
+ d = new KviTalCheckListItemPrivate();
+ on = FALSE; // ### remove on ver 4
+ if ( myType == CheckBoxController || myType == CheckBox ) {
+ d->statesDict = new KviPointerHashTable<void *,ToggleState>(101);
+ d->statesDict->setAutoDelete( TRUE );
+ }
+ // CheckBoxControllers by default have tristate set to TRUE
+ if ( myType == CheckBoxController )
+ setTristate( TRUE );
+ }
+
+ KviTalCheckListItem::~KviTalCheckListItem()
+ {
+ if ( myType == RadioButton
+ && d->exclusive && d->exclusive->d
+ && d->exclusive->d->exclusive == this )
+ d->exclusive->turnOffChild();
+ d->exclusive = 0; // so the children won't try to access us.
+ if ( d->statesDict )
+ delete d->statesDict;
+ delete d;
+ d = 0;
+ }
+
+ void KviTalCheckListItem::setTristate( bool b )
+ {
+ if ( ( myType != CheckBoxController ) && ( myType != CheckBox ) ) {
+ qWarning( "KviTalCheckListItem::setTristate(), has no effect on RadioButton "
+ "or RadioButtonController." );
+ return;
+ }
+ d->tristate = b;
+ }
+
+ bool KviTalCheckListItem::isTristate() const
+ {
+ return d->tristate;
+ }
+
+ KviTalCheckListItem::ToggleState KviTalCheckListItem::state() const
+ {
+ if ( !isTristate() && internalState() == NoChange )
+ return Off;
+ else
+ return d->currentState;
+ }
+
+ KviTalCheckListItem::ToggleState KviTalCheckListItem::internalState() const
+ {
+ return d->currentState;
+ }
+
+ void KviTalCheckListItem::setState( ToggleState s )
+ {
+ if ( myType == CheckBoxController && state() == NoChange )
+ updateStoredState( (void*) this );
+ setState( s, TRUE, TRUE );
+ }
+
+ void KviTalCheckListItem::setState( ToggleState s, bool update, bool store)
+ {
+
+ if ( s == internalState() )
+ return;
+
+ if ( myType == CheckBox ) {
+ setCurrentState( s );
+ stateChange( state() );
+ if ( update && parent() && parent()->rtti() == 1
+ && ((KviTalCheckListItem*)parent())->type() == CheckBoxController )
+ ((KviTalCheckListItem*)parent())->updateController( update, store );
+ } else if ( myType == CheckBoxController ) {
+ if ( s == NoChange && childCount()) {
+ restoreState( (void*) this );
+ } else {
+ KviTalListViewItem *item = firstChild();
+ int childCount = 0;
+ while( item ) {
+ if ( item->rtti() == 1 &&
+ ( ((KviTalCheckListItem*)item)->type() == CheckBox ||
+ ((KviTalCheckListItem*)item)->type() == CheckBoxController ) ) {
+ KviTalCheckListItem *checkItem = (KviTalCheckListItem*)item;
+ checkItem->setState( s, FALSE, FALSE );
+ childCount++;
+ }
+ item = item->nextSibling();
+ }
+ if ( update ) {
+ if ( childCount > 0 ) {
+ ToggleState oldState = internalState();
+ updateController( FALSE, FALSE );
+ if ( oldState != internalState() &&
+ parent() && parent()->rtti() == 1 &&
+ ((KviTalCheckListItem*)parent())->type() == CheckBoxController )
+ ((KviTalCheckListItem*)parent())->updateController( update, store );
+
+ updateController( update, store );
+ } else {
+ // if there are no children we simply set the CheckBoxController and update its parent
+ setCurrentState( s );
+ stateChange( state() );
+ if ( parent() && parent()->rtti() == 1
+ && ((KviTalCheckListItem*)parent())->type() == CheckBoxController )
+ ((KviTalCheckListItem*)parent())->updateController( update, store );
+ }
+ } else {
+ setCurrentState( s );
+ stateChange( state() );
+ }
+
+ }
+ } else if ( myType == RadioButton ) {
+ if ( s == On ) {
+ if ( d->exclusive && d->exclusive->d->exclusive != this )
+ d->exclusive->turnOffChild();
+ setCurrentState( s );
+ if ( d->exclusive )
+ d->exclusive->d->exclusive = this;
+ } else {
+ if ( d->exclusive && d->exclusive->d->exclusive == this )
+ d->exclusive->d->exclusive = 0;
+ setCurrentState( Off );
+ }
+ stateChange( state() );
+ }
+ repaint();
+ }
+
+ void KviTalCheckListItem::setCurrentState( ToggleState s )
+ {
+ ToggleState old = d->currentState;
+ d->currentState = s;
+ if (d->currentState == On)
+ on = TRUE;
+ else
+ on = FALSE;
+
+ #if defined(QT_ACCESSIBILITY_SUPPORT)
+ if ( old != d->currentState && listView() )
+ QAccessible::updateAccessibility( listView()->viewport(), indexOfItem( this ), QAccessible::StateChanged );
+ #else
+ Q_UNUSED( old );
+ #endif
+ }
+
+ void KviTalCheckListItem::setStoredState( ToggleState newState, void *key )
+ {
+ if ( myType == CheckBox || myType == CheckBoxController )
+ d->statesDict->replace( key, new ToggleState(newState) );
+ }
+
+ KviTalCheckListItem::ToggleState KviTalCheckListItem::storedState( void *key ) const
+ {
+ if ( !d->statesDict )
+ return Off;
+
+ ToggleState *foundState = d->statesDict->find( key );
+ if ( foundState )
+ return ToggleState( *foundState );
+ else
+ return Off;
+ }
+
+ void KviTalCheckListItem::turnOffChild()
+ {
+ if ( myType == RadioButtonController && d->exclusive )
+ d->exclusive->setOn( FALSE );
+ }
+
+ void KviTalCheckListItem::activate()
+ {
+ KviTalListView * lv = listView();
+
+ if ( lv && !lv->isEnabled() || !isEnabled() )
+ return;
+
+ QPoint pos;
+ int boxsize = lv->style().pixelMetric(QStyle::PM_CheckListButtonSize, lv);
+ if ( activatedPos( pos ) ) {
+ bool parentControl = FALSE;
+ if ( parent() && parent()->rtti() == 1 &&
+ ((KviTalCheckListItem*) parent())->type() == RadioButtonController )
+ parentControl = TRUE;
+
+ int x = parentControl ? 0 : 3;
+ int align = lv->columnAlignment( 0 );
+ int marg = lv->itemMargin();
+ int y = 0;
+
+ if ( align & AlignVCenter )
+ y = ( ( height() - boxsize ) / 2 ) + marg;
+ else
+ y = (lv->fontMetrics().height() + 2 + marg - boxsize) / 2;
+
+ QRect r( x, y, boxsize-3, boxsize-3 );
+ // columns might have been swapped
+ r.moveBy( lv->header()->sectionPos( 0 ), 0 );
+ if ( !r.contains( pos ) )
+ return;
+ }
+ if ( ( myType == CheckBox ) || ( myType == CheckBoxController) ) {
+ switch ( internalState() ) {
+ case On:
+ setState( Off );
+ break;
+ case Off:
+ if ( !isTristate() && myType == CheckBox ) {
+ setState( On );
+ } else {
+ setState( NoChange );
+ if ( myType == CheckBoxController && internalState() != NoChange )
+ setState( On );
+ }
+ break;
+ case NoChange:
+ setState( On );
+ break;
+ }
+ ignoreDoubleClick();
+ } else if ( myType == RadioButton ) {
+ setOn( TRUE );
+ ignoreDoubleClick();
+ }
+ }
+
+ void KviTalCheckListItem::setOn( bool b )
+ {
+ if ( b )
+ setState( On , TRUE, TRUE );
+ else
+ setState( Off , TRUE, TRUE );
+ }
+
+ void KviTalCheckListItem::stateChange( bool )
+ {
+ }
+
+ void KviTalCheckListItem::stateChange( ToggleState s )
+ {
+ stateChange( s == On );
+ }
+
+ void KviTalCheckListItem::restoreState( void *key, int depth )
+ {
+ switch ( type() ) {
+ case CheckBox:
+ setCurrentState( storedState( key ) );
+ stateChange( state() );
+ repaint();
+ break;
+ case CheckBoxController: {
+ KviTalListViewItem *item = firstChild();
+ int childCount = 0;
+ while ( item ) {
+ // recursively calling restoreState for children of type CheckBox and CheckBoxController
+ if ( item->rtti() == 1 &&
+ ( ((KviTalCheckListItem*)item)->type() == CheckBox ||
+ ((KviTalCheckListItem*)item)->type() == CheckBoxController ) ) {
+ ((KviTalCheckListItem*)item)->restoreState( key , depth+1 );
+ childCount++;
+ }
+ item = item->nextSibling();
+ }
+ if ( childCount > 0 ) {
+ if ( depth == 0 )
+ updateController( TRUE );
+ else
+ updateController( FALSE );
+ } else {
+ // if there are no children we retrieve the CheckBoxController state directly.
+ setState( storedState( key ), TRUE, FALSE );
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
+ void KviTalCheckListItem::updateController( bool update , bool store )
+ {
+ if ( myType != CheckBoxController )
+ return;
+
+ KviTalCheckListItem *controller = 0;
+ // checks if this CheckBoxController has another CheckBoxController as parent
+ if ( parent() && parent()->rtti() == 1
+ && ((KviTalCheckListItem*)parent())->type() == CheckBoxController )
+ controller = (KviTalCheckListItem*)parent();
+
+ ToggleState theState = Off;
+ bool first = TRUE;
+ KviTalListViewItem *item = firstChild();
+ while( item && theState != NoChange ) {
+ if ( item->rtti() == 1 &&
+ ( ((KviTalCheckListItem*)item)->type() == CheckBox ||
+ ((KviTalCheckListItem*)item)->type() == CheckBoxController ) ) {
+ KviTalCheckListItem *checkItem = (KviTalCheckListItem*)item;
+ if ( first ) {
+ theState = checkItem->internalState();
+ first = FALSE;
+ } else {
+ if ( checkItem->internalState() == NoChange ||
+ theState != checkItem->internalState() )
+ theState = NoChange;
+ else
+ theState = checkItem->internalState();
+ }
+ }
+ item = item->nextSibling();
+ }
+ if ( internalState() != theState ) {
+ setCurrentState( theState );
+ if ( store && ( internalState() == On || internalState() == Off ) )
+ updateStoredState( (void*) this );
+ stateChange( state() );
+ if ( update && controller ) {
+ controller->updateController( update, store );
+ }
+ repaint();
+ }
+ }
+
+ void KviTalCheckListItem::updateStoredState( void *key )
+ {
+ if ( myType != CheckBoxController )
+ return;
+
+ KviTalListViewItem *item = firstChild();
+ while( item ) {
+ if ( item->rtti() == 1 ) {
+ KviTalCheckListItem *checkItem = (KviTalCheckListItem*)item;
+ if ( checkItem->type() == CheckBox )
+ checkItem->setStoredState( checkItem->internalState(), key );
+ else if (checkItem->type() == CheckBoxController )
+ checkItem->updateStoredState( key );
+ }
+ item = item->nextSibling();
+ }
+ // this state is only needed if the CheckBoxController has no CheckBox / CheckBoxController children.
+ setStoredState( internalState() , key );
+ }
+
+ void KviTalCheckListItem::setup()
+ {
+ KviTalListViewItem::setup();
+ int h = height();
+ KviTalListView *lv = listView();
+ if ( lv )
+ h = QMAX( lv->style().pixelMetric(QStyle::PM_CheckListButtonSize, lv),
+ h );
+ h = QMAX( h, QApplication::globalStrut().height() );
+ setHeight( h );
+ }
+
+ int KviTalCheckListItem::width( const QFontMetrics& fm, const KviTalListView* lv, int column) const
+ {
+ int r = KviTalListViewItem::width( fm, lv, column );
+ if ( column == 0 ) {
+ r += lv->itemMargin();
+ if ( myType == RadioButtonController && pixmap( 0 ) ) {
+ // r += 0;
+ } else {
+ r += lv->style().pixelMetric(QStyle::PM_CheckListButtonSize, lv) + 4;
+ }
+ }
+ return QMAX( r, QApplication::globalStrut().width() );
+ }
+
+ void KviTalCheckListItem::paintCell( QPainter * p, const QColorGroup & cg,
+ int column, int width, int align )
+ {
+ if ( !p )
+ return;
+
+ KviTalListView *lv = listView();
+ if ( !lv )
+ return;
+
+ const BackgroundMode bgmode = lv->viewport()->backgroundMode();
+ const QColorGroup::ColorRole crole = QPalette::backgroundRoleFromMode( bgmode );
+ if ( cg.brush( crole ) != lv->colorGroup().brush( crole ) )
+ p->fillRect( 0, 0, width, height(), cg.brush( crole ) );
+ else
+ lv->paintEmptyArea( p, QRect( 0, 0, width, height() ) );
+
+ if ( column != 0 ) {
+ // The rest is text, or for subclasses to change.
+ KviTalListViewItem::paintCell( p, cg, column, width, align );
+ return;
+ }
+
+ bool parentControl = FALSE;
+ if ( parent() && parent()->rtti() == 1 &&
+ ((KviTalCheckListItem*) parent())->type() == RadioButtonController )
+ parentControl = TRUE;
+
+ QFontMetrics fm( lv->fontMetrics() );
+ int boxsize = lv->style().pixelMetric( myType == RadioButtonController ? QStyle::PM_CheckListControllerSize :
+ QStyle::PM_CheckListButtonSize, lv);
+ int marg = lv->itemMargin();
+ int r = marg;
+
+ // Draw controller / checkbox / radiobutton ---------------------
+ int styleflags = QStyle::Style_Default;
+ if ( internalState() == On ) {
+ styleflags |= QStyle::Style_On;
+ } else if ( internalState() == NoChange ) {
+ if ( myType == CheckBoxController && !isTristate() )
+ styleflags |= QStyle::Style_Off;
+ else
+ styleflags |= QStyle::Style_NoChange;
+ } else {
+ styleflags |= QStyle::Style_Off;
+ }
+ if ( isSelected() )
+ styleflags |= QStyle::Style_Selected;
+ if ( isEnabled() && lv->isEnabled() )
+ styleflags |= QStyle::Style_Enabled;
+
+ if ( myType == RadioButtonController ) {
+ int x = 0;
+ if(!parentControl)
+ x += 3;
+ if ( !pixmap( 0 ) ) {
+ lv->style().drawPrimitive(QStyle::PE_CheckListController, p,
+ QRect(x, 0, boxsize,
+ fm.height() + 2 + marg),
+ cg, styleflags, QStyleOption(this));
+ r += boxsize + 4;
+ }
+ } else {
+ Q_ASSERT( lv ); //###
+ int x = 0;
+ int y = 0;
+ if ( !parentControl )
+ x += 3;
+ if ( align & AlignVCenter )
+ y = ( ( height() - boxsize ) / 2 ) + marg;
+ else
+ y = (fm.height() + 2 + marg - boxsize) / 2;
+
+ if ( ( myType == CheckBox ) || ( myType == CheckBoxController ) ) {
+ lv->style().drawPrimitive(QStyle::PE_CheckListIndicator, p,
+ QRect(x, y, boxsize,
+ fm.height() + 2 + marg),
+ cg, styleflags, QStyleOption(this));
+ } else { //radio button look
+ lv->style().drawPrimitive(QStyle::PE_CheckListExclusiveIndicator,
+ p, QRect(x, y, boxsize,
+ fm.height() + 2 + marg),
+ cg, styleflags, QStyleOption(this));
+ }
+ r += boxsize + 4;
+ }
+
+ // Draw text ----------------------------------------------------
+ p->translate( r, 0 );
+ p->setPen( QPen( cg.text() ) );
+ KviTalListViewItem::paintCell( p, cg, column, width - r, align );
+ }
+
+ void KviTalCheckListItem::paintFocus( QPainter *p, const QColorGroup & cg,const QRect & r )
+ {
+ bool intersect = TRUE;
+ KviTalListView *lv = listView();
+ if ( lv && lv->header()->mapToActual( 0 ) != 0 ) {
+ int xdepth = lv->treeStepSize() * ( depth() + ( lv->rootIsDecorated() ? 1 : 0) ) + lv->itemMargin();
+ int p = lv->header()->cellPos( lv->header()->mapToActual( 0 ) );
+ xdepth += p;
+ intersect = r.intersects( QRect( p, r.y(), xdepth - p + 1, r.height() ) );
+ }
+ bool parentControl = FALSE;
+ if ( parent() && parent()->rtti() == 1 &&
+ ((KviTalCheckListItem*) parent())->type() == RadioButtonController )
+ parentControl = TRUE;
+ if ( myType != RadioButtonController && intersect &&
+ (lv->rootIsDecorated() || myType == RadioButton ||
+ (myType == CheckBox && parentControl) ) ) {
+ QRect rect;
+ int boxsize = lv->style().pixelMetric(QStyle::PM_CheckListButtonSize, lv);
+ if ( lv->columnAlignment(0) == AlignCenter ) {
+ QFontMetrics fm( lv->font() );
+ int bx = (lv->columnWidth(0) - (boxsize + fm.width(text())))/2 + boxsize;
+ if ( bx < 0 ) bx = 0;
+ rect.setRect( r.x() + bx + 5, r.y(), r.width() - bx - 5,
+ r.height() );
+ } else
+ rect.setRect( r.x() + boxsize + 5, r.y(), r.width() - boxsize - 5,
+ r.height() );
+ KviTalListViewItem::paintFocus(p, cg, rect);
+ } else {
+ KviTalListViewItem::paintFocus(p, cg, r);
+ }
+ }
+
+ #include "kvi_tal_listview_qt3.moc"
+#endif
+
+
+
diff --git a/src/kvilib/tal/kvi_tal_listview.h b/src/kvilib/tal/kvi_tal_listview.h
new file mode 100644
index 00000000..9b95e2f8
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_listview.h
@@ -0,0 +1,51 @@
+#ifndef _KVI_TAL_LISTVIEW_H_
+#define _KVI_TAL_LISTVIEW_H_
+
+//=============================================================================
+//
+// File : kvi_tal_listview.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+//
+// This is the only reasonable CROSS-QT3-QT4-COMPATIBLE implementation
+// of QListView I've been able to find.
+// Note that using macros for the items will NOT work since moc
+// doesn't expand them. Note also that KviTalCheckListItem must
+// be fully reimplemented and not be inherited from QCheckListItem
+// to build up a consistent item object hierarchy. To complete
+// the obscenity, we need TWO COMPLETE implementations: one for Qt3
+// and one for Qt4... bleah :D
+//
+// The code for KviTalCheckListItem is adapted from qlistview.h/cpp
+// present in qt 3.3.6 AND in qt 4.1.2.
+//
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_USE_QT4
+ #include "kvi_tal_listview_qt4.h"
+#else
+ #include "kvi_tal_listview_qt3.h"
+#endif
+
+#endif // _KVI_TAL_LISTVIEW_H_
diff --git a/src/kvilib/tal/kvi_tal_listview_qt3.h b/src/kvilib/tal/kvi_tal_listview_qt3.h
new file mode 100644
index 00000000..4fe4a766
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_listview_qt3.h
@@ -0,0 +1,190 @@
+#ifndef _KVI_TAL_LISTVIEW_QT3_H_
+#define _KVI_TAL_LISTVIEW_QT3_H_
+
+//=============================================================================
+//
+// File : kvi_tal_listview_qt3.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include "kvi_qstring.h"
+
+#include <qlistview.h>
+
+class KviTalListViewItem;
+
+class KVILIB_API KviTalListView : public QListView
+{
+ friend class KviTalCheckListItem;
+ Q_OBJECT
+public:
+ KviTalListView(QWidget * pParent);
+ virtual ~KviTalListView() {};
+public:
+ // Shadow the internal Qt methods
+ KviTalListViewItem * firstChild() const { return (KviTalListViewItem *)QListView::firstChild(); };
+ KviTalListViewItem * lastItem() const { return (KviTalListViewItem *)QListView::lastItem(); };
+ KviTalListViewItem * selectedItem() const { return (KviTalListViewItem *)QListView::selectedItem(); };
+ KviTalListViewItem * currentItem() const { return (KviTalListViewItem *)QListView::currentItem(); };
+ KviTalListViewItem * itemAt(const QPoint &pnt) const { return (KviTalListViewItem *)QListView::itemAt(pnt); };
+signals:
+ void selectionChanged(KviTalListViewItem * pItem);
+ void currentChanged(KviTalListViewItem * pItem);
+ void clicked(KviTalListViewItem * pItem);
+ void clicked(KviTalListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void pressed(KviTalListViewItem * pItem);
+ void pressed(KviTalListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void doubleClicked(KviTalListViewItem * pItem);
+ void doubleClicked(KviTalListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void returnPressed(KviTalListViewItem * pItem);
+ void spacePressed(KviTalListViewItem * pItem);
+ void rightButtonClicked(KviTalListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void rightButtonPressed(KviTalListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void mouseButtonClicked(int iButton,KviTalListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void mouseButtonPressed(int iButton,KviTalListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void contextMenuRequested(KviTalListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void onItem(KviTalListViewItem * pItem);
+ void expanded(KviTalListViewItem * pItem);
+ void collapsed(KviTalListViewItem * pItem);
+protected slots:
+ void redirect_selectionChanged(QListViewItem * pItem);
+ void redirect_currentChanged(QListViewItem * pItem);
+ void redirect_clicked(QListViewItem * pItem);
+ void redirect_clicked(QListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void redirect_pressed(QListViewItem * pItem);
+ void redirect_pressed(QListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void redirect_doubleClicked(QListViewItem * pItem);
+ void redirect_doubleClicked(QListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void redirect_returnPressed(QListViewItem * pItem);
+ void redirect_spacePressed(QListViewItem * pItem);
+ void redirect_rightButtonClicked(QListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void redirect_rightButtonPressed(QListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void redirect_mouseButtonClicked(int iButton,QListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void redirect_mouseButtonPressed(int iButton,QListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void redirect_contextMenuRequested(QListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void redirect_onItem(QListViewItem * pItem);
+ void redirect_expanded(QListViewItem * pItem);
+ void redirect_collapsed(QListViewItem * pItem);
+};
+
+
+class KVILIB_API KviTalListViewItem : public QListViewItem
+{
+public:
+ KviTalListViewItem(KviTalListView * pParent)
+ : QListViewItem(pParent) {};
+ KviTalListViewItem(KviTalListViewItem * pParent)
+ : QListViewItem(pParent) {};
+ KviTalListViewItem(KviTalListView * pParent,KviTalListViewItem * pAfter)
+ : QListViewItem(pParent,pAfter) {};
+ KviTalListViewItem(KviTalListViewItem * pParent,KviTalListViewItem * pAfter)
+ : QListViewItem(pParent,pAfter) {};
+ KviTalListViewItem(KviTalListView * pParent,const QString &szLabel1,const QString &szLabel2 = KviQString::empty,const QString &szLabel3 = KviQString::empty,const QString &szLabel4 = KviQString::empty,const QString &szLabel5 = KviQString::empty)
+ : QListViewItem(pParent,szLabel1,szLabel2,szLabel3,szLabel4,szLabel5) {};
+ KviTalListViewItem(KviTalListView * pParent,KviTalListViewItem * pAfter,const QString &szLabel1,const QString &szLabel2 = KviQString::empty,const QString &szLabel3 = KviQString::empty,const QString &szLabel4 = KviQString::empty,const QString &szLabel5 = KviQString::empty)
+ : QListViewItem(pParent,pAfter,szLabel1,szLabel2,szLabel3,szLabel4,szLabel5) {};
+ KviTalListViewItem(KviTalListViewItem * pParent,const QString &szLabel1,const QString &szLabel2 = KviQString::empty,const QString &szLabel3 = KviQString::empty,const QString &szLabel4 = KviQString::empty)
+ : QListViewItem(pParent,szLabel1,szLabel2,szLabel3,szLabel4) {};
+ KviTalListViewItem(KviTalListViewItem * pParent,KviTalListViewItem * pAfter,const QString &szLabel1,const QString &szLabel2 = KviQString::empty,const QString &szLabel3 = KviQString::empty,const QString &szLabel4 = KviQString::empty)
+ : QListViewItem(pParent,pAfter,szLabel1,szLabel2,szLabel3,szLabel4) {};
+ virtual ~KviTalListViewItem() {};
+public:
+ // Shadow the internal Qt methods
+ KviTalListViewItem * firstChild() const { return (KviTalListViewItem *)QListViewItem::firstChild(); };
+ KviTalListViewItem * nextSibling() const { return (KviTalListViewItem *)QListViewItem::nextSibling(); };
+ KviTalListViewItem * parent() const { return (KviTalListViewItem *)QListViewItem::parent(); };
+ KviTalListView * listView() const { return (KviTalListView *)QListViewItem::listView(); };
+ KviTalListViewItem * itemAbove() { return (KviTalListViewItem *)QListViewItem::itemAbove(); };
+ KviTalListViewItem * itemBelow() { return (KviTalListViewItem *)QListViewItem::itemBelow(); };
+};
+
+struct KviTalCheckListItemPrivate;
+
+class KVILIB_API KviTalCheckListItem : public KviTalListViewItem
+{
+public:
+ enum Type {
+ RadioButton,
+ CheckBox,
+ Controller,
+ RadioButtonController=Controller,
+ CheckBoxController
+ };
+ enum ToggleState { Off, NoChange, On };
+
+ KviTalCheckListItem(KviTalCheckListItem *parent, const QString &text,Type = RadioButtonController);
+ KviTalCheckListItem(KviTalCheckListItem *parent, KviTalListViewItem *after,const QString &text, Type = RadioButtonController);
+ KviTalCheckListItem( KviTalListViewItem *parent, const QString &text,Type = RadioButtonController );
+ KviTalCheckListItem( KviTalListViewItem *parent, KviTalListViewItem *after,const QString &text, Type = RadioButtonController );
+ KviTalCheckListItem( KviTalListView *parent, const QString &text,Type = RadioButtonController );
+ KviTalCheckListItem( KviTalListView *parent, KviTalListViewItem *after,const QString &text, Type = RadioButtonController );
+ KviTalCheckListItem( KviTalListViewItem *parent, const QString &text,const QPixmap & );
+ KviTalCheckListItem( KviTalListView *parent, const QString &text,const QPixmap & );
+ ~KviTalCheckListItem();
+
+ void paintCell( QPainter *,const QColorGroup & cg,int column, int width, int alignment );
+ virtual void paintFocus( QPainter *, const QColorGroup & cg,
+ const QRect & r );
+ int width( const QFontMetrics&, const KviTalListView*, int column) const;
+ void setup();
+
+ virtual void setOn( bool ); // ### should be replaced by setChecked in ver4
+ bool isOn() const { return on; }
+ Type type() const { return myType; }
+ QString text() const { return KviTalListViewItem::text( 0 ); }
+ QString text( int n ) const { return KviTalListViewItem::text( n ); }
+
+ void setTristate( bool );
+ bool isTristate() const;
+ ToggleState state() const;
+ void setState( ToggleState s);
+
+ int rtti() const;
+ static int RTTI;
+
+protected:
+ void activate();
+ void turnOffChild();
+ virtual void stateChange( bool );
+
+private:
+ void init();
+ ToggleState internalState() const;
+ void setStoredState( ToggleState newState, void *key );
+ ToggleState storedState( void *key ) const;
+ void stateChange( ToggleState s );
+ void restoreState( void *key, int depth = 0 );
+ void updateController( bool update = TRUE , bool store = FALSE );
+ void updateStoredState( void *key );
+ void setState( ToggleState s, bool update, bool store );
+ void setCurrentState( ToggleState s );
+
+ Type myType;
+ bool on; // ### remove in ver4
+ KviTalCheckListItemPrivate *d;
+};
+
+
+#define KviTalListViewItemIterator QListViewItemIterator
+
+#endif // _KVI_TAL_LISTVIEW_QT3_H_
diff --git a/src/kvilib/tal/kvi_tal_listview_qt4.h b/src/kvilib/tal/kvi_tal_listview_qt4.h
new file mode 100644
index 00000000..e6ccc829
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_listview_qt4.h
@@ -0,0 +1,199 @@
+#ifndef _KVI_TAL_LISTVIEW_QT4_H_
+#define _KVI_TAL_LISTVIEW_QT4_H_
+
+//=============================================================================
+//
+// File : kvi_tal_listview_qt4.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include "kvi_qstring.h"
+
+#include <q3listview.h>
+
+class KviTalListViewItem;
+
+
+class KVILIB_API KviTalListView : public Q3ListView
+{
+ friend class KviTalCheckListItem;
+ Q_OBJECT
+public:
+ KviTalListView(QWidget * pParent);
+ virtual ~KviTalListView() {};
+public:
+ // Shadow the internal Qt methods
+ KviTalListViewItem * firstChild() const { return (KviTalListViewItem *)Q3ListView::firstChild(); };
+ KviTalListViewItem * lastItem() const { return (KviTalListViewItem *)Q3ListView::lastItem(); };
+ KviTalListViewItem * selectedItem() const { return (KviTalListViewItem *)Q3ListView::selectedItem(); };
+ KviTalListViewItem * currentItem() const { return (KviTalListViewItem *)Q3ListView::currentItem(); };
+ KviTalListViewItem * itemAt(const QPoint &pnt) const { return (KviTalListViewItem *)Q3ListView::itemAt(pnt); };
+signals:
+ void selectionChanged(KviTalListViewItem * pItem);
+ void currentChanged(KviTalListViewItem * pItem);
+ void clicked(KviTalListViewItem * pItem);
+ void clicked(KviTalListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void pressed(KviTalListViewItem * pItem);
+ void pressed(KviTalListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void doubleClicked(KviTalListViewItem * pItem);
+ void doubleClicked(KviTalListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void returnPressed(KviTalListViewItem * pItem);
+ void spacePressed(KviTalListViewItem * pItem);
+ void rightButtonClicked(KviTalListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void rightButtonPressed(KviTalListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void mouseButtonClicked(int iButton,KviTalListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void mouseButtonPressed(int iButton,KviTalListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void contextMenuRequested(KviTalListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void onItem(KviTalListViewItem * pItem);
+ void expanded(KviTalListViewItem * pItem);
+ void collapsed(KviTalListViewItem * pItem);
+protected slots:
+ void redirect_selectionChanged(Q3ListViewItem * pItem);
+ void redirect_currentChanged(Q3ListViewItem * pItem);
+ void redirect_clicked(Q3ListViewItem * pItem);
+ void redirect_clicked(Q3ListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void redirect_pressed(Q3ListViewItem * pItem);
+ void redirect_pressed(Q3ListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void redirect_doubleClicked(Q3ListViewItem * pItem);
+ void redirect_doubleClicked(Q3ListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void redirect_returnPressed(Q3ListViewItem * pItem);
+ void redirect_spacePressed(Q3ListViewItem * pItem);
+ void redirect_rightButtonClicked(Q3ListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void redirect_rightButtonPressed(Q3ListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void redirect_mouseButtonClicked(int iButton,Q3ListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void redirect_mouseButtonPressed(int iButton,Q3ListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void redirect_contextMenuRequested(Q3ListViewItem * pItem,const QPoint &pnt,int uColumn);
+ void redirect_onItem(Q3ListViewItem * pItem);
+ void redirect_expanded(Q3ListViewItem * pItem);
+ void redirect_collapsed(Q3ListViewItem * pItem);
+
+};
+
+
+class KVILIB_API KviTalListViewItem : public Q3ListViewItem
+{
+public:
+ KviTalListViewItem(KviTalListView * pParent)
+ : Q3ListViewItem(pParent) {};
+ KviTalListViewItem(KviTalListViewItem * pParent)
+ : Q3ListViewItem(pParent) {};
+ KviTalListViewItem(KviTalListView * pParent,KviTalListViewItem * pAfter)
+ : Q3ListViewItem(pParent,pAfter) {};
+ KviTalListViewItem(KviTalListViewItem * pParent,KviTalListViewItem * pAfter)
+ : Q3ListViewItem(pParent,pAfter) {};
+ KviTalListViewItem(KviTalListView * pParent,const QString &szLabel1,const QString &szLabel2 = KviQString::empty,const QString &szLabel3 = KviQString::empty,const QString &szLabel4 = KviQString::empty,const QString &szLabel5 = KviQString::empty)
+ : Q3ListViewItem(pParent,szLabel1,szLabel2,szLabel3,szLabel4,szLabel5) {};
+ KviTalListViewItem(KviTalListView * pParent,KviTalListViewItem * pAfter,const QString &szLabel1,const QString &szLabel2 = KviQString::empty,const QString &szLabel3 = KviQString::empty,const QString &szLabel4 = KviQString::empty,const QString &szLabel5 = KviQString::empty)
+ : Q3ListViewItem(pParent,pAfter,szLabel1,szLabel2,szLabel3,szLabel4,szLabel5) {};
+ KviTalListViewItem(KviTalListViewItem * pParent,const QString &szLabel1,const QString &szLabel2 = KviQString::empty,const QString &szLabel3 = KviQString::empty,const QString &szLabel4 = KviQString::empty)
+ : Q3ListViewItem(pParent,szLabel1,szLabel2,szLabel3,szLabel4) {};
+ KviTalListViewItem(KviTalListViewItem * pParent,KviTalListViewItem * pAfter,const QString &szLabel1,const QString &szLabel2 = KviQString::empty,const QString &szLabel3 = KviQString::empty,const QString &szLabel4 = KviQString::empty)
+ : Q3ListViewItem(pParent,pAfter,szLabel1,szLabel2,szLabel3,szLabel4) {};
+public:
+ // Shadow the internal Qt methods
+ KviTalListViewItem * firstChild() const { return (KviTalListViewItem *)Q3ListViewItem::firstChild(); };
+ KviTalListViewItem * nextSibling() const { return (KviTalListViewItem *)Q3ListViewItem::nextSibling(); };
+ KviTalListViewItem * parent() const { return (KviTalListViewItem *)Q3ListViewItem::parent(); };
+ KviTalListView * listView() const { return (KviTalListView *)Q3ListViewItem::listView(); };
+ KviTalListViewItem * itemAbove() { return (KviTalListViewItem *)Q3ListViewItem::itemAbove(); };
+ KviTalListViewItem * itemBelow() { return (KviTalListViewItem *)Q3ListViewItem::itemBelow(); };
+};
+
+struct KviTalCheckListItemPrivate;
+
+class KVILIB_API KviTalCheckListItem : public KviTalListViewItem
+{
+public:
+ enum Type { RadioButton,
+ CheckBox,
+ Controller,
+ RadioButtonController=Controller,
+ CheckBoxController };
+
+ enum ToggleState { Off, NoChange, On };
+
+ KviTalCheckListItem(KviTalCheckListItem *parent, const QString &text,
+ Type = RadioButtonController);
+ KviTalCheckListItem(KviTalCheckListItem *parent, KviTalListViewItem *after,
+ const QString &text, Type = RadioButtonController);
+ KviTalCheckListItem(KviTalListViewItem *parent, const QString &text,
+ Type = RadioButtonController);
+ KviTalCheckListItem(KviTalListViewItem *parent, KviTalListViewItem *after,
+ const QString &text, Type = RadioButtonController);
+ KviTalCheckListItem(KviTalListView *parent, const QString &text,
+ Type = RadioButtonController);
+ KviTalCheckListItem(KviTalListView *parent, KviTalListViewItem *after,
+ const QString &text, Type = RadioButtonController);
+ KviTalCheckListItem(KviTalListViewItem *parent, const QString &text,
+ const QPixmap &);
+ KviTalCheckListItem(KviTalListView *parent, const QString &text,
+ const QPixmap &);
+ ~KviTalCheckListItem();
+
+ void paintCell(QPainter *, const QColorGroup & cg,
+ int column, int width, int alignment);
+ virtual void paintFocus(QPainter *, const QColorGroup &cg,
+ const QRect & r);
+ int width(const QFontMetrics&, const KviTalListView*, int column) const;
+ void setup();
+
+ virtual void setOn(bool);
+ bool isOn() const { return on; }
+ Type type() const { return myType; }
+ QString text() const { return KviTalListViewItem::text(0); }
+ QString text(int n) const { return KviTalListViewItem::text(n); }
+
+ void setTristate(bool);
+ bool isTristate() const;
+ ToggleState state() const;
+ void setState(ToggleState s);
+
+ int rtti() const;
+ enum { RTTI = 1 };
+
+protected:
+ void activate();
+ void turnOffChild();
+ virtual void stateChange(bool);
+
+private:
+ void init();
+ ToggleState internalState() const;
+ void setStoredState(ToggleState newState, KviTalCheckListItem *key);
+ ToggleState storedState(KviTalCheckListItem *key) const;
+ void stateChange(ToggleState s);
+ void restoreState(KviTalCheckListItem *key, int depth = 0);
+ void updateController(bool update = true , bool store = false);
+ void updateStoredState(KviTalCheckListItem *key);
+ void setState(ToggleState s, bool update, bool store);
+ void setCurrentState(ToggleState s);
+
+ Type myType;
+ bool on;
+ KviTalCheckListItemPrivate *d;
+};
+
+#define KviTalListViewItemIterator Q3ListViewItemIterator
+
+
+#endif // _KVI_TAL_LISTVIEW_QT4_H_
diff --git a/src/kvilib/tal/kvi_tal_mainwindow.cpp b/src/kvilib/tal/kvi_tal_mainwindow.cpp
new file mode 100644
index 00000000..c2e52b2d
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_mainwindow.cpp
@@ -0,0 +1,69 @@
+//
+// File : kvi_tal_mainwindow.coo
+// Creation date : Sun Aug 12 2001 04:40:24 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#define __KVILIB__
+
+
+#include "kvi_tal_mainwindow.h"
+
+#ifdef COMPILE_KDE_SUPPORT
+
+ KviTalMainWindow::KviTalMainWindow(QWidget * par,const char * nam)
+ : KMainWindow(par,nam)
+ {
+ }
+
+ #include "kvi_tal_mainwindow_kde.moc"
+
+#else
+
+ #ifdef COMPILE_USE_QT4
+ KviTalMainWindow::KviTalMainWindow(QWidget * par,const char * nam)
+ : QMainWindow(par,nam)
+ {
+ }
+
+ bool KviTalMainWindow::usesBigPixmaps()
+ {
+ return (iconSize().width() > 40);
+ }
+
+ void KviTalMainWindow::setUsesBigPixmaps(bool b)
+ {
+ if(b)setIconSize(QSize(48,48));
+ else setIconSize(QSize(24,24));
+ }
+ #include "kvi_tal_mainwindow_qt4.moc"
+ #else
+ KviTalMainWindow::KviTalMainWindow(QWidget * par,const char * nam)
+ : QMainWindow(par,nam)
+ {
+ }
+ #include "kvi_tal_mainwindow_qt3.moc"
+ #endif
+
+#endif
+
+KviTalMainWindow::~KviTalMainWindow()
+{
+}
+
diff --git a/src/kvilib/tal/kvi_tal_mainwindow.h b/src/kvilib/tal/kvi_tal_mainwindow.h
new file mode 100644
index 00000000..76a1a79c
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_mainwindow.h
@@ -0,0 +1,38 @@
+#ifndef _KVI_TAL_MAINWINDOW_H_
+#define _KVI_TAL_MAINWINDOW_H_
+
+//
+// File : kvi_tal_mainwindow.h
+// Creation date : Sun Aug 12 2001 04:41:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_KDE_SUPPORT
+ #include "kvi_tal_mainwindow_kde.h"
+#else
+ #ifdef COMPILE_USE_QT4
+ #include "kvi_tal_mainwindow_qt4.h"
+ #else
+ #include "kvi_tal_mainwindow_qt3.h"
+ #endif
+#endif
+
+#endif // _KVI_TAL_MAINWINDOW_H_
diff --git a/src/kvilib/tal/kvi_tal_mainwindow_kde.h b/src/kvilib/tal/kvi_tal_mainwindow_kde.h
new file mode 100644
index 00000000..9f38aede
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_mainwindow_kde.h
@@ -0,0 +1,36 @@
+#ifndef _KVI_TAL_MAINWINDOW_KDE_H_
+#define _KVI_TAL_MAINWINDOW_KDE_H_
+
+//
+// File : kvi_tal_mainwindow_kde.h
+// Creation date : Sun Aug 12 2001 04:41:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include <kmainwindow.h>
+
+class KVILIB_API KviTalMainWindow : public KMainWindow
+{
+ Q_OBJECT
+public:
+ KviTalMainWindow(QWidget * par,const char * nam);
+ ~KviTalMainWindow();
+};
+
+#endif // _KVI_TAL_MAINWINDOW_KDE_H_
diff --git a/src/kvilib/tal/kvi_tal_mainwindow_qt3.h b/src/kvilib/tal/kvi_tal_mainwindow_qt3.h
new file mode 100644
index 00000000..d328774f
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_mainwindow_qt3.h
@@ -0,0 +1,36 @@
+#ifndef _KVI_TAL_MAINWINDOW_QT_H_
+#define _KVI_TAL_MAINWINDOW_QT_H_
+
+//
+// File : kvi_tal_mainwindow_qt.h
+// Creation date : Sun Aug 12 2001 04:43:58 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include <qmainwindow.h>
+
+class KVILIB_API KviTalMainWindow : public QMainWindow
+{
+ Q_OBJECT
+public:
+ KviTalMainWindow(QWidget * par,const char * nam);
+ ~KviTalMainWindow();
+};
+
+#endif // _KVI_TAL_MAINWINDOW_QT_H_
diff --git a/src/kvilib/tal/kvi_tal_mainwindow_qt4.h b/src/kvilib/tal/kvi_tal_mainwindow_qt4.h
new file mode 100644
index 00000000..b6c2c1be
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_mainwindow_qt4.h
@@ -0,0 +1,39 @@
+#ifndef _KVI_TAL_MAINWINDOW_QT_H_
+#define _KVI_TAL_MAINWINDOW_QT_H_
+
+//
+// File : kvi_tal_mainwindow_qt.h
+// Creation date : Sun Aug 12 2001 04:43:58 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include <qmainwindow.h>
+
+class KVILIB_API KviTalMainWindow : public QMainWindow
+{
+ Q_OBJECT
+public:
+ KviTalMainWindow(QWidget * par,const char * nam);
+ ~KviTalMainWindow();
+public:
+ bool usesBigPixmaps();
+ void setUsesBigPixmaps(bool b);
+};
+
+#endif // _KVI_TAL_MAINWINDOW_QT_H_
diff --git a/src/kvilib/tal/kvi_tal_menubar.cpp b/src/kvilib/tal/kvi_tal_menubar.cpp
new file mode 100644
index 00000000..0fbb28be
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_menubar.cpp
@@ -0,0 +1,58 @@
+//
+// File : kvi_tal_menubar.cpp
+// Creation date : Sun Aug 12 06:35:18 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#define __KVILIB__
+
+
+#include "kvi_tal_menubar.h"
+
+#ifdef COMPILE_KDE_SUPPORT
+
+ KviTalMenuBar::KviTalMenuBar(QWidget * par,const char * nam)
+ : KMenuBar(par,nam)
+ {
+ }
+
+ KviTalMenuBar::~KviTalMenuBar()
+ {
+ }
+
+ #include "kvi_tal_menubar_kde.moc"
+
+#else
+
+ KviTalMenuBar::KviTalMenuBar(QWidget * par,const char * nam)
+#ifdef COMPILE_USE_QT4
+ : QMenuBar(par)
+#else
+ : QMenuBar(par,nam)
+#endif
+ {
+ }
+
+ KviTalMenuBar::~KviTalMenuBar()
+ {
+ }
+
+ #include "kvi_tal_menubar_qt.moc"
+
+#endif
diff --git a/src/kvilib/tal/kvi_tal_menubar.h b/src/kvilib/tal/kvi_tal_menubar.h
new file mode 100644
index 00000000..08016bb7
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_menubar.h
@@ -0,0 +1,33 @@
+#ifndef _KVI_TAL_MENUBAR_H_
+#define _KVI_TAL_MENUBAR_H_
+//
+// File : kvi_tal_menubar.h
+// Creation date : Sun Aug 12 06:35:15 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_KDE_SUPPORT
+ #include "kvi_tal_menubar_kde.h"
+#else
+ #include "kvi_tal_menubar_qt.h"
+#endif
+
+#endif //_KVI_TAL_MENUBAR_H_
diff --git a/src/kvilib/tal/kvi_tal_menubar_kde.h b/src/kvilib/tal/kvi_tal_menubar_kde.h
new file mode 100644
index 00000000..e345d221
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_menubar_kde.h
@@ -0,0 +1,35 @@
+#ifndef _KVI_TAL_MENUBAR_KDE_H_
+#define _KVI_TAL_MENUBAR_KDE_H_
+//
+// File : kvi_tal_menubar_kde.h
+// Creation date : Sun Aug 12 06:35:22 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include <kmenubar.h>
+
+class KVILIB_API KviTalMenuBar : public KMenuBar
+{
+ Q_OBJECT
+public:
+ KviTalMenuBar(QWidget * par,const char * nam);
+ ~KviTalMenuBar();
+};
+
+#endif //_KVI_TAL_MENUBAR_KDE_H_
diff --git a/src/kvilib/tal/kvi_tal_menubar_qt.h b/src/kvilib/tal/kvi_tal_menubar_qt.h
new file mode 100644
index 00000000..c42dab7f
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_menubar_qt.h
@@ -0,0 +1,35 @@
+#ifndef _KVI_TAL_MENUBAR_QT_H_
+#define _KVI_TAL_MENUBAR_QT_H_
+//
+// File : kvi_tal_menubar_qt.h
+// Creation date : Sun Aug 12 06:35:24 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include <qmenubar.h>
+
+class KVILIB_API KviTalMenuBar : public QMenuBar
+{
+ Q_OBJECT
+public:
+ KviTalMenuBar(QWidget * par,const char * nam);
+ ~KviTalMenuBar();
+};
+
+#endif //_KVI_TAL_MENUBAR_QT_H_
diff --git a/src/kvilib/tal/kvi_tal_popupmenu.cpp b/src/kvilib/tal/kvi_tal_popupmenu.cpp
new file mode 100644
index 00000000..ad3c8463
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_popupmenu.cpp
@@ -0,0 +1,33 @@
+//=============================================================================
+//
+// File : kvi_tal_popupmenu.cpp
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+#include "kvi_tal_popupmenu.h"
+
+#ifdef COMPILE_USE_QT4
+ #include "kvi_tal_popupmenu_qt4.moc"
+#else
+ #include "kvi_tal_popupmenu_qt3.moc"
+#endif
+
diff --git a/src/kvilib/tal/kvi_tal_popupmenu.h b/src/kvilib/tal/kvi_tal_popupmenu.h
new file mode 100644
index 00000000..5035f031
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_popupmenu.h
@@ -0,0 +1,36 @@
+#ifndef _KVI_TAL_POPUPMENU_H_
+#define _KVI_TAL_POPUPMENU_H_
+
+//=============================================================================
+//
+// File : kvi_tal_popupmenu.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_USE_QT4
+ #include "kvi_tal_popupmenu_qt4.h"
+#else
+ #include "kvi_tal_popupmenu_qt3.h"
+#endif
+
+#endif // _KVI_TAL_POPUPMENU_H_
diff --git a/src/kvilib/tal/kvi_tal_popupmenu_qt3.h b/src/kvilib/tal/kvi_tal_popupmenu_qt3.h
new file mode 100644
index 00000000..3340945b
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_popupmenu_qt3.h
@@ -0,0 +1,42 @@
+#ifndef _KVI_TAL_POPUPMENU_QT3_H_
+#define _KVI_TAL_POPUPMENU_QT3_H_
+
+//=============================================================================
+//
+// File : kvi_tal_popupmenu.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+
+#include <qpopupmenu.h>
+
+class KVILIB_API KviTalPopupMenu : public QPopupMenu
+{
+ Q_OBJECT
+public:
+ KviTalPopupMenu(QWidget * pParent=0,const QString &szName = KviQString::empty)
+ : QPopupMenu(pParent,KviQString::toUtf8(szName).data()) {};
+ virtual ~KviTalPopupMenu() {};
+};
+
+#endif // _KVI_TAL_POPUPMENU_QT3_H_
diff --git a/src/kvilib/tal/kvi_tal_popupmenu_qt4.h b/src/kvilib/tal/kvi_tal_popupmenu_qt4.h
new file mode 100644
index 00000000..58da15ef
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_popupmenu_qt4.h
@@ -0,0 +1,89 @@
+#ifndef _KVI_TAL_POPUPMENU_QT4_H_
+#define _KVI_TAL_POPUPMENU_QT4_H_
+
+//=============================================================================
+//
+// File : kvi_tal_popupmenu_qt3.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+
+#include <q3popupmenu.h>
+#include <qwidgetaction.h>
+
+class KVILIB_API KviTalPopupMenu : public Q3PopupMenu
+{
+ Q_OBJECT
+public:
+ KviTalPopupMenu(QWidget * pParent=0,const QString &szName = KviQString::empty)
+ : Q3PopupMenu(pParent)
+ {
+ setName(szName);
+ };
+ virtual ~KviTalPopupMenu() {};
+
+ int insertItem(const QString &szText)
+ {
+ return Q3PopupMenu::insertItem(szText);
+ }
+ int insertItem(const QPixmap &pix,const QString &szText)
+ {
+ return Q3PopupMenu::insertItem(QIcon(pix),szText,-1,-1);
+ }
+ int insertItem(const QString &szText,int id)
+ {
+ return Q3PopupMenu::insertItem(szText,id);
+ }
+ int insertItem(const QPixmap &pix,const QString &szText,int id)
+ {
+ return Q3PopupMenu::insertItem(QIcon(pix),szText,id,-1);
+ }
+ int insertItem(const QString &szText,const QObject * pReceiver,const char * szSlot)
+ {
+ return Q3PopupMenu::insertItem(szText,pReceiver,szSlot);
+ }
+ int insertItem(const QPixmap &pix,const QString &szText,const QObject * pReceiver,const char * szSlot)
+ {
+ return Q3PopupMenu::insertItem(QIcon(pix),szText,pReceiver,szSlot);
+ }
+ int insertItem(const QPixmap &pix,const QString &szText,QMenu *pMenu)
+ {
+ return Q3PopupMenu::insertItem(QIcon(pix),szText,pMenu,-1,-1);
+ }
+ int insertItem(const QString &szText,QMenu *pMenu)
+ {
+ return Q3PopupMenu::insertItem(szText,pMenu,-1,-1);
+ }
+ int insertItem(QWidget * pWidget)
+ {
+ // needs Qt 4.2
+ QWidgetAction * pAct = new QWidgetAction(this);
+ pAct->setDefaultWidget(pWidget);
+ addAction(pAct);
+ return 0;
+ }
+
+
+};
+
+#endif // _KVI_TAL_POPUPMENU_QT4_H_
diff --git a/src/kvilib/tal/kvi_tal_scrollview.cpp b/src/kvilib/tal/kvi_tal_scrollview.cpp
new file mode 100644
index 00000000..7e3e5eba
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_scrollview.cpp
@@ -0,0 +1,33 @@
+//=============================================================================
+//
+// File : kvi_tal_scrollview.cpp
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+#include "kvi_tal_scrollview.h"
+
+#ifdef COMPILE_USE_QT4
+ #include "kvi_tal_scrollview_qt4.moc"
+#else
+ #include "kvi_tal_scrollview_qt3.moc"
+#endif
+
diff --git a/src/kvilib/tal/kvi_tal_scrollview.h b/src/kvilib/tal/kvi_tal_scrollview.h
new file mode 100644
index 00000000..ff27acf4
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_scrollview.h
@@ -0,0 +1,36 @@
+#ifndef _KVI_TAL_SCROLLVIEW_H_
+#define _KVI_TAL_SCROLLVIEW_H_
+
+//=============================================================================
+//
+// File : kvi_tal_scrollview.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_USE_QT4
+ #include "kvi_tal_scrollview_qt4.h"
+#else
+ #include "kvi_tal_scrollview_qt3.h"
+#endif
+
+#endif // _KVI_TAL_SCROLLVIEW_H_
diff --git a/src/kvilib/tal/kvi_tal_scrollview_qt3.h b/src/kvilib/tal/kvi_tal_scrollview_qt3.h
new file mode 100644
index 00000000..da6141e1
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_scrollview_qt3.h
@@ -0,0 +1,41 @@
+#ifndef _KVI_TAL_SCROLLVIEW_QT3_H_
+#define _KVI_TAL_SCROLLVIEW_QT3_H_
+
+//=============================================================================
+//
+// File : kvi_tal_scrollview_qt3.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include <qscrollview.h>
+
+class KVILIB_API KviTalScrollView : public QScrollView
+{
+ Q_OBJECT
+public:
+ KviTalScrollView(QWidget * pParent)
+ : QScrollView(pParent) {};
+ virtual ~KviTalScrollView() {};
+};
+
+#endif // _KVI_TAL_SCROLLVIEW_QT3_H_
diff --git a/src/kvilib/tal/kvi_tal_scrollview_qt4.h b/src/kvilib/tal/kvi_tal_scrollview_qt4.h
new file mode 100644
index 00000000..c82f5723
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_scrollview_qt4.h
@@ -0,0 +1,41 @@
+#ifndef _KVI_TAL_SCROLLVIEW_QT4_H_
+#define _KVI_TAL_SCROLLVIEW_QT4_H_
+
+//=============================================================================
+//
+// File : kvi_tal_scrollview_qt4.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include <q3scrollview.h>
+
+class KVILIB_API KviTalScrollView : public Q3ScrollView
+{
+ Q_OBJECT
+public:
+ KviTalScrollView(QWidget * pParent)
+ : Q3ScrollView(pParent) {};
+ virtual ~KviTalScrollView() {};
+};
+
+#endif // _KVI_TAL_SCROLLVIEW_QT4_H_
diff --git a/src/kvilib/tal/kvi_tal_tabdialog.cpp b/src/kvilib/tal/kvi_tal_tabdialog.cpp
new file mode 100644
index 00000000..81bd5b39
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_tabdialog.cpp
@@ -0,0 +1,34 @@
+//=============================================================================
+//
+// File : kvi_tal_tabdialog.cpp
+// Creation date : Tue Feb 06 2007 14:35:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+#include "kvi_tal_tabdialog.h"
+
+
+#ifdef COMPILE_USE_QT4
+ #include "kvi_tal_tabdialog_qt4.moc"
+#else
+ #include "kvi_tal_tabdialog_qt3.moc"
+#endif
+
diff --git a/src/kvilib/tal/kvi_tal_tabdialog.h b/src/kvilib/tal/kvi_tal_tabdialog.h
new file mode 100644
index 00000000..46e09843
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_tabdialog.h
@@ -0,0 +1,36 @@
+#ifndef _KVI_TAL_TABDIALOG_H_
+#define _KVI_TAL_TABDIALOG_H_
+
+//=============================================================================
+//
+// File : kvi_tal_tabdialog.h
+// Creation date : Tue Feb 06 2007 14:35:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_USE_QT4
+ #include "kvi_tal_tabdialog_qt4.h"
+#else
+ #include "kvi_tal_tabdialog_qt3.h"
+#endif
+
+#endif // _KVI_TAL_TABDIALOG_H_
diff --git a/src/kvilib/tal/kvi_tal_tabdialog_qt3.h b/src/kvilib/tal/kvi_tal_tabdialog_qt3.h
new file mode 100644
index 00000000..061053a3
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_tabdialog_qt3.h
@@ -0,0 +1,39 @@
+#ifndef _KVI_TAL_TABDIALOG_QT3_H_
+#define _KVI_TAL_TABDIALOG_QT3_H_
+
+//=============================================================================
+//
+// File : kvi_tal_tabdialog_qt3.h
+// Creation date : Tue Feb 06 2007 14:35:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include <qtabdialog.h>
+
+class KVILIB_API KviTalTabDialog : public QTabDialog
+{
+ Q_OBJECT
+public:
+ KviTalTabDialog(QWidget * pParent = 0,const char * name = 0,bool bModal = false)
+ : QTabDialog(pParent,name,bModal) {};
+ ~KviTalTabDialog() {};
+};
+
+#endif // _KVI_TAL_TABDIALOG_QT3_H_
diff --git a/src/kvilib/tal/kvi_tal_tabdialog_qt4.h b/src/kvilib/tal/kvi_tal_tabdialog_qt4.h
new file mode 100644
index 00000000..c9e3eb0b
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_tabdialog_qt4.h
@@ -0,0 +1,39 @@
+#ifndef _KVI_TAL_TABDIALOG_QT4_H_
+#define _KVI_TAL_TABDIALOG_QT4_H_
+
+//=============================================================================
+//
+// File : kvi_tal_tabdialog_qt4.h
+// Creation date : Tue Feb 06 2007 14:35:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include <q3tabdialog.h>
+
+class KVILIB_API KviTalTabDialog : public Q3TabDialog
+{
+ Q_OBJECT
+public:
+ KviTalTabDialog(QWidget * pParent = 0,const char * name = 0,bool bModal = false)
+ : Q3TabDialog(pParent,name,bModal) {};
+ ~KviTalTabDialog() {};
+};
+
+#endif // _KVI_TAL_TABDIALOG_QT3_H_
diff --git a/src/kvilib/tal/kvi_tal_textedit.cpp b/src/kvilib/tal/kvi_tal_textedit.cpp
new file mode 100644
index 00000000..686c8cba
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_textedit.cpp
@@ -0,0 +1,34 @@
+//=============================================================================
+//
+// File : kvi_tal_textedit.cpp
+// Creation date : Tue Feb 06 2007 14:35:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+#include "kvi_tal_textedit.h"
+
+
+#ifdef COMPILE_USE_QT4
+ #include "kvi_tal_textedit_qt4.moc"
+#else
+ #include "kvi_tal_textedit_qt3.moc"
+#endif
+
diff --git a/src/kvilib/tal/kvi_tal_textedit.h b/src/kvilib/tal/kvi_tal_textedit.h
new file mode 100644
index 00000000..fb7381ae
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_textedit.h
@@ -0,0 +1,36 @@
+#ifndef _KVI_TAL_TEXTEDIT_H_
+#define _KVI_TAL_TEXTEDIT_H_
+
+//=============================================================================
+//
+// File : kvi_tal_textedit.h
+// Creation date : Tue Feb 06 2007 14:35:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_USE_QT4
+ #include "kvi_tal_textedit_qt4.h"
+#else
+ #include "kvi_tal_textedit_qt3.h"
+#endif
+
+#endif // _KVI_TAL_TEXTEDIT_H_
diff --git a/src/kvilib/tal/kvi_tal_textedit_qt3.h b/src/kvilib/tal/kvi_tal_textedit_qt3.h
new file mode 100644
index 00000000..b698f483
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_textedit_qt3.h
@@ -0,0 +1,39 @@
+#ifndef _KVI_TAL_TEXTEDIT_QT3_H_
+#define _KVI_TAL_TEXTEDIT_QT3_H_
+
+//=============================================================================
+//
+// File : kvi_tal_textedit_qt3.h
+// Creation date : Tue Feb 06 2007 14:35:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include <qtextedit.h>
+
+class KVILIB_API KviTalTextEdit : public QTextEdit
+{
+ Q_OBJECT
+public:
+ KviTalTextEdit(QWidget * pParent = 0,const char * name = 0)
+ : QTextEdit(pParent,name) {};
+ ~KviTalTextEdit() {};
+};
+
+#endif // _KVI_TAL_TEXTEDIT_QT3_H_
diff --git a/src/kvilib/tal/kvi_tal_textedit_qt4.h b/src/kvilib/tal/kvi_tal_textedit_qt4.h
new file mode 100644
index 00000000..a3403d7c
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_textedit_qt4.h
@@ -0,0 +1,39 @@
+#ifndef _KVI_TAL_TEXTEDIT_QT4_H_
+#define _KVI_TAL_TEXTEDIT_QT4_H_
+
+//=============================================================================
+//
+// File : kvi_tal_textedit_qt4.h
+// Creation date : Tue Feb 06 2007 14:35:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include <q3textedit.h>
+
+class KVILIB_API KviTalTextEdit : public Q3TextEdit
+{
+ Q_OBJECT
+public:
+ KviTalTextEdit(QWidget * pParent = 0,const char * name = 0)
+ : Q3TextEdit(pParent,name) {};
+ ~KviTalTextEdit() {};
+};
+
+#endif // _KVI_TAL_TEXTEDIT_QT4_H_
diff --git a/src/kvilib/tal/kvi_tal_toolbar.cpp b/src/kvilib/tal/kvi_tal_toolbar.cpp
new file mode 100644
index 00000000..f54dc973
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_toolbar.cpp
@@ -0,0 +1,107 @@
+//
+// File : kvi_tal_toolbar.cpp
+// Creation date : Mon Aug 13 05:05:45 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#define __KVILIB__
+
+
+#include "kvi_tal_toolbar.h"
+
+#ifdef COMPILE_KDE_SUPPORT
+
+ KviTalToolBar::KviTalToolBar(const QString &label,QMainWindow *w,QT_TOOLBARDOCK_TYPE dock,bool bNewLine,const char * nam)
+ : KToolBar(w,dock,bNewLine,nam)
+ {
+ setLabel(label);
+ }
+
+ KviTalToolBar::~KviTalToolBar()
+ {
+ }
+
+ #include "kvi_tal_toolbar_kde.moc"
+
+#else
+
+ #ifdef COMPILE_USE_QT4
+
+ KviTalToolBar::KviTalToolBar(const QString &label,QMainWindow *w,QT_TOOLBARDOCK_TYPE dock,bool bNewLine,const char * nam)
+ //: Q3ToolBar(label,w,dock,bNewLine,nam)
+ : QToolBar(label,w)
+ {
+ //setFrameStyle(QFrame::NoFrame);
+ setObjectName(nam);
+ if(!layout())
+ this->setLayout(new QBoxLayout(QBoxLayout::LeftToRight));
+ w->addToolBar(dock,this);
+ }
+ KviTalToolBar::KviTalToolBar(QMainWindow *w,const char * name)
+ : QToolBar(w)
+ {
+ //setFrameStyle(QFrame::NoFrame);
+ setObjectName(name);
+ if(!layout())
+ this->setLayout(new QBoxLayout(QBoxLayout::LeftToRight));
+ w->addToolBar(this);
+ }
+
+ QBoxLayout * KviTalToolBar::boxLayout()
+ {
+ return (QBoxLayout*)this->layout();
+ }
+
+ void KviTalToolBar::setBoxLayout(QBoxLayout * l)
+ {
+ this->setLayout(l);
+ }
+
+ bool KviTalToolBar::usesBigPixmaps()
+ {
+ return (iconSize().width() > 40);
+ }
+
+ void KviTalToolBar::setUsesBigPixmaps(bool b)
+ {
+ if(b)setIconSize(QSize(48,48));
+ else setIconSize(QSize(22,22));
+ }
+
+ #include "kvi_tal_toolbar_qt4.moc"
+
+ #else
+ KviTalToolBar::KviTalToolBar(const QString &label,QMainWindow *w,QT_TOOLBARDOCK_TYPE dock,bool bNewLine,const char * nam)
+ : QToolBar(label,w,dock,bNewLine,nam)
+ {
+ }
+ KviTalToolBar::KviTalToolBar(QMainWindow *w,const char * name)
+ : QToolBar(w,name)
+ {
+ }
+
+ #include "kvi_tal_toolbar_qt3.moc"
+ #endif
+
+ KviTalToolBar::~KviTalToolBar()
+ {
+ }
+
+
+#endif
diff --git a/src/kvilib/tal/kvi_tal_toolbar.h b/src/kvilib/tal/kvi_tal_toolbar.h
new file mode 100644
index 00000000..c5c9d5cc
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_toolbar.h
@@ -0,0 +1,37 @@
+#ifndef _KVI_TAL_TOOLBAR_H_
+#define _KVI_TAL_TOOLBAR_H_
+//
+// File : kvi_tal_toolbar.h
+// Creation date : Mon Aug 13 05:05:44 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_KDE_SUPPORT
+ #include "kvi_tal_toolbar_kde.h"
+#else
+ #ifdef COMPILE_USE_QT4
+ #include "kvi_tal_toolbar_qt4.h"
+ #else
+ #include "kvi_tal_toolbar_qt3.h"
+ #endif
+#endif
+
+#endif //_KVI_TAL_TOOLBAR_H_
diff --git a/src/kvilib/tal/kvi_tal_toolbar_kde.h b/src/kvilib/tal/kvi_tal_toolbar_kde.h
new file mode 100644
index 00000000..f6415f26
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_toolbar_kde.h
@@ -0,0 +1,37 @@
+#ifndef _KVI_TAL_TOOLBAR_KDE_H_
+#define _KVI_TAL_TOOLBAR_KDE_H_
+//
+// File : kvi_tal_toolbar_kde.h
+// Creation date : Mon Aug 13 05:05:52 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include <ktoolbar.h>
+
+#include "kvi_tal_toolbardocktype.h"
+
+class KVILIB_API KviTalToolBar : public KToolBar
+{
+ Q_OBJECT
+public:
+ KviTalToolBar(const QString &label,QMainWindow *w,QT_TOOLBARDOCK_TYPE dock = QT_DOCK_TOP,bool bNewLine = false,const char * nam = 0);
+ ~KviTalToolBar();
+};
+
+#endif //_KVI_TAL_TOOLBAR_KDE_H_
diff --git a/src/kvilib/tal/kvi_tal_toolbar_qt3.h b/src/kvilib/tal/kvi_tal_toolbar_qt3.h
new file mode 100644
index 00000000..a9b15b52
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_toolbar_qt3.h
@@ -0,0 +1,39 @@
+#ifndef _KVI_TAL_TOOLBAR_QT_H_
+#define _KVI_TAL_TOOLBAR_QT_H_
+//
+// File : kvi_tal_toolbar_qt.h
+// Creation date : Mon Aug 13 05:05:50 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include <qtoolbar.h>
+#include <qmainwindow.h>
+
+#include "kvi_tal_toolbardocktype.h"
+
+class KVILIB_API KviTalToolBar : public QToolBar
+{
+ Q_OBJECT
+public:
+ KviTalToolBar(const QString &label,QMainWindow *w,QT_TOOLBARDOCK_TYPE dock = QT_DOCK_TOP,bool bNewLine = false,const char * nam = 0);
+ KviTalToolBar(QMainWindow *w,const char * name=0);
+ ~KviTalToolBar();
+};
+
+#endif //_KVI_TAL_TOOLBAR_QT_H_
diff --git a/src/kvilib/tal/kvi_tal_toolbar_qt4.h b/src/kvilib/tal/kvi_tal_toolbar_qt4.h
new file mode 100644
index 00000000..753d5a5c
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_toolbar_qt4.h
@@ -0,0 +1,47 @@
+#ifndef _KVI_TAL_TOOLBAR_QT4_H_
+#define _KVI_TAL_TOOLBAR_QT4_H_
+//
+// File : kvi_tal_toolbar_qt4.h
+// Creation date : Wed Feb 1 2007 04:11:11 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+#include "kvi_tal_toolbardocktype.h"
+
+#include <QToolBar>
+#include <QMainWindow>
+#include <QBoxLayout>
+
+
+class KVILIB_API KviTalToolBar : public QToolBar
+{
+ Q_OBJECT
+public:
+ KviTalToolBar(const QString &label,QMainWindow *w,QT_TOOLBARDOCK_TYPE dock = QT_DOCK_TOP,bool bNewLine = false,const char * nam = 0);
+ KviTalToolBar(QMainWindow *w,const char * name=0);
+ ~KviTalToolBar();
+public:
+ QBoxLayout * boxLayout();
+ void setBoxLayout(QBoxLayout *l);
+ bool usesBigPixmaps();
+ void setUsesBigPixmaps(bool b);
+};
+
+#endif //_KVI_TAL_TOOLBAR_QT_H_
diff --git a/src/kvilib/tal/kvi_tal_toolbardocktype.h b/src/kvilib/tal/kvi_tal_toolbardocktype.h
new file mode 100644
index 00000000..a7c9697a
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_toolbardocktype.h
@@ -0,0 +1,71 @@
+#ifndef _KVI_TAL_TOOLBARDOCKTYPE_H_
+#define _KVI_TAL_TOOLBARDOCKTYPE_H_
+//
+// File : kvi_tal_toolbardocktype.h
+// Creation date : Tue Sep 17 02:11:28 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+//#define COMPILE_USE_QT4
+#ifdef COMPILE_USE_QT4
+/*
+ #define QT_TOOLBARDOCK_TYPE Qt::Dock
+ #define QT_DOCK_TOP Qt::DockTop
+ #define QT_DOCK_LEFT Qt::DockLeft
+ #define QT_DOCK_RIGHT Qt::DockRight
+ #define QT_DOCK_BOTTOM Qt::DockBottom
+ #define QT_DOCK_MINIMIZED Qt::DockMinimized
+ #define QT_DOCK_TORNOFF Qt::DockTornOff
+ #define QT_DOCK_UNMANAGED Qt::DockUnmanaged
+*/
+ // We will need these when we'll use the real QToolBar in Qt 4.x
+ #define QT_TOOLBARDOCK_TYPE Qt::ToolBarArea
+ #define QT_DOCK_TOP Qt::TopToolBarArea
+ #define QT_DOCK_LEFT Qt::LeftToolBarArea
+ #define QT_DOCK_RIGHT Qt::RightToolBarArea
+ #define QT_DOCK_BOTTOM Qt::BottomToolBarArea
+ // THESE ARE UNSUPPORTED UNDER QT4!
+ #define QT_DOCK_MINIMIZED Qt::TopToolBarArea
+ #define QT_DOCK_TORNOFF Qt::TopToolBarArea
+ #define QT_DOCK_UNMANAGED Qt::TopToolBarArea
+
+#else
+ #if QT_VERSION >= 300
+ #define QT_TOOLBARDOCK_TYPE Qt::Dock
+ #define QT_DOCK_TOP Qt::DockTop
+ #define QT_DOCK_LEFT Qt::DockLeft
+ #define QT_DOCK_RIGHT Qt::DockRight
+ #define QT_DOCK_BOTTOM Qt::DockBottom
+ #define QT_DOCK_MINIMIZED Qt::DockMinimized
+ #define QT_DOCK_TORNOFF Qt::DockTornOff
+ #define QT_DOCK_UNMANAGED Qt::DockUnmanaged
+ #else
+ #define QT_TOOLBARDOCK_TYPE QMainWindow::ToolBarDock
+ #define QT_DOCK_TOP QMainWindow::Top
+ #define QT_DOCK_LEFT QMainWindow::Left
+ #define QT_DOCK_RIGHT QMainWindow::Right
+ #define QT_DOCK_BOTTOM QMainWindow::Bottom
+ #define QT_DOCK_MINIMIZED QMainWindow::Minimized
+ #define QT_DOCK_TORNOFF QMainWindow::TornOff
+ #define QT_DOCK_UNMANAGED QMainWindow::Unmanaged
+ #endif
+#endif
+
+#endif //_KVI_TAL_TOOLBARDOCKTYPE_H_
diff --git a/src/kvilib/tal/kvi_tal_tooltip.cpp b/src/kvilib/tal/kvi_tal_tooltip.cpp
new file mode 100644
index 00000000..3bd384d2
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_tooltip.cpp
@@ -0,0 +1,125 @@
+//=============================================================================
+//
+// File : kvi_tal_tooltip.cpp
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+#include "kvi_tal_tooltip.h"
+
+#include <qevent.h>
+
+KviTalToolTipHelper::KviTalToolTipHelper(KviTalToolTip * pToolTip,QWidget * pWidget)
+: QObject(pWidget)
+{
+#ifdef COMPILE_USE_QT4
+ m_pToolTip = pToolTip;
+ pWidget->installEventFilter(this);
+#endif
+}
+
+KviTalToolTipHelper::~KviTalToolTipHelper()
+{
+#ifdef COMPILE_USE_QT4
+ if(m_pToolTip)
+ {
+ m_pToolTip->helperDying();
+ delete m_pToolTip;
+ }
+#endif
+}
+
+void KviTalToolTipHelper::toolTipDying()
+{
+#ifdef COMPILE_USE_QT4
+ m_pToolTip = 0;
+#endif
+}
+
+bool KviTalToolTipHelper::eventFilter(QObject * pObject,QEvent * pEvent)
+{
+#ifdef COMPILE_USE_QT4
+ if((pEvent->type() == QEvent::ToolTip) && m_pToolTip)
+ {
+ debug("TOOL TIP EVENT WITH POSITION %d,%d",((QHelpEvent *)pEvent)->pos().x(),((QHelpEvent *)pEvent)->pos().y());
+ m_pToolTip->maybeTip(((QHelpEvent *)pEvent)->pos());
+ return true;
+ }
+#endif
+ return false;
+}
+
+
+KviTalToolTip::KviTalToolTip(QWidget * pParent)
+#ifndef COMPILE_USE_QT4
+: QToolTip(pParent)
+#endif
+{
+#ifdef COMPILE_USE_QT4
+ m_pHelper = new KviTalToolTipHelper(this,pParent);
+ m_pParent = pParent;
+#endif
+}
+
+KviTalToolTip::~KviTalToolTip()
+{
+#ifdef COMPILE_USE_QT4
+ if(m_pHelper)
+ {
+ m_pHelper->toolTipDying();
+ delete m_pHelper;
+ }
+#endif
+}
+
+#ifdef COMPILE_USE_QT4
+void KviTalToolTip::helperDying()
+{
+ m_pHelper = 0;
+}
+#endif
+
+#ifdef COMPILE_USE_QT4
+void KviTalToolTip::add(QWidget * widget,const QString & text)
+{
+ QToolTip::add(widget,text);
+}
+
+void KviTalToolTip::remove(QWidget * widget)
+{
+ QToolTip::remove(widget);
+}
+
+void KviTalToolTip::tip(const QRect & rect,const QString & text)
+{
+ debug("TOOL TIP AT %d,%d",rect.topLeft().x(),rect.topLeft().y());
+ QToolTip::showText(m_pParent->mapToGlobal(rect.topLeft()),text);
+}
+#endif
+
+void KviTalToolTip::maybeTip(const QPoint & p)
+{
+ // does nothing here.. and in Qt 4.x will even fail to work
+}
+
+#ifndef COMPILE_ON_WINDOWS
+ #include "kvi_tal_tooltip.moc"
+#endif
diff --git a/src/kvilib/tal/kvi_tal_tooltip.h b/src/kvilib/tal/kvi_tal_tooltip.h
new file mode 100644
index 00000000..91811c3c
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_tooltip.h
@@ -0,0 +1,79 @@
+#ifndef _KVI_TAL_TOOLTIP_H_
+#define _KVI_TAL_TOOLTIP_H_
+
+//=============================================================================
+//
+// File : kvi_tal_tooltip.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include <qtooltip.h>
+#include <qobject.h>
+
+class KviTalToolTip;
+
+// This is useful only with Qt4, but we put it here anyway
+// to have both a consistent API and make moc happy
+class KviTalToolTipHelper : public QObject
+{
+ friend class KviTalToolTip;
+ Q_OBJECT
+public:
+ KviTalToolTipHelper(KviTalToolTip * pToolTip,QWidget * pWidget);
+ ~KviTalToolTipHelper();
+protected:
+ KviTalToolTip * m_pToolTip;
+protected:
+ virtual bool eventFilter(QObject * pObject,QEvent * pEvent);
+ void toolTipDying();
+};
+
+
+class KVILIB_API KviTalToolTip
+#ifndef COMPILE_USE_QT4
+ : public QToolTip
+#endif
+{
+ friend class KviTalToolTipHelper;
+public:
+ KviTalToolTip(QWidget * pParent);
+ virtual ~KviTalToolTip();
+protected:
+#ifdef COMPILE_USE_QT4
+ KviTalToolTipHelper * m_pHelper;
+ QWidget * m_pParent;
+#endif
+public:
+#ifdef COMPILE_USE_QT4
+ static void add(QWidget * widget,const QString & text);
+ static void remove(QWidget * widget);
+ virtual void tip(const QRect & rect,const QString & text);
+#endif
+protected:
+ virtual void maybeTip(const QPoint & p);
+#ifdef COMPILE_USE_QT4
+ void helperDying();
+#endif
+};
+
+#endif // _KVI_TAL_TOOLTIP_H_
diff --git a/src/kvilib/tal/kvi_tal_vbox.cpp b/src/kvilib/tal/kvi_tal_vbox.cpp
new file mode 100644
index 00000000..5ef67152
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_vbox.cpp
@@ -0,0 +1,33 @@
+//=============================================================================
+//
+// File : kvi_tal_vbox.cpp
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+#include "kvi_tal_vbox.h"
+
+#ifdef COMPILE_USE_QT4
+ #include "kvi_tal_vbox_qt4.moc"
+#else
+ #include "kvi_tal_vbox_qt3.moc"
+#endif
+
diff --git a/src/kvilib/tal/kvi_tal_vbox.h b/src/kvilib/tal/kvi_tal_vbox.h
new file mode 100644
index 00000000..a27df527
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_vbox.h
@@ -0,0 +1,36 @@
+#ifndef _KVI_TAL_VBOX_H_
+#define _KVI_TAL_VBOX_H_
+
+//=============================================================================
+//
+// File : kvi_tal_vbox.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_USE_QT4
+ #include "kvi_tal_vbox_qt4.h"
+#else
+ #include "kvi_tal_vbox_qt3.h"
+#endif
+
+#endif // _KVI_TAL_VBOX_H_
diff --git a/src/kvilib/tal/kvi_tal_vbox_qt3.h b/src/kvilib/tal/kvi_tal_vbox_qt3.h
new file mode 100644
index 00000000..440a2436
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_vbox_qt3.h
@@ -0,0 +1,42 @@
+#ifndef _KVI_TAL_VBOX_QT3_H_
+#define _KVI_TAL_VBOX_QT3_H_
+
+//=============================================================================
+//
+// File : kvi_tal_vbox_qt3.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include <qvbox.h>
+
+class KVILIB_API KviTalVBox : public QVBox
+{
+ Q_OBJECT
+public:
+ KviTalVBox(QWidget * pParent)
+ : QVBox(pParent) {};
+ virtual ~KviTalVBox() {};
+};
+
+
+#endif // _KVI_TAL_VBOX_QT3_H_
diff --git a/src/kvilib/tal/kvi_tal_vbox_qt4.h b/src/kvilib/tal/kvi_tal_vbox_qt4.h
new file mode 100644
index 00000000..86de700d
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_vbox_qt4.h
@@ -0,0 +1,42 @@
+#ifndef _KVI_TAL_VBOX_QT4_H_
+#define _KVI_TAL_VBOX_QT4_H_
+
+//=============================================================================
+//
+// File : kvi_tal_vbox_qt4.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include <q3vbox.h>
+
+class KVILIB_API KviTalVBox : public Q3VBox
+{
+ Q_OBJECT
+public:
+ KviTalVBox(QWidget * pParent)
+ : Q3VBox(pParent) {};
+ virtual ~KviTalVBox() {};
+};
+
+
+#endif // _KVI_TAL_VBOX_QT4_H_
diff --git a/src/kvilib/tal/kvi_tal_widgetstack.cpp b/src/kvilib/tal/kvi_tal_widgetstack.cpp
new file mode 100644
index 00000000..1a99e3f9
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_widgetstack.cpp
@@ -0,0 +1,33 @@
+//=============================================================================
+//
+// File : kvi_tal_widgetstack.cpp
+// Creation date : Mon Jan 22 2007 11:17:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+#include "kvi_tal_widgetstack.h"
+
+#ifdef COMPILE_USE_QT4
+ #include "kvi_tal_widgetstack_qt4.moc"
+#else
+ #include "kvi_tal_widgetstack_qt3.moc"
+#endif
+
diff --git a/src/kvilib/tal/kvi_tal_widgetstack.h b/src/kvilib/tal/kvi_tal_widgetstack.h
new file mode 100644
index 00000000..7c9133c8
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_widgetstack.h
@@ -0,0 +1,36 @@
+#ifndef _KVI_TAL_WIDGETSTACK_H_
+#define _KVI_TAL_WIDGETSTACK_H_
+
+//=============================================================================
+//
+// File : kvi_tal_widgetstack.h
+// Creation date : Mon Jan 22 2007 11:17:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_USE_QT4
+ #include "kvi_tal_widgetstack_qt4.h"
+#else
+ #include "kvi_tal_widgetstack_qt3.h"
+#endif
+
+#endif // _KVI_TAL_WIDGETSTACK_H_
diff --git a/src/kvilib/tal/kvi_tal_widgetstack_qt3.h b/src/kvilib/tal/kvi_tal_widgetstack_qt3.h
new file mode 100644
index 00000000..cc0eb969
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_widgetstack_qt3.h
@@ -0,0 +1,42 @@
+#ifndef _KVI_TAL_WIDGETSTACK_QT3_H_
+#define _KVI_TAL_WIDGETSTACK_QT3_H_
+
+//=============================================================================
+//
+// File : kvi_tal_widgetstack_qt3.h
+// Creation date : Mon Jan 22 2007 11:17:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include <qwidgetstack.h>
+
+
+class KVILIB_API KviTalWidgetStack : public QWidgetStack
+{
+ Q_OBJECT
+public:
+ KviTalWidgetStack(QWidget * pParent)
+ : QWidgetStack(pParent) {};
+ virtual ~KviTalWidgetStack() {};
+};
+
+#endif // _KVI_TAL_WIDGETSTACK_QT3_H_
diff --git a/src/kvilib/tal/kvi_tal_widgetstack_qt4.h b/src/kvilib/tal/kvi_tal_widgetstack_qt4.h
new file mode 100644
index 00000000..6d0cc53f
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_widgetstack_qt4.h
@@ -0,0 +1,42 @@
+#ifndef _KVI_TAL_WIDGETSTACK_QT4_H_
+#define _KVI_TAL_WIDGETSTACK_QT4_H_
+
+//=============================================================================
+//
+// File : kvi_tal_widgetstack_qt4.h
+// Creation date : Mon Jan 22 2007 11:17:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+//#include <qstackedwidget.h>
+#include <q3widgetstack.h>
+
+class KVILIB_API KviTalWidgetStack : public Q3WidgetStack
+{
+ Q_OBJECT
+public:
+ KviTalWidgetStack(QWidget * pParent)
+ : Q3WidgetStack(pParent) {};
+ virtual ~KviTalWidgetStack() {};
+};
+
+#endif // _KVI_TAL_WIDGETSTACK_QT4_H_
diff --git a/src/kvilib/tal/kvi_tal_windowstate.h b/src/kvilib/tal/kvi_tal_windowstate.h
new file mode 100644
index 00000000..9510ba4a
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_windowstate.h
@@ -0,0 +1,42 @@
+#ifndef _KVI_TAL_WINDOWSTATE_H_
+#define _KVI_TAL_WINDOWSTATE_H_
+
+//=============================================================================
+//
+// File : kvi_tal_windowstate.h
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_USE_QT4
+ #define QT_WINDOWSTATE_FLAGS Qt::WindowState
+
+ #define QT_WINDOWSTATE_MAXIMIZED Qt::WindowMaximized
+ #define QT_WINDOWSTATE_MINIMIZED Qt::WindowMinimized
+#else
+ #define QT_WINDOWSTATE_FLAGS Qt::WidgetState
+
+ #define QT_WINDOWSTATE_MAXIMIZED Qt::WState_Maximized
+ #define QT_WINDOWSTATE_MINIMIZED Qt::WState_Minimized
+#endif
+
+#endif // _KVI_TAL_WINDOWSTATE_H_
diff --git a/src/kvilib/tal/kvi_tal_wizard.cpp b/src/kvilib/tal/kvi_tal_wizard.cpp
new file mode 100644
index 00000000..6f5f39da
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_wizard.cpp
@@ -0,0 +1,584 @@
+//=============================================================================
+//
+// File : kvi_tal_wizard.cpp
+// Creation date : Tue Feb 06 2007 14:35:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+#include "kvi_tal_wizard.h"
+#include "kvi_tal_hbox.h"
+#include "kvi_pointerlist.h"
+#include "kvi_locale.h"
+
+#ifdef COMPILE_USE_QT4
+ #include <QShowEvent>
+ #include <QLabel>
+ #include <QPushButton>
+ #include <QGridLayout>
+ #include <QFrame>
+ #include <QStackedWidget>
+ #include <QPalette>
+#else
+ #include <qlabel.h>
+ #include <qpushbutton.h>
+ #include <qlayout.h>
+ #include <qevent.h>
+ #include <qframe.h>
+ #include <qwidgetstack.h>
+ #include <qpalette.h>
+#endif
+
+
+class KviTalWizardPageData
+{
+public:
+ enum EnableFlags
+ {
+ EnableNext = 1,
+ EnableBack = 2,
+ EnableHelp = 4,
+ EnableCancel = 8,
+ EnableFinish = 16
+ };
+public:
+ QWidget * pWidget;
+ QString szTitle;
+ bool bEnabled;
+ int iEnableFlags;
+ int iVisibleIndex;
+};
+
+class KviTalWizardPrivate
+{
+public:
+ KviPointerList<KviTalWizardPageData> * pPageList;
+ int iEnabledPageCount;
+ KviTalWizardPageData * pCurrentPage;
+ QGridLayout * pLayout;
+ QLabel * pTitleLabel;
+ QLabel * pStepsLabel;
+ QPushButton * pBackButton;
+ QPushButton * pCancelButton;
+ QPushButton * pHelpButton;
+ QPushButton * pNextButton;
+ QWidget * pNextSpacer;
+ QPushButton * pFinishButton;
+ QWidget * pFinishSpacer;
+#ifdef COMPILE_USE_QT4
+ QStackedWidget * pWidgetStack;
+#else
+ QWidgetStack * pWidgetStack;
+#endif
+public:
+ KviTalWizardPageData * findPage(QWidget * pWidget)
+ {
+ for(KviTalWizardPageData * pData = pPageList->first();pData;pData = pPageList->next())
+ {
+ if(pData->pWidget == pWidget)
+ return pData;
+ }
+ return NULL;
+ }
+
+ KviTalWizardPageData * findFirstEnabledPage()
+ {
+ KviTalWizardPageData * pData;
+ for(pData = pPageList->first();pData;pData = pPageList->next())
+ {
+ if(pData->bEnabled)
+ return pData;
+ }
+ return NULL;
+ }
+
+ KviTalWizardPageData * findLastEnabledPage()
+ {
+ KviTalWizardPageData * pData;
+ for(pData = pPageList->last();pData;pData = pPageList->prev())
+ {
+ if(pData->bEnabled)
+ return pData;
+ }
+ return NULL;
+ }
+
+ KviTalWizardPageData * findNextEnabledPage(QWidget * pReference)
+ {
+ if(!pReference)
+ return findFirstEnabledPage();
+ KviTalWizardPageData * pData = findPage(pReference);
+ if(!pData)
+ return NULL;
+ for(pData = pPageList->next();pData;pData = pPageList->next())
+ {
+ if(pData->bEnabled)
+ return pData;
+ }
+ return NULL;
+ }
+
+ KviTalWizardPageData * findPrevEnabledPage(QWidget * pReference)
+ {
+ if(!pReference)
+ return findLastEnabledPage();
+ KviTalWizardPageData * pData = findPage(pReference);
+ if(!pData)
+ return NULL;
+ for(pData = pPageList->prev();pData;pData = pPageList->prev())
+ {
+ if(pData->bEnabled)
+ return pData;
+ }
+ return NULL;
+ }
+
+ int reindexPages()
+ {
+ int iEnabledCount = 0;
+ for(KviTalWizardPageData * pData = pPageList->next();pData;pData = pPageList->next())
+ {
+ if(pData->bEnabled)
+ {
+ iEnabledCount++;
+ pData->iVisibleIndex = iEnabledCount;
+ }
+ }
+ return iEnabledCount;
+ }
+};
+
+
+KviTalWizard::KviTalWizard(QWidget * pParent)
+: QDialog(pParent)
+{
+ m_p = new KviTalWizardPrivate;
+ m_p->pPageList = new KviPointerList<KviTalWizardPageData>;
+ m_p->pPageList->setAutoDelete(true);
+ m_p->pCurrentPage = NULL;
+ m_p->iEnabledPageCount = 0;
+ m_p->pLayout = new QGridLayout(this);
+
+ m_p->pTitleLabel = new QLabel(this);
+#ifdef COMPILE_USE_QT4
+ m_p->pLayout->addWidget(m_p->pTitleLabel,0,0,1,3);
+#else
+ m_p->pLayout->addMultiCellWidget(m_p->pTitleLabel,0,0,0,3);
+#endif
+ m_p->pStepsLabel = new QLabel(this);
+ m_p->pStepsLabel->setMinimumWidth(80);
+ m_p->pStepsLabel->setAlignment(Qt::AlignRight);
+#ifdef COMPILE_USE_QT4
+ m_p->pLayout->addWidget(m_p->pStepsLabel,0,4,1,3);
+#else
+ m_p->pLayout->addMultiCellWidget(m_p->pStepsLabel,0,0,4,6);
+#endif
+
+ QFrame * f1 = new QFrame(this);
+ f1->setFrameStyle(QFrame::Sunken | QFrame::HLine);
+#ifdef COMPILE_USE_QT4
+ m_p->pLayout->addWidget(f1,1,0,1,7);
+#else
+ m_p->pLayout->addMultiCellWidget(f1,1,1,0,6);
+#endif
+
+#ifdef COMPILE_USE_QT4
+ m_p->pWidgetStack = new QStackedWidget(this);
+ m_p->pLayout->addWidget(m_p->pWidgetStack,2,0,1,7);
+#else
+ m_p->pWidgetStack = new QWidgetStack(this);
+ m_p->pLayout->addMultiCellWidget(m_p->pWidgetStack,2,2,0,6);
+#endif
+
+ QFrame * f2 = new QFrame(this);
+ f2->setFrameStyle(QFrame::Sunken | QFrame::HLine);
+#ifdef COMPILE_USE_QT4
+ m_p->pLayout->addWidget(f2,3,0,1,7);
+#else
+ m_p->pLayout->addMultiCellWidget(f2,3,3,0,6);
+#endif
+
+ KviTalHBox * pButtonBox = new KviTalHBox(this);
+#ifdef COMPILE_USE_QT4
+ m_p->pLayout->addWidget(pButtonBox,4,0,1,7);
+#else
+ m_p->pLayout->addMultiCellWidget(pButtonBox,4,4,0,6);
+#endif
+
+ pButtonBox->setMargin(0);
+ pButtonBox->setSpacing(0);
+
+
+ m_p->pCancelButton = new QPushButton(__tr("Cancel"),pButtonBox);
+ m_p->pCancelButton->setMinimumWidth(80);
+ QObject::connect(
+ m_p->pCancelButton,
+ SIGNAL(clicked()),
+ this,
+ SLOT(cancelButtonClicked())
+ );
+
+ QWidget * pSpacer = new QWidget(pButtonBox);
+ pSpacer->setFixedWidth(4);
+
+ m_p->pHelpButton = new QPushButton(__tr("Help"),pButtonBox);
+ m_p->pHelpButton->setMinimumWidth(80);
+ QObject::connect(
+ m_p->pHelpButton,
+ SIGNAL(clicked()),
+ this,
+ SLOT(helpButtonClicked())
+ );
+
+ QWidget * pLargeSpacer = new QWidget(pButtonBox);
+ pLargeSpacer->setMinimumWidth(50);
+ pButtonBox->setStretchFactor(pLargeSpacer,100);
+
+ QString szText = "< ";
+ szText += __tr("Back");
+ m_p->pBackButton = new QPushButton(szText,pButtonBox);
+ m_p->pBackButton->setMinimumWidth(80);
+ QObject::connect(
+ m_p->pBackButton,
+ SIGNAL(clicked()),
+ this,
+ SLOT(backButtonClicked())
+ );
+
+ m_p->pNextSpacer = new QWidget(pButtonBox);
+ m_p->pNextSpacer->setFixedWidth(4);
+
+ szText = __tr("Next");
+ szText += " >";
+ m_p->pNextButton = new QPushButton(szText,pButtonBox);
+ m_p->pNextButton->setMinimumWidth(80);
+ QObject::connect(
+ m_p->pNextButton,
+ SIGNAL(clicked()),
+ this,
+ SLOT(nextButtonClicked())
+ );
+
+ m_p->pFinishSpacer = new QWidget(pButtonBox);
+ m_p->pFinishSpacer->setFixedWidth(4);
+
+ m_p->pFinishButton = new QPushButton(__tr("Finish"),pButtonBox);
+ m_p->pFinishButton->setMinimumWidth(80);
+ QObject::connect(
+ m_p->pFinishButton,
+ SIGNAL(clicked()),
+ this,
+ SLOT(finishButtonClicked())
+ );
+
+ m_p->pLayout->setMargin(8);
+ m_p->pLayout->setSpacing(4);
+ m_p->pLayout->setRowStretch(2,1);
+ m_p->pLayout->setColStretch(0,1);
+}
+
+KviTalWizard::~KviTalWizard()
+{
+ delete m_p->pPageList;
+ delete m_p;
+}
+
+void KviTalWizard::insertPage(QWidget * pWidget,const QString &szTitle,int iIndex)
+{
+ KviTalWizardPageData * pPageData = m_p->findPage(pWidget);
+ if(!pPageData)
+ {
+ pPageData = new KviTalWizardPageData;
+ pPageData->pWidget = pWidget;
+ pPageData->iEnableFlags = \
+ KviTalWizardPageData::EnableNext | \
+ KviTalWizardPageData::EnableCancel | \
+ KviTalWizardPageData::EnableBack;
+ if(iIndex < 0)
+ {
+ m_p->pPageList->append(pPageData);
+ m_p->iEnabledPageCount++;
+ pPageData->iVisibleIndex = m_p->iEnabledPageCount;
+ } else {
+ m_p->pPageList->insert(iIndex,pPageData);
+ m_p->iEnabledPageCount = m_p->reindexPages();
+ }
+ m_p->pWidgetStack->addWidget(pWidget);
+ }
+ pPageData->szTitle = szTitle;
+ pPageData->bEnabled = true;
+
+}
+
+void KviTalWizard::addPage(QWidget * pWidget,const QString &szTitle)
+{
+ insertPage(pWidget,szTitle,-1);
+}
+
+bool KviTalWizard::setPageEnabled(QWidget * pWidget,bool bEnabled)
+{
+ KviTalWizardPageData * pData = m_p->findPage(pWidget);
+ if(!pData)
+ return false;
+ pData->bEnabled = bEnabled;
+ m_p->iEnabledPageCount = m_p->reindexPages();
+ setCurrentPage(m_p->pCurrentPage);
+ return true;
+}
+
+bool KviTalWizard::setPageTitle(QWidget * pWidget,const QString &szTitle)
+{
+ KviTalWizardPageData * pData = m_p->findPage(pWidget);
+ if(!pData)
+ return false;
+ pData->szTitle = szTitle;
+ return true;
+}
+
+bool KviTalWizard::setCurrentPage(QWidget * pWidget)
+{
+ KviTalWizardPageData * pData = m_p->findPage(pWidget);
+ if(!pData)
+ return false;
+ setCurrentPage(pData);
+ return true;
+}
+
+QWidget * KviTalWizard::currentPage()
+{
+ if(!m_p->pCurrentPage)
+ return NULL;
+ return m_p->pCurrentPage->pWidget;
+}
+
+void KviTalWizard::setCurrentPage(KviTalWizardPageData * pData)
+{
+ m_p->pCurrentPage = pData;
+
+ bool bCancelEnabled = true;
+ bool bNextEnabled = false;
+ bool bBackEnabled = false;
+ bool bHelpEnabled = false;
+ bool bFinishEnabled = false;
+
+ QString szTitle;
+ QString szSteps;
+
+ if(pData)
+ {
+ bNextEnabled = (pData->iEnableFlags & KviTalWizardPageData::EnableNext) && m_p->findNextEnabledPage(pData->pWidget);
+ bBackEnabled = (pData->iEnableFlags & KviTalWizardPageData::EnableBack) && m_p->findPrevEnabledPage(pData->pWidget);
+ bCancelEnabled = (pData->iEnableFlags & KviTalWizardPageData::EnableCancel);
+ bFinishEnabled = (pData->iEnableFlags & KviTalWizardPageData::EnableFinish);
+ bHelpEnabled = (pData->iEnableFlags & KviTalWizardPageData::EnableHelp);
+#ifdef COMPILE_USE_QT4
+ m_p->pWidgetStack->setCurrentWidget(pData->pWidget);
+#else
+ m_p->pWidgetStack->raiseWidget(pData->pWidget);
+#endif
+ szTitle = "<b>";
+ szTitle += pData->szTitle;
+ szTitle += "</b>";
+ QPalette pal = m_p->pStepsLabel->palette();
+#ifdef COMPILE_USE_QT4
+ QColor clrWin = pal.color(QPalette::Normal,QPalette::Window);
+ QColor clrTxt = pal.color(QPalette::Normal,QPalette::WindowText);
+#else
+ QColor clrWin = pal.color(QPalette::Normal,QColorGroup::Foreground);
+ QColor clrTxt = pal.color(QPalette::Normal,QColorGroup::Background);
+#endif
+ QColor clrMid = qRgb(
+ (clrWin.red() + clrTxt.red()) / 2,
+ (clrWin.green() + clrTxt.green()) / 2,
+ (clrWin.blue() + clrTxt.blue()) / 2
+ );
+
+ szSteps = "<nobr><font color=\"";
+ szSteps += clrMid.name();
+ szSteps += "\"><b>[";
+ szSteps += QString("Step %1 of %2").arg(pData->iVisibleIndex).arg(m_p->iEnabledPageCount);
+ szSteps += "]</b></font></nobr>";
+ }
+
+ m_p->pTitleLabel->setText(szTitle);
+ m_p->pStepsLabel->setText(szSteps);
+
+ m_p->pNextButton->setEnabled(bNextEnabled);
+ if(bNextEnabled)
+ {
+ m_p->pNextButton->show();
+ m_p->pNextSpacer->show();
+ } else {
+ m_p->pNextButton->hide();
+ m_p->pNextSpacer->hide();
+ }
+ m_p->pBackButton->setEnabled(bBackEnabled);
+ m_p->pHelpButton->setEnabled(bHelpEnabled);
+ if(bHelpEnabled)
+ m_p->pHelpButton->show();
+ else
+ m_p->pHelpButton->hide();
+ m_p->pCancelButton->setEnabled(bCancelEnabled);
+ m_p->pFinishButton->setEnabled(bFinishEnabled);
+ if(bFinishEnabled)
+ {
+ m_p->pFinishButton->show();
+ m_p->pFinishSpacer->show();
+ } else {
+ m_p->pFinishButton->hide();
+ m_p->pFinishSpacer->hide();
+ }
+}
+
+void KviTalWizard::showEvent(QShowEvent * e)
+{
+ if(!(m_p->pCurrentPage))
+ {
+ // display the first page
+ KviTalWizardPageData * pData = m_p->findFirstEnabledPage();
+ if(pData)
+ setCurrentPage(pData->pWidget);
+ }
+ QDialog::showEvent(e);
+}
+
+void KviTalWizard::closeEvent(QCloseEvent * e)
+{
+ e->ignore();
+ cancelButtonClicked();
+}
+
+void KviTalWizard::backButtonClicked()
+{
+ if(!m_p->pCurrentPage)
+ return;
+ setCurrentPage(m_p->findPrevEnabledPage(m_p->pCurrentPage->pWidget));
+}
+
+void KviTalWizard::nextButtonClicked()
+{
+ setCurrentPage(m_p->findNextEnabledPage(m_p->pCurrentPage->pWidget));
+}
+
+void KviTalWizard::helpButtonClicked()
+{
+ emit helpClicked();
+}
+
+void KviTalWizard::cancelButtonClicked()
+{
+ reject();
+}
+
+void KviTalWizard::finishButtonClicked()
+{
+ accept();
+}
+
+void KviTalWizard::setHelpEnabled(QWidget * pWidget,bool bEnabled)
+{
+ KviTalWizardPageData * pData = m_p->findPage(pWidget);
+ if(!pData)
+ return;
+ if(bEnabled)
+ pData->iEnableFlags |= KviTalWizardPageData::EnableHelp;
+ else
+ pData->iEnableFlags &= ~KviTalWizardPageData::EnableHelp;
+ if(pData == m_p->pCurrentPage)
+ setCurrentPage(pData);
+}
+
+void KviTalWizard::setCancelEnabled(QWidget * pWidget,bool bEnabled)
+{
+ KviTalWizardPageData * pData = m_p->findPage(pWidget);
+ if(!pData)
+ return;
+ if(bEnabled)
+ pData->iEnableFlags |= KviTalWizardPageData::EnableCancel;
+ else
+ pData->iEnableFlags &= ~KviTalWizardPageData::EnableCancel;
+ if(pData == m_p->pCurrentPage)
+ setCurrentPage(pData);
+}
+
+void KviTalWizard::setFinishEnabled(QWidget * pWidget,bool bEnabled)
+{
+ KviTalWizardPageData * pData = m_p->findPage(pWidget);
+ if(!pData)
+ return;
+ if(bEnabled)
+ pData->iEnableFlags |= KviTalWizardPageData::EnableFinish;
+ else
+ pData->iEnableFlags &= ~KviTalWizardPageData::EnableFinish;
+ if(pData == m_p->pCurrentPage)
+ setCurrentPage(pData);
+}
+
+void KviTalWizard::setNextEnabled(QWidget * pWidget,bool bEnabled)
+{
+ KviTalWizardPageData * pData = m_p->findPage(pWidget);
+ if(!pData)
+ return;
+ if(bEnabled)
+ pData->iEnableFlags |= KviTalWizardPageData::EnableNext;
+ else
+ pData->iEnableFlags &= ~KviTalWizardPageData::EnableNext;
+ if(pData == m_p->pCurrentPage)
+ setCurrentPage(pData);
+}
+
+void KviTalWizard::setBackEnabled(QWidget * pWidget,bool bEnabled)
+{
+ KviTalWizardPageData * pData = m_p->findPage(pWidget);
+ if(!pData)
+ return;
+ if(bEnabled)
+ pData->iEnableFlags |= KviTalWizardPageData::EnableBack;
+ else
+ pData->iEnableFlags &= ~KviTalWizardPageData::EnableBack;
+ if(pData == m_p->pCurrentPage)
+ setCurrentPage(pData);
+}
+
+QPushButton * KviTalWizard::cancelButton()
+{
+ return m_p->pCancelButton;
+}
+
+QPushButton * KviTalWizard::helpButton()
+{
+ return m_p->pHelpButton;
+}
+
+QPushButton * KviTalWizard::finishButton()
+{
+ return m_p->pFinishButton;
+}
+
+QPushButton * KviTalWizard::nextButton()
+{
+ return m_p->pNextButton;
+}
+
+QPushButton * KviTalWizard::backButton()
+{
+ return m_p->pBackButton;
+}
+
diff --git a/src/kvilib/tal/kvi_tal_wizard.h b/src/kvilib/tal/kvi_tal_wizard.h
new file mode 100644
index 00000000..f84e3555
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_wizard.h
@@ -0,0 +1,169 @@
+#ifndef _KVI_TAL_WIZARD_H_
+#define _KVI_TAL_WIZARD_H_
+
+//=============================================================================
+//
+// File : kvi_tal_wizard.h
+// Creation date : Tue Feb 06 2007 14:35:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_USE_QT4
+ #include <QDialog>
+#else
+ #include <qdialog.h>
+#endif
+
+class QShowEvent;
+class QPushButton;
+class KviTalWizardPrivate;
+class KviTalWizardPageData;
+
+///
+/// \class KviTalWizard
+///
+/// \brief Provides a wizard-style dialog with steps
+///
+class KVILIB_API KviTalWizard : public QDialog
+{
+ Q_OBJECT
+public:
+ KviTalWizard(QWidget * pParent);
+ ~KviTalWizard();
+protected:
+ KviTalWizardPrivate * m_p;
+public:
+ ///
+ /// Adds a page to the wizard with the specified title.
+ /// The pages are displayed in order they're added.
+ /// Adding a page a second time is equivalent to calling
+ /// setPageTitle() and enabling the page.
+ ///
+ void addPage(QWidget * pWidget,const QString &szTitle);
+ ///
+ /// Adds a page to the wizard with the specified title
+ /// and in the specified position.
+ /// Adding a page a second time is equivalent to calling
+ /// setPageTitle() and enabling the page.
+ ///
+ void insertPage(QWidget * pWidget,const QString &szTitle,int iIndex);
+ ///
+ /// Enables or disables a page. A disabled page
+ /// is skipped when the user presses "Next" in the
+ /// previous page or "Back" in the page after.
+ /// Disabling the current page has no effect.
+ ///
+ /// Returns true on success or false if the pWidget
+ /// does not identify a page that has been added to this wizard.
+ ///
+ bool setPageEnabled(QWidget * pWidget,bool bEnabled);
+ ///
+ /// Changes a page title.
+ ///
+ /// Returns true on success or false if the pWidget
+ /// does not identify a page that has been added to this wizard.
+ ///
+ bool setPageTitle(QWidget * pWidget,const QString &szTitle);
+ ///
+ /// Switches the wizard to the specified page.
+ /// Please note that this class handles page switching
+ /// automatically so you usually don't need to call this function.
+ ///
+ /// Returns true on success or false if the pWidget
+ /// does not identify a page that has been added to this wizard.
+ ///
+ bool setCurrentPage(QWidget * pWidget);
+ ///
+ /// Returns a pointer to the current page
+ ///
+ QWidget * currentPage();
+ ///
+ /// Enables or disables the help button for the specified page.
+ /// By default the help button is always disabled.
+ ///
+ void setHelpEnabled(QWidget * pWidget,bool bEnabled);
+ ///
+ /// Enables or disables the cancel button for the specified page.
+ /// By default the cancel button is always enabled.
+ ///
+ void setCancelEnabled(QWidget * pWidget,bool bEnabled);
+ ///
+ /// Enables or disables the finish button for the specified page.
+ /// By default the finish button is always disabled.
+ ///
+ void setFinishEnabled(QWidget * pWidget,bool bEnabled);
+ ///
+ /// Enables or disables the next button for the specified page.
+ /// By default the next button is always enabled.
+ ///
+ void setNextEnabled(QWidget * pWidget,bool bEnabled);
+ ///
+ /// Enables or disables the prev button for the specified page.
+ /// By default the prev button is always enabled.
+ ///
+ void setBackEnabled(QWidget * pWidget,bool bEnabled);
+ ///
+ /// Returns a pointer to the cancel button displayed in the dialog.
+ ///
+ QPushButton * cancelButton();
+ ///
+ /// Returns a pointer to the help button displayed in the dialog.
+ ///
+ QPushButton * helpButton();
+ ///
+ /// Returns a pointer to the finish button displayed in the dialog.
+ ///
+ QPushButton * finishButton();
+ ///
+ /// Returns a pointer to the next button displayed in the dialog.
+ ///
+ QPushButton * nextButton();
+ ///
+ /// Returns a pointer to the back button displayed in the dialog.
+ ///
+ QPushButton * backButton();
+signals:
+ ///
+ /// Emitted when the help button is clicked.
+ ///
+ void helpClicked();
+protected:
+ ///
+ /// Displays the first page if no other page is shown yet.
+ ///
+ virtual void showEvent(QShowEvent * e);
+ ///
+ /// Handles redirects the close button to the "cancel" operation.
+ ///
+ virtual void closeEvent(QCloseEvent * e);
+protected:
+ void setCurrentPage(KviTalWizardPageData * pData);
+protected slots:
+ void backButtonClicked();
+ void nextButtonClicked();
+ void helpButtonClicked();
+ void cancelButtonClicked();
+ void finishButtonClicked();
+};
+
+
+#endif // _KVI_TAL_WIZARD_H_
diff --git a/src/kvilib/tal/moc_kvi_tal_wizard.cpp b/src/kvilib/tal/moc_kvi_tal_wizard.cpp
new file mode 100644
index 00000000..0ad29754
--- /dev/null
+++ b/src/kvilib/tal/moc_kvi_tal_wizard.cpp
@@ -0,0 +1,128 @@
+/****************************************************************************
+** KviTalWizard meta object code from reading C++ file 'kvi_tal_wizard.h'
+**
+** Created: Sun Mar 23 20:56:27 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_tal_wizard.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviTalWizard::className() const
+{
+ return "KviTalWizard";
+}
+
+QMetaObject *KviTalWizard::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviTalWizard( "KviTalWizard", &KviTalWizard::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviTalWizard::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviTalWizard", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviTalWizard::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviTalWizard", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviTalWizard::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QDialog::staticMetaObject();
+ static const QUMethod slot_0 = {"backButtonClicked", 0, 0 };
+ static const QUMethod slot_1 = {"nextButtonClicked", 0, 0 };
+ static const QUMethod slot_2 = {"helpButtonClicked", 0, 0 };
+ static const QUMethod slot_3 = {"cancelButtonClicked", 0, 0 };
+ static const QUMethod slot_4 = {"finishButtonClicked", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "backButtonClicked()", &slot_0, QMetaData::Protected },
+ { "nextButtonClicked()", &slot_1, QMetaData::Protected },
+ { "helpButtonClicked()", &slot_2, QMetaData::Protected },
+ { "cancelButtonClicked()", &slot_3, QMetaData::Protected },
+ { "finishButtonClicked()", &slot_4, QMetaData::Protected }
+ };
+ static const QUMethod signal_0 = {"helpClicked", 0, 0 };
+ static const QMetaData signal_tbl[] = {
+ { "helpClicked()", &signal_0, QMetaData::Public }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviTalWizard", parentObject,
+ slot_tbl, 5,
+ signal_tbl, 1,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviTalWizard.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviTalWizard::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviTalWizard" ) )
+ return this;
+ return QDialog::qt_cast( clname );
+}
+
+// SIGNAL helpClicked
+void KviTalWizard::helpClicked()
+{
+ activate_signal( staticMetaObject()->signalOffset() + 0 );
+}
+
+bool KviTalWizard::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: backButtonClicked(); break;
+ case 1: nextButtonClicked(); break;
+ case 2: helpButtonClicked(); break;
+ case 3: cancelButtonClicked(); break;
+ case 4: finishButtonClicked(); break;
+ default:
+ return QDialog::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviTalWizard::qt_emit( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->signalOffset() ) {
+ case 0: helpClicked(); break;
+ default:
+ return QDialog::qt_emit(_id,_o);
+ }
+ return TRUE;
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviTalWizard::qt_property( int id, int f, QVariant* v)
+{
+ return QDialog::qt_property( id, f, v);
+}
+
+bool KviTalWizard::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/Makefile.am b/src/kvirc/Makefile.am
new file mode 100644
index 00000000..e65e65cf
--- /dev/null
+++ b/src/kvirc/Makefile.am
@@ -0,0 +1,5 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+SUBDIRS = build include kernel kvs module sparser ui
diff --git a/src/kvirc/build/Makefile.am b/src/kvirc/build/Makefile.am
new file mode 100644
index 00000000..44db487e
--- /dev/null
+++ b/src/kvirc/build/Makefile.am
@@ -0,0 +1,537 @@
+########################################################################################################################
+#
+# KVIrc executable Makefile
+# Szymon Stefanek 21.09.2001
+#
+########################################################################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+kvirc_LDFLAGS = -export-dynamic $(SS_LDFLAGS) $(SS_LIBDIRS) $(SS_RPATH)
+kvirc_LDADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+bin_PROGRAMS = kvirc
+
+#
+# Command useful to find out all the sources
+# SRC=`find ../ -name *.cpp | sort`
+# echo $SRC
+#
+
+nodist_kvirc_SOURCES = ../kernel/moc_kvi_action.cpp \
+../kernel/moc_kvi_actionmanager.cpp \
+../kernel/moc_kvi_coreactions.cpp \
+../kernel/moc_kvi_filetransfer.cpp \
+../kernel/moc_kvi_ircconnection.cpp \
+../kernel/moc_kvi_irccontext.cpp \
+../kernel/moc_kvi_irclink.cpp \
+../kernel/moc_kvi_ircsocket.cpp \
+../kernel/moc_kvi_ircconnectiontargetresolver.cpp \
+../kvs/moc_kvi_kvs_action.cpp \
+../kvs/moc_kvi_kvs_asyncdnsoperation.cpp \
+../kvs/moc_kvi_kvs_asyncoperation.cpp \
+../kvs/moc_kvi_kvs_dnsmanager.cpp \
+../kvs/moc_kvi_kvs_timermanager.cpp \
+../kvs/moc_kvi_kvs_object.cpp \
+../kvs/moc_kvi_kvs_popupmenu.cpp \
+../kvs/moc_kvi_kvs_processmanager.cpp \
+../kvs/moc_kvi_kvs_useraction.cpp \
+../module/moc_kvi_mexlinkfilter.cpp \
+../module/moc_kvi_mexserverimport.cpp \
+../module/moc_kvi_mextoolbar.cpp \
+../module/moc_kvi_modulemanager.cpp \
+../ui/moc_kvi_actiondrawer.cpp \
+../ui/moc_kvi_customtoolbar.cpp \
+../ui/moc_kvi_debugwindow.cpp \
+../ui/moc_kvi_htmldialog.cpp \
+../ui/moc_kvi_imagedialog.cpp \
+../ui/moc_kvi_ircviewtools.cpp \
+../ui/moc_kvi_mdicaption.cpp \
+../ui/moc_kvi_mdichild.cpp \
+../ui/moc_kvi_mdimanager.cpp \
+../ui/moc_kvi_statusbar.cpp \
+../ui/moc_kvi_statusbarapplet.cpp \
+../ui/moc_kvi_toolwindows_container.cpp \
+../ui/moc_kvi_listview.cpp
+
+kvirc_SOURCES = ../kernel/kvi_action.cpp \
+../kernel/kvi_actionmanager.cpp \
+../kernel/kvi_app.cpp \
+../kernel/kvi_coreactions.cpp \
+../kernel/kvi_filetransfer.cpp \
+../kernel/kvi_app_fs.cpp \
+../kernel/kvi_app_setup.cpp \
+../kernel/kvi_asynchronousconnectiondata.cpp \
+../kernel/kvi_customtoolbardescriptor.cpp \
+../kernel/kvi_customtoolbarmanager.cpp \
+../kernel/kvi_iconmanager.cpp \
+../kernel/kvi_internalcmd.cpp \
+../kernel/kvi_ipc.cpp \
+../kernel/kvi_ircdatastreammonitor.cpp \
+../kernel/kvi_ircconnection.cpp \
+../kernel/kvi_ircconnectionantictcpflooddata.cpp \
+../kernel/kvi_ircconnectionasyncwhoisdata.cpp \
+../kernel/kvi_ircconnectionnetsplitdetectordata.cpp \
+../kernel/kvi_ircconnectiontarget.cpp \
+../kernel/kvi_ircconnectiontargetresolver.cpp \
+../kernel/kvi_ircconnectionserverinfo.cpp \
+../kernel/kvi_ircconnectionstatedata.cpp \
+../kernel/kvi_ircconnectionstatistics.cpp \
+../kernel/kvi_ircconnectionuserinfo.cpp \
+../kernel/kvi_irccontext.cpp \
+../kernel/kvi_irclink.cpp \
+../kernel/kvi_ircsocket.cpp \
+../kernel/kvi_ircurl.cpp \
+../kernel/kvi_main.cpp \
+../kernel/kvi_lagmeter.cpp \
+../kernel/kvi_notifylist.cpp \
+../kernel/kvi_options.cpp \
+../kernel/kvi_sslmaster.cpp \
+../kernel/kvi_texticonmanager.cpp \
+../kernel/kvi_theme.cpp \
+../kernel/kvi_useraction.cpp \
+../kernel/kvi_userinput.cpp \
+../kvs/kvi_kvs.cpp \
+../kvs/kvi_kvs_action.cpp \
+../kvs/kvi_kvs_aliasmanager.cpp \
+../kvs/kvi_kvs_array.cpp \
+../kvs/kvi_kvs_arraycast.cpp \
+../kvs/kvi_kvs_asyncdnsoperation.cpp \
+../kvs/kvi_kvs_asyncoperation.cpp \
+../kvs/kvi_kvs_callbackobject.cpp \
+../kvs/kvi_kvs_corecallbackcommands.cpp \
+../kvs/kvi_kvs_corefunctions.cpp \
+../kvs/kvi_kvs_corefunctions_af.cpp \
+../kvs/kvi_kvs_corefunctions_gl.cpp \
+../kvs/kvi_kvs_corefunctions_mr.cpp \
+../kvs/kvi_kvs_corefunctions_sz.cpp \
+../kvs/kvi_kvs_coresimplecommands.cpp \
+../kvs/kvi_kvs_coresimplecommands_af.cpp \
+../kvs/kvi_kvs_coresimplecommands_gl.cpp \
+../kvs/kvi_kvs_coresimplecommands_mr.cpp \
+../kvs/kvi_kvs_coresimplecommands_sz.cpp \
+../kvs/kvi_kvs_dnsmanager.cpp \
+../kvs/kvi_kvs_event.cpp \
+../kvs/kvi_kvs_eventhandler.cpp \
+../kvs/kvi_kvs_eventmanager.cpp \
+../kvs/kvi_kvs_eventtable.cpp \
+../kvs/kvi_kvs_hash.cpp \
+../kvs/kvi_kvs_kernel.cpp \
+../kvs/kvi_kvs_moduleinterface.cpp \
+../kvs/kvi_kvs_object.cpp \
+../kvs/kvi_kvs_object_class.cpp \
+../kvs/kvi_kvs_object_controller.cpp \
+../kvs/kvi_kvs_object_functioncall.cpp \
+../kvs/kvi_kvs_object_functionhandler.cpp \
+../kvs/kvi_kvs_object_functionhandlerimpl.cpp \
+../kvs/kvi_kvs_parameterprocessor.cpp \
+../kvs/kvi_kvs_parser.cpp \
+../kvs/kvi_kvs_parser_command.cpp \
+../kvs/kvi_kvs_parser_comment.cpp \
+../kvs/kvi_kvs_parser_dollar.cpp \
+../kvs/kvi_kvs_parser_expression.cpp \
+../kvs/kvi_kvs_parser_lside.cpp \
+../kvs/kvi_kvs_parser_specialcommands.cpp \
+../kvs/kvi_kvs_popupmanager.cpp \
+../kvs/kvi_kvs_popupmenu.cpp \
+../kvs/kvi_kvs_processmanager.cpp \
+../kvs/kvi_kvs_report.cpp \
+../kvs/kvi_kvs_runtimecall.cpp \
+../kvs/kvi_kvs_runtimecontext.cpp \
+../kvs/kvi_kvs_rwevaluationresult.cpp \
+../kvs/kvi_kvs_script.cpp \
+../kvs/kvi_kvs_scriptaddonmanager.cpp \
+../kvs/kvi_kvs_switchlist.cpp \
+../kvs/kvi_kvs_timermanager.cpp \
+../kvs/kvi_kvs_treenode_aliasfunctioncall.cpp \
+../kvs/kvi_kvs_treenode_aliassimplecommand.cpp \
+../kvs/kvi_kvs_treenode_arraycount.cpp \
+../kvs/kvi_kvs_treenode_arrayelement.cpp \
+../kvs/kvi_kvs_treenode_arrayorhashelement.cpp \
+../kvs/kvi_kvs_treenode_arrayreferenceassert.cpp \
+../kvs/kvi_kvs_treenode_base.cpp \
+../kvs/kvi_kvs_treenode_baseobjectfunctioncall.cpp \
+../kvs/kvi_kvs_treenode_callbackcommand.cpp \
+../kvs/kvi_kvs_treenode_command.cpp \
+../kvs/kvi_kvs_treenode_commandevaluation.cpp \
+../kvs/kvi_kvs_treenode_commandwithparameters.cpp \
+../kvs/kvi_kvs_treenode_compositedata.cpp \
+../kvs/kvi_kvs_treenode_constantdata.cpp \
+../kvs/kvi_kvs_treenode_corecallbackcommand.cpp \
+../kvs/kvi_kvs_treenode_corefunctioncall.cpp \
+../kvs/kvi_kvs_treenode_coresimplecommand.cpp \
+../kvs/kvi_kvs_treenode_data.cpp \
+../kvs/kvi_kvs_treenode_datalist.cpp \
+../kvs/kvi_kvs_treenode_expression.cpp \
+../kvs/kvi_kvs_treenode_expressionreturn.cpp \
+../kvs/kvi_kvs_treenode_extendedscopevariable.cpp \
+../kvs/kvi_kvs_treenode_functioncall.cpp \
+../kvs/kvi_kvs_treenode_globalvariable.cpp \
+../kvs/kvi_kvs_treenode_hashcount.cpp \
+../kvs/kvi_kvs_treenode_hashelement.cpp \
+../kvs/kvi_kvs_treenode_hashreferenceassert.cpp \
+../kvs/kvi_kvs_treenode_indirectdata.cpp \
+../kvs/kvi_kvs_treenode_instruction.cpp \
+../kvs/kvi_kvs_treenode_instructionblock.cpp \
+../kvs/kvi_kvs_treenode_localvariable.cpp \
+../kvs/kvi_kvs_treenode_modulecallbackcommand.cpp \
+../kvs/kvi_kvs_treenode_modulefunctioncall.cpp \
+../kvs/kvi_kvs_treenode_modulesimplecommand.cpp \
+../kvs/kvi_kvs_treenode_multipleparameteridentifier.cpp \
+../kvs/kvi_kvs_treenode_objectfield.cpp \
+../kvs/kvi_kvs_treenode_objectfunctioncall.cpp \
+../kvs/kvi_kvs_treenode_operation.cpp \
+../kvs/kvi_kvs_treenode_parameterreturn.cpp \
+../kvs/kvi_kvs_treenode_rebindingswitch.cpp \
+../kvs/kvi_kvs_treenode_scopeoperator.cpp \
+../kvs/kvi_kvs_treenode_simplecommand.cpp \
+../kvs/kvi_kvs_treenode_singleparameteridentifier.cpp \
+../kvs/kvi_kvs_treenode_specialcommand.cpp \
+../kvs/kvi_kvs_treenode_specialcommandbreak.cpp \
+../kvs/kvi_kvs_treenode_specialcommandclass.cpp \
+../kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp \
+../kvs/kvi_kvs_treenode_specialcommanddo.cpp \
+../kvs/kvi_kvs_treenode_specialcommandfor.cpp \
+../kvs/kvi_kvs_treenode_specialcommandforeach.cpp \
+../kvs/kvi_kvs_treenode_specialcommandif.cpp \
+../kvs/kvi_kvs_treenode_specialcommandswitch.cpp \
+../kvs/kvi_kvs_treenode_specialcommandunset.cpp \
+../kvs/kvi_kvs_treenode_specialcommandwhile.cpp \
+../kvs/kvi_kvs_treenode_stringcast.cpp \
+../kvs/kvi_kvs_treenode_switchlist.cpp \
+../kvs/kvi_kvs_treenode_thisobjectfunctioncall.cpp \
+../kvs/kvi_kvs_treenode_variable.cpp \
+../kvs/kvi_kvs_useraction.cpp \
+../kvs/kvi_kvs_variant.cpp \
+../kvs/kvi_kvs_variantlist.cpp \
+../kvs/kvi_kvs_treenode_voidfunctioncall.cpp \
+../module/kvi_mexlinkfilter.cpp \
+../module/kvi_mexserverimport.cpp ../module/kvi_mextoolbar.cpp \
+../module/kvi_module.cpp ../module/kvi_moduleextension.cpp ../module/kvi_modulemanager.cpp \
+../sparser/kvi_antispam.cpp ../sparser/kvi_ircmessage.cpp ../sparser/kvi_sparser.cpp \
+../sparser/kvi_sp_ctcp.cpp ../sparser/kvi_sp_literal.cpp ../sparser/kvi_sp_numeric.cpp \
+../sparser/kvi_sp_tables.cpp \
+../ui/kvi_actiondrawer.cpp \
+../ui/kvi_channel.cpp \
+../ui/kvi_colorwin.cpp \
+../ui/kvi_console.cpp \
+../ui/kvi_cryptcontroller.cpp \
+../ui/kvi_ctcppagedialog.cpp \
+../ui/kvi_customtoolbar.cpp \
+../ui/kvi_debugwindow.cpp \
+../ui/kvi_dynamictooltip.cpp \
+../ui/kvi_filedialog.cpp \
+../ui/kvi_frame.cpp \
+../ui/kvi_historywin.cpp \
+../ui/kvi_htmldialog.cpp \
+../ui/kvi_imagedialog.cpp \
+../ui/kvi_input.cpp \
+../ui/kvi_ipeditor.cpp \
+../ui/kvi_irctoolbar.cpp \
+../ui/kvi_ircview.cpp \
+../ui/kvi_ircviewtools.cpp \
+../ui/kvi_listview.cpp \
+../ui/kvi_maskeditor.cpp \
+../ui/kvi_mdicaption.cpp \
+../ui/kvi_mdichild.cpp \
+../ui/kvi_mdimanager.cpp \
+../ui/kvi_menubar.cpp \
+../ui/kvi_modeeditor.cpp \
+../ui/kvi_modew.cpp \
+../ui/kvi_msgbox.cpp \
+../ui/kvi_optionswidget.cpp \
+../ui/kvi_query.cpp \
+../ui/kvi_scriptbutton.cpp\
+../ui/kvi_scripteditor.cpp \
+../ui/kvi_selectors.cpp \
+../ui/kvi_splash.cpp \
+../ui/kvi_statusbar.cpp \
+../ui/kvi_statusbarapplet.cpp \
+../ui/kvi_taskbar.cpp \
+../ui/kvi_texticonwin.cpp \
+../ui/kvi_themedlabel.cpp \
+../ui/kvi_toolbar.cpp \
+../ui/kvi_toolwindows_container.cpp \
+../ui/kvi_topicw.cpp \
+../ui/kvi_styled_controls.cpp \
+../ui/kvi_userlistview.cpp \
+../ui/kvi_window.cpp
+
+#
+# Command useful to find out all the headers
+# rm -f ../include/*.h
+# SRC=`find ../ -name *.h | sort`
+# echo $SRC
+#
+
+
+headers_HEADERS = ../kernel/kvi_action.h \
+../kernel/kvi_actionmanager.h \
+../kernel/kvi_app.h \
+../kernel/kvi_asynchronousconnectiondata.h \
+../kernel/kvi_coreactions.h \
+../kernel/kvi_coreactionnames.h \
+../kernel/kvi_customtoolbardescriptor.h \
+../kernel/kvi_customtoolbarmanager.h \
+../kernel/kvi_filetransfer.h \
+../kernel/kvi_iconmanager.h \
+../kernel/kvi_internalcmd.h \
+../kernel/kvi_ipc.h \
+../kernel/kvi_ircdatastreammonitor.h \
+../kernel/kvi_ircconnection.h \
+../kernel/kvi_ircconnectionantictcpflooddata.h \
+../kernel/kvi_ircconnectionasyncwhoisdata.h \
+../kernel/kvi_ircconnectionnetsplitdetectordata.h \
+../kernel/kvi_ircconnectiontarget.h \
+../kernel/kvi_ircconnectiontargetresolver.h \
+../kernel/kvi_ircconnectionserverinfo.h \
+../kernel/kvi_ircconnectionstatedata.h \
+../kernel/kvi_ircconnectionstatistics.h \
+../kernel/kvi_ircconnectionuserinfo.h \
+../kernel/kvi_irccontext.h \
+../kernel/kvi_irclink.h \
+../kernel/kvi_ircsocket.h \
+../kernel/kvi_ircurl.h \
+../kernel/kvi_lagmeter.h \
+../kernel/kvi_notifylist.h \
+../kernel/kvi_options.h \
+../kernel/kvi_out.h \
+../kernel/kvi_sslmaster.h \
+../kernel/kvi_texticonmanager.h \
+../kernel/kvi_theme.h \
+../sparser/kvi_antispam.h \
+../sparser/kvi_ircmessage.h \
+../kernel/kvi_useraction.h \
+../kernel/kvi_userinput.h \
+../kvs/kvi_kvs.h \
+../kvs/kvi_kvs_action.h \
+../kvs/kvi_kvs_aliasmanager.h \
+../kvs/kvi_kvs_array.h \
+../kvs/kvi_kvs_arraycast.h \
+../kvs/kvi_kvs_asyncdnsoperation.h \
+../kvs/kvi_kvs_asyncoperation.h \
+../kvs/kvi_kvs_callbackobject.h \
+../kvs/kvi_kvs_corecallbackcommands.h \
+../kvs/kvi_kvs_corefunctions.h \
+../kvs/kvi_kvs_coresimplecommands.h \
+../kvs/kvi_kvs_dnsmanager.h \
+../kvs/kvi_kvs_event.h \
+../kvs/kvi_kvs_eventhandler.h \
+../kvs/kvi_kvs_eventmanager.h \
+../kvs/kvi_kvs_eventtriggers.h \
+../kvs/kvi_kvs_eventtable.h \
+../kvs/kvi_kvs_hash.h \
+../kvs/kvi_kvs_kernel.h \
+../kvs/kvi_kvs_moduleinterface.h \
+../kvs/kvi_kvs_object.h \
+../kvs/kvi_kvs_object_class.h \
+../kvs/kvi_kvs_object_controller.h \
+../kvs/kvi_kvs_object_functioncall.h \
+../kvs/kvi_kvs_object_functionhandler.h \
+../kvs/kvi_kvs_object_functionhandlerimpl.h \
+../kvs/kvi_kvs_parameterprocessor.h \
+../kvs/kvi_kvs_parser.h \
+../kvs/kvi_kvs_parser_macros.h \
+../kvs/kvi_kvs_popupmanager.h \
+../kvs/kvi_kvs_popupmenu.h \
+../kvs/kvi_kvs_processmanager.h \
+../kvs/kvi_kvs_report.h \
+../kvs/kvi_kvs_runtimecall.h \
+../kvs/kvi_kvs_runtimecontext.h \
+../kvs/kvi_kvs_rwevaluationresult.h \
+../kvs/kvi_kvs_script.h \
+../kvs/kvi_kvs_scriptaddonmanager.h \
+../kvs/kvi_kvs_switchlist.h \
+../kvs/kvi_kvs_timermanager.h \
+../kvs/kvi_kvs_treenode.h \
+../kvs/kvi_kvs_treenode_aliasfunctioncall.h \
+../kvs/kvi_kvs_treenode_aliassimplecommand.h \
+../kvs/kvi_kvs_treenode_arraycount.h \
+../kvs/kvi_kvs_treenode_arrayelement.h \
+../kvs/kvi_kvs_treenode_arrayorhashelement.h \
+../kvs/kvi_kvs_treenode_arrayreferenceassert.h \
+../kvs/kvi_kvs_treenode_base.h \
+../kvs/kvi_kvs_treenode_baseobjectfunctioncall.h \
+../kvs/kvi_kvs_treenode_callbackcommand.h \
+../kvs/kvi_kvs_treenode_command.h \
+../kvs/kvi_kvs_treenode_commandevaluation.h \
+../kvs/kvi_kvs_treenode_commandwithparameters.h \
+../kvs/kvi_kvs_treenode_compositedata.h \
+../kvs/kvi_kvs_treenode_constantdata.h \
+../kvs/kvi_kvs_treenode_corecallbackcommand.h \
+../kvs/kvi_kvs_treenode_corefunctioncall.h \
+../kvs/kvi_kvs_treenode_coresimplecommand.h \
+../kvs/kvi_kvs_treenode_data.h \
+../kvs/kvi_kvs_treenode_datalist.h \
+../kvs/kvi_kvs_treenode_expression.h \
+../kvs/kvi_kvs_treenode_expressionreturn.h \
+../kvs/kvi_kvs_treenode_extendedscopevariable.h \
+../kvs/kvi_kvs_treenode_functioncall.h \
+../kvs/kvi_kvs_treenode_globalvariable.h \
+../kvs/kvi_kvs_treenode_hashcount.h \
+../kvs/kvi_kvs_treenode_hashelement.h \
+../kvs/kvi_kvs_treenode_hashreferenceassert.h \
+../kvs/kvi_kvs_treenode_indirectdata.h \
+../kvs/kvi_kvs_treenode_instruction.h \
+../kvs/kvi_kvs_treenode_instructionblock.h \
+../kvs/kvi_kvs_treenode_localvariable.h \
+../kvs/kvi_kvs_treenode_modulecallbackcommand.h \
+../kvs/kvi_kvs_treenode_modulefunctioncall.h \
+../kvs/kvi_kvs_treenode_modulesimplecommand.h \
+../kvs/kvi_kvs_treenode_multipleparameteridentifier.h \
+../kvs/kvi_kvs_treenode_objectfield.h \
+../kvs/kvi_kvs_treenode_objectfunctioncall.h \
+../kvs/kvi_kvs_treenode_operation.h \
+../kvs/kvi_kvs_treenode_parameterreturn.h \
+../kvs/kvi_kvs_treenode_rebindingswitch.h \
+../kvs/kvi_kvs_treenode_scopeoperator.h \
+../kvs/kvi_kvs_treenode_simplecommand.h \
+../kvs/kvi_kvs_treenode_singleparameteridentifier.h \
+../kvs/kvi_kvs_treenode_specialcommand.h \
+../kvs/kvi_kvs_treenode_specialcommandbreak.h \
+../kvs/kvi_kvs_treenode_specialcommandclass.h \
+../kvs/kvi_kvs_treenode_specialcommanddefpopup.h \
+../kvs/kvi_kvs_treenode_specialcommanddo.h \
+../kvs/kvi_kvs_treenode_specialcommandfor.h \
+../kvs/kvi_kvs_treenode_specialcommandforeach.h \
+../kvs/kvi_kvs_treenode_specialcommandif.h \
+../kvs/kvi_kvs_treenode_specialcommandswitch.h \
+../kvs/kvi_kvs_treenode_specialcommandunset.h \
+../kvs/kvi_kvs_treenode_specialcommandwhile.h \
+../kvs/kvi_kvs_treenode_stringcast.h \
+../kvs/kvi_kvs_treenode_switchlist.h \
+../kvs/kvi_kvs_treenode_thisobjectfunctioncall.h \
+../kvs/kvi_kvs_treenode_variable.h \
+../kvs/kvi_kvs_treenode_voidfunctioncall.h \
+../kvs/kvi_kvs_types.h \
+../kvs/kvi_kvs_useraction.h \
+../kvs/kvi_kvs_variant.h \
+../kvs/kvi_kvs_variantlist.h \
+../module/kvi_mexlinkfilter.h ../module/kvi_mexserverimport.h ../module/kvi_mextoolbar.h \
+../module/kvi_module.h ../module/kvi_moduleextension.h ../module/kvi_modulemanager.h \
+../sparser/kvi_numeric.h \
+../sparser/kvi_sparser.h \
+../ui/kvi_actiondrawer.h \
+../ui/kvi_channel.h \
+../ui/kvi_colorwin.h \
+../ui/kvi_console.h \
+../ui/kvi_cryptcontroller.h \
+../ui/kvi_ctcppagedialog.h \
+../ui/kvi_customtoolbar.h \
+../ui/kvi_debugwindow.h \
+../ui/kvi_dynamictooltip.h \
+../ui/kvi_filedialog.h \
+../ui/kvi_frame.h \
+../ui/kvi_historywin.h \
+../ui/kvi_htmldialog.h \
+../ui/kvi_imagedialog.h \
+../ui/kvi_input.h \
+../ui/kvi_ipeditor.h \
+../ui/kvi_irctoolbar.h \
+../ui/kvi_ircview.h \
+../ui/kvi_ircviewprivate.h \
+../ui/kvi_ircviewtools.h \
+../ui/kvi_listview.h \
+../ui/kvi_maskeditor.h \
+../ui/kvi_mdicaption.h \
+../ui/kvi_mdichild.h \
+../ui/kvi_mdimanager.h \
+../ui/kvi_menubar.h \
+../ui/kvi_modeeditor.h \
+../ui/kvi_msgbox.h \
+../ui/kvi_optionswidget.h \
+../ui/kvi_query.h \
+../ui/kvi_scriptbutton.h \
+../ui/kvi_scripteditor.h \
+../ui/kvi_selectors.h \
+../ui/kvi_splash.h \
+../ui/kvi_statusbar.h \
+../ui/kvi_statusbarapplet.h \
+../ui/kvi_taskbar.h ../ui/kvi_texticonwin.h ../ui/kvi_themedlabel.h \
+../ui/kvi_toolbar.h ../ui/kvi_topicw.h ../ui/kvi_userlistview.h \
+../ui/kvi_window.h \
+../ui/kvi_modew.h \
+../ui/kvi_styled_controls.h \
+../ui/kvi_toolwindows_container.h
+
+%.moc: %.h
+ $(SS_QT_MOC) $(SS_QT_MOC_FLAGS) $< -o $@
+
+# Command useful to find the moc dependancies
+# DIRS="kernel sparser ui uparser"
+# for dire in $DIRS; do grep "\.moc" ../$dire/*.cpp | sort | sed -e 's/[[:space:]]*#include//' | sed -e s/\\\"/..\\\/$dire\\\// | sed -e 's/\"//'; done
+
+../kernel/kvi_app.cpp: ../kernel/kvi_app.moc
+../kernel/kvi_iconmanager.cpp: ../kernel/kvi_iconmanager.moc
+../kernel/kvi_ipc.cpp: ../kernel/kvi_ipc.moc
+../kernel/kvi_lagmeter.cpp: ../kernel/kvi_lagmeter.moc
+../kernel/kvi_notifylist.cpp: ../kernel/kvi_notifylist.moc
+../kernel/kvi_texticonmanager.cpp: ../kernel/kvi_texticonmanager.moc
+../sparser/kvi_sparser.cpp: ../sparser/kvi_sparser.moc
+../ui/kvi_channel.cpp: ../ui/kvi_channel.moc
+../ui/kvi_colorwin.cpp: ../ui/kvi_colorwin.moc
+../ui/kvi_console.cpp: ../ui/kvi_console.moc
+../ui/kvi_cryptcontroller.cpp: ../ui/kvi_cryptcontroller.moc
+../ui/kvi_ctcppagedialog.cpp: ../ui/kvi_ctcppagedialog.moc
+../ui/kvi_dynamictooltip.cpp: ../ui/kvi_dynamictooltip.moc
+../ui/kvi_filedialog.cpp: ../ui/kvi_filedialog.moc
+../ui/kvi_frame.cpp: ../ui/kvi_frame.moc
+../ui/kvi_historywin.cpp: ../ui/kvi_historywin.moc
+../ui/kvi_input.cpp: ../ui/kvi_input.moc
+../ui/kvi_ipeditor.cpp: ../ui/kvi_ipeditor.moc
+../ui/kvi_irctoolbar.cpp: ../ui/kvi_irctoolbar.moc
+../ui/kvi_ircview.cpp: ../ui/kvi_ircview.moc
+../ui/kvi_maskeditor.cpp: ../ui/kvi_maskeditor.moc
+../ui/kvi_menubar.cpp: ../ui/kvi_menubar.moc
+../ui/kvi_modeeditor.cpp: ../ui/kvi_modeeditor.moc
+../ui/kvi_optionswidget.cpp: ../ui/kvi_optionswidget.moc
+../ui/kvi_query.cpp: ../ui/kvi_query.moc
+../ui/kvi_scriptbutton.cpp: ../ui/kvi_scriptbutton.moc
+../ui/kvi_scripteditor.cpp: ../ui/kvi_scripteditor.moc
+../ui/kvi_selectors.cpp: ../ui/kvi_selectors.moc
+../ui/kvi_splash.cpp: ../ui/kvi_splash.moc
+../ui/kvi_taskbar.cpp: ../ui/kvi_taskbar.moc
+../ui/kvi_texticonwin.cpp: ../ui/kvi_texticonwin.moc
+../ui/kvi_themedlabel.cpp: ../ui/kvi_themedlabel.moc
+../ui/kvi_toolbar.cpp: ../ui/kvi_toolbar.moc
+../ui/kvi_topicw.cpp: ../ui/kvi_topicw.moc
+../ui/kvi_modew.cpp: ../ui/kvi_modew.moc
+../ui/kvi_styled_controls.cpp: ../ui/kvi_styled_controls.moc
+../ui/kvi_userlistview.cpp: ../ui/kvi_userlistview.moc
+../ui/kvi_window.cpp: ../ui/kvi_window.moc
+
+
+../kvs/moc_%.cpp: ../kvs/%.h
+ $(SS_QT_MOC) $(SS_QT_MOC_FLAGS) $< -o $@
+
+../kernel/moc_%.cpp: ../kernel/%.h
+ $(SS_QT_MOC) $(SS_QT_MOC_FLAGS) $< -o $@
+
+../module/moc_%.cpp: ../module/%.h
+ $(SS_QT_MOC) $(SS_QT_MOC_FLAGS) $< -o $@
+
+../ui/moc_%.cpp: ../ui/%.h
+ $(SS_QT_MOC) $(SS_QT_MOC_FLAGS) $< -o $@
+
+
+#
+# All the cpp files depend on symlinks beging up-to-date
+#
+
+../*/kvi_*.cpp: symlinks
+../*/*/kvi_*.cpp: symlinks
+
+#
+# Symlinks depend on all the header files: symlink is rebuilt whenewer an *.h file changes
+#
+
+symlinks: ../kernel/*.h ../kvs/*.h ../module/*h ../sparser/*.h ../ui/*.h
+ cd ../include; for i in kvi_*.h; do if [ ! -f $$i ]; then rm -f $$i; fi; done; for i in $(SS_TOPSRCDIR)/src/kvirc/*/kvi_*.h; do $(LN_S) $$i . >/dev/null 2>&1; echo "Created link to $$i"; done
+ touch symlinks
+
+#
+# When cleaning...remove also the symlinks
+#
+
+CLEANFILES = ../include/*.h symlinks ../*/*.moc ../*/moc_kvi_*.cpp
diff --git a/src/kvirc/include/Makefile.am b/src/kvirc/include/Makefile.am
new file mode 100644
index 00000000..6847f085
--- /dev/null
+++ b/src/kvirc/include/Makefile.am
@@ -0,0 +1,3 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
diff --git a/src/kvirc/kernel/Makefile.am b/src/kvirc/kernel/Makefile.am
new file mode 100644
index 00000000..c84487eb
--- /dev/null
+++ b/src/kvirc/kernel/Makefile.am
@@ -0,0 +1,5 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+EXTRA_DIST = *.cpp *.h
diff --git a/src/kvirc/kernel/kvi_action.cpp b/src/kvirc/kernel/kvi_action.cpp
new file mode 100644
index 00000000..4764fcfd
--- /dev/null
+++ b/src/kvirc/kernel/kvi_action.cpp
@@ -0,0 +1,434 @@
+//=============================================================================
+//
+// File : kvi_action.cpp
+// Created on Sun 21 Nov 2004 03:36:34 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_action.h"
+#include "kvi_customtoolbar.h"
+#include "kvi_frame.h"
+#include "kvi_irccontext.h"
+#include "kvi_ircconnection.h"
+#include "kvi_iconmanager.h"
+#include "kvi_app.h"
+#include "kvi_window.h"
+#include "kvi_channel.h"
+#include "kvi_console.h"
+#include "kvi_query.h"
+#include "kvi_styled_controls.h"
+
+#include <qtoolbutton.h>
+#include "kvi_tal_popupmenu.h"
+
+
+KviAction::~KviAction()
+{
+ if(m_pWidgetList)
+ {
+ for(QWidget * b = m_pWidgetList->first();b;b = m_pWidgetList->next())
+ disconnect(b,SIGNAL(destroyed()),this,SLOT(widgetDestroyed()));
+ m_pWidgetList->setAutoDelete(true);
+ delete m_pWidgetList;
+ }
+}
+
+const QString & KviAction::visibleName()
+{
+ return m_szVisibleName;
+}
+
+const QString & KviAction::description()
+{
+ return m_szDescription;
+}
+
+bool KviAction::isKviUserActionNeverOverrideThis()
+{
+ return false;
+}
+
+void KviAction::registerAccelerator()
+{
+ if(!m_szKeySequence.isEmpty())
+ m_iAccelId = g_pFrame->registerAccelerator(m_szKeySequence,this,SLOT(activate()));
+}
+
+void KviAction::unregisterAccelerator()
+{
+ if(m_iAccelId != 0)
+ {
+ if(g_pFrame)
+ g_pFrame->unregisterAccelerator(m_iAccelId);
+ m_iAccelId = 0;
+ }
+}
+
+void KviAction::setEnabled(bool bEnabled)
+{
+ if(bEnabled)
+ m_uInternalFlags |= KVI_ACTION_FLAG_ENABLED;
+ else
+ m_uInternalFlags &= ~KVI_ACTION_FLAG_ENABLED;
+
+ if(m_pWidgetList)
+ {
+ if(bEnabled)
+ {
+ for(QWidget * t = m_pWidgetList->first();t;t = m_pWidgetList->next())
+ if(!t->isEnabled())t->setEnabled(true);
+ } else {
+ for(QWidget * t = m_pWidgetList->first();t;t = m_pWidgetList->next())
+ if(t->isEnabled())t->setEnabled(false);
+ }
+ }
+}
+
+int KviAction::validateFlags(int iFlagsToValidate)
+{
+ if(iFlagsToValidate & EnableAtLogin)
+ iFlagsToValidate |= NeedsConnection;
+ if(iFlagsToValidate & NeedsConnection)
+ iFlagsToValidate |= NeedsContext;
+ if(iFlagsToValidate & WindowOnlyIfUsersSelected)
+ {
+ if(!(iFlagsToValidate & InternalWindowMask))
+ iFlagsToValidate &= ~WindowOnlyIfUsersSelected;
+ }
+ return iFlagsToValidate;
+}
+
+QPixmap * KviAction::smallIcon()
+{
+ if(m_iSmallIconId != 0)return g_pIconManager->getSmallIcon(m_iSmallIconId);
+ return 0;
+}
+
+QPixmap * KviAction::bigIcon()
+{
+ return g_pIconManager->getBigIcon(m_szBigIcon);
+}
+
+void KviAction::setup()
+{
+ connect(g_pApp,SIGNAL(reloadImages()),this,SLOT(reloadImages()));
+ if(m_uFlags & InternalWindowMask)
+ {
+ connect(g_pFrame,SIGNAL(activeWindowChanged()),this,SLOT(activeWindowChanged()));
+ if((m_uFlags & WindowOnlyIfUsersSelected) && (m_uFlags & (WindowChannel | WindowConsole | WindowQuery)))
+ connect(g_pFrame,SIGNAL(activeWindowSelectionStateChanged(bool)),this,SLOT(activeWindowSelectionStateChanged(bool)));
+ activeWindowChanged();
+ } else {
+ if(m_uFlags & NeedsConnection)
+ {
+ connect(g_pFrame,SIGNAL(activeContextChanged()),this,SLOT(activeContextChanged()));
+ connect(g_pFrame,SIGNAL(activeContextStateChanged()),this,SLOT(activeContextStateChanged()));
+ KviIrcContext * c = g_pFrame->activeContext();
+ if(!c)setEnabled(false);
+ else {
+ switch(c->state())
+ {
+ case KviIrcContext::LoggingIn:
+ setEnabled(m_uFlags & EnableAtLogin);
+ break;
+ case KviIrcContext::Connected:
+ setEnabled(true);
+ break;
+ default:
+ setEnabled(false);
+ break;
+ }
+ }
+ } else {
+ if(m_uFlags & NeedsContext)
+ {
+ connect(g_pFrame,SIGNAL(activeContextChanged()),this,SLOT(activeContextChanged()));
+ if(!g_pFrame->activeContext())setEnabled(false);
+ else setEnabled(true);
+ }
+ }
+ }
+
+ m_uInternalFlags |= KVI_ACTION_FLAG_SETUPDONE;
+}
+
+
+void KviAction::reloadImages()
+{
+ if(!m_pWidgetList)return;
+ QPixmap * p = bigIcon();
+ for(QWidget * b = m_pWidgetList->first();b;b = m_pWidgetList->next())
+ {
+ if(b->inherits("QToolButton"))
+ ((QToolButton *)b)->setIconSet(p ? *p : QPixmap());
+ }
+}
+
+void KviAction::activeWindowChanged()
+{
+ if(m_uFlags & NeedsContext)
+ {
+ if(!g_pFrame->activeContext())
+ {
+ if(isEnabled())setEnabled(false);
+ return;
+ }
+ }
+
+ if(m_uFlags & NeedsConnection)
+ {
+ switch(g_pFrame->activeContext()->state())
+ {
+ case KviIrcContext::LoggingIn:
+ if(!(m_uFlags & EnableAtLogin))
+ {
+ if(isEnabled())setEnabled(false);
+ return;
+ }
+ break;
+ case KviIrcContext::Connected:
+ // this is ok
+ break;
+ default:
+ if(isEnabled())setEnabled(false);
+ return;
+ break;
+ }
+ }
+
+ if(!g_pActiveWindow)
+ {
+ if(isEnabled())setEnabled(false);
+ return;
+ }
+
+ switch(g_pActiveWindow->type())
+ {
+ case KVI_WINDOW_TYPE_CONSOLE:
+ if(m_uFlags & WindowConsole)
+ {
+ if(m_uFlags & WindowOnlyIfUsersSelected)
+ {
+ bool bEnabled = ((KviConsole *)g_pActiveWindow)->selectedCount() > 0;
+ if(bEnabled != isEnabled())setEnabled(bEnabled);
+ } else {
+ if(!isEnabled())setEnabled(true);
+ }
+ } else {
+ if(isEnabled())setEnabled(false);
+ }
+ break;
+ case KVI_WINDOW_TYPE_CHANNEL:
+ if(m_uFlags & WindowChannel)
+ {
+ if(m_uFlags & WindowOnlyIfUsersSelected)
+ {
+ bool bEnabled = ((KviChannel *)g_pActiveWindow)->selectedCount() > 0;
+ if(bEnabled != isEnabled())setEnabled(bEnabled);
+ } else {
+ if(!isEnabled())setEnabled(true);
+ }
+ } else {
+ if(isEnabled())setEnabled(false);
+ }
+ break;
+ case KVI_WINDOW_TYPE_QUERY:
+ if(m_uFlags & WindowQuery)
+ {
+ if(m_uFlags & WindowOnlyIfUsersSelected)
+ {
+ bool bEnabled = ((KviQuery *)g_pActiveWindow)->selectedCount() > 0;
+ if(bEnabled != isEnabled())setEnabled(bEnabled);
+ } else {
+ if(!isEnabled())setEnabled(true);
+ }
+ } else {
+ if(isEnabled())setEnabled(false);
+ }
+ break;
+ case KVI_WINDOW_TYPE_DCCCHAT:
+ if(m_uFlags & WindowDccChat)
+ {
+ if(!isEnabled())setEnabled(true);
+ } else {
+ if(isEnabled())setEnabled(false);
+ }
+ break;
+ default:
+ if(m_uFlags & InternalWindowMask)
+ if(isEnabled())setEnabled(false);
+ else
+ if(!isEnabled())setEnabled(true);
+ break;
+ }
+}
+
+
+void KviAction::activeWindowSelectionStateChanged(bool bSelectedNow)
+{
+ // we jump here ONLY if m_uFlags & WindowOnlyIfUsersSelected
+ // and thus also m_uFlags & InternalWindowMask
+ switch(g_pActiveWindow->type())
+ {
+ case KVI_WINDOW_TYPE_CONSOLE:
+ if(m_uFlags & WindowConsole)
+ {
+ if(bSelectedNow != isEnabled())setEnabled(bSelectedNow);
+ } else {
+ if(isEnabled())setEnabled(false);
+ }
+ break;
+ case KVI_WINDOW_TYPE_CHANNEL:
+ if(m_uFlags & WindowChannel)
+ {
+ if(bSelectedNow != isEnabled())setEnabled(bSelectedNow);
+ } else {
+ if(isEnabled())setEnabled(false);
+ }
+ break;
+ case KVI_WINDOW_TYPE_QUERY:
+ if(m_uFlags & WindowQuery)
+ {
+ if(bSelectedNow != isEnabled())setEnabled(bSelectedNow);
+ } else {
+ if(isEnabled())setEnabled(false);
+ }
+ break;
+ case KVI_WINDOW_TYPE_DCCCHAT:
+ if(m_uFlags & WindowDccChat)
+ {
+ if(!isEnabled())setEnabled(true);
+ } else {
+ if(isEnabled())setEnabled(false);
+ }
+ break;
+ default:
+ if(isEnabled())setEnabled(false);
+ break;
+ }
+}
+
+
+void KviAction::activeContextChanged()
+{
+ // works only if NeedsContext is specified!
+ KviIrcContext * c = g_pFrame->activeContext();
+ if(c)
+ {
+ if(m_uFlags & NeedsConnection)
+ activeContextStateChanged();
+ else
+ if(!isEnabled())setEnabled(true);
+ } else {
+ if(isEnabled())setEnabled(false);
+ }
+}
+
+void KviAction::activeContextStateChanged()
+{
+ KviIrcContext * c = g_pFrame->activeContext();
+ if(c)
+ {
+ switch(c->state())
+ {
+ case KviIrcContext::Idle:
+ case KviIrcContext::Connecting:
+ if(isEnabled())setEnabled(false);
+ break;
+ case KviIrcContext::LoggingIn:
+ if(m_uFlags & EnableAtLogin)
+ {
+ if(!isEnabled())setEnabled(true);
+ } else {
+ if(isEnabled())setEnabled(false);
+ }
+ break;
+ case KviIrcContext::Connected:
+ if(!isEnabled())setEnabled(true);
+ break;
+ default:
+ if(isEnabled())setEnabled(false);
+ break;
+ }
+ } else {
+ if(isEnabled())setEnabled(false);
+ }
+}
+
+bool KviAction::addToPopupMenu(KviTalPopupMenu *pMenu)
+{
+ if(!setupDone())setup();
+ QPixmap * p = smallIcon();
+ int id;
+ QString t = visibleName();
+ if(!m_szKeySequence.isEmpty())t += '\t' + m_szKeySequence;
+ if(p)
+ {
+ id = pMenu->insertItem(*p,t,this,SLOT(activate()));
+ } else {
+ id = pMenu->insertItem(t,this,SLOT(activate()));
+ }
+ if(!isEnabled())pMenu->setItemEnabled(id,false);
+ return true;
+}
+
+void KviAction::widgetDestroyed()
+{
+ if(!m_pWidgetList)return;
+ QWidget * b = (QWidget *)sender();
+ m_pWidgetList->removeRef(b);
+}
+
+void KviAction::registerWidget(QWidget * b)
+{
+ connect(b,SIGNAL(destroyed()),this,SLOT(widgetDestroyed()));
+ if(!m_pWidgetList)
+ {
+ m_pWidgetList = new KviPointerList<QWidget>;
+ m_pWidgetList->setAutoDelete(false);
+ }
+ m_pWidgetList->append(b);
+}
+
+QWidget * KviAction::addToCustomToolBar(KviCustomToolBar *pParentToolBar)
+{
+ if(!setupDone())setup();
+ QPixmap * p = bigIcon();
+ QToolButton * b = new KviStyledToolButton(
+ p ? *p : QPixmap(),
+ visibleName(),
+ visibleName(),
+ this,SLOT(activate()),pParentToolBar,m_szName);
+#ifdef COMPILE_USE_QT4
+ pParentToolBar->addWidget(b);
+#endif
+ if(!isEnabled())b->setEnabled(false);
+ registerWidget(b);
+ return b;
+}
+
+void KviAction::activate()
+{
+ if(isEnabled())
+ emit activated();
+}
+
diff --git a/src/kvirc/kernel/kvi_action.h b/src/kvirc/kernel/kvi_action.h
new file mode 100644
index 00000000..18669634
--- /dev/null
+++ b/src/kvirc/kernel/kvi_action.h
@@ -0,0 +1,157 @@
+#ifndef _KVI_ACTION_H_
+#define _KVI_ACTION_H_
+//=============================================================================
+//
+// File : kvi_action.h
+// Created on Sun 21 Nov 2004 03:36:34 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_pointerlist.h"
+
+#include <qobject.h>
+#include <qstring.h>
+
+// The action name is INTERNAL: it should be never shown to the user
+// if it contains a dot then the part before the dot is considered to
+// be a module name to be loaded when the
+
+// Known categories are: general (or empty), irc, script
+//
+
+class KviTalPopupMenu;
+class QWidget;
+class KviCustomToolBar;
+class QPixmap;
+class KviKvsScript;
+
+class KVIRC_API KviActionCategory
+{
+protected:
+ QString m_szName;
+ QString m_szVisibleName;
+ QString m_szDescription;
+public:
+ KviActionCategory(const QString &szName,const QString &szVisibleName,const QString &szDescription)
+ : m_szName(szName), m_szVisibleName(szVisibleName), m_szDescription(szDescription) {};
+ ~KviActionCategory(){};
+public:
+ const QString & name(){ return m_szName; };
+ const QString & visibleName(){ return m_szVisibleName; };
+ const QString & description(){ return m_szDescription; };
+};
+
+// these flags are INTERNAL
+#define KVI_ACTION_FLAG_ENABLED 1
+#define KVI_ACTION_FLAG_SETUPDONE 2
+
+class KVIRC_API KviAction : public QObject
+{
+ friend class KviActionManager;
+ Q_OBJECT
+protected:
+ QString m_szName; // the internal name of the action, must be in form [module.]name
+ QString m_szVisibleName;
+ QString m_szDescription;
+ KviActionCategory * m_pCategory; // may be 0, not owned!
+ QString m_szBigIcon;
+ int m_iSmallIconId;
+ KviPointerList<QWidget> * m_pWidgetList;
+ unsigned short int m_uInternalFlags;
+ unsigned int m_uFlags;
+ QString m_szKeySequence;
+ int m_iAccelId;
+public:
+ enum Flags {
+ NeedsContext = 1,
+ NeedsConnection = 2, // implies NeedsContext
+ WindowConsole = 4,
+ WindowChannel = 8,
+ WindowQuery = 16,
+ WindowDccChat = 32,
+ InternalWindowMask = WindowConsole | WindowChannel | WindowQuery | WindowDccChat,
+ EnableAtLogin = 64, // implies NeedsConnection
+ WindowOnlyIfUsersSelected = 128 // implies at least one of WindowConsole | WindowChannel | WindowQuery
+ };
+public:
+ KviAction(QObject * pParent, // can be 0, but using a QObject will help in deleting this action :)
+ const QString &szName, // internal name of this action, in form [module.]name
+ const QString &szVisibleName, // permanent visible name, visible at least in the action drawer
+ const QString &szDescription, // what this action does ?
+ KviActionCategory * pCategory = 0, // one of KviActionManager::category*() or 0 (default category)
+ const QString &szBigIcon = QString::null,
+ int iSmallIconId = 0,
+ unsigned int uFlags = 0,
+ const QString &szKeySequence = QString::null)
+ : QObject(pParent),
+ m_szName(szName),
+ m_szVisibleName(szVisibleName),
+ m_szDescription(szDescription),
+ m_pCategory(pCategory),
+ m_szBigIcon(szBigIcon),
+ m_iSmallIconId(iSmallIconId),
+ m_pWidgetList(0),
+ m_uInternalFlags(KVI_ACTION_FLAG_ENABLED),
+ m_uFlags(uFlags),
+ m_szKeySequence(szKeySequence),
+ m_iAccelId(0) {}
+ virtual ~KviAction();
+public:
+ static int validateFlags(int iFlagsToValidate);
+ const QString & name() const { return m_szName; };
+ virtual const QString & visibleName();
+ virtual const QString & description();
+ const QString & keySequence() const { return m_szKeySequence; };
+ const QString & bigIconString() const { return m_szBigIcon; };
+ KviActionCategory * category() const { return m_pCategory; };
+ bool isEnabled() const { return (m_uInternalFlags & KVI_ACTION_FLAG_ENABLED); };
+ unsigned int flags(){ return m_uFlags; };
+ virtual bool isKviUserActionNeverOverrideThis();
+ virtual void setEnabled(bool bEnabled);
+ virtual QPixmap * smallIcon();
+ virtual QPixmap * bigIcon();
+ virtual bool addToPopupMenu(KviTalPopupMenu *pMenu);
+ virtual QWidget * addToCustomToolBar(KviCustomToolBar *pParentToolBar);
+ void suicide() { delete this; };
+protected:
+ // called once before the FIRST button or menu item is created
+ bool setupDone() const { return (m_uInternalFlags & KVI_ACTION_FLAG_SETUPDONE); };
+ virtual void setup();
+ KviPointerList<QWidget> * widgetList(){ return m_pWidgetList; };
+ void registerAccelerator();
+ void unregisterAccelerator();
+ void registerWidget(QWidget * b);
+protected slots:
+ virtual void widgetDestroyed();
+ virtual void reloadImages();
+ virtual void activeContextChanged();
+ virtual void activeContextStateChanged();
+ virtual void activeWindowChanged();
+ virtual void activeWindowSelectionStateChanged(bool bSelectedNow);
+public slots:
+ virtual void activate();
+signals:
+ void activated();
+};
+
+
+
+#endif //!_KVI_ACTION_H_
diff --git a/src/kvirc/kernel/kvi_actionmanager.cpp b/src/kvirc/kernel/kvi_actionmanager.cpp
new file mode 100644
index 00000000..3a325a6e
--- /dev/null
+++ b/src/kvirc/kernel/kvi_actionmanager.cpp
@@ -0,0 +1,321 @@
+//=============================================================================
+//
+// File : kvi_actionmanager.cpp
+// Created on Sun 21 Nov 2004 03:37:57 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_actionmanager.h"
+#include "kvi_modulemanager.h"
+#include "kvi_coreactions.h"
+#include "kvi_customtoolbar.h"
+#include "kvi_customtoolbarmanager.h"
+#include "kvi_app.h"
+#include "kvi_locale.h"
+#include "kvi_kvs_useraction.h"
+#include "kvi_config.h"
+#include "kvi_qstring.h"
+#include "kvi_frame.h"
+
+KviActionManager * KviActionManager::m_pInstance = 0;
+KviActionCategory * KviActionManager::m_pCategoryIrc = 0;
+KviActionCategory * KviActionManager::m_pCategoryGeneric = 0;
+KviActionCategory * KviActionManager::m_pCategorySettings = 0;
+KviActionCategory * KviActionManager::m_pCategoryScripting = 0;
+KviActionCategory * KviActionManager::m_pCategoryGUI = 0;
+KviActionCategory * KviActionManager::m_pCategoryChannel = 0;
+KviActionCategory * KviActionManager::m_pCategoryTools = 0;
+bool KviActionManager::m_bCustomizingToolBars = false;
+KviCustomToolBar * KviActionManager::m_pCurrentToolBar = 0;
+// kvi_coreactions.cpp
+extern void register_core_actions(KviActionManager *);
+
+KviActionManager::KviActionManager()
+: QObject()
+{
+ m_pActions = new KviPointerHashTable<QString,KviAction>(101);
+ m_pActions->setAutoDelete(false);
+
+ m_pCategories = new KviPointerHashTable<QString,KviActionCategory>(17,false);
+ m_pCategories->setAutoDelete(true);
+
+#define CATEGORY(__var,__name,__vname,__descr) \
+ __var = new KviActionCategory(__name,__vname,__descr); \
+ m_pCategories->replace(__name,__var)
+
+ CATEGORY(m_pCategoryIrc,"irc",__tr2qs("IRC"),__tr2qs("IRC Context related actions"));
+ CATEGORY(m_pCategoryGeneric,"generic",__tr2qs("Generic"),__tr2qs("Generic actions"));
+ CATEGORY(m_pCategorySettings,"settings",__tr2qs("Settings"),__tr2qs("Actions related to settings"));
+ CATEGORY(m_pCategoryScripting,"scripting",__tr2qs("Scripting"),__tr2qs("Scripting related actions"));
+ CATEGORY(m_pCategoryGUI,"gui",__tr2qs("GUI"),__tr2qs("Actions related to the Graphic User Interface"));
+ CATEGORY(m_pCategoryChannel,"channel",__tr2qs("Channel"),__tr2qs("IRC Channel related actions"));
+ CATEGORY(m_pCategoryTools,"tools",__tr2qs("Tools"),__tr2qs("Actions that will appear in the \"Tools\" menu"));
+
+ m_bCustomizingToolBars = false;
+ m_pCurrentToolBar = 0;
+ m_bCoreActionsRegistered = false;
+}
+
+KviActionManager::~KviActionManager()
+{
+ // the customizeToolBars dialog has been already
+ // destroyed since the module manager has already
+ // killed all the modules at this point...
+ //KviActionDialog::cleanup();
+
+ KviPointerHashTableIterator<QString,KviAction> it(*m_pActions);
+ while(KviAction * a = it.current())
+ {
+ disconnect(a,SIGNAL(destroyed()),this,SLOT(actionDestroyed()));
+ ++it;
+ }
+ delete m_pActions;
+
+ delete m_pCategories;
+}
+
+void KviActionManager::load(const QString &szFileName)
+{
+ KviConfig cfg(szFileName,KviConfig::Read);
+
+ KviConfigIterator it(*(cfg.dict()));
+ while(it.current())
+ {
+ cfg.setGroup(it.currentKey());
+ KviKvsUserAction * a = new KviKvsUserAction(this);
+ if(a->load(&cfg))registerAction(a);
+ else delete a;
+ ++it;
+ }
+}
+
+void KviActionManager::save(const QString &szFileName)
+{
+ KviConfig cfg(szFileName,KviConfig::Write);
+ cfg.clear();
+
+ KviPointerHashTableIterator<QString,KviAction> it(*m_pActions);
+ while(KviAction * a = it.current())
+ {
+ if(a->isKviUserActionNeverOverrideThis())
+ {
+ cfg.setGroup(a->name());
+ ((KviKvsUserAction *)a)->save(&cfg);
+ }
+ ++it;
+ }
+}
+
+void KviActionManager::killAllKvsUserActions()
+{
+ KviPointerList<KviKvsUserAction> dying;
+ dying.setAutoDelete(true);
+
+ KviPointerHashTableIterator<QString,KviAction> it(*m_pActions);
+ while(KviAction * a = it.current())
+ {
+ if(a->isKviUserActionNeverOverrideThis())
+ {
+ dying.append(((KviKvsUserAction *)a));
+ }
+ ++it;
+ }
+
+ dying.clear(); // bye :)
+}
+
+
+bool KviActionManager::coreActionExists(const QString &szName)
+{
+ KviAction *a = m_pActions->find(szName);
+ if(a)return (!a->isKviUserActionNeverOverrideThis());
+ return false;
+}
+
+QString KviActionManager::nameForAutomaticAction(const QString &szTemplate)
+{
+ QString ret;
+
+ int i = 1;
+ do {
+ KviQString::sprintf(ret,"%Q%d",&szTemplate,i);
+ i++;
+ } while(m_pActions->find(ret));
+
+ return ret;
+}
+
+void KviActionManager::emitRemoveActionsHintRequest()
+{
+ emit removeActionsHintRequest();
+}
+
+KviActionCategory * KviActionManager::category(const QString &szName)
+{
+ if(!szName.isEmpty())
+ {
+ KviActionCategory * c = m_pCategories->find(szName);
+ if(c)return c;
+ }
+ return m_pCategoryGeneric;
+}
+
+void KviActionManager::customizeToolBarsDialogCreated()
+{
+ m_bCustomizingToolBars = true;
+ m_pCurrentToolBar = KviCustomToolBarManager::instance()->firstExistingToolBar();
+ if(m_pCurrentToolBar)m_pCurrentToolBar->update();
+ emit beginCustomizeToolBars();
+}
+
+void KviActionManager::customizeToolBarsDialogDestroyed()
+{
+ m_bCustomizingToolBars = false;
+ emit endCustomizeToolBars();
+ if(m_pCurrentToolBar)
+ {
+ m_pCurrentToolBar->update();
+ m_pCurrentToolBar = 0;
+ }
+ g_pApp->saveToolBars();
+}
+
+void KviActionManager::setCurrentToolBar(KviCustomToolBar * t)
+{
+ if(m_pCurrentToolBar == t)return;
+ KviCustomToolBar * old = m_pCurrentToolBar;
+ m_pCurrentToolBar = t;
+ if(old)old->update();
+ if(!m_pCurrentToolBar && m_bCustomizingToolBars)
+ m_pCurrentToolBar = KviCustomToolBarManager::instance()->firstExistingToolBar();
+ if(m_pCurrentToolBar)m_pCurrentToolBar->update();
+ emit currentToolBarChanged();
+}
+
+void KviActionManager::loadAllAvailableActions()
+{
+ // make sure that the core actions are registered now
+ if(!KviActionManager::instance()->m_bCoreActionsRegistered)
+ {
+ register_core_actions(KviActionManager::instance());
+ KviActionManager::instance()->m_bCoreActionsRegistered = true;
+ }
+ g_pModuleManager->loadModulesByCaps("action");
+}
+
+void KviActionManager::init()
+{
+ if(!m_pInstance)m_pInstance = new KviActionManager();
+}
+
+void KviActionManager::done()
+{
+ if(m_pInstance)
+ {
+ delete m_pInstance;
+ m_pInstance = 0;
+ }
+}
+
+void KviActionManager::delayedRegisterAccelerators()
+{
+ KviPointerHashTableIterator<QString,KviAction> it(*m_pActions);
+ while(KviAction * a = it.current())
+ {
+ a->registerAccelerator();
+ ++it;
+ }
+}
+
+bool KviActionManager::registerAction(KviAction * a)
+{
+ if(m_pActions->find(a->name()))return false;
+ connect(a,SIGNAL(destroyed()),this,SLOT(actionDestroyed()));
+ m_pActions->insert(a->name(),a);
+ if(g_pFrame)a->registerAccelerator(); // otherwise it is delayed!
+ return true;
+}
+
+void KviActionManager::actionDestroyed()
+{
+ KviAction * a = (KviAction *)sender();
+ m_pActions->remove(a->name());
+}
+
+bool KviActionManager::unregisterAction(const QString &szName)
+{
+ KviAction * a = m_pActions->find(szName);
+ if(!a)return false;
+ disconnect(a,SIGNAL(destroyed()),this,SLOT(actionDestroyed()));
+ a->unregisterAccelerator();
+ return m_pActions->remove(szName);
+}
+
+KviAction * KviActionManager::getAction(const QString &szName)
+{
+ KviAction * a = m_pActions->find(szName);
+ if(a)return a;
+ int idx = szName.find('.');
+ if(idx < 0)
+ {
+ // backward compatibility: try to lookup the name with the kvirc. prefix
+ QString s = "kvirc.";
+ s += szName;
+ return m_pActions->find(s);
+ }
+ if((idx == 5) && (!m_bCoreActionsRegistered))
+ {
+ // the core actions are all like kvirc.name
+ // so the dot is at poisition 5 (6th char)
+ // the first requested core action will trigger this
+ // the nice thing is that we will probably already have a frame when
+ // the core actions are registered thus stuff like mdiManager() can be accessed...
+ if(szName.left(5) == "kvirc")
+ {
+ register_core_actions(this);
+ m_bCoreActionsRegistered = true;
+ a = m_pActions->find(szName);
+ return a;
+ }
+ }
+ // try to preload the module that might register this action...
+ QString szModule = szName.left(idx);
+ if(!g_pModuleManager->getModule(szModule))return 0;
+ return m_pActions->find(szName);
+}
+
+void KviActionManager::listActionsByCategory(const QString &szCatName,KviPointerList<KviAction> * pBuffer)
+{
+ loadAllAvailableActions();
+ KviActionCategory * pCat = category(szCatName);
+ pBuffer->setAutoDelete(false);
+ pBuffer->clear();
+ if(!pCat)return;
+ KviPointerHashTableIterator<QString,KviAction> it(*m_pActions);
+ while(KviAction * a = it.current())
+ {
+ if(a->category() == pCat)
+ pBuffer->append(a);
+ ++it;
+ }
+}
+
diff --git a/src/kvirc/kernel/kvi_actionmanager.h b/src/kvirc/kernel/kvi_actionmanager.h
new file mode 100644
index 00000000..c68e3f82
--- /dev/null
+++ b/src/kvirc/kernel/kvi_actionmanager.h
@@ -0,0 +1,118 @@
+#ifndef _KVI_ACTIONMANAGER_H_
+#define _KVI_ACTIONMANAGER_H_
+//=============================================================================
+//
+// File : kvi_actionmanager.h
+// Created on Sun 21 Nov 2004 03:37:57 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_action.h"
+
+#include <qobject.h>
+#include "kvi_pointerhashtable.h"
+
+class KviActionDrawer;
+class KviCustomToolBar;
+
+class KVIRC_API KviActionManager : public QObject
+{
+ friend class KviActionDrawer;
+ friend class KviCustomizeToolBarsDialog;
+ friend class KviCustomToolBar;
+ friend class KviFrame;
+ Q_OBJECT
+public:
+ KviActionManager();
+ ~KviActionManager();
+protected:
+ static KviActionManager * m_pInstance;
+ KviPointerHashTable<QString,KviAction> * m_pActions;
+ KviPointerHashTable<QString,KviActionCategory> * m_pCategories;
+ static bool m_bCustomizingToolBars;
+
+ // action categories
+ static KviActionCategory * m_pCategoryIrc;
+ static KviActionCategory * m_pCategoryGeneric;
+ static KviActionCategory * m_pCategorySettings;
+ static KviActionCategory * m_pCategoryScripting;
+ static KviActionCategory * m_pCategoryGUI;
+ static KviActionCategory * m_pCategoryChannel;
+ static KviActionCategory * m_pCategoryTools;
+ // internal , current toolbar to be edited (only when customizing)
+ static KviCustomToolBar * m_pCurrentToolBar;
+ bool m_bCoreActionsRegistered;
+public:
+ static void init();
+ static void done();
+ static KviActionManager * instance(){ return m_pInstance; };
+ static void loadAllAvailableActions();
+ static bool customizingToolBars(){ return m_bCustomizingToolBars; };
+ static KviActionCategory * categoryIrc(){ return m_pCategoryIrc; };
+ static KviActionCategory * categoryGeneric(){ return m_pCategoryGeneric; };
+ static KviActionCategory * categorySettings(){ return m_pCategorySettings; };
+ static KviActionCategory * categoryScripting(){ return m_pCategoryScripting; };
+ static KviActionCategory * categoryGUI(){ return m_pCategoryGUI; };
+ static KviActionCategory * categoryChannel(){ return m_pCategoryChannel; };
+ static KviActionCategory * categoryTools(){ return m_pCategoryTools; };
+
+ KviPointerHashTable<QString,KviAction> * actions(){ return m_pActions; };
+ KviActionCategory * category(const QString &szName);
+ KviPointerHashTable<QString,KviActionCategory> * categories(){ return m_pCategories; };
+
+ void killAllKvsUserActions();
+
+ static KviCustomToolBar * currentToolBar(){ return m_pCurrentToolBar; };
+ KviAction * getAction(const QString &szName);
+ void listActionsByCategory(const QString &szCatName,KviPointerList<KviAction> * pBuffer);
+ QString nameForAutomaticAction(const QString &szTemplate);
+ bool coreActionExists(const QString &szName);
+
+ void load(const QString &szFileName);
+ void save(const QString &szFileName);
+
+ bool registerAction(KviAction * a);
+ bool unregisterAction(const QString &szName);
+
+ void emitRemoveActionsHintRequest();
+protected:
+ void setCurrentToolBar(KviCustomToolBar * t);
+ KviAction * findAction(const QString &szName){ return m_pActions->find(szName); };
+ void customizeToolBarsDialogCreated();
+ void customizeToolBarsDialogDestroyed();
+ void tryFindCurrentToolBar();
+ void delayedRegisterAccelerators(); // this is called ONCE by KviFrame, at startup
+protected slots:
+ void actionDestroyed();
+signals:
+ void beginCustomizeToolBars();
+ void endCustomizeToolBars();
+ void currentToolBarChanged(); // emitted only when customizing!
+ void removeActionsHintRequest(); // connected by the KviCustomToolBarDialog to flash the trashcan
+ // when the user tries to remove an action from the toolbar
+ // and it fails to drag it on the trashcan
+};
+
+#define ACTION_POPUP_ITEM(__name,__popup) \
+ { KviAction * a = KviActionManager::instance()->getAction(__name); if(a)a->addToPopupMenu(__popup); }
+
+
+#endif //!_KVI_ACTIONMANAGER_H_
diff --git a/src/kvirc/kernel/kvi_app.cpp b/src/kvirc/kernel/kvi_app.cpp
new file mode 100644
index 00000000..2e66d2ba
--- /dev/null
+++ b/src/kvirc/kernel/kvi_app.cpp
@@ -0,0 +1,2074 @@
+//=============================================================================
+//
+// File : kvi_app.cpp
+// Creation date : Sun Jun 18 2000 12:39:45 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#define _KVI_APP_CPP_
+
+#include "kvi_socket.h"
+#include "kvi_app.h"
+#include "kvi_debug.h"
+#include "kvi_frame.h"
+#include "kvi_msgbox.h"
+#include "kvi_iconmanager.h"
+#include "kvi_input.h"
+#include "kvi_config.h"
+#include "kvi_colorwin.h"
+#include "kvi_window.h"
+#include "kvi_ircserverdb.h"
+#include "kvi_proxydb.h"
+#include "kvi_menubar.h"
+#include "kvi_options.h"
+#include "kvi_sparser.h"
+#include "kvi_modulemanager.h"
+#include "kvi_mediatype.h"
+#include "kvi_regusersdb.h"
+#include "kvi_thread.h"
+#include "kvi_sharedfiles.h"
+#include "kvi_confignames.h"
+#include "kvi_taskbar.h"
+#include "kvi_defaults.h"
+#include "kvi_locale.h"
+#include "kvi_out.h"
+#include "kvi_splash.h"
+#include "kvi_nickserv.h"
+#include "kvi_xlib.h"
+#include "kvi_garbage.h"
+#include "kvi_texticonmanager.h"
+#include "kvi_texticonwin.h"
+#include "kvi_historywin.h"
+#include "kvi_ctcppagedialog.h"
+#include "kvi_regchan.h"
+#include "kvi_moduleextension.h"
+#include "kvi_internalcmd.h"
+#include "kvi_filetransfer.h"
+#include "kvi_kvs.h"
+#include "kvi_ircurl.h"
+#include "kvi_avatarcache.h"
+#include "kvi_actionmanager.h"
+#include "kvi_customtoolbarmanager.h"
+#include "kvi_fileutils.h"
+#include "kvi_time.h"
+#include "kvi_doublebuffer.h"
+#include "kvi_stringconversion.h"
+#include "kvi_useridentity.h"
+
+#ifndef COMPILE_NO_IPC
+ #include "kvi_ipc.h"
+#endif
+
+#include "kvi_kvs_script.h"
+#include "kvi_kvs_popupmanager.h"
+#include "kvi_kvs_kernel.h"
+#include "kvi_kvs_object_controller.h"
+#include "kvi_kvs_eventtriggers.h"
+#include "kvi_sourcesdate.h"
+
+#include "kvi_tal_popupmenu.h"
+#include <qsplitter.h>
+#include <qstringlist.h>
+#include "kvi_pointerhashtable.h"
+#include <qmime.h>
+#ifdef COMPILE_USE_QT4
+ #include <q3mimefactory.h>
+#endif
+#include "kvi_tal_listbox.h"
+#include <qclipboard.h>
+#include <qmessagebox.h>
+#include <qtextcodec.h>
+#include <qmetaobject.h>
+
+#ifdef COMPILE_SSL_SUPPORT
+ #include "kvi_ssl.h"
+#endif
+
+#ifdef COMPILE_USE_QT4
+#ifdef COMPILE_ON_WINDOWS
+#include <QPluginLoader>
+#endif
+#endif
+
+#ifdef COMPILE_USE_QT4
+ #include <QTextDocument>
+#else
+ #include <qstylesheet.h>
+#endif
+
+KVIRC_API KviApp * g_pApp = 0; // global application pointer
+
+KviConfig * g_pWinPropertiesConfig = 0;
+KVIRC_API KviIrcServerDataBase * g_pIrcServerDataBase = 0;
+KVIRC_API KviProxyDataBase * g_pProxyDataBase = 0;
+
+// Global windows
+
+KVIRC_API KviColorWindow * g_pColorWindow = 0;
+KVIRC_API KviTextIconWindow * g_pTextIconWindow = 0;
+KVIRC_API KviTalPopupMenu * g_pInputPopup = 0;
+KVIRC_API QStringList * g_pRecentTopicList = 0;
+//KVIRC_API QStringList * g_pBookmarkList = 0;
+KVIRC_API KviPointerHashTable<const char *,KviWindow> * g_pGlobalWindowDict = 0;
+KVIRC_API KviMediaManager * g_pMediaManager = 0;
+//KVIRC_API KviRegisteredUserDataBase * g_pRegisteredUserDataBase = 0;
+KVIRC_API KviSharedFilesManager * g_pSharedFilesManager = 0;
+KVIRC_API KviNickServRuleSet * g_pNickServRuleSet = 0;
+//KVIRC_API KviTimerManager * g_pTimerManager = 0;
+KVIRC_API KviGarbageCollector * g_pGarbageCollector = 0;
+KVIRC_API KviCtcpPageDialog * g_pCtcpPageDialog = 0;
+KVIRC_API KviRegisteredChannelDataBase * g_pRegisteredChannelDataBase = 0;
+KVIRC_API KviInputHistory * g_pInputHistory = 0;
+KVIRC_API KviHistoryWindow * g_pHistoryWindow = 0;
+
+
+KVIRC_API int g_iIdentDaemonRunningUsers = 0; // this is eventually set by libkviident
+
+KVIRC_API KviSplashScreen * g_pSplashScreen = 0;
+
+
+// Loaded and destroyed by KviIconManager
+QPixmap * g_pUserChanStatePixmap = 0;
+QPixmap * g_pActivityMeterPixmap = 0;
+
+
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+
+ #ifdef COMPILE_KDE_SUPPORT
+ #include <ksharedpixmap.h>
+ #include <netwm.h>
+ #include <kimageeffect.h>
+ #include <dcopclient.h>
+ #include <qdatastream.h>
+ #include <qcstring.h>
+
+ KSharedPixmap * g_pKdeDesktopBackground = 0; // the shared pixmap that we get from KWin
+ #endif
+
+ #include <qimage.h>
+
+ KVIRC_API QPixmap * g_pShadedParentGlobalDesktopBackground = 0; // the pixmap that we use for MdiManager
+ KVIRC_API QPixmap * g_pShadedChildGlobalDesktopBackground = 0; // the pixmap that we use for MdiChild
+#endif
+
+#ifdef COMPILE_CRYPT_SUPPORT
+ #include "kvi_crypt.h"
+ KVIRC_API KviCryptEngineManager * g_pCryptEngineManager = 0; // global crypt engine manager
+#endif
+
+KviApp::KviApp(int &argc,char ** argv)
+: KviTalApplication(argc,argv)
+{
+ // Ok...everything begins here
+ g_pApp = this;
+ m_szConfigFile = QString::null;
+ m_bCreateConfig = false;
+ m_bShowSplashScreen = true;
+ m_bUpdateGuiPending = false;
+ m_pPendingAvatarChanges = 0;
+ m_pRecentChannelsDict = 0;
+ m_pIpcSentinel = 0;
+ m_iHeartbeatTimerId = -1;
+ // next step is setup()
+ m_bSetupDone = false;
+ kvi_socket_flushTrafficCounters();
+}
+
+void KviApp::setup()
+{
+ // Here we start up all the substystems.
+ // This is a really critical phase since in general subsystems depend
+ // on each other and we must activate them in the right order.
+ // Don't move stuff around unless you really know what you're doing.
+
+#ifdef COMPILE_ON_WINDOWS
+ // setup winsock.dll
+ WSADATA w;
+ WSAStartup(MAKELONG((unsigned short)2,(unsigned short)0),&w);
+#endif
+
+#ifndef COMPILE_NO_IPC
+ // Create this very early
+ // FIXME: this is still not early enough... we actually HAVE race conditions (should use a file for locking this ?)
+ createIpcSentinel();
+#endif
+
+ // Initialize the thread manager early
+ KviThreadManager::globalInit();
+
+#ifdef COMPILE_SSL_SUPPORT
+ KviSSL::globalInit();
+#endif
+
+ // Setup our filesystem and initalize locale
+ loadDirectories();
+ KviStringConversion::init(m_szGlobalKvircDir,m_szLocalKvircDir);
+
+#ifdef COMPILE_USE_QT4
+#ifdef COMPILE_ON_WINDOWS
+ //need to load image plugins:(
+ QString szPluginsDir;
+ getGlobalKvircDirectory(szPluginsDir,None,"qt-plugins/");
+ setLibraryPaths(QStringList(szPluginsDir));
+ //KviMessageBox::information(libraryPaths().join(";"));
+ //debug("%1",loader.isLoaded());
+#endif
+#endif
+
+ // check if we want to permanently disable the splash screen
+ // we do it once for every version: the user should see the new splash screens at least once
+
+ QString szSplashDisableFile;
+ getLocalKvircDirectory(szSplashDisableFile,Pics,"disable-splash." KVI_VERSION);
+
+ if(KviFileUtils::fileExists(szSplashDisableFile))
+ m_bShowSplashScreen = false;
+
+ // Now we can create the splash screen (we can locate the splash image)
+ if(m_bShowSplashScreen)
+ createSplashScreen();
+
+ KVI_SPLASH_SET_PROGRESS(0)
+
+ // Make sure that the C strings are translated to utf8
+ // This is a fallback solution anyway: we should use the appropriate
+ // encoding every time.
+ QTextCodec::setCodecForCStrings(KviLocale::codecForName("UTF-8"));
+
+ // Set the default help files search path
+ QStringList list;
+ QString tmp;
+ getLocalKvircDirectory(tmp,Help); // localized help/lang or help if help/lang doesn't exist
+ list.append(tmp);
+ getLocalKvircDirectory(tmp,HelpEN); // help/en
+ list.append(tmp);
+ getLocalKvircDirectory(tmp,HelpNoIntl); // just help/
+ list.append(tmp);
+ getGlobalKvircDirectory(tmp,Help);
+ list.append(tmp);
+ getGlobalKvircDirectory(tmp,HelpEN);
+ list.append(tmp);
+ getGlobalKvircDirectory(tmp,HelpNoIntl);
+ list.append(tmp);
+#ifdef COMPILE_USE_QT4
+ Q3MimeSourceFactory::defaultFactory()->setFilePath(list);
+#else
+ QMimeSourceFactory::defaultFactory()->setFilePath(list);
+#endif
+
+ KVI_SPLASH_SET_PROGRESS(1)
+
+ // Initialize the scripting engine
+ KviKvs::init();
+
+ KVI_SPLASH_SET_PROGRESS(2)
+
+ // Initialize the action manager
+ KviActionManager::init();
+
+ KVI_SPLASH_SET_PROGRESS(3)
+
+ // Create the module manager early: so the other managers can load modules
+ g_pModuleExtensionManager = new KviModuleExtensionManager();
+ g_pModuleManager = new KviModuleManager();
+
+ KVI_SPLASH_SET_PROGRESS(4);
+
+ g_pIconManager = new KviIconManager();
+
+ KVI_SPLASH_SET_PROGRESS(5)
+
+ if(getReadOnlyConfigPath(tmp,KVI_CONFIGFILE_USERACTIONS))
+ KviActionManager::instance()->load(tmp);
+
+ KVI_SPLASH_SET_PROGRESS(8);
+
+ // Initialize and load the identities
+ KviUserIdentityManager::init();
+
+ KVI_SPLASH_SET_PROGRESS(9);
+
+ if(getReadOnlyConfigPath(tmp,KVI_CONFIGFILE_IDENTITIES))
+ KviUserIdentityManager::instance()->load(tmp);
+
+ KVI_SPLASH_SET_PROGRESS(12);
+
+ // Load the remaining configuration
+ // Note that loadOptions() assumes that the current progress is 12 and
+ // will bump it up to 45 in small steps
+ loadOptions();
+
+ KVI_SPLASH_SET_PROGRESS(47)
+
+ // set the global font if needed
+ updateApplicationFont();
+
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ updatePseudoTransparency();
+#endif
+
+ KVI_SPLASH_SET_PROGRESS(48)
+
+ // Load the win properties config
+ getLocalKvircDirectory(tmp,Config,KVI_CONFIGFILE_WINPROPERTIES);
+ g_pWinPropertiesConfig = new KviConfig(tmp,KviConfig::ReadWrite);
+
+ KVI_SPLASH_SET_PROGRESS(50)
+
+ // Load the server database
+ g_pIrcServerDataBase = new KviIrcServerDataBase();
+ if(getReadOnlyConfigPath(tmp,KVI_CONFIGFILE_SERVERDB))
+ g_pIrcServerDataBase->load(tmp);
+
+ KVI_SPLASH_SET_PROGRESS(53)
+
+ // Load the proxy database
+ g_pProxyDataBase = new KviProxyDataBase();
+ if(getReadOnlyConfigPath(tmp,KVI_CONFIGFILE_PROXYDB))
+ g_pProxyDataBase->load(tmp);
+
+ KVI_SPLASH_SET_PROGRESS(54)
+
+ // Event manager
+ if(getReadOnlyConfigPath(tmp,KVI_CONFIGFILE_EVENTS))
+ KviKvs::loadAppEvents(tmp);
+
+ KVI_SPLASH_SET_PROGRESS(59)
+
+ if(getReadOnlyConfigPath(tmp,KVI_CONFIGFILE_RAWEVENTS))
+ KviKvs::loadRawEvents(tmp);
+
+ KVI_SPLASH_SET_PROGRESS(62)
+
+ // Popup manager
+ if(getReadOnlyConfigPath(tmp,KVI_CONFIGFILE_POPUPS))
+ KviKvs::loadPopups(tmp);
+
+ KVI_SPLASH_SET_PROGRESS(67)
+
+ KviCustomToolBarManager::init();
+ if(getReadOnlyConfigPath(tmp,KVI_CONFIGFILE_CUSTOMTOOLBARS))
+ KviCustomToolBarManager::instance()->load(tmp);
+ // THIS IS A COMPATIBILITY ENTRY ADDED AT 3.0.2 TIME THAT SHOULD BE DROPPED IN A COUPLE OF VERSION BUMPS!
+ getLocalKvircDirectory(tmp,Config,KVI_CONFIGFILE_SCRIPTTOOLBARS);
+ if(KviFileUtils::fileExists(tmp))
+ KviCustomToolBarManager::instance()->loadScripttoolbarsCompat(tmp);
+ // EOF COMPATIBILITY
+
+ KVI_SPLASH_SET_PROGRESS(70)
+
+ // Alias manager
+ if(getReadOnlyConfigPath(tmp,KVI_CONFIGFILE_ALIASES))
+ KviKvs::loadAliases(tmp);
+
+ KVI_SPLASH_SET_PROGRESS(75)
+
+ // Script addons manager (this in fact has delayed loading, so we don't even care
+ // about showing up an entry in the splash screen)
+ if(getReadOnlyConfigPath(tmp,KVI_CONFIGFILE_SCRIPTADDONS))
+ KviKvs::loadScriptAddons(tmp);
+
+ KVI_SPLASH_SET_PROGRESS(77)
+
+ g_pTextIconManager = new KviTextIconManager();
+ g_pTextIconManager->load();
+
+ KVI_SPLASH_SET_PROGRESS(80)
+
+ // load the recent data lists
+ g_pRecentTopicList = new QStringList();
+ //g_pBookmarkList = new QStringList();
+ loadRecentEntries();
+
+ KVI_SPLASH_SET_PROGRESS(81)
+
+ // media manager
+ g_pMediaManager = new KviMediaManager();
+ g_pMediaManager->lock();
+ if(getReadOnlyConfigPath(tmp,KVI_CONFIGFILE_MEDIATYPES))
+ g_pMediaManager->load(tmp);
+ g_pMediaManager->unlock();
+
+
+ KVI_SPLASH_SET_PROGRESS(82)
+
+ // registered user data base
+ g_pRegisteredUserDataBase = new KviRegisteredUserDataBase();
+ if(getReadOnlyConfigPath(tmp,KVI_CONFIGFILE_REGUSERDB))
+ g_pRegisteredUserDataBase->load(tmp);
+
+ KVI_SPLASH_SET_PROGRESS(84)
+
+ // registered channel data base
+ g_pRegisteredChannelDataBase = new KviRegisteredChannelDataBase();
+ if(getReadOnlyConfigPath(tmp,KVI_CONFIGFILE_REGCHANDB))
+ g_pRegisteredChannelDataBase->load(tmp);
+
+ KVI_SPLASH_SET_PROGRESS(85)
+
+ // file trader
+ g_pSharedFilesManager = new KviSharedFilesManager();
+ if(getReadOnlyConfigPath(tmp,KVI_CONFIGFILE_SHAREDFILES))
+ g_pSharedFilesManager->load(tmp);
+
+ KVI_SPLASH_SET_PROGRESS(86)
+
+ // nick serv data base
+ g_pNickServRuleSet = new KviNickServRuleSet();
+ if(getReadOnlyConfigPath(tmp,KVI_CONFIGFILE_NICKSERVDATABASE))
+ g_pNickServRuleSet->load(tmp);
+
+ KVI_SPLASH_SET_PROGRESS(88)
+
+ g_pInputHistory = new KviInputHistory();
+ if(getReadOnlyConfigPath(tmp,KVI_CONFIGFILE_INPUTHISTORY))
+ g_pInputHistory->load(tmp);
+
+ KVI_SPLASH_SET_PROGRESS(89)
+ KviAvatarCache::init();
+ if(getReadOnlyConfigPath(tmp,KVI_CONFIGFILE_AVATARCACHE))
+ KviAvatarCache::instance()->load(tmp);
+
+ KVI_SPLASH_SET_PROGRESS(90)
+
+ // Eventually initialize the crypt engine manager
+#ifdef COMPILE_CRYPT_SUPPORT
+ g_pCryptEngineManager = new KviCryptEngineManager();
+#endif
+
+ g_pGarbageCollector = new KviGarbageCollector();
+
+ // and the input popup
+ g_pInputPopup = new KviTalPopupMenu();
+
+ // create the server parser
+ g_pServerParser = new KviServerParser();
+
+ KVI_SPLASH_SET_PROGRESS(91)
+
+ // Global window dictionary
+ g_pGlobalWindowDict = new KviPointerHashTable<const char *,KviWindow>(41);
+ g_pGlobalWindowDict->setAutoDelete(false);
+ // Script object controller
+ //g_pScriptObjectController = new KviScriptObjectController(); gone
+
+ KVI_SPLASH_SET_PROGRESS(92)
+
+ KviDoubleBuffer::init();
+
+#ifdef COMPILE_USE_QT4
+ QString szStylesheetFile;
+ getGlobalKvircDirectory(szStylesheetFile,Config,"style.css");
+ if(KviFileUtils::fileExists(szStylesheetFile))
+ {
+ QString szStyleData;
+ KviFileUtils::readFile(szStylesheetFile,szStyleData);
+ szStyleData.replace("global://",m_szGlobalKvircDir);
+ szStyleData.replace("local://",m_szLocalKvircDir);
+ setStyleSheet(szStyleData);
+ }
+#endif
+
+ // create the frame window, we're almost up and running...
+ createFrame();
+
+ // ok, we also have an UI now
+
+ // check if this is the first time this version of KVIrc runs...
+ if(firstTimeRun())
+ {
+ // Finish the setup...
+ setupFinish();
+ }
+
+ // hello world!
+ m_bSetupDone = true;
+
+ // We're REALLY up and running!
+ // kill the splash screen
+
+ KVI_SPLASH_SET_PROGRESS(100)
+ //KVI_SPLASH_SET_TEXT(__tr2qs("Have fun! :)"))
+
+ if(KVI_OPTION_BOOL(KviOption_boolShowServersConnectDialogOnStart))
+ g_pFrame->executeInternalCommand(KVI_INTERNALCOMMAND_SERVERSJOIN_OPEN);
+
+ destroySplashScreen();
+
+ // check if we're in trouble...
+ checkSuggestRestoreDefaultScript();
+
+ // start our heartbeat now
+ m_iHeartbeatTimerId = startTimer(1000);
+}
+
+void KviApp::frameDestructorCallback()
+{
+ // here we should kill anything that depends on g_pFrame , g_pActiveWindow and related being non zero...
+
+ // kill all the objects, while we have windows...
+ if(KviKvsKernel::instance())
+ {
+ if(KviKvsKernel::instance()->objectController())
+ {
+ KviKvsKernel::instance()->objectController()->clearInstances();
+ }
+ }
+}
+
+
+
+KviApp::~KviApp()
+{
+ // Another critical phase.
+ // We shutdown our subsystems in the right order here.
+
+#ifndef COMPILE_NO_IPC
+ destroyIpcSentinel();
+#endif
+
+ if(g_pSplashScreen)delete g_pSplashScreen;
+ if(g_pCtcpPageDialog)delete g_pCtcpPageDialog;
+
+ // if we still have a frame: kill it
+ if(g_pFrame)delete g_pFrame;
+ g_pActiveWindow = 0; // .. but it should be already 0 anyway
+
+ // execute pending deletes (this may still contain some UI elements)
+ delete g_pGarbageCollector;
+
+ if(!m_bSetupDone)return; // killed with IPC (nothing except the m_pFrameList was created yet)
+
+ KviFileTransferManager::cleanup();
+
+ // No more events are triggered from now on and no KVS commands are executed
+
+ // Dangerous part.... we're unloading all the modules
+ // We need to unload them early since they may use other subsystems
+ // that we are going to kill now.
+ delete g_pModuleManager;
+ delete g_pModuleExtensionManager;
+ // No more external modules exist: all that happens from now is generated
+ // from inside the kvirc core.
+
+ // We should have almost no UI here: only certain dialogs or popup windows may
+ // still exist: they should be harmless tough.
+ saveOptions();
+ saveIdentities();
+ KviUserIdentityManager::done();
+ if(m_pRecentChannelsDict) delete m_pRecentChannelsDict;
+ // now kill the stuff that the frame depends on
+ saveIrcServerDataBase();
+ delete g_pIrcServerDataBase;
+ saveProxyDataBase();
+ delete g_pProxyDataBase;
+ delete g_pWinPropertiesConfig;
+ saveTextIcons();
+ if(g_pTextIconWindow)delete g_pTextIconWindow;
+ delete g_pTextIconManager;
+ delete g_pIconManager;
+ delete g_pServerParser;
+ saveMediaTypes();
+ delete g_pMediaManager;
+ saveRecentEntries();
+ saveAvatarCache();
+ KviAvatarCache::done();
+ //delete g_pBookmarkList;
+ delete g_pRecentTopicList;
+ saveRegisteredUsers();
+ delete g_pRegisteredUserDataBase;
+ saveRegisteredChannels();
+ delete g_pRegisteredChannelDataBase;
+ saveNickServ();
+ delete g_pNickServRuleSet;
+ saveSharedFiles();
+ delete g_pSharedFilesManager;
+ saveAppEvents();
+ saveRawEvents();
+ saveToolBars();
+ KviCustomToolBarManager::done();
+ savePopups();
+ saveAliases();
+ delete g_pGlobalWindowDict;
+ saveScriptAddons();
+ // kill the remaining resources
+ delete g_pColorWindow;
+ if(g_pHistoryWindow)delete g_pHistoryWindow;
+ saveInputHistory();
+ delete g_pInputHistory;
+ delete g_pInputPopup;
+ //delete g_pScriptObjectController;
+#ifdef COMPILE_CRYPT_SUPPORT
+ delete g_pCryptEngineManager;
+#endif
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ destroyPseudoTransparency();
+#endif
+ KviDoubleBuffer::done();
+ if(m_pPendingAvatarChanges)delete m_pPendingAvatarChanges;
+ // Kill the thread manager.... all the slave threads should have been already terminated ...
+#ifdef COMPILE_SSL_SUPPORT
+ KviSSL::globalDestroy();
+#endif
+ KviThreadManager::globalDestroy();
+ // kill the scripting engine
+ KviKvs::done();
+ // shut up the action manager
+ saveActions();
+ KviActionManager::done();
+
+#ifdef COMPILE_ON_WINDOWS
+ WSACleanup();
+#endif
+
+ KviLocale::done(this);
+
+ // goodbye cruel world...
+}
+
+static int g_iGloballyUniqueId = 0;
+
+int KviApp::getGloballyUniqueId()
+{
+ g_iGloballyUniqueId++;
+ return g_iGloballyUniqueId;
+}
+
+typedef struct _NotifierMessageSupaDupaParameterStruct
+{
+ KviWindow * pWindow;
+ QString szIcon;
+ QString szMessage;
+ unsigned int uMessageLifetime; // 0 means no hide
+} NotifierMessageSupaDupaParameterStruct;
+
+void KviApp::notifierMessage(KviWindow * pWnd,int iIconId,const QString &szMsg,unsigned int uMessageLifetime)
+{
+ KviModule * m = g_pModuleManager->getModule("notifier");
+ if(!m)return;
+
+ NotifierMessageSupaDupaParameterStruct s;
+ s.pWindow = pWnd;
+ s.szIcon.sprintf("%d",iIconId);
+ s.szMessage = szMsg;
+ s.uMessageLifetime = uMessageLifetime;
+
+ m->ctrl("notifier::message",(void *)&s);
+}
+
+QTextCodec * KviApp::defaultTextCodec()
+{
+ QTextCodec * c = 0;
+ if(!KVI_OPTION_STRING(KviOption_stringDefaultTextEncoding).isEmpty())
+ {
+ c = KviLocale::codecForName(KVI_OPTION_STRING(KviOption_stringDefaultTextEncoding).latin1());
+ if(c)return c;
+ }
+ c = QTextCodec::codecForLocale();
+ if(c)return c;
+ c = KviLocale::codecForName("UTF-8");
+ if(!c)debug("KviApp::defaultTextCodec(): cannot find a suitable text codec for locale :/");
+ return c;
+}
+
+void KviApp::contextSensitiveHelp()
+{
+ // this stuff doesn't work with Qt 4.x
+#ifndef COMPILE_USE_QT4
+ // the F1 Key has been pressed
+ // try to pass it to the active widget or one of its parents
+ QWidget * w = g_pApp->focusWidget();
+ while(w)
+ {
+ //QVariant v = w->property("contextSensitiveHelp"); <-- this prints a lot of warnings: this is a QT BUG
+ QMetaObject * o = w->metaObject();
+ if(o)
+ {
+ int i = o->findProperty("contextSensitiveHelp",true);
+ if(i != -1)
+ {
+ QVariant v = w->property("contextSensitiveHelp");
+ if(v.isValid() && v.toBool())
+ return; // done!
+ }
+ }
+ w = w->parentWidget();
+ }
+ // no way
+ // FIXME: just show up simple plain online help
+ //debug("No way: found no focus widget for that...");
+#endif
+}
+
+
+void KviApp::collectGarbage(QObject * garbage)
+{
+// if(!g_pGarbageCollector)debug("Ops... no garbage collector ?");
+ g_pGarbageCollector->collect(garbage);
+}
+
+void KviApp::loadDefaultScript()
+{
+ QString cmd;
+ getGlobalKvircDirectory(cmd,KviApp::DefScript,"default.kvs");
+ cmd.prepend("parse \"");
+ cmd.append("\"");
+#ifdef COMPILE_ON_WINDOWS
+ cmd.replace("\\","\\\\");
+#endif
+ KviKvsScript::run(cmd,g_pFrame->firstConsole());
+ // now line up the toolbars (they may get messed while loading the script)
+#ifndef COMPILE_USE_QT4
+ g_pFrame->lineUpDockWindows(); // missing on Qt 4.x
+#endif
+}
+
+// 07.01.2005 06:01: Got this curious gcc error while writing
+// the functions below...
+// The problem is gone by simply typing make again.
+// Memory/Disk transfer error ?
+//
+// if g++ -DHAVE_CONFIG_H -I. -I. -I../../../src -I/usr/build/kvirccvs/kvirc/src/kvilib/include/ -I/usr/build/kvirccvs/kvirc/src/kvirc/include/ -I/opt/qt/include -I/usr/X11R6/include -I/usr/X11R6/include -I/opt/kde/include -D_REENTRANT -DREENTRANT -I/usr/X11R6/include -DGLOBAL_KVIRC_DIR=\"/usr/local/share/kvirc/3.0.1.99\" -g -MT kvi_ircconnection.o -MD -MP -MF ".deps/kvi_ircconnection.Tpo"
+// -c -o kvi_ircconnection.o `test -f '../kernel/kvi_ircconnection.cpp' || echo './'`../kernel/kvi_ircconnection.cpp;
+// then mv -f ".deps/kvi_ircconnection.Tpo" ".deps/kvi_ircconnection.Po";
+// else rm -f ".deps/kvi_ircconnection.Tpo"; exit 1;
+// fi
+// /opt/qt/include/qstringlist.h:62: sorry, not implemented: `
+// expr_with_file_location' not supported by dump_decl
+// /opt/qt/include/qstringlist.h: In function `<declaration error>':
+// /opt/qt/include/qstringlist.h:62: internal error: Segmentation fault
+// Please submit a full bug report,
+// with preprocessed source if appropriate.
+// See <URL:http://bugzilla.redhat.com/bugzilla/> for instructions.
+
+
+void KviApp::checkSuggestRestoreDefaultScript()
+{
+ static bool bSuggestedOnce = false;
+ if(KVI_OPTION_BOOL(KviOption_boolDoNotSuggestRestoreDefaultScript))return;
+ if(bSuggestedOnce)return; // already suggested in this kvirc session
+
+ int score = 0;
+
+ if(KviCustomToolBarManager::instance()->descriptorCount() < 1)score += 100; // straight suggest
+ else if(KviKvsPopupManager::instance()->popupCount() < 1)score += 100; // straight suggest
+ else {
+ // other stuff is not that critical
+ if(!KviKvsEventManager::instance()->hasAppHandlers(KviEvent_OnChannelNickPopupRequest))score += 80;
+ if(!KviKvsEventManager::instance()->hasAppHandlers(KviEvent_OnDCCChatPopupRequest))score += 20;
+ if(!KviKvsEventManager::instance()->hasAppHandlers(KviEvent_OnConsolePopupRequest))score += 20;
+ if(!KviKvsEventManager::instance()->hasAppHandlers(KviEvent_OnChannelPopupRequest))score += 20;
+ if(!KviKvsEventManager::instance()->hasAppHandlers(KviEvent_OnChannelNickPopupRequest))score += 20;
+ if(!KviKvsEventManager::instance()->hasAppHandlers(KviEvent_OnQueryPopupRequest))score += 20;
+ if(!KviKvsEventManager::instance()->hasAppHandlers(KviEvent_OnQueryNickPopupRequest))score += 20;
+ if(KviCustomToolBarManager::instance()->descriptorCount() < 4)score += 20;
+ if(KviKvsPopupManager::instance()->popupCount() < 3)score += 20;
+ if(KviCustomToolBarManager::instance()->visibleToolBarCount() < 2)
+ {
+ score += 20;
+ if(KviCustomToolBarManager::instance()->visibleToolBarCount() < 1)score += 20;
+ }
+ }
+
+ if(score < 100)return;
+
+ bSuggestedOnce = true;
+
+ switch(QMessageBox::question(0,__tr2qs("Installation problems ?"),
+ __tr2qs("<b>Ooops...</b><br><br>" \
+ "<b>There are some reasons that make me think that your KVIrc installation is incomplete.</b><br><br>" \
+ "I might be wrong, but you seem to miss some of the features that the default KVIrc script provides." \
+ "This may happen because you have upgraded to an unstable cvs version, " \
+ "because you have accidentally deleted or damaged your configuration files, " \
+ "because you have installed an incomplete script " \
+ "or because you have hit a bug in KVIrc.<br><br>" \
+ "I can repeat the installation of the default script in order " \
+ "to restore the missing features.<br>" \
+ "<b>Do you want the default script to be restored ?</b><br><br>" \
+ "<font size=\"-1\">Hint: If you're a scripter and have intentionally removed some of the scripting features " \
+ "then you may safely click on \"No and Don't Ask Me Again\", otherwise it might be " \
+ "a good idea to click \"Yes\". If you still want to choose \"No\" you can always restore the " \
+ "default script by choosing the appropriate entry from the \"Scripting\" menu.</font>"),
+ __tr2qs("No and Don't Ask Me Again"),
+ __tr2qs("No"),
+ __tr2qs("Yes"),
+ 1,
+ 1))
+ {
+ case 0:
+ KVI_OPTION_BOOL(KviOption_boolDoNotSuggestRestoreDefaultScript) = true;
+ return;
+ break;
+ case 1:
+ return;
+ break;
+ default:
+ restoreDefaultScript();
+ break;
+ }
+}
+
+
+
+void KviApp::restoreDefaultScript()
+{
+ if(QMessageBox::warning(0,__tr2qs("Restore Default Script - KVIrc"),
+ __tr2qs("You are about to restore the default script.<br>This will erase any script changes you have made.<br>Do you wish to proceed?"),
+ QMessageBox::Yes,QMessageBox::No|QMessageBox::Default|QMessageBox::Escape) != QMessageBox::Yes)return;
+
+ KviKvs::clearAliases();
+ KviKvs::clearAppEvents();
+ KviKvs::clearRawEvents();
+ KviKvs::clearPopups();
+ KviKvs::clearScriptAddons();
+
+ KviActionManager::instance()->killAllKvsUserActions();
+ KviCustomToolBarManager::instance()->clear();
+
+ loadDefaultScript();
+
+ // and save settings to be sure...
+ saveOptions();
+}
+
+#ifndef COMPILE_NO_IPC
+
+
+void KviApp::createIpcSentinel()
+{
+ m_pIpcSentinel = new KviIpcSentinel();
+}
+
+void KviApp::destroyIpcSentinel()
+{
+ if(m_pIpcSentinel)delete m_pIpcSentinel;
+ m_pIpcSentinel = 0;
+}
+
+void KviApp::ipcMessage(char * message)
+{
+ if(!g_pFrame)return;
+ KviConsole * cns = g_pFrame->firstConsole();
+ if(!cns)return;
+ if(_OUTPUT_VERBOSE)
+ {
+ KviStr cmd = message;
+ if(cmd.len() > 30)cmd.cutRight(cmd.len() - 30);
+ int idx = cmd.findFirstIdx('\n');
+ if(idx != -1)cmd.cutRight(cmd.len() - (idx + 1));
+ cns->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Remote command received (%s ...)"),cmd.ptr());
+ }
+ KviKvsScript::run(message,cns);
+}
+
+#endif // COMPILE_NO_IPC
+
+
+void KviApp::createSplashScreen()
+{
+ g_pSplashScreen = new KviSplashScreen();
+ g_pSplashScreen->show();
+}
+
+void KviApp::destroySplashScreen()
+{
+ if(g_pSplashScreen)g_pSplashScreen->die();
+}
+
+
+QString KviApp::getClipboardText()
+{
+ /*
+ QString buffer;
+#if QT_VERSION >= 300
+ bool bOldMode = clipboard()->selectionModeEnabled();
+ clipboard()->setSelectionMode(false);
+#endif
+ buffer = clipboard()->text();
+#if QT_VERSION >= 300
+ if(buffer.isEmpty())
+ {
+ // lookup the global clipboard
+ clipboard()->setSelectionMode(true);
+ buffer = clipboard()->text();
+ }
+ clipboard()->setSelectionMode(bOldMode);
+#endif
+ return buffer;
+ */
+
+ QString buffer = clipboard()->text(QClipboard::Clipboard);
+ if(buffer.isEmpty())return clipboard()->text(QClipboard::Selection);
+ return buffer;
+}
+
+
+void KviApp::getClipboardText(KviStr &buffer)
+{
+ buffer = getClipboardText();
+}
+
+void KviApp::setClipboardText(const QString &str)
+{
+ /*
+#if QT_VERSION >= 300
+ if(clipboard()->supportsSelection())
+ {
+ bool bOldMode = clipboard()->selectionModeEnabled();
+ clipboard()->setSelectionMode(true);
+ clipboard()->setText(str);
+ clipboard()->setSelectionMode(false);
+ clipboard()->setText(str);
+ clipboard()->setSelectionMode(bOldMode);
+ } else {
+#endif
+ clipboard()->setText(str);
+#if QT_VERSION >= 300
+ }
+#endif*/
+ clipboard()->setText(str,QClipboard::Clipboard);
+ clipboard()->setText(str,QClipboard::Selection);
+}
+
+void KviApp::setClipboardText(const KviStr &str)
+{
+ debug("WARNING : KviApp::setClipboardText(const KviStr &) is deprecated!");
+ setClipboardText(QString(str.ptr()));
+}
+
+void KviApp::setAvatarFromOptions()
+{
+ KviPointerHashTableIterator<const char *,KviWindow> it(*g_pGlobalWindowDict);
+
+ while(it.current())
+ {
+ if(it.current()->type() == KVI_WINDOW_TYPE_CONSOLE)
+ {
+ ((KviConsole *)it.current())->setAvatarFromOptions();
+ }
+ ++it;
+ }
+
+}
+
+void KviApp::setAvatarOnFileReceived(KviConsole * pConsole,const QString &szRemoteUrl,const QString &szNick,const QString &szUser,const QString &szHost)
+{
+ if(!m_pPendingAvatarChanges)
+ {
+ m_pPendingAvatarChanges = new KviPointerList<KviPendingAvatarChange>;
+ m_pPendingAvatarChanges->setAutoDelete(true);
+ }
+
+ if(m_pPendingAvatarChanges->count() >= KVI_MAX_PENDING_AVATARS) // can't be...
+ {
+ m_pPendingAvatarChanges->removeFirst(); // kill the first entry
+ }
+
+ KviPendingAvatarChange * p = new KviPendingAvatarChange;
+ p->pConsole = pConsole;
+ p->szRemoteUrl = szRemoteUrl;
+ p->szNick = szNick;
+ p->szUser = szUser;
+ p->szHost = szHost;
+
+ m_pPendingAvatarChanges->append(p);
+}
+
+KviPendingAvatarChange * KviApp::findPendingAvatarChange(KviConsole * pConsole,const QString &szNick,const QString &szRemoteUrl)
+{
+ if(!m_pPendingAvatarChanges)return 0;
+
+ KviPendingAvatarChange * p;
+
+ for(p = m_pPendingAvatarChanges->first();p;p = m_pPendingAvatarChanges->next())
+ {
+ if(!pConsole || (p->pConsole == pConsole))
+ {
+ if(szNick.isNull() || (szNick == p->szNick))
+ {
+ if(szRemoteUrl == p->szRemoteUrl)return p;
+ }
+ }
+ }
+
+ return 0;
+}
+
+void KviApp::fileDownloadTerminated(bool bSuccess,const QString &szRemoteUrl,const QString &szLocalFileName,const QString &szNick,const QString &szError,bool bQuiet)
+{
+
+ KviPendingAvatarChange * p;
+
+ if(m_pPendingAvatarChanges)p = findPendingAvatarChange(0,szNick,szRemoteUrl);
+ else p = 0;
+
+ if(!p)
+ {
+ // signal dcc completion only for NON-avatars
+ // FIXME: This option is misnamed and misplaced in the options dialog :(
+ // it seems to refer only to DCC while it refers to any file transfer
+ if(KVI_OPTION_BOOL(KviOption_boolNotifyDccSendSuccessInNotifier) && (!bQuiet))
+ {
+ if(!g_pActiveWindow)return;
+ if(g_pActiveWindow->hasAttention())return;
+ QString szMsg;
+ int iIconId;
+ if(!bSuccess)
+ {
+ iIconId = KVI_SMALLICON_DCCERROR;
+ if(szNick.isEmpty())
+ szMsg = __tr2qs("File download failed");
+ else
+ szMsg = __tr2qs("File download from %1 failed").arg(szNick);
+ szMsg += ": ";
+ szMsg += szError;
+ szMsg += " (";
+ szMsg += szLocalFileName;
+ szMsg += ")";
+ } else {
+ iIconId = KVI_SMALLICON_DCCMSG;
+ if(szNick.isEmpty())
+ szMsg = __tr2qs("File download successfully complete");
+ else
+ szMsg = __tr2qs("File download from %1 successfully complete").arg(szNick);
+ szMsg += " (";
+ szMsg += szLocalFileName;
+ szMsg += ")";
+ }
+#ifdef COMPILE_USE_QT4
+ notifierMessage(0,iIconId,Qt::escape(szMsg),30);
+#else
+ notifierMessage(0,iIconId,QStyleSheet::escape(szMsg),30);
+#endif
+ }
+ return;
+ }
+
+ if(bSuccess)
+ {
+ if(windowExists(p->pConsole))
+ {
+ p->pConsole->setAvatar(p->szNick,p->szUser,p->szHost,
+ szLocalFileName,KviQString::equalCIN("http://",szRemoteUrl,7) ? szRemoteUrl : QString::null);
+ }
+ } else {
+ if((!_OUTPUT_MUTE) && (!bQuiet))
+ {
+ p->pConsole->output(KVI_OUT_AVATAR,__tr2qs("Avatar download failed for %Q!%Q@%Q and url %Q: %Q"),
+ &(p->szNick),&(p->szUser),&(p->szHost),&(szRemoteUrl),&(szError));
+ }
+ }
+
+ m_pPendingAvatarChanges->removeRef(p);
+
+ if(m_pPendingAvatarChanges->count() == 0)
+ {
+ delete m_pPendingAvatarChanges;
+ m_pPendingAvatarChanges = 0;
+ }
+}
+
+
+
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+
+ #ifdef COMPILE_KDE_SUPPORT
+
+ #include <netwm.h>
+
+ void KviApp::downloadKdeRootPixmap()
+ {
+ if(g_pKdeDesktopBackground)
+ {
+ delete g_pKdeDesktopBackground;
+ g_pKdeDesktopBackground = 0;
+ // this signal shouldn't be connected ,but well.. let's make sure
+ disconnect(this,SIGNAL(backgroundChanged(int)),this,SLOT(kdeRootPixmapChanged(int)));
+ }
+ g_pKdeDesktopBackground = 0;
+
+ // This has been extracted from the KDELIBS KRootPixmap interface
+#if 0
+ #warning "The following warning will disappear soon..."
+ // FIXME: this form should be used starting from KDE 3.2
+ unsigned long l = NET::CurrentDesktop;
+ NETRootInfo rinfo( qt_xdisplay(), &l ,1 ,-1,true);
+#else
+ NETRootInfo rinfo(qt_xdisplay(),NET::CurrentDesktop);
+#endif
+ rinfo.activate();
+
+ QString name = QString("DESKTOP%1").arg(rinfo.currentDesktop());
+
+ g_pKdeDesktopBackground = new KSharedPixmap();
+ connect(g_pKdeDesktopBackground,SIGNAL(done(bool)),this,SLOT(kdeRootPixmapDownloadComplete(bool)));
+
+ if(!(g_pKdeDesktopBackground->isAvailable(name)))
+ {
+ // Pixmap not available!!!
+ delete g_pKdeDesktopBackground;
+ g_pKdeDesktopBackground = 0;
+ if(m_bUpdatePseudoTransparencyPending)return; // Already sent a request....
+ // Send a request to kdesktop....
+ DCOPClient *client = kapp->dcopClient();
+ if(!client->isAttached())client->attach();
+ QByteArray data;
+ QDataStream args(data,IO_WriteOnly);
+ args << 1;
+ client->send("kdesktop","KBackgroundIface","setExport(int)",data);
+ m_bUpdatePseudoTransparencyPending = true;
+ // Now wait a while and try again....
+ QTimer::singleShot(500,this,SLOT(updatePseudoTransparency()));
+ return;
+ }
+
+ if(!g_pKdeDesktopBackground->loadFromShared(QString("DESKTOP%1").arg(rinfo.currentDesktop())))
+ {
+ debug("Can't load the KDE root background image...");
+ delete g_pKdeDesktopBackground;
+ g_pKdeDesktopBackground = 0;
+ } //else {
+ // debug("Root pixmap downalod initiated");
+ //}
+ }
+
+ #endif //COMPILE_KDE_SUPPORT
+
+ void KviApp::destroyPseudoTransparency()
+ {
+#ifdef COMPILE_KDE_SUPPORT
+ if(g_pKdeDesktopBackground)
+ {
+ delete g_pKdeDesktopBackground;
+ g_pKdeDesktopBackground = 0;
+ }
+ // forget the backgroundChanged signal (will do nothing if it is not connected)
+ disconnect(this,SIGNAL(backgroundChanged(int)),this,SLOT(kdeRootPixmapChanged(int)));
+#endif //COMPILE_KDE_SUPPORT
+ if(g_pShadedParentGlobalDesktopBackground)
+ {
+ delete g_pShadedParentGlobalDesktopBackground;
+ g_pShadedParentGlobalDesktopBackground = 0;
+ }
+ if(g_pShadedChildGlobalDesktopBackground)
+ {
+ delete g_pShadedChildGlobalDesktopBackground;
+ g_pShadedChildGlobalDesktopBackground = 0;
+ }
+ }
+
+ void KviApp::triggerUpdatePseudoTransparency()
+ {
+ if(m_bUpdatePseudoTransparencyPending)return;
+ m_bUpdatePseudoTransparencyPending = true;
+ QTimer::singleShot(0,this,SLOT(updatePseudoTransparency()));
+ }
+
+#ifdef COMPILE_KDE_SUPPORT
+
+ #define kimageeffect_fade KImageEffect::fade
+
+#else //!COMPILE_KDE_SUPPORT
+
+ //
+ // This function is taken from the KDE kimageeffect.cpp
+ // The authors listed at the top of the file are :)
+ // Copyright (C) 1998, 1999 Christian Tibirna <[email protected]>
+ // (C) 1998, 1999 Daniel M. Duley <[email protected]>
+ // (C) 1998, 1999 Dirk A. Mueller <[email protected]>
+ // (C) 2000 Josef Weidendorfer <[email protected]>
+ //
+
+ QImage& kimageeffect_fade(QImage &img,float val,const QColor &color)
+ {
+ if(img.width() == 0 || img.height() == 0)return img;
+
+ // We don't handle bitmaps
+ if (img.depth() == 1)return img;
+
+ unsigned char tbl[256];
+ for (int i=0; i<256; i++)tbl[i] = (int) (val * i + 0.5);
+
+ int red = color.red();
+ int green = color.green();
+ int blue = color.blue();
+
+ QRgb col;
+ int r, g, b, cr, cg, cb;
+
+ if (img.depth() <= 8)
+ {
+ // pseudo color
+ for(int i=0; i<img.numColors(); i++)
+ {
+ col = img.color(i);
+ cr = qRed(col); cg = qGreen(col); cb = qBlue(col);
+ if (cr > red)r = cr - tbl[cr - red];
+ else r = cr + tbl[red - cr];
+ if (cg > green)g = cg - tbl[cg - green];
+ else g = cg + tbl[green - cg];
+ if (cb > blue)b = cb - tbl[cb - blue];
+ else b = cb + tbl[blue - cb];
+ img.setColor(i, qRgb(r, g, b));
+ }
+ } else {
+ // truecolor
+ for(int y=0; y<img.height(); y++)
+ {
+ QRgb *data = (QRgb *) img.scanLine(y);
+ for (int x=0; x<img.width(); x++)
+ {
+ col = *data;
+ cr = qRed(col); cg = qGreen(col); cb = qBlue(col);
+ if (cr > red)r = cr - tbl[cr - red];
+ else r = cr + tbl[red - cr];
+ if (cg > green)g = cg - tbl[cg - green];
+ else g = cg + tbl[green - cg];
+ if (cb > blue)b = cb - tbl[cb - blue];
+ else b = cb + tbl[blue - cb];
+ *data++ = qRgb(r, g, b);
+ }
+ }
+ }
+ return img;
+ }
+
+#endif //!COMPILE_KDE_SUPPORT
+
+ void KviApp::createGlobalBackgrounds(QPixmap * pix)
+ {
+ // create shaded copies...
+ if(g_pShadedParentGlobalDesktopBackground)delete g_pShadedParentGlobalDesktopBackground;
+ if(g_pShadedChildGlobalDesktopBackground)delete g_pShadedChildGlobalDesktopBackground;
+ g_pShadedParentGlobalDesktopBackground = new QPixmap();
+ g_pShadedChildGlobalDesktopBackground = new QPixmap();
+ QImage img = pix->convertToImage();
+ // play with the fade factors
+ KVI_OPTION_UINT(KviOption_uintGlobalTransparencyParentFadeFactor) %= 100;
+ if(KVI_OPTION_UINT(KviOption_uintGlobalTransparencyParentFadeFactor) > 0)
+ {
+ g_pShadedParentGlobalDesktopBackground->convertFromImage(
+ kimageeffect_fade(img,
+ (float)((float)KVI_OPTION_UINT(KviOption_uintGlobalTransparencyParentFadeFactor) / (float)100),
+ KVI_OPTION_COLOR(KviOption_colorGlobalTransparencyFade)),0);
+ }
+ KVI_OPTION_UINT(KviOption_uintGlobalTransparencyChildFadeFactor) %= 100;
+ if(KVI_OPTION_UINT(KviOption_uintGlobalTransparencyChildFadeFactor) > 0)
+ {
+ g_pShadedChildGlobalDesktopBackground->convertFromImage(
+ kimageeffect_fade(img,
+ (float)((float)KVI_OPTION_UINT(KviOption_uintGlobalTransparencyChildFadeFactor) / (float)100),
+ KVI_OPTION_COLOR(KviOption_colorGlobalTransparencyFade)),0);
+ }
+ if(g_pFrame)g_pFrame->updatePseudoTransparency();
+ }
+
+#endif //COMPILE_PSEUDO_TRANSPARENCY
+
+void KviApp::kdeRootPixmapChanged(int iDesktop)
+{
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ #ifdef COMPILE_KDE_SUPPORT
+ if(!KVI_OPTION_BOOL(KviOption_boolUpdateKdeBackgroundOnChange))return;
+ NETRootInfo rinfo(qt_xdisplay(),NET::CurrentDesktop);
+ rinfo.activate();
+ if(iDesktop == rinfo.currentDesktop())
+ updatePseudoTransparency();
+ #endif
+#endif //COMPILE_PSEUDO_TRANSPARENCY
+}
+
+void KviApp::kdeRootPixmapDownloadComplete(bool bSuccess)
+{
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ #ifdef COMPILE_KDE_SUPPORT
+ if(!bSuccess)
+ {
+ debug("Failed to download the KDE root background image...");
+ } else {
+ // downloaded!
+ // create shaded copies...
+ createGlobalBackgrounds(g_pKdeDesktopBackground);
+ // make sure that this signal is not connected twice
+ disconnect(this,SIGNAL(backgroundChanged(int)),this,SLOT(kdeRootPixmapChanged(int)));
+ // connect it
+ connect(this,SIGNAL(backgroundChanged(int)),this,SLOT(kdeRootPixmapChanged(int)));
+ }
+ delete g_pKdeDesktopBackground;
+ g_pKdeDesktopBackground = 0;
+ #endif //COMPILE_KDE_SUPPORT
+#endif //COMPILE_PSEUDO_TRANSPARENCY
+}
+
+
+void KviApp::updatePseudoTransparency()
+{
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ m_bUpdatePseudoTransparencyPending = false;
+ if(KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency))
+ {
+#ifdef COMPILE_KDE_SUPPORT
+ if(KVI_OPTION_BOOL(KviOption_boolObtainGlobalBackgroundFromKde))
+ {
+ downloadKdeRootPixmap();
+ } else {
+#endif //COMPILE_KDE_SUPPORT
+ if(KVI_OPTION_PIXMAP(KviOption_pixmapGlobalTransparencyBackground).pixmap())
+ {
+ createGlobalBackgrounds(KVI_OPTION_PIXMAP(KviOption_pixmapGlobalTransparencyBackground).pixmap());
+ } else {
+ destroyPseudoTransparency();
+ KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency) = false;
+ }
+#ifdef COMPILE_KDE_SUPPORT
+ }
+#endif //COMPILE_KDE_SUPPORT
+ } else {
+ destroyPseudoTransparency();
+ if(g_pFrame)g_pFrame->updatePseudoTransparency();
+ }
+#endif //COMPILE_PSEUDO_TRANSPARENCY
+}
+
+
+void KviApp::triggerUpdateGui()
+{
+ if(m_bUpdateGuiPending)return;
+ m_bUpdateGuiPending = true;
+ QTimer::singleShot(0,this,SLOT(updateGui()));
+}
+
+void KviApp::updateGui()
+{
+ m_bUpdateGuiPending = false;
+ g_pFrame->applyOptions();
+}
+
+void KviApp::updateApplicationFont()
+{
+ if(KVI_OPTION_BOOL(KviOption_boolUseGlobalApplicationFont))
+ {
+ if(font() != KVI_OPTION_FONT(KviOption_fontApplication))
+ setFont(KVI_OPTION_FONT(KviOption_fontApplication),true);
+ }
+ // FIXME: #warning "And what if this option is turned off ?...a reboot only"
+}
+
+void KviApp::loadRecentEntries()
+{
+ QString tmp;
+ getLocalKvircDirectory(tmp,Config,KVI_CONFIGFILE_RECENT);
+ KviConfig cfg(tmp,KviConfig::Read);
+ *g_pRecentTopicList = cfg.readStringListEntry("RecentTopicList",QStringList());
+ //*g_pBookmarkList = cfg.readStringListEntry("Bookmarks",QStringList());
+}
+void KviApp::saveRecentEntries()
+{
+ QString tmp;
+ getLocalKvircDirectory(tmp,Config,KVI_CONFIGFILE_RECENT);
+ KviConfig cfg(tmp,KviConfig::Write);
+ cfg.writeEntry("RecentTopicList",*g_pRecentTopicList);
+ //cfg.writeEntry("Bookmarks",*g_pBookmarkList);
+}
+
+void KviApp::saveAvatarCache()
+{
+ QString tmp;
+ getLocalKvircDirectory(tmp,Config,KVI_CONFIGFILE_AVATARCACHE);
+ KviAvatarCache::instance()->save(tmp);
+}
+
+
+void KviApp::saveToolBars()
+{
+ QString tmp;
+ getLocalKvircDirectory(tmp,Config,KVI_CONFIGFILE_CUSTOMTOOLBARS);
+ KviCustomToolBarManager::instance()->save(tmp);
+}
+
+void KviApp::savePopups()
+{
+ QString tmp;
+ getLocalKvircDirectory(tmp,Config,KVI_CONFIGFILE_POPUPS);
+ KviKvs::savePopups(tmp);
+}
+
+void KviApp::saveInputHistory()
+{
+ if(!KVI_OPTION_BOOL(KviOption_boolDisableInputHistory))
+ {
+ QString tmp;
+ getLocalKvircDirectory(tmp,Config,KVI_CONFIGFILE_INPUTHISTORY);
+ g_pInputHistory->save(tmp);
+ }
+}
+
+
+void KviApp::saveAliases()
+{
+ QString tmp;
+ getLocalKvircDirectory(tmp,Config,KVI_CONFIGFILE_ALIASES);
+ KviKvs::saveAliases(tmp);
+}
+
+void KviApp::saveScriptAddons()
+{
+ QString tmp;
+ getLocalKvircDirectory(tmp,Config,KVI_CONFIGFILE_SCRIPTADDONS);
+ KviKvs::saveScriptAddons(tmp);
+}
+
+void KviApp::saveTextIcons()
+{
+ g_pTextIconManager->save();
+}
+
+void KviApp::saveAppEvents()
+{
+ QString tmp;
+ getLocalKvircDirectory(tmp,Config,KVI_CONFIGFILE_EVENTS);
+ KviKvs::saveAppEvents(tmp);
+}
+
+void KviApp::saveRawEvents()
+{
+ QString tmp;
+ getLocalKvircDirectory(tmp,Config,KVI_CONFIGFILE_RAWEVENTS);
+ KviKvs::saveRawEvents(tmp);
+}
+
+void KviApp::saveMediaTypes()
+{
+ QString tmp;
+ getLocalKvircDirectory(tmp,Config,KVI_CONFIGFILE_MEDIATYPES);
+ g_pMediaManager->lock();
+ g_pMediaManager->save(tmp);
+ g_pMediaManager->unlock();
+}
+
+void KviApp::saveIrcServerDataBase()
+{
+ QString tmp;
+ getLocalKvircDirectory(tmp,Config,KVI_CONFIGFILE_SERVERDB);
+ g_pIrcServerDataBase->save(tmp);
+}
+
+void KviApp::saveProxyDataBase()
+{
+ QString tmp;
+ getLocalKvircDirectory(tmp,Config,KVI_CONFIGFILE_PROXYDB);
+ g_pProxyDataBase->save(tmp);
+}
+
+void KviApp::saveRegisteredUsers()
+{
+ QString tmp;
+ getLocalKvircDirectory(tmp,Config,KVI_CONFIGFILE_REGUSERDB);
+ g_pRegisteredUserDataBase->save(tmp);
+}
+
+void KviApp::saveRegisteredChannels()
+{
+ QString tmp;
+ getLocalKvircDirectory(tmp,Config,KVI_CONFIGFILE_REGCHANDB);
+ g_pRegisteredChannelDataBase->save(tmp);
+}
+
+void KviApp::saveNickServ()
+{
+ QString tmp;
+ getLocalKvircDirectory(tmp,Config,KVI_CONFIGFILE_NICKSERVDATABASE);
+ g_pNickServRuleSet->save(tmp);
+}
+
+void KviApp::saveSharedFiles()
+{
+ QString tmp;
+ getLocalKvircDirectory(tmp,Config,KVI_CONFIGFILE_SHAREDFILES);
+ g_pSharedFilesManager->save(tmp);
+}
+
+void KviApp::saveActions()
+{
+ QString tmp;
+ getLocalKvircDirectory(tmp,Config,KVI_CONFIGFILE_USERACTIONS);
+ KviActionManager::instance()->save(tmp);
+}
+
+void KviApp::saveIdentities()
+{
+ QString tmp;
+ getLocalKvircDirectory(tmp,Config,KVI_CONFIGFILE_IDENTITIES);
+ KviUserIdentityManager::instance()->save(tmp);
+}
+
+void KviApp::saveConfiguration()
+{
+ // this is NOT called when the application is closing down
+ KviCustomToolBarManager::instance()->storeVisibilityState();
+ saveOptions();
+ saveIdentities();
+ saveActions();
+ saveIrcServerDataBase();
+ saveProxyDataBase();
+ saveRecentEntries();
+ saveAvatarCache();
+ saveAppEvents();
+ saveRawEvents();
+ saveMediaTypes();
+ saveRegisteredUsers();
+ saveRegisteredChannels();
+ saveNickServ();
+ saveSharedFiles();
+ savePopups();
+ saveToolBars();
+ saveAliases();
+ saveTextIcons();
+ saveInputHistory();
+ saveScriptAddons();
+ KviKvs::flushUserClasses();
+ g_pWinPropertiesConfig->sync();
+}
+
+void KviApp::autoConnectToServers()
+{
+ KviPointerList<KviIrcServer> * l = g_pIrcServerDataBase->autoConnectOnStartupServers();
+ if(l)
+ {
+ for(KviIrcServer * s = l->first();s;s = l->next())
+ {
+ QString szCommand = "server -u \"id:";
+ if(s->id().isEmpty())s->generateUniqueId();
+ szCommand += s->id();
+ szCommand += "\"";
+ KviKvsScript::run(szCommand,activeConsole());
+ }
+ g_pIrcServerDataBase->clearAutoConnectOnStartupServers();
+ }
+
+ KviPointerList<KviIrcServerDataBaseRecord> * lr = g_pIrcServerDataBase->autoConnectOnStartupNetworks();
+ if(lr)
+ {
+ for(KviIrcServerDataBaseRecord * r = lr->first();r;r = lr->next())
+ {
+ QString szCommandx = "server -u \"net:";
+ szCommandx += r->network()->name();
+ szCommandx += "\"";
+ KviKvsScript::run(szCommandx,activeConsole());
+ }
+ g_pIrcServerDataBase->clearAutoConnectOnStartupNetworks();
+ }
+}
+
+
+void KviApp::createFrame()
+{
+ if(g_pFrame)debug("WARNING: Creating the main frame twice!");
+ g_pFrame = new KviFrame();
+ g_pFrame->createNewConsole(true);
+
+ if(m_szExecAfterStartup.hasData())
+ {
+ // FIXME , this should be a QString
+ KviKvsScript::run(m_szExecAfterStartup.ptr(),g_pFrame->firstConsole());
+ m_szExecAfterStartup = "";
+ }
+
+ // auto connect to servers if needed
+ if(g_pIrcServerDataBase->autoConnectOnStartupServers() || g_pIrcServerDataBase->autoConnectOnStartupNetworks())
+ {
+ autoConnectToServers();
+ }
+
+ if(KVI_OPTION_BOOL(KviOption_boolShowDockExtension))
+ g_pFrame->executeInternalCommand(KVI_INTERNALCOMMAND_DOCKWIDGET_SHOW);
+
+ if(KVI_OPTION_BOOL(KviOption_boolStartupMinimized))
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolMinimizeInTray) && KVI_OPTION_BOOL(KviOption_boolShowDockExtension))
+ {
+ g_pFrame->hide();
+ } else {
+ g_pFrame->showMinimized();
+ }
+ } else {
+ g_pFrame->show();
+ }
+}
+
+void KviApp::destroyFrame()
+{
+ if(g_pFrame)delete g_pFrame;
+ g_pActiveWindow = 0;
+ quit();
+}
+
+bool KviApp::connectionExists(KviIrcConnection *cnn)
+{
+ KviPointerHashTableIterator<const char *,KviWindow> it(*g_pGlobalWindowDict);
+
+ while(it.current())
+ {
+ if(it.current()->connection() == cnn)return true;
+ ++it;
+ }
+ return false;
+}
+
+
+bool KviApp::windowExists(KviWindow *wnd)
+{
+ KviPointerHashTableIterator<const char *,KviWindow> it(*g_pGlobalWindowDict);
+
+ while(it.current())
+ {
+ if(it.current() == wnd)return true;
+ ++it;
+ }
+ return false;
+}
+
+unsigned int KviApp::windowCount()
+{
+ return g_pGlobalWindowDict->count();
+}
+
+KviConsole * KviApp::findConsole(QString &server,QString &nick)
+{
+ KviPointerHashTableIterator<const char *,KviWindow> it(*g_pGlobalWindowDict);
+
+ while(it.current())
+ {
+ if(it.current()->type() == KVI_WINDOW_TYPE_CONSOLE)
+ {
+ if(((KviConsole *)it.current())->isConnected())
+ {
+ if(!server.isEmpty())
+ {
+ if(KviQString::equalCI(server,
+ ((KviConsole *)it.current())->connection()->currentServerName()))
+ {
+ if(!nick.isEmpty())
+ {
+ if(KviQString::equalCI(nick,
+ ((KviConsole *)it.current())->connection()->currentNickName()))
+ return ((KviConsole *)it.current());
+ } else return ((KviConsole *)it.current());
+ }
+ } else {
+ if(!nick.isEmpty())
+ {
+ if(KviQString::equalCI(nick,
+ ((KviConsole *)it.current())->connection()->currentNickName()))
+ return ((KviConsole *)it.current());
+ }
+ }
+ }
+ }
+ ++it;
+ }
+ return 0;
+}
+
+KviConsole * KviApp::findConsole(KviStr &server,KviStr &nick)
+{
+ // DEPRECATED: TO BE KILLED (if nobody is using it)
+ QString s = server.ptr();
+ QString n = nick.ptr();
+ return findConsole(s,n);
+}
+
+void KviApp::restartLagMeters()
+{
+ KviPointerHashTableIterator<const char *,KviWindow> it(*g_pGlobalWindowDict);
+
+ while(it.current())
+ {
+ if(it.current()->type() == KVI_WINDOW_TYPE_CONSOLE)
+ {
+ if(((KviConsole *)it.current())->connection())
+ ((KviConsole *)it.current())->connection()->restartLagMeter();
+ }
+ ++it;
+ }
+}
+
+void KviApp::restartNotifyLists()
+{
+ KviPointerHashTableIterator<const char *,KviWindow> it(*g_pGlobalWindowDict);
+
+ while(it.current())
+ {
+ if(it.current()->type() == KVI_WINDOW_TYPE_CONSOLE)
+ {
+ if(((KviConsole *)it.current())->connection())
+ ((KviConsole *)it.current())->connection()->restartNotifyList();
+ }
+ ++it;
+ }
+}
+
+void KviApp::resetAvatarForMatchingUsers(KviRegisteredUser * u)
+{
+ KviPointerHashTableIterator<const char *,KviWindow> it(*g_pGlobalWindowDict);
+
+ while(it.current())
+ {
+ if(it.current()->type() == KVI_WINDOW_TYPE_CONSOLE)
+ {
+ ((KviConsole *)it.current())->resetAvatarForMatchingUsers(u);
+ }
+ ++it;
+ }
+}
+
+KviConsole * KviApp::findConsole(unsigned int ircContextId)
+{
+ KviPointerHashTableIterator<const char *,KviWindow> it(*g_pGlobalWindowDict);
+
+ while(it.current())
+ {
+ if(it.current()->type() == KVI_WINDOW_TYPE_CONSOLE)
+ {
+ if(((KviConsole *)it.current())->ircContextId() == ircContextId)
+ return ((KviConsole *)it.current());
+ }
+ ++it;
+ }
+ return 0;
+}
+
+
+
+KviConsole * KviApp::topmostConnectedConsole()
+{
+ // check the foreground window console
+
+ KviConsole * c = activeConsole();
+ if(!c)return 0;
+ if(c->isConnected())return c;
+
+ // try ANY connected console
+
+ KviPointerHashTableIterator<const char *,KviWindow> it(*g_pGlobalWindowDict);
+
+ while(it.current())
+ {
+ if(it.current()->type() == KVI_WINDOW_TYPE_CONSOLE)
+ {
+ if(((KviConsole *)it.current())->isConnected())return (KviConsole *)(it.current());
+ }
+ ++it;
+ }
+
+ return 0;
+}
+
+KviWindow * KviApp::findWindow(const char * windowId)
+{
+ return g_pGlobalWindowDict->find(windowId);
+}
+
+KviWindow * KviApp::findWindowByCaption(const QString &windowCaption,int iContextId)
+{
+ KviPointerHashTableIterator<const char *,KviWindow> it(*g_pGlobalWindowDict);
+
+ while(it.current())
+ {
+ if(KviQString::equalCI(windowCaption,it.current()->plainTextCaption()) &&
+ (iContextId==-1 || it.current()->context()->id() == iContextId))
+ return it.current();
+ ++it;
+ }
+ return 0;
+}
+
+void KviApp::registerWindow(KviWindow *wnd)
+{
+ g_pGlobalWindowDict->insert(wnd->id(),wnd);
+}
+
+void KviApp::unregisterWindow(KviWindow *wnd)
+{
+ g_pGlobalWindowDict->remove(wnd->id());
+}
+
+
+KviConsole * KviApp::activeConsole()
+{
+ if(!g_pFrame)return 0;
+ if(g_pActiveWindow)
+ {
+ if(g_pActiveWindow->console())return g_pActiveWindow->console();
+ }
+ return g_pFrame->firstConsole();
+}
+
+
+/////////////////// RECENT STUFF LISTS & POPUPS HANDLING
+
+// Helper for KviApp::addRecent*()
+static void merge_to_stringlist_option(const QString &item,int iOption,int iMaxEntries)
+{
+ for(QStringList::Iterator it = KVI_OPTION_STRINGLIST(iOption).begin();
+ it != KVI_OPTION_STRINGLIST(iOption).end(); ++it)
+ {
+ // Do a case-insensitive search (for nicknames, servers, and channels)
+ if(!QString::compare(item.lower(),(*it).lower()))
+ {
+ // In the recent list, remove and put as first so more recent items
+ // are always first
+ it = KVI_OPTION_STRINGLIST(iOption).remove(it);
+ --it;
+ }
+ }
+ while(KVI_OPTION_STRINGLIST(iOption).count() >= (unsigned int)iMaxEntries)
+ {
+ KVI_OPTION_STRINGLIST(iOption).remove(KVI_OPTION_STRINGLIST(iOption).fromLast());
+ }
+ KVI_OPTION_STRINGLIST(iOption).prepend(item);
+}
+
+void KviApp::addRecentUrl(const QString& text)
+{
+ merge_to_stringlist_option(text,KviOption_stringlistRecentIrcUrls,50);
+ emit(recentUrlsChanged());
+}
+
+void KviApp::addRecentNickname(const char * newNick)
+{
+ QString nk(newNick);
+ merge_to_stringlist_option(nk,KviOption_stringlistRecentNicknames,KVI_MAX_RECENT_NICKNAMES);
+}
+
+void KviApp::addRecentNickname(const QString& newNick)
+{
+ merge_to_stringlist_option(newNick,KviOption_stringlistRecentNicknames,KVI_MAX_RECENT_NICKNAMES);
+}
+
+void KviApp::addRecentChannel(const QString& szChan,const QString& net)
+{
+ if(!m_pRecentChannelsDict)
+ buildRecentChannels();
+ QStringList* pList=m_pRecentChannelsDict->find(net.utf8().data());
+ if(pList)
+ {
+ if(!pList->contains(szChan)) pList->append(szChan);
+ }
+ else
+ {
+ pList=new QStringList(szChan);
+ m_pRecentChannelsDict->insert(net.utf8().data(),pList);
+ }
+}
+
+void KviApp::buildRecentChannels()
+{
+ if(m_pRecentChannelsDict)
+ delete m_pRecentChannelsDict;
+ m_pRecentChannelsDict = new KviPointerHashTable<const char *,QStringList>;
+ m_pRecentChannelsDict->setAutoDelete(TRUE);
+ QString szChan,szNet;
+ for (
+ QStringList::Iterator it = KVI_OPTION_STRINGLIST(KviOption_stringlistRecentChannels).begin();
+ it != KVI_OPTION_STRINGLIST(KviOption_stringlistRecentChannels).end();
+ ++it
+ )
+ {
+ if(!(*it).isEmpty())
+ {
+ szChan = (*it).section( KVI_RECENT_CHANNELS_SEPARATOR, 0, 0 );
+ szNet = (*it).section( KVI_RECENT_CHANNELS_SEPARATOR, 1 );
+ if(!szNet.isEmpty())
+ {
+ QStringList* pList=m_pRecentChannelsDict->find(szNet.utf8().data());
+ if(pList)
+ {
+ if(!pList->contains(szChan)) pList->append(szChan);
+ }
+ else
+ {
+ pList=new QStringList(szChan);
+ m_pRecentChannelsDict->insert(szNet.utf8().data(),pList);
+ }
+ }
+ }
+ }
+}
+
+void KviApp::saveRecentChannels()
+{
+ if(!m_pRecentChannelsDict) return;
+ QString szTmp;
+ KVI_OPTION_STRINGLIST(KviOption_stringlistRecentChannels).clear();
+ KviPointerHashTableIterator<const char *,QStringList> it( *m_pRecentChannelsDict );
+ for( ; it.current(); ++it )
+ {
+ for ( QStringList::Iterator it_str = it.current()->begin(); it_str != it.current()->end(); ++it_str ) {
+ szTmp=*it_str;
+ szTmp.append(KVI_RECENT_CHANNELS_SEPARATOR);
+ szTmp.append(it.currentKey());
+ KVI_OPTION_STRINGLIST(KviOption_stringlistRecentChannels).append(szTmp);
+ }
+ }
+}
+
+QStringList* KviApp::getRecentChannels(const QString& net)
+{
+ if(!m_pRecentChannelsDict) buildRecentChannels();
+ return m_pRecentChannelsDict->find(net.utf8().data());
+}
+
+
+void KviApp::addRecentServer(const QString& server)
+{
+ merge_to_stringlist_option(server,KviOption_stringlistRecentServers,KVI_MAX_RECENT_SERVERS);
+}
+
+void KviApp::fillRecentServersPopup(KviTalPopupMenu * m)
+{
+// FIXME: #warning "MAYBE DISABLE THE SERVERS THAT WE ARE ALREADY CONNECTED TO ?"
+ m->clear();
+ for(QStringList::Iterator it = KVI_OPTION_STRINGLIST(KviOption_stringlistRecentServers).begin(); it != KVI_OPTION_STRINGLIST(KviOption_stringlistRecentServers).end(); ++it)
+ {
+ m->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SERVER)),*it);
+ }
+}
+
+void KviApp::fillRecentNicknamesPopup(KviTalPopupMenu * m,KviConsole * pConsole)
+{
+ m->clear();
+ int id;
+ bool bAlreadyFound = false;
+ for(QStringList::Iterator it = KVI_OPTION_STRINGLIST(KviOption_stringlistRecentNicknames).begin(); it != KVI_OPTION_STRINGLIST(KviOption_stringlistRecentNicknames).end(); ++it)
+ {
+ id = m->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_NICK)),*it);
+ if(!pConsole->isConnected())m->setItemEnabled(id,false);
+ else {
+ if(!bAlreadyFound)
+ {
+ bool bIsCurrent = KviQString::equalCS(pConsole->connection()->currentNickName(),*it);
+ m->setItemEnabled(id,!bIsCurrent);
+ if(bIsCurrent)bAlreadyFound = true;
+ }
+ }
+ }
+}
+
+void KviApp::fillRecentChannelsPopup(KviTalPopupMenu * m,KviConsole * pConsole)
+{
+ m->clear();
+ int id;
+ QStringList* pList=getRecentChannels(pConsole->currentNetworkName());
+ if(pList)
+ {
+ for(QStringList::Iterator it = pList->begin(); it != pList->end(); ++it)
+ {
+ id = m->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CHANNEL)),*it);
+ if(!pConsole->isConnected())m->setItemEnabled(id,false);
+ else {
+ m->setItemEnabled(id,!(pConsole->connection()->findChannel(*it)));
+ }
+ }
+ }
+}
+
+
+/*
+void KviApp::fillRecentServersListBox(KviTalListBox * l)
+{
+ l->clear();
+ for(QStringList::Iterator it = KVI_OPTION_STRINGLIST(KviOption_stringlistRecentServers).begin(); it != KVI_OPTION_STRINGLIST(KviOption_stringlistRecentServers).end(); ++it)
+ l->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SERVER)),*it);
+}
+*/
+
+
+
+
+bool KviApp::playFile(const char * filename,KviStr &error,KviWindow * w)
+{
+ g_pMediaManager->lock();
+ KviMediaType * m = g_pMediaManager->findMediaType(filename);
+ if(m)
+ {
+ KviStr szCommandline = m->szCommandline;
+ KviStr szDescription = m->szDescription;
+ g_pMediaManager->unlock();
+ if(szCommandline.hasData())
+ {
+ KviKvsVariantList l;
+ l.append(new KviKvsVariant(QString(filename)));
+
+ if(!KviKvsScript::run(szCommandline.ptr(),w ? w : g_pActiveWindow,&l))
+ {
+ error.sprintf(__tr("The commandline for media type '%s' seems to be broken"),szDescription.ptr());
+ return false;
+ }
+ } else {
+ error.sprintf(__tr("Media type of file %s matched to '%s' but no commandline specified"),filename,szDescription.ptr());
+ return false;
+ }
+ } else {
+ g_pMediaManager->unlock();
+ error.sprintf(__tr("No idea on how to play file %s (no media type match)"),filename);
+ return false;
+ }
+ return true;
+}
+
+void KviApp::heartbeat(kvi_time_t tNow)
+{
+ if(g_pApp->topmostConnectedConsole())
+ {
+ // FIXME: this has huge precision problems...
+ KVI_OPTION_UINT(KviOption_uintTotalConnectionTime)++;
+ }
+
+ // the line below is an approximation of (tNow / 120) == 0
+ // we don't need a really great precision here, so 128 is still ok
+ if(!(tNow & 0x7f))
+ KviDoubleBuffer::heartbeat();
+}
+
+void KviApp::timerEvent(QTimerEvent *e)
+{
+ if(e->timerId() != m_iHeartbeatTimerId)
+ {
+ QObject::timerEvent(e);
+ return;
+ }
+
+ // our heartbeat
+
+ kvi_time_t tNow = kvi_unixTime();
+
+ heartbeat(tNow);
+}
+
+// qvariant.h uses this , and it is included by the qt generated moc file for Qt >= 3.0.0
+#ifdef Bool
+ #undef Bool
+#endif
+
+
+#include "kvi_app.moc"
diff --git a/src/kvirc/kernel/kvi_app.h b/src/kvirc/kernel/kvi_app.h
new file mode 100644
index 00000000..d31bd401
--- /dev/null
+++ b/src/kvirc/kernel/kvi_app.h
@@ -0,0 +1,344 @@
+#ifndef _KVI_APP_H_
+#define _KVI_APP_H_
+
+//=============================================================================
+//
+// File : kvi_app.h
+// Creation date : Sun Jun 18 2000 12:40:00 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_string.h"
+#include "kvi_qstring.h"
+#include "kvi_tal_application.h"
+#include "kvi_pointerlist.h"
+#include "kvi_time.h"
+#include "kvi_pointerhashtable.h" // ?
+
+#define KVI_RECENT_CHANNELS_SEPARATOR ":"
+
+#ifdef COMPILE_ON_WINDOWS
+ // The brain damaged MSVC compiler can't instantiate templates without this
+ #include "kvi_frame.h"
+ #include "kvi_window.h"
+#else // !COMPILE_ON_WINDOWS
+ class KviFrame;
+ class KviWindow;
+#endif // !COMPILE_ON_WINDOWS
+
+#ifndef COMPILE_NO_IPC
+ class KviIpcSentinel;
+#endif // !COMPILE_NO_IPC
+
+class KviTalPopupMenu;
+class QPixmap;
+class KviTalListBox;
+class QTextCodec;
+class QDomElement;
+
+class KviConsole;
+class KviConfig;
+class KviRegisteredUser;
+class KviIrcConnection;
+class KviIrcServerDataBase;
+
+typedef struct _KviPendingAvatarChange
+{
+ KviConsole * pConsole;
+ QString szRemoteUrl;
+ QString szNick;
+ QString szUser;
+ QString szHost;
+} KviPendingAvatarChange;
+
+#ifdef Unsorted
+ #undef Unsorted
+#endif
+#ifdef None
+ #undef None
+#endif
+
+class KVIRC_API KviApp : public KviTalApplication
+{
+ friend class KviFrame;
+ friend class KviWindow;
+ friend class KviSetupWizard; // this resides in a module!
+ Q_OBJECT
+public:
+ KviApp(int &argc,char ** argv);
+ ~KviApp();
+
+protected:
+ // directories
+ QString m_szGlobalKvircDir;
+ QString m_szLocalKvircDir;
+ int m_iHeartbeatTimerId;
+ bool m_bFirstTimeRun;
+ KviWindow * m_pActiveWindow;
+ bool m_bUpdateGuiPending;
+ KviPointerList<KviPendingAvatarChange> * m_pPendingAvatarChanges;
+ bool m_bSetupDone;
+ KviPointerHashTable<const char *,QStringList> * m_pRecentChannelsDict;
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ bool m_bUpdatePseudoTransparencyPending;
+#endif
+#ifndef COMPILE_NO_IPC
+ KviIpcSentinel * m_pIpcSentinel;
+#endif
+public:
+ // setup stuff (accessed from kvi_main.cpp: consider private othwerise)
+ QString m_szConfigFile; // setup
+ bool m_bCreateConfig; // setup
+ KviStr m_szExecAfterStartup;
+ bool m_bShowSplashScreen;
+public:
+ // FIXME: "Plugins" and "ConfigPlugins" should become "Modules" and "ConfigModules"
+ enum KvircSubdir
+ {
+ None, Pics, Config ,
+ Help, HelpEN, HelpNoIntl,
+ Log, Incoming, Audio,
+ Scripts, Plugins, ConfigPlugins,
+ Trash, MsgColors, Charmaps,
+ Avatars, DefScript, License,
+ Modules, ConfigScripts, Filters,
+ Tmp, Locale, Themes,
+ Classes, SmallIcons, EasyPlugins
+ };
+
+public:
+
+ void getClipboardText(KviStr &buffer);
+ void setClipboardText(const KviStr &str);
+
+ QString getClipboardText();
+ void setClipboardText(const QString &str);
+
+
+ void collectGarbage(QObject * garbage);
+
+ void destroyFrame();
+ void setup(); // THIS SHOULD BE PRIVATE! (but is accessed from kvi_main.cpp)
+
+#ifndef COMPILE_NO_IPC
+ void ipcMessage(char * message);
+#endif
+
+ //static QTextCodec * defaultTextCodec();
+ //static const char * defaultTextEncoding();
+
+ static int getGloballyUniqueId(); // returns an unique integer identifier across the application
+
+ bool firstTimeRun(){ return m_bFirstTimeRun; };
+ void setupBegin();
+ void setupFinish();
+ inline void emitRecentUrlsChanged() { emit(recentUrlsChanged()); };
+
+ // kvi_app.cpp (Saving options)
+ void saveIrcServerDataBase();
+ void saveProxyDataBase();
+ void saveRecentEntries();
+ void saveAppEvents();
+ void saveRawEvents();
+ void saveMediaTypes();
+ void saveRegisteredUsers();
+ void saveSharedFiles();
+ void savePopups();
+ void saveAliases();
+ void saveNickServ();
+ void saveTextIcons();
+ void saveRegisteredChannels();
+ void saveInputHistory();
+ void saveAvatarCache();
+ void saveToolBars();
+ void saveActions();
+ void saveScriptAddons();
+ void saveIdentities();
+
+ // kvi_options.cpp : Options saving and loading (kvi.main.conf))
+ void loadOptions();
+ void saveOptions();
+
+ void listAvailableOptions(KviWindow *wnd);
+ bool getOptionString(const char * optName,QString &buffer);
+ bool setOptionValue(const char * optName,const QString &value);
+ void optionResetUpdate(int flags);
+
+ void contextSensitiveHelp();
+
+ // kvi_app_fs.cpp : Filesystem thingies
+ void getGlobalKvircDirectory(QString &szData,KvircSubdir dir,const QString &appendFile = QString::null);
+ void getGlobalKvircDirectory(KviStr &szData,KvircSubdir dir,const QString &appendFile = QString::null);
+ void getLocalKvircDirectory(KviStr &szData,KvircSubdir dir,const QString &appendFile = QString::null,bool bCreateIfNeeded = true);
+ void getLocalKvircDirectory(QString &szData,KvircSubdir dir,const QString &appendFile = QString::null,bool bCreateIfNeeded = true);
+ void getTmpFileName(QString &szBuffer,const QString &szEndingFileName = QString::null);
+ bool trashFile(const char *filename);
+ void getChannelDumpLogFileName(QString &str);
+
+ static QTextCodec * defaultTextCodec();
+
+ // if the mediatype can be guessed ,it is looked up in the media type save path
+ // if found , true is returned
+ // if not found or the mediatype can't be guessed then false is returned
+ bool findFileByMediaType(KviStr &szRetPath,const char * filename);
+
+ bool findImageInImageSearchPath(KviStr &szRetPath,const char * filename);
+ bool findImageInImageSearchPath(QString &szRetPath,const char * filename);
+
+ bool findUserFile(KviStr &szRetPath,const char *filename);
+
+ bool findImage(KviStr &szRetPath,const char *filename);
+ bool findImage(QString &szRetPath,const char *filename);
+ bool findImageThemeOnlyCompat(QString &szRetPath,const char *filename); // temporary compat, will be removed soon (do not use)
+ bool findSmallIcon(QString &szRetPath,const char *filename);
+ // tries to map the full path filename to one of the KVIrc's mapped directories
+ // if it doesn't succeed it just returns the complete filename in szRetPath
+ bool mapImageFile(KviStr &szRetPath,const char * filename);
+ bool mapImageFile(QString &szRetPath,const char * filename);
+
+ //void getDefaultDccSaveFilePath(KviStr &path,const char *filename);
+ void completeDirectory(const QString &word,KviPointerList<QString> * matches);
+ //
+ // Returns a config path suitable for reading (at least)
+ // First lookups the user local config directory,
+ // if no config file is found, it earches in the global one
+ // returns false if no config file has been found
+ // If bNoFail is true, the buffer is filled with the file name even
+ // if no config file has been found: in this case the local config
+ // directory is used
+ //
+ bool getReadOnlyConfigPath(KviStr &buffer,const char *config_name,KvircSubdir sbd = Config,bool bNoFail = false);
+ bool getReadOnlyConfigPath(QString &buffer,const char *config_name,KvircSubdir sbd = Config,bool bNoFail = false);
+
+ // kvi_app.cpp : Window stuff
+ KviWindow * findWindow(const char * windowId);
+ KviWindow * findWindowByCaption(const QString &windowCaption,int iContextId=-1);
+ KviConsole * findConsole(unsigned int ircContextId);
+ KviConsole * findConsole(KviStr & server,KviStr & nick);
+ KviConsole * findConsole(QString & servr,QString & nick);
+ KviConsole * topmostConnectedConsole();
+ KviConsole * activeConsole();
+ bool windowExists(KviWindow *wnd);
+ bool connectionExists(KviIrcConnection *cnn);
+ unsigned int windowCount();
+
+ // kvi_app.cpp : Utilities
+ void resetAvatarForMatchingUsers(KviRegisteredUser * u);
+ void restartNotifyLists();
+ void restartLagMeters();
+ void triggerUpdateGui();
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ void triggerUpdatePseudoTransparency();
+#endif
+
+ // kvi_app.cpp : DCC (and CTCP AVATAR & SOUND) related stuff
+ void setAvatarOnFileReceived(KviConsole * pConsole,const QString &szRemoteUrl,const QString &szNick,const QString &szUser,const QString &szHost);
+ KviPendingAvatarChange * findPendingAvatarChange(KviConsole * pConsole,const QString &szNick,const QString &szRemoteUrl);
+ void fileDownloadTerminated(bool bSuccess,const QString &szRemoteUrl,const QString &szLocalFileName,const QString &szNick = QString::null,const QString &szError = QString::null,bool bQuiet = false);
+
+ void setAvatarFromOptions();
+
+ bool playFile(const char * filename,KviStr &error,KviWindow * w = 0);
+
+ // uMessageLifetime is in seconds! and 0 means "forever"
+ void notifierMessage(KviWindow * pWnd,int iIconId,const QString &szMsg,unsigned int uMessageLifetime);
+
+
+ void addRecentNickname(const char * newNick);
+ void addRecentNickname(const QString& newNick);
+ void addRecentChannel(const QString& chan,const QString& net);
+ QStringList* getRecentChannels(const QString& net);
+
+ void addRecentServer(const QString& server);
+ void fillRecentServersPopup(KviTalPopupMenu * m);
+ void fillRecentNicknamesPopup(KviTalPopupMenu * m,KviConsole * pConsole);
+ void fillRecentChannelsPopup(KviTalPopupMenu * m,KviConsole * pConsole);
+
+ void autoConnectToServers();
+
+ void checkSuggestRestoreDefaultScript();
+
+ void loadDefaultScript();
+protected:
+ void buildRecentChannels();
+ void saveRecentChannels();
+ // kvi_app.cpp : KviWindow global database
+ void registerWindow(KviWindow *wnd);
+ void unregisterWindow(KviWindow *wnd);
+ void frameDestructorCallback();
+ void heartbeat(kvi_time_t tNow);
+ virtual void timerEvent(QTimerEvent *e);
+public slots:
+ // kvi_app.cpp : Slots
+ void saveConfiguration();
+ void updateGui();
+ void kdeRootPixmapDownloadComplete(bool bSuccess);
+ void kdeRootPixmapChanged(int iDesktop);
+ void updatePseudoTransparency();
+ void restoreDefaultScript();
+ void addRecentUrl(const QString& text);
+private:
+ void createSplashScreen();
+ void destroySplashScreen();
+
+ // kvi_app_setup.cpp : Setup stuff
+ void loadDirectories();
+ void findGlobalKvircDirectory();
+ bool findLocalKvircDirectory();
+ bool checkGlobalKvircDirectory(const QString);
+ bool checkLocalKvircDirectory(const QString);
+ bool checkFileAssociations();
+ void setupFileAssociations();
+
+ bool checkUriAssociations(char * proto);
+ void setupUriAssociations(char * proto);
+
+ void saveKvircDirectory();
+
+ // kvi_app.cpp : GUI stuff
+ void updateApplicationFont();
+
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ void createGlobalBackgrounds(QPixmap * pix);
+ void destroyPseudoTransparency();
+ #ifdef COMPILE_KDE_SUPPORT
+ void downloadKdeRootPixmap();
+ #endif //COMPILE_KDE_SUPPORT
+#endif //COMPILE_PSEUDO_TRANSPARENCY
+private:
+ // kvi_app.cpp : parts of setup()
+ void loadRecentEntries();
+#ifndef COMPILE_NO_IPC
+ void createIpcSentinel();
+ void destroyIpcSentinel();
+#endif //!COMPILE_NO_IPC
+ void createFrame();
+signals:
+ void reloadImages();
+ void recentUrlsChanged();
+};
+
+#ifndef _KVI_APP_CPP_
+ extern KVIRC_API KviApp * g_pApp;
+ extern KVIRC_API KviIrcServerDataBase * g_pIrcServerDataBase;
+#endif
+
+#endif //_KVI_APP_H_
diff --git a/src/kvirc/kernel/kvi_app_fs.cpp b/src/kvirc/kernel/kvi_app_fs.cpp
new file mode 100644
index 00000000..ee5eacd3
--- /dev/null
+++ b/src/kvirc/kernel/kvi_app_fs.cpp
@@ -0,0 +1,726 @@
+//=============================================================================
+//
+// File : kvi_app_fs.cpp
+// Creation date : Thu Dec 24 1998 04:05:26 by Szymon Stefanek
+//
+// This file is part of the Kvirc irc client distribution
+// Copyright (C) 1998-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_debug.h"
+#include "kvi_app.h"
+#include "kvi_locale.h"
+#include "kvi_fileutils.h"
+#include "kvi_mediatype.h"
+#include "kvi_env.h"
+#include "kvi_time.h"
+#include "kvi_options.h"
+#include "kvi_defaults.h"
+#include "kvi_iconmanager.h"
+
+#include <qdir.h>
+#include <qfileinfo.h>
+#include <qdatetime.h>
+
+extern KviMediaManager * g_pMediaManager;
+
+//============ getGlobalKvircDirectory ================//
+
+void KviApp::getGlobalKvircDirectory(QString &szData,KvircSubdir dir,const QString &appendFile)
+{
+ szData=m_szGlobalKvircDir;
+ KviQString::ensureLastCharIs(szData,KVI_PATH_SEPARATOR_CHAR);
+
+ switch(dir)
+ {
+ case None : break;
+ case Pics : szData.append("pics"); break;
+
+ // Local hack for Debian
+ case Modules :
+ case Plugins : szData = "/opt/kde3/lib/kvirc/" KVI_VERSION_BRANCH "/modules"; break;
+
+ case EasyPlugins : szData.append("easyplugins"); break;
+ case ConfigPlugins : KviQString::appendFormatted(szData,"config%smodules",KVI_PATH_SEPARATOR); break;
+ case ConfigScripts : KviQString::appendFormatted(szData,"config%sscripts",KVI_PATH_SEPARATOR); break;
+ case Help :
+ szData.append("help");
+ {
+ // Localized help
+ QString tmp(KviLocale::localeName().ptr());
+ tmp.prepend(KVI_PATH_SEPARATOR_CHAR);
+ tmp.prepend(szData);
+ if(KviFileUtils::directoryExists(tmp))szData = tmp;
+ else {
+ tmp = szData; KviQString::appendFormatted(tmp,"%sen",KVI_PATH_SEPARATOR);
+ if(KviFileUtils::directoryExists(tmp))szData = tmp;
+ }
+ }
+ break;
+ case HelpEN : KviQString::appendFormatted(szData,"help%sen",KVI_PATH_SEPARATOR); break;
+ case HelpNoIntl : szData.append("help"); break;
+ case Log : debug("WARNING Global log directory requested!"); break;
+ case Incoming : debug("WARNING Global incoming directory requested!"); break;
+ case Trash : debug("WARNING Global trash directory requested!"); break;
+ case Config : szData.append("config"); break;
+ case Audio : szData.append("audio"); break;
+ case Scripts : szData.append("scripts"); break;
+ case MsgColors : szData.append("msgcolors"); break;
+ case Charmaps : szData.append("charmaps"); break;
+ case Avatars : szData.append("avatars"); break;
+ case DefScript : szData.append("defscript"); break;
+ case License : szData.append("license"); break;
+ case Filters : szData.append("filters"); break;
+ case Locale : szData.append("locale"); break;
+ case Tmp : debug("WARNING Global tmp directory requested!"); break;
+ case Themes : szData.append("themes"); break;
+ case Classes : szData.append("classes"); break;
+ case SmallIcons : szData.append("pics"KVI_PATH_SEPARATOR KVI_SMALLICONS_SUBDIRECTORY); break;
+ }
+
+ if(!appendFile.isEmpty())
+ {
+ KviQString::ensureLastCharIs(szData,KVI_PATH_SEPARATOR_CHAR);
+ szData.append(appendFile);
+ }
+
+ KviFileUtils::adjustFilePath(szData);
+}
+
+void KviApp::getLocalKvircDirectory(QString &szData,KvircSubdir dir,const QString & appendFile,bool bCreateIfNeeded)
+{
+ szData=m_szLocalKvircDir;
+ KviQString::ensureLastCharIs(szData,KVI_PATH_SEPARATOR_CHAR);
+
+ switch(dir)
+ {
+ case None : break;
+ case Pics : szData.append("pics"); break;
+ case EasyPlugins : szData.append("easyplugins"); break;
+ case Config : szData.append("config"); break;
+ case ConfigPlugins : szData.append("config"KVI_PATH_SEPARATOR"modules"); break;
+ case ConfigScripts : szData.append("config"KVI_PATH_SEPARATOR"scripts"); break;
+ case Log : szData.append("log"); break;
+ case Incoming :
+ szData = KVI_OPTION_STRING(KviOption_stringIncomingPath);
+ // we should take special care here
+ // the user is likely to mess the path behind our back
+ // try to recover from most common problems
+ while(KviQString::lastCharIs(szData,KVI_PATH_SEPARATOR_CHAR))
+ szData = szData.remove(szData.length()-1,1);
+ if(szData.isEmpty())
+ {
+ // unset ?
+ KVI_OPTION_STRING(KviOption_stringIncomingPath) = QDir::homeDirPath();
+ if(!KVI_OPTION_STRING(KviOption_stringIncomingPath).endsWith(QString(QChar(KVI_PATH_SEPARATOR_CHAR))))
+ KVI_OPTION_STRING(KviOption_stringIncomingPath).append(KVI_PATH_SEPARATOR_CHAR);
+ KVI_OPTION_STRING(KviOption_stringIncomingPath).append(KVI_DEFAULT_INCOMING_SUBDIRECTORY_NAME);
+ }
+ break;
+ case Help :
+ szData.append("help");
+ {
+ // Localized help
+ QString tmp = KviLocale::localeName().ptr();
+ tmp.prepend(KVI_PATH_SEPARATOR_CHAR);
+ tmp.prepend(szData);
+ if(KviFileUtils::directoryExists(tmp))szData = tmp;
+ else {
+ tmp = szData; tmp.append(KVI_PATH_SEPARATOR"en");
+ if(KviFileUtils::directoryExists(tmp))szData = tmp;
+ }
+ }
+ break;
+ case HelpEN : szData.append("help"KVI_PATH_SEPARATOR"en"); break;
+ case HelpNoIntl : szData.append("help"); break;
+ case Audio : szData.append("audio"); break;
+ case Scripts : szData.append("scripts"); break;
+ case Modules :
+ case Plugins : szData.append("modules"); break;
+ case Trash : szData.append("trash"); break;
+ case MsgColors : szData.append("msgcolors"); break;
+ case Charmaps : szData.append("charmaps"); break;
+ case Avatars : szData.append("avatars"); break;
+ case License : szData.append("license"); break;
+ case Filters : szData.append("filters"); break;
+ case Tmp : szData.append("tmp"); break;
+ case Locale : szData.append("locale"); break;
+ case Themes : szData.append("themes"); break;
+ case DefScript : szData.append("defscript"); /* should never happen! */ break;
+ case Classes : szData.append("classes"); break;
+ case SmallIcons : szData.append("pics"KVI_PATH_SEPARATOR KVI_SMALLICONS_SUBDIRECTORY); break;
+ }
+ if(bCreateIfNeeded)KviFileUtils::makeDir(szData);
+
+ if(!appendFile.isEmpty())
+ {
+ KviQString::ensureLastCharIs(szData,KVI_PATH_SEPARATOR_CHAR);
+ szData.append(appendFile);
+ }
+
+ KviFileUtils::adjustFilePath(szData);
+}
+
+
+void KviApp::getGlobalKvircDirectory(KviStr &szData,KvircSubdir dir,const QString &appendFile)
+{
+ QString szBuffer = szData.ptr();
+ getGlobalKvircDirectory(szBuffer,dir,appendFile);
+ szData=szBuffer;
+
+}
+
+//=============== getLocalKvircDirectory ================//
+
+void KviApp::getLocalKvircDirectory(KviStr &szData,KvircSubdir dir,const QString &appendFile,bool bCreateIfNeeded)
+{
+ QString szBuffer = szData.ptr();
+ getLocalKvircDirectory(szBuffer,dir,appendFile,bCreateIfNeeded);
+ szData=szBuffer;
+}
+
+void KviApp::getTmpFileName(QString &szBuffer,const QString &szEndingFileName)
+{
+ QString tmp;
+ getLocalKvircDirectory(tmp,Tmp);
+ KviQString::ensureLastCharIs(tmp,KVI_PATH_SEPARATOR_CHAR);
+
+ struct timeval tmv;
+ kvi_gettimeofday(&tmv,0);
+
+ QString szFileName = szEndingFileName.isNull() ? QString("file.tmp") : szEndingFileName;
+ do {
+ szBuffer = tmp;
+ KviQString::appendFormatted(szBuffer,"kvirc_%d_%Q",tmv.tv_usec,&szFileName);
+ tmv.tv_usec++;
+ } while(KviFileUtils::fileExists(szBuffer));
+}
+
+//====================== trashFile ====================//
+//
+// Moves a file to the local trash directory
+//
+
+bool KviApp::trashFile(const char *filename)
+{
+ // Exists ?
+ QFileInfo fi = QFileInfo(QString::fromUtf8(filename));
+ if( !fi.exists() ) return false; // nothing to trash
+
+ // Build the filename
+ KviStr lastPart = filename;
+ lastPart.cutToLast(KVI_PATH_SEPARATOR_CHAR); // need only the filename
+ lastPart.append(".bak_");
+ QDateTime tm(QDateTime::currentDateTime());
+ lastPart.append(tm.toString());
+ lastPart.replaceAll(' ',"_");
+ // Ok...have lastPart.bak_Dec_11_31_1999
+ // Find the thrash directory (make it if necessary)
+ KviStr trashFile;
+ getLocalKvircDirectory(trashFile,Trash,lastPart.ptr(),true);
+ // Check if a such file already exists
+ fi.setFile(trashFile.ptr());
+ while(fi.exists())
+ {
+ trashFile.append(".rnm");
+ fi.setFile(trashFile.ptr());
+ }
+ // rename the file
+ return KviFileUtils::renameFile(filename,trashFile.ptr());
+}
+
+void KviApp::completeDirectory(const QString &word,KviPointerList<QString> * matches)
+{
+ QString szDir = word;
+ QString szFile = word;
+ KviQString::cutToLast(szFile,KVI_PATH_SEPARATOR_CHAR);
+ KviQString::cutFromLast(szDir,KVI_PATH_SEPARATOR_CHAR);
+ KviFileUtils::adjustFilePath(szDir);
+ KviQString::ensureLastCharIs(szDir,KVI_PATH_SEPARATOR_CHAR);
+ QDir d(szDir);
+
+ // FIXME: maybe check timestamps ? (old modules)
+ QStringList sl = d.entryList(QDir::Dirs);
+ QStringList::Iterator it;
+
+ for(it = sl.begin();it != sl.end();++it)
+ {
+ QString * t = new QString(*it);
+ if(KviQString::equalCS(*t,".") || KviQString::equalCS(*t,".."))
+ {
+ delete t;
+ } else {
+#ifdef COMPILE_ON_WINDOWS
+ if(KviQString::equalCIN(szFile,*t,szFile.length()))
+#else //!COMPILE_ON_WINDOWS
+ if(KviQString::equalCSN(szFile,*t,szFile.length()))
+#endif //COMPILE_ON_WINDOWS
+ {
+ t->prepend(szDir);
+ t->append(KVI_PATH_SEPARATOR_CHAR);
+ matches->append(t);
+ } else {
+ delete t;
+ }
+ }
+ }
+
+ sl = d.entryList(QDir::Files);
+
+ for(it = sl.begin();it != sl.end();++it)
+ {
+ QString * t = new QString(*it);
+#ifdef COMPILE_ON_WINDOWS
+ if(KviQString::equalCIN(szFile,*t,szFile.length()))
+#else //!COMPILE_ON_WINDOWS
+ if(KviQString::equalCSN(szFile,*t,szFile.length()))
+#endif //COMPILE_ON_WINDOWS
+ {
+ t->prepend(szDir);
+ matches->append(t);
+ } else {
+ delete t;
+ }
+ }
+}
+
+
+//============= getChannelDumpLogFileName ==============//
+//
+// Returns a valid filename for the channel dump log
+//
+
+void KviApp::getChannelDumpLogFileName(QString &str)
+{
+ unsigned int logN = 0;
+ QString fPrefix="kick_";
+ do{
+ QString fName;
+ KviQString::sprintf(fName,"%Q%u.log",&fPrefix,logN);
+ getLocalKvircDirectory(str,Log,fName);
+ logN++;
+ if(logN > 9999)
+ {
+ // Time to clear logs! :)
+ fPrefix+="x";
+ logN = 0;
+ }
+ } while(KviFileUtils::fileExists(str));
+ KviFileUtils::adjustFilePath(str);
+}
+
+bool KviApp::findFileByMediaType(KviStr &szRetPath,const char * filename)
+{
+ g_pMediaManager->lock();
+ KviMediaType * m = g_pMediaManager->findMediaType(filename,false);
+
+ if(m)
+ {
+ if(m->szSavePath.hasData())
+ {
+ szRetPath = m->szSavePath;
+ szRetPath.ensureLastCharIs(KVI_PATH_SEPARATOR_CHAR);
+ szRetPath.append(filename);
+ if(KviFileUtils::fileExists(szRetPath.ptr()))
+ {
+ // check again the media type... check the magic too
+ KviMediaType * mt = g_pMediaManager->findMediaType(szRetPath.ptr());
+ if(mt == m)
+ {
+ g_pMediaManager->unlock();
+ //if(retMediaType)*retMediaType = mt;
+ QString szTmp = szRetPath.ptr(); // FIXME
+ KviFileUtils::adjustFilePath(szTmp);
+ szRetPath = szTmp;
+ return true;
+ } // else mime type not matched...we should not be looking there!
+ }
+ }
+ }
+
+ g_pMediaManager->unlock();
+ return false;
+}
+
+//===================== findUserFile =====================//
+//
+// Looks for an user file in the standard directories
+//
+
+bool KviApp::findUserFile(KviStr &szRetPath,const char *filename)
+{
+ static KviApp::KvircSubdir localsubdirs[5]={ Avatars , Incoming , Pics , Audio , Log };
+ static KviApp::KvircSubdir globalsubdirs[3]={ Avatars , Pics , Audio };
+
+ // Absolute paths can not be "found"... they are obvious
+ if(kvi_isAbsolutePath(filename))
+ {
+ szRetPath=filename;
+ QString szTmp = szRetPath.ptr(); // FIXME
+ KviFileUtils::adjustFilePath(szTmp);
+ szRetPath = szTmp;
+ return KviFileUtils::fileExists(filename);
+ }
+
+ // FIXME: #warning "Use the user defined path ?"
+
+ // lookup the magic by name match only...
+
+ if(findFileByMediaType(szRetPath,filename))return true;
+
+ int i;
+
+ for(i= 0;i<5; i++)
+ {
+ getLocalKvircDirectory(szRetPath,localsubdirs[i],filename);
+ if(KviFileUtils::fileExists(szRetPath.ptr()))return true;
+ }
+
+ for(i= 0;i<3; i++)
+ {
+ getGlobalKvircDirectory(szRetPath,globalsubdirs[i],filename);
+ if(KviFileUtils::fileExists(szRetPath.ptr()))return true;
+ }
+
+ if(findImageInImageSearchPath(szRetPath,filename))return true;
+
+ // Last resort ...
+ szRetPath = QDir::homeDirPath();
+ szRetPath.ensureLastCharIs(KVI_PATH_SEPARATOR_CHAR);
+ szRetPath.append(filename);
+ if(KviFileUtils::fileExists(szRetPath.ptr()))return true;;
+
+ szRetPath = filename;
+ //if(retMediaType)*retMediaType = m;
+ return false;
+
+//gotit:
+ //if(retMediaType)*retMediaType = g_pMediaManager->findMediaType(szRetPath.ptr());
+// return true;
+}
+
+//========================= findImage ===========================//
+//
+// Find a file inside the default "Image" directories
+// This should be thread safe (and in fact IS used by other threads)
+// This function should be used only for finding the INTERNAL
+// pixmaps... (so we expect them to be in the pics directory or
+// Eventually in user's $HOME
+//
+
+// FIXME: #warning "Check WHEN findImage is used and when findUserFile is used...we have a mess here"
+
+bool KviApp::findImageInImageSearchPath(KviStr &szRetPath,const char * filename)
+{
+ // first lookup the user defined paths
+ for(QStringList::Iterator it = KVI_OPTION_STRINGLIST(KviOption_stringlistImageSearchPaths).begin();
+ it != KVI_OPTION_STRINGLIST(KviOption_stringlistImageSearchPaths).end();++it)
+ {
+ szRetPath = *it;
+ szRetPath.ensureLastCharIs(KVI_PATH_SEPARATOR_CHAR);
+ szRetPath.append(filename);
+ //debug("LOOK FOR %s",szRetPath.ptr());
+ if(KviFileUtils::fileExists(szRetPath.ptr()))return true;
+ }
+
+ return false;
+}
+
+bool KviApp::findImageInImageSearchPath(QString &szRetPath,const char * filename)
+{
+ // first lookup the user defined paths
+ for(QStringList::Iterator it = KVI_OPTION_STRINGLIST(KviOption_stringlistImageSearchPaths).begin();
+ it != KVI_OPTION_STRINGLIST(KviOption_stringlistImageSearchPaths).end();++it)
+ {
+ szRetPath = *it;
+ KviQString::ensureLastCharIs(szRetPath,KVI_PATH_SEPARATOR_CHAR);
+ szRetPath.append(filename);
+ //debug("LOOK FOR %s",szRetPath.ptr());
+ if(KviFileUtils::fileExists(szRetPath))return true;
+ }
+
+ return false;
+}
+
+static KviApp::KvircSubdir pics_localsubdirs[2]={ KviApp::Pics , KviApp::Avatars };
+static KviApp::KvircSubdir pics_globalsubdirs[2]={ KviApp::Pics , KviApp::Avatars };
+
+bool KviApp::mapImageFile(KviStr &szRetPath,const char * filename)
+{
+ QString buff;
+ bool ret=mapImageFile(buff,filename);
+ szRetPath=buff;
+ return ret;
+}
+
+bool KviApp::mapImageFile(QString &szRetPath,const char * filename)
+{
+ szRetPath = filename;
+ // can't map non absolute paths
+ if(!kvi_isAbsolutePath(filename))return false;
+ // can't map non existing paths
+ if(!KviFileUtils::fileExists(filename))return false;
+
+ QFileInfo fi = QFileInfo(QString::fromUtf8(filename));
+
+ unsigned int size = fi.size();
+
+ KviStr szBestMatch;
+
+ while(szRetPath.find(KVI_PATH_SEPARATOR) != -1)
+ {
+ KviQString::cutToFirst(szRetPath,KVI_PATH_SEPARATOR);
+
+ if(szRetPath.isEmpty())break;
+
+ KviStr szBuffer;
+
+ int i;
+
+ for(i=0;i<2;i++)
+ {
+ getLocalKvircDirectory(szBuffer,pics_localsubdirs[i],szRetPath);
+ if(KviFileUtils::fileExists(szBuffer.ptr()))
+ {
+ QFileInfo fi2(QString::fromUtf8(szBuffer.ptr()));
+ if(size == fi2.size())
+ {
+ // probably the same file
+ szBestMatch = szRetPath;
+ }
+ }
+ }
+
+ for(i=0;i<2;i++)
+ {
+ getGlobalKvircDirectory(szBuffer,pics_globalsubdirs[i],szRetPath);
+ //debug("CHECK %s",szBuffer.ptr());
+ if(KviFileUtils::fileExists(szBuffer.ptr()))
+ {
+ QFileInfo fi2(QString::fromUtf8(szBuffer.ptr()));
+ if(size == fi2.size())
+ {
+ // probably the same file
+ szBestMatch = szRetPath;
+ }
+ }
+ }
+
+ // Last resort
+ szBuffer = QDir::homeDirPath();
+ szBuffer.ensureLastCharIs(KVI_PATH_SEPARATOR_CHAR);
+ szBuffer.append(szRetPath);
+ if(KviFileUtils::fileExists(szBuffer.ptr()))
+ {
+ QFileInfo fi2(QString::fromUtf8(szBuffer.ptr()));
+ if(size == fi2.size())
+ {
+ // prolly the same file
+ szBestMatch = szRetPath;
+ }
+ }
+ }
+
+ if(szBestMatch.hasData())
+ {
+ szRetPath = szBestMatch;
+ return true;
+ }
+
+
+ // no way to map it :/
+ szRetPath = filename;
+ return false;
+}
+
+
+bool KviApp::findImage(KviStr &szRetPath,const char *filename)
+{
+ QString buff;
+ bool ret=findImage(buff,filename);
+ szRetPath=buff;
+ return ret;
+}
+
+bool KviApp::findImage(QString &szRetPath,const char *filename)
+{
+ // Find an user file...
+ if(kvi_isAbsolutePath(filename))
+ {
+ szRetPath=filename;
+ return KviFileUtils::fileExists(filename);
+ }
+
+ // if we have a theme, look it up as first
+ if(!KVI_OPTION_STRING(KviOption_stringIconThemeSubdir).isEmpty())
+ {
+ QString szTmp = KVI_OPTION_STRING(KviOption_stringIconThemeSubdir);
+ szTmp.append(KVI_PATH_SEPARATOR_CHAR);
+ szTmp.append(filename);
+
+ getLocalKvircDirectory(szRetPath,KviApp::Themes,szTmp);
+ if(KviFileUtils::fileExists(szRetPath))return true;
+
+ getGlobalKvircDirectory(szRetPath,KviApp::Themes,szTmp);
+ if(KviFileUtils::fileExists(szRetPath))return true;
+ }
+
+ int i;
+
+ for(i=0;i<2;i++)
+ {
+ getLocalKvircDirectory(szRetPath,pics_localsubdirs[i],filename);
+ if(KviFileUtils::fileExists(szRetPath))return true;
+ }
+
+ for(i=0;i<2;i++)
+ {
+ getGlobalKvircDirectory(szRetPath,pics_globalsubdirs[i],filename);
+ if(KviFileUtils::fileExists(szRetPath))return true;
+ }
+
+ if(findImageInImageSearchPath(szRetPath,filename))return true;
+
+ // Last resort
+ szRetPath = QDir::homeDirPath();
+ KviQString::ensureLastCharIs(szRetPath,KVI_PATH_SEPARATOR_CHAR);
+ szRetPath.append(filename);
+ if(KviFileUtils::fileExists(szRetPath))return true;
+
+ szRetPath = filename;
+
+ return false;
+}
+
+bool KviApp::findImageThemeOnlyCompat(QString &szRetPath,const char *filename)
+{
+ // if we have a theme, look it up as first
+ if(!KVI_OPTION_STRING(KviOption_stringIconThemeSubdir).isEmpty())
+ {
+ QString szTmp = KVI_OPTION_STRING(KviOption_stringIconThemeSubdir);
+ szTmp.append(KVI_PATH_SEPARATOR_CHAR);
+ szTmp.append(filename);
+
+ getLocalKvircDirectory(szRetPath,KviApp::Themes,szTmp);
+ if(KviFileUtils::fileExists(szRetPath))return true;
+
+ getGlobalKvircDirectory(szRetPath,KviApp::Themes,szTmp);
+ if(KviFileUtils::fileExists(szRetPath))return true;
+ }
+
+ getLocalKvircDirectory(szRetPath,KviApp::Pics,filename);
+ if(KviFileUtils::fileExists(szRetPath))return true;
+
+
+ if(findImageInImageSearchPath(szRetPath,filename))return true;
+
+ szRetPath = filename;
+
+ return false;
+}
+
+bool KviApp::findSmallIcon(QString &szRetPath,const char *filename)
+{
+ // this is a bit optimized for the small builtin icons
+ // looks up less places.
+
+ //if(kvi_isAbsolutePath(filename))
+ //{
+ // BUG!.. we should never
+ //szRetPath=filename;
+ //return KviFileUtils::fileExists(filename);
+ //}
+
+ // if we have a theme, look it up as first
+ if(!KVI_OPTION_STRING(KviOption_stringIconThemeSubdir).isEmpty())
+ {
+ QString szTmp = KVI_OPTION_STRING(KviOption_stringIconThemeSubdir);
+ szTmp.append(KVI_PATH_SEPARATOR_CHAR);
+ szTmp.append(KVI_SMALLICONS_SUBDIRECTORY);
+ szTmp.append(KVI_PATH_SEPARATOR_CHAR);
+ szTmp.append(filename);
+
+ getLocalKvircDirectory(szRetPath,KviApp::Themes,szTmp);
+ if(KviFileUtils::fileExists(szRetPath))return true;
+
+ getGlobalKvircDirectory(szRetPath,KviApp::Themes,szTmp);
+ if(KviFileUtils::fileExists(szRetPath))return true;
+ }
+
+ int i;
+
+ // unlikely
+ getLocalKvircDirectory(szRetPath,KviApp::SmallIcons,filename);
+ if(KviFileUtils::fileExists(szRetPath))return true;
+
+ getLocalKvircDirectory(szRetPath,KviApp::Pics,filename);
+ if(KviFileUtils::fileExists(szRetPath))return true;
+
+ // likely
+ getGlobalKvircDirectory(szRetPath,KviApp::SmallIcons,filename);
+ if(KviFileUtils::fileExists(szRetPath))return true;
+
+ if(findImageInImageSearchPath(szRetPath,filename))return true;
+
+ // Last resort... bleah :/
+ szRetPath = QDir::homeDirPath();
+ KviQString::ensureLastCharIs(szRetPath,KVI_PATH_SEPARATOR_CHAR);
+ szRetPath.append(filename);
+ if(KviFileUtils::fileExists(szRetPath))return true;
+
+ szRetPath = filename;
+
+ return false;
+}
+
+
+//================== getReadOnlyConfigPath ====================//
+//
+// We want to READ a config file...find it
+//
+
+bool KviApp::getReadOnlyConfigPath(KviStr &buffer,const char *config_name,KvircSubdir sbd,bool bNoFail)
+{
+ // DEPRECATED
+ QString tmp;
+ bool bRet = getReadOnlyConfigPath(tmp,config_name,sbd,bNoFail);
+ buffer = tmp;
+ return bRet;
+}
+
+bool KviApp::getReadOnlyConfigPath(QString &buffer,const char *config_name,KvircSubdir sbd,bool bNoFail)
+{
+ // Take a look in the local directory....
+ getLocalKvircDirectory(buffer,sbd,config_name);
+ //debug("%s %s %i |%s| %i",__FILE__,__FUNCTION__,__LINE__,buffer.ptr(),KviFileUtils::fileExists(buffer.ptr()));
+ if(!KviFileUtils::fileExists(buffer))
+ {
+ // No saved config yet... check for defaults
+ QString tmp;
+ getGlobalKvircDirectory(tmp,sbd,config_name);
+ if(!KviFileUtils::fileExists(tmp))
+ {
+ // No defaults...no such config file at all.
+ if(bNoFail)getLocalKvircDirectory(buffer,sbd,config_name);
+ return false;
+ } else buffer = tmp; // get the defaults this time
+ } // else file exists...
+ return true;
+}
diff --git a/src/kvirc/kernel/kvi_app_setup.cpp b/src/kvirc/kernel/kvi_app_setup.cpp
new file mode 100644
index 00000000..1c9f3886
--- /dev/null
+++ b/src/kvirc/kernel/kvi_app_setup.cpp
@@ -0,0 +1,864 @@
+//=============================================================================
+//
+// File : kvi_app_setup.cpp
+// Creation date : Fri Apr 2 1999 02:38:05 by Szymon Stefanek
+//
+// This file is part of the Kvirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+//#define _KVI_DEBUG_CHECK_RANGE_
+//#include "kvi_debug.h"
+
+#include <qtextcodec.h>
+
+#include "kvi_settings.h"
+#include "kvi_defaults.h"
+
+#include "kvi_window.h"
+#include "kvi_frame.h"
+
+#include "kvi_app.h"
+
+#include "kvi_fileutils.h"
+#include "kvi_locale.h"
+#include "kvi_msgbox.h"
+#include "kvi_library.h"
+#include "kvi_sourcesdate.h"
+#include "kvi_iconmanager.h"
+#include "kvi_config.h"
+
+#ifndef COMPILE_ON_WINDOWS
+
+ #include <stdlib.h> // for getenv()
+ #include <unistd.h> // for symlink() <-- unused ?
+
+ #ifdef COMPILE_KDE_SUPPORT
+ #include <kconfig.h>
+ #include <kstddirs.h>
+ #endif
+
+#else
+
+ #include <shlwapi.h>
+ #include <windows.h> // at least for GetModuleFileName and *PrivateProfileString
+
+#endif //COMPILE_ON_WINDOWS
+
+#include <qfile.h>
+#include <qtextstream.h>
+#include <qdir.h>
+
+
+
+
+//
+// Things launched at startup:
+// - Attempt to find the global Kvirc directory
+// - Attempt to find the local Kvirc directory
+// and if it is not found , ask the user to choose one
+//
+
+bool KviApp::checkGlobalKvircDirectory(const QString dir)
+{
+ //First check if the help subdir exists
+ QString szDir2 = dir;
+ szDir2+=KVI_PATH_SEPARATOR"help";
+ if(!KviFileUtils::directoryExists(szDir2))return false;
+ //Then check if the pics subdir exists
+ QString szDir = dir;
+ szDir+=KVI_PATH_SEPARATOR"pics";
+ if(!KviFileUtils::directoryExists(szDir))return false;
+ //Now make sure that it is the dir that we're looking for.
+ //Check for an image file that we need.
+ szDir.append(KVI_PATH_SEPARATOR);
+ szDir.append(KVI_ACTIVITYMETER_IMAGE_NAME);
+ return KviFileUtils::isReadable(szDir);
+}
+
+bool KviApp::checkLocalKvircDirectory(const QString szDir)
+{
+ //First check if the dir exists
+ if(!KviFileUtils::directoryExists(szDir))return false;
+ if(!QFileInfo(szDir).isWritable()) return false;
+
+ QString szBuff;
+ getLocalKvircDirectory(szBuff,Config);
+ if(!KviFileUtils::directoryExists(szBuff)) return false;
+
+ return true;
+}
+
+bool KviApp::checkFileAssociations()
+{
+#ifdef COMPILE_ON_WINDOWS
+#define QUERY_BUFFER 2048
+ char* buffer;
+ DWORD len = QUERY_BUFFER;
+ DWORD err;
+ buffer = (char*)malloc(len*sizeof(char));
+ HKEY hKey;
+
+ if(RegOpenKeyEx(HKEY_CLASSES_ROOT,".kvs",0,KEY_READ,&hKey) != ERROR_SUCCESS )
+ return false;
+
+ if( (err=RegQueryValueEx( hKey,0,0,0,(LPBYTE)buffer,&len)) != ERROR_SUCCESS)
+ {
+ free(buffer);
+ return false;
+ } else {
+ if(!kvi_strEqualCIN("KVIrcScript",buffer,11)){
+ free(buffer);
+ return false;
+ }
+ }
+
+ len = QUERY_BUFFER;
+ if(RegOpenKeyEx(HKEY_CLASSES_ROOT,"KVIrcScript",0,KEY_READ,&hKey) != ERROR_SUCCESS )
+ return false;
+
+ if( (err=RegQueryValueEx( hKey,0,0,0,(LPBYTE)buffer,&len)) != ERROR_SUCCESS)
+ {
+ free(buffer);
+ return false;
+ } else {
+ if(!kvi_strEqualCI(__tr2qs("KVIrc KVS Script").local8Bit().data(),buffer)){
+ free(buffer);
+ return false;
+ }
+ }
+
+ len = QUERY_BUFFER;
+ if(RegOpenKeyEx(HKEY_CLASSES_ROOT,"KVIrcScript\\DefaultIcon",0,KEY_READ,&hKey) != ERROR_SUCCESS )
+ return false;
+
+ if( RegQueryValueEx( hKey,0,0,0,(LPBYTE)buffer,&len) != ERROR_SUCCESS)
+ {
+ free(buffer);
+ return false;
+ } else {
+ QString szIcon = applicationFilePath()+",1";
+ szIcon.replace('/',"\\");
+ if(!kvi_strEqualCI(szIcon.local8Bit().data(),buffer)){
+ free(buffer);
+ return false;
+ }
+ }
+
+ len = QUERY_BUFFER;
+ if(RegOpenKeyEx(HKEY_CLASSES_ROOT,"KVIrcScript\\Shell\\Parse",0,KEY_READ,&hKey) != ERROR_SUCCESS )
+ return false;
+
+ if( RegQueryValueEx( hKey,0,0,0,(LPBYTE)buffer,&len) != ERROR_SUCCESS)
+ {
+ free(buffer);
+ return false;
+ } else {
+ if(!kvi_strEqualCI(__tr2qs("Run KVS Script").local8Bit().data(),buffer)){
+ free(buffer);
+ return false;
+ }
+ }
+
+ len = QUERY_BUFFER;
+ if(RegOpenKeyEx(HKEY_CLASSES_ROOT,"KVIrcScript\\Shell\\Parse\\command",0,KEY_READ,&hKey) != ERROR_SUCCESS )
+ return false;
+
+ if( RegQueryValueEx( hKey,0,0,0,(LPBYTE)buffer,&len) != ERROR_SUCCESS)
+ {
+ free(buffer);
+ return false;
+ } else {
+ QString szCmd = applicationFilePath()+" \"%1\"";
+ szCmd.replace('/',"\\");
+ if(!kvi_strEqualCI(szCmd.local8Bit().data(),buffer)) {
+ free(buffer);
+ return false;
+ }
+ }
+
+ //Config
+
+ if(RegOpenKeyEx(HKEY_CLASSES_ROOT,".kvc",0,KEY_READ,&hKey) != ERROR_SUCCESS )
+ return false;
+
+ if( (err=RegQueryValueEx( hKey,0,0,0,(LPBYTE)buffer,&len)) != ERROR_SUCCESS)
+ {
+ free(buffer);
+ return false;
+ } else {
+ if(!kvi_strEqualCIN("KVIrcConfig",buffer,11)){
+ free(buffer);
+ return false;
+ }
+ }
+
+ len = QUERY_BUFFER;
+ if(RegOpenKeyEx(HKEY_CLASSES_ROOT,"KVIrcConfig",0,KEY_READ,&hKey) != ERROR_SUCCESS )
+ return false;
+
+ //Addon
+ if(RegOpenKeyEx(HKEY_CLASSES_ROOT,".kva",0,KEY_READ,&hKey) != ERROR_SUCCESS )
+ return false;
+
+ if( (err=RegQueryValueEx( hKey,0,0,0,(LPBYTE)buffer,&len)) != ERROR_SUCCESS)
+ {
+ free(buffer);
+ return false;
+ } else {
+ if(!kvi_strEqualCIN("KVIrcAddon",buffer,11)){
+ free(buffer);
+ return false;
+ }
+ }
+
+ len = QUERY_BUFFER;
+ if(RegOpenKeyEx(HKEY_CLASSES_ROOT,"KVIrcAddon",0,KEY_READ,&hKey) != ERROR_SUCCESS )
+ return false;
+ //Theme
+ if(RegOpenKeyEx(HKEY_CLASSES_ROOT,".kvt",0,KEY_READ,&hKey) != ERROR_SUCCESS )
+ return false;
+
+ if( (err=RegQueryValueEx( hKey,0,0,0,(LPBYTE)buffer,&len)) != ERROR_SUCCESS)
+ {
+ free(buffer);
+ return false;
+ } else {
+ if(!kvi_strEqualCIN("KVIrcTheme",buffer,11)){
+ free(buffer);
+ return false;
+ }
+ }
+
+ len = QUERY_BUFFER;
+ if(RegOpenKeyEx(HKEY_CLASSES_ROOT,"KVIrcTheme",0,KEY_READ,&hKey) != ERROR_SUCCESS )
+ return false;
+
+ free(buffer);
+#endif
+ return true;
+
+}
+
+
+bool KviApp::checkUriAssociations(char * proto)
+{
+#ifdef COMPILE_ON_WINDOWS
+#define QUERY_BUFFER 2048
+ char* buffer;
+ DWORD len = QUERY_BUFFER;
+ DWORD err;
+ buffer = (char*)malloc(len*sizeof(char));
+ HKEY hKey;
+
+ KviStr storedKey = proto;
+
+ KviStr key=storedKey;
+
+ len = QUERY_BUFFER;
+ if(RegOpenKeyEx(HKEY_CLASSES_ROOT,key,0,KEY_READ,&hKey) != ERROR_SUCCESS )
+ return false;
+
+ if( (err=RegQueryValueEx( hKey,0,0,0,(LPBYTE)buffer,&len)) != ERROR_SUCCESS)
+ {
+ free(buffer);
+ return false;
+ } else {
+ if(!kvi_strEqualCI(__tr2qs("URL:IRC Protocol").local8Bit().data(),buffer)){
+ free(buffer);
+ return false;
+ }
+ }
+
+ len = QUERY_BUFFER;
+ if( (err=RegQueryValueEx( hKey,"URL Protocol",0,0,(LPBYTE)buffer,&len)) != ERROR_SUCCESS)
+ {
+ free(buffer);
+ return false;
+ }
+
+ key = storedKey+"\\DefaultIcon";
+ len = QUERY_BUFFER;
+ if(RegOpenKeyEx(HKEY_CLASSES_ROOT,key,0,KEY_READ,&hKey) != ERROR_SUCCESS )
+ return false;
+
+ if( RegQueryValueEx( hKey,0,0,0,(LPBYTE)buffer,&len) != ERROR_SUCCESS)
+ {
+ free(buffer);
+ return false;
+ } else {
+ QString szIcon = applicationFilePath()+",0";
+ szIcon.replace('/',"\\");
+ if(!kvi_strEqualCI(szIcon.local8Bit().data(),buffer)){
+ free(buffer);
+ return false;
+ }
+ }
+
+ len = QUERY_BUFFER;
+ key = storedKey+"\\Shell\\open";
+ if(RegOpenKeyEx(HKEY_CLASSES_ROOT,key,0,KEY_READ,&hKey) != ERROR_SUCCESS )
+ return false;
+
+ if( RegQueryValueEx( hKey,0,0,0,(LPBYTE)buffer,&len) != ERROR_SUCCESS)
+ {
+ free(buffer);
+ return false;
+ } else {
+ if(!kvi_strEqualCI(__tr2qs("Open with KVIrc").local8Bit().data(),buffer)){
+ free(buffer);
+ return false;
+ }
+ }
+
+ len = QUERY_BUFFER;
+ key = storedKey+"\\Shell\\open\\command";
+ if(RegOpenKeyEx(HKEY_CLASSES_ROOT,key,0,KEY_READ,&hKey) != ERROR_SUCCESS )
+ return false;
+
+ if( RegQueryValueEx( hKey,0,0,0,(LPBYTE)buffer,&len) != ERROR_SUCCESS)
+ {
+ free(buffer);
+ return false;
+ } else {
+ QString szCmd = applicationFilePath()+" \"%1\"";
+ szCmd.replace('/',"\\");
+ if(!kvi_strEqualCI(szCmd.local8Bit().data(),buffer)) {
+ free(buffer);
+ return false;
+ }
+ }
+
+ free(buffer);
+#endif
+ return true;
+
+}
+
+
+void KviApp::setupUriAssociations(char * proto)
+{
+#ifdef COMPILE_ON_WINDOWS
+ HKEY hKey;
+ DWORD err;
+
+ KviStr storedKey = proto;
+
+ KviStr key=storedKey;
+
+ KviQCString tmp;
+ QString appPath = applicationFilePath();
+ appPath.replace('/',"\\");
+
+ SHDeleteKey(HKEY_CLASSES_ROOT,key);
+
+ err=RegCreateKeyEx(HKEY_CLASSES_ROOT,key,0,0,0,KEY_WRITE,0,&hKey,0);
+ RegSetValueEx( hKey,0,0,REG_SZ,(LPBYTE)"URL:IRC Protocol",16);
+ RegSetValueEx( hKey,"URL Protocol",0,REG_SZ,(LPBYTE)"",0);
+
+ key=storedKey+"\\DefaultIcon";
+ RegCreateKeyEx(HKEY_CLASSES_ROOT,key,0,0,0,KEY_WRITE,0,&hKey,0);
+ tmp=QString(appPath+",0").local8Bit();
+ RegSetValueEx( hKey,0,0,REG_SZ,(LPBYTE)tmp.data(),tmp.length());
+
+ key=storedKey+"\\Shell\\open";
+ RegCreateKeyEx(HKEY_CLASSES_ROOT,key,0,0,0,KEY_WRITE,0,&hKey,0);
+ tmp=__tr2qs("Open with KVIrc").local8Bit();
+ RegSetValueEx( hKey,0,0,REG_SZ,(LPBYTE)tmp.data(),tmp.length());
+
+ key=storedKey+"\\Shell\\open\\command";
+ RegCreateKeyEx(HKEY_CLASSES_ROOT,key,0,0,0,KEY_WRITE,0,&hKey,0);
+ tmp=QString(appPath+" \"%1\"").local8Bit();
+ RegSetValueEx( hKey,0,0,REG_SZ,(LPBYTE)tmp.data(),tmp.length());
+
+#endif
+}
+
+void KviApp::setupFileAssociations()
+{
+#ifdef COMPILE_ON_WINDOWS
+ HKEY hKey;
+ DWORD err;
+
+ KviQCString tmp;
+ QString appPath = applicationFilePath();
+ appPath.replace('/',"\\");
+
+ SHDeleteKey(HKEY_CLASSES_ROOT,".kvs");
+
+ err=RegCreateKeyEx(HKEY_CLASSES_ROOT,".kvs",0,0,0,KEY_WRITE,0,&hKey,0);
+ RegSetValueEx( hKey,0,0,REG_SZ,(LPBYTE)"KVIrcScript",11);
+
+
+ SHDeleteKey(HKEY_CLASSES_ROOT,"KVIrcScript");
+ RegCreateKeyEx(HKEY_CLASSES_ROOT,"KVIrcScript",0,0,0,KEY_WRITE,0,&hKey,0);
+ tmp = __tr2qs("KVIrc KVS Script").local8Bit();
+ RegSetValueEx( hKey,0,0,REG_SZ,(LPBYTE)tmp.data(),tmp.length());
+
+ RegCreateKeyEx(HKEY_CLASSES_ROOT,"KVIrcScript\\DefaultIcon",0,0,0,KEY_WRITE,0,&hKey,0);
+ tmp=QString(appPath+",1").local8Bit();
+ RegSetValueEx( hKey,0,0,REG_SZ,(LPBYTE)tmp.data(),tmp.length());
+
+ RegCreateKeyEx(HKEY_CLASSES_ROOT,"KVIrcScript\\Shell\\Parse",0,0,0,KEY_WRITE,0,&hKey,0);
+ tmp=__tr2qs("Run KVS Script").local8Bit();
+ RegSetValueEx( hKey,0,0,REG_SZ,(LPBYTE)tmp.data(),tmp.length());
+
+ RegCreateKeyEx(HKEY_CLASSES_ROOT,"KVIrcScript\\Shell\\Parse\\command",0,0,0,KEY_WRITE,0,&hKey,0);
+ tmp=QString(appPath+" \"%1\"").local8Bit();
+ RegSetValueEx( hKey,0,0,REG_SZ,(LPBYTE)tmp.data(),tmp.length());
+
+ //Configs
+ SHDeleteKey(HKEY_CLASSES_ROOT,".kvc");
+
+ err=RegCreateKeyEx(HKEY_CLASSES_ROOT,".kvc",0,0,0,KEY_WRITE,0,&hKey,0);
+ RegSetValueEx( hKey,0,0,REG_SZ,(LPBYTE)"KVIrcConfig",11);
+
+
+ SHDeleteKey(HKEY_CLASSES_ROOT,"KVIrcConfig");
+ RegCreateKeyEx(HKEY_CLASSES_ROOT,"KVIrcConfig",0,0,0,KEY_WRITE,0,&hKey,0);
+ tmp = __tr2qs("KVIrc Configuration File").local8Bit();
+ RegSetValueEx( hKey,0,0,REG_SZ,(LPBYTE)tmp.data(),tmp.length());
+
+ RegCreateKeyEx(HKEY_CLASSES_ROOT,"KVIrcConfig\\DefaultIcon",0,0,0,KEY_WRITE,0,&hKey,0);
+ tmp=QString(appPath+",2").local8Bit();
+ RegSetValueEx( hKey,0,0,REG_SZ,(LPBYTE)tmp.data(),tmp.length());
+
+ // Themes
+
+ SHDeleteKey(HKEY_CLASSES_ROOT,".kvt");
+
+ err=RegCreateKeyEx(HKEY_CLASSES_ROOT,".kvt",0,0,0,KEY_WRITE,0,&hKey,0);
+ RegSetValueEx( hKey,0,0,REG_SZ,(LPBYTE)"KVIrcTheme",11);
+
+
+ SHDeleteKey(HKEY_CLASSES_ROOT,"KVIrcTheme");
+ RegCreateKeyEx(HKEY_CLASSES_ROOT,"KVIrcTheme",0,0,0,KEY_WRITE,0,&hKey,0);
+ tmp = __tr2qs("KVIrc Theme Package").local8Bit();
+ RegSetValueEx( hKey,0,0,REG_SZ,(LPBYTE)tmp.data(),tmp.length());
+
+ RegCreateKeyEx(HKEY_CLASSES_ROOT,"KVIrcTheme\\DefaultIcon",0,0,0,KEY_WRITE,0,&hKey,0);
+ tmp=QString(appPath+",3").local8Bit();
+ RegSetValueEx( hKey,0,0,REG_SZ,(LPBYTE)tmp.data(),tmp.length());
+
+ RegCreateKeyEx(HKEY_CLASSES_ROOT,"KVIrcTheme\\Shell\\Install",0,0,0,KEY_WRITE,0,&hKey,0);
+ tmp=__tr2qs("Install Theme Package").local8Bit();
+ RegSetValueEx( hKey,0,0,REG_SZ,(LPBYTE)tmp.data(),tmp.length());
+
+ RegCreateKeyEx(HKEY_CLASSES_ROOT,"KVIrcTheme\\Shell\\Install\\command",0,0,0,KEY_WRITE,0,&hKey,0);
+ tmp=QString(appPath+" \"%1\"").local8Bit();
+ RegSetValueEx( hKey,0,0,REG_SZ,(LPBYTE)tmp.data(),tmp.length());
+
+ //Addons
+
+ SHDeleteKey(HKEY_CLASSES_ROOT,".kva");
+
+ err=RegCreateKeyEx(HKEY_CLASSES_ROOT,".kva",0,0,0,KEY_WRITE,0,&hKey,0);
+ RegSetValueEx( hKey,0,0,REG_SZ,(LPBYTE)"KVIrcAddon",11);
+
+
+ SHDeleteKey(HKEY_CLASSES_ROOT,"KVIrcAddon");
+ RegCreateKeyEx(HKEY_CLASSES_ROOT,"KVIrcAddon",0,0,0,KEY_WRITE,0,&hKey,0);
+ tmp = __tr2qs("KVIrc Addon Package").local8Bit();
+ RegSetValueEx( hKey,0,0,REG_SZ,(LPBYTE)tmp.data(),tmp.length());
+
+ RegCreateKeyEx(HKEY_CLASSES_ROOT,"KVIrcAddon\\DefaultIcon",0,0,0,KEY_WRITE,0,&hKey,0);
+ tmp=QString(appPath+",4").local8Bit();
+ RegSetValueEx( hKey,0,0,REG_SZ,(LPBYTE)tmp.data(),tmp.length());
+
+ RegCreateKeyEx(HKEY_CLASSES_ROOT,"KVIrcAddon\\Shell\\Install",0,0,0,KEY_WRITE,0,&hKey,0);
+ tmp=__tr2qs("Install Package").local8Bit();
+ RegSetValueEx( hKey,0,0,REG_SZ,(LPBYTE)tmp.data(),tmp.length());
+
+ RegCreateKeyEx(HKEY_CLASSES_ROOT,"KVIrcAddon\\Shell\\Install\\command",0,0,0,KEY_WRITE,0,&hKey,0);
+ tmp=QString(appPath+" \"%1\"").local8Bit();
+ RegSetValueEx( hKey,0,0,REG_SZ,(LPBYTE)tmp.data(),tmp.length());
+
+#endif
+}
+
+//#ifdef BRAIN_DAMAGED_AUTHOR_PARANOIA
+//#define I_DO_NOT_WANT_TO_HEAR_IT_ANYMORE_THAT_KVIRC_CAN_NOT_FIND_THE_BASE_PIXMAPS
+
+// search paths for Unix-like platforms
+#ifndef COMPILE_ON_WINDOWS
+ const char * usualKvircGlobalPrePath[]=
+ {
+ "/usr/local", "/opt/kde", "/usr",
+ "/usr/local/lib", "/opt/kde3", "/usr/lib",
+ "/usr/local/kde", "/opt", "/usr/etc",
+ "/usr/local/kde3", "/usr/lib/X11R6", "/usr/X11R6",
+ "/usr/local/X11R6", "/lib/X11", "/usr/kde",
+ "/usr/local/X11", "/etc", "/usr/kde3",
+ "/usr/local/etc", "/lib", "/usr/X11",
+ "/etc/X11", "/home", "/home/kvirc",
+ 0
+ };
+
+ const char * usualKvircGlobalDir[]=
+ {
+ "/share/kvirc/", "/share/apps/kvirc/",
+ "/apps/kvirc/", "/kvirc/",
+ "/kvirc/share/apps/kvirc/", "/kvirc/share/kvirc/", //<------ ???!!!???
+ "/kvirc/share/", 0
+ };
+
+#endif //!COMPILE_ON_WINDOWS
+
+//#endif //BRAIN_DAMAGED_AUTHOR_PARANOIA
+
+void KviApp::findGlobalKvircDirectory()
+{
+ // Look for the installation directory
+ // with the image and help files inside
+#ifdef GLOBAL_KVIRC_DIR
+ m_szGlobalKvircDir = GLOBAL_KVIRC_DIR;
+ KviFileUtils::adjustFilePath(m_szGlobalKvircDir);
+ if(checkGlobalKvircDirectory(m_szGlobalKvircDir))return;
+#endif //GLOBAL_KVIRC_DIR
+
+#ifdef COMPILE_ON_WINDOWS
+
+ m_szGlobalKvircDir = applicationDirPath();
+ KviFileUtils::adjustFilePath(m_szGlobalKvircDir);
+ if(checkGlobalKvircDirectory(m_szGlobalKvircDir))return;
+
+ KviMessageBox::warning("Unable to find the shared Kvirc directory.\n"\
+ "The usual path for this directory is c:\\kvirc\\" KVI_VERSION_BRANCH "\\.\n"\
+ "I have tried %Q, but it seemed to fail\n" \
+ "Trying to run anyway...\n",&m_szGlobalKvircDir);
+#else // !COMPILE_ON_WINDOWS
+
+ // Since I had many problems with it
+ // because of strange distributions or KDEDIRS
+ // I do it in that way...
+ #ifdef COMPILE_KDE_SUPPORT
+ // KDE compilation ...
+ // The things usually go installed into $KDEDIR/share/apps/kvirc/$KVI_VERSION_BRANCH
+ // Look in the main KDE directory
+ KStandardDirs * d = dirs();
+ if(d)
+ {
+ m_szGlobalKvircDir = locate("appdata","");
+ if(checkGlobalKvircDirectory(m_szGlobalKvircDir))return;
+ #ifdef HAVE_GETENV
+ //KDEDIR sanity check...
+ m_szGlobalKvircDir = getenv("KDEDIR");
+ m_szGlobalKvircDir+="/share/apps/kvirc/" KVI_VERSION_BRANCH;
+ if(checkGlobalKvircDirectory(m_szGlobalKvircDir))return;
+ #endif
+ }
+ // FAILED ? Check the usual way...
+ #endif //COMPILE_WITH_KDE
+
+ // Non KDE compilation , or not found under $KDEDIR/share/apps/kvirc/$KVI_VERSION_BRANCH
+
+ // Check for MacOS X Bundle compilation
+ #ifdef Q_OS_MACX
+ m_szGlobalKvircDir = applicationDirPath();
+ m_szGlobalKvircDir+= "/../Resources/kvirc/";
+ m_szGlobalKvircDir+= KVI_VERSION_BRANCH;
+ if(checkGlobalKvircDirectory(m_szGlobalKvircDir))return;
+ #endif //Q_OS_MACX
+
+ // Check usual directories...
+ for(int j=0;usualKvircGlobalPrePath[j] != 0;j++){
+ for(int i=0;usualKvircGlobalDir[i] != 0;i++){
+ m_szGlobalKvircDir = usualKvircGlobalPrePath[j];
+ m_szGlobalKvircDir+= usualKvircGlobalDir[i];
+ m_szGlobalKvircDir+= KVI_VERSION_BRANCH;
+ if(checkGlobalKvircDirectory(m_szGlobalKvircDir))return;
+ }
+ }
+
+ //Last resource , try $HOME and $HOME/.kde
+ for(int k=0;usualKvircGlobalDir[k] != 0;k++){
+ m_szGlobalKvircDir = QDir::homeDirPath();
+ m_szGlobalKvircDir+= usualKvircGlobalDir[k];
+ m_szGlobalKvircDir+= KVI_VERSION_BRANCH;
+ if(checkGlobalKvircDirectory(m_szGlobalKvircDir))return;
+ }
+
+ #ifdef COMPILE_KDE_SUPPORT
+ for(int k=0;usualKvircGlobalDir[k] != 0;k++){
+ m_szGlobalKvircDir = QDir::homeDirPath();
+ m_szGlobalKvircDir+= "/.kde";
+ m_szGlobalKvircDir+= usualKvircGlobalDir[k];
+ m_szGlobalKvircDir+= KVI_VERSION_BRANCH;
+ if(checkGlobalKvircDirectory(m_szGlobalKvircDir))return;
+ }
+ #endif //COMPILE_KDE_SUPPORT
+
+ m_szGlobalKvircDir="";
+
+ // DO NOT TRANSLATE THIS
+ // THE TRANSLATION DIRECTORY WAS NOT FOUND YET
+ // AND THE LOCALE IS NOT INITIALIZED AT ALL
+
+ #ifdef COMPILE_KDE_SUPPORT
+ KviMessageBox::warning("Unable to find the shared Kvirc directory.\n"\
+ "The usual path for this directory is $KDEDIR/share/apps/kvirc.\n"\
+ "Are you sure that 'make install' worked correctly ?\n"\
+ "Please make sure that you have the read permission to that directory\n"\
+ "and you have set KDEDIR correctly. You may also try to rerun 'make install'.\n"\
+ "A detailed explaination of the Kvirc directory system is in the INSTALL document\n"\
+ "shipped with the kvirc source dirstribution.\n"\
+ "Trying to run anyway...");
+ #elif defined(Q_OS_MACX)
+ KviMessageBox::warning("Unable to find the shared Kvirc directory.\n"\
+ "The usual path for this directory is ./Contents/Resources/kvirc within your application bundle.\n"\
+ "Something went wrong during the bundle creation.\n"\
+ "Please read the documentation and make sure to set proper paths for --prefix, -bindir, -libdir and --datadir during the configure run.\n"\
+ "Trying to run anyway...\n");
+ #else //!defined(COMPILE_KDE_SUPPORT) && !defined(Q_OS_MACX)
+ KviMessageBox::warning("Unable to find the shared Kvirc directory.\n"\
+ "The usual path for this directory is /usr/local/share/kvirc.\n"\
+ "Are you sure that 'make install' worked correctly ?\n"\
+ "Please make sure that you have the read permission to that directory.\n"\
+ "You may also need to rerun 'make install'.\n"\
+ "A detailed explaination of the Kvirc directory system is in the INSTALL document\n"\
+ "shipped with the kvirc source dirstribution.\n"\
+ "Trying to run anyway...\n");
+ #endif //!Q_OS_MACX
+#endif //!COMPILE_ON_WINDOWS
+}
+
+
+bool KviApp::findLocalKvircDirectory()
+{
+ // Here we check if we already did the setup
+ // and we have the kvirc local directory saved somewhere
+#ifdef COMPILE_KDE_SUPPORT
+ if(m_szConfigFile.isEmpty())
+ { // don't do that if user supplied a config file :)
+ KConfig * cfg = config();
+ if(cfg)
+ {
+ if(cfg->getConfigState() == KConfig::ReadWrite)
+ {
+ cfg->setGroup("Main");
+ m_szLocalKvircDir = cfg->readEntry("LocalKvircDirectory","");
+
+ unsigned int uSourcesDate = cfg->readUnsignedNumEntry("SourcesDate",0);
+ if(uSourcesDate < KVI_SOURCES_DATE_NUMERIC_FORCE_SETUP)
+ return false; // we force a setup anyway
+
+ // If we have it , ok...done
+ if(checkLocalKvircDirectory(m_szLocalKvircDir))return true;
+ }
+ }
+ }
+#endif //COMPILE_KDE_SUPPORT
+
+#ifdef COMPILE_ON_WINDOWS
+ if(KviFileUtils::fileExists(g_pApp->applicationDirPath()+KVI_PATH_SEPARATOR_CHAR+"portable")) {
+ m_szLocalKvircDir=g_pApp->applicationDirPath()+KVI_PATH_SEPARATOR_CHAR+"Settings";
+ if(checkLocalKvircDirectory(m_szLocalKvircDir)) return true;
+ }
+#endif
+ //Check if we have a special .kvirc.rc in $HOME
+ QString szF = QDir::homeDirPath();
+
+ if(!m_szConfigFile.isEmpty())
+ {
+ QString szConfig = m_szConfigFile;
+ if(QDir::isRelativePath(szConfig))
+ {
+ szF+=KVI_PATH_SEPARATOR;
+ szF+=szConfig;
+ } else {
+ szF=szConfig;
+ }
+ } else {
+ szF+=KVI_PATH_SEPARATOR;
+ szF+=KVI_HOME_CONFIG_FILE_NAME;
+ }
+ //If the file exists , read the first non empty line.
+ //FIXME: LOCALE BROKEN!!!
+ KviConfig cfgx(szF,KviConfig::Read);
+
+ cfgx.setGroup("Main");
+ m_szLocalKvircDir = cfgx.readEntry("LocalKvircDirectory","");
+
+ unsigned int uSourcesDate = cfgx.readUIntEntry("SourcesDate",0);
+ if(uSourcesDate < KVI_SOURCES_DATE_NUMERIC_FORCE_SETUP)
+ return false; // we force a setup anyway
+
+ // If we have it , ok...done
+ if(checkLocalKvircDirectory(m_szLocalKvircDir))return true;
+ return false;
+}
+
+void KviApp::loadDirectories()
+{
+ // First find the global (readable) one...
+ findGlobalKvircDirectory();
+ // Init locale
+ QString szLocalePath = m_szGlobalKvircDir;
+ szLocalePath.append(KVI_PATH_SEPARATOR);
+ szLocalePath.append("locale");
+ szLocalePath.append(KVI_PATH_SEPARATOR);
+
+ KviLocale::init(this,szLocalePath);
+
+ //__debug_1arg("Global Kvirc directory is %s",m_szGlobalKvircDir.ptr());
+ // Now look for the local (writable) one
+ m_bFirstTimeRun = !findLocalKvircDirectory();
+
+ if(m_bFirstTimeRun)setupBegin();
+ if(!checkFileAssociations()) setupFileAssociations();
+ if(!checkUriAssociations("irc")) setupUriAssociations("irc");
+ if(!checkUriAssociations("ircs")) setupUriAssociations("ircs");
+ if(!checkUriAssociations("irc6")) setupUriAssociations("irc6");
+ if(!checkUriAssociations("ircs6")) setupUriAssociations("ircs6");
+}
+
+static kvi_library_t g_hSetupLibrary = 0;
+
+
+void KviApp::setupBegin()
+{
+ //We must do the setup...ask the user..
+ QString szSetupLib;
+ getGlobalKvircDirectory(szSetupLib,KviApp::Modules);
+ KviQString::ensureLastCharIs(szSetupLib,KVI_PATH_SEPARATOR_CHAR);
+#ifdef COMPILE_ON_WINDOWS
+ szSetupLib.append("kvisetup.dll");
+#else
+ szSetupLib.append("libkvisetup.so");
+#endif
+ g_hSetupLibrary = kvi_library_open(szSetupLib.local8Bit().data());
+ if(!g_hSetupLibrary)
+ {
+ KviMessageBox::warning(__tr2qs("Ops...it looks like I can't load modules on this sytem.\n" \
+ "I have been looking for the %s library but I haven't been able to load it\n" \
+ "due to the following error: \"%s\"\nAborting."),szSetupLib.utf8().data(),kvi_library_error());
+#ifdef COMPILE_ON_WINDOWS
+ ExitProcess(-1);
+#else
+ ::exit(-1);
+#endif
+ }
+
+ bool (*sfunc)() = (bool(*)())kvi_library_symbol(g_hSetupLibrary,"setup_begin");
+ if(!sfunc)
+ {
+ KviMessageBox::warning(__tr2qs("Ops...it looks like you have a broken distribution.\n" \
+ "The setup module does not export the \"setup_begin\" function.\n" \
+ "Aborting!"));
+#ifdef COMPILE_ON_WINDOWS
+ ExitProcess(-1);
+#else
+ ::exit(-1);
+#endif
+ }
+
+ bool bRet = sfunc();
+
+ if(!bRet)
+ {
+ KviMessageBox::warning(__tr2qs("Setup aborted"));
+#ifdef COMPILE_ON_WINDOWS
+ ExitProcess(-1);
+#else //!COMPILE_ON_WINDOWS
+ ::exit(-1);
+#endif //!COMPILE_ON_WINDOWS
+ }
+
+ // Now save it
+ //Let it be done by setup function
+// saveKvircDirectory();
+}
+
+
+void KviApp::setupFinish()
+{
+ if(!g_hSetupLibrary)
+ {
+ debug("Oops... lost the setup library ?");
+ return;
+ }
+
+ void (*sfunc)() = (void(*)())kvi_library_symbol(g_hSetupLibrary,"setup_finish");
+ if(!sfunc)
+ {
+ KviMessageBox::warning(__tr2qs("Ops...it looks like you have a broken distribution.\n" \
+ "The setup module does not export the \"setup_finish\" function.\n" \
+ "Trying to continue anyway..."));
+ }
+
+ sfunc();
+
+ kvi_library_close(g_hSetupLibrary);
+ g_hSetupLibrary = 0;
+}
+
+
+void KviApp::saveKvircDirectory()
+{
+/*
+#ifdef COMPILE_ON_WINDOWS
+ KviStr szKey(KviStr::Format,"LocalKvircDirectory%s",KVI_VERSION_BRANCH);
+ WritePrivateProfileString("kvirc",szKey.ptr(),m_szLocalKvircDir.ptr(),KVI_HOME_CONFIG_FILE_NAME);
+#else //!COMPILE_ON_WINDOWS
+*/
+ // Here we save the local directory path
+#ifdef COMPILE_KDE_SUPPORT
+ // In KDE we use the application config file
+ if(m_szConfigFile.isEmpty())
+ { // not if user supplied a config file
+ KConfig * cfg = config();
+ if(cfg)
+ {
+ if(cfg->getConfigState() == KConfig::ReadWrite)
+ {
+ cfg->setGroup("Main");
+ cfg->writeEntry("LocalKvircDirectory",m_szLocalKvircDir);
+ cfg->writeEntry("SourcesDate",KVI_SOURCES_DATE_NUMERIC);
+ cfg->sync();
+ return;
+ }
+ }
+ }
+#endif //COMPILE_KDE_SUPPORT
+ // In NON-KDE we use $HOME/.kvirc.rc or $HOME/kvirc.ini
+
+ QString szF = QDir::homeDirPath();
+ if(!m_szConfigFile.isEmpty())
+ {//Must be changed from QString::fromLocal8Bit to QTextCodec::codecForLocale()
+ QString szConfig = m_szConfigFile;
+ if(QDir::isRelativePath(szConfig))
+ {
+ szF+=KVI_PATH_SEPARATOR;
+ szF+=szConfig;
+ } else {
+ szF=szConfig;
+ }
+ } else {
+ szF+=KVI_PATH_SEPARATOR;
+ szF+=KVI_HOME_CONFIG_FILE_NAME;
+ }
+ //FIXME: LOCALE BROKEN!!!
+
+ KviConfig cfgx(szF,KviConfig::Write);
+
+ cfgx.setGroup("Main");
+ cfgx.writeEntry("LocalKvircDirectory",m_szLocalKvircDir);
+ cfgx.writeEntry("SourcesDate",KVI_SOURCES_DATE_NUMERIC);
+}
diff --git a/src/kvirc/kernel/kvi_asynchronousconnectiondata.cpp b/src/kvirc/kernel/kvi_asynchronousconnectiondata.cpp
new file mode 100644
index 00000000..a97f4d3a
--- /dev/null
+++ b/src/kvirc/kernel/kvi_asynchronousconnectiondata.cpp
@@ -0,0 +1,39 @@
+//=============================================================================
+//
+// File : kvi_asynchronousconnectiondata.cpp
+// Created on Sun 04 Jul 2004 16:22:25 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_asynchronousconnectiondata.h"
+
+KviAsynchronousConnectionData::KviAsynchronousConnectionData()
+: KviHeapObject()
+{
+ m_pReconnectInfo=0;
+ bUseLastServerInContext = false;
+}
+
+KviAsynchronousConnectionData::~KviAsynchronousConnectionData()
+{
+}
+
diff --git a/src/kvirc/kernel/kvi_asynchronousconnectiondata.h b/src/kvirc/kernel/kvi_asynchronousconnectiondata.h
new file mode 100644
index 00000000..35c41ed3
--- /dev/null
+++ b/src/kvirc/kernel/kvi_asynchronousconnectiondata.h
@@ -0,0 +1,54 @@
+#ifndef _KVI_ASYNCHRONOUSCONNECTIONDATA_H_
+#define _KVI_ASYNCHRONOUSCONNECTIONDATA_H_
+//=============================================================================
+//
+// File : kvi_asynchronousconnectiondata.h
+// Created on Sun 04 Jul 2004 16:22:25 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_heapobject.h"
+#include "kvi_ircserver.h"
+
+class KviAsynchronousConnectionData : public KviHeapObject
+{
+public:
+ KviAsynchronousConnectionData();
+ ~KviAsynchronousConnectionData();
+public:
+ QString szServer;
+ bool bUseLastServerInContext; // this is checked ONLY if szServer is empty
+ kvi_u32_t uPort;
+ bool bPortIsOk;
+ bool bUseIpV6;
+ bool bUseSSL;
+ QString szBindAddress; // ip address (or interface name) to bind the connection to
+ QString szCommandToExecAfterConnect;
+ QString szLinkFilter;
+ QString szPass;
+ QString szNick;
+ QString szInitUMode;
+ KviIrcServerReconnectInfo * m_pReconnectInfo;
+};
+
+#endif //!_KVI_ASYNCHRONOUSCONNECTIONDATA_H_
diff --git a/src/kvirc/kernel/kvi_coreactionnames.h b/src/kvirc/kernel/kvi_coreactionnames.h
new file mode 100644
index 00000000..7309e286
--- /dev/null
+++ b/src/kvirc/kernel/kvi_coreactionnames.h
@@ -0,0 +1,69 @@
+#ifndef _KVI_COREACTIONNAMES_H_
+#define _KVI_COREACTIONNAMES_H_
+//=============================================================================
+//
+// File : kvi_coreactionnames.h
+// Created on Mon 22 Nov 2004 02:30:47 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define KVI_COREACTION_NAME_PREFIX "kvirc."
+
+#define KVI_COREACTION_SERVEROPTIONS (KVI_COREACTION_NAME_PREFIX "serveroptions")
+#define KVI_COREACTION_IDENTITYOPTIONS (KVI_COREACTION_NAME_PREFIX "identityoptions")
+#define KVI_COREACTION_SOCKETSPY (KVI_COREACTION_NAME_PREFIX "socketspy")
+#define KVI_COREACTION_NETWORKLINKS (KVI_COREACTION_NAME_PREFIX "networklinks")
+#define KVI_COREACTION_CHANNELLIST (KVI_COREACTION_NAME_PREFIX "channellist")
+#define KVI_COREACTION_GENERALOPTIONS (KVI_COREACTION_NAME_PREFIX "generaloptions")
+#define KVI_COREACTION_TOOLBAREDITOR (KVI_COREACTION_NAME_PREFIX "toolbareditor")
+#define KVI_COREACTION_JOINCHANNELS (KVI_COREACTION_NAME_PREFIX "joinchannels")
+#define KVI_COREACTION_ACTIONEDITOR (KVI_COREACTION_NAME_PREFIX "actioneditor")
+#define KVI_COREACTION_ALIASEDITOR (KVI_COREACTION_NAME_PREFIX "aliaseditor")
+#define KVI_COREACTION_EVENTEDITOR (KVI_COREACTION_NAME_PREFIX "eventeditor")
+#define KVI_COREACTION_POPUPEDITOR (KVI_COREACTION_NAME_PREFIX "popupeditor")
+#define KVI_COREACTION_RAWEDITOR (KVI_COREACTION_NAME_PREFIX "raweditor")
+#define KVI_COREACTION_CODETESTER (KVI_COREACTION_NAME_PREFIX "codetester")
+#define KVI_COREACTION_EXECUTEKVS (KVI_COREACTION_NAME_PREFIX "executekvs")
+#define KVI_COREACTION_CASCADEWINDOWS (KVI_COREACTION_NAME_PREFIX "cascadewindows")
+#define KVI_COREACTION_TILEWINDOWS (KVI_COREACTION_NAME_PREFIX "tilewindows")
+#define KVI_COREACTION_MINIMIZEALLWINDOWS (KVI_COREACTION_NAME_PREFIX "minimizeallwindows")
+#define KVI_COREACTION_NEWIRCCONTEXT (KVI_COREACTION_NAME_PREFIX "newirccontext")
+#define KVI_COREACTION_QUITKVIRC (KVI_COREACTION_NAME_PREFIX "quitkvirc")
+#define KVI_COREACTION_IRCCONTEXTDISPLAY (KVI_COREACTION_NAME_PREFIX "irccontextdisplay")
+#define KVI_COREACTION_SEPARATOR (KVI_COREACTION_NAME_PREFIX "separator")
+#define KVI_COREACTION_CONNECT (KVI_COREACTION_NAME_PREFIX "connect")
+#define KVI_COREACTION_CHANNELMENU (KVI_COREACTION_NAME_PREFIX "channelmenu")
+#define KVI_COREACTION_NICKNAMEMENU (KVI_COREACTION_NAME_PREFIX "nicknamemenu")
+#define KVI_COREACTION_SERVERMENU (KVI_COREACTION_NAME_PREFIX "servermenu")
+#define KVI_COREACTION_USERMODEMENU (KVI_COREACTION_NAME_PREFIX "usermodemenu")
+#define KVI_COREACTION_AWAYBACK (KVI_COREACTION_NAME_PREFIX "awayback")
+#define KVI_COREACTION_IRCTOOLS (KVI_COREACTION_NAME_PREFIX "irctools")
+#define KVI_COREACTION_IRCACTIONS (KVI_COREACTION_NAME_PREFIX "ircactions")
+#define KVI_COREACTION_HELPINDEX (KVI_COREACTION_NAME_PREFIX "helpindex")
+#define KVI_COREACTION_KVIRCMAILINGLIST (KVI_COREACTION_NAME_PREFIX "kvircmailinglist")
+#define KVI_COREACTION_KVIRCHOMEPAGE (KVI_COREACTION_NAME_PREFIX "kvirchomepage")
+#define KVI_COREACTION_KVIRCRUHOMEPAGE (KVI_COREACTION_NAME_PREFIX "kvircruhomepage")
+#define KVI_COREACTION_EDITREGUSERS (KVI_COREACTION_NAME_PREFIX "editregusers")
+#define KVI_COREACTION_MANAGEADDONS (KVI_COREACTION_NAME_PREFIX "manageaddons")
+#define KVI_COREACTION_THEMEOPTIONS (KVI_COREACTION_NAME_PREFIX "themeoptions")
+#define KVI_COREACTION_MANAGETHEMES (KVI_COREACTION_NAME_PREFIX "managethemes")
+#define KVI_COREACTION_SCREENSHOT (KVI_COREACTION_NAME_PREFIX "screenshot")
+
+#endif //!_KVI_COREACTIONNAMES_H_
diff --git a/src/kvirc/kernel/kvi_coreactions.cpp b/src/kvirc/kernel/kvi_coreactions.cpp
new file mode 100644
index 00000000..071f4ac9
--- /dev/null
+++ b/src/kvirc/kernel/kvi_coreactions.cpp
@@ -0,0 +1,1206 @@
+//=============================================================================
+//
+// File : kvi_coreactions.cpp
+// Created on Mon 22 Nov 2004 02:30:47 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_coreactions.h"
+#include "kvi_frame.h"
+#include "kvi_locale.h"
+#include "kvi_irccontext.h"
+#include "kvi_iconmanager.h"
+#include "kvi_app.h"
+#include "kvi_customtoolbar.h"
+#include "kvi_actiondrawer.h"
+#include "kvi_actionmanager.h"
+#include "kvi_kvs_action.h"
+#include "kvi_mdimanager.h"
+#include "kvi_irctoolbar.h"
+#include "kvi_locale.h"
+#include "kvi_ircurl.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectionuserinfo.h"
+#include "kvi_coreactionnames.h"
+#include "kvi_ircconnectionserverinfo.h"
+#include "kvi_styled_controls.h"
+
+#include "kvi_kvs_script.h"
+
+#include "kvi_tal_popupmenu.h"
+#include <qobject.h>
+
+
+// Ctrl+Alt+A : KviGoAwayAction
+// Ctrl+Alt+C : Connect/Disconnect
+// Ctrl+Alt+S : Servers dialog
+// Ctrl+Alt+I : Identity dialog
+// Ctrl+Alt+O : General options
+// Ctrl+Alt+T : Theme options
+// Ctrl+Alt+J : Join Channels
+// Ctrl+Alt+X : Execute script
+// Ctrl+Alt+N : New irc context
+// Ctrl+Alt+1 : Action editor
+// Ctrl+Alt+2 : Alias editor
+// Ctrl+Alt+3 : Event editor
+// Ctrl+Alt+4 : Popup editor
+// Ctrl+Alt+5 : Raw event editor
+// Ctrl+Alt+6 : Customize toolbars
+// Ctrl+Alt+H : Show help index
+// Ctrl+Alt+R : Edit regusers
+// Ctrl+Alt+M : Manage Script Addons
+// Ctrl+Alt+L : Manage Themes
+
+void register_core_actions(KviActionManager * m)
+{
+ m->registerAction(new KviConnectAction(m)); // this as parent will destroy it on exit!
+ m->registerAction(new KviSeparatorAction(m));
+ m->registerAction(new KviIrcContextDisplayAction(m));
+ m->registerAction(new KviJoinChannelAction(m));
+ m->registerAction(new KviChangeNickAction(m));
+ m->registerAction(new KviConnectToServerAction(m));
+ m->registerAction(new KviChangeUserModeAction(m));
+ m->registerAction(new KviGoAwayAction(m));
+ m->registerAction(new KviIrcToolsAction(m));
+ m->registerAction(new KviIrcOperationsAction(m));
+
+ KviAction * a;
+
+#define SCRIPT_ACTION(__name,__code,__visible,__description,__category,__icon,__smallicon,__flags,__accel) \
+ a = new KviKvsAction(m, \
+ QString(__name), \
+ QString(__code), \
+ QString(__visible), \
+ QString(__description), \
+ __category, \
+ QString(__icon), \
+ __smallicon, \
+ __flags, \
+ __accel); \
+ m->registerAction(a)
+
+#define SLOT_ACTION(__name,__object,__slot,__visible,__description,__category,__icon,__smallicon,__flags,__accel) \
+ a = new KviAction(m, \
+ QString(__name), \
+ QString(__visible), \
+ QString(__description), \
+ __category, \
+ QString(__icon), \
+ __smallicon, \
+ __flags, \
+ __accel); \
+ QObject::connect(a,SIGNAL(activated()),__object,__slot); \
+ m->registerAction(a)
+
+ SCRIPT_ACTION(
+ KVI_COREACTION_SERVEROPTIONS,
+ "options.edit KviServerOptionsWidget",
+ __tr2qs("Configure Servers..."),
+ __tr2qs("Allows you to configure the servers and eventually to connect to them"),
+ KviActionManager::categorySettings(),
+ "kvi_bigicon_servers.png",
+ KVI_SMALLICON_SERVER,
+ 0,
+ "Ctrl+Alt+S");
+
+ SCRIPT_ACTION(
+ KVI_COREACTION_MANAGEADDONS,
+ "addon.dialog",
+ __tr2qs("Manage Addons..."),
+ __tr2qs("Allows you to manage the script-based addons"),
+ KviActionManager::categorySettings(),
+ "kvi_bigicon_addons.png",
+ KVI_SMALLICON_ADDONS,
+ 0,
+ "Ctrl+Alt+M");
+
+ SCRIPT_ACTION(
+ KVI_COREACTION_EDITREGUSERS,
+ "reguser.edit -t",
+ __tr2qs("Configure Registered Users..."),
+ __tr2qs("Shows a dialog that allows editing the registered user entries"),
+ KviActionManager::categorySettings(),
+ "kvi_bigicon_regusers.png",
+ KVI_SMALLICON_REGUSERS,
+ 0,
+ "Ctrl+Alt+R");
+
+ SCRIPT_ACTION(
+ KVI_COREACTION_IDENTITYOPTIONS,
+ "options.edit KviIdentityOptionsWidget",
+ __tr2qs("Configure Identity..."),
+ __tr2qs("Allows you to configure nickname, username, avatar etc..."),
+ KviActionManager::categorySettings(),
+ "kvi_bigicon_identity.png",
+ KVI_SMALLICON_WHO,
+ 0,
+ "Ctrl+Alt+I");
+
+ SCRIPT_ACTION(
+ KVI_COREACTION_SOCKETSPY,
+ "socketspy.open",
+ __tr2qs("Show SocketSpy..."),
+ __tr2qs("Shows a window that allows monitoring the socket traffic"),
+ KviActionManager::categoryScripting(),
+ "kvi_bigicon_socketspy.png",
+ KVI_SMALLICON_SPY,
+ KviAction::NeedsContext,
+ QString::null);
+
+ SCRIPT_ACTION(
+ KVI_COREACTION_NETWORKLINKS,
+ "links.open",
+ __tr2qs("Get Network Links"),
+ __tr2qs("Shows a window that allows viewing the network links"),
+ KviActionManager::categoryIrc(),
+ "kvi_bigicon_networklinks.png",
+ KVI_SMALLICON_LINKS,
+ KviAction::NeedsContext,
+ QString::null);
+
+ SCRIPT_ACTION(
+ KVI_COREACTION_CHANNELLIST,
+ "list.open",
+ __tr2qs("Get Channel List"),
+ __tr2qs("Shows a window that allows listing the network channels"),
+ KviActionManager::categoryIrc(),
+ "kvi_bigicon_channellist.png",
+ KVI_SMALLICON_LIST,
+ KviAction::NeedsContext,
+ QString::null);
+
+ SCRIPT_ACTION(
+ KVI_COREACTION_GENERALOPTIONS,
+ "options.dialog",
+ __tr2qs("Configure KVIrc..."),
+ __tr2qs("Shows the general options dialog"),
+ KviActionManager::categorySettings(),
+ "kvi_bigicon_settings.png",
+ KVI_SMALLICON_OPTIONS,
+ 0,
+ "Ctrl+Alt+O");
+
+ SCRIPT_ACTION(
+ KVI_COREACTION_THEMEOPTIONS,
+ "options.dialog theme",
+ __tr2qs("Configure Theme..."),
+ __tr2qs("Shows the theme options dialog"),
+ KviActionManager::categorySettings(),
+ "kvi_bigicon_themeoptions.png",
+ KVI_SMALLICON_THEMEOPTIONS,
+ 0,
+ "Ctrl+Alt+T");
+
+ SCRIPT_ACTION(
+ KVI_COREACTION_MANAGETHEMES,
+ "theme.dialog",
+ __tr2qs("Manage Themes..."),
+ __tr2qs("Allows you to manage the themes"),
+ KviActionManager::categorySettings(),
+ "kvi_bigicon_theme.png",
+ KVI_SMALLICON_THEME,
+ 0,
+ "Ctrl+Alt+L");
+
+ SCRIPT_ACTION(
+ KVI_COREACTION_TOOLBAREDITOR,
+ "toolbareditor.open",
+ __tr2qs("Customize Toolbars..."),
+ __tr2qs("Shows a window that allows editing script toolbars"),
+ KviActionManager::categorySettings(),
+ "kvi_bigicon_toolbareditor.png",
+ KVI_SMALLICON_TOOLBAR,
+ 0,
+ "Ctrl+Alt+6");
+
+
+ SCRIPT_ACTION(
+ KVI_COREACTION_JOINCHANNELS,
+ "channelsjoin.open",
+ __tr2qs("Join Channels..."),
+ __tr2qs("Shows a dialog that allows you joing channels"),
+ KviActionManager::categoryIrc(),
+ "kvi_bigicon_channels.png",
+ KVI_SMALLICON_CHANNEL,
+ KviKvsAction::NeedsConnection | KviKvsAction::NeedsContext,
+ "Ctrl+Alt+J");
+
+
+ SCRIPT_ACTION(
+ KVI_COREACTION_ACTIONEDITOR,
+ "actioneditor.open",
+ __tr2qs("Edit Actions..."),
+ __tr2qs("Shows a window that allows editing actions"),
+ KviActionManager::categoryScripting(),
+ "kvi_bigicon_actioneditor.png",
+ KVI_SMALLICON_SCRIPTACTION,
+ 0,
+ "Ctrl+Alt+1");
+
+ SCRIPT_ACTION(
+ KVI_COREACTION_ALIASEDITOR,
+ "aliaseditor.open",
+ __tr2qs("Edit Aliases..."),
+ __tr2qs("Shows a window that allows editing aliases"),
+ KviActionManager::categoryScripting(),
+ "kvi_bigicon_aliaseditor.png",
+ KVI_SMALLICON_ALIAS,
+ 0,
+ "Ctrl+Alt+2");
+
+ SCRIPT_ACTION(
+ KVI_COREACTION_EVENTEDITOR,
+ "eventeditor.open",
+ __tr2qs("Edit Events..."),
+ __tr2qs("Shows a window that allows editing script events"),
+ KviActionManager::categoryScripting(),
+ "kvi_bigicon_eventeditor.png",
+ KVI_SMALLICON_EVENT,
+ 0,
+ "Ctrl+Alt+3");
+
+ SCRIPT_ACTION(
+ KVI_COREACTION_POPUPEDITOR,
+ "popupeditor.open",
+ __tr2qs("Edit Popups..."),
+ __tr2qs("Shows a window that allows editing popup menus"),
+ KviActionManager::categoryScripting(),
+ "kvi_bigicon_popupeditor.png",
+ KVI_SMALLICON_POPUP,
+ 0,
+ "Ctrl+Alt+4");
+
+ SCRIPT_ACTION(
+ KVI_COREACTION_RAWEDITOR,
+ "raweditor.open",
+ __tr2qs("Edit Raw Events..."),
+ __tr2qs("Shows a window that allows editing raw scripting events"),
+ KviActionManager::categoryScripting(),
+ "kvi_bigicon_raweditor.png",
+ KVI_SMALLICON_RAWEVENT,
+ 0,
+ "Ctrl+Alt+5");
+
+ SCRIPT_ACTION(
+ KVI_COREACTION_CODETESTER,
+ "codetester.open",
+ __tr2qs("New Script Tester"),
+ __tr2qs("Creates an embedded editor for long scripts"),
+ KviActionManager::categoryScripting(),
+ "kvi_bigicon_codetester.png",
+ KVI_SMALLICON_BOMB,
+ 0,
+ QString::null);
+
+ SCRIPT_ACTION(
+ KVI_COREACTION_EXECUTEKVS,
+ "dialog.file(open,$tr(\"Select a Script File\")){ if(!$str.isEmpty($0))parse $0; }",
+ __tr2qs("Execute Script..."),
+ __tr2qs("Allows executing a KVS script from file"),
+ KviActionManager::categoryScripting(),
+ "kvi_bigicon_folder.png",
+ KVI_SMALLICON_FOLDER,
+ 0,
+ "Ctrl+Alt+X");
+
+ SCRIPT_ACTION(
+ KVI_COREACTION_HELPINDEX,
+ "help",
+ __tr2qs("Help Index"),
+ __tr2qs("Shows the documentation index"),
+ KviActionManager::categoryGeneric(),
+ "kvi_bigicon_help.png",
+ KVI_SMALLICON_HELP,
+ 0,
+ "Ctrl+Alt+H");
+
+ SCRIPT_ACTION(
+ KVI_COREACTION_KVIRCMAILINGLIST,
+ "openurl http://www.kvirc.net/?id=mailinglist",
+ __tr2qs("Subscribe to the Mailing List"),
+ __tr2qs("Allows subscribing to the KVIrc mailing list"),
+ KviActionManager::categoryGeneric(),
+ "kvi_bigicon_mailinglist.png",
+ KVI_SMALLICON_MESSAGE,
+ 0,
+ QString::null);
+
+ SCRIPT_ACTION(
+ KVI_COREACTION_KVIRCHOMEPAGE,
+ "openurl http://www.kvirc.net",
+ __tr2qs("KVIrc WWW"),
+ __tr2qs("Opens the KVIrc homepage"),
+ KviActionManager::categoryGeneric(),
+ "kvi_bigicon_kvircwww.png",
+ KVI_SMALLICON_KVIRC,
+ 0,
+ QString::null);
+
+ SCRIPT_ACTION(
+ KVI_COREACTION_KVIRCRUHOMEPAGE,
+ "openurl http://www.kvirc.ru",
+ __tr2qs("KVIrc Russian WWW"),
+ __tr2qs("Opens the KVIrc homepage in russian"),
+ KviActionManager::categoryGeneric(),
+ "kvi_bigicon_kvircwww.png",
+ KVI_SMALLICON_KVIRC,
+ 0,
+ QString::null);
+
+ SCRIPT_ACTION(
+ KVI_COREACTION_SCREENSHOT,
+ "theme.screenshot",
+ __tr2qs("Acquire Screenshot"),
+ __tr2qs("Acquires a Screenshot of the KVIrc main window"),
+ KviActionManager::categoryGeneric(),
+ "kvi_bigicon_screenshot.png",
+ KVI_SMALLICON_SCREENSHOT,
+ 0,
+ QString::null);
+
+
+ SLOT_ACTION(
+ KVI_COREACTION_CASCADEWINDOWS,
+ g_pFrame->mdiManager(),
+ SLOT(cascadeMaximized()),
+ __tr2qs("Cascade windows"),
+ __tr2qs("Arranges the MDI windows in a maximized-cascade fashion"),
+ KviActionManager::categoryGUI(),
+ "kvi_bigicon_cascadewindows.png",
+ KVI_SMALLICON_CASCADEWINDOWS,
+ 0,
+ QString::null);
+
+ SLOT_ACTION(
+ KVI_COREACTION_TILEWINDOWS,
+ g_pFrame->mdiManager(),
+ SLOT(tile()),
+ __tr2qs("Tile windows"),
+ __tr2qs("Tiles the MDI windows with the currently selected tile method"),
+ KviActionManager::categoryGUI(),
+ "kvi_bigicon_tilewindows.png",
+ KVI_SMALLICON_TILEWINDOWS,
+ 0,
+ QString::null);
+
+ SLOT_ACTION(
+ KVI_COREACTION_MINIMIZEALLWINDOWS,
+ g_pFrame->mdiManager(),
+ SLOT(minimizeAll()),
+ __tr2qs("Minimize all windows"),
+ __tr2qs("Minimized all the currently visible MDI windows"),
+ KviActionManager::categoryGUI(),
+ "kvi_bigicon_minimizeallwindows.png",
+ KVI_SMALLICON_MINIMIZE,
+ 0,
+ QString::null);
+
+ SLOT_ACTION(
+ KVI_COREACTION_NEWIRCCONTEXT,
+ g_pFrame,
+ SLOT(newConsole()),
+ __tr2qs("New IRC Context"),
+ __tr2qs("Creates a new IRC context console"),
+ KviActionManager::categoryIrc(),
+ "kvi_bigicon_newirccontext.png",
+ KVI_SMALLICON_CONSOLE,
+ 0,
+ "Ctrl+Alt+N");
+
+ SLOT_ACTION(
+ KVI_COREACTION_QUITKVIRC,
+ g_pApp,
+ SLOT(quit()),
+ __tr2qs("Quit KVIrc"),
+ __tr2qs("Quits KVIrc closing all the current connections"),
+ KviActionManager::categoryGeneric(),
+ "kvi_bigicon_quit.png",
+ KVI_SMALLICON_QUITAPP,
+ 0,
+ QString::null);
+}
+
+
+
+
+KviIrcContextDisplayAction::KviIrcContextDisplayAction(QObject * pParent)
+: KviAction(pParent,
+ QString(KVI_COREACTION_IRCCONTEXTDISPLAY),
+ __tr2qs("IRC Context Display"),
+ __tr2qs("Shows a small display with IRC context informations"),
+ KviActionManager::categoryIrc(),
+ "kvi_bigicon_irccontextdisplay.png",
+ KVI_SMALLICON_NONE,
+ NeedsContext | NeedsConnection)
+{
+}
+
+void KviIrcContextDisplayAction::setup()
+{
+ KviAction::setup();
+ connect(g_pFrame,SIGNAL(activeConnectionServerInfoChanged()),this,SLOT(activeContextStateChanged()));
+ connect(g_pFrame,SIGNAL(activeConnectionNickNameChanged()),this,SLOT(activeContextStateChanged()));
+ connect(g_pFrame,SIGNAL(activeConnectionUserModeChanged()),this,SLOT(activeContextStateChanged()));
+ connect(g_pFrame,SIGNAL(activeConnectionAwayStateChanged()),this,SLOT(activeContextStateChanged()));
+ connect(g_pFrame,SIGNAL(activeConnectionLagChanged()),this,SLOT(activeContextStateChanged()));
+}
+
+bool KviIrcContextDisplayAction::addToPopupMenu(KviTalPopupMenu *p)
+{
+ // QT4SUX: Widgets can be no longer added to popup menus.. what about labels ?
+#ifndef COMPILE_USE_QT4
+ if(!setupDone())setup();
+ KviIrcContextDisplay * w = new KviIrcContextDisplay(p,"kvirc.irccontextdisplay");
+ registerWidget(w);
+ p->insertItem(w);
+#endif
+ return true;
+}
+
+QWidget * KviIrcContextDisplayAction::addToCustomToolBar(KviCustomToolBar *t)
+{
+ if(!setupDone())setup();
+ KviIrcContextDisplay * w = new KviIrcContextDisplay(t,"kvirc.irccontextdisplay");
+#ifdef COMPILE_USE_QT4
+ t->addWidget(w);
+#endif
+ registerWidget(w);
+ return w;
+}
+
+void KviIrcContextDisplayAction::activeContextChanged()
+{
+ if(m_pWidgetList)
+ {
+ for(QWidget * w = m_pWidgetList->first();w;w = m_pWidgetList->next())
+ w->update();
+ }
+}
+
+void KviIrcContextDisplayAction::activeContextStateChanged()
+{
+ if(m_pWidgetList)
+ {
+ for(QWidget * w = m_pWidgetList->first();w;w = m_pWidgetList->next())
+ w->update();
+ }
+}
+
+void KviIrcContextDisplayAction::setEnabled(bool)
+{
+ // does nothing here : always enabled!
+}
+
+
+
+
+KviSeparatorAction::KviSeparatorAction(QObject * pParent)
+: KviAction(pParent,
+ QString(KVI_COREACTION_SEPARATOR),
+ __tr2qs("Separator"),
+ __tr2qs("Acts as a separator for other items: performs no action"),
+ KviActionManager::categoryGeneric(),
+ KVI_BIGICON_SEPARATOR,
+ KVI_SMALLICON_NONE,
+ 0)
+{
+}
+
+
+bool KviSeparatorAction::addToPopupMenu(KviTalPopupMenu *p)
+{
+ if(!setupDone())setup();
+ p->insertSeparator();
+ return true;
+}
+
+QWidget * KviSeparatorAction::addToCustomToolBar(KviCustomToolBar *t)
+{
+ if(!setupDone())setup();
+ QWidget * w = new KviCustomToolBarSeparator(t,"kvirc.separator");
+ registerWidget(w);
+#ifdef COMPILE_USE_QT4
+ t->addWidget(w);
+#endif
+ return w;
+}
+
+
+
+
+
+KviConnectAction::KviConnectAction(QObject * pParent)
+: KviAction(pParent,
+ QString(KVI_COREACTION_CONNECT),
+ __tr2qs("Connect/Disconnect"),
+ __tr2qs("Allows you to connect to a server or to terminate the current connection"),
+ KviActionManager::categoryIrc(),
+ KVI_BIGICON_CONNECTED,
+ KVI_SMALLICON_NONE, // no small icon for now
+ NeedsContext | NeedsConnection,
+ QString("Ctrl+Alt+C"))
+{
+}
+
+
+void KviConnectAction::reloadImages()
+{
+ activeContextStateChanged();
+}
+
+void KviConnectAction::activeContextChanged()
+{
+ activeContextStateChanged();
+}
+
+void KviConnectAction::activeContextStateChanged()
+{
+
+ KviPointerList<QWidget> * bl = widgetList();
+ if(!bl)return;
+
+ QPixmap * p;
+ QString txt;
+ KviIrcContext * c = g_pFrame->activeContext();
+ if(c)
+ {
+ switch(c->state())
+ {
+ case KviIrcContext::Idle:
+ p = g_pIconManager->getBigIcon(KVI_BIGICON_DISCONNECTED);
+ txt = m_szConnectString;
+ break;
+ case KviIrcContext::Connecting:
+ case KviIrcContext::LoggingIn:
+ p = g_pIconManager->getBigIcon(KVI_BIGICON_CONNECTING);
+ txt = m_szAbortConnectionString;
+ break;
+ case KviIrcContext::Connected:
+ p = g_pIconManager->getBigIcon(KVI_BIGICON_CONNECTED);
+ txt = m_szDisconnectString;
+ break;
+ default:
+ p = 0;
+ break;
+ }
+ } else {
+ p = 0;
+ }
+
+ if(p)
+ {
+ for(QToolButton * b = (QToolButton *)bl->first();b;b =(QToolButton *)bl->next())
+ {
+ if(!b->isEnabled())b->setEnabled(true);
+ b->setPixmap(*p);
+ b->setTextLabel(txt);
+ }
+ } else {
+ for(QToolButton * b = (QToolButton *)bl->first();b;b = (QToolButton *)bl->next())
+ {
+ if(b->isEnabled())b->setEnabled(false);
+ }
+ }
+}
+
+void KviConnectAction::setup()
+{
+ KviAction::setup();
+ m_szConnectString = __tr2qs("Connect");
+ m_szAbortConnectionString = __tr2qs("Abort Connection");
+ m_szDisconnectString = __tr2qs("Disconnect");
+}
+
+void KviConnectAction::activate()
+{
+ KviIrcContext * c = g_pFrame->activeContext();
+ if(c)c->connectOrDisconnect();
+}
+
+bool KviConnectAction::addToPopupMenu(KviTalPopupMenu *p)
+{
+ if(!setupDone())setup();
+ KviIrcContext * c = g_pFrame->activeContext();
+ int id;
+
+
+ QString t;
+ if(c)
+ {
+ switch(c->state())
+ {
+ case KviIrcContext::Idle:
+ t = m_szConnectString;
+ if(!m_szKeySequence.isEmpty())t += '\t' + m_szKeySequence;
+ p->insertItem(t,this,SLOT(activate()));
+ break;
+ case KviIrcContext::Connecting:
+ case KviIrcContext::LoggingIn:
+ t = m_szAbortConnectionString;
+ if(!m_szKeySequence.isEmpty())t += '\t' + m_szKeySequence;
+ p->insertItem(t,this,SLOT(activate()));
+ break;
+ case KviIrcContext::Connected:
+ t = m_szDisconnectString;
+ if(!m_szKeySequence.isEmpty())t += '\t' + m_szKeySequence;
+ p->insertItem(t,this,SLOT(activate()));
+ break;
+ default:
+ t = m_szConnectString;
+ if(!m_szKeySequence.isEmpty())t += '\t' + m_szKeySequence;
+ id = p->insertItem(t,this,SLOT(activate()));
+ p->setItemEnabled(id,false);
+ break;
+ }
+ } else {
+ t = m_szConnectString;
+ if(!m_szKeySequence.isEmpty())t += '\t' + m_szKeySequence;
+ id = p->insertItem(t,this,SLOT(activate()));
+ p->setItemEnabled(id,false);
+ }
+ return true;
+}
+
+QWidget * KviConnectAction::addToCustomToolBar(KviCustomToolBar *t)
+{
+ if(!setupDone())setup();
+ QToolButton * b = new KviStyledToolButton(
+ *(g_pIconManager->getBigIcon(KVI_BIGICON_DISCONNECTED)),
+ m_szConnectString,
+ m_szConnectString,
+ this,SLOT(activate()),t,name());
+ registerWidget(b);
+#ifdef COMPILE_USE_QT4
+ t->addWidget(b);
+#endif
+ activeContextStateChanged();
+ return b;
+}
+
+
+
+
+
+
+
+KviSubmenuAction::KviSubmenuAction(QObject * pParent,
+ const QString &szName,
+ const QString &szScriptCode,
+ const QString &szVisibleName,
+ const QString &szDescription,
+ KviActionCategory * pCategory,
+ const QString &szBigIcon,
+ int iSmallIconId,
+ unsigned int uFlags)
+ : KviKvsAction(pParent,
+ szName,
+ szScriptCode,
+ szVisibleName,
+ szDescription,
+ pCategory,
+ szBigIcon,
+ iSmallIconId,
+ uFlags)
+{
+ m_pPopup = 0;
+}
+
+KviSubmenuAction::~KviSubmenuAction()
+{
+ if(m_pPopup)delete m_pPopup;
+}
+
+void KviSubmenuAction::setup()
+{
+ KviKvsAction::setup();
+ if(!m_pPopup)
+ {
+ m_pPopup = new KviTalPopupMenu();
+ connect(m_pPopup,SIGNAL(aboutToShow()),this,SLOT(popupAboutToShow()));
+ connect(m_pPopup,SIGNAL(activated(int)),this,SLOT(popupActivated(int)));
+ }
+}
+
+void KviSubmenuAction::popupAboutToShow()
+{
+}
+
+void KviSubmenuAction::popupActivated(int)
+{
+}
+
+bool KviSubmenuAction::addToPopupMenu(KviTalPopupMenu *p)
+{
+ if(!setupDone())setup();
+ int id = p->insertItem(*(smallIcon()),visibleName(),m_pPopup);
+ if(!isEnabled())p->setItemEnabled(id,false);
+ return true;
+}
+
+QWidget * KviSubmenuAction::addToCustomToolBar(KviCustomToolBar *t)
+{
+ if(!setupDone())setup();
+ KviStyledToolButton * b = new KviStyledToolButton(
+ *(bigIcon()),
+ visibleName(),
+ visibleName(),
+ this,SLOT(activate()),t,name());
+ b->setPopup(m_pPopup);
+
+#ifdef COMPILE_USE_QT4
+ b->setPopupMode( scriptCode().isEmpty() ? QToolButton::InstantPopup : QToolButton::MenuButtonPopup);
+ t->addWidget(b);
+#else
+ b->setShowSubmenuIndicator(true);
+ b->setPopupDelay(1);
+#endif
+ registerWidget(b);
+ if(!isEnabled())b->setEnabled(false);
+ return b;
+}
+
+
+
+
+
+
+KviJoinChannelAction::KviJoinChannelAction(QObject * pParent)
+: KviSubmenuAction(pParent,
+ QString(KVI_COREACTION_CHANNELMENU),
+ QString("channelsjoin.open"),
+ __tr2qs("Join Channel"),
+ __tr2qs("Shows a popup menu that allows quickly selecting a channel to join"),
+ KviActionManager::categoryIrc(),
+ "kvi_bigicon_channelspopup.png",
+ KVI_SMALLICON_CHANNEL,
+ NeedsConnection | NeedsContext)
+{
+}
+
+void KviJoinChannelAction::popupAboutToShow()
+{
+ KviConsole * c = g_pActiveWindow->console();
+ if(!c)return;
+
+ g_pApp->fillRecentChannelsPopup(m_pPopup,c);
+
+ m_pPopup->insertSeparator();
+ m_pPopup->insertItem(*(smallIcon()),__tr2qs("Other..."));
+}
+
+void KviJoinChannelAction::popupActivated(int id)
+{
+ KviConsole * c = g_pActiveWindow->console();
+ if(!c)return;
+
+ QString text = m_pPopup->text(id);
+ if(!text.isEmpty())
+ {
+ QString szText;
+ if(__tr2qs("Other...") == text)szText = "channelsjoin.open";
+ else {
+ szText = text;
+ szText.prepend("join ");
+ }
+ KviKvsScript::run(szText,c);
+ }
+}
+
+
+
+KviChangeNickAction::KviChangeNickAction(QObject * pParent)
+: KviSubmenuAction(pParent,
+ QString(KVI_COREACTION_NICKNAMEMENU),
+ QString("dialog.textinput(\"Change Nickname\",\"Please enter the new nickname\",\"Cancel\",\"default=OK\"){ if($0 == 1)nick $1; }"),
+ __tr2qs("Change Nickname"),
+ __tr2qs("Shows a popup menu that allows quickly changing the nickname"),
+ KviActionManager::categoryIrc(),
+ "kvi_bigicon_nickpopup.png",
+ KVI_SMALLICON_NICK,
+ NeedsConnection | NeedsContext)
+{
+}
+
+void KviChangeNickAction::popupAboutToShow()
+{
+ KviConsole * c = g_pActiveWindow->console();
+ if(!c)return;
+
+ g_pApp->fillRecentNicknamesPopup(m_pPopup,c);
+
+ m_pPopup->insertSeparator();
+ m_pPopup->insertItem(*(smallIcon()),__tr2qs("Other..."));
+}
+
+void KviChangeNickAction::popupActivated(int id)
+{
+ KviConsole * c = g_pActiveWindow->console();
+ if(!c)return;
+
+ QString text = m_pPopup->text(id);
+ if(!text.isEmpty())
+ {
+ QString szText;
+ if(__tr2qs("Other...") == text)
+ {
+ activate();
+ } else {
+ szText = text;
+ szText.prepend("nick ");
+ KviKvsScript::run(szText,c);
+ }
+ }
+}
+
+
+
+
+
+
+KviConnectToServerAction::KviConnectToServerAction(QObject * pParent)
+: KviSubmenuAction(pParent,
+ QString(KVI_COREACTION_SERVERMENU),
+ QString("options.edit KviServerOptionsWidget"),
+ __tr2qs("Connect To"),
+ __tr2qs("Shows a popup menu that allows quickly connecting to a server"),
+ KviActionManager::categoryIrc(),
+ "kvi_bigicon_server.png",
+ KVI_SMALLICON_SERVER,
+ NeedsContext)
+{
+}
+
+void KviConnectToServerAction::popupAboutToShow()
+{
+ g_pApp->fillRecentServersPopup(m_pPopup);
+ m_pPopup->insertSeparator();
+ m_pPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SERVER)),__tr2qs("Other..."));
+}
+
+void KviConnectToServerAction::popupActivated(int id)
+{
+ KviConsole * c = g_pActiveWindow->console();
+ if(!c)return;
+
+ QString text = m_pPopup->text(id);
+ if(!text.isEmpty())
+ {
+ if(__tr2qs("Other...") == text)
+ {
+ activate();
+ } else {
+ KviStr szCommand;
+ KviStr szText = text;
+ if(KviIrcUrl::parse(szText.ptr(),szCommand,KVI_IRCURL_CONTEXT_THIS))
+ {
+ KviKvsScript::run(szCommand.ptr(),c);
+ }
+ }
+ }
+}
+
+
+
+
+
+KviChangeUserModeAction::KviChangeUserModeAction(QObject * pParent)
+: KviSubmenuAction(pParent,
+ QString(KVI_COREACTION_USERMODEMENU),
+ QString(""),
+ __tr2qs("User Mode"),
+ __tr2qs("Shows a popup menu that allows quickly changing user modes"),
+ KviActionManager::categoryIrc(),
+ "kvi_bigicon_usermode.png",
+ KVI_SMALLICON_MODE,
+ NeedsContext | NeedsConnection)
+{
+}
+
+void KviChangeUserModeAction::popupAboutToShow()
+{
+ KviConsole * c = g_pActiveWindow->console();
+ if(!c)return;
+
+ m_pPopup->clear();
+ int id;
+ QString szModes = g_pActiveWindow->console()->connection()->serverInfo()->supportedUserModes();
+
+ id = m_pPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_WALLOPS)),__tr2qs("Wallops (+w)"));
+ m_pPopup->setItemChecked(id,c->connection()->userInfo()->hasUserMode('w'));
+ id = m_pPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SERVERNOTICE)),__tr2qs("Server Notices (+s)"));
+ m_pPopup->setItemChecked(id,c->connection()->userInfo()->hasUserMode('s'));
+ id = m_pPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_INVISIBLE)),__tr2qs("Invisible (+i)"));
+ m_pPopup->setItemChecked(id,c->connection()->userInfo()->hasUserMode('i'));
+
+ szModes.replace("w","");
+ szModes.replace("s","");
+ szModes.replace("i","");
+ while(!szModes.isEmpty())
+ {
+ QChar ccc = szModes[0];
+ szModes.remove(0,1);
+ id = m_pPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_MODE)),QString("+%1 Mode").arg(ccc));
+ m_pPopup->setItemChecked(id,c->connection()->userInfo()->hasUserMode(ccc.latin1()));
+ }
+}
+
+void KviChangeUserModeAction::popupActivated(int id)
+{
+ KviConsole * c = g_pActiveWindow->console();
+ if(!c)return;
+
+ QString text = m_pPopup->text(id);
+ if(!c->isConnected())return;
+ if(!text.isEmpty())
+ {
+ int idx = text.find('+');
+ if(idx != -1)
+ {
+ idx++;
+ if(idx < text.length())
+ {
+ QChar m = text[idx];
+ QString command = "mode ";
+ command.append(c->connection()->userInfo()->nickName());
+ command.append(c->connection()->userInfo()->hasUserMode(m) ? " -" : " +");
+ command.append(m);
+ KviKvsScript::run(command,c);
+ }
+ }
+ }
+}
+
+
+KviGoAwayAction::KviGoAwayAction(QObject * pParent)
+: KviKvsAction(pParent,
+ QString(KVI_COREACTION_AWAYBACK),
+ QString("if($away())back; else away;"),
+ __tr2qs("Away/Back"),
+ __tr2qs("Allows entering and leaving away state"),
+ KviActionManager::categoryIrc(),
+ "kvi_bigicon_nokeyboard.png",
+ KVI_SMALLICON_NOTAWAY,
+ KviKvsAction::NeedsContext | KviKvsAction::NeedsConnection,
+ "Ctrl+Alt+A")
+{
+}
+
+void KviGoAwayAction::reloadImages()
+{
+ activeContextStateChanged();
+}
+
+void KviGoAwayAction::activeContextChanged()
+{
+ activeContextStateChanged();
+}
+
+void KviGoAwayAction::activeContextStateChanged()
+{
+ KviPointerList<QWidget> * bl = widgetList();
+ if(!bl)return;
+
+ QPixmap * p;
+ QString txt;
+ KviIrcContext * c = g_pFrame->activeContext();
+ if(c)
+ {
+ if(c->state() == KviIrcContext::Connected)
+ {
+ if(c->connection()->userInfo()->isAway())
+ {
+ p = g_pIconManager->getBigIcon("kvi_bigicon_keyboard.png");
+ txt = m_szBackString;
+ } else {
+ p = g_pIconManager->getBigIcon("kvi_bigicon_nokeyboard.png");
+ txt = m_szAwayString;
+ }
+ } else {
+ p = 0;
+ }
+ } else {
+ p = 0;
+ }
+
+ if(p)
+ {
+ for(QToolButton * b = (QToolButton *)bl->first();b;b =(QToolButton *)bl->next())
+ {
+ if(!b->isEnabled())b->setEnabled(true);
+ b->setPixmap(*p);
+ b->setTextLabel(txt);
+ }
+ m_uInternalFlags |= KVI_ACTION_FLAG_ENABLED;
+ setEnabled(true);
+ } else {
+ for(QToolButton * b = (QToolButton *)bl->first();b;b = (QToolButton *)bl->next())
+ {
+ if(b->isEnabled())b->setEnabled(false);
+ }
+ m_uInternalFlags &= ~KVI_ACTION_FLAG_ENABLED;
+ setEnabled(true);
+ }
+}
+
+void KviGoAwayAction::setup()
+{
+ KviKvsAction::setup();
+ m_szAwayString = __tr2qs("Enter Away Mode");
+ m_szBackString = __tr2qs("Leave Away Mode");
+ connect(g_pFrame,SIGNAL(activeConnectionAwayStateChanged()),this,SLOT(activeContextStateChanged()));
+}
+
+bool KviGoAwayAction::addToPopupMenu(KviTalPopupMenu *p)
+{
+ if(!setupDone())setup();
+ KviIrcContext * c = g_pFrame->activeContext();
+ int id;
+ QString t;
+ if(c)
+ {
+ if(c->state() == KviIrcContext::Connected)
+ {
+ if(c->connection()->userInfo()->isAway())
+ {
+ t = m_szBackString;
+ if(!m_szKeySequence.isEmpty())t += '\t' + m_szKeySequence;
+ p->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_AWAY)),t,this,SLOT(activate()));
+ } else {
+ t = m_szAwayString;
+ if(!m_szKeySequence.isEmpty())t += '\t' + m_szKeySequence;
+ p->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_NOTAWAY)),t,this,SLOT(activate()));
+ }
+ } else {
+ t = m_szAwayString;
+ if(!m_szKeySequence.isEmpty())t += '\t' + m_szKeySequence;
+ id = p->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_NOTAWAY)),t,this,SLOT(activate()));
+ p->setItemEnabled(id,false);
+ }
+ } else {
+ t = m_szAwayString;
+ if(!m_szKeySequence.isEmpty())t += '\t' + m_szKeySequence;
+ id = p->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_NOTAWAY)),t,this,SLOT(activate()));
+ p->setItemEnabled(id,false);
+ }
+ return true;
+}
+
+QWidget * KviGoAwayAction::addToCustomToolBar(KviCustomToolBar *t)
+{
+ if(!setupDone())setup();
+ QToolButton * b = new KviStyledToolButton(
+ *(g_pIconManager->getBigIcon("kvi_bigicon_nokeyboard.png")),
+ m_szAwayString,
+ m_szAwayString,
+ this,SLOT(activate()),t,name());
+ registerWidget(b);
+#ifdef COMPILE_USE_QT4
+ t->addWidget(b);
+#endif
+ activeContextStateChanged();
+ return b;
+}
+
+
+
+
+
+
+
+
+
+
+
+KviIrcToolsAction::KviIrcToolsAction(QObject * pParent)
+: KviSubmenuAction(pParent,
+ QString(KVI_COREACTION_IRCTOOLS),
+ QString(""),
+ __tr2qs("Irc Tools"),
+ __tr2qs("Shows a popup menu with some IRC Tools"),
+ KviActionManager::categoryIrc(),
+ "kvi_bigicon_tools.png",
+ KVI_SMALLICON_NONE,
+ NeedsConnection | NeedsContext)
+{
+}
+
+void KviIrcToolsAction::popupAboutToShow()
+{
+ m_pPopup->clear();
+ KviAction * a;
+ a = KviActionManager::instance()->getAction(KVI_COREACTION_SOCKETSPY);
+ if(a)a->addToPopupMenu(m_pPopup);
+ a = KviActionManager::instance()->getAction(KVI_COREACTION_SEPARATOR);
+ if(a)a->addToPopupMenu(m_pPopup);
+ a = KviActionManager::instance()->getAction(KVI_COREACTION_CHANNELLIST);
+ if(a)a->addToPopupMenu(m_pPopup);
+ a = KviActionManager::instance()->getAction(KVI_COREACTION_NETWORKLINKS);
+ if(a)a->addToPopupMenu(m_pPopup);
+}
+
+void KviIrcToolsAction::popupActivated(int id)
+{
+}
+
+
+
+
+
+
+KviIrcOperationsAction::KviIrcOperationsAction(QObject * pParent)
+: KviSubmenuAction(pParent,
+ QString(KVI_COREACTION_IRCACTIONS),
+ QString(""),
+ __tr2qs("Irc Actions"),
+ __tr2qs("Shows a popup menu with some IRC Actions"),
+ KviActionManager::categoryIrc(),
+ "kvi_bigicon_actions.png",
+ KVI_SMALLICON_NONE,
+ NeedsConnection | NeedsContext)
+{
+}
+
+void KviIrcOperationsAction::popupAboutToShow()
+{
+ m_pPopup->clear();
+ KviAction * a;
+ a = KviActionManager::instance()->getAction(KVI_COREACTION_AWAYBACK);
+ if(a)a->addToPopupMenu(m_pPopup);
+ a = KviActionManager::instance()->getAction(KVI_COREACTION_USERMODEMENU);
+ if(a)a->addToPopupMenu(m_pPopup);
+ a = KviActionManager::instance()->getAction(KVI_COREACTION_SEPARATOR);
+ if(a)a->addToPopupMenu(m_pPopup);
+ a = KviActionManager::instance()->getAction(KVI_COREACTION_CHANNELMENU);
+ if(a)a->addToPopupMenu(m_pPopup);
+ a = KviActionManager::instance()->getAction(KVI_COREACTION_NICKNAMEMENU);
+ if(a)a->addToPopupMenu(m_pPopup);
+ a = KviActionManager::instance()->getAction(KVI_COREACTION_SEPARATOR);
+ if(a)a->addToPopupMenu(m_pPopup);
+ a = KviActionManager::instance()->getAction(KVI_COREACTION_SERVERMENU);
+ if(a)a->addToPopupMenu(m_pPopup);
+}
+
+void KviIrcOperationsAction::popupActivated(int id)
+{
+}
+
+
diff --git a/src/kvirc/kernel/kvi_coreactions.h b/src/kvirc/kernel/kvi_coreactions.h
new file mode 100644
index 00000000..4e79fd3a
--- /dev/null
+++ b/src/kvirc/kernel/kvi_coreactions.h
@@ -0,0 +1,188 @@
+#ifndef _KVI_COREACTIONS_H_
+#define _KVI_COREACTIONS_H_
+//=============================================================================
+//
+// File : kvi_coreactions.h
+// Created on Mon 22 Nov 2004 02:30:47 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_action.h"
+#include "kvi_kvs_action.h"
+#include "kvi_pointerlist.h"
+
+#include <qtoolbutton.h>
+
+class KviConnectAction : public KviAction
+{
+ Q_OBJECT
+public:
+ KviConnectAction(QObject * pParent);
+protected:
+ QString m_szConnectString;
+ QString m_szAbortConnectionString;
+ QString m_szDisconnectString;
+public:
+ virtual bool addToPopupMenu(KviTalPopupMenu *p);
+ virtual QWidget * addToCustomToolBar(KviCustomToolBar *t);
+protected:
+ virtual void setup();
+ virtual void reloadImages();
+ virtual void activate();
+ virtual void activeContextChanged();
+ virtual void activeContextStateChanged();
+};
+
+class KviSeparatorAction : public KviAction
+{
+ Q_OBJECT
+public:
+ KviSeparatorAction(QObject * pParent);
+public:
+ virtual bool addToPopupMenu(KviTalPopupMenu *p);
+ virtual QWidget * addToCustomToolBar(KviCustomToolBar *t);
+};
+
+class KviTalPopupMenu;
+
+class KviSubmenuAction : public KviKvsAction
+{
+ Q_OBJECT
+public:
+ KviSubmenuAction(QObject * pParent,
+ const QString &szName,
+ const QString &szScriptCode,
+ const QString &szVisibleName,
+ const QString &szDescription,
+ KviActionCategory * pCategory = 0,
+ const QString &szBigIcon = QString::null,
+ int iSmallIconId = 0,
+ unsigned int uFlags = 0);
+ ~KviSubmenuAction();
+protected:
+ KviTalPopupMenu * m_pPopup;
+protected:
+ virtual void setup();
+public:
+ virtual bool addToPopupMenu(KviTalPopupMenu *p);
+ virtual QWidget * addToCustomToolBar(KviCustomToolBar *t);
+protected slots:
+ virtual void popupAboutToShow();
+ virtual void popupActivated(int id);
+};
+
+class KviJoinChannelAction : public KviSubmenuAction
+{
+ Q_OBJECT
+public:
+ KviJoinChannelAction(QObject * pParent);
+protected slots:
+ virtual void popupAboutToShow();
+ virtual void popupActivated(int);
+};
+
+class KviChangeNickAction : public KviSubmenuAction
+{
+ Q_OBJECT
+public:
+ KviChangeNickAction(QObject * pParent);
+protected slots:
+ void popupAboutToShow();
+ void popupActivated(int);
+};
+
+class KviConnectToServerAction : public KviSubmenuAction
+{
+ Q_OBJECT
+public:
+ KviConnectToServerAction(QObject * pParent);
+protected slots:
+ void popupAboutToShow();
+ void popupActivated(int);
+};
+
+class KviChangeUserModeAction : public KviSubmenuAction
+{
+ Q_OBJECT
+public:
+ KviChangeUserModeAction(QObject * pParent);
+protected slots:
+ void popupAboutToShow();
+ void popupActivated(int);
+};
+
+class KviIrcToolsAction : public KviSubmenuAction
+{
+ Q_OBJECT
+public:
+ KviIrcToolsAction(QObject * pParent);
+protected slots:
+ void popupAboutToShow();
+ void popupActivated(int);
+};
+
+
+class KviIrcOperationsAction : public KviSubmenuAction
+{
+ Q_OBJECT
+public:
+ KviIrcOperationsAction(QObject * pParent);
+protected slots:
+ void popupAboutToShow();
+ void popupActivated(int);
+};
+
+#include "kvi_irctoolbar.h"
+
+class KviIrcContextDisplayAction : public KviAction
+{
+ Q_OBJECT
+public:
+ KviIrcContextDisplayAction(QObject * pParent);
+public:
+ virtual bool addToPopupMenu(KviTalPopupMenu *p);
+ virtual QWidget * addToCustomToolBar(KviCustomToolBar *t);
+ virtual void activeContextStateChanged();
+ virtual void activeContextChanged();
+ virtual void setEnabled(bool);
+ virtual void setup();
+};
+
+
+class KviGoAwayAction : public KviKvsAction
+{
+ Q_OBJECT
+public:
+ KviGoAwayAction(QObject * pParent);
+protected:
+ QString m_szAwayString;
+ QString m_szBackString;
+public:
+ virtual bool addToPopupMenu(KviTalPopupMenu *p);
+ virtual QWidget * addToCustomToolBar(KviCustomToolBar *t);
+protected:
+ virtual void setup();
+ virtual void reloadImages();
+ virtual void activeContextChanged();
+ virtual void activeContextStateChanged();
+};
+
+#endif //!_KVI_COREACTIONS_H_
diff --git a/src/kvirc/kernel/kvi_customtoolbardescriptor.cpp b/src/kvirc/kernel/kvi_customtoolbardescriptor.cpp
new file mode 100644
index 00000000..d8c246b9
--- /dev/null
+++ b/src/kvirc/kernel/kvi_customtoolbardescriptor.cpp
@@ -0,0 +1,278 @@
+//=============================================================================
+//
+// File : kvi_customtoolbardescriptor.cpp
+// Created on Sun 05 Dec 2004 18:20:58 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_customtoolbardescriptor.h"
+#include "kvi_customtoolbar.h"
+#include "kvi_config.h"
+#include "kvi_action.h"
+#include "kvi_actionmanager.h"
+#include "kvi_app.h"
+#include "kvi_locale.h"
+#include "kvi_kvs_script.h"
+#include "kvi_window.h"
+
+KviCustomToolBarDescriptor::KviCustomToolBarDescriptor(const QString &szId,const QString &szLabelCode)
+{
+ m_iInternalId = g_pApp->getGloballyUniqueId();
+ m_szId = szId;
+ m_pActions = new KviPointerList<QString>;
+ m_pActions->setAutoDelete(true);
+ m_pToolBar = 0;
+ m_bVisibleAtStartup = false;
+ createLabelScript(szLabelCode);
+}
+
+KviCustomToolBarDescriptor::~KviCustomToolBarDescriptor()
+{
+ if(m_pToolBar)delete m_pToolBar; // first kill the toolbar (so eventually leave it sync the actions)
+ delete m_pActions; // THEN kill the actions
+ delete m_pLabelScript;
+}
+
+void KviCustomToolBarDescriptor::createLabelScript(const QString &szLabelCode)
+{
+ QString szTmp = "toolbar::";
+ szTmp += m_szId;
+ szTmp += "::label";
+ m_pLabelScript = new KviKvsScript(szTmp,szLabelCode,KviKvsScript::Parameter);
+}
+
+const QString & KviCustomToolBarDescriptor::label()
+{
+ if(!m_pLabelScript->run(g_pActiveWindow,0,m_szParsedLabel))m_szParsedLabel = m_pLabelScript->code();
+ return m_szParsedLabel;
+}
+
+const QString & KviCustomToolBarDescriptor::labelCode()
+{
+ return m_pLabelScript->code();
+}
+
+bool KviCustomToolBarDescriptor::addAction(const QString &szAction)
+{
+ KviAction *a = KviActionManager::instance()->getAction(szAction);
+ if(a)
+ {
+ m_pActions->append(new QString(szAction));
+ if(m_pToolBar)a->addToCustomToolBar(m_pToolBar);
+ return true;
+ }
+ return false;
+}
+
+bool KviCustomToolBarDescriptor::removeAction(unsigned int iAction)
+{
+ if(iAction >= m_pActions->count())return false;
+ if(!m_pActions->remove(iAction))return false;
+ if(m_pToolBar)
+ {
+ // need to refill it :/
+ m_pToolBar->clear();
+ fillToolBar();
+ }
+ return true;
+}
+
+bool KviCustomToolBarDescriptor::removeAction(const QString &szAction)
+{
+ for(QString *s = m_pActions->first();s;s = m_pActions->next())
+ {
+ if(*s == szAction)
+ {
+ m_pActions->removeRef(s);
+ if(m_pToolBar)
+ {
+ // need to refill it :/
+ m_pToolBar->clear();
+ fillToolBar();
+ }
+ return true;
+ }
+ }
+ return false;
+}
+
+void KviCustomToolBarDescriptor::updateToolBar()
+{
+ if(!m_pToolBar)return;
+ m_pToolBar->clear();
+ fillToolBar();
+}
+
+
+void KviCustomToolBarDescriptor::fillToolBar()
+{
+ if(m_pActions->count() == 0)
+ {
+ // force layout of the toolbar
+ QApplication::postEvent(m_pToolBar,new QEvent(QEvent::LayoutHint));
+ } else {
+ KviPointerList<QString> dying;
+ dying.setAutoDelete(false);
+ for(QString *p = m_pActions->first();p;p = m_pActions->next())
+ {
+ KviAction *a = KviActionManager::instance()->getAction(*p);
+ if(a)a->addToCustomToolBar(m_pToolBar);
+ else dying.append(p);
+ }
+ for(QString *d = dying.first();d;d = dying.next())
+ m_pActions->removeRef(d);
+ }
+}
+
+KviCustomToolBar * KviCustomToolBarDescriptor::createToolBar()
+{
+ if(!m_pToolBar)
+ {
+ m_pToolBar = new KviCustomToolBar(this,label(),QT_DOCK_TOP,false,id().utf8().data());
+ fillToolBar();
+ }
+ return m_pToolBar;
+}
+
+void KviCustomToolBarDescriptor::registerToolBar(KviCustomToolBar * t)
+{
+ m_pToolBar = t;
+}
+
+void KviCustomToolBarDescriptor::unregisterToolBar(KviCustomToolBar * t)
+{
+ m_pToolBar = 0;
+}
+
+void KviCustomToolBarDescriptor::rename(const QString &szNewLabelCode)
+{
+ delete m_pLabelScript;
+ createLabelScript(szNewLabelCode);
+ if(m_pToolBar)m_pToolBar->setLabel(label());
+}
+
+void KviCustomToolBarDescriptor::clear()
+{
+ m_pActions->clear();
+ if(m_pToolBar)
+ {
+ delete m_pToolBar;
+ m_pToolBar = 0;
+ }
+}
+
+#ifdef SCRIPTTOOLBARDESCRIPTOR_COMPAT
+// THIS IS A COMPATIBILITY ENTRY ADDED AT 3.0.2 TIME THAT SHOULD BE DROPPED IN A COUPLE OF VERSION BUMPS!
+#include "kvi_kvs_useraction.h"
+#include "kvi_string.h"
+
+bool KviCustomToolBarDescriptor::loadScripttoolbarCompat(const char * szPrefix,KviConfig * cfg)
+{
+ m_pActions->clear();
+ KviStr tmp;
+ tmp.sprintf("%s_Name",szPrefix);
+ m_szId = cfg->readQStringEntry(tmp.ptr(),"");
+ tmp.sprintf("%s_Label",szPrefix);
+ QString szLabelCode = cfg->readQStringEntry(tmp.ptr(),"");
+ if(szLabelCode.isEmpty())szLabelCode = "$tr(Unnamed)";
+ delete m_pLabelScript;
+ createLabelScript(szLabelCode);
+
+ tmp.sprintf("%s_Visible",szPrefix);
+ m_bVisibleAtStartup = (cfg->readIntEntry(tmp.ptr(),0) > 0);
+ tmp.sprintf("%s_Count",szPrefix);
+ unsigned int cnt = cfg->readUIntEntry(tmp.ptr(),0);
+ for(unsigned int i=0;i<cnt;i++)
+ {
+ tmp.sprintf("%s_%d",szPrefix,i);
+ KviStr tmp2;
+ tmp2.sprintf("%s_Type",tmp.ptr());
+ tmp2 = cfg->readEntry(tmp2.ptr(),"separator");
+ if(kvi_strEqualCI(tmp2.ptr(),"button"))
+ {
+ tmp2.sprintf("%s_Name",tmp.ptr());
+ QString szName = cfg->readQStringEntry(tmp2.ptr(),"");
+ tmp2.sprintf("%s_Code",tmp.ptr());
+ QString szCode = cfg->readQStringEntry(tmp2.ptr(),"");
+ tmp2.sprintf("%s_Icon",tmp.ptr());
+ QString szIcon = cfg->readQStringEntry(tmp2.ptr(),"");
+ tmp2.sprintf("%s_Text",tmp.ptr());
+ QString szText = cfg->readQStringEntry(tmp2.ptr(),"");
+ //tmp2.sprintf("%s_Enabled",tmp.ptr());
+ //bool bEnabled = cfg->readBoolEntry(tmp2.ptr(),true);
+
+ if(KviAction * old = KviActionManager::instance()->getAction(szName))
+ {
+ if(!old->isKviUserActionNeverOverrideThis())
+ szName = KviActionManager::instance()->nameForAutomaticAction(szName);
+ }
+ KviKvsUserAction * a = new KviKvsUserAction(KviActionManager::instance(),
+ szName,szCode,szText,
+ __tr2qs("Backward compatibility action for toolbar.define"),
+ "generic",szIcon,szIcon,0);
+ KviActionManager::instance()->registerAction(a);
+ m_pActions->append(new QString(szName));
+ } else {
+ m_pActions->append(new QString("separator"));
+ }
+ }
+ return true;
+}
+#endif
+
+bool KviCustomToolBarDescriptor::load(KviConfig * cfg)
+{
+ m_pActions->clear();
+ m_szId = cfg->group();
+ QString szLabelCode = cfg->readQStringEntry("Label");
+ if(szLabelCode.isEmpty())szLabelCode = "$tr(Unnamed)";
+ delete m_pLabelScript;
+ createLabelScript(szLabelCode);
+ m_szIconId = cfg->readQStringEntry("IconId","");
+ unsigned int n = cfg->readUIntEntry("Count",0);
+ QString tmp;
+ for(unsigned int i=0;i<n;i++)
+ {
+ tmp.setNum(i);
+ QString * p = new QString(cfg->readQStringEntry(tmp));
+ if(p->isEmpty())delete p;
+ else m_pActions->append(p);
+ }
+ return true;
+}
+
+void KviCustomToolBarDescriptor::save(KviConfig * cfg)
+{
+ cfg->setGroup(m_szId);
+ cfg->writeEntry("Label",m_pLabelScript->code());
+ cfg->writeEntry("Count",m_pActions->count());
+ if(!m_szIconId.isEmpty())cfg->writeEntry("IconId",m_szIconId);
+ int i = 0;
+ QString tmp;
+ for(QString * p = m_pActions->first();p;p = m_pActions->next())
+ {
+ tmp.setNum(i);
+ cfg->writeEntry(tmp,*p);
+ i++;
+ }
+}
+
diff --git a/src/kvirc/kernel/kvi_customtoolbardescriptor.h b/src/kvirc/kernel/kvi_customtoolbardescriptor.h
new file mode 100644
index 00000000..f900d63a
--- /dev/null
+++ b/src/kvirc/kernel/kvi_customtoolbardescriptor.h
@@ -0,0 +1,86 @@
+#ifndef _KVI_CUSTOMTOOLBARDESCRIPTOR_H_
+#define _KVI_CUSTOMTOOLBARDESCRIPTOR_H_
+//=============================================================================
+//
+// File : kvi_customtoolbardescriptor.h
+// Created on Sun 05 Dec 2004 18:20:58 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_pointerlist.h"
+
+class KviCustomToolBar;
+class KviConfig;
+class KviKvsScript;
+
+
+// THIS IS A COMPATIBILITY ENTRY ADDED AT 3.0.2 TIME THAT SHOULD BE DROPPED IN A COUPLE OF VERSION BUMPS!
+#define SCRIPTTOOLBARDESCRIPTOR_COMPAT 1
+
+class KVIRC_API KviCustomToolBarDescriptor
+{
+ friend class KviCustomToolBar;
+ friend class KviCustomToolBarManager;
+protected:
+ KviCustomToolBarDescriptor(const QString &szId,const QString &szLabelCode);
+public:
+ ~KviCustomToolBarDescriptor();
+protected:
+ QString m_szId;
+ QString m_szIconId;
+ QString m_szParsedLabel;
+ KviPointerList<QString> * m_pActions;
+ KviCustomToolBar * m_pToolBar;
+ int m_iInternalId;
+ bool m_bVisibleAtStartup;
+ KviKvsScript * m_pLabelScript;
+public:
+ const QString & iconId(){ return m_szIconId; };
+ const QString & label();
+ const QString & labelCode();
+ const QString & id(){ return m_szId; };
+ int internalId(){ return m_iInternalId; }; // useful only for KviFrame
+ KviCustomToolBar * toolBar(){ return m_pToolBar; };
+ KviCustomToolBar * createToolBar();
+ void setIconId(const QString &szIconId){ m_szIconId = szIconId; };
+ bool addAction(const QString &szAction);
+ bool removeAction(const QString &szAction);
+ bool removeAction(unsigned int iAction);
+ void clear();
+ void rename(const QString &szNewName);
+ KviPointerList<QString> * actions(){ return m_pActions; };
+ void updateToolBar();
+protected:
+ void createLabelScript(const QString &szNewLabelCode);
+ void fillToolBar();
+ bool load(KviConfig * cfg);
+#ifdef SCRIPTTOOLBARDESCRIPTOR_COMPAT
+// THIS IS A COMPATIBILITY ENTRY ADDED AT 3.0.2 TIME THAT SHOULD BE DROPPED IN A COUPLE OF VERSION BUMPS!
+ bool loadScripttoolbarCompat(const char * prefix,KviConfig * cfg);
+#endif
+ void save(KviConfig * cfg);
+ void registerToolBar(KviCustomToolBar * t);
+ void unregisterToolBar(KviCustomToolBar * t);
+};
+
+
+#endif //!_KVI_CUSTOMTOOLBARDESCRIPTOR_H_
diff --git a/src/kvirc/kernel/kvi_customtoolbarmanager.cpp b/src/kvirc/kernel/kvi_customtoolbarmanager.cpp
new file mode 100644
index 00000000..62ea6cac
--- /dev/null
+++ b/src/kvirc/kernel/kvi_customtoolbarmanager.cpp
@@ -0,0 +1,239 @@
+//=============================================================================
+//
+// File : kvi_customtoolbarmanager.cpp
+// Created on Sun 05 Dec 2004 18:20:18 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_customtoolbarmanager.h"
+#include "kvi_customtoolbardescriptor.h"
+#include "kvi_config.h"
+#include "kvi_locale.h"
+
+KviCustomToolBarManager * KviCustomToolBarManager::m_pInstance = 0;
+
+KviCustomToolBarManager::KviCustomToolBarManager()
+{
+ m_pDescriptors = new KviPointerHashTable<QString,KviCustomToolBarDescriptor>(17,false);
+ m_pDescriptors->setAutoDelete(true);
+}
+
+KviCustomToolBarManager::~KviCustomToolBarManager()
+{
+ delete m_pDescriptors;
+}
+
+KviCustomToolBar * KviCustomToolBarManager::firstExistingToolBar()
+{
+ KviPointerHashTableIterator<QString,KviCustomToolBarDescriptor> it(*m_pDescriptors);
+ while(KviCustomToolBarDescriptor * d = it.current())
+ {
+ if(d->toolBar())return d->toolBar();
+ ++it;
+ }
+ return 0;
+}
+
+void KviCustomToolBarManager::init()
+{
+ if(!m_pInstance)m_pInstance = new KviCustomToolBarManager();
+}
+
+void KviCustomToolBarManager::done()
+{
+ if(m_pInstance)
+ {
+ delete m_pInstance;
+ m_pInstance = 0;
+ }
+}
+
+QString KviCustomToolBarManager::idForNewToolBar(const QString &szTemplate)
+{
+ QString s;
+ QString szTT = szTemplate.lower();
+ szTT.remove(" ");
+ szTT.remove("$tr");
+ szTT.remove("(");
+ szTT.remove(")");
+ szTT.remove("\"");
+ int idx = 0;
+ for(;;)
+ {
+ s = szTT;
+ if(idx > 0)
+ {
+ QString tmp;
+ tmp.setNum(idx);
+ s += tmp;
+ }
+ if(!m_pDescriptors->find(s))return s;
+ idx++;
+ }
+ return s;
+}
+
+KviCustomToolBarDescriptor * KviCustomToolBarManager::findDescriptorByInternalId(int id)
+{
+ KviPointerHashTableIterator<QString,KviCustomToolBarDescriptor> it(*m_pDescriptors);
+ while(KviCustomToolBarDescriptor * d = it.current())
+ {
+ if(d->internalId() == id)return d;
+ ++it;
+ }
+ return 0;
+}
+
+bool KviCustomToolBarManager::renameDescriptor(const QString &szId,const QString &szNewId,const QString &szNewLabelCode)
+{
+ KviCustomToolBarDescriptor * d = m_pDescriptors->find(szId);
+ if(!d)return false;
+ d->rename(szNewLabelCode);
+ if(szId == szNewId)return true; // already done
+ m_pDescriptors->setAutoDelete(false);
+ m_pDescriptors->remove(szId);
+ m_pDescriptors->replace(szNewId,d);
+ m_pDescriptors->setAutoDelete(true);
+ return true;
+}
+
+bool KviCustomToolBarManager::destroyDescriptor(const QString &szId)
+{
+ KviCustomToolBarDescriptor * d = m_pDescriptors->find(szId);
+ if(!d)return false;
+ m_pDescriptors->remove(szId); // will delete it too!
+ return true;
+}
+
+void KviCustomToolBarManager::clear()
+{
+ m_pDescriptors->clear(); // bye!
+}
+
+KviCustomToolBarDescriptor * KviCustomToolBarManager::create(const QString &szId,const QString &szLabelCode)
+{
+ KviCustomToolBarDescriptor * d = m_pDescriptors->find(szId);
+ if(d)return d;
+ d = new KviCustomToolBarDescriptor(szId,szLabelCode);
+ m_pDescriptors->replace(szId,d);
+ return d;
+}
+
+void KviCustomToolBarManager::storeVisibilityState()
+{
+ KviPointerHashTableIterator<QString,KviCustomToolBarDescriptor> it(*m_pDescriptors);
+ while(KviCustomToolBarDescriptor * d = it.current())
+ {
+ d->m_bVisibleAtStartup = d->toolBar() != 0;
+ ++it;
+ }
+
+}
+
+int KviCustomToolBarManager::visibleToolBarCount()
+{
+ int cnt = 0;
+ KviPointerHashTableIterator<QString,KviCustomToolBarDescriptor> it(*m_pDescriptors);
+ while(KviCustomToolBarDescriptor * d = it.current())
+ {
+ if(d->toolBar() != 0)cnt++;
+ ++it;
+ }
+ return cnt;
+}
+
+void KviCustomToolBarManager::createToolBarsVisibleAtStartup()
+{
+ KviPointerHashTableIterator<QString,KviCustomToolBarDescriptor> it(*m_pDescriptors);
+ while(KviCustomToolBarDescriptor * d = it.current())
+ {
+ if(d->m_bVisibleAtStartup && (!d->toolBar()))
+ d->createToolBar();
+ ++it;
+ }
+}
+
+void KviCustomToolBarManager::updateVisibleToolBars()
+{
+ KviPointerHashTableIterator<QString,KviCustomToolBarDescriptor> it(*m_pDescriptors);
+ while(KviCustomToolBarDescriptor * d = it.current())
+ {
+ if(d->toolBar())d->updateToolBar();
+ ++it;
+ }
+}
+
+void KviCustomToolBarManager::load(const QString &szFileName)
+{
+ KviConfig cfg(szFileName,KviConfig::Read);
+
+ KviConfigIterator it(*(cfg.dict()));
+ while(it.current())
+ {
+ cfg.setGroup(it.currentKey());
+ KviCustomToolBarDescriptor * d = new KviCustomToolBarDescriptor(it.currentKey(),QString::null);
+ d->m_bVisibleAtStartup = (cfg.readIntEntry("Visible",0) > 0);
+ if(!d->load(&cfg))delete d;
+ else m_pDescriptors->replace(it.currentKey(),d);
+ ++it;
+ }
+}
+
+void KviCustomToolBarManager::save(const QString &szFileName)
+{
+ KviConfig cfg(szFileName,KviConfig::Write);
+ KviPointerHashTableIterator<QString,KviCustomToolBarDescriptor> it(*m_pDescriptors);
+ while(KviCustomToolBarDescriptor * d = it.current())
+ {
+ cfg.setGroup(d->id());
+ cfg.writeEntry("Visible",d->m_bVisibleAtStartup ? 1 : 0);
+ d->save(&cfg);
+ ++it;
+ }
+}
+
+
+// THIS IS A COMPATIBILITY ENTRY ADDED AT 3.0.2 TIME THAT SHOULD BE DROPPED IN A COUPLE OF VERSION BUMPS!
+#ifdef SCRIPTTOOLBAR_COMPAT
+
+#include <qdir.h>
+void KviCustomToolBarManager::loadScripttoolbarsCompat(const QString &szFileName)
+{
+ KviConfig cfg(szFileName,KviConfig::Read);
+
+ unsigned int cnt = cfg.readUIntEntry("Count",0);
+ KviStr tmp;
+
+ for(unsigned int i=0;i<cnt;i++)
+ {
+ tmp.sprintf("%d",i);
+ KviCustomToolBarDescriptor * d = new KviCustomToolBarDescriptor(QString::null,QString::null);
+ if(!d->loadScripttoolbarCompat(tmp.ptr(),&cfg))delete d;
+ else m_pDescriptors->replace(d->id(),d);
+ }
+
+ // get rid of the file now...
+ QString szNewFileName = szFileName + ".old";
+ QDir d;
+ d.rename(szFileName,szNewFileName);
+}
+#endif
diff --git a/src/kvirc/kernel/kvi_customtoolbarmanager.h b/src/kvirc/kernel/kvi_customtoolbarmanager.h
new file mode 100644
index 00000000..eec1921b
--- /dev/null
+++ b/src/kvirc/kernel/kvi_customtoolbarmanager.h
@@ -0,0 +1,76 @@
+#ifndef _KVI_CUSTOMTOOLBARMANAGER_H_
+#define _KVI_CUSTOMTOOLBARMANAGER_H_
+//=============================================================================
+//
+// File : kvi_customtoolbarmanager.h
+// Created on Sun 05 Dec 2004 18:20:18 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_pointerhashtable.h"
+
+#ifdef COMPILE_ON_WINDOWS
+ #include "kvi_customtoolbardescriptor.h"
+#else
+ class KviCustomToolBarDescriptor;
+#endif
+
+class KviCustomToolBar;
+
+// THIS IS A COMPATIBILITY ENTRY ADDED AT 3.0.2 TIME THAT SHOULD BE DROPPED IN A COUPLE OF VERSION BUMPS!
+#define SCRIPTTOOLBAR_COMPAT 1
+
+class KVIRC_API KviCustomToolBarManager
+{
+protected:
+ KviCustomToolBarManager();
+ ~KviCustomToolBarManager();
+protected:
+ static KviCustomToolBarManager * m_pInstance;
+ KviPointerHashTable<QString,KviCustomToolBarDescriptor> * m_pDescriptors;
+public:
+ static KviCustomToolBarManager * instance(){ return m_pInstance; };
+ static void init();
+ static void done();
+ void clear();
+ int descriptorCount(){ return m_pDescriptors->count(); };
+ int visibleToolBarCount();
+ QString idForNewToolBar(const QString &szTemplate);
+ KviPointerHashTable<QString,KviCustomToolBarDescriptor> * descriptors(){ return m_pDescriptors; };
+ KviCustomToolBar * firstExistingToolBar();
+ KviCustomToolBarDescriptor * create(const QString &szId,const QString &szLabelCode);
+ KviCustomToolBarDescriptor * find(const QString &szId){ return m_pDescriptors->find(szId); };
+ KviCustomToolBarDescriptor * findDescriptorByInternalId(int id);
+ void updateVisibleToolBars();
+ void createToolBarsVisibleAtStartup();
+ void storeVisibilityState();
+ bool renameDescriptor(const QString &szId,const QString &szNewId,const QString &szNewLabelCode);
+ bool destroyDescriptor(const QString &szId);
+ void load(const QString &szFileName);
+ // THIS IS A COMPATIBILITY ENTRY ADDED AT 3.0.2 TIME THAT SHOULD BE DROPPED IN A COUPLE OF VERSION BUMPS!
+#ifdef SCRIPTTOOLBAR_COMPAT
+ void loadScripttoolbarsCompat(const QString &szFileName);
+#endif
+ void save(const QString &szFileName);
+};
+
+
+#endif //!_KVI_CUSTOMTOOLBARMANAGER_H_
diff --git a/src/kvirc/kernel/kvi_filetransfer.cpp b/src/kvirc/kernel/kvi_filetransfer.cpp
new file mode 100644
index 00000000..507c96f2
--- /dev/null
+++ b/src/kvirc/kernel/kvi_filetransfer.cpp
@@ -0,0 +1,190 @@
+//=============================================================================
+//
+// File : kvi_filetransfer.cpp
+// Creation date : Mon Apr 21 22:14:31 2003 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+#define __KVIRC__
+#include "kvi_filetransfer.h"
+#include "kvi_moduleextension.h"
+#include "kvi_window.h"
+
+#include "kvi_app.h"
+
+#include "kvi_tal_listview.h"
+#include "kvi_tal_popupmenu.h"
+
+static KviFileTransferManager * g_pFileTransferManager = 0;
+
+
+KviFileTransferManager::KviFileTransferManager()
+: QObject()
+{
+ m_pTransferList = 0;
+ m_pTransferWindow = 0;
+}
+
+KviFileTransferManager::~KviFileTransferManager()
+{
+ killAllTransfers();
+}
+
+KviFileTransferManager * KviFileTransferManager::instance()
+{
+ if(!g_pFileTransferManager)g_pFileTransferManager = new KviFileTransferManager();
+ return g_pFileTransferManager;
+}
+
+void KviFileTransferManager::cleanup()
+{
+ if(!g_pFileTransferManager)return;
+ delete g_pFileTransferManager;
+ g_pFileTransferManager = 0;
+}
+
+void KviFileTransferManager::killAllTransfers()
+{
+ while(m_pTransferList)
+ {
+ KviFileTransfer * t = m_pTransferList->first();
+ t->die();
+ }
+}
+
+void KviFileTransferManager::killTerminatedTransfers()
+{
+ if(!m_pTransferList)return;
+
+ KviPointerList<KviFileTransfer> l;
+ l.setAutoDelete(false);
+
+ for(KviFileTransfer * f = m_pTransferList->first();f;f = m_pTransferList->next())
+ {
+ if(f->terminated())l.append(f);
+ }
+
+ for(KviFileTransfer * d = l.first();d;d = l.next())
+ d->die();
+}
+
+void KviFileTransferManager::invokeTransferWindow(KviWindow * pWnd,bool bCreateMinimized,bool bNoRaise)
+{
+ if(!m_pTransferWindow)
+ {
+ KviPointerHashTable<QString,QVariant> d(7,false);
+ d.setAutoDelete(true);
+ d.replace("bCreateMinimized",new QVariant(bCreateMinimized,0));
+ d.replace("bNoRaise",new QVariant(bNoRaise,0));
+
+ KviModuleExtensionManager::instance()->allocateExtension(
+ "tool",
+ KVI_FILE_TRANSFER_WINDOW_EXTENSION_NAME,
+ pWnd,&d,0,
+ "filetransferwindow");
+ }
+}
+
+void KviFileTransferManager::registerTransfer(KviFileTransfer * t)
+{
+ if(!m_pTransferList)
+ {
+ m_pTransferList = new KviPointerList<KviFileTransfer>;
+ m_pTransferList->setAutoDelete(false);
+ }
+
+ m_pTransferList->append(t);
+
+ emit transferRegistered(t);
+}
+
+void KviFileTransferManager::unregisterTransfer(KviFileTransfer * t)
+{
+ if(!m_pTransferList)
+ {
+ debug("Ops: unregistering transfer with no transfer list!");
+ return;
+ }
+
+ emit transferUnregistering(t);
+
+ m_pTransferList->removeRef(t);
+ if(m_pTransferList->isEmpty())
+ {
+ delete m_pTransferList;
+ m_pTransferList = 0;
+ }
+}
+
+
+
+KviFileTransfer::KviFileTransfer()
+: QObject()
+{
+ m_pDisplayItem = 0;
+ m_iId = g_pApp->getGloballyUniqueId();
+ manager()->registerTransfer(this);
+}
+
+KviFileTransfer::~KviFileTransfer()
+{
+ manager()->unregisterTransfer(this);
+}
+
+KviWindow * KviFileTransfer::outputWindow()
+{
+ KviWindow * o = transferWindow();
+ if(o)return o;
+ return g_pActiveWindow;
+}
+
+void KviFileTransfer::invokeTransferWindow(KviWindow * pWnd,bool bCreateMinimized,bool bNoRaise)
+{
+ manager()->invokeTransferWindow(pWnd,bCreateMinimized,bNoRaise);
+}
+
+QString KviFileTransfer::localFileName()
+{
+ return QString::null;
+}
+
+QString KviFileTransfer::retryCommand()
+{
+ return QString::null;
+}
+
+bool KviFileTransfer::terminated()
+{
+ return !active();
+}
+
+QString KviFileTransfer::tipText()
+{
+ return QString::null;
+}
+
+int KviFileTransfer::displayHeight(int iLineSpacing)
+{
+ return iLineSpacing * 2;
+}
+
+void KviFileTransfer::displayUpdate()
+{
+ if(m_pDisplayItem)m_pDisplayItem->repaint();
+}
diff --git a/src/kvirc/kernel/kvi_filetransfer.h b/src/kvirc/kernel/kvi_filetransfer.h
new file mode 100644
index 00000000..e6071ff1
--- /dev/null
+++ b/src/kvirc/kernel/kvi_filetransfer.h
@@ -0,0 +1,116 @@
+#ifndef _KVI_FILETRANSFER_H_
+#define _KVI_FILETRANSFER_H_
+
+//=============================================================================
+//
+// File : kvi_filetransfer.h
+// Creation date : Mon Apr 21 22:14:31 2003 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include <qobject.h>
+
+#include "kvi_pointerlist.h"
+#include "kvi_tal_listview.h"
+
+class KviFileTransfer;
+class KviWindow;
+class KviTalPopupMenu;
+class QPainter;
+
+// This is for the external extension
+#define KVI_FILE_TRANSFER_WINDOW_EXTENSION_NAME "File transfer extension"
+
+
+class KVIRC_API KviFileTransferManager : public QObject
+{
+ friend class KviApp;
+ friend class KviFileTransfer;
+ friend class KviFileTransferWindow;
+ Q_OBJECT
+public:
+ KviFileTransferManager();
+ ~KviFileTransferManager();
+protected:
+ KviPointerList<KviFileTransfer> * m_pTransferList;
+ KviWindow * m_pTransferWindow;
+protected:
+ static void cleanup();
+ void registerTransfer(KviFileTransfer * t);
+ void unregisterTransfer(KviFileTransfer * t);
+ void setTransferWindow(KviWindow * wnd){ m_pTransferWindow = wnd; };
+public:
+ // might be zero!
+ KviWindow * transferWindow(){ return m_pTransferWindow; };
+ static KviFileTransferManager * instance();
+ KviPointerList<KviFileTransfer> * transferList(){ return m_pTransferList; };
+ void invokeTransferWindow(KviWindow * pWnd = 0,bool bCreateMinimized = false,bool bNoRaise = false);
+ void killAllTransfers();
+ void killTerminatedTransfers();
+signals:
+ void transferRegistered(KviFileTransfer *t);
+ void transferUnregistering(KviFileTransfer *t);
+};
+
+#define COLUMN_TRANSFERTYPE 0
+#define COLUMN_FILEINFO 1
+#define COLUMN_PROGRESS 2
+
+
+class KVIRC_API KviFileTransfer : public QObject
+{
+ Q_OBJECT
+public:
+ KviFileTransfer();
+ ~KviFileTransfer();
+protected:
+ int m_iId;
+ KviTalListViewItem * m_pDisplayItem;
+public:
+ // This is called by KviFileTransferItem at any time
+ void setDisplayItem(KviTalListViewItem * i){ m_pDisplayItem = i; };
+ int id(){ return m_iId; };
+ // this is just a convenience function : it's equivalent to !active()
+ bool terminated();
+ // This may be used to invoke the transfer window
+ void invokeTransferWindow(KviWindow * pWnd = 0,bool bCreateMinimized = false,bool bNoRaise = false);
+ KviFileTransferManager * manager(){ return KviFileTransferManager::instance(); };
+ // this returns the pointer to the transfer window : may be 0!
+ KviWindow * transferWindow(){ return manager()->transferWindow(); };
+ // this returns transferWindow() if not 0 , otherwise the application's active window
+ KviWindow * outputWindow();
+
+ // this may be called by the transfers to update the display when the state changes
+ void displayUpdate();
+
+ // this must be implemented by the transfer
+ virtual bool active() = 0;
+ virtual void displayPaint(QPainter * p,int column,int width,int height) = 0;
+ virtual QString tipText();
+ virtual QString localFileName();
+ virtual QString retryCommand();
+ virtual int displayHeight(int iLineSpacing);
+ virtual void fillContextPopup(KviTalPopupMenu * m,int column) = 0;
+ virtual void die() = 0;
+};
+
+#endif //! _KVI_FILETRANSFER_H_
diff --git a/src/kvirc/kernel/kvi_iconmanager.cpp b/src/kvirc/kernel/kvi_iconmanager.cpp
new file mode 100644
index 00000000..1876b115
--- /dev/null
+++ b/src/kvirc/kernel/kvi_iconmanager.cpp
@@ -0,0 +1,924 @@
+//================================================================================
+//
+// File : kvi_iconmanager.cpp
+// Creation date : Sat Jun 24 2000 14:50:11 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//================================================================================
+
+#define __KVIRC__
+
+#define _KVI_ICONMANAGER_CPP_
+
+#include "kvi_iconmanager.h"
+
+#include "kvi_imagelib.h"
+#include "kvi_app.h"
+#include "kvi_settings.h"
+#include "kvi_defaults.h"
+#include "kvi_locale.h"
+#include "kvi_fileutils.h"
+#include "kvi_options.h"
+
+#include <qlayout.h>
+#include <qlabel.h>
+
+#ifndef COMPILE_USE_QT4
+ // In Qt.4 we need to use QMimeData ?
+ #include <qdragobject.h>
+#endif
+#include <qcursor.h>
+
+#ifdef COMPILE_USE_QT4
+ #include <qevent.h>
+#endif
+
+// kvi_app.cpp
+extern QPixmap * g_pUserChanStatePixmap;
+extern QPixmap * g_pActivityMeterPixmap;
+
+KviIconManager * g_pIconManager = 0;
+
+static const char * g_szIconNames[KVI_NUM_SMALL_ICONS]=
+{
+ "none", // 0
+ "close", // 1
+ "maximize", // 2
+ "minimize", // 3
+ "restore", // 4
+ "default", // 5
+ "dock", // 6
+ "undock", // 7
+ "quitapp", // 8
+ "console", // 9
+ "floppy", // 10
+ "parsererror", // 11
+ "parserwarning", // 12
+ "server", // 13
+ "world", // 14
+ "proxy", // 15
+ "kvirc", // 16
+ "cut", // 17
+ "copy", // 18
+ "paste", // 19
+ "options", // 20
+ "socketmessage", // 21
+ "socketwarning", // 22
+ "socketerror", // 23
+ "systemerror", // 24
+ "raw", // 25
+ "systemwarning", // 26
+ "systemmessage", // 27
+ "unhandled", // 28
+ "serverinfo", // 29
+ "motd", // 30
+ "channel", // 31
+ "hidedoubleview", // 32
+ "showdoubleview", // 33
+ "op", // 34
+ "voice", // 35
+ "serverping", // 36
+ "showlistview", // 37
+ "hidelistview", // 38
+ "join", // 39
+ "part", // 40
+ "unrecognized", // 41
+ "topic", // 42
+ "accept", // 43
+ "discard", // 44
+ "ownprivmsg", // 45
+ "chanprivmsg", // 46
+ "query", // 48
+ "queryprivmsg", // 49
+ "help", // 49
+ "mdihelp", // 50
+ "ctcpreply", // 51
+ "ctcprequestreplied", // 52
+ "ctcprequestignored", // 53
+ "ctcprequestflood", // 54
+ "ctcprequestunknown", // 55
+ "action", // 56
+ "avatar", // 57
+ "quit", // 58
+ "split", // 59
+ "quitsplit", // 60
+ "nick", // 61
+ "deop", // 62
+ "devoice", // 63
+ "mode", // 64
+ "key", // 65
+ "limit", // 66
+ "ban", // 67
+ "unban", // 68
+ "banexcept", // 69
+ "banunexcept", // 70
+ "inviteexcept", // 71
+ "inviteunexcept", // 72
+ "chanmode", // 73
+ "chanmodehide", // 74
+ "who", // 75
+ "editor", // 76
+ "dccrequest", // 77
+ "dccmsg", // 78
+ "dccerror", // 79
+ "iconmanager", // 80
+ "scriptcenter", // 81
+ "bomb", // 82
+ "event", // 83
+ "eventnohandlers", // 84
+ "handler", // 85
+ "handlerdisabled", // 86
+ "nicknameproblem", // 87
+ "whoisuser", // 88
+ "whoischannels", // 89
+ "whoisidle", // 90
+ "whoisserver", // 91
+ "whoisother", // 92
+ "time", // 93
+ "notifyonline", // 94
+ "notifyoffline", // 95
+ "locked", // 96
+ "unlocked", // 97
+ "lockedoff", // 98
+ "unlockedoff", // 99
+ "ownprivmsgcrypted", // 100
+ "chanprivmsgcrypted", // 101
+ "queryprivmsgcrypted", // 102
+ "dccchatmsg", // 103
+ "dccchatmsgcrypted", // 104
+ "irc", // 105
+ "folder", // 106
+ "home", // 107
+ "bookmarks", // 108
+ "spy", // 109
+ "kick", // 110
+ "linux", // 111
+ "links", // 112
+ "regusers", // 113
+ "dockwidget", // 114
+ "cascadewindows", // 115
+ "maxvertical", // 116
+ "maxhorizontal", // 117
+ "tilewindows", // 118
+ "log", // 119
+ "spam", // 120
+ "file", // 121
+ "icq", // 122
+ "icqyellow", // 123
+ "icqred", // 124
+ "icqblue", // 125
+ "icqlightgreen", // 126
+ "icqlightyellow", // 127
+ "message", // 128
+ "messagesent", // 129
+ "bluesquare", // 130
+ "violetsquare", // 131
+ "yellowsquare", // 132
+ "greensquare", // 133
+ "blacksquare", // 134
+ "redsquare", // 135
+ "cyansquare", // 136
+ "dkgreensquare", // 137
+ "terminal", // 138
+ "wallops", // 139
+ "invisible", // 140
+ "servernotice", // 141
+ "gnutella", // 142
+ "search", // 143
+ "files", // 144
+ "transfer", // 145
+ "package", // 146
+ "retry", // 147
+ "idea", // 148
+ "colors", // 149
+ "gui", // 150
+ "ircview", // 151
+ "alias", // 152
+ "channelnotice",// 153
+ "channelnoticecrypted", // 154
+ "querynotice", // 155
+ "querynoticecrypted", // 156
+ "servnotice", // 157
+ "popup", // 158
+ "prologue", // 159
+ "epilogue", // 160
+ "sharedfiles", // 161
+ "ctcpreplyunknown", // 162
+ "canvas", // 163
+ "nickserv", // 164
+ "chanserv", // 165
+ "dccvoice", // 166
+ "play", // 167
+ "record", // 168
+ "autotilewindows", // 169
+ "away", // 170
+ "ident", // 171
+ "homepage", // 172
+ "list", // 173
+ "halfop", // 174
+ "halfdeop", // 175
+ "invite", // 176
+ "multimedia", // 177
+ "look", // 178
+ "input", // 179
+ "messages", // 180
+ "querytrace", // 181
+ "nochannel", // 182
+ "broadcastprivmsg", // 183
+ "broadcastnotice", // 184
+ "url", // 185
+ "rawevent", // 186
+ "raweventnohandlers", // 187
+ "mekick", // 188
+ "meop", // 189
+ "mevoice", // 190
+ "medeop", // 191
+ "medevoice", // 192
+ "mehalfop", // 193
+ "medehalfop", // 194
+ "meban", // 195
+ "meunban", // 196
+ "mebanexcept", // 197
+ "mebanunexcept", // 198
+ "meinviteexcept", // 199
+ "meinviteunexcept", // 200
+ "classictaskbar", // 201
+ "treetaskbar", // 202
+ "ignore", // 203
+ "userlist",// 204
+ "stats", // 205
+ "popupmenu", // 206
+ "xy", // 207
+ "irc0", // 208
+ "irc1", // 209
+ "irc2", // 210
+ "irc3", // 211
+ "irc4", // 212
+ "irc5", // 213
+ "heart", // 214
+ "heartbroken", // 215
+ "rose", // 215
+ "biggrin", // 217
+ "biggringlasses", // 218
+ "biggrineyes", // 219
+ "textexclamative", // 220
+ "textpoints", // 221
+ "kiss", // 222
+ "surprised1", // 223
+ "ugly", // 224
+ "angry", // 225
+ "surprised2", // 226
+ "smile", // 227
+ "tongue", // 228
+ "ssl", // 229
+ "cry", // 230
+ "eye", // 231
+ "deadchannel", // 232
+ "deadquery", // 233
+ "sound", // 234
+ "toolbar", // 235
+ "textencoding",// 236
+ "newitem", // 237
+ "newitembywizard", // 238
+ "deleteitem", // 239
+ "edititem", // 240
+ "filetransfer", // 241
+ "chanadmin", // 242
+ "chanunadmin", // 243
+ "mechanadmin", // 244
+ "mechanunadmin", // 245
+ "userop", // 246
+ "deuserop", // 247
+ "meuserop", // 248
+ "medeuserop", // 249
+ "applet", // 250
+ "caption", // 251
+ "transparent", // 252
+ "alert", // 253
+ "userwindow", // 254
+ "statusbar", // 255
+ "notaway", // 256
+ "plus", // 257
+ "minus", // 258
+ "binarytext", // 259
+ "chanowner", // 260
+ "chanunowner", // 261
+ "mechanowner", // 262
+ "mechanunowner", // 263
+ "afraid", // 264
+ "tongue2", // 265
+ "sayicon", // 266
+ "saycolors", // 267
+ "finger", // 268
+ "scriptaction", // 269
+ "tearsmile", // 270
+ "shy", // 271
+ "servererror", // 272
+ "cafe", // 273
+ "addons", // 274
+ "chanowneraway", // 275
+ "opaway", // 276
+ "voiceaway", // 277
+ "chanadminaway", // 278
+ "useropaway", // 279
+ "halfopaway", // 280
+ "aliashighlighted", // 281
+ "demoralized", // 282
+ "slurp", // 283
+ "namespace", // 284
+ "saysmile", // 285
+ "saykvs", // 286
+ "themeoptions", // 287
+ "bug", // 288
+ "refresh", //289
+ "theme", // 290
+ "screenshot" // 291
+};
+
+KviIconWidget::KviIconWidget()
+#ifdef COMPILE_USE_QT4
+: QWidget(0,"global_icon_widget" /*,WType_TopLevel | WStyle_Customize | WStyle_Title | WStyle_StaysOnTop | WStyle_DialogBorder | WStyle_SysMenu | WStyle_Minimize*/)
+#else
+: QWidget(0,"global_icon_widget",WType_TopLevel | WStyle_Customize | WStyle_Title | WStyle_StaysOnTop | WStyle_DialogBorder | WStyle_SysMenu | WStyle_Minimize)
+#endif
+{
+ init();
+}
+
+KviIconWidget::KviIconWidget(QWidget * par)
+: QWidget(par,"global_icon_widget")
+{
+ init();
+}
+
+void KviIconWidget::init()
+{
+ setCaption(__tr2qs("Icon Table"));
+ setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ICONMANAGER)));
+
+ int rows = KVI_NUM_SMALL_ICONS / 10;
+ if((rows * 10) < KVI_NUM_SMALL_ICONS)rows++;
+ QGridLayout * g = new QGridLayout(this,rows + 1,11,0,2);
+ int i;
+ for(i = 0;i < 10;i++)
+ {
+ KviStr tmp(KviStr::Format,"%d",i);
+ QLabel * l = new QLabel(tmp.ptr(),this);
+ g->addWidget(l,0,i + 1);
+ }
+ for(i = 0;i < rows;i++)
+ {
+ KviStr tmp(KviStr::Format,"%d",i * 10);
+ QLabel * l = new QLabel(tmp.ptr(),this);
+ g->addWidget(l,i + 1,0);
+ }
+ for(i = 0;i < KVI_NUM_SMALL_ICONS;i++)
+ {
+ KviStr tmp(KviStr::Format,"%d",i);
+ QLabel * l = new QLabel(this,tmp.ptr());
+ l->setPixmap(*(g_pIconManager->getSmallIcon(i)));
+ g->addWidget(l,(i / 10) + 1,(i % 10) + 1);
+ l->installEventFilter(this);
+ l->setAcceptDrops(true);
+ }
+}
+
+KviIconWidget::~KviIconWidget()
+{
+}
+
+void KviIconWidget::closeEvent(QCloseEvent * e)
+{
+ e->ignore();
+ emit closed();
+}
+
+bool KviIconWidget::eventFilter(QObject * o,QEvent *e)
+{
+ if(e->type() == QEvent::MouseButtonPress)
+ {
+ if(o->inherits("QLabel"))
+ {
+ KviStr szName = ((QLabel *)o)->name();
+ bool bOk;
+ int iVal = szName.toInt(&bOk);
+ if(bOk)emit selected(iVal);
+
+ if(parentWidget() && isVisible() && parentWidget()->inherits("KviTalPopupMenu"))
+ {
+ parentWidget()->close();
+ return true;
+ } else {
+ if(const QPixmap * pix = ((QLabel *)o)->pixmap())
+ {
+// FIXME: In Qt 4.x this stuff needs to be ported to a different api.. which one ?
+#ifndef COMPILE_USE_QT4
+ QDragObject * drobj = new QTextDrag(o->name(),this);
+ drobj->setPixmap(*pix,((QLabel *)o)->mapFromGlobal(QCursor::pos()));
+ drobj->dragCopy();
+#endif
+ return true;
+ }
+ }
+ }
+ } else if(e->type() == QEvent::DragEnter)
+ {
+ ((QDragEnterEvent *)e)->accept(true);
+ return true;
+ }
+ return QWidget::eventFilter(o,e);
+}
+
+
+
+KviCachedPixmap::KviCachedPixmap(QPixmap * ptr,const QString &szPath)
+{
+ m_szPath = szPath;
+ m_tLastAccess = kvi_unixTime();
+ m_pPixmap = ptr;
+ m_uSize = m_pPixmap->width() * m_pPixmap->height() * (m_pPixmap->depth() / 8);
+}
+
+KviCachedPixmap::~KviCachedPixmap()
+{
+ delete m_pPixmap;
+}
+
+void KviCachedPixmap::updateLastAccessTime()
+{
+ m_tLastAccess = kvi_unixTime();
+}
+
+
+
+
+KviIconManager::KviIconManager()
+{
+ int i=0;
+ for(i=0;i<KVI_NUM_SMALL_ICONS;i++)m_smallIcons[i] = 0;
+
+ //loadSmallIcons();
+
+ m_pCachedImages = new KviPointerHashTable<QString,KviCachedPixmap>(21,true);
+ m_pCachedImages->setAutoDelete(true);
+
+ m_uCacheTotalSize = 0;
+ m_uCacheMaxSize = 1024 * 1024; // 1 MB
+
+ m_pIconWidget = 0;
+
+ KviStr buffer;
+
+ // Load the userchanstate image
+ g_pApp->findImage(buffer,KVI_USERCHANSTATE_IMAGE_NAME);
+ g_pUserChanStatePixmap = new QPixmap(buffer.ptr());
+
+ g_pApp->findImage(buffer,KVI_ACTIVITYMETER_IMAGE_NAME);
+ g_pActivityMeterPixmap = new QPixmap(buffer.ptr());
+
+ m_pIconNames = 0;
+
+ // TEMP
+
+ /*
+ for(i=0;i<KVI_NUM_SMALL_ICONS;i++)
+ {
+ QPixmap * tmp = getSmallIcon(i);
+ QString nnn = "/home/pragma/kvismallicons/kcs_";
+ nnn += g_szIconNames[i];
+ nnn += ".png";
+ if(tmp->isNull())
+ {
+ debug("OPS, %s is NULL",nnn.latin1());
+ }
+ if(!tmp->save(nnn,"PNG",90))
+ {
+ debug("FAILED TO SAVE %s",nnn.latin1());
+ }
+ }
+ */
+}
+
+KviIconManager::~KviIconManager()
+{
+ delete g_pUserChanStatePixmap;
+ delete g_pActivityMeterPixmap;
+
+ if(m_pIconWidget)delete m_pIconWidget;
+ int i;
+
+ for(i=0;i<KVI_NUM_SMALL_ICONS;i++)
+ {
+ if(m_smallIcons[i])delete m_smallIcons[i];
+ }
+ delete m_pCachedImages;
+ if(m_pIconNames)delete m_pIconNames;
+}
+
+const char * KviIconManager::getSmallIconName(int idx)
+{
+ return g_szIconNames[idx];
+}
+
+int KviIconManager::getSmallIconIdFromName(const QString &szName)
+{
+ if(!m_pIconNames)
+ {
+ m_pIconNames = new KviPointerHashTable<QString,int>(257,false);
+ m_pIconNames->setAutoDelete(true);
+
+ for(int i=0;i<KVI_NUM_SMALL_ICONS;i++)
+ {
+ int * pInt = new int;
+ *pInt = i;
+ m_pIconNames->replace(QString(g_szIconNames[i]),pInt);
+ }
+ }
+ int * pInt = m_pIconNames->find(szName);
+ if(!pInt)return 0;
+ return *pInt;
+}
+
+
+void KviIconManager::showIconWidget()
+{
+ if(!m_pIconWidget)
+ {
+ m_pIconWidget = new KviIconWidget();
+ connect(m_pIconWidget,SIGNAL(closed()),this,SLOT(iconWidgetClosed()));
+ }
+ m_pIconWidget->show();
+ m_pIconWidget->raise();
+ m_pIconWidget->setFocus();
+}
+
+void KviIconManager::iconWidgetClosed()
+{
+ delete m_pIconWidget;
+ m_pIconWidget = 0;
+}
+
+/*
+ @doc: image_id
+ @title:
+ The image identifier
+ @keyterms:
+ image identifier, using builtin images, how kvirc locates image files
+ @type:
+ language
+ @short:
+ Semantics of the <image_id> parameter
+ @body:
+ Some KVIrc commands and functions accept
+ the <image_id> as a parameter.
+ The <image_id> indicates an image to be displayed
+ by some gui element. Since KVIrc has a set of
+ builtin icons, we want the user to be able to use it :).[br]
+ The <image_id> can be either a signed integer number
+ or a filename.[br]
+ If it is a signed integer it is interpreted as
+ index of the internal KVIrc image to use:
+ positive integers (starting at 0) indicate
+ small (16x16) icons (the ones used in the view widget).[br]
+ If <image_id> is anything else than a signed integer,
+ it is interpreted as a filename.
+ The filename can be an absolute file path or a relative one.
+ In this last case KVIrc will look for the file in a predefined set
+ of directories: First in the local "pics" directory (usually
+ in ~/kvirc-version/pics/), then in the local "incoming" directory,
+ then in the global "pics" directory , then in the user home (~)
+ and in the current directory.[br]
+*/
+
+KviCachedPixmap * KviIconManager::getPixmapWithCache(const QString &szName)
+{
+ if(szName.isEmpty())return 0;
+
+ KviCachedPixmap * p = m_pCachedImages->find(szName);
+
+ if(p)
+ {
+ p->updateLastAccessTime();
+ return p;
+ }
+
+ QPixmap * pix = 0;
+
+ QString szRetPath;
+
+ if(g_pApp->findImage(szRetPath,szName))
+ {
+ pix = new QPixmap(szRetPath);
+ if(pix->isNull())
+ {
+ delete pix; // it is not an valid image!!! (really bad situation...)
+ pix = 0;
+ return 0;
+ }
+ } else {
+ return 0;
+ }
+
+ p = new KviCachedPixmap(pix,QString(szRetPath));
+ addToCache(szName,p);
+
+ return p;
+}
+
+KviCachedPixmap * KviIconManager::getPixmapWithCacheScaleOnLoad(const QString &szName,int iMaxWidth,int iMaxHeight)
+{
+ if(szName.isEmpty())return 0;
+
+ KviCachedPixmap * p = m_pCachedImages->find(szName);
+
+ if(p)
+ {
+ p->updateLastAccessTime();
+ return p;
+ }
+
+ QPixmap * pix = 0;
+
+ QString szRetPath;
+
+ if(g_pApp->findImage(szRetPath,szName))
+ {
+ pix = new QPixmap(szRetPath);
+ if(pix->isNull())
+ {
+ delete pix; // it is not an valid image!!! (really bad situation...)
+ pix = 0;
+ return 0;
+ }
+ if((pix->width() > iMaxWidth) || (pix->height() > iMaxHeight))
+ {
+ // scale to fit
+ int scaleW = iMaxWidth;
+ int scaleH;
+ scaleH = (pix->height() * iMaxWidth) / pix->width();
+ if(scaleH > iMaxHeight)
+ {
+ scaleH = iMaxHeight;
+ scaleW = (scaleH * pix->width()) / pix->height();
+ }
+
+ QImage img = pix->convertToImage();
+ pix->convertFromImage(img.smoothScale(scaleW,scaleH));
+ }
+ } else {
+ return 0;
+ }
+
+ p = new KviCachedPixmap(pix,QString(szRetPath));
+ addToCache(szName,p);
+
+ return p;
+}
+
+
+void KviIconManager::addToCache(const QString &szName,KviCachedPixmap * p)
+{
+ if((m_uCacheTotalSize + p->size()) >= m_uCacheMaxSize)cacheCleanup();
+
+ m_pCachedImages->insert(szName,p);
+ m_uCacheTotalSize += p->size();
+}
+
+QPixmap * KviIconManager::getImage(const char * id,bool bCanBeNumber,QString* pRetPath)
+{
+ if(!id)return 0;
+ if(bCanBeNumber)
+ {
+ bool bOk;
+ QString tmp = id;
+ int idx = tmp.toInt(&bOk);
+ if(bOk)
+ {
+ // was a number : this is not a filename
+ if(idx >= 0)return getSmallIcon(idx % KVI_NUM_SMALL_ICONS);
+ }
+ }
+
+ KviCachedPixmap * p = getPixmapWithCache(id);
+ if(!p)return 0;
+ if(pRetPath)*pRetPath = p->path();
+ return p->pixmap();
+}
+
+
+
+QPixmap * KviIconManager::getBigIcon(const QString &szName)
+{
+ QPixmap * p = getPixmap(szName);
+ if(p)return p;
+
+ bool bOk;
+ int idx = szName.toInt(&bOk);
+ if(bOk && (idx >= 0))
+ {
+ // was a number : this is not a filename
+ // it was a small icon: scale it and cache it
+ QString tmpName = szName;
+ tmpName += ".scaled16to32";
+ p = getPixmap(tmpName);
+ if(p)return p;
+ p = getSmallIcon(idx % KVI_NUM_SMALL_ICONS);
+ if(p)
+ {
+ QImage tmpi = p->convertToImage();
+ QImage tmp2 = tmpi.smoothScale(32,32);
+ KviCachedPixmap * cp = new KviCachedPixmap(new QPixmap(tmp2),QString::null);
+ addToCache(tmpName,cp);
+ return cp->pixmap();
+ }
+ }
+
+ p = getPixmap("kvi_bigicon_unknown.png");
+ if(p)return p;
+ KviCachedPixmap * cp = new KviCachedPixmap(new QPixmap(32,32),QString::null);
+ addToCache(szName,cp);
+ return cp->pixmap();
+}
+
+void KviIconManager::urlToCachedFileName(KviStr &szFName)
+{
+ szFName.replaceAll(':',"_");
+ szFName.replaceAll(';',"_");
+ szFName.replaceAll('/',"_");
+ szFName.replaceAll('\\',"_");
+ szFName.replaceAll("\"","_");
+ szFName.replaceAll("\'","_");
+ szFName.replaceAll("(","_");
+ szFName.replaceAll(")","_");
+ szFName.replaceAll("?","_");
+ szFName.replaceAll("___",".");
+}
+
+void KviIconManager::urlToCachedFileName(QString &szFName)
+{
+ szFName.replace(":","_");
+ szFName.replace(";","_");
+ szFName.replace("/","_");
+ szFName.replace("\\","_");
+ szFName.replace("\"","_");
+ szFName.replace("\'","_");
+ szFName.replace("(","_");
+ szFName.replace(")","_");
+ szFName.replace("?","_");
+ szFName.replace("___",".");
+}
+
+KviAvatar * KviIconManager::getAvatar(const QString &szLocalPath,const QString &szName)
+{
+ QString szP,szN;
+
+ if(szLocalPath.isEmpty())
+ {
+ if(szName.isEmpty())return 0;
+ if(KviQString::equalCIN("http://",szName,7))
+ {
+ szN = szName;
+ szP = szName;
+ urlToCachedFileName(szP);
+ } else {
+ szN = KviFileUtils::extractFileName(szName);
+ szP = szName;
+ }
+ } else if(szName.isEmpty())
+ {
+ if(szLocalPath.isEmpty())return 0;
+ szP = szLocalPath;
+ szN = KviFileUtils::extractFileName(szLocalPath);
+ } else {
+ szP = szLocalPath;
+ szN = szName;
+ }
+
+ // avatars bigger than 1024x768 just sux: they can't be seen on tooltips anyway
+ KviCachedPixmap * p = KVI_OPTION_BOOL(KviOption_boolScaleAvatarsOnLoad) ? getPixmapWithCacheScaleOnLoad(szP,
+ KVI_OPTION_UINT(KviOption_uintScaleAvatarsOnLoadWidth)
+ ,KVI_OPTION_UINT(KviOption_uintScaleAvatarsOnLoadHeight)) : getPixmapWithCache(szP);
+ if(!p)return 0;
+
+ return new KviAvatar(p->path(),szN,new QPixmap(*(p->pixmap())));
+}
+
+void KviIconManager::clearCache()
+{
+ m_pCachedImages->clear();
+}
+
+void KviIconManager::reloadImages()
+{
+ clearCache();
+ for(int i=0;i<KVI_NUM_SMALL_ICONS;i++)
+ {
+ if(m_smallIcons[i])delete m_smallIcons[i];
+ m_smallIcons[i] = 0;
+ }
+}
+
+
+QPixmap * KviIconManager::loadSmallIcon(int idx)
+{
+ if(idx >= KVI_NUM_SMALL_ICONS)return 0;
+ if(idx < 0)return 0;
+
+
+ // COMPATIBILITY ENTRY: To be removed in some time.
+ // This part loads the old smallicon library format kvi_smallicon_*.png
+ // to preserve backward compatibility with old themes.
+ // We lookup such files ONLY in the themes directories.
+
+ QString szFileName = KVI_SMALLICONS_IMAGELIB_PREFIX;
+
+ int fileidx = idx / 16;
+
+ if(fileidx >= 10)KviQString::appendFormatted(szFileName,"%d.png",fileidx);
+ else KviQString::appendFormatted(szFileName,"0%d.png",fileidx);
+
+ QString buffer;
+ if(g_pApp->findImageThemeOnlyCompat(buffer,szFileName))
+ {
+ KviImageLibrary l1(buffer,16,16);
+
+ int offset = fileidx * 16;
+
+ for(int i=0;i<16;i++)
+ {
+ int io = i + offset;
+ if(io >= KVI_NUM_SMALL_ICONS)break;
+ if(m_smallIcons[io])delete m_smallIcons[io];
+ m_smallIcons[io] = new QPixmap(l1.getImage(i));
+ }
+
+ return m_smallIcons[idx];
+ }
+
+ // otherwise we use the NEW method: separate small icons in the "coresmall" subdirectory.
+ QString szPath;
+ KviQString::sprintf(szPath,KVI_SMALLICONS_PREFIX "%s.png",g_szIconNames[idx]);
+
+ g_pApp->findSmallIcon(buffer,szPath);
+ m_smallIcons[idx] = new QPixmap(buffer);
+
+ //if(m_smallIcon[idx]->isNull())
+ //{
+ // // load an "unknown" image ?.. but should never happen
+ //}
+ return m_smallIcons[idx];
+}
+
+void KviIconManager::cacheCleanup()
+{
+ QStringList l;
+
+ KviPointerHashTableIterator<QString,KviCachedPixmap> it(*m_pCachedImages);
+
+
+//#warning "IMPLEMENT CLEANUP"
+/*
+ while(it.current())
+ {
+ kvi_time_t curTime = kvi_unixTime();
+
+ if((((unsigned int)it.current()->timestamp) - ((unsigned int)curTime)) > 120)
+ {
+ // unused since 2 minutes
+ // time to cleanup it...
+ l.append(new KviStr(it.currentKey()));
+ }
+ ++it;
+ }
+
+ for(QStringList::Iterator it = l.begin();it != l.end();++it)
+ {
+ m_pCachedImages->remove(*it);
+ }
+*/
+/*
+ for(KviStr * p =l.first();p;p = l.next())
+ {
+ m_pCachedImages->remove(p->ptr());
+ }
+ if(m_pCachedImages->isEmpty())m_pCleanupTimer->stop();
+*/
+}
+
+#include "kvi_iconmanager.moc"
diff --git a/src/kvirc/kernel/kvi_iconmanager.h b/src/kvirc/kernel/kvi_iconmanager.h
new file mode 100644
index 00000000..d8f2abb9
--- /dev/null
+++ b/src/kvirc/kernel/kvi_iconmanager.h
@@ -0,0 +1,501 @@
+#ifndef _KVI_ICONMANAGER_H_
+#define _KVI_ICONMANAGER_H_
+
+//=============================================================================
+//
+// File : kvi_iconmanager.h
+// Creation date : Sat Jun 24 2000 14:49:24 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_string.h"
+#include "kvi_avatar.h"
+#include "kvi_time.h"
+
+#include <qpixmap.h>
+#include <qobject.h>
+#include <qwidget.h>
+#include "kvi_pointerhashtable.h"
+
+
+
+#define KVI_SMALLICON_NONE 0
+#define KVI_SMALLICON_CLOSE 1
+#define KVI_SMALLICON_MAXIMIZE 2
+#define KVI_SMALLICON_MINIMIZE 3
+#define KVI_SMALLICON_RESTORE 4
+#define KVI_SMALLICON_DEFAULTICON 5
+#define KVI_SMALLICON_DOCK 6
+#define KVI_SMALLICON_UNDOCK 7
+#define KVI_SMALLICON_QUITAPP 8
+#define KVI_SMALLICON_CONSOLE 9
+#define KVI_SMALLICON_FLOPPY 10
+#define KVI_SMALLICON_PARSERERROR 11
+#define KVI_SMALLICON_PARSERWARNING 12
+#define KVI_SMALLICON_SERVER 13
+#define KVI_SMALLICON_WORLD 14
+#define KVI_SMALLICON_PROXY 15
+#define KVI_SMALLICON_KVIRC 16
+#define KVI_SMALLICON_CUT 17
+#define KVI_SMALLICON_COPY 18
+#define KVI_SMALLICON_PASTE 19
+#define KVI_SMALLICON_OPTIONS 20
+#define KVI_SMALLICON_SOCKETMESSAGE 21
+#define KVI_SMALLICON_SOCKETWARNING 22
+#define KVI_SMALLICON_SOCKETERROR 23
+#define KVI_SMALLICON_SYSTEMERROR 24
+#define KVI_SMALLICON_RAW 25
+#define KVI_SMALLICON_SYSTEMWARNING 26
+#define KVI_SMALLICON_SYSTEMMESSAGE 27
+#define KVI_SMALLICON_UNHANDLED 28
+#define KVI_SMALLICON_SERVERINFO 29
+#define KVI_SMALLICON_MOTD 30
+#define KVI_SMALLICON_CHANNEL 31
+#define KVI_SMALLICON_HIDEDOUBLEVIEW 32
+#define KVI_SMALLICON_SHOWDOUBLEVIEW 33
+#define KVI_SMALLICON_OP 34
+#define KVI_SMALLICON_VOICE 35
+#define KVI_SMALLICON_SERVERPING 36
+#define KVI_SMALLICON_SHOWLISTVIEW 37
+#define KVI_SMALLICON_HIDELISTVIEW 38
+#define KVI_SMALLICON_JOIN 39
+#define KVI_SMALLICON_PART 40
+#define KVI_SMALLICON_UNRECOGNIZED 41
+#define KVI_SMALLICON_TOPIC 42
+#define KVI_SMALLICON_ACCEPT 43
+#define KVI_SMALLICON_DISCARD 44
+#define KVI_SMALLICON_OWNPRIVMSG 45
+#define KVI_SMALLICON_CHANPRIVMSG 46
+#define KVI_SMALLICON_QUERY 47
+#define KVI_SMALLICON_QUERYPRIVMSG 48
+#define KVI_SMALLICON_HELP 49
+#define KVI_SMALLICON_MDIHELP 50
+#define KVI_SMALLICON_CTCPREPLY 51
+#define KVI_SMALLICON_CTCPREQUESTREPLIED 52
+#define KVI_SMALLICON_CTCPREQUESTIGNORED 53
+#define KVI_SMALLICON_CTCPREQUESTFLOOD 54
+#define KVI_SMALLICON_CTCPREQUESTUNKNOWN 55
+#define KVI_SMALLICON_ACTION 56
+#define KVI_SMALLICON_AVATAR 57
+#define KVI_SMALLICON_QUIT 58
+#define KVI_SMALLICON_SPLIT 59
+#define KVI_SMALLICON_QUITSPLIT 60
+#define KVI_SMALLICON_NICK 61
+#define KVI_SMALLICON_DEOP 62
+#define KVI_SMALLICON_DEVOICE 63
+#define KVI_SMALLICON_MODE 64
+#define KVI_SMALLICON_KEY 65
+#define KVI_SMALLICON_LIMIT 66
+#define KVI_SMALLICON_BAN 67
+#define KVI_SMALLICON_UNBAN 68
+#define KVI_SMALLICON_BANEXCEPT 69
+#define KVI_SMALLICON_BANUNEXCEPT 70
+#define KVI_SMALLICON_INVITEEXCEPT 71
+#define KVI_SMALLICON_INVITEUNEXCEPT 72
+#define KVI_SMALLICON_CHANMODE 73
+#define KVI_SMALLICON_CHANMODEHIDE 74
+#define KVI_SMALLICON_WHO 75
+#define KVI_SMALLICON_EDITOR 76
+#define KVI_SMALLICON_DCCREQUEST 77
+#define KVI_SMALLICON_DCCMSG 78
+#define KVI_SMALLICON_DCCERROR 79
+#define KVI_SMALLICON_ICONMANAGER 80
+#define KVI_SMALLICON_SCRIPTCENTER 81
+#define KVI_SMALLICON_BOMB 82
+#define KVI_SMALLICON_EVENT 83
+#define KVI_SMALLICON_EVENTNOHANDLERS 84
+#define KVI_SMALLICON_HANDLER 85
+#define KVI_SMALLICON_HANDLERDISABLED 86
+#define KVI_SMALLICON_NICKNAMEPROBLEM 87
+#define KVI_SMALLICON_WHOISUSER 88
+#define KVI_SMALLICON_WHOISCHANNELS 89
+#define KVI_SMALLICON_WHOISIDLE 90
+#define KVI_SMALLICON_WHOISSERVER 91
+#define KVI_SMALLICON_WHOISOTHER 92
+#define KVI_SMALLICON_TIME 93
+#define KVI_SMALLICON_NOTIFYONLINE 94
+#define KVI_SMALLICON_NOTIFYOFFLINE 95
+#define KVI_SMALLICON_LOCKED 96
+#define KVI_SMALLICON_UNLOCKED 97
+#define KVI_SMALLICON_LOCKEDOFF 98
+#define KVI_SMALLICON_UNLOCKEDOFF 99
+#define KVI_SMALLICON_OWNPRIVMSGCRYPTED 100
+#define KVI_SMALLICON_CHANPRIVMSGCRYPTED 101
+#define KVI_SMALLICON_QUERYPRIVMSGCRYPTED 102
+#define KVI_SMALLICON_DCCCHATMSG 103
+#define KVI_SMALLICON_DCCCHATMSGCRYPTED 104
+#define KVI_SMALLICON_IRC 105
+#define KVI_SMALLICON_FOLDER 106
+#define KVI_SMALLICON_HOME 107
+#define KVI_SMALLICON_BOOKMARKS 108
+#define KVI_SMALLICON_SPY 109
+#define KVI_SMALLICON_KICK 110
+#define KVI_SMALLICON_LINUX 111
+#define KVI_SMALLICON_LINKS 112
+#define KVI_SMALLICON_REGUSERS 113
+#define KVI_SMALLICON_DOCKWIDGET 114
+#define KVI_SMALLICON_CASCADEWINDOWS 115
+#define KVI_SMALLICON_MAXVERTICAL 116
+#define KVI_SMALLICON_MAXHORIZONTAL 117
+#define KVI_SMALLICON_TILEWINDOWS 118
+#define KVI_SMALLICON_LOG 119
+#define KVI_SMALLICON_SPAM 120
+#define KVI_SMALLICON_FILE 121
+#define KVI_SMALLICON_ICQ 122
+#define KVI_SMALLICON_ICQYELLOW 123
+#define KVI_SMALLICON_ICQRED 124
+#define KVI_SMALLICON_ICQBLUE 125
+#define KVI_SMALLICON_ICQLIGHTGREEN 126
+#define KVI_SMALLICON_ICQLIGHTYELLOW 127
+#define KVI_SMALLICON_MESSAGE 128
+#define KVI_SMALLICON_MESSAGESENT 129
+#define KVI_SMALLICON_BLUESQUARE 130
+#define KVI_SMALLICON_VIOLETSQUARE 131
+#define KVI_SMALLICON_YELLOWSQUARE 132
+#define KVI_SMALLICON_GREENSQUARE 133
+#define KVI_SMALLICON_BLACKSQUARE 134
+#define KVI_SMALLICON_REDSQUARE 135
+#define KVI_SMALLICON_CYANSQUARE 136
+#define KVI_SMALLICON_DKGREENSQUARE 137
+#define KVI_SMALLICON_TERMINAL 138
+#define KVI_SMALLICON_WALLOPS 139
+#define KVI_SMALLICON_INVISIBLE 140
+#define KVI_SMALLICON_SERVERNOTICE 141
+#define KVI_SMALLICON_GNUTELLA 142
+#define KVI_SMALLICON_SEARCH 143
+#define KVI_SMALLICON_FILES 144
+#define KVI_SMALLICON_TRANSFER 145
+#define KVI_SMALLICON_PACKAGE 146
+#define KVI_SMALLICON_RETRY 147
+#define KVI_SMALLICON_IDEA 148
+#define KVI_SMALLICON_COLORS 149
+#define KVI_SMALLICON_GUI 150
+#define KVI_SMALLICON_IRCVIEW 151
+#define KVI_SMALLICON_ALIAS 152
+#define KVI_SMALLICON_CHANNELNOTICE 153
+#define KVI_SMALLICON_CHANNELNOTICECRYPTED 154
+#define KVI_SMALLICON_QUERYNOTICE 155
+#define KVI_SMALLICON_QUERYNOTICECRYPTED 156
+// FIXME: rename the icon 157: it was colliding with 141
+#define KVI_SMALLICON_SERVNOTICE 157
+#define KVI_SMALLICON_POPUP 158
+#define KVI_SMALLICON_PROLOGUE 159
+#define KVI_SMALLICON_EPILOGUE 160
+#define KVI_SMALLICON_SHAREDFILES 161
+#define KVI_SMALLICON_CTCPREPLYUNKNOWN 162
+#define KVI_SMALLICON_CANVAS 163
+#define KVI_SMALLICON_NICKSERV 164
+#define KVI_SMALLICON_CHANSERV 165
+#define KVI_SMALLICON_DCCVOICE 166
+#define KVI_SMALLICON_PLAY 167
+#define KVI_SMALLICON_RECORD 168
+#define KVI_SMALLICON_AUTOTILEWINDOWS 169
+#define KVI_SMALLICON_AWAY 170
+#define KVI_SMALLICON_IDENT 171
+#define KVI_SMALLICON_HOMEPAGE 172
+#define KVI_SMALLICON_LIST 173
+#define KVI_SMALLICON_HALFOP 174
+#define KVI_SMALLICON_HALFDEOP 175
+#define KVI_SMALLICON_INVITE 176
+#define KVI_SMALLICON_MULTIMEDIA 177
+#define KVI_SMALLICON_LOOK 178
+#define KVI_SMALLICON_INPUT 179
+#define KVI_SMALLICON_MESSAGES 180
+#define KVI_SMALLICON_QUERYTRACE 181
+#define KVI_SMALLICON_NOCHANNEL 182
+#define KVI_SMALLICON_BROADCASTPRIVMSG 183
+#define KVI_SMALLICON_BROADCASTNOTICE 184
+#define KVI_SMALLICON_URL 185
+#define KVI_SMALLICON_RAWEVENT 186
+#define KVI_SMALLICON_RAWEVENTNOHANDLERS 187
+#define KVI_SMALLICON_MEKICK 188
+#define KVI_SMALLICON_MEOP 189
+#define KVI_SMALLICON_MEVOICE 190
+#define KVI_SMALLICON_MEDEOP 191
+#define KVI_SMALLICON_MEDEVOICE 192
+#define KVI_SMALLICON_MEHALFOP 193
+#define KVI_SMALLICON_MEDEHALFOP 194
+#define KVI_SMALLICON_MEBAN 195
+#define KVI_SMALLICON_MEUNBAN 196
+#define KVI_SMALLICON_MEBANEXCEPT 197
+#define KVI_SMALLICON_MEBANUNEXCEPT 198
+#define KVI_SMALLICON_MEINVITEEXCEPT 199
+#define KVI_SMALLICON_MEINVITEUNEXCEPT 200
+#define KVI_SMALLICON_CLASSICTASKBAR 201
+#define KVI_SMALLICON_TREETASKBAR 202
+#define KVI_SMALLICON_IGNORE 203
+#define KVI_SMALLICON_USERLIST 204
+#define KVI_SMALLICON_STATS 205
+#define KVI_SMALLICON_POPUPMENU 206
+#define KVI_SMALLICON_XY 207
+#define KVI_SMALLICON_IRC0 208
+#define KVI_SMALLICON_IRC1 209
+#define KVI_SMALLICON_IRC2 210
+#define KVI_SMALLICON_IRC3 211
+#define KVI_SMALLICON_IRC4 212
+#define KVI_SMALLICON_IRC5 213
+#define KVI_SMALLICON_HEART 214
+#define KVI_SMALLICON_HEARTBROKEN 215
+#define KVI_SMALLICON_ROSE 216
+#define KVI_SMALLICON_BIGGRIN 217
+#define KVI_SMALLICON_BIGGRINGLASSES 218
+#define KVI_SMALLICON_BIGGRINEYES 219
+#define KVI_SMALLICON_TEXTEXCLAMATIVE 220
+#define KVI_SMALLICON_TEXTPOINTS 221
+#define KVI_SMALLICON_KISS 222
+#define KVI_SMALLICON_SURPRISED1 223
+#define KVI_SMALLICON_UGLY 224
+#define KVI_SMALLICON_ANGRY 225
+#define KVI_SMALLICON_SURPRISED2 226
+#define KVI_SMALLICON_SMILE 227
+#define KVI_SMALLICON_TONGUE 228
+#define KVI_SMALLICON_SSL 229
+#define KVI_SMALLICON_CRY 230
+#define KVI_SMALLICON_EYE 231
+#define KVI_SMALLICON_DEADCHANNEL 232
+#define KVI_SMALLICON_DEADQUERY 233
+#define KVI_SMALLICON_SOUND 234
+#define KVI_SMALLICON_TOOLBAR 235
+#define KVI_SMALLICON_TEXTENCODING 236
+#define KVI_SMALLICON_NEWITEM 237
+#define KVI_SMALLICON_NEWITEMBYWIZARD 238
+#define KVI_SMALLICON_DELETEITEM 239
+#define KVI_SMALLICON_EDITITEM 240
+#define KVI_SMALLICON_FILETRANSFER 241
+#define KVI_SMALLICON_CHANADMIN 242
+#define KVI_SMALLICON_CHANUNADMIN 243
+#define KVI_SMALLICON_MECHANADMIN 244
+#define KVI_SMALLICON_MECHANUNADMIN 245
+#define KVI_SMALLICON_USEROP 246
+#define KVI_SMALLICON_DEUSEROP 247
+#define KVI_SMALLICON_MEUSEROP 248
+#define KVI_SMALLICON_MEDEUSEROP 249
+#define KVI_SMALLICON_APPLET 250
+#define KVI_SMALLICON_CAPTION 251
+#define KVI_SMALLICON_TRANSPARENT 252
+#define KVI_SMALLICON_ALERT 253
+#define KVI_SMALLICON_USERWINDOW 254
+#define KVI_SMALLICON_STATUSBAR 255
+#define KVI_SMALLICON_NOTAWAY 256
+#define KVI_SMALLICON_PLUS 257
+#define KVI_SMALLICON_MINUS 258
+#define KVI_SMALLICON_BINARYTEXT 259
+#define KVI_SMALLICON_CHANOWNER 260
+#define KVI_SMALLICON_CHANUNOWNER 261
+#define KVI_SMALLICON_MECHANOWNER 262
+#define KVI_SMALLICON_MECHANUNOWNER 263
+#define KVI_SMALLICON_AFRAID 264
+#define KVI_SMALLICON_TONGUE2 265
+#define KVI_SMALLICON_SAYICON 266
+#define KVI_SMALLICON_SAYCOLORS 267
+#define KVI_SMALLICON_FINGER 268
+#define KVI_SMALLICON_SCRIPTACTION 269
+#define KVI_SMALLICON_TEARSMILE 270
+#define KVI_SMALLICON_SHY 271
+#define KVI_SMALLICON_SERVERERROR 272
+#define KVI_SMALLICON_CAFE 273
+#define KVI_SMALLICON_ADDONS 274
+#define KVI_SMALLICON_CHANOWNERAWAY 275
+#define KVI_SMALLICON_OPAWAY 276
+#define KVI_SMALLICON_VOICEAWAY 277
+#define KVI_SMALLICON_CHANADMINAWAY 278
+#define KVI_SMALLICON_USEROPAWAY 279
+#define KVI_SMALLICON_HALFOPAWAY 280
+#define KVI_SMALLICON_ALIASHIGHLIGHTED 281
+#define KVI_SMALLICON_DEMORALIZED 282
+#define KVI_SMALLICON_SLURP 283
+#define KVI_SMALLICON_NAMESPACE 284
+#define KVI_SMALLICON_SAYSMILE 285
+#define KVI_SMALLICON_SAYKVS 286
+#define KVI_SMALLICON_THEMEOPTIONS 287
+#define KVI_SMALLICON_BUG 288
+#define KVI_SMALLICON_REFRESH 289
+#define KVI_SMALLICON_THEME 290
+#define KVI_SMALLICON_SCREENSHOT 291
+
+#define KVI_NUM_SMALL_ICONS 292
+
+
+#define KVI_BIGICON_DISCONNECTED "kvi_bigicon_disconnected.png"
+#define KVI_BIGICON_CONNECTING "kvi_bigicon_connecting.png"
+#define KVI_BIGICON_CONNECTED "kvi_bigicon_connected.png"
+#define KVI_BIGICON_TOOLS "kvi_bigicon_tools.png"
+#define KVI_BIGICON_ACTIONS "kvi_bigicon_actions.png"
+#define KVI_BIGICON_FOLDER "kvi_bigicon_folder.png"
+#define KVI_BIGICON_UNKNOWN "kvi_bigicon_unknown.png"
+#define KVI_BIGICON_SEPARATOR "kvi_bigicon_separator.png"
+#define KVI_BIGICON_KVS "kvi_bigicon_kvs.png"
+#define KVI_BIGICON_THEME "kvi_bigicon_theme.png"
+#define KVI_BIGICON_ADDONS "kvi_bigicon_addons.png"
+
+#define KVI_BIGICON_HELPINDEX "kvi_bigicon_helpindex.png"
+#define KVI_BIGICON_HELPBACK "kvi_bigicon_helpback.png"
+#define KVI_BIGICON_HELPFORWARD "kvi_bigicon_helpforward.png"
+#define KVI_BIGICON_HELPCLOSE "kvi_bigicon_helpclose.png"
+#define KVI_BIGICON_HELPSEARCH "kvi_bigicon_helpsearch.png"
+
+#define KVI_BIGICON_OPEN "kvi_bigicon_open.png"
+#define KVI_BIGICON_SAVE "kvi_bigicon_save.png"
+#define KVI_BIGICON_REMOVE "kvi_bigicon_remove.png"
+#define KVI_BIGICON_WWW "kvi_bigicon_www.png"
+#define KVI_BIGICON_PACK "kvi_bigicon_pack.png"
+#define KVI_BIGICON_SCREENSHOT "kvi_bigicon_screenshot.png"
+#define KVI_BIGICON_REGUSERS "kvi_bigicon_regusers.png"
+
+#define KVI_SMALLICONS_SUBDIRECTORY "coresmall"
+#define KVI_SMALLICONS_PREFIX "kcs_"
+
+// FIXME: this should be removed
+#define KVI_SMALLICONS_IMAGELIB_PREFIX "kvi_smallicon_"
+
+#define KVI_USERCHANSTATE_IMAGE_NAME "kvi_userchanstate.png"
+#define KVI_ACTIVITYMETER_IMAGE_NAME "kvi_activitymeter.png"
+
+#define KVI_REFRESH_IMAGE_NAME "kvi_icon_refresh.png"
+
+class KviIconManager;
+
+class KVIRC_API KviCachedPixmap
+{
+public:
+ // the pixmap MUST be allocated with new QPixmap()
+ // this calss takes the ownership
+ KviCachedPixmap(QPixmap * ptr,const QString &szPath);
+ ~KviCachedPixmap();
+private:
+ QString m_szPath;
+ kvi_time_t m_tLastAccess;
+ QPixmap * m_pPixmap;
+ unsigned int m_uSize;
+public:
+ QPixmap * pixmap(){ return m_pPixmap; };
+ const QString & path(){ return m_szPath; };
+ unsigned int size(){ return m_uSize; };
+ kvi_time_t lastAccessTime(){ return m_tLastAccess; };
+ void updateLastAccessTime();
+};
+
+class KVIRC_API KviIconWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ KviIconWidget();
+ KviIconWidget(QWidget * par);
+ ~KviIconWidget();
+protected:
+ void init();
+ virtual void closeEvent(QCloseEvent *e);
+ virtual bool eventFilter(QObject * o,QEvent *e);
+signals:
+ void closed();
+ void selected(int iIcon);
+};
+
+
+
+//
+// This class manages the images used by KVIrc.
+//
+// We handle three types of images: builtin small icons, builtin big icons and generic images.
+//
+// The builtin small icons are in the pics/coresmall directory (this is to optimize the directory size
+// since it's a linear search...), are 16x16 in size and are indexed by numbers in a way that their
+// access is really fast. The icons used here are used mostly in KviIrcView (but not exclusively).
+//
+// The generic images are just "any" image that the underlying Qt engine
+// is able to load. They are loaded by (relative) path and
+// cached by name.
+//
+// The builtin big icons are (actually) just generic images
+// that are eventually scaled to 32x32 if needed. One can request
+// a builtin small icon indexed by number to be scaled
+// to the size of 32x32 as a big icon too.
+//
+
+class KVIRC_API KviIconManager : public QObject
+{
+ Q_OBJECT
+public:
+ KviIconManager();
+ ~KviIconManager();
+private:
+ QPixmap * m_smallIcons[KVI_NUM_SMALL_ICONS];
+ KviIconWidget * m_pIconWidget;
+
+ KviPointerHashTable<QString,KviCachedPixmap> * m_pCachedImages;
+ KviPointerHashTable<QString,int> * m_pIconNames;
+ unsigned int m_uCacheTotalSize;
+ unsigned int m_uCacheMaxSize;
+public:
+ // WARNING: Don't store this pointer!
+ // id == filename | number that indicates an internal pixmap
+ // 0 stands for "any"
+ QPixmap * getImage(const char * id,bool bCanBeNumber = true,QString* pRetPath = 0);
+
+ // The returned pointer is owned by the icon manager
+ // and can be deleted at any time : so don't store it
+ KviCachedPixmap * getPixmapWithCache(const QString &szName);
+
+ // The returned pointer is owned by the icon manager
+ // and can be deleted at any time : so don't store it
+ KviCachedPixmap * getPixmapWithCacheScaleOnLoad(const QString &szName,int iMaxWidth,int iMaxHeight);
+
+ // The returned pointer is owned by the icon manager
+ // and can be deleted at any time : so don't store it
+ QPixmap * getPixmap(const QString &szName)
+ { KviCachedPixmap * p = getPixmapWithCache(szName); return p ? p->pixmap() : 0; };
+
+ // this one never fails... if the image can't be found
+ // a default 32x32 image is returned
+ QPixmap * getBigIcon(const QString &szName);
+
+ // this one never fails... if the icon isn't there
+ // then a default 16x16 image is returned
+ QPixmap * getSmallIcon(int idx){ return idx < KVI_NUM_SMALL_ICONS ? (m_smallIcons[idx] ? m_smallIcons[idx] : loadSmallIcon(idx) ) : 0; };
+
+ const char * getSmallIconName(int idx);
+ int getSmallIconIdFromName(const QString &szName);
+
+ // if szLocalPath is empty then szName can be the identification
+ // string for the avatar
+ // if szName is empty then it is found from szLocalPath
+ KviAvatar * getAvatar(const QString &szLocalPath,const QString &szName);
+
+ void urlToCachedFileName(KviStr &szFName);
+ void urlToCachedFileName(QString &szFName);
+
+ void clearCache();
+ void reloadImages();
+
+ void cacheCleanup();
+protected:
+ void addToCache(const QString &szName,KviCachedPixmap * p);
+ //void loadSmallIcons();
+ QPixmap * loadSmallIcon(int idx);
+public slots:
+ void showIconWidget();
+protected slots:
+ void iconWidgetClosed();
+};
+
+extern KVIRC_API KviIconManager * g_pIconManager;
+
+#endif //_KVI_ICONMANAGER_H_
diff --git a/src/kvirc/kernel/kvi_internalcmd.cpp b/src/kvirc/kernel/kvi_internalcmd.cpp
new file mode 100644
index 00000000..61c9f165
--- /dev/null
+++ b/src/kvirc/kernel/kvi_internalcmd.cpp
@@ -0,0 +1,81 @@
+//
+// File : kvi_internalcmd.cpp
+// Creation date : Sun Aug 13 2000 19:22:45 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#define __KVIRC__
+#define _KVI_INTERNALCMD_CPP_
+
+#include "kvi_internalcmd.h"
+
+// FIXME: #warning "LOCALIZE THIS!"
+
+static char * internalCommandTable[KVI_NUM_INTERNAL_COMMANDS]=
+{
+ "echo INTERNAL COMMAND ERROR: INDEX OUT OF RANGE",
+ "help.open -n -m index.html",
+ "help.open -n index.html",
+ "about.kvirc",
+ "if($option(boolShowGeneralOptionsDialogAsToplevel))options.dialog -t; else options.dialog",
+ "codetester.open",
+ "socketspy.open",
+ "links.open",
+ "if($option(boolShowRegisteredUsersDialogAsToplevel))reguser.edit -t; else reguser.edit",
+ "dockwidget.show",
+ "dockwidget.hide",
+ "toolbareditor.open",
+ "aliaseditor.open",
+ "term.open -m",
+ "eventeditor.open",
+ "dirbrowser.open -m",
+ "dirbrowser.open",
+ "ident.start",
+ "ident.stop",
+ "tip.open" ,
+ "openurl http://www.kvirc.net",
+ "list.open",
+ "if($option(boolShowChannelsJoinDialogAsToplevel))channelsjoin.open -t;else channelsjoin.open",
+ "if($option(boolShowServersConnectDialogAsToplevel))options.edit -t KviServerOptionsWidget;else options.edit KviServerOptionsWidget",
+ "url.list",
+ "openurl http://www.kvirc.net/?id=themes",
+ "openurl http://www.kvirc.net/?id=mailinglist",
+ "openurl https://svn.kvirc.de/kvirc/newticket",
+ "raweditor.open",
+ "popupeditor.open",
+ "dialog.file(open,\"Select a Script File\"){ if(!$str.isEmpty($0))parse $0; }",
+ "actioneditor.open",
+ "quit",
+ "openurl http://www.kvirc.ru",
+ "openurl irc://freenode/kvirc",
+ "openurl irc://ircnet/kvirc",
+ "openurl irc://azzurra/kvirc.net",
+ "openurl http://kvirc-fr.info",
+ "openurl irc://freenode/kvirc-fr",
+ "openurl irc://irc.europnet.org/kvirc"
+};
+
+
+char * kvi_getInternalCommandBuffer(int idx)
+{
+ if(idx > 0 && idx < KVI_NUM_INTERNAL_COMMANDS)
+ {
+ return internalCommandTable[idx];
+ }
+ return internalCommandTable[0];
+}
diff --git a/src/kvirc/kernel/kvi_internalcmd.h b/src/kvirc/kernel/kvi_internalcmd.h
new file mode 100644
index 00000000..533dfc05
--- /dev/null
+++ b/src/kvirc/kernel/kvi_internalcmd.h
@@ -0,0 +1,72 @@
+#ifndef _KVI_INTERNALCMD_H_
+#define _KVI_INTERNALCMD_H_
+//
+// File : kvi_internalcmd.h
+// Creation date : Sun Aug 13 2000 19:21:12 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+
+#define KVI_INTERNALCOMMAND_ECHO_INTERNALERROR 0
+#define KVI_INTERNALCOMMAND_HELP_NEWMDIWINDOW 1
+#define KVI_INTERNALCOMMAND_HELP_NEWSTATICWINDOW 2
+#define KVI_INTERNALCOMMAND_ABOUT_ABOUTKVIRC 3
+#define KVI_INTERNALCOMMAND_OPTIONS_DIALOG 4
+#define KVI_INTERNALCOMMAND_CODETESTER_OPEN 5
+#define KVI_INTERNALCOMMAND_SOCKETSPY_OPEN 6
+#define KVI_INTERNALCOMMAND_LINKS_OPEN 7
+#define KVI_INTERNALCOMMAND_REGUSER_EDIT 8
+#define KVI_INTERNALCOMMAND_DOCKWIDGET_SHOW 9
+#define KVI_INTERNALCOMMAND_DOCKWIDGET_HIDE 10
+#define KVI_INTERNALCOMMAND_TOOLBAREDITOR_OPEN 11
+#define KVI_INTERNALCOMMAND_ALIASEDITOR_OPEN 12
+#define KVI_INTERNALCOMMAND_TERM_OPEN 13
+#define KVI_INTERNALCOMMAND_EVENTEDITOR_OPEN 14
+#define KVI_INTERNALCOMMAND_BROWSER_OPEN_MDI 15
+#define KVI_INTERNALCOMMAND_BROWSER_OPEN 16
+#define KVI_INTERNALCOMMAND_IDENT_START 17
+#define KVI_INTERNALCOMMAND_IDENT_STOP 18
+#define KVI_INTERNALCOMMAND_TIP_OPEN 19
+#define KVI_INTERNALCOMMAND_KVIRC_HOMEPAGE 20
+#define KVI_INTERNALCOMMAND_LIST_OPEN 21
+#define KVI_INTERNALCOMMAND_CHANNELSJOIN_OPEN 22
+#define KVI_INTERNALCOMMAND_SERVERSJOIN_OPEN 23
+#define KVI_INTERNALCOMMAND_URL_OPEN 24
+#define KVI_INTERNALCOMMAND_OPENURL_KVIRC_THEMES 25
+#define KVI_INTERNALCOMMAND_OPENURL_KVIRC_MAILINGLIST 26
+#define KVI_INTERNALCOMMAND_OPENURL_KVIRC_BUGTRACK 27
+#define KVI_INTERNALCOMMAND_RAWEDITOR_OPEN 28
+#define KVI_INTERNALCOMMAND_POPUPEDITOR_OPEN 29
+#define KVI_INTERNALCOMMAND_EXECUTE_SCRIPT_FROM_DISK 30
+#define KVI_INTERNALCOMMAND_ACTIONEDITOR_OPEN 31
+#define KVI_INTERNALCOMMAND_QUIT 32
+#define KVI_INTERNALCOMMAND_KVIRC_HOMEPAGE_RU 33
+#define KVI_INTERNALCOMMAND_OPENURL_KVIRC_ON_FREENODE 34
+#define KVI_INTERNALCOMMAND_OPENURL_KVIRC_ON_IRCNET 35
+#define KVI_INTERNALCOMMAND_OPENURL_KVIRC_IT_ON_AZZURRA 36
+#define KVI_INTERNALCOMMAND_KVIRC_HOMEPAGE_FR 37
+#define KVI_INTERNALCOMMAND_OPENURL_KVIRC_FR_ON_FREENODE 38
+#define KVI_INTERNALCOMMAND_OPENURL_KVIRC_FR_ON_EUROPNET 39
+
+#define KVI_NUM_INTERNAL_COMMANDS 40
+
+extern KVIRC_API char * kvi_getInternalCommandBuffer(int idx);
+
+#endif //_KVI_INTERNALCMD_H_
diff --git a/src/kvirc/kernel/kvi_ipc.cpp b/src/kvirc/kernel/kvi_ipc.cpp
new file mode 100644
index 00000000..3927f275
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ipc.cpp
@@ -0,0 +1,269 @@
+//=============================================================================
+//
+// File : kvi_ipc.hcpp
+// Creation date : Tue Apr 10 2001 15:04:45 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+
+#include "kvi_ipc.h"
+
+
+#ifndef COMPILE_NO_IPC
+
+ #include "kvi_memmove.h"
+ #include "kvi_app.h"
+ #include "kvi_qstring.h"
+
+#ifdef COMPILE_ON_WINDOWS
+
+ static HWND kvi_win_findIpcSentinel()
+ {
+ HWND hWnd = ::FindWindow("QWidget","[Non-Commercial] - kvirc_ipc_sentinel");
+ if(hWnd)return hWnd;
+ hWnd = ::FindWindow("QWidget","[Freeware] - kvirc_ipc_sentinel");
+ if(hWnd)return hWnd;
+ hWnd = ::FindWindow("QWidget","kvirc_ipc_sentinel");
+ return hWnd;
+ }
+
+#else //!COMPILE_ON_WINDOWS
+
+ #ifndef COMPILE_NO_X
+ #include <X11/Xatom.h>
+
+ #include <unistd.h> // for getuid
+ #include <sys/types.h> // for getuid
+
+ #ifdef COMPILE_USE_QT4
+ #include <qx11info_x11.h>
+ #define kvi_ipc_get_xdisplay QX11Info::display
+ #define kvi_ipc_get_xrootwin QX11Info::appRootWindow
+ #else
+ #define kvi_ipc_get_xdisplay qt_xdisplay
+ #define kvi_ipc_get_xrootwin qt_xrootwin
+ #endif
+
+ static Atom kvi_atom_ipc_sentinel_window;
+ static Atom kvi_atom_ipc_remote_command;
+ static Atom kvi_atom_ipc_remote_message;
+ static KviStr kvi_sentinel_id;
+ static bool g_bIpcAtomsLoaded = false;
+
+ static void kvi_ipcLoadAtoms()
+ {
+ if(g_bIpcAtomsLoaded)return;
+ g_bIpcAtomsLoaded = true;
+ kvi_sentinel_id.sprintf("tonno e mistero - %d",getuid());
+ kvi_atom_ipc_sentinel_window = XInternAtom(kvi_ipc_get_xdisplay(),"XA_KVI_IPC_SENTINEL_WINDOW",False);
+ kvi_atom_ipc_remote_command = XInternAtom(kvi_ipc_get_xdisplay(),"XA_KVI_IPC_REMOTE_COMMAND",False);
+ kvi_atom_ipc_remote_message = XInternAtom(kvi_ipc_get_xdisplay(),"XA_KVI_IPC_REMOTE_MESSAGE",False);
+ }
+
+ static void kvi_ipcSetRemoteCommand(Window w,const char * command)
+ {
+ XChangeProperty(kvi_ipc_get_xdisplay(),w,kvi_atom_ipc_remote_command,
+ XA_STRING,8,PropModeReplace,(const unsigned char *)command,kvi_strLen(command) + 1);
+ }
+
+ static Window kvi_x11_findIpcSentinel(Window win)
+ {
+ Atom type;
+ int format;
+ unsigned long nItems,after;
+ unsigned char * data = 0;
+ if(XGetWindowProperty(kvi_ipc_get_xdisplay(),win,kvi_atom_ipc_sentinel_window,0,32,FALSE,XA_STRING,
+ &type,&format,&nItems,&after,&data) == Success)
+ {
+ if((type == XA_STRING) && (format == 8))
+ {
+ if((nItems == ((unsigned long)(kvi_sentinel_id.len()))) && data)
+ {
+ if(kvi_strEqualCSN((const char *)data,kvi_sentinel_id.ptr(),kvi_sentinel_id.len()))
+ {
+ XFree((char *)data);
+ return win;
+ }
+ }
+ }
+ }
+
+ Window root,parent;
+ Window * children;
+ unsigned int nChildren;
+
+ if(!XQueryTree(kvi_ipc_get_xdisplay(),win,&root,&parent,&children,&nChildren))
+ {
+ if(children)XFree((char *)children);
+ return 0;
+ }
+
+ Window found = 0;
+
+ for(int i=nChildren-1;(!found) && (i >= 0);i--)
+ found = kvi_x11_findIpcSentinel(children[i]);
+
+ if(children)XFree((char *)children);
+
+ return found;
+ }
+ #endif //!COMPILE_NO_X
+
+#endif //!COMPILE_ON_WINDOWS
+
+
+ #define KVI_WINDOWS_IPC_MESSAGE 0x2FACE5
+
+ bool kvi_sendIpcMessage(const char * message)
+ {
+#ifdef COMPILE_ON_WINDOWS
+ HWND hSentinel = kvi_win_findIpcSentinel();
+ if(hSentinel != NULL)
+ {
+ COPYDATASTRUCT cpd;
+ cpd.cbData = strlen(message)+1;
+ cpd.dwData = KVI_WINDOWS_IPC_MESSAGE;
+ cpd.lpData = (void *)message;
+ DWORD dwResult;
+ debug(message);
+ ::SendMessageTimeout(hSentinel,WM_COPYDATA,(WPARAM)NULL,(LPARAM)&cpd,SMTO_BLOCK,1000,&dwResult);
+ return true;
+ }
+#else //!COMPILE_ON_WINDOWS
+ #ifndef COMPILE_NO_X
+
+ kvi_ipcLoadAtoms();
+
+ Window sentinel = kvi_x11_findIpcSentinel(kvi_ipc_get_xrootwin());
+ if(sentinel != 0)
+ {
+// XChangeProperty(kvi_ipc_get_xdisplay(),sentinel,kvi_atom_ipc_remote_command,XA_STRING,8,
+// PropModeReplace,(const unsigned char *)message,kvi_strLen(message));
+ kvi_ipcSetRemoteCommand(sentinel,message);
+
+ XEvent e;
+ kvi_memset(&e,0,sizeof(XEvent));
+ e.type = ClientMessage;
+ e.xclient.display = kvi_ipc_get_xdisplay();
+ e.xclient.window = sentinel;
+ e.xclient.message_type = kvi_atom_ipc_remote_message;
+ e.xclient.format = 8;
+
+ XSendEvent(kvi_ipc_get_xdisplay(),sentinel,False,0,&e);
+
+ return true;
+ }
+ #endif //!COMPILE_NO_X
+#endif //!COMPILE_ON_WINDOWS
+ return false;
+ }
+
+
+ //////////////////////////////////////////////////////////////////////
+ // class KviIpcSentinel
+ //
+ // hidden sentinel of ipc messages
+ //
+ //////////////////////////////////////////////////////////////////////
+
+ KviIpcSentinel::KviIpcSentinel()
+ : QWidget(0,"kvirc_ipc_sentinel")
+ {
+#ifdef COMPILE_ON_WINDOWS
+ setCaption("kvirc_ipc_sentinel");
+#else //!COMPILE_ON_WINDOWS
+ #ifndef COMPILE_NO_X
+ kvi_ipcLoadAtoms();
+
+ XChangeProperty(kvi_ipc_get_xdisplay(),winId(),kvi_atom_ipc_sentinel_window,XA_STRING,8,
+ PropModeReplace,(const unsigned char *)kvi_sentinel_id.ptr(),kvi_sentinel_id.len());
+
+ kvi_ipcSetRemoteCommand(winId(),"");
+ #endif //!COMPILE_NO_X
+#endif //!COMPILE_ON_WINDOWS
+
+ move(-50,-50);
+ resize(1,1);
+ hide();
+
+ }
+
+ KviIpcSentinel::~KviIpcSentinel()
+ {
+ }
+
+#ifdef COMPILE_ON_WINDOWS
+
+ bool KviIpcSentinel::winEvent(MSG * msg)
+ {
+ if(msg->message == WM_COPYDATA)
+ {
+ COPYDATASTRUCT * cpd = (COPYDATASTRUCT *)msg->lParam;
+ if(cpd)
+ {
+ if(cpd->dwData == KVI_WINDOWS_IPC_MESSAGE)
+ {
+ debug((char *)(cpd->lpData));
+ if(g_pApp)g_pApp->ipcMessage((char *)(cpd->lpData));
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+#else //!COMPILE_ON_WINDOWS
+ #ifndef COMPILE_NO_X
+ bool KviIpcSentinel::x11Event(XEvent *e)
+ {
+ if(e->type == ClientMessage)
+ {
+ if((e->xclient.message_type = kvi_atom_ipc_remote_message) && (e->xclient.format == 8))
+ {
+ Atom type;
+ int format;
+ unsigned long nItems,after;
+ unsigned char * data = 0;
+ KviStr szData;
+ if(XGetWindowProperty(kvi_ipc_get_xdisplay(),winId(),kvi_atom_ipc_remote_command,0,1024,FALSE,XA_STRING,
+ &type,&format,&nItems,&after,&data) == Success)
+ {
+ if((type == XA_STRING) && (format == 8) && (nItems > 0) && data)
+ {
+ szData = (char *)data;
+ XFree((char *)data);
+ }
+ }
+ kvi_ipcSetRemoteCommand(winId(),"");
+
+ if(g_pApp)g_pApp->ipcMessage(szData.ptr());
+ return true;
+ }
+ }
+ return false;
+ }
+ #endif //!COMPILE_NO_X
+#endif //!COMPILE_ON_WINDOWS
+
+ #include "kvi_ipc.moc"
+
+#endif
diff --git a/src/kvirc/kernel/kvi_ipc.h b/src/kvirc/kernel/kvi_ipc.h
new file mode 100644
index 00000000..432c2615
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ipc.h
@@ -0,0 +1,75 @@
+#ifndef _KVI_IPC_H_
+#define _KVI_IPC_H_
+//=============================================================================
+//
+// File : kvi_ipc.h
+// Creation date : Tue Apr 10 2001 15:04:45 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+
+#ifndef COMPILE_NO_IPC
+
+ #include "kvi_string.h"
+
+ #include <qwidget.h>
+
+#ifdef COMPILE_ON_WINDOWS
+ #include <winsock2.h>
+ #include <windows.h>
+#else //!COMPILE_ON_WINDOWS
+ #ifndef COMPILE_NO_X
+ #ifdef COMPILE_USE_QT4
+ // We need this to be included BEFORE X11/Xlib.h
+ // because of preprocessor constant collisions...
+ #include <qcoreevent.h>
+ #endif
+ #include "kvi_xlib.h" // for XEvent
+ #endif //!COMPILE_NO_X
+#endif //!COMPILE_ON_WINDOWS
+
+ //////////////////////////////////////////////////////////////////////
+ // class KviIpcSentinel
+ //
+ //////////////////////////////////////////////////////////////////////
+
+ class KVIRC_API KviIpcSentinel : public QWidget
+ {
+ Q_OBJECT
+ public:
+ KviIpcSentinel();
+ ~KviIpcSentinel();
+ protected: // protected members
+#ifdef COMPILE_ON_WINDOWS
+ virtual bool winEvent(MSG * msg);
+#else //!COMPILE_ON_WINDOWS
+ #ifndef COMPILE_NO_X
+ virtual bool x11Event(XEvent *e);
+ #endif //!COMPILE_NO_X
+#endif //!COMPILE_ON_WINDOWS
+ };
+
+#endif //!COMPILE_NO_IPC
+
+
+
+#endif //_KVI_IPC_H_
diff --git a/src/kvirc/kernel/kvi_ircconnection.cpp b/src/kvirc/kernel/kvi_ircconnection.cpp
new file mode 100644
index 00000000..4bf59055
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircconnection.cpp
@@ -0,0 +1,1354 @@
+//=============================================================================
+//
+// File : kvi_ircconnection.cpp
+// Created on Mon 03 May 2004 01:45:42 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectiontarget.h"
+#include "kvi_ircconnectionuserinfo.h"
+#include "kvi_ircconnectionserverinfo.h"
+#include "kvi_ircconnectionstatedata.h"
+#include "kvi_ircconnectionantictcpflooddata.h"
+#include "kvi_ircconnectionnetsplitdetectordata.h"
+#include "kvi_ircconnectionasyncwhoisdata.h"
+#include "kvi_ircconnectionstatistics.h"
+#include "kvi_irclink.h"
+#include "kvi_ircsocket.h"
+#include "kvi_locale.h"
+#include "kvi_ircserverdb.h"
+#include "kvi_proxydb.h"
+#include "kvi_error.h"
+#include "kvi_out.h"
+#include "kvi_options.h"
+#include "kvi_console.h"
+#include "kvi_netutils.h"
+#include "kvi_internalcmd.h"
+#include "kvi_frame.h"
+#include "kvi_mexlinkfilter.h"
+#include "kvi_garbage.h"
+#include "kvi_malloc.h"
+#include "kvi_memmove.h"
+#include "kvi_debug.h"
+#include "kvi_channel.h"
+#include "kvi_query.h"
+#include "kvi_app.h"
+#include "kvi_databuffer.h"
+#include "kvi_notifylist.h"
+#include "kvi_dns.h"
+#include "kvi_defaults.h"
+#include "kvi_sparser.h"
+#include "kvi_ircdatastreammonitor.h"
+#include "kvi_databuffer.h"
+#include "kvi_lagmeter.h"
+#include "kvi_kvs_eventtriggers.h"
+#include "kvi_kvs_script.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_useridentity.h"
+
+#include <qtimer.h>
+#include <qtextcodec.h>
+
+extern KVIRC_API KviIrcServerDataBase * g_pIrcServerDataBase;
+extern KVIRC_API KviProxyDataBase * g_pProxyDataBase;
+extern KVIRC_API KviGarbageCollector * g_pGarbageCollector;
+
+KviIrcConnection::KviIrcConnection(KviIrcContext * pContext,KviIrcConnectionTarget * pTarget,KviUserIdentity * pIdentity)
+: QObject()
+{
+ m_bIdentdAttached = false;
+ m_pContext = pContext;
+ m_pConsole = pContext->console();
+ m_pFrame = m_pConsole->frame();
+ m_pTarget = pTarget;
+ m_pUserIdentity = pIdentity;
+ m_pChannelList = new KviPointerList<KviChannel>;
+ m_pChannelList->setAutoDelete(false);
+ m_pQueryList = new KviPointerList<KviQuery>;
+ m_pQueryList->setAutoDelete(false);
+ m_pLink = new KviIrcLink(this);
+ m_pUserDataBase = new KviIrcUserDataBase();
+ m_pUserInfo = new KviIrcConnectionUserInfo();
+ m_pServerInfo = new KviIrcConnectionServerInfo();
+ m_pStateData = new KviIrcConnectionStateData();
+ m_pAntiCtcpFloodData = new KviIrcConnectionAntiCtcpFloodData();
+ m_pNetsplitDetectorData = new KviIrcConnectionNetsplitDetectorData();
+ m_pAsyncWhoisData = new KviIrcConnectionAsyncWhoisData();
+ m_pStatistics = new KviIrcConnectionStatistics();
+ m_pNotifyListTimer = 0;
+ m_pNotifyListManager = 0;
+ m_pLocalhostDns = 0;
+ m_pLagMeter = 0;
+ m_eState = Idle;
+ setupTextCodec();
+}
+
+KviIrcConnection::~KviIrcConnection()
+{
+ if(m_bIdentdAttached) g_pFrame->executeInternalCommand(KVI_INTERNALCOMMAND_IDENT_STOP);
+ m_bIdentdAttached = false;
+ if(m_pLocalhostDns)
+ {
+ QObject::disconnect(m_pLocalhostDns,SIGNAL(lookupDone(KviDns *)),0,0);
+ if(m_pLocalhostDns->isRunning())
+ {
+ g_pGarbageCollector->collect(m_pLocalhostDns);
+ } else {
+ delete m_pLocalhostDns;
+ }
+ }
+
+
+ if(m_pNotifyListTimer)
+ {
+ delete m_pNotifyListTimer;
+ m_pNotifyListTimer = 0;
+ }
+ if(m_pNotifyListManager)
+ {
+ delete m_pNotifyListManager; // destroy this before the userDb
+ m_pNotifyListManager = 0;
+ }
+ if(m_pLagMeter)
+ {
+ delete m_pLagMeter;
+ m_pLagMeter = 0;
+ }
+ delete m_pLink; // <-- this MAY trigger a linkTerminated() or something like this!
+ delete m_pChannelList;
+ delete m_pQueryList;
+ delete m_pTarget;
+ delete m_pUserDataBase;
+ delete m_pUserInfo;
+ delete m_pServerInfo;
+ delete m_pStateData;
+ delete m_pAntiCtcpFloodData;
+ delete m_pNetsplitDetectorData;
+ delete m_pAsyncWhoisData;
+ delete m_pStatistics;
+ delete m_pUserIdentity;
+}
+
+void KviIrcConnection::setEncoding(const QString &szEncoding)
+{
+ QTextCodec * c = KviLocale::codecForName(szEncoding.latin1());
+ if(c == m_pTextCodec)return;
+ if(!c)
+ {
+ m_pConsole->output(KVI_OUT_SYSTEMERROR,__tr2qs("Failed to set the encoding to %Q: mapping not available."),&szEncoding);
+ return;
+ }
+ QString tmp = c->name();
+ for(KviChannel * ch = m_pChannelList->first();ch;ch = m_pChannelList->next())
+ {
+ if((ch->textCodec() != c) && (ch->textCodec() != ch->defaultTextCodec())) // actually not using the default!
+ {
+ ch->forceTextCodec(c);
+ if(_OUTPUT_VERBOSE)ch->output(KVI_OUT_VERBOSE,__tr2qs("Changed text encoding to %Q"),&tmp);
+ }
+ }
+ for(KviQuery * q = m_pQueryList->first();q;q = m_pQueryList->next())
+ {
+ if((q->textCodec() != c) && (q->textCodec() != q->defaultTextCodec())) // actually not using the default!
+ {
+ q->forceTextCodec(c);
+ if(_OUTPUT_VERBOSE)q->output(KVI_OUT_VERBOSE,__tr2qs("Changed text encoding to %Q"),&tmp);
+ }
+ }
+ m_pTextCodec = c;
+ m_pConsole->setTextEncoding(szEncoding);
+}
+
+void KviIrcConnection::setupTextCodec()
+{
+ // grab the codec: first look it up in the server data
+ m_pTextCodec = 0;
+ if(!m_pTarget->server()->encoding().isEmpty())
+ {
+ m_pTextCodec = KviLocale::codecForName(m_pTarget->server()->encoding().latin1());
+ if(!m_pTextCodec)debug("KviIrcConnection: can't find QTextCodec for encoding %s",m_pTarget->server()->encoding().utf8().data());
+ }
+ if(!m_pTextCodec)
+ {
+ // try the network
+ if(!m_pTarget->network()->encoding().isEmpty())
+ {
+ m_pTextCodec = KviLocale::codecForName(m_pTarget->network()->encoding().latin1());
+ if(!m_pTextCodec)debug("KviIrcConnection: can't find QTextCodec for encoding %s",m_pTarget->network()->encoding().utf8().data());
+ }
+ }
+ if(!m_pTextCodec)
+ {
+ m_pTextCodec = KviApp::defaultTextCodec();
+ }
+ m_pConsole->setTextEncoding(QString(m_pTextCodec->name()));
+}
+
+KviQCString KviIrcConnection::encodeText(const QString &szText)
+{
+ if(!m_pTextCodec)return szText.utf8();
+ return m_pTextCodec->fromUnicode(szText);
+}
+
+QString KviIrcConnection::decodeText(const char * szText)
+{
+ if(!m_pTextCodec)return QString(szText);
+ return m_pTextCodec->toUnicode(szText);
+}
+
+void KviIrcConnection::serverInfoReceived(const QString &szServerName,const QString &szUserModes,const QString &szChanModes)
+{
+ serverInfo()->setName(szServerName);
+ serverInfo()->setSupportedUserModes(szUserModes);
+ serverInfo()->setSupportedChannelModes(szChanModes);
+ m_pConsole->updateCaption(); // for server name
+ m_pFrame->childConnectionServerInfoChange(this);
+}
+
+const QString & KviIrcConnection::currentServerName()
+{
+ return serverInfo()->name();
+}
+
+const QString & KviIrcConnection::currentNickName()
+{
+ return userInfo()->nickName();
+}
+
+const QString & KviIrcConnection::currentUserName()
+{
+ return userInfo()->userName();
+}
+
+KviIrcServer * KviIrcConnection::server()
+{
+ return m_pTarget->server();
+}
+
+KviProxy * KviIrcConnection::proxy()
+{
+ return m_pTarget->proxy();
+}
+
+const QString & KviIrcConnection::networkName()
+{
+ return m_pTarget->networkName();
+}
+
+KviIrcSocket * KviIrcConnection::socket()
+{
+ return m_pLink->socket();
+}
+
+void KviIrcConnection::abort()
+{
+ // this WILL trigger linkAttemptFailed() or linkTerminated()
+ m_pLink->abort();
+}
+
+void KviIrcConnection::start()
+{
+ m_eState = Connecting;
+ if(KVI_OPTION_BOOL(KviOption_boolUseIdentService) && KVI_OPTION_BOOL(KviOption_boolUseIdentServiceOnlyOnConnect))
+ {
+ g_pFrame->executeInternalCommand(KVI_INTERNALCOMMAND_IDENT_START);
+ m_bIdentdAttached=true;
+ }
+ m_pLink->start();
+}
+
+void KviIrcConnection::linkEstabilished()
+{
+ m_eState = Connected;
+
+ // setup reasonable defaults before notifying anyone
+ m_pStatistics->setConnectionStartTime(kvi_unixTime());
+ m_pStatistics->setLastMessageTime(kvi_unixTime());
+ m_pServerInfo->setName(target()->server()->m_szHostname);
+
+ if(KviPointerList<KviIrcDataStreamMonitor> * l = context()->monitorList())
+ {
+ for(KviIrcDataStreamMonitor *m =l->first();m;m =l->next())
+ m->connectionInitiated();
+ }
+
+ context()->connectionEstabilished();
+
+ // Ok...we're loggin in now
+ resolveLocalHost();
+ loginToIrcServer();
+}
+
+void KviIrcConnection::linkTerminated()
+{
+ if(m_bIdentdAttached)
+ {
+ g_pFrame->executeInternalCommand(KVI_INTERNALCOMMAND_IDENT_STOP);
+ m_bIdentdAttached=false;
+ }
+ m_eState = Idle;
+
+ if(m_pNotifyListManager)
+ {
+ delete m_pNotifyListManager;
+ m_pNotifyListManager = 0;
+ }
+
+ if(m_pLagMeter)
+ {
+ delete m_pLagMeter;
+ m_pLagMeter = 0;
+ }
+
+ if(KviPointerList<KviIrcDataStreamMonitor> * l = context()->monitorList())
+ {
+ for(KviIrcDataStreamMonitor *m =l->first();m;m =l->next())
+ m->connectionTerminated();
+ }
+
+ // Prepare data for an eventual reconnect
+ context()->connectionTerminated();
+}
+
+void KviIrcConnection::linkAttemptFailed(int iError)
+{
+ if(m_bIdentdAttached)
+ {
+ g_pFrame->executeInternalCommand(KVI_INTERNALCOMMAND_IDENT_STOP);
+ m_bIdentdAttached=false;
+ }
+ m_eState = Idle;
+ context()->connectionFailed(iError);
+}
+
+KviChannel * KviIrcConnection::findChannel(const QString &name)
+{
+ for(KviChannel * c = m_pChannelList->first();c;c = m_pChannelList->next())
+ {
+ if(KviQString::equalCI(name,c->windowName()))return c;
+ }
+ return 0;
+}
+
+int KviIrcConnection::getCommonChannels(const QString &nick,QString &szChansBuffer,bool bAddEscapeSequences)
+{
+ int count = 0;
+ for(KviChannel * c = m_pChannelList->first();c;c = m_pChannelList->next())
+ {
+ if(c->isOn(nick))
+ {
+ if(!szChansBuffer.isEmpty())szChansBuffer.append(", ");
+ char uFlag = c->getUserFlag(nick);
+ if(uFlag)
+ {
+ KviQString::appendFormatted(szChansBuffer,bAddEscapeSequences ? "%c\r!c\r%Q\r" : "%c%Q",uFlag,&(c->windowName()));
+ } else {
+ if(bAddEscapeSequences)KviQString::appendFormatted(szChansBuffer,"\r!c\r%Q\r",&(c->windowName()));
+ else szChansBuffer.append(c->windowName());
+ }
+ count++;
+ }
+ }
+ return count;
+}
+
+void KviIrcConnection::unhighlightAllChannels()
+{
+ for(KviChannel * c = m_pChannelList->first();c;c = m_pChannelList->next())
+ c->unhighlight();
+}
+
+void KviIrcConnection::unhighlightAllQueries()
+{
+ for(KviQuery * c = m_pQueryList->first();c;c = m_pQueryList->next())
+ c->unhighlight();
+}
+
+void KviIrcConnection::partAllChannels()
+{
+ for(KviChannel * c = m_pChannelList->first();c;c = m_pChannelList->next())
+ {
+ c->close();
+ }
+}
+
+void KviIrcConnection::closeAllChannels()
+{
+ while(m_pChannelList->first())
+ {
+ m_pFrame->closeWindow(m_pChannelList->first());
+ }
+}
+
+void KviIrcConnection::closeAllQueries()
+{
+ while(m_pQueryList->first())
+ {
+ m_pFrame->closeWindow(m_pQueryList->first());
+ }
+}
+
+KviChannel * KviIrcConnection::createChannel(const QString &szName)
+{
+ KviChannel * c = m_pContext->findDeadChannel(szName);
+ if(c)
+ {
+ c->setAliveChan();
+ if(!KVI_OPTION_BOOL(KviOption_boolCreateMinimizedChannels))
+ {
+ c->raise();
+ c->setFocus();
+ }
+ } else {
+ c = new KviChannel(m_pFrame,m_pConsole,szName);
+ m_pFrame->addWindow(c,!KVI_OPTION_BOOL(KviOption_boolCreateMinimizedChannels));
+ if(KVI_OPTION_BOOL(KviOption_boolCreateMinimizedChannels)) c->minimize();
+ }
+ return c;
+}
+
+KviQuery * KviIrcConnection::createQuery(const QString &szNick)
+{
+ KviQuery * q = m_pContext->findDeadQuery(szNick);
+ if(!q)
+ {
+ q = findQuery(szNick);
+ if(q)return q; // hm ?
+ }
+ if(q)
+ {
+ q->setAliveQuery();
+ if(!KVI_OPTION_BOOL(KviOption_boolCreateMinimizedQuery))
+ {
+ q->raise();
+ q->setFocus();
+ }
+ } else {
+ q = new KviQuery(m_pFrame,m_pConsole,szNick);
+ m_pFrame->addWindow(q,!KVI_OPTION_BOOL(KviOption_boolCreateMinimizedQuery));
+ if(KVI_OPTION_BOOL(KviOption_boolCreateMinimizedQuery))q->minimize();
+ }
+ return q;
+}
+
+KviQuery * KviIrcConnection::findQuery(const QString &name)
+{
+ for(KviQuery * c = m_pQueryList->first();c;c = m_pQueryList->next())
+ {
+ if(KviQString::equalCI(name,c->windowName()))return c;
+ }
+ return 0;
+}
+
+void KviIrcConnection::registerChannel(KviChannel * c)
+{
+ m_pChannelList->append(c);
+ if(KVI_OPTION_BOOL(KviOption_boolLogChannelHistory))
+ g_pApp->addRecentChannel(c->windowName(),m_pTarget->networkName());
+ emit(channelRegistered(c));
+ emit(chanListChanged());
+}
+
+void KviIrcConnection::unregisterChannel(KviChannel * c)
+{
+ m_pChannelList->removeRef(c);
+ emit(channelUnregistered(c));
+ emit(chanListChanged());
+}
+
+void KviIrcConnection::registerQuery(KviQuery * c)
+{
+ m_pQueryList->append(c);
+}
+
+
+void KviIrcConnection::unregisterQuery(KviQuery * c)
+{
+ if(m_pQueryList->removeRef(c))return;
+}
+
+void KviIrcConnection::keepChannelsOpenAfterDisconnect()
+{
+ while(KviChannel * c = m_pChannelList->first())
+ {
+ c->outputNoFmt(KVI_OUT_SOCKETERROR,__tr2qs("Connection to server lost"));
+ c->setDeadChan();
+ }
+}
+
+void KviIrcConnection::keepQueriesOpenAfterDisconnect()
+{
+ while(KviQuery * q = m_pQueryList->first())
+ {
+ q->outputNoFmt(KVI_OUT_SOCKETERROR,__tr2qs("Connection to server lost"));
+ q->setDeadQuery();
+ }
+}
+
+void KviIrcConnection::resurrectDeadQueries()
+{
+ while(KviQuery * q = m_pContext->firstDeadQuery())
+ {
+ q->outputNoFmt(KVI_OUT_SOCKETMESSAGE,__tr2qs("Connection to server established"));
+ q->setAliveQuery();
+ }
+}
+
+
+//=== Message send stuff ====================================================//
+// Max buffer that can be sent to an IRC server is 512 bytes
+// including CRLF. (ircd simply 'cuts' messages to 512 bytes
+// and discards the remainig part)
+// Note that 510 bytes of data is a reasonably long message :)
+//
+// 01234567890123456789012345678901234567890123456789
+// 01234567890123456789012345678901234567890123456789
+// 01234567890123456789012345678901234567890123456789
+// 01234567890123456789012345678901234567890123456789
+// 01234567890123456789012345678901234567890123456789
+// 01234567890123456789012345678901234567890123456789
+// 01234567890123456789012345678901234567890123456789
+// 01234567890123456789012345678901234567890123456789
+// 01234567890123456789012345678901234567890123456789
+// 01234567890123456789012345678901234567890123456789
+// 0123456789\r\n
+//
+// We keep a list of data to send , and flush it as soon as we can.
+//
+
+bool KviIrcConnection::sendFmtData(const char *fmt,...)
+{
+ KviDataBuffer * pData = new KviDataBuffer(512);
+ kvi_va_list(list);
+ kvi_va_start(list,fmt);
+ bool bTruncated;
+ //sprintf the buffer up to 512 chars (adds a CRLF too)
+ int iLen = kvi_irc_vsnprintf((char *)(pData->data()),fmt,list,&bTruncated);
+ kvi_va_end(list);
+ //adjust the buffer size
+ if(iLen < 512)pData->resize(iLen);
+ if(bTruncated)
+ {
+ if(!_OUTPUT_MUTE)
+ m_pConsole->outputNoFmt(KVI_OUT_SOCKETWARNING,__tr2qs("[LINK WARNING]: Socket message truncated to 512 bytes."));
+ }
+
+ // notify the monitors
+ if(KviPointerList<KviIrcDataStreamMonitor> * l = context()->monitorList())
+ {
+ for(KviIrcDataStreamMonitor *m = l->first();m;m = l->next())
+ m->outgoingMessage((const char *)(pData->data()),iLen - 2);
+ }
+
+ return m_pLink->sendPacket(pData);
+}
+
+bool KviIrcConnection::sendData(const char *buffer,int buflen)
+{
+ if(buflen < 0)buflen = (int)strlen(buffer);
+ if(buflen > 510)
+ {
+ buflen = 510;
+ if(!_OUTPUT_MUTE)
+ m_pConsole->outputNoFmt(KVI_OUT_SOCKETWARNING,__tr2qs("[LINK WARNING]: Socket message truncated to 512 bytes."));
+ }
+ KviDataBuffer * pData = new KviDataBuffer(buflen + 2);
+ kvi_memmove(pData->data(),buffer,buflen);
+ *(pData->data()+buflen)='\r';
+ *(pData->data()+buflen+1)='\n';
+
+ // notify the monitors
+ if(KviPointerList<KviIrcDataStreamMonitor> * l = context()->monitorList())
+ {
+ for(KviIrcDataStreamMonitor *m = l->first();m;m = l->next())
+ m->outgoingMessage((const char *)(pData->data()),buflen);
+ }
+
+ return m_pLink->sendPacket(pData);
+}
+
+//==============================================================================================
+// notify list management
+//==============================================================================================
+
+void KviIrcConnection::delayedStartNotifyList()
+{
+ // start the notify list in 15 seconds
+ // We have this delay to wait an eventual RPL_PROTOCTL from the server
+ // telling us that the WATCH notify list method is supported
+ __range_invalid(m_pNotifyListTimer);
+
+ if(m_pNotifyListTimer)delete m_pNotifyListTimer;
+ m_pNotifyListTimer = new QTimer();
+ connect(m_pNotifyListTimer,SIGNAL(timeout()),this,SLOT(restartNotifyList()));
+ m_pNotifyListTimer->start(15000,true);
+
+ // This delay is large enough to fire after the MOTD has been sent,
+ // even on the weirdest network.
+ // If there is no MOTD, this timer will fire after 15 secs,
+ // If there is a MOTD , restartNotifyList() will be triggered by RPL_ENDOFMOTD and
+ // will kill the timer before it has fired.
+}
+
+void KviIrcConnection::endOfMotdReceived()
+{
+ // if the timer is still there running then just
+ if(m_pNotifyListTimer)restartNotifyList();
+}
+
+void KviIrcConnection::restartNotifyList()
+{
+ if(m_pNotifyListTimer)
+ {
+ delete m_pNotifyListTimer;
+ m_pNotifyListTimer = 0;
+ }
+
+ // clear it
+ if(m_pNotifyListManager)
+ {
+ m_pNotifyListManager->stop(); // may need to remove watch entries
+ delete m_pNotifyListManager;
+ m_pNotifyListManager = 0;
+ }
+
+ if(!KVI_OPTION_BOOL(KviOption_boolUseNotifyList))return;
+
+ if(serverInfo()->supportsWatchList() && KVI_OPTION_BOOL(KviOption_boolUseWatchListIfAvailable))
+ {
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_VERBOSE,__tr2qs("The server seems to support the WATCH notify list method, will try to use it"));
+ m_pNotifyListManager = new KviWatchNotifyListManager(this);
+ } else {
+ if(KVI_OPTION_BOOL(KviOption_boolUseIntelligentNotifyListManager))
+ {
+ m_pNotifyListManager = new KviIsOnNotifyListManager(this);
+ } else {
+ m_pNotifyListManager = new KviStupidNotifyListManager(this);
+ }
+ }
+ m_pNotifyListManager->start();
+}
+
+void KviIrcConnection::restartLagMeter()
+{
+ if(m_pLagMeter)
+ {
+ delete m_pLagMeter;
+ m_pLagMeter = 0;
+ }
+ if(!KVI_OPTION_BOOL(KviOption_boolUseLagMeterEngine))return;
+ m_pLagMeter = new KviLagMeter(this);
+}
+
+void KviIrcConnection::resolveLocalHost()
+{
+ QString szIp;
+
+ if(!socket()->getLocalHostIp(szIp,server()->isIpV6()))
+ {
+ bool bGotIp = false;
+ if(!KVI_OPTION_STRING(KviOption_stringLocalHostIp).isEmpty())
+ {
+#ifdef COMPILE_IPV6_SUPPORT
+ if(server()->isIpV6())
+ {
+ if(KviNetUtils::isValidStringIp_V6(KVI_OPTION_STRING(KviOption_stringLocalHostIp)))bGotIp = true;
+ } else {
+#endif
+ if(KviNetUtils::isValidStringIp(KVI_OPTION_STRING(KviOption_stringLocalHostIp)))bGotIp = true;
+#ifdef COMPILE_IPV6_SUPPORT
+ }
+#endif
+ }
+ if(bGotIp)
+ {
+ m_pUserInfo->setLocalHostIp(KVI_OPTION_STRING(KviOption_stringLocalHostIp));
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_SYSTEMWARNING,__tr2qs("Can't resolve local host address, using user supplied one (%Q)"),
+ &(m_pUserInfo->localHostIp()));
+
+ } else {
+ // FIXME : Maybe check for IPv6 here too ?
+ m_pUserInfo->setLocalHostIp("127.0.0.1");
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_SYSTEMWARNING,__tr2qs("Can't resolve local host address, using default 127.0.0.1"),
+ &(m_pUserInfo->localHostIp()));
+ }
+ } else {
+ m_pUserInfo->setLocalHostIp(szIp);
+ if(!_OUTPUT_QUIET)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Local host address is %Q"),
+ &(m_pUserInfo->localHostIp()));
+ }
+
+ // For now this is the only we know
+ m_pUserInfo->setHostName(m_pUserInfo->localHostIp());
+ m_pUserInfo->setHostIp(m_pUserInfo->localHostIp());
+}
+
+void KviIrcConnection::changeAwayState(bool bAway)
+{
+ if(bAway)m_pUserInfo->setAway();
+ else m_pUserInfo->setBack();
+
+ m_pConsole->updateCaption();
+ m_pFrame->childConnectionAwayStateChange(this);
+
+ emit awayStateChanged();
+}
+
+void KviIrcConnection::userInfoReceived(const QString &szUserName,const QString &szHostName)
+{
+ userInfo()->setUserName(szUserName);
+ QString szUnmaskedHost = m_pUserInfo->unmaskedHostName();
+ // Update the user entry
+ KviIrcUserEntry * e = userDataBase()->find(userInfo()->nickName());
+ if(e) // should be there! (we have the permanent entry in the notify list view)
+ {
+ e->setUser(szUserName);
+ if(!szHostName.isEmpty())e->setHost(szHostName);
+ } // else buuug
+
+ if(szHostName.isEmpty())return; // nothing to do anyway
+
+ if(KviQString::equalCS(m_pUserInfo->hostName(),szHostName))return; // again nothing to do
+
+ static bool warned_once = false;
+
+ if(!warned_once)
+ {
+ if(!(m_pUserInfo->hostName().isEmpty() || KviQString::equalCS(m_pUserInfo->hostName(),m_pUserInfo->localHostIp())))
+ {
+ // ok, something weird is probably going on
+ // is is non-empty and it is NOT the IP address we have set
+ // at connection startup...
+ // ...the server (or more likely the bouncer) must have changed his mind...
+ if(!_OUTPUT_MUTE)
+ {
+ m_pConsole->output(KVI_OUT_SYSTEMWARNING,__tr2qs("The server seems to have changed the idea about the local hostname"));
+ m_pConsole->output(KVI_OUT_SYSTEMWARNING,__tr2qs("You're probably using a broken bouncer or maybe something weird is happening on the IRC server"));
+ }
+ warned_once = true;
+ }
+ }
+
+ // set it
+ m_pUserInfo->setHostName(szHostName);
+
+ bool bChangeIp = true;
+
+ // if we don't have any routable IP yet, then it is worth to lookup the new hostname
+
+#ifdef COMPILE_IPV6_SUPPORT
+ if((KviNetUtils::isValidStringIp(m_pUserInfo->hostIp()) &&
+ KviNetUtils::isRoutableIpString(m_pUserInfo->hostIp())) ||
+ KviNetUtils::isValidStringIp_V6(m_pUserInfo->hostIp()))
+#else
+ if((KviNetUtils::isValidStringIp(m_pUserInfo->hostIp()) &&
+ KviNetUtils::isRoutableIpString(m_pUserInfo->hostIp())))
+#endif
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolDccGuessIpFromServerWhenLocalIsUnroutable) &&
+ KVI_OPTION_BOOL(KviOption_boolDccBrokenBouncerHack))
+ {
+ if(!_OUTPUT_MUTE)
+ m_pConsole->outputNoFmt(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Here goes your \"broken bouncer hack\": The server has changed the hostname but I'll ignore the IP address change"));
+ bChangeIp = false;
+ }
+ }
+
+ if(bChangeIp)
+ {
+ // lookup the new hostname then...
+#ifdef COMPILE_IPV6_SUPPORT
+ if(KviNetUtils::isValidStringIp(szHostName) || KviNetUtils::isValidStringIp_V6(szHostName))
+#else
+ if(KviNetUtils::isValidStringIp(szHostName))
+#endif
+ {
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("The local IP address as seen by the IRC server is %Q"),&szHostName);
+ m_pUserInfo->setHostIp(szHostName);
+ } else
+#ifdef COMPILE_IPV6_SUPPORT
+ if(KviNetUtils::isValidStringIp(szUnmaskedHost) || KviNetUtils::isValidStringIp_V6(szUnmaskedHost))
+#else
+ if(KviNetUtils::isValidStringIp(szUnmaskedHost))
+#endif
+ {
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("The local IP address as seen by the IRC server is %Q"),&szUnmaskedHost);
+ m_pUserInfo->setHostIp(szUnmaskedHost);
+
+ } else {
+ // look it up too
+ if(m_pLocalhostDns)delete m_pLocalhostDns; // it could be only another local host lookup
+ m_pLocalhostDns = new KviDns();
+ connect(m_pLocalhostDns,SIGNAL(lookupDone(KviDns *)),this,SLOT(hostNameLookupTerminated(KviDns *)));
+
+ if(!m_pLocalhostDns->lookup(szHostName,KviDns::Any))
+ {
+ if(!_OUTPUT_MUTE)
+ {
+ // don't change the string to aid the translators
+ QString szTmp = __tr2qs("Can't start the DNS slave thread");
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Unable to resolve the local hostname as seen by the IRC server: %Q"),&szTmp);
+ }
+ delete m_pLocalhostDns;
+ m_pLocalhostDns = 0;
+ } else {
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Looking up the local hostname as seen by the IRC server (%Q)"),&szHostName);
+ }
+ }
+ }
+}
+
+void KviIrcConnection::hostNameLookupTerminated(KviDns *pDns)
+{
+ //
+ // This is called when our hostname lookup terminates
+ //
+ if(!m_pLocalhostDns)
+ {
+ debug("Something weird is happening: pDns != 0 but m_pLocalhostDns == 0 :/");
+ return;
+ }
+
+ if(m_pLocalhostDns->state() != KviDns::Success)
+ {
+ QString szErr = KviError::getDescription(m_pLocalhostDns->error());
+ if(!m_pUserInfo->hostIp().isEmpty())
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Unable to resolve the local hostname as seen by the IRC server: %Q, using previously resolved %Q"),
+ &szErr,&(m_pUserInfo->hostIp()));
+ else
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Unable to resolve the local hostname as seen by the IRC server: %Q"),
+ &szErr);
+ } else {
+ QString szIpAddr = m_pLocalhostDns->firstIpAddress();
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Local hostname as seen by the IRC server resolved to %Q"),&szIpAddr);
+ m_pUserInfo->setHostIp(m_pLocalhostDns->firstIpAddress());
+ }
+
+ delete m_pLocalhostDns;
+ m_pLocalhostDns = 0;
+}
+
+void KviIrcConnection::loginToIrcServer()
+{
+ KviIrcServer * pServer = target()->server();
+ KviIrcNetwork * pNet = target()->network();
+
+ // Username
+ pServer->m_szUser.stripWhiteSpace();
+ if(!pServer->m_szUser.isEmpty())
+ {
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_VERBOSE,__tr2qs("Using server specific username (%Q)"),&(pServer->m_szUser));
+ } else {
+ if(!pNet->userName().isEmpty())
+ {
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_VERBOSE,__tr2qs("Using network specific username (%Q)"),&(pNet->userName()));
+ pServer->m_szUser = pNet->userName();
+ } else {
+ pServer->m_szUser = KVI_OPTION_STRING(KviOption_stringUsername);
+ }
+ }
+
+ pServer->m_szUser.stripWhiteSpace();
+ if(pServer->m_szUser.isEmpty())pServer->m_szUser = KVI_DEFAULT_USERNAME;
+
+ // For now this is the only we know
+ m_pUserInfo->setUserName(pServer->m_szUser);
+ m_pServerInfo->setName(pServer->m_szHostname);
+
+ // Nick stuff
+ pServer->m_szNick.stripWhiteSpace();
+ if(pServer->m_pReconnectInfo)
+ {
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_VERBOSE,__tr2qs("Using reconnect specific nickname (%Q)"),&(pServer->m_pReconnectInfo->m_szNick));
+ m_pUserInfo->setNickName(pServer->m_pReconnectInfo->m_szNick);
+ m_pStateData->setLoginNickIndex(0);
+ }else if(!pServer->m_szNick.isEmpty())
+ {
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_VERBOSE,__tr2qs("Using server specific nickname (%Q)"),&(pServer->m_szNick));
+ m_pUserInfo->setNickName(pServer->m_szNick);
+ m_pStateData->setLoginNickIndex(0);
+ } else {
+ if(!pNet->nickName().isEmpty())
+ {
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_VERBOSE,__tr2qs("Using network specific nickname (%Q)"),&(pNet->nickName()));
+ m_pUserInfo->setNickName(pNet->nickName());
+ m_pStateData->setLoginNickIndex(0);
+ } else {
+ KVI_OPTION_STRING(KviOption_stringNickname1).stripWhiteSpace();
+ if(KVI_OPTION_STRING(KviOption_stringNickname1).isEmpty())
+ KVI_OPTION_STRING(KviOption_stringNickname1) = KVI_DEFAULT_NICKNAME1;
+ m_pUserInfo->setNickName(KVI_OPTION_STRING(KviOption_stringNickname1));
+ m_pStateData->setLoginNickIndex(1);
+ }
+ }
+
+ // Real name
+ pServer->m_szRealName.stripWhiteSpace();
+ if(!pServer->m_szRealName.isEmpty())
+ {
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_VERBOSE,__tr2qs("Using server specific real name (%Q)"),
+ &(pServer->m_szRealName));
+ m_pUserInfo->setRealName(pServer->m_szRealName);
+ } else {
+ if(!pNet->realName().isEmpty())
+ {
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_VERBOSE,__tr2qs("Using network specific real name (%Q)"),
+ &(pNet->realName()));
+ m_pUserInfo->setRealName(pNet->realName());
+ } else {
+ m_pUserInfo->setRealName(KVI_OPTION_STRING(KviOption_stringRealname));
+ }
+ }
+
+ // FIXME: The server's encoding!
+ setupTextCodec();
+ KviQCString szNick = encodeText(m_pUserInfo->nickName()); // never empty
+ KviQCString szUser = encodeText(m_pUserInfo->userName()); // never empty
+ KviQCString szReal = encodeText(m_pUserInfo->realName()); // may be empty
+
+ if(!szReal.data())szReal = "";
+
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Logging in as %Q!%Q :%Q"),
+ &(m_pUserInfo->nickName()),&(m_pUserInfo->userName()),&(m_pUserInfo->realName()));
+
+
+ // spity, 27.03.2005: follow the RFC2812 suggested order for connection registration
+ // first the PASS, then NICK and then USER
+
+ // The pass ?
+ pServer->m_szPass.stripWhiteSpace();
+ if(!pServer->m_szPass.isEmpty())
+ {
+ KviStr szHidden;
+ int pLen = pServer->m_szPass.length();
+ for(int i=0;i<pLen;i++)szHidden.append('*');
+
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_VERBOSE,__tr2qs("Sending %s as password"),szHidden.ptr());
+
+ // The colon should allow user to use passwords with whitespaces.
+ // Non-whitespace passwords are unaffected.
+ if(!sendFmtData("PASS :%s",encodeText(pServer->m_szPass).data()))
+ {
+ // disconnected in the meantime
+ return;
+ }
+ }
+
+
+ if(!sendFmtData("NICK %s",szNick.data()))
+ {
+ // disconnected :(
+ return;
+ }
+
+ QString szGenderTag;
+ if(KVI_OPTION_BOOL(KviOption_boolPrependGenderInfoToRealname) && !KVI_OPTION_STRING(KviOption_stringCtcpUserInfoGender).isEmpty())
+ {
+ szGenderTag.append(KVI_TEXT_COLOR);
+ if(KVI_OPTION_STRING(KviOption_stringCtcpUserInfoGender).startsWith("m",false))
+ {
+ szGenderTag.append("1");
+ } else if(KVI_OPTION_STRING(KviOption_stringCtcpUserInfoGender).startsWith("f",false))
+ {
+ szGenderTag.append("2");
+ }
+ szGenderTag.append(KVI_TEXT_RESET);
+ szReal.prepend(KviQString::toUtf8(szGenderTag));
+ }
+
+ if(!sendFmtData("USER %s 0 %s :%s",szUser.data(),
+ KviQString::toUtf8(pServer->m_szHostname).data(),szReal.data()))
+ {
+ // disconnected in the meantime!
+ return;
+ }
+
+ // permanent info in the user database
+ m_pConsole->notifyListView()->join(m_pUserInfo->nickName(),"*","*");
+
+ // set own avatar if we have it
+ KviIrcUserEntry * e = userDataBase()->find(userInfo()->nickName());
+ if(e) // should be there!
+ {
+ if(!e->avatar())
+ {
+ KviAvatar * av = m_pConsole->defaultAvatarFromOptions();
+ if(av)
+ {
+ e->setAvatar(av);
+ m_pConsole->notifyListView()->avatarChanged(userInfo()->nickName());
+ }
+ }
+ } // else buuug
+
+ if(KVI_OPTION_STRING(KviOption_stringCtcpUserInfoGender).startsWith("m",false)){
+ e->setGender(KviIrcUserEntry::Male);
+ } else if(KVI_OPTION_STRING(KviOption_stringCtcpUserInfoGender).startsWith("f",false)){
+ e->setGender(KviIrcUserEntry::Female);
+ }
+
+ // on connect stuff ?
+
+ QString tmp = pNet->onConnectCommand();
+ tmp.stripWhiteSpace();
+ if(!tmp.isEmpty())
+ {
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_VERBOSE,__tr2qs("Executing scheduled network specific \"on connect\" commands"));
+ KviKvsScript::run(tmp,m_pConsole);
+ }
+
+ tmp = pServer->onConnectCommand();
+ tmp.stripWhiteSpace();
+ if(!tmp.isEmpty())
+ {
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_VERBOSE,__tr2qs("Executing scheduled server specific \"on connect\" commands"));
+ KviKvsScript::run(tmp,m_pConsole);
+ }
+
+ tmp = m_pUserIdentity->onConnectCommand();
+ tmp.stripWhiteSpace();
+ if(!tmp.isEmpty())
+ {
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_VERBOSE,__tr2qs("Executing scheduled identity specific \"on connect\" commands"));
+ KviKvsScript::run(tmp,m_pConsole);
+ }
+
+ // and wait for the server to agree...
+}
+
+void KviIrcConnection::nickChange(const QString &szNewNick)
+{
+ // FIXME: should the new nickname be decoded in some way ?
+ m_pConsole->notifyListView()->nickChange(m_pUserInfo->nickName(),szNewNick);
+ m_pUserInfo->setNickName(szNewNick);
+ m_pConsole->output(KVI_OUT_NICK,__tr2qs("You have changed your nickname to %Q"),&szNewNick);
+ m_pConsole->updateCaption();
+ m_pFrame->childConnectionNickNameChange(this);
+ emit nickNameChanged();
+ g_pApp->addRecentNickname(szNewNick);
+}
+
+bool KviIrcConnection::changeUserMode(char mode,bool bSet)
+{
+ __range_valid(m_pConnectionInfo);
+ if(bSet)
+ {
+ if(m_pUserInfo->hasUserMode(mode))return false;
+ m_pUserInfo->addUserMode(mode);
+ } else {
+ if(!m_pUserInfo->hasUserMode(mode))return false;
+ m_pUserInfo->removeUserMode(mode);
+ }
+ m_pConsole->updateCaption();
+ m_pFrame->childConnectionUserModeChange(this);
+ emit userModeChanged();
+ return true;
+}
+
+void KviIrcConnection::loginComplete(const QString &szNickName)
+{
+ if(context()->state() == KviIrcContext::Connected)return;
+
+ context()->loginComplete();
+
+ if(m_bIdentdAttached)
+ {
+ g_pFrame->executeInternalCommand(KVI_INTERNALCOMMAND_IDENT_STOP);
+ m_bIdentdAttached=false;
+ }
+
+ if(szNickName != m_pUserInfo->nickName())
+ {
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("The server refused the suggested nickname (%s) and named you %s instead"),
+ m_pUserInfo->nickName().utf8().data(),szNickName.utf8().data());
+ m_pConsole->notifyListView()->nickChange(m_pUserInfo->nickName(),szNickName);
+ m_pUserInfo->setNickName(szNickName);
+ }
+
+ g_pApp->addRecentNickname(szNickName);
+
+ bool bHaltOutput = false;
+ bHaltOutput = KVS_TRIGGER_EVENT_0_HALTED(KviEvent_OnIrc,m_pConsole);
+
+ if(!bHaltOutput)
+ m_pConsole->outputNoFmt(KVI_OUT_IRC,__tr2qs("Login operations complete, happy ircing!"));
+
+ resurrectDeadQueries();
+
+ // on connect stuff ?
+ QString tmp = target()->network()->onLoginCommand();
+ tmp.stripWhiteSpace();
+ if(!tmp.isEmpty())
+ {
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_VERBOSE,__tr2qs("Executing scheduled network specific \"on login\" commands"));
+ KviKvsScript::run(tmp,m_pConsole);
+ }
+
+ tmp = target()->server()->onLoginCommand();
+ tmp.stripWhiteSpace();
+ if(!tmp.isEmpty())
+ {
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_VERBOSE,__tr2qs("Executing scheduled server specific \"on login\" commands"));
+ KviKvsScript::run(tmp,m_pConsole);
+ }
+
+ tmp = m_pUserIdentity->onLoginCommand();
+ tmp.stripWhiteSpace();
+ if(!tmp.isEmpty())
+ {
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_VERBOSE,__tr2qs("Executing scheduled identity specific \"on login\" commands"));
+ KviKvsScript::run(tmp,m_pConsole);
+ }
+
+ // Set the configured umode
+ KviStr modeStr = server()->initUMode();
+
+ if(modeStr.isEmpty())modeStr = KVI_OPTION_STRING(KviOption_stringDefaultUserMode);
+
+ if(!modeStr.isEmpty())
+ {
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_VERBOSE,__tr2qs("Setting configured user mode"));
+ sendFmtData("MODE %s +%s",encodeText(QString(m_pUserInfo->nickName())).data(),modeStr.ptr());
+ }
+
+ delayedStartNotifyList();
+ restartLagMeter();
+
+ if(KVI_OPTION_BOOL(KviOption_boolShowChannelsJoinOnIrc))
+ m_pFrame->executeInternalCommand(KVI_INTERNALCOMMAND_CHANNELSJOIN_OPEN);
+
+
+ // join saved channels
+ QString szChannels,szProtectedChannels,szPasswords,szCurPass,szCurChan;
+
+ if(!(m_pStateData->commandToExecAfterConnect().isEmpty()))
+ {
+ KviStr tmp = m_pStateData->commandToExecAfterConnect();
+ KviKvsScript::run(tmp.ptr(),m_pConsole);
+ }
+
+ if(target()->server()->m_pReconnectInfo)
+ {
+ if(!target()->server()->m_pReconnectInfo->m_szJoinChannels.isEmpty())
+ sendFmtData("JOIN %s",encodeText(target()->server()->m_pReconnectInfo->m_szJoinChannels).data());
+
+ KviQuery * query;
+
+ for(QStringList::Iterator it = target()->server()->m_pReconnectInfo->m_szOpenQueryes.begin();
+ it != target()->server()->m_pReconnectInfo->m_szOpenQueryes.end();it++)
+ {
+ QString szNick = *it;
+ query = findQuery(szNick);
+ if(!query) {
+ query = createQuery(szNick);
+ QString user;
+ QString host;
+ KviIrcUserDataBase * db = userDataBase();
+ if(db)
+ {
+ KviIrcUserEntry * e = db->find(szNick);
+ if(e)
+ {
+ user = e->user();
+ host = e->host();
+ }
+ }
+ query->setTarget(szNick,user,host);
+ }
+ query->autoRaise();
+ query->setFocus();
+ }
+ delete target()->server()->m_pReconnectInfo;
+ target()->server()->m_pReconnectInfo=0;
+ }else {
+ if(target()->network()->autoJoinChannelList())
+ {
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_VERBOSE,__tr2qs("Auto-joining network specific channels"));
+
+ QStringList * l = target()->network()->autoJoinChannelList();
+ if(l->count()!=0)
+ {
+ for ( QStringList::Iterator it = l->begin(); it != l->end(); ++it ) {
+
+ szCurPass=(*it).section(':',1);
+ if(szCurPass.isEmpty())
+ {
+ if(!szChannels.isEmpty())
+ szChannels.append(",");
+ szCurChan = (*it).section(':',0,0);
+ if(!(szCurChan[0]=='#' || szCurChan[0]=='&' || szCurChan[0]=='!'))
+ szCurChan.prepend('#');
+ szChannels.append(szCurChan);
+ } else {
+ if(!szProtectedChannels.isEmpty())
+ szProtectedChannels.append(",");
+ szCurChan = (*it).section(':',0,0);
+ if(!(szCurChan[0]=='#' || szCurChan[0]=='&' || szCurChan[0]=='!'))
+ szCurChan.prepend('#');
+ szProtectedChannels.append(szCurChan);
+ if(!szPasswords.isEmpty())
+ szPasswords.append(",");
+ szPasswords.append(szCurPass);
+ }
+ }
+ }
+ }
+
+ if(server()->autoJoinChannelList())
+ {
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_VERBOSE,__tr2qs("Auto-joining server specific channels"));
+
+ QStringList * l = server()->autoJoinChannelList();
+ if(l->count()!=0)
+ {
+ for ( QStringList::Iterator it = l->begin(); it != l->end(); ++it ) {
+ szCurPass=(*it).section(':',1);
+ if(szCurPass.isEmpty())
+ {
+ if(!szChannels.isEmpty())
+ szChannels.append(",");
+ szCurChan = (*it).section(':',0,0);
+ if(!(szCurChan[0]=='#' || szCurChan[0]=='&' || szCurChan[0]=='!'))
+ szCurChan.prepend(':');
+ szChannels.append(szCurChan);
+ } else {
+ if(!szProtectedChannels.isEmpty())
+ szProtectedChannels.append(",");
+ szCurChan = (*it).section(':',0,0);
+ if(!(szCurChan[0]=='#' || szCurChan[0]=='&' || szCurChan[0]=='!'))
+ szCurChan.prepend('#');
+ szProtectedChannels.append(szCurChan);
+ if(!szPasswords.isEmpty())
+ szPasswords.append(",");
+ szPasswords.append(szCurPass);
+ }
+ }
+ }
+ }
+
+ QString szCommand;
+ if( (!szChannels.isEmpty()) || (!szProtectedChannels.isEmpty()) )
+ {
+ szCommand.append(szProtectedChannels);
+ if(!szProtectedChannels.isEmpty() && !szChannels.isEmpty())
+ szCommand.append(',');
+ szCommand.append(szChannels);
+ szCommand.append(" ");
+ szCommand.append(szPasswords);
+
+ sendFmtData("JOIN %s",encodeText(szCommand).data());
+ }
+ }
+ // minimize after connect
+ if(KVI_OPTION_BOOL(KviOption_boolMinimizeConsoleAfterConnect))
+ m_pConsole->minimize();
+}
+
+void KviIrcConnection::incomingMessage(const char * message)
+{
+ // A message has arrived from the current server
+ // First of all , notify the monitors
+ if(KviPointerList<KviIrcDataStreamMonitor> * l = context()->monitorList())
+ {
+ for(KviIrcDataStreamMonitor *m = l->first();m;m = l->next())
+ {
+ m->incomingMessage(message);
+ }
+ }
+ // set the last message time
+ m_pStatistics->setLastMessageTime(kvi_unixTime());
+ // and pass it to the server parser for processing
+ g_pServerParser->parseMessage(message,this);
+}
+
+void KviIrcConnection::heartbeat(kvi_time_t tNow)
+{
+ if(m_eState == Connected)
+ {
+ if(!KVI_OPTION_BOOL(KviOption_boolDisableAwayListUpdates))
+ {
+ // update the channel WHO lists (fixes users away state)
+ // first of all, we send our request not more often than every 50 secs
+ if((tNow - stateData()->lastSentChannelWhoRequest()) > 50)
+ {
+ // we also make sure that the last sent request is older than
+ // the last received reply
+ if(stateData()->lastSentChannelWhoRequest() <= stateData()->lastReceivedChannelWhoReply())
+ {
+ // find the channel that has the older list now
+ kvi_time_t tOldest = tNow;
+ KviChannel * pOldest = 0;
+ for(KviChannel * pChan = m_pChannelList->first();pChan;pChan = m_pChannelList->next())
+ {
+ if(pChan->lastReceivedWhoReply() < tOldest)
+ {
+ pOldest = pChan;
+ tOldest = pChan->lastReceivedWhoReply();
+ }
+ }
+ // if the oldest chan who list is older than 150 secs, update it
+ if((tNow - tOldest) > 150)
+ {
+ // ok, sent the request for this channel
+ stateData()->setLastSentChannelWhoRequest(tNow);
+ QString szChanName = encodeText(pOldest->name());
+ if(_OUTPUT_PARANOIC)
+ console()->output(KVI_OUT_VERBOSE,__tr2qs("Updating away state for channel %Q"),&szChanName);
+ if(lagMeter())
+ {
+ KviStr tmp(KviStr::Format,"WHO %s",pOldest->name());
+ lagMeter()->lagCheckRegister(tmp.ptr(),70);
+ }
+ pOldest->setSentSyncWhoRequest();
+ if(!sendFmtData("WHO %s",encodeText(QString(pOldest->name())).data()))return;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/kvirc/kernel/kvi_ircconnection.h b/src/kvirc/kernel/kvi_ircconnection.h
new file mode 100644
index 00000000..fc6acf25
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircconnection.h
@@ -0,0 +1,282 @@
+#ifndef _KVI_IRCCONNECTION_H_
+#define _KVI_IRCCONNECTION_H_
+//=============================================================================
+//
+// File : kvi_ircconnection.h
+// Created on Mon 03 May 2004 01:45:42 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_qcstring.h"
+#include "kvi_pointerlist.h"
+#include "kvi_time.h"
+#include <qobject.h>
+
+class KviConsole;
+class KviIrcNetworkData;
+class KviIrcServer;
+class KviProxy;
+class KviIrcSocket;
+class KviIrcLink;
+class KviDataBuffer;
+class KviIrcContext;
+class KviFrame;
+class KviChannel;
+class KviQuery;
+class KviIrcConnectionTarget;
+class KviIrcUserDataBase;
+class KviIrcConnectionUserInfo;
+class KviIrcConnectionServerInfo;
+class KviIrcConnectionStateData;
+class KviIrcConnectionAntiCtcpFloodData;
+class KviIrcConnectionNetsplitDetectorData;
+class KviIrcConnectionAsyncWhoisData;
+class KviIrcConnectionStatistics;
+class KviLagMeter;
+class KviNotifyListManager;
+class KviDns;
+class KviUserIdentity;
+
+class QTimer;
+class QTextCodec;
+
+
+class KVIRC_API KviIrcConnection : public QObject
+{
+ friend class KviConsole;
+ friend class KviIrcContext;
+ friend class KviIrcLink;
+ friend class KviServerParser;
+ Q_OBJECT
+public:
+ // only KviConsole can create this
+ // pContext must NOT be null
+ // pTarget must NOT be null and must be allocated with new! this class takes the ownership
+ KviIrcConnection(KviIrcContext * pContext,KviIrcConnectionTarget * pTarget,KviUserIdentity * pIdentity);
+ ~KviIrcConnection();
+public:
+ enum State { Idle, Connecting, Connected };
+private:
+ KviFrame * m_pFrame; // shallow, never null
+ KviConsole * m_pConsole; // shallow, never null
+ KviIrcContext * m_pContext; // shallow, never null
+
+ State m_eState;
+ bool m_bIdentdAttached;
+
+ KviIrcConnectionTarget * m_pTarget; // owned, never null
+
+ KviIrcLink * m_pLink; // owned, never null
+
+ // The initial informations about the user we'll send out to the server
+ // Note that the ACTUAL user informations are in m_pUserInfo instead
+ KviUserIdentity * m_pUserIdentity; // owned, never null
+
+ // The ACTUAL user informations
+ KviIrcConnectionUserInfo * m_pUserInfo; // owned, never null
+ // The ACTUAL server informations
+ KviIrcConnectionServerInfo * m_pServerInfo; // owned, never null
+
+ KviIrcConnectionStateData * m_pStateData; // owned, never null
+
+ KviPointerList<KviChannel> * m_pChannelList; // owned, never null, elements shallow
+ KviPointerList<KviQuery> * m_pQueryList; // owned, never null, elements shallow
+
+ KviIrcUserDataBase * m_pUserDataBase; // owned, never null
+
+ KviNotifyListManager * m_pNotifyListManager; // owned, see restartNotifyList()
+ QTimer * m_pNotifyListTimer; // delayed startup timer for the notify lists
+
+ KviLagMeter * m_pLagMeter; // owned, may be null (when not running)
+
+ KviIrcConnectionAntiCtcpFloodData * m_pAntiCtcpFloodData; // owned, never null
+ KviIrcConnectionNetsplitDetectorData * m_pNetsplitDetectorData; // owned, never null
+ KviIrcConnectionAsyncWhoisData * m_pAsyncWhoisData; // owned, never null
+
+ KviIrcConnectionStatistics * m_pStatistics; // owned, never null
+
+ KviDns * m_pLocalhostDns; // FIXME: this should go to an aux structure
+
+ QTextCodec * m_pTextCodec; // connection codec: never null
+public:
+ // returns a pointer to the owning console
+ // the pointer is NEVER null
+ KviConsole * console(){ return m_pConsole; };
+ // never null
+ KviFrame * frame(){ return m_pFrame; };
+ // never null
+ KviIrcContext * context(){ return m_pContext; };
+ // forwarder from KviIrcConnectionTarget, never null
+ KVI_DEPRECATED KviIrcServer * server();
+ // forwarder from KviIrcConnectionTarget, may be null
+ KVI_DEPRECATED KviProxy * proxy();
+ // never null!
+ KviIrcConnectionTarget * target(){ return m_pTarget; };
+ // never null!
+ KviIrcLink * link(){ return m_pLink; };
+ // this should not be used...
+ KviIrcSocket * socket() KVI_DEPRECATED;
+ // the current state
+ State state(){ return m_eState; };
+ // forwarder from KviIrcConnectionTarget, always non-empty string
+ const QString & networkName();
+ // never null!
+ KviIrcUserDataBase * userDataBase(){ return m_pUserDataBase; };
+ // never null. Use #include "kvi_ircconnectionuserinfo.h"
+ KviIrcConnectionUserInfo * userInfo(){ return m_pUserInfo; };
+ // never null. Use #include "kvi_ircconnectionserverinfo.h"
+ KviIrcConnectionServerInfo * serverInfo(){ return m_pServerInfo; };
+ // never null. Use #include "kvi_ircconnectionstatedata.h"
+ KviIrcConnectionStateData * stateData(){ return m_pStateData; };
+ // never null. Use #include "kvi_ircconnectionantictcpflooddata.h"
+ KviIrcConnectionAntiCtcpFloodData * antiCtcpFloodData(){ return m_pAntiCtcpFloodData; };
+ // never null. Use #include "kvi_ircconnectionnetsplitdetectordata.h"
+ KviIrcConnectionNetsplitDetectorData * netsplitDetectorData(){ return m_pNetsplitDetectorData; };
+ // never null. Use #include "kvi_ircconnectionasyncwhoisdata.h"
+ KviIrcConnectionAsyncWhoisData * asyncWhoisData(){ return m_pAsyncWhoisData; };
+ // never null. Use #include "kvi_ircconnectionstatistics.h"
+ KviIrcConnectionStatistics * statistics(){ return m_pStatistics; };
+ // may be null
+ KviNotifyListManager * notifyListManager(){ return m_pNotifyListManager; };
+ // may be null (when not running)
+ KviLagMeter * lagMeter(){ return m_pLagMeter; };
+ // should be never null.. but if really everything goes wrong, it might be...
+ QTextCodec * textCodec(){ return m_pTextCodec; };
+public:
+ // helper (really common access to userInfo()->nickName())
+ const QString & currentNickName();
+ // helper (really common access to userInfo()->userName())
+ const QString & currentUserName();
+ // helper (really common access to serverInfo()->name())
+ const QString & currentServerName();
+
+ // world interface: the following three functions use m_pLink->sendPacket()
+ bool sendData(const char *buffer,int buflen = -1);
+ bool sendFmtData(const char *fmt,...);
+ //
+ // channel management
+ //
+ // ----> KviChannelManager ?
+ KviChannel * findChannel(const QString &name);
+ KviPointerList<KviChannel> * channelList(){ return m_pChannelList; };
+ int getCommonChannels(const QString &nick,QString &szChansBuffer,bool bAddEscapeSequences = true);
+ KviChannel * createChannel(const QString &name);
+ void registerChannel(KviChannel *c);
+ void unregisterChannel(KviChannel *c);
+ void keepChannelsOpenAfterDisconnect();
+ void closeAllChannels();
+ void setEncoding(const QString &szEncoding);
+public slots:
+ void partAllChannels();
+ void unhighlightAllChannels();
+ void unhighlightAllQueries();
+ void restartNotifyList();
+ void closeAllQueries();
+public:
+ //
+ // query management
+ //
+ // ----> KviQueryManager ?
+ KviQuery * findQuery(const QString &nick);
+ KviPointerList<KviQuery> * queryList(){ return m_pQueryList; };
+ KviQuery * createQuery(const QString &nick);
+ void registerQuery(KviQuery *q);
+ void unregisterQuery(KviQuery *q);
+ void keepQueriesOpenAfterDisconnect();
+ void resurrectDeadQueries();
+ void restartLagMeter();
+protected:
+ //
+ // notify list management
+ //
+ void delayedStartNotifyList();
+ //
+ // login operations
+ //
+ void resolveLocalHost();
+ void loginToIrcServer();
+protected:
+ //
+ // KviServerParser interface
+ //
+ // called to start the notify lists when RPL_ENDOFMOTD is received
+ void endOfMotdReceived();
+ // called when RPL_SERVINFO (004) is received
+ void serverInfoReceived(const QString &szServerName,const QString &szUserModes,const QString &szChanModes);
+ // called to update the away state
+ void changeAwayState(bool bAway);
+ // called on each JOIN (but meaningful almost only on the first one) (FIXME: call it also on other messages ?)
+ void userInfoReceived(const QString &szUserName,const QString &szHostName);
+ // called when NICK is received
+ void nickChange(const QString &szNewNick);
+ // called when MODE is received for each mode character
+ bool changeUserMode(char mode,bool bSet);
+ // called on the first numerics received from server
+ void loginComplete(const QString &szNickName);
+private slots:
+ void hostNameLookupTerminated(KviDns * pDns);
+protected:
+ //
+ // KviIrcContext interface
+ //
+ // this starts an asynchronous connection attempt
+ // you must return control to the qt core for the connection
+ // operations to be initiated
+ void start();
+ // kills any running connection or attempt
+ void abort();
+ // called once in a while (every 5 secs at the moment)
+ void heartbeat(kvi_time_t tNow);
+protected:
+ //
+ // KviIrcLink interface (down)
+ //
+ // this signals that the connection attempt has failed
+ void linkAttemptFailed(int iError);
+ // called by KviIrcLink when the socket state changes to Connected
+ void linkEstabilished();
+ // called by KviIrcLink when the socket state changes to Ready
+ void linkTerminated();
+public:
+ // this is called by KviIrcLink OR KviMexLinkFilter when a message is arriving from the server
+ // needs to be public because subclasses of KviMexLinkFilter may call it.
+ void incomingMessage(const char * message);
+signals:
+ void awayStateChanged();
+ void userModeChanged();
+ void nickNameChanged();
+ void channelRegistered(KviChannel*);
+ void channelUnregistered(KviChannel*);
+ void chanListChanged();
+public:
+ QString decodeText(const char * szText);
+ KviQCString encodeText(const QString &szText);
+private:
+ void setupTextCodec();
+};
+
+
+// TODO: KviIdentity
+
+
+#endif //!_KVI_IRCCONNECTION_H_
+
diff --git a/src/kvirc/kernel/kvi_ircconnectionantictcpflooddata.cpp b/src/kvirc/kernel/kvi_ircconnectionantictcpflooddata.cpp
new file mode 100644
index 00000000..edf42391
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircconnectionantictcpflooddata.cpp
@@ -0,0 +1,38 @@
+//=============================================================================
+//
+// File : kvi_ircconnectionantictcpflooddata.cpp
+// Created on Sat 26 Jun 2004 18:09:42 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_ircconnectionantictcpflooddata.h"
+
+KviIrcConnectionAntiCtcpFloodData::KviIrcConnectionAntiCtcpFloodData()
+{
+ m_tLastCtcp = 0;
+ m_uCtcpCount = 0;
+}
+
+KviIrcConnectionAntiCtcpFloodData::~KviIrcConnectionAntiCtcpFloodData()
+{
+}
+
diff --git a/src/kvirc/kernel/kvi_ircconnectionantictcpflooddata.h b/src/kvirc/kernel/kvi_ircconnectionantictcpflooddata.h
new file mode 100644
index 00000000..e691a806
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircconnectionantictcpflooddata.h
@@ -0,0 +1,48 @@
+#ifndef _KVI_IRCCONNECTIONANTICTCPFLOODDATA_H_
+#define _KVI_IRCCONNECTIONANTICTCPFLOODDATA_H_
+//=============================================================================
+//
+// File : kvi_ircconnectionantictcpflooddata.h
+// Created on Sat 26 Jun 2004 18:09:42 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_time.h"
+
+class KVIRC_API KviIrcConnectionAntiCtcpFloodData
+{
+public:
+ KviIrcConnectionAntiCtcpFloodData();
+ ~KviIrcConnectionAntiCtcpFloodData();
+protected:
+ // ctcp antiflood mechanism
+ kvi_time_t m_tLastCtcp; // the time we have received the last "may flood" ctcp request
+ unsigned int m_uCtcpCount; // the ctcp counter for the antiflooder
+public:
+ kvi_time_t lastCtcpTime(){ return m_tLastCtcp; };
+ unsigned int ctcpCount(){ return m_uCtcpCount; };
+ void setLastCtcpTime(kvi_time_t tLastCtcp){ m_tLastCtcp = tLastCtcp; };
+ void increaseCtcpCount(){ m_uCtcpCount++; };
+ void setCtcpCount(unsigned int uCtcpCount){ m_uCtcpCount = uCtcpCount; };
+};
+
+
+#endif //!_KVI_IRCCONNECTIONANTICTCPFLOODDATA_H_
diff --git a/src/kvirc/kernel/kvi_ircconnectionasyncwhoisdata.cpp b/src/kvirc/kernel/kvi_ircconnectionasyncwhoisdata.cpp
new file mode 100644
index 00000000..fce0a23e
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircconnectionasyncwhoisdata.cpp
@@ -0,0 +1,81 @@
+//=============================================================================
+//
+// File : kvi_ircconnectionasyncwhoisdata.cpp
+// Created on Sat 26 Jun 2004 19:40:20 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_ircconnectionasyncwhoisdata.h"
+#include "kvi_kvs_script.h"
+
+KviAsyncWhoisInfo::KviAsyncWhoisInfo()
+{
+ pCallback = 0;
+ pMagic = 0;
+}
+
+KviAsyncWhoisInfo::~KviAsyncWhoisInfo()
+{
+ if(pCallback)delete pCallback;
+ if(pMagic)delete pMagic;
+}
+
+KviIrcConnectionAsyncWhoisData::KviIrcConnectionAsyncWhoisData()
+{
+ m_pWhoisInfoList = 0;
+}
+
+KviIrcConnectionAsyncWhoisData::~KviIrcConnectionAsyncWhoisData()
+{
+ if(m_pWhoisInfoList)delete m_pWhoisInfoList;
+}
+
+void KviIrcConnectionAsyncWhoisData::add(KviAsyncWhoisInfo * i)
+{
+ if(!m_pWhoisInfoList)
+ {
+ m_pWhoisInfoList = new KviPointerList<KviAsyncWhoisInfo>;
+ m_pWhoisInfoList->setAutoDelete(true);
+ }
+ m_pWhoisInfoList->append(i);
+}
+
+KviAsyncWhoisInfo * KviIrcConnectionAsyncWhoisData::lookup(const QString &nick)
+{
+ if(!m_pWhoisInfoList)return 0;
+ for(KviAsyncWhoisInfo * i = m_pWhoisInfoList->first();i;i = m_pWhoisInfoList->next())
+ {
+ if(KviQString::equalCI(nick,i->szNick))return i;
+ }
+ return 0;
+}
+
+void KviIrcConnectionAsyncWhoisData::remove(KviAsyncWhoisInfo * i)
+{
+ if(!m_pWhoisInfoList)return;
+ m_pWhoisInfoList->removeRef(i);
+ if(m_pWhoisInfoList->isEmpty())
+ {
+ delete m_pWhoisInfoList;
+ m_pWhoisInfoList = 0;
+ }
+}
diff --git a/src/kvirc/kernel/kvi_ircconnectionasyncwhoisdata.h b/src/kvirc/kernel/kvi_ircconnectionasyncwhoisdata.h
new file mode 100644
index 00000000..c623f64e
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircconnectionasyncwhoisdata.h
@@ -0,0 +1,72 @@
+#ifndef _KVI_IRCCONNECTIONASYNCWHOISDATA_H_
+#define _KVI_IRCCONNECTIONASYNCWHOISDATA_H_
+//=============================================================================
+//
+// File : kvi_ircconnectionasyncwhoisdata.h
+// Created on Sat 26 Jun 2004 19:40:20 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_pointerlist.h"
+
+class KviWindow;
+class KviKvsScript;
+class KviKvsVariant;
+
+class KVIRC_API KviAsyncWhoisInfo
+{
+public:
+ QString szNick;
+ QString szUser;
+ QString szHost;
+ QString szReal;
+ QString szServer;
+ QString szIdle;
+ QString szSignon;
+ QString szChannels;
+ QString szSpecial;
+ KviKvsScript * pCallback;
+ KviKvsVariant * pMagic;
+ QString szCode; // <-- kill this when KVS is hardwired!
+ QString szMagic; // <-- kill this when KVS is hardwired!
+ KviWindow * pWindow;
+public:
+ KviAsyncWhoisInfo();
+ ~KviAsyncWhoisInfo();
+};
+
+
+
+class KVIRC_API KviIrcConnectionAsyncWhoisData
+{
+public:
+ KviIrcConnectionAsyncWhoisData();
+ ~KviIrcConnectionAsyncWhoisData();
+protected:
+ KviPointerList<KviAsyncWhoisInfo> * m_pWhoisInfoList; // awhois pending stuff
+public:
+ void add(KviAsyncWhoisInfo * i);
+ KviAsyncWhoisInfo * lookup(const QString &nick);
+ void remove(KviAsyncWhoisInfo * i);
+};
+
+#endif //!_KVI_IRCCONNECTIONASYNCWHOISDATA_H_
diff --git a/src/kvirc/kernel/kvi_ircconnectionnetsplitdetectordata.cpp b/src/kvirc/kernel/kvi_ircconnectionnetsplitdetectordata.cpp
new file mode 100644
index 00000000..10771328
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircconnectionnetsplitdetectordata.cpp
@@ -0,0 +1,37 @@
+//=============================================================================
+//
+// File : kvi_ircconnectionnetsplitdetectordata.cpp
+// Created on Sat 26 Jun 2004 18:20:58 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_ircconnectionnetsplitdetectordata.h"
+
+KviIrcConnectionNetsplitDetectorData::KviIrcConnectionNetsplitDetectorData()
+{
+ m_tLastNetsplitOnQuit = 0;
+}
+
+KviIrcConnectionNetsplitDetectorData::~KviIrcConnectionNetsplitDetectorData()
+{
+}
+
diff --git a/src/kvirc/kernel/kvi_ircconnectionnetsplitdetectordata.h b/src/kvirc/kernel/kvi_ircconnectionnetsplitdetectordata.h
new file mode 100644
index 00000000..3aa96528
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircconnectionnetsplitdetectordata.h
@@ -0,0 +1,46 @@
+#ifndef _KVI_IRCCONNECTIONNETSPLITDETECTORDATA_H_
+#define _KVI_IRCCONNECTIONNETSPLITDETECTORDATA_H_
+//=============================================================================
+//
+// File : kvi_ircconnectionnetsplitdetectordata.h
+// Created on Sat 26 Jun 2004 18:20:58 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_time.h"
+
+class KVIRC_API KviIrcConnectionNetsplitDetectorData
+{
+public:
+ KviIrcConnectionNetsplitDetectorData();
+ ~KviIrcConnectionNetsplitDetectorData();
+protected:
+ QString m_szLastNetsplitOnQuitReason;
+ kvi_time_t m_tLastNetsplitOnQuit;
+public:
+ const QString & lastNetsplitOnQuitReason(){ return m_szLastNetsplitOnQuitReason; };
+ void setLastNetsplitOnQuitReason(const QString &szReason){ m_szLastNetsplitOnQuitReason = szReason; };
+ kvi_time_t lastNetsplitOnQuitTime(){ return m_tLastNetsplitOnQuit; };
+ void setLastNetsplitOnQuitTime(kvi_time_t t){ m_tLastNetsplitOnQuit = t; };
+};
+
+#endif //!_KVI_IRCCONNECTIONNETSPLITDETECTORDATA_H_
diff --git a/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp b/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp
new file mode 100644
index 00000000..e057aa09
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircconnectionserverinfo.cpp
@@ -0,0 +1,285 @@
+//=============================================================================
+//
+// File : kvi_ircconnectionserverinfo.cpp
+// Created on Tue 22 Jun 2004 03:57:32 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_ircconnectionserverinfo.h"
+#include "kvi_locale.h"
+#include "kvi_malloc.h"
+#include "kvi_ircuserdb.h"
+
+KviIrcConnectionServerInfo::KviIrcConnectionServerInfo()
+{
+ // default assumptions
+ m_szSupportedChannelTypes = "#&!+";
+ m_szSupportedModePrefixes = "@+";
+ m_szSupportedModeFlags = "ov";
+ m_pModePrefixTable = 0;
+ buildModePrefixTable();
+ m_bSupportsModesIe = true;
+ m_bSupportsWatchList = false;
+ m_bSupportsCodePages = false;
+ m_iMaxTopicLen=-1;
+ m_szListModes="";
+ m_szPlainModes="";
+ m_iMaxModeChanges=3;
+ m_pServInfo = new KviBasicIrcServerInfo();
+}
+
+KviIrcConnectionServerInfo::~KviIrcConnectionServerInfo()
+{
+ if(m_pServInfo) delete m_pServInfo;
+ if(m_pModePrefixTable) kvi_free(m_pModePrefixTable);
+}
+
+void KviIrcConnectionServerInfo::setSupportedChannelModes(const QString &szSupportedChannelModes)
+{
+ int pos=-1;
+
+ pos=szSupportedChannelModes.find(',');
+ if(pos>=0) m_szListModes=szSupportedChannelModes.left(pos);
+
+ pos=szSupportedChannelModes.findRev(',');
+ if(pos>=0) m_szPlainModes=szSupportedChannelModes.right(szSupportedChannelModes.length()+pos-1);
+
+ m_szSupportedChannelModes = szSupportedChannelModes;
+ m_bSupportsModesIe = (szSupportedChannelModes.contains('e') && szSupportedChannelModes.contains('I'));
+
+ QChar* aux=(QChar*)szSupportedChannelModes.ucs2();
+ while(aux->unicode())
+ {
+ if(!m_szSupportedChannelModes.contains(*aux))
+ m_szSupportedChannelModes.append(*aux);
+ aux++;
+ }
+}
+
+void KviIrcConnectionServerInfo::setSupportedModePrefixes(const QString &szSupportedModePrefixes,const QString &szSupportedModeFlags)
+{
+ m_szSupportedModeFlags = szSupportedModeFlags;
+ m_szSupportedModePrefixes = szSupportedModePrefixes;
+ buildModePrefixTable();
+}
+
+void KviIrcConnectionServerInfo::buildModePrefixTable()
+{
+ if(m_pModePrefixTable) kvi_free(m_pModePrefixTable);
+ const QChar * cPrefix = KviQString::nullTerminatedArray(m_szSupportedModePrefixes);
+ const QChar * cFlag = KviQString::nullTerminatedArray(m_szSupportedModeFlags);
+ if(!cPrefix || !cFlag)return; // eh ?
+
+ m_uPrefixes=QMIN(m_szSupportedModePrefixes.length(),m_szSupportedModePrefixes.length());
+ m_pModePrefixTable=(kvi_u32_t*)kvi_malloc(sizeof(kvi_u32_t)*3*m_uPrefixes);
+
+ unsigned short uPrefix,uFlag;
+
+ // Pragma: FIXME: The whole mode handling needs rethinking!
+ // Alexey: FIXED: rethinked:)
+ // Pragma: LOL :DDDD
+ int i=0;
+ while( (uPrefix = cPrefix->unicode()) && (uFlag = cFlag->unicode()) && i<m_uPrefixes*3)
+ {
+ m_pModePrefixTable[i]=uPrefix;
+ m_pModePrefixTable[i+1]=uFlag;
+ switch(uFlag)
+ {
+ case 'o': m_pModePrefixTable[i+2] = KVI_USERFLAG_OP;
+ break;
+ case 'v': m_pModePrefixTable[i+2] = KVI_USERFLAG_VOICE;
+ break;
+ case 'h': m_pModePrefixTable[i+2] = KVI_USERFLAG_HALFOP;
+ break;
+ case 'a': m_pModePrefixTable[i+2] = KVI_USERFLAG_CHANADMIN;
+ break;
+ case 'u': m_pModePrefixTable[i+2] = KVI_USERFLAG_USEROP;
+ break;
+ case 'q': m_pModePrefixTable[i+2] = KVI_USERFLAG_CHANOWNER;
+ break;
+ default:
+ m_pModePrefixTable[i+2]=0;
+ break;
+ }
+ i+=3;
+ cPrefix++;
+ cFlag++;
+ }
+}
+
+bool KviIrcConnectionServerInfo::isSupportedModePrefix(QChar c)
+{
+ if(!m_pModePrefixTable) return false;
+ for(int i=0;i<m_uPrefixes;i++)
+ {
+ if(m_pModePrefixTable[i*3]==c.unicode()) return true;
+ }
+ return false;
+}
+
+bool KviIrcConnectionServerInfo::isSupportedModeFlag(QChar c)
+{
+ if(!m_pModePrefixTable) return false;
+ for(int i=0;i<m_uPrefixes;i++)
+ {
+ if(m_pModePrefixTable[(i*3)+1]==c.unicode()) return true;
+ }
+ return false;
+}
+
+QChar KviIrcConnectionServerInfo::modePrefixChar(kvi_u32_t flag)
+{
+ if(!m_pModePrefixTable) return QChar(0);
+ for(int i=0;i<m_uPrefixes;i++)
+ {
+ if(m_pModePrefixTable[i*3+2] & flag) return QChar(m_pModePrefixTable[i*3]);
+ }
+ return QChar(0);
+}
+
+QChar KviIrcConnectionServerInfo::modeFlagChar(kvi_u32_t flag)
+{
+ if(!m_pModePrefixTable) return QChar(0);
+ for(int i=0;i<m_uPrefixes;i++)
+ {
+ if(m_pModePrefixTable[i*3+2] & flag ) return QChar(m_pModePrefixTable[i*3+1]);
+ }
+ return QChar(0);
+}
+
+kvi_u32_t KviIrcConnectionServerInfo::modeFlagFromPrefixChar(QChar c)
+{
+ if(!m_pModePrefixTable) return 0;
+ for(int i=0;i<m_uPrefixes;i++)
+ {
+ if(m_pModePrefixTable[i*3]==c.unicode()) return m_pModePrefixTable[i*3+2];
+ }
+ return 0;
+}
+
+kvi_u32_t KviIrcConnectionServerInfo::modeFlagFromModeChar(QChar c)
+{
+ if(!m_pModePrefixTable) return 0;
+ for(int i=0;i<m_uPrefixes;i++)
+ {
+ if(m_pModePrefixTable[i*3+1]==c.unicode()) return m_pModePrefixTable[i*3+2];
+ }
+ return 0;
+}
+
+void KviIrcConnectionServerInfo::setServerVersion(const QString & version)
+{
+ if(m_pServInfo) delete m_pServInfo;
+ if(version.contains("unreal",false))
+ m_pServInfo = new KviUnrealIrcServerInfo(version);
+ else if(version.contains("bahamut",false))
+ m_pServInfo = new KviBahamutIrcServerInfo(version);
+ else if(version.contains("hyperion",false))
+ m_pServInfo = new KviHyperionIrcServerInfo(version);
+ else
+ m_pServInfo = new KviBasicIrcServerInfo(version);
+}
+
+
+KviBasicIrcServerInfo::KviBasicIrcServerInfo(const QString & version)
+{
+ m_szServerVersion = version;
+}
+
+KviBasicIrcServerInfo::~KviBasicIrcServerInfo()
+{
+}
+
+const QString & KviBasicIrcServerInfo::getChannelModeDescription(QChar mode)
+{
+ QString tmp=getCustomChannelModeDescription(mode);
+ if(tmp.isNull()) return getBasicChannelModeDescription(mode);
+ return KviQString::empty;
+}
+
+const QString & KviBasicIrcServerInfo::getUserModeDescription(QChar mode)
+{
+ QString tmp=getCustomUserModeDescription(mode);
+ if(tmp.isNull()) return getBasicUserModeDescription(mode);
+ return KviQString::empty;
+}
+
+const QString & KviBasicIrcServerInfo::getBasicChannelModeDescription(QChar mode)
+{
+ switch(mode.unicode())
+ {
+ case 'o': return __tr2qs("Channel operators"); break;
+ case 'v': return __tr2qs("Voiced users"); break;
+ case 'h': return __tr2qs("Half-operators");break;
+ case 'b': return __tr2qs("Ban masks"); break;
+ case 'c': return __tr2qs("Color free (no ANSI colors)"); break;
+ case 'e': return __tr2qs("Ban exception masks"); break;
+ case 'I': return __tr2qs("Invite exception masks or forbid /INVITE"); break;
+ case 's': return __tr2qs("Secret"); break;
+ case 'p': return __tr2qs("Private"); break;
+ case 't': return __tr2qs("Topic change restricted"); break;
+ case 'i': return __tr2qs("Invite only"); break;
+ case 'n': return __tr2qs("No external messages"); break;
+ case 'a': return __tr2qs("Anonymous or protected user"); break;
+ case 'q': return __tr2qs("Quiet or channel owner"); break;
+ case 'l': return __tr2qs("Limited number of users"); break;
+ case 'k': return __tr2qs("Key"); break;
+ case 'm': return __tr2qs("Moderated"); break;
+ case 'r': return __tr2qs("Registered"); break;
+ case 'G': return __tr2qs("Censor swear words"); break;
+ case 'M': return __tr2qs("Impossible to speak and change nick if not authenticated with NickServ"); break;
+ case 'N': return __tr2qs("Impossible to change nick if not authenticated with NickServ"); break;
+ case 'R': return __tr2qs("Only registered nicks can join"); break;
+ case 'Q': return __tr2qs("No kicks able (unless U-Line)"); break;
+ case 'O': return __tr2qs("IRC-Op only channel"); break;
+ case 'A': return __tr2qs("Server/Network/Tech Admin only channel"); break;
+ case 'K': return __tr2qs("Forbid /KNOCK"); break;
+ case 'S': return __tr2qs("Strip colors"); break;
+ case 'L': return __tr2qs("Redirect on channel full"); break;
+ case 'C': return __tr2qs("Forbid channel CTCPs"); break;
+ case 'u': return __tr2qs("User-operators OR Auditorium: /NAMES and /WHO show only ops"); break;
+ case '7': return __tr2qs("Only 7-bit letters in nicknames allowed"); break;
+ case 'x': return __tr2qs("Impossible to use both 7-bit and 8-bit letters in nicknames"); break;
+ }
+ return KviQString::empty;
+}
+
+const QString & KviBasicIrcServerInfo::getBasicUserModeDescription(QChar mode)
+{
+ switch(mode.unicode())
+ {
+ case 'o': return __tr2qs("o: IRC operator (OPER)"); break;
+ case 'O': return __tr2qs("O: Local IRC operator (LOCOP)"); break;
+ case 'i': return __tr2qs("i: Invisible"); break;
+ case 'w': return __tr2qs("w: Recipient for WALLOPS messages"); break;
+ case 'r': return __tr2qs("r: User with restricted connection (or recipient for messages about rejected bots)"); break;
+ case 's': return __tr2qs("s: Recipient for server notices"); break;
+ case 'z': return __tr2qs("z: Recipient for oper wallop messages"); break;
+ case 'c': return __tr2qs("c: Recipient for cconn messages"); break;
+ case 'k': return __tr2qs("k: Recipient for server kill messages"); break;
+ case 'f': return __tr2qs("f: Recipient for full server notices"); break;
+ case 'y': return __tr2qs("y: Spy :)"); break;
+ case 'd': return __tr2qs("d: Obscure 'DEBUG' flag"); break;
+ case 'n': return __tr2qs("n: Recipient for nick changes"); break;
+ }
+ return KviQString::empty;
+}
diff --git a/src/kvirc/kernel/kvi_ircconnectionserverinfo.h b/src/kvirc/kernel/kvi_ircconnectionserverinfo.h
new file mode 100644
index 00000000..8ab89434
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircconnectionserverinfo.h
@@ -0,0 +1,141 @@
+#ifndef _KVI_IRCCONNECTIONSERVERINFO_H_
+#define _KVI_IRCCONNECTIONSERVERINFO_H_
+//=============================================================================
+//
+// File : kvi_ircconnectionserverinfo.h
+// Created on Tue 22 Jun 2004 03:57:32 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_inttypes.h"
+
+class KVIRC_API KviBasicIrcServerInfo
+{
+protected:
+ QString m_szServerVersion;
+public:
+ KviBasicIrcServerInfo(const QString & version = KviQString::empty);
+ ~KviBasicIrcServerInfo();
+protected:
+ virtual const QString & getCustomChannelModeDescription(QChar mode) { return KviQString::empty; };
+ virtual const QString & getCustomUserModeDescription(QChar mode) { return KviQString::empty; };
+private:
+ const QString & getBasicChannelModeDescription(QChar mode);
+ const QString & getBasicUserModeDescription(QChar mode);
+public:
+ const QString & getChannelModeDescription(QChar mode);
+ const QString & getUserModeDescription(QChar mode);
+ virtual char getRegisterModeChar() { return 0; };
+};
+
+class KVIRC_API KviUnrealIrcServerInfo : public KviBasicIrcServerInfo
+{
+public:
+ KviUnrealIrcServerInfo(const QString & version = KviQString::empty)
+ :KviBasicIrcServerInfo(version) {;};
+ virtual char getRegisterModeChar() { return 'r'; };
+};
+
+class KVIRC_API KviBahamutIrcServerInfo : public KviBasicIrcServerInfo
+{
+public:
+ KviBahamutIrcServerInfo(const QString & version = KviQString::empty)
+ :KviBasicIrcServerInfo(version) {;};
+ virtual char getRegisterModeChar() { return 'r'; };
+};
+
+class KVIRC_API KviHyperionIrcServerInfo : public KviBasicIrcServerInfo
+{
+public:
+ KviHyperionIrcServerInfo(const QString & version = KviQString::empty)
+ :KviBasicIrcServerInfo(version) {;};
+ virtual char getRegisterModeChar() { return 'e'; };
+};
+
+class KVIRC_API KviIrcConnectionServerInfo
+{
+ friend class KviConsole; // for now
+ friend class KviServerParser;
+ friend class KviIrcConnection;
+protected:
+ KviIrcConnectionServerInfo();
+ ~KviIrcConnectionServerInfo();
+private:
+ KviBasicIrcServerInfo * m_pServInfo;
+ QString m_szName; // the most actual server name (may be the one we specify or the one that the server wants to be known as)
+ QString m_szSupportedUserModes; // the supported user modes
+ QString m_szSupportedChannelModes; // the supported channel modes
+ QString m_szSupportedModePrefixes; // the actually used mode prefixes @+
+ kvi_u32_t * m_pModePrefixTable; // the mode prefixes above in a table
+ unsigned int m_uPrefixes;
+ QString m_szSupportedModeFlags; // the actually used mode flags ov
+ QString m_szSupportedChannelTypes; // the supported channel types
+ bool m_bSupportsModesIe; // supports the channel modes I and e ?
+ bool m_bSupportsWatchList; // supports the watch list ?
+ bool m_bSupportsCodePages; // supports the /CODEPAGE command ?
+ int m_iMaxTopicLen;
+ int m_iMaxModeChanges;
+ QString m_szListModes;
+ QString m_szPlainModes;
+public:
+ char registerModeChar() { return m_pServInfo ? m_pServInfo->getRegisterModeChar() : 0; };
+ const QString & name(){ return m_szName; };
+ const QString & supportedUserModes(){ return m_szSupportedUserModes; };
+ const QString & supportedChannelModes(){ return m_szSupportedChannelModes; };
+ const QString & supportedChannelTypes(){ return m_szSupportedChannelTypes; };
+ const QString & supportedModePrefixes(){ return m_szSupportedModePrefixes; };
+ const QString & supportedModeFlags(){ return m_szSupportedModeFlags; };
+ const QString & supportedListModes(){ return m_szListModes; };
+ const QString & supportedPlainModes(){ return m_szPlainModes; };
+ bool supportsModesIe(){ return m_bSupportsModesIe; };
+ bool supportsWatchList(){ return m_bSupportsWatchList; };
+ bool supportsCodePages(){ return m_bSupportsCodePages; };
+
+ int maxTopicLen() { return m_iMaxTopicLen; };
+ int maxModeChanges() { return m_iMaxModeChanges; };
+
+ void setServerVersion(const QString & version);
+
+ const QString & getChannelModeDescription(QChar mode) { return m_pServInfo->getChannelModeDescription(mode); };
+ const QString & getUserModeDescription(QChar mode) { return m_pServInfo->getUserModeDescription(mode); };
+
+ bool isSupportedModePrefix(QChar c);
+ bool isSupportedModeFlag(QChar c);
+ QChar modePrefixChar(kvi_u32_t flag);
+ QChar modeFlagChar(kvi_u32_t flag);
+ kvi_u32_t modeFlagFromPrefixChar(QChar c);
+ kvi_u32_t modeFlagFromModeChar(QChar c);
+protected:
+ void setName(const QString &szName){ m_szName = szName; };
+ void setSupportedUserModes(const QString &szSupportedUserModes){ m_szSupportedUserModes = szSupportedUserModes; };
+ void setSupportedChannelModes(const QString &szSupportedChannelModes);
+ void setSupportedModePrefixes(const QString &szSupportedModePrefixes,const QString &szSupportedModeFlags);
+ void setSupportedChannelTypes(const QString &szSupportedChannelTypes){ m_szSupportedChannelTypes = szSupportedChannelTypes; };
+ void setSupportsWatchList(bool bSupportsWatchList){ m_bSupportsWatchList = bSupportsWatchList; };
+ void setSupportsCodePages(bool bSupportsCodePages){ m_bSupportsCodePages = bSupportsCodePages; };
+ void setMaxTopicLen( int iTopLen ) { m_iMaxTopicLen=iTopLen; };
+ void setMaxModeChanges(int iModes ) { m_iMaxModeChanges=iModes; };
+private:
+ void buildModePrefixTable();
+};
+
+#endif //!_KVI_IRCCONNECTIONSERVERINFO_H_
diff --git a/src/kvirc/kernel/kvi_ircconnectionstatedata.cpp b/src/kvirc/kernel/kvi_ircconnectionstatedata.cpp
new file mode 100644
index 00000000..2226775a
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircconnectionstatedata.cpp
@@ -0,0 +1,42 @@
+//=============================================================================
+//
+// File : kvi_ircconnectionstatedata.cpp
+// Created on Sat 26 Jun 2004 09:31:52 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_ircconnectionstatedata.h"
+
+KviIrcConnectionStateData::KviIrcConnectionStateData()
+{
+ m_bSentQuit = false;
+ m_uLoginNickIndex = 0;
+ m_bSimulateUnexpectedDisconnect = false;
+ m_tLastReceivedChannelWhoReply = kvi_unixTime();
+ m_tLastSentChannelWhoRequest = m_tLastReceivedChannelWhoReply;
+ m_tLastReceivedWhoisReply = 0;
+}
+
+KviIrcConnectionStateData::~KviIrcConnectionStateData()
+{
+}
+
diff --git a/src/kvirc/kernel/kvi_ircconnectionstatedata.h b/src/kvirc/kernel/kvi_ircconnectionstatedata.h
new file mode 100644
index 00000000..3a70c749
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircconnectionstatedata.h
@@ -0,0 +1,77 @@
+#ifndef _KVI_IRCCONNECTIONSTATEDATA_H_
+#define _KVI_IRCCONNECTIONSTATEDATA_H_
+//=============================================================================
+//
+// File : kvi_ircconnectionstatedata.h
+// Created on Sat 26 Jun 2004 09:31:52 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_time.h"
+#include "kvi_qstring.h"
+
+//
+// This class is used as container for miscelaneous connection state variables
+// that do not have a class for their own.
+// If you need to add some "minor" variable to the connection state then
+// this is the right place for it.
+//
+
+class KVIRC_API KviIrcConnectionStateData
+{
+ friend class KviIrcConnection;
+ friend class KviServerParser;
+ friend class KviUserParser;
+public:
+ KviIrcConnectionStateData();
+ ~KviIrcConnectionStateData();
+protected:
+ bool m_bSentQuit; // have we sent the quit message for this connection ?
+ unsigned int m_uLoginNickIndex; // the index of the identity nicknames used until now (see KviIrcConnection::loginToIrcServer())
+ QString m_szCommandToExecAfterConnect; // yes.. this is a special command to execute after connection
+ bool m_bSimulateUnexpectedDisconnect; // this is set to true if we have to simulate an unexpected disconnect even if we have sent a normal quit message
+ kvi_time_t m_tLastReceivedChannelWhoReply; // the time that we have received our last channel who reply
+ kvi_time_t m_tLastSentChannelWhoRequest; // the time that we have sent our last channel who request
+ kvi_time_t m_tLastReceivedWhoisReply; // the time that we have received the last whois reply, reset to 0 when we receive an /END OF WHOIS
+public:
+ bool sentQuit(){ return m_bSentQuit; };
+ void setSentQuit(){ m_bSentQuit = true; };
+
+ kvi_time_t lastReceivedChannelWhoReply(){ return m_tLastReceivedChannelWhoReply; };
+ void setLastReceivedChannelWhoReply(kvi_time_t tTime){ m_tLastReceivedChannelWhoReply = tTime; };
+
+ kvi_time_t lastSentChannelWhoRequest(){ return m_tLastSentChannelWhoRequest; };
+ void setLastSentChannelWhoRequest(kvi_time_t tTime){ m_tLastSentChannelWhoRequest = tTime; };
+
+ kvi_time_t lastReceivedWhoisReply(){ return m_tLastReceivedWhoisReply; };
+ void setLastReceivedWhoisReply(kvi_time_t tTime){ m_tLastReceivedWhoisReply = tTime; };
+
+ bool simulateUnexpectedDisconnect(){ return m_bSimulateUnexpectedDisconnect; };
+ void setSimulateUnexpectedDisconnect(){ m_bSimulateUnexpectedDisconnect = true; };
+
+ unsigned int loginNickIndex(){ return m_uLoginNickIndex; };
+ void setLoginNickIndex(unsigned int uNickIdx){ m_uLoginNickIndex = uNickIdx; };
+
+ const QString & commandToExecAfterConnect(){ return m_szCommandToExecAfterConnect; };
+ void setCommandToExecAfterConnect(const QString &szCmd){ m_szCommandToExecAfterConnect = szCmd; };
+};
+
+#endif //!_KVI_IRCCONNECTIONSTATEDATA_H_
diff --git a/src/kvirc/kernel/kvi_ircconnectionstatistics.cpp b/src/kvirc/kernel/kvi_ircconnectionstatistics.cpp
new file mode 100644
index 00000000..6397e798
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircconnectionstatistics.cpp
@@ -0,0 +1,38 @@
+//=============================================================================
+//
+// File : kvi_ircconnectionstatistics.cpp
+// Created on Sun 27 Jun 2004 21:13:48 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_ircconnectionstatistics.h"
+
+KviIrcConnectionStatistics::KviIrcConnectionStatistics()
+{
+ m_tConnectionStart = 0;
+ m_tLastMessage = 0;
+}
+
+KviIrcConnectionStatistics::~KviIrcConnectionStatistics()
+{
+}
+
diff --git a/src/kvirc/kernel/kvi_ircconnectionstatistics.h b/src/kvirc/kernel/kvi_ircconnectionstatistics.h
new file mode 100644
index 00000000..e277e77e
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircconnectionstatistics.h
@@ -0,0 +1,50 @@
+#ifndef _KVI_IRCCONNECTIONSTATISTICS_H_
+#define _KVI_IRCCONNECTIONSTATISTICS_H_
+//=============================================================================
+//
+// File : kvi_ircconnectionstatistics.h
+// Created on Sun 27 Jun 2004 21:13:48 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_time.h"
+
+
+class KVIRC_API KviIrcConnectionStatistics
+{
+ friend class KviConsole; // to be removed
+ friend class KviIrcConnection;
+public:
+ KviIrcConnectionStatistics();
+ ~KviIrcConnectionStatistics();
+protected:
+ kvi_time_t m_tConnectionStart; // (valid only when Connected or LoggingIn)
+ kvi_time_t m_tLastMessage; // last message received from server
+public:
+ kvi_time_t connectionStartTime(){ return m_tConnectionStart; };
+ kvi_time_t lastMessageTime(){ return m_tLastMessage; };
+protected:
+ void setLastMessageTime(kvi_time_t t){ m_tLastMessage = t; };
+ void setConnectionStartTime(kvi_time_t t){ m_tConnectionStart = t; };
+};
+
+#endif //!_KVI_IRCCONNECTIONSTATISTICS_H_
diff --git a/src/kvirc/kernel/kvi_ircconnectiontarget.cpp b/src/kvirc/kernel/kvi_ircconnectiontarget.cpp
new file mode 100644
index 00000000..1c7e3bbb
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircconnectiontarget.cpp
@@ -0,0 +1,66 @@
+//=============================================================================
+//
+// File : kvi_ircconnectiontarget.cpp
+// Created on Tue 08 Jun 2004 14:11:59 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_ircconnectiontarget.h"
+#include "kvi_ircserver.h"
+#include "kvi_proxydb.h"
+
+KviIrcConnectionTarget::KviIrcConnectionTarget(const KviIrcNetwork * pNetwork,
+ const KviIrcServer * pServer,
+ const KviProxy * pProxy,
+ const QString &szBindAddress)
+{
+ m_pNetwork = new KviIrcNetwork(*pNetwork);
+ m_pServer = new KviIrcServer(*pServer);
+ m_pProxy = pProxy ? new KviProxy(*pProxy) : 0;
+ m_szBindAddress = szBindAddress;
+}
+
+KviIrcConnectionTarget::~KviIrcConnectionTarget()
+{
+ delete m_pNetwork;
+ delete m_pServer;
+ if(m_pProxy)delete m_pProxy;
+}
+
+const QString & KviIrcConnectionTarget::networkName()
+{
+ return m_pNetwork->name();
+}
+
+void KviIrcConnectionTarget::setNetworkName(const QString &szNetName)
+{
+ m_pNetwork->setName(szNetName);
+}
+
+
+void KviIrcConnectionTarget::clearProxy()
+{
+ if(!m_pProxy)return;
+ delete m_pProxy;
+ m_pProxy = 0;
+}
+
diff --git a/src/kvirc/kernel/kvi_ircconnectiontarget.h b/src/kvirc/kernel/kvi_ircconnectiontarget.h
new file mode 100644
index 00000000..31e179da
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircconnectiontarget.h
@@ -0,0 +1,69 @@
+#ifndef _KVI_IRCCONNECTIONTARGET_H_
+#define _KVI_IRCCONNECTIONTARGET_H_
+//=============================================================================
+//
+// File : kvi_ircconnectiontarget.h
+// Created on Tue 08 Jun 2004 14:11:59 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_heapobject.h"
+
+class KviIrcNetwork;
+class KviIrcServer;
+class KviProxy;
+
+class KVIRC_API KviIrcConnectionTarget : public KviHeapObject
+{
+ friend class KviIrcConnectionTargetResolver;
+public:
+ // pServer is a shallow pointer: this class makes a copy of it internally, must NOT be null
+ // pProxy may be null if a proxy is not desired. this class makes a copy of it internally
+ KviIrcConnectionTarget(const KviIrcNetwork * pNetwork,
+ const KviIrcServer * pServer,
+ const KviProxy * pProxy = 0,
+ const QString &szBindAddress = QString::null);
+ ~KviIrcConnectionTarget();
+private:
+ KviIrcNetwork * m_pNetwork; // owned, never null
+ KviIrcServer * m_pServer; // owned, never null
+ KviProxy * m_pProxy; // owned, may be null
+ QString m_szBindAddress; // forced bind address
+public:
+ KviIrcServer * server(){ return m_pServer; };
+ KviIrcNetwork * network(){ return m_pNetwork; };
+ KviProxy * proxy(){ return m_pProxy; };
+ const QString & bindAddress(){ return m_szBindAddress; };
+ bool hasBindAddress(){ return (!m_szBindAddress.isEmpty()); };
+ const QString & networkName();
+ // this allows to force the network name: it should be used only by KviConsole
+ // but it's KviServerParser (kvi_sp_numeric.cpp) that first
+ // gets the new network name... thus we make it public
+ // to remove one level of indirection.
+ void setNetworkName(const QString &szNetName);
+protected:
+ // this is for KviIrcConnectionTargetResolver only
+ void clearProxy();
+ void setBindAddress(const QString &szBindAddress){ m_szBindAddress = szBindAddress; };
+};
+
+#endif //!_KVI_IRCCONNECTIONTARGET_H_
diff --git a/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp b/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp
new file mode 100644
index 00000000..824993bb
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp
@@ -0,0 +1,555 @@
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// File : kvi_ircconnectiontargetresolver.cpp
+// Creation date : Fri May 11 23:24:18 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#define __KVIRC__
+
+#include "kvi_ircconnectiontargetresolver.h"
+#include "kvi_dns.h"
+#include "kvi_locale.h"
+#include "kvi_ircserverdb.h"
+#include "kvi_proxydb.h"
+#include "kvi_error.h"
+#include "kvi_out.h"
+#include "kvi_options.h"
+#include "kvi_ircsocket.h"
+#include "kvi_console.h"
+#include "kvi_netutils.h"
+#include "kvi_internalcmd.h"
+#include "kvi_frame.h"
+#include "kvi_mexlinkfilter.h"
+#include "kvi_garbage.h"
+#include "kvi_malloc.h"
+#include "kvi_memmove.h"
+#include "kvi_debug.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectiontarget.h"
+#include "kvi_ircsocket.h"
+#include "kvi_error.h"
+
+#define __KVI_DEBUG__
+#include "kvi_debug.h"
+
+#include <qtimer.h>
+
+extern KVIRC_API KviIrcServerDataBase * g_pIrcServerDataBase;
+extern KVIRC_API KviProxyDataBase * g_pProxyDataBase;
+extern KVIRC_API KviGarbageCollector * g_pGarbageCollector;
+
+
+
+KviIrcConnectionTargetResolver::KviIrcConnectionTargetResolver(KviIrcConnection * pConnection)
+: QObject()
+{
+ m_pConnection = pConnection;
+ m_pTarget = 0;
+ m_pConsole = m_pConnection->console();
+
+ m_pStartTimer = 0;
+ m_pProxyDns = 0;
+ m_pServerDns = 0;
+
+ m_eState = Idle;
+ m_eStatus = Success;
+
+ m_iLastError = KviError_success;
+}
+
+KviIrcConnectionTargetResolver::~KviIrcConnectionTargetResolver()
+{
+ cleanup();
+}
+
+void KviIrcConnectionTargetResolver::cleanup()
+{
+ if(m_pProxyDns)
+ {
+ if(m_pProxyDns->isRunning())
+ {
+ // deleting a running dns may block
+ // thus garbage-collect it and delete later
+ g_pGarbageCollector->collect(m_pProxyDns);
+ } else {
+ // can't block : just delete it
+ delete m_pProxyDns;
+ }
+ m_pProxyDns = 0;
+ }
+ if(m_pServerDns)
+ {
+ if(m_pServerDns->isRunning())
+ {
+ // deleting a running dns may block
+ // thus garbage-collect it and delete later
+ g_pGarbageCollector->collect(m_pServerDns);
+ } else {
+ // can't block : just delete it
+ delete m_pServerDns;
+ }
+ m_pServerDns = 0;
+ }
+ if(m_pStartTimer)
+ {
+ delete m_pStartTimer;
+ m_pStartTimer = 0;
+ }
+}
+
+void KviIrcConnectionTargetResolver::start(KviIrcConnectionTarget * t)
+{
+ __ASSERT(m_eState == Idle);
+
+ m_eState = Running;
+
+ if(m_pStartTimer) // this should never happen I guess
+ {
+ delete m_pStartTimer;
+ m_pStartTimer = 0;
+ }
+ m_pStartTimer = new QTimer(this);
+ connect(m_pStartTimer,SIGNAL(timeout()),this,SLOT(asyncStartResolve()));
+
+ m_pTarget = t;
+
+ m_pStartTimer->start(0);
+}
+
+void KviIrcConnectionTargetResolver::abort()
+{
+ cleanup(); // do a cleanup to kill the timers and dns slaves
+
+ if(m_eState == Terminated)return;
+
+ m_pConsole->outputNoFmt(KVI_OUT_SYSTEMERROR,__tr2qs("Hostname resolution aborted"));
+ terminate(Error,KviError_operationAborted);
+}
+
+void KviIrcConnectionTargetResolver::asyncStartResolve()
+{
+ if(m_pStartTimer)
+ {
+ delete m_pStartTimer;
+ m_pStartTimer = 0;
+ }
+
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,
+ __tr2qs("Attempting %Q to %Q (%Q) on port %u"),
+ m_pTarget->server()->useSSL() ? &(__tr2qs("secure connection")) : &(__tr2qs("connection")),
+ &(m_pTarget->server()->m_szHostname),
+ &(m_pTarget->networkName()),
+ m_pTarget->server()->m_uPort);
+
+ if(m_pTarget->proxy())
+ {
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,
+ __tr2qs("Attempting to 'bounce' on proxy %s on port %u (protocol %s)"),
+ m_pTarget->proxy()->m_szHostname.ptr(),
+ m_pTarget->proxy()->m_uPort,
+ m_pTarget->proxy()->protocolName());
+
+ lookupProxyHostname();
+ } else {
+ lookupServerHostname();
+ }
+}
+
+void KviIrcConnectionTargetResolver::lookupProxyHostname()
+{
+ bool bValidIp;
+#ifdef COMPILE_IPV6_SUPPORT
+ if(m_pTarget->proxy()->isIpV6())
+ {
+ bValidIp = kvi_isValidStringIp_V6(m_pTarget->proxy()->m_szIp.ptr());
+ } else {
+#endif
+ bValidIp = kvi_isValidStringIp(m_pTarget->proxy()->m_szIp.ptr());
+#ifdef COMPILE_IPV6_SUPPORT
+ }
+#endif
+
+ if(bValidIp)
+ {
+ if(!_OUTPUT_QUIET)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,
+ __tr2qs("Using cached proxy IP address (%s)"),
+ m_pTarget->proxy()->m_szIp.ptr());
+ if(m_pTarget->proxy()->protocol() != KviProxy::Http
+ && m_pTarget->proxy()->protocol() != KviProxy::Socks5)
+ lookupServerHostname();
+ else terminate(Success,KviError_success);
+ } else {
+#ifdef COMPILE_IPV6_SUPPORT
+ if(m_pTarget->proxy()->isIpV6())
+ {
+ bValidIp = kvi_isValidStringIp_V6(m_pTarget->proxy()->m_szHostname.ptr());
+ } else {
+#endif
+ bValidIp = kvi_isValidStringIp(m_pTarget->proxy()->m_szHostname.ptr());
+#ifdef COMPILE_IPV6_SUPPORT
+ }
+#endif
+ if(bValidIp)
+ {
+ m_pTarget->proxy()->m_szIp=m_pTarget->proxy()->m_szHostname;
+ if(m_pTarget->proxy()->protocol() != KviProxy::Http &&
+ m_pTarget->proxy()->protocol() != KviProxy::Socks5)
+ {
+ lookupServerHostname();
+ } else {
+ terminate(Success,KviError_success);
+ }
+ } else {
+
+ if(m_pProxyDns)
+ {
+ debug("Something weird is happening, m_pProxyDns is non-zero in lookupProxyHostname()");
+ delete m_pProxyDns;
+ m_pProxyDns = 0;
+ }
+
+ m_pProxyDns = new KviDns();
+ connect(m_pProxyDns,SIGNAL(lookupDone(KviDns *)),this,SLOT(proxyLookupTerminated(KviDns *)));
+
+ if(!m_pProxyDns->lookup(m_pTarget->proxy()->m_szHostname.ptr(),
+ m_pTarget->proxy()->isIpV6() ? KviDns::IpV6 : KviDns::IpV4))
+ {
+ m_pConsole->outputNoFmt(KVI_OUT_SYSTEMWARNING,
+ __tr2qs("Unable to look up the IRC proxy hostname: Can't start the DNS slave"));
+ m_pConsole->outputNoFmt(KVI_OUT_SYSTEMWARNING,
+ __tr2qs("Resuming direct server connection"));
+ // FIXME: #warning "Option for resuming direct connection or not ?"
+ delete m_pProxyDns;
+ m_pProxyDns = 0;
+ m_pTarget->clearProxy();
+ lookupServerHostname();
+ } else {
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,
+ __tr2qs("Looking up the proxy hostname (%s)..."),
+ m_pTarget->proxy()->m_szHostname.ptr());
+ }
+ }
+ }
+}
+
+void KviIrcConnectionTargetResolver::proxyLookupTerminated(KviDns *)
+{
+ if(m_pProxyDns->state() != KviDns::Success)
+ {
+ QString szErr = KviError::getDescription(m_pProxyDns->error());
+ m_pConsole->output(KVI_OUT_SYSTEMERROR,
+ __tr2qs("Can't find the proxy IP address: %Q"),
+ &szErr);
+ // FIXME: #warning "Option to resume the direct connection if proxy failed ?"
+ m_pConsole->output(KVI_OUT_SYSTEMERROR,
+ __tr2qs("Resuming direct server connection"));
+ m_pTarget->clearProxy();
+ } else {
+ QString szFirstIpAddress = m_pProxyDns->firstIpAddress();
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,
+ __tr2qs("Proxy hostname resolved to %Q"),&szFirstIpAddress);
+
+ m_pTarget->proxy()->m_szIp = m_pProxyDns->firstIpAddress();
+ g_pProxyDataBase->updateProxyIp(m_pTarget->proxy()->m_szIp.ptr(),szFirstIpAddress);
+
+ if(m_pProxyDns->hostnameCount() > 1)
+ {
+ QString szFirstHostname = m_pProxyDns->firstHostname();
+
+ for(QString * addr = m_pProxyDns->hostnameList()->next();addr;addr = m_pProxyDns->hostnameList()->next())
+ {
+ if(!_OUTPUT_QUIET)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,
+ __tr2qs("Proxy %Q has a nickname: %Q"),&szFirstHostname,addr);
+ }
+ }
+ }
+
+ delete m_pProxyDns;
+ m_pProxyDns = 0;
+ if(m_pTarget->proxy())
+ {
+ if(m_pTarget->proxy()->protocol() == KviProxy::Http
+ || m_pTarget->proxy()->protocol() == KviProxy::Socks5)
+ {
+ terminate(Success,KviError_success);
+ return;
+ }
+ }
+ lookupServerHostname();
+}
+
+void KviIrcConnectionTargetResolver::lookupServerHostname()
+{
+ bool bValidIp;
+
+#ifdef COMPILE_IPV6_SUPPORT
+ if(m_pTarget->server()->isIpV6())
+ {
+ bValidIp = KviNetUtils::isValidStringIp_V6(m_pTarget->server()->m_szIp);
+ } else {
+#endif
+ bValidIp = KviNetUtils::isValidStringIp(m_pTarget->server()->m_szIp);
+#ifdef COMPILE_IPV6_SUPPORT
+ }
+#endif
+
+ if(bValidIp && m_pTarget->server()->cacheIp())
+ {
+ if(!_OUTPUT_QUIET)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,
+ __tr2qs("Using cached server IP address (%s)"),
+ m_pTarget->server()->m_szIp.utf8().data());
+ haveServerIp();
+ } else {
+#ifdef COMPILE_IPV6_SUPPORT
+ if(m_pTarget->server()->isIpV6())
+ {
+ bValidIp = KviNetUtils::isValidStringIp_V6(m_pTarget->server()->m_szHostname);
+ } else {
+#endif
+ bValidIp = KviNetUtils::isValidStringIp(m_pTarget->server()->m_szHostname);
+#ifdef COMPILE_IPV6_SUPPORT
+ }
+#endif
+ if(bValidIp)
+ {
+ m_pTarget->server()->m_szIp=m_pTarget->server()->m_szHostname;
+ haveServerIp();
+ } else {
+ if(m_pServerDns)
+ {
+ debug("Something weird is happening, m_pServerDns is non-zero in lookupServerHostname()");
+ delete m_pServerDns;
+ m_pServerDns = 0;
+ }
+ m_pServerDns = new KviDns();
+ connect(m_pServerDns,SIGNAL(lookupDone(KviDns *)),this,
+ SLOT(serverLookupTerminated(KviDns *)));
+ if(!m_pServerDns->lookup(m_pTarget->server()->m_szHostname,
+ m_pTarget->server()->isIpV6() ? KviDns::IpV6 : KviDns::IpV4))
+ {
+ m_pConsole->outputNoFmt(KVI_OUT_SYSTEMERROR,
+ __tr2qs("Unable to look up the server hostname: Can't start the DNS slave"));
+ terminate(Error,KviError_internalError);
+ } else {
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,
+ __tr2qs("Looking up the server hostname (%s)..."),
+ m_pTarget->server()->m_szHostname.utf8().data());
+ }
+ }
+ }
+}
+
+
+void KviIrcConnectionTargetResolver::serverLookupTerminated(KviDns *)
+{
+ if(m_pServerDns->state() != KviDns::Success)
+ {
+ QString szErr = KviError::getDescription(m_pServerDns->error());
+ m_pConsole->output(KVI_OUT_SYSTEMERROR,
+ __tr2qs("Can't find the server IP address: %Q"),
+ &szErr);
+
+#ifdef COMPILE_IPV6_SUPPORT
+ if(!(m_pTarget->server()->isIpV6()))
+ {
+ m_pConsole->output(KVI_OUT_SYSTEMERROR,
+ __tr2qs("If this server is an IPv6 one, try /server -i %Q"),
+ &(m_pTarget->server()->m_szHostname));
+ }
+#endif
+ terminate(Error,m_pServerDns->error());
+ return;
+ }
+ QString szFirstIpAddress = m_pServerDns->firstIpAddress();
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,
+ __tr2qs("Server hostname resolved to %Q"),
+ &szFirstIpAddress);
+ g_pIrcServerDataBase->updateServerIp(m_pTarget->server(),szFirstIpAddress);
+
+ QString szFirstHostname = m_pServerDns->firstHostname();
+
+ if(!KviQString::equalCI(m_pTarget->server()->m_szHostname,m_pServerDns->firstHostname()))
+ {
+ if(!_OUTPUT_QUIET)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,
+ __tr2qs("Real hostname for %Q is %Q"),
+ &(m_pTarget->server()->m_szHostname),
+ &szFirstHostname);
+ m_pTarget->server()->m_szHostname = szFirstHostname;
+ }
+
+ m_pTarget->server()->m_szIp = m_pServerDns->firstIpAddress();
+
+ if(m_pServerDns->hostnameCount() > 1)
+ {
+ for(QString * addr = m_pServerDns->hostnameList()->next();addr;addr = m_pServerDns->hostnameList()->next())
+ {
+ if(!_OUTPUT_QUIET)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,
+ __tr2qs("Server %Q has a nickname: %Q"),
+ &szFirstHostname,addr);
+ }
+ }
+
+ delete m_pServerDns;
+ m_pServerDns = 0;
+ haveServerIp();
+}
+
+bool KviIrcConnectionTargetResolver::validateLocalAddress(const QString &szAddress,QString &szBuffer)
+{
+ // szAddress may be an ip address or an interface name
+#ifdef COMPILE_IPV6_SUPPORT
+ if(m_pTarget->server()->isIpV6())
+ {
+ if(KviNetUtils::isValidStringIp_V6(szAddress))
+ {
+ szBuffer = szAddress;
+ return true;
+ }
+ } else {
+#endif
+ if(KviNetUtils::isValidStringIp(szAddress))
+ {
+ szBuffer = szAddress;
+ return true;
+ }
+#ifdef COMPILE_IPV6_SUPPORT
+ }
+#endif
+
+ // is it an interface name ?
+ return KviNetUtils::getInterfaceAddress(szAddress,szBuffer);
+}
+
+
+void KviIrcConnectionTargetResolver::haveServerIp()
+{
+ if(KVI_OPTION_BOOL(KviOption_boolUseIdentService) && !KVI_OPTION_BOOL(KviOption_boolUseIdentServiceOnlyOnConnect))
+ m_pConsole->frame()->executeInternalCommand(KVI_INTERNALCOMMAND_IDENT_START);
+
+ QString bindAddress;
+
+ if(m_pTarget->hasBindAddress())
+ {
+ if(!validateLocalAddress(m_pTarget->bindAddress(),bindAddress))
+ {
+ QString szBindAddress = m_pTarget->bindAddress();
+ if((szBindAddress.find('.') != -1) ||
+ (szBindAddress.find(':') != -1))
+ {
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_SYSTEMWARNING,
+ __tr2qs("The specified bind address (%Q) is not valid"),
+ &szBindAddress);
+ } else {
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_SYSTEMWARNING,
+ __tr2qs("The specified bind address (%Q) is not valid (the interface it refers to might be down)"),
+ &(szBindAddress));
+ }
+ }
+ } else {
+ // the options specify a bind address ?
+#ifdef COMPILE_IPV6_SUPPORT
+ if(m_pTarget->server()->isIpV6())
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolBindIrcIpV6ConnectionsToSpecifiedAddress))
+ {
+ if(!KVI_OPTION_STRING(KviOption_stringIpV6ConnectionBindAddress).isEmpty())
+ {
+ if(!validateLocalAddress(KVI_OPTION_STRING(KviOption_stringIpV6ConnectionBindAddress),bindAddress))
+ {
+ // if it is not an interface name , kill it for now and let the user correct the address
+ if(KVI_OPTION_STRING(KviOption_stringIpV6ConnectionBindAddress).find(':') != -1)
+ {
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_SYSTEMWARNING,
+ __tr2qs("The system-wide IPv6 bind address (%s) is not valid"),
+ KVI_OPTION_STRING(KviOption_stringIpV6ConnectionBindAddress).utf8().data());
+ KVI_OPTION_BOOL(KviOption_boolBindIrcIpV6ConnectionsToSpecifiedAddress) = false;
+ } else {
+ // this is an interface address: might be down
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_SYSTEMWARNING,
+ __tr2qs("The system-wide IPv6 bind address (%s) is not valid (the interface it refers to might be down)"),
+ KVI_OPTION_STRING(KviOption_stringIpV6ConnectionBindAddress).utf8().data());
+ }
+ }
+ } else {
+ // empty address....kill it
+ KVI_OPTION_BOOL(KviOption_boolBindIrcIpV6ConnectionsToSpecifiedAddress) = false;
+ }
+ }
+ } else {
+#endif
+ if(KVI_OPTION_BOOL(KviOption_boolBindIrcIpV4ConnectionsToSpecifiedAddress))
+ {
+ if(!KVI_OPTION_STRING(KviOption_stringIpV4ConnectionBindAddress).isEmpty())
+ {
+ if(!validateLocalAddress(KVI_OPTION_STRING(KviOption_stringIpV4ConnectionBindAddress),bindAddress))
+ {
+ // if it is not an interface name , kill it for now and let the user correct the address
+ if(KVI_OPTION_STRING(KviOption_stringIpV4ConnectionBindAddress).find(':') != -1)
+ {
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_SYSTEMWARNING,
+ __tr2qs("The system-wide IPv4 bind address (%s) is not valid"),
+ KVI_OPTION_STRING(KviOption_stringIpV4ConnectionBindAddress).utf8().data());
+ KVI_OPTION_BOOL(KviOption_boolBindIrcIpV4ConnectionsToSpecifiedAddress) = false;
+ } else {
+ // this is an interface address: might be down
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_SYSTEMWARNING,
+ __tr2qs("The system-wide IPv4 bind address (%s) is not valid (the interface it refers to might be down)"),
+ KVI_OPTION_STRING(KviOption_stringIpV4ConnectionBindAddress).utf8().data());
+ }
+ }
+ } else {
+ // empty address....kill it
+ KVI_OPTION_BOOL(KviOption_boolBindIrcIpV4ConnectionsToSpecifiedAddress) = false;
+ }
+ }
+#ifdef COMPILE_IPV6_SUPPORT
+ }
+#endif
+ }
+
+ m_pTarget->setBindAddress(bindAddress);
+ terminate(Success,KviError_success);
+}
+
+void KviIrcConnectionTargetResolver::terminate(Status s,int iLastError)
+{
+ __ASSERT(m_eState != Terminated);
+ cleanup(); // do a cleanup anyway
+ m_eState = Terminated;
+ m_eStatus = s;
+ m_iLastError = iLastError;
+ emit terminated();
+}
diff --git a/src/kvirc/kernel/kvi_ircconnectiontargetresolver.h b/src/kvirc/kernel/kvi_ircconnectiontargetresolver.h
new file mode 100644
index 00000000..947cc711
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircconnectiontargetresolver.h
@@ -0,0 +1,88 @@
+#ifndef _KVI_IRCCONNECTIONTARGETRESOLVER_H_
+#define _KVI_IRCCONNECTIONTARGETRESOLVER_H_
+//=============================================================================
+//
+// File : kvi_ircconnectiontargetresolver.h
+// Created on Fri 11 May 2004 23:17:42 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include <qobject.h>
+
+class KviConsole;
+class KviDns;
+class KviIrcConnection;
+class KviIrcConnectionTarget;
+
+class QTimer;
+
+class KVIRC_API KviIrcConnectionTargetResolver : public QObject
+{
+ friend class KviIrcLink; // upper protocol in the stack
+ Q_OBJECT
+protected:
+ KviIrcConnectionTargetResolver(KviIrcConnection * pConnection);
+ ~KviIrcConnectionTargetResolver();
+public:
+ enum Status { Success, Error };
+ enum State { Idle, Running, Terminated };
+private:
+ KviIrcConnection * m_pConnection; // shallow, never null
+ KviIrcConnectionTarget * m_pTarget; // shallow, never null
+ KviConsole * m_pConsole; // shallow, never null
+ Status m_eStatus;
+ State m_eState;
+
+ // Auxiliary stuff
+ QTimer * m_pStartTimer; // timer used to start the connection
+ KviDns * m_pProxyDns; // the dns object for the proxy hostnames
+ KviDns * m_pServerDns; // the dns object for the server hostnames
+
+ char * m_pReadBuffer;
+ unsigned int m_uReadBufferLen;
+ unsigned int m_uReadPackets;
+
+ int m_iLastError;
+public:
+ void start(KviIrcConnectionTarget * t);
+ // valid only after the terminated() signal
+ Status status(){ return m_eStatus; };
+ int lastError(){ return m_iLastError; };
+ // causes the resolver to terminate with iLastError == KviError_operationAborted
+ // the terminated() signal is emitted.
+ void abort();
+protected slots:
+ void asyncStartResolve();
+ void serverLookupTerminated(KviDns *);
+ void proxyLookupTerminated(KviDns *);
+private:
+ void cleanup();
+ void lookupProxyHostname();
+ void lookupServerHostname();
+ void haveServerIp();
+ bool validateLocalAddress(const QString &szAddress,QString &szBuffer);
+ void terminate(Status s,int iLastError);
+signals:
+ void terminated();
+};
+
+#endif //!_KVI_IRCCONNECTIONTARGETRESOLVER_H_
diff --git a/src/kvirc/kernel/kvi_ircconnectionuserinfo.cpp b/src/kvirc/kernel/kvi_ircconnectionuserinfo.cpp
new file mode 100644
index 00000000..f4d0ae4c
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircconnectionuserinfo.cpp
@@ -0,0 +1,65 @@
+//=============================================================================
+//
+// File : kvi_ircconnectionuserinfo.cpp
+// Created on Sun 20 Jun 2004 01:45:42 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_ircconnectionuserinfo.h"
+
+KviIrcConnectionUserInfo::KviIrcConnectionUserInfo()
+{
+ m_bAway = false;
+}
+
+bool KviIrcConnectionUserInfo::hasUserMode(const QChar &m)
+{
+ return m_szUserMode.contains(m) > 0;
+}
+
+bool KviIrcConnectionUserInfo::addUserMode(const QChar &m)
+{
+ if(hasUserMode(m))return false;
+ m_szUserMode.append(m);
+ return true;
+}
+
+bool KviIrcConnectionUserInfo::removeUserMode(const QChar &m)
+{
+ int idx = m_szUserMode.find(m,0);
+ if(idx == -1)return false;
+ m_szUserMode.replace(m,QString(""));
+ return true;
+}
+
+void KviIrcConnectionUserInfo::setAway()
+{
+ m_szNickBeforeAway = m_szNickName;
+ m_tAway = kvi_unixTime();
+ m_bAway = true;
+}
+
+void KviIrcConnectionUserInfo::setBack()
+{
+ m_szNickBeforeAway = "";
+ m_bAway = false;
+}
diff --git a/src/kvirc/kernel/kvi_ircconnectionuserinfo.h b/src/kvirc/kernel/kvi_ircconnectionuserinfo.h
new file mode 100644
index 00000000..fbb66ffd
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircconnectionuserinfo.h
@@ -0,0 +1,88 @@
+#ifndef _KVI_IRCCONNECTIONUSERINFO_H_
+#define _KVI_IRCCONNECTIONUSERINFO_H_
+//=============================================================================
+//
+// File : kvi_ircconnectionuserinfo.h
+// Created on Sun 20 Jun 2004 01:45:42 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_time.h"
+
+class KVIRC_API KviIrcConnectionUserInfo
+{
+ friend class KviIrcConnection;
+ friend class KviServerParser;
+ friend class KviConsole;
+protected:
+ KviIrcConnectionUserInfo();
+ ~KviIrcConnectionUserInfo(){};
+private:
+ QString m_szRealName; // the actual real name sent from the server
+ QString m_szNickName; // the actual nick name acknowledged by the server
+ QString m_szUserMode; // the actual user mode
+ QString m_szUserName; // user name with ident char
+ QString m_szLocalHostIp; // the local host ip as found by resolveLocalHost() at connection startup
+ QString m_szHostName; // the local host name that the server reports
+ QString m_szHostIp; // the host name above resolved, if possible
+ QString m_szAwayReason;
+ bool m_bAway; // is the user away ?
+ kvi_time_t m_tAway; // time at that the user went away
+ QString m_szNickBeforeAway; // the nickname that the user had just before going away
+ // From bugtrack:
+ // On many IRC networks the host is masked or hashed, and if one also is connected through a LAN,
+ // it is basically impossible to initiate DCC transfers, as 192.168.0.13 or similar will be sent as IP.
+ // But IRC servers usually (at least in my experience) send the unmasked host in the 001 raw event
+ // with something like ":Welcome to the Internet Relay Chat network, nick!ident@host". I think
+ // it'd be a good idea to just grab the IP from that event and use it for DCC transfers by default.
+ QString m_szUnmaskedHostName;
+public:
+ const QString & realName(){ return m_szRealName; };
+ const QString & nickName(){ return m_szNickName; };
+ const QString & userMode(){ return m_szUserMode; };
+ const QString & userName(){ return m_szUserName; };
+ const QString & localHostIp(){ return m_szLocalHostIp; };
+ const QString & hostName(){ return m_szHostName; };
+ const QString & unmaskedHostName(){ return m_szUnmaskedHostName; };
+ const QString & hostIp(){ return m_szHostIp; };
+ const QString & awayReason() { return m_szAwayReason; };
+ bool hasUserMode(const QChar & m);
+ bool isAway(){ return m_bAway; };
+ time_t awayTime(){ return m_tAway; };
+ const QString & nickNameBeforeAway(){ return m_szNickBeforeAway; };
+protected:
+ void setRealName(const QString &szRealName){ m_szRealName = szRealName; };
+ void setNickName(const QString &szNickName){ m_szNickName = szNickName; };
+ void setUserMode(const QString &szUserMode){ m_szUserMode = szUserMode; };
+ void setUserName(const QString &szUserName){ m_szUserName = szUserName; };
+ void setHostName(const QString &szHostName){ m_szHostName = szHostName; };
+ void setUnmaskedHostName(const QString &szHostName){ m_szUnmaskedHostName = szHostName; };
+ void setHostIp(const QString &szHostIp){ m_szHostIp = szHostIp; };
+ void setLocalHostIp(const QString &szLocalHostIp){ m_szLocalHostIp = szLocalHostIp; };
+ bool addUserMode(const QChar &m); // returns false if the mode was already there
+ bool removeUserMode(const QChar &m); // returns fales if the mode was not there
+ void setAwayReason(const QString& szReazon) { m_szAwayReason=szReazon; };
+ void setAway();
+ void setBack();
+};
+
+#endif //!_KVI_IRCCONNECTIONUSERINFO_H_
diff --git a/src/kvirc/kernel/kvi_irccontext.cpp b/src/kvirc/kernel/kvi_irccontext.cpp
new file mode 100644
index 00000000..34257588
--- /dev/null
+++ b/src/kvirc/kernel/kvi_irccontext.cpp
@@ -0,0 +1,906 @@
+//=============================================================================
+//
+// File : kvi_irccontext.cpp
+// Created on Sun 09 May 2004 20:37:46 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_irccontext.h"
+#include "kvi_console.h"
+#include "kvi_channel.h"
+#include "kvi_query.h"
+#include "kvi_frame.h"
+#include "kvi_debug.h"
+#include "kvi_sparser.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectiontarget.h"
+#include "kvi_asynchronousconnectiondata.h"
+#include "kvi_ircconnectionstatedata.h"
+#include "kvi_ircconnectionuserinfo.h"
+#include "kvi_irctoolbar.h"
+#include "kvi_out.h"
+#include "kvi_ircserverdb.h"
+#include "kvi_proxydb.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_ircdatastreammonitor.h"
+#include "kvi_error.h"
+#include "kvi_thread.h" // for KviThread::msleep()
+#include "kvi_app.h"
+#include "kvi_kvs_eventtriggers.h"
+#include "kvi_kvs_script.h"
+#include "kvi_netutils.h"
+#include "kvi_ircurl.h"
+#include "kvi_qcstring.h"
+#include "kvi_useridentity.h"
+
+#define __KVI_DEBUG__
+#include "kvi_debug.h"
+
+#include <qtimer.h>
+
+// the irc context identifiers start from 1
+static unsigned int g_uNextIrcContextId = 1;
+
+extern KVIRC_API KviIrcServerDataBase * g_pIrcServerDataBase;
+extern KVIRC_API KviProxyDataBase * g_pProxyDataBase;
+
+
+KviIrcContext::KviIrcContext(KviConsole * pConsole)
+: QObject(0)
+{
+ m_uId = g_uNextIrcContextId;
+ g_uNextIrcContextId++;
+
+ m_pConsole = pConsole;
+
+ m_pConnection = 0;
+
+ m_pFrame = m_pConsole->frame();
+
+ m_pDeadChannels = 0;
+ m_pDeadQueries = 0;
+ m_pContextWindows = 0;
+
+ m_pLinksWindow = 0;
+ m_pListWindow = 0;
+
+ m_eState = Idle;
+
+ m_pAsynchronousConnectionData = 0;
+ m_pSavedAsynchronousConnectionData = 0;
+ m_uConnectAttemptCount = 0;
+ m_pMonitorList = 0;
+ m_pReconnectTimer = 0;
+
+ m_uConnectAttemptCount = 1;
+
+ m_iHeartbeatTimerId = startTimer(5000);
+}
+
+KviIrcContext::~KviIrcContext()
+{
+ killTimer(m_iHeartbeatTimerId);
+
+ while(m_pMonitorList)
+ {
+ KviIrcDataStreamMonitor * m = m_pMonitorList->first();
+ if(m)m->die();
+ else {
+ delete m_pMonitorList;
+ m_pMonitorList = 0;
+ }
+ }
+
+ if(m_pReconnectTimer)delete m_pReconnectTimer;
+
+ if(m_pLinksWindow)m_pLinksWindow->die();
+ if(m_pListWindow)m_pListWindow->die();
+
+ closeAllDeadChannels();
+ closeAllDeadQueries();
+ closeAllContextWindows();
+
+ destroyConnection();
+ if(m_pAsynchronousConnectionData)delete m_pAsynchronousConnectionData;
+ if(m_pSavedAsynchronousConnectionData)delete m_pSavedAsynchronousConnectionData;
+}
+
+void KviIrcContext::unhighlightAllWindows()
+{
+ m_pFrame->unhighlightWindowsOfContext(this);
+}
+
+void KviIrcContext::registerDataStreamMonitor(KviIrcDataStreamMonitor * m)
+{
+ if(!m_pMonitorList)
+ {
+ m_pMonitorList = new KviPointerList<KviIrcDataStreamMonitor>;
+ m_pMonitorList->setAutoDelete(false);
+ }
+ m_pMonitorList->append(m);
+}
+
+void KviIrcContext::unregisterDataStreamMonitor(KviIrcDataStreamMonitor *m)
+{
+ if(!m_pMonitorList)return;
+ m_pMonitorList->removeRef(m);
+ if(m_pMonitorList->isEmpty())
+ {
+ delete m_pMonitorList;
+ m_pMonitorList = 0;
+ }
+}
+
+
+void KviIrcContext::closeAllDeadChannels()
+{
+ while(m_pDeadChannels)
+ {
+ KviChannel * c = m_pDeadChannels->first();
+ if(c)m_pFrame->closeWindow(c);
+ else {
+ // ops....
+ delete m_pDeadChannels;
+ m_pDeadChannels = 0;
+ }
+ }
+}
+
+void KviIrcContext::closeAllDeadQueries()
+{
+ while(m_pDeadQueries)
+ {
+ KviQuery * q = m_pDeadQueries->first();
+ if(q)m_pFrame->closeWindow(q);
+ else {
+ // ops....
+ delete m_pDeadQueries;
+ m_pDeadQueries = 0;
+ }
+ }
+}
+
+void KviIrcContext::closeAllContextWindows()
+{
+ while(m_pContextWindows)
+ {
+ KviWindow * w = m_pContextWindows->first();
+ if(w)m_pFrame->closeWindow(w);
+ else {
+ // ops...
+ delete m_pContextWindows;
+ m_pContextWindows = 0;
+ }
+ }
+}
+
+KviChannel * KviIrcContext::findDeadChannel(const QString &name)
+{
+ if(!m_pDeadChannels)return 0;
+ for(KviChannel * c = m_pDeadChannels->first();c;c = m_pDeadChannels->next())
+ {
+ __range_valid(c->isDeadChan());
+ if(KviQString::equalCI(name,c->windowName()))return c;
+ }
+ return 0;
+}
+
+KviQuery * KviIrcContext::findDeadQuery(const QString &name)
+{
+ if(!m_pDeadQueries)return 0;
+ for(KviQuery * c = m_pDeadQueries->first();c;c = m_pDeadQueries->next())
+ {
+ __range_valid(c->isDeadQuery());
+ if(KviQString::equalCI(name,c->windowName()))return c;
+ }
+ return 0;
+}
+
+KviQuery * KviIrcContext::firstDeadQuery()
+{
+ if(!m_pDeadQueries)return 0;
+ return m_pDeadQueries->first();
+}
+
+void KviIrcContext::registerContextWindow(KviWindow * pWnd)
+{
+ if(!m_pContextWindows)
+ {
+ m_pContextWindows = new KviPointerList<KviWindow>;
+ m_pContextWindows->setAutoDelete(false);
+ }
+ m_pContextWindows->append(pWnd);
+}
+
+void KviIrcContext::registerDeadChannel(KviChannel * c)
+{
+ if(!m_pDeadChannels)
+ {
+ m_pDeadChannels = new KviPointerList<KviChannel>;
+ m_pDeadChannels->setAutoDelete(false);
+ }
+ m_pDeadChannels->append(c);
+}
+
+void KviIrcContext::registerDeadQuery(KviQuery * q)
+{
+ if(!m_pDeadQueries)
+ {
+ m_pDeadQueries = new KviPointerList<KviQuery>;
+ m_pDeadQueries->setAutoDelete(false);
+ }
+ m_pDeadQueries->append(q);
+}
+
+bool KviIrcContext::unregisterDeadChannel(KviChannel * c)
+{
+ // was a dead channel ?
+ if(!m_pDeadChannels)return false;
+ if(!m_pDeadChannels->removeRef(c))
+ {
+ return false;
+ }
+ if(m_pDeadChannels->isEmpty())
+ {
+ delete m_pDeadChannels;
+ m_pDeadChannels = 0;
+ }
+ return true;
+}
+
+bool KviIrcContext::unregisterContextWindow(KviWindow * pWnd)
+{
+ if(!m_pContextWindows)return false;
+ if(!m_pContextWindows->removeRef(pWnd))
+ {
+ return false;
+ }
+ if(m_pContextWindows->isEmpty())
+ {
+ delete m_pContextWindows;
+ m_pContextWindows = 0;
+ }
+ return true;
+}
+
+bool KviIrcContext::unregisterDeadQuery(KviQuery * q)
+{
+ if(!m_pDeadQueries)return false;
+ if(!m_pDeadQueries->removeRef(q))
+ {
+ return false;
+ }
+ if(m_pDeadQueries->isEmpty())
+ {
+ delete m_pDeadQueries;
+ m_pDeadQueries = 0;
+ }
+ return true;
+}
+
+void KviIrcContext::createLinksWindow()
+{
+ if(m_pLinksWindow)return;
+ KviKvsScript::run("links.open",m_pConsole);
+}
+
+void KviIrcContext::createListWindow()
+{
+ if(m_pListWindow)return;
+ KviKvsScript::run("list.open",m_pConsole);
+}
+
+void KviIrcContext::destroyConnection()
+{
+ if(!m_pConnection)return;
+ m_pConnection->closeAllChannels();
+ m_pConnection->closeAllQueries();
+
+ if(m_pLinksWindow)m_pLinksWindow->control(EXTERNAL_SERVER_DATA_PARSER_CONTROL_RESET);
+ if(m_pListWindow)m_pListWindow->control(EXTERNAL_SERVER_DATA_PARSER_CONTROL_RESET);
+
+ m_pConsole->connectionDetached();
+
+ // make sure that m_pConnection is already 0 in any
+ // event triggered by KviIrcConnection destructor
+ KviIrcConnection * pTmp = m_pConnection;
+ m_pConnection = 0;
+ delete pTmp;
+}
+
+void KviIrcContext::setState(State eState)
+{
+ if(m_eState == eState)return;
+ m_eState = eState;
+
+ m_pFrame->childContextStateChange(this);
+
+ emit stateChanged();
+
+ if(eState == KviIrcContext::Idle)destroyConnection();
+
+ m_pConsole->updateCaption();
+}
+
+void KviIrcContext::setAsynchronousConnectionData(KviAsynchronousConnectionData * d)
+{
+ if(m_pAsynchronousConnectionData)delete m_pAsynchronousConnectionData;
+ m_pAsynchronousConnectionData = d;
+}
+
+void KviIrcContext::destroyAsynchronousConnectionData()
+{
+ if(!m_pAsynchronousConnectionData)return;
+ delete m_pAsynchronousConnectionData;
+ m_pAsynchronousConnectionData = 0;
+}
+
+void KviIrcContext::loginComplete()
+{
+ setState(Connected);
+}
+
+void KviIrcContext::connectButtonClicked()
+{
+ if(!connection())
+ {
+ if(m_pReconnectTimer)
+ {
+ // reconnection was in progress...
+ delete m_pReconnectTimer;
+ m_pReconnectTimer = 0;
+ destroyAsynchronousConnectionData();
+
+ m_pConsole->outputNoFmt(KVI_OUT_SYSTEMERROR,
+ __tr2qs("Reconnect attempt aborted"));
+
+ return;
+ }
+
+ // No connections in progress
+ m_uConnectAttemptCount = 1;
+ connectToCurrentServer();
+ } else {
+ // Sth is going on
+ terminateConnectionRequest(false);
+ }
+}
+
+void KviIrcContext::connectToCurrentServer()
+{
+ if(m_pReconnectTimer)
+ {
+ delete m_pReconnectTimer;
+ m_pReconnectTimer = 0;
+ }
+
+ m_pConsole->outputNoFmt(KVI_OUT_SYSTEMMESSAGE," "); // spacer
+
+ if(!m_pAsynchronousConnectionData)
+ {
+ // No connection target specified.
+ // If we have a saved target, reuse it
+
+ if(m_pSavedAsynchronousConnectionData)
+ {
+ m_pAsynchronousConnectionData = m_pSavedAsynchronousConnectionData;
+ m_pSavedAsynchronousConnectionData = 0;
+ }
+ }
+
+ if(m_pAsynchronousConnectionData)
+ {
+ // we have a specified connection target (either from outside or saved)
+ if(m_pAsynchronousConnectionData->szServer.isEmpty())
+ {
+ // an empty server might mean "reuse the last server in context"
+ if(m_pAsynchronousConnectionData->bUseLastServerInContext)
+ {
+ if(m_pSavedAsynchronousConnectionData)
+ {
+ // reuse the saved connection data
+ // the server for sure
+ m_pAsynchronousConnectionData->szServer = m_pSavedAsynchronousConnectionData->szServer;
+ m_pAsynchronousConnectionData->uPort = m_pSavedAsynchronousConnectionData->uPort;
+ m_pAsynchronousConnectionData->bPortIsOk = true;
+ m_pAsynchronousConnectionData->bUseIpV6 = m_pSavedAsynchronousConnectionData->bUseIpV6;
+ m_pAsynchronousConnectionData->bUseSSL = m_pSavedAsynchronousConnectionData->bUseSSL;
+ m_pAsynchronousConnectionData->m_pReconnectInfo = m_pSavedAsynchronousConnectionData->m_pReconnectInfo;
+ // and the other info, only if not overridden by the user
+ if(m_pAsynchronousConnectionData->szBindAddress.isEmpty())
+ m_pAsynchronousConnectionData->szBindAddress = m_pSavedAsynchronousConnectionData->szBindAddress;
+ if(m_pAsynchronousConnectionData->szCommandToExecAfterConnect.isEmpty())
+ m_pAsynchronousConnectionData->szCommandToExecAfterConnect = m_pSavedAsynchronousConnectionData->szCommandToExecAfterConnect;
+ if(m_pAsynchronousConnectionData->szLinkFilter.isEmpty())
+ m_pAsynchronousConnectionData->szLinkFilter = m_pSavedAsynchronousConnectionData->szLinkFilter;
+ if(m_pAsynchronousConnectionData->szPass.isEmpty())
+ m_pAsynchronousConnectionData->szPass = m_pSavedAsynchronousConnectionData->szPass;
+ if(m_pAsynchronousConnectionData->szNick.isEmpty())
+ m_pAsynchronousConnectionData->szNick = m_pSavedAsynchronousConnectionData->szNick;
+ if(m_pAsynchronousConnectionData->szInitUMode.isEmpty())
+ m_pAsynchronousConnectionData->szInitUMode = m_pSavedAsynchronousConnectionData->szInitUMode;
+ } else
+ m_pConsole->outputNoFmt(KVI_OUT_SYSTEMWARNING,__tr2qs("This is the first connection in this IRC context: using the global server setting"));
+ } // else it just means "do connect" to the globally selected irc server in the options dialog
+ }
+
+ if(!(m_pAsynchronousConnectionData->szServer.isEmpty()))
+ {
+ // ok , have a server to look for in the db
+ // FIXME: this is a bit ugly... could it be managed in some completly different and nicer way ?
+ KviIrcServerDefinition d;
+ d.szServer = m_pAsynchronousConnectionData->szServer;
+ d.bPortIsValid = m_pAsynchronousConnectionData->bPortIsOk;
+ d.uPort = m_pAsynchronousConnectionData->uPort;
+ d.bIpV6 = m_pAsynchronousConnectionData->bUseIpV6;
+ d.bSSL = m_pAsynchronousConnectionData->bUseSSL;
+ d.szLinkFilter = m_pAsynchronousConnectionData->szLinkFilter;
+ d.szPass = m_pAsynchronousConnectionData->szPass;
+ d.szNick = m_pAsynchronousConnectionData->szNick;
+ d.szInitUMode = m_pAsynchronousConnectionData->szInitUMode;
+ QString szError;
+ if(!g_pIrcServerDataBase->makeCurrentServer(&d,szError))
+ {
+ m_pConsole->outputNoFmt(KVI_OUT_SYSTEMERROR,szError);
+ destroyAsynchronousConnectionData();
+ return;
+ }
+ } // else we just connect to the globally selected irc server in the options dialog
+ }
+
+ KviIrcServerDataBaseRecord * rec = g_pIrcServerDataBase->currentRecord();
+
+ KviIrcNetwork * net;
+ KviIrcServer * srv;
+
+ net = rec ? rec->network() : 0;
+ srv = net ? rec->currentServer() : 0;
+
+ KviProxy * prx = 0;
+
+ if(!srv)
+ {
+ m_pConsole->outputNoFmt(KVI_OUT_SYSTEMERROR,__tr2qs("No servers available. Check the options dialog or use the /SERVER command"));
+ destroyAsynchronousConnectionData();
+ return;
+ }
+
+ if(!net)
+ {
+ // BUG
+ m_pConsole->outputNoFmt(KVI_OUT_SYSTEMERROR,__tr2qs("Ooops.. you've hit a bug in the servers database... I have found a server but not a network..."));
+ destroyAsynchronousConnectionData();
+ return;
+ }
+
+
+ prx = srv->proxyServer(g_pProxyDataBase);
+
+ if(!prx && (srv->proxy()!=-1) && KVI_OPTION_BOOL(KviOption_boolUseProxyHost))
+ {
+ prx = g_pProxyDataBase->currentProxy();
+ if(!prx)
+ {
+ m_pConsole->outputNoFmt(KVI_OUT_SYSTEMWARNING,__tr2qs("No proxy hosts available, resuming direct connection"));
+ }
+ }
+
+ KviStr szBindAddress;
+
+ if(m_pAsynchronousConnectionData)
+ {
+ szBindAddress = m_pAsynchronousConnectionData->szBindAddress;
+ srv->m_pReconnectInfo=m_pAsynchronousConnectionData->m_pReconnectInfo;
+ }
+
+ // Find out the identity we'll be using in this connection
+ // First check the server for one
+
+ const KviUserIdentity * pIdentity = 0;
+
+ QString szUserIdentityId = srv->userIdentityId();
+ if(!szUserIdentityId.isEmpty())
+ pIdentity = KviUserIdentityManager::instance()->findIdentity(szUserIdentityId);
+
+ // If not found, look in the network instead
+ if(!pIdentity)
+ szUserIdentityId = net->userIdentityId();
+
+ if(!szUserIdentityId.isEmpty())
+ pIdentity = KviUserIdentityManager::instance()->findIdentity(szUserIdentityId);
+
+ // If not found, get the default identity (this is GRANTED to be never null, eventually filled up with defaults)
+ pIdentity = KviUserIdentityManager::instance()->defaultIdentity();
+
+
+ if(m_pConnection)delete m_pConnection;
+ m_pConnection = new KviIrcConnection(
+ this,
+ new KviIrcConnectionTarget(
+ net,
+ srv,
+ prx,
+ szBindAddress.ptr()
+ ),
+ new KviUserIdentity(*pIdentity)
+ );
+
+ setState(Connecting);
+
+
+ if(m_pAsynchronousConnectionData)
+ {
+ m_pConnection->stateData()->setCommandToExecAfterConnect(m_pAsynchronousConnectionData->szCommandToExecAfterConnect);
+ destroyAsynchronousConnectionData();
+ }
+
+ m_pConsole->connectionAttached();
+
+ // save stuff for later
+
+ // FIXME: this management of "next" connection should be reviewed a bit anyway
+ if(m_pSavedAsynchronousConnectionData)delete m_pSavedAsynchronousConnectionData;
+ m_pSavedAsynchronousConnectionData = new KviAsynchronousConnectionData();
+ m_pSavedAsynchronousConnectionData->szServer = srv->m_szHostname;
+ m_pSavedAsynchronousConnectionData->uPort = srv->port();
+ m_pSavedAsynchronousConnectionData->bPortIsOk = true;
+ m_pSavedAsynchronousConnectionData->bUseIpV6 = srv->isIpV6();
+ m_pSavedAsynchronousConnectionData->bUseSSL = srv->useSSL();
+ m_pSavedAsynchronousConnectionData->szPass = srv->password();
+ m_pSavedAsynchronousConnectionData->szInitUMode = srv->m_szInitUMode;
+ m_pSavedAsynchronousConnectionData->m_pReconnectInfo=srv->m_pReconnectInfo;
+
+ // this never fails!
+ m_pConnection->start();
+}
+
+void KviIrcContext::connectionFailed(int iError)
+{
+ if(!m_pConnection)return; // this may happen in the destructor!
+
+ m_pConsole->output(KVI_OUT_SYSTEMERROR,
+ __tr2qs("Connection attempt failed [%s]"),
+ m_pConnection->target()->server()->m_szHostname.utf8().data());
+
+ // if the connection has been aborted by the user then just go idle
+ if(iError == KviError_operationAborted)
+ goto enter_idle_state;
+
+ // FIXME: this should stop on critical errors !
+ if(KVI_OPTION_BOOL(KviOption_boolAutoReconnectOnUnexpectedDisconnect))
+ {
+ if((!KVI_OPTION_UINT(KviOption_uintMaxAutoReconnectAttempts) ||
+ (m_uConnectAttemptCount < KVI_OPTION_UINT(KviOption_uintMaxAutoReconnectAttempts))))
+ {
+ m_uConnectAttemptCount++;
+ //FIXME: Multiply the delay by (m_uConnectAttemptCount / 2) so later connects are less frequent.
+ if(!_OUTPUT_MUTE)
+ {
+ QString tmp;
+ KviQString::sprintf(tmp,__tr2qs("Will attempt to reconnect in %d seconds"),KVI_OPTION_UINT(KviOption_uintAutoReconnectDelay));
+ QString num;
+
+ if(!KVI_OPTION_UINT(KviOption_uintMaxAutoReconnectAttempts))
+ KviQString::sprintf(num,__tr2qs("%d"),m_uConnectAttemptCount);
+ else
+ KviQString::sprintf(num,__tr2qs("%d of %d"),
+ m_uConnectAttemptCount,KVI_OPTION_UINT(KviOption_uintMaxAutoReconnectAttempts));
+ tmp += " [" + num + "]";
+ m_pConsole->outputNoFmt(KVI_OUT_SYSTEMMESSAGE,tmp);
+ }
+
+ KviIrcServer oldServer(*(connection()->server()));
+ QString oldNickname = connection()->userInfo()->isAway() ? connection()->userInfo()->nickNameBeforeAway() : connection()->userInfo()->nickName();
+
+ KviAsynchronousConnectionData * d = new KviAsynchronousConnectionData();
+ d->szServer = oldServer.m_szHostname;
+ d->uPort = oldServer.port();
+ d->bPortIsOk = true;
+ d->bUseIpV6 = oldServer.isIpV6();
+ d->bUseSSL = oldServer.useSSL();
+ d->szPass = oldServer.password();
+ d->szNick = oldNickname;
+ d->szInitUMode = oldServer.m_szInitUMode;
+ d->szCommandToExecAfterConnect = "";
+ setAsynchronousConnectionData(d);
+ beginAsynchronousConnect(1000 * KVI_OPTION_UINT(KviOption_uintAutoReconnectDelay));
+
+ setState(Idle); // destroy the actual connection
+
+ return;
+ } else {
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_SYSTEMERROR,__tr2qs("Maximum number of reconnect attempts reached (%d): giving up"),KVI_OPTION_UINT(KviOption_uintMaxAutoReconnectAttempts));
+ }
+ }
+
+ // reset the attempt count
+ m_uConnectAttemptCount = 1;
+
+ if(connection()->server()->cacheIp())
+ {
+ if((((int)iError) == KviError_connectionTimedOut) ||
+ (((int)iError) == KviError_connectionRefused) ||
+ (((int)iError) == KviError_networkUnreachable) ||
+ (((int)iError) == KviError_hostUnreachable))
+ {
+ m_pConsole->output(KVI_OUT_SYSTEMWARNING,__tr2qs("The connection attempt failed while using a cached IP address for the current server"));
+ m_pConsole->output(KVI_OUT_SYSTEMWARNING,__tr2qs("The problem *might* be caused by an updated DNS entry"));
+ m_pConsole->output(KVI_OUT_SYSTEMWARNING,__tr2qs("Try reconnecting with caching disabled"));
+ }
+ }
+
+enter_idle_state:
+ setState(Idle);
+}
+
+void KviIrcContext::connectionEstabilished()
+{
+ //
+ // The connection has been estabilished, the
+ // KviIrcConnection will attempt to login now
+ //
+ m_uConnectAttemptCount = 1;
+
+ bool bStopOutput = false;
+
+ setState(LoggingIn); // this must be set in order for $server and other functions to return the correct values
+
+ bStopOutput = KVS_TRIGGER_EVENT_0_HALTED(KviEvent_OnIrcConnectionEstabilished,m_pConsole);
+
+ if(!bStopOutput)
+ {
+ m_pConsole->output(KVI_OUT_CONNECTION,__tr2qs("%Q established [%s (%s:%u)]"),
+ connection()->socket()->usingSSL() ? &(__tr2qs("Secure connection")) : &(__tr2qs("Connection")),
+ connection()->server()->m_szHostname.utf8().data(),
+ connection()->server()->m_szIp.utf8().data(),
+ connection()->server()->m_uPort);
+ }
+
+ // Add to recent server list (build the url of type irc[6]://<server>:<port>
+ QString url;
+ KviIrcUrl::join(url,connection()->server());
+ g_pApp->addRecentServer(url);
+
+ // save the last server this console used
+ //if(m_pLastIrcServer)delete m_pLastIrcServer;
+ //m_pLastIrcServer = new KviIrcServer(*(connection()->server()));
+}
+
+void KviIrcContext::connectionTerminated()
+{
+ if(!m_pConnection)return; // this may happen in the destructor!
+
+ KviIrcServer oldServer(*(connection()->server()));
+ if(oldServer.m_pReconnectInfo) delete oldServer.m_pReconnectInfo;
+ KviIrcServerReconnectInfo* pInfo = new KviIrcServerReconnectInfo();
+ pInfo->m_szNick = connection()->userInfo()->isAway() ? connection()->userInfo()->nickNameBeforeAway() : connection()->userInfo()->nickName();
+ pInfo->m_bIsAway=connection()->userInfo()->isAway();
+ pInfo->m_szAwayReason=connection()->userInfo()->awayReason();
+
+ // we consider it unexpected when we haven't sent a QUIT message and we're connected
+ // or alternatively when a simulation of such a termination is requested (this is used to keep the queries open etc..)
+ bool bUnexpectedDisconnect = (!(connection()->stateData()->sentQuit())) && (m_eState == KviIrcContext::Connected) ||
+ connection()->stateData()->simulateUnexpectedDisconnect();
+
+ QString szChannels,szProtectedChannels,szPasswords,szCurPass,szCurChan;
+
+ if(bUnexpectedDisconnect)
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolAutoReconnectOnUnexpectedDisconnect))
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolRejoinChannelsAfterReconnect))
+ {
+ // FIXME: THIS SHOULD BE A KviIrcConnection FUNCTION
+ int idx = 0;
+ KviChannel * c;
+ QString szChannels,szProtectedChannels,szPasswords,szCurPass,szCurChan;
+ // first only chans without key, in groups of 4
+ for(c = connection()->channelList()->first();c;c = connection()->channelList()->next())
+ {
+ szCurPass=c->channelKey();
+ szCurChan = c->windowName();
+ if(szCurPass.isEmpty())
+ {
+ if(!szChannels.isEmpty())
+ szChannels.append(",");
+ szChannels.append(szCurChan);
+ } else {
+ if(!szProtectedChannels.isEmpty())
+ szProtectedChannels.append(",");
+ szProtectedChannels.append(szCurChan);
+ if(!szPasswords.isEmpty())
+ szPasswords.append(",");
+ szPasswords.append(szCurPass);
+ }
+ }
+ if( (!szChannels.isEmpty()) || (!szProtectedChannels.isEmpty()) )
+ {
+ pInfo->m_szJoinChannels.append(szProtectedChannels);
+ if(!szProtectedChannels.isEmpty() && !szChannels.isEmpty())
+ pInfo->m_szJoinChannels.append(',');
+ pInfo->m_szJoinChannels.append(szChannels);
+ pInfo->m_szJoinChannels.append(" ");
+ pInfo->m_szJoinChannels.append(szPasswords);
+ }
+ }
+
+
+ if(KVI_OPTION_BOOL(KviOption_boolReopenQueriesAfterReconnect))
+ {
+ for(KviQuery * q = connection()->queryList()->first();q;q = connection()->queryList()->next())
+ {
+ pInfo->m_szOpenQueryes.append(q->target());
+ }
+ }
+ }
+
+ if(KVI_OPTION_BOOL(KviOption_boolKeepChannelsOpenOnUnexpectedDisconnect) || KVI_OPTION_BOOL(KviOption_boolKeepChannelsOpenOnDisconnect))
+ connection()->keepChannelsOpenAfterDisconnect();
+
+ if(KVI_OPTION_BOOL(KviOption_boolKeepQueriesOpenOnUnexpectedDisconnect) || KVI_OPTION_BOOL(KviOption_boolKeepQueriesOpenOnDisconnect))
+ connection()->keepQueriesOpenAfterDisconnect();
+ } else {
+ if(KVI_OPTION_BOOL(KviOption_boolKeepChannelsOpenOnDisconnect))
+ connection()->keepChannelsOpenAfterDisconnect();
+
+ if(KVI_OPTION_BOOL(KviOption_boolKeepQueriesOpenOnDisconnect))
+ connection()->keepQueriesOpenAfterDisconnect();
+ }
+
+ setState(Idle);
+
+ bool bStopOutput = false;
+
+ bStopOutput = KVS_TRIGGER_EVENT_0_HALTED(KviEvent_OnIrcConnectionTerminated,m_pConsole);
+
+ if(!bStopOutput)
+ {
+ m_pConsole->output(KVI_OUT_CONNECTION,__tr2qs("Connection terminated [%s (%s:%u)]"),
+ oldServer.hostName().utf8().data(),
+ oldServer.ip().utf8().data(),
+ oldServer.port());
+ }
+
+ // do reconnect
+
+ if(bUnexpectedDisconnect && KVI_OPTION_BOOL(KviOption_boolAutoReconnectOnUnexpectedDisconnect))
+ {
+ //m_uConnectAttemptCount = 1;
+ if(!_OUTPUT_MUTE)
+ m_pConsole->output(KVI_OUT_CONNECTION,__tr2qs("The connection terminated unexpectedly. Trying to reconnect..."));
+ KviAsynchronousConnectionData * d = new KviAsynchronousConnectionData();
+ d->szServer = oldServer.m_szHostname;
+ d->uPort = oldServer.port();
+ d->bPortIsOk = true;
+ d->bUseIpV6 = oldServer.isIpV6();
+ d->bUseSSL = oldServer.useSSL();
+ d->szPass = oldServer.password();
+ d->szInitUMode = oldServer.m_szInitUMode;
+ d->m_pReconnectInfo = pInfo;
+ setAsynchronousConnectionData(d);
+
+ beginAsynchronousConnect(1000 * KVI_OPTION_UINT(KviOption_uintAutoReconnectDelay));
+ }
+}
+
+void KviIrcContext::beginAsynchronousConnect(unsigned int uDelayInMSecs)
+{
+ if(m_pReconnectTimer)delete m_pReconnectTimer;
+ m_pReconnectTimer = new QTimer(this);
+ connect(m_pReconnectTimer,SIGNAL(timeout()),this,SLOT(asynchronousConnect()));
+ m_pReconnectTimer->start(uDelayInMSecs);
+}
+
+
+void KviIrcContext::asynchronousConnect()
+{
+ if(m_pReconnectTimer)
+ {
+ delete m_pReconnectTimer;
+ m_pReconnectTimer = 0;
+ }
+
+ if(state() != Idle) // need a brutal disconnect here
+ terminateConnectionRequest(true,"Changing server...");
+
+ connectToCurrentServer();
+}
+
+
+void KviIrcContext::terminateConnectionRequest(bool bForce,const QString &szQuitMsg,bool bSimulateUnexpectedDisconnect)
+{
+ if(!connection())return; // hm ?
+
+ if(bSimulateUnexpectedDisconnect)connection()->stateData()->setSimulateUnexpectedDisconnect();
+
+ switch(m_eState)
+ {
+ case Connected:
+ {
+ // was connected : send a quit and abort the connection
+ bool bWasSentQuit = true;
+ if(!connection()->stateData()->sentQuit())
+ {
+ KVS_TRIGGER_EVENT_0(KviEvent_OnDisconnectRequest,m_pConsole);
+ QString szQuit = szQuitMsg;
+ if(szQuit.isEmpty())szQuit = KVI_OPTION_STRING(KviOption_stringQuitMessage);
+ szQuit.replace(";","\\;");
+ szQuit.replace("\n"," ");
+ QString buffer;
+ KviKvsVariant ret;
+ if(KviKvsScript::evaluate(szQuit,console(),0,&ret))
+ ret.asString(buffer);
+ else
+ buffer = szQuit;
+ KviQCString dat = console()->encodeText(buffer);
+ bWasSentQuit = false;
+ connection()->stateData()->setSentQuit();
+ connection()->sendFmtData("QUIT :%s",dat.data() ? dat.data() : ""); // here theoretically we COULD get disconnected
+ } // else it was already sent anyway
+
+ if(KVI_OPTION_BOOL(KviOption_boolForceBrutalQuit) || bWasSentQuit || bForce)
+ {
+ if(!bWasSentQuit)
+ {
+ // idle for some milliseconds in order to allow the quit message to reach
+ // the remote end without breaking the connection
+ KviThread::msleep(100);
+ }
+ // and brutally abort the connection (if it still exists!!!)
+ if(connection())connection()->abort();
+ } else {
+ if(!bWasSentQuit)
+ m_pConsole->outputNoFmt(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Sent QUIT, waiting for the server to close the connection..."));
+ // else it was already sent anyway
+ }
+ }
+ break;
+ case Connecting:
+ case LoggingIn:
+ // was waiting for connection or login, just abort it: it will trigger an error anyway
+ connection()->abort();
+ break;
+ default:
+ // should never end here!
+ __ASSERT(false);
+ break;
+ }
+}
+
+void KviIrcContext::timerEvent(QTimerEvent *e)
+{
+ if(e->timerId() != m_iHeartbeatTimerId)
+ {
+ QObject::timerEvent(e);
+ return;
+ }
+
+ // our heartbeat
+
+ kvi_time_t tNow = kvi_unixTime();
+
+ if(m_pConnection)
+ m_pConnection->heartbeat(tNow);
+}
+
diff --git a/src/kvirc/kernel/kvi_irccontext.h b/src/kvirc/kernel/kvi_irccontext.h
new file mode 100644
index 00000000..07c6ef97
--- /dev/null
+++ b/src/kvirc/kernel/kvi_irccontext.h
@@ -0,0 +1,188 @@
+#ifndef _KVI_IRCCONTEXT_H_
+#define _KVI_IRCCONTEXT_H_
+//=============================================================================
+//
+// File : kvi_irccontext.h
+// Created on Sun 09 May 2004 20:37:46 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_pointerlist.h"
+#include <qobject.h>
+
+class KviChannel;
+class KviQuery;
+class KviQuery;
+class KviFrame;
+class KviIrcConnection;
+class KviExternalServerDataParser;
+class KviAsynchronousConnectionData;
+class KviIrcDataStreamMonitor;
+class KviWindow;
+class QTimer;
+class KviConsole;
+class KviIrcNetwork;
+class KviIrcServer;
+/*
+ KviIrcContext is the structure that groups the objects and resources
+ usable for a single irc connection: a console, a set of channels and queries,
+ and a KviIrcConnection object.
+
+ The objects grouped here are mostly permanent across connections.
+
+ Each irc context has its own unique numeric identifier. The identifiers start
+ from 1 so 0 is an invalid irc context id (this is useful in the scripting engine).
+
+ The irc context is created in the KviConsole constructor and destroyed
+ in the KviConsole destructor. No other class can allocate KviIrcContext objects.
+*/
+
+class KVIRC_API KviIrcContext : public QObject
+{
+ friend class KviConsole;
+ friend class KviChannel;
+ friend class KviQuery;
+ friend class KviIrcConnection;
+ friend class KviIrcContextToolBar;
+ Q_OBJECT
+protected:
+ KviIrcContext(KviConsole * pConsole); // only KviConsole can create this
+public:
+ ~KviIrcContext();
+public:
+ enum State
+ {
+ Idle, // connection() == 0
+ Connecting, // connection() != 0
+ LoggingIn, // connection() != 0
+ Connected // connection() != 0
+ };
+protected:
+ KviConsole * m_pConsole; // shallow, never null
+ KviIrcConnection * m_pConnection;
+
+ unsigned int m_uId; // this irc context id
+
+ State m_eState; // this context state
+
+ // helper pointers
+ KviFrame * m_pFrame; // the owning frame, shallow, never null
+
+ // permanent links and list window
+ KviExternalServerDataParser * m_pLinksWindow;
+ KviExternalServerDataParser * m_pListWindow;
+
+ KviAsynchronousConnectionData * m_pAsynchronousConnectionData; // owned, may be null
+ KviAsynchronousConnectionData * m_pSavedAsynchronousConnectionData; // owned, may be null, this is used to reconnect to the last server in this context
+
+ unsigned int m_uConnectAttemptCount;
+ QTimer * m_pReconnectTimer;
+
+ KviPointerList<KviIrcDataStreamMonitor> * m_pMonitorList; // owned, may be null
+
+ // dead channels and queries
+ KviPointerList<KviChannel> * m_pDeadChannels;
+ KviPointerList<KviQuery> * m_pDeadQueries;
+ // other context bound windows
+ KviPointerList<KviWindow> * m_pContextWindows;
+
+ int m_iHeartbeatTimerId;
+public:
+ unsigned int id(){ return m_uId; };
+ // never null and always the same!
+ KviConsole * console(){ return m_pConsole; };
+ // never null and always the same
+ KviFrame * frame(){ return m_pFrame; };
+ // may be null and may change!
+ KviIrcConnection * connection(){ return m_pConnection; };
+ // state
+ State state(){ return m_eState; };
+ bool isConnected(){ return m_eState == Connected; };
+ bool isLoggingIn(){ return m_eState == LoggingIn; };
+ // dead channels and queries
+ void closeAllDeadChannels();
+ void closeAllDeadQueries();
+ bool unregisterDeadChannel(KviChannel * c);
+ bool unregisterDeadQuery(KviQuery * q);
+ void registerDeadChannel(KviChannel * c);
+ void registerDeadQuery(KviQuery * q);
+ KviChannel * findDeadChannel(const QString &name);
+ KviQuery * findDeadQuery(const QString &nick);
+ KviQuery * firstDeadQuery();
+ // other windows bound to the context
+ void closeAllContextWindows();
+ void registerContextWindow(KviWindow * pWnd);
+ bool unregisterContextWindow(KviWindow * pWnd);
+
+ KviPointerList<KviIrcDataStreamMonitor> * monitorList(){ return m_pMonitorList; };
+
+ // links window
+ void createLinksWindow();
+ void setLinksWindowPointer(KviExternalServerDataParser * l){ m_pLinksWindow = l; };
+ KviExternalServerDataParser * linksWindow(){ return m_pLinksWindow; };
+
+ // list window
+ void createListWindow();
+ void setListWindowPointer(KviExternalServerDataParser * l){ m_pListWindow = l; };
+ KviExternalServerDataParser * listWindow(){ return m_pListWindow; };
+
+ void setAsynchronousConnectionData(KviAsynchronousConnectionData * d);
+ KviAsynchronousConnectionData * asynchronousConnectionData(){ return m_pAsynchronousConnectionData; };
+ void destroyAsynchronousConnectionData();
+ // used by KviConsole (for now) and KviUserParser
+ void connectToCurrentServer();
+
+ void beginAsynchronousConnect(unsigned int uDelayInMSecs);
+
+ void registerDataStreamMonitor(KviIrcDataStreamMonitor * m);
+ void unregisterDataStreamMonitor(KviIrcDataStreamMonitor *m);
+
+ void terminateConnectionRequest(bool bForce,const QString &szQuitMessage = QString::null,bool bSimulateUnexpectedDisconnect = false);
+
+protected:
+ // called by KviIrcContextToolBar: this will DIE in favor of connectOrDisconnect()
+ void connectButtonClicked();
+ // used by KviConsole (for now)
+ void destroyConnection();
+ // for KviConsole (for now) . later will be used only internally
+ void setState(State eState);
+ // called by KviIrcConnection
+ void loginComplete();
+ // our heartbeat timer event
+ virtual void timerEvent(QTimerEvent *e);
+public:
+ void connectOrDisconnect(){ connectButtonClicked(); };
+protected:
+ //
+ // KviIrcConnection interface
+ //
+ void connectionFailed(int iError);
+ void connectionEstabilished();
+ void connectionTerminated();
+signals:
+ void stateChanged();
+protected slots:
+ void asynchronousConnect();
+ void unhighlightAllWindows();
+};
+
+
+#endif //!_KVI_IRCCONTEXT_H_
diff --git a/src/kvirc/kernel/kvi_ircdatastreammonitor.cpp b/src/kvirc/kernel/kvi_ircdatastreammonitor.cpp
new file mode 100644
index 00000000..c4b43fc1
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircdatastreammonitor.cpp
@@ -0,0 +1,41 @@
+//=============================================================================
+//
+// File : kvi_ircdatastreammonitor.cpp
+// Created on Sun 04 Jul 2004 21:27:22 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_ircdatastreammonitor.h"
+#include "kvi_irccontext.h"
+
+KviIrcDataStreamMonitor::KviIrcDataStreamMonitor(KviIrcContext * pContext)
+: KviHeapObject()
+{
+ m_pMyContext = pContext;
+ m_pMyContext->registerDataStreamMonitor(this);
+}
+
+KviIrcDataStreamMonitor::~KviIrcDataStreamMonitor()
+{
+ m_pMyContext->unregisterDataStreamMonitor(this);
+}
+
diff --git a/src/kvirc/kernel/kvi_ircdatastreammonitor.h b/src/kvirc/kernel/kvi_ircdatastreammonitor.h
new file mode 100644
index 00000000..90a10d22
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircdatastreammonitor.h
@@ -0,0 +1,50 @@
+#ifndef _KVI_IRCDATASTREAMMONITOR_H_
+#define _KVI_IRCDATASTREAMMONITOR_H_
+//=============================================================================
+//
+// File : kvi_ircdatastreammonitor.h
+// Created on Sun 04 Jul 2004 21:27:22 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_heapobject.h"
+
+class KviIrcContext;
+
+class KVIRC_API KviIrcDataStreamMonitor : public KviHeapObject
+{
+public:
+ KviIrcDataStreamMonitor(KviIrcContext * pContext);
+ virtual ~KviIrcDataStreamMonitor();
+protected:
+ KviIrcContext * m_pMyContext;
+public:
+ // message is null terminated
+ virtual void incomingMessage(const char * message){};
+ // message is NOT null terminated! For proxy connections it might spit out binary data!
+ virtual void outgoingMessage(const char * message,int len){};
+ virtual void connectionInitiated(){};
+ virtual void connectionTerminated(){};
+ virtual void die(){ delete this; };
+};
+
+
+#endif //!_KVI_IRCDATASTREAMMONITOR_H_
diff --git a/src/kvirc/kernel/kvi_irclink.cpp b/src/kvirc/kernel/kvi_irclink.cpp
new file mode 100644
index 00000000..8c79507c
--- /dev/null
+++ b/src/kvirc/kernel/kvi_irclink.cpp
@@ -0,0 +1,406 @@
+//=============================================================================
+//
+// File : kvi_irclink.cpp
+// Created on Mon 03 May 2004 01:45:42 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_irclink.h"
+#include "kvi_dns.h"
+#include "kvi_locale.h"
+#include "kvi_ircserverdb.h"
+#include "kvi_proxydb.h"
+#include "kvi_error.h"
+#include "kvi_out.h"
+#include "kvi_options.h"
+#include "kvi_ircsocket.h"
+#include "kvi_console.h"
+#include "kvi_netutils.h"
+#include "kvi_internalcmd.h"
+#include "kvi_frame.h"
+#include "kvi_mexlinkfilter.h"
+#include "kvi_garbage.h"
+#include "kvi_malloc.h"
+#include "kvi_memmove.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectiontarget.h"
+#include "kvi_ircconnectiontargetresolver.h"
+#include "kvi_ircsocket.h"
+#include "kvi_databuffer.h"
+
+#define __KVI_DEBUG__
+#include "kvi_debug.h"
+
+#include <qtimer.h>
+
+extern KVIRC_API KviIrcServerDataBase * g_pIrcServerDataBase;
+extern KVIRC_API KviProxyDataBase * g_pProxyDataBase;
+extern KVIRC_API KviGarbageCollector * g_pGarbageCollector;
+
+
+
+KviIrcLink::KviIrcLink(KviIrcConnection * pConnection)
+: QObject()
+{
+ m_pConnection = pConnection;
+ m_pTarget = pConnection->target();
+ m_pConsole = m_pConnection->console();
+ m_pSocket = 0;
+
+ m_pLinkFilter = 0;
+
+ m_pResolver = 0;
+
+ m_pReadBuffer = 0; // incoming data buffer
+ m_uReadBufferLen = 0; // incoming data buffer length
+ m_uReadPackets = 0; // total packets read per session
+
+ m_eState = Idle;
+}
+
+KviIrcLink::~KviIrcLink()
+{
+ if(m_pResolver)delete m_pResolver;
+ destroySocket();
+ if(m_pReadBuffer)kvi_free(m_pReadBuffer);
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// KviIrcSocket management
+//
+
+void KviIrcLink::linkFilterDestroyed()
+{
+ // ops.. the link filter has been destroyed without permission :D
+ // this should NEVER happen (?)
+
+ m_pLinkFilter = 0;
+ m_pConsole->output(KVI_OUT_SYSTEMWARNING,
+ __tr2qs("Ops... for some reason the link filter object has been destroyed"));
+
+}
+
+void KviIrcLink::destroySocket()
+{
+ if(m_pLinkFilter)
+ {
+ QObject::disconnect(m_pLinkFilter,0,this,0);
+ // the module extension server links must be destroyed in the module that provided it
+ m_pLinkFilter->die();
+ m_pLinkFilter = 0;
+ }
+
+ if(m_pSocket)
+ {
+ delete m_pSocket;
+ m_pSocket = 0;
+ }
+}
+
+void KviIrcLink::createSocket(const QString &szLinkFilterName)
+{
+ destroySocket(); // make sure we do not leak memory
+
+ m_pSocket = new KviIrcSocket(this);
+
+ if(szLinkFilterName.isEmpty())return;
+
+ if(KviQString::equalCI(szLinkFilterName,"irc"))return;
+
+ m_pLinkFilter = (KviMexLinkFilter *)g_pModuleExtensionManager->allocateExtension("linkfilter",
+ szLinkFilterName.utf8().data(),m_pConsole,0,this,szLinkFilterName.utf8().data());
+
+ if(m_pLinkFilter)
+ {
+ connect(m_pLinkFilter,SIGNAL(destroyed()),this,SLOT(linkFilterDestroyed()));
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,
+ __tr2qs("Using filtered IRC protocol: Link filter is \"%Q\""),&szLinkFilterName);
+ return;
+ }
+
+ m_pConsole->output(KVI_OUT_SYSTEMWARNING,
+ __tr2qs("Failed to set up the link filter \"%Q\", will try with plain IRC"),&szLinkFilterName);
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// Connection related operations
+//
+
+void KviIrcLink::abort()
+{
+ if(m_pSocket)
+ {
+ m_pSocket->abort();
+ return;
+ }
+ if(m_pResolver)
+ {
+ m_pResolver->abort();
+ return;
+ }
+}
+
+void KviIrcLink::start()
+{
+ m_eState = Connecting;
+ if(m_pResolver)delete m_pResolver; // this should never happen
+ m_pResolver = new KviIrcConnectionTargetResolver(m_pConnection);
+ connect(m_pResolver,SIGNAL(terminated()),this,SLOT(resolverTerminated()));
+ m_pResolver->start(m_pTarget);
+}
+
+void KviIrcLink::resolverTerminated()
+{
+ if(!m_pResolver)
+ {
+ debug("Oops... resoverTerminated() triggered without a resolver ?");
+ return;
+ }
+
+ if(m_pResolver->status() != KviIrcConnectionTargetResolver::Success)
+ {
+ m_eState = Idle;
+ m_pConnection->linkAttemptFailed(m_pResolver->lastError());
+ return;
+ }
+
+ // resolver terminated succesfully
+ delete m_pResolver;
+ m_pResolver = 0;
+
+ createSocket(m_pTarget->server()->linkFilter());
+
+ int iErr = m_pSocket->startConnection(m_pTarget->server(),m_pTarget->proxy(),
+ m_pTarget->bindAddress().isEmpty() ? 0 : m_pTarget->bindAddress().utf8().data());
+
+ if(iErr != KviError_success)
+ {
+ QString strDescription(KviError::getDescription(iErr));
+ m_pConsole->output(KVI_OUT_SYSTEMERROR,
+ __tr2qs("Failed to start the connection: %Q"),
+ &strDescription);
+// &(KviError::getDescription(iErr)));
+
+ m_eState = Idle;
+ m_pConnection->linkAttemptFailed(iErr);
+ }
+}
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// Incoming data processing
+//
+
+void KviIrcLink::processData(char * buffer,int len)
+{
+ if(m_pLinkFilter)
+ {
+ m_pLinkFilter->processData(buffer,len);
+ return;
+ }
+
+ register char *p=buffer;
+ char *beginOfCurData = buffer;
+ int bufLen = 0;
+ char *messageBuffer = (char *)kvi_malloc(1);
+
+ while(*p)
+ {
+ if((*p == '\r' )||(*p == '\n'))
+ {
+ //found a CR or LF...
+ //prepare a message buffer
+ bufLen = p - beginOfCurData;
+ //check for previous unterminated data
+ if(m_uReadBufferLen > 0)
+ {
+ __range_valid(m_pReadBuffer);
+ messageBuffer = (char *)kvi_realloc(messageBuffer,bufLen + m_uReadBufferLen + 1);
+ kvi_memmove(messageBuffer,m_pReadBuffer,m_uReadBufferLen);
+ kvi_memmove((void *)(messageBuffer + m_uReadBufferLen),beginOfCurData,bufLen);
+ *(messageBuffer + bufLen + m_uReadBufferLen) = '\0';
+ m_uReadBufferLen = 0;
+ kvi_free(m_pReadBuffer);
+ m_pReadBuffer = 0;
+ } else {
+ __range_invalid(m_pReadBuffer);
+ messageBuffer = (char *)kvi_realloc(messageBuffer,bufLen + 1);
+ kvi_memmove(messageBuffer,beginOfCurData,bufLen);
+ *(messageBuffer + bufLen) = '\0';
+ }
+ m_uReadPackets++;
+
+ // FIXME: actually it can happen that the socket gets disconnected
+ // in a incomingMessage() call.
+ // The problem might be that some other parts of kvirc assume
+ // that the irc context still exists after a failed write to the socket
+ // (some parts don't even check the return value!)
+ // If the problem presents itself again then the solution is:
+ // disable queue flushing for the "incomingMessage" call
+ // and just call queue_insertMessage()
+ // then after the call terminates flush the queue (eventually detecting
+ // the disconnect and thus destroying the irc context).
+ // For now we try to rely on the remaining parts to handle correctly
+ // such conditions. Let's see...
+ if(strlen(messageBuffer)>0)
+ m_pConnection->incomingMessage(messageBuffer);
+
+ if(m_pSocket->state() != KviIrcSocket::Connected)
+ {
+ // Disconnected in KviConsole::incomingMessage() call.
+ // This may happen for several reasons (local event loop
+ // with the user hitting the disconnect button, a scripting
+ // handler event that disconnects explicitly)
+ //
+ // We handle it by simply returning control to readData() which
+ // will return immediately (and safely) control to Qt
+ kvi_free(messageBuffer);
+ return;
+ }
+
+ while(*p && ((*p=='\r')||(*p=='\n')) )p++;
+ beginOfCurData = p;
+
+ } else p++;
+ }
+
+ //now *p == '\0'
+ //beginOfCurData points to '\0' if we have
+ //no more stuff to parse , or points to something
+ //different than '\r' or '\n'...
+ if(*beginOfCurData)
+ {
+ //Have remaining data...in the local buffer
+ bufLen = p - beginOfCurData;
+ if(m_uReadBufferLen > 0)
+ {
+ //and there was more stuff saved... (really slow connection)
+ __range_valid(m_pReadBuffer);
+ m_pReadBuffer =(char *)kvi_realloc(m_pReadBuffer,m_uReadBufferLen + bufLen);
+ kvi_memmove((void *)(m_pReadBuffer+m_uReadBufferLen),beginOfCurData,bufLen);
+ m_uReadBufferLen += bufLen;
+ } else {
+ //
+ __range_invalid(m_pReadBuffer);
+ m_uReadBufferLen = bufLen;
+ m_pReadBuffer =(char *)kvi_malloc(m_uReadBufferLen);
+ kvi_memmove(m_pReadBuffer,beginOfCurData,m_uReadBufferLen);
+ }
+ //The m_pReadBuffer contains at max 1 irc message...
+ //that can not be longer than 510 bytes (the message is not CRLF terminated)
+ // FIXME: Is this limit *really* valid on all servers ?
+ if(m_uReadBufferLen > 510)debug("WARNING : Receiving an invalid irc message from server.");
+ }
+ kvi_free(messageBuffer);
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// Outgoing data processing
+//
+
+bool KviIrcLink::sendPacket(KviDataBuffer * pData)
+{
+ if(!m_pSocket)
+ {
+ delete pData;
+ pData = 0;
+ return false;
+ }
+
+ // if we have a filter, let it do its job
+ if(m_pLinkFilter)
+ return m_pLinkFilter->sendPacket(pData);
+
+ return m_pSocket->sendPacket(pData);
+}
+
+void KviIrcLink::socketStateChange()
+{
+ switch(m_pSocket->state())
+ {
+ case KviIrcSocket::Connected:
+ m_eState = Connected;
+ m_pConnection->linkEstabilished();
+ break;
+ case KviIrcSocket::Idle:
+ {
+ State old = m_eState;
+ m_eState = Idle;
+ switch(old)
+ {
+ case Connecting:
+ m_pConnection->linkAttemptFailed(m_pSocket->lastError());
+ break;
+ case Connected:
+ m_pConnection->linkTerminated();
+ break;
+ default: // currently can be only Idle
+ debug("Ooops... got a KviIrcSocket::Idle state change when KviIrcLink::m_eState was Idle");
+ break;
+ }
+ }
+ break;
+ case KviIrcSocket::Connecting:
+ m_pConsole->output(KVI_OUT_CONNECTION,__tr2qs("Contacting %Q %s (%s) on port %u"),
+ connection()->proxy() ? &(__tr2qs("proxy host")) : &(__tr2qs("IRC server")),
+ connection()->proxy() ? connection()->proxy()->m_szHostname.ptr() : connection()->server()->m_szHostname.utf8().data(),
+ connection()->proxy() ? connection()->proxy()->m_szIp.ptr() : connection()->server()->m_szIp.utf8().data(),
+ connection()->proxy() ? connection()->proxy()->m_uPort : connection()->server()->m_uPort);
+ break;
+ case KviIrcSocket::SSLHandshake:
+ m_pConsole->output(KVI_OUT_CONNECTION,__tr2qs("Low-level transport connection established [%s (%s:%u)]"),
+ connection()->proxy() ? connection()->proxy()->m_szHostname.ptr() : connection()->server()->m_szHostname.utf8().data(),
+ connection()->proxy() ? connection()->proxy()->m_szIp.ptr() : connection()->server()->m_szIp.utf8().data(),
+ connection()->proxy() ? connection()->proxy()->m_uPort : connection()->server()->m_uPort);
+ m_pConsole->outputNoFmt(KVI_OUT_CONNECTION,__tr2qs("Starting Secure Socket Layer handshake"));
+ break;
+ case KviIrcSocket::ProxyLogin:
+ m_pConsole->output(KVI_OUT_CONNECTION,__tr2qs("%Q established [%s (%s:%u)]"),
+ connection()->socket()->usingSSL() ? &(__tr2qs("Secure proxy connection")) : &(__tr2qs("Proxy connection")),
+ connection()->proxy()->m_szHostname.ptr(),
+ connection()->proxy()->m_szIp.ptr(),
+ connection()->proxy()->m_uPort);
+ m_pConsole->outputNoFmt(KVI_OUT_CONNECTION,__tr2qs("Negotiating relay information"));
+ break;
+ case KviIrcSocket::ProxyFinalV4:
+ m_pConsole->outputNoFmt(KVI_OUT_CONNECTION,__tr2qs("Sent connection request, waiting for acknowledgement"));
+ break;
+ case KviIrcSocket::ProxyFinalV5:
+ m_pConsole->outputNoFmt(KVI_OUT_CONNECTION,__tr2qs("Sent target host data, waiting for acknowledgement"));
+ break;
+ case KviIrcSocket::ProxySelectAuthMethodV5:
+ m_pConsole->outputNoFmt(KVI_OUT_CONNECTION,__tr2qs("Sent auth method request, waiting for acknowledgement"));
+ break;
+ case KviIrcSocket::ProxyUserPassV5:
+ m_pConsole->outputNoFmt(KVI_OUT_CONNECTION,__tr2qs("Sent username and password, waiting for acknowledgement"));
+ break;
+ case KviIrcSocket::ProxyFinalHttp:
+ m_pConsole->outputNoFmt(KVI_OUT_CONNECTION,__tr2qs("Sent connection request, waiting for \"HTTP 200\" acknowledgement"));
+ break;
+ }
+}
+
diff --git a/src/kvirc/kernel/kvi_irclink.h b/src/kvirc/kernel/kvi_irclink.h
new file mode 100644
index 00000000..bb220ecf
--- /dev/null
+++ b/src/kvirc/kernel/kvi_irclink.h
@@ -0,0 +1,122 @@
+#ifndef _KVI_IRCLINK_H_
+#define _KVI_IRCLINK_H_
+//=============================================================================
+//
+// File : kvi_irclink.h
+// Created on Mon 03 May 2004 01:45:42 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include <qobject.h>
+
+class KviConsole;
+class KviIrcServer;
+class KviProxy;
+class KviIrcSocket;
+class KviDns;
+class KviIrcConnection;
+class KviIrcConnectionTarget;
+class KviIrcConnectionTargetResolver;
+class KviDataBuffer;
+class KviMexLinkFilter;
+
+
+class KVIRC_API KviIrcLink : public QObject
+{
+ friend class KviIrcConnection; // upper protocol in the stack
+ friend class KviIrcSocket; // lower protocol in the stack
+ Q_OBJECT
+public:
+ enum State { Idle, Connecting, Connected };
+protected:
+ // only KviConsole can create this
+ // pConsole must NOT be null
+ // pServer is a shallow pointer: Connection makes a copy of it internally, must NOT be null
+ // pProxy may be null if a proxy is not desicred. Connection makes a copy of it internally
+ KviIrcLink(KviIrcConnection * pConnection);
+ ~KviIrcLink();
+private:
+ KviIrcConnection * m_pConnection; // shallow, never null
+ KviIrcConnectionTarget * m_pTarget; // shallow, never null
+ KviConsole * m_pConsole; // shallow, never null
+ KviIrcSocket * m_pSocket; // owned, may be null!
+ KviMexLinkFilter * m_pLinkFilter; // owned, may be null!
+
+ State m_eState;
+
+ char * m_pReadBuffer;
+ unsigned int m_uReadBufferLen;
+ unsigned int m_uReadPackets;
+
+ KviIrcConnectionTargetResolver * m_pResolver; // owned
+public:
+ // da socket(): may be null!
+ KviIrcSocket * socket(){ return m_pSocket; };
+ // da connection: never null
+ KviIrcConnection * connection(){ return m_pConnection; };
+ // da console: never null
+ KviConsole * console(){ return m_pConsole; };
+ State state(){ return m_eState; };
+protected:
+ //
+ // interface for KviIrcConnection (up)
+ //
+
+ // This is used by KviIrcConnection::send*()
+ // This should be used to intercept the outgoing packets
+ // when implementing a new protocol
+ virtual bool sendPacket(KviDataBuffer * pData);
+ // this aborts any connection or attempt
+ void abort();
+protected:
+ //
+ // local overridables (called internally)
+ //
+
+ // This is the function used to start a connection attempt.
+ // It starts the server or proxy DNS lookup
+ // The function MUST be asynchronous: it must return succesfully
+ // and report any error by using m_pConnection->linkAttemptFailed()
+ void start();
+protected:
+ //
+ // interface for KviIrcSocket (down)
+ //
+
+ // This is called by KviIrcSocket to process a packet
+ // of raw data from the server. The buffer is iLength+1
+ // bytes long and contains a null terminator
+ void processData(char * buffer,int iLength);
+ // this is called at each state change
+ void socketStateChange();
+protected slots:
+ void linkFilterDestroyed();
+private:
+ void destroySocket();
+ void createSocket(const QString &szLinkFilterName);
+signals:
+ void connectionFailed(); // the connection attempt has failed
+private slots:
+ void resolverTerminated();
+};
+
+#endif //!_KVI_IRCLINK_H_
diff --git a/src/kvirc/kernel/kvi_ircsocket.cpp b/src/kvirc/kernel/kvi_ircsocket.cpp
new file mode 100644
index 00000000..45df5617
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircsocket.cpp
@@ -0,0 +1,1910 @@
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// File : kvi_ircsocket.cpp
+// Creation date : Tue Jul 30 19:25:18 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#define __KVIRC__
+
+#include "kvi_ircsocket.h"
+#include "kvi_ircserver.h"
+#include "kvi_proxydb.h"
+#include "kvi_netutils.h"
+#include "kvi_settings.h"
+#include "kvi_error.h"
+#include "kvi_locale.h"
+#include "kvi_malloc.h"
+#include "kvi_debug.h"
+#include "kvi_string.h"
+#include "kvi_options.h"
+#include "kvi_memmove.h"
+#include "kvi_socket.h"
+#include "kvi_console.h"
+#include "kvi_out.h"
+#include "kvi_irclink.h"
+#include "kvi_ircconnection.h"
+#include "kvi_databuffer.h"
+
+#ifdef COMPILE_SSL_SUPPORT
+ #include "kvi_sslmaster.h"
+#endif
+
+#include <qtimer.h>
+#include <qsocketnotifier.h>
+
+#ifndef COMPILE_ON_WINDOWS
+ #include <unistd.h> //for gettimeofday()
+#endif
+//#include <fcntl.h>
+//#include <errno.h>
+
+// FIXME: #warning "Lag-o-meter"
+
+unsigned int g_uNextIrcLinkId = 1;
+
+
+
+KviIrcSocket::KviIrcSocket(KviIrcLink * pLink)
+: QObject()
+{
+ m_uId = g_uNextIrcLinkId;
+ g_uNextIrcLinkId++;
+
+ m_pLink = pLink;
+ m_pConsole = m_pLink->console();
+
+ m_state = Idle; // current socket state
+
+ m_pRsn = 0; // read socket notifier
+ m_pWsn = 0; // write socket notifier
+ m_sock = KVI_INVALID_SOCKET; // socket
+
+ m_pIrcServer = 0; // current server data
+ m_pProxy = 0; // current proxy data
+
+ m_pTimeoutTimer = 0; // timeout for connect()
+
+ m_uReadBytes = 0; // total read bytes per session
+ m_uSentBytes = 0; // total sent bytes per session
+ m_uSentPackets = 0; // total packets sent per session
+
+ m_pSendQueueHead = 0; // data queue
+ m_pSendQueueTail = 0; //
+
+ m_iLastError = KviError_success;
+
+#ifdef COMPILE_SSL_SUPPORT
+ m_pSSL = 0;
+#endif
+
+ m_tAntiFloodLastMessageTime.tv_sec = 0;
+ m_tAntiFloodLastMessageTime.tv_usec = 0;
+
+ if(KVI_OPTION_UINT(KviOption_uintSocketQueueFlushTimeout) < 100)
+ KVI_OPTION_UINT(KviOption_uintSocketQueueFlushTimeout) = 100; // this is our minimum , we don't want to lag the app
+
+ m_bInProcessData = false;
+
+ m_pFlushTimer = new QTimer(); // queue flush timer
+ connect(m_pFlushTimer,SIGNAL(timeout()),this,SLOT(flushSendQueue()));
+}
+
+KviIrcSocket::~KviIrcSocket()
+{
+ reset();
+ delete m_pFlushTimer;
+}
+
+
+void KviIrcSocket::reset()
+{
+#ifdef COMPILE_SSL_SUPPORT
+ if(m_pSSL)
+ {
+ KviSSLMaster::freeSSL(m_pSSL);
+ m_pSSL = 0;
+ }
+#endif
+ if(m_pIrcServer)
+ {
+ delete m_pIrcServer;
+ m_pIrcServer = 0;
+ }
+ if(m_pProxy)
+ {
+ delete m_pProxy;
+ m_pProxy = 0;
+ }
+ if(m_pRsn)
+ {
+ delete m_pRsn;
+ m_pRsn = 0;
+ }
+ if(m_pWsn)
+ {
+ delete m_pWsn;
+ m_pWsn = 0;
+ }
+ if(kvi_socket_isValid(m_sock))
+ {
+ kvi_socket_destroy(m_sock);
+ m_sock = KVI_INVALID_SOCKET;
+ }
+ if(m_pTimeoutTimer)
+ {
+ m_pTimeoutTimer->stop();
+ delete m_pTimeoutTimer;
+ m_pTimeoutTimer = 0;
+ }
+
+ m_bInProcessData = false;
+
+ m_uReadBytes = 0;
+ m_uSentBytes = 0;
+ m_uSentPackets = 0;
+ m_tAntiFloodLastMessageTime.tv_sec = 0;
+ m_tAntiFloodLastMessageTime.tv_usec = 0;
+
+ m_bInProcessData = false;
+
+ if(m_pFlushTimer->isActive())m_pFlushTimer->stop();
+ queue_removeAllMessages();
+
+ setState(Idle);
+}
+
+void KviIrcSocket::outputSSLMessage(const QString &szMsg)
+{
+ m_pConsole->output(KVI_OUT_SSL,__tr2qs("[SSL]: %Q"),&szMsg);
+}
+
+void KviIrcSocket::outputSSLError(const QString &szMsg)
+{
+ m_pConsole->output(KVI_OUT_SSL,__tr2qs("[SSL ERROR]: %Q"),&szMsg);
+}
+
+void KviIrcSocket::outputProxyMessage(const QString &szMsg)
+{
+ QStringList list=QStringList::split("\n",szMsg);
+ for(QStringList::Iterator it = list.begin(); it != list.end(); ++it)
+ {
+ QString szTemporary = (*it).stripWhiteSpace();
+ m_pConsole->output(KVI_OUT_SOCKETMESSAGE,__tr2qs("[PROXY]: %Q"),&(szTemporary));
+ }
+}
+
+void KviIrcSocket::outputProxyError(const QString &szMsg)
+{
+ QStringList list=QStringList::split("\n",szMsg);
+ for(QStringList::Iterator it = list.begin(); it != list.end(); ++it)
+ {
+ QString szTemporary = (*it).stripWhiteSpace();
+ m_pConsole->output(KVI_OUT_SOCKETERROR,__tr2qs("[PROXY ERROR]: %Q"),&(szTemporary));
+ }
+
+}
+
+void KviIrcSocket::outputSocketMessage(const QString &szMsg)
+{
+ m_pConsole->output(KVI_OUT_SOCKETMESSAGE,__tr2qs("[SOCKET]: %Q"),&szMsg);
+}
+
+void KviIrcSocket::outputSocketError(const QString &szMsg)
+{
+ m_pConsole->output(KVI_OUT_SOCKETERROR,__tr2qs("[SOCKET ERROR]: %Q"),&szMsg);
+}
+
+
+void KviIrcSocket::outputSocketWarning(const QString &szMsg)
+{
+ m_pConsole->output(KVI_OUT_SOCKETWARNING,__tr2qs("[SOCKET WARNING]: %Q"),&szMsg);
+}
+
+void KviIrcSocket::setState(SocketState st)
+{
+ if(st != m_state)
+ {
+ m_state = st;
+ m_pLink->socketStateChange();
+ }
+}
+
+void KviIrcSocket::raiseError(int iError)
+{
+ m_iLastError = iError;
+ //m_pConsole->socketError(iError);
+ if( (m_iLastError==KviError_remoteEndClosedConnection) && ( m_state == ProxyHttpError) )
+ outputSocketMessage(KviError::getDescription(iError));
+ else
+ outputSocketError(KviError::getDescription(iError));
+}
+
+int KviIrcSocket::startConnection(KviIrcServer *srv,KviProxy * prx,const char * bindAddress)
+{
+ // Attempts to estabilish an IRC connection
+ // to the server specified by *srv.
+ // Uses the proxy *prx if not 0
+ if(m_state != Idle)return KviError_anotherConnectionInProgress;
+
+ // Coherent state, thnx.
+ reset();
+
+ if(srv->useSSL())
+ {
+#ifndef COMPILE_SSL_SUPPORT
+ return KviError_noSSLSupport;
+#endif //!COMPILE_SSL_SUPPORT
+ }
+
+ // Copy the server
+ m_pIrcServer = new KviIrcServer(*srv);
+
+ bool bTargetIpV6 = false;
+ bool bNeedServerIp = !prx;
+ if(prx) bNeedServerIp = (
+ prx->protocol() != KviProxy::Http && prx->protocol() != KviProxy::Socks5
+ );
+
+ // We're going to check the addresses now
+
+ // check the proxy stuff...
+ if(prx)
+ {
+ // Yeah...here comes the proxy
+ m_pProxy = new KviProxy(*prx);
+ // check the proxy IP address
+ if(m_pProxy->isIpV6())
+ {
+ // IpV6 proxy :) (STILL QUITE UNTESTED ?)
+#ifdef COMPILE_IPV6_SUPPORT
+ bTargetIpV6 = true;
+ if(!kvi_isValidStringIp_V6(m_pProxy->ip()))return KviError_invalidProxyAddress;
+ // SOCKSV4 does not support IPV6 addresses
+ if(m_pProxy->protocol() == KviProxy::Socks4)return KviError_socksV4LacksIpV6Support;
+#else
+ return KviError_noIpV6Support;
+#endif
+ } else {
+ // IpV4 proxy
+ if(!kvi_isValidStringIp(m_pProxy->ip()))return KviError_invalidProxyAddress;
+ }
+ }
+
+ if(bNeedServerIp)
+ {
+ // check the irc host ip
+#ifdef COMPILE_IPV6_SUPPORT
+ if(m_pIrcServer->isIpV6())
+ {
+ // We have an IpV6 server host (Interesting if proxy is IpV4)
+ if( !KviNetUtils::isValidStringIp_V6(m_pIrcServer->ip()) )return KviError_invalidIpAddress;
+ if(!m_pProxy)bTargetIpV6 = true; // otherwise the proxy rules
+ } else {
+#endif
+ // We have an IpV4 server host
+ if(!KviNetUtils::isValidStringIp(m_pIrcServer->ip())) return KviError_invalidIpAddress;
+#ifdef COMPILE_IPV6_SUPPORT
+ }
+#endif
+ }
+
+ KviSockaddr sa(prx ? m_pProxy->ip() : m_pIrcServer->ip().utf8().data(),prx ? m_pProxy->port() : m_pIrcServer->port(),bTargetIpV6);
+
+ if(!sa.socketAddress())return KviError_invalidIpAddress;
+
+ // create the socket
+#ifdef COMPILE_IPV6_SUPPORT
+ m_sock = kvi_socket_create(bTargetIpV6 ? KVI_SOCKET_PF_INET6 : KVI_SOCKET_PF_INET,KVI_SOCKET_TYPE_STREAM,KVI_SOCKET_PROTO_TCP);
+#else
+ m_sock = kvi_socket_create(KVI_SOCKET_PF_INET,KVI_SOCKET_TYPE_STREAM,KVI_SOCKET_PROTO_TCP);
+#endif
+
+ if(m_sock < 0)return KviError_socketCreationFailed;
+
+ if(bindAddress)
+ {
+ // we have to bind the socket to a local address
+ KviSockaddr localSa(bindAddress,0,bTargetIpV6);
+ bool bBindOk = localSa.socketAddress();
+
+ if(bBindOk)
+ {
+ bBindOk = kvi_socket_bind(m_sock,localSa.socketAddress(),((int)(localSa.addressLength())));
+ }
+
+ QString tmp;
+ if(bBindOk)
+ {
+ if(_OUTPUT_VERBOSE)
+ KviQString::sprintf(tmp,__tr2qs("Binding to local address %s"),bindAddress);
+ outputSocketMessage(tmp);
+ } else {
+ if(_OUTPUT_VERBOSE)
+ KviQString::sprintf(tmp,__tr2qs("Binding to local address %s failed: the kernel will choose the correct interface"),bindAddress);
+ outputSocketWarning(tmp);
+ }
+ }
+
+ // make it non blocking
+ if(!kvi_socket_setNonBlocking(m_sock))
+ {
+ reset();
+ return KviError_asyncSocketFailed;
+ }
+
+ if(!kvi_socket_connect(m_sock,sa.socketAddress(),((int)(sa.addressLength()))))
+ {
+ // ops...
+ int err = kvi_socket_error();
+
+ if(!kvi_socket_recoverableConnectError(err))
+ {
+ // Ops...
+ int sockError=err;
+ if(sockError==0)
+ {
+ // Zero error ?...let's look closer
+ int iSize=sizeof(int);
+ if(!kvi_socket_getsockopt(m_sock,SOL_SOCKET,SO_ERROR,(void *)&sockError,&iSize))sockError=0;
+ }
+ // die :(
+ reset();
+ // And declare problems :)
+ if(sockError)return KviError::translateSystemError(sockError);
+ else return KviError_unknownError; //Error 0 ?
+ }
+ }
+
+ // and setup the WRITE notifier...
+ m_pWsn = new QSocketNotifier((int)m_sock,QSocketNotifier::Write);
+ QObject::connect(m_pWsn,SIGNAL(activated(int)),this,SLOT(writeNotifierFired(int)));
+ m_pWsn->setEnabled(true);
+
+ // set the timer
+ if(KVI_OPTION_UINT(KviOption_uintIrcSocketTimeout) < 5)KVI_OPTION_UINT(KviOption_uintIrcSocketTimeout) = 5;
+ m_pTimeoutTimer = new QTimer();
+ QObject::connect(m_pTimeoutTimer,SIGNAL(timeout()),this,SLOT(connectionTimedOut()));
+ m_pTimeoutTimer->start(KVI_OPTION_UINT(KviOption_uintIrcSocketTimeout) * 1000,true);
+
+ // and wait for connect
+ setState(Connecting);
+
+ return KviError_success;
+}
+
+void KviIrcSocket::connectionTimedOut()
+{
+ // the m_pTimeoutTimer fired :(
+ raiseError(KviError_connectionTimedOut);
+ reset();
+}
+
+void KviIrcSocket::writeNotifierFired(int)
+{
+ // kill the timeout timer
+ if(m_pTimeoutTimer)
+ {
+ delete m_pTimeoutTimer;
+ m_pTimeoutTimer = 0;
+ }
+
+ // Check for errors...
+ int sockError;
+ int iSize=sizeof(int);
+ if(!kvi_socket_getsockopt(m_sock,SOL_SOCKET,SO_ERROR,(void *)&sockError,&iSize))sockError = -1;
+ //sockError = 0;
+ if(sockError != 0)
+ {
+ //failed
+ if(sockError > 0)sockError = KviError::translateSystemError(sockError);
+ else sockError = KviError_unknownError; //Error 0 ?
+ raiseError(sockError);
+ reset();
+ return;
+ }
+
+ // kill the write notifier
+ delete m_pWsn;
+ m_pWsn = 0;
+
+ //Succesfully connected...
+ connectionEstabilished();
+}
+
+void KviIrcSocket::connectionEstabilished()
+{
+ // the connection with a remote end has been estabilished
+ // if it is a proxy we need to perform the login operations
+ // otherwise we're connected to the irc server
+ if(m_sock == KVI_INVALID_SOCKET)return; // ops...disconnected in setState() ????
+
+ if(m_pProxy)connectedToProxy();
+ else connectedToIrcServer();
+}
+
+void KviIrcSocket::connectedToProxy()
+{
+ if(!m_pProxy)debug("WARNING: connectedToProxy() without a m_pProxy!");
+
+ // FIXME: Do we want to support SSL proxies ?
+ // it would be just a matter of SSL handshaking
+ // with the proxy
+
+ setState(ProxyLogin);
+
+ if(m_pRsn)
+ {
+ delete m_pRsn;
+ m_pRsn = 0;
+ }
+
+ m_pRsn = new QSocketNotifier((int)m_sock,QSocketNotifier::Read);
+
+ QObject::connect(m_pRsn,SIGNAL(activated(int)),this,SLOT(readProxyData(int)));
+
+ switch(m_pProxy->protocol())
+ {
+ case KviProxy::Http:
+ proxyLoginHttp();
+ break;
+ case KviProxy::Socks5:
+ proxyLoginV5();
+ break;
+ default:
+ proxyLoginV4();
+ break;
+ }
+}
+
+void KviIrcSocket::readHttpProxyErrorData(int)
+{
+ char buffer[256];
+ int readLength;
+
+ readLength = kvi_socket_recv(m_sock,buffer,255);
+ if(readLength <= 0)
+ {
+ handleInvalidSocketRead(readLength);
+ return;
+ }
+
+ outputProxyMessage(m_pConsole->decodeText(buffer));
+}
+
+void KviIrcSocket::connectedToIrcServer()
+{
+#ifdef COMPILE_SSL_SUPPORT
+ if(m_pIrcServer->useSSL())
+ {
+ m_pSSL = KviSSLMaster::allocSSL(m_pConsole,m_sock,KviSSL::Client);
+ if(!m_pSSL)
+ {
+ raiseSSLError();
+ raiseError(KviError_SSLError);
+ reset();
+ return;
+ }
+ setState(SSLHandshake);
+ doSSLHandshake(0);
+ return;
+ }
+#endif
+ linkUp();
+}
+
+
+void KviIrcSocket::readProxyData(int)
+{
+ char buffer[256];
+
+ int readLength;
+/*
+ // THIS IS WORKING CODE THAT SUPPORTS SSL PROXIES!
+#ifdef COMPILE_SSL_SUPPORT
+ if(m_pSSL)
+ {
+ readLength = m_pSSL->read(buffer,256);
+ if(readLength <= 0)
+ {
+ // ssl error....?
+ switch(m_pSSL->getProtocolError(readLength))
+ {
+ case KviSSL::ZeroReturn:
+ readLength = 0;
+ break;
+ case KviSSL::WantRead:
+ case KviSSL::WantWrite:
+ // hmmm...
+ return;
+ break;
+ case KviSSL::SyscallError:
+ {
+ int iE = m_pSSL->getLastError(true);
+ if(iE != 0)
+ {
+ raiseSSLError();
+ raiseError(KviError_SSLError);
+ reset();
+ return;
+ }
+ }
+ break;
+ case KviSSL::SSLError:
+ raiseSSLError();
+ raiseError(KviError_SSLError);
+ reset();
+ return;
+ break;
+ default:
+ raiseError(KviError_SSLError);
+ reset();
+ return;
+ break;
+
+ }
+ handleInvalidSocketRead(readLength);
+ return;
+ }
+ } else {
+#endif
+*/
+ readLength = kvi_socket_recv(m_sock,buffer,255);
+ if(readLength <= 0)
+ {
+ handleInvalidSocketRead(readLength);
+ return;
+ }
+/*
+#ifdef COMPILE_SSL_SUPPORT
+ }
+#endif
+*/
+ // we need at least two bytes...
+ if(readLength < 2)
+ {
+ // a single byte of reply means:
+ // - connection through a 1 bps modem
+ // - a totally blocked network
+ // - remote host is not a SOCKS/HTTP server
+ // Anyway....it is always a meaningless reply
+ // better to try again later :)
+ raiseError(KviError_unrecognizedProxyReply);
+ reset();
+ return;
+ }
+ // handle the reply
+ switch(m_state)
+ {
+ case ProxyFinalV4:
+ //V4 final reply
+ proxyHandleV4FinalReply((unsigned char)buffer[1]);
+ break;
+ case ProxySelectAuthMethodV5:
+ //V5 method selection reply
+ proxyHandleV5MethodReply((unsigned char)buffer[1]);
+ break;
+ case ProxyUserPassV5:
+ //V5 user and pass reply
+ proxyHandleV5AuthReply((unsigned char)buffer[1]);
+ break;
+ case ProxyFinalV5:
+ //V5 final reply
+ proxyHandleV5FinalReply((unsigned char)buffer[1]);
+ break;
+ case ProxyFinalHttp:
+ //Http final reply
+ buffer[readLength] = '\0';
+ proxyHandleHttpFinalReply(buffer,readLength);
+ break;
+ default:
+ // what ?
+ raiseError(KviError_unrecognizedProxyReply);
+ reset();
+ break;
+ }
+}
+
+
+
+void KviIrcSocket::proxyLoginHttp()
+{
+ // Well..this is just plain and easy: connect to the proxy machine
+ // and say "CONNECT <irc.server>:<port> HTTP/<version>\n\n"
+ // if it requires auth than say Proxy-Authorization: Basic user:passwd
+ // Then expect a server reply header (2 newlines)
+ // HTTP 200 = Success
+ // HTTP Anything else = Failure
+
+ if(_OUTPUT_VERBOSE)
+ outputProxyMessage(__tr2qs("Using HTTP protocol."));
+
+ setState(ProxyFinalHttp);
+ KviStr tmp(KviStr::Format,"CONNECT %s:%u HTTP/1.0\r\n",m_pIrcServer->hostName().utf8().data(),(unsigned int)(m_pIrcServer->port()));
+ if(m_pProxy->hasUser())
+ {
+ KviStr auth(KviStr::Format,"%s:%s",m_pProxy->user(),m_pProxy->pass());
+ KviStr encoded;
+ encoded.bufferToBase64(auth.ptr(),auth.len());
+ tmp.append(KviStr::Format,"Proxy-Authorization: Basic %s\r\n\r\n",encoded.ptr());
+ } else {
+ tmp.append("\r\n");
+ }
+// debug(tmp.ptr());
+ sendRawData(tmp.ptr(),tmp.len());
+}
+
+void KviIrcSocket::proxyLoginV4()
+{
+ // SOCKSV4 protocol
+ //
+ // 1) CONNECT
+ //
+ // The client connects to the SOCKS server and sends a CONNECT request when
+ // it wants to establish a connection to an application server. The client
+ // includes in the request packet the IP address and the port number of the
+ // destination host, and userid, in the following format.
+ //
+ // +----+----+----+----+----+----+----+----+----+----+....+----+
+ // | VN | CD | DSTPORT | DSTIP | USERID |NULL|
+ // +----+----+----+----+----+----+----+----+----+----+....+----+
+ // # of bytes: 1 1 2 4 variable 1
+ //
+ // VN is the SOCKS protocol version number and should be 4. CD is the
+ // SOCKS command code and should be 1 for CONNECT request. NULL is a byte
+ // of all zero bits.
+ //
+ // The SOCKS server checks to see whether such a request should be granted
+ // based on any combination of source IP address, destination IP address,
+ // destination port number, the userid, and information it may obtain by
+ // consulting IDENT, cf. RFC 1413. If the request is granted, the SOCKS
+ // server makes a connection to the specified port of the destination host.
+ // A reply packet is sent to the client when this connection is established,
+ // or when the request is rejected or the operation fails.
+ //
+ if(_OUTPUT_VERBOSE)
+ outputProxyMessage(__tr2qs("Using SOCKSV4 protocol."));
+
+ m_pProxy->normalizeUserAndPass();
+ // the protocol does not specify the "userid" format...
+ // so build an userid from the pass and/or username...
+
+ KviStr szUserAndPass=m_pProxy->user();
+ if(m_pProxy->hasPass()){
+ if(szUserAndPass.hasData())szUserAndPass.append(' ');
+ szUserAndPass.append(m_pProxy->pass());
+ }
+ int iLen = szUserAndPass.len()+9;
+ // build the request packet
+ char *bufToSend = new char[iLen];
+ bufToSend[0]=(unsigned char)4; //Version 4
+ bufToSend[1]=(unsigned char)1; //Connect
+ Q_UINT16 port=(Q_UINT16)htons(m_pIrcServer->port());
+ kvi_memmove((void *)(bufToSend+2),(void *)&port,2);
+
+ struct in_addr ircInAddr;
+
+ if(!kvi_stringIpToBinaryIp(m_pIrcServer->ip(),&ircInAddr))
+ debug("SOCKET INTERNAL ERROR IN IPV4 (SOCKS4) ADDR CONVERSION");
+
+ Q_UINT32 host=(Q_UINT32)ircInAddr.s_addr;
+ kvi_memmove((void *)(bufToSend+4),(void *)&host,4);
+ kvi_memmove((void *)(bufToSend+8),(void *)(szUserAndPass.ptr()),szUserAndPass.len());
+ // send it into hyperspace...
+ setState(ProxyFinalV4);
+ sendRawData(bufToSend,iLen);
+ delete[] bufToSend;
+ // and wait for reply...
+}
+
+void KviIrcSocket::proxyLoginV5()
+{
+ // SOCKSV5 protocol.
+ //
+ // When a TCP-based client wishes to establish a connection to an object
+ // that is reachable only via a firewall (such determination is left up
+ // to the implementation), it must open a TCP connection to the
+ // appropriate SOCKS port on the SOCKS server system. The SOCKS service
+ // is conventionally located on TCP port 1080. If the connection
+ // request succeeds, the client enters a negotiation for the
+ // authentication method to be used, authenticates with the chosen
+ // method, then sends a relay request. The SOCKS server evaluates the
+ // request, and either establishes the appropriate connection or denies
+ // it.
+ //
+ // The client connects to the server, and sends a version
+ // identifier/method selection message:
+ //
+ // +----+----------+----------+
+ // |VER | NMETHODS | METHODS |
+ // +----+----------+----------+
+ // | 1 | 1 | 1 to 255 |
+ // +----+----------+----------+
+ //
+ // The VER field is set to X'05' for this version of the protocol. The
+ // NMETHODS field contains the number of method identifier octets that
+ // appear in the METHODS field.
+ // The values currently defined for METHOD are:
+ //
+ // o X'00' NO AUTHENTICATION REQUIRED
+ // o X'01' GSSAPI
+ // o X'02' USERNAME/PASSWORD
+ // o X'03' CHAP
+ // o X'04' to X'7F' IANA ASSIGNED
+ // o X'80' to X'FE' RESERVED FOR PRIVATE METHODS
+ // o X'FF' NO ACCEPTABLE METHODS
+ //
+
+ if(_OUTPUT_VERBOSE)
+ outputProxyMessage(__tr2qs("Using SOCKSv5 protocol."));
+
+ m_pProxy->normalizeUserAndPass();
+ // the protocol does not specify the "userid" format...
+ // so build an userid from the pass and/or username...
+
+ char bufToSend[4];
+ bufToSend[0]=(unsigned char)5; //use version 5
+ int sendLen = 3;
+ if(!(m_pProxy->hasUser() || m_pProxy->hasPass()))
+ {
+ // no auth needed.
+ bufToSend[1]=(unsigned char)1; //select one method
+ bufToSend[2]=(unsigned char)0; //select method 0 : no auth
+ if(_OUTPUT_VERBOSE)
+ outputProxyMessage(__tr2qs("We can accept auth method 0 (no auth)"));
+ } else {
+ // we can provide a password and username if needed...
+ bufToSend[1]=(unsigned char)2; //select from two methods
+ bufToSend[2]=(unsigned char)0; //method 0 or
+ bufToSend[3]=(unsigned char)2; //method 2 username/pass auth
+ sendLen = 4;
+ if(_OUTPUT_VERBOSE)
+ outputProxyMessage(__tr2qs("We can accept auth method 0 (no auth) or 2 (user/pass)"));
+ }
+ // notify the user before sending...since we may get disconnected
+ setState(ProxySelectAuthMethodV5);
+ sendRawData(bufToSend,sendLen);
+ // and wait for response
+}
+
+void KviIrcSocket::proxyAuthUserPassV5()
+{
+ // Once the SOCKS V5 server has started, and the client has selected the
+ // Username/Password Authentication protocol, the Username/Password
+ // subnegotiation begins. This begins with the client producing a
+ // Username/Password request:
+ //
+ // +----+------+----------+------+----------+
+ // |VER | ULEN | UNAME | PLEN | PASSWD |
+ // +----+------+----------+------+----------+
+ // | 1 | 1 | 1 to 255 | 1 | 1 to 255 |
+ // +----+------+----------+------+----------+
+ //
+ // The VER field contains the current version of the subnegotiation,
+ // which is X'01'. The ULEN field contains the length of the UNAME field
+ // that follows. The UNAME field contains the username as known to the
+ // source operating system. The PLEN field contains the length of the
+ // PASSWD field that follows. The PASSWD field contains the password
+ // association with the given UNAME.
+ //
+ unsigned int lPass=(unsigned int)m_pProxy->passLen();
+ if(lPass>255)lPass=255;
+ unsigned int lUser=(unsigned int)m_pProxy->userLen();
+ if(lUser>255)lUser=255;
+ int iLen=lPass+lUser+3;
+ char *bufToSend=new char[iLen];
+ bufToSend[0]=(unsigned char)1; //version x'01'
+ bufToSend[1]=(unsigned char)lUser; //length of the username
+ kvi_memmove((void *)(bufToSend+2),(void *)m_pProxy->user(),lUser); //username
+ bufToSend[2+lUser]=(unsigned char)lPass; //length of the password
+ kvi_memmove((void *)(bufToSend+3+lUser),(void *)m_pProxy->pass(),lPass);
+ // spit out the buffer and wait
+ setState(ProxyUserPassV5);
+ sendRawData(bufToSend,iLen);
+ delete[] bufToSend;
+ // and wait for response...
+}
+
+void KviIrcSocket::proxySendTargetDataV5()
+{
+ // Once the method-dependent subnegotiation has completed, the client
+ // sends the request details. If the negotiated method includes
+ // encapsulation for purposes of integrity checking and/or
+ // confidentiality, these requests MUST be encapsulated in the method-
+ // dependent encapsulation.
+ //
+ // The SOCKS request is formed as follows:
+ //
+ // +----+-----+------+------+----------+----------+
+ // |VER | CMD | FLAG | ATYP | DST.ADDR | DST.PORT |
+ // +----+-----+------+------+----------+----------+
+ // | 1 | 1 | 1 | 1 | Variable | 2 |
+ // +----+-----+------+------+----------+----------+
+ //
+ // Where:
+ //
+ // o VER protocol version: X'05'
+ // o CMD
+ // o CONNECT X'01'
+ // o BIND X'02'
+ // o UDP ASSOCIATE X'03'
+ // o X'04' to X'7F' IANA ASSIGNED
+ // o X'80' to X'FF' RESERVED FOR PRIVATE METHODS
+ // o FLAG command dependent flag (defaults to X'00')
+ // o ATYP address type of following address
+ // o IP V4 address: X'01'
+ // o DOMAINNAME: X'03'
+ // o IP V6 address: X'04'
+ // o DST.ADDR desired destination address
+ // o DST.PORT desired destination port in network octet
+ // order
+ //
+ // The SOCKS server will typically evaluate the request based on
+ // source and destination addresses, and return one or more reply
+ // messages, as appropriate for the request type.
+ //
+ // In an address field (DST.ADDR, BND.ADDR), the ATYP field specifies
+ // the type of address contained within the field:
+ //
+ // o X'01'
+ //
+ // The address is a version-4 IP address, with a length of 4 octets.
+ //
+ // o X'03'
+ //
+ // The address field contains a fully-qualified domain name. The first
+ // octet of the address field contains the number of octets of name that
+ // follow, there is no terminating NUL octet.
+ //
+ // o X'04'
+ //
+ // The address is a version-6 IP address, with a length of 16 octets.
+ bool bRemoteDns=!(
+
+ (
+ KviNetUtils::isValidStringIp(m_pIrcServer->ip())
+ #ifdef COMPILE_IPV6_SUPPORT
+ || KviNetUtils::isValidStringIp_V6(m_pIrcServer->ip())
+ #endif
+ )
+
+ && m_pIrcServer->cacheIp()
+ );
+ int bufLen = bRemoteDns ? 4 + 1 + m_pIrcServer->hostName().utf8().length() + 2
+ : (m_pIrcServer->isIpV6() ? 22 : 10);
+ char * bufToSend = (char *)kvi_malloc(sizeof(char) * bufLen);
+ bufToSend[0]=(unsigned char)5; //Proto 5
+ bufToSend[1]=(unsigned char)1; //CONNECT
+ bufToSend[2]=(unsigned char)0; //RSV
+
+ if(bRemoteDns)
+ {
+ bRemoteDns=true;
+ bufToSend[3]=3;
+ bufToSend[4]=m_pIrcServer->hostName().utf8().length();
+ } else {
+ bufToSend[3]=(unsigned char)m_pIrcServer->isIpV6() ? 4 : 1; // IPV6 : IPV4
+ }
+
+ if(bRemoteDns)
+ {
+ kvi_memmove((void *)(bufToSend + 5),
+ (void *)(m_pIrcServer->hostName().utf8().data()),
+ m_pIrcServer->hostName().utf8().length());
+ Q_UINT16 port = (Q_UINT16)htons(m_pIrcServer->port());
+ kvi_memmove((void *)(bufToSend + 4 + 1 + m_pIrcServer->hostName().utf8().length()),(void *)&port,2);
+ } else if(m_pIrcServer->isIpV6()) {
+#ifdef COMPILE_IPV6_SUPPORT
+ struct in6_addr ircInAddr;
+
+ if(!kvi_stringIpToBinaryIp_V6(m_pIrcServer->ip(),&ircInAddr))debug("SOCKET INTERNAL ERROR IN IPV6 ADDR CONVERSION");
+ kvi_memmove((void *)(bufToSend + 4),(void *)(&ircInAddr),4);
+ Q_UINT16 port = (Q_UINT16)htons(m_pIrcServer->port());
+ kvi_memmove((void *)(bufToSend + 20),(void *)&port,2);
+#endif
+ } else {
+ struct in_addr ircInAddr;
+
+ if(!kvi_stringIpToBinaryIp(m_pIrcServer->ip(),&ircInAddr))debug("SOCKET INTERNAL ERROR IN IPV4 ADDR CONVERSION");
+ Q_UINT32 host = (Q_UINT32)ircInAddr.s_addr;
+ kvi_memmove((void *)(bufToSend + 4),(void *)&host,4);
+ Q_UINT16 port = (Q_UINT16)htons(m_pIrcServer->port());
+ kvi_memmove((void *)(bufToSend + 8),(void *)&port,2);
+ }
+
+ // send it into hyperspace...
+ setState(ProxyFinalV5);
+ sendRawData(bufToSend,bufLen);
+ kvi_free(bufToSend);
+ // and wait for reply...
+}
+
+
+void KviIrcSocket::proxyHandleV5AuthReply(unsigned char reply)
+{
+ // The server verifies the supplied UNAME and PASSWD, and sends the
+ // following response:
+ //
+ // +----+--------+
+ // |VER | STATUS |
+ // +----+--------+
+ // | 1 | 1 |
+ // +----+--------+
+ //
+ // A STATUS field of X'00' indicates success. If the server returns a
+ // `failure' (STATUS value other than X'00') status, it MUST close the
+ // connection.
+ //
+ if(reply == 0)
+ {
+ if(_OUTPUT_VERBOSE)
+ outputProxyMessage(__tr2qs("Proxy response: auth OK: access granted"));
+ proxySendTargetDataV5();
+ return;
+ }
+ raiseError(KviError_proxyAuthFailed);
+ reset();
+}
+
+void KviIrcSocket::proxyHandleV5MethodReply(unsigned char reply)
+{
+ // The server selects from one of the methods given in METHODS, and
+ // sends a METHOD selection message:
+ //
+ // +----+--------+
+ // |VER | METHOD |
+ // +----+--------+
+ // | 1 | 1 |
+ // +----+--------+
+ //
+ // If the selected METHOD is X'FF', none of the methods listed by the
+ // client are acceptable, and the client MUST close the connection.
+ //
+ // The values currently defined for METHOD are:
+ //
+ // o X'00' NO AUTHENTICATION REQUIRED
+ // o X'01' GSSAPI
+ // o X'02' USERNAME/PASSWORD
+ // o X'03' CHAP
+ // o X'04' to X'7F' IANA ASSIGNED
+ // o X'80' to X'FE' RESERVED FOR PRIVATE METHODS
+ // o X'FF' NO ACCEPTABLE METHODS
+ //
+ if(reply == 0)
+ {
+ if(_OUTPUT_VERBOSE)
+ outputProxyMessage(__tr2qs("Proxy response: Auth method OK: using method 0 (no auth)"));
+ proxySendTargetDataV5();
+ return;
+ }
+ if(reply == 2)
+ {
+ if(_OUTPUT_VERBOSE)
+ outputProxyMessage(__tr2qs("Proxy response: Auth method OK: using method 2 (user/pass)"));
+ proxyAuthUserPassV5();
+ return;
+ }
+ //Request rejected
+ if(reply == 0xFF)
+ {
+ raiseError(KviError_proxyNoAcceptableAuthMethod);
+ reset();
+ } else {
+ // unrecognized...
+ raiseError(KviError_unrecognizedProxyReply);
+ reset();
+ }
+}
+
+void KviIrcSocket::proxyHandleV5FinalReply(unsigned char reply)
+{
+ //
+ // The SOCKS request information is sent by the client as soon as it has
+ // established a connection to the SOCKS server, and completed the
+ // authentication negotiations. The server evaluates the request, and
+ // returns a reply formed as follows:
+ //
+ // +----+-----+------+------+----------+----------+
+ // |VER | REP | FLAG | ATYP | BND.ADDR | BND.PORT |
+ // +----+-----+------+------+----------+----------+
+ // | 1 | 1 | 1 | 1 | Variable | 2 |
+ // +----+-----+------+------+----------+----------+
+ //
+ // Where:
+ // o VER protocol version: X'05'
+ // o REP Reply field:
+ // o X'00' succeeded
+ // o X'01' general SOCKS server failure
+ // o X'02' connection not allowed by ruleset
+ // o X'03' Network unreachable
+ // o X'04' Host unreachable
+ // o X'05' Connection refused
+ // o X'06' TTL expired
+ // o X'07' Command not supported
+ // o X'08' Address type not supported
+ // o X'09' Invalid address
+ // o X'0A' to X'FF' unassigned
+ // o FLAG command dependent flag
+ // o ATYP address type of following address
+ // o IP V4 address: X'01'
+ // o DOMAINNAME: X'03'
+ // o IP V6 address: X'04'
+ // o BND.ADDR server bound address
+ // o BND.PORT server bound port in network octet order
+ //
+ if(reply==0)
+ {
+ // Request granted
+ if(_OUTPUT_VERBOSE)
+ outputProxyMessage(__tr2qs("Proxy response: target data OK: request granted"));
+ connectedToIrcServer();
+ } else {
+ //Request rejected
+ int err;
+ switch(reply)
+ {
+ case 1: err = KviError_proxyReply01GeneralSOCKSFailure; break;
+ case 2: err = KviError_proxyReply02ConnectionNotAllowed; break;
+ case 3: err = KviError_proxyReply03NetworkUnreachable; break;
+ case 4: err = KviError_proxyReply04HostUnreachable; break;
+ case 5: err = KviError_proxyReply05ConnectionRefused; break;
+ case 6: err = KviError_proxyReply06TTLExpired; break;
+ case 7: err = KviError_proxyReply07CommandNotSupported; break;
+ case 8: err = KviError_proxyReply08AddressTypeNotSupported; break;
+ case 9: err = KviError_proxyReply09InvalidAddress; break;
+ default: err = KviError_unrecognizedProxyReply; break;
+ }
+ raiseError(err);
+ reset();
+ }
+}
+
+void KviIrcSocket::proxyHandleV4FinalReply(unsigned char reply)
+{
+ // If the request is granted, the SOCKS
+ // server makes a connection to the specified port of the destination host.
+ // A reply packet is sent to the client when this connection is established,
+ // or when the request is rejected or the operation fails.
+ //
+ //
+ // +----+----+----+----+----+----+----+----+
+ // | VN | CD | DSTPORT | DSTIP |
+ // +----+----+----+----+----+----+----+----+
+ // # of bytes: 1 1 2 4
+ //
+ // VN is the version of the reply code and should be 0. CD is the result
+ // code with one of the following values:
+ //
+ // 90: request granted
+ // 91: request rejected or failed
+ // 92: request rejected becasue SOCKS server cannot connect to
+ // identd on the client
+ // 93: request rejected because the client program and identd
+ // report different user-ids
+ //
+ // The remaining fields are ignored.
+ //
+ // The SOCKS server closes its connection immediately after notifying
+ // the client of a failed or rejected request. For a successful request,
+ // the SOCKS server gets ready to relay traffic on both directions. This
+ // enables the client to do I/O on its connection as if it were directly
+ // connected to the application server.
+ if(reply==90)
+ {
+ // Request granted
+ if(_OUTPUT_VERBOSE)
+ outputProxyMessage(__tr2qs("Proxy response: target data OK: request granted"));
+ connectedToIrcServer();
+ } else {
+ //Request rejected
+ int err;
+ switch(reply)
+ {
+ case 91: err = KviError_proxyReply91RequestFailed; break;
+ case 92: err = KviError_proxyReply92IdentFailed; break;
+ case 93: err = KviError_proxyReply93IdentNotMatching; break;
+ default: err = KviError_unrecognizedProxyReply; break;
+ }
+ raiseError(err);
+ reset();
+ }
+ // Just looked out of the window...
+ // Hmmmm...strange light outside...
+ // Looked at the clock...6:34 !
+ // I think I'll go sleep.... :)
+}
+
+void KviIrcSocket::proxyHandleHttpFinalReply(const char * buffer,int bufLen)
+{
+ // Escape character is '^]'.
+ // CONNECT warszawa.irc.pl:6667 HTTP/1.0
+ //
+ // HTTP/1.0 200 Connection established
+
+ KviStr tmp = buffer;
+ // FIXME: #warning "We could even show the proxy output here...!"
+ tmp.cutFromFirst('\n');
+ tmp.stripWhiteSpace();
+
+ if(kvi_strEqualCIN(tmp.ptr(),"HTTP",4))
+ {
+ int idx = tmp.findFirstIdx(" 200 ");
+ if(idx != -1)
+ {
+ if(idx == tmp.findFirstIdx(' '))
+ {
+ QString msg = __tr2qs("Proxy response: ");
+ msg += tmp.ptr();
+ if(_OUTPUT_VERBOSE)
+ outputProxyMessage(msg);
+ connectedToIrcServer();
+ return;
+ }
+ }
+
+ }
+
+ outputProxyError(__tr2qs("Proxy said something about: \n"));
+ outputProxyMessage(m_pConsole->decodeText(buffer));
+
+ //Read HTTP error page and show it
+
+ if(m_pWsn)
+ {
+ delete m_pWsn;
+ m_pWsn = 0;
+ }
+
+ if(m_pRsn)
+ {
+ delete m_pRsn;
+ m_pRsn = 0;
+ }
+
+ m_pRsn = new QSocketNotifier((int)m_sock,QSocketNotifier::Read);
+ QObject::connect(m_pRsn,SIGNAL(activated(int)),this,SLOT(readHttpProxyErrorData(int)));
+ m_pRsn->setEnabled(true);
+
+ setState(ProxyHttpError);
+
+// raiseError(KviError_proxyHttpFailure);
+// reset();
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// SSL HANDSHAKE
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+#ifdef COMPILE_SSL_SUPPORT
+
+void KviIrcSocket::printSSLPeerCertificate()
+{
+ KviSSLCertificate * c = m_pSSL->getPeerCertificate();
+ if(c)
+ {
+ //m_pConsole->socketEvent(SSLCertificate,(void *)c);
+ if(_OUTPUT_VERBOSE)
+ KviSSLMaster::printSSLCertificate(m_pConsole,__tr("Server X509 certificate"),c);
+ delete c;
+ } else {
+ if(_OUTPUT_VERBOSE)
+ outputSSLMessage(__tr2qs("The server didn't provide a certificate"));
+ }
+}
+
+void KviIrcSocket::printSSLCipherInfo()
+{
+ KviSSLCipherInfo * ci = m_pSSL->getCurrentCipherInfo();
+ if(ci)
+ {
+ //m_pConsole->socketEvent(SSLCipherInfo,(void *)ci);
+ KviSSLMaster::printSSLCipherInfo(m_pConsole,__tr2qs("Current transmission cipher"),ci);
+ delete ci;
+ } else {
+ if(_OUTPUT_VERBOSE)
+ outputSSLMessage(__tr2qs("Unable to determine the current cipher"));
+ }
+}
+
+void KviIrcSocket::raiseSSLError()
+{
+ KviStr buffer;
+ while(m_pSSL->getLastErrorString(buffer))
+ {
+ outputSSLError(buffer.ptr());
+ }
+}
+
+#endif
+
+
+void KviIrcSocket::doSSLHandshake(int)
+{
+#ifdef COMPILE_SSL_SUPPORT
+ __range_valid(m_pSSL);
+
+ if(m_pRsn)
+ {
+ delete m_pRsn;
+ m_pRsn = 0;
+ }
+ if(m_pWsn)
+ {
+ delete m_pWsn;
+ m_pWsn = 0;
+ }
+
+ if(!m_pSSL)
+ {
+ debug("Ops... I've lost the SSL class ?");
+ reset();
+ return; // ops ?
+ }
+
+ switch(m_pSSL->connect())
+ {
+ case KviSSL::Success:
+ // done!
+ printSSLCipherInfo();
+ printSSLPeerCertificate();
+ linkUp();
+ break;
+ case KviSSL::WantRead:
+ m_pRsn = new QSocketNotifier((int)m_sock,QSocketNotifier::Read);
+ QObject::connect(m_pRsn,SIGNAL(activated(int)),this,SLOT(doSSLHandshake(int)));
+ m_pRsn->setEnabled(true);
+ break;
+ case KviSSL::WantWrite:
+ m_pWsn = new QSocketNotifier((int)m_sock,QSocketNotifier::Write);
+ QObject::connect(m_pWsn,SIGNAL(activated(int)),this,SLOT(doSSLHandshake(int)));
+ m_pWsn->setEnabled(true);
+ break;
+ case KviSSL::RemoteEndClosedConnection:
+ raiseError(KviError_remoteEndClosedConnection);
+ reset();
+ break;
+ case KviSSL::SSLError:
+ raiseSSLError();
+ raiseError(KviError_SSLError);
+ reset();
+ break;
+ case KviSSL::SyscallError:
+ {
+ // syscall problem
+ int err = kvi_socket_error();
+ if(!kvi_socket_recoverableError(err))
+ {
+ // Declare problems :)
+ raiseError((err ? KviError::translateSystemError(err) : KviError_unknownError));
+ } else {
+ // can recover ? (EAGAIN , EINTR ?)
+ m_pWsn = new QSocketNotifier((int)m_sock,QSocketNotifier::Write);
+ QObject::connect(m_pWsn,SIGNAL(activated(int)),this,SLOT(doSSLHandshake(int)));
+ m_pWsn->setEnabled(true);
+ return;
+ }
+ reset();
+ }
+ break;
+ default:
+ raiseError(KviError_SSLError);
+ reset();
+ break;
+ }
+
+#else //!COMPILE_SSL_SUPPORT
+ debug("Ops.. ssl handshake without ssl support!...aborting!");
+ exit(-1);
+#endif //!COMPILE_SSL_SUPPORT
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// LINK UP
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+void KviIrcSocket::linkUp()
+{
+ setState(Connected);
+
+ // the last check
+ if(m_sock == KVI_INVALID_SOCKET)return; // ops...disconnected in setState() ????
+
+ // ok.. it seems that we're really up and running now!
+ if(m_pWsn)
+ {
+ delete m_pWsn;
+ m_pWsn = 0;
+ }
+
+ if(m_pRsn)
+ {
+ delete m_pRsn;
+ m_pRsn = 0;
+ }
+
+ m_pRsn = new QSocketNotifier((int)m_sock,QSocketNotifier::Read);
+ QObject::connect(m_pRsn,SIGNAL(activated(int)),this,SLOT(readData(int)));
+ m_pRsn->setEnabled(true);
+
+ // yahoo!
+}
+
+void KviIrcSocket::readData(int)
+{
+ //read data
+ char buffer[1025];
+ int readLength;
+#ifdef COMPILE_SSL_SUPPORT
+ if(m_pSSL)
+ {
+ readLength = m_pSSL->read(buffer,1024);
+ if(readLength <= 0)
+ {
+ // ssl error....?
+ switch(m_pSSL->getProtocolError(readLength))
+ {
+ case KviSSL::ZeroReturn:
+ readLength = 0;
+ break;
+ case KviSSL::WantRead:
+ case KviSSL::WantWrite:
+ // hmmm...
+ return;
+ break;
+ case KviSSL::SyscallError:
+ {
+ int iE = m_pSSL->getLastError(true);
+ if(iE != 0)
+ {
+ raiseSSLError();
+ raiseError(KviError_SSLError);
+ reset();
+ return;
+ }
+ }
+ break;
+ case KviSSL::SSLError:
+ raiseSSLError();
+ raiseError(KviError_SSLError);
+ reset();
+ return;
+ break;
+ default:
+ raiseError(KviError_SSLError);
+ reset();
+ return;
+ break;
+
+ }
+ handleInvalidSocketRead(readLength);
+ return;
+ }
+ } else {
+#endif
+ readLength = kvi_socket_recv(m_sock,buffer,1024);
+ if(readLength <= 0)
+ {
+ handleInvalidSocketRead(readLength);
+ return;
+ }
+#ifdef COMPILE_SSL_SUPPORT
+ }
+#endif
+
+
+ //terminate our buffer
+ (*(buffer+readLength))='\0';
+
+ m_uReadBytes += readLength;
+
+ // Shut up the socket notifier
+ // in case that we enter in a local loop somewhere
+ // while processing data...
+ m_pRsn->setEnabled(false);
+ // shut also the flushing of the message queue
+ // in this way we prevent disconnect detection
+ // during the processing of a message effectively
+ // making it always an asynchronous event.
+ m_bInProcessData = true;
+
+ m_pLink->processData(buffer,readLength);
+ // after this line there should be nothing that relies
+ // on the "connected" state of this socket.
+ // It may happen that it has been reset() in the middle of the processData() call
+ // and (unverified) it might have been even deleted.
+
+ // re-enable the socket notifier... (if it's still there)
+ if(m_pRsn)m_pRsn->setEnabled(true);
+ // and the message queue flushing
+ m_bInProcessData = false;
+ // and flush the queue too!
+ if(m_pSendQueueHead)flushSendQueue();
+}
+
+/*
+void KviIrcSocket::processData(char * buffer,int)
+{
+ register char *p=buffer;
+ char *beginOfCurData = buffer;
+ int bufLen = 0;
+ char *messageBuffer = (char *)kvi_malloc(1);
+
+ // Shut up the socket notifier
+ // in case that we enter in a local loop somewhere
+ // while processing data...
+ m_pRsn->setEnabled(false);
+ // shut also the flushing of the message queue
+ // in this way we prevent disconnect detection
+ // during the processing of a message effectively
+ // making it always an asynchronous event.
+ m_bInProcessData = true;
+
+ while(*p)
+ {
+ if((*p == '\r' )||(*p == '\n'))
+ {
+ //found a CR or LF...
+ //prepare a message buffer
+ bufLen = p - beginOfCurData;
+ //check for previous unterminated data
+ if(m_uReadBufferLen > 0){
+ __range_valid(m_pReadBuffer);
+ messageBuffer = (char *)kvi_realloc(messageBuffer,bufLen + m_uReadBufferLen + 1);
+ kvi_memmove(messageBuffer,m_pReadBuffer,m_uReadBufferLen);
+ kvi_memmove((void *)(messageBuffer + m_uReadBufferLen),beginOfCurData,bufLen);
+ *(messageBuffer + bufLen + m_uReadBufferLen) = '\0';
+ m_uReadBufferLen = 0;
+ kvi_free(m_pReadBuffer);
+ m_pReadBuffer = 0;
+ } else {
+ __range_invalid(m_pReadBuffer);
+ messageBuffer = (char *)kvi_realloc(messageBuffer,bufLen + 1);
+ kvi_memmove(messageBuffer,beginOfCurData,bufLen);
+ *(messageBuffer + bufLen) = '\0';
+ }
+ m_uReadPackets++;
+
+ // FIXME: actually it can happen that the socket gets disconnected
+ // in a incomingMessage() call.
+ // The problem might be that some other parts of kvirc assume
+ // that the irc context still exists after a failed write to the socket
+ // (some parts don't even check the return value!)
+ // If the problem presents itself again then the solution is:
+ // disable queue flushing for the "incomingMessage" call
+ // and just call queue_insertMessage()
+ // then after the call terminates flush the queue (eventually detecting
+ // the disconnect and thus destroying the irc context).
+ // For now we try to rely on the remaining parts to handle correctly
+ // such conditions. Let's see...
+
+ m_pConsole->incomingMessage(messageBuffer);
+
+ if(m_state != Connected)
+ {
+ // Disconnected in KviConsole::incomingMessage() call.
+ // This may happen for several reasons (local event loop
+ // with the user hitting the disconnect button, a scripting
+ // handler event that disconnects explicitly)
+ //
+ // We handle it by simply returning control to readData() which
+ // will return immediately (and safely) control to Qt
+ kvi_free(messageBuffer);
+ m_bInProcessData = false;
+ return;
+ }
+
+ while(*p && ((*p=='\r')||(*p=='\n')) )p++;
+ beginOfCurData = p;
+
+ } else p++;
+ }
+
+ //now *p == '\0'
+ //beginOfCurData points to '\0' if we have
+ //no more stuff to parse , or points to something
+ //different than '\r' or '\n'...
+ if(*beginOfCurData)
+ {
+ //Have remaining data...in the local buffer
+ bufLen = p - beginOfCurData;
+ if(m_uReadBufferLen > 0){
+ //and there was more stuff saved... (really slow connection)
+ __range_valid(m_pReadBuffer);
+ m_pReadBuffer =(char *)kvi_realloc(m_pReadBuffer,m_uReadBufferLen + bufLen);
+ kvi_memmove((void *)(m_pReadBuffer+m_uReadBufferLen),beginOfCurData,bufLen);
+ m_uReadBufferLen += bufLen;
+ } else {
+ //
+ __range_invalid(m_pReadBuffer);
+ m_uReadBufferLen = bufLen;
+ m_pReadBuffer =(char *)kvi_malloc(m_uReadBufferLen);
+ kvi_memmove(m_pReadBuffer,beginOfCurData,m_uReadBufferLen);
+ }
+ //The m_pReadBuffer contains at max 1 irc message...
+ //that can not be longer than 510 bytes (the message is not CRLF terminated)
+ // FIXME: Is this limit *really* valid on all servers ?
+ if(m_uReadBufferLen > 510)debug("WARNING : Receiving an invalid irc message from server.");
+ }
+ kvi_free(messageBuffer);
+
+ // re-enable the socket notifier...
+ m_pRsn->setEnabled(true);
+ // and the message queue flushing
+ m_bInProcessData = false;
+ // and flush the queue too!
+ if(m_pSendQueueHead)flushSendQueue();
+}
+*/
+
+void KviIrcSocket::abort()
+{
+ // flush the send queue if possible (and if not yet disconnected in fact)
+ if(m_state == Connected)flushSendQueue();
+ if(m_state != Idle)
+ raiseError(KviError_operationAborted);
+ // and reset
+ reset();
+}
+
+//=== handleInvalidSocketRead ===============================================//
+//
+// Checks if the socket error is a transient error
+// If it is not a transient error it resets the socket
+// and fires the appropriate event.
+// Otherwise it does nothing.
+//
+void KviIrcSocket::handleInvalidSocketRead(int readedLength)
+{
+ __range_valid(readedLength <= 0);
+ if(readedLength==0)
+ {
+ raiseError(KviError_remoteEndClosedConnection);
+ reset();
+ } else {
+ //check for transmission errors
+ int err = kvi_socket_error();
+#ifdef COMPILE_ON_WINDOWS
+ if((err != EAGAIN) && (err != EINTR) && (err != WSAEWOULDBLOCK))
+#else
+ if((err != EAGAIN) && (err != EINTR))
+#endif
+ {
+ if(err > 0)raiseError((KviError::translateSystemError(err)));
+ else raiseError(KviError_remoteEndClosedConnection);
+ reset();
+ } //else transient error...wait again...
+ }
+}
+//=== data queue functions ==================================================//
+//
+// queue_insertMessage : appends a KviIrcSocketMsgEntry to the tail of
+// the message queue. The next_ptr for this message is set to 0.
+// queue_removeMessage : removes a message from the head of the queue.
+//
+
+void KviIrcSocket::queue_insertMessage(KviIrcSocketMsgEntry *msg_ptr)
+{
+ __range_valid(msg_ptr);
+ __range_valid(msg_ptr->data_ptr);
+ __range_valid(msg_ptr->data_len);
+ msg_ptr->next_ptr = 0;
+ if(m_pSendQueueHead)
+ {
+ m_pSendQueueTail->next_ptr = msg_ptr;
+ m_pSendQueueTail = msg_ptr;
+ } else {
+ m_pSendQueueHead = msg_ptr;
+ m_pSendQueueTail = msg_ptr;
+ }
+}
+
+void KviIrcSocket::free_msgEntry(KviIrcSocketMsgEntry * e)
+{
+ if(e->pData)delete e->pData;
+ e->pData = 0;
+ kvi_free(e);
+}
+
+bool KviIrcSocket::queue_removeMessage()
+{
+ __range_valid(m_pSendQueueTail);
+ __range_valid(m_pSendQueueHead);
+ if(m_pSendQueueHead->pData)delete m_pSendQueueHead->pData;
+ KviIrcSocketMsgEntry *aux_ptr = m_pSendQueueHead;
+ m_pSendQueueHead = aux_ptr->next_ptr;
+ kvi_free((void *)aux_ptr);
+ if(m_pSendQueueHead == 0)
+ {
+ m_pSendQueueTail = 0;
+ return false;
+ } else return true;
+}
+
+void KviIrcSocket::queue_removeAllMessages()
+{
+ if(m_pSendQueueHead)while(queue_removeMessage());
+}
+
+//=== flushSendQueue ========================================================//
+//
+// Attempts to send as much as possible to the server
+// If fails (happens only on really lagged servers)
+// calls itself with a QTimer shot after KVI_OPTION_UINT(KviOption_uintSocketQueueFlushTimeout) ms
+// to retry again...
+//
+void KviIrcSocket::flushSendQueue()
+{
+ // If we're called from the flush timer , stop it
+ if(m_pFlushTimer->isActive())m_pFlushTimer->stop();
+
+ // Ok...have something to send...
+ __range_valid(m_state != Idle);
+
+ struct timeval curTime;
+
+ while(m_pSendQueueHead)
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolLimitOutgoingTraffic))
+ {
+ kvi_gettimeofday(&curTime,0);
+
+ int timeDiff = curTime.tv_usec - m_tAntiFloodLastMessageTime.tv_usec;
+ timeDiff += (curTime.tv_sec - m_tAntiFloodLastMessageTime.tv_sec) * 1000000;
+
+
+ if(((unsigned int)timeDiff) < KVI_OPTION_UINT(KviOption_uintOutgoingTrafficLimitUSeconds))
+ {
+ // need to wait for a while....
+ m_pFlushTimer->start(((KVI_OPTION_UINT(KviOption_uintOutgoingTrafficLimitUSeconds) - timeDiff) / 1000) + 1);
+ return;
+ } // else can send
+ }
+ // Write one data buffer...
+ int result;
+#ifdef COMPILE_SSL_SUPPORT
+ if(m_pSSL)
+ {
+ result = m_pSSL->write((char *)(m_pSendQueueHead->pData->data()),m_pSendQueueHead->pData->size());
+ } else {
+#endif
+ result = kvi_socket_send(m_sock,(char *)(m_pSendQueueHead->pData->data()),m_pSendQueueHead->pData->size());
+#ifdef COMPILE_SSL_SUPPORT
+ }
+#endif
+ if(result == (int)m_pSendQueueHead->pData->size())
+ {
+ // Succesfull send...remove this data buffer
+ m_uSentPackets++;
+ m_uSentBytes += result;
+ //if(m_pConsole->hasMonitors())outgoingMessageNotifyMonitors((char *)(m_pSendQueueHead->pData->data()),result);
+ queue_removeMessage();
+ if(KVI_OPTION_BOOL(KviOption_boolLimitOutgoingTraffic))
+ {
+ m_tAntiFloodLastMessageTime.tv_sec = curTime.tv_sec;
+ m_tAntiFloodLastMessageTime.tv_usec = curTime.tv_usec;
+ }
+ // And try next buffer...
+ continue;
+ } else {
+ // Something wrong ?
+#ifdef COMPILE_SSL_SUPPORT
+ if(result <= 0)
+ {
+ if(m_pSSL)
+ {
+ // ops...might be an SSL error
+ switch(m_pSSL->getProtocolError(result))
+ {
+ case KviSSL::WantWrite:
+ case KviSSL::WantRead:
+ // Async continue...
+ m_pFlushTimer->start(KVI_OPTION_UINT(KviOption_uintSocketQueueFlushTimeout));
+ return;
+ break;
+ case KviSSL::SyscallError:
+ if(result == 0)
+ {
+ raiseSSLError();
+ raiseError(KviError_remoteEndClosedConnection);
+ reset();
+ return;
+ } else {
+ int iSSLErr = m_pSSL->getLastError(true);
+ if(iSSLErr != 0)
+ {
+ raiseSSLError();
+ raiseError(KviError_SSLError);
+ reset();
+ return;
+ } else {
+ goto handle_system_error;
+ }
+ }
+ break;
+ case KviSSL::SSLError:
+ raiseSSLError();
+ raiseError(KviError_SSLError);
+ reset();
+ return;
+ break;
+ default:
+ raiseError(KviError_SSLError);
+ reset();
+ return;
+ break;
+ }
+ }
+ } else {
+#else //!COMPILE_SSL_SUPPORT
+ if(result >= 0)
+ {
+ if(result > 0)
+ {
+#endif //!COMPILE_SSL_SUPPORT
+
+ // Partial send...need to finish it later
+ m_pSendQueueHead->pData->remove(result);
+
+ m_uSentBytes += result;
+ if(_OUTPUT_VERBOSE)
+ outputSocketWarning(__tr2qs("Partial socket write: packet broken into smaller pieces."));
+#ifndef COMPILE_SSL_SUPPORT
+ }
+#endif //!COMPILE_SSL_SUPPORT
+ // Async continue...
+ m_pFlushTimer->start(KVI_OPTION_UINT(KviOption_uintSocketQueueFlushTimeout));
+ return;
+ }
+
+handle_system_error:
+ // Oops...error ?
+ int err = kvi_socket_error();
+#ifdef COMPILE_ON_WINDOWS
+ if((err == EAGAIN) || (err == EINTR) || (err == WSAEWOULDBLOCK))
+#else
+ if((err == EAGAIN)||(err == EINTR))
+#endif
+ {
+ // Transient error...partial send as before...
+ if(_OUTPUT_VERBOSE)
+ outputSocketWarning(__tr2qs("Partial socket write: packet broken into smaller pieces."));
+ // Async continue...
+ m_pFlushTimer->start(KVI_OPTION_UINT(KviOption_uintSocketQueueFlushTimeout));
+ return;
+ } else {
+ // Disconnected... :(
+ raiseError((KviError::translateSystemError(err)));
+ reset();
+ return;
+ }
+ }
+ }
+ //flushed completely ...
+}
+
+bool KviIrcSocket::getLocalHostIp(QString &szIp,bool bIpV6)
+{
+ if(m_state != Connected)return false;
+
+ if(bIpV6)
+ {
+#ifdef COMPILE_IPV6_SUPPORT
+ struct sockaddr_in6 name;
+ int len = sizeof(name);
+ if(!kvi_socket_getsockname(m_sock, (struct sockaddr *)&name,&len))return false;
+ //I assume that getsockname returns data in Network byte order...
+ //The man page misses to specify that...
+ if(!kvi_binaryIpToStringIp_V6(name.sin6_addr,szIp))return false;
+ return true;
+#else
+ return false; // no support
+#endif
+ }
+ struct sockaddr_in name;
+ int len = sizeof(name);
+ if(!kvi_socket_getsockname(m_sock, (struct sockaddr *)&name,&len))return false;
+ //I assume that getsockname returns data in Network byte order...
+ //The man page misses to specify that...
+ if(!kvi_binaryIpToStringIp(name.sin_addr,szIp))return false;
+ return true;
+}
+
+
+
+
+
+
+/*
+bool KviIrcSocket::sendFmtData(const char *fmt,...)
+{
+ if(m_state != Connected)return false;
+ //new buffer
+ KviIrcSocketMsgEntry *ptr = (KviIrcSocketMsgEntry *)kvi_malloc(sizeof(KviIrcSocketMsgEntry));
+ ptr->pData = new KviDataBuffer(512);
+ kvi_va_list(list);
+ kvi_va_start(list,fmt);
+ bool bTruncated;
+ //sprintf the buffer up to 512 chars (adds a CRLF too)
+ int iLen = kvi_irc_vsnprintf((char *)(ptr->pData->data()),fmt,list,&bTruncated);
+ kvi_va_end(list);
+ //adjust the buffer size
+ if(iLen < 512)ptr->pData->resize(iLen);
+ if(bTruncated)
+ {
+ if(_OUTPUT_VERBOSE)
+ outputSocketWarning(__tr2qs("Socket message truncated to 512 bytes."));
+ }
+
+ queue_insertMessage(ptr);
+ if(!m_bInProcessData)flushSendQueue();
+ return (m_state != Idle);
+}
+*/
+/*
+bool KviIrcSocket::sendData(const char *buffer,int buflen)
+{
+ if(m_state != Connected)return false;
+ //new buffer
+ KviIrcSocketMsgEntry *ptr = (KviIrcSocketMsgEntry *)kvi_malloc(sizeof(KviIrcSocketMsgEntry));
+ if(buflen < 0)buflen = strlen(buffer);
+ if(buflen > 510)
+ {
+ buflen = 510;
+ if(_OUTPUT_VERBOSE)
+ outputSocketWarning(__tr2qs("Socket message truncated to 512 bytes."));
+ }
+ ptr->pData = new KviDataBuffer(buflen + 2);
+ kvi_memmove(ptr->pData->data(),buffer,buflen);
+ *(ptr->pData->data()+buflen)='\r';
+ *(ptr->pData->data()+buflen+1)='\n';
+
+ queue_insertMessage(ptr);
+ if(!m_bInProcessData)flushSendQueue();
+ return (m_state != Idle);
+}
+*/
+
+bool KviIrcSocket::sendRawData(const char *buffer,int buflen)
+{
+ if((m_state == Idle) || (m_state == Connecting))return false;
+ //new buffer
+ KviIrcSocketMsgEntry *ptr = (KviIrcSocketMsgEntry *)kvi_malloc(sizeof(KviIrcSocketMsgEntry));
+ ptr->pData = new KviDataBuffer(buflen);
+ kvi_memmove(ptr->pData->data(),buffer,buflen);
+ queue_insertMessage(ptr);
+ if(!m_bInProcessData)flushSendQueue();
+ return (m_state != Idle);
+}
+
+bool KviIrcSocket::sendPacket(KviDataBuffer * pData)
+{
+ if(m_state != Connected)
+ {
+ delete pData;
+ pData = 0;
+ return false;
+ }
+ KviIrcSocketMsgEntry *ptr = (KviIrcSocketMsgEntry *)kvi_malloc(sizeof(KviIrcSocketMsgEntry));
+ ptr->pData = pData;
+ queue_insertMessage(ptr);
+ if(!m_bInProcessData)flushSendQueue();
+ return (m_state != Idle);
+}
diff --git a/src/kvirc/kernel/kvi_ircsocket.h b/src/kvirc/kernel/kvi_ircsocket.h
new file mode 100644
index 00000000..4946fd28
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircsocket.h
@@ -0,0 +1,174 @@
+#ifndef _KVI_IRCSOCKET_H_
+#define _KVI_IRCSOCKET_H_
+//==========================================================================================
+//
+// File : kvi_ircsocket.h
+// Creation date : Tue Jul 30 19:25:17 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//==========================================================================================
+
+#include "kvi_settings.h"
+#include "kvi_string.h"
+#include "kvi_sockettype.h"
+#include "kvi_time.h"
+#include "kvi_pointerlist.h"
+
+#include <qobject.h>
+
+class KviIrcServer;
+class KviProxy;
+class KviIrcConnection;
+class KviIrcConnectionTarget;
+class KviIrcLink;
+class KviSSL;
+class KviConsole;
+class KviDataBuffer;
+
+class QTimer;
+class QSocketNotifier;
+
+//
+// This class is the lowest level of the KVIrc networking stack
+// it sends and receives raw data packets from the underlying system
+// socket.
+// It should output only verbose "progress" messages.
+//
+
+typedef struct _KviIrcSocketMsgEntry
+{
+ KviDataBuffer * pData;
+ struct _KviIrcSocketMsgEntry * next_ptr;
+} KviIrcSocketMsgEntry;
+
+
+class KVIRC_API KviIrcSocket : public QObject
+{
+ Q_OBJECT
+public:
+ KviIrcSocket(KviIrcLink * pLink);
+ ~KviIrcSocket();
+public:
+ enum SocketState {
+ Idle ,
+ Connecting ,
+ ProxyLogin ,
+ ProxyHttpError,
+ Connected ,
+ ProxyFinalV4 ,
+ ProxyFinalV5 ,
+ ProxySelectAuthMethodV5 ,
+ ProxyUserPassV5 ,
+ ProxyFinalHttp ,
+ SSLHandshake
+ };
+protected:
+ unsigned int m_uId;
+ KviIrcLink * m_pLink;
+ KviConsole * m_pConsole;
+ kvi_socket_t m_sock;
+ SocketState m_state;
+ QSocketNotifier * m_pWsn;
+ QSocketNotifier * m_pRsn;
+ KviIrcServer * m_pIrcServer;
+ KviProxy * m_pProxy;
+ QTimer * m_pTimeoutTimer;
+ unsigned int m_uReadBytes;
+ unsigned int m_uSentBytes;
+ int m_iLastError;
+ unsigned int m_uSentPackets;
+ KviIrcSocketMsgEntry * m_pSendQueueHead;
+ KviIrcSocketMsgEntry * m_pSendQueueTail;
+ QTimer * m_pFlushTimer;
+ struct timeval m_tAntiFloodLastMessageTime;
+ bool m_bInProcessData;
+#ifdef COMPILE_SSL_SUPPORT
+ KviSSL * m_pSSL;
+#endif
+public:
+ int lastError(){ return m_iLastError; };
+ unsigned int id(){ return m_uId; };
+ KviConsole * console(){ return m_pConsole; };
+ KviIrcLink * link(){ return m_pLink; };
+#ifdef COMPILE_SSL_SUPPORT
+ bool usingSSL(){ return m_pSSL; };
+#else
+ bool usingSSL(){ return false; };
+#endif
+ unsigned int readBytes(){ return m_uReadBytes; };
+ unsigned int sentBytes(){ return m_uSentBytes; };
+ //unsigned int readPackets(){ return m_uReadPackets; };
+ unsigned int sentPackets(){ return m_uSentPackets; };
+ SocketState state(){ return m_state; };
+ bool isConnected(){ return m_state == Connected; };
+ int startConnection(KviIrcServer * srv,KviProxy * prx = 0,const char * bindAddress = 0);
+
+ //bool sendData(const char *buffer,int buflen = -1) KVI_DEPRECATED;
+ //bool sendFmtData(const char *fmt,...) KVI_DEPRECATED;
+ bool sendPacket(KviDataBuffer * pData);
+ void abort();
+ bool getLocalHostIp(QString &szIp,bool bIpV6);
+protected slots:
+ void connectionTimedOut();
+ void writeNotifierFired(int);
+ void readData(int);
+ void readProxyData(int);
+ void readHttpProxyErrorData(int);
+ void flushSendQueue();
+ void doSSLHandshake(int);
+protected:
+#ifdef COMPILE_SSL_SUPPORT
+ void raiseSSLError();
+ void printSSLPeerCertificate();
+ void printSSLCipherInfo();
+#endif
+ bool sendRawData(const char *buffer,int buflen);
+ void raiseError(int iError);
+ void connectionEstabilished();
+ void connectedToProxy();
+ void connectedToIrcServer();
+ void proxyLoginHttp();
+ void proxyLoginV4();
+ void proxyLoginV5();
+ void proxyAuthUserPassV5();
+ void proxySendTargetDataV5();
+ void proxyHandleV5AuthReply(unsigned char reply);
+ void proxyHandleV5MethodReply(unsigned char reply);
+ void proxyHandleV5FinalReply(unsigned char reply);
+ void proxyHandleV4FinalReply(unsigned char reply);
+ void proxyHandleHttpFinalReply(const char * buffer,int bufLen);
+ void linkUp();
+ void handleInvalidSocketRead(int readedLength);
+ virtual void reset();
+ void free_msgEntry(KviIrcSocketMsgEntry * e);
+ bool queue_removeMessage();
+ void queue_removeAllMessages();
+ virtual void queue_insertMessage(KviIrcSocketMsgEntry *msg_ptr);
+ virtual void setState(SocketState st);
+private:
+ void outputSSLMessage(const QString &szMsg);
+ void outputSSLError(const QString &szMsg);
+ void outputProxyMessage(const QString &szMsg);
+ void outputProxyError(const QString &szMsg);
+ void outputSocketMessage(const QString &szMsg);
+ void outputSocketWarning(const QString &szMsg);
+ void outputSocketError(const QString &szMsg);
+};
+
+#endif //_KVI_IRCSOCKET_H_
diff --git a/src/kvirc/kernel/kvi_ircurl.cpp b/src/kvirc/kernel/kvi_ircurl.cpp
new file mode 100644
index 00000000..5b443103
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircurl.cpp
@@ -0,0 +1,363 @@
+//
+// File : kvi_ircurl.cpp
+// Creation date : Sun Mar 04 2001 14:20:12 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#define __KVIRC__
+#include "kvi_string.h"
+#include "kvi_inttypes.h"
+#include "kvi_qstring.h"
+#include "kvi_ircserver.h"
+#include "kvi_kvs_script.h"
+#include "kvi_msgbox.h"
+#include "kvi_channel.h"
+#include "kvi_app.h"
+#include "kvi_locale.h"
+#include "kvi_ircconnectiontarget.h"
+#include "kvi_ircconnection.h"
+#include "kvi_irccontext.h"
+#include "kvi_console.h"
+#include "kvi_frame.h"
+
+#define _KVI_IRCURL_CPP_
+#include "kvi_ircurl.h"
+
+
+bool KviIrcUrl::parse(const char * url,KviStr &cmdBuffer,int contextSpec)
+{
+ // irc[6]://<server>[:<port>][/<channel>[?<pass>]]
+ KviStr szUrl = url;
+ //szUrl.replaceAll("$","\\$");
+ //szUrl.replaceAll(";","\\;");
+ bool bIpV6 = false;
+ bool bSSL = false;
+ KviStr szServer;
+ kvi_u32_t uPort = 0;
+ bool bGotPort = false;
+ if(kvi_strEqualCIN(szUrl.ptr(),"irc://",6))
+ {
+ szUrl.cutLeft(6);
+ } else if(kvi_strEqualCIN(szUrl.ptr(),"irc6://",7))
+ {
+ bIpV6 = true;
+ szUrl.cutLeft(7);
+ } else if(kvi_strEqualCIN(szUrl.ptr(),"ircs://",7))
+ {
+ bSSL = true;
+ szUrl.cutLeft(7);
+ } else if(kvi_strEqualCIN(szUrl.ptr(),"ircs6://",8))
+ {
+ bIpV6 = true;
+ bSSL = true;
+ szUrl.cutLeft(8);
+ } else return false;
+
+ KviStr szServerAndPort;
+
+ int idx = szUrl.findFirstIdx('/');
+ if(idx != -1)
+ {
+ szServerAndPort = szUrl.left(idx);
+ szUrl.cutLeft(idx + 1);
+ } else {
+ szServerAndPort = szUrl;
+ szUrl = "";
+ }
+
+ if(szServerAndPort.isEmpty())return false;
+
+ idx = szServerAndPort.findFirstIdx(':');
+
+ if(idx != -1)
+ {
+ szServer = szServerAndPort.left(idx);
+ szServerAndPort.cutLeft(idx + 1);
+ bool bOk;
+ uPort = szServerAndPort.toUInt(&bOk);
+ if(!bOk)uPort = 6667;
+ bGotPort = true;
+ } else {
+ szServer = szServerAndPort;
+ }
+
+ cmdBuffer = "server ";
+ switch(contextSpec)
+ {
+ case KVI_IRCURL_CONTEXT_FIRSTFREE:
+ cmdBuffer.append("-u ");
+ break;
+ case KVI_IRCURL_CONTEXT_NEW:
+ cmdBuffer.append("-n ");
+ break;
+ }
+ if(bIpV6)cmdBuffer.append(" -i ");
+ if(bSSL)cmdBuffer.append(" -s ");
+
+ if(szUrl.hasData())
+ {
+ KviStr szChannel;
+ KviStr szPass;
+
+ idx = szUrl.findFirstIdx('?');
+ if(idx != -1)
+ {
+ szChannel = szUrl.left(idx);
+ szUrl.cutLeft(idx + 1);
+ szPass = szUrl;
+ } else {
+ szChannel = szUrl;
+ szPass = "";
+ }
+
+ if(!(szChannel.firstCharIs('#') || szChannel.firstCharIs('!') || szChannel.firstCharIs('&')))
+ szChannel.prepend('#');
+
+ if(szPass.isEmpty())cmdBuffer.append(KviStr::Format," -c=\"join %s\" ",szChannel.ptr());
+ else cmdBuffer.append(KviStr::Format," -c=\"join %s %s\" ",szChannel.ptr(),szPass.ptr());
+
+ }
+
+ cmdBuffer.append(szServer);
+ if(bGotPort)cmdBuffer.append(KviStr::Format," %d",uPort);
+
+ cmdBuffer.append(';');
+
+ return true;
+}
+
+void KviIrcUrl::split(QString url, KviIrcUrlParts& result)
+{
+ // irc[s][6]://<server>[:<port>][/<channel>[?<pass>]][[,<channel>[?<pass>]]
+
+ //defaults
+ result.bSsl=false;
+ result.bIpV6=false;
+ result.iPort = 6667;
+ result.iError=0;
+
+ int iProtoLen = url.find("://");
+ if(iProtoLen!=-1) {
+ if(KviQString::equalCIN(url,"irc",3)) {
+ // OK, seems to be a valid proto;
+ url = url.right(url.length()-3);
+ if(KviQString::equalCIN(url,"s",1)) {
+ result.bSsl=true;
+ url = url.right(url.length()-1);
+ }
+ if(KviQString::equalCIN(url,"6",1)) {
+ result.bIpV6=true;
+ url = url.right(url.length()-1);
+ }
+ if(!KviQString::equalCIN(url,"://",3)) {
+ //irc(???):// proto??
+ result.iError |= InvalidProtocol;
+ }
+ iProtoLen = url.find("://");
+ url = url.right(url.length()-iProtoLen-3);
+ } else {
+ result.iError |= InvalidProtocol;
+ }
+ }
+ //Ok, we understand a protocol.. Now we shuld find a server name:)
+ int iTmp;
+ iTmp = url.find(':');
+ if(iTmp!=-1) {
+ result.szHost = url.left(iTmp);
+ url = url.right(url.length()-iTmp-1);
+ // Accepted, now the time for the port:)
+ bool bOk;
+ if( (iTmp = url.find('/')) != -1) { // any channels pending?
+ result.iPort = url.left(iTmp).toUInt(&bOk);
+ if(!bOk) {
+ result.iPort = 6667;
+ result.iError |= InvalidPort;
+ }
+ url = url.right(url.length()-iTmp-1);
+ } else {
+ result.iPort = url.toUInt(&bOk);
+ if(!bOk) {
+ result.iPort = 6667;
+ result.iError |= InvalidPort;
+ }
+ url = "";
+ }
+ } else if( (iTmp = url.find('/')) != -1) { // have channels??
+ result.szHost = url.left(iTmp);
+ url = url.right(url.length()-iTmp-1);
+ } else {
+ result.szHost = url;
+ url = "";
+ }
+
+ //and, finally, channels:D
+
+ result.chanList = QStringList::split(',',url);
+
+}
+
+void KviIrcUrl::join(QString &uri, KviIrcServer* server)
+{
+ if(server)
+ {
+ uri="irc";
+
+ if(server->useSSL()) uri.append("s");
+ if(server->isIpV6()) uri.append("6");
+
+ uri.append("://");
+ uri.append(server->hostName());
+ if(server->port()!=6667) uri.append(QString(":%1").arg(server->port()));
+ uri.append("/");
+ }
+}
+
+void KviIrcUrl::makeJoinCmd(const QStringList& chans, QString& szJoinCommand)
+{
+ QString szChannels,szProtectedChannels,szPasswords,szCurPass,szCurChan;
+ if(chans.count()!=0)
+ {
+
+ for ( QStringList::ConstIterator it = chans.begin(); it != chans.end(); ++it ) {
+
+ szCurPass=(*it).section('?',1);
+ if(szCurPass.isEmpty())
+ {
+ if(!szChannels.isEmpty())
+ szChannels.append(",");
+ szCurChan = (*it).section('?',0,0);
+ if(!(szCurChan[0]=='#' || szCurChan[0]=='&' || szCurChan[0]=='!'))
+ szCurChan.prepend('#');
+ szChannels.append(szCurChan);
+ } else {
+ if(!szProtectedChannels.isEmpty())
+ szProtectedChannels.append(",");
+ szCurChan = (*it).section('?',0,0);
+ if(!(szCurChan[0]=='#' || szCurChan[0]=='&' || szCurChan[0]=='!'))
+ szCurChan.prepend('#');
+ szProtectedChannels.append(szCurChan);
+ if(!szPasswords.isEmpty())
+ szPasswords.append(",");
+ szPasswords.append(szCurPass);
+ }
+ }
+ szJoinCommand = "JOIN ";
+ szJoinCommand.append(szProtectedChannels);
+ if(!szProtectedChannels.isEmpty() && !szChannels.isEmpty())
+ szJoinCommand.append(',');
+ szJoinCommand.append(szChannels);
+ szJoinCommand.append(" ");
+ szJoinCommand.append(szPasswords);
+ }
+}
+
+int KviIrcUrl::run(const QString& text,int contextSpec,KviConsole* pConsole)
+{
+ KviIrcUrlParts parts;
+ KviIrcUrl::split(text,parts);
+ QString cmdBuffer;
+
+ if( (contextSpec & CurrentContext) && !pConsole) {
+ contextSpec = FirstFreeContext;
+ }
+
+ if( (contextSpec & TryCurrentContext) && !pConsole) {
+ contextSpec = FirstFreeContext;
+ }
+
+ if(contextSpec & FirstFreeContext) {
+ if(pConsole) {
+ if(pConsole->connectionInProgress())
+ {
+ pConsole = g_pFrame->firstNotConnectedConsole();
+ if(!pConsole) {
+ pConsole = g_pFrame->createNewConsole();
+ }
+ }
+ } else {
+ pConsole = g_pFrame->firstNotConnectedConsole();
+ if(!pConsole) {
+ pConsole = g_pFrame->createNewConsole();
+ }
+ }
+ }
+
+ if(!(parts.iError & KviIrcUrl::InvalidProtocol)) {
+ g_pApp->addRecentUrl(text);
+
+ QString szJoinCommand;
+ makeJoinCmd(parts.chanList,szJoinCommand);
+ QString szCommand("server ");
+ if(parts.bSsl) szCommand.append("-s ");
+ if(parts.bIpV6) szCommand.append("-i ");
+ if(!szJoinCommand.isEmpty()){
+ szCommand.append("-c=\"");
+ szCommand.append(szJoinCommand);
+ szCommand.append("\" ");
+ }
+ szCommand.append(QString("%1 %2 ").arg(parts.szHost).arg(parts.iPort));
+
+ if(pConsole->connection()) {
+ KviIrcServer* server = pConsole->connection()->target()->server();
+ if(
+ ( server->hostName() != parts.szHost ) ||
+ ( server->port() != parts.iPort ) ||
+ ( server->useSSL() != parts.bSsl ) ||
+ ( server->isIpV6() != parts.bIpV6) )
+ { // New server, try to reconnect
+ KviKvsScript::run(szCommand,(contextSpec & TryCurrentContext) ? g_pFrame->createNewConsole() : pConsole);
+ return parts.iError;
+ } else {
+ // the same server, but probably new chanlist
+ QString tmp;
+ QString toPart;
+ for(KviChannel * c = pConsole->connection()->channelList()->first();c;c = pConsole->connection()->channelList()->next())
+ {
+ tmp=c->name();
+ if(c->hasChannelKey()) {
+ tmp.append("?");
+ tmp.append(c->channelKey());
+ }
+ if(!parts.chanList.remove(tmp))
+ {
+ toPart.append(c->name());
+ toPart.append(",");
+ }
+ }
+ if(!(contextSpec & DoNotPartChans))
+ {
+ makeJoinCmd(parts.chanList,szJoinCommand);
+ if(!toPart.isEmpty())
+ {
+ toPart.prepend("part ");
+ KviKvsScript::run(toPart,pConsole);
+ }
+ }
+ if(!szJoinCommand.isEmpty())
+ {
+ pConsole->connection()->sendData(pConsole->connection()->encodeText(szJoinCommand).data());
+ }
+ return parts.iError;
+ }
+ }
+ // New server
+ KviKvsScript::run(szCommand,pConsole);
+ }
+ //!invalid proto
+ return parts.iError;
+}
diff --git a/src/kvirc/kernel/kvi_ircurl.h b/src/kvirc/kernel/kvi_ircurl.h
new file mode 100644
index 00000000..f3a8f10c
--- /dev/null
+++ b/src/kvirc/kernel/kvi_ircurl.h
@@ -0,0 +1,78 @@
+#ifndef _KVI_IRCURL_H_
+#define _KVI_IRCURL_H_
+
+//
+// File : kvi_ircurl.h
+// Creation date : Sun Mar 04 2001 14:22:55 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+#include "kvi_string.h"
+#include "kvi_inttypes.h"
+
+class KviIrcServer;
+class KviConsole;
+
+#include <qstringlist.h>
+
+// Create /server -u <server> commands (first free context)
+#define KVI_IRCURL_CONTEXT_FIRSTFREE 0
+// Create /server -n <server> commands (new irc context)
+#define KVI_IRCURL_CONTEXT_NEW 1
+// Create /server <server> commands (this irc context)
+#define KVI_IRCURL_CONTEXT_THIS 2
+
+typedef struct _KviIrcUrlParts {
+ QString szHost;
+ kvi_u32_t iPort;
+ bool bIpV6;
+ bool bSsl;
+ QStringList chanList;
+ int iError;
+ } KviIrcUrlParts;
+
+namespace KviIrcUrl
+{
+
+ enum KviIrcUrlParserError {
+ InvalidProtocol = 1,
+ InvalidPort = 2,
+ NeedNewContext = 4
+ };
+
+ enum KviIrcUrlContextSpec {
+ FirstFreeContext = 1,
+ NewContext = 2,
+ CurrentContext = 4,
+ TryCurrentContext = 8,
+
+ DoNotPartChans = 16
+ };
+
+ extern KVIRC_API bool parse(const char * url,KviStr &cmdBuffer,int contextSpec = KVI_IRCURL_CONTEXT_FIRSTFREE);
+
+ extern KVIRC_API int run(const QString& url,int contextSpec = FirstFreeContext,KviConsole* pConsole = 0);
+
+ extern KVIRC_API void split(QString url, KviIrcUrlParts& parts);
+ extern KVIRC_API void join(QString &url, KviIrcServer* server);
+ extern KVIRC_API void makeJoinCmd(const QStringList& chans, QString& szJoinCommand);
+}
+
+#endif // _KVI_IRCURL_H_
diff --git a/src/kvirc/kernel/kvi_lagmeter.cpp b/src/kvirc/kernel/kvi_lagmeter.cpp
new file mode 100644
index 00000000..5e7a4abe
--- /dev/null
+++ b/src/kvirc/kernel/kvi_lagmeter.cpp
@@ -0,0 +1,266 @@
+//=============================================================================
+//
+// File : kvi_lagmeter.cpp
+// Creation date : Fri Oct 18 13:31:36 CEST 2002 by Juanjo �varez
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_lagmeter.h"
+#include "kvi_options.h"
+#include "kvi_kvs_eventtriggers.h"
+#include "kvi_parameterlist.h"
+#include "kvi_ircconnection.h"
+#include "kvi_irccontext.h"
+#include "kvi_frame.h"
+#include "kvi_console.h"
+#include "kvi_time.h"
+#include "kvi_ircconnectionuserinfo.h"
+#include "kvi_ircconnectionserverinfo.h"
+#include "kvi_out.h"
+#include "kvi_locale.h"
+
+KviLagMeter::KviLagMeter(KviIrcConnection * c)
+: QObject()
+{
+ m_pConnection = c;
+ m_pCheckList = new KviPointerList<KviLagCheck>;
+ m_pCheckList->setAutoDelete(true);
+ m_uLag = 0;
+ m_uLastEmittedLag = 0;
+ m_uLastReliability = 0;
+ m_tLastCompleted = 0;
+ m_tLastOwnCheck = 0;
+ m_tFirstOwnCheck = 0;
+ m_bOnAlarm = false;
+ m_pDeletionSignal = 0;
+
+ // FIXME: We could use the KviIrcConnection::heartbeat() here!
+ if(KVI_OPTION_UINT(KviOption_uintLagMeterHeartbeat) < 2000)
+ KVI_OPTION_UINT(KviOption_uintLagMeterHeartbeat) = 2000; // kinda absurd
+
+ if(KVI_OPTION_UINT(KviOption_uintLagMeterHeartbeat) > 10000)
+ KVI_OPTION_UINT(KviOption_uintLagMeterHeartbeat) = 10000; // kinda absurd
+
+ startTimer(KVI_OPTION_UINT(KviOption_uintLagMeterHeartbeat)); // 5 seconds by default
+}
+
+KviLagMeter::~KviLagMeter()
+{
+ if(m_pDeletionSignal)*m_pDeletionSignal = true;
+#ifndef COMPILE_USE_QT4
+ killTimers();
+#endif
+ delete m_pCheckList;
+}
+
+unsigned int KviLagMeter::secondsSinceLastCompleted()
+{
+ struct timeval tv;
+ kvi_gettimeofday(&tv,0);
+ return tv.tv_sec - m_tLastCompleted;
+}
+
+void KviLagMeter::timerEvent(QTimerEvent *)
+{
+ if(m_pConnection->state() != KviIrcConnection::Connected)return; // do nothing atm
+
+ // If the lag has changed emit our signals
+ if((m_uLag / 10) != (m_uLastEmittedLag / 10))
+ {
+ m_uLastEmittedLag = m_uLag;
+ g_pFrame->childConnectionLagChange(m_pConnection);
+
+ KviStr szLag(KviStr::Format,"%u",m_uLag);
+
+ bool bDeletionSignal = false;
+ m_pDeletionSignal = &bDeletionSignal;
+
+ if((!m_bOnAlarm) && (m_uLag > KVI_OPTION_UINT(KviOption_uintLagAlarmTime)))
+ {
+ KVS_TRIGGER_EVENT_2_HALTED(KviEvent_OnLagAlarmTimeUp,
+ m_pConnection->console(),m_pConnection->serverInfo()->name(),QString(szLag.ptr()));
+ if(bDeletionSignal)return; // killed , probably by a quit -f -u
+ m_bOnAlarm = true;
+ } else if(m_bOnAlarm)
+ {
+ KVS_TRIGGER_EVENT_2_HALTED(KviEvent_OnLagAlarmTimeDown,
+ m_pConnection->console(),m_pConnection->serverInfo()->name(),QString(szLag.ptr()));
+ if(bDeletionSignal)return; // killed , probably by a quit -f -u
+ m_bOnAlarm = false;
+ }
+
+ KVS_TRIGGER_EVENT_2_HALTED(KviEvent_OnLagCheck,
+ m_pConnection->console(),m_pConnection->serverInfo()->name(),QString(szLag.ptr()));
+ if(bDeletionSignal)return; // killed , probably by a quit -f -u
+
+ m_pDeletionSignal = 0;
+ }
+
+ // get current time
+ struct timeval tv;
+ kvi_gettimeofday(&tv,0);
+ unsigned int uDiff = tv.tv_sec - m_tLastCompleted;
+ unsigned int uHeartbeat = KVI_OPTION_UINT(KviOption_uintLagMeterHeartbeat) / 1000;
+ if(uHeartbeat < 2)uHeartbeat = 2;
+ // we keep the last lag value for an amount of time
+ // depending on its reliability.
+ // Since reliability ranges from 10 to 100 we keep the lags
+ // for (hrtbt * 4) + (reliability / 2) seconds (which means from 25 to 70 seconds by default)
+ if(uDiff <= ((uHeartbeat * 4) + (m_uLastReliability / 2)))return; // nothing to do, the actual value is accurate
+
+ // the last completed check has been completed a lot of time ago
+ // do we have some checks on the queue ?
+ if(m_pCheckList->count() > 0)
+ {
+ // if the first registered check is not too outdated
+ // we wait a little more for it to return
+ KviLagCheck * c = m_pCheckList->first();
+ if(c)
+ {
+ if((tv.tv_sec - c->lSecs) <= 10)return;
+ }
+ // the first check was registered more than 10 secs before
+ if(m_tLastOwnCheck > 0)
+ {
+ // hm.. we have already sent our own (reliable) check after the last completed
+ // make the lag grow (we're pretty sure it's growing)
+ uDiff = (tv.tv_sec - m_tFirstOwnCheck) * 1000;
+ if(m_uLag < uDiff)m_uLag = uDiff; // the lag grows for sure
+ uDiff = tv.tv_sec - m_tLastOwnCheck;
+ if(uDiff < (uHeartbeat * 4))return; // wait a bit...send own checks only every 20 secs (by default) at this point
+ }
+ }
+ // or we have no checks in the queue at all
+ // or it's really time to do something...
+ if(m_tFirstOwnCheck == 0)
+ {
+ if(_OUTPUT_PARANOIC)
+ m_pConnection->console()->output(KVI_OUT_VERBOSE,__tr2qs("Sending out PING based lag probe"));
+
+ // this is the first our own lag check since the last succesfull one: use the ping
+ lagCheckRegister("@ping@",70); // the ping may be fooled easily
+ m_pConnection->sendFmtData("PING %s %s",
+ m_pConnection->encodeText( m_pConnection->userInfo()->nickName() ).data(),
+ m_pConnection->encodeText( m_pConnection->serverInfo()->name() ).data() );
+ m_tFirstOwnCheck = tv.tv_sec;
+ } else {
+ if(_OUTPUT_PARANOIC)
+ m_pConnection->console()->output(KVI_OUT_VERBOSE,__tr2qs("Sending out CTCP based lag probe"));
+
+ // we have already sent a ping but we got no reply
+ // try with another method... even if this will reset our idle time
+ KviStr tmp(KviStr::Format,"%d%d-yeah-:)",tv.tv_sec,tv.tv_usec);
+ lagCheckRegister(tmp.ptr(),100); // almost impossible to fool
+ m_pConnection->sendFmtData("NOTICE %s :%cLAGCHECK %s%c",
+ m_pConnection->encodeText( m_pConnection->userInfo()->nickName() ).data(),
+ 0x01,
+ tmp.ptr(),
+ 0x01);
+ }
+ m_tLastOwnCheck = tv.tv_sec;
+}
+
+void KviLagMeter::lagCheckRegister(const char * key,unsigned int uReliability)
+{
+ if(uReliability < 10)return; // what the heck of a lag check is this ?
+ // store the lagcheck structure and just return
+
+ if(_OUTPUT_PARANOIC)
+ m_pConnection->console()->output(KVI_OUT_VERBOSE,__tr2qs("Registered lag check with reliability %u (%s)"),uReliability,key);
+
+ KviLagCheck * c = new KviLagCheck;
+ c->szKey = key;
+ struct timeval tv;
+ kvi_gettimeofday(&tv,0);
+ c->lSecs = tv.tv_sec;
+ c->lUSecs = tv.tv_usec;
+ c->uReliability = uReliability <= 100 ? uReliability : 100;
+ m_pCheckList->append(c);
+ while(m_pCheckList->count() > 30)
+ {
+ // we're fried :/
+ // either our ping mechanism is not working
+ // or the server is stoned...
+ m_pCheckList->removeFirst();
+ }
+}
+
+bool KviLagMeter::lagCheckComplete(const char * key)
+{
+ // find this lag check
+ KviLagCheck * c;
+ for(c = m_pCheckList->first();c;c = m_pCheckList->next())
+ {
+ if(kvi_strEqualCS(c->szKey.ptr(),key))break;
+ }
+ if(!c)return false; // not found
+ // kill any earlier lag checks (IRC is a sequential proto)
+ while(m_pCheckList->first() != c)m_pCheckList->removeFirst();
+
+ if(_OUTPUT_PARANOIC)
+ m_pConnection->console()->output(KVI_OUT_VERBOSE,__tr2qs("Lag check completed (%s)"),key);
+
+ struct timeval tv;
+ kvi_gettimeofday(&tv,0);
+
+ unsigned int uLag = ((tv.tv_sec - c->lSecs) * 1000);
+ if(tv.tv_usec < c->lUSecs)uLag -= ((c->lUSecs - tv.tv_usec) / 1000);
+ else uLag += ((tv.tv_usec - c->lUSecs) / 1000);
+
+ // now check the reliability
+
+ if(m_uLastReliability > c->uReliability)
+ {
+ // the actual data is more reliable than the new one :/
+ // change the real lag only by a certain amount
+ // c->uRel : 100 = uLag : m_uLag
+ m_uLag = ((uLag * c->uReliability) + (m_uLag * m_uLastReliability)) / (c->uReliability + m_uLastReliability);
+ } else {
+ // the actual data is less reliable than the new one
+ m_uLag = uLag;
+ }
+
+ m_tLastCompleted = tv.tv_sec; // now
+ m_tLastOwnCheck = 0;
+ m_tFirstOwnCheck = 0;
+ m_uLastReliability = c->uReliability;
+
+ m_pCheckList->removeFirst();
+
+ return true;
+}
+
+void KviLagMeter::lagCheckAbort(const char * key)
+{
+ KviPointerList<KviLagCheck> l;
+ l.setAutoDelete(false);
+ KviLagCheck * c;
+
+ if(_OUTPUT_PARANOIC)
+ m_pConnection->console()->output(KVI_OUT_VERBOSE,__tr2qs("Lag check aborted (%s)"),key);
+
+ for(c = m_pCheckList->first();c;c = m_pCheckList->next())
+ if(kvi_strEqualCS(c->szKey.ptr(),key))l.append(c);
+ for(c = l.first();c;c = l.next())m_pCheckList->removeRef(c);
+}
+
+#include "kvi_lagmeter.moc"
diff --git a/src/kvirc/kernel/kvi_lagmeter.h b/src/kvirc/kernel/kvi_lagmeter.h
new file mode 100644
index 00000000..6fb68ae5
--- /dev/null
+++ b/src/kvirc/kernel/kvi_lagmeter.h
@@ -0,0 +1,74 @@
+#ifndef _KVI_LAGMETER_H_
+#define _KVI_LAGMETER_H_
+//=============================================================================
+//
+// File : kvi_lagmeter.h
+// Creation date : Fri Oct 18 13:30:26 CEST 2002 by Juanjo �lvarez
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_string.h"
+#include "kvi_pointerlist.h"
+
+#include <qobject.h>
+
+class KviIrcConnection;
+
+class KviLagCheck
+{
+public:
+ KviStr szKey;
+ long lSecs; // since epoch
+ long lUSecs;
+ unsigned int uReliability; // [0-100]
+};
+
+class KVIRC_API KviLagMeter : public QObject
+{
+ Q_OBJECT
+ friend class KviIrcConnection;
+protected:
+ KviLagMeter(KviIrcConnection * c);
+ ~KviLagMeter();
+protected:
+ KviIrcConnection * m_pConnection;
+ unsigned int m_uLag; // last computed lag
+ unsigned int m_uLastEmittedLag; // last emitted lag
+ long m_tLastCompleted; // time when the last lag was completed (gettimeofday!)
+ unsigned int m_uLastReliability; // how much reliable was the last completed check ?
+ KviPointerList<KviLagCheck> * m_pCheckList;
+ long m_tFirstOwnCheck; // time when the first ping after a completed check was sent
+ long m_tLastOwnCheck; // time when the last ping was sent
+ bool m_bOnAlarm;
+ bool * m_pDeletionSignal; // we use this to signal our own delete
+public:
+ // lag checks should be done only against the user's server
+ // please make SURE that the key is unique!
+ void lagCheckRegister(const char * key,unsigned int uReliability = 50);
+ bool lagCheckComplete(const char * key);
+ void lagCheckAbort(const char * key);
+ unsigned int lag(){ return m_uLag; };
+ unsigned int secondsSinceLastCompleted();
+protected:
+ virtual void timerEvent(QTimerEvent * e);
+};
+
+#endif // _KVI_LAGMETER_H_
diff --git a/src/kvirc/kernel/kvi_main.cpp b/src/kvirc/kernel/kvi_main.cpp
new file mode 100644
index 00000000..90518b63
--- /dev/null
+++ b/src/kvirc/kernel/kvi_main.cpp
@@ -0,0 +1,412 @@
+//=============================================================================
+//
+// File : kvi_main.cpp
+// Creation date : Sun Jun 18 2000 12:38:45 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_app.h"
+#include "kvi_string.h"
+#include "kvi_settings.h"
+#include "kvi_ircurl.h"
+#include "kvi_defaults.h"
+#include "kvi_sourcesdate.h"
+#include "kvi_msgbox.h"
+
+#ifndef COMPILE_NO_IPC
+ extern bool kvi_sendIpcMessage(const char * message); // kvi_ipc.cpp
+#endif
+
+#include <qglobal.h> //for debug()
+
+#include <qmessagebox.h>
+
+#define KVI_ARGS_RETCODE_OK 0
+#define KVI_ARGS_RETCODE_ERROR 1
+#define KVI_ARGS_RETCODE_STOP 2
+
+typedef struct _ParseArgs
+{
+ int argc;
+ char ** argv;
+ char * configFile;
+ bool createFile;
+ bool bForceNewSession;
+ bool bShowPopup;
+ bool bShowSplashScreen;
+ bool bExecuteCommandAndClose;
+ KviStr szExecCommand;
+ KviStr szExecRemoteCommand;
+} ParseArgs;
+
+int parseArgs(ParseArgs * a)
+{
+ KviStr szServer;
+ KviStr szPort;
+ int idx;
+
+ if(a->argc < 2)return KVI_ARGS_RETCODE_OK;
+
+ for(idx = 1;idx < a->argc;idx++)
+ {
+ QString szMessage;
+ char * p = a->argv[idx];
+
+ if((kvi_strLen(p) > 3) && (*p == '-') && (*(p+1) == '-'))p++;
+
+ if(kvi_strEqualCI("-v",p) || kvi_strEqualCI("-version",p))
+ {
+ KviQString::appendFormatted(szMessage,"KVIrc %s '%s'\n",KVI_VERSION,KVI_RELEASE_NAME);
+ KviQString::appendFormatted(szMessage,"Sources date: %s\n",KVI_SOURCES_DATE);
+ KviQString::appendFormatted(szMessage,"Build date: %s\n",KVI_BUILD_DATE);
+ KviQString::appendFormatted(szMessage,"Home page: http://www.kvirc.net/\n");
+
+#ifdef COMPILE_ON_WINDOWS
+ MessageBox(0,szMessage.local8Bit().data(),"KVIrc",0);
+#else
+ debug(szMessage);
+#endif
+
+ return KVI_ARGS_RETCODE_STOP;
+ }
+
+ if(kvi_strEqualCI("-h",p) || kvi_strEqualCI("-help",p))
+ {
+ KviQString::appendFormatted(szMessage,"Usage:\n");
+ KviQString::appendFormatted(szMessage," %s [options] [server [port]] [ircurl [ircurl [...]]]\n",a->argv[0]);
+ KviQString::appendFormatted(szMessage," \n");
+ KviQString::appendFormatted(szMessage,"Available options:\n");
+ KviQString::appendFormatted(szMessage," -h, --help : Print this help and exit\n");
+ KviQString::appendFormatted(szMessage," -v, --version: Print version information and exit\n");
+ KviQString::appendFormatted(szMessage," -c <file> : Use <file> as config file instead of ~/%s\n",KVI_HOME_CONFIG_FILE_NAME);
+ KviQString::appendFormatted(szMessage," (defaults to $HOME/%s if <file> does not exist)\n",KVI_HOME_CONFIG_FILE_NAME);
+ KviQString::appendFormatted(szMessage," -n <file> : Use <file> as config file instead of $HOME/%s\n",KVI_HOME_CONFIG_FILE_NAME);
+ KviQString::appendFormatted(szMessage," (create <file> if it does not exist)\n");
+#ifdef COMPILE_NO_IPC
+ KviQString::appendFormatted(szMessage," -f : Accepted but ignored (for compatibility)\n");
+#else
+ KviQString::appendFormatted(szMessage," -f : Force a new KVIrc session, even if there is already\n");
+ KviQString::appendFormatted(szMessage," a running one.\n");
+#endif
+ KviQString::appendFormatted(szMessage," -e <commands>: If a KVIrc session is already running, execute\n");
+ KviQString::appendFormatted(szMessage," the <commands> in that session, otherwise start up\n");
+ KviQString::appendFormatted(szMessage," normally and execute <commands>\n");
+ KviQString::appendFormatted(szMessage," <commands> must be a single shell token.\n");
+ KviQString::appendFormatted(szMessage," You can eventually use this switch more than once\n");
+ KviQString::appendFormatted(szMessage," -x <commands>: If a KVIrc session is already running, execute\n");
+ KviQString::appendFormatted(szMessage," the <commands> in that session, otherwise exit from application without doing anything/\n");
+ KviQString::appendFormatted(szMessage," <commands> must be a single shell token.\n");
+ KviQString::appendFormatted(szMessage," You can eventually use this switch more than once\n");
+ KviQString::appendFormatted(szMessage," -r <commands>: If a KVIrc session is already running, execute the <commands>\n");
+ KviQString::appendFormatted(szMessage," in that session, otherwise start up normally (do not execute).\n");
+ KviQString::appendFormatted(szMessage," <commands> must be a single shell token.\n");
+ KviQString::appendFormatted(szMessage," You can eventually use this switch more than once\n");
+ KviQString::appendFormatted(szMessage," -m : If a KVIrc session is already running, show an informational\n");
+ KviQString::appendFormatted(szMessage," popup dialog instead of writing to the console");
+ KviQString::appendFormatted(szMessage," --nosplash : Do not show the splash screen at startup\n");
+ KviQString::appendFormatted(szMessage," [server] : Connect to this server after startup\n");
+ KviQString::appendFormatted(szMessage," [port] : Use this port for connection\n");
+ KviQString::appendFormatted(szMessage," [ircurl] : URL in the following form:\n");
+ KviQString::appendFormatted(szMessage," irc[6]://<server>[:<port>][/<channel>[?<pass>]]\n");
+
+#ifdef COMPILE_ON_WINDOWS
+ MessageBox(0,szMessage.local8Bit().data(),"KVIrc",0);
+#else
+ debug(szMessage);
+#endif
+ return KVI_ARGS_RETCODE_STOP;
+ }
+
+ if(kvi_strEqualCI("-c",p))
+ {
+ idx++;
+ if(idx >= a->argc)
+ {
+ debug("Option -c requires a config file name");
+ return KVI_ARGS_RETCODE_ERROR;
+ }
+ p = a->argv[idx];
+ a->configFile = p;
+ debug("Using file %s as config",p);
+ continue;
+ }
+
+ if(kvi_strEqualCI("-e",p))
+ {
+ idx++;
+ if(idx >= a->argc)
+ {
+ debug("Option -e requires a command");
+ return KVI_ARGS_RETCODE_ERROR;
+ }
+ p = a->argv[idx];
+ if(a->szExecCommand.hasData())a->szExecCommand.append("\n");
+ a->szExecCommand.append(p);
+ continue;
+ }
+
+ if(kvi_strEqualCI("-x",p))
+ {
+ idx++;
+ if(idx >= a->argc)
+ {
+ debug("Option -x requires a command");
+ return KVI_ARGS_RETCODE_ERROR;
+ }
+ p = a->argv[idx];
+ if(a->szExecCommand.hasData())a->szExecCommand.append("\n");
+ a->szExecCommand.append(p);
+ a->bExecuteCommandAndClose=true;
+ continue;
+ }
+
+ if(kvi_strEqualCI("-r",p))
+ {
+ idx++;
+ if(idx >= a->argc)
+ {
+ debug("Option -r requires a command");
+ return KVI_ARGS_RETCODE_ERROR;
+ }
+ p = a->argv[idx];
+ if(a->szExecRemoteCommand.hasData())a->szExecRemoteCommand.append("\n");
+ a->szExecRemoteCommand.append(p);
+ continue;
+ }
+
+ if(kvi_strEqualCI("-m",p))
+ {
+ a->bShowPopup = true;
+ continue;
+ }
+
+ if(kvi_strEqualCI("-n",p))
+ {
+ idx++;
+ if(idx >= a->argc)
+ {
+ debug("Option -n requires a config file name");
+ return KVI_ARGS_RETCODE_ERROR;
+ }
+ p = a->argv[idx];
+ a->configFile = p;
+ a->createFile=true;
+ debug("Using file %s as config",p);
+ continue;
+ }
+
+ if(kvi_strEqualCI("-nosplash",p))
+ {
+ a->bShowSplashScreen = false;
+ continue;
+ }
+
+ if(kvi_strEqualCI("-f",p))
+ {
+ a->bForceNewSession = true;
+ continue;
+ }
+
+ if(kvi_strEqualCI("-session",p)||kvi_strEqualCI("-display",p))
+ {
+ // Qt apps are supposed to handle the params to these switches, but we'll skip arg for now
+ idx++;
+ continue;
+ }
+
+ if(*p != '-')
+ {
+ // no dash
+ if(kvi_strEqualCIN(p,"irc://",6) || kvi_strEqualCIN(p,"irc6://",7) || kvi_strEqualCIN(p,"ircs://",7) || kvi_strEqualCIN(p,"ircs6://",8))
+ {
+ KviStr tmp = QString::fromLocal8Bit(p);
+ if(a->szExecCommand.hasData())a->szExecCommand.append('\n');
+ a->szExecCommand.append("openurl ");
+ tmp.replaceAll("$",""); // the urls can't contain $ signs
+ tmp.replaceAll(";",""); // the urls can't contain ; signs
+ a->szExecCommand.append(tmp);
+ } else {
+ QString tmp = QString::fromLocal8Bit(p);
+ bool bOk;
+ tmp.toUInt(&bOk);
+ if(bOk)szPort = tmp;
+ else {
+ QString ri = tmp.right(4);
+ if(KviQString::equalCI(ri,".kvs"))
+ {
+ if(a->szExecCommand.hasData())a->szExecCommand.append('\n');
+ a->szExecCommand.append("parse \"");
+ tmp.replace('$',"\\$");
+ tmp.replace('\\',"\\\\");
+ a->szExecCommand.append(tmp);
+ a->szExecCommand.append('"');
+ } else if(KviQString::equalCI(ri,".kvt"))
+ {
+ if(a->szExecCommand.hasData())a->szExecCommand.append('\n');
+ a->szExecCommand.append("theme.install \"");
+ tmp.replace('$',"\\$");
+ tmp.replace('\\',"\\\\");
+ a->szExecCommand.append(tmp);
+ a->szExecCommand.append('"');
+ } else
+ szServer = tmp; // assume a plain server name
+ }
+ }
+ }
+ }
+
+ if(szServer.hasData())
+ {
+ if(a->szExecCommand.hasData())a->szExecCommand.append('\n');
+ a->szExecCommand.append("server -u ");
+ a->szExecCommand.append(szServer);
+ if(szPort.hasData())
+ {
+ a->szExecCommand.append(' ');
+ a->szExecCommand.append(szPort);
+ }
+ }
+
+ return KVI_ARGS_RETCODE_OK;
+}
+
+#if defined(Q_OS_MACX) && (__GNUC__ == 3 && __GNUC_MINOR__ == 3)
+// Repair broken colour definitions due to "lazy" static object initialization
+void repair_colors(void)
+{
+ if(Qt::white.red() == 0)
+ {
+ Qt::color0 = (qRgb(255,255,255 ),0);
+ Qt::color1 = (qRgb(0,0,0),1);
+ Qt::black.setRgb(0,0,0);
+ Qt::white.setRgb(255,255,255);
+ Qt::darkGray.setRgb(128,128,128);
+ Qt::gray.setRgb(160,160,164);
+ Qt::lightGray.setRgb(192,192,192);
+ Qt::red.setRgb(255,0,0);
+ Qt::green.setRgb(0,255,0);
+ Qt::blue.setRgb(0,0,255);
+ Qt::cyan.setRgb(0,255,255);
+ Qt::magenta.setRgb(255,0,255);
+ Qt::yellow.setRgb(255,255,0);
+ Qt::darkRed.setRgb(128,0,0);
+ Qt::darkGreen.setRgb(0,128,0);
+ Qt::darkBlue.setRgb(0,0,128);
+ Qt::darkCyan.setRgb(0,128,128);
+ Qt::darkMagenta.setRgb(128,0,128);
+ Qt::darkYellow.setRgb(128,128,0);
+ }
+}
+#endif //Q_OS_MACX
+
+int main(int argc,char ** argv)
+{
+
+#if defined(Q_OS_MACX) && (__GNUC__ == 3 && __GNUC_MINOR__ == 3)
+ repair_colors();
+#endif //Q_OS_MACX
+
+ ParseArgs a;
+ a.argc = argc;
+ a.argv = argv;
+ a.configFile = 0;
+ a.createFile = false;
+ a.bForceNewSession = false;
+ a.bShowPopup = false,
+ a.bShowSplashScreen = true;
+ a.bExecuteCommandAndClose = false;
+
+ int retCode = parseArgs(&a);
+
+ if(retCode != KVI_ARGS_RETCODE_OK)return ((retCode == KVI_ARGS_RETCODE_ERROR) ? (-1) : 0);
+
+ // Need to have the X socket open before IPC startup
+ KviApp * theApp = new KviApp(argc,argv);
+
+ KviStr szRemoteCommand = a.szExecCommand;
+ if(a.szExecRemoteCommand.hasData())
+ {
+ if(szRemoteCommand.hasData())szRemoteCommand.append('\n');
+ szRemoteCommand.append(a.szExecRemoteCommand);
+ }
+
+ /*
+ FIXME: There is a race condition in the IPC mechanism.
+ If one starts two instances of kvirc one immediately after another
+ then both instances may run through kvi_sendIpcMessage
+ without finding the sentinel window and thus both may decide
+ to start.
+ A weak file locking mechanism should be used too...
+
+#ifdef COMPILE_ON_WINDOWS
+ QString szLock = convertSeparators(cleanDirPath(QDir::homeDirPath() + "/.kvirc.lock"));
+#else
+ QString szLock = convertSeparators(cleanDirPath(QDir::homeDirPath() + "/.kvirc.lock"));
+#endif
+
+ QFileInfo inf(szLock);
+ bool bLocked = false;
+ if(inf.exists())
+ {
+ iLocked = inf.lastModified().secsTo(QDateTime::currentDateTime());
+ }
+ */
+
+#ifndef COMPILE_NO_IPC
+ if(!a.bForceNewSession)
+ {
+ // here we could use CreateMutex on win and semget() on linux
+ // in order to get a shared semaphore to ensure instance unicity.
+
+ if(kvi_sendIpcMessage(szRemoteCommand.ptr()))
+ {
+ if(szRemoteCommand.isEmpty())
+ {
+ KviStr tmp(KviStr::Format,"Another KVIrc session is already running on this display and with this user id.\nUse %s -f if you want to force a new session.",argv[0]);
+ if(a.bShowPopup)
+ QMessageBox::information(0,"Session - KVIrc",tmp.ptr(),QMessageBox::Ok);
+ else
+ debug(tmp.ptr());
+ }
+ delete theApp;
+ return 0;
+ } else if(a.bExecuteCommandAndClose) {
+ delete theApp;
+ return 0;
+ }
+ }
+#endif
+
+ theApp->m_bCreateConfig = a.createFile;
+ theApp->m_szConfigFile = a.configFile;
+ theApp->m_szExecAfterStartup = a.szExecCommand;
+ theApp->m_bShowSplashScreen = a.bShowSplashScreen;
+ theApp->setup();
+
+ // YEAH!
+ int retVal = theApp->exec();
+ // :)
+
+ delete theApp;
+ theApp = 0;
+ return retVal;
+}
diff --git a/src/kvirc/kernel/kvi_notifylist.cpp b/src/kvirc/kernel/kvi_notifylist.cpp
new file mode 100644
index 00000000..bee7fd43
--- /dev/null
+++ b/src/kvirc/kernel/kvi_notifylist.cpp
@@ -0,0 +1,1277 @@
+//=============================================================================
+//
+// File : kvi_notifylist.cpp
+// Creation date : Fri Oct 27 2000 23:41:01 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+
+#include "kvi_debug.h"
+#include "kvi_notifylist.h"
+#include "kvi_console.h"
+#include "kvi_ircsocket.h"
+#include "kvi_regusersdb.h"
+#include "kvi_userlistview.h"
+#include "kvi_channel.h"
+#include "kvi_options.h"
+#include "kvi_window.h"
+#include "kvi_locale.h"
+#include "kvi_out.h"
+#include "kvi_sparser.h"
+#include "kvi_ircmask.h"
+#include "kvi_numeric.h"
+#include "kvi_parameterlist.h"
+#include "kvi_ircconnection.h"
+#include "kvi_app.h"
+#include "kvi_qstring.h"
+#include "kvi_lagmeter.h"
+#include "kvi_kvs_eventtriggers.h"
+#include "kvi_qcstring.h"
+
+#include <qstringlist.h>
+
+// FIXME: #warning "Finish this doc!"
+
+/*
+ @doc: notify_list
+ @title:
+ Notify lists
+ @short:
+ Tracking users on IRC
+ @keyterms:
+ notify property, watch property, notify lists
+ @body:
+ The notify list is a means of keeping track of users on IRC.[br]
+ Once connected to an IRC server, you can tell KVIrc to check
+ periodically if your friends are online.[br]
+ This is basically achieved by setting a property in the [doc:registered_users]registered users database[/doc]
+ entry.[br]
+ The property is called "notify", and you have to set it to the nickname
+ that you want to look for.[br]
+ So for example, assume to register a frend of yours like Szymon:[br]
+ [example]
+ [cmd:reguser.add]reguser.add[/cmd] Szymon
+ [cmd:reguser.addmask]reguser.addmask[/cmd] Szymon Pragma!*@*.it
+ [/example]
+ And then want it in the notify list; nothing easier, just set
+ hist "notify" property to the nickname that you want him to be "looked for":[br]
+ [example]
+ [cmd:reguser.setproperty]reguser.setproperty[/cmd] Szymon notify Pragma
+ [/example]
+ In this way, once in a while, KVIrc will send to the server an ISON message
+ with the nickname Pragma. If Szymon is online, you will be notified with a message:[br]
+ "Pragma [[email protected]] is on IRC".[br]
+ If Szymon uses often "[Pragma]" as his secondary nickname , you can do the following:[br]
+ [example]
+ [cmd:reguser.addmask]reguser.addmask[/cmd] Szymon [Pragma]*@*.it
+ [cmd:reguser.setproperty]reguser.setproperty[/cmd] Szymon notify "Pragma [Pragma]"
+ [/example]
+ KVIrc will then look for both nicknames getting online.[br]
+ KVIrc supports three notify lists management methods:[br]
+ The "stupid ISON method", the "intelligent ISON method" and the "WATCH method".[br]
+ The "stupid ISON method" will assume that Szymon is online if any user with nickname
+ Pragma (or [Pragma] in the second example) gets online; this means that also [email protected] will be
+ assumed to be "Szymon" and will be shown in the notify list.[br]
+ This might be a false assumption (since somehod.com does not even match *.it),
+ but it is the best result that the "stupid ISON method" can achieve.[br]
+ The "intelligent ISON method" will also check the Pragma's username and hostname
+ and match it in the registered masks; so in the example above, you will be notified if
+ any user that matches Pragma!*@*.it gets online; (but you will NOT be notified if
+ (for example) [email protected] gets online).[br]
+ So what's the point in including a stupid method? :) Well...the intelligent
+ method "eats" some of your IRC bandwidth; it has to send USERHOST messages
+ for every group of 5 users in the notify list. If you have a lot of users
+ in the notify list, it might become slow and eventually cause a
+ client to server flood.[br]
+ So finally, the intelligent method is the default. If you have "flood" problems,
+ or if you think that the notify list is quite slow , try the "stupid" method:
+ it is not that bad after all.[br]
+ The third notify list management method is the "WATCH method".[br]
+ It uses a totally different (and better) approach to the notify lists management,
+ and can be used only on the networks that support the WATCH notify method (DALnet, WebNet, etc.).[br]
+ KVIrc will attempt to guess if the server you're currently using supports the WATCH command
+ and eventually use this last method.[br]
+ The WATCH method uses the "notify" property to get the nicknames that have to be
+ sent to the server in the /WATCH commands.
+*/
+
+// Basic NotifyListManager: this does completely nothing
+
+KviNotifyListManager::KviNotifyListManager(KviIrcConnection * pConnection)
+: QObject(0,"notify_list_manager")
+{
+ m_pConnection = pConnection;
+ m_pConsole = pConnection->console();
+}
+
+KviNotifyListManager::~KviNotifyListManager()
+{
+}
+
+void KviNotifyListManager::start()
+{
+}
+
+void KviNotifyListManager::stop()
+{
+}
+
+bool KviNotifyListManager::handleUserhost(KviIrcMessage *)
+{
+ return false;
+}
+
+bool KviNotifyListManager::handleIsOn(KviIrcMessage *)
+{
+ return false;
+}
+
+bool KviNotifyListManager::handleWatchReply(KviIrcMessage *)
+{
+ return false;
+}
+
+void KviNotifyListManager::notifyOnLine(const QString &nick,const QString &user,const QString &host,const QString &szReason,bool bJoin)
+{
+ if(bJoin)
+ m_pConsole->notifyListView()->join(nick,user,host);
+
+ KviWindow * out = KVI_OPTION_BOOL(KviOption_boolNotifyListChangesToActiveWindow) ? m_pConsole->activeWindow() : m_pConsole;
+ if(KVS_TRIGGER_EVENT_1_HALTED(KviEvent_OnNotifyOnLine,out,nick))return;
+
+ QString szWho;
+ QString szMsg;
+
+ if(!(user.isEmpty() || host.isEmpty()))
+ KviQString::sprintf(szWho,"\r!n\r%Q\r [%Q@\r!h\r%Q\r]",&nick,&user,&host);
+ else
+ KviQString::sprintf(szWho,"\r!n\r%Q\r",&nick);
+
+ KviPointerHashTable<QString,KviRegisteredUser> * d = g_pRegisteredUserDataBase->userDict();
+ KviPointerHashTableIterator<QString,KviRegisteredUser> it(*d);
+ QString szNotify;
+
+ while(KviRegisteredUser * u = it.current())
+ {
+ if(QStringList::split(",",u->getProperty("notify")).findIndex(nick)!=-1)
+ {
+ QString szComment=u->getProperty("comment");
+ if(!szComment.isEmpty())
+ KviQString::sprintf(szMsg,"%Q (%Q), Group \"%Q\" is on IRC as (%Q)",&(u->name()),&szComment,&(u->group()),&szWho);
+ else
+ KviQString::sprintf(szMsg,"%Q, Group \"%Q\" is on IRC as (%Q)",&(u->name()),&(u->group()),&szWho);
+ break;
+ }
+ ++it;
+ }
+ QString szFmt = __tr2qs("%Q is on IRC");
+
+ if(szMsg.isEmpty())
+ KviQString::sprintf(szMsg,szFmt,&szWho);
+
+ if((!szReason.isEmpty()) && (_OUTPUT_VERBOSE))
+ {
+ szMsg += "(";
+ szMsg += szReason;
+ szMsg += ")";
+ }
+
+ out->outputNoFmt(KVI_OUT_NOTIFYONLINE,szMsg);
+
+ if(!(out->hasAttention()))
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolFlashWindowOnNotifyOnLine))
+ out->demandAttention();
+ if(KVI_OPTION_BOOL(KviOption_boolPopupNotifierOnNotifyOnLine))
+ {
+ szWho = "<b>";
+ szWho += nick;
+ szWho += "</b>";
+ KviQString::sprintf(szMsg,szFmt,&szWho);
+ g_pApp->notifierMessage(0,KVI_OPTION_MSGTYPE(KVI_OUT_NOTIFYONLINE).pixId(),szMsg,15);
+ }
+ }
+}
+
+void KviNotifyListManager::notifyOffLine(const QString &nick,const QString &user,const QString &host,const QString &szReason)
+{
+ KviWindow * out = KVI_OPTION_BOOL(KviOption_boolNotifyListChangesToActiveWindow) ? m_pConsole->activeWindow() : m_pConsole;
+ if(!KVS_TRIGGER_EVENT_1_HALTED(KviEvent_OnNotifyOffLine,out,nick))
+ {
+ QString szWho;
+
+ if(!(user.isEmpty() || host.isEmpty()))
+ KviQString::sprintf(szWho,"\r!n\r%Q\r [%Q@\r!h\r%Q\r]",&nick,&user,&host);
+ else
+ KviQString::sprintf(szWho,"\r!n\r%Q\r",&nick);
+
+ QString szMsg;
+
+ KviPointerHashTable<QString,KviRegisteredUser> * d = g_pRegisteredUserDataBase->userDict();
+ KviPointerHashTableIterator<QString,KviRegisteredUser> it(*d);
+ QString szNotify;
+
+ while(KviRegisteredUser * u = it.current())
+ {
+ if(QStringList::split(",",u->getProperty("notify")).findIndex(nick)!=-1)
+ {
+ QString szComment=u->getProperty("comment");
+ if(!szComment.isEmpty())
+ KviQString::sprintf(szMsg,"%Q (%Q), Group \"%Q\" has left IRC as (%Q)",&(u->name()),&szComment,&(u->group()),&szWho);
+ else
+ KviQString::sprintf(szMsg,"%Q, Group \"%Q\" has left IRC as (%Q)",&(u->name()),&(u->group()),&szWho);
+ break;
+ }
+ ++it;
+ }
+
+ if(szMsg.isEmpty())
+ KviQString::sprintf(szMsg,__tr2qs("%Q has left IRC"),&szWho);
+
+ if((!szReason.isEmpty()) && (_OUTPUT_VERBOSE))
+ {
+ szMsg += "(";
+ szMsg += szReason;
+ szMsg += ")";
+ }
+
+ out->outputNoFmt(KVI_OUT_NOTIFYOFFLINE,szMsg);
+ }
+
+ m_pConsole->notifyListView()->part(nick);
+}
+
+
+
+//
+// INTELLIGENT NOTIFY LIST MANAGER: NOTIFY PROCESS:
+//
+// start() stop()
+// | ^
+// buildRegUserDict() |
+// | |
+// m_pRegUserDict->isEmpty() ? -- YES ---------->+
+// | |
+// NO |
+// | |
+// newNotifySession()<------- TIMER ---------------- delayedNotifySession() --------------------------------+
+// | (can be stopped here) | ^ |
+// | | ^ |
+// buildNotifyList() | | YES
+// | | | |
+// m_pNotifyList->isEmpty() ? - YES ->+ | |
+// | | |
+// NO | |
+// | | |
+// newIsOnSession()<------------- TIMER -------------------- delayedIsOnSession() -- NO - m_pNotifyList->isEmpty() ?
+// | (can be stopped here) | |
+// | | |
+// buildIsOnList() | |
+// | | |
+// m_pIsOnList->isEmpty() ? -- YES ---------->+ |
+// | |
+// NO |
+// | |
+// sendIsOn() - - - - - - - - - - - -> handleIsOn() |
+// | |
+// (build m_pOnlineList) |
+// | |
+// m_pOnlineList->isEmpty() ? - YES ----------------------->+
+// | |
+// NO YES
+// | |
+// delayedUserhostSession()<--------------- NO - m_pOnlineList->isEmpty() ?
+// | ^
+// TIMER (can be stopped here) |
+// | |
+// newUserhostSession() |
+// | |
+// buildUserhostList() |
+// | |
+// m_pUserhostList->isEmpty() ? - YES --->+
+// | ^^^ |
+// | (unexpected!)||| |
+// NO |
+// | |
+// sendUserhost() - - - - - - - - > handleUserhost()
+//
+
+
+KviIsOnNotifyListManager::KviIsOnNotifyListManager(KviIrcConnection * pConnection)
+: KviNotifyListManager(pConnection)
+{
+ m_pRegUserDict = new KviPointerHashTable<QString,QString>(17,false); // case insensitive , copy keys
+ m_pRegUserDict->setAutoDelete(true);
+ m_pNotifyList = new KviPointerList<QString>;
+ m_pNotifyList->setAutoDelete(true);
+ m_pIsOnList = new KviPointerList<QString>;
+ m_pIsOnList->setAutoDelete(true);
+ m_pOnlineList = new KviPointerList<QString>;
+ m_pOnlineList->setAutoDelete(true);
+ m_pUserhostList = new KviPointerList<QString>;
+ m_pUserhostList->setAutoDelete(true);
+ m_pDelayedNotifyTimer = new QTimer();
+ connect(m_pDelayedNotifyTimer,SIGNAL(timeout()),this,SLOT(newNotifySession()));
+ m_pDelayedIsOnTimer = new QTimer();
+ connect(m_pDelayedIsOnTimer,SIGNAL(timeout()),this,SLOT(newIsOnSession()));
+ m_pDelayedUserhostTimer = new QTimer();
+ connect(m_pDelayedUserhostTimer,SIGNAL(timeout()),this,SLOT(newUserhostSession()));
+ m_bRunning = false;
+}
+
+
+KviIsOnNotifyListManager::~KviIsOnNotifyListManager()
+{
+ if(m_bRunning)stop();
+ delete m_pDelayedNotifyTimer;
+ delete m_pDelayedIsOnTimer;
+ delete m_pDelayedUserhostTimer;
+ delete m_pRegUserDict;
+ delete m_pOnlineList;
+ delete m_pNotifyList;
+ delete m_pIsOnList;
+ delete m_pUserhostList;
+}
+
+void KviIsOnNotifyListManager::start()
+{
+ if(m_bRunning)stop();
+ m_bRunning = true;
+ m_pConsole->notifyListView()->partAllButOne(m_pConnection->currentNickName());
+
+ m_bExpectingIsOn = false;
+ m_bExpectingUserhost = false;
+
+ buildRegUserDict();
+ if(m_pRegUserDict->isEmpty())
+ {
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Notify list: No users to check for, quitting"));
+ stop();
+ return;
+ }
+ newNotifySession();
+}
+
+void KviIsOnNotifyListManager::buildRegUserDict()
+{
+ m_pRegUserDict->clear();
+
+ const KviPointerHashTable<QString,KviRegisteredUser> * d = g_pRegisteredUserDataBase->userDict();
+ KviPointerHashTableIterator<QString,KviRegisteredUser> it(*d);
+ while(KviRegisteredUser * u = it.current())
+ {
+ QString notify;
+ if(u->getProperty("notify",notify))
+ {
+ notify.stripWhiteSpace();
+ while(!notify.isEmpty())
+ {
+ int idx = notify.find(' ');
+ if(idx > 0)
+ {
+ QString single = notify.left(idx);
+ m_pRegUserDict->replace(single,new QString(u->name()));
+ notify.remove(0,idx+1);
+ } else {
+ m_pRegUserDict->replace(notify,new QString(u->name()));
+ notify = "";
+ }
+ }
+ }
+ ++it;
+ }
+}
+
+void KviIsOnNotifyListManager::delayedNotifySession()
+{
+ unsigned int iTimeout = KVI_OPTION_UINT(KviOption_uintNotifyListCheckTimeInSecs);
+ if(iTimeout < 15)
+ {
+ // life first of all.
+ // don't allow the user to suicide
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_SYSTEMWARNING,
+ __tr2qs("Notify list: Timeout (%d sec) is too short, resetting to something more reasonable (15 sec)"),
+ iTimeout);
+ iTimeout = 15;
+ KVI_OPTION_UINT(KviOption_uintNotifyListCheckTimeInSecs) = 15;
+ }
+ m_pDelayedNotifyTimer->start(iTimeout * 1000,true);
+}
+
+void KviIsOnNotifyListManager::newNotifySession()
+{
+ buildNotifyList();
+ if(m_pNotifyList->isEmpty())
+ {
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Notify list: Notify list empty, quitting"));
+ stop();
+ return;
+ }
+ newIsOnSession();
+}
+
+void KviIsOnNotifyListManager::buildNotifyList()
+{
+ m_pNotifyList->clear();
+ KviPointerHashTableIterator<QString,QString> it(*m_pRegUserDict);
+ while(it.current())
+ {
+ m_pNotifyList->append(new QString(it.currentKey()));
+ ++it;
+ }
+}
+
+void KviIsOnNotifyListManager::delayedIsOnSession()
+{
+ unsigned int iTimeout = KVI_OPTION_UINT(KviOption_uintNotifyListIsOnDelayTimeInSecs);
+ if(iTimeout < 5)
+ {
+ // life first of all.
+ // don't allow the user to suicide
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_SYSTEMWARNING,
+ __tr2qs("Notify list: ISON delay (%d sec) is too short, resetting to something more reasonable (5 sec)"),
+ iTimeout);
+ iTimeout = 5;
+ KVI_OPTION_UINT(KviOption_uintNotifyListIsOnDelayTimeInSecs) = 5;
+ }
+ m_pDelayedIsOnTimer->start(iTimeout * 1000,true);
+}
+
+void KviIsOnNotifyListManager::newIsOnSession()
+{
+ buildIsOnList();
+ if(m_pIsOnList->isEmpty())delayedNotifySession();
+ else sendIsOn();
+}
+
+void KviIsOnNotifyListManager::buildIsOnList()
+{
+ m_pIsOnList->clear();
+ m_szIsOnString = "";
+ m_pNotifyList->setAutoDelete(false);
+ while(QString * s = m_pNotifyList->first())
+ {
+ if(((m_szIsOnString.length() + s->length()) + 1) < 504)
+ {
+ if(!m_szIsOnString.isEmpty())m_szIsOnString.append(' ');
+ m_szIsOnString.append(*s);
+ m_pIsOnList->append(s);
+ m_pNotifyList->removeFirst();
+ } else break;
+ }
+ m_pNotifyList->setAutoDelete(true);
+}
+
+void KviIsOnNotifyListManager::sendIsOn()
+{
+ if(_OUTPUT_PARANOIC)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Notify list: Checking for: %Q"),&m_szIsOnString);
+ KviQCString szDec = m_pConnection->encodeText(m_szIsOnString);
+ m_pConnection->sendFmtData("ISON %s",szDec.data());
+ if(m_pConnection->lagMeter())
+ m_pConnection->lagMeter()->lagCheckRegister("@notify_ison",40); // not that reliable
+ m_szIsOnString = "";
+ m_bExpectingIsOn = true;
+ // FIXME: #warning "And if can't send ?"
+}
+
+
+bool KviIsOnNotifyListManager::handleIsOn(KviIrcMessage *msg)
+{
+ if(!m_bExpectingIsOn)return false;
+
+ // Check if it is our ISON
+ // all the nicks must be on the IsOnList
+
+ KviPointerList<QString> tmplist;
+ tmplist.setAutoDelete(false);
+
+ KviStr nk;
+ const char * aux = msg->trailing();
+
+ while(*aux)
+ {
+ nk = "";
+ aux = kvi_extractToken(nk,aux,' ');
+ if(nk.hasData())
+ {
+ bool bGotIt = false;
+ QString dnk = m_pConnection->decodeText(nk.ptr());
+ for(QString * s = m_pIsOnList->first();s && (!bGotIt);s = m_pIsOnList->next())
+ {
+ if(KviQString::equalCI(*s,dnk))
+ {
+ tmplist.append(s);
+ bGotIt = true;
+ }
+ }
+ if(!bGotIt)
+ {
+ // ops...not my userhost!
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Notify list: Hey! You've used ISON behind my back? (I might be confused now...)"));
+ return false;
+ }
+ }
+ }
+
+ // Ok...looks to be my ison (still not sure at 100% , but can't do better)
+ if(m_pConnection->lagMeter())
+ m_pConnection->lagMeter()->lagCheckComplete("@notify_ison");
+
+ m_bExpectingIsOn = false;
+
+ m_pOnlineList->clear();
+
+ m_pIsOnList->setAutoDelete(false);
+
+ // Ok...we have an IsOn reply here
+ // The nicks in the IsOnList that are also in the reply are online , and go to the OnlineList
+ // the remaining in the IsOnList are offline
+
+ QString * s;
+
+ for(s = tmplist.first();s;s = tmplist.next())
+ {
+ m_pIsOnList->removeRef(s);
+ m_pOnlineList->append(s);
+ }
+
+ m_pIsOnList->setAutoDelete(true);
+ // Ok...all the users that are online , are on the OnlineList
+ // the remaining users are in the m_pIsOnList , and are no longer online
+
+ // first the easy step: remove the users that have just left irc or have never been online
+ // we're clearling the m_pIsOnList
+ while((s = m_pIsOnList->first()))
+ {
+ if(m_pConsole->notifyListView()->findEntry(*s))
+ {
+ // has just left IRC... make him part
+ notifyOffLine(*s);
+ } // else has never been here
+
+ m_pIsOnList->removeFirst(); // autodelete is true
+ }
+
+ // ok... complex step now: the remaining users in the userhost list are online
+ // if they have been online before, just remove them from the list
+ // otherwise they must be matched for masks
+ // and eventually inserted in the notify view later
+
+ KviIrcUserDataBase * db = console()->connection()->userDataBase();
+
+ KviPointerList<QString> l;
+ l.setAutoDelete(false);
+
+ for(s = m_pOnlineList->first();s;s = m_pOnlineList->next())
+ {
+ if(KviUserListEntry * ent = m_pConsole->notifyListView()->findEntry(*s))
+ {
+ // the user was online from a previous notify session
+ // might the mask have been changed ? (heh...this is tricky, maybe too much even)
+ if(KVI_OPTION_BOOL(KviOption_boolNotifyListSendUserhostForOnlineUsers))
+ {
+ // user wants to be sure about online users....
+ // check if he is on some channels
+ if(ent->globalData()->nRefs() > 1)
+ {
+ // mmmh...we have more than one ref , so the user is at least in one query or channel
+ // look him up on channels , if we find his entry , we can be sure that he is
+ // still the right user
+ KviPointerList<KviChannel> * chlist = m_pConsole->connection()->channelList();
+ for(KviChannel * ch = chlist->first();ch;ch = chlist->next())
+ {
+ if(KviUserListEntry * le = ch->findEntry(*s))
+ {
+ l.append(s); // ok...found on a channel...we don't need an userhost to match him
+ KviIrcMask mk(*s,le->globalData()->user(),le->globalData()->host());
+ if(!doMatchUser(*s,mk))return true; // critical problems = have to restart!!!
+ break;
+ }
+ }
+ } // else Only one ref...we need an userhost to be sure (don't remove from the list)
+ } else {
+ // user wants no userhost for online users...we "hope" that everything will go ok.
+ l.append(s);
+ }
+ //l.append(s); // we will remove him from the list
+ } else {
+ // the user was not online!
+ // check if we have a cached mask
+ if(db)
+ {
+ if(KviIrcUserEntry * ue = db->find(*s))
+ {
+ // already in the db... do we have a mask ?
+ if(ue->hasUser() && ue->hasHost())
+ {
+ // yup! we have a complete mask to match on
+ KviIrcMask mk(*s,ue->user(),ue->host());
+ // lookup the user's name in the m_pRegUserDict
+ if(!doMatchUser(*s,mk))return true; // critical problems = have to restart!!!
+ l.append(s); // remove anyway
+ }
+ }
+ }
+ }
+ }
+
+ for(s = l.first();s;s = l.next())
+ {
+ m_pOnlineList->removeRef(s); // autodelete is true
+ }
+
+ if(m_pOnlineList->isEmpty())
+ {
+ if(m_pNotifyList->isEmpty())delayedNotifySession();
+ else delayedIsOnSession();
+ } else delayedUserhostSession();
+
+ return true;
+}
+
+// FIXME: #warning "Nickname escapes (links) in the notifylist messages!"
+
+bool KviIsOnNotifyListManager::doMatchUser(const QString &notifyString,const KviIrcMask & mask)
+{
+ QString * nam = m_pRegUserDict->find(notifyString);
+ if(nam)
+ {
+ // ok...find the user
+ if(KviRegisteredUser * u = g_pRegisteredUserDataBase->findUserByName(*nam))
+ {
+ // ok ... match the user
+ if(u->matchesFixed(mask))
+ {
+ // new user online
+ if(!(m_pConsole->notifyListView()->findEntry(mask.nick())))
+ {
+ notifyOnLine(mask.nick(),mask.user(),mask.host());
+ } // else already online , and matching...all ok
+ } else {
+ // not matched.... has he been online before ?
+ if(m_pConsole->notifyListView()->findEntry(mask.nick()))
+ {
+ // has been online just a sec ago , but now the mask does not match
+ // either reguserdb has changed , or the user went offline and another one got his nick
+ // in the meantime... (ugly situation anyway)
+ notifyOffLine(mask.nick(),mask.user(),mask.host(),__tr2qs("registration mask changed, or nickname is being used by someone else"));
+ } else {
+ // has never been online
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] does not match (registration mask does not match, or nickname is being used by someone else)"),&(mask.nick()),&(mask.user()),&(mask.host()));
+ }
+ }
+ } else {
+ // ops... unexpected inconsistency .... reguser db modified ?
+ m_pConsole->output(KVI_OUT_SYSTEMWARNING,__tr2qs("Notify list: Unexpected inconsistency, registered user DB modified? (restarting)"));
+ stop();
+ start();
+ return false; // critical ... exit from the call stack
+ }
+ } else {
+ // ops...unexpected inconsistency
+ m_pConsole->output(KVI_OUT_SYSTEMWARNING,__tr2qs("Notify list: Unexpected inconsistency, expected \r!n\r%Q\r in the registered user DB"),&notifyString);
+ }
+ return true;
+}
+
+void KviIsOnNotifyListManager::delayedUserhostSession()
+{
+ unsigned int iTimeout = KVI_OPTION_UINT(KviOption_uintNotifyListUserhostDelayTimeInSecs);
+ if(iTimeout < 5)
+ {
+ // life first of all.
+ // don't allow the user to suicide
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_SYSTEMWARNING,
+ __tr2qs("Notify list: USERHOST delay (%d sec) is too short, resetting to something more reasonable (5 sec)"),
+ iTimeout);
+ iTimeout = 5;
+ KVI_OPTION_UINT(KviOption_uintNotifyListUserhostDelayTimeInSecs) = 5;
+ }
+ m_pDelayedUserhostTimer->start(iTimeout * 1000,true);
+}
+
+void KviIsOnNotifyListManager::newUserhostSession()
+{
+ buildUserhostList();
+ if(m_pUserhostList->isEmpty())
+ {
+ // this is unexpected!
+ m_pConsole->output(KVI_OUT_SYSTEMWARNING,__tr2qs("Notify list: Unexpected inconsistency, userhost list is empty!"));
+ if(m_pOnlineList->isEmpty())
+ {
+ if(m_pNotifyList->isEmpty())delayedNotifySession();
+ else delayedIsOnSession();
+ } else delayedUserhostSession();
+ return;
+ }
+ sendUserhost();
+}
+
+#define MAX_USERHOST_ENTRIES 5
+
+void KviIsOnNotifyListManager::buildUserhostList()
+{
+ m_szUserhostString = "";
+ m_pUserhostList->clear();
+
+ m_pOnlineList->setAutoDelete(false);
+ int i = 0;
+ QString * s;
+ while((s = m_pOnlineList->first()) && (i < MAX_USERHOST_ENTRIES))
+ {
+ if(!m_szUserhostString.isEmpty())m_szUserhostString.append(' ');
+ m_szUserhostString.append(*s);
+ m_pUserhostList->append(s);
+ m_pOnlineList->removeFirst();
+ i++;
+ }
+ m_pOnlineList->setAutoDelete(true);
+}
+
+void KviIsOnNotifyListManager::sendUserhost()
+{
+ if(_OUTPUT_PARANOIC)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Notify list: Checking userhost for: %Q"),&m_szUserhostString);
+ KviQCString ccc = m_pConnection->encodeText(m_szUserhostString);
+ m_pConnection->sendFmtData("USERHOST %s",ccc.data());
+ if(m_pConnection->lagMeter())
+ m_pConnection->lagMeter()->lagCheckRegister("@notify_userhost",50);
+ m_szUserhostString = "";
+ m_bExpectingUserhost = true;
+// FIXME: #warning "And if can't send ?"
+}
+
+bool KviIsOnNotifyListManager::handleUserhost(KviIrcMessage *msg)
+{
+ if(!m_bExpectingUserhost)return false;
+ // first check for consistency: all the replies must be on the USERHOST list
+ KviPointerList<KviIrcMask> tmplist;
+ tmplist.setAutoDelete(true);
+
+ KviStr nk;
+ const char * aux = msg->trailing();
+
+ while(*aux)
+ {
+ nk = "";
+ aux = kvi_extractToken(nk,aux,' ');
+ if(nk.hasData())
+ {
+ // split it in a mask
+ KviStr nick;
+ KviStr user;
+ KviStr host;
+
+ int idx = nk.findFirstIdx('=');
+ if(idx != -1)
+ {
+ nick = nk.left(idx);
+ if(nick.lastCharIs('*'))nick.cutRight(1);
+ nk.cutLeft(idx + 1);
+ if(nk.firstCharIs('+') || nk.firstCharIs('-'))nk.cutLeft(1);
+
+ idx = nk.findFirstIdx('@');
+ if(idx != -1)
+ {
+ user = nk.left(idx);
+ nk.cutLeft(idx + 1);
+ host = nk;
+ } else {
+ user = "*";
+ host = nk;
+ }
+
+ bool bGotIt = false;
+ QString szNick = m_pConnection->decodeText(nick.ptr());
+ QString szUser = m_pConnection->decodeText(user.ptr());
+ QString szHost = m_pConnection->decodeText(host.ptr());
+
+ for(QString * s = m_pUserhostList->first();s && (!bGotIt);s = m_pUserhostList->next())
+ {
+ if(KviQString::equalCI(*s,szNick))
+ {
+ KviIrcMask * mk = new KviIrcMask(szNick,szUser,szHost);
+ tmplist.append(mk);
+ bGotIt = true;
+ m_pUserhostList->removeRef(s);
+ }
+ }
+
+ if(!bGotIt)
+ {
+ // ops...not my userhost!
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_SYSTEMWARNING,__tr2qs("Notify list: Hey! You've used USERHOST behind my back? (I might be confused now...)"));
+ return false;
+ }
+ } else {
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_SYSTEMWARNING,__tr2qs("Notify list: Broken USERHOST reply from the server? (%s)"),nk.ptr());
+ }
+ }
+ }
+
+ // Ok...looks to be my usershot (still not sure at 100% , but can't do better)
+
+ if(m_pConnection->lagMeter())
+ m_pConnection->lagMeter()->lagCheckComplete("@notify_userhost");
+
+
+ m_bExpectingUserhost = false;
+
+ for(KviIrcMask * mk = tmplist.first();mk;mk = tmplist.next())
+ {
+ if(!doMatchUser(mk->nick(),*mk))return true; // have to restart!!!
+ }
+
+ if(!(m_pUserhostList->isEmpty()))
+ {
+ // ops...someone is no longer online ?
+ while(QString * s = m_pUserhostList->first())
+ {
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST reply was received, will recheck in the next loop"),s);
+ m_pUserhostList->removeFirst();
+ }
+
+ }
+
+ if(m_pOnlineList->isEmpty())
+ {
+ if(m_pNotifyList->isEmpty())delayedNotifySession();
+ else delayedIsOnSession();
+ } else delayedUserhostSession();
+
+ return true;
+}
+
+void KviIsOnNotifyListManager::stop()
+{
+ if(!m_bRunning)return;
+
+ if(m_pConnection->lagMeter())
+ m_pConnection->lagMeter()->lagCheckAbort("@notify_userhost");
+ if(m_pConnection->lagMeter())
+ m_pConnection->lagMeter()->lagCheckAbort("@notify_ison");
+
+ m_pDelayedNotifyTimer->stop();
+ m_pDelayedIsOnTimer->stop();
+ m_pDelayedUserhostTimer->stop();
+ m_pConsole->notifyListView()->partAllButOne(m_pConnection->currentNickName());
+ m_pRegUserDict->clear();
+ m_pNotifyList->clear();
+ m_pIsOnList->clear();
+ m_pOnlineList->clear();
+ m_pUserhostList->clear();
+ m_szIsOnString = "";
+ m_szUserhostString = "";
+ m_bRunning = false;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// Stupid notify list manager
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+KviStupidNotifyListManager::KviStupidNotifyListManager(KviIrcConnection * pConnection)
+: KviNotifyListManager(pConnection)
+{
+ m_pNickList = new KviPointerList<QString>;
+ m_pNickList->setAutoDelete(true);
+ m_iRestartTimer = 0;
+}
+
+KviStupidNotifyListManager::~KviStupidNotifyListManager()
+{
+ if(m_iRestartTimer)
+ {
+ killTimer(m_iRestartTimer);
+ m_iRestartTimer = 0;
+ }
+ delete m_pNickList;
+}
+
+void KviStupidNotifyListManager::start()
+{
+ if(m_iRestartTimer)
+ {
+ killTimer(m_iRestartTimer);
+ m_iRestartTimer = 0;
+ }
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->outputNoFmt(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Starting notify list"));
+ buildNickList();
+ if(m_pNickList->isEmpty())
+ {
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->outputNoFmt(KVI_OUT_SYSTEMMESSAGE,__tr2qs("No users in the notify list"));
+ return; // Ok...no nicknames in the list
+ }
+ m_iNextNickToCheck = 0;
+ m_pConsole->notifyListView()->partAllButOne(m_pConnection->currentNickName());
+ sendIsOn();
+}
+
+void KviStupidNotifyListManager::sendIsOn()
+{
+ m_szLastIsOnMsg = "";
+ QString * nick = m_pNickList->at(m_iNextNickToCheck);
+ __range_valid(nick);
+
+ int i = 0;
+ while(nick && ((nick->length() + 5 + m_szLastIsOnMsg.length()) < 510))
+ {
+ KviQString::appendFormatted(m_szLastIsOnMsg," %Q",nick);
+ nick = m_pNickList->next();
+ i++;
+ }
+ if(_OUTPUT_PARANOIC)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Notify list: Checking for:%Q"),&m_szLastIsOnMsg);
+ KviQCString dat = m_pConnection->encodeText(m_szLastIsOnMsg);
+ m_pConnection->sendFmtData("ISON%s",dat.data());
+
+ if(m_pConnection->lagMeter())
+ m_pConnection->lagMeter()->lagCheckRegister("@notify_naive",20);
+
+ m_iNextNickToCheck += i;
+}
+
+bool KviStupidNotifyListManager::handleIsOn(KviIrcMessage * msg)
+{
+ if(m_pConnection->lagMeter())
+ m_pConnection->lagMeter()->lagCheckComplete("@notify_naive");
+
+ KviStr nk;
+ const char * aux = msg->trailing();
+ while(*aux)
+ {
+ nk = "";
+ aux = kvi_extractToken(nk,aux,' ');
+ if(nk.hasData())
+ {
+ QString nkd = m_pConnection->decodeText(nk.ptr());
+ QString nksp = " " + nkd;
+ m_szLastIsOnMsg.replace(nksp,"",false);
+ if(!(m_pConsole->notifyListView()->findEntry(nkd)))
+ {
+ // not yet notified
+ notifyOnLine(nkd);
+ }
+ }
+ }
+ // ok...check the users that have left irc now...
+ QStringList sl = QStringList::split(' ',m_szLastIsOnMsg);
+
+ for(QStringList::Iterator it = sl.begin();it != sl.end();++it)
+ {
+ if(m_pConsole->notifyListView()->findEntry(*it))
+ {
+ // has just left irc
+ notifyOffLine(*it);
+ } // else has never been here...
+ }
+
+ if(((unsigned int)m_iNextNickToCheck) >= m_pNickList->count())
+ {
+ // have to restart
+ unsigned int iTimeout = KVI_OPTION_UINT(KviOption_uintNotifyListCheckTimeInSecs);
+ if(iTimeout < 5)
+ {
+ // life first of all.
+ // don't allow the user to suicide
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_SYSTEMWARNING,
+ __tr2qs("Notify list: Timeout (%d sec) is too short, resetting to something more reasonable (5 sec)"),
+ iTimeout);
+ iTimeout = 5;
+ KVI_OPTION_UINT(KviOption_uintNotifyListCheckTimeInSecs) = 5;
+ }
+ m_iRestartTimer = startTimer(iTimeout * 1000);
+ } else sendIsOn();
+ return true;
+}
+
+void KviStupidNotifyListManager::timerEvent(QTimerEvent *e)
+{
+ if(e->timerId() == m_iRestartTimer)
+ {
+ killTimer(m_iRestartTimer);
+ m_iRestartTimer = 0;
+ m_iNextNickToCheck = 0;
+ sendIsOn();
+ return;
+ }
+ QObject::timerEvent(e);
+}
+
+void KviStupidNotifyListManager::stop()
+{
+ if(m_pConnection->lagMeter())
+ m_pConnection->lagMeter()->lagCheckAbort("@notify_naive");
+
+ if(m_iRestartTimer)
+ {
+ killTimer(m_iRestartTimer);
+ m_iRestartTimer = 0;
+ }
+ m_pConsole->notifyListView()->partAllButOne(m_pConnection->currentNickName());
+
+ // The ISON Method needs no stopping
+}
+
+void KviStupidNotifyListManager::buildNickList()
+{
+ const KviPointerHashTable<QString,KviRegisteredUser> * d = g_pRegisteredUserDataBase->userDict();
+ KviPointerHashTableIterator<QString,KviRegisteredUser> it(*d);
+ m_pNickList->clear();
+ while(it.current())
+ {
+ QString notify;
+ if(it.current()->getProperty("notify",notify))
+ {
+ m_pNickList->append(new QString(notify));
+ }
+ ++it;
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// Watch notify list manager
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+KviWatchNotifyListManager::KviWatchNotifyListManager(KviIrcConnection * pConnection)
+: KviNotifyListManager(pConnection)
+{
+ m_pRegUserDict = new KviPointerHashTable<QString,QString>(17,false);
+ m_pRegUserDict->setAutoDelete(true);
+}
+
+KviWatchNotifyListManager::~KviWatchNotifyListManager()
+{
+ delete m_pRegUserDict;
+}
+
+void KviWatchNotifyListManager::buildRegUserDict()
+{
+ m_pRegUserDict->clear();
+
+ const KviPointerHashTable<QString,KviRegisteredUser> * d = g_pRegisteredUserDataBase->userDict();
+ KviPointerHashTableIterator<QString,KviRegisteredUser> it(*d);
+ while(KviRegisteredUser * u = it.current())
+ {
+ QString notify;
+ if(u->getProperty("notify",notify))
+ {
+ notify.stripWhiteSpace();
+ QStringList sl = QStringList::split(' ',notify);
+ for(QStringList::Iterator it = sl.begin();it != sl.end();++it)
+ {
+ m_pRegUserDict->replace(*it,new QString(u->name()));
+ }
+ }
+ ++it;
+ }
+}
+
+void KviWatchNotifyListManager::start()
+{
+ m_pConsole->notifyListView()->partAllButOne(m_pConnection->currentNickName());
+
+ buildRegUserDict();
+
+ QString watchStr;
+
+ KviPointerHashTableIterator<QString,QString> it(*m_pRegUserDict);
+ while(it.current())
+ {
+ QString nk = it.currentKey();
+ if(nk.find('*') == -1)
+ {
+ if((watchStr.length() + nk.length() + 2) > 501)
+ {
+ KviQCString dat = m_pConnection->encodeText(watchStr);
+ m_pConnection->sendFmtData("WATCH%s",dat.data());
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Notify list: Adding watch entries for%Q"),&watchStr);
+ watchStr = "";
+ }
+ KviQString::appendFormatted(watchStr," +%Q",&nk);
+ }
+ ++it;
+ }
+
+ if(!watchStr.isEmpty())
+ {
+ KviQCString dat = m_pConnection->encodeText(watchStr);
+ m_pConnection->sendFmtData("WATCH%s",dat.data());
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Notify list: Adding watch entries for%Q"),&watchStr);
+ }
+}
+void KviWatchNotifyListManager::stop()
+{
+ m_pConsole->notifyListView()->partAllButOne(m_pConnection->currentNickName());
+ m_pConnection->sendFmtData("WATCH clear");
+ m_pRegUserDict->clear();
+}
+
+bool KviWatchNotifyListManager::doMatchUser(KviIrcMessage * msg,const QString &notifyString,const KviIrcMask & mask)
+{
+ QString * nam = m_pRegUserDict->find(notifyString);
+
+ if(nam)
+ {
+ // ok...find the user
+ if(KviRegisteredUser * u = g_pRegisteredUserDataBase->findUserByName(*nam))
+ {
+ // ok ... match the user
+ if(u->matchesFixed(mask))
+ {
+ // new user online
+ if(!(m_pConsole->notifyListView()->findEntry(mask.nick())))
+ {
+ notifyOnLine(mask.nick(),mask.user(),mask.host(),"watch");
+ } else {
+ // else already online , and matching...all ok
+ if(msg->numeric() == RPL_NOWON)
+ {
+ // This is a reply to a /watch +something (should not happen, unless the user is messing) or to /watch l (user requested)
+ notifyOnLine(mask.nick(),mask.user(),mask.host(),
+ __tr2qs("watch entry listing requested by user"),false);
+ } else {
+ // This is a RPL_LOGON....we're desynched ?
+ notifyOnLine(mask.nick(),mask.user(),mask.host(),
+ __tr2qs("possible watch list desync"),false);
+ }
+ }
+ } else {
+ // not matched.... has he been online before ?
+ if(m_pConsole->notifyListView()->findEntry(mask.nick()))
+ {
+ // has been online just a sec ago , but now the mask does not match
+ // prolly the reguserdb has been changed
+ notifyOffLine(mask.nick(),mask.user(),mask.host(),
+ __tr2qs("registration mask changed or desync with the watch service"));
+ } else {
+ // has never been online
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,
+ __tr("Notify list: \r!n\r%Q\r appears to be online, but the mask [%Q@\r!h\r%Q\r] does not match (watch: registration mask does not match, or nickname is being used by someone else)"),
+ &(mask.nick()),&(mask.user()),&(mask.host()));
+ }
+ }
+ } else {
+ // ops... unexpected inconsistency .... reguser db modified ?
+ m_pConsole->output(KVI_OUT_SYSTEMWARNING,
+ __tr2qs("Notify list: Unexpected inconsistency, registered user DB modified? (watch: restarting)"));
+ stop();
+ start();
+ return false; // critical ... exit from the call stack
+ }
+ } else {
+ // not in our dictionary
+ // prolly someone used /WATCH behind our back... bad boy!
+ if(!(m_pConsole->notifyListView()->findEntry(mask.nick())))
+ {
+ notifyOnLine(mask.nick(),mask.user(),mask.host(),__tr2qs("watch entry added by user"));
+ }
+ }
+ return true;
+}
+
+// FIXME: #warning "DEDICATED WATCH LIST VERBOSITY FLAG ? (To allow the user to use /WATCH l and manual /WATCH)"
+
+bool KviWatchNotifyListManager::handleWatchReply(KviIrcMessage *msg)
+{
+ // 600: RPL_LOGON
+ // :prefix 600 <target> <nick> <user> <host> <logintime> :logged online
+ // 601: RPL_LOGON
+ // :prefix 601 <target> <nick> <user> <host> <logintime> :logged offline
+ // 604: PRL_NOWON
+ // :prefix 604 <target> <nick> <user> <host> <logintime> :is online
+ // 605: PRL_NOWOFF
+ // :prefix 605 <target> <nick> <user> <host> 0 :is offline
+
+// FIXME: #warning "Use the logintime in some way ?"
+
+ const char * nk = msg->safeParam(1);
+ const char * us = msg->safeParam(2);
+ const char * ho = msg->safeParam(3);
+ QString dnk = m_pConnection->decodeText(nk);
+ QString dus = m_pConnection->decodeText(us);
+ QString dho = m_pConnection->decodeText(ho);
+
+ if((msg->numeric() == RPL_LOGON) || (msg->numeric() == RPL_NOWON))
+ {
+ KviIrcMask m(dnk,dus,dho);
+ doMatchUser(msg,dnk,m);
+ return true;
+
+ } else if(msg->numeric() == RPL_WATCHOFF)
+ {
+ if(m_pConsole->notifyListView()->findEntry(dnk))
+ {
+ notifyOffLine(dnk,dus,dho,__tr2qs("removed from watch list"));
+ } else {
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Notify list: Stopped watching for \r!n\r%Q\r"),&dnk);
+ }
+ if(m_pRegUserDict->find(dnk))m_pRegUserDict->remove(dnk); // kill that
+
+ return true;
+
+ } else if((msg->numeric() == RPL_LOGOFF) || (msg->numeric() == RPL_NOWOFF))
+ {
+ if(m_pConsole->notifyListView()->findEntry(dnk))
+ {
+ notifyOffLine(dnk,dus,dho,__tr2qs("watch"));
+ } else {
+ if(msg->numeric() == RPL_NOWOFF)
+ {
+ // This is a reply to a /watch +something
+ if(_OUTPUT_VERBOSE)
+ m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Notify list: \r!n\r%Q\r is offline (watch)"),&dnk);
+ } else {
+ // This is a RPL_LOGOFF for an user that has not matched the reg-mask
+ notifyOffLine(dnk,dus,dho,__tr2qs("unmatched watch list entry"));
+ }
+ }
+ return true;
+ }
+
+ return false;
+}
+
+
+#include "kvi_notifylist.moc"
diff --git a/src/kvirc/kernel/kvi_notifylist.h b/src/kvirc/kernel/kvi_notifylist.h
new file mode 100644
index 00000000..8484f3f7
--- /dev/null
+++ b/src/kvirc/kernel/kvi_notifylist.h
@@ -0,0 +1,161 @@
+#ifndef _KVI_NOTIFYLIST_H_
+#define _KVI_NOTIFYLIST_H_
+
+//=============================================================================
+//
+// File : kvi_notifylist.h
+// Creation date : Fri Oct 27 2000 23:39:09 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "kvi_settings.h"
+
+#include <qobject.h>
+#include "kvi_pointerlist.h"
+#include "kvi_pointerhashtable.h"
+#include <qtimer.h>
+
+#include "kvi_qstring.h"
+
+class KviConsole;
+class KviIrcMessage;
+class KviIrcMask;
+class KviIrcConnection;
+
+class KVIRC_API KviNotifyListManager : public QObject
+{
+ friend class KviConsole;
+ friend class KviConnectionInfo;
+ friend class KviServerParser;
+ friend class KviIrcConnection;
+ Q_OBJECT
+protected:
+ KviNotifyListManager(KviIrcConnection * pConnection);
+ ~KviNotifyListManager();
+protected:
+ KviConsole * m_pConsole;
+ KviIrcConnection * m_pConnection;
+protected:
+ virtual void start();
+ virtual void stop();
+ virtual bool handleUserhost(KviIrcMessage * msg);
+ virtual bool handleIsOn(KviIrcMessage * msg);
+ virtual bool handleWatchReply(KviIrcMessage *msg);
+ void notifyOnLine(const QString &nick,const QString &user = QString::null,const QString &host = QString::null,const QString &szReason = QString::null,bool bJoin=true);
+ void notifyOffLine(const QString &nick,const QString &user = QString::null,const QString &host = QString::null,const QString &szReason = QString::null);
+public:
+ KviConsole * console(){ return m_pConsole; };
+};
+
+class KVIRC_API KviIsOnNotifyListManager : public KviNotifyListManager
+{
+ friend class KviConsole;
+ friend class KviServerParser;
+ friend class KviIrcConnection;
+ Q_OBJECT
+protected:
+ KviIsOnNotifyListManager(KviIrcConnection * pConnection);
+ ~KviIsOnNotifyListManager();
+private:
+ KviPointerHashTable<QString,QString> * m_pRegUserDict; // dict notifystring->reguser name
+ KviPointerList<QString> * m_pNotifyList; // list of notifystring (total)
+ KviPointerList<QString> * m_pIsOnList; // list of notifystring (one session)
+ QString m_szIsOnString; // m_pIsOnList in form of a string
+ KviPointerList<QString> * m_pOnlineList; //
+ KviPointerList<QString> * m_pUserhostList;
+ QString m_szUserhostString;
+ bool m_bExpectingIsOn;
+ bool m_bExpectingUserhost;
+ QTimer * m_pDelayedIsOnTimer;
+ QTimer * m_pDelayedNotifyTimer;
+ QTimer * m_pDelayedUserhostTimer;
+ bool m_bRunning;
+protected:
+ virtual void start();
+ virtual void stop();
+ virtual bool handleUserhost(KviIrcMessage *msg);
+ virtual bool handleIsOn(KviIrcMessage *msg);
+private:
+ void delayedNotifySession();
+ void delayedIsOnSession();
+ void delayedUserhostSession();
+private slots:
+ void newNotifySession();
+ void newIsOnSession();
+ void newUserhostSession();
+
+ void buildRegUserDict();
+ void buildIsOnList();
+ void buildUserhostList();
+ void buildNotifyList();
+ void sendIsOn();
+ void sendUserhost();
+ bool doMatchUser(const QString &notifyString,const KviIrcMask & mask);
+
+};
+
+
+class KVIRC_API KviStupidNotifyListManager : public KviNotifyListManager
+{
+ friend class KviConsole;
+ friend class KviServerParser;
+ friend class KviIrcConnection;
+ Q_OBJECT
+protected:
+ KviStupidNotifyListManager(KviIrcConnection * pConnection);
+ ~KviStupidNotifyListManager();
+protected:
+ KviPointerList<QString> * m_pNickList;
+ QString m_szLastIsOnMsg;
+ int m_iNextNickToCheck;
+ int m_iRestartTimer;
+protected:
+ virtual void start();
+ virtual void stop();
+ virtual bool handleIsOn(KviIrcMessage *msg);
+protected:
+ virtual void timerEvent(QTimerEvent *e);
+private:
+ void buildNickList();
+ void sendIsOn();
+};
+
+class KVIRC_API KviWatchNotifyListManager : public KviNotifyListManager
+{
+ friend class KviConsole;
+ friend class KviServerParser;
+ friend class KviIrcConnection;
+ Q_OBJECT
+public:
+ KviWatchNotifyListManager(KviIrcConnection * pConnection);
+ ~KviWatchNotifyListManager();
+protected:
+ KviPointerHashTable<QString,QString> * m_pRegUserDict; // dict notifystring->reguser name
+protected:
+ void buildRegUserDict();
+ virtual void start();
+ virtual void stop();
+ virtual bool handleWatchReply(KviIrcMessage *msg);
+ bool doMatchUser(KviIrcMessage *msg,const QString &notifyString,const KviIrcMask & mask);
+
+};
+
+#endif //_KVI_NOTIFYLIST_H_
diff --git a/src/kvirc/kernel/kvi_options.cpp b/src/kvirc/kernel/kvi_options.cpp
new file mode 100644
index 00000000..84bf4500
--- /dev/null
+++ b/src/kvirc/kernel/kvi_options.cpp
@@ -0,0 +1,1381 @@
+//=============================================================================
+//
+// File : kvi_options.cpp
+// Creation date : Tue Jun 20 2000 11:42:00 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#define _KVI_OPTIONS_CPP_
+
+#include "kvi_options.h"
+#include "kvi_defaults.h"
+#include "kvi_config.h"
+#include "kvi_app.h"
+#include "kvi_iconmanager.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_locale.h"
+#include "kvi_confignames.h"
+#include "kvi_window.h"
+#include "kvi_out.h"
+#include "kvi_stringconversion.h"
+#include "kvi_settings.h"
+#include "kvi_splash.h"
+#include "kvi_frame.h"
+#include "kvi_internalcmd.h"
+#include "kvi_theme.h"
+#include <qmessagebox.h>
+#include <qregexp.h>
+//#include "kvi_textencoding.h"
+
+//xml parser
+#include <qdom.h>
+//!xml parser
+
+#include <zlib.h>
+#include <qtextcodec.h>
+
+#include "kvi_fileutils.h"
+
+#include <qdir.h>
+#include <qstringlist.h>
+
+// kvi_app.cpp
+extern KVIRC_API int g_iIdentDaemonRunningUsers;
+
+
+#define RECT_OPTION(_txt,_val,_flags) KviRectOption(KVI_RECT_OPTIONS_PREFIX _txt, _val , _flags)
+
+KviRectOption g_rectOptionsTable[KVI_NUM_RECT_OPTIONS]=
+{
+ RECT_OPTION("FrameGeometry",QRect(0,0,10,10),KviOption_sectFlagGeometry),
+ RECT_OPTION("GeneralOptionsDialogGeometry",QRect(50,50,600,450),KviOption_sectFlagGeometry),
+ RECT_OPTION("RegisteredUsersDialogGeometry",QRect(50,50,600,450),KviOption_sectFlagGeometry)
+};
+
+#define BOOL_OPTION(_txt,_val,_flags) KviBoolOption(KVI_BOOL_OPTIONS_PREFIX _txt,_val,_flags)
+
+KviBoolOption g_boolOptionsTable[KVI_NUM_BOOL_OPTIONS]=
+{
+ BOOL_OPTION("WindowsRememberProperties",true,KviOption_sectFlagWindows),
+ BOOL_OPTION("IrcViewShowImages",false,KviOption_sectFlagIrcView | KviOption_resetUpdateGui | KviOption_groupTheme),
+ BOOL_OPTION("IrcViewTimestamp",true,KviOption_sectFlagIrcView),
+ BOOL_OPTION("IrcViewUrlHighlighting",true,KviOption_sectFlagIrcView | KviOption_groupTheme),
+ BOOL_OPTION("IrcViewWrapMargin",true,KviOption_sectFlagIrcView | KviOption_resetUpdateGui | KviOption_groupTheme),
+ BOOL_OPTION("InputHistoryCursorAtEnd",true,KviOption_sectFlagInput),
+
+ BOOL_OPTION("AvoidParserWarnings",false,KviOption_sectFlagUserParser),
+ BOOL_OPTION("UseProxyHost",false,KviOption_sectFlagConnection),
+ BOOL_OPTION("ShowGeneralOptionsDialogAsToplevel",true,KviOption_sectFlagFrame),
+ BOOL_OPTION("ForceBrutalQuit",false,KviOption_sectFlagIrcSocket),
+ BOOL_OPTION("ShowPingPong",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("PopupNotifierOnNewQueryMessages",true,KviOption_sectFlagFrame),
+ BOOL_OPTION("ShowExtendedServerInfo",false,KviOption_sectFlagConnection),
+ BOOL_OPTION("EchoNumericTopic",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("ShowOwnParts",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("UseAntiSpamOnPrivmsg",false,KviOption_sectFlagAntiSpam),
+ BOOL_OPTION("UseExtendedPrivmsgView",false,KviOption_sectFlagIrcView | KviOption_groupTheme),
+ BOOL_OPTION("ShowUserAndHostInPrivmsgView",false,KviOption_sectFlagIrcView | KviOption_groupTheme),
+ BOOL_OPTION("UseWordHighlighting",true,KviOption_sectFlagIrcView), /* _ALL_ newbie users, with who i was taling asks me where can they switch on */
+ BOOL_OPTION("UseBigIcons",false,KviOption_sectFlagFrame), /* Almost all users asks me "How to decrease icon size?" */
+ BOOL_OPTION("CleanupUnusedModules",true,KviOption_sectFlagModules),
+ BOOL_OPTION("IgnoreCtcpPing",false,KviOption_sectFlagCtcp),
+ BOOL_OPTION("IgnoreCtcpVersion",false,KviOption_sectFlagCtcp),
+ BOOL_OPTION("UseCtcpFloodProtection",true,KviOption_sectFlagCtcp),
+ BOOL_OPTION("DisableBrokenEventHandlers",true,KviOption_sectFlagUserParser),
+ BOOL_OPTION("IgnoreCtcpClientinfo",false,KviOption_sectFlagCtcp),
+ BOOL_OPTION("IgnoreCtcpUserinfo",false,KviOption_sectFlagCtcp),
+ BOOL_OPTION("IgnoreCtcpFinger",false,KviOption_sectFlagCtcp),
+ BOOL_OPTION("IgnoreCtcpSource",false,KviOption_sectFlagCtcp),
+ BOOL_OPTION("IgnoreCtcpTime",false,KviOption_sectFlagCtcp),
+ BOOL_OPTION("RequestMissingAvatars",true,KviOption_sectFlagAvatar),
+ BOOL_OPTION("ShowCompactModeChanges",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("IgnoreCtcpDcc",false,KviOption_sectFlagDcc),
+ BOOL_OPTION("AutoAcceptDccChat",false,KviOption_sectFlagDcc),
+ BOOL_OPTION("AutoAcceptDccSend",false,KviOption_sectFlagDcc),
+ BOOL_OPTION("SendZeroAckInDccRecv",false,KviOption_sectFlagDcc),
+ BOOL_OPTION("UseFastDccSend",true,KviOption_sectFlagDcc),
+ BOOL_OPTION("ObtainGlobalBackgroundFromKde",false,KviOption_sectFlagGui | KviOption_resetUpdatePseudoTransparency | KviOption_groupTheme),
+ BOOL_OPTION("UseTaskBarIrcContextIndicator",false,KviOption_sectFlagTaskBar | KviOption_resetUpdateGui),
+ BOOL_OPTION("UseGlobalApplicationFont",false,KviOption_sectFlagGui | KviOption_resetUpdateAppFont | KviOption_groupTheme),
+ BOOL_OPTION("AlwaysQuitKVIrcClosingLastConsole",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("AlwaysDisconnectClosingConnectedConsole",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("FlashWindowOnHighlightedMessages",true,KviOption_sectFlagFrame),
+ BOOL_OPTION("PopupNotifierOnHighlightedMessages",true,KviOption_sectFlagFrame),
+ BOOL_OPTION("FlashWindowOnNotifyOnLine",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("IrcViewTimestampUTC",false,KviOption_sectFlagIrcView),
+ BOOL_OPTION("UseGlobalPseudoTransparency",false,KviOption_sectFlagGui | KviOption_resetUpdatePseudoTransparency | KviOption_groupTheme),
+ BOOL_OPTION("UseNotifyList",false,KviOption_sectFlagConnection | KviOption_resetRestartNotifyList),
+ BOOL_OPTION("NotifyListChangesToActiveWindow",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("AutoResumeDccSendWhenAutoAccepted",true,KviOption_sectFlagDcc),
+ BOOL_OPTION("LimitOutgoingTraffic",false,KviOption_sectFlagIrcSocket),
+ BOOL_OPTION("SendUnknownCommandsAsRaw",true,KviOption_sectFlagUserParser),
+ BOOL_OPTION("UserListViewDrawGrid",true,KviOption_sectFlagUserListView | KviOption_resetUpdateGui | KviOption_groupTheme),
+ BOOL_OPTION("ShowChannelSyncTime",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("RejoinChannelOnKick",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("KeepChannelOpenOnKick",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("AutoCloseDccSendOnSuccess",false,KviOption_sectFlagDcc),
+ BOOL_OPTION("NotifyDccSendSuccessInConsole",false,KviOption_sectFlagDcc),
+ BOOL_OPTION("CreateMinimizedDccSend",false,KviOption_sectFlagDcc),
+ BOOL_OPTION("CreateMinimizedDccChat",false,KviOption_sectFlagDcc),
+ BOOL_OPTION("AutoAcceptIncomingAvatars",false,KviOption_sectFlagDcc),
+ BOOL_OPTION("UseNickCompletionPostfixForFirstWordOnly",true,KviOption_sectFlagInput),
+ BOOL_OPTION("UseTaskBarIcons",true,KviOption_sectFlagTaskBar | KviOption_resetUpdateGui),
+ BOOL_OPTION("CreateMinimizedDccSendWhenAutoAccepted",true,KviOption_sectFlagDcc),
+ BOOL_OPTION("CreateMinimizedDccChatWhenAutoAccepted",true,KviOption_sectFlagDcc),
+ BOOL_OPTION("DccGuessIpFromServerWhenLocalIsUnroutable",true,KviOption_sectFlagDcc),
+ BOOL_OPTION("ShowRegisteredUsersDialogAsToplevel",true,KviOption_sectFlagFrame),
+ BOOL_OPTION("AutoLogQueries",true,KviOption_sectFlagLogging),/* this options enabled by default in mIRC,XChat and irssi. People are confused while they want to see logs, but see empty dir*/
+ BOOL_OPTION("AutoLogChannels",true,KviOption_sectFlagLogging),
+ BOOL_OPTION("AutoLogDccChat",false,KviOption_sectFlagLogging),
+ BOOL_OPTION("AutoLogConsole",false,KviOption_sectFlagLogging),
+
+ BOOL_OPTION("SilentAntiSpam",false,KviOption_sectFlagAntiSpam),
+ BOOL_OPTION("UseIncomingDccMediaTypeSavePath",true,KviOption_sectFlagDcc),
+ BOOL_OPTION("NotifyListSendUserhostForOnlineUsers",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("UseIntelligentNotifyListManager",true,KviOption_sectFlagConnection | KviOption_resetRestartNotifyList),
+ BOOL_OPTION("UseWatchListIfAvailable",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("UseTreeWindowListTaskBar",true,KviOption_sectFlagTaskBar | KviOption_resetUpdateTaskBar | KviOption_groupTheme),
+ BOOL_OPTION("BindIrcIpV4ConnectionsToSpecifiedAddress",false,KviOption_sectFlagConnection),
+ BOOL_OPTION("BindIrcIpV6ConnectionsToSpecifiedAddress",false,KviOption_sectFlagConnection),
+ BOOL_OPTION("UseAntiSpamOnNotice",false,KviOption_sectFlagAntiSpam),
+ BOOL_OPTION("SetLastAvatarAsDefaultForRegisteredUsers",true,KviOption_sectFlagAvatar),
+ BOOL_OPTION("CantAcceptIncomingDccConnections",false,KviOption_sectFlagDcc),
+ BOOL_OPTION("IgnoreCtcpAvatar",false,KviOption_sectFlagCtcp),
+ BOOL_OPTION("CtcpRepliesToActiveWindow",true,KviOption_sectFlagCtcp),
+ BOOL_OPTION("AutoAcceptDccCanvas",false,KviOption_sectFlagDcc),
+ BOOL_OPTION("NotifyDccSendSuccessInNotifier",true,KviOption_sectFlagDcc),
+ BOOL_OPTION("KillBrokenTimers",true,KviOption_sectFlagUserParser),
+ BOOL_OPTION("DccVoiceVolumeSliderControlsPCM", true, KviOption_sectFlagDcc),
+ BOOL_OPTION("DccVoiceForceHalfDuplex", false, KviOption_sectFlagDcc),
+ BOOL_OPTION("AutoAcceptDccVoice", false, KviOption_sectFlagDcc),
+ BOOL_OPTION("CreateMinimizedDccVoice", false, KviOption_sectFlagDcc),
+ BOOL_OPTION("CreateMinimizedDccVoiceWhenAutoAccepted",true,KviOption_sectFlagDcc),
+#ifdef COMPILE_ON_WINDOWS
+ BOOL_OPTION("UseIdentService",true,KviOption_sectFlagConnection | KviOption_resetRestartIdentd),
+#else
+ BOOL_OPTION("UseIdentService",false,KviOption_sectFlagConnection | KviOption_resetRestartIdentd),
+#endif
+ BOOL_OPTION("ShowTipAtStartup",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("IdentdEnableIpV6",false,KviOption_sectFlagConnection | KviOption_resetRestartIdentd),
+#ifdef COMPILE_ON_WINDOWS
+ BOOL_OPTION("IdentdIpV6ContainsIpV4",false,KviOption_sectFlagConnection | KviOption_resetRestartIdentd),
+#else
+ BOOL_OPTION("IdentdIpV6ContainsIpV4",true,KviOption_sectFlagConnection | KviOption_resetRestartIdentd),
+#endif
+ BOOL_OPTION("ScaleAvatars",true,KviOption_sectFlagAvatar | KviOption_resetUpdateGui | KviOption_groupTheme),
+ BOOL_OPTION("ColorNicks",false,KviOption_sectFlagIrcView | KviOption_groupTheme),
+ BOOL_OPTION("BoldedNicks",true,KviOption_sectFlagIrcView | KviOption_groupTheme),
+ BOOL_OPTION("DccListenOnSpecifiedInterfaceByDefault",false,KviOption_sectFlagDcc),
+ BOOL_OPTION("ChangeNickAway", false, KviOption_sectFlagConnection),
+ BOOL_OPTION("AutoGeneratedAwayNick",false,KviOption_sectFlagConnection), /* only ircnet uses 9-symbol nicks */
+ BOOL_OPTION("ExitAwayOnInput",false,KviOption_sectFlagConnection),
+ BOOL_OPTION("AlwaysHighlightNick",true,KviOption_sectFlagIrcView),
+ BOOL_OPTION("ShowChannelsJoinOnIrc",true,KviOption_sectFlagFrame),
+ BOOL_OPTION("ShowChannelsJoinDialogAsToplevel",true,KviOption_sectFlagFrame),
+ BOOL_OPTION("UserDefinedPortRange",false,KviOption_sectFlagDcc),
+ BOOL_OPTION("CreateQueryOnPrivmsg",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("CreateQueryOnNotice",false,KviOption_sectFlagConnection),
+ BOOL_OPTION("CreateMinimizedQuery",false,KviOption_sectFlagConnection),
+ BOOL_OPTION("AutoJoinOnInvite",false,KviOption_sectFlagConnection),
+ BOOL_OPTION("ShowServersConnectDialogOnStart",true, KviOption_sectFlagFrame),
+ BOOL_OPTION("ShowServersConnectDialogAsToplevel",true,KviOption_sectFlagFrame),
+ BOOL_OPTION("AcceptBrokenFileNameDccResumeRequests",true,KviOption_sectFlagFrame),
+ BOOL_OPTION("AutoReconnectOnUnexpectedDisconnect",true,KviOption_sectFlagFrame),
+ BOOL_OPTION("RejoinChannelsAfterReconnect",true,KviOption_sectFlagFrame),
+ BOOL_OPTION("ReopenQueriesAfterReconnect",true,KviOption_sectFlagFrame),
+ BOOL_OPTION("EnableQueryTracing",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("OperatorMessagesToActiveWindow",false,KviOption_sectFlagConnection),
+ BOOL_OPTION("InviteToActiveWindow",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("ShowChannelUserFlagInPrivmsgView",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("DccSendFakeAddressByDefault",false,KviOption_sectFlagDcc),
+ BOOL_OPTION("UseTaskBarActivityMeter",false,KviOption_sectFlagTaskBar | KviOption_resetUpdateGui | KviOption_groupTheme),
+ BOOL_OPTION("CloseServerWidgetAfterConnect",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("ShowIdentityDialogAsToplevel",true,KviOption_sectFlagFrame),
+ BOOL_OPTION("ShowUserChannelIcons",true,KviOption_sectFlagUserListView | KviOption_resetUpdateGui | KviOption_groupTheme),
+ BOOL_OPTION("ShowUserChannelState",false,KviOption_sectFlagUserListView | KviOption_resetUpdateGui | KviOption_groupTheme),
+ BOOL_OPTION("EnableIgnoreOnPrivMsg",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("VerboseIgnore",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("EnableIgnoreOnNotice",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("NotifyFailedDccHandshakes",true,KviOption_sectFlagDcc),
+ BOOL_OPTION("AutoTileWindows",false,KviOption_sectFlagMdi),
+ BOOL_OPTION("DrawEmoticons",false,KviOption_sectFlagIrcView | KviOption_groupTheme),
+ BOOL_OPTION("IgnoreCtcpPage",false,KviOption_sectFlagCtcp),
+ BOOL_OPTION("ShowDialogOnCtcpPage",true,KviOption_sectFlagCtcp),
+ BOOL_OPTION("BashLikeNickCompletion",false,KviOption_sectFlagInput),
+ BOOL_OPTION("UseSSLCertificate",false,KviOption_sectFlagConnection),
+ BOOL_OPTION("UseSSLPrivateKey",false,KviOption_sectFlagConnection),
+ BOOL_OPTION("WarnAboutPastingMultipleLines",true,KviOption_sectFlagFrame),
+ BOOL_OPTION("KeepChannelsOpenOnUnexpectedDisconnect",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("KeepQueriesOpenOnUnexpectedDisconnect",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("UseLagMeterEngine",true,KviOption_sectFlagConnection | KviOption_resetRestartLagMeter),
+ BOOL_OPTION("ShowLagOnContextDisplay",true,KviOption_sectFlagFrame),
+ BOOL_OPTION("DisableBanListRequestOnJoin",false,KviOption_sectFlagConnection),
+ BOOL_OPTION("DisableBanExceptionListRequestOnJoin",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("DisableInviteListRequestOnJoin",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("DisableWhoRequestOnJoin",false,KviOption_sectFlagConnection),
+ BOOL_OPTION("ShowDockExtension",true,KviOption_sectFlagFrame),
+ BOOL_OPTION("GotAdressForDccByDnsMyNick",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("MinimizeConsoleAfterConnect",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("HighlightOnlyNormalMsg",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("HighlightOnlyNormalMsgQueryToo",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("HighlightOnlyNormalMsgNickinChanToo",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("HighlightOnlyAtCustomHighlightLevel",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("MdiManagerInSdiMode",true,KviOption_sectFlagFrame),
+ BOOL_OPTION("DccBrokenBouncerHack",false,KviOption_sectFlagDcc),
+ BOOL_OPTION("ExternalMessagesToActiveWindow",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("IgnoreChannelAvatarRequestsWhenNoAvatarSet",true,KviOption_sectFlagAvatar),
+ BOOL_OPTION("FlashQueryWindowOnNewMessages",true,KviOption_sectFlagFrame),
+ BOOL_OPTION("ConfirmCloseWhenThereAreConnections",true,KviOption_sectFlagFrame),
+ BOOL_OPTION("UpdateKdeBackgroundOnChange",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("CtcpRequestsToActiveWindow",false,KviOption_sectFlagConnection),
+ BOOL_OPTION("ServerRepliesToActiveWindow",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("ServerNoticesToActiveWindow",false,KviOption_sectFlagConnection),
+ BOOL_OPTION("ServicesNoticesToActiveWindow",false,KviOption_sectFlagConnection),
+ BOOL_OPTION("SortTaskBarItemsByName",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("ShowTaskBarToolTips",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("ShowUserListViewToolTips",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("WhoisRepliesToActiveWindow",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("PopupNotifierOnNotifyOnLine",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("ForciblyDisableNotifier",false,KviOption_sectFlagConnection),
+ BOOL_OPTION("DccSendForceIdleStep",false,KviOption_sectFlagDcc),
+ BOOL_OPTION("StatusBarVisible",true,KviOption_sectFlagFrame),
+ BOOL_OPTION("TrackLastReadTextViewLine",true,KviOption_sectFlagFrame),
+ BOOL_OPTION("KeepChannelOpenOnPart",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("StripMircColorsInUserMessages",false,KviOption_sectFlagFrame | KviOption_groupTheme),
+ BOOL_OPTION("DoNotSuggestRestoreDefaultScript",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("LimitDccSendSpeed",false,KviOption_sectFlagDcc),
+ BOOL_OPTION("LimitDccRecvSpeed",false,KviOption_sectFlagDcc),
+ BOOL_OPTION("IgnoreModuleVersions",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("DisableInputHistory",false,KviOption_sectFlagInput | KviOption_resetUpdateGui),
+ BOOL_OPTION("UseSpecialColorForTimestamp",true,KviOption_sectFlagIrcView | KviOption_resetUpdateGui | KviOption_groupTheme),
+ BOOL_OPTION("DisableAwayListUpdates",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("DisableAvatars",false,KviOption_sectFlagIrcView | KviOption_resetUpdateGui | KviOption_groupTheme),
+ BOOL_OPTION("DisableUserListLabel",false,KviOption_sectFlagIrcView | KviOption_resetUpdateGui | KviOption_groupTheme),
+ BOOL_OPTION("DisablePopupIcons",false,KviOption_sectFlagIrcView | KviOption_resetUpdateGui | KviOption_groupTheme),
+ BOOL_OPTION("ScriptErrorsToDebugWindow",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("ShowMinimizedDebugWindow",true,KviOption_sectFlagFrame),
+ BOOL_OPTION("ShowExtendedInfoInQueryLabel",true,KviOption_resetUpdateGui),
+ BOOL_OPTION("UseUserListColorsAsNickColors",true,KviOption_sectFlagIrcView | KviOption_groupTheme),
+ BOOL_OPTION("GzipLogs",false,KviOption_sectFlagLogging),
+ BOOL_OPTION("MinimizeInTray",false,KviOption_resetUpdateGui),
+ BOOL_OPTION("DisableNotifierFlashing",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("CommandlineInUserFriendlyModeByDefault",false,KviOption_sectFlagFrame), // this confuses existing users and is not mentioned in the docs where there are commandline examples : we need it to be off by default for now
+ BOOL_OPTION("EnableVisualEffects",true,KviOption_resetUpdateGui),
+ BOOL_OPTION("DCCFileTransferReplaceOutgoingSpacesWithUnderscores",true,KviOption_sectFlagDcc),
+ BOOL_OPTION("DoNotStretchAvatars",true,KviOption_sectFlagIrcView | KviOption_resetUpdateGui ),
+ BOOL_OPTION("UseDifferentColorForOwnNick",false,KviOption_sectFlagIrcView | KviOption_resetUpdateGui | KviOption_groupTheme),
+ BOOL_OPTION("CloseInTray",false,KviOption_sectFlagFrame | KviOption_resetUpdateGui),
+ BOOL_OPTION("StartupMinimized",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("SortReceivedByDccFilesByNicks",false,KviOption_sectFlagDcc),
+ BOOL_OPTION("LogChannelHistory",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("ClassicTaskBarSetMaximumButtonWidth",true,KviOption_groupTheme | KviOption_sectFlagGeometry | KviOption_resetUpdateGui),
+ BOOL_OPTION("KeepChannelsOpenOnDisconnect",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("KeepQueriesOpenOnDisconnect",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("HideWindowToolButtons",true,KviOption_sectFlagFrame),
+ BOOL_OPTION("HideInputToolButtons",true,KviOption_sectFlagFrame),
+ BOOL_OPTION("StripControlCodesInLogs",false,KviOption_sectFlagLogging),
+ BOOL_OPTION("EnableTrayIconFlashing",true,KviOption_sectFlagFrame),
+ BOOL_OPTION("UseFlatClassicTaskbarButtons",false,KviOption_sectFlagTaskBar | KviOption_resetUpdateGui | KviOption_groupTheme),
+ BOOL_OPTION("ShowTreeTaskbarHeader",false,KviOption_sectFlagTaskBar | KviOption_resetUpdateGui | KviOption_groupTheme),
+ BOOL_OPTION("UseLevelBasedTrayNotification",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("MuteAllSounds",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("CreateMinimizedChannels",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("ShowNetworkNameForConsoleTaskBarEntry",true,KviOption_sectFlagFrame | KviOption_resetUpdateGui),
+ BOOL_OPTION("DrawGenderIcons",true,KviOption_sectFlagFrame | KviOption_resetUpdateGui | KviOption_groupTheme),
+ BOOL_OPTION("PrependGenderInfoToRealname",true,KviOption_sectFlagConnection),
+ BOOL_OPTION("UseIdentServiceOnlyOnConnect",true,KviOption_sectFlagConnection | KviOption_resetRestartIdentd),
+ BOOL_OPTION("UseSystemUrlHandlers",true,KviOption_sectFlagUrl),
+ BOOL_OPTION("ScaleAvatarsOnLoad",true,KviOption_sectFlagAvatar),
+ BOOL_OPTION("DisableNotifierFadein",false,KviOption_sectFlagFrame),
+ BOOL_OPTION("UseAntiAliasing",true,KviOption_sectFlagGui | KviOption_resetUpdateGui),
+};
+
+#define STRING_OPTION(_txt,_val,_flags) KviStringOption(KVI_STRING_OPTIONS_PREFIX _txt,_val,_flags)
+
+// FIXME: #warning "Remove the unused string options here!"
+
+#ifdef COMPILE_ON_WINDOWS
+ #define RUN_THE_BROWSER "run \"cmd.exe /c start \\\"\\\" \\\"$0\\\"\""
+#else
+ #ifdef COMPILE_KDE_SUPPORT
+ #define RUN_THE_BROWSER "run kfmclient openURL $0"
+ #else
+ #ifdef Q_OS_MACX
+ #define RUN_THE_BROWSER "run open $0"
+ #else
+ #define RUN_THE_BROWSER "run kvi_run_netscape $0"
+ #endif
+ #endif
+#endif
+
+KviStringOption g_stringOptionsTable[KVI_NUM_STRING_OPTIONS]=
+{
+ STRING_OPTION("UNUSED:FrameCaption","",KviOption_sectFlagFrame),
+ STRING_OPTION("Nickname1",KVI_DEFAULT_NICKNAME1,KviOption_sectFlagUser),
+ STRING_OPTION("Nickname2",KVI_DEFAULT_NICKNAME2,KviOption_sectFlagUser),
+ STRING_OPTION("Nickname3",KVI_DEFAULT_NICKNAME3,KviOption_sectFlagUser),
+ STRING_OPTION("Nickname4",KVI_DEFAULT_NICKNAME4,KviOption_sectFlagUser),
+ STRING_OPTION("Username",KVI_DEFAULT_USERNAME,KviOption_sectFlagUser),
+ STRING_OPTION("Realname",KVI_DEFAULT_REALNAME,KviOption_sectFlagUser),
+ STRING_OPTION("LocalHostIp","127.0.0.1",KviOption_sectFlagIrcSocket),
+ STRING_OPTION("PartMessage",KVI_DEFAULT_PART_MESSAGE,KviOption_sectFlagConnection),
+ STRING_OPTION("QuitMessage",KVI_DEFAULT_QUIT_MESSAGE,KviOption_sectFlagConnection),
+ STRING_OPTION("UrlHttpCommand",RUN_THE_BROWSER,KviOption_sectFlagUrl),
+ STRING_OPTION("ExtendedPrivmsgPrefix","[",KviOption_sectFlagIrcView | KviOption_groupTheme),
+ STRING_OPTION("ExtendedPrivmsgPostfix","] ",KviOption_sectFlagIrcView | KviOption_groupTheme),
+ STRING_OPTION("CtcpVersionPostfix","",KviOption_sectFlagCtcp),
+ STRING_OPTION("CtcpUserInfoOther",KVI_DEFAULT_CTCP_USERINFO_REPLY,KviOption_sectFlagUser),
+ STRING_OPTION("CtcpSourcePostfix","",KviOption_sectFlagCtcp),
+ STRING_OPTION("UrlFtpCommand",RUN_THE_BROWSER,KviOption_sectFlagUrl),
+ STRING_OPTION("UrlHttpsCommand",RUN_THE_BROWSER,KviOption_sectFlagUrl),
+ STRING_OPTION("UrlMailtoCommand",RUN_THE_BROWSER,KviOption_sectFlagUrl),
+ STRING_OPTION("PreferredMediaPlayer","auto",KviOption_sectFlagFrame),
+ STRING_OPTION("UrlFileCommand","play $0",KviOption_sectFlagUrl),
+ STRING_OPTION("NickCompletionPostfix",": ",KviOption_sectFlagInput),
+ STRING_OPTION("UrlUnknownCommand",RUN_THE_BROWSER,KviOption_sectFlagUrl),
+ STRING_OPTION("IpV4ConnectionBindAddress","",KviOption_sectFlagConnection),
+ STRING_OPTION("IpV6ConnectionBindAddress","",KviOption_sectFlagConnection),
+ STRING_OPTION("DccVoiceSoundDevice", "/dev/dsp",KviOption_sectFlagDcc),
+ STRING_OPTION("DccVoiceMixerDevice", "/dev/mixer",KviOption_sectFlagDcc),
+ STRING_OPTION("AwayMessage",KVI_DEFAULT_AWAY_MESSAGE,KviOption_sectFlagConnection),
+ STRING_OPTION("IdentdUser","kvirc",KviOption_sectFlagConnection | KviOption_resetRestartIdentd),
+ STRING_OPTION("DccListenDefaultInterface","ppp0",KviOption_sectFlagDcc),
+ STRING_OPTION("CustomAwayNick", KVI_DEFAULT_AWAY_NICK,KviOption_sectFlagConnection),
+ STRING_OPTION("DefaultDccFakeAddress","",KviOption_sectFlagDcc),
+ STRING_OPTION("CtcpPageReply",KVI_DEFAULT_CTCP_PAGE_REPLY,KviOption_sectFlagCtcp),
+ STRING_OPTION("SSLCertificatePath","",KviOption_sectFlagConnection | KviOption_encodePath),
+ STRING_OPTION("SSLCertificatePass","",KviOption_sectFlagConnection),
+ STRING_OPTION("SSLPrivateKeyPath","",KviOption_sectFlagConnection | KviOption_encodePath),
+ STRING_OPTION("SSLPrivateKeyPass","",KviOption_sectFlagConnection),
+ STRING_OPTION("SoundSystem","unknown",KviOption_sectFlagFrame),
+ STRING_OPTION("DefaultUserMode", "", KviOption_sectFlagUser),
+ STRING_OPTION("LastImageDialogPath","",KviOption_sectFlagUser | KviOption_encodePath),
+ STRING_OPTION("IconThemeSubdir","",KviOption_sectFlagUser | KviOption_groupTheme | KviOption_resetReloadImages | KviOption_encodePath),
+ STRING_OPTION("IncomingPath","",KviOption_sectFlagUser | KviOption_encodePath),
+ STRING_OPTION("MyAvatar","",KviOption_sectFlagUser),
+ STRING_OPTION("DefaultTextEncoding","",KviOption_sectFlagFrame),
+ STRING_OPTION("WinampTextEncoding","",KviOption_sectFlagFrame),
+ STRING_OPTION("Mp3TagsEncoding","",KviOption_sectFlagFrame),
+ STRING_OPTION("CtcpUserInfoAge","",KviOption_sectFlagUser),
+ STRING_OPTION("CtcpUserInfoGender","",KviOption_sectFlagUser),
+ STRING_OPTION("CtcpUserInfoLocation","",KviOption_sectFlagUser),
+ STRING_OPTION("CtcpUserInfoLanguages","",KviOption_sectFlagUser),
+ STRING_OPTION("WordSplitters",",\"';:|.%^~!\\$#()",KviOption_sectFlagIrcView),
+ STRING_OPTION("OnNewQueryOpenedSound","",KviOption_sectFlagFrame),
+ STRING_OPTION("OnHighlightedMessageSound","",KviOption_sectFlagFrame),
+ STRING_OPTION("OnMeKickedSound","",KviOption_sectFlagFrame),
+ STRING_OPTION("OnQueryMessageSound","",KviOption_sectFlagFrame),
+ STRING_OPTION("IrcViewTimestampFormat","[hh:mm:ss]",KviOption_sectFlagIrcView),
+ STRING_OPTION("PreferredTorrentClient","auto",KviOption_sectFlagFrame)
+};
+
+#define STRINGLIST_OPTION(_txt,_flags) \
+ KviStringListOption(KVI_STRINGLIST_OPTIONS_PREFIX _txt,QStringList(),_flags)
+
+#define STRINGLIST_OPTION_WITHDEFAULT(_txt,_flags,_def) \
+ KviStringListOption(KVI_STRINGLIST_OPTIONS_PREFIX _txt,QStringList(_def),_flags)
+
+
+KviStringListOption g_stringlistOptionsTable[KVI_NUM_STRINGLIST_OPTIONS]=
+{
+ STRINGLIST_OPTION("HighlightWords",KviOption_sectFlagIrcView),
+ STRINGLIST_OPTION("SpamWords",KviOption_sectFlagAntiSpam),
+ STRINGLIST_OPTION_WITHDEFAULT("RecentChannels",KviOption_sectFlagRecent,"#kvirc"),
+ STRINGLIST_OPTION("RecentServers",KviOption_sectFlagRecent),
+ STRINGLIST_OPTION("RecentNicknames",KviOption_sectFlagRecent),
+ STRINGLIST_OPTION("ModuleExtensionToolbars",KviOption_sectFlagFrame),
+ STRINGLIST_OPTION("ImageSearchPaths",KviOption_sectFlagFrame | KviOption_encodePath),
+ STRINGLIST_OPTION("RecentIrcUrls",KviOption_sectFlagRecent)
+};
+
+#define MIRC_COLOR_OPTION(_num,_red,_green,_blue) \
+ KviColorOption(KVI_MIRCCOLOR_OPTIONS_PREFIX _num,QColor(_red,_green,_blue), \
+ KviOption_sectFlagMircColor | KviOption_resetUpdateGui | KviOption_groupTheme)
+
+KviColorOption g_mirccolorOptionsTable[KVI_NUM_MIRCCOLOR_OPTIONS]=
+{
+ MIRC_COLOR_OPTION("0",255,255,255),
+ MIRC_COLOR_OPTION("1",0,0,0),
+ MIRC_COLOR_OPTION("2",0,0,140),
+ MIRC_COLOR_OPTION("3",0,100,0),
+ MIRC_COLOR_OPTION("4",230,0,0),
+ MIRC_COLOR_OPTION("5",150,0,0),
+ MIRC_COLOR_OPTION("6",80,0,80),
+ MIRC_COLOR_OPTION("7",255,90,0),
+ MIRC_COLOR_OPTION("8",255,255,0),
+ MIRC_COLOR_OPTION("9",0,255,0),
+ MIRC_COLOR_OPTION("10",0,150,180),
+ MIRC_COLOR_OPTION("11",170,170,255),
+ MIRC_COLOR_OPTION("12",15,15,255),
+ MIRC_COLOR_OPTION("13",200,0,200),
+ MIRC_COLOR_OPTION("14",80,80,80),
+ MIRC_COLOR_OPTION("15",170,170,170)
+};
+
+#define COLOR_OPTION(_name,_red,_green,_blue,_flags) \
+ KviColorOption(KVI_COLOR_OPTIONS_PREFIX _name, \
+ QColor(_red,_green,_blue), \
+ _flags | KviOption_resetUpdateGui | KviOption_groupTheme)
+
+KviColorOption g_colorOptionsTable[KVI_NUM_COLOR_OPTIONS]=
+{
+ COLOR_OPTION("MdiBackground",0,0,0,KviOption_sectFlagMdi),
+ COLOR_OPTION("TaskBarNormalText",0,0,0,KviOption_sectFlagTaskBar),
+ COLOR_OPTION("TaskBarMinimizedText",60,60,60,KviOption_sectFlagTaskBar),
+ COLOR_OPTION("TaskBarHighlight1Text",0,16,144,KviOption_sectFlagTaskBar),
+ COLOR_OPTION("TaskBarHighlight2Text",32,0,255,KviOption_sectFlagTaskBar),
+ COLOR_OPTION("TaskBarProgressBar",180,180,180,KviOption_sectFlagTaskBar),
+ COLOR_OPTION("MdiCaptionActive",113,125,190,KviOption_sectFlagMdi),
+ COLOR_OPTION("MdiCaptionInactive",180,180,180,KviOption_sectFlagMdi),
+ COLOR_OPTION("CaptionTextActive",255,255,255,KviOption_sectFlagWindows),
+ COLOR_OPTION("CaptionTextActive2",255,30,30,KviOption_sectFlagWindows),
+ COLOR_OPTION("CaptionTextInactive",0,0,0,KviOption_sectFlagWindows),
+ COLOR_OPTION("CaptionTextInactive2",30,30,30,KviOption_sectFlagWindows),
+ COLOR_OPTION("IrcViewBackground",255,255,255,KviOption_sectFlagIrcView),
+ COLOR_OPTION("InputBackgroundColor",255,255,255,KviOption_sectFlagInput),
+ COLOR_OPTION("InputSelectionBackground",0,0,0,KviOption_sectFlagInput),
+ COLOR_OPTION("InputSelectionForeground",255,255,255,KviOption_sectFlagInput),
+ COLOR_OPTION("InputCursor",0,0,0,KviOption_sectFlagInput),
+ COLOR_OPTION("InputControl",200,100,0,KviOption_sectFlagInput),
+ COLOR_OPTION("InputForeground",0,0,0,KviOption_sectFlagInput),
+ COLOR_OPTION("UserListViewBackground",255,255,255,KviOption_sectFlagUserListView),
+ COLOR_OPTION("UserListViewOpForeground",200,0,0,KviOption_sectFlagUserListView),
+ COLOR_OPTION("UserListViewVoiceForeground",0,0,200,KviOption_sectFlagUserListView),
+ COLOR_OPTION("UserListViewNormalForeground",0,0,0,KviOption_sectFlagUserListView),
+ COLOR_OPTION("UserListViewSelectionBackground",0,0,0,KviOption_sectFlagUserListView),
+ COLOR_OPTION("UserListViewSelectionForeground",255,255,255,KviOption_sectFlagUserListView),
+ COLOR_OPTION("LabelBackground",255,255,255,KviOption_sectFlagLabel),
+ COLOR_OPTION("LabelForeground",0,0,0,KviOption_sectFlagLabel),
+ COLOR_OPTION("GlobalTransparencyFade",255,255,255,KviOption_sectFlagGui | KviOption_resetUpdatePseudoTransparency),
+ COLOR_OPTION("IrcToolBarAppletBackground",255,255,255,KviOption_sectFlagIrcToolBar),
+ COLOR_OPTION("IrcToolBarAppletForegroundLowContrast",180,180,180,KviOption_sectFlagIrcToolBar),
+ COLOR_OPTION("IrcToolBarAppletForegroundMidContrast",110,110,110,KviOption_sectFlagIrcToolBar),
+ COLOR_OPTION("IrcToolBarAppletForegroundHighContrastInactive1",40,40,40,KviOption_sectFlagIrcToolBar),
+ COLOR_OPTION("IrcToolBarAppletForegroundHighContrastInactive2",40,40,40,KviOption_sectFlagIrcToolBar),
+ COLOR_OPTION("IrcToolBarAppletForegroundHighContrastActive1",0,0,0,KviOption_sectFlagIrcToolBar),
+ COLOR_OPTION("IrcToolBarAppletForegroundHighContrastActive2",0,60,0,KviOption_sectFlagIrcToolBar),
+ COLOR_OPTION("TreeTaskBarBackground",255,255,255,KviOption_sectFlagTaskBar),
+ COLOR_OPTION("TreeTaskBarActiveBackground",200,200,200,KviOption_sectFlagTaskBar),
+ COLOR_OPTION("TreeTaskBarForeground",0,0,0,KviOption_sectFlagTaskBar),
+ COLOR_OPTION("TreeTaskBarActiveForeground",0,0,0,KviOption_sectFlagTaskBar),
+ COLOR_OPTION("TreeTaskBarHighlight1Foreground",0,16,144,KviOption_sectFlagTaskBar),
+ COLOR_OPTION("TreeTaskBarHighlight2Foreground",32,0,255,KviOption_sectFlagTaskBar),
+ COLOR_OPTION("TreeTaskBarProgress",150,150,150,KviOption_sectFlagTaskBar),
+ COLOR_OPTION("UserListViewHalfOpForeground",119,0,178,KviOption_sectFlagUserListView),
+ COLOR_OPTION("TaskBarHighlight3Text",128,20,255,KviOption_sectFlagTaskBar),
+ COLOR_OPTION("TaskBarHighlight4Text",220,0,255,KviOption_sectFlagTaskBar),
+ COLOR_OPTION("TaskBarHighlight5Text",255,0,0,KviOption_sectFlagTaskBar),
+ COLOR_OPTION("TreeTaskBarHighlight3Foreground",128,0,255,KviOption_sectFlagTaskBar),
+ COLOR_OPTION("TreeTaskBarHighlight4Foreground",220,0,255,KviOption_sectFlagTaskBar),
+ COLOR_OPTION("TreeTaskBarHighlight5Foreground",255,0,0,KviOption_sectFlagTaskBar),
+ COLOR_OPTION("UserListViewChanAdminForeground",83,54,5,KviOption_sectFlagUserListView),
+ COLOR_OPTION("UserListViewUserOpForeground",0,127,178,KviOption_sectFlagUserListView),
+ COLOR_OPTION("UserListViewGrid",110,110,110,KviOption_sectFlagUserListView),
+ COLOR_OPTION("UserListViewChanOwnerForeground",81,87,111,KviOption_sectFlagUserListView),
+ COLOR_OPTION("IrcViewMarkLine",40,40,40,KviOption_sectFlagIrcView),
+ COLOR_OPTION("UserListViewAwayForeground",143,143,143,KviOption_sectFlagUserListView),
+ COLOR_OPTION("UserListViewOwnForeground",255,255,0,KviOption_sectFlagUserListView)
+};
+
+
+#define IC_COLOR_OPTION(_num,_red,_green,_blue) \
+ KviColorOption( \
+ KVI_ICCOLOR_OPTIONS_PREFIX _num, \
+ QColor(_red,_green,_blue), \
+ KviOption_sectFlagTaskBar | KviOption_resetUpdateGui | KviOption_groupTheme)
+
+KviColorOption g_iccolorOptionsTable[KVI_NUM_ICCOLOR_OPTIONS]=
+{
+ IC_COLOR_OPTION("0",250,250,0),
+ IC_COLOR_OPTION("1",0,0,0),
+ IC_COLOR_OPTION("2",0,0,200),
+ IC_COLOR_OPTION("3",200,0,0),
+ IC_COLOR_OPTION("4",255,255,255),
+ IC_COLOR_OPTION("5",0,150,190),
+ IC_COLOR_OPTION("6",0,130,0),
+ IC_COLOR_OPTION("7",150,0,170)
+};
+
+#define PIXMAP_OPTION(_name,_flags) \
+ KviPixmapOption( \
+ KVI_PIXMAP_OPTIONS_PREFIX _name , \
+ KviPixmap(), \
+ _flags | KviOption_resetUpdateGui)
+
+KviPixmapOption g_pixmapOptionsTable[KVI_NUM_PIXMAP_OPTIONS]=
+{
+ PIXMAP_OPTION("MdiBackground",KviOption_sectFlagMdi | KviOption_groupTheme),
+ PIXMAP_OPTION("IrcViewBackground",KviOption_sectFlagIrcView | KviOption_groupTheme),
+ PIXMAP_OPTION("InputBackground",KviOption_sectFlagInput | KviOption_groupTheme),
+ PIXMAP_OPTION("UserListViewBackground",KviOption_sectFlagUserListView | KviOption_groupTheme),
+ PIXMAP_OPTION("LabelBackground",KviOption_sectFlagLabel | KviOption_groupTheme),
+ PIXMAP_OPTION("MyAvatar",KviOption_sectFlagUser),
+ PIXMAP_OPTION("IrcToolBarAppletBackground",KviOption_sectFlagIrcToolBar | KviOption_groupTheme),
+ PIXMAP_OPTION("TreeTaskBarBackground",KviOption_sectFlagTaskBar | KviOption_groupTheme),
+ PIXMAP_OPTION("GlobalTransparencyBackground",KviOption_sectFlagGui | KviOption_resetUpdatePseudoTransparency | KviOption_groupTheme)
+};
+
+//#define INT_OPTION(_name,_value,_flags)
+// {
+// KVI_INT_OPTIONS_PREFIX _name ,
+// _value ,
+// _flags
+// }
+//
+//KviIntOption g_intOptionsTable[KVI_NUM_INT_OPTIONS]=
+//{
+// INT_OPTION("IrcViewMaxBufferSize",KVI_IRCVIEW_MAX_LINES,KviOption_sectFlagIrcView),
+// INT_OPTION("IrcViewTollTipTimeoutInMsec",1800,KviOption_sectFlagIrcView),
+// INT_OPTION("IrcViewToolTipHideTimeoutInMsec",10000,KviOption_sectFlagIrcView)
+//};
+
+#define UINT_OPTION(_name,_value,_flags) \
+ KviUIntOption( \
+ KVI_UINT_OPTIONS_PREFIX _name , \
+ _value , \
+ _flags \
+ )
+
+KviUIntOption g_uintOptionsTable[KVI_NUM_UINT_OPTIONS]=
+{
+ UINT_OPTION("IrcSocketTimeout",60,KviOption_sectFlagIrcSocket),
+ UINT_OPTION("ModuleCleanupTimerInterval",90,KviOption_sectFlagModules),
+ UINT_OPTION("ModuleCleanupTimeout",180,KviOption_sectFlagModules),
+ UINT_OPTION("MaxCtcpRequests",5,KviOption_sectFlagCtcp),
+ UINT_OPTION("CtcpFloodCheckInterval",10,KviOption_sectFlagCtcp),
+ UINT_OPTION("TotalConnectionTime",0,0),
+ UINT_OPTION("DccSocketTimeout",360,KviOption_sectFlagDcc),
+ UINT_OPTION("DccSendIdleStepInMSec",30,KviOption_sectFlagDcc),
+ UINT_OPTION("DccSendPacketSize",4096,KviOption_sectFlagDcc),
+ UINT_OPTION("GlobalTransparencyParentFadeFactor",10,KviOption_sectFlagGui | KviOption_resetUpdatePseudoTransparency | KviOption_groupTheme),
+ UINT_OPTION("GlobalTransparencyChildFadeFactor",50,KviOption_sectFlagGui | KviOption_resetUpdatePseudoTransparency | KviOption_groupTheme),
+ UINT_OPTION("NotifyListCheckTimeInSecs",180,KviOption_sectFlagConnection),
+ UINT_OPTION("SocketQueueFlushTimeout",500,KviOption_sectFlagIrcSocket),
+ UINT_OPTION("OutgoingTrafficLimitUSeconds",2000000,KviOption_sectFlagIrcSocket),
+ UINT_OPTION("NotifyListIsOnDelayTimeInSecs",6,KviOption_sectFlagConnection),
+ UINT_OPTION("NotifyListUserhostDelayTimeInSecs",6,KviOption_sectFlagConnection),
+ UINT_OPTION("TreeTaskBarMinimumWidth",24,KviOption_sectFlagTaskBar | KviOption_resetUpdateTaskBar),
+ UINT_OPTION("AvatarOfferTimeoutInSecs",60,KviOption_sectFlagAvatar),
+ UINT_OPTION("IrcViewMaxBufferSize",1024,KviOption_sectFlagIrcView),
+ UINT_OPTION("IrcViewToolTipTimeoutInMsec",1200,KviOption_sectFlagIrcView),
+ UINT_OPTION("IrcViewToolTipHideTimeoutInMsec",12000,KviOption_sectFlagIrcView),
+ UINT_OPTION("DccVoicePreBufferSize",32000,KviOption_sectFlagDcc),
+ UINT_OPTION("IdentdPort",113,KviOption_sectFlagConnection | KviOption_resetRestartIdentd),
+ UINT_OPTION("AvatarScaleWidth",80,KviOption_sectFlagAvatar | KviOption_resetUpdateGui),
+ UINT_OPTION("AvatarScaleHeight",80,KviOption_sectFlagAvatar | KviOption_resetUpdateGui),
+ UINT_OPTION("DccMinPort",30000,KviOption_sectFlagDcc),
+ UINT_OPTION("DccMaxPort",31000,KviOption_sectFlagDcc),
+ UINT_OPTION("SoundOfferTimeoutInSecs",60,KviOption_sectFlagConnection),
+ UINT_OPTION("MaximumRequestedAvatarSize",256000,KviOption_sectFlagAvatar),
+ UINT_OPTION("TreeTaskBarMaximumWidth",200,KviOption_sectFlagTaskBar | KviOption_resetUpdateTaskBar),
+ UINT_OPTION("PasteDelay",2000,KviOption_sectFlagInput),
+ UINT_OPTION("MaxDccSendTransfers",10,KviOption_sectFlagDcc),
+ UINT_OPTION("MaxDccSlots",64,KviOption_sectFlagDcc),
+ UINT_OPTION("TileMethod",5,KviOption_sectFlagMdi),
+ UINT_OPTION("LagMeterHeartbeat",5000,KviOption_sectFlagConnection | KviOption_resetRestartLagMeter),
+ UINT_OPTION("LagAlarmTime",120000,KviOption_sectFlagConnection),
+ UINT_OPTION("UNUSED",0,KviOption_sectFlagFrame),
+ UINT_OPTION("TaskBarButtonMinWidth",100,KviOption_sectFlagTaskBar),
+ UINT_OPTION("OutputVerbosityLevel",KVI_VERBOSITY_LEVEL_NORMAL,KviOption_sectFlagFrame),
+ UINT_OPTION("IrcContextAppletWidth",160,KviOption_sectFlagFrame),
+ UINT_OPTION("MinHighlightLevel",0,KviOption_uintMinHighlightLevel),
+ UINT_OPTION("UserListViewGridType",3,KviOption_sectFlagUserListView | KviOption_resetUpdateGui | KviOption_groupTheme),
+ UINT_OPTION("TaskBarMaximumRows",2,KviOption_sectFlagFrame),
+ UINT_OPTION("MaxAutoReconnectAttempts",15,KviOption_sectFlagFrame),
+ UINT_OPTION("AutoReconnectDelay",10,KviOption_sectFlagFrame),
+ UINT_OPTION("MaxDccSendSpeed",0,KviOption_sectFlagFrame),
+ UINT_OPTION("MaxDccRecvSpeed",0,KviOption_sectFlagFrame),
+ UINT_OPTION("TimeStampForeground",KVI_DARKGRAY,KviOption_sectFlagIrcView | KviOption_resetUpdateGui | KviOption_groupTheme),
+ UINT_OPTION("TimeStampBackground",KVI_TRANSPARENT,KviOption_sectFlagIrcView | KviOption_resetUpdateGui | KviOption_groupTheme),
+ UINT_OPTION("UserExperienceLevel",1,KviOption_sectFlagUser),
+ UINT_OPTION("ClassicTaskBarMaximumButtonWidth",100,KviOption_sectFlagGeometry | KviOption_resetUpdateGui | KviOption_groupTheme),
+ UINT_OPTION("DefaultBanType",7,KviOption_sectFlagIrcSocket),
+ UINT_OPTION("IrcViewPixmapAlign",0,KviOption_sectFlagIrcView | KviOption_groupTheme),
+ UINT_OPTION("UserListPixmapAlign",0,KviOption_sectFlagFrame | KviOption_groupTheme),
+ UINT_OPTION("ToolBarAppletPixmapAlign",0,KviOption_sectFlagFrame | KviOption_groupTheme),
+ UINT_OPTION("TreeTaskBarPixmapAlign",0,KviOption_sectFlagFrame | KviOption_groupTheme),
+ UINT_OPTION("InputPixmapAlign",0,KviOption_sectFlagFrame | KviOption_groupTheme),
+ UINT_OPTION("AutoFlushLogs",30,KviOption_sectFlagFrame ),
+ UINT_OPTION("MinTrayLowLevelMessage",1,KviOption_sectFlagFrame ),
+ UINT_OPTION("MinTrayHighLevelMessage",4,KviOption_sectFlagFrame ),
+ UINT_OPTION("IdentdOutputMode",KviIdentdOutputMode::Quiet,KviOption_sectFlagConnection ),
+ UINT_OPTION("ScaleAvatarsOnLoadHeight",600,KviOption_sectFlagAvatar ),
+ UINT_OPTION("ScaleAvatarsOnLoadWidth",800,KviOption_sectFlagAvatar ),
+ UINT_OPTION("NotifierActiveTransparency",90,KviOption_sectFlagFrame ),
+ UINT_OPTION("NotifierInactiveTransparency",40,KviOption_sectFlagFrame )
+};
+
+#define FONT_OPTION(_name,_face,_size,_flags) \
+ KviFontOption( \
+ KVI_FONT_OPTIONS_PREFIX _name , \
+ QFont(_face,_size) , \
+ _flags | KviOption_groupTheme \
+ )
+
+KviFontOption g_fontOptionsTable[KVI_NUM_FONT_OPTIONS]=
+{
+#ifdef COMPILE_ON_WINDOWS
+ FONT_OPTION("IrcView","Arial",9,KviOption_sectFlagIrcView | KviOption_resetUpdateGui),
+ FONT_OPTION("Input","Arial",12,KviOption_sectFlagInput | KviOption_resetUpdateGui),
+ FONT_OPTION("UserListView","Arial",9,KviOption_sectFlagUserListView | KviOption_resetUpdateGui),
+ FONT_OPTION("Label","Arial",9,KviOption_sectFlagLabel | KviOption_resetUpdateGui),
+ FONT_OPTION("Application","Arial",9,KviOption_sectFlagGui | KviOption_resetUpdateAppFont),
+ FONT_OPTION("IrcToolBarApplet","Arial",9,KviOption_sectFlagIrcToolBar | KviOption_resetUpdateGui),
+ FONT_OPTION("Taskbar","Arial",9,KviOption_sectFlagTaskBar | KviOption_resetUpdateTaskBar)
+#else
+ #if QT_VERSION >= 300
+ FONT_OPTION("IrcView","Monospace",10,KviOption_sectFlagIrcView | KviOption_resetUpdateGui),
+ FONT_OPTION("Input","Sans Serif",12,KviOption_sectFlagInput | KviOption_resetUpdateGui),
+ FONT_OPTION("UserListView","Sans Serif",10,KviOption_sectFlagUserListView | KviOption_resetUpdateGui),
+ FONT_OPTION("Label","Sans Serif",10,KviOption_sectFlagLabel | KviOption_resetUpdateGui),
+ FONT_OPTION("Application","Sans Serif",10,KviOption_sectFlagGui | KviOption_resetUpdateAppFont),
+ FONT_OPTION("IrcToolBarApplet","Sans Serif",10,KviOption_sectFlagIrcToolBar | KviOption_resetUpdateGui),
+ FONT_OPTION("Taskbar","Sans Serif",10,KviOption_sectFlagTaskBar | KviOption_resetUpdateTaskBar)
+ #else
+ FONT_OPTION("IrcView","Monospace",12,KviOption_sectFlagIrcView | KviOption_resetUpdateGui),
+ FONT_OPTION("Input","Sans Serif",16,KviOption_sectFlagInput | KviOption_resetUpdateGui),
+ FONT_OPTION("UserListView","Sans Serif",12,KviOption_sectFlagUserListView | KviOption_resetUpdateGui),
+ FONT_OPTION("Label","Sans Serif",12,KviOption_sectFlagLabel | KviOption_resetUpdateGui),
+ FONT_OPTION("Application","Sans Serif",12,KviOption_sectFlagGui | KviOption_resetUpdateAppFont),
+ FONT_OPTION("IrcToolBarApplet","Sans Serif",10,KviOption_sectFlagIrcToolBar | KviOption_resetUpdateGui),
+ FONT_OPTION("Taskbar","Sans Serif",10,KviOption_sectFlagTaskBar | KviOption_resetUpdateTaskBar)
+ #endif
+#endif
+};
+
+#define MSGTYPE_OPTION(_name,_text,_icon,_levl) \
+ KviMsgTypeOption( \
+ KVI_MSGTYPE_OPTIONS_PREFIX _name , \
+ KviMsgType(_text,_icon,KVI_BLACK,KVI_TRANSPARENT,true,_levl), \
+ KviOption_sectFlagMsgType | KviOption_groupTheme \
+ )
+
+#define MSGTYPE_OPTION_SPEC(_name,_text,_icon,_fore,_back,_levl) \
+ KviMsgTypeOption( \
+ KVI_MSGTYPE_OPTIONS_PREFIX _name , \
+ KviMsgType(_text,_icon,_fore,_back,true,_levl), \
+ KviOption_sectFlagMsgType | KviOption_groupTheme \
+ )
+
+
+
+// FIXME: #warning "FIX THE ICONS HERE!!!"
+
+KviMsgTypeOption g_msgtypeOptionsTable[KVI_NUM_MSGTYPE_OPTIONS]=
+{
+ MSGTYPE_OPTION("Echo",__tr_no_lookup("Normal text"),KVI_SMALLICON_NONE,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION_SPEC("Selection",__tr_no_lookup("Selection"),KVI_SMALLICON_NONE,KVI_WHITE,KVI_BLACK,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION_SPEC("Highlight",__tr_no_lookup("Highlighted text"),KVI_SMALLICON_ALERT,KVI_WHITE,KVI_BLACK,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION_SPEC("Url",__tr_no_lookup("URL foreground"),KVI_SMALLICON_NONE,KVI_BLUE,KVI_TRANSPARENT,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION_SPEC("Link",__tr_no_lookup("Link overlay foreground"),KVI_SMALLICON_NONE,KVI_BLUE,KVI_TRANSPARENT,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION_SPEC("ParserError",__tr_no_lookup("Parser error"),KVI_SMALLICON_PARSERERROR,KVI_RED,KVI_TRANSPARENT,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION_SPEC("ParserWarning",__tr_no_lookup("Parser warning"),KVI_SMALLICON_PARSERWARNING,KVI_RED,KVI_TRANSPARENT,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("HostLookup",__tr_no_lookup("Host lookup result"),KVI_SMALLICON_SERVER,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("SocketMessage",__tr_no_lookup("Socket message"),KVI_SMALLICON_SOCKETMESSAGE,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("SocketWarning",__tr_no_lookup("Socket warning"),KVI_SMALLICON_SOCKETWARNING,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION_SPEC("SocketError",__tr_no_lookup("Socket error"),KVI_SMALLICON_SOCKETERROR,KVI_RED,KVI_TRANSPARENT,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION_SPEC("SystemError",__tr_no_lookup("System error"),KVI_SMALLICON_SYSTEMERROR,KVI_RED,KVI_TRANSPARENT,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("Raw",__tr_no_lookup("Raw data to server"),KVI_SMALLICON_RAW,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("Connection",__tr_no_lookup("Connection status"),KVI_SMALLICON_WORLD,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("SystemWarning",__tr_no_lookup("System warning"),KVI_SMALLICON_SYSTEMWARNING,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("SystemMessage",__tr_no_lookup("System message"),KVI_SMALLICON_SYSTEMMESSAGE,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("UnhandledReply",__tr_no_lookup("Unhandled server reply"),KVI_SMALLICON_UNHANDLED,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("ServerInfo",__tr_no_lookup("Server information"),KVI_SMALLICON_SERVERINFO,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("Motd",__tr_no_lookup("Server Message of the Day"),KVI_SMALLICON_MOTD,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("ServerPing",__tr_no_lookup("Server ping"),KVI_SMALLICON_SERVERPING,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("Join",__tr_no_lookup("Join message"),KVI_SMALLICON_JOIN,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("Part",__tr_no_lookup("Part message"),KVI_SMALLICON_PART,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("Unrecognized",__tr_no_lookup("Unrecognized/broken message"),KVI_SMALLICON_UNRECOGNIZED,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("Topic",__tr_no_lookup("Topic message"),KVI_SMALLICON_TOPIC,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("OwnPrivateMessage",__tr_no_lookup("Own private message"),KVI_SMALLICON_OWNPRIVMSG,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("ChannelPrivateMessage",__tr_no_lookup("Channel private message"),KVI_SMALLICON_CHANPRIVMSG,KVI_MSGTYPE_LEVEL_4),
+ MSGTYPE_OPTION("QueryPrivateMessage",__tr_no_lookup("Query private message"),KVI_SMALLICON_QUERYPRIVMSG,KVI_MSGTYPE_LEVEL_4),
+ MSGTYPE_OPTION("CtcpReply",__tr_no_lookup("CTCP reply"),KVI_SMALLICON_CTCPREPLY,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("CtcpRequestReplied",__tr_no_lookup("CTCP request replied"),KVI_SMALLICON_CTCPREQUESTREPLIED,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("CtcpRequestIgnored",__tr_no_lookup("CTCP request ignored"),KVI_SMALLICON_CTCPREQUESTIGNORED,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("CtcpRequestFlood",__tr_no_lookup("CTCP request flood warning"),KVI_SMALLICON_CTCPREQUESTFLOOD,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("CtcpRequestUnknown",__tr_no_lookup("CTCP request unknown"),KVI_SMALLICON_CTCPREQUESTUNKNOWN,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("Action",__tr_no_lookup("User action"),KVI_SMALLICON_ACTION,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("AvatarChange",__tr_no_lookup("Avatar change"),KVI_SMALLICON_AVATAR,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("Quit",__tr_no_lookup("Quit message"),KVI_SMALLICON_QUIT,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("Split",__tr_no_lookup("Split message"),KVI_SMALLICON_SPLIT,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("QuitSplit",__tr_no_lookup("Quit on netsplit message"),KVI_SMALLICON_QUITSPLIT,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("Nick",__tr_no_lookup("Nick changes"),KVI_SMALLICON_NICK,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("Op",__tr_no_lookup("+o mode change"),KVI_SMALLICON_OP,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("Deop",__tr_no_lookup("-o mode change"),KVI_SMALLICON_DEOP,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("Voice",__tr_no_lookup("+v mode change"),KVI_SMALLICON_VOICE,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("Devoice",__tr_no_lookup("-v mode change"),KVI_SMALLICON_DEVOICE,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("Mode",__tr_no_lookup("Multiple user mode change"),KVI_SMALLICON_MODE,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("Key",__tr_no_lookup("Channel key change"),KVI_SMALLICON_KEY,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("Limit",__tr_no_lookup("Channel limit change"),KVI_SMALLICON_LIMIT,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("Ban",__tr_no_lookup("+b mode change"),KVI_SMALLICON_BAN,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("Unban",__tr_no_lookup("-b mode change"),KVI_SMALLICON_UNBAN,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("BanExcept",__tr_no_lookup("+e mode change"),KVI_SMALLICON_BANEXCEPT,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("BanUnexcept",__tr_no_lookup("-e mode change"),KVI_SMALLICON_BANUNEXCEPT,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("InviteExcept",__tr_no_lookup("+I mode change"),KVI_SMALLICON_INVITEEXCEPT,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("InviteUnexcept",__tr_no_lookup("-I mode change"),KVI_SMALLICON_INVITEUNEXCEPT,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("ChanMode",__tr_no_lookup("Multiple channel mode change"),KVI_SMALLICON_CHANMODE,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("Who",__tr_no_lookup("Who reply"),KVI_SMALLICON_WHO,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("DccRequest",__tr_no_lookup("DCC request"),KVI_SMALLICON_DCCREQUEST,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("DccMsg",__tr_no_lookup("DCC message"),KVI_SMALLICON_DCCMSG,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("DccError",__tr_no_lookup("DCC error"),KVI_SMALLICON_DCCERROR,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("NicknameProblem",__tr_no_lookup("Nickname problem"),KVI_SMALLICON_NICKNAMEPROBLEM,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("WhoisUser",__tr_no_lookup("Whois user reply"),KVI_SMALLICON_WHOISUSER,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("WhoisChannels",__tr_no_lookup("Whois channels reply"),KVI_SMALLICON_WHOISCHANNELS,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("WhoisIdle",__tr_no_lookup("Whois idle reply"),KVI_SMALLICON_WHOISIDLE,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("WhoisServer",__tr_no_lookup("Whois server reply"),KVI_SMALLICON_WHOISSERVER,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("WhoisOther",__tr_no_lookup("Whois other reply"),KVI_SMALLICON_WHOISOTHER,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("CreationTime",__tr_no_lookup("Channel creation time reply"),KVI_SMALLICON_TIME,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("NotifyOnLine",__tr_no_lookup("Notify list joins"),KVI_SMALLICON_NOTIFYONLINE,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("NotifyOffLine",__tr_no_lookup("Notify list leaves"),KVI_SMALLICON_NOTIFYOFFLINE,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("OwnPrivmsgCrypted",__tr_no_lookup("Own encrypted private message"),KVI_SMALLICON_OWNPRIVMSGCRYPTED,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("ChanPrivmsgCrypted",__tr_no_lookup("Channel encrypted private message"),KVI_SMALLICON_CHANPRIVMSGCRYPTED,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("QueryPrivmsgCrypted",__tr_no_lookup("Query encrypted private message"),KVI_SMALLICON_QUERYPRIVMSGCRYPTED,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("DccChatMsg",__tr_no_lookup("DCC chat message"),KVI_SMALLICON_DCCCHATMSG,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("DccChatMsgCrypted",__tr_no_lookup("Encrypted DCC chat message"),KVI_SMALLICON_DCCCHATMSGCRYPTED,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("Irc",__tr_no_lookup("Login operations completed"),KVI_SMALLICON_IRC,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("Kick",__tr_no_lookup("Kick action"),KVI_SMALLICON_KICK,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("Links",__tr_no_lookup("Links reply"),KVI_SMALLICON_LINKS,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("Spam",__tr_no_lookup("Spam report"),KVI_SMALLICON_SPAM,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("Icq",__tr_no_lookup("ICQ message"),KVI_SMALLICON_ICQ,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("IcqMessage",__tr_no_lookup("ICQ user-message"),KVI_SMALLICON_MESSAGE,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("IcqMessageSent",__tr_no_lookup("Outgoing ICQ user-message"),KVI_SMALLICON_MESSAGESENT,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("ChannelNotice",__tr_no_lookup("Channel notice"),KVI_SMALLICON_CHANNELNOTICE,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("ChannelNoticeCrypted",__tr_no_lookup("Encrypted channel notice"),KVI_SMALLICON_CHANNELNOTICECRYPTED,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("QueryNotice",__tr_no_lookup("Query notice"),KVI_SMALLICON_QUERYNOTICE,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("QueryNoticeCrypted",__tr_no_lookup("Encrypted query notice"),KVI_SMALLICON_QUERYNOTICECRYPTED,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("ServerNotice",__tr_no_lookup("Server notice"),KVI_SMALLICON_SERVERNOTICE,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("HalfOp",__tr_no_lookup("Halfop mode change"),KVI_SMALLICON_HALFOP,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("CtcpReplyUnknown",__tr_no_lookup("Unknown CTCP reply"),KVI_SMALLICON_CTCPREPLYUNKNOWN,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("NickServ",__tr_no_lookup("NickServ message"),KVI_SMALLICON_NICKSERV,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("ChanServ",__tr_no_lookup("ChanServ message"),KVI_SMALLICON_CHANSERV,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("Away",__tr_no_lookup("Away message"),KVI_SMALLICON_AWAY,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("Ident",__tr_no_lookup("Ident message"),KVI_SMALLICON_IDENT,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("List",__tr_no_lookup("Channel list message"),KVI_SMALLICON_LIST,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("HalfDeOp",__tr_no_lookup("Half-deop mode change"),KVI_SMALLICON_HALFDEOP,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("Invite",__tr_no_lookup("Invite message"),KVI_SMALLICON_INVITE,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("Multimedia",__tr_no_lookup("Multimedia message"),KVI_SMALLICON_MULTIMEDIA,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("QueryTrace",__tr_no_lookup("Query trace message"),KVI_SMALLICON_QUERYTRACE,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("Wallops",__tr_no_lookup("Wallops message"),KVI_SMALLICON_WALLOPS,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("JoinError",__tr_no_lookup("Join error message"),KVI_SMALLICON_NOCHANNEL,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("BroadcastPrivmsg",__tr_no_lookup("Broadcast private message"),KVI_SMALLICON_BROADCASTPRIVMSG,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("BroadcastNotice",__tr_no_lookup("Broadcast notice"),KVI_SMALLICON_BROADCASTNOTICE,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("MeKick",__tr_no_lookup("Am kicked"),KVI_SMALLICON_MEKICK,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION("MeOp",__tr_no_lookup("Am op'd"),KVI_SMALLICON_MEOP,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION("MeVoice",__tr_no_lookup("Am voiced"),KVI_SMALLICON_MEVOICE,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION("MeDeOp",__tr_no_lookup("Am deop'd"),KVI_SMALLICON_MEDEOP,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION("MeDeVoice",__tr_no_lookup("Am devoiced"),KVI_SMALLICON_MEDEVOICE,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION("MeHalfOp",__tr_no_lookup("Am halfop'd"),KVI_SMALLICON_MEHALFOP,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION("MeDeHalfOp",__tr_no_lookup("Am de-halfop'd"),KVI_SMALLICON_MEDEHALFOP,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION("MeBan",__tr_no_lookup("Ban matching my mask"),KVI_SMALLICON_MEBAN,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION("MeUnban",__tr_no_lookup("Unban matching my mask"),KVI_SMALLICON_MEUNBAN,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION("MeBanExcept",__tr_no_lookup("Ban exception matching my mask"),KVI_SMALLICON_MEBANEXCEPT,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION("MeBanUnExcept",__tr_no_lookup("Ban unexception matching my mask"),KVI_SMALLICON_MEBANUNEXCEPT,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION("MeInviteExcept",__tr_no_lookup("Invite exception matching my mask"),KVI_SMALLICON_MEINVITEEXCEPT,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION("MeInviteUnexcept",__tr_no_lookup("Invite unexception matching my mask"),KVI_SMALLICON_MEINVITEUNEXCEPT,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION("Ignore",__tr_no_lookup("Ignored user message"),KVI_SMALLICON_IGNORE,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("Stats",__tr_no_lookup("Server statistics"),KVI_SMALLICON_STATS,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("SSL",__tr_no_lookup("SSL message"),KVI_SMALLICON_SSL,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("Search",__tr_no_lookup("Search"),KVI_SMALLICON_SEARCH,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("GenericSuccess",__tr_no_lookup("Generic success"),KVI_SMALLICON_CYANSQUARE,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION("GenericStatus",__tr_no_lookup("Generic status"),KVI_SMALLICON_GREENSQUARE,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("GenericVerbose",__tr_no_lookup("Generic verbose message"),KVI_SMALLICON_DKGREENSQUARE,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("GenericWarning",__tr_no_lookup("Generic warning"),KVI_SMALLICON_YELLOWSQUARE,KVI_MSGTYPE_LEVEL_3),
+ MSGTYPE_OPTION_SPEC("GenericError",__tr_no_lookup("Generic error"),KVI_SMALLICON_REDSQUARE,KVI_RED,KVI_TRANSPARENT,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION_SPEC("GenericCritical",__tr_no_lookup("Generic critical error"),KVI_SMALLICON_BLACKSQUARE,KVI_RED,KVI_TRANSPARENT,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION("ChanAdmin",__tr_no_lookup("Chan admin status set"),KVI_SMALLICON_CHANADMIN,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION("ChanUnAdmin",__tr_no_lookup("Chan admin status unset"),KVI_SMALLICON_CHANUNADMIN,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION("MeChanAdmin",__tr_no_lookup("Own chan admin status set"),KVI_SMALLICON_MECHANADMIN,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION("MeChanUnAdmin",__tr_no_lookup("Own chan admin status unset"),KVI_SMALLICON_MECHANUNADMIN,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION("UserOp",__tr_no_lookup("Userop mode change"),KVI_SMALLICON_USEROP,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("UserDeOp",__tr_no_lookup("User-deop mode change"),KVI_SMALLICON_DEUSEROP,KVI_MSGTYPE_LEVEL_2),
+ MSGTYPE_OPTION("MeUserOp",__tr_no_lookup("Am userop'd"),KVI_SMALLICON_MEUSEROP,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION("MeDeUserOp",__tr_no_lookup("Am de-userop'd"),KVI_SMALLICON_MEDEUSEROP,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION_SPEC("Verbose",__tr_no_lookup("Verbose/Debug"),KVI_SMALLICON_BINARYTEXT,KVI_DARKGRAY,KVI_TRANSPARENT,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("ChanOwner",__tr_no_lookup("Chan owner status set"),KVI_SMALLICON_CHANOWNER,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION("ChanUnOwner",__tr_no_lookup("Chan owner status unset"),KVI_SMALLICON_CHANUNOWNER,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION("MeChanOwner",__tr_no_lookup("Own chan owner status set"),KVI_SMALLICON_MECHANOWNER,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION("MeChanUnOwner",__tr_no_lookup("Own chan owner status unset"),KVI_SMALLICON_MECHANUNOWNER,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION_SPEC("ServerError",__tr_no_lookup("Server error"),KVI_SMALLICON_SERVERERROR,KVI_RED,KVI_TRANSPARENT,KVI_MSGTYPE_LEVEL_5),
+ MSGTYPE_OPTION_SPEC("Help",__tr_no_lookup("Help"),KVI_SMALLICON_HELP,KVI_DARKGREEN,KVI_TRANSPARENT,KVI_MSGTYPE_LEVEL_1),
+ MSGTYPE_OPTION("TextEncoding",__tr_no_lookup("Text Encoding Server message"),KVI_SMALLICON_TEXTENCODING,KVI_MSGTYPE_LEVEL_1),
+ // TODO: add icon and check what level means
+ // Pragma: the message level is a warning level that is rendered in the taskbar
+ // messages with higher level are rendered with more visible color (i.e. red)
+ // messages with very high level might flash the tray and end up in the notifier
+ // level 1 or 2 for standard torrent messages is ok
+ MSGTYPE_OPTION("BitTorrent",__tr_no_lookup("BitTorrent message"),KVI_SMALLICON_MULTIMEDIA,KVI_MSGTYPE_LEVEL_2)
+};
+
+static const char * options_section_table[KVI_NUM_OPTION_SECT_FLAGS] =
+{
+ "None", "Frame", "Mdi", "Windows",
+ "TaskBar", "IrcView", "MsgType", "MircColor",
+ "Input", "UserParser", "Connection", "IrcSocket",
+ "User", "UserListView","Label", "Modules",
+ "Ctcp", "Dcc", "Gui", "IrcToolBar",
+ "Logging", "AntiSpam", "Avatar", "Url",
+ "Recent", "Geometry"
+};
+
+
+static void config_set_section(int flag,KviConfig * cfg)
+{
+ int index = flag & KviOption_sectMask;
+ if((index < KVI_NUM_OPTION_SECT_FLAGS) && (index >= 0))
+ {
+ cfg->setGroup(options_section_table[index]);
+ } else cfg->setGroup(""); // Default group
+}
+
+void KviApp::loadOptions()
+{
+ KviStr buffer;
+ if(getReadOnlyConfigPath(buffer,KVI_CONFIGFILE_MAIN))
+ {
+ KviConfig cfg(buffer.ptr(),KviConfig::Read);
+
+ int prg = 12;
+ int i;
+
+ #define READ_OPTIONS(_num,_table,_readFnc) \
+ for(i=0;i<_num;i++) \
+ { \
+ config_set_section(_table[i].flags,&cfg); \
+ _table[i].option = cfg._readFnc(_table[i].name,_table[i].option); \
+ } \
+ prg += 3; \
+ KVI_SPLASH_SET_PROGRESS(prg)
+
+ READ_OPTIONS(KVI_NUM_RECT_OPTIONS,g_rectOptionsTable,readRectEntry)
+ READ_OPTIONS(KVI_NUM_BOOL_OPTIONS,g_boolOptionsTable,readBoolEntry)
+ READ_OPTIONS(KVI_NUM_STRING_OPTIONS,g_stringOptionsTable,readQStringEntry)
+ READ_OPTIONS(KVI_NUM_COLOR_OPTIONS,g_colorOptionsTable,readColorEntry)
+ READ_OPTIONS(KVI_NUM_PIXMAP_OPTIONS,g_pixmapOptionsTable,readPixmapEntry)
+ READ_OPTIONS(KVI_NUM_UINT_OPTIONS,g_uintOptionsTable,readUIntEntry)
+ READ_OPTIONS(KVI_NUM_FONT_OPTIONS,g_fontOptionsTable,readFontEntry)
+ READ_OPTIONS(KVI_NUM_MSGTYPE_OPTIONS,g_msgtypeOptionsTable,readMsgTypeEntry)
+ READ_OPTIONS(KVI_NUM_STRINGLIST_OPTIONS,g_stringlistOptionsTable,readStringListEntry)
+ READ_OPTIONS(KVI_NUM_MIRCCOLOR_OPTIONS,g_mirccolorOptionsTable,readColorEntry)
+ READ_OPTIONS(KVI_NUM_ICCOLOR_OPTIONS,g_iccolorOptionsTable,readColorEntry)
+
+ for(i=0;i<KVI_NUM_STRING_OPTIONS;i++)
+ {
+ if(g_stringOptionsTable[i].flags & KviOption_encodePath)
+ KviStringConversion::decodePath(g_stringOptionsTable[i].option);
+ }
+
+ for(i=0;i<KVI_NUM_STRINGLIST_OPTIONS;i++)
+ {
+ if(g_stringlistOptionsTable[i].flags & KviOption_encodePath)
+ KviStringConversion::decodePath(g_stringlistOptionsTable[i].option);
+ }
+
+ #undef READ_OPTIONS
+ } // else already have the defaults
+}
+
+void KviApp::saveOptions()
+{
+ QString buffer;
+
+ saveRecentChannels();
+
+ getLocalKvircDirectory(buffer,Config,KVI_CONFIGFILE_MAIN);
+ KviConfig cfg(buffer,KviConfig::Write);
+
+ int i;
+
+ #define WRITE_OPTIONS(_num,_table) \
+ for(i=0;i<_num;i++) \
+ { \
+ config_set_section(_table[i].flags,&cfg); \
+ cfg.writeEntry(_table[i].name,_table[i].option); \
+ }
+
+ WRITE_OPTIONS(KVI_NUM_RECT_OPTIONS,g_rectOptionsTable)
+ WRITE_OPTIONS(KVI_NUM_BOOL_OPTIONS,g_boolOptionsTable)
+ for(i=0;i<KVI_NUM_STRING_OPTIONS;i++)
+ {
+ if(g_stringOptionsTable[i].flags & KviOption_encodePath)
+ KviStringConversion::encodePath(g_stringOptionsTable[i].option);
+ }
+ WRITE_OPTIONS(KVI_NUM_STRING_OPTIONS,g_stringOptionsTable)
+ for(i=0;i<KVI_NUM_STRING_OPTIONS;i++)
+ {
+ if(g_stringOptionsTable[i].flags & KviOption_encodePath)
+ KviStringConversion::decodePath(g_stringOptionsTable[i].option);
+ }
+ WRITE_OPTIONS(KVI_NUM_COLOR_OPTIONS,g_colorOptionsTable)
+ WRITE_OPTIONS(KVI_NUM_PIXMAP_OPTIONS,g_pixmapOptionsTable)
+ WRITE_OPTIONS(KVI_NUM_UINT_OPTIONS,g_uintOptionsTable)
+ WRITE_OPTIONS(KVI_NUM_FONT_OPTIONS,g_fontOptionsTable)
+ WRITE_OPTIONS(KVI_NUM_MSGTYPE_OPTIONS,g_msgtypeOptionsTable)
+ for(i=0;i<KVI_NUM_STRINGLIST_OPTIONS;i++)
+ {
+ if(g_stringlistOptionsTable[i].flags & KviOption_encodePath)
+ KviStringConversion::encodePath(g_stringlistOptionsTable[i].option);
+ }
+ WRITE_OPTIONS(KVI_NUM_STRINGLIST_OPTIONS,g_stringlistOptionsTable)
+ for(i=0;i<KVI_NUM_STRINGLIST_OPTIONS;i++)
+ {
+ if(g_stringlistOptionsTable[i].flags & KviOption_encodePath)
+ KviStringConversion::decodePath(g_stringlistOptionsTable[i].option);
+ }
+ WRITE_OPTIONS(KVI_NUM_MIRCCOLOR_OPTIONS,g_mirccolorOptionsTable)
+ WRITE_OPTIONS(KVI_NUM_ICCOLOR_OPTIONS,g_iccolorOptionsTable)
+
+ #undef WRITE_OPTIONS
+}
+
+
+#undef WRITE_OPTIONS
+
+#define WRITE_OPTIONS(_num,_table) \
+ for(i=0;i<_num;i++) \
+ { \
+ if(_table[i].flags & KviOption_groupTheme) \
+ cfg.writeEntry(_table[i].name,_table[i].option); \
+ }
+
+namespace KviTheme
+{
+ // utility functions for the KviTheme namespace (kvi_theme.h)
+ // that are implemented here for convenience (in saving the options)
+ bool save(KviThemeInfo &options)
+ {
+ QString szD = options.absoluteDirectory();
+
+ if(szD.isEmpty())
+ {
+ options.setLastError(__tr2qs("Missing absolute directory for the theme information"));
+ return false;
+ }
+
+ if(!KviFileUtils::directoryExists(szD))
+ {
+ if(!KviFileUtils::makeDir(szD))
+ {
+ options.setLastError(__tr2qs("Failed to create the theme directory"));
+ return false;
+ }
+ }
+
+ szD.append(KVI_PATH_SEPARATOR_CHAR);
+ szD.append(KVI_THEMEINFO_FILE_NAME);
+
+ if(!options.save(szD))
+ {
+ return false;
+ }
+
+ szD = options.absoluteDirectory();
+ szD.append(KVI_PATH_SEPARATOR_CHAR);
+ szD.append(KVI_THEMEDATA_FILE_NAME);
+
+ KviConfig cfg(szD,KviConfig::Write);
+
+ cfg.setGroup(KVI_THEMEDATA_CONFIG_GROUP);
+
+ int i;
+
+ WRITE_OPTIONS(KVI_NUM_RECT_OPTIONS,g_rectOptionsTable)
+ WRITE_OPTIONS(KVI_NUM_BOOL_OPTIONS,g_boolOptionsTable)
+ WRITE_OPTIONS(KVI_NUM_STRING_OPTIONS,g_stringOptionsTable)
+ WRITE_OPTIONS(KVI_NUM_COLOR_OPTIONS,g_colorOptionsTable)
+ WRITE_OPTIONS(KVI_NUM_UINT_OPTIONS,g_uintOptionsTable)
+ WRITE_OPTIONS(KVI_NUM_FONT_OPTIONS,g_fontOptionsTable)
+ WRITE_OPTIONS(KVI_NUM_MSGTYPE_OPTIONS,g_msgtypeOptionsTable)
+ WRITE_OPTIONS(KVI_NUM_STRINGLIST_OPTIONS,g_stringlistOptionsTable)
+ WRITE_OPTIONS(KVI_NUM_MIRCCOLOR_OPTIONS,g_mirccolorOptionsTable)
+ WRITE_OPTIONS(KVI_NUM_ICCOLOR_OPTIONS,g_iccolorOptionsTable)
+
+ #undef WRITE_OPTIONS
+
+ // the pixmap options need special processing
+ for(i=0;i<KVI_NUM_PIXMAP_OPTIONS;i++)
+ {
+ if(g_pixmapOptionsTable[i].flags & KviOption_groupTheme)
+ {
+ if(g_pixmapOptionsTable[i].option.pixmap())
+ {
+ QString szPixPath = options.absoluteDirectory();
+ szPixPath.append(KVI_PATH_SEPARATOR_CHAR);
+ QString szPixName = g_pixmapOptionsTable[i].name;
+ szPixName += ".png";
+ szPixPath += szPixName;
+
+ if(g_pixmapOptionsTable[i].option.pixmap()->save(szPixPath,"PNG"))
+ {
+ cfg.writeEntry(g_pixmapOptionsTable[i].name,szPixName);
+ } else {
+ // we ignore this error for now
+ debug("failed to save %s",szPixPath.utf8().data());
+ cfg.writeEntry(g_pixmapOptionsTable[i].name,"");
+ }
+ } else {
+ cfg.writeEntry(g_pixmapOptionsTable[i].name,"");
+ }
+ }
+ }
+
+ cfg.writeEntry("stringIconThemeSubdir",options.subdirectory());
+
+ // find all the "kvi_bigicon" images that we can find in the main pics directory
+ QString szPicsPath;
+
+ g_pApp->getGlobalKvircDirectory(szPicsPath,KviApp::Pics);
+ QDir d(szPicsPath);
+ QStringList sl = d.entryList("kvi_bigicon_*.png",QDir::Files);
+
+ for(QStringList::Iterator it=sl.begin();it != sl.end();it++)
+ {
+ KviCachedPixmap * p = g_pIconManager->getPixmapWithCache(*it);
+ if(p)
+ {
+ QString szPixPath = options.absoluteDirectory();
+ szPixPath.append(KVI_PATH_SEPARATOR_CHAR);
+ szPixPath += *it;
+
+ if(!KviFileUtils::copyFile(p->path(),szPixPath))
+ {
+ options.setLastError(__tr2qs("Failed to save one of the theme images"));
+ return false;
+ }
+ }
+ }
+
+
+ szD = options.absoluteDirectory();
+ szD.append(KVI_PATH_SEPARATOR_CHAR);
+ szD.append(KVI_SMALLICONS_SUBDIRECTORY);
+
+ if(!KviFileUtils::makeDir(szD))
+ {
+ options.setLastError(__tr2qs("Failed to create the theme subdirectory"));
+ return false;
+ }
+
+ // We actually need to *save* the small icons since
+ // we have a compatibility mode that can load them from
+ // the old format kvi_smallicon_XY.png multiimage libraries.
+
+ for(int j=0;j<KVI_NUM_SMALL_ICONS;j++)
+ {
+ QPixmap * pix = g_pIconManager->getSmallIcon(j);
+
+ QString szPixPath = options.absoluteDirectory();
+ szPixPath.append(KVI_PATH_SEPARATOR_CHAR);
+ szPixPath.append(KVI_SMALLICONS_SUBDIRECTORY);
+ szPixPath.append(KVI_PATH_SEPARATOR_CHAR);
+ szPixPath.append("kcs_");
+ szPixPath.append(g_pIconManager->getSmallIconName(j));
+ szPixPath.append(".png");
+
+ if(!pix->save(szPixPath,"PNG",90))
+ {
+ options.setLastError(__tr2qs("Failed to save one of the theme images"));
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ bool load(const QString &themeDir,KviThemeInfo &buffer)
+ {
+ if(!buffer.loadFromDirectory(themeDir))
+ return false; // makes sure that themedata exists too
+
+ // reset the current theme subdir
+ KVI_OPTION_STRING(KviOption_stringIconThemeSubdir) = "";
+
+ // reset the splash screen pointer
+ QString szPointerFile;
+ g_pApp->getLocalKvircDirectory(szPointerFile,KviApp::Themes,"current-splash");
+ KviFileUtils::removeFile(szPointerFile);
+
+ QString szD = themeDir;
+ KviQString::ensureLastCharIs(szD,KVI_PATH_SEPARATOR_CHAR);
+ szD.append(KVI_THEMEDATA_FILE_NAME);
+
+ KviConfig cfg(szD,KviConfig::Read);
+
+ cfg.setGroup(KVI_THEMEDATA_CONFIG_GROUP);
+
+ int i;
+ int iResetFlags = 0;
+
+ #undef READ_OPTIONS
+
+ #define READ_OPTIONS(_num,_table,_readFnc) \
+ for(i=0;i<_num;i++) \
+ { \
+ if(_table[i].flags & KviOption_groupTheme) \
+ { \
+ if(cfg.hasKey(_table[i].name)) \
+ { \
+ iResetFlags |= (_table[i].flags & KviOption_resetMask); \
+ _table[i].option = cfg._readFnc(_table[i].name,_table[i].option); \
+ } \
+ } \
+ }
+
+ #define READ_ALL_OPTIONS(_num,_table,_readFnc) \
+ for(i=0;i<_num;i++) \
+ { \
+ if(cfg.hasKey(_table[i].name)) \
+ { \
+ iResetFlags |= (_table[i].flags & KviOption_resetMask); \
+ _table[i].option = cfg._readFnc(_table[i].name,_table[i].option); \
+ } \
+ }
+
+ READ_OPTIONS(KVI_NUM_RECT_OPTIONS,g_rectOptionsTable,readRectEntry)
+ READ_OPTIONS(KVI_NUM_BOOL_OPTIONS,g_boolOptionsTable,readBoolEntry)
+ READ_OPTIONS(KVI_NUM_STRING_OPTIONS,g_stringOptionsTable,readQStringEntry)
+ READ_OPTIONS(KVI_NUM_COLOR_OPTIONS,g_colorOptionsTable,readColorEntry)
+ READ_OPTIONS(KVI_NUM_UINT_OPTIONS,g_uintOptionsTable,readUIntEntry)
+ READ_OPTIONS(KVI_NUM_FONT_OPTIONS,g_fontOptionsTable,readFontEntry)
+ READ_ALL_OPTIONS(KVI_NUM_MSGTYPE_OPTIONS,g_msgtypeOptionsTable,readMsgTypeEntry)
+ READ_OPTIONS(KVI_NUM_STRINGLIST_OPTIONS,g_stringlistOptionsTable,readStringListEntry)
+ READ_OPTIONS(KVI_NUM_MIRCCOLOR_OPTIONS,g_mirccolorOptionsTable,readColorEntry)
+ READ_OPTIONS(KVI_NUM_ICCOLOR_OPTIONS,g_iccolorOptionsTable,readColorEntry)
+
+ #undef READ_OPTIONS
+ #undef READ_ALL_OPTIONS
+ KVI_OPTION_STRING(KviOption_stringIconThemeSubdir).stripWhiteSpace();
+
+
+ // the pixmap options need special processing
+ for(i=0;i<KVI_NUM_PIXMAP_OPTIONS;i++)
+ {
+ if(g_pixmapOptionsTable[i].flags & KviOption_groupTheme)
+ {
+ if(cfg.hasKey(g_pixmapOptionsTable[i].name))
+ {
+ QString szVal = cfg.readQStringEntry(g_pixmapOptionsTable[i].name,"");
+ szVal.stripWhiteSpace();
+ QString szBuffer;
+ if(!szVal.isEmpty())
+ {
+ g_pApp->findImage(szBuffer,szVal);
+ } else {
+ szBuffer = szVal;
+ }
+
+ KviStringConversion::fromString(szBuffer,g_pixmapOptionsTable[i].option);
+
+ // reset anyway
+ iResetFlags |= g_pixmapOptionsTable[i].flags & KviOption_resetMask;
+ }
+ }
+ }
+
+ // create the splash screen pointer if this theme has some pixmaps in it
+ if(!KVI_OPTION_STRING(KviOption_stringIconThemeSubdir).isEmpty())
+ KviFileUtils::writeFile(szPointerFile,KVI_OPTION_STRING(KviOption_stringIconThemeSubdir));
+
+ // force reloading of images anyway
+ g_pApp->optionResetUpdate(iResetFlags | KviOption_resetReloadImages);
+
+ return true;
+ }
+};
+
+void KviApp::listAvailableOptions(KviWindow *wnd)
+{
+ int i;
+
+ #define LIST_OPTIONS(__txt,__num,__table) \
+ wnd->output(KVI_OUT_SYSTEMMESSAGE,"%c%s%c",KVI_TEXT_BOLD,__txt,KVI_TEXT_BOLD); \
+ for(i = 0;i < __num;i++)wnd->outputNoFmt(KVI_OUT_SYSTEMMESSAGE,__table[i].name);
+
+ LIST_OPTIONS(__tr("Boolean options (1/0)"),KVI_NUM_BOOL_OPTIONS,g_boolOptionsTable)
+ LIST_OPTIONS(__tr("Rectangle options (x,y,width,height)"),KVI_NUM_RECT_OPTIONS,g_rectOptionsTable)
+ LIST_OPTIONS(__tr("String options (string value)"),KVI_NUM_STRING_OPTIONS,g_stringOptionsTable)
+ LIST_OPTIONS(__tr("Color options (#RRGGBB)"),KVI_NUM_COLOR_OPTIONS,g_colorOptionsTable)
+ LIST_OPTIONS(__tr("Mirccolor options (#RRGGBB)"),KVI_NUM_MIRCCOLOR_OPTIONS,g_mirccolorOptionsTable)
+ LIST_OPTIONS(__tr("Irc context color options (#RRGGBB)"),KVI_NUM_ICCOLOR_OPTIONS,g_iccolorOptionsTable)
+ LIST_OPTIONS(__tr("Pixmap options (image path)"),KVI_NUM_PIXMAP_OPTIONS,g_pixmapOptionsTable)
+ LIST_OPTIONS(__tr("Unsigned integer options (unsigned integer constant)"),KVI_NUM_UINT_OPTIONS,g_uintOptionsTable)
+ LIST_OPTIONS(__tr("Font options (family,pointsize,style,charset,weight,flags (biusf))"),KVI_NUM_FONT_OPTIONS,g_fontOptionsTable)
+ LIST_OPTIONS(__tr("Message color options (image_id,foreground,background,logFlag (0/1))"),KVI_NUM_MSGTYPE_OPTIONS,g_msgtypeOptionsTable)
+ LIST_OPTIONS(__tr("String list options (comma separated list of strings)"),KVI_NUM_STRINGLIST_OPTIONS,g_stringlistOptionsTable)
+
+ #undef LIST_OPTIONS
+}
+
+//using namespace KviStringConversion;
+
+bool KviApp::getOptionString(const char * optName,QString &buffer)
+{
+
+ #define GET_OPTION_STRING(__numOpt,__table,__prefix,__prefixLen) \
+ if(kvi_strEqualCIN(optName,__prefix,__prefixLen)) \
+ { \
+ for(int i=0;i < __numOpt;i++) \
+ { \
+ if(kvi_strEqualCI(optName,__table[i].name)) \
+ { \
+ KviStringConversion::toString(__table[i].option,buffer); \
+ return true; \
+ } \
+ } \
+ return false; \
+ }
+
+ // WARNING : stringlist prefix must go BEFORE the string prefix (otherwise it will match)
+
+ GET_OPTION_STRING(KVI_NUM_BOOL_OPTIONS,g_boolOptionsTable,KVI_BOOL_OPTIONS_PREFIX,KVI_BOOL_OPTIONS_PREFIX_LEN)
+ GET_OPTION_STRING(KVI_NUM_RECT_OPTIONS,g_rectOptionsTable,KVI_BOOL_OPTIONS_PREFIX,KVI_BOOL_OPTIONS_PREFIX_LEN)
+ GET_OPTION_STRING(KVI_NUM_STRINGLIST_OPTIONS,g_stringlistOptionsTable,KVI_STRINGLIST_OPTIONS_PREFIX,KVI_STRINGLIST_OPTIONS_PREFIX_LEN)
+ GET_OPTION_STRING(KVI_NUM_STRING_OPTIONS,g_stringOptionsTable,KVI_STRING_OPTIONS_PREFIX,KVI_STRING_OPTIONS_PREFIX_LEN)
+ GET_OPTION_STRING(KVI_NUM_COLOR_OPTIONS,g_colorOptionsTable,KVI_COLOR_OPTIONS_PREFIX,KVI_COLOR_OPTIONS_PREFIX_LEN)
+ GET_OPTION_STRING(KVI_NUM_MIRCCOLOR_OPTIONS,g_mirccolorOptionsTable,KVI_MIRCCOLOR_OPTIONS_PREFIX,KVI_MIRCCOLOR_OPTIONS_PREFIX_LEN)
+ GET_OPTION_STRING(KVI_NUM_ICCOLOR_OPTIONS,g_iccolorOptionsTable,KVI_ICCOLOR_OPTIONS_PREFIX,KVI_ICCOLOR_OPTIONS_PREFIX_LEN)
+ GET_OPTION_STRING(KVI_NUM_PIXMAP_OPTIONS,g_pixmapOptionsTable,KVI_PIXMAP_OPTIONS_PREFIX,KVI_PIXMAP_OPTIONS_PREFIX_LEN)
+ GET_OPTION_STRING(KVI_NUM_UINT_OPTIONS,g_uintOptionsTable,KVI_UINT_OPTIONS_PREFIX,KVI_UINT_OPTIONS_PREFIX_LEN)
+ GET_OPTION_STRING(KVI_NUM_FONT_OPTIONS,g_fontOptionsTable,KVI_FONT_OPTIONS_PREFIX,KVI_FONT_OPTIONS_PREFIX_LEN)
+ GET_OPTION_STRING(KVI_NUM_MSGTYPE_OPTIONS,g_msgtypeOptionsTable,KVI_MSGTYPE_OPTIONS_PREFIX,KVI_MSGTYPE_OPTIONS_PREFIX_LEN)
+ return false;
+
+ #undef GET_OPTION_STRING
+}
+
+void KviApp::optionResetUpdate(int flags)
+{
+ if(flags & KviOption_resetReloadImages)
+ {
+ g_pIconManager->reloadImages();
+ emit reloadImages();
+ }
+
+ if(flags & KviOption_resetUpdateAppFont)
+ {
+ updateApplicationFont();
+ }
+
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ if(flags & KviOption_resetUpdatePseudoTransparency)
+ {
+ triggerUpdatePseudoTransparency();
+ }
+#endif
+
+ if(flags & KviOption_resetRestartIdentd)
+ {
+ if(g_iIdentDaemonRunningUsers)
+ g_pFrame->executeInternalCommand(KVI_INTERNALCOMMAND_IDENT_STOP);
+
+ if(KVI_OPTION_BOOL(KviOption_boolUseIdentService) && !KVI_OPTION_BOOL(KviOption_boolUseIdentServiceOnlyOnConnect))
+ g_pFrame->executeInternalCommand(KVI_INTERNALCOMMAND_IDENT_START);
+ }
+
+ if(flags & KviOption_resetUpdateGui)
+ {
+ triggerUpdateGui();
+ }
+
+ if(flags & KviOption_resetUpdateTaskBar)
+ {
+ g_pFrame->recreateTaskBar();
+ }
+
+ if(flags & KviOption_resetRestartNotifyList)
+ {
+ g_pApp->restartNotifyLists();
+ }
+
+ if(flags & KviOption_resetRestartLagMeter)
+ {
+ g_pApp->restartLagMeters();
+ }
+
+ if(flags & KviOption_resetRecentChannels)
+ {
+ g_pApp->buildRecentChannels();
+ }
+}
+
+bool KviApp::setOptionValue(const char * optName,const QString &value)
+{
+
+ #define SET_OPTION_VALUE(__numOpt,__table,__prefix,__prefixLen) \
+ if(kvi_strEqualCIN(optName,__prefix,__prefixLen)) \
+ { \
+ for(int i=0;i < __numOpt;i++) \
+ { \
+ if(kvi_strEqualCI(optName,__table[i].name)) \
+ { \
+ if(!KviStringConversion::fromString(value,__table[i].option))return false; \
+ optionResetUpdate(__table[i].flags); \
+ return true; \
+ } \
+ } \
+ return false; \
+ }
+
+ SET_OPTION_VALUE(KVI_NUM_BOOL_OPTIONS,g_boolOptionsTable,KVI_BOOL_OPTIONS_PREFIX,KVI_BOOL_OPTIONS_PREFIX_LEN)
+ SET_OPTION_VALUE(KVI_NUM_RECT_OPTIONS,g_rectOptionsTable,KVI_BOOL_OPTIONS_PREFIX,KVI_BOOL_OPTIONS_PREFIX_LEN)
+ SET_OPTION_VALUE(KVI_NUM_STRINGLIST_OPTIONS,g_stringlistOptionsTable,KVI_STRINGLIST_OPTIONS_PREFIX,KVI_STRINGLIST_OPTIONS_PREFIX_LEN)
+ SET_OPTION_VALUE(KVI_NUM_STRING_OPTIONS,g_stringOptionsTable,KVI_STRING_OPTIONS_PREFIX,KVI_STRING_OPTIONS_PREFIX_LEN)
+ SET_OPTION_VALUE(KVI_NUM_COLOR_OPTIONS,g_colorOptionsTable,KVI_COLOR_OPTIONS_PREFIX,KVI_COLOR_OPTIONS_PREFIX_LEN)
+ SET_OPTION_VALUE(KVI_NUM_MIRCCOLOR_OPTIONS,g_mirccolorOptionsTable,KVI_MIRCCOLOR_OPTIONS_PREFIX,KVI_MIRCCOLOR_OPTIONS_PREFIX_LEN)
+ SET_OPTION_VALUE(KVI_NUM_ICCOLOR_OPTIONS,g_iccolorOptionsTable,KVI_ICCOLOR_OPTIONS_PREFIX,KVI_ICCOLOR_OPTIONS_PREFIX_LEN)
+// SET_OPTION_VALUE(KVI_NUM_PIXMAP_OPTIONS,g_pixmapOptionsTable,KVI_PIXMAP_OPTIONS_PREFIX,KVI_PIXMAP_OPTIONS_PREFIX_LEN)
+ SET_OPTION_VALUE(KVI_NUM_UINT_OPTIONS,g_uintOptionsTable,KVI_UINT_OPTIONS_PREFIX,KVI_UINT_OPTIONS_PREFIX_LEN)
+ SET_OPTION_VALUE(KVI_NUM_FONT_OPTIONS,g_fontOptionsTable,KVI_FONT_OPTIONS_PREFIX,KVI_FONT_OPTIONS_PREFIX_LEN)
+ SET_OPTION_VALUE(KVI_NUM_MSGTYPE_OPTIONS,g_msgtypeOptionsTable,KVI_MSGTYPE_OPTIONS_PREFIX,KVI_MSGTYPE_OPTIONS_PREFIX_LEN)
+
+ if(kvi_strEqualCI(optName,"stringlistRecentChannels"))
+ buildRecentChannels();
+ // The pixmap options have special treating
+ if(kvi_strEqualCIN(optName,KVI_PIXMAP_OPTIONS_PREFIX,KVI_PIXMAP_OPTIONS_PREFIX_LEN))
+ {
+ // We lookup the image path (so we allow also relative paths for this option type)
+ QString szVal = value;
+ szVal.stripWhiteSpace();
+ QString szBuffer;
+ if(!szVal.isEmpty())
+ {
+ findImage(szBuffer,szVal);
+ } else {
+ szBuffer = szVal;
+ }
+
+ for(int i=0;i < KVI_NUM_PIXMAP_OPTIONS;i++)
+ {
+ if(kvi_strEqualCI(optName,g_pixmapOptionsTable[i].name))
+ {
+ if(!KviStringConversion::fromString(szBuffer,g_pixmapOptionsTable[i].option))return false;
+ optionResetUpdate(g_pixmapOptionsTable[i].flags);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ return false;
+
+ #undef SET_OPTION_VALUE
+}
diff --git a/src/kvirc/kernel/kvi_options.h b/src/kvirc/kernel/kvi_options.h
new file mode 100644
index 00000000..1bd264e9
--- /dev/null
+++ b/src/kvirc/kernel/kvi_options.h
@@ -0,0 +1,737 @@
+#ifndef _KVI_OPTIONS_H_
+#define _KVI_OPTIONS_H_
+
+//=============================================================================
+//
+// File : kvi_options.h
+// Creation date : Tue Jun 20 2000 12:42:07 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_string.h"
+#include "kvi_pixmap.h"
+#include "kvi_msgtype.h"
+
+#include <qrect.h>
+#include <qpixmap.h>
+#include <qcolor.h>
+#include <qfont.h>
+#include <qstringlist.h>
+
+// option structures
+
+
+#define DECLARE_OPTION_STRUCT(_cname,_type) \
+ class _cname \
+ { \
+ public: \
+ const char * name; \
+ _type option; \
+ int flags; \
+ public: \
+ _cname(const char * n,_type o,int f) \
+ : name(n) , option(o) , flags(f) {}; \
+ ~_cname() {}; \
+ };
+
+DECLARE_OPTION_STRUCT(KviBoolOption,bool)
+DECLARE_OPTION_STRUCT(KviRectOption,QRect)
+DECLARE_OPTION_STRUCT(KviStringOption,QString)
+DECLARE_OPTION_STRUCT(KviColorOption,QColor)
+DECLARE_OPTION_STRUCT(KviFontOption,QFont)
+DECLARE_OPTION_STRUCT(KviPixmapOption,KviPixmap)
+//DECLARE_OPTION_STRUCT(KviIntOption,int)
+DECLARE_OPTION_STRUCT(KviUIntOption,unsigned int)
+DECLARE_OPTION_STRUCT(KviMsgTypeOption,KviMsgType)
+DECLARE_OPTION_STRUCT(KviStringListOption,QStringList)
+
+#define KVI_COLOR_EXT_USER_OP 50
+#define KVI_COLOR_EXT_USER_HALFOP 51
+#define KVI_COLOR_EXT_USER_ADMIN 52
+#define KVI_COLOR_EXT_USER_OWNER 53
+#define KVI_COLOR_EXT_USER_VOICE 54
+#define KVI_COLOR_EXT_USER_USEROP 55
+#define KVI_COLOR_EXT_USER_NORMAL 56
+#define KVI_COLOR_CUSTOM 255
+#define KVI_COLOR_OWN 254
+
+// option entry indexes
+
+#define KVI_RECT_OPTIONS_PREFIX "rect"
+#define KVI_RECT_OPTIONS_PREFIX_LEN 4
+
+#define KviOption_rectFrameGeometry 0 /* internal */
+/* FIXME: this should be in the options module (local config) ? */
+#define KviOption_rectGeneralOptionsDialogGeometry 1 /* internal */
+/* FIXME: this should be in the regusers module (local config) ? */
+#define KviOption_rectRegisteredUsersDialogGeometry 2 /* internal */
+
+#define KVI_NUM_RECT_OPTIONS 3
+
+
+
+#define KVI_BOOL_OPTIONS_PREFIX "bool"
+#define KVI_BOOL_OPTIONS_PREFIX_LEN 4
+
+#define KviOption_boolWindowsRememberProperties 0 /* interface::features::global */
+#define KviOption_boolIrcViewShowImages 1 /* interface::features::components::ircview */
+#define KviOption_boolIrcViewTimestamp 2 /* interface::features::components::ircview */
+#define KviOption_boolIrcViewUrlHighlighting 3 /* interface::features::components::ircview */
+#define KviOption_boolIrcViewWrapMargin 4 /* interface::features::components::ircview */
+#define KviOption_boolInputHistoryCursorAtEnd 5 /* interface::features::components::input */
+#define KviOption_boolAvoidParserWarnings 6 /* ircengine::uparser */
+#define KviOption_boolUseProxyHost 7 /* transport */
+#define KviOption_boolShowGeneralOptionsDialogAsToplevel 8 /* interface::features::global */
+#define KviOption_boolForceBrutalQuit 9 /* irc */
+#define KviOption_boolShowPingPong 10 /* ircoutput */
+#define KviOption_boolPopupNotifierOnNewQueryMessages 11 /* query */
+#define KviOption_boolShowExtendedServerInfo 12 /* ircoutput */
+#define KviOption_boolEchoNumericTopic 13 /* ircoutput */
+#define KviOption_boolShowOwnParts 14 /* ircoutput */
+#define KviOption_boolUseAntiSpamOnPrivmsg 15 /* ircengine::outputcontrol::antispam */
+#define KviOption_boolUseExtendedPrivmsgView 16 /* ircengine::outputcontrol::privmsg */
+#define KviOption_boolShowUserAndHostInPrivmsgView 17 /* ircengine::outputcontrol::privmsg */
+#define KviOption_boolUseWordHighlighting 18 /* ircengine::outputcontrol::highlighting */
+#define KviOption_boolUseBigIcons 19 /* internal */
+#define KviOption_boolCleanupUnusedModules 20 /* uparser ? */
+#define KviOption_boolIgnoreCtcpPing 21 /* ctcp */
+#define KviOption_boolIgnoreCtcpVersion 22 /* ctcp */
+#define KviOption_boolUseCtcpFloodProtection 23 /* ctcp */
+#define KviOption_boolDisableBrokenEventHandlers 24 /* ircengine::uparser */
+#define KviOption_boolIgnoreCtcpClientinfo 25 /* ctcp */
+#define KviOption_boolIgnoreCtcpUserinfo 26 /* ctcp */
+#define KviOption_boolIgnoreCtcpFinger 27 /* ctcp */
+#define KviOption_boolIgnoreCtcpSource 28 /* ctcp */
+#define KviOption_boolIgnoreCtcpTime 29 /* ctcp */
+#define KviOption_boolRequestMissingAvatars 30 /* ctcp::avatar */
+#define KviOption_boolShowCompactModeChanges 31 /* ircoutput */
+#define KviOption_boolIgnoreCtcpDcc 32 /* ctcp */
+#define KviOption_boolAutoAcceptDccChat 33 /* dcc::chat */
+#define KviOption_boolAutoAcceptDccSend 34 /* dcc::send */
+#define KviOption_boolSendZeroAckInDccRecv 35 /* dcc::send */
+#define KviOption_boolUseFastDccSend 36 /* dcc::send */
+#define KviOption_boolObtainGlobalBackgroundFromKde 37 /* interface::look::global */
+#define KviOption_boolUseTaskBarIrcContextIndicator 38 /* interface::features::global */
+#define KviOption_boolUseGlobalApplicationFont 39 /* interface::look::global */
+#define KviOption_boolAlwaysQuitKVIrcClosingLastConsole 40 /* internal */
+#define KviOption_boolAlwaysDisconnectClosingConnectedConsole 41 /* internal */
+#define KviOption_boolFlashWindowOnHighlightedMessages 42 /* highlighting */
+#define KviOption_boolPopupNotifierOnHighlightedMessages 43 /* highlighting */
+#define KviOption_boolFlashWindowOnNotifyOnLine 44 /* notify */
+#define KviOption_boolIrcViewTimestampUTC 45 /* interface::features::components::ircview */
+#define KviOption_boolUseGlobalPseudoTransparency 46 /* interface::look::global */
+#define KviOption_boolUseNotifyList 47 /* ircengine::notifylist */
+#define KviOption_boolNotifyListChangesToActiveWindow 48 /* ircengine::notifylist */
+#define KviOption_boolAutoResumeDccSendWhenAutoAccepted 49 /* dcc::send */
+#define KviOption_boolLimitOutgoingTraffic 50 /* transport */
+#define KviOption_boolSendUnknownCommandsAsRaw 51 /* ircengine::uparser */
+#define KviOption_boolUserListViewDrawGrid 52 /* look & feel::interface look::userlist */
+#define KviOption_boolShowChannelSyncTime 53 /* ircoutput */
+#define KviOption_boolRejoinChannelOnKick 54 /* irc */
+#define KviOption_boolKeepChannelOpenOnKick 55 /* irc */
+#define KviOption_boolAutoCloseDccSendOnSuccess 56 /* dcc::send */
+#define KviOption_boolNotifyDccSendSuccessInConsole 57 /* dcc::send */
+#define KviOption_boolCreateMinimizedDccSend 58 /* dcc::send */
+#define KviOption_boolCreateMinimizedDccChat 59 /* dcc::chat */
+#define KviOption_boolAutoAcceptIncomingAvatars 60 /* irc::ctcp::avatar */
+#define KviOption_boolUseNickCompletionPostfixForFirstWordOnly 61
+#define KviOption_boolUseTaskBarIcons 62 /* interface::features */
+#define KviOption_boolCreateMinimizedDccSendWhenAutoAccepted 63 /* dcc::send */
+#define KviOption_boolCreateMinimizedDccChatWhenAutoAccepted 64 /* dcc::chat */
+#define KviOption_boolDccGuessIpFromServerWhenLocalIsUnroutable 65 /* dcc */
+#define KviOption_boolShowRegisteredUsersDialogAsToplevel 66 /* interface::features::global */
+#define KviOption_boolAutoLogQueries 67 /* ircengine::logging */
+#define KviOption_boolAutoLogChannels 68 /* ircendine::logging */
+#define KviOption_boolAutoLogDccChat 69 /* ircengine::logging */
+#define KviOption_boolAutoLogConsole 70 /* ircengine::logging */
+#define KviOption_boolSilentAntiSpam 71 /* ircengine::antispam */
+#define KviOption_boolUseIncomingDccMediaTypeSavePath 72 /* dcc::send */
+#define KviOption_boolNotifyListSendUserhostForOnlineUsers 73 /* ircengine::notifylist */
+#define KviOption_boolUseIntelligentNotifyListManager 74 /* ircengine::notifylist */
+#define KviOption_boolUseWatchListIfAvailable 75 /* ircengine::notifylist */
+#define KviOption_boolUseTreeWindowListTaskBar 76 /* interface::features::global */
+#define KviOption_boolBindIrcIpV4ConnectionsToSpecifiedAddress 77 /* connection::transport */
+#define KviOption_boolBindIrcIpV6ConnectionsToSpecifiedAddress 78 /* connection::transport */
+#define KviOption_boolUseAntiSpamOnNotice 79 /* ircengine::antispam */
+#define KviOption_boolSetLastAvatarAsDefaultForRegisteredUsers 80 /* irc::ctcp::avatar */
+#define KviOption_boolCantAcceptIncomingDccConnections 81 /* dcc::general */
+#define KviOption_boolIgnoreCtcpAvatar 82 /* irc::ctcp::floodprotection */
+#define KviOption_boolCtcpRepliesToActiveWindow 83 /* ctcp */
+#define KviOption_boolAutoAcceptDccCanvas 84
+#define KviOption_boolNotifyDccSendSuccessInNotifier 85 /* dcc::send */
+#define KviOption_boolKillBrokenTimers 86 /* ircengine::uparser */
+#define KviOption_boolDccVoiceVolumeSliderControlsPCM 87 /* dcc::voice */
+#define KviOption_boolDccVoiceForceHalfDuplex 88 /* dcc::voice */
+#define KviOption_boolAutoAcceptDccVoice 89 /* dcc::voice */
+#define KviOption_boolCreateMinimizedDccVoice 90 /* dcc::voice */
+#define KviOption_boolCreateMinimizedDccVoiceWhenAutoAccepted 91 /* dcc::voice */
+#define KviOption_boolUseIdentService 92 /* connection::ident */
+#define KviOption_boolShowTipAtStartup 93 /* internal */
+#define KviOption_boolIdentdEnableIpV6 94 /* connection::ident */
+#define KviOption_boolIdentdIpV6ContainsIpV4 95 /* connection::ident */
+#define KviOption_boolScaleAvatars 96 /* ctcp::avatar */
+#define KviOption_boolColorNicks 97 /* interface::features::components::ircview */
+#define KviOption_boolBoldedNicks 98 /* interface::features::components::ircview */
+#define KviOption_boolDccListenOnSpecifiedInterfaceByDefault 99 /* dcc */
+#define KviOption_boolChangeNickAway 100 /* ircengine::away */
+#define KviOption_boolAutoGeneratedAwayNick 101 /* ircengine::away */
+#define KviOption_boolExitAwayOnInput 102 /* ircengine::away */
+#define KviOption_boolAlwaysHighlightNick 103 /* ircengine::outputcontrol::highlighting */
+#define KviOption_boolShowChannelsJoinOnIrc 104 /* internal */
+#define KviOption_boolShowChannelsJoinDialogAsToplevel 105 /* FIXME: internal ??? */
+#define KviOption_boolUserDefinedPortRange 106 /* dcc */
+#define KviOption_boolCreateQueryOnPrivmsg 107 /* irc::query */
+#define KviOption_boolCreateQueryOnNotice 108 /* irc::query */
+#define KviOption_boolCreateMinimizedQuery 109 /* irc::query */
+#define KviOption_boolAutoJoinOnInvite 110 /* irc */
+#define KviOption_boolShowServersConnectDialogOnStart 111 /* connection::ircservers */
+#define KviOption_boolShowServersConnectDialogAsToplevel 112 /* FIXME: internal ?? */
+#define KviOption_boolAcceptBrokenFileNameDccResumeRequests 113 /* dcc::send */
+#define KviOption_boolAutoReconnectOnUnexpectedDisconnect 114 /* connection */
+#define KviOption_boolRejoinChannelsAfterReconnect 115 /* connection */
+#define KviOption_boolReopenQueriesAfterReconnect 116 /* connection */
+#define KviOption_boolEnableQueryTracing 117 /* irc::query */
+#define KviOption_boolOperatorMessagesToActiveWindow 118 /* irc::output */
+#define KviOption_boolInvitesToActiveWindow 119 /* irc::output */
+#define KviOption_boolShowChannelUserFlagInPrivmsgView 120 /* ircengine::outputcontrol::privmsg */
+#define KviOption_boolDccSendFakeAddressByDefault 121 /* dcc::general */
+#define KviOption_boolUseTaskBarActivityMeter 122 /* irc::output */
+#define KviOption_boolCloseServerWidgetAfterConnect 123 /* IMPLEMENTATION NEEDED !!! */
+#define KviOption_boolShowIdentityDialogAsToplevel 124 /* ??? */
+#define KviOption_boolShowUserChannelIcons 125 /* look & feel::interface features::userlist */
+#define KviOption_boolShowUserChannelState 126 /* look & feel::interface features::userlist */
+#define KviOption_boolEnableIgnoreOnPrivMsg 127 /* irc::ignore */
+#define KviOption_boolVerboseIgnore 128 /* irc::ignore */
+#define KviOption_boolEnableIgnoreOnNotice 129 /* irc::ignore */
+#define KviOption_boolNotifyFailedDccHandshakes 130
+#define KviOption_boolAutoTileWindows 131 /* internal ? */
+#define KviOption_boolDrawEmoticons 132 /* look::interface::features::output */
+#define KviOption_boolIgnoreCtcpPage 133 /* irc::ctcp::floodprotection */
+#define KviOption_boolShowDialogOnCtcpPage 134
+#define KviOption_boolBashLikeNickCompletion 135
+#define KviOption_boolUseSSLCertificate 136 /* ssl */
+#define KviOption_boolUseSSLPrivateKey 137 /* ssl */
+#define KviOption_boolWarnAboutPastingMultipleLines 138 /* internal */
+#define KviOption_boolKeepChannelsOpenOnUnexpectedDisconnect 139 /* connection */
+#define KviOption_boolKeepQueriesOpenOnUnexpectedDisconnect 140 /* connection */
+#define KviOption_boolUseLagMeterEngine 141 /* irc::lag */
+#define KviOption_boolShowLagOnContextDisplay 142 /* irc::lag */
+#define KviOption_boolDisableBanListRequestOnJoin 143 /* irc::output */
+#define KviOption_boolDisableBanExceptionListRequestOnJoin 144 /* irc::output */
+#define KviOption_boolDisableInviteListRequestOnJoin 145 /* irc::output */
+#define KviOption_boolDisableWhoRequestOnJoin 146 /* irc::output */
+#define KviOption_boolShowDockExtension 147 /* internal ? */
+#define KviOption_boolDccAddressByIrcDns 148 /* irc::general */
+#define KviOption_boolMinimizeConsoleAfterConnect 149 /* irc::connection */
+#define KviOption_boolHighlightOnlyNormalMsg 150 /* irc::output::highlight */
+#define KviOption_boolHighlightOnlyNormalMsgQueryToo 151 /* irc::output::highlight */
+#define KviOption_boolHighlightOnlyNormalMsgHighlightInChanToo 152 /* irc::output::highlight */
+#define KviOption_boolHighlightOnlyAtCostumHighlightLevel 153 /* irc::output::highlight */
+#define KviOption_boolMdiManagerInSdiMode 154 /* internal */
+#define KviOption_boolDccBrokenBouncerHack 155 /* dcc */
+#define KviOption_boolExternalMessagesToActiveWindow 156 /* irc::output */
+#define KviOption_boolIgnoreChannelAvatarRequestsWhenNoAvatarSet 157 /* ctcp */
+#define KviOption_boolFlashQueryWindowOnNewMessages 158 /* query */
+#define KviOption_boolConfirmCloseWhenThereAreConnections 159 /* interface features */
+#define KviOption_boolUpdateKdeBackgroundOnChange 160 /* themes::general */
+#define KviOption_boolCtcpRequestsToActiveWindow 161 /* irc::output */
+#define KviOption_boolServerRepliesToActiveWindow 162 /* irc::output */
+#define KviOption_boolServerNoticesToActiveWindow 163 /* irc::output */
+#define KviOption_boolServicesNoticesToActiveWindow 164 /* irc::output */
+#define KviOption_boolSortTaskBarItemsByName 165 /* interface::features::global */
+#define KviOption_boolShowTaskBarToolTips 166 /* interface::features::global */
+#define KviOption_boolShowUserListViewToolTips 167 /* interface::features::global */
+#define KviOption_boolWhoisRepliesToActiveWindow 168 /* irc::output */
+#define KviOption_boolPopupNotifierOnNotifyOnLine 169 /* notify */
+#define KviOption_boolForciblyDisableNotifier 170 /* notifier */
+#define KviOption_boolDccSendForceIdleStep 171 /* dcc */
+#define KviOption_boolStatusBarVisible 172 /* internal */
+#define KviOption_boolTrackLastReadTextViewLine 173 /* ircview::features */
+#define KviOption_boolKeepChannelOpenOnPart 174 /* irc */
+#define KviOption_boolStripMircColorsInUserMessages 175 /* irc::output */
+#define KviOption_boolDoNotSuggestRestoreDefaultScript 176 /* internal */
+#define KviOption_boolLimitDccSendSpeed 177 /* dcc::file transfers */
+#define KviOption_boolLimitDccRecvSpeed 178 /* dcc::file transfers */
+#define KviOption_boolIgnoreModuleVersions 179
+#define KviOption_boolDisableInputHistory 180 /* interface::input */
+#define KviOption_boolUseSpecialColorForTimestamp 181 /* interface::output */
+#define KviOption_boolDisableAwayListUpdates 182 /* irc::output */
+#define KviOption_boolDisableAvatars 183 /* interface::userlist */
+#define KviOption_boolDisableUserListLabel 184 /* interface::userlist */
+#define KviOption_boolDisablePopupIcons 185 /* themes::general */
+#define KviOption_boolScriptErrorsToDebugWindow 186 /* parser */
+#define KviOption_boolShowMinimizedDebugWindow 187 /* parser */
+#define KviOption_boolShowExtendedInfoInQueryLabel 188 /* irc::query */
+#define KviOption_boolUseUserListColorsAsNickColors 189 /* irc::usermessages */
+#define KviOption_boolGzipLogs 190 /* ircengine::logging */
+#define KviOption_boolMinimizeInTray 191 /* interface */
+#define KviOption_boolDisableNotifierFlashing 192 /* interface::notifier */
+#define KviOption_boolCommandlineInUserFriendlyModeByDefault 193 /* interface::input */
+#define KviOption_boolEnableVisualEffects 194 /* interface */
+#define KviOption_boolDCCFileTransferReplaceOutgoingSpacesWithUnderscores 195
+#define KviOption_boolDoNotStretchAvatars 196
+#define KviOption_boolUseDifferentColorForOwnNick 197 /* interface */
+#define KviOption_boolCloseInTray 198 /* interface */
+#define KviOption_boolStartupMinimized 199 /* interface */
+#define KviOption_boolSortReceivedByDccFilesByNicks 200 /* dcc */
+#define KviOption_boolLogChannelHistory 201 /* irc */
+#define KviOption_boolClassicTaskBarSetMaximumButtonWidth 202
+#define KviOption_boolKeepChannelsOpenOnDisconnect 203 /* connection */
+#define KviOption_boolKeepQueriesOpenOnDisconnect 204 /* connection */
+#define KviOption_boolHideWindowToolButtons 205 /* interface */
+#define KviOption_boolHideInputToolButtons 206 /* interface */
+#define KviOption_boolStripControlCodesInLogs 207 /* log */
+#define KviOption_boolEnableTrayIconFlashing 208
+#define KviOption_boolUseFlatClassicTaskbarButtons 209
+#define KviOption_boolShowTreeTaskbarHeader 210
+#define KviOption_boolUseLevelBasedTrayNotification 211
+#define KviOption_boolMuteAllSounds 212
+#define KviOption_boolCreateMinimizedChannels 213
+#define KviOption_boolShowNetworkNameForConsoleTaskBarEntry 214
+#define KviOption_boolDrawGenderIcons 215
+#define KviOption_boolPrependGenderInfoToRealname 216
+#define KviOption_boolUseIdentServiceOnlyOnConnect 217 /* connection::ident */
+#define KviOption_boolUseSystemUrlHandlers 218 /* Windoze only*/
+#define KviOption_boolScaleAvatarsOnLoad 219
+#define KviOption_boolDisableNotifierFadein 220 /* interface::notifier */
+#define KviOption_boolUseAntiAliasing 221 /* qt4 only! */
+
+
+#define KVI_NUM_BOOL_OPTIONS 222
+
+
+
+#define KVI_STRING_OPTIONS_PREFIX "string"
+#define KVI_STRING_OPTIONS_PREFIX_LEN 6
+
+//UNUSED ! #define KviOption_stringFrameCaption 0 /* interfacelookglobal */
+#define KviOption_stringNickname1 1 /* identity */
+#define KviOption_stringNickname2 2 /* identity */
+#define KviOption_stringNickname3 3 /* identity */
+#define KviOption_stringNickname4 4 /* identity */
+#define KviOption_stringUsername 5 /* identity */
+#define KviOption_stringRealname 6 /* identity */
+#define KviOption_stringLocalHostIp 7 /* ?????? This is a fallback one */
+#define KviOption_stringPartMessage 8 /* ircengine::defaultmessages */
+#define KviOption_stringQuitMessage 9 /* ircengine::defaultmessages */
+#define KviOption_stringUrlHttpCommand 10 /* urlhandlers */
+#define KviOption_stringExtendedPrivmsgPrefix 11 /* ircengine::outputcontrol::privmsg */
+#define KviOption_stringExtendedPrivmsgPostfix 12 /* ircengine::outputcontrol::privmsg */
+#define KviOption_stringCtcpVersionPostfix 13 /* ircengine::ctcp::replies */
+#define KviOption_stringCtcpUserInfoOther 14 /* identity */
+#define KviOption_stringCtcpSourcePostfix 15 /* ircengine::ctcp::replies */
+#define KviOption_stringUrlFtpCommand 16 /* urlhandlers */
+#define KviOption_stringUrlHttpsCommand 17 /* urlhandlers */
+#define KviOption_stringUrlMailtoCommand 18 /* urlhandlers */
+#define KviOption_stringPreferredMediaPlayer 19 /* still missing in options ! */
+#define KviOption_stringUrlFileCommand 20 /* urlhandlers */
+#define KviOption_stringNickCompletionPostfix 21
+#define KviOption_stringUrlUnknownCommand 22 /* urlhandlers */
+#define KviOption_stringIpV4ConnectionBindAddress 23 /* connection::transport */
+#define KviOption_stringIpV6ConnectionBindAddress 24 /* connection::transport */
+#define KviOption_stringDccVoiceSoundDevice 25 /* dcc::voice */
+#define KviOption_stringDccVoiceMixerDevice 26 /* dcc::voice */
+#define KviOption_stringAwayMessage 27 /* irc::away */
+#define KviOption_stringIdentdUser 28 /* connection::ident */
+#define KviOption_stringDccListenDefaultInterface 29 /* dcc::general */
+#define KviOption_stringCustomAwayNick 30 /* ircengine::away */
+#define KviOption_stringDefaultDccFakeAddress 31 /* dcc::general */
+#define KviOption_stringCtcpPageReply 32 /* ircengine::ctcp::replies */
+#define KviOption_stringSSLCertificatePath 33 /* ssl */
+#define KviOption_stringSSLCertificatePass 34 /* ssl */
+#define KviOption_stringSSLPrivateKeyPath 35 /* ssl */
+#define KviOption_stringSSLPrivateKeyPass 36 /* ssl */
+#define KviOption_stringSoundSystem 37 /* sound */
+#define KviOption_stringDefaultUserMode 38
+#define KviOption_stringLastImageDialogPath 39 /* internal */
+#define KviOption_stringIconThemeSubdir 40
+#define KviOption_stringIncomingPath 41 /* folders */
+#define KviOption_stringMyAvatar 42
+// empty string means guess from locale
+#define KviOption_stringDefaultTextEncoding 43 /* text encoding */
+
+#define KviOption_stringWinampTextEncoding 44
+#define KviOption_stringMp3TagsEncoding 45
+
+#define KviOption_stringCtcpUserInfoAge 46 /* identity */
+#define KviOption_stringCtcpUserInfoGender 47 /* identity */
+#define KviOption_stringCtcpUserInfoLocation 48 /* identity */
+#define KviOption_stringCtcpUserInfoLanguages 49 /* identity */
+#define KviOption_stringWordSplitters 50 /* highlight */
+#define KviOption_stringOnNewQueryOpenedSound 51 /* sounds */
+#define KviOption_stringOnHighlightedMessageSound 52 /* sounds */
+#define KviOption_stringOnMeKickedSound 53 /* sounds */
+#define KviOption_stringOnQueryMessageSound 54 /* sounds */
+#define KviOption_stringIrcViewTimestampFormat 55
+#define KviOption_stringPreferredTorrentClient 56 /* still missing in options ! */
+
+#define KVI_NUM_STRING_OPTIONS 57
+
+
+
+#define KVI_STRINGLIST_OPTIONS_PREFIX "stringlist"
+#define KVI_STRINGLIST_OPTIONS_PREFIX_LEN 10
+
+#define KviOption_stringlistHighlightWords 0 /* ircengine::outputcontrol::highlighting */
+#define KviOption_stringlistSpamWords 1 /* ircengine::outputcontrol::antispam */
+#define KviOption_stringlistRecentChannels 2 /* internal */
+#define KviOption_stringlistRecentServers 3 /* internal */
+#define KviOption_stringlistRecentNicknames 4 /* internal */
+#define KviOption_stringlistModuleExtensionToolbars 5 /* internal */
+#define KviOption_stringlistImageSearchPaths 6 /* ??? */
+#define KviOption_stringlistRecentIrcUrls 7 /* internal */
+
+#define KVI_NUM_STRINGLIST_OPTIONS 8
+
+
+
+#define KVI_COLOR_OPTIONS_PREFIX "color"
+#define KVI_COLOR_OPTIONS_PREFIX_LEN 5
+
+#define KviOption_colorMdiBackground 0 /* ?? look & feel : gui elements : mdi manager */
+#define KviOption_colorTaskBarNormalText 1 /* look & feel::interface look::taskbar::classic taskbar */
+#define KviOption_colorTaskBarMinimizedText 2 /* look & feel::interface look::taskbar::classic taskbar */
+#define KviOption_colorTaskBarHighlight1Text 3 /* look & feel::interface look::taskbar::classic taskbar */
+#define KviOption_colorTaskBarHighlight2Text 4 /* look & feel::interface look::taskbar::classic taskbar */
+#define KviOption_colorTaskBarProgressBar 5 /* look & feel::interface look::taskbar::classic taskbar */
+#define KviOption_colorMdiCaptionActive 6 /* theme::mdicaptions */
+#define KviOption_colorMdiCaptionInactive 7 /* theme::mdicaptions */
+#define KviOption_colorCaptionTextActive 8 /* theme::mdicaptions */
+#define KviOption_colorCaptionTextActive2 9 /* theme::mdicaptions */
+#define KviOption_colorCaptionTextInactive 10 /* theme::mdicaptions */
+#define KviOption_colorCaptionTextInactive2 11 /* theme::mdicaptions */
+#define KviOption_colorIrcViewBackground 12 /* look & feel::interface look::ircview */
+#define KviOption_colorInputBackground 13 /* look & feel::interface look::input */
+#define KviOption_colorInputSelectionBackground 14 /* look & feel::interface look::input */
+#define KviOption_colorInputSelectionForeground 15 /* look & feel::interface look::input */
+#define KviOption_colorInputCursor 16 /* look & feel::interface look::input */
+#define KviOption_colorInputControl 17 /* look & feel::interface look::input */
+#define KviOption_colorInputForeground 18 /* look & feel::interface look::input */
+#define KviOption_colorUserListViewBackground 19 /* look & feel::interface look::userlist */
+#define KviOption_colorUserListViewOpForeground 20 /* look & feel::interface look::userlist */
+#define KviOption_colorUserListViewVoiceForeground 21 /* look & feel::interface look::userlist */
+#define KviOption_colorUserListViewNormalForeground 22 /* look & feel::interface look::userlist */
+#define KviOption_colorUserListViewSelectionBackground 23 /* look & feel::interface look::userlist */
+#define KviOption_colorUserListViewSelectionForeground 24 /* look & feel::interface look::userlist */
+#define KviOption_colorLabelBackground 25 /* look & feel::interface look::topic label */
+#define KviOption_colorLabelForeground 26 /* look & feel::interface look::topic label */
+#define KviOption_colorGlobalTransparencyFade 27 /* look & feel::interface look */
+#define KviOption_colorIrcToolBarAppletBackground 28 /* theme::tool bar applets */
+#define KviOption_colorIrcToolBarAppletForegroundLowContrast 29 /* theme::tool bar applets */
+#define KviOption_colorIrcToolBarAppletForegroundMidContrast 30 /* theme::tool bar applets */
+#define KviOption_colorIrcToolBarAppletForegroundHighContrastInactive1 31 /* theme::tool bar applets */
+#define KviOption_colorIrcToolBarAppletForegroundHighContrastInactive2 32 /* theme::tool bar applets */
+#define KviOption_colorIrcToolBarAppletForegroundHighContrastActive1 33 /* theme::tool bar applets */
+#define KviOption_colorIrcToolBarAppletForegroundHighContrastActive2 34 /* theme::tool bar applets */
+#define KviOption_colorTreeTaskBarBackground 35 /* look & feel::interface look::taskbar::tree taskbar */
+#define KviOption_colorTreeTaskBarActiveBackground 36 /* look & feel::interface look::taskbar::tree taskbar */
+#define KviOption_colorTreeTaskBarForeground 37 /* look & feel::interface look::taskbar::tree taskbar */
+#define KviOption_colorTreeTaskBarActiveForeground 38 /* look & feel::interface look::taskbar::tree taskbar */
+#define KviOption_colorTreeTaskBarHighlight1Foreground 39 /* look & feel::interface look::taskbar::tree taskbar */
+#define KviOption_colorTreeTaskBarHighlight2Foreground 40 /* look & feel::interface look::taskbar::tree taskbar */
+#define KviOption_colorTreeTaskBarProgress 41 /* look & feel::interface look::taskbar::tree taskbar */
+#define KviOption_colorUserListViewHalfOpForeground 42 /* look & feel::interface look::userlist */
+#define KviOption_colorTaskBarHighlight3Text 43 /* look & feel::interface look::taskbar::classic taskbar */
+#define KviOption_colorTaskBarHighlight4Text 44 /* look & feel::interface look::taskbar::classic taskbar */
+#define KviOption_colorTaskBarHighlight5Text 45 /* look & feel::interface look::taskbar::classic taskbar */
+#define KviOption_colorTreeTaskBarHighlight3Foreground 46 /* look & feel::interface look::taskbar::tree taskbar */
+#define KviOption_colorTreeTaskBarHighlight4Foreground 47 /* look & feel::interface look::taskbar::tree taskbar */
+#define KviOption_colorTreeTaskBarHighlight5Foreground 48 /* look & feel::interface look::taskbar::tree taskbar */
+#define KviOption_colorUserListViewChanAdminForeground 49 /* look & feel::interface look::userlist */
+#define KviOption_colorUserListViewUserOpForeground 50 /* look & feel::interface look::userlist */
+#define KviOption_colorUserListViewGrid 51 /* look & feel::interface look::userlist */
+#define KviOption_colorUserListViewChanOwnerForeground 52 /* look & feel::interface look::userlist */
+#define KviOption_colorIrcViewMarkLine 53 /* look & feel::interface look::ircvew */
+#define KviOption_colorUserListViewAwayForeground 54 /* look & feel::interface look::userlist */
+#define KviOption_colorUserListViewOwnForeground 55 /* look & feel::interface look::userlist */
+
+#define KVI_NUM_COLOR_OPTIONS 56
+
+
+
+#define KVI_PIXMAP_OPTIONS_PREFIX "pixmap"
+#define KVI_PIXMAP_OPTIONS_PREFIX_LEN 6
+
+#define KviOption_pixmapMdiBackground 0
+#define KviOption_pixmapIrcViewBackground 1 /* interface::look::components::ircview */
+#define KviOption_pixmapInputBackground 2 /* interface::look::components::input */
+#define KviOption_pixmapUserListViewBackground 3 /* look & feel::interface look::userlist */
+#define KviOption_pixmapLabelBackground 4 /* look & feel::interface look::topic label */
+#define KviOption_pixmapMyAvatar 5 /* identity */
+#define KviOption_pixmapIrcToolBarAppletBackground 6 /* theme::tool bar applets */
+#define KviOption_pixmapTreeTaskBarBackground 7 /* look & feel::interface look::taskbar::tree taskbar */
+#define KviOption_pixmapGlobalTransparencyBackground 8 /* theme::transparency */
+
+#define KVI_NUM_PIXMAP_OPTIONS 9
+
+
+
+
+#define KVI_UINT_OPTIONS_PREFIX "uint"
+#define KVI_UINT_OPTIONS_PREFIX_LEN 4
+
+#define KviOption_uintIrcSocketTimeout 0 /* connection::transport */
+#define KviOption_uintModuleCleanupTimerInterval 1
+#define KviOption_uintModuleCleanupTimeout 2
+#define KviOption_uintMaxCtcpRequests 3 /* ircengine::ctcp */
+#define KviOption_uintCtcpFloodCheckInterval 4 /* ircengine::ctcp */
+#define KviOption_uintTotalConnectionTime 5
+#define KviOption_uintDccSocketTimeout 6 /* dcc::general */
+#define KviOption_uintDccSendIdleStepInMSec 7 /* dcc::send */
+#define KviOption_uintDccSendPacketSize 8 /* dcc::send */
+#define KviOption_uintGlobalTransparencyParentFadeFactor 9 /* interface::look::general */
+#define KviOption_uintGlobalTransparencyChildFadeFactor 10 /* interface::look::general */
+#define KviOption_uintNotifyListCheckTimeInSecs 11 /* notify */
+#define KviOption_uintSocketQueueFlushTimeout 12 /* connection::transport */
+#define KviOption_uintOutgoingTrafficLimitUSeconds 13 /* connection::transport */
+#define KviOption_uintNotifyListIsOnDelayTimeInSecs 14 /* notify */
+#define KviOption_uintNotifyListUserhostDelayTimeInSecs 15 /* notify */
+#define KviOption_uintTreeTaskBarMinimumWidth 16 /* ?? interface::general ?? */
+#define KviOption_uintAvatarOfferTimeoutInSecs 17 /* irc::ctcp::avatar */
+#define KviOption_uintIrcViewMaxBufferSize 18 /* interface::features::components::ircview */
+#define KviOption_uintIrcViewToolTipTimeoutInMsec 19 /* interface::features::components::ircview */
+#define KviOption_uintIrcViewToolTipHideTimeoutInMsec 20 /* interface::features::components::ircview */
+#define KviOption_uintDccVoicePreBufferSize 21 /* dcc::voice */
+#define KviOption_uintIdentdPort 22 /* connection::ident */
+#define KviOption_uintAvatarScaleWidth 23 /* ctcp::avatar */
+#define KviOption_uintAvatarScaleHeight 24 /* ctcp::avatar */
+#define KviOption_uintDccMinPort 25 /* dcc::general */
+#define KviOption_uintDccMaxPort 26 /* dcc::general */
+#define KviOption_uintSoundOfferTimeoutInSecs 27
+#define KviOption_uintMaximumRequestedAvatarSize 28 /* ctcp::avatar */
+// FIXME: THIS IS NO LONGER NEEDED ?
+#define KviOption_uintTreeTaskBarMaximumWidth 29
+#define KviOption_uintPasteDelay 30
+// 0 = unlimited!
+#define KviOption_uintMaxDccSendTransfers 31
+// 0 = unlimited slots = windows
+#define KviOption_uintMaxDccSlots 32
+#define KviOption_uintTileMethod 33 /* internal ? */
+#define KviOption_uintLagMeterHeartbeat 34
+#define KviOption_uintLagAlarmTime 35
+// KVI_TEXT_ENCODING_UNKNOWN = KviLocale::defaultTextEncoding() <-- guessed from locale
+//#define KviOption_uintDefaultTextEncoding 36 /* textencoding */
+#define KviOption_uintTaskBarButtonMinWidth 37 /* interface::look::taskbar::classic taskbar */
+// follows the verbosity constants defined below
+#define KviOption_uintOutputVerbosityLevel 38
+#define KviOption_uintIrcContextAppletWidth 39 /* internal */
+#define KviOption_uintMinHighlightLevel 40 /* look::interface::features::output */
+#define KviOption_uintUserListViewGridType 41 /* look&feel::ircview */
+#define KviOption_uintTaskBarMaximumRows 42 /* interface::look::taskbar::classic taskbar */
+// 0 = unlimited attempts
+#define KviOption_uintMaxAutoReconnectAttempts 43 /* connection */
+#define KviOption_uintAutoReconnectDelay 44 /* connection */
+#define KviOption_uintMaxDccSendSpeed 45 /* dcc::file transfers */
+#define KviOption_uintMaxDccRecvSpeed 46 /* dcc::file transfers */
+#define KviOption_uintTimeStampForeground 47
+#define KviOption_uintTimeStampBackground 48
+#define KviOption_uintUserExperienceLevel 49
+#define KviOption_uintClassicTaskBarMaximumButtonWidth 50
+#define KviOption_uintDefaultBanType 51
+#define KviOption_uintIrcViewPixmapAlign 52
+#define KviOption_uintUserListPixmapAlign 53
+#define KviOption_uintToolBarAppletPixmapAlign 54
+#define KviOption_uintTreeTaskBarPixmapAlign 55
+#define KviOption_uintInputPixmapAlign 56
+#define KviOption_uintAutoFlushLogs 57
+#define KviOption_uintMinTrayLowLevelMessage 58
+#define KviOption_uintMinTrayHighLevelMessage 59
+#define KviOption_uintIdentdOutputMode 60
+#define KviOption_uintScaleAvatarsOnLoadHeight 61
+#define KviOption_uintScaleAvatarsOnLoadWidth 62
+#define KviOption_uintNotifierActiveTransparency 63
+#define KviOption_uintNotifierInactiveTransparency 64
+
+#define KVI_NUM_UINT_OPTIONS 65
+
+namespace KviIdentdOutputMode {
+ enum Mode {
+ Quiet = 0,
+ ToConsole = 1,
+ ToActiveWindow = 2
+ };
+}
+
+
+#define KVI_FONT_OPTIONS_PREFIX "font"
+#define KVI_FONT_OPTIONS_PREFIX_LEN 4
+
+#define KviOption_fontIrcView 0 /* interface::look::components::ircview */
+#define KviOption_fontInput 1 /* interface::look::components::input */
+#define KviOption_fontUserListView 2 /* look & feel::interface look::userlist */
+#define KviOption_fontLabel 3 /* look & feel::interface look::topic label */
+#define KviOption_fontApplication 4 /* interface::look::global */
+#define KviOption_fontIrcToolBarApplet 5 /* theme::tool bar applet */
+#define KviOption_fontTaskbar 6 /* interface::look::taskbar::classic taskbar */
+
+/* fixme: taskbar font ? */
+
+#define KVI_NUM_FONT_OPTIONS 7
+
+
+
+
+#define KVI_ICCOLOR_OPTIONS_PREFIX "iccolor"
+#define KVI_ICCOLOR_OPTIONS_PREFIX_LEN 7
+
+#define KVI_NUM_ICCOLOR_OPTIONS 8
+
+
+// indices declared in kvi_out.h
+
+#define KVI_MSGTYPE_OPTIONS_PREFIX "msgtype"
+#define KVI_MSGTYPE_OPTIONS_PREFIX_LEN 7
+
+#define KVI_NUM_MSGTYPE_OPTIONS 137
+
+
+
+#define KVI_MIRCCOLOR_OPTIONS_PREFIX "mirccolor"
+#define KVI_MIRCCOLOR_OPTIONS_PREFIX_LEN 9
+
+#define KVI_NUM_MIRCCOLOR_OPTIONS 16
+
+
+// external declaration of the tables
+extern KVIRC_API KviBoolOption g_boolOptionsTable[KVI_NUM_BOOL_OPTIONS];
+extern KVIRC_API KviRectOption g_rectOptionsTable[KVI_NUM_RECT_OPTIONS];
+extern KVIRC_API KviStringOption g_stringOptionsTable[KVI_NUM_STRING_OPTIONS];
+extern KVIRC_API KviColorOption g_colorOptionsTable[KVI_NUM_COLOR_OPTIONS];
+extern KVIRC_API KviPixmapOption g_pixmapOptionsTable[KVI_NUM_PIXMAP_OPTIONS];
+// extern KviIntOption g_intOptionsTable[KVI_NUM_INT_OPTIONS];
+extern KVIRC_API KviUIntOption g_uintOptionsTable[KVI_NUM_UINT_OPTIONS];
+extern KVIRC_API KviFontOption g_fontOptionsTable[KVI_NUM_FONT_OPTIONS];
+extern KVIRC_API KviMsgTypeOption g_msgtypeOptionsTable[KVI_NUM_MSGTYPE_OPTIONS];
+extern KVIRC_API KviColorOption g_mirccolorOptionsTable[KVI_NUM_MIRCCOLOR_OPTIONS];
+extern KVIRC_API KviColorOption g_iccolorOptionsTable[KVI_NUM_ICCOLOR_OPTIONS];
+extern KVIRC_API KviStringListOption g_stringlistOptionsTable[KVI_NUM_STRINGLIST_OPTIONS];
+
+// __this is how we access the options from outside
+#define KVI_OPTION_BOOL(_idx) g_boolOptionsTable[_idx].option
+#define KVI_OPTION_RECT(_idx) g_rectOptionsTable[_idx].option
+#define KVI_OPTION_STRING(_idx) g_stringOptionsTable[_idx].option
+#define KVI_OPTION_COLOR(_idx) g_colorOptionsTable[_idx].option
+#define KVI_OPTION_PIXMAP(_idx) g_pixmapOptionsTable[_idx].option
+#define KVI_OPTION_UINT(_idx) g_uintOptionsTable[_idx].option
+#define KVI_OPTION_FONT(_idx) g_fontOptionsTable[_idx].option
+#define KVI_OPTION_MSGTYPE(_idx) g_msgtypeOptionsTable[_idx].option
+#define KVI_OPTION_MIRCCOLOR(_idx) g_mirccolorOptionsTable[_idx].option
+#define KVI_OPTION_STRINGLIST(_idx) g_stringlistOptionsTable[_idx].option
+#define KVI_OPTION_ICCOLOR(_idx) g_iccolorOptionsTable[_idx].option
+
+
+// Verbosity constants
+
+#define KVI_VERBOSITY_LEVEL_MUTE 0
+#define KVI_VERBOSITY_LEVEL_QUIET 1
+#define KVI_VERBOSITY_LEVEL_NORMAL 2
+#define KVI_VERBOSITY_LEVEL_VERBOSE 3
+#define KVI_VERBOSITY_LEVEL_PARANOIC 4
+
+#define _OUTPUT_PARANOIC (KVI_OPTION_UINT(KviOption_uintOutputVerbosityLevel) >= KVI_VERBOSITY_LEVEL_PARANOIC)
+#define _OUTPUT_VERBOSE (KVI_OPTION_UINT(KviOption_uintOutputVerbosityLevel) >= KVI_VERBOSITY_LEVEL_VERBOSE)
+#define _OUTPUT_QUIET (KVI_OPTION_UINT(KviOption_uintOutputVerbosityLevel) <= KVI_VERBOSITY_LEVEL_QUIET)
+#define _OUTPUT_MUTE (KVI_OPTION_UINT(KviOption_uintOutputVerbosityLevel) <= KVI_VERBOSITY_LEVEL_MUTE)
+
+#ifdef COMPILE_USE_QT4
+ #define START_TABLE_BOLD_ROW "<tr><td style=\"background-color: rgb(0,0,0); font-weight: bold; color: rgb(200,200,255); text-indent: 5px;\"><nobr>"
+ #define END_TABLE_BOLD_ROW "</nobr></td></tr>"
+
+ #define START_TABLE_NORMAL_ROW "<tr><td>"
+
+ #define SET_ANTI_ALIASING(p) \
+ (p).setRenderHint(QPainter::Antialiasing, KVI_OPTION_BOOL(KviOption_boolUseAntiAliasing)); \
+ (p).setRenderHint(QPainter::TextAntialiasing, KVI_OPTION_BOOL(KviOption_boolUseAntiAliasing));
+#else
+ #define START_TABLE_BOLD_ROW "<tr><td bgcolor=\"#303030\">" \
+ "<font color=\"#FFFFFF\"><nobr><b>"
+ #define END_TABLE_BOLD_ROW "</b></nobr></font></td></tr>"
+
+ #define START_TABLE_NORMAL_ROW "<tr><td bgcolor=\"#F0F0F0\">"
+
+ #define SET_ANTI_ALIASING(p)
+#endif
+
+
+#if defined(_KVI_OPTIONS_CPP_) || defined(_WANT_OPTION_FLAGS_)
+
+ // flag definitions
+
+ // section of the config file (rightmost 8 bits)
+ #define KviOption_sectFlagNone 0
+ #define KviOption_sectFlagFrame 1
+ #define KviOption_sectFlagMdi 2
+ #define KviOption_sectFlagTaskBar 3
+ #define KviOption_sectFlagWindows 4
+ #define KviOption_sectFlagIrcView 5
+ #define KviOption_sectFlagMsgType 6
+ #define KviOption_sectFlagMircColor 7
+ #define KviOption_sectFlagInput 8
+ #define KviOption_sectFlagUserParser 9
+ #define KviOption_sectFlagConnection 10
+ #define KviOption_sectFlagIrcSocket 11
+ #define KviOption_sectFlagUser 12
+ #define KviOption_sectFlagUserListView 13
+ #define KviOption_sectFlagLabel 14
+ #define KviOption_sectFlagModules 15
+ #define KviOption_sectFlagCtcp 16
+ #define KviOption_sectFlagDcc 17
+ #define KviOption_sectFlagGui 18
+ #define KviOption_sectFlagIrcToolBar 19
+ #define KviOption_sectFlagLogging 20
+ #define KviOption_sectFlagAntiSpam 21
+ #define KviOption_sectFlagAvatar 22
+ #define KviOption_sectFlagUrl 23
+ #define KviOption_sectFlagRecent 24
+ #define KviOption_sectFlagGeometry 25
+
+ #define KVI_NUM_OPTION_SECT_FLAGS 26
+
+ #define KviOption_sectMask 255
+
+ // other logical groupings of options
+ #define KviOption_groupTheme (1 << 8)
+
+ #define KviOption_groupMask (255 << 8)
+
+
+
+ // actions to take when an option is set
+ #define KviOption_resetNone 0
+ //#define KviOption_resetUpdateCaption (1 << 16) UNUSED!
+ #define KviOption_resetUpdateGui (1 << 17)
+ #define KviOption_resetUpdateTaskBar (1 << 18)
+ #define KviOption_resetUpdateAppFont (1 << 19)
+ #define KviOption_resetUpdatePseudoTransparency (1 << 20)
+ #define KviOption_resetRestartNotifyList (1 << 21)
+ #define KviOption_resetRestartIdentd (1 << 22)
+ #define KviOption_resetReloadImages (1 << 23)
+ #define KviOption_resetRestartLagMeter (1 << 24)
+ #define KviOption_resetRecentChannels (1 << 25)
+
+ #define KviOption_resetMask (~(KviOption_sectMask | KviOption_groupMask))
+
+ //for file pathes
+ #define KviOption_encodePath (1 << 25)
+
+#endif
+
+#endif //_KVI_OPTIONS_H_
diff --git a/src/kvirc/kernel/kvi_out.h b/src/kvirc/kernel/kvi_out.h
new file mode 100644
index 00000000..f73a4f69
--- /dev/null
+++ b/src/kvirc/kernel/kvi_out.h
@@ -0,0 +1,169 @@
+#ifndef _KVI_OUT_H_
+#define _KVI_OUT_H_
+
+//
+// File : kvi_out.h
+// Creation date : Fri Jun 30 2000 14:13:21 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#define KVI_OUT_NONE 0
+#define KVI_OUT_SELECT 1
+#define KVI_OUT_HIGHLIGHT 2
+#define KVI_OUT_URL 3
+#define KVI_OUT_LINK 4
+#define KVI_OUT_PARSERERROR 5
+#define KVI_OUT_PARSERWARNING 6
+#define KVI_OUT_HOSTLOOKUP 7
+#define KVI_OUT_SOCKETMESSAGE 8
+#define KVI_OUT_SOCKETWARNING 9
+#define KVI_OUT_SOCKETERROR 10
+#define KVI_OUT_SYSTEMERROR 11
+#define KVI_OUT_RAW 12
+#define KVI_OUT_CONNECTION 13
+#define KVI_OUT_SYSTEMWARNING 14
+#define KVI_OUT_SYSTEMMESSAGE 15
+#define KVI_OUT_UNHANDLED 16
+#define KVI_OUT_SERVERINFO 17
+#define KVI_OUT_MOTD 18
+#define KVI_OUT_SERVERPING 19
+#define KVI_OUT_JOIN 20
+#define KVI_OUT_PART 21
+#define KVI_OUT_UNRECOGNIZED 22
+#define KVI_OUT_TOPIC 23
+#define KVI_OUT_OWNPRIVMSG 24
+#define KVI_OUT_CHANPRIVMSG 25
+#define KVI_OUT_QUERYPRIVMSG 26
+#define KVI_OUT_CTCPREPLY 27
+#define KVI_OUT_CTCPREQUESTREPLIED 28
+#define KVI_OUT_CTCPREQUESTIGNORED 29
+#define KVI_OUT_CTCPREQUESTFLOOD 30
+#define KVI_OUT_CTCPREQUESTUNKNOWN 31
+#define KVI_OUT_ACTION 32
+#define KVI_OUT_AVATAR 33
+#define KVI_OUT_QUIT 34
+#define KVI_OUT_SPLIT 35
+#define KVI_OUT_QUITSPLIT 36
+#define KVI_OUT_NICK 37
+#define KVI_OUT_OP 38
+#define KVI_OUT_DEOP 39
+#define KVI_OUT_VOICE 40
+#define KVI_OUT_DEVOICE 41
+#define KVI_OUT_MODE 42
+#define KVI_OUT_KEY 43
+#define KVI_OUT_LIMIT 44
+#define KVI_OUT_BAN 45
+#define KVI_OUT_UNBAN 46
+#define KVI_OUT_BANEXCEPT 47
+#define KVI_OUT_BANUNEXCEPT 48
+#define KVI_OUT_INVITEEXCEPT 49
+#define KVI_OUT_INVITEUNEXCEPT 50
+#define KVI_OUT_CHANMODE 51
+#define KVI_OUT_WHO 52
+#define KVI_OUT_DCCREQUEST 53
+#define KVI_OUT_DCCMSG 54
+#define KVI_OUT_DCCERROR 55
+#define KVI_OUT_NICKNAMEPROBLEM 56
+#define KVI_OUT_WHOISUSER 57
+#define KVI_OUT_WHOISCHANNELS 58
+#define KVI_OUT_WHOISIDLE 59
+#define KVI_OUT_WHOISSERVER 60
+#define KVI_OUT_WHOISOTHER 61
+#define KVI_OUT_CREATIONTIME 62
+#define KVI_OUT_NOTIFYONLINE 63
+#define KVI_OUT_NOTIFYOFFLINE 64
+#define KVI_OUT_OWNPRIVMSGCRYPTED 65
+#define KVI_OUT_CHANPRIVMSGCRYPTED 66
+#define KVI_OUT_QUERYPRIVMSGCRYPTED 67
+#define KVI_OUT_DCCCHATMSG 68
+#define KVI_OUT_DCCCHATMSGCRYPTED 69
+#define KVI_OUT_IRC 70
+#define KVI_OUT_KICK 71
+#define KVI_OUT_LINKS 72
+#define KVI_OUT_SPAM 73
+#define KVI_OUT_ICQ 74
+#define KVI_OUT_ICQMESSAGE 75
+#define KVI_OUT_ICQMESSAGESENT 76
+#define KVI_OUT_CHANNELNOTICE 77
+#define KVI_OUT_CHANNELNOTICECRYPTED 78
+#define KVI_OUT_QUERYNOTICE 79
+#define KVI_OUT_QUERYNOTICECRYPTED 80
+#define KVI_OUT_SERVERNOTICE 81
+#define KVI_OUT_HALFOP 82
+#define KVI_OUT_CTCPREPLYUNKNOWN 83
+#define KVI_OUT_NICKSERV 84
+#define KVI_OUT_CHANSERV 85
+#define KVI_OUT_AWAY 86
+#define KVI_OUT_IDENT 87
+#define KVI_OUT_LIST 88
+#define KVI_OUT_HALFDEOP 89
+#define KVI_OUT_INVITE 90
+#define KVI_OUT_MULTIMEDIA 91
+#define KVI_OUT_QUERYTRACE 92
+#define KVI_OUT_WALLOPS 93
+#define KVI_OUT_JOINERROR 94
+#define KVI_OUT_BROADCASTPRIVMSG 95
+#define KVI_OUT_BROADCASTNOTICE 96
+#define KVI_OUT_MEKICK 97
+#define KVI_OUT_MEOP 98
+#define KVI_OUT_MEVOICE 99
+#define KVI_OUT_MEDEOP 100
+#define KVI_OUT_MEDEVOICE 101
+#define KVI_OUT_MEHALFOP 102
+#define KVI_OUT_MEDEHALFOP 103
+#define KVI_OUT_MEBAN 104
+#define KVI_OUT_MEUNBAN 105
+#define KVI_OUT_MEBANEXCEPT 106
+#define KVI_OUT_MEBANUNEXCEPT 107
+#define KVI_OUT_MEINVITEEXCEPT 108
+#define KVI_OUT_MEINVITEUNEXCEPT 109
+#define KVI_OUT_IGNORE 110
+#define KVI_OUT_STATS 111
+#define KVI_OUT_SSL 112
+#define KVI_OUT_SEARCH 113
+#define KVI_OUT_GENERICSUCCESS 114
+#define KVI_OUT_GENERICSTATUS 115
+#define KVI_OUT_GENERICVERBOSE 116
+#define KVI_OUT_GENERICWARNING 117
+#define KVI_OUT_GENERICERROR 118
+#define KVI_OUT_GENERICCRITICAL 119
+#define KVI_OUT_CHANADMIN 120
+#define KVI_OUT_DECHANADMIN 121
+#define KVI_OUT_MECHANADMIN 122
+#define KVI_OUT_MEDECHANADMIN 123
+#define KVI_OUT_USEROP 124
+#define KVI_OUT_USERDEOP 125
+#define KVI_OUT_MEUSEROP 126
+#define KVI_OUT_MEDEUSEROP 127
+#define KVI_OUT_VERBOSE 128
+#define KVI_OUT_MECHANOWNER 129
+#define KVI_OUT_CHANOWNER 130
+#define KVI_OUT_MEDECHANOWNER 131
+#define KVI_OUT_DECHANOWNER 132
+#define KVI_OUT_SERVERERROR 133
+#define KVI_OUT_HELP 134
+#define KVI_OUT_TEXTENCODING 135
+#define KVI_OUT_TORRENT 136
+
+//#define KVI_NUM_MSGTYPE_OPTIONS 136
+// UPDATE THE TOTAL COUNT IN kvi_options.h !!!!
+
+
+#endif //_KVI_OPTIONS_H_
diff --git a/src/kvirc/kernel/kvi_sslmaster.cpp b/src/kvirc/kernel/kvi_sslmaster.cpp
new file mode 100644
index 00000000..20630486
--- /dev/null
+++ b/src/kvirc/kernel/kvi_sslmaster.cpp
@@ -0,0 +1,168 @@
+//
+// File : kvi_sslmanager.cpp
+// Creation date : Mon Jun 17 2002 20:34:00 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#define __KVIRC__
+
+#include "kvi_sslmaster.h"
+
+#ifdef COMPILE_SSL_SUPPORT
+
+#include "kvi_window.h"
+#include "kvi_options.h"
+#include "kvi_out.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_locale.h"
+
+namespace KviSSLMaster
+{
+
+KVIRC_API void printSSLCipherInfo(KviWindow * wnd,const char * description,KviSSLCipherInfo * c)
+{
+ wnd->output(KVI_OUT_SSL,__tr2qs("[SSL]: %c%s"),KVI_TEXT_BOLD,description);
+ wnd->output(KVI_OUT_SSL,__tr2qs("[SSL]: Cipher: %c%s"),KVI_TEXT_BOLD,c->name());
+ wnd->output(KVI_OUT_SSL,__tr2qs("[SSL]: Version: %c%s"),KVI_TEXT_BOLD,c->version());
+ wnd->output(KVI_OUT_SSL,__tr2qs("[SSL]: Bits: %c%d (%d used)"),KVI_TEXT_BOLD,c->bits(),c->bitsUsed());
+// wnd->output(KVI_OUT_SSL,__tr2qs("[SSL]: Description: %c%s"),KVI_TEXT_BOLD,c->description());
+}
+
+KVIRC_API void printSSLCertificate(KviWindow * wnd,const char * description,KviSSLCertificate * c)
+{
+ wnd->output(KVI_OUT_SSL,__tr2qs("[SSL]: %c%s"),KVI_TEXT_BOLD,description);
+ wnd->output(KVI_OUT_SSL,__tr2qs("[SSL]: Version: %c%d"),KVI_TEXT_BOLD,c->version());
+ wnd->output(KVI_OUT_SSL,__tr2qs("[SSL]: Serial number: %c%d"),KVI_TEXT_BOLD,c->serialNumber());
+ wnd->output(KVI_OUT_SSL,__tr2qs("[SSL]: Subject:"));
+ wnd->output(KVI_OUT_SSL,__tr2qs("[SSL]: Common name: %c%s"),KVI_TEXT_BOLD,c->subjectCommonName());
+ wnd->output(KVI_OUT_SSL,__tr2qs("[SSL]: Organization: %c%s"),KVI_TEXT_BOLD,c->subjectOrganization());
+ wnd->output(KVI_OUT_SSL,__tr2qs("[SSL]: Organizational unit: %c%s"),KVI_TEXT_BOLD,c->subjectOrganizationalUnit());
+ wnd->output(KVI_OUT_SSL,__tr2qs("[SSL]: Country: %c%s"),KVI_TEXT_BOLD,c->subjectCountry());
+ wnd->output(KVI_OUT_SSL,__tr2qs("[SSL]: State or province: %c%s"),KVI_TEXT_BOLD,c->subjectStateOrProvince());
+ wnd->output(KVI_OUT_SSL,__tr2qs("[SSL]: Locality: %c%s"),KVI_TEXT_BOLD,c->subjectLocality());
+ wnd->output(KVI_OUT_SSL,__tr2qs("[SSL]: Issuer:"));
+ wnd->output(KVI_OUT_SSL,__tr2qs("[SSL]: Common name: %c%s"),KVI_TEXT_BOLD,c->issuerCommonName());
+ wnd->output(KVI_OUT_SSL,__tr2qs("[SSL]: Organization: %c%s"),KVI_TEXT_BOLD,c->issuerOrganization());
+ wnd->output(KVI_OUT_SSL,__tr2qs("[SSL]: Organizational unit: %c%s"),KVI_TEXT_BOLD,c->issuerOrganizationalUnit());
+ wnd->output(KVI_OUT_SSL,__tr2qs("[SSL]: Country: %c%s"),KVI_TEXT_BOLD,c->issuerCountry());
+ wnd->output(KVI_OUT_SSL,__tr2qs("[SSL]: State or province: %c%s"),KVI_TEXT_BOLD,c->issuerStateOrProvince());
+ wnd->output(KVI_OUT_SSL,__tr2qs("[SSL]: Locality: %c%s"),KVI_TEXT_BOLD,c->issuerLocality());
+ wnd->output(KVI_OUT_SSL,__tr2qs("[SSL]: Public key: %c%s (%d bits)"),KVI_TEXT_BOLD,c->publicKeyType(),c->publicKeyBits());
+ wnd->output(KVI_OUT_SSL,__tr2qs("[SSL]: Signature type: %c%s"),KVI_TEXT_BOLD,c->signatureType());
+ KviStr tmp = c->signatureContents();
+ if(tmp.len() > 40)
+ {
+ tmp.cutRight(tmp.len() - 40);
+ tmp.append("...");
+ }
+ wnd->output(KVI_OUT_SSL,__tr2qs("[SSL]: Signature contents: %c%s"),KVI_TEXT_BOLD,tmp.ptr());
+
+}
+
+KVIRC_API void printSSLConnectionInfo(KviWindow * wnd,KviSSL * s)
+{
+ KviSSLCertificate * sc = s->getPeerCertificate();
+ if(sc)
+ {
+ QString tmp(__tr2qs("Peer X509 certificate"));
+ KviSSLMaster::printSSLCertificate(wnd,tmp,sc);
+ delete sc;
+ } else wnd->outputNoFmt(KVI_OUT_SSL,__tr2qs("[SSL]: The peer didn't provide a certificate"));
+ KviSSLCipherInfo * ci = s->getCurrentCipherInfo();
+ if(ci)
+ {
+ QString tmp(__tr2qs("Current transmission cipher"));
+ KviSSLMaster::printSSLCipherInfo(wnd,tmp,ci);
+ delete ci;
+ } else wnd->outputNoFmt(KVI_OUT_SSL,__tr2qs("[SSL]: Can't find out the current cipher info"));
+}
+
+KVIRC_API KviSSL * allocSSL(KviWindow * wnd,kvi_socket_t sock,KviSSL::Method m,const char * contextString)
+{
+ KviSSL * s = new KviSSL();
+ if(!s->initContext(m))
+ {
+ delete s;
+ return 0;
+ }
+
+ if(!contextString)contextString = KviStr::emptyString().ptr();
+
+ if(KVI_OPTION_BOOL(KviOption_boolUseSSLCertificate))
+ {
+ switch(s->useCertificateFile(
+ KVI_OPTION_STRING(KviOption_stringSSLCertificatePath).utf8().data(),
+ KVI_OPTION_STRING(KviOption_stringSSLCertificatePass).utf8().data()))
+ {
+ case KviSSL::Success:
+ if(wnd)wnd->output(KVI_OUT_SSL,__tr2qs("[%s]: [SSL]: Using certificate file %s"),contextString,KVI_OPTION_STRING(KviOption_stringSSLCertificatePath).utf8().data());
+ break;
+ case KviSSL::FileIoError:
+ if(wnd)wnd->output(KVI_OUT_SSL,__tr2qs("[%s]: [SSL ERROR]: File I/O error while trying to use the certificate file %s"),contextString,KVI_OPTION_STRING(KviOption_stringSSLCertificatePath).utf8().data());
+ break;
+ default:
+ {
+ KviStr buffer;
+ while(s->getLastErrorString(buffer))
+ {
+ if(wnd)wnd->output(KVI_OUT_SSL,__tr2qs("[%s]: [SSL ERROR]: %s"),contextString,buffer.ptr());
+ }
+ }
+ break;
+ }
+ }
+ if(KVI_OPTION_BOOL(KviOption_boolUseSSLPrivateKey))
+ {
+ switch(s->usePrivateKeyFile(
+ KVI_OPTION_STRING(KviOption_stringSSLPrivateKeyPath).utf8().data(),
+ KVI_OPTION_STRING(KviOption_stringSSLPrivateKeyPass).utf8().data()))
+ {
+ case KviSSL::Success:
+ if(wnd)wnd->output(KVI_OUT_SSL,__tr2qs("[%s]: [SSL]: Using private key file %s"),contextString,KVI_OPTION_STRING(KviOption_stringSSLPrivateKeyPath).utf8().data());
+ break;
+ case KviSSL::FileIoError:
+ if(wnd)wnd->output(KVI_OUT_SSL,__tr2qs("[%s]: [SSL ERROR]: File I/O error while trying to use the private key file %s"),contextString,KVI_OPTION_STRING(KviOption_stringSSLPrivateKeyPath).utf8().data());
+ break;
+ default:
+ {
+ KviStr buffer;
+ while(s->getLastErrorString(buffer))
+ {
+ if(wnd)wnd->output(KVI_OUT_SSL,__tr2qs("[%s]: [SSL ERROR]: %s"),contextString,buffer.ptr());
+ }
+ }
+ break;
+ }
+ }
+
+ if(!s->initSocket(sock))
+ {
+ delete s;
+ return 0;
+ }
+
+ return s;
+}
+
+KVIRC_API void freeSSL(KviSSL * s)
+{
+ delete s;
+}
+
+};
+#endif
diff --git a/src/kvirc/kernel/kvi_sslmaster.h b/src/kvirc/kernel/kvi_sslmaster.h
new file mode 100644
index 00000000..7518d160
--- /dev/null
+++ b/src/kvirc/kernel/kvi_sslmaster.h
@@ -0,0 +1,47 @@
+#ifndef _KVI_SSLMASTER_H_
+#define _KVI_SSLMASTER_H_
+//
+// File : kvi_sslmaster.h
+// Creation date : Mon Jun 17 2002 20:34:00 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include "kvi_settings.h"
+
+#ifdef COMPILE_SSL_SUPPORT
+
+#include "kvi_ssl.h"
+#include "kvi_sockettype.h"
+
+class KviWindow;
+
+namespace KviSSLMaster
+{
+ extern KVIRC_API void printSSLCipherInfo(KviWindow * wnd,const char * description,KviSSLCipherInfo * c);
+ extern KVIRC_API void printSSLCertificate(KviWindow * wnd,const char * description,KviSSLCertificate * c);
+
+ extern KVIRC_API void printSSLConnectionInfo(KviWindow * wnd,KviSSL * s);
+
+ extern KVIRC_API KviSSL * allocSSL(KviWindow * wnd,kvi_socket_t sock,KviSSL::Method m,const char * contextString = 0);
+ extern KVIRC_API void freeSSL(KviSSL * s);
+}
+
+#endif
+
+
+#endif //_KVI_SSLMASTER_H_
diff --git a/src/kvirc/kernel/kvi_texticonmanager.cpp b/src/kvirc/kernel/kvi_texticonmanager.cpp
new file mode 100644
index 00000000..e15496bc
--- /dev/null
+++ b/src/kvirc/kernel/kvi_texticonmanager.cpp
@@ -0,0 +1,254 @@
+//=============================================================================
+//
+// File : kvi_texticonmanager.cpp
+// Creation date : Thu 15 May 2002 12:04:12 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#define __KVIRC__
+
+#define _KVI_TEXTICONMANAGER_CPP_
+
+#include "kvi_iconmanager.h"
+#include "kvi_texticonmanager.h"
+#include "kvi_string.h"
+#include "kvi_pointerlist.h"
+#include "kvi_config.h"
+#include "kvi_app.h"
+#include "kvi_confignames.h"
+
+#include <qpixmap.h>
+#include <qfile.h>
+
+KVIRC_API KviTextIconManager * g_pTextIconManager = 0;
+
+KviTextIcon::KviTextIcon(KviTextIcon* icon)
+{
+ m_iId=icon->id();
+ m_szFilename=icon->m_szFilename;
+}
+
+void KviTextIcon::setId(int id)
+{
+ m_iId=id;
+ m_szFilename=QString::null;
+}
+
+void KviTextIcon::setFilename(QString filename)
+{
+ m_iId=-1;
+ m_szFilename=filename;
+}
+
+QPixmap * KviTextIcon::pixmap()
+{
+ if(m_iId>=0)
+ {
+ return g_pIconManager->getSmallIcon(m_iId);
+ } else {
+ // This is actually wrong (at least for the current implementation).
+ // Users of this class expect the pointer to be permanent while
+ // g_pIconManager returns temporary pointers.
+ // KviIrcView will happily crash dereferencing a hollow pointer sooner or later
+ return g_pIconManager->getPixmap(m_szFilename);
+ }
+}
+
+KviTextIconManager::KviTextIconManager()
+: QObject()
+{
+ m_pTextIconDict = new KviPointerHashTable<QString,KviTextIcon>(47,false);
+ m_pTextIconDict->setAutoDelete(true);
+}
+
+KviTextIconManager::~KviTextIconManager()
+{
+ delete m_pTextIconDict;
+}
+
+void KviTextIconManager::clear()
+{
+ m_pTextIconDict->clear();
+}
+
+void KviTextIconManager::insert(const QString &name,int id)
+{
+ m_pTextIconDict->replace(name,new KviTextIcon(id));
+ emit changed();
+}
+
+void KviTextIconManager::insert(const QString &name,KviTextIcon& icon)
+{
+ m_pTextIconDict->replace(name,new KviTextIcon(&icon));
+ emit changed();
+}
+
+typedef struct _KviTextIconAssocEntry
+{
+ const char * name;
+ int iVal;
+} KviTextIconAssocEntry;
+
+static KviTextIconAssocEntry default_associations[]=
+{
+ { ":)" , KVI_SMALLICON_SMILE },
+ { ":*" , KVI_SMALLICON_KISS },
+ { ":D" , KVI_SMALLICON_BIGGRIN },
+ { ":(" , KVI_SMALLICON_UGLY },
+ { ":/" , KVI_SMALLICON_ANGRY },
+ { ":O" , KVI_SMALLICON_SURPRISED2 },
+ { ":P" , KVI_SMALLICON_TONGUE },
+ { ";)" , KVI_SMALLICON_EYE },
+ { ":°)" , KVI_SMALLICON_TEARSMILE },
+ { ":°" , KVI_SMALLICON_CRY },
+ { ":S" , KVI_SMALLICON_AFRAID },
+ { ":|" , KVI_SMALLICON_DEMORALIZED },
+ { ":P°" , KVI_SMALLICON_SLURP },
+ { 0 , 0 }
+};
+
+void KviTextIconManager::checkDefaultAssociations()
+{
+ for(int i=0;default_associations[i].name;i++)
+ {
+ if(!m_pTextIconDict->find(default_associations[i].name))
+ insert(QString::fromUtf8(default_associations[i].name),default_associations[i].iVal);
+ }
+ emit changed();
+}
+
+// this MUST match the ConfigUpdate entry in the configuration
+// file shipped with KVIrc.
+#define TEXTICONMANAGER_CURRENT_CONFIG_UPDATE 3
+
+void KviTextIconManager::load()
+{
+ KviStr tmps;
+ int upd = 0;
+ if(g_pApp->getReadOnlyConfigPath(tmps,KVI_CONFIGFILE_TEXTICONS))
+ {
+ upd = load(tmps.ptr(),false);
+ }
+
+ if(upd == TEXTICONMANAGER_CURRENT_CONFIG_UPDATE)return;
+
+ // do a merge of the texticons if we have a new config version
+ QString tmp;
+ g_pApp->getGlobalKvircDirectory(tmp,KviApp::Config,KVI_CONFIGFILE_TEXTICONS);
+ if(QFile::exists(tmp))load(tmp,true);
+}
+
+void KviTextIconManager::save()
+{
+ QString tmp;
+ g_pApp->getLocalKvircDirectory(tmp,KviApp::Config,KVI_CONFIGFILE_TEXTICONS);
+ save(tmp);
+}
+
+// returns the config update
+int KviTextIconManager::load(const QString &filename,bool bMerge)
+{
+ if(!bMerge)m_pTextIconDict->clear();
+ KviConfig cfg(filename,KviConfig::Read);
+
+ cfg.setGroup("Manager");
+ int upd = cfg.readIntEntry("ConfigUpdate",0);
+
+ KviConfigGroup * dict = cfg.dict()->find("TextIcons");
+ if(dict)
+ {
+ KviConfigGroupIterator it(*dict);
+
+ KviPointerList<QString> names;
+ names.setAutoDelete(true);
+
+ while(it.current())
+ {
+ names.append(new QString(it.currentKey()));
+ ++it;
+ }
+
+ cfg.setGroup("TextIcons");
+
+ for(QString * s = names.first();s;s = names.next())
+ {
+ int id = cfg.readIntEntry(*s,-1);
+ QString szTmp;
+ QPixmap * pix=0;
+// debug("%s %s %i %i",__FILE__,__FUNCTION__,__LINE__,id);
+ if(id!=-1)
+ pix = g_pIconManager->getSmallIcon(id);
+ else {
+ szTmp=cfg.readEntry(*s);
+ pix=g_pIconManager->getPixmap(szTmp);
+ if(!pix)
+ {
+ id=KVI_SMALLICON_HELP;
+ pix = g_pIconManager->getSmallIcon(id);
+ }
+ }
+ if(pix)
+ {
+ if(bMerge)
+ {
+ if(!m_pTextIconDict->find(*s))
+ if(id!=-1)
+ m_pTextIconDict->replace(*s,new KviTextIcon(id));
+ else
+ m_pTextIconDict->replace(*s,new KviTextIcon(szTmp));
+ } else {
+ if(id!=-1)
+ m_pTextIconDict->replace(*s,new KviTextIcon(id));
+ else
+ m_pTextIconDict->replace(*s,new KviTextIcon(szTmp));
+ }
+ }
+ }
+ }
+
+ checkDefaultAssociations();
+ emit changed();
+
+ return upd;
+}
+
+void KviTextIconManager::save(const QString &filename)
+{
+ KviConfig cfg(filename,KviConfig::Write);
+
+ cfg.setGroup("Manager");
+ cfg.writeEntry("ConfigUpdate",TEXTICONMANAGER_CURRENT_CONFIG_UPDATE);
+
+
+ cfg.setGroup("TextIcons");
+
+ KviPointerHashTableIterator<QString,KviTextIcon> it(*m_pTextIconDict);
+ while(KviTextIcon * i = it.current())
+ {
+ if(i->id()!=-1)
+ cfg.writeEntry(it.currentKey(),i->id());
+ else
+ cfg.writeEntry(it.currentKey(),i->filename());
+ ++it;
+ }
+}
+
+#include "kvi_texticonmanager.moc"
diff --git a/src/kvirc/kernel/kvi_texticonmanager.h b/src/kvirc/kernel/kvi_texticonmanager.h
new file mode 100644
index 00000000..5f76697c
--- /dev/null
+++ b/src/kvirc/kernel/kvi_texticonmanager.h
@@ -0,0 +1,85 @@
+#ifndef _KVI_TEXTICONMANAGER_H_
+#define _KVI_TEXTICONMANAGER_H_
+
+//=============================================================================
+//
+// File : kvi_texticonmanager.h
+// Creation date : Thu 15 May 2002 12:04:12 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include <qpixmap.h>
+#include "kvi_pointerhashtable.h"
+
+
+class KVIRC_API KviTextIcon
+{
+protected:
+ int m_iId;
+ QString m_szFilename;
+public:
+ KviTextIcon(int id)
+ : m_iId(id) {};
+ KviTextIcon(QString szFile)
+ : m_iId(-1),m_szFilename(szFile) {};
+ KviTextIcon(KviTextIcon* icon);
+ ~KviTextIcon(){};
+public:
+ int id(){ return m_iId; };
+ void setId(int id);
+ void setFilename(QString filename);
+ QString filename(){ return m_szFilename; };
+ QPixmap * pixmap();
+};
+
+class KVIRC_API KviTextIconManager : public QObject
+{
+ friend class KviTextIconWindow;
+ friend class KviTextIconsOptionsWidget;
+ Q_OBJECT
+public:
+ KviTextIconManager();
+ ~KviTextIconManager();
+private:
+ KviPointerHashTable<QString,KviTextIcon> * m_pTextIconDict;
+signals:
+ void changed();
+public:
+ KviPointerHashTable<QString,KviTextIcon> * textIconDict(){ return m_pTextIconDict; };
+ void checkDefaultAssociations();
+ void clear();
+ void insert(const QString &name,int id);
+ void insert(const QString &name,KviTextIcon& icon);
+ KviTextIcon * lookupTextIcon(const QString &name){ return m_pTextIconDict->find(name); };
+ void load();
+ void save();
+protected:
+ void save(const QString &filename);
+ int load(const QString &filename,bool bMerge = false);
+};
+
+#ifndef _KVI_TEXTICONMANAGER_CPP_
+ extern KVIRC_API KviTextIconManager * g_pTextIconManager;
+#endif
+
+
+#endif //_KVI_TEXTICONMANAGER_H_
diff --git a/src/kvirc/kernel/kvi_theme.cpp b/src/kvirc/kernel/kvi_theme.cpp
new file mode 100644
index 00000000..e9ac22ec
--- /dev/null
+++ b/src/kvirc/kernel/kvi_theme.cpp
@@ -0,0 +1,299 @@
+//=============================================================================
+//
+// File : kvi_themeinfo.cpp
+// Creation date : Mon Jan 08 2007 03:23:00 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+#include "kvi_theme.h"
+#include "kvi_fileutils.h"
+#include "kvi_config.h"
+#include "kvi_locale.h"
+#include "kvi_miscutils.h"
+#include "kvi_sourcesdate.h"
+
+#include <qimage.h>
+
+#define KVI_THEME_SMALL_SCREENSHOT_NAME "screenshot_small.png"
+#define KVI_THEME_MEDIUM_SCREENSHOT_NAME "screenshot_medium.png"
+#define KVI_THEME_LARGE_SCREENSHOT_NAME "screenshot.png"
+
+#ifdef COMPILE_USE_QT4
+ #define QIMAGE_SCALE_MIN Qt::KeepAspectRatio
+#else
+ #define QIMAGE_SCALE_MIN QImage::ScaleMin
+#endif
+
+KviThemeInfo::KviThemeInfo()
+: KviHeapObject()
+{
+}
+
+KviThemeInfo::~KviThemeInfo()
+{
+}
+
+
+
+bool KviThemeInfo::load(const QString &szThemeFileName)
+{
+ if(!KviFileUtils::fileExists(szThemeFileName))
+ {
+ m_szLastError = __tr2qs("The theme information file does not exist");
+ return false;
+ }
+
+ KviConfig cfg(szThemeFileName,KviConfig::Read);
+
+ cfg.setGroup(KVI_THEMEINFO_CONFIG_GROUP);
+
+ m_szThemeEngineVersion = cfg.readQStringEntry("ThemeEngineVersion","1.0.0");
+ if(KviMiscUtils::compareVersions(m_szThemeEngineVersion,KVI_CURRENT_THEME_ENGINE_VERSION) < 0)
+ {
+ KviQString::sprintf(m_szLastError,__tr2qs("This KVIrc executable is too old for this theme (minimum theme engine version required is %Q while this theme engine has version %s)"),&m_szThemeEngineVersion,KVI_CURRENT_THEME_ENGINE_VERSION);
+ return false; // incompatible theme engine (will not work)
+ }
+
+ // mandatory fields
+ m_szName = cfg.readQStringEntry("Name","");
+
+ if(m_szName.isEmpty())
+ {
+ m_szLastError = __tr2qs("Theme information file is not valid");
+ return false;
+ }
+
+ // optional fields
+ m_szVersion = cfg.readQStringEntry("Version","");
+ if(m_szVersion.isEmpty())
+ m_szVersion = "?.?.?";
+ m_szAuthor = cfg.readQStringEntry("Author","");
+ QString szUnknown = __tr2qs("Unknown");
+ if(m_szAuthor.isEmpty())
+ m_szAuthor = szUnknown;
+ m_szDescription = cfg.readQStringEntry("Description","");
+ m_szDate = cfg.readQStringEntry("Date","");
+ if(m_szDate.isEmpty())
+ m_szDate = szUnknown;
+ m_szApplication = cfg.readQStringEntry("Application","");
+ if(m_szApplication.isEmpty())
+ m_szApplication = szUnknown;
+
+ return true;
+}
+
+bool KviThemeInfo::save(const QString &szThemeFileName)
+{
+ KviConfig inf(szThemeFileName,KviConfig::Write);
+
+ inf.clear();
+
+ inf.setGroup(KVI_THEMEINFO_CONFIG_GROUP);
+
+ inf.writeEntry("Name",m_szName);
+ inf.writeEntry("Version",m_szVersion);
+ inf.writeEntry("Author",m_szAuthor);
+ inf.writeEntry("Description",m_szDescription);
+ inf.writeEntry("Date",m_szDate);
+ inf.writeEntry("ThemeEngineVersion",KVI_CURRENT_THEME_ENGINE_VERSION);
+ inf.writeEntry("Application","KVIrc " KVI_VERSION "." KVI_SOURCES_DATE);
+
+ return true;
+}
+
+bool KviThemeInfo::loadFromDirectory(const QString &szThemeDirectory,bool bIgnoreThemeData)
+{
+ QString szD = szThemeDirectory;
+ szD.append(KVI_PATH_SEPARATOR_CHAR);
+ szD.append(KVI_THEMEINFO_FILE_NAME);
+
+ if(!load(szD))
+ return false; // loading failed for some reason
+
+ m_szAbsoluteDirectory = szThemeDirectory;
+
+ if(bIgnoreThemeData)
+ return true; // assume success
+
+ // check if themedata file exists
+ szD = szThemeDirectory;
+ szD.append(KVI_PATH_SEPARATOR_CHAR);
+ szD.append(KVI_THEMEDATA_FILE_NAME);
+
+ return KviFileUtils::fileExists(szD);
+}
+
+QString KviThemeInfo::smallScreenshotPath()
+{
+ QString ret;
+ if(!m_szAbsoluteDirectory.isEmpty())
+ {
+ ret = m_szAbsoluteDirectory;
+ KviQString::ensureLastCharIs(ret,KVI_PATH_SEPARATOR_CHAR);
+ ret.append(KVI_THEME_SMALL_SCREENSHOT_NAME);
+ }
+ return ret;
+}
+
+const QPixmap & KviThemeInfo::smallScreenshot()
+{
+ if(!m_pixScreenshotSmall.isNull())return m_pixScreenshotSmall;
+
+ if(!m_szAbsoluteDirectory.isEmpty())
+ {
+ QString szFileName = m_szAbsoluteDirectory;
+ KviQString::ensureLastCharIs(szFileName,KVI_PATH_SEPARATOR_CHAR);
+ szFileName.append(KVI_THEME_SMALL_SCREENSHOT_NAME);
+ QPixmap pix(szFileName);
+ if(!pix.isNull())
+ {
+ m_pixScreenshotSmall = pix;
+ return m_pixScreenshotSmall;
+ }
+ // try to scale it from the large one (and save it by the way)
+ pix = mediumScreenshot();
+ if(pix.isNull())return m_pixScreenshotSmall;
+
+ if(pix.width() > 300 || pix.height() > 225)
+ {
+ QImage sbri = pix.convertToImage();
+ pix.convertFromImage(sbri.smoothScale(300,225,QIMAGE_SCALE_MIN));
+ }
+
+ pix.save(szFileName,"PNG");
+
+ m_pixScreenshotSmall = pix;
+ return m_pixScreenshotSmall;
+ }
+
+ return m_pixScreenshotSmall;
+}
+
+const QPixmap & KviThemeInfo::mediumScreenshot()
+{
+ if(!m_pixScreenshotMedium.isNull())return m_pixScreenshotMedium;
+
+ if(!m_szAbsoluteDirectory.isEmpty())
+ {
+ QString szFileName = m_szAbsoluteDirectory;
+ KviQString::ensureLastCharIs(szFileName,KVI_PATH_SEPARATOR_CHAR);
+ szFileName.append(KVI_THEME_MEDIUM_SCREENSHOT_NAME);
+ QPixmap pix(szFileName);
+ if(!pix.isNull())
+ {
+ m_pixScreenshotMedium = pix;
+ return m_pixScreenshotMedium;
+ }
+ // try to scale it from the large one (and save it by the way)
+ pix = largeScreenshot();
+ if(pix.isNull())return m_pixScreenshotMedium;
+
+ if(pix.width() > 600 || pix.height() > 450)
+ {
+ QImage sbri = pix.convertToImage();
+ pix.convertFromImage(sbri.smoothScale(600,450,QIMAGE_SCALE_MIN));
+ }
+
+ pix.save(szFileName,"PNG");
+
+ m_pixScreenshotMedium = pix;
+ return m_pixScreenshotMedium;
+ }
+
+ return m_pixScreenshotMedium;
+}
+
+const QPixmap & KviThemeInfo::largeScreenshot()
+{
+ if(!m_pixScreenshotLarge.isNull())return m_pixScreenshotLarge;
+
+ if(!m_szAbsoluteDirectory.isEmpty())
+ {
+ QString szFileName = m_szAbsoluteDirectory;
+ KviQString::ensureLastCharIs(szFileName,KVI_PATH_SEPARATOR_CHAR);
+ szFileName.append(KVI_THEME_LARGE_SCREENSHOT_NAME);
+ QPixmap pix(szFileName);
+ if(pix.isNull())return m_pixScreenshotLarge;
+ m_pixScreenshotLarge = pix;
+ }
+ return m_pixScreenshotLarge;
+}
+
+
+namespace KviTheme
+{
+ bool saveScreenshots(KviThemeInfo &options,const QString &szOriginalScreenshotPath)
+ {
+ QImage pix(szOriginalScreenshotPath);
+ if(pix.isNull())
+ {
+ options.setLastError(__tr2qs("Failed to load the specified screenshot image"));
+ return false;
+ }
+
+ QPixmap out;
+
+ QString szScreenshotFileName = options.absoluteDirectory();
+ if(szScreenshotFileName.isEmpty())
+ {
+ options.setLastError(__tr2qs("Invalid option"));
+ return false;
+ }
+
+ KviQString::ensureLastCharIs(szScreenshotFileName,KVI_PATH_SEPARATOR_CHAR);
+ szScreenshotFileName.append(KVI_THEME_LARGE_SCREENSHOT_NAME);
+ if(!pix.save(szScreenshotFileName,"PNG"))
+ {
+ options.setLastError(__tr2qs("Failed to save the screenshot image"));
+ return false;
+ }
+
+ if(pix.width() > 600 || pix.height() > 450)
+ out.convertFromImage(pix.smoothScale(600,450,QIMAGE_SCALE_MIN));
+ else
+ out.convertFromImage(pix);
+
+ szScreenshotFileName = options.absoluteDirectory();
+ KviQString::ensureLastCharIs(szScreenshotFileName,KVI_PATH_SEPARATOR_CHAR);
+ szScreenshotFileName.append(KVI_THEME_MEDIUM_SCREENSHOT_NAME);
+ if(!out.save(szScreenshotFileName,"PNG"))
+ {
+ options.setLastError(__tr2qs("Failed to save the screenshot image"));
+ return false;
+ }
+
+ if(pix.width() > 300 || pix.height() > 225)
+ out.convertFromImage(pix.smoothScale(300,225,QIMAGE_SCALE_MIN));
+ else
+ out.convertFromImage(pix);
+
+ szScreenshotFileName = options.absoluteDirectory();
+ KviQString::ensureLastCharIs(szScreenshotFileName,KVI_PATH_SEPARATOR_CHAR);
+ szScreenshotFileName.append(KVI_THEME_SMALL_SCREENSHOT_NAME);
+ if(!out.save(szScreenshotFileName,"PNG"))
+ {
+ options.setLastError(__tr2qs("Failed to save the screenshot image"));
+ return false;
+ }
+
+ return true;
+ }
+};
diff --git a/src/kvirc/kernel/kvi_theme.h b/src/kvirc/kernel/kvi_theme.h
new file mode 100644
index 00000000..2545e51e
--- /dev/null
+++ b/src/kvirc/kernel/kvi_theme.h
@@ -0,0 +1,171 @@
+#ifndef _KVI_THEME_H_
+#define _KVI_THEME_H_
+
+//=============================================================================
+//
+// File : kvi_theme.h
+// Creation date : Mon Jan 08 2007 03:23:00 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_heapobject.h"
+
+#include "kvi_fileextensions.h"
+
+#include <qpixmap.h>
+
+#define KVI_THEMEINFO_FILE_NAME "themeinfo." KVI_FILEEXTENSION_CONFIG
+#define KVI_THEMEDATA_FILE_NAME "themedata." KVI_FILEEXTENSION_CONFIG
+#define KVI_THEMEINFO_CONFIG_GROUP "ThemeInfo"
+#define KVI_THEMEDATA_CONFIG_GROUP "ThemeData"
+
+///
+/// The current theme engine version: bump up if you make INCOMPATIBLE
+/// changes in the method of saving the theme.
+///
+#define KVI_CURRENT_THEME_ENGINE_VERSION "1.0.0"
+
+///
+/// \class KviThemeInfo
+///
+/// \brief A set of informations about a KVIrc theme
+///
+/// This object contains a set of informations about
+/// a theme that can be read and stored to a standard
+/// KVIrc configuration file (which is usually named
+/// themeinfo.kvc but this is not strictly necessary).
+///
+class KVIRC_API KviThemeInfo : public KviHeapObject
+{
+public:
+ KviThemeInfo();
+ ~KviThemeInfo();
+protected:
+ QString m_szName; //< name of the theme
+ QString m_szVersion; //< version of the theme
+ QString m_szSubdirectory; //< subdirectory of $LOCALKVIRCDIR/themes where the theme is saved to (not always used)
+ QString m_szAbsoluteDirectory; //< absolute directory where the theme should be saved to (or is loaded from)
+ QString m_szAuthor; //< author of the theme
+ QString m_szDescription; //< description of the theme
+ QString m_szDate; //< theme creation date
+ QString m_szApplication; //< theme creation (KVIrc) version
+ QString m_szThemeEngineVersion; //< the theme engine version that saved this theme
+
+ QString m_szLastError; //< reported when some function fails
+
+ QPixmap m_pixScreenshotLarge; //< the large screenshot pixmap
+ QPixmap m_pixScreenshotMedium; //< the medium screenshot pixmap
+ QPixmap m_pixScreenshotSmall; //< the small screenshot pixmap
+public:
+ ///
+ /// load data from a specified theme config file
+ ///
+ bool load(const QString &szThemeFileName);
+ ///
+ /// save the currently defined theme configuration in the specified file
+ ///
+ bool save(const QString &szThemeFileName);
+
+ const QString & lastError(){ return m_szLastError; };
+ void setLastError(const QString &szLastError){ m_szLastError = szLastError; };
+ const QString & name(){ return m_szName; };
+ void setName(const QString &szName){ m_szName = szName; };
+ const QString & version(){ return m_szVersion; };
+ void setVersion(const QString &szVersion){ m_szVersion = szVersion; };
+ const QString & subdirectory(){ return m_szSubdirectory; };
+ void setSubdirectory(const QString &szSubdirectory){ m_szSubdirectory = szSubdirectory; };
+ const QString & absoluteDirectory(){ return m_szAbsoluteDirectory; };
+ void setAbsoluteDirectory(const QString &szAbsoluteDirectory){ m_szAbsoluteDirectory = szAbsoluteDirectory; }
+ const QString & author(){ return m_szAuthor; };
+ void setAuthor(const QString &szAuthor){ m_szAuthor = szAuthor; };
+ const QString & description(){ return m_szDescription; };
+ void setDescription(const QString &szDescription){ m_szDescription = szDescription; };
+ const QString & date(){ return m_szDate; };
+ void setDate(const QString &szDate){ m_szDate = szDate; };
+ const QString & application(){ return m_szApplication; };
+ void setApplication(const QString &szApplication){ m_szApplication = szApplication; };
+ const QString & themeEngineVersion(){ return m_szThemeEngineVersion; };
+ void setThemeEngineVersion(const QString &szThemeEngineVersion){ m_szThemeEngineVersion = szThemeEngineVersion; };
+
+ ///
+ /// Attempt to load a themeinfo.kvc file present in the specified directory.
+ /// This function will fail if the directory contains a valid themeinfo.kvc
+ /// file but no themedata.kvc file unless bIgnoreThemeData is set to true
+ ///
+ bool loadFromDirectory(const QString &szThemeDirectory,bool bIgnoreThemeData = false);
+
+ ///
+ /// Attempt to load the theme screenshot from THEMEDIR/screenshot_*.png
+ /// This function will work only if the absoluteDirectory() of the theme
+ /// has been set, otherwise the returned pixmap will be null.
+ ///
+ const QPixmap & smallScreenshot();
+ ///
+ /// Attempt to load the theme screenshot from THEMEDIR/screenshot_*.png
+ /// This function will work only if the absoluteDirectory() of the theme
+ /// has been set, otherwise the returned pixmap will be null.
+ ///
+ const QPixmap & mediumScreenshot();
+ ///
+ /// Attempt to load the theme screenshot from THEMEDIR/screenshot_*.png
+ /// This function will work only if the absoluteDirectory() of the theme
+ /// has been set, otherwise the returned pixmap will be null.
+ ///
+ const QPixmap & largeScreenshot();
+ ///
+ /// Attempt to load the theme screenshot from THEMEDIR/screenshot_*.png
+ /// This function will work only if the absoluteDirectory() of the theme
+ /// has been set, otherwise the returned pixmap will be null.
+ ///
+ QString smallScreenshotPath();
+};
+
+namespace KviTheme
+{
+ ///
+ /// Attempt to load (apply) a theme in the specified directory
+ /// Will return true on success and false on failure.
+ /// On success this function will return the theme informations in the buffer.
+ /// On failure this function will also set buffer.lastError() to a meaningful value
+ /// Note that for convenience this function is implemented in kvi_options.cpp
+ ///
+ bool KVIRC_API load(const QString &szThemeDir,KviThemeInfo &buffer);
+ ///
+ /// Save a theme given the specified options.
+ /// Will return true on success and false on failure.
+ /// On failure this function will also set options.lastError() to a meaningful value
+ /// This function requires both absoluteDirectory() and subdirectory() to be
+ /// set to the right values. In theory this function could save a theme
+ /// in a directory different than $KVIRC_LOCAL_DIR/themes/subdirectory
+ /// but this feature is actually unused.
+ /// Note that for convenience this function is implemented in kvi_options.cpp
+ ///
+ bool KVIRC_API save(KviThemeInfo &options);
+ ///
+ /// Save the theme screenshots in the given EXISTING directory and given
+ /// an existing screenshot on disk (usually in the tmp directory).
+ ///
+ bool KVIRC_API saveScreenshots(KviThemeInfo &options,const QString &szOriginalScreenshotPath);
+};
+
+
+#endif //_KVI_THEME_H_
diff --git a/src/kvirc/kernel/kvi_useraction.cpp b/src/kvirc/kernel/kvi_useraction.cpp
new file mode 100644
index 00000000..15a02bcf
--- /dev/null
+++ b/src/kvirc/kernel/kvi_useraction.cpp
@@ -0,0 +1,46 @@
+//=============================================================================
+//
+// File : kvi_userlistview.cpp
+// Creation date : Tue Mar 18 2003 13:36:12 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_useraction.h"
+
+static int useraction_table[KVI_NUM_USERACTION_TYPES]=
+{
+ 25, // ACTION (typically human)
+ 25, // PRIVMSG
+ 25, // NOTICE
+ 20, // TOPIC
+ 5, // KICK
+ -5, // NICK
+ -20, // CHANMODE
+ -25, // JOIN
+ -25 // PART (this works only for channels and not for single users on channels)
+};
+
+int kvi_getUserActionTemperature(unsigned int uIdx)
+{
+ return useraction_table[uIdx];
+}
+
diff --git a/src/kvirc/kernel/kvi_useraction.h b/src/kvirc/kernel/kvi_useraction.h
new file mode 100644
index 00000000..648264e5
--- /dev/null
+++ b/src/kvirc/kernel/kvi_useraction.h
@@ -0,0 +1,83 @@
+#ifndef _KVI_USERACTION_H_
+#define _KVI_USERACTION_H_
+
+//=============================================================================
+//
+// File : kvi_userlistview.h
+// Creation date : Tue Mar 18 2003 13:36:12 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+// This file defines the user action "temperatures".
+// The more "hot" is an action, the more humanity is in it
+
+#define KVI_USERACTION_ACTION 0
+#define KVI_USERACTION_PRIVMSG 1
+#define KVI_USERACTION_NOTICE 2
+#define KVI_USERACTION_TOPIC 3
+#define KVI_USERACTION_KICK 4
+#define KVI_USERACTION_NICK 5
+#define KVI_USERACTION_CHANMODE 6
+#define KVI_USERACTION_JOIN 7
+#define KVI_USERACTION_PART 8
+
+#define KVI_NUM_USERACTION_TYPES 9
+
+
+extern KVIRC_API int kvi_getUserActionTemperature(unsigned int uIdx);
+
+
+//
+// ACTION 30
+// NOTICE 25
+// PRIVMSG 25
+// TOPIC 20
+// KICK 10
+// OP 5
+// VOICE 5
+// DEOP -5
+// DEVOICE -5
+// UNBAN -15
+// BAN -20
+// CHANMODE -25
+// NICK -30
+// JOIN -30
+//
+
+// These are the temperature levels for a single user on a channel
+
+// Maximum : can't go above this
+#define KVI_MAX_TEMPERATURE 150
+// Hot : human
+#define KVI_HOT_TEMPERATURE 100
+// Half hot : signs of humanity
+#define KVI_HALF_HOT_TEMPERATURE 40
+// Mid : uncertain
+#define KVI_MID_TEMPERATURE 0
+// Half cold : automa ?
+#define KVI_HALF_COLD_TEMPERATURE -40
+// Cold : bot
+#define KVI_COLD_TEMPERATURE -100
+// Minimum : can't drop below this
+#define KVI_MIN_TEMPERATURE -150
+
+#endif // _KVI_USERACTION_H_
diff --git a/src/kvirc/kernel/kvi_userinput.cpp b/src/kvirc/kernel/kvi_userinput.cpp
new file mode 100644
index 00000000..134d4256
--- /dev/null
+++ b/src/kvirc/kernel/kvi_userinput.cpp
@@ -0,0 +1,148 @@
+//=============================================================================
+//
+// File : kvi_userinput.cpp
+// Created on Sun 25 Sep 2005 05:27:57 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_userinput.h"
+#include "kvi_kvs_variantlist.h"
+#include "kvi_console.h"
+#include "kvi_kvs_script.h"
+#include "kvi_locale.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectionuserinfo.h"
+#include "kvi_out.h"
+#include "kvi_options.h"
+#include "kvi_kvs_eventtriggers.h"
+
+namespace KviUserInput
+{
+ bool parse(QString &szData,KviWindow * pWindow,const QString &szContext,bool bUserFriendlyCommandline)
+ {
+ const QChar * b = KviQString::nullTerminatedArray(szData);
+ const QChar * c = b;
+ if(!c)return true; // empty
+
+ while(c->isSpace())c++;
+ if(!c->unicode())return true; // empty
+
+ if(c->unicode() == '\\')
+ {
+ c++;
+ if(c->unicode() != '/')c--;
+ } else {
+ if(c->unicode() == '/')
+ {
+ c++;
+ if(c->unicode() != '/')
+ {
+ szData.remove(0,c-b);
+ return parseCommand(szData,pWindow,szContext,bUserFriendlyCommandline);
+ } else {
+ // C++ comment, probably
+ c--;
+ }
+ }
+ }
+
+ if(KVS_TRIGGER_EVENT_1_HALTED(KviEvent_OnTextInput,pWindow,szData))
+ return true; // halted
+
+ if(c != b)szData.remove(0,c-b);
+ parseNonCommand(szData,pWindow);
+ return true;
+ }
+
+ bool parseCommand(const QString &szData,KviWindow * pWindow,const QString &szContext,bool bUserFriendlyCommandline)
+ {
+ if(bUserFriendlyCommandline)
+ {
+ static QString szUserFriendlyCommandlineContext(__tr2qs("commandline::userfriendly"));
+ QString szCmd=szData;
+ // escape any -$;\%(
+ szCmd.replace("\\","\\\\");
+ szCmd.replace("\"","\\\"");
+ szCmd.replace("$","\\$");
+ szCmd.replace("%","\\%");
+ szCmd.replace("(","\\(");
+ szCmd.replace(";","\\;");
+ szCmd.replace("-","\\-");
+ szCmd.replace("+","\\+");
+ KviKvsScript kvs(szContext.isEmpty() ? szUserFriendlyCommandlineContext : szContext,szCmd);
+ return (kvs.run(pWindow,0,0) != KviKvsScript::Error);
+ } else {
+ static QString szCommandlineContext(__tr2qs("commandline::kvs"));
+ KviKvsScript kvs(szContext.isEmpty() ? szCommandlineContext : szContext,szData);
+ return (kvs.run(pWindow,0,0/*,KviKvsScript::AssumeLocals*/) != KviKvsScript::Error);
+ }
+ }
+
+ void parseNonCommand(QString &szData,KviWindow * pWindow)
+ {
+ const QChar * aux = KviQString::nullTerminatedArray(szData);
+ const QChar * beg = aux;
+ if(!beg)return; // empty
+
+ while(aux->unicode())
+ {
+ while(aux->unicode() && (aux->unicode() != '\n'))aux++;
+ QString buf(beg,aux-beg);
+ if(aux->unicode() == '\n')aux++;
+ beg = aux;
+
+ if(buf.isEmpty())buf = " "; // avoid "No text to send" (d3vah)
+
+ switch(pWindow->type())
+ {
+ case KVI_WINDOW_TYPE_CONSOLE:
+ if(pWindow->connection())
+ {
+ KviQCString data = pWindow->connection()->encodeText(buf);
+ if(((KviConsole *)pWindow)->connection()->sendData(data.data()))
+ {
+ pWindow->output(KVI_OUT_RAW,"[RAW]: %Q",&buf);
+ return;
+ }
+ }
+ pWindow->output(KVI_OUT_PARSERERROR,__tr2qs("You are not connected to a server"));
+ break;
+ case KVI_WINDOW_TYPE_CHANNEL:
+ case KVI_WINDOW_TYPE_QUERY:
+ if(pWindow->connection())
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolExitAwayOnInput))
+ if(pWindow->connection()->userInfo()->isAway())
+ parseCommand("back",pWindow->console());
+ }
+ pWindow->ownMessage(buf);
+ break;
+ case KVI_WINDOW_TYPE_DCCCHAT:
+ pWindow->ownMessage(buf);
+ break;
+ default:
+ // FIXME: Should pass the message somewhere ?.. a KviWindow handler ?
+ break;
+ }
+ }
+ }
+};
diff --git a/src/kvirc/kernel/kvi_userinput.h b/src/kvirc/kernel/kvi_userinput.h
new file mode 100644
index 00000000..08dac61e
--- /dev/null
+++ b/src/kvirc/kernel/kvi_userinput.h
@@ -0,0 +1,43 @@
+#ifndef _KVI_USERINPUT_H_
+#define _KVI_USERINPUT_H_
+//=============================================================================
+//
+// File : kvi_userinput.h
+// Created on Sun 25 Sep 2005 05:27:57 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_window.h"
+
+namespace KviUserInput
+{
+ // WARNING: May destroy szData
+ // returns false if szData is a command and it fails to run
+ KVIRC_API bool parse(QString &szData,KviWindow * pWindow,const QString &szContext = KviQString::empty,bool bUserFriendlyCommandline = false);
+
+ KVIRC_API bool parseCommand(const QString &szData,KviWindow * pWindow,const QString &szContext = KviQString::empty,bool bUserFriendlyCommandline = false);
+ //bool parseCommandWithSingleArgument(const QString &szData,KviWindow * pWindow,const QString &szContext = KviQString::empty);
+ KVIRC_API void parseNonCommand(QString &szData,KviWindow * pWindow);
+};
+
+
+#endif //!_KVI_USERINPUT_H_
diff --git a/src/kvirc/kernel/moc_kvi_action.cpp b/src/kvirc/kernel/moc_kvi_action.cpp
new file mode 100644
index 00000000..673a52d5
--- /dev/null
+++ b/src/kvirc/kernel/moc_kvi_action.cpp
@@ -0,0 +1,137 @@
+/****************************************************************************
+** KviAction meta object code from reading C++ file 'kvi_action.h'
+**
+** Created: Mon Feb 25 00:11:38 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_action.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviAction::className() const
+{
+ return "KviAction";
+}
+
+QMetaObject *KviAction::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviAction( "KviAction", &KviAction::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviAction::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviAction", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviAction::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviAction", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviAction::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QObject::staticMetaObject();
+ static const QUMethod slot_0 = {"widgetDestroyed", 0, 0 };
+ static const QUMethod slot_1 = {"reloadImages", 0, 0 };
+ static const QUMethod slot_2 = {"activeContextChanged", 0, 0 };
+ static const QUMethod slot_3 = {"activeContextStateChanged", 0, 0 };
+ static const QUMethod slot_4 = {"activeWindowChanged", 0, 0 };
+ static const QUParameter param_slot_5[] = {
+ { "bSelectedNow", &static_QUType_bool, 0, QUParameter::In }
+ };
+ static const QUMethod slot_5 = {"activeWindowSelectionStateChanged", 1, param_slot_5 };
+ static const QUMethod slot_6 = {"activate", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "widgetDestroyed()", &slot_0, QMetaData::Protected },
+ { "reloadImages()", &slot_1, QMetaData::Protected },
+ { "activeContextChanged()", &slot_2, QMetaData::Protected },
+ { "activeContextStateChanged()", &slot_3, QMetaData::Protected },
+ { "activeWindowChanged()", &slot_4, QMetaData::Protected },
+ { "activeWindowSelectionStateChanged(bool)", &slot_5, QMetaData::Protected },
+ { "activate()", &slot_6, QMetaData::Public }
+ };
+ static const QUMethod signal_0 = {"activated", 0, 0 };
+ static const QMetaData signal_tbl[] = {
+ { "activated()", &signal_0, QMetaData::Public }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviAction", parentObject,
+ slot_tbl, 7,
+ signal_tbl, 1,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviAction.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviAction::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviAction" ) )
+ return this;
+ return QObject::qt_cast( clname );
+}
+
+// SIGNAL activated
+void KviAction::activated()
+{
+ activate_signal( staticMetaObject()->signalOffset() + 0 );
+}
+
+bool KviAction::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: widgetDestroyed(); break;
+ case 1: reloadImages(); break;
+ case 2: activeContextChanged(); break;
+ case 3: activeContextStateChanged(); break;
+ case 4: activeWindowChanged(); break;
+ case 5: activeWindowSelectionStateChanged((bool)static_QUType_bool.get(_o+1)); break;
+ case 6: activate(); break;
+ default:
+ return QObject::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviAction::qt_emit( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->signalOffset() ) {
+ case 0: activated(); break;
+ default:
+ return QObject::qt_emit(_id,_o);
+ }
+ return TRUE;
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviAction::qt_property( int id, int f, QVariant* v)
+{
+ return QObject::qt_property( id, f, v);
+}
+
+bool KviAction::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/kernel/moc_kvi_actionmanager.cpp b/src/kvirc/kernel/moc_kvi_actionmanager.cpp
new file mode 100644
index 00000000..9a8f581a
--- /dev/null
+++ b/src/kvirc/kernel/moc_kvi_actionmanager.cpp
@@ -0,0 +1,143 @@
+/****************************************************************************
+** KviActionManager meta object code from reading C++ file 'kvi_actionmanager.h'
+**
+** Created: Mon Feb 25 00:11:40 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_actionmanager.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviActionManager::className() const
+{
+ return "KviActionManager";
+}
+
+QMetaObject *KviActionManager::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviActionManager( "KviActionManager", &KviActionManager::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviActionManager::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviActionManager", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviActionManager::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviActionManager", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviActionManager::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QObject::staticMetaObject();
+ static const QUMethod slot_0 = {"actionDestroyed", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "actionDestroyed()", &slot_0, QMetaData::Protected }
+ };
+ static const QUMethod signal_0 = {"beginCustomizeToolBars", 0, 0 };
+ static const QUMethod signal_1 = {"endCustomizeToolBars", 0, 0 };
+ static const QUMethod signal_2 = {"currentToolBarChanged", 0, 0 };
+ static const QUMethod signal_3 = {"removeActionsHintRequest", 0, 0 };
+ static const QMetaData signal_tbl[] = {
+ { "beginCustomizeToolBars()", &signal_0, QMetaData::Protected },
+ { "endCustomizeToolBars()", &signal_1, QMetaData::Protected },
+ { "currentToolBarChanged()", &signal_2, QMetaData::Protected },
+ { "removeActionsHintRequest()", &signal_3, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviActionManager", parentObject,
+ slot_tbl, 1,
+ signal_tbl, 4,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviActionManager.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviActionManager::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviActionManager" ) )
+ return this;
+ return QObject::qt_cast( clname );
+}
+
+// SIGNAL beginCustomizeToolBars
+void KviActionManager::beginCustomizeToolBars()
+{
+ activate_signal( staticMetaObject()->signalOffset() + 0 );
+}
+
+// SIGNAL endCustomizeToolBars
+void KviActionManager::endCustomizeToolBars()
+{
+ activate_signal( staticMetaObject()->signalOffset() + 1 );
+}
+
+// SIGNAL currentToolBarChanged
+void KviActionManager::currentToolBarChanged()
+{
+ activate_signal( staticMetaObject()->signalOffset() + 2 );
+}
+
+// SIGNAL removeActionsHintRequest
+void KviActionManager::removeActionsHintRequest()
+{
+ activate_signal( staticMetaObject()->signalOffset() + 3 );
+}
+
+bool KviActionManager::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: actionDestroyed(); break;
+ default:
+ return QObject::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviActionManager::qt_emit( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->signalOffset() ) {
+ case 0: beginCustomizeToolBars(); break;
+ case 1: endCustomizeToolBars(); break;
+ case 2: currentToolBarChanged(); break;
+ case 3: removeActionsHintRequest(); break;
+ default:
+ return QObject::qt_emit(_id,_o);
+ }
+ return TRUE;
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviActionManager::qt_property( int id, int f, QVariant* v)
+{
+ return QObject::qt_property( id, f, v);
+}
+
+bool KviActionManager::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/kernel/moc_kvi_coreactions.cpp b/src/kvirc/kernel/moc_kvi_coreactions.cpp
new file mode 100644
index 00000000..73f14280
--- /dev/null
+++ b/src/kvirc/kernel/moc_kvi_coreactions.cpp
@@ -0,0 +1,927 @@
+/****************************************************************************
+** KviConnectAction meta object code from reading C++ file 'kvi_coreactions.h'
+**
+** Created: Mon Feb 25 00:11:42 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_coreactions.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviConnectAction::className() const
+{
+ return "KviConnectAction";
+}
+
+QMetaObject *KviConnectAction::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviConnectAction( "KviConnectAction", &KviConnectAction::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviConnectAction::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviConnectAction", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviConnectAction::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviConnectAction", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviConnectAction::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviAction::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviConnectAction", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviConnectAction.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviConnectAction::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviConnectAction" ) )
+ return this;
+ return KviAction::qt_cast( clname );
+}
+
+bool KviConnectAction::qt_invoke( int _id, QUObject* _o )
+{
+ return KviAction::qt_invoke(_id,_o);
+}
+
+bool KviConnectAction::qt_emit( int _id, QUObject* _o )
+{
+ return KviAction::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviConnectAction::qt_property( int id, int f, QVariant* v)
+{
+ return KviAction::qt_property( id, f, v);
+}
+
+bool KviConnectAction::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
+
+
+const char *KviSeparatorAction::className() const
+{
+ return "KviSeparatorAction";
+}
+
+QMetaObject *KviSeparatorAction::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviSeparatorAction( "KviSeparatorAction", &KviSeparatorAction::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviSeparatorAction::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviSeparatorAction", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviSeparatorAction::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviSeparatorAction", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviSeparatorAction::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviAction::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviSeparatorAction", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviSeparatorAction.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviSeparatorAction::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviSeparatorAction" ) )
+ return this;
+ return KviAction::qt_cast( clname );
+}
+
+bool KviSeparatorAction::qt_invoke( int _id, QUObject* _o )
+{
+ return KviAction::qt_invoke(_id,_o);
+}
+
+bool KviSeparatorAction::qt_emit( int _id, QUObject* _o )
+{
+ return KviAction::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviSeparatorAction::qt_property( int id, int f, QVariant* v)
+{
+ return KviAction::qt_property( id, f, v);
+}
+
+bool KviSeparatorAction::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
+
+
+const char *KviSubmenuAction::className() const
+{
+ return "KviSubmenuAction";
+}
+
+QMetaObject *KviSubmenuAction::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviSubmenuAction( "KviSubmenuAction", &KviSubmenuAction::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviSubmenuAction::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviSubmenuAction", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviSubmenuAction::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviSubmenuAction", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviSubmenuAction::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviKvsAction::staticMetaObject();
+ static const QUMethod slot_0 = {"popupAboutToShow", 0, 0 };
+ static const QUParameter param_slot_1[] = {
+ { "id", &static_QUType_int, 0, QUParameter::In }
+ };
+ static const QUMethod slot_1 = {"popupActivated", 1, param_slot_1 };
+ static const QMetaData slot_tbl[] = {
+ { "popupAboutToShow()", &slot_0, QMetaData::Protected },
+ { "popupActivated(int)", &slot_1, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviSubmenuAction", parentObject,
+ slot_tbl, 2,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviSubmenuAction.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviSubmenuAction::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviSubmenuAction" ) )
+ return this;
+ return KviKvsAction::qt_cast( clname );
+}
+
+bool KviSubmenuAction::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: popupAboutToShow(); break;
+ case 1: popupActivated((int)static_QUType_int.get(_o+1)); break;
+ default:
+ return KviKvsAction::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviSubmenuAction::qt_emit( int _id, QUObject* _o )
+{
+ return KviKvsAction::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviSubmenuAction::qt_property( int id, int f, QVariant* v)
+{
+ return KviKvsAction::qt_property( id, f, v);
+}
+
+bool KviSubmenuAction::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
+
+
+const char *KviJoinChannelAction::className() const
+{
+ return "KviJoinChannelAction";
+}
+
+QMetaObject *KviJoinChannelAction::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviJoinChannelAction( "KviJoinChannelAction", &KviJoinChannelAction::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviJoinChannelAction::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviJoinChannelAction", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviJoinChannelAction::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviJoinChannelAction", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviJoinChannelAction::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviSubmenuAction::staticMetaObject();
+ static const QUMethod slot_0 = {"popupAboutToShow", 0, 0 };
+ static const QUParameter param_slot_1[] = {
+ { 0, &static_QUType_int, 0, QUParameter::In }
+ };
+ static const QUMethod slot_1 = {"popupActivated", 1, param_slot_1 };
+ static const QMetaData slot_tbl[] = {
+ { "popupAboutToShow()", &slot_0, QMetaData::Protected },
+ { "popupActivated(int)", &slot_1, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviJoinChannelAction", parentObject,
+ slot_tbl, 2,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviJoinChannelAction.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviJoinChannelAction::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviJoinChannelAction" ) )
+ return this;
+ return KviSubmenuAction::qt_cast( clname );
+}
+
+bool KviJoinChannelAction::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: popupAboutToShow(); break;
+ case 1: popupActivated((int)static_QUType_int.get(_o+1)); break;
+ default:
+ return KviSubmenuAction::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviJoinChannelAction::qt_emit( int _id, QUObject* _o )
+{
+ return KviSubmenuAction::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviJoinChannelAction::qt_property( int id, int f, QVariant* v)
+{
+ return KviSubmenuAction::qt_property( id, f, v);
+}
+
+bool KviJoinChannelAction::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
+
+
+const char *KviChangeNickAction::className() const
+{
+ return "KviChangeNickAction";
+}
+
+QMetaObject *KviChangeNickAction::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviChangeNickAction( "KviChangeNickAction", &KviChangeNickAction::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviChangeNickAction::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviChangeNickAction", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviChangeNickAction::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviChangeNickAction", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviChangeNickAction::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviSubmenuAction::staticMetaObject();
+ static const QUMethod slot_0 = {"popupAboutToShow", 0, 0 };
+ static const QUParameter param_slot_1[] = {
+ { 0, &static_QUType_int, 0, QUParameter::In }
+ };
+ static const QUMethod slot_1 = {"popupActivated", 1, param_slot_1 };
+ static const QMetaData slot_tbl[] = {
+ { "popupAboutToShow()", &slot_0, QMetaData::Protected },
+ { "popupActivated(int)", &slot_1, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviChangeNickAction", parentObject,
+ slot_tbl, 2,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviChangeNickAction.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviChangeNickAction::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviChangeNickAction" ) )
+ return this;
+ return KviSubmenuAction::qt_cast( clname );
+}
+
+bool KviChangeNickAction::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: popupAboutToShow(); break;
+ case 1: popupActivated((int)static_QUType_int.get(_o+1)); break;
+ default:
+ return KviSubmenuAction::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviChangeNickAction::qt_emit( int _id, QUObject* _o )
+{
+ return KviSubmenuAction::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviChangeNickAction::qt_property( int id, int f, QVariant* v)
+{
+ return KviSubmenuAction::qt_property( id, f, v);
+}
+
+bool KviChangeNickAction::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
+
+
+const char *KviConnectToServerAction::className() const
+{
+ return "KviConnectToServerAction";
+}
+
+QMetaObject *KviConnectToServerAction::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviConnectToServerAction( "KviConnectToServerAction", &KviConnectToServerAction::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviConnectToServerAction::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviConnectToServerAction", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviConnectToServerAction::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviConnectToServerAction", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviConnectToServerAction::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviSubmenuAction::staticMetaObject();
+ static const QUMethod slot_0 = {"popupAboutToShow", 0, 0 };
+ static const QUParameter param_slot_1[] = {
+ { 0, &static_QUType_int, 0, QUParameter::In }
+ };
+ static const QUMethod slot_1 = {"popupActivated", 1, param_slot_1 };
+ static const QMetaData slot_tbl[] = {
+ { "popupAboutToShow()", &slot_0, QMetaData::Protected },
+ { "popupActivated(int)", &slot_1, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviConnectToServerAction", parentObject,
+ slot_tbl, 2,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviConnectToServerAction.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviConnectToServerAction::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviConnectToServerAction" ) )
+ return this;
+ return KviSubmenuAction::qt_cast( clname );
+}
+
+bool KviConnectToServerAction::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: popupAboutToShow(); break;
+ case 1: popupActivated((int)static_QUType_int.get(_o+1)); break;
+ default:
+ return KviSubmenuAction::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviConnectToServerAction::qt_emit( int _id, QUObject* _o )
+{
+ return KviSubmenuAction::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviConnectToServerAction::qt_property( int id, int f, QVariant* v)
+{
+ return KviSubmenuAction::qt_property( id, f, v);
+}
+
+bool KviConnectToServerAction::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
+
+
+const char *KviChangeUserModeAction::className() const
+{
+ return "KviChangeUserModeAction";
+}
+
+QMetaObject *KviChangeUserModeAction::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviChangeUserModeAction( "KviChangeUserModeAction", &KviChangeUserModeAction::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviChangeUserModeAction::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviChangeUserModeAction", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviChangeUserModeAction::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviChangeUserModeAction", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviChangeUserModeAction::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviSubmenuAction::staticMetaObject();
+ static const QUMethod slot_0 = {"popupAboutToShow", 0, 0 };
+ static const QUParameter param_slot_1[] = {
+ { 0, &static_QUType_int, 0, QUParameter::In }
+ };
+ static const QUMethod slot_1 = {"popupActivated", 1, param_slot_1 };
+ static const QMetaData slot_tbl[] = {
+ { "popupAboutToShow()", &slot_0, QMetaData::Protected },
+ { "popupActivated(int)", &slot_1, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviChangeUserModeAction", parentObject,
+ slot_tbl, 2,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviChangeUserModeAction.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviChangeUserModeAction::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviChangeUserModeAction" ) )
+ return this;
+ return KviSubmenuAction::qt_cast( clname );
+}
+
+bool KviChangeUserModeAction::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: popupAboutToShow(); break;
+ case 1: popupActivated((int)static_QUType_int.get(_o+1)); break;
+ default:
+ return KviSubmenuAction::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviChangeUserModeAction::qt_emit( int _id, QUObject* _o )
+{
+ return KviSubmenuAction::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviChangeUserModeAction::qt_property( int id, int f, QVariant* v)
+{
+ return KviSubmenuAction::qt_property( id, f, v);
+}
+
+bool KviChangeUserModeAction::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
+
+
+const char *KviIrcToolsAction::className() const
+{
+ return "KviIrcToolsAction";
+}
+
+QMetaObject *KviIrcToolsAction::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviIrcToolsAction( "KviIrcToolsAction", &KviIrcToolsAction::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviIrcToolsAction::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviIrcToolsAction", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviIrcToolsAction::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviIrcToolsAction", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviIrcToolsAction::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviSubmenuAction::staticMetaObject();
+ static const QUMethod slot_0 = {"popupAboutToShow", 0, 0 };
+ static const QUParameter param_slot_1[] = {
+ { 0, &static_QUType_int, 0, QUParameter::In }
+ };
+ static const QUMethod slot_1 = {"popupActivated", 1, param_slot_1 };
+ static const QMetaData slot_tbl[] = {
+ { "popupAboutToShow()", &slot_0, QMetaData::Protected },
+ { "popupActivated(int)", &slot_1, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviIrcToolsAction", parentObject,
+ slot_tbl, 2,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviIrcToolsAction.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviIrcToolsAction::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviIrcToolsAction" ) )
+ return this;
+ return KviSubmenuAction::qt_cast( clname );
+}
+
+bool KviIrcToolsAction::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: popupAboutToShow(); break;
+ case 1: popupActivated((int)static_QUType_int.get(_o+1)); break;
+ default:
+ return KviSubmenuAction::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviIrcToolsAction::qt_emit( int _id, QUObject* _o )
+{
+ return KviSubmenuAction::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviIrcToolsAction::qt_property( int id, int f, QVariant* v)
+{
+ return KviSubmenuAction::qt_property( id, f, v);
+}
+
+bool KviIrcToolsAction::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
+
+
+const char *KviIrcOperationsAction::className() const
+{
+ return "KviIrcOperationsAction";
+}
+
+QMetaObject *KviIrcOperationsAction::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviIrcOperationsAction( "KviIrcOperationsAction", &KviIrcOperationsAction::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviIrcOperationsAction::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviIrcOperationsAction", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviIrcOperationsAction::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviIrcOperationsAction", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviIrcOperationsAction::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviSubmenuAction::staticMetaObject();
+ static const QUMethod slot_0 = {"popupAboutToShow", 0, 0 };
+ static const QUParameter param_slot_1[] = {
+ { 0, &static_QUType_int, 0, QUParameter::In }
+ };
+ static const QUMethod slot_1 = {"popupActivated", 1, param_slot_1 };
+ static const QMetaData slot_tbl[] = {
+ { "popupAboutToShow()", &slot_0, QMetaData::Protected },
+ { "popupActivated(int)", &slot_1, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviIrcOperationsAction", parentObject,
+ slot_tbl, 2,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviIrcOperationsAction.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviIrcOperationsAction::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviIrcOperationsAction" ) )
+ return this;
+ return KviSubmenuAction::qt_cast( clname );
+}
+
+bool KviIrcOperationsAction::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: popupAboutToShow(); break;
+ case 1: popupActivated((int)static_QUType_int.get(_o+1)); break;
+ default:
+ return KviSubmenuAction::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviIrcOperationsAction::qt_emit( int _id, QUObject* _o )
+{
+ return KviSubmenuAction::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviIrcOperationsAction::qt_property( int id, int f, QVariant* v)
+{
+ return KviSubmenuAction::qt_property( id, f, v);
+}
+
+bool KviIrcOperationsAction::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
+
+
+const char *KviIrcContextDisplayAction::className() const
+{
+ return "KviIrcContextDisplayAction";
+}
+
+QMetaObject *KviIrcContextDisplayAction::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviIrcContextDisplayAction( "KviIrcContextDisplayAction", &KviIrcContextDisplayAction::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviIrcContextDisplayAction::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviIrcContextDisplayAction", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviIrcContextDisplayAction::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviIrcContextDisplayAction", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviIrcContextDisplayAction::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviAction::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviIrcContextDisplayAction", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviIrcContextDisplayAction.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviIrcContextDisplayAction::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviIrcContextDisplayAction" ) )
+ return this;
+ return KviAction::qt_cast( clname );
+}
+
+bool KviIrcContextDisplayAction::qt_invoke( int _id, QUObject* _o )
+{
+ return KviAction::qt_invoke(_id,_o);
+}
+
+bool KviIrcContextDisplayAction::qt_emit( int _id, QUObject* _o )
+{
+ return KviAction::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviIrcContextDisplayAction::qt_property( int id, int f, QVariant* v)
+{
+ return KviAction::qt_property( id, f, v);
+}
+
+bool KviIrcContextDisplayAction::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
+
+
+const char *KviGoAwayAction::className() const
+{
+ return "KviGoAwayAction";
+}
+
+QMetaObject *KviGoAwayAction::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviGoAwayAction( "KviGoAwayAction", &KviGoAwayAction::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviGoAwayAction::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviGoAwayAction", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviGoAwayAction::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviGoAwayAction", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviGoAwayAction::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviKvsAction::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviGoAwayAction", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviGoAwayAction.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviGoAwayAction::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviGoAwayAction" ) )
+ return this;
+ return KviKvsAction::qt_cast( clname );
+}
+
+bool KviGoAwayAction::qt_invoke( int _id, QUObject* _o )
+{
+ return KviKvsAction::qt_invoke(_id,_o);
+}
+
+bool KviGoAwayAction::qt_emit( int _id, QUObject* _o )
+{
+ return KviKvsAction::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviGoAwayAction::qt_property( int id, int f, QVariant* v)
+{
+ return KviKvsAction::qt_property( id, f, v);
+}
+
+bool KviGoAwayAction::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/kernel/moc_kvi_filetransfer.cpp b/src/kvirc/kernel/moc_kvi_filetransfer.cpp
new file mode 100644
index 00000000..b395379f
--- /dev/null
+++ b/src/kvirc/kernel/moc_kvi_filetransfer.cpp
@@ -0,0 +1,212 @@
+/****************************************************************************
+** KviFileTransferManager meta object code from reading C++ file 'kvi_filetransfer.h'
+**
+** Created: Mon Feb 25 00:11:45 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_filetransfer.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviFileTransferManager::className() const
+{
+ return "KviFileTransferManager";
+}
+
+QMetaObject *KviFileTransferManager::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviFileTransferManager( "KviFileTransferManager", &KviFileTransferManager::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviFileTransferManager::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviFileTransferManager", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviFileTransferManager::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviFileTransferManager", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviFileTransferManager::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QObject::staticMetaObject();
+ static const QUParameter param_signal_0[] = {
+ { "t", &static_QUType_ptr, "KviFileTransfer", QUParameter::In }
+ };
+ static const QUMethod signal_0 = {"transferRegistered", 1, param_signal_0 };
+ static const QUParameter param_signal_1[] = {
+ { "t", &static_QUType_ptr, "KviFileTransfer", QUParameter::In }
+ };
+ static const QUMethod signal_1 = {"transferUnregistering", 1, param_signal_1 };
+ static const QMetaData signal_tbl[] = {
+ { "transferRegistered(KviFileTransfer*)", &signal_0, QMetaData::Public },
+ { "transferUnregistering(KviFileTransfer*)", &signal_1, QMetaData::Public }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviFileTransferManager", parentObject,
+ 0, 0,
+ signal_tbl, 2,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviFileTransferManager.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviFileTransferManager::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviFileTransferManager" ) )
+ return this;
+ return QObject::qt_cast( clname );
+}
+
+#include <qobjectdefs.h>
+#include <qsignalslotimp.h>
+
+// SIGNAL transferRegistered
+void KviFileTransferManager::transferRegistered( KviFileTransfer* t0 )
+{
+ if ( signalsBlocked() )
+ return;
+ QConnectionList *clist = receivers( staticMetaObject()->signalOffset() + 0 );
+ if ( !clist )
+ return;
+ QUObject o[2];
+ static_QUType_ptr.set(o+1,t0);
+ activate_signal( clist, o );
+}
+
+// SIGNAL transferUnregistering
+void KviFileTransferManager::transferUnregistering( KviFileTransfer* t0 )
+{
+ if ( signalsBlocked() )
+ return;
+ QConnectionList *clist = receivers( staticMetaObject()->signalOffset() + 1 );
+ if ( !clist )
+ return;
+ QUObject o[2];
+ static_QUType_ptr.set(o+1,t0);
+ activate_signal( clist, o );
+}
+
+bool KviFileTransferManager::qt_invoke( int _id, QUObject* _o )
+{
+ return QObject::qt_invoke(_id,_o);
+}
+
+bool KviFileTransferManager::qt_emit( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->signalOffset() ) {
+ case 0: transferRegistered((KviFileTransfer*)static_QUType_ptr.get(_o+1)); break;
+ case 1: transferUnregistering((KviFileTransfer*)static_QUType_ptr.get(_o+1)); break;
+ default:
+ return QObject::qt_emit(_id,_o);
+ }
+ return TRUE;
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviFileTransferManager::qt_property( int id, int f, QVariant* v)
+{
+ return QObject::qt_property( id, f, v);
+}
+
+bool KviFileTransferManager::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
+
+
+const char *KviFileTransfer::className() const
+{
+ return "KviFileTransfer";
+}
+
+QMetaObject *KviFileTransfer::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviFileTransfer( "KviFileTransfer", &KviFileTransfer::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviFileTransfer::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviFileTransfer", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviFileTransfer::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviFileTransfer", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviFileTransfer::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QObject::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviFileTransfer", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviFileTransfer.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviFileTransfer::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviFileTransfer" ) )
+ return this;
+ return QObject::qt_cast( clname );
+}
+
+bool KviFileTransfer::qt_invoke( int _id, QUObject* _o )
+{
+ return QObject::qt_invoke(_id,_o);
+}
+
+bool KviFileTransfer::qt_emit( int _id, QUObject* _o )
+{
+ return QObject::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviFileTransfer::qt_property( int id, int f, QVariant* v)
+{
+ return QObject::qt_property( id, f, v);
+}
+
+bool KviFileTransfer::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/kernel/moc_kvi_ircconnection.cpp b/src/kvirc/kernel/moc_kvi_ircconnection.cpp
new file mode 100644
index 00000000..dbe025a5
--- /dev/null
+++ b/src/kvirc/kernel/moc_kvi_ircconnection.cpp
@@ -0,0 +1,202 @@
+/****************************************************************************
+** KviIrcConnection meta object code from reading C++ file 'kvi_ircconnection.h'
+**
+** Created: Mon Feb 25 00:11:48 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_ircconnection.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviIrcConnection::className() const
+{
+ return "KviIrcConnection";
+}
+
+QMetaObject *KviIrcConnection::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviIrcConnection( "KviIrcConnection", &KviIrcConnection::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviIrcConnection::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviIrcConnection", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviIrcConnection::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviIrcConnection", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviIrcConnection::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QObject::staticMetaObject();
+ static const QUMethod slot_0 = {"partAllChannels", 0, 0 };
+ static const QUMethod slot_1 = {"unhighlightAllChannels", 0, 0 };
+ static const QUMethod slot_2 = {"unhighlightAllQueries", 0, 0 };
+ static const QUMethod slot_3 = {"restartNotifyList", 0, 0 };
+ static const QUMethod slot_4 = {"closeAllQueries", 0, 0 };
+ static const QUParameter param_slot_5[] = {
+ { "pDns", &static_QUType_ptr, "KviDns", QUParameter::In }
+ };
+ static const QUMethod slot_5 = {"hostNameLookupTerminated", 1, param_slot_5 };
+ static const QMetaData slot_tbl[] = {
+ { "partAllChannels()", &slot_0, QMetaData::Public },
+ { "unhighlightAllChannels()", &slot_1, QMetaData::Public },
+ { "unhighlightAllQueries()", &slot_2, QMetaData::Public },
+ { "restartNotifyList()", &slot_3, QMetaData::Public },
+ { "closeAllQueries()", &slot_4, QMetaData::Public },
+ { "hostNameLookupTerminated(KviDns*)", &slot_5, QMetaData::Private }
+ };
+ static const QUMethod signal_0 = {"awayStateChanged", 0, 0 };
+ static const QUMethod signal_1 = {"userModeChanged", 0, 0 };
+ static const QUMethod signal_2 = {"nickNameChanged", 0, 0 };
+ static const QUParameter param_signal_3[] = {
+ { 0, &static_QUType_ptr, "KviChannel", QUParameter::In }
+ };
+ static const QUMethod signal_3 = {"channelRegistered", 1, param_signal_3 };
+ static const QUParameter param_signal_4[] = {
+ { 0, &static_QUType_ptr, "KviChannel", QUParameter::In }
+ };
+ static const QUMethod signal_4 = {"channelUnregistered", 1, param_signal_4 };
+ static const QUMethod signal_5 = {"chanListChanged", 0, 0 };
+ static const QMetaData signal_tbl[] = {
+ { "awayStateChanged()", &signal_0, QMetaData::Public },
+ { "userModeChanged()", &signal_1, QMetaData::Public },
+ { "nickNameChanged()", &signal_2, QMetaData::Public },
+ { "channelRegistered(KviChannel*)", &signal_3, QMetaData::Public },
+ { "channelUnregistered(KviChannel*)", &signal_4, QMetaData::Public },
+ { "chanListChanged()", &signal_5, QMetaData::Public }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviIrcConnection", parentObject,
+ slot_tbl, 6,
+ signal_tbl, 6,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviIrcConnection.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviIrcConnection::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviIrcConnection" ) )
+ return this;
+ return QObject::qt_cast( clname );
+}
+
+// SIGNAL awayStateChanged
+void KviIrcConnection::awayStateChanged()
+{
+ activate_signal( staticMetaObject()->signalOffset() + 0 );
+}
+
+// SIGNAL userModeChanged
+void KviIrcConnection::userModeChanged()
+{
+ activate_signal( staticMetaObject()->signalOffset() + 1 );
+}
+
+// SIGNAL nickNameChanged
+void KviIrcConnection::nickNameChanged()
+{
+ activate_signal( staticMetaObject()->signalOffset() + 2 );
+}
+
+#include <qobjectdefs.h>
+#include <qsignalslotimp.h>
+
+// SIGNAL channelRegistered
+void KviIrcConnection::channelRegistered( KviChannel* t0 )
+{
+ if ( signalsBlocked() )
+ return;
+ QConnectionList *clist = receivers( staticMetaObject()->signalOffset() + 3 );
+ if ( !clist )
+ return;
+ QUObject o[2];
+ static_QUType_ptr.set(o+1,t0);
+ activate_signal( clist, o );
+}
+
+// SIGNAL channelUnregistered
+void KviIrcConnection::channelUnregistered( KviChannel* t0 )
+{
+ if ( signalsBlocked() )
+ return;
+ QConnectionList *clist = receivers( staticMetaObject()->signalOffset() + 4 );
+ if ( !clist )
+ return;
+ QUObject o[2];
+ static_QUType_ptr.set(o+1,t0);
+ activate_signal( clist, o );
+}
+
+// SIGNAL chanListChanged
+void KviIrcConnection::chanListChanged()
+{
+ activate_signal( staticMetaObject()->signalOffset() + 5 );
+}
+
+bool KviIrcConnection::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: partAllChannels(); break;
+ case 1: unhighlightAllChannels(); break;
+ case 2: unhighlightAllQueries(); break;
+ case 3: restartNotifyList(); break;
+ case 4: closeAllQueries(); break;
+ case 5: hostNameLookupTerminated((KviDns*)static_QUType_ptr.get(_o+1)); break;
+ default:
+ return QObject::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviIrcConnection::qt_emit( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->signalOffset() ) {
+ case 0: awayStateChanged(); break;
+ case 1: userModeChanged(); break;
+ case 2: nickNameChanged(); break;
+ case 3: channelRegistered((KviChannel*)static_QUType_ptr.get(_o+1)); break;
+ case 4: channelUnregistered((KviChannel*)static_QUType_ptr.get(_o+1)); break;
+ case 5: chanListChanged(); break;
+ default:
+ return QObject::qt_emit(_id,_o);
+ }
+ return TRUE;
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviIrcConnection::qt_property( int id, int f, QVariant* v)
+{
+ return QObject::qt_property( id, f, v);
+}
+
+bool KviIrcConnection::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/kernel/moc_kvi_ircconnectiontargetresolver.cpp b/src/kvirc/kernel/moc_kvi_ircconnectiontargetresolver.cpp
new file mode 100644
index 00000000..89aa1bc6
--- /dev/null
+++ b/src/kvirc/kernel/moc_kvi_ircconnectiontargetresolver.cpp
@@ -0,0 +1,128 @@
+/****************************************************************************
+** KviIrcConnectionTargetResolver meta object code from reading C++ file 'kvi_ircconnectiontargetresolver.h'
+**
+** Created: Mon Feb 25 00:11:55 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_ircconnectiontargetresolver.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviIrcConnectionTargetResolver::className() const
+{
+ return "KviIrcConnectionTargetResolver";
+}
+
+QMetaObject *KviIrcConnectionTargetResolver::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviIrcConnectionTargetResolver( "KviIrcConnectionTargetResolver", &KviIrcConnectionTargetResolver::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviIrcConnectionTargetResolver::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviIrcConnectionTargetResolver", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviIrcConnectionTargetResolver::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviIrcConnectionTargetResolver", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviIrcConnectionTargetResolver::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QObject::staticMetaObject();
+ static const QUMethod slot_0 = {"asyncStartResolve", 0, 0 };
+ static const QUParameter param_slot_1[] = {
+ { 0, &static_QUType_ptr, "KviDns", QUParameter::In }
+ };
+ static const QUMethod slot_1 = {"serverLookupTerminated", 1, param_slot_1 };
+ static const QUParameter param_slot_2[] = {
+ { 0, &static_QUType_ptr, "KviDns", QUParameter::In }
+ };
+ static const QUMethod slot_2 = {"proxyLookupTerminated", 1, param_slot_2 };
+ static const QMetaData slot_tbl[] = {
+ { "asyncStartResolve()", &slot_0, QMetaData::Protected },
+ { "serverLookupTerminated(KviDns*)", &slot_1, QMetaData::Protected },
+ { "proxyLookupTerminated(KviDns*)", &slot_2, QMetaData::Protected }
+ };
+ static const QUMethod signal_0 = {"terminated", 0, 0 };
+ static const QMetaData signal_tbl[] = {
+ { "terminated()", &signal_0, QMetaData::Private }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviIrcConnectionTargetResolver", parentObject,
+ slot_tbl, 3,
+ signal_tbl, 1,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviIrcConnectionTargetResolver.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviIrcConnectionTargetResolver::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviIrcConnectionTargetResolver" ) )
+ return this;
+ return QObject::qt_cast( clname );
+}
+
+// SIGNAL terminated
+void KviIrcConnectionTargetResolver::terminated()
+{
+ activate_signal( staticMetaObject()->signalOffset() + 0 );
+}
+
+bool KviIrcConnectionTargetResolver::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: asyncStartResolve(); break;
+ case 1: serverLookupTerminated((KviDns*)static_QUType_ptr.get(_o+1)); break;
+ case 2: proxyLookupTerminated((KviDns*)static_QUType_ptr.get(_o+1)); break;
+ default:
+ return QObject::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviIrcConnectionTargetResolver::qt_emit( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->signalOffset() ) {
+ case 0: terminated(); break;
+ default:
+ return QObject::qt_emit(_id,_o);
+ }
+ return TRUE;
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviIrcConnectionTargetResolver::qt_property( int id, int f, QVariant* v)
+{
+ return QObject::qt_property( id, f, v);
+}
+
+bool KviIrcConnectionTargetResolver::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/kernel/moc_kvi_irccontext.cpp b/src/kvirc/kernel/moc_kvi_irccontext.cpp
new file mode 100644
index 00000000..2319d11f
--- /dev/null
+++ b/src/kvirc/kernel/moc_kvi_irccontext.cpp
@@ -0,0 +1,119 @@
+/****************************************************************************
+** KviIrcContext meta object code from reading C++ file 'kvi_irccontext.h'
+**
+** Created: Mon Feb 25 00:11:50 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_irccontext.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviIrcContext::className() const
+{
+ return "KviIrcContext";
+}
+
+QMetaObject *KviIrcContext::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviIrcContext( "KviIrcContext", &KviIrcContext::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviIrcContext::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviIrcContext", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviIrcContext::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviIrcContext", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviIrcContext::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QObject::staticMetaObject();
+ static const QUMethod slot_0 = {"asynchronousConnect", 0, 0 };
+ static const QUMethod slot_1 = {"unhighlightAllWindows", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "asynchronousConnect()", &slot_0, QMetaData::Protected },
+ { "unhighlightAllWindows()", &slot_1, QMetaData::Protected }
+ };
+ static const QUMethod signal_0 = {"stateChanged", 0, 0 };
+ static const QMetaData signal_tbl[] = {
+ { "stateChanged()", &signal_0, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviIrcContext", parentObject,
+ slot_tbl, 2,
+ signal_tbl, 1,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviIrcContext.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviIrcContext::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviIrcContext" ) )
+ return this;
+ return QObject::qt_cast( clname );
+}
+
+// SIGNAL stateChanged
+void KviIrcContext::stateChanged()
+{
+ activate_signal( staticMetaObject()->signalOffset() + 0 );
+}
+
+bool KviIrcContext::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: asynchronousConnect(); break;
+ case 1: unhighlightAllWindows(); break;
+ default:
+ return QObject::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviIrcContext::qt_emit( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->signalOffset() ) {
+ case 0: stateChanged(); break;
+ default:
+ return QObject::qt_emit(_id,_o);
+ }
+ return TRUE;
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviIrcContext::qt_property( int id, int f, QVariant* v)
+{
+ return QObject::qt_property( id, f, v);
+}
+
+bool KviIrcContext::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/kernel/moc_kvi_irclink.cpp b/src/kvirc/kernel/moc_kvi_irclink.cpp
new file mode 100644
index 00000000..1bf804e4
--- /dev/null
+++ b/src/kvirc/kernel/moc_kvi_irclink.cpp
@@ -0,0 +1,119 @@
+/****************************************************************************
+** KviIrcLink meta object code from reading C++ file 'kvi_irclink.h'
+**
+** Created: Mon Feb 25 00:11:51 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_irclink.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviIrcLink::className() const
+{
+ return "KviIrcLink";
+}
+
+QMetaObject *KviIrcLink::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviIrcLink( "KviIrcLink", &KviIrcLink::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviIrcLink::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviIrcLink", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviIrcLink::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviIrcLink", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviIrcLink::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QObject::staticMetaObject();
+ static const QUMethod slot_0 = {"linkFilterDestroyed", 0, 0 };
+ static const QUMethod slot_1 = {"resolverTerminated", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "linkFilterDestroyed()", &slot_0, QMetaData::Protected },
+ { "resolverTerminated()", &slot_1, QMetaData::Private }
+ };
+ static const QUMethod signal_0 = {"connectionFailed", 0, 0 };
+ static const QMetaData signal_tbl[] = {
+ { "connectionFailed()", &signal_0, QMetaData::Private }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviIrcLink", parentObject,
+ slot_tbl, 2,
+ signal_tbl, 1,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviIrcLink.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviIrcLink::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviIrcLink" ) )
+ return this;
+ return QObject::qt_cast( clname );
+}
+
+// SIGNAL connectionFailed
+void KviIrcLink::connectionFailed()
+{
+ activate_signal( staticMetaObject()->signalOffset() + 0 );
+}
+
+bool KviIrcLink::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: linkFilterDestroyed(); break;
+ case 1: resolverTerminated(); break;
+ default:
+ return QObject::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviIrcLink::qt_emit( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->signalOffset() ) {
+ case 0: connectionFailed(); break;
+ default:
+ return QObject::qt_emit(_id,_o);
+ }
+ return TRUE;
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviIrcLink::qt_property( int id, int f, QVariant* v)
+{
+ return QObject::qt_property( id, f, v);
+}
+
+bool KviIrcLink::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/kernel/moc_kvi_ircsocket.cpp b/src/kvirc/kernel/moc_kvi_ircsocket.cpp
new file mode 100644
index 00000000..b4863f82
--- /dev/null
+++ b/src/kvirc/kernel/moc_kvi_ircsocket.cpp
@@ -0,0 +1,134 @@
+/****************************************************************************
+** KviIrcSocket meta object code from reading C++ file 'kvi_ircsocket.h'
+**
+** Created: Mon Feb 25 00:11:53 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_ircsocket.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviIrcSocket::className() const
+{
+ return "KviIrcSocket";
+}
+
+QMetaObject *KviIrcSocket::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviIrcSocket( "KviIrcSocket", &KviIrcSocket::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviIrcSocket::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviIrcSocket", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviIrcSocket::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviIrcSocket", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviIrcSocket::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QObject::staticMetaObject();
+ static const QUMethod slot_0 = {"connectionTimedOut", 0, 0 };
+ static const QUParameter param_slot_1[] = {
+ { 0, &static_QUType_int, 0, QUParameter::In }
+ };
+ static const QUMethod slot_1 = {"writeNotifierFired", 1, param_slot_1 };
+ static const QUParameter param_slot_2[] = {
+ { 0, &static_QUType_int, 0, QUParameter::In }
+ };
+ static const QUMethod slot_2 = {"readData", 1, param_slot_2 };
+ static const QUParameter param_slot_3[] = {
+ { 0, &static_QUType_int, 0, QUParameter::In }
+ };
+ static const QUMethod slot_3 = {"readProxyData", 1, param_slot_3 };
+ static const QUParameter param_slot_4[] = {
+ { 0, &static_QUType_int, 0, QUParameter::In }
+ };
+ static const QUMethod slot_4 = {"readHttpProxyErrorData", 1, param_slot_4 };
+ static const QUMethod slot_5 = {"flushSendQueue", 0, 0 };
+ static const QUParameter param_slot_6[] = {
+ { 0, &static_QUType_int, 0, QUParameter::In }
+ };
+ static const QUMethod slot_6 = {"doSSLHandshake", 1, param_slot_6 };
+ static const QMetaData slot_tbl[] = {
+ { "connectionTimedOut()", &slot_0, QMetaData::Protected },
+ { "writeNotifierFired(int)", &slot_1, QMetaData::Protected },
+ { "readData(int)", &slot_2, QMetaData::Protected },
+ { "readProxyData(int)", &slot_3, QMetaData::Protected },
+ { "readHttpProxyErrorData(int)", &slot_4, QMetaData::Protected },
+ { "flushSendQueue()", &slot_5, QMetaData::Protected },
+ { "doSSLHandshake(int)", &slot_6, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviIrcSocket", parentObject,
+ slot_tbl, 7,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviIrcSocket.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviIrcSocket::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviIrcSocket" ) )
+ return this;
+ return QObject::qt_cast( clname );
+}
+
+bool KviIrcSocket::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: connectionTimedOut(); break;
+ case 1: writeNotifierFired((int)static_QUType_int.get(_o+1)); break;
+ case 2: readData((int)static_QUType_int.get(_o+1)); break;
+ case 3: readProxyData((int)static_QUType_int.get(_o+1)); break;
+ case 4: readHttpProxyErrorData((int)static_QUType_int.get(_o+1)); break;
+ case 5: flushSendQueue(); break;
+ case 6: doSSLHandshake((int)static_QUType_int.get(_o+1)); break;
+ default:
+ return QObject::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviIrcSocket::qt_emit( int _id, QUObject* _o )
+{
+ return QObject::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviIrcSocket::qt_property( int id, int f, QVariant* v)
+{
+ return QObject::qt_property( id, f, v);
+}
+
+bool KviIrcSocket::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/kvs/Makefile.am b/src/kvirc/kvs/Makefile.am
new file mode 100644
index 00000000..c84487eb
--- /dev/null
+++ b/src/kvirc/kvs/Makefile.am
@@ -0,0 +1,5 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+EXTRA_DIST = *.cpp *.h
diff --git a/src/kvirc/kvs/kvi_kvs.cpp b/src/kvirc/kvs/kvi_kvs.cpp
new file mode 100644
index 00000000..9c36a34c
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs.cpp
@@ -0,0 +1,144 @@
+//=============================================================================
+//
+// File : kvi_kvs.cpp
+// Creation date : Wed 1 Oct 2003 01.38 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs.h"
+#include "kvi_kvs_kernel.h"
+#include "kvi_kvs_aliasmanager.h"
+#include "kvi_kvs_dnsmanager.h"
+#include "kvi_kvs_timermanager.h"
+#include "kvi_kvs_popupmanager.h"
+#include "kvi_kvs_eventmanager.h"
+#include "kvi_kvs_scriptaddonmanager.h"
+#include "kvi_kvs_object_controller.h"
+
+namespace KviKvs
+{
+ void init()
+ {
+ KviKvsKernel::init();
+ KviKvsAliasManager::init();
+ KviKvsPopupManager::init();
+ KviKvsEventManager::init();
+ // FIXME: Could we delay the init of these objects ?
+ // It could be delayed to the first *::instance() call
+ KviKvsScriptAddonManager::init();
+ KviKvsTimerManager::init();
+ KviKvsDnsManager::init();
+ }
+
+ void done()
+ {
+ //KviKvsScriptManager::done();
+ KviKvsEventManager::done();
+ KviKvsPopupManager::done();
+ KviKvsAliasManager::done();
+ KviKvsScriptAddonManager::done();
+ KviKvsTimerManager::done();
+ KviKvsDnsManager::done();
+ KviKvsKernel::done();
+ }
+
+ void loadPopups(const QString &szFileName)
+ {
+ KviKvsPopupManager::instance()->load(szFileName);
+ }
+
+ void savePopups(const QString &szFileName)
+ {
+ KviKvsPopupManager::instance()->save(szFileName);
+ }
+
+ void clearPopups()
+ {
+ KviKvsPopupManager::instance()->clear();
+ }
+
+ void loadAliases(const QString &szFileName)
+ {
+ KviKvsAliasManager::instance()->load(szFileName);
+ }
+
+ void saveAliases(const QString &szFileName)
+ {
+ KviKvsAliasManager::instance()->save(szFileName);
+ }
+
+ void clearAliases()
+ {
+ KviKvsAliasManager::instance()->clear();
+ }
+
+ void loadAppEvents(const QString &szFileName)
+ {
+ KviKvsEventManager::instance()->loadAppEvents(szFileName);
+ }
+
+ void saveAppEvents(const QString &szFileName)
+ {
+ KviKvsEventManager::instance()->saveAppEvents(szFileName);
+ }
+
+ void clearAppEvents()
+ {
+ KviKvsEventManager::instance()->removeAllScriptAppHandlers();
+ }
+
+ void loadRawEvents(const QString &szFileName)
+ {
+ KviKvsEventManager::instance()->loadRawEvents(szFileName);
+ }
+
+ void saveRawEvents(const QString &szFileName)
+ {
+ KviKvsEventManager::instance()->saveRawEvents(szFileName);
+ }
+
+ void clearRawEvents()
+ {
+ KviKvsEventManager::instance()->removeAllScriptRawHandlers();
+ }
+
+ void loadScriptAddons(const QString &szFileName)
+ {
+ KviKvsScriptAddonManager::instance()->load(szFileName);
+ }
+
+ void saveScriptAddons(const QString &szFileName)
+ {
+ KviKvsScriptAddonManager::instance()->save(szFileName);
+ }
+
+ void clearScriptAddons()
+ {
+ KviKvsScriptAddonManager::instance()->clear();
+ }
+
+ void flushUserClasses()
+ {
+ KviKvsKernel::instance()->objectController()->flushUserClasses();
+ }
+};
+
diff --git a/src/kvirc/kvs/kvi_kvs.h b/src/kvirc/kvs/kvi_kvs.h
new file mode 100644
index 00000000..bb92a300
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs.h
@@ -0,0 +1,59 @@
+#ifndef _KVI_KVS_H_
+#define _KVI_KVS_H_
+//=============================================================================
+//
+// File : kvi_kvs.h
+// Creation date : Wed 1 Oct 2003 01.37 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+// this header contains ALL the stuff that the user should see
+#include "kvi_kvs_script.h"
+
+namespace KviKvs
+{
+ void init(); // this never fails
+ void done(); // this never fails
+
+ void loadAliases(const QString &szFileName);
+ void saveAliases(const QString &szFileName);
+ void clearAliases();
+
+ void loadPopups(const QString &szFileName);
+ void savePopups(const QString &szFileName);
+ void clearPopups();
+
+ void loadAppEvents(const QString &szFileName);
+ void saveAppEvents(const QString &szFileName);
+ void clearAppEvents();
+
+ void loadRawEvents(const QString &szFileName);
+ void saveRawEvents(const QString &szFileName);
+ void clearRawEvents();
+
+ void loadScriptAddons(const QString &szFileName);
+ void saveScriptAddons(const QString &szFileName);
+ void clearScriptAddons();
+
+ void flushUserClasses();
+};
+
+
+#endif //!_KVI_KVS_H_
diff --git a/src/kvirc/kvs/kvi_kvs_action.cpp b/src/kvirc/kvs/kvi_kvs_action.cpp
new file mode 100644
index 00000000..08291145
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_action.cpp
@@ -0,0 +1,66 @@
+//=============================================================================
+//
+// File : kvi_kvs_action.cpp
+// Created on Sat 04 Dec 2004 04:22:12 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_action.h"
+#include "kvi_kvs_script.h"
+#include "kvi_window.h"
+
+KviKvsAction::KviKvsAction(QObject * pParent,
+ const QString &szName,
+ const QString &szScriptCode,
+ const QString &szVisibleName,
+ const QString &szDescription,
+ KviActionCategory * pCategory,
+ const QString &szBigIcon,
+ int iSmallIconId,
+ unsigned int uFlags,
+ const QString &szKeySequence)
+ : KviAction(pParent,szName,szVisibleName,szDescription,pCategory,szBigIcon,iSmallIconId,uFlags,szKeySequence)
+{
+ QString tmp = KVI_KVS_ACTION_SCRIPT_NAME_PREFIX;
+ tmp += szName;
+ m_pScript = new KviKvsScript(tmp,szScriptCode);
+}
+
+
+KviKvsAction::~KviKvsAction()
+{
+ unregisterAccelerator();
+ delete m_pScript;
+}
+
+const QString & KviKvsAction::scriptCode()
+{
+ return m_pScript->code();
+}
+
+void KviKvsAction::activate()
+{
+ // at the moment it executes externally!
+ // FIXME!
+ if(!isEnabled())return; // no way
+ m_pScript->run(g_pActiveWindow); // FIXME: complain more in case of error ?
+}
diff --git a/src/kvirc/kvs/kvi_kvs_action.h b/src/kvirc/kvs/kvi_kvs_action.h
new file mode 100644
index 00000000..0a33569e
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_action.h
@@ -0,0 +1,59 @@
+#ifndef _KVI_KVSACTION_H_
+#define _KVI_KVSACTION_H_
+//=============================================================================
+//
+// File : kvi_kvs_action.h
+// Created on Sat 04 Dec 2004 04:22:12 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_action.h"
+
+class KviKvsScript;
+
+#define KVI_KVS_ACTION_SCRIPT_NAME_PREFIX "action::"
+
+class KVIRC_API KviKvsAction : public KviAction
+{
+ Q_OBJECT
+protected:
+ KviKvsScript * m_pScript;
+public:
+ KviKvsAction(QObject * pParent,
+ const QString &szName,
+ const QString &szScriptCode,
+ const QString &szVisibleName,
+ const QString &szDescription,
+ KviActionCategory * pCategory = 0,
+ const QString &szBigIcon = QString::null,
+ int iSmallIconId = 0,
+ unsigned int uFlags = 0,
+ const QString &szKeySequence = QString::null);
+ ~KviKvsAction();
+public:
+ const QString & scriptCode();
+ virtual void activate();
+};
+
+
+
+
+#endif //!_KVI_KVSACTION_H_
diff --git a/src/kvirc/kvs/kvi_kvs_aliasmanager.cpp b/src/kvirc/kvs/kvi_kvs_aliasmanager.cpp
new file mode 100644
index 00000000..257b6cf8
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_aliasmanager.cpp
@@ -0,0 +1,121 @@
+//=============================================================================
+//
+// File : kvi_kvs_aliasmanager.cpp
+// Created on Mon 15 Dec 2003 02:11:41 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_aliasmanager.h"
+#include "kvi_config.h"
+
+KviKvsAliasManager * KviKvsAliasManager::m_pAliasManager = 0;
+
+KviKvsAliasManager::KviKvsAliasManager()
+{
+ m_pAliasManager = this;
+ m_pAliasDict = new KviPointerHashTable<QString,KviKvsScript>(51,false);
+ m_pAliasDict->setAutoDelete(true);
+}
+
+KviKvsAliasManager::~KviKvsAliasManager()
+{
+ delete m_pAliasDict;
+}
+
+void KviKvsAliasManager::init()
+{
+ if(KviKvsAliasManager::instance())
+ {
+ debug("WARNING: Trying to create the KviKvsAliasManager twice!");
+ return;
+ }
+ (void)new KviKvsAliasManager();
+}
+
+void KviKvsAliasManager::done()
+{
+ if(!KviKvsAliasManager::instance())
+ {
+ debug("WARNING: Trying to destroy the KviKvsAliasManager twice!");
+ return;
+ }
+ delete KviKvsAliasManager::instance();
+}
+
+void KviKvsAliasManager::completeCommand(const QString &word,KviPointerList<QString> * matches)
+{
+ KviPointerHashTableIterator<QString,KviKvsScript> it(*m_pAliasDict);
+ while(it.current())
+ {
+ if(KviQString::equalCIN(word,it.current()->name(),word.length()))
+ matches->append(new QString(it.current()->name()));
+ ++it;
+ }
+}
+
+// FIXME: #warning "A binary config would work better and faster here!"
+
+void KviKvsAliasManager::save(const QString & filename)
+{
+ KviConfig cfg(filename,KviConfig::Write);
+ cfg.clear();
+
+ KviPointerHashTableIterator<QString,KviKvsScript> it(*m_pAliasDict);
+
+ while(it.current())
+ {
+ cfg.setGroup(it.current()->name());
+ cfg.writeEntry("_Buffer",it.current()->code());
+ ++it;
+ }
+}
+
+void KviKvsAliasManager::load(const QString & filename)
+{
+ m_pAliasDict->clear();
+ KviConfig cfg(filename,KviConfig::Read);
+
+ KviConfigIterator it(*(cfg.dict()));
+
+ KviPointerList<QString> l;
+ l.setAutoDelete(true);
+
+ while(it.current())
+ {
+ l.append(new QString(it.currentKey()));
+ ++it;
+ }
+
+ for(QString * s = l.first();s;s = l.next())
+ {
+ cfg.setGroup(*s);
+ QString szCode = cfg.readQStringEntry("_Buffer","");
+ if(!szCode.isEmpty())
+ {
+ KviKvsScript * m = new KviKvsScript(*s,szCode);
+ m_pAliasDict->insert(*s,m);
+ }
+ ++it;
+ }
+}
+
+
diff --git a/src/kvirc/kvs/kvi_kvs_aliasmanager.h b/src/kvirc/kvs/kvi_kvs_aliasmanager.h
new file mode 100644
index 00000000..6f25eccb
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_aliasmanager.h
@@ -0,0 +1,67 @@
+#ifndef _KVI_KVS_ALIASMANAGER_H_
+#define _KVI_KVS_ALIASMANAGER_H_
+//=============================================================================
+//
+// File : kvi_kvs_aliasmanager.h
+// Created on Mon 15 Dec 2003 02:11:41 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_pointerhashtable.h"
+
+#include "kvi_pointerlist.h"
+#include "kvi_qstring.h"
+
+#include "kvi_kvs_script.h"
+
+class KVIRC_API KviKvsAliasManager
+{
+protected: // it only can be created and destroyed by KviKvsAliasManager::init()/done()
+ KviKvsAliasManager();
+ ~KviKvsAliasManager();
+protected:
+ KviPointerHashTable<QString,KviKvsScript> * m_pAliasDict;
+ static KviKvsAliasManager * m_pAliasManager;
+public:
+ static KviKvsAliasManager * instance()
+ { return m_pAliasManager; };
+ static void init(); // called by KviKvs::init()
+ static void done(); // called by KviKvs::done()
+
+ KviPointerHashTable<QString,KviKvsScript> * aliasDict(){ return m_pAliasDict; };
+ const KviKvsScript * lookup(const QString & szName)
+ { return m_pAliasDict->find(szName); };
+ void add(const QString &szName,KviKvsScript * pAlias)
+ { m_pAliasDict->replace(szName,pAlias); };
+ bool remove(const QString & szName)
+ { return m_pAliasDict->remove(szName); };
+ void clear()
+ { m_pAliasDict->clear(); };
+
+ void save(const QString & filename);
+ void load(const QString & filename);
+
+ void completeCommand(const QString &word,KviPointerList<QString> * matches);
+};
+
+// namespaces are handled completly in the editing!
+
+#endif //!_KVI_KVS_ALIASMANAGER_H_
diff --git a/src/kvirc/kvs/kvi_kvs_array.cpp b/src/kvirc/kvs/kvi_kvs_array.cpp
new file mode 100644
index 00000000..545d8285
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_array.cpp
@@ -0,0 +1,227 @@
+//=============================================================================
+//
+// File : kvi_kvs_array.cpp
+// Created on Tue 07 Oct 2003 01:07:31 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_array.h"
+#include "kvi_malloc.h"
+
+#include <stdlib.h>
+
+#define KVI_KVS_ARRAY_ALLOC_CHUNK 8
+
+KviKvsArray::KviKvsArray()
+: KviHeapObject()
+{
+ m_pData = 0;
+ m_uSize = 0;
+ m_uAllocSize = 0;
+}
+
+KviKvsArray::KviKvsArray(const KviKvsArray &a)
+: KviHeapObject()
+{
+ m_uSize = a.m_uSize;
+ m_uAllocSize = a.m_uAllocSize;
+ if(m_uAllocSize > 0)
+ {
+ m_pData = (KviKvsVariant **)kvi_malloc((sizeof(KviKvsVariant *)) * m_uAllocSize);
+ kvs_uint_t i;
+ for(i=0;i<m_uSize;i++)
+ if(a.m_pData[i])m_pData[i] = new KviKvsVariant(*(a.m_pData[i]));
+ else m_pData[i] = 0;
+ } else {
+ m_pData = 0;
+ }
+}
+
+KviKvsArray::~KviKvsArray()
+{
+ if(m_pData)
+ {
+ for(kvs_uint_t i=0;i<m_uSize;i++)
+ if(m_pData[i])delete m_pData[i];
+ kvi_free(m_pData);
+ }
+}
+
+static int kvs_array_reverse_compare_func(const void * v1,const void * v2)
+{
+ if(*((KviKvsVariant **)v1))return (*((KviKvsVariant **)v1))->compare(*((KviKvsVariant **)v2));
+ if(*((KviKvsVariant **)v2))return -(*((KviKvsVariant **)v2))->compare(*((KviKvsVariant **)v1));
+ return 0;
+}
+
+static int kvs_array_compare_func(const void * v1,const void * v2)
+{
+ if(*((KviKvsVariant **)v1))return -(*((KviKvsVariant **)v1))->compare(*((KviKvsVariant **)v2));
+ if(*((KviKvsVariant **)v2))return (*((KviKvsVariant **)v2))->compare(*((KviKvsVariant **)v1));
+ return 0;
+}
+
+
+void KviKvsArray::sort()
+{
+ if(m_uSize < 2)return; // already sorted
+ qsort(m_pData,m_uSize,sizeof(KviKvsVariant *),kvs_array_compare_func);
+ findNewSize();
+}
+
+void KviKvsArray::rsort()
+{
+ if(m_uSize < 2)return; // already sorted
+ qsort(m_pData,m_uSize,sizeof(KviKvsVariant *),kvs_array_reverse_compare_func);
+ findNewSize();
+}
+
+void KviKvsArray::unset(kvs_uint_t uIdx)
+{
+ if(uIdx >= m_uSize)return;
+
+ if(m_pData[uIdx])
+ {
+ delete m_pData[uIdx];
+ m_pData[uIdx] = 0;
+ }
+
+ if(uIdx == (m_uSize - 1))
+ {
+ findNewSize();
+ }
+}
+
+void KviKvsArray::findNewSize()
+{
+ // find the new size
+ if(m_uSize == 0)return;
+ kvs_uint_t u = m_uSize - 1;
+ while(u > 0)
+ {
+ if(m_pData[u])break;
+ u--;
+ }
+ if(m_pData[u])m_uSize = u + 1;
+ else {
+ // u == 0, and there is no data in there
+ m_uSize = 0;
+ }
+ // need to shrink ?
+
+ if((m_uAllocSize - m_uSize) > KVI_KVS_ARRAY_ALLOC_CHUNK)
+ {
+ m_uAllocSize = m_uSize;
+ // m_pData is non-zero here since was m_uSize > 0 initally
+ if(m_uSize > 0)
+ {
+ m_pData = (KviKvsVariant **)kvi_realloc(m_pData,(sizeof(KviKvsVariant *)) * m_uAllocSize);
+ } else {
+ kvi_free(m_pData);
+ m_pData = 0;
+ }
+ }
+}
+
+void KviKvsArray::set(kvs_uint_t uIdx,KviKvsVariant * pVal)
+{
+ if(uIdx >= m_uSize)
+ {
+ if(uIdx == m_uSize)
+ {
+ m_uAllocSize += KVI_KVS_ARRAY_ALLOC_CHUNK; // sequential set
+ } else {
+ m_uAllocSize = uIdx + 1;
+ }
+ if(m_pData)
+ m_pData = (KviKvsVariant **)kvi_realloc(m_pData,(sizeof(KviKvsVariant *)) * m_uAllocSize);
+ else
+ m_pData = (KviKvsVariant **)kvi_malloc((sizeof(KviKvsVariant *)) * m_uAllocSize);
+ for(kvs_uint_t u=m_uSize;u<uIdx;u++)
+ m_pData[u] = 0;
+ m_uSize = uIdx+1;
+ m_pData[uIdx] = pVal;
+ } else {
+ if(m_pData[uIdx])delete m_pData[uIdx];
+ m_pData[uIdx] = pVal;
+ }
+}
+
+KviKvsVariant * KviKvsArray::getAt(kvs_uint_t uIdx)
+{
+ if(uIdx >= m_uSize)
+ {
+ if(uIdx == m_uSize)
+ {
+ m_uAllocSize += KVI_KVS_ARRAY_ALLOC_CHUNK; // sequential set
+ } else {
+ m_uAllocSize = uIdx + 1;
+ }
+ if(m_pData)
+ m_pData = (KviKvsVariant **)kvi_realloc(m_pData,(sizeof(KviKvsVariant *)) * m_uAllocSize);
+ else
+ m_pData = (KviKvsVariant **)kvi_malloc((sizeof(KviKvsVariant *)) * m_uAllocSize);
+ for(kvs_uint_t u=m_uSize;u<uIdx;u++)
+ m_pData[u] = 0;
+ m_uSize = uIdx+1;
+ m_pData[uIdx] = new KviKvsVariant();
+ } else {
+ if(!m_pData[uIdx])
+ m_pData[uIdx] = new KviKvsVariant();
+ }
+ return m_pData[uIdx];
+}
+
+void KviKvsArray::serialize(QString& result)
+{
+ QString tmpBuffer;
+ result="[";
+ kvs_uint_t u = 0;
+ bool bNeedComma = false;
+ while(u < m_uSize)
+ {
+ if(bNeedComma)result.append(',');
+ else bNeedComma = true;
+ if(m_pData[u]) {
+ m_pData[u]->serialize(tmpBuffer);
+ result.append(tmpBuffer);
+ } else {
+ result.append("null");
+ }
+ u++;
+ }
+ result.append(']');
+}
+
+void KviKvsArray::appendAsString(QString &szBuffer)
+{
+ kvs_uint_t u = 0;
+ bool bNeedComma = false;
+ while(u < m_uSize)
+ {
+ if(bNeedComma)szBuffer.append(',');
+ else bNeedComma = true;
+ if(m_pData[u])m_pData[u]->appendAsString(szBuffer);
+ u++;
+ }
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_array.h b/src/kvirc/kvs/kvi_kvs_array.h
new file mode 100644
index 00000000..6c6ca463
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_array.h
@@ -0,0 +1,63 @@
+#ifndef _KVI_KVS_ARRAY_H_
+#define _KVI_KVS_ARRAY_H_
+//=============================================================================
+//
+// File : kvi_kvs_array.h
+// Created on Tue 07 Oct 2003 01:07:31 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include "kvi_qstring.h"
+#include "kvi_kvs_variant.h"
+#include "kvi_heapobject.h"
+
+
+// This class must not have virtual funcitons nor destructor
+// Otherwise it will happily crash on windows when it is
+// allocated in modules and destroyed anywhere else around...
+class KVIRC_API KviKvsArray : public KviHeapObject
+{
+public:
+ KviKvsArray();
+ KviKvsArray(const KviKvsArray &a);
+ ~KviKvsArray();
+protected:
+ KviKvsVariant ** m_pData;
+ kvs_uint_t m_uSize;
+ kvs_uint_t m_uAllocSize;
+public:
+ void unset(kvs_uint_t uIdx);
+ void set(kvs_uint_t uIdx,KviKvsVariant * pVal);
+ KviKvsVariant * at(kvs_uint_t uIdx) const { return (uIdx < m_uSize) ? m_pData[uIdx] : 0; };
+ KviKvsVariant * getAt(kvs_uint_t uIdx);
+ bool isEmpty(){ return m_uSize == 0; };
+ kvs_uint_t size(){ return m_uSize; };
+ void appendAsString(QString &szBuffer);
+ void serialize(QString& result);
+ void sort();
+ void rsort();
+protected:
+ void findNewSize();
+};
+
+
+#endif //!_KVI_KVS_ARRAY_H_
diff --git a/src/kvirc/kvs/kvi_kvs_arraycast.cpp b/src/kvirc/kvs/kvi_kvs_arraycast.cpp
new file mode 100644
index 00000000..0c2e610e
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_arraycast.cpp
@@ -0,0 +1,44 @@
+//=============================================================================
+//
+// File : kvi_kvs_arraycast.cpp
+// Created on Tue 10 May 2005 00:05:50 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_arraycast.h"
+
+KviKvsArrayCast::~KviKvsArrayCast()
+{
+ if(m_pArray)
+ if(m_bOwned)
+ delete m_pArray;
+}
+
+void KviKvsArrayCast::clear()
+{
+ if(m_pArray)
+ {
+ if(m_bOwned)
+ delete m_pArray;
+ m_pArray = 0;
+ }
+}
diff --git a/src/kvirc/kvs/kvi_kvs_arraycast.h b/src/kvirc/kvs/kvi_kvs_arraycast.h
new file mode 100644
index 00000000..81059e27
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_arraycast.h
@@ -0,0 +1,50 @@
+#ifndef _KVI_KVS_ARRAYCAST_H_
+#define _KVI_KVS_ARRAYCAST_H_
+//=============================================================================
+//
+// File : kvi_kvs_arraycast.h
+// Created on Tue 10 May 2005 00:05:50 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_kvs_array.h"
+
+class KVIRC_API KviKvsArrayCast
+{
+protected:
+ KviKvsArray * m_pArray;
+ bool m_bOwned;
+public:
+ KviKvsArrayCast()
+ : m_pArray(0) {};
+ ~KviKvsArrayCast();
+public:
+ void clear();
+ KviKvsArray * array()
+ { return m_pArray; };
+ void release()
+ { m_bOwned = false; };
+ void set(KviKvsArray * pArry,bool bOwned)
+ { m_pArray = pArry; m_bOwned = bOwned; };
+};
+
+
+#endif //!_KVI_KVS_ARRAYCAST_H_
diff --git a/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp b/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp
new file mode 100644
index 00000000..e7e2b626
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.cpp
@@ -0,0 +1,122 @@
+//=============================================================================
+//
+// File : kvi_kvs_asyncdnsoperation.cpp
+// Created on Sun 10 Jul 2005 04:36:15 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_asyncdnsoperation.h"
+#include "kvi_dns.h"
+#include "kvi_kvs_script.h"
+#include "kvi_kvs_variant.h"
+#include "kvi_app.h"
+#include "kvi_out.h"
+#include "kvi_locale.h"
+#include "kvi_error.h"
+#include "kvi_kvs_variantlist.h"
+
+#include <qtimer.h>
+
+
+KviKvsAsyncDnsOperation::KviKvsAsyncDnsOperation(KviWindow * pWnd,QString &szQuery,KviDns::QueryType eType,KviKvsScript * pCallback,KviKvsVariant * pMagic)
+: KviKvsAsyncOperation(pWnd)
+{
+ m_pDns = new KviDns();
+ m_szQuery = szQuery;
+ m_eType = eType;
+ m_pCallback = pCallback;
+ m_pMagic = pMagic;
+ connect(m_pDns,SIGNAL(lookupDone(KviDns *)),this,SLOT(lookupTerminated(KviDns *)));
+ if(!m_pDns->lookup(szQuery,eType))
+ QTimer::singleShot(10,this,SLOT(dnsStartFailed()));
+}
+
+KviKvsAsyncDnsOperation::~KviKvsAsyncDnsOperation()
+{
+ if(m_pDns)delete m_pDns;
+ if(m_pMagic)delete m_pMagic;
+ if(m_pCallback)delete m_pCallback;
+}
+
+void KviKvsAsyncDnsOperation::dnsStartFailed()
+{
+ lookupTerminated(m_pDns);
+}
+
+void KviKvsAsyncDnsOperation::lookupTerminated(KviDns *)
+{
+ KviWindow * pWnd = window();
+ if(!g_pApp->windowExists(pWnd))pWnd = g_pActiveWindow;
+
+ if(m_pCallback)
+ {
+ KviKvsVariantList params;
+ params.setAutoDelete(true);
+ if(m_pDns->state() == KviDns::Failure)
+ {
+ params.append(new KviKvsVariant(m_szQuery));
+ params.append(new KviKvsVariant((kvs_int_t)0));
+ params.append(new KviKvsVariant(KviError::getDescription(m_pDns->error())));
+ params.append(new KviKvsVariant());
+ params.append(new KviKvsVariant(*m_pMagic));
+ } else {
+ QString * fh = m_pDns->hostnameList()->first();
+ QString * fi = m_pDns->ipAddressList()->first();
+
+ params.append(new KviKvsVariant(m_szQuery));
+ params.append(new KviKvsVariant((kvs_int_t)1));
+ params.append(new KviKvsVariant(fi ? *fi : QString("?.?.?.?")));
+ params.append(new KviKvsVariant(fh ? *fh : QString("?.?")));
+ params.append(new KviKvsVariant(*m_pMagic));
+ }
+
+ m_pCallback->run(pWnd,&params,0,KviKvsScript::PreserveParams);
+
+ delete this;
+ return;
+ }
+
+ // we have no callback : output the results
+ QString szQuery = m_pDns->query();
+ pWnd->output(KVI_OUT_HOSTLOOKUP,__tr2qs("DNS Lookup result for query \"%Q\""),&szQuery);
+
+ if(m_pDns->state() == KviDns::Failure)
+ {
+ QString strDescription(KviError::getDescription(m_pDns->error()));
+ pWnd->output(KVI_OUT_HOSTLOOKUP,__tr2qs("Error: %Q"),&strDescription);
+ } else {
+ int idx = 1;
+ for(QString * h = m_pDns->hostnameList()->first();h;h = m_pDns->hostnameList()->next())
+ {
+ pWnd->output(KVI_OUT_HOSTLOOKUP,__tr2qs("Hostname %d: %Q"),idx,h);
+ idx++;
+ }
+ idx = 1;
+ for(QString * a = m_pDns->ipAddressList()->first();a;a = m_pDns->ipAddressList()->next())
+ {
+ pWnd->output(KVI_OUT_HOSTLOOKUP,__tr2qs("IP address %d: %Q"),idx,a);
+ idx++;
+ }
+ }
+
+ delete this;
+}
diff --git a/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.h b/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.h
new file mode 100644
index 00000000..4e2046c6
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_asyncdnsoperation.h
@@ -0,0 +1,53 @@
+#ifndef _KVI_KVS_ASYNCDNSOPERATION_H_
+#define _KVI_KVS_ASYNCDNSOPERATION_H_
+//=============================================================================
+//
+// File : kvi_kvs_asyncdnsoperation.h
+// Created on Sun 10 Jul 2005 04:36:15 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_kvs_asyncoperation.h"
+#include "kvi_qstring.h"
+#include "kvi_dns.h"
+
+class KviWindow;
+class KviKvsScript;
+class KviKvsVariant;
+
+class KVIRC_API KviKvsAsyncDnsOperation : public KviKvsAsyncOperation
+{
+ Q_OBJECT
+public:
+ KviKvsAsyncDnsOperation(KviWindow * pWnd,QString &szQuery,KviDns::QueryType eType,KviKvsScript * pCallback = 0,KviKvsVariant * pMagic = 0);
+ virtual ~KviKvsAsyncDnsOperation();
+protected:
+ KviDns * m_pDns;
+ KviDns::QueryType m_eType;
+ KviKvsVariant * m_pMagic;
+ KviKvsScript * m_pCallback;
+ QString m_szQuery;
+protected slots:
+ void lookupTerminated(KviDns *);
+ void dnsStartFailed();
+};
+
+#endif //!_KVI_KVS_ASYNCDNSOPERATION_H_
diff --git a/src/kvirc/kvs/kvi_kvs_asyncoperation.cpp b/src/kvirc/kvs/kvi_kvs_asyncoperation.cpp
new file mode 100644
index 00000000..549627ed
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_asyncoperation.cpp
@@ -0,0 +1,66 @@
+//=============================================================================
+//
+// File : kvi_kvs_asyncoperation.cpp
+// Created on Sat 09 Jul 2005 04:54:24 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_asyncoperation.h"
+#include "kvi_kvs_kernel.h"
+#include "kvi_window.h"
+
+KviKvsAsyncOperation::KviKvsAsyncOperation(KviWindow * pWnd)
+: QObject()
+{
+ m_pWnd = pWnd;
+ KviKvsKernel::instance()->asyncOperationManager()->registerOperation(this);
+}
+
+KviKvsAsyncOperation::~KviKvsAsyncOperation()
+{
+ KviKvsKernel::instance()->asyncOperationManager()->unregisterOperation(this);
+}
+
+
+KviKvsAsyncOperationManager::KviKvsAsyncOperationManager()
+{
+ m_pOperationList = new KviPointerList<KviKvsAsyncOperation>;
+ m_pOperationList->setAutoDelete(false);
+}
+
+KviKvsAsyncOperationManager::~KviKvsAsyncOperationManager()
+{
+ while(m_pOperationList->first())
+ delete m_pOperationList->first();
+ delete m_pOperationList;
+}
+
+void KviKvsAsyncOperationManager::registerOperation(KviKvsAsyncOperation * o)
+{
+ m_pOperationList->append(o);
+}
+
+void KviKvsAsyncOperationManager::unregisterOperation(KviKvsAsyncOperation * o)
+{
+ m_pOperationList->removeRef(o);
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_asyncoperation.h b/src/kvirc/kvs/kvi_kvs_asyncoperation.h
new file mode 100644
index 00000000..2b5641bd
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_asyncoperation.h
@@ -0,0 +1,59 @@
+#ifndef _KVI_KVS_ASYNCOPERATION_H_
+#define _KVI_KVS_ASYNCOPERATION_H_
+//=============================================================================
+//
+// File : kvi_kvs_asyncoperation.h
+// Created on Sat 09 Jul 2005 04:54:24 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_pointerlist.h"
+#include <qobject.h>
+
+class KviWindow;
+
+class KVIRC_API KviKvsAsyncOperation : public QObject
+{
+ Q_OBJECT
+public:
+ KviKvsAsyncOperation(KviWindow * pWnd);
+ virtual ~KviKvsAsyncOperation();
+protected:
+ KviWindow * m_pWnd;
+public:
+ KviWindow * window(){ return m_pWnd; };
+};
+
+
+class KVIRC_API KviKvsAsyncOperationManager
+{
+ friend class KviKvsAsyncOperation;
+public:
+ KviKvsAsyncOperationManager();
+ ~KviKvsAsyncOperationManager();
+protected:
+ KviPointerList<KviKvsAsyncOperation> * m_pOperationList;
+protected:
+ void registerOperation(KviKvsAsyncOperation * o);
+ void unregisterOperation(KviKvsAsyncOperation * o);
+};
+
+#endif //!_KVI_KVS_ASYNCOPERATION_H_
diff --git a/src/kvirc/kvs/kvi_kvs_callbackobject.cpp b/src/kvirc/kvs/kvi_kvs_callbackobject.cpp
new file mode 100644
index 00000000..7f304245
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_callbackobject.cpp
@@ -0,0 +1,108 @@
+//=============================================================================
+//
+// File : kvi_kvs_callbackobject.cpp
+// Created on Mon 21 Nov 2005 01:46:51 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_callbackobject.h"
+#include "kvi_console.h"
+#include "kvi_app.h"
+
+
+KviKvsCallbackObject::KviKvsCallbackObject(const QString &szCallbackName,KviWindow * pTargetWindow,const QString &szCallbackCode,KviKvsVariantList * pMagicParams,unsigned int uFlags)
+: KviHeapObject()
+{
+ m_uFlags = uFlags;
+ m_pTargetWindow = pTargetWindow;
+ if(pTargetWindow)
+ m_pTargetConsole = pTargetWindow->console();
+ else
+ m_pTargetConsole = 0;
+ m_pMagicParams = new KviKvsVariantList();
+ if(pMagicParams)
+ for(KviKvsVariant * v = pMagicParams->first();v;v = pMagicParams->next())
+ m_pMagicParams->append(new KviKvsVariant(*v));
+ QString szName;
+ szName = szCallbackName;
+ szName += "::";
+ szName += "callback";
+ m_pScript = new KviKvsScript(szName,szCallbackCode);
+}
+
+KviKvsCallbackObject::~KviKvsCallbackObject()
+{
+ delete m_pScript;
+ delete m_pMagicParams;
+}
+
+KviKvsCallbackObject::CallbackStatus KviKvsCallbackObject::execute(KviKvsVariantList * pParams,KviKvsVariant * pRetVal)
+{
+ // first of all check the window
+ if(!m_pTargetWindow)
+ m_pTargetWindow = g_pApp->activeConsole();
+ if(!g_pApp->windowExists(m_pTargetWindow))
+ {
+ // target window dead
+ if(m_uFlags & OnlyIfWindowExists)
+ return TargetWindowDead;
+ // rebind
+ m_pTargetWindow = m_pTargetConsole;
+ if(!m_pTargetWindow)
+ {
+ m_pTargetWindow = g_pApp->activeConsole();
+ if(!m_pTargetWindow)
+ return Error; // ooops...
+ } else {
+ if(!g_pApp->windowExists(m_pTargetWindow))
+ {
+ m_pTargetWindow = g_pApp->activeConsole();
+ if(!m_pTargetWindow)
+ return Error; // ooops...
+ }
+ }
+ }
+ // ok, got the window
+ // now take care of the params
+ KviKvsVariantList params;
+ params.setAutoDelete(false);
+ KviKvsVariant * v;
+
+ if(pParams)
+ for(v = pParams->first();v;v = pParams->next())
+ params.append(v);
+
+ for(v = m_pMagicParams->first();v;v = m_pMagicParams->next())
+ params.append(v);
+
+ unsigned int uRet = m_pScript->run(m_pTargetWindow,&params,pRetVal,KviKvsScript::PreserveParams);
+
+ if(uRet)
+ {
+ if(uRet & KviKvsScript::HaltEncountered)
+ return HaltEncountered;
+ return Success;
+ }
+
+ // ooops... error
+ return Error;
+}
diff --git a/src/kvirc/kvs/kvi_kvs_callbackobject.h b/src/kvirc/kvs/kvi_kvs_callbackobject.h
new file mode 100644
index 00000000..fb6e7090
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_callbackobject.h
@@ -0,0 +1,84 @@
+#ifndef _KVI_KVS_CALLBACKOBJECT_H_
+#define _KVI_KVS_CALLBACKOBJECT_H_
+//=============================================================================
+//
+// File : kvi_kvs_callbackobject.h
+// Created on Mon 21 Nov 2005 01:46:51 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_heapobject.h"
+
+#include "kvi_window.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_variantlist.h"
+#include "kvi_kvs_script.h"
+
+
+//
+// This is a simple callback object useful in stuff like dialog.message(){}
+// You derive a class from KviKvsCallbackObject, pass the callback data (code,window and magic params)
+// and when the time comes ask it to execute the callback (maybe by passing some special parameters)
+//
+//
+
+class KVIRC_API KviKvsCallbackObject : public KviHeapObject
+{
+public:
+ enum CallbackFlags {
+ // Execute the callback only if the target window exists
+ // If this flag is not used then if the target window dies
+ // the callback is executed in another window (the associated console, if possible, otherwise the first available console)
+ OnlyIfWindowExists = 1
+ };
+ enum CallbackStatus {
+ // succesfull execution
+ Success,
+ // error in command
+ Error,
+ // succesfull execution, but halt encountered
+ HaltEncountered,
+ // execution aborted since OnlyIfWindowExists was passed and the target window is dead
+ TargetWindowDead
+ };
+public:
+ KviKvsCallbackObject(
+ const QString &szCallbackSource, // the name of this callback (should identify its source, like "dialog.message"): displayed in error messages
+ KviWindow * pTargetWindow, // the window that this callback should be triggered in (can be zero: to execute in the first available console)
+ const QString &szCallbackCode, // the callback code (may be empty!)
+ KviKvsVariantList * pMagicParams, // magic parameters that should be passed to the callback (this class makes a copy of them)
+ unsigned int uFlags = 0 // a combination of CallbackFlags
+ );
+ virtual ~KviKvsCallbackObject();
+protected:
+ KviKvsScript * m_pScript; // the callback script
+ KviWindow * m_pTargetWindow;
+ KviWindow * m_pTargetConsole;
+ KviKvsVariantList * m_pMagicParams;
+ unsigned int m_uFlags;
+protected:
+ // the parameter list is always shallow!
+ CallbackStatus execute(KviKvsVariantList * pParams = 0,KviKvsVariant * pRetVal = 0);
+};
+
+
+
+#endif //!_KVI_KVS_CALLBACKOBJECT_H_
diff --git a/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp b/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp
new file mode 100644
index 00000000..308ac8d8
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_corecallbackcommands.cpp
@@ -0,0 +1,1187 @@
+//=============================================================================
+//
+// File : kvi_kvs_corecallbackcommands.cpp
+// Created on Fri 31 Oct 2003 04:07:58 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_corecallbackcommands.h"
+
+#include "kvi_kvs_kernel.h"
+#include "kvi_kvs_timermanager.h"
+#include "kvi_kvs_aliasmanager.h"
+#include "kvi_kvs_variantlist.h"
+#include "kvi_kvs_asyncdnsoperation.h"
+#include "kvi_kvs_eventmanager.h"
+#include "kvi_kvs_processmanager.h"
+#include "kvi_kvs_object_controller.h"
+
+#include "kvi_cmdformatter.h"
+#include "kvi_ircconnectionasyncwhoisdata.h"
+#include "kvi_ircconnection.h"
+#include "kvi_scriptbutton.h"
+#include "kvi_iconmanager.h"
+#include "kvi_locale.h"
+
+#include <qregexp.h>
+#include "kvi_tal_tooltip.h"
+
+namespace KviKvsCoreCallbackCommands
+{
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: ahost
+ @type:
+ command
+ @title:
+ host
+ @syntax:
+ ahost [-i] [-a] (<dnsquery:string>[,<magicdata:variant>]){ <callback command> }
+ @short:
+ DNS lookup
+ @switches:
+ !sw: --ipv6 | -i
+ Causes the command to run in IPv6 mode
+ !sw: --any | -a
+ Causes the command to run in unspecified mode and lookup both IPv4 and IPv6 addresses
+ @description:
+ Starts a DNS lookup for the <dnsquery> and reports the
+ results by calling the callback routine.
+ The -i switch causes the command to execute
+ in IpV6 mode (and lookup ONLY IpV6 hosts!).[br]
+ The -a switch causes the command to run in "unspecified" mode
+ and return any available address: IpV4 or Ipv6.[br]
+ This command also performs reverse lookups (if you pass an IP address as <hostname>).[br]
+ The callback command gets passed five parameters:[br]
+ $0 contains the query string (<dnsquery> in fact)[br]
+ $1 contains the value 1 if the query was succesfull.[br]
+ In that case the remaining parameters are set as follows:[br]
+ $2 contains the first ip address associated to the <dnsquery>[br]
+ $3 contains the hostname associated to the <dnsquery>[br]
+ $4 contains the eventual <magicdata> passed.[br]
+ If $1 contains the value 0 then the query has failed and[br]
+ $2 contains an error message explaining the failure.[br]
+ $3 is empty[br]
+ $4 contains the eventual <magicdata> passed.[br]
+ Please note that if the dns query fails to even start for some
+ reason then your callback MAY be called even before ahost() returns.[br]
+ @switches:
+ !sw: -i
+ Causes the command to execute in IpV6 mode (and lookup ONLY IpV6 hosts!).
+ !sw: -a
+ The -a switch causes the command to run in "unspecified" mode
+ and return any available address: IpV4 or Ipv6.
+ @examples:
+ [example]
+ ahost("localhost")
+ {
+ [cmd]echo[/cmd] "Lookup: "$0;
+ if($1)
+ {
+ [cmd]echo[/cmd] "Ip address: "$2;
+ [cmd]echo[/cmd] "Hostname: "$3;
+ } else {
+ [cmd]echo[/cmd] "Error: $2";
+ }
+ }
+ ahost -i ("irc.flashnet.it","Hello :)")
+ {
+ [cmd]echo[/cmd] "Lookup: "$0;
+ [cmd]echo[/cmd] "Magic: $3";
+ if($1)
+ {
+ [cmd]echo[/cmd] "Ip address: "$2;
+ [cmd]echo[/cmd] "Hostname: "$3;
+ } else {
+ [cmd]echo[/cmd] "Error: $2";
+ }
+ }
+ ahost -a ("cafe:babe::dead:beef")
+ {
+ [cmd]echo[/cmd] "Lookup: "$0;
+ [cmd]echo[/cmd] "Magic: $3";
+ if($1)
+ {
+ [cmd]echo[/cmd] "Ip address: "$2;
+ [cmd]echo[/cmd] "Hostname: "$3;
+ } else {
+ [cmd]echo[/cmd] "Error: $2";
+ }
+ }
+ [/example]
+ @seealso:
+ [cmd]host[/cmd]
+ */
+
+ KVSCCC(ahost)
+ {
+ QString szQuery;
+ KviKvsVariant * pMagicPtr;
+ KVSCCC_PARAMETERS_BEGIN
+ KVSCCC_PARAMETER("dnsquery",KVS_PT_NONEMPTYSTRING,0,szQuery)
+ KVSCCC_PARAMETER("magic",KVS_PT_VARIANT,KVS_PF_OPTIONAL,pMagicPtr)
+ KVSCCC_PARAMETERS_END
+
+ KviDns::QueryType queryType = KviDns::IpV4;
+ if(KVSCCC_pSwitches->find('i',"ipv6"))queryType = KviDns::IpV6;
+ if(KVSCCC_pSwitches->find('a',"any"))queryType = KviDns::Any;
+
+ KviKvsVariant * pMagic = pMagicPtr ? new KviKvsVariant(*pMagicPtr) : new KviKvsVariant();
+
+ KviKvsAsyncDnsOperation * op = new KviKvsAsyncDnsOperation(
+ KVSCCC_pContext->window(),
+ szQuery,
+ queryType,
+ new KviKvsScript(*KVSCCC_pCallback),
+ pMagic);
+
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: alias
+ @title:
+ alias
+ @type:
+ command
+ @short:
+ Adds a new alias or modifies an existing one
+ @syntax:
+ alias [-q] (<alias_name>) <implementation>
+ alias [-q] (<alias_name>){}
+ @switches:
+ !sw: -q | --quiet
+ Causes the command to run quietly
+ @description:
+ Adds the alias <alias_name> with the specified <implementation> code.
+ The implementation code can be either a single KVS instruction
+ or an instruction block (instruction list enclosed in braces).[br]
+ If the alias was already existing, it is replaced with the
+ new implementation.[br]
+ If the <implementation> is empty (eg. "{}" or just a ";")
+ the alias <alias_name> is removed instead of being added.
+ If the "remove" form is used but the specified <alias_name> is
+ not existing in the alias store then a warning is printed unless
+ the -q (--quiet) switch is used.
+ If <alias_name> contains a "<name>::" prefix, then the alias
+ is created in the namespace specified by <name>.
+ If the namespace is not existing, it is created.
+ Any alias without the "<name>::" prefix is created in the root
+ namespace. Namespaces are useful to avoid collisions in alias names
+ between scripts. Only really common aliases should be created
+ in the root namespace: all your script internal functionality
+ should be hidden in your own namespace.
+ @examples:
+ [example]
+ [comment]# Add the alias j[/comment]
+ alias(j)
+ {
+ [cmd]join[/cmd] $0;
+ }
+ [comment]# Remove the alias j[/comment]
+ alias(j){}
+ [comment]# Add the alias j in namespace letters[/comments]
+ alias(letters::j)
+ {
+ [cmd]echo[/cmd] "j"
+ }
+ [/example]
+ @seealso:
+ [doc:kvs_aliasesandfunctions]Aliases and functions[/doc]
+ */
+
+ /*
+ @doc: function
+ @title:
+ function
+ @type:
+ command
+ @short:
+ A synomim for alias
+ @syntax:
+ function [-q] (<function_name>) <implementation>
+ function [-q] (<function_name>){}
+ @switches:
+ !sw: -q | --quiet
+ Causes the command to run quietly
+ @description:
+ This command is a synonim for [cmd]alias[/cmd].
+ @seealso:
+ [doc:kvs_aliasesandfunctions]Aliases and functions[/doc]
+ */
+
+
+ KVSCCC(alias)
+ {
+ KviKvsVariant * vName = KVSCCC_pParams->first();
+
+ if(!vName || vName->isEmpty())
+ {
+ KVSCCC_pContext->error(__tr2qs("Missing alias name"));
+ return false;
+ }
+
+ QString szName;
+ vName->asString(szName);
+
+ // we allow only [\w:]+
+ QRegExp re("[\\w:]+");
+ if(!re.exactMatch(szName))
+ {
+ KVSCCC_pContext->error(__tr2qs("Alias names can contain only letters, digits, underscores and '::' namespace separators"));
+ return false;
+ }
+
+ // make sure that we have only doubled "::" and not ":" or ":::..."
+ QString tmp = szName;
+ tmp.replace("::","@"); // @ is not allowed by the rule above
+ if(tmp.find(":") != -1)
+ {
+ KVSCCC_pContext->error(__tr2qs("Stray ':' character in alias name: did you mean ...<namespace>::<name> ?"));
+ return false;
+ }
+
+ if(tmp.find("@@") != -1)
+ {
+ KVSCCC_pContext->error(__tr2qs("Found an empty namespace in alias name"));
+ return false;
+ }
+
+ if(KVSCCC_pCallback->code().isEmpty())
+ {
+ if(!KviKvsAliasManager::instance()->remove(szName))
+ {
+ if(!KVSCCC_pSwitches->find('q',"quiet"))
+ KVSCCC_pContext->warning(__tr2qs("The alias %Q is not existing"),&szName);
+ }
+ } else {
+ KviKvsScript * pScript = new KviKvsScript(*KVSCCC_pCallback);
+ pScript->setName(szName);
+ KviKvsAliasManager::instance()->add(szName,pScript);
+ }
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: awhois
+ @type:
+ command
+ @title:
+ awhois
+ @syntax:
+ awhois [-i] (<nickname:string>[,<magic:variant>])
+ {
+ <callback command>
+ }
+ @short:
+ Asynchronous WHOIS
+ @switches:
+ !sw: -i | --idle-time
+ Ask the whois informations to the server that <nickname> is
+ connected to, effectively returning the user's idle time.
+ @description:
+ AWHOIS stands for Asynchronous WHOIS. It is used to obtain data for a specified
+ irc user (designated by <nickname>). This command sends a WHOIS query to the
+ server and silently awaits the sequence of replies. When the "End of WHOIS" message
+ is received from server the <callback command> is executed passing the WHOIS
+ information as positional parameters.[br]
+ The <magic> string is an optional string to be evaluated at AWHOIS execution time.
+ It is passed as the last positional parameter.[br]
+ Callback command parameters:[br]
+ $0 = nickname[br]
+ $1 = username[br]
+ $2 = hostname[br]
+ $3 = realname (may be empty)[br]
+ $4 = server[br]
+ $5 = idle time (may be empty)[br]
+ $6 = signon time (may be empty)[br]
+ $7 = channels (may be empty)[br]
+ $8 = server that provided the information[br]
+ $9 = special information (may be empty)[br]
+ $10 = magic string evaluated at awhois call (may be empty)[br]
+ If the -i switch is specified , the whois message is sent to the server
+ that the <nickname> user is connected to; in this way you will probably
+ get the idle time of the user too.[br]
+ If the server replies with a "No such nick/channel error message" the
+ <callback command> will be still triggered , but will have all the parameters
+ empty with the exception of $0.[br]
+ If the connection gets interrupted before all the information have been received,
+ the <callback command> will never be triggered.[br]
+ This command is [doc:connection_dependant_commands]connection dependant[/doc].[br]
+ @examples:
+ [example]
+ awhois(pragma){ echo $0-; }
+ [/example]
+ */
+
+ KVSCCC(awhois)
+ {
+ QString szNick;
+ KviKvsVariant * pMagic;
+ KVSCCC_PARAMETERS_BEGIN
+ KVSCCC_PARAMETER("nickname",KVS_PT_NONEMPTYSTRING,0,szNick)
+ KVSCCC_PARAMETER("magic",KVS_PT_VARIANT,KVS_PF_OPTIONAL,pMagic)
+ KVSCCC_PARAMETERS_END
+
+ KVSCCC_REQUIRE_CONNECTION
+
+ KviQCString szN = KVSCCC_pConnection->encodeText(szNick);
+
+ KviAsyncWhoisInfo * info = new KviAsyncWhoisInfo();
+ info->pCallback = new KviKvsScript(*KVSCCC_pCallback);
+ info->pMagic = pMagic ? new KviKvsVariant(*pMagic) : new KviKvsVariant();
+ info->szNick = szNick;
+ info->pWindow = KVSCCC_pWindow;
+
+ KVSCCC_pConnection->asyncWhoisData()->add(info);
+
+ if(KVSCCC_pSwitches->find('i',"idle-time"))KVSCCC_pConnection->sendFmtData("WHOIS %s %s",szN.data(),szN.data());
+ else KVSCCC_pConnection->sendFmtData("WHOIS %s",szN.data());
+
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: button
+ @title:
+ button
+ @type:
+ command
+ @short:
+ Adds/removes/changes user definable buttons
+ @syntax:
+ button [-d] [-q] (<type_unused:variant>,<name:string>[,<image_id:string>[,<label_text:string>]])
+ {
+ <callback_code>
+ }
+ @switches:
+ !sw: -d | --disabled
+ Creates the button as disabled
+ !sw: -q | --quiet
+ Run quietly, print no warnings
+ @description:
+ Adds a new user defined button with the specified <name>.[br]
+ [br]
+ The <type_unused> parameter is ignored and is present only for
+ backward compatibility.
+ [br]
+ The button image is specified by the [doc:image_id]<image_id>[/doc].[br]
+ The optional button text is specified by <label_text>.[br]
+ The <callback_code> will be executed as reaction to a button press.[br]
+ [br]
+ The "window" type button can be added only to the windows that have a button container: this
+ actually includes at least console , channels and queries.[br]
+ The button is added to the current window; if you want to add it to a different
+ window , use the [doc:command_rebinding]standard -r command rebinding[/doc] switch.[br]
+ The <callback_code> will be executed as reaction to a button press; the
+ code execution will be bound to the window that the button is attacched to.[br]
+ If a button with <name> already exists in the current window, its parameters are changed
+ according to the passed values (<image_id>, <label_text> and <callback_code>).[br]
+ [br]
+ Passing an empty <callback_value> removes the button.[br]
+ The callback parameters $0 and $1 will contain the screen coordinates of the bottom-left
+ corner of the button: this is useful for showing a popup menu in response to the click.[br]
+ If the -q switch is used , this command prints no warnings.[br]
+ The -d switch causes the button to be disabled (grayed).[br]
+ @examples:
+ [example]
+ button(w,test,-1,Test button){ echo Test!; }
+ button(w,test){}
+ [/example]
+
+ */
+
+ KVSCCC(button)
+ {
+ KviKvsVariant * pUnused;
+ QString szName,szIcon,szLabel;
+ KVSCCC_PARAMETERS_BEGIN
+ KVSCCC_PARAMETER("type_unused",KVS_PT_VARIANT,0,pUnused)
+ KVSCCC_PARAMETER("name",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSCCC_PARAMETER("icon",KVS_PT_NONEMPTYSTRING,KVS_PF_OPTIONAL,szIcon)
+ KVSCCC_PARAMETER("label",KVS_PT_NONEMPTYSTRING,KVS_PF_OPTIONAL,szLabel)
+ KVSCCC_PARAMETERS_END
+
+ KviScriptUserButton * pButton = 0;
+
+ if(!KVSCCC_pWindow->buttonContainer())
+ {
+ if(!KVSCCC_pSwitches->find('q',"quiet"))
+ KVSCCC_pContext->warning(__tr2qs("The specified window has no button containers"));
+ return true;
+ }
+
+ pButton = (KviScriptUserButton *)(KVSCCC_pWindow->buttonContainer())->child(szName,"KviWindowScriptButton");
+
+ if(KVSCCC_pCallback->code().isEmpty())
+ {
+ if(pButton)delete pButton;
+ else {
+ if(!KVSCCC_pSwitches->find('q',"quiet"))
+ KVSCCC_pContext->warning(__tr2qs("Window button '%Q' not found"),&szName);
+ }
+ return true;
+ }
+
+ if(!pButton)
+ {
+ pButton = new KviWindowScriptButton(KVSCCC_pWindow->buttonContainer(),KVSCCC_pWindow,szName);
+ pButton->show();
+ }
+
+ KviTalToolTip::remove(pButton);
+ if(!szLabel.isEmpty())
+ {
+ pButton->setButtonText(szLabel);
+ KviTalToolTip::add(pButton,szLabel);
+ }
+
+ pButton->setButtonCode(new KviKvsScript(*KVSCCC_pCallback));
+
+ if(!szIcon.isEmpty())
+ {
+ QPixmap * pix = g_pIconManager->getImage(szIcon);
+ if(pix)
+ {
+ pButton->setButtonPixmap(*pix);
+ } else {
+ if(!KVSCCC_pSwitches->find('q',"quiet"))
+ KVSCCC_pContext->warning(__tr2qs("Can't find the icon '%Q'"),&szIcon);
+ }
+ }
+
+ pButton->setEnabled(!(KVSCCC_pSwitches->find('d',"disabled")));
+
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: event
+ @title:
+ event
+ @type:
+ command
+ @short:
+ Adds a new event handler
+ @syntax:
+ event [-q] (<event_name>,<handler_name>)
+ {
+ <implementation>
+ }
+ @switches:
+ !sw: -q | --quiet
+ Do not print any warnings
+ @description:
+ Adds the handler <handler_name> with <implementation> to
+ the list of handlers for the event <event_name>.[br]
+ If the <implementation> is empty
+ the handler <handler_name> is removed from the handler
+ list instead of being added.[br]
+ The <event_name> may be one of the kvirc-builtin event names
+ or a numeric code (from 0 to 999) of a raw server message.[br]
+ If the -q switch is specified then the command runs in quiet mode.
+ @seealso:
+ [cmd]eventctl[/cmd]
+ */
+
+ KVSCCC(event)
+ {
+ QString szEventName,szHandlerName;
+ KVSCCC_PARAMETERS_BEGIN
+ KVSCCC_PARAMETER("event_name",KVS_PT_NONEMPTYSTRING,0,szEventName)
+ KVSCCC_PARAMETER("handler_name",KVS_PT_NONEMPTYSTRING,0,szHandlerName)
+ KVSCCC_PARAMETERS_END
+
+ bool bOk;
+ int iNumber = szEventName.toInt(&bOk);
+ bool bIsRaw = (bOk && (iNumber >= 0) && (iNumber < 1000));
+
+ if(bIsRaw)
+ {
+ if(!KviKvsEventManager::instance()->isValidRawEvent(iNumber))
+ {
+ if(!KVSCCC_pSwitches->find('q',"quiet"))
+ KVSCCC_pContext->warning(__tr2qs("No such event (%Q)"),&szEventName);
+ return true;
+ }
+ } else {
+ iNumber = KviKvsEventManager::instance()->findAppEventIndexByName(szEventName);
+ if(!KviKvsEventManager::instance()->isValidAppEvent(iNumber))
+ {
+ if(!KVSCCC_pSwitches->find('q',"quiet"))
+ KVSCCC_pContext->warning(__tr2qs("No such event (%Q)"),&szEventName);
+ return true;
+ }
+ }
+
+ if(KVSCCC_pCallback->code().isEmpty())
+ {
+ if(bIsRaw)
+ {
+ if(!KviKvsEventManager::instance()->removeScriptRawHandler(iNumber,szHandlerName))
+ {
+ if(!KVSCCC_pSwitches->find('q',"quiet"))
+ KVSCCC_pContext->warning(__tr2qs("No handler '%Q' for raw numeric event '%d'"),&szHandlerName,iNumber);
+ }
+ } else {
+ if(!KviKvsEventManager::instance()->removeScriptAppHandler(iNumber,szHandlerName))
+ {
+ if(!KVSCCC_pSwitches->find('q',"quiet"))
+ KVSCCC_pContext->warning(__tr2qs("No handler '%Q' for event '%Q'"),&szHandlerName,&szEventName);
+ }
+ }
+ } else {
+ if(bIsRaw)
+ {
+ // remove the old handler
+ KviKvsEventManager::instance()->removeScriptRawHandler(iNumber,szHandlerName);
+ QString contextName;
+ KviQString::sprintf(contextName,"RawEvent%d::%Q",iNumber,&szHandlerName);
+ KviKvsScriptEventHandler * pHandler = new KviKvsScriptEventHandler(szHandlerName,contextName,KVSCCC_pCallback->code());
+ KviKvsEventManager::instance()->addRawHandler(iNumber,pHandler);
+ } else {
+ // remove the old handler
+ KviKvsEventManager::instance()->removeScriptAppHandler(iNumber,szHandlerName);
+ QString contextName;
+ KviQString::sprintf(contextName,"%Q::%Q",&szEventName,&szHandlerName);
+ KviKvsScriptEventHandler * pHandler = new KviKvsScriptEventHandler(szHandlerName,contextName,KVSCCC_pCallback->code());
+ KviKvsEventManager::instance()->addAppHandler(iNumber,pHandler);
+ }
+ }
+
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: exec
+ @type:
+ command
+ @title:
+ exec
+ @syntax:
+ exec [switches] (<commandline:string>[,<magic data:variant>])
+ {
+ <callback command>
+ }
+ @short:
+ Asynchronous execution of external programs
+ @switches:
+ !sw: -q | --quiet
+ Quiet: do not print any warnings
+ !sw: -t | --trigger-termination
+ Trigger the termination event
+ !sw: -x | --trigger-startup
+ Trigger the startup event
+ !sw: -n | --no-stdout
+ Do NOT trigger any stdout events
+ !sw: -e | --trigger-stderr
+ Trigger stderr events
+ !sw: -b | --output-block
+ Trigger the <callback comand> with the stdout and stderr events exactly once,
+ passing the complete block of process output. The events are triggered even
+ if the process output is empty.
+ !sw: -k=<maximum run time> | --kill-after=<maximum run time>
+ Kill the process unconditionally after <maximum run time> milliseconds.
+ If the -t switch is used then the termination event will be
+ triggered just after the process has been killed.
+ !sw: -p=<timeout> | --trigger-ping=<timeout>
+ Trigger <callback command> with "ping" events every <timeout> milliseconds.
+ !sw: -w | --bind-to-window
+ Kill the process if the current window is closed. In this case the
+ termination event is NOT triggered (since the parent window has been lost).
+ If this switch is not used then the process is rebound to
+ the active console window and continues running.
+ !sw: -s=<interpreter command> | --shell=<interpreter command>
+ Use <interpreter command> instead of the default interpreter "sh -c".
+ The <interpreter command> should be able to launch the interpeter
+ and should contain the necessary arguments in order to allow
+ KVirc to pass the "commandline" by appending it as the last parameter.
+ !sw: -d | --direct
+ Use no command interpreter at all: run the command directly.
+ Takes precedence over -s.
+ !sw: -q | --quiet
+ Run quietly
+ @description:
+ [b]Overview[/b][br]
+ Executes the <commandline> by passing it to a command interpreter.
+ The <commandline> is executed asynchronously: this means that
+ when exec returns the control to the next command, <commandline>
+ may be still running.[br]
+ [br]
+ [b]The callback[/b][br]
+ The <callback command> is triggered on several events related to the
+ child process and it gets passed the following parameters:[br]
+ $0 = <event cause>[br]
+ $1 = <event parameter>[br]
+ $2 = <magic data>[br]
+ The first parameter specifies the event cause and contains one of the
+ following strings: "stdout","stderr","terminated","started" and "ping".
+ [b]By default (if no switches are used) only "stdout" type events are triggered[/b].
+ The second parameter depends on the event cause and contains data sensible
+ to each event type. The third parameter is the eventual <magic data>
+ passed to the exec command call.[br]
+ [br]
+ [b]Interacting with the process[/b][br]
+ If you use [cmd]halt[/cmd] to terminate
+ the callback then the slave process is killed immediately and
+ no other callback events are triggered.[br] If you return some non empty string
+ then this string will be written to the process stdin stream. This trick
+ can be used to control interactive processes. Please note that you must
+ include all the relevant carriage returns and newlines in the return value
+ (see [fnc]$cr[/fnc] and [fnc]$lf[/fnc]).[br]
+ [br]
+ [b]Startup event[/b][br]
+ If the -x switch is used then the startup event is triggered
+ just after the process has been succesfully launched.
+ The $0 parameter passed to the callback contains the string "started".
+ Parameter $1 contains the pid of the slave process.[br]
+ [br]
+ [b]Stdout data event[/b][br]
+ The stdout data event is triggered when the process prints some output
+ on its stdout stream. This event is triggered by default and to disable
+ it you must use the -n switch. $0 contains the string "stdout".
+ If the -b switch is not used then $1 contains a single line of process
+ output with the trailing carriage return and/or line feed stripped.
+ If -b is used then $1 contains the whole process output
+ block (eventually empty) with all the cr/lf pairs.[br]
+ [br]
+ [b]Stderr data event[/b][br]
+ The stderr data event is similar to the stdout one but there are three differences.
+ The first one is that the stderr event is NOT triggered by default: you must
+ use the -e switch to enable it. The second difference is that $0
+ contains "stderr" instead of "stdout". The last difference is that $1 contains data
+ coming from the slave process stderr stream.[br]
+ [br]
+ [b]Termination event[/b][br]
+ The termination event is triggered after the slave process has terminated its
+ execution. You must use the -t switch to enable it since it is
+ disabled by default. $0 contains the string "terminated". $1 contains the process exit
+ status value. (Note that if the process has crashed or has been terminated
+ by an external singnal then this value will be 0).[br]
+ [br]
+ [b]Ping event[/b][br]
+ The ping event is triggered only if the -p=<timeout> switch is passed.[br]
+ This event may be useful to monitor the process status while it is not
+ emitting any output, to write data to its stdin stream (by the means of [cmd]return[/cmd])
+ or simply to give some feedback to the user while the slave process is
+ doing a long computation.[br]
+ [br]
+ [b]The extended scope variables[/b][br]
+ The <callback command> has a set of [doc:data_types]extended scope variables[/doc]
+ that conserve their value during the whole life time of the slave process.[br]
+ These variables can be accessed through the %:<varname> syntax and are
+ useful to store process private data between multiple <callback command> calls.[br]
+ [b]Some words about the switches[/b][br]
+ If the -b switch is used then the <callback command> is called only once
+ for the events stdout and stderr (if enabled) with the complete output block from the process.
+ With the -b switch the events stdout and stderr are triggered once even if the process
+ emits no output.
+ The -s=<interpreter> switch may be used to specify the path of the command interpreter
+ that is "sh -c" by default on unix machines and "cmd.exe /c" on windows.
+ The interpreter executable is searched on the system PATH.
+ If the process can't be started then a warning message is printed in the current window
+ unless the -q (quiet) flag is used.[br]
+ [br]
+ @examples:
+ [example]
+ [comment]# Really simple example: print only the stdout of a slave process[/comment]
+ exec("cat /proc/cpuinfo"){ echo $1; };
+ [comment]# Now print only stderr: enable stderr and disable stdout[/comment]
+ exec -e -n ("sed -senseless"){ echo $1; };
+ [comment]# Do it another way: enable stderr and filter out stdout[/comment]
+ exec -e ("sed -senseless"){ if($0 == "stderr")echo $1; }
+ [comment]# Now enable all (almost) events and print them[/comment]
+ exec -e -t -s ("cat /proc/cpuinfo && sed -senseless"){ echo [event:$0] $1; }
+ [comment]# Now see what happens if -b is used[/comment]
+ exec -b -e -t -s ("cat /proc/cpuinfo && sed -senseless"){ echo [event:$0] $1; }
+ [comment]# Run an iterative script and kill it after 20 seconds[/comment]
+ exec -k=20000 ("while true; do sleep 1; echo \"Tic\"; done"){ echo [event:$0] $1; }
+ [comment]# Run a blocking process, kill it after 20 seconds[/comment]
+ [comment]# and give feedback to the user by the means of ping[/comment]
+ exec -k=20000 -p=1000 -t ("cat")
+ {
+ if($0 == "ping")echo "[event:$0] Please wait while doing a huge computation ..."
+ else if($0 == "terminated")echo "[event:$0] Ok, done :)"
+ }
+ [comment]# Do the same but this time use the extended scope vars[/comment]
+ [comment]# Use also a nicer syntax[/comment]
+ exec -k=20000 -p=1000 -t ("cat")
+ {
+ switch($0)
+ {
+ case("ping"):
+ {
+ if(%:x == 1)
+ {
+ %:x = 0;
+ echo "Tic!"
+ } else {
+ %:x = 1;
+ echo "Tac!"
+ }
+ }
+ break;
+ case("terminated"):
+ {
+ echo "Ok, done :)"
+ }
+ break;
+ }
+ }
+ [comment]# Again do the same but kill the process explicitly[/comment]
+ exec -x -p=1000 -t ("cat")
+ {
+ switch($0)
+ {
+ case("started"):
+ {
+ [comment]# Initialize the counter[/comment]
+ %:x = 10;
+ }
+ break;
+ case("ping"):
+ {
+ echo %:x
+ %:x--
+ [comment]# When the counter reaches zero, kill the process with halt[/comment]
+ if(%:x == 0)halt;
+ }
+ break;
+ case("terminated"):
+ {
+ echo "Boom!"
+ }
+ break;
+ }
+ }
+ [comment]# Now play with an interactive process[/comment]
+ [comment]# WARNING: Please note that spam is illegal and generates bad karma[/comment]
+ [comment]# Try it only with your own e-mail address as recipient[/comment]
+ exec -s -k=60000 -t ("telnet my.mail.server.com 25")
+ {
+ if($0 == "started")
+ {
+ %:state = 0
+ [comment]# Returning an empty string does not write to stdin[/comment]
+ return
+ }
+
+ if($1 == "stderr")
+ {
+ echo "[stderr] $1"
+ return
+ }
+
+ if($1 == "terminated")
+ {
+ echo "[process terminated]"
+ return
+ }
+
+ echo "[stdout] $1"
+
+ switch(%:state)
+ {
+ case(0):
+ {
+ [comment]# Waiting for 220 (ready)[/comment]
+ if($str.match("220*",$1))
+ {
+ %:state++
+ echo "Sending HELO..."
+ return "HELO myhostname$cr$lf";
+ }
+ }
+ break
+ case(1):
+ {
+ [comment]# Waiting for 250 (after the HELO)[/comment]
+ if($str.match("250*",$1))
+ {
+ %:state++
+ echo "Sending MAIL..."
+ return "MAIL From: <[email protected]>$cr$lf"
+ } else {
+ echo "HELO command not accepted: $1"
+ halt
+ }
+ }
+ break;
+ case(2):
+ {
+ [comment]# Waiting for another 250 (MAIL accepted)[/comment]
+ if($str.match("250*",$1))
+ {
+ %:state++
+ echo "Sending RCPT..."
+ return "RCPT To: <[email protected]>$cr$lf"
+ } else {
+ echo "MAIL command not accepted: $1"
+ halt
+ }
+ }
+ break;
+ case(3):
+ {
+ [comment]# Waiting for another 250 (RCPT accepted)[/comment]
+ if($str.match("250*",$1))
+ {
+ %:state++
+ echo "Sending DATA..."
+ return "DATA$cr$lf"
+ } else {
+ echo "RCPT not accepted: $1"
+ halt
+ }
+ }
+ break;
+ case(4):
+ {
+ [comment]# Waiting for 354 (ok, go on)[/comment]
+ if($str.match("354*",$1))
+ {
+ %:state++
+ echo "Sending body..."
+ return "This is a test message :)$cr$lf$cr$lf.$cr$lf"
+ } else {
+ echo "Mail body not accepted: $1"
+ halt
+ }
+ }
+ break;
+ case(5):
+ {
+ [comment]# We don't wait anymore :)[/comment]
+ %:state++
+ echo "Sending QUIT..."
+ return "QUIT$cr$lf"
+ }
+ break;
+ default:
+ {
+ [comment]# Usually the mail server closes the connection[/comment]
+ %:state++
+ if(%:state > 10)
+ {
+ [comment]# But if it does not in few messages[/comment]
+ [comment]# Then force the process to die[/comment]
+ halt
+ }
+ }
+ }
+ }
+ [/example]
+ */
+
+ KVSCCC(exec)
+ {
+ QString szCommandline;
+ KviKvsVariant * pMagic;
+ KVSCCC_PARAMETERS_BEGIN
+ KVSCCC_PARAMETER("commandline",KVS_PT_NONEMPTYSTRING,0,szCommandline)
+ KVSCCC_PARAMETER("magic",KVS_PT_VARIANT,KVS_PF_OPTIONAL,pMagic)
+ KVSCCC_PARAMETERS_END
+
+ int f = 0;
+
+ if(KVSCCC_pSwitches->find('t',"trigger-termination") != 0)f |= KVI_KVS_PROCESSDESCRIPTOR_TRIGGERTERMINATED;
+ if(KVSCCC_pSwitches->find('n',"no-stdout") == 0)f |= KVI_KVS_PROCESSDESCRIPTOR_TRIGGERSTDOUT;
+ if(KVSCCC_pSwitches->find('e',"trigger-stderr") != 0)f |= KVI_KVS_PROCESSDESCRIPTOR_TRIGGERSTDERR;
+ if(KVSCCC_pSwitches->find('x',"trigger-startup") != 0)f |= KVI_KVS_PROCESSDESCRIPTOR_TRIGGERSTARTED;
+ if(KVSCCC_pSwitches->find('b',"output-block") != 0)f |= KVI_KVS_PROCESSDESCRIPTOR_OUTPUTBYBLOCKS;
+ if(KVSCCC_pSwitches->find('w',"bind-to-window") != 0)f |= KVI_KVS_PROCESSDESCRIPTOR_KILLIFNOWINDOW;
+ if(KVSCCC_pSwitches->find('d',"direct") != 0)f |= KVI_KVS_PROCESSDESCRIPTOR_NOSHELL;
+
+ QString szShell;
+ KVSCCC_pSwitches->getAsStringIfExisting('s',"shell",szShell);
+
+ kvs_int_t iPingTime = 0;
+ kvs_int_t iMaxRunTime = 0;
+
+ KviKvsVariant * pPing = KVSCCC_pSwitches->find('p',"trigger-ping");
+ if(pPing)
+ {
+ if(!(pPing->asInteger(iPingTime) && iPingTime > 0))
+ {
+ KVSCCC_pContext->warning(__tr2qs("The specified ping time is invalid: assuming zero (no ping)"));
+ iPingTime = 0;
+ }
+ }
+
+ KviKvsVariant * pKill = KVSCCC_pSwitches->find('k',"kill-after");
+ if(pKill)
+ {
+ if(!(pKill->asInteger(iMaxRunTime) && iMaxRunTime > 0))
+ {
+ KVSCCC_pContext->warning(__tr2qs("The specified maximum run time is invalid: assuming zero (infinite)"));
+ iMaxRunTime = 0;
+ }
+ }
+
+ KviKvsProcessDescriptorData * d = new KviKvsProcessDescriptorData;
+
+ d->szCommandline = szCommandline;
+ d->szShell = szShell;
+ d->pWnd = KVSCCC_pContext->window();
+ d->pMagic =pMagic ? new KviKvsVariant(*pMagic) : 0;
+ d->iFlags = f;
+ d->pCallback = new KviKvsScript(*KVSCCC_pCallback);
+ d->iMaxRunTime = iMaxRunTime;
+ d->iPingTimeout = iPingTime;
+
+ KviKvsProcessAsyncOperation * op = new KviKvsProcessAsyncOperation(d);
+ if(!op->start())
+ {
+ if(KVSCCC_pSwitches->find('q',"quiet") == 0)KVSCCC_pContext->warning(__tr2qs("Failed to start the process"));
+ delete op;
+ }
+
+ return true;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: privateimpl
+ @title:
+ privateimpl
+ @type:
+ command
+ @short:
+ Adds a private implementation of a function
+ @syntax:
+ privateimpl(<object_handle>,<function_name>)<implementation>
+ @description:
+ Adds a private implementation of function <function_name> to the
+ existing object designed by <object_handle>.
+ <implementation> must be a valid command sequence.[br]
+ Side note:[br]
+ This command can not succesfully implement
+ the "constructor" function since it must be called
+ after this one has already been executed.[br]
+ To implement a constructor you MUST write your own class definition.[br]
+ @seealso:
+ [cmd]class[/cmd],
+ [doc:objects]Objects documentation[/doc]
+ */
+
+ KVSCCC(privateimpl)
+ {
+ kvs_hobject_t hObject;
+ QString szFunctionName;
+ KVSCCC_PARAMETERS_BEGIN
+ KVSCCC_PARAMETER("object_handle",KVS_PT_HOBJECT,0,hObject)
+ KVSCCC_PARAMETER("function_name",KVS_PT_NONEMPTYSTRING,0,szFunctionName)
+ KVSCCC_PARAMETERS_END
+
+ KviKvsObject * o = KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if(!o)
+ {
+ KVSCCC_pContext->error(__tr2qs("The specified object does not exist"));
+ return false;
+ }
+
+ o->registerPrivateImplementation(szFunctionName,KVSCCC_pCallback->code());
+
+ return true;
+ }
+
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: timer
+ @title:
+ timer
+ @type:
+ command
+ @short:
+ Starts a timer
+ @syntax:
+ timer [-s] [-p] (<name>,<delay_in_msecs>[,<callback_param1>[,<callback_param2>[,...]]])
+ {
+ <callback_command>
+ }
+ @switches:
+ !sw: -s | --single-shot
+ Causes the timer to trigger only once (single shot timer)
+ !sw: -p | --persistent
+ Creates a persistent timer bound to any existing window
+ @description:
+ Starts a new timer named <name> with the specified delay (in milliseconds).[br]
+ The timer periodically calls the specified <callback_command> code passing the
+ eventual <callback_param> strings as positional parameters.[br]
+ If a timer with the same name already exists, it is replaced by this one.[br]
+ [b]The <callback_command> is evaluated at timer "shot" time and NOT while
+ this command is being parsed. This means that the identifiers that you put
+ inside <callback_command> will NOT have the current values.[/b]
+ The values will be assigned at timer "shot" time.[br]
+ This is a common scripters error and problem: if it is not clear, look at the examples below.[br]
+ The timer is bound to the window in that this command is executed in.[br]
+ If the window gets destroyed, the timer is stopped; unless the -p switch is used.[br]
+ The -p switch causes the timer to be persistent across the application and exists until
+ the last window has been closed: it is basically rebound to another (random) window when the
+ original window is destroyed.[br]
+ The -s switch cuases this timer to trigger only once: it will be automatically destroyed after that.[br]
+ The time has an associated set of [doc:data_structures]extended scope variables[/doc]:
+ the variables that begin with "%:" have their life extended to the whole "life" of the timer.[br]
+ Using a very low delay is a common method to perform some background processing: you
+ basically split a huge job in small slices and execute them when the timer is triggered
+ until you run out of slices. A delay of 0 will cause the timer to be called whenever
+ KVIrc has some "idle time" to spend.
+ On the other hand, remember that timers are precious resources: many timers running
+ with a very low delay will cause KVIrc to slow down.[br]
+ Since all the kvirc timers share the same namespace it is a good idea to use
+ descriptive timer names: a timer named "a" is likely to be used by two or more scripts
+ at once causing one (or both) of them to fail.[br]
+ A timer can be stopped at any time by using the [cmd]killtimer[/cmd] command.
+ @seealso:
+ [cmd]killtimer[/cmd]
+ @examples:
+ [example]
+ [comment]# Just a plain timer[/comment]
+ timer(test,1000){ echo "Hello!"; }
+ [comment]# Now watch the timer running[/comment]
+ killtimer test
+ [comment]# Single shot timer[/comment]
+ timer -s (test,1000){ echo "This will fire only once!"; }
+ [comment]# The call above is equivalent to[/comment]
+ timer(test,1000){ echo "This will file only once!"; killtimer test; }
+ [comment]# Callback parameters: consider the following code[/comment]
+ %parameter = "some string value"
+ echo "Before calling /timer \%parameter is \"%parameter\""
+ timer -s (test,1000,%parameter){ echo "inside the callback \%parameter is \"%parameter\" but \$0 is \"$0\""; }
+ [comment]# watch the timer running , and note the behaviour of the %parameter variable[/comment]
+ killtimer test
+ [comment]# Use the extended scope timer variables[/comment]
+ timer(test,1000)
+ {
+ [comment]# Use the extended scope %:count variable to keep track[/comment]
+ [comment]# of the times that this timer has been called[/comment]
+ [cmd]if[/cmd]("%:count" == "")%:count = 1
+ else %:count++
+ [cmd]echo[/cmd] "This timer has fired %:count times"
+ if(%:count == 10)
+ {
+ # This will kill the current timer, we don't need to specify the name
+ [cmd]killtimer[/cmd]
+ }
+ }
+ [comment]# Use isTimer to check if the timer exists[/comment]
+ [cmd]echo[/cmd] [fnc]$isTimer[/fnc](test)
+ [comment]# Repeat the command above after the 10th timeout...[/comment]
+ [/example]
+ */
+
+ KVSCCC(timer)
+ {
+ KviKvsVariant * vName = KVSCCC_pParams->first();
+ KviKvsVariant * vDelay = KVSCCC_pParams->next();
+
+ if(!vName || vName->isEmpty())
+ {
+ KVSCCC_pContext->error(__tr2qs("Missing timer name"));
+ return false;
+ }
+
+ QString szName;
+ vName->asString(szName);
+
+ if(!vDelay)
+ {
+ KVSCCC_pContext->error(__tr2qs("Missing timeout delay"));
+ return false;
+ }
+
+ kvs_int_t iDelay;
+ if(!vDelay->asInteger(iDelay))
+ {
+ KVSCCC_pContext->error(__tr2qs("The timeout delay didn't evaluate to an integer"));
+ return false;
+ }
+
+ KviKvsTimer::Lifetime lt;
+
+ if(KVSCCC_pSwitches->find('s',"single-shot"))lt = KviKvsTimer::SingleShot;
+ else if(KVSCCC_pSwitches->find('p',"persistent"))lt = KviKvsTimer::Persistent;
+ else lt = KviKvsTimer::WindowLifetime;
+
+ // prepare the callback parameters
+ KviKvsVariantList * l = new KviKvsVariantList();
+ l->setAutoDelete(true);
+
+ KviKvsVariant * v = KVSCCC_pParams->next();
+ while(v)
+ {
+ l->append(new KviKvsVariant(*v)); // copy
+ v = KVSCCC_pParams->next();
+ }
+
+ if(!KviKvsTimerManager::instance()->addTimer(szName,lt,KVSCCC_pContext->window(),iDelay,new KviKvsScript(*KVSCCC_pCallback),l))
+ {
+ KVSCCC_pContext->error(__tr2qs("Unable to add the timer: insufficient system resources"));
+ return false;
+ }
+
+ return true;
+ }
+
+
+ void init()
+ {
+ KviKvsKernel * pKern = KviKvsKernel::instance();
+
+#define _REGCMD(__cmdName,__routine) \
+ { \
+ KviKvsCoreCallbackCommandExecRoutine * r = new KviKvsCoreCallbackCommandExecRoutine; \
+ r->proc = KVI_PTR2MEMBER(KviKvsCoreCallbackCommands::__routine); \
+ pKern->registerCoreCallbackCommandExecRoutine(QString(__cmdName),r); \
+ }
+
+#ifdef COMPILE_NEW_KVS
+ _REGCMD("ahost",ahost);
+ _REGCMD("awhois",awhois);
+#endif
+ _REGCMD("alias",alias);
+#ifdef COMPILE_NEW_KVS
+ _REGCMD("button",button);
+ _REGCMD("event",event);
+ _REGCMD("exec",exec);
+ _REGCMD("privateimpl",privateimpl);
+#endif
+ _REGCMD("function",alias);
+ _REGCMD("timer",timer);
+
+#undef _REGCMD
+ }
+};
diff --git a/src/kvirc/kvs/kvi_kvs_corecallbackcommands.h b/src/kvirc/kvs/kvi_kvs_corecallbackcommands.h
new file mode 100644
index 00000000..ce77ec6d
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_corecallbackcommands.h
@@ -0,0 +1,78 @@
+#ifndef _KVI_KVS_CORECALLBACKCOMMANDS_H_
+#define _KVI_KVS_CORECALLBACKCOMMANDS_H_
+//=============================================================================
+//
+// File : kvi_kvs_corecallbackcommands.h
+// Created on Fri 31 Oct 2003 04:07:58 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_kvs_variantlist.h"
+#include "kvi_kvs_switchlist.h"
+#include "kvi_kvs_script.h"
+#include "kvi_kvs_parameterprocessor.h"
+
+
+#define KVSCCC(_name) bool _name(KviKvsRunTimeContext * __pContext,KviKvsVariantList * __pParams,KviKvsSwitchList * __pSwitches,const KviKvsScript * __pCallback)
+
+#define KVSCCC_pContext __pContext
+#define KVSCCC_pParams __pParams
+#define KVSCCC_pSwitches __pSwitches
+#define KVSCCC_pCallback __pCallback
+
+#define KVSCCC_PARAMETER(a,b,c,d) KVS_PARAMETER(a,b,c,d)
+
+#define KVSCCC_PARAMETERS_BEGIN \
+ KVS_PARAMETERS_BEGIN(parameter_format_list)
+
+#define KVSCCC_PARAMETERS_END \
+ KVS_PARAMETERS_END \
+ if(!KviKvsParameterProcessor::process(KVSCCC_pParams,KVSCCC_pContext,parameter_format_list))return false;
+
+#define KVSCCC_REQUIRE_CONNECTION \
+ if(!KVSCCC_pContext->window()->context())return KVSCCC_pContext->errorNoIrcContext(); \
+ if(!KVSCCC_pContext->window()->connection())return KVSCCC_pContext->warningNoIrcConnection();
+
+#define KVSCCC_pWindow __pContext->window()
+#define KVSCCC_pConnection __pContext->window()->connection()
+#define KVSCCC_pIrcContext __pContext->context()
+
+
+namespace KviKvsCoreCallbackCommands
+{
+#ifdef COMPILE_NEW_KVS
+ KVSCCC(ahost);
+ KVSCCC(awhois);
+#endif
+ KVSCCC(alias);
+#ifdef COMPILE_NEW_KVS
+ KVSCCC(button);
+ KVSCCC(event);
+ KVSCCC(exec);
+ KVSCCC(privateimpl);
+#endif
+ KVSCCC(timer);
+
+ void init();
+};
+
+#endif //!_KVI_KVS_CORECALLBACKCOMMANDS_H_
diff --git a/src/kvirc/kvs/kvi_kvs_corefunctions.cpp b/src/kvirc/kvs/kvi_kvs_corefunctions.cpp
new file mode 100644
index 00000000..74aa4565
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_corefunctions.cpp
@@ -0,0 +1,156 @@
+//=============================================================================
+//
+// File : kvi_kvs_corefunctions.cpp
+// Created on Fri 31 Oct 2003 01:52:04 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_corefunctions.h"
+
+#include "kvi_kvs_kernel.h"
+#include "kvi_kvs_object.h"
+
+#include "kvi_locale.h"
+
+namespace KviKvsCoreFunctions
+{
+ void init()
+ {
+ KviKvsKernel * pKern = KviKvsKernel::instance();
+
+#define _REGFNC(__fncName,__routine) \
+ { \
+ KviKvsCoreFunctionExecRoutine * r = new KviKvsCoreFunctionExecRoutine; \
+ r->proc = KVI_PTR2MEMBER(KviKvsCoreFunctions::__routine); \
+ pKern->registerCoreFunctionExecRoutine(QString(__fncName),r); \
+ }
+
+ // a_f
+ _REGFNC("active",active)
+ _REGFNC("array",array)
+ _REGFNC("ascii",unicode)
+ _REGFNC("asciiToHex",asciiToHex)
+ _REGFNC("asciiToBase64",asciiToBase64)
+ _REGFNC("away",away)
+ _REGFNC("b",b)
+ _REGFNC("base64ToAscii",base64ToAscii)
+ _REGFNC("bool",boolean)
+ _REGFNC("boolean",boolean)
+ _REGFNC("channel",channel)
+ _REGFNC("char",charCKEYWORDWORKAROUND)
+ _REGFNC("classDefined",classDefined)
+ _REGFNC("console",console)
+ _REGFNC("context",context)
+ _REGFNC("cr",cr)
+ _REGFNC("date",date)
+ _REGFNC("false",falseCKEYWORDWORKAROUND)
+ _REGFNC("features",features)
+ _REGFNC("firstConnectedConsole",firstConnectedConsole)
+ _REGFNC("flatten",flatten)
+ _REGFNC("fmtlink",fmtlink)
+ // g_l
+ _REGFNC("hash",hash);
+// _REGFNC("inputText",inputText);
+ _REGFNC("hexToAscii",hexToAscii);
+ _REGFNC("hostname",hostname);
+ _REGFNC("hptimestamp",hptimestamp);
+ _REGFNC("ic",context);
+ _REGFNC("icon",icon);
+ _REGFNC("iconName",iconName);
+ _REGFNC("int",integer)
+ _REGFNC("integer",integer)
+ _REGFNC("isEmpty",isEmpty)
+ _REGFNC("isEventEnabled",isEventEnabled)
+ _REGFNC("isMainWindowActive",isMainWindowActive)
+ _REGFNC("isMainWindowMinimized",isMainWindowMinimized)
+ _REGFNC("isNumeric",isNumeric)
+ _REGFNC("isSet",isSet)
+ _REGFNC("isTimer",isTimer)
+ _REGFNC("isWellKnown",isWellKnown)
+ _REGFNC("k",k)
+ _REGFNC("keys",keys)
+ _REGFNC("lag",lag)
+ _REGFNC("lang",lang)
+ _REGFNC("length",length)
+ _REGFNC("lf",lf)
+ // m_r
+ _REGFNC("mask",mask)
+ _REGFNC("me",me)
+ _REGFNC("msgtype",msgtype)
+ _REGFNC("new",newCKEYWORDWORKAROUND)
+ _REGFNC("nothing",nothing)
+ _REGFNC("null",nullCKEYWORDWORKAROUND)
+ _REGFNC("o",o)
+ _REGFNC("option",option)
+ _REGFNC("query",query)
+ _REGFNC("r",r)
+ _REGFNC("rand",rand)
+ _REGFNC("real",real)
+ _REGFNC("receivedBytes",receivedBytes)
+ _REGFNC("rsort",rsort)
+ // s_z
+ _REGFNC("selected",selected)
+ _REGFNC("sentBytes",sentBytes)
+ _REGFNC("serialize",serialize)
+ _REGFNC("server",server)
+ _REGFNC("sort",sort)
+ _REGFNC("string",string)
+ _REGFNC("sw",sw)
+ _REGFNC("target",target)
+ _REGFNC("this",thisCKEYWORDWORKAROUND)
+ _REGFNC("tr",tr)
+ _REGFNC("true",trueCKEYWORDWORKAROUND)
+ _REGFNC("typeof",typeofCKEYWORDWORKAROUND)
+ _REGFNC("u",u)
+ _REGFNC("unicode",unicode)
+ _REGFNC("unixtime",unixtime)
+ _REGFNC("unserialize",unserialize)
+ _REGFNC("username",username)
+ _REGFNC("version",version)
+ _REGFNC("window",window)
+ _REGFNC("$",thisCKEYWORDWORKAROUND)
+ _REGFNC("@",strayAt)
+ _REGFNC("@?",mightBeStrayAtOrThis)
+#undef _REGCMD
+ }
+
+ static QString g_szStaticStrayConstantAt("@");
+
+ KVSCF(strayAt)
+ {
+ KVSCF_pRetBuffer->setString(g_szStaticStrayConstantAt);
+ return true;
+ }
+
+ KVSCF(mightBeStrayAtOrThis)
+ {
+ KviKvsObject * o = KVSCF_pContext->thisObject();
+ if(o)
+ {
+ KVSCF_pRetBuffer->setHObject(o->handle());
+ } else {
+ KVSCF_pRetBuffer->setString(g_szStaticStrayConstantAt);
+ }
+ return true;
+ }
+};
+
diff --git a/src/kvirc/kvs/kvi_kvs_corefunctions.h b/src/kvirc/kvs/kvi_kvs_corefunctions.h
new file mode 100644
index 00000000..9fd25eaf
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_corefunctions.h
@@ -0,0 +1,148 @@
+#ifndef _KVI_KVS_COREFUNCTIONS_H_
+#define _KVI_KVS_COREFUNCTIONS_H_
+//=============================================================================
+//
+// File : kvi_kvs_corefunctions.h
+// Created on Fri 31 Oct 2003 01:52:04 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_kvs_variantlist.h"
+#include "kvi_kvs_variant.h"
+#include "kvi_kvs_parameterprocessor.h"
+
+
+#define KVSCF(_name) bool _name(KviKvsRunTimeContext * __pContext,KviKvsVariantList * __pParams,KviKvsVariant * __pRetBuffer)
+
+#define KVSCF_pContext __pContext
+#define KVSCF_pParams __pParams
+#define KVSCF_pRetBuffer __pRetBuffer
+
+#define KVSCF_PARAMETER(a,b,c,d) KVS_PARAMETER(a,b,c,d)
+
+#define KVSCF_PARAMETERS_BEGIN \
+ KVS_PARAMETERS_BEGIN(parameter_format_list)
+
+#define KVSCF_PARAMETERS_END \
+ KVS_PARAMETERS_END \
+ if(!KviKvsParameterProcessor::process(KVSCF_pParams,KVSCF_pContext,parameter_format_list))return false;
+
+
+namespace KviKvsCoreFunctions
+{
+ // a_f
+ KVSCF(active);
+ KVSCF(array);
+ KVSCF(asciiToBase64);
+ KVSCF(asciiToHex);
+ KVSCF(avatar);
+ KVSCF(away);
+ KVSCF(b);
+ KVSCF(base64ToAscii);
+ KVSCF(boolean);
+ KVSCF(channel);
+ KVSCF(charCKEYWORDWORKAROUND);
+ KVSCF(classDefined);
+ KVSCF(console);
+ KVSCF(context);
+ KVSCF(cr);
+ KVSCF(date);
+ KVSCF(falseCKEYWORDWORKAROUND);
+ KVSCF(features);
+ KVSCF(firstConnectedConsole);
+ KVSCF(flatten);
+ KVSCF(fmtlink);
+
+ // g_l
+ KVSCF(hash);
+ KVSCF(inputText);
+ KVSCF(hexToAscii);
+ KVSCF(hostname);
+ KVSCF(hptimestamp);
+ KVSCF(icon);
+ KVSCF(iconName);
+ KVSCF(integer);
+ KVSCF(isAnyConsoleConnected);
+ KVSCF(isEmpty);
+ KVSCF(isEventEnabled);
+ KVSCF(isNumeric);
+ KVSCF(isMeOp);
+ KVSCF(isMeUserOp);
+ KVSCF(isMeHalfOp);
+ KVSCF(isMeVoice);
+ KVSCF(isMainWindowActive);
+ KVSCF(isMainWindowMinimized);
+ KVSCF(isSet);
+ KVSCF(isTimer);
+ KVSCF(isWellKnown);
+ KVSCF(k);
+ KVSCF(keys);
+ KVSCF(lag);
+ KVSCF(lang);
+ KVSCF(length);
+ KVSCF(lf);
+ // m_r
+ KVSCF(mask);
+ KVSCF(me);
+ KVSCF(msgtype);
+ KVSCF(newCKEYWORDWORKAROUND);
+ KVSCF(nothing);
+ KVSCF(nullCKEYWORDWORKAROUND);
+ KVSCF(o);
+ KVSCF(option);
+ KVSCF(query);
+ KVSCF(r);
+ KVSCF(rand);
+ KVSCF(real);
+ KVSCF(receivedBytes);
+ KVSCF(rsort);
+ // s_z
+ KVSCF(selected);
+ KVSCF(sentBytes);
+ KVSCF(serialize);
+ KVSCF(server);
+ KVSCF(sort);
+ KVSCF(split);
+ KVSCF(string);
+ KVSCF(sw);
+ KVSCF(target);
+ KVSCF(thisCKEYWORDWORKAROUND);
+ KVSCF(timeCFUNCTIONWORKAROUND);
+ KVSCF(tr);
+ KVSCF(trueCKEYWORDWORKAROUND);
+ KVSCF(typeofCKEYWORDWORKAROUND);
+ KVSCF(u);
+ KVSCF(unicode);
+ KVSCF(unixtime);
+ KVSCF(unserialize);
+ KVSCF(username);
+ KVSCF(version);
+ KVSCF(window);
+ // specials
+ KVSCF(strayAt);
+ KVSCF(mightBeStrayAtOrThis);
+ //bool redirectToModule(const QString &szFrom,const QString &szModName,const QString &szFuncName
+
+ void init();
+};
+
+#endif //!_KVI_KVS_COREFUNCTIONS_H_
diff --git a/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp b/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp
new file mode 100644
index 00000000..0fba8d70
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp
@@ -0,0 +1,1131 @@
+//=============================================================================
+//
+// File : kvi_kvs_corefunctions_af.cpp
+// Created on Fri 31 Oct 2003 01:52:04 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_corefunctions.h"
+
+#include "kvi_kvs_kernel.h"
+#include "kvi_kvs_object_controller.h"
+
+#include "kvi_locale.h"
+#include "kvi_app.h"
+#include "kvi_channel.h"
+#include "kvi_console.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectionuserinfo.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_avatar.h"
+#include "kvi_ircuserdb.h"
+#include "kvi_time.h"
+
+namespace KviKvsCoreFunctions
+{
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: active
+ @type:
+ function
+ @title:
+ $active
+ @short:
+ Retrieves the window ID of the active window
+ @syntax:
+ <integer> $active[(<irc context id:integer>)]
+ @description:
+ Returns the [b]window ID[/b] of the active window
+ bound to the IRC context specified by <irc context id>.
+ If no window matches the specified IRC context, and invalid
+ window ID is returned (0).[br]
+ If no <irc context id> is specified, then
+ the application active window is returned (the window
+ that currently has the input focus). Note that in this
+ case the returned window may also belong to another IRC
+ context or be not bound to any IRC context at all.
+ In some extreme cases you may even get a window that
+ has no output widget and thus has its output redirected.
+ Using the "global" active window should be used only
+ for communicating something REALLY urgent (and maybe
+ unrelated to a specific IRC connection) to the user.
+ @seealso:
+ [fnc]$window[/fnc]
+ */
+
+ KVSCF(active)
+ {
+ kvs_uint_t uContextId;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("context_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uContextId)
+ KVSCF_PARAMETERS_END
+
+ KviWindow * wnd;
+ KviConsole * cons;
+ if(KVSCF_pParams->count() > 0)
+ {
+ cons = g_pApp->findConsole(uContextId);
+ if(cons)wnd = cons->activeWindow();
+ else wnd = 0;
+ } else {
+ wnd = g_pActiveWindow;
+ }
+
+ KVSCF_pRetBuffer->setInteger((kvs_int_t)(wnd ? wnd->numericId() : 0));
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: ascii
+ @type:
+ function
+ @title:
+ $ascii
+ @short:
+ Returns the UNICODE code of a character
+ @syntax:
+ <variant> $ascii(<char:string>)
+ @description:
+ This function has been renamed to $unicode and is present
+ only for backward compatibility.
+ @seealso:
+ [fnc]$cr[/fnc], [fnc]$lf[/fnc], [fnc]$char[/fnc]
+ */
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: asciiToBase64
+ @type:
+ function
+ @title:
+ $asciiToBase64
+ @short:
+ Returns an encoded base64 string
+ @syntax:
+ $asciiToBase64(<ascii_string>)
+ @description:
+ Encodes an ASCII string to its base64 encoded rappresentation
+ Please note that since KVS is UNICODE based, this function
+ will first encode the string in UTF8 and then base64-encode.
+ This means that it is substantially only 7bit safe (ASCII codes below 128).
+ @examples:
+ [cmd]echo[/cmd] $asciiToBase64("Hello!")
+ @seealso:
+ [fnc]$base64toascii[/fnc]
+ */
+
+ KVSCF(asciiToBase64)
+ {
+ QString szAscii;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("ascii_string",KVS_PT_STRING,0,szAscii)
+ KVSCF_PARAMETERS_END
+
+ KviStr tmp1(szAscii);
+ if(tmp1.len() > 0)
+ {
+ KviStr tmp2;
+ tmp2.bufferToBase64(tmp1.ptr(),tmp1.len());
+ KVSCF_pRetBuffer->setString(QString(tmp2.ptr()));
+ } else {
+ KVSCF_pRetBuffer->setString(QString::null);
+ }
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: asciiToHex
+ @type:
+ function
+ @title:
+ $asciiToHex
+ @short:
+ Returns an encoded hex string
+ @syntax:
+ <string> $asciiToHex(<ascii_string:string>)
+ @description:
+ Encodes an ASCII string to its hex encoded rappresentation.
+ Please note that since KVS is UNICODE based, this function
+ will first encode the string in UTF8 and then hex-encode.
+ This means that it is substantially only 7bit safe (ASCII codes below 128).
+ @examples:
+ [cmd]echo[/cmd] $asciiToHex("Hello!")
+ @seealso:
+ [fnc]$hextoascii[/fnc]
+ */
+
+ KVSCF(asciiToHex)
+ {
+ QString szAscii;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("ascii_string",KVS_PT_STRING,0,szAscii)
+ KVSCF_PARAMETERS_END
+
+ KviStr tmp1(szAscii);
+ if(tmp1.len() > 0)
+ {
+ KviStr tmp2;
+ tmp2.bufferToHex(tmp1.ptr(),tmp1.len());
+ KVSCF_pRetBuffer->setString(QString(tmp2.ptr()));
+ } else {
+ KVSCF_pRetBuffer->setString(QString::null);
+ }
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: array
+ @type:
+ function
+ @title:
+ $array
+ @short:
+ Explicitly creates an array
+ @syntax:
+ <array> $array(<item:variant>,<item:variant>,<item:variant>,....);
+ @description:
+ Returns an array with the specified items. The items are indexed starting from 0.
+ This is just an explicit way of creating an array with a defined set of items,
+ useful for increasing readability.
+ @examples:
+ [example]
+ [cmd]alias[/cmd](test) {
+ [cmd]return[/cmd] $array(1,2,3);
+ }
+ %x = $test();
+ [cmd]foreach[/cmd](%y,%x) {
+ [cmd]echo[/cmd] %y;
+ }
+ [/example]
+ @seealso:
+ [fnc]$hash[/fnc]
+ */
+
+ KVSCF(array)
+ {
+#ifdef COMPILE_NEW_KVS
+ KviKvsArray * a = new KviKvsArray();
+ kvs_int_t idx = 0;
+
+ for(KviKvsVariant * v = KVSCF_pParams->first();v;v = KVSCF_pParams->next())
+ {
+ a->set(idx,new KviKvsVariant(*v));
+ idx++;
+ }
+
+ KVSCF_pRetBuffer->setArray(a);
+#endif
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: away
+ @type:
+ function
+ @title:
+ $away
+ @short:
+ Returns true if the current user is away
+ @syntax:
+ <boolean> $away
+ @description:
+ Returns true if the current user is away, else false.
+ If the current IRC context is not connected at all, this function returns false.
+ */
+
+ KVSCF(away)
+ {
+ kvs_uint_t uCntx;
+
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("irc_context_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uCntx)
+ KVSCF_PARAMETERS_END
+
+ KviConsole * cns;
+
+ if(KVSCF_pParams->count() > 0)
+ {
+ cns = g_pApp->findConsole(uCntx);
+ if(cns)
+ {
+ if(cns->context()->isConnected())
+ KVSCF_pRetBuffer->setBoolean(cns->connection()->userInfo()->isAway());
+ else
+ KVSCF_pRetBuffer->setNothing();
+ } else {
+ KVSCF_pRetBuffer->setNothing();
+ }
+ } else {
+ if(KVSCF_pContext->window()->console())
+ {
+ cns = KVSCF_pContext->window()->console();
+ if(cns->context()->isConnected())
+ KVSCF_pRetBuffer->setBoolean(cns->connection()->userInfo()->isAway());
+ else
+ KVSCF_pRetBuffer->setNothing();
+ } else {
+ KVSCF_pContext->warning(__tr2qs("This window has no associated IRC context"));
+ KVSCF_pRetBuffer->setNothing();
+ }
+ }
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: b
+ @type:
+ function
+ @title:
+ $b
+ @short:
+ Returns the BOLD mIRC control character
+ @syntax:
+ <string> $b
+ @description:
+ Returns the BOLD mIRC control character (CTRL+B).[br]
+ @seealso:
+ [fnc]$k[/fnc], [fnc]$u[/fnc]
+ */
+
+ KVSCF(b)
+ {
+ KVSCF_pRetBuffer->setString(QString(QChar(KVI_TEXT_BOLD)));
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: base64toAscii
+ @type:
+ function
+ @title:
+ $base64ToAscii
+ @short:
+ Returns a decoded base64 string
+ @syntax:
+ <string> $base64ToAscii(<base_64_encoded_string:string>)
+ @description:
+ Decodes a base64 encoded string.
+ @seealso:
+ [fnc]$asciiToBase64[/fnc]
+ */
+
+ KVSCF(base64ToAscii)
+ {
+ QString szBase64;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("base64_encoded_string",KVS_PT_STRING,0,szBase64)
+ KVSCF_PARAMETERS_END
+
+ KviStr tmp1(szBase64);
+ char * buf;
+ int len = tmp1.base64ToBuffer(&buf,true);
+ KVSCF_pRetBuffer->setString(QString(buf));
+ KviStr::freeBuffer(buf);
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: boolean
+ @type:
+ function
+ @title:
+ $boolean
+ @short:
+ Casts a variable to a boolean
+ @syntax:
+ <integer> $boolean(<data:variant>)
+ @description:
+ Forces <data> to be a boolean data type by first casting
+ to integer (see [fnc]$int[/fnc]()) and then comparing the result against zero.
+ A zero integer will result in a false value while a non-zero one
+ will result in a true value.
+ This function is similar to the C++ (bool) cast and is internally
+ aliased to [fnc]$bool[/fnc] too.
+ Note that since KVIrc does most of the casting work automatically
+ you shouldn't need to use this function.
+ @seealso:
+ [fnc]$real[/fnc]
+ [fnc]$integer[/fnc]
+ */
+
+ /*
+ @doc: bool
+ @type:
+ function
+ @title:
+ $bool
+ @short:
+ Casts a variable to a boolean
+ @syntax:
+ <integer> $bool(<data:variant>)
+ @description:
+ This is an internal alias to [fnc]$boolean[/fnc]().
+ @seealso:
+ [fnc]$real[/fnc]
+ [fnc]$integer[/fnc]
+ */
+
+ KVSCF(boolean)
+ {
+ KviKvsVariant * v;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("data",KVS_PT_VARIANT,0,v)
+ KVSCF_PARAMETERS_END
+
+ kvs_int_t iVal;
+ v->castToInteger(iVal);
+ KVSCF_pRetBuffer->setBoolean(iVal);
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: channel
+ @type:
+ function
+ @title:
+ $channel
+ @short:
+ Retrieves the window ID of a specified channel
+ @syntax:
+ $channel[(<channel name>[,<irc context id>])]
+ @description:
+ Returns the [b]window ID[/b] of channel matching the
+ <channel name> and bound to the connection specified by
+ <irc context id>[br]
+ If no window matches the specified name or connection, an invalid
+ window ID is returned (0).[br]
+ If no <irc context id> is specified, this function looks for
+ the channel in the current connection context (if any).[br]
+ If no <channel name> is specified, this function returns the current
+ channel window ID, if executed in a channel, else 0.[br]
+ @seealso:
+ [fnc]$window[/fnc],
+ [fnc]$query[/fnc],
+ [fnc]$console[/fnc],
+ [doc:window_naming_conventions]Window naming conventions[/doc]
+ */
+
+ KVSCF(channel)
+ {
+ QString szName;
+ kvs_uint_t uContextId;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("channel_name",KVS_PT_NONEMPTYSTRING,KVS_PF_OPTIONAL,szName)
+ KVSCF_PARAMETER("context_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uContextId)
+ KVSCF_PARAMETERS_END
+
+ KviWindow * wnd = 0;
+ if(KVSCF_pParams->count() > 0)
+ {
+ if(KVSCF_pParams->count() > 1)
+ {
+ KviConsole * cons = g_pApp->findConsole(uContextId);
+ if(!cons)KVSCF_pContext->warning(__tr2qs("No such IRC context (%u)"),uContextId);
+ else {
+ if(cons->connection())
+ wnd = cons->connection()->findChannel(szName);
+ else
+ wnd = 0;
+ }
+ } else {
+ if(KVSCF_pContext->window()->connection())wnd = KVSCF_pContext->window()->connection()->findChannel(szName);
+ else {
+ if(!KVSCF_pContext->window()->console())
+ KVSCF_pContext->warning(__tr2qs("This window is not associated to an IRC context"));
+ wnd = 0;
+ }
+ }
+ } else {
+ if(KVSCF_pContext->window()->type() == KVI_WINDOW_TYPE_CHANNEL)wnd = KVSCF_pContext->window();
+ }
+
+ KVSCF_pRetBuffer->setInteger((kvs_int_t)(wnd ? wnd->numericId() : 0));
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: char
+ @type:
+ function
+ @title:
+ $char
+ @short:
+ Returns a character specified by unicode
+ @syntax:
+ <string> $char(<unicode_value:integer>)
+ @description:
+ Returns a character corresponding to the UNICODE code <unicode_value>.[br]
+ This function can not return NUL character (UNICODE 0). Basically
+ you should never need it: if you do, drop me a mail.[br]
+ If the <unicode_code> is not a valid UNICODE code (or is 0), this function returns
+ an empty string.[br]
+ @seealso:
+ [fnc]$cr[/fnc], [fnc]$lf[/fnc], [fnc]$unicode[/fnc]
+ */
+
+ KVSCF(charCKEYWORDWORKAROUND)
+ {
+ kvs_uint_t ac;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("unicode_value",KVS_PT_UINT,0,ac)
+ KVSCF_PARAMETERS_END
+
+ if(ac != 0 && ac < 65536)
+ KVSCF_pRetBuffer->setString(QString(QChar((unsigned short)ac)));
+ else
+ KVSCF_pRetBuffer->setString(QString::null);
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: classdefined
+ @type:
+ function
+ @title:
+ $classdefined
+ @short:
+ Checks if a class is defined
+ @syntax:
+ $classdefined(<class_name>)
+ @description:
+ Returns 1 if the class <class_name> is defined, else 0.
+ */
+
+ KVSCF(classDefined)
+ {
+ // prologue: parameter handling
+ QString szClassName;
+
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("className",KVS_PT_NONEMPTYSTRING,0,szClassName)
+ KVSCF_PARAMETERS_END
+ KVSCF_pRetBuffer->setBoolean(KviKvsKernel::instance()->objectController()->lookupClass(szClassName) != 0);
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: console
+ @type:
+ function
+ @title:
+ $console
+ @short:
+ Retrieves the window ID of a specified console
+ @syntax:
+ $console[(<irc context id>)]
+ @description:
+ Returns the [b]window ID[/b] of the console bound
+ to the IRC context specified by <irc context id>.
+ If no window matches the specified IRC context, an invalid
+ window ID is returned (0).[br]
+ If no <irc context id> is specified, this function looks for
+ the console in the current IRC context (if any).[br]
+ @seealso:
+ [fnc]$window[/fnc],
+ [fnc]$channel[/fnc],
+ [fnc]$query[/fnc],
+ [doc:window_naming_conventions]Window naming conventions[/doc]
+ */
+
+ KVSCF(console)
+ {
+ kvs_uint_t uContextId;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("context_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uContextId)
+ KVSCF_PARAMETERS_END
+
+ KviConsole * cons;
+ if(KVSCF_pParams->count() > 0)
+ {
+ cons = g_pApp->findConsole(uContextId);
+ } else {
+ cons = KVSCF_pContext->window()->console();
+ if(!cons)KVSCF_pContext->warning(__tr2qs("This window is not associated to an IRC context"));
+ }
+
+ KVSCF_pRetBuffer->setInteger((kvs_int_t)(cons ? cons->numericId() : 0));
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: context
+ @type:
+ function
+ @title:
+ $context
+ @short:
+ Retrieves the ID of the specified IRC context
+ @syntax:
+ $context[(<server>,<nickname>)]
+ @description:
+ Returns the [b]IRC context ID[/b] of the IRC context that uses
+ the specified <server> and local user's <nickname>.[br] This function can
+ find only connected IRC contexts.
+ If no context matches the server and nickname, and invalid
+ [b]IRC context ID[/b] is returned (0).[br]
+ If <server> is an empty string, the first context that matches
+ the specified nickname is returned. If <nickname> is an empty string
+ the first context that uses the specified server is returned.
+ If both parameters are missing this function returns the
+ id of the current IRC context, or '0' if the
+ window in that this call is executed is not bound to any IRC context.
+ Please note that in this last case you may find an [b]IRC context[/b]
+ that is 'not connected'.
+ This can only happen if the current window is a console that is
+ in "idle" state, with no connection established yet.[br]
+ It is a good idea to take a look at the
+ [doc:window_naming_conventions]window naming conventions[/doc].
+ This identifier is equivalent to [fnc]$ic[/fnc].[br]
+ @seealso:
+ [fnc]$window.context[/fnc]
+ */
+
+ KVSCF(context)
+ {
+ QString szServer,szNick;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("server",KVS_PT_STRING,KVS_PF_OPTIONAL,szServer)
+ KVSCF_PARAMETER("nick",KVS_PT_STRING,KVS_PF_OPTIONAL,szNick)
+ KVSCF_PARAMETERS_END
+
+ KviConsole * cons;
+ if(!(szServer.isEmpty() && szNick.isEmpty()))
+ {
+ cons = g_pApp->findConsole(szServer,szNick);
+ } else {
+ cons = KVSCF_pContext->window()->console();
+ }
+
+ KVSCF_pRetBuffer->setInteger(cons ? cons->ircContextId() : 0);
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: cr
+ @type:
+ function
+ @title:
+ $cr
+ @short:
+ Returns a carriage return character
+ @syntax:
+ <string> $cr
+ @description:
+ Returns a carriage return character
+ @seealso:
+ [fnc]$lf[/fnc], [fnc]$ascii[/fnc], [fnc]$char[/fnc]
+ */
+
+ KVSCF(cr)
+ {
+ KVSCF_pRetBuffer->setString(QString(QChar('\r')));
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: date
+ @type:
+ function
+ @title:
+ $date
+ @short:
+ Returns a date/time string using a specified format
+ @syntax:
+ <string> $date(<format:string>[,<unixtime:integer>])
+ @description:
+ Returns the string representation of <unixtime> or
+ of the current time if <unixtime> is not given,
+ based on <format>.[br]
+ The <format string> should contain a set of characters
+ that will be transformed according to the following rules:[br]
+ [br]
+ [table]
+ [tr][td][b]a[/b][/td][td]The abbreviated weekday name according to the current locale.[/td][/tr]
+ [tr][td][b]A[/b][/td][td]The full weekday name according to the current locale.[/td][/tr]
+ [tr][td][b]b[/b][/td][td]The abbreviated month name according to the current locale.[/td][/tr]
+ [tr][td][b]B[/b][/td][td]The full month name according to the current locale.[/td][/tr]
+ [tr][td][b]c[/b][/td][td]The preferred date and time representation for the current locale.[/td][/tr]
+ [tr][td][b]C[/b][/td][td]The century number (year/100) as a 2-digit integer. (SU)[/td][/tr]
+ [tr][td][b]d[/b][/td][td]The day of the month as a decimal number (range 01 to 31).[/td][/tr]
+ [tr][td][b]D[/b][/td][td]Equivalent to m/d/y.[/td][/tr]
+ [tr][td][b]e[/b][/td][td]Like d, the day of the month as a decimal number, but a leading
+ zero is replaced by a space. (SU)[/td][/tr]
+ [tr][td][b]E[/b][/td][td]Modifier: use alternative format, see below. (SU)[/td][/tr]
+ [tr][td][b]F[/b][/td][td]Equivalent to Y-m-d (the ISO 8601 date format). (C99)[/td][/tr]
+ [tr][td][b]G[/b][/td][td]The ISO 8601 year with century as a decimal number. The 4-digit
+ year corresponding to the ISO week number (see V). This has the
+ same format and value as y, except that if the ISO week number
+ belongs to the previous or next year, that year is used instead.[/td][/tr]
+ [tr][td][b]g[/b][/td][td]Like G, but without century, i.e., with a 2-digit year (00-99).[/td][/tr]
+ [tr][td][b]h[/b][/td][td]Equivalent to b.[/td][/tr]
+ [tr][td][b]H[/b][/td][td]The hour as a decimal number using a 24-hour clock (range 00 to 23).[/td][/tr]
+ [tr][td][b]I[/b][/td][td]The hour as a decimal number using a 12-hour clock (range 01 to 12).[/td][/tr]
+ [tr][td][b]j[/b][/td][td]The day of the year as a decimal number (range 001 to 366).[/td][/tr]
+ [tr][td][b]k[/b][/td][td]The hour (24-hour clock) as a decimal number (range 0 to 23); sin-
+ gle digits are preceded by a blank. (See also H.)[/td][/tr]
+ [tr][td][b]l[/b][/td][td]The hour (12-hour clock) as a decimal number (range 1 to 12); sin-
+ gle digits are preceded by a blank. (See also I.)[/td][/tr]
+ [tr][td][b]m[/b][/td][td]The month as a decimal number (range 01 to 12).[/td][/tr]
+ [tr][td][b]M[/b][/td][td]The minute as a decimal number (range 00 to 59).[/td][/tr]
+ [tr][td][b]n[/b][/td][td]A newline character. (SU)[/td][/tr]
+ [tr][td][b]p[/b][/td][td]Either `AM' or `PM' according to the given time value, or the cor-
+ responding strings for the current locale. Noon is treated as `pm' and midnight as `am'.[/td][/tr]
+ [tr][td][b]r[/b][/td][td]The time in a.m. or p.m. notation. In the POSIX locale this is
+ equivalent to `I:M:S p'.[/td][/tr]
+ [tr][td][b]s[/b][/td][td]The number of seconds since the Epoch, i.e., since 1970-01-01
+ 00:00:00 UTC.[/td][/tr]
+ [tr][td][b]S[/b][/td][td]The second as a decimal number (range 00 to 60). (The range is up
+ to 60 to allow for occasional leap seconds.)[/td][/tr]
+ [tr][td][b]t[/b][/td][td]A tab character.[/td][/tr]
+ [tr][td][b]T[/b][/td][td]The time in 24-hour notation (H:M:S). (SU)[/td][/tr]
+ [tr][td][b]u[/b][/td][td]The day of the week as a decimal, range 1 to 7, Monday being 1.
+ See also w.[/td][/tr]
+ [tr][td][b]U[/b][/td][td]The week number of the current year as a decimal number, range 00
+ to 53, starting with the first Sunday as the first day of week 01. See also V and W.[/td][/tr]
+ [tr][td][b]V[/b][/td][td]The ISO 8601:1988 week number of the current year as a decimal num-
+ ber, range 01 to 53, where week 1 is the first week that has at
+ least 4 days in the current year, and with Monday as the first day
+ of the week. See also U and W.[/td][/tr]
+ [tr][td][b]w[/b][/td][td]The day of the week as a decimal, range 0 to 6, Sunday being 0.[/td][/tr]
+ [tr][td][b]W[/b][/td][td]The week number of the current year as a decimal number, range 00
+ to 53, starting with the first Monday as the first day of week 01.[/td][/tr]
+ [tr][td][b]x[/b][/td][td]The preferred date representation for the current locale without
+ the time.[/td][/tr]
+ [tr][td][b]X[/b][/td][td]The preferred time representation for the current locale without
+ the date.[/td][/tr]
+ [tr][td][b]y[/b][/td][td]The year as a decimal number without a century (range 00 to 99).[/td][/tr]
+ [tr][td][b]Y[/b][/td][td]The year as a decimal number including the century.[/td][/tr]
+ [tr][td][b]z[/b][/td][td]The time-zone as hour offset from GMT. Required to emit
+ RFC822-conformant dates (using "a, d b Y H:M:S z").[/td][/tr]
+ [tr][td][b]Z[/b][/td][td]The time zone or name or abbreviation.[/td][/tr]
+ [tr][td][b]+[/b][/td][td]The date and time in date(1) format. (TZ)[/td][/tr]
+ [/table]
+ WARNING: Please note that this list is taken from the unix version of the strftime
+ function and not all the escape codes may be supported by other platforms.
+ @examples:
+ [example]
+ [cmd]echo[/cmd] $date("d/m/Y H:M:S")
+ [/example]
+ @seealso:
+ [fnc]$time[/fnc], [fnc]$unixtime[/fnc]
+ */
+
+ KVSCF(date)
+ {
+ QString szFormat;
+ kvs_int_t iTime;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("format",KVS_PT_NONEMPTYSTRING,0,szFormat)
+ KVSCF_PARAMETER("unixtime",KVS_PT_INT,KVS_PF_OPTIONAL,iTime)
+ KVSCF_PARAMETERS_END
+
+ KviStr tmpFormat("");
+
+ #ifdef COMPILE_ON_WINDOWS
+ QString szAllowedCharacters;
+ //windows version of strftime()
+ //kvirc crashes if other then these characters get an % character in front of them
+ szAllowedCharacters = "AaBbcdHIjMmpSUWwXxYyZz";
+ #endif
+
+ const QChar * c = KviQString::nullTerminatedArray(szFormat);
+ if(c)
+ {
+ while(c->unicode())
+ {
+ //Check for right Characters
+ #ifdef COMPILE_ON_WINDOWS
+ if (szAllowedCharacters.find((char)(c->unicode()),0,true) >= 0) tmpFormat += '%';
+ #else
+ if (c->isLetter()) tmpFormat += '%';
+ #endif
+ tmpFormat += (char)(c->unicode());
+ c++;
+ }
+ }
+
+ kvi_time_t t;
+ if(KVSCF_pParams->count() > 1)
+ t = (kvi_time_t)iTime;
+ else
+ t = kvi_unixTime();
+
+ char buf[256];
+ if(strftime(buf,255,tmpFormat.ptr(),localtime(&t))> 0)
+ {
+ KviStr tmp = buf;
+ if(tmp.lastCharIs('\n'))tmp.cutRight(1);
+ KVSCF_pRetBuffer->setString(QString(buf));
+ } else {
+ KVSCF_pContext->warning(__tr2qs("The specified format string wasn't accepted by the underlying system time formatting function"));
+ }
+
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: false
+ @type:
+ function
+ @title:
+ $false
+ @short:
+ The boolean false constant
+ @syntax:
+ <boolean> $false
+ @description:
+ Evaluates to the false boolean constant. True
+ is equivalent to the integer 0 too. This function/constant
+ is useful to keep your code readable: when you
+ have a variable that can assume boolean values it's
+ nicer to use [fnc]$true[/fnc] and $false instead of
+ the integer constants 1 and 0. The reader will
+ undestand immediately that the variable simply can't
+ assume any other value.
+ @examples:
+ [example]
+ %a = $false
+ [cmd]echo[/cmd] $typeof(%a)
+ [cmd]echo[/cmd] $(%a + 1)
+ [/example]
+ @seealso:
+ [fnc]$true[/fnc]
+ */
+
+ KVSCF(falseCKEYWORDWORKAROUND)
+ {
+#ifdef COMPILE_NEW_KVS
+ KVSCF_pRetBuffer->setBoolean(false);
+#endif
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: features
+ @type:
+ function
+ @title:
+ $features
+ @short:
+ Returns the features that KVIrc supports
+ @syntax:
+ <array> $features()
+ <boolean> $features(<test_feature:string>)
+ @description:
+ The parameterless form returns an array of feature descripton strings that this KVIrc executable supports.[br]
+ This function is useful when some part of your script depends on
+ an optional KVIrc feature (like SSL support or IPV6 support).[br]
+ The returned value may be assigned to a dictionary too: it will be used to simulate an array.[br]
+ The form with the [test_feature] parameter returns true if and only if [test_feature] is available.[br]
+ @examples:
+ [example]
+ %myfeats[] = $features
+ [cmd]echo[/cmd] %myfeats[]
+ %i = %myfeats[]#
+ [cmd]while[/cmd](%i > 0)
+ {
+ [cmd]echo[/cmd] "Supporting feature %myfeats[%i]"
+ %i--;
+ }
+ [/example]
+ Nearly the same loop, just really shorter:
+ [example]
+ [cmd]foreach[/cmd](%f,$features)
+ [cmd]echo[/cmd] "Supporting feature %myfeats[%i]"
+ [/example]
+ You can test for a specific feature in the following way:
+ [example]
+ [cmd]if[/cmd]($features("SSL"))[cmd]echo[/cmd] "Yes! SSL is available";
+ [/example]
+ If used in "non-array" context it returns just a comma separated list of entries:[br]
+ [example]
+ [cmd]echo[/cmd] $features
+ [/example]
+ @seealso:
+ [fnc]$version[/fnc]
+ */
+
+ KVSCF(features)
+ {
+ QString szFeature;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("test_feature",KVS_PT_STRING,KVS_PF_OPTIONAL,szFeature)
+ KVSCF_PARAMETERS_END
+
+ static const char * feature_array[]=
+ {
+ "IRC",
+ #ifdef COMPILE_IPV6_SUPPORT
+ "IPv6",
+ #endif
+ #ifdef COMPILE_CRYPT_SUPPORT
+ "Crypt",
+ #endif
+ #ifdef COMPILE_SSL_SUPPORT
+ "SSL",
+ #endif
+ #ifdef COMPILE_GET_INTERFACE_ADDRESS
+ "IfAddr",
+ #endif
+ #ifndef COMPILE_NO_IPC
+ "IPC",
+ #endif
+ #ifdef COMPILE_KDE_SUPPORT
+ "KDE",
+ #endif
+ #ifdef COMPILE_OSS_SUPPORT
+ "OSS",
+ #endif
+ #ifdef COMPILE_ARTS_SUPPORT
+ "ARTS",
+ #endif
+ #ifdef COMPILE_ESD_SUPPORT
+ "ESD",
+ #endif
+ #ifdef COMPILE_AUDIOFILE_SUPPORT
+ "Audiofile",
+ #endif
+ #ifdef COMPILE_PSEUDO_TRANSPARENCY
+ "Transparency",
+ #endif
+ #ifdef COMPILE_ix86_ASM
+ "ix86-ASM",
+ #endif
+ #ifdef COMPILE_SCRIPTTOOLBAR
+ "ScriptToolBar",
+ #endif // COMPILE_SCRIPTTOOLBAR
+ #ifdef COMPILE_USE_QT4
+ "Qt4",
+ #else
+ "Qt3",
+ #endif
+ #ifdef COMPILE_NEW_KVS
+ "KVS",
+ #endif
+ 0
+ };
+
+ if(!szFeature.isEmpty())
+ {
+ for(int i=0;feature_array[i];i++)
+ {
+ if(KviQString::equalCI(feature_array[i],szFeature))
+ {
+ KVSCF_pRetBuffer->setBoolean(true);
+ return true;
+ }
+ }
+ KVSCF_pRetBuffer->setBoolean(false);
+ } else {
+ KviKvsArray * a = new KviKvsArray();
+ int id = 0;
+ for(int i=0;feature_array[i];i++)a->set(i,new KviKvsVariant(QString(feature_array[i])));
+ KVSCF_pRetBuffer->setArray(a);
+ }
+
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: firstconnectedconsole
+ @type:
+ function
+ @title:
+ $firstConnectedConsole
+ @short:
+ Returns the window id of the first connected console
+ @syntax:
+ <uint> $firstConnectedConsole()
+ @description:
+ Returns the window id of the first connected console
+ or 0 if no console is actually connected.
+ */
+
+ KVSCF(firstConnectedConsole)
+ {
+ KviConsole * c = g_pApp->topmostConnectedConsole();
+ // FIXME: The window id's should be numeric!!!
+ KVSCF_pRetBuffer->setString(c ? c->id() : "0");
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: flatten
+ @type:
+ function
+ @title:
+ $flatten
+ @short:
+ Returns a flattened array of items
+ @syntax:
+ <array> $flatten(<data1:variant>[,<data2:variant>[,...]])
+ @description:
+ Returns an array of items built from the passed arguments
+ with the following rules:[br]
+ [ul]
+ [li]If an argument is a scalar value then the argument itself
+ is appended to the result.[/li]
+ [li]If an argument is an array then each contained item
+ is appended to the result.[/li]
+ [li]If an argument is a hash then each contained value
+ is appended to the result.[/li]
+ [/ul]
+ A simple example of usage is to merge N arrays into a new one.
+ (Please note that for merging one array into another the
+ [doc:arrayconcatenation]<+ operator[/doc] is more efficient).
+ */
+
+ KVSCF(flatten)
+ {
+ KviKvsArray * a = new KviKvsArray();
+ KVSCF_pRetBuffer->setArray(a);
+ unsigned int uIdx = 0;
+ for(KviKvsVariant * v = KVSCF_pParams->first();v;v = KVSCF_pParams->next())
+ {
+ switch(v->type())
+ {
+ case KviKvsVariantData::Array:
+ {
+ KviKvsArray * z = v->array();
+ unsigned int uSize = z->size();
+ unsigned int uIdx2 = 0;
+ while(uIdx2 < uSize)
+ {
+ KviKvsVariant * pInternal = z->at(uIdx2);
+ if(pInternal)
+ a->set(uIdx,new KviKvsVariant(*pInternal));
+ // else
+ // don't set anything: just leave empty entry (nothing)
+ uIdx++;
+ uIdx2++;
+ }
+ }
+ break;
+ case KviKvsVariantData::Hash:
+ {
+ KviKvsHash * h = v->hash();
+ KviKvsHashIterator it(*(h->dict()));
+ while(KviKvsVariant * pInternal = it.current())
+ {
+ a->set(uIdx,new KviKvsVariant(*pInternal));
+ uIdx++;
+ ++it;
+ }
+ }
+ break;
+ default:
+ a->set(uIdx,new KviKvsVariant(*v));
+ uIdx++;
+ break;
+ }
+ }
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: fmtlink
+ @type:
+ function
+ @title:
+ $fmtlink
+ @short:
+ Returns a formatted link buffer
+ @syntax:
+ <string> $fmtlink(<link_text:string>,<double_click_command:string>[,<tooltip_text:string>])
+ @description:
+ Returns a link formatted for the [cmd]echo[/cmd] command.[br]
+ If you pass the returned string to the echo command, the string will be displayed
+ as a link and will be highlighted when the user moves the mouse over it.[br]
+ If the user will leave the mouse for a few seconds over the link, the <tooltip_text>
+ will be displayed in a small tooltip window. If <tooltip_text> is not given,
+ then no tooltip will be shown.[br]
+ The <double_click_command> will be executed when the user will double click on the link.[br]
+ Please remember that if <double_click_command> contains identifiers
+ that must be evaluated at double-click time, you MUST escape them in the $fmtlink() call
+ to prevent the evaluation.[br]
+ You might also take a look at [doc:escape_sequences]the escape sequences documentation[/doc]
+ to learn more about how the links are implemented and how to create more powerful links (add
+ right and middle button actions, use predefined kvirc links etc...)
+ @seealso:
+ [doc:escape_sequences]the escape sequences documentation[/doc]
+ */
+
+ KVSCF(fmtlink)
+ {
+ QString szLinkText,szCmd,szToolTip;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("link_text",KVS_PT_NONEMPTYSTRING,0,szLinkText)
+ KVSCF_PARAMETER("double_click_command",KVS_PT_STRING,0,szCmd)
+ KVSCF_PARAMETER("tooltip_text",KVS_PT_STRING,KVS_PF_OPTIONAL,szToolTip)
+ KVSCF_PARAMETERS_END
+
+ QString szPart;
+ KviQString::sprintf(szPart,"[!dbl]%Q",&szCmd);
+ if(!szToolTip.isEmpty())KviQString::appendFormatted(szPart,"[!txt]%Q",&szToolTip);
+ QString szLink;
+ KviQString::sprintf(szLink,"\r!%Q\r%Q\r",&szPart,&szLinkText);
+ KVSCF_pRetBuffer->setString(szLink);
+ return true;
+ }
+
+};
+
diff --git a/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp b/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp
new file mode 100644
index 00000000..ce8728d1
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_corefunctions_gl.cpp
@@ -0,0 +1,888 @@
+//=============================================================================
+//
+// File : kvi_kvs_corefunctions_gl.cpp
+// Created on Fri 31 Oct 2003 01:52:04 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003-2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_corefunctions.h"
+
+#include "kvi_kvs_kernel.h"
+
+#include "kvi_kvs_timermanager.h"
+#include "kvi_kvs_arraycast.h"
+#include "kvi_locale.h"
+#include "kvi_input.h"
+#include "kvi_app.h"
+#include "kvi_channel.h"
+#include "kvi_console.h"
+#include "kvi_iconmanager.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_frame.h"
+#include "kvi_time.h"
+#include "kvi_kvs_eventmanager.h"
+#include "kvi_kvs_eventhandler.h"
+#include <qregexp.h>
+#include "kvi_lagmeter.h"
+
+namespace KviKvsCoreFunctions
+{
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: hash
+ @type:
+ function
+ @title:
+ $hash
+ @short:
+ Explicitly creates a hash
+ @syntax:
+ <hash> $hash([<key:string>,<value:variant>,[<key:string>,<value:variant>]],...)
+ @description:
+ Returns a hash with the specified items. Each <value> is indexed by the preceeding <key>.
+ This is just an explicit way of creating a hash with a defined set of items,
+ useful for increasing readability.
+ @examples:
+ [example]
+ [cmd]alias[/cmd](test){ [cmd]return[/cmd] $hash(1,X,2,Y,3,Z); };
+ %x = $test();
+ [cmd]foreach[/cmd](%y,%x)
+ {
+ [cmd]echo[/cmd] %y;
+ }
+ [cmd]foreach[/cmd](%y,[fnc]$keys[/fnc](%x))
+ {
+ [cmd]echo[/cmd] %y
+ }
+ [/example]
+ @seealso:
+ [fnc]$array[/fnc]
+ */
+
+ KVSCF(hash)
+ {
+#ifdef COMPILE_NEW_KVS
+ KviKvsHash * a = new KviKvsHash();
+
+ for(KviKvsVariant * key = KVSCF_pParams->first();key;key = KVSCF_pParams->next())
+ {
+ KviKvsVariant * val = KVSCF_pParams->next();
+ if(!val)break;
+ QString sz;
+ key->asString(sz);
+ a->set(sz,new KviKvsVariant(*val));
+ }
+
+ KVSCF_pRetBuffer->setHash(a);
+#endif
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: hextoAscii
+ @type:
+ function
+ @title:
+ $hexToAscii
+ @short:
+ Returns a decoded hex string
+ @syntax:
+ $hexToAscii(<hex_encoded_string>)
+ @description:
+ Decodes the <hex_encoded_string> to its ASCII representation.
+ @examples:
+ [example]
+ [cmd]echo[/cmd] $hexToAscii(6B76697263)
+ [/example]
+ @seealso:
+ [fnc]$asciiToHex[/fnc]
+ */
+
+ KVSCF(hexToAscii)
+ {
+ QString szHex;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("hex_encoded_string",KVS_PT_STRING,0,szHex)
+ KVSCF_PARAMETERS_END
+
+ KviStr tmp1(szHex);
+ char * buf;
+ int len = tmp1.hexToBuffer(&buf,true);
+ KVSCF_pRetBuffer->setString(QString(KviQCString(buf,len+1)));
+ KviStr::freeBuffer(buf);
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: hostname
+ @type:
+ function
+ @title:
+ $hostname
+ @short:
+ Returns the hostname of the specified user
+ @syntax:
+ <string> $hostname(<nickname:string>)
+ @description:
+ Returns the hostname of the specified IRC user IF it is known.[br]
+ The hostname is known if [fnc]$isWellKnown[/fnc] returns 1.[br]
+ The hostname is generally known if the user is on a channel with you
+ or has an open query with you.[br]
+ Detailed explaination:[br]
+ KVIrc has an internal database of users that are currently
+ visible by *this client*: this includes users on open channels
+ and queries.[br] The other IRC users are NOT in the database:
+ this means that KVIrc knows NOTHING about them and can't return
+ any information immediately. In this case this function will return
+ an EMPTY string.[br]
+ If a user is in the database, at least his nickname is known.[br]
+ The username and hostname are known only if the server provides that information
+ spontaneously or after a KVIrc request.[br]
+ KVIrc requests user information for all the users in open queries
+ and channels. This information takes some time to be retrieved,
+ in this interval of time KVIrc knows only the user's nickname.
+ This function will return the string "*" in this case.[br]
+ @seealso:
+ [fnc]$isWellKnown[/fnc], [fnc]$username[/fnc], [cmd]awhois[/cmd]
+ */
+
+ KVSCF(hostname)
+ {
+ QString szNick;
+
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("nick",KVS_PT_NONEMPTYSTRING,0,szNick)
+ KVSCF_PARAMETERS_END
+
+ if(KVSCF_pContext->window()->console())
+ {
+ if(KVSCF_pContext->window()->console()->isConnected())
+ {
+ KviIrcUserEntry * e = KVSCF_pContext->window()->connection()->userDataBase()->find(szNick);
+ if(e)
+ {
+ KVSCF_pRetBuffer->setString(e->host());
+ return true;
+ }
+ }
+ }
+
+ KVSCF_pRetBuffer->setNothing();
+ return true;
+ }
+
+ //-------------------------------------------------
+ /*
+ @doc: lag
+ @type:
+ function
+ @title:
+ $lag
+ @short:
+ Returns the lag on the current server
+ @syntax:
+ <integer> lag
+ @description:
+ This function returns the lag in the current server, in milliseconds.[br]
+ */
+
+ KVSCF(lag)
+ {
+ if(!KVSCF_pContext->window()->console()) return KVSCF_pContext->errorNoIrcContext();
+ if(!KVSCF_pContext->window()->console()->connection()) return KVSCF_pContext->warningNoIrcConnection();
+ if(!KVSCF_pContext->window()->console()->connection()->lagMeter())
+ {
+ KVSCF_pContext->warning(__tr2qs("Lag meter was not enabled"));
+ return false;
+ }
+
+ KVSCF_pRetBuffer->setInteger( KVSCF_pContext->window()->console()->connection()->lagMeter()->lag());
+ return true;
+ }
+ /////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: hptimestamp
+ @type:
+ function
+ @title:
+ $hptimestamp
+ @short:
+ Returns a high precision timestamp
+ @syntax:
+ <float> $hptimestamp
+ @description:
+ Returns a high precision timestamp as a floaint point value.
+ The timestamp rappresent the number of seconds elapsed since
+ a certain moment in the past. The number of seconds
+ contains a "high precision" fractional part. The "certain moment" definition
+ depends on the platform KVIrc is executed. This means that
+ this timestamp is totally useless to rappresent a time value
+ but is useful to compute time intervals with sub-second precision.
+ @examples:
+ [example]
+ %tmp = $hptimestamp
+ [cmd]echo[/cmd] $($hptimestamp - %tmp)
+ [/example]
+ @seealso:
+ [fnc]$unixTime[/fnc], [fnc]$date[/fnc]
+ */
+
+ KVSCF(hptimestamp)
+ {
+ struct timeval tv;
+ kvi_gettimeofday(&tv,0);
+ kvs_real_t dTimestamp = (kvs_real_t)(tv.tv_sec);
+ dTimestamp += (((kvs_real_t)(tv.tv_usec)) / 1000000.0);
+ KVSCF_pRetBuffer->setReal(dTimestamp);
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: icon
+ @type:
+ function
+ @title:
+ $icon
+ @short:
+ Returns the ID of an icon
+ @syntax:
+ <integer> $icon(<iconname:string>)
+ @description:
+ Returns the ID of the icon <iconname>.
+ You should always use this function where an <image_id> is required
+ and you want to use an internal icon.
+ See [fnc]$iconname[/fnc] for a list of the icon names supported by kvirc.[br]
+ @examples:
+ [example]
+ [cmd]echo[/cmd] $icon(linux)
+ [/example]
+ @seealso:
+ [fnc]$iconName[/fnc]
+ */
+
+ KVSCF(icon)
+ {
+ QString szName;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("iconName",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSCF_PARAMETERS_END
+
+ KVSCF_pRetBuffer->setInteger(g_pIconManager->getSmallIconIdFromName(szName));
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: iconname
+ @type:
+ function
+ @title:
+ $iconname
+ @short:
+ Returns the name of an icon
+ @syntax:
+ $iconname(<iconid>)
+ @description:
+ Returns the name of a builtin icon given an <iconid>.
+ The <iconid> is returned by the function [fnc]$icon[/fnc].
+ If the <iconid> is not valid, an empty name is returned.[br]
+ The following code will list all the available icon names:[br]
+ [example]
+ %i = 0
+ [cmd]do[/cmd] {
+ %name = $iconname(%i)
+ echo The icon by ID %i is named %name
+ %i++
+ } [cmd]while[/cmd](%name != "")
+ [/example]
+ @examples:
+ [example]
+ [cmd]echo[/cmd] $iconname(24)
+ [cmd]echo[/cmd] $iconname([fnc]$icon[/fnc](linux))
+ [/example]
+ @seealso:
+ [fnc]$iconName[/fnc]
+ */
+
+ KVSCF(iconName)
+ {
+ kvs_uint_t uIco;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("iconid",KVS_PT_UINT,0,uIco)
+ KVSCF_PARAMETERS_END
+
+ if(uIco < KVI_NUM_SMALL_ICONS)
+ {
+ KVSCF_pRetBuffer->setString(g_pIconManager->getSmallIconName(uIco));
+ } else {
+ KVSCF_pRetBuffer->setNothing();
+ }
+ return true;
+ }
+
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: integer
+ @type:
+ function
+ @title:
+ $integer
+ @short:
+ Casts a variable to an integer
+ @syntax:
+ <integer> $integer(<data:variant>)
+ @description:
+ Forces <data> to be an integer data type with the following
+ semantics:[br]
+ [ul]
+ [li]If <data> is an integer, <data> itself is returned.[/li]
+ [li]If <data> is a boolean, its numeric value is returned (either 1 or 0).[/li]
+ [li]If <data> is a real, its integer part is returned.[/li]
+ [li]If <data> is an array, the count of its items is returned.[/li]
+ [li]If <data> is a hash, the count of its items is returned.[/li]
+ [li]If <data> is a string, its length is returned.[/li]
+ [li]If <data> is an object, 0 is returned if the reference is null (invalid) and 1 otherwise[/li]
+ [/ul]
+ This function is similar to the C (int) cast and is internally
+ aliased to [fnc]$int[/fnc]() too.
+ Note that since KVIrc does most of the casting work automatically
+ you shouldn't need to use this function.
+ @seealso:
+ [fnc]$real[/fnc]
+ [fnc]$boolean[/fnc]
+ */
+
+ /*
+ @doc: int
+ @type:
+ function
+ @title:
+ $int
+ @short:
+ Casts a variable to an integer
+ @syntax:
+ <integer> $int(<data:variant>)
+ @description:
+ This is an internal alias to [fnc]$integer[/fnc]().
+ @seealso:
+ [fnc]$real[/fnc]
+ [fnc]$boolean[/fnc]
+ */
+
+ KVSCF(integer)
+ {
+ KviKvsVariant * v;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("data",KVS_PT_VARIANT,0,v)
+ KVSCF_PARAMETERS_END
+
+ kvs_int_t iVal;
+ v->castToInteger(iVal);
+ KVSCF_pRetBuffer->setInteger(iVal);
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: isMainWindowActive
+ @type:
+ function
+ @title:
+ $isMainWindowActive
+ @short:
+ Checks if main KVirc window is active
+ @syntax:
+ <boolean> $isMainWindowActive()
+ @description:
+ Returns true if the KVIrc's window is currently
+ the active window on the current desktop.
+ */
+
+ KVSCF(isMainWindowActive)
+ {
+ KVSCF_pRetBuffer->setBoolean(g_pFrame->isActiveWindow());
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: isMainWindowMinimized
+ @type:
+ function
+ @title:
+ $isMainWindowMinimized
+ @short:
+ Checks if main KVirc window is minimized
+ @syntax:
+ <boolean> $isMainWindowMinimized()
+ @description:
+ Returns true if main KVirc window is minimized and false otherwise.
+ */
+
+ KVSCF(isMainWindowMinimized)
+ {
+ KVSCF_pRetBuffer->setBoolean(g_pFrame->isMinimized());
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: isempty
+ @type:
+ function
+ @title:
+ $isEmpty
+ @short:
+ Checks if a variable is set (empty or non empty)
+ @syntax:
+ <boolean> $isEmpty(<data:variant>)
+ @description:
+ Returns 0 if <data> is actually set to some non-empty value
+ and 1 otherwise. Since KVIrc treats unset variables as empty
+ ones then this function is the exact opposite of [fnc]$isSet[/fnc].
+ @seealso:
+ [fnc]$isSet[/fnc]
+ */
+
+ KVSCF(isEmpty)
+ {
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant * v;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("data",KVS_PT_VARIANT,0,v)
+ KVSCF_PARAMETERS_END
+
+ KVSCF_pRetBuffer->setBoolean(v->isEmpty());
+#endif
+ return true;
+ }
+ //FIXME: documentation
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: iseventenabled
+ @type:
+ function
+ @title:
+ $isEventEnabled
+ @short:
+ Checks if an event enabled
+ @syntax:
+ <boolean> $isEventEnabled(<event_name:string>,<handler_name:string>)
+ @description:
+ Returns 1 if the event handler enabled
+ */
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ KVSCF(isEventEnabled)
+ {
+ QString szEventName,szHandlerName;
+ KviKvsScriptEventHandler *h=0;
+
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("event_name",KVS_PT_NONEMPTYSTRING,0,szEventName)
+ KVSCF_PARAMETER("handler_name",KVS_PT_NONEMPTYSTRING,0,szHandlerName)
+ KVSCF_PARAMETERS_END
+
+ bool bOk;
+ int iNumber = szEventName.toInt(&bOk);
+ bool bIsRaw = (bOk && (iNumber >= 0) && (iNumber < 1000));
+
+ if(bIsRaw)
+ {
+ if(!KviKvsEventManager::instance()->isValidRawEvent(iNumber))
+ {
+ KVSCF_pContext->warning(__tr2qs("No such event (%Q)"),&szEventName);
+ } else {
+ h=KviKvsEventManager::instance()->findScriptRawHandler(iNumber,szHandlerName);
+ }
+ } else {
+ iNumber = KviKvsEventManager::instance()->findAppEventIndexByName(szEventName);
+ if(!KviKvsEventManager::instance()->isValidAppEvent(iNumber))
+ {
+ KVSCF_pContext->warning(__tr2qs("No such event (%Q)"),&szEventName);
+ } else {
+ h=KviKvsEventManager::instance()->findScriptAppHandler(iNumber,szHandlerName);
+ }
+ }
+ if(h)
+ KVSCF_pRetBuffer->setBoolean(h->isEnabled());
+ else
+ KVSCF_pContext->warning(__tr2qs("No such event handler (%Q) for event %Q"),&szHandlerName,&szEventName);
+
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: isnumeric
+ @type:
+ function
+ @title:
+ $isNumeric
+ @syntax:
+ <boolean> $isNumeric(<data:variant>)
+ @short:
+ Finds whether a variable contains a rappresentation of a number
+ @description:
+ Returns 1 if the <data> is an integer or a real number, 0 otherwise.
+ */
+
+ KVSCF(isNumeric)
+ {
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant * v;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("data",KVS_PT_VARIANT,0,v)
+ KVSCF_PARAMETERS_END
+
+ KviKvsNumber n;
+ KVSCF_pRetBuffer->setBoolean(v->asNumber(n));
+#endif
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: isset
+ @type:
+ function
+ @title:
+ $isSet
+ @short:
+ Checks if a variable is set (non-empty)
+ @syntax:
+ <boolean> $isSet(<data:variant>)
+ @description:
+ Returns 1 if <data> is actually set to some non-empty value
+ and 0 otherwise. If <data> is a variable , then this function
+ simply checks if the variable is set. If <data> is a constant
+ then this function checks if the constant is non empty.
+ Since KVIrc treats empty strings as "unset" values then
+ this function could be also called "isNonEmpty" and it is
+ the perfect opposite of [fnc]$isEmpty[/fnc]
+ @seealso:
+ [fnc]$isEmpty[/fnc], [cmd]unset[/cmd]
+ */
+
+ KVSCF(isSet)
+ {
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant * v;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("data",KVS_PT_VARIANT,0,v)
+ KVSCF_PARAMETERS_END
+
+ KVSCF_pRetBuffer->setBoolean(!v->isEmpty());
+#endif
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: istimer
+ @type:
+ function
+ @title:
+ $isTimer
+ @short:
+ Checks for a timer existence
+ @syntax:
+ <boolean> $istimer(<name:string>)
+ @description:
+ Returns 1 if the timer named <name> is actually running, else 0
+ @seealso:
+ [cmd]timer[/cmd], [cmd]killtimer[/cmd]
+ */
+
+ KVSCF(isTimer)
+ {
+ QString szName;
+
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("timerName",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSCF_PARAMETERS_END
+ KVSCF_pRetBuffer->setBoolean(KviKvsTimerManager::instance()->timerExists(szName));
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: iswellknown
+ @type:
+ function
+ @title:
+ $isWellKnown
+ @short:
+ Returns $true if the specified user is well known
+ @syntax:
+ <bool> $isWellKnown(<nickname:string>)
+ @description:
+ Returns 1 if KVIrc has the basic user information about the specified <nickname>.[br]
+ The basic information include the username and hostname.[br]
+ This is almost always true if the user is on a channel with you or
+ you have an open query with him.[br]
+ If $isWellKnown returns 0, [fnc]$username[/fnc] and [fnc]$hostname[/fnc]
+ will return empty strings.[br]
+ In this case you must use [cmd]awhois[/cmd] to obtain the user basic information.[br]
+ */
+
+ KVSCF(isWellKnown)
+ {
+ QString szNick;
+
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("nick",KVS_PT_NONEMPTYSTRING,0,szNick)
+ KVSCF_PARAMETERS_END
+
+ if(KVSCF_pContext->window()->console())
+ {
+ if(KVSCF_pContext->window()->console()->isConnected())
+ {
+ KviIrcUserEntry * e = KVSCF_pContext->window()->connection()->userDataBase()->find(szNick);
+ if(e)
+ {
+ KVSCF_pRetBuffer->setBoolean(e->hasHost() && e->hasUser());
+ return true;
+ }
+ }
+ }
+
+ KVSCF_pRetBuffer->setBoolean(false);
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: k
+ @type:
+ function
+ @title:
+ $k
+ @short:
+ Returns the COLOR mIRC control character
+ @syntax:
+ <string> $k(<foreground:integer>[,<background:integer>])
+ <string> $k
+ @description:
+ Returns the COLOR mIRC control character (Qt::CTRL+K).[br]
+ If <foreground> and <background> are passed, a standard mIRC
+ color escape is returned.[br]
+ @seealso:
+ [fnc]$b[/fnc]
+ */
+
+ KVSCF(k)
+ {
+ kvs_uint_t iFore,iBack;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("foreground",KVS_PT_UINT,KVS_PF_OPTIONAL,iFore)
+ KVSCF_PARAMETER("background",KVS_PT_UINT,KVS_PF_OPTIONAL,iBack)
+ KVSCF_PARAMETERS_END
+
+ QString szRet = QChar(KVI_TEXT_COLOR);
+ if(KVSCF_pParams->count() > 0)
+ {
+ KviQString::appendFormatted(szRet,"%u",iFore);
+ if(KVSCF_pParams->count() > 1)
+ KviQString::appendFormatted(szRet,",%u",iBack);
+ }
+ KVSCF_pRetBuffer->setString(szRet);
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: keys
+ @type:
+ function
+ @title:
+ $keys
+ @short:
+ Returns the array of keys of a hash
+ @syntax:
+ <array> $keys(<hash_value:hash>)
+ @description:
+ Returns an array with the keys of the <hash> parameter.
+ <hash> must be obviously a hash (or eventually an empty variable
+ that is treated as an empty hash).
+ @seealso:
+ [cmd]foreach[/cmd]
+ */
+
+ KVSCF(keys)
+ {
+#ifdef COMPILE_NEW_KVS
+ KviKvsHash * pHash;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("hash",KVS_PT_HASH,0,pHash)
+ KVSCF_PARAMETERS_END
+
+ KviKvsArray * a = new KviKvsArray();
+ kvs_int_t idx = 0;
+ KviKvsHashIterator it(*(pHash->dict()));
+ while(it.current())
+ {
+ a->set(idx,new KviKvsVariant(it.currentKey()));
+ idx++;
+ ++it;
+ }
+ KVSCF_pRetBuffer->setArray(a);
+#endif
+ return true;
+ }
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: lang
+ @type:
+ function
+ @title:
+ $lang
+ @short:
+ Returns name of currently used language
+ @syntax:
+ <string> $lang([<type:string>])
+ @description:
+ Returns the short name of currently used language
+ Type <type> should be one of: [br]
+ "full" - returns full locale name, such as ru_RU.UTF-8 (default)
+ "lang" - return language name, such as "ru_RU"
+ "short" - returns only language group such as "ru"
+ */
+
+ KVSCF(lang)
+ {
+ QString szType;
+
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("type",KVS_PT_NONEMPTYSTRING,KVS_PF_OPTIONAL,szType)
+ KVSCF_PARAMETERS_END
+
+ QString szLocale(KviLocale::localeName().ptr());
+ if(szType=="lang") KVSCF_pRetBuffer->setString(szLocale.left(5));
+ else if(szType=="short") KVSCF_pRetBuffer->setString(szLocale.left(2));
+ else KVSCF_pRetBuffer->setString(szLocale);
+ return true;
+ }
+
+
+
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: length
+ @type:
+ function
+ @title:
+ $length
+ @short:
+ Returns the length of a variable
+ @syntax:
+ <integer> $length(<value:variant>)
+ @description:
+ When <value> is an array or a hash, it returns the number
+ of its elements. When <value> is an object reference it returns 0.
+ In all the other cases <value> is interpreted
+ as a string and its length is returned.
+ @seealso:
+ [fnc]$str.len[/fnc]
+ */
+
+ KVSCF(length)
+ {
+ KviKvsVariant * pVar;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("value",KVS_PT_VARIANT,0,pVar)
+ KVSCF_PARAMETERS_END
+
+ switch(pVar->type())
+ {
+ case KviKvsVariantData::Array:
+ KVSCF_pRetBuffer->setInteger(pVar->array()->size());
+ break;
+ case KviKvsVariantData::Hash:
+ KVSCF_pRetBuffer->setInteger(pVar->hash()->size());
+ break;
+ case KviKvsVariantData::HObject:
+ KVSCF_pRetBuffer->setInteger(0);
+ break;
+ default:
+ {
+ QString tmp;
+ pVar->asString(tmp);
+ KVSCF_pRetBuffer->setInteger(tmp.length());
+ }
+ break;
+ }
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: lf
+ @type:
+ function
+ @title:
+ $lf
+ @short:
+ Returns a line feed character
+ @syntax:
+ <string> $lf
+ @description:
+ Returns a line feed character
+ @seealso:
+ [fnc]$cr[/fnc], [fnc]$ascii[/fnc], [fnc]$char[/fnc]
+ */
+
+ KVSCF(lf)
+ {
+ KVSCF_pRetBuffer->setString(QString(QChar('\n')));
+ return true;
+ }
+
+};
+
diff --git a/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp b/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp
new file mode 100644
index 00000000..6316f1d7
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_corefunctions_mr.cpp
@@ -0,0 +1,679 @@
+//=============================================================================
+//
+// File : kvi_kvs_corefunctions_mr.cpp
+// Created on Fri 31 Oct 2003 01:52:04 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_corefunctions.h"
+
+#include "kvi_kvs_kernel.h"
+#include "kvi_kvs_arraycast.h"
+#include "kvi_kvs_object_controller.h"
+
+#include "kvi_locale.h"
+#include "kvi_ircconnection.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_options.h"
+#include "kvi_console.h"
+#include "kvi_ircuserdb.h"
+#include "kvi_ircmask.h"
+#include "kvi_socket.h"
+#include "kvi_app.h"
+#include "kvi_query.h"
+
+#include <stdlib.h> // rand & srand
+
+namespace KviKvsCoreFunctions
+{
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: mask
+ @type:
+ function
+ @title:
+ $mask
+ @short:
+ Retrieves the host mask of a user
+ @syntax:
+ $mask[(<nickname>[,<mask_type>])]
+ @description:
+ Returns the specified type of mask for the user with <nickname>.[br]
+ If the host or username are not known, the mask may contain less information
+ than requested.[br]
+ If the <nickname> is not given it is assumed to be the current nickname.[br]
+ If <mask_type> is not given or is invalid, it is assumed to be 0.[br]
+ Available mask types:[br]
+ 1 : nick!user@*.abc.host.top ([email protected].*)[br]
+ 2 : nick!user@*[br]
+ 3 : nick!*@machine.host.top ([email protected])[br]
+ 4 : nick!*@*.abc.host.top ([email protected].*)[br]
+ 5 : nick!*@*[br]
+ 7 : *!user@*.abc.host.top (*[email protected].*)[br]
+ 8 : *!user@*[br]
+ 9 : *!*@machine.host.top (*!*@XXX.XXX.XXX.XXX)[br]
+ 10: *!*@*.abc.host.top (*!*@XXX.XXX.XXX.*)[br]
+ 11: nick!*[email protected] (nick!*[email protected])[br]
+ 12: nick!*user@*.abc.host.top (nick!*[email protected].*)[br]
+ 13: nick!*user@*[br]
+ 15: *!*user@*.abc.host.top (*!*[email protected].*)[br]
+ 16: *!*user@*[br]
+ 17: nick!~user@*.host.top ([email protected].*)[br]
+ 18: nick!*@*.host.top (nick!*@XXX.XXX.*)[br]
+ 19: *!~user@*.host.top (*[email protected].*)[br]
+ 20: nick!*user@*.host.top (nick!*[email protected].*)[br]
+ 21: *!*user@*.host.top (*!user@*XXX.XXX.*)[br]
+ 22: nick!~user@*.host.top ([email protected].*)[br]
+ 23: nick!*@*.host.top (nick!*@XXX.XXX.*)[br]
+ 24: *!~user@*.host.top (*[email protected].*)[br]
+ 25: nick!*user@*.host.top (nick!*[email protected].*)[br]
+ 26: *!*user@*.host.top (*!user@*XXX.XXX.*)[br]
+ If some data is missing, these types may change:[br]
+ For example, if the hostname is missing, the mask type 3 or 4 may be reduced to type 5.[br]
+ If the user with <nickname> is not found in the current IRC context user database,
+ an empty string is returned.[br]
+ The masks 22-26 are the smart versions of the masks 17-21 that try take care of masked ip addresses
+ in the form xxx.xxx.INVALID-TOP-MASK. If a masked ip address is found then
+ the XXX.XXX.* or XXX.* host mask is returned instead of the (wrong) *.INVALID-TOP-MASK
+ @examples:
+ @seealso:
+ */
+
+ KVSCF(mask)
+ {
+ QString szNick;
+ kvs_uint_t maskType;
+
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("nickname",KVS_PT_STRING,KVS_PF_OPTIONAL,szNick)
+ KVSCF_PARAMETER("maskType",KVS_PT_UINT,KVS_PF_OPTIONAL,maskType)
+ KVSCF_PARAMETERS_END
+
+ if(maskType > 26) maskType = 0;
+
+ if(KVSCF_pContext->window()->console())
+ {
+ if(KVSCF_pContext->window()->console()->isConnected())
+ {
+ KviIrcUserEntry * e = KVSCF_pContext->window()->connection()->userDataBase()->find(szNick.isEmpty() ? KVSCF_pContext->window()->connection()->currentNickName() : szNick);
+ if(e)
+ {
+ KviIrcMask u;
+ u.setNick(szNick);
+ u.setUsername(e->user());
+ u.setHost(e->host());
+
+ QString tmp;
+ u.mask(tmp,(KviIrcMask::MaskType)maskType);
+ KVSCF_pRetBuffer->setString(tmp);
+ return true;
+ }
+ }
+ }
+ KVSCF_pRetBuffer->setNothing();
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: me
+ @type:
+ function
+ @title:
+ $me
+ @short:
+ Returns the current nickname
+ @syntax:
+ <string> $me[(<irc_context_id:uint>)]
+ @description:
+ Returns the current nickname used in the specified IRC context.[br]
+ If no <irc_context_id> is specified, the current IRC context is used.[br]
+ If you are not connected to a server, this function will return a null string.[br]
+ If the current window is a DCC chat and no irc_context is specified,
+ the local nickname is returned.[br]
+ If the current window does not belong to any IRC context, no irc_context_id
+ is specified, and the current window is not a DCC chat, a warning is printed.[br]
+ */
+
+ KVSCF(me)
+ {
+ kvs_uint_t uCntx;
+
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("irc_context_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uCntx)
+ KVSCF_PARAMETERS_END
+
+ KviConsole * cns;
+
+ if(KVSCF_pParams->count() > 0)
+ {
+ cns = g_pApp->findConsole(uCntx);
+ if(cns)
+ {
+ if(cns->isConnected())
+ KVSCF_pRetBuffer->setString(cns->connection()->currentNickName());
+ else
+ KVSCF_pRetBuffer->setNothing();
+ } else {
+ KVSCF_pRetBuffer->setNothing();
+ }
+ } else {
+ if(KVSCF_pContext->window()->console())
+ {
+ cns = KVSCF_pContext->window()->console();
+ if(cns->isConnected())
+ KVSCF_pRetBuffer->setString(cns->connection()->currentNickName());
+ else
+ KVSCF_pRetBuffer->setNothing();
+ } else {
+ if(KVSCF_pContext->window()->type() == KVI_WINDOW_TYPE_DCCCHAT)
+ {
+ KVSCF_pRetBuffer->setString(KVSCF_pContext->window()->localNick());
+ } else {
+ KVSCF_pContext->warning(__tr2qs("This window has no associated IRC context and is not a DCC chat"));
+ KVSCF_pRetBuffer->setNothing();
+ }
+ }
+ }
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: msgtype
+ @type:
+ function
+ @title:
+ $msgtype
+ @short:
+ Returns the id of a message type color set
+ @syntax:
+ $msgtype(<message type color set name>)
+ @description:
+ Returns the id of a message type color set used by the [cmd]echo[/cmd] command.
+ You can take a look at the options dialog section related to the
+ message output to see the list of available message type names.
+ @examples:
+ [example]
+ [cmd]echo[/cmd] -i=$msgtype(Highlight) Highlighted text!
+ [/example]
+ @seealso:
+ [cmd]echo[/cmd]
+ */
+
+ KVSCF(msgtype)
+ {
+ QString szName;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("msg_type_color_set_name",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSCF_PARAMETERS_END
+
+ KviStr tmp(szName);
+ for(int i=0;i< KVI_NUM_MSGTYPE_OPTIONS;i++)
+ {
+ if(kvi_strEqualCI(tmp.ptr(),(g_msgtypeOptionsTable[i].name + 7)))
+ {
+ KVSCF_pRetBuffer->setInteger(i);
+ return true;
+ }
+ }
+ KVSCF_pRetBuffer->setInteger(0);
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: new
+ @type:
+ function
+ @title:
+ $new
+ @short:
+ Creates a new object
+ @syntax:
+ $new(<className>,[<parentHandle> [,<name>[,<param>[,<param>[...]]]])
+ @description:
+ Creates a new instance of the object <class> with
+ the parent object <parent_id> and the specified <name>.[br]
+ <name> and <parent_id> are optional: if not specified, <name>
+ is assumed to be an empty string and <parent_id> default to 0 (parentless object).[br]
+ Please see the [doc:objects]objects documentation[/doc] for more information.[br]
+ @examples:
+ [example]
+ %myobj = $new(widget,0,pippo)
+ [/example]
+ @seealso:
+ [doc:objects]Objects documentation[/doc], [cmd]delete[/cmd]
+ */
+
+ KVSCF(newCKEYWORDWORKAROUND)
+ {
+ // prologue: parameter handling
+ QString szClassName;
+ QString szName;
+ kvs_hobject_t hParent;
+ KviKvsVariantList vList;
+
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("className",KVS_PT_NONEMPTYSTRING,0,szClassName)
+ KVSCF_PARAMETER("parentHandle",KVS_PT_HOBJECT,KVS_PF_OPTIONAL,hParent)
+ KVSCF_PARAMETER("name",KVS_PT_STRING,KVS_PF_OPTIONAL,szName)
+ KVSCF_PARAMETER("parameterList",KVS_PT_VARIANTLIST,KVS_PF_OPTIONAL,vList)
+ KVSCF_PARAMETERS_END
+
+ KviKvsObjectClass * pClass = KviKvsKernel::instance()->objectController()->lookupClass(szClassName);
+ if(!pClass)
+ {
+ KVSCF_pContext->error(__tr2qs("Class \"%Q\" is not defined"),&szClassName);
+ return false;
+ }
+
+ KviKvsObject * pParent;
+ if(hParent != (kvs_hobject_t)0)
+ {
+ pParent = KviKvsKernel::instance()->objectController()->lookupObject(hParent);
+ if(!pParent)
+ {
+ KVSCF_pContext->error(__tr2qs("The specified parent object does not exist"));
+ return false;
+ }
+ } else {
+ pParent = 0;
+ }
+
+ KviKvsObject * pObject = pClass->allocateInstance(pParent,szName,KVSCF_pContext,&vList);
+
+ // epilogue: set the return value
+ KVSCF_pRetBuffer->setHObject(pObject ? pObject->handle() : (kvs_hobject_t)0);
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: nothing
+ @type:
+ function
+ @title:
+ $nothing
+ @short:
+ Evaluates to an empty variable
+ @syntax:
+ <nothing> $nothing
+ @description:
+ Evaluates to an empty variable. This is a special value somewhat similar
+ to the [fnc]$null[/fnc] object: it is used to denote absence
+ of information. For example, a function might decide to return
+ a meaningful value when the input parameters are correct and
+ $nothing when the input parameters are wrong.
+ @seealso:
+ [fnc]$null[/fnc]
+ */
+
+ KVSCF(nothing)
+ {
+ KVSCF_pRetBuffer->setNothing();
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+
+ /*
+ @doc: null
+ @type:
+ function
+ @title:
+ $null
+ @short:
+ Evaluates to the null object handle.
+ @syntax:
+ <hobject> $null
+ @description:
+ Evaluates to the null object handle. This is a special
+ object handle that is returned by some functions.
+ Please note that writing $null is semantically equivalent to writing 0
+ or even [fnc]$nothing[/fnc] in place of the handle, but $null increases code readability.
+ @seealso:
+ [fnc]$new[/fnc], [fnc]$nothing[/fnc]
+ */
+
+ KVSCF(nullCKEYWORDWORKAROUND)
+ {
+ KVSCF_pRetBuffer->setHObject(0);
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: o
+ @type:
+ function
+ @title:
+ $o
+ @short:
+ Returns the RESET mIRC control character
+ @syntax:
+ <string> $o
+ @description:
+ Returns the RESET mIRC control character (CTRL+O).[br]
+ @seealso:
+ [fnc]$k[/fnc], [fnc]$b[/fnc], [fnc]$u[/fnc], [fnc]$r[/fnc]
+ */
+
+ KVSCF(o)
+ {
+ KVSCF_pRetBuffer->setString(QString(QChar(KVI_TEXT_RESET)));
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: option
+ @type:
+ function
+ @title:
+ $option
+ @short:
+ Returns the value of an option
+ @syntax:
+ <string> $option(<optionName:string>)
+ @description:
+ Returns the current value of the internal option named <optionName>.
+ See the [cmd]option[/cmd] command documentation for more info about options.
+ @examples:
+ [example]
+ [cmd]echo[/cmd] $option(fontIrcView)
+ [/example]
+ @seealso:
+ [cmd]option[/cmd],
+ */
+
+ KVSCF(option)
+ {
+ QString szOpt;
+ // FIXME: This should return a variant in general
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("optionName",KVS_PT_NONEMPTYSTRING,0,szOpt)
+ KVSCF_PARAMETERS_END
+ QString tmp;
+ if(g_pApp->getOptionString(szOpt,tmp))KVSCF_pRetBuffer->setString(tmp);
+ else {
+ KVSCF_pContext->warning(__tr2qs("There is no option named '%Q'"),&szOpt);
+ KVSCF_pRetBuffer->setNothing();
+ }
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: query
+ @type:
+ function
+ @title:
+ $query
+ @short:
+ Retrieves the window ID of a specified query
+ @syntax:
+ $query[(<target>[,<irc context id>])]
+ @description:
+ Returns the [b]window ID[/b] of the query that has <target>
+ in the list of targets and is bound to the connection specified by
+ <irc context id>[br]
+ If no window matches the specified target or context, and invalid
+ window ID is returned (0).[br]
+ If no <irc context id> is specified, this function looks for
+ the query in the current connection context (if any).[br]
+ If no <target> is specified, this function returns the current
+ query window ID, if executed in a query, else 0.[br]
+ @examples:
+ [example]
+ [/example]
+ @seealso:
+ [fnc]$window[/fnc],
+ [fnc]$channel[/fnc],
+ [fnc]$console[/fnc]
+ [doc:window_naming_conventions]Window naming conventions[/doc]
+ */
+
+ KVSCF(query)
+ {
+ QString szName;
+ kvs_uint_t uContextId;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("query_name",KVS_PT_NONEMPTYSTRING,KVS_PF_OPTIONAL,szName)
+ KVSCF_PARAMETER("context_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uContextId)
+ KVSCF_PARAMETERS_END
+
+ KviWindow * wnd;
+ if(KVSCF_pParams->count() > 0)
+ {
+ if(KVSCF_pParams->count() > 1)
+ {
+ KviConsole * cons = g_pApp->findConsole(uContextId);
+ if(!cons)KVSCF_pContext->warning(__tr2qs("No such IRC context (%u)"),uContextId);
+ else {
+ if(cons->connection())
+ wnd = cons->connection()->findQuery(szName);
+ else
+ wnd = 0;
+ }
+ } else {
+ if(KVSCF_pContext->window()->connection())wnd = KVSCF_pContext->window()->connection()->findQuery(szName);
+ else {
+ if(!KVSCF_pContext->window()->console())
+ KVSCF_pContext->warning(__tr2qs("This window is not associated to an IRC context"));
+ wnd = 0;
+ }
+ }
+ } else {
+ if(KVSCF_pContext->window()->type() == KVI_WINDOW_TYPE_QUERY)wnd = KVSCF_pContext->window();
+ }
+
+ KVSCF_pRetBuffer->setInteger((kvs_int_t)(wnd ? wnd->numericId() : 0));
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: r
+ @type:
+ function
+ @title:
+ $r
+ @short:
+ Returns the REVERSE mIRC control character
+ @syntax:
+ <string> $r
+ @description:
+ Returns the REVERSE mIRC control character (CTRL+R).[br]
+ @seealso:
+ [fnc]$k[/fnc], [fnc]$b[/fnc], [fnc]$u[/fnc], [fnc]$o[/fnc]
+ */
+
+ KVSCF(r)
+ {
+ KVSCF_pRetBuffer->setString(QString(QChar(KVI_TEXT_REVERSE)));
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: rand
+ @type:
+ function
+ @title:
+ $rand
+ @short:
+ Generates a random number
+ @syntax:
+ $rand(<max>)
+ @description:
+ Returns a random integer number from 0 to max inclusive.
+ You can repeat sequences of random numbers by calling [cmd]srand[/cmd]
+ with the same seed value. If [cmd]srand[/cmd] has not been called
+ $rand is automatically seeded with value of 1.
+ If no <max> is specified, this function returns an integer between
+ 0 and RAND_MAX that is system dependant.
+ @examples:
+ [example]
+ [/example]
+ @seealso:
+ [cmd]srand[/cmd]
+ */
+
+ KVSCF(rand)
+ {
+ // prologue: parameter handling
+ kvs_uint_t uMax;
+
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("max",KVS_PT_UINT,KVS_PF_OPTIONAL,uMax)
+ KVSCF_PARAMETERS_END
+ if(KVSCF_pParams->count() > 0)
+ {
+ KVSCF_pRetBuffer->setInteger(::rand() % (uMax+1));
+ } else {
+ KVSCF_pRetBuffer->setInteger(::rand());
+ }
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: real
+ @type:
+ function
+ @title:
+ $real
+ @short:
+ Casts a variable to a real
+ @syntax:
+ <real> $real(<data:variant>)
+ @description:
+ Forces <data> to be a "real" data type with the following
+ semantics:[br]
+ [ul]
+ [li]If <data> is a real, <data> itself is returned.[/li]
+ [li]If <data> is an integer, <data> itself is returned, in its real form.[/li]
+ [li]If <data> is a boolean, its numeric value is returned (either 1.0 or 0.0).[/li]
+ [li]If <data> is an array, the count of its items is returned.[/li]
+ [li]If <data> is a hash, the count of its items is returned.[/li]
+ [li]If <data> is a string, its length is returned.[/li]
+ [li]If <data> is an object, 0.0 is returned if the reference is null (invalid) and 1.0 otherwise[/li]
+ [/ul]
+ This function is similar to the C (double) cast.[br]
+ Note that since KVIrc does most of the casting work automatically
+ you shouldn't need to use this function.
+ @seealso:
+ [fnc]$int[/fnc]
+ */
+
+ KVSCF(real)
+ {
+ KviKvsVariant * v;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("data",KVS_PT_VARIANT,0,v)
+ KVSCF_PARAMETERS_END
+
+ kvs_real_t dVal;
+ if(v->asReal(dVal))
+ KVSCF_pRetBuffer->setReal(dVal);
+ else {
+ kvs_int_t iVal;
+ v->castToInteger(iVal);
+ KVSCF_pRetBuffer->setReal((double)iVal);
+ }
+ return true;
+ }
+
+ /*
+ @doc: receivedBytes
+ @type:
+ function
+ @title:
+ $receivedBytes
+ @short:
+ Returns total received bytes
+ @syntax:
+ <uint> $receivedBytes()
+ @description:
+ Returns total received bytes
+ @seealso:
+ [fnc]$sentBytes[/fnc]
+ */
+
+ KVSCF(receivedBytes)
+ {
+ KVSCF_pRetBuffer->setInteger(g_uIncomingTraffic);
+ return true;
+ }
+
+ /*
+ @doc: rsort
+ @type:
+ function
+ @title:
+ $rsort
+ @short:
+ Sorts an array in reverse order
+ @syntax:
+ <array> $rsort(<data:array>)
+ @description:
+ Sorts an array in descending order.
+ @seealso:
+ [fnc]$sort[/fnc]
+ */
+
+ KVSCF(rsort)
+ {
+ KviKvsArrayCast a;
+
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("data",KVS_PT_ARRAYCAST,0,a)
+ KVSCF_PARAMETERS_END
+
+ if(a.array())
+ {
+ KviKvsArray * arry = new KviKvsArray(*(a.array()));
+ arry->rsort();
+ KVSCF_pRetBuffer->setArray(arry);
+ } else {
+ KVSCF_pRetBuffer->setArray(new KviKvsArray());
+ }
+ return true;
+ }
+};
+
diff --git a/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp b/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp
new file mode 100644
index 00000000..64b16c0d
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_corefunctions_sz.cpp
@@ -0,0 +1,1109 @@
+//=============================================================================
+//
+// File : kvi_kvs_corefunctions_sz.cpp
+// Created on Fri 31 Oct 2003 01:52:04 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_corefunctions.h"
+
+#include "kvi_kvs_kernel.h"
+#include "kvi_kvs_arraycast.h"
+#include "kvi_kvs_object_controller.h"
+
+#include "kvi_window.h"
+#include "kvi_out.h"
+#include "kvi_locale.h"
+#include "kvi_app.h"
+#include "kvi_options.h"
+#include "kvi_channel.h"
+#include "kvi_console.h"
+#include "kvi_time.h"
+#include "kvi_ircuserdb.h"
+#include "kvi_modulemanager.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_sourcesdate.h"
+#include "kvi_socket.h"
+
+#include <stdlib.h> // rand & srand
+
+/*
+ Data types:
+
+ <variant>
+ <nothing>
+ <scalar>
+ <boolean>
+ <string>
+ <numeric>
+ <integer>
+ <real>
+ <array>
+ <hash>
+ <object>
+
+ $isEmpty(<nothing>) == $true
+
+ <nothing> == <empty string>
+ <null> == <null object>
+
+
+*/
+
+namespace KviKvsCoreFunctions
+{
+ /////////////////////////////////////////////////////////////////////////////////////////
+
+ // FIXME: #warning "THIS HAS TO WORK FOR QUERIES TOO!"
+ /*
+ @doc: selected
+ @type:
+ function
+ @title:
+ $selected
+ @short:
+ Returns the list of selected nicknames in the channel
+ @syntax:
+ <array> $selected
+ <array> $selected(<window id:string>)
+ @description:
+ The form with the <window id> parameter returns an array of the selected
+ nicknames in the channel designated by <window id>.
+ The form without parameters returns an array of the selected nicknames
+ in the current window (assuming that it is a channel),
+ thus it is equivalent to calling $selected([fnc]$window[/fnc])
+ The returned value may be assigned to a dictionary too: it will be used to simulate an array.[br]
+ In a non-array/dictionary context it returns the selected nicknames as a comma separated list.
+ @examples:
+ [example]
+ [cmd]echo[/cmd] $selected
+ [cmd]foreach[/cmd](%i,$selected)[cmd]echo[/cmd] %i
+ [/example]
+ @seealso:
+ [fnc]$window[/fnc],
+ [fnc]$channel[/fnc],
+ [doc:window_naming_conventions]Window naming conventions[/doc]
+ */
+
+ KVSCF(selected)
+ {
+ QString winId;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("winId",KVS_PT_NONEMPTYSTRING,KVS_PF_OPTIONAL,winId)
+ KVSCF_PARAMETERS_END
+
+ KviWindow * wnd;
+ if(KVSCF_pParams->count() > 0)
+ {
+ wnd = g_pApp->findWindow(winId.utf8().data());
+ if(!wnd)
+ {
+ KVSCF_pContext->warning(__tr2qs("Window with ID '%s' not found, returning empty string"),winId.utf8().data());
+ KVSCF_pRetBuffer->setNothing();
+ return true;
+ }
+ } else {
+ wnd = KVSCF_pContext->window();
+ }
+
+ if(wnd->type() != KVI_WINDOW_TYPE_CHANNEL)
+ {
+ KVSCF_pContext->warning(__tr2qs("The specified window is not a channel"));
+ KVSCF_pRetBuffer->setNothing();
+ return true;
+ }
+
+ KviKvsArray * a = new KviKvsArray();
+
+ kvs_int_t i = 0;
+ for(QString * s = ((KviChannel *)wnd)->firstSelectedNickname();s;s = ((KviChannel *)wnd)->nextSelectedNickname())
+ {
+ a->set(i,new KviKvsVariant(*s));
+ i++;
+ }
+
+ KVSCF_pRetBuffer->setArray(a);
+ return true;
+ }
+
+
+ /*
+ @doc: sentBytes
+ @type:
+ function
+ @title:
+ $sentBytes
+ @short:
+ Returns total sent bytes
+ @syntax:
+ <uint> $sentBytes()
+ @description:
+ Returns total sent bytes
+ @seealso:
+ [fnc]$receivedBytes[/fnc]
+ */
+
+ KVSCF(sentBytes)
+ {
+ KVSCF_pRetBuffer->setInteger(g_uOutgoingTraffic);
+ return true;
+ }
+
+ /*
+ @doc: serialize
+ @type:
+ function
+ @title:
+ <string> $serialize(<data:mixed>)
+ @short:
+ Encodes variable to JSON string
+ @syntax:
+ <string> $serialize(<data:mixed>)
+ @description:
+ Decodes JSON-encoded string
+ $serialize() returns a string containing a byte-stream representation of value that can be stored anywhere.
+ @seealso:
+ [fnc]$serialize[/fnc]
+ */
+ KVSCF(serialize)
+ {
+ KviKvsVariant *pVar = 0;
+ QString szBuffer;
+
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("data",KVS_PT_VARIANT,0,pVar)
+ KVSCF_PARAMETERS_END
+
+ if(!pVar) return false;
+ pVar->serialize(szBuffer);
+ KVSCF_pRetBuffer->setString(szBuffer);
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: server
+ @type:
+ function
+ @title:
+ $server
+ @short:
+ Returns the current server name (if any)
+ @syntax:
+ <string> $server[(irc_context_id:uint)]
+ @description:
+ Returns the current server name of the specified IRC context.[br]
+ If no <irc_context_id> is specified, the current IRC context is used.[br]
+ If you are not connected to a server, this function will return an empty string.[br]
+ If the current window does not belong to any IRC context and no irc_context_id
+ is specified, this function prints a warning and also returns an empty string.[br]
+ */
+
+ KVSCF(server)
+ {
+ kvs_uint_t uCntx;
+
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("irc_context_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uCntx)
+ KVSCF_PARAMETERS_END
+
+ KviConsole * cns;
+
+ if(KVSCF_pParams->count() > 0)
+ {
+ cns = g_pApp->findConsole(uCntx);
+ if(cns)
+ {
+ if(cns->context()->isConnected() || cns->context()->isLoggingIn())
+ KVSCF_pRetBuffer->setString(cns->connection()->currentServerName());
+ else
+ KVSCF_pRetBuffer->setNothing();
+ } else {
+ KVSCF_pRetBuffer->setNothing();
+ }
+ } else {
+ if(KVSCF_pContext->window()->console())
+ {
+ cns = KVSCF_pContext->window()->console();
+ if(cns->context()->isConnected() || cns->context()->isLoggingIn())
+ KVSCF_pRetBuffer->setString(cns->connection()->currentServerName());
+ else
+ KVSCF_pRetBuffer->setNothing();
+ } else {
+ KVSCF_pContext->warning(__tr2qs("This window has no associated IRC context"));
+ KVSCF_pRetBuffer->setNothing();
+ }
+ }
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: sort
+ @type:
+ function
+ @title:
+ $sort
+ @short:
+ Sorts an array
+ @syntax:
+ <array> $sort(<data:array>)
+ @description:
+ Sorts an array in ascending order.
+ @seealso:
+ [fnc]$rsort[/fnc]
+ */
+
+ KVSCF(sort)
+ {
+ KviKvsArrayCast a;
+
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("data",KVS_PT_ARRAYCAST,0,a)
+ KVSCF_PARAMETERS_END
+
+ if(a.array())
+ {
+ KviKvsArray * arry = new KviKvsArray(*(a.array()));
+ arry->sort();
+ KVSCF_pRetBuffer->setArray(arry);
+ } else {
+ KVSCF_pRetBuffer->setArray(new KviKvsArray());
+ }
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: string
+ @type:
+ function
+ @title:
+ $string
+ @short:
+ Casts a variable to a string
+ @syntax:
+ <integer> $string(<data:variant>)
+ @description:
+ Forces <data> to be a string data type with the following semantics:
+ [ul]
+ [li]If <data> is a string then <data> itself is returned.[/li]
+ [li]If <data> is an integer then its decimal rappresentation is returned.[/li]
+ [li]If <data> is a real then its decimal floating-point rappresentation is returned.[/li]
+ [li]If <data> is a boolean then the string "1" is returned for a true value and the string "0" for a false value.[/li]
+ [li]If <data> is nothing (unset) then an empty string is returned[/li]
+ [li]If <data> is an array then a string with all the items converted to strings and separated by commas is returned[/li]
+ [li]If <data> is a hash then a string with all the values converted to strings and separated by commas is returned[/li]
+ [li]If <data> is a hobject then the string "object" is returned[/li]
+ [/ul]
+ Note that since KVIrc does most of the casting work automatically
+ you shouldn't need to use this function.
+ @seealso:
+ [fnc]$real[/fnc]
+ [fnc]$integer[/fnc]
+ */
+
+ KVSCF(string)
+ {
+ KviKvsVariant * v;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("data",KVS_PT_VARIANT,0,v)
+ KVSCF_PARAMETERS_END
+
+ QString szVal;
+ v->asString(szVal);
+ KVSCF_pRetBuffer->setString(szVal);
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: sw
+ @type:
+ function
+ @title:
+ $sw
+ @short:
+ Returns the value of a switch for an alias
+ @syntax:
+ <variant> $sw(<switch_name:string>[,<long_switch_name:string>])
+ @description:
+ This function is valid and useful only in aliases.
+ It allows an alias to handle switches just like any other
+ KVIrc command. If a switch in the form -<letter> was
+ passed to the current alias then $sw(<letter>)
+ returns 1 (true). If a switch in the form -<letter>=<value>
+ was passed to the current alias then <value> is returned.
+ If the switch was not present at all then this function
+ returns an empty string (that evaluates to false in an expression).
+ A warning is printed if this function is used non-alias code.
+ @examples:
+ [example]
+ [cmd]alias[/cmd](test){
+ if($sw(a,append)) [cmd]echo[/cmd] "Switch -a was passed"
+ %x = $sw(x);
+ if(%x) [cmd]echo[/cmd] "Switch -x=%x was passed"
+ }
+ test -a
+ test -x
+ test --append -x
+ test -a -x
+ test -a -x=test
+ test -a=10 -x=test
+ [/example]
+ */
+
+ KVSCF(sw)
+ {
+ QString szSwitch;
+ QString szLongSwitch;
+
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("switch_name",KVS_PT_STRING,0,szSwitch)
+ KVSCF_PARAMETER("long_name",KVS_PT_STRING | KVS_PF_OPTIONAL ,0,szLongSwitch)
+ KVSCF_PARAMETERS_END
+
+ KviKvsSwitchList * sl = KVSCF_pContext->aliasSwitchList();
+ if(!sl)
+ {
+ KVSCF_pContext->warning(__tr2qs("The $sw() function can be used only in aliases"));
+ return true;
+ }
+
+ KviKvsVariant * v;
+
+
+ if(szSwitch.length() > 1)
+ {
+ if(szLongSwitch.isEmpty())
+ v = sl->find(szSwitch);
+ else
+ v = sl->find(szSwitch[0].unicode(),szLongSwitch);
+ }else {
+ if(szLongSwitch.isEmpty())
+ v = sl->find(szSwitch[0]);
+ else
+ v = sl->find(szSwitch[0].unicode(),szLongSwitch);
+ }
+
+ if(v)KVSCF_pRetBuffer->copyFrom(*v);
+ else KVSCF_pRetBuffer->setNothing();
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: target
+ @type:
+ function
+ @title:
+ $target
+ @short:
+ Returns the target of the current window
+ @syntax:
+ <string> $target
+ <string> $target(<window id>)
+ @description:
+ The form with the <window id> parameter returns the target
+ of the channel,query or dcc that has the specified ID.
+ The form without parameters returns the target of the current window,
+ thus it is equivalent to calling $target([fnc]$window[/fnc]).
+ For channel windows the target is the channel name,
+ for query windows it is the list of the "queried" users, for the
+ dcc windows it is the remote end of the connection.
+ The other windows have an empty target.
+ @examples:
+ [example]
+ [cmd]echo[/cmd] $target
+ [/example]
+ @seealso:
+ [fnc]$window[/fnc],
+ [fnc]$console[/fnc],
+ [fnc]$channel[/fnc],
+ [fnc]$query[/fnc],
+ [doc:window_naming_conventions]Window naming conventions[/doc]
+ */
+
+ KVSCF(target)
+ {
+ QString winId;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("winId",KVS_PT_NONEMPTYSTRING,KVS_PF_OPTIONAL,winId)
+ KVSCF_PARAMETERS_END
+
+ KviWindow * wnd;
+ if(KVSCF_pParams->count() > 0)
+ {
+ wnd = g_pApp->findWindow(winId.utf8().data());
+ if(!wnd)
+ {
+ KVSCF_pContext->warning(__tr2qs("Window with ID '%s' not found, returning empty string"),winId.utf8().data());
+ KVSCF_pRetBuffer->setNothing();
+ return true;
+ }
+ } else {
+ wnd = KVSCF_pContext->window();
+ }
+
+ //debug("CALLING $target on window %s",wnd->name());
+ QString szTa = wnd->target();
+
+
+ KVSCF_pRetBuffer->setString(wnd->target());
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: this
+ @type:
+ function
+ @title:
+ $this
+ @short:
+ Retrieves the ID of the current object
+ @syntax:
+ $this
+ @description:
+ Returns the ID of the current object or ('0') if there is
+ none. This function has a "quick" version with syntax:
+ [b]$$[/b][br]
+ */
+
+ /*
+ @doc: $
+ @type:
+ function
+ @title:
+ $$
+ @short:
+ Retrieves the ID of the current object
+ @syntax:
+ $$
+ @description:
+ Returns the ID of the current object or ('0') if there is
+ none. This function has equivalent to [fnc]$this[/fnc]
+ */
+
+ KVSCF(thisCKEYWORDWORKAROUND)
+ {
+ // prologue: parameter handling
+ KviKvsObject * o = KVSCF_pContext->thisObject();
+ KVSCF_pRetBuffer->setHObject(o ? o->handle() : ((kvs_hobject_t)0));
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: script_localization
+ @type:
+ generic
+ @title:
+ Localization of scripts
+ @short:
+ Explains how to add translation capabilities to your scripts
+ @body:
+ [p]
+ [big]Introduction[/big]
+ [/p]
+ [p]
+ Adding the translated versions of the strings adds a great
+ value to your scripts. The process of translating a part of
+ software is called localization. KVIrc offers some commands
+ and functions for this purpose and this document explains
+ briefly how to use them.
+ [/p]
+
+ [p]
+ [big]The big picture[/big]
+ [/p]
+ [p]
+ All of the strings in your script are written in a "primary language".
+ The most common "primary language" is english, but theoretically
+ it can be any language of your choice.
+ [/p]
+ [p]
+ By the means of the gettext package programs you extract
+ the strings from your script and produce a translation file.
+ [/p]
+ [p]
+ The translation file is then effectively translated in another
+ language and later compiled in a binary form.
+ [/p]
+ [p]
+ The binary form translations are then loaded in the KVIrc
+ executable at runtime and a function is used to look up the
+ translations.
+ [/p]
+
+ [p]
+ [big]How to translate scripts[/big]
+ [/p]
+ [p]
+ Your strings should be surrounded by the [fnc]$tr[/fnc]() function in the following way:
+ [example]
+ [fnc]$tr[/fnc]("your default language text")
+ [/example]
+ [/p]
+ [p]
+ Then you should run the xgettext command on your script files.
+ This is done by a shell commandline similar to the following:[br]
+ [pre]xgettext -o myscript.pot -ktr mykvsfile1.kvs mykvsfile2.kvs ...[/pre]
+ [/p]
+ [p]
+ Copy the translation file obtained in the following way:[br]
+ [pre]cp myscript.pot myscript_XX.pot[/pre]
+ Where the XX is your country/language code. For example, for Italian
+ it would be:[br]
+ [pre]cp myscript.pot myscript_it.po[/pre]
+ [/p]
+ [p]
+ Translate mytranslation_it.po. The format of the po file is straightforward.
+ There are msgid lines with the original english text and immediately
+ following msgstr lines that must be filled with the corresponding translation.
+ For example in Italian you would translate:[br]
+ msgid "your default language text"
+ msgstr "il tuo testo in linguaggio predefinito"
+ [/p]
+ [p]
+ Compile your translation to binary form with the following command:[br]
+ [pre]msgfmt -o myscript_it.mo myscript_it.po[/pre]
+ [/p]
+ [p]
+ Copy the generated *.mo file to the "locale" subdirectory
+ in the KVIrc's local directory (usually $HOME/.kvirc/locale/).
+ [/p]
+ [p]
+ Set the system language to the XX above with the following command:[br]
+ [pre]export LANG="XX"[/pre][br]
+ For Italian it would be:[br]
+ [pre]export LANG="it"[/pre][br]
+ [/p]
+ [p]
+ Start KVIrc and type in the commandline:
+ [example]
+ [cmd]echo[/cmd] [fnc]$tr[/fnc]("your default language text","myscript")
+ [/example]
+ If you did everything well, you should see the translated
+ text echoed in the window :)[br]
+ [/p]
+ [p]
+ Obviously if you don't set LANG="XX", the same command will
+ output the original string unchanged.
+ [/p]
+ [p]
+ You can manage translations in several languages by producing
+ several *.mo files all with the proper language/country code appended.
+ The right *.mo file will be magically loaded by KVIrc that
+ will look up the user's LANG variable. (If you don't want
+ to use LANG, you can use KVIRC_LANG instead, it will still work).
+ [/p]
+
+ [big]Caveats[/big]
+ [/p]
+ [p]
+ You should NEVER use variables or identifiers inside the $tr() function.
+ This because the translation files are generated offline,
+ when the string is not evaluated yet (i.e variables ad identifiers
+ are not substituted by their actual return values).
+ The translation process, instead, happens at runtime, when
+ the variables and identifiers have been substituted by their
+ actual values. This would lead to a mismatch between the
+ string you look up in the translation catalogue and the
+ effectively translated one. If you need to include variables
+ in your strings you should compose the string with smaller pieces
+ [example]
+ [cmd]echo[/cmd] [fnc]$tr[/fnc]("On this channel") %number [fnc]$tr[/fnc]("users are operators")
+ [/example]
+ [/p]
+ [p]
+ The translation process can be realized only if your
+ scripts are written in external files. This makes sense since
+ if you're translating the script then you will probably want to
+ distribute it and the only way to distribute it is on files.
+ But well.. this is a caveat.
+ [/p]
+ */
+
+ /*
+ @doc: tr
+ @type:
+ function
+ @title:
+ $tr
+ @short:
+ Translates an english string to the current language
+ @syntax:
+ <string> $tr(<default_language_string:string>[,<catalogue:string>])
+ @description:
+ This function searches for the translation of <default_language_string>
+ in the specified translation <catalogue> or in the main
+ KVIrc translation file if <catalogue> is omitted.[br]
+ If no translation is found then <english_string> is returned.[br]
+ <default_language_string> is a string in your script default
+ language (which should probably be english since it is the
+ most common language spoken by the translators...).[br]
+ If the <catalogue> is not loaded yet, KVIrc will attempt to load it,
+ but only the first time that the catalogue is accessed (i.e. a load
+ failure will cause the catalogue to be ignored completly until [cmd]trunload[/cmd]
+ is explicitly used.[br]
+ KVIrc will search the catalogue only in [fnc]$file.localdir[/fnc]/locale/
+ and in [fnc]$file.globaldir[/fnc]/locale/. If your catalogues are
+ in some other place then you must load them explicitly by the
+ means of [cmd]trload[/cmd].
+ For more informations see the documentation about [doc:script_localization]script localization[/doc].
+ @examples:
+ [example]
+ [cmd]echo[/cmd] $tr("Hello World!")
+ [/example]
+ @seealso:
+ [cmd]trload[/cmd], [cmd]trunload[/cmd]
+ */
+
+ KVSCF(tr)
+ {
+ // prologue: parameter handling
+ QString szString;
+ QString szCatalogue;
+
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("default_language_string",KVS_PT_STRING,0,szString)
+ KVSCF_PARAMETER("catalogue",KVS_PT_STRING,KVS_PF_OPTIONAL,szCatalogue)
+ KVSCF_PARAMETERS_END
+ if(szString.isEmpty()) return true;
+ // body: the real job
+ QString translation;
+
+ if(!szCatalogue.isEmpty())
+ {
+ KviMessageCatalogue * pCat = KviLocale::getLoadedCatalogue(szCatalogue);
+ if(pCat)
+ {
+ translation = pCat->translateToQString(szString);
+ } else {
+ // attempt to load it automatically
+ QString szDir;
+ g_pApp->getLocalKvircDirectory(szDir,KviApp::Locale);
+ if(!KviLocale::loadCatalogue(szCatalogue,szDir))
+ {
+ g_pApp->getGlobalKvircDirectory(szDir,KviApp::Locale);
+ KviLocale::loadCatalogue(szCatalogue,szDir);
+ }
+ // If the code above fails to load the catalogue
+ // then __tr2qs_ctx_no_xgettext will place
+ // a dummy catalogue in its place
+ // This means that the next call to getLoadedCatalogue will
+ // not fail unless /trunload is explicitly used
+ // This will avoid trashing the user's disk too much
+ // when a catalogue for a given language is not available
+ translation = __tr2qs_ctx_no_xgettext(szString,szCatalogue);
+ }
+ } else {
+ translation = __tr2qs_no_xgettext(szString);
+ }
+
+ // epilogue: set the return value
+ KVSCF_pRetBuffer->setString(translation);
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: true
+ @type:
+ function
+ @title:
+ $true
+ @short:
+ The boolean true constant
+ @syntax:
+ <boolean> $true
+ @description:
+ Evaluates to the true boolean constant. True
+ is equivalent to the integer 1 too. This function/constant
+ is useful to keep your code readable: when you
+ have a variable that can assume boolean values it's
+ nicer to use $true and [fnc]$false[/fnc] instead of
+ the integer constants 1 and 0. The reader will
+ undestand immediately that the variable simply can't
+ assume any other value.
+ @examples:
+ [example]
+ %a = $true
+ [cmd]echo[/cmd] $typeof(%a)
+ [cmd]echo[/cmd] $(%a + 1)
+ [/example]
+ @seealso:
+ [fnc]$false[/fnc]
+ */
+
+ KVSCF(trueCKEYWORDWORKAROUND)
+ {
+#ifdef COMPILE_NEW_KVS
+ KVSCF_pRetBuffer->setBoolean(true);
+#endif
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: typeof
+ @type:
+ function
+ @title:
+ $typeof
+ @short:
+ Returns the internal data type of a variable
+ @syntax:
+ <string> $typeof(<data:variant>)
+ @description:
+ Returns the internal data type of the <data>.
+ @examples:
+ [example]
+ [cmd]echo[/cmd] $typeof("test")
+ %a = "test"
+ [cmd]echo[/cmd] $typeof(%a)
+ %a = 1
+ [cmd]echo[/cmd] $typeof(%a)
+ %a = $(1 + 2)
+ [cmd]echo[/cmd] $typeof(%a)
+ [cmd]echo[/cmd] $typeof($typeof(%a))
+ [/example]
+ */
+
+ KVSCF(typeofCKEYWORDWORKAROUND)
+ {
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant * v;
+
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("data",KVS_PT_VARIANT,0,v)
+ KVSCF_PARAMETERS_END
+
+ QString szType;
+ v->getTypeName(szType);
+ KVSCF_pRetBuffer->setString(szType);
+#endif
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: u
+ @type:
+ function
+ @title:
+ $u
+ @short:
+ Returns the UNDERLINE mIRC control character
+ @syntax:
+ <string> $u
+ @description:
+ Returns the UNDERLINE mIRC control character (CTRL+U).[br]
+ @seealso:
+ [fnc]$k[/fnc], [fnc]$b[/fnc], [fnc]$r[/fnc], [fnc]$o[/fnc]
+ */
+
+ KVSCF(u)
+ {
+ KVSCF_pRetBuffer->setString(QString(QChar(KVI_TEXT_UNDERLINE)));
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: unicode
+ @type:
+ function
+ @title:
+ $unicode
+ @short:
+ Returns the UNICODE code of a sets of characters
+ @syntax:
+ <variant> $unicode(<char:string>)
+ @description:
+ If <char> is composed only of a single character
+ then returns its UNICODE code point as an integer.
+ If <char> is composed of more than one character
+ then an array of UNICODE code points is returned.
+ @seealso:
+ [fnc]$cr[/fnc], [fnc]$lf[/fnc], [fnc]$char[/fnc]
+ */
+
+ KVSCF(unicode)
+ {
+ QString sz;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("char",KVS_PT_NONEMPTYSTRING,0,sz)
+ KVSCF_PARAMETERS_END
+
+ if(sz.length() > 1)
+ {
+ KviKvsArray * a = new KviKvsArray();
+ for(kvs_int_t i=0;i<sz.length();i++)
+ a->set(i,new KviKvsVariant((kvs_int_t)(sz[(int)i].unicode())));
+ KVSCF_pRetBuffer->setArray(a);
+ } else {
+ KVSCF_pRetBuffer->setInteger((kvs_int_t)(sz[0].unicode()));
+ }
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: unixtime
+ @type:
+ function
+ @title:
+ $unixTime
+ @short:
+ Returns the current UNIX time
+ @syntax:
+ <integer> $unixtime
+ @description:
+ Returns the time since the Epoch (00:00:00 UTC, January 1, 1970),
+ measured in seconds.
+ @seealso:
+ [fnc]$date[/fnc], [fnc]$hpTimeStamp[/fnc]
+ */
+
+ KVSCF(unixtime)
+ {
+ KVSCF_pRetBuffer->setInteger((kvs_int_t)(time(0)));
+ return true;
+ }
+
+ /*
+ @doc: unserialize
+ @type:
+ function
+ @title:
+ <mixed> $unserialize(<data:string>)
+ @short:
+ Decodes JSON-encoded string
+ @syntax:
+ <mixed> $unserialize(<data:string>)
+ @description:
+ Decodes JSON-encoded string
+ @seealso:
+ [fnc]$serialize[/fnc]
+ */
+
+ KVSCF(unserialize)
+ {
+ QString szData;
+
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("data",KVS_PT_NONEMPTYSTRING,0,szData)
+ KVSCF_PARAMETERS_END
+
+ KviKvsVariant *pVar = KviKvsVariant::unserialize(szData);
+ if(pVar)
+ KVSCF_pRetBuffer->copyFrom(pVar);
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: username
+ @type:
+ function
+ @title:
+ $username
+ @short:
+ Returns the username of the specified user
+ @syntax:
+ <string> $username(<nickname:string>)
+ @description:
+ Returns the username of the specified IRC user IF it is known.[br]
+ The username is known if [fnc]$isWellKnown[/fnc] returns 1.[br]
+ The username is generally known if the user is on a channel with you
+ or has an open query with you.[br]
+ Detailed explaination:[br]
+ KVIrc has an internal database of users that are currently
+ visible by *this client*: this includes users on open channels
+ and queries.[br] The other IRC users are NOT in the database:
+ this means that KVIrc knows NOTHING about them and can't return
+ any information immediately. In this case this function will return
+ an EMPTY string.[br]
+ If a user is in the database, at least his nickname is known.[br]
+ The username and hostname are known only if the server provides that information
+ spontaneously or after a KVIrc request.[br]
+ KVIrc requests user information for all the users in open queries
+ and channels. This information takes some time to be retrieved,
+ in this interval of time KVIrc knows only the user's nickname.
+ This function will return the string "*" in this case.[br]
+ @seealso:
+ [fnc]$isWellKnown[/fnc], [$fnc]$hostname[/fnc], [cmd]awhois[/cmd]
+ */
+
+ KVSCF(username)
+ {
+ QString szNick;
+
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("nick",KVS_PT_NONEMPTYSTRING,0,szNick)
+ KVSCF_PARAMETERS_END
+
+ if(KVSCF_pContext->window()->console())
+ {
+ if(KVSCF_pContext->window()->console()->isConnected())
+ {
+ KviIrcUserEntry * e = KVSCF_pContext->window()->connection()->userDataBase()->find(szNick);
+ if(e)
+ {
+ KVSCF_pRetBuffer->setString(e->user());
+ return true;
+ }
+ }
+ }
+
+ KVSCF_pRetBuffer->setNothing();
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: version
+ @type:
+ function
+ @title:
+ $version
+ @short:
+ Returns informations about the version of KVIrc.
+ @syntax:
+ <string> $version()
+ <string> $version(<type:string>)
+ @description:
+ Returns informations about the version of the currently running KVIrc.[br]
+ Type can be one of:[br]
+ [ul]
+ [li]v: return the current numeric version[/li]
+ [li]s: return the current sources date[/li]
+ [li]r: return the release name[/li]
+ [li]b: return the build date in human readable form[/li]
+ [/ul]
+ If <type> is omitted then v is assumed.[br]
+ @examples:
+ [example]
+ [cmd]echo[/cmd] $version $version(r)
+ [/example]
+ @seealso:
+ [fnc]$features[/fnc]
+ */
+
+ KVSCF(version)
+ {
+ QString szType;
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("type",KVS_PT_STRING,KVS_PF_OPTIONAL,szType)
+ KVSCF_PARAMETERS_END
+
+ if(szType.isEmpty())
+ KVSCF_pRetBuffer->setString(KVI_VERSION);
+ else {
+ if(szType.find('r') != -1)KVSCF_pRetBuffer->setString(KVI_RELEASE_NAME);
+ else if(szType.find('s') != -1)KVSCF_pRetBuffer->setString(KVI_SOURCES_DATE);
+ else if(szType.find('b') != -1)KVSCF_pRetBuffer->setString(KVI_BUILD_DATE);
+ else KVSCF_pRetBuffer->setString(KVI_VERSION);
+ }
+ return true;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: window
+ @type:
+ function
+ @title:
+ $window
+ @short:
+ Retrieve the id of a specified window.
+ @syntax:
+ <string> $window
+ <string> $window([<caption_text:hash>[,<context_id:uint>]])
+ @description:
+ Returns the [b]window id[/b] of the first window that
+ has the specified <caption text>.[br]
+ If no window matches the specified <caption text>, and invalid
+ window id is returned (0).[br]
+ If no <caption text> is specified , this function returns the id
+ of the current window.[br]
+ <context_id> restricts search in only one irc context.
+ @examples:
+ [example]
+ [cmd]echo[/cmd] This is the window with id $window
+ [/example]
+ @seealso:
+ [fnc]$channel[/fnc],
+ [fnc]$query[/fnc],
+ [fnc]$console[/fnc],
+ [doc:window_naming_conventions]Window naming conventions[/doc]
+ */
+
+ KVSCF(window)
+ {
+ //#warning "FIXME: the window identifiers could be numbers!"
+ QString szCaption;
+ kvs_int_t iContextId; // kvs_int_t is 64bit while int is 32 (and thus KVSCF_PARAMETER() crashes)
+
+ KVSCF_PARAMETERS_BEGIN
+ KVSCF_PARAMETER("caption_text",KVS_PT_STRING,KVS_PF_OPTIONAL,szCaption)
+ KVSCF_PARAMETER("context_id",KVS_PT_INTEGER,KVS_PF_OPTIONAL,iContextId)
+ KVSCF_PARAMETERS_END
+
+ if(KVSCF_pParams->count() < 2)
+ iContextId = -1;
+
+ KviWindow * pWnd;
+ if(szCaption.isEmpty())
+ {
+ pWnd = KVSCF_pContext->window();
+ } else {
+ pWnd = g_pApp->findWindowByCaption(szCaption,iContextId);
+ if(!pWnd)
+ {
+ //follow the documented behaviour
+ KVSCF_pRetBuffer->setInteger(0);
+ return true;
+ }
+ }
+ KVSCF_pRetBuffer->setInteger(pWnd->numericId());
+ return true;
+ }
+};
+
diff --git a/src/kvirc/kvs/kvi_kvs_coresimplecommands.cpp b/src/kvirc/kvs/kvi_kvs_coresimplecommands.cpp
new file mode 100644
index 00000000..a5979631
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_coresimplecommands.cpp
@@ -0,0 +1,237 @@
+//=============================================================================
+//
+// File : kvi_kvs_coresimplecommands.cpp
+// Created on Fri 31 Oct 2003 00:04:25 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_ircconnectionserverinfo.h"
+
+#include "kvi_kvs_coresimplecommands.h"
+
+#include "kvi_kvs_kernel.h"
+#include "kvi_options.h"
+#include "kvi_ircconnection.h"
+#include "kvi_locale.h"
+#include "kvi_kvs_treenode_command.h"
+
+#include <qregexp.h>
+#include <qstringlist.h>
+
+namespace KviKvsCoreSimpleCommands
+{
+ void init()
+ {
+ KviKvsKernel * pKern = KviKvsKernel::instance();
+
+#define _REGCMD(__cmdName,__routine) \
+ { \
+ KviKvsCoreSimpleCommandExecRoutine * r = new KviKvsCoreSimpleCommandExecRoutine; \
+ r->proc = KVI_PTR2MEMBER(KviKvsCoreSimpleCommands::__routine); \
+ pKern->registerCoreSimpleCommandExecRoutine(QString(__cmdName),r); \
+ }
+ // a_f
+ _REGCMD("admin",rfc2812wrapper)
+ _REGCMD("away",away)
+ _REGCMD("back",back)
+ _REGCMD("ban",ban)
+ _REGCMD("beep",beep)
+ _REGCMD("buttonctl",buttonctl)
+ _REGCMD("codepage",rfc2812wrapper)
+ _REGCMD("ctcp",ctcp)
+ _REGCMD("debug",debug)
+ _REGCMD("delete",deleteCKEYWORDWORKAROUND)
+ _REGCMD("delpopupitem",delpopupitem)
+ _REGCMD("destroy",deleteCKEYWORDWORKAROUND)
+ _REGCMD("deop",deop)
+ _REGCMD("devoice",devoice)
+ _REGCMD("die",error)
+ _REGCMD("echoprivmsg",echoprivmsg)
+ _REGCMD("echo",echo)
+ _REGCMD("error",error)
+ _REGCMD("eval",eval)
+ _REGCMD("eventctl",eventctl)
+ _REGCMD("exit",exit)
+ // g_l
+ _REGCMD("halt",halt)
+ _REGCMD("help",help)
+ _REGCMD("host",host)
+ _REGCMD("include",parse)
+ _REGCMD("info",rfc2812wrapper)
+ _REGCMD("invite",rfc2812wrapper)
+ _REGCMD("join",join)
+ _REGCMD("kick",kick)
+ _REGCMD("killtimer",killtimer)
+ _REGCMD("leave",part)
+ _REGCMD("links",rfc2812wrapper)
+ _REGCMD("list",rfc2812wrapper)
+ _REGCMD("listtimers",listtimers)
+ _REGCMD("lusers",rfc2812wrapper)
+ // m_r
+ _REGCMD("me",me)
+ _REGCMD("mode",mode)
+ _REGCMD("motd",rfc2812wrapper)
+ _REGCMD("msg",privmsg)
+ _REGCMD("nick",nick)
+ _REGCMD("notice",notice)
+ _REGCMD("op",op)
+ _REGCMD("openurl",openurl)
+ _REGCMD("oper",rfc2812wrapper)
+ _REGCMD("option",option)
+ _REGCMD("parse",parse)
+ _REGCMD("part",part)
+ _REGCMD("pass",rfc2812wrapper)
+ _REGCMD("play",play)
+ _REGCMD("popup",popup)
+ _REGCMD("privmsg",privmsg)
+ _REGCMD("query",query)
+ _REGCMD("quit",quit)
+ _REGCMD("quote",raw)
+ _REGCMD("raise",raise)
+ _REGCMD("raw",raw)
+ _REGCMD("return",returnCKEYWORDWORKAROUND)
+ _REGCMD("rebind",rebind)
+ // s_z
+ _REGCMD("run",run)
+ _REGCMD("say",say)
+ _REGCMD("server",server)
+ _REGCMD("service",rfc2812wrapper)
+ _REGCMD("setmenu",setmenu)
+ _REGCMD("setreturn",setreturn)
+ _REGCMD("sockets",rfc2812wrapper)
+ _REGCMD("squery",rfc2812wrapper)
+ _REGCMD("squit",rfc2812wrapper)
+ _REGCMD("srand",srand)
+ _REGCMD("stats",rfc2812wrapper)
+ _REGCMD("time",rfc2812wrapper)
+ _REGCMD("topic",topic)
+ _REGCMD("trace",rfc2812wrapper)
+ _REGCMD("trload",trload)
+ _REGCMD("trunload",trunload)
+ _REGCMD("unban",unban)
+ _REGCMD("version",rfc2812wrapper)
+ _REGCMD("voice",voice)
+ _REGCMD("warning",warning)
+ _REGCMD("who",rfc2812wrapper)
+ _REGCMD("whois",whois)
+ _REGCMD("whowas",whowas)
+
+#undef _REGCMD
+ }
+
+
+ bool multipleModeCommand(KviKvsRunTimeContext * __pContext,KviKvsVariantList * __pParams,KviKvsSwitchList * __pSwitches,char plusminus,char flag)
+ {
+ QString szTokens;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("tokens",KVS_PT_STRING,KVS_PF_APPENDREMAINING,szTokens)
+ KVSCSC_PARAMETERS_END
+
+ KVSCSC_REQUIRE_CONNECTION
+
+ if(KVSCSC_pWindow->type() != KVI_WINDOW_TYPE_CHANNEL)
+ {
+ KVSCSC_pContext->warning(__tr2qs("This is not a channel"));
+ return true;
+ }
+
+ QStringList sl = QStringList::split(QRegExp("[, ]+"),szTokens,false);
+
+ KviQCString szFlags;
+ KviQCString szTarget = KVSCSC_pConnection->encodeText(KVSCSC_pWindow->windowName());
+ KviQCString szMessage;
+
+ int i = 0;
+ for(QStringList::Iterator it = sl.begin();it != sl.end();++it)
+ {
+ KviQCString szTxt = KVSCSC_pConnection->encodeText(*it);
+ if(!szTxt.isEmpty())
+ {
+ szFlags += flag;
+ if(szMessage.length() > 0)szMessage += " ";
+ szMessage += szTxt;
+ i++;
+ if(i >= KVSCSC_pConnection->serverInfo()->maxModeChanges())
+ {
+ if(!KVSCSC_pConnection->sendFmtData("MODE %s %c%s %s",szTarget.data(),plusminus,szFlags.data(),szMessage.data()))
+ return KVSCSC_pContext->warningNoIrcConnection();
+ i = 0;
+ szFlags = "";
+ szMessage = "";
+ }
+ }
+ }
+
+ if(i > 0)
+ {
+ if(!KVSCSC_pConnection->sendFmtData("MODE %s %c%s %s",szTarget.data(),plusminus,szFlags.data(),szMessage.data()))
+ return KVSCSC_pContext->warningNoIrcConnection();
+ }
+
+ return true;
+ }
+
+ /*
+ @doc: rfc2821wrappers
+ @title:
+ RFC2821 Wrappers
+ @type:
+ generic
+ @short:
+ Wrappers for rfc2821 commands
+ @body:
+ Some less used KVIrc commands are implemented as simple wrappers
+ around the standard [doc]rfc2821[/doc] commands.[br]
+ For example, the /OPER command will be used only by server operators
+ and probably only once per connection.[br]
+ These commands should only be needed by experienced IRC users.
+ Due to this fact, these commands have no special kind of parsing performed by KVIrc;
+ the parameters are extracted, the identifiers are parsed normally
+ and are sent to the server without any semantic check.[br]
+ This means that while OPER requires two parameters, KVIrc will not
+ complain if you send a single parameter only or use ten parameters.[br]
+ The exact parameter syntax/semantic checking is left to you.[br]
+ This also means that if some of these commands accept parameters with spaces,
+ it is left to you to add the leading ':' before the last parameter.[br]
+ You should refer to [doc]rfc2812[/doc] if any of these commands do not work properly for you.[br]
+ */
+
+ KVSCSC(rfc2812wrapper)
+ {
+ QString szText;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("text",KVS_PT_STRING,KVS_PF_OPTIONAL | KVS_PF_APPENDREMAINING,szText)
+ KVSCSC_PARAMETERS_END
+
+ KVSCSC_REQUIRE_CONNECTION
+
+ KviQCString txt = KVSCSC_pConnection->encodeText(szText);
+ KviQCString cmd = KVSCSC_pConnection->encodeText(((KviKvsTreeNodeCommand *)(KVSCSC_pContext->defaultReportLocation()))->commandName());
+
+ if(!KVSCSC_pConnection->sendFmtData("%s %s",cmd.data(),txt.data() ? txt.data() : ""))
+ return KVSCSC_pContext->warningNoIrcConnection();
+
+ return true;
+ }
+
+};
+
diff --git a/src/kvirc/kvs/kvi_kvs_coresimplecommands.h b/src/kvirc/kvs/kvi_kvs_coresimplecommands.h
new file mode 100644
index 00000000..94acbdc6
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_coresimplecommands.h
@@ -0,0 +1,126 @@
+#ifndef _KVI_KVS_CORESIMPLECOMMANDS_H_
+#define _KVI_KVS_CORESIMPLECOMMANDS_H_
+//=============================================================================
+//
+// File : kvi_kvs_coresimplecommands.h
+// Created on Fri 31 Oct 2003 00:04:25 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_kvs_variantlist.h"
+#include "kvi_kvs_switchlist.h"
+#include "kvi_kvs_parameterprocessor.h"
+
+
+#define KVSCSC(_name) bool _name(KviKvsRunTimeContext * __pContext,KviKvsVariantList * __pParams,KviKvsSwitchList * __pSwitches)
+
+#define KVSCSC_pContext __pContext
+#define KVSCSC_pParams __pParams
+#define KVSCSC_pSwitches __pSwitches
+
+#define KVSCSC_PARAMETER(a,b,c,d) KVS_PARAMETER(a,b,c,d)
+
+#define KVSCSC_PARAMETERS_BEGIN \
+ KVS_PARAMETERS_BEGIN(parameter_format_list)
+
+#define KVSCSC_PARAMETERS_END \
+ KVS_PARAMETERS_END \
+ if(!KviKvsParameterProcessor::process(KVSCSC_pParams,KVSCSC_pContext,parameter_format_list))return false;
+
+#define KVSCSC_REQUIRE_CONNECTION \
+ if(!KVSCSC_pContext->window()->context())return KVSCSC_pContext->errorNoIrcContext(); \
+ if(!KVSCSC_pContext->window()->connection())return KVSCSC_pContext->warningNoIrcConnection();
+
+#define KVSCSC_pWindow __pContext->window()
+#define KVSCSC_pConnection __pContext->window()->connection()
+#define KVSCSC_pIrcContext __pContext->context()
+
+namespace KviKvsCoreSimpleCommands
+{
+ // a_f
+ KVSCSC(away);
+ KVSCSC(back);
+ KVSCSC(ban);
+ KVSCSC(beep);
+ KVSCSC(buttonctl);
+ KVSCSC(ctcp);
+ KVSCSC(debug);
+ KVSCSC(deleteCKEYWORDWORKAROUND);
+ KVSCSC(delpopupitem);
+ KVSCSC(deop);
+ KVSCSC(devoice);
+ KVSCSC(echoprivmsg);
+ KVSCSC(echo);
+ KVSCSC(error);
+ KVSCSC(eval);
+ KVSCSC(eventctl);
+ KVSCSC(exit);
+ // g_l
+ KVSCSC(halt);
+ KVSCSC(help);
+ KVSCSC(host);
+ KVSCSC(join);
+ KVSCSC(kick);
+ KVSCSC(killtimer);
+ KVSCSC(listtimers);
+ // m_r
+ KVSCSC(me);
+ KVSCSC(mode);
+ KVSCSC(nick);
+ KVSCSC(notice);
+ KVSCSC(op);
+ KVSCSC(openurl);
+ KVSCSC(option);
+ KVSCSC(parse);
+ KVSCSC(part);
+ KVSCSC(play);
+ KVSCSC(popup);
+ KVSCSC(privmsg);
+ KVSCSC(query);
+ KVSCSC(quit);
+ KVSCSC(raise);
+ KVSCSC(raw);
+ KVSCSC(returnCKEYWORDWORKAROUND);
+ KVSCSC(rebind);
+ KVSCSC(rfc2812wrapper);
+ KVSCSC(run);
+ // s_z
+ KVSCSC(say);
+ KVSCSC(server);
+ KVSCSC(setmenu);
+ KVSCSC(setreturn);
+ KVSCSC(srand);
+ KVSCSC(topic);
+ KVSCSC(trload);
+ KVSCSC(trunload);
+ KVSCSC(unban);
+ KVSCSC(voice);
+ KVSCSC(warning);
+ KVSCSC(whois);
+ KVSCSC(whowas);
+
+ bool multipleModeCommand(KviKvsRunTimeContext * __pContext,KviKvsVariantList * __pParams,KviKvsSwitchList * __pSwitches,char plusminus,char flag);
+
+ void init();
+};
+
+#endif //!_KVI_KVS_CORESIMPLECOMMANDS_H_
diff --git a/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp b/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp
new file mode 100644
index 00000000..c3911a30
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp
@@ -0,0 +1,1277 @@
+//=============================================================================
+//
+// File : kvi_kvs_coresimplecommands_af.cpp
+// Created on Fri 31 Oct 2003 00:04:25 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_coresimplecommands.h"
+
+
+#include "kvi_window.h"
+#include "kvi_out.h"
+#include "kvi_locale.h"
+#include "kvi_app.h"
+#include "kvi_options.h"
+#include "kvi_ircview.h" // this is only for KviIrcView::NoTimestamp
+#include "kvi_debugwindow.h"
+#include "kvi_console.h"
+#include "kvi_scriptbutton.h"
+#include "kvi_iconmanager.h"
+
+#include "kvi_kvs_popupmanager.h"
+#include "kvi_kvs_eventmanager.h"
+#include "kvi_kvs_kernel.h"
+#include "kvi_kvs_object_controller.h"
+
+#ifndef COMPILE_NO_X_BELL
+ #include "kvi_xlib.h" // XBell : THIS SHOULD BE INCLUDED AS LAST!
+ #include <unistd.h> // for usleep();
+
+ #ifdef COMPILE_USE_QT4
+ #include <qx11info_x11.h>
+ #define get_xdisplay QX11Info::display
+ #else
+ #define get_xdisplay qt_xdisplay
+ #endif
+
+#endif
+
+#include "kvi_tal_tooltip.h"
+
+// kvi_app.cpp
+extern KviPointerHashTable<const char *,KviWindow> * g_pGlobalWindowDict;
+
+namespace KviKvsCoreSimpleCommands
+{
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: admin
+ @type:
+ command
+ @title:
+ admin
+ @syntax:
+ admin [target server]
+ @short:
+ Requests the admin info from a server
+ @description:
+ Requests admin information from the specified server or the current server if no [target server] is specified.[br]
+ This command is a [doc:rfc2821wrappers]RFC2821 command wrapper[/doc]; see that document for more information.[br]
+ */
+ // RFC2821 wrapper
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: away
+ @type:
+ command
+ @title:
+ away
+ @syntax:
+ away [-a | --all-networks] [<reason:string>]
+ @short:
+ Puts you into 'away' state
+ @switches:
+ !sw: -a | --all-networks
+ Set away on all networks
+ @description:
+ Puts you into 'away' state in the connection associated to the
+ current [b]IRC context[/b].[br] This command is "server based";
+ this means that the effects will be visible only after the
+ server has acknowledged the change.[br]
+ When you use this command, other people will know that you are
+ away from the keyboard, and they will know why you're not here.[br]
+ To return from being away you must use [cmd]back[/cmd].[br]
+ This command is [doc:connection_dependant_commands]connection dependant[/doc].[br]
+ @examples:
+ [example]
+ away I'm asleep. Don't wake me up.
+ [/example]
+ */
+
+ KVSCSC(away)
+ {
+ QString szReason;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("reason",KVS_PT_STRING,KVS_PF_OPTIONAL | KVS_PF_APPENDREMAINING,szReason)
+ KVSCSC_PARAMETERS_END
+
+ KVSCSC_REQUIRE_CONNECTION
+
+ if(szReason.isEmpty())szReason = KVI_OPTION_STRING(KviOption_stringAwayMessage);
+
+ if(KVSCSC_pSwitches->find('a',"all-networks"))
+ {
+ KviPointerHashTableIterator<const char *,KviWindow> it(*g_pGlobalWindowDict);
+ while(KviWindow * wnd = it.current())
+ {
+ if(wnd->type()==KVI_WINDOW_TYPE_CONSOLE)
+ {
+ KviConsole* pConsole=(KviConsole*)wnd;
+ if(pConsole->isConnected())
+ pConsole->connection()->sendFmtData("AWAY :%s",
+ pConsole->connection()->encodeText(szReason).data()
+ );
+ }
+ ++it;
+ }
+ } else {
+ KviQCString szR = KVSCSC_pConnection->encodeText(szReason);
+ if(!(KVSCSC_pConnection->sendFmtData("AWAY :%s",szR.data())))
+ return KVSCSC_pContext->warningNoIrcConnection();
+ }
+
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: back
+ @type:
+ command
+ @title:
+ back
+ @syntax:
+ back [-a | --all-networks]
+ @switches:
+ !sw: -a | --all-networks
+ Set back on all networks
+ @short:
+ Allows you to return from being away
+ @description:
+ Using this command makes you return from being [cmd]away[/cmd] in the connection associated to the
+ current [b]IRC context[/b].[br] This command is "server based";
+ this means that the effects will be visible only after the
+ server has acknowledged the change.[br]
+ This command is [doc:connection_dependant_commands]connection dependant[/doc].[br]
+ @examples:
+ [example]
+ back
+ [/example]
+ */
+
+ KVSCSC(back)
+ {
+
+ if(KVSCSC_pSwitches->find('a',"all-networks"))
+ {
+ KviPointerHashTableIterator<const char *,KviWindow> it(*g_pGlobalWindowDict);
+ while(KviWindow * wnd = it.current())
+ {
+ if(wnd->type()==KVI_WINDOW_TYPE_CONSOLE)
+ {
+ KviConsole* pConsole=(KviConsole*)wnd;
+ if(pConsole->isConnected())
+ pConsole->connection()->sendFmtData("AWAY");
+ }
+ ++it;
+ }
+ } else {
+ KVSCSC_REQUIRE_CONNECTION
+
+ if(!(KVSCSC_pConnection->sendFmtData("AWAY")))
+ return KVSCSC_pContext->warningNoIrcConnection();
+ }
+
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: ban
+ @type:
+ command
+ @title:
+ ban
+ @syntax:
+ ban <mask_list>
+ @short:
+ Sets ban masks for the channel
+ @description:
+ Sets the ban masks specified in the <mask_list>,
+ which is a comma separated list of nicknames.
+ This command works only if executed in a channel window.
+ The command is translated to a set of MODE messages containing
+ a variable number of +b flags.
+ This command is [doc:connection_dependant_commands]connection dependant[/doc].
+ @examples:
+ [example]
+ ban Maxim,Gizmo!*@*,*!root@*
+ [/example]
+ @seealso:
+ [cmd]op[/cmd],
+ [cmd]deop[/cmd],
+ [cmd]voice[/cmd],
+ [cmd]devoice[/cmd],
+ [cmd]unban[/cmd]
+ */
+
+ KVSCSC(ban)
+ {
+ return multipleModeCommand(__pContext,__pParams,__pSwitches,'+','b');
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: beep
+ @type:
+ command
+ @title:
+ beep
+ @syntax:
+ beep [-p=<pitch:uint>] [-d=<duration:uint>] [-s] [volume:uint]
+ @short:
+ Beep beep!
+ @switches:
+ !sw: -p=<pitch:uint> | --pitch=<pitch:uint>
+ Sets the bell to the specified pitch, if possible
+ !sw: -d=<duration:uint> | --duration=<duration:uint>
+ Sets the duration of the beep to <duration> milliseconds
+ !sw: -s | --synchronous
+ Causes KVIrc to wait for completion of the beeping before
+ returning from this command
+ @description:
+ Beeps (when possible :D)[br]
+ ...[br]
+ No , really..[br]
+ This command rings the bell on the keyboard (the PC speaker).
+ The volume must be in range 0-100; the default is 100.[br]
+ The pitch is specified in Hz and must be positive.[br]
+ The duration is specified in milliseconds.[br]
+ An invalid (or unspecified) pitch, volume or duration
+ makes KVIrc to use the default values set by the system.[br]
+ The duration of the bell is only indicative and
+ can be shortened by a subsequent call to /beep (that
+ will override the currently playing one).[br]
+ On Windows, the bell is always synchronous and it is not
+ event granted that the bell will be a bell at all... you might
+ get the system default sound instead.. so be careful if you
+ want to write portable scripts :)[br]
+ If the -s switch is specified the bell becomes synchronous:
+ KVIrc waits the bell to complete before continuing.[br]
+ Obviously -s is senseless on Windows.[br]
+ (WARNING : the main KVIrc thread is stopped in that case
+ so if you play long notes (duration > 100)
+ the entire application will appear to freeze for a while).[br]
+ The precision of the bell pitch, duration and
+ volume is strongly dependant on the system and the underlying hardware.[br]
+ */
+
+ KVSCSC(beep)
+ {
+ kvs_uint_t uVolume;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("volume",KVS_PT_UINT,KVS_PF_OPTIONAL,uVolume)
+ KVSCSC_PARAMETERS_END
+
+ kvs_int_t pitch = -1;
+ kvs_int_t duration = -1;
+ bool bSync = (KVSCSC_pSwitches->find('s',"sync") != 0);
+ bool bOk = false;
+
+ KviKvsVariant * pPitch = KVSCSC_pSwitches->find('p',"pitch");
+ if(pPitch)
+ {
+ if(!pPitch->asInteger(pitch))
+ {
+ KVSCSC_pContext->warning(__tr2qs("Invalid pitch value: using default"));
+ pitch = -1;
+ }
+ }
+
+ KviKvsVariant * pDuration = KVSCSC_pSwitches->find('d',"duration");
+ if(pDuration)
+ {
+ if(!pDuration->asInteger(duration))
+ {
+ KVSCSC_pContext->warning(__tr2qs("Invalid duration value: using default"));
+ duration = -1;
+ }
+ }
+
+ if((uVolume > 100) || (uVolume < 1))uVolume = 100;
+
+#ifdef COMPILE_ON_WINDOWS
+ Beep(pitch,duration);
+#else
+ #ifndef COMPILE_NO_X_BELL
+
+
+
+ XKeyboardState st;
+ XKeyboardControl ctl;
+
+ XGetKeyboardControl(get_xdisplay(),&st);
+
+ unsigned long mask = KBBellPercent;
+ ctl.bell_percent = uVolume;
+ if(pitch >= 0)
+ {
+ ctl.bell_pitch = pitch;
+ mask |= KBBellPitch;
+ }
+ if(duration >= 0)
+ {
+ ctl.bell_duration = duration;
+ mask |= KBBellDuration;
+ }
+ XChangeKeyboardControl(get_xdisplay(),mask,&ctl);
+
+ XBell(get_xdisplay(),100);
+
+ if(bSync)
+ {
+ if(duration >= 0)usleep(duration * 1000);
+ else usleep(st.bell_duration * 1000);
+ }
+
+ ctl.bell_pitch = st.bell_pitch;
+ ctl.bell_duration = st.bell_duration;
+ ctl.bell_percent = st.bell_percent;
+
+ XChangeKeyboardControl(get_xdisplay(),mask,&ctl);
+
+ #endif //COMPILE_NO_X_BELL
+#endif
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: buttonctl
+ @title:
+ buttonctl
+ @type:
+ command
+ @short:
+ changes user definable buttons
+ @syntax:
+ buttonctl [-q] <type:string> <name:string> <operation:string> [parameter:string]
+ @switches:
+ !sw: -q | --quiet
+ Run quietly
+ @description:
+ Changes an existing user defined button.[br]
+ <type_unused> is ignored and present only for backward compatibility.[br]
+ <name> is the name of the button.[br]
+ <operation> may be one of the constant strings "enable", "disable", "image",
+ "text".[br]
+ Operations "enable" and "disable" do not require the fourth [parameter] and have
+ the obvious meaning.[br] Operation "image" requires the [parameter] to be
+ a valid [doc:image_id]image_id[/doc] and sets the button image.[br]
+ Operation "text" requires the [parameter] (and in fact all the following ones)
+ to be a string containing the button text label.[br]
+ The <operation> constants may be abbreviated, even to the single letters 'e','d','i' and 't'.[br]
+ The -q switch causes the command to be quiet about errors and warnings.[br]
+ @seealso:
+ [cmd]button[/cmd]
+ */
+
+//#warning "ALSO /HELP must NOT interpret the identifiers!"
+//#warning "ALSO /DEBUG that relays to the DEBUG WINDOW"
+
+ KVSCSC(buttonctl)
+ {
+ QString tbTypeUnused,tbName,tbOp,tbPar;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("type",KVS_PT_STRING,0,tbTypeUnused)
+ KVSCSC_PARAMETER("name",KVS_PT_STRING,0,tbName)
+ KVSCSC_PARAMETER("operation",KVS_PT_STRING,0,tbOp)
+ KVSCSC_PARAMETER("parameter",KVS_PT_STRING,KVS_PF_OPTIONAL,tbPar)
+ KVSCSC_PARAMETERS_END
+
+ KviScriptUserButton * pButton = 0;
+
+ if(!KVSCSC_pWindow->buttonContainer())
+ {
+ if(!KVSCSC_pSwitches->find('q',"quiet"))KVSCSC_pContext->warning(__tr2qs("The specified window has no button containers"));
+ return true;
+ }
+
+ pButton = (KviScriptUserButton *)(KVSCSC_pWindow->buttonContainer())->child(tbName,"KviWindowScriptButton");
+
+ if(!pButton)
+ {
+ if(!KVSCSC_pSwitches->find('q',"quiet"))KVSCSC_pContext->warning(__tr2qs("No button with type %Q named %Q"),&tbTypeUnused,&tbName);
+ return true;
+ }
+ QChar o;
+ if (tbOp.length() > 0) o=tbOp[0];
+ else o=QChar('x');
+
+ // QChar o = tbOp.length() > 0 ? tbOp[0] : QChar('x');
+
+ switch(o.unicode())
+ {
+ case 't':
+ KviTalToolTip::remove(pButton);
+ KviTalToolTip::add(pButton,tbPar);
+ pButton->setButtonText(tbPar);
+ break;
+ case 'i':
+ if(!tbPar.isEmpty())
+ {
+ QPixmap * pix = g_pIconManager->getImage(tbPar);
+ if(pix)
+ {
+ pButton->setButtonPixmap(*pix);
+ } else {
+ if(!KVSCSC_pSwitches->find('q',"quiet"))KVSCSC_pContext->warning(__tr2qs("Can't find the icon '%Q'"),&tbPar);
+ }
+ }
+ break;
+ case 'e':
+ pButton->setEnabled(true);
+ break;
+ case 'd':
+ pButton->setEnabled(false);
+ break;
+ }
+ return true;
+
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: codepage
+ @type:
+ command
+ @title:
+ codepage
+ @syntax:
+ codepage <encoding name>
+ @short:
+ Tries to set the codepage on server
+ @description:
+ This is a not-widely implemented extension
+ that allows the user to set the codepage mapping
+ on server.
+ This command is a [doc:rfc2821wrappers]RFC2821 command wrapper[/doc]; see that document for more information.[br]
+ */
+ // RFC2821 wrapper
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: ctcp
+ @type:
+ command
+ @title:
+ ctcp
+ @syntax:
+ ctcp [-n] <target:string> <ctcp_data:string>
+ @short:
+ Sends a CTCP message
+ @description:
+ Sends a CTCP message to the specified <target>.[br]
+ The target may be a nickname , a channel, or a comma separated list of nicknames.[br]
+ The <ctcp_data> is a string containing the ctcp type followed by the ctcp parameters.[br]
+ For more info take a look at the [doc:ctcp_handling]ctcp protocol implementation notes[/doc].[br]
+ The CTCP message will be a request (sent through a PRIVMSG) unless the -n switch
+ specified: in that case it will be a reply (sent through a NOTICE).[br]
+ If <ctcp_data> is the single string "ping" then a trailing time string argument
+ is added in order to determine the round trip time when the ping reply comes back.
+ To override this behaviour simply specify your own time string parameter.[br]
+ This command is [doc:connection_dependant_commands]connection dependant[/doc].[br]
+ @examples:
+ [example]
+ ctcp Pragma VERSION
+ [/example]
+ */
+
+ KVSCSC(ctcp)
+ {
+ QString szTarget,szCtcpData;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("target",KVS_PT_NONEMPTYSTRING,0,szTarget)
+ KVSCSC_PARAMETER("ctcp_data",KVS_PT_STRING,KVS_PF_OPTIONAL | KVS_PF_APPENDREMAINING,szCtcpData)
+ KVSCSC_PARAMETERS_END
+
+ KVSCSC_REQUIRE_CONNECTION
+
+ if(KviQString::equalCI(szCtcpData,"PING"))
+ {
+ struct timeval tv;
+ kvi_gettimeofday(&tv,0);
+ KviQString::appendFormatted(szCtcpData," %d.%d",tv.tv_sec,tv.tv_usec);
+ }
+
+ KviQCString szT = KVSCSC_pConnection->encodeText(szTarget);
+ KviQCString szD = KVSCSC_pConnection->encodeText(szCtcpData);
+
+ if(!(KVSCSC_pConnection->sendFmtData("%s %s :%c%s%c",
+ KVSCSC_pSwitches->find('n',"notice") ? "NOTICE" : "PRIVMSG",szT.data(),0x01,szD.data(),0x01)))
+ return KVSCSC_pContext->warningNoIrcConnection();
+
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: debug
+ @type:
+ command
+ @title:
+ debug
+ @syntax:
+ debug <text>
+ @short:
+ Outputs text to the debug window
+ @switches:
+ @description:
+ Outputs the &lt;text&gt; to the debug window.[br]
+ @seealso:
+ */
+
+ KVSCSC(debug)
+ {
+ QString szAll;
+ KVSCSC_pParams->allAsString(szAll);
+ KviWindow * pWnd = KviDebugWindow::getInstance();
+ pWnd->outputNoFmt(KVI_OUT_NONE,szAll);
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: delete
+ @type:
+ command
+ @title:
+ delete
+ @syntax:
+ delete [-q] [-i] <objectHandle>
+ @short:
+ Destroys an object
+ @switches:
+ !sw: -q | --quiet
+ Causes the command to run quietly
+ !sw: -i | --immediate
+ Causes the object to be destroyed immediately
+ instead of simply scheduling its later deletion.
+ @description:
+ Schedules for destruction the object designed by <objectHandle>.
+ This command is internally aliased to [cmd]destroy[/cmd].
+ Please note that the object is NOT immediately destroyed:
+ it will be destroyed when KVIrc returns to the main event loop,
+ so after the current script code part has been executed.
+ This behaviour makes the object destruction safe in any
+ part of the script, but may lead to problems when
+ using signals and slots.[br]
+ For example, when you delete an object that emits some signals,
+ the signals may be still emitted after the delete call.
+ You have to disconnect the signals explicitly if you don't want it
+ to happen.[br]
+ Alternatively you can use the -i switch: it causes the object
+ to be destructed immediately but is intrinsicly unsafe:
+ in complex script scenarios it may lead to a SIGSEGV;
+ usually when called from one of the deleted object function
+ handlers, or from a slot connected to one of the deleted object
+ signals. Well, it actually does not SIGSEGV, but I can't guarantee it;
+ so, if use the -i switch, test your script 10 times before releasing it.
+ The -q switch causes the command to run a bit more silently: it still
+ complains if the parameter passed is not an object reference, but
+ it fails silently if the reference just points to an inexisting object (or is null).
+ @examples:
+ [example]
+ [/example]
+ */
+
+ /*
+ @doc: destroy
+ @type:
+ command
+ @title:
+ destroy
+ @syntax:
+ destroy [-q] [-i] <objectHandle>
+ @short:
+ Destroys an object
+ @description:
+ This is a builtin alias for the command [cmd]delete[/cmd]
+ */
+
+ KVSCSC(deleteCKEYWORDWORKAROUND)
+ {
+ kvs_hobject_t hObject;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("objectHandle",KVS_PT_HOBJECT,0,hObject)
+ KVSCSC_PARAMETERS_END
+ if(hObject == (kvs_hobject_t)0)
+ {
+ if(!KVSCSC_pSwitches->find('q',"quiet"))
+ KVSCSC_pContext->warning(__tr2qs("Can't delete a null object reference"));
+ } else {
+ KviKvsObject * o = KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if(!o)
+ {
+ if(!KVSCSC_pSwitches->find('q',"quiet"))
+ KVSCSC_pContext->warning(__tr2qs("Can't delete an inexisting object"));
+ } else {
+ if(KVSCSC_pSwitches->find('i',"immediate"))
+ o->dieNow();
+ else
+ o->die();
+ }
+ }
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: delpopupitem
+ @type:
+ command
+ @title:
+ delpopupitem
+ @syntax:
+ delpopupitem [-d] [-q] <popupname:string> <item_id:string>
+ @short:
+ Deletes an item from a popup
+ @switches:
+ !sw: -q | --quiet
+ Run quietly
+ !sw: -d | --deep
+ Search the whole popup tree instead of only the first level
+ @description:
+ Deletes the item specified by <id> from the poup <popupname>.
+ If the -d flag is specified then the item with the specified
+ <id> is seached in the whole popup tree (containing submenus)
+ otherwise it is searched only in the first level.[br]
+ If the -q flag is specified the command does not complain
+ about inexisting items or inexisting popup menus.[br]
+ See [cmd]defpopup[/cmd] for more informations.[br]
+ @seealso:
+ [cmd]defpopup[/cmd], [cmd]popup[/cmd]
+ */
+ // FIXME: #warning "Separator should have the expression too ?"
+
+
+ KVSCSC(delpopupitem)
+ {
+ QString szPopupName,szItemId;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("popupname",KVS_PT_NONEMPTYSTRING,0,szPopupName)
+ KVSCSC_PARAMETER("item_id",KVS_PT_NONEMPTYSTRING,0,szItemId)
+ KVSCSC_PARAMETERS_END
+
+ KviKvsPopupMenu * p = KviKvsPopupManager::instance()->lookup(szPopupName);
+ if(!p)
+ {
+ if(!KVSCSC_pSwitches->find('q',"quiet"))
+ KVSCSC_pContext->warning(__tr2qs("Inexisting popup \"%Q\""),&szPopupName);
+ return true;
+ }
+
+ if(p->isLocked())
+ {
+ KVSCSC_pContext->error(__tr2qs("Popup menu self-modification is not allowed (the popup is probably open)"));
+ return false;
+ }
+
+ if(!p->removeItemByName(szItemId,KVSCSC_pSwitches->find('d',"deep")))
+ {
+ if(!KVSCSC_pSwitches->find('q',"quiet"))
+ KVSCSC_pContext->warning(__tr2qs("The menu item with id \"%Q\" does not exist in popup \"%Q\""),&szItemId,&szPopupName);
+ }
+
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: deop
+ @type:
+ command
+ @title:
+ deop
+ @syntax:
+ deop <nickname_list>
+ @short:
+ Removes chanop status from the specified users
+ @description:
+ Removes channel operator status to the users specified in <nickname_list>,
+ which is a comma separated list of nicknames.
+ This command works only if executed in a channel window.
+ The command is translated to a set of MODE messages containing
+ a variable number of -o flags.
+ This command is [doc:connection_dependant_commands]connection dependant[/doc].
+ @examples:
+ [example]
+ deop Pragma,Crocodile
+ [/example]
+ @seealso:
+ [cmd]op[/cmd], [cmd]voice[/cmd], [cmd]devoice[/cmd]
+ */
+
+ KVSCSC(deop)
+ {
+ return multipleModeCommand(__pContext,__pParams,__pSwitches,'-','o');
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: devoice
+ @type:
+ command
+ @title:
+ devoice
+ @syntax:
+ devoice <nickname_list>
+ @short:
+ Removes voice flag for the specified users
+ @description:
+ Removes the voice flag for the users specified in <nickname_list>,
+ which is a comma separated list of nicknames.
+ This command works only if executed in a channel window.
+ The command is translated to a set of MODE messages containing
+ a variable number of -v flags.
+ This command is [doc:connection_dependant_commands]connection dependant[/doc].
+ @examples:
+ [example]
+ devoice Pragma,Crocodile
+ [/example]
+ @seealso:
+ [cmd]op[/cmd], [cmd]deop[/cmd], [cmd]voice[/cmd]
+ */
+
+ KVSCSC(devoice)
+ {
+ return multipleModeCommand(__pContext,__pParams,__pSwitches,'-','v');
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: die
+ @type:
+ command
+ @title:
+ die
+ @syntax:
+ die <message:text>
+ @short:
+ Prints an error message and stops the script
+ @description:
+ Prints an error message and stops the current script
+ This command is equivalent to [cmd]error[/cmd]
+ */
+ // Internally aliased to error
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: echo
+ @type:
+ command
+ @title:
+ echo
+ @syntax:
+ echo [-d] [-w=<window_id>] [-i=<icon_number>] [-n] <text>
+ @short:
+ Outputs text to a KVirc window
+ @switches:
+ !sw: -w=<window_id> | --window=<window_id>
+ Causes the output to be redirected to the window specified by &lt;window_id&gt
+ !sw: -i=<icon_number> | --icon=<icon_number>
+ Causes the output to use the icon & color scheme specified by &lt;icon_number&gt
+ !sw: -n | --no-timestamp
+ Disables the message timestamping
+ !sw: -d | --debug
+ Send the output to the debug window (takes precedence over -w)
+ @description:
+ Outputs the &lt;text&gt; to the current window.[br]
+ If the 'w' switch is present , outputs the &lt;text&gt;
+ to the specified window instead of the current one.
+ The <window_id&> parameter is the [doc:window_naming_conventions]global ID[/doc] of the window
+ that has to be used.[br]
+ If the 'i' switch is given , it uses the specified
+ icon scheme (icon and colors) , otherwise it uses
+ the default one (0).[br]
+ If the -d switch is used then the output is sent to a special
+ window called "Debug" (the window is created if not existing yet).
+ This is useful for script debugging purposes (you get the output
+ in Debug regardless of the window that the executed command is attacched to).
+ The KVIrc view widgets support clickable links that can be realized by using special [doc:escape_sequences]escape sequences[/doc].[br]
+ The 'n' switch disables timestamping so you can output your own timestamp
+ or not timestamp at all.[br]
+ @examples:
+ [example]
+ echo Hey! this is my first echo test!
+ echo -i=10 This text has a specified icon and colors
+ echo --icon=[fnc]$icon[/fnc](parser error) this has the colors of the parser error messages
+ [/example]
+ @seealso:
+ [fnc]$window[/fnc],
+ [doc:window_naming_conventions]window naming conventions documentation[/doc]
+ */
+
+ KVSCSC(echo)
+ {
+ QString szAll;
+ KVSCSC_pParams->allAsString(szAll);
+
+ kvs_int_t iMsgType = KVI_OUT_NONE;
+ KviWindow * pWnd = KVSCSC_pContext->window();
+
+ if(!KVSCSC_pSwitches->isEmpty())
+ {
+ KviKvsVariant * v;
+ if((v = KVSCSC_pSwitches->find('w',"window")))
+ {
+ QString szWnd;
+ v->asString(szWnd);
+ //#warning "FIXME: the window database is not unicode! (we even could keep integer window id's at this point!)"
+ pWnd = g_pApp->findWindow(szWnd.utf8().data());
+ if(!pWnd)
+ {
+ KVSCSC_pContext->warning(__tr2qs("The argument of the -w switch did not evaluate to a valid window id: using default"));
+ pWnd = KVSCSC_pContext->window();
+ }
+ }
+
+ if((v = KVSCSC_pSwitches->find('i',"icon")))
+ {
+ if(!v->asInteger(iMsgType))
+ {
+ KVSCSC_pContext->warning(__tr2qs("The argument of the i switch did not evaluate to a number: using default"));
+ iMsgType = KVI_OUT_NONE;
+ } else {
+ iMsgType = iMsgType % KVI_NUM_MSGTYPE_OPTIONS;
+ }
+ }
+
+ if(KVSCSC_pSwitches->find('d',"debug"))
+ {
+ pWnd = KviDebugWindow::getInstance();
+ }
+ }
+
+ int iFlags = KVSCSC_pSwitches->find('n',"no-timestamp") ? KviIrcView::NoTimestamp : 0;
+ pWnd->outputNoFmt(iMsgType,szAll,iFlags);
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: echoprivmsg
+ @type:
+ command
+ @title:
+ echoprivmsg
+ @syntax:
+ echoprivmsg [switches] <nick:string> <user:string> <host:string> <text:string>
+ @short:
+ Outputs text to a KVIrc window
+ @switches:
+ !sw: -p[=<nick_prefix>] | --prefix[=<prefix>]
+ The message is printed with the specified custom nickname prefix.
+ If <nick_prefix> is omitted then an empty string is assumed.
+ !sw: -s[=<nick_suffix>] | --suffix[=<nicksuffix>]
+ The message is printed with the specified custom nickname suffix.
+ If <nick_suffix> is omitted then an empty string is assumed.
+ !sw: -w=<window_id> | --window=<window_id>
+ The message is printed to the window specified by [doc:window_naming_conventions]window_id[/doc]
+ !sw: -i=<color_set> | --color-set=<color_set>
+ Causes the message to use the specified icon scheme (icon and colors).
+ !sw: -n | --no-highlighting
+ Do not apply the highlighting rules
+ !sw: -x | --no-notifier
+ Never cause the notifier window to pop up
+ !sw: -f | --no-flashing
+ Never cause the window taskbar entry to flash (this works only on some platforms)
+ @description:
+ Outputs a <text> to the current window in the privmsg format.[br]
+ The <nick> <user> and <host> parameters are formatted
+ as specified by the user preferences (for example
+ the nick may use smart colorisation).
+ If you don't know the username and host then just use '*' for
+ that parameters.
+ The message will also get the highlighting rules applied.
+ If the 'w' switch is present, outputs <text>
+ to the specified window instead of the current one.
+ The <window_id> parameter is the [doc:window_naming_conventions]global ID[/doc] of the window
+ that has to be used.[br]
+ Please note that this is not the same as the standard
+ [doc:command_rebinding]-r rebinding switch[/doc]:
+ -w causes the specified window to be used only for output,
+ but the command parameters are evaluated in the current window.[br]
+ If the 'i' switch is given , it uses the specified
+ icon scheme (icon and colors) , otherwise it uses
+ the default one (0).[br]
+ If the -n switch is present then the highlighting rules
+ are not applied.[br]
+ If the -x switch is present then the message will never cause
+ the notifier window to be popped up.[br]
+ If the -f switch is present then the message will never cause
+ the system taskbar to flash.[br]
+ Actually -x and -f have a sense only if highlighting is used and thus -n is not present.[br]
+ For more informations about the icon/color schemes see [fnc]$msgtype[/fnc].
+ The KVIrc view widgets support clickable sockets that can be realized by using special [doc:escape_sequences]escape sequences[/doc].[br]
+ @examples:
+ [example]
+ echoprivmsg Test * * This is a test message
+ echoprivmsg -i=$msgtype(ChanPrivmsgCrypted) Pragma pragma staff.kvirc.net Hi people! :)
+ [/example]
+ @seealso:
+ [fnc]$window[/fnc],
+ [fnc]$window.caption[/fnc],
+ [fnc]$msgtype[/fnc],
+ [cmd]echo[/cmd],
+ [doc:window_naming_conventions]Window Naming Conventions[/doc]
+ */
+
+ KVSCSC(echoprivmsg)
+ {
+ QString szNick,szUser,szHost,szText;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("nick",KVS_PT_NONEMPTYSTRING,0,szNick)
+ KVSCSC_PARAMETER("user",KVS_PT_STRING,0,szUser)
+ KVSCSC_PARAMETER("host",KVS_PT_STRING,0,szHost)
+ KVSCSC_PARAMETER("text",KVS_PT_STRING,KVS_PF_OPTIONAL | KVS_PF_APPENDREMAINING,szText)
+ KVSCSC_PARAMETERS_END
+
+ int type = KVI_OUT_NONE;
+ KviWindow * pWnd = KVSCSC_pWindow;
+ KviConsole * pConsole = pWnd->console();
+ if(!pConsole)pConsole = g_pApp->activeConsole();
+
+ KviKvsVariant * v;
+
+ if(v = KVSCSC_pSwitches->find('i',"color-set"))
+ {
+ kvs_int_t msgType;
+ if(v->asInteger(msgType))
+ {
+ if(msgType < 0)msgType = -msgType;
+ type = (int)(msgType % KVI_NUM_MSGTYPE_OPTIONS);
+ } else KVSCSC_pContext->warning(__tr2qs("Invalid color-set specification, using default"));
+ }
+
+ if(v = KVSCSC_pSwitches->find('w',"window"))
+ {
+ QString szWin;
+ v->asString(szWin);
+ KviStr window = szWin;
+ pWnd = g_pApp->findWindow(window.ptr());
+ if(!pWnd)
+ {
+ KVSCSC_pContext->warning(__tr2qs("Window '%s' not found, using current one"),window.ptr());
+ pWnd = KVSCSC_pWindow;
+ }
+ }
+
+ QString szPrefix,szSuffix;
+ bool bPrefix = false;
+ bool bSuffix = false;
+
+ if(v = KVSCSC_pSwitches->find('p',"prefix"))
+ {
+ v->asString(szPrefix);
+ bPrefix = true;
+ }
+ if(v = KVSCSC_pSwitches->find('s',"suffix"))
+ {
+ v->asString(szSuffix);
+ bSuffix = true;
+ }
+
+ int iFlags = 0;
+ if(KVSCSC_pSwitches->find('n',"no-highlighting"))iFlags |= KviConsole::NoHighlighting;
+ if(KVSCSC_pSwitches->find('f',"no-flashing"))iFlags |= KviConsole::NoWindowFlashing;
+ if(KVSCSC_pSwitches->find('x',"no-notifier"))iFlags |= KviConsole::NoNotifier;
+
+ pConsole->outputPrivmsg(pWnd,type,
+ szNick,szUser,szHost,szText,
+ iFlags,
+ bPrefix ? szPrefix : QString::null,bSuffix ? szSuffix : QString::null);
+
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: error
+ @type:
+ command
+ @title:
+ error
+ @syntax:
+ error <message:text>
+ @short:
+ Prints an error message and stops the script
+ @description:
+ Prints an error message and stops the current script
+ This command is equivalent to [cmd]die[/cmd]
+ @seealso:
+ [cmd]warning[/cmd]
+ */
+
+ KVSCSC(error)
+ {
+#ifdef COMPILE_NEW_KVS
+ QString szAll;
+ KVSCSC_pParams->allAsString(szAll);
+ KVSCSC_pContext->error("%Q",&szAll);
+#endif
+ return false;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: eval
+ @type:
+ command
+ @title:
+ eval
+ @syntax:
+ eval [-q] [-r=<window>] <command>
+ @switches:
+ !sw: -q | --quiet
+ Disable any error output
+ !sw: -f | --force
+ Continue execution even if <command> fails with an error
+ @short:
+ Change the behaviour of a set of commands
+ @description:
+ This command is useful to execute variable command sequences.[br]
+ <command> is first evaluated as a normal parameter (thus identifiers
+ and variables are substituted) then the evaluated string is executed
+ as a command sequence.[br]
+ -q causes eval to run quietly and don't display any errors in the inner command.[br]
+ -f causes eval to ignore the errors inside <command> and continue execution.[br]
+ This command may be used to rebind the <command> to a specified window.
+ <command> shares the local variables with this command scope so you
+ can easily exchange data with it.
+ Remember that <command> is still a normal parameter and it must be
+ enclosed in quotes if youwant it to be a complex command sequence.
+ eval propagates the <command> return value.[br]
+ @examples:
+ [example]
+ [comment]# evaluate a variable command[/comment]
+ [cmd]if[/cmd](%somecondition)%tmp = "echo yeah"
+ else %tmp = "echo -i=10 yeah"
+ eval %tmp
+ [comment]# Rebind the command to the #linux channel to get the user list[/comment]
+ eval -r=[fnc]$channel[/fnc](#linux) "%Nicks[]=$chan.array;"
+ [comment]# A nice alias that allows iterating commands through all the consoles[/comment]
+ [comment]# This is by LatinSuD :)[/comment]
+ [cmd]alias[/cmd](iterate)
+ {
+ %ctxt[]=[fnc]$window.list[/fnc](console,all)
+ [cmd]for[/cmd](%i=0;%i<%ctxt[]#;%i++)
+ {
+ [cmd]eval[/cmd] -r=%ctxt[%i] $0-
+ }
+ }
+ iterate [cmd]echo[/cmd] Hi ppl! :)
+ [comment]# A little bit shorter (but less "colorful") version might be...[/comment]
+ [cmd]alias[/cmd](iterate)
+ {
+ [cmd]foreach[/cmd](%x,[fnc]$window.list[/fnc](console,all))
+ [cmd]eval[/cmd] -r=%x $0-;
+ }
+ iterate [cmd]echo[/cmd] Hi again!
+ [comment]# Evaluate a command block[/comment]
+ eval "{ echo First command!; echo Second command!; }"
+ [/example]
+ */
+
+ KVSCSC(eval)
+ {
+ QString szCommands;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("commands",KVS_PT_STRING,KVS_PF_APPENDREMAINING,szCommands)
+ KVSCSC_PARAMETERS_END
+
+ KviKvsScript s("eval::inner",szCommands);
+ int iRunFlags = 0;
+ if(KVSCSC_pContext->reportingDisabled() || KVSCSC_pSwitches->find('q',"quiet"))
+ iRunFlags |= KviKvsScript::Quiet;
+ bool bRet = s.run(KVSCSC_pContext,iRunFlags) ? true : false;
+ if(!bRet)
+ {
+ if(!KVSCSC_pSwitches->find('f',"force"))
+ return false;
+ KVSCSC_pContext->clearError();
+ }
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: eventctl
+ @title:
+ eventctl
+ @type:
+ command
+ @short:
+ Controls the execution of event handlers
+ @syntax:
+ eventctl [-u] [-e] [-d] [-q] <event_name:string> <handler_name:string> [parameters]
+ @switches:
+ !sw: -u | --unregister
+ Unregisters the specified handler
+ !sw: -e | --enable
+ Enables the specified handler
+ !sw: -d | --disable
+ Disables the specified handler
+ !sw: -q | --quiet
+ Do not print any warnings
+ @description:
+ Performs control actions on the handler <handler_name> for
+ the event <event_name>.
+ Without any switch it triggers the handler for testing purposes,
+ eventually passing [parameters].[br]
+ With the -u switch the handler <handler_name> is unregistered.[br]
+ With the -d swtich is is disabled (so it is never executed)
+ and with -e is enabled again.[br]
+ The <event_name> may be one of the kvirc-builtin event names
+ or a numeric code (from 0 to 999) of a raw server message.[br]
+ @seealso:
+ [cmd]event[/cmd]
+ */
+ KVSCSC(eventctl)
+ {
+ QString szEventName,szHandlerName;
+ KviKvsVariantList vList;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("event_name",KVS_PT_NONEMPTYSTRING,0,szEventName)
+ KVSCSC_PARAMETER("handler_name",KVS_PT_NONEMPTYSTRING,0,szHandlerName)
+ KVSCSC_PARAMETER("parameters",KVS_PT_VARIANTLIST,KVS_PF_OPTIONAL,vList)
+ KVSCSC_PARAMETERS_END
+
+ bool bOk;
+ int iNumber = szEventName.toInt(&bOk);
+ bool bIsRaw = (bOk && (iNumber >= 0) && (iNumber < 1000));
+
+ if(bIsRaw)
+ {
+ if(!KviKvsEventManager::instance()->isValidRawEvent(iNumber))
+ {
+ if(!KVSCSC_pSwitches->find('q',"quiet"))
+ KVSCSC_pContext->warning(__tr2qs("No such event (%Q)"),&szEventName);
+ return true;
+ }
+ } else {
+ iNumber = KviKvsEventManager::instance()->findAppEventIndexByName(szEventName);
+ if(!KviKvsEventManager::instance()->isValidAppEvent(iNumber))
+ {
+ if(!KVSCSC_pSwitches->find('q',"quiet"))
+ KVSCSC_pContext->warning(__tr2qs("No such event (%Q)"),&szEventName);
+ return true;
+ }
+ }
+
+ if(KVSCSC_pSwitches->find('u',"unregister"))
+ {
+ // unregister it
+ if(bIsRaw)
+ {
+ if(!KviKvsEventManager::instance()->removeScriptRawHandler(iNumber,szHandlerName))
+ if(!KVSCSC_pSwitches->find('q',"quiet"))
+ KVSCSC_pContext->warning(__tr2qs("No handler '%Q' for raw numeric event '%d'"),&szHandlerName,iNumber);
+ } else {
+ if(!KviKvsEventManager::instance()->removeScriptAppHandler(iNumber,szHandlerName))
+ if(!KVSCSC_pSwitches->find('q',"quiet"))
+ KVSCSC_pContext->warning(__tr2qs("No handler '%Q' for event '%Q'"),&szHandlerName,&szEventName);
+ }
+ } else if(KVSCSC_pSwitches->find('e',"enable") || KVSCSC_pSwitches->find('d',"disable"))
+ {
+ // enable it
+ if(bIsRaw)
+ {
+ if(!KviKvsEventManager::instance()->enableScriptRawHandler(iNumber,szHandlerName,KVSCSC_pSwitches->find('e',"enable")))
+ if(!KVSCSC_pSwitches->find('q',"quiet"))
+ KVSCSC_pContext->warning(__tr2qs("No handler '%Q' for raw numeric event '%d'"),&szHandlerName,iNumber);
+ } else {
+ if(!KviKvsEventManager::instance()->enableScriptAppHandler(iNumber,szHandlerName,KVSCSC_pSwitches->find('e',"enable")))
+ if(!KVSCSC_pSwitches->find('q',"quiet"))
+ KVSCSC_pContext->warning(__tr2qs("No handler '%Q' for event '%Q'"),&szHandlerName,&szEventName);
+ }
+ } else {
+ // trigger it
+ KviKvsScriptEventHandler * h;
+ QString code;
+
+ if(bIsRaw)
+ {
+ h = KviKvsEventManager::instance()->findScriptRawHandler(iNumber,szHandlerName);
+ } else {
+ h = KviKvsEventManager::instance()->findScriptAppHandler(iNumber,szHandlerName);
+ }
+
+ if(h)
+ {
+ KviKvsScript * s = h->script();
+ KviKvsScript copy(*s);
+ KviKvsVariant retVal;
+ copy.run(KVSCSC_pWindow,&vList,0,KviKvsScript::PreserveParams);
+ } else {
+ if(!KVSCSC_pSwitches->find('q',"quiet"))
+ KVSCSC_pContext->warning(__tr2qs("No handler '%Q' for event '%Q'"),&szHandlerName,&szEventName);
+ }
+ }
+
+ return true;
+ }
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: exit
+ @type:
+ command
+ @title:
+ exit
+ @syntax:
+ exit
+ @switches:
+ @short:
+ Closes KVIrc
+ @description:
+ It closes KVirc application
+ */
+
+ KVSCSC(exit)
+ {
+ g_pApp->quit();
+ return true;
+ }
+
+};
diff --git a/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp b/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp
new file mode 100644
index 00000000..a43a33cf
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp
@@ -0,0 +1,693 @@
+//=============================================================================
+//
+// File : kvi_kvs_coresimplecommands_gl.cpp
+// Created on Fri 31 Oct 2003 00:04:25 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_coresimplecommands.h"
+
+#include "kvi_kvs_timermanager.h"
+#include "kvi_kvs_asyncdnsoperation.h"
+#include "kvi_kvs_script.h"
+
+#include "kvi_fileutils.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectionserverinfo.h"
+#include "kvi_locale.h"
+
+#include "kvi_out.h"
+
+#ifdef COMPILE_USE_QT4
+ #include <q3mimefactory.h>
+#endif
+
+namespace KviKvsCoreSimpleCommands
+{
+ /*
+ @doc: halt
+ @type:
+ command
+ @title:
+ halt
+ @syntax:
+ halt
+ @short:
+ Stops the execution of the current script
+ @description:
+ Stops the execution of the current script.[br]
+ Note that this is different from [cmd]return[/cmd]: halt doesn't
+ set the return value (use [cmd]setreturn[/cmd] for that) and
+ in the event handlers this command may have additional semantics:
+ refer to the specific event documentation for more info.[br]
+ In fact , this command should be used [b]only[/b] in the event handlers,
+ use [cmd]return[/cmd] in any other context.[br]
+ */
+
+ KVSCSC(halt)
+ {
+#ifdef COMPILE_NEW_KVS
+ KVSCSC_pContext->setHaltCalled();
+#endif
+ return false;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: help
+ @type:
+ command
+ @title:
+ help
+ @syntax:
+ help [-s] <topic>
+ @short:
+ Shows a help page
+ @description:
+ Shows a help page about <topic>.[br]
+ <topic> can be a command name , or an identifier.[br]
+ If <topic> starts with a slash , it is assumed to be a full path
+ to a html file to be displayed in the help browser.[br]
+ This command is a shortcut for the [cmd]help.open[/cmd] module command.[br]
+ @examples:
+ [example]
+ help run
+ help help
+ help index
+ help $mask
+ help /home/pragma/myfile.html
+ [/example]
+ */
+
+ static bool file_in_path(QStringList &pathlist,QString &file)
+ {
+ for(QStringList::Iterator it = pathlist.begin();it != pathlist.end();++it)
+ {
+ QString tmp = *it;
+ tmp.append('/');
+ tmp.append(file);
+ KviFileUtils::adjustFilePath(tmp);
+ if(KviFileUtils::fileExists(tmp))return true;
+ }
+ return false;
+ }
+
+ KVSCSC(help)
+ {
+ QString szTopic;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("topic",KVS_PT_STRING,KVS_PF_OPTIONAL | KVS_PF_APPENDREMAINING,szTopic)
+ KVSCSC_PARAMETERS_END
+
+ szTopic.stripWhiteSpace();
+ if(szTopic.endsWith(";"))
+ {
+ szTopic.truncate(szTopic.length() - 1);
+ szTopic.stripWhiteSpace();
+ }
+
+ QString szCommand;
+ if(szTopic.isEmpty())szCommand = "help.open index.html";
+ else {
+ bool bWasFunc = false;
+ if(szTopic[0] == QChar('$'))
+ {
+ bWasFunc = true;
+ szTopic.remove(0,1);
+ }
+
+ QString szOriginal = szTopic;
+
+ QString topik = szTopic;
+#ifdef COMPILE_USE_QT4
+ QStringList pl = Q3MimeSourceFactory::defaultFactory()->filePath();
+#else
+ QStringList pl = QMimeSourceFactory::defaultFactory()->filePath();
+#endif
+
+ bool bLowCaseTried = false;
+ bool bFound = KviFileUtils::fileExists(szTopic);
+
+try_again:
+ if((!bFound) && bWasFunc)
+ {
+ topik = szTopic;
+ topik += ".html";
+ topik.prepend("fnc_");
+ bFound = file_in_path(pl,topik);
+ }
+
+ if(!bFound)
+ {
+ topik = szTopic;
+ bFound = file_in_path(pl,topik);
+ }
+
+ if(!bFound)
+ {
+ topik = szTopic;
+ topik += ".html";
+ bFound = file_in_path(pl,topik);
+ }
+
+ if(!bFound)
+ {
+ topik = szTopic;
+ topik += ".html";
+ topik.prepend("cmd_");
+ bFound = file_in_path(pl,topik);
+ }
+
+ if(!bFound)
+ {
+ topik = szTopic;
+ topik += ".html";
+ topik.prepend("doc_");
+ bFound = file_in_path(pl,topik);
+ }
+
+ if(!bFound)
+ {
+ topik = szTopic;
+ topik += ".html";
+ topik.prepend("event_");
+ bFound = file_in_path(pl,topik);
+ }
+
+ if(!bFound)
+ {
+ topik = szTopic;
+ topik += ".html";
+ topik.prepend("module_");
+ bFound = file_in_path(pl,topik);
+ }
+
+ if(!bFound)
+ {
+ topik = szTopic;
+ topik += ".html";
+ topik.prepend("widget_");
+ bFound = file_in_path(pl,topik);
+ }
+
+ if(!bFound)
+ {
+ topik = szTopic;
+ topik += ".html";
+ topik.prepend("class_");
+ bFound = file_in_path(pl,topik);
+ }
+
+ if(!bFound && !bLowCaseTried)
+ {
+ // try again with lowercase
+ szTopic = szTopic.lower();
+ bLowCaseTried = true;
+ goto try_again;
+ }
+
+ if(!bFound)
+ {
+ // let the help.open function decide...
+ topik = szOriginal;
+ topik += ".html";
+ }
+
+ szCommand = "help.open ";
+ szCommand += topik;
+ }
+
+ // We don't care about the return value...
+ KviKvsScript s("help",szCommand);
+ s.run(KVSCSC_pContext->window());
+
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: host
+ @type:
+ command
+ @title:
+ host
+ @syntax:
+ host [-i] [-a] <dnsquery:string>
+ @short:
+ DNS lookup
+ @switches:
+ !sw: --ipv6 | -i
+ Causes the command to run in IPv6 mode
+ !sw: --any | -a
+ Causes the command to run in unspecified mode and lookup both IPv4 and IPv6 addresses
+ @description:
+ Starts a DNS lookup for the <dnsquery> (hostname) and prints
+ the results in the current window.[br]
+ The -i switch causes the command to execute
+ in IpV6 mode (and lookup ONLY IpV6 hosts!).[br]
+ The -a switch causes the command to run in "unspecified" mode
+ and return any available address: IpV4 or Ipv6.[br]
+ This command also performs reverse lookups (if you pass an IP address as <hostname>).[br]
+ @examples:
+ [example]
+ host localhost
+ host irc.flashnet.it
+ host -i irc.flashnet.it
+ host -i A0E0:FFFF:::1010:1111:E0E0:A0A0
+ host -a 127.0.0.1
+ host 255.41.31.23
+ host -a irc.stealth.net
+ [/example]
+ @seealso:
+ [cmd]ahost[/cmd]
+ */
+
+ KVSCSC(host)
+ {
+ QString szQuery;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("dnsquery",KVS_PT_NONEMPTYSTRING,0,szQuery)
+ KVSCSC_PARAMETERS_END
+
+ KviDns::QueryType queryType = KviDns::IpV4;
+ if(KVSCSC_pSwitches->find('i',"ipv6"))queryType = KviDns::IpV6;
+ if(KVSCSC_pSwitches->find('a',"any"))queryType = KviDns::Any;
+
+ KviKvsAsyncDnsOperation * op = new KviKvsAsyncDnsOperation(
+ KVSCSC_pContext->window(),
+ szQuery,
+ queryType);
+
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: include
+ @type:
+ command
+ @title:
+ include
+ @syntax:
+ include [-q] [-e] [-f] [-r] <filename:string> [<parameter1:variant> [<parameter2:variant> [...]]]
+ @short:
+ A builtin alias for parse
+ @description:
+ This is a builtin alias for [cmd]parse[/cmd] that gives scripts a "more C-ish" look :)
+ @seealso:
+ [cmd]parse[/cmd]
+ */
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: info
+ @type:
+ command
+ @title:
+ info
+ @syntax:
+ info [target server]
+ @short:
+ Requests the server daemon info from a server
+ @description:
+ Requests server daemon information from the specified server or the current server if no [target server] is specified.[br]
+ This command is a [doc:rfc2821wrappers]RFC2821 command wrapper[/doc]; see that document for more information.[br]
+ */
+ // RFC2821 wrapper
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: invite
+ @type:
+ command
+ @title:
+ invite
+ @syntax:
+ invite <nickname> <channel>
+ @short:
+ Invites an user to a channel
+ @description:
+ Invites the specified user to the <channel>.[br]
+ This command is a [doc:rfc2821wrappers]RFC2821 command wrapper[/doc]; see that document for more information.[br]
+ */
+ // RCF2821 wrapper
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: join
+ @type:
+ command
+ @title:
+ join
+ @syntax:
+ join <channel list> [key list]
+ @short:
+ Joins the specified channels
+ @description:
+ Joins the channels specified in <channel list> by using the
+ optional keys in the [key list].[br]
+ This command is "server based"; you will see its results only
+ after the server acknowledges it.[br]
+ This command is [doc:connection_dependant_commands]connection dependant[/doc].[br]
+ @examples:
+ [example]
+ join #kvirc
+ join #linux-it,#xmms,#kde linus
+ [/example]
+ */
+
+ KVSCSC(join)
+ {
+ QString szChans,szKeys;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("chans",KVS_PT_NONEMPTYSTRING,0,szChans)
+ KVSCSC_PARAMETER("keys",KVS_PT_STRING,KVS_PF_OPTIONAL,szKeys)
+ KVSCSC_PARAMETERS_END
+
+ KVSCSC_REQUIRE_CONNECTION
+
+ QStringList slChans = QStringList::split(",",szChans);
+
+ QString szChanTypes = KVSCSC_pConnection->serverInfo()->supportedChannelTypes();
+ for(QStringList::Iterator it=slChans.begin();it != slChans.end();++it)
+ {
+ if(!(*it).isEmpty())
+ {
+ bool bFound = false;
+ int id = 0;
+ QChar f = (*it)[0];
+ while((id < szChanTypes.length()) && !bFound)
+ {
+ if(f == szChanTypes[id])bFound = true;
+ id++;
+ }
+ if(!bFound)
+ (*it).prepend("#");
+ }
+ }
+
+ szChans = slChans.join(",");
+ KviQCString szEncodedChans = KVSCSC_pConnection->encodeText(szChans);
+
+ if(szKeys.isEmpty())
+ {
+ if(!(KVSCSC_pConnection->sendFmtData("JOIN %s",szEncodedChans.data())))
+ return KVSCSC_pContext->warningNoIrcConnection();
+ } else {
+ KviQCString szEncodedKeys = KVSCSC_pConnection->encodeText(szKeys);
+ if(!(KVSCSC_pConnection->sendFmtData("JOIN %s %s",szEncodedChans.data(),szEncodedKeys.data())))
+ return KVSCSC_pContext->warningNoIrcConnection();
+ }
+
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: kick
+ @type:
+ command
+ @title:
+ kick
+ @syntax:
+ kick <user:string> [reason:string]
+ @short:
+ Kicks an user from a channel
+ @description:
+ Kicks the specified <user> from the current channel.[br]
+ This command is a simple wrapper over the IRC KICK command.
+ This command is [doc:connection_dependant_commands]connection dependant[/doc].
+ @examples:
+ [example]
+ kick Pragma Go coding in Pascal!
+ [/example]
+ */
+
+ KVSCSC(kick)
+ {
+ QString szUser;
+ QString szReason;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("user",KVS_PT_NONEMPTYSTRING,0,szUser)
+ KVSCSC_PARAMETER("reason",KVS_PT_STRING,KVS_PF_OPTIONAL | KVS_PF_APPENDREMAINING,szReason)
+ KVSCSC_PARAMETERS_END
+
+ KVSCSC_REQUIRE_CONNECTION
+
+ if(KVSCSC_pWindow->type() != KVI_WINDOW_TYPE_CHANNEL)
+ {
+ KVSCSC_pContext->warning(__tr2qs("The current window is not a channel"));
+ return false;
+ }
+
+ KviQCString szC = KVSCSC_pConnection->encodeText(KVSCSC_pWindow->target());
+ KviQCString szU = KVSCSC_pConnection->encodeText(szUser);
+ KviQCString szR = KVSCSC_pConnection->encodeText(szReason);
+
+ if(szR.isEmpty())
+ {
+ if(!KVSCSC_pConnection->sendFmtData("KICK %s %s",szC.data(),szU.data()))
+ return KVSCSC_pContext->warningNoIrcConnection();
+ } else {
+ if(!KVSCSC_pConnection->sendFmtData("KICK %s %s :%s",szC.data(),szU.data(),szR.data()))
+ return KVSCSC_pContext->warningNoIrcConnection();
+ }
+
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: killtimer
+ @title:
+ killtimer
+ @type:
+ command
+ @short:
+ Stops a timer
+ @syntax:
+ killtimer [-a]
+ killtimer [-q] [name]
+ @switches:
+ !sw: -a | --active
+ Requests to kill all the active timers
+ !sw: -q | --quiet
+ Does not print warnings if the specified timer is not running
+ @description:
+ The first version (with -a) kill all the running timers.[br]
+ The second verdion kills a running timer named [name].[br]
+ The timer has been started by the [cmd]timer[/cmd].[br]
+ [name] can be omitted if this command is called from a [cmd]timer[/cmd] callback:
+ in this case the current timer will be scheduled for killing immediately
+ after it has returned control to KVIrc.
+ @seealso:
+ [cmd]timer[/cmd], [fnc]$isTimer[/fnc], [cmd]listtimers[/cmd]
+ */
+
+ KVSCSC(killtimer)
+ {
+ QString szName;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("name",KVS_PT_STRING,KVS_PF_OPTIONAL,szName)
+ KVSCSC_PARAMETERS_END
+
+ if(KVSCSC_pSwitches->find('a',"active"))
+ {
+ KviKvsTimerManager::instance()->deleteAllTimers();
+ return true;
+ }
+
+ if(szName.isEmpty())
+ {
+ if(!KviKvsTimerManager::instance()->deleteCurrentTimer())
+ {
+ if(!KVSCSC_pSwitches->find('q',"quiet"))
+ KVSCSC_pContext->warning(__tr2qs("Timer name omitted but there is not current timer (this is not a timer callback)"));
+ }
+ } else {
+ if(!KviKvsTimerManager::instance()->deleteTimer(szName))
+ {
+ if(!KVSCSC_pSwitches->find('q',"quiet"))
+ KVSCSC_pContext->warning(__tr2qs("Can't kill the timer '%Q' since it is not running"),&szName);
+ }
+ }
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: leave
+ @type:
+ command
+ @title:
+ leave
+ @syntax:
+ leave [-k] [-q] [-s] <channel list> [part message]
+ @short:
+ Alias for part
+ @description:
+ Builtin alias for the command [cmd]part[/cmd].
+ */
+ // Internally aliased to leave
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: links
+ @type:
+ command
+ @title:
+ links
+ @syntax:
+ links
+ @short:
+ Lists server links
+ @description:
+ List server links.[br]
+ The syntax of the parameters of this command is different on many servers.[br]
+ This command is a [doc:rfc2821wrappers]RFC2821 command wrapper[/doc]; see that document for more information.[br]
+ */
+ // RFC2821 wrapper
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: list
+ @type:
+ command
+ @title:
+ list
+ @syntax:
+ list [ <channel> *( "," <channel> ) [ <target> ] ]
+ @short:
+ Lists channels
+ @description:
+ List channels.[br]
+ The syntax of the parameters of this command is different on many servers.[br]
+ This command is a [doc:rfc2821wrappers]RFC2821 command wrapper[/doc]; see that document for more information.[br]
+ */
+ // RFC2821 wrapper
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: listtimers
+ @title:
+ listtimers
+ @type:
+ command
+ @short:
+ Lists the active timers
+ @syntax:
+ listtimers
+ @description:
+ Lists the currently active timers
+ @seealso:
+ [cmd]timer[/cmd], [fnc]$isTimer[/fnc], [cmd]killtimer[/cmd]
+ */
+
+ KVSCSC(listtimers)
+ {
+ KviPointerHashTable<QString,KviKvsTimer> * pTimerDict = KviKvsTimerManager::instance()->timerDict();
+
+ if(!pTimerDict)
+ return true;
+
+ KviPointerHashTableIterator<QString,KviKvsTimer> it(*pTimerDict);
+
+ KVSCSC_pContext->window()->outputNoFmt(KVI_OUT_VERBOSE,__tr2qs("List of active timers"));
+
+ unsigned int uCnt = 0;
+
+ while(KviKvsTimer * pTimer = it.current())
+ {
+ QString szName = pTimer->name();
+ QString szLifetime;
+ switch(pTimer->lifetime())
+ {
+ case KviKvsTimer::Persistent:
+ szLifetime = __tr2qs("Persistent");
+ break;
+ case KviKvsTimer::WindowLifetime:
+ szLifetime = __tr2qs("WindowLifetime");
+ break;
+ case KviKvsTimer::SingleShot:
+ szLifetime = __tr2qs("SingleShot");
+ break;
+ default:
+ szLifetime = __tr2qs("Unknown");
+ break;
+ }
+ QString szDelay;
+ szDelay.setNum(pTimer->delay());
+ QString szWindow;
+ szWindow = pTimer->window() ? pTimer->window()->id() : __tr2qs("None");
+
+ KVSCSC_pContext->window()->output(KVI_OUT_VERBOSE,
+ "Timer \"%Q\": Lifetime: %Q, Delay: %Q, Window: %Q",
+ &szName,&szLifetime,&szDelay,&szWindow
+ );
+
+ uCnt++;
+ ++it;
+ }
+
+ KVSCSC_pContext->window()->output(KVI_OUT_VERBOSE,__tr2qs("Total: %u timers running"),uCnt);
+
+ return true;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: lusers
+ @type:
+ command
+ @title:
+ lusers
+ @syntax:
+ lusers [ <mask> [ <target> ] ]
+ @short:
+ Requests statistics about users on IRC
+ @description:
+ The LUSERS command is used to get statistics about the size of the
+ IRC network.[br]If no parameter is given, the reply will be about the
+ whole net.[br]If a <mask> is specified, then the reply will only
+ concern the part of the network formed by the servers matching the
+ mask.[br]Finally, if the <target> parameter is specified, the request
+ is forwarded to that server which will generate the reply.[br]
+ This command is a [doc:rfc2821wrappers]RFC2821 command wrapper[/doc]; see that document for more information.[br]
+ */
+ // RFC2821 wrapper
+
+
+};
+
diff --git a/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp b/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp
new file mode 100644
index 00000000..e0ac9174
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_coresimplecommands_mr.cpp
@@ -0,0 +1,1335 @@
+//=============================================================================
+//
+// File : kvi_kvs_coresimplecommands_mr.cpp
+// Created on Fri 31 Oct 2003 00:04:25 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_coresimplecommands.h"
+
+#include "kvi_window.h"
+#include "kvi_console.h"
+#include "kvi_query.h"
+#include "kvi_ircuserdb.h"
+#include "kvi_out.h"
+#include "kvi_locale.h"
+#include "kvi_app.h"
+#include "kvi_options.h"
+#include "kvi_fileutils.h"
+#include "kvi_filedialog.h"
+#include "kvi_ircconnection.h"
+#include "kvi_channel.h"
+#include "kvi_ircurl.h"
+#include "kvi_frame.h"
+#include "kvi_modulemanager.h"
+#include "kvi_kvs_moduleinterface.h"
+
+#include "kvi_kvs_variantlist.h"
+#include "kvi_kvs_script.h"
+#include "kvi_kvs_popupmanager.h"
+
+#include <qcursor.h>
+#include <qprocess.h>
+#include <qtimer.h>
+
+namespace KviKvsCoreSimpleCommands
+{
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: me
+ @type:
+ command
+ @title:
+ me
+ @syntax:
+ me <text:string>
+ @short:
+ Sends a CTCP ACTION
+ @description:
+ Sends a CTCP ACTION to the current channel, query or dcc chat.[br]
+ If you execute it in any other window type, you will get an error.[br]
+ If you want to use this command in a window that is not a channel
+ query or dcc chat, you may use the [doc:command_rebinding]standard -r switch[/doc].
+ @examples:
+ [example]
+ me is Hungry!
+ [/example]
+ */
+
+ KVSCSC(me)
+ {
+ QString szText;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("text",KVS_PT_STRING,KVS_PF_OPTIONAL | KVS_PF_APPENDREMAINING,szText)
+ KVSCSC_PARAMETERS_END
+
+ KVSCSC_REQUIRE_CONNECTION
+
+ switch(KVSCSC_pWindow->type())
+ {
+ case KVI_WINDOW_TYPE_CHANNEL:
+ case KVI_WINDOW_TYPE_QUERY:
+ case KVI_WINDOW_TYPE_DCCCHAT:
+ KVSCSC_pWindow->ownAction(szText);
+ break;
+ default:
+ KVSCSC_pContext->warning(__tr2qs("/me can be used only in channels, queries and DCC chat windows"));
+ break;
+ }
+
+ return true;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: mode
+ @type:
+ command
+ @title:
+ mode
+ @syntax:
+ mode <target> <modeflags> [mode parameters]
+ @short:
+ Sends a MODE irc message
+ @description:
+ Sends a MODE irc message to the server of the current IRC context.[br]
+ The parameters are not modified in any way by KVIrc: so
+ you should use the RFC1459 syntax.[br]
+ This command is [doc:connection_dependant_commands]connection dependant[/doc].
+ @examples:
+ [example]
+ mode #kvirc +oo-b Pragma Buti *!*root@*
+ [/example]
+ */
+
+ KVSCSC(mode)
+ {
+ QString szText;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("text",KVS_PT_STRING,KVS_PF_APPENDREMAINING,szText)
+ KVSCSC_PARAMETERS_END
+
+ KVSCSC_REQUIRE_CONNECTION
+
+ KviQCString szTxt = KVSCSC_pConnection->encodeText(szText);
+
+ if(!szTxt.isEmpty())
+ {
+ if(!KVSCSC_pConnection->sendFmtData("MODE %s",szTxt.data()))
+ return KVSCSC_pContext->warningNoIrcConnection();
+ }
+
+ return true;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: motd
+ @type:
+ command
+ @title:
+ motd
+ @syntax:
+ motd [target server]
+ @short:
+ Requests the Message of the day
+ @description:
+ Requests the Message of the day from the specified server or the current server if no [target server] is specified.[br]
+ This command is a [doc:rfc2821wrappers]RFC2821 command wrapper[/doc]; see that document for more information.[br]
+ */
+ // RCF2821 wrapper
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: msg
+ @type:
+ command
+ @title:
+ msg
+ @syntax:
+ msg [-q] <target:string> <text:string>
+ @short:
+ Alias for privmsg
+ @switches:
+ !sw: -q | --quiet
+ Do not print any output
+ @description:
+ Sends a private message to the specified <target>.
+ <target> may be any PRIVMSG target allowed by the underlying
+ IRC protocol (see RFC1459).
+ This is really similar to [cmd]privmsg[/cmd] but also outputs the
+ message locally (unless the [-q] switch is used).[br]
+ This command is [doc:connection_dependant_commands]connection dependant[/doc].[br]
+ */
+ // Internally aliased to privmsg
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: nick
+ @type:
+ command
+ @title:
+ nick
+ @syntax:
+ nick <new nickname:string>
+ @short:
+ Changes your nickname
+ @description:
+ Changes your nickname in the connection associated to the
+ current [b]IRC context[/b].[br] This command is "server based";
+ this means that the effects will be visible only after the
+ server has acknowledged the change.[br]
+ This command is [doc:connection_dependant_commands]connection dependant[/doc].[br]
+ @examples:
+ [example]
+ nick Pragma
+ [/example]
+ */
+
+ KVSCSC(nick)
+ {
+ QString szNick;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("nickname",KVS_PT_NONEMPTYSTRING,0,szNick)
+ KVSCSC_PARAMETERS_END
+
+ KVSCSC_REQUIRE_CONNECTION
+
+ KviQCString szData = KVSCSC_pConnection->encodeText(szNick);
+ if(!szData.data())szData = "";
+
+ if(!KVSCSC_pConnection->sendFmtData("NICK %s",szData.data()))
+ return KVSCSC_pContext->warningNoIrcConnection();
+
+ return true;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: notice
+ @type:
+ command
+ @title:
+ notice
+ @syntax:
+ notice [-q] <target:string> <text:string>
+ @short:
+ Sends a private notice
+ @switches:
+ !sw: -q | --quiet
+ Do not print any output
+ @description:
+ Sends a private notice to the specified <target>.
+ <target> may be any NOTICE target allowed by the underlying
+ IRC protocol (see RFC1459).
+ If the [-q] switch is specified, no output is printed.
+ This command is [doc:connection_dependant_commands]connection dependant[/doc].[br]
+ @examples:
+ [example]
+ notice Pragma Hello!
+ notice Pragma,Crocodile Hello to you both!
+ notice #kvirc Hello from outside!
+ [/example]
+ */
+
+ KVSCSC(notice)
+ {
+ QString szTarget,szText;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("target",KVS_PT_NONEMPTYSTRING,0,szTarget)
+ KVSCSC_PARAMETER("text",KVS_PT_STRING,KVS_PF_OPTIONAL | KVS_PF_APPENDREMAINING,szText)
+ KVSCSC_PARAMETERS_END
+
+ KVSCSC_REQUIRE_CONNECTION
+
+ KviWindow * w = KVSCSC_pConnection->findChannel(szTarget);
+ if(!w)w = KVSCSC_pConnection->findQuery(szTarget);
+
+ KviQCString szT = KVSCSC_pConnection->encodeText(szTarget);
+ KviQCString szD = w ? w->encodeText(szText) : KVSCSC_pConnection->encodeText(szText);
+ if(!szT.data())szT = ""; // encoding problems ?
+ if(!szD.data())szD = ""; // encoding problems ?
+
+ if(!(KVSCSC_pConnection->sendFmtData("NOTICE %s :%s",szT.data(),szD.data())))
+ return KVSCSC_pContext->warningNoIrcConnection();
+
+ if(!KVSCSC_pSwitches->find('q',"quiet"))
+ KVSCSC_pWindow->output(KVI_OUT_OWNPRIVMSG,"[NOTICE >>> %Q]: %Q",&szTarget,&szText);
+
+ return true;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: op
+ @type:
+ command
+ @title:
+ op
+ @syntax:
+ op <nickname_list>
+ @short:
+ Sets chanop status to the specified users
+ @description:
+ Sets channel operator status to the users specified in <nickname_list>,
+ which is a comma separated list of nicknames.
+ This command works only if executed in a channel window.
+ The command is translated to a set of MODE messages containing
+ a variable number of +o flags.
+ This command is [doc:connection_dependant_commands]connection dependant[/doc].
+ @examples:
+ [example]
+ op Pragma,Crocodile
+ [/example]
+ @seealso:
+ [cmd]deop[/cmd], [cmd]voice[/cmd], [cmd]devoice[/cmd]
+ */
+
+ KVSCSC(op)
+ {
+ return multipleModeCommand(__pContext,__pParams,__pSwitches,'+','o');
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: openurl
+ @type:
+ command
+ @title:
+ openurl
+ @syntax:
+ openurl <url:string>
+ @short:
+ Opens an url
+ @description:
+ Opens the specified <url> with an appropriate handler.<br>
+ The handlers for the supported url types are specified in the options dialog.<br>
+ Each handler is a kvirc commandline that the url will be passed to as the first parameter ($0).<br>
+ The supported url types are:<br>
+ HTTP: http://&lt;url&gt; or sth that begins with "www." <br>
+ HTTPS: https://&lt;url&gt;<br>
+ FILE: file://&lt;url&gt;<br>
+ IRC: irc[s][6]://<server>[:<port>][/<channel>[?<pass>]] (Handled internally)<br>
+ FTP: ftp://<url> or sth that begins with "ftp."<br>
+ MAIL: mailto:<mailaddress><br>
+ @examples:
+ [example]
+ openurl http://www.kvirc.net
+ openurl https://www.secure.net
+ openurl file://home/pragma/pippo.txt
+ openurl irc://irc.eu.dal.net:6667
+ openurl irc6://irc.ircd.it/#kvirc
+ openurl ircs://crypto.azzurra.org:9999
+ openurl ircs6://ngnet.azzurra.org:9999
+ openurl ftp://ftp.localhost.net/pub/kvirc/
+ openurl mailto:[email protected]
+ [/example]
+ */
+
+ KVSCSC(openurl)
+ {
+ QString szUrl;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("url",KVS_PT_NONEMPTYSTRING,KVS_PF_APPENDREMAINING,szUrl)
+ KVSCSC_PARAMETERS_END
+
+ QString szCommand;
+ if(KviQString::equalCIN(szUrl,"www.",4))
+ {
+ szCommand = KVI_OPTION_STRING(KviOption_stringUrlHttpCommand);
+ szUrl.prepend("http://");
+ } else if(KviQString::equalCIN(szUrl,"http:",5))
+ {
+ szCommand = KVI_OPTION_STRING(KviOption_stringUrlHttpCommand);
+ } else if(KviQString::equalCIN(szUrl,"https:",6))
+ {
+ szCommand = KVI_OPTION_STRING(KviOption_stringUrlHttpsCommand);
+ } else if(KviQString::equalCIN(szUrl,"ftp",3))
+ {
+ szCommand = KVI_OPTION_STRING(KviOption_stringUrlFtpCommand);
+ if(KviQString::equalCIN(szUrl,"ftp.",4))szUrl.prepend("ftp://");
+ } else if(KviQString::equalCIN(szUrl,"file",4))
+ {
+ szCommand = KVI_OPTION_STRING(KviOption_stringUrlFileCommand);
+ } else if(KviQString::equalCIN(szUrl,"irc",3))
+ {
+ if(KviIrcUrl::run(szUrl,KviIrcUrl::FirstFreeContext,KVSCSC_pContext->console()) & KviIrcUrl::InvalidProtocol)
+ {
+ KVSCSC_pContext->warning(__tr2qs("Invalid IRC url (%Q)"),&szUrl);
+ }
+ return true;
+ } else if(KviQString::equalCIN(szUrl,"mailto",6))
+ {
+ szCommand = KVI_OPTION_STRING(KviOption_stringUrlMailtoCommand);
+ }
+#ifdef COMPILE_ON_WINDOWS
+ if(KVI_OPTION_BOOL(KviOption_boolUseSystemUrlHandlers))
+ {
+ ShellExecute(NULL, "open", szUrl.local8Bit().data(),
+ NULL, NULL, SW_SHOWNORMAL);
+ } else {
+#endif
+ if(szCommand.isEmpty())szCommand = KVI_OPTION_STRING(KviOption_stringUrlUnknownCommand);
+
+ if(!szCommand.isEmpty())
+ {
+ KviKvsVariantList vList;
+ vList.append(new KviKvsVariant(szUrl));
+
+ QString szName = "openurl::handler";
+ KviKvsScript script(szName,szCommand);
+
+ if(!script.run(KVSCSC_pWindow,&vList,0,KviKvsScript::PreserveParams))
+ KVSCSC_pContext->warning(__tr2qs("The commandline for this url type seems to be broken (%Q)"),&szUrl);
+
+ } else KVSCSC_pContext->warning(__tr2qs("No commandline specified for this type of url (%Q)"),&szUrl);
+#ifdef COMPILE_ON_WINDOWS
+ }
+#endif
+
+ return true;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+ /*
+ @doc: oper
+ @type:
+ command
+ @title:
+ oper
+ @syntax:
+ oper <name> <password>
+ @short:
+ Requests IRC operator status
+ @description:
+ Requests IRC operator status.[br]
+ This command is a [doc:rfc2821wrappers]RFC2821 command wrapper[/doc]; see that document for more information.[br]
+ */
+ // RFC2821 wrapper
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: option
+ @type:
+ command
+ @title:
+ option
+ @syntax:
+ option [<optName:string> <optValue:string>]
+ @short:
+ Sets an internal option
+ @description:
+ Sets an internal option named <optName> to the value <optValue>. The value
+ must be appropriate for the type of option that you're going to set.[br]
+ With no parameters this command lists all the available option names
+ sorted by option type.[br] The possible option types are:[br]
+ [b]Boolean[/b]: <optValue> must be "1" or "0"[br]
+ [b]String[/b]: <optValue> can be any string[br]
+ [b]StringList[/b]: <optValue> must be a comma separated list of strings (eventually empty)[br]
+ [b]Color[/b]: <optValue> must have the format #RRGGBB where R G and B are hex digits[br]
+ [b]Font[/b]: <optValue> is a comma separated list of font properties:
+ <family>,<pointsize>,<style>,<charset>,<weight>,<flags>. <family> is the font face name
+ ("arial" , "helvetica" etc..), <pointsize> is more or less the indicator of the size of the font
+ (try sth like 12,14), <style> is an integer that indicates the font style (fixed for example),
+ <charset> is an integer that indicates the charset of the font (maybe one day I'll document it better),
+ <weight> indicates the (ehm) weight of the font (50,100,150...matches Bold,DemiBold etc..),
+ <flags> is a combination of 'b','i','u','s,' and 'f' that match respectively bold,italic
+ underline,strikeout and fixed.[br]
+ [b]MessageType[/b]: <optValue> is a comma separated list of message type properties:
+ <icon>,<foreground>,<background>,<logBoolean>,<level>: <icon> is the index of the internal
+ small icon that has to be shown with the message type, <foreground> is an integer
+ indicating the mirc color to be used for the message type text (0-15),
+ <background> is similar to foreground and accepts also the value of 100 that means transparent.
+ <logBoolean> is a boolean value (0/1) that indicates wheter this message type has to be logged or not.
+ <level> is the message level (actually from 0 to 5).[br]
+ [b]Rectangle[/b]: <optValue> is a comma separated list of integer values that indicate <x>,<y>,<width> and <height>.[br]
+ [b]Pixmap[/b]: <optValue> must be an ABSOLUTE path of the image that you want to load.[br]
+ [b]Int[/b]: <optValue> must be an integer.[br]
+ [b]Uint[/b]: <optValue> must be an UNSIGNED positive integer.[br]
+ Almost all the options available in the option dialog can be set by this command.[br]
+ Some GUI options might require a KVIrc restart to work properly (altough I've tried to avoid that when possible).
+ @examples:
+ [example]
+ [comment]# List available options[/comment]
+ option
+ [comment]# Set the mdi mananger background image[/comment]
+ option pixmapMdiBackground /home/pragma/myback1.png
+ [comment]# Set the frame caption text[/comment]
+ option stringFrameCaption KVIrc rulez!
+ [comment]# Enable verbose mode[/comment]
+ option boolBeVerbose 1
+ [comment]# Set the irc view font[/comment]
+ option fontIrcView helvetica,24,5,1,50
+ [/example]
+ @seealso:
+ [fnc]$option[/fnc]
+ */
+
+ KVSCSC(option)
+ {
+ QString szName;
+ QString szValue;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("optName",KVS_PT_STRING,KVS_PF_OPTIONAL,szName)
+ KVSCSC_PARAMETER("optValue",KVS_PT_STRING,KVS_PF_OPTIONAL | KVS_PF_APPENDREMAINING,szValue)
+ KVSCSC_PARAMETERS_END
+
+ if(szName.isEmpty())
+ {
+ // list available options
+ g_pApp->listAvailableOptions(KVSCSC_pWindow);
+ } else {
+ if(!g_pApp->setOptionValue(szName,szValue))KVSCSC_pContext->warning(__tr2qs("Option setting error: Unknown option or invalid value for option type"));
+ }
+
+ return true;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: parse
+ @type:
+ command
+ @title:
+ parse
+ @syntax:
+ parse [-q] [-e] [-f] [-r] <filename:string> [<parameter1:variant> [<parameter2:variant> [...]]]
+ @short:
+ Executes commands from a file
+ @switches:
+ !sw: -e | --fail-on-load
+ Causes the command to terminate with an error when the file
+ can't be loaded: the error termination stops the parsing
+ of the current script too. If the -e switch is not used then
+ file load failures are eventually reported only as a warning
+ or not reported at all (if -q is used).
+ !sw: -f | --fail-on-error
+ Causes the command to terminate with an error when the execution
+ of the script loaded from disk generates an error.
+ This error termination stops the parsing of the current script too.
+ If the -f switch is not used then the loaded script errors
+ do not stop the current script.
+ !sw: -q | --quiet
+ Causes the command to run quietly without printing warnings about
+ empty <filename> and file loading errors.
+ !sw: -r | --propagate-return
+ Causes the return value of the script to be propagated to the
+ calling context. This allows the usage of ${ } trick to extract
+ this return value. See the examples section for a sample usage.
+ @description:
+ Executes commands from the external file <filename>.[br]
+ <filename> can be an absolute or relative path.[br]
+ If it is a relative path then KVIrc will try to look it up
+ in the path of the calling script (if any) and in the current
+ KVIrc working directory.
+ The file must be utf8-encoded (see below).
+ [parameters] is a space separated string of parameters to be
+ passed to the script. The parameter $0 will contain the
+ path of the file being parsed, the other parameters will
+ be available starting from $1.[br]
+ If <filename> is an existing directory name a file dialog
+ will pop up, allowing you to choose a file to parse.
+ The file dialog will start in the directory specified by <filename>.
+ If you don't know the name of an existing directory, just pass "."
+ or "/". The command just prints a warning if the file cannot be loaded for
+ some reason. If you want the command to stop with an error in
+ this case then use the -e switch.[br]
+ This command has a builtin alias called [cmd]include[/cmd].
+ [br][br]
+ Note that script files, especially the ones that you distribute,
+ MUST be encoded in utf8. Any other encoding (especially the exotic
+ ones like KOI8R or Shift-JIS) may screw things up.
+ The reason for such a constraint is simple: KVIrc has no means
+ of knowing the encoding that one or other scripter uses to
+ edit his files. Unlike other languages (like HTML, for example)
+ there is no "external" metadata that will allow for
+ encoding detection before the data is actually decoded.
+ UTF8 is the right way (tm). Use it.
+ @examples:
+ [example]
+ parse /home/pragma/myscript.kvs
+ [/example]
+ [example]
+ [comment]# Here we are assuming that fetchdata.kvs returns a string[/comment]
+ [comment]# We evaluate the return value thru ${} and echo it[/comment]
+ echo ${ parse -r /home/pragma/fetchdata.kvs; };
+ [/example]
+ */
+
+ KVSCSC(parse)
+ {
+ QString szFileName;
+ KviKvsVariantList vList;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("filename",KVS_PT_NONEMPTYSTRING,0,szFileName)
+ KVSCSC_PARAMETER("params",KVS_PT_VARIANTLIST,KVS_PF_OPTIONAL,vList)
+ KVSCSC_PARAMETERS_END
+
+ KviFileUtils::adjustFilePath(szFileName);
+
+ if(KviFileUtils::directoryExists(szFileName))
+ {
+ QString szTmp;
+ KVSCSC_pContext->enterBlockingSection();
+
+ bool bResult = KviFileDialog::askForOpenFileName(szTmp,__tr2qs("Choose a file to parse"),szFileName.utf8().data(),"*.kvs");
+
+ if(!KVSCSC_pContext->leaveBlockingSection())return false; // need to stop immediately
+ if(!bResult)return true;
+
+ szFileName = szTmp;
+
+ if(szFileName.isEmpty())return true; // done
+ KviFileUtils::adjustFilePath(szFileName);
+ } else {
+ QFileInfo inf(szFileName);
+ if(inf.isRelative())
+ {
+ if(QString * pszPath = KVSCSC_pContext->scriptFilePath())
+ {
+ QFileInfo inf2(*pszPath);
+ QString szCheckFileName = inf2.dirPath();
+ KviQString::ensureLastCharIs(szCheckFileName,KVI_PATH_SEPARATOR_CHAR);
+ szCheckFileName += szFileName;
+ if(KviFileUtils::fileExists(szCheckFileName))
+ szFileName = szCheckFileName;
+ }
+ }
+ }
+
+ QFileInfo infz(szFileName);
+ szFileName = infz.absFilePath();
+
+ QString szBuffer;
+ if(!KviFileUtils::loadFile(szFileName,szBuffer,true)) // <-- scripts SHOULD be shipped in utf8 format
+ {
+ if(KVSCSC_pSwitches->find('e',"fail-on-load"))
+ {
+ KVSCSC_pContext->error(__tr2qs("Failed to load the file '%Q' for parsing"),&szFileName);
+ return false;
+ } else {
+ if(!KVSCSC_pSwitches->find('q',"quiet"))
+ KVSCSC_pContext->warning(__tr2qs("Failed to load the file '%Q' for parsing"),&szFileName);
+ return true;
+ }
+ }
+
+ KviKvsScript s(szFileName,szBuffer);
+
+ KviKvsVariant * pRetVal = KVSCSC_pSwitches->find('r',"propagate-return") ? KVSCSC_pContext->returnValue() : 0;
+ KviKvsVariant vFileName(szFileName);
+ vList.prepend(&vFileName);
+
+ KviKvsExtendedRunTimeData rtd(&szFileName);
+
+ if(!s.run(KVSCSC_pContext->window(),&vList,pRetVal,KviKvsScript::PreserveParams,&rtd))
+ {
+ if(KVSCSC_pSwitches->find('f',"fail-on-error"))return false;
+ }
+ return true;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: part
+ @type:
+ command
+ @title:
+ part
+ @syntax:
+ part [-k] [-q] [-s] [<channel list> [part message]]
+ @short:
+ Leaves the specified channels
+ @switches:
+ !sw: -k | --keep
+ Keeps the channel windows open after the part.
+ !sw: -q | --quiet
+ Runs the command in quiet mode (no warnings printed)
+ !sw: -s | --silent
+ Does not show the part message in the channel window
+ @description:
+ Leaves the channels specified in the <channel list>.
+ If no channels are specified, the current channel is used.
+ This command is "server based"; you will see its results only
+ after the server acknowledges it.[br]
+ If the -k switch is specified then the channel windows are left open
+ after the part (the channels become dead channels).[br]
+ If the -s switch is specified then the part message is not shown
+ in the channel window.[br]
+ This command is [doc:connection_dependant_commands]connection dependant[/doc].[br]
+ This command is equivalent to [cmd]leave[/cmd]
+ @examples:
+ [example]
+ part #kvirc Byez!
+ part #linux-it,#xmms,#kde Time to sleep
+ [/example]
+ */
+
+ KVSCSC(part)
+ {
+ QString szChans,szMsg;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("chans",KVS_PT_STRING,KVS_PF_OPTIONAL,szChans)
+ KVSCSC_PARAMETER("part_message",KVS_PT_STRING,KVS_PF_OPTIONAL | KVS_PF_APPENDREMAINING,szMsg)
+ KVSCSC_PARAMETERS_END
+
+ KVSCSC_REQUIRE_CONNECTION
+
+ if(szChans.isEmpty())
+ {
+ if(KVSCSC_pWindow->type() == KVI_WINDOW_TYPE_CHANNEL)
+ szChans = KVSCSC_pWindow->target();
+ else {
+ if(!KVSCSC_pSwitches->find('q',"quiet"))KVSCSC_pContext->warning(__tr2qs("Missing channel list"));
+ return true;
+ }
+ }
+
+ KviQCString szEncodedChans = KVSCSC_pConnection->encodeText(szChans);
+
+ QStringList sl = QStringList::split(",",szChans);
+
+ if(!szMsg.isEmpty())
+ {
+ KviQCString szText;
+ if(sl.count() == 1)
+ {
+ // single chan , use channel encoding if possible
+ KviChannel * ch = KVSCSC_pConnection->findChannel(szChans);
+ if(ch)
+ szText = ch->encodeText(szMsg);
+ else
+ szText = KVSCSC_pConnection->encodeText(szMsg);
+ } else {
+ // multiple chans, use connection encoding
+ szText = KVSCSC_pConnection->encodeText(szMsg);
+ }
+ if(!(KVSCSC_pConnection->sendFmtData("PART %s :%s",szEncodedChans.data(),szText.data())))
+ return KVSCSC_pContext->warningNoIrcConnection();
+ } else {
+ if(!(KVSCSC_pConnection->sendFmtData("PART %s",szEncodedChans.data())))
+ return KVSCSC_pContext->warningNoIrcConnection();
+ }
+
+ for(QStringList::Iterator it=sl.begin();it != sl.end();it++)
+ {
+ KviChannel * ch = KVSCSC_pConnection->findChannel(*it);
+ if(ch)
+ {
+ ch->partMessageSent(!KVSCSC_pSwitches->find('k',"keep"),!KVSCSC_pSwitches->find('s',"silent"));
+ } else {
+ if(!KVSCSC_pSwitches->find('q',"quiet"))KVSCSC_pContext->warning(__tr2qs("You don't appear to be on channel %s"),(*it).utf8().data());
+ }
+ }
+
+ return true;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: pass
+ @type:
+ command
+ @title:
+ pass
+ @syntax:
+ pass <password>
+ @short:
+ Sends a password to the server
+ @description:
+ Sends a password to the server: usually KVIrc takes care of it , but well.. this is useful with bouncers.[br]
+ This command is a [doc:rfc2821wrappers]RFC2821 command wrapper[/doc]; see that document for more information.[br]
+ */
+ // RFC2821 wrapper
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: play
+ @type:
+ command
+ @title:
+ play
+ @syntax:
+ play <filename:string>
+ @short:
+ DEPRECATED: Use $snd.play instead!
+ @description:
+ This command has been moved to the snd module.
+ See [cmd]snd.play[/cmd]
+ */
+
+ KVSCSC(play)
+ {
+ // cool, no ?
+
+ KviModule * m = g_pModuleManager->getModule("snd");
+ if(!m)
+ {
+ KVSCSC_pContext->error(__tr2qs("Module command call failed: can't load the module 'snd'"));
+ return false;
+ }
+
+ KviKvsModuleSimpleCommandExecRoutine * proc = m->kvsFindSimpleCommand("play");
+ if(!proc)
+ {
+ KVSCSC_pContext->error(__tr2qs("Module command call failed: the module 'snd' doesn't export a command named 'play'"));
+ return false;
+ }
+
+ KviKvsModuleCommandCall call(m,KVSCSC_pContext,KVSCSC_pParams,KVSCSC_pSwitches);
+
+ return (*proc)(&call);
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: popup
+ @type:
+ command
+ @title:
+ popup
+ @syntax:
+ popup [-p=<screen_coordinates:string>] <popup_name:string> [<parameter1:variant> [<parameter2:variant> [...]]]
+ @short:
+ Shows a popup menu
+ @switches:
+ !sw: -p=<screen_coordinates:string> | --point=<screen_coordinates:string>
+ @description:
+ Shows the popup menu <popup_name> at the current cursor position,
+ eventually passing the [parameters]. Please note that you can't
+ use this command inside one of the [cmd]defpopup[/cmd] command
+ handlers for <popup_name>. In other words, you can't "popup
+ a popup" while it is being popped up. :) (This would
+ be an endless recursive behaviour).[br]
+ If the -p switch is used , then <screen_coordinates> must be
+ in the form <x>,<y> and will be used as screen coordinates
+ for the placement of the popup (instead of the current cursor position).[br]
+ @seealso:
+ [cmd]defpopup[/cmd]
+ */
+
+ KVSCSC(popup)
+ {
+ QString szPopupName;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("popup_name",KVS_PT_NONEMPTYSTRING,0,szPopupName)
+ KVSCSC_PARAMETERS_END
+
+ // copy parameters
+ KviKvsVariantList * pPopupParams = new KviKvsVariantList();
+ KVSCSC_pParams->first();
+ while(KviKvsVariant * v = KVSCSC_pParams->next())pPopupParams->append(new KviKvsVariant(*v));
+
+ KviKvsPopupMenu * pMenu = KviKvsPopupManager::instance()->lookup(szPopupName);
+
+ if(!pMenu)
+ {
+ delete pPopupParams;
+ pPopupParams = 0;
+ KVSCSC_pContext->error(__tr2qs("Popup %Q is not defined"),&szPopupName);
+ return false;
+ }
+
+ if(pMenu->isLocked())
+ {
+ delete pPopupParams;
+ pPopupParams = 0;
+ KVSCSC_pContext->error(__tr2qs("A popup menu cannot be popped up twice"));
+ return false;
+ }
+
+ QPoint pnt = QCursor::pos();
+
+ KviKvsVariant * pCoords = KVSCSC_pSwitches->find('p',"point");
+ if(pCoords)
+ {
+ QString szCoords;
+ pCoords->asString(szCoords);
+
+ int idx = szCoords.find(',');
+ bool bCoordsOk = true;
+ if(idx == -1)bCoordsOk = false;
+ else {
+ QString szX = szCoords.left(idx);
+ szCoords.remove(0,idx + 1);
+ bool bOk1,bOk2;
+ int iX = szX.toInt(&bOk1);
+ int iY = szCoords.toInt(&bOk2);
+ if(bOk1 && bOk2)pnt = QPoint(iX,iY);
+ else bCoordsOk = false;
+ }
+
+ if(!bCoordsOk)KVSCSC_pContext->warning(__tr2qs("Invalid syntax for screen coordinates, using cursor position"));
+ }
+
+ pMenu->doPopup(pnt,KVSCSC_pContext->window(),pPopupParams);
+ return true;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: privmsg
+ @type:
+ command
+ @title:
+ privmsg
+ @syntax:
+ privmsg <target:string> <text:string>
+ @short:
+ Sends a private message
+ @switches:
+ !sw: -q | --quiet
+ Do not print any output
+ @description:
+ Sends a private message to the specified <target>.
+ <target> may be any PRIVMSG target allowed by the underlying
+ IRC protocol (see RFC1459).
+ This command is really similar to [cmd]msg[/cmd] but it does not
+ output the message locally.[br]
+ This command is [doc:connection_dependant_commands]connection dependant[/doc].[br]
+ This command is equivalent to [cmd]msg[/cmd]
+ @examples:
+ [example]
+ privmsg Pragma Hello!
+ privmsg Pragma,Crocodile Hello to you both!
+ privmsg #kvirc Hello from outside!
+ [/example]
+ */
+
+ KVSCSC(privmsg)
+ {
+ QString szTarget,szText;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("target",KVS_PT_NONEMPTYSTRING,0,szTarget)
+ KVSCSC_PARAMETER("text",KVS_PT_STRING,KVS_PF_OPTIONAL | KVS_PF_APPENDREMAINING,szText)
+ KVSCSC_PARAMETERS_END
+
+ KVSCSC_REQUIRE_CONNECTION
+
+ KviWindow * w = KVSCSC_pConnection->findChannel(szTarget);
+ if(!w)w = KVSCSC_pConnection->findQuery(szTarget);
+
+ if(w)w->ownMessage(szText);
+ else {
+
+ KviQCString szT = KVSCSC_pConnection->encodeText(szTarget);
+ KviQCString szD = w ? w->encodeText(szText) : KVSCSC_pConnection->encodeText(szText);
+ if(!szT.data())szT = ""; // encoding problems ?
+ if(!szD.data())szD = ""; // encoding problems ?
+
+ if(!(KVSCSC_pConnection->sendFmtData("PRIVMSG %s :%s",szT.data(),szD.data())))
+ return KVSCSC_pContext->warningNoIrcConnection();
+
+ if(!KVSCSC_pSwitches->find('q',"quiet"))
+ KVSCSC_pWindow->output(KVI_OUT_OWNPRIVMSG,"[PRIVMSG >>> %Q]: %Q",&szTarget,&szText);
+ }
+
+ return true;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: query
+ @type:
+ command
+ @title:
+ query
+ @syntax:
+ query <nickname list> [text]
+ @short:
+ Opens one or more query windows
+ @description:
+ Opens a query window for each user specified in <nickname list>
+ which is a [b]comma separated[/b] list of nicknames.[br]
+ If [text] is speficied, it is sent to the
+ query window just as it would have been written in the query itself.
+ If a query with one of the specified targets already exists,
+ it is simply focused and the [text] is sent to the target.[br]
+ This command is [doc:connection_dependant_commands]connection dependant[/doc].[br]
+ @examples:
+ [example]
+ [comment]# Open a single query to Pragma[/comment]
+ query Pragma
+ [comment]# Open a query to Pragma and to Crocodile , say "Hello!" in both windows[/comment]
+ query Pragma,Crocodile Hello !
+ [/example]
+ */
+
+ KVSCSC(query)
+ {
+ QString szTargets,szText;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("targets",KVS_PT_NONEMPTYSTRING,0,szTargets)
+ KVSCSC_PARAMETER("text",KVS_PT_STRING,KVS_PF_OPTIONAL | KVS_PF_APPENDREMAINING,szText)
+ KVSCSC_PARAMETERS_END
+
+ KVSCSC_REQUIRE_CONNECTION
+
+ KviQuery * query;
+
+ QStringList sl = QStringList::split(",",szTargets);
+ for(QStringList::Iterator it = sl.begin();it != sl.end();it++)
+ {
+ QString szNick = *it;
+ if(szNick.isEmpty())KVSCSC_pContext->warning(__tr2qs("Empty target specified"));
+ else {
+ query = KVSCSC_pWindow->console()->connection()->findQuery(szNick);
+ if(!query) {
+ query = KVSCSC_pWindow->console()->connection()->createQuery(szNick);
+ QString user;
+ QString host;
+ KviIrcUserDataBase * db = KVSCSC_pWindow->connection()->userDataBase();
+ if(db)
+ {
+ KviIrcUserEntry * e = db->find(szNick);
+ if(e)
+ {
+ user = e->user();
+ host = e->host();
+ }
+ }
+ query->setTarget(szNick,user,host);
+ }
+ query->autoRaise();
+ query->setFocus();
+ if(!szText.isEmpty())query->ownMessage(szText);
+ }
+ }
+
+ return true;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: quit
+ @type:
+ command
+ @title:
+ quit
+ @syntax:
+ quit [-f] [-u] [quit-message:string]
+ quit -q
+ @short:
+ Terminates the current IRC connection or the entier application
+ @switches:
+ !sw: -q | --quit
+ Terminates this KVIrc application instance
+ !sw: -f | --force
+ Forces the immediate termination of the current IRC session (The QUIT message may be not sent)
+ !sw: -u | --unexpected
+ Simulates an "unexpected disconnection"
+ @description:
+ Terminates the current IRC session.[br]
+ By default this command sends a QUIT message
+ and waits for the server to close the connection.[br]
+ If you want to force KVIrc to close the connection
+ immediately after sending the QUIT message you must use the -f switch.[br]
+ Forcing the connection may cause your quit message to not be
+ displayed to the other IRC users: most likely it will be replaced
+ by a 'Connection reset by peer' or a 'EOF from client'.[br]
+ If the -u switch is specified then an "unexpected disconnection" will be simulated
+ and all the related options will be applied (e.g. automatic reconnection,
+ channels and queries kept open etc..). The QUIT message will be still sent unless
+ the -f switch is used. You can control all the "unexpected
+ disconnection" options in the options dialog.
+ If the -q switch is specified , this command terminates KVIrc immediately.[br]
+ @examples:
+ [example]
+ quit Time to sleep
+ [/example]
+ */
+
+ KVSCSC(quit)
+ {
+ QString szReason;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("reason",KVS_PT_STRING,KVS_PF_OPTIONAL | KVS_PF_APPENDREMAINING,szReason)
+ KVSCSC_PARAMETERS_END
+
+ if(KVSCSC_pSwitches->find('q',"quit"))
+ {
+ QTimer::singleShot(0,g_pApp,SLOT(quit()));
+ } else {
+ KVSCSC_REQUIRE_CONNECTION
+ KVSCSC_pWindow->context()->terminateConnectionRequest(KVSCSC_pSwitches->find('f',"force"),szReason,KVSCSC_pSwitches->find('u',"unexpected"));
+ }
+ return true;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: quote
+ @type:
+ command
+ @title:
+ quote
+ @syntax:
+ quote [-q] <raw command:string>
+ @short:
+ Builtin alias for raw
+ @switches:
+ !sw: -q | --quiet
+ Be quiet: do echo the raw data.
+ @description:
+ Builtin alias for the command [cmd]raw[/cmd].
+ */
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: raise
+ @type:
+ command
+ @title:
+ raise
+ @syntax:
+ raise
+ @short:
+ Raises a KVIrc frame window
+ @description:
+ Raises and activates the current KVIrc frame window....assuming that your window manager supports it.[br]
+ */
+
+ KVSCSC(raise)
+ {
+ if(!KVSCSC_pWindow->frame()->isVisible())KVSCSC_pWindow->frame()->show();
+ KVSCSC_pWindow->frame()->raise();
+ //KVSCSC_pWindow->frame()->setActiveWindow();
+ //KVSCSC_pWindow->frame()->setFocus();
+ ((KviTalMainWindow *)KVSCSC_pWindow->frame())->setActiveWindow();
+ return true;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: raw
+ @type:
+ command
+ @title:
+ raw
+ @syntax:
+ raw [-q] <raw command:string>
+ @short:
+ Sends raw data to the server
+ @switches:
+ !sw: -q | --quiet
+ Be quiet: do echo the raw data.
+ @description:
+ Sends a raw data string to the server of the current [b]IRC context[/b].[br]
+ If the -q switch (quiet) is specified, no output is printed.
+ This command is [doc:connection_dependant_commands]connection dependant[/doc].[br]
+ This command is equivalent to [cmd]quote[/cmd].
+ @examples:
+ [example]
+ [comment]# Send a private message "by hand"[/comment]
+ raw PRIVMSG Pragma :hello!
+ [comment]# Send a private message thru another connection[/comment]
+ raw -r=[fnc]$console[/fnc]([fnc]$ic[/fnc](irc.otherserver.com,othernick)) PRIVMSG Pragma :heya on this side!
+ [/example]
+ */
+
+ KVSCSC(raw)
+ {
+ QString szRawCommand;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("raw_command",KVS_PT_STRING,KVS_PF_APPENDREMAINING,szRawCommand)
+ KVSCSC_PARAMETERS_END
+
+ KVSCSC_REQUIRE_CONNECTION
+
+ KviQCString szData = KVSCSC_pConnection->encodeText(szRawCommand);
+ if(!szData.data())szData = "";
+
+ if(!KVSCSC_pConnection->sendData(szData.data()))
+ return KVSCSC_pContext->warningNoIrcConnection();
+
+ if(!KVSCSC_pSwitches->find('q',"quiet"))
+ KVSCSC_pWindow->output(KVI_OUT_RAW,__tr2qs("[RAW]: %Q"),&szRawCommand);
+
+ return true;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: rebind
+ @type:
+ command
+ @title:
+ rebind:
+ @syntax:
+ rebind [-q] <window_id:string>
+ @short:
+ Rebinds a command sequence to a specified window
+ @switches:
+ !sw: -q | --quiet
+ Causes the command to run quietly, print no warnings
+ and don't fail when the window identifier passed is empty.
+ @description:
+ Rebinds the current command sequence to the window specified by <window_id>.[br]
+ The new window will be inherited by all the subcommands and aliases called.[br]
+ -q causes the command to run quietly.[br]
+ [b]Handle with care.[/b]
+ @examples:
+ [comment]# Try this example in a channel or query window[/comment]
+ [comment]# Remember the current window id[/comment]
+ %winid = $window
+ [comment]# Rebind to the console of the current irc context[/comment]
+ rebind $console
+ echo "Hello from the console :)"
+ echo "Hello again.. still in the console"
+ [comment]# Rebind back[/comment]
+ rebind %winid
+ echo "Again in this window :)"
+ */
+
+ KVSCSC(rebind)
+ {
+ QString szWinId;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("window_id",KVS_PT_NONEMPTYSTRING,0,szWinId)
+ KVSCSC_PARAMETERS_END
+
+ KviWindow * pAux = g_pApp->findWindow(szWinId.utf8().data());
+ if(pAux)KVSCSC_pContext->setWindow(pAux);
+ else {
+ if(!KVSCSC_pSwitches->find('q',"quiet"))
+ KVSCSC_pContext->warning(__tr2qs("Window with id %Q not found: no rebinding performed"),&szWinId);
+ }
+ return true;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: return
+ @type:
+ command
+ @title:
+ return
+ @syntax:
+ return <value:variant>
+ @short:
+ Returns from the current command sequence and sets it return value
+ @description:
+ Sets the return value of the current command sequence to <string>
+ and stops the execution.[br]
+ This is more or less equivalent to calling [cmd]setreturn[/cmd] <string>
+ and then [cmd]halt[/cmd], but has no additional semantics in events.[br]
+ Starting from version 3.0.0 of kvirc you can also return
+ arrays and hashes just like any other variable types.
+ @examples:
+ return $array(item1,item2,3213,itemX);
+ @seealso:
+ [cmd]setreturn[/cmd], [cmd]break[/cmd], [cmd]halt[/cmd]
+ */
+
+ KVSCSC(returnCKEYWORDWORKAROUND)
+ {
+ if(KVSCSC_pParams->count() == 0)
+ {
+ KVSCSC_pContext->returnValue()->setNothing();
+ return false;
+ }
+ if(KVSCSC_pParams->count() == 1)
+ {
+ KVSCSC_pContext->returnValue()->copyFrom(*(KVSCSC_pParams->first()));
+ return false;
+ }
+
+ QString all;
+ KVSCSC_pParams->allAsString(all);
+ KVSCSC_pContext->returnValue()->setString(all);
+ return false;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: run
+ @type:
+ command
+ @title:
+ run
+ @syntax:
+ run <commandline:string>
+ @short:
+ Runs an external process
+ @description:
+ Runs an external process. This command does not allow
+ any other interaction with the process started. If you want
+ to grab the process output you probably need to use [cmd]exec[/cmd].
+ Run doesn't spawn a subshell in order to execute the <commandline>
+ and thus if you need shell substitutions to be made you must invoke
+ the shell by yourself (probably by passing the real command as the -c argument).
+ @examples:
+ [example]
+ run xterm
+ run xmessage -center *
+ [comment]# note the difference in * processing[/comment]
+ run /bin/bash -c "xmessage -center *"
+ [/example]
+ */
+
+ KVSCSC(run)
+ {
+ QString szCommand;
+ QStringList l;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("command",KVS_PT_STRING,0,szCommand)
+ KVSCSC_PARAMETER("parameters",KVS_PT_STRINGLIST,KVS_PF_OPTIONAL,l)
+ KVSCSC_PARAMETERS_END
+
+#ifdef COMPILE_USE_QT4
+ QProcess proc;
+ proc.start(szCommand,l);
+ // FIXME: KVSCSC_pContext->warning(__tr2qs("Failed to execute command '%Q'"),&szCommand);
+#else
+ QProcess proc(szCommand);
+ for ( QStringList::Iterator it = l.begin(); it != l.end(); ++it ) proc.addArgument(*it);
+ if(!proc.start())KVSCSC_pContext->warning(__tr2qs("Failed to execute command '%Q'"),&szCommand);
+#endif
+ return true;
+ }
+};
+
diff --git a/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp b/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp
new file mode 100644
index 00000000..1dfc4549
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_coresimplecommands_sz.cpp
@@ -0,0 +1,975 @@
+// //=============================================================================
+//
+// File : kvi_kvs_coresimplecommands_sz.cpp
+// Created on Fri 31 Oct 2003 00:04:25 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_coresimplecommands.h"
+
+#include "kvi_kvs_popupmanager.h"
+#include "kvi_kvs_script.h"
+
+#include "kvi_ircconnection.h"
+#include "kvi_console.h"
+#include "kvi_locale.h"
+#include "kvi_app.h"
+#include "kvi_asynchronousconnectiondata.h"
+#include "kvi_frame.h"
+#include "kvi_netutils.h"
+#include "kvi_menubar.h"
+#include "kvi_userinput.h"
+#include <cstdlib>
+
+namespace KviKvsCoreSimpleCommands
+{
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: say
+ @type:
+ command
+ @title:
+ say
+ @syntax:
+ say [-x] [-q] [-r=<window_id>] <text:string>
+ @switches:
+ !sw: -q | --quiet
+ Run quietly
+ !sw: -r=<window_id> | --rebind=<window_id>
+ Standard command rebinding switch
+ !sw: -x | --allow-exec
+ Allow the execution of commands by interpreting the leading slash in th <text>
+ @short:
+ Type text in a window
+ @description:
+ This command is more or less equivalent to typing text in the input
+ entry of the current window. If the -r switch is used
+ then the command is rebound to the window specified by <window_id>.
+ The main difference is that the variables and identifiers in <text>
+ are always parsed (when typing this happen only if the text is a command).[br]
+ With -x you can also use this command to execute "variable" commands too:
+ if <text> begins with a slash then it will be treated as a command
+ to be executed (after parsing the identifiers etc.).[br]
+ Please note that using /say -x with a <text> that isn't a constant
+ in the script but comes from some unidentified external source (e.g. the network)
+ is a potential security flaw: don't do it.
+ When the -x switch is not used, the text is never interpreted as command.
+ -q causes the command to run quietly.[br]
+ Please note that /say will also trigger the [event:ontextinput]OnTextInput[/event] event.
+ [b]Handle with care.[/b]
+ */
+
+ KVSCSC(say)
+ {
+ QString szText;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("text",KVS_PT_STRING,KVS_PF_APPENDREMAINING,szText)
+ KVSCSC_PARAMETERS_END
+
+ if(KVSCSC_pSwitches->find('x',"allow-exec"))
+ {
+ // allow execution of commands
+ if(!KviUserInput::parse(szText,KVSCSC_pWindow,__tr2qs("say: injected commandline")))
+ {
+ if(!KVSCSC_pSwitches->find('q',"quiet"))
+ KVSCSC_pContext->warning(__tr2qs("Say parse error: Broken command"));
+ }
+ } else {
+ KviUserInput::parseNonCommand(szText,KVSCSC_pWindow);
+ }
+ return true;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: server
+ @type:
+ command
+ @title:
+ server
+ @syntax:
+ server [switches] [<server:string> [<port:uint>]]
+ @keyterms:
+ connecting to a server
+ @short:
+ Connects to the specified server
+ @switches:
+ !sw: -b=<local address:string> | --bind-address=<local address:string>
+ Bind the outgoing connection to <local address>. The <local address> must be
+ the IP address of a local interface suitable for contacting the remote <server>:
+ this means that if you're going to use the -i switch, the <local address>
+ must be an IPV6 address.
+ On most systems it is also possible to use a local interface name as <local address>;
+ in this way the interface address can be resolved at runtime by the KVIrc network engine.
+
+ !sw: -c=<command sequence:string> | --command=<command sequence:string>
+ The <command sequence> will be executed just after the login operations
+ have been completed.
+
+ !sw: -f=<socket filter:string> | --filter=<socket filter:string>
+ Activates <socket filter> on the connection.
+ A socket filter is a plugin that can adapt the IRC protocol to other existing protocols such as OpenNap.
+ For plain IRC it is not needed.
+
+ !sw: -i | --ipv6
+ Makes the connection by using the IPV6 protocol
+ (if supported by the executable)
+
+ !sw: -n | --new-context
+ Forces the connection to be attempted in a new IRC context instead of the current one.
+
+ !sw: -p=<password:string> | --password=<password:string>
+ Uses <password> to login to the server (the password will be stored in the server
+ entry too).
+
+ !sw: -q=<nick:string> | --nickname=<nick:string>
+ Uses <nick> to login to the server (the nicknames will be stored in the server
+ entry too).
+
+ !sw: -s | --ssl
+ Activates the SSL support for this connection
+
+ !sw: -u | --unused-context
+ Forces the connection to be attempted in the first IRC context that has
+ no connection in progress. If all the IRC contexts have connections in progress
+ then a new one is created.
+
+ !sw: -l | --last
+ When <server> and <port> are empty use the last
+ @description:
+ Attempts a connection to the specified <server>
+ on the specified <port>. If no <port> is specified
+ the default 6667 is used. If no <server> is specified,
+ the currently selected server from the server list is used
+ unless the -l switch is passed: in this case the last server
+ that was used in the IRC context is re-used.
+ If the <server> is a valid IPV6 address, the -i switch is implied.[br]
+ The <server> is added to the server list (if not already
+ there) and set as current.[br]
+ [br]
+ If <server> is in the form "id:<some_string>" then <some_string>
+ is interpreted as the server's internal id (specified in the options dialog).
+ This is useful when you need to force kvirc to choose between multiple
+ server entries with the same hostname and port stored in the database.[br]
+ Please note that this form causes most of the switches to have no effect
+ since the entry in the database will override them. If no server
+ entry with the specified identifier is found then an error will be generated
+ and the connection attempt will stop.
+ [br]
+ If <server> doesn't seem to be a valid ip address or hostname (i.e. it contains no dots)
+ and it doesn't look to be in the form "id:<some_string>" then
+ it is assumed to be a network name and if such a network is found
+ in the server list then the best server for that network is contacted.
+ (KVIrc tries to guess the round-robin (random) servers first).[br]
+ This behaviour can be forced by adding the "net:" prefix to the <server>
+ (so it will work even if the network name contains a dot).[br]
+ [br]
+ The connection is attempted in the current IRC context. If there is already
+ a connection in progress then it is "brutally" terminated.[br]
+ @examples:
+ [example]
+ server irc.tin.it
+ server -i irc6.ircd.it
+ server -i ircd.stealth.net 6667
+ server irc.undernet.org 6665
+ server -n irc.openprojects.net
+ server -c="join #kvirc" irc.stealth.net 6665
+ server -b=ppp0 irc.tin.it
+ server undernet
+ server id:mybouncerwithusername1
+ server id:mybouncerwithusername2
+ server net:under.net
+ [/example]
+ */
+
+ KVSCSC(server)
+ {
+ QString szServer;
+ kvs_uint_t uPort;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("server",KVS_PT_STRING,KVS_PF_OPTIONAL,szServer)
+ KVSCSC_PARAMETER("port",KVS_PT_UINT,KVS_PF_OPTIONAL,uPort)
+ KVSCSC_PARAMETERS_END
+
+ KviConsole * console = 0;
+ if(KVSCSC_pSwitches->find('n',"new-context"))console = KVSCSC_pWindow->frame()->createNewConsole();
+ else {
+ if(KVSCSC_pSwitches->find('u',"unused-context"))
+ {
+ // first try the current console
+ console = KVSCSC_pWindow->console();
+ if(console)
+ {
+ // if there is a connection in progress, proceed in searching
+ if(console->connectionInProgress())
+ {
+ console = 0;
+ }
+ }
+ if(!console)
+ {
+ // yep , have to search
+ console = KVSCSC_pWindow->frame()->firstNotConnectedConsole();
+ if(!console)
+ {
+ console = KVSCSC_pWindow->frame()->createNewConsole();
+ }
+ }
+ } else console = KVSCSC_pWindow->console();
+ }
+
+ QString szCmd,szBindAddress,szSocketFilter,szPassword,szNick;
+ KVSCSC_pSwitches->getAsStringIfExisting('c',"command",szCmd);
+ KVSCSC_pSwitches->getAsStringIfExisting('b',"bind-address",szBindAddress);
+ KVSCSC_pSwitches->getAsStringIfExisting('f',"filter",szSocketFilter);
+ KVSCSC_pSwitches->getAsStringIfExisting('p',"password",szPassword);
+ KVSCSC_pSwitches->getAsStringIfExisting('q',"nickname",szNick);
+
+ if(!console)
+ {
+ KVSCSC_pContext->error(__tr2qs("Couldn't find a suitable IRC context for the connection, try using -n or -u"));
+ return false;
+ }
+
+ if(szServer.isEmpty())
+ {
+ // just as hitting "connect"
+ if(console->connectionInProgress())
+ {
+ KVSCSC_pContext->error(__tr2qs("Another connection is already in progress in the selected IRC context"));
+ return false;
+ } else {
+ KviAsynchronousConnectionData * d = new KviAsynchronousConnectionData();
+ d->bUseLastServerInContext = KVSCSC_pSwitches->find('l',"last") != 0;
+ d->szCommandToExecAfterConnect = szCmd;
+ d->szBindAddress = szBindAddress;
+ d->szPass = szPassword;
+ d->szNick = szNick;
+ d->szLinkFilter = szSocketFilter;
+ console->context()->setAsynchronousConnectionData(d);
+ console->context()->connectToCurrentServer();
+ }
+ } else {
+ // server is not empty.
+ KviAsynchronousConnectionData * d = new KviAsynchronousConnectionData();
+ d->bUseSSL = (KVSCSC_pSwitches->find('s',"ssl") != 0);
+ d->szServer = szServer;
+ d->uPort = (kvi_u32_t)uPort;
+ d->szLinkFilter = szSocketFilter;
+ d->bPortIsOk = (uPort > 0);
+#ifdef COMPILE_IPV6_SUPPORT
+ d->bUseIpV6 = (KVSCSC_pSwitches->find('i',"ipv6") != 0) || KviNetUtils::isValidStringIp_V6(szServer);
+#else
+ d->bUseIpV6 = false;
+#endif
+ d->szCommandToExecAfterConnect = szCmd;
+ d->szBindAddress = szBindAddress;
+ d->szPass = szPassword;
+ d->szNick = szNick;
+ console->context()->setAsynchronousConnectionData(d);
+ console->context()->beginAsynchronousConnect(0);
+ }
+
+ return true;
+ };
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: service
+ @type:
+ command
+ @title:
+ service
+ @syntax:
+ service <nickname> <reserved> <distribution> <type> <reserved> [:]<info>
+ @short:
+ Registers a new service
+ @description:
+ Registers a new IRC service: this is for IRC operators only.[br]
+ This command is a [doc:rfc2821wrappers]RFC2821 command wrapper[/doc]; see that document for more information.[br]
+ WARNING: the <info> parameter may contain spaces: in that case you MUST add the leading ':' character.[br]
+ */
+ // RFC2921 wrapper
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: setmenu
+ @type:
+ command
+ @title:
+ setmenu
+ @syntax:
+ setmenu [-q] [-i=<index:integer>] <visible_text:string> [menu_name:string]
+ @short:
+ Adds a popup menu to the menu bar
+ @switches:
+ !sw: -q | --quiet
+ Run quietly: do not print any warnings
+ !sw: -i=<index:integer> | --index=<index:integer>
+ Place the popup menu on the left of the existing menubar item at the specified index
+ @description:
+ Adds an [b]existing[/b] popup menu to the current frame's menu bar.[br]
+ <visible_text> is used as menu identification and obviously as the visible
+ menu bar text for the new popup.[br]
+ If a popup menu with the same <visible_text> already exists in the current frame
+ it is removed first.[br]
+ <visible_text> can optionally contain the "&" character to identify
+ the popup menu accelerator.[br]
+ [menu_name] , if given , must be avalid name of a popup menu created earlier
+ with [cmd]defpopup[/cmd] (or the script center).[br]
+ If [menu_name] is not given , the popup menu identified by <visible_text> is removed.[br]
+ If the -i switch is used , <index> is a [b]zero based index[/b] of the default
+ menu-bar text item: the new popup menu will be placed on the left of that default item.[br]
+ If -q is used , this command prints no warnings (so you can safely use it to remove
+ popup menus without being sure that they actually are in there).
+ The warning itself serves to debugging purposes for the scripter.[br]
+ @seealso:
+ [cmd]defpopup[/cmd]
+ @examples:
+ setmenu -q -i=2 Test apopup
+ setmenu Test
+ setmenu ThisDoesNotExist
+ setmenu -q ThisDoesNotExist
+ */
+
+ KVSCSC(setmenu)
+ {
+ QString szVisibleText,szPopupName;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("visible_text",KVS_PT_NONEMPTYSTRING,0,szVisibleText)
+ KVSCSC_PARAMETER("popup_name",KVS_PT_STRING,KVS_PF_OPTIONAL,szPopupName)
+ KVSCSC_PARAMETERS_END
+
+ if(szPopupName.isEmpty())
+ {
+ if(!(KVSCSC_pWindow->frame()->mainMenuBar()->removeMenu(szVisibleText)))
+ {
+ if(!KVSCSC_pSwitches->find('q',"quiet"))KVSCSC_pContext->warning(__tr2qs("No menu bar item with text '%Q'"),&szPopupName);
+ }
+ return true;
+ }
+
+ KviKvsPopupMenu * p = KviKvsPopupManager::instance()->lookup(szPopupName);
+ int idx = -1;
+ if(KviKvsVariant * pIdx = KVSCSC_pSwitches->find('i',"index"))
+ {
+ kvs_int_t iIdx;
+ if(pIdx->asInteger(iIdx))
+ idx = iIdx;
+ else {
+ if(!KVSCSC_pSwitches->find('q',"quiet"))
+ KVSCSC_pContext->warning(__tr2qs("Invalid index specified: ignored"));
+ }
+ }
+ KVSCSC_pWindow->frame()->mainMenuBar()->removeMenu(szVisibleText);
+
+ idx = KVSCSC_pWindow->frame()->mainMenuBar()->getDefaultItemRealIndex(idx);
+
+ if(p)KVSCSC_pWindow->frame()->mainMenuBar()->addMenu(szVisibleText,p,idx);
+ else {
+ if(!KVSCSC_pSwitches->find('q',"quiet"))KVSCSC_pContext->warning(__tr2qs("The popup '%Q' is not defined"),&szPopupName);
+ }
+
+ return true;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: setreturn
+ @type:
+ command
+ @title:
+ setreturn
+ @syntax:
+ setreturn <string>
+ @short:
+ Sets the return value of the current command sequence
+ @description:
+ Sets the return value of the current command sequence to <string>.
+ You can call this command multiple times in a command sequence
+ (so in fact use it as a write-only variable).
+ @examples:
+ @seealso:
+ [cmd]return[/cmd]
+ */
+
+ KVSCSC(setreturn)
+ {
+ if(KVSCSC_pParams->count() == 0)
+ {
+ KVSCSC_pContext->returnValue()->setNothing();
+ return false;
+ }
+ if(KVSCSC_pParams->count() == 1)
+ {
+ KVSCSC_pContext->returnValue()->copyFrom(*(KVSCSC_pParams->first()));
+ return false;
+ }
+
+ QString all;
+ KVSCSC_pParams->allAsString(all);
+ KVSCSC_pContext->returnValue()->setString(all);
+ return true;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: sockets
+ @type:
+ command
+ @title:
+ sockets
+ @syntax:
+ sockets [[remote server] server mask]
+ @short:
+ Requests the sockets info from a server
+ @description:
+ Requests the sockets information from the specified server or the current server if no [remote server] is specified.[br]
+ The reply can be filtered by <server mask>.[br]
+ This command is a [doc:rfc2821wrappers]RFC2821 command wrapper[/doc]; see that document for more information.[br]
+ */
+ // RFC2821 wrapper
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: squery
+ @type:
+ command
+ @title:
+ squery
+ @syntax:
+ squery <target> :<text>
+ @short:
+ Sends a message to a service
+ @description:
+ Sends a message to a service in a form similar to [cmd]privmsg[/cmd].[br]
+ This command is a [doc:rfc2821wrappers]RFC2821 command wrapper[/doc]; see that document for more information.[br]
+ */
+ // RFC2821 wrapper
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: squit
+ @type:
+ command
+ @title:
+ squit
+ @syntax:
+ squit <server> [:]<comment>
+ @short:
+ Disconnects a server socket (ircops only)
+ @description:
+ Disconnects a server socket: this is for IRC operators only.[br]
+ This command is a [doc:rfc2821wrappers]RFC2821 command wrapper[/doc]; see that document for more information.[br]
+ WARNING: the <comment> parameter may contain spaces: in that case you MUST add the leading ':' character
+ before.[br]
+ */
+ // RFC2821 wrapper
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: srand
+ @type:
+ command
+ @title:
+ srand
+ @syntax:
+ srand <seed:integer>
+ @short:
+ Initializes the random number generator
+ @description:
+ Initializes the random number generator "seeding" it with
+ <seed> which must be an integer. If no <seed> is passed it defaults to 1.
+ Sequences of random numbers can be repeated by using the
+ same <seed> value.
+ @examples:
+ */
+
+ KVSCSC(srand)
+ {
+ kvs_int_t iSeed;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("seed",KVS_PT_INT,KVS_PF_OPTIONAL,iSeed)
+ KVSCSC_PARAMETERS_END
+ if(KVSCSC_pParams->count() < 1)iSeed = 1;
+ ::srand(iSeed);
+ return true;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: stats
+ @type:
+ command
+ @title:
+ stats
+ @syntax:
+ stats [query [target server]]
+ @short:
+ Requests the stats info from a server
+ @description:
+ Requests the stats information from the specified server or the current server if no [target server] is specified.[br]
+ The query parameter is usually a letter indicating the type of the query requested: some query letters
+ are defined by [doc]rfc2812[/doc] and some others are server implementation dependant.[br]
+ This command is a [doc:rfc2821wrappers]RFC2821 command wrapper[/doc]; see that document for more information.[br]
+ */
+ // RFC2821 wrapper
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: time
+ @type:
+ command
+ @title:
+ time
+ @syntax:
+ time [target server]
+ @short:
+ Requests the current local time info from a server
+ @description:
+ Requests time information from the specified server or the current server if no [target server] is specified.[br]
+ This command is a [doc:rfc2821wrappers]RFC2821 command wrapper[/doc]; see that document for more information.[br]
+ */
+ // RFC2821 wrapper
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: topic
+ @type:
+ command
+ @title:
+ topic
+ @syntax:
+ topic [<channel:string> [topic text:string]]
+ @short:
+ Changes topic for the specified channel
+ @description:
+ Changes the topic for the specified <channel> to <topic text>.
+ If no topic is specified, the current channel topic will be returned.[br]
+ This command is "server based"; you will see its results only
+ after the server acknowledges it.[br]
+ This command is [doc:connection_dependant_commands]connection dependant[/doc].
+ @examples:
+ [example]
+ topic #kvirc KVIrc 3.4.0 has been released!
+ [/example]
+ */
+
+ KVSCSC(topic)
+ {
+ QString szChannel;
+ QString szTopic;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("channel",KVS_PT_NONEMPTYSTRING,KVS_PF_OPTIONAL,szChannel)
+ KVSCSC_PARAMETER("topic",KVS_PT_STRING,KVS_PF_OPTIONAL | KVS_PF_APPENDREMAINING,szTopic)
+ KVSCSC_PARAMETERS_END
+
+ KVSCSC_REQUIRE_CONNECTION
+
+ if(szChannel.isEmpty())
+ {
+ if(KVSCSC_pWindow->type() == KVI_WINDOW_TYPE_CHANNEL)
+ szChannel = KVSCSC_pWindow->target();
+ else {
+ KVSCSC_pContext->error(__tr2qs("No target channel specified and the current window is not a channel"));
+ return false;
+ }
+ }
+
+ KviQCString szC = KVSCSC_pConnection->encodeText(szChannel);
+ KviQCString szT = KVSCSC_pConnection->encodeText(szTopic);
+ if(szTopic.isEmpty())
+ {
+ if(!KVSCSC_pConnection->sendFmtData("TOPIC %s",szC.data()))
+ return KVSCSC_pContext->warningNoIrcConnection();
+ } else {
+ if(!KVSCSC_pConnection->sendFmtData("TOPIC %s :%s",szC.data(),szT.data()))
+ return KVSCSC_pContext->warningNoIrcConnection();
+ }
+
+ return true;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: trace
+ @type:
+ command
+ @title:
+ trace
+ @syntax:
+ trace <target>
+ @short:
+ Requests trace information about a specified machine in the network
+ @description:
+ Requests trace information about a specified machine in the network.[br]
+ This command is a [doc:rfc2821wrappers]RFC2821 command wrapper[/doc]; see that document for more information.[br]
+ */
+ // RFC2821 wrapper
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: trload
+ @type:
+ command
+ @title:
+ trload
+ @syntax:
+ trload [-v] <catalogue:string> [<catalogue_dir:string>]
+ @switches:
+ !sw: -v | --verbose
+ Warn if a catalogue for the current language cannot be found
+ @short:
+ Loads a translation catalogue
+ @description:
+ Loads the specified translation <catalogue> in the current user language.[br]
+ The translation catalogues are *.mo files compiled with the standard
+ msgfmt program from the gettext package.[br]
+ The syntax of the catalogue names is:[br]
+ [b]<catalogue_dir>/<catalogue>_<language>.mo[/b][br]
+ KVIrc looks for the catalogues in <catalogue_dir> (if specified)
+ and in the locale subdirectory of the global and local KVIrc directories.[br]
+ <language> is choose automatically by KVIrc depending on the user's locale.[br]
+ Catalogues MUST be in UTF8 encoding.[br]
+ After a translation catalogue has been loaded you can
+ access its strings by the means of [fnc]$tr[/fnc].[br]
+ This function doesn't print any warning unless -v is specified.[br]
+ Please note that KVIrc attempts to load the <catalogue> automatically
+ when $tr() is used but it looks only in [fnc]$file.localdir[/fnc]/locale/
+ and in [fnc]$file.globaldir[/fnc]/locale/. This command is then useful
+ to load catalogues that reside in different directories.[br]
+ [b]NOTE[/b][br]
+ This feature is currently work in progress: the scripting engine
+ is not yet fully unicode and thus some more exotic translations may still suffer...
+ @seealso:
+ [fnc]$tr[/fnc], [cmd]trunload[/cmd]
+ */
+
+ KVSCSC(trload)
+ {
+ QString szCatalogue,szDir;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("catalogue",KVS_PT_NONEMPTYSTRING,0,szCatalogue)
+ KVSCSC_PARAMETER("catalogueDir",KVS_PT_STRING,KVS_PF_OPTIONAL,szDir)
+ KVSCSC_PARAMETERS_END
+
+ if(!szDir.isEmpty())
+ {
+ if(KviLocale::loadCatalogue(szCatalogue,szDir))
+ return true;
+ }
+
+ g_pApp->getLocalKvircDirectory(szDir,KviApp::Locale);
+
+ if(KviLocale::loadCatalogue(szCatalogue,szDir))
+ return true;
+
+ g_pApp->getGlobalKvircDirectory(szDir,KviApp::Locale);
+
+ if(KviLocale::loadCatalogue(szCatalogue,szDir))
+ return true;
+
+ if(KVSCSC_pSwitches->find('v',"verbose"))
+ KVSCSC_pContext->warning(__tr2qs("No catalogue %Q for the current language found"),&szCatalogue);
+
+ return true;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: trunload
+ @type:
+ command
+ @title:
+ trunload
+ @syntax:
+ trunload [-v] <catalogue:string>
+ @switches:
+ !sw: -v | --verbose
+ Warn if the specified catalogue wasn't loaded at all
+ @short:
+ Unloads a translation catalogue
+ @description:
+ Unloads a specified translation catalogue.[br]
+ When you no longer need the translation strings contained in the
+ catalogue just unload it to free memory.[br]
+ This command prints no warnings unload -v is used.[br]
+ @seealso:
+ [fnc]$tr[/fnc], [cmd]trload[/cmd]
+ */
+
+ KVSCSC(trunload)
+ {
+ QString szCatalogue;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("catalogue",KVS_PT_NONEMPTYSTRING,0,szCatalogue)
+ KVSCSC_PARAMETERS_END
+
+ if(!KviLocale::unloadCatalogue(szCatalogue))
+ {
+ if(KVSCSC_pSwitches->find('v',"verbose"))
+ KVSCSC_pContext->warning(__tr2qs("The catalogue %Q was not loaded"),&szCatalogue);
+ }
+ return true;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: unban
+ @type:
+ command
+ @title:
+ unban
+ @syntax:
+ unban <mask_list>
+ @short:
+ Unsets ban masks for the channel
+ @description:
+ Removes the ban masks specified in the <mask_list>,
+ which is a comma separated list of nicknames.
+ This command works only if executed in a channel window.
+ The command is translated to a set of MODE messages containing
+ a variable number of -b flags.
+ This command is [doc:connection_dependant_commands]connection dependant[/doc].
+ @examples:
+ [example]
+ # Unban people on the current channel (say #kvirc)
+ unban Maxim,Gizmo!*@*,*!root@*
+ # Do the same but from another window belongin to this IRC context
+ unban -r=[fnc]$channel[/fnc](#kvirc) Maxim,Gizmo!*@*,*!root@*
+ # Do the same from any window
+ unban -r=[fnc]$channel[/fnc](#kvirc,[fnc]$context[/fnc](irc.myirc.net,Pragma)) Maxim,Gizmo!*@*,*!root*@*
+ [/example]
+ @seealso:
+ [cmd]op[/cmd],
+ [cmd]deop[/cmd],
+ [cmd]voice[/cmd],
+ [cmd]devoice[/cmd],
+ [cmd]ban[/cmd]
+ */
+
+ KVSCSC(unban)
+ {
+ return multipleModeCommand(__pContext,__pParams,__pSwitches,'-','b');
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: version
+ @type:
+ command
+ @title:
+ version
+ @syntax:
+ version [target server]
+ @short:
+ Requests the version of a server
+ @description:
+ Requests the version information from the specified server or the current server if no [target server] is specified.[br]
+ This command is a [doc:rfc2821wrappers]RFC2821 command wrapper[/doc]; see that document for more information.[br]
+ */
+ // RFC2821 wrapper
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: voice
+ @type:
+ command
+ @title:
+ voice
+ @syntax:
+ voice <nickname_list>
+ @short:
+ Sets voice flag for the specified users
+ @description:
+ Sets the voice flag for the users specified in <nickname_list>,
+ which is a comma separated list of nicknames.
+ This command works only if executed in a channel window.
+ The command is translated to a set of MODE messages containing
+ a variable number of +v flags.
+ This command is [doc:connection_dependant_commands]connection dependant[/doc].
+ @examples:
+ [example]
+ voice Pragma,Crocodile
+ [/example]
+ @seealso:
+ [cmd]op[/cmd], [cmd]deop[/cmd], [cmd]devoice[/cmd]
+ */
+
+ KVSCSC(voice)
+ {
+ return multipleModeCommand(__pContext,__pParams,__pSwitches,'+','v');
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: warning
+ @type:
+ command
+ @title:
+ warning
+ @syntax:
+ warning <message:text>
+ @short:
+ Prints a warning message
+ @description:
+ Prints a warning message with the appropriate color and message type.
+ It doesn't alter the execution of the current script.
+ @seealso:
+ [cmd]error[/cmd]
+ */
+
+ KVSCSC(warning)
+ {
+ QString szAll;
+ KVSCSC_pParams->allAsString(szAll);
+ KVSCSC_pContext->warning("%Q",&szAll);
+
+ return true;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: who
+ @type:
+ command
+ @title:
+ who
+ @syntax:
+ who {[mask] | [channel]}
+ @short:
+ Requests WHO information
+ @description:
+ Requests WHO information about the specified user or channel.[br]
+ This command is a [doc:rfc2821wrappers]RFC2821 command wrapper[/doc]; see that document for more information.[br]
+ */
+ // RFC2821 wrapper
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: whois
+ @type:
+ command
+ @title:
+ whois
+ @syntax:
+ whois [server] <nickname>
+ @short:
+ Requests user information
+ @description:
+ Requests information about an irc user specified by <nickname>.[br]
+ If [server] is specified, the request is directed to that one. [server]
+ may be a nickname so that the request is redirected to the server that
+ the user with that nickname is connected to.[br]
+ An useful trick is to use the following syntax:[br]
+ whois <nickname> <nickname>[br]
+ This will requests information about the user <nickname> to the server that he is currently
+ connected to; returning the idle time among the other common information.[br]
+ This command is [doc:connection_dependant_commands]connection dependant[/doc].
+ @examples:
+ [example]
+ [comment]# Query info about Pragma[/comment]
+ whois Pragma
+ [comment]# Get the Pragma idle time[/comment]
+ whois Pragma Pragma
+ [/example]
+ @seealso:
+ [cmd]whowas[/cmd]
+ */
+
+ KVSCSC(whois)
+ {
+ QString szNick;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("nickname",KVS_PT_NONEMPTYSTRING,KVS_PF_APPENDREMAINING,szNick)
+ KVSCSC_PARAMETERS_END
+
+ KviQCString szData = KVSCSC_pContext->window()->encodeText(szNick);
+
+ if(!KVSCSC_pContext->connection())return KVSCSC_pContext->warningNoIrcConnection();
+ if(!KVSCSC_pContext->connection()->sendFmtData("WHOIS %s",szData.data()))return KVSCSC_pContext->warningNoIrcConnection();
+
+ return true;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /*
+ @doc: whowas
+ @type:
+ command
+ @title:
+ whowas
+ @syntax:
+ whowas <nickname>
+ @short:
+ Requests user information
+ @description:
+ Requests information about an irc user specified by <nickname>.[br]
+ Whowas requests "history" records. See [doc:rfc2812]RFC2812[/doc] for more info.[br]
+ This command is [doc:connection_dependant_commands]connection dependant[/doc].
+ @examples:
+ [example]
+ [comment]# Query past info about Pragma[/comment]
+ whowas Pragma
+ [/example]
+ @seealso:
+ [cmd]whois[/cmd]
+ */
+
+ KVSCSC(whowas)
+ {
+ QString szNick;
+ KVSCSC_PARAMETERS_BEGIN
+ KVSCSC_PARAMETER("nickname",KVS_PT_NONEMPTYSTRING,KVS_PF_APPENDREMAINING,szNick)
+ KVSCSC_PARAMETERS_END
+
+ KviQCString szData = KVSCSC_pContext->window()->encodeText(szNick);
+
+ if(!KVSCSC_pContext->connection())return KVSCSC_pContext->warningNoIrcConnection();
+ if(!KVSCSC_pContext->connection()->sendFmtData("WHOWAS %s",szData.data()))return KVSCSC_pContext->warningNoIrcConnection();
+
+ return true;
+ }
+
+};
diff --git a/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp b/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp
new file mode 100644
index 00000000..ec1efde6
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_dnsmanager.cpp
@@ -0,0 +1,180 @@
+//=============================================================================
+//
+// File : kvi_kvs_dnsmanager.cpp
+// Created on Wed 04 Aug 2004 04:38:31 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_dnsmanager.h"
+#include "kvi_dns.h"
+#include "kvi_app.h"
+#include "kvi_window.h"
+#include "kvi_out.h"
+#include "kvi_iconmanager.h"
+#include "kvi_kvs_script.h"
+#include "kvi_kvs_variantlist.h"
+#include "kvi_string.h"
+#include "kvi_locale.h"
+#include "kvi_error.h"
+
+KviKvsDnsManager * KviKvsDnsManager::m_pInstance = 0;
+
+
+KviKvsDnsObject::KviKvsDnsObject(KviDns * pDns,KviWindow * pWnd,const QString &szQuery,bool bRebindOnWindowClose,KviKvsScript * pCallback,KviKvsVariantList * pParameterList)
+{
+ m_pDns = pDns;
+ m_pWindow = pWnd;
+ m_szQuery = szQuery;
+ m_pCallback = pCallback;
+ m_pParameterList = pParameterList;
+ m_bRebindOnWindowClose = bRebindOnWindowClose;
+}
+
+KviKvsDnsObject::~KviKvsDnsObject()
+{
+ QObject::disconnect(m_pDns,0,0,0);
+ if(m_pDns->isRunning())
+ {
+ g_pApp->collectGarbage(m_pDns);
+ } else {
+ delete m_pDns;
+ }
+ if(m_pCallback)delete m_pCallback;
+ if(m_pParameterList)delete m_pParameterList;
+}
+
+
+KviKvsDnsManager::KviKvsDnsManager()
+: QObject()
+{
+ m_pDnsObjects = 0;
+}
+
+KviKvsDnsManager::~KviKvsDnsManager()
+{
+ if(m_pDnsObjects)delete m_pDnsObjects;
+}
+
+void KviKvsDnsManager::init()
+{
+ if(KviKvsDnsManager::m_pInstance)
+ {
+ debug("Trying to double init() the dns manager!");
+ return;
+ }
+ KviKvsDnsManager::m_pInstance = new KviKvsDnsManager();
+}
+
+void KviKvsDnsManager::done()
+{
+ if(!KviKvsDnsManager::m_pInstance)
+ {
+ debug("Trying to call done() on a non existing dns manager!");
+ return;
+ }
+ delete KviKvsDnsManager::m_pInstance;
+ KviKvsDnsManager::m_pInstance = 0;
+}
+
+void KviKvsDnsManager::addDns(KviKvsDnsObject * pObject)
+{
+ if(!m_pDnsObjects)
+ {
+ m_pDnsObjects = new KviPointerHashTable<void *,KviKvsDnsObject>;
+ m_pDnsObjects->setAutoDelete(true);
+ }
+ m_pDnsObjects->replace(pObject->dns(),pObject);
+ connect(pObject->dns(),SIGNAL(lookupDone(KviDns *)),this,SLOT(dnsLookupTerminated(KviDns *)));
+}
+
+void KviKvsDnsManager::dnsLookupTerminated(KviDns * pDns)
+{
+ KviKvsDnsObject * o = m_pDnsObjects->find(pDns);
+ if(!o)
+ {
+ debug("KviKvsDnsManager::dnsLookupTerminated(): can't find the KviKvsDnsObject structure");
+ return;
+ }
+
+ if(!g_pApp->windowExists(o->window()))
+ {
+ if(o->rebindOnWindowClose())
+ {
+ o->setWindow(g_pActiveWindow);
+ } else {
+ // just kill it
+ m_pDnsObjects->remove(pDns);
+ return;
+ }
+ }
+
+ if(o->callback())
+ {
+ KviKvsScript copy(*(o->callback()));
+ if(!o->parameterList())
+ o->setParameterList(new KviKvsVariantList());
+
+ if(o->dns()->state() == KviDns::Failure)
+ {
+ // $4... is the magic data
+ o->parameterList()->prepend(new KviKvsVariant()); // $3
+ o->parameterList()->prepend(new KviKvsVariant(KviError::getDescription(o->dns()->error()))); // $2
+ o->parameterList()->prepend(new KviKvsVariant((kvs_int_t)0)); // $1
+ } else {
+ QString * fh = o->dns()->hostnameList()->first();
+ QString * fi = o->dns()->ipAddressList()->first();
+
+ // $4... is the magic data
+ o->parameterList()->prepend(new KviKvsVariant(fh ? *fh : QString("?.?"))); // $3
+ o->parameterList()->prepend(new KviKvsVariant(fi ? *fi : QString("?.?.?.?"))); // $2
+ o->parameterList()->prepend(new KviKvsVariant((kvs_int_t)1)); // $1
+ }
+ o->parameterList()->prepend(new KviKvsVariant(o->query())); // $0
+
+ copy.run(o->window(),o->parameterList(),0,KviKvsScript::PreserveParams);
+
+ } else {
+ QString szQuery = o->dns()->query();
+ o->window()->output(KVI_OUT_HOSTLOOKUP,__tr2qs("DNS Lookup result for query \"%Q\""),&szQuery);
+
+ if(o->dns()->state() == KviDns::Failure)
+ {
+ QString szErr = KviError::getDescription(o->dns()->error());
+ o->window()->output(KVI_OUT_HOSTLOOKUP,__tr2qs("Error: %Q"),&szErr);
+ } else {
+ int idx = 1;
+ for(QString * h = o->dns()->hostnameList()->first();h;h = o->dns()->hostnameList()->next())
+ {
+ o->window()->output(KVI_OUT_HOSTLOOKUP,__tr2qs("Hostname %d: %Q"),idx,h);
+ idx++;
+ }
+ idx = 1;
+ for(QString * a = o->dns()->ipAddressList()->first();a;a = o->dns()->ipAddressList()->next())
+ {
+ o->window()->output(KVI_OUT_HOSTLOOKUP,__tr2qs("IP address %d: %Q"),idx,a);
+ idx++;
+ }
+ }
+ }
+
+ m_pDnsObjects->remove(pDns);
+}
diff --git a/src/kvirc/kvs/kvi_kvs_dnsmanager.h b/src/kvirc/kvs/kvi_kvs_dnsmanager.h
new file mode 100644
index 00000000..69d152c5
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_dnsmanager.h
@@ -0,0 +1,86 @@
+#ifndef _KVI_KVS_DNSMANAGER_H_
+#define _KVI_KVS_DNSMANAGER_H_
+//=============================================================================
+//
+// File : kvi_kvs_dnsmanager.h
+// Created on Wed 04 Aug 2004 04:38:31 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include <qobject.h>
+#include "kvi_pointerhashtable.h"
+#include <qstring.h>
+
+class KviDns;
+class KviWindow;
+class KviKvsScript;
+class KviKvsVariantList;
+
+class KviKvsDnsObject
+{
+public:
+ KviKvsDnsObject(KviDns * pDns,
+ KviWindow * pWnd,
+ const QString &szQuery,
+ bool bRebindOnWindowClose = true,
+ KviKvsScript * pCallback = 0,
+ KviKvsVariantList * pParameterList = 0);
+ ~KviKvsDnsObject();
+protected:
+ KviDns * m_pDns;
+ KviWindow * m_pWindow;
+ QString m_szQuery;
+ KviKvsScript * m_pCallback; // callback to be executed when the dns terminates
+ KviKvsVariantList * m_pParameterList; // parameter list (magic)
+ bool m_bRebindOnWindowClose; // should we trigger the callback even if m_pWindow no longer exists ?
+public:
+ KviDns * dns(){ return m_pDns; };
+ KviWindow * window(){ return m_pWindow; };
+ KviKvsScript * callback(){ return m_pCallback; };
+ KviKvsVariantList * parameterList(){ return m_pParameterList; };
+ const QString & query(){ return m_szQuery; };
+ bool rebindOnWindowClose(){ return m_bRebindOnWindowClose; };
+ void setWindow(KviWindow * pWnd){ m_pWindow = pWnd; };
+ void setParameterList(KviKvsVariantList * pList){ m_pParameterList = pList; };
+};
+
+class KviKvsDnsManager : public QObject
+{
+ Q_OBJECT
+public:
+ KviKvsDnsManager();
+ ~KviKvsDnsManager();
+protected:
+ static KviKvsDnsManager * m_pInstance;
+ KviPointerHashTable<void *,KviKvsDnsObject> * m_pDnsObjects;
+public:
+ static KviKvsDnsManager * instance(){ return m_pInstance; };
+ static void init();
+ static void done();
+
+ void addDns(KviKvsDnsObject * pObject);
+protected slots:
+ void dnsLookupTerminated(KviDns * pDns);
+private:
+ void abortAll();
+};
+
+#endif //!_KVI_KVS_DNSMANAGER_H_
diff --git a/src/kvirc/kvs/kvi_kvs_event.cpp b/src/kvirc/kvs/kvi_kvs_event.cpp
new file mode 100644
index 00000000..4692eff0
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_event.cpp
@@ -0,0 +1,80 @@
+//=============================================================================
+//
+// File : kvi_kvs_event.cpp
+// Created on Mon 23 Feb 2004 03:00:02 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_event.h"
+
+
+KviKvsEvent::~KviKvsEvent()
+{
+ clear();
+}
+
+void KviKvsEvent::clear()
+{
+ if(m_pHandlers)delete m_pHandlers;
+ m_pHandlers = 0;
+}
+
+void KviKvsEvent::removeHandler(KviKvsEventHandler * h)
+{
+ m_pHandlers->removeRef(h);
+ if(m_pHandlers->isEmpty())
+ {
+ delete m_pHandlers;
+ m_pHandlers = 0;
+ }
+}
+
+void KviKvsEvent::addHandler(KviKvsEventHandler * h)
+{
+ if(!m_pHandlers)
+ {
+ m_pHandlers = new KviPointerList<KviKvsEventHandler>();
+ m_pHandlers->setAutoDelete(true);
+ }
+ m_pHandlers->append(h);
+}
+
+void KviKvsEvent::clearScriptHandlers()
+{
+ if(!m_pHandlers)return;
+ KviPointerList<KviKvsEventHandler> dl;
+ dl.setAutoDelete(false);
+ KviKvsEventHandler * e;
+ for(e = m_pHandlers->first();e;e = m_pHandlers->next())
+ {
+ if(e->type() == KviKvsEventHandler::Script)dl.append(e);
+ }
+ for(e = dl.first();e;e = dl.next())
+ {
+ m_pHandlers->removeRef(e);
+ }
+ if(m_pHandlers->isEmpty())
+ {
+ delete m_pHandlers;
+ m_pHandlers = 0;
+ }
+}
diff --git a/src/kvirc/kvs/kvi_kvs_event.h b/src/kvirc/kvs/kvi_kvs_event.h
new file mode 100644
index 00000000..663777be
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_event.h
@@ -0,0 +1,54 @@
+#ifndef _KVI_KVS_EVENT_H_
+#define _KVI_KVS_EVENT_H_
+//=============================================================================
+//
+// File : kvi_kvs_event.h
+// Created on Mon 23 Feb 2004 03:00:02 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_pointerlist.h"
+
+#include "kvi_kvs_eventhandler.h"
+
+class KVIRC_API KviKvsEvent
+{
+protected:
+ QString m_szName;
+ QString m_szParameterDescription;
+ KviPointerList<KviKvsEventHandler> * m_pHandlers;
+public:
+ // the event name and the parameter description are NOT translated
+ KviKvsEvent(const char * szEventName,const char * szParameterDescription)
+ : m_szName(szEventName), m_szParameterDescription(szParameterDescription), m_pHandlers(0) {};
+ ~KviKvsEvent();
+ void clear();
+ void clearScriptHandlers();
+ bool hasHandlers(){ return m_pHandlers != 0; };
+ KviPointerList<KviKvsEventHandler> * handlers(){ return m_pHandlers; };
+ void addHandler(KviKvsEventHandler * h);
+ void removeHandler(KviKvsEventHandler * h);
+ const QString & name(){ return m_szName; };
+ const QString & parameterDescription(){ return m_szParameterDescription; };
+};
+
+#endif //!_KVI_KVS_EVENT_H_
diff --git a/src/kvirc/kvs/kvi_kvs_eventhandler.cpp b/src/kvirc/kvs/kvi_kvs_eventhandler.cpp
new file mode 100644
index 00000000..f6e311f0
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_eventhandler.cpp
@@ -0,0 +1,78 @@
+//=============================================================================
+//
+// File : kvi_kvs_eventhandler.cpp
+// Created on Mon 23 Feb 2004 03:04:58 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_eventhandler.h"
+
+KviKvsEventHandler::KviKvsEventHandler(Type t)
+: KviHeapObject(), m_type(t)
+{
+}
+
+KviKvsEventHandler::~KviKvsEventHandler()
+{
+}
+
+
+
+KviKvsScriptEventHandler::KviKvsScriptEventHandler(const QString &szHandlerName,const QString &szContextName,const QString &szCode,bool bEnabled)
+: KviKvsEventHandler(KviKvsEventHandler::Script), m_szName(szHandlerName), m_bEnabled(bEnabled)
+{
+ m_pScript = new KviKvsScript(szContextName,szCode);
+}
+
+KviKvsScriptEventHandler::~KviKvsScriptEventHandler()
+{
+ delete m_pScript;
+}
+
+KviKvsScriptEventHandler * KviKvsScriptEventHandler::createInstance(const QString &szHandlerName,const QString &szContextName,const QString &szCode,bool bEnabled)
+{
+ return new KviKvsScriptEventHandler(szHandlerName,szContextName,szCode,bEnabled);
+}
+
+
+KviKvsModuleEventHandler::KviKvsModuleEventHandler(KviKvsModuleInterface * m,KviKvsModuleEventHandlerRoutine proc)
+: KviKvsEventHandler(KviKvsEventHandler::Module), m_pModule(m)
+{
+ m_pProc = new KviKvsModuleEventHandlerRoutine(proc);
+}
+
+KviKvsModuleEventHandler::~KviKvsModuleEventHandler()
+{
+ delete m_pProc;
+}
+
+
+/*
+KviKvsOldModuleEventHandler::KviKvsOldModuleEventHandler(KviModuleEventParseProc p,KviModule * m)
+: KviKvsEventHandler(KviKvsEventHandler::OldModule), m_pModule(m), m_proc(p)
+{
+}
+
+KviKvsOldModuleEventHandler::~KviKvsOldModuleEventHandler()
+{
+}
+*/
diff --git a/src/kvirc/kvs/kvi_kvs_eventhandler.h b/src/kvirc/kvs/kvi_kvs_eventhandler.h
new file mode 100644
index 00000000..f8124b68
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_eventhandler.h
@@ -0,0 +1,106 @@
+#ifndef _KVI_KVS_EVENTHANDLER_H_
+#define _KVI_KVS_EVENTHANDLER_H_
+//=============================================================================
+//
+// File : kvi_kvs_eventhandler.h
+// Created on Mon 23 Feb 2004 03:04:58 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_kvs_script.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_moduleinterface.h"
+#include "kvi_heapobject.h"
+
+class KVIRC_API KviKvsEventHandler : public KviHeapObject
+{
+public:
+ enum Type { Script , Module };
+protected:
+ Type m_type;
+public:
+ KviKvsEventHandler(Type t);
+ virtual ~KviKvsEventHandler();
+public:
+ Type type(){ return m_type; };
+};
+
+
+class KVIRC_API KviKvsScriptEventHandler : public KviKvsEventHandler
+{
+public:
+ // the event handler becomes the owned of pszCode!
+ KviKvsScriptEventHandler(const QString &szHandlerName,const QString &szContextName,const QString &szCode,bool bEnabled = true);
+ virtual ~KviKvsScriptEventHandler();
+protected:
+ QString m_szName;
+ KviKvsScript * m_pScript;
+ bool m_bEnabled;
+public:
+ KviKvsScript * script(){ return m_pScript; };
+ const QString & name(){ return m_szName; };
+ const QString & code(){ return m_pScript->code(); };
+
+ bool isEnabled(){ return m_bEnabled; };
+ void setEnabled(bool bEnabled){ m_bEnabled = bEnabled; };
+
+ // Static allocator function.
+ // This MUST be used by the modules to allocate event structures
+ // instead of the new operator.
+ // See kvi_heapobject.cpp for an explaination.
+ static KviKvsScriptEventHandler * createInstance(const QString &szHandlerName,const QString &szContextName,const QString &szCode,bool bEnabled = true);
+};
+
+
+class KVIRC_API KviKvsModuleEventHandler : public KviKvsEventHandler
+{
+protected:
+ KviKvsModuleInterface * m_pModule;
+ KviKvsModuleEventHandlerRoutine * m_pProc;
+public:
+ KviKvsModuleEventHandler(KviKvsModuleInterface * m,KviKvsModuleEventHandlerRoutine proc);
+ virtual ~KviKvsModuleEventHandler();
+public:
+ KviKvsModuleInterface * moduleInterface(){ return m_pModule; };
+ KviKvsModuleEventHandlerRoutine * handlerRoutine(){ return m_pProc; };
+};
+
+
+/*
+#include "kvi_module.h"
+
+class KVIRC_API KviKvsOldModuleEventHandler : public KviKvsEventHandler
+{
+protected:
+ KviModule * m_pModule;
+ KviModuleEventParseProc m_proc;
+public:
+ KviKvsOldModuleEventHandler(KviModuleEventParseProc p,KviModule * m);
+ virtual ~KviKvsOldModuleEventHandler();
+public:
+ KviModule * module(){ return m_pModule; };
+ void setModule(KviModule * m){ m_pModule = m; };
+ KviModuleEventParseProc proc(){ return m_proc; };
+ void setProc(KviModuleEventParseProc p){ m_proc = p; };
+};
+
+*/
+#endif //!_KVI_KVS_EVENTHANDLER_H_
diff --git a/src/kvirc/kvs/kvi_kvs_eventmanager.cpp b/src/kvirc/kvs/kvi_kvs_eventmanager.cpp
new file mode 100644
index 00000000..1a2131c0
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_eventmanager.cpp
@@ -0,0 +1,678 @@
+//=============================================================================
+//
+// File : kvi_kvs_eventmanager.cpp
+// Created on Thu Aug 17 2000 13:59:12 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_eventmanager.h"
+#include "kvi_config.h"
+#include "kvi_kvs_script.h"
+#include "kvi_kvs_variant.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_out.h"
+#include "kvi_module.h"
+#include "kvi_window.h"
+#include "kvi_kvs_variantlist.h"
+
+/*
+ @doc: events
+ @type:
+ language
+ @keyterms:
+ events,event handlers,event
+ @title:
+ Events
+ @short:
+ Events: user reactions
+ @body:
+ KVIrc triggers an event when a particular situation occurs (hehe :D).[br]
+ You can define a set of event handlers for each event type.[br]
+ An event handler is a snippet of user-defined code that gets executed when the event is triggered.[br]
+ Event handlers can be created or destroyed by using the scriptcenter (graphic interface)
+ or even from the commandline (or script) by using the [cmd]event[/cmd] command.[br]
+ For example, the [event:onirc]OnIRC[/event] is triggered when the login operations have
+ been terminated and you can consider yourself "completely" on IRC. For example , you might
+ want to "auto-join" some channels. Nothing easier! The following snippet of code
+ adds a handler to the OnIRC event that joins three channels:[br]
+ [example]
+ [cmd]event[/cmd](OnIRC,autojoin)
+ {
+ [cmd]echo[/cmd] Auto-joining my preferred channels...
+ [cmd]join[/cmd] #kvirc,#siena,#linux
+ }
+ [/example]
+ Now try to connect to a server and you'll see that it joins automatically the three channels!.[br]
+ You might also want to do some other actions just after the connection has been established,
+ for example you might want to look immediately for a friend of yours by issuing a [cmd]whois[/cmd]
+ to the server (well.. you could use the notify list for that, but well, this is an example).[br]
+ You can add the [cmd]whois[/cmd] request to the handler above or just create a new one:[br]
+ [example]
+ [cmd]event[/cmd](OnIRC,lookforfred)
+ {
+ [cmd]echo[/cmd] Looking for fred...
+ [cmd]whois[/cmd] fred
+ }
+ [/example]
+ (An even nicer idea would be to use the [cmd]awhois[/cmd] command...but that's left to the reader as exercise.[br]
+ To remove an event handler you still use the [cmd]event[/cmd] command , but with an empty code block:[br]
+ [example]
+ [cmd]event[/cmd](OnIRC,lookforfred){}[br]
+ [/example]
+ [br]
+ Certain events will pass you some data in the positional parameters.[br]
+ For example, when you are being banned from a channel, KVIrc triggers the [event:onmeban]OnMeBan[/event]
+ event: you might be interested in WHO has banned you. KVIrc will pass the "ban source" informations
+ in the positional parameters $0,$1 and $2.[br]
+ (Please note that the parameters started from $1 in KVIrc versions older than 3.0.0!).[br]
+ You may take a look at the list of available [doc:event_index_all]events[/doc].[br]
+*/
+
+
+KviKvsEventManager * KviKvsEventManager::m_pInstance = 0;
+
+KviKvsEventManager::KviKvsEventManager()
+{
+ m_pInstance = this;
+ for(int i=0;i<KVI_KVS_NUM_RAW_EVENTS;i++)
+ m_rawEventTable[i] = 0;
+}
+
+KviKvsEventManager::~KviKvsEventManager()
+{
+ clear();
+}
+
+void KviKvsEventManager::init()
+{
+ if(KviKvsEventManager::instance())
+ {
+ debug("WARNING: Trying to create KviKvsEventManager twice!");
+ return;
+ }
+ (void) new KviKvsEventManager();
+}
+
+void KviKvsEventManager::done()
+{
+ if(!KviKvsEventManager::instance())
+ {
+ debug("WARNING: Trying to destroy the KviKvsEventManager twice!");
+ return;
+ }
+ delete KviKvsEventManager::instance();
+}
+
+unsigned int KviKvsEventManager::findAppEventIndexByName(const QString &szName)
+{
+ for(unsigned int u = 0;u < KVI_KVS_NUM_APP_EVENTS;u++)
+ {
+ if(KviQString::equalCI(szName,m_appEventTable[u].name()))return u;
+ //Backwards compatibility >_<
+ if((u == 4) && KviQString::equalCI(szName,"OnIrcConnectionEstabilished"))
+ return u;
+ }
+ return KVI_KVS_NUM_APP_EVENTS; // <-- invalid event number
+}
+
+KviKvsEvent * KviKvsEventManager::findAppEventByName(const QString &szName)
+{
+ for(unsigned int u = 0;u < KVI_KVS_NUM_APP_EVENTS;u++)
+ {
+ if(KviQString::equalCI(szName,m_appEventTable[u].name()))return &(m_appEventTable[u]);
+ //Backwards compatibility >_<
+ if((u == 4) && KviQString::equalCI(szName,"OnIrcConnectionEstabilished"))
+ return &(m_appEventTable[u]);
+ }
+ return 0;
+}
+
+bool KviKvsEventManager::addAppHandler(unsigned int uEvIdx,KviKvsEventHandler * h)
+{
+ if(uEvIdx >= KVI_KVS_NUM_APP_EVENTS)return false;
+ m_appEventTable[uEvIdx].addHandler(h);
+ return true;
+}
+
+bool KviKvsEventManager::addRawHandler(unsigned int uRawIdx,KviKvsEventHandler * h)
+{
+ if(uRawIdx >= KVI_KVS_NUM_RAW_EVENTS)return false;
+ if(!m_rawEventTable[uRawIdx])
+ {
+ m_rawEventTable[uRawIdx] = new KviPointerList<KviKvsEventHandler>();
+ m_rawEventTable[uRawIdx]->setAutoDelete(true);
+ }
+ m_rawEventTable[uRawIdx]->append(h);
+ return true;
+}
+
+bool KviKvsEventManager::removeScriptAppHandler(unsigned int uEvIdx,const QString &szName)
+{
+ if(uEvIdx >= KVI_KVS_NUM_APP_EVENTS)return false;
+ KviKvsEventHandler * h;
+ if(!(m_appEventTable[uEvIdx].handlers()))return false;
+ for(h = m_appEventTable[uEvIdx].handlers()->first();h;h = m_appEventTable[uEvIdx].handlers()->next())
+ {
+ if(h->type() == KviKvsEventHandler::Script)
+ {
+ if(KviQString::equalCI(((KviKvsScriptEventHandler *)h)->name(),szName))
+ {
+ m_appEventTable[uEvIdx].removeHandler(h);
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+KviKvsScriptEventHandler * KviKvsEventManager::findScriptRawHandler(unsigned int uEvIdx,const QString &szName)
+{
+ if(uEvIdx >= KVI_KVS_NUM_RAW_EVENTS)return 0;
+ if(!m_rawEventTable[uEvIdx])return 0;
+ KviKvsEventHandler * h;
+ for(h = m_rawEventTable[uEvIdx]->first();h;h = m_rawEventTable[uEvIdx]->next())
+ {
+ if(h->type() == KviKvsEventHandler::Script)
+ {
+ if(KviQString::equalCI(((KviKvsScriptEventHandler *)h)->name(),szName))
+ {
+ return (KviKvsScriptEventHandler *)h;
+ }
+ }
+ }
+ return 0;
+}
+
+KviKvsScriptEventHandler * KviKvsEventManager::findScriptAppHandler(unsigned int uEvIdx,const QString &szName)
+{
+ if(uEvIdx >= KVI_KVS_NUM_APP_EVENTS)return 0;
+ KviKvsEventHandler * h;
+ if(!(m_appEventTable[uEvIdx].handlers()))return 0;
+ for(h = m_appEventTable[uEvIdx].handlers()->first();h;h = m_appEventTable[uEvIdx].handlers()->next())
+ {
+ if(h->type() == KviKvsEventHandler::Script)
+ {
+ if(KviQString::equalCI(((KviKvsScriptEventHandler *)h)->name(),szName))
+ {
+ return (KviKvsScriptEventHandler *)h;
+ }
+ }
+ }
+ return 0;
+}
+
+bool KviKvsEventManager::enableScriptAppHandler(unsigned int uEvIdx,const QString &szName,bool bEnable)
+{
+ KviKvsScriptEventHandler * h = findScriptAppHandler(uEvIdx,szName);
+ if(!h)return false;
+ h->setEnabled(bEnable);
+ return true;
+}
+
+
+bool KviKvsEventManager::removeModuleAppHandler(unsigned int uEvIdx,KviKvsModuleInterface *i)
+{
+ if(uEvIdx >= KVI_KVS_NUM_APP_EVENTS)return false;
+ KviKvsEventHandler * h;
+ if(!(m_appEventTable[uEvIdx].handlers()))return false;
+ for(h = m_appEventTable[uEvIdx].handlers()->first();h;h = m_appEventTable[uEvIdx].handlers()->next())
+ {
+ if(h->type() == KviKvsEventHandler::Module)
+ {
+ if(((KviKvsModuleEventHandler *)h)->moduleInterface() == i)
+ {
+ m_appEventTable[uEvIdx].removeHandler(h);
+ return true;
+ }
+ }
+ // COMPAT
+ /*
+ } else if(h->type() == KviKvsEventHandler::OldModule)
+ {
+ if(((KviKvsOldModuleEventHandler *)h)->module() == i)
+ {
+ m_appEventTable[uEvIdx].removeHandler(h);
+ return true;
+ }
+ }
+ */
+ // END COMPAT
+ }
+ return false;
+}
+
+void KviKvsEventManager::removeAllModuleAppHandlers(KviKvsModuleInterface *pIface)
+{
+ KviKvsEventHandler * h;
+ for(unsigned int i =0;i< KVI_KVS_NUM_APP_EVENTS;i++)
+ {
+ if(!m_appEventTable[i].handlers())continue;
+
+ KviPointerList<KviKvsEventHandler> l;
+ l.setAutoDelete(false);
+ for(h = m_appEventTable[i].handlers()->first();h;h = m_appEventTable[i].handlers()->next())
+ {
+ if(h->type() == KviKvsEventHandler::Module)
+ {
+ if(((KviKvsModuleEventHandler *)h)->moduleInterface() == pIface)
+ {
+ l.append(h);
+ }
+ }
+ // COMPAT
+ /*
+ } else if(h->type() == KviKvsEventHandler::OldModule)
+ {
+ if(((KviKvsOldModuleEventHandler *)h)->module() == pIface)
+ {
+ l.append(h);
+ }
+ }
+ */
+ // END COMPAT
+
+ }
+ for(h = l.first();h;h = l.next())m_appEventTable[i].removeHandler(h);
+ }
+}
+
+void KviKvsEventManager::removeAllModuleRawHandlers(KviKvsModuleInterface *pIface)
+{
+ KviKvsEventHandler * h;
+ for(unsigned int i =0;i< KVI_KVS_NUM_RAW_EVENTS;i++)
+ {
+ if(!m_rawEventTable[i])continue;
+
+ KviPointerList<KviKvsEventHandler> l;
+ l.setAutoDelete(false);
+ for(h = m_rawEventTable[i]->first();h;h = m_rawEventTable[i]->next())
+ {
+ if(h->type() == KviKvsEventHandler::Module)
+ {
+ if(((KviKvsModuleEventHandler *)h)->moduleInterface() == pIface)
+ {
+ l.append(h);
+ }
+ }
+ // COMPAT
+ /*
+ } else if(h->type() == KviKvsEventHandler::OldModule)
+ {
+ if(((KviKvsOldModuleEventHandler *)h)->module() == pIface)
+ {
+ l.append(h);
+ }
+ }
+ */
+ // END COMPAT
+
+ }
+ for(h = l.first();h;h = l.next())m_rawEventTable[i]->removeRef(h);
+ if(m_rawEventTable[i]->isEmpty())
+ {
+ delete m_rawEventTable[i];
+ m_rawEventTable[i] = 0;
+ }
+ }
+}
+
+bool KviKvsEventManager::removeScriptRawHandler(unsigned int uEvIdx,const QString &szName)
+{
+ if(uEvIdx >= KVI_KVS_NUM_RAW_EVENTS)return false;
+ if(!m_rawEventTable[uEvIdx])return false;
+ KviKvsEventHandler * h;
+ for(h = m_rawEventTable[uEvIdx]->first();h;h = m_rawEventTable[uEvIdx]->next())
+ {
+ if(h->type() == KviKvsEventHandler::Script)
+ {
+ if(KviQString::equalCI(((KviKvsScriptEventHandler *)h)->name(),szName))
+ {
+ m_rawEventTable[uEvIdx]->removeRef(h);
+ if(m_rawEventTable[uEvIdx]->isEmpty())
+ {
+ delete m_rawEventTable[uEvIdx];
+ m_rawEventTable[uEvIdx] = 0;
+ }
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+
+bool KviKvsEventManager::enableScriptRawHandler(unsigned int uEvIdx,const QString &szName,bool bEnable)
+{
+ KviKvsScriptEventHandler * h = findScriptRawHandler(uEvIdx,szName);
+ if(!h)return false;
+ h->setEnabled(bEnable);
+ return true;
+}
+
+
+bool KviKvsEventManager::removeModuleRawHandler(unsigned int uRawIdx,KviKvsModuleInterface *i)
+{
+ if(uRawIdx >= KVI_KVS_NUM_RAW_EVENTS)return false;
+ if(!m_rawEventTable[uRawIdx])return false;
+ KviKvsEventHandler * h;
+ for(h = m_rawEventTable[uRawIdx]->first();h;h = m_rawEventTable[uRawIdx]->next())
+ {
+ if(h->type() == KviKvsEventHandler::Module)
+ {
+ if(((KviKvsModuleEventHandler *)h)->moduleInterface() == i)
+ {
+ m_rawEventTable[uRawIdx]->removeRef(h);
+ if(m_rawEventTable[uRawIdx]->isEmpty())
+ {
+ delete m_rawEventTable[uRawIdx];
+ m_rawEventTable[uRawIdx] = 0;
+ }
+ return true;
+ }
+ }
+ // COMPAT
+ /*
+ } else if(h->type() == KviKvsEventHandler::OldModule)
+ {
+ if(((KviKvsOldModuleEventHandler *)h)->module() == i)
+ {
+ m_rawEventTable[uRawIdx]->removeRef(h);
+ if(m_rawEventTable[uRawIdx]->isEmpty())
+ {
+ delete m_rawEventTable[uRawIdx];
+ m_rawEventTable[uRawIdx] = 0;
+ }
+ return true;
+ }
+ }
+ */
+ // END COMPAT
+
+ }
+ return false;
+}
+
+void KviKvsEventManager::removeAllModuleHandlers(KviKvsModuleInterface * pIface)
+{
+ removeAllModuleAppHandlers(pIface);
+ removeAllModuleRawHandlers(pIface);
+}
+
+void KviKvsEventManager::removeAllScriptAppHandlers()
+{
+ for(int i=0;i< KVI_KVS_NUM_APP_EVENTS;i++)
+ {
+ m_appEventTable[i].clearScriptHandlers();
+ }
+}
+
+void KviKvsEventManager::removeAllScriptRawHandlers()
+{
+ for(int i=0;i< KVI_KVS_NUM_RAW_EVENTS;i++)
+ {
+ if(m_rawEventTable[i])
+ {
+ KviPointerList<KviKvsEventHandler> dl;
+ dl.setAutoDelete(false);
+ KviKvsEventHandler * e;
+ for(e = m_rawEventTable[i]->first();e;e = m_rawEventTable[i]->next())
+ {
+ if(e->type() == KviKvsEventHandler::Script)dl.append(e);
+ }
+
+ for(e = dl.first();e;e = dl.next())
+ {
+ m_rawEventTable[i]->removeRef(e);
+ }
+
+ if(m_rawEventTable[i]->isEmpty())
+ {
+ delete m_rawEventTable[i];
+ m_rawEventTable[i] = 0;
+ }
+ }
+ }
+}
+
+void KviKvsEventManager::clearRawEvents()
+{
+ for(int i=0;i<KVI_KVS_NUM_RAW_EVENTS;i++)
+ {
+ if(m_rawEventTable[i])delete m_rawEventTable[i];
+ m_rawEventTable[i] = 0;
+ }
+}
+
+void KviKvsEventManager::clearAppEvents()
+{
+ for(int i=0;i<KVI_KVS_NUM_APP_EVENTS;i++)
+ {
+ m_appEventTable[i].clear();
+ }
+}
+
+void KviKvsEventManager::clear()
+{
+ clearRawEvents();
+ clearAppEvents();
+}
+
+bool KviKvsEventManager::triggerHandlers(KviPointerList<KviKvsEventHandler> * pHandlers,KviWindow *pWnd,KviKvsVariantList *pParams)
+{
+ if(!pHandlers)return false;
+
+ bool bGotHalt = false;
+ for(KviKvsEventHandler * h = pHandlers->first();h;h = pHandlers->next())
+ {
+ switch(h->type())
+ {
+ case KviKvsEventHandler::Script:
+ {
+ if(((KviKvsScriptEventHandler *)h)->isEnabled())
+ {
+ KviKvsScript * s = ((KviKvsScriptEventHandler *)h)->script();
+ KviKvsScript copy(*s);
+ KviKvsVariant retVal;
+ int iRet = copy.run(pWnd,pParams,&retVal,KviKvsScript::PreserveParams);
+ if(!iRet)
+ {
+ // error! disable the handler if it's broken
+ if(KVI_OPTION_BOOL(KviOption_boolDisableBrokenEventHandlers))
+ {
+ ((KviKvsScriptEventHandler *)h)->setEnabled(false);
+ pWnd->output(KVI_OUT_PARSERERROR,__tr2qs("Event handler %Q is broken: disabling"),&(s->name()));
+ }
+ }
+ if(!bGotHalt)bGotHalt = (iRet & KviKvsScript::HaltEncountered);
+ }
+ }
+ break;
+ case KviKvsEventHandler::Module:
+ {
+ KviModule * m = (KviModule *)((KviKvsModuleEventHandler *)h)->moduleInterface();
+ KviKvsModuleEventHandlerRoutine * proc = ((KviKvsModuleEventHandler *)h)->handlerRoutine();
+ KviKvsVariant retVal;
+ KviKvsRunTimeContext ctx(0,pWnd,pParams,&retVal);
+ KviKvsModuleEventCall call(m,&ctx,pParams);
+ if(!(*proc)(&call))bGotHalt = true;
+ }
+ break;
+ }
+ }
+ return bGotHalt;
+}
+
+
+void KviKvsEventManager::loadRawEvents(const QString &szFileName)
+{
+ KviConfig cfg(szFileName,KviConfig::Read);
+ removeAllScriptRawHandlers();
+ int i;
+
+ for(i=0;i<KVI_KVS_NUM_RAW_EVENTS;i++)
+ {
+ QString tmp;
+ KviQString::sprintf(tmp,"RAW%d",i);
+ if(cfg.hasGroup(tmp))
+ {
+ cfg.setGroup(tmp);
+ unsigned int nHandlers = cfg.readUIntEntry("NHandlers",0);
+ if(nHandlers)
+ {
+ m_rawEventTable[i] = new KviPointerList<KviKvsEventHandler>();
+ m_rawEventTable[i]->setAutoDelete(true);
+ for(unsigned int index = 0;index < nHandlers;index++)
+ {
+ KviQString::sprintf(tmp,"Name%u",index);
+ QString szName = cfg.readQStringEntry(tmp,"unnamed");
+ KviQString::sprintf(tmp,"Buffer%u",index);
+ QString szCode = cfg.readQStringEntry(tmp,"");
+ KviQString::sprintf(tmp,"RawEvent%u::%Q",index,&szName);
+ KviKvsScriptEventHandler * s = new KviKvsScriptEventHandler(szName,tmp,szCode);
+ KviQString::sprintf(tmp,"Enabled%u",index);
+ s->setEnabled(cfg.readBoolEntry(tmp,false));
+ m_rawEventTable[i]->append(s);
+ }
+ }
+ }
+ }
+}
+
+void KviKvsEventManager::saveRawEvents(const QString &szFileName)
+{
+ KviConfig cfg(szFileName,KviConfig::Write);
+ cfg.clear();
+ int i;
+
+ for(i=0;i<KVI_KVS_NUM_RAW_EVENTS;i++)
+ {
+ if(m_rawEventTable[i])
+ {
+ QString tmp;
+ KviQString::sprintf(tmp,"RAW%d",i);
+ cfg.setGroup(tmp);
+
+ int index = 0;
+ for(KviKvsEventHandler * s = m_rawEventTable[i]->first();s; s = m_rawEventTable[i]->next())
+ {
+ if(s->type() == KviKvsEventHandler::Script)
+ {
+ KviQString::sprintf(tmp,"Name%d",index);
+ cfg.writeEntry(tmp,((KviKvsScriptEventHandler *)s)->name());
+ KviQString::sprintf(tmp,"Buffer%d",index);
+ cfg.writeEntry(tmp,((KviKvsScriptEventHandler *)s)->code());
+ KviQString::sprintf(tmp,"Enabled%d",index);
+ cfg.writeEntry(tmp,((KviKvsScriptEventHandler *)s)->isEnabled());
+ index++;
+ }
+ }
+ cfg.writeEntry("NHandlers",index);
+ }
+ }
+
+}
+
+void KviKvsEventManager::loadAppEvents(const QString &szFileName)
+{
+ KviConfig cfg(szFileName,KviConfig::Read);
+ removeAllScriptAppHandlers();
+
+ int i;
+ for(i=0;i<KVI_KVS_NUM_APP_EVENTS;i++)
+ {
+ QString szEventName(m_appEventTable[i].name());
+ // Backwards compatibility >_<
+ if((i == 4) && !cfg.hasGroup(szEventName))
+ szEventName = "OnIrcConnectionEstabilished";
+ if(cfg.hasGroup(szEventName))
+ {
+ cfg.setGroup(szEventName);
+ unsigned int nHandlers = cfg.readUIntEntry("NHandlers",0);
+ if(nHandlers)
+ {
+ for(unsigned int index = 0;index < nHandlers;index++)
+ {
+ QString tmp;
+ KviQString::sprintf(tmp,"Name%u",index);
+ QString szName = cfg.readQStringEntry(tmp,"unnamed");
+ KviQString::sprintf(tmp,"Buffer%u",index);
+ QString szCode = cfg.readQStringEntry(tmp,"");
+ KviQString::sprintf(tmp,"Enabled%u",index);
+ bool bEnabled = cfg.readBoolEntry(tmp,false);
+ QString szCntx;
+ KviQString::sprintf(szCntx,"%Q::%Q",&(m_appEventTable[i].name()),&szName);
+ KviKvsScriptEventHandler *s = new KviKvsScriptEventHandler(szName,szCntx,szCode,bEnabled);
+ m_appEventTable[i].addHandler(s);
+ }
+ }
+ }
+ }
+
+}
+
+void KviKvsEventManager::saveAppEvents(const QString &szFileName)
+{
+ KviConfig cfg(szFileName,KviConfig::Write);
+ cfg.clear();
+ int i;
+ bool bCompat = FALSE;
+
+ for(i=0;i<KVI_KVS_NUM_APP_EVENTS;i++)
+ {
+ if(m_appEventTable[i].hasHandlers())
+ {
+ QString szEventName(m_appEventTable[i].name());
+ // Backwards compatibility >_<
+ if((i == 4) && cfg.hasGroup(szEventName))
+ {
+ szEventName = "OnIRCConnectionEstabilished";
+ bCompat = TRUE;
+ }
+ cfg.setGroup(szEventName);
+ int index = 0;
+ for(KviKvsEventHandler* s = m_appEventTable[i].handlers()->first();s; s = m_appEventTable[i].handlers()->next())
+ {
+ if(s->type() == KviKvsEventHandler::Script)
+ {
+ QString tmp;
+ KviQString::sprintf(tmp,"Name%d",index);
+ cfg.writeEntry(tmp,((KviKvsScriptEventHandler *)s)->name());
+ KviQString::sprintf(tmp,"Buffer%d",index);
+ cfg.writeEntry(tmp,((KviKvsScriptEventHandler *)s)->code());
+ KviQString::sprintf(tmp,"Enabled%d",index);
+ cfg.writeEntry(tmp,((KviKvsScriptEventHandler *)s)->isEnabled());
+ index++;
+ }
+ }
+ cfg.writeEntry("NHandlers",index);
+
+ // Backwards compatibility >_<
+ if((i == 4) && !bCompat)
+ i--;
+ }
+ }
+}
+
+
+
+
diff --git a/src/kvirc/kvs/kvi_kvs_eventmanager.h b/src/kvirc/kvs/kvi_kvs_eventmanager.h
new file mode 100644
index 00000000..d31d2197
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_eventmanager.h
@@ -0,0 +1,120 @@
+#ifndef _KVI_KVS_EVENTMANAGER_H_
+#define _KVI_KVS_EVENTMANAGER_H_
+//=============================================================================
+//
+// File : kvi_kvs_eventmanager.h
+// Created on Thu Aug 17 2000 13:59:12 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include "kvi_kvs_event.h"
+#include "kvi_pointerlist.h"
+#include "kvi_kvs_eventtable.h"
+
+class KviWindow;
+class KviKvsModuleInterface;
+class KviKvsVariantList;
+
+#define KVI_KVS_NUM_RAW_EVENTS 1000
+
+class KVIRC_API KviKvsEventManager
+{
+ friend class KviModule; // compatibility only!
+protected: // it only can be created and destroyed by KviKvsAliasManager::init()/done()
+ KviKvsEventManager();
+ ~KviKvsEventManager();
+protected:
+ static KviKvsEventManager * m_pInstance;
+
+ static KviKvsEvent m_appEventTable[KVI_KVS_NUM_APP_EVENTS];
+ KviPointerList<KviKvsEventHandler> * m_rawEventTable[KVI_KVS_NUM_RAW_EVENTS];
+public:
+ static KviKvsEventManager * instance(){ return m_pInstance; };
+ static void init(); // called by KviKvs::init()
+ static void done(); // called by KviKvs::done()
+
+ KviKvsEvent * appEvent(unsigned int uEvIdx){ return &(m_appEventTable[uEvIdx]); };
+
+ bool hasAppHandlers(unsigned int uEvIdx){ return m_appEventTable[uEvIdx].hasHandlers(); };
+ KviPointerList<KviKvsEventHandler> * appHandlers(unsigned int uEvIdx){ return m_appEventTable[uEvIdx].handlers(); };
+
+ bool hasRawHandlers(unsigned int uEvIdx){ return m_rawEventTable[uEvIdx]; };
+ KviPointerList<KviKvsEventHandler> * rawHandlers(unsigned int uEvIdx){ return m_rawEventTable[uEvIdx]; };
+
+ KviKvsEvent * findAppEventByName(const QString &szName);
+ unsigned int findAppEventIndexByName(const QString &szName);
+ bool isValidAppEvent(unsigned int uEvIdx){ return (uEvIdx < KVI_KVS_NUM_APP_EVENTS); };
+
+ bool isValidRawEvent(unsigned int uEvIdx){ return (uEvIdx < KVI_KVS_NUM_RAW_EVENTS); };
+
+ bool addAppHandler(unsigned int uEvIdx,KviKvsEventHandler * h);
+ bool addRawHandler(unsigned int uRawIdx,KviKvsEventHandler * h);
+
+ bool removeScriptAppHandler(unsigned int uEvIdx,const QString &szName);
+ bool removeScriptRawHandler(unsigned int uEvIdx,const QString &szName);
+
+ bool enableScriptAppHandler(unsigned int uEvIdx,const QString &szName,bool bEnable);
+ bool enableScriptRawHandler(unsigned int uEvIdx,const QString &szName,bool bEnable);
+
+ bool removeModuleAppHandler(unsigned int uEvIdx,KviKvsModuleInterface *i);
+ bool removeModuleRawHandler(unsigned int uRawIdx,KviKvsModuleInterface *i);
+
+ void removeAllModuleAppHandlers(KviKvsModuleInterface *i);
+ void removeAllModuleRawHandlers(KviKvsModuleInterface *i);
+
+ void removeAllModuleHandlers(KviKvsModuleInterface * i);
+
+ KviKvsScriptEventHandler * findScriptRawHandler(unsigned int uEvIdx,const QString &szName);
+ KviKvsScriptEventHandler * findScriptAppHandler(unsigned int uEvIdx,const QString &szName);
+
+ // returns true if further processing should be stopped
+ // none of these functions takes params ownership, so be sure to delete them !
+ bool triggerHandlers(KviPointerList<KviKvsEventHandler> * pHandlers,KviWindow *pWnd,KviKvsVariantList *pParams);
+ bool trigger(unsigned int uEvIdx,KviWindow * pWnd,KviKvsVariantList * pParams)
+ { return triggerHandlers(m_appEventTable[uEvIdx].handlers(),pWnd,pParams); };
+ bool triggerRaw(unsigned int uEvIdx,KviWindow *pWnd,KviKvsVariantList * pParams)
+ { return triggerHandlers(m_rawEventTable[uEvIdx],pWnd,pParams); };
+
+ // this is the only that takes parameter ownership and deletes them
+ bool triggerDeleteParams(unsigned int uEvIdx,KviWindow * pWnd,KviKvsVariantList * pParams)
+ {
+ bool bRet = triggerHandlers(m_appEventTable[uEvIdx].handlers(),pWnd,pParams);
+ delete pParams;
+ return bRet;
+ };
+
+ void removeAllScriptAppHandlers();
+ void removeAllScriptRawHandlers();
+
+ void clearAppEvents();
+ void clearRawEvents();
+ void clear();
+
+ void loadAppEvents(const QString &szFileName);
+ void saveAppEvents(const QString &szFileName);
+ void loadRawEvents(const QString &szFileName);
+ void saveRawEvents(const QString &szFileName);
+};
+
+
+
+#endif //!_KVI_KVS_EVENTMANAGER_H_
diff --git a/src/kvirc/kvs/kvi_kvs_eventtable.cpp b/src/kvirc/kvs/kvi_kvs_eventtable.cpp
new file mode 100644
index 00000000..4b8c8c98
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_eventtable.cpp
@@ -0,0 +1,3147 @@
+//=============================================================================
+//
+// File : kvi_kvs_eventtable.cpp
+// Created on Mon 23 Feb 2004 03:23:18 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_event.h"
+#include "kvi_kvs_eventtable.h"
+#include "kvi_kvs_eventmanager.h"
+
+#define EVENT(_name,_parm) KviKvsEvent(_name,_parm)
+
+KviKvsEvent KviKvsEventManager::m_appEventTable[KVI_NUM_SCRIPT_EVENTS]=
+{
+ /*
+ @doc: onkvircstartup
+ @type:
+ event
+ @title:
+ OnKVIrcStartup
+ @short:
+ Triggered on KVIrc startup
+ @parameters:
+ None
+ @window:
+ Console of the first IRC context
+ @description:
+ This event is triggered on KVIrc startup.
+ It is bound to the console of the first created IRC context.
+ This is a little tricky, since this event is triggered
+ before the related [event:onirccontextcreated]OnIRCContextCreated[/event] event.
+ This is to make OnApplicationStartup be the absolutely first
+ event triggered at all.
+ This event is a good place to load your script configuration
+ and eventually initialize your variables.
+ @seealso:
+ [event:onkvircshutdown]OnKVIrcShutdown[/event]
+ */
+ EVENT("OnKVIrcStartup",""),
+ /*
+ @doc: onkvircshutdown
+ @type:
+ event
+ @title:
+ OnKVIrcShutdown
+ @short:
+ Triggered on KVIrc shutdown
+ @parameters:
+ None
+ @window:
+ Console of the last IRC context
+ @description:
+ This event is triggered on KVIrc shutdown.
+ It is bound to the console of the last existing IRC context.
+ This is a little tricky, since this event is triggered
+ immediately after the on [event:onirccontextdestroyed]OnIRCContextDestroyed[/event] event,
+ so in theory the console should be already destroyed.
+ This is to make OnApplicationShutdown be the absolutely last event
+ triggered at all.
+ This event is a good place to save your script configuration.
+ @seealso:
+ [event:onkvircstartup]OnKVIrcStartup[/event]
+ */
+ EVENT("OnKVIrcShutdown",""),
+ /*
+ @doc: onirccontextcreated
+ @type:
+ event
+ @title:
+ OnIRCContextCreated
+ @short:
+ Triggered when a new IRC context is created
+ @parameters:
+ None
+ @window:
+ Console of the created IRC context
+ @description:
+ This event is triggered when a new IRC context is created.
+ It is bound to the console of the related IRC context,
+ that is the first window that is created.
+ @seealso:
+ [event:onirccontextdestroyed]OnIRCContextDestroyed[/event]
+ */
+ EVENT("OnIRCContextCreated",""),
+ /*
+ @doc: onirccontextdestroyed
+ @type:
+ event
+ @title:
+ OnIRCContextDestroyed
+ @short:
+ Triggered when an IRC context is destroyed
+ @parameters:
+ None
+ @window:
+ Console of the destroyed IRC context
+ @description:
+ This event is triggered when an IRC context is being destroyed.
+ It is bound to the console of the related IRC context,
+ that is the last window of the context that is destroyed.
+ @seealso:
+ [event:onirccontextcreated]OnIRCContextCreated[/event]
+ */
+ EVENT("OnIRCContextDestroyed",""),
+ /*
+ @doc: onircconnectionestablished
+ @type:
+ event
+ @title:
+ OnIRCConnectionEstablished
+ @short:
+ Triggered when a new IRC connection has been established
+ @parameters:
+ None
+ @window:
+ Console of the related IRC context
+ @description:
+ This event is triggered immediately after an IRC connection
+ has been established. No data has been sent to the server yet
+ and you have not logged in: it is not a good idea
+ attempting to send data to the server (READ: [b]This is NOT
+ a good place for joining channels[/b]).
+ Your nickname is still "undefined" too.
+ If you're looking for the appropriate moment for sending
+ data to the server look at the [event:onirc]OnIRC[/event] event.
+ This event is a good place for initializing connection related
+ variables. By calling [cmd]halt[/cmd] in this event you will stop the
+ "Connection established" output.
+ @seealso:
+ [event:onircconnectionterminated]OnIRCConnectionTerminated[/event]
+ */
+ EVENT("OnIRCConnectionEstablished",""),
+ /*
+ @doc: onircconnectionterminated
+ @type:
+ event
+ @title:
+ OnIRCConnectionTerminated
+ @short:
+ Triggered when an IRC connection has been terminated
+ @parameters:
+ None
+ @window:
+ Console of the related IRC context
+ @description:
+ This event is triggered immediately after an IRC connection
+ has been terminated. The socket is already closed, so you
+ can't send data to the server. You can still read
+ the connection parameters like the server name or
+ network name. By calling [cmd]halt[/cmd] in this
+ event you will stop the "Connection terminated..." output.
+ @seealso:
+ [event:onircconnectionestablished]OnIRCConnectionEstablished[/event]
+ */
+ EVENT("OnIRCConnectionTerminated",""),
+ /*
+ @doc: onirc
+ @type:
+ event
+ @title:
+ OnIRC
+ @short:
+ Triggered when the login operations are terminated
+ @parameters:
+ None
+ @window:
+ Console of the related IRC context
+ @description:
+ This event is triggered immediately after the login
+ operations have been terminated. From now on you are
+ "completely on IRC": your nickname has been defined
+ and the server is ready to accept commands from you.
+ This is a good place to join the "preferred channels".
+ By calling [cmd]halt[/cmd] in this event you will
+ stop the "Login operations complete..." output.
+ @seealso:
+ [event:onircconnectionestablished]OnIRCConnectionEstablished[/event]
+ [event:onircconnectionterminated]OnIRCConnectionTerminated[/event]
+ */
+ EVENT("OnIRC",""),
+ /*
+ @doc: onchannelnickpopuprequest
+ @type:
+ event
+ @title:
+ OnChannelNickPopupRequest
+ @short:
+ Allows customization of the nick-on-channel context popup
+ @parameters:
+ $0 = nick list
+ @window:
+ Channel window
+ @description:
+ This event is triggered when the user right-clicks in the channel user list
+ or on a nickname link in the channel text view.[br]
+ The first parameter ($0) contains a comma separated list of selected nicknames (if it is an user list click)
+ or a single nickname (if it is a link).[br]
+ In both cases all the nicknames are currently on the channel.[br]
+ You should popup a popup-menu with a set of possible channel-related actions,
+ like op/deop , voice/devoice , whois etc...
+ @seealso:
+ [event:onchannelnickdefaultactionrequest]OnChannelNickDefaultActionRequest[/event]
+ */
+ EVENT("OnChannelNickPopupRequest","$0 = nick list"),
+ /*
+ @doc: onchannelnickdefaultactionrequest
+ @type:
+ event
+ @title:
+ OnChannelNickDefaultActionRequest
+ @short:
+ Allows customization of the double click on nicknames
+ @parameters:
+ $0 = nick list
+ @window:
+ Channel window
+ @description:
+ @seealso:
+ [event:onchannelnickpopuprequest]OnChannelNickPopupRequest[/event]
+ */
+ EVENT("OnChannelNickDefaultActionRequest","$0 = nick list"),
+ /*
+ @doc: onframewindowcreated
+ @type:
+ event
+ @title:
+ OnFrameWindowCreated
+ @short:
+ Triggered when a new frame window is opened
+ @parameters:
+ None
+ @window:
+ First console in the frame window
+ @description:
+ This event is triggered in the first console of a new frame window.
+ A frame window is the toplevel window that contains the consoles
+ and the other MDI children windows.
+ @seealso:
+ [event:onframewindowdestroyed]OnFrameWindowDestroyed[/event]
+ */
+ EVENT("OnFrameWindowCreated",""),
+ /*
+ @doc: onframewindowdestroyed
+ @type:
+ event
+ @title:
+ OnFrameWindowDestroyed
+ @short:
+ Triggered when a frame window is being destroyed
+ @parameters:
+ None
+ @window:
+ Last console in the frame window
+ @description:
+ This event is triggered in the last console of a frame window that is
+ being destroyed. In fact the frame window is not destroyed yet, but it
+ is going to: there would be no way to trigger this event after the
+ last frame window destruction.
+ @seealso:
+ [event:onframewindowcreated]OnFrameWindowCreated[/event]
+ */
+ EVENT("OnFrameWindowDestroyed",""),
+ /*
+ @doc: onchannelpopuprequest
+ @type:
+ event
+ @title:
+ OnChannelPopupRequest
+ @short:
+ Triggered when the channel text view is right-clicked
+ @parameters:
+ None
+ @window:
+ Channel window
+ @description:
+ This event is triggered when the user clicks the channel
+ text view with the right mouse button. It is a good place
+ to activate a [cmd]popup[/cmd] menu :)
+ @seealso:
+ [event:ondccchatpopuprequest]OnDCCChatPopupRequest[/event],
+ [event:onconsolepopuprequest]OnConsolePopupRequest[/event],
+ [event:onquerypopuprequest]OnQueryPopupRequest[/event]
+ */
+ EVENT("OnChannelPopupRequest",""),
+ /*
+ @doc: onconsolepopuprequest
+ @type:
+ event
+ @title:
+ OnConsolePopupRequest
+ @short:
+ Triggered when the console text view is right-clicked
+ @parameters:
+ None
+ @window:
+ Console window
+ @description:
+ This event is triggered when the user clicks the console
+ text view with the right mouse button. It is a good place
+ to activate a [cmd]popup[/cmd] menu :)
+ @seealso:
+ [event:ondccchatpopuprequest]OnDCCChatPopupRequest[/event],
+ [event:onchannelpopuprequest]OnChannelPopupRequest[/event],
+ [event:onquerypopuprequest]OnQueryPopupRequest[/event]
+ */
+ EVENT("OnConsolePopupRequest",""),
+ /*
+ @doc: onquerypopuprequest
+ @type:
+ event
+ @title:
+ OnQueryPopupRequest
+ @short:
+ Triggered when the query text view is right-clicked
+ @parameters:
+ None
+ @window:
+ Query
+ @description:
+ This event is triggered when the user clicks the query
+ text view with the right mouse button. It is a good place
+ to activate a [cmd]popup[/cmd] menu :)
+ @seealso:
+ [event:ondccchatpopuprequest]OnDCCChatPopupRequest[/event],
+ [event:onconsolepopuprequest]OnConsolePopupRequest[/event],
+ [event:onchannelpopuprequest]OnChannelPopupRequest[/event],
+ */
+ EVENT("OnQueryPopupRequest",""),
+ /*
+ @doc: onchannelsync
+ @type:
+ event
+ @title:
+ OnChannelSync
+ @short:
+ Triggered when all the channel informations have been received
+ @parameters:
+ $0 = channel sync time in milliseconds
+ @window:
+ Channel
+ @description:
+ This event is triggered after you have joined a channel
+ and all the informations have been received.[br]
+ This includes the channel users list, the ban list,
+ the channel mode, the topic and eventually
+ the invite and ban exception lists.[br]
+ Calling halt in this even stops the "channel synchronized" output.[br]
+ (the output will be halted anyway if [fnc]$option[/fnc](boolShowChannelSyncTime) evaluates to false)
+ @seealso:
+ [event:ondccchatpopuprequest]OnDCCChatPopupRequest[/event],
+ [event:onconsolepopuprequest]OnConsolePopupRequest[/event],
+ [event:onchannelpopuprequest]OnChannelPopupRequest[/event]
+ */
+ EVENT("OnChannelSync","$0 = Channel sync time in milliseconds"),
+ /*
+ @doc: onurl
+ @type:
+ event
+ @title:
+ OnURL
+ @short:
+ Triggered when an URL appears in one of the output windows
+ @parameters:
+ $0 = URL
+ @window:
+ The window that the URL appeared in
+ @description:
+ This event is triggered every time that an URL is going to appear
+ in a KVIrc window output widget. You cannot stop it or modify it.
+ This event is good for implementing an URL catcher.[br]
+ WARNING: If you attempt to "echo $0" inside this event, you will cause an infinite loop.
+ */
+ EVENT("OnURL","$0 = URL"),
+ /*
+ @doc: onwindowpopuprequest
+ @type:
+ event
+ @title:
+ OnWindowPopupRequest
+ @short:
+ Triggered when the user middle-clicks in a text view (or right-clicks with the CTRL key pressed).
+ @parameters:
+ none
+ @window:
+ The window that the user has clicked in.
+ @description:
+ This event is here to allow easy customization of the window popup (it was builtin in KVIrc version prior to 3.0.0).[br]
+ Actually it is triggered when the user middle-clicks in a text view (or right-clicks with the CTRL key pressed).[br]
+ You should use it to popup your own version of the window popup that should interface the logging and window-behaviour functions.
+ */
+ EVENT("OnWindowPopupRequest",""),
+ /*
+ @doc: onhostlinkpopuprequest
+ @type:
+ event
+ @title:
+ OnHostLinkPopupRequest
+ @short:
+ Triggered when an user right clicks on a hostname link in the text view.
+ @parameters:
+ $0 = actual name
+ $1 - visible name
+ $2 - command name
+ @window:
+ The window that the user has clicked in.
+ @description:
+ This event is triggered when an user has right clicked on a hostname link in the text view.
+ The double click link action is builtin and it causes KVIrc to perform a DNS query on the hostname.
+ This is a good place to show a popup menu with some operations that can be done on the hostname like
+ "telnet", "traceroute", some special kind of DNS lookup (maybe an xterm with nslookup or sth).
+ */
+ EVENT("OnHostLinkPopupRequest","$0 = actual name\n$1 - visible name\n$2 - command name"),
+ /*
+ @doc: onurllinkpopuprequest
+ @type:
+ event
+ @title:
+ OnURLLinkPopupRequest
+ @short:
+ URL link popup customization
+ @parameters:
+ $0 = actual name
+ $1 - visible name
+ $2 - command name
+ @window:
+ The window that the user has clicked in
+ @description:
+ Actual name is equal to the command name if command name is not null.
+ Visible name is the link text (as it shown by user)
+ Command name is set if the visible name differs with the actual link target(probably contains mIRC colors,etc). It is equal to the actual target name.
+ This event is triggered when an user has right clicked on an URL link in
+ the text view. The double click link action is builtin and it causes KVIrc
+ to open the URL with a browser (konqueror in KDE compilation mode or netscape).[br]
+ This is a good place to show a [cmd]popup[/cmd] menu with some operations
+ that can be performed with the URL , like bookmarking in some way or opening
+ with a specific browser.[br]
+ */
+ EVENT("OnURLLinkPopupRequest","$0 = actual name\n$1 - visible name\n$2 - command name"),
+ /*
+ @doc: onserverlinkpopuprequest
+ @type:
+ event
+ @title:
+ OnServerLinkPopupRequest
+ @short:
+ Server link popup customization
+ @parameters:
+ $0 = actual name
+ $1 - visible name
+ $2 - command name
+ @window:
+ The window that the user has clicked in
+ @description:
+ Actual name is equal to the command name if command name is not null.
+ Visible name is the link text (as it shown by user)
+ Command name is set if the visible name differs with the actual link target(probably contains mIRC colors,etc). It is equal to the actual target name.
+ This event is triggered when an user has right clicked on an server name link in
+ the text view. The double click link action is builtin and it causes KVIrc
+ to query the MOTD of the server.[br]
+ This is a good place to show a [cmd]popup[/cmd] menu with some operations
+ that can be performed with the server name , like querying stats or links.[br]
+ Please note that the server name is generally NOT a hostname: some parts of
+ it are often hidden. The name of the server is generally valid only within
+ the IRC network that you are connected to.[br]
+ */
+ EVENT("OnServerLinkPopupRequest","$0 = actual name\n$1 - visible name\n$2 - command name"),
+ /*
+ @doc: onchannellinkpopuprequest
+ @type:
+ event
+ @title:
+ OnChannelLinkPopupRequest
+ @short:
+ Channel link popup customization
+ @parameters:
+ $0 = actual name
+ $1 - visible name
+ $2 - command name
+ @window:
+ The window that the user has clicked in
+ @description:
+ Actual name is equal to the command name if command name is not null.
+ Visible name is the link text (as it shown by user)
+ Command name is set if the visible name differs with the actual link target(probably contains mIRC colors,etc). It is equal to the actual target name.
+ This event is triggered when an user has right clicked on an channel link in
+ the text view. The double click link action is builtin and it causes KVIrc
+ to join the channel (unless the user is already on).[br]
+ This is a good place to show a [cmd]popup[/cmd] menu with some operations
+ that can be performed with the channel name like bookmarking, joining with a password,
+ performing a [cmd]who[/cmd] etc...
+ */
+ EVENT("OnChannelLinkPopupRequest","$0 = actual name\n$1 - visible name\n$2 - command name"),
+ /*
+ @doc: onnicklinkpopuprequest
+ @type:
+ event
+ @title:
+ OnNickLinkPopupRequest
+ @short:
+ Nick link popup customization
+ @parameters:
+ $0 = actual name
+ $1 - visible name
+ $2 - command name
+ @window:
+ The window that the user has clicked in
+ @description:
+ Actual name is equal to the command name if command name is not null.
+ Visible name is the link text (as it shown by user)
+ Command name is set if the visible name differs with the actual link target(probably contains mIRC colors,etc). It is equal to the actual target name.
+ This event is triggered when an user has right clicked on an "unknown" nickname link in
+ the text view.[br]
+ This is a good place to show a [cmd]popup[/cmd] menu with some operations
+ that can be performed with the nickname like querying , sending a file by dcc or opening a dcc.chat.
+ Please note that NOT ALL the nickname links will receive this event.[br]
+ The nickname links that appear in the text view of the channel that they are actually in
+ are handled by the [event:onchannelnickpopuprequest]OnChannelNickPopupRequest[/event] event.[br]
+ The nickname links that appear in the text view of the query in that they are a remote end
+ are handled by the [event:onquerynickpopuprequest]OnQueryNickPopupRequest[/event] event.[br]
+ */
+ EVENT("OnNickLinkPopupRequest","$0 = actual name\n$1 - visible name\n$2 - command name"),
+ /*
+ @doc: onquerynickpopuprequest
+ @type:
+ event
+ @title:
+ OnQueryNickPopupRequest
+ @short:
+ Query nicklist popup customization
+ @parameters:
+ $0 = actual name
+ $1 - visible name
+ $2 - command name
+ @window:
+ The window that the user has clicked in
+ @description:
+ Actual name is equal to the command name if command name is not null.
+ Visible name is the link text (as it shown by user)
+ Command name is set if the visible name differs with the actual link target(probably contains mIRC colors,etc). It is equal to the actual target name.
+ This event is triggered when an user has right clicked on a set of nicknames in
+ the query target list.[br]
+ This is a good place to show a [cmd]popup[/cmd] menu with some operations
+ that can be performed with the nickname like sending a file by dcc, opening a dcc.chat or
+ performing a whois.[br]
+ */
+ EVENT("OnQueryNickPopupRequest","$0 = actual name\n$1 - visible name\n$2 - command name"),
+ /*
+ @doc: onquerynickdefaultactionrequest
+ @type:
+ event
+ @title:
+ OnQueryNickDefaultActionRequest
+ @short:
+ Query double click customization
+ @parameters:
+ $0 = actual name
+ $1 - visible name
+ $2 - command name
+ @window:
+ The window that the user has clicked in
+ @description:
+ Actual name is equal to the command name if command name is not null.
+ Visible name is the link text (as it shown by user)
+ Command name is set if the visible name differs with the actual link target(probably contains mIRC colors,etc). It is equal to the actual target name.
+ This event is triggered when an user has double clicked on a nickname in
+ the query target list.[br]
+ You should use this event to do some significant action associated with the double click.[br]
+ A good example might be a [cmd]whois[/cmd] query or a [cmd]dcc.chat[/cmd]
+ */
+ EVENT("OnQueryNickDefaultActionRequest","$0 = actual name\n$1 - visible name\n$2 - command name"),
+ /*
+ @doc: onnicklinkdefaultactionrequest
+ @type:
+ event
+ @title:
+ OnNickLinkDefaultActionRequest
+ @short:
+ Nick link double click customization
+ @parameters:
+ $0 = actual name
+ $1 - visible name
+ $2 - command name
+ @window:
+ The window that the user has clicked in
+ @description:
+ Actual name is equal to the command name if command name is not null.
+ Visible name is the link text (as it shown by user)
+ Command name is set if the visible name differs with the actual link target(probably contains mIRC colors,etc). It is equal to the actual target name.
+ This event is triggered when an user has double clicked on a nickname link.[br]
+ You should use this event to perform some significant action associated with the double click.[br]
+ A good example might be a [cmd]whois[/cmd] or a [cmq]query[/cmd] call.[br]
+ Please note that NOT ALL nickname links will cause this event to be triggered: some nickname
+ links default actions are actually handled by the
+ [event:onquerynickdefaultactionrequest]OnQueryNickDefaultActionRequest[/event] and
+ [event:onchannelnickdefatulactionrequest]OnChannelNickDefaultActionRequest[/event] events.[br]
+ */
+ EVENT("OnNickLinkDefaultActionRequest","$0 = actual name\n$1 - visible name\n$2 - command name"),
+ /*
+ @doc: ontextviewdoublecliked
+ @type:
+ event
+ @title:
+ OnTextViewDoubleClicked
+ @short:
+ Text view link double click customization
+ @parameters:
+ $0 = actual name
+ $1 - visible name
+ $2 - command name
+ @window:
+ The window that the user has clicked in
+ @description:
+ Actual name is equal to the command name if command name is not null.
+ Visible name is the link text (as it shown by user).
+ Command name is set if the visible name differs with the actual link target (probably contains mIRC colors,etc). It is equal to the actual target name.
+ This event is triggered when an user has double clicked on a text view and has not hit any link.[br]
+ I have no idea what you can do in this event....maybe some sort of channel-central dialog? :)
+ */
+ EVENT("OnTextViewDoubleClicked",""),
+ /*
+ @doc: onnotifylistdefaultactionrequest
+ @type:
+ event
+ @title:
+ OnNotifyListDefaultActionRequest
+ @short:
+ Notify list double click customization
+ @parameters:
+ $0 = nickname
+ @window:
+ The window that the user has clicked in
+ @description:
+ This event is triggered when an user has double clicked on a nickname in
+ the notify list (console window).[br]
+ You should use this event to do some significant action associated with the double click.[br]
+ A good example might be a [cmd]whois[/cmd] query or a [cmd]dcc.chat[/cmd]
+ */
+ EVENT("OnNotifyListDefaultActionRequest","$0 = nickname"),
+ /*
+ @doc: onnotifylistpopuprequest
+ @type:
+ event
+ @title:
+ OnNotifyListPopupRequest
+ @short:
+ Notify list context popup customization
+ @parameters:
+ $0 = nickname list
+ @window:
+ The window that the user has clicked in
+ @description:
+ This event is triggered when an user has right clicked on a list of nicknames in
+ the notify list (console window).[br]
+ This is a good place to show a [cmd]popup[/cmd] with some actions that can be performed
+ on the nicknames like querying , performing a whois lookup or sth similar.[br]
+ */
+ EVENT("OnNotifyListPopupRequest","$0 = nickname list"),
+ /*
+ @doc: onping
+ @type:
+ event
+ @title:
+ OnPing
+ @short:
+ Server ping handler
+ @parameters:
+ $0 = server
+ $1 = ping message parameters
+ @window:
+ Console
+ @description:
+ Triggered when a PING message was received from a server.[br]
+ Calling 'halt' in this event will stop the informational message about 'ping->pong'.[br]
+ */
+ EVENT("OnPing","$0 = server\n$1 = message parameters"),
+ /*
+ @doc: onmejoin
+ @type:
+ event
+ @title:
+ OnMeJoin
+ @short:
+ Local user joining a channel
+ @parameters:
+ None
+ @window:
+ Channel
+ @description:
+ Triggered just after the local user has joined a channel.[br]
+ Sine this event is triggered in the chanel window,
+ you can get the channel name by using the [fnc]$target[/fnc] function.[br]
+ Calling 'halt' in this event will stop the join message output.[br]
+ @seealso:
+ [event:onjoin]OnJoin[/event]
+ */
+ EVENT("OnMeJoin",""),
+ /*
+ @doc: onjoin
+ @type:
+ event
+ @title:
+ OnJoin
+ @short:
+ Non-local user joining a channel
+ @parameters:
+ $0 = nickname
+ $1 = username
+ $2 = hostname
+ @window:
+ Channel
+ @description:
+ Triggered just after a non-local user has joined a channel.[br]
+ Sine this event is triggered in the chanel window,
+ you can get the channel name by using the [fnc]$target[/fnc] function.[br]
+ Calling 'halt' in this event will stop the join message output.[br]
+ @seealso:
+ [event:onmejoin]OnMeJoin[/event]
+ */
+ EVENT("OnJoin","$0 = nickname\n$1 = username\n$2 = hostname"),
+ /*
+ @doc: ontopic
+ @type:
+ event
+ @title:
+ OnTopic
+ @short:
+ Topic change on a channel
+ @parameters:
+ $0 = nickname
+ $1 = username
+ $2 = hostname
+ $3 = new topic string
+ @window:
+ Channel
+ @description:
+ Triggered when a TOPIC message is received for a given channel.[br]
+ The topic change has not been executed effectively in the current window
+ so you can still access the old topic by the channel functions.[br]
+ The new topic is passed as fourth parameter and will effectively
+ become the current topic just after this event handler has been executed.[br]
+ Sine this event is triggered in the chanel window,
+ you can get the channel name by using the [fnc]$target[/fnc] function.[br]
+ Calling 'halt' in this event will stop the topic message output.[br]
+ @seealso:
+ [event:onmejoin]OnMeJoin[/event]
+ */
+ EVENT("OnTopic","$0 = nickname\n$1 = username\n$2 = hostname\n$3 = topic"),
+ /*
+ @doc: onmepart
+ @type:
+ event
+ @title:
+ OnMePart
+ @short:
+ Local user is leaving a channel
+ @parameters:
+ $0 = part message
+ @window:
+ Channel
+ @description:
+ Triggered when the local user is leaving a channel.[br]
+ The PART message has already been processed by the server , so
+ the user is effectively no longer on the channel.
+ On the other side, it might be useful to access the channel data from
+ this event, thus the handler is called effectively just BEFORE the
+ user effectively leaves the channel (and thus BEFORE the channel window gets
+ destroyed).[br]
+ Sine this event is triggered in the chanel window,
+ you can get the channel name by using the [fnc]$target[/fnc] function.[br]
+ Calling 'halt' in this event will stop the part message output.[br]
+ @seealso:
+ [event:onmejoin]OnMeJoin[/event], [event:OnJoin]OnJoin[/event],
+ [event:onpart]OnPart[/event]
+ */
+ EVENT("OnMePart","$0 = part message"),
+ /*
+ @doc: onpart
+ @type:
+ event
+ @title:
+ OnPart
+ @short:
+ Non-local user is leaving a channel
+ @parameters:
+ $0 = nickname
+ $1 = username
+ $2 = hostname
+ $3 = part message
+ @window:
+ Channel
+ @description:
+ Triggered when a NON-local user is leaving a channel.[br]
+ The PART message has already been processed by the server , so
+ the user is effectively no longer on the channel.
+ On the other side, it might be useful to access the user-related channel data from
+ this event, thus the handler is called effectively just BEFORE the
+ user effectively leaves the channel (and thus BEFORE the user-related channel data gets
+ destroyed).[br]
+ Since this event is triggered in the chanel window,
+ you can get the channel name by using the [fnc]$target[/fnc] function.[br]
+ Calling 'halt' in this event will stop the part message output.[br]
+ @seealso:
+ [event:onmejoin]OnMeJoin[/event], [event:OnJoin]OnJoin[/event],
+ [event:onmepart]OnMePart[/event]
+ */
+ EVENT("OnPart","$0 = nickname\n$1 = username\n$2 = host\n$3 = part message"),
+ /*
+ @doc: onquit
+ @type:
+ event
+ @title:
+ OnQuit
+ @short:
+ An user is leaving a channel
+ @parameters:
+ $0 = nickname
+ $1 = username
+ $2 = hostname
+ $3 = quit message
+ $4 = channels
+ @window:
+ Console
+ @description:
+ Triggered when an user is quitting IRC.[br]
+ The QUIT message has already been processed by the server , so
+ the user is effectively no longer on IRC.
+ On the other side, it might be useful to access the user-related data from
+ this event, thus the handler is called effectively just BEFORE the
+ user is effectively removed from the IRC user list (and thus from the channels and query windows).[br]
+ The fifth parameter ($4) contains the list of channels on that the user was
+ just before quitting.
+ Calling 'halt' in this event will stop the quit message output (in ALL the windows!).[br]
+ @seealso:
+ [event:onpart]OnPart[/event],
+ [event:onmepart]OnMePart[/event]
+ @examples:
+ [example]
+ foreach(%cname,$4)echo -r=$channel(%cname) User $0 is quitting...
+ [/example]
+ */
+ EVENT("OnQuit","$0 = nickname\n$1 = username\n$2 = host\n$3 = part message\n$4 = channels"),
+ /*
+ @doc: onusermode
+ @type:
+ event
+ @title:
+ OnUserMode
+ @short:
+ The local user has changed mode
+ @parameters:
+ $0 = mode flags
+ @window:
+ Console
+ @description:
+ Triggered when the local user has changed his user mode.[br]
+ The first parameter is the changed mode flag with a leading '+' or '-' sign:
+ if the mode was removed it will be something like "-x" , otherwise something like "+x".[br]
+ Calling 'halt' in this event will stop the "mode" message output.[br]
+ */
+ EVENT("OnUserModeChanged","$0 = mode flags"),
+ /*
+ @doc: onmekick
+ @type:
+ event
+ @title:
+ OnMeKick
+ @short:
+ Local user is being kicked from a channel
+ @parameters:
+ $0 = source nickname
+ $1 = source username
+ $2 = source hostname
+ $3 = kick reason
+ @window:
+ Channel
+ @description:
+ Triggered when the local user has been kicked from a channel.[br]
+ The KICK message has already been processed by the server , so
+ the user is effectively no longer on the channel.
+ On the other side, it might be useful to access the user-related channel data from
+ this event, thus the handler is called effectively just BEFORE the
+ user is effectively removed from the channel internal structures
+ (and thus BEFORE the channel data itself gets destroyed).[br]
+ Sine this event is triggered in the chanel window,
+ you can get the channel name by using the [fnc]$target[/fnc] function.[br]
+ Calling 'halt' in this event will stop the kick message output.[br]
+ @seealso:
+ [event:onkick]OnKick[/event]
+ */
+ EVENT("OnMeKick","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = reason"),
+ /*
+ @doc: onkick
+ @type:
+ event
+ @title:
+ OnKick
+ @short:
+ Non-local user is being kicked from a channel
+ @parameters:
+ $0 = source nickname
+ $1 = source username
+ $2 = source hostname
+ $3 = kicked nickname
+ $4 = kick reason
+ @window:
+ Channel
+ @description:
+ Triggered when a non-local user is being kicked from a channel.[br]
+ The KICK message has already been processed by the server , so
+ the user is effectively no longer on the channel.
+ On the other side, it might be useful to access the user-related channel data from
+ this event, thus the handler is called effectively just BEFORE the
+ user is effectively removed from the channel internal structures.[br]
+ Sine this event is triggered in the chanel window,
+ you can get the channel name by using the [fnc]$target[/fnc] function.[br]
+ Calling 'halt' in this event will stop the kick message output.[br]
+ @seealso:
+ [event:onmekick]OnMeKick[/event]
+ */
+ EVENT("OnKick","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = kicked nick\n$4 = reason"),
+ /*
+ @doc: onmeaway
+ @type:
+ event
+ @title:
+ OnMeAway
+ @short:
+ Local user sets the AWAY status
+ @parameters:
+ $0 = server message trailing
+ @window:
+ Console
+ @description:
+ Triggered when the local user enters the AWAY state.
+ Calling 'halt' in this event disables the server "You have been marked as being away" message.[br]
+ @seealso:
+ [event:onmeback]OnMeBack[/event]
+ */
+ EVENT("OnMeAway","$0- = server message trailing"),
+ /*
+ @doc: onmeback
+ @type:
+ event
+ @title:
+ OnMeBack
+ @short:
+ Local user cancels the AWAY status
+ @parameters:
+ $0 = away start time
+ $1- = server message trailing
+ @window:
+ Console
+ @description:
+ Triggered when the local user leaves the AWAY state.[br]
+ The $0 parameter contains the [b]unix time[/b] of the away status start.[br]
+ You can obtain the current [b]unix time[/b] from the function [fnc]$unixtime[/fnc].[br]
+ Calling 'halt' in this event disables the server "You are no longer marked as being away" message.[br]
+ @seealso:
+ [event:onmeaway]OnMeAway[/event]
+ */
+ EVENT("OnMeBack","$0 = away start time\n$1- = server message trailing"),
+ /*
+ @doc: onchannelwindowcreated
+ @type:
+ event
+ @title:
+ OnChannelWindowCreated
+ @short:
+ A channel window has just been opened
+ @parameters:
+ none
+ @window:
+ Channel window
+ @description:
+ Triggered when a channel window has just been created
+ Note that the channel is still empty: no users have joined it.
+ @seealso:
+ [event:onquerywindowcreated]OnQueryWindowCreated[/event]
+ */
+ EVENT("OnChannelWindowCreated",""),
+ /*
+ @doc: onquerywindowcreated
+ @type:
+ event
+ @title:
+ OnQueryWindowCreated
+ @short:
+ A query window has just been opened
+ @parameters:
+ none
+ @window:
+ Query window
+ @description:
+ Triggered when a query window has just been created
+ Note that the query is still empty: it has no targets.
+ If you want to trigger some events in response to a query
+ creation by some remote user then you probably need
+ [event:onquerywindowrequest]OnQueryWindowRequest[/event] or
+ [event:onquerytargetadded]OnQueryTargetAdded[/event].
+ @seealso:
+ [event:onchannelwindowcreated]OnChannelWindowCreated[/event]
+ [event:onquerywindowrequest]OnQueryWindowRequest[/event]
+ [event:onquerytargetadded]OnQueryTargetAdded[/event]
+ */
+ EVENT("OnQueryWindowCreated",""),
+ /*
+ @doc: onban
+ @type:
+ event
+ @title:
+ OnBan
+ @short:
+ Someone has set a +b flag on the channel
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source hostname
+ $3 = ban mask
+ @window:
+ Channel window
+ @description:
+ Triggered when someone sets a +b flag on the channel
+ @seealso:
+ [event:onunban]OnUnban[/event]
+ */
+ EVENT("OnBan","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = ban mask"),
+ /*
+ @doc: onunban
+ @type:
+ event
+ @title:
+ OnUnban
+ @short:
+ Someone has set a -b flag on the channel
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source hostname
+ $3 = unban mask
+ @window:
+ Channel window
+ @description:
+ Triggered when someone sets a -b flag on the channel
+ @seealso:
+ [event:onban]OnBan[/event]
+ */
+ EVENT("OnUnBan","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = ban mask"),
+ /*
+ @doc: onmeban
+ @type:
+ event
+ @title:
+ OnMeBan
+ @short:
+ Local user is being banned in a channel
+ @parameters:
+ $0 = source nickname
+ $1 = source username
+ $2 = source hostname
+ $3 = ban mask
+ @window:
+ Channel
+ @description:
+ Triggered when someone has set a +b flag that matches your mask (bans you) in the channel.[br]
+ @seealso:
+ [event:onmeunban]OnMeUnban[/event]
+ */
+ EVENT("OnMeBan","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = ban mask"),
+ /*
+ @doc: onmeunban
+ @type:
+ event
+ @title:
+ OnMeUnban
+ @short:
+ Local user is being de-banned in a channel
+ @parameters:
+ $0 = source nickname
+ $1 = source username
+ $2 = source hostname
+ $3 = ban mask
+ @window:
+ Channel
+ @description:
+ Triggered when someone has set a -b flag that matches your mask (debans you) in the channel.[br]
+ @seealso:
+ [event:onmeban]OnMeBan[/event]
+ */
+EVENT("OnMeUnban","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = ban mask"),
+ /*
+ @doc: onbanexception
+ @type:
+ event
+ @title:
+ OnBanException
+ @short:
+ Someone has set a +e flag on the channel
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source hostname
+ $3 = banexception mask
+ @window:
+ Channel window
+ @description:
+ Triggered when someone sets a +e (Ban Exception) flag on the channel
+ @seealso:
+ [event:onbanexceptionremove]OnBanExceptionRemove[/event]
+ */
+
+ EVENT("OnBanException","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = ban exception mask"),
+ /*
+ @doc: onbanexceptionremove
+ @type:
+ event
+ @title:
+ OnBanExceptionRemove
+ @short:
+ Someone has set a -e flag on the channel
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source hostname
+ $3 = unban mask
+ @window:
+ Channel window
+ @description:
+ Triggered when someone sets a -e (Removed a Ban Exception) flag on the channel
+ @seealso:
+ [event:onbanexception]OnBanException[/event]
+ */
+ EVENT("OnBanExceptionRemove","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = ban exception mask"),
+ /*
+ @doc: onmebanexception
+ @type:
+ event
+ @title:
+ OnMeBanException
+ @short:
+ Someone has set a +e flag on the local user
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source hostname
+ $3 = mask
+ @window:
+ Channel window
+ @description:
+ Triggered when someone sets a +e (puts a Ban Exception) flag on the local user in the active
+channel
+ @seealso:
+ [event:onmebanexceptionremove]OnMeBanExceptionRemove[/event]
+ */
+ EVENT("OnMeBanException","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = mask"),
+ /*
+ @doc: onmebanexceptionremove
+ @type:
+ event
+ @title:
+ OnMeBanExceptionRemove
+ @short:
+ Someone has set a -e flag on the local user
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source hostname
+ $3 = mask
+ @window:
+ Channel window
+ @description:
+ Triggered when someone sets a -e (removes a Ban Exception) flag on the local user in the active channel
+ @seealso:
+ [event:onmebanexception]OnMeBanException[/event]
+ */
+ EVENT("OnMeBanExceptionRemove","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = mask"),
+ /*
+ @doc: onop
+ @type:
+ event
+ @title:
+ OnOp
+ @short:
+ Someone has given a user the +o flag
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ $3 = opped nick
+ @window:
+ Channels window
+ @description:
+ Triggered when someone sets a +o (has made Op) flag on a user of the active channel.
+ @seealso:
+ [event:ondeop]OnDeOp[/event]
+ */
+ EVENT("OnOp","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = opped nick"),
+ /*
+ @doc: ondeop
+ @type:
+ event
+ @title:
+ OnDeOp
+ @short:
+ Someone has given a user the -o flag
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ $3 = deopped nick
+ @window:
+ Channels window
+ @description:
+ Triggered when someone sets a -o (DeOp) flag on a user in the active channel.
+ @seealso:
+ [event:onop]OnOp[/event]
+ */
+ EVENT("OnDeOp","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = deopped nick"),
+ /*
+ @doc: onmeop
+ @type:
+ event
+ @title:
+ OnMeOp
+ @short:
+ Someone has given the +o flag to the local user
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ @window:
+ Channels window
+ @description:
+ Triggered when someone sets a +o (has made Op) flag on the local user in the active channel.
+ @seealso:
+ [event:onmedeop]OnMeDeOp[/event]
+ */
+ EVENT("OnMeOp","$0 = source nick\n$1 = source username\n$2 = source hostname"),
+ /*
+ @doc: onmedeop
+ @type:
+ event
+ @title:
+ OnMeDeOp
+ @short:
+ Someone has given the -o flag to the local user
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ @window:
+ Channels window
+ @description:
+ Triggered when someone sets a -o (has deoped) flag on the local user in the active channel.
+ @seealso:
+ [event:onmeop]OnMeOp[/event]
+ */
+ EVENT("OnMeDeOp","$0 = source nick\n$1 = source username\n$2 = source hostname"),
+ /*
+ @doc: onlimitset
+ @type:
+ event
+ @title:
+ OnLimitSet
+ @short:
+ The channel users limit has been set
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ $3 = limit
+ @window:
+ Channels window
+ @description:
+ Triggered when someone change or sets the active channel user limit (+l)
+ @seealso:
+ [event:onlimitunset]OnLimitUnset[/event]
+ */
+ EVENT("OnLimitSet","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = limit"),
+ /*
+ @doc: onlimitunset
+ @type:
+ event
+ @title:
+ OnLimitUnSet
+ @short:
+ The channel users limit has been unset
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ @window:
+ Channels window
+ @description:
+ Triggered when someone unsets the active channel user limit (-l)
+ @seealso:
+ [event:onlimitunset]OnLimitUnset[/event]
+ */
+ EVENT("OnLimitUnset","$0 = source nick\n$1 = source username\n$2 = source hostname"),
+ /*
+ @doc: onkeyset
+ @type:
+ event
+ @title:
+ OnKeySet
+ @short:
+ The channel users key has been set
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ $3 = key
+ @window:
+ Channels window
+ @description:
+ Triggered when someone change or sets the active channel access key (+k)
+ @seealso:
+ [event:onkeyunset]OnKeyUnset[/event]
+ */
+ EVENT("OnKeySet","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = key"),
+ /*
+ @doc: onkeyunset
+ @type:
+ event
+ @title:
+ OnKeyUnset
+ @short:
+ The channel users key has been unset
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ @window:
+ Channels window
+ @description:
+ Triggered when someone unsets the active channel access key (-k)
+ @seealso:
+ [event:onkeyunset]OnKeyUnset[/event]
+ */
+ EVENT("OnKeyUnset","$0 = source nick\n$1 = source username\n$2 = source hostname"),
+ /*
+ @doc: oninvite
+ @type:
+ event
+ @title:
+ OnInvite
+ @short:
+ The local user has received an invitation
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ $3 = channel
+ @window:
+ Active window/console
+ @description:
+ Triggered when someone invites the local user to join a channel
+ */
+ EVENT("OnInvite","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = channel"),
+ /*
+ @doc: onchannelmessage
+ @type:
+ event
+ @title:
+ OnChannelMessage
+ @short:
+ A message has been received from the channel
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ $3 = message
+ $4 = [target mode prefixes]
+ @window:
+ Channels window
+ @description:
+ Triggered when a channel message is received
+ $0!$1@$2 is the source of the message, $3 is the message text
+ and $4 are the eventual mode prefixes added to the target channel (i.e:
+ if the message is only for channel operators then you will get the string @ in $4).
+ @seealso:
+ [event:onquerymessage]OnQueryMessage[/event]
+ [event:ondccchatmessage]OnDCCChatMessage[/event]
+ */
+ EVENT("OnChannelMessage","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = message\n$4 = target mode prefixes"),
+ /*
+ @doc: onquerymessage
+ @type:
+ event
+ @title:
+ OnQueryMessage
+ @short:
+ A message has been received from a query
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ $3 = message
+ @window:
+ Query or console window.
+ @description:
+ Triggered when a query message is received.[br]
+ If you [cmd]return[/cmd] [fnc]$false[/fnc] in this event, the message output will be stopped.[br]
+ This event is triggered in the query window associated to the source nick, or in
+ the IRC context console window if the query window has not been created for some reason.
+ Note that you can't stop the query window creation with this event: you must
+ use [event:onquerywindowrequest]OnQueryWindowRequest[/event] for that purpose.
+ Note also that you may not receive this event if the anti-spam option is in use and
+ KVIrc has detected that this might be a spam message. This is usually not an issue
+ but if you care about it then write to pragma at kvirc dot net asking to add a OnSpam event.
+ @seealso:
+ [event:onquerywindowrequest]OnQueryWindowRequest[/event]
+ [event:onquerywindowcreated]OnQueryWindowCreated[/event]
+ [event:onquerytargetadded]OnQueryTargetAdded[/event]
+ [event:onchannelmessage]OnChannelMessage[/event]
+ [event:ondccchatmessage]OnDCCChatMessage[/event]
+ */
+ EVENT("OnQueryMessage","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = message"),
+ /*
+ @doc: onvoice
+ @type:
+ event
+ @title:
+ OnVoice
+ @short:
+ Someone has given a user the +v flag
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ $3 = voiced nick
+ @window:
+ Channels window
+ @description:
+ Triggered when someone sets a +v (voice) flag to someone in the active channel.
+ @seealso:
+ [event:ondevoice]OnDeVoice[/event]
+ */
+ EVENT("OnVoice","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = voiced nick"),
+ /*
+ @doc: ondevoice
+ @type:
+ event
+ @title:
+ OnDeVoice
+ @short:
+ Someone has given a user the -v flag
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ $3 = devoiced nick
+ @window:
+ Channels window
+ @description:
+ Triggered when someone sets a -v (devoice) flag to someone in the active channel.
+ @seealso:
+ [event:ondevoice]OnDeVoice[/event]
+ */
+ EVENT("OnDeVoice","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = voiced nick"),
+ /*
+ @doc: onmevoice
+ @type:
+ event
+ @title:
+ OnMeVoice
+ @short:
+ Someone has give the local user a +v flag
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ @window:
+ Channels window
+ @description:
+ Triggered when someone sets a +v (devoice) flag for the local user in the active channel.
+ @seealso:
+ [event:onmedevoice]OnMeDeVoice[/event]
+ */
+ EVENT("OnMeVoice","$0 = source nick\n$1 = source username\n$2 = source hostname"),
+ /*
+ @doc: onmedevoice
+ @type:
+ event
+ @title:
+ OnMeDeVoice
+ @short:
+ Someone has give the local user a -v flag
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ @window:
+ Channels window
+ @description:
+ Triggered when someone sets a -v (devoice) flag for the local user in the active channel.
+ @seealso:
+ [event:onmevoice]OnMeVoice[/event]
+ */
+ EVENT("OnMeDeVoice","$0 = source nick\n$1 = source username\n$2 = source hostname"),
+ /*
+ @doc: onnickchange
+ @type:
+ event
+ @title:
+ OnNickChange
+ @short:
+ Someone has changed his nickname
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ $3 = new nickname
+ @window:
+ Console window
+ @description:
+ Triggered when someone has changed his nickname.
+ The change has already been processed by the server, but not by the
+ local KVIrc database.
+ @seealso:
+ [event:onmenickchange]OnMeNickChange[/event]
+ */
+ EVENT("OnNickChange","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = new nickname"),
+ /*
+ @doc: onmenickchange
+ @type:
+ event
+ @title:
+ OnMeNickChange
+ @short:
+ The local user has changed his nickname
+ @parameters:
+ $0 = old nick
+ $1 = new nickname
+ @window:
+ Console window
+ @description:
+ Triggered when the local user is going to change his nickname.
+ The change has already been processed by the server, but not by the
+ local KVIrc database.
+ @seealso:
+ [event:onnickchange]OnNickChange[/event]
+ */
+ EVENT("OnMeNickChange","$0 = old nick\n$1 = new nick"),
+ /*
+ @doc: onctcprequest
+ @type:
+ event
+ @title:
+ OnCTCPRequest
+ @short:
+ A CTCP request has been received
+ @parameters:
+ $0 = source nick
+ $1 = source user
+ $2 = source host
+ $3 = target
+ $4 = ctcp type
+ $5- = ctcp parameters
+ @window:
+ Console window
+ @description:
+ A CTCP request has been received.[br]
+ If you call [cmd]halt[/cmd] in this event, you will stop the further
+ processing of the CTCP (thus, you can disable some of the KVIrc features).
+ Be careful when using this.
+ @seealso:
+ [event:onctcpreply]OnCTCPReply[/event]
+ */
+ EVENT("OnCTCPRequest","$0 = source nick\n$1 = source user\n$2 = source host\n$3 = target\n$4 = ctcp type\n$5- = ctcp parameters"),
+ /*
+ @doc: onctcpreply
+ @type:
+ event
+ @title:
+ OnCTCPReply
+ @short:
+ A CTCP reply has been received
+ @parameters:
+ $0 = source nick
+ $1 = source user
+ $2 = source host
+ $3 = target
+ $4 = ctcp type
+ $5- = ctcp parameters
+ @window:
+ Console window
+ @description:
+ A CTCP reply has been received.[br]
+ If you call [cmd]halt[/cmd] in this event, you will stop the further
+ processing of the CTCP (thus, you can disable some of the KVIrc features).
+ Be careful when using this.
+ @seealso:
+ [event:onctcpreply]OnCTCPReply[/event]
+ */
+ EVENT("OnCTCPReply","$0 = source nick\n$1 = source user\n$2 = source host\n$3 = target\n$4 = ctcp type\n$5- = ctcp parameters"),
+ /*
+ @doc: onunhandledliteral
+ @type:
+ event
+ @title:
+ OnUnhandledLiteral
+ @short:
+ An unhandled literal server message has been received
+ @parameters:
+ $0 = source mask
+ $1 = message (literal)
+ $2- = parameters
+ @window:
+ Console window
+ @description:
+ An unhandled/unrecognized literal server message has been received.[br]
+ The KVIrc core code hasn't been able to recognize it nor handle it
+ in any way.[br]
+ If you call [cmd]halt[/cmd] you will stop the standard or warning message output.[br]
+ For server numerics there is no "unhandled" event, you should use the
+ raw numeric events to handle them.[br]
+ @seealso:
+ */
+ EVENT("OnUnhandledLiteral","$0 = source mask\n$1 = message\n$2- parameters"),
+ /*
+ @doc: onmehalfop
+ @type:
+ event
+ @title:
+ OnMeHalfOp
+ @short:
+ Someone has given the local user the +h flag
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ @window:
+ Channels window
+ @description:
+ Triggered when someone sets a +h (halfop) flag for the local user in the active channel.
+ @seealso:
+ [event:onmedehalfop]OnMeDeHalfOp[/event]
+ */
+ EVENT("OnMeHalfOp","$0 = source nick\n$1 = source username\n$2 = source hostname"),
+ /*
+ @doc: onmedehalfop
+ @type:
+ event
+ @title:
+ OnMeDeHalfOp
+ @short:
+ Someone has given the local user the -h flag
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ @window:
+ Channels window
+ @description:
+ Triggered when someone sets a -h (dehalfop) flag for the local user in the active channel.
+ @seealso:
+ [event:onmehalfop]OnMeHalfOp[/event]
+ */
+ EVENT("OnMeDeHalfOp","$0 = source nick\n$1 = source username\n$2 = source hostname"),
+ /*
+ @doc: onhalfop
+ @type:
+ event
+ @title:
+ OnHalfOp
+ @short:
+ Someone has given a user the +h flag
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ $3 = halfopped nick
+ @window:
+ Channels window
+ @description:
+ Triggered when someone sets a +h flag on a user of the active channel.
+ @seealso:
+ [event:ondehalfop]OnDeHalfOp[/event]
+ */
+ EVENT("OnHalfOp","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = halfopped nick"),
+ /*
+ @doc: ondehalfop
+ @type:
+ event
+ @title:
+ OnDeHalfOp
+ @short:
+ Someone has given a user the -h flag
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ $3 = dehalfopped nick
+ @window:
+ Channels window
+ @description:
+ Triggered when someone sets a -h (dehalfop) flag on a user in the active channel.
+ @seealso:
+ [event:onhalfop]OnHalfOp[/event]
+ */
+ EVENT("OnDeHalfOp","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = dehalfopped nick"),
+ /*
+ @doc: oninviteexception
+ @type:
+ event
+ @title:
+ OnInviteException
+ @short:
+ A +I mode has been set
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ $3 = target mask
+ @window:
+ Channels window
+ @description:
+ Someone has set mode +I on a channel
+ @seealso:
+ [event:oninviteexceptionremove]OnInviteExceptionRemove[/event]
+ */
+ EVENT("OnInviteException","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = target mask"),
+ /*
+ @doc: oninviteexceptionremove
+ @type:
+ event
+ @title:
+ OnInviteExceptionRemove
+ @short:
+ Move -I has been set
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ $3 = target mask
+ @window:
+ Channels window
+ @description:
+ Someone has set mode -I on a channel
+ @seealso:
+ [event:oninviteexceptionremove]OnInviteExceptionRemove[/event]
+ */
+ EVENT("OnInviteExceptionRemove","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = target mask"),
+ /*
+ @doc: onmeinviteexception
+ @type:
+ event
+ @title:
+ OnMeInviteException
+ @short:
+ A +I mode has been set
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ $3 = mask
+ @window:
+ Channels window
+ @description:
+ Someone has set mode +I on a channel with a target mask that matches
+ the local user mask
+ @seealso:
+ [event:onmeinviteexceptionremove]OnMeInviteExceptionRemove[/event]
+ */
+ EVENT("OnMeInviteException","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = mask"),
+ /*
+ @doc: onmeinviteexceptionremove
+ @type:
+ event
+ @title:
+ OnMeInviteExceptionRemove
+ @short:
+ Move -I has been set
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ $3 = mask
+ @window:
+ Channels window
+ @description:
+ Someone has set mode -I on a channel with a target mask that matches
+ the local user mask
+ @seealso:
+ [event:onmeinviteexceptionremove]OnMeInviteExceptionRemove[/event]
+ */
+ EVENT("OnMeInviteExceptionRemove","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = mask"),
+ /*
+ @doc: onaction
+ @type:
+ event
+ @title:
+ OnAction
+ @short:
+ Someone issued a CTCP ACTION
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ $3 = message target
+ $4 = action message text
+ @window:
+ Channels and query windows
+ @description:
+ This event is triggered when a remote user issues a CTCP ACTION.[br]
+ (The CTCP ACTION is usually triggered by the /me command).[br]
+ The parameters $0-$2 identify the source user.[br]
+ $3 identifies the message target and can be one of the following:[br]
+ - The local user nickname : this is a private CTCP ACTION and is triggered inside a query window.[br]
+ - A channel name : this is a channel CTCP ACTION and is triggered in the channel window.[br]
+ - Any other string : this is either a broadcast CTCP ACTION (sent by a privileged user
+ to a subset of clients) or a sign of the server brain damage :D In this
+ case the event is triggered in the console window.[br]
+ Calling [cmd]halt[/cmd] in this event stops the message output.[br]
+ */
+
+ EVENT("OnAction", \
+ "$0 = source nick\n" \
+ "$1 = source username\n" \
+ "$2 = source hostname\n" \
+ "$3 = message target\n" \
+ "$4 = action message text"),
+ /*
+ @doc: onctcpflood
+ @type:
+ event
+ @title:
+ OnCTCPFlood
+ @short:
+ Someone tried to flood you with CTCP requests
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source hostname
+ $3 = target
+ $4 = ctcp type
+ $5- = ctcp parameters
+ @window:
+ Console window
+ @description:
+ On IRC there is a kind of attack called 'CTCP Flood'. It consist of a lot of CTCP request in a short period of time, trying to made your client reply to them and made the server kick you. This event is triggered when one of such attacks is detected.
+ @seealso:
+ [event:onctcprequest]OnCTCPRequest[/event]
+ [event:onctcpreply]OnCTCPReply[/event]
+ */
+ EVENT("OnCTCPFlood", "$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = target\n$4 = ctcp type\n$5- = ctcp parameters"),
+ /*
+ @doc: onchannelnotice
+ @type:
+ event
+ @title:
+ OnChannelNotice
+ @short:
+ A NOTICE have been issued to a channel
+ @parameters:
+ $0 = source nick
+ $1 = message
+ $2 = target
+ @window:
+ Channel window
+ @description:
+ Someone has issued a NOTICE with a channel as his target
+ For normal channel notices $2 parameter will only a channel name.
+ For channel op or channel voice notices it will contain also the leading '@' or '+' flag.
+ Please note that this convention is different from the one used in [event:onchannelprivmsg]OnChannelPrivmsg[/event]:
+ the incompatibility is here for historical reasons: it is not a big deal so we're not fighting it :)
+ @seealso:
+ [event:onservernotice]OnServerNotice[/event]
+ */
+ EVENT("OnChannelNotice", "$0 = source nick\n$1 = message,\n$2 = target"),
+ /*
+ @doc: onservernotice
+ @type: event
+ @title:
+ OnServerNotice
+ @short:
+ A server NOTICE have been issued.
+ @parameters:
+ $0 = source nick
+ $1 = message
+ @window:
+ Console window
+ @description:
+ Someone has issued a server NOTICE.
+ @seealso:
+ [event:onchannelnotice]OnChannelNotice[/event]
+ */
+ EVENT("OnServerNotice", "$0 = source nick\n$1 = message"),
+ /*
+ @doc: ondccchatwindowcreated
+ @type: event
+ @title:
+ OnDCCChatWindowCreated
+ @short:
+ A dcc chat window has been just created
+ @parameters:
+ $0 = DCC session ID
+ @window:
+ DCC Chat
+ @description:
+ A DCC Chat window has been just created.
+ The [module:dcc]dcc[/module] module functions
+ can be used to retrieve the informations about the
+ window and the data transfer.
+ The DCC Chat connection attempt starts from here:
+ you can get [event:ondccchatterminated]OnDCCChatError[/event]
+ in any moment
+ @seealso:
+ [event:ondccchatterminated]OnDCCChatTerminated[/event]
+ */
+ EVENT("OnDCCChatWindowCreated", "$0 = DCC session ID"),
+ /*
+ @doc: ondccchatconnectioninprogress
+ @type:
+ event
+ @title:
+ OnDCCChatConnectionInProgress
+ @short:
+ A DCC Chat connection has just been started
+ @parameters:
+ $0 = DCC session ID
+ @window:
+ DCC Chat
+ @description:
+ A DCC Chat connection has just been started succesfully.
+ The [module:dcc]dcc[/module] module functions
+ can be used to retrieve the informations about the
+ window and the data transfer.
+ In case of a passive DCC Chat, the local ip and port
+ are known from the moment that this event triggers.
+ @seealso:
+ */
+ EVENT("OnDCCChatConnectionInProgress","$0 = DCC session ID"),
+ /*
+ @doc: ondccchatconnected
+ @type:
+ event
+ @title:
+ OnDCCChatConnected
+ @short:
+ A DCC Chat connection has been established
+ @parameters:
+ $0 = DCC session ID
+ @window:
+ DCC Chat
+ @description:
+ A DCC Chat connection has just been established.
+ The [module:dcc]dcc[/module] module functions
+ can be used to retrieve the informations about the
+ window and the data transfer.
+ @seealso:
+ */
+ EVENT("OnDCCChatConnected","$0 = DCC session ID"),
+ /*
+ @doc: ondccchatmessage
+ @type:
+ event
+ @title:
+ OnDCCChatMessage
+ @short:
+ A DCC Chat message has just been received
+ @parameters:
+ $0 = message text
+ $1 = DCC session ID
+ @window:
+ DCC Chat
+ @description:
+ A DCC Chat message has just been received.
+ The [module:dcc]dcc[/module] module functions
+ can be used to retrieve the informations about the
+ window and the data transfer.
+ @seealso:
+ */
+ EVENT("OnDCCChatMessage","$0 = text\n$1 = DCC session ID"),
+ /*
+ @doc: ondccchaterror
+ @type:
+ event
+ @title:
+ OnDCCChatError
+ @short:
+ A DCC Chat error has just been triggered
+ @parameters:
+ $0 = error message
+ $1 = DCC session ID
+ @window:
+ DCC Chat
+ @description:
+ A DCC Chat error has just been triggered
+ The [module:dcc]dcc[/module] module functions
+ can be used to retrieve the informations about the
+ window and the data transfer.
+ A DCC Chat can terminate because an error has
+ interrupted the connection or because
+ the local user has closed the window forcibly.
+ The remote end closing the connection is considered
+ an error.
+ @seealso:
+ */
+ EVENT("OnDCCChatError","$0 = error message,$1 = DCC session ID"),
+ /*
+ @doc: ondccchatdisconnected
+ @type:
+ event
+ @title:
+ OnDCCChatDisconnected
+ @short:
+ A DCC Chat has been just disconnected
+ @parameters:
+ $0 = DCC session ID
+ @window:
+ DCC Chat
+ @description:
+ A DCC Chat has just been disconnected for some reason.
+ The [module:dcc]dcc[/module] module functions
+ can be used to retrieve the informations about the
+ window and the data transfer.
+ @seealso:
+ */
+ EVENT("OnDCCChatDisconnected","$0 = DCC session ID"),
+ /*
+ @doc: ondccchatwindowclosing
+ @type:
+ event
+ @title:
+ OnDCCChatWindowClosing
+ @short:
+ A DCC Chat is going to be closed
+ @parameters:
+ $0 = DCC session ID
+ @window:
+ DCC Chat
+ @description:
+ A DCC Chat window is going to be closed.
+ The [module:dcc]dcc[/module] module functions
+ can be used to retrieve the informations about the
+ window and the data transfer.
+ @seealso:
+ */
+ EVENT("OnDCCChatWindowClosing","$0 = DCC session ID"),
+ /*
+ @doc: onaccelkeypressed
+ @type:
+ event
+ @title:
+ OnAccelKeyPressed
+ @short:
+ An accelerator key was pressed
+ @parameters:
+ $0 = keys
+ @window:
+ Active window
+ @description:
+ An accelerator key has been pressed by the user.[br]
+ The key sequence that the user has pressed is passed in $0 as a
+ human readable string.[br]
+ The keys that actually work with KVIrc are:[br]
+ F2 to F12, F1 to F12 with SHIFT key pressed, 0 to 9 with CTRL key pressed.[br]
+ This means that you can set up 33 "quick" aliases...that's really more than
+ an user can remember.[br]
+ If you need more keys , mail me , I'll see what I can do :)[br]
+ */
+ EVENT("OnAccelKeyPressed", "$0 = keys"),
+ /*
+ @doc: onhighlight
+ @type:
+ event
+ @title:
+ OnHighlight
+ @short:
+ A channel or query message is going to be highlighted
+ @parameters:
+ $0 = talker nick
+ $1 = target username
+ $2 = target hostname
+ $3 = message
+ $4 = highlight word
+ $5 = message type
+ $6 = is action
+ @window:
+ Channel or query window
+ @description:
+ A channel or query message is going to be highlighted.[br]
+ The message may be either a PRIVMSG, a NOTICE or a CTCP ACTION.[br]
+ The highlight may be either caused by a "highlight word" or by your own nickname
+ (if that option was specified).[br]
+ $5 contains the original color/icon set of the message that depends on
+ the type of the message itself.[br]
+ Since the CTCP ACTION messages generally have different format of output
+ then for your convenience $6 contains 1 if the message was caused by a
+ CTCP ACTION and 0 otherwise.[br]
+ If you call [cmd]halt[/cmd] in this event the message output will be completely disabled
+ (thus, KVIrc assumes that YOU have provided the necessary output and feedback to the user).[br]
+ A common error here is to call halt and re-echo the unmodified output; [b]this
+ can cause another OnHighlight event to be triggered and create an infinite loop![/b].
+ [cmd]echoprivmsg[/cmd] [b]-n[/b] is the command you probably want.
+ */
+ EVENT("OnHighlight", "$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = message\n$4 = highlight word"),
+ /*
+ @doc: onwindowactivated
+ @type:
+ event
+ @title:
+ OnWindowActivated
+ @short:
+ A window has just been activated
+ @parameters:
+ none
+ @window:
+ Any window
+ @description:
+ This event is triggered when a KVIrc MDI window gets activated.[br]
+ This might be a good place to update your toolbar button status (for example).[br]
+ */
+ EVENT("OnWindowActivated",""),
+ /*
+ @doc: onnotifyonline
+ @type:
+ event
+ @title:
+ OnNotifyOnline
+ @short:
+ An user in the notify list is on-line
+ @parameters:
+ $0 = nickname
+ @window:
+ Console or active window of the IRC context
+ @description:
+ This event is triggered when one of the users in your [doc:notify_list]notify[/doc] lists
+ is detected to be ON-Line.[br]
+ The event is triggered in the console window or the active window of the IRC context depending
+ on the user options.[br]
+ (Note: If you call [cmd]halt[/cmd] in this event , you will stop the "Nick is on irc" output,
+ but this is rather a bad idea since KVIrc gives a lot of additional informations to the
+ user with some notify-methods).[br]
+ This is a good place to play a sound or attract the user attention in some other way.[br]
+
+ */
+ EVENT("OnNotifyOnline","$0 = nickname"),
+ /*
+ @doc: onnotifyoffline
+ @type:
+ event
+ @title:
+ OnNotifyOffline
+ @short:
+ An user in the notify list went off-line
+ @parameters:
+ $0 = nickname
+ @window:
+ Console or active window of the IRC context
+ @description:
+ This event is triggered when one of the users in your [doc:notify_list]notify[/doc] lists
+ has just left IRC.[br]
+ The event is triggered in the console window or the active window of the IRC context depending
+ on the user options.[br]
+ (Note: If you call [cmd]halt[/cmd] in this event , you will stop the "Nick has left irc" output,
+ but this is rather a bad idea since KVIrc gives a lot of additional informations to the
+ user with some notify-methods).[br]
+ This is a good place to play a sound or attract the user attention in some other way.[br]
+ */
+ EVENT("OnNotifyOffline","$0 = nickname"),
+ /*
+ @doc: onpong
+ @type:
+ event
+ @title:
+ OnPong
+ @short:
+ Server pong handler
+ @parameters:
+ $0 = server
+ $1 = pong message parameters
+ @window:
+ Console
+ @description:
+ Triggered when a PONG message was received from a server.[br]
+ Calling 'halt' in this event will stop the informational message about the pong'.[br]
+ */
+ EVENT("OnPong", "$0 = server\n$1 = pong message parameters"),
+ /*
+ @doc: onlagalarmtimeup
+ @type:
+ event
+ @title:
+ OnLagAlarmTimeUp
+ @short:
+ High-Lag Alarm Started
+ @parameters:
+ $0 = server
+ $1 = Lag value in miliseconds
+ @window:
+ Console
+ @description:
+ Triggered when the Lag on the server tied to this console is higher than the[br]
+ configured Lag-Alarm time.
+ */
+ EVENT("OnLagAlarmTimeUp", "$0 = server\n$1 = lag time in miliseconds"),
+ /*
+ @doc: onlagalarmtimedown
+ @type:
+ event
+ @title:
+ OnLagAlarmTimeDown
+ @short:
+ High-Lag Alarm Stopped
+ @parameters:
+ $0 = server
+ $1 = Lag value in miliseconds
+ @window:
+ Console
+ @description:
+ Triggered when the Lag on the server tied to this console is lower than the[br]
+ configured Lag-Alarm time but was higher in the previous lag check.
+ */
+ EVENT("OnLagAlarmTimeDown", "$0 = server\n$1 = lag time in miliseconds"),
+ /*
+ @doc: onlagcheck
+ @type:
+ event
+ @title:
+ OnLagCheck
+ @short:
+ The lag metering engine has checked the lag
+ @parameters:
+ $0 = server
+ $1 = Lag value in miliseconds
+ @window:
+ Console
+ @description:
+ Triggered when the lag metering engine calculate a new current lag.[br]
+ */
+ EVENT("OnLagCheck", "$0 = server\n$1 = lag time in miliseconds"),
+ /*
+ @doc: onquerynotice
+ @type:
+ event
+ @title:
+ OnQueryNotice
+ @short:
+ A private notice has been received
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ $3 = message
+ @window:
+ Query window or console
+ @description:
+ Triggered when a private notice is received.[br]
+ If you call [cmd]halt[/cmd] in this event, the message output will be stopped
+ and if the message was going to cause a query window creation, the window will NOT be created.[br]
+ @seealso:
+ [event:onchannelmessage]OnChannelMessage[/event]
+ [event:onchannelnotice]OnChannelNotice[/event]
+ */
+ EVENT("OnQueryNotice", "$0 = source nick\n$1 = source username\n$2 = source host\n$3 = message"),
+ /*
+ @doc: onchanservnotice
+ @type:
+ event
+ @title:
+ OnChanServNotice
+ @short:
+ A notice from ChanServ has been received
+ @parameters:
+ $0 = ChanServ nick
+ $1 = ChanServ username
+ $2 = ChanServ host
+ $3 = message
+ @window:
+ console
+ @description:
+ Triggered when a notice is received and the source user is recognized as
+ the ChanServ service.<br>
+ Calling [cmd]halt[/cmd] stops the message output.
+ @seealso:
+ [event:onquerynotice]OnQueryNotice[/event]
+ [event:onnickservnotice]OnNickServNotice[/event]
+ */
+ EVENT("OnChanServNotice", "$0 = ChanServ nick\n$1 = ChanServ username\n$2 = ChanServ host\n$3 = message"),
+ /*
+ @doc: onnickservnotice
+ @type:
+ event
+ @title:
+ OnNickServNotice
+ @short:
+ A notice from NickServ has been received
+ @parameters:
+ $0 = NickServ nick
+ $1 = NickServ username
+ $2 = NickServ host
+ $3 = message
+ @window:
+ console
+ @description:
+ Triggered when a notice is received and the source user is recognized as
+ the NickServ service.<br>
+ Calling [cmd]halt[/cmd] stops the message output.
+ @seealso:
+ [event:onquerynotice]OnQueryNotice[/event]
+ [event:onchanservnotice]OnChanServNotice[/event]
+ */
+ EVENT("OnNickServNotice", "$0 = NickServ nick\n$1 = NickServ username\n$2 = NickServ host\n$3 = message"),
+ /*
+ @doc: onchanadmin
+ @type:
+ event
+ @title:
+ OnChanAdmin
+ @short:
+ Someone has given a user the +a flag
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ $3 = target nick
+ @window:
+ Channels window
+ @description:
+ Triggered when someone sets a +a (has made Channel Administrator) flag on a user of the active channel.
+ @seealso:
+ [event:ondechanadmin]OnDeChanAdmin[/event]
+ */
+ EVENT("OnChanAdmin","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = target nick"),
+ /*
+ @doc: ondechanadmin
+ @type:
+ event
+ @title:
+ OnDeChanAdmin
+ @short:
+ Someone has given a user the -a flag
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ $3 = target nick
+ @window:
+ Channels window
+ @description:
+ Triggered when someone sets a -a (DeChanAdmin) flag on a user in the active channel.
+ @seealso:
+ [event:onchanadmin]OnChanAdmin[/event]
+ */
+ EVENT("OnDeChanAdmin","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = target nick"),
+ /*
+ @doc: onmechanadmin
+ @type:
+ event
+ @title:
+ OnMeChanAdmin
+ @short:
+ Someone has given the +a flag to the local user
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ @window:
+ Channels window
+ @description:
+ Triggered when someone sets a +a (has made Channel administrator) flag on the local user in the active channel.
+ @seealso:
+ [event:onmedeop]OnMeDeChanAdmin[/event]
+ */
+ EVENT("OnMeChanAdmin","$0 = source nick\n$1 = source username\n$2 = source hostname"),
+ /*
+ @doc: onmedechanadmin
+ @type:
+ event
+ @title:
+ OnMeDeChanAdmin
+ @short:
+ Someone has given the -a flag to the local user
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ @window:
+ Channels window
+ @description:
+ Triggered when someone sets a -a (has removed channel admin status) flag on the local user in the active channel.
+ @seealso:
+ [event:onmeop]OnMeOp[/event]
+ */
+ EVENT("OnMeDeChanAdmin","$0 = source nick\n$1 = source username\n$2 = source hostname"),
+ /*
+ @doc: onmeuserop
+ @type:
+ event
+ @title:
+ OnMeUserOp
+ @short:
+ Someone has given the local user the +u flag
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ @window:
+ Channels window
+ @description:
+ Triggered when someone sets a +u (userop) flag for the local user in the active channel.
+ @seealso:
+ [event:onmedeuserop]OnMeDeUserOp[/event]
+ */
+ EVENT("OnMeUserOp","$0 = source nick\n$1 = source username\n$2 = source hostname"),
+ /*
+ @doc: onmedeuserop
+ @type:
+ event
+ @title:
+ OnMeDeUserOp
+ @short:
+ Someone has given the local user the -u flag
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ @window:
+ Channels window
+ @description:
+ Triggered when someone sets a -u (deuserop) flag for the local user in the active channel.
+ @seealso:
+ [event:onmeuserop]OnMeUserOp[/event]
+ */
+ EVENT("OnMeDeUserOp","$0 = source nick\n$1 = source username\n$2 = source hostname"),
+ /*
+ @doc: onuserop
+ @type:
+ event
+ @title:
+ OnUserOp
+ @short:
+ Someone has given a user the +u flag
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ $3 = useropped nick
+ @window:
+ Channels window
+ @description:
+ Triggered when someone sets a +u flag on a user of the active channel.
+ @seealso:
+ [event:ondeuserop]OnDeUserOp[/event]
+ */
+ EVENT("OnUserOp","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = useropped nick"),
+ /*
+ @doc: ondeuserop
+ @type:
+ event
+ @title:
+ OnDeUserOp
+ @short:
+ Someone has given a user a -u flag
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ $3 = deuseropped nick
+ @window:
+ Channels window
+ @description:
+ Triggered when someone sets a -u (deuserop) flag on a user in the active channel.
+ @seealso:
+ [event:onuserop]OnUserOp[/event]
+ */
+ EVENT("OnDeUserOp","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = deuseropped nick"),
+ /*
+ @doc: onquerywindowrequest
+ @type:
+ event
+ @title:
+ OnQueryWindowRequest
+ @short:
+ A new query window is going to be opened because a remote message has been received
+ @parameters:
+ $0 = source nickname
+ $1 = source username
+ $2 = source host
+ $3 = message
+ @window:
+ console window
+ @description:
+ Triggered when a PRIVMSG or NOTICE has been received from a remote user and a query
+ for that user doesn't exist yet. KVIrc has already checked its internal conditions
+ and you have the last word on the query creation. If you call halt in this event
+ you will prevent the creation of the query window, in all other cases the window
+ will be created. This is useful for filtering out spam messages that popup unwanted
+ windows in front of the user. You have also the option of creating the query window
+ yourself (by calling [cmd]query[/cmd]). This may be useful if you want to create
+ the query windows in a particular state (minimized, positioned in some special place
+ or maybe undocked if some conditions are verified).
+ The next event you will catch related to this query window will be
+ [event:onquerywindowcreated]OnQueryWindowCreated[/event] and [event:onquerytargetadded]OnQueryTargetAdded[/event].
+ After that you will get [event:onquerymessage]OnQueryMessage[/event] with exactly
+ the parameters passed to this event.
+ */
+ EVENT("OnQueryWindowRequest","$0 = source nick\n$1 = source user\n$2 = source host\n$3 = message"),
+ /*
+ @doc: onquerytargetadded
+ @type:
+ event
+ @title:
+ OnQueryTargetAdded
+ @short:
+ A new query target has been added
+ @parameters:
+ $0 = nickname
+ $1 = username (may be *)
+ $2 = host (may be *)
+ @window:
+ query window
+ @description:
+ Triggered when a new remote target has been added to a query window.
+ This is the event to catch when you want to perform some specific actions
+ when someone queries you.
+ KVIrc supports multiple target queries and thus, this event is triggered also
+ when a new query target is added by using [cmd]addtarget[/cmd].[br]
+ */
+ EVENT("OnQueryTargetAdded","$0 = nick\n$1 = username (may be *)\n$2 = hostname (may be *)"),
+ /*
+ @doc: onnetsplit
+ @type:
+ event
+ @title:
+ OnNetsplit
+ @short:
+ A netsplit has been detected
+ @parameters:
+ $0 = server1
+ $1 = server2
+ @window:
+ console
+ @description:
+ Triggered when KVIrc detects a netsplit by looking at an user's quit message.
+ The two parameters passed are the two servers that lost the link and were
+ signaled in that particular quit message.[br]
+ The actual netsplit detector in the KVIrc core uses the following rule
+ (extracted from the eggdrop bot code): "determine if signoff string matches "%.% %.%",
+ and only one space".[br]
+ [b]Note that this may be not accurate and KVIrc CAN be fooled by specially
+ formatted quit messages that aren't really netsplits.[/b][br]
+ KVIrc tries to avoid duplicate netsplit warnings thus this event will NOT
+ be triggered for EVERY quit in a netsplit: you will get it once for every
+ different set of servers that lost the link.[br]
+ Determining where the network link has been exactly broken may be a hard
+ task since the quit messages you see may not involve
+ the servers on the split boundary.
+ */
+ EVENT("OnNetsplit","$0 = server1\n$1 = server2"),
+ /*
+ @doc: ondccsessioncreated
+ @type:
+ event
+ @title:
+ OnDCCSessionCreated
+ @short:
+ A new DCC session has just been created
+ @parameters:
+ $0 = DCC session ID
+ @window:
+ console
+ @description:
+ Triggered when a new DCC session has just been created.
+ You can retrieve the session information by calling the [module:dcc]dcc[/module].*
+ module functions.
+ */
+ EVENT("OnDCCSessionCreated","$0 = DCC session ID"),
+ /*
+ @doc: ondccsessiondestroyed
+ @type:
+ event
+ @title:
+ OnDCCSessionDestroyed
+ @short:
+ A new DCC session has just been destroyed
+ @parameters:
+ $0 = DCC session ID
+ @window:
+ console
+ @description:
+ Triggered when a new DCC session has just been destroyed.
+ You can retrieve the session information by calling the [module:dcc]dcc[/module].*
+ module functions and by passing the DCC session ID parameter.
+ */
+ EVENT("OnDCCSessionDestroyed","$0 = DCC session ID"),
+ /*
+ @doc: ontextinput
+ @type:
+ event
+ @title:
+ OnTextInput
+ @short:
+ The user has just entered some text in the text input
+ @parameters:
+ $0 = text
+ @window:
+ window in that the text is entered
+ @description:
+ Triggered when the user enters some text in the text input
+ window and presses return.
+ Calling [cmd]halt[/cmd] will stop the automatic text processing
+ and the result depends on the window the text is typed in.
+ In channel/query and console windows the text will NOT be sent to
+ the IRC server. This event might be useful for performing
+ substitutions in the text sent to the server. If you stop the
+ text processing in a channel or query window then the local
+ echo of the message will be omitted too. You might want to
+ realize the echo by the means of the [cmd]echoprivmsg[/cmd] command.
+ This event is NOT triggered when the user enters a command
+ in the input window.
+ @seealso:
+ [cmd]echoprivmsg[/cmd]
+ */
+ EVENT("OnTextInput","$0 = text"),
+ /*
+ @doc: ondccchatpopuprequest
+ @type:
+ event
+ @title:
+ OnDCCChatPopupRequest
+ @short:
+ Triggered when the DCC chat text view is right-clicked
+ @parameters:
+ $0 = DCC session ID
+ @window:
+ DCC Chat window
+ @description:
+ This event is triggered when the user clicks the DCC chat
+ text view with the right mouse button. It is a good place
+ to activate a [cmd]popup[/cmd] menu :)
+ You can retrieve the session information by calling the [module:dcc]dcc[/module].*
+ module functions and by passing the DCC session ID parameter.
+ @seealso:
+ [event:onconsolepuprequest]OnConsolePopupRequest[/event],
+ [event:onchannelpopuprequest]OnChannelPopupRequest[/event],
+ [event:onquerypopuprequest]OnQueryPopupRequest[/event]
+ */
+ EVENT("OnDCCChatPopupRequest","$0 = DCC session ID"),
+ /*
+ @doc: ondccfiletransferconnectioninprogress
+ @type:
+ event
+ @title:
+ OnDCCFileTransferConnectionInProgress
+ @short:
+ Triggered when a DCC File transfer is waiting for a connection
+ @parameters:
+ $0 = DCC session ID
+ @window:
+ unspecified
+ @description:
+ Triggered when a DCC File transfer has been set up and
+ is waiting for the connection to be established.[br]
+ Note that the real data transfer is not started until
+ [event:ondccfiletransferbegin]OnDCCFileTransferBegin[/event] is triggered
+ but from this moment on you will be notified of success
+ or failure by the means of [event:ondccfiletransfersuccess]OnDCCFileTransferSuccess[/event]
+ or [event:ondccfiletransferfailed]OnDCCFileTransferFailed[/event].[br]
+ You can retrieve the session information by calling the [module:dcc]dcc[/module].*
+ module functions and by passing the DCC session ID parameter.
+ @seealso:
+ [event:ondccfiletransferfailed]OnDCCFileTransferFailed[/event],
+ [event:ondccfiletransfersuccess]OnDCCFileTransferSuccess[/event],
+ [event:ondccfiletransferbegin]OnDCCFileTransferBegin[/event]
+ */
+ EVENT("OnDCCFileTransferConnectionInProgress","$0 = DCC session ID"),
+ /*
+ @doc: ondccfiletransferbegin
+ @type:
+ event
+ @title:
+ OnDCCFileTransferBegin
+ @short:
+ Triggered when a DCC File transfer begins
+ @parameters:
+ $0 = DCC session ID
+ @window:
+ unspecified
+ @description:
+ Triggered when a DCC file transfer connection is established
+ and the real data transfer starts.[br]
+ You can retrieve the session information by calling the [module:dcc]dcc[/module].*
+ module functions and by passing the DCC session ID parameter.
+ @seealso:
+ [event:ondccfiletransferconnectioninprogress]OnDCCFileTransferConnectionInProgress[/event],
+ [event:ondccfiletransfersuccess]OnDCCFileTransferSuccess[/event],
+ [event:ondccfiletransferfailed]OnDCCFileTransferFailed[/event]
+ */
+ EVENT("OnDCCFileTransferBegin","$0 = DCC session ID"),
+ /*
+ @doc: ondccfiletransfersuccess
+ @type:
+ event
+ @title:
+ OnDCCFileTransferSuccess
+ @short:
+ Triggered when a DCC File transfer succeeds
+ @parameters:
+ $0 = bytes transferred
+ $1 = DCC session ID
+ @window:
+ unspecified
+ @description:
+ Triggered when a DCC File transfer terminates succesfully.[br]
+ $0 contains the number of bytes transferred in the session.[br]
+ You can retrieve the session information by calling the [module:dcc]dcc[/module].*
+ module functions and by passing the DCC session ID parameter.
+ @seealso:
+ [event:ondccfiletransferconnectioninprogress]OnDCCFileTransferConnectionInProgress[/event],
+ [event:ondccfiletransferfailed]OnDCCFileTransferFailed[/event],
+ [event:ondccfiletransferbegin]OnDCCFileTransferBegin[/event]
+ */
+ EVENT("OnDCCFileTransferSuccess","$0 = bytes transferred\n$1 = DCC session ID"),
+ /*
+ @doc: ondccfiletransferfailed
+ @type:
+ event
+ @title:
+ OnDCCFileTransferFailed
+ @short:
+ Triggered when a DCC File transfer fails
+ @parameters:
+ $0 = failure reason message
+ $1 = bytes transferred
+ $2 = DCC session ID
+ @window:
+ unspecified
+ @description:
+ Triggered when a DCC File transfer fails. $0 contains a message
+ explaining the reason of the failure.[br]
+ $1 contains the number of bytes transferred in the session, eventually 0.[br]
+ You can retrieve the session information by calling the [module:dcc]dcc[/module].*
+ module functions and by passing the DCC session ID parameter.
+ @seealso:
+ [event:ondccfiletransferconnectioninprogress]OnDCCFileTransferConnectionInProgress[/event],
+ [event:ondccfiletransfersuccess]OnDCCFileTransferSuccess[/event],
+ [event:ondccfiletransferbegin]OnDCCFileTransferBegin[/event]
+ */
+ EVENT("OnDCCFileTransferFailed","$0 = failure reason\n$1 = bytes transferred\n$2 = DCC session ID"),
+ /*
+ @doc: onwallops
+ @type:
+ event
+ @title:
+ OnWallops
+ @short:
+ Triggered when a WALLOPS message is received from the server
+ @parameters:
+ $0 = source nick
+ $1 = source user
+ $2 = source host
+ $3 = message text
+ @window:
+ channel
+ @description:
+ Triggered when a WALLOPS message is received from the server.
+ If you call [cmd]halt[/cmd] the message output will be stopped.
+ @seealso:
+ */
+ EVENT("OnWallops","$0 = nick\n$1 = user\n$2 = host\n$3 = message text"),
+ /*
+ @doc: ondisconnectrequest
+ @type:
+ event
+ @title:
+ OnDisconnectRequest
+ @short:
+ Triggered when the user requests a disconnection
+ @parameters:
+ none
+ @window:
+ console
+ @description:
+ Triggered when the user requests a disconnection from
+ a server by pressing the "disconnect", by closing
+ the console or closing KVIrc. It is your last chance
+ to send some meaningful data to the server before the QUIT message
+ is sent. You can't prevent the user from disconnecting: [cmd]halt [/cmd]does nothing here.[br]
+ This event is useful to either give a salute to all the users
+ you were talking with or maybe to send some commands to the
+ bouncer you're connected to. Note that you can override the QUIT
+ message sent by KVIrc by sending it by youself first.[br]
+ @seealso:
+ */
+ EVENT("OnDisconnectRequest","none"),
+ /*
+ @doc: onchanowner
+ @type:
+ event
+ @title:
+ OnChanOwner
+ @short:
+ Someone has given a user the +q flag
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ $3 = target nick
+ @window:
+ Channels window
+ @description:
+ Triggered when someone sets a +q (has made Channel Owner) flag on a user of the active channel.
+ @seealso:
+ [event:ondechanowner]OnDeChanOwner[/event]
+ */
+ EVENT("OnChanOwner","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = target nick"),
+ /*
+ @doc: ondechanowner
+ @type:
+ event
+ @title:
+ OnDeChanOwner
+ @short:
+ Someone has given a user the -q flag
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ $3 = target nick
+ @window:
+ Channels window
+ @description:
+ Triggered when someone sets a -q (DeChanOwner) flag on a user in the active channel.
+ @seealso:
+ [event:onchanowner]OnChanOwner[/event]
+ */
+ EVENT("OnDeChanOwner","$0 = source nick\n$1 = source username\n$2 = source hostname\n$3 = target nick"),
+ /*
+ @doc: onmechanowner
+ @type:
+ event
+ @title:
+ OnMeChanOwner
+ @short:
+ Someone has given the +q flag to the local user
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ @window:
+ Channels window
+ @description:
+ Triggered when someone sets a +q (has made Channel owner) flag on the local user in the active channel.
+ @seealso:
+ [event:onmedechanowner]OnMeDeChanOwner[/event]
+ */
+ EVENT("OnMeChanOwner","$0 = source nick\n$1 = source username\n$2 = source hostname"),
+ /*
+ @doc: onmedechanowner
+ @type:
+ event
+ @title:
+ OnMeDeChanOwner
+ @short:
+ Someone has given the -q flag to the local user
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ @window:
+ Channels window
+ @description:
+ Triggered when someone sets a -q (has removed channel owner status) flag on the local user in the active channel.
+ @seealso:
+ [event:onmechanowner]OnMeChanOwner[/event]
+ */
+ EVENT("OnMeDeChanOwner","$0 = source nick\n$1 = source username\n$2 = source hostname"),
+ /*
+ @doc: onerror
+ @type:
+ event
+ @title:
+ OnError
+ @short:
+ Server ERROR message received
+ @parameters:
+ $0 = message source
+ $1 = error reason
+ @window:
+ Console
+ @description:
+ Triggered when an ERROR message is received from the server.[br]
+ $0 is the message (server) source but be aware that it often happens to be empty.[br]
+ Calling 'halt' in this event will stop the default output.[br]
+ */
+ EVENT("OnError","$0 = message source\n$1 = error reason"),
+ /*
+ @doc: OnQueryFileDropped
+ @type:
+ event
+ @title:
+ OnQueryFileDropped
+ @short:
+ Drop in query
+ @parameters:
+ $0 = source nick
+ $1 = filedropped
+ @window:
+ Query
+ @description:
+ Triggered when a file is dropped in a query window.[br]
+ $target is the nick.[br]
+ $0 is the dropped file.[br]
+ */
+ EVENT("OnQueryFileDropped","$0 = nick\n$1 = filedropped"), //-|Grifisx & Noldor|-
+ /*
+ @doc: OnHTTPGetTerminated
+ @type:
+ event
+ @title:
+ OnHTTPGetTerminated
+ @short:
+ A http.get command has terminated execution
+ @parameters:
+ $0 = status
+ $1 = remote url
+ $2 = local file
+ $3 = magic identifier
+ @window:
+ Console
+ @description:
+ Triggered when a [cmd]http.get[/cmd] file download has terminated execution.
+ If the transfer has been succesfull then $0 will contain the value 1 (true),
+ otherwise will contain the value 0. $1 contains the remote url and $2 the local
+ path on disk of the saved file. $3 contains the magic identifier passed to
+ the http.get command by the means of the -i switch.
+ */
+ EVENT("OnHTTPGetTerminated","$0 = status\n$1 = remote url\n$2 = local file\n$3 = magic identifier"),
+ /*
+ @doc: OnChannelModeChange
+ @type:
+ event
+ @title:
+ OnChannelModeChange
+ @short:
+ The channel mode has been changed
+ @parameters:
+ $0 = source nick
+ $1 = source user
+ $2 = source host
+ $3 = modeflags
+ $4 = mode parameter string
+ @window:
+ channel
+ @description:
+ Triggered when a channel mode has been changed, AFTER all the mode specific events
+ were triggered. $3 contains the unparsed mode flags (-o+b...) and $4 contains
+ the unparsed mode parameter string (you need to split it!).
+ */
+ EVENT("OnChannelModeChange","$0 = sourcenick\n$1 = sourceusername\n$2 = sourcehost\n$3 = modeflags\n$4 = mode params"),
+ /*
+ @doc: OnChannelNickLinkClick
+ @type:
+ event
+ @title:
+ OnChannelNickLinkClick
+ @short:
+ Clicked on nick in channel
+ @parameters:
+ $0 = nick list
+ @window:
+ channel
+ @description:
+ Triggered when user clicks on nickname in channel window
+ It will be triggered only at the left mouse button click
+ */
+ EVENT("OnChannelNickLinkClick",""),
+ /*
+ @doc: OnQueryNickLinkClick
+ @type:
+ event
+ @title:
+ OnQueryNickLinkClick
+ @short:
+ Triggered when user clicks on nickname in query window
+ @parameters:
+ $0 = nickname list
+ @window:
+ query
+ @description:
+ Triggered when user clicks on nickname in query window
+ It will be triggered only at the left mouse button click
+ */
+ EVENT("OnQueryNickLinkClick","$0 = nickname list"),
+ /*
+ @doc: OnConsoleNickLinkClick
+ @type:
+ event
+ @title:
+ OnConsoleNickLinkClick
+ @short:
+ Triggered when user clicks on nickname in console window
+ @parameters:
+ $0 = nickname
+ @window:
+ console
+ @description:
+ Triggered when user clicks on nickname in console window
+ It will be triggered only at the left mouse button click
+ */
+ EVENT("OnConsoleNickLinkClick","$0 = nickname"),
+ /*
+ @doc: OnHostLinkClick
+ @type:
+ event
+ @title:
+ OnHostLinkClick
+ @short:
+ Triggered when user clicks on any hostname in any window
+ @parameters:
+ $0 = host name
+ @window:
+ any
+ @description:
+ Triggered when user clicks on any hostname in any window
+ It will be triggered only at the left mouse button click
+ */
+ EVENT("OnHostLinkClick","$0 = host name")
+ , /*
+ @doc: OnUrlLinkClick
+ @type:
+ event
+ @title:
+ OnUrlLinkClick
+ @short:
+ Triggered when user clicks on any URL link in any window
+ @parameters:
+ $0 = url
+ @window:
+ any
+ @description:
+ Triggered when user clicks on any URL link in any window
+ It will be triggered only at the left mouse button click
+ */
+ EVENT("OnUrlLinkClick","$0 = url"),
+ /*
+ @doc: OnChannelLinkClick
+ @type:
+ event
+ @title:
+ OnChannelLinkClick
+ @short:
+ Triggered when user clicks on any channel name in any window
+ @parameters:
+ $0 = channel name
+ @window:
+ any
+ @description:
+ Triggered when user clicks on any channel name in any window
+ It will be triggered only at the left mouse button click
+ */
+ EVENT("OnChannelLinkClick","$0 = channel name"),
+ /*
+ @doc: OnServerLinkClick
+ @type:
+ event
+ @title:
+ OnServerLinkClick
+ @short:
+ Triggered when user clicks on server name in any window
+ @parameters:
+ $0 = server name
+ @window:
+ any
+ @description:
+ Triggered when user clicks on server name in any window
+ It will be triggered only at the left mouse button click
+ */
+ EVENT("OnServerLinkClick","$0 = server name"),
+ /*
+ @doc: OnIgnoredMessage
+ @type:
+ event
+ @title:
+ OnIgnoredMessage
+ @short:
+ Triggered when a message is ignored.
+ @parameters:
+ $0 = source nick
+ $1 = source username
+ $2 = source host
+ $3 = message target
+ $4 = message
+ @window:
+ any
+ @description:
+ Triggered when a message is ignored.
+ */
+ EVENT("OnIgnoredMessage","$0 = source nick\n$1 = source username\n$2 = source host\n$3 = message target\n$4 = message"),
+ /*
+ @doc: OnNickServAuth
+ @type:
+ event
+ @title:
+ OnNickServAuth
+ @short:
+ Triggered when ircd sets a registered user mode.
+ @parameters:
+ @window:
+ any
+ @description:
+ Triggered when ircd sets a registered user mode.
+ */
+ EVENT("OnNickServAuth",""),
+ /*
+ @doc: onmeaction
+ @type:
+ event
+ @title:
+ OnMeAction
+ @short:
+ User issued a CTCP ACTION
+ @parameters:
+ $0 = action message text
+ @window:
+ Channels and query windows
+ @description:
+ This event is triggered when user issues a CTCP ACTION.[br]
+ (The CTCP ACTION is usually triggered by the /me command).[br]
+ */
+
+ EVENT("OnMeAction","$0 = action message text")
+};
+
diff --git a/src/kvirc/kvs/kvi_kvs_eventtable.h b/src/kvirc/kvs/kvi_kvs_eventtable.h
new file mode 100644
index 00000000..af00e8da
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_eventtable.h
@@ -0,0 +1,212 @@
+#ifndef _KVI_KVS_EVENTTABLE_H_
+#define _KVI_KVS_EVENTTABLE_H_
+//=============================================================================
+//
+// File : kvi_kvs_eventtable.h
+// Created on Mon 23 Feb 2004 03:23:18 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+// Application
+#define KviEvent_OnKVIrcStartup 0
+#define KviEvent_OnKVIrcShutdown 1
+// Irc Context
+#define KviEvent_OnIrcContextCreated 2
+#define KviEvent_OnIrcContextDestroyed 3
+// Irc connection
+#define KviEvent_OnIrcConnectionEstabilished 4
+#define KviEvent_OnIrcConnectionTerminated 5
+// Login complete
+#define KviEvent_OnIrc 6
+// Channel userlist clicks
+#define KviEvent_OnChannelNickPopupRequest 7
+#define KviEvent_OnChannelNickDefaultActionRequest 8
+// Frame window
+#define KviEvent_OnFrameWindowCreated 9
+#define KviEvent_OnFrameWindowDestroyed 10
+// Text view
+#define KviEvent_OnChannelPopupRequest 11
+#define KviEvent_OnConsolePopupRequest 12
+#define KviEvent_OnQueryPopupRequest 13
+
+#define KviEvent_OnChannelSync 14
+
+#define KviEvent_OnUrl 15
+
+#define KviEvent_OnWindowPopupRequest 16
+
+#define KviEvent_OnHostLinkPopupRequest 17
+#define KviEvent_OnUrlLinkPopupRequest 18
+#define KviEvent_OnServerLinkPopupRequest 19
+#define KviEvent_OnChannelLinkPopupRequest 20
+#define KviEvent_OnNickLinkPopupRequest 21
+// Query nick clicks
+#define KviEvent_OnQueryNickPopupRequest 22
+#define KviEvent_OnQueryNickDefaultActionRequest 23
+
+#define KviEvent_OnNickLinkDefaultActionRequest 24
+#define KviEvent_OnTextViewDoubleClicked 25
+
+#define KviEvent_OnNotifyListDefaultActionRequest 26
+#define KviEvent_OnNotifyListPopupRequest 27
+
+#define KviEvent_OnPing 28
+
+#define KviEvent_OnMeJoin 29
+#define KviEvent_OnJoin 30
+
+#define KviEvent_OnTopic 31
+
+#define KviEvent_OnMePart 32
+#define KviEvent_OnPart 33
+
+#define KviEvent_OnQuit 34
+
+#define KviEvent_OnUserMode 35
+
+#define KviEvent_OnMeKick 36
+#define KviEvent_OnKick 37
+
+#define KviEvent_OnMeAway 38
+#define KviEvent_OnMeBack 39
+
+#define KviEvent_OnChannelWindowCreated 40
+#define KviEvent_OnQueryWindowCreated 41
+#define KviEvent_OnBan 42
+#define KviEvent_OnUnban 43
+#define KviEvent_OnMeBan 44
+#define KviEvent_OnMeUnban 45
+#define KviEvent_OnBanException 46
+#define KviEvent_OnBanExceptionRemove 47
+#define KviEvent_OnMeBanException 48
+#define KviEvent_OnMeBanExceptionRemove 49
+#define KviEvent_OnOp 50
+#define KviEvent_OnDeOp 51
+#define KviEvent_OnMeOp 52
+#define KviEvent_OnMeDeOp 53
+#define KviEvent_OnLimitSet 54
+#define KviEvent_OnLimitUnset 55
+#define KviEvent_OnKeySet 56
+#define KviEvent_OnKeyUnset 57
+#define KviEvent_OnInvite 58
+#define KviEvent_OnChannelMessage 59
+#define KviEvent_OnQueryMessage 60
+#define KviEvent_OnVoice 61
+#define KviEvent_OnDeVoice 62
+#define KviEvent_OnMeVoice 63
+#define KviEvent_OnMeDeVoice 64
+#define KviEvent_OnNickChange 65
+#define KviEvent_OnMeNickChange 66
+#define KviEvent_OnCtcpRequest 67
+#define KviEvent_OnCtcpReply 68
+#define KviEvent_OnUnhandledLiteral 69
+#define KviEvent_OnMeHalfOp 70
+#define KviEvent_OnMeDeHalfOp 71
+#define KviEvent_OnHalfOp 72
+#define KviEvent_OnDeHalfOp 73
+#define KviEvent_OnInviteException 74
+#define KviEvent_OnInviteExceptionRemove 75
+#define KviEvent_OnMeInviteException 76
+#define KviEvent_OnMeInviteExceptionRemove 77
+#define KviEvent_OnAction 78
+#define KviEvent_OnCtcpFlood 79
+#define KviEvent_OnChannelNotice 80
+#define KviEvent_OnServerNotice 81
+#define KviEvent_OnDCCChatWindowCreated 82
+#define KviEvent_OnDCCChatConnectionInProgress 83
+#define KviEvent_OnDCCChatConnected 84
+#define KviEvent_OnDCCChatMessage 85
+#define KviEvent_OnDCCChatError 86
+#define KviEvent_OnDCCChatDisconnected 87
+#define KviEvent_OnDCCChatWindowClosing 88
+#define KviEvent_OnAccelKeyPressed 89
+#define KviEvent_OnHighlight 90
+#define KviEvent_OnWindowActivated 91
+#define KviEvent_OnNotifyOnLine 92
+#define KviEvent_OnNotifyOffLine 93
+#define KviEvent_OnPong 94
+#define KviEvent_OnLagAlarmTimeUp 95
+#define KviEvent_OnLagAlarmTimeDown 96
+#define KviEvent_OnLagCheck 97
+
+#define KviEvent_OnQueryNotice 98
+#define KviEvent_OnChanServNotice 99
+#define KviEvent_OnNickServNotice 100
+
+#define KviEvent_OnChanAdmin 101
+#define KviEvent_OnDeChanAdmin 102
+#define KviEvent_OnMeChanAdmin 103
+#define KviEvent_OnMeDeChanAdmin 104
+
+#define KviEvent_OnMeUserOp 105
+#define KviEvent_OnMeDeUserOp 106
+#define KviEvent_OnUserOp 107
+#define KviEvent_OnDeUserOp 108
+
+#define KviEvent_OnQueryWindowRequest 109
+#define KviEvent_OnQueryTargetAdded 110
+
+#define KviEvent_OnNetsplit 111
+
+#define KviEvent_OnDCCSessionCreated 112
+#define KviEvent_OnDCCSessionDestroyed 113
+
+#define KviEvent_OnTextInput 114
+
+#define KviEvent_OnDCCChatPopupRequest 115
+
+#define KviEvent_OnDCCFileTransferConnectionInProgress 116
+#define KviEvent_OnDCCFileTransferBegin 117
+#define KviEvent_OnDCCFileTransferSuccess 118
+#define KviEvent_OnDCCFileTransferFailed 119
+
+#define KviEvent_OnWallops 120
+
+#define KviEvent_OnDisconnectRequest 121
+
+#define KviEvent_OnChanOwner 122
+#define KviEvent_OnDeChanOwner 123
+#define KviEvent_OnMeChanOwner 124
+#define KviEvent_OnMeDeChanOwner 125
+#define KviEvent_OnError 126
+#define KviEvent_OnQueryFileDropped 127
+
+#define KviEvent_OnHTTPGetTerminated 128
+
+#define KviEvent_OnChannelModeChange 129
+
+#define KviEvent_OnChannelNickLinkClick 130
+#define KviEvent_OnQueryNickLinkClick 131
+#define KviEvent_OnConsoleNickLinkClick 132
+#define KviEvent_OnHostLinkClick 133
+#define KviEvent_OnUrlLinkClick 134
+#define KviEvent_OnChannelLinkClick 135
+#define KviEvent_OnServerLinkClick 136
+#define KviEvent_OnIgnoredMessage 137
+
+#define KviEvent_OnNickServAuth 138
+
+#define KviEvent_OnMeAction 139
+
+#define KVI_KVS_NUM_APP_EVENTS 140
+// compat
+#define KVI_NUM_SCRIPT_EVENTS KVI_KVS_NUM_APP_EVENTS
+
+#endif //!_KVI_KVS_EVENTTABLE_H_
diff --git a/src/kvirc/kvs/kvi_kvs_eventtriggers.h b/src/kvirc/kvs/kvi_kvs_eventtriggers.h
new file mode 100644
index 00000000..97a4d6b8
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_eventtriggers.h
@@ -0,0 +1,289 @@
+#ifndef _KVI_KVS_EVENTTRIGGERS_H_
+#define _KVI_KVS_EVENTTRIGGERS_H_
+//=============================================================================
+//
+// File : kvi_kvs_eventtriggers.h
+// Created on Thu Oct 22 2005 04:57:12 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include "kvi_kvs_eventtable.h"
+#include "kvi_kvs_eventmanager.h"
+#include "kvi_kvs_variantlist.h"
+
+//
+// KVS Macros for triggering events
+//
+// KviKvsVariantList vParams;
+// vParams.append(bSomething);
+// vParams.append(iSomething);
+// vParams.append(szSomething);
+// KVS_TRIGGER_EVENT(KviEvent_OnSomething,pSomeWindow,&vParams)
+//
+// if(KVS_TRIGGER_EVENT_HALTED(KviEvent_OnSomething,pSomeWindow,&vParams))
+// msg->haltOutput()
+//
+//
+
+// THESE TWO ARE SLOW, but allow reusing the params
+#define KVS_TRIGGER_EVENT(__idx,__wnd,__parms) \
+ if(KviKvsEventManager::instance()->hasAppHandlers(__idx)) \
+ KviKvsEventManager::instance()->trigger(__idx,__wnd,__parms);
+
+#define KVS_TRIGGER_EVENT_HALTED(__idx,__wnd,__parms) \
+ (KviKvsEventManager::instance()->hasAppHandlers(__idx) ? \
+ KviKvsEventManager::instance()->trigger(__idx,__wnd,__parms) : false)
+
+
+// FAST CALLING MACROS
+#define KVS_TRIGGER_EVENT_0(__idx,__wnd) \
+ if(KviKvsEventManager::instance()->hasAppHandlers(__idx)) \
+ { \
+ KviKvsVariantList _vLocalParamList; \
+ KviKvsEventManager::instance()->trigger(__idx,__wnd,&_vLocalParamList); \
+ }
+
+#define KVS_TRIGGER_EVENT_1(__idx,__wnd,__param1) \
+ if(KviKvsEventManager::instance()->hasAppHandlers(__idx)) \
+ { \
+ KviKvsVariantList _vLocalParamList( \
+ new KviKvsVariant(__param1) \
+ ); \
+ KviKvsEventManager::instance()->trigger(__idx,__wnd,&_vLocalParamList); \
+ }
+
+#define KVS_TRIGGER_EVENT_2(__idx,__wnd,__param1,__param2) \
+ if(KviKvsEventManager::instance()->hasAppHandlers(__idx)) \
+ { \
+ KviKvsVariantList _vLocalParamList( \
+ new KviKvsVariant(__param1), \
+ new KviKvsVariant(__param2) \
+ ); \
+ KviKvsEventManager::instance()->trigger(__idx,__wnd,&_vLocalParamList); \
+ }
+
+#define KVS_TRIGGER_EVENT_3(__idx,__wnd,__param1,__param2,__param3) \
+ if(KviKvsEventManager::instance()->hasAppHandlers(__idx)) \
+ { \
+ KviKvsVariantList _vLocalParamList( \
+ new KviKvsVariant(__param1), \
+ new KviKvsVariant(__param2), \
+ new KviKvsVariant(__param3) \
+ ); \
+ KviKvsEventManager::instance()->trigger(__idx,__wnd,&_vLocalParamList); \
+ }
+
+#define KVS_TRIGGER_EVENT_4(__idx,__wnd,__param1,__param2,__param3,__param4) \
+ if(KviKvsEventManager::instance()->hasAppHandlers(__idx)) \
+ { \
+ KviKvsVariantList _vLocalParamList( \
+ new KviKvsVariant(__param1), \
+ new KviKvsVariant(__param2), \
+ new KviKvsVariant(__param3), \
+ new KviKvsVariant(__param4) \
+ ); \
+ KviKvsEventManager::instance()->trigger(__idx,__wnd,&_vLocalParamList); \
+ }
+
+#define KVS_TRIGGER_EVENT_5(__idx,__wnd,__param1,__param2,__param3,__param4,__param5) \
+ if(KviKvsEventManager::instance()->hasAppHandlers(__idx)) \
+ { \
+ KviKvsVariantList _vLocalParamList( \
+ new KviKvsVariant(__param1), \
+ new KviKvsVariant(__param2), \
+ new KviKvsVariant(__param3), \
+ new KviKvsVariant(__param4), \
+ new KviKvsVariant(__param5) \
+ ); \
+ KviKvsEventManager::instance()->trigger(__idx,__wnd,&_vLocalParamList); \
+ }
+
+#define KVS_TRIGGER_EVENT_6(__idx,__wnd,__param1,__param2,__param3,__param4,__param5,__param6) \
+ if(KviKvsEventManager::instance()->hasAppHandlers(__idx)) \
+ { \
+ KviKvsVariantList _vLocalParamList( \
+ new KviKvsVariant(__param1), \
+ new KviKvsVariant(__param2), \
+ new KviKvsVariant(__param3), \
+ new KviKvsVariant(__param4), \
+ new KviKvsVariant(__param5), \
+ new KviKvsVariant(__param6) \
+ ); \
+ KviKvsEventManager::instance()->trigger(__idx,__wnd,&_vLocalParamList); \
+ }
+
+#define KVS_TRIGGER_EVENT_7(__idx,__wnd,__param1,__param2,__param3,__param4,__param5,__param6,__param7) \
+ if(KviKvsEventManager::instance()->hasAppHandlers(__idx)) \
+ { \
+ KviKvsVariantList _vLocalParamList( \
+ new KviKvsVariant(__param1), \
+ new KviKvsVariant(__param2), \
+ new KviKvsVariant(__param3), \
+ new KviKvsVariant(__param4), \
+ new KviKvsVariant(__param5), \
+ new KviKvsVariant(__param6), \
+ new KviKvsVariant(__param7) \
+ ); \
+ KviKvsEventManager::instance()->trigger(__idx,__wnd,&_vLocalParamList); \
+ }
+
+
+#define KVS_TRIGGER_EVENT_0_HALTED(__idx,__wnd) \
+ ( \
+ KviKvsEventManager::instance()->hasAppHandlers(__idx) \
+ ? \
+ KviKvsEventManager::instance()->triggerDeleteParams( \
+ __idx, \
+ __wnd, \
+ new KviKvsVariantList() \
+ ) \
+ : \
+ false \
+ )
+
+#define KVS_TRIGGER_EVENT_1_HALTED(__idx,__wnd,__param1) \
+ ( \
+ KviKvsEventManager::instance()->hasAppHandlers(__idx) \
+ ? \
+ KviKvsEventManager::instance()->triggerDeleteParams( \
+ __idx, \
+ __wnd, \
+ new KviKvsVariantList( \
+ new KviKvsVariant(__param1) \
+ ) \
+ ) \
+ : \
+ false \
+ )
+
+#define KVS_TRIGGER_EVENT_2_HALTED(__idx,__wnd,__param1,__param2) \
+ ( \
+ KviKvsEventManager::instance()->hasAppHandlers(__idx) \
+ ? \
+ KviKvsEventManager::instance()->triggerDeleteParams( \
+ __idx, \
+ __wnd, \
+ new KviKvsVariantList( \
+ new KviKvsVariant(__param1), \
+ new KviKvsVariant(__param2) \
+ ) \
+ ) \
+ : \
+ false \
+ )
+
+#define KVS_TRIGGER_EVENT_3_HALTED(__idx,__wnd,__param1,__param2,__param3) \
+ ( \
+ KviKvsEventManager::instance()->hasAppHandlers(__idx) \
+ ? \
+ KviKvsEventManager::instance()->triggerDeleteParams( \
+ __idx, \
+ __wnd, \
+ new KviKvsVariantList( \
+ new KviKvsVariant(__param1), \
+ new KviKvsVariant(__param2), \
+ new KviKvsVariant(__param3) \
+ ) \
+ ) \
+ : \
+ false \
+ )
+
+#define KVS_TRIGGER_EVENT_4_HALTED(__idx,__wnd,__param1,__param2,__param3,__param4) \
+ ( \
+ KviKvsEventManager::instance()->hasAppHandlers(__idx) \
+ ? \
+ KviKvsEventManager::instance()->triggerDeleteParams( \
+ __idx, \
+ __wnd, \
+ new KviKvsVariantList( \
+ new KviKvsVariant(__param1), \
+ new KviKvsVariant(__param2), \
+ new KviKvsVariant(__param3), \
+ new KviKvsVariant(__param4) \
+ ) \
+ ) \
+ : \
+ false \
+ )
+
+#define KVS_TRIGGER_EVENT_5_HALTED(__idx,__wnd,__param1,__param2,__param3,__param4,__param5) \
+ ( \
+ KviKvsEventManager::instance()->hasAppHandlers(__idx) \
+ ? \
+ KviKvsEventManager::instance()->triggerDeleteParams( \
+ __idx, \
+ __wnd, \
+ new KviKvsVariantList( \
+ new KviKvsVariant(__param1), \
+ new KviKvsVariant(__param2), \
+ new KviKvsVariant(__param3), \
+ new KviKvsVariant(__param4), \
+ new KviKvsVariant(__param5) \
+ ) \
+ ) \
+ : \
+ false \
+ )
+
+#define KVS_TRIGGER_EVENT_6_HALTED(__idx,__wnd,__param1,__param2,__param3,__param4,__param5,__param6) \
+ ( \
+ KviKvsEventManager::instance()->hasAppHandlers(__idx) \
+ ? \
+ KviKvsEventManager::instance()->triggerDeleteParams( \
+ __idx, \
+ __wnd, \
+ new KviKvsVariantList( \
+ new KviKvsVariant(__param1), \
+ new KviKvsVariant(__param2), \
+ new KviKvsVariant(__param3), \
+ new KviKvsVariant(__param4), \
+ new KviKvsVariant(__param5), \
+ new KviKvsVariant(__param6) \
+ ) \
+ ) \
+ : \
+ false \
+ )
+
+#define KVS_TRIGGER_EVENT_7_HALTED(__idx,__wnd,__param1,__param2,__param3,__param4,__param5,__param6,__param7) \
+ ( \
+ KviKvsEventManager::instance()->hasAppHandlers(__idx) \
+ ? \
+ KviKvsEventManager::instance()->triggerDeleteParams( \
+ __idx, \
+ __wnd, \
+ new KviKvsVariantList( \
+ new KviKvsVariant(__param1), \
+ new KviKvsVariant(__param2), \
+ new KviKvsVariant(__param3), \
+ new KviKvsVariant(__param4), \
+ new KviKvsVariant(__param5), \
+ new KviKvsVariant(__param6), \
+ new KviKvsVariant(__param7) \
+ ) \
+ ) \
+ : \
+ false \
+ )
+
+#endif //!_KVI_KVS_EVENTTRIGGERS_H_
diff --git a/src/kvirc/kvs/kvi_kvs_hash.cpp b/src/kvirc/kvs/kvi_kvs_hash.cpp
new file mode 100644
index 00000000..3c391fcd
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_hash.cpp
@@ -0,0 +1,96 @@
+//=============================================================================
+//
+// File : kvi_kvs_hash.cpp
+// Created on Tue 07 Oct 2003 01:22:37 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_hash.h"
+
+KviKvsHash::KviKvsHash()
+{
+ m_pDict = new KviPointerHashTable<QString,KviKvsVariant>(17,false);
+ m_pDict->setAutoDelete(true);
+}
+
+KviKvsHash::KviKvsHash(const KviKvsHash &h)
+{
+ m_pDict = new KviPointerHashTable<QString,KviKvsVariant>();
+ m_pDict->setAutoDelete(true);
+ KviPointerHashTableIterator<QString,KviKvsVariant> it(*(h.m_pDict));
+ while(it.current())
+ {
+ m_pDict->replace(it.currentKey(),new KviKvsVariant(*(it.current())));
+ ++it;
+ }
+}
+
+KviKvsHash::~KviKvsHash()
+{
+ delete m_pDict;
+}
+
+void KviKvsHash::appendAsString(QString &szBuffer) const
+{
+ KviPointerHashTableIterator<QString,KviKvsVariant> it(*m_pDict);
+ bool bNeedComma = false;
+ while(KviKvsVariant * s = it.current())
+ {
+ if(bNeedComma)szBuffer.append(',');
+ else bNeedComma = true;
+ s->appendAsString(szBuffer);
+ ++it;
+ }
+}
+
+void KviKvsHash::serialize(QString& result)
+{
+ QString tmpBuffer;
+ result="{";
+ KviPointerHashTableIterator<QString,KviKvsVariant> it(*m_pDict);
+ bool bNeedComma = false;
+ while(KviKvsVariant * s = it.current())
+ {
+ if(bNeedComma)result.append(',');
+ else bNeedComma = true;
+
+ tmpBuffer = it.currentKey();
+ KviKvsVariant::serializeString(tmpBuffer);
+ result.append(tmpBuffer);
+
+ result.append(":");
+ s->serialize(tmpBuffer);
+ result.append(tmpBuffer);
+
+ ++it;
+ }
+ result.append('}');
+}
+
+KviKvsVariant * KviKvsHash::get(const QString &szKey)
+{
+ KviKvsVariant * v = m_pDict->find(szKey);
+ if(v)return v;
+ v = new KviKvsVariant();
+ m_pDict->replace(szKey,v);
+ return v;
+}
diff --git a/src/kvirc/kvs/kvi_kvs_hash.h b/src/kvirc/kvs/kvi_kvs_hash.h
new file mode 100644
index 00000000..e0b2d865
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_hash.h
@@ -0,0 +1,64 @@
+#ifndef _KVI_KVS_HASH_H_
+#define _KVI_KVS_HASH_H_
+//=============================================================================
+//
+// File : kvi_kvs_hash.h
+// Created on Tue 07 Oct 2003 01:22:37 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include "kvi_pointerhashtable.h"
+#include "kvi_qstring.h"
+
+#include "kvi_kvs_variant.h"
+#include "kvi_heapobject.h"
+
+typedef KVIRC_API KviPointerHashTableIterator<QString,KviKvsVariant> KviKvsHashIterator;
+
+// This class must not have virtual funcitons nor destructor
+// Otherwise it will happily crash on windows when it is
+// allocated in modules and destroyed anywhere else around...
+class KVIRC_API KviKvsHash : public KviHeapObject
+{
+public:
+ KviKvsHash();
+ KviKvsHash(const KviKvsHash &h);
+ ~KviKvsHash();
+protected:
+ KviPointerHashTable<QString,KviKvsVariant> * m_pDict;
+public:
+ void unset(const QString &szKey){ m_pDict->remove(szKey); };
+ void set(const QString &szKey,KviKvsVariant * pVal){ m_pDict->replace(szKey,pVal); };
+ KviKvsVariant * find(const QString &szKey) const { return m_pDict->find(szKey); };
+ KviKvsVariant * get(const QString &szKey);
+
+ bool isEmpty() const { return m_pDict->isEmpty(); };
+ kvs_uint_t size() const { return m_pDict->count(); };
+
+ void appendAsString(QString &szBuffer) const;
+
+ const KviPointerHashTable<QString,KviKvsVariant> * dict(){ return m_pDict; };
+
+ void serialize(QString& result);
+};
+
+#endif //!_KVI_KVS_HASH_H_
diff --git a/src/kvirc/kvs/kvi_kvs_kernel.cpp b/src/kvirc/kvs/kvi_kvs_kernel.cpp
new file mode 100644
index 00000000..9c709fe0
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_kernel.cpp
@@ -0,0 +1,221 @@
+//=============================================================================
+//
+// File : kvi_kvs_kernel.cpp
+// Creation date : Tue 30 Sep 2003 05.12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_kernel.h"
+#include "kvi_kvs_parser.h"
+#include "kvi_kvs_hash.h"
+#include "kvi_kvs_aliasmanager.h"
+#include "kvi_kvs_coresimplecommands.h"
+#include "kvi_kvs_corefunctions.h"
+#include "kvi_kvs_corecallbackcommands.h"
+#include "kvi_kvs_switchlist.h"
+#include "kvi_kvs_variantlist.h"
+#include "kvi_kvs_script.h"
+#include "kvi_kvs_object_controller.h"
+#include "kvi_kvs_asyncoperation.h"
+#include "kvi_modulemanager.h"
+
+KviKvsKernel * KviKvsKernel::m_pKvsKernel = 0;
+
+////////////////////////////////////////////////////////////////////////////////
+// CONSTRUCTION AND DESTRUCTION
+
+KviKvsKernel::KviKvsKernel()
+{
+ m_pKvsKernel = this;
+
+ m_pSpecialCommandParsingRoutineDict = new KviPointerHashTable<QString,KviKvsSpecialCommandParsingRoutine>(17,false);
+ m_pSpecialCommandParsingRoutineDict->setAutoDelete(true);
+ m_pCoreSimpleCommandExecRoutineDict = new KviPointerHashTable<QString,KviKvsCoreSimpleCommandExecRoutine>(51,false);
+ m_pCoreSimpleCommandExecRoutineDict->setAutoDelete(true);
+ m_pCoreFunctionExecRoutineDict = new KviPointerHashTable<QString,KviKvsCoreFunctionExecRoutine>(51,false);
+ m_pCoreFunctionExecRoutineDict->setAutoDelete(true);
+ m_pCoreCallbackCommandExecRoutineDict = new KviPointerHashTable<QString,KviKvsCoreCallbackCommandExecRoutine>(17,false);
+ m_pCoreCallbackCommandExecRoutineDict->setAutoDelete(true);
+
+ m_pGlobalVariables = new KviKvsHash();
+ m_pEmptyParameterList = new KviKvsVariantList();
+ m_pObjectController = new KviKvsObjectController();
+ m_pObjectController->init();
+ m_pAsyncOperationManager = new KviKvsAsyncOperationManager();
+
+ KviKvsParser::init();
+
+ KviKvsCoreSimpleCommands::init();
+ KviKvsCoreFunctions::init();
+ KviKvsCoreCallbackCommands::init();
+}
+
+KviKvsKernel::~KviKvsKernel()
+{
+ delete m_pAsyncOperationManager;
+ delete m_pObjectController;
+ delete m_pEmptyParameterList;
+ delete m_pGlobalVariables;
+
+ delete m_pSpecialCommandParsingRoutineDict;
+ delete m_pCoreSimpleCommandExecRoutineDict;
+ delete m_pCoreFunctionExecRoutineDict;
+ delete m_pCoreCallbackCommandExecRoutineDict;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// INSTANCE MANAGEMENT
+
+void KviKvsKernel::init()
+{
+ if(!m_pKvsKernel)m_pKvsKernel = new KviKvsKernel();
+}
+
+void KviKvsKernel::done()
+{
+ if(m_pKvsKernel)
+ {
+ delete m_pKvsKernel;
+ m_pKvsKernel = 0;
+ }
+}
+
+#define COMPLETE_COMMAND_BY_DICT(__type,__dict) \
+ { \
+ KviPointerHashTableIterator<QString,__type> it(*__dict); \
+ int l = szCommandBegin.length(); \
+ while(it.current()) \
+ { \
+ if(KviQString::equalCIN(szCommandBegin,it.currentKey(),l)) \
+ pMatches->append(new QString(it.currentKey())); \
+ ++it; \
+ } \
+ }
+
+
+void KviKvsKernel::completeCommand(const QString &szCommandBegin,KviPointerList<QString> * pMatches)
+{
+ int idx = szCommandBegin.find(QChar('.'));
+ if(idx == -1)
+ {
+ // no module name inside
+ COMPLETE_COMMAND_BY_DICT(KviKvsCoreSimpleCommandExecRoutine,m_pCoreSimpleCommandExecRoutineDict)
+ COMPLETE_COMMAND_BY_DICT(KviKvsSpecialCommandParsingRoutine,m_pSpecialCommandParsingRoutineDict)
+ COMPLETE_COMMAND_BY_DICT(KviKvsCoreCallbackCommandExecRoutine,m_pCoreCallbackCommandExecRoutineDict)
+
+ KviPointerList<QString> lModules;
+ lModules.setAutoDelete(true);
+ g_pModuleManager->completeModuleNames(szCommandBegin,&lModules);
+ QString szEmpty = "";
+ for(QString * pszModuleName = lModules.first();pszModuleName;pszModuleName = lModules.next())
+ completeModuleCommand(*pszModuleName,szEmpty,pMatches);
+
+ KviKvsAliasManager::instance()->completeCommand(szCommandBegin,pMatches);
+ } else {
+ // contains a module name
+ QString szModuleName = szCommandBegin.left(idx);
+ QString szRight = szCommandBegin.right(szCommandBegin.length() - (idx+1));
+ completeModuleCommand(szModuleName,szRight,pMatches);
+ }
+}
+
+void KviKvsKernel::completeModuleCommand(const QString &szModuleName,const QString &szCommandBegin,KviPointerList<QString> * pMatches)
+{
+ KviModule * pModule = g_pModuleManager->getModule(szModuleName.latin1());
+ if(!pModule)return;
+
+ KviPointerList<QString> lModuleMatches;
+ lModuleMatches.setAutoDelete(true);
+ pModule->completeCommand(szCommandBegin,&lModuleMatches);
+ for(QString * pszModuleMatch = lModuleMatches.first();pszModuleMatch;pszModuleMatch = lModuleMatches.next())
+ {
+ QString * pszMatch = new QString(*pszModuleMatch);
+ pszMatch->prepend(".");
+ pszMatch->prepend(szModuleName);
+ pMatches->append(pszMatch);
+ }
+}
+
+void KviKvsKernel::completeFunction(const QString &szFunctionBegin,KviPointerList<QString> * pMatches)
+{
+ int idx = szFunctionBegin.find(QChar('.'));
+ if(idx == -1)
+ {
+ // no module name inside
+
+ KviPointerHashTableIterator<QString,KviKvsCoreFunctionExecRoutine> it(*m_pCoreFunctionExecRoutineDict);
+ int l = szFunctionBegin.length();
+ while(it.current())
+ {
+ if(KviQString::equalCIN(szFunctionBegin,it.currentKey(),l))
+ {
+ QString * pMatch = new QString(it.currentKey());
+ //pMatch->prepend("$");
+ pMatches->append(pMatch);
+ }
+ ++it;
+ }
+
+ KviPointerList<QString> lModules;
+ lModules.setAutoDelete(true);
+ g_pModuleManager->completeModuleNames(szFunctionBegin,&lModules);
+ QString szEmpty = "";
+ for(QString * pszModuleName = lModules.first();pszModuleName;pszModuleName = lModules.next())
+ completeModuleFunction(*pszModuleName,szEmpty,pMatches);
+
+ KviPointerList<QString> lAliases;
+ lAliases.setAutoDelete(true);
+
+ KviKvsAliasManager::instance()->completeCommand(szFunctionBegin,&lAliases);
+ for(QString * pszAlias = lAliases.first();pszAlias;pszAlias = lAliases.next())
+ {
+ QString * pszAliasMatch = new QString(*pszAlias);
+ //pszAliasMatch->prepend("$");
+ pMatches->append(pszAliasMatch);
+ }
+ } else {
+ // contains a module name
+ QString szModuleName = szFunctionBegin.left(idx);
+ QString szRight = szFunctionBegin.right(szFunctionBegin.length() - (idx+1));
+ completeModuleFunction(szModuleName,szRight,pMatches);
+ }
+
+
+}
+
+void KviKvsKernel::completeModuleFunction(const QString &szModuleName,const QString &szCommandBegin,KviPointerList<QString> * pMatches)
+{
+ KviModule * pModule = g_pModuleManager->getModule(szModuleName.latin1());
+ if(!pModule)return;
+
+ KviPointerList<QString> lModuleMatches;
+ lModuleMatches.setAutoDelete(true);
+ pModule->completeFunction(szCommandBegin,&lModuleMatches);
+ for(QString * pszModuleMatch = lModuleMatches.first();pszModuleMatch;pszModuleMatch = lModuleMatches.next())
+ {
+ QString * pszMatch = new QString(*pszModuleMatch);
+ pszMatch->prepend(".");
+ pszMatch->prepend(szModuleName);
+ //pszMatch->prepend("$");
+ pMatches->append(pszMatch);
+ }
+}
diff --git a/src/kvirc/kvs/kvi_kvs_kernel.h b/src/kvirc/kvs/kvi_kvs_kernel.h
new file mode 100644
index 00000000..a6f8eb2c
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_kernel.h
@@ -0,0 +1,134 @@
+#ifndef _KVI_KVS_KERNEL_H_
+#define _KVI_KVS_KERNEL_H_
+//=============================================================================
+//
+// File : kvi_kvs_kernel.h
+// Creation date : Tue 30 Sep 2003 13.46 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include "kvi_kvs_parser.h"
+#include "kvi_pointerlist.h"
+#include "kvi_qstring.h"
+
+#include "kvi_pointerhashtable.h"
+
+class KviKvsTreeNodeSpecialCommand;
+class KviKvsObjectController;
+class KviKvsAsyncOperationManager;
+class KviKvsRunTimeContext;
+class KviKvsVariantList;
+class KviKvsSwitchList;
+class KviKvsVariant;
+class KviKvsScript;
+class KviKvsHash;
+
+
+typedef KviKvsTreeNodeCommand * (KviKvsParser::*specialCommandParsingRoutine)();
+typedef struct _KviKvsSpecialCommandParsingRoutine
+{
+ specialCommandParsingRoutine proc;
+} KviKvsSpecialCommandParsingRoutine;
+
+typedef bool (*coreSimpleCommandExecRoutine)(KviKvsRunTimeContext * c,KviKvsVariantList * pParams,KviKvsSwitchList * pSwitches);
+typedef struct _KviKvsCoreSimpleCommandExecRoutine
+{
+ coreSimpleCommandExecRoutine proc;
+} KviKvsCoreSimpleCommandExecRoutine;
+
+typedef bool (*coreFunctionExecRoutine)(KviKvsRunTimeContext * c,KviKvsVariantList * pParams,KviKvsVariant * pRetBuffer);
+typedef struct _KviKvsCoreFunctionExecRoutine
+{
+ coreFunctionExecRoutine proc;
+} KviKvsCoreFunctionExecRoutine;
+
+typedef bool (*coreCallbackCommandExecRoutine)(KviKvsRunTimeContext * c,KviKvsVariantList * pParams,KviKvsSwitchList * pSwitches,const KviKvsScript * pCallback);
+typedef struct _KviKvsCoreCallbackCommandExecRoutine
+{
+ coreCallbackCommandExecRoutine proc;
+} KviKvsCoreCallbackCommandExecRoutine;
+
+
+class KVIRC_API KviKvsKernel
+{
+public:
+ KviKvsKernel();
+ ~KviKvsKernel();
+private:
+ static KviKvsKernel * m_pKvsKernel; // global kernel object
+
+ KviPointerHashTable<QString,KviKvsSpecialCommandParsingRoutine> * m_pSpecialCommandParsingRoutineDict;
+
+ KviPointerHashTable<QString,KviKvsCoreSimpleCommandExecRoutine> * m_pCoreSimpleCommandExecRoutineDict;
+ KviPointerHashTable<QString,KviKvsCoreCallbackCommandExecRoutine> * m_pCoreCallbackCommandExecRoutineDict;
+ KviPointerHashTable<QString,KviKvsCoreFunctionExecRoutine> * m_pCoreFunctionExecRoutineDict;
+
+ KviKvsHash * m_pGlobalVariables;
+ KviKvsVariantList * m_pEmptyParameterList;
+
+ KviKvsObjectController * m_pObjectController;
+ KviKvsAsyncOperationManager * m_pAsyncOperationManager;
+public:
+ static void init();
+ static void done();
+ static KviKvsKernel * instance(){ return m_pKvsKernel; };
+
+ KviKvsVariantList * emptyParameterList(){ return m_pEmptyParameterList; };
+
+ KviKvsHash * globalVariables(){ return m_pGlobalVariables; };
+
+ KviKvsObjectController * objectController(){ return m_pObjectController; };
+
+ KviKvsAsyncOperationManager * asyncOperationManager(){ return m_pAsyncOperationManager; };
+
+ void registerSpecialCommandParsingRoutine(const QString &szCmdName,KviKvsSpecialCommandParsingRoutine * r)
+ { m_pSpecialCommandParsingRoutineDict->replace(szCmdName,r); };
+ KviKvsSpecialCommandParsingRoutine * findSpecialCommandParsingRoutine(const QString &szCmdName)
+ { return m_pSpecialCommandParsingRoutineDict->find(szCmdName); };
+
+ void registerCoreSimpleCommandExecRoutine(const QString &szCmdName,KviKvsCoreSimpleCommandExecRoutine * r)
+ { m_pCoreSimpleCommandExecRoutineDict->replace(szCmdName,r); };
+ KviKvsCoreSimpleCommandExecRoutine * findCoreSimpleCommandExecRoutine(const QString &szCmdName)
+ { return m_pCoreSimpleCommandExecRoutineDict->find(szCmdName); };
+
+ void registerCoreFunctionExecRoutine(const QString &szFncName,KviKvsCoreFunctionExecRoutine * r)
+ { m_pCoreFunctionExecRoutineDict->replace(szFncName,r); };
+ KviKvsCoreFunctionExecRoutine * findCoreFunctionExecRoutine(const QString &szFncName)
+ { return m_pCoreFunctionExecRoutineDict->find(szFncName); };
+
+ void registerCoreCallbackCommandExecRoutine(const QString &szCmdName,KviKvsCoreCallbackCommandExecRoutine * r)
+ { m_pCoreCallbackCommandExecRoutineDict->replace(szCmdName,r); };
+ KviKvsCoreCallbackCommandExecRoutine * findCoreCallbackCommandExecRoutine(const QString &szCmdName)
+ { return m_pCoreCallbackCommandExecRoutineDict->find(szCmdName); };
+
+ void completeCommand(const QString &szCommandBegin,KviPointerList<QString> * pMatches);
+ void completeFunction(const QString &szFunctionBegin,KviPointerList<QString> * pMatches);
+ void completeModuleCommand(const QString &szModuleName,const QString &szCommandBegin,KviPointerList<QString> * matches);
+ void completeModuleFunction(const QString &szModuleName,const QString &szFunctionBegin,KviPointerList<QString> * matches);
+/*
+ KviPointerList<QString> * completeCommandAllocateResult(const QString &szCommandBegin);
+ KviPointerList<QString> * completeFunctionAllocateResult(const QString &szFunctionBegin);
+ void freeCompletionResult(KviPointerList<QString> * l);
+*/
+};
+
+#endif //!_KVI_KVS_KERNEL_H_
diff --git a/src/kvirc/kvs/kvi_kvs_moduleinterface.cpp b/src/kvirc/kvs/kvi_kvs_moduleinterface.cpp
new file mode 100644
index 00000000..911eb8c0
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_moduleinterface.cpp
@@ -0,0 +1,180 @@
+//=============================================================================
+//
+// File : kvi_kvs_moduleinterface.cpp
+// Created on Tue 16 Dec 2003 00:27:54 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003-2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_moduleinterface.h"
+#include "kvi_kvs_eventmanager.h"
+#include "kvi_module.h"
+#include "kvi_modulemanager.h"
+#include "kvi_locale.h"
+#include "kvi_kvs_treenode_data.h"
+#include "kvi_kvs_treenode_datalist.h"
+
+bool KviKvsModuleCallbackCommandCall::getParameterCode(unsigned int uParamIdx,QString &szParamBuffer)
+{
+ if(!m_pParameterDataList)return false;
+ KviKvsTreeNodeData * d = m_pParameterDataList->item(uParamIdx);
+ if(!d)return false;
+ const QChar * pBegin = d->location();
+ const QChar * pEnd = d->endingLocation();
+ if(!(pBegin && pEnd))return false;
+ szParamBuffer.setUnicode(pBegin,pEnd - pBegin);
+ szParamBuffer.stripWhiteSpace();
+ return true;
+}
+
+
+KviKvsModuleInterface::KviKvsModuleInterface()
+{
+ m_pModuleSimpleCommandExecRoutineDict = new KviPointerHashTable<QString,KviKvsModuleSimpleCommandExecRoutine>(17,false);
+ m_pModuleSimpleCommandExecRoutineDict->setAutoDelete(true);
+ m_pModuleFunctionExecRoutineDict = new KviPointerHashTable<QString,KviKvsModuleFunctionExecRoutine>(17,false);
+ m_pModuleFunctionExecRoutineDict->setAutoDelete(true);
+ m_pModuleCallbackCommandExecRoutineDict = new KviPointerHashTable<QString,KviKvsModuleCallbackCommandExecRoutine>(17,false);
+ m_pModuleCallbackCommandExecRoutineDict->setAutoDelete(true);
+}
+
+KviKvsModuleInterface::~KviKvsModuleInterface()
+{
+ kvsUnregisterAllEventHandlers();
+ delete m_pModuleSimpleCommandExecRoutineDict;
+ delete m_pModuleFunctionExecRoutineDict;
+ delete m_pModuleCallbackCommandExecRoutineDict;
+}
+
+#define COMPLETE_WORD_BY_DICT(__word,__list,__type,__dict) \
+ { \
+ KviPointerHashTableIterator<QString,__type> it(*__dict); \
+ int l = __word.length(); \
+ while(it.current()) \
+ { \
+ if(KviQString::equalCIN(__word,it.currentKey(),l)) \
+ __list->append(new QString(it.currentKey())); \
+ ++it; \
+ } \
+ }
+
+void KviKvsModuleInterface::completeCommand(const QString &szCommandBegin,KviPointerList<QString> * pMatches)
+{
+ COMPLETE_WORD_BY_DICT(szCommandBegin,pMatches,KviKvsModuleSimpleCommandExecRoutine,m_pModuleSimpleCommandExecRoutineDict)
+ COMPLETE_WORD_BY_DICT(szCommandBegin,pMatches,KviKvsModuleCallbackCommandExecRoutine,m_pModuleCallbackCommandExecRoutineDict)
+}
+
+void KviKvsModuleInterface::completeFunction(const QString &szFunctionBegin,KviPointerList<QString> * pMatches)
+{
+ COMPLETE_WORD_BY_DICT(szFunctionBegin,pMatches,KviKvsModuleFunctionExecRoutine,m_pModuleFunctionExecRoutineDict)
+}
+
+
+void KviKvsModuleInterface::kvsRegisterSimpleCommand(const QString &szCommand,KviKvsModuleSimpleCommandExecRoutine r)
+{
+ m_pModuleSimpleCommandExecRoutineDict->replace(szCommand,new KviKvsModuleSimpleCommandExecRoutine(r));
+}
+
+void KviKvsModuleInterface::kvsRegisterCallbackCommand(const QString &szCommand,KviKvsModuleCallbackCommandExecRoutine r)
+{
+ m_pModuleCallbackCommandExecRoutineDict->replace(szCommand,new KviKvsModuleCallbackCommandExecRoutine(r));
+}
+
+void KviKvsModuleInterface::kvsRegisterFunction(const QString &szFunction,KviKvsModuleFunctionExecRoutine r)
+{
+ m_pModuleFunctionExecRoutineDict->replace(szFunction,new KviKvsModuleFunctionExecRoutine(r));
+}
+
+
+bool KviKvsModuleInterface::kvsRegisterAppEventHandler(unsigned int iEventIdx,KviKvsModuleEventHandlerRoutine r)
+{
+ KviKvsModuleEventHandler * h = new KviKvsModuleEventHandler(this,r);
+ if(!KviKvsEventManager::instance()->addAppHandler(iEventIdx,h))
+ {
+ delete h;
+ return false;
+ }
+ return true;
+}
+
+bool KviKvsModuleInterface::kvsRegisterRawEventHandler(unsigned int iRawIdx,KviKvsModuleEventHandlerRoutine r)
+{
+ KviKvsModuleEventHandler * h = new KviKvsModuleEventHandler(this,r);
+ if(!KviKvsEventManager::instance()->addRawHandler(iRawIdx,h))
+ {
+ delete h;
+ return false;
+ }
+ return true;
+}
+
+void KviKvsModuleInterface::kvsUnregisterAppEventHandler(unsigned int uEventIdx)
+{
+ KviKvsEventManager::instance()->removeModuleAppHandler(uEventIdx,this);
+}
+
+void KviKvsModuleInterface::kvsUnregisterRawEventHandler(unsigned int uRawIdx)
+{
+ KviKvsEventManager::instance()->removeModuleRawHandler(uRawIdx,this);
+}
+
+void KviKvsModuleInterface::kvsUnregisterAllAppEventHandlers()
+{
+ KviKvsEventManager::instance()->removeAllModuleAppHandlers(this);
+}
+
+void KviKvsModuleInterface::kvsUnregisterAllRawEventHandlers()
+{
+ KviKvsEventManager::instance()->removeAllModuleRawHandlers(this);
+}
+
+void KviKvsModuleInterface::kvsUnregisterAllEventHandlers()
+{
+ kvsUnregisterAllAppEventHandlers();
+ kvsUnregisterAllRawEventHandlers();
+}
+
+static bool default_module_kvs_cmd_load(KviKvsModuleCommandCall *)
+{
+ return true;
+}
+
+static bool default_module_kvs_cmd_unload(KviKvsModuleCommandCall *c)
+{
+ if(c->module()->isLocked())
+ {
+ if(!c->switches()->find('f',"force"))
+ {
+ c->warning(__tr2qs("Can't unload the module: it has locked itself in memory"));
+ return true;
+ }
+ }
+ g_pModuleManager->unloadModule(c->module()->name());
+ return true;
+}
+
+void KviKvsModuleInterface::registerDefaultCommands()
+{
+ kvsRegisterSimpleCommand("load",default_module_kvs_cmd_load);
+ kvsRegisterSimpleCommand("unload",default_module_kvs_cmd_unload);
+}
+
+
diff --git a/src/kvirc/kvs/kvi_kvs_moduleinterface.h b/src/kvirc/kvs/kvi_kvs_moduleinterface.h
new file mode 100644
index 00000000..ccfbaca7
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_moduleinterface.h
@@ -0,0 +1,228 @@
+#ifndef _KVI_KVS_MODULEINTERFACE_H_
+#define _KVI_KVS_MODULEINTERFACE_H_
+//=============================================================================
+//
+// File : kvi_kvs_moduleinterface.h
+// Created on Tue 16 Dec 2003 00:27:54 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "kvi_settings.h"
+
+#include "kvi_pointerhashtable.h"
+
+#include "kvi_kvs_runtimecall.h"
+#include "kvi_kvs_parameterprocessor.h"
+#include "kvi_kvs_switchlist.h"
+#include "kvi_kvs_script.h"
+#include "kvi_pointerlist.h"
+#include "kvi_qstring.h"
+
+class KviModule;
+class KviKvsTreeNodeDataList;
+
+class KVIRC_API KviKvsModuleRunTimeCall : public KviKvsRunTimeCall
+{
+protected:
+ KviModule * m_pModule;
+public:
+ KviKvsModuleRunTimeCall(KviModule * pModule,
+ KviKvsRunTimeContext * pContext,
+ KviKvsVariantList * pParams)
+ : KviKvsRunTimeCall(pContext,pParams), m_pModule(pModule) {}
+ ~KviKvsModuleRunTimeCall(){};
+public:
+ KviModule * module(){ return m_pModule; };
+};
+
+class KVIRC_API KviKvsModuleEventCall : public KviKvsModuleRunTimeCall
+{
+public:
+ KviKvsModuleEventCall(KviModule * pModule,
+ KviKvsRunTimeContext * pContext,
+ KviKvsVariantList * pParams)
+ : KviKvsModuleRunTimeCall(pModule,pContext,pParams){};
+ ~KviKvsModuleEventCall(){};
+};
+
+class KVIRC_API KviKvsModuleCommandCall : public KviKvsModuleRunTimeCall
+{
+protected:
+ KviKvsSwitchList * m_pSwitchList;
+public:
+ KviKvsModuleCommandCall(KviModule * pModule,
+ KviKvsRunTimeContext * pContext,
+ KviKvsVariantList * pParams,
+ KviKvsSwitchList * pSwitches)
+ : KviKvsModuleRunTimeCall(pModule,pContext,pParams), m_pSwitchList(pSwitches){};
+ ~KviKvsModuleCommandCall(){};
+public:
+ KviKvsSwitchList * switches(){ return m_pSwitchList; };
+ KviKvsSwitchList * switchList(){ return m_pSwitchList; };
+
+ // forwarders for the switch list
+ bool hasSwitch(unsigned short u,const QString &szSwitch){ return (m_pSwitchList->find(u,szSwitch) != 0); };
+ KviKvsVariant * getSwitch(unsigned short u,const QString &szSwitch){ return m_pSwitchList->find(u,szSwitch); };
+};
+
+class KVIRC_API KviKvsModuleCallbackCommandCall : public KviKvsModuleCommandCall
+{
+protected:
+ const KviKvsScript * m_pCallback;
+ KviKvsTreeNodeDataList * m_pParameterDataList; // core subtree that rappresents the parameter list
+public:
+ KviKvsModuleCallbackCommandCall(KviModule * pModule,
+ KviKvsRunTimeContext * pContext,
+ KviKvsVariantList * pParams,
+ KviKvsSwitchList * pSwitches,
+ const KviKvsScript * pCallback,
+ KviKvsTreeNodeDataList * pDataList)
+ : KviKvsModuleCommandCall(pModule,pContext,pParams,pSwitches), m_pCallback(pCallback), m_pParameterDataList(pDataList) {};
+ ~KviKvsModuleCallbackCommandCall(){};
+public:
+ // Never NULL, but may have empty code
+ const KviKvsScript * callback(){ return m_pCallback; };
+ virtual bool getParameterCode(unsigned int uParamIdx,QString &szParamBuffer);
+};
+
+
+class KVIRC_API KviKvsModuleFunctionCall : public KviKvsModuleRunTimeCall
+{
+ friend class KviKvsTreeNodeModuleFunctionCall;
+protected:
+ KviKvsVariant * m_pResult;
+public:
+ KviKvsModuleFunctionCall(KviModule * pModule,
+ KviKvsRunTimeContext * pContext,
+ KviKvsVariantList * pParams,
+ KviKvsVariant * pResult)
+ : KviKvsModuleRunTimeCall(pModule,pContext,pParams), m_pResult(pResult)
+ {};
+ ~KviKvsModuleFunctionCall(){};
+public:
+ KviKvsVariant * returnValue(){ return m_pResult; };
+};
+
+
+
+typedef bool (*KviKvsModuleSimpleCommandExecRoutine)(KviKvsModuleCommandCall * c);
+typedef bool (*KviKvsModuleFunctionExecRoutine)(KviKvsModuleFunctionCall * c);
+typedef bool (*KviKvsModuleCallbackCommandExecRoutine)(KviKvsModuleCallbackCommandCall * c);
+typedef bool (*KviKvsModuleEventHandlerRoutine)(KviKvsModuleEventCall * c);
+
+
+
+class KVIRC_API KviKvsModuleInterface
+{
+ friend class KviKvsModuleManager;
+public:
+ KviKvsModuleInterface();
+ ~KviKvsModuleInterface();
+protected:
+ KviPointerHashTable<QString,KviKvsModuleSimpleCommandExecRoutine> * m_pModuleSimpleCommandExecRoutineDict;
+ KviPointerHashTable<QString,KviKvsModuleFunctionExecRoutine> * m_pModuleFunctionExecRoutineDict;
+ KviPointerHashTable<QString,KviKvsModuleCallbackCommandExecRoutine> * m_pModuleCallbackCommandExecRoutineDict;
+public:
+ void kvsRegisterSimpleCommand(const QString &szCommand,KviKvsModuleSimpleCommandExecRoutine r);
+ void kvsRegisterCallbackCommand(const QString &szCommand,KviKvsModuleCallbackCommandExecRoutine r);
+ void kvsRegisterFunction(const QString &szFunction,KviKvsModuleFunctionExecRoutine r);
+ bool kvsRegisterAppEventHandler(unsigned int iEventIdx,KviKvsModuleEventHandlerRoutine r);
+ bool kvsRegisterRawEventHandler(unsigned int iRawIdx,KviKvsModuleEventHandlerRoutine r);
+
+ void kvsUnregisterSimpleCommand(const QString &szCommand)
+ { m_pModuleSimpleCommandExecRoutineDict->remove(szCommand); };
+ void kvsUnregisterCallbackCommand(const QString &szCommand)
+ { m_pModuleCallbackCommandExecRoutineDict->remove(szCommand); };
+ void kvsUnregisterFunction(const QString &szFunction)
+ { m_pModuleFunctionExecRoutineDict->remove(szFunction); };
+ void kvsUnregisterAppEventHandler(unsigned int iEventIdx);
+ void kvsUnregisterRawEventHandler(unsigned int iRawIdx);
+
+ void kvsUnregisterAllSimpleCommands()
+ { m_pModuleSimpleCommandExecRoutineDict->clear(); };
+ void kvsUnregisterAllCallbackCommands()
+ { m_pModuleCallbackCommandExecRoutineDict->clear(); };
+ void kvsUnregisterAllFunctions()
+ { m_pModuleFunctionExecRoutineDict->clear(); };
+ void kvsUnregisterAllAppEventHandlers();
+ void kvsUnregisterAllRawEventHandlers();
+ void kvsUnregisterAllEventHandlers();
+
+ KviKvsModuleSimpleCommandExecRoutine * kvsFindSimpleCommand(const QString &szCommand)
+ { return m_pModuleSimpleCommandExecRoutineDict->find(szCommand); };
+ KviKvsModuleCallbackCommandExecRoutine * kvsFindCallbackCommand(const QString &szCommand)
+ { return m_pModuleCallbackCommandExecRoutineDict->find(szCommand); };
+ KviKvsModuleFunctionExecRoutine * kvsFindFunction(const QString &szFunction)
+ { return m_pModuleFunctionExecRoutineDict->find(szFunction); };
+
+ void completeCommand(const QString &cmd,KviPointerList<QString> * matches);
+ void completeFunction(const QString &cmd,KviPointerList<QString> * matches);
+protected:
+ void registerDefaultCommands();
+};
+
+
+
+#define KVSM_REGISTER_SIMPLE_COMMAND(_pModule,_szCmd,_procname) \
+ _pModule->kvsRegisterSimpleCommand(_szCmd,_procname);
+
+#define KVSM_UNREGISTER_SIMPLE_COMMAND(_pModule,_szCmd) \
+ _pModule->kvsUnregisterSimpleCommand(_szCmd);
+
+#define KVSM_REGISTER_CALLBACK_COMMAND(_pModule,_szCmd,_procname) \
+ _pModule->kvsRegisterCallbackCommand(_szCmd,_procname);
+
+#define KVSM_UNREGISTER_CALLBACK_COMMAND(_pModule,_szCmd) \
+ _pModule->kvsUnregisterCallbackCommand(_szCmd);
+
+#define KVSM_REGISTER_FUNCTION(_pModule,_szFnc,_procname) \
+ _pModule->kvsRegisterFunction(_szFnc,_procname); \
+
+#define KVSM_UNREGISTER_FUNCTION(_pModule,_szFnc) \
+ _pModule->kvsUnregisterFunction(_szFnc);
+
+#define KVSM_UNREGISTER_ALL_SIMPLE_COMMANDS(_pModule) \
+ _pModule->kvsUnregisterAllSimpleCommands();
+
+#define KVSM_UNREGISTER_ALL_CALLBACK_COMMANDS(_pModule) \
+ _pModule->kvsUnregisterAllCallbackCommands();
+
+#define KVSM_UNREGISTER_ALL_FUNCTIONS(_pModule) \
+ _pModule->kvsUnregisterAllFunctions();
+
+
+#define KVSM_PARAMETER(a,b,c,d) KVS_PARAMETER(a,b,c,d)
+#define KVSM_PARAMETER_IGNORED(a) KVS_PARAMETER_IGNORED(a)
+
+#define KVSM_PARAMETERS_BEGIN(pCall) \
+ KVS_PARAMETERS_BEGIN(parameter_format_list)
+
+#define KVSM_PARAMETERS_END(pCall) \
+ KVS_PARAMETERS_END \
+ if(!KviKvsParameterProcessor::process(pCall->params(),pCall->context(),parameter_format_list))return false;
+
+#define KVSM_REQUIRE_CONNECTION(pCall) \
+ if(!pCall->window()->context())return c->context()->errorNoIrcContext(); \
+ if(!pCall->window()->connection())return c->context()->warningNoIrcConnection();
+
+
+
+#endif //!_KVI_KVS_MODULEINTERFACE_H_
diff --git a/src/kvirc/kvs/kvi_kvs_object.cpp b/src/kvirc/kvs/kvi_kvs_object.cpp
new file mode 100644
index 00000000..0447cfd9
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_object.cpp
@@ -0,0 +1,1743 @@
+//=============================================================================
+//
+// File : kvi_kvs_object.cpp
+// Created on Wed 08 Oct 2003 02:31:57 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_object.h"
+#include "kvi_kvs_hash.h"
+#include "kvi_kvs_kernel.h"
+#include "kvi_window.h"
+#include "kvi_app.h"
+
+#include "kvi_modulemanager.h"
+#include "kvi_console.h"
+#include "kvi_locale.h"
+#include "kvi_error.h"
+#include "kvi_out.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_iconmanager.h"
+#include "kvi_malloc.h"
+
+#include "kvi_kvs_object_controller.h"
+#include "kvi_kvs_object_functioncall.h"
+#include "kvi_kvs_object_functionhandlerimpl.h"
+
+#include <qmetaobject.h>
+#include <qtimer.h>
+#include <time.h>
+#include <qiconset.h>
+
+
+
+/*
+ @doc: objects
+ @title:
+ Object scripting
+ @short:
+ Object scripting overview
+ @keyterms:
+ objects , object scripting , complex data structures
+ @body:
+ [big]Introduction[/big]
+
+ The KVIrc scripting language is not object oriented in nature.
+ Anyway , objects are a highlevel abstraction that allow
+ to write complex code in a "clean" way.
+ So I've added at least some pseudo-object support.[br][br]
+
+ [big]Basic concepts[/big]
+
+ Objects are arranged in tree structures.
+ Each object that you create is either toplevel object or a children
+ of another object. A toplevel object is a parentless one.
+ Obviously all objects can have children objects.[br][br]
+
+ When an object is destroyed , all its children are also destroyed.
+ The toplevel objects are automatically destroyed when KVIrc quits.
+ The objects are global to the entire application (this is different
+ from previous KVIrc releases where the objects were local
+ to the current frame window and arranged in a single tree
+ with a builtin root object).[br][br]
+
+ Each object is an instance of a class that defines its features.
+ Each object has also a name , that is not necessary unique and is assigned
+ by the programmer; the name is just a mnemonic expedient, and
+ you may also not need it.[br][br]
+
+ Each object is identified by an [b]OPAQUE UNIQUE ID[/b].
+ The ID is assigned by KVIrc and can be held in any variable.
+ You can think the object id as a "handle for the object" or the object's pointer.
+ Any action performed on the object will require its ID.[br][br]
+
+ [big]Creation and destruction[/big]
+
+ To create an object you must use the [fnc]$new[/fnc]()
+ function. [fnc]$new[/fnc]() requires three parameters:[br]
+ - The object class (more about object classes later in this document)[br]
+ - The ID of the parent object , (that can be 0 for toplevel objects).[br]
+ - The object name (eventually empty)[br]
+ [example]
+ %myobject = [fnc]$new[/fnc]([class]object[/class],0,theName)
+ [/example]
+ [fnc]$new[/fnc]() returns the ID of the newly created object, or
+ the STRING "0" if the object creation fails
+ (it is a string because the object id's are generally strings, and 0 is an "invalid object id").
+ In well written scripts it is not common that the object creation fails, anyway
+ you can check if the creation has failed in the following way:[br]
+ [example]
+ [cmd]if[/cmd](%myobject)[cmd]echo[/cmd] "Object created!"
+ else [cmd]echo[/cmd] "Object creation failed!"
+ [/example]
+ You can also test the object ID's for equality:[br]
+ [example]
+ [cmd]if[/cmd](%myobject == %anotherobject)[cmd]echo[/cmd] "This is the same object!";
+ [/example]
+ The parent object id is optional, if not specified it is assumed to be 0.
+ The object name is optional , but it may help you later in finding the object.[br][br]
+
+ To destroy an object use the [cmd]delete[/cmd] command. (In previous versions
+ this command was named "destroy" and delete is currently aliased to that name too).[br]
+ [example]
+ [cmd]delete[/cmd] %myobject
+ [/example]
+ If the destroyed object has children objects , these are destroyed too.[br][br]
+
+ [big]Fields : objects as pseudo-structures[/big]
+
+ All the objects can contain variable fields.
+ You can set an object's field by using the object scope operator "->":[br]
+ [example]
+ %myobject-&gt;%fieldVariable = dataString
+ [/example]
+ To unset a field set it with empty data string (just like with a normal variable).
+ To retrieve the field data use the object scope operator in the same way:[br]
+ [example]
+ [cmd]echo[/cmd] %myobject->%fieldVariable
+ [/example]
+ The '-&gt;' operator has been stolen from the C language.
+ In the KVIrc scripting language it switches from the global namespace
+ to the object's one.[br]
+ So in the above example %fieldVariable is owned by the object.[br]
+ The first character of the variable name has no special meaning in the
+ object namespace (in the global namespace the variables starting
+ with an uppercase letter are global to the application , the other ones are local
+ to the command sequence). The variable names are completely case insensitive.[br][br]
+
+ Any [doc:operators]operator[/doc] can be used with the object field variables:[br]
+ [example]
+ %myobject-&gt;%fieldVariable = 0
+ %myobject-&gt;%fieldVarialbe ++
+ [cmd]if[/cmd]0(%myobject->%fieldVariable != 1)[cmd]echo[/cmd] KVIrc is drunk , maybe a reboot will help ?
+ [/example]
+ You can simulate C structures "on the fly" by using objects and fields:[br]
+ [example]
+ # Create an user description on the fly
+ %myobj = [fnc]$new[/fnc]([class]object[/class],0,userDescription)
+ # Set the fields
+ %myobj-&gt;%nickname = Pragma
+ %myobj-&gt;%username = daemon
+ %myobj-&gt;%hostname = pippo.pragma.org
+ %myobj-&gt;%info = Pragma goes always sleep too late
+ %myobj-&gt;%info [doc:operators]&lt;&lt;[/doc] and wakes up too late too!
+ # Call an (user defined) alias that stores the data to a file
+ storetofile %myobj
+ # Destroy the object
+ [cmd]delete[/cmd] %myobj
+ [/example]
+ The field variables can be also dictionaries:[br]
+ [example]
+ %theobj-&gt;%field[key] = something
+ [/example]
+ Unlike in C , there is no need to declare object fields.
+ Any object can have any field variable ; an "unset" field is equivalent to an "empty" field.[br]
+ Note:[br]
+ The KVIrc scripting language is not typed.
+ Any object class (be patient...I'll explain classes in a while) identifier can be stored in any KVIrc variable:
+ it is not possible to find out the object features by "examining" its identifier.
+ This may make the usage of objects a bit "unclear";
+ Howewer , with some experience you will be able to use the objects in a very powerful way.
+ The type-safety can be also simulated by a careful usage of object names;
+ in the above example , the %myobj object was created with the "userDescription" name.
+ The storetofile alias could check the passed object's name and refuse to work
+ if that does not match "userDescription".[br][br]
+
+ A more complex use of fields will be described later in this document.[br][br]
+
+ [big]Member functions[/big]
+
+ Just like in C++ , the objects have member functions.
+ For example , the "object" class (again...read on) objects export the [classfnc:object]$name[/classfnc]()
+ and [classfnc:object]$className[/classfnc]() functions.[br]
+ [example]
+ %tmp = [fnc]$new[/fnc]([class]object[/class],0,myobject)
+ [cmd]echo[/cmd] The object's name is %tmp->[classfnc:object]$name[/classfnc]() , the class name is %tmp->[classfnc:object]$className[/classfnc]()
+ # Destroy the object
+ [cmd]delete[/cmd] %tmp
+ [/example]
+ Another cool function exported by the [class:object]object[/class] class is the
+ [classfnc:object]$children[/classfnc]() function.
+ It returns a comma separated list of children identifiers.[br]
+ [example]
+ %tmp = [fnc]$new[/fnc]([class]object[/class],0,myobject)
+ %tmpchild = [fnc]$new[/fnc]([class]object[/class],%tmp,child1)
+ %tmpchild = [fnc]$new[/fnc]([class]object[/class],%tmp,child2)
+ %tmpchild = [fnc]$new[/fnc]([class]object[/class],%tmp,child3)
+ [cmd]echo[/cmd] The object's children list is : %tmp->[classfnc:object]$children[/classfnc]()
+ # Destroy the object and the children
+ [cmd]delete[/cmd] %tmp
+ [/example]
+ There are two special functions for each objects: the "constructor" and the "destructor".
+ You will find more informations on constructors and destructors later in this document,
+ for now it's enough that you know that these functions are called automatically by KVirc:
+ the constructor is called when the object is created and the destructor is called when the
+ object is being destroyed with [cmd]delete[/cmd].[br][br]
+
+ The object functions can be reimplemented on-the-fly
+ by using the [cmd]privateimpl[/cmd] command: you can simply modify the behaviour of the function
+ by writing your own function body.
+ (This is an uncommon feature: unlike many other languages , you can reimplement object
+ functions at run-time, when the object has been already created.)[br][br]
+
+ A more complex example[br]
+ [example]
+ %tmp = [fnc]$new[/fnc]([class]object[/class],0,myobject)
+ [cmd]foreach[/cmd](%i,1,2,3)
+ {
+ %tmpchild = [fnc]$new[/fnc]([class]object[/class],%tmp,child%i)
+ [cmd]privateimpl[/cmd](%tmpchild,destructor){ [cmd]echo[/cmd] Object [fnc]$this[/fnc] ([fnc]$this[/fnc]-&gt;[classfnc:object]$name[/classfnc]()) destroyed; }
+ }
+ [cmd]privateimpl[/cmd](%tmp,destructor)
+ {
+ %count = 0;
+ [cmd]foreach[/cmd](%t,[fnc]$this[/fnc]-&gt;[classfnc:object]$children[/classfnc]())
+ {
+ [cmd]echo[/cmd] Children : %t-&gt;[classfnc:object]$name[/classfnc]() with class %t-&gt;[classfnc:object]$class[/classfnc]()
+ %count++
+ }
+ [cmd]echo[/cmd] Just before destroying my %count children.
+ }
+ # Destroy the object and the children
+ [cmd]delete[/cmd] %tmp
+ [/example]
+
+ In the example above four objects have been created.
+ A "parent" object named "myobject" , and three children objects.
+ The destructor has been reimplemented for each child object,
+ to make it "say" its name (Please note the usage of [fnc]$this[/fnc]).
+ In the parent destructor the children have been counted and listed.[br]
+ Then the parent object is destroyed causing to:[br]
+ - trigger the parent destructor.[br]
+ - destroy all the children (and conseguently trigger all the "individual" destructors).[br][br]
+
+ Not all the object functions must return a value:
+ If a function does not return a meaningful value , or you just want to ignore it , you can call it in the following way:[br]
+ [example]
+ %anyobject-&gt;$functionname()
+ [/example]
+ [br]
+
+ [big]Classes[/big]
+ As said before , all objects are instances of a specific class.
+ This concept is common to almost all object oriented languages.
+ A class is a collection of methods that define an object's behaviour.
+ Hehe...it is not easy to explain it , so I'll try with an example:[br]
+ [example]
+ class HostAddress
+ {
+ field hostname
+ function ipnumber()
+ function isLocalhost()
+ }
+ [/example]
+ The above class is a rappresentation of a host address.
+ You create an [b]instance of this class[/b] and set the hostname field, for example,
+ to www.kernel.org.
+ The object is now able to give you informations about the hostname in a transparent way:
+ You can call the ipnumber() function, and the object will return you the
+ digits and dots rappresentation of www.kernel.org.
+ The isLocalhost() function will return true if the hostname refers to the local machine
+ The object internal job is hidden from the user , but probably it will be a huge job.
+ To obtain the IP number from the hostname , the object will probably have to perform a DNS call (usually a complex task).
+ To check if the hostname references the local machine , the object will have to obtain the local hostname
+ from the system (in some "unspecified" way) and then compare it with the given "hostname" field.[br][br]
+
+ The internal job of the object is defined by the "implementation of the class".
+ Obviously , the programmer that creates the class has to write that implementation.[br]
+
+ [example]
+ class HostAddress
+ {
+ field hostname
+ function ipnumber()
+ {
+ find the nearest DNS server
+ make the dns call
+ wait for the response
+ decode the response
+ }
+ function isLocalhost()
+ {
+ query the kernel for the local hostname
+ compare the obtained hostname with the hostname field
+ }
+ }
+ [/example]
+ In the above example I have "implemented" the two functions by using a "fantastic" language.[br][br]
+
+ Let's go back to the real world.[br][br]
+
+ KVirc contains a [doc:classes]set of built-in ready-to-use classes[/doc].
+ The basic class is [class]object[/class]: all the other classes are derived from this (more about
+ object inheritance later in this doc).[br][br]
+
+ Another available class is [class]socket[/class] that is an interface to the real system sockets.
+ An instance of the [class]socket[/class] class can connect and communicate with other hosts on the net.[br][br]
+
+ The [b]class definitions are GLOBAL to the entire application[/b]: all server windows share them.[br][br]
+
+ So now we can say that in KVIrc
+ [b]a CLASS is a collection of features that define the behaviour of an object.
+ The user interface to the class are the member functions and the events.[/b][br][br]
+
+ [big]Inheritance[/big]
+
+ Someone asked for derived classes ?[br]
+ Here we go:[br]
+ The [cmd]class[/cmd] command allows you to define new object classes.
+ In KVI++, A new class must be always derived from some other class: the lowest possible
+ level of inheritance is 1: deriving from class [class]object[/class].[br]
+ [example]
+ [cmd]class[/cmd](helloworld,object)
+ {
+ sayhello()
+ {
+ [cmd]echo[/cmd] Hello world!
+ }
+ }
+ [/example]
+
+ The above class is named "helloworld". It inherits the [class]object[/class] class.
+ This means that it acquires all the [class]object[/class] fuunctions: [classfnc:object]$name[/classfnc]() ,
+ [classfnc:object]$class[/class]() , [classfnc:object]$children[/classfnc]()...
+ Additionally , it has the $sayhello() function, that "echoes Hello world" to the console.
+ Now you can create an instance of this class:
+ [example]
+ %instance = [fnc]$new[/fnc](helloworld)
+ %instance->$sayhello()
+ [/example]
+ You should see "Hello world" printed in the console.
+ Easy job...let's make the things a bit more complex now:
+ derive another class from helloworld and make it say "hello" in two different languages:[br]
+ [example]
+ [cmd]class[/cmd](localizedhelloworld,helloworld)
+ {
+ [comment]# define the setlanguage function[/comment]
+ [comment]# note that <$0 = language> is just a programmer reminder[/comment]
+ setlanguage(<$0 = language>)
+ {
+ [cmd]if[/cmd](($0 == english) || ($0 == italian))
+ {
+ [fnc:$this]$$[/fnc]->%lang = $0
+ [cmd]return[/cmd] 1
+ } else {
+ [cmd]echo[/cmd] I don't know that language ($0)
+ [cmd]echo[/cmd] defaulting to english
+ [fnc:$this]$$[/fnc]->%lang = english
+ [cmd]return[/cmd] 0
+ }
+ }
+
+ sayhello()
+ {
+ [cmd]if[/cmd]([fnc:$this]$$[/fnc]->%lang == italian)[cmd]echo[/cmd] Ciao mondo!
+ else [fnc:$this]$$[/fnc]->$helloworld:sayhello()
+ }
+ }
+ [/example]
+ Now you can call:[br]
+ [example]
+ %m = [fnc]$new[/fnc](localizedhelloworld)
+ %m->$setLanguage(italian)
+ %m->$sayhello()
+ %m->$setLanguage(english)
+ %m->$sayhello()
+ %m->$setLanguage(turkish)
+ %m->$sayhello()
+ [cmd]delete[/cmd] %myobj
+ [/example]
+ The class defined above is inherited from the previously defined helloworld class:
+ so it inherits the "object" class functions and events and the sayhello function from "helloworld".
+ In addition a setlanguage function is defined that stores in a variable the language name passed
+ as a parameter (after checking its validity). ($0 evaluates to the first parameter passed)
+ If the language is unknown the setlanguage function will return 0 (false).
+ Now we want to be able to say "hello world" in italian and english.
+ So we [b]override[/b] the inherited sayhello function.
+ "To override" means "to reimplement" : if you call %object->$sayhello() and %object
+ contains the ID of an instance of class "localizedhelloworld" , the new implementation of that function willl be called (executed).
+ The inherited sayhello was able to say "hello world" only in english , so we can still use it in the new implementation
+ without rewriting its contents. So if the language set is "not italian" we assume that it is english and
+ call the [b]base class implementation[/b].[br]
+ [example]
+ [fnc]$this/[fnc]->$helloworld:sayhello()
+ [comment]# equivalent to $$->$helloworld:sayhello(),[/comment]
+ [comment]# to $this->$helloworld::sayhello(),[/comment]
+ [comment]# and to $$->$helloworld::sayhello()[/comment]
+ [/example]
+ otherwise the language is italian and we say "hello" in italian :).
+ So , to call a base class implementation of a function we "prepend" the base class name before the function name in the call.
+ The base class name could be also [class]object[/class] in this case , but the [class]object[/class] class has no "sayhello" function defined
+ so it would result in an error.[br][br]
+ In the above example , all the values of [fnc]$this[/fnc]</a>-&gt;%language
+ that are not equal to "italian" are assumed to be "english".
+ This is not always true , for example , just after the object creation the %language variable field
+ is effectively empty. The above class works correctly in this case , but we might want to have always
+ a coherent state of the field variables , so we need another concept: the class [b]constructor[/b]
+ that will be discussed in the next paragraph.[br][br]
+
+ Note: multiple inheritance (inheritance from more than one base class) is not implemented , KVIrc is not a compiler :)[br][br]
+
+ Objects are much more powerful....[br][br]
+
+ Do a [cmd]clearobjects[/cmd] to cleanup the old class definitions , and read on.[br][br]
+
+ [big]Constructors and destructors[/big]
+
+ The class constructor is a [b]function[/b] that is called automatically just after the object
+ has been created internally by KVIrc and just before the [fnc]$new[/fnc]
+ function returns. It should be used to setup the internal object state.[br]
+ Unlike in C++ , in KVIrc , the constructor CAN return a value:[br]
+ If it returns 0 it signals the object creation failure : the object
+ is immediately destroyed and [fnc]$new[/fnc]() returns 0 to the caller.
+ Any other return value is treated as success , so the object is effectively
+ created and [fnc]$new[/fnc]() returns its ID to the caller.[br]
+ All the builtin classes have a constructor defined that will almost never fail (only if we run out of memory),
+ so you can avoid to check the [fnc]$new[/fnc]() return value
+ when creating the instances of the built-in classes.[br][br]
+
+ In derived classes you can override the constructor to setup your object's state.[br]
+ You should [b]always call the base class constructor[/b] in your overridden one , to setup
+ the base class state , and propagate its return value (eventually modified if the base class
+ constructor is succesfull but your derived class initialization fails).[br]
+ In practice , the builtin class constructors do nothing other than setting the return
+ value to 1 so you can even avoid to call them, but in any other case you must do it.[br][br]
+
+ This is different from C (for example), where the constructors are called (more or less)
+ automatically.[br][br]
+
+ [big]Signals and slots[/big]
+
+ The signals and slots are a powerful mean of inter-object communication.
+ A signal is emitted by an object to notify a change in its state.
+ For example , the [class:button]button class[/class] emits the
+ [classsignal:button]clicked[/classsignal] signal when the user clicks the button.[br][br]
+ A signal is emitted by an object and can be received and handled by any other existing object
+ (including the object that emits the signal).[br]
+ The handler function for a signal is called "slot".[br]
+ It is just a convention : in fact , a slot is a normal object function (and any object function can be a slot).
+ More than one slot can be connected to a single signal , and more signals can be connected to a single slot.[br]
+ In this way , many objects can be notified of a change in a single object , as well as a single object
+ can easily handle state-changes for many objects.[br]
+ The signal / slot behaviour could be easily implemented by a careful usage of object functions.
+ [b]So why signals and slots ?[/b][br]
+ Because signals are much more powerful in many situations.
+ The signals have no equivalent in C/C++...but they have been implemented in many highlevel
+ C/C++ libraries and development kits (including the system-wide signal/handler mechanism implemented
+ by all the modern kernels and used in inter-process communication).[br]
+*/
+
+
+
+
+///////////////////////////////////////////////////////////////////////////////////////
+
+/*
+ @doc: object
+ @keyterms:
+ object class, object, class
+ @title:
+ object class
+ @type:
+ class
+ @short:
+ Base class for all the KVIrc objects
+ @inherits:
+ none
+ @description:
+ This is the base class for all the builtin KVirc object classes.
+ It exports the functions to retrieve the object name, to iterate
+ through children objects and to lookup a child object by name or class.
+ Additionally , this class provides the builtin timer functionality.
+ The [classfnc]$constructor[/classfnc] and [classfnc]$destructor[/classfnc]
+ functions are empty implementations that all the other classes inherit.
+ @functions:
+ !fn: $constructor()
+ Constructor for this object class.
+ The default implementation does nothing.
+ !fn: $destructor()
+ Destructor for this object class.
+ The default implementation emits the signal "[classsignal]destroyed[/classsignal]".
+ !fn: $name()
+ Returns the name of this object.
+ !fn: $parent()
+ Returns the parent object of this object or 0 if this object has no parent.
+ !fn: $timerEvent(<timerId>)
+ Handler for the timer events.
+ The default implementation does nothing.
+ See also [classfnc]$startTimer[/classfnc]()
+ and [classfnc]$killTimer[/classfnc]().
+ !fn: $startTimer(<timeout>)
+ Starts a builtin timer for this object and returns its timer id
+ as a string or '-1' if the <timeout> was invalid.
+ The [classfnc]$timerEvent[/classfnc]() handler function
+ will be called at each <timeout>. The <timeout> is in milliseconds.
+ !fn: $killTimer(<timer id>)
+ Stops the timer specified by <timer id>.
+ !fn: $killTimers()
+ Stops all the builtin timers running.
+ !fn: $className()
+ Returns the class name of this object instance
+ !fn: $findChild(<class>,<name>)
+ Returns the first child that matches <class> and <name>.
+ If <class> is an empty string, any class matches,
+ if <name> is an empty string, any name matches.
+ This function traverses the entire tree of children
+ but is NOT recursive.
+ !fn: $childCount()
+ Returns the number of children objects
+ !fn: $emit(<signal_name>[,parameters])
+ Emits the signal <signal_name> passing the optional [parameters].
+ See the [doc:objects]objects documentation[/doc] for an overview of signals and slots.
+ !fn: $children()
+ Returns an array of children object identifiers.
+ !fn: $signalSender()
+ Returns the current signal sender when in a slot connected to a signal.
+ In other contexts this function returns an empty string.
+ You can safely use it to test if the current function has been
+ triggered directly or from a signal emission.
+ !fn: $signalName()
+ Returns the name of the signal last signal that has triggered
+ one of this object's slots.
+ This means that in a slot handler it returns the name of the signal
+ that has triggered it.
+ !fn: $property(<Qt property name>[,bNowarning:boolean])
+ This is for really advanced scripting.[br]
+ All KVIrc widgets are based on the Qt library ones.[br]
+ The Qt library allow to set and read special properties.[br]
+ You will have to take a look at the Qt documentation for each widget type
+ to see the available property names.[br]
+ The supported property types are: Rect, Size, Point, Color, String, CString,
+ Int, UInt, Bool and enumeration types.[br]
+ For example, the widget's x coordinate can be retrieved by using the [classfnc]$x[/classfnc]()
+ function or by calling $property(x).[br]
+ There are many properties that are available ony through the [classfnc]$property()[classfnc]" call:[br]
+ For example, you can find out if the widget accepts drops by calling [classfnc]$property(acceptDrops)[classfnc].[br]
+ This function will be mainly useful in the [class]wrapper[/class] class.
+ !fn: $setProperty(<Qt property>,<property value>)
+ Sets a qt property for this widget.[br]
+ This is for advanced scripting, and can control really many features of the Qt widgets.[br]
+ For example, the [class]multilineedit[/class] widgets can be set to
+ the "password" echo mode only by using this function call:[br]
+ [example]
+ %X=$new(lineedit, 0, a_name)
+ %X->$show()
+ %X->$setProperty(echoMode,Password)
+ [/example]
+ The available properties to be set are listed by [classfnc]$listProperties[/classfnc]()[br]
+ and must appear in the list as writeable.[br]
+ This function will be mainly useful in the [class]wrapper[/class] class.
+ !fn: $listProperties([bArray])
+ Lists the properties of this object.[br]
+ If <bArray> is $true then the function returns the properties
+ as an array of descriptive strings, otherwise the properties are dumped to the
+ active window. If <bArray> is not passed then it is assumed to be $false.
+ This function will be mainly useful in the [class]wrapper[/class] class.
+ @signals:
+ !sg: destroyed()
+ Emitted by the default implementation of [classfnc]$destructor[/classfnc].
+ If you reimplement [classfnc]$destructor[/classfnc] in one of the derived
+ classes (or as a private implementation), and still want this signal
+ to be emitted you must emit it by yourself, or (better) call the base class
+ destructor.
+*/
+
+// we use a char * pointer just to store a number
+// we don't use void * just because incrementing a void pointer doesn't look that good
+static char * g_hNextObjectHandle = (char *)0;
+
+
+KviKvsObject::KviKvsObject(KviKvsObjectClass * pClass,KviKvsObject * pParent,const QString &szName)
+: QObject(pParent)
+{
+ if(g_hNextObjectHandle == 0)g_hNextObjectHandle++; // make sure it's never 0
+ m_hObject = (kvs_hobject_t)g_hNextObjectHandle;
+ g_hNextObjectHandle++;
+
+ m_pObject = 0;
+ m_bObjectOwner = true; // true by default
+
+ m_szName = szName;
+
+ m_pClass = pClass;
+
+ m_pChildList = new KviPointerList<KviKvsObject>;
+ m_pChildList->setAutoDelete(false);
+
+ m_pDataContainer = new KviKvsHash();
+
+ m_pFunctionHandlers = 0; // no local function handlers yet!
+
+ m_bInDelayedDeath = false;
+
+ m_pSignalDict = 0; // no signals connected to remote slots
+ m_pConnectionList = 0; // no local slots connected to remote signals
+
+ if(pParent)pParent->registerChild(this);
+
+ KviKvsKernel::instance()->objectController()->registerObject(this);
+
+// debug("Hello world!");
+// [root@localhost cvs3]# kvirc
+// Hello world!
+// [root@localhost cvs3]# date
+// Tue Sep 5 21:53:54 CEST 2000
+// [root@localhost cvs3]#
+
+// Ported to KVS on 29.04.2005
+}
+
+KviKvsObject::~KviKvsObject()
+{
+ m_bInDelayedDeath = true;
+
+ callFunction(this,"destructor");
+
+ while(m_pChildList->first())delete m_pChildList->first();
+ delete m_pChildList;
+
+#if 0
+ // Disconnect all the signals
+ if(m_pSignalDict)
+ {
+ KviPointerHashTableIterator<QString,KviKvsObjectConnectionList> it(*m_pSignalDict);
+
+ while(it.current())
+ {
+ KviKvsObjectConnectionListIterator cit(*(it.current()));
+ while(cit.current())
+ {
+ disconnectSignal(it.currentKey(),cit.current());
+ // ++cit // NO!...we point to the next now!
+ }
+ // the iterator should automatically point to the next now
+ //if(m_pSignalDict)++it;
+ }
+ }
+
+ // Disconnect all the slots
+ if(m_pConnectionList)
+ {
+ KviKvsObjectConnectionListIterator cit(*m_pConnectionList);
+ while(cit.current())
+ {
+ QString szSig = cit.current()->szSignal;
+ cit.current()->pSourceObject->disconnectSignal(szSig,cit.current());
+ //++cit;// NO!... we point to the next now!
+ }
+ }
+#else
+ // Disconnect all the signals
+ for(;;)
+ {
+ if(!m_pSignalDict)break;
+ KviPointerHashTableEntry<QString,KviKvsObjectConnectionList> * pSignalList = m_pSignalDict->firstEntry();
+ if(!pSignalList)break;
+ KviKvsObjectConnection * pConnection = pSignalList->data()->first();
+ if(!pConnection)break;
+ disconnectSignal(pSignalList->key(),pConnection);
+ }
+
+ // Disconnect all the slots
+ for(;;)
+ {
+ if(!m_pConnectionList)break;
+ KviKvsObjectConnection * pConnection = m_pConnectionList->first();
+ if(!pConnection)break;
+ QString szSignalCopy = pConnection->szSignal; // we need this since pConnection is deleted inside disconnectSignal() and pConnection->szSignal dies too (but is referenced after the connection delete)
+ pConnection->pSourceObject->disconnectSignal(szSignalCopy,pConnection);
+ }
+#endif
+
+ KviKvsKernel::instance()->objectController()->unregisterObject(this);
+
+ if(parentObject())parentObject()->unregisterChild(this);
+
+ if(m_pObject)
+ {
+ disconnect(m_pObject,SIGNAL(destroyed()),this,SLOT(objectDestroyed()));
+ if(m_bObjectOwner)delete m_pObject;
+ }
+
+ delete m_pDataContainer;
+ if(m_pFunctionHandlers)delete m_pFunctionHandlers;
+}
+
+bool KviKvsObject::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ return true;
+}
+
+QWidget * KviKvsObject::parentScriptWidget()
+{
+ if(parentObject())
+ {
+ if(parentObject()->object())
+ {
+ if(parentObject()->object()->isWidgetType())
+ return (QWidget *)(parentObject()->object());
+ }
+ }
+ return 0;
+}
+
+void KviKvsObject::unregisterChild(KviKvsObject *pChild)
+{
+ m_pChildList->removeRef(pChild);
+}
+
+void KviKvsObject::registerChild(KviKvsObject *pChild)
+{
+ m_pChildList->append(pChild);
+}
+
+// SIGNAL/SLOT stuff
+
+bool KviKvsObject::connectSignal(const QString &sigName,KviKvsObject * pTarget,const QString &slotName)
+{
+ if(!pTarget->lookupFunctionHandler(slotName))return false; // no such slot
+
+ if(!m_pSignalDict)
+ {
+ m_pSignalDict = new KviPointerHashTable<QString,KviKvsObjectConnectionList>(7,false);
+ m_pSignalDict->setAutoDelete(true);
+ }
+
+ KviKvsObjectConnectionList * l = m_pSignalDict->find(sigName);
+ if(!l)
+ {
+ l = new KviKvsObjectConnectionList;
+ l->setAutoDelete(true);
+ m_pSignalDict->insert(sigName,l);
+ }
+
+ KviKvsObjectConnection * con = new KviKvsObjectConnection;
+
+ con->pSourceObject = this;
+ con->pTargetObject = pTarget;
+ con->szSignal = sigName;
+ con->szSlot = slotName;
+
+ l->append(con);
+ pTarget->registerConnection(con);
+ return true;
+}
+
+void KviKvsObject::registerConnection(KviKvsObjectConnection *pConnection)
+{
+ if(!m_pConnectionList)
+ {
+ m_pConnectionList = new KviKvsObjectConnectionList;
+ m_pConnectionList->setAutoDelete(false);
+ }
+ m_pConnectionList->append(pConnection);
+}
+
+bool KviKvsObject::disconnectSignal(const QString &sigName,KviKvsObject * pTarget,const QString &slotName)
+{
+ if(!m_pSignalDict)return false; //no such signal to disconnect
+
+ KviKvsObjectConnectionList * l = m_pSignalDict->find(sigName);
+ if(!l)return false;
+
+ KviKvsObjectConnectionListIterator it(*l);
+
+ while(KviKvsObjectConnection * sl = it.current())
+ {
+ if(sl->pTargetObject == pTarget)
+ {
+ if(KviQString::equalCI(sl->szSlot,slotName))
+ {
+ pTarget->unregisterConnection(sl);
+ l->removeRef(sl);
+ if(l->isEmpty())m_pSignalDict->remove(sigName);
+ if(m_pSignalDict->isEmpty())
+ {
+ delete m_pSignalDict;
+ m_pSignalDict = 0;
+ }
+ return true;
+ }
+ }
+ ++it;
+ }
+ return false;
+}
+
+bool KviKvsObject::disconnectSignal(const QString &sigName,KviKvsObjectConnection * pConnection)
+{
+ if(!m_pSignalDict)return false;
+ KviKvsObjectConnectionList * l = m_pSignalDict->find(sigName);
+ //__range_valid(l);
+ if(!l)return false;
+ pConnection->pTargetObject->unregisterConnection(pConnection);
+ //__range_valid(l->findRef(pConnection) > -1);
+ l->removeRef(pConnection);
+ if(l->isEmpty())m_pSignalDict->remove(sigName);
+ if(m_pSignalDict->isEmpty())
+ {
+ delete m_pSignalDict;
+ m_pSignalDict = 0;
+ }
+ return true;
+}
+
+bool KviKvsObject::unregisterConnection(KviKvsObjectConnection * pConnection)
+{
+ if(!m_pConnectionList)return false;
+ bool bOk = m_pConnectionList->removeRef(pConnection); // no auto delete !
+ if(!bOk)return false;
+ if(m_pConnectionList->isEmpty())
+ {
+ delete m_pConnectionList;
+ m_pConnectionList = 0;
+ }
+ return true;
+}
+
+int KviKvsObject::emitSignal(const QString &sigName,KviKvsObjectFunctionCall * pOuterCall,KviKvsVariantList * pParams)
+{
+ if(!m_pSignalDict)return 0;
+
+ KviKvsObjectConnectionList * l = m_pSignalDict->find(sigName);
+ if(!l)return 0; // no slots registered
+
+ KviKvsVariant retVal;
+
+ // The objects we're going to disconnect
+ KviPointerList<KviKvsObjectConnection> * pDis = 0;
+
+ kvs_int_t emitted = 0;
+
+ KviKvsObjectConnectionListIterator it(*l);
+
+ while(KviKvsObjectConnection * s = it.current())
+ {
+ // save it , since s may be destroyed in the call!
+ KviKvsObject * pTarget = s->pTargetObject;
+
+ emitted++;
+
+ kvs_hobject_t hTarget = pTarget->handle();
+ kvs_hobject_t hOld = pTarget->signalSender();
+
+ pTarget->setSignalSender(m_hObject);
+ pTarget->setSignalName(sigName);
+
+ if(!pTarget->callFunction(this,s->szSlot,QString::null,pOuterCall->context(),&retVal,pParams))
+ {
+ if(KviKvsKernel::instance()->objectController()->lookupObject(hTarget) && it.current())
+ {
+ pOuterCall->warning(
+ __tr2qs("Broken slot '%Q' in target object '%Q::%Q' while emitting signal '%Q' from object '%Q::%Q': disconnecting"),
+ &(s->szSlot),
+ &(s->pTargetObject->getClass()->name()),
+ &(s->pTargetObject->getName()),
+ &(sigName),
+ &(getClass()->name()),
+ &m_szName);
+
+ if(!pDis)
+ {
+ pDis = new KviPointerList<KviKvsObjectConnection>;
+ pDis->setAutoDelete(false);
+ }
+ pDis->append(s);
+ } else {
+ // else destroyed in the call! (already disconnected)
+
+ pOuterCall->warning(
+ __tr2qs("Slot target object destroyed while emitting signal '%Q' from object '%Q::%Q'"),
+ &(sigName),
+ &(getClass()->name()),
+ &m_szName);
+ }
+ }
+
+ if(KviKvsKernel::instance()->objectController()->lookupObject(hTarget))
+ {
+ pTarget->setSignalSender(hOld);
+ }
+
+ ++it;
+ }
+
+ if(pDis)
+ {
+ // we have some signals to disconnect (because they're broken)
+ for(KviKvsObjectConnection * con = pDis->first();con;con = pDis->next())
+ disconnectSignal(sigName,con);
+ delete pDis;
+ }
+
+ return emitted;
+}
+
+bool KviKvsObject::function_name(KviKvsObjectFunctionCall * c)
+{
+ c->returnValue()->setString(getName());
+ return true;
+}
+
+bool KviKvsObject::function_parent(KviKvsObjectFunctionCall * c)
+{
+ KviKvsObject * o = parentObject();
+ c->returnValue()->setHObject(o ? o->handle() : (kvs_hobject_t)0);
+ return true;
+}
+
+bool KviKvsObject::function_className(KviKvsObjectFunctionCall * c)
+{
+ c->returnValue()->setString(getClass()->name());
+ return true;
+}
+
+bool KviKvsObject::function_childCount(KviKvsObjectFunctionCall * c)
+{
+ c->returnValue()->setInteger((kvs_int_t)(m_pChildList->count()));
+ return true;
+}
+
+bool KviKvsObject::function_signalSender(KviKvsObjectFunctionCall * c)
+{
+ c->returnValue()->setHObject(m_hSignalSender);
+ return true;
+}
+
+bool KviKvsObject::function_signalName(KviKvsObjectFunctionCall * c)
+{
+ c->returnValue()->setString(m_szSignalName);
+ return true;
+}
+
+bool KviKvsObject::function_destructor(KviKvsObjectFunctionCall * c)
+{
+ emitSignal("destroyed",c);
+ return true;
+}
+
+bool KviKvsObject::function_children(KviKvsObjectFunctionCall * c)
+{
+ KviKvsArray * a = new KviKvsArray();
+ int id=0;
+ for(KviKvsObject * o = m_pChildList->first();o;o = m_pChildList->next())
+ {
+ a->set(id,new KviKvsVariant(o->handle()));
+ id++;
+ }
+ c->returnValue()->setArray(a);
+ return true;
+}
+bool KviKvsObject::function_findChild(KviKvsObjectFunctionCall * c)
+{
+ QString szClass,szName;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("className",KVS_PT_STRING,KVS_PF_OPTIONAL,szClass)
+ KVSO_PARAMETER("objectName",KVS_PT_STRING,KVS_PF_OPTIONAL,szName)
+ KVSO_PARAMETERS_END(c)
+
+ KviKvsObject * o = findChild(szClass,szName);
+ c->returnValue()->setHObject(o ? o->handle() : (kvs_hobject_t)0);
+
+ return true;
+}
+
+bool KviKvsObject::function_emit(KviKvsObjectFunctionCall * c)
+{
+ QString szSignal;
+ KviKvsVariantList vList;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("signal",KVS_PT_NONEMPTYSTRING,0,szSignal)
+ KVSO_PARAMETER("params",KVS_PT_VARIANTLIST,KVS_PF_OPTIONAL,vList)
+ KVSO_PARAMETERS_END(c)
+
+ emitSignal(szSignal,c,&vList);
+ return true;
+}
+
+bool KviKvsObject::function_startTimer(KviKvsObjectFunctionCall * c)
+{
+ kvs_int_t timeout;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("timeout",KVS_PT_UINT,0,timeout)
+ KVSO_PARAMETERS_END(c)
+
+ c->returnValue()->setInteger((kvs_int_t)(startTimer(timeout)));
+ return true;
+}
+
+bool KviKvsObject::function_killTimer(KviKvsObjectFunctionCall * c)
+{
+ kvs_int_t id;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("timerId",KVS_PT_INT,0,id)
+ KVSO_PARAMETERS_END(c)
+ killTimer(id);
+ return true;
+}
+
+bool KviKvsObject::function_killTimers(KviKvsObjectFunctionCall * c)
+{
+ // FIXME: QT4 does not seem to have QObject::killTimers()
+#ifndef COMPILE_USE_QT4
+ killTimers();
+#endif
+ return true;
+}
+
+bool KviKvsObject::function_listProperties(KviKvsObjectFunctionCall * c)
+{
+ bool bArray;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bArray",KVS_PT_BOOL,KVS_PF_OPTIONAL,bArray)
+ KVSO_PARAMETERS_END(c)
+
+ c->returnValue()->setNothing();
+
+ KviKvsArray * a = bArray ? new KviKvsArray() : 0;
+
+ KviWindow * w = c->context()->window();
+
+ if(!bArray)
+ w->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Listing Qt properties for object named \"%Q\" of KVS class %Q"),&m_szName,&(m_pClass->name()));
+ kvs_int_t cnt = 0;
+ if(m_pObject)
+ {
+ const QMetaObject *o = m_pObject->metaObject();
+ if(!bArray)
+ w->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Properties for Qt class %s"),o->className());
+#ifndef COMPILE_USE_QT4
+ while(o)
+ {
+#endif
+ kvs_int_t idx = 0;
+ #ifdef COMPILE_USE_QT4
+ QMetaProperty prop = o->property(idx);
+ const QMetaProperty *p = &prop;
+ #else
+ const QMetaProperty *p = o->property(idx);
+ #endif
+
+ while(p)
+ {
+ QString szOut;
+ QString szName = p->name();
+ #ifdef COMPILE_USE_QT4
+ QString szType = p->typeName();
+ #else
+ QString szType = p->type();
+ #endif
+ if(bArray)
+ KviQString::sprintf(szOut,"%Q, %Q",&szName,&szType);
+ else {
+ KviQString::sprintf(szOut,__tr2qs("Property: %c%Q%c, type %Q"),KVI_TEXT_BOLD,&szName,KVI_TEXT_BOLD,&szType);
+ szOut.prepend(" ");
+ }
+
+ if(p->isEnumType())
+ {
+ szOut += ", enum(";
+#ifndef COMPILE_USE_QT4
+ // FIXME: Qt 4.x needs QMetaEnum for this loop
+ QStrList le = p->enumKeys();
+ int i = 0;
+ for(char *c2 = le.first(); c2; c2 = le.next())
+ {
+ if(i == 0)
+ i++;
+ else
+ szOut.append(", ");
+ szOut.append(c2);
+ }
+#endif
+ szOut += ")";
+ }
+
+
+#ifdef COMPILE_USE_QT4
+ // FIXME: QT4 Need to read better the docs and check the changes: there seem to be too many
+ // for me to fix now. Actually I need to get the whole executable working...
+ if(p->isWritable())szOut += ", writable";
+#else
+ if(p->isSetType())szOut += ", set";
+ if(p->writable())szOut += ", writable";
+#endif
+ if(bArray)
+ a->set(cnt,new KviKvsVariant(szOut));
+ else
+ w->outputNoFmt(KVI_OUT_SYSTEMMESSAGE,szOut);
+#ifdef COMPILE_USE_QT4
+ idx++;
+ if (idx<o->propertyCount()){
+ prop = o->property(idx);
+ p = &prop;
+ }
+ else p=0;
+#else
+ p = o->property(idx);
+ idx++;
+#endif
+
+ cnt++;
+ }
+#ifndef COMPILE_USE_QT4
+ o = o->superClass();
+ }
+#endif
+
+ }
+
+ if(bArray)
+ c->returnValue()->setArray(a);
+ else
+ w->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("%d properties listed"),cnt);
+ return true;
+}
+
+
+// rewritten using the new KVS features :)
+bool KviKvsObject::function_setProperty(KviKvsObjectFunctionCall * c)
+{
+ QString szName;
+ KviKvsVariant * v;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("propertyName",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSO_PARAMETER("propertyValue",KVS_PT_VARIANT,0,v)
+ KVSO_PARAMETERS_END(c)
+
+ c->returnValue()->setNothing();
+
+ if(!m_pObject)
+ {
+ // there are no Qt properties at all
+ c->warning(__tr2qs("The object named \"%Q\" of class %Q has no Qt properties"),&m_szName,&(m_pClass->name()));
+ return true;
+ }
+
+#ifdef COMPILE_USE_QT4
+ int idx = m_pObject->metaObject()->indexOfProperty(szName);
+#else
+ int idx = m_pObject->metaObject()->findProperty(szName,true);
+#endif
+ if(idx < 0)
+ {
+ c->warning(__tr2qs("No Qt property named \"%Q\" for object named \"%Q\" of class %Q"),&szName,&m_szName,&(m_pClass->name()));
+ return true;
+ }
+#ifdef COMPILE_USE_QT4
+ QMetaProperty prop = m_pObject->metaObject()->property(idx);
+ const QMetaProperty * p = &prop;
+#else
+ const QMetaProperty * p = m_pObject->metaObject()->property(idx,true);
+#endif
+ if(!p)
+ {
+ c->warning(__tr2qs("Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the property is indexed but it doesn't really exist"),&szName,&m_szName,&(m_pClass->name()));
+ return true;
+ }
+
+ QVariant vv = m_pObject->property(szName);
+ if(!vv.isValid())
+ {
+ c->warning(__tr2qs("Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the property is indexed and defined but the returned variant is not valid"),&szName,&m_szName,&(m_pClass->name()));
+ return true;
+ }
+
+ if(p->isEnumType())
+ {
+ QString szKey;
+ v->asString(szKey);
+#ifdef COMPILE_USE_QT4
+ int val = p->enumerator().keyToValue(szKey);
+#else
+ int val = p->keyToValue(szKey);
+#endif
+ QVariant var(val);
+ m_pObject->setProperty(szName,var);
+ return true;
+ }
+
+#define WRONG_TYPE(__therighttype) \
+ { \
+ c->warning(__tr2qs("The property is of type %s but the supplied argument can't be converted to that type (expecting \"%s\")"),p->type(),__therighttype); \
+ return true; \
+ }
+
+ switch(vv.type())
+ {
+ case QVariant::Int:
+ {
+ kvs_int_t i;
+ if(!v->asInteger(i))WRONG_TYPE("integer")
+ m_pObject->setProperty(szName,QVariant((int)i));
+ }
+ break;
+ case QVariant::UInt:
+ {
+ kvs_int_t i;
+ if(!v->asInteger(i))WRONG_TYPE("unsigned integer")
+ if(i < 0)WRONG_TYPE("unsigned integer")
+ m_pObject->setProperty(szName,QVariant((unsigned int)i));
+ }
+ break;
+ case QVariant::Bool:
+ m_pObject->setProperty(szName,QVariant(v->asBoolean()));
+ break;
+ case QVariant::String:
+ {
+ QString s;
+ v->asString(s);
+ m_pObject->setProperty(szName,QVariant(s));
+ }
+ break;
+ case QVariant::CString:
+ {
+ QString s;
+ v->asString(s);
+ m_pObject->setProperty(szName,QVariant(s.utf8()));
+ }
+ break;
+ case QVariant::Point:
+ {
+ if(!v->isArray())WRONG_TYPE("array(integer,integer)")
+ KviKvsArray * a = v->array();
+ KviKvsVariant * x = a->at(0);
+ KviKvsVariant * y = a->at(1);
+ if(!x || !y)WRONG_TYPE("array(integer,integer)")
+ kvs_int_t iX,iY;
+ if(!x->asInteger(iX) || !y->asInteger(iY))WRONG_TYPE("array(integer,integer)")
+ m_pObject->setProperty(szName,QVariant(QPoint(iX,iY)));
+ }
+ break;
+ case QVariant::Size:
+ {
+ if(!v->isArray())WRONG_TYPE("array(integer,integer)")
+ KviKvsArray * a = v->array();
+ KviKvsVariant * w = a->at(0);
+ KviKvsVariant * h = a->at(1);
+ if(!w || !h)WRONG_TYPE("array(integer,integer)")
+ kvs_int_t iW,iH;
+ if(!w->asInteger(iW) || !h->asInteger(iH))WRONG_TYPE("array(integer,integer)")
+ m_pObject->setProperty(szName,QVariant(QSize(iW,iH)));
+ }
+ break;
+ case QVariant::Rect:
+ {
+ if(!v->isArray())WRONG_TYPE("array(integer,integer,integer,integer)")
+ KviKvsArray * a = v->array();
+ KviKvsVariant * x = a->at(0);
+ KviKvsVariant * y = a->at(1);
+ KviKvsVariant * w = a->at(2);
+ KviKvsVariant * h = a->at(3);
+ if(!x || !y || !w || !h)WRONG_TYPE("array(integer,integer,integer,integer)")
+ kvs_int_t iX,iY,iW,iH;
+ if(!x->asInteger(iX) || !y->asInteger(iY) || !w->asInteger(iW) || !h->asInteger(iH))WRONG_TYPE("array(integer,integer,integer,integer)")
+ m_pObject->setProperty(szName,QVariant(QRect(iX,iY,iW,iH)));
+ }
+ break;
+#ifndef COMPILE_USE_QT4
+ // FIXME: QT4 ????
+ case QVariant::Color:
+ {
+ if(!v->isArray())WRONG_TYPE("array(integer,integer,integer)")
+ KviKvsArray * a = v->array();
+ KviKvsVariant * r = a->at(0);
+ KviKvsVariant * g = a->at(1);
+ KviKvsVariant * b = a->at(3);
+ if(!r || !g || !b)WRONG_TYPE("array(integer,integer,integer)")
+ kvs_int_t iR,iG,iB;
+ if(!r->asInteger(iR) || !g->asInteger(iG) || !b->asInteger(iB))WRONG_TYPE("array(integer,integer,integer)")
+ m_pObject->setProperty(szName,QVariant(QColor(iR,iG,iB)));
+ }
+ break;
+ case QVariant::Font:
+ {
+ if(!v->isArray())WRONG_TYPE("array(string,integer,string)")
+ KviKvsArray * a = v->array();
+ KviKvsVariant * ff = a->at(0);
+ KviKvsVariant * ps = a->at(1);
+ KviKvsVariant * fl = a->at(3);
+ if(!ff || !ps)WRONG_TYPE("array(string,integer,string)")
+ kvs_int_t iPs;
+ if(!ps->asInteger(iPs))WRONG_TYPE("array(string,integer,string)")
+ QString szFf,szFl;
+ ff->asString(szFf);
+ if(fl)fl->asString(szFl);
+ QFont fnt;
+ fnt.setFamily(szFf);
+ fnt.setPointSize(iPs);
+ if(szFl.find('b') != -1)fnt.setBold(true);
+ if(szFl.find('i') != -1)fnt.setItalic(true);
+ if(szFl.find('u') != -1)fnt.setUnderline(true);
+ if(szFl.find('o') != -1)fnt.setOverline(true);
+ if(szFl.find('f') != -1)fnt.setFixedPitch(true);
+ if(szFl.find('s') != -1)fnt.setStrikeOut(true);
+ m_pObject->setProperty(szName,QVariant(fnt));
+ }
+ break;
+ case QVariant::Pixmap:
+ case QVariant::IconSet:
+ {
+ if(v->isHObject())
+ {
+ if(v->hobject() == (kvs_hobject_t)0)
+ {
+ // null pixmap
+ if(vv.type() == QVariant::Pixmap)
+ m_pObject->setProperty(szName,QVariant(QPixmap()));
+ else
+ m_pObject->setProperty(szName,QVariant(QIconSet()));
+ } else {
+ KviKvsObject * pix = KviKvsKernel::instance()->objectController()->lookupObject(v->hobject());
+ if(!pix->inherits("KviScriptPixmapObject"))
+ c->warning(__tr2qs("A pixmap object, an image_id or an image file path is required for this property"));
+ else {
+ QVariant pixv = pix->property("pixmap");
+ if(vv.type() == QVariant::Pixmap)
+ m_pObject->setProperty(szName,pixv);
+ else
+ m_pObject->setProperty(szName,QVariant(QIconSet(pixv.toPixmap())));
+ }
+ }
+ } else {
+ QString szStr;
+ v->asString(szStr);
+ QPixmap * pPix = g_pIconManager->getImage(szStr);
+ if(pPix)
+ {
+ if(vv.type() == QVariant::Pixmap)
+ m_pObject->setProperty(szName,QVariant(*pPix));
+ else
+ m_pObject->setProperty(szName,QVariant(QIconSet(*pPix)));
+ }
+ else
+ c->warning(__tr2qs("Can't find the requested image"));
+ }
+ }
+ break;
+#endif
+ default:
+ c->warning(__tr2qs("Property \"%Q\" for object named \"%Q\" of class %Q has an unsupported data type"),&szName,&m_szName,&(m_pClass->name()));
+ c->returnValue()->setNothing();
+ break;
+ }
+ return true;
+}
+
+bool KviKvsObject::function_property(KviKvsObjectFunctionCall * c)
+{
+ QString szName;
+ bool bNoerror;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("propertyName",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSO_PARAMETER("bNowarning",KVS_PT_BOOL,KVS_PF_OPTIONAL,bNoerror)
+ KVSO_PARAMETERS_END(c)
+
+ if(!m_pObject)
+ {
+ // there are no Qt properties at all
+ if (bNoerror) c->returnValue()->setString("No Qt properties");
+ else
+ {
+ c->warning(__tr2qs("The object named \"%Q\" of class %Q has no Qt properties"),&m_szName,&(m_pClass->name()));
+ c->returnValue()->setNothing();
+ }
+ return true;
+ }
+
+#ifdef COMPILE_USE_QT4
+ int idx = m_pObject->metaObject()->indexOfProperty(szName);
+#else
+ int idx = m_pObject->metaObject()->findProperty(szName,true);
+#endif
+ if(idx < 0)
+ {
+ if (bNoerror) c->returnValue()->setString("No Qt properties");
+ else
+ {
+ c->warning(__tr2qs("No Qt property named \"%Q\" for object named \"%Q\" of class %Q"),&szName,&m_szName,&(m_pClass->name()));
+ c->returnValue()->setNothing();
+ }
+ return true;
+ }
+#ifdef COMPILE_USE_QT4
+ QMetaProperty prop = m_pObject->metaObject()->property(idx);
+ const QMetaProperty * p = &prop;
+#else
+ const QMetaProperty * p = m_pObject->metaObject()->property(idx,true);
+#endif
+ if(!p)
+ {
+ c->warning(__tr2qs("Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the property is indexed but it doesn't really exist"),&szName,&m_szName,&(m_pClass->name()));
+ c->returnValue()->setNothing();
+ return true;
+ }
+
+ QVariant v = m_pObject->property(szName);
+ if(!v.isValid())
+ {
+ c->warning(__tr2qs("Can't find property named \"%Q\" for object named \"%Q\" of class %Q: the property is indexed and defined but the returned variant is not valid"),&szName,&m_szName,&(m_pClass->name()));
+ c->returnValue()->setNothing();
+ return true;
+ }
+
+ if(p->isEnumType())
+ {
+#ifdef COMPILE_USE_QT4
+ c->returnValue()->setString(p->enumerator().valueToKey(v.toInt()));
+#else
+ c->returnValue()->setString(p->valueToKey(v.toInt()));
+#endif
+ return true;
+ }
+
+ switch(v.type())
+ {
+ case QVariant::Int:
+ c->returnValue()->setInteger((kvs_int_t)v.toInt());
+ break;
+ case QVariant::UInt:
+ c->returnValue()->setInteger((kvs_int_t)v.toUInt());
+ break;
+ case QVariant::Bool:
+ c->returnValue()->setBoolean(v.toBool());
+ break;
+ case QVariant::String:
+ c->returnValue()->setString(v.toString());
+ break;
+ case QVariant::CString:
+ c->returnValue()->setString(QString::fromUtf8(v.toCString().data()));
+ break;
+ case QVariant::Point:
+ {
+ QPoint p = v.toPoint();
+ KviKvsArray * a = new KviKvsArray();
+ a->set(0,new KviKvsVariant((kvs_int_t)p.x()));
+ a->set(1,new KviKvsVariant((kvs_int_t)p.y()));
+ c->returnValue()->setArray(a);
+ }
+ break;
+ case QVariant::Size:
+ {
+ QSize p = v.toSize();
+ KviKvsArray * a = new KviKvsArray();
+ a->set(0,new KviKvsVariant((kvs_int_t)p.width()));
+ a->set(1,new KviKvsVariant((kvs_int_t)p.height()));
+ c->returnValue()->setArray(a);
+ }
+ break;
+ case QVariant::Rect:
+ {
+ QRect p = v.toRect();
+ KviKvsArray * a = new KviKvsArray();
+ a->set(0,new KviKvsVariant((kvs_int_t)p.x()));
+ a->set(1,new KviKvsVariant((kvs_int_t)p.y()));
+ a->set(2,new KviKvsVariant((kvs_int_t)p.width()));
+ a->set(3,new KviKvsVariant((kvs_int_t)p.height()));
+ c->returnValue()->setArray(a);
+ }
+ break;
+#ifndef COMPILE_USE_QT4
+ // FIXME: QT4 ?
+ case QVariant::Color:
+ {
+ QColor clr = v.toColor();
+ KviKvsArray * a = new KviKvsArray();
+ a->set(0,new KviKvsVariant((kvs_int_t)clr.red()));
+ a->set(1,new KviKvsVariant((kvs_int_t)clr.green()));
+ a->set(2,new KviKvsVariant((kvs_int_t)clr.blue()));
+ c->returnValue()->setArray(a);
+ }
+ break;
+ case QVariant::Font:
+ {
+ QFont f = v.toFont();
+ KviKvsArray * a = new KviKvsArray();
+ a->set(0,new KviKvsVariant(f.family()));
+ a->set(1,new KviKvsVariant((kvs_int_t)f.pointSize()));
+ QString szFlags;
+ if(f.bold())szFlags += "b";
+ if(f.underline())szFlags += "u";
+ if(f.overline())szFlags += "o";
+ if(f.strikeOut())szFlags += "s";
+ if(f.fixedPitch())szFlags += "f";
+ if(f.italic())szFlags += "i";
+ a->set(2,new KviKvsVariant(szFlags));
+ c->returnValue()->setString(szFlags);
+ }
+ break;
+#endif
+ default:
+ if (bNoerror) c->returnValue()->setString("Unsupported_data_type");
+ else
+ {
+ c->warning(__tr2qs("Property \"%Q\" for object named \"%Q\" of class %Q has an unsupported data type"),&szName,&m_szName,&(m_pClass->name()));
+ c->returnValue()->setNothing();
+ }
+ break;
+ }
+ return true;
+}
+
+void KviKvsObject::killAllChildrenWithClass(KviKvsObjectClass *cl)
+{
+ KviPointerList<KviKvsObject> l;
+ l.setAutoDelete(true);
+ for(KviKvsObject * o=m_pChildList->first();o;o=m_pChildList->next())
+ {
+ if(o->getClass() == cl)
+ {
+ l.append(o);
+ } else o->killAllChildrenWithClass(cl);
+ }
+}
+
+bool KviKvsObject::inheritsClass(KviKvsObjectClass * pClass)
+{
+ if(pClass == m_pClass)return true;
+ KviKvsObjectClass * cl = m_pClass->m_pParentClass;
+ while(cl)
+ {
+ if(cl == pClass)return true;
+ else cl = cl->m_pParentClass;
+ }
+ return false;
+}
+
+KviKvsObjectClass * KviKvsObject::getClass(const QString & classOverride)
+{
+ if(classOverride.isEmpty())return m_pClass;
+ KviKvsObjectClass * cl = m_pClass; // class override can be also THIS class
+ // if object->$function() is a local override, class::object->$function()
+ // is the class member function (not the local override)
+ while(cl)
+ {
+ if(KviQString::equalCI(cl->name(),classOverride))break;
+ else cl = cl->m_pParentClass;
+ }
+ return cl;
+}
+
+KviKvsObjectFunctionHandler * KviKvsObject::lookupFunctionHandler(const QString & funcName,const QString & classOverride)
+{
+ KviKvsObjectFunctionHandler * h = 0;
+
+ if(classOverride.isEmpty() && m_pFunctionHandlers)
+ {
+ // lookup the local overrides
+ h = m_pFunctionHandlers->find(funcName);
+ }
+
+ if(!h)
+ {
+ // not a local override function... lookup in the class
+ KviKvsObjectClass * cl = getClass(classOverride);
+ if(cl)return cl->lookupFunctionHandler(funcName);
+ }
+
+ return h;
+}
+
+
+bool KviKvsObject::die()
+{
+ if(m_bInDelayedDeath)return false;
+ m_bInDelayedDeath = true;
+ QTimer::singleShot(0,this,SLOT(delayedDie()));
+ return true;
+}
+
+bool KviKvsObject::dieNow()
+{
+ if(m_bInDelayedDeath)return false;
+ m_bInDelayedDeath = true;
+ delete this;
+ return true;
+}
+
+void KviKvsObject::delayedDie()
+{
+ delete this; // byez!
+}
+
+void KviKvsObject::setObject(QObject * o,bool bIsOwned)
+{
+ //__range_invalid(m_pObject);
+ m_bObjectOwner = bIsOwned;
+ m_pObject = o;
+ o->installEventFilter(this);
+ connect(m_pObject,SIGNAL(destroyed()),this,SLOT(objectDestroyed()));
+}
+
+void KviKvsObject::objectDestroyed()
+{
+ m_pObject = 0;
+ die();
+}
+
+bool KviKvsObject::eventFilter(QObject *o,QEvent *e)
+{
+ return false; // do not stop
+}
+
+void KviKvsObject::timerEvent(QTimerEvent *e)
+{
+ KviKvsVariant * v = new KviKvsVariant();
+ v->setInteger(e->timerId());
+ KviKvsVariantList parms(v);
+
+ callFunction(this,"timerEvent",&parms);
+}
+
+bool KviKvsObject::callFunction(KviKvsObject * pCaller,const QString &fncName,KviKvsVariant * pRetVal,KviKvsVariantList * pParams)
+{
+ KviKvsVariant rv;
+ if(!pRetVal)pRetVal = &rv;
+ KviKvsRunTimeContext ctx(0,g_pApp->activeConsole(),KviKvsKernel::instance()->emptyParameterList(),pRetVal,0);
+ if(!pParams)pParams = KviKvsKernel::instance()->emptyParameterList();
+ return callFunction(pCaller,fncName,QString::null,&ctx,pRetVal,pParams);
+}
+
+
+bool KviKvsObject::callFunction(KviKvsObject * pCaller,const QString &fncName,KviKvsVariantList * pParams)
+{
+ KviKvsVariant fakeRetVal;
+ return callFunction(pCaller,fncName,&fakeRetVal,pParams);
+}
+
+bool KviKvsObject::callFunction(
+ KviKvsObject * pCaller,
+ const QString & fncName,
+ const QString & classOverride,
+ KviKvsRunTimeContext * pContext,
+ KviKvsVariant * pRetVal,
+ KviKvsVariantList * pParams)
+{
+ KviKvsObjectFunctionHandler * h = lookupFunctionHandler(fncName,classOverride);
+
+ if(!h)
+ {
+ if(classOverride.isEmpty())
+ pContext->error(__tr2qs("Cannot find object function $%Q for object named \"%Q\" of class %Q"),&fncName,&m_szName,&(getClass()->name()));
+ else
+ pContext->error(__tr2qs("Cannot find object function $%Q::%Q for object named \"%Q\" of class %Q"),&classOverride,&fncName,&m_szName,&(getClass()->name()));
+ return false;
+ }
+
+ if(h->flags() & KviKvsObjectFunctionHandler::Internal)
+ {
+ if(pCaller != this)
+ {
+ pContext->error(__tr2qs("Cannot call internal object function $%Q (for object named \"%Q\" of class %Q) from this context"),&fncName,&m_szName,&(getClass()->name()));
+ return false;
+ }
+ }
+
+ KviKvsObjectFunctionCall fc(pContext,pParams,pRetVal);
+
+ return h->call(this,&fc);
+
+ // Not only gcc spits out compiler errors:
+ // 25.09.2001 , at this point in file
+
+ // c:\programmi\microsoft visual studio\myprojects\kvirc3\src\kvirc\uparser\kvi_scriptobject.cpp(1234) : fatal error C1001: INTERNAL COMPILER ERROR
+ // (compiler file 'E:\8168\vc98\p2\src\P2\main.c', line 494)
+ // Please choose the Technical Support command on the Visual C++
+ // Help menu, or open the Technical Support help file for more information
+}
+
+
+
+void KviKvsObject::registerPrivateImplementation(const QString &szFunctionName,const QString &szCode)
+{
+ if(szCode.isEmpty())
+ {
+ if(m_pFunctionHandlers)
+ {
+ m_pFunctionHandlers->remove(szFunctionName);
+ if(m_pFunctionHandlers->isEmpty())
+ {
+ delete m_pFunctionHandlers;
+ m_pFunctionHandlers = 0;
+ }
+ }
+ } else {
+ if(!m_pFunctionHandlers)
+ {
+ m_pFunctionHandlers = new KviPointerHashTable<QString,KviKvsObjectFunctionHandler>(7,false);
+ m_pFunctionHandlers->setAutoDelete(true);
+ }
+
+ QString szContext = m_pClass->name();
+ szContext += "[privateimpl]::";
+ szContext += szFunctionName;
+
+ m_pFunctionHandlers->replace(szFunctionName,new KviKvsObjectScriptFunctionHandler(szContext,szCode));
+ }
+}
+
+
+KviKvsObject * KviKvsObject::findChild(const QString &szClass,const QString &szName)
+{
+ for(KviKvsObject * o = m_pChildList->first();o;o= m_pChildList->next())
+ {
+ if(szClass.isEmpty())
+ {
+ // any class matches
+ if(szName.isEmpty())return o; // any name matches
+ // name must match
+ if(KviQString::equalCI(szName,o->name()))return o;
+ } else {
+ if(KviQString::equalCI(szClass,o->getClass()->name()))
+ {
+ if(szName.isEmpty())return o; // any name matches
+ // name must match
+ if(KviQString::equalCI(szName,o->name()))return o;
+ }
+ }
+ KviKvsObject * c = o->findChild(szClass,szName);
+ if(c)return c;
+ }
+ return 0;
+}
+
+
diff --git a/src/kvirc/kvs/kvi_kvs_object.h b/src/kvirc/kvs/kvi_kvs_object.h
new file mode 100644
index 00000000..7cd64682
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_object.h
@@ -0,0 +1,192 @@
+#ifndef _KVI_KVS_OBJECT_H_
+#define _KVI_KVS_OBJECT_H_
+//=============================================================================
+//
+// File : kvi_kvs_object.h
+// Created on Wed 08 Oct 2003 02:31:57 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_pointerlist.h"
+#include "kvi_kvs_runtimecall.h"
+#include "kvi_kvs_parameterprocessor.h"
+#include "kvi_kvs_object_functionhandler.h"
+#include "kvi_kvs_types.h"
+
+#include <qobject.h>
+
+
+class KviKvsObjectFunctionCall;
+
+typedef struct _KviKvsObjectConnection
+{
+ KviKvsObject * pSourceObject; // source object (owner of the struct)
+ KviKvsObject * pTargetObject; // target object
+ QString szSignal; // source signal name
+ QString szSlot; // target slot function
+} KviKvsObjectConnection;
+
+typedef KviPointerList<KviKvsObjectConnection> KviKvsObjectConnectionList;
+typedef KviPointerListIterator<KviKvsObjectConnection> KviKvsObjectConnectionListIterator;
+
+class KVIRC_API KviKvsObject : public QObject
+{
+ friend class KviKvsObjectController;
+ friend class KviKvsObjectClass;
+ Q_OBJECT
+public:
+ KviKvsObject(KviKvsObjectClass * pClass,KviKvsObject * pParent,const QString &szName);
+ virtual ~KviKvsObject();
+protected:
+ // main data
+ QString m_szName; // object name
+ kvs_hobject_t m_hObject; // global object handle
+ KviKvsObjectClass * m_pClass; // the class definition
+
+ KviKvsHash * m_pDataContainer; // member variables
+
+ KviPointerList<KviKvsObject> * m_pChildList;
+
+ KviPointerHashTable<QString,KviKvsObjectFunctionHandler> * m_pFunctionHandlers; // our function handlers
+
+ KviPointerHashTable<QString,KviKvsObjectConnectionList> * m_pSignalDict; // our signals connected to other object functions
+
+ KviKvsObjectConnectionList * m_pConnectionList; // signals connected to this object functions
+
+ // this is valid when processing one of our slots
+ kvs_hobject_t m_hSignalSender;
+ QString m_szSignalName;
+
+ // if this object wraps a qt one, it is here
+ QObject * m_pObject;
+ bool m_bObjectOwner; // do we have to destroy it ?
+
+ // internal stuff for die()
+ bool m_bInDelayedDeath;
+public:
+ kvs_hobject_t handle(){ return m_hObject; };
+
+ // the wrapped Qt object (may be 0!)
+ QObject * object() const { return m_pObject; };
+ void setObject(QObject * o,bool bIsOwned = true);
+
+ const QString & getName(){ return m_szName; };
+
+ KviKvsObject * parentObject(){ return (KviKvsObject *)parent(); };
+ QWidget * parentScriptWidget();
+
+ bool connectSignal(const QString &sigName,KviKvsObject * target,const QString &slotName);
+ bool disconnectSignal(const QString &sigName,KviKvsObjectConnection * con);
+ bool disconnectSignal(const QString &sigName,KviKvsObject * target,const QString & slotName);
+
+ // Emits a signal by calling all the attacched slots in an unspecified order.
+ // Returns the number of slots called (may be 0, if no slot is connected)
+ // The parameters are preserved.
+ // this is intended to be called from other function calls (the parameters are copied from pOuterCall)
+ // since we should NEVER emit totally spontaneous signals: all of them
+ // should be generated inside object functions (either from scripting or by core calls)
+ int emitSignal(const QString &sigName,KviKvsObjectFunctionCall * pOuterCall,KviKvsVariantList * pParams = 0);
+
+ void setSignalSender(kvs_hobject_t hObject){ m_hSignalSender = hObject; };
+ kvs_hobject_t signalSender(){ return m_hSignalSender; };
+ void setSignalName(const QString &szSigName){ m_szSignalName = szSigName; };
+
+ KviPointerHashTable<QString,KviKvsObjectFunctionHandler> * functionHandlers(){ return m_pFunctionHandlers; };
+
+ KviKvsHash * dataContainer(){ return m_pDataContainer; };
+
+ bool die();
+ bool dieNow();
+
+ KviKvsObjectClass * getExactClass(){ return m_pClass; };
+ KviKvsObjectClass * getClass(const QString & classOverride = QString::null);
+ bool inheritsClass(KviKvsObjectClass * pClass);
+ KviKvsObjectFunctionHandler * lookupFunctionHandler(const QString & funcName,const QString & classOverride = QString::null);
+
+ // Registers a private implementation of a function
+ // The function may or may not be already registered in the class
+ // If szCode is empty the the private implementation is removed instead
+ void registerPrivateImplementation(const QString &szFunctionName,const QString &szCode);
+
+ // ONLY pCaller can be zero here!
+ // please use one of the wrappers, if possible
+ bool callFunction(
+ KviKvsObject * pCaller, // calling object, can be zero (used for the "internal" access list verification)
+ const QString & fncName, // name of the function to call
+ const QString & classOverride, // eventual class override for the functon call, may be QString::null
+ KviKvsRunTimeContext * pContext, // calling runtime context (you'll have problems with instantiating this... :P )
+ KviKvsVariant * pRetVal, // the return value
+ KviKvsVariantList * pParams); // the parameters for the call
+ // a nice and simple wrapper: it accepts a parameter list only (eventually 0)
+ bool callFunction(KviKvsObject * pCaller,const QString &fncName,KviKvsVariantList * pParams = 0);
+ // this one gets a non null ret val too
+ bool callFunction(KviKvsObject * pCaller,const QString &fncName,KviKvsVariant * pRetVal,KviKvsVariantList * pParams = 0);
+
+ KviKvsObject * findChild(const QString &szClass,const QString &szName);
+ void killAllChildrenWithClass(KviKvsObjectClass *cl);
+protected:
+ void registerConnection(KviKvsObjectConnection * con);
+ bool unregisterConnection(KviKvsObjectConnection * con);
+
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+ void registerChild(KviKvsObject * c);
+ void unregisterChild(KviKvsObject *c);
+
+ virtual bool eventFilter(QObject *o,QEvent *e); //necessary ?
+ virtual void timerEvent(QTimerEvent *e);
+protected:
+ bool function_name(KviKvsObjectFunctionCall *c);
+ bool function_startTimer(KviKvsObjectFunctionCall *c);
+ bool function_killTimer(KviKvsObjectFunctionCall *c);
+ bool function_killTimers(KviKvsObjectFunctionCall *c);
+ bool function_className(KviKvsObjectFunctionCall *c);
+ bool function_findChild(KviKvsObjectFunctionCall *c);
+ bool function_childCount(KviKvsObjectFunctionCall *c);
+ bool function_emit(KviKvsObjectFunctionCall *c);
+ bool function_children(KviKvsObjectFunctionCall *c);
+ bool function_signalSender(KviKvsObjectFunctionCall *c);
+ bool function_signalName(KviKvsObjectFunctionCall *c);
+ bool function_destructor(KviKvsObjectFunctionCall *c);
+ bool function_parent(KviKvsObjectFunctionCall *c);
+ bool function_property(KviKvsObjectFunctionCall *c);
+ bool function_setProperty(KviKvsObjectFunctionCall *c);
+ bool function_listProperties(KviKvsObjectFunctionCall *c);
+protected slots:
+ void delayedDie();
+ void objectDestroyed();
+};
+
+
+#define KVSO_PARAMETER(a,b,c,d) KVS_PARAMETER(a,b,c,d)
+
+#define KVSO_PARAMETERS_BEGIN(pCall) \
+ KVS_PARAMETERS_BEGIN(parameter_format_list)
+
+#define KVSO_PARAMETERS_END(pCall) \
+ KVS_PARAMETERS_END \
+ if(!KviKvsParameterProcessor::process(pCall->params(),pCall->context(),parameter_format_list))return false;
+
+
+
+
+#endif //!_KVI_KVS_OBJECT_H_
diff --git a/src/kvirc/kvs/kvi_kvs_object_class.cpp b/src/kvirc/kvs/kvi_kvs_object_class.cpp
new file mode 100644
index 00000000..312fcb46
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_object_class.cpp
@@ -0,0 +1,234 @@
+//=============================================================================
+//
+// File : kvi_kvs_objectclass.cpp
+// Created on Sat 23 Apr 2005 20:31:32 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_object_class.h"
+#include "kvi_kvs_object_controller.h"
+#include "kvi_kvs_object.h"
+#include "kvi_kvs_kernel.h"
+#include "kvi_kvs_object_functionhandlerimpl.h"
+#include "kvi_kvs_object_functioncall.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_kvs_variantlist.h"
+#include "kvi_kvs_script.h"
+#include "kvi_fileutils.h"
+#include "kvi_window.h"
+#include "kvi_cmdformatter.h"
+
+KviKvsObjectClass::KviKvsObjectClass(
+ KviKvsObjectClass * pParent,
+ const QString &szName,
+ KviKvsObjectAllocateInstanceProc pProc,
+ bool bBuiltin)
+{
+ m_pParentClass = pParent;
+ if(m_pParentClass)
+ m_pParentClass->registerChildClass(this);
+ m_szName = szName;
+ m_bBuiltin = bBuiltin;
+ m_bDirty = !bBuiltin;
+ m_pFunctionHandlers = new KviPointerHashTable<QString,KviKvsObjectFunctionHandler>(17,false);
+ m_pFunctionHandlers->setAutoDelete(true);
+ m_pChildClasses = new KviPointerList<KviKvsObjectClass>;
+ m_pChildClasses->setAutoDelete(false);
+ m_allocProc = pProc ? pProc : pParent->m_allocProc;
+
+ // inherit everything from the class above
+ if(pParent)
+ {
+ KviPointerHashTableIterator<QString,KviKvsObjectFunctionHandler> it(*(pParent->functionHandlers()));
+ while(KviKvsObjectFunctionHandler * fh = it.current())
+ {
+ m_pFunctionHandlers->insert(it.currentKey(),fh->clone());
+ ++it;
+ }
+ }
+
+ // "object" class is automatically registered in the controller constructor
+ KviKvsKernel::instance()->objectController()->registerClass(this);
+}
+
+KviKvsObjectClass::~KviKvsObjectClass()
+{
+ // order here is critical
+
+ // first of all kill our child classes
+ while(m_pChildClasses->first())delete m_pChildClasses->first();
+ // then kill all objects that belong to our class
+ KviKvsKernel::instance()->objectController()->killAllObjectsWithClass(this);
+ // now we're quite clean: should have no object depending on us alive
+ // unregister from the parent, if any
+ if(m_pParentClass)m_pParentClass->unregisterChildClass(this);
+ // unregister from the object controller
+ KviKvsKernel::instance()->objectController()->unregisterClass(this);
+ // and start effectively dying
+ delete m_pFunctionHandlers;
+ // this is empty now
+ delete m_pChildClasses;
+}
+
+void KviKvsObjectClass::registerFunctionHandler(const QString & szFunctionName,KviKvsObjectFunctionHandlerProc pProc,unsigned int uFlags)
+{
+ m_pFunctionHandlers->replace(szFunctionName,new KviKvsObjectCoreCallFunctionHandler(pProc,uFlags));
+}
+
+void KviKvsObjectClass::registerFunctionHandler(const QString & szFunctionName,const QString &szBuffer,unsigned int uFlags)
+{
+ QString szContext = m_szName;
+ szContext += "::";
+ szContext += szFunctionName;
+ m_pFunctionHandlers->replace(szFunctionName,new KviKvsObjectScriptFunctionHandler(szContext,szBuffer,uFlags));
+}
+
+void KviKvsObjectClass::registerStandardNothingReturnFunctionHandler(const QString &szFunctionName)
+{
+ m_pFunctionHandlers->replace(szFunctionName,new KviKvsObjectStandardNothingReturnFunctionHandler());
+}
+
+void KviKvsObjectClass::registerStandardTrueReturnFunctionHandler(const QString &szFunctionName)
+{
+ m_pFunctionHandlers->replace(szFunctionName,new KviKvsObjectStandardTrueReturnFunctionHandler());
+}
+
+void KviKvsObjectClass::registerStandardFalseReturnFunctionHandler(const QString &szFunctionName)
+{
+ m_pFunctionHandlers->replace(szFunctionName,new KviKvsObjectStandardFalseReturnFunctionHandler());
+}
+
+
+KviKvsObject * KviKvsObjectClass::allocateInstance(KviKvsObject * pParent,const QString &szName,KviKvsRunTimeContext * pContext,KviKvsVariantList * pParams)
+{
+ if(!m_allocProc)return 0;
+ KviKvsObject * pObject = m_allocProc(this,pParent,szName);
+ if(!pObject)return 0;
+
+ KviKvsVariant * v=pParams->first(); // FIXME: what the hell is this ?
+ if(!pObject->init(pContext,pParams))
+ {
+ // internal init failure : abort
+ delete pObject;
+ return 0;
+ }
+
+ KviKvsVariant ret;
+ KviKvsVariantList copy;
+ copy.setAutoDelete(false);
+ while(v)
+ {
+ copy.append(v);
+ v = pParams->next();
+ }
+
+ if(!pObject->callFunction(pObject,"constructor",QString::null,pContext,&ret,&copy))
+ {
+ // ops...constructor failed (script error!)
+ delete pObject;
+ return 0;
+ } else {
+ if(ret.isInteger())
+ {
+ if(ret.integer() == 0)
+ {
+ // implementation failure...
+ delete pObject;
+ return 0;
+ }
+ } else if(ret.isHObject())
+ {
+ if(ret.hobject() == (kvs_hobject_t)0)
+ {
+ // implementation failure...
+ delete pObject;
+ return 0;
+ }
+ }
+ }
+
+ return pObject;
+}
+
+void KviKvsObjectClass::registerChildClass(KviKvsObjectClass *pClass)
+{
+ m_pChildClasses->append(pClass);
+}
+
+void KviKvsObjectClass::unregisterChildClass(KviKvsObjectClass *pClass)
+{
+ m_pChildClasses->removeRef(pClass);
+}
+
+bool KviKvsObjectClass::save(const QString &szFileName)
+{
+ if(!m_pParentClass)return false;
+ if(isBuiltin())return false;
+
+
+ QString szBuffer;
+ QString szParentName = m_pParentClass->name();
+
+ KviQString::sprintf(szBuffer,
+ "# Automatically generated KVS class dump\n\n" \
+ "class(\"%Q\",\"%Q\")\n" \
+ "{\n",
+ &m_szName,&szParentName);
+
+ KviPointerHashTableIterator<QString,KviKvsObjectFunctionHandler> it(*m_pFunctionHandlers);
+
+ while(KviKvsObjectFunctionHandler * h = it.current())
+ {
+ if(h->isScriptHandler())
+ {
+ szBuffer += " ";
+ if(h->flags() & KviKvsObjectFunctionHandler::Internal)
+ szBuffer += "internal ";
+ szBuffer += "function ";
+ szBuffer += it.currentKey();
+ szBuffer += "()\n";
+ QString szCode = h->scriptHandlerCode();
+ KviCommandFormatter::blockFromBuffer(szCode);
+ KviCommandFormatter::indent(szCode);
+ szBuffer += szCode;
+ szBuffer += "\n";
+ }
+ ++it;
+ }
+
+ szBuffer += "}\n";
+
+ return KviFileUtils::writeFile(szFileName,szBuffer);
+}
+void KviKvsObjectClass::getFunctionCode(QString &szCode,KviKvsObjectFunctionHandler &h)
+{
+ szCode=h.scriptHandlerCode();
+}
+
+
+
+bool KviKvsObjectClass::load(const QString &szFileName)
+{
+ QString szBuffer;
+ if(!KviFileUtils::readFile(szFileName,szBuffer,0xffffff))return false;
+ return KviKvsScript::run(szBuffer,g_pActiveWindow);
+}
diff --git a/src/kvirc/kvs/kvi_kvs_object_class.h b/src/kvirc/kvs/kvi_kvs_object_class.h
new file mode 100644
index 00000000..44b093a1
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_object_class.h
@@ -0,0 +1,102 @@
+#ifndef _KVI_KVS_OBJECTCLASS_H_
+#define _KVI_KVS_OBJECTCLASS_H_
+//=============================================================================
+//
+// File : kvi_kvs_objectclass.h
+// Created on Sat 23 Apr 2005 20:31:32 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_pointerlist.h"
+
+#include "kvi_pointerhashtable.h"
+
+#include "kvi_kvs_object_functionhandler.h"
+
+class KviKvsObject;
+class KviKvsObjectClass;
+class KviKvsRunTimeContext;
+class KviKvsVariantList;
+
+// Object allocation function
+// parameters are: the class, the parent object (eventually 0), the object name (eventually empty)
+typedef KviKvsObject * (*KviKvsObjectAllocateInstanceProc)(KviKvsObjectClass *,KviKvsObject *,const QString &);
+
+// An object function callback
+typedef bool (KviKvsObject::*KviKvsObjectFunctionHandlerProc)(KviKvsObjectFunctionCall * pCall);
+
+
+// The descriptor of a kvirc object class
+
+class KVIRC_API KviKvsObjectClass
+{
+ friend class KviKvsObject;
+ friend class KviKvsObjectController;
+public:
+ KviKvsObjectClass(
+ KviKvsObjectClass * pParent, // parent class
+ const QString & szName, // class name
+ KviKvsObjectAllocateInstanceProc proc, // intance allocation proc
+ bool bBuiltin = true // this is a builtin or script based class ?
+ );
+ ~KviKvsObjectClass();
+protected:
+ KviKvsObjectClass * m_pParentClass; // the parent (base) class
+ QString m_szName; // the class name
+ bool m_bBuiltin; // is this a builtin or script based class ?
+ KviPointerHashTable<QString,KviKvsObjectFunctionHandler> * m_pFunctionHandlers; // all our function handlers
+ KviPointerList<KviKvsObjectClass> * m_pChildClasses; //
+ KviKvsObjectAllocateInstanceProc m_allocProc;
+ bool m_bDirty; // not yet flushed to disk (only for not builtin classes)
+protected:
+ void registerChildClass(KviKvsObjectClass *pClass);
+ void unregisterChildClass(KviKvsObjectClass *pClass);
+ KviPointerHashTable<QString,KviKvsObjectFunctionHandler> * functionHandlers(){ return m_pFunctionHandlers; };
+public:
+ void clearDirtyFlag(){ m_bDirty = false; };
+ bool isDirty(){ return m_bDirty; };
+ bool isBuiltin(){ return m_bBuiltin; };
+ const QString & name(){ return m_szName; };
+ KviKvsObjectClass * parentClass(){ return m_pParentClass; };
+ // pProc CAN'T be zero here!
+ void registerFunctionHandler(const QString & szFunctionName,KviKvsObjectFunctionHandlerProc pProc,unsigned int uFlags = 0);
+ void registerFunctionHandler(const QString & szFunctionName,const QString &szBuffer,unsigned int uFlags = 0);
+
+ // registers an empty handler that returns "nothing"
+ void registerStandardNothingReturnFunctionHandler(const QString & szFunc);
+ // retisters an empty handler that returns $true
+ void registerStandardTrueReturnFunctionHandler(const QString & szFunc);
+ // retisters an empty handler that returns $false
+ void registerStandardFalseReturnFunctionHandler(const QString & szFunc);
+
+ KviKvsObjectFunctionHandler * lookupFunctionHandler(const QString & szFunc){ return m_pFunctionHandlers->find(szFunc); };
+ KviKvsObject * allocateInstance(KviKvsObject * pParent,const QString &szName,KviKvsRunTimeContext * pContext,KviKvsVariantList * pParams);
+
+ bool save(const QString &szFileName);
+ static bool load(const QString &szFileName);
+ void getFunctionCode(QString &szCode,KviKvsObjectFunctionHandler &h);
+ KviPointerHashTable<QString,KviKvsObjectFunctionHandler> * getHandlers(){return m_pFunctionHandlers;};
+
+};
+
+
+#endif //!_KVI_KVS_OBJECTCLASS_H_
diff --git a/src/kvirc/kvs/kvi_kvs_object_controller.cpp b/src/kvirc/kvs/kvi_kvs_object_controller.cpp
new file mode 100644
index 00000000..c13b068c
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_object_controller.cpp
@@ -0,0 +1,229 @@
+//=============================================================================
+//
+// File : kvi_kvs_object_controller.cpp
+// Created on Sun 24 Apr 2005 05:23:04 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005-2006 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_object_controller.h"
+#include "kvi_modulemanager.h"
+#include "kvi_fileutils.h"
+#include "kvi_app.h"
+
+////////////////////////////////////////////////////////////////////////////////////////
+
+static KviKvsObject * objectClassCreateInstance(KviKvsObjectClass *pClass,KviKvsObject *pParent,const QString &szName)
+{
+ return new KviKvsObject(pClass,pParent,szName);
+}
+
+////////////////////////////////////////////////////////////////////////////////////////
+
+KviKvsObjectController::KviKvsObjectController()
+{
+ m_pTopLevelObjectList = new KviPointerList<KviKvsObject>;
+ m_pTopLevelObjectList->setAutoDelete(false);
+ m_pObjectDict = new KviPointerHashTable<void *,KviKvsObject>(101);
+ m_pObjectDict->setAutoDelete(false);
+ m_pClassDict = new KviPointerHashTable<QString,KviKvsObjectClass>(31,false);
+ m_pClassDict->setAutoDelete(false);
+}
+
+KviKvsObjectController::~KviKvsObjectController()
+{
+ flushUserClasses();
+ while(m_pTopLevelObjectList->first())delete m_pTopLevelObjectList->first();
+ delete m_pTopLevelObjectList; // empty list
+ delete m_pObjectDict; // empty dict
+ m_pObjectDict = 0;
+ delete m_pObjectClass; // delete the class tree
+ delete m_pClassDict; // empty dict
+}
+
+void KviKvsObjectController::init()
+{
+ // allocate the "object" builtin class
+ // this is the only one that is always in core memory
+ m_pObjectClass = new KviKvsObjectClass(0,"object",objectClassCreateInstance,true);
+
+ m_pObjectClass->registerFunctionHandler("name",KVI_PTR2MEMBER(KviKvsObject::function_name));
+ m_pObjectClass->registerFunctionHandler("startTimer",KVI_PTR2MEMBER(KviKvsObject::function_startTimer));
+ m_pObjectClass->registerFunctionHandler("killTimer",KVI_PTR2MEMBER(KviKvsObject::function_killTimer));
+ m_pObjectClass->registerFunctionHandler("killTimers",KVI_PTR2MEMBER(KviKvsObject::function_killTimers));
+ m_pObjectClass->registerFunctionHandler("className",KVI_PTR2MEMBER(KviKvsObject::function_className));
+ m_pObjectClass->registerFunctionHandler("findChild",KVI_PTR2MEMBER(KviKvsObject::function_findChild));
+ m_pObjectClass->registerFunctionHandler("childCount",KVI_PTR2MEMBER(KviKvsObject::function_childCount));
+ m_pObjectClass->registerFunctionHandler("emit",KVI_PTR2MEMBER(KviKvsObject::function_emit));
+ m_pObjectClass->registerFunctionHandler("children",KVI_PTR2MEMBER(KviKvsObject::function_children));
+ m_pObjectClass->registerFunctionHandler("signalSender",KVI_PTR2MEMBER(KviKvsObject::function_signalSender));
+ m_pObjectClass->registerFunctionHandler("signalName",KVI_PTR2MEMBER(KviKvsObject::function_signalName));
+ m_pObjectClass->registerFunctionHandler("destructor",KVI_PTR2MEMBER(KviKvsObject::function_destructor));
+ m_pObjectClass->registerFunctionHandler("parent",KVI_PTR2MEMBER(KviKvsObject::function_parent));
+ m_pObjectClass->registerFunctionHandler("property",KVI_PTR2MEMBER(KviKvsObject::function_property));
+ m_pObjectClass->registerFunctionHandler("setProperty",KVI_PTR2MEMBER(KviKvsObject::function_setProperty));
+ m_pObjectClass->registerFunctionHandler("listProperties",KVI_PTR2MEMBER(KviKvsObject::function_listProperties));
+
+ m_pObjectClass->registerStandardNothingReturnFunctionHandler("constructor");
+ m_pObjectClass->registerStandardNothingReturnFunctionHandler("timerEvent");
+
+ m_pClassDict->insert("object",m_pObjectClass);
+}
+
+void KviKvsObjectController::killAllObjectsWithClass(KviKvsObjectClass * pClass)
+{
+ if(!m_pObjectDict)return; // no more objects at all...
+ KviPointerList<KviKvsObject> l;
+ l.setAutoDelete(true);
+
+ for(KviKvsObject * o = m_pTopLevelObjectList->first();o;o = m_pTopLevelObjectList->next())
+ {
+ if(o->getClass() == pClass)l.append(o);
+ else o->killAllChildrenWithClass(pClass);
+ }
+}
+
+void KviKvsObjectController::clearUserClasses()
+{
+ flushUserClasses();
+ KviPointerHashTableIterator<QString,KviKvsObjectClass> it(*m_pClassDict);
+ KviPointerList<KviKvsObjectClass> l;
+ l.setAutoDelete(true);
+ while(it.current())
+ {
+ if(!(it.current()->isBuiltin()))
+ {
+ l.append(it.current());
+ }
+ ++it;
+ }
+}
+
+void KviKvsObjectController::clearInstances()
+{
+ while(m_pTopLevelObjectList->first())delete m_pTopLevelObjectList->first();
+ delete m_pTopLevelObjectList; // empty list
+ delete m_pObjectDict; // empty dict
+ m_pTopLevelObjectList = new KviPointerList<KviKvsObject>;
+ m_pTopLevelObjectList->setAutoDelete(false);
+ m_pObjectDict = new KviPointerHashTable<void *,KviKvsObject>(101);
+ m_pObjectDict->setAutoDelete(false);
+}
+
+void KviKvsObjectController::registerClass(KviKvsObjectClass *pClass)
+{
+ m_pClassDict->insert(pClass->name(),pClass);
+}
+
+void KviKvsObjectController::unregisterClass(KviKvsObjectClass *pClass)
+{
+ if(!pClass->isBuiltin())
+ {
+ if(pClass->isDirty())flushUserClasses();
+ }
+ m_pClassDict->remove(pClass->name());
+}
+
+void KviKvsObjectController::registerObject(KviKvsObject *pObject)
+{
+ m_pObjectDict->insert(pObject->handle(),pObject);
+ if(pObject->parent() == 0)m_pTopLevelObjectList->append(pObject);
+}
+
+void KviKvsObjectController::unregisterObject(KviKvsObject *pObject)
+{
+ m_pObjectDict->remove(pObject->handle());
+ if(pObject->parent() == 0)m_pTopLevelObjectList->removeRef(pObject);
+}
+
+void KviKvsObjectController::flushUserClasses()
+{
+ KviPointerHashTableIterator<QString,KviKvsObjectClass> it(*m_pClassDict);
+ while(KviKvsObjectClass * c = it.current())
+ {
+ if(!c->isBuiltin())
+ {
+ if(c->isDirty())
+ {
+ QString szPath;
+ QString szFileName = c->name().lower();
+ szFileName += ".kvs";
+ szFileName.replace("::","--");
+ g_pApp->getLocalKvircDirectory(szPath,KviApp::Classes,szFileName);
+ if(c->save(szPath))
+ c->clearDirtyFlag();
+ else
+ debug("Oops.. failed to save the object class %s",c->name().latin1());
+ }
+ }
+ ++it;
+ }
+}
+
+KviKvsObjectClass * KviKvsObjectController::lookupClass(const QString &szClass,bool bBuiltinOnly)
+{
+ KviKvsObjectClass * pC = m_pClassDict->find(szClass);
+ if(!pC)
+ {
+ // maybe we need to load the object library ?
+ KviModule * pModule = g_pModuleManager->getModule("objects");
+ if(!pModule)
+ {
+ debug("ops...something wrong with the libkviobjects module!");
+ return 0;
+ } else pC = m_pClassDict->find(szClass);
+ if(!pC)
+ {
+ if(bBuiltinOnly)return 0;
+ // maybe we need to load it from permanent storage...
+ QString szPath;
+ QString szFileName = szClass.lower();
+ szFileName += ".kvs";
+ szFileName.replace("::","--");
+ g_pApp->getLocalKvircDirectory(szPath,KviApp::Classes,szFileName);
+ if(!KviFileUtils::fileExists(szPath))
+ g_pApp->getGlobalKvircDirectory(szPath,KviApp::Classes,szFileName);
+ if(!KviFileUtils::fileExists(szPath))return 0;
+ if(!KviKvsObjectClass::load(szPath))return 0;
+ pC = m_pClassDict->find(szClass);
+ if(pC)pC->clearDirtyFlag(); // just loaded from disk: no need to sync it
+ }
+ } else {
+ if(bBuiltinOnly)
+ {
+ if(!pC->isBuiltin())return 0;
+ }
+ }
+ return pC;
+};
+
+
+void KviKvsObjectController::deleteClass(KviKvsObjectClass * pClass)
+{
+ QString szPath;
+ QString szFileName = pClass->name().lower();
+ szFileName += ".kvs";
+ szFileName.replace("::","--");
+ g_pApp->getLocalKvircDirectory(szPath,KviApp::Classes,szFileName);
+ KviFileUtils::removeFile(szPath);
+ delete pClass;
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_object_controller.h b/src/kvirc/kvs/kvi_kvs_object_controller.h
new file mode 100644
index 00000000..3df0daad
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_object_controller.h
@@ -0,0 +1,70 @@
+#ifndef _KVI_KVS_OBJECT_CONTROLLER_H_
+#define _KVI_KVS_OBJECT_CONTROLLER_H_
+//=============================================================================
+//
+// File : kvi_kvs_object_controller.h
+// Created on Sun 24 Apr 2005 05:23:04 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "kvi_settings.h"
+
+#include "kvi_qstring.h"
+#include "kvi_pointerlist.h"
+
+#include "kvi_pointerhashtable.h"
+#include "kvi_pointerhashtable.h"
+
+#include "kvi_kvs_object.h"
+#include "kvi_kvs_object_class.h"
+
+class KVIRC_API KviKvsObjectController
+{
+ friend class KviKvsObject;
+ friend class KviKvsObjectClass;
+public:
+ KviKvsObjectController();
+ ~KviKvsObjectController();
+protected:
+ KviPointerList<KviKvsObject> * m_pTopLevelObjectList;
+ KviPointerHashTable<void *,KviKvsObject> * m_pObjectDict;
+ KviPointerHashTable<QString,KviKvsObjectClass> * m_pClassDict;
+ KviKvsObjectClass * m_pObjectClass; //base class
+protected:
+ // the classes and the objects register themselves with the controller
+ void registerObject(KviKvsObject *pObject);
+ void unregisterObject(KviKvsObject *pObject);
+ void registerClass(KviKvsObjectClass *pClass);
+ void unregisterClass(KviKvsObjectClass *pClass);
+public:
+ void init();
+ void deleteClass(KviKvsObjectClass * pClass);
+ void clearInstances();
+ void clearUserClasses();
+ void flushUserClasses();
+ void killAllObjectsWithClass(KviKvsObjectClass * pClass);
+ KviKvsObjectClass * lookupClass(const QString &szClass,bool bBuiltinOnly = false);
+ KviKvsObject * lookupObject(kvs_hobject_t hObject){ return m_pObjectDict->find(hObject); };
+ KviPointerHashTable<void *,KviKvsObject> * objectDict(){ return m_pObjectDict; };
+ KviPointerHashTable<QString,KviKvsObjectClass> * classDict(){ return m_pClassDict; };
+};
+
+#endif //!_KVI_KVS_OBJECT_CONTROLLER_H_
diff --git a/src/kvirc/kvs/kvi_kvs_object_functioncall.cpp b/src/kvirc/kvs/kvi_kvs_object_functioncall.cpp
new file mode 100644
index 00000000..35143a60
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_object_functioncall.cpp
@@ -0,0 +1,28 @@
+//=============================================================================
+//
+// File : kvi_kvs_object_functioncall.cpp
+// Created on Sun 24 Apr 2005 04:05:54 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_object_functioncall.h"
+
diff --git a/src/kvirc/kvs/kvi_kvs_object_functioncall.h b/src/kvirc/kvs/kvi_kvs_object_functioncall.h
new file mode 100644
index 00000000..a5a87f5c
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_object_functioncall.h
@@ -0,0 +1,49 @@
+#ifndef _KVI_KVS_OBJECT_FUNCTIONCALL_H_
+#define _KVI_KVS_OBJECT_FUNCTIONCALL_H_
+//=============================================================================
+//
+// File : kvi_kvs_object_functioncall.h
+// Created on Sun 24 Apr 2005 04:05:54 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include "kvi_kvs_runtimecall.h"
+#include "kvi_kvs_variantlist.h"
+#include "kvi_kvs_variant.h"
+
+
+class KVIRC_API KviKvsObjectFunctionCall : public KviKvsRunTimeCall
+{
+protected:
+ KviKvsVariant * m_pResult;
+public:
+ KviKvsObjectFunctionCall(KviKvsRunTimeContext * pContext,
+ KviKvsVariantList * pParams,
+ KviKvsVariant * pResult)
+ : KviKvsRunTimeCall(pContext,pParams), m_pResult(pResult)
+ {};
+ ~KviKvsObjectFunctionCall(){};
+public:
+ KviKvsVariant * returnValue(){ return m_pResult; };
+};
+
+#endif //!_KVI_KVS_OBJECT_FUNCTIONCALL_H_
diff --git a/src/kvirc/kvs/kvi_kvs_object_functionhandler.cpp b/src/kvirc/kvs/kvi_kvs_object_functionhandler.cpp
new file mode 100644
index 00000000..9dbf541c
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_object_functionhandler.cpp
@@ -0,0 +1,50 @@
+//=============================================================================
+//
+// File : kvi_kvs_object_functionhandler.cpp
+// Created on Sat 23 Apr 2005 21:53:23 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_object_functionhandler.h"
+
+KviKvsObjectFunctionHandler::KviKvsObjectFunctionHandler(unsigned int uFlags)
+: m_uFlags(uFlags)
+{
+}
+
+KviKvsObjectFunctionHandler::~KviKvsObjectFunctionHandler()
+{
+}
+
+bool KviKvsObjectFunctionHandler::isScriptHandler()
+{
+ return false;
+}
+
+QString KviKvsObjectFunctionHandler::scriptHandlerCode()
+{
+ return QString::null;
+}
+
+
+
+
diff --git a/src/kvirc/kvs/kvi_kvs_object_functionhandler.h b/src/kvirc/kvs/kvi_kvs_object_functionhandler.h
new file mode 100644
index 00000000..6b241e28
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_object_functionhandler.h
@@ -0,0 +1,57 @@
+#ifndef _KVI_KVS_OBJECT_FUNCTIONHANDLER_H_
+#define _KVI_KVS_OBJECT_FUNCTIONHANDLER_H_
+//=============================================================================
+//
+// File : kvi_kvs_object_functionhandler.h
+// Created on Sat 23 Apr 2005 21:53:23 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+
+class KviKvsObjectClass;
+class KviKvsObjectFunctionCall;
+class KviKvsObject;
+
+
+class KVIRC_API KviKvsObjectFunctionHandler
+{
+ friend class KviKvsObject;
+ friend class KviKvsObjectClass;
+public:
+ enum Flags { Internal = 1 };
+protected:
+ unsigned int m_uFlags;
+protected:
+ KviKvsObjectFunctionHandler(unsigned int uFlags = 0);
+public:
+ virtual ~KviKvsObjectFunctionHandler();
+public:
+ unsigned int flags(){ return m_uFlags; };
+protected:
+ virtual bool isScriptHandler();
+ virtual QString scriptHandlerCode();
+ virtual KviKvsObjectFunctionHandler * clone() = 0;
+ virtual bool call(KviKvsObject * pObject,KviKvsObjectFunctionCall * pCall) = 0;
+};
+
+
+#endif //!_KVI_KVS_OBJECT_FUNCTIONHANDLER_H_
diff --git a/src/kvirc/kvs/kvi_kvs_object_functionhandlerimpl.cpp b/src/kvirc/kvs/kvi_kvs_object_functionhandlerimpl.cpp
new file mode 100644
index 00000000..77c41019
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_object_functionhandlerimpl.cpp
@@ -0,0 +1,148 @@
+//=============================================================================
+//
+// File : kvi_kvs_object_functionhandlerimpl.cpp
+// Created on Sun 24 Apr 2005 04:01:14 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_object_functionhandlerimpl.h"
+#include "kvi_kvs_object_functioncall.h"
+#include "kvi_kvs_script.h"
+
+
+
+KviKvsObjectFunctionHandler * KviKvsObjectStandardTrueReturnFunctionHandler::clone()
+{
+ return new KviKvsObjectStandardTrueReturnFunctionHandler();
+}
+
+bool KviKvsObjectStandardTrueReturnFunctionHandler::call(KviKvsObject * pObject,KviKvsObjectFunctionCall * pCall)
+{
+ pCall->returnValue()->setBoolean(true);
+ return true;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+KviKvsObjectFunctionHandler * KviKvsObjectStandardFalseReturnFunctionHandler::clone()
+{
+ return new KviKvsObjectStandardFalseReturnFunctionHandler();
+}
+
+bool KviKvsObjectStandardFalseReturnFunctionHandler::call(KviKvsObject * pObject,KviKvsObjectFunctionCall * pCall)
+{
+ pCall->returnValue()->setBoolean(false);
+ return true;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+KviKvsObjectFunctionHandler * KviKvsObjectStandardNothingReturnFunctionHandler::clone()
+{
+ return new KviKvsObjectStandardNothingReturnFunctionHandler();
+}
+
+bool KviKvsObjectStandardNothingReturnFunctionHandler::call(KviKvsObject * pObject,KviKvsObjectFunctionCall * pCall)
+{
+ pCall->returnValue()->setNothing();
+ return true;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+KviKvsObjectCoreCallFunctionHandler::KviKvsObjectCoreCallFunctionHandler(KviKvsObjectFunctionHandlerProc pProc,unsigned int uFlags)
+: KviKvsObjectFunctionHandler(uFlags)
+{
+ m_pProc = pProc;
+}
+
+KviKvsObjectCoreCallFunctionHandler::KviKvsObjectCoreCallFunctionHandler(const KviKvsObjectCoreCallFunctionHandler &h)
+: KviKvsObjectFunctionHandler(h.m_uFlags)
+{
+ m_pProc = h.m_pProc;
+}
+
+KviKvsObjectCoreCallFunctionHandler::~KviKvsObjectCoreCallFunctionHandler()
+{
+}
+
+KviKvsObjectFunctionHandler * KviKvsObjectCoreCallFunctionHandler::clone()
+{
+ return new KviKvsObjectCoreCallFunctionHandler(*this);
+}
+
+bool KviKvsObjectCoreCallFunctionHandler::call(KviKvsObject * pObject,KviKvsObjectFunctionCall * pCall)
+{
+ // Actually m_pProc can't be 0: if it's zero then it's a BUG and should be traced down: we just crash
+ //if(m_pProc)
+ return (pObject->*m_pProc)(pCall);
+ //else {
+ // empty handler
+ //pCall->returnValue()->setNothing();
+ //return true;
+ //}
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+KviKvsObjectScriptFunctionHandler::KviKvsObjectScriptFunctionHandler(const QString &szScriptContext,const QString &szCode,unsigned int uFlags)
+: KviKvsObjectFunctionHandler(uFlags)
+{
+ m_pHandler = new KviKvsScript(szScriptContext,szCode,KviKvsScript::InstructionList);
+}
+
+KviKvsObjectScriptFunctionHandler::KviKvsObjectScriptFunctionHandler(const KviKvsObjectScriptFunctionHandler &h)
+: KviKvsObjectFunctionHandler(h.m_uFlags)
+{
+ // ref
+ m_pHandler = new KviKvsScript(*(h.m_pHandler));
+}
+
+KviKvsObjectScriptFunctionHandler::~KviKvsObjectScriptFunctionHandler()
+{
+ delete m_pHandler;
+}
+
+bool KviKvsObjectScriptFunctionHandler::isScriptHandler()
+{
+ return true;
+}
+
+QString KviKvsObjectScriptFunctionHandler::scriptHandlerCode()
+{
+ return m_pHandler->code();
+}
+
+
+
+
+KviKvsObjectFunctionHandler * KviKvsObjectScriptFunctionHandler::clone()
+{
+ return new KviKvsObjectScriptFunctionHandler(*this);
+}
+
+bool KviKvsObjectScriptFunctionHandler::call(KviKvsObject * pObject,KviKvsObjectFunctionCall * pCall)
+{
+ KviKvsExtendedRunTimeData rd(pObject);
+ return m_pHandler->run(pCall->window(),pCall->params(),pCall->returnValue(),KviKvsScript::PreserveParams,&rd);
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_object_functionhandlerimpl.h b/src/kvirc/kvs/kvi_kvs_object_functionhandlerimpl.h
new file mode 100644
index 00000000..37f506a9
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_object_functionhandlerimpl.h
@@ -0,0 +1,115 @@
+#ifndef _KVI_KVS_OBJECT_FUNCTIONHANDLERIMPL_H_
+#define _KVI_KVS_OBJECT_FUNCTIONHANDLERIMPL_H_
+//=============================================================================
+//
+// File : kvi_kvs_object_functionhandlerimpl.h
+// Created on Sun 24 Apr 2005 04:01:14 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "kvi_settings.h"
+#include "kvi_kvs_object.h"
+#include "kvi_kvs_object_class.h"
+#include "kvi_kvs_object_functionhandler.h"
+#include "kvi_qstring.h"
+
+class KviKvsObjectClass;
+class KviKvsScript;
+class KviKvsObjectFunctionCall;
+
+
+class KVIRC_API KviKvsObjectCoreCallFunctionHandler : public KviKvsObjectFunctionHandler
+{
+ friend class KviKvsObject;
+ friend class KviKvsObjectClass;
+protected:
+ KviKvsObjectCoreCallFunctionHandler(KviKvsObjectFunctionHandlerProc pProc,unsigned int uFlags = 0);
+ KviKvsObjectCoreCallFunctionHandler(const KviKvsObjectCoreCallFunctionHandler &h);
+public:
+ virtual ~KviKvsObjectCoreCallFunctionHandler();
+protected:
+ KviKvsObjectFunctionHandlerProc m_pProc;
+protected:
+ virtual KviKvsObjectFunctionHandler * clone();
+ virtual bool call(KviKvsObject * pObject,KviKvsObjectFunctionCall * pCall);
+};
+
+class KVIRC_API KviKvsObjectScriptFunctionHandler : public KviKvsObjectFunctionHandler
+{
+ friend class KviKvsObject;
+ friend class KviKvsObjectClass;
+protected:
+ KviKvsObjectScriptFunctionHandler(const QString &szScriptContext,const QString &szCode,unsigned int uFlags = 0);
+ KviKvsObjectScriptFunctionHandler(const KviKvsObjectScriptFunctionHandler &h);
+public:
+ virtual ~KviKvsObjectScriptFunctionHandler();
+protected:
+ KviKvsScript * m_pHandler;
+protected:
+ virtual bool isScriptHandler();
+ virtual QString scriptHandlerCode();
+ virtual KviKvsObjectFunctionHandler * clone();
+ virtual bool call(KviKvsObject * pObject,KviKvsObjectFunctionCall * pCall);
+};
+
+class KVIRC_API KviKvsObjectStandardTrueReturnFunctionHandler : public KviKvsObjectFunctionHandler
+{
+ friend class KviKvsObject;
+ friend class KviKvsObjectClass;
+protected:
+ KviKvsObjectStandardTrueReturnFunctionHandler()
+ : KviKvsObjectFunctionHandler() {};
+public:
+ virtual ~KviKvsObjectStandardTrueReturnFunctionHandler(){};
+protected:
+ virtual KviKvsObjectFunctionHandler * clone();
+ virtual bool call(KviKvsObject * pObject,KviKvsObjectFunctionCall * pCall);
+};
+
+class KVIRC_API KviKvsObjectStandardFalseReturnFunctionHandler : public KviKvsObjectFunctionHandler
+{
+ friend class KviKvsObject;
+ friend class KviKvsObjectClass;
+protected:
+ KviKvsObjectStandardFalseReturnFunctionHandler()
+ : KviKvsObjectFunctionHandler() {};
+public:
+ virtual ~KviKvsObjectStandardFalseReturnFunctionHandler(){};
+protected:
+ virtual KviKvsObjectFunctionHandler * clone();
+ virtual bool call(KviKvsObject * pObject,KviKvsObjectFunctionCall * pCall);
+};
+
+class KVIRC_API KviKvsObjectStandardNothingReturnFunctionHandler : public KviKvsObjectFunctionHandler
+{
+ friend class KviKvsObject;
+ friend class KviKvsObjectClass;
+protected:
+ KviKvsObjectStandardNothingReturnFunctionHandler()
+ : KviKvsObjectFunctionHandler() {};
+public:
+ virtual ~KviKvsObjectStandardNothingReturnFunctionHandler(){};
+protected:
+ virtual KviKvsObjectFunctionHandler * clone();
+ virtual bool call(KviKvsObject * pObject,KviKvsObjectFunctionCall * pCall);
+};
+
+#endif //!_KVI_KVS_OBJECT_FUNCTIONHANDLERIMPL_H_
diff --git a/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp b/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp
new file mode 100644
index 00000000..fdd0639f
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_parameterprocessor.cpp
@@ -0,0 +1,371 @@
+//=============================================================================
+//
+// File : kvi_kvs_parameterprocessor.cpp
+// Created on Sun 17 Apr 2005 16:47:09 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_parameterprocessor.h"
+#include "kvi_kvs_variantlist.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_kvs_variantlist.h"
+#include "kvi_kvs_array.h"
+#include "kvi_kvs_arraycast.h"
+#include "kvi_kvs_hash.h"
+#include "kvi_kvs_object.h"
+
+#include "kvi_qstring.h"
+#include "kvi_locale.h"
+#include "kvi_pointerlist.h"
+
+
+#include <qstringlist.h>
+
+namespace KviKvsParameterProcessor
+{
+ void setDefaultValue(KviKvsParameterProcessor::ParameterFormat * pFmtArray)
+ {
+#ifdef COMPILE_NEW_KVS
+ switch(pFmtArray->uType)
+ {
+ case KVS_PT_STRING:
+ case KVS_PT_NONEMPTYSTRING:
+ *((QString *)(pFmtArray->pContainer)) = QString::null;
+ break;
+ case KVS_PT_INT:
+ *((kvs_int_t *)(pFmtArray->pContainer)) = 0;
+ break;
+ case KVS_PT_UINT:
+ *((kvs_uint_t *)(pFmtArray->pContainer)) = 0;
+ break;
+ case KVS_PT_DOUBLE:
+ *((kvs_real_t *)(pFmtArray->pContainer)) = 0.0;
+ break;
+ case KVS_PT_BOOL:
+ *((bool *)(pFmtArray->pContainer)) = false;
+ break;
+ case KVS_PT_HASH:
+ *((KviKvsHash **)(pFmtArray->pContainer)) = 0;
+ break;
+ case KVS_PT_ARRAY:
+ *((KviKvsArray **)(pFmtArray->pContainer)) = 0;
+ break;
+ case KVS_PT_ARRAYCAST:
+ ((KviKvsArrayCast *)(pFmtArray->pContainer))->clear();
+ break;
+ case KVS_PT_VARIANT:
+ *((KviKvsVariant **)(pFmtArray->pContainer)) = 0;
+ break;
+ case KVS_PT_CSTRING:
+ case KVS_PT_NONEMPTYCSTRING:
+ *((KviQCString *)(pFmtArray->pContainer)) = 0;
+ break;
+ case KVS_PT_STRINGLIST:
+ ((QStringList *)(pFmtArray->pContainer))->clear();
+ break;
+ case KVS_PT_VARIANTLIST:
+ ((KviKvsVariantList *)(pFmtArray->pContainer))->clear();
+ ((KviKvsVariantList *)(pFmtArray->pContainer))->setAutoDelete(false);
+ break;
+ case KVS_PT_HOBJECT:
+ *((kvs_hobject_t *)(pFmtArray->pContainer)) = (kvs_hobject_t)0;
+ break;
+ case KVS_PT_IGNORE:
+ // ignore :)
+ break;
+ default:
+ debug("Internal error in KviKvsParameterProcessor::setDefaultValue(): unknown parameter type %d",pFmtArray->uType);
+ break;
+ }
+#endif
+ }
+
+ bool handleParameterTypeError(KviKvsRunTimeContext * pContext,KviKvsParameterProcessor::ParameterFormat * pFmtArray,KviKvsVariant * v,const char * szExpectedType)
+ {
+ if(pFmtArray->uFlags & KVS_PF_OPTIONAL)
+ {
+ if(v->isEmpty())
+ {
+ setDefaultValue(pFmtArray);
+ return true; // empty optional
+ }
+ }
+
+ QString szError;
+ KviQString::sprintf(szError,__tr2qs("Invalid data type for parameter \"%s\""),pFmtArray->szName);
+ szError += ": ";
+
+ if(v->isString())
+ {
+ QString tmp = v->string();
+ if(tmp.isEmpty())
+ {
+ KviQString::appendFormatted(szError,__tr2qs("found empty string where type '%s' was expected"),&tmp,szExpectedType);
+ } else {
+ if(tmp.length() > 15)
+ {
+ tmp.truncate(15);
+ tmp.append("...");
+ }
+ KviQString::appendFormatted(szError,__tr2qs("found string value \"%Q\" where type '%s' was expected"),&tmp,szExpectedType);
+ }
+ } else {
+ QString tmp;
+ v->getTypeName(tmp);
+ KviQString::appendFormatted(szError,__tr2qs("found type %Q where type '%s' was expected"),&tmp,szExpectedType);
+ }
+ pContext->error(szError);
+ return false;
+ }
+
+ bool process(KviKvsVariantList * pVariantList,KviKvsRunTimeContext * pContext,KviKvsParameterProcessor::ParameterFormat * pFmtArray)
+ {
+ KviKvsVariant * v = pVariantList->first();
+
+ while(pFmtArray->szName)
+ {
+ if(!v)
+ {
+ // parameter not present
+ // it MUST be optional
+ if(!(pFmtArray->uFlags & KVS_PF_OPTIONAL))
+ {
+ // bad luck
+ QString szError;
+ KviQString::sprintf(szError,__tr2qs("Missing non-optional parameter \"%s\""),pFmtArray->szName);
+ pContext->error(szError);
+ return false;
+ }
+ // ok, missing but optional (all the following are implicitly optional too)
+ // set to default values
+ do {
+ setDefaultValue(pFmtArray);
+ pFmtArray++;
+ } while(pFmtArray->szName);
+ return true;
+ }
+ // here we do only "light" casts: hard ones must be done explicitly by the user
+ switch(pFmtArray->uType)
+ {
+ case KVS_PT_STRING:
+ v->asString(*((QString *)(pFmtArray->pContainer)));
+ if(pFmtArray->uFlags & KVS_PF_APPENDREMAINING)
+ {
+ v = pVariantList->next();
+ while(v)
+ {
+ *((QString *)(pFmtArray->pContainer)) += QChar(' ');
+ v->appendAsString(*((QString *)(pFmtArray->pContainer)));
+ v = pVariantList->next();
+ }
+ return true;
+ }
+ break;
+ case KVS_PT_STRINGLIST:
+ {
+ ((QStringList *)(pFmtArray->pContainer))->clear();
+ QString pSz;
+ v->asString(pSz);
+ ((QStringList *)(pFmtArray->pContainer))->append(pSz);
+ v = pVariantList->next();
+ while(v)
+ {
+ v->asString(pSz);
+ ((QStringList *)(pFmtArray->pContainer))->append(pSz);
+ v = pVariantList->next();
+ }
+ return true;
+ }
+ break;
+ case KVS_PT_VARIANTLIST:
+ {
+ ((KviKvsVariantList *)(pFmtArray->pContainer))->clear();
+ ((KviKvsVariantList *)(pFmtArray->pContainer))->setAutoDelete(false);
+ ((KviKvsVariantList *)(pFmtArray->pContainer))->append(v);
+ v = pVariantList->next();
+ while(v)
+ {
+ ((KviKvsVariantList *)(pFmtArray->pContainer))->append(v);
+ v = pVariantList->next();
+ }
+ return true;
+ }
+ break;
+ case KVS_PT_NONEMPTYSTRING:
+ {
+ v->asString(*((QString *)(pFmtArray->pContainer)));
+ bool bDoReturn = false;
+ if(pFmtArray->uFlags & KVS_PF_APPENDREMAINING)
+ {
+ v = pVariantList->next();
+ while(v)
+ {
+ *((QString *)(pFmtArray->pContainer)) += QChar(' ');
+ v->appendAsString(*((QString *)(pFmtArray->pContainer)));
+ v = pVariantList->next();
+ }
+ bDoReturn = true;
+ }
+ if(((QString *)(pFmtArray->pContainer))->isEmpty())
+ {
+ QString szError;
+ KviQString::sprintf(szError,__tr2qs("Invalid data type for parameter \"%s\""),pFmtArray->szName);
+ szError += ": ";
+ KviQString::sprintf(szError,__tr2qs("found empty string while a non empty one was expected"));
+ pContext->error(szError);
+ return false;
+ }
+ if(bDoReturn)return true;
+ }
+ break;
+ case KVS_PT_CSTRING:
+ {
+ QString tmp;
+ v->asString(tmp);
+ if(pFmtArray->uFlags & KVS_PF_APPENDREMAINING)
+ {
+ v = pVariantList->next();
+ while(v)
+ {
+ *((KviQCString *)(pFmtArray->pContainer)) += ' ';
+ v->appendAsString(tmp);
+ v = pVariantList->next();
+ }
+ *((KviQCString *)(pFmtArray->pContainer)) = tmp.utf8();
+ return true;
+ }
+ *((KviQCString *)(pFmtArray->pContainer)) = tmp.utf8();
+ }
+ break;
+ case KVS_PT_NONEMPTYCSTRING:
+ {
+ QString tmp;
+ v->asString(tmp);
+ bool bDoReturn = false;
+ if(pFmtArray->uFlags & KVS_PF_APPENDREMAINING)
+ {
+ v = pVariantList->next();
+ while(v)
+ {
+ *((KviQCString *)(pFmtArray->pContainer)) += ' ';
+ v->appendAsString(tmp);
+ v = pVariantList->next();
+ }
+ *((KviQCString *)(pFmtArray->pContainer)) = tmp.utf8();
+ bDoReturn = true;
+ }
+ *((KviQCString *)(pFmtArray->pContainer)) = tmp.utf8();
+ if(((KviQCString *)(pFmtArray->pContainer))->isEmpty())
+ {
+ QString szError;
+ KviQString::sprintf(szError,__tr2qs("Invalid data type for parameter \"%s\""),pFmtArray->szName);
+ szError += ": ";
+ KviQString::sprintf(szError,__tr2qs("found empty string while a non empty one was expected"));
+ pContext->error(szError);
+ return false;
+ }
+ if(bDoReturn)return true;
+ }
+ break;
+ case KVS_PT_INT:
+ if(!v->asInteger(*((kvs_int_t *)(pFmtArray->pContainer))))
+ {
+ if(!handleParameterTypeError(pContext,pFmtArray,v,"integer"))
+ return false;
+ }
+ break;
+ case KVS_PT_UINT:
+ {
+ kvs_int_t iTmp;
+ if(!v->asInteger(iTmp))
+ {
+ if(!handleParameterTypeError(pContext,pFmtArray,v,"unsigned integer"))
+ return false;
+ }
+ if(iTmp < 0)
+ {
+ QString szError;
+ KviQString::sprintf(szError,__tr2qs("Invalid data type for parameter \"%s\""),pFmtArray->szName);
+ szError += ": ";
+ KviQString::sprintf(szError,__tr2qs("found signed integer \"%d\" where type 'unsigned integer' was expected"),iTmp);
+ pContext->error(szError);
+ return false;
+ }
+ *((kvs_uint_t *)(pFmtArray->pContainer)) = (kvs_uint_t)iTmp;
+ }
+ break;
+ case KVS_PT_DOUBLE:
+ if(!v->asReal(*((kvs_real_t *)(pFmtArray->pContainer))))
+ {
+ if(!handleParameterTypeError(pContext,pFmtArray,v,"real"))
+ return false;
+ }
+ break;
+ case KVS_PT_HASH:
+ if(!v->isHash())
+ {
+ if(!handleParameterTypeError(pContext,pFmtArray,v,"hash"))
+ return false;
+ } else {
+ *((KviKvsHash **)(pFmtArray->pContainer)) = v->hash();
+ }
+ break;
+ case KVS_PT_ARRAYCAST:
+ v->castToArray((KviKvsArrayCast *)(pFmtArray->pContainer));
+ break;
+ case KVS_PT_ARRAY:
+ if(!v->isArray())
+ {
+ if(!handleParameterTypeError(pContext,pFmtArray,v,"array"))
+ return false;
+ } else {
+ *((KviKvsArray **)(pFmtArray->pContainer)) = v->array();
+ }
+ case KVS_PT_BOOL:
+ // this never fails: anything is converted to a boolean
+ *((bool *)(pFmtArray->pContainer)) = v->asBoolean();
+ break;
+ case KVS_PT_VARIANT:
+ *((KviKvsVariant **)(pFmtArray->pContainer)) = v;
+ break;
+ case KVS_PT_HOBJECT:
+ if(!v->asHObject(*((kvs_hobject_t *)(pFmtArray->pContainer))))
+ {
+ if(!handleParameterTypeError(pContext,pFmtArray,v,"hobject"))
+ return false;
+ }
+ break;
+ case KVS_PT_IGNORE:
+ // ignore
+ break;
+ default:
+ debug("Internal error in KviKvsParameterProcessor::processAsParameters(): unknown parameter type %d",pFmtArray->uType);
+ return false;
+ break;
+ }
+ pFmtArray++;
+ v = pVariantList->next();
+ }
+ return true;
+ }
+
+};
diff --git a/src/kvirc/kvs/kvi_kvs_parameterprocessor.h b/src/kvirc/kvs/kvi_kvs_parameterprocessor.h
new file mode 100644
index 00000000..3d8483f9
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_parameterprocessor.h
@@ -0,0 +1,140 @@
+#ifndef _KVI_KVS_PARAMETERPROCESSOR_H_
+#define _KVI_KVS_PARAMETERPROCESSOR_H_
+//=============================================================================
+//
+// File : kvi_kvs_parameterprocessor.h
+// Created on Sun 17 Apr 2005 16:47:09 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+
+// Data type: QString
+// Default: QString::null
+#define KVS_PT_STRING 0
+
+// Data type: QString
+// Default: QString::null
+#define KVS_PT_NONEMPTYSTRING 1
+
+// Data type: kvs_int_t
+// Default: 0
+#define KVS_PT_INT 2
+ #define KVS_PT_INTEGER 2
+
+// Data type: kvs_uint_t
+// Default: 0
+#define KVS_PT_UINT 3
+ #define KVS_PT_UNSIGNEDINTEGER 3
+
+// Data type: kvs_real_t
+// default: 0.0
+#define KVS_PT_DOUBLE 4
+ #define KVS_PT_REAL 4
+
+// Data type: bool
+// default: false
+#define KVS_PT_BOOL 5
+ #define KVS_PT_BOOLEAN 5
+
+// Data type: KviKvsHash *
+// default: 0
+#define KVS_PT_HASH 6
+
+// Data type: KviKvsArrayCast
+// default empty cast
+#define KVS_PT_ARRAYCAST 7
+
+// Data type: KviKvsVariant *
+// default: 0
+#define KVS_PT_VARIANT 8
+
+// Data type: QCString
+// default null string (0)
+#define KVS_PT_CSTRING 9
+
+// Data type: QCString
+// default null string (0)
+#define KVS_PT_NONEMPTYCSTRING 10
+
+// Data type: QStringList
+// default: list cleared
+// This eats all the remaining params in the list!
+#define KVS_PT_STRINGLIST 11
+
+// Data type: KviKvsVariantList
+// default: list cleared
+// This eats all the remaining params in the list!
+// The list has autodelete set to off since the copies are SHALLOW!
+#define KVS_PT_VARIANTLIST 12
+
+// Data type: kvs_hobjec_t
+// default: (kvs_hobject_t)0
+#define KVS_PT_HOBJECT 13
+
+// Data type: KviKvsArray *
+// default 0
+#define KVS_PT_ARRAY 14
+
+// Data type: ignored
+#define KVS_PT_IGNORE 15
+
+// If omitted, set to default
+#define KVS_PF_OPTIONAL 1
+// Valid only for string types: it's the last parameter that eats all the remaining ones
+#define KVS_PF_APPENDREMAINING 2
+
+class KviKvsVariantList;
+class KviKvsRunTimeContext;
+
+namespace KviKvsParameterProcessor
+{
+ class KVIRC_API ParameterFormat
+ {
+ public:
+ const char * szName;
+ const unsigned char uType;
+ const unsigned char uFlags;
+ void * pContainer;
+ public:
+ ParameterFormat(const char * n,const unsigned char t,const unsigned char f,void * p)
+ : szName(n), uType(t), uFlags(f), pContainer(p) {};
+ };
+
+ KVIRC_API bool process(KviKvsVariantList * pVariantList,KviKvsRunTimeContext * pContext,KviKvsParameterProcessor::ParameterFormat * pFmtArray);
+};
+
+
+#define KVS_PARAMETERS_BEGIN(__name) \
+ KviKvsParameterProcessor::ParameterFormat __name[] = \
+ {
+
+#define KVS_PARAMETERS_END \
+ KviKvsParameterProcessor::ParameterFormat(0,0,0,0) \
+ };
+
+#define KVS_PARAMETER(__name,__type,__flags,__void) \
+ KviKvsParameterProcessor::ParameterFormat(__name,__type,__flags,((void *)(&(__void)))),
+
+#define KVS_PARAMETER_IGNORED(__name) \
+ KviKvsParameterProcessor::ParameterFormat(__name,KVS_PT_IGNORE,0,0),
+
+#endif //!_KVI_KVS_PARAMETERPROCESSOR_H_
diff --git a/src/kvirc/kvs/kvi_kvs_parser.cpp b/src/kvirc/kvs/kvi_kvs_parser.cpp
new file mode 100644
index 00000000..37e462c0
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_parser.cpp
@@ -0,0 +1,3827 @@
+//=============================================================================
+//
+// File : kvi_kvs_parser.cpp
+// Creation date : Thu 25 Sep 2003 05.12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+
+#include "kvi_kvs_parser.h"
+
+#include "kvi_kvs_treenode.h"
+
+#include "kvi_kvs_report.h"
+#include "kvi_kvs_kernel.h"
+
+#include "kvi_kvs_script.h"
+
+#include "kvi_kvs_parser_macros.h"
+
+#include "kvi_locale.h"
+
+#include "kvi_options.h"
+
+//FIXME: @ == $$-> == $this->
+
+KviKvsParser::KviKvsParser(KviKvsScript * pScript,KviWindow * pOutputWindow)
+{
+ // no need to initialize m_pBuffer
+ // no need to initialize m_ptr
+ // no need to initialize m_bError
+ m_pGlobals = 0;
+ m_pScript = pScript;
+ m_pWindow = pOutputWindow;
+}
+
+KviKvsParser::~KviKvsParser()
+{
+ if(m_pGlobals)delete m_pGlobals;
+}
+
+
+
+
+void KviKvsParser::init()
+{
+ KviKvsKernel * pKern = KviKvsKernel::instance();
+
+#define _REG_CNTRL_CMD(__cntrlCmdName,__parsingRoutine) \
+ { \
+ KviKvsSpecialCommandParsingRoutine * r = new KviKvsSpecialCommandParsingRoutine; \
+ r->proc = KVI_PTR2MEMBER(KviKvsParser::__parsingRoutine); \
+ pKern->registerSpecialCommandParsingRoutine(QString(__cntrlCmdName),r); \
+ }
+
+ _REG_CNTRL_CMD("if",parseSpecialCommandIf);
+ _REG_CNTRL_CMD("global",parseSpecialCommandGlobal);
+ _REG_CNTRL_CMD("while",parseSpecialCommandWhile);
+ _REG_CNTRL_CMD("break",parseSpecialCommandBreak);
+ _REG_CNTRL_CMD("do",parseSpecialCommandDo);
+ _REG_CNTRL_CMD("for",parseSpecialCommandFor);
+ _REG_CNTRL_CMD("foreach",parseSpecialCommandForeach);
+ _REG_CNTRL_CMD("switch",parseSpecialCommandSwitch);
+ _REG_CNTRL_CMD("defpopup",parseSpecialCommandDefpopup);
+ _REG_CNTRL_CMD("unset",parseSpecialCommandUnset);
+ _REG_CNTRL_CMD("class",parseSpecialCommandClass);
+ _REG_CNTRL_CMD("help",parseSpecialCommandHelp);
+
+#undef _REG_CNTRL_CMD
+}
+
+void KviKvsParser::report(bool bError,const QChar * pLocation,const QString &szMsgFmt,kvi_va_list va)
+{
+ QString szMsg;
+ KviQString::vsprintf(szMsg,szMsgFmt,va);
+
+ KviPointerList<QString> * pCodeListing = 0;
+ QString szLocation;
+
+ if(pLocation)
+ {
+ pCodeListing = new KviPointerList<QString>;
+ pCodeListing->setAutoDelete(true);
+
+ int iLine,iCol;
+
+ KviKvsReport::findLineColAndListing(m_pBuffer,pLocation,iLine,iCol,pCodeListing);
+
+ KviQString::sprintf(szLocation,__tr2qs("line %d, near character %d"),iLine,iCol);
+ } else {
+ szLocation = __tr2qs("beginning of input");
+ }
+
+ KviKvsReport rep(bError ? KviKvsReport::ParserError : KviKvsReport::ParserWarning,m_pScript->name(),szMsg,szLocation,m_pWindow);
+ if(pCodeListing)rep.setCodeListing(pCodeListing);
+
+ KviKvsReport::report(&rep,m_pWindow);
+}
+
+void KviKvsParser::errorBadChar(const QChar * pLocation,char cExpected,const char * szCommandName)
+{
+ if(pLocation->unicode())
+ error(pLocation,__tr2qs("Found character '%q' (unicode 0x%x) where '%c' was expected: see \"/help %s\" for the command syntax"),
+ pLocation,pLocation->unicode(),cExpected,szCommandName);
+ else
+ error(pLocation,__tr2qs("Found end of input where character '%c' was expected: see \"/help %s\" for the command syntax"),
+ cExpected,szCommandName);
+}
+
+void KviKvsParser::error(const QChar * pLocation,const QString &szMsgFmt,...)
+{
+ m_bError = true;
+
+ kvi_va_list va;
+ kvi_va_start_by_reference(va,szMsgFmt);
+ report(true,pLocation,szMsgFmt,va);
+ kvi_va_end(va);
+}
+
+void KviKvsParser::warning(const QChar * pLocation,const QString &szMsgFmt,...)
+{
+ kvi_va_list va;
+ kvi_va_start_by_reference(va,szMsgFmt);
+ report(false,pLocation,szMsgFmt,va);
+ kvi_va_end(va);
+}
+
+KviKvsTreeNodeInstruction * KviKvsParser::parse(const QChar * pBuffer,int iFlags)
+{
+ m_iFlags = iFlags;
+
+ m_bError = false;
+ if(m_pGlobals)m_pGlobals->clear(); // this shouldn't be needed since this is a one time parser
+
+ m_pBuffer = pBuffer;
+ m_ptr = pBuffer;
+
+ if(!pBuffer)
+ {
+ error(0,__tr2qs("Empty script"));
+ return 0;
+ }
+ return parseInstructionList();
+}
+
+KviKvsTreeNodeInstruction * KviKvsParser::parseAsExpression(const QChar * pBuffer,int iFlags)
+{
+ m_iFlags = iFlags;
+
+ m_bError = false;
+ if(m_pGlobals)m_pGlobals->clear(); // this shouldn't be needed since this is a one time parser
+
+ m_pBuffer = pBuffer;
+ m_ptr = pBuffer;
+
+ if(!pBuffer)
+ {
+ error(0,__tr2qs("Empty script"));
+ return 0;
+ }
+
+ KviKvsTreeNodeExpression * expr = parseExpression(0);
+ if(!expr)return 0;
+ return new KviKvsTreeNodeExpressionReturn(pBuffer,expr);
+}
+
+KviKvsTreeNodeInstruction * KviKvsParser::parseAsParameter(const QChar * pBuffer,int iFlags)
+{
+ m_iFlags = iFlags;
+
+ m_bError = false;
+ if(m_pGlobals)m_pGlobals->clear(); // this shouldn't be needed since this is a one time parser
+
+ m_pBuffer = pBuffer;
+ m_ptr = pBuffer;
+
+ if(!pBuffer)
+ {
+ error(0,__tr2qs("Empty script"));
+ return 0;
+ }
+
+ KviKvsTreeNodeDataList * l = parseCommandParameterList();
+ if(!l)return 0;
+
+ return new KviKvsTreeNodeParameterReturn(pBuffer,l);
+}
+
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// THE REAL KVS
+//
+// <script> ::= <instruction list> '\0'
+//
+// <instruction list> ::= <instruction> [ <instruction list> ]
+// <instruction> ::= <instruction block> | <command> | <operation> | <comment>
+// <instruction block> ::= '{' <instruction list> '}'
+//
+// <comment> ::= <bash style line comment> | <c++ style comment> | <c style comment>
+// <bash style comment> ::='#' <any char not including newline or null> <newline or null>
+// <c++ style comment> ::= '//' <any char not including newline or null> <newline or null>
+// <c style comment> ::= '/*' <any char not including null or the sequence */> '*/'
+//
+// <command> ::= <simple command> | <callback command> | <control command>
+// <simple command> ::= <core command> | <module command> | <alias command>
+// <core command> ::= <command identifier> <switch list> <command parameter list> <command terminator>
+// <switch list> ::= '-'<switch body> [<switch list>]
+// <command parameter list> ::= <command parameter>[<space><command parameter>]
+// <command parameter> ::= <command parameter part>[<command parameter>]
+// <command parameter part> ::= <command literal parameter> | <string parameter> | <data evaluation>
+// <command literal parameter> ::= <anything except space , null , newline , ; , " , $ or %>
+// <string parameter> ::= '"'<string parameter body>'"'
+// <string parameter body> ::= <anything except '"' or null>...
+// <command terminator> ::= ';' | '\n' | '\0'
+
+// <data> ::=
+// <data_reference> ::= <function_call> | <structured_data>
+// <structured_data> ::= <data_structure> | <variable> | <pointer_data>
+// <data_structure> ::= <array> | <hash>
+// <array> ::= '%'<identifier>'[]'
+// <hash> ::= '%'<identifier>'{}'
+// <variable> ::= '%'<identifier> | <array_element> | <hash_element>
+// <array_element> ::= '%'<identifier>'['<expression>']'
+// <hash_element> ::= '%'<identifier>'{'<key>'}'
+// <function_call> ::= <simple_function_call> | <pointer_function_call>
+// <simple_function_call> ::= '$'<identifier>'('<function_parameter_list>')'
+// <pointer_function_call> ::= <variable>'->'<function_call> | <simple_function_call>'->'<function_call>
+// <pointer_data> ::= <variable>'->'<data>' | <simple_function_call>'->'<data>
+
+
+//
+// This must evaluate SCOPE OBJECT operators!
+// thus...first evaluate the <data> or <simple_function_call>
+// If it was <simple_function_call> or <data> evaluation results in returning a <variable>
+// then check if there is a scope operator
+// if there is then take it as the top of the tree, the <variable> or <simple_function_call>
+// go at the left param of the scope operator and re-evaluate the right side <data> or <simple_function_call>
+//
+
+
+
+
+
+
+
+/*
+ @doc: kvs_introduction
+ @type:
+ language
+ @keyterms:
+ kvs, compilation
+ @title:
+ KVIrc scripting language introduction
+ @short:
+ KVIrc scripting language introduction
+ @body:
+ [p]
+ [b]KVS[/b] is the [b]KV[/b]irc [b]S[/b]cripting language.
+ It was inspired by C++,sh,perl,php and mIrc scripting language implementations.
+ It is a compromise between flexibility and speed, a 'workaround' for many intrinsic
+ problems of an IRC-oriented scripting language.
+ [/p]
+ [p]
+ KVS is semi-interpreted: the execution is done in two main stages.
+ The first stage is the compilation where a syntactic tree is built.
+ The second stage is the real execution and is performed by visiting the tree
+ in the proper order. The syntactic trees are cached in memory so
+ the next executions can jump directly into the second stage.
+ This two-stage approach has been introduced in version 3.0.0, the previous
+ versions of the language used a single-stage on-the-fly interpreter.
+ [/p]
+ [p]
+ KVS allows you to:[br]
+ [ul]
+ [li]Implement automated reactions to the events generated by an IRC network[/li]
+ [li]Add new complex commands[/li]
+ [li]Add interface elements like popups, toolbars, buttons...[/li]
+ [li]Add advanced interface elements like complete dialogs or even widgets integrated in KVIrc[/li]
+ [/ul]
+ [/p]
+ [p]
+ KVS contains all the common constructs of structured programming.
+ You will find almost all the C control commands, sh/perl-like variables, arrays and and functions.
+ There are also some object-oriented characteristics: you will find C++ like
+ objects with constructors, destructors and class inheritance.
+ There are also more exotic concepts like the signal-slots interobject-communication.
+ Obviously you will also find most of the RFC1459 IRC commands and
+ other tools to "play" with an IRC connection.
+ [/p]
+ [p]
+ I'll try to explain the language by using examples
+ instead of strict syntactic rules. (Actually I have even
+ tried to write the rules...take a look [doc:syntactic_rules]here[/doc][br][br]
+ And please...forgive me for my "fantastic" english :)
+ [/p]
+ Szymon Stefanek
+*/
+
+/*
+ @doc: kvs_basicconcepts
+ @type:
+ language
+ @keyterms:
+ script
+ @title:
+ KVS basic concepts
+ @short:
+ KVS basic concepts
+ @body:
+ [big]Scripts[/big]
+ [p]
+ You use KVS to implement [b]scripts[/b].
+ A script is basically a finite list of KVS instructions.
+ When you type a command in the KVIrc input window you in fact
+ execute a small one-line script. You can store
+ longer scripts in KVIrc memory and execute them at later time.
+ Scripts can be also read from external files by the means of the
+ [cmd]parse[/cmd] command.
+ [/p]
+ [p]
+ There is an issue with the word [i]script[/i] that is worth clearing here.
+ It is common usage to call [i]script[/i] a thing that is something more
+ that a finite list of (some scripting language) instructions.
+ In fact a set of scripts, documentation files, graphics or other multimedia
+ files and sometimes executable binaries is still called a [i]script[/i]...just like
+ the "PrincoScript" or "dynamirc" (tough this last one should be categorized as "malware" instead).
+ In KVIrc such a collection of items is called [i]addon[/i], but be prepared
+ for both usages of the word in this documentation and around the web.
+ [/p]
+ [p]
+ More about addons in this [doc:addons]document[/doc]
+ [/p]
+
+ [big]Hello world![/big]
+ [p]
+ This documentation contains a lot of script examples.
+ They will appear like the following block of code:
+ [example]
+ [cmd]echo[/cmd] Hello world!
+ [/example]
+ The best way to experiment is to execute the scripts from an external file.
+ Try to copy & paste the example above to a file and save it in
+ a known place. Then in the command input window type
+ [example]
+ [b]/[/b][cmd]parse[/cmd] <filename>
+ [/example]
+ where <filename> stands for the name of the file you just have saved.
+ Some simple examples (like the one above) can be also typed
+ directly in the command input window.
+ You must remember that the command input window needs
+ a leading slash ('/') character to recognize a script.
+ The command input window can also be put in multiline mode by clicking
+ on the button on the right.
+ Another alternative for testing scripts is the code tester window.
+ You can access it by selecting "New code tester" from the Scripting menu
+ at the top of the KVIrc window. You will soon have the opportunity to
+ experiment with all the methods. Read on.
+ [/p]
+
+ [big]Basic syntax[/big]
+ [p]
+ A script contains a list of instructions separated by newlines or ';' characters.
+ Placing an instruction per line does not require a terminating character,
+ placing more instructions in a single line require them to be separated by ';'.
+ The most common instructions in KVS are [b]commands[/b]. A command is basically
+ a keyword followed by a list of space separater parameters.
+ The simplest (and the most useful) command in KVS is [cmd]echo[/cmd]; it prints
+ all its parameters to a KVIrc window.[br]
+ The following is an example of a valid script that uses only [cmd]echo[/cmd] commands.
+ [example]
+ echo "This is the first line"
+ ECHO This is the second line;
+ echo "This is the third line"; echo This is still on the third line;
+ eChO "This is the fourth line"; Echo "This is still on the fourth line"
+ [/example]
+ You have probably noticed that the terminating ';' character is optional
+ when the command is the last in a line.
+ The commands are [b]case insensitive[/b]; 'echo' is equivalent to 'Echo',
+ to 'ECHO' and to 'eChO'. In fact, most of KVS is case insensitive.
+ (There are obvious unavoidable exceptions for this rule; for example,
+ on UNIX systems file names are case sensitive and this must be
+ also reflected in KVS).
+ Another interesting thing is that when you execute the script you
+ don't see the enclosing quotes around the printed text: more about this
+ in the following sections.[br]
+ [note]
+ Cryptic note (you may skip it for now):[br]
+ Yes, the command terminator is a problem for those that want to use ';)' at the end
+ of IRC commands like [cmd]msg[/cmd]. It is almost unavoidable (read: the cost for
+ avoiding it is too high). Note that using '|' or any other character as command terminator
+ will NOT solve the problem: if the terminator is too difficult to type it will annoy the
+ scripters (and me), if it is too easy then there will be always someone that wants to use it
+ at the end (or in the middle) of a command with the original meaning.
+ The solution is to escape the ';' character:
+ [example]
+ [cmd]echo[/cmd] You can do it now \;)
+ [/example]
+ [/note]
+ [/p]
+
+ [big]Parameter processing[/big]
+ [p]
+ Most of the commands accept (and sometimes require) a list of parameters.
+ For example, the [cmd]join[/cmd] command (that is used to join an IRC channel)
+ accepts two parameters: the first one is the channel to join and the second is
+ the password. The simplified syntax for join is:
+ [example]
+ [cmd]join[/cmd] <channel> [password]
+ [/example]
+ The line above is an example of syntax specification. All the commands
+ are described by such syntax lines. [cmd]join[/cmd] is the command and it stands exactly
+ for the literal string "join" typed in a script. <channel> is in angular parenthesis
+ and rappresents a mandatory parameter: you must substitute a real channel name in its place
+ otherwise the command will fail and KVIrc will probably complain too.
+ [password] is still a parameter but the square parentheses indicate that it is
+ optional: if you specify it, then it will be interpreted as the channel password,
+ if you don't then no password will be used.
+ [note]
+ The syntax is written in a simplified BNF. I say simplified because it is not
+ totally strict around the KVIrc documentation. I just prefer the syntax to be
+ clear and easy to read instead of being formally perfect.
+ [/note]
+ You can finally join a channel by writing:
+ [example]
+ [cmd]join[/cmd] #kvirc kvircrocks
+ [/example]
+ or , since #kvirc usually has no password , by writing:
+ [example]
+ [cmd]join[/cmd] #kvirc
+ [/example]
+ In the example above the optional parameter [password] is omitted.
+ [note]
+ In fact it is not really omitted: KVIrc interprets it as an empty string that later
+ means "do not send the password to the server".
+ Empty strings are equivalent to omitted ones.
+ [/note]
+ [/p]
+
+ [big]Parameters, spaces and quotes[/big]
+ [p]
+ From the examples above is obvious that KVS command parameters are separated by spaces.
+ What is not totally obvious is that multiple spaces are allowed but KVIrc
+ will automatically reduce them to exactly one (just like HTML parsers or the shell
+ interpreters do). This is an useful behaviour in an IRC client since spaces usually
+ carry no information and in text oriented protocols make the parsing really harder (:D).
+ [/p]
+ [p]
+ The spaces are simplified in normal processing but there are ways to force KVIrc
+ to interpret the spaces just as they are.
+ The first method are the quotation marks: all the spaces enclosed in quotation marks
+ will be preserved.
+ [example]
+ [cmd]echo[/cmd] This &nbsp; &nbsp; text &nbsp; &nbsp; will &nbsp; &nbsp; have &nbsp; &nbsp; spaces &nbsp; &nbsp; simplified
+ [cmd]echo[/cmd] But &nbsp; &nbsp; "this &nbsp; &nbsp; &nbsp; one &nbsp; &nbsp; not"
+ [/example]
+ The first example will print out with spaces simplified but the second not.
+ The quotes are also a nice trick to embed spaces into a single parameter that
+ would be obviously splitted in two or more.
+ [example]
+ [cmd]echo[/cmd] Parameter1 Parameter2 "Parameter 3 ( with spaces )" Parameter4
+ [/example]
+ By running the examples above you may have noticed that the spaces are preserved but the
+ quotes are then stripped! Yes, this is another tricky behaviour. But don't be afraid:
+ it is really easier to use than to explain.
+ There is obviously a method to preserve the quotes too and it is also another
+ method to preserve the spaces but that leads us to the next paragraph.
+ [/p]
+
+ [big]Escape character[/big]
+ [p]
+ You may have already noticed that KVS treats some characters in a special way.
+ For example the double-quote characters can be used to enclose strings
+ and are stripped by the parser.
+ Another example of a special character is the command terminator (';'):
+ it has the "special" meaning of terminating a command.
+ If you want to enclose a literal quote in your text, you need to [b]escape[/b] it.
+ Like in most other programming languages, the escaping character is the backslash ('\').
+ [example]
+ [cmd]echo[/cmd] You can smile this way too! \;)
+ [/example]
+ The above example will treat the ';' as a part of the parameters and print it.[br]
+ In some languages the action of "escaping" a character is called "quoting".
+ Altough there is some confusion in this term, the meaning is to either use quotes
+ or to use the escape character to remove special meaning from some characters.
+ By quoting the spaces you can include them in a parameter, by escaping the quotes
+ you can include them in a command.
+ [example]
+ [cmd]echo[/cmd] "And he said \"Hello world!\""
+ [/example]
+ The example above will have the internal quotes preserved.
+ You can use the escape backslash to escape a newline:
+ [example]
+ [cmd]echo[/cmd] This text will be \
+ &nbsp; &nbsp; printed on a single line!
+ [/example]
+ After an escaped newline all the leading space and tab characters are skipped,
+ so you must include the needed spaces [b]before[/b] the escape character.
+ The previous example will be printed as:[br][br]
+ [i]This text will be printed on a single line[/i][br]
+ Another example:[br]
+ [example]
+ [cmd]echo[/cmd] "The new kvirc &nbsp; &nbsp; &nbsp \
+ &nbsp; &nbsp; IS OUT!"
+ [cmd]echo[/cmd] Check it out at http://www.kvi\
+ &nbsp; &nbsp; rc.net!
+ [/example]
+ This will be printed as:[br][br]
+ [i]
+ The new kvirc &nbsp; &nbsp; &nbsp; IS OUT![br]
+ Check it out at http://www.kvirc.net!
+ [/i][br]
+ Finally, you can escape an escape character to include it literally in a parameter (and
+ this is really the end of these tricks :)
+ Later we will discover other common usages of the backslash escape, such
+ as preventing KVIrc from interpreting a literal percent character as a variable
+ or separating variable names from the text.
+ [/p]
+
+ [big]Command switches[/big]
+ [p]
+ Many commands accept switch parameters.
+ [b]A switch modifies the behaviour of a command.[/b]
+ Any switch can optionally accept a parameter, that must
+ be specified after an equal ('=') sign.
+ [example]
+ [cmd]echo[/cmd] [b]-i = 2[/b] This text uses a specific color scheme
+ [/example]
+ The -i switch (just for example) changes the attributes
+ and the icon of the printed text.
+ [b]The switch must be specified immediately after the command keyword.[/b]
+ [example]
+ [cmd]echo[/cmd] This -i = 2 will obviously not work...
+ [/example]
+ If you want to start the first parameter of a command (that is not a switch)
+ with a literal '-' you must again escape it:
+ [example]
+ [cmd]echo[/cmd] \--- This text has three minus signs on the left
+ [/example]
+ or use the quotes:
+ [example]
+ [cmd]echo[/cmd] "--- This text has three minus signs on the left"
+ [/example]
+ [/p]
+
+ [big]Command blocks[/big]
+ [p]
+ Commands can be 'grouped' in blocks by using the classic C++ braces.
+ Here is a single line example:[br]
+ [example]
+ { [cmd]echo[/cmd] First command; [cmd]echo[/cmd] Second command; } [cmd]echo[/cmd] Third command
+ [/example]
+ Multi line example:[br]
+ [example]
+ {
+ [cmd]echo[/cmd] First command
+ [cmd]echo[/cmd] Second command
+ }
+ [cmd]echo[/cmd] Third command
+ [/example]
+ [note]
+ Reminder : copy the example above to a text file
+ and then use /[cmd]parse[/cmd] &lt;filename&gt;
+ [/note]
+ In this case the command block has no special meaning
+ other than making the code more readable , but command blocks
+ will be useful later (see [cmd]if[/cmd],[cmd]while[/cmd]...).[br]
+ [note]
+ Unlike in C or C++, the braces do NOT automatically define a variable scope
+ (with few exceptions to this rule ... just to complicate the things a bit more).
+ You will recall this last assertion later, when reading about [doc:data_structures]data structures[/doc].
+ [/note]
+ [/p]
+
+ [big]Comments[/big]
+ [p]
+ KVIrc supports comments in command sequences.[br]
+ A comment starts with the character '#' and terminates with a newline.
+ You can start a comment anywhere a command can start.[br]
+ [example]
+ # This is a comment , it occupies the whole line
+ [cmd]echo[/cmd] After the comment!; # This is an end-line comment
+ [/example]
+ You can't escape newline characters in this case.
+ (or better: escape characters have no meaning in comments...
+ maybe one day I'll implement it).[br]
+ Starting from version 3.0.0 kvirc supports also C++ single line and C multiline comments.[br]
+ A C++ comment starts with two slashes '//' and terminates with a newline.
+ A multiline C comment starts with '/*' and ends at the first '* /' encountered.
+ Since KVIrc has no pre-processor, the C/C++ comments usually can't be placed in the middle of a command:
+ they must start where a command would start and end before the begin of another command.[br]
+ [/p]
+
+ [big]Indentation[/big]
+ [p]
+ You [b]should[/b] use spaces or [b]tabs[/b] to [b]indent[/b] your code. Note that the [b]should[/b]
+ word is written in bold characters: I mean that you really should indent your code.
+ Indenting helps both you (the script writer) and the reader (any other user that will
+ read your script). A good indenting practice is the first step to become a great programmer :)
+ [note]
+ Please note that the command parameters should be separated by
+ space characters (ascii 32). Tabs are not granted to work as parameter separators.[br]
+ [/note]
+ [example]
+ {
+ &lt;tab&gt;[cmd]echo[/cmd] Indented command
+ &lt;tab&gt;{
+ &lt;tab&gt;&lt;tab&gt;# Comment
+ &lt;tab&gt;&lt;tab&gt;[cmd]echo[/cmd] Really Really long indented \
+ &lt;tab&gt;&lt;tab&gt;&lt;tab&gt;command
+ &lt;tab&gt;}
+ }
+ [/example]
+ Tabs behave better than spaces as indentation characters since other users can
+ adjust the tab size to match their taste. I personally prefer 4 character tabs
+ while most text/code editors usually come with 8 characters as default.
+ [/p]
+
+ [big]And now ?[/big]
+ [p]
+ You're now ready to really start experimenting with KVS. You can take
+ a look at the [doc:commands]command index[/doc] and start trying to use them
+ while keeping in mind the rules described in this document.
+ The next suggested lecture is the documentation about [doc:kvs_aliasesandfunctions]the aliases and the functions[/doc].
+ Have fun :)
+ [/p]
+*/
+
+/*
+ @doc: kvs_aliasesandfunctions
+ @type:
+ language
+ @keyterms:
+ aliases, functions
+ @title:
+ KVS Functions and aliases
+ @short:
+ KVS Functions and aliases
+ @body:
+ [big]Introduction[/big]
+ [p]
+ Since you're here, you should already have readed about the [doc:kvs_basicconcepts]KVS basic concepts[/doc]
+ and have visited the [doc:commands]command index[/doc]. If you feel ready to take the next step
+ then read on.
+ [/p]
+
+ [big]Functions[/big][br]
+ [p]
+ KVS has many internal [doc]functions[/doc] that can be used as command parameters.[br]
+ [b]All the function names start with a literal '$' character.[/b][br]
+ [example]
+ [cmd]echo[/cmd] This window caption is [fnc]$window.caption[/fnc]
+ [/example]
+ The [fnc]$window.caption[/fnc] [doc:functions]function[/doc]
+ is evaluated before the command executes,
+ and it is changed into the current window caption text.[br]
+ The [doc]functions[/doc] can be used also as switch parameters.[br]
+ [example]
+ [cmd]echo[/cmd] -w = [fnc]$window[/fnc] This text will be surely \
+ &nbsp; &nbsp; printed in the current window
+ [/example]
+ The -w switch allows to redirect the echo text to a specified window --- in this
+ case the one that you are typing in.[br]
+ [i](Surprise: in this case the -w switch is useless ,
+ since echo prints text to the current window by default...
+ but it will work correctly. :)[/i]
+ [/p]
+ [p]
+ Normal function names can be made of "anycase" letters, digits and underscores,
+ with the restriction that the first character is not a digit.[br]
+ Some kind of functions can contain a dot '.' character inside the name
+ and these are assumed to be module references (see [doc:modules]the modules documentation[/doc]).[br]
+ [/p]
+ [p]
+ By now we have seen only simple functions, but there's more...[br]
+ The functions can accept parameters; the general syntax for a function call is:[br]
+ [b]$<function name>['('<parameter_list>')'][/b][br]
+ where <parameter_list> is a list of comma separated parameters,
+ eventually empty.
+ [example]
+ [cmd]echo[/cmd] The word 'neural' is [fnc]$str.len[/fnc](neural) characters long
+ [/example]
+ The function [fnc]$str.len[/fnc] accepts a single parameter and returns the
+ length in characters of the parameter string. The returned value is always
+ a string: in this case it can be also interpreted as a number.[br]
+ When passing an empty list you can avoid the parenthesis.
+ (And you have found the "simple" functions shown above).
+ So the followind two calls are equal:[br]
+ [example]
+ [cmd]echo[/cmd] [fnc]$window.caption[/fnc]
+ [cmd]echo[/cmd] [fnc]$window.caption()[/fnc]
+ [/example]
+ If you want to pass an "empty" string as the first parameter you have to use
+ the following syntax:[br]
+ [example]
+ [cmd]echo[/cmd] [fnc]$str.len[/fnc]("")
+ [/example]
+ Obviously a function is valid as a function parameter.[br]
+ [example]
+ [cmd]echo[/cmd] [fnc]$str.len[/fnc]([fnc]$window.caption[/fnc])
+ [/example]
+ If you want to place a literal '(' or ')' in the function parameters
+ you must escape it.
+ A special case for when you want to use 'matching' parentheses:
+ an opened '(' corresponds to a closed ')'.
+ In this case you can omit the 'escape' character.[br]
+ [example]
+ [cmd]echo[/cmd] The length of '(a+b)' is : [fnc]$str.len[/fnc]( (a+b) )
+ [/example]
+ This is useful for algebraic and boolean expressions , like the ones
+ accepted by the special function $() (see next paragraphs).[br]
+ [/p]
+
+
+ [big]Aliases[/big][br]
+ An alias is an user defined command. It can be used to rename the builtin kvirc commands or functions,
+ to automatize complex tasks or as structured programming mean.
+ Aliases can be created or destroyed by using the scriptcenter (graphic interface)
+ or from the commandline (or script) by using the [cmd]alias[/cmd] command.
+ Once created, an alias remains stored permanently in the KVIrc configuration files
+ until it is explicitly deleted.
+ A couple of examples will make the things clear.
+ join is a really commonly used command. It might be a good idea to rename it to
+ simply "j" .. just to type it faster.
+ Nothing easier in KVirc: just try this commandline:
+ [example]
+ [cmd]alias[/cmd](j){ [cmd]join[/cmd] $0-; };
+ [/example]
+
+ This will create the alias "j". From this moment you can use /j as it was a normal command.
+ [example]
+ j #kvirc
+ [/example]
+ You may have notices the strange $0- function in the alias body: it stands for
+ "all parameters passed to the alias". This means that when you call
+ [example]
+ j #kvirc testpassword
+ [/example]
+ then both the parameters (#kvirc and testpassword) are passed to the join command.
+ The $N functions are special functions that return the positional parameters passed
+ to the current script context. In an alias the script context is the script body and
+ it is the alias caller that generates the parameters.
+ $N (where N is a digit) returns the (N-1)-th positional parameter passed by the caller.
+ It returns the parameter numbered N-1 and not N since the parameters are indexed starting
+ from zero ($0 is the first parameter!).
+ $N-M returns the parameters from (N-1)-th to the (M-1)-th (a parameter range) and $N- returns
+ all the parameters from (N-1)-th to the last one. In the example above $0- stands for
+ all the parameters starting from the first one.
+ [/p]
+ [p]
+ To remove an alias use again the alias command with an empty body:
+ [example]
+ [cmd]alias[/cmd](j){}
+ [/example]
+ This will remove the alias "j" defined above.
+ [/p]
+ [p]
+ A common task in channel management is the kick & ban action.
+ You first ban an user from the channel and then eventually kick him
+ (obviously assuming that he is actually on the channel).
+ This involves using two commands: ban and then kick.
+ It could be a nice idea to have a single "kb" command to perform this action.
+ Well...easy:
+ [example]
+ [cmd]alias[/cmd](kb){ [cmd]ban[/cmd] $0; [cmd]kick[/cmd] $0-; };
+ [/example]
+ This adds the "kb" alias: it can be called as a normal command:
+ [example]
+ kb spammer You're not welcome here!
+ [/example]
+ This will first execute "ban spammer" and then "kick spammer You're not welcome here".
+ Our kb is a really simple example... it doesn't check for the validity of the parameters:
+ the server will warn us if the parameters passed to kb were empty.
+ [/p]
+ [p]
+ The alias can be modified at any time by re-using the alias command.
+ Let's make our "kb" a bit more intelligent and add a check for the parameters.
+ TIP: It is a good idea to write the following examples in a text file and then use /parse <filename> to execute it.
+ [example]
+ [cmd]alias[/cmd](kb)
+ {
+ [cmd]if[/cmd]("$0" == "")
+ {
+ [cmd]echo[/cmd] "Usage: /kb <nickname> <kick reason>"
+ [cmd]return[/cmd]
+ }
+ [cmd]ban[/cmd] $0
+ %reason = $1-
+ [cmd]if[/cmd]("%reason" == "")%reason = "You're not welcome here!"
+ [cmd]kick[/cmd] $0 %reason
+ }
+ [/example]
+ The example above will first check the validity of the <nickname> passed to kb:
+ if no nickname was passed , it will warn the user and stop.
+ The next step will be the "ban <nickname>" call. Another enchancement is the "default reason":
+ we first assign the remaining parameters ($1- means "from $1 to the end") to a temporary variable,
+ if the variable is empty , a default kick reason is assigned.
+ Finally the "kick <nickname> <reason>" will be executed.
+ Get used to looking at the single command documentation pages, they will give
+ you the hints necessary to fully understand the above piece of code.
+ [/p]
+ [p]
+ Aliases can be used as a mean for structured programming.
+ In large scripts you will SURELY have "common tasks" to perform (like having specially
+ colored output or calculating a value from a set of other values)...
+ Aliases are the way of writing the common tasks: they are equivalent to the "procedures"
+ or "functions" in many high-level programming languages.
+ The alias as a procedure (subroutine or sub-task) has been shown in the "kb" example above:
+ it might be commonly called from complexier scripts or other aliases in case that a
+ kick & ban action is needed.
+ [/p]
+ [p]
+ The aliases can be used also as functions.
+ Assume that you need really often to calculate the sum of three numbers: a function-alias is the way.
+ [example]
+ [cmd]alias[/cmd](sum3){ [cmd]return[/cmd] $($0 + $1 + $2); };
+ [/example]
+ This will add the alias "sum3" and make it available both as a command and a function.
+ The "return" command sets the return value of a sequence of commands
+ (an alias is a sequence of commands...remember ?) and terminates the execution (by returning
+ the control to the caller).
+ So return $($0 + $1 + $2); will set the return value of the alias to the value
+ computed by $($0 + $1 + $2) that actually is the sum of the first three parameters passed.
+ You will then use it in the following way:
+ [example]
+ ...
+ %myfirstsum = $sum3(%somevalue,%someothervalue,4)
+ %anothersum = $sum3(12,%somevalue,%anothervalue)
+ ...
+ [/example]
+ Ops.. I've used some variables without actually explaining them... hehe.. please forgive me and read on.
+ This example is again really simple , but you might have complexier function-aliases.
+ The function-aliases are also normal aliases.... you can use it as a command:
+ [example]
+ /sum3 1 2 3
+ [/example]
+ Is a perfectly valid call.... it's just that it will have no visible results
+ (just because a command call implies ignoring the return value.
+ In fact there is no difference al all between function-aliases and normal-aliases:
+ the caller makes the difference: by calling an alias as a command the return value
+ just disappears in hyperspace, by calling an alias as a function , the return value
+ is propagated (and in fact "used").
+ (There are some "nice" exceptions to this rule...but you don't need to care about it, for now).
+ If return is not called inside an alias body , the return value will be just a null value.
+ [/p]
+ [p]
+ Aliases can accept switches just like any other command. The [fnc]$sw[/fnc] is there
+ exactly for that purpose. Check it out.
+ [/p]
+
+ [big]Special functions[/big]
+ [p]
+ We have already seen the positional parameter functions.
+ The functions of type [b]$N[-[M]][/b] (where N and M are positive
+ numbers starting from 0 and N < M) evaluate to the sequence of
+ [b]positional parameters[/b] from Nth to Mth."[br]
+ If M is omitted , the function evaluate to the sequence of [b]positional
+ parameters[/b] from Nth to the last one. If the whole -M block is omitted
+ the function evaluate to the Nth positional parameter.
+ We will discover more on the [b]positional parameters[/b] when talking
+ of aliases and events.[br]
+ [example]
+ $0 evaluates to the 1st positional parameter
+ $0-4 evaluates to the parameters from first to 5th
+ $41- evaluates to the parameters from 41st to the last avaiable
+ [/example]
+ The function [b]$#[/b] evaluates to the number of positional parameters available.
+ The [b]positional parameter[/b] functions do not accept parameters.[br]
+ The special function [b]$(<expression>)[/b] returns the result
+ of the evaluation of the <expression>. In previous versions of KVIrc this
+ function was called [fnc]$calc[/fnc].[br]
+ [example]
+ [cmd]echo[/cmd] $(2 + (3 ^ 7) <= 1 * (3 && 2))
+ [/example]
+ The special function [b]${<command sequence>}[/b] evaluates to the
+ return value of the <command sequence>.[br]
+ The special function [b]$$[/b] evaluates to the current object id,
+ but it is too early to explain it here...[br]
+*/
+
+/*
+ @doc: command_rebinding
+ @type:
+ language
+ @keyterms:
+ Rebinding commands to another window
+ @title:
+ Standard rebinding switch
+ @short:
+ Standard rebinding switch
+ @syntax:
+ <command> -r=<window_id> <parameters>
+ @body:
+ The -r switch is standardized along all the commands. It rebinds a command
+ to the windows specified by <window_id>. It is useful to launch commands
+ in windows that are not the current one. For example, you might want to
+ say something in a specific channel while processing an event bound to
+ a console, or say something in all the channels bound to the current irc context.
+ The examples below will make everything clear.
+ @examples:
+ [example]
+ [comment]# Run a command in the console of the current IRC context[/comment]
+ [cmd]echo[/cmd] -r=$console This command is executed in the console ($window.caption)
+ [comment]# Say something to all the channels of the current IRC context[/comment]
+ [cmd]foreach[/cmd](%w,[fnc]$window.list[/fnc](channel))[cmd]say[/cmd] -r=%w Hi ppl on [fnc]$chan.name[/fnc]
+ [/example]
+*/
+
+ /*
+ @doc: window_naming_conventions
+ @type:
+ language
+ @title:
+ Window naming conventions
+ @keyterms:
+ IRC context,window ID,frame window,connection ID
+ @short:
+ KVIrc window structure and the window naming conventions
+ @body:
+ [big]Introduction[/big][br]
+ Starting from the release 3.0.0 KVIrc window structure has
+ grown in complexity. Older releases allowed one connetion
+ per "frame window" and thus had a dedicated command parser
+ for each connection. Finding a window in that scenario
+ was quite easy: it was enough to designate it by "name"
+ (that was exactly the text displayed in the window caption).
+ It was sufficient to have an "unique" name for ever window;
+ condition that was granted by the underlying IRC protocol
+ and by the KVIrc core design.[br]
+ In this version, the unique window names are impossible to be granted.[br]
+ [big]Scenario[/big][br]
+ The command parser is now "global" to the application.
+ There can be two or more consoles in each frame and the user
+ is able to join the same channel with two different nicknames
+ using two separate connections.
+ [ul]
+ [li]
+ Application (Unique command parser)
+ [ul]
+ [li]
+ Frame X
+ [ul]
+ [li]
+ Console M (IRC context)
+ [ul]
+ [li]Channel windows[/li]
+ [li]Query windows[/li]
+ [li]Other connection related windows[/li]
+ [/ul]
+ [/li]
+ [li]
+ Console N (IRC context)
+ [ul]
+ [li]Channel windows[/li]
+ [li]Query windows[/li]
+ [li]Other connection related windows[/li]
+ [/ul]
+ [/li]
+ [li]
+ Other windows
+ [/li]
+ [li]
+ ...
+ [/li]
+ [/ul]
+ [/li]
+ [li]
+ Frame Y
+ [ul]
+ [li]
+ Console O (IRC context)
+ [ul]
+ [li]Channel windows[/li]
+ [li]Query windows[/li]
+ [li]Other connection related windows[/li]
+ [/ul]
+ [/li]
+ [li]
+ Console P (IRC context)
+ [ul]
+ [li]Channel windows[/li]
+ [li]Query windows[/li]
+ [li]Other connection related windows[/li]
+ [/ul]
+ [/li]
+ [li]
+ Other windows
+ [/li]
+ [li]
+ ...
+ [/li]
+ [/ul]
+ [/li]
+ [li]
+ ...
+ [/li]
+ [/ul]
+ [/li]
+ [/ul]
+ [br]
+ A naming convention has becomed necessary to resolve ambiguities.[br]
+ [big]Basic assumptions[/big]
+ Every KVIrc window has four main properties:[br]
+ -[b]an unique numeric identifier[/b][br]
+ -[b]the logical name[/b][br]
+ -[b]the type identifier[/b][br]
+ -[b]the caption text[/b][br]
+ The [b]numeric identifier[/b] is unique to the whole application,
+ and is the one returned by the [fnc]$window[/fnc] function.[br]
+ The identifier is assigned by KVIrc when the window is created
+ and is not changed until the window is destroyed.
+ This identifier will be referred as [b]window ID[/b].[br]
+ The [b]logical name[/b] is a property of some kind of windows.
+ It usually corresponds to the first part of the window caption.
+ For example, for channel windows it is the channel name, for
+ queries it is the list of the targets. For some other windows
+ the logical name corresponds to the caption text. This will be discussed later.[br]
+ The [b]type identifier[/b] describes the properties of a certain window.
+ For channel windows the type identifier is "channel" , for query windows is "query" ,
+ for console windows it is "console", etc..[br]
+
+ [big]Irc contexts[/big][br]
+ The KVIrc frame windows are numbered starting from 0 and named
+ "frame_<number>". Each frame can contain an unlimited number of consoles.[br]
+ Each console is bound to an [b]IRC context[/b]. (The part "is bound to" could
+ be substituted by "defines" or "is contained in").[br]
+ [i]An [b]IRC context[/b] is a set of resources that can deal with a single
+ IRC connection.[/i][br]
+ The association between an [b]IRC context[/b]
+ and a console is bijective: each [b]IRC context[/b] is associated
+ to a single console window.[br]
+ An [b]IRC context[/b] can be in connected or not-connected state.
+ When in connected state, it contains a set of windows beside the console:
+ mainly channels and query windows.
+ The channels and query windows can exist ONLY if the associated
+ [b]IRC context[/b] exists.[br]
+ Channels and queries have unique names inside a connection so
+ there is no way to confuse it. (Theoretically there can
+ be more than one query window with the same name, but in fact
+ all the windows refer to the same target so they are instances
+ of the same resource).
+ All this creates a sort of namespace: the channels and queries can be identified
+ as "bound" to a specific [b]IRC context[/b].[br]
+ An [b]IRC context[/b] can "contain" other windows, such as the "sockets"
+ window or the "list" window. KVIrc takes care of making them
+ unique inside the [b]IRC context[/b] namespace.[br]
+ Each [b]IRC context[/b] has its own unique [b]IRC context ID[/b] (see [fnc]$context[/fnc]).[br]
+ Since to a single [b]IRC context[/b] may correspond only a single irc connection,
+ when in connected state, the [b]IRC context[/b] may be referred also as [b]connection[/b]
+ or [b]connection context[/b], and the associated [b]IRC context Id[/b] can be
+ referred as [b]connection ID[/b] or [b]connection context ID[/b].[br]
+ There are classes of windows that are not bound to any [b]IRC context[/b]:
+ this includes user created windows, DCC windows, browsers etc.[br]
+ KVIrc will try to keep that windows with unique logical names.[br]
+ [big]How to identify a window[/big][br]
+ So what we have until now is:[br]
+ [ul]
+ [li]Each window has its own unique [b]window ID[/b]: we
+ will refer windows always using this identifier.[/li]
+ [li]Each window has a set of properties including:
+ window type, logical name.[/li]
+ [li]Subsets of windows are bound to a single [b]IRC context[/b][/li]
+ [/ul]
+ The simplest (but also the less significant) method of looking for
+ a window is to finding it by caption.[br]
+ The [fnc]$window[/fnc] function finds the first KVIrc window matching
+ the "caption text" and returns its [b]window ID[/b].[br]
+ This method will likely fail when there are more windows with the same
+ caption text; for this reason several specific functions
+ have been added to allow finding the correct window.[br]
+ The [fnc]$console[/fnc] finds a console window bound to a specified
+ [b]IRC context[/b].[br]
+ The [fnc]$channel[/fnc] finds a channel window matching the specified
+ name and bound to a specified [b]IRC context[/b].[br]
+ The [fnc]$query[/fnc] finds a query window that has a specified target
+ and is bound to a specified [b]IRC context[/b].[br]
+ */
+
+
+ /*
+ @doc: connection_dependant_commands
+ @type:
+ language
+ @title:
+ Connection dependant commands
+ @keyterms:
+ IRC context, connection dependant commands
+ @body:
+ Many KVIrc commands are connection dependant:
+ you need an IRC connection to succesfully execute them;
+ usually because some data needs to be sent to the server.
+ This includes commands like [cmd]whois[/cmd],[cmd]raw[/cmd],[cmd]query[/cmd],
+ [cmd]msg[/cmd],[cmd]notice[/cmd],[cmd]op[/cmd],[cmd]ctcp[/cmd]...[br]
+ These commands must be executed in a window that is bound to a
+ [b]connected [doc:window_naming_conventions]IRC context[/doc][/b].
+ You will obviously get an error message if you try to use them in a window
+ that has no associated IRC connection.[br]
+ For instance: [cmd]whois[/cmd] will work only if you execute it
+ in a console , channel or query window.[br]
+ If you want to use these commands in a window that is not associated to
+ any IRC context you may use the [doc:command_rebinding]standard -r switch[/doc].
+ You can use the same switch to execute a command in an [b]IRC context[/b] that is
+ not the current one.
+ */
+
+
+/*
+ @doc: aliases
+ @type:
+ language
+ @keyterms:
+ aliases
+ @title:
+ Aliases
+ @short:
+ Aliases : user definable command sequences
+ @body:
+ An alias is an user defined command. It can be used to rename the builtin kvirc commands or functions,
+ to automatize complex tasks or as structured programming mean.
+ Aliases can be created or destroyed by using the scriptcenter (graphic interface)
+ or from the commandline (or script) by using the [cmd]alias[/cmd] command.
+ Once created, an alias remains stored permanently in the KVIrc configuration files
+ until it is explicitly deleted.
+ A couple of examples will make the things clear.
+ join is a really commonly used command. It might be a good idea to rename it to
+ simply "j" .. just to type it faster.
+ Nothing easier in KVirc: just try this commandline:
+ [example]
+ [cmd]alias[/cmd](j){ [cmd]join[/cmd] $0-; };
+ [/example]
+
+ This will create the alias "j". From this moment you can use /j as it was a normal command.
+ [example]
+ j #kvirc
+ [/example]
+ You may have notices the strange $0- function in the alias body: it stands for
+ "all parameters passed to the alias". This means that when you call
+ [example]
+ j #kvirc testpassword
+ [/example]
+ then both the parameters (#kvirc and testpassword) are passed to the join command.
+ The $N functions are special functions that return the positional parameters passed
+ to the current script context. In an alias the script context is the script body and
+ it is the alias caller that generates the parameters.
+ $N (where N is a digit) returns the (N-1)-th positional parameter passed by the caller.
+ It returns the parameter numbered N-1 and not N since the parameters are indexed starting
+ from zero ($0 is the first parameter!).
+ $N-M returns the parameters from (N-1)-th to the (M-1)-th (a parameter range) and $N- returns
+ all the parameters from (N-1)-th to the last one. In the example above $0- stands for
+ all the parameters starting from the first one.
+ [/p]
+ [p]
+ To remove an alias use again the alias command with an empty body:
+ [example]
+ [cmd]alias[/cmd](j){}
+ [/example]
+ This will remove the alias "j" defined above.
+ [/p]
+ [p]
+ A common task in channel management is the kick & ban action.
+ You first ban an user from the channel and then eventually kick him
+ (obviously assuming that he is actually on the channel).
+ This involves using two commands: ban and then kick.
+ It could be a nice idea to have a single "kb" command to perform this action.
+ Well...easy:
+ [example]
+ [cmd]alias[/cmd](kb){ [cmd]ban[/cmd] $0; [cmd]kick[/cmd] $0-; };
+ [/example]
+ This adds the "kb" alias: it can be called as a normal command:
+ [example]
+ kb spammer You're not welcome here!
+ [/example]
+ This will first execute "ban spammer" and then "kick spammer You're not welcome here".
+ Our kb is a really simple example... it doesn't check for the validity of the parameters:
+ the server will warn us if the parameters passed to kb were empty.
+ [/p]
+ [p]
+ The alias can be modified at any time by re-using the alias command.
+ Let's make our "kb" a bit more intelligent and add a check for the parameters.
+ TIP: It is a good idea to write the following examples in a text file and then use /parse <filename> to execute it.
+ [example]
+ [cmd]alias[/cmd](kb)
+ {
+ [cmd]if[/cmd]("$0" == "")
+ {
+ [cmd]echo[/cmd] "Usage: /kb <nickname> <kick reason>"
+ [cmd]return[/cmd]
+ }
+ [cmd]ban[/cmd] $0
+ %reason = $1-
+ [cmd]if[/cmd]("%reason" == "")%reason = "You're not welcome here!"
+ [cmd]kick[/cmd] $0 %reason
+ }
+ [/example]
+ The example above will first check the validity of the <nickname> passed to kb:
+ if no nickname was passed , it will warn the user and stop.
+ The next step will be the "ban <nickname>" call. Another enchancement is the "default reason":
+ we first assign the remaining parameters ($1- means "from $1 to the end") to a temporary variable,
+ if the variable is empty , a default kick reason is assigned.
+ Finally the "kick <nickname> <reason>" will be executed.
+ Get used to looking at the single command documentation pages, they will give
+ you the hints necessary to fully understand the above piece of code.
+ [/p]
+ [p]
+ Aliases can be used as a mean for structured programming.
+ In large scripts you will SURELY have "common tasks" to perform (like having specially
+ colored output or calculating a value from a set of other values)...
+ Aliases are the way of writing the common tasks: they are equivalent to the "procedures"
+ or "functions" in many high-level programming languages.
+ The alias as a procedure (subroutine or sub-task) has been shown in the "kb" example above:
+ it might be commonly called from complexier scripts or other aliases in case that a
+ kick & ban action is needed.
+ [/p]
+ [p]
+ The aliases can be used also as functions.
+ Assume that you need really often to calculate the sum of three numbers: a function-alias is the way.
+ [example]
+ [cmd]alias[/cmd](sum3){ [cmd]return[/cmd] $($0 + $1 + $2); };
+ [/example]
+ This will add the alias "sum3" and make it available both as a command and a function.
+ The "return" command sets the return value of a sequence of commands
+ (an alias is a sequence of commands...remember ?) and terminates the execution (by returning
+ the control to the caller).
+ So return $($0 + $1 + $2); will set the return value of the alias to the value
+ computed by $($0 + $1 + $2) that actually is the sum of the first three parameters passed.
+ You will then use it in the following way:
+ [example]
+ ...
+ %myfirstsum = $sum3(%somevalue,%someothervalue,4)
+ %anothersum = $sum3(12,%somevalue,%anothervalue)
+ ...
+ [/example]
+ Ops.. I've used some variables without actually explaining them... hehe.. please forgive me and read on.
+ This example is again really simple , but you might have complexier function-aliases.
+ The function-aliases are also normal aliases.... you can use it as a command:
+ [example]
+ /sum3 1 2 3
+ [/example]
+ Is a perfectly valid call.... it's just that it will have no visible results
+ (just because a command call implies ignoring the return value.
+ In fact there is no difference al all between function-aliases and normal-aliases:
+ the caller makes the difference: by calling an alias as a command the return value
+ just disappears in hyperspace, by calling an alias as a function , the return value
+ is propagated (and in fact "used").
+ (There are some "nice" exceptions to this rule...but you don't need to care about it, for now).
+ If return is not called inside an alias body , the return value will be just a null value.
+ [/p]
+ [p]
+ Aliases can accept switches just like any other command. The [fnc]$sw[/fnc] is there
+ exactly for that purpose. Check it out.
+ [/p]
+*/
+
+
+/*
+ @doc: kvs_addons
+ @type:
+ language
+ @keyterms:
+ addons, addon
+ @title:
+ The KVIrc addon system
+ @short:
+ Writing KVIrc addons
+ @body:
+ [big]Introduction[/big]
+ [p]
+ An addon is basically a set of KVS scripts, multimedia, documentation
+ and accessory files that implement a KVIrc feature.
+ It might be a simple automatic-away subsystem, a GUI newsticker or a complex file sharing
+ service (commonly called "fserve"). Addons are sometimes called "scripts".
+ In fact a KVIrc addon is usually made of more than one KVS script.
+ [/p]
+ [p]
+ KVIrc has a builtin addon management system that allows the users
+ to install, configure and uninstall features with a nice graphical interface.
+ The management system allows the addons to have documentation integrated in the
+ KVIrc help and to be translated in several languages.
+ [/p]
+
+ [big]Addon installation[/big]
+ [p]
+ The addons are usually shipped in compressed archives (such as tar.gz "tarballs" or
+ zip files). Once uncompressed they should contain a KVS script file called "install.kvs".
+ KVIrc will look for and execute this file when the user will ask for your addon to
+ be installed. The install.kvs will usually contain the code for the [b]registration[/b]
+ of your addon and will [cmd]include[/cmd] all the other necessary source files.
+ [/p]
+
+ [big]The minimal addon[/big]
+ [p]
+ The smallest addon that you can write is the one that does nothing.
+ It just need to be writte in a file named install.kvs and contain code
+ similar to the following:
+ [example]
+ [cmd]addon.register[/cmd]("myaddon", \
+ "1.0.0", \
+ "My First Addon", \
+ "An addon that is really cool but does simply nothing", \
+ "3.2.0.99.20051230")
+ {
+ }
+ [/example]
+ The code above does nothing but registers the "myaddon" addon.
+ [/p]
+ [p]
+ The first parameter is the internal addon id which can be used to identify
+ your addon inside KVIrc. The id must be unique: two addons that share the same
+ name cannot be installed. The second parameter is the addon version. It should
+ be expressed in the classic format [major].[minor].[pathlevel] or something
+ really similar (in fact KVIrc just expects the version to be a string composed
+ of numbers separated by dots). The version is compared when an addon is installed
+ and KVIrc complains if the user tries to downgrade an addon (that is to install
+ a less recent version over a more recent one). The third parameter
+ is the visible name of your addon: it will be displayed to the user in the
+ addon management dialog. It can contain the [fnc]$tr[/fnc] function so you
+ can have it translated to several languages. The fourth parameter
+ is a short description of the feature that the addon implements; it can contain
+ the $tr() function too. The fifth parameter is the minimal KVIrc version
+ required to run the addon. There is also a sixth parameter (the icon) and
+ some switches that can be used to fiddle a little bit more :)
+ [/p]
+ [p]
+ The callback instruction that follows the registration command is the
+ uninstallation code. KVIrc will invoke it when the user will ask for
+ your addon to be uninstalled. Don't assume that your addon will be never uninstalled:
+ sooner or later it will be. For example, when upgrading an addon KVIrc
+ will first uninstall the existing version and after that install the new one.
+ The uninstallation process is a very important requisite for any program (in any
+ programming language). In the example above there is nothing to uninstall (yet)
+ so the callback code is empty, but if you continue reading we will soon fill it.
+ [/p]
+
+ [big]A typical addon layout[/big]
+ [p]
+ As stated above, the addons are usually shipped in a compressed archive.
+ Once uncompressed, the archive will expand into a small directory tree
+ containing the addon code and all the related files.
+ In order to have uniformity I encourage you to use the following directory structure.
+ [/p]
+ [p]
+ [pre]
+ &nbsp; &nbsp; [b]addonId-version/[/b]
+ &nbsp; &nbsp; &nbsp; &nbsp; install.kvs
+ &nbsp; &nbsp; &nbsp; &nbsp; INSTALL
+ &nbsp; &nbsp; &nbsp; &nbsp; [b]src[/b]
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; source1.kvs
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; source2.kvs
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; source3.kvs
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...
+ &nbsp; &nbsp; &nbsp; &nbsp; [b]pics[/b]
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; addonId_pic1.png
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; addonId_pic2.png
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; addonId_pic3.png
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...
+ &nbsp; &nbsp; &nbsp; &nbsp; [b]audio[/b]
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; addonId_audio1.png
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; addonId_audio2.png
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; addonId_audio3.png
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...
+ &nbsp; &nbsp; &nbsp; &nbsp; [b]help[/b]
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; en
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; index.html
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; hints.html
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; it
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; index.html
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; hints.html
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...
+ &nbsp; &nbsp; &nbsp; &nbsp; [b]locale[/b]
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; addonId_it.mo
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; addonId_ru.mo
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; addonId_de.mo
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...
+ &nbsp; &nbsp; &nbsp; &nbsp; [b]...[/b]
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...
+ [/pre]
+ [/p]
+ [p]
+ The entries in [b]bold[/b] are directories while the other are files.
+ Please note that this is a general layout for a huge and rather complex
+ addon: you might not need all of these directories. Remember: the minimal
+ addon has only an install.kvs file. Anyway, a really cool addon
+ will probably have all of them and maybe some more.
+ [/p]
+ [p]
+ The toplevel directory should be named with your addonId and version.
+ Try to use no spaces in the directory entries (this will make the things
+ simplier for people that want to use your addon). The toplevel
+ directory should contain your install.kvs script and a file with
+ a small description and the basic installation instructions.
+ This file can be named INSTALL or README.
+ [/p]
+ [p]
+ Hint: Remember that your addon is going to be installed on different platforms
+ (at least linux, macosx and windows based).
+ The poor windows notepad has serious problems with reading text
+ files that contain only linefeeds as line separators. Keep it in mind...
+ [/p]
+ [p]
+ The main source directory for your addon should be named "src" and
+ should contain the implementation of the feature(s) you're going to provide.
+ These files should be executed by the means of the [cmd]parse[/cmd]
+ command (or [cmd]include[/cmd] if you like the C/C++ style) from install.kvs.
+ [/p]
+ [p]
+ The "pics" and "audio" (if relevant) directories should contain your
+ multimedia files. It is a good idea to prefix the filenames with your addon id
+ in order to avoid collisions with other addons. The install.kvs script
+ should copy these files to the appropriate locations under the KVIrc local
+ directory returned by [fnc]$file.localdir[/fnc]().
+ [/p]
+ [p]
+ The "help" directory should contain subdirectories for each language that
+ your help files are written in. The languages dirs should be named
+ with the language code also used for the translation files (like "en","it" etc...).
+ Please note that english is the default language and KVIrc will
+ fallback to the "en" subdirectory when no other language is found around...
+ The help files (and subdirectories) should be copied to the "help" subdirectory of the KVIrc local
+ directory returned by [fnc]$file.localdir[/fnc]().
+ Since there will be many help files inside the language dirs, it is a good idea
+ to either prefix your help files with your addon id or (better) to create
+ a subdirectory named agains your addon inside the help language directory.
+ For an english file this would lead to something like...
+ [example]
+ file.copy index.html $file.localdir("help/en/myaddon")
+ [/example]
+ [/p]
+ [p]
+ The "locale" directory should contain the *.mo files for your tranlations.
+ The localization process of a script is explained in [doc:localization]this document[/doc].
+ The *.mo files should be copied to the "locale" subdirectory of the KVIrc local
+ directory returned by [fnc]$file.localdir[/fnc]().
+ Your *.mo filenames should be prefixed by your addon id (again to avoid collisions).
+ [/p]
+
+ [big]The help and configuration callbacks[/big]
+ [p]
+ Each addon can have a help and a configuration callback. These are set
+ respectively by [cmd]addon.sethelpcallback[/cmd] and [cmd]addon.setconfigurecallback[/cmd].
+ [/p]
+ [p]
+ The help callback will be invoked by KVIrc when the user will ask help for your addon (mainly
+ from the addon management dialog, but not necessairly). It should call [cmd]help.open[/cmd]
+ with the name of your documentation index html file (it should be relative
+ to the help language directory: help.open myaddon/index.html will automatically
+ lookup the right language). If you provide no help callback, the buttons
+ for requesting help will be simply disabled. (A good an relatively complex addon
+ *should* have at least a minimal help file explaining the features).
+ [/p]
+ [p]
+ The configuration callback will be invoked when the user will try to configure
+ your addon from the addon management dialog. This callback is useful
+ mainly for complexier graphical scripts that can show up a dialog
+ that allows configuring all of the addon features. To use this callback
+ you will probably need some object scripting.
+ [/p]
+
+ [big]The real addon work[/big]
+ [p]
+ The real addon work is done by the scripts contained in the src directory.
+ They will likely add aliases (maybe in a nice namespace named agains your addon),
+ register event handlers, create actions, timers, toolbars and object classes.
+ You should install all of this stuff from your addon source files.
+ Remember that your source files will NOT be parsed every time KVIrc starts up:
+ your stuff must be registered in KVIrc and be able to startup itself, if needed.
+ Remember that you must clean up [b]everything[/b] in your uninstallation callback.
+ This means that you must remove the aliases, unregister the event handlers,
+ destroy the actions, kill the timers and the object classes you've created.
+ Be a clean coder :)
+ [/p]
+
+ [big]Where to start[/big]
+ [p]
+ It is a good idea to start on the KVIrc web site. There are surely
+ several addons to look at. Pick one that seems simple and analyze its
+ layout and code (wow... the free software!). It will be easier to do than it was to explain it :D
+ [/p]
+ [p]
+ Have fun! :)
+ [/p]
+*/
+
+
+/*
+ @doc: kvs_codingtips
+ @type:
+ generic
+ @title:
+ Coding tips
+ @keyterms:
+ indentation,indent,readability
+ @short:
+ Generic coding tips for scripters (and not only)
+ @body:
+ Here comes a small list of "coding tips".[br]
+ These apply to programming in general , not only to KVIrc scripting.[br]
+ [br]
+ 1. [b]Comment your code[/b][br]
+ A well commented code is easy to mantain, and easy to read by others.[br]
+ [br]
+ 2. [b]Indent your code[/b][br]
+ Indentation increases the code readability; this is again for you and
+ other developers that will be going to read your code.[br]
+ [br]
+ 3. [b]Use TABS to indent your code[/b][br]
+ ...and use ONLY TABS to indent.[br]
+ Tabs are better than space since most code editors allow you
+ to set the tab sice and thus to have the indentation steps smaller or bigger.[br]
+ This is really important since the indentation size is really a matter of personal taste.[br]
+ Mixing spaces and tabs is Evil (tm), since it makes the code look really
+ ugly in editors that have the tab size different than yours; in some cases the
+ code gets really unreadable.[br]
+ [br]
+ 4. [b]Use descriptive variable names[/b][br]
+ Using 'foo' as variable name implies tracing its semantic the next
+ time that you're going to read the code that uses it.[br]
+ This is really annoying and time-consuming, especially if the project
+ is getting large.[br]
+ Obviously using "thisIsACounterVariable" as name for a simple counter
+ is also a suicide.[br]
+ A good convention on variable names can speed up writing , debugging and mantaining code.[br]
+ Encoding the type of the variable in the variable name might be also a good idea,
+ but this is a matter of taste; personally I feel really well with that.[br]
+ Just as example, here go my fundamental convention rules for C++:[br]
+ [br]
+ - The type of the variable is encoded at the beginning of the variable name:[br]
+ [br]
+ - b prefix for the boolean varables[br]
+ - i prefix for signed integers[br]
+ - u prefix for unsigned integers[br]
+ - f and d prefixes for floating point stuff[br]
+ - sz prefix for strings (this is rather for string classes)[br]
+ - ...[br]
+ [br]
+ - Pointers have a "p" prefix prepended[br]
+ - Global variables start with a "g_" prefix[br]
+ - Member variables start with a "m_" prefix[br]
+ - Exception comes for local variables with obvious semantics[br]
+ [br]
+ - i,j,k,l for local loop counters[br]
+ - "aux" and "tmp" for local obvious short-term temporary variables[br]
+ [br]
+ So actually by ONLY reading "g_pszQuitMessage" I know that this is a global pointer to a string variable
+ containing a quit message. :)[br]
+ [/p]
+*/
+
+// FIXME: #warning "FINISH THE SYNTACTIC RULES DOC"
+
+/*
+ @doc: syntactic_rules
+ @type:
+ language
+ @keyterms:
+ productions
+ @title:
+ Syntactic rules
+ @short:
+ Syntactic rules of the KVIrc scripting language
+ @body:
+
+ In the following table you can find a good part of the
+ KVIrc scripting language syntactic rules.[br]
+ [br]
+ <entity> indicates a ENTITY THAT CAN APPEAR EXACTLY ONE TIME.[br]
+ [<entity>] indicates an OPTIONAL ENTITY.[br]
+ {<entity>} indicates an ENTITY THAT CAN APPEAR ONE OR MORE TIMES.[br]
+ 'entity' indicates a LITERAL ENTITY: written exactly as it is.[br]
+ <entity1>|<entity2> indicates mutually exclusive choices.[br]
+ The mutually exclusive choices are often separated in two or more
+ rules (productions), to improve readability.[br]
+ [table]
+ [tr]
+ [td]<command buffer>[/td]
+ [td][<whitespace>][<command block>]{<command buffer>}[/td]
+ [/tr]
+ [tr]
+ [td]<command buffer>[/td]
+ [td][<whitespace>][<single command>]{<command buffer>}[/td]
+ [/tr]
+ [tr]
+ [td]<whitespace>[/td]
+ [td]{<space>|<tab>|<newline>}['\'<newline>][<whitespace>][/td]
+ [/tr]
+ [tr]
+ [td]<space>[/td]
+ [td]' '['\'<newline>][<space>] (Ascii space character)[/td]
+ [/tr]
+ [tr]
+ [td]<tab>[/td]
+ [td]'\t' (Ascii horizontal tabulation character)[/td]
+ [/tr]
+ [tr]
+ [td]<newline>[/td]
+ [td]'\n' (Ascii line feed (LF) character)[/td]
+ [/tr]
+ [tr]
+ [td]<command block>[/td]
+ [td]'{' <command buffer>[<whitespace>] '}'[/td]
+ [/tr]
+ [tr]
+ [td]<single command>[/td]
+ [td]<comment>[/td]
+ [/tr]
+ [tr]
+ [td]<single command>[/td]
+ [td]<lvalue command> <command terminator>[/td]
+ [/tr]
+ [tr]
+ [td]<single command>[/td]
+ [td]<rvalue command> <command terminator>[/td]
+ [/tr]
+ [tr]
+ [td]<comment>[/td]
+ [td]'#' {<non comment terminator>} <comment terminator>[/td]
+ [/tr]
+ [tr]
+ [td]<comment terminator>[/td]
+ [td]<newline> | <end of string>[/td]
+ [/tr]
+ [tr]
+ [td]<end of string>[/td]
+ [td]No character (internally Ascii character 0)[/td]
+ [/tr]
+ [tr]
+ [td]<command terminator>[/td]
+ [td]<newline> | <end of string> | ';'[/td]
+ [/tr]
+ [tr]
+ [td]<non comment-terminator>[/td]
+ [td]Any Ascii character except <newline> and <end of string>[/td]
+ [/tr]
+ [tr]
+ [td]<simple command>[/td]
+ [td][<module name>'.']<command name>[<switch list>]{<space>}<command dependant part>[/td]
+ [/tr]
+ [tr]
+ [td]<lvalue command>[/td]
+ [td]<variable>[<space>]<operation>[/td]
+ [/tr]
+ [tr]
+ [td]<lvalue command>[/td]
+ [td]<variable>'->'<object command>[/td]
+ [/tr]
+ [tr]
+ [td]<lvalue command>[/td]
+ [td]<identifier>'->'<object command>[/td]
+ [/tr]
+ [tr]
+ [td]<operation>[/td]
+ [td]<one op operator>[/td]
+ [/tr]
+ [tr]
+ [td]<operation>[/td]
+ [td]<two op operator>[<space>]<param string>[/td]
+ [/tr]
+ [tr]
+ [td]<switch list>[/td]
+ [td]{<space>}'-'<alpha char>[{<space>}'='<single parameter>][<switch list>][/td]
+ [/tr]
+ [tr]
+ [td]<command name>[/td]
+ [td]<alphanumeric char>{<alphanumeric char>}[/td]
+ [/tr]
+ [tr]
+ [td]<module name>[/td]
+ [td]<alphanumeric char>{<alphanumeric char>}[/td]
+ [/tr]
+ [tr]
+ [td]<alphanumeric char>[/td]
+ [td]Ascii characters 'A' to 'Z' , 'a' to 'z' , '0' to '9' and '_'[/td]
+ [/tr]
+ [tr]
+ [td]<variable>[/td]
+ [td]<global variable> | <local variable>[/td]
+ [/tr]
+ [tr]
+ [td]<global variable>[/td]
+ [td]'%' <uppercase letter> [<alphanumeric char>]['['<param string>']'][/td]
+ [/tr]
+ [tr]
+ [td]<local variable>[/td]
+ [td]'%' <lowercase letter> [<alphanumeric char>]['['<param string>']'][/td]
+ [/tr]
+ [tr]
+ [td]<param string>[/td]
+ [td][<single parameter>][<space>[<param string>]][/td]
+ [/tr]
+ [tr]
+ [td]<single parameter>[/td]
+ [td]<variable> | <identifier> | <nonterminator token> | <string>[/td]
+ [/tr]
+ [tr]
+ [td]<nonterminator token>[/td]
+ [td]<nonterminator char>['\'<newline><nonterminator char>][/td]
+ [/tr]
+ [tr]
+ [td]<nonterminator char>[/td]
+ [td]Any ascii character except <space> and <command terminator>[/td]
+ [/tr]
+ [tr]
+ [td]<command dependant part>[/td]
+ [td][b]Production in each command help page[/b][/td]
+ [/tr]
+ [/table]
+ To be continued...
+*/
+
+/*
+ @doc: command_rebinding
+ @type:
+ language
+ @keyterms:
+ Not supported
+ @title:
+ Standard -r switch no longer supported
+ @short:
+ Standard -r switch no longer supported
+ @body:
+ Starting from version 3.0.0 the standard -r switch to commands is no longer supported.
+ You should rebind your command sequences with [cmd]rebind[/cmd]
+*/
+
+/*
+ @doc: kvs_datatypes
+ @type:
+ language
+ @keyterms:
+ global variable, global variables, local variable, local variables,
+ variables, variable, array, hash, dictionary, global variables, local variables,variable evaluation,
+ associative arrays, scalars, data types, percent sign, extended scope
+ @title:
+ Variables and Data types
+ @short:
+ All about the KVS variable and datatype management
+ @body:
+ [title]Basic syntax[/title]
+
+ [p]
+ A variable identifier is composed by a '%' (percent) sign followed
+ by a sequence of letters, digits or underscores.
+ Examples of valid variable names are:
+ [/p]
+
+ [example]
+ %i
+ %variable
+ %MyVar
+ %1
+ %thisisavar
+ %2ndName
+ %_hidden
+ [/example]
+
+ [p]
+ Variables are created when you assign something to them: there is no need
+ for a declaration (unlike other languages such as C/C++, Java or VB).
+ [/p]
+
+ [example]
+ [comment]# create a variable named %X by assigning the value 10 to it[/comment]
+ %X = 10
+ [comment]# use the variable[/comment]
+ echo "The value of X is" %X
+ [/example]
+
+ [title]Local and global variables[/title]
+
+ [p]
+ Variables can be local or global.
+ Local variables preserve their contents only inside the [b]scope[/b] of a single script.
+ Global variables are shared between all the scripts and preserve their contents
+ until they are explicitly unset or until KVIrc quits.
+ [/p]
+
+ [p]
+ Local variables start with a [b]lowercase letter[/b] while the global ones with an [b]uppercase letter[/b].
+ [/p]
+
+ [example]
+ %var = 10; [comment]# this is a local variable[/comment]
+ %Var = 10; [comment]# this is a global variable[/comment]
+ [/example]
+
+ [p]
+ You can also force a variable that start with a lowercase letter to be global
+ by predeclaring it with the [cmd]global[/cmd] keyword.[br]
+ [/p]
+
+ [example]
+ [comment]# copy this script to a file and run /[cmd]parse[/cmd] <filename>[/comment]
+ global %a
+ %a = "The contents of the variable a"
+ %b = "The contents of the variable b"
+ [comment]# %a is a global variable now : all the other scripts can see its value[/comment]
+ [comment]# %b is a local variable and no other scripts can see its value[/comment]
+ [/example]
+
+ [p]
+ If you have executed the example above from a file (by the means of [cmd]parse[/cmd])
+ then now you can type
+ [/p]
+
+ [example]
+ [cmd]echo[/cmd] %a
+ [/example]
+
+ [p]
+ in the commandline to see the contents of the variable %a.
+ If you also try
+ [/p]
+
+ [example]
+ [cmd]echo[/cmd] %b
+ [/example]
+
+ [p]
+ you will see nothing printed since %b was local to the parsed script.
+ [/p]
+
+ [title]Data types[/title]
+
+ [p]
+ KVS has three main categories of data types: scalars, arrays and associative
+ arrays (also known as dictionaries or hashes).
+ [/p]
+
+ [subtitle]Scalars[/subtitle]
+
+ [p]
+ The scalars are simple variables containing a single value (a string or an integer).
+ [/p]
+
+ [example]
+ [comment]# %a is a scalar variable[/comment]
+ %a = "This is a string"
+ [cmd]echo[/cmd] %a
+ %a = 24.5
+ [cmd]echo[/cmd] %a
+ [/example]
+
+ [subtitle]Arrays[/subtitle]
+
+ [p]
+ Arrays are collections of items indexed by integers. The array items
+ are selected by placing the index in square brackets just after the array name.
+ [/p]
+
+ [example]
+ %arrayName[index]
+ [/example]
+
+ [p]
+ An easy way to create an array is to use the [fnc]$array[/fnc] function.
+ [/p]
+
+ [example]
+ %a = $array("element1","element2","element3"); [comment]# Create an array with 3 items[/comment]
+ [cmd]for[/cmd](%i=0;%i<3;%i++)
+ {
+ echo %a[%i]; [comment]# Accessing the %i'th element of the array[/comment]
+ }
+ [/example]
+
+ [p]
+ Note that in the example above %a refers to the whole array while %a[%i] refers
+ to one of its elements, in particular the one with index %i.
+ You also create an array by explicitly assigning to one of its elements:
+ [/p]
+
+ [example]
+ %a[9] = "This is an array element";
+ [/example]
+
+ [p]
+ Array indexes are zero-based so in the example above you have created an array
+ with 10 items. You can find out an array's length with the [fnc]$length[/fnc]() function.
+ [/p]
+
+ [example]
+ %a[9] = "This is an array element";
+ echo $length(%a)
+ [/example]
+
+ [p]
+ Be aware that by making such an assignment you implicitly consume some memory for
+ all the preceeding array items (even if they are unset). This means that
+ a simple instruction like the following may eat a huge amount of memory at once:
+ [/p]
+
+ [example]
+ %a[1000000] = "An array element faaaaaar away...";
+ echo $length(%a)
+ [/example]
+
+ [note]
+ [p]
+ Food for thoughts:
+ [/p]
+ [p]
+ KVIrc allocates a pointer for each item in the array. The pointer is
+ empty when the item is unset and points to an additional block
+ of memory when the item is set. The size of a pointer is platform
+ dependant: on the platforms supported by KVIrc it's either 32 or 64 bit.
+ The size of the additional block depends both on the platform
+ and on the contents of the item... it's average value may
+ be around 16 bytes. The array size is determined by the last SET element index.
+ All this this means that in the worst case (64 bit assumption) an array in
+ that the highest indexed item set is N eats up at least N*8+16 bytes of memory.
+ [/p]
+ [/note]
+
+ [p]
+ Besides the traditional indexed looping method you
+ can also use the [cmd]foreach[/cmd] command to iterate the items of an array.
+ Be aware that [cmd]foreach[/cmd] will NOT iterate over unset items in the
+ array unless you use the -a switch.
+ [/p]
+
+ [example]
+ %Array[0]=Pippo
+ %Array[1]=Pluto
+ %Array[2]=Paperino
+ %Array[5]=Prova
+ [cmd]foreach[/cmd](%item,%Array)[cmd]echo[/cmd] Got Item: %item
+ [/example]
+
+ [p]
+ Note that the items 3 and 4 are simply skipped.
+ [/p]
+
+ [subtitle]Hashes[/subtitle]
+
+ [p]
+ The hashes are collections of items indexed by strings: the word "hash"
+ is in fact a shortcut for "hashtable". In literature hashes are also called
+ "associative arrays", "dictionaries" or "key-value pair sets".
+ The hash items are selected by placing the key in curly brackets
+ just after the hash name.
+ [/p]
+
+ [example]
+ %hashName{key}
+ [/example]
+
+ [p]
+ An easy way to create a hash is to use the [fnc]$hash[/fnc] function.
+ [/p]
+ [example]
+ %a = $hash("key1","value1","key2","value2","key3","value3")
+ [cmd]foreach[/cmd](%key,[fnc]$keys[/fnc](%a))
+ {
+ echo "KEY:" %key "VALUE:" %a{%key};
+ }
+ [/example]
+
+ [p]
+ Note that in the example above %a refers to the whole hash while %a{%i} refers
+ to one of its elements, in particular the one with the key %key.
+ You also create a hash by explicitly assigning to one of its elements:
+ [/p]
+
+ [example]
+ %a{"MyKey"} = "MyValue"
+ [/example]
+
+ [p]
+ You may have already noticed that the [fnc]$key[/fnc]() function returns
+ the array of the hash keys: it is useful to iterate over the hash items.
+ [/p]
+
+ [title]Mutability of variables[/title]
+
+ [p]
+ KVS is not strictly typed: any variable can assume different type identities at different times,
+ even in the same script.
+ [/p]
+
+ [example]
+ [comment]# %a is a scalar[/comment]
+ %a = "This is a string"
+ [comment]# %a becomes an array with 3 elements[/comment]
+ %a = $array("element1","element2","element3");
+ [comment]# %a becomes a hash with two values[/comment]
+ %a = $hash("key1","value1","key2","value2");
+ [/example]
+
+ [p]
+ In literature this kind of variable is called [b]variant[/b] and this is the
+ term that you will find all around the documentation when an explicit
+ data type is not requested.
+ [/p]
+
+ [p]
+ Note that array and hash items are variants too. This means that you can have arrays
+ of arrays, hashes of arrays of hashes and any other multidimensional combination you like.
+ However remember that hash keys are strings and not variants so you can't use an array as hash key.
+ [/p]
+
+ [example]
+ [comment]# here we eat 256 locations of memory at once :)[/comment]
+ %a[16][16] = 10
+ [comment]# a hash of hashes: here we eat just two memory locations[/comment]
+ %a{"16"}{"16"} = 10
+ [/example]
+
+
+ [p]
+ In most cases the KVS engine manages automatically the conversion between data types.
+ For example, when you put an array in a place where a scalar is requested, KVIrc
+ automatically transforms it to a scalar string by joining all the items with a comma.
+ [/p]
+
+ [example]
+ %a = $array("element1","element2","element3");
+ echo %a; [comment]# echo expects its arguments to be scalar[/comment]
+ [/example]
+
+ [p]
+ Conversely, when you put a scalar in place of an array, KVIrc automatically
+ transforms it to an array with a single item. In this way a function like
+ [fnc]$sort[/fnc] works also with a scalar.
+ [/p]
+
+ [p]
+ In literature the conversions between data types are called [b]casts[/b]. When
+ the conversion is automatic the cast is said to be [b]implicit[/b].
+ [/p]
+
+ [p]
+ KVS handles also the other possible implicit casts: scalar->hash,hash->scalar,array->hash,hash->array.
+ Experiment with it.
+ [/p]
+
+ [title]More about scalars[/title]
+
+ [p]
+ Internally KVS is implicitly typed: the "scalar" data type is in fact
+ a set of types that KVIrc manages silently. The types are: integer, string, real, boolean and hobject.
+ [/p]
+
+ [p]
+ Integers are non-floating point numbers. Their allowable range depends on the underlying
+ platform integer size: usually 32 or 64 bit.
+ [/p]
+
+ [p]
+ Reals are floating point numbers. Their allowable range and precision depends on the underlying
+ platform.
+ [/p]
+
+ [p]
+ Booleans are either true or false values.
+ [/p]
+
+ [p]
+ Hobject stands for Handle to Object and it is a sort of a C++ pointer.
+ Detailed description of objects is in [doc:objects]this document[/doc].
+ [/p]
+
+ [p]
+ Basically anything else fails in the "string" category.
+ [/p]
+
+ [p]
+ In most cases KVS manages all the conversions between data types automatically.
+ For example an integer becomes a true boolean when it's non zero and a false boolean
+ otherwise, a real becomes an integer by truncating it's fractional part...
+ [/p]
+
+ [p]
+ You can find out the type of a specified variable by using the [fnc]$typeof[/fnc]() function.
+ [/p]
+
+ [example]
+ %a = 1
+ echo $typeof(%a)
+ %a = 1.1
+ echo $typeof(%a)
+ %a = $true
+ echo $typeof(%a)
+ %a = "test"
+ echo $typeof(%a)
+ [/example]
+
+ [p]
+ There is also another subtle type of scalar called "nothing". It stands for an
+ empty (unset) variable.
+ [/p]
+
+ [example]
+ %a = $nothing
+ echo $typeof(%a)
+ [/example]
+
+ [p]
+ Nothing is something in between a data type and a special value for all the other data types:
+ it rappresents absence of information.
+ This may look a bit confusing but realize that all the unreferenced KVS variable are in fact of type "nothing":
+ they just don't exist. This means that you can use [fnc]$nothing[/fnc]() to effectively
+ unset a variable.
+ [p]
+
+ [p]
+ Again, when possible, the conversion between nothing and the other data types is
+ performed automatically. Nothing becomes an empty string, a null object handle or an empty array.
+ [/p]
+
+
+ [title]Explicit casts[/title]
+
+ [p]
+ You can make explicit conversions between some data types by using the casting functions.
+ [fnc]$integer[/fnc]() will attempt to convert the variant parameter to an integer, [fnc]$real[/fnc]()
+ will cast to a floating point value, [fnc]$boolean[/fnc]() will convert to a
+ true/false value, [fnc]$string[/fnc]() will explicitly convert to a string,
+ [fnc]$array[/fnc]() will convert to an array and [fnc]$hash[/fnc] will return
+ a dictionary. By assigning the special [fnc]$nothing[/fnc]() value you will
+ convert to the nothing data type (or simply unset the variable).
+ The only explicit conversion that is not possible is to hobject.
+ [/p]
+
+ [p]
+ As stated several times in this document, KVS tries to manage the casts automatically
+ so you usually don't need to care about it. The explicit casts are provided for
+ the very few cases where an automatic conversion would lead to an unexpected value (for your script)
+ and for writer's clarity.
+ [/p]
+
+ [title]More about variables lifecycle[/title]
+
+ [p]
+ As stated above variables start their existence when you assign something to them.
+ After a variable has been created it persists until it goes out of his scope (remember
+ about local and global variables ?) or you explicitly destroy it. You will usually
+ not care about it and just leave the KVS engine to do his cleaning job but it's still worth
+ knowing that you actually can force KVIrc to free the memory used by a variable.
+ [/p]
+
+ [p]
+ The first method to explicitly destroy a variable is to call [cmd]unset[/cmd] on it.
+ [cmd]unset[/cmd] in fact accepts a list of variables so you can destroy more variables at once.
+ [/p]
+
+ [example]
+ %a = [fnc]$array[/fnc]("data","for","a","really","huge","array","of","items")
+ %b = 10
+ %c = "just a string that eats memory"
+ [cmd]unset[/cmd] %a,%b,%c
+ [/example]
+
+ [p]
+ The KVS engine treats unset variables just like empty strings. The opposite is also valid: empty
+ strings behave like empty (unset) variables. This means that you can assign an empty string
+ to a variable to unset it.
+ [/p]
+
+ [example]
+ %a = "test"; [comment]# %a starts his existence[/comment]
+ %b = "test2";
+ %a = ""; [comment]# %a is in fact unset[/comment]
+ %b = ; [comment]# syntactically this is just the same as above[/comment]
+ [/example]
+
+ [p]
+ Note that because of mutability of variables (explained above) you can use the empty string
+ assignment also to free arrays and hashes.
+ [/p]
+
+ [title]Extended scope variables[/title]
+
+ [p]
+ Beside local and global variables there is a third family of them.
+ Variables that have a ':' character just after the leading '%' are [b]extended scope[/b] variables.
+ "%:index" , "%:Hello" , "%:something.else" are all valid special scope variable names.
+ They're actually used in popups and in timers (but later I might find other usages as well :).
+ "Extended scope" means that these variables are somewhere in the middle between
+ global and local variables. They normally act as local , but in some cases their [b]lifetime[/b] and [b]visibility[/b]
+ may be extended.
+ [/p]
+
+ [p]
+ For example , in the popups , all the special scope variables
+ are visible during all the "lifetime" of a popup (so from the prologue code call to
+ the moment when the user selects an item and the corresponding code is executed).
+ This allows you to pre-calculate some data or conditions in the popup prologue
+ and use this data in the popup item conditions and item handlers.
+ [/p]
+
+ [title]Variable evaluation[/title]
+
+ [p]
+ A variable can appear in every place where a parameter
+ is expected: so after the command name, after a switch or inside
+ an identifier parameters. The KVS parser will try to extract the longest possible variable
+ name after a literal percent '%' sign everywhere in the parameter string. So the command sequence
+ [/p]
+ [example]
+ %number = 1st; echo this is my %number variable test
+ [/example]
+ [p]
+ will first assign "1st" to the variable "%number" and then execute
+ "echo this is my 1st variable test". The following example will NOT work as expected.
+ [/p]
+ [example]
+ %number = 1; echo this is my %numberst variable test
+ [/example]
+ [p]
+ KVS will assign "1" to %number in this case but the next variable
+ name extracted will be "%numberst" that is actually empty; so finally
+ "echo this is my variable test" will be executed.
+ To avoid this problem you can use the backslash escape character:
+ [/p]
+ [example]
+ %number = 1; echo this is my %number\st variable test
+ [/example]
+
+ [title]Putting it all together[/title]
+
+ [p]
+ Variables can be either local, global or have an extended scope. Their start to exist
+ when you first assign something to them and they disappear when they go out of their
+ scope or you explicitly destroy them.
+ [/p]
+
+ [p]
+ KVS has 8 builtin data types: string, integer, real, boolean, hobject, nothing, array and hash.
+ The first 6 are scalar data types while the last two are not.
+ [/p]
+
+ [p]
+ When possible, KVS manages all the conversions between data types silently.
+ In the few cases in that an implicit conversion is not possible you have to manage the conversion
+ manually otherwise KVS will complain.
+ [/p]
+*/
+
+
+
+void KviKvsParser::skipSpaces()
+{
+ while((KVSP_curCharUnicode == ' ') || (KVSP_curCharUnicode == '\t'))
+ {
+ KVSP_skipChar;
+ }
+
+ if(KVSP_curCharUnicode == '\\')
+ {
+ KVSP_skipChar;
+ if(KVSP_curCharUnicode == '\n')
+ {
+ KVSP_skipChar;
+ skipSpaces();
+ return;
+ } else if(KVSP_curCharUnicode == '\r')
+ {
+ KVSP_skipChar;
+ if(KVSP_curCharUnicode == '\n')
+ {
+ KVSP_skipChar;
+ skipSpaces();
+ return;
+ } else {
+ KVSP_backChar;
+ KVSP_backChar;
+ }
+ } else {
+ KVSP_backChar;
+ }
+ }
+}
+
+
+
+bool KviKvsParser::skipSpacesAndNewlines()
+{
+ while((KVSP_curCharUnicode == ' ') || (KVSP_curCharUnicode == '\t') || (KVSP_curCharUnicode == '\n') || (KVSP_curCharUnicode == '\r'))
+ {
+ KVSP_skipChar;
+ }
+
+ switch(KVSP_curCharUnicode)
+ {
+ case '\\':
+ KVSP_skipChar;
+ if(KVSP_curCharUnicode == '\n')
+ {
+ KVSP_skipChar;
+ return skipSpacesAndNewlines();
+ } else if(KVSP_curCharUnicode == '\r')
+ {
+ KVSP_skipChar;
+ if(KVSP_curCharUnicode == '\n')
+ {
+ KVSP_skipChar;
+ return skipSpacesAndNewlines();
+ } else {
+ KVSP_backChar;
+ KVSP_backChar;
+ }
+ } else {
+ KVSP_backChar;
+ }
+ break;
+ case '#':
+ case '/':
+ // we allow comments too!
+ (void)parseComment(); // this will return 0 anyway (and never trigger an error here)
+ if(error())return false;
+ return skipSpacesAndNewlines();
+ break;
+ }
+ return true;
+}
+
+void KviKvsParser::skipToNextLine()
+{
+ while((KVSP_curCharUnicode != 0) && (KVSP_curCharUnicode != '\n'))
+ KVSP_skipChar;
+
+ if(KVSP_curCharUnicode == '\n')KVSP_skipChar;
+}
+
+
+KviKvsTreeNodeInstruction * KviKvsParser::parseInstructionList()
+{
+ KviKvsTreeNodeInstructionBlock * l = new KviKvsTreeNodeInstructionBlock(KVSP_curCharPointer);
+
+
+ for(;;)
+ {
+ if(!skipSpacesAndNewlines())
+ {
+ delete l;
+ return 0;
+ }
+
+ if(KVSP_curCharUnicode != 0)
+ {
+ // instruction
+ KviKvsTreeNodeInstruction * i = parseInstruction();
+ if(i)l->addInstruction(i);
+ else {
+ if(error())
+ {
+ // ops...
+ delete l;
+ return 0;
+ } // else empty instruction
+ }
+ } else {
+ if(l->instructionCount() == 1)
+ {
+ // return the single instruction instead
+ KviKvsTreeNodeInstruction * i = l->releaseFirst();
+ delete l;
+ return i;
+ }
+ // end of buffer
+ return l;
+ }
+ }
+
+ // never here
+ KVSP_ASSERT(false);
+ return 0;
+}
+
+
+
+
+KviKvsTreeNodeData * KviKvsParser::parseParameterPercentOrDollar()
+{
+ KVSP_ASSERT((KVSP_curCharUnicode == '%') || (KVSP_curCharUnicode == '$') || (KVSP_curCharUnicode == '@'));
+
+ if(KVSP_curCharUnicode == '%')
+ {
+ KVSP_skipChar;
+ if(!KVSP_curCharIsLetter && (KVSP_curCharUnicode != ':'))
+ {
+ // be flexible : allow an "alone" '%' char
+ return new KviKvsTreeNodeConstantData(KVSP_curCharPointer - 1,new KviKvsVariant(QString("%")));
+ }
+ // this is surely a variable or function
+ KVSP_backChar;
+ } else if(KVSP_curCharUnicode == '$')
+ {
+ KVSP_skipChar;
+ if(!KVSP_curCharIsFunctionStart)
+ {
+ // be flexible : allow an "alone" '$' char
+ return new KviKvsTreeNodeConstantData(KVSP_curCharPointer - 1,new KviKvsVariant(QString("$")));
+ }
+ // this is surely a variable or function
+ KVSP_backChar;
+ }
+
+ return parsePercentOrDollar();
+}
+
+
+
+KviKvsTreeNodeData * KviKvsParser::parsePercentOrDollar(bool bInObjScope)
+{
+ KVSP_ASSERT((KVSP_curCharUnicode == '%') || (KVSP_curCharUnicode == '$') || (KVSP_curCharUnicode == '@'));
+
+ KviKvsTreeNodeData * r;
+ const QChar * pBegin;
+
+ if(KVSP_curCharUnicode == '%')
+ {
+ r = parsePercent(bInObjScope);
+ if(!r)return 0;
+ } else if(KVSP_curCharUnicode == '$')
+ {
+ r = parseDollar(bInObjScope);
+ if(!r)return 0;
+ } else {
+ // this is @
+ static QString szStrayAtRoutineName("@");
+ static QString szMightBeStrayAtOrThisRoutineName("@?");
+
+ pBegin = KVSP_curCharPointer;
+
+ KVSP_skipChar;
+
+ if(bInObjScope || ((KVSP_curCharUnicode != '$') && (KVSP_curCharUnicode != '%')))
+ {
+ // we're sure this is just a stray @
+ // we use a trick here: when @ is not supposed to be an object scope call
+ // then we create a function that will return the @ itself as a string
+ KviKvsCoreFunctionExecRoutine * pRoutine = KviKvsKernel::instance()->findCoreFunctionExecRoutine(szStrayAtRoutineName);
+ r = new KviKvsTreeNodeCoreFunctionCall(KVSP_curCharPointer,szStrayAtRoutineName,pRoutine,new KviKvsTreeNodeDataList(KVSP_curCharPointer));
+ //KVSP_skipChar;
+ return r;
+ }
+ // we're not in object scope and cur char is either $ or %
+ // check for the common syntax $0!$1@$2 seen in hostmasks
+ // @$<digit> is non valid anyway
+ if(KVSP_curCharUnicode == '$')
+ {
+ KVSP_skipChar;
+ if(KVSP_curCharIsNumber)
+ {
+ // again a stray @
+ KVSP_backChar;
+ KviKvsCoreFunctionExecRoutine * pRoutine = KviKvsKernel::instance()->findCoreFunctionExecRoutine(szStrayAtRoutineName);
+ r = new KviKvsTreeNodeCoreFunctionCall(KVSP_curCharPointer,szStrayAtRoutineName,pRoutine,new KviKvsTreeNodeDataList(KVSP_curCharPointer));
+ return r;
+ }
+ KVSP_backChar;
+ }
+
+ // now we're unsure: we will be able to decide only at runtime if it is a stray @ or the shortcut for $this
+ // this design was a bit ugly.. I must admit it... but it is really useful when writing object classes...
+ KviKvsCoreFunctionExecRoutine * pRoutine = KviKvsKernel::instance()->findCoreFunctionExecRoutine(szMightBeStrayAtOrThisRoutineName);
+ // MUST BE THERE!
+ // core function call
+ r = new KviKvsTreeNodeCoreFunctionCall(pBegin,szMightBeStrayAtOrThisRoutineName,pRoutine,new KviKvsTreeNodeDataList(pBegin));
+
+ skipSpaces();
+
+ goto handle_scope_operator;
+ }
+
+ pBegin = KVSP_curCharPointer;
+
+ while((KVSP_curCharUnicode == '[') || (KVSP_curCharUnicode == '{'))
+ {
+ if(KVSP_curCharUnicode == '[')
+ {
+ // array index
+ KVSP_skipChar;
+ skipSpaces();
+ if(KVSP_curCharUnicode == ']')
+ {
+ KVSP_skipChar;
+ if(KVSP_curCharUnicode == '#')
+ {
+ // count
+ KVSP_skipChar;
+ return new KviKvsTreeNodeArrayCount(pBegin,r);
+ } else {
+ // a hash reference assert
+ return new KviKvsTreeNodeArrayReferenceAssert(pBegin,r);
+ }
+ }
+
+ KviKvsTreeNodeExpression * e = parseExpression(']');
+ if(!e)
+ {
+ delete r;
+ return 0;
+ }
+
+ r = new KviKvsTreeNodeArrayElement(pBegin,r,e);
+ } else {
+ // hash key
+ KVSP_skipChar;
+ skipSpaces();
+
+ if(KVSP_curCharUnicode == '}')
+ {
+ // entire hash ?
+ KVSP_skipChar;
+ if(KVSP_curCharUnicode == '#')
+ {
+ KVSP_skipChar;
+ return new KviKvsTreeNodeHashCount(pBegin,r);
+ }
+ return new KviKvsTreeNodeHashReferenceAssert(pBegin,r);
+ }
+
+ KviKvsTreeNodeData * i = parseHashKey();
+ if(!i)
+ {
+ // error
+ delete r;
+ return 0;
+ }
+
+ KVSP_ASSERT(KVSP_curCharUnicode == '}');
+
+ KVSP_skipChar;
+
+ r = new KviKvsTreeNodeHashElement(pBegin,r,i);
+ }
+ }
+
+ if(KVSP_curCharUnicode != '-')
+ {
+ return r;
+ }
+
+ if(!r->canEvaluateToObjectReference())return r; // FIXME: maybe print a warning ?
+
+ // might be a scope operator
+
+ KVSP_skipChar;
+ if(KVSP_curCharUnicode != '>')
+ {
+ KVSP_backChar;
+ return r;
+ }
+
+
+ KVSP_skipChar;
+ skipSpaces();
+
+ if((KVSP_curCharUnicode != '$') && (KVSP_curCharUnicode != '%'))
+ {
+ KVSP_setCurCharPointer(pBegin);
+ return r;
+ }
+
+handle_scope_operator:
+
+ // hmmm... there really seems to be a scope operator there...
+ if(KVSP_curCharUnicode == '%')
+ {
+ KVSP_skipChar;
+ if(!KVSP_curCharIsLetter)
+ {
+ // be flexible : allow an "alone" '%' char
+ KVSP_setCurCharPointer(pBegin);
+ return r;
+ }
+ } else {
+ KVSP_skipChar;
+ if(!KVSP_curCharIsFunctionStart)
+ {
+ // be flexible : allow an "alone" '$' char
+ KVSP_setCurCharPointer(pBegin);
+ return r;
+ }
+ }
+
+ // ok : try the scope operator
+ KVSP_backChar;
+
+ pBegin = KVSP_curCharPointer;
+
+ KviKvsTreeNodeData * r2 = parsePercentOrDollar(true);
+
+ if(!r2)
+ {
+ // must be an error
+ delete r;
+ return 0;
+ }
+
+ if(!r2->canEvaluateInObjectScope())
+ {
+ // ops... it really wasn't
+ delete r2;
+ KVSP_setCurCharPointer(pBegin);
+ return r;
+ }
+
+ return new KviKvsTreeNodeScopeOperator(pBegin,r,r2);
+}
+
+
+
+
+
+KviKvsTreeNodeVariable * KviKvsParser::parsePercent(bool bInObjScope)
+{
+ KVSP_ASSERT(KVSP_curCharUnicode == '%');
+
+ const QChar * pBegin = KVSP_curCharPointer;
+
+ KVSP_skipChar;
+
+ bool bExtScope;
+
+ if(KVSP_curCharUnicode == ':')
+ {
+ bExtScope = true;
+ KVSP_skipChar;
+ } else {
+ bExtScope = false;
+ }
+
+ if(!((KVSP_curCharIsLetterOrNumber) || (KVSP_curCharUnicode == '_')))
+ {
+ error(KVSP_curCharPointer,__tr2qs("Syntax error after '%' variable prefix. If you want to use a plain '%' in the code you need to escape it"));
+ return 0;
+ }
+
+ const QChar * pIdBegin = KVSP_curCharPointer;
+
+ while((KVSP_curCharIsLetterOrNumber) || (KVSP_curCharUnicode == '_') || (KVSP_curCharUnicode == '.'))KVSP_skipChar;
+
+ QString szIdentifier(pIdBegin,KVSP_curCharPointer - pIdBegin);
+
+//#warning "ADD A KviKvsTreeNodeBuiltinCleanupVariablesCommand on this KviKvsParser object"
+//#warning "KviKvsParser will append it to the script"
+
+ if(bExtScope)
+ {
+ if(bInObjScope)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Objects have no extended scope variables"));
+ return 0;
+ }
+ return new KviKvsTreeNodeExtendedScopeVariable(pBegin,szIdentifier);
+ }
+
+ if(bInObjScope)
+ return new KviKvsTreeNodeObjectField(pBegin,szIdentifier);
+
+ if(m_pGlobals)
+ {
+ if(m_pGlobals->find(szIdentifier))return new KviKvsTreeNodeGlobalVariable(pBegin,szIdentifier);
+ }
+
+ if(m_iFlags & AssumeLocals)
+ return new KviKvsTreeNodeLocalVariable(pBegin,szIdentifier);
+
+ if(pIdBegin->category() & QChar::Letter_Uppercase)
+ {
+ //if(m_iFlags & Pedantic)
+ // warning(pIdBegin,__tr2qs("Declaring global variables with an uppercase letter is deprecated. Global variables should be declared with 'global'"));
+ return new KviKvsTreeNodeGlobalVariable(pBegin,szIdentifier);
+ }
+
+ return new KviKvsTreeNodeLocalVariable(pBegin,szIdentifier);
+}
+
+KviKvsTreeNodeInstruction * KviKvsParser::parseInstruction()
+{
+ switch(KVSP_curCharUnicode)
+ {
+ case '#':
+ case '/':
+ (void)parseComment(); // this will return 0 anyway
+ return 0;
+ break;
+ case 0: // empty instruction
+ return 0;
+ break;
+ case '\n':
+ case '\r':
+ case ';': // empty instruction
+ KVSP_skipChar;
+ return 0;
+ break;
+ case '{': // command block
+ return parseInstructionBlock();
+ break;
+ case '$':
+ case '%':
+ case '@':
+ return parseVoidFunctionCallOrOperation();
+ break;
+ default:
+ if(KVSP_curCharIsLetter || (KVSP_curCharUnicode == '_'))
+ {
+ // must be a command
+ return parseCommand();
+ } else {
+ // what the heck is this ?
+ error(KVSP_curCharPointer,__tr2qs("Found character '%q' (unicode %x) where an instruction was expected"),KVSP_curCharPointer,KVSP_curCharUnicode);
+ return 0;
+ }
+ break;
+ }
+
+ // never here
+ KVSP_ASSERT(false);
+ return 0;
+}
+
+KviKvsTreeNodeInstruction * KviKvsParser::parseInstructionBlock()
+{
+ KVSP_ASSERT(KVSP_curCharUnicode == '{');
+
+ KVSP_skipChar;
+
+ const QChar * pBegin = KVSP_curCharPointer;
+
+ KviKvsTreeNodeInstructionBlock * b = new KviKvsTreeNodeInstructionBlock(pBegin - 1);
+
+ for(;;)
+ {
+ if(!skipSpacesAndNewlines())
+ {
+ delete b;
+ return 0;
+ }
+
+ switch(KVSP_curCharUnicode)
+ {
+ case 0:
+ delete b;
+ warning(pBegin,__tr2qs("Unterminated instruction block"));
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of script in instruction block (missing closing brace)"));
+ return 0;
+ break;
+ case '}':
+ KVSP_skipChar;
+ if(b->instructionCount() <= 1)
+ {
+ if(b->instructionCount() < 1)
+ {
+ delete b;
+ return 0; // just an empty block
+ }
+ // a single instruction
+ KviKvsTreeNodeInstruction * i = b->releaseFirst();
+ delete b;
+ return i;
+ }
+ return b;
+ break;
+ default:
+ // instruction
+ KviKvsTreeNodeInstruction * i = parseInstruction();
+ if(i)b->addInstruction(i);
+ else {
+ if(error())
+ {
+ // ops...
+ delete b;
+ return 0;
+ } // else empty instruction
+ }
+ break;
+ }
+ }
+ // never reached
+ return 0;
+}
+
+KviKvsTreeNodeSwitchList * KviKvsParser::parseCommandSwitchList()
+{
+ KVSP_ASSERT(KVSP_curCharUnicode == '-');
+
+ KviKvsTreeNodeSwitchList * sw = new KviKvsTreeNodeSwitchList(KVSP_curCharPointer);
+
+ while(KVSP_curCharUnicode == '-')
+ {
+ const QChar * pBegin = KVSP_curCharPointer;
+ KVSP_skipChar;
+
+ bool bLong = false;
+
+ if(KVSP_curCharUnicode == '-')
+ {
+ // long switch
+ pBegin = KVSP_curCharPointer;
+ KVSP_skipChar;
+ bLong = true;
+ }
+
+ skipSpaces();
+ if(!KVSP_curCharIsLetter)
+ {
+ if(KVSP_curCharIsNumber || KVSP_curCharIsEndOfCommand)
+ {
+ // a -digit : this is probably a negative number instead
+ // or just a single dash (or couple of dashes)
+ // go back to the initial dash and treat it as text...and return the current switch list
+ KVSP_setCurCharPointer(pBegin);
+ if(sw->isEmpty())
+ {
+ // not an error!
+ delete sw;
+ return 0;
+ }
+ return sw;
+ } else {
+ delete sw;
+ warning(pBegin,__tr2qs("The dash after a command should be followed by a letter (switch), by a digit (negative number) or be escaped"));
+
+ if(KVSP_curCharUnicode == 0)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Unexpected character '%q' (unicode %x) after a switch dash"),KVSP_curCharPointer,KVSP_curCharUnicode);
+ } else {
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of script after a switch dash"));
+ }
+ return 0;
+ }
+ }
+
+ const QChar * pSw = KVSP_curCharPointer;
+
+ KVSP_skipChar;
+ while((KVSP_curCharIsLetterOrNumber) || (KVSP_curCharUnicode == '-'))KVSP_skipChar;
+
+ const QChar * pSwEnd = KVSP_curCharPointer;
+
+ skipSpaces();
+
+ if(KVSP_curCharUnicode == '=')
+ {
+ KVSP_skipChar;
+ skipSpaces();
+ KviKvsTreeNodeData * p = parseCommandParameter();
+ if(!p)
+ {
+ // must be an error :(
+ if(error())
+ {
+ error(pBegin,__tr2qs("The above problem might be related to the switch dash and the following equal sign"));
+ delete sw;
+ return 0;
+ } else {
+ // assume empty string
+ p = new KviKvsTreeNodeConstantData(KVSP_curCharPointer,new KviKvsVariant(QString("")));
+ }
+ }
+
+ skipSpaces();
+
+ if(bLong)
+ sw->addLong(QString(pSw,pSwEnd - pSw),p);
+ else
+ sw->addShort(pSw->lower().unicode(),p);
+ } else {
+ if(bLong)
+ sw->addLong(QString(pSw,pSwEnd - pSw),new KviKvsTreeNodeConstantData(KVSP_curCharPointer,new KviKvsVariant(true))); // empty param
+ else
+ sw->addShort(pSw->lower().unicode(),new KviKvsTreeNodeConstantData(KVSP_curCharPointer,new KviKvsVariant(true))); // empty param
+ }
+ }
+
+ return sw;
+}
+
+
+
+KviKvsTreeNodeDataList * KviKvsParser::parseCommandParameterList()
+{
+ KviKvsTreeNodeDataList * l = new KviKvsTreeNodeDataList(KVSP_curCharPointer);
+
+ for(;;)
+ {
+ skipSpaces();
+ switch(KVSP_curCharUnicode)
+ {
+ case 0:
+ return l;
+ break;
+ case '\r':
+ case '\n':
+ case ';':
+ KVSP_skipChar;
+ return l;
+ break;
+ default:
+ // anything else is a parameter
+ KviKvsTreeNodeData * p = parseCommandParameter();
+ if(!p)
+ {
+ // this is an error
+ delete l;
+ return 0;
+ }
+ l->addItem(p);
+ break;
+ }
+ }
+
+ // never here
+ KVSP_ASSERT(false);
+ return 0;
+}
+
+
+KviPointerList<QString> * KviKvsParser::parseCommaSeparatedParameterListNoTree()
+{
+ KviPointerList<QString> * l = new KviPointerList<QString>;
+ l->setAutoDelete(true);
+
+ KVSP_skipChar;
+
+ for(;;)
+ {
+ skipSpaces();
+ switch(KVSP_curCharUnicode)
+ {
+ case 0:
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of script in parameter list"));
+ delete l;
+ return 0;
+ break;
+ case '\r':
+ case '\n':
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of line in parameter list"));
+ delete l;
+ return 0;
+ break;
+ /*
+ case ',':
+ KVSP_skipChar;
+ break;
+ case ')':
+ KVSP_skipChar;
+ return l;
+ break;
+ */
+ default:
+ {
+ // anything else is a parameter
+ const QChar *pBegin = KVSP_curCharPointer;
+ KviKvsTreeNodeData * p = parseCommaSeparatedParameter();
+ if(!p)
+ {
+ // this is an error
+ delete l;
+ return 0;
+ }
+ delete p;
+ QString * s = new QString(pBegin,KVSP_curCharPointer - pBegin);
+ s->stripWhiteSpace();
+ l->append(s);
+
+ switch(KVSP_curCharUnicode)
+ {
+ case ',':
+ KVSP_skipChar;
+ break;
+ case ')':
+ KVSP_skipChar;
+ return l;
+ break;
+ }
+ }
+ break;
+ }
+ }
+
+ // never here
+ KVSP_ASSERT(false);
+ return 0;
+}
+
+
+KviKvsTreeNodeDataList * KviKvsParser::parseCommaSeparatedParameterList()
+{
+ KviKvsTreeNodeDataList * l = new KviKvsTreeNodeDataList(KVSP_curCharPointer);
+
+ KVSP_skipChar;
+
+ for(;;)
+ {
+ skipSpaces();
+ switch(KVSP_curCharUnicode)
+ {
+ case 0:
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of script in parameter list"));
+ delete l;
+ return 0;
+ break;
+ case '\r':
+ case '\n':
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of line in parameter list"));
+ delete l;
+ return 0;
+ break;
+ /*
+ case ',':
+ KVSP_skipChar;
+ break;
+ case ')':
+ KVSP_skipChar;
+ return l;
+ break;
+ */
+ default:
+ // anything else is a parameter
+ KviKvsTreeNodeData * p = parseCommaSeparatedParameter();
+ if(!p)
+ {
+ // this is an error
+ delete l;
+ return 0;
+ }
+ l->addItem(p);
+
+ switch(KVSP_curCharUnicode)
+ {
+ case ',':
+ KVSP_skipChar;
+ break;
+ case ')':
+ KVSP_skipChar;
+ return l;
+ break;
+ }
+ break;
+ }
+ }
+
+ // never here
+ KVSP_ASSERT(false);
+ return 0;
+}
+
+
+#define LITERAL_PARAM_PARSING_FUNCTION_BEGIN(__funcname) \
+KviKvsTreeNodeConstantData * KviKvsParser::__funcname() \
+{ \
+ QString szValue; \
+\
+ const QChar * pStart = KVSP_curCharPointer; \
+ const QChar * pBegin = KVSP_curCharPointer; \
+ int iLen = 0; \
+ int iNestedTerminators = 0; \
+ \
+ for(;;) \
+ { \
+ switch(KVSP_curCharUnicode) \
+ {
+
+#define LITERAL_PARAM_PARSING_FUNCTION_WARN_NESTED_TERMINATOR \
+ if(!_OUTPUT_MUTE) \
+ warning(KVSP_curCharPointer,__tr2qs("Nested character %q corresponding to expected terminator, this might confuse me a bit: it is a good idea to enclose it in quotes"),KVSP_curCharPointer); \
+ KVSP_skipChar; \
+ iNestedTerminators++; \
+ iLen++; \
+ break;
+
+#define LITERAL_PARAM_PARSING_FUNCTION_END_WITH_EXPECTED_TERMINATOR \
+ if(iNestedTerminators > 0) \
+ { \
+ if(!_OUTPUT_MUTE) \
+ warning(KVSP_curCharPointer,__tr2qs("Skipping nested terminator character %q"),KVSP_curCharPointer); \
+ KVSP_skipChar; \
+ iNestedTerminators--; \
+ iLen++; \
+ } else { \
+ if(iLen > 0)szValue.append(QString(pBegin,iLen)); \
+ { \
+ bool bOk; \
+ kvs_int_t iVal = szValue.toLong(&bOk); \
+ if(bOk)return new KviKvsTreeNodeConstantData(pBegin,new KviKvsVariant(iVal)); \
+ kvs_real_t dVal = szValue.toDouble(&bOk); \
+ if(bOk)return new KviKvsTreeNodeConstantData(pBegin,new KviKvsVariant(dVal)); \
+ } \
+ return new KviKvsTreeNodeConstantData(pBegin,new KviKvsVariant(szValue)); \
+ } \
+ break;
+
+#define LITERAL_PARAM_PARSING_FUNCTION_GENERIC_END \
+ if(iLen > 0) szValue.append(QString(pBegin,iLen)); \
+ return new KviKvsTreeNodeConstantData(pBegin,new KviKvsVariant(szValue)); \
+ break; \
+ case '\\': \
+ if(iLen > 0)szValue.append(QString(pBegin,iLen)); \
+ KVSP_skipChar; \
+ switch(KVSP_curCharUnicode) \
+ { \
+ case 0: \
+ warning(KVSP_curCharPointer - 1,__tr2qs("Stray backslash at the end of the script")); \
+ iLen = 0; \
+ break; \
+ case '\r': \
+ case '\n': \
+ KVSP_skipChar; \
+ pBegin = KVSP_curCharPointer; \
+ iLen = 0; \
+ break; \
+ case 'r': \
+ KVSP_skipChar; \
+ pBegin = KVSP_curCharPointer; \
+ szValue.append(QChar('\r')); \
+ iLen = 0; \
+ break; \
+ case 'n': \
+ KVSP_skipChar; \
+ pBegin = KVSP_curCharPointer; \
+ szValue.append(QChar('\n')); \
+ iLen = 0; \
+ break; \
+ case 't': \
+ KVSP_skipChar; \
+ pBegin = KVSP_curCharPointer; \
+ szValue.append(QChar('\t')); \
+ iLen = 0; \
+ break; \
+ default: \
+ pBegin = KVSP_curCharPointer; \
+ KVSP_skipChar; \
+ iLen = 1; \
+ break; \
+ } \
+ break; \
+ default: \
+ KVSP_skipChar; \
+ iLen++; \
+ break; \
+ } \
+ } \
+ KVSP_ASSERT(false); \
+ return 0; \
+}
+
+
+LITERAL_PARAM_PARSING_FUNCTION_BEGIN(parseCommandLiteralParameter)
+ case 0:
+ case '$':
+ case '%':
+ case '@':
+ case '\r':
+ case '\n':
+ case '"':
+ case ';':
+ case ' ':
+ case '\t':
+LITERAL_PARAM_PARSING_FUNCTION_GENERIC_END
+
+
+LITERAL_PARAM_PARSING_FUNCTION_BEGIN(parseStringLiteralParameter)
+ case 0:
+ case '$':
+ case '%':
+ case '@':
+ case '\r':
+ case '\n':
+ case '"':
+LITERAL_PARAM_PARSING_FUNCTION_GENERIC_END
+
+/*
+LITERAL_PARAM_PARSING_FUNCTION_BEGIN(parseArrayIndexLiteralParameter)
+ case '\t':
+ case ' ':
+ case ']':
+LITERAL_PARAM_PARSING_FUNCTION_END
+*/
+
+
+LITERAL_PARAM_PARSING_FUNCTION_BEGIN(parseHashKeyLiteralParameter)
+ case '{':
+LITERAL_PARAM_PARSING_FUNCTION_WARN_NESTED_TERMINATOR
+ case '}':
+LITERAL_PARAM_PARSING_FUNCTION_END_WITH_EXPECTED_TERMINATOR
+ case 0:
+ case '$':
+ case '%':
+ case '@':
+ case '\r':
+ case '\n':
+ case '"':
+ case '\t':
+ case ' ':
+LITERAL_PARAM_PARSING_FUNCTION_GENERIC_END
+
+
+LITERAL_PARAM_PARSING_FUNCTION_BEGIN(parseCommaSeparatedLiteralParameter)
+ case '(':
+LITERAL_PARAM_PARSING_FUNCTION_WARN_NESTED_TERMINATOR
+ case ')':
+LITERAL_PARAM_PARSING_FUNCTION_END_WITH_EXPECTED_TERMINATOR
+ case 0:
+ case '$':
+ case '%':
+ case '@':
+ case '\r':
+ case '\n':
+ case '"':
+ case ',':
+ case ' ':
+ case '\t':
+LITERAL_PARAM_PARSING_FUNCTION_GENERIC_END
+
+
+LITERAL_PARAM_PARSING_FUNCTION_BEGIN(parseSingleLiteralParameterInParenthesis)
+ case '(':
+LITERAL_PARAM_PARSING_FUNCTION_WARN_NESTED_TERMINATOR
+ case ')':
+LITERAL_PARAM_PARSING_FUNCTION_END_WITH_EXPECTED_TERMINATOR
+ case 0:
+ case '$':
+ case '%':
+ case '@':
+ case '\r':
+ case '\n':
+ case '"':
+ case ' ':
+ case '\t':
+LITERAL_PARAM_PARSING_FUNCTION_GENERIC_END
+
+LITERAL_PARAM_PARSING_FUNCTION_BEGIN(parseBindingOperationLiteralParameter)
+ case 0:
+ case '$':
+ case '%':
+ case '@':
+ case '\r':
+ case '\n':
+ case '"':
+ case '/':
+LITERAL_PARAM_PARSING_FUNCTION_GENERIC_END
+
+
+/*
+KviKvsTreeNodeData * KviKvsParser::parseArrayIndex()
+{
+ KviPointerList<KviKvsTreeNodeData> * l = new KviPointerList<KviKvsTreeNodeData>();
+ l->setAutoDelete(true);
+
+ const QChar * pBegin = KVSP_curCharPointer;
+
+ //KVSP_skipChar;
+
+ for(;;)
+ {
+ switch(KVSP_curCharUnicode)
+ {
+ case 0:
+ delete l;
+ warning(pBegin,__tr2qs("Unterminated array index"));
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of script in array index (missing ']' character ?)"));
+ return 0;
+ break;
+ case '\n':
+ delete l;
+ warning(pBegin,__tr2qs("Unterminated array index"));
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of line in array index (missing ']' character or unescaped newline)"));
+ return 0;
+ break;
+ case ' ':
+ case '\t':
+ skipSpaces();
+ if(KVSP_curCharUnicode != ']')
+ {
+ delete l;
+ warning(pBegin,__tr2qs("Unterminated array index"));
+ switch(KVSP_curCharUnicode)
+ {
+ case 0:
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of script in array index (missing ']' character ?)"));
+ break;
+ case '\n':
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of line in array index (missing ']' character or unescaped newline)"));
+ break;
+ default:
+ error(KVSP_curCharPointer,__tr2qs("Unexpected character '%q' (unicode %x) in array index: it should be already terminated"),KVSP_curCharPointer,KVSP_curCharUnicode);
+ break;
+ }
+ return 0;
+ }
+ goto end_of_the_array_index;
+ break;
+ case '$':
+ case '%':
+ {
+ // this may be a data reference
+ KviKvsTreeNodeData * p = parseParameterPercentOrDollar();
+ if(!p)
+ {
+ // this is an error
+ delete l;
+ return 0;
+ }
+ l->append(p);
+ }
+ break;
+ case ']':
+ {
+ // end of the array index
+ goto end_of_the_array_index;
+ }
+ break;
+ case '"':
+ {
+ // string (should we parse strings in array indexes anyway ?).. well "1"$count might be a valid one in the end
+ KviKvsTreeNodeData * p = parseStringParameter();
+ if(!p)
+ {
+ // error
+ delete l;
+ return 0;
+ }
+ l->append(p);
+ }
+ break;
+ default:
+ {
+ // anything else is a literal
+ l->append(parseArrayIndexLiteralParameter());
+ }
+ break;
+ }
+ }
+end_of_the_array_index:
+ if(l->count() > 1)
+ {
+ // complex parameter needed
+ return new KviKvsTreeNodeCompositeData(l);
+ } else {
+ // a single parameter in the list
+ l->setAutoDelete(false);
+ KviKvsTreeNodeData * p = l->first();
+ delete l;
+ return p;
+ }
+
+}
+*/
+
+
+
+
+
+KviKvsTreeNodeData * KviKvsParser::parseHashKey()
+{
+ KviPointerList<KviKvsTreeNodeData> * l = new KviPointerList<KviKvsTreeNodeData>();
+ l->setAutoDelete(true);
+
+ const QChar * pBegin = KVSP_curCharPointer;
+
+ //KVSP_skipChar;
+
+ for(;;)
+ {
+ switch(KVSP_curCharUnicode)
+ {
+ case 0:
+ delete l;
+ warning(pBegin,__tr2qs("Unterminated hash key"));
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of script in hash key (missing '}' character ?)"));
+ return 0;
+ break;
+ case '\r':
+ case '\n':
+ delete l;
+ warning(pBegin,__tr2qs("Unterminated hash key"));
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of line in hash key (missing '}' character or unescaped newline)"));
+ return 0;
+ break;
+ case ' ':
+ case '\t':
+ skipSpaces();
+ if(KVSP_curCharUnicode != '}')
+ {
+ // separate by single spaces
+ l->append(new KviKvsTreeNodeConstantData(KVSP_curCharPointer,new KviKvsVariant(QString(" "))));
+ } else {
+ goto end_of_the_hash_key;
+ }
+ break;
+ case '$':
+ case '%':
+ case '@':
+ {
+ // this may be a data reference
+ KviKvsTreeNodeData * p = parseParameterPercentOrDollar();
+ if(!p)
+ {
+ // this is an error
+ delete l;
+ return 0;
+ }
+ l->append(p);
+ }
+ break;
+ case '}':
+ {
+ // end of the array index
+ goto end_of_the_hash_key;
+ }
+ break;
+ case '"':
+ {
+ // string
+ KviKvsTreeNodeData * p = parseStringParameter();
+ if(!p)
+ {
+ // error
+ delete l;
+ return 0;
+ }
+ l->append(p);
+ }
+ break;
+ default:
+ {
+ // anything else is a literal
+ l->append(parseHashKeyLiteralParameter());
+ }
+ break;
+ }
+ }
+end_of_the_hash_key:
+ if(l->count() > 1)
+ {
+ // complex parameter needed
+ return new KviKvsTreeNodeCompositeData(pBegin,l);
+ } else {
+ // a single parameter in the list
+ l->setAutoDelete(false);
+ KviKvsTreeNodeData * p = l->first();
+ delete l;
+ return p;
+ }
+ // never reached
+ return 0;
+}
+
+/*
+PARENTHESIS_PARAMETER_PARSING_FUNCTION_BEGIN(parseCommaSeparatedParameter)
+ case 0:
+ case ',':
+ case ')':
+ case '\n':
+PARENTHESIS_PARAMETER_PARSING_FUNCTION_END()
+
+#define PARENTHESIS_PARAMETER_PARSING_FUNCTION_BEGIN(_name) \
+*/
+
+
+
+KviKvsTreeNodeData * KviKvsParser::parseCommaSeparatedParameter()
+{
+ KviPointerList<KviKvsTreeNodeData> * l = new KviPointerList<KviKvsTreeNodeData>;
+ l->setAutoDelete(true);
+
+ const QChar * pBegin = KVSP_curCharPointer;
+
+ for(;;)
+ {
+ switch(KVSP_curCharUnicode)
+ {
+ case 0:
+ case ',':
+ case ')':
+ case '\r':
+ case '\n':
+ // not a part of a parameter
+ goto end_of_function_parameter;
+ break;
+ case '$':
+ case '%':
+ case '@':
+ {
+ // this may be a data reference
+ KviKvsTreeNodeData * p = parseParameterPercentOrDollar();
+ if(!p)
+ {
+ // this is an error
+ delete l;
+ return 0;
+ }
+ l->append(p);
+ }
+ break;
+ case ' ':
+ case '\t':
+ skipSpaces();
+ if((KVSP_curCharUnicode != ')') && (KVSP_curCharUnicode != ','))
+ {
+ // separate by single spaces
+ l->append(new KviKvsTreeNodeConstantData(KVSP_curCharPointer,new KviKvsVariant(QString(" "))));
+ } else {
+ goto end_of_function_parameter;
+ }
+ break;
+ case '"':
+ {
+ // this is a string
+ KviKvsTreeNodeData * p = parseStringParameter();
+ if(!p)
+ {
+ // this is an error
+ delete l;
+ return 0;
+ }
+ l->append(p);
+ }
+ break;
+ default:
+ {
+ // anything else is a literal
+ l->append(parseCommaSeparatedLiteralParameter());
+ }
+ break;
+ }
+ }
+end_of_function_parameter:
+ if(l->count() > 1)
+ {
+ // complex parameter needed
+ KviKvsTreeNodeData * p = new KviKvsTreeNodeCompositeData(pBegin,l);
+ p->setEndingLocation(KVSP_curCharPointer);
+ return p;
+ } else {
+ // a single parameter in the list, or no params at all
+ l->setAutoDelete(false);
+ KviKvsTreeNodeData * p = l->first();
+ delete l;
+ if(!p)p = new KviKvsTreeNodeConstantData(KVSP_curCharPointer,new KviKvsVariant());
+ p->setEndingLocation(KVSP_curCharPointer);
+ return p;
+ }
+ // never reached
+ return 0;
+}
+
+
+KviKvsTreeNodeData * KviKvsParser::parseSingleParameterInParenthesis()
+{
+ KviPointerList<KviKvsTreeNodeData> * l = new KviPointerList<KviKvsTreeNodeData>;
+ l->setAutoDelete(true);
+
+ const QChar * pBegin = KVSP_curCharPointer;
+
+ for(;;)
+ {
+ switch(KVSP_curCharUnicode)
+ {
+ case ')':
+ // not a part of a parameter
+ KVSP_skipChar;
+ goto end_of_function_parameter;
+ break;
+ case 0:
+ case '\r':
+ case '\n':
+ // not a part of a parameter
+ goto end_of_function_parameter;
+ break;
+ case '$':
+ case '%':
+ case '@':
+ {
+ // this may be a data reference
+ KviKvsTreeNodeData * p = parseParameterPercentOrDollar();
+ if(!p)
+ {
+ // this is an error
+ delete l;
+ return 0;
+ }
+ l->append(p);
+ }
+ break;
+ case ' ':
+ case '\t':
+ skipSpaces();
+ if((KVSP_curCharUnicode != ')') && (KVSP_curCharUnicode != ','))
+ {
+ // separate by single spaces
+ l->append(new KviKvsTreeNodeConstantData(KVSP_curCharPointer,new KviKvsVariant(QString(" "))));
+ } else {
+ goto end_of_function_parameter;
+ }
+ break;
+ case '"':
+ {
+ // this is a string
+ KviKvsTreeNodeData * p = parseStringParameter();
+ if(!p)
+ {
+ // this is an error
+ delete l;
+ return 0;
+ }
+ l->append(p);
+ }
+ break;
+ default:
+ {
+ // anything else is a literal
+ l->append(parseSingleLiteralParameterInParenthesis());
+ }
+ break;
+ }
+ }
+end_of_function_parameter:
+ if(l->count() > 1)
+ {
+ // complex parameter needed
+ KviKvsTreeNodeData * p = new KviKvsTreeNodeCompositeData(pBegin,l);
+ p->setEndingLocation(KVSP_curCharPointer);
+ return p;
+ } else {
+ // a single parameter in the list or list empty at all
+ l->setAutoDelete(false);
+ KviKvsTreeNodeData * p = l->first();
+ if(p)p->setEndingLocation(KVSP_curCharPointer);
+ delete l;
+ return p;
+ }
+ // never reached
+ return 0;
+}
+
+
+KviKvsTreeNodeData * KviKvsParser::parseStringParameter()
+{
+ KVSP_ASSERT(KVSP_curCharUnicode == '"');
+
+ KviPointerList<KviKvsTreeNodeData> * l = new KviPointerList<KviKvsTreeNodeData>();
+ l->setAutoDelete(true);
+
+ const QChar * pBegin = KVSP_curCharPointer;
+
+ KVSP_skipChar;
+
+ for(;;)
+ {
+ switch(KVSP_curCharUnicode)
+ {
+ case 0:
+ delete l;
+ warning(pBegin,__tr2qs("Unterminated string constant"));
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of script in string constant (missing \" character ?)"));
+ return 0;
+ break;
+ case '\r':
+ case '\n':
+ delete l;
+ warning(pBegin,__tr2qs("Unterminated string constant"));
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of line in string constant (missing \" character or unescaped newline)"));
+ return 0;
+ break;
+ case '$':
+ case '%':
+ case '@':
+ {
+ // this may be a data reference
+ KviKvsTreeNodeData * p = parseParameterPercentOrDollar();
+ if(!p)
+ {
+ // this is an error
+ delete l;
+ return 0;
+ }
+ l->append(p);
+ }
+ break;
+ case '"':
+ {
+ // end of the string
+ KVSP_skipChar;
+ goto end_of_the_string;
+ }
+ break;
+ default:
+ {
+ // anything else is a literal
+ l->append(parseStringLiteralParameter());
+ }
+ break;
+ }
+ }
+end_of_the_string:
+ if(l->count() > 1)
+ {
+ // complex parameter needed
+ // it is also an implicit string cast
+ return new KviKvsTreeNodeCompositeData(pBegin,l);
+ } else {
+ if(l->count() > 0)
+ {
+ // a single parameter in the list
+ // we need an explicit string cast here (it is the most common cast)
+ l->setAutoDelete(false);
+ KviKvsTreeNodeData * p = l->first();
+ delete l;
+ return new KviKvsTreeNodeStringCast(pBegin,p);
+ } else {
+ // no parameters at all.. return straight empty string (no need to cast)
+ delete l;
+ return new KviKvsTreeNodeConstantData(pBegin,new KviKvsVariant(new QString()));
+ }
+ }
+ // never reached
+ return 0;
+}
+
+KviKvsTreeNodeData * KviKvsParser::parseCommandParameter(bool bPreferNumeric)
+{
+ KviPointerList<KviKvsTreeNodeData> * l = new KviPointerList<KviKvsTreeNodeData>;
+ l->setAutoDelete(true);
+
+ bool bGotLiteral = false;
+
+ const QChar * pBegin = KVSP_curCharPointer;
+
+ for(;;)
+ {
+ switch(KVSP_curCharUnicode)
+ {
+ case 0:
+ case ' ':
+ case '\t':
+ case '\r':
+ case '\n':
+ case ';':
+ // not a part of a parameter
+ goto jumpout;
+ break;
+ case '$':
+ case '%':
+ case '@':
+ {
+ // this may be a data reference
+ KviKvsTreeNodeData * p = parseParameterPercentOrDollar();
+ if(!p)
+ {
+ // this is an error
+ delete l;
+ return 0;
+ }
+ l->append(p);
+ }
+ break;
+ case '"':
+ {
+ // this is a string
+ KviKvsTreeNodeData * p = parseStringParameter();
+ if(!p)
+ {
+ // this is an error
+ delete l;
+ return 0;
+ }
+ l->append(p);
+ }
+ break;
+ default:
+ {
+ bGotLiteral = true;
+ // anything else is a literal
+ l->append(parseCommandLiteralParameter());
+ }
+ break;
+ }
+ }
+jumpout:
+ if(l->count() > 1)
+ {
+ // complex parameter needed
+ KviKvsTreeNodeData * p = new KviKvsTreeNodeCompositeData(pBegin,l);
+ p->setEndingLocation(KVSP_curCharPointer);
+ return p;
+ } else {
+ // a single parameter in the list or empty list at all
+ l->setAutoDelete(false);
+ KviKvsTreeNodeData * p = l->first();
+ delete l;
+ if(p)
+ {
+ if(bGotLiteral)
+ {
+ // a single literal parameter
+ if(bPreferNumeric)
+ {
+ // attempt to convert to a numeric format if this is a constant data item
+ p->convertStringConstantToNumeric();
+ }
+ }
+ p->setEndingLocation(KVSP_curCharPointer);
+ }
+ return p;
+ }
+ // never reached
+ return 0;
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_parser.h b/src/kvirc/kvs/kvi_kvs_parser.h
new file mode 100644
index 00000000..be98e960
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_parser.h
@@ -0,0 +1,300 @@
+#ifndef _KVI_KVS_PARSER_H_
+#define _KVI_KVS_PARSER_H_
+//=============================================================================
+//
+// File : kvi_kvs_parser.h
+// Creation date : Thu 25 Sep 2003 05.12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_pointerlist.h"
+
+#include "kvi_pointerhashtable.h"
+
+class KviKvsTreeNode;
+
+class KviKvsTreeNodeInstruction;
+class KviKvsTreeNodeInstructionBlock;
+class KviKvsTreeNodeCommand;
+class KviKvsTreeNodeDataList;
+class KviKvsTreeNodeData;
+class KviKvsTreeNodeVariable;
+class KviKvsTreeNodeVariableReference;
+class KviKvsTreeNodeConstantData;
+class KviKvsTreeNodeSwitchList;
+class KviKvsTreeNodeSpecialCommand;
+class KviKvsTreeNodeExpression;
+class KviKvsTreeNodeExpressionBinaryOperator;
+class KviKvsTreeNodeFunctionCall;
+class KviKvsTreeNodeOperation;
+class KviKvsTreeNodeSpecialCommandDefpopupLabelPopup;
+
+class KviKvsScript;
+class KviKvsKernel;
+class KviWindow;
+
+// This is an ONE-TIME parser used by KviKvsScript
+
+class KVIRC_API KviKvsParser
+{
+ friend class KviKvsKernel;
+public:
+ KviKvsParser(KviKvsScript * pScript,KviWindow * pOutputWindow);
+ ~KviKvsParser();
+private:
+ const QChar * m_pBuffer; // the local pointer to the beginning of the buffer
+ const QChar * m_ptr; // the parsing pointer
+ // parsing state
+ KviPointerHashTable<QString,QString> * m_pGlobals; // the dict of the vars declared with global in this script
+ int m_iFlags; // the current parsing flags
+ bool m_bError; // error(..) was called ?
+ // this stuff is used only for reporting errors and warnings
+ KviKvsScript * m_pScript; // parent script
+ KviWindow * m_pWindow; // output window
+public: // public interface
+ enum Flags { AssumeLocals = 1, Pedantic = 2 };
+ // was there an error ?
+ bool error() const { return m_bError; };
+ // parses the buffer pointed by pBuffer and returns
+ // a syntax tree or 0 in case of failure
+ // if the parsing fails, the error code can be retrieved by calling error()
+ KviKvsTreeNodeInstruction * parse(const QChar * pBuffer,int iFlags = 0);
+ KviKvsTreeNodeInstruction * parseAsExpression(const QChar * pBuffer,int iFlags = 0);
+ KviKvsTreeNodeInstruction * parseAsParameter(const QChar * pBuffer,int iFlags = 0);
+private: // parsing helpers
+ // generic
+ void skipSpaces(); // skips only spaces and tabs (eventually with \)
+ bool skipSpacesAndNewlines(); // skips space and newlines
+ void skipToNextLine(); // skips up to a new line
+ // dedicated
+ void skipToEndOfCStyleComment();
+ // dedicated to parseSpecialCommandFor() : in kvi_kvs_parser_specialcommands.cpp
+ bool skipToEndOfForControlBlock();
+ // error handlers
+ void error(const QChar * pLocation,const QString &szMsgFmt,...);
+ void warning(const QChar * pLocation,const QString &szMsgFmt,...);
+ void errorBadChar(const QChar * pLocation,char cExpected,const char * szCommandName);
+
+protected:
+ // this is called by KviKvsKernel to register the parsing routines
+ static void init();
+private:
+ // returns 0 only in case of error
+ // starts on the first char of a buffer
+ // stops at the first null char encountered
+ KviKvsTreeNodeInstruction * parseInstructionList();
+ // may return 0 (empty instruction), check error() for error conditions
+ // starts on the first character of an instruction
+ // if the first char is ';' '\n' or null it just returns 0 without error
+ // stops after the ending char of the instruction
+ KviKvsTreeNodeInstruction * parseInstruction();
+ // may return 0 (empty block), check error() for error conditions
+ // starts at the leading '{' of the block
+ // stops after the trailing '}' of the block
+ KviKvsTreeNodeInstruction * parseInstructionBlock();
+ // returns 0 only in case of error
+ // starts on the first character of the parameters
+ // ends after the end of the command
+ KviKvsTreeNodeDataList * parseCommandParameterList();
+ // returns 0 only in case of error
+ // starts on the leading '(' or a ',' in the middle of the list
+ // ends after the trailing ')'
+ // if started in the middle of the list returns only the remaining
+ // parameters.
+ KviKvsTreeNodeDataList * parseCommaSeparatedParameterList();
+ KviPointerList<QString> * parseCommaSeparatedParameterListNoTree();
+ // returns 0 in case of error or if it starts on a terminating character (null parameter)
+ // check error() to see if there was an error condition (unless you already know that
+ // there was a valid first character)
+ // start on the first character of the parameter
+ // ends after the first character not included in the param (';','\n','\0',' ')
+ // If bPreferNumeric is true then when a single literal parameter
+ // is extracted an attempt to convert it to a numeric format is made.
+ // This optimizes assignments, self-sums etc...
+ KviKvsTreeNodeData * parseCommandParameter(bool bPreferNumeric = false);
+ // returns 0 only in case of error
+ // start on the first character of the parameter
+ // ends after the first character not included in the param (')','\n','\0',',')
+ KviKvsTreeNodeData * parseCommaSeparatedParameter();
+ // returns 0 only in case of error
+ // start on the first character of the parameter
+ // ends after the first character not included in the param (')','\n','\0')
+ KviKvsTreeNodeData * parseSingleParameterInParenthesis();
+ // never returns 0
+ KviKvsTreeNodeConstantData * parseCommandLiteralParameter();
+ // never returns 0
+ KviKvsTreeNodeConstantData * parseCommaSeparatedLiteralParameter();
+ // never returns 0
+ KviKvsTreeNodeConstantData * parseSingleLiteralParameterInParenthesis();
+ // returns 0 only in case of error
+ // starts at the leading '"'
+ // ends after the trailing '"'
+ KviKvsTreeNodeData * parseStringParameter();
+ // never returns 0
+ KviKvsTreeNodeConstantData * parseStringLiteralParameter();
+ // returns 0 in case of error or of an empty switch list (check the error code!)
+ // starts at the leading '-' of the first switch
+ // ends after the last switch
+ KviKvsTreeNodeSwitchList * parseCommandSwitchList();
+ // returns 0 only in case of error
+ // starts at '%' or '$'
+ // and ends after the end of the data reference
+ // or just after the '%' or '$' if this was only a ConstandData (not a var or func)
+ KviKvsTreeNodeData * parseParameterPercentOrDollar();
+ // returns 0 only in case of error
+ // starts at '%' or '$'
+ // ends after the end of the complete data reference (including scope operators!)
+ KviKvsTreeNodeData * parsePercentOrDollar(bool bInObjScope = false);
+ // returns 0 only in case of error
+ // starts at '%'
+ // ends after the end of the structured data
+ KviKvsTreeNodeVariable * parsePercent(bool bInObjectScope = false);
+ // returns 0 only in case of error
+ KviKvsTreeNodeData * parseHashKey();
+ // never returns 0
+ KviKvsTreeNodeConstantData * parseHashKeyLiteralParameter();
+
+ //
+ // kvi_kvs_parser_specialcommands.cpp
+ //
+
+ // return 0 only in case of error
+ // starts at the leading '(' of the if command (after the switches)
+ // and stops after the end of the else block
+ // if the first character is not '(' then this function fails with an error
+ KviKvsTreeNodeCommand * parseSpecialCommandIf();
+ // always returns 0
+ // check error() for error conditions
+ // starts after the switches of the "global" keyword
+ // and stops at the end of the command
+ // if the first character is not '%' of a variable then this function fails with an error
+ KviKvsTreeNodeCommand * parseSpecialCommandGlobal();
+ // returns 0 only in case of error
+ // starts at the leading '(' of the while command (after the switches)
+ // and stops after the end of the command block
+ // if the first character is not '(' then this function fails with an error
+ KviKvsTreeNodeCommand * parseSpecialCommandWhile();
+ // returns 0 only in case of error
+ // starts at the leading '(' of the while command (after the switches)
+ // and stops after the end of the command block
+ // if the first character is not '(' then this function fails with an error
+ KviKvsTreeNodeCommand * parseSpecialCommandDo();
+ // returns 0 only in case of error
+ // and stops after the end of the break command
+ KviKvsTreeNodeCommand * parseSpecialCommandBreak();
+ // returns 0 only in case of error
+ // and stops after the end of the for command block
+ KviKvsTreeNodeCommand * parseSpecialCommandFor();
+ // returns 0 only in case of error
+ // and stops after the end of the foreach command block
+ KviKvsTreeNodeCommand * parseSpecialCommandForeach();
+ // returns 0 only in case of error
+ // and stops after the end of the switch command block
+ KviKvsTreeNodeCommand * parseSpecialCommandSwitch();
+ // returns 0 only in case of error
+ // and stops after the end of the defpopup command block
+ KviKvsTreeNodeCommand * parseSpecialCommandUnset();
+ // returns 0 only in case of error
+ // and stops after the end of the defpopup command block
+ KviKvsTreeNodeCommand * parseSpecialCommandDefpopup();
+ KviKvsTreeNodeSpecialCommandDefpopupLabelPopup * parseSpecialCommandDefpopupLabelPopup();
+ // returns 0 only in case of error
+ // stops after the class command block
+ KviKvsTreeNodeCommand * parseSpecialCommandClass();
+ // returns 0 only in case of error
+ // stops after the perl.end statement
+ KviKvsTreeNodeCommand * parseSpecialCommandPerlBegin();
+ // returns 0 only in case of error
+ // and stops after the end of the help command
+ KviKvsTreeNodeCommand * parseSpecialCommandHelp();
+
+ //
+ // kvi_kvs_parser_command.cpp
+ //
+
+ // may return 0 (empty command), check error() for error conditions
+ // starts at the beginning of a command (can be non valid)
+ // ends after the ending char of the command
+ KviKvsTreeNodeCommand * parseCommand();
+
+
+ //
+ // kvi_kvs_parser_comment.cpp
+ //
+
+ // always returns 0, and it CAN be an error!
+ // starts at the beginning of a comment (must be '#' or '/')
+ // ends after the ending char of the comment
+ KviKvsTreeNode * parseComment();
+
+
+ //
+ // kvi_kvs_parser_dollar.cpp
+ //
+
+ // returns 0 only in case of error
+ // starts at '$'
+ // ends after the end of the function call
+ KviKvsTreeNodeData * parseDollar(bool bInObjScope = false);
+
+ // returns 0 only in case of error
+ // starts at '@'
+ // ends after the end of the function call
+ KviKvsTreeNodeData * parseAt(bool bInObjScope = false);
+
+ //
+ // kvi_kvs_parser_lside.cpp
+ //
+
+ // returns 0 only in case of error
+ // returns after the command terminator
+ KviKvsTreeNodeInstruction * parseVoidFunctionCallOrOperation();
+ // returns 0 only in case of error
+ // returns after the command terminator
+ KviKvsTreeNodeOperation * parseOperation();
+ // returns 0 only in case of error
+ // returns after the command terminator
+ // If bPreferNumeric is propagated to parseCommandParameter() function
+ KviKvsTreeNodeData * parseOperationRightSide(bool bPreferNumeric = false);
+ // return 0 only in case of error
+ // returns after the command terminator
+ KviKvsTreeNodeOperation * parseBindingOperation();
+ KviKvsTreeNodeConstantData * parseBindingOperationLiteralParameter();
+ KviKvsTreeNodeData * parseBindingOperationParameter();
+
+ //
+ // kvi_kvs_parser_expression.cpp
+ //
+
+ // returns 0 only in case of error
+ // starts AFTER the leading char of the expression
+ // ends afer the first terminator found
+ KviKvsTreeNodeExpression * parseExpression(char terminator);
+ KviKvsTreeNodeExpressionBinaryOperator * parseExpressionBinaryOperator();
+ KviKvsTreeNodeExpression * parseExpressionOperand(char terminator);
+ KviKvsTreeNodeExpression * parseExpressionOperandCore(char terminator);
+ bool parseExpressionMightPointToOperator();
+
+ void report(bool bError,const QChar * pLocation,const QString &szMsgFmt,kvi_va_list va);
+};
+
+#endif //!_KVI_KVS_PARSER_H_
diff --git a/src/kvirc/kvs/kvi_kvs_parser_command.cpp b/src/kvirc/kvs/kvi_kvs_parser_command.cpp
new file mode 100644
index 00000000..bd50d23f
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_parser_command.cpp
@@ -0,0 +1,339 @@
+//=============================================================================
+//
+// File : kvi_kvs_parser_command.cpp
+// Creation date : Thu 03 Nov 2003 13.23 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+
+#include "kvi_kvs_parser.h"
+
+#include "kvi_kvs_treenode.h"
+
+#include "kvi_kvs_report.h"
+#include "kvi_kvs_kernel.h"
+
+#include "kvi_kvs_parser_macros.h"
+
+#include "kvi_locale.h"
+
+#include "kvi_kvs_script.h"
+
+#include "kvi_cmdformatter.h"
+
+
+KviKvsTreeNodeCommand * KviKvsParser::parseCommand()
+{
+ KVSP_ASSERT(KVSP_curCharIsLetter || (KVSP_curCharUnicode == '_'));
+
+
+ const QChar * pIdentifier = KVSP_curCharPointer;
+
+ while(KVSP_curCharIsLetterOrNumber || (KVSP_curCharUnicode == '_'))KVSP_skipChar;
+
+ int iIdentifierLen = KVSP_curCharPointer - pIdentifier;
+
+ const QChar * pSecondPart = 0;
+ int iSecondPartLen = 0;
+
+ bool bHasNamespaceSoMustBeAlias = false;
+
+ if(KVSP_curCharUnicode == '.')
+ {
+ // a module command
+ KVSP_skipChar;
+
+ pSecondPart = KVSP_curCharPointer;
+
+ if(!KVSP_curCharIsLetter)
+ {
+ warning(KVSP_curCharPointer - 1,__tr2qs("Stray dot ('.') character or invalid following module command name"));
+ error(KVSP_curCharPointer,__tr2qs("Syntax error: malformed module command identifier"));
+ return 0;
+ }
+
+ KVSP_skipChar;
+ while(KVSP_curCharIsLetterOrNumber || (KVSP_curCharUnicode == '_'))KVSP_skipChar;
+
+ iSecondPartLen = KVSP_curCharPointer - pSecondPart;
+ } else while(KVSP_curCharUnicode == ':')
+ {
+ // an alias with namespace(s) ?
+
+ // here we allow the syntax of the form
+ // <namespace>::{<namespace>::}<alias_name>
+
+ bHasNamespaceSoMustBeAlias = true;
+
+ KVSP_skipChar;
+ if(KVSP_curCharUnicode == ':')
+ {
+ KVSP_skipChar;
+
+ if(!KVSP_curCharIsLetter)
+ {
+ warning(KVSP_curCharPointer - 1,__tr2qs("Stray '::' sequence or invalid following alias name"));
+ error(KVSP_curCharPointer,__tr2qs("Syntax error: malformed alias identifier"));
+ return 0;
+ }
+
+ KVSP_skipChar;
+ while(KVSP_curCharIsLetterOrNumber || (KVSP_curCharUnicode == '_'))KVSP_skipChar;
+ } else {
+ warning(KVSP_curCharPointer - 1,__tr2qs("Stray ':' character: did you mean '...<namespace>::<alias_name>' ?"));
+ error(KVSP_curCharPointer,__tr2qs("Syntax error: malformed (alias?) command identifier"));
+ return 0;
+ }
+
+ iIdentifierLen = KVSP_curCharPointer - pIdentifier;
+ }
+
+ QString szIdentifier(pIdentifier,iIdentifierLen);
+
+ skipSpaces();
+
+ KviKvsTreeNodeSwitchList * sw = 0;
+ KviKvsTreeNodeData * pRebindData;
+
+ if(KVSP_curCharUnicode == '-')
+ {
+ // extract the switch
+ sw = parseCommandSwitchList();
+ if(!sw)
+ {
+ if(error())
+ return 0;
+ // else it might be a negative number or something that does not seem
+ // to be a switch anyway
+ pRebindData = 0;
+ } else {
+ pRebindData = sw->getStandardRebindingSwitch();
+ }
+ } else {
+ pRebindData = 0;
+ }
+
+ KviKvsTreeNodeCommand * cmd;
+
+ if(!bHasNamespaceSoMustBeAlias)
+ {
+ // perl.begin has a *really* half special parsing routine
+ if(iIdentifierLen == 4)
+ {
+ if(pIdentifier->lower().unicode() == 'p')
+ {
+ if(KviQString::equalCI(szIdentifier,"perl"))
+ {
+ if(pSecondPart)
+ {
+ QString szSecondPart(pSecondPart,iSecondPartLen);
+ if(KviQString::equalCI(szSecondPart,"begin"))
+ {
+ // yep, that's perl.begin
+ cmd = parseSpecialCommandPerlBegin();
+ if(!cmd)
+ {
+ // might be an error , but might be not...
+ // it is an error only if error() returns true
+ // but since the caller will take care of it
+ // we just return 0
+ if(sw)delete sw;
+ if(pRebindData)delete pRebindData;
+ return 0;
+ }
+ cmd->setLocation(pIdentifier);
+ if(sw)
+ {
+ cmd->setSwitchList(sw);
+ // cmd becomes child of the rebinding switch
+ if(pRebindData)return new KviKvsTreeNodeRebindingSwitch(pRebindData->location(),pRebindData,cmd);
+ }
+ return cmd;
+ }
+ }
+ }
+ }
+ }
+
+ if(!pSecondPart)
+ {
+ // is this a special command ?
+
+ // Here theoretically we could also lookup special commands composed of two parts but we actually don't need it.
+
+ // Looking up only the first part if there is a second part, instead,
+ // is dangerous since it may generate infinite loops (help.open vs help)
+
+ KviKvsSpecialCommandParsingRoutine * ccpr = KviKvsKernel::instance()->findSpecialCommandParsingRoutine(szIdentifier);
+
+ if(ccpr)
+ {
+ cmd = (this->*(ccpr->proc))();
+ if(!cmd)
+ {
+ // might be an error , but might be not...
+ // it is an error only if error() returns true
+ // but since the caller will take care of it
+ // we just return 0
+ if(sw)delete sw;
+ if(pRebindData)delete pRebindData;
+ return 0;
+ }
+ cmd->setLocation(pIdentifier);
+ if(sw)
+ {
+ cmd->setSwitchList(sw);
+ // cmd becomes child of the rebinding switch
+ if(pRebindData)return new KviKvsTreeNodeRebindingSwitch(pRebindData->location(),pRebindData,cmd);
+ }
+ return cmd;
+ }
+ }
+
+ // is it a callback command ?
+ if(KVSP_curCharUnicode == '(')
+ {
+ // core callback command
+ // module callback command
+ KviKvsTreeNodeDataList * dl = parseCommaSeparatedParameterList();
+ if(!dl)
+ {
+ if(sw)delete sw;
+ if(pRebindData)delete pRebindData;
+ return 0;
+ }
+ if(!skipSpacesAndNewlines())
+ {
+ if(sw)delete sw;
+ if(pRebindData)delete pRebindData;
+ delete dl;
+ return 0;
+ }
+
+ const QChar * pClbkBegin = KVSP_curCharPointer;
+
+ KviKvsTreeNodeInstruction * ins = parseInstruction();
+ if(!ins)
+ {
+ if(error())
+ {
+ if(sw)delete sw;
+ if(pRebindData)delete pRebindData;
+ return 0;
+ }
+ // actually we need empty callbacks (for alias() at least)
+ // the single command implementations should take care of checking it
+ /*else {
+
+ warning(pIdentifier,__tr2qs("Callback command called with an empty callback instruction"));
+ error(KVSP_curCharPointer,__tr2qs("Callback commands must have a callback instruction"));
+ if(sw)delete sw;
+ delete dl;
+ return 0;
+
+ }*/
+ } else {
+ delete ins; // in fact we don't need it, it will be reparsed the first time it is called
+ // Q: Couldn't we actually use the already parsed tree ?
+ // A: No: the tree must be reparsed in a new parser context
+ // since we're keeping track of global and local variables...
+ // The locals of this context are NOT the same as the locals
+ // of the other context.
+ }
+
+ QString szCallbackName = szIdentifier;
+ szCallbackName += " callback";
+
+ QString szBlock(pClbkBegin,KVSP_curCharPointer - pClbkBegin);
+ KviCommandFormatter::bufferFromBlock(szBlock);
+
+ KviKvsScript * clbk = new KviKvsScript(szCallbackName,szBlock);
+
+ if(pSecondPart)
+ {
+ cmd = new KviKvsTreeNodeModuleCallbackCommand(pIdentifier,szIdentifier,QString(pSecondPart,iSecondPartLen),dl,clbk);
+ } else {
+ KviKvsCoreCallbackCommandExecRoutine * r = KviKvsKernel::instance()->findCoreCallbackCommandExecRoutine(szIdentifier);
+ if(r)
+ {
+ cmd = new KviKvsTreeNodeCoreCallbackCommand(pIdentifier,szIdentifier,dl,r,clbk);
+ } else {
+ error(KVSP_curCharPointer,__tr2qs("Unknown callback command \"%Q\""),&szIdentifier);
+ if(sw)delete sw;
+ if(pRebindData)delete pRebindData;
+ delete dl;
+ delete clbk;
+ return 0;
+ }
+ }
+
+ if(sw)
+ {
+ cmd->setSwitchList(sw);
+ // cmd becomes child of the rebinding switch
+ if(pRebindData)return new KviKvsTreeNodeRebindingSwitch(pRebindData->location(),pRebindData,cmd);
+ }
+
+ return cmd;
+ }
+ }
+
+ // must be core simple command, module simple command or alias
+ KviKvsTreeNodeDataList * pl = parseCommandParameterList();
+ if(!pl)
+ {
+ if(sw)delete sw;
+ if(pRebindData)delete pRebindData;
+ return 0; // this MUST be an error
+ }
+
+ if(bHasNamespaceSoMustBeAlias)
+ {
+ // alias for sure, bind at runtime
+ cmd = new KviKvsTreeNodeAliasSimpleCommand(pIdentifier,szIdentifier,pl);
+ } else {
+ if(pSecondPart)
+ {
+ cmd = new KviKvsTreeNodeModuleSimpleCommand(pIdentifier,szIdentifier,QString(pSecondPart,iSecondPartLen),pl);
+ } else {
+ KviKvsCoreSimpleCommandExecRoutine * r = KviKvsKernel::instance()->findCoreSimpleCommandExecRoutine(szIdentifier);
+ if(r)
+ {
+ cmd = new KviKvsTreeNodeCoreSimpleCommand(pIdentifier,szIdentifier,pl,r);
+ } else {
+ // must be an alias in root namespace, bind at runtime
+ cmd = new KviKvsTreeNodeAliasSimpleCommand(pIdentifier,szIdentifier,pl);
+ }
+ }
+ }
+
+ if(sw)
+ {
+ cmd->setSwitchList(sw);
+ // cmd becomes child of the rebinding switch
+ if(pRebindData)return new KviKvsTreeNodeRebindingSwitch(pRebindData->location(),pRebindData,cmd);
+ }
+
+ return cmd;
+}
+
+
diff --git a/src/kvirc/kvs/kvi_kvs_parser_comment.cpp b/src/kvirc/kvs/kvi_kvs_parser_comment.cpp
new file mode 100644
index 00000000..e731e2b1
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_parser_comment.cpp
@@ -0,0 +1,101 @@
+//=============================================================================
+//
+// File : kvi_kvs_parser_comment.cpp
+// Creation date : Thu 03 Nov 2003 13.23 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+
+#include "kvi_kvs_parser.h"
+
+#include "kvi_kvs_treenode.h"
+
+#include "kvi_kvs_report.h"
+#include "kvi_kvs_kernel.h"
+
+#include "kvi_kvs_parser_macros.h"
+
+#include "kvi_locale.h"
+
+
+
+KviKvsTreeNode * KviKvsParser::parseComment()
+{
+#ifdef COMPILE_NEW_KVS
+
+ KVSP_ASSERT((KVSP_curCharUnicode == '#') || (KVSP_curCharUnicode == '/'));
+
+ switch(KVSP_curCharUnicode)
+ {
+ case '#': // bash style
+ skipToNextLine();
+ break;
+ case '/':
+ KVSP_skipChar;
+ switch(KVSP_curCharUnicode)
+ {
+ case '/':
+ // c++ style
+ skipToNextLine();
+ break;
+ case '*':
+ {
+ const QChar * pBegin = KVSP_curCharPointer;
+ // c style , multiline
+ KVSP_skipChar;
+ for(;;)
+ {
+ switch(KVSP_curCharUnicode)
+ {
+ case 0:
+ warning(pBegin,__tr2qs("Unterminated c-style multiline comment"));
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of script in multiline comment"));
+ return 0;
+ break;
+ case '*':
+ KVSP_skipChar;
+ if(KVSP_curCharUnicode == '/')
+ {
+ KVSP_skipChar;
+ return 0;
+ }
+ break;
+ }
+ KVSP_skipChar;
+ }
+ }
+ break;
+ default:
+ error(KVSP_curCharPointer,__tr2qs("Unexpected character '%q' (unicode %x) after a slash (it is a typo or a malformed comment begin ?)"),KVSP_curCharPointer,KVSP_curCharUnicode);
+ return 0;
+ break;
+ }
+ break;
+ default:
+ // shouldn't be here :/
+ KVSP_ASSERT(false);
+ break;
+ }
+#endif
+ return 0;
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp b/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp
new file mode 100644
index 00000000..0f304bd7
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_parser_dollar.cpp
@@ -0,0 +1,331 @@
+//=============================================================================
+//
+// File : kvi_kvs_parser_dollar.cpp
+// Creation date : Thu 5 Oct 2003 20.20 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+
+#include "kvi_kvs_parser.h"
+#include "kvi_kvs_treenode.h"
+
+#include "kvi_kvs_report.h"
+#include "kvi_kvs_kernel.h"
+
+#include "kvi_kvs_parser_macros.h"
+
+#include "kvi_locale.h"
+
+
+
+
+KviKvsTreeNodeData * KviKvsParser::parseDollar(bool bInObjScope)
+{
+ KVSP_ASSERT(KVSP_curCharUnicode == '$');
+
+ const QChar * pDollarBegin = KVSP_curCharPointer;
+ const QChar * pBegin = KVSP_curCharPointer;
+
+ KVSP_skipChar;
+
+ if(!KVSP_curCharIsFunctionStart)
+ {
+ if(KVSP_curCharUnicode == 0)warning(KVSP_curCharPointer,__tr2qs("Unexpected end of script after '$' function call prefix"));
+ else warning(KVSP_curCharPointer,__tr2qs("Unexpected character %q (unicode %x) after '$' function call prefix"),KVSP_curCharPointer,KVSP_curCharUnicode);
+ error(KVSP_curCharPointer,__tr2qs("Syntax error after '$' function call prefix. If you want to use a plain '$' in the code you need to escape it"));
+ return 0;
+ }
+
+ if(KVSP_curCharUnicode == '(')
+ {
+ // expression eval
+ if(bInObjScope)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Invalid expression evaluation in object scope"));
+ return 0;
+ }
+
+ KVSP_skipChar;
+ skipSpaces();
+
+ return parseExpression(')');
+ }
+
+ if(KVSP_curCharUnicode == '{')
+ {
+ // command block eval <--- senseless ???
+ if(bInObjScope)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Invalid command evaluation in object scope"));
+ return 0;
+ }
+
+ KviKvsTreeNodeInstruction * i = parseInstructionBlock();
+ if(!i)
+ {
+ if(error())return false;
+ // trigger an error anyway: this is abused syntax :D
+ error(KVSP_curCharPointer,__tr2qs("Empty instruction block for command evaluation"));
+ return false;
+ }
+
+ return new KviKvsTreeNodeCommandEvaluation(pDollarBegin,i);
+ }
+
+ if(KVSP_curCharIsNumber)
+ {
+ // this is a parameter identifier
+ // $1-4 $1- $3
+
+ if(bInObjScope)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Parameter identifiers are forbidden in object scope (after the '->' operator)"));
+ return 0;
+ }
+
+ pBegin = KVSP_curCharPointer;
+
+ while(KVSP_curCharIsNumber)
+ KVSP_skipChar;
+
+ QString szNum1(pBegin,KVSP_curCharPointer - pBegin);
+ bool bOk;
+ int iNum1 = szNum1.toInt(&bOk);
+ if(!bOk)debug("Ops... a non-number made by numbers ?");
+
+ if(KVSP_curCharUnicode != '-')
+ {
+ // end
+ return new KviKvsTreeNodeSingleParameterIdentifier(pDollarBegin,iNum1);
+ }
+
+ // dash... make sure it's not $N->$something
+ KVSP_skipChar;
+ if(KVSP_curCharUnicode == '>')
+ {
+ // object scope operator in fact...
+ // go back to the - and return a single parameter identifier
+ KVSP_backChar;
+ return new KviKvsTreeNodeSingleParameterIdentifier(pDollarBegin,iNum1);
+ }
+
+ if(!KVSP_curCharIsNumber)
+ {
+ // from iNum1 to the end
+ return new KviKvsTreeNodeMultipleParameterIdentifier(pDollarBegin,iNum1,-1);
+ }
+
+ pBegin = KVSP_curCharPointer;
+ while(KVSP_curCharIsNumber)
+ KVSP_skipChar;
+
+ QString szNum2(pBegin,KVSP_curCharPointer - pBegin);
+ int iNum2 = szNum2.toInt(&bOk);
+ if(!bOk)debug("Ops... a non-number made by numbers (2) ?");
+
+ if(iNum1 < iNum2)return new KviKvsTreeNodeMultipleParameterIdentifier(pDollarBegin,iNum1,iNum2);
+ else {
+ warning(pBegin,__tr2qs("Ending index of a multiple parameter identifier is lower or equal to the starting index. This will evaluate to a single parameter identifier."));
+ return new KviKvsTreeNodeSingleParameterIdentifier(pDollarBegin,iNum1);
+ }
+ }
+
+ pBegin = KVSP_curCharPointer;
+
+ //KVSP_skipChar;
+
+ bool bHasNamespaceNotInObjScopeSoMustBeAlias = false; // ;D
+ bool bIsThis = false;
+
+ if(KVSP_curCharUnicode == '$')
+ {
+ if(bInObjScope)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Syntax error: invalid $$ ($this) function call in object scope"));
+ return 0;
+ }
+ // handle $$
+ KVSP_skipChar;
+ } else {
+ while((KVSP_curCharIsLetterOrNumber) || (KVSP_curCharUnicode == '_'))KVSP_skipChar;
+ if(!bInObjScope)
+ {
+ while(KVSP_curCharUnicode == ':')
+ {
+ // check for namespaces
+
+ // here we allow the syntax of the form
+ // <namespace>::{<namespace>::}<alias_name>
+
+ bHasNamespaceNotInObjScopeSoMustBeAlias = true; // ;D
+
+ KVSP_skipChar;
+ if(KVSP_curCharUnicode == ':')
+ {
+ KVSP_skipChar;
+
+ if(!KVSP_curCharIsLetter)
+ {
+ warning(KVSP_curCharPointer - 1,__tr2qs("Stray '::' sequence or invalid following alias name"));
+ error(KVSP_curCharPointer,__tr2qs("Syntax error: malformed alias function call identifier"));
+ return 0;
+ }
+
+ KVSP_skipChar;
+ while(KVSP_curCharIsLetterOrNumber || (KVSP_curCharUnicode == '_'))KVSP_skipChar;
+ } else {
+ warning(KVSP_curCharPointer - 1,__tr2qs("Stray ':' character: did you mean '...<namespace>::<alias_name>' ?"));
+ error(KVSP_curCharPointer,__tr2qs("Syntax error: malformed (alias?) function call identifier"));
+ return 0;
+ }
+ }
+ }
+ }
+
+ QString szIdentifier1(pBegin,KVSP_curCharPointer - pBegin);
+
+ const QChar * pId2 = 0;
+ int iId2Len = 0;
+ bool bModuleFunctionCall = false;
+
+ if(!bHasNamespaceNotInObjScopeSoMustBeAlias)
+ {
+ if(!bInObjScope)
+ {
+ if(KVSP_curCharUnicode == '.')
+ {
+ KVSP_skipChar;
+ if(KVSP_curCharIsLetter)
+ {
+ pId2 = KVSP_curCharPointer;
+ while((KVSP_curCharIsLetterOrNumber) || (KVSP_curCharUnicode == '_'))
+ KVSP_skipChar;
+ iId2Len = KVSP_curCharPointer - pId2;
+ bModuleFunctionCall = true;
+ } else {
+ KVSP_backChar;
+ }
+ }
+ } else {
+ // object scope, check for "class name" namespace
+ // the class name namespace has the format "<namespace>::<namespace>::..::<classname>
+ // so the last :: is the delimiter of the function name
+ const QChar * pOriginalEndOfId1 = KVSP_curCharPointer;
+ const QChar * pEndOfId1 = pOriginalEndOfId1;
+
+ while(KVSP_curCharUnicode == ':')
+ {
+ const QChar * pEndOfId1 = KVSP_curCharPointer;
+ // base class function call ?
+ KVSP_skipChar;
+ if(KVSP_curCharUnicode == ':')
+ {
+ KVSP_skipChar;
+ if(KVSP_curCharIsLetter)
+ {
+ pId2 = KVSP_curCharPointer;
+ while((KVSP_curCharIsLetterOrNumber) || (KVSP_curCharUnicode == '_'))
+ KVSP_skipChar;
+ iId2Len = KVSP_curCharPointer - pId2;
+ } else {
+ KVSP_setCurCharPointer(pOriginalEndOfId1);
+ pId2 = 0;
+ iId2Len = 0;
+ break;
+ }
+ } else {
+ KVSP_setCurCharPointer(pOriginalEndOfId1);
+ pId2 = 0;
+ iId2Len = 0;
+ break;
+ }
+ }
+ if(pId2)
+ {
+ // yes, that's fine: reset it
+ szIdentifier1.setUnicode(pBegin,pEndOfId1 - pBegin);
+ }
+ }
+ }
+
+ KviKvsTreeNodeDataList * l;
+
+ if(KVSP_curCharUnicode != '(')
+ {
+ // no parameters passed
+ //KVSP_setCurCharPointer(pBegin);
+ // will get an empty data list
+ l = new KviKvsTreeNodeDataList(pDollarBegin);
+ } else {
+ // check for the special syntax ()
+ KVSP_skipChar;
+ if(KVSP_curCharUnicode == ')')
+ {
+ // $call(), assume no parameters passed
+ l = new KviKvsTreeNodeDataList(pDollarBegin);
+ KVSP_skipChar;
+ } else {
+ KVSP_backChar;
+ l = parseCommaSeparatedParameterList();
+ if(!l)return 0; // error
+ }
+ }
+
+ if(bHasNamespaceNotInObjScopeSoMustBeAlias)
+ {
+ // namespace::alias function call
+ return new KviKvsTreeNodeAliasFunctionCall(pDollarBegin,szIdentifier1,l);
+ } else if(bModuleFunctionCall)
+ {
+ // module function call
+ return new KviKvsTreeNodeModuleFunctionCall(pDollarBegin,szIdentifier1,QString(pId2,iId2Len),l);
+ } else {
+
+ if(bInObjScope)
+ {
+ // object function call (our parent will be a scope operator)
+ if(pId2)
+ {
+ // base class object function call
+ return new KviKvsTreeNodeBaseObjectFunctionCall(pDollarBegin,szIdentifier1,QString(pId2,iId2Len),l);
+ } else {
+ // plain object function call
+ return new KviKvsTreeNodeThisObjectFunctionCall(pDollarBegin,szIdentifier1,l);
+ }
+ } else {
+ // core or alias function call
+ KviKvsCoreFunctionExecRoutine * r = KviKvsKernel::instance()->findCoreFunctionExecRoutine(szIdentifier1);
+ if(r)
+ {
+ // core function call
+ return new KviKvsTreeNodeCoreFunctionCall(pDollarBegin,szIdentifier1,r,l);
+ } else {
+ // root namespace alias function call
+ return new KviKvsTreeNodeAliasFunctionCall(pDollarBegin,szIdentifier1,l);
+ }
+ }
+ }
+
+ // not reached
+ KVSP_ASSERT(false);
+ return 0;
+}
diff --git a/src/kvirc/kvs/kvi_kvs_parser_expression.cpp b/src/kvirc/kvs/kvi_kvs_parser_expression.cpp
new file mode 100644
index 00000000..832a814d
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_parser_expression.cpp
@@ -0,0 +1,636 @@
+//=============================================================================
+//
+// File : kvi_kvs_parser_expression.cpp
+// Creation date : Mon 6 Oct 2003 01.31 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+
+#include "kvi_kvs_parser.h"
+
+#include "kvi_kvs_treenode.h"
+
+#include "kvi_kvs_report.h"
+#include "kvi_kvs_kernel.h"
+
+#include "kvi_kvs_parser_macros.h"
+
+#include "kvi_locale.h"
+
+
+//#warning "FIXME: expression eval doc!"
+
+ /*
+ @doc: expressioneval
+ @type:
+ language
+ @title:
+ Expression evaluation identifier
+ @syntax:
+ $(<expression>)
+ @keyterms:
+ expressions
+ @short:
+ Expression evaluation identifier
+ @description:
+ Evaluates <expression> and returns its result.[br]
+ If <expression> is a single string, array or hash, it is returned unmodified.[br]
+ In any other case the expression evaluation returns a numeric value, either real or integer.[br]
+ The expressions are really close to the C ones and have some minor extensions.[br]
+ The supported operators are +,-,*,/,|,&,^,||,&&,^^,>>,<<,<,>,<=,>=,==,!= and <> (synonim for !=).[br]
+ The following table describes their meaning.[br]
+ [table]
+ [tr][td][b]Operator[/b][/td][td][b]Description[/b][/td][/tr]
+ [tr][td]a + b[/td][td]Arithmetic sum: valid only for numeric operands[/td][/tr]
+ [tr][td]a - b[/td][td]Arithmetic subtraction: valid only for numeric operands[/td][/tr]
+ [tr][td]a / b[/td][td]Arithmetic division: valid only for numeric operands[/td][/tr]
+ [tr][td]a * b[/td][td]Arithmetic multiplication: valid only for numeric operands[/td][/tr]
+ [tr][td]a % b[/td][td]Arithmetic modulus: valid only for numeric operands[/td][/tr]
+ [tr][td]a || b[/td][td]Logical or: valid only for boolean operands[/td][/tr]
+ [tr][td]a && b[/td][td]Logical and: valid only for boolean operands[/td][/tr]
+ [tr][td]a ^^ b[/td][td]Logical xor: valid only for boolean operands[/td][/tr]
+ [tr][td]a >> b[/td][td]Bitwise shift right: valid only for integer operands[/td][/tr]
+ [tr][td]a << b[/td][td]Bitwise shift left: valid only for integer operands[/td][/tr]
+ [tr][td]a | b[/td][td]Bitwise or: valid only for integer operands[/td][/tr]
+ [tr][td]a & b[/td][td]Bitwise and: valid only for integer operands[/td][/tr]
+ [tr][td]a ^ b[/td][td]Bitwise xor: valid only for integer operands[/td][/tr]
+ [tr][td]a > b[/td][td]Greater than: valid for numeric or string operands. Case sensitive[/td][/tr]
+ [tr][td]a < b[/td][td]Lower than: valid for numeric or string operands. Case sensitive[/td][/tr]
+ [tr][td]a >= b[/td][td]Greater or equal to: valid for numeric or string operands. Case sensitive[/td][/tr]
+ [tr][td]a <= b[/td][td]Lower or equal to: valid for numeric or string operands. Case sensitive[/td][/tr]
+ [tr][td]a != b[/td][td]Not equal to: valid for numeric or string operands. Case sensitive[/td][/tr]
+ [tr][td]a == b[/td][td]Equal to: valid for numeric or string operands. Case sensitive[/td][/tr]
+ [/table]
+ The expressions can contain integer, real or string constants and variable operands.[br]
+ The integer constants can be also specified as hexadecimal numbers by prefixing them by '0x'.[br]
+ The string constants should be enclosed in quotes.[br]
+ @examples:
+ [example]
+ echo $(10 + 5 * 100)
+ echo $(10 / 3)
+ echo $(10 / 3.0)
+ echo $(10.0 + 5 * 100)
+ echo $(145 & 2)
+ echo $("hello" > "ciao")
+ echo $(10 == "10")
+ %a = 100
+ %b = 50.3
+ %c = "test"
+ echo $(%a + %b)
+ echo $("%a%b" + 1)
+ echo $(%a + %b > %c)
+ echo $(-(10 + 20) * 3)
+ echo $(1 ^ 2)
+ echo $(1 ^ 1)
+ echo $(0xffff == 65535)
+ ...
+ [/example]
+ */
+
+
+
+
+KviKvsTreeNodeExpressionBinaryOperator * KviKvsParser::parseExpressionBinaryOperator()
+{
+ switch(KVSP_curCharUnicode)
+ {
+ case '=':
+ KVSP_skipChar;
+ if(KVSP_curCharUnicode == '=')
+ {
+ KVSP_skipChar;
+ return new KviKvsTreeNodeExpressionBinaryOperatorEqualTo(KVSP_curCharPointer);
+ } else {
+ error(KVSP_curCharPointer,__tr2qs("Unknown binary operator '=%q': did you mean '==' ?"),KVSP_curCharPointer);
+ }
+ break;
+ case '!':
+ KVSP_skipChar;
+ if(KVSP_curCharUnicode == '=')
+ {
+ KVSP_skipChar;
+ return new KviKvsTreeNodeExpressionBinaryOperatorNotEqualTo(KVSP_curCharPointer);
+ }
+ break;
+ case '+':
+ KVSP_skipChar;
+ return new KviKvsTreeNodeExpressionBinaryOperatorSum(KVSP_curCharPointer);
+ break;
+ case '-':
+ KVSP_skipChar;
+ return new KviKvsTreeNodeExpressionBinaryOperatorSubtraction(KVSP_curCharPointer);
+ break;
+ case '/':
+ KVSP_skipChar;
+ return new KviKvsTreeNodeExpressionBinaryOperatorDivision(KVSP_curCharPointer);
+ break;
+ case '%':
+ KVSP_skipChar;
+ return new KviKvsTreeNodeExpressionBinaryOperatorModulus(KVSP_curCharPointer);
+ break;
+ case '*':
+ KVSP_skipChar;
+ return new KviKvsTreeNodeExpressionBinaryOperatorMultiplication(KVSP_curCharPointer);
+ break;
+ case '&':
+ KVSP_skipChar;
+ if(KVSP_curCharUnicode == '&')
+ {
+ KVSP_skipChar;
+ return new KviKvsTreeNodeExpressionBinaryOperatorAnd(KVSP_curCharPointer);
+ }
+ return new KviKvsTreeNodeExpressionBinaryOperatorBitwiseAnd(KVSP_curCharPointer);
+ break;
+ case '|':
+ KVSP_skipChar;
+ if(KVSP_curCharUnicode == '|')
+ {
+ KVSP_skipChar;
+ return new KviKvsTreeNodeExpressionBinaryOperatorOr(KVSP_curCharPointer);
+ }
+ return new KviKvsTreeNodeExpressionBinaryOperatorBitwiseOr(KVSP_curCharPointer);
+ break;
+ case '^':
+ KVSP_skipChar;
+ if(KVSP_curCharUnicode == '^')
+ {
+ KVSP_skipChar;
+ return new KviKvsTreeNodeExpressionBinaryOperatorXor(KVSP_curCharPointer);
+ }
+ return new KviKvsTreeNodeExpressionBinaryOperatorBitwiseXor(KVSP_curCharPointer);
+ break;
+ case '>':
+ KVSP_skipChar;
+ switch(KVSP_curCharUnicode)
+ {
+ case '>':
+ KVSP_skipChar;
+ return new KviKvsTreeNodeExpressionBinaryOperatorShiftRight(KVSP_curCharPointer);
+ break;
+ case '=':
+ KVSP_skipChar;
+ return new KviKvsTreeNodeExpressionBinaryOperatorGreaterOrEqualTo(KVSP_curCharPointer);
+ break;
+ default:
+ return new KviKvsTreeNodeExpressionBinaryOperatorGreaterThan(KVSP_curCharPointer);
+ break;
+ }
+ break;
+ case '<':
+ KVSP_skipChar;
+ switch(KVSP_curCharUnicode)
+ {
+ case '>':
+ KVSP_skipChar;
+ return new KviKvsTreeNodeExpressionBinaryOperatorNotEqualTo(KVSP_curCharPointer);
+ break;
+ case '<':
+ KVSP_skipChar;
+ return new KviKvsTreeNodeExpressionBinaryOperatorShiftLeft(KVSP_curCharPointer);
+ break;
+ case '=':
+ KVSP_skipChar;
+ return new KviKvsTreeNodeExpressionBinaryOperatorLowerOrEqualTo(KVSP_curCharPointer);
+ break;
+ default:
+ return new KviKvsTreeNodeExpressionBinaryOperatorLowerThan(KVSP_curCharPointer);
+ break;
+ }
+ break;
+ }
+
+ error(KVSP_curCharPointer,__tr2qs("Unknown binary operator '%q'"),KVSP_curCharPointer);
+ return 0;
+}
+
+
+static unsigned char binary_operator_initial_char[256]=
+{
+ // 000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015
+ // NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031
+ // DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047
+ // ! " # $ % & ' ( ) * + , - . /
+ 0 ,1 ,0 ,0 ,0 ,1 ,1 ,0 ,0 ,0 ,1 ,1 ,0 ,1 ,0 ,1 ,
+ // 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063
+ // 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,0 ,
+ // 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079
+ // @ A B C D E F G H I J K L M N O
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095
+ // P Q R S T U V W X Y Z [ \ ] ^ _
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,
+ // 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111
+ // ` a b c d e f g h i j k l m n o
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
+ // p q r s t u v w x y z { | } ~ 
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,
+ // 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
+ //
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
+ //
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
+ //
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
+ //
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
+ // � � � � � � � � � � � � � � � �
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
+ // � � � � � � � � � � � � � � � �
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
+ // � � � � � � � � � � � � � � � �
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
+ // 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
+ // � � � � � � � �
+ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0
+};
+
+
+bool KviKvsParser::parseExpressionMightPointToOperator()
+{
+ if(KVSP_curCharUnicode == '%')
+ {
+ KVSP_skipChar;
+ if(KVSP_curCharIsLetter || (KVSP_curCharUnicode == '_'))
+ {
+ // a variable, probably
+ KVSP_backChar;
+ return false;
+ }
+ KVSP_backChar;
+ return true;
+ }
+ if(KVSP_curCharUnicode > 255)return false;
+ return binary_operator_initial_char[KVSP_curCharUnicode] != 0;
+}
+
+
+KviKvsTreeNodeExpression * KviKvsParser::parseExpressionOperand(char terminator)
+{
+ switch(KVSP_curCharUnicode)
+ {
+ case 0:
+ case '\r':
+ case '\n':
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of script in expression"));
+ return 0;
+ break;
+ case '(':
+ KVSP_skipChar;
+ skipSpaces();
+ return parseExpression(')'); // sub expression
+ break;
+ case '-':
+ {
+ KVSP_skipChar;
+ skipSpaces();
+ KviKvsTreeNodeExpression * d = parseExpressionOperand(terminator);
+ if(!d)return 0;
+ return new KviKvsTreeNodeExpressionUnaryOperatorNegate(d->location(),d);
+ }
+ break;
+ case '!':
+ {
+ KVSP_skipChar;
+ skipSpaces();
+ KviKvsTreeNodeExpression * d = parseExpressionOperand(terminator);
+ if(!d)return 0;
+ return new KviKvsTreeNodeExpressionUnaryOperatorLogicalNot(d->location(),d);
+ }
+ break;
+ case '~':
+ {
+ KVSP_skipChar;
+ skipSpaces();
+ KviKvsTreeNodeExpression * d = parseExpressionOperand(terminator);
+ if(!d)return 0;
+ return new KviKvsTreeNodeExpressionUnaryOperatorBitwiseNot(d->location(),d);
+ }
+ break;
+ default:
+ // anything else at this point is an operand core
+ return parseExpressionOperandCore(terminator);
+ break;
+ }
+
+ // not reached
+ KVSP_ASSERT(false);
+ return 0;
+}
+
+
+
+KviKvsTreeNodeExpression * KviKvsParser::parseExpressionOperandCore(char terminator)
+{
+ KviPointerList<KviKvsTreeNodeData> * pDataList = new KviPointerList<KviKvsTreeNodeData>;
+ pDataList->setAutoDelete(true);
+
+ static QString szStaticSingleSpace(" ");
+
+ const QChar * pOperandBegin = KVSP_curCharPointer;
+
+ bool bHaveVariable = false;
+
+ for(;;)
+ {
+ switch(KVSP_curCharUnicode)
+ {
+ case 0:
+ case '\r':
+ case '\n':
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of script in expression"));
+ delete pDataList;
+ return 0;
+ break;
+ case ' ':
+ case '\t':
+ skipSpaces();
+ if((KVSP_curCharUnicode == terminator) || parseExpressionMightPointToOperator())goto postprocess_operand;
+ // separate by single spaces
+ pDataList->append(new KviKvsTreeNodeConstantData(KVSP_curCharPointer,new KviKvsVariant(szStaticSingleSpace)));
+ break;
+ case '"':
+ {
+ // a string
+ bHaveVariable = true;
+ KviKvsTreeNodeData * d = parseStringParameter();
+ if(!d)
+ {
+ delete pDataList;
+ return 0;
+ }
+ pDataList->append(d);
+ }
+ break;
+ case '%':
+ case '$':
+ case '@':
+ {
+ bHaveVariable = true;
+ KviKvsTreeNodeData * d = parseParameterPercentOrDollar();
+ if(!d)
+ {
+ delete pDataList;
+ return 0;
+ }
+ pDataList->append(d);
+ }
+ break;
+ default:
+ // literal ?
+ if(KVSP_curCharIsLetterOrNumber || (KVSP_curCharUnicode == '.') || (KVSP_curCharUnicode == '_'))
+ {
+ const QChar * pBegin = KVSP_curCharPointer;
+ while(KVSP_curCharIsLetterOrNumber || (KVSP_curCharUnicode == '.') || (KVSP_curCharUnicode == '_'))KVSP_skipChar;
+ QString tmp(pBegin,KVSP_curCharPointer - pBegin);
+ bool bOk;
+ kvs_int_t iVal = tmp.toLong(&bOk);
+ if(bOk)
+ {
+ pDataList->append(new KviKvsTreeNodeConstantData(pBegin,new KviKvsVariant(iVal)));
+ } else {
+ // bOk is false
+ if(pBegin->unicode() == '0')
+ {
+ if(tmp.length() > 2)
+ {
+ if((tmp[1] == 'x') || (tmp[1] == 'X'))
+ {
+ // hexadecimal constant ?
+ QString hex = tmp.right(tmp.length() - 2);
+ iVal = hex.toLong(&bOk,16);
+ if(bOk)
+ {
+ pDataList->append(new KviKvsTreeNodeConstantData(pBegin,new KviKvsVariant(iVal)));
+ }
+ }
+ }
+ }
+ if(!bOk)
+ {
+ kvs_real_t dVal = tmp.toDouble(&bOk);
+ if(bOk)
+ {
+ pDataList->append(new KviKvsTreeNodeConstantData(pBegin,new KviKvsVariant(dVal)));
+ } else {
+ pDataList->append(new KviKvsTreeNodeConstantData(pBegin,new KviKvsVariant(tmp)));
+ }
+ }
+ }
+ } else {
+ error(KVSP_curCharPointer,__tr2qs("Unexpected character %q (unicode %h) in expression. If it meant to be a string use the quotes."),KVSP_curCharPointer,KVSP_curCharUnicode);
+ delete pDataList;
+ return 0;
+ }
+ break;
+ }
+
+ if((KVSP_curCharUnicode == terminator) || parseExpressionMightPointToOperator())break;
+ }
+
+postprocess_operand:
+
+ if(pDataList->count() == 0)
+ {
+ delete pDataList;
+ error(KVSP_curCharPointer,__tr2qs("Unexpected empty expression operand"));
+ return 0;
+ }
+
+ if(pDataList->count() > 1)
+ return new KviKvsTreeNodeExpressionVariableOperand(pOperandBegin,new KviKvsTreeNodeCompositeData(pOperandBegin,pDataList));
+
+ KviKvsTreeNodeData * pUniqueData = pDataList->first();
+
+ if(bHaveVariable)
+ {
+ pDataList->setAutoDelete(false);
+ delete pDataList;
+ return new KviKvsTreeNodeExpressionVariableOperand(pOperandBegin,pUniqueData);
+ }
+
+ // a single constant data element
+ KviKvsTreeNodeExpressionConstantOperand * op = new KviKvsTreeNodeExpressionConstantOperand(pOperandBegin,new KviKvsVariant(*(((KviKvsTreeNodeConstantData *)pUniqueData)->value())));
+ delete pDataList; // auto delete is true
+ return op;
+}
+
+
+KviKvsTreeNodeExpression * KviKvsParser::parseExpression(char terminator)
+{
+ // we're inside the expression now
+ skipSpaces();
+
+ if(KVSP_curCharUnicode == terminator)
+ {
+ // empty expression
+ // constant 0 ?
+ KVSP_skipChar;
+ return new KviKvsTreeNodeExpressionConstantOperand(KVSP_curCharPointer,new KviKvsVariant((kvs_int_t)0));
+ }
+
+ KviKvsTreeNodeExpression * left = parseExpressionOperand(terminator);
+ if(!left)return 0;
+ QString sz;
+ left->contextDescription(sz);
+
+ skipSpaces();
+
+ if(KVSP_curCharUnicode == terminator)
+ {
+ KVSP_skipChar;
+ return left;
+ }
+
+ // not a terminator... must be an operator (or an error , eventually)
+
+ KviKvsTreeNodeExpression * curTopOperator = parseExpressionBinaryOperator();
+ if(!curTopOperator)
+ {
+ delete left;
+ return 0; // error
+ }
+ curTopOperator->contextDescription(sz);
+
+ curTopOperator->setLeft(left);
+
+ // ok.. parse the right side
+
+ // Now curTopOperator has the left subtree (one node) set
+ // and it points to the TOP (=ROOT) node
+ // Evaluate the rest
+
+ KviKvsTreeNodeExpression * operand;
+ KviKvsTreeNodeExpression * incompleteOperator = curTopOperator;
+ KviKvsTreeNodeExpression * auxOperator;
+
+ for(;;)
+ {
+ skipSpaces();
+
+ operand = parseExpressionOperand(terminator);
+ if(!operand)
+ {
+ delete curTopOperator;
+ return 0;
+ }
+ operand->contextDescription(sz);
+
+ skipSpaces();
+
+ if(KVSP_curCharUnicode == terminator)
+ {
+ KVSP_skipChar;
+ incompleteOperator->setRight(operand);
+ return curTopOperator;
+ }
+
+ auxOperator = parseExpressionBinaryOperator();
+ if(!auxOperator)
+ {
+ delete curTopOperator;
+ delete operand;
+ return 0;
+ }
+
+ auxOperator->contextDescription(sz);
+
+
+ //now compare operators...
+ if(incompleteOperator->precedence() > auxOperator->precedence())
+ {
+ // This in fact means that incomplete has LOWER precedence than
+ // aux and thus aux should be done first.
+ incompleteOperator->setRight(auxOperator);
+ auxOperator->setLeft(operand);
+ } else {
+ // incomplete has GREATER precedence than aux and thus aux should be done first
+ incompleteOperator->setRight(operand); //right tree complete
+ // go up until we find an operator with lower precedence than auxOperator (>=)
+ KviKvsTreeNodeExpression * tempOperator = incompleteOperator->parentWithPrecedenceLowerThan(auxOperator->precedence());
+ if(tempOperator == 0)
+ {
+ auxOperator->setLeft(curTopOperator);
+ curTopOperator = auxOperator;
+ } else {
+ KVSP_ASSERT(tempOperator->right());
+ auxOperator->setLeft(tempOperator->right());
+ tempOperator->setRight(auxOperator);
+ }
+ }
+ incompleteOperator = auxOperator;
+ KVSP_ASSERT(incompleteOperator->right() == 0);
+ }
+
+ KVSP_ASSERT(false);
+
+ return 0; //newer here
+
+/*
+
+
+ KviKvsTreeNodeExpression * right = parseExpression(terminator);
+ if(!right)
+ {
+ delete op;
+ return 0;
+ }
+
+ // left * a + b
+
+ // *
+ // left +
+ // a b
+
+*/
+/*
+ // now.. the left side is a single operand for sure
+ // the right side might be a single operand or a sequence of operations
+ if(right->isOperator())
+ {
+ // if the operator has lower precedence than op then
+ if(right->precedence() < op->precedence())
+ {
+ right->attachHighPrecedenceOperator(op);
+ return right;
+ }
+ }
+*/
+/*
+ // a single operand or a greater precedence operator
+ op->setRight(right);
+
+ return op;
+ */
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_parser_lside.cpp b/src/kvirc/kvs/kvi_kvs_parser_lside.cpp
new file mode 100644
index 00000000..c9869567
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_parser_lside.cpp
@@ -0,0 +1,1196 @@
+//=============================================================================
+//
+// File : kvi_kvs_parser_lside.cpp
+// Creation date : Thu 03 Nov 2003 13.11 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+
+#include "kvi_kvs_parser.h"
+
+#include "kvi_kvs_treenode.h"
+
+#include "kvi_kvs_report.h"
+#include "kvi_kvs_kernel.h"
+
+#include "kvi_kvs_parser_macros.h"
+
+#include "kvi_locale.h"
+
+
+/*
+ @doc: operators
+ @title:
+ Operators
+ @keyterms:
+ operator,operators,assignment,assign
+ @type:
+ language
+ @short:
+ Variable operators , assignments & co.
+ @body:
+ Operator constructs are commands just like the other ones.
+ All the operators work on local or global variables and dictionaries.[br]
+ The generic operator syntax is:[br]
+ [br]
+ [b]<left_operand> <operator> [right_operand][/b][br]
+ [br]
+ where <left_operand> and [right_operand] depend on the <operator>.[br]
+ Some operators have no [right_operand] and these are called [b]unary operators[/b]:
+ they operate directly on <left_operand>.[br]
+
+ [br]
+ [big]= (Assignment)[/big][br]
+ [br]
+
+ The assignment is the "plainest" of the binary operators: it works just like in any other programming language.[br]
+ [br]
+ If the <left_operand> is a variable, then the <right_operand> is assigned to it;
+ if the variable doesn't exists yet , it is created.[br]
+ If <right_operand> evaluates to an empty value then the variable is unset.[br]
+ [example]
+ [comment]# Assigning a constant to the global variable %Tmp[/comment]
+ %Tmp = 1
+ [comment]# Assigning a string constant to the global variable %Tmp[/comment]
+ %Tmp = some string
+ [comment]# Assigning a string constant to the local variable %tmp[/comment]
+ %tmp = "some string with whitespace &nbsp; &nbsp; &nbsp; &nbsp; preserved"
+ [comment]# Assigning a variable to another variable copies its contents[/comment]
+ %tmp = %somevariable
+ [comment]# Assigning a variable string to the global variable %Z[/comment]
+ %Z = my eyes are %color
+ [comment]# Assigning a variable string (with a function call inside) to the local variable %x[/comment]
+ %x = the system os is [fnc]$system.osname[/fnc]
+ [comment]# Assigning an empty string to the local variable %y unsets %y[/comment]
+ %y =
+ [comment]# This is equivalent to the above[/comment]
+ %y = ""
+ [comment]# This is equivalent too, if $function evalutates to an empty string[/comment]
+ %y = $function()
+ [/example]
+ [br]
+ If the <left_operand> is a dictionary/array entry, then the <right_operand> is assigned to it;
+ if the dictionary/array entry doesn't exist (or the whole dictionary/array doesn't exists) it is created.[br]
+ If <right_operand> evaluates to an empty value then the dictionary/array entry (and eventually the whole
+ dictionary/array, if there are no other entries) is unset.[br]
+ [example]
+ [comment]# Assigning a variable string to a global dictionary entry[/comment]
+ %Dict[key] = [fnc]$system.osname[/fnc]\ian
+ [comment]# Unsetting a local dictionary entry[/comment]
+ %mydict[23] = ""
+ [/example]
+ [br]
+ If the <left_operand> is an array reference then the semantics depend on the <right_operand> type.
+ If <right_operand> is an array reference then its contents are copied to the <left_operand>.[br]
+ If <right_operand> is a dictionary (keys) reference then its values are copied to to <left_operand>.[br]
+ If <right_operand> is a scalar then the value is assigned to every entry of <left_operand>.[br]
+ This is an easy way of unsetting a whole array: just assign an empty string.[br]
+ If the <left_operand> is a dictionary reference then the semantics depend on the <right_operand> type.
+ If <right_operand> is a dictionary reference then its contents are copied to the <left_operand>.[br]
+ If <right_operand> is an array reference then its contents are copied to to <left_operand> using
+ the array indexes as keys.[br]
+ If <right_operand> is a dictionary key reference then the keys are copied to the <left_operand>
+ using numeric indexes starting from 0 as keys.[br]
+ If <right_operand> is a scalar then the value is assigned to every key of <left_operand>.[br]
+ This is an easy way of unsetting a whole dictionary: just assign an empty string to all its keys.[br]
+ (If you play with huge dictionaries/arrays it might be a good idea to unset them when no longer needed)
+ [example]
+ [comment]# Assigning a dictionary to another: %mydict[] becomes a copy of %anotherdict[][/comment]
+ %mydict[] = %anotherdict[]
+ [comment]# %mydict[] gets the values of the dict returned by $features[/comment]
+ %mydict[] = [fnc]$features[/fnc]
+ [comment]# Assigning a string to ALL the keys of %mydict[/comment]
+ %mydict[] = "some default value"
+ [comment]# Unsetting a whole dictionary[/comment]
+ %mydict[] =
+ %AnotherGlobalDict[] = ""
+ [/example]
+
+
+ [br]
+ [big]=~ (Binding operator)[/big][br]
+ [br]
+
+ This operator is a really ugly, poor and clueless attempt to reach at least 1% of the
+ power of the perl =~ operator :D[br]
+ It allows some complex string operations to be performed efficently by operating directly
+ on the left operand (in fact this is a lot faster in KVIrc since at least one step of parsing is skipped).[br]
+ Its basic syntax is:[br]
+ [b]<left_operand> =~ <operation>[parameters][/b][br]
+ Where <operation> may be one of 't','s' and parameters depend on it.[br]
+ <left_operand> is the target of the <operation>.[br]
+ If <left_operand> is an array or dictionary, the <operation> is executed on each item they contain.[br]
+ Operation 't' is the transliteration.[br]
+ The complete syntax with parameters is:[br]
+ [b]<left_operand> =~ t/<search characters>/<replacement characters>/[/b][br]
+ where <search characters> is a string of characters that are replaced with the corresponding
+ characters in <replacement characters>.[br]
+ This operation can be also named 'y' or 'tr' (to preserve some compatibility with other languages).[br]
+ [example]
+ %A=This is a test string
+ echo %A
+ %A=~ tr/abcdefghi/ABCDEFGHI/
+ echo %A
+ [/example]
+ Operation 's' is the substitution.[br]
+ The complete syntax with parameters is:[br]
+ [b]<left_operand> =~ s/<search pattern>/<replacement pattern>/[flags][/b][br]
+ where <search pattern> is an extended regular expression to be matched in the <left_operand>
+ and <replacement string> is a special pattern that will replace any occurence found.[br]
+ <search pattern> may contain parentheses to capture parts of the matched text.
+ <replacement string> can contain the escape sequences \\N where N is a number between 1 and 9
+ to be replaced by the captured text.[br]
+ (We use \\N because KVIrc will first unquote the string when parsing...)[br]
+ \\0 is a special escape that will be replaced by the entire match (is always valid!).[br]
+ WARNING: the "capture-text" feature is not available if KVIrc has been compiled
+ with qt older than 3.0.0. You can find out if the feature is available by
+ looking for the string "Qt3" in the array returned by [fnc]$features[/fnc].[br]
+ [flags] may be a combination of the letters 'g','i' and 'w'.[br]
+ 'g' causes the search to be global and not stop after the first occurence of <search pattern>.[br]
+ 'i' causes the search to be case insensitive.[br]
+ 'w' causes the search pattern to be interpreted as a simple wildcard regular expression.[br]
+ 'm' causes the matching to be "minimal" instead of "greedy" (default). Greedy matches
+ find the longest possible match in the string while minimal (non-greedy) matches the shortest possible.[br]
+ [example]
+ %A=This is a test string
+ echo %A
+ %A=~ s/([a-z])i([a-z])/\\1I\\2/
+ echo %A
+ %A=~ s/([a-z])i([a-z])/\\1@\\2/gi
+ echo %A
+ [/example]
+
+ [br]
+ [big]X= (Arithmetic Self-operators)[/big][br]
+ [br]
+
+ The general syntax is:[br]
+ [b]<left_operand> <operation> <right_operand>[/b][br]
+ Where <left_operand> and <right_operand> must evaluate to numbers.[br]
+ All these operators perform the operation on <left_operand> and <right_operand> and then
+ store the result in <left_operand> (which therefore must be a variable, an array entry or a dictionary entry).[br]
+ <operation> may be one of:[br]
+ += : sums the <right_operand> to <left_operand>[br]
+ -= : subtracts <right_operand> from <left_operand>[br]
+ *= : multiplies <left_operand> by <right_operand>[br]
+ %= : calculates <left_operand> modulus <right_operand>[br]
+ |= : calculates <left_operand> bitwise-or <right_operand>[br]
+ &= : calculates <left_operand> bitwise-and <right_operand>[br]
+ /= : divides <left_operand> by <right_operand>[br]
+
+ [br]
+ [big]++ and -- (Increment and Decrement)[/big][br]
+ [br]
+
+ These two operators work only on numeric operands.[br]
+ The general syntax is:[br]
+ [b]<left_operand> <operator>[/b][br]
+ There is no <right_operand>.[br]
+ ++ increments <left_operand> by one, -- decrements <left_operand> by one.[br]
+ These are equivalent to += 1 and -= 1.[br]
+
+ [br]
+ [big].= , << , <+ , <, (String concatenation operators)[/big][br]
+ [br]
+
+ All these operators work also on whole arrays and dictionaries.[br]
+ Operator [b].=[/b] : APPENDS the <right_operand> to the <left_operand>[br]
+ Operator [b]<+[/b] is a synonim for .= (backward compatibility)[br]
+ Operator [b]<<[/b] : appends <right_operand> to <left_operand>
+ separating the two strings by a single space if and only if <left_operand> and <right_operand>
+ are non-empty.[br]
+ Operator [b]<,[/b] : is similar to '<<' ; appends , separating with a single ',' with the same condition.[br]
+
+ @examples:
+ First set the variable %var
+ [example]
+ %var = Ciao ciao
+ [/example]
+ Then append a nickname...
+ [example]
+ %var << Pragma
+ [/example]
+ %var now contains "Ciao ciao Pragma"[br]
+ Append a '!' character
+ [example]
+ %var <+ !
+ [/example]
+ %var now contains "Ciao ciao Pragma!"
+ Now reset it.
+ [example]
+ %var =
+ [/example]
+ Now %var is unset.[br]
+ Reset it with a comma separated list of items
+ [example]
+ %var = Pragma,Diabl0,Arter|o
+ %var <, MalboroLi
+ [/example]
+ %var now contains "Pragma,Diabl0,Arter|o,MalboroLi"[br]
+ [br]
+ Now a longer example.
+ [example]
+ %var = l
+ [cmd]echo[/cmd] It's name starts with the letter %var!
+ %var &lt;+ inux
+ [cmd]echo[/cmd] Yes , it is %var!
+ %var &lt;&lt; OS
+ [cmd]echo[/cmd] Use %var!
+ %var &lt;, Mac OS
+ [cmd]echo[/cmd] There are two items in this list : %var
+ %var = [fnc]$strlen[/fnc](%var)
+ [cmd]echo[/cmd] And it is %var characters long (including the comma)
+ %var--
+ [cmd]echo[/cmd] Excluding the comma : %var
+ %var+=%var
+ [cmd]echo[/cmd] Now it is doubled : %var
+ %var =
+ [cmd]echo[/cmd] Now the var is unset (empty): (%var) !
+ [/example]
+*/
+
+
+KviKvsTreeNodeData * KviKvsParser::parseOperationRightSide(bool bPreferNumeric)
+{
+ KviPointerList<KviKvsTreeNodeData> * l = new KviPointerList<KviKvsTreeNodeData>();
+ l->setAutoDelete(true);
+
+ const QChar * pBegin = KVSP_curCharPointer;
+
+ for(;;)
+ {
+ switch(KVSP_curCharUnicode)
+ {
+ case 0:
+ goto end_of_the_param;
+ break;
+ case '\n':
+ case '\r':
+ case ';':
+ KVSP_skipChar;
+ goto end_of_the_param;
+ break;
+ case ' ':
+ case '\t':
+ skipSpaces();
+ if(KVSP_curCharIsEndOfCommand)
+ {
+ goto end_of_the_param;
+ } else {
+ // separate by single spaces
+ bPreferNumeric = false; // this can't be a number
+ l->append(new KviKvsTreeNodeConstantData(KVSP_curCharPointer,new KviKvsVariant(QString(" "))));
+ }
+ break;
+ default:
+ // anything else is a parameter
+ KviKvsTreeNodeData * p = parseCommandParameter(bPreferNumeric);
+ if(!p)
+ {
+ // this is an error
+ delete l;
+ return 0;
+ }
+ l->append(p);
+ break;
+ }
+ }
+
+end_of_the_param:
+ if(l->count() > 1)
+ {
+ // complex parameter needed
+ return new KviKvsTreeNodeCompositeData(pBegin,l);
+ } else {
+ if(l->count() > 0)
+ {
+ // a single parameter in the list
+ l->setAutoDelete(false);
+ KviKvsTreeNodeData * p = l->first();
+ delete l;
+ return p;
+ } else {
+ // empty (this should NEVER happen anyway)
+ delete l;
+ return new KviKvsTreeNodeConstantData(pBegin,new KviKvsVariant(QString("")));
+ }
+ }
+ // never reached
+ return 0;
+}
+
+/*
+ @doc: assignment
+ @title:
+ Assignment operation
+ @keyterms:
+ assignment
+ @type:
+ language
+ @short:
+ Assignment operation
+ @body:
+ The assignment is the "plainest" of the operators: it works just like in any other programming language.[br]
+ The syntax is:[br]
+ [br]
+ [b]<target> = <source>[/b]
+ [br]
+ <target> must be a variable, <source> can be any parameter.[br]
+ If the <target> variable doesn't exist, it is created.
+ If it already exists, it is eventually converted to the type of <souce> (scalar, hash or array).[br]
+ If <source> evaluates to an empty value then the <target> variable is unset.[br]
+ [example]
+ [comment]# Assigning a constant to the variable %Tmp[/comment]
+ %Tmp = 1
+ [cmd]echo[/cmd] %Tmp
+ [comment]# Assigning a string constant to the variable %Tmp[/comment]
+ %Tmp = some string
+ [cmd]echo[/cmd] %Tmp
+ [comment]# Assigning a string constant to the variable %Tmp[/comment]
+ %Tmp = "some string with whitespace &nbsp; &nbsp; &nbsp; &nbsp; preserved"
+ [cmd]echo[/cmd] %Tmp
+ [comment]# Assigning a variable to another variable copies its contents[/comment]
+ %Someothervariable = "Contents"
+ %Tmp = %Someothervariable
+ [cmd]echo[/cmd] %Tmp
+ [comment]# Assigning a variable string to the variable %z[/comment]
+ %color = blue
+ %z = my eyes are %color
+ [cmd]echo[/cmd] %z
+ [comment]# Assigning a variable string (with a function call inside) to the variable %x[/comment]
+ %x = the system os is [fnc]$system.osname[/fnc]
+ [cmd]echo[/cmd] %x
+ [comment]# Assigning an empty string to the local variable %y unsets %y[/comment]
+ %x =
+ [cmd]echo[/cmd] %y
+ [comment]# This is equivalent to the above[/comment]
+ %y = ""
+ [comment]# This is equivalent too, if $function evalutates to an empty string[/comment]
+ %y = $function()
+ [comment]# Assigning a variable string to a hash entry[/comment]
+ %Dict{key} = [fnc]$system.osname[/fnc]\ian
+ [comment]# Unsetting an array entry[/comment]
+ %mydict[23] = ""
+ [comment]# Assigning a hash to another: %mydict[] becomes a copy of %anotherdict[][/comment]
+ %anotherdict{"The key"} = "Some dummy value"
+ %mydict = %anotherdict
+ [cmd]echo[/cmd]%mydict{"The key"}
+ [comment]# This will convert %mydict to be a scalar variable (deleting all the %mydict contents!)[/comment]
+ %mydict = "some default value"
+ [comment]# Unsetting a whole hash[/comment]
+ %anotherdict =
+ [/example]
+ [/p]
+*/
+
+
+/*
+ @doc: incrementdecrement
+ @title:
+ Increment and decrement operations
+ @keyterms:
+ increment, decrement
+ @type:
+ language
+ @short:
+ Increment and decrement operations
+ @body:
+ These two operators work only on numeric operands.[br]
+ The syntax is:[br]
+ [br]
+ [b]<target>++[/b][br]
+ [b]<target>--[/b][br]
+ [br]
+ ++ increments <target> by one, -- decrements <target> by one.[br]
+ These are equivalent to += 1 and -= 1.[br]
+ <target> must be an existing variable and contain an integer value.[br]
+ If <target> contains a real value then the real is truncated to the nearest
+ integer and then incremented or decremented.[br]
+ @examples:
+ [example]
+ %a=10
+ [cmd]echo[/cmd] "Incrementing"
+ [cmd]while[/cmd](%a < 20)
+ {
+ [cmd]echo[/cmd] %a
+ [b]%a++[/b]
+ }
+ [cmd]echo[/cmd] "Decrementing"
+ [cmd]while[/cmd](%a > 10)
+ {
+ [cmd]echo[/cmd] %a
+ [b]%a--[/b]
+ }
+ [cmd]echo[/cmd] "Testing for loop"
+ [cmd]for[/cmd](%a=0;%a < 10;[b]%a++[/b])
+ {
+ [cmd]echo[/cmd] %a
+ }
+ [example]
+ @seealso:
+ [doc:operators]Operators[/doc]
+*/
+
+
+/*
+ @doc: selfarithmetic
+ @title:
+ Arithmetic self-operators
+ @type:
+ language
+ @short:
+ Arithmetic self-operators
+ @body:
+ These operators work only on numeric operands.[br]
+ The syntax is:[br]
+ [br]
+ [b]<target> += <right_operand>[/b][br]
+ [b]<target> -= <right_operand>[/b][br]
+ [b]<target> *= <right_operand>[/b][br]
+ [b]<target> /= <right_operand>[/b][br]
+ [b]<target> %= <right_operand>[/b][br]
+ [br]
+ <target> must be an existing variable and contain a numeric value.
+ <right_operand> must evaluate to a numeric value.
+ Note that if you want <right_operand> to be a result of an expression, you must
+ enclose it in the $(*) expression evaluation call.[br]
+ Operator += sums the <right_operand> value to the <target> value and stores the result in <target>.[br]
+ Operator -= subtracts <right_operand> from <target> and stores the result in <target>.[br]
+ Operator *= multiplies <target> by <right_operand> and stores the result in <target>.[br]
+ Operator /= divides <target> by <right_operand> and stores the result in <target>.[br]
+ Operator %= computes <target> modulus <right_operand> and stores the result in <target>.[br]
+ The division and modulus operators fail with an error if <right_operand> is 0.[br]
+ If both <target> and <right_operand> are integer values then the results of the division
+ and modulus are integers (truncated for the division).[br]
+ If <target> or <right_operand> or both are floating point values then the result is a floating point value.[br]
+ @examples:
+ [example]
+ %a=10
+ [cmd]echo[/cmd] %a
+ %a+=20
+ [cmd]echo[/cmd] %a
+ %a-=$(%a - 1)
+ [cmd]echo[/cmd] %a
+ %a *= 10
+ [cmd]echo[/cmd] %a
+ %a /= 21
+ [cmd]echo[/cmd] %a
+ %a *= 20
+ [cmd]echo[/cmd] %a
+ %a /= 21.0
+ [cmd]echo[/cmd] %a
+ %b = 10.0
+ %a %= %b
+ [cmd]echo[/cmd] %a
+ %a = 10
+ %b = 3
+ [comment]# nice trick[/comment]
+ %a /= %b.0
+ [cmd]echo[/cmd] %a
+ [example]
+ @seealso:
+ [doc:operators]Operators[/doc]
+*/
+
+
+/*
+ @doc: selfbitwise
+ @title:
+ Bitwise self-operators
+ @type:
+ language
+ @short:
+ Bitwise self-operators
+ @body:
+ These operators work only on integer operands.[br]
+ The syntax is:[br]
+ [br]
+ [b]<target> |= <right_operand>[/b][br]
+ [b]<target> &= <right_operand>[/b][br]
+ [b]<target> ^= <right_operand>[/b][br]
+ [b]<target> >>= <right_operand>[/b][br]
+ [b]<target> <<= <right_operand>[/b][br]
+ [br]
+ <target> must be an existing variable and contain a numeric value.
+ <right_operand> must evaluate to a numeric value.
+ If <target> or <right_operand> are floating point values then they are truncated
+ and converted to integers.[br]
+ Note that if you want <right_operand> to be a result of an expression, you must
+ enclose it in the $(*) expression evaluation call.[br]
+ Operator |= computes <target> bitwise-or <right_operand> and stores the result in <target>.[br]
+ Operator &= computes <target> bitwise-and <right_operand> and stores the result in <target>.[br]
+ Operator ^= computes <target> bitwise-xor <right_operand> and stores the result in <target>.[br]
+ Operator >>= shifts <target> <right_operand> bits to the right and stores the result int <target>.[br]
+ Operator <<= shifts <target> <right_operand> bits to the left and stores the result int <target>.[br]
+ Note that "!=" is not available. You must use %a = $(!%b) to implement it.[br]
+ For operators >>= and <<= <right_operand> must be a positive integer.[br]
+ @examples:
+ [example]
+ %a = 1
+ [cmd]echo[/cmd] %a
+ %a |= 2
+ [cmd]echo[/cmd] %a
+ %a &= 2
+ [cmd]echo[/cmd] %a
+ %a ^= 1
+ [cmd]echo[/cmd] %a
+ %a >>= 2
+ [cmd]echo[/cmd] %a
+ %a <<= 1
+ [cmd]echo[/cmd] %a
+ [example]
+ @seealso:
+ [doc:operators]Operators[/doc]
+*/
+
+
+/*
+ @doc: stringconcatenation
+ @title:
+ String concatenation operators
+ @type:
+ language
+ @short:
+ String concatenation operators
+ @body:
+ These operators concatenate strings.
+ The syntax is:[br]
+ [br]
+ [b]<target> .= <right_operand>[/b][br]
+ [b]<target> << <right_operand>[/b][br]
+ [b]<target> <, <right_operand>[/b][br]
+ [br]
+ Operator .= appends <right_operand> to <target>.
+ Operator << appends a space followed by <right_operand> to <target> if <target> is non empty,
+ otherwise sets <target> to <right_operand>.
+ Operator <, is similar to << but uses a comma to separate the two variable contents.
+ The last two operators are useful in creating space-separated or comma-separated lists.
+ @examples:
+ [example]
+ %a = ""
+ %a << free
+ [cmd]echo[/cmd] %a
+ %a .= bsd
+ [cmd]echo[/cmd] %a
+ %a << rox
+ [cmd]echo[/cmd] %a
+ %a <, but linux is better!
+ [cmd]echo[/cmd] %a
+ [example]
+ @seealso:
+ [doc:operators]Operators[/doc]
+*/
+
+
+/*
+ @doc: arrayconcatenation
+ @title:
+ Array concatenation operator
+ @type:
+ language
+ @short:
+ Array concatenation operator
+ @body:
+ This operator concatenates arrays
+ The syntax is:[br]
+ [br]
+ [b]<target> <+ <right_operand>[/b][br]
+ [br]
+ If <target> is not an array, it is converted to one first.
+ After that, if <right_operand> is a scalar then it is appended
+ to the end of the <target> array. If <right_operand> is an array
+ then all of its items are appended to the end of the <target> array.
+ If <right_operand> is a hash then all of its value items
+ are appended to the end of the <target> array.
+ @seealso:
+ [doc:operators]Operators[/doc]
+*/
+
+
+
+/*
+ @doc: binding
+ @title:
+ Binding operator
+ @type:
+ language
+ @short:
+ Binding operator
+ @body:
+ This operator is a really ugly, poor and clueless attempt to reach at least 1% of the
+ power of the perl =~ operator :D[br]
+ It allows some complex string operations to be performed efficently by operating directly
+ on the left operand (in fact this is a lot faster in KVIrc since at least one step of parsing is skipped).[br]
+ Its basic syntax is:[br]
+ [b]<left_operand> =~ <operation>[parameters][/b][br]
+ Where <operation> may be one of 't','s' and parameters depend on it.[br]
+ <left_operand> is the target of the <operation>.[br]
+ If <left_operand> is an array or dictionary, the <operation> is executed on each item they contain.[br]
+ Operation 't' is the transliteration.[br]
+ The complete syntax with parameters is:[br]
+ [b]<left_operand> =~ t/<search characters>/<replacement characters>/[/b][br]
+ where <search characters> is a string of characters that are replaced with the corresponding
+ characters in <replacement characters>.[br]
+ This operation can be also named 'y' or 'tr' (to preserve some compatibility with other languages).[br]
+ [example]
+ %A=This is a test string
+ echo %A
+ %A=~ tr/abcdefghi/ABCDEFGHI/
+ echo %A
+ [/example]
+ Operation 's' is the substitution.[br]
+ The complete syntax with parameters is:[br]
+ [b]<left_operand> =~ s/<search pattern>/<replacement pattern>/[flags][/b][br]
+ where <search pattern> is an extended regular expression to be matched in the <left_operand>
+ and <replacement string> is a special pattern that will replace any occurence found.[br]
+ <search pattern> may contain parentheses to capture parts of the matched text.
+ <replacement string> can contain the escape sequences \\N where N is a number between 1 and 9
+ to be replaced by the captured text.[br]
+ (We use \\N because KVIrc will first unquote the string when parsing...)[br]
+ \\0 is a special escape that will be replaced by the entire match (is always valid!).[br]
+ [flags] may be a combination of the letters 'g','i' and 'w'.[br]
+ 'g' causes the search to be global and not stop after the first occurence of <search pattern>.[br]
+ 'i' causes the search to be case insensitive.[br]
+ 'w' causes the search pattern to be interpreted as a simple wildcard regular expression.[br]
+ [example]
+ %A=This is a test string
+ echo %A
+ %A=~ s/([a-z])i([a-z])/\\1I\\2/
+ echo %A
+ %A=~ s/([a-z])i([a-z])/\\1@\\2/gi
+ echo %A
+ [/example]
+ @examples:
+ [example]
+ %a = ""
+ %a << free
+ [cmd]echo[/cmd] %a
+ %a .= bsd
+ [cmd]echo[/cmd] %a
+ %a << rox
+ [cmd]echo[/cmd] %a
+ %a <, but linux is better!
+ [cmd]echo[/cmd] %a
+ [example]
+ @seealso:
+ [doc:operators]Operators[/doc]
+*/
+
+
+
+/*
+ @doc: operators
+ @title:
+ Operators
+ @keyterms:
+ operator,operators,assignment
+ @type:
+ language
+ @short:
+ Variable operators , assignments & co.
+ @body:
+ [p]
+ Operator constructs are commands just like the other ones.
+ All the operators work on local or global variables.[br]
+ The generic operator syntax is:[br]
+ [br]
+ &nbsp; &nbsp; &nbsp; &nbsp; [b]<left_operand> <operator> [right_operand][/b][br]
+ [br]
+ where <left_operand> is a variable and [right_operand] is a variable , a constant or a complex expression.[br]
+ Some operators do not use [right_operand] and do their job directly on <left_operand>[br]
+ [/p]
+
+ [table]
+ [tr][td]Operator[/td][td]document[/td][/td]
+ [tr][td]=[/td][td][doc:assignment]assignment operator[/doc][/td][/tr]
+ [tr][td]++[/td][td][doc:incrementdecrement]Increment and decrement operators[/doc][/td][/tr]
+ [tr][td]--[/td][td][doc:incrementdecrement]Increment and decrement operators[/doc][/td][/tr]
+ [tr][td]+=[/td][td][doc:selfarithmetic]Arithmetic self-operators[/doc][/td][/tr]
+ [tr][td]-=[/td][td][doc:selfarithmetic]Arithmetic self-operators[/doc][/td][/tr]
+ [tr][td]*=[/td][td][doc:selfarithmetic]Arithmetic self-operators[/doc][/td][/tr]
+ [tr][td]/=[/td][td][doc:selfarithmetic]Arithmetic self-operators[/doc][/td][/tr]
+ [tr][td]%=[/td][td][doc:selfarithmetic]Arithmetic self-operators[/doc][/td][/tr]
+ [tr][td]|=[/td][td][doc:selfbitwise]Bitwise self-operators[/doc][/td][/tr]
+ [tr][td]&=[/td][td][doc:selfbitwise]Bitwise self-operators[/doc][/td][/tr]
+ [tr][td]^=[/td][td][doc:selfbitwise]Bitwise self-operators[/doc][/td][/tr]
+ [tr][td]<<=[/td][td][doc:selfbitwise]Bitwise self-operators[/doc][/td][/tr]
+ [tr][td]>>=[/td][td][doc:selfbitwise]Bitwise self-operators[/doc][/td][/tr]
+ [tr][td].=[/td][td][doc:stringconcatenation]String concatenation operators[/doc][/td][/tr]
+ [tr][td]<<[/td][td][doc:stringconcatenation]String concatenation operators[/doc][/td][/tr]
+ [tr][td]<,[/td][td][doc:stringconcatenation]String concatenation operators[/doc][/td][/tr]
+ [tr][td]<+[/td][td][doc:arrayconcatenation]Array concatenation[/doc][/td][/tr]
+ [tr][td]=~[/td][td][doc:binding]Binding operator[/doc][/td][/tr]
+ [/table]
+ */
+
+KviKvsTreeNodeData * KviKvsParser::parseBindingOperationParameter()
+{
+ KviPointerList<KviKvsTreeNodeData> * l = new KviPointerList<KviKvsTreeNodeData>;
+ l->setAutoDelete(true);
+
+ const QChar * pBegin = KVSP_curCharPointer;
+
+ for(;;)
+ {
+ switch(KVSP_curCharUnicode)
+ {
+ case 0:
+ case '/':
+ case '\n':
+ case '\r':
+ // not a part of a parameter
+ goto end_of_function_parameter;
+ break;
+ case '$':
+ case '%':
+ {
+ // this may be a data reference
+ KviKvsTreeNodeData * p = parseParameterPercentOrDollar();
+ if(!p)
+ {
+ // this is an error
+ delete l;
+ return 0;
+ }
+ l->append(p);
+ }
+ break;
+ case '"':
+ {
+ // this is a string
+ KviKvsTreeNodeData * p = parseStringParameter();
+ if(!p)
+ {
+ // this is an error
+ delete l;
+ return 0;
+ }
+ l->append(p);
+ }
+ break;
+ default:
+ {
+ // anything else is a literal
+ l->append(parseBindingOperationLiteralParameter());
+ }
+ break;
+ }
+ }
+end_of_function_parameter:
+ if(l->count() > 1)
+ {
+ // complex parameter needed
+ return new KviKvsTreeNodeCompositeData(pBegin,l);
+ } else {
+ // a single parameter in the list or empty list at all
+ l->setAutoDelete(false);
+ KviKvsTreeNodeData * p = l->first();
+ delete l;
+ if(!p)p = new KviKvsTreeNodeConstantData(KVSP_curCharPointer,new KviKvsVariant(QString("")));
+ return p;
+ }
+ // never reached
+ return 0;
+}
+
+
+
+KviKvsTreeNodeOperation * KviKvsParser::parseBindingOperation()
+{
+ // t or tr or y
+ // s
+ const QChar * pBegin = KVSP_curCharPointer;
+
+ while(KVSP_curCharIsLetter)KVSP_skipChar;
+
+ QString szOp = QString(pBegin,KVSP_curCharPointer - pBegin).lower();
+
+ skipSpaces();
+
+ if(KVSP_curCharUnicode != '/')
+ {
+ error(KVSP_curCharPointer,__tr2qs("Found character '%q' (unicode %x) where a slash '/' was expected"),KVSP_curCharPointer,KVSP_curCharUnicode);
+ return 0;
+ }
+
+ KVSP_skipChar;
+
+ KviKvsTreeNodeData * pFirst = parseBindingOperationParameter();
+ if(!pFirst)return 0;
+
+ if(KVSP_curCharIsEndOfCommand)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of command in binding operation, at least two slashes are missing"));
+ delete pFirst;
+ return 0;
+ }
+
+ if(KVSP_curCharUnicode != '/')
+ {
+ error(KVSP_curCharPointer,__tr2qs("Found character '%q' (unicode %x) where a slash '/' was expected"),KVSP_curCharPointer,KVSP_curCharUnicode);
+ delete pFirst;
+ return 0;
+ }
+
+ KVSP_skipChar;
+
+ KviKvsTreeNodeData * pSecond = parseBindingOperationParameter();
+ if(!pSecond)
+ {
+ delete pFirst;
+ return 0;
+ }
+
+ if(KVSP_curCharIsEndOfCommand)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of command in binding operation, at least one slash is missing"));
+ delete pFirst;
+ return 0;
+ }
+
+ if(KVSP_curCharUnicode != '/')
+ {
+ error(KVSP_curCharPointer,__tr2qs("Found character '%q' (unicode %x) where a slash '/' was expected"),KVSP_curCharPointer,KVSP_curCharUnicode);
+ delete pFirst;
+ return 0;
+ }
+
+ KVSP_skipChar;
+
+ KviKvsTreeNodeData * pThird = parseCommandParameter();
+ if(!pThird)
+ {
+ if(error())
+ {
+ delete pFirst;
+ delete pSecond;
+ return 0;
+ }
+
+ pThird = new KviKvsTreeNodeConstantData(KVSP_curCharPointer,new KviKvsVariant(QString("")));
+ }
+
+ while(!KVSP_curCharIsEndOfCommand)KVSP_skipChar;
+ if(!KVSP_curCharIsEndOfBuffer)KVSP_skipChar;
+
+ if((szOp == "t") || (szOp == "tr") || (szOp == "y"))
+ {
+ // transliteration tr/szFirst/szSecond/szFlags
+ return new KviKvsTreeNodeOperationStringTransliteration(pBegin,pFirst,pSecond,pThird);
+ } else if(szOp == "s")
+ {
+ // regexp substitution s/szFirst/szSecond/szFlags
+ return new KviKvsTreeNodeOperationStringSubstitution(pBegin,pFirst,pSecond,pThird);
+ }
+
+ error(KVSP_curCharPointer,__tr2qs("Unknown binding operation '%Q'"),&szOp);
+ return 0;
+}
+
+
+KviKvsTreeNodeOperation * KviKvsParser::parseOperation()
+{
+ // find the operator
+ const QChar * pBegin = KVSP_curCharPointer;
+
+ switch(KVSP_curCharUnicode)
+ {
+ case '=':
+ {
+ KVSP_skipChar;
+ if(KVSP_curCharUnicode == '~')
+ {
+ KVSP_skipChar;
+ skipSpaces();
+ if(KVSP_curCharIsEndOfCommand)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Missing right side operand for the binding operator '=~'"));
+ return 0;
+ }
+ return parseBindingOperation();
+ } else {
+ skipSpaces();
+ KviKvsTreeNodeData * d = parseOperationRightSide(true);
+ if(!d)return 0; // error
+ return new KviKvsTreeNodeOperationAssignment(pBegin,d);
+ }
+ }
+ break;
+ case '+':
+ KVSP_skipChar;
+ switch(KVSP_curCharUnicode)
+ {
+ case '+':
+ // operator ++
+ KVSP_skipChar;
+ skipSpaces();
+ if(!KVSP_curCharIsEndOfCommand)
+ {
+ warning(KVSP_curCharPointer,__tr2qs("Trailing garbage ignored after operator '++'"));
+ }
+ while(!KVSP_curCharIsEndOfCommand)KVSP_skipChar;
+ if(!KVSP_curCharIsEndOfBuffer)KVSP_skipChar;
+ return new KviKvsTreeNodeOperationIncrement(pBegin);
+ break;
+ case '=':
+ // operator +=
+ KVSP_skipChar;
+ skipSpaces();
+ if(KVSP_curCharIsEndOfCommand)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Missing right operand for operator '+='"));
+ return 0;
+ }
+ KviKvsTreeNodeData * d = parseOperationRightSide(true);
+ if(!d)return 0; // error
+ return new KviKvsTreeNodeOperationSelfSum(pBegin,d);
+ break;
+ }
+ break;
+ case '-':
+ KVSP_skipChar;
+ switch(KVSP_curCharUnicode)
+ {
+ case '-':
+ KVSP_skipChar;
+ // operator --
+ skipSpaces();
+ if(!KVSP_curCharIsEndOfCommand)
+ {
+ warning(KVSP_curCharPointer,__tr2qs("Trailing garbage ignored after operator '--'"));
+ }
+ while(!KVSP_curCharIsEndOfCommand)KVSP_skipChar;
+ if(!KVSP_curCharIsEndOfBuffer)KVSP_skipChar;
+ return new KviKvsTreeNodeOperationDecrement(pBegin);
+ break;
+ case '>':
+ warning(KVSP_curCharPointer,__tr2qs("This looks a lot like an object handle dereferencing operator '->' but in fact it isn't. Maybe you forgot a '$' just after ?"));
+ break;
+ case '=':
+ // operator -=
+ KVSP_skipChar;
+ skipSpaces();
+ if(KVSP_curCharIsEndOfCommand)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Missing right operand for operator '-='"));
+ return 0;
+ }
+ KviKvsTreeNodeData * d = parseOperationRightSide(true);
+ if(!d)return 0; // error
+ return new KviKvsTreeNodeOperationSelfSubtraction(pBegin,d);
+ break;
+ }
+ break;
+ case '<':
+ KVSP_skipChar;
+ switch(KVSP_curCharUnicode)
+ {
+ case '<':
+ KVSP_skipChar;
+ if(KVSP_curCharUnicode == '=')
+ {
+ KVSP_skipChar;
+ skipSpaces();
+ if(KVSP_curCharIsEndOfCommand)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Missing right operand for operator '<<='"));
+ return 0;
+ }
+ KviKvsTreeNodeData * d = parseOperationRightSide(true);
+ if(!d)return 0; // error
+ return new KviKvsTreeNodeOperationSelfShl(pBegin,d);
+ } else {
+ skipSpaces();
+ if(KVSP_curCharIsEndOfCommand)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Missing right operand for operator '<<'"));
+ return 0;
+ }
+ KviKvsTreeNodeData * d = parseOperationRightSide();
+ if(!d)return 0; // error
+ return new KviKvsTreeNodeOperationStringAppendWithSpace(pBegin,d);
+ }
+ break;
+ case ',':
+ {
+ KVSP_skipChar;
+ skipSpaces();
+ if(KVSP_curCharIsEndOfCommand)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Missing right operand for operator '<,'"));
+ return 0;
+ }
+ KviKvsTreeNodeData * d = parseOperationRightSide();
+ if(!d)return 0; // error
+ return new KviKvsTreeNodeOperationStringAppendWithComma(pBegin,d);
+ }
+ break;
+ case '+':
+ {
+ KVSP_skipChar;
+ skipSpaces();
+ if(KVSP_curCharIsEndOfCommand)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Missing right operand for operator '<+'"));
+ return 0;
+ }
+ KviKvsTreeNodeData * d = parseOperationRightSide();
+ if(!d)return 0; // error
+ return new KviKvsTreeNodeOperationArrayAppend(pBegin,d);
+ }
+ break;
+ }
+ break;
+ case '>':
+ KVSP_skipChar;
+ switch(KVSP_curCharUnicode)
+ {
+ case '>':
+ KVSP_skipChar;
+ if(KVSP_curCharUnicode == '=')
+ {
+ KVSP_skipChar;
+ skipSpaces();
+ if(KVSP_curCharIsEndOfCommand)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Missing right operand for operator '>>='"));
+ return 0;
+ }
+ KviKvsTreeNodeData * d = parseOperationRightSide(true);
+ if(!d)return 0; // error
+ return new KviKvsTreeNodeOperationSelfShr(pBegin,d);
+ }
+ break;
+ }
+ break;
+ case '.':
+ KVSP_skipChar;
+ switch(KVSP_curCharUnicode)
+ {
+ case '=':
+ KVSP_skipChar;
+ skipSpaces();
+ if(KVSP_curCharIsEndOfCommand)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Missing right operand for operator '.='"));
+ return 0;
+ }
+ KviKvsTreeNodeData * d = parseOperationRightSide();
+ if(!d)return 0; // error
+ return new KviKvsTreeNodeOperationStringAppend(pBegin,d);
+ break;
+ }
+ break;
+#define SELF_OPERATOR(__opchar,__opstr,__class) \
+ case __opchar: \
+ KVSP_skipChar; \
+ switch(KVSP_curCharUnicode) \
+ { \
+ case '=': \
+ KVSP_skipChar; \
+ skipSpaces(); \
+ if(KVSP_curCharIsEndOfCommand) \
+ { \
+ error(KVSP_curCharPointer,__tr2qs("Missing right operand for operator '" __opstr "='")); \
+ return 0; \
+ } \
+ KviKvsTreeNodeData * d = parseOperationRightSide(true); \
+ if(!d)return 0; \
+ return new __class(pBegin,d); \
+ break; \
+ } \
+ break;
+ SELF_OPERATOR('*',"*",KviKvsTreeNodeOperationSelfMultiplication)
+ SELF_OPERATOR('/',"/",KviKvsTreeNodeOperationSelfDivision)
+ SELF_OPERATOR('%',"%",KviKvsTreeNodeOperationSelfModulus)
+ SELF_OPERATOR('|',"|",KviKvsTreeNodeOperationSelfOr)
+ SELF_OPERATOR('&',"&",KviKvsTreeNodeOperationSelfAnd)
+ SELF_OPERATOR('^',"^",KviKvsTreeNodeOperationSelfXor)
+ }
+
+ error(pBegin,__tr2qs("Unknown operator"));
+ return 0;
+}
+
+KviKvsTreeNodeInstruction * KviKvsParser::parseVoidFunctionCallOrOperation()
+{
+ KVSP_ASSERT((KVSP_curCharUnicode == '$') || (KVSP_curCharUnicode == '%') || (KVSP_curCharUnicode == '@'));
+
+ const QChar * pBegin = KVSP_curCharPointer;
+
+ KviKvsTreeNodeData * r = parsePercentOrDollar();
+
+ if(!r)
+ {
+ // must be an error
+ return 0;
+ }
+
+ skipSpaces();
+
+ if(KVSP_curCharIsEndOfCommand)
+ {
+ // the end of the command
+ if(!r->isFunctionCall())
+ {
+ if(r->isReadOnly())
+ {
+ warning(pBegin,__tr2qs("Unexpected (and senseless) read-only data evaluation"));
+ error(KVSP_curCharPointer,__tr2qs("Syntax error: confused by earlier errors: bailing out"));
+ } else {
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of script after a variable reference: expected operator"));
+ }
+ delete r;
+ return 0;
+ } else {
+ if(!KVSP_curCharIsEndOfBuffer)KVSP_skipChar;
+ return new KviKvsTreeNodeVoidFunctionCall(r->location(),(KviKvsTreeNodeFunctionCall *)r);
+ }
+ }
+
+ // not the end of a command : an operation
+ if(r->isReadOnly())
+ {
+ // must be followed by the end of a command
+ if(r->isFunctionCall())
+ {
+ error(KVSP_curCharPointer,__tr2qs("Unexpected character '%q' (unicode %x) after a void function call: end of instruction expected"),KVSP_curCharPointer,KVSP_curCharUnicode);
+ } else {
+ warning(pBegin,__tr2qs("Unexpected (and senseless) read-only data evaluation"));
+ warning(pBegin,__tr2qs("Unexpected character '%q' (unicode %x)"),KVSP_curCharPointer,KVSP_curCharUnicode);
+ error(KVSP_curCharPointer,__tr2qs("Syntax error: confused by earlier errors: bailing out"));
+ }
+ delete r;
+ return 0;
+ }
+
+ // ok.. parse the operation
+ KviKvsTreeNodeOperation * op = parseOperation();
+ if(!op)
+ {
+ delete r;
+ return 0;
+ }
+
+ op->setTargetVariableReference(r);
+ return op;
+}
diff --git a/src/kvirc/kvs/kvi_kvs_parser_macros.h b/src/kvirc/kvs/kvi_kvs_parser_macros.h
new file mode 100644
index 00000000..8de1f479
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_parser_macros.h
@@ -0,0 +1,47 @@
+#ifndef _KVI_KVS_PARSER_MACROS_H_
+#define _KVI_KVS_PARSER_MACROS_H_
+//=============================================================================
+//
+// File : kvi_kvs_parser_macros.h
+// Creation date : Sun 5 Ocr 2003 20.25 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define KVSP_skipChar m_ptr++
+#define KVSP_skipNChars(n) m_ptr += n
+#define KVSP_backChar m_ptr--
+#define KVSP_backNChars(n) m_ptr -= n
+
+#define KVSP_curCharUnicode (m_ptr->unicode())
+#define KVSP_curCharPointer m_ptr
+
+#define KVSP_curCharIsLetter (m_ptr->isLetter())
+#define KVSP_curCharIsNumber (m_ptr->isNumber())
+#define KVSP_curCharIsLetterOrNumber (m_ptr->isLetterOrNumber())
+#define KVSP_curCharIsFunctionStart (m_ptr->isLetterOrNumber() || (m_ptr->unicode() == '(') || (m_ptr->unicode() == '{') || (m_ptr->unicode() == '$'))
+#define KVSP_curCharIsEndOfCommand ((m_ptr->unicode() == ';') || (m_ptr->unicode() == 0) || (m_ptr->unicode() == '\n') || (m_ptr->unicode() == '\r'))
+#define KVSP_curCharIsEndOfBuffer (m_ptr->unicode() == 0)
+
+#define KVSP_setCurCharPointer(_ptr) m_ptr = _ptr
+
+#define KVSP_ASSERT(_x) if(!(_x))debug("WARNING : ASSERT FAILED: (%s) IS FALSE AT %s:%d",#_x,__FILE__,__LINE__);
+
+
+#endif //!_KVI_KVS_PARSER_MACROS_H_
diff --git a/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp b/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp
new file mode 100644
index 00000000..0dbc7816
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp
@@ -0,0 +1,1988 @@
+//=============================================================================
+//
+// File : kvi_kvs_parser_specialcommands.cpp
+// Creation date : Thu 06 Now 2003 14.14 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+
+#include "kvi_kvs_parser.h"
+
+#include "kvi_kvs_treenode.h"
+
+#include "kvi_kvs_report.h"
+#include "kvi_kvs_kernel.h"
+
+#include "kvi_kvs_parser_macros.h"
+#include "kvi_kvs_object_functionhandler.h"
+
+#include "kvi_locale.h"
+
+#include "kvi_cmdformatter.h"
+
+
+KviKvsTreeNodeCommand * KviKvsParser::parseSpecialCommandPerlBegin()
+{
+ // in fact this is not a fully special command
+ // it is special only in the sense of parsing.
+ // Once parsed, the command is routed to the perl module
+ // with the perl code as FIRST parameter and the other parameters
+ // of the command following.
+ // the help page for perl.begin is in the perl module
+
+ // perl.begin(context) <perl code> perl.end
+ //
+
+ const QChar * pBegin = KVSP_curCharPointer;
+
+ skipSpaces();
+ KviKvsTreeNodeDataList * dl;
+ if(KVSP_curCharUnicode == '(')
+ {
+ dl = parseCommaSeparatedParameterList();
+ if(!dl)return 0;
+ } else {
+ dl = new KviKvsTreeNodeDataList(pBegin);
+ }
+
+ //while(!KVSP_curCharIsEndOfCommand)KVSP_skipChar;
+ if(!KVSP_curCharIsEndOfBuffer)KVSP_skipChar;
+
+ if(!skipSpacesAndNewlines())
+ {
+ delete dl;
+ return 0;
+ }
+
+ // allow a ';' after perl.begin
+ if(KVSP_curCharIsEndOfCommand && !KVSP_curCharIsEndOfBuffer)
+ {
+ KVSP_skipChar;
+ if(!skipSpacesAndNewlines())
+ {
+ delete dl;
+ return 0;
+ }
+ }
+
+ const QChar * pPerlBegin = KVSP_curCharPointer;
+
+ // now look for perl.end[terminator]
+ static QString szPerlEnd("perl.end");
+ const QChar * pPerlEnd;
+ for(;;)
+ {
+ while(KVSP_curCharUnicode && (KVSP_curCharUnicode != 'p') && (KVSP_curCharUnicode != 'P'))
+ KVSP_skipChar;
+ if(KVSP_curCharIsEndOfBuffer)
+ {
+ delete dl;
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of command buffer while looking for the \"perl.end\" statement"));
+ return 0;
+ }
+ pPerlEnd = KVSP_curCharPointer;
+ if(KviQString::equalCIN(szPerlEnd,KVSP_curCharPointer,8))
+ {
+ KVSP_skipNChars(8);
+ if(KVSP_curCharIsEndOfCommand || (KVSP_curCharUnicode == ' ') || (KVSP_curCharUnicode == '\t'))
+ {
+ // yeah!
+ QString szPerl(pPerlBegin,pPerlEnd - pPerlBegin);
+ dl->prependItem(new KviKvsTreeNodeConstantData(pPerlBegin,new KviKvsVariant(szPerl)));
+ while(!KVSP_curCharIsEndOfCommand)KVSP_skipChar;
+ if(!KVSP_curCharIsEndOfBuffer)KVSP_skipChar;
+ break;
+ } else {
+ KVSP_backNChars(7);
+ }
+ } else {
+ KVSP_skipChar;
+ }
+ }
+
+ return new KviKvsTreeNodeModuleSimpleCommand(pBegin,"perl","begin",dl);
+}
+
+KviKvsTreeNodeCommand * KviKvsParser::parseSpecialCommandBreak()
+{
+ /*
+ @doc: break
+ @type:
+ command
+ @title:
+ break
+ @syntax:
+ break
+ @short:
+ Interrupts an iteration loop
+ @description:
+ Interrupts an iteration loop like [cmd]while[/cmd].[br]
+ This command always jumps out of a single code block.[br]
+ If called outside an iteration loop , will act just like [cmd]halt[/cmd]
+ has been called but has no additional semantics for events.[br]
+ */
+ const QChar * pBegin = KVSP_curCharPointer; // FIXME: this is not accurate at all : it may be even the end of the cmd
+ skipSpaces();
+ if(!KVSP_curCharIsEndOfCommand)
+ {
+ warning(KVSP_curCharPointer,__tr2qs("Trailing garbage at the end of the break command: ignored"));
+ }
+
+ while(!KVSP_curCharIsEndOfCommand)KVSP_skipChar;
+ if(!KVSP_curCharIsEndOfBuffer)KVSP_skipChar;
+ return new KviKvsTreeNodeSpecialCommandBreak(pBegin);
+}
+
+KviKvsTreeNodeCommand * KviKvsParser::parseSpecialCommandUnset()
+{
+ /*
+ @doc: unset
+ @type:
+ command
+ @title:
+ unset
+ @syntax:
+ unset <variable_list>
+ @keyterms:
+ unsetting variables
+ @short:
+ Unsets a set of variables
+ @description:
+ Unsets the specified list of comma separated variables.
+ It is equivalent to assigning the default empty value
+ to each variable on its own: just does it all at aonce.
+ Note that KVIrc automatically frees the local variable memory
+ when they go out of scope and the global variable memory
+ when KVIrc terminates.
+ @examples:
+ [example]
+ %a = pippo
+ %b = 1
+ [cmd]echo[/cmd] %a %b
+ unset %a %b
+ [cmd]echo[/cmd] %a %b
+ [/example]
+ */
+
+ const QChar * pCmdBegin = KVSP_curCharPointer;
+
+ KviPointerList<KviKvsTreeNodeVariable> * pVarList = new KviPointerList<KviKvsTreeNodeVariable>;
+ pVarList->setAutoDelete(true);
+
+ while(KVSP_curCharUnicode == '%')
+ {
+ KviKvsTreeNodeVariable * d = parsePercent();
+ if(!d)return 0;
+
+ pVarList->append(d);
+
+ skipSpaces();
+
+ if(KVSP_curCharUnicode == ',')
+ {
+ KVSP_skipChar;
+ skipSpaces();
+ }
+ }
+
+ if(!KVSP_curCharIsEndOfCommand)
+ {
+ warning(KVSP_curCharPointer,__tr2qs("The 'unset' command needs a variable list"));
+ error(KVSP_curCharPointer,__tr2qs("Found character %q (unicode %x) where a variable was expected"),KVSP_curCharPointer,KVSP_curCharUnicode);
+ return 0;
+ }
+
+ if(!KVSP_curCharIsEndOfBuffer)KVSP_skipChar;
+
+ if(pVarList->count() < 1)
+ {
+ delete pVarList;
+ warning(KVSP_curCharPointer,__tr2qs("'unset' command used without a variable list"));
+ return 0; // null unset ?
+ }
+ return new KviKvsTreeNodeSpecialCommandUnset(pCmdBegin,pVarList);
+}
+
+KviKvsTreeNodeCommand * KviKvsParser::parseSpecialCommandGlobal()
+{
+ /*
+ @doc: global
+ @type:
+ command
+ @title:
+ global
+ @syntax:
+ global <variable_list>
+ @keyterms:
+ explicitly declaring global variables
+ @short:
+ Explicitly declares global variables
+ @description:
+ Declares a list of global variables.
+ Once a variable has been declared as global
+ it refers to the global kvirc instance for the scope of the script.
+ Global variables are shared between scripts and keep their
+ value until they are explicitly unset or kvirc quits.
+ This command can be used to override the default behaviour of
+ declaring global variables by starting them with an uppercase letter
+ and declaring local variables by starting them with a lowercase one.
+ @examples:
+ global %a,%b,%c;
+ */
+ while(KVSP_curCharUnicode == '%')
+ {
+ KVSP_skipChar;
+ const QChar * pBegin = KVSP_curCharPointer;
+
+
+ while((KVSP_curCharIsLetterOrNumber) || (KVSP_curCharUnicode == '_'))KVSP_skipChar;
+
+ QString szIdentifier(pBegin,KVSP_curCharPointer - pBegin);
+
+ if(!m_pGlobals)
+ {
+ m_pGlobals = new KviPointerHashTable<QString,QString>(17,false);
+ m_pGlobals->setAutoDelete(true);
+ }
+ m_pGlobals->replace(szIdentifier,new QString());
+
+ skipSpaces();
+
+ if(KVSP_curCharUnicode == ',')
+ {
+ KVSP_skipChar;
+ skipSpaces();
+ }
+ }
+
+ if(!KVSP_curCharIsEndOfCommand)
+ {
+ warning(KVSP_curCharPointer,__tr2qs("The 'global' command needs a variable list"));
+ error(KVSP_curCharPointer,__tr2qs("Found character %q (unicode %x) where a variable was expected"),KVSP_curCharPointer,KVSP_curCharUnicode);
+ return 0;
+ }
+
+ if(!KVSP_curCharIsEndOfBuffer)KVSP_skipChar;
+ return 0;
+}
+
+KviKvsTreeNodeCommand * KviKvsParser::parseSpecialCommandClass()
+{
+ /*
+ @doc: class
+ @title:
+ class
+ @short:
+ Defines a new object class
+ @keyterms:
+ defining an object class
+ @type:
+ command
+ @syntax:
+ class(<classname:string>[,<base_class_name:string>])
+ {
+ [internal] [function] <function_name>[([<parameter reminder>])]
+ {
+ <function body>
+ }
+
+ ...
+ }
+ @description:
+ Defines a new implementation of the class <classname>.
+ If an implementation of that class was already existing
+ it is removed with all the derived classes (and all the instances of this class
+ and the derived ones are destroyed).
+ <base_class_name> is the name of the class that the
+ new class has to inherit from.[br]
+ If <base_class_name> is omitted, the new class inherits automatically
+ from [class:object]object[/class].[br]
+ Note:[br]
+ The keywords "function" and "event" that were used in KVIrc versions
+ previous to 3.0.0 have been removed since "useless".[br]
+ The function keyword, however, is still permitted.
+ The keyword "internal" is useful when you want to hide
+ certain function from the outside world. An internal function
+ cannot be called by anyone else but the object instance itself. Note that
+ this is different from the C++ "protected" or "private" keywords
+ that refer to the object's class instead of the object instance.
+ The <parameter reminder> part is an optional string
+ that can be used to sign the parameters that the function expects;
+ it acts as a programmer reminder or comment and it has no other
+ meaning in KVIrc scripting. The <parameter reminder> respects the syntax
+ of an expression, so it is terminated by a closed parenthesis.
+ It's rather dangerous to use this command inside an object
+ function handler: if the class definition <class> was already
+ existing and it is a parent of the object's class, you might
+ end up executing "inexisting" code.[br]
+ As a thumb rule, use this command only outside object function handlers.[br]
+ [br][br]
+ Only for the curious: implementing protected and private access
+ list on members would have a considerable runtime overhead because
+ of the strange nature of the KVS language. Object member calls
+ are resolved completly at runtime (and that permits a lot of funny tricks
+ like [cmd]privateimpl[/cmd]) but unfortunately this also forces us
+ to check access lists at runtime. Ok, this would be a relatively small footprint for the "private"
+ keyword where we need to run UP the called object inheritance hierarchy
+ but would have a significant performance footprint for the "protected"
+ keyword where we would need to traverse the WHOLE inheritance tree of the called and calling
+ objects... "internal" still allows hiding members in a lot of situations
+ and is really fast to verify at runtime: no inheritance tree traversal
+ is needed and only object pointers are compared.
+ @examples:
+ [example]
+ class(myclass,[class]object[/class])
+ {
+ constructor
+ {
+ [cmd]echo[/cmd] Hey this is my constructor
+ [cmd]echo[/cmd] I have been just created
+ }
+
+ destructor
+ {
+ [cmd]echo[/cmd] Ops...being destroyed
+ }
+
+ sayHello(this function expects no parameters)
+ {
+ [cmd]echo[/cmd] Hello world!
+ }
+ }
+ [/example]
+ @seealso:
+ [cmd]privateimpl[/cmd], [cmd]killclass[/cmd], [cmd]clearobjects[/cmd], [fnc]$classDefined[/fnc](),
+ [doc:objects]Objects documentation[/doc]
+ */
+
+ if(KVSP_curCharUnicode != '(')
+ {
+ error(KVSP_curCharPointer,__tr2qs("Found character %q (unicode %x) where an open parenthesis was expected"),KVSP_curCharPointer,KVSP_curCharUnicode);
+ return 0;
+ }
+
+ const QChar * pBegin = KVSP_curCharPointer;
+
+ KviKvsTreeNodeDataList * l = parseCommaSeparatedParameterList();
+ if(!l)return 0;
+
+ KviKvsTreeNodeSpecialCommandClass * pClass = new KviKvsTreeNodeSpecialCommandClass(pBegin,l);
+
+ if(!skipSpacesAndNewlines())
+ {
+ delete pClass;
+ return 0;
+ }
+
+ if(KVSP_curCharUnicode != '{')
+ {
+ errorBadChar(KVSP_curCharPointer,'{',"class");
+ delete pClass;
+ return 0;
+ }
+
+ KVSP_skipChar;
+
+ if(!skipSpacesAndNewlines())
+ {
+ delete pClass;
+ return 0;
+ }
+
+ while(KVSP_curCharUnicode != '}')
+ {
+ if((KVSP_curCharUnicode == '#') || (KVSP_curCharUnicode == '/'))
+ {
+ parseComment();
+ if(error())
+ {
+ delete pClass;
+ return 0;
+ }
+ if(!skipSpacesAndNewlines())
+ {
+ delete pClass;
+ return 0;
+ }
+ continue;
+ }
+
+ const QChar * pLabelBegin = KVSP_curCharPointer;
+
+ if(KVSP_curCharIsLetter)
+ {
+ KVSP_skipChar;
+ while(KVSP_curCharIsLetterOrNumber)KVSP_skipChar;
+ }
+
+ if(KVSP_curCharIsEndOfBuffer)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of buffer in class definition"));
+ delete pClass;
+ return 0;
+ }
+
+ if(KVSP_curCharPointer == pLabelBegin)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Found character %q (unicode %x) where a function name was expected"),KVSP_curCharPointer,KVSP_curCharUnicode);
+ delete pClass;
+ return 0;
+ }
+
+ QString szLabel(pLabelBegin,KVSP_curCharPointer - pLabelBegin);
+
+ unsigned int uHandlerFlags = 0;
+
+ if(szLabel.lower() == "internal")
+ {
+ uHandlerFlags |= KviKvsObjectFunctionHandler::Internal;
+ skipSpaces();
+ if(KVSP_curCharUnicode != '(')
+ {
+ pLabelBegin = KVSP_curCharPointer;
+
+ while(KVSP_curCharIsLetterOrNumber)KVSP_skipChar;
+
+ if(KVSP_curCharIsEndOfBuffer)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of buffer in class definition"));
+ delete pClass;
+ return 0;
+ }
+
+ if(KVSP_curCharPointer == pLabelBegin)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Found character %q (unicode %x) where a function name was expected"),KVSP_curCharPointer,KVSP_curCharUnicode);
+ delete pClass;
+ return 0;
+ }
+ szLabel = QString(pLabelBegin,KVSP_curCharPointer - pLabelBegin);
+ }
+ }
+
+
+ if(szLabel.lower() == "function")
+ {
+ skipSpaces();
+ if(KVSP_curCharUnicode != '(')
+ {
+ pLabelBegin = KVSP_curCharPointer;
+
+ while(KVSP_curCharIsLetterOrNumber)KVSP_skipChar;
+
+ if(KVSP_curCharIsEndOfBuffer)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of buffer in class definition"));
+ delete pClass;
+ return 0;
+ }
+
+ if(KVSP_curCharPointer == pLabelBegin)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Found character %q (unicode %x) where a function name was expected"),KVSP_curCharPointer,KVSP_curCharUnicode);
+ delete pClass;
+ return 0;
+ }
+ szLabel = QString(pLabelBegin,KVSP_curCharPointer - pLabelBegin);
+ }
+ }
+
+ if(!skipSpacesAndNewlines())
+ {
+ delete pClass;
+ return 0;
+ }
+
+ if(KVSP_curCharUnicode == '(')
+ {
+ while((!(KVSP_curCharIsEndOfBuffer)) && (KVSP_curCharUnicode != ')'))
+ KVSP_skipChar;
+
+ if(KVSP_curCharIsEndOfBuffer)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of buffer in function parameter list reminder"));
+ delete pClass;
+ return 0;
+ }
+
+ KVSP_skipChar;
+
+ if(!skipSpacesAndNewlines())
+ {
+ delete pClass;
+ return 0;
+ }
+ }
+
+ if(KVSP_curCharIsEndOfBuffer)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of buffer in class definition"));
+ delete pClass;
+ return 0;
+ }
+
+ if(KVSP_curCharUnicode != '{')
+ {
+ errorBadChar(KVSP_curCharPointer,'{',"class");
+ delete pClass;
+ return 0;
+ }
+
+ pBegin = KVSP_curCharPointer;
+ KviKvsTreeNodeInstruction * pInstruction = parseInstruction();
+ if(!pInstruction)
+ {
+ // may be an empty instruction
+ if(error())
+ {
+ delete pClass;
+ return 0;
+ }
+ }
+ delete pInstruction;
+ int iLen = KVSP_curCharPointer - pBegin;
+ QString szInstruction;
+ if(iLen > 0)
+ {
+ szInstruction = QString(pBegin,KVSP_curCharPointer - pBegin);
+ KviCommandFormatter::bufferFromBlock(szInstruction);
+ }
+
+ pClass->addFunctionDefinition(new KviKvsTreeNodeSpecialCommandClassFunctionDefinition(pLabelBegin,szLabel,szInstruction,uHandlerFlags));
+
+ if(!skipSpacesAndNewlines())
+ {
+ delete pClass;
+ return 0;
+ }
+ }
+
+ KVSP_skipChar;
+
+ return pClass;
+}
+
+
+KviKvsTreeNodeCommand * KviKvsParser::parseSpecialCommandWhile()
+{
+ /*
+ @doc: while
+ @type:
+ command
+ @title:
+ while
+ @syntax:
+ while (<condition>) <command>
+ @keyterms:
+ iteration commands, flow control commands
+ @short:
+ Iteration command
+ @description:
+ Executes <command> while the <condition> evaluates
+ to true (non zero result).[br]
+ <command> may be either a single command or a block of commands.[br]
+ It can contain the [cmd]break[/cmd] command: in that case the
+ execution of the <command> will be immediately interrupted and the control
+ transferred to the command following this while block.[br]
+ It is valid for <command> to be an empty command terminated with a ';'.
+ <condition> is an expression as the ones evaluated by [doc:expressioneval]$(*)[/doc]
+ with the following extensions:[br]
+ If <condition> is a string, its length is evaluated: in this way a non-empty string
+ causes the <condition> to be true, an empty string causes it to be false.[br]
+ If <condition> is an array, its size is evaluated: in this way a non-empty array
+ causes the <condition> to be true, an empty array causes it to be false.[br]
+ If <condition> is a hash, the number of its entries is evaluated: in this way a non-empty hash
+ causes the <condition> to be true, an empty hash causes it to be false.[br]
+ @examples:
+ [example]
+ %i = 0;
+ while(%i < 100)%i++
+ while(%i > 0)
+ {
+ %i -= 10
+ if(%i < 20)break;
+ }
+ echo %i
+ [/example]
+ */
+
+ if(KVSP_curCharUnicode != '(')
+ {
+ warning(KVSP_curCharPointer,__tr2qs("The while command needs an expression enclosed in parenthesis"));
+ error(KVSP_curCharPointer,__tr2qs("Found character %q (unicode %x) where an open parenthesis was expected"),KVSP_curCharPointer,KVSP_curCharUnicode);
+ return 0;
+ }
+
+ const QChar * pBegin = KVSP_curCharPointer;
+
+ KVSP_skipChar;
+
+ KviKvsTreeNodeExpression * e = parseExpression(')');
+ if(!e)
+ {
+ // must be an error
+ return 0;
+ }
+
+ if(!skipSpacesAndNewlines())
+ {
+ delete e;
+ return 0;
+ }
+
+ if(KVSP_curCharUnicode == 0)
+ {
+ warning(pBegin,__tr2qs("The last while command in the buffer has no conditional instructions: it's senseless"));
+ warning(KVSP_curCharPointer,__tr2qs("Unexpected end of script while looking for the instruction block of the while command"));
+ }
+
+ KviKvsTreeNodeInstruction * i = parseInstruction();
+ if(!i)
+ {
+ if(error())
+ {
+ delete e;
+ return 0;
+ }
+ } // else , just an empty instruction
+
+ return new KviKvsTreeNodeSpecialCommandWhile(pBegin,e,i);
+}
+
+KviKvsTreeNodeCommand * KviKvsParser::parseSpecialCommandDo()
+{
+ /*
+ @doc: do
+ @type:
+ command
+ @title:
+ do
+ @syntax:
+ do <command> while (<condition>)
+ @keyterms:
+ iteration commands, flow control commands
+ @short:
+ Iteration command
+ @description:
+ Executes <command> once then evaluates the <condition>.
+ If <condition> evaluates to true (non zero result) then repeats the execution again.[br]
+ <command> may be either a single command or a block of commands.[br]
+ It can contain the [cmd]break[/cmd] command: in that case the
+ execution of the <command> will be immediately interrupted and the control
+ transferred to the command following this while block.[br]
+ It is valid for <command> to be an empty command terminated with a ';'.
+ <condition> is an expression as the ones evaluated by [doc:expressioneval]$(*)[/doc]
+ with the following extensions:[br]
+ If <condition> is a string, its length is evaluated: in this way a non-empty string
+ causes the <condition> to be true, an empty string causes it to be false.[br]
+ If <condition> is an array, its size is evaluated: in this way a non-empty array
+ causes the <condition> to be true, an empty array causes it to be false.[br]
+ If <condition> is a hash, the number of its entries is evaluated: in this way a non-empty hash
+ causes the <condition> to be true, an empty hash causes it to be false.[br]
+ @examples:
+ [example]
+ %i = 0;
+ do %i++; while(%i < 100);
+ echo "After first execution: %i";
+ %i = 10
+ do {
+ echo "Executed!";
+ %i++;
+ } while(%i < 1)
+ echo "After second execution: %i";
+ [/example]
+ @seealso:
+ [cmd]while[/cmd]
+ */
+
+ const QChar * pBegin = KVSP_curCharPointer;
+
+ KviKvsTreeNodeInstruction * i = parseInstruction();
+ if(!i)
+ {
+ if(error())return 0;
+ }
+
+ if(!skipSpacesAndNewlines())
+ {
+ if(i)delete i;
+ return 0;
+ }
+
+ static const unsigned short while_chars[10] = { 'W','w','H','h','I','i','L','l','E','e' };
+
+ for(int j=0;j<10;j++)
+ {
+ if(KVSP_curCharUnicode != while_chars[j])
+ {
+ j++;
+ if(KVSP_curCharUnicode != while_chars[j])
+ {
+ if(KVSP_curCharIsEndOfBuffer)
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of command after the 'do' command block: expected 'while' keyword"));
+ else
+ error(KVSP_curCharPointer,__tr2qs("Found character %q (unicode %x) where a 'while' keyword was expected"),KVSP_curCharPointer,KVSP_curCharUnicode);
+ if(i)delete i;
+ return 0;
+ }
+ } else j++;
+ KVSP_skipChar;
+ }
+
+ if(!skipSpacesAndNewlines())
+ {
+ if(i)delete i;
+ return 0;
+ }
+
+ if(KVSP_curCharUnicode != '(')
+ {
+ warning(KVSP_curCharPointer,__tr2qs("The 'while' block of the 'do' command needs an expression enclosed in parenthesis"));
+ errorBadChar(KVSP_curCharPointer,'(',"do");
+ if(i)delete i;
+ return 0;
+ }
+
+ KVSP_skipChar;
+
+ KviKvsTreeNodeExpression * e = parseExpression(')');
+ if(!e)
+ {
+ // must be an error
+ if(i)delete i;
+ return 0;
+ }
+
+ skipSpaces();
+
+ if(!KVSP_curCharIsEndOfCommand)
+ {
+ warning(KVSP_curCharPointer,__tr2qs("Garbage string after the expression in 'do' command: ignored"));
+ while(!KVSP_curCharIsEndOfCommand)KVSP_skipChar;
+ }
+
+ if(!KVSP_curCharIsEndOfBuffer)KVSP_skipChar;
+
+ return new KviKvsTreeNodeSpecialCommandDo(pBegin,e,i);
+}
+
+
+
+
+KviKvsTreeNodeCommand * KviKvsParser::parseSpecialCommandIf()
+{
+ /*
+ @doc: if
+ @type:
+ command
+ @title:
+ if
+ @syntax:
+ if (<condition>) <command1> [else <command2>]
+ @keyterms:
+ conditional commands, flow control commands
+ @short:
+ Flow control command
+ @description:
+ Executes <command1> if the <condition> evaluates
+ to true (non zero result).
+ If the "else part" is given <command2> is executed
+ if the <condition> evaluates to false (result == '0')
+ <condition> is an expression as the ones evaluated by [doc:expressioneval]$(*)[/doc]
+ with the following extensions:[br]
+ If <condition> is a string, its length is evaluated: in this way a non-empty string
+ causes the <condition> to be true, an empty string causes it to be false.[br]
+ If <condition> is an array, its size is evaluated: in this way a non-empty array
+ causes the <condition> to be true, an empty array causes it to be false.[br]
+ If <condition> is a hash, the number of its entries is evaluated: in this way a non-empty hash
+ causes the <condition> to be true, an empty hash causes it to be false.[br]
+ @examples:
+ if(%a != 10)[cmd]echo[/cmd] \%a was != 10
+ else [cmd]echo[/cmd] \%a was 10!
+ */
+
+ if(KVSP_curCharUnicode != '(')
+ {
+ warning(KVSP_curCharPointer,__tr2qs("The 'if' command needs an expression enclosed in parenthesis"));
+ errorBadChar(KVSP_curCharPointer,'(',"if");
+ return 0;
+ }
+
+ const QChar * pBegin = KVSP_curCharPointer;
+
+ KVSP_skipChar;
+
+
+ KviKvsTreeNodeExpression * e = parseExpression(')');
+ if(!e)
+ {
+ // must be an error
+ return 0;
+ }
+
+ if(!skipSpacesAndNewlines())
+ {
+ delete e;
+ return 0;
+ }
+
+ if(KVSP_curCharUnicode == 0)
+ {
+ warning(pBegin,__tr2qs("The last if command in the buffer has no conditional instructions: it's senseless"));
+ warning(KVSP_curCharPointer,__tr2qs("Unexpected end of script while looking for the instruction block of the if command"));
+ }
+
+ KviKvsTreeNodeInstruction * i = parseInstruction();
+ if(!i)
+ {
+ if(error())
+ {
+ delete e;
+ return 0;
+ }
+ } // else , just an empty instruction
+
+ if(!skipSpacesAndNewlines())
+ {
+ if(i)delete i;
+ return 0;
+ }
+
+ const QChar * pElse = KVSP_curCharPointer;
+
+ if((KVSP_curCharUnicode != 'e') && (KVSP_curCharUnicode != 'E'))
+ return new KviKvsTreeNodeSpecialCommandIf(pBegin,e,i,0);
+ KVSP_skipChar;
+ if((KVSP_curCharUnicode != 'l') && (KVSP_curCharUnicode != 'L'))
+ {
+ KVSP_setCurCharPointer(pElse);
+ return new KviKvsTreeNodeSpecialCommandIf(pBegin,e,i,0);
+ }
+ KVSP_skipChar;
+ if((KVSP_curCharUnicode != 's') && (KVSP_curCharUnicode != 'S'))
+ {
+ KVSP_setCurCharPointer(pElse);
+ return new KviKvsTreeNodeSpecialCommandIf(pBegin,e,i,0);
+ }
+ KVSP_skipChar;
+ if((KVSP_curCharUnicode != 'e') && (KVSP_curCharUnicode != 'E'))
+ {
+ KVSP_setCurCharPointer(pElse);
+ return new KviKvsTreeNodeSpecialCommandIf(pBegin,e,i,0);
+ }
+ KVSP_skipChar;
+ if(KVSP_curCharIsLetterOrNumber)
+ {
+ if((KVSP_curCharUnicode == 'i') || (KVSP_curCharUnicode == 'I'))
+ {
+ KVSP_skipChar;
+ if((KVSP_curCharUnicode == 'f') || (KVSP_curCharUnicode == 'F'))
+ {
+ KVSP_skipChar;
+ if(!KVSP_curCharIsLetterOrNumber)
+ {
+ // this is an "elseif"
+ KVSP_backChar;
+ KVSP_backChar;
+ // point to if
+ goto handle_else_instruction;
+ }
+ KVSP_backChar;
+ }
+ KVSP_backChar;
+ }
+
+ KVSP_setCurCharPointer(pElse);
+ return new KviKvsTreeNodeSpecialCommandIf(pBegin,e,i,0);
+ }
+
+handle_else_instruction:
+ if(!skipSpacesAndNewlines())
+ {
+ delete e;
+ if(i)delete i;
+ return 0;
+ }
+
+ KviKvsTreeNodeInstruction * i2 = parseInstruction();
+ if(!i2)
+ {
+ if(error())
+ {
+ delete e;
+ if(i)delete i;
+ return 0;
+ }
+ } // else , just an empty instruction
+
+ return new KviKvsTreeNodeSpecialCommandIf(pBegin,e,i,i2);
+}
+
+bool KviKvsParser::skipToEndOfForControlBlock()
+{
+ bool bInString = false;
+ int iParLevel = 0;
+
+ for(;;)
+ {
+ switch(KVSP_curCharUnicode)
+ {
+ case '"':
+ bInString = !bInString;
+ KVSP_skipChar;
+ break;
+ case '(':
+ if(!bInString)iParLevel++;
+ KVSP_skipChar;
+ break;
+ case ')':
+ if(!bInString)
+ {
+ if(iParLevel == 0)return true;
+ else iParLevel--;
+ }
+ KVSP_skipChar;
+ break;
+ case 0:
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of buffer while looking for the closing ')' in the 'for' command"));
+ return false;
+ break;
+ //case '\n':
+ // that's ok.. it may have a parenthesis on the next line
+ //KVSP_skipChar;
+ //break;
+ default:
+ KVSP_skipChar;
+ break;
+ }
+ }
+ // not reached
+ KVSP_ASSERT(false);
+ return false;
+}
+
+KviKvsTreeNodeCommand * KviKvsParser::parseSpecialCommandFor()
+{
+ /*
+ @doc: for
+ @type:
+ command
+ @title:
+ for
+ @syntax:
+ for (<initialization>;<condition>;<update>) <command>
+ @keyterms:
+ iterational control commands
+ @short:
+ Iteration control command
+ @description:
+ Executes <initialization> once then runs the following iteration loop:
+ if <condition> evaluates to true then <command> is executed followed
+ by the <update> command. The iteration is repeated until <condition> evaluates to false.[br]
+ <condition> is an expression as the ones evaluated by [doc:expressioneval]$(*)[/doc]
+ with the following extensions:[br]
+ If <condition> is a string, its length is evaluated: in this way a non-empty string
+ causes the <condition> to be true, an empty string causes it to be false.[br]
+ If <condition> is an array, its size is evaluated: in this way a non-empty array
+ causes the <condition> to be true, an empty array causes it to be false.[br]
+ If <condition> is a hash, the number of its entries is evaluated: in this way a non-empty hash
+ causes the <condition> to be true, an empty hash causes it to be false.[br]
+ @examples:
+ for(%a = 0;%a < 100;%a++)echo %a
+ */
+
+ if(KVSP_curCharUnicode != '(')
+ {
+ warning(KVSP_curCharPointer,__tr2qs("The 'for' command needs an expression enclosed in parenthesis"));
+ errorBadChar(KVSP_curCharPointer,'(',"for");
+ return 0;
+ }
+
+ const QChar * pForBegin = KVSP_curCharPointer;
+
+ KVSP_skipChar;
+
+ skipSpaces();
+
+ KviKvsTreeNodeInstruction * i1 = parseInstruction();
+ if(!i1)
+ {
+ if(error())return 0;
+ } // else just empty instruction
+
+ skipSpaces();
+
+ KviKvsTreeNodeExpression * e = parseExpression(';');
+ if(!e)
+ {
+ if(error())
+ {
+ if(i1)delete i1;
+ return 0;
+ }
+ } // else just empty expression : assume true
+
+ skipSpaces();
+
+ // skip to the first non matching ')' that is not in a string
+
+ const QChar * pBegin = KVSP_curCharPointer;
+
+ if(!skipToEndOfForControlBlock())
+ {
+ if(error()) // <-- that's always true
+ {
+ if(i1)delete i1;
+ if(e)delete e;
+ return 0;
+ }
+ }
+
+
+ // HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK
+ // KVSP_curCharPointer is const!
+ // we shouldn't be able to modify it
+ QChar cSave = *(KVSP_curCharPointer);
+
+ QChar * pHack = (QChar *)KVSP_curCharPointer;
+ *pHack = QChar('\n');
+
+ KVSP_curCharPointer = pBegin;
+
+ KviKvsTreeNodeInstruction * i2 = parseInstruction();
+ *pHack = cSave;
+
+ KVSP_setCurCharPointer(pHack);
+ // EOF HACK EOF HACK EOF HACK EOF HACK EOF HACK EOF HACK EOF HACK
+
+
+ if(!i2)
+ {
+ if(error())
+ {
+ if(i1)delete i1;
+ if(e)delete e;
+ return 0;
+ }
+ } // else just empty instruction
+
+ skipSpaces();
+
+ if(KVSP_curCharUnicode != ')')
+ {
+ error(KVSP_curCharPointer,__tr2qs("Found char %q (unicode %x) while looking for the terminating ')' in 'for' command"),KVSP_curCharPointer,KVSP_curCharUnicode);
+ if(i1)delete i1;
+ if(e)delete e;
+ if(i2)delete i2;
+ return 0;
+ }
+
+ KVSP_skipChar;
+
+ if(!skipSpacesAndNewlines())
+ {
+ if(i1)delete i1;
+ if(e)delete e;
+ if(i2)delete i2;
+ return 0;
+ }
+
+ KviKvsTreeNodeInstruction * loop = parseInstruction();
+ if(!loop)
+ {
+ if(error())
+ {
+ if(i1)delete i1;
+ if(e)delete e;
+ if(i2)delete i2;
+ return 0;
+ }
+
+ if((!i1) && (!e) && (!i2))
+ {
+ error(pForBegin,__tr2qs("Empty infinite 'for' loop: fix the script"));
+ if(i1)delete i1;
+ if(e)delete e;
+ if(i2)delete i2;
+ return 0;
+ }
+ } // else just an empty instruction
+
+ return new KviKvsTreeNodeSpecialCommandFor(pForBegin,i1,e,i2,loop);
+}
+
+
+
+KviKvsTreeNodeCommand * KviKvsParser::parseSpecialCommandForeach()
+{
+ /*
+ @doc: foreach
+ @type:
+ command
+ @title:
+ foreach
+ @syntax:
+ foreach [-a] (<variable>,[<item>[,<item>[,<item>[...]]]) <command>
+ @keyterms:
+ iteration commands, flow control commands
+ @switches:
+ !sw: -a | --all
+ Include empty variables in the iteration loop.
+ @short:
+ Iteration command
+ @description:
+ Executed <command> while assigning to <variable> each <item>.[br]
+ <item> may be a constant , a variable , an array , a dictionary or a function returning
+ either a constant string an array reference or a dictionary reference.[br]
+ If <item> is an array , a dictionary or a function that returns a dictionary or array reference
+ the iteration is done through all the dictionary/array items.[br]
+ Please note that the iteration order of dictionary items is undefined.[br]
+ You can always break from the loop by using the [cmd]break[/cmd] command.[br]
+ foreach doesn't iterate over empty scalar variables (i.e. the ones set to [fnc]$nothing[/fnc])
+ unless you use the -a switch. (Note that an array with *some* empty entries is NOT empty so
+ the iteration is in fact done).
+ @examples:
+ [example]
+ foreach(%i,1,2,3,4,5,6,7,8,9)[cmd]echo[/cmd] %i
+ foreach(%chan,[fnc]$window.list[/fnc](channel))[cmd]me[/cmd] -r=%chan This is a test!
+ [comment]# This will work too, and will do the same job[/comment]
+ %windows[] = [fnc]$window.list[/fnc](channel)
+ foreach(%chan,%windows[])[cmd]me[/cmd] -r=%chan This is a test!
+ [comment]# And this too[/comment]
+ %windows[] = [fnc]$window.list[/fnc](channel)
+ foreach(%key,[fnc]$keys[/fnc](%windows[]))[cmd]me[/cmd] -r=%windows[%key] This is a test!
+ [comment]# Another interesting example[/comment]
+ [cmd]alias[/cmd](test){ [cmd]return[/cmd] [fnc]$hash[/fnc](1,a,2,b,3,c,4,d); };
+ foreach(%x,[fnc]$keys[/fnc]($test)){ [cmd]echo[/cmd] %x, $test{%x}; }
+ [/example]
+ */
+
+ if(KVSP_curCharUnicode != '(')
+ {
+ warning(KVSP_curCharPointer,__tr2qs("The 'foreach' command needs an expression enclosed in parenthesis"));
+ errorBadChar(KVSP_curCharPointer,'(',"foreach");
+ return 0;
+ }
+
+ const QChar * pForeachBegin = KVSP_curCharPointer;
+
+ KVSP_skipChar;
+
+ skipSpaces();
+
+
+ if((KVSP_curCharUnicode != '%') && (KVSP_curCharUnicode != '$') && (KVSP_curCharUnicode != '@'))
+ {
+ warning(KVSP_curCharPointer,__tr2qs("The 'foreach' command expects a writeable iteration variable as first parameter"));
+ error(KVSP_curCharPointer,__tr2qs("Found character '%q' (unicode %x) where '%' or '$' was expected: see /help foreach for the command syntax"),KVSP_curCharPointer,KVSP_curCharUnicode);
+ return 0;
+ }
+
+ KviKvsTreeNodeData * d = parsePercentOrDollar();
+ if(!d)return 0;
+
+ if(d->isFunctionCall() || d->isReadOnly())
+ {
+ warning(KVSP_curCharPointer,__tr2qs("The 'foreach' command expects a writeable iteration variable as first parameter"));
+ if(d->isFunctionCall())
+ error(KVSP_curCharPointer,__tr2qs("Unexpected function call as 'foreach' iteration variable"));
+ else
+ error(KVSP_curCharPointer,__tr2qs("Unexpected read-only variable as 'foreach' iteration variable"));
+ delete d;
+ return 0;
+ }
+
+ skipSpaces();
+ if(KVSP_curCharUnicode != ',')
+ {
+ if(KVSP_curCharUnicode == ')')
+ {
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of 'foreach' parameters: at least one iteration data argument must be given"));
+ delete d;
+ return 0;
+ }
+ warning(KVSP_curCharPointer,__tr2qs("The 'foreach' command expects a comma separated list of iteration data items after the first parameter"));
+ errorBadChar(KVSP_curCharPointer,',',"foreach");
+ return 0;
+ }
+
+ KviKvsTreeNodeDataList * l = parseCommaSeparatedParameterList();
+ if(!l)return 0;
+
+ if(!skipSpacesAndNewlines())
+ {
+ delete d;
+ delete l;
+ return 0;
+ }
+
+ const QChar * pLoopBegin = KVSP_curCharPointer;
+
+ KviKvsTreeNodeInstruction * loop = parseInstruction();
+ if(!loop)
+ {
+ if(error())return 0;
+ warning(pLoopBegin,__tr2qs("Found empty 'foreach' execution block: maybe you need to fix your script ?"));
+ loop = new KviKvsTreeNodeInstructionBlock(pLoopBegin);
+ }
+
+ return new KviKvsTreeNodeSpecialCommandForeach(pForeachBegin,d,l,loop);
+}
+
+
+KviKvsTreeNodeCommand * KviKvsParser::parseSpecialCommandSwitch()
+{
+ /*
+ @doc: switch
+ @type:
+ command
+ @title:
+ switch
+ @syntax:
+ switch(<expression>)
+ {
+ case(<value>)[:]<command>
+ [break]
+ case(<value>)[:]<command>
+ [break]
+ ....
+ match(<wildcard_expression>)[:]<command>
+ [break]
+ ....
+ regexp(<regular_expression>)[:]<command>
+ [break]
+ ....
+ case(<value>)[:]<command>
+ [break]
+ ....
+ default[:]<command>
+ [break]
+ }
+ @short:
+ Another flow control command
+ @description:
+ The switch command is based on the standard C 'switch' keyword.
+ It executes conditionally groups of commands choosen from
+ a larger set of command groups.[br]
+ First <expression> is evaluated (<expression> is any arithmetic or string expression).[br]
+ Then the 'match','regexp','case' and 'default' labels are evaluated sequentially
+ in the order of appearance.[br]
+ [b]case(<value>)[:]<command>[/b][br]
+ The <value> is evaluated and is compared against the result of <expression>.
+ The comparison is case insensitive (if the values are strings).[br]
+ If <value> is equal to <expression> then <command> is executed.
+ Please note that <command> must be either a single instruction or an instruction block [b]enclosed in braces[/b].
+ If <command> contains a [cmd]break[/cmd] statement inside or if [cmd]break[/cmd]
+ is specified just after the <command> then the execution of the switch is terminated
+ otherwise the nex label is evaluated.[br]
+ [b]match(<value>)[:]<command>[/b][br]
+ The <value> is expected to be a wildcard expression (containing '*' and '?' wildcards)
+ that is matched against <expression>.[br]
+ If there is a match (a complete case insensitive match!) then the related <command>
+ is executed. [cmd]brea[/cmd] is treated just like in the case label.[br]
+ [b]regexp(<value>)[:]<command>[/b][br]
+ The <value> is expected to be a complete standard regular expression
+ that is matched agains <expression>.[br]
+ If there is a match (a complete case insensitive match!) then the related <command>
+ is executed. [cmd]brea[/cmd] is treated just like in the case label.[br]
+ [b]default[:]<command>[/b][br]
+ The default label is executed unconditionally (unless there was a previous label
+ that terminated the execution with break).[br]
+ @examples:
+ [comment]# Try to change the 1 below to 2 or 3 to see the results[/comment]
+ %tmp = 1
+ switch(%tmp)
+ {
+ case(1):
+ echo \%tmp was 1!
+ break;
+ case(2)
+ echo \%tmp was 2!
+ break;
+ default:
+ echo \%tmp was not 1 nor 2: it was %tmp!
+ break;
+ }
+ [comment]# A complexier example: change the 1 in 2 or 3[/comment]
+ %tmp = 1
+ switch(%tmp)
+ {
+ case(1):
+ echo \%tmp was 1!
+ case(2)
+ echo \%tmp was 2!
+ break;
+ default:
+ echo \%tmp was either 1 or something different from 2 (%tmp)
+ break;
+ }
+ [comment]# An example with strings[/comment]
+ %tmp = "This is a test"
+ %tmp2 = "This is not a test"
+ switch(%tmp)
+ {
+ case(%tmp2)
+ echo \%tmp == \%tmp2
+ break;
+ case(%tmp)
+ {
+ # do not break here
+ echo "Yeah.. it's stupid.. \%tmp == \%tmp :D"
+ }
+ match("*TEST"):
+ echo "Matched *TEST"
+ regexp("[a-zA-Z ]*test"):
+ echo "Matched [a-zA-Z ]*text"
+ regexp("[a-zA-Z ]*not[a-zA-Z ]*"):
+ echo "Matched [a-zA-Z ]*not[a-zA-Z ]*"
+ default:
+ echo This is executed anyway (unless some break was called)
+ break;
+ }
+ */
+
+ if(KVSP_curCharUnicode != '(')
+ {
+ warning(KVSP_curCharPointer,__tr2qs("The 'switch' command needs an expression enclosed in parenthesis"));
+ errorBadChar(KVSP_curCharPointer,'(',"switch");
+ return 0;
+ }
+
+ const QChar * pBegin = KVSP_curCharPointer;
+
+ KVSP_skipChar;
+
+ KviKvsTreeNodeExpression * e = parseExpression(')');
+ if(!e)
+ {
+ // must be an error
+ return 0;
+ }
+
+ if(!skipSpacesAndNewlines())
+ {
+ delete e;
+ return 0;
+ }
+
+ if(KVSP_curCharUnicode != '{')
+ {
+ errorBadChar(KVSP_curCharPointer,'{',"switch");
+ delete e;
+ return 0;
+ }
+
+ KVSP_skipChar;
+
+ if(!skipSpacesAndNewlines())
+ {
+ delete e;
+ return 0;
+ }
+
+ KviKvsTreeNodeSpecialCommandSwitch * pSwitch = new KviKvsTreeNodeSpecialCommandSwitch(pBegin,e);
+
+ KviKvsTreeNodeSpecialCommandSwitchLabel * pLabel = 0;
+
+ while(KVSP_curCharUnicode != '}')
+ {
+ // look for a 'case','match','default' or 'regexpr' label
+
+ const QChar * pLabelBegin = KVSP_curCharPointer;
+ while(KVSP_curCharIsLetter)KVSP_skipChar;
+
+ if(KVSP_curCharIsEndOfBuffer)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of buffer in switch condition block"));
+ delete pSwitch;
+ return 0;
+ }
+
+ if(KVSP_curCharPointer == pLabelBegin)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Found character %q (unicode %x) where a 'case','match','regexp','default' or 'break' label was expected"),KVSP_curCharPointer,KVSP_curCharUnicode);
+ delete pSwitch;
+ return 0;
+ }
+
+ QString szLabel(pLabelBegin,KVSP_curCharPointer - pLabelBegin);
+ QString szLabelLow = szLabel.lower();
+
+ bool bNeedParam = true;
+
+ if(szLabelLow == "case")
+ {
+ pLabel = new KviKvsTreeNodeSpecialCommandSwitchLabelCase(pLabelBegin);
+ } else if(szLabelLow == "match")
+ {
+ pLabel = new KviKvsTreeNodeSpecialCommandSwitchLabelMatch(pLabelBegin);
+ } else if(szLabelLow == "regexp")
+ {
+ pLabel = new KviKvsTreeNodeSpecialCommandSwitchLabelRegexp(pLabelBegin);
+ } else if(szLabelLow == "default")
+ {
+ pLabel = new KviKvsTreeNodeSpecialCommandSwitchLabelDefault(pLabelBegin);
+ bNeedParam = false;
+ } else if(szLabelLow == "break")
+ {
+ if(pLabel)
+ {
+ pLabel->setTerminatingBreak(true);
+ skipSpaces();
+ if(KVSP_curCharUnicode == ';')KVSP_skipChar;
+ if(!skipSpacesAndNewlines())
+ {
+ delete pSwitch;
+ delete pLabel;
+ return 0;
+ }
+ continue;
+ } else {
+ error(pLabelBegin,__tr2qs("Found 'break' label where a 'case','match','regexp' or 'default' label was expected"));
+ delete pSwitch;
+ return 0;
+ }
+ } else {
+ error(pLabelBegin,__tr2qs("Found token '%Q' where a 'case','match','regexp','default' or 'break' label was expected"),&szLabel);
+ delete pSwitch;
+ return 0;
+ }
+
+ if(bNeedParam)
+ {
+ skipSpaces();
+ if(KVSP_curCharUnicode != '(')
+ {
+ errorBadChar(KVSP_curCharPointer,'(',"switch");
+ delete pSwitch;
+ delete pLabel;
+ return 0;
+ }
+ KVSP_skipChar;
+
+ KviKvsTreeNodeData * pParameter = parseSingleParameterInParenthesis();
+ if(!pParameter)
+ {
+ delete pSwitch;
+ delete pLabel;
+ return 0;
+ }
+
+ pLabel->setParameter(pParameter);
+ }
+
+ skipSpaces();
+ if(KVSP_curCharUnicode == ':')KVSP_skipChar;
+ if(!skipSpacesAndNewlines())
+ {
+ delete pSwitch;
+ delete pLabel;
+ return 0;
+ }
+
+ KviKvsTreeNodeInstruction * pInstruction = parseInstruction();
+ if(!pInstruction)
+ {
+ // may be an empty instruction
+ if(error())
+ {
+ delete pSwitch;
+ delete pLabel;
+ return 0;
+ }
+ }
+
+ pLabel->setInstruction(pInstruction);
+ pSwitch->addLabel(pLabel);
+
+ if(!skipSpacesAndNewlines())
+ {
+ delete pSwitch;
+ return 0;
+ }
+ }
+
+ KVSP_skipChar;
+
+ if(pSwitch->isEmpty())
+ {
+ error(pBegin,__tr2qs("Senseless empty switch command: fix the script"));
+ delete pSwitch;
+ return 0;
+ }
+
+ return pSwitch;
+}
+
+KviKvsTreeNodeSpecialCommandDefpopupLabelPopup * KviKvsParser::parseSpecialCommandDefpopupLabelPopup()
+{
+ if(KVSP_curCharUnicode != '{')
+ {
+ errorBadChar(KVSP_curCharPointer,'{',"defpopup");
+ return 0;
+ }
+
+ KviKvsTreeNodeSpecialCommandDefpopupLabelPopup * pPopup = new KviKvsTreeNodeSpecialCommandDefpopupLabelPopup(KVSP_curCharPointer);
+
+ KVSP_skipChar;
+
+ if(!skipSpacesAndNewlines())
+ {
+ delete pPopup;
+ return 0;
+ }
+
+ while(KVSP_curCharUnicode != '}')
+ {
+ // look for 'label', 'prologue', 'epilogue', 'popup', 'item', 'separator' or 'extpopup' label
+ const QChar * pLabelBegin = KVSP_curCharPointer;
+ while(KVSP_curCharIsLetter)KVSP_skipChar;
+
+ if(KVSP_curCharIsEndOfBuffer)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Unexpected end of buffer in defpopup block"));
+ delete pPopup;
+ return 0;
+ }
+
+ if(KVSP_curCharPointer == pLabelBegin)
+ {
+ error(KVSP_curCharPointer,__tr2qs("Found character %q (unicode %x) where a 'prologue','separator','label','popup','item','extpopup' or 'epilogue' label was expected"),KVSP_curCharPointer,KVSP_curCharUnicode);
+ delete pPopup;
+ return 0;
+ }
+
+ QString szLabel(pLabelBegin,KVSP_curCharPointer - pLabelBegin);
+ QString szLabelLow = szLabel.lower();
+
+ KviPointerList<QString> * pParameters = 0;
+
+ QString szCondition;
+
+
+#define EXTRACT_POPUP_LABEL_PARAMETERS \
+ if(!skipSpacesAndNewlines()) \
+ { \
+ delete pPopup; \
+ return 0; \
+ } \
+ if(KVSP_curCharUnicode != '(') \
+ { \
+ errorBadChar(KVSP_curCharPointer,'(',"defpopup"); \
+ delete pPopup; \
+ return 0; \
+ } \
+ pParameters = parseCommaSeparatedParameterListNoTree(); \
+ if(!pParameters)return 0;
+
+
+#define EXTRACT_POPUP_LABEL_CONDITION \
+ if(!skipSpacesAndNewlines()) \
+ { \
+ delete pPopup; \
+ return 0; \
+ } \
+ if(KVSP_curCharUnicode == '(') \
+ { \
+ const QChar * pBegin = KVSP_curCharPointer; \
+ KVSP_skipChar; \
+ KviKvsTreeNodeExpression * pExpression = parseExpression(')'); \
+ if(!pExpression) \
+ { \
+ if(pParameters)delete pParameters; \
+ delete pPopup; \
+ return 0; \
+ } \
+ int cLen = (KVSP_curCharPointer - pBegin) - 2; \
+ if(cLen > 0) \
+ { \
+ szCondition.setUnicode(pBegin + 1,cLen); \
+ } \
+ delete pExpression; \
+ if(!skipSpacesAndNewlines()) \
+ { \
+ if(pParameters)delete pParameters; \
+ delete pPopup; \
+ return 0; \
+ } \
+ }
+
+
+
+ if((szLabelLow == "prologue") || (szLabelLow == "epilogue"))
+ {
+ /////////////////////////////////////////////////////////////////////////////////////////////////
+ bool bPrologue = (szLabelLow == "prologue");
+ if(!skipSpacesAndNewlines())
+ {
+ delete pPopup;
+ return 0;
+ }
+
+ if(KVSP_curCharUnicode == '(')
+ {
+ EXTRACT_POPUP_LABEL_PARAMETERS
+ if(!skipSpacesAndNewlines())
+ {
+ if(pParameters)delete pParameters;
+ delete pPopup;
+ return 0;
+ }
+ }
+ const QChar * pBegin = KVSP_curCharPointer;
+ KviKvsTreeNodeInstruction * pInstruction = parseInstruction();
+ if(pInstruction)
+ {
+ // in fact we don't need it at all, we just need the code buffer...
+ delete pInstruction;
+ } else {
+ // may be an empty instruction
+ if(error())
+ {
+ // error
+ if(pParameters)delete pParameters;
+ delete pPopup;
+ return 0;
+ }
+ // empty instruction
+ if(bPrologue)
+ warning(pBegin,__tr2qs("Found empty prologue block: maybe you need to fix the script?"));
+ else
+ warning(pBegin,__tr2qs("Found empty epilogue block: maybe you need to fix the script?"));
+ }
+ int iLen = KVSP_curCharPointer - pBegin;
+ if(iLen > 0)
+ {
+ QString szInstruction(pBegin,KVSP_curCharPointer - pBegin);
+ KviCommandFormatter::bufferFromBlock(szInstruction);
+ QString * pItemName = pParameters ? pParameters->first() : 0;
+ QString szItemName = pItemName ? *pItemName : QString::null;
+ if(bPrologue)
+ pPopup->addLabel(new KviKvsTreeNodeSpecialCommandDefpopupLabelPrologue(pLabelBegin,szInstruction,szItemName));
+ else
+ pPopup->addLabel(new KviKvsTreeNodeSpecialCommandDefpopupLabelEpilogue(pLabelBegin,szInstruction,szItemName));
+ } // else the instruction was empty anyway: we don't need it in fact
+ if(pParameters)delete pParameters;
+ } else if(szLabelLow == "separator")
+ {
+ // FIXME: Separators can't have labels here :(((((
+ /////////////////////////////////////////////////////////////////////////////////////////////////
+ EXTRACT_POPUP_LABEL_CONDITION
+ if(KVSP_curCharUnicode == ';')KVSP_skipChar;
+ QString szItemName = "dummySeparator"; // <------- FIXME!
+ pPopup->addLabel(new KviKvsTreeNodeSpecialCommandDefpopupLabelSeparator(pLabelBegin,szCondition,szItemName));
+
+ } else if(szLabelLow == "label")
+ {
+ /////////////////////////////////////////////////////////////////////////////////////////////////
+ EXTRACT_POPUP_LABEL_PARAMETERS
+ EXTRACT_POPUP_LABEL_CONDITION
+
+ QString * pText = pParameters->first();
+ if(!pText)
+ {
+ error(pLabelBegin,__tr2qs("Unexpected empty <text> field in label parameters. See /help defpopup for the syntax"));
+ delete pParameters;
+ delete pPopup;
+ return 0;
+ }
+ QString * pIcon = pParameters->next();
+ if(KVSP_curCharUnicode == ';')KVSP_skipChar;
+ QString * pItemName = pParameters->next();
+ pPopup->addLabel(new KviKvsTreeNodeSpecialCommandDefpopupLabelLabel(pLabelBegin,szCondition,*pText,pIcon ? *pIcon : QString::null,pItemName ? *pItemName : QString::null));
+ delete pParameters;
+ } else if(szLabelLow == "popup")
+ {
+ /////////////////////////////////////////////////////////////////////////////////////////////////
+ EXTRACT_POPUP_LABEL_PARAMETERS
+ EXTRACT_POPUP_LABEL_CONDITION
+
+ QString * pText = pParameters->first();
+ if(!pText)
+ {
+ error(pLabelBegin,__tr2qs("Unexpected empty <text> field in extpopup parameters. See /help defpopup for the syntax"));
+ delete pParameters;
+ delete pPopup;
+ return 0;
+ }
+ QString * pIcon = pParameters->next();
+ QString * pItemName = pParameters->next();
+
+ KviKvsTreeNodeSpecialCommandDefpopupLabelPopup * pSubPopup = parseSpecialCommandDefpopupLabelPopup();
+ if(!pSubPopup)
+ {
+ delete pParameters;
+ delete pPopup;
+ return 0;
+ }
+
+ pSubPopup->setCondition(szCondition);
+ pSubPopup->setText(*pText);
+ pSubPopup->setItemName(pItemName ? *pItemName : QString::null);
+ if(pIcon)pSubPopup->setIcon(*pIcon);
+ pPopup->addLabel(pSubPopup);
+ delete pParameters;
+ } else if(szLabelLow == "item")
+ {
+ /////////////////////////////////////////////////////////////////////////////////////////////////
+ EXTRACT_POPUP_LABEL_PARAMETERS
+ EXTRACT_POPUP_LABEL_CONDITION
+
+ QString * pText = pParameters->first();
+ if(!pText)
+ {
+ error(pLabelBegin,__tr2qs("Unexpected empty <text> field in extpopup parameters. See /help defpopup for the syntax"));
+ delete pParameters;
+ delete pPopup;
+ return 0;
+ }
+ QString * pIcon = pParameters->next();
+ QString * pItemName = pParameters->next();
+
+ const QChar * pBegin = KVSP_curCharPointer;
+ KviKvsTreeNodeInstruction * pInstruction = parseInstruction();
+ if(pInstruction)
+ {
+ // in fact we don't need it: we just need the code block
+ delete pInstruction;
+ } else {
+ // empty instruction or error ?
+ if(error())
+ {
+ // error
+ delete pParameters;
+ delete pPopup;
+ return 0;
+ }
+ // empty instruction
+ warning(pBegin,__tr2qs("Found empty instruction for popup item: maybe you need to fix the script?"));
+ }
+ int iLen = KVSP_curCharPointer - pBegin;
+ if(iLen > 0)
+ {
+ QString szInstruction(pBegin,KVSP_curCharPointer - pBegin);
+ KviCommandFormatter::bufferFromBlock(szInstruction);
+ pPopup->addLabel(new KviKvsTreeNodeSpecialCommandDefpopupLabelItem(pLabelBegin,szCondition,*pText,pIcon ? *pIcon : QString::null,szInstruction,pItemName ? *pItemName : QString::null));
+ } else {
+ // zero length instruction, but still add the item
+ QString szInstruction = "";
+ KviCommandFormatter::bufferFromBlock(szInstruction);
+ pPopup->addLabel(new KviKvsTreeNodeSpecialCommandDefpopupLabelItem(pLabelBegin,szCondition,*pText,pIcon ? *pIcon : QString::null,szInstruction,pItemName ? *pItemName : QString::null));
+ }
+ delete pParameters;
+ } else if(szLabelLow == "extpopup")
+ {
+ /////////////////////////////////////////////////////////////////////////////////////////////////
+ EXTRACT_POPUP_LABEL_PARAMETERS
+ EXTRACT_POPUP_LABEL_CONDITION
+
+ QString * pText = pParameters->first();
+ if(!pText)
+ {
+ error(pLabelBegin,__tr2qs("Unexpected empty <text> field in extpopup parameters. See /help defpopup for the syntax"));
+ delete pParameters;
+ delete pPopup;
+ return 0;
+ }
+ QString * pName = pParameters->next();
+ if(!pName)
+ {
+ error(pLabelBegin,__tr2qs("Unexpected empty <name> field in extpopup parameters. See /help defpopup for the syntax"));
+ delete pParameters;
+ delete pPopup;
+ return 0;
+ }
+ QString * pIcon = pParameters->next();
+ QString * pItemName = pParameters->next();
+ if(KVSP_curCharUnicode == ';')KVSP_skipChar;
+ pPopup->addLabel(new KviKvsTreeNodeSpecialCommandDefpopupLabelExtpopup(pLabelBegin,szCondition,*pText,pIcon ? *pIcon : QString::null,*pName,pItemName ? *pItemName : QString::null));
+ delete pParameters;
+ } else {
+ /////////////////////////////////////////////////////////////////////////////////////////////////
+ error(pLabelBegin,__tr2qs("Found token '%Q' where a 'prologue','separator','label','popup','item','extpopup' or 'epilogue' label was expected"),&szLabel);
+ delete pPopup;
+ return 0;
+ }
+
+ if(!skipSpacesAndNewlines())
+ {
+ delete pPopup;
+ return 0;
+ }
+ }
+
+ KVSP_skipChar;
+ return pPopup;
+}
+
+
+KviKvsTreeNodeCommand * KviKvsParser::parseSpecialCommandDefpopup()
+{
+ // FIXME: This SHOULD be renamed to popup.create (NOT popup.define!)
+ // and internally aliased to defpopup as backward compat
+ // There should be then also popup.destroy etc..
+
+ /*
+ @doc: defpopup
+ @type:
+ command
+ @title:
+ defpopup
+ @syntax:
+ defpopup [-m] (<popup_name>)
+ {
+ prologue[(<id>)] <prologue_command>
+
+ epilogue[(<id>)] <epilogue_command>
+
+ label(<text>[,<id>])[(<expression>)][;]
+
+ item(<text>[,<icon>[,<id>]])[(<expression>)]<command>
+
+ popup(<text>[,<icon>[,<id>]])[(<expression>)]
+ {
+ <popup body>
+ }
+
+ extpopup(<text>,<name>[,<icon>[,<id>]])[(<expression>)][;]
+
+ separator[(<expression>)][;]
+ ...
+ }
+ @short:
+ Defines a popup menu
+ @switches:
+ !sw: -m | --merge
+ Merges the new popup contents with an older popup version
+ @description:
+ Defines the popup menu <popup_name>. If the -m switch is NOT used
+ the previous contents of the popups are cleared, otherwise are preserved.[br]
+ The popup is generated 'on the fly' when the [cmd]popup[/cmd] command
+ is called.[br]
+ The 'item' keyword adds a menu item with visible <text> ,
+ the optional <icon> and <command> as code to be executed when the item
+ is clicked. <text> is a string that is evaluated at [cmd]popup[/cmd]
+ call time and may contain identifiers and variables. If <expression>
+ is given, it is evaluated at [cmd]popup[/cmd] call time and if the result
+ is 0, the item is not shown in the physical popup.[br]
+ The 'popup' keyword adds a submenu with visible <text> , the optional
+ <icon> and a popup body that follows exactly the same syntax
+ as the defpopup body. The <expression> has the same meaning as with the
+ 'item' keyword.[br]
+ The 'extpopup' keyword adds a submenu with visible <text> , the optional
+ icon and a popup body that is defined by the popup menu <name>. This
+ basically allows to nest popup menus and define their parts separately.
+ <icon> and <expression> have the same meaning as with the 'item' keyword.[br]
+ The 'separator' keyword adds a straight line between items (separator).[br]
+ The 'label' keywork adds a descriptive label that acts like a separator.[br]
+ The 'prologue' keyword adds a <prologue_command> to be executed
+ just before the popup is filled at [cmd]popup[/cmd] command call.[br]
+ The 'epilogue' keyword adds an <epilogue_command> to be executed
+ just after the popup has been filled at [cmd]popup[/cmd] command call.[br]
+ There can be multiple prologue and epilogue commands: their execution order
+ is undefined.[br]
+ <icon> is always an [doc:image_id]image identifier[/doc].[br]
+ <id> is an unique identifier that can be used to remove single items
+ by the means of [cmd]delpopupitem[/cmd]. If <id> is omitted
+ then it is automatically generated.
+ Please note that using this command inside the prologue , epilogue
+ or item code of the modified popup menu is forbidden.
+ In other words: self modification of popup menus is NOT allowed.[br]
+ To remove a popup menu use this command with an empty body:[br]
+ [example]
+ defpopup(test){}
+ [/example]
+ This will remove the popup 'test' and free its memory.
+ Popups have a special kind of local variables that have an extended lifetime:
+ these are called "extended scope variables" and are described in the [doc:data_structures]Data structures documentation[/doc].[br]
+ The syntax for these variables is:[br]
+ [b]%:<variable name>[/b][br]
+ These variables are visible during all the "visible lifetime" of the popup:
+ from the [cmd]popup[/cmd] command call to the moment in that the user selects an item
+ and the corresponding code is executed (substantially from a [cmd]popup[/cmd] call to the next one).[br]
+ This allows you to pre-calculate data and conditions in the porologue of the popup
+ and then use it in the item handlers or item conditions.[br]
+ @seealso:
+ [cmd]popup[/cmd]
+ @examples:
+ */
+
+ if(KVSP_curCharUnicode != '(')
+ {
+ warning(KVSP_curCharPointer,__tr2qs("The 'defpopup' command needs an expression enclosed in parenthesis"));
+ errorBadChar(KVSP_curCharPointer,'(',"defpopup");
+ return 0;
+ }
+
+ const QChar * pBegin = KVSP_curCharPointer;
+
+ KVSP_skipChar;
+
+ KviKvsTreeNodeData * pPopupName = parseSingleParameterInParenthesis();
+ if(!pPopupName)return 0;
+
+ if(!skipSpacesAndNewlines())
+ {
+ delete pPopupName;
+ return 0;
+ }
+
+ KviKvsTreeNodeSpecialCommandDefpopupLabelPopup * pMainPopup = parseSpecialCommandDefpopupLabelPopup();
+ if(!pMainPopup)
+ {
+ delete pPopupName;
+ return 0;
+ }
+
+ return new KviKvsTreeNodeSpecialCommandDefpopup(pBegin,pPopupName,pMainPopup);
+}
+
+
+KviKvsTreeNodeCommand * KviKvsParser::parseSpecialCommandHelp()
+{
+ // again not a fully special command: this routine just returns
+ // a CoreSimpleCommand but parses the parameters as constants
+
+ // we handle a single big parameter, with whitespace stripped
+ // This is because we want the identifiers to be preserved
+ // as unevaluated (i.e $function).
+
+ skipSpaces();
+
+ const QChar * pBegin = KVSP_curCharPointer;
+ while(!KVSP_curCharIsEndOfCommand)KVSP_skipChar;
+
+ if(!KVSP_curCharIsEndOfBuffer)KVSP_skipChar;
+
+ QString tmp(pBegin,KVSP_curCharPointer - pBegin);
+ tmp.stripWhiteSpace();
+
+ const QString szHelpName("help");
+
+ KviKvsCoreSimpleCommandExecRoutine * r = KviKvsKernel::instance()->findCoreSimpleCommandExecRoutine(szHelpName);
+ if(!r)return 0; // <--- internal error!
+
+ KviKvsTreeNodeDataList * p = new KviKvsTreeNodeDataList(pBegin);
+ p->addItem(new KviKvsTreeNodeConstantData(pBegin,new KviKvsVariant(tmp)));
+
+ return new KviKvsTreeNodeCoreSimpleCommand(pBegin,szHelpName,p,r);
+}
diff --git a/src/kvirc/kvs/kvi_kvs_popupmanager.cpp b/src/kvirc/kvs/kvi_kvs_popupmanager.cpp
new file mode 100644
index 00000000..f0d06740
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_popupmanager.cpp
@@ -0,0 +1,117 @@
+//=============================================================================
+//
+// File : kvi_kvs_popupmanager.cpp
+// Created on Tue 7 Jan 2004 02:11:41 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_popupmanager.h"
+#include "kvi_locale.h"
+#include "kvi_config.h"
+
+KviKvsPopupManager * KviKvsPopupManager::m_pInstance = 0;
+
+KviKvsPopupManager::KviKvsPopupManager()
+{
+ m_pInstance = this;
+ m_pPopupDict = new KviPointerHashTable<QString,KviKvsPopupMenu>(17,false);
+ m_pPopupDict->setAutoDelete(true);
+}
+
+KviKvsPopupManager::~KviKvsPopupManager()
+{
+ delete m_pPopupDict;
+}
+
+void KviKvsPopupManager::init()
+{
+ if(KviKvsPopupManager::instance())
+ {
+ debug("WARNING: Trying to create the KviKvsPopupManager twice!");
+ return;
+ }
+ (void)new KviKvsPopupManager();
+}
+
+void KviKvsPopupManager::done()
+{
+ if(!KviKvsPopupManager::instance())
+ {
+ debug("WARNING: Trying to destroy the KviKvsPopupManager twice!");
+ return;
+ }
+ delete KviKvsPopupManager::instance();
+}
+
+KviKvsPopupMenu * KviKvsPopupManager::get(const QString &szPopupName)
+{
+ KviKvsPopupMenu * m = lookup(szPopupName);
+ if(!m)
+ {
+ m = new KviKvsPopupMenu(szPopupName);
+ add(szPopupName,m);
+ }
+ return m;
+}
+
+void KviKvsPopupManager::load(const QString &szFileName)
+{
+ m_pPopupDict->clear();
+ KviConfig cfg(szFileName,KviConfig::Read);
+
+ KviConfigIterator it(*(cfg.dict()));
+
+ KviPointerList<QString> l;
+ l.setAutoDelete(true);
+
+ while(it.current())
+ {
+ l.append(new QString(it.currentKey()));
+ ++it;
+ }
+
+ for(QString * s = l.first();s;s = l.next())
+ {
+ cfg.setGroup(*s);
+ KviKvsPopupMenu * m = new KviKvsPopupMenu(*s);
+ m->load("",&cfg);
+ m_pPopupDict->insert(*s,m);
+ //++it;
+ }
+}
+
+void KviKvsPopupManager::save(const QString &szFileName)
+{
+ KviConfig cfg(szFileName,KviConfig::Write);
+ cfg.clear();
+
+ KviPointerHashTableIterator<QString,KviKvsPopupMenu> it(*m_pPopupDict);
+ while(it.current())
+ {
+ cfg.setGroup(it.current()->popupName());
+ it.current()->save("",&cfg);
+ ++it;
+ }
+}
+
+
+
diff --git a/src/kvirc/kvs/kvi_kvs_popupmanager.h b/src/kvirc/kvs/kvi_kvs_popupmanager.h
new file mode 100644
index 00000000..c9135b22
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_popupmanager.h
@@ -0,0 +1,57 @@
+#ifndef _KVI_KVS_POPUPMANAGER_H_
+#define _KVI_KVS_POPUPMANAGER_H_
+//=============================================================================
+//
+// File : kvi_kvs_popupmanager.h
+// Created on Tue 7 Jan 2004 02:11:41 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_kvs_popupmenu.h"
+
+class KVIRC_API KviKvsPopupManager
+{
+protected: // can only be created by init/done
+ KviKvsPopupManager();
+ ~KviKvsPopupManager();
+protected:
+ KviPointerHashTable<QString,KviKvsPopupMenu> * m_pPopupDict;
+ static KviKvsPopupManager * m_pInstance;
+public:
+ static KviKvsPopupManager * instance(){ return m_pInstance; };
+ static void init();
+ static void done();
+ int popupCount(){ return m_pPopupDict->count(); };
+
+ KviPointerHashTable<QString,KviKvsPopupMenu> * popupDict(){ return m_pPopupDict; };
+
+ KviKvsPopupMenu * lookup(const QString &szPopupName){ return m_pPopupDict->find(szPopupName); };
+ KviKvsPopupMenu * get(const QString &szPopupName);
+ void add(const QString &szPopupName,KviKvsPopupMenu * pPopup){ m_pPopupDict->replace(szPopupName,pPopup); };
+ void remove(const QString &szPopupName){ m_pPopupDict->remove(szPopupName); };
+ void clear(){ m_pPopupDict->clear(); };
+
+ void save(const QString & filename);
+ void load(const QString & filename);
+};
+
+
+#endif //!_KVI_KVS_POPUPMANAGER_H_
diff --git a/src/kvirc/kvs/kvi_kvs_popupmenu.cpp b/src/kvirc/kvs/kvi_kvs_popupmenu.cpp
new file mode 100644
index 00000000..10a26988
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_popupmenu.cpp
@@ -0,0 +1,1234 @@
+//=============================================================================
+//
+// File : kvi_kvs_popupmenu.cpp
+// Created on Wed 07 Jan 2004 05:02:57 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_popupmenu.h"
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+#include "kvi_out.h"
+#include "kvi_app.h"
+#include "kvi_kvs_popupmanager.h"
+#include "kvi_console.h"
+#include "kvi_config.h"
+#include "kvi_cmdformatter.h"
+#include "kvi_options.h"
+
+// popup names
+
+// rootname : the root popup
+// rootname.anonymousmenuX : child popups with no name
+// rootname.externalrootname : child popups copied from external menus
+// rootname.itemX : child items
+// rootname.separatorX : child separators
+// rootname.labelX : child labels
+
+
+KviKvsPopupMenuItem::KviKvsPopupMenuItem(Type t,const QString &szItemName,const QString &szCondition)
+{
+ m_szItemName = szItemName;
+ m_eType = t;
+ if(szCondition.isEmpty())
+ {
+ // true by default
+ m_pKvsCondition = 0;
+ } else {
+ QString szName = "condition callback for ";
+ szName += szItemName;
+ m_pKvsCondition = new KviKvsScript(szName,szCondition,KviKvsScript::Expression);
+ }
+}
+
+KviKvsPopupMenuItem::KviKvsPopupMenuItem(Type t,const QString &szItemName,const KviKvsScript * pCondition)
+{
+ m_szItemName = szItemName;
+ m_eType = t;
+ if(!pCondition)
+ {
+ // true by default
+ m_pKvsCondition = 0;
+ } else {
+ m_pKvsCondition = new KviKvsScript(*pCondition);
+ }
+}
+
+
+KviKvsPopupMenuItem::~KviKvsPopupMenuItem()
+{
+ if(m_pKvsCondition)delete m_pKvsCondition;
+}
+
+void KviKvsPopupMenuItem::clear()
+{
+}
+
+KviKvsScript * KviKvsPopupMenuItem::kvsIcon()
+{
+ return 0;
+}
+
+KviKvsScript * KviKvsPopupMenuItem::kvsText()
+{
+ return 0;
+}
+
+KviKvsScript * KviKvsPopupMenuItem::kvsCode()
+{
+ return 0;
+}
+
+bool KviKvsPopupMenuItem::evaluateCondition(KviKvsPopupMenuTopLevelData * pData)
+{
+ if(!m_pKvsCondition)return true;
+ KviKvsVariant vRet;
+
+ if(!m_pKvsCondition->run(pData->window(),
+ pData->parameters(),
+ &vRet,
+ KviKvsScript::PreserveParams,
+ pData->extendedRunTimeData()))
+ {
+ // broken condition
+ pData->window()->output(KVI_OUT_PARSERWARNING,__tr2qs("Broken condition in menu setup: assuming false"));
+ return false;
+ }
+ return vRet.asBoolean();
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+KviKvsPopupMenuItemSeparator::KviKvsPopupMenuItemSeparator(const QString &szItemName,const QString &szCondition)
+: KviKvsPopupMenuItem(KviKvsPopupMenuItem::Separator,szItemName,szCondition)
+{
+}
+
+KviKvsPopupMenuItemSeparator::KviKvsPopupMenuItemSeparator(const QString &szItemName,const KviKvsScript * pCondition)
+: KviKvsPopupMenuItem(KviKvsPopupMenuItem::Separator,szItemName,pCondition)
+{
+}
+
+KviKvsPopupMenuItemSeparator::~KviKvsPopupMenuItemSeparator()
+{
+}
+
+void KviKvsPopupMenuItemSeparator::fill(KviKvsPopupMenu * pMenu,KviKvsPopupMenuTopLevelData * pData,int iIdx)
+{
+ if(!evaluateCondition(pData))return;
+ pMenu->insertSeparator();
+}
+
+KviKvsPopupMenuItem * KviKvsPopupMenuItemSeparator::clone() const
+{
+ return new KviKvsPopupMenuItemSeparator(m_szItemName,m_pKvsCondition);
+}
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviKvsPopupMenuItemWithTextAndIcon::KviKvsPopupMenuItemWithTextAndIcon(KviKvsPopupMenuItem::Type t,const QString &szItemName,const QString &szText,const QString &szIcon,const QString &szCondition)
+: KviKvsPopupMenuItem(t,szItemName,szCondition)
+{
+ QString szName = "text callback for ";
+ szName += szItemName;
+ m_pKvsText = new KviKvsScript(szName,szText,KviKvsScript::Parameter);
+
+ if(szIcon.isEmpty())
+ {
+ m_pKvsIcon = 0;
+ } else {
+ szName = "icon callback for ";
+ szName += szItemName;
+ m_pKvsIcon = new KviKvsScript(szName,szIcon,KviKvsScript::Parameter);
+ }
+}
+
+KviKvsPopupMenuItemWithTextAndIcon::KviKvsPopupMenuItemWithTextAndIcon(KviKvsPopupMenuItem::Type t,const QString &szItemName,const KviKvsScript * pText,const KviKvsScript * pIcon,const KviKvsScript * pCondition)
+: KviKvsPopupMenuItem(t,szItemName,pCondition)
+{
+ if(pText)
+ {
+ m_pKvsText = new KviKvsScript(*pText);
+ } else {
+ // hum.. this should never happen anyway
+ QString szName = "text callback for ";
+ szName += szItemName;
+ m_pKvsText = new KviKvsScript(szName,"",KviKvsScript::Parameter);
+ }
+
+ if(!pIcon)
+ {
+ m_pKvsIcon = 0;
+ } else {
+ m_pKvsIcon = new KviKvsScript(*pIcon);
+ }
+}
+
+
+KviKvsPopupMenuItemWithTextAndIcon::~KviKvsPopupMenuItemWithTextAndIcon()
+{
+ delete m_pKvsText;
+ if(m_pKvsIcon)delete m_pKvsIcon;
+}
+
+
+KviKvsScript * KviKvsPopupMenuItemWithTextAndIcon::kvsIcon()
+{
+ return m_pKvsIcon;
+}
+
+KviKvsScript * KviKvsPopupMenuItemWithTextAndIcon::kvsText()
+{
+ return m_pKvsText;
+}
+
+QPixmap * KviKvsPopupMenuItemWithTextAndIcon::evaluateIcon(KviKvsPopupMenuTopLevelData * pData)
+{
+ if(KVI_OPTION_BOOL(KviOption_boolDisablePopupIcons))return 0;
+ if(!m_pKvsIcon)return 0;
+
+ KviKvsVariant vRet;
+ if(!m_pKvsIcon->run(pData->window(),
+ pData->parameters(),
+ &vRet,
+ KviKvsScript::PreserveParams,
+ pData->extendedRunTimeData()))
+ {
+ // broken text
+ pData->window()->output(KVI_OUT_PARSERWARNING,__tr2qs("Broken icon parameter: ignoring"));
+ return 0;
+ }
+
+ QString szRet;
+ vRet.asString(szRet);
+
+ QPixmap * p = g_pIconManager->getImage(szRet);
+ if(!p)pData->window()->output(KVI_OUT_PARSERWARNING,__tr2qs("Can't find the icon \"%Q\": ignoring"),&szRet);
+ return p;
+}
+
+QString KviKvsPopupMenuItemWithTextAndIcon::evaluateText(KviKvsPopupMenuTopLevelData *pData)
+{
+ QString szRet;
+ if(!m_pKvsText)return szRet;
+ KviKvsVariant vRet;
+ if(!m_pKvsText->run(pData->window(),
+ pData->parameters(),
+ &vRet,
+ KviKvsScript::PreserveParams,
+ pData->extendedRunTimeData()))
+ {
+ // broken text
+ pData->window()->output(KVI_OUT_PARSERWARNING,__tr2qs("Broken text parameter: assuming empty string"));
+ return szRet;
+ }
+ vRet.asString(szRet);
+ return szRet;
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviKvsPopupMenuItemLabelHelper::KviKvsPopupMenuItemLabelHelper(KviKvsPopupMenuItemLabel * pItem)
+: QObject()
+{
+ m_pItem = pItem;
+}
+
+KviKvsPopupMenuItemLabelHelper::~KviKvsPopupMenuItemLabelHelper()
+{
+}
+
+void KviKvsPopupMenuItemLabelHelper::labelDestroyed()
+{
+ m_pItem->labelDestroyed();
+}
+
+KviKvsPopupMenuItemLabel::KviKvsPopupMenuItemLabel(const QString &szItemName,const QString &szText,const QString &szIcon,const QString &szCondition)
+: KviKvsPopupMenuItemWithTextAndIcon(KviKvsPopupMenuItem::Label,szItemName,szText,szIcon,szCondition)
+{
+ m_pLabel = 0;
+ m_pSignalRelay = new KviKvsPopupMenuItemLabelHelper(this);
+}
+
+KviKvsPopupMenuItemLabel::KviKvsPopupMenuItemLabel(const QString &szItemName,const KviKvsScript * pText,const KviKvsScript * pIcon,const KviKvsScript * pCondition)
+: KviKvsPopupMenuItemWithTextAndIcon(KviKvsPopupMenuItem::Label,szItemName,pText,pIcon,pCondition)
+{
+ m_pLabel = 0;
+ m_pSignalRelay = new KviKvsPopupMenuItemLabelHelper(this);
+}
+
+
+KviKvsPopupMenuItemLabel::~KviKvsPopupMenuItemLabel()
+{
+ if(m_pLabel)
+ {
+ QObject::disconnect(m_pLabel,SIGNAL(destroyed()),m_pSignalRelay,SLOT(labelDestroyed()));
+ delete m_pLabel;
+ }
+ delete m_pSignalRelay;
+}
+
+void KviKvsPopupMenuItemLabel::labelDestroyed()
+{
+ m_pLabel = 0; // someone (maybe qt, maybe us) has destroyed the label
+}
+
+
+KviKvsPopupMenuItem * KviKvsPopupMenuItemLabel::clone() const
+{
+ return new KviKvsPopupMenuItemLabel(m_szItemName,m_pKvsText,m_pKvsIcon,m_pKvsCondition);
+}
+
+void KviKvsPopupMenuItemLabel::clear()
+{
+ if(m_pLabel)
+ {
+ QObject::disconnect(m_pLabel,SIGNAL(destroyed()),m_pSignalRelay,SLOT(labelDestroyed()));
+ delete m_pLabel;
+ m_pLabel = 0;
+ }
+}
+
+void KviKvsPopupMenuItemLabel::fill(KviKvsPopupMenu * pMenu,KviKvsPopupMenuTopLevelData * pData,int iIdx)
+{
+ if(!evaluateCondition(pData))return;
+ QString szText = evaluateText(pData);
+ QPixmap * pPix = evaluateIcon(pData);
+ if(m_pLabel)
+ {
+ QObject::disconnect(m_pLabel,SIGNAL(destroyed()),m_pSignalRelay,SLOT(labelDestroyed()));
+ delete m_pLabel;
+ }
+ m_pLabel = new QLabel(szText,pMenu);
+ QObject::connect(m_pLabel,SIGNAL(destroyed()),m_pSignalRelay,SLOT(labelDestroyed()));
+#ifndef COMPILE_USE_QT4
+ // FIXME: QT4 Seems to not allow widgets as QMenu items
+ pMenu->insertItem(m_pLabel);
+#endif
+ m_pLabel->setFrameStyle(QFrame::StyledPanel | QFrame::Raised);
+ if(pPix)m_pLabel->setPixmap(*pPix);
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+KviKvsPopupMenuItemItem::KviKvsPopupMenuItemItem(const QString &szItemName,const QString &szCode,const QString &szText,const QString &szIcon,const QString &szCondition)
+: KviKvsPopupMenuItemWithTextAndIcon(KviKvsPopupMenuItem::Item,szItemName,szText,szIcon,szCondition)
+{
+ QString szName = "click callback for ";
+ szName += szItemName;
+ m_pKvsCode = new KviKvsScript(szName,szCode);
+}
+
+KviKvsPopupMenuItemItem::KviKvsPopupMenuItemItem(const QString &szItemName,const KviKvsScript * pCode,const KviKvsScript * pText,const KviKvsScript * pIcon,const KviKvsScript * pCondition)
+: KviKvsPopupMenuItemWithTextAndIcon(KviKvsPopupMenuItem::Item,szItemName,pText,pIcon,pCondition)
+{
+ m_pKvsCode = new KviKvsScript(*pCode);
+}
+
+
+KviKvsPopupMenuItemItem::~KviKvsPopupMenuItemItem()
+{
+ delete m_pKvsCode;
+}
+
+void KviKvsPopupMenuItemItem::fill(KviKvsPopupMenu * pMenu,KviKvsPopupMenuTopLevelData * pData,int iIdx)
+{
+ if(!evaluateCondition(pData))return;
+ QString szText = evaluateText(pData);
+ QPixmap * pPix = evaluateIcon(pData);
+ int id;
+ if(pPix)id = pMenu->insertItem(*pPix,szText);
+ else id = pMenu->insertItem(szText);
+ pMenu->setItemParameter(id,iIdx);
+}
+
+KviKvsPopupMenuItem * KviKvsPopupMenuItemItem::clone() const
+{
+ return new KviKvsPopupMenuItemItem(m_szItemName,m_pKvsCode,m_pKvsText,m_pKvsIcon,m_pKvsCondition);
+}
+
+KviKvsScript * KviKvsPopupMenuItemItem::kvsCode()
+{
+ return m_pKvsCode;
+}
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+KviKvsPopupMenuItemMenu::KviKvsPopupMenuItemMenu(const QString &szItemName,KviKvsPopupMenu * pMenu,const QString &szText,const QString &szIcon,const QString &szCondition)
+: KviKvsPopupMenuItemWithTextAndIcon(KviKvsPopupMenuItem::Menu,szItemName,szText,szIcon,szCondition)
+{
+ m_pMenu = pMenu;
+}
+
+KviKvsPopupMenuItemMenu::KviKvsPopupMenuItemMenu(const QString &szItemName,KviKvsPopupMenu * pMenu,const KviKvsScript * pText,const KviKvsScript * pIcon,const KviKvsScript * pCondition)
+: KviKvsPopupMenuItemWithTextAndIcon(KviKvsPopupMenuItem::Menu,szItemName,pText,pIcon,pCondition)
+{
+ m_pMenu = pMenu;
+}
+
+
+KviKvsPopupMenuItemMenu::~KviKvsPopupMenuItemMenu()
+{
+ delete m_pMenu;
+}
+
+KviKvsPopupMenuItem * KviKvsPopupMenuItemMenu::clone() const
+{
+ KviKvsPopupMenu * copy = new KviKvsPopupMenu(m_pMenu->name());
+ copy->copyFrom(m_pMenu);
+ return new KviKvsPopupMenuItemMenu(m_szItemName,copy,m_pKvsText,m_pKvsIcon,m_pKvsCondition);
+}
+
+
+void KviKvsPopupMenuItemMenu::fill(KviKvsPopupMenu * pMenu,KviKvsPopupMenuTopLevelData * pData,int iIdx)
+{
+ if(!evaluateCondition(pData))return;
+ QString szText = evaluateText(pData);
+ QPixmap * pPix = evaluateIcon(pData);
+ int id;
+ m_pMenu->setParentPopup(pMenu);
+ if(pPix)id = pMenu->insertItem(*pPix,szText,m_pMenu);
+ else id = pMenu->insertItem(szText,m_pMenu);
+ pMenu->setItemParameter(id,iIdx);
+}
+
+void KviKvsPopupMenuItemMenu::clear()
+{
+ m_pMenu->clearMenuContents();
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviKvsPopupMenuItemExtMenu::KviKvsPopupMenuItemExtMenu(const QString &szItemName,const QString &szMenuName,const QString &szText,const QString &szIcon,const QString &szCondition)
+: KviKvsPopupMenuItemWithTextAndIcon(KviKvsPopupMenuItem::ExtMenu,szItemName,szText,szIcon,szCondition)
+{
+ m_szMenuName = szMenuName;
+ if(m_szMenuName[0]=='"' && m_szMenuName[(int)(m_szMenuName.length()-1)]=='"')
+ {
+ m_szMenuName.remove(0,1);
+ m_szMenuName.remove(m_szMenuName.length()-1,1);
+ }
+ m_pMenu = 0;
+}
+
+KviKvsPopupMenuItemExtMenu::KviKvsPopupMenuItemExtMenu(const QString &szItemName,const QString &szMenuName,const KviKvsScript * pText,const KviKvsScript * pIcon,const KviKvsScript * pCondition)
+: KviKvsPopupMenuItemWithTextAndIcon(KviKvsPopupMenuItem::ExtMenu,szItemName,pText,pIcon,pCondition)
+{
+ m_szMenuName = szMenuName;
+ if(m_szMenuName[0]=='"' && m_szMenuName[(int)(m_szMenuName.length()-1)]=='"')
+ {
+ m_szMenuName.remove(0,1);
+ m_szMenuName.remove(m_szMenuName.length()-1,1);
+ }
+ m_pMenu = 0;
+}
+
+
+KviKvsPopupMenuItemExtMenu::~KviKvsPopupMenuItemExtMenu()
+{
+ if(m_pMenu)delete m_pMenu;
+}
+
+void KviKvsPopupMenuItemExtMenu::clear()
+{
+ if(m_pMenu)
+ {
+ delete m_pMenu;
+ m_pMenu = 0;
+ }
+}
+
+KviKvsPopupMenuItem * KviKvsPopupMenuItemExtMenu::clone() const
+{
+ return new KviKvsPopupMenuItemExtMenu(m_szItemName,m_szMenuName,m_pKvsText,m_pKvsIcon,m_pKvsCondition);
+}
+
+
+void KviKvsPopupMenuItemExtMenu::fill(KviKvsPopupMenu * pMenu,KviKvsPopupMenuTopLevelData * pData,int iIdx)
+{
+ if(!evaluateCondition(pData))return;
+ QString szText = evaluateText(pData);
+ QPixmap * pPix = evaluateIcon(pData);
+
+ KviKvsPopupMenu * source = KviKvsPopupManager::instance()->lookup(m_szMenuName);
+ if(source)
+ {
+ if(source->isLocked())
+ {
+ pData->window()->output(KVI_OUT_PARSERWARNING,__tr2qs("Recursive definition detected for popup '%Q': ignoring"),&(pMenu->popupName()));
+ return;
+ }
+ QString tmp;
+ KviQString::sprintf(tmp,"%Q.%Q",&(pMenu->popupName()),&m_szMenuName);
+ if(m_pMenu)delete m_pMenu;
+ m_pMenu = new KviKvsPopupMenu(tmp);
+ m_pMenu->copyFrom(source);
+ m_pMenu->setParentPopup(pMenu);
+ int id;
+ if(pPix)id = pMenu->insertItem(*pPix,szText,m_pMenu);
+ else id = pMenu->insertItem(szText,m_pMenu);
+ pMenu->setItemParameter(id,iIdx);
+ } else {
+ pData->window()->output(KVI_OUT_PARSERWARNING,__tr2qs("Can't find the external popup '%Q'; ignoring"),&m_szMenuName);
+ }
+}
+
+
+
+
+
+
+KviKvsPopupMenuTopLevelData::KviKvsPopupMenuTopLevelData(KviKvsVariantList * pParameters,KviWindow * pWindow)
+{
+ m_pExtendedRunTimeData = new KviKvsExtendedRunTimeData(new KviKvsHash(),TRUE);
+ m_pParameters = pParameters;
+ m_pWindow = pWindow;
+ m_bTestMode = false;
+ m_bLocked = false;
+}
+
+KviKvsPopupMenuTopLevelData::~KviKvsPopupMenuTopLevelData()
+{
+ delete m_pExtendedRunTimeData;
+ delete m_pParameters;
+}
+
+
+
+
+
+
+
+KviKvsPopupMenu::KviKvsPopupMenu(const QString &szName)
+:KviTalPopupMenu(0,szName)
+{
+ m_szName = szName;
+ m_pItemList = new KviPointerList<KviKvsPopupMenuItem>;
+ m_pItemList->setAutoDelete(true);
+ m_pPrologues = new KviPointerList<KviKvsScript>;
+ m_pPrologues->setAutoDelete(true);
+ m_pEpilogues = new KviPointerList<KviKvsScript>;
+ m_pEpilogues->setAutoDelete(true);
+ m_pParentPopup = 0;
+ m_pTopLevelData = 0;
+ m_pTempTopLevelData = 0;
+ m_bSetupDone = false;
+ connect(this,SIGNAL(activated(int)),this,SLOT(itemClicked(int)));
+ connect(this,SIGNAL(aboutToShow()),this,SLOT(setupMenuContents()));
+}
+
+
+KviKvsPopupMenu::~KviKvsPopupMenu()
+{
+ clearMenuContents();
+ delete m_pItemList;
+ delete m_pPrologues;
+ delete m_pEpilogues;
+ if(m_pTopLevelData)delete m_pTopLevelData;
+ if(m_pTempTopLevelData)delete m_pTempTopLevelData;
+}
+
+
+void KviKvsPopupMenu::copyFrom(const KviKvsPopupMenu * src)
+{
+ doClear();
+
+ for(KviKvsScript * se = src->m_pEpilogues->first();se;se = src->m_pEpilogues->next())
+ {
+ m_pEpilogues->append(new KviKvsScript(*se));
+ }
+
+ for(KviKvsScript * sp = src->m_pPrologues->first();sp;sp = src->m_pPrologues->next())
+ {
+ m_pPrologues->append(new KviKvsScript(*sp));
+ }
+
+
+ for(const KviKvsPopupMenuItem * it = src->m_pItemList->first();it;it = src->m_pItemList->next())
+ {
+ addItemInternal(it->clone());
+ }
+}
+
+void KviKvsPopupMenu::addPrologue(const QString &szItemName,const QString &szCode)
+{
+ // FIXME: translate this or not ?
+ QString szName = szItemName;
+ if(szName.isEmpty())
+ KviQString::sprintf(szName,"prologue_%u_for_%Q",m_pPrologues->count(),&m_szName);
+ m_pPrologues->append(new KviKvsScript(szName,szCode));
+}
+
+void KviKvsPopupMenu::addEpilogue(const QString &szItemName,const QString &szCode)
+{
+ // FIXME: translate this or not ?
+ QString szName = szItemName;
+ if(szName.isEmpty())
+ KviQString::sprintf(szName,"epilogue_%u_for_%Q",m_pPrologues->count(),&m_szName);
+ m_pEpilogues->append(new KviKvsScript(szName,szCode));
+}
+
+KviKvsPopupMenuTopLevelData * KviKvsPopupMenu::topLevelData()
+{
+ if(parentPopup())return parentPopup()->topLevelData();
+ return m_pTopLevelData;
+}
+
+bool KviKvsPopupMenu::removeItemByName(const QString &szItemName,bool bRecursive)
+{
+ KviKvsScript * se;
+
+ for(se = m_pEpilogues->first();se;se = m_pEpilogues->next())
+ {
+ if(KviQString::equalCI(szItemName,se->name()))
+ {
+ m_pEpilogues->removeRef(se);
+ return true;
+ }
+ }
+
+ for(se = m_pPrologues->first();se;se = m_pPrologues->next())
+ {
+ if(KviQString::equalCI(szItemName,se->name()))
+ {
+ m_pPrologues->removeRef(se);
+ return true;
+ }
+ }
+
+ for(KviKvsPopupMenuItem * it = m_pItemList->first();it;it = m_pItemList->next())
+ {
+ if(KviQString::equalCI(szItemName,it->name()))
+ {
+ m_pItemList->removeRef(it); // bye :)
+ return true;
+ }
+ }
+
+ if(bRecursive)
+ {
+ for(KviKvsPopupMenuItem * ii = m_pItemList->first();ii;ii = m_pItemList->next())
+ {
+ if(ii->isMenu())
+ {
+ if(((KviKvsPopupMenuItemMenu *)ii)->menu())
+ {
+ bool bRet = ((KviKvsPopupMenuItemMenu *)ii)->menu()->removeItemByName(szItemName,true);
+ if(bRet)return true;
+ }
+ }
+ }
+ }
+
+ return false;
+}
+
+bool KviKvsPopupMenu::isLocked()
+{
+ if(topLevelPopup()->isVisible())return true;
+ KviKvsPopupMenuTopLevelData * d = topLevelData();
+ return d ? d->isLocked() : false;
+}
+
+
+KviKvsPopupMenu * KviKvsPopupMenu::topLevelPopup()
+{
+ if(parentPopup())return parentPopup();
+ return this;
+}
+
+
+KviKvsPopupMenu * KviKvsPopupMenu::addPopup(const QString &szItemName,const QString &szText,const QString &szIcon,const QString &szCondition)
+{
+ QString szName = szItemName;
+ if(szName.isEmpty())
+ KviQString::sprintf(szName,"%Q.subpopup%d",&m_szName,m_pItemList->count());
+ KviKvsPopupMenu * pNew = new KviKvsPopupMenu(szName);
+ pNew->setParentPopup(this);
+ addItemInternal(new KviKvsPopupMenuItemMenu(szName,pNew,szText,szIcon,szCondition));
+ return pNew;
+}
+
+void KviKvsPopupMenu::addSeparator(const QString &szItemName,const QString &szCondition)
+{
+ QString szName = szItemName;
+ if(szName.isEmpty())
+ KviQString::sprintf(szName,"%Q.separator%d",&m_szName,m_pItemList->count());
+ addItemInternal(new KviKvsPopupMenuItemSeparator(szName,szCondition));
+}
+
+void KviKvsPopupMenu::addLabel(const QString &szItemName,const QString &szText,const QString &szIcon,const QString &szCondition)
+{
+ QString szName = szItemName;
+ if(szName.isEmpty())
+ KviQString::sprintf(szName,"%Q.label%d",&m_szName,m_pItemList->count());
+ addItemInternal(new KviKvsPopupMenuItemLabel(szName,szText,szIcon,szCondition));
+}
+
+void KviKvsPopupMenu::addItem(const QString &szItemName,const QString &szCode,const QString &szText,const QString &szIcon,const QString &szCondition)
+{
+ QString szName = szItemName;
+ if(szName.isEmpty())
+ KviQString::sprintf(szName,"%Q.item%d",&m_szName,m_pItemList->count());
+ addItemInternal(new KviKvsPopupMenuItemItem(szName,szCode,szText,szIcon,szCondition));
+
+}
+
+void KviKvsPopupMenu::addExtPopup(const QString &szItemName,const QString &szPopupName,const QString szText,const QString &szIcon,const QString &szCondition)
+{
+ QString szName = szItemName;
+ if(szName.isEmpty())
+ KviQString::sprintf(szName,"%Q.%Q",&m_szName,&szName);
+ addItemInternal(new KviKvsPopupMenuItemExtMenu(szName,szPopupName,szText,szIcon,szCondition));
+
+}
+
+void KviKvsPopupMenu::addItemInternal(KviKvsPopupMenuItem * it)
+{
+ if(isLocked())debug("Ooops... KviKvsPopupMenu is locked in ::addItem()");
+ m_pItemList->append(it);
+}
+
+void KviKvsPopupMenu::doPopup(const QPoint & pnt,KviWindow * wnd,KviKvsVariantList * pParams,bool bTestMode)
+{
+ // This might be a compat problem later :(((((
+ // it is also an ugly trick
+ clearMenuContents();
+ m_pTempTopLevelData = new KviKvsPopupMenuTopLevelData(pParams,wnd);
+ m_pTempTopLevelData->setTestMode(bTestMode);
+ KviTalPopupMenu::popup(pnt);
+}
+
+void KviKvsPopupMenu::clearMenuContents()
+{
+ m_bSetupDone = false;
+
+ clear();
+
+ for(KviKvsPopupMenuItem * it = m_pItemList->first();it;it = m_pItemList->next())
+ {
+ it->clear();
+ }
+
+ if(m_pTopLevelData)
+ {
+ delete m_pTopLevelData;
+ m_pTopLevelData = 0;
+ }
+ if(m_pTempTopLevelData)
+ {
+ delete m_pTempTopLevelData;
+ m_pTempTopLevelData = 0;
+ }
+}
+
+void KviKvsPopupMenu::doClear()
+{
+ clear();
+ if(m_pTopLevelData)
+ {
+ delete m_pTopLevelData;
+ m_pTopLevelData = 0;
+ }
+ if(m_pTempTopLevelData)
+ {
+ delete m_pTempTopLevelData;
+ m_pTempTopLevelData = 0;
+ }
+ m_bSetupDone = false;
+ m_pItemList->clear();
+
+ m_pPrologues->clear();
+ m_pEpilogues->clear();
+}
+
+
+void KviKvsPopupMenu::lock(bool bLock)
+{
+ KviKvsPopupMenuTopLevelData * d = topLevelData();
+ if(!d)return;
+ d->setLocked(bLock);
+}
+
+
+void KviKvsPopupMenu::setupMenuContents()
+{
+ // This might be a compat problem later :((((
+ if(parentPopup() == 0)
+ {
+ if(m_pTempTopLevelData == 0)
+ {
+ // We have been called by a KviMenuBar!
+ // m_bSetupDone is not valid here
+ clearMenuContents();
+ m_pTopLevelData = new KviKvsPopupMenuTopLevelData(new KviKvsVariantList(),g_pActiveWindow);
+ } else {
+ if(m_bSetupDone)return;
+ // we have been called by doPopup
+ // the menu contents have been already cleared
+ if(m_pTopLevelData)debug("Ops.. something got messed in KviKvsPopupMenu activation system");
+ // Swap the top level data from temporary to the permanent
+ m_pTopLevelData = m_pTempTopLevelData;
+ m_pTempTopLevelData = 0;
+ }
+ } else {
+ if(m_bSetupDone)return;
+ }
+
+ m_bSetupDone = true;
+
+
+ // HACK...this is to remove the separator inserted by Qt when popup() is called and the popup is empty
+ clear();
+
+ KviKvsPopupMenuTopLevelData * d = topLevelData();
+ if(!d)
+ {
+ debug("Ops...menu contents changed behind my back!");
+ return;
+ }
+
+
+ lock(true);
+
+
+ if(!g_pApp->windowExists(d->window()))d->setWindow(g_pApp->activeConsole());
+
+ if(!d->testMode())
+ executePrologues(d);
+
+ // Fill this menu contents
+ int idx = 0;
+ for(KviKvsPopupMenuItem * it = m_pItemList->first();it;it = m_pItemList->next())
+ {
+ it->fill(this,d,idx);
+ ++idx;
+ }
+
+ if(!d->testMode())
+ executeEpilogues(d);
+
+ lock(false);
+
+}
+
+void KviKvsPopupMenu::executePrologues(KviKvsPopupMenuTopLevelData * pData)
+{
+ for(KviKvsScript * s = m_pPrologues->first();s;s = m_pPrologues->next())
+ {
+ if(!s->run(pData->window(),
+ pData->parameters(),
+ 0,
+ KviKvsScript::PreserveParams,
+ pData->extendedRunTimeData()))
+ {
+ pData->window()->output(KVI_OUT_PARSERWARNING,__tr2qs("Broken prologue in popup menu '%Q': ignoring"),&m_szName);
+ }
+ }
+}
+
+void KviKvsPopupMenu::executeEpilogues(KviKvsPopupMenuTopLevelData * pData)
+{
+ for(KviKvsScript * s = m_pEpilogues->first();s;s = m_pEpilogues->next())
+ {
+ if(!s->run(pData->window(),
+ pData->parameters(),
+ 0,
+ KviKvsScript::PreserveParams,
+ pData->extendedRunTimeData()))
+ {
+ pData->window()->output(KVI_OUT_PARSERWARNING,__tr2qs("Broken epilogue in popup menu '%Q': ignoring"),&m_szName);
+ }
+ }
+}
+
+
+void KviKvsPopupMenu::itemClicked(int itemId)
+{
+ int param = itemParameter(itemId);
+ KviKvsPopupMenuItem * it = m_pItemList->at(param);
+ KviKvsPopupMenuTopLevelData * d = topLevelData();
+ if(it && d)
+ {
+ if(it->isItem())
+ {
+ if(d->testMode())
+ {
+ emit testModeItemClicked(it);
+ } else {
+ // rebind if window is lost
+ if(!g_pApp->windowExists(d->window()))d->setWindow(g_pApp->activeConsole());
+ // FIXME: we could avoid locking since scripts can be shared now!
+ // see KviKvsTimerManager implementation
+ lock(true);
+ ((KviKvsPopupMenuItemItem *)it)->kvsCode()->run(
+ d->window(),
+ d->parameters(),
+ 0,
+ KviKvsScript::PreserveParams,
+ d->extendedRunTimeData());
+ // FIXME: should we print somethng if run() returns false ?
+ lock(false);
+ }
+ } else debug("oops....clicked something that is not an item at position %d",param);
+ // FIXME: #warning "Maybe tell that the window has changed"
+ } else debug("oops....no menu item at position %d",param);
+ // UGLY Qt 3.0.0.... we can't clear menu contents here :(
+//#if QT_VERSION < 300
+// topLevelPopup()->clearMenuContents();
+//#endif
+}
+
+
+void KviKvsPopupMenu::load(const QString &prefix,KviConfig * cfg)
+{
+ doClear();
+
+ int cnt;
+ int idx;
+
+ QString tmp = prefix;
+ tmp.append("_PrologueCount");
+
+ cnt = cfg->readIntEntry(tmp,0);
+
+ if(cnt > 0)
+ {
+ for(idx = 0;idx < cnt;idx++)
+ {
+ KviQString::sprintf(tmp,"%Q_Prologue%d",&(prefix),idx);
+ QString pr = cfg->readQStringEntry(tmp,"");
+ KviQString::sprintf(tmp,"%Q_PrologueId%d",&(prefix),idx);
+ QString itemName = cfg->readQStringEntry(tmp,"");
+ if(!pr.isEmpty())addPrologue(itemName,pr);
+ }
+ } else {
+ // Might be old version!
+ KviQString::sprintf(tmp,"%Q_Prologue",&(prefix));
+ QString pr = cfg->readQStringEntry(tmp,"");
+ if(!pr.isEmpty())addPrologue(QString::null,pr);
+ }
+
+ KviQString::sprintf(tmp,"%Q_EpilogueCount",&prefix);
+ cnt = cfg->readIntEntry(tmp,0);
+
+ if(cnt > 0)
+ {
+ for(idx = 0;idx < cnt;idx++)
+ {
+ KviQString::sprintf(tmp,"%Q_Epilogue%d",&prefix,idx);
+ QString ep = cfg->readQStringEntry(tmp,"");
+ KviQString::sprintf(tmp,"%Q_PrologueId%d",&(prefix),idx);
+ QString itemName = cfg->readQStringEntry(tmp,"");
+ if(!ep.isEmpty())addEpilogue(itemName,ep);
+ }
+ } else {
+ // Might be old version!
+ KviQString::sprintf(tmp,"%Q_Epilogue",&prefix);
+ QString ep = cfg->readQStringEntry(tmp,"");
+ if(!ep.isEmpty())addEpilogue(QString::null,ep);
+ }
+
+
+ KviQString::sprintf(tmp,"%Q_Count",&prefix);
+
+ cnt = cfg->readIntEntry(tmp,0);
+
+ for(idx = 0;idx < cnt;idx++)
+ {
+ QString pre;
+ KviQString::sprintf(pre,"%Q_%d",&prefix,idx);
+
+ KviQString::sprintf(tmp,"%Q_Id",&pre);
+ QString itemName = cfg->readQStringEntry(tmp,QString::null);
+ KviQString::sprintf(tmp,"%Q_Type",&pre);
+
+ int type = cfg->readIntEntry(tmp,3);
+ switch(type)
+ {
+ case 0: // separator
+ {
+ QString expr;
+ KviQString::sprintf(tmp,"%Q_Expr",&pre);
+ expr = cfg->readQStringEntry(tmp,"");
+ addSeparator(itemName,expr);
+ }
+ break;
+ case 1: // item
+ {
+ QString text,icon,code,expr;
+ KviQString::sprintf(tmp,"%Q_Text",&pre);
+ text = cfg->readQStringEntry(tmp,"Unnamed");
+ KviQString::sprintf(tmp,"%Q_Icon",&pre);
+ icon = cfg->readQStringEntry(tmp,"");
+ KviQString::sprintf(tmp,"%Q_Code",&pre);
+ code = cfg->readQStringEntry(tmp,"");
+ KviQString::sprintf(tmp,"%Q_Expr",&pre);
+ expr = cfg->readQStringEntry(tmp,"");
+ addItem(itemName,code,text,icon,expr);
+ }
+ break;
+ case 2: // menu
+ {
+ QString text,icon,expr;
+ KviQString::sprintf(tmp,"%Q_Text",&pre);
+ text = cfg->readQStringEntry(tmp,"Unnamed");
+ KviQString::sprintf(tmp,"%Q_Icon",&pre);
+ icon = cfg->readQStringEntry(tmp,"");
+ KviQString::sprintf(tmp,"%Q_Expr",&pre);
+ expr = cfg->readQStringEntry(tmp,"");
+ KviKvsPopupMenu * pop = addPopup(itemName,text,icon,expr);
+ pop->load(pre,cfg);
+ }
+ break;
+ case 3: // label
+ {
+ QString text,icon,expr;
+ KviQString::sprintf(tmp,"%Q_Text",&pre);
+ text = cfg->readQStringEntry(tmp,"Unnamed");
+ KviQString::sprintf(tmp,"%Q_Icon",&pre);
+ icon = cfg->readQStringEntry(tmp,"");
+ KviQString::sprintf(tmp,"%Q_Expr",&pre);
+ expr = cfg->readQStringEntry(tmp,"");
+ addLabel(itemName,text,icon,expr);
+ }
+ break;
+ case 4: // extmenu
+ {
+ QString text,icon,code,expr;
+ KviQString::sprintf(tmp,"%Q_Text",&pre);
+ text = cfg->readQStringEntry(tmp,"Unnamed");
+ KviQString::sprintf(tmp,"%Q_Icon",&pre);
+ icon = cfg->readQStringEntry(tmp,"");
+ KviQString::sprintf(tmp,"%Q_ExtName",&pre);
+ code = cfg->readQStringEntry(tmp,"");
+ KviQString::sprintf(tmp,"%Q_Expr",&pre);
+ expr = cfg->readQStringEntry(tmp,"");
+ addExtPopup(itemName,code,text,icon,expr);
+ }
+ break;
+ default: // ignore
+ break;
+ }
+ }
+
+}
+
+// FIXME: #warning "NOBODY EDITS THE POPUPS IN THE CONFIG!...A binary config would be faster and work better for sure here"
+
+void KviKvsPopupMenu::save(const QString & prefix,KviConfig * cfg)
+{
+ int idx;
+
+ KviKvsScript * s;
+ QString tmp;
+
+ KviQString::sprintf(tmp,"%Q_PrologueCount",&prefix);
+ cfg->writeEntry(tmp,m_pPrologues->count());
+
+ idx = 0;
+ for(s = m_pPrologues->first();s;s = m_pPrologues->next())
+ {
+ KviQString::sprintf(tmp,"%Q_Prologue%d",&prefix,idx);
+ cfg->writeEntry(tmp,s->code());
+ KviQString::sprintf(tmp,"%Q_PrologueId%d",&prefix,idx);
+ cfg->writeEntry(tmp,s->name());
+ idx++;
+ }
+
+ KviQString::sprintf(tmp,"%Q_EpilogueCount",&prefix);
+ cfg->writeEntry(tmp,m_pEpilogues->count());
+
+ idx = 0;
+ for(s = m_pEpilogues->first();s;s = m_pEpilogues->next())
+ {
+ KviQString::sprintf(tmp,"%Q_Epilogue%d",&prefix,idx);
+ cfg->writeEntry(tmp,s->code());
+ KviQString::sprintf(tmp,"%Q_EpilogueId%d",&prefix,idx);
+ cfg->writeEntry(tmp,s->name());
+ idx++;
+ }
+
+ KviQString::sprintf(tmp,"%Q_Count",&prefix);
+ cfg->writeEntry(tmp,m_pItemList->count());
+ idx = 0;
+
+
+ for(KviKvsPopupMenuItem * it = m_pItemList->first();it;it = m_pItemList->next())
+ {
+ QString pre;
+ KviQString::sprintf(pre,"%Q_%d",&prefix,idx);
+ KviQString::sprintf(tmp,"%Q_Type",&pre);
+ int typeCode = 0;
+ switch(it->type())
+ {
+ case KviKvsPopupMenuItem::Label: typeCode = 3; break;
+ case KviKvsPopupMenuItem::Separator: typeCode = 0; break;
+ case KviKvsPopupMenuItem::Menu: typeCode = 2; break;
+ case KviKvsPopupMenuItem::Item: typeCode = 1; break;
+ case KviKvsPopupMenuItem::ExtMenu: typeCode = 4; break;
+ }
+
+ cfg->writeEntry(tmp,typeCode);
+
+ KviQString::sprintf(tmp,"%Q_Id",&pre);
+ cfg->writeEntry(tmp,it->name());
+
+ s = it->kvsCondition();
+ if(s)
+ {
+ KviQString::sprintf(tmp,"%Q_Expr",&pre);
+ cfg->writeEntry(tmp,s->code());
+ }
+
+ s = it->kvsIcon();
+ if(s)
+ {
+ KviQString::sprintf(tmp,"%Q_Icon",&pre);
+ cfg->writeEntry(tmp,s->code());
+ }
+
+ s = it->kvsText();
+ if(s)
+ {
+ KviQString::sprintf(tmp,"%Q_Text",&pre);
+ cfg->writeEntry(tmp,s->code());
+ }
+
+ s = it->kvsCode();
+ if(s)
+ {
+ KviQString::sprintf(tmp,"%Q_Code",&pre);
+ cfg->writeEntry(tmp,s->code());
+ }
+
+ if(it->isMenu())
+ {
+ ((KviKvsPopupMenuItemMenu *)it)->menu()->save(pre,cfg);
+ } else if(it->isExtMenu())
+ {
+ KviQString::sprintf(tmp,"%Q_ExtName",&pre);
+ cfg->writeEntry(tmp,((KviKvsPopupMenuItemExtMenu *)it)->extName());
+ }
+
+ ++idx;
+ }
+}
+
+void KviKvsPopupMenu::generateDefPopupCore(QString &buffer)
+{
+
+ QString tmp;
+
+ buffer = "";
+
+ KviKvsScript * s;
+
+ for(s = m_pPrologues->first();s;s = m_pPrologues->next())
+ {
+ buffer.append("prologue\n");
+ tmp = s->code();
+ tmp.stripWhiteSpace();
+ KviCommandFormatter::blockFromBuffer(tmp);
+ buffer.append(tmp);
+ buffer.append('\n');
+ }
+
+ for(KviKvsPopupMenuItem * it = m_pItemList->first();it;it = m_pItemList->next())
+ {
+ switch(it->type())
+ {
+ case KviKvsPopupMenuItem::Item:
+ if(it->kvsIcon())KviQString::appendFormatted(buffer,"item(%Q,%Q)",&(it->kvsText()->code()),&(it->kvsIcon()->code()));
+ else KviQString::appendFormatted(buffer,"item(%Q)",&(it->kvsText()->code()));
+ if(it->kvsCondition())KviQString::appendFormatted(buffer," (%Q)",&(it->kvsCondition()->code()));
+ buffer.append("\n");
+ tmp = it->kvsCode()->code();
+ KviCommandFormatter::blockFromBuffer(tmp);
+ buffer.append(tmp);
+ buffer.append("\n");
+ break;
+ case KviKvsPopupMenuItem::Menu:
+ if(it->kvsIcon())KviQString::appendFormatted(buffer,"popup(%Q,%Q)",&(it->kvsText()->code()),&(it->kvsIcon()->code()));
+ else KviQString::appendFormatted(buffer,"popup(%Q)",&(it->kvsText()->code()));
+ if(it->kvsCondition())KviQString::appendFormatted(buffer," (%Q)",&(it->kvsCondition()->code()));
+ buffer.append("\n");
+ ((KviKvsPopupMenuItemMenu *)it)->menu()->generateDefPopupCore(tmp);
+ KviCommandFormatter::blockFromBuffer(tmp);
+ buffer.append(tmp);
+ buffer.append("\n");
+ break;
+ case KviKvsPopupMenuItem::Separator:
+ if(it->kvsCondition())KviQString::appendFormatted(buffer,"separator(%Q)\n\n",&(it->kvsCondition()->code()));
+ else buffer.append("separator\n\n");
+ break;
+ case KviKvsPopupMenuItem::Label:
+ if(it->kvsIcon())KviQString::appendFormatted(buffer,"label(%Q,%Q)",&(it->kvsText()->code()),&(it->kvsIcon()->code()));
+ else KviQString::appendFormatted(buffer,"label(%Q)",&(it->kvsText()->code()));
+ if(it->kvsCondition())KviQString::appendFormatted(buffer," (%Q)",&(it->kvsCondition()->code()));
+ buffer.append("\n\n");
+ break;
+ case KviKvsPopupMenuItem::ExtMenu:
+ if(it->kvsIcon())KviQString::appendFormatted(buffer,"extpopup(%Q,%Q,%Q)",&(it->kvsText()->code()),&(((KviKvsPopupMenuItemExtMenu *)it)->extName()),&(it->kvsIcon()->code()));
+ else KviQString::appendFormatted(buffer,"extpopup(%Q)",&(it->kvsText()->code()));
+ if(it->kvsCondition())KviQString::appendFormatted(buffer," (%Q)",&(it->kvsCondition()->code()));
+ buffer.append("\n\n");
+ break;
+ }
+ }
+
+ for(s = m_pEpilogues->first();s;s = m_pEpilogues->next())
+ {
+ buffer.append("epilogue\n");
+ tmp = s->code();
+ tmp.stripWhiteSpace();
+ KviCommandFormatter::blockFromBuffer(tmp);
+ buffer.append(tmp);
+ buffer.append('\n');
+ }
+
+}
+
+void KviKvsPopupMenu::generateDefPopup(QString &buffer)
+{
+ KviQString::sprintf(buffer,"defpopup(%s)\n",name());
+ QString core;
+
+ generateDefPopupCore(core);
+ KviCommandFormatter::blockFromBuffer(core);
+ buffer.append(core);
+}
+
+
+
+
+
+
diff --git a/src/kvirc/kvs/kvi_kvs_popupmenu.h b/src/kvirc/kvs/kvi_kvs_popupmenu.h
new file mode 100644
index 00000000..e658495a
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_popupmenu.h
@@ -0,0 +1,300 @@
+#ifndef _KVI_KVS_POPUPMENU_H_
+#define _KVI_KVS_POPUPMENU_H_
+//=============================================================================
+//
+// File : kvi_kvs_popupmenu.h
+// Created on Wed 07 Jan 2004 05:02:57 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_window.h"
+#include "kvi_kvs_hash.h"
+#include "kvi_kvs_variantlist.h"
+#include "kvi_kvs_script.h"
+#include "kvi_kvs_runtimecontext.h"
+
+#include "kvi_tal_popupmenu.h"
+#include <qlabel.h>
+#include <qpixmap.h>
+
+class KviKvsPopupMenu;
+
+class KVIRC_API KviKvsPopupMenuTopLevelData
+{
+ friend class KviKvsPopupMenu;
+public:
+ KviKvsPopupMenuTopLevelData(KviKvsVariantList * pParameters,KviWindow * pWindow);
+ ~KviKvsPopupMenuTopLevelData();
+protected:
+ KviKvsExtendedRunTimeData * m_pExtendedRunTimeData;
+ KviKvsVariantList * m_pParameters;
+ KviWindow * m_pWindow;
+ bool m_bLocked;
+ bool m_bTestMode;
+public:
+ KviKvsExtendedRunTimeData * extendedRunTimeData(){ return m_pExtendedRunTimeData; };
+ //KviKvsHash * extScopeVariables(){ return m_pExtScopeVariables; };
+ KviKvsVariantList * parameters(){ return m_pParameters; };
+ bool isLocked(){ return m_bLocked; };
+ void setLocked(bool bLocked){ m_bLocked = bLocked; };
+ KviWindow * window(){ return m_pWindow; };
+ void setWindow(KviWindow * pWindow){ m_pWindow = pWindow; };
+ bool testMode(){ return m_bTestMode; };
+ void setTestMode(bool bTestMode){ m_bTestMode = bTestMode; };
+};
+
+
+class KVIRC_API KviKvsPopupMenuItem
+{
+ friend class KviKvsPopupMenu;
+public:
+ enum Type { Item , Menu , Label , Separator , ExtMenu };
+protected:
+ KviKvsPopupMenuItem(Type t,const QString &szItemName,const QString &szCondition);
+ KviKvsPopupMenuItem(Type t,const QString &szItemName,const KviKvsScript * pCondition);
+public:
+ virtual ~KviKvsPopupMenuItem();
+protected:
+ QString m_szItemName;
+ Type m_eType;
+ KviKvsScript * m_pKvsCondition;
+public:
+ // this doesn't trigger errors, only warnings
+ bool evaluateCondition(KviKvsPopupMenuTopLevelData * pData);
+
+ KviKvsPopupMenuItem::Type type(){ return m_eType; };
+
+ const QString & name(){ return m_szItemName; };
+
+ bool isItem(){ return m_eType == Item; };
+ bool isSeparator(){ return m_eType == Separator; };
+ bool isLabel(){ return m_eType == Label; };
+ bool isExtMenu(){ return m_eType == ExtMenu; };
+ bool isMenu(){ return m_eType == Menu; };
+
+ KviKvsScript * kvsCondition(){ return m_pKvsCondition; };
+ virtual KviKvsScript * kvsIcon();
+ virtual KviKvsScript * kvsText();
+ virtual KviKvsScript * kvsCode();
+
+
+ virtual void fill(KviKvsPopupMenu * pMenu,KviKvsPopupMenuTopLevelData * pData,int iIdx) = 0;
+ virtual void clear();
+ virtual KviKvsPopupMenuItem * clone() const = 0;
+};
+
+
+class KVIRC_API KviKvsPopupMenuItemSeparator : public KviKvsPopupMenuItem
+{
+ friend class KviKvsPopupMenu;
+protected:
+ KviKvsPopupMenuItemSeparator(const QString &szItemName,const QString &szCondition);
+ KviKvsPopupMenuItemSeparator(const QString &szItemName,const KviKvsScript * pCondition);
+public:
+ virtual ~KviKvsPopupMenuItemSeparator();
+public:
+ virtual void fill(KviKvsPopupMenu * pMenu,KviKvsPopupMenuTopLevelData * pData,int iIdx);
+ virtual KviKvsPopupMenuItem * clone() const;
+};
+
+
+class KVIRC_API KviKvsPopupMenuItemWithTextAndIcon : public KviKvsPopupMenuItem
+{
+protected:
+ KviKvsPopupMenuItemWithTextAndIcon(KviKvsPopupMenuItem::Type t,const QString &szItemName,const QString &szText,const QString &szIcon,const QString &szCondition);
+ KviKvsPopupMenuItemWithTextAndIcon(KviKvsPopupMenuItem::Type t,const QString &szItemName,const KviKvsScript * pText,const KviKvsScript * pIcon,const KviKvsScript * pCondition);
+public:
+ virtual ~KviKvsPopupMenuItemWithTextAndIcon();
+protected:
+ KviKvsScript * m_pKvsText;
+ KviKvsScript * m_pKvsIcon;
+public:
+ virtual KviKvsScript * kvsIcon();
+ virtual KviKvsScript * kvsText();
+ // this just returns a string , eventually empty
+ QString evaluateText(KviKvsPopupMenuTopLevelData * pData);
+ // this just returns the icon , eventually
+ QPixmap * evaluateIcon(KviKvsPopupMenuTopLevelData * pData);
+};
+
+class KviKvsPopupMenuItemLabel;
+
+// this acts as signal relay
+class KVIRC_API KviKvsPopupMenuItemLabelHelper : public QObject
+{
+ Q_OBJECT
+ friend class KviKvsPopupMenuItemLabel;
+protected:
+ KviKvsPopupMenuItemLabelHelper(KviKvsPopupMenuItemLabel * pItem);
+ ~KviKvsPopupMenuItemLabelHelper();
+protected:
+ KviKvsPopupMenuItemLabel * m_pItem;
+protected slots:
+ void labelDestroyed();
+};
+
+class KVIRC_API KviKvsPopupMenuItemLabel : public KviKvsPopupMenuItemWithTextAndIcon
+{
+ friend class KviKvsPopupMenuItemLabelHelper;
+ friend class KviKvsPopupMenu;
+protected:
+ KviKvsPopupMenuItemLabel(const QString &szItemName,const QString &szText,const QString &szIcon,const QString &szCondition);
+ KviKvsPopupMenuItemLabel(const QString &szItemName,const KviKvsScript * pText,const KviKvsScript * pIcon,const KviKvsScript * pCondition);
+public:
+ virtual ~KviKvsPopupMenuItemLabel();
+protected:
+ QLabel * m_pLabel;
+ KviKvsPopupMenuItemLabelHelper * m_pSignalRelay;
+public:
+ virtual void fill(KviKvsPopupMenu * pMenu,KviKvsPopupMenuTopLevelData * pData,int iIdx);
+ virtual KviKvsPopupMenuItem * clone() const;
+ virtual void clear();
+protected:
+ void labelDestroyed();
+};
+
+
+class KVIRC_API KviKvsPopupMenuItemItem : public KviKvsPopupMenuItemWithTextAndIcon
+{
+ friend class KviKvsPopupMenu;
+protected:
+ KviKvsPopupMenuItemItem(const QString &szItemName,const QString &szCode,const QString &szText,const QString &szIcon,const QString &szCondition);
+ KviKvsPopupMenuItemItem(const QString &szItemName,const KviKvsScript * pCode,const KviKvsScript * pText,const KviKvsScript * pIcon,const KviKvsScript * pCondition);
+public:
+ virtual ~KviKvsPopupMenuItemItem();
+protected:
+ KviKvsScript * m_pKvsCode;
+protected:
+ virtual KviKvsScript * kvsCode();
+public:
+ virtual void fill(KviKvsPopupMenu * pMenu,KviKvsPopupMenuTopLevelData * pData,int iIdx);
+ virtual KviKvsPopupMenuItem * clone() const;
+};
+
+class KVIRC_API KviKvsPopupMenuItemMenu : public KviKvsPopupMenuItemWithTextAndIcon
+{
+ friend class KviKvsPopupMenu;
+protected:
+ KviKvsPopupMenuItemMenu(const QString &szItemName,KviKvsPopupMenu * pMenu,const QString &szText,const QString &szIcon,const QString &szCondition);
+ KviKvsPopupMenuItemMenu(const QString &szItemName,KviKvsPopupMenu * pMenu,const KviKvsScript * pText,const KviKvsScript * pIcon,const KviKvsScript * pCondition);
+public:
+ virtual ~KviKvsPopupMenuItemMenu();
+protected:
+ KviKvsPopupMenu * m_pMenu;
+public:
+ KviKvsPopupMenu * menu(){ return m_pMenu; };
+ virtual void fill(KviKvsPopupMenu * pMenu,KviKvsPopupMenuTopLevelData * pData,int iIdx);
+ virtual void clear();
+ virtual KviKvsPopupMenuItem * clone() const;
+};
+
+class KVIRC_API KviKvsPopupMenuItemExtMenu : public KviKvsPopupMenuItemWithTextAndIcon
+{
+ friend class KviKvsPopupMenu;
+protected:
+ KviKvsPopupMenuItemExtMenu(const QString &szItemName,const QString &szMenuName,const QString &szText,const QString &szIcon,const QString &szCondition);
+ KviKvsPopupMenuItemExtMenu(const QString &szItemName,const QString &szMenuName,const KviKvsScript * pText,const KviKvsScript * pIcon,const KviKvsScript * pCondition);
+public:
+ virtual ~KviKvsPopupMenuItemExtMenu();
+protected:
+ QString m_szMenuName;
+ KviKvsPopupMenu * m_pMenu; // owned!
+public:
+ const QString & extName(){ return m_szMenuName; };
+ virtual void fill(KviKvsPopupMenu * pMenu,KviKvsPopupMenuTopLevelData * pData,int iIdx);
+ virtual void clear();
+ virtual KviKvsPopupMenuItem * clone() const;
+};
+
+
+
+
+
+
+
+
+
+
+
+class KVIRC_API KviKvsPopupMenu : public KviTalPopupMenu
+{
+ friend class KviKvsPopupMenuItemMenu;
+ friend class KviKvsPopupManager;
+ friend class KviSinglePopupEditor;
+ Q_OBJECT
+public:
+ KviKvsPopupMenu(const QString &szName);
+ ~KviKvsPopupMenu();
+protected:
+ KviPointerList<KviKvsPopupMenuItem> * m_pItemList;
+private:
+ QString m_szName;
+ KviKvsPopupMenu * m_pParentPopup;
+ KviPointerList<KviKvsScript> * m_pPrologues;
+ KviPointerList<KviKvsScript> * m_pEpilogues;
+ KviKvsPopupMenuTopLevelData * m_pTopLevelData;
+ // this is a temporary used to hack-in the activation from KviMenuBar
+ KviKvsPopupMenuTopLevelData * m_pTempTopLevelData;
+ bool m_bSetupDone;
+public:
+ const QString & popupName(){ return m_szName; };
+ void setPopupName(const QString &szName){ m_szName = szName; };
+ void copyFrom(const KviKvsPopupMenu * src);
+ KviKvsPopupMenuTopLevelData * topLevelData();
+ KviKvsPopupMenu * topLevelPopup();
+ bool isLocked();
+ void lock(bool bLock);
+ KviKvsPopupMenu * addPopup(const QString &szItemName,const QString &szText,const QString &szIcon,const QString &szCondition);
+ void addSeparator(const QString &szItemName,const QString &szCondition);
+ void addLabel(const QString &szItemName,const QString &szText,const QString &szIcon,const QString &szCondition);
+ void addItem(const QString &szItemName,const QString &szCode,const QString &szText,const QString &szIcon,const QString &szCondition);
+ void addExtPopup(const QString &szItemName,const QString &szPopupName,const QString szText,const QString &szIcon,const QString &szCondition);
+ void doPopup(const QPoint & pnt,KviWindow * wnd,KviKvsVariantList * pParams,bool bTestMode = false);
+ bool isEmpty(){ return m_pItemList->isEmpty() && m_pPrologues->isEmpty() && m_pEpilogues->isEmpty(); };
+ void doClear();
+ void addPrologue(const QString &szItemName,const QString &szCode);
+ void addEpilogue(const QString &szItemName,const QString &szCode);
+ bool removeItemByName(const QString &szItemName,bool bRecursive);
+ KviPointerList<KviKvsScript> * epilogues(){ return m_pEpilogues; };
+ KviPointerList<KviKvsScript> * prologues(){ return m_pPrologues; };
+ KviKvsPopupMenu * parentPopup(){ return m_pParentPopup; };
+ void generateDefPopup(QString &buffer);
+ void setParentPopup(KviKvsPopupMenu * par){ m_pParentPopup = par; };
+ void generateDefPopupCore(QString &buffer);
+protected:
+ void addItemInternal(KviKvsPopupMenuItem * it);
+ void executePrologues(KviKvsPopupMenuTopLevelData * pData);
+ void executeEpilogues(KviKvsPopupMenuTopLevelData * pData);
+ void load(const QString &prefix,KviConfig * cfg);
+ void save(const QString &prefix,KviConfig * cfg);
+private slots:
+ void setupMenuContents();
+protected:
+ void clearMenuContents();
+protected slots:
+ void itemClicked(int itemId);
+signals:
+ void testModeItemClicked(KviKvsPopupMenuItem * it);
+};
+
+
+#endif //!_KVI_KVS_POPUPMENU_H_
diff --git a/src/kvirc/kvs/kvi_kvs_processmanager.cpp b/src/kvirc/kvs/kvi_kvs_processmanager.cpp
new file mode 100644
index 00000000..2c397c55
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_processmanager.cpp
@@ -0,0 +1,376 @@
+//=============================================================================
+//
+// File : kvi_kvs_processmanager.cpp
+// Created on Wed 07 Apr 2004 03:03:52 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004-2007 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_processmanager.h"
+#include "kvi_window.h"
+#include "kvi_out.h"
+#include "kvi_locale.h"
+#include "kvi_parameterlist.h"
+#include "kvi_app.h"
+#include "kvi_console.h"
+#include "kvi_kvs_script.h"
+//#include <QSysInfo>
+
+KviKvsProcessAsyncOperation::KviKvsProcessAsyncOperation(KviKvsProcessDescriptorData * d)
+: KviKvsAsyncOperation(d->pWnd)
+{
+ m_pData = d;
+ m_pProcess = 0;
+ m_pExtendedRunTimeData = new KviKvsExtendedRunTimeData(new KviKvsHash(),TRUE);
+ m_pPingTimer = 0;
+ m_pRunTimeTimer = 0;
+ m_bDeletePending = false;
+}
+
+KviKvsProcessAsyncOperation::~KviKvsProcessAsyncOperation()
+{
+ if(m_pPingTimer)delete m_pPingTimer;
+ if(m_pRunTimeTimer)delete m_pRunTimeTimer;
+ if(m_pProcess)
+ {
+ QObject::disconnect(m_pProcess,0,this,0);
+ m_pProcess->kill();
+ delete m_pProcess;
+ }
+ delete m_pExtendedRunTimeData;
+ if(m_pData->pCallback)delete m_pData->pCallback;
+ if(m_pData->pMagic)delete m_pData->pMagic;
+ delete m_pData;
+}
+
+bool KviKvsProcessAsyncOperation::start()
+{
+ QStringList args;
+
+ if(m_pData->iFlags & KVI_KVS_PROCESSDESCRIPTOR_NOSHELL)
+ {
+ args = QStringList::split(" ",m_pData->szCommandline);
+ } else {
+ QString szShell = m_pData->szShell;
+ if(szShell.isEmpty())
+ {
+#ifdef COMPILE_ON_WINDOWS
+ // [01:26:00] <PragmaOff> btw, what is qt_winunicode ?
+ // [01:26:12] <kode54> Qt export specific to win32
+ // [01:26:27] <kode54> bool which indicates whether system is Unicode (NT) or not
+ // [01:26:58] <kode54> not sure if that's documented, but it is a public export
+ //
+ // [02:50:21] <kode54> if ( QApplication::winVersion() & Qt::WV_NT_based )
+ // [02:50:41] <kode54> I see another implementation using that, maybe it is the official way of detecting that :[
+#ifdef COMPILE_USE_QT4
+ szShell = !(QSysInfo::WindowsVersion & QSysInfo::WV_DOS_based) ? "cmd.exe /c" : "command.com /c";
+#else
+ szShell = "command.com /c";
+#endif
+
+ // Thnx kode54 :)
+#else
+ szShell = "sh -c";
+#endif
+ }
+ args = QStringList::split(" ",szShell);
+ args.append(m_pData->szCommandline);
+ }
+
+ m_pProcess = new KviProcess(args);
+ int c = KviProcess::Stdin;
+
+ if(m_pData->iFlags & KVI_KVS_PROCESSDESCRIPTOR_TRIGGERSTDOUT)
+ {
+ connect(m_pProcess,SIGNAL(readyReadStdout()),this,SLOT(readStdout()));
+ c |= KviProcess::Stdout;
+ }
+
+ if(m_pData->iFlags & KVI_KVS_PROCESSDESCRIPTOR_TRIGGERSTDERR)
+ {
+ connect(m_pProcess,SIGNAL(readyReadStderr()),this,SLOT(readStderr()));
+ c |= KviProcess::Stderr;
+ }
+
+ m_pProcess->setCommunication(c);
+
+ connect(m_pProcess,SIGNAL(processExited()),this,SLOT(processExited()));
+
+ if(!m_pProcess->start())
+ {
+ return false;
+ }
+
+ if(m_pData->iFlags & KVI_KVS_PROCESSDESCRIPTOR_TRIGGERSTARTED)
+ {
+ QString szPid;
+ szPid.setNum((int)(m_pProcess->processIdentifier()));
+ if(trigger(EventStarted,szPid))
+ {
+ triggerSelfDelete();
+ return true;
+ }
+ }
+
+ if(m_pData->iMaxRunTime > 0)
+ {
+ m_pRunTimeTimer = new QTimer(this);
+ connect(m_pRunTimeTimer,SIGNAL(timeout()),this,SLOT(maxRunTimeExpired()));
+ m_pRunTimeTimer->start(m_pData->iMaxRunTime);
+ }
+
+ if(m_pData->iPingTimeout > 0)
+ {
+ m_pPingTimer = new QTimer(this);
+ connect(m_pPingTimer,SIGNAL(timeout()),this,SLOT(ping()));
+ m_pPingTimer->start(m_pData->iPingTimeout);
+ }
+
+ return true;
+}
+
+void KviKvsProcessAsyncOperation::ping()
+{
+ if(trigger(EventPing,QString::null))
+ {
+ triggerSelfDelete();
+ }
+}
+
+void KviKvsProcessAsyncOperation::triggerSelfDelete()
+{
+ if(m_bDeletePending)return;
+ m_bDeletePending = true;
+ QTimer::singleShot(m_pData->iMaxRunTime,this,SLOT(selfDelete()));
+}
+
+void KviKvsProcessAsyncOperation::selfDelete()
+{
+ delete this;
+}
+
+void KviKvsProcessAsyncOperation::maxRunTimeExpired()
+{
+ trigger(EventTerminated,"0");
+ triggerSelfDelete();
+}
+
+bool KviKvsProcessAsyncOperation::trigger(CallbackEvent e,const QString &szData)
+{
+ if(m_bDeletePending)return false;
+
+ if(!g_pApp->windowExists(m_pData->pWnd))
+ {
+ if(m_pData->iFlags & KVI_KVS_PROCESSDESCRIPTOR_KILLIFNOWINDOW)
+ {
+ return true;
+ }
+ m_pData->pWnd = g_pApp->activeConsole();
+ }
+
+ if(m_pData->pCallback)
+ {
+ KviKvsVariantList params;
+ params.setAutoDelete(true);
+
+ switch(e)
+ {
+ case EventStdout:
+ params.append(new KviKvsVariant(QString("stdout")));
+ break;
+ case EventStderr:
+ params.append(new KviKvsVariant(QString("stderr")));
+ break;
+ case EventTerminated:
+ params.append(new KviKvsVariant(QString("terminated")));
+ break;
+ case EventStarted:
+ params.append(new KviKvsVariant(QString("started")));
+ break;
+ case EventPing:
+ params.append(new KviKvsVariant(QString("ping")));
+ break;
+ default:
+ debug("Ops... unknown trigger() CallbackEvent parameter in KviProcessDescriptor::trigger()");
+ return false;
+ break;
+ }
+
+ params.append(new KviKvsVariant(szData));
+ if (m_pData->pMagic) params.append(m_pData->pMagic);
+
+ KviKvsVariant retVal;
+ int iRet = m_pData->pCallback->run(m_pData->pWnd,&params,&retVal,KviKvsScript::PreserveParams,m_pExtendedRunTimeData);
+ if(!iRet)
+ {
+ m_pData->pWnd->output(KVI_OUT_PARSERERROR,
+ __tr2qs("Error triggered from process callback handler: killing process"));
+ return true;
+ }
+
+ if(!retVal.isNothing())
+ {
+ QString sz;
+ retVal.asString(sz);
+ m_pProcess->writeToStdin(sz);
+ }
+
+ if(iRet & KviKvsScript::HaltEncountered)
+ {
+ // halt encountered: kill the process
+ return true;
+ }
+ }
+
+ return false;
+}
+
+void KviKvsProcessAsyncOperation::readStdout()
+{
+ if(m_bDeletePending)return;
+ if(m_pData->iFlags & KVI_KVS_PROCESSDESCRIPTOR_OUTPUTBYBLOCKS)
+ {
+ QByteArray a = m_pProcess->readStdout();
+ if(a.size() > 0)
+ m_szStdoutBuffer += QString(a);
+ } else {
+ QString l = m_pProcess->readLineStdout();
+ bool bBreak = false;
+ while((!l.isNull()) && (!bBreak))
+ {
+ if(m_pData->iFlags & KVI_KVS_PROCESSDESCRIPTOR_TRIGGERSTDOUT)
+ {
+ if(trigger(EventStdout,l))
+ {
+ bBreak = true;
+ triggerSelfDelete();
+ }
+ }
+
+ l = m_pProcess->readLineStdout();
+ }
+ }
+}
+
+void KviKvsProcessAsyncOperation::readStderr()
+{
+ if(m_bDeletePending)return;
+ if(m_pData->iFlags & KVI_KVS_PROCESSDESCRIPTOR_OUTPUTBYBLOCKS)
+ {
+ QByteArray a = m_pProcess->readStderr();
+ if(a.size() > 0)
+ m_szStderrBuffer += QString(a);
+ } else {
+ QString l = m_pProcess->readLineStderr();
+ bool bBreak = false;
+ while((!l.isNull()) && (!bBreak))
+ {
+ if(m_pData->iFlags & KVI_KVS_PROCESSDESCRIPTOR_TRIGGERSTDERR)
+ {
+ if(trigger(EventStderr,l))
+ {
+ bBreak = true;
+ triggerSelfDelete();
+ }
+ }
+
+ l = m_pProcess->readLineStderr();
+ }
+ }
+}
+
+
+void KviKvsProcessAsyncOperation::processExited()
+{
+ if(m_bDeletePending)return;
+
+ readStdout(); // just to make sure
+ readStderr(); // just to make sure
+
+ if(m_pData->iFlags & KVI_KVS_PROCESSDESCRIPTOR_OUTPUTBYBLOCKS)
+ {
+ // trigger Stdout and Stderr once
+ if(m_pData->iFlags & KVI_KVS_PROCESSDESCRIPTOR_TRIGGERSTDOUT)
+ {
+ if(trigger(EventStdout,m_szStdoutBuffer))
+ {
+ triggerSelfDelete();
+ return;
+ }
+ }
+
+ if(m_pData->iFlags & KVI_KVS_PROCESSDESCRIPTOR_TRIGGERSTDERR)
+ {
+ if(trigger(EventStdout,m_szStderrBuffer))
+ {
+ triggerSelfDelete();
+ return;
+ }
+ }
+ }
+
+ if(m_pData->iFlags & KVI_KVS_PROCESSDESCRIPTOR_TRIGGERTERMINATED)
+ {
+ QString szRetVal;
+ szRetVal.setNum(m_pProcess->exitStatus());
+ trigger(EventTerminated,szRetVal);
+ }
+
+ triggerSelfDelete();
+}
+
+
+/*
+
+KviKvsProcessManager::KviKvsProcessManager()
+: QObject()
+{
+}
+
+KviKvsProcessManager::~KviKvsProcessManager()
+{
+}
+
+void KviKvsProcessManager::init()
+{
+ if(m_pInstance)return;
+ m_pInstance = new KviProcessManager();
+}
+
+void KviKvsProcessManager::done()
+{
+ if(!m_pInstance)return;
+ delete m_pInstance;
+ m_pInstance = 0;
+}
+
+bool KviKvsProcessManager::execute(KviKvsProcessAsyncOperationData * d)
+{
+ KviKvsProcessAsyncOperation * pd = new KviKvsProcessAsyncOperation(d,this);
+ if(!pd->start())
+ {
+ //delete d; <-- delete by KviKvsProcessAsyncOperation
+ delete pd;
+ return false;
+ }
+ return true;
+}
+*/
diff --git a/src/kvirc/kvs/kvi_kvs_processmanager.h b/src/kvirc/kvs/kvi_kvs_processmanager.h
new file mode 100644
index 00000000..50e52ace
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_processmanager.h
@@ -0,0 +1,105 @@
+#ifndef _KVI_KVS_PROCESSMANAGER_H_
+#define _KVI_KVS_PROCESSMANAGER_H_
+//=============================================================================
+//
+// File : kvi_kvs_processmanager.h
+// Created on Wed 07 Apr 2004 03:03:52 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004-2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_kvs_asyncoperation.h"
+#include "kvi_qstring.h"
+#include "kvi_window.h"
+#include "kvi_kvs_variant.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_kvs_variant.h"
+
+#include "kvi_pointerhashtable.h"
+
+#ifdef Unsorted
+ #undef Unsorted
+#endif
+
+#include "kvi_process.h"
+
+#include <qtimer.h>
+
+#define KVI_KVS_PROCESSDESCRIPTOR_TRIGGERSTDOUT 1
+#define KVI_KVS_PROCESSDESCRIPTOR_TRIGGERSTDERR 2
+#define KVI_KVS_PROCESSDESCRIPTOR_TRIGGERTERMINATED 4
+#define KVI_KVS_PROCESSDESCRIPTOR_OUTPUTBYBLOCKS 8
+#define KVI_KVS_PROCESSDESCRIPTOR_TRIGGERSTARTED 16
+#define KVI_KVS_PROCESSDESCRIPTOR_NOSHELL 32
+#define KVI_KVS_PROCESSDESCRIPTOR_KILLIFNOWINDOW 64
+
+
+class KviWindow;
+class KviKvsScript;
+class KviKvsVariant;
+
+typedef struct _KviKvsProcessDescriptorData
+{
+ QString szShell;
+ QString szCommandline;
+ KviKvsScript * pCallback;
+ KviKvsVariant * pMagic;
+ KviWindow * pWnd;
+ int iFlags;
+ int iMaxRunTime; // 0 for no timeout
+ int iPingTimeout; // 0 for no ping timeout
+} KviKvsProcessDescriptorData;
+
+class KviKvsProcessManager;
+
+class KVIRC_API KviKvsProcessAsyncOperation : public KviKvsAsyncOperation
+{
+ friend class KviKvsProcessManager;
+ Q_OBJECT
+public:
+ KviKvsProcessAsyncOperation(KviKvsProcessDescriptorData * d);
+ ~KviKvsProcessAsyncOperation();
+protected:
+ enum CallbackEvent { EventStarted,EventTerminated,EventStdout,EventStderr,EventPing };
+private:
+ KviProcess * m_pProcess;
+ KviKvsExtendedRunTimeData * m_pExtendedRunTimeData;
+ QString m_szStdoutBuffer;
+ QString m_szStderrBuffer;
+ KviKvsProcessDescriptorData * m_pData;
+ QTimer * m_pPingTimer;
+ QTimer * m_pRunTimeTimer;
+ bool m_bDeletePending;
+public:
+ bool start();
+private slots:
+ void maxRunTimeExpired();
+ void ping();
+ void readStdout();
+ void readStderr();
+ void processExited();
+ void selfDelete();
+private:
+ bool trigger(CallbackEvent e,const QString &szData);
+ void triggerSelfDelete();
+};
+
+
+#endif //!_KVI_KVS_PROCESSMANAGER_H_
diff --git a/src/kvirc/kvs/kvi_kvs_report.cpp b/src/kvirc/kvs/kvi_kvs_report.cpp
new file mode 100644
index 00000000..ea05ba39
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_report.cpp
@@ -0,0 +1,262 @@
+//=============================================================================
+//
+// File : kvi_kvs_report.cpp
+// Creation date : Thu 25 Sep 2003 05.12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_report.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_window.h"
+#include "kvi_out.h"
+#include "kvi_app.h"
+#include "kvi_locale.h"
+#include "kvi_debugwindow.h"
+#include "kvi_options.h"
+
+KviKvsReport::KviKvsReport(Type t,const QString &szContext,const QString &szMessage,const QString &szLocation,KviWindow * pWindow)
+: m_eType(t), m_szContext(szContext), m_szMessage(szMessage), m_szLocation(szLocation), m_pWindow(pWindow)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pCallStack = 0;
+ m_pCodeListing = 0;
+#endif
+}
+
+KviKvsReport::~KviKvsReport()
+{
+#ifdef COMPILE_NEW_KVS
+ if(m_pCallStack)delete m_pCallStack;
+ if(m_pCodeListing)delete m_pCodeListing;
+#endif
+}
+
+void KviKvsReport::findLineAndCol(const QChar * pBegin,const QChar * pPoint,int &iLine,int &iCol)
+{
+#ifdef COMPILE_NEW_KVS
+ iLine = 1;
+
+ const QChar * pBufferBegin = pBegin;
+
+ const QChar * pPrevLine = 0;
+ const QChar * pLineBegin = pBegin;
+
+ unsigned short us = pBegin->unicode();
+
+ while(us && (pBegin < pPoint))
+ {
+ if(us == '\n')
+ {
+ pPrevLine = pLineBegin;
+ pBegin++;
+ pLineBegin = pBegin;
+ iLine++;
+ } else {
+ pBegin++;
+ }
+ us = pBegin->unicode();
+ }
+
+ iCol = (pBegin - pLineBegin) + 1;
+#endif
+}
+
+
+
+void KviKvsReport::findLineColAndListing(const QChar * pBegin,const QChar * pPoint,int &iLine,int &iCol,KviPointerList<QString> * pListing)
+{
+#ifdef COMPILE_NEW_KVS
+ iLine = 1;
+
+ const QChar * pBufferBegin = pBegin;
+
+ const QChar * pPrevLine = 0;
+ const QChar * pLineBegin = pBegin;
+
+ unsigned short us = pBegin->unicode();
+
+ while(us && (pBegin < pPoint))
+ {
+ if(us == '\n')
+ {
+ pPrevLine = pLineBegin;
+ pBegin++;
+ pLineBegin = pBegin;
+ iLine++;
+ } else {
+ pBegin++;
+ }
+ us = pBegin->unicode();
+ }
+
+ iCol = (pBegin - pLineBegin) + 1;
+
+ // previous line
+ if(pPrevLine)
+ {
+ // there would be yet another line before
+ if(pPrevLine > pBufferBegin)
+ {
+ QString * pListingStrZ = new QString();
+ KviQString::sprintf(*pListingStrZ,"%d ...",iLine - 2);
+ pListing->append(pListingStrZ);
+ }
+
+ QString * pListingStr = new QString();
+ KviQString::sprintf(*pListingStr,"%d ",iLine - 1);
+ *pListingStr += QString(pPrevLine,pLineBegin - pPrevLine);
+ pListingStr->replace("\n","");
+ pListing->append(pListingStr);
+ }
+
+ // current line
+ pBegin = pLineBegin;
+
+ us = pBegin->unicode();
+ while(us && (us != '\n'))
+ {
+ pBegin++;
+ us = pBegin->unicode();
+ }
+ if(us)pBegin++;
+
+ {
+ QString * pListingStr = new QString();
+ KviQString::sprintf(*pListingStr,"%c%d ",KVI_TEXT_BOLD,iLine);
+ *pListingStr += QString(pLineBegin,pBegin - pLineBegin);
+ pListingStr->replace("\n","");
+ pListing->append(pListingStr);
+ }
+
+ if(us)
+ {
+ // next line
+ pLineBegin = pBegin;
+
+ us = pBegin->unicode();
+ while(us && (us != '\n'))
+ {
+ pBegin++;
+ us = pBegin->unicode();
+ }
+ if(us)pBegin++;
+
+ {
+ QString * pListingStr = new QString();
+ KviQString::sprintf(*pListingStr,"%d ",iLine + 1);
+ *pListingStr += QString(pLineBegin,pBegin - pLineBegin);
+ pListingStr->replace("\n","");
+ pListing->append(pListingStr);
+ }
+
+ // there would be yet another line
+ if(us)
+ {
+ QString * pListingStr = new QString();
+ KviQString::sprintf(*pListingStr,"%d ...",iLine + 2);
+ pListing->append(pListingStr);
+ }
+ }
+#endif
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// ERROR REPORTING
+
+void KviKvsReport::report(KviKvsReport * r,KviWindow * pOutput)
+{
+#ifdef COMPILE_NEW_KVS
+ if(!pOutput)return; // ?
+ if(!g_pApp->windowExists(pOutput))
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolScriptErrorsToDebugWindow))
+ {
+ // rethrow to the debug window
+ report(r,KviDebugWindow::getInstance());
+ } // else window lost: unrecoverable
+ return;
+ }
+
+ // make sure that the output window still exists!
+
+ int out;
+
+ switch(r->type())
+ {
+ case KviKvsReport::ParserWarning:
+ out = KVI_OUT_PARSERWARNING;
+ pOutput->output(out,__tr2qs("[KVS]%c Warning: %Q"),KVI_TEXT_BOLD,&(r->message()));
+ break;
+ case KviKvsReport::ParserError:
+ out = KVI_OUT_PARSERERROR;
+ pOutput->output(out,__tr2qs("[KVS]%c Compilation Error: %Q"),KVI_TEXT_BOLD,&(r->message()));
+ break;
+ case KviKvsReport::RunTimeWarning:
+ out = KVI_OUT_PARSERWARNING;
+ pOutput->output(out,__tr2qs("[KVS]%c Warning: %Q"),KVI_TEXT_BOLD,&(r->message()));
+ break;
+ case KviKvsReport::RunTimeError:
+ out = KVI_OUT_PARSERERROR;
+ pOutput->output(out,__tr2qs("[KVS]%c Runtime Error: %Q"),KVI_TEXT_BOLD,&(r->message()));
+ break;
+ }
+
+ if(r->location().isEmpty())
+ pOutput->output(out,__tr2qs("[KVS] in script context \"%Q\""),&(r->context()));
+ else
+ pOutput->output(out,__tr2qs("[KVS] in script context \"%Q\", %Q"),&(r->context()),&(r->location()));
+
+ if(pOutput == KviDebugWindow::instance())
+ {
+ KviPointerList<QString> * l;
+ if(l = r->codeListing())
+ {
+ pOutput->outputNoFmt(out,__tr2qs("[KVS] Code listing:"));
+ for(QString * s = l->first();s;s = l->next())
+ pOutput->output(out,"[KVS] %Q",s);
+ }
+
+ pOutput->output(out,__tr2qs("[KVS] Window:"));
+ if(g_pApp->windowExists(r->window()))
+ pOutput->output(out,"[KVS] %Q [id: %u]",&(r->window()->windowName()),r->window()->numericId());
+ else
+ pOutput->output(out,__tr2qs("[KVS] Destroyed window with pointer %x"),r->window());
+
+ if(l = r->callStack())
+ {
+ pOutput->outputNoFmt(out,__tr2qs("[KVS] Call stack:"));
+ for(QString * s = l->first();s;s = l->next())
+ pOutput->output(out,"[KVS] %Q",s);
+ }
+
+ pOutput->outputNoFmt(out,"[KVS]");
+ } else {
+ if(KVI_OPTION_BOOL(KviOption_boolScriptErrorsToDebugWindow))
+ {
+ // rethrow to the debug window
+ if(pOutput != KviDebugWindow::getInstance())
+ report(r,KviDebugWindow::getInstance());
+ }
+ }
+#endif
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_report.h b/src/kvirc/kvs/kvi_kvs_report.h
new file mode 100644
index 00000000..335733e0
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_report.h
@@ -0,0 +1,75 @@
+#ifndef _KVI_KVS_REPORT_H_
+#define _KVI_KVS_REPORT_H_
+//=============================================================================
+//
+// File : kvi_kvs_report.h
+// Creation date : Thu 25 Sep 2003 05.12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_pointerlist.h"
+
+class KviWindow;
+
+class KVIRC_API KviKvsReport
+{
+public:
+ enum Type { RunTimeError, RunTimeWarning, ParserError, ParserWarning };
+public:
+ KviKvsReport(Type t,const QString &szContext,const QString &szMessage,const QString &szLocation,KviWindow * pWindow);
+ ~KviKvsReport();
+protected:
+ Type m_eType;
+
+ // mandatory
+ QString m_szContext; // context name (script name, usually)
+ QString m_szMessage; // report message, always present
+ QString m_szLocation; // line and col description (may be some thing like "at end of input")
+
+ KviWindow * m_pWindow; // the window that the script was attacched to
+
+ // optional
+ KviPointerList<QString> * m_pCodeListing; // code listing, if present, it is owned
+ KviPointerList<QString> * m_pCallStack; // call stack, if present, it is owned
+public:
+ Type type() const { return m_eType; };
+
+ KviWindow * window(){ return m_pWindow; };
+ const QString & context(){ return m_szContext; };
+ const QString & message(){ return m_szMessage; };
+ const QString & location(){ return m_szLocation; };
+ KviPointerList<QString> * codeListing(){ return m_pCodeListing; };
+ KviPointerList<QString> * callStack(){ return m_pCallStack; };
+
+ void setContext(const QString &szContext){ m_szContext = szContext; };
+ void setMessage(const QString &szMessage){ m_szMessage = szMessage; };
+ void setLocation(const QString &szLocation){ m_szLocation = szLocation; };
+ void setCodeListing(KviPointerList<QString> * pListing){ m_pCodeListing = pListing; };
+ void setCallStack(KviPointerList<QString> * pStack){ m_pCallStack = pStack; };
+
+ static void findLineAndCol(const QChar * pBegin,const QChar * pPoint,int &iLine,int &iCol);
+ static void findLineColAndListing(const QChar * pBegin,const QChar * pPoint,int &iLine,int &iCol,KviPointerList<QString> * pListing);
+
+ static void report(KviKvsReport * r,KviWindow * pOutput);
+};
+
+#endif //!_KVI_KVS_REPORT_H_
diff --git a/src/kvirc/kvs/kvi_kvs_runtimecall.cpp b/src/kvirc/kvs/kvi_kvs_runtimecall.cpp
new file mode 100644
index 00000000..faae03ad
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_runtimecall.cpp
@@ -0,0 +1,50 @@
+//=============================================================================
+//
+// File : kvi_kvs_runtimecall.cpp
+// Created on Sat 23 Apr 2005 18:19:38 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_runtimecall.h"
+
+
+void KviKvsRunTimeCall::warning(const QString &szFmt,...)
+{
+ kvi_va_list va;
+ kvi_va_start_by_reference(va,szFmt);
+ m_pContext->report(false,m_pContext->defaultReportLocation(),szFmt,va);
+ kvi_va_end(va);
+}
+
+bool KviKvsRunTimeCall::error(const QString &szFmt,...)
+{
+ kvi_va_list va;
+ kvi_va_start_by_reference(va,szFmt);
+ m_pContext->report(true,m_pContext->defaultReportLocation(),szFmt,va);
+ kvi_va_end(va);
+ return false;
+}
+
+bool KviKvsRunTimeCall::getParameterCode(unsigned int /*uParamIdx*/,QString & /*szParamBuffer*/)
+{
+ return false;
+}
diff --git a/src/kvirc/kvs/kvi_kvs_runtimecall.h b/src/kvirc/kvs/kvi_kvs_runtimecall.h
new file mode 100644
index 00000000..3ead6c3e
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_runtimecall.h
@@ -0,0 +1,82 @@
+#ifndef _KVI_KVS_RUNTIMECALL_H_
+#define _KVI_KVS_RUNTIMECALL_H_
+//=============================================================================
+//
+// File : kvi_kvs_runtimecall.h
+// Created on Sat 23 Apr 2005 18:19:38 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_kvs_variantlist.h"
+#include "kvi_kvs_variant.h"
+#include "kvi_window.h"
+
+
+class KVIRC_API KviKvsRunTimeCall
+{
+protected:
+ KviKvsRunTimeContext * m_pContext; // shallow
+ KviKvsVariantList * m_pParams; // shallow
+public:
+ KviKvsRunTimeCall(KviKvsRunTimeContext * pContext,KviKvsVariantList * pParams)
+ : m_pContext(pContext),m_pParams(pParams){};
+ virtual ~KviKvsRunTimeCall(){};
+public:
+ // the script runtime context, never zero
+ KviKvsRunTimeContext * context(){ return m_pContext; };
+
+ KviWindow * window(){ return m_pContext->window(); };
+
+ // parameter list access & helpers.. almost unused
+ // because of the KVSM_PARAMETER macros
+ KviKvsVariantList * parameterList(){ return m_pParams; };
+ KviKvsVariantList * params(){ return m_pParams; }; // the short version
+ unsigned int paramCount(){ return m_pParams->count(); };
+ unsigned int parameterCount(){ return m_pParams->count(); };
+ KviKvsVariant * firstParam(){ return m_pParams->first(); };
+ KviKvsVariant * nextParam(){ return m_pParams->next(); };
+
+ // This is virtual and returns false by default
+ // only few derived classes allow the parameter code to be
+ // extracted. This is mainly useful in module callback commands
+ // where a special parsing routine can not be implemented
+ // but parameter code is needed for later evaluation. (see /addon.register for example)
+ // Returns false if the parameter code cannot be extracted and true otherwise.
+ virtual bool getParameterCode(unsigned int uParamIdx,QString &szParamBuffer);
+
+ // forwarders from the context
+ // this MUST be called before any blocking call that might return to the main event loop
+ // and eventually quit kvirc or close the window that this command is associated to
+ // Actually this is a NO-OP but later may really do something that avoids kvirc to crash
+ void enterBlockingSection(){ m_pContext->enterBlockingSection(); };
+ // this MUST be called after exiting the blocking section above
+ // if this function returns false your parsing code MUST "return false" immediately:
+ // it means that something rather critical happened and the script
+ // execution cannot continue
+ bool leaveBlockingSection(){ return m_pContext->leaveBlockingSection(); };
+
+ // forwarders for context: they ease the porting
+ void warning(const QString &szFmt,...);
+ bool error(const QString &szFmt,...); // this ALWAYS returns false
+};
+
+#endif //!_KVI_KVS_RUNTIMECALL_H_
diff --git a/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp b/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp
new file mode 100644
index 00000000..47916f9f
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_runtimecontext.cpp
@@ -0,0 +1,206 @@
+//=============================================================================
+//
+// File : kvi_kvs_runtimecontext.cpp
+// Created on Tue 07 Oct 2003 01:49:40 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_kvs_script.h"
+#include "kvi_kvs_kernel.h"
+#include "kvi_kvs_report.h"
+#include "kvi_console.h"
+#include "kvi_kvs_treenode_base.h"
+#include "kvi_locale.h"
+#include "kvi_app.h"
+#include "kvi_kvs_object.h"
+
+KviKvsExtendedRunTimeData::~KviKvsExtendedRunTimeData()
+{
+ if(m_bAutoDelete)
+ {
+ if(m_pExtendedScopeVariables) delete m_pExtendedScopeVariables;
+ if(m_pAliasSwitchList) delete m_pAliasSwitchList;
+ if(m_pThisObject) delete m_pThisObject;
+ if(m_pScriptFilePath) delete m_pScriptFilePath;
+ }
+}
+
+KviKvsRunTimeContext::KviKvsRunTimeContext(KviKvsScript * pScript,KviWindow * pWnd,KviKvsVariantList * pParams,KviKvsVariant * pRetVal,KviKvsExtendedRunTimeData * pExtData)
+{
+ m_bError = false;
+ m_pScript = pScript;
+ m_pParameterList = pParams;
+ m_pWindow = pWnd;
+ m_pLocalVariables = new KviKvsHash();
+ m_pReturnValue = pRetVal;
+ m_uRunTimeFlags = 0;
+ m_pExtendedData = pExtData;
+ m_pDefaultReportLocation = 0;
+}
+
+KviKvsRunTimeContext::~KviKvsRunTimeContext()
+{
+ delete m_pLocalVariables;
+}
+
+KviKvsHash * KviKvsRunTimeContext::globalVariables()
+{
+ return KviKvsKernel::instance()->globalVariables();
+}
+
+void KviKvsRunTimeContext::enterBlockingSection()
+{
+ // actually a NO-OP
+}
+
+bool KviKvsRunTimeContext::leaveBlockingSection()
+{
+ if(g_pApp->closingDown())return false; // application quitting
+ if(!g_pApp->windowExists(m_pWindow))return false; // window lost
+ return true;
+}
+
+KviKvsVariant * KviKvsRunTimeContext::swapReturnValuePointer(KviKvsVariant * pNewPointer)
+{
+ KviKvsVariant * pAux = m_pReturnValue;
+ m_pReturnValue = pNewPointer;
+ return pAux;
+}
+
+void KviKvsRunTimeContext::report(bool bError,KviKvsTreeNode * pNode,const QString &szMsgFmt,kvi_va_list va)
+{
+ QString szMsg;
+ KviQString::vsprintf(szMsg,szMsgFmt,va);
+
+ KviPointerList<QString> * pCodeListing = 0;
+ KviPointerList<QString> * pCallStack = 0;
+ QString szLocation;
+
+ if(pNode)
+ {
+ if(pNode->location() && m_pScript)
+ {
+ pCodeListing = new KviPointerList<QString>;
+ pCodeListing->setAutoDelete(true);
+
+ int iLine,iCol;
+
+ KviKvsReport::findLineColAndListing(m_pScript->buffer(),pNode->location(),iLine,iCol,pCodeListing);
+
+ KviQString::sprintf(szLocation,__tr2qs("line %d, near character %d"),iLine,iCol);
+ }
+
+ // create the call stack
+ int iFrame = 0;
+
+ pCallStack = new KviPointerList<QString>;
+ pCallStack->setAutoDelete(true);
+
+ while(pNode && (iFrame < 12))
+ {
+ QString * pString = new QString();
+ QString szTmp;
+ pNode->contextDescription(szTmp);
+ KviQString::sprintf(*pString,"#%d %Q",iFrame,&szTmp);
+ if(pNode->location())
+ {
+ int iLine,iCol;
+ KviKvsReport::findLineAndCol(m_pScript->buffer(),pNode->location(),iLine,iCol);
+ QString tmpi;
+ KviQString::sprintf(tmpi," [line %d, near character %d]",iLine,iCol);
+ *pString += tmpi;
+ }
+ pCallStack->append(pString);
+ iFrame++;
+ pNode = pNode->parent();
+ }
+ if(pNode)
+ pCallStack->append(new QString("#12 ..."));
+ }
+
+ QString szContext = m_pScript ? m_pScript->name() : "kvirc core code";
+ KviKvsReport rep(bError ? KviKvsReport::RunTimeError : KviKvsReport::RunTimeWarning,szContext,szMsg,szLocation,m_pWindow);
+ if(pCodeListing)rep.setCodeListing(pCodeListing);
+ if(pCallStack)rep.setCallStack(pCallStack);
+
+ KviKvsReport::report(&rep,m_pWindow);
+}
+
+void KviKvsRunTimeContext::error(KviKvsTreeNode * pNode,const QString &szMsgFmt,...)
+{
+ m_bError = true;
+
+ kvi_va_list va;
+ kvi_va_start_by_reference(va,szMsgFmt);
+ report(true,pNode,szMsgFmt,va);
+ kvi_va_end(va);
+}
+
+void KviKvsRunTimeContext::warning(KviKvsTreeNode * pNode,const QString &szMsgFmt,...)
+{
+ kvi_va_list va;
+ kvi_va_start_by_reference(va,szMsgFmt);
+ report(false,pNode,szMsgFmt,va);
+ kvi_va_end(va);
+}
+
+void KviKvsRunTimeContext::error(const QString &szMsgFmt,...)
+{
+ m_bError = true;
+
+ kvi_va_list va;
+ kvi_va_start_by_reference(va,szMsgFmt);
+ report(true,m_pDefaultReportLocation,szMsgFmt,va);
+ kvi_va_end(va);
+}
+
+void KviKvsRunTimeContext::warning(const QString &szMsgFmt,...)
+{
+ kvi_va_list va;
+ kvi_va_start_by_reference(va,szMsgFmt);
+ report(false,m_pDefaultReportLocation,szMsgFmt,va);
+ kvi_va_end(va);
+}
+
+bool KviKvsRunTimeContext::errorNoIrcContext()
+{
+ error(m_pDefaultReportLocation,__tr2qs("This command can be used only in windows bound to an IRC context"));
+ return false;
+}
+
+bool KviKvsRunTimeContext::warningNoIrcConnection()
+{
+ warning(m_pDefaultReportLocation,__tr2qs("You're not connected to an IRC server"));
+ return true;
+}
+
+bool KviKvsRunTimeContext::warningMissingParameter()
+{
+ warning(m_pDefaultReportLocation,__tr2qs("Missing parameter"));
+ return true;
+}
+
+void KviKvsRunTimeContext::setDefaultReportLocation(KviKvsTreeNode * pNode)
+{
+ m_pDefaultReportLocation = pNode;
+}
diff --git a/src/kvirc/kvs/kvi_kvs_runtimecontext.h b/src/kvirc/kvs/kvi_kvs_runtimecontext.h
new file mode 100644
index 00000000..68fa8ebd
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_runtimecontext.h
@@ -0,0 +1,256 @@
+#ifndef _KVI_KVS_RUNTIMECONTEXT_H_
+#define _KVI_KVS_RUNTIMECONTEXT_H_
+//=============================================================================
+//
+// File : kvi_kvs_runtimecontext.h
+// Created on Tue 07 Oct 2003 01:49:40 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include "kvi_window.h"
+
+#include "kvi_kvs_variant.h"
+#include "kvi_kvs_hash.h"
+#include "kvi_kvs_variantlist.h"
+#include "kvi_kvs_switchlist.h"
+
+class KviKvsScript;
+class KviConsole;
+class KviIrcContext;
+class KviIrcConnection;
+class KviKvsTreeNode;
+class KviKvsObject;
+class KviKvsReportHandler;
+
+class KVIRC_API KviKvsExtendedRunTimeData
+{
+ friend class KviKvsRunTimeContext;
+protected:
+ KviKvsHash * m_pExtendedScopeVariables; // extended scope vars, shallow, may be 0
+ KviKvsSwitchList * m_pAliasSwitchList; // switches for the aliases, shallow, may be 0
+ KviKvsObject * m_pThisObject; // the current object for object function calls
+ QString * m_pScriptFilePath; // the current script file path, shallow, may be 0
+ bool m_bAutoDelete;
+public:
+ // all shallow data, all may be 0
+ KviKvsExtendedRunTimeData()
+ : m_pExtendedScopeVariables(0),
+ m_pAliasSwitchList(0),
+ m_pThisObject(0),
+ m_pScriptFilePath(0),
+ m_bAutoDelete(FALSE)
+ {};
+ KviKvsExtendedRunTimeData(KviKvsHash * pExtScopeVariables,bool autoDelete=FALSE)
+ : m_pExtendedScopeVariables(pExtScopeVariables),
+ m_pAliasSwitchList(0),
+ m_pThisObject(0),
+ m_pScriptFilePath(0),
+ m_bAutoDelete(autoDelete)
+ {};
+ KviKvsExtendedRunTimeData(KviKvsSwitchList * pAliasSwitchList,bool autoDelete=FALSE)
+ : m_pExtendedScopeVariables(0),
+ m_pAliasSwitchList(pAliasSwitchList),
+ m_pThisObject(0),
+ m_pScriptFilePath(0),
+ m_bAutoDelete(autoDelete)
+ {};
+ KviKvsExtendedRunTimeData(KviKvsObject * pThisObject,bool autoDelete=FALSE)
+ : m_pExtendedScopeVariables(0),
+ m_pAliasSwitchList(0),
+ m_pThisObject(pThisObject),
+ m_pScriptFilePath(0),
+ m_bAutoDelete(autoDelete)
+ {};
+ KviKvsExtendedRunTimeData(QString * pScriptFilePath,bool autoDelete=FALSE)
+ : m_pExtendedScopeVariables(0),
+ m_pAliasSwitchList(0),
+ m_pThisObject(0),
+ m_pScriptFilePath(pScriptFilePath),
+ m_bAutoDelete(autoDelete)
+ {};
+ ~KviKvsExtendedRunTimeData();
+public:
+ KviKvsHash * extendedScopeVariables(){ return m_pExtendedScopeVariables; };
+ KviKvsSwitchList * aliasSwitchList(){ return m_pAliasSwitchList; };
+ KviKvsObject * thisObject(){ return m_pThisObject; };
+ QString * scriptFilePath(){ return m_pScriptFilePath; };
+};
+
+
+class KVIRC_API KviKvsRunTimeContext
+{
+ friend class KviKvsScript;
+ friend class KviKvsObject;
+ friend class KviKvsRunTimeCall;
+ friend class KviKvsEventManager;
+protected:
+ // only KviKvsScript, KviKvsEventManager and KviKvsObject can instantiate this class
+ KviKvsRunTimeContext(KviKvsScript * pScript,
+ KviWindow * pWnd,
+ KviKvsVariantList * pParams,
+ KviKvsVariant * pRetVal,
+ KviKvsExtendedRunTimeData * pExtData = 0);
+public:
+ ~KviKvsRunTimeContext();
+protected:
+ // stuff that is fixed in the whole script context
+ KviKvsScript * m_pScript; // shallow, may be 0!
+ KviKvsHash * m_pLocalVariables; // owned, never 0
+ KviKvsVariantList * m_pParameterList; // shallow, never 0
+ KviKvsVariant * m_pReturnValue; // shallow, never 0
+
+ // stuff that is generally global but sometimes may change
+ // during the execution of the script
+ KviWindow * m_pWindow; // shallow, never 0
+
+ enum RunTimeFlags { BreakPending = 1, HaltCalled = 2, DisableReporting = 4 };
+ unsigned int m_uRunTimeFlags; // a combination of RunTimeFlags
+
+ KviKvsExtendedRunTimeData * m_pExtendedData; // shallow, may be 0
+
+ // error handling
+ bool m_bError; // was error() ever called ?
+ KviKvsTreeNode * m_pDefaultReportLocation; // default report location for error()
+public:
+ // the window that this script is bound to (it MAY change during the script parsing)
+ KviWindow * window()
+ { return m_pWindow; };
+ // quick access to the irc context (it MAY be zero!)
+ KviIrcContext * context()
+ { return m_pWindow->context(); };
+ // quick access to the console that this script is bound to (it MAY be zero, if there is no console)
+ KviConsole * console()
+ { return m_pWindow->console(); };
+ // quick access to the connection: it MAY be zero!
+ KviIrcConnection * connection()
+ { return m_pWindow->connection(); };
+
+ // the local variables of this script
+ KviKvsHash * localVariables()
+ { return m_pLocalVariables; };
+ // the global application-wide variables
+ KviKvsHash * globalVariables();
+ // the parameters passed to this script
+ KviKvsVariantList * parameterList()
+ { return m_pParameterList; };
+
+ // parent script, may be 0!
+ KviKvsScript * script()
+ { return m_pScript; };
+
+ KviKvsVariant * returnValue()
+ { return m_pReturnValue; };
+
+ // this is the default error reporting location
+ // it is also used by rfc2812wrapper to find out the current command name!
+ KviKvsTreeNode * defaultReportLocation()
+ { return m_pDefaultReportLocation; };
+
+ // the extended stuff
+ KviKvsHash * extendedScopeVariables()
+ { return m_pExtendedData ? m_pExtendedData->extendedScopeVariables() : 0; };
+ KviKvsSwitchList * aliasSwitchList()
+ { return m_pExtendedData ? m_pExtendedData->aliasSwitchList() : 0; };
+ KviKvsObject * thisObject()
+ { return m_pExtendedData ? m_pExtendedData->thisObject() : 0; };
+ QString * scriptFilePath()
+ { return m_pExtendedData ? m_pExtendedData->scriptFilePath() : 0; };
+
+ // this MUST be called before any blocking call that might return to the main event loop
+ // and eventually quit kvirc or close the window that this command is associated to
+ // Actually this is a NO-OP but later may really do something that avoids kvirc to crash
+ void enterBlockingSection();
+ // this MUST be called after exiting the blocking section above
+ // if this function returns false your parsing code MUST "return false" immediately:
+ // it means that something rather critical happened and the script
+ // execution cannot continue
+ bool leaveBlockingSection();
+
+ // Error handling
+
+ // was error(...) ever called ?
+ bool error() const { return m_bError; };
+
+ void error(KviKvsTreeNode * pNode,const QString &szMsgFmt,...);
+ void warning(KviKvsTreeNode * pNode,const QString &szMsgFmt,...);
+ void error(const QString &szMsgFmt,...);
+ void warning(const QString &szMsgFmt,...);
+ void setDefaultReportLocation(KviKvsTreeNode * pNode);
+ bool errorNoIrcContext();
+ bool warningNoIrcConnection();
+ bool warningMissingParameter();
+
+//PRIVATE:
+ // tricky
+ // don't use it: it's only for the parser
+ void setWindow(KviWindow * pWnd)
+ { m_pWindow = pWnd; };
+
+ // returns the old pointer
+ KviKvsVariant * swapReturnValuePointer(KviKvsVariant * pNewPointer);
+ // the old pointer MUST be reset!
+
+ // this is called by the parser when a break is encountered
+ // the parser calls setBreakPending() and returns false
+ // the contexts that can handle a break should check breakPending()
+ // after an internal evaluation returned false.
+ // if breakPending() they should handle it with handleBreak() and
+ // return true instead.
+ void setBreakPending()
+ { m_uRunTimeFlags |= BreakPending; };
+ // this tells if a break command has been called
+ // it may return true if an execution() command has returned false
+ // (if breakPending() there should be no error()
+ bool breakPending()
+ { return (m_uRunTimeFlags & BreakPending); };
+ // this is called by the commands that can handle a break
+ void handleBreak()
+ { m_uRunTimeFlags &= ~BreakPending; };
+
+ // this is called by the parser when a halt is encountered
+ // the parser then returns false and all the stack frames
+ // above should do the same
+ void setHaltCalled()
+ { m_uRunTimeFlags |= HaltCalled; };
+ bool haltCalled()
+ { return (m_uRunTimeFlags & HaltCalled); };
+
+ // this is used by KviKvsScript to disable reporting when the Quiet flag is used
+ void disableReporting()
+ { m_uRunTimeFlags |= DisableReporting; };
+ bool reportingDisabled()
+ { return (m_uRunTimeFlags & DisableReporting); };
+ void enableReporting()
+ { m_uRunTimeFlags &= ~DisableReporting; };
+
+ // clears the error status on this context
+ // this is useful to continue execution after an error
+ // and probably used only in /eval
+ void clearError()
+ { m_bError = false; };
+ protected:
+
+ void report(bool bError,KviKvsTreeNode * pNode,const QString &szMsgFmt,kvi_va_list va);
+
+};
+
+#endif //!_KVI_KVS_RUNTIMECONTEXT_H_
diff --git a/src/kvirc/kvs/kvi_kvs_rwevaluationresult.cpp b/src/kvirc/kvs/kvi_kvs_rwevaluationresult.cpp
new file mode 100644
index 00000000..d51588f2
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_rwevaluationresult.cpp
@@ -0,0 +1,66 @@
+//=============================================================================
+//
+// File : kvi_kvs_rwevaluationresult.cpp
+// Created on Thu 11 Dec 2003 22:51:46 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_rwevaluationresult.h"
+#include "kvi_kvs_hash.h"
+#include "kvi_kvs_array.h"
+
+KviKvsRWEvaluationResult::KviKvsRWEvaluationResult(KviKvsRWEvaluationResult *pParent,KviKvsVariant *pVariant)
+{
+ m_pParent = pParent;
+ m_pVariant = pVariant;
+}
+
+KviKvsRWEvaluationResult::~KviKvsRWEvaluationResult()
+{
+}
+
+KviKvsArrayElement::KviKvsArrayElement(KviKvsRWEvaluationResult *pParent,KviKvsVariant *pVariant,KviKvsArray *pArray,int iKey)
+: KviKvsRWEvaluationResult(pParent,pVariant)
+{
+ m_pArray = pArray;
+ m_iKey = iKey;
+}
+
+KviKvsArrayElement::~KviKvsArrayElement()
+{
+ if(m_pVariant->isEmpty())m_pArray->unset(m_iKey);
+ if(m_pParent)delete m_pParent;
+}
+
+KviKvsHashElement::KviKvsHashElement(KviKvsRWEvaluationResult *pParent,KviKvsVariant *pVariant,KviKvsHash *pHash,const QString &szKey)
+: KviKvsRWEvaluationResult(pParent,pVariant)
+{
+ m_pHash = pHash;
+ m_szKey = szKey;
+}
+
+KviKvsHashElement::~KviKvsHashElement()
+{
+ if(m_pVariant->isEmpty())m_pHash->unset(m_szKey);
+ if(m_pParent)delete m_pParent;
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_rwevaluationresult.h b/src/kvirc/kvs/kvi_kvs_rwevaluationresult.h
new file mode 100644
index 00000000..9d91a1ba
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_rwevaluationresult.h
@@ -0,0 +1,70 @@
+#ifndef _KVI_KVS_RWEVALUATIONRESULT_H_
+#define _KVI_KVS_RWEVALUATIONRESULT_H_
+//=============================================================================
+//
+// File : kvi_kvs_rwevaluationresult.h
+// Created on Thu 11 Dec 2003 22:51:46 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_kvs_variant.h"
+
+class KVIRC_API KviKvsRWEvaluationResult
+{
+public:
+ // this result becomes the owner of the parent result!!!!
+ KviKvsRWEvaluationResult(KviKvsRWEvaluationResult *pParent,KviKvsVariant *pVariant);
+ // the destructor must do (in order):
+ // check if variant is empty and if it is then remove it from the container (destroy it)
+ // delete the m_pParent result
+ virtual ~KviKvsRWEvaluationResult();
+protected:
+ KviKvsRWEvaluationResult * m_pParent;
+ KviKvsVariant * m_pVariant;
+public:
+ KviKvsVariant * result(){ return m_pVariant; };
+};
+
+class KviKvsArray;
+
+class KVIRC_API KviKvsArrayElement : public KviKvsRWEvaluationResult
+{
+public:
+ KviKvsArrayElement(KviKvsRWEvaluationResult *pParent,KviKvsVariant *pVariant,KviKvsArray *pArray,int iKey);
+ ~KviKvsArrayElement();
+protected:
+ KviKvsArray * m_pArray;
+ int m_iKey;
+};
+
+class KviKvsHash;
+
+class KVIRC_API KviKvsHashElement : public KviKvsRWEvaluationResult
+{
+public:
+ KviKvsHashElement(KviKvsRWEvaluationResult *pParent,KviKvsVariant *pVariant,KviKvsHash *pHash,const QString &szKey);
+ ~KviKvsHashElement();
+protected:
+ KviKvsHash * m_pHash;
+ QString m_szKey;
+};
+
+#endif //!_KVI_KVS_RWEVALUATIONRESULT_H_
diff --git a/src/kvirc/kvs/kvi_kvs_script.cpp b/src/kvirc/kvs/kvi_kvs_script.cpp
new file mode 100644
index 00000000..e7a2bd60
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_script.cpp
@@ -0,0 +1,356 @@
+//=============================================================================
+//
+// File : kvi_kvs_script.cpp
+// Creation date : Thu 25 Sep 2003 05.12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_script.h"
+#include "kvi_kvs_parser.h"
+#include "kvi_kvs_report.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_kvs_treenode_instruction.h"
+#include "kvi_kvs_variantlist.h"
+#include "kvi_kvs_kernel.h"
+
+#include "kvi_locale.h"
+#include "kvi_out.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_window.h"
+#include "kvi_app.h"
+
+class KVIRC_API KviKvsScriptData
+{
+ friend class KviKvsScript;
+protected:
+ unsigned int m_uRefs; // Reference count for this structure
+
+ QString m_szName; // script context name
+ QString m_szBuffer; // NEVER TOUCH THIS
+ const QChar * m_pBuffer; // this points to m_szBuffer: use it to extract string data
+
+ KviKvsScript::ScriptType m_eType; // the type of the code in m_szBuffer
+
+ KviKvsTreeNodeInstruction * m_pTree; // syntax tree
+ unsigned int m_uLock; // this is increased while the script is being executed
+};
+
+//#warning "THERE IS SOME MESS WITH m_szBuffer and m_pBuffer : with some script copying we may get errors with negative char indexes!"
+
+KviKvsScript::KviKvsScript(const QString &szName,const QString &szBuffer,ScriptType eType)
+{
+ m_pData = new KviKvsScriptData;
+ m_pData->m_uRefs = 1;
+ m_pData->m_szName = szName;
+ m_pData->m_eType = eType;
+ m_pData->m_szBuffer = szBuffer;
+ if(m_pData->m_szBuffer.isNull())m_pData->m_szBuffer = "";
+ //KviQString::detach(*(m_pData->m_pszBuffer));
+ m_pData->m_pBuffer = KviQString::nullTerminatedArray(m_pData->m_szBuffer); // never 0
+ m_pData->m_uLock = 0;
+ m_pData->m_pTree = 0;
+}
+
+KviKvsScript::KviKvsScript(const QString &szName,const QString &szBuffer,KviKvsTreeNodeInstruction * pPreparsedTree,ScriptType eType)
+{
+ m_pData = new KviKvsScriptData;
+ m_pData->m_uRefs = 1;
+ m_pData->m_szName = szName;
+ m_pData->m_szBuffer = szBuffer;
+ m_pData->m_eType = eType;
+ if(m_pData->m_szBuffer.isNull())m_pData->m_szBuffer = "";
+ //KviQString::detach(*(m_pData->m_pszBuffer));
+ m_pData->m_pBuffer = KviQString::nullTerminatedArray(m_pData->m_szBuffer); // never 0
+ m_pData->m_uLock = 0;
+ m_pData->m_pTree = pPreparsedTree;
+}
+
+KviKvsScript::KviKvsScript(const KviKvsScript &src)
+{
+ m_pData = src.m_pData;
+ m_pData->m_uRefs++;
+}
+
+KviKvsScript::~KviKvsScript()
+{
+ if(m_pData->m_uRefs < 2)
+ {
+ if(m_pData->m_uLock)debug("WARNING: Destroying a locked KviKvsScript");
+ if(m_pData->m_pTree)delete m_pData->m_pTree;
+ delete m_pData;
+ } else {
+ m_pData->m_uRefs--;
+ }
+}
+
+void KviKvsScript::setName(const QString &szName)
+{
+ if(m_pData->m_uRefs > 1)detach();
+ m_pData->m_szName = szName;
+}
+
+const QString & KviKvsScript::name() const
+{
+ return m_pData->m_szName;
+}
+
+const QString & KviKvsScript::code() const
+{
+ return m_pData->m_szBuffer;
+}
+
+bool KviKvsScript::locked() const
+{
+ return m_pData->m_uLock > 0;
+}
+
+void KviKvsScript::dump(const char * prefix)
+{
+ if(m_pData->m_pTree)m_pData->m_pTree->dump(prefix);
+ else debug("%s KviKvsScript : no tree to dump",prefix);
+}
+
+void KviKvsScript::detach()
+{
+ if(m_pData->m_uRefs <= 1)return;
+ m_pData->m_uRefs--;
+ KviKvsScriptData * d = new KviKvsScriptData;
+ d->m_uRefs = 1;
+ d->m_eType = m_pData->m_eType;
+ d->m_szBuffer = m_pData->m_szBuffer;
+ if(d->m_szBuffer.isNull())d->m_szBuffer = "";
+ KviQString::detach(d->m_szBuffer);
+ d->m_pBuffer = KviQString::nullTerminatedArray(d->m_szBuffer); // never 0
+ d->m_uLock = 0;
+ d->m_pTree = 0;
+ m_pData = d;
+}
+
+const QChar * KviKvsScript::buffer() const
+{
+ return m_pData->m_pBuffer;
+}
+
+int KviKvsScript::run(const QString &szCode,KviWindow * pWindow,KviKvsVariantList * pParams,KviKvsVariant * pRetVal)
+{
+ // static helper
+ KviKvsScript s("kvirc::corecall(run)",szCode);
+ return s.run(pWindow,pParams,pRetVal,PreserveParams);
+}
+
+int KviKvsScript::evaluate(const QString &szCode,KviWindow * pWindow,KviKvsVariantList * pParams,KviKvsVariant * pRetVal)
+{
+ // static helper
+ KviKvsScript s("kvirc::corecall(evalutate)",szCode,Parameter);
+ return s.run(pWindow,pParams,pRetVal,PreserveParams);
+}
+
+int KviKvsScript::evaluateAsString(const QString &szCode,KviWindow * pWindow,KviKvsVariantList * pParams,QString &szRetVal)
+{
+ // static helper
+ KviKvsVariant ret;
+ KviKvsScript s("kvirc::corecall(evalutate)",szCode,Parameter);
+ int iRet = s.run(pWindow,pParams,&ret,PreserveParams);
+ ret.asString(szRetVal);
+ return iRet;
+}
+
+int KviKvsScript::run(KviWindow * pWnd,KviKvsVariantList * pParams,QString &szRetVal,int iRunFlags,KviKvsExtendedRunTimeData * pExtData)
+{
+ KviKvsVariant retVal;
+ int iRet = run(pWnd,pParams,&retVal,iRunFlags,pExtData);
+ retVal.asString(szRetVal);
+ return iRet;
+}
+
+//static long int g_iTreeCacheHits = 0;
+//static long int g_iTreeCacheMisses = 0;
+
+int KviKvsScript::run(KviWindow * pWnd,KviKvsVariantList * pParams,KviKvsVariant * pRetVal,int iRunFlags,KviKvsExtendedRunTimeData * pExtData)
+{
+ if(!m_pData->m_pTree)
+ {
+ //g_iTreeCacheMisses++;
+ //debug("CREATING TREE FOR SCRIPT %s",name().latin1());
+ //debug("TREE CACHE STATS: HITS=%d, MISSES=%d",g_iTreeCacheHits,g_iTreeCacheMisses);
+ if(!parse(pWnd,iRunFlags))
+ {
+ if(pParams && !(iRunFlags & PreserveParams))delete pParams;
+ return Error;
+ }
+ } else {
+ //g_iTreeCacheHits++;
+ //debug("USING A CACHED TREE FOR SCRIPT %s",name().latin1());
+ //debug("TREE CACHE STATS: HITS=%d, MISSES=%d",g_iTreeCacheHits,g_iTreeCacheMisses);
+ }
+
+ return execute(pWnd,pParams,pRetVal,iRunFlags,pExtData);
+}
+
+int KviKvsScript::run(KviKvsRunTimeContext * pContext,int iRunFlags)
+{
+ if(!m_pData->m_pTree)
+ {
+ //g_iTreeCacheMisses++;
+ //debug("CREATING TREE FOR SCRIPT %s",name().latin1());
+ //debug("TREE CACHE STATS: HITS=%d, MISSES=%d",g_iTreeCacheHits,g_iTreeCacheMisses);
+ if(!parse(pContext->window(),iRunFlags))
+ return Error;
+ } else {
+ //g_iTreeCacheHits++;
+ //debug("USING A CACHED TREE FOR SCRIPT %s",name().latin1());
+ //debug("TREE CACHE STATS: HITS=%d, MISSES=%d",g_iTreeCacheHits,g_iTreeCacheMisses);
+ }
+
+ int iRet;
+
+ if(iRunFlags & Quiet)
+ {
+ bool bMustReEnable = !(pContext->reportingDisabled());
+ pContext->disableReporting();
+ iRet = executeInternal(pContext);
+ if(bMustReEnable)pContext->enableReporting();
+ } else {
+ iRet = executeInternal(pContext);
+ }
+
+ return iRet;
+}
+
+
+bool KviKvsScript::parse(KviWindow * pOutput,int iRunFlags)
+{
+ if(m_pData->m_pTree)
+ {
+ // there is already a tree
+ // if we have more than one ref, detach!
+ if(m_pData->m_uRefs > 1)
+ {
+ // mmmh.. more than one ref! .. detach
+ detach();
+ } else {
+ // only a single ref: we're the owner of the tree
+ if(m_pData->m_uLock)
+ {
+ // ops... someone is locked in THIS script object
+ debug("WARNING: Trying to reparse a locked KviKvsScript!");
+ return false;
+ }
+ if(m_pData->m_pTree)delete m_pData->m_pTree;
+ m_pData->m_pTree = 0;
+ }
+ } // else there is no tree at all, nobody can be locked inside
+
+ KviKvsParser p(this,(iRunFlags & Quiet) ? 0 : pOutput);
+ // parse never blocks
+
+ int iFlags = iRunFlags & AssumeLocals ? KviKvsParser::AssumeLocals : 0;
+ if(iRunFlags & Pedantic)iFlags |= KviKvsParser::Pedantic;
+
+ switch(m_pData->m_eType)
+ {
+ case Expression:
+ m_pData->m_pTree = p.parseAsExpression(m_pData->m_pBuffer,iFlags);
+ break;
+ case Parameter:
+ m_pData->m_pTree = p.parseAsParameter(m_pData->m_pBuffer,iFlags);
+ break;
+ case InstructionList:
+ default:
+ m_pData->m_pTree = p.parse(m_pData->m_pBuffer,iFlags);
+ break;
+ }
+
+ //debug("\n\nDUMPING SCRIPT");
+ //dump("");
+ //debug("END OF SCRIPT DUMP\n\n");
+
+ return !p.error();
+}
+
+
+int KviKvsScript::executeInternal(KviKvsRunTimeContext * pContext)
+{
+ // lock this script
+ m_pData->m_uLock++;
+
+ int iRunStatus = Success;
+
+ if(!m_pData->m_pTree->execute(pContext))
+ {
+ if(pContext->error())iRunStatus = Error;
+ else {
+ // else just a halt, return or sth like that
+ if(pContext->haltCalled())
+ iRunStatus |= HaltEncountered;
+ }
+ }
+
+ // we can't block any longer: unlock
+ m_pData->m_uLock--;
+
+ return iRunStatus;
+}
+
+int KviKvsScript::execute(KviWindow * pWnd,KviKvsVariantList * pParams,KviKvsVariant * pRetVal,int iRunFlags,KviKvsExtendedRunTimeData * pExtData)
+{
+ bool bDeleteParams = !(iRunFlags & PreserveParams);
+
+ // do we have a parsed tree ?
+ if(!m_pData->m_pTree)
+ {
+ if(pParams && bDeleteParams)delete pParams;
+ // this is intended for developers only
+ pWnd->outputNoFmt(KVI_OUT_PARSERERROR,"[developer error]: you must succesfully call KviKvsScript::parse() before KviKvsScript::execute()");
+ return Error;
+ }
+ // do we need to pass dummy params ?
+ if(!pParams)
+ {
+ pParams = KviKvsKernel::instance()->emptyParameterList();
+ bDeleteParams = false;
+ }
+
+ bool bDeleteRetVal = false;
+
+ if(!pRetVal)
+ {
+ pRetVal = new KviKvsVariant();
+ bDeleteRetVal = true;
+ }
+
+ KviKvsRunTimeContext ctx(this,pWnd,pParams,pRetVal,pExtData);
+
+ if(iRunFlags & Quiet)
+ ctx.disableReporting();
+
+ int iRunStatus = executeInternal(&ctx);
+
+ // don't forget to delete the params
+ if(bDeleteParams)delete pParams;
+ if(bDeleteRetVal)delete pRetVal;
+ pParams = 0; pRetVal = 0;
+ return iRunStatus;
+}
+
+
+
diff --git a/src/kvirc/kvs/kvi_kvs_script.h b/src/kvirc/kvs/kvi_kvs_script.h
new file mode 100644
index 00000000..b9243878
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_script.h
@@ -0,0 +1,155 @@
+#ifndef _KVI_KVS_SCRIPT_H_
+#define _KVI_KVS_SCRIPT_H_
+//=============================================================================
+//
+// File : kvi_kvs_script.h
+// Creation date : Thu 25 Sep 2003 05.12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_window.h"
+#include "kvi_pointerlist.h"
+#include "kvi_kvs_variant.h"
+#include "kvi_kvs_variantlist.h"
+#include "kvi_heapobject.h"
+
+class KviKvsTreeNodeInstruction;
+class KviKvsExtendedRunTimeData;
+class KviKvsScriptData;
+class KviKvsReport;
+class KviKvsRunTimeContext;
+
+// X defines this stuff: ugly :/
+#ifdef Error
+ #undef Error
+#endif
+#ifdef Success
+ #undef Success
+#endif
+
+class KVIRC_API KviKvsScript : public KviHeapObject
+{
+ friend class KviKvsObject;
+ friend class KviKvsParser;
+ friend class KviKvsRunTimeContext;
+public:
+ enum RunStatus {
+ // the script returned an error
+ Error = 0,
+ // the script ran succesfully
+ Success = 1,
+ // the script ran succesfully and halt was encountered
+ HaltEncountered = 2
+ };
+ enum ScriptType {
+ // the most common script type: a sequence of instructions
+ InstructionList,
+ // an expression to be evaluated as in a $() call (pRetVal should be always set!)
+ Expression,
+ // a parameter to be evaluated (pRetVal should be always set!)
+ Parameter
+ };
+protected:
+ // the name parameter is the name of the script context!
+ KviKvsScript(const QString &szName,const QString &szBuffer,KviKvsTreeNodeInstruction * pPreparsedTree,ScriptType eType = InstructionList);
+public:
+ // shallow copy of the script data
+ // useful when a script can be destroyed while running (like in timers)
+ KviKvsScript(const KviKvsScript &src);
+ KviKvsScript(const QString &szName,const QString &szBuffer,ScriptType eType=InstructionList);
+ ~KviKvsScript();
+private:
+ KviKvsScriptData * m_pData;
+public:
+ const QString & name() const;
+ const QString & code() const;
+ bool locked() const;
+
+ void setName(const QString &szName);
+
+ enum RunFlags {
+ // do not delete the eventual parameters passed (only execute() and run())
+ PreserveParams = 1,
+ // assume that the variables are local unless explicitly declared (flag used only for parse())
+ AssumeLocals = 2, // FIXME: This should be a global option, eventually
+ // be more pedantic: spit more warnings and sometimes more errors
+ Pedantic = 4, // FIXME: This should be a global option, eventually
+ // don't print any errors
+ Quiet = 8
+ };
+ // returns 0 (KviKvsScript::RunFailure) on error
+ // returns a nonzero combination of RunStatus flags on success
+ int run(KviWindow * pWnd, // window that the command has to be bound to
+ KviKvsVariantList * pParams = 0, // parameter list (0 if you don't pass params) ownership transferred if PreserverParams is not used
+ KviKvsVariant * pRetVal = 0, // return value buffer (0 if you ignore it)
+ int iRunFlags = 0, // a combination of run flags (usually default)
+ KviKvsExtendedRunTimeData * pExtData = 0); // extended data (usually 0) (if you need to pass extended scope variables or alias switch lists...)
+
+ // returns 0 (KviKvsScript::RunFailure) on error
+ // returns a nonzero combination of RunStatus flags on success
+ // this is probably used only in /eval
+ int run(KviKvsRunTimeContext * pContext,int iRunFlags = 0);
+
+ // same as run above, but gets a QString parameter as return buffer
+ // this is probably useful only for evaluating InstructionList scripts
+ int run(KviWindow * pWnd,
+ KviKvsVariantList * pParams,
+ QString &szRetVal,
+ int iRunFlags = 0,
+ KviKvsExtendedRunTimeData * pExtData = 0);
+
+ // static helpers for quick running
+ // returns a combination of RunStatus flags (nonzero on no error)
+ // does NOT take params ownership
+ static int run(const QString &szCode,KviWindow * pWindow,KviKvsVariantList * pParams = 0,KviKvsVariant * pRetVal = 0);
+
+ // static helper for quick evaluating parameters
+ // returns a combination of RunStatus flags (nonzero on no error)
+ // does NOT take params ownership
+ // pRetVal CAN'T be zero here since we're evaluating stuff here
+ static int evaluate(const QString &szCode,KviWindow * pWindow,KviKvsVariantList * pParams,KviKvsVariant * pRetVal);
+ static int evaluateAsString(const QString &szCode,KviWindow * pWindow,KviKvsVariantList * pParams,QString &szRetVal);
+public:
+ void dump(const char * prefix);
+protected:
+ // returns true after a succesfull parsing
+ // pOutput is useful only for printing errors
+ // if 0 , no errors are printed
+ bool parse(KviWindow * pOutput = 0,
+ int iRunFlags = 0);
+ // returns 0 (KviKvsScript::RunFailure) on error
+ // returns a nonzero combination of RunStatus flags on success
+ int execute(KviWindow * pWnd,
+ KviKvsVariantList * pParams = 0,
+ KviKvsVariant * pRetVal = 0,
+ int iRunFlags = 0,
+ KviKvsExtendedRunTimeData * pExtData = 0);
+ // returns 0 (KviKvsScript::RunFailure) on error
+ // returns a nonzero combination of RunStatus flags on success
+ int executeInternal(KviKvsRunTimeContext * pContext);
+ const QChar * buffer() const;
+ // detaches this script from any other shallow copies
+ void detach();
+};
+
+
+#endif //!_KVI_KVS_SCRIPT_H_
diff --git a/src/kvirc/kvs/kvi_kvs_scriptaddonmanager.cpp b/src/kvirc/kvs/kvi_kvs_scriptaddonmanager.cpp
new file mode 100644
index 00000000..aee138d4
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_scriptaddonmanager.cpp
@@ -0,0 +1,386 @@
+//=============================================================================
+//
+// File : kvi_kvs_scriptaddonmanager.cpp
+// Created on Thu 31 Mar 2005 01:21:23 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_scriptaddonmanager.h"
+#include "kvi_kvs_script.h"
+#include "kvi_config.h"
+#include "kvi_window.h"
+#include "kvi_iconmanager.h"
+
+KviKvsScriptAddonManager * KviKvsScriptAddonManager::m_pInstance = 0;
+
+
+
+
+KviKvsScriptAddon::KviKvsScriptAddon(
+ const QString &szName,
+ const QString &szVersion,
+ const QString &szVisibleNameCode,
+ const QString &szDescriptionCode,
+ const QString &szUninstallCallbackCode,
+ const QString &szIconId
+) : KviHeapObject(), m_szName(szName), m_szVersion(szVersion), m_szIconId(szIconId)
+{
+ allocateScripts(szVisibleNameCode,szDescriptionCode,szUninstallCallbackCode);
+ m_pConfigureCallback = 0;
+ m_pHelpCallback = 0;
+}
+
+KviKvsScriptAddon::KviKvsScriptAddon(const KviKvsScriptAddon &a)
+: KviHeapObject()
+{
+ m_szName = a.m_szName;
+ m_szVersion = a.m_szVersion;
+ m_szIconId = a.m_szIconId;
+ allocateScripts(a.m_pVisibleNameScript->code(),a.m_pDescriptionScript->code(),a.m_pUninstallCallback ? a.m_pUninstallCallback->code() : QString::null);
+ m_pConfigureCallback = 0;
+ setConfigureCallback(a.m_pConfigureCallback ? a.m_pConfigureCallback->code() : QString::null);
+ m_pHelpCallback = 0;
+ setHelpCallback(a.m_pHelpCallback ? a.m_pHelpCallback->code() : QString::null);
+}
+
+KviKvsScriptAddon::KviKvsScriptAddon()
+: KviHeapObject()
+{
+ m_pVisibleNameScript = 0;
+ m_pDescriptionScript = 0;
+ m_pUninstallCallback = 0;
+ m_pConfigureCallback = 0;
+ m_pHelpCallback = 0;
+}
+
+KviKvsScriptAddon::~KviKvsScriptAddon()
+{
+ if(m_pVisibleNameScript)delete m_pVisibleNameScript;
+ if(m_pDescriptionScript)delete m_pDescriptionScript;
+ if(m_pUninstallCallback)delete m_pUninstallCallback;
+ if(m_pConfigureCallback)delete m_pConfigureCallback;
+ if(m_pHelpCallback)delete m_pHelpCallback;
+}
+
+QPixmap * KviKvsScriptAddon::icon()
+{
+ return g_pIconManager->getBigIcon(m_szIconId.isEmpty() ? QString(KVI_BIGICON_KVS) : m_szIconId);
+}
+
+const QString & KviKvsScriptAddon::visibleName()
+{
+ if(!m_pVisibleNameScript)return m_szVisibleName;
+ if(!m_pVisibleNameScript->run(g_pActiveWindow,0,m_szVisibleName))m_szVisibleName = m_pVisibleNameScript->code();
+ return m_szVisibleName;
+}
+
+const QString & KviKvsScriptAddon::description()
+{
+ if(!m_pDescriptionScript)return m_szDescription;
+ if(!m_pDescriptionScript->run(g_pActiveWindow,0,m_szDescription))m_szDescription = m_pDescriptionScript->code();
+ return m_szDescription;
+}
+
+const QString & KviKvsScriptAddon::visibleNameCode()
+{
+ return m_pVisibleNameScript->code();
+}
+
+const QString & KviKvsScriptAddon::descriptionCode()
+{
+ return m_pDescriptionScript->code();
+}
+
+const QString & KviKvsScriptAddon::uninstallCallbackCode()
+{
+ return m_pUninstallCallback->code();
+}
+
+const QString & KviKvsScriptAddon::configureCallbackCode()
+{
+ if(m_pConfigureCallback)return m_pConfigureCallback->code();
+ return KviQString::empty;
+}
+
+const QString & KviKvsScriptAddon::helpCallbackCode()
+{
+ if(m_pHelpCallback)return m_pHelpCallback->code();
+ return KviQString::empty;
+}
+
+bool KviKvsScriptAddon::load(KviConfig * cfg,const QString &szName)
+{
+ m_szName = szName;
+ cfg->setGroup(m_szName);
+ m_szVersion = cfg->readQStringEntry("Version");
+ m_szIconId = cfg->readQStringEntry("IconId");
+ if(m_szVersion.isEmpty())return false;
+ QString tmp1,tmp2,tmp3;
+ tmp1 = cfg->readQStringEntry("VisibleNameCode");
+ tmp2 = cfg->readQStringEntry("DescriptionCode");
+ tmp3 = cfg->readQStringEntry("UninstallCallback");
+ if(tmp1.isEmpty())return false;
+ allocateScripts(tmp1,tmp2,tmp3);
+ tmp1 = cfg->readQStringEntry("ConfigureCallback");
+ if(!tmp1.isEmpty())
+ setConfigureCallback(tmp1);
+ tmp1 = cfg->readQStringEntry("HelpCallback");
+ if(!tmp1.isEmpty())
+ setHelpCallback(tmp1);
+ return true;
+}
+
+void KviKvsScriptAddon::setConfigureCallback(const QString &szConfigureCallbackCode)
+{
+ if(m_pConfigureCallback)delete m_pConfigureCallback;
+ if(szConfigureCallbackCode.isEmpty())
+ {
+ m_pConfigureCallback = 0;
+ return;
+ }
+
+ QString szKvsName = "addon::";
+ szKvsName += m_szName;
+
+ QString szTmp;
+
+ szTmp = szKvsName;
+ szTmp += "::configure";
+ m_pConfigureCallback = new KviKvsScript(szTmp,szConfigureCallbackCode,KviKvsScript::InstructionList);
+}
+
+void KviKvsScriptAddon::setHelpCallback(const QString &szHelpCallbackCode)
+{
+ if(m_pHelpCallback)delete m_pHelpCallback;
+ if(szHelpCallbackCode.isEmpty())
+ {
+ m_pHelpCallback = 0;
+ return;
+ }
+
+ QString szKvsName = "addon::";
+ szKvsName += m_szName;
+
+ QString szTmp;
+
+ szTmp = szKvsName;
+ szTmp += "::help";
+ m_pHelpCallback = new KviKvsScript(szTmp,szHelpCallbackCode,KviKvsScript::InstructionList);
+}
+
+void KviKvsScriptAddon::allocateScripts(const QString &szVisibleNameCode,const QString &szDescriptionCode,const QString &szUninstallCallbackCode)
+{
+ QString szKvsName = "addon::";
+ szKvsName += m_szName;
+
+ QString szTmp;
+
+ szTmp = szKvsName;
+ szTmp += "::name";
+ m_pVisibleNameScript = new KviKvsScript(szTmp,szVisibleNameCode,KviKvsScript::Parameter);
+ szTmp = szKvsName;
+ szTmp += "::description";
+ m_pDescriptionScript = new KviKvsScript(szTmp,szDescriptionCode,KviKvsScript::Parameter);
+ szTmp = szKvsName;
+ szTmp += "::uninstall";
+ m_pUninstallCallback = new KviKvsScript(szTmp,szUninstallCallbackCode,KviKvsScript::InstructionList);
+}
+
+void KviKvsScriptAddon::save(KviConfig * cfg)
+{
+ cfg->setGroup(m_szName);
+ cfg->writeEntry("Version",m_szVersion);
+ cfg->writeEntry("VisibleNameCode",visibleNameCode());
+ cfg->writeEntry("DescriptionCode",descriptionCode());
+ cfg->writeEntry("UninstallCallback",uninstallCallbackCode());
+ cfg->writeEntry("ConfigureCallback",configureCallbackCode());
+ cfg->writeEntry("HelpCallback",helpCallbackCode());
+ cfg->writeEntry("IconId",m_szIconId);
+}
+
+void KviKvsScriptAddon::executeUninstallCallback(KviWindow * pWnd)
+{
+ if(!m_pUninstallCallback)return;
+ m_pUninstallCallback->run(pWnd);
+}
+
+void KviKvsScriptAddon::executeConfigureCallback(KviWindow * pWnd)
+{
+ if(!m_pConfigureCallback)return;
+ m_pConfigureCallback->run(pWnd);
+}
+
+void KviKvsScriptAddon::executeHelpCallback(KviWindow * pWnd)
+{
+ if(!m_pHelpCallback)return;
+ m_pHelpCallback->run(pWnd);
+}
+
+
+
+
+
+KviKvsScriptAddonManager::KviKvsScriptAddonManager()
+{
+ m_pInstance = this;
+ m_bLoaded = false;
+ m_pAddonDict = new KviPointerHashTable<QString,KviKvsScriptAddon>(17,false);
+ m_pAddonDict->setAutoDelete(true);
+}
+
+KviKvsScriptAddonManager::~KviKvsScriptAddonManager()
+{
+ delete m_pAddonDict;
+}
+
+void KviKvsScriptAddonManager::init()
+{
+ if(KviKvsScriptAddonManager::instance())
+ {
+ debug("WARNING: Trying to create the KviKvsScriptAddonManager twice!");
+ return;
+ }
+ (void)new KviKvsScriptAddonManager();
+}
+
+void KviKvsScriptAddonManager::done()
+{
+ if(!KviKvsScriptAddonManager::instance())
+ {
+ debug("WARNING: Trying to destroy the KviKvsScriptAddonManager twice!");
+ return;
+ }
+ delete KviKvsScriptAddonManager::instance();
+}
+
+void KviKvsScriptAddonManager::load(const QString &szFileName)
+{
+ // in fact we implement delayed loading
+ // so this function only stores the filename
+ // from which we will load at the first request
+ m_szFileName = szFileName;
+ // this to make sure that we reload the addons
+ // if someone explicitly requests a load after we have already loaded
+ // (this does not happen in kvirc tough at the moment)
+ m_bLoaded = false;
+}
+
+void KviKvsScriptAddonManager::save(const QString &szFileName)
+{
+ if(!m_bLoaded)return; // nothing to store anyway
+ // we're stored here from now on...
+ m_szFileName = szFileName;
+
+ KviConfig cfg(szFileName,KviConfig::Write);
+
+ cfg.clear();
+
+ KviPointerHashTableIterator<QString,KviKvsScriptAddon> it(*m_pAddonDict);
+
+ while(KviKvsScriptAddon * a = it.current())
+ {
+ cfg.setGroup(a->name());
+ a->save(&cfg);
+ ++it;
+ }
+}
+
+void KviKvsScriptAddonManager::delayedLoad()
+{
+ if(m_bLoaded)return; // already loaded
+ m_bLoaded = true;
+ // ::load() might be never called if we don't have
+ // a scriptaddons.kvc file on disk, KviApp checks that.
+ // So finally m_szFileName may be empty here
+ if(m_szFileName.isEmpty())return;
+
+ KviConfig cfg(m_szFileName,KviConfig::Read);
+
+ KviPointerHashTable<QString,KviConfigGroup> * d = cfg.dict();
+ if(!d)return;
+
+ KviPointerHashTableIterator<QString,KviConfigGroup> it(*d);
+ while(it.current())
+ {
+ QString szName = it.currentKey();
+ KviKvsScriptAddon * a = new KviKvsScriptAddon();
+ if(a->load(&cfg,szName))
+ m_pAddonDict->replace(szName,a);
+ else
+ delete a;
+ ++it;
+ }
+}
+
+KviPointerHashTable<QString,KviKvsScriptAddon> * KviKvsScriptAddonManager::addonDict()
+{
+ if(!m_bLoaded)delayedLoad();
+ return m_pAddonDict;
+}
+
+
+
+
+
+bool KviKvsScriptAddonManager::registerAddon(KviKvsScriptAddonRegistrationData * d)
+{
+ if(findAddon(d->szName))return false;
+ KviKvsScriptAddon * a = new KviKvsScriptAddon(
+ d->szName,
+ d->szVersion,
+ d->szVisibleNameScript,
+ d->szDescriptionScript,
+ d->szUninstallCallbackScript,
+ d->szIconId);
+ m_pAddonDict->replace(d->szName,a);
+ return true;
+}
+
+KviKvsScriptAddon * KviKvsScriptAddonManager::findAddon(const QString &szName)
+{
+ if(!m_bLoaded)delayedLoad();
+ return m_pAddonDict->find(szName);
+}
+
+bool KviKvsScriptAddonManager::unregisterAddon(const QString &szName,KviWindow * pWnd,bool bExecuteUninstallCallback)
+{
+ KviKvsScriptAddon * a = findAddon(szName);
+ if(!a)return false;
+
+ // remove the addon before executing the uninstall callback
+ // so the user effectively can't call addon.unregister on itself in the uninstall callback code :D
+ m_pAddonDict->setAutoDelete(false);
+ m_pAddonDict->remove(szName);
+ m_pAddonDict->setAutoDelete(true);
+
+ if(bExecuteUninstallCallback)
+ a->executeUninstallCallback(pWnd);
+
+ delete a;
+ return true;
+}
+
+void KviKvsScriptAddonManager::clear()
+{
+ if(!m_bLoaded)delayedLoad();
+ m_pAddonDict->clear();
+}
diff --git a/src/kvirc/kvs/kvi_kvs_scriptaddonmanager.h b/src/kvirc/kvs/kvi_kvs_scriptaddonmanager.h
new file mode 100644
index 00000000..428ba58d
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_scriptaddonmanager.h
@@ -0,0 +1,129 @@
+#ifndef _KVI_KVS_SCRIPTADDONMANAGER_H_
+#define _KVI_KVS_SCRIPTADDONMANAGER_H_
+//=============================================================================
+//
+// File : kvi_kvs_scriptaddonmanager.h
+// Created on Thu 31 Mar 2005 01:21:23 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_heapobject.h"
+#include "kvi_qstring.h"
+#include "kvi_pointerhashtable.h"
+
+
+class KviConfig;
+class KviKvsScript;
+class KviWindow;
+class QPixmap;
+
+class KVIRC_API KviKvsScriptAddon : public KviHeapObject
+{
+ friend class KviKvsScriptAddonManager;
+protected:
+ KviKvsScriptAddon();
+ KviKvsScriptAddon(
+ const QString &szName,
+ const QString &szVersion,
+ const QString &szVisibleNameCode,
+ const QString &szDescriptionCode,
+ const QString &szUninstallCallbackCode,
+ const QString &szIconId
+ );
+public:
+ KviKvsScriptAddon(const KviKvsScriptAddon &a);
+public: // KviDict wants that... how to restrict the deletion to KviKvsScriptAddonManager only ?
+ ~KviKvsScriptAddon();
+protected:
+ QString m_szName; // the short name of the addon
+ QString m_szVersion; // x.y.z
+ KviKvsScript * m_pVisibleNameScript; // the visible name, possibly translated
+ KviKvsScript * m_pDescriptionScript; // the description, possibly translated
+ KviKvsScript * m_pUninstallCallback; // uninstall callback
+ KviKvsScript * m_pConfigureCallback; // configure callback
+ KviKvsScript * m_pHelpCallback; // help callback
+ QString m_szDescription; // parsed description
+ QString m_szVisibleName; // parsed visible name
+ QString m_szIconId;
+public:
+ const QString &name() const { return m_szName; };
+ const QString &version() const { return m_szVersion; };
+ const QString &visibleName();
+ const QString &description();
+ const QString &visibleNameCode();
+ const QString &descriptionCode();
+ const QString &uninstallCallbackCode();
+ const QString &configureCallbackCode();
+ const QString &helpCallbackCode();
+ const QString &iconId(){ return m_szIconId; };
+ QPixmap * icon();
+ void setConfigureCallback(const QString &szConfigureCallbackCode);
+ void setHelpCallback(const QString &szHelpCallbackCode);
+ void executeConfigureCallback(KviWindow * pWnd);
+ void executeHelpCallback(KviWindow * pWnd);
+protected:
+ bool load(KviConfig * cfg,const QString &szName);
+ void save(KviConfig * cfg);
+ void executeUninstallCallback(KviWindow * pWnd);
+ // this assumes that the script pointers are clean (i.e. not needing to be freed!)
+ void allocateScripts(const QString &sVisibleNameCode,const QString &szDescriptionCode,const QString &szUninstallCallbackCode);
+};
+
+class KVIRC_API KviKvsScriptAddonRegistrationData
+{
+public:
+ QString szName; // the addon name
+ QString szVersion; // the addon version in form x.y.z
+ QString szVisibleNameScript; // the code that evaluates to the visible name, possibly translated
+ QString szDescriptionScript; // the code that evaluates to the description, possibly translated
+ QString szUninstallCallbackScript; // the uninstall callback code, will be executed at uninstallation
+ QString szIconId; // the icon identifier (scaled to 32x32 atm)
+};
+
+class KVIRC_API KviKvsScriptAddonManager
+{
+public:
+ KviKvsScriptAddonManager();
+ ~KviKvsScriptAddonManager();
+protected:
+ static KviKvsScriptAddonManager * m_pInstance;
+ // this class implements delayed loading
+ QString m_szFileName; // the file name that we will load from
+ bool m_bLoaded; // have we loaded stuff from disk yet ?
+ KviPointerHashTable<QString,KviKvsScriptAddon> * m_pAddonDict; // all the registered addons
+public:
+ static KviKvsScriptAddonManager * instance(){ return m_pInstance; };
+ static void init(); // called by KviKvs::init()
+ static void done(); // called by KviKvs::done()
+
+ bool registerAddon(KviKvsScriptAddonRegistrationData * d);
+ KviKvsScriptAddon * findAddon(const QString &szName);
+ bool unregisterAddon(const QString &szName,KviWindow * pWnd,bool bExecuteUninstallCallback = true);
+ KviPointerHashTable<QString,KviKvsScriptAddon> * addonDict();
+
+ void clear();
+ void load(const QString &szFileName); // called in the KviKvs namespace
+ void save(const QString &szFileName); // called in the KViKvs namespace
+protected:
+ void delayedLoad();
+};
+
+#endif //!_KVI_KVS_SCRIPTADDONMANAGER_H_
diff --git a/src/kvirc/kvs/kvi_kvs_switchlist.cpp b/src/kvirc/kvs/kvi_kvs_switchlist.cpp
new file mode 100644
index 00000000..aa4ebdbd
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_switchlist.cpp
@@ -0,0 +1,75 @@
+//=============================================================================
+//
+// File : kvi_kvs_switchlist.cpp
+// Created on Mon 27 Oct 2003 03:47:48 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_switchlist.h"
+
+KviKvsSwitchList::KviKvsSwitchList()
+{
+ m_pShortSwitchDict = 0;
+ m_pLongSwitchDict = 0;
+}
+
+
+KviKvsSwitchList::~KviKvsSwitchList()
+{
+ if(m_pShortSwitchDict)delete m_pShortSwitchDict;
+ if(m_pLongSwitchDict)delete m_pLongSwitchDict;
+}
+
+void KviKvsSwitchList::clear()
+{
+ if(m_pShortSwitchDict)
+ {
+ delete m_pShortSwitchDict;
+ m_pShortSwitchDict = 0;
+ }
+ if(m_pLongSwitchDict)
+ {
+ delete m_pLongSwitchDict;
+ m_pLongSwitchDict = 0;
+ }
+}
+
+void KviKvsSwitchList::addShort(unsigned short uShortKey,KviKvsVariant * pVariant)
+{
+ if(!m_pShortSwitchDict)
+ {
+ m_pShortSwitchDict = new KviPointerHashTable<unsigned short,KviKvsVariant>(11);
+ m_pShortSwitchDict->setAutoDelete(true);
+ }
+ m_pShortSwitchDict->replace(uShortKey,pVariant);
+}
+
+void KviKvsSwitchList::addLong(const QString &szLongKey,KviKvsVariant * pVariant)
+{
+ if(!m_pLongSwitchDict)
+ {
+ m_pLongSwitchDict = new KviPointerHashTable<QString,KviKvsVariant>(11);
+ m_pLongSwitchDict->setAutoDelete(true);
+ }
+ m_pLongSwitchDict->replace(szLongKey,pVariant);
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_switchlist.h b/src/kvirc/kvs/kvi_kvs_switchlist.h
new file mode 100644
index 00000000..ea496b3e
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_switchlist.h
@@ -0,0 +1,87 @@
+#ifndef _KVI_KVS_SWITCHLIST_H_
+#define _KVI_KVS_SWITCHLIST_H_
+//=============================================================================
+//
+// File : kvi_kvs_switchlist.h
+// Created on Mon 27 Oct 2003 03:47:48 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_variant.h"
+
+#include "kvi_pointerhashtable.h"
+#include "kvi_pointerhashtable.h"
+
+class KVIRC_API KviKvsSwitchList
+{
+public:
+ KviKvsSwitchList();
+ ~KviKvsSwitchList();
+protected:
+ KviPointerHashTable<unsigned short,KviKvsVariant> * m_pShortSwitchDict;
+ KviPointerHashTable<QString,KviKvsVariant> * m_pLongSwitchDict;
+public:
+ void clear();
+ void addShort(unsigned short uShortKey,KviKvsVariant * pVariant);
+ void addLong(const QString &szLongKey,KviKvsVariant * pVariant);
+
+ bool isEmpty(){ return ((m_pShortSwitchDict == 0) && (m_pLongSwitchDict == 0)); };
+
+ KviKvsVariant * find(const QChar &c)
+ {
+ return m_pShortSwitchDict ? m_pShortSwitchDict->find(c.unicode()) : 0;
+ };
+
+ KviKvsVariant * find(unsigned short uShortKey)
+ {
+ return m_pShortSwitchDict ? m_pShortSwitchDict->find((int)uShortKey) : 0;
+ };
+
+ KviKvsVariant * find(const QString &szLongKey)
+ {
+ return m_pLongSwitchDict ? m_pLongSwitchDict->find(szLongKey) : 0;
+ };
+
+ KviKvsVariant * find(unsigned short uShortKey,const QString &szLongKey)
+ {
+ if(m_pLongSwitchDict)
+ {
+ KviKvsVariant * t;
+ t = m_pLongSwitchDict->find(szLongKey);
+ if(t)return t;
+ }
+ return m_pShortSwitchDict ? m_pShortSwitchDict->find((int)uShortKey) : 0;
+ };
+
+ bool getAsStringIfExisting(unsigned short uShortKey,const QString &szLongKey,QString &szBuffer)
+ {
+ KviKvsVariant * v = find(uShortKey,szLongKey);
+ if(v)
+ {
+ v->asString(szBuffer);
+ return true;
+ }
+ return false;
+ };
+};
+
+#endif //!_KVI_KVS_SWITCHLIST_H_
diff --git a/src/kvirc/kvs/kvi_kvs_timermanager.cpp b/src/kvirc/kvs/kvi_kvs_timermanager.cpp
new file mode 100644
index 00000000..91af693d
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_timermanager.cpp
@@ -0,0 +1,256 @@
+//=============================================================================
+//
+// File : kvi_kvs_timermanager.cpp
+// Created on Fri 19 Dec 2003 01:29:22 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_timermanager.h"
+
+#include "kvi_kvs_script.h"
+#include "kvi_kvs_variantlist.h"
+#include "kvi_kvs_runtimecontext.h"
+
+#include "kvi_app.h"
+#include "kvi_window.h"
+#include "kvi_console.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_out.h"
+
+
+KviKvsTimer::KviKvsTimer(const QString &szName,Lifetime l,KviWindow * pWnd,int iDelay,int iId,KviKvsScript * pCallback,KviKvsVariantList * pParams)
+{
+ m_szName = szName;
+ m_eLifetime = l;
+ m_pWnd = pWnd;
+ m_iDelay = iDelay;
+ m_iId = iId;
+ m_pCallback = pCallback;
+ //m_pVariables = new KviKvsHash();
+ m_pRunTimeData = new KviKvsExtendedRunTimeData(new KviKvsHash(),TRUE);
+ m_pParameterList = pParams;
+}
+
+KviKvsTimer::~KviKvsTimer()
+{
+ delete m_pRunTimeData;
+ delete m_pParameterList;
+ delete m_pCallback;
+}
+
+
+
+
+
+
+
+KviKvsTimerManager * KviKvsTimerManager::m_pInstance = 0;
+
+
+KviKvsTimerManager::KviKvsTimerManager()
+: QObject()
+{
+ m_pTimerDictById = new KviPointerHashTable<int,KviKvsTimer>(17);
+ m_pTimerDictById->setAutoDelete(false);
+ m_pTimerDictByName = new KviPointerHashTable<QString,KviKvsTimer>(17,false);
+ m_pTimerDictByName->setAutoDelete(false);
+ m_pKilledTimerList = 0;
+ m_iAssassinTimer = 0;
+ m_iCurrentTimer = 0;
+}
+
+KviKvsTimerManager::~KviKvsTimerManager()
+{
+ delete m_pTimerDictById;
+ m_pTimerDictByName->setAutoDelete(true);
+ delete m_pTimerDictByName;
+ if(m_pKilledTimerList)delete m_pKilledTimerList;
+}
+
+void KviKvsTimerManager::init()
+{
+ if(KviKvsTimerManager::m_pInstance)
+ {
+ debug("Trying to double init() the timer manager!");
+ return;
+ }
+ KviKvsTimerManager::m_pInstance = new KviKvsTimerManager();
+}
+
+void KviKvsTimerManager::done()
+{
+ if(!KviKvsTimerManager::m_pInstance)
+ {
+ debug("Trying to call done() on a non existing timer manager!");
+ return;
+ }
+ delete KviKvsTimerManager::m_pInstance;
+ KviKvsTimerManager::m_pInstance = 0;
+}
+
+bool KviKvsTimerManager::addTimer(const QString &szName,KviKvsTimer::Lifetime l,KviWindow * pWnd,int iDelay,KviKvsScript * pCallback,KviKvsVariantList * pParams)
+{
+ int iId = startTimer(iDelay);
+
+ if(iId <= 0)
+ {
+ delete pCallback;
+ pCallback = 0;
+ delete pParams;
+ pParams = 0;
+ return false;
+ }
+
+ KviKvsTimer * t = new KviKvsTimer(szName,l,pWnd,iDelay,iId,pCallback,pParams);
+ KviKvsTimer * old = m_pTimerDictByName->find(szName);
+ if(old)deleteTimer(old->id());
+ m_pTimerDictByName->insert(szName,t);
+ m_pTimerDictById->insert(t->id(),t);
+ return true;
+}
+
+bool KviKvsTimerManager::deleteTimer(const QString &szName)
+{
+ KviKvsTimer * t = m_pTimerDictByName->find(szName);
+ if(!t)return false;
+ killTimer(t->id());
+ m_pTimerDictById->remove(t->id());
+ m_pTimerDictByName->remove(szName);
+ scheduleKill(t);
+ return true;
+}
+
+bool KviKvsTimerManager::deleteTimer(int iId)
+{
+ KviKvsTimer * t = m_pTimerDictById->find(iId);
+ if(!t)return false;
+ killTimer(t->id());
+ m_pTimerDictById->remove(t->id());
+ m_pTimerDictByName->remove(t->name());
+ scheduleKill(t);
+ return true;
+}
+
+bool KviKvsTimerManager::deleteCurrentTimer()
+{
+ if(!m_iCurrentTimer)return false;
+ deleteTimer(m_iCurrentTimer);
+ m_iCurrentTimer = 0;
+ return true;
+}
+
+void KviKvsTimerManager::deleteAllTimers()
+{
+ if(m_pTimerDictById->isEmpty())return;
+ KviPointerHashTableIterator<int,KviKvsTimer> it(*m_pTimerDictById);
+ KviPointerList<KviKvsTimer> tl;
+ tl.setAutoDelete(false);
+ while(KviKvsTimer * t = it.current())
+ {
+ tl.append(t);
+ ++it;
+ }
+ for(KviKvsTimer * dying = tl.first();dying;dying = tl.next())
+ {
+ deleteTimer(dying->id());
+ }
+}
+
+void KviKvsTimerManager::scheduleKill(KviKvsTimer *t)
+{
+ if(!m_pKilledTimerList)
+ {
+ m_pKilledTimerList = new KviPointerList<KviKvsTimer>;
+ m_pKilledTimerList->setAutoDelete(true);
+ }
+ m_pKilledTimerList->append(t);
+
+ if(!m_iAssassinTimer)m_iAssassinTimer = startTimer(0);
+}
+
+
+void KviKvsTimerManager::timerEvent(QTimerEvent *e)
+{
+ int iId = e->timerId();
+
+ if(iId == m_iAssassinTimer)
+ {
+ if(!m_pKilledTimerList)
+ {
+ debug("ops.. assassing timer with no victims ?");
+ } else {
+ m_pKilledTimerList->clear();
+ }
+ killTimer(m_iAssassinTimer);
+ m_iAssassinTimer = 0;
+ return;
+ }
+
+ KviKvsTimer * t = m_pTimerDictById->find(iId);
+ if(!t)
+ {
+ debug("Internal error: got an nonexistant timer event");
+ return; // HUH ?
+ }
+
+ if(!g_pApp->windowExists(t->window()))
+ {
+ if(t->lifetime() != KviKvsTimer::Persistent)
+ {
+ deleteTimer(t->id());
+ return;
+ }
+
+ // rebind to an existing console
+ t->setWindow(g_pApp->activeConsole());
+ }
+
+ KviKvsScript copy(*(t->callback()));
+
+ m_iCurrentTimer = t->id();
+ bool bRet = copy.run(t->window(),
+ t->parameterList(),
+ 0,
+ KviKvsScript::PreserveParams,
+ t->runTimeData());
+
+ m_iCurrentTimer = 0;
+
+ if(!bRet)
+ {
+ // the timer may already have been scheduled for killing!
+ if(KVI_OPTION_BOOL(KviOption_boolKillBrokenTimers))
+ {
+ t->window()->output(KVI_OUT_PARSERERROR,__tr2qs("Timer '%Q' has a broken callback handler: killing the timer"),&(t->name()));
+ deleteTimer(t->id());
+ }
+ return;
+ }
+
+ // the timer may already have been scheduled for killing!
+
+ if(t->lifetime() == KviKvsTimer::SingleShot)
+ {
+ deleteTimer(t->id());
+ }
+}
diff --git a/src/kvirc/kvs/kvi_kvs_timermanager.h b/src/kvirc/kvs/kvi_kvs_timermanager.h
new file mode 100644
index 00000000..f8e20f10
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_timermanager.h
@@ -0,0 +1,123 @@
+#ifndef _KVI_KVS_TIMERMANAGER_H_
+#define _KVI_KVS_TIMERMANAGER_H_
+//=============================================================================
+//
+// File : kvi_kvs_timermanager.h
+// Created on Fri 19 Dec 2003 01:29:22 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+
+#include <qobject.h>
+#include "kvi_pointerhashtable.h"
+#include "kvi_pointerhashtable.h"
+#include "kvi_pointerlist.h"
+
+class KviKvsTimerManager;
+class KviKvsScript;
+class KviKvsHash;
+class KviKvsVariantList;
+class KviKvsExtendedRunTimeData;
+
+class KviWindow;
+
+// FIXME: This stuff could be moved to a module
+// called timer
+// timer.start(){}
+// timer.stop
+// timer.exists
+// timer.timeout
+// timer.suspend
+// etc...
+// Then we could remap timer.start to the old /timer call
+// by hardcoding it...
+
+class KVIRC_API KviKvsTimer
+{
+ friend class KviKvsTimerManager;
+public:
+ enum Lifetime { SingleShot, WindowLifetime, Persistent };
+protected:
+ KviKvsTimer(const QString &szName,Lifetime l,KviWindow * pWnd,int iDelay,int iId,KviKvsScript * pCallback,KviKvsVariantList * pParams);
+public:
+ ~KviKvsTimer();
+protected:
+ Lifetime m_eLifetime; // the type of this timer
+ KviWindow * m_pWnd; // the window that this timer is (currently) bound to
+ QString m_szName; // this timer name
+ KviKvsScript * m_pCallback; // callback to be executed at timer shots
+ int m_iDelay; // the timer delay in msecs
+ int m_iId; // the system id of this timer
+ KviKvsExtendedRunTimeData * m_pRunTimeData; // ext run time data for this timer object
+ KviKvsVariantList * m_pParameterList; // parameter list
+public:
+ KviWindow * window(){ return m_pWnd; };
+ const QString & name(){ return m_szName; };
+ const KviKvsScript * callback(){ return m_pCallback; };
+ Lifetime lifetime(){ return m_eLifetime; };
+ int delay(){ return m_iDelay; };
+ int id(){ return m_iId; };
+ //KviKvsHash * variables(){ return m_pVariables; };
+ KviKvsExtendedRunTimeData * runTimeData(){ return m_pRunTimeData; };
+ KviKvsVariantList * parameterList(){ return m_pParameterList; };
+protected:
+ void setWindow(KviWindow * pWnd){ m_pWnd = pWnd; };
+};
+
+
+class KVIRC_API KviKvsTimerManager : public QObject
+{
+ Q_OBJECT
+protected: // it only can be created and destroyed by KviKvsTimerManager::init()/done()
+ KviKvsTimerManager();
+ ~KviKvsTimerManager();
+private:
+ KviPointerHashTable<int,KviKvsTimer> * m_pTimerDictById; // stored by id
+ KviPointerHashTable<QString,KviKvsTimer> * m_pTimerDictByName; // stored by name
+ static KviKvsTimerManager * m_pInstance; // the one and only timer manager instance
+ KviPointerList<KviKvsTimer> * m_pKilledTimerList; // list of timers for that killing has been scheduled
+ int m_iAssassinTimer; // assassin timer id
+ int m_iCurrentTimer; // the timer currently executed
+public:
+ static KviKvsTimerManager * instance(){ return m_pInstance; };
+ static void init();
+ static void done();
+ // the pCallback and pParams are owned by the timer: they WILL be deleted
+ bool addTimer(const QString &szName,KviKvsTimer::Lifetime l,KviWindow * pWnd,int iDelay,KviKvsScript * pCallback,KviKvsVariantList * pParams);
+ bool deleteTimer(const QString &szName);
+ bool deleteTimer(int iId);
+ // the timer manager does not trigger timers concurrently
+ // this means that if this is called from a timer handler
+ // the current timer will be unique
+ bool deleteCurrentTimer();
+ void deleteAllTimers();
+ bool timerExists(const QString &szName){ return m_pTimerDictByName->find(szName); };
+ KviPointerHashTable<QString,KviKvsTimer> * timerDict()
+ { return m_pTimerDictByName; };
+protected:
+ void scheduleKill(KviKvsTimer * t);
+ virtual void timerEvent(QTimerEvent *e);
+};
+
+
+#endif //!_KVI_KVS_TIMERMANAGER_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode.h b/src/kvirc/kvs/kvi_kvs_treenode.h
new file mode 100644
index 00000000..0f9505ed
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode.h
@@ -0,0 +1,375 @@
+#ifndef _KVI_KVS_TREENODE_H_
+#define _KVI_KVS_TREENODE_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode.h
+// Creation date : Thu 25 Sep 2003 05.12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_kvs_treenode_base.h"
+
+#include "kvi_kvs_treenode_aliasfunctioncall.h"
+#include "kvi_kvs_treenode_aliassimplecommand.h"
+#include "kvi_kvs_treenode_arraycount.h"
+#include "kvi_kvs_treenode_arrayelement.h"
+#include "kvi_kvs_treenode_arrayorhashelement.h"
+#include "kvi_kvs_treenode_arrayreferenceassert.h"
+#include "kvi_kvs_treenode_baseobjectfunctioncall.h"
+#include "kvi_kvs_treenode_callbackcommand.h"
+#include "kvi_kvs_treenode_command.h"
+#include "kvi_kvs_treenode_commandevaluation.h"
+#include "kvi_kvs_treenode_commandwithparameters.h"
+#include "kvi_kvs_treenode_compositedata.h"
+#include "kvi_kvs_treenode_constantdata.h"
+#include "kvi_kvs_treenode_corecallbackcommand.h"
+#include "kvi_kvs_treenode_corefunctioncall.h"
+#include "kvi_kvs_treenode_coresimplecommand.h"
+#include "kvi_kvs_treenode_data.h"
+#include "kvi_kvs_treenode_datalist.h"
+#include "kvi_kvs_treenode_expression.h"
+#include "kvi_kvs_treenode_expressionreturn.h"
+#include "kvi_kvs_treenode_extendedscopevariable.h"
+#include "kvi_kvs_treenode_functioncall.h"
+#include "kvi_kvs_treenode_globalvariable.h"
+#include "kvi_kvs_treenode_hashcount.h"
+#include "kvi_kvs_treenode_hashelement.h"
+#include "kvi_kvs_treenode_hashreferenceassert.h"
+#include "kvi_kvs_treenode_indirectdata.h"
+#include "kvi_kvs_treenode_instruction.h"
+#include "kvi_kvs_treenode_instructionblock.h"
+#include "kvi_kvs_treenode_localvariable.h"
+#include "kvi_kvs_treenode_modulecallbackcommand.h"
+#include "kvi_kvs_treenode_modulefunctioncall.h"
+#include "kvi_kvs_treenode_modulesimplecommand.h"
+#include "kvi_kvs_treenode_multipleparameteridentifier.h"
+#include "kvi_kvs_treenode_objectfield.h"
+#include "kvi_kvs_treenode_objectfunctioncall.h"
+#include "kvi_kvs_treenode_operation.h"
+#include "kvi_kvs_treenode_parameterreturn.h"
+#include "kvi_kvs_treenode_rebindingswitch.h"
+#include "kvi_kvs_treenode_scopeoperator.h"
+#include "kvi_kvs_treenode_simplecommand.h"
+#include "kvi_kvs_treenode_singleparameteridentifier.h"
+#include "kvi_kvs_treenode_specialcommand.h"
+#include "kvi_kvs_treenode_specialcommandbreak.h"
+#include "kvi_kvs_treenode_specialcommandclass.h"
+#include "kvi_kvs_treenode_specialcommanddefpopup.h"
+#include "kvi_kvs_treenode_specialcommanddo.h"
+#include "kvi_kvs_treenode_specialcommandfor.h"
+#include "kvi_kvs_treenode_specialcommandforeach.h"
+#include "kvi_kvs_treenode_specialcommandif.h"
+#include "kvi_kvs_treenode_specialcommandswitch.h"
+#include "kvi_kvs_treenode_specialcommandunset.h"
+#include "kvi_kvs_treenode_specialcommandwhile.h"
+#include "kvi_kvs_treenode_stringcast.h"
+#include "kvi_kvs_treenode_switchlist.h"
+#include "kvi_kvs_treenode_thisobjectfunctioncall.h"
+#include "kvi_kvs_treenode_variable.h"
+#include "kvi_kvs_treenode_voidfunctioncall.h"
+
+//
+// Hierarchy (the nodes that have some missing implementation have the leading '?' char)
+//
+//
+// TreeNode(OK) (never instantiated)
+// |
+// +--Instruction(OK) (never instantiated) (used as interface by InstructionBlock) : instruction has bool execute() = 0;
+// | |
+// | +--InstructionBlock(OK)
+// | |
+// | +--ExpressionReturn(OK)
+// | |
+// | +--ParameterReturn(OK)
+// | |
+// | |--Command(OK) (never instantiated)
+// | | |
+// | | +--RebindingSwitch(OK)
+// | | |
+// | | +--CommandWithParameters(OK) (never instantiated)
+// | | | |
+// | | | +--SimpleCommand(OK) (never instantiated)
+// | | | | |
+// | | | | +--CoreSimpleCommand(OK)
+// | | | | |
+// | | | | +--ModuleSimpleCommand(OK)
+// | | | | |
+// | | | | +--AliasSimpleCommand(OK)
+// | | | |
+// | | | +--CallbackCommand(OK) (never instantiated)
+// | | | |
+// | | | +--CoreCallbackCommand(OK)
+// | | | |
+// | | | +--ModuleCallbackCommand(OK)
+// | | |
+// | | +--SpecialCommand(OK) (never instantiated)
+// | | |
+// | | +--SpecialCommandIf(OK)
+// | | |
+// | | +--SpecialCommandWhile(OK)
+// | | |
+// | | +--SpecialCommandDo(OK)
+// | | |
+// | | +--SpecialCommandForeach(OK)
+// | | |
+// | | +--SpecialCommandFor(OK)
+// | | |
+// | | +--SpecialCommandBreak(OK)
+// | | |
+// | | +--SpecialCommandSwitch(OK)
+// | | |
+// | | +--SpecialCommandDefpopup(OK)
+// | | |
+// | | +--SpecialCommandClass(OK)
+// | |
+// | +--VoidFunctionCall(OK)
+// | |
+// | +--Operation(OK) : has a m_pTargetData pointer (never instantiated)
+// | |
+// | +--OperationAssignment(OK)
+// | |
+// | +--OperationIncrement(OK)
+// | |
+// | +--OperationDecrement(OK)
+// | |
+// | +--OperationSelfSum(OK)
+// | |
+// | +--OperationSelfSubtraction(OK)
+// | |
+// | +--OperationSelfDivision(OK)
+// | |
+// | +--OperationSelfMultiplication(OK)
+// | |
+// | +--OperationSelfModulus(OK)
+// | |
+// | +--OperationSelfOr(OK)
+// | |
+// | +--OperationSelfAnd(OK)
+// | |
+// | +--OperationSelfXor(OK)
+// | |
+// | +--OperationSelfShl(OK)
+// | |
+// | +--OperationSelfShr(OK)
+// | |
+// | +--OperationStringAppend(OK)
+// | |
+// | +--OperationStringAppendWithComma(OK)
+// | |
+// | +--OperationStringAppendWithSpace(OK)
+// | |
+// | +--OperationStringTransliteration(OK)
+// | |
+// | +--OperationStringSubstitution(OK)
+// |
+// +--Data(OK) data has
+// | | bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer) <-- this MUST be implemented
+// | | KviKvsVariant * evaluateReadWrite(KviKvsRunTimeContext * c) <-- this MUST be implemented if isReadOnly returns false
+// | |
+// | | This class is NEVER instantiated directly
+// | |
+// | | isReadOnly(); true by default
+// | | canEvaluateToObjectReference(); false by default
+// | | isFunctionCall(); false by default
+// | | canEvaluateInObjectScope(); false by default
+// | | (DEAD)canReleaseResult(); false by default (can the result be simply "taken" ?)
+// | |
+// | +--StringCast(OK) has some kind of data inside that is converted to string "on the fly"
+// | |
+// | +--ConstantData(OK) have real constant data
+// | | everything inherited from data
+// | | only evaluateReadOnly is implemented and it never fails
+// | |
+// | +--CompositeData(OK) have real data composed of constants, it is an implicit StringCast too (it isn't inherited from StringCast since it operates in a different way)
+// | | everything inherited from data
+// | | only evaluateReadOnly is implemented and it never fails
+// | |
+// | +--ScopeOperator( ) Has a left side that must evaluate to ob reference
+// | | Has a right side that must be a variable reference or function call
+// | | isReadOnly() depends on the right child
+// | | canEvaluateToObjectReference() depends on last child
+// | | isFunctionCall() depends on last child
+// | | canEvaluateInObjectScope() depends on last child
+// | | (DEAD)canReleaseResult() depends on last child
+// | |
+// | +--SingleParameterIdentifier(OK) this is $n
+// | | canEvaluateToObjectReference() = true
+// | |
+// | +--MultipleParameterIdentifier(OK) this is $n-[n]
+// | |
+// | +--CommandEvaluation(OK) this is ${ ... }
+// | | canEvaluateToObjectReference() = true
+// | |
+// | +--Variable(OK) this is something related to %xxx (never instantiated)
+// | | | canEvaluateInObjectScope() = true
+// | | | isReadOnly() = false
+// | | | canEvaluateToObjectReference() = true
+// | | |
+// | | +--LocalVariable(OK)
+// | | |
+// | | +--GlobalVariable(OK)
+// | | |
+// | | +--ExtendedScopeVariable(OK)
+// | | |
+// | | +--ObjectField(OK)
+// | |
+// | +--IndirectData(OK) takes a Data as source (never instantiated)
+// | | | canEvaluateInObjectScope() depends on the parameter data
+// | | |
+// | | +--ArrayOrHashElement(OK) isReadOnly() depends on the source data (never instantiated)
+// | | | | canEvaluateToObjectReference() = true
+// | | | |
+// | | | +--ArrayElement(OK) the source Data must evaluate to an array or be writeable in order to convert it
+// | | | | and an index that must evaluate to an integer (evaluate ok, result inherited ok)
+// | | | |
+// | | | +--HashElement(OK) the source Data must evaluate to a hash or be writeable in order to convert it
+// | | | and an index that must evaluate to a non-empty hash key (evaluate ok, result inherited ok)
+// | | |
+// | | +--HashCount(OK) the source Data must evaluate to a hash or be writeable in order to convert it
+// | | |
+// | | +--ArrayCount(OK) the source Data must evaluate to an array or be writeable in order to convert it
+// | | |
+// | | +--HashReferenceAssert(OK) the source Data must evaluate to a hash or be writeable in order to convert it (otherwise asserts)
+// | | | isReadOnly() depends on the parameter data
+// | | |
+// | | +--ArrayReferenceAssert(OK) the source Data must evaluate to an array or be writeable in order to convert it (otherwise asserts)
+// | | isReadOnly() depends on the parameter data
+// | |
+// | +--Expression(OK) (never instantiated)
+// | | |
+// | | +--ExpressionVariableOperand(OK) (evaluate and result ok)
+// | | |
+// | | +--ExpressionConstantOperand(OK) (evaluate and result ok)
+// | | |
+// | | +--ExpressionOperator(OK) (never instantiated)
+// | | |
+// | | +--ExpressionBinaryOperator(OK) (never instantiated)
+// | | | |
+// | | | +--ExpressionBinaryOperatorSum(OK) (evaluate and result ok)
+// | | | |
+// | | | +--ExpressionBinaryOperatorSubtraction(OK) (evaluate and result ok)
+// | | | |
+// | | | +--ExpressionBinaryOperatorMultiplication(OK) (evaluate and result ok)
+// | | | |
+// | | | +--ExpressionBinaryOperatorDivision(OK) (evaluate and result ok)
+// | | | |
+// | | | +--ExpressionBinaryOperatorBitwiseAnd(OK) (evaluate and result ok)
+// | | | |
+// | | | +--ExpressionBinaryOperatorBitwiseOr(OK) (evaluate and result ok)
+// | | | |
+// | | | +--ExpressionBinaryOperatorBitwiseXor(OK) (evaluate and result ok)
+// | | | |
+// | | | +--ExpressionBinaryOperatorShiftLeft(OK) (evaluate and result ok)
+// | | | |
+// | | | +--ExpressionBinaryOperatorShiftRight(OK) (evaluate and result ok)
+// | | | |
+// | | | +--ExpressionBinaryOperatorAnd(OK) (evaluate and result ok)
+// | | | |
+// | | | +--ExpressionBinaryOperatorOr(OK) (evaluate and result ok)
+// | | | |
+// | | | +--ExpressionBinaryOperatorXor(OK) (evaluate and result ok)
+// | | | |
+// | | | +--ExpressionBinaryOperatorLowerThan(OK) (evaluate and result ok)
+// | | | |
+// | | | +--ExpressionBinaryOperatorGreaterThan(OK) (evaluate and result ok)
+// | | | |
+// | | | +--ExpressionBinaryOperatorLowerOrEqualTo(OK) (evaluate and result ok)
+// | | | |
+// | | | +--ExpressionBinaryOperatorGreaterOrEqualTo(OK) (evaluate and result ok)
+// | | | |
+// | | | +--ExpressionBinaryOperatorEqualTo(OK) (evaluate and result ok)
+// | | | |
+// | | | +--ExpressionBinaryOperatorNotEqualTo(OK) (evaluate and result ok)
+// | | |
+// | | +--ExpressionUnaryOperator(OK) (never instantiated)
+// | | |
+// | | +--ExpressionUnaryOperatorNegate(OK) (evaluate and result ok)
+// | | |
+// | | +--ExpressionUnaryOperatorBitwiseNot(OK) (evaluate and result ok)
+// | | |
+// | | +--ExpressionUnaryOperatorLogicalNot(OK) (evaluate and result ok)
+// | |
+// | +--FunctionCall(OK) this is something like $xxx and has a name. Can be called as a void instruction
+// | | canEvaluateToObjectReference() = true
+// | | isFunctionCall() = true
+// | |
+// | +--ModuleFunctionCall(OK)
+// | |
+// | +--AliasFunctionCall(OK)
+// | |
+// | +--CoreFunctionCall(OK)
+// | |
+// | +--ObjectFunctionCall( ) this is the only function call type appended to a scope operator
+// | | canEvaluateInObjectScope() = true (never instantiated)
+// | |
+// | +--ThisObjectFunctionCall( )
+// | |
+// | +--BaseObjectFunctionCall( )
+// |
+// +--DataList(OK)
+// |
+// +--SwitchList(OK)
+// |
+// +--SpecialCommandSwitchLabel(Never instantiated)
+// | |
+// | +--SpecialCommandSwitchLabelCase(OK)
+// | |
+// | +--SpecialCommandSwitchLabelMatch(OK)
+// | |
+// | +--SpecialCommandSwitchLabelRegexp(OK)
+// | |
+// | +--SpecialCommandSwitchLabelDefault(OK)
+// |
+// +--SpecialCommandDefpopupLabel(Never instantiated)
+// |
+// +--SpecialCommandDefpopupLabelPrologue(OK)
+// |
+// +--SpecialCommandDefpopupLabelEpilogue(OK)
+// |
+// +--SpecialCommandDefpopupConditionalLabel(Never instantiated)
+// |
+// +--SpecialCommandDefpopupLabelSeparator(OK)
+// |
+// +--SpecialCommandDefpopupConditionalLabelWithTextAndIcon (Never instantiated)
+// |
+// +--SpecialCommandDefpopupLabelPopup(OK)
+// |
+// +--SpecialCommandDefpopupLabelExtpopup(OK)
+// |
+// +--SpecialCommandDefpopupLabelItem(OK)
+// |
+// +--SpecialCommandDefpopupLabelLabel(OK)
+//
+//
+//
+
+
+//
+// Tree morphology
+//
+// InstructionBlock
+// [Instruction]
+//
+// ScopeOperator
+// [Data]->[Data]
+//
+
+
+#endif //!_KVI_KVS_TREENODE_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp b/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp
new file mode 100644
index 00000000..f864cea6
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.cpp
@@ -0,0 +1,84 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_aliasfunctioncall.cpp
+// Created on Tue 07 Oct 2003 03:21:23 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_aliasfunctioncall.h"
+#include "kvi_kvs_variantlist.h"
+#include "kvi_kvs_aliasmanager.h"
+#include "kvi_locale.h"
+#include "kvi_qstring.h"
+
+KviKvsTreeNodeAliasFunctionCall::KviKvsTreeNodeAliasFunctionCall(const QChar * pLocation,const QString &szAliasName,KviKvsTreeNodeDataList * pParams)
+: KviKvsTreeNodeFunctionCall(pLocation,szAliasName,pParams)
+{
+
+}
+
+KviKvsTreeNodeAliasFunctionCall::~KviKvsTreeNodeAliasFunctionCall()
+{
+}
+
+void KviKvsTreeNodeAliasFunctionCall::contextDescription(QString &szBuffer)
+{
+ KviQString::sprintf(szBuffer,"Alias Function Call \"%Q\"",&m_szFunctionName);
+}
+
+
+
+void KviKvsTreeNodeAliasFunctionCall::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s AliasFunctionCall(%s)",prefix,m_szFunctionName.utf8().data());
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pParams->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeAliasFunctionCall::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariantList l;
+ if(!m_pParams->evaluate(c,&l))return false;
+
+ pBuffer->setNothing();
+
+ const KviKvsScript * s = KviKvsAliasManager::instance()->lookup(m_szFunctionName);
+ if(!s)
+ {
+ c->error(this,__tr2qs("Call to undefined function '%Q'"),&m_szFunctionName);
+ return false;
+ }
+
+ KviKvsScript copy(*s); // quick reference
+
+ if(!copy.run(c->window(),&l,pBuffer,KviKvsScript::PreserveParams))
+ {
+ c->error(this,__tr2qs("Error in inner alias function call '%Q', called from this context"),&m_szFunctionName);
+ return false;
+ }
+#endif
+ return true;
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.h b/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.h
new file mode 100644
index 00000000..04ca50a3
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_aliasfunctioncall.h
@@ -0,0 +1,45 @@
+#ifndef _KVI_KVS_TREENODE_ALIASFUNCTIONCALL_H_
+#define _KVI_KVS_TREENODE_ALIASFUNCTIONCALL_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_aliasfunctioncall.h
+// Created on Tue 07 Oct 2003 03:21:23 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_functioncall.h"
+#include "kvi_kvs_treenode_datalist.h"
+
+class KviKvsRunTimeContext;
+
+class KVIRC_API KviKvsTreeNodeAliasFunctionCall : public KviKvsTreeNodeFunctionCall
+{
+public:
+ KviKvsTreeNodeAliasFunctionCall(const QChar * pLocation,const QString &szAliasName,KviKvsTreeNodeDataList * pParams);
+ ~KviKvsTreeNodeAliasFunctionCall();
+public:
+ virtual void dump(const char * prefix);
+ virtual void contextDescription(QString &szBuffer);
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer);
+};
+
+#endif //!_KVI_KVS_TREENODE_ALIASFUNCTIONCALL_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp b/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp
new file mode 100644
index 00000000..974ae941
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.cpp
@@ -0,0 +1,120 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_aliassimplecommand.cpp
+// Created on Thu 09 Oct 2003 02:16:42 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_aliassimplecommand.h"
+#include "kvi_kvs_treenode_datalist.h"
+#include "kvi_kvs_treenode_switchlist.h"
+#include "kvi_kvs_aliasmanager.h"
+#include "kvi_locale.h"
+#include "kvi_options.h"
+#include "kvi_irccontext.h"
+#include "kvi_window.h"
+#include "kvi_ircconnection.h"
+#include "kvi_qcstring.h"
+#include "kvi_out.h"
+
+
+KviKvsTreeNodeAliasSimpleCommand::KviKvsTreeNodeAliasSimpleCommand(const QChar * pLocation,const QString &szCmdName,KviKvsTreeNodeDataList * params)
+: KviKvsTreeNodeSimpleCommand(pLocation,szCmdName,params)
+{
+}
+
+
+KviKvsTreeNodeAliasSimpleCommand::~KviKvsTreeNodeAliasSimpleCommand()
+{
+}
+
+void KviKvsTreeNodeAliasSimpleCommand::contextDescription(QString &szBuffer)
+{
+ KviQString::sprintf(szBuffer,"Alias Simple Command \"%Q\"",&m_szCmdName);
+}
+
+void KviKvsTreeNodeAliasSimpleCommand::dump(const char * prefix)
+{
+ debug("%s AliasSimpleCommand(%s)",prefix,m_szCmdName.utf8().data());
+ dumpSwitchList(prefix);
+ dumpParameterList(prefix);
+}
+
+bool KviKvsTreeNodeAliasSimpleCommand::execute(KviKvsRunTimeContext * c)
+{
+ KviKvsVariantList l;
+ if(!m_pParams->evaluate(c,&l))return false;
+
+ KviKvsSwitchList swl;
+ if(m_pSwitches)
+ {
+ if(!(m_pSwitches->evaluate(c,&swl)))return false;
+ }
+
+ const KviKvsScript * s = KviKvsAliasManager::instance()->lookup(m_szCmdName);
+ if(!s)
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolSendUnknownCommandsAsRaw))
+ {
+ QString szAll;
+ l.allAsString(szAll);
+
+ if(!szAll.isEmpty())szAll.prepend(" ");
+ szAll.prepend(m_szCmdName);
+
+ KviQCString szData;
+
+ if(!c->window()->context())
+ goto no_way_to_send_as_raw;
+ if(!c->window()->connection())
+ goto no_way_to_send_as_raw;
+
+ szData = c->window()->connection()->encodeText(szAll);
+ if(!szData.data())szData = "";
+
+ if(!c->window()->connection()->sendData(szData.data()))
+ goto no_way_to_send_as_raw;
+
+ c->window()->output(KVI_OUT_RAW,__tr2qs("[RAW]: %Q"),&szAll);
+ return true;
+no_way_to_send_as_raw:
+ c->warning(this,__tr2qs("Failed to send an unknown command as /raw"));
+ c->error(this,__tr2qs("Call to undefined command '%Q'"),&m_szCmdName);
+ return false;
+ } else {
+ c->error(this,__tr2qs("Call to undefined command '%Q'"),&m_szCmdName);
+ return false;
+ }
+ }
+
+ KviKvsScript copy(*s); // quick reference
+ // FIXME: the ExtRTData could be a member structure
+ // it would avoid the constructor call each time
+ KviKvsExtendedRunTimeData extData(&swl);
+
+ if(!copy.run(c->window(),&l,0,KviKvsScript::PreserveParams,&extData))
+ {
+ c->error(this,__tr2qs("Error in inner alias command call '%Q', called from this context"),&m_szCmdName);
+ return false;
+ }
+ return true;
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.h b/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.h
new file mode 100644
index 00000000..0247e9be
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_aliassimplecommand.h
@@ -0,0 +1,47 @@
+#ifndef _KVI_KVS_TREENODE_ALIASSIMPLECOMMAND_H_
+#define _KVI_KVS_TREENODE_ALIASSIMPLECOMMAND_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_aliassimplecommand.h
+// Created on Thu 09 Oct 2003 02:16:42 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_simplecommand.h"
+
+class KviKvsTreeNodeDataList;
+class KviKvsRunTimeContext;
+
+class KVIRC_API KviKvsTreeNodeAliasSimpleCommand : public KviKvsTreeNodeSimpleCommand
+{
+public:
+ KviKvsTreeNodeAliasSimpleCommand(const QChar * pLocation,const QString &szCmdName,KviKvsTreeNodeDataList * params);
+ ~KviKvsTreeNodeAliasSimpleCommand();
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+
+
+#endif //!_KVI_KVS_TREENODE_ALIASSIMPLECOMMAND_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_arraycount.cpp b/src/kvirc/kvs/kvi_kvs_treenode_arraycount.cpp
new file mode 100644
index 00000000..1479fefe
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_arraycount.cpp
@@ -0,0 +1,86 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_arraycount.cpp
+// Created on Tue 07 Oct 2003 03:00:52 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_arraycount.h"
+#include "kvi_kvs_variant.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_locale.h"
+#include "kvi_kvs_object.h"
+
+
+KviKvsTreeNodeArrayCount::KviKvsTreeNodeArrayCount(const QChar * pLocation,KviKvsTreeNodeData * pSource)
+: KviKvsTreeNodeIndirectData(pLocation,pSource)
+{
+}
+
+KviKvsTreeNodeArrayCount::~KviKvsTreeNodeArrayCount()
+{
+}
+
+void KviKvsTreeNodeArrayCount::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Array Count Operator";
+}
+
+void KviKvsTreeNodeArrayCount::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s ArrayCount",prefix);
+#endif
+}
+
+bool KviKvsTreeNodeArrayCount::evaluateReadOnlyInObjectScope(KviKvsObject *o,KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant val;
+ if(o)
+ {
+ if(!m_pSource->evaluateReadOnlyInObjectScope(o,c,&val))return false;
+ } else {
+ if(!m_pSource->evaluateReadOnly(c,&val))return false;
+ }
+
+ if(!val.isArray())
+ {
+ if(!val.isNothing())
+ {
+ QString szType;
+ val.getTypeName(szType);
+ c->warning(this,__tr2qs("The argument of the array count '#' operator didn't evaluate to an array: automatic conversion from type '%Q' supplied"),&szType);
+ }
+ pBuffer->setInteger(0);
+ return true;
+ }
+
+ pBuffer->setInteger(val.array()->size());
+#endif
+ return true;
+}
+
+bool KviKvsTreeNodeArrayCount::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ return evaluateReadOnlyInObjectScope(0,c,pBuffer);
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_arraycount.h b/src/kvirc/kvs/kvi_kvs_treenode_arraycount.h
new file mode 100644
index 00000000..deae2588
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_arraycount.h
@@ -0,0 +1,47 @@
+#ifndef _KVI_KVS_TREENODE_ARRAYCOUNT_H_
+#define _KVI_KVS_TREENODE_ARRAYCOUNT_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_arraycount.h
+// Created on Tue 07 Oct 2003 03:00:52 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_indirectdata.h"
+
+class KviKvsRunTimeContext;
+class KviKvsVariant;
+class KviKvsObject;
+
+class KVIRC_API KviKvsTreeNodeArrayCount : public KviKvsTreeNodeIndirectData
+{
+public:
+ KviKvsTreeNodeArrayCount(const QChar * pLocation,KviKvsTreeNodeData * pSource);
+ ~KviKvsTreeNodeArrayCount();
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer);
+ virtual bool evaluateReadOnlyInObjectScope(KviKvsObject *o,KviKvsRunTimeContext * c,KviKvsVariant * pBuffer);
+};
+
+#endif //!_KVI_KVS_TREENODE_ARRAYCOUNT_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp b/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp
new file mode 100644
index 00000000..ada9fd82
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.cpp
@@ -0,0 +1,161 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_arrayelement.cpp
+// Created on Tue 07 Oct 2003 02:58:41 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_arrayelement.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_locale.h"
+#include "kvi_kvs_array.h"
+#include "kvi_kvs_object.h"
+
+KviKvsTreeNodeArrayElement::KviKvsTreeNodeArrayElement(const QChar * pLocation,KviKvsTreeNodeData * pSource,KviKvsTreeNodeExpression * pIndex)
+: KviKvsTreeNodeArrayOrHashElement(pLocation,pSource)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pIndex = pIndex;
+ m_pIndex->setParent(this);
+#endif
+}
+
+
+KviKvsTreeNodeArrayElement::~KviKvsTreeNodeArrayElement()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pIndex;
+#endif
+}
+
+void KviKvsTreeNodeArrayElement::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Array Element Evaluation";
+}
+
+void KviKvsTreeNodeArrayElement::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s ArrayElement",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pSource->dump(tmp.utf8().data());
+ m_pIndex->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeArrayElement::evaluateIndex(KviKvsRunTimeContext *c,kvs_int_t &iVal)
+{
+ KviKvsVariant idx;
+ if(!m_pIndex->evaluateReadOnly(c,&idx))return false;
+
+ if(!idx.asInteger(iVal))
+ {
+ c->error(this,__tr2qs("Array index didn't evaluate to an integer"));
+ return false;
+ }
+
+ if(iVal < 0)
+ {
+ c->error(this,__tr2qs("Array index evaluated to a negative integer (non negative integer expected)"));
+ return false;
+ }
+ return true;
+}
+
+
+bool KviKvsTreeNodeArrayElement::evaluateReadOnlyInObjectScope(KviKvsObject * o,KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ kvs_int_t iVal;
+ if(!evaluateIndex(c,iVal))return false;
+
+ KviKvsVariant val;
+ if(o)
+ {
+ if(!m_pSource->evaluateReadOnlyInObjectScope(o,c,&val))return false;
+ } else {
+ if(!m_pSource->evaluateReadOnly(c,&val))return false;
+ }
+
+ if(!val.isArray())
+ {
+ if(!val.isNothing())
+ {
+ QString szType;
+ val.getTypeName(szType);
+ c->warning(this,__tr2qs("The argument of the [] subscript didn't evaluate to an array: automatic conversion from %Q supplied"),&szType);
+ }
+ pBuffer->setNothing();
+ return true;
+ }
+
+ KviKvsVariant * v = val.array()->at(iVal);
+ if(!v)
+ {
+ pBuffer->setNothing();
+ return true;
+ }
+
+ pBuffer->copyFrom(v);
+#endif
+ return true;
+}
+
+KviKvsRWEvaluationResult * KviKvsTreeNodeArrayElement::evaluateReadWriteInObjectScope(KviKvsObject *o,KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ kvs_int_t iVal;
+ if(!evaluateIndex(c,iVal))return false;
+
+ KviKvsRWEvaluationResult * result;
+ if(o)result = m_pSource->evaluateReadWriteInObjectScope(o,c);
+ else result = m_pSource->evaluateReadWrite(c);
+ if(!result)return 0;
+
+ if(!result->result()->isArray())
+ {
+ // convert to hash in some way
+ if(!result->result()->isNothing())
+ {
+ QString szType;
+ result->result()->getTypeName(szType);
+ c->warning(this,__tr2qs("The argument of the [] subscript didn't evaluate to an array: automatic conversion from type '%Q' supplied"),&szType);
+ }
+ result->result()->setArray(new KviKvsArray());
+ }
+ return new KviKvsArrayElement(result,result->result()->array()->getAt(iVal),result->result()->array(),iVal);
+#else
+ return 0;
+#endif
+}
+
+bool KviKvsTreeNodeArrayElement::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ return evaluateReadOnlyInObjectScope(0,c,pBuffer);
+}
+
+KviKvsRWEvaluationResult * KviKvsTreeNodeArrayElement::evaluateReadWrite(KviKvsRunTimeContext * c)
+{
+ return evaluateReadWriteInObjectScope(0,c);
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.h b/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.h
new file mode 100644
index 00000000..9b23926b
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_arrayelement.h
@@ -0,0 +1,54 @@
+#ifndef _KVI_KVS_TREENODE_ARRAYELEMENT_H_
+#define _KVI_KVS_TREENODE_ARRAYELEMENT_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_arrayelement.h
+// Created on Tue 07 Oct 2003 02:58:41 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_expression.h"
+#include "kvi_kvs_treenode_arrayorhashelement.h"
+#include "kvi_kvs_types.h"
+
+class KviKvsObject;
+class KviKvsRunTimeContext;
+
+class KVIRC_API KviKvsTreeNodeArrayElement : public KviKvsTreeNodeArrayOrHashElement
+{
+public:
+ KviKvsTreeNodeArrayElement(const QChar * pLocation,KviKvsTreeNodeData * pSource,KviKvsTreeNodeExpression * pIndex);
+ ~KviKvsTreeNodeArrayElement();
+protected:
+ KviKvsTreeNodeExpression * m_pIndex; // can't be null
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer);
+ virtual KviKvsRWEvaluationResult * evaluateReadWrite(KviKvsRunTimeContext * c);
+ virtual bool evaluateReadOnlyInObjectScope(KviKvsObject *o,KviKvsRunTimeContext * c,KviKvsVariant * pBuffer);
+ virtual KviKvsRWEvaluationResult * evaluateReadWriteInObjectScope(KviKvsObject *o,KviKvsRunTimeContext * c);
+protected:
+ bool evaluateIndex(KviKvsRunTimeContext *c,kvs_int_t &iVal);
+};
+
+#endif //!_KVI_KVS_TREENODE_ARRAYELEMENT_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_arrayorhashelement.cpp b/src/kvirc/kvs/kvi_kvs_treenode_arrayorhashelement.cpp
new file mode 100644
index 00000000..d15d197c
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_arrayorhashelement.cpp
@@ -0,0 +1,45 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_arrayorhashelement.cpp
+// Created on Thu 16 Oct 2003 22:56:48 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_arrayorhashelement.h"
+
+KviKvsTreeNodeArrayOrHashElement::KviKvsTreeNodeArrayOrHashElement(const QChar * pLocation,KviKvsTreeNodeData * pSource)
+: KviKvsTreeNodeIndirectData(pLocation,pSource)
+{
+}
+
+KviKvsTreeNodeArrayOrHashElement::~KviKvsTreeNodeArrayOrHashElement()
+{
+}
+bool KviKvsTreeNodeArrayOrHashElement::isReadOnly()
+{
+ return m_pSource->isReadOnly();
+}
+
+bool KviKvsTreeNodeArrayOrHashElement::canEvaluateToObjectReference()
+{
+ return true;
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_arrayorhashelement.h b/src/kvirc/kvs/kvi_kvs_treenode_arrayorhashelement.h
new file mode 100644
index 00000000..4f5d6793
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_arrayorhashelement.h
@@ -0,0 +1,42 @@
+#ifndef _KVI_KVS_TREENODE_ARRAYORHASHELEMENT_H_
+#define _KVI_KVS_TREENODE_ARRAYORHASHELEMENT_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_arrayorhashelement.h
+// Created on Thu 16 Oct 2003 22:56:48 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_indirectdata.h"
+#include "kvi_kvs_variant.h"
+
+class KVIRC_API KviKvsTreeNodeArrayOrHashElement : public KviKvsTreeNodeIndirectData
+{
+public:
+ KviKvsTreeNodeArrayOrHashElement(const QChar * pLocation,KviKvsTreeNodeData * pSource);
+ ~KviKvsTreeNodeArrayOrHashElement();
+public:
+ virtual bool isReadOnly();
+ virtual bool canEvaluateToObjectReference();
+};
+
+#endif //!_KVI_KVS_TREENODE_ARRAYORHASHELEMENT_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_arrayreferenceassert.cpp b/src/kvirc/kvs/kvi_kvs_treenode_arrayreferenceassert.cpp
new file mode 100644
index 00000000..698b95c7
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_arrayreferenceassert.cpp
@@ -0,0 +1,107 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_arrayreferenceassert.cpp
+// Created on Thu 16 Oct 2003 23:46:12 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_arrayreferenceassert.h"
+#include "kvi_kvs_rwevaluationresult.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_kvs_variant.h"
+#include "kvi_locale.h"
+#include "kvi_kvs_object.h"
+
+KviKvsTreeNodeArrayReferenceAssert::KviKvsTreeNodeArrayReferenceAssert(const QChar * pLocation,KviKvsTreeNodeData * pSource)
+: KviKvsTreeNodeIndirectData(pLocation,pSource)
+{
+}
+
+KviKvsTreeNodeArrayReferenceAssert::~KviKvsTreeNodeArrayReferenceAssert()
+{
+}
+
+bool KviKvsTreeNodeArrayReferenceAssert::isReadOnly()
+{
+ return m_pSource->isReadOnly();
+}
+
+void KviKvsTreeNodeArrayReferenceAssert::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Array Reference Assert";
+}
+
+
+void KviKvsTreeNodeArrayReferenceAssert::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s ArrayReferenceAssert",prefix);
+#endif
+}
+
+bool KviKvsTreeNodeArrayReferenceAssert::evaluateReadOnlyInObjectScope(KviKvsObject *o,KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ if(o)
+ {
+ if(!m_pSource->evaluateReadOnlyInObjectScope(o,c,pBuffer))return false;
+ } else {
+ if(!m_pSource->evaluateReadOnly(c,pBuffer))return false;
+ }
+
+ if(!pBuffer->isArray())
+ {
+ if(!pBuffer->isNothing())
+ {
+ QString szType;
+ pBuffer->getTypeName(szType);
+ c->error(this,__tr2qs("Array reference assert failed: the variable evaluated to type '%Q'"),&szType);
+ return false;
+ }
+ }
+#endif
+ return true;
+}
+
+KviKvsRWEvaluationResult * KviKvsTreeNodeArrayReferenceAssert::evaluateReadWriteInObjectScope(KviKvsObject *o,KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsRWEvaluationResult * r;
+ if(o)r = m_pSource->evaluateReadWriteInObjectScope(o,c);
+ else r = m_pSource->evaluateReadWrite(c);
+ if(!r)return false;
+
+ return r;
+#else
+ return 0;
+#endif
+}
+
+bool KviKvsTreeNodeArrayReferenceAssert::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ return evaluateReadOnlyInObjectScope(0,c,pBuffer);
+}
+
+KviKvsRWEvaluationResult * KviKvsTreeNodeArrayReferenceAssert::evaluateReadWrite(KviKvsRunTimeContext * c)
+{
+ return evaluateReadWriteInObjectScope(0,c);
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_arrayreferenceassert.h b/src/kvirc/kvs/kvi_kvs_treenode_arrayreferenceassert.h
new file mode 100644
index 00000000..8827cf2f
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_arrayreferenceassert.h
@@ -0,0 +1,54 @@
+#ifndef _KVI_KVS_TREENODE_ARRAYREFERENCEASSERT_H_
+#define _KVI_KVS_TREENODE_ARRAYREFERENCEASSERT_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_arrayreferenceassert.h
+// Created on Thu 16 Oct 2003 23:46:12 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_indirectdata.h"
+
+class KviKvsRunTimeContext;
+class KviKvsVariant;
+class KviKvsRWEvaluationResult;
+class KviKvsObject;
+
+class KVIRC_API KviKvsTreeNodeArrayReferenceAssert : public KviKvsTreeNodeIndirectData
+{
+public:
+ KviKvsTreeNodeArrayReferenceAssert(const QChar * pLocation,KviKvsTreeNodeData * pSource);
+ ~KviKvsTreeNodeArrayReferenceAssert();
+protected:
+
+public:
+ virtual bool isReadOnly();
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer);
+ virtual KviKvsRWEvaluationResult * evaluateReadWrite(KviKvsRunTimeContext * c);
+ virtual bool evaluateReadOnlyInObjectScope(KviKvsObject *o,KviKvsRunTimeContext * c,KviKvsVariant * pBuffer);
+ virtual KviKvsRWEvaluationResult * evaluateReadWriteInObjectScope(KviKvsObject *o,KviKvsRunTimeContext * c);
+};
+
+
+#endif //!_KVI_KVS_TREENODE_ARRAYREFERENCEASSERT_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_base.cpp b/src/kvirc/kvs/kvi_kvs_treenode_base.cpp
new file mode 100644
index 00000000..ee19dd83
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_base.cpp
@@ -0,0 +1,37 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_base.cpp
+// Created on Tue 07 Oct 2003 02:00:28 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_base.h"
+
+KviKvsTreeNode::KviKvsTreeNode(const QChar * pLocation)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pParent = 0;
+ m_pLocation = pLocation;
+#endif
+}
+
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_base.h b/src/kvirc/kvs/kvi_kvs_treenode_base.h
new file mode 100644
index 00000000..6f0178f9
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_base.h
@@ -0,0 +1,51 @@
+#ifndef _KVI_KVS_TREENODE_BASE_H_
+#define _KVI_KVS_TREENODE_BASE_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_base.h
+// Created on Tue 07 Oct 2003 02:00:28 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+
+class KVIRC_API KviKvsTreeNode
+{
+ friend class KviKvsParser;
+public:
+ KviKvsTreeNode(const QChar * pLocation);
+ virtual ~KviKvsTreeNode(){};
+protected:
+ KviKvsTreeNode * m_pParent;
+ const QChar * m_pLocation;
+public:
+ void setParent(KviKvsTreeNode * p){ m_pParent = p; };
+protected:
+ // this is called only by KviKvsParser
+ void setLocation(const QChar * pLocation){ m_pLocation = pLocation; };
+public:
+ KviKvsTreeNode * parent(){ return m_pParent; };
+ const QChar * location(){ return m_pLocation; };
+ virtual void dump(const char * prefix) = 0;
+ virtual void contextDescription(QString &szBuffer) = 0;
+};
+
+#endif //!_KVI_KVS_TREENODE_BASE_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_baseobjectfunctioncall.cpp b/src/kvirc/kvs/kvi_kvs_treenode_baseobjectfunctioncall.cpp
new file mode 100644
index 00000000..75feafc4
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_baseobjectfunctioncall.cpp
@@ -0,0 +1,72 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_baseobjectfunctioncall.cpp
+// Created on Tue 07 Oct 2003 03:30:10 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_baseobjectfunctioncall.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_object.h"
+#include "kvi_kvs_variant.h"
+
+KviKvsTreeNodeBaseObjectFunctionCall::KviKvsTreeNodeBaseObjectFunctionCall(const QChar * pLocation,const QString &szBaseClass,const QString &szFncName,KviKvsTreeNodeDataList * pParams)
+: KviKvsTreeNodeObjectFunctionCall(pLocation,szFncName,pParams)
+{
+#ifdef COMPILE_NEW_KVS
+ m_szBaseClass = szBaseClass;
+#endif
+}
+
+KviKvsTreeNodeBaseObjectFunctionCall::~KviKvsTreeNodeBaseObjectFunctionCall()
+{
+}
+
+void KviKvsTreeNodeBaseObjectFunctionCall::contextDescription(QString &szBuffer)
+{
+ KviQString::sprintf(szBuffer,"Base Object Function Call \"%s::%s\"",&m_szBaseClass,&m_szFunctionName);
+}
+
+void KviKvsTreeNodeBaseObjectFunctionCall::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s BaseObjectFunctionCall(%s::%s)",prefix,m_szBaseClass.utf8().data(),m_szFunctionName.utf8().data());
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pParams->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeBaseObjectFunctionCall::evaluateReadOnlyInObjectScope(KviKvsObject * o,KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariantList l;
+ if(!m_pParams->evaluate(c,&l))return false;
+ pBuffer->setNothing();
+ c->setDefaultReportLocation(this);
+ return o->callFunction(c->thisObject(),m_szFunctionName,m_szBaseClass,c,pBuffer,&l);
+#else
+ return false;
+#endif
+}
+
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_baseobjectfunctioncall.h b/src/kvirc/kvs/kvi_kvs_treenode_baseobjectfunctioncall.h
new file mode 100644
index 00000000..d679c404
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_baseobjectfunctioncall.h
@@ -0,0 +1,50 @@
+#ifndef _KVI_KVS_TREENODE_BASEOBJECTFUNCTIONCALL_H_
+#define _KVI_KVS_TREENODE_BASEOBJECTFUNCTIONCALL_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_baseobjectfunctioncall.h
+// Created on Tue 07 Oct 2003 03:30:10 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_datalist.h"
+#include "kvi_kvs_treenode_objectfunctioncall.h"
+
+class KviKvsObject;
+class KviKvsVariant;
+class KviKvsRunTimeContext;
+
+class KVIRC_API KviKvsTreeNodeBaseObjectFunctionCall : public KviKvsTreeNodeObjectFunctionCall
+{
+public:
+ KviKvsTreeNodeBaseObjectFunctionCall(const QChar * pLocation,const QString &szBaseClass,const QString &szFncName,KviKvsTreeNodeDataList * pParams);
+ ~KviKvsTreeNodeBaseObjectFunctionCall();
+protected:
+ QString m_szBaseClass;
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+
+ virtual bool evaluateReadOnlyInObjectScope(KviKvsObject * o,KviKvsRunTimeContext * c,KviKvsVariant * pBuffer);
+};
+
+#endif //!_KVI_KVS_TREENODE_BASEOBJECTFUNCTIONCALL_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_callbackcommand.cpp b/src/kvirc/kvs/kvi_kvs_treenode_callbackcommand.cpp
new file mode 100644
index 00000000..cf4c5494
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_callbackcommand.cpp
@@ -0,0 +1,73 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_callbackcommand.cpp
+// Created on Thu 09 Oct 2003 02:02:42 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+
+#include "kvi_kvs_treenode_callbackcommand.h"
+#include "kvi_kvs_treenode_datalist.h"
+#include "kvi_kvs_script.h"
+
+
+
+KviKvsTreeNodeCallbackCommand::KviKvsTreeNodeCallbackCommand(const QChar * pLocation,const QString &szCmdName,KviKvsTreeNodeDataList * params,KviKvsScript * pCallback)
+: KviKvsTreeNodeCommandWithParameters(pLocation,szCmdName,params)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pCallback = pCallback;
+#endif
+}
+
+
+KviKvsTreeNodeCallbackCommand::~KviKvsTreeNodeCallbackCommand()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pCallback;
+#endif
+}
+
+void KviKvsTreeNodeCallbackCommand::contextDescription(QString &szBuffer)
+{
+ KviQString::sprintf(szBuffer,"Callback Command \"%s\"",&m_szCmdName);
+}
+
+void KviKvsTreeNodeCallbackCommand::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s CallbackCommand(%s)",prefix,m_szCmdName.utf8().data());
+ dumpSwitchList(prefix);
+ dumpParameterList(prefix);
+ dumpCallback(prefix);
+#endif
+}
+
+void KviKvsTreeNodeCallbackCommand::dumpCallback(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pCallback->dump(tmp.utf8().data());
+#endif
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_callbackcommand.h b/src/kvirc/kvs/kvi_kvs_treenode_callbackcommand.h
new file mode 100644
index 00000000..dc061f64
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_callbackcommand.h
@@ -0,0 +1,48 @@
+#ifndef _KVI_KVS_TREENODE_CALLBACKCOMMAND_H_
+#define _KVI_KVS_TREENODE_CALLBACKCOMMAND_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_callbackcommand.h
+// Created on Thu 09 Oct 2003 02:02:42 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_commandwithparameters.h"
+
+class KviKvsTreeNodeDataList;
+class KviKvsScript;
+
+class KVIRC_API KviKvsTreeNodeCallbackCommand : public KviKvsTreeNodeCommandWithParameters
+{
+public:
+ KviKvsTreeNodeCallbackCommand(const QChar * pLocation,const QString &szCmdName,KviKvsTreeNodeDataList * params,KviKvsScript * pCallback);
+ ~KviKvsTreeNodeCallbackCommand();
+protected:
+ KviKvsScript * m_pCallback;
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ void dumpCallback(const char * prefix);
+};
+
+
+#endif //!_KVI_KVS_TREENODE_CALLBACKCOMMAND_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_command.cpp b/src/kvirc/kvs/kvi_kvs_treenode_command.cpp
new file mode 100644
index 00000000..4da19dfa
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_command.cpp
@@ -0,0 +1,80 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_command.cpp
+// Created on Thu 09 Oct 2003 01:49:40 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_command.h"
+#include "kvi_kvs_treenode_switchlist.h"
+
+KviKvsTreeNodeCommand::KviKvsTreeNodeCommand(const QChar * pLocation,const QString &szCmdName)
+: KviKvsTreeNodeInstruction(pLocation)
+{
+#ifdef COMPILE_NEW_KVS
+ m_szCmdName = szCmdName;
+ m_pSwitches = 0;
+#endif
+}
+
+KviKvsTreeNodeCommand::~KviKvsTreeNodeCommand()
+{
+#ifdef COMPILE_NEW_KVS
+ if(m_pSwitches)delete m_pSwitches;
+#endif
+}
+
+//#warning "All the dump() functions could be killed (or moved to print on the kvirc windows)"
+
+void KviKvsTreeNodeCommand::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ KviQString::sprintf(szBuffer,"Command \"%s\"",&m_szCmdName);
+#endif
+}
+
+void KviKvsTreeNodeCommand::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s Command(%s)",prefix,m_szCmdName.utf8().data());
+ dumpSwitchList(prefix);
+#endif
+}
+
+void KviKvsTreeNodeCommand::dumpSwitchList(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ if(!m_pSwitches)return;
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pSwitches->dump(tmp.utf8().data());
+#endif
+}
+
+void KviKvsTreeNodeCommand::setSwitchList(KviKvsTreeNodeSwitchList * sw)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pSwitches = sw;
+ m_pSwitches->setParent(this);
+#endif
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_command.h b/src/kvirc/kvs/kvi_kvs_treenode_command.h
new file mode 100644
index 00000000..cf58774e
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_command.h
@@ -0,0 +1,54 @@
+#ifndef _KVI_KVS_TREENODE_COMMAND_H_
+#define _KVI_KVS_TREENODE_COMMAND_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_command.h
+// Created on Thu 09 Oct 2003 01:49:40 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_instruction.h"
+
+class KviKvsParser;
+class KviKvsTreeNodeSwitchList;
+
+class KVIRC_API KviKvsTreeNodeCommand : public KviKvsTreeNodeInstruction
+{
+ // never instantiated
+ friend class KviKvsParser;
+public:
+ KviKvsTreeNodeCommand(const QChar * pLocation,const QString &szCmdName);
+ ~KviKvsTreeNodeCommand();
+protected:
+ QString m_szCmdName; // command visible name
+ KviKvsTreeNodeSwitchList * m_pSwitches; // MAY BE 0!
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ void dumpSwitchList(const char * prefix);
+ const QString & commandName(){ return m_szCmdName; };
+protected:
+ void setSwitchList(KviKvsTreeNodeSwitchList * sw);
+};
+
+
+#endif //!_KVI_KVS_TREENODE_COMMAND_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_commandevaluation.cpp b/src/kvirc/kvs/kvi_kvs_treenode_commandevaluation.cpp
new file mode 100644
index 00000000..1fc5b80b
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_commandevaluation.cpp
@@ -0,0 +1,60 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_commandevaluation.cpp
+// Created on Wed 05 Nov 2003 04:18:58 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_commandevaluation.h"
+
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_kvs_variant.h"
+
+KviKvsTreeNodeCommandEvaluation::KviKvsTreeNodeCommandEvaluation(const QChar * pLocation,KviKvsTreeNodeInstruction * pInstruction)
+: KviKvsTreeNodeData(pLocation)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pInstruction = pInstruction;
+ m_pInstruction->setParent(this);
+#endif
+}
+
+KviKvsTreeNodeCommandEvaluation::~KviKvsTreeNodeCommandEvaluation()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pInstruction;
+#endif
+}
+
+
+bool KviKvsTreeNodeCommandEvaluation::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant * pTmp = c->swapReturnValuePointer(pBuffer);
+ bool bRet = m_pInstruction->execute(c);
+ c->swapReturnValuePointer(pTmp);
+ return bRet;
+#else
+ return false;
+#endif
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_commandevaluation.h b/src/kvirc/kvs/kvi_kvs_treenode_commandevaluation.h
new file mode 100644
index 00000000..3ff71555
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_commandevaluation.h
@@ -0,0 +1,46 @@
+#ifndef _KVI_KVS_TREENODE_COMMANDEVALUATION_H_
+#define _KVI_KVS_TREENODE_COMMANDEVALUATION_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_commandevaluation.h
+// Created on Wed 05 Nov 2003 04:18:58 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_data.h"
+#include "kvi_kvs_treenode_instruction.h"
+
+class KviKvsRunTimeContext;
+class KviKvsVariant;
+
+class KviKvsTreeNodeCommandEvaluation : public KviKvsTreeNodeData
+{
+public:
+ KviKvsTreeNodeCommandEvaluation(const QChar * pLocation,KviKvsTreeNodeInstruction * pInstruction);
+ ~KviKvsTreeNodeCommandEvaluation();
+protected:
+ KviKvsTreeNodeInstruction * m_pInstruction; // owned, never 0
+public:
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer);
+};
+
+#endif //!_KVI_KVS_TREENODE_COMMANDEVALUATION_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_commandwithparameters.cpp b/src/kvirc/kvs/kvi_kvs_treenode_commandwithparameters.cpp
new file mode 100644
index 00000000..dd0544ff
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_commandwithparameters.cpp
@@ -0,0 +1,66 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_commandwithparameters.cpp
+// Created on Thu 09 Oct 2003 01:57:10 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_commandwithparameters.h"
+#include "kvi_kvs_treenode_datalist.h"
+
+KviKvsTreeNodeCommandWithParameters::KviKvsTreeNodeCommandWithParameters(const QChar * pLocation,const QString &szCmdName,KviKvsTreeNodeDataList * params)
+: KviKvsTreeNodeCommand(pLocation,szCmdName)
+{
+ m_pParams = params;
+ m_pParams->setParent(this);
+}
+
+KviKvsTreeNodeCommandWithParameters::~KviKvsTreeNodeCommandWithParameters()
+{
+ delete m_pParams;
+}
+
+void KviKvsTreeNodeCommandWithParameters::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ KviQString::sprintf(szBuffer,"Command With Parameters \"%s\"",&m_szCmdName);
+#endif
+}
+
+
+void KviKvsTreeNodeCommandWithParameters::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s CommandWithParameters(%s)",prefix,m_szCmdName.utf8().data());
+ dumpSwitchList(prefix);
+ dumpParameterList(prefix);
+#endif
+}
+
+void KviKvsTreeNodeCommandWithParameters::dumpParameterList(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pParams->dump(tmp.utf8().data());
+#endif
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_commandwithparameters.h b/src/kvirc/kvs/kvi_kvs_treenode_commandwithparameters.h
new file mode 100644
index 00000000..769e72f7
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_commandwithparameters.h
@@ -0,0 +1,49 @@
+#ifndef _KVI_KVS_TREENODE_COMMANDWITHPARAMETERS_H_
+#define _KVI_KVS_TREENODE_COMMANDWITHPARAMETERS_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_commandwithparameters.h
+// Created on Thu 09 Oct 2003 01:57:10 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_command.h"
+
+class KviKvsTreeNodeDataList;
+
+class KVIRC_API KviKvsTreeNodeCommandWithParameters : public KviKvsTreeNodeCommand
+{
+ // never instantiated
+public:
+ // params can't be 0!
+ KviKvsTreeNodeCommandWithParameters(const QChar * pLocation,const QString &szCmdName,KviKvsTreeNodeDataList * params);
+ ~KviKvsTreeNodeCommandWithParameters();
+protected:
+ KviKvsTreeNodeDataList * m_pParams; // never 0
+public:
+ KviKvsTreeNodeDataList * params(){ return m_pParams; };
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ void dumpParameterList(const char * prefix);
+};
+
+#endif //!_KVI_KVS_TREENODE_COMMANDWITHPARAMETERS_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_compositedata.cpp b/src/kvirc/kvs/kvi_kvs_treenode_compositedata.cpp
new file mode 100644
index 00000000..aae8a9cb
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_compositedata.cpp
@@ -0,0 +1,86 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_compositedata.cpp
+// Created on Tue 07 Oct 2003 02:24:33 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_compositedata.h"
+
+#include "kvi_qstring.h"
+
+#define DEBUGME
+
+KviKvsTreeNodeCompositeData::KviKvsTreeNodeCompositeData(const QChar * pLocation,KviPointerList<KviKvsTreeNodeData> * pSubData)
+: KviKvsTreeNodeData(pLocation)
+{
+#ifdef DEBUGME
+ if(pSubData->count() < 2)debug("KviKvsTreeNodeCompositeData constructor called with less than two children!");
+#endif
+ m_pSubData = pSubData;
+ m_pSubData->setAutoDelete(true);
+ for(KviKvsTreeNodeData * d = m_pSubData->first();d;d = m_pSubData->next())
+ d->setParent(this);
+}
+
+
+KviKvsTreeNodeCompositeData::~KviKvsTreeNodeCompositeData()
+{
+ delete m_pSubData;
+}
+
+bool KviKvsTreeNodeCompositeData::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ QString * pS = new QString();
+
+ pBuffer->setString(pS);
+
+ KviKvsVariant res;
+
+ // we need to use an iterator to accomodate recursion
+ KviPointerListIterator<KviKvsTreeNodeData> it(*m_pSubData);
+
+ while(KviKvsTreeNodeData * d = it.current())
+ {
+ if(!d->evaluateReadOnly(c,&res))return false;
+ res.appendAsString(*pS);
+ ++it;
+ }
+ return true;
+}
+
+void KviKvsTreeNodeCompositeData::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Composite Data Evaluation (Implicit String Cast)";
+}
+
+void KviKvsTreeNodeCompositeData::dump(const char * prefix)
+{
+ debug("%s CompositeData",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ for(KviKvsTreeNodeData * p = m_pSubData->first();p;p = m_pSubData->next())
+ {
+ p->dump(tmp.utf8().data());
+ }
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_compositedata.h b/src/kvirc/kvs/kvi_kvs_treenode_compositedata.h
new file mode 100644
index 00000000..b9b549bd
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_compositedata.h
@@ -0,0 +1,48 @@
+#ifndef _KVI_KVS_TREENODE_COMPOSITEDATA_H_
+#define _KVI_KVS_TREENODE_COMPOSITEDATA_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_compositedata.h
+// Created on Tue 07 Oct 2003 02:24:33 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include "kvi_pointerlist.h"
+
+#include "kvi_kvs_treenode_data.h"
+
+class KVIRC_API KviKvsTreeNodeCompositeData : public KviKvsTreeNodeData
+{
+public:
+ KviKvsTreeNodeCompositeData(const QChar * pLocation,KviPointerList<KviKvsTreeNodeData> * pSubData);
+ ~KviKvsTreeNodeCompositeData();
+protected:
+ KviPointerList<KviKvsTreeNodeData> * m_pSubData;
+public:
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer);
+ virtual void contextDescription(QString &szBuffer);
+
+ virtual void dump(const char * prefix);
+};
+
+
+#endif //!_KVI_KVS_TREENODE_COMPOSITEDATA_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_constantdata.cpp b/src/kvirc/kvs/kvi_kvs_treenode_constantdata.cpp
new file mode 100644
index 00000000..a52930eb
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_constantdata.cpp
@@ -0,0 +1,80 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_constantdata.cpp
+// Created on Tue 07 Oct 2003 02:21:59 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_constantdata.h"
+
+
+KviKvsTreeNodeConstantData::KviKvsTreeNodeConstantData(const QChar * pLocation,KviKvsVariant * v)
+: KviKvsTreeNodeData(pLocation)
+{
+ m_pValue = v;
+}
+
+
+KviKvsTreeNodeConstantData::~KviKvsTreeNodeConstantData()
+{
+ delete m_pValue;
+}
+
+void KviKvsTreeNodeConstantData::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Constant Data Evaluation";
+}
+
+bool KviKvsTreeNodeConstantData::convertStringConstantToNumeric()
+{
+ if(m_pValue->isString())
+ {
+ kvs_int_t iVal;
+ if(m_pValue->asInteger(iVal))
+ {
+ m_pValue->setInteger(iVal);
+ return true;
+ }
+
+ kvs_real_t dVal;
+ if(m_pValue->asReal(dVal))
+ {
+ m_pValue->setReal(dVal);
+ return true;
+ }
+ }
+ return true;
+}
+
+void KviKvsTreeNodeConstantData::dump(const char * prefix)
+{
+ debug("%s ConstantData",prefix);
+ QString tmp = prefix;
+ tmp.prepend(" ");
+ m_pValue->dump(tmp.utf8().data());
+}
+
+bool KviKvsTreeNodeConstantData::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ pBuffer->copyFrom(m_pValue);
+ return true;
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_constantdata.h b/src/kvirc/kvs/kvi_kvs_treenode_constantdata.h
new file mode 100644
index 00000000..4cb0f947
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_constantdata.h
@@ -0,0 +1,52 @@
+#ifndef _KVI_KVS_TREENODE_CONSTANTDATA_H_
+#define _KVI_KVS_TREENODE_CONSTANTDATA_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_constantdata.h
+// Created on Tue 07 Oct 2003 02:21:59 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include "kvi_qstring.h"
+
+#include "kvi_kvs_treenode_data.h"
+
+class KVIRC_API KviKvsTreeNodeConstantData : public KviKvsTreeNodeData
+{
+public:
+ KviKvsTreeNodeConstantData(const QChar * pLocation,KviKvsVariant * v);
+ ~KviKvsTreeNodeConstantData();
+protected:
+ KviKvsVariant * m_pValue; // literal value of the parameter
+public:
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant *pBuffer);
+ virtual void contextDescription(QString &szBuffer);
+
+ virtual void dump(const char * prefix);
+
+ virtual bool convertStringConstantToNumeric();
+
+ KviKvsVariant * value(){ return m_pValue; };
+};
+
+
+#endif //!_KVI_KVS_TREENODE_CONSTANTDATA_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_corecallbackcommand.cpp b/src/kvirc/kvs/kvi_kvs_treenode_corecallbackcommand.cpp
new file mode 100644
index 00000000..191a0f6c
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_corecallbackcommand.cpp
@@ -0,0 +1,72 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_corecallbackcommand.cpp
+// Created on Thu 09 Oct 2003 02:06:26 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_corecallbackcommand.h"
+#include "kvi_kvs_treenode_datalist.h"
+#include "kvi_kvs_treenode_switchlist.h"
+#include "kvi_kvs_script.h"
+#include "kvi_kvs_runtimecontext.h"
+
+
+KviKvsTreeNodeCoreCallbackCommand::KviKvsTreeNodeCoreCallbackCommand(const QChar * pLocation,const QString &szCmdName,KviKvsTreeNodeDataList * params,KviKvsCoreCallbackCommandExecRoutine * r,KviKvsScript * pCallback)
+: KviKvsTreeNodeCallbackCommand(pLocation,szCmdName,params,pCallback)
+{
+ m_pExecRoutine = r;
+}
+
+KviKvsTreeNodeCoreCallbackCommand::~KviKvsTreeNodeCoreCallbackCommand()
+{
+}
+
+void KviKvsTreeNodeCoreCallbackCommand::contextDescription(QString &szBuffer)
+{
+ KviQString::sprintf(szBuffer,"Core Callback Command \"%Q\"",&m_szCmdName);
+}
+
+void KviKvsTreeNodeCoreCallbackCommand::dump(const char * prefix)
+{
+ debug("%s CoreCallbackCommand(%s)",prefix,m_szCmdName.utf8().data());
+ dumpSwitchList(prefix);
+ dumpParameterList(prefix);
+ dumpCallback(prefix);
+}
+
+bool KviKvsTreeNodeCoreCallbackCommand::execute(KviKvsRunTimeContext * c)
+{
+ KviKvsVariantList l;
+ l.setAutoDelete(true);
+ if(!(m_pParams->evaluate(c,&l)))return false;
+
+ KviKvsSwitchList swl;
+ if(m_pSwitches)
+ {
+ if(!(m_pSwitches->evaluate(c,&swl)))return false;
+ }
+
+ c->setDefaultReportLocation(this);
+
+ return m_pExecRoutine->proc(c,&l,&swl,m_pCallback);
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_corecallbackcommand.h b/src/kvirc/kvs/kvi_kvs_treenode_corecallbackcommand.h
new file mode 100644
index 00000000..fb514150
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_corecallbackcommand.h
@@ -0,0 +1,51 @@
+#ifndef _KVI_KVS_TREENODE_CORECALLBACKCOMMAND_H_
+#define _KVI_KVS_TREENODE_CORECALLBACKCOMMAND_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_corecallbackcommand.h
+// Created on Thu 09 Oct 2003 02:06:26 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_callbackcommand.h"
+
+#include "kvi_kvs_kernel.h"
+
+class KviKvsTreeNodeDataList;
+class KviKvsScript;
+class KviKvsRunTimeContext;
+
+class KVIRC_API KviKvsTreeNodeCoreCallbackCommand : public KviKvsTreeNodeCallbackCommand
+{
+public:
+ KviKvsTreeNodeCoreCallbackCommand(const QChar * pLocation,const QString &szCmdName,KviKvsTreeNodeDataList * params,KviKvsCoreCallbackCommandExecRoutine * r,KviKvsScript * pCallback);
+ ~KviKvsTreeNodeCoreCallbackCommand();
+protected:
+ KviKvsCoreCallbackCommandExecRoutine * m_pExecRoutine;
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+
+#endif //!_KVI_KVS_TREENODE_CORECALLBACKCOMMAND_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_corefunctioncall.cpp b/src/kvirc/kvs/kvi_kvs_treenode_corefunctioncall.cpp
new file mode 100644
index 00000000..713aa393
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_corefunctioncall.cpp
@@ -0,0 +1,62 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_corefunctioncall.cpp
+// Created on Tue 07 Oct 2003 03:23:59 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_corefunctioncall.h"
+#include "kvi_kvs_runtimecontext.h"
+
+KviKvsTreeNodeCoreFunctionCall::KviKvsTreeNodeCoreFunctionCall(const QChar * pLocation,const QString &szFncName,KviKvsCoreFunctionExecRoutine * r,KviKvsTreeNodeDataList * pParams)
+: KviKvsTreeNodeFunctionCall(pLocation,szFncName,pParams)
+{
+ m_pExecRoutine = r;
+}
+
+KviKvsTreeNodeCoreFunctionCall::~KviKvsTreeNodeCoreFunctionCall()
+{
+}
+
+void KviKvsTreeNodeCoreFunctionCall::contextDescription(QString &szBuffer)
+{
+ KviQString::sprintf(szBuffer,"Core Function Call \"%Q\"",&m_szFunctionName);
+}
+
+
+void KviKvsTreeNodeCoreFunctionCall::dump(const char * prefix)
+{
+ debug("%s CoreFunctionCall(%s)",prefix,m_szFunctionName.utf8().data());
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pParams->dump(tmp.utf8().data());
+}
+
+bool KviKvsTreeNodeCoreFunctionCall::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ KviKvsVariantList l;
+ if(!m_pParams->evaluate(c,&l))return false;
+
+ pBuffer->setNothing();
+ c->setDefaultReportLocation(this);
+ return m_pExecRoutine->proc(c,&l,pBuffer);
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_corefunctioncall.h b/src/kvirc/kvs/kvi_kvs_treenode_corefunctioncall.h
new file mode 100644
index 00000000..88d1f0d3
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_corefunctioncall.h
@@ -0,0 +1,48 @@
+#ifndef _KVI_KVS_TREENODE_COREFUNCTIONCALL_H_
+#define _KVI_KVS_TREENODE_COREFUNCTIONCALL_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_corefunctioncall.h
+// Created on Tue 07 Oct 2003 03:23:59 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_kernel.h"
+#include "kvi_kvs_treenode_datalist.h"
+#include "kvi_kvs_treenode_functioncall.h"
+
+class KviKvsRunTimeContext;
+
+class KVIRC_API KviKvsTreeNodeCoreFunctionCall : public KviKvsTreeNodeFunctionCall
+{
+public:
+ KviKvsTreeNodeCoreFunctionCall(const QChar * pLocation,const QString &szFncName,KviKvsCoreFunctionExecRoutine * r,KviKvsTreeNodeDataList * pParams);
+ ~KviKvsTreeNodeCoreFunctionCall();
+protected:
+ KviKvsCoreFunctionExecRoutine * m_pExecRoutine;
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer);
+};
+
+#endif //!_KVI_KVS_TREENODE_COREFUNCTIONCALL_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_coresimplecommand.cpp b/src/kvirc/kvs/kvi_kvs_treenode_coresimplecommand.cpp
new file mode 100644
index 00000000..55fcfc3b
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_coresimplecommand.cpp
@@ -0,0 +1,70 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_coresimplecommand.cpp
+// Created on Thu 09 Oct 2003 02:14:34 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_coresimplecommand.h"
+#include "kvi_kvs_treenode_datalist.h"
+#include "kvi_kvs_treenode_switchlist.h"
+#include "kvi_kvs_runtimecontext.h"
+
+KviKvsTreeNodeCoreSimpleCommand::KviKvsTreeNodeCoreSimpleCommand(const QChar * pLocation,const QString &szCmdName,KviKvsTreeNodeDataList * params,KviKvsCoreSimpleCommandExecRoutine * r)
+: KviKvsTreeNodeSimpleCommand(pLocation,szCmdName,params)
+{
+ m_pExecRoutine = r;
+}
+
+
+KviKvsTreeNodeCoreSimpleCommand::~KviKvsTreeNodeCoreSimpleCommand()
+{
+}
+
+void KviKvsTreeNodeCoreSimpleCommand::contextDescription(QString &szBuffer)
+{
+ KviQString::sprintf(szBuffer,"Core Simple Command \"%Q\"",&m_szCmdName);
+}
+
+void KviKvsTreeNodeCoreSimpleCommand::dump(const char * prefix)
+{
+ debug("%s CoreSimpleCommand(%s)",prefix,m_szCmdName.utf8().data());
+ dumpSwitchList(prefix);
+ dumpParameterList(prefix);
+}
+
+bool KviKvsTreeNodeCoreSimpleCommand::execute(KviKvsRunTimeContext * c)
+{
+ KviKvsVariantList l;
+ l.setAutoDelete(true);
+ if(!(m_pParams->evaluate(c,&l)))return false;
+
+ KviKvsSwitchList swl;
+ if(m_pSwitches)
+ {
+ if(!(m_pSwitches->evaluate(c,&swl)))return false;
+ }
+
+ c->setDefaultReportLocation(this);
+
+ return m_pExecRoutine->proc(c,&l,&swl);
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_coresimplecommand.h b/src/kvirc/kvs/kvi_kvs_treenode_coresimplecommand.h
new file mode 100644
index 00000000..764914e0
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_coresimplecommand.h
@@ -0,0 +1,49 @@
+#ifndef _KVI_KVS_TREENODE_CORESIMPLECOMMAND_H_
+#define _KVI_KVS_TREENODE_CORESIMPLECOMMAND_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_coresimplecommand.h
+// Created on Thu 09 Oct 2003 02:14:34 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_simplecommand.h"
+#include "kvi_kvs_kernel.h"
+
+class KviKvsTreeNodeDataList;
+class KviKvsRunTimeContext;
+
+class KVIRC_API KviKvsTreeNodeCoreSimpleCommand : public KviKvsTreeNodeSimpleCommand
+{
+public:
+ KviKvsTreeNodeCoreSimpleCommand(const QChar * pLocation,const QString &szCmdName,KviKvsTreeNodeDataList * params,KviKvsCoreSimpleCommandExecRoutine * r);
+ ~KviKvsTreeNodeCoreSimpleCommand();
+private:
+ KviKvsCoreSimpleCommandExecRoutine * m_pExecRoutine; // shallow pointer!
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+
+#endif //!_KVI_KVS_TREENODE_CORESIMPLECOMMAND_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_data.cpp b/src/kvirc/kvs/kvi_kvs_treenode_data.cpp
new file mode 100644
index 00000000..6d5ad63b
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_data.cpp
@@ -0,0 +1,107 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_data.cpp
+// Creation date : Sun 05 Oct 2003 21.52 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_data.h"
+#include "kvi_locale.h"
+
+
+KviKvsTreeNodeData::KviKvsTreeNodeData(const QChar * pLocation)
+: KviKvsTreeNode(pLocation), m_pEndingLocation(0)
+{
+}
+
+
+KviKvsTreeNodeData::~KviKvsTreeNodeData()
+{
+}
+
+void KviKvsTreeNodeData::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Data Evaluation";
+}
+
+void KviKvsTreeNodeData::dump(const char * prefix)
+{
+ debug("%s Data",prefix);
+}
+
+bool KviKvsTreeNodeData::isReadOnly()
+{
+ return true;
+}
+
+bool KviKvsTreeNodeData::canEvaluateToObjectReference()
+{
+ return false;
+}
+
+bool KviKvsTreeNodeData::canEvaluateInObjectScope()
+{
+ return false;
+}
+
+bool KviKvsTreeNodeData::isFunctionCall()
+{
+ return false;
+}
+
+bool KviKvsTreeNodeData::convertStringConstantToNumeric()
+{
+ return false;
+}
+
+/*
+bool KviKvsTreeNodeData::canReleaseResult()
+{
+ return false;
+}
+*/
+
+bool KviKvsTreeNodeData::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ c->error(this,__tr2qs("Internal error: pure virtual evaluateReadOnly called"));
+ return false;
+}
+
+KviKvsRWEvaluationResult * KviKvsTreeNodeData::evaluateReadWrite(KviKvsRunTimeContext * c)
+{
+ c->error(this,__tr2qs("Internal error: trying to evaluate as read-write a read-only data location"));
+ return 0;
+}
+
+
+bool KviKvsTreeNodeData::evaluateReadOnlyInObjectScope(KviKvsObject * o,KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ c->error(this,__tr2qs("Internal error: pure virtual evaluateReadOnlyInObjectScope called"));
+ return false;
+}
+
+KviKvsRWEvaluationResult * KviKvsTreeNodeData::evaluateReadWriteInObjectScope(KviKvsObject * o,KviKvsRunTimeContext * c)
+{
+ c->error(this,__tr2qs("Internal error: trying to evaluate as read-write a read-only data location"));
+ return 0;
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_data.h b/src/kvirc/kvs/kvi_kvs_treenode_data.h
new file mode 100644
index 00000000..dd1e3c6a
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_data.h
@@ -0,0 +1,66 @@
+#ifndef _KVI_KVS_TREENODE_DATA_H_
+#define _KVI_KVS_TREENODE_DATA_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_data.h
+// Creation date : Sun 05 Oct 2003 21.42 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_kvs_treenode_base.h"
+#include "kvi_kvs_variant.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_kvs_rwevaluationresult.h"
+
+class KviKvsObject;
+
+class KVIRC_API KviKvsTreeNodeData : public KviKvsTreeNode
+{
+public:
+ KviKvsTreeNodeData(const QChar * pLocation);
+ ~KviKvsTreeNodeData();
+protected:
+ const QChar * m_pEndingLocation; // note that this MIGHT be not set (it's set for sure for anything parsed by parseCommaSeparatedParameter()
+public:
+ void setEndingLocation(const QChar * pEndingLocation){ m_pEndingLocation = pEndingLocation; };
+ const QChar * endingLocation(){ return m_pEndingLocation; };
+
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer);
+ virtual KviKvsRWEvaluationResult * evaluateReadWrite(KviKvsRunTimeContext * c); // error by default
+
+ virtual bool evaluateReadOnlyInObjectScope(KviKvsObject * o,KviKvsRunTimeContext * c,KviKvsVariant * pBuffer); // error by default
+ virtual KviKvsRWEvaluationResult * evaluateReadWriteInObjectScope(KviKvsObject * o,KviKvsRunTimeContext * c); // error by default
+
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+
+ virtual bool isReadOnly(); // true by default
+ virtual bool canEvaluateToObjectReference(); // no by default
+ virtual bool isFunctionCall(); // no by default
+ virtual bool canEvaluateInObjectScope(); // no by default
+
+ virtual bool convertStringConstantToNumeric(); // this does nothing by default and is reimplemented only by KviKvsTreeNodeConstantData
+};
+
+
+
+
+
+#endif //!_KVI_KVS_TREENODE_DATA_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_datalist.cpp b/src/kvirc/kvs/kvi_kvs_treenode_datalist.cpp
new file mode 100644
index 00000000..18da8280
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_datalist.cpp
@@ -0,0 +1,110 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_datalist.cpp
+// Created on Tue 07 Oct 2003 02:03:41 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_datalist.h"
+#include "kvi_kvs_runtimecontext.h"
+
+#include "kvi_qstring.h"
+
+KviKvsTreeNodeDataList::KviKvsTreeNodeDataList(const QChar * pLocation)
+: KviKvsTreeNode(pLocation)
+{
+ m_pDataList = new KviPointerList<KviKvsTreeNodeData>();
+ m_pDataList->setAutoDelete(true);
+}
+
+KviKvsTreeNodeDataList::~KviKvsTreeNodeDataList()
+{
+ delete m_pDataList;
+}
+
+KviKvsTreeNodeData * KviKvsTreeNodeDataList::releaseFirst()
+{
+ KviKvsTreeNodeData * d = m_pDataList->first();
+ if(d)
+ {
+ m_pDataList->setAutoDelete(false);
+ m_pDataList->removeFirst();
+ m_pDataList->setAutoDelete(true);
+ }
+ return d;
+}
+
+KviKvsTreeNodeData * KviKvsTreeNodeDataList::item(unsigned int uIdx)
+{
+ if(uIdx >= m_pDataList->count())return 0;
+ return m_pDataList->at(uIdx);
+}
+
+
+void KviKvsTreeNodeDataList::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Data List Evaluation";
+}
+
+void KviKvsTreeNodeDataList::dump(const char * prefix)
+{
+ debug("%s DataList",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ for(KviKvsTreeNodeData * t = m_pDataList->first();t;t = m_pDataList->next())
+ {
+ t->dump(tmp.utf8().data());
+ }
+}
+
+bool KviKvsTreeNodeDataList::evaluate(KviKvsRunTimeContext * c,KviKvsVariantList * pBuffer)
+{
+ pBuffer->clear();
+
+ // we use an iterator to accomodate recursion
+ KviPointerListIterator<KviKvsTreeNodeData> it(*m_pDataList);
+ while(KviKvsTreeNodeData * t = it.current())
+ {
+ KviKvsVariant * v = new KviKvsVariant();
+ if(!t->evaluateReadOnly(c,v))
+ {
+ delete v;
+ pBuffer->clear();
+ return false;
+ }
+ pBuffer->append(v);
+ ++it;
+ }
+ return true;
+}
+
+void KviKvsTreeNodeDataList::addItem(KviKvsTreeNodeData * p)
+{
+ m_pDataList->append(p);
+ p->setParent(this);
+}
+
+void KviKvsTreeNodeDataList::prependItem(KviKvsTreeNodeData * p)
+{
+ m_pDataList->prepend(p);
+ p->setParent(this);
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_datalist.h b/src/kvirc/kvs/kvi_kvs_treenode_datalist.h
new file mode 100644
index 00000000..1a370a41
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_datalist.h
@@ -0,0 +1,57 @@
+#ifndef _KVI_KVS_TREENODE_DATALIST_H_
+#define _KVI_KVS_TREENODE_DATALIST_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_datalist.h
+// Created on Tue 07 Oct 2003 02:03:41 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include "kvi_pointerlist.h"
+
+#include "kvi_kvs_variantlist.h"
+#include "kvi_kvs_treenode_base.h"
+#include "kvi_kvs_treenode_data.h"
+
+class KviKvsRunTimeContext;
+
+class KVIRC_API KviKvsTreeNodeDataList : public KviKvsTreeNode
+{
+ friend class KviKvsParser;
+public:
+ KviKvsTreeNodeDataList(const QChar * pLocation);
+ ~KviKvsTreeNodeDataList();
+protected:
+ KviPointerList<KviKvsTreeNodeData> * m_pDataList;
+protected:
+ void addItem(KviKvsTreeNodeData * p);
+ void prependItem(KviKvsTreeNodeData * p);
+public:
+ KviKvsTreeNodeData * item(unsigned int uIdx);
+ KviKvsTreeNodeData * releaseFirst();
+ bool evaluate(KviKvsRunTimeContext * c,KviKvsVariantList * pBuffer);
+ virtual void contextDescription(QString &szBuffer);
+
+ virtual void dump(const char * prefix);
+};
+
+#endif //!_KVI_KVS_TREENODE_DATALIST_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp b/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp
new file mode 100644
index 00000000..ae3ec45b
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_expression.cpp
@@ -0,0 +1,776 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_expression.cpp
+// Creation date : Mon 06 Oct 2003 01.35 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_expression.h"
+#include "kvi_locale.h"
+
+#include <math.h>
+
+KviKvsTreeNodeExpression::KviKvsTreeNodeExpression(const QChar * pLocation)
+: KviKvsTreeNodeData(pLocation)
+{
+ m_pParentExpression = 0;
+}
+
+KviKvsTreeNodeExpression::~KviKvsTreeNodeExpression()
+{
+}
+
+
+void KviKvsTreeNodeExpression::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Expression Evaluation";
+}
+
+void KviKvsTreeNodeExpression::dump(const char * prefix)
+{
+ debug("%s Expression",prefix);
+}
+
+int KviKvsTreeNodeExpression::precedence()
+{
+ return PREC_MAXIMUM;
+}
+
+KviKvsTreeNodeExpression * KviKvsTreeNodeExpression::left()
+{
+ debug("KviKvsTreeNodeExpression::left() : should never end up here!");
+ return 0;
+}
+
+KviKvsTreeNodeExpression * KviKvsTreeNodeExpression::right()
+{
+ debug("KviKvsTreeNodeExpression::right() : should never end up here!");
+ return 0;
+}
+
+void KviKvsTreeNodeExpression::setLeft(KviKvsTreeNodeExpression *)
+{
+ debug("KviKvsTreeNodeExpression::setLeft() : should never end up here!");
+}
+
+void KviKvsTreeNodeExpression::setRight(KviKvsTreeNodeExpression *)
+{
+ debug("KviKvsTreeNodeExpression::setRight() : should never end up here!");
+}
+
+KviKvsTreeNodeExpression * KviKvsTreeNodeExpression::parentWithPrecedenceLowerThan(int iPrec)
+{
+ if(precedence() > iPrec)return this;
+ if(!parentExpression())return 0;
+ return parentExpression()->parentWithPrecedenceLowerThan(iPrec);
+}
+
+int KviKvsTreeNodeExpression::firstBinaryOperator()
+{
+ if(!left())return precedence();
+ return left()->firstBinaryOperator();
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+
+KviKvsTreeNodeExpressionVariableOperand::KviKvsTreeNodeExpressionVariableOperand(const QChar * pLocation,KviKvsTreeNodeData * pData)
+: KviKvsTreeNodeExpression(pLocation)
+{
+ m_pData = pData;
+ m_pData->setParent(this);
+}
+
+KviKvsTreeNodeExpressionVariableOperand::~KviKvsTreeNodeExpressionVariableOperand()
+{
+ delete m_pData;
+}
+
+void KviKvsTreeNodeExpressionVariableOperand::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Expression Variable Operand Evaluation";
+}
+
+void KviKvsTreeNodeExpressionVariableOperand::dump(const char * prefix)
+{
+ debug("%s ExpressionVariableOperand",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pData->dump(tmp.utf8().data());
+}
+
+bool KviKvsTreeNodeExpressionVariableOperand::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ return m_pData->evaluateReadOnly(c,pBuffer);
+}
+
+
+///////////////////////////////////////////////////////////////////////////////
+
+KviKvsTreeNodeExpressionConstantOperand::KviKvsTreeNodeExpressionConstantOperand(const QChar * pLocation,KviKvsVariant * pConstant)
+: KviKvsTreeNodeExpression(pLocation)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pConstant = pConstant;
+#endif
+}
+
+KviKvsTreeNodeExpressionConstantOperand::~KviKvsTreeNodeExpressionConstantOperand()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pConstant;
+#endif
+}
+
+void KviKvsTreeNodeExpressionConstantOperand::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Expression Constant Operand Evaluation";
+#endif
+}
+
+
+void KviKvsTreeNodeExpressionConstantOperand::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s ExpressionConstantOperand",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pConstant->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeExpressionConstantOperand::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ pBuffer->copyFrom(m_pConstant);
+#endif
+ return true;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+
+KviKvsTreeNodeExpressionOperator::KviKvsTreeNodeExpressionOperator(const QChar * pLocation)
+: KviKvsTreeNodeExpression(pLocation)
+{
+}
+
+KviKvsTreeNodeExpressionOperator::~KviKvsTreeNodeExpressionOperator()
+{
+}
+
+void KviKvsTreeNodeExpressionOperator::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Expression Operator Evaluation";
+#endif
+}
+
+
+void KviKvsTreeNodeExpressionOperator::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s ExpressionOperator",prefix);
+#endif
+}
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+
+
+KviKvsTreeNodeExpressionUnaryOperator::KviKvsTreeNodeExpressionUnaryOperator(const QChar * pLocation,KviKvsTreeNodeExpression * pData)
+: KviKvsTreeNodeExpressionOperator(pLocation)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pData = pData;
+ m_pData->setParent(this);
+ m_pData->setParentExpression(this);
+#endif
+}
+
+KviKvsTreeNodeExpressionUnaryOperator::~KviKvsTreeNodeExpressionUnaryOperator()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pData;
+#endif
+}
+
+void KviKvsTreeNodeExpressionUnaryOperator::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Expression Unary Operator Evaluation";
+#endif
+}
+
+
+
+
+void KviKvsTreeNodeExpressionUnaryOperator::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s ExpressionUnaryOperator",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pData->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeExpressionUnaryOperator::evaluateOperand(KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant v;
+ if(!m_pData->evaluateReadOnly(c,&v))return false;
+
+ if(!v.asNumber(m_nData))
+ {
+ c->error(this,__tr2qs("Operand of unary operator didn't evaluate to a number"));
+ return false;
+ }
+#endif
+ return true;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+
+KviKvsTreeNodeExpressionUnaryOperatorNegate::KviKvsTreeNodeExpressionUnaryOperatorNegate(const QChar * pLocation,KviKvsTreeNodeExpression * pData)
+: KviKvsTreeNodeExpressionUnaryOperator(pLocation,pData)
+{
+}
+
+KviKvsTreeNodeExpressionUnaryOperatorNegate::~KviKvsTreeNodeExpressionUnaryOperatorNegate()
+{
+}
+
+
+void KviKvsTreeNodeExpressionUnaryOperatorNegate::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Expression Unary Operator Negate";
+#endif
+}
+
+
+void KviKvsTreeNodeExpressionUnaryOperatorNegate::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s ExpressionUnaryOperatorNegate",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pData->dump(tmp.utf8().data());
+#endif
+}
+
+int KviKvsTreeNodeExpressionUnaryOperatorNegate::precedence()
+{
+ return PREC_OP_NEGATE;
+}
+
+bool KviKvsTreeNodeExpressionUnaryOperatorNegate::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ if(!evaluateOperand(c))return false;
+ if(m_nData.isReal())pBuffer->setReal(-m_nData.real());
+ else pBuffer->setInteger(-m_nData.integer());
+#endif
+ return true;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////
+
+
+KviKvsTreeNodeExpressionUnaryOperatorBitwiseNot::KviKvsTreeNodeExpressionUnaryOperatorBitwiseNot(const QChar * pLocation,KviKvsTreeNodeExpression * pData)
+: KviKvsTreeNodeExpressionUnaryOperator(pLocation,pData)
+{
+}
+
+KviKvsTreeNodeExpressionUnaryOperatorBitwiseNot::~KviKvsTreeNodeExpressionUnaryOperatorBitwiseNot()
+{
+}
+
+void KviKvsTreeNodeExpressionUnaryOperatorBitwiseNot::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Expression Unary Operator Bitwise Not";
+#endif
+}
+
+void KviKvsTreeNodeExpressionUnaryOperatorBitwiseNot::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s ExpressionUnaryOperatorBitwiseNot",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pData->dump(tmp.utf8().data());
+#endif
+}
+
+int KviKvsTreeNodeExpressionUnaryOperatorBitwiseNot::precedence()
+{
+ return PREC_OP_BITWISENOT;
+}
+
+bool KviKvsTreeNodeExpressionUnaryOperatorBitwiseNot::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ if(!evaluateOperand(c))return false;
+ if(m_nData.isReal())pBuffer->setInteger(~(int)(m_nData.real()));
+ else pBuffer->setInteger(~m_nData.integer());
+#endif
+ return true;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////
+
+
+KviKvsTreeNodeExpressionUnaryOperatorLogicalNot::KviKvsTreeNodeExpressionUnaryOperatorLogicalNot(const QChar * pLocation,KviKvsTreeNodeExpression * pData)
+: KviKvsTreeNodeExpressionUnaryOperator(pLocation,pData)
+{
+}
+
+KviKvsTreeNodeExpressionUnaryOperatorLogicalNot::~KviKvsTreeNodeExpressionUnaryOperatorLogicalNot()
+{
+}
+
+void KviKvsTreeNodeExpressionUnaryOperatorLogicalNot::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Expression Unary Operator Logical Not";
+#endif
+}
+
+void KviKvsTreeNodeExpressionUnaryOperatorLogicalNot::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s ExpressionUnaryOperatorLogicalNot",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pData->dump(tmp.utf8().data());
+#endif
+}
+
+int KviKvsTreeNodeExpressionUnaryOperatorLogicalNot::precedence()
+{
+ return PREC_OP_LOGICALNOT;
+}
+
+bool KviKvsTreeNodeExpressionUnaryOperatorLogicalNot::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant v;
+ if(!m_pData->evaluateReadOnly(c,&v))return false;
+//#warning "FIXME: We could use setNothing() for false and setInteger(1) for true: this would save memory allocations for false conditions"
+ pBuffer->setBoolean(!v.asBoolean());
+#endif
+ return true;
+}
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+
+
+KviKvsTreeNodeExpressionBinaryOperator::KviKvsTreeNodeExpressionBinaryOperator(const QChar * pLocation)
+: KviKvsTreeNodeExpressionOperator(pLocation)
+{
+ m_pLeft = 0;
+ m_pRight = 0;
+}
+
+KviKvsTreeNodeExpressionBinaryOperator::~KviKvsTreeNodeExpressionBinaryOperator()
+{
+ if(m_pLeft)delete m_pLeft;
+ if(m_pRight)delete m_pRight;
+}
+
+bool KviKvsTreeNodeExpressionBinaryOperator::evaluateOperands(KviKvsRunTimeContext * c)
+{
+ KviKvsVariant v1;
+ if(!m_pLeft->evaluateReadOnly(c,&v1))return false;
+ if(!v1.asNumber(m_nLeft))
+ {
+ c->error(this,__tr2qs("Left operand didn't evaluate to a number"));
+ return false;
+ }
+ KviKvsVariant v2;
+ if(!m_pRight->evaluateReadOnly(c,&v2))return false;
+ if(!v2.asNumber(m_nRight))
+ {
+ c->error(this,__tr2qs("Right operand didn't evaluate to a number"));
+ return false;
+ }
+ return true;
+}
+
+KviKvsTreeNodeExpression * KviKvsTreeNodeExpressionBinaryOperator::left()
+{
+ return m_pLeft;
+}
+
+KviKvsTreeNodeExpression * KviKvsTreeNodeExpressionBinaryOperator::right()
+{
+ return m_pRight;
+}
+
+int KviKvsTreeNodeExpressionBinaryOperator::firstBinaryOperator()
+{
+ return precedence();
+}
+
+void KviKvsTreeNodeExpressionBinaryOperator::setLeft(KviKvsTreeNodeExpression * pLeft)
+{
+ m_pLeft = pLeft;
+ m_pLeft->setParent(this);
+ m_pLeft->setParentExpression(this);
+}
+
+void KviKvsTreeNodeExpressionBinaryOperator::setRight(KviKvsTreeNodeExpression * pRight)
+{
+ m_pRight = pRight;
+ m_pRight->setParent(this);
+ m_pRight->setParentExpression(this);
+}
+
+
+void KviKvsTreeNodeExpressionBinaryOperator::dumpOperands(const char * prefix)
+{
+ QString tmp = prefix;
+ tmp.append(" ");
+ if(m_pLeft)m_pLeft->dump(tmp.utf8().data());
+ if(m_pRight)m_pRight->dump(tmp.utf8().data());
+}
+
+void KviKvsTreeNodeExpressionBinaryOperator::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Expression Binary Operator";
+}
+
+void KviKvsTreeNodeExpressionBinaryOperator::dump(const char * prefix)
+{
+ debug("%s ExpressionBinaryOperator",prefix);
+ dumpOperands(prefix);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+#define PREIMPLEMENT_BINARY_OPERATOR(__name,__stringname,__contextdescription,__precedence) \
+ __name::__name(const QChar * pLocation) \
+ : KviKvsTreeNodeExpressionBinaryOperator(pLocation){} \
+ __name::~__name(){} \
+ void __name::dump(const char * prefix){ debug("%s " __stringname,prefix); dumpOperands(prefix); } \
+ void __name::contextDescription(QString &szBuffer){ szBuffer = __contextdescription; } \
+ int __name::precedence(){ return __precedence; };
+
+PREIMPLEMENT_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorSum,"ExpressionBinaryOperatorSum","Expression Binary Operator \"+\"",PREC_OP_SUM)
+
+bool KviKvsTreeNodeExpressionBinaryOperatorSum::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ if(!evaluateOperands(c))return false;
+ if(m_nLeft.isInteger())
+ {
+ if(m_nRight.isInteger())pBuffer->setInteger(m_nLeft.integer() + m_nRight.integer());
+ else pBuffer->setReal(m_nLeft.integer() + m_nRight.real());
+ } else {
+ if(m_nRight.isInteger())pBuffer->setReal(m_nLeft.real() + m_nRight.integer());
+ else pBuffer->setReal(m_nLeft.real() + m_nRight.real());
+ }
+ return true;
+}
+
+PREIMPLEMENT_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorSubtraction,"ExpressionBinaryOperatorSubtraction","Expression Binary Operator \"-\"",PREC_OP_SUBTRACTION)
+
+bool KviKvsTreeNodeExpressionBinaryOperatorSubtraction::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ if(!evaluateOperands(c))return false;
+ if(m_nLeft.isInteger())
+ {
+ if(m_nRight.isInteger())pBuffer->setInteger(m_nLeft.integer() - m_nRight.integer());
+ else pBuffer->setReal(((kvs_real_t)(m_nLeft.integer())) - m_nRight.real());
+ } else {
+ if(m_nRight.isInteger())pBuffer->setReal(m_nLeft.real() - ((kvs_real_t)(m_nRight.integer())));
+ else pBuffer->setReal(m_nLeft.real() - m_nRight.real());
+ }
+ return true;
+}
+
+PREIMPLEMENT_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorMultiplication,"ExpressionBinaryOperatorMultiplication","Expression Binary Operator \"*\"",PREC_OP_MULTIPLICATION)
+
+bool KviKvsTreeNodeExpressionBinaryOperatorMultiplication::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ if(!evaluateOperands(c))return false;
+ if(m_nLeft.isInteger())
+ {
+ if(m_nRight.isInteger())pBuffer->setInteger(m_nLeft.integer() * m_nRight.integer());
+ else pBuffer->setReal(((kvs_real_t)(m_nLeft.integer())) * m_nRight.real());
+ } else {
+ if(m_nRight.isInteger())pBuffer->setReal(m_nLeft.real() * ((kvs_real_t)(m_nRight.integer())));
+ else pBuffer->setReal(m_nLeft.real() * m_nRight.real());
+ }
+ return true;
+}
+
+
+PREIMPLEMENT_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorDivision,"ExpressionBinaryOperatorDivision","Expression Binary Operator \"/\"",PREC_OP_DIVISION)
+
+bool KviKvsTreeNodeExpressionBinaryOperatorDivision::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ if(!evaluateOperands(c))return false;
+
+ if(m_nRight.isInteger())
+ {
+ if(m_nRight.integer() == 0)
+ {
+ c->error(this,__tr2qs("Division by zero"));
+ return false;
+ }
+ if(m_nLeft.isInteger())pBuffer->setInteger(m_nLeft.integer() / m_nRight.integer());
+ else pBuffer->setReal(m_nLeft.real() / ((kvs_real_t)(m_nRight.integer())));
+ } else {
+ if(m_nRight.real() == 0.0)
+ {
+ c->error(this,__tr2qs("Division by zero"));
+ return false;
+ }
+ if(m_nLeft.isInteger())pBuffer->setReal(((kvs_real_t)(m_nLeft.integer())) / m_nRight.real());
+ else pBuffer->setReal(m_nLeft.real() / m_nRight.real());
+ }
+ return true;
+}
+
+
+PREIMPLEMENT_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorModulus,"ExpressionBinaryOperatorModulus","Expression Binary Operator \"modulus\"",PREC_OP_MODULUS)
+
+bool KviKvsTreeNodeExpressionBinaryOperatorModulus::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ if(!evaluateOperands(c))return false;
+
+ if(m_nRight.isInteger())
+ {
+ if(m_nRight.integer() == 0)
+ {
+ c->error(this,__tr2qs("Division by zero"));
+ return false;
+ }
+ if(m_nLeft.isInteger())pBuffer->setInteger(m_nLeft.integer() % m_nRight.integer());
+ else pBuffer->setReal(fmod(m_nLeft.real(),((kvs_real_t)(m_nRight.integer()))));
+ } else {
+ if(m_nRight.real() == 0.0)
+ {
+ c->error(this,__tr2qs("Division by zero"));
+ return false;
+ }
+ if(m_nLeft.isInteger())pBuffer->setReal(fmod(((kvs_real_t)(m_nLeft.integer())),m_nRight.real()));
+ else pBuffer->setReal(fmod(m_nLeft.real(),m_nRight.real()));
+ }
+ return true;
+}
+
+PREIMPLEMENT_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorBitwiseAnd,"ExpressionBinaryOperatorBitwiseAnd","Expression Binary Operator \"&\"",PREC_OP_BITWISEAND)
+
+bool KviKvsTreeNodeExpressionBinaryOperatorBitwiseAnd::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ if(!evaluateOperands(c))return false;
+ int iLeft = m_nLeft.isInteger() ? m_nLeft.integer() : (kvs_int_t)m_nLeft.real();
+ int iRight = m_nRight.isInteger() ? m_nRight.integer() : (kvs_int_t)m_nRight.real();
+ pBuffer->setInteger(iLeft & iRight);
+ return true;
+}
+
+PREIMPLEMENT_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorBitwiseOr,"ExpressionBinaryOperatorBitwiseOr","Expression Binary Operator \"|\"",PREC_OP_BITWISEOR)
+
+bool KviKvsTreeNodeExpressionBinaryOperatorBitwiseOr::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ if(!evaluateOperands(c))return false;
+ int iLeft = m_nLeft.isInteger() ? m_nLeft.integer() : (kvs_int_t)m_nLeft.real();
+ int iRight = m_nRight.isInteger() ? m_nRight.integer() : (kvs_int_t)m_nRight.real();
+ pBuffer->setInteger(iLeft | iRight);
+ return true;
+}
+
+PREIMPLEMENT_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorBitwiseXor,"ExpressionBinaryOperatorBitwiseXor","Expression Binary Operator \"^\"",PREC_OP_BITWISEXOR)
+
+bool KviKvsTreeNodeExpressionBinaryOperatorBitwiseXor::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ if(!evaluateOperands(c))return false;
+ int iLeft = m_nLeft.isInteger() ? m_nLeft.integer() : (kvs_int_t)m_nLeft.real();
+ int iRight = m_nRight.isInteger() ? m_nRight.integer() : (kvs_int_t)m_nRight.real();
+ pBuffer->setInteger(iLeft ^ iRight);
+ return true;
+}
+
+PREIMPLEMENT_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorShiftLeft,"ExpressionBinaryOperatorShiftLeft","Expression Binary Operator \"<<\"",PREC_OP_SHIFTLEFT)
+
+bool KviKvsTreeNodeExpressionBinaryOperatorShiftLeft::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ if(!evaluateOperands(c))return false;
+ int iLeft = m_nLeft.isInteger() ? m_nLeft.integer() : (kvs_int_t)(m_nLeft.real());
+ int iRight = m_nRight.isInteger() ? m_nRight.integer() : (kvs_int_t)(m_nRight.real());
+ pBuffer->setInteger(iLeft << iRight);
+ return true;
+}
+
+PREIMPLEMENT_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorShiftRight,"ExpressionBinaryOperatorShiftRight","Expression Binary Operator \">>\"",PREC_OP_SHIFTRIGHT)
+
+bool KviKvsTreeNodeExpressionBinaryOperatorShiftRight::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ if(!evaluateOperands(c))return false;
+ int iLeft = m_nLeft.isInteger() ? m_nLeft.integer() : (kvs_int_t)(m_nLeft.real());
+ int iRight = m_nRight.isInteger() ? m_nRight.integer() : (kvs_int_t)(m_nRight.real());
+ pBuffer->setInteger(iLeft >> iRight);
+ return true;
+}
+
+PREIMPLEMENT_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorAnd,"ExpressionBinaryOperatorAnd","Expression Binary Operator \"&&\"",PREC_OP_AND)
+
+bool KviKvsTreeNodeExpressionBinaryOperatorAnd::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ KviKvsVariant v1;
+ KviKvsVariant v2;
+ if(!m_pLeft->evaluateReadOnly(c,&v1))return false;
+ //#warning "FIXME: We could use setNothing() as false: this would save memory allocations (and thus time)"
+ if(!v1.asBoolean())
+ {
+ pBuffer->setBoolean(false);
+ return true;
+ }
+ if(!m_pRight->evaluateReadOnly(c,&v2))return false;
+ pBuffer->setBoolean(v2.asBoolean());
+ return true;
+}
+
+
+PREIMPLEMENT_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorOr,"ExpressionBinaryOperatorOr","Expression Binary Operator \"||\"",PREC_OP_OR)
+
+bool KviKvsTreeNodeExpressionBinaryOperatorOr::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ KviKvsVariant v1;
+ KviKvsVariant v2;
+ if(!m_pLeft->evaluateReadOnly(c,&v1))return false;
+ //#warning "FIXME: We could use setNothing() as false: this would save memory allocations (and thus time)"
+ if(v1.asBoolean())
+ {
+ pBuffer->setBoolean(true);
+ return true;
+ }
+ if(!m_pRight->evaluateReadOnly(c,&v2))return false;
+ pBuffer->setBoolean(v2.asBoolean());
+ return true;
+}
+
+
+PREIMPLEMENT_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorXor,"ExpressionBinaryOperatorXor","Expression Binary Operator \"^^\"",PREC_OP_XOR)
+
+bool KviKvsTreeNodeExpressionBinaryOperatorXor::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ KviKvsVariant v1;
+ KviKvsVariant v2;
+ if(!m_pLeft->evaluateReadOnly(c,&v1))return false;
+ if(!m_pRight->evaluateReadOnly(c,&v2))return false;
+ //#warning "FIXME: We could use setNothing() as false: this would save memory allocations (and thus time)"
+ if(v1.asBoolean())
+ pBuffer->setBoolean(!v2.asBoolean());
+ else {
+ if(v2.asBoolean())
+ pBuffer->setBoolean(!v1.asBoolean());
+ else
+ pBuffer->setBoolean(false);
+ }
+ return true;
+}
+
+PREIMPLEMENT_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorLowerThan,"ExpressionBinaryOperatorLowerThan","Expression Binary Operator \"<\"",PREC_OP_LOWERTHAN)
+
+bool KviKvsTreeNodeExpressionBinaryOperatorLowerThan::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ KviKvsVariant v1;
+ KviKvsVariant v2;
+ if(!m_pLeft->evaluateReadOnly(c,&v1))return false;
+ if(!m_pRight->evaluateReadOnly(c,&v2))return false;
+ pBuffer->setBoolean(v1.compare(&v2,true) > 0);
+ return true;
+}
+
+PREIMPLEMENT_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorGreaterThan,"ExpressionBinaryOperatorGreaterThan","Expression Binary Operator \">\"",PREC_OP_GREATERTHAN)
+
+bool KviKvsTreeNodeExpressionBinaryOperatorGreaterThan::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ KviKvsVariant v1;
+ KviKvsVariant v2;
+ if(!m_pLeft->evaluateReadOnly(c,&v1))return false;
+ if(!m_pRight->evaluateReadOnly(c,&v2))return false;
+ pBuffer->setBoolean(v1.compare(&v2,true) < 0);
+ return true;
+}
+
+PREIMPLEMENT_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorLowerOrEqualTo,"ExpressionBinaryOperatorLowerOrEqualTo","Expression Binary Operator \"<=\"",PREC_OP_LOWEROREQUALTO)
+
+bool KviKvsTreeNodeExpressionBinaryOperatorLowerOrEqualTo::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ KviKvsVariant v1;
+ KviKvsVariant v2;
+ if(!m_pLeft->evaluateReadOnly(c,&v1))return false;
+ if(!m_pRight->evaluateReadOnly(c,&v2))return false;
+ pBuffer->setBoolean(v1.compare(&v2,true) >= 0);
+ return true;
+}
+
+PREIMPLEMENT_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorGreaterOrEqualTo,"ExpressionBinaryOperatorGreaterOrEqualTo","Expression Binary Operator \">=\"",PREC_OP_GREATEROREQUALTO)
+
+bool KviKvsTreeNodeExpressionBinaryOperatorGreaterOrEqualTo::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ KviKvsVariant v1;
+ KviKvsVariant v2;
+ if(!m_pLeft->evaluateReadOnly(c,&v1))return false;
+ if(!m_pRight->evaluateReadOnly(c,&v2))return false;
+ pBuffer->setBoolean(v1.compare(&v2,true) <= 0);
+ return true;
+}
+
+PREIMPLEMENT_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorEqualTo,"ExpressionBinaryOperatorEqualTo","Expression Binary Operator \"==\"",PREC_OP_EQUALTO)
+
+bool KviKvsTreeNodeExpressionBinaryOperatorEqualTo::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ KviKvsVariant v1;
+ KviKvsVariant v2;
+ if(!m_pLeft->evaluateReadOnly(c,&v1))return false;
+ if(!m_pRight->evaluateReadOnly(c,&v2))return false;
+ pBuffer->setBoolean(v1.compare(&v2,true) == 0);
+ return true;
+}
+
+
+PREIMPLEMENT_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorNotEqualTo,"ExpressionBinaryOperatorNotEqualTo","Expression Binary Operator \"!=\"",PREC_OP_NOTEQUALTO)
+
+bool KviKvsTreeNodeExpressionBinaryOperatorNotEqualTo::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ KviKvsVariant v1;
+ KviKvsVariant v2;
+ if(!m_pLeft->evaluateReadOnly(c,&v1))return false;
+ if(!m_pRight->evaluateReadOnly(c,&v2))return false;
+ pBuffer->setBoolean(v1.compare(&v2,true) != 0);
+ return true;
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_expression.h b/src/kvirc/kvs/kvi_kvs_treenode_expression.h
new file mode 100644
index 00000000..948066d0
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_expression.h
@@ -0,0 +1,249 @@
+#ifndef _KVI_KVS_TREENODE_EXPRESSION_H_
+#define _KVI_KVS_TREENODE_EXPRESSION_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_expression.h
+// Creation date : Mon 06 Oct 2003 01.33 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_qstring.h"
+#include "kvi_kvs_variant.h"
+#include "kvi_kvs_treenode_data.h"
+
+
+// absolute precedence (~operand part)
+#define PREC_MAXIMUM -10
+
+
+#define PREC_OP_LOGICALNOT -3 /* ! */
+#define PREC_OP_BITWISENOT -2 /* ~ */
+#define PREC_OP_NEGATE -1 /* - */
+// high precedence
+#define PREC_OP_BITWISEAND 0 /* & */
+#define PREC_OP_BITWISEOR 1 /* | */
+#define PREC_OP_BITWISEXOR 2 /* ^ */
+
+#define PREC_OP_SHIFTRIGHT 3 /* >> */
+#define PREC_OP_SHIFTLEFT 3 /* << */
+
+#define PREC_OP_MULTIPLICATION 5 /* * */
+#define PREC_OP_DIVISION 5 /* / */
+#define PREC_OP_MODULUS 5 /* % */
+
+#define PREC_OP_SUM 8 /* + */
+#define PREC_OP_SUBTRACTION 8 /* - */
+
+#define PREC_OP_GREATERTHAN 11 /* > */ /* Case sensitive (normal for numbers) */
+#define PREC_OP_LOWERTHAN 11 /* < */ /* Case sensitive (normal for numbers) */
+
+#define PREC_OP_EQUALTO 12 /* == */ /* Case sensitive comparison for strings or normal comp.fr numbers */
+
+#define PREC_OP_GREATEROREQUALTO 14 /* >= */ /* Case sensitive (normal for numbers) */
+#define PREC_OP_LOWEROREQUALTO 14 /* <= */ /* Case sensitive (normal for numbers) */
+
+#define PREC_OP_NOTEQUALTO 15 /* != */ /* Case sensitive (normal for numbers) */
+
+#define PREC_OP_AND 16 /* && */
+#define PREC_OP_OR 17 /* || */
+#define PREC_OP_XOR 18 /* ^^ */
+// low precedence
+
+
+class KVIRC_API KviKvsTreeNodeExpression : public KviKvsTreeNodeData
+{
+ // this class is never instantiated
+public:
+ KviKvsTreeNodeExpression(const QChar * pLocation);
+ ~KviKvsTreeNodeExpression();
+protected:
+ KviKvsTreeNodeExpression * m_pParentExpression;
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual int precedence();
+ virtual KviKvsTreeNodeExpression * left();
+ virtual KviKvsTreeNodeExpression * right();
+ virtual void setLeft(KviKvsTreeNodeExpression * pLeft);
+ virtual void setRight(KviKvsTreeNodeExpression * pRight);
+ virtual int firstBinaryOperator();
+ KviKvsTreeNodeExpression * parentExpression(){ return m_pParentExpression; };
+ void setParentExpression(KviKvsTreeNodeExpression * pParent){ m_pParentExpression = pParent; };
+ virtual KviKvsTreeNodeExpression * parentWithPrecedenceLowerThan(int iPrec);
+};
+
+
+class KVIRC_API KviKvsTreeNodeExpressionVariableOperand : public KviKvsTreeNodeExpression
+{
+public:
+ KviKvsTreeNodeExpressionVariableOperand(const QChar * pLocation,KviKvsTreeNodeData * pData);
+ ~KviKvsTreeNodeExpressionVariableOperand();
+protected:
+ KviKvsTreeNodeData * m_pData; // can't be null
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pResult);
+};
+
+
+class KVIRC_API KviKvsTreeNodeExpressionConstantOperand : public KviKvsTreeNodeExpression
+{
+public:
+ KviKvsTreeNodeExpressionConstantOperand(const QChar * pLocation,KviKvsVariant * pConstant);
+ ~KviKvsTreeNodeExpressionConstantOperand();
+public:
+ KviKvsVariant * m_pConstant;
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pResult);
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+class KVIRC_API KviKvsTreeNodeExpressionOperator : public KviKvsTreeNodeExpression
+{
+public:
+ KviKvsTreeNodeExpressionOperator(const QChar * pLocation);
+ ~KviKvsTreeNodeExpressionOperator();
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+};
+
+class KVIRC_API KviKvsTreeNodeExpressionUnaryOperator : public KviKvsTreeNodeExpressionOperator
+{
+public:
+ KviKvsTreeNodeExpressionUnaryOperator(const QChar * pLocation,KviKvsTreeNodeExpression * pData);
+ ~KviKvsTreeNodeExpressionUnaryOperator();
+protected:
+ KviKvsTreeNodeExpression * m_pData; // can't be null!
+ KviKvsNumber m_nData; // result of the number evaluation
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ bool evaluateOperand(KviKvsRunTimeContext * c);
+};
+
+class KVIRC_API KviKvsTreeNodeExpressionUnaryOperatorNegate : public KviKvsTreeNodeExpressionUnaryOperator
+{
+public:
+ KviKvsTreeNodeExpressionUnaryOperatorNegate(const QChar * pLocation,KviKvsTreeNodeExpression * pData);
+ ~KviKvsTreeNodeExpressionUnaryOperatorNegate();
+public:
+ virtual int precedence();
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pResult);
+};
+
+class KVIRC_API KviKvsTreeNodeExpressionUnaryOperatorBitwiseNot : public KviKvsTreeNodeExpressionUnaryOperator
+{
+public:
+ KviKvsTreeNodeExpressionUnaryOperatorBitwiseNot(const QChar * pLocation,KviKvsTreeNodeExpression * pData);
+ ~KviKvsTreeNodeExpressionUnaryOperatorBitwiseNot();
+public:
+ virtual int precedence();
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pResult);
+};
+
+class KVIRC_API KviKvsTreeNodeExpressionUnaryOperatorLogicalNot : public KviKvsTreeNodeExpressionUnaryOperator
+{
+public:
+ KviKvsTreeNodeExpressionUnaryOperatorLogicalNot(const QChar * pLocation,KviKvsTreeNodeExpression * pData);
+ ~KviKvsTreeNodeExpressionUnaryOperatorLogicalNot();
+public:
+ virtual int precedence();
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pResult);
+};
+
+class KVIRC_API KviKvsTreeNodeExpressionBinaryOperator : public KviKvsTreeNodeExpressionOperator
+{
+public:
+ KviKvsTreeNodeExpressionBinaryOperator(const QChar * pLocation);
+ ~KviKvsTreeNodeExpressionBinaryOperator();
+protected:
+ KviKvsTreeNodeExpression * m_pLeft; // can be zero only during parsing (and thus when deleting)
+ KviKvsTreeNodeExpression * m_pRight; // can be zero only during parsing (and thus when deleting)
+ KviKvsNumber m_nLeft; // buffer used to evaluate numeric operands
+ KviKvsNumber m_nRight; // buffer used to evaluate numeric operands
+public:
+ virtual KviKvsTreeNodeExpression * left();
+ virtual KviKvsTreeNodeExpression * right();
+ void setLeft(KviKvsTreeNodeExpression * pLeft);
+ void setRight(KviKvsTreeNodeExpression * pRight);
+ virtual int firstBinaryOperator();
+public:
+ void dumpOperands(const char * prefix);
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+protected:
+ bool evaluateOperands(KviKvsRunTimeContext * c);
+};
+
+#define DECLARE_BINARY_OPERATOR(__name) \
+ class KVIRC_API __name : public KviKvsTreeNodeExpressionBinaryOperator \
+ { \
+ public: \
+ __name(const QChar * pLocation); \
+ ~__name(); \
+ public: \
+ virtual void contextDescription(QString &szBuffer); \
+ virtual void dump(const char * prefix); \
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pResult); \
+ virtual int precedence(); \
+ }
+
+DECLARE_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorSum);
+DECLARE_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorMultiplication);
+DECLARE_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorSubtraction);
+DECLARE_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorDivision);
+DECLARE_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorModulus);
+DECLARE_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorBitwiseAnd);
+DECLARE_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorBitwiseOr);
+DECLARE_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorBitwiseXor);
+DECLARE_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorShiftLeft);
+DECLARE_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorShiftRight);
+DECLARE_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorAnd);
+DECLARE_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorOr);
+DECLARE_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorXor);
+DECLARE_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorGreaterThan);
+DECLARE_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorLowerThan);
+DECLARE_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorGreaterOrEqualTo);
+DECLARE_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorLowerOrEqualTo);
+DECLARE_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorEqualTo);
+DECLARE_BINARY_OPERATOR(KviKvsTreeNodeExpressionBinaryOperatorNotEqualTo);
+
+#endif //!_KVI_KVS_TREENODE_EXPRESSION_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_expressionreturn.cpp b/src/kvirc/kvs/kvi_kvs_treenode_expressionreturn.cpp
new file mode 100644
index 00000000..28c41b16
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_expressionreturn.cpp
@@ -0,0 +1,68 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_expressionreturn.cpp
+// Created on Fri 30 Jan 2004 01:27:09 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+#include "kvi_kvs_treenode_expressionreturn.h"
+#include "kvi_kvs_treenode_expression.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_locale.h"
+
+KviKvsTreeNodeExpressionReturn::KviKvsTreeNodeExpressionReturn(const QChar * pLocation,KviKvsTreeNodeExpression * pExpression)
+: KviKvsTreeNodeInstruction(pLocation)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pExpression = pExpression;
+ m_pExpression->setParent(this);
+#endif
+}
+
+KviKvsTreeNodeExpressionReturn::~KviKvsTreeNodeExpressionReturn()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pExpression;
+#endif
+}
+
+
+void KviKvsTreeNodeExpressionReturn::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Expression Return Evaluation";
+#endif
+}
+
+void KviKvsTreeNodeExpressionReturn::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s ExpressionReturn",prefix);
+ QString tmp = prefix;
+ tmp += " ";
+ m_pExpression->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeExpressionReturn::execute(KviKvsRunTimeContext * c)
+{
+ return m_pExpression->evaluateReadOnly(c,c->returnValue());
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_expressionreturn.h b/src/kvirc/kvs/kvi_kvs_treenode_expressionreturn.h
new file mode 100644
index 00000000..8622da0e
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_expressionreturn.h
@@ -0,0 +1,45 @@
+#ifndef _KVI_KVS_TREENODE_EXPRESSIONRETURN_H_
+#define _KVI_KVS_TREENODE_EXPRESSIONRETURN_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_expressionreturn.h
+// Created on Fri 30 Jan 2004 01:27:09 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_kvs_treenode_instruction.h"
+
+class KviKvsTreeNodeExpression;
+
+class KVIRC_API KviKvsTreeNodeExpressionReturn : public KviKvsTreeNodeInstruction
+{
+public:
+ KviKvsTreeNodeExpressionReturn(const QChar * pLocation,KviKvsTreeNodeExpression * pExpression);
+ ~KviKvsTreeNodeExpressionReturn();
+protected:
+ KviKvsTreeNodeExpression * m_pExpression;
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+#endif //!_KVI_KVS_TREENODE_EXPRESSIONRETURN_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp b/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp
new file mode 100644
index 00000000..49906741
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.cpp
@@ -0,0 +1,79 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_extendedscopevariable.cpp
+// Created on Thu 16 Oct 2003 22:41:20 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_extendedscopevariable.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_locale.h"
+
+KviKvsTreeNodeExtendedScopeVariable::KviKvsTreeNodeExtendedScopeVariable(const QChar * pLocation,const QString &szIdentifier)
+: KviKvsTreeNodeVariable(pLocation,szIdentifier)
+{
+}
+
+KviKvsTreeNodeExtendedScopeVariable::~KviKvsTreeNodeExtendedScopeVariable()
+{
+}
+
+void KviKvsTreeNodeExtendedScopeVariable::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Extended Scope Variable \"";
+ szBuffer += m_szIdentifier;
+ szBuffer += "\"";
+}
+
+void KviKvsTreeNodeExtendedScopeVariable::dump(const char * prefix)
+{
+ debug("%s ExtendedScopeVariable(%s)",prefix,m_szIdentifier.utf8().data());
+}
+
+bool KviKvsTreeNodeExtendedScopeVariable::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ if(!c->extendedScopeVariables())
+ {
+ c->error(this,__tr2qs("There are no extended scope variables in this scope"));
+ return false;
+ }
+
+ KviKvsVariant * v = c->extendedScopeVariables()->find(m_szIdentifier);
+ if(v)
+ {
+ pBuffer->copyFrom(v);
+ } else {
+ pBuffer->setNothing();
+ }
+ return true;
+}
+
+KviKvsRWEvaluationResult * KviKvsTreeNodeExtendedScopeVariable::evaluateReadWrite(KviKvsRunTimeContext * c)
+{
+ if(!c->extendedScopeVariables())
+ {
+ c->error(this,__tr2qs("There are no extended scope variables in this scope"));
+ return false;
+ }
+
+ return new KviKvsHashElement(0,c->extendedScopeVariables()->get(m_szIdentifier),c->extendedScopeVariables(),m_szIdentifier);
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.h b/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.h
new file mode 100644
index 00000000..06fba6e2
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_extendedscopevariable.h
@@ -0,0 +1,45 @@
+#ifndef _KVI_KVS_TREENODE_EXTENDEDSCOPEVARIABLE_H_
+#define _KVI_KVS_TREENODE_EXTENDEDSCOPEVARIABLE_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_extendedscopevariable.h
+// Created on Thu 16 Oct 2003 22:41:20 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_variable.h"
+
+class KviKvsRunTimeContext;
+
+class KVIRC_API KviKvsTreeNodeExtendedScopeVariable : public KviKvsTreeNodeVariable
+{
+public:
+ KviKvsTreeNodeExtendedScopeVariable(const QChar * pLocation,const QString &szIdentifier);
+ ~KviKvsTreeNodeExtendedScopeVariable();
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pResult);
+ virtual KviKvsRWEvaluationResult * evaluateReadWrite(KviKvsRunTimeContext * c);
+};
+
+#endif //!_KVI_KVS_TREENODE_EXTENDEDSCOPEVARIABLE_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_functioncall.cpp b/src/kvirc/kvs/kvi_kvs_treenode_functioncall.cpp
new file mode 100644
index 00000000..1f8403e5
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_functioncall.cpp
@@ -0,0 +1,62 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_functioncall.cpp
+// Created on Tue 07 Oct 2003 03:14:44 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_functioncall.h"
+
+
+KviKvsTreeNodeFunctionCall::KviKvsTreeNodeFunctionCall(const QChar * pLocation,const QString &szFunctionName,KviKvsTreeNodeDataList * pParams)
+: KviKvsTreeNodeData(pLocation)
+{
+ m_szFunctionName = szFunctionName;
+ m_pParams = pParams;
+ m_pParams->setParent(this);
+}
+
+KviKvsTreeNodeFunctionCall::~KviKvsTreeNodeFunctionCall()
+{
+ delete m_pParams;
+}
+
+void KviKvsTreeNodeFunctionCall::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Function Call";
+}
+
+void KviKvsTreeNodeFunctionCall::dump(const char * prefix)
+{
+ debug("%s FunctionCall",prefix);
+}
+
+bool KviKvsTreeNodeFunctionCall::canEvaluateToObjectReference()
+{
+ return true;
+}
+
+bool KviKvsTreeNodeFunctionCall::isFunctionCall()
+{
+ return true;
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_functioncall.h b/src/kvirc/kvs/kvi_kvs_treenode_functioncall.h
new file mode 100644
index 00000000..88d8250b
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_functioncall.h
@@ -0,0 +1,47 @@
+#ifndef _KVI_KVS_TREENODE_FUNCTIONCALL_H_
+#define _KVI_KVS_TREENODE_FUNCTIONCALL_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_functioncall.h
+// Created on Tue 07 Oct 2003 03:14:44 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_kvs_treenode_data.h"
+#include "kvi_kvs_treenode_datalist.h"
+
+class KVIRC_API KviKvsTreeNodeFunctionCall : public KviKvsTreeNodeData
+{
+public:
+ KviKvsTreeNodeFunctionCall(const QChar * pLocation,const QString &szFunctionName,KviKvsTreeNodeDataList * pParams);
+ ~KviKvsTreeNodeFunctionCall();
+protected:
+ QString m_szFunctionName;
+ KviKvsTreeNodeDataList * m_pParams; // never 0
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool canEvaluateToObjectReference(); // yes
+ virtual bool isFunctionCall(); // yes
+};
+
+
+#endif //!_KVI_KVS_TREENODE_FUNCTIONCALL_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_globalvariable.cpp b/src/kvirc/kvs/kvi_kvs_treenode_globalvariable.cpp
new file mode 100644
index 00000000..ea6bd031
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_globalvariable.cpp
@@ -0,0 +1,63 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_globalvariable.cpp
+// Created on Thu 16 Oct 2003 22:45:01 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_globalvariable.h"
+#include "kvi_kvs_runtimecontext.h"
+
+KviKvsTreeNodeGlobalVariable::KviKvsTreeNodeGlobalVariable(const QChar * pLocation,const QString &szIdentifier)
+: KviKvsTreeNodeVariable(pLocation,szIdentifier)
+{
+}
+
+KviKvsTreeNodeGlobalVariable::~KviKvsTreeNodeGlobalVariable()
+{
+}
+
+void KviKvsTreeNodeGlobalVariable::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Global Variable \"";
+ szBuffer += m_szIdentifier;
+ szBuffer += "\"";
+}
+
+void KviKvsTreeNodeGlobalVariable::dump(const char * prefix)
+{
+ debug("%s GlobalVariable(%s)",prefix,m_szIdentifier.utf8().data());
+}
+
+
+bool KviKvsTreeNodeGlobalVariable::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ KviKvsVariant * v = c->globalVariables()->find(m_szIdentifier);
+ if(v)pBuffer->copyFrom(v);
+ else pBuffer->setNothing();
+ return true;
+}
+
+KviKvsRWEvaluationResult * KviKvsTreeNodeGlobalVariable::evaluateReadWrite(KviKvsRunTimeContext * c)
+{
+ return new KviKvsHashElement(0,c->globalVariables()->get(m_szIdentifier),c->globalVariables(),m_szIdentifier);
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_globalvariable.h b/src/kvirc/kvs/kvi_kvs_treenode_globalvariable.h
new file mode 100644
index 00000000..9f6bcf0a
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_globalvariable.h
@@ -0,0 +1,45 @@
+#ifndef _KVI_KVS_TREENODE_GLOBALVARIABLE_H_
+#define _KVI_KVS_TREENODE_GLOBALVARIABLE_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_globalvariable.h
+// Created on Thu 16 Oct 2003 22:45:01 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_variable.h"
+
+class KviKvsRunTimeContext;
+
+class KVIRC_API KviKvsTreeNodeGlobalVariable : public KviKvsTreeNodeVariable
+{
+public:
+ KviKvsTreeNodeGlobalVariable(const QChar * pLocation,const QString &szIdentifier);
+ ~KviKvsTreeNodeGlobalVariable();
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pResult);
+ virtual KviKvsRWEvaluationResult * evaluateReadWrite(KviKvsRunTimeContext * c);
+};
+
+#endif //!_KVI_KVS_TREENODE_GLOBALVARIABLE_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_hashcount.cpp b/src/kvirc/kvs/kvi_kvs_treenode_hashcount.cpp
new file mode 100644
index 00000000..3ecfaf52
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_hashcount.cpp
@@ -0,0 +1,88 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_hashcount.cpp
+// Created on Tue 07 Oct 2003 03:05:30 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_hashcount.h"
+#include "kvi_kvs_variant.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_kvs_object.h"
+#include "kvi_locale.h"
+
+
+KviKvsTreeNodeHashCount::KviKvsTreeNodeHashCount(const QChar * pLocation,KviKvsTreeNodeData * pSource)
+: KviKvsTreeNodeIndirectData(pLocation,pSource)
+{
+}
+
+KviKvsTreeNodeHashCount::~KviKvsTreeNodeHashCount()
+{
+}
+
+void KviKvsTreeNodeHashCount::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Hash Count Operator";
+#endif
+}
+
+void KviKvsTreeNodeHashCount::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s HashCount",prefix);
+#endif
+}
+
+bool KviKvsTreeNodeHashCount::evaluateReadOnlyInObjectScope(KviKvsObject *o,KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant val;
+ if(o)
+ {
+ if(!m_pSource->evaluateReadOnlyInObjectScope(o,c,&val))return false;
+ } else {
+ if(!m_pSource->evaluateReadOnly(c,&val))return false;
+ }
+
+ if(!val.isHash())
+ {
+ if(!val.isNothing())
+ {
+ QString szType;
+ val.getTypeName(szType);
+ c->warning(this,__tr2qs("The argument of the hash count '#' operator didn't evaluate to a hash: automatic conversion from type '%Q' supplied"),&szType);
+ }
+ pBuffer->setInteger(0);
+ return true;
+ }
+
+ pBuffer->setInteger(val.hash()->size());
+#endif
+ return true;
+}
+bool KviKvsTreeNodeHashCount::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ return evaluateReadOnlyInObjectScope(0,c,pBuffer);
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_hashcount.h b/src/kvirc/kvs/kvi_kvs_treenode_hashcount.h
new file mode 100644
index 00000000..b59cf371
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_hashcount.h
@@ -0,0 +1,47 @@
+#ifndef _KVI_KVS_TREENODE_HASHCOUNT_H_
+#define _KVI_KVS_TREENODE_HASHCOUNT_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_hashcount.h
+// Created on Tue 07 Oct 2003 03:05:30 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_indirectdata.h"
+
+class KviKvsRunTimeContext;
+class KviKvsVariant;
+class KviKvsObject;
+
+class KVIRC_API KviKvsTreeNodeHashCount : public KviKvsTreeNodeIndirectData
+{
+public:
+ KviKvsTreeNodeHashCount(const QChar * pLocation,KviKvsTreeNodeData * pSource);
+ ~KviKvsTreeNodeHashCount();
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer);
+ virtual bool evaluateReadOnlyInObjectScope(KviKvsObject *o,KviKvsRunTimeContext * c,KviKvsVariant * pBuffer);
+};
+
+#endif //!_KVI_KVS_TREENODE_HASHCOUNT_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp b/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp
new file mode 100644
index 00000000..645478f6
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_hashelement.cpp
@@ -0,0 +1,164 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_hashelement.cpp
+// Created on Tue 07 Oct 2003 03:04:18 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_hashelement.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_locale.h"
+#include "kvi_kvs_hash.h"
+#include "kvi_kvs_object.h"
+
+KviKvsTreeNodeHashElement::KviKvsTreeNodeHashElement(const QChar * pLocation,KviKvsTreeNodeData * pSource,KviKvsTreeNodeData * pKey)
+: KviKvsTreeNodeArrayOrHashElement(pLocation,pSource)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pKey = pKey;
+ m_pKey->setParent(this);
+#endif
+}
+
+
+KviKvsTreeNodeHashElement::~KviKvsTreeNodeHashElement()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pKey;
+#endif
+}
+
+void KviKvsTreeNodeHashElement::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Hash Element Evaluation";
+#endif
+}
+
+void KviKvsTreeNodeHashElement::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s HashElement",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pSource->dump(tmp.utf8().data());
+ m_pKey->dump(tmp.utf8().data());
+#endif
+}
+
+
+bool KviKvsTreeNodeHashElement::evaluateReadOnlyInObjectScope(KviKvsObject *o,KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant key;
+ if(!m_pKey->evaluateReadOnly(c,&key))return false;
+
+ QString szKey;
+ key.asString(szKey);
+
+ if(szKey.isEmpty())
+ {
+ c->warning(this,__tr2qs("Hash key evaluated to empty string: fix the script"));
+ pBuffer->setNothing();
+ return true;
+ }
+
+ KviKvsVariant val;
+ if(o)
+ {
+ if(!m_pSource->evaluateReadOnlyInObjectScope(o,c,&val))return false;
+ } else {
+ if(!m_pSource->evaluateReadOnly(c,&val))return false;
+ }
+
+ if(!val.isHash())
+ {
+ if(!val.isNothing())
+ {
+ QString szType;
+ val.getTypeName(szType);
+ c->warning(this,__tr2qs("The argument of the {} subscript didn't evaluate to a hash: automatic conversion from type '%Q' supplied"),&szType);
+ }
+ pBuffer->setNothing();
+ return true;
+ }
+
+ KviKvsVariant * v = val.hash()->find(szKey);
+ if(!v)
+ {
+ pBuffer->setNothing();
+ return true;
+ }
+
+ pBuffer->copyFrom(v);
+#endif
+ return true;
+}
+
+KviKvsRWEvaluationResult * KviKvsTreeNodeHashElement::evaluateReadWriteInObjectScope(KviKvsObject *o,KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant key;
+ if(!m_pKey->evaluateReadOnly(c,&key))return 0;
+
+ QString szKey;
+ key.asString(szKey);
+
+ if(szKey.isEmpty())
+ {
+ c->warning(this,__tr2qs("Hash key evaluated to empty string: fix the script"));
+ }
+
+ KviKvsRWEvaluationResult * result;
+ if(o)result = m_pSource->evaluateReadWriteInObjectScope(o,c);
+ else result = m_pSource->evaluateReadWrite(c);
+ if(!result)return 0;
+
+ if(!result->result()->isHash())
+ {
+ // convert to hash in some way
+//#warning "Supply a *real* conversion from other types to array ?"
+ if(!result->result()->isNothing())
+ {
+ QString szType;
+ result->result()->getTypeName(szType);
+ c->warning(this,__tr2qs("The argument of the {} subscript didn't evaluate to a hash automatic conversion from %Q supplied"),&szType);
+ }
+ result->result()->setHash(new KviKvsHash());
+ }
+
+ return new KviKvsHashElement(result,result->result()->hash()->get(szKey),result->result()->hash(),szKey);
+#else
+ return 0;
+#endif
+}
+
+
+bool KviKvsTreeNodeHashElement::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ return evaluateReadOnlyInObjectScope(0,c,pBuffer);
+}
+
+KviKvsRWEvaluationResult * KviKvsTreeNodeHashElement::evaluateReadWrite(KviKvsRunTimeContext * c)
+{
+ return evaluateReadWriteInObjectScope(0,c);
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_hashelement.h b/src/kvirc/kvs/kvi_kvs_treenode_hashelement.h
new file mode 100644
index 00000000..5b46a7ec
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_hashelement.h
@@ -0,0 +1,52 @@
+#ifndef _KVI_KVS_TREENODE_HASHELEMENT_H_
+#define _KVI_KVS_TREENODE_HASHELEMENT_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_hashelement.h
+// Created on Tue 07 Oct 2003 03:04:18 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_data.h"
+#include "kvi_kvs_treenode_arrayorhashelement.h"
+
+class KviKvsRunTimeContext;
+class KviKvsObject;
+
+class KVIRC_API KviKvsTreeNodeHashElement : public KviKvsTreeNodeArrayOrHashElement
+{
+public:
+ KviKvsTreeNodeHashElement(const QChar * pLocation,KviKvsTreeNodeData * pSource,KviKvsTreeNodeData * pIndex);
+ ~KviKvsTreeNodeHashElement();
+protected:
+ KviKvsTreeNodeData * m_pKey; // can't be null
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer);
+ virtual KviKvsRWEvaluationResult * evaluateReadWrite(KviKvsRunTimeContext * c);
+ virtual bool evaluateReadOnlyInObjectScope(KviKvsObject *o,KviKvsRunTimeContext * c,KviKvsVariant * pBuffer);
+ virtual KviKvsRWEvaluationResult * evaluateReadWriteInObjectScope(KviKvsObject *o,KviKvsRunTimeContext * c);
+};
+
+
+#endif //!_KVI_KVS_TREENODE_HASHELEMENT_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_hashreferenceassert.cpp b/src/kvirc/kvs/kvi_kvs_treenode_hashreferenceassert.cpp
new file mode 100644
index 00000000..799cc1e5
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_hashreferenceassert.cpp
@@ -0,0 +1,107 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_hashreferenceassert.cpp
+// Created on Thu 16 Oct 2003 23:43:06 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_hashreferenceassert.h"
+#include "kvi_kvs_rwevaluationresult.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_kvs_variant.h"
+#include "kvi_locale.h"
+
+KviKvsTreeNodeHashReferenceAssert::KviKvsTreeNodeHashReferenceAssert(const QChar * pLocation,KviKvsTreeNodeData * pSource)
+: KviKvsTreeNodeIndirectData(pLocation,pSource)
+{
+}
+
+KviKvsTreeNodeHashReferenceAssert::~KviKvsTreeNodeHashReferenceAssert()
+{
+}
+
+bool KviKvsTreeNodeHashReferenceAssert::isReadOnly()
+{
+ return m_pSource->isReadOnly();
+}
+
+void KviKvsTreeNodeHashReferenceAssert::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Hash Reference Assert";
+#endif
+}
+
+void KviKvsTreeNodeHashReferenceAssert::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s HashReferenceAssert",prefix);
+#endif
+}
+
+bool KviKvsTreeNodeHashReferenceAssert::evaluateReadOnlyInObjectScope(KviKvsObject *o,KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ if(o)
+ {
+ if(!m_pSource->evaluateReadOnlyInObjectScope(o,c,pBuffer))return false;
+ } else {
+ if(!m_pSource->evaluateReadOnly(c,pBuffer))return false;
+ }
+
+ if(!pBuffer->isHash())
+ {
+ if(!pBuffer->isNothing())
+ {
+ QString szType;
+ pBuffer->getTypeName(szType);
+ c->error(this,__tr2qs("Hash reference assert failed: the variable evaluated to type '%Q'"),&szType);
+ return false;
+ }
+ }
+#endif
+ return true;
+}
+
+KviKvsRWEvaluationResult * KviKvsTreeNodeHashReferenceAssert::evaluateReadWriteInObjectScope(KviKvsObject *o,KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsRWEvaluationResult * r;
+ if(o)r = m_pSource->evaluateReadWriteInObjectScope(o,c);
+ else r = m_pSource->evaluateReadWrite(c);
+ if(!r)return false;
+
+ return r;
+#else
+ return 0;
+#endif
+}
+
+bool KviKvsTreeNodeHashReferenceAssert::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ return evaluateReadOnlyInObjectScope(0,c,pBuffer);
+}
+
+KviKvsRWEvaluationResult * KviKvsTreeNodeHashReferenceAssert::evaluateReadWrite(KviKvsRunTimeContext * c)
+{
+ return evaluateReadWriteInObjectScope(0,c);
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_hashreferenceassert.h b/src/kvirc/kvs/kvi_kvs_treenode_hashreferenceassert.h
new file mode 100644
index 00000000..43cb57c3
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_hashreferenceassert.h
@@ -0,0 +1,53 @@
+#ifndef _KVI_KVS_TREENODE_HASHREFERENCEASSERT_H_
+#define _KVI_KVS_TREENODE_HASHREFERENCEASSERT_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_hashreferenceassert.h
+// Created on Thu 16 Oct 2003 23:43:06 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_indirectdata.h"
+
+class KviKvsRunTimeContext;
+class KviKvsVariant;
+class KviKvsRWEvaluationResult;
+class KviKvsObject;
+
+class KVIRC_API KviKvsTreeNodeHashReferenceAssert : public KviKvsTreeNodeIndirectData
+{
+public:
+ KviKvsTreeNodeHashReferenceAssert(const QChar * pLocation,KviKvsTreeNodeData * pSource);
+ ~KviKvsTreeNodeHashReferenceAssert();
+protected:
+
+public:
+ virtual bool isReadOnly();
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer);
+ virtual KviKvsRWEvaluationResult * evaluateReadWrite(KviKvsRunTimeContext * c);
+ virtual bool evaluateReadOnlyInObjectScope(KviKvsObject *o,KviKvsRunTimeContext * c,KviKvsVariant * pBuffer);
+ virtual KviKvsRWEvaluationResult * evaluateReadWriteInObjectScope(KviKvsObject *o,KviKvsRunTimeContext * c);
+};
+
+#endif //!_KVI_KVS_TREENODE_HASHREFERENCEASSERT_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_indirectdata.cpp b/src/kvirc/kvs/kvi_kvs_treenode_indirectdata.cpp
new file mode 100644
index 00000000..285c9d91
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_indirectdata.cpp
@@ -0,0 +1,46 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_indirectdata.cpp
+// Created on Thu 16 Oct 2003 22:49:46 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_indirectdata.h"
+
+KviKvsTreeNodeIndirectData::KviKvsTreeNodeIndirectData(const QChar * pLocation,KviKvsTreeNodeData * pSource)
+: KviKvsTreeNodeData(pLocation)
+{
+ m_pSource = pSource;
+ m_pSource->setParent(this);
+}
+
+KviKvsTreeNodeIndirectData::~KviKvsTreeNodeIndirectData()
+{
+ delete m_pSource;
+}
+
+
+bool KviKvsTreeNodeIndirectData::canEvaluateInObjectScope()
+{
+ return m_pSource->canEvaluateInObjectScope();
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_indirectdata.h b/src/kvirc/kvs/kvi_kvs_treenode_indirectdata.h
new file mode 100644
index 00000000..31a9410c
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_indirectdata.h
@@ -0,0 +1,42 @@
+#ifndef _KVI_KVS_TREENODE_INDIRECTDATA_H_
+#define _KVI_KVS_TREENODE_INDIRECTDATA_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_indirectdata.h
+// Created on Thu 16 Oct 2003 22:49:46 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_data.h"
+
+class KVIRC_API KviKvsTreeNodeIndirectData : public KviKvsTreeNodeData
+{
+public:
+ KviKvsTreeNodeIndirectData(const QChar * pLocation,KviKvsTreeNodeData * pSource);
+ ~KviKvsTreeNodeIndirectData();
+protected:
+ KviKvsTreeNodeData * m_pSource; // can't be null!
+public:
+ virtual bool canEvaluateInObjectScope();
+};
+
+#endif //!_KVI_KVS_TREENODE_INDIRECTDATA_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_instruction.cpp b/src/kvirc/kvs/kvi_kvs_treenode_instruction.cpp
new file mode 100644
index 00000000..37cb3d04
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_instruction.cpp
@@ -0,0 +1,43 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_instruction.cpp
+// Creation date : Mon 06 Sep 2003 03.47 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_instruction.h"
+
+void KviKvsTreeNodeInstruction::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Instruction";
+#endif
+}
+
+void KviKvsTreeNodeInstruction::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s Instruction",prefix);
+#endif
+}
+
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_instruction.h b/src/kvirc/kvs/kvi_kvs_treenode_instruction.h
new file mode 100644
index 00000000..1e0c09c3
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_instruction.h
@@ -0,0 +1,54 @@
+#ifndef _KVI_KVS_TREENODE_INSTRUCTION_H_
+#define _KVI_KVS_TREENODE_INSTRUCTION_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode.h
+// Creation date : Mon 06 Oct 2003 03.46 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_base.h"
+
+class KviKvsRunTimeContext;
+
+
+class KVIRC_API KviKvsTreeNodeInstruction : public KviKvsTreeNode
+{
+public:
+ KviKvsTreeNodeInstruction(const QChar * pLocation)
+ : KviKvsTreeNode(pLocation){};
+ ~KviKvsTreeNodeInstruction(){};
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+
+ // execute() is the main entry point to the tree visit
+ // execute() returns false when the tree visiting has
+ // to be stopped and returns true when it has been
+ // succesfully completed. A false return value may
+ // signal an error but is also used by break, halt, return
+ // and similar. The error condition is signaled by
+ // KviKvsRunTimeContext::error().
+ virtual bool execute(KviKvsRunTimeContext * c) = 0;
+};
+
+
+#endif //!_KVI_KVS_TREENODE_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_instructionblock.cpp b/src/kvirc/kvs/kvi_kvs_treenode_instructionblock.cpp
new file mode 100644
index 00000000..75afd456
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_instructionblock.cpp
@@ -0,0 +1,88 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_instructionblock.cpp
+// Created on Thu 09 Oct 2003 01:44:31 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+
+#include "kvi_kvs_treenode_instructionblock.h"
+#include "kvi_kvs_runtimecontext.h"
+
+KviKvsTreeNodeInstructionBlock::KviKvsTreeNodeInstructionBlock(const QChar * pLocation)
+: KviKvsTreeNodeInstruction(pLocation)
+{
+ m_pInstructionList = new KviPointerList<KviKvsTreeNodeInstruction>;
+ m_pInstructionList->setAutoDelete(true);
+}
+
+KviKvsTreeNodeInstructionBlock::~KviKvsTreeNodeInstructionBlock()
+{
+ delete m_pInstructionList;
+}
+
+void KviKvsTreeNodeInstructionBlock::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Instruction Block";
+}
+
+void KviKvsTreeNodeInstructionBlock::dump(const char * prefix)
+{
+ debug("%s InstructionBlock",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ for(KviKvsTreeNodeInstruction * i = m_pInstructionList->first();i;i = m_pInstructionList->next())
+ {
+ i->dump(tmp.utf8().data());
+ }
+}
+
+KviKvsTreeNodeInstruction * KviKvsTreeNodeInstructionBlock::releaseFirst()
+{
+ m_pInstructionList->setAutoDelete(false);
+ KviKvsTreeNodeInstruction * i = m_pInstructionList->first();
+ if(i)
+ {
+ i->setParent(0);
+ m_pInstructionList->removeFirst();
+ }
+ m_pInstructionList->setAutoDelete(true);
+ return i;
+}
+
+void KviKvsTreeNodeInstructionBlock::addInstruction(KviKvsTreeNodeInstruction * i)
+{
+ m_pInstructionList->append(i);
+ i->setParent(this);
+}
+
+bool KviKvsTreeNodeInstructionBlock::execute(KviKvsRunTimeContext * c)
+{
+ // to accomodate recursion we need to use an iterator here
+ KviPointerListIterator<KviKvsTreeNodeInstruction> it(*m_pInstructionList);
+ while(KviKvsTreeNodeInstruction * i = it.current())
+ {
+ if(!i->execute(c))return false;
+ ++it;
+ }
+ return true;
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_instructionblock.h b/src/kvirc/kvs/kvi_kvs_treenode_instructionblock.h
new file mode 100644
index 00000000..f4aa32f4
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_instructionblock.h
@@ -0,0 +1,55 @@
+#ifndef _KVI_KVS_TREENODE_INSTRUCTIONBLOCK_H_
+#define _KVI_KVS_TREENODE_INSTRUCTIONBLOCK_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_instructionblock.h
+// Created on Thu 09 Oct 2003 01:44:31 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_pointerlist.h"
+
+#include "kvi_kvs_treenode_instruction.h"
+
+class KviKvsRunTimeContext;
+
+
+class KVIRC_API KviKvsTreeNodeInstructionBlock : public KviKvsTreeNodeInstruction
+{
+public:
+ KviKvsTreeNodeInstructionBlock(const QChar * pLocation);
+ ~KviKvsTreeNodeInstructionBlock();
+protected:
+ KviPointerList<KviKvsTreeNodeInstruction> * m_pInstructionList;
+public:
+ unsigned int instructionCount(){ return m_pInstructionList->count(); };
+ void addInstruction(KviKvsTreeNodeInstruction * i);
+ KviKvsTreeNodeInstruction * releaseFirst();
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+
+ virtual bool execute(KviKvsRunTimeContext * c);
+
+};
+
+
+#endif //!_KVI_KVS_TREENODE_INSTRUCTIONBLOCK_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_localvariable.cpp b/src/kvirc/kvs/kvi_kvs_treenode_localvariable.cpp
new file mode 100644
index 00000000..95221ca9
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_localvariable.cpp
@@ -0,0 +1,76 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_localvariable.cpp
+// Created on Thu 16 Oct 2003 22:41:20 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_localvariable.h"
+#include "kvi_kvs_runtimecontext.h"
+
+KviKvsTreeNodeLocalVariable::KviKvsTreeNodeLocalVariable(const QChar * pLocation,const QString &szIdentifier)
+: KviKvsTreeNodeVariable(pLocation,szIdentifier)
+{
+}
+
+KviKvsTreeNodeLocalVariable::~KviKvsTreeNodeLocalVariable()
+{
+}
+
+void KviKvsTreeNodeLocalVariable::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Local Variable \"";
+ szBuffer += m_szIdentifier;
+ szBuffer += "\"";
+#endif
+}
+
+void KviKvsTreeNodeLocalVariable::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s LocalVariable(%s)",prefix,m_szIdentifier.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeLocalVariable::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant * v = c->localVariables()->find(m_szIdentifier);
+ if(v)
+ {
+ pBuffer->copyFrom(v);
+ } else {
+ pBuffer->setNothing();
+ }
+#endif
+ return true;
+}
+
+KviKvsRWEvaluationResult * KviKvsTreeNodeLocalVariable::evaluateReadWrite(KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ return new KviKvsHashElement(0,c->localVariables()->get(m_szIdentifier),c->localVariables(),m_szIdentifier);
+#else
+ return 0;
+#endif
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_localvariable.h b/src/kvirc/kvs/kvi_kvs_treenode_localvariable.h
new file mode 100644
index 00000000..9f6998df
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_localvariable.h
@@ -0,0 +1,45 @@
+#ifndef _KVI_KVS_TREENODE_LOCALVARIABLE_H_
+#define _KVI_KVS_TREENODE_LOCALVARIABLE_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_localvariable.h
+// Created on Thu 16 Oct 2003 22:41:20 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_variable.h"
+
+class KviKvsRunTimeContext;
+
+class KVIRC_API KviKvsTreeNodeLocalVariable : public KviKvsTreeNodeVariable
+{
+public:
+ KviKvsTreeNodeLocalVariable(const QChar * pLocation,const QString &szIdentifier);
+ ~KviKvsTreeNodeLocalVariable();
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pResult);
+ virtual KviKvsRWEvaluationResult * evaluateReadWrite(KviKvsRunTimeContext * c);
+};
+
+#endif //!_KVI_KVS_TREENODE_LOCALVARIABLE_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp b/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp
new file mode 100644
index 00000000..bc6b9c5b
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.cpp
@@ -0,0 +1,97 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_modulecallbackcommand.cpp
+// Created on Thu 09 Oct 2003 02:09:10 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_modulecallbackcommand.h"
+#include "kvi_kvs_treenode_datalist.h"
+#include "kvi_kvs_treenode_switchlist.h"
+
+#include "kvi_modulemanager.h"
+#include "kvi_locale.h"
+#include "kvi_kvs_moduleinterface.h"
+#include "kvi_kvs_runtimecontext.h"
+
+KviKvsTreeNodeModuleCallbackCommand::KviKvsTreeNodeModuleCallbackCommand(const QChar * pLocation,const QString &szModuleName,const QString &szCmdName,KviKvsTreeNodeDataList * params,KviKvsScript * pCallback)
+: KviKvsTreeNodeCallbackCommand(pLocation,szCmdName,params,pCallback)
+{
+ m_szModuleName = szModuleName;
+}
+
+
+KviKvsTreeNodeModuleCallbackCommand::~KviKvsTreeNodeModuleCallbackCommand()
+{
+}
+
+void KviKvsTreeNodeModuleCallbackCommand::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Module Callback Command \"";
+ szBuffer += m_szModuleName;
+ szBuffer += ".";
+ szBuffer += m_szCmdName;
+ szBuffer += "\"";
+}
+
+void KviKvsTreeNodeModuleCallbackCommand::dump(const char * prefix)
+{
+ debug("%s ModuleCallbackCommand(%s.%s)",prefix,m_szModuleName.utf8().data(),m_szCmdName.utf8().data());
+ dumpSwitchList(prefix);
+ dumpParameterList(prefix);
+ dumpCallback(prefix);
+}
+
+bool KviKvsTreeNodeModuleCallbackCommand::execute(KviKvsRunTimeContext * c)
+{
+//#warning "FIXME: module names should be UNICODE!"
+ KviModule * m = g_pModuleManager->getModule(m_szModuleName.utf8().data());
+ if(!m)
+ {
+ QString szErr = g_pModuleManager->lastError().ptr(); // <-- fixme!
+ c->error(this,__tr2qs("Module command call failed: can't load the module '%Q': %Q"),&m_szModuleName,&szErr);
+ return false;
+ }
+
+ KviKvsModuleCallbackCommandExecRoutine * proc = m->kvsFindCallbackCommand(m_szCmdName);
+ if(!proc)
+ {
+ c->error(this,__tr2qs("Module command call failed: the module '%Q' doesn't export a callback command named '%Q'"),&m_szModuleName,&m_szCmdName);
+ return false;
+ }
+
+ KviKvsVariantList l;
+ l.setAutoDelete(true);
+ if(!(m_pParams->evaluate(c,&l)))return false;
+
+ KviKvsSwitchList swl;
+ if(m_pSwitches)
+ {
+ if(!(m_pSwitches->evaluate(c,&swl)))return false;
+ }
+
+ c->setDefaultReportLocation(this);
+
+ KviKvsModuleCallbackCommandCall call(m,c,&l,&swl,m_pCallback,m_pParams);
+
+ return (*proc)(&call);
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.h b/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.h
new file mode 100644
index 00000000..cc484f96
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_modulecallbackcommand.h
@@ -0,0 +1,50 @@
+#ifndef _KVI_KVS_TREENODE_MODULECALLBACKCOMMAND_H_
+#define _KVI_KVS_TREENODE_MODULECALLBACKCOMMAND_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_modulecallbackcommand.h
+// Created on Thu 09 Oct 2003 02:09:10 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_callbackcommand.h"
+
+class KviKvsTreeNodeDataList;
+class KviKvsScript;
+class KviKvsRunTimeContext;
+
+
+class KVIRC_API KviKvsTreeNodeModuleCallbackCommand : public KviKvsTreeNodeCallbackCommand
+{
+public:
+ KviKvsTreeNodeModuleCallbackCommand(const QChar * pLocation,const QString &szModuleName,const QString &szCmdName,KviKvsTreeNodeDataList * params,KviKvsScript * pCallback);
+ ~KviKvsTreeNodeModuleCallbackCommand();
+protected:
+ QString m_szModuleName;
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ bool execute(KviKvsRunTimeContext* c);
+};
+
+
+#endif //!_KVI_KVS_TREENODE_MODULECALLBACKCOMMAND_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp b/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp
new file mode 100644
index 00000000..e7f0a466
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.cpp
@@ -0,0 +1,90 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_modulefunctioncall.cpp
+// Created on Tue 07 Oct 2003 03:19:28 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_modulefunctioncall.h"
+#include "kvi_kvs_treenode_datalist.h"
+
+#include "kvi_modulemanager.h"
+#include "kvi_locale.h"
+#include "kvi_kvs_moduleinterface.h"
+#include "kvi_kvs_runtimecontext.h"
+
+
+KviKvsTreeNodeModuleFunctionCall::KviKvsTreeNodeModuleFunctionCall(const QChar * pLocation,const QString &szModuleName,const QString &szFncName,KviKvsTreeNodeDataList * pParams)
+: KviKvsTreeNodeFunctionCall(pLocation,szFncName,pParams)
+{
+ m_szModuleName = szModuleName;
+}
+
+KviKvsTreeNodeModuleFunctionCall::~KviKvsTreeNodeModuleFunctionCall()
+{
+}
+
+void KviKvsTreeNodeModuleFunctionCall::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Module Function Call \"";
+ szBuffer += m_szModuleName;
+ szBuffer += ".";
+ szBuffer += m_szFunctionName;
+ szBuffer += "\"";
+}
+
+void KviKvsTreeNodeModuleFunctionCall::dump(const char * prefix)
+{
+ debug("%s ModuleFunctionCall(%s.%s)",prefix,m_szModuleName.utf8().data(),m_szFunctionName.utf8().data());
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pParams->dump(tmp.utf8().data());
+}
+
+bool KviKvsTreeNodeModuleFunctionCall::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+//#warning "FIXME: module names should be UNICODE!"
+ KviModule * m = g_pModuleManager->getModule(m_szModuleName.utf8().data());
+ if(!m)
+ {
+ QString szErr = g_pModuleManager->lastError().ptr(); // <-- fixme!
+ c->error(this,__tr2qs("Module function call failed: can't load the module '%Q': %Q"),&m_szModuleName,&szErr);
+ return false;
+ }
+
+ KviKvsModuleFunctionExecRoutine * proc = m->kvsFindFunction(m_szFunctionName);
+ if(!proc)
+ {
+ c->error(this,__tr2qs("Module function call failed: the module '%Q' doesn't export a function named '%Q'"),&m_szModuleName,&m_szFunctionName);
+ return false;
+ }
+
+ KviKvsVariantList l;
+ if(!m_pParams->evaluate(c,&l))return false;
+
+ pBuffer->setNothing();
+ c->setDefaultReportLocation(this);
+ KviKvsModuleFunctionCall call(m,c,&l,pBuffer);
+
+ return (*proc)(&call);
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.h b/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.h
new file mode 100644
index 00000000..9581d035
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_modulefunctioncall.h
@@ -0,0 +1,48 @@
+#ifndef _KVI_KVS_TREENODE_MODULEFUNCTIONCALL_H_
+#define _KVI_KVS_TREENODE_MODULEFUNCTIONCALL_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_modulefunctioncall.h
+// Created on Tue 07 Oct 2003 03:19:28 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_datalist.h"
+#include "kvi_kvs_treenode_functioncall.h"
+
+class KviKvsRunTimeContext;
+class KviKvsVariant;
+
+class KVIRC_API KviKvsTreeNodeModuleFunctionCall : public KviKvsTreeNodeFunctionCall
+{
+public:
+ KviKvsTreeNodeModuleFunctionCall(const QChar * pLocation,const QString &szModuleName,const QString &szFncName,KviKvsTreeNodeDataList * pParams);
+ ~KviKvsTreeNodeModuleFunctionCall();
+protected:
+ QString m_szModuleName;
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer);
+};
+
+#endif //!_KVI_KVS_TREENODE_MODULEFUNCTIONCALL_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp b/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp
new file mode 100644
index 00000000..78b6f02c
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.cpp
@@ -0,0 +1,97 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_modulesimplecommand.cpp
+// Created on Thu 09 Oct 2003 02:18:27 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_modulesimplecommand.h"
+#include "kvi_kvs_treenode_datalist.h"
+#include "kvi_kvs_treenode_switchlist.h"
+
+#include "kvi_modulemanager.h"
+#include "kvi_locale.h"
+#include "kvi_kvs_moduleinterface.h"
+#include "kvi_kvs_runtimecontext.h"
+
+KviKvsTreeNodeModuleSimpleCommand::KviKvsTreeNodeModuleSimpleCommand(const QChar * pLocation,const QString &szModuleName,const QString &szCmdName,KviKvsTreeNodeDataList * params)
+: KviKvsTreeNodeSimpleCommand(pLocation,szCmdName,params)
+{
+ m_szModuleName = szModuleName;
+}
+
+
+KviKvsTreeNodeModuleSimpleCommand::~KviKvsTreeNodeModuleSimpleCommand()
+{
+}
+
+void KviKvsTreeNodeModuleSimpleCommand::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Module Callback Command \"";
+ szBuffer += m_szModuleName;
+ szBuffer += ".";
+ szBuffer += m_szCmdName;
+ szBuffer += "\"";
+}
+
+void KviKvsTreeNodeModuleSimpleCommand::dump(const char * prefix)
+{
+ debug("%s ModuleSimpleCommand(%s.%s)",prefix,m_szModuleName.utf8().data(),m_szCmdName.utf8().data());
+ dumpSwitchList(prefix);
+ dumpParameterList(prefix);
+}
+
+bool KviKvsTreeNodeModuleSimpleCommand::execute(KviKvsRunTimeContext * c)
+{
+ //#warning "FIXME: module names should be UNICODE!"
+ KviModule * m = g_pModuleManager->getModule(m_szModuleName.utf8().data());
+ if(!m)
+ {
+ QString szErr = g_pModuleManager->lastError().ptr(); // <-- fixme!
+ c->error(this,__tr2qs("Module command call failed: can't load the module '%Q': %Q"),&m_szModuleName,&szErr);
+ return false;
+ }
+
+ KviKvsModuleSimpleCommandExecRoutine * proc = m->kvsFindSimpleCommand(m_szCmdName);
+ if(!proc)
+ {
+ c->error(this,__tr2qs("Module command call failed: the module '%Q' doesn't export a command named '%Q'"),&m_szModuleName,&m_szCmdName);
+ return false;
+ }
+
+ KviKvsVariantList l;
+ l.setAutoDelete(true);
+
+ if(!(m_pParams->evaluate(c,&l)))return false;
+ KviKvsSwitchList swl;
+ if(m_pSwitches)
+ {
+ if(!(m_pSwitches->evaluate(c,&swl)))return false;
+ }
+
+ c->setDefaultReportLocation(this);
+
+ KviKvsModuleCommandCall call(m,c,&l,&swl);
+
+ return (*proc)(&call);
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.h b/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.h
new file mode 100644
index 00000000..2a6ee96d
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_modulesimplecommand.h
@@ -0,0 +1,48 @@
+#ifndef _KVI_KVS_TREENODE_MODULESIMPLECOMMAND_H_
+#define _KVI_KVS_TREENODE_MODULESIMPLECOMMAND_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_modulesimplecommand.h
+// Created on Thu 09 Oct 2003 02:18:27 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_simplecommand.h"
+
+class KviKvsTreeNodeDataList;
+class KviKvsRunTimeContext;
+
+class KVIRC_API KviKvsTreeNodeModuleSimpleCommand : public KviKvsTreeNodeSimpleCommand
+{
+public:
+ KviKvsTreeNodeModuleSimpleCommand(const QChar * pLocation,const QString &szModuleName,const QString &szCmdName,KviKvsTreeNodeDataList * params);
+ ~KviKvsTreeNodeModuleSimpleCommand();
+protected:
+ QString m_szModuleName;
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+
+#endif //!_KVI_KVS_TREENODE_MODULESIMPLECOMMAND_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_multipleparameteridentifier.cpp b/src/kvirc/kvs/kvi_kvs_treenode_multipleparameteridentifier.cpp
new file mode 100644
index 00000000..405575d0
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_multipleparameteridentifier.cpp
@@ -0,0 +1,89 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_multipleparameteridentifier.cpp
+// Created on Tue 07 Oct 2003 03:49:31 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_multipleparameteridentifier.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_kvs_variant.h"
+
+
+KviKvsTreeNodeMultipleParameterIdentifier::KviKvsTreeNodeMultipleParameterIdentifier(const QChar * pLocation,int iStart,int iEnd)
+: KviKvsTreeNodeData(pLocation)
+{
+ m_iStart = iStart;
+ m_iEnd = iEnd;
+}
+
+KviKvsTreeNodeMultipleParameterIdentifier::~KviKvsTreeNodeMultipleParameterIdentifier()
+{
+}
+
+void KviKvsTreeNodeMultipleParameterIdentifier::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Multiple Parameter Identifier \"$";
+ if(m_iEnd < m_iStart)KviQString::appendFormatted(szBuffer,"%d-",m_iStart);
+ else KviQString::appendFormatted(szBuffer,"%d-%d",m_iStart,m_iEnd);
+ szBuffer += "\"";
+}
+
+void KviKvsTreeNodeMultipleParameterIdentifier::dump(const char * prefix)
+{
+ if(m_iEnd < m_iStart)debug("%s MultipleParameterIdentifier(%d-)",prefix,m_iStart);
+ else debug("%s MultipleParameterIdentifier(%d-%d)",prefix,m_iStart,m_iEnd);
+}
+
+bool KviKvsTreeNodeMultipleParameterIdentifier::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ KviKvsVariant * v = c->parameterList()->at(m_iStart);
+ if(!v)
+ {
+ pBuffer->setNothing();
+ return true;
+ }
+
+ QString sz;
+ v->asString(sz);
+
+ if(m_iEnd >= m_iStart)
+ {
+ // only up to m_iEnd
+ int idx = m_iStart;
+ for(v = c->parameterList()->next();v && (idx < m_iEnd);v = c->parameterList()->next())
+ {
+ sz += QChar(' ');
+ v->appendAsString(sz);
+ idx++;
+ }
+ } else {
+ // all up to the end of the list
+ for(v = c->parameterList()->next();v;v = c->parameterList()->next())
+ {
+ sz += QChar(' ');
+ v->appendAsString(sz);
+ }
+ }
+ pBuffer->setString(sz);
+ return true;
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_multipleparameteridentifier.h b/src/kvirc/kvs/kvi_kvs_treenode_multipleparameteridentifier.h
new file mode 100644
index 00000000..ad3edbd4
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_multipleparameteridentifier.h
@@ -0,0 +1,49 @@
+#ifndef _KVI_KVS_TREENODE_MULTIPLEPARAMETERIDENTIFIER_H_
+#define _KVI_KVS_TREENODE_MULTIPLEPARAMETERIDENTIFIER_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_multipleparameteridentifier.h
+// Created on Tue 07 Oct 2003 03:49:31 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_data.h"
+
+class KviKvsRunTimeContext;
+class KviKvsVariant;
+
+class KVIRC_API KviKvsTreeNodeMultipleParameterIdentifier : public KviKvsTreeNodeData
+{
+public:
+ KviKvsTreeNodeMultipleParameterIdentifier(const QChar * pLocation,int iStart,int iEnd);
+ ~KviKvsTreeNodeMultipleParameterIdentifier();
+protected:
+ int m_iStart;
+ int m_iEnd; // the index of the last parameter wanted (may be -1: in that case all up to the end)
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer);
+};
+
+
+#endif //!_KVI_KVS_TREENODE_MULTIPLEPARAMETERIDENTIFIER_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_objectfield.cpp b/src/kvirc/kvs/kvi_kvs_treenode_objectfield.cpp
new file mode 100644
index 00000000..6ac81b9d
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_objectfield.cpp
@@ -0,0 +1,80 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_objectfield.cpp
+// Created on Thu 28 Apr 2005 17:12:14 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_objectfield.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_kvs_object.h"
+#include "kvi_kvs_hash.h"
+
+KviKvsTreeNodeObjectField::KviKvsTreeNodeObjectField(const QChar * pLocation,const QString &szIdentifier)
+: KviKvsTreeNodeVariable(pLocation,szIdentifier)
+{
+}
+
+KviKvsTreeNodeObjectField::~KviKvsTreeNodeObjectField()
+{
+}
+
+void KviKvsTreeNodeObjectField::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Object Field \"";
+ szBuffer += m_szIdentifier;
+ szBuffer += "\"";
+#endif
+}
+
+void KviKvsTreeNodeObjectField::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s ObjectField(%s)",prefix,m_szIdentifier.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeObjectField::canEvaluateInObjectScope()
+{
+ return true;
+}
+
+bool KviKvsTreeNodeObjectField::evaluateReadOnlyInObjectScope(KviKvsObject * o,KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant * v = o->dataContainer()->find(m_szIdentifier);
+ if(v)pBuffer->copyFrom(v);
+ else pBuffer->setNothing();
+#endif
+ return true;
+}
+
+KviKvsRWEvaluationResult * KviKvsTreeNodeObjectField::evaluateReadWriteInObjectScope(KviKvsObject * o,KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ return new KviKvsHashElement(0,o->dataContainer()->get(m_szIdentifier),o->dataContainer(),m_szIdentifier);
+#else
+ return 0;
+#endif
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_objectfield.h b/src/kvirc/kvs/kvi_kvs_treenode_objectfield.h
new file mode 100644
index 00000000..ef56ca10
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_objectfield.h
@@ -0,0 +1,47 @@
+#ifndef _KVI_KVS_TREENODE_OBJECTFIELD_H_
+#define _KVI_KVS_TREENODE_OBJECTFIELD_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_objectfield.h
+// Created on Thu 28 Apr 2005 17:12:14 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_variable.h"
+
+class KviKvsRunTimeContext;
+class KviKvsObject;
+
+class KVIRC_API KviKvsTreeNodeObjectField : public KviKvsTreeNodeVariable
+{
+public:
+ KviKvsTreeNodeObjectField(const QChar * pLocation,const QString &szIdentifier);
+ ~KviKvsTreeNodeObjectField();
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool canEvaluateInObjectScope();
+ virtual bool evaluateReadOnlyInObjectScope(KviKvsObject * o,KviKvsRunTimeContext * c,KviKvsVariant * pResult);
+ virtual KviKvsRWEvaluationResult * evaluateReadWriteInObjectScope(KviKvsObject * o,KviKvsRunTimeContext * c);
+};
+
+#endif //!_KVI_KVS_TREENODE_OBJECTFIELD_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_objectfunctioncall.cpp b/src/kvirc/kvs/kvi_kvs_treenode_objectfunctioncall.cpp
new file mode 100644
index 00000000..d9d5f23d
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_objectfunctioncall.cpp
@@ -0,0 +1,60 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_objectfunctioncall.cpp
+// Created on Tue 07 Oct 2003 03:26:07 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_objectfunctioncall.h"
+
+KviKvsTreeNodeObjectFunctionCall::KviKvsTreeNodeObjectFunctionCall(const QChar * pLocation,const QString &szFncName,KviKvsTreeNodeDataList * pParams)
+: KviKvsTreeNodeFunctionCall(pLocation,szFncName,pParams)
+{
+}
+
+KviKvsTreeNodeObjectFunctionCall::~KviKvsTreeNodeObjectFunctionCall()
+{
+}
+
+void KviKvsTreeNodeObjectFunctionCall::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Object Function Call \"";
+ szBuffer += m_szFunctionName;
+ szBuffer += "\"";
+#endif
+}
+
+void KviKvsTreeNodeObjectFunctionCall::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s ObjectFunctionCall(%s)",prefix,m_szFunctionName.utf8().data());
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pParams->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeObjectFunctionCall::canEvaluateInObjectScope()
+{
+ return true;
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_objectfunctioncall.h b/src/kvirc/kvs/kvi_kvs_treenode_objectfunctioncall.h
new file mode 100644
index 00000000..c1e80631
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_objectfunctioncall.h
@@ -0,0 +1,45 @@
+#ifndef _KVI_KVS_TREENODE_OBJECTFUNCTIONCALL_H_
+#define _KVI_KVS_TREENODE_OBJECTFUNCTIONCALL_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_objectfunctioncall.h
+// Created on Tue 07 Oct 2003 03:26:07 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_datalist.h"
+#include "kvi_kvs_treenode_functioncall.h"
+
+
+class KVIRC_API KviKvsTreeNodeObjectFunctionCall : public KviKvsTreeNodeFunctionCall
+{
+public:
+ KviKvsTreeNodeObjectFunctionCall(const QChar * pLocation,const QString &szFncName,KviKvsTreeNodeDataList * pParams);
+ ~KviKvsTreeNodeObjectFunctionCall();
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool canEvaluateInObjectScope();
+};
+
+
+#endif //!_KVI_KVS_TREENODE_OBJECTFUNCTIONCALL_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp b/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp
new file mode 100644
index 00000000..179d50ef
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_operation.cpp
@@ -0,0 +1,1497 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_operation.cpp
+// Created on Thu 18 Dec 2003 22:36:00 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_operation.h"
+#include "kvi_kvs_treenode_data.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_locale.h"
+
+#include <qregexp.h>
+
+#include <math.h>
+
+
+KviKvsTreeNodeOperation::KviKvsTreeNodeOperation(const QChar * pLocation)
+: KviKvsTreeNodeInstruction(pLocation)
+{
+ //m_pTargetData = 0; no need to set it
+}
+
+KviKvsTreeNodeOperation::~KviKvsTreeNodeOperation()
+{
+ delete m_pTargetData;
+}
+
+void KviKvsTreeNodeOperation::setTargetVariableReference(KviKvsTreeNodeData * r)
+{
+ m_pTargetData = r;
+ m_pTargetData->setParent(this);
+}
+
+void KviKvsTreeNodeOperation::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Operation";
+}
+
+void KviKvsTreeNodeOperation::dump(const char * prefix)
+{
+ debug("%s Operation",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pTargetData->dump(tmp.utf8().data());
+}
+
+
+
+
+
+KviKvsTreeNodeOperationAssignment::KviKvsTreeNodeOperationAssignment(const QChar * pLocation,KviKvsTreeNodeData * pRightSide)
+: KviKvsTreeNodeOperation(pLocation)
+{
+ m_pRightSide = pRightSide;
+ m_pRightSide->setParent(this);
+}
+
+KviKvsTreeNodeOperationAssignment::~KviKvsTreeNodeOperationAssignment()
+{
+ delete m_pRightSide;
+}
+
+void KviKvsTreeNodeOperationAssignment::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Assignment";
+}
+
+
+void KviKvsTreeNodeOperationAssignment::dump(const char * prefix)
+{
+ debug("%s OperationAssignment",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pTargetData->dump(tmp.utf8().data());
+ m_pRightSide->dump(tmp.utf8().data());
+}
+
+bool KviKvsTreeNodeOperationAssignment::execute(KviKvsRunTimeContext * c)
+{
+ KviKvsVariant v;
+ if(!m_pRightSide->evaluateReadOnly(c,&v))return false;
+
+ KviKvsRWEvaluationResult * target = m_pTargetData->evaluateReadWrite(c);
+ if(!target)return false;
+
+ target->result()->takeFrom(v);
+ delete target;
+ return true;
+}
+
+
+
+
+
+
+KviKvsTreeNodeOperationDecrement::KviKvsTreeNodeOperationDecrement(const QChar * pLocation)
+: KviKvsTreeNodeOperation(pLocation)
+{
+}
+
+KviKvsTreeNodeOperationDecrement::~KviKvsTreeNodeOperationDecrement()
+{
+}
+
+void KviKvsTreeNodeOperationDecrement::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Operator \"--\"";
+#endif
+}
+
+
+void KviKvsTreeNodeOperationDecrement::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s OperationDecrement",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pTargetData->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeOperationDecrement::execute(KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsRWEvaluationResult * v = m_pTargetData->evaluateReadWrite(c);
+ if(!v)return false;
+
+ kvs_int_t iVal;
+ if(v->result()->asInteger(iVal))
+ {
+ v->result()->setInteger(iVal - 1);
+ delete v;
+ v = 0;
+ return true;
+ }
+
+ kvs_real_t dVal;
+ if(v->result()->asReal(dVal))
+ {
+ v->result()->setReal(dVal - 1.0);
+ delete v;
+ v = 0;
+ return true;
+ }
+
+ c->error(this,__tr2qs("The target variable didn't evaluate to an integer or real value"));
+ delete v;
+#endif
+ return false;
+}
+
+
+
+
+
+
+
+KviKvsTreeNodeOperationIncrement::KviKvsTreeNodeOperationIncrement(const QChar * pLocation)
+: KviKvsTreeNodeOperation(pLocation)
+{
+}
+
+KviKvsTreeNodeOperationIncrement::~KviKvsTreeNodeOperationIncrement()
+{
+}
+
+void KviKvsTreeNodeOperationIncrement::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Operator \"++\"";
+#endif
+}
+
+
+void KviKvsTreeNodeOperationIncrement::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s OperationIncrement",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pTargetData->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeOperationIncrement::execute(KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsRWEvaluationResult * v = m_pTargetData->evaluateReadWrite(c);
+ if(!v)return false;
+
+ kvs_int_t iVal;
+ if(v->result()->asInteger(iVal))
+ {
+ v->result()->setInteger(iVal + 1);
+ delete v;
+ v = 0;
+ return true;
+ }
+
+ kvs_real_t dVal;
+ if(v->result()->asReal(dVal))
+ {
+ v->result()->setReal(dVal + 1.0);
+ delete v;
+ v = 0;
+ return true;
+ }
+ c->error(this,__tr2qs("The target variable didn't evaluate to an integer or real value"));
+ delete v;
+#endif
+ return false;
+}
+
+
+
+
+KviKvsTreeNodeOperationSelfAnd::KviKvsTreeNodeOperationSelfAnd(const QChar * pLocation,KviKvsTreeNodeData * pRightSide)
+: KviKvsTreeNodeOperation(pLocation)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pRightSide = pRightSide;
+ m_pRightSide->setParent(this);
+#endif
+}
+
+KviKvsTreeNodeOperationSelfAnd::~KviKvsTreeNodeOperationSelfAnd()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pRightSide;
+#endif
+}
+
+void KviKvsTreeNodeOperationSelfAnd::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Operator \"&=\"";
+#endif
+}
+
+
+void KviKvsTreeNodeOperationSelfAnd::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s OperationSelfAnd",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pTargetData->dump(tmp.utf8().data());
+ m_pRightSide->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeOperationSelfAnd::execute(KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant v;
+ if(!m_pRightSide->evaluateReadOnly(c,&v))return false;
+
+ kvs_int_t iRVal;
+
+ if(!v.asInteger(iRVal))
+ {
+ c->error(this,__tr2qs("The right side of operator '&=' didn't evaluate to an integer"));
+ return false;
+ }
+
+ KviKvsRWEvaluationResult * target = m_pTargetData->evaluateReadWrite(c);
+ if(!target)return false;
+
+ kvs_int_t iLVal;
+
+ if(!target->result()->asInteger(iLVal))
+ {
+ c->error(this,__tr2qs("The left side of operator '&=' didn't evaluate to an integer"));
+ delete target;
+ target = 0;
+ return false;
+ }
+
+ target->result()->setInteger(iLVal & iRVal);
+ delete target;
+#endif
+ return true;
+}
+
+
+
+KviKvsTreeNodeOperationSelfDivision::KviKvsTreeNodeOperationSelfDivision(const QChar * pLocation,KviKvsTreeNodeData * pRightSide)
+: KviKvsTreeNodeOperation(pLocation)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pRightSide = pRightSide;
+ m_pRightSide->setParent(this);
+#endif
+}
+
+KviKvsTreeNodeOperationSelfDivision::~KviKvsTreeNodeOperationSelfDivision()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pRightSide;
+#endif
+}
+
+void KviKvsTreeNodeOperationSelfDivision::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Operator \"/=\"";
+#endif
+}
+
+
+void KviKvsTreeNodeOperationSelfDivision::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s OperationSelfDivision",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pTargetData->dump(tmp.utf8().data());
+ m_pRightSide->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeOperationSelfDivision::execute(KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant v;
+ if(!m_pRightSide->evaluateReadOnly(c,&v))return false;
+
+ KviKvsNumber rnum;
+
+ if(!v.asNumber(rnum))
+ {
+ c->error(this,__tr2qs("The right side of operator '/=' didn't evaluate to a number"));
+ return false;
+ }
+
+ KviKvsNumber lnum;
+
+ KviKvsRWEvaluationResult * target = m_pTargetData->evaluateReadWrite(c);
+ if(!target)return false;
+
+ if(!target->result()->asNumber(lnum))
+ {
+ c->error(this,__tr2qs("The left side of operator '/=' didn't evaluate to a number"));
+ delete target;
+ target = 0;
+ return false;
+ }
+
+ if(rnum.isInteger())
+ {
+ if(rnum.integer() == 0)
+ {
+ c->error(this,__tr2qs("Division by zero"));
+ delete target;
+ target = 0;
+ return false;
+ }
+ if(lnum.isInteger())
+ target->result()->setInteger(lnum.integer() / rnum.integer());
+ else
+ target->result()->setReal(lnum.real() / (kvs_real_t)(rnum.integer()));
+ } else {
+ if(rnum.real() == 0.0)
+ {
+ c->error(this,__tr2qs("Division by zero"));
+ delete target;
+ target = 0;
+ return false;
+ }
+ if(lnum.isInteger())
+ target->result()->setReal(((kvs_real_t)(lnum.integer())) / rnum.real());
+ else
+ target->result()->setReal(lnum.real() / rnum.real());
+ }
+
+ delete target;
+#endif
+ return true;
+}
+
+KviKvsTreeNodeOperationSelfModulus::KviKvsTreeNodeOperationSelfModulus(const QChar * pLocation,KviKvsTreeNodeData * pRightSide)
+: KviKvsTreeNodeOperation(pLocation)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pRightSide = pRightSide;
+ m_pRightSide->setParent(this);
+#endif
+}
+
+KviKvsTreeNodeOperationSelfModulus::~KviKvsTreeNodeOperationSelfModulus()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pRightSide;
+#endif
+}
+
+void KviKvsTreeNodeOperationSelfModulus::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Operator \"Self Modulo\"";
+#endif
+}
+
+
+void KviKvsTreeNodeOperationSelfModulus::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s OperationSelfModulus",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pTargetData->dump(tmp.utf8().data());
+ m_pRightSide->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeOperationSelfModulus::execute(KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant v;
+ if(!m_pRightSide->evaluateReadOnly(c,&v))return false;
+ KviKvsNumber rnum;
+
+ if(!v.asNumber(rnum))
+ {
+ c->error(this,__tr2qs("The right side of operator '%=' didn't evaluate to a number"));
+ return false;
+ }
+
+ KviKvsNumber lnum;
+
+ KviKvsRWEvaluationResult * target = m_pTargetData->evaluateReadWrite(c);
+ if(!target)return false;
+
+ if(!target->result()->asNumber(lnum))
+ {
+ c->error(this,__tr2qs("The left side of operator '%=' didn't evaluate to a number"));
+ delete target;
+ target = 0;
+ return false;
+ }
+
+ if(rnum.isInteger())
+ {
+ if(rnum.integer() == 0)
+ {
+ c->error(this,__tr2qs("Division by zero"));
+ delete target;
+ target = 0;
+ return false;
+ }
+ if(lnum.isInteger())
+ target->result()->setInteger(lnum.integer() % rnum.integer());
+ else
+ target->result()->setReal(fmod(lnum.real(),(kvs_real_t)(rnum.integer())));
+ } else {
+ if(rnum.real() == 0.0)
+ {
+ c->error(this,__tr2qs("Division by zero"));
+ delete target;
+ target = 0;
+ return false;
+ }
+ if(lnum.isInteger())
+ target->result()->setReal(fmod(((kvs_real_t)(lnum.integer())),rnum.real()));
+ else
+ target->result()->setReal(fmod(lnum.real(),rnum.real()));
+ }
+#endif
+ return true;
+}
+
+
+
+
+
+KviKvsTreeNodeOperationSelfMultiplication::KviKvsTreeNodeOperationSelfMultiplication(const QChar * pLocation,KviKvsTreeNodeData * pRightSide)
+: KviKvsTreeNodeOperation(pLocation)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pRightSide = pRightSide;
+ m_pRightSide->setParent(this);
+#endif
+}
+
+KviKvsTreeNodeOperationSelfMultiplication::~KviKvsTreeNodeOperationSelfMultiplication()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pRightSide;
+#endif
+}
+
+void KviKvsTreeNodeOperationSelfMultiplication::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Operator \"*=\"";
+#endif
+}
+
+
+void KviKvsTreeNodeOperationSelfMultiplication::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s OperationSelfMultiplication",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pTargetData->dump(tmp.utf8().data());
+ m_pRightSide->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeOperationSelfMultiplication::execute(KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant v;
+ if(!m_pRightSide->evaluateReadOnly(c,&v))return false;
+ KviKvsNumber rnum;
+
+ if(!v.asNumber(rnum))
+ {
+ c->error(this,__tr2qs("The right side of operator '*=' didn't evaluate to a number"));
+ return false;
+ }
+
+ KviKvsNumber lnum;
+
+ KviKvsRWEvaluationResult * target = m_pTargetData->evaluateReadWrite(c);
+ if(!target)return false;
+
+ if(!target->result()->asNumber(lnum))
+ {
+ c->error(this,__tr2qs("The left side of operator '*=' didn't evaluate to a number"));
+ delete target;
+ return false;
+ }
+
+ if(rnum.isInteger())
+ {
+ if(lnum.isInteger())
+ target->result()->setInteger(lnum.integer() * rnum.integer());
+ else
+ target->result()->setReal(lnum.real() * (kvs_real_t)(rnum.integer()));
+ } else {
+ if(lnum.isInteger())
+ target->result()->setReal(((kvs_real_t)(lnum.integer())) * rnum.real());
+ else
+ target->result()->setReal(lnum.real() * rnum.real());
+ }
+#endif
+ return true;
+}
+
+
+
+
+KviKvsTreeNodeOperationSelfOr::KviKvsTreeNodeOperationSelfOr(const QChar * pLocation,KviKvsTreeNodeData * pRightSide)
+: KviKvsTreeNodeOperation(pLocation)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pRightSide = pRightSide;
+ m_pRightSide->setParent(this);
+#endif
+}
+
+KviKvsTreeNodeOperationSelfOr::~KviKvsTreeNodeOperationSelfOr()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pRightSide;
+#endif
+}
+
+void KviKvsTreeNodeOperationSelfOr::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Operator \"|=\"";
+#endif
+}
+
+
+void KviKvsTreeNodeOperationSelfOr::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s OperationSelfOr",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pTargetData->dump(tmp.utf8().data());
+ m_pRightSide->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeOperationSelfOr::execute(KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant v;
+ if(!m_pRightSide->evaluateReadOnly(c,&v))return false;
+
+ kvs_int_t iRVal;
+ if(!v.asInteger(iRVal))
+ {
+ c->error(this,__tr2qs("The right side of operator '|=' didn't evaluate to an integer"));
+ return false;
+ }
+
+ kvs_int_t iLVal;
+
+ KviKvsRWEvaluationResult * target = m_pTargetData->evaluateReadWrite(c);
+ if(!target)return false;
+
+ if(!target->result()->asInteger(iLVal))
+ {
+ c->error(this,__tr2qs("The left side of operator '|=' didn't evaluate to an integer"));
+ delete target;
+ target = 0;
+ return false;
+ }
+
+ target->result()->setInteger(iLVal | iRVal);
+ delete target;
+#endif
+ return true;
+}
+
+
+
+
+KviKvsTreeNodeOperationSelfShl::KviKvsTreeNodeOperationSelfShl(const QChar * pLocation,KviKvsTreeNodeData * pRightSide)
+: KviKvsTreeNodeOperation(pLocation)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pRightSide = pRightSide;
+ m_pRightSide->setParent(this);
+#endif
+}
+
+KviKvsTreeNodeOperationSelfShl::~KviKvsTreeNodeOperationSelfShl()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pRightSide;
+#endif
+}
+
+void KviKvsTreeNodeOperationSelfShl::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Operator \"<<=\"";
+#endif
+}
+
+
+void KviKvsTreeNodeOperationSelfShl::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s OperationSelfShl",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pTargetData->dump(tmp.utf8().data());
+ m_pRightSide->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeOperationSelfShl::execute(KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant v;
+ if(!m_pRightSide->evaluateReadOnly(c,&v))return false;
+
+ kvs_int_t iRVal;
+
+ if(!v.asInteger(iRVal))
+ {
+ c->error(this,__tr2qs("The right side of operator '<<=' didn't evaluate to an integer"));
+ return false;
+ }
+
+ kvs_int_t iLVal;
+
+ KviKvsRWEvaluationResult * target = m_pTargetData->evaluateReadWrite(c);
+ if(!target)return false;
+
+ if(!target->result()->asInteger(iLVal))
+ {
+ c->error(this,__tr2qs("The left side of operator '<<=' didn't evaluate to an integer"));
+ delete target;
+ target = 0;
+ return false;
+ }
+
+ target->result()->setInteger(iLVal << iRVal);
+ delete target;
+#endif
+ return true;
+}
+
+
+
+
+
+KviKvsTreeNodeOperationSelfShr::KviKvsTreeNodeOperationSelfShr(const QChar * pLocation,KviKvsTreeNodeData * pRightSide)
+: KviKvsTreeNodeOperation(pLocation)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pRightSide = pRightSide;
+ m_pRightSide->setParent(this);
+#endif
+}
+
+KviKvsTreeNodeOperationSelfShr::~KviKvsTreeNodeOperationSelfShr()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pRightSide;
+#endif
+}
+
+void KviKvsTreeNodeOperationSelfShr::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Operator \">>=\"";
+#endif
+}
+
+
+void KviKvsTreeNodeOperationSelfShr::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s OperationSelfShr",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pTargetData->dump(tmp.utf8().data());
+ m_pRightSide->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeOperationSelfShr::execute(KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant v;
+ if(!m_pRightSide->evaluateReadOnly(c,&v))return false;
+
+ kvs_int_t iRVal;
+
+ if(!v.asInteger(iRVal))
+ {
+ c->error(this,__tr2qs("The right side of operator '>>=' didn't evaluate to an integer"));
+ return false;
+ }
+
+ kvs_int_t iLVal;
+
+ KviKvsRWEvaluationResult * target = m_pTargetData->evaluateReadWrite(c);
+ if(!target)return false;
+
+ if(!target->result()->asInteger(iLVal))
+ {
+ c->error(this,__tr2qs("The left side of operator '>>=' didn't evaluate to an integer"));
+ delete target;
+ target = 0;
+ return false;
+ }
+
+ target->result()->setInteger(iLVal >> iRVal);
+ delete target;
+#endif
+ return true;
+}
+
+
+
+
+
+
+
+
+
+
+
+KviKvsTreeNodeOperationSelfSubtraction::KviKvsTreeNodeOperationSelfSubtraction(const QChar * pLocation,KviKvsTreeNodeData * pRightSide)
+: KviKvsTreeNodeOperation(pLocation)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pRightSide = pRightSide;
+ m_pRightSide->setParent(this);
+#endif
+}
+
+KviKvsTreeNodeOperationSelfSubtraction::~KviKvsTreeNodeOperationSelfSubtraction()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pRightSide;
+#endif
+}
+
+void KviKvsTreeNodeOperationSelfSubtraction::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Operator \"-=\"";
+#endif
+}
+
+
+void KviKvsTreeNodeOperationSelfSubtraction::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s OperationSelfSubtraction",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pTargetData->dump(tmp.utf8().data());
+ m_pRightSide->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeOperationSelfSubtraction::execute(KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant v;
+ if(!m_pRightSide->evaluateReadOnly(c,&v))return false;
+ KviKvsNumber rnum;
+
+ if(!v.asNumber(rnum))
+ {
+ c->error(this,__tr2qs("The right side of operator '-=' didn't evaluate to a number"));
+ return false;
+ }
+
+ KviKvsNumber lnum;
+
+ KviKvsRWEvaluationResult * target = m_pTargetData->evaluateReadWrite(c);
+ if(!target)return false;
+
+ if(!target->result()->asNumber(lnum))
+ {
+ c->error(this,__tr2qs("The left side of operator '-=' didn't evaluate to a number"));
+ delete target;
+ target = 0;
+ return false;
+ }
+
+ if(rnum.isInteger())
+ {
+ if(lnum.isInteger())
+ target->result()->setInteger(lnum.integer() - rnum.integer());
+ else
+ target->result()->setReal(lnum.real() - (kvs_real_t)(rnum.integer()));
+ } else {
+ if(lnum.isInteger())
+ target->result()->setReal(((kvs_real_t)(lnum.integer())) - rnum.real());
+ else
+ target->result()->setReal(lnum.real() - rnum.real());
+ }
+
+ delete target;
+#endif
+ return true;
+}
+
+
+
+
+
+KviKvsTreeNodeOperationSelfSum::KviKvsTreeNodeOperationSelfSum(const QChar * pLocation,KviKvsTreeNodeData * pRightSide)
+: KviKvsTreeNodeOperation(pLocation)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pRightSide = pRightSide;
+ m_pRightSide->setParent(this);
+#endif
+}
+
+KviKvsTreeNodeOperationSelfSum::~KviKvsTreeNodeOperationSelfSum()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pRightSide;
+#endif
+}
+
+void KviKvsTreeNodeOperationSelfSum::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Operator \"+=\"";
+#endif
+}
+
+
+void KviKvsTreeNodeOperationSelfSum::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s OperationSelfSum",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pTargetData->dump(tmp.utf8().data());
+ m_pRightSide->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeOperationSelfSum::execute(KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant v;
+ if(!m_pRightSide->evaluateReadOnly(c,&v))return false;
+ KviKvsNumber rnum;
+
+ if(!v.asNumber(rnum))
+ {
+ c->error(this,__tr2qs("The right side of operator '+=' didn't evaluate to a number"));
+ return false;
+ }
+
+ KviKvsNumber lnum;
+
+ KviKvsRWEvaluationResult * target = m_pTargetData->evaluateReadWrite(c);
+ if(!target)return false;
+
+ if(!target->result()->asNumber(lnum))
+ {
+ c->error(this,__tr2qs("The left side of operator '+=' didn't evaluate to a number"));
+ delete target;
+ target = 0;
+ return false;
+ }
+
+ if(rnum.isInteger())
+ {
+ if(lnum.isInteger())
+ target->result()->setInteger(lnum.integer() + rnum.integer());
+ else
+ target->result()->setReal(lnum.real() + (kvs_real_t)(rnum.integer()));
+ } else {
+ if(lnum.isInteger())
+ target->result()->setReal(((kvs_real_t)(lnum.integer())) + rnum.real());
+ else
+ target->result()->setReal(lnum.real() + rnum.real());
+ }
+
+ delete target;
+#endif
+ return true;
+}
+
+
+
+
+
+
+
+KviKvsTreeNodeOperationSelfXor::KviKvsTreeNodeOperationSelfXor(const QChar * pLocation,KviKvsTreeNodeData * pRightSide)
+: KviKvsTreeNodeOperation(pLocation)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pRightSide = pRightSide;
+ m_pRightSide->setParent(this);
+#endif
+}
+
+KviKvsTreeNodeOperationSelfXor::~KviKvsTreeNodeOperationSelfXor()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pRightSide;
+#endif
+}
+
+void KviKvsTreeNodeOperationSelfXor::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Operator \"^=\"";
+#endif
+}
+
+
+void KviKvsTreeNodeOperationSelfXor::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s OperationSelfXor",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pTargetData->dump(tmp.utf8().data());
+ m_pRightSide->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeOperationSelfXor::execute(KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant v;
+ if(!m_pRightSide->evaluateReadOnly(c,&v))return false;
+
+ kvs_int_t iRVal;
+
+ if(!v.asInteger(iRVal))
+ {
+ c->error(this,__tr2qs("The right side of operator '^=' didn't evaluate to an integer"));
+ return false;
+ }
+
+ kvs_int_t iLVal;
+
+ KviKvsRWEvaluationResult * target = m_pTargetData->evaluateReadWrite(c);
+ if(!target)return false;
+
+ if(!target->result()->asInteger(iLVal))
+ {
+ c->error(this,__tr2qs("The left side of operator '^=' didn't evaluate to an integer"));
+ delete target;
+ target = 0;
+ return false;
+ }
+
+ target->result()->setInteger(iLVal ^ iRVal);
+ delete target;
+#endif
+ return true;
+}
+
+
+
+
+
+
+
+KviKvsTreeNodeOperationStringAppend::KviKvsTreeNodeOperationStringAppend(const QChar * pLocation,KviKvsTreeNodeData * pRightSide)
+: KviKvsTreeNodeOperation(pLocation)
+{
+ m_pRightSide = pRightSide;
+ m_pRightSide->setParent(this);
+}
+
+KviKvsTreeNodeOperationStringAppend::~KviKvsTreeNodeOperationStringAppend()
+{
+ delete m_pRightSide;
+}
+
+void KviKvsTreeNodeOperationStringAppend::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Operator \"<<\"";
+}
+
+
+void KviKvsTreeNodeOperationStringAppend::dump(const char * prefix)
+{
+ debug("%s OperationStringAppend",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pTargetData->dump(tmp.utf8().data());
+ m_pRightSide->dump(tmp.utf8().data());
+}
+
+bool KviKvsTreeNodeOperationStringAppend::execute(KviKvsRunTimeContext * c)
+{
+ KviKvsVariant v;
+ if(!m_pRightSide->evaluateReadOnly(c,&v))return false;
+ KviKvsRWEvaluationResult * target = m_pTargetData->evaluateReadWrite(c);
+ if(!target)return false;
+
+ QString sz1;
+ target->result()->asString(sz1);
+ v.appendAsString(sz1);
+ target->result()->setString(sz1);
+ delete target;
+ return true;
+}
+
+
+
+
+
+
+KviKvsTreeNodeOperationArrayAppend::KviKvsTreeNodeOperationArrayAppend(const QChar * pLocation,KviKvsTreeNodeData * pRightSide)
+: KviKvsTreeNodeOperation(pLocation)
+{
+ m_pRightSide = pRightSide;
+ m_pRightSide->setParent(this);
+}
+
+KviKvsTreeNodeOperationArrayAppend::~KviKvsTreeNodeOperationArrayAppend()
+{
+ delete m_pRightSide;
+}
+
+void KviKvsTreeNodeOperationArrayAppend::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Operator \"<+\"";
+}
+
+
+void KviKvsTreeNodeOperationArrayAppend::dump(const char * prefix)
+{
+ debug("%s OperationArrayAppend",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pTargetData->dump(tmp.utf8().data());
+ m_pRightSide->dump(tmp.utf8().data());
+}
+
+bool KviKvsTreeNodeOperationArrayAppend::execute(KviKvsRunTimeContext * c)
+{
+ KviKvsVariant v;
+ if(!m_pRightSide->evaluateReadOnly(c,&v))return false;
+ KviKvsRWEvaluationResult * target = m_pTargetData->evaluateReadWrite(c);
+ if(!target)return false;
+
+ target->result()->convertToArray();
+ KviKvsArray * a = target->result()->array();
+
+ switch(v.type())
+ {
+ case KviKvsVariantData::Nothing:
+ // do nothing
+ break;
+ case KviKvsVariantData::Array:
+ {
+ KviKvsArray * s = v.array();
+ unsigned int uIdx = 0;
+ unsigned int uSize = s->size();
+ while(uIdx < uSize)
+ {
+ KviKvsVariant * pInternal = s->at(uIdx);
+ if(pInternal)
+ a->set(a->size(),new KviKvsVariant(*pInternal));
+ // else
+ // leave an empty entry
+ uIdx++;
+ }
+ }
+ break;
+ case KviKvsVariantData::Hash:
+ {
+ KviKvsHashIterator it(*(v.hash()->dict()));
+ while(KviKvsVariant * pInternal = it.current())
+ {
+ a->set(a->size(),new KviKvsVariant(*pInternal));
+ ++it;
+ }
+ }
+ break;
+ default:
+ a->set(a->size(),new KviKvsVariant(v));
+ break;
+ }
+ delete target;
+
+ return true;
+}
+
+
+
+
+
+
+
+KviKvsTreeNodeOperationStringAppendWithComma::KviKvsTreeNodeOperationStringAppendWithComma(const QChar * pLocation,KviKvsTreeNodeData * pRightSide)
+: KviKvsTreeNodeOperation(pLocation)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pRightSide = pRightSide;
+ m_pRightSide->setParent(this);
+#endif
+}
+
+KviKvsTreeNodeOperationStringAppendWithComma::~KviKvsTreeNodeOperationStringAppendWithComma()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pRightSide;
+#endif
+}
+
+void KviKvsTreeNodeOperationStringAppendWithComma::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Operator \"<,\"";
+#endif
+}
+
+
+void KviKvsTreeNodeOperationStringAppendWithComma::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s OperationStringAppendWithComma",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pTargetData->dump(tmp.utf8().data());
+ m_pRightSide->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeOperationStringAppendWithComma::execute(KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant v;
+ if(!m_pRightSide->evaluateReadOnly(c,&v))return false;
+ KviKvsRWEvaluationResult * target = m_pTargetData->evaluateReadWrite(c);
+ if(!target)return false;
+
+ QString sz1;
+ target->result()->asString(sz1);
+ if(sz1.isEmpty())
+ {
+ v.asString(sz1);
+ } else {
+ QString sz2;
+ v.asString(sz2);
+ sz1 += QChar(',');
+ sz1 += sz2;
+ }
+ target->result()->setString(sz1);
+ delete target;
+#endif
+ return true;
+}
+
+
+
+
+
+
+KviKvsTreeNodeOperationStringAppendWithSpace::KviKvsTreeNodeOperationStringAppendWithSpace(const QChar * pLocation,KviKvsTreeNodeData * pRightSide)
+: KviKvsTreeNodeOperation(pLocation)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pRightSide = pRightSide;
+ m_pRightSide->setParent(this);
+#endif
+}
+
+KviKvsTreeNodeOperationStringAppendWithSpace::~KviKvsTreeNodeOperationStringAppendWithSpace()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pRightSide;
+#endif
+}
+
+void KviKvsTreeNodeOperationStringAppendWithSpace::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Operator \"<+\"";
+#endif
+}
+
+
+void KviKvsTreeNodeOperationStringAppendWithSpace::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s OperationStringAppendWithSpace",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pTargetData->dump(tmp.utf8().data());
+ m_pRightSide->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeOperationStringAppendWithSpace::execute(KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant v;
+ if(!m_pRightSide->evaluateReadOnly(c,&v))return false;
+ KviKvsRWEvaluationResult * target = m_pTargetData->evaluateReadWrite(c);
+ if(!target)return false;
+
+ QString sz1;
+ target->result()->asString(sz1);
+ if(sz1.isEmpty())
+ {
+ v.asString(sz1);
+ } else {
+ QString sz2;
+ v.asString(sz2);
+ sz1 += QChar(' ');
+ sz1 += sz2;
+ }
+ target->result()->setString(sz1);
+ delete target;
+#endif
+ return true;
+}
+
+
+
+
+
+
+
+
+
+KviKvsTreeNodeOperationStringTransliteration::KviKvsTreeNodeOperationStringTransliteration(const QChar * pLocation,KviKvsTreeNodeData * pLeft,KviKvsTreeNodeData * pRight,KviKvsTreeNodeData * pFlags)
+: KviKvsTreeNodeOperation(pLocation)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pLeft = pLeft;
+ m_pLeft->setParent(this);
+ m_pRight = pRight;
+ m_pRight->setParent(this);
+ m_pFlags = pFlags;
+ m_pFlags->setParent(this);
+#endif
+}
+
+KviKvsTreeNodeOperationStringTransliteration::~KviKvsTreeNodeOperationStringTransliteration()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pLeft;
+ delete m_pRight;
+ delete m_pFlags;
+#endif
+}
+
+
+void KviKvsTreeNodeOperationStringTransliteration::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Binding Operator tr///";
+#endif
+}
+
+
+void KviKvsTreeNodeOperationStringTransliteration::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s OperationStringTransliteration",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pLeft->dump(tmp.utf8().data());
+ m_pRight->dump(tmp.utf8().data());
+ m_pFlags->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeOperationStringTransliteration::execute(KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant vl;
+ if(!m_pLeft->evaluateReadOnly(c,&vl))return false;
+ KviKvsVariant vr;
+ if(!m_pRight->evaluateReadOnly(c,&vr))return false;
+
+ // for now we don't use the flags at all here...
+ //KviKvsVariant vf;
+ //if(!m_pFlags->evaluateReadOnly(c,&vf))return false;
+ KviKvsRWEvaluationResult * target = m_pTargetData->evaluateReadWrite(c);
+ if(!target)return false;
+
+ QString szL,szR,szF;
+
+ vl.asString(szL);
+ vr.asString(szR);
+ //vf.asString(szF);
+
+ QString sz1;
+ target->result()->asString(sz1);
+ KviQString::transliterate(sz1,szL,szR);
+ target->result()->setString(sz1);
+ delete target;
+#endif
+ return true;
+}
+
+
+
+
+
+
+
+
+
+
+KviKvsTreeNodeOperationStringSubstitution::KviKvsTreeNodeOperationStringSubstitution(const QChar * pLocation,KviKvsTreeNodeData * pLeft,KviKvsTreeNodeData * pRight,KviKvsTreeNodeData * pFlags)
+: KviKvsTreeNodeOperation(pLocation)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pLeft = pLeft;
+ m_pLeft->setParent(this);
+ m_pRight = pRight;
+ m_pRight->setParent(this);
+ m_pFlags = pFlags;
+ m_pFlags->setParent(this);
+#endif
+}
+
+KviKvsTreeNodeOperationStringSubstitution::~KviKvsTreeNodeOperationStringSubstitution()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pLeft;
+ delete m_pRight;
+ delete m_pFlags;
+#endif
+}
+
+
+void KviKvsTreeNodeOperationStringSubstitution::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Binding Operator s///";
+#endif
+}
+
+
+void KviKvsTreeNodeOperationStringSubstitution::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s OperationStringSubstitution",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pLeft->dump(tmp.utf8().data());
+ m_pRight->dump(tmp.utf8().data());
+ m_pFlags->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeOperationStringSubstitution::execute(KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant vl;
+ if(!m_pLeft->evaluateReadOnly(c,&vl))return false;
+ KviKvsVariant vr;
+ if(!m_pRight->evaluateReadOnly(c,&vr))return false;
+ KviKvsVariant vf;
+ if(!m_pFlags->evaluateReadOnly(c,&vf))return false;
+ KviKvsRWEvaluationResult * target = m_pTargetData->evaluateReadWrite(c);
+ if(!target)return false;
+
+ QString szL,szR,szF;
+
+ vl.asString(szL);
+ vr.asString(szR);
+ vf.asString(szF);
+
+ QString str;
+ target->result()->asString(str);
+
+ bool bGlobal = szF.find('g',false) != -1;
+
+ QRegExp re(szL,szF.find('i',false) == -1,szF.find('w',false) != -1);
+ re.setMinimal(szF.find('m',false) != -1); // greedy or minimal ?
+
+ int idx = 0;
+
+ while((!str.isEmpty()) && (idx != -1))
+ {
+ int len;
+ idx = re.search(str,idx);
+ if(idx != -1)
+ {
+ len = re.matchedLength();
+ if(len == 0)
+ {
+ c->warning(this,__tr2qs("The regular expression matched a zero-length substring: this is not valid in the s/// operator, skipping"));
+ goto end_of_this_stuff;
+ }
+ str.remove(idx,len);
+
+ QString szReplaced;
+ const QChar * p2 = KviQString::nullTerminatedArray(szR);
+ const QChar * begin = p2;
+ while(p2->unicode())
+ {
+ if(p2->unicode() == '\\')
+ {
+ p2++;
+ if(p2->unicode() >= '0' && p2->unicode() <= '9')
+ {
+ szReplaced.append(QString(begin,(p2 - begin) - 1));
+ szReplaced.append(re.cap(p2->unicode() - '0'));
+ p2++;
+ begin = p2;
+ } else if(p2->unicode())p2++;
+ } else p2++;
+ }
+ if(begin != p2)szReplaced.append(QString(begin,p2 - begin));
+ str.insert(idx,szReplaced);
+ idx += szReplaced.length();
+
+ if(!bGlobal)goto end_of_this_stuff;
+ }
+ }
+end_of_this_stuff:
+ target->result()->setString(str);
+ delete target;
+#endif
+ return true;
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_operation.h b/src/kvirc/kvs/kvi_kvs_treenode_operation.h
new file mode 100644
index 00000000..e4a4463d
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_operation.h
@@ -0,0 +1,296 @@
+#ifndef _KVI_KVS_TREENODE_OPERATION_H_
+#define _KVI_KVS_TREENODE_OPERATION_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_operation.h
+// Created on Thu 18 Dec 2003 22:36:00 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_instruction.h"
+
+class KviKvsTreeNodeData;
+class KviKvsRunTimeContext;
+
+class KVIRC_API KviKvsTreeNodeOperation : public KviKvsTreeNodeInstruction
+{
+public:
+ KviKvsTreeNodeOperation(const QChar * pLocation);
+ ~KviKvsTreeNodeOperation();
+protected:
+ KviKvsTreeNodeData * m_pTargetData; // can't be null
+public:
+ void setTargetVariableReference(KviKvsTreeNodeData * r);
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+};
+
+class KviKvsTreeNodeOperationAssignment : public KviKvsTreeNodeOperation
+{
+public:
+ KviKvsTreeNodeOperationAssignment(const QChar * pLocation,KviKvsTreeNodeData * pRightSide);
+ ~KviKvsTreeNodeOperationAssignment();
+protected:
+ KviKvsTreeNodeData * m_pRightSide; // can't be 0
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+class KviKvsTreeNodeOperationDecrement : public KviKvsTreeNodeOperation
+{
+public:
+ KviKvsTreeNodeOperationDecrement(const QChar * pLocation);
+ ~KviKvsTreeNodeOperationDecrement();
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+class KviKvsTreeNodeOperationIncrement : public KviKvsTreeNodeOperation
+{
+public:
+ KviKvsTreeNodeOperationIncrement(const QChar * pLocation);
+ ~KviKvsTreeNodeOperationIncrement();
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+class KviKvsTreeNodeOperationSelfAnd : public KviKvsTreeNodeOperation
+{
+public:
+ KviKvsTreeNodeOperationSelfAnd(const QChar * pLocation,KviKvsTreeNodeData * pRightSide);
+ ~KviKvsTreeNodeOperationSelfAnd();
+protected:
+ KviKvsTreeNodeData * m_pRightSide; // can't be 0
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+class KviKvsTreeNodeOperationSelfDivision : public KviKvsTreeNodeOperation
+{
+public:
+ KviKvsTreeNodeOperationSelfDivision(const QChar * pLocation,KviKvsTreeNodeData * pRightSide);
+ ~KviKvsTreeNodeOperationSelfDivision();
+protected:
+ KviKvsTreeNodeData * m_pRightSide; // can't be 0
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+class KviKvsTreeNodeOperationSelfModulus : public KviKvsTreeNodeOperation
+{
+public:
+ KviKvsTreeNodeOperationSelfModulus(const QChar * pLocation,KviKvsTreeNodeData * pRightSide);
+ ~KviKvsTreeNodeOperationSelfModulus();
+protected:
+ KviKvsTreeNodeData * m_pRightSide; // can't be 0
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+class KviKvsTreeNodeOperationSelfMultiplication : public KviKvsTreeNodeOperation
+{
+public:
+ KviKvsTreeNodeOperationSelfMultiplication(const QChar * pLocation,KviKvsTreeNodeData * pRightSide);
+ ~KviKvsTreeNodeOperationSelfMultiplication();
+protected:
+ KviKvsTreeNodeData * m_pRightSide; // can't be 0
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+class KviKvsTreeNodeOperationSelfOr : public KviKvsTreeNodeOperation
+{
+public:
+ KviKvsTreeNodeOperationSelfOr(const QChar * pLocation,KviKvsTreeNodeData * pRightSide);
+ ~KviKvsTreeNodeOperationSelfOr();
+protected:
+ KviKvsTreeNodeData * m_pRightSide; // can't be 0
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+class KviKvsTreeNodeOperationSelfShl : public KviKvsTreeNodeOperation
+{
+public:
+ KviKvsTreeNodeOperationSelfShl(const QChar * pLocation,KviKvsTreeNodeData * pRightSide);
+ ~KviKvsTreeNodeOperationSelfShl();
+protected:
+ KviKvsTreeNodeData * m_pRightSide; // can't be 0
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+class KviKvsTreeNodeOperationSelfShr : public KviKvsTreeNodeOperation
+{
+public:
+ KviKvsTreeNodeOperationSelfShr(const QChar * pLocation,KviKvsTreeNodeData * pRightSide);
+ ~KviKvsTreeNodeOperationSelfShr();
+protected:
+ KviKvsTreeNodeData * m_pRightSide; // can't be 0
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+class KviKvsTreeNodeOperationSelfSubtraction : public KviKvsTreeNodeOperation
+{
+public:
+ KviKvsTreeNodeOperationSelfSubtraction(const QChar * pLocation,KviKvsTreeNodeData * pRightSide);
+ ~KviKvsTreeNodeOperationSelfSubtraction();
+protected:
+ KviKvsTreeNodeData * m_pRightSide; // can't be 0
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+class KviKvsTreeNodeOperationSelfSum : public KviKvsTreeNodeOperation
+{
+public:
+ KviKvsTreeNodeOperationSelfSum(const QChar * pLocation,KviKvsTreeNodeData * pRightSide);
+ ~KviKvsTreeNodeOperationSelfSum();
+protected:
+ KviKvsTreeNodeData * m_pRightSide; // can't be 0
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+class KviKvsTreeNodeOperationSelfXor : public KviKvsTreeNodeOperation
+{
+public:
+ KviKvsTreeNodeOperationSelfXor(const QChar * pLocation,KviKvsTreeNodeData * pRightSide);
+ ~KviKvsTreeNodeOperationSelfXor();
+protected:
+ KviKvsTreeNodeData * m_pRightSide; // can't be 0
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+class KviKvsTreeNodeOperationStringAppend : public KviKvsTreeNodeOperation
+{
+public:
+ KviKvsTreeNodeOperationStringAppend(const QChar * pLocation,KviKvsTreeNodeData * pRightSide);
+ ~KviKvsTreeNodeOperationStringAppend();
+protected:
+ KviKvsTreeNodeData * m_pRightSide; // can't be 0
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+class KviKvsTreeNodeOperationArrayAppend : public KviKvsTreeNodeOperation
+{
+public:
+ KviKvsTreeNodeOperationArrayAppend(const QChar * pLocation,KviKvsTreeNodeData * pRightSide);
+ ~KviKvsTreeNodeOperationArrayAppend();
+protected:
+ KviKvsTreeNodeData * m_pRightSide; // can't be 0
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+class KviKvsTreeNodeOperationStringAppendWithComma : public KviKvsTreeNodeOperation
+{
+public:
+ KviKvsTreeNodeOperationStringAppendWithComma(const QChar * pLocation,KviKvsTreeNodeData * pRightSide);
+ ~KviKvsTreeNodeOperationStringAppendWithComma();
+protected:
+ KviKvsTreeNodeData * m_pRightSide; // can't be 0
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+class KviKvsTreeNodeOperationStringAppendWithSpace : public KviKvsTreeNodeOperation
+{
+public:
+ KviKvsTreeNodeOperationStringAppendWithSpace(const QChar * pLocation,KviKvsTreeNodeData * pRightSide);
+ ~KviKvsTreeNodeOperationStringAppendWithSpace();
+protected:
+ KviKvsTreeNodeData * m_pRightSide; // can't be 0
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+class KviKvsTreeNodeOperationStringTransliteration : public KviKvsTreeNodeOperation
+{
+public:
+ KviKvsTreeNodeOperationStringTransliteration(const QChar * pLocation,KviKvsTreeNodeData * pLeft,KviKvsTreeNodeData * pRight,KviKvsTreeNodeData * pFlags);
+ ~KviKvsTreeNodeOperationStringTransliteration();
+protected:
+ KviKvsTreeNodeData * m_pLeft; // can't be 0
+ KviKvsTreeNodeData * m_pRight; // can't be 0
+ KviKvsTreeNodeData * m_pFlags; // can't be 0
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+class KviKvsTreeNodeOperationStringSubstitution : public KviKvsTreeNodeOperation
+{
+public:
+ KviKvsTreeNodeOperationStringSubstitution(const QChar * pLocation,KviKvsTreeNodeData * pLeft,KviKvsTreeNodeData * pRight,KviKvsTreeNodeData * pFlags);
+ ~KviKvsTreeNodeOperationStringSubstitution();
+protected:
+ KviKvsTreeNodeData * m_pLeft; // can't be 0
+ KviKvsTreeNodeData * m_pRight; // can't be 0
+ KviKvsTreeNodeData * m_pFlags; // can't be 0
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+
+#endif //!_KVI_KVS_TREENODE_OPERATION_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_parameterreturn.cpp b/src/kvirc/kvs/kvi_kvs_treenode_parameterreturn.cpp
new file mode 100644
index 00000000..e4a1634c
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_parameterreturn.cpp
@@ -0,0 +1,88 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_parameterreturn.cpp
+// Created on Fri 30 Jan 2004 01:31:01 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+#include "kvi_kvs_treenode_parameterreturn.h"
+#include "kvi_kvs_treenode_datalist.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_kvs_variantlist.h"
+#include "kvi_locale.h"
+
+KviKvsTreeNodeParameterReturn::KviKvsTreeNodeParameterReturn(const QChar * pLocation,KviKvsTreeNodeDataList * pDataList)
+: KviKvsTreeNodeInstruction(pLocation)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pDataList = pDataList;
+ m_pDataList->setParent(this);
+#endif
+}
+
+KviKvsTreeNodeParameterReturn::~KviKvsTreeNodeParameterReturn()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pDataList;
+#endif
+}
+
+void KviKvsTreeNodeParameterReturn::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Parameter Return Evaluation";
+#endif
+}
+
+
+void KviKvsTreeNodeParameterReturn::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s ParameterReturn",prefix);
+ QString tmp = prefix;
+ tmp += " ";
+ m_pDataList->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeParameterReturn::execute(KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariantList lBuffer;
+ if(!m_pDataList->evaluate(c,&lBuffer))return false;
+ if(lBuffer.count() == 0)
+ {
+ c->returnValue()->setNothing();
+ return true;
+ }
+ if(lBuffer.count() == 1)
+ {
+ c->returnValue()->copyFrom(*(lBuffer.first()));
+ return true;
+ }
+
+ QString all;
+ lBuffer.allAsString(all);
+ c->returnValue()->setString(all);
+#endif
+ return true;
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_parameterreturn.h b/src/kvirc/kvs/kvi_kvs_treenode_parameterreturn.h
new file mode 100644
index 00000000..4bd31275
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_parameterreturn.h
@@ -0,0 +1,45 @@
+#ifndef _KVI_KVS_TREENODE_PARAMETERRETURN_H_
+#define _KVI_KVS_TREENODE_PARAMETERRETURN_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_parameterreturn.h
+// Created on Fri 30 Jan 2004 01:31:01 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_kvs_treenode_instruction.h"
+
+class KviKvsTreeNodeDataList;
+
+class KVIRC_API KviKvsTreeNodeParameterReturn : public KviKvsTreeNodeInstruction
+{
+public:
+ KviKvsTreeNodeParameterReturn(const QChar * pLocation,KviKvsTreeNodeDataList * pDataList);
+ ~KviKvsTreeNodeParameterReturn();
+protected:
+ KviKvsTreeNodeDataList * m_pDataList;
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+#endif //!_KVI_KVS_TREENODE_PARAMETERRETURN_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp b/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp
new file mode 100644
index 00000000..64e77690
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.cpp
@@ -0,0 +1,96 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_rebindingswitch.cpp
+// Created on Mon 15 Aug 2005 13:32:31 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_rebindingswitch.h"
+#include "kvi_kvs_treenode_data.h"
+#include "kvi_window.h"
+#include "kvi_app.h"
+#include "kvi_locale.h"
+#include "kvi_kvs_runtimecontext.h"
+
+KviKvsTreeNodeRebindingSwitch::KviKvsTreeNodeRebindingSwitch(const QChar * pLocation,KviKvsTreeNodeData * pTargetWindow,KviKvsTreeNodeCommand * pChildCommand)
+: KviKvsTreeNodeCommand(pLocation,pChildCommand->commandName())
+{
+ m_pTargetWindow = pTargetWindow;
+ m_pTargetWindow->setParent(this);
+ m_pChildCommand = pChildCommand;
+ m_pChildCommand->setParent(this);
+}
+
+KviKvsTreeNodeRebindingSwitch::~KviKvsTreeNodeRebindingSwitch()
+{
+ delete m_pTargetWindow;
+ delete m_pChildCommand;
+}
+
+
+void KviKvsTreeNodeRebindingSwitch::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Window Rebinding Switch";
+}
+
+void KviKvsTreeNodeRebindingSwitch::dump(const char * prefix)
+{
+ debug("%sRebindingSwitch",prefix);
+ QString tmp = prefix;
+ tmp += " ";
+ m_pTargetWindow->dump(tmp.utf8().data());
+ m_pChildCommand->dump(tmp.utf8().data());
+}
+
+const QString & KviKvsTreeNodeRebindingSwitch::commandName()
+{
+ return m_pChildCommand->commandName();
+}
+
+bool KviKvsTreeNodeRebindingSwitch::execute(KviKvsRunTimeContext * c)
+{
+ KviKvsVariant vWindow;
+ if(!m_pTargetWindow->evaluateReadOnly(c,&vWindow))return false;
+
+ KviWindow * pNewWindow;
+
+ QString szWinId;
+ vWindow.asString(szWinId);
+ if(szWinId.isEmpty())
+ {
+ c->warning(this,__tr2qs("Empty window identifier specified in the standard rebinding switch: no rebinding performed"));
+ pNewWindow = 0;
+ } else {
+ pNewWindow = g_pApp->findWindow(szWinId.utf8().data());
+ }
+
+ pNewWindow = g_pApp->findWindow(szWinId.utf8().data());
+ KviWindow * pOldWindow = c->window();
+ if(pNewWindow)
+ c->setWindow(pNewWindow);
+ else
+ c->warning(this,__tr2qs("Invalid window specified in the standard rebinding switch: no rebinding performed"));
+ bool bRet = m_pChildCommand->execute(c);
+ c->setWindow(pOldWindow);
+ return bRet;
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.h b/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.h
new file mode 100644
index 00000000..c81dcd93
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_rebindingswitch.h
@@ -0,0 +1,49 @@
+#ifndef _KVI_KVS_TREENODE_REBINDINGSWITCH_H_
+#define _KVI_KVS_TREENODE_REBINDINGSWITCH_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_rebindingswitch.h
+// Created on Mon 15 Aug 2005 13:32:31 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_kvs_treenode_command.h"
+#include "kvi_qstring.h"
+
+class KviKvsTreeNodeData;
+class KviKvsRunTimeContext;
+
+class KVIRC_API KviKvsTreeNodeRebindingSwitch : public KviKvsTreeNodeCommand
+{
+public:
+ KviKvsTreeNodeRebindingSwitch(const QChar * pLocation,KviKvsTreeNodeData * pTargetWindow,KviKvsTreeNodeCommand * pChildCommand);
+ ~KviKvsTreeNodeRebindingSwitch();
+protected:
+ KviKvsTreeNodeData * m_pTargetWindow;
+ KviKvsTreeNodeCommand * m_pChildCommand;
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ const QString & commandName();
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+#endif //!_KVI_KVS_TREENODE_REBINDINGSWITCH_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp b/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp
new file mode 100644
index 00000000..0d127611
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.cpp
@@ -0,0 +1,148 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_scopeoperator.cpp
+// Created on Tue 07 Oct 2003 02:33:01 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_scopeoperator.h"
+
+#include "kvi_qstring.h"
+
+#include "kvi_kvs_variant.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_kvs_kernel.h"
+#include "kvi_kvs_object.h"
+#include "kvi_kvs_object_controller.h"
+
+#include "kvi_locale.h"
+
+KviKvsTreeNodeScopeOperator::KviKvsTreeNodeScopeOperator(const QChar * pLocation,KviKvsTreeNodeData * pObject,KviKvsTreeNodeData * pData)
+: KviKvsTreeNodeData(pLocation)
+{
+ m_pObjectReference = pObject;
+ m_pObjectReference->setParent(this);
+ m_pRightSide = pData;
+ m_pRightSide->setParent(this);
+}
+
+KviKvsTreeNodeScopeOperator::~KviKvsTreeNodeScopeOperator()
+{
+ delete m_pObjectReference;
+ delete m_pRightSide;
+}
+
+void KviKvsTreeNodeScopeOperator::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Scope Operator";
+}
+
+
+void KviKvsTreeNodeScopeOperator::dump(const char * prefix)
+{
+ debug("%s ScopeOperator",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pObjectReference->dump(tmp.utf8().data());
+ m_pRightSide->dump(tmp.utf8().data());
+}
+
+bool KviKvsTreeNodeScopeOperator::isReadOnly()
+{
+ return m_pRightSide->isReadOnly();
+}
+
+bool KviKvsTreeNodeScopeOperator::canEvaluateToObjectReference()
+{
+ return m_pRightSide->canEvaluateToObjectReference();
+}
+
+bool KviKvsTreeNodeScopeOperator::isFunctionCall()
+{
+ return m_pRightSide->isFunctionCall();
+}
+
+bool KviKvsTreeNodeScopeOperator::canEvaluateInObjectScope()
+{
+ return m_pObjectReference->canEvaluateInObjectScope();
+}
+
+KviKvsObject * KviKvsTreeNodeScopeOperator::objectFromVariant(KviKvsRunTimeContext * c,KviKvsVariant * v)
+{
+ kvs_hobject_t hObject;
+ if(!v->asHObject(hObject))
+ {
+ c->error(this,__tr2qs("The left side of the scope operator didn't evaluate as an object reference"));
+ return 0;
+ }
+
+ if(hObject == (kvs_hobject_t)0)
+ {
+ c->error(this,__tr2qs("The left side of the scope operator evaluated to a null object reference"));
+ return 0;
+ }
+
+ KviKvsObject * o = KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if(!o)
+ {
+ c->error(this,__tr2qs("The left side of the scope operator evaluated to an invalid object reference (object doesn't exist)"));
+ return 0;
+ }
+ return o;
+}
+
+bool KviKvsTreeNodeScopeOperator::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ KviKvsVariant ret;
+ if(!m_pObjectReference->evaluateReadOnly(c,&ret))return false;
+ KviKvsObject * o = objectFromVariant(c,&ret);
+ if(!o)return false;
+ return m_pRightSide->evaluateReadOnlyInObjectScope(o,c,pBuffer);
+}
+
+KviKvsRWEvaluationResult * KviKvsTreeNodeScopeOperator::evaluateReadWrite(KviKvsRunTimeContext * c)
+{
+ KviKvsVariant ret;
+ if(!m_pObjectReference->evaluateReadOnly(c,&ret))return 0;
+ KviKvsObject * o = objectFromVariant(c,&ret);
+ if(!o)return 0;
+ return m_pRightSide->evaluateReadWriteInObjectScope(o,c);
+}
+
+bool KviKvsTreeNodeScopeOperator::evaluateReadOnlyInObjectScope(KviKvsObject * o,KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ KviKvsVariant ret;
+ if(!m_pObjectReference->evaluateReadOnlyInObjectScope(o,c,&ret))return false;
+ KviKvsObject * pObject = objectFromVariant(c,&ret);
+ if(!pObject)return false;
+ return m_pRightSide->evaluateReadOnlyInObjectScope(pObject,c,pBuffer);
+}
+
+KviKvsRWEvaluationResult * KviKvsTreeNodeScopeOperator::evaluateReadWriteInObjectScope(KviKvsObject * o,KviKvsRunTimeContext * c)
+{
+ KviKvsVariant ret;
+ if(!m_pObjectReference->evaluateReadOnlyInObjectScope(o,c,&ret))return 0;
+ KviKvsObject * pObject = objectFromVariant(c,&ret);
+ if(!pObject)return 0;
+ return m_pRightSide->evaluateReadWriteInObjectScope(pObject,c);
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.h b/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.h
new file mode 100644
index 00000000..30427266
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_scopeoperator.h
@@ -0,0 +1,58 @@
+#ifndef _KVI_KVS_TREENODE_SCOPEOPERATOR_H_
+#define _KVI_KVS_TREENODE_SCOPEOPERATOR_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_scopeoperator.h
+// Created on Tue 07 Oct 2003 02:33:01 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_kvs_treenode_data.h"
+
+class KviKvsObject;
+
+class KVIRC_API KviKvsTreeNodeScopeOperator : public KviKvsTreeNodeData
+{
+public:
+ KviKvsTreeNodeScopeOperator(const QChar * pLocation,KviKvsTreeNodeData * pObject,KviKvsTreeNodeData * pData);
+ ~KviKvsTreeNodeScopeOperator();
+public:
+ KviKvsTreeNodeData * m_pObjectReference; // can't be null
+ KviKvsTreeNodeData * m_pRightSide; // can't be null
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool isReadOnly(); // gets the m_pRightSide read only state
+ virtual bool canEvaluateToObjectReference(); // gets the m_pRightSide result
+ virtual bool isFunctionCall(); // gets the m_pRightSide result
+ virtual bool canEvaluateInObjectScope(); // gets the m_pObjectReference result
+ //virtual bool canReleaseResult(); // gets the m_pRightSide result
+
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer);
+ virtual KviKvsRWEvaluationResult * evaluateReadWrite(KviKvsRunTimeContext * c);
+ virtual bool evaluateReadOnlyInObjectScope(KviKvsObject * o,KviKvsRunTimeContext * c,KviKvsVariant * pBuffer);
+ virtual KviKvsRWEvaluationResult * evaluateReadWriteInObjectScope(KviKvsObject * o,KviKvsRunTimeContext * c);
+protected:
+ KviKvsObject * objectFromVariant(KviKvsRunTimeContext * c,KviKvsVariant * v);
+};
+
+
+#endif //!_KVI_KVS_TREENODE_SCOPEOPERATOR_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_simplecommand.cpp b/src/kvirc/kvs/kvi_kvs_treenode_simplecommand.cpp
new file mode 100644
index 00000000..dd055b9e
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_simplecommand.cpp
@@ -0,0 +1,58 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_simplecommand.cpp
+// Created on Thu 09 Oct 2003 02:12:18 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_simplecommand.h"
+#include "kvi_kvs_treenode_datalist.h"
+
+KviKvsTreeNodeSimpleCommand::KviKvsTreeNodeSimpleCommand(const QChar * pLocation,const QString &szCmdName,KviKvsTreeNodeDataList * params)
+: KviKvsTreeNodeCommandWithParameters(pLocation,szCmdName,params)
+{
+}
+
+KviKvsTreeNodeSimpleCommand::~KviKvsTreeNodeSimpleCommand()
+{
+}
+
+void KviKvsTreeNodeSimpleCommand::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Simple Command \"";
+ szBuffer += m_szCmdName;
+ szBuffer += "\"";
+#endif
+}
+
+
+void KviKvsTreeNodeSimpleCommand::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s SimpleCommand(%s)",prefix,m_szCmdName.utf8().data());
+ dumpSwitchList(prefix);
+ dumpParameterList(prefix);
+#endif
+}
+
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_simplecommand.h b/src/kvirc/kvs/kvi_kvs_treenode_simplecommand.h
new file mode 100644
index 00000000..d9aec78c
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_simplecommand.h
@@ -0,0 +1,43 @@
+#ifndef _KVI_KVS_TREENODE_SIMPLECOMMAND_H_
+#define _KVI_KVS_TREENODE_SIMPLECOMMAND_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_simplecommand.h
+// Created on Thu 09 Oct 2003 02:12:18 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_kvs_treenode_commandwithparameters.h"
+
+class KviKvsTreeNodeDataList;
+
+class KVIRC_API KviKvsTreeNodeSimpleCommand : public KviKvsTreeNodeCommandWithParameters
+{
+public:
+ KviKvsTreeNodeSimpleCommand(const QChar * pLocation,const QString &szCmdName,KviKvsTreeNodeDataList * params);
+ ~KviKvsTreeNodeSimpleCommand();
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+};
+
+
+#endif //!_KVI_KVS_TREENODE_SIMPLECOMMAND_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_singleparameteridentifier.cpp b/src/kvirc/kvs/kvi_kvs_treenode_singleparameteridentifier.cpp
new file mode 100644
index 00000000..d67c82bd
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_singleparameteridentifier.cpp
@@ -0,0 +1,74 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_singleparameteridentifier.cpp
+// Created on Tue 07 Oct 2003 03:47:11 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_singleparameteridentifier.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_kvs_variant.h"
+
+KviKvsTreeNodeSingleParameterIdentifier::KviKvsTreeNodeSingleParameterIdentifier(const QChar * pLocation,int iStart)
+: KviKvsTreeNodeData(pLocation)
+{
+#ifdef COMPILE_NEW_KVS
+ m_iStart = iStart;
+#endif
+}
+
+KviKvsTreeNodeSingleParameterIdentifier::~KviKvsTreeNodeSingleParameterIdentifier()
+{
+}
+
+void KviKvsTreeNodeSingleParameterIdentifier::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Single Parameter Identifier \"$";
+ KviQString::appendFormatted(szBuffer,"%d",m_iStart);
+ szBuffer += "\"";
+#endif
+}
+
+
+void KviKvsTreeNodeSingleParameterIdentifier::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s SingleParameterIdentifier(%d)",prefix,m_iStart);
+#endif
+}
+
+bool KviKvsTreeNodeSingleParameterIdentifier::canEvaluateToObjectReference()
+{
+ return true;
+}
+
+bool KviKvsTreeNodeSingleParameterIdentifier::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant * v = c->parameterList()->at(m_iStart);
+ if(!v)pBuffer->setNothing();
+ else pBuffer->copyFrom(v);
+#endif
+ return true;
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_singleparameteridentifier.h b/src/kvirc/kvs/kvi_kvs_treenode_singleparameteridentifier.h
new file mode 100644
index 00000000..fb7590c1
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_singleparameteridentifier.h
@@ -0,0 +1,50 @@
+#ifndef _KVI_KVS_TREENODE_SINGLEPARAMETERIDENTIFIER_H_
+#define _KVI_KVS_TREENODE_SINGLEPARAMETERIDENTIFIER_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_singleparameteridentifier.h
+// Created on Tue 07 Oct 2003 03:47:11 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_kvs_treenode_data.h"
+
+
+class KviKvsRunTimeContext;
+class KviKvsVariant;
+
+class KVIRC_API KviKvsTreeNodeSingleParameterIdentifier : public KviKvsTreeNodeData
+{
+public:
+ KviKvsTreeNodeSingleParameterIdentifier(const QChar * pLocation,int iStart);
+ ~KviKvsTreeNodeSingleParameterIdentifier();
+protected:
+ int m_iStart; // the index of the parameter wanted (always >= 0)
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+
+ virtual bool canEvaluateToObjectReference();
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer);
+};
+
+
+#endif //!_KVI_KVS_TREENODE_SINGLEPARAMETERIDENTIFIER_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_specialcommand.cpp b/src/kvirc/kvs/kvi_kvs_treenode_specialcommand.cpp
new file mode 100644
index 00000000..bfca30ac
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_specialcommand.cpp
@@ -0,0 +1,54 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_specialcommand.cpp
+// Created on Thu 09 Oct 2003 02:20:12 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_specialcommand.h"
+
+KviKvsTreeNodeSpecialCommand::KviKvsTreeNodeSpecialCommand(const QChar * pLocation,const QString &szCmdName)
+: KviKvsTreeNodeCommand(pLocation,szCmdName)
+{
+}
+
+KviKvsTreeNodeSpecialCommand::~KviKvsTreeNodeSpecialCommand()
+{
+}
+
+void KviKvsTreeNodeSpecialCommand::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Special Command \"";
+ szBuffer += m_szCmdName;
+ szBuffer += "\"";
+#endif
+}
+
+
+void KviKvsTreeNodeSpecialCommand::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s SpecialCommand(%s)",prefix,m_szCmdName.utf8().data());
+ dumpSwitchList(prefix);
+#endif
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_specialcommand.h b/src/kvirc/kvs/kvi_kvs_treenode_specialcommand.h
new file mode 100644
index 00000000..9ac8867b
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_specialcommand.h
@@ -0,0 +1,41 @@
+#ifndef _KVI_KVS_TREENODE_SPECIALCOMMAND_H_
+#define _KVI_KVS_TREENODE_SPECIALCOMMAND_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_specialcommand.h
+// Created on Thu 09 Oct 2003 02:20:12 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_command.h"
+
+class KVIRC_API KviKvsTreeNodeSpecialCommand : public KviKvsTreeNodeCommand
+{
+public:
+ KviKvsTreeNodeSpecialCommand(const QChar * pLocation,const QString &szCmdName);
+ ~KviKvsTreeNodeSpecialCommand();
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+};
+
+#endif //!_KVI_KVS_TREENODE_SPECIALCOMMAND_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_specialcommandbreak.cpp b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandbreak.cpp
new file mode 100644
index 00000000..ad750404
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandbreak.cpp
@@ -0,0 +1,55 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_specialcommandbreak.cpp
+// Created on Thu 06 Nov 2003 12:15:00 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_specialcommandbreak.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_locale.h"
+
+KviKvsTreeNodeSpecialCommandBreak::KviKvsTreeNodeSpecialCommandBreak(const QChar * pLocation)
+: KviKvsTreeNodeSpecialCommand(pLocation,"break")
+{
+}
+
+KviKvsTreeNodeSpecialCommandBreak::~KviKvsTreeNodeSpecialCommandBreak()
+{
+}
+
+void KviKvsTreeNodeSpecialCommandBreak::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Special Command \"break\"";
+}
+
+
+void KviKvsTreeNodeSpecialCommandBreak::dump(const char * prefix)
+{
+ debug("%s SpecialCommandBreak",prefix);
+}
+
+bool KviKvsTreeNodeSpecialCommandBreak::execute(KviKvsRunTimeContext * c)
+{
+ c->setBreakPending();
+ return false;
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_specialcommandbreak.h b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandbreak.h
new file mode 100644
index 00000000..a4b061e1
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandbreak.h
@@ -0,0 +1,45 @@
+#ifndef _KVI_KVS_TREENODE_SPECIALCOMMANDBREAK_H_
+#define _KVI_KVS_TREENODE_SPECIALCOMMANDBREAK_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_specialcommandbreak.h
+// Created on Thu 06 Nov 2003 12:15:00 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_specialcommand.h"
+
+class KviKvsRunTimeContext;
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandBreak : public KviKvsTreeNodeSpecialCommand
+{
+public:
+ KviKvsTreeNodeSpecialCommandBreak(const QChar * pLocation);
+ ~KviKvsTreeNodeSpecialCommandBreak();
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+#endif //!_KVI_KVS_TREENODE_SPECIALCOMMANDBREAK_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp
new file mode 100644
index 00000000..05d35edd
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.cpp
@@ -0,0 +1,157 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_specialcommandclass.cpp
+// Created on Fri 12 Aug 2005 03:23:31 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+#define __KVIRC__
+
+#include "kvi_locale.h"
+#include "kvi_kvs_variantlist.h"
+#include "kvi_kvs_variant.h"
+#include "kvi_kvs_treenode_specialcommandclass.h"
+#include "kvi_kvs_kernel.h"
+#include "kvi_kvs_object_controller.h"
+#include "kvi_kvs_object_class.h"
+
+KviKvsTreeNodeSpecialCommandClassFunctionDefinition::KviKvsTreeNodeSpecialCommandClassFunctionDefinition(const QChar * pLocation,const QString &szName,const QString &szBuffer,unsigned int uHandlerFlags)
+: KviKvsTreeNode(pLocation)
+{
+ m_uHandlerFlags = uHandlerFlags;
+ m_szName = szName;
+ m_szBuffer = szBuffer;
+}
+
+void KviKvsTreeNodeSpecialCommandClassFunctionDefinition::dump(const char * prefix)
+{
+ debug("%s SpecialCommandClassFunctionDefinition(%s)",prefix,m_szName.utf8().data());
+ debug("%s (command buffer with %d characters)",prefix,m_szBuffer.length());
+}
+
+void KviKvsTreeNodeSpecialCommandClassFunctionDefinition::contextDescription(QString &szBuffer)
+{
+ KviQString::sprintf(szBuffer,"Object Member Function Definition \"%Q\"",&m_szName);
+}
+
+KviKvsTreeNodeSpecialCommandClass::KviKvsTreeNodeSpecialCommandClass(const QChar * pLocation,KviKvsTreeNodeDataList * pParams)
+: KviKvsTreeNodeSpecialCommand(pLocation,"class")
+{
+ m_pParams = pParams;
+ m_pParams->setParent(this);
+ m_pFunctions = new KviPointerList<KviKvsTreeNodeSpecialCommandClassFunctionDefinition>;
+ m_pFunctions->setAutoDelete(true);
+}
+
+KviKvsTreeNodeSpecialCommandClass::~KviKvsTreeNodeSpecialCommandClass()
+{
+ delete m_pParams;
+ delete m_pFunctions;
+}
+
+void KviKvsTreeNodeSpecialCommandClass::addFunctionDefinition(KviKvsTreeNodeSpecialCommandClassFunctionDefinition * pDef)
+{
+ pDef->setParent(this);
+ m_pFunctions->append(pDef);
+}
+
+
+void KviKvsTreeNodeSpecialCommandClass::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Special Command \"class\"";
+}
+
+void KviKvsTreeNodeSpecialCommandClass::dump(const char * prefix)
+{
+ debug("%s SpecialCommandClass",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pParams->dump(tmp.utf8().data());
+ for(KviKvsTreeNodeSpecialCommandClassFunctionDefinition * d = m_pFunctions->first();d;d = m_pFunctions->next())
+ d->dump(tmp.utf8().data());
+}
+
+bool KviKvsTreeNodeSpecialCommandClass::execute(KviKvsRunTimeContext * c)
+{
+ KviKvsVariantList l;
+ if(!m_pParams->evaluate(c,&l))return false;
+
+ KviKvsVariant * pClassName = l.first();
+ if(!pClassName)
+ {
+ c->error(this,__tr2qs("Missing class name"));
+ return false;
+ }
+ KviKvsVariant * pBaseClassName = l.next();
+
+ QString szClassName;
+ QString szBaseClassName;
+ pClassName->asString(szClassName);
+ if(pBaseClassName)
+ pBaseClassName->asString(szBaseClassName);
+
+ if(szClassName.isEmpty())
+ {
+ c->error(this,__tr2qs("Missing class name"));
+ return false;
+ }
+
+ if(szBaseClassName.isEmpty())szBaseClassName = "object";
+
+ // avoid infinite recursion in loading the base class
+ if(KviQString::equalCI(szBaseClassName,szClassName))
+ {
+ c->error(__tr2qs("A class can't be a subclass of itself"));
+ return false;
+ }
+
+ KviKvsObjectClass * pBaseClass = KviKvsKernel::instance()->objectController()->lookupClass(szBaseClassName);
+ if(!pBaseClass)
+ {
+ c->error(this,__tr2qs("Couln't find base class named \"%Q\""),&szBaseClassName);
+ return false;
+ }
+
+ // walk the inheritance tree of the base class in order to detect loops
+ KviKvsObjectClass * pClass = pBaseClass;
+ while(pClass)
+ {
+ if(KviQString::equalCI(pClass->name(),szClassName))
+ {
+ c->error(this,__tr2qs("Detected a loop in the inheritance tree of the base class \"%Q\": redefine that class first"),&szBaseClassName);
+ return false;
+ }
+ pClass = pClass->parentClass();
+ }
+
+ KviKvsObjectClass * pActualClass = KviKvsKernel::instance()->objectController()->lookupClass(szClassName,true);
+ if(pActualClass)
+ {
+ c->error(this,__tr2qs("Can't override the builtin class \"%Q\""),&szClassName);
+ return false;
+ }
+ pActualClass = new KviKvsObjectClass(pBaseClass,szClassName,0,false);
+
+ for(KviKvsTreeNodeSpecialCommandClassFunctionDefinition * d = m_pFunctions->first();d;d = m_pFunctions->next())
+ {
+ pActualClass->registerFunctionHandler(d->name(),d->buffer(),d->handlerFlags());
+ }
+ return true;
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.h b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.h
new file mode 100644
index 00000000..0a8a69b5
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandclass.h
@@ -0,0 +1,69 @@
+#ifndef _KVI_KVS_TREENODE_SPECIALCOMMANDCLASS_H_
+#define _KVI_KVS_TREENODE_SPECIALCOMMANDCLASS_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_specialcommandclass.h
+// Created on Fri 12 Aug 2005 03:23:31 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_specialcommand.h"
+#include "kvi_kvs_treenode_base.h"
+#include "kvi_kvs_treenode_datalist.h"
+
+class KviKvsRunTimeContext;
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandClassFunctionDefinition : public KviKvsTreeNode
+{
+public:
+ KviKvsTreeNodeSpecialCommandClassFunctionDefinition(const QChar * pLocation,const QString &szName,const QString &szBuffer,unsigned int uHandlerFlags);
+ virtual ~KviKvsTreeNodeSpecialCommandClassFunctionDefinition(){};
+protected:
+ QString m_szName;
+ QString m_szBuffer;
+ unsigned int m_uHandlerFlags;
+public:
+ unsigned int handlerFlags(){ return m_uHandlerFlags; };
+ const QString & name(){ return m_szName; };
+ const QString & buffer(){ return m_szBuffer; };
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+};
+
+
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandClass : public KviKvsTreeNodeSpecialCommand
+{
+public:
+ KviKvsTreeNodeSpecialCommandClass(const QChar * pLocation,KviKvsTreeNodeDataList * pParams);
+ virtual ~KviKvsTreeNodeSpecialCommandClass();
+protected:
+ KviKvsTreeNodeDataList * m_pParams;
+ KviPointerList<KviKvsTreeNodeSpecialCommandClassFunctionDefinition> * m_pFunctions;
+public:
+ void addFunctionDefinition(KviKvsTreeNodeSpecialCommandClassFunctionDefinition * pDef);
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+#endif //!_KVI_KVS_TREENODE_SPECIALCOMMANDCLASS_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp b/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp
new file mode 100644
index 00000000..eea02bda
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp
@@ -0,0 +1,424 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_specialcommanddefpopup.cpp
+// Created on Fri 02 Jan 2004 14:09:00 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_specialcommanddefpopup.h"
+#include "kvi_kvs_treenode_expression.h"
+#include "kvi_kvs_treenode_instruction.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_locale.h"
+#include "kvi_kvs_popupmanager.h"
+#include "kvi_kvs_popupmenu.h"
+#include "kvi_kvs_script.h"
+
+void KviKvsTreeNodeSpecialCommandDefpopupLabelExtpopup::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Label \"extpopup\" For Special Command \"defpopup\"";
+#endif
+}
+
+void KviKvsTreeNodeSpecialCommandDefpopupLabelExtpopup::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s SpecialCommandDefpopupLabelExtpopup",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ QString x = tmp;
+ x += "CONDITION: ";
+ x += m_szCondition;
+ debug("%s",x.utf8().data());
+ x = tmp;
+ x += "TEXT: ";
+ x += m_szText;
+ debug("%s",x.utf8().data());
+ x = tmp;
+ x += "NAME: ";
+ x += m_szName;
+ debug("%s",x.utf8().data());
+ x = tmp;
+ x += "ICON: ";
+ x += m_szIcon;
+ debug("%s",x.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeSpecialCommandDefpopupLabelExtpopup::execute(KviKvsRunTimeContext * c,KviKvsPopupMenu * p)
+{
+#ifdef COMPILE_NEW_KVS
+ p->addExtPopup(m_szItemName,m_szName,m_szText,m_szIcon,m_szCondition);
+#endif
+ return true;
+}
+
+
+void KviKvsTreeNodeSpecialCommandDefpopupLabelItem::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Label \"item\" For Special Command \"defpopup\"";
+#endif
+}
+
+
+void KviKvsTreeNodeSpecialCommandDefpopupLabelItem::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s SpecialCommandDefpopupLabelItem",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ QString x = tmp;
+ x += "CONDITION: ";
+ x += m_szCondition;
+ debug("%s",x.utf8().data());
+ x = tmp;
+ x += "TEXT: ";
+ x += m_szText;
+ debug("%s",x.utf8().data());
+ x = tmp;
+ x += "ICON: ";
+ x += m_szIcon;
+ debug("%s",x.utf8().data());
+ x = tmp;
+ x += "INSTRUCTION: ";
+ x += m_szInstruction;
+ debug("%s",x.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeSpecialCommandDefpopupLabelItem::execute(KviKvsRunTimeContext * c,KviKvsPopupMenu * p)
+{
+#ifdef COMPILE_NEW_KVS
+ p->addItem(m_szItemName,m_szInstruction,m_szText,m_szIcon,m_szCondition);
+#endif
+ return true;
+}
+
+void KviKvsTreeNodeSpecialCommandDefpopupLabelLabel::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Label \"label\" For Special Command \"defpopup\"";
+#endif
+}
+
+
+void KviKvsTreeNodeSpecialCommandDefpopupLabelLabel::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s SpecialCommandDefpopupLabelLabel",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ QString x = tmp;
+ x += "CONDITION: ";
+ x += m_szCondition;
+ debug("%s",x.utf8().data());
+ x = tmp;
+ x += "TEXT: ";
+ x += m_szText;
+ debug("%s",x.utf8().data());
+ x = tmp;
+ x += "ICON: ";
+ x += m_szIcon;
+ debug("%s",x.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeSpecialCommandDefpopupLabelLabel::execute(KviKvsRunTimeContext * c,KviKvsPopupMenu * p)
+{
+#ifdef COMPILE_NEW_KVS
+ p->addLabel(m_szItemName,m_szText,m_szIcon,m_szCondition);
+#endif
+ return true;
+}
+
+
+
+
+void KviKvsTreeNodeSpecialCommandDefpopupLabelSeparator::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Label \"separator\" For Special Command \"defpopup\"";
+#endif
+}
+
+
+void KviKvsTreeNodeSpecialCommandDefpopupLabelSeparator::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s SpecialCommandDefpopupLabelSeparator",prefix);
+ QString tmp = prefix;
+ tmp.append(" CONDITION:");
+ tmp.append(m_szCondition);
+ debug("%s",tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeSpecialCommandDefpopupLabelSeparator::execute(KviKvsRunTimeContext * c,KviKvsPopupMenu * p)
+{
+#ifdef COMPILE_NEW_KVS
+ p->addSeparator(m_szItemName,m_szCondition);
+#endif
+ return true;
+}
+
+
+
+void KviKvsTreeNodeSpecialCommandDefpopupLabelEpilogue::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Label \"epilogue\" For Special Command \"defpopup\"";
+#endif
+}
+
+
+void KviKvsTreeNodeSpecialCommandDefpopupLabelEpilogue::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s SpecialCommandDefpopupLabelEpilogue",prefix);
+ QString tmp = prefix;
+ tmp.append(" INSTRUCTION: ");
+ tmp += m_szInstruction;
+ debug("%s",tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeSpecialCommandDefpopupLabelEpilogue::execute(KviKvsRunTimeContext * c,KviKvsPopupMenu * p)
+{
+#ifdef COMPILE_NEW_KVS
+ p->addEpilogue(m_szItemName,m_szInstruction);
+#endif
+ return true;
+}
+
+
+void KviKvsTreeNodeSpecialCommandDefpopupLabelPrologue::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Label \"prologue\" For Special Command \"defpopup\"";
+#endif
+}
+
+
+
+void KviKvsTreeNodeSpecialCommandDefpopupLabelPrologue::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s SpecialCommandDefpopupLabelPrologue",prefix);
+ QString tmp = prefix;
+ tmp.append(" INSTRUCTION: ");
+ tmp += m_szInstruction;
+ debug("%s",tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeSpecialCommandDefpopupLabelPrologue::execute(KviKvsRunTimeContext * c,KviKvsPopupMenu * p)
+{
+#ifdef COMPILE_NEW_KVS
+ p->addPrologue(m_szItemName,m_szInstruction);
+#endif
+ return true;
+}
+
+
+
+
+
+
+
+
+
+KviKvsTreeNodeSpecialCommandDefpopupLabelPopup::KviKvsTreeNodeSpecialCommandDefpopupLabelPopup(const QChar * pLocation)
+: KviKvsTreeNodeSpecialCommandDefpopupConditionalLabelWithTextAndIcon(pLocation,QString::null,QString::null,QString::null,QString::null)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pLabels = new KviPointerList<KviKvsTreeNodeSpecialCommandDefpopupLabel>;
+ m_pLabels->setAutoDelete(true);
+#endif
+}
+
+KviKvsTreeNodeSpecialCommandDefpopupLabelPopup::~KviKvsTreeNodeSpecialCommandDefpopupLabelPopup()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pLabels;
+#endif
+}
+
+void KviKvsTreeNodeSpecialCommandDefpopupLabelPopup::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Label \"popup\" For Special Command \"defpopup\"";
+#endif
+}
+
+
+void KviKvsTreeNodeSpecialCommandDefpopupLabelPopup::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s SpecialCommandDefpopupLabelPopup",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ QString x = tmp;
+ x += "CONDITION: ";
+ x += m_szCondition;
+ debug(x.utf8().data());
+ x = tmp;
+ x += "TEXT: ";
+ x += m_szText;
+ debug(x.utf8().data());
+ x = tmp;
+ x += "ICON: ";
+ x += m_szIcon;
+ debug(x.utf8().data());
+ for(KviKvsTreeNodeSpecialCommandDefpopupLabel * l = m_pLabels->first();l;l = m_pLabels->next())
+ l->dump(tmp.utf8().data());
+#endif
+}
+
+void KviKvsTreeNodeSpecialCommandDefpopupLabelPopup::addLabel(KviKvsTreeNodeSpecialCommandDefpopupLabel * pLabel)
+{
+#ifdef COMPILE_NEW_KVS
+ pLabel->setParent(this);
+ m_pLabels->append(pLabel);
+#endif
+}
+
+bool KviKvsTreeNodeSpecialCommandDefpopupLabelPopup::execute(KviKvsRunTimeContext * c,KviKvsPopupMenu * p)
+{
+#ifdef COMPILE_NEW_KVS
+ // the name will be reset anyway
+ KviKvsPopupMenu * pNew = p->addPopup(m_szItemName,m_szText,m_szIcon,m_szCondition);
+ return fill(c,pNew);
+#else
+ return false;
+#endif
+}
+
+bool KviKvsTreeNodeSpecialCommandDefpopupLabelPopup::fill(KviKvsRunTimeContext* c,KviKvsPopupMenu * p)
+{
+#ifdef COMPILE_NEW_KVS
+ for(KviKvsTreeNodeSpecialCommandDefpopupLabel * l = m_pLabels->first();l;l = m_pLabels->next())
+ {
+ if(!l->execute(c,p))return false;
+ }
+#endif
+ return true;
+}
+
+
+
+
+
+
+
+
+KviKvsTreeNodeSpecialCommandDefpopup::KviKvsTreeNodeSpecialCommandDefpopup(const QChar * pLocation,KviKvsTreeNodeData * pPopupName,KviKvsTreeNodeSpecialCommandDefpopupLabelPopup * pMainPopup)
+: KviKvsTreeNodeSpecialCommand(pLocation,"defpopup")
+{
+#ifdef COMPILE_NEW_KVS
+ m_pPopupName = pPopupName;
+ m_pPopupName->setParent(this);
+ m_pMainPopup = pMainPopup;
+ m_pMainPopup->setParent(this);
+#endif
+}
+
+KviKvsTreeNodeSpecialCommandDefpopup::~KviKvsTreeNodeSpecialCommandDefpopup()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pPopupName;
+ delete m_pMainPopup;
+#endif
+}
+
+void KviKvsTreeNodeSpecialCommandDefpopup::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Special Command \"defpopup\"";
+#endif
+}
+
+
+void KviKvsTreeNodeSpecialCommandDefpopup::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s SpecialCommandDefpopup",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pPopupName->dump(tmp.utf8().data());
+ m_pMainPopup->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeSpecialCommandDefpopup::execute(KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant v;
+ if(!m_pPopupName->evaluateReadOnly(c,&v))return false;
+ QString szName;
+ v.asString(szName);
+
+ KviKvsSwitchList swl;
+ if(m_pSwitches)
+ {
+ if(!(m_pSwitches->evaluate(c,&swl)))return false;
+ }
+
+ KviKvsPopupMenu * pPopup = KviKvsPopupManager::instance()->lookup(szName);
+ bool bWasAlreadyThere;
+ if(!pPopup)
+ {
+ if(m_pMainPopup->isEmpty())return true; // we wanted to remove it anyway: exit silently
+ // we want to create it
+ pPopup = new KviKvsPopupMenu(szName);
+ KviKvsPopupManager::instance()->add(szName,pPopup);
+ bWasAlreadyThere = false;
+ } else {
+ bWasAlreadyThere = true;
+
+ if(pPopup->isLocked())
+ {
+ c->error(__tr2qs("The popup '%s' is actually locked: 'self-modifications' are not allowed"),&szName);
+ return false;
+ }
+
+ if(m_pMainPopup->isEmpty())
+ {
+ // we want to remove it
+ KviKvsPopupManager::instance()->remove(szName);
+ return true;
+ }
+ // we want to (re)create it
+
+ if(!swl.find('m',"--merge"))pPopup->doClear();
+ }
+
+
+ if(!m_pMainPopup->fill(c,pPopup))
+ {
+ if(!bWasAlreadyThere)KviKvsPopupManager::instance()->remove(szName);
+ return false;
+ }
+#endif
+ return true;
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.h b/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.h
new file mode 100644
index 00000000..53a02fbc
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.h
@@ -0,0 +1,193 @@
+#ifndef _KVI_KVS_TREENODE_SPECIALCOMMANDDEFPOPUP_H_
+#define _KVI_KVS_TREENODE_SPECIALCOMMANDDEFPOPUP_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_specialcommanddefpopup.h
+// Created on Fri 02 Jan 2004 13:54:00 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode.h"
+#include "kvi_kvs_treenode_specialcommand.h"
+
+class KviKvsTreeNodeExpression;
+class KviKvsTreeNodeInstruction;
+class KviKvsRunTimeContext;
+class KviKvsVariant;
+class KviKvsPopupMenu;
+
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandDefpopupLabel : public KviKvsTreeNode
+{
+public:
+ QString m_szItemName;
+public:
+ KviKvsTreeNodeSpecialCommandDefpopupLabel(const QChar * pLocation,const QString &szItemName)
+ : KviKvsTreeNode(pLocation), m_szItemName(szItemName) {};
+ ~KviKvsTreeNodeSpecialCommandDefpopupLabel(){};
+public:
+ void setItemName(const QString &szItemName){ m_szItemName = szItemName; };
+ virtual bool execute(KviKvsRunTimeContext * c,KviKvsPopupMenu * p) = 0;
+};
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandDefpopupConditionalLabel : public KviKvsTreeNodeSpecialCommandDefpopupLabel
+{
+protected:
+ QString m_szCondition; // may be null!
+public:
+ KviKvsTreeNodeSpecialCommandDefpopupConditionalLabel(const QChar * pLocation,const QString &szCondition,const QString &szItemName)
+ : KviKvsTreeNodeSpecialCommandDefpopupLabel(pLocation,szItemName), m_szCondition(szCondition) {};
+ ~KviKvsTreeNodeSpecialCommandDefpopupConditionalLabel(){};
+public:
+ void setCondition(const QString &szCondition){ m_szCondition = szCondition; };
+};
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandDefpopupLabelSeparator : public KviKvsTreeNodeSpecialCommandDefpopupConditionalLabel
+{
+public:
+ KviKvsTreeNodeSpecialCommandDefpopupLabelSeparator(const QChar * pLocation,const QString &szCondition,const QString &szItemName)
+ : KviKvsTreeNodeSpecialCommandDefpopupConditionalLabel(pLocation,szCondition,szItemName){};
+ ~KviKvsTreeNodeSpecialCommandDefpopupLabelSeparator(){};
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c,KviKvsPopupMenu * p);
+};
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandDefpopupConditionalLabelWithTextAndIcon : public KviKvsTreeNodeSpecialCommandDefpopupConditionalLabel
+{
+protected:
+ QString m_szText;
+ QString m_szIcon;
+public:
+ KviKvsTreeNodeSpecialCommandDefpopupConditionalLabelWithTextAndIcon(const QChar * pLocation,const QString &szCondition,const QString &szText,const QString &szIcon,const QString &szItemName)
+ : KviKvsTreeNodeSpecialCommandDefpopupConditionalLabel(pLocation,szCondition,szItemName), m_szText(szText), m_szIcon(szIcon){};
+ ~KviKvsTreeNodeSpecialCommandDefpopupConditionalLabelWithTextAndIcon(){};
+public:
+ void setText(const QString &szText){ m_szText = szText; };
+ void setIcon(const QString &szIcon){ m_szIcon = szIcon; };
+};
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandDefpopupLabelExtpopup : public KviKvsTreeNodeSpecialCommandDefpopupConditionalLabelWithTextAndIcon
+{
+protected:
+ QString m_szName;
+public:
+ KviKvsTreeNodeSpecialCommandDefpopupLabelExtpopup(const QChar * pLocation,const QString &szCondition,const QString &szText,const QString &szIcon,const QString &szName,const QString &szItemName)
+ : KviKvsTreeNodeSpecialCommandDefpopupConditionalLabelWithTextAndIcon(pLocation,szCondition,szText,szIcon,szItemName), m_szName(szName){};
+ ~KviKvsTreeNodeSpecialCommandDefpopupLabelExtpopup(){};
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c,KviKvsPopupMenu * p);
+};
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandDefpopupLabelItem : public KviKvsTreeNodeSpecialCommandDefpopupConditionalLabelWithTextAndIcon
+{
+protected:
+ QString m_szInstruction;
+public:
+ KviKvsTreeNodeSpecialCommandDefpopupLabelItem(const QChar * pLocation,const QString &szCondition,const QString &szText,const QString &szIcon,const QString &szInstruction,const QString &szItemName)
+ : KviKvsTreeNodeSpecialCommandDefpopupConditionalLabelWithTextAndIcon(pLocation,szCondition,szText,szIcon,szItemName), m_szInstruction(szInstruction) {};
+ ~KviKvsTreeNodeSpecialCommandDefpopupLabelItem(){};
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c,KviKvsPopupMenu * p);
+};
+
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandDefpopupLabelLabel : public KviKvsTreeNodeSpecialCommandDefpopupConditionalLabelWithTextAndIcon
+{
+public:
+ KviKvsTreeNodeSpecialCommandDefpopupLabelLabel(const QChar * pLocation,const QString &szCondition,const QString &szText,const QString &szIcon,const QString &szItemName)
+ : KviKvsTreeNodeSpecialCommandDefpopupConditionalLabelWithTextAndIcon(pLocation,szCondition,szText,szIcon,szItemName){};
+ ~KviKvsTreeNodeSpecialCommandDefpopupLabelLabel(){};
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c,KviKvsPopupMenu * p);
+};
+
+
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandDefpopupLabelPrologue : public KviKvsTreeNodeSpecialCommandDefpopupLabel
+{
+protected:
+ QString m_szInstruction;
+public:
+ KviKvsTreeNodeSpecialCommandDefpopupLabelPrologue(const QChar * pLocation,const QString &szInstruction,const QString &szItemName)
+ : KviKvsTreeNodeSpecialCommandDefpopupLabel(pLocation,szItemName), m_szInstruction(szInstruction){};
+ ~KviKvsTreeNodeSpecialCommandDefpopupLabelPrologue(){};
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c,KviKvsPopupMenu * p);
+};
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandDefpopupLabelEpilogue : public KviKvsTreeNodeSpecialCommandDefpopupLabel
+{
+protected:
+ QString m_szInstruction;
+public:
+ KviKvsTreeNodeSpecialCommandDefpopupLabelEpilogue(const QChar * pLocation,const QString &szInstruction,const QString &szItemName)
+ : KviKvsTreeNodeSpecialCommandDefpopupLabel(pLocation,szItemName), m_szInstruction(szInstruction){};
+ ~KviKvsTreeNodeSpecialCommandDefpopupLabelEpilogue(){};
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c,KviKvsPopupMenu * p);
+};
+
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandDefpopupLabelPopup : public KviKvsTreeNodeSpecialCommandDefpopupConditionalLabelWithTextAndIcon
+{
+public:
+ KviKvsTreeNodeSpecialCommandDefpopupLabelPopup(const QChar * pLocation);
+ ~KviKvsTreeNodeSpecialCommandDefpopupLabelPopup();
+protected:
+ KviPointerList<KviKvsTreeNodeSpecialCommandDefpopupLabel> * m_pLabels;
+public:
+ bool isEmpty(){ return m_pLabels->isEmpty(); };
+ void addLabel(KviKvsTreeNodeSpecialCommandDefpopupLabel * pLabel);
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c,KviKvsPopupMenu * p);
+ bool fill(KviKvsRunTimeContext * c,KviKvsPopupMenu * p);
+};
+
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandDefpopup : public KviKvsTreeNodeSpecialCommand
+{
+public:
+ KviKvsTreeNodeSpecialCommandDefpopup(const QChar * pLocation,KviKvsTreeNodeData * pPopupName,KviKvsTreeNodeSpecialCommandDefpopupLabelPopup * pMainPopup);
+ ~KviKvsTreeNodeSpecialCommandDefpopup();
+private:
+ KviKvsTreeNodeData * m_pPopupName; // can't be zero
+ KviKvsTreeNodeSpecialCommandDefpopupLabelPopup * m_pMainPopup;
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+#endif //!_KVI_KVS_TREENODE_SPECIALCOMMANDDEFPOPUP_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddo.cpp b/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddo.cpp
new file mode 100644
index 00000000..5b083c80
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddo.cpp
@@ -0,0 +1,87 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_specialcommanddo.cpp
+// Created on Thu 06 Nov 2003 14:09:53 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_specialcommanddo.h"
+#include "kvi_kvs_treenode_expression.h"
+#include "kvi_kvs_treenode_instruction.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_locale.h"
+
+KviKvsTreeNodeSpecialCommandDo::KviKvsTreeNodeSpecialCommandDo(const QChar * pLocation,KviKvsTreeNodeExpression * e,KviKvsTreeNodeInstruction * i)
+: KviKvsTreeNodeSpecialCommand(pLocation,"do")
+{
+ m_pExpression = e;
+ m_pExpression->setParent(this);
+ m_pInstruction = i;
+ if(i)m_pInstruction->setParent(this);
+}
+
+KviKvsTreeNodeSpecialCommandDo::~KviKvsTreeNodeSpecialCommandDo()
+{
+ delete m_pExpression;
+ if(m_pInstruction)delete m_pInstruction;
+}
+
+void KviKvsTreeNodeSpecialCommandDo::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Special Command \"do\"";
+}
+
+void KviKvsTreeNodeSpecialCommandDo::dump(const char * prefix)
+{
+ debug("%s SpecialCommandDo",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pExpression->dump(tmp);
+ if(m_pInstruction)m_pInstruction->dump(tmp);
+}
+
+bool KviKvsTreeNodeSpecialCommandDo::execute(KviKvsRunTimeContext * c)
+{
+ for(;;)
+ {
+ if(m_pInstruction)
+ {
+ if(!m_pInstruction->execute(c))
+ {
+ if(c->error())return false;
+
+ if(c->breakPending())
+ {
+ c->handleBreak();
+ return true;
+ }
+ return false;
+ }
+ }
+
+ KviKvsVariant v;
+ if(!m_pExpression->evaluateReadOnly(c,&v))return false;
+ if(!v.asBoolean())break;
+ }
+ return true;
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddo.h b/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddo.h
new file mode 100644
index 00000000..dde8d007
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddo.h
@@ -0,0 +1,51 @@
+#ifndef _KVI_KVS_TREENODE_SPECIALCOMMANDDO_H_
+#define _KVI_KVS_TREENODE_SPECIALCOMMANDDO_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_specialcommanddo.h
+// Created on Thu 06 Nov 2003 14:09:53 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_specialcommand.h"
+
+class KviKvsTreeNodeExpression;
+class KviKvsTreeNodeInstruction;
+class KviKvsRunTimeContext;
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandDo : public KviKvsTreeNodeSpecialCommand
+{
+public:
+ KviKvsTreeNodeSpecialCommandDo(const QChar * pLocation,KviKvsTreeNodeExpression * e,KviKvsTreeNodeInstruction * i);
+ ~KviKvsTreeNodeSpecialCommandDo();
+private:
+ KviKvsTreeNodeExpression * m_pExpression; // can't be 0
+ KviKvsTreeNodeInstruction * m_pInstruction; // may be 0
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+
+#endif //!_KVI_KVS_TREENODE_SPECIALCOMMANDDO_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_specialcommandfor.cpp b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandfor.cpp
new file mode 100644
index 00000000..82526bc6
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandfor.cpp
@@ -0,0 +1,133 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_specialcommandfor.cpp
+// Created on Fri 07 Nov 2003 11:48:11 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_specialcommandfor.h"
+#include "kvi_kvs_treenode_expression.h"
+#include "kvi_kvs_treenode_instruction.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_locale.h"
+
+KviKvsTreeNodeSpecialCommandFor::KviKvsTreeNodeSpecialCommandFor(const QChar * pLocation,KviKvsTreeNodeInstruction * pInit,KviKvsTreeNodeExpression * pCond,KviKvsTreeNodeInstruction * pUpd,KviKvsTreeNodeInstruction * pLoop)
+: KviKvsTreeNodeSpecialCommand(pLocation,"for")
+{
+ m_pInitialization = pInit;
+ if(m_pInitialization)m_pInitialization->setParent(this);
+ m_pCondition = pCond;
+ if(m_pCondition)m_pCondition->setParent(this);
+ m_pUpdate = pUpd;
+ if(m_pUpdate)m_pUpdate->setParent(this);
+ m_pLoop = pLoop;
+ if(m_pLoop)m_pLoop->setParent(this);
+}
+
+KviKvsTreeNodeSpecialCommandFor::~KviKvsTreeNodeSpecialCommandFor()
+{
+ if(m_pInitialization)delete m_pInitialization;
+ if(m_pCondition)delete m_pCondition;
+ if(m_pUpdate)delete m_pUpdate;
+ if(m_pLoop)delete m_pLoop;
+}
+
+void KviKvsTreeNodeSpecialCommandFor::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Special Command \"for\"";
+}
+
+void KviKvsTreeNodeSpecialCommandFor::dump(const char * prefix)
+{
+ debug("%s SpecialCommandFor",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ if(m_pInitialization)m_pInitialization->dump(tmp.utf8().data());
+ if(m_pCondition)m_pCondition->dump(tmp.utf8().data());
+ if(m_pUpdate)m_pUpdate->dump(tmp.utf8().data());
+ if(m_pLoop)m_pLoop->dump(tmp.utf8().data());
+}
+
+bool KviKvsTreeNodeSpecialCommandFor::execute(KviKvsRunTimeContext * c)
+{
+ if(m_pInitialization)
+ {
+ if(!m_pInitialization->execute(c))
+ {
+ // break allowed also here
+ if(c->error())return false;
+
+ if(c->breakPending())
+ {
+ c->handleBreak();
+ return true;
+ }
+
+ return false; // propagate false ret value
+ }
+ }
+
+ for(;;)
+ {
+ if(m_pCondition)
+ {
+ KviKvsVariant v;
+ if(!m_pCondition->evaluateReadOnly(c,&v))return false;
+ if(!v.asBoolean())return true;
+ }
+
+ if(m_pLoop)
+ {
+ if(!m_pLoop->execute(c))
+ {
+ if(c->error())return false;
+
+ if(c->breakPending())
+ {
+ c->handleBreak();
+ return true;
+ }
+
+ return false; // propagate false ret value
+ }
+ }
+
+ if(m_pUpdate)
+ {
+ if(!m_pUpdate->execute(c))
+ {
+ // break allowed also here
+ if(c->error())return false;
+
+ if(c->breakPending())
+ {
+ c->handleBreak();
+ return true;
+ }
+
+ return false; // propagate false ret value
+ }
+ }
+ }
+ // not reached
+ return false;
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_specialcommandfor.h b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandfor.h
new file mode 100644
index 00000000..4c53f2cf
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandfor.h
@@ -0,0 +1,53 @@
+#ifndef _KVI_KVS_TREENODE_SPECIALCOMMANDFOR_H_
+#define _KVI_KVS_TREENODE_SPECIALCOMMANDFOR_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_specialcommandfor.h
+// Created on Fri 07 Nov 2003 11:48:11 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_specialcommand.h"
+
+class KviKvsTreeNodeExpression;
+class KviKvsTreeNodeInstruction;
+class KviKvsRunTimeContext;
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandFor : public KviKvsTreeNodeSpecialCommand
+{
+public:
+ KviKvsTreeNodeSpecialCommandFor(const QChar * pLocation,KviKvsTreeNodeInstruction * pInit,KviKvsTreeNodeExpression * pCond,KviKvsTreeNodeInstruction * pUpd,KviKvsTreeNodeInstruction * pLoop);
+ ~KviKvsTreeNodeSpecialCommandFor();
+private:
+ KviKvsTreeNodeInstruction * m_pInitialization; // can be 0
+ KviKvsTreeNodeExpression * m_pCondition; // can be 0
+ KviKvsTreeNodeInstruction * m_pUpdate; // can be 0
+ KviKvsTreeNodeInstruction * m_pLoop; // can be 0
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+
+#endif //!_KVI_KVS_TREENODE_SPECIALCOMMANDFOR_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_specialcommandforeach.cpp b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandforeach.cpp
new file mode 100644
index 00000000..db98e39c
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandforeach.cpp
@@ -0,0 +1,191 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_specialcommandforeach.cpp
+// Created on Fri 07 Nov 2003 11:48:11 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_specialcommandforeach.h"
+#include "kvi_kvs_treenode_data.h"
+#include "kvi_kvs_treenode_datalist.h"
+#include "kvi_kvs_treenode_instruction.h"
+#include "kvi_kvs_treenode_switchlist.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_locale.h"
+
+KviKvsTreeNodeSpecialCommandForeach::KviKvsTreeNodeSpecialCommandForeach(const QChar * pLocation,KviKvsTreeNodeData * pVar,KviKvsTreeNodeDataList * pArgs,KviKvsTreeNodeInstruction * pLoop)
+: KviKvsTreeNodeSpecialCommand(pLocation,"foreach")
+{
+ m_pIterationVariable = pVar;
+ m_pIterationVariable->setParent(this);
+ m_pIterationData = pArgs;
+ m_pIterationData->setParent(this);
+ m_pLoop = pLoop;
+ m_pLoop->setParent(this);
+}
+
+KviKvsTreeNodeSpecialCommandForeach::~KviKvsTreeNodeSpecialCommandForeach()
+{
+ delete m_pIterationVariable;
+ delete m_pIterationData;
+ delete m_pLoop;
+}
+
+void KviKvsTreeNodeSpecialCommandForeach::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Special Command \"foreach\"";
+}
+
+void KviKvsTreeNodeSpecialCommandForeach::dump(const char * prefix)
+{
+ debug("%s SpecialCommandForeach",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pIterationVariable->dump(tmp.utf8().data());
+ m_pIterationData->dump(tmp.utf8().data());
+ m_pLoop->dump(tmp.utf8().data());
+}
+
+bool KviKvsTreeNodeSpecialCommandForeach::execute(KviKvsRunTimeContext * c)
+{
+ KviKvsRWEvaluationResult * v = m_pIterationVariable->evaluateReadWrite(c);
+ if(!v)return false;
+
+ KviKvsVariantList l;
+ l.setAutoDelete(true);
+ if(!m_pIterationData->evaluate(c,&l))
+ {
+ delete v;
+ return false;
+ }
+
+ KviKvsSwitchList swl;
+ if(m_pSwitches)
+ {
+ if(!(m_pSwitches->evaluate(c,&swl)))return false;
+ }
+
+ bool bIncludeEmptyScalars = swl.find('a',"all") != 0;
+
+ for(KviKvsVariant * pArg = l.first();pArg;pArg = l.next())
+ {
+ switch(pArg->type())
+ {
+ case KviKvsVariantData::Array:
+ {
+ unsigned int uCnt = pArg->array()->size();
+ unsigned int idx = 0;
+ while(idx < uCnt)
+ {
+ KviKvsVariant * pOne = pArg->array()->at(idx);
+ if(pOne)
+ {
+ v->result()->copyFrom(*pOne);
+ } else {
+ v->result()->setNothing();
+ }
+
+ if(!m_pLoop->execute(c))
+ {
+ // break allowed!
+
+ if(c->error())
+ {
+ delete v;
+ return false;
+ }
+ // break allowed!
+ if(c->breakPending())
+ {
+ c->handleBreak();
+ delete v;
+ return true;
+ }
+ delete v;
+ return false; // propagate the false return value
+ }
+
+ idx++;
+ }
+ }
+ break;
+ case KviKvsVariantData::Hash:
+ {
+ KviKvsHashIterator it(*(pArg->hash()->dict()));
+ while(KviKvsVariant * pOne = it.current())
+ {
+ v->result()->copyFrom(*pOne);
+
+ if(!m_pLoop->execute(c))
+ {
+ // break allowed!
+
+ if(c->error())
+ {
+ delete v;
+ return false;
+ }
+ // break allowed!
+ if(c->breakPending())
+ {
+ c->handleBreak();
+ delete v;
+ return true;
+ }
+ delete v;
+ return false; // propagate the false return value
+ }
+
+ ++it;
+ }
+ }
+ break;
+ default:
+ if(bIncludeEmptyScalars || (!pArg->isNothing()))
+ {
+ v->result()->copyFrom(*pArg);
+ if(!m_pLoop->execute(c))
+ {
+ // break allowed!
+
+ if(c->error())
+ {
+ delete v;
+ return false;
+ }
+ // break allowed!
+ if(c->breakPending())
+ {
+ c->handleBreak();
+ delete v;
+ return true;
+ }
+ delete v;
+ return false; // propagate the false return value
+ }
+ }
+ break;
+ }
+ }
+ delete v;
+ return true;
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_specialcommandforeach.h b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandforeach.h
new file mode 100644
index 00000000..9f2e765b
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandforeach.h
@@ -0,0 +1,53 @@
+#ifndef _KVI_KVS_TREENODE_SPECIALCOMMANDFOREACH_H_
+#define _KVI_KVS_TREENODE_SPECIALCOMMANDFOREACH_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_specialcommandforeach.h
+// Created on Fri 07 Nov 2003 11:48:11 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_specialcommand.h"
+
+class KviKvsTreeNodeData;
+class KviKvsTreeNodeDataList;
+class KviKvsTreeNodeInstruction;
+class KviKvsRunTimeContext;
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandForeach : public KviKvsTreeNodeSpecialCommand
+{
+public:
+ KviKvsTreeNodeSpecialCommandForeach(const QChar * pLocation,KviKvsTreeNodeData * pVar,KviKvsTreeNodeDataList * pArgs,KviKvsTreeNodeInstruction * pLoop);
+ ~KviKvsTreeNodeSpecialCommandForeach();
+private:
+ KviKvsTreeNodeData * m_pIterationVariable; // can't be zero!
+ KviKvsTreeNodeDataList * m_pIterationData; // can't be zero!
+ KviKvsTreeNodeInstruction * m_pLoop; // can't be zero!
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+
+#endif //!_KVI_KVS_TREENODE_SPECIALCOMMANDFOREACH_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_specialcommandif.cpp b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandif.cpp
new file mode 100644
index 00000000..bc9e31d0
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandif.cpp
@@ -0,0 +1,94 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_specialcommandif.cpp
+// Created on Thu 09 Oct 2003 02:40:00 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_specialcommandif.h"
+#include "kvi_kvs_treenode_expression.h"
+#include "kvi_kvs_treenode_instruction.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_locale.h"
+
+KviKvsTreeNodeSpecialCommandIf::KviKvsTreeNodeSpecialCommandIf(const QChar * pLocation,KviKvsTreeNodeExpression * e,KviKvsTreeNodeInstruction * pIf,KviKvsTreeNodeInstruction * pElse)
+: KviKvsTreeNodeSpecialCommand(pLocation,"if")
+{
+#ifdef COMPILE_NEW_KVS
+ m_pExpression = e;
+ m_pExpression->setParent(this);
+ m_pIfInstruction = pIf;
+ if(pIf)m_pIfInstruction->setParent(this);
+ m_pElseInstruction = pElse;
+ if(pElse)m_pElseInstruction->setParent(this);
+#endif
+}
+
+KviKvsTreeNodeSpecialCommandIf::~KviKvsTreeNodeSpecialCommandIf()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pExpression;
+ if(m_pIfInstruction)delete m_pIfInstruction;
+ if(m_pElseInstruction)delete m_pElseInstruction;
+#endif
+}
+
+void KviKvsTreeNodeSpecialCommandIf::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Special Command \"if\"";
+#endif
+}
+
+void KviKvsTreeNodeSpecialCommandIf::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s SpecialCommandIf",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pExpression->dump(tmp);
+ if(m_pIfInstruction)m_pIfInstruction->dump(tmp);
+ if(m_pElseInstruction)m_pElseInstruction->dump(tmp);
+#endif
+}
+
+bool KviKvsTreeNodeSpecialCommandIf::execute(KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariant v;
+ if(!m_pExpression->evaluateReadOnly(c,&v))return false;
+
+ if(v.asBoolean())
+ {
+ if(m_pIfInstruction)
+ {
+ return m_pIfInstruction->execute(c);
+ }
+ } else {
+ if(m_pElseInstruction)
+ {
+ return m_pElseInstruction->execute(c);
+ }
+ }
+#endif
+ return true;
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_specialcommandif.h b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandif.h
new file mode 100644
index 00000000..bc89af41
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandif.h
@@ -0,0 +1,50 @@
+#ifndef _KVI_KVS_TREENODE_SPECIALCOMMANDIF_H_
+#define _KVI_KVS_TREENODE_SPECIALCOMMANDIF_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_specialcommandif.h
+// Created on Thu 09 Oct 2003 02:40:00 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_specialcommand.h"
+
+class KviKvsTreeNodeExpression;
+class KviKvsTreeNodeInstruction;
+class KviKvsRunTimeContext;
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandIf : public KviKvsTreeNodeSpecialCommand
+{
+public:
+ KviKvsTreeNodeSpecialCommandIf(const QChar * pLocation,KviKvsTreeNodeExpression * e,KviKvsTreeNodeInstruction * pIf,KviKvsTreeNodeInstruction * pElse);
+ ~KviKvsTreeNodeSpecialCommandIf();
+private:
+ KviKvsTreeNodeExpression * m_pExpression; // can't be 0
+ KviKvsTreeNodeInstruction * m_pIfInstruction; // may be 0
+ KviKvsTreeNodeInstruction * m_pElseInstruction; // may be 0
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+#endif //!_KVI_KVS_TREENODE_SPECIALCOMMANDIF_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_specialcommandswitch.cpp b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandswitch.cpp
new file mode 100644
index 00000000..28b7b1f5
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandswitch.cpp
@@ -0,0 +1,349 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_specialcommandswitch.cpp
+// Created on Fri 02 Jan 2004 14:09:00 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_specialcommandswitch.h"
+#include "kvi_kvs_treenode_expression.h"
+#include "kvi_kvs_treenode_instruction.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_locale.h"
+
+#include <qregexp.h>
+
+KviKvsTreeNodeSpecialCommandSwitchLabel::KviKvsTreeNodeSpecialCommandSwitchLabel(const QChar * pLocation)
+: KviKvsTreeNode(pLocation)
+{
+ m_pParameter = 0;
+ m_pInstruction = 0;
+ m_bHasTerminatingBreak = false;
+}
+
+KviKvsTreeNodeSpecialCommandSwitchLabel::~KviKvsTreeNodeSpecialCommandSwitchLabel()
+{
+ if(m_pParameter)delete m_pParameter;
+ if(m_pInstruction)delete m_pInstruction;
+}
+
+void KviKvsTreeNodeSpecialCommandSwitchLabel::setParameter(KviKvsTreeNodeData * pParameter)
+{
+ if(m_pParameter)delete m_pParameter;
+ m_pParameter = pParameter;
+ if(m_pParameter)m_pParameter->setParent(this);
+}
+
+void KviKvsTreeNodeSpecialCommandSwitchLabel::setInstruction(KviKvsTreeNodeInstruction * pInstruction)
+{
+ if(m_pInstruction)delete m_pInstruction;
+ m_pInstruction = pInstruction;
+ if(m_pInstruction)m_pInstruction->setParent(this);
+}
+
+
+
+
+
+KviKvsTreeNodeSpecialCommandSwitchLabelCase::KviKvsTreeNodeSpecialCommandSwitchLabelCase(const QChar * pLocation)
+: KviKvsTreeNodeSpecialCommandSwitchLabel(pLocation)
+{
+}
+
+KviKvsTreeNodeSpecialCommandSwitchLabelCase::~KviKvsTreeNodeSpecialCommandSwitchLabelCase()
+{
+}
+
+void KviKvsTreeNodeSpecialCommandSwitchLabelCase::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Label \"case\" For Special Command \"switch\"";
+}
+
+void KviKvsTreeNodeSpecialCommandSwitchLabelCase::dump(const char * prefix)
+{
+ debug("%s SpecialCommandSwitchLabelCase",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ if(m_pParameter)m_pParameter->dump(tmp.utf8().data());
+ if(m_pInstruction)m_pInstruction->dump(tmp.utf8().data());
+}
+
+bool KviKvsTreeNodeSpecialCommandSwitchLabelCase::execute(KviKvsRunTimeContext * c,KviKvsVariant * pRealParameter)
+{
+ KviKvsVariant v;
+ if(!m_pParameter->evaluateReadOnly(c,&v))return false;
+
+ KviKvsNumber num;
+ if(pRealParameter->asNumber(num))
+ {
+ KviKvsNumber num2;
+ if(!v.asNumber(num2))return true; // a number an a non number can't match
+ if(num.isInteger())
+ {
+ if(num2.isInteger())
+ {
+ if(num.integer() != num2.integer())return true;
+ } else {
+ if(((double)(num.integer())) != num2.real())return true;
+ }
+ } else {
+ if(num2.isInteger())
+ {
+ if(num.real() != ((double)(num2.integer())))return true;
+ } else {
+ if(num.real() != num2.real())return true;
+ }
+ }
+ } else {
+ // string comparision, case insensitive
+ QString reg;
+ v.asString(reg);
+
+ QString val;
+ pRealParameter->asString(val);
+
+ if(reg.lower() != val.lower())return true;
+ }
+
+ if(m_pInstruction)
+ {
+ if(!m_pInstruction->execute(c))return false; // might be a break too
+ }
+ if(m_bHasTerminatingBreak)
+ {
+ c->setBreakPending();
+ return false;
+ }
+ return true;
+}
+
+
+
+
+KviKvsTreeNodeSpecialCommandSwitchLabelMatch::KviKvsTreeNodeSpecialCommandSwitchLabelMatch(const QChar * pLocation)
+: KviKvsTreeNodeSpecialCommandSwitchLabel(pLocation)
+{
+}
+
+KviKvsTreeNodeSpecialCommandSwitchLabelMatch::~KviKvsTreeNodeSpecialCommandSwitchLabelMatch()
+{
+}
+
+void KviKvsTreeNodeSpecialCommandSwitchLabelMatch::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Label \"match\" For Special Command \"switch\"";
+}
+
+
+void KviKvsTreeNodeSpecialCommandSwitchLabelMatch::dump(const char * prefix)
+{
+ debug("%s SpecialCommandSwitchLabelMatch",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ if(m_pParameter)m_pParameter->dump(tmp.utf8().data());
+ if(m_pInstruction)m_pInstruction->dump(tmp.utf8().data());
+}
+
+bool KviKvsTreeNodeSpecialCommandSwitchLabelMatch::execute(KviKvsRunTimeContext * c,KviKvsVariant * pRealParameter)
+{
+ KviKvsVariant v;
+ if(!m_pParameter->evaluateReadOnly(c,&v))return false;
+
+ QString reg;
+ v.asString(reg);
+
+ QRegExp rx(reg,false,true);
+
+ QString val;
+ pRealParameter->asString(val);
+
+ if(!rx.exactMatch(val))return true; // no match
+
+ if(m_pInstruction)
+ {
+ if(!m_pInstruction->execute(c))return false; // might be a break too
+ }
+ if(m_bHasTerminatingBreak)
+ {
+ c->setBreakPending();
+ return false;
+ }
+ return true;
+}
+
+
+
+
+KviKvsTreeNodeSpecialCommandSwitchLabelRegexp::KviKvsTreeNodeSpecialCommandSwitchLabelRegexp(const QChar * pLocation)
+: KviKvsTreeNodeSpecialCommandSwitchLabel(pLocation)
+{
+}
+
+KviKvsTreeNodeSpecialCommandSwitchLabelRegexp::~KviKvsTreeNodeSpecialCommandSwitchLabelRegexp()
+{
+}
+
+void KviKvsTreeNodeSpecialCommandSwitchLabelRegexp::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Label \"regexp\" For Special Command \"switch\"";
+}
+
+
+void KviKvsTreeNodeSpecialCommandSwitchLabelRegexp::dump(const char * prefix)
+{
+ debug("%s SpecialCommandSwitchLabelRegexp",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ if(m_pParameter)m_pParameter->dump(tmp.utf8().data());
+ if(m_pInstruction)m_pInstruction->dump(tmp.utf8().data());
+}
+
+bool KviKvsTreeNodeSpecialCommandSwitchLabelRegexp::execute(KviKvsRunTimeContext * c,KviKvsVariant * pRealParameter)
+{
+ KviKvsVariant v;
+ if(!m_pParameter->evaluateReadOnly(c,&v))return false;
+
+ QString reg;
+ v.asString(reg);
+
+ QRegExp rx(reg,false,false);
+
+ QString val;
+ pRealParameter->asString(val);
+
+ if(!rx.exactMatch(val))return true; // no match
+
+ if(m_pInstruction)
+ {
+ if(!m_pInstruction->execute(c))return false; // might be a break too
+ }
+ if(m_bHasTerminatingBreak)
+ {
+ c->setBreakPending();
+ return false;
+ }
+ return true;
+}
+
+
+
+
+
+
+KviKvsTreeNodeSpecialCommandSwitchLabelDefault::KviKvsTreeNodeSpecialCommandSwitchLabelDefault(const QChar * pLocation)
+: KviKvsTreeNodeSpecialCommandSwitchLabel(pLocation)
+{
+}
+
+KviKvsTreeNodeSpecialCommandSwitchLabelDefault::~KviKvsTreeNodeSpecialCommandSwitchLabelDefault()
+{
+}
+
+void KviKvsTreeNodeSpecialCommandSwitchLabelDefault::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Label \"default\" For Special Command \"switch\"";
+}
+
+
+void KviKvsTreeNodeSpecialCommandSwitchLabelDefault::dump(const char * prefix)
+{
+ debug("%s SpecialCommandSwitchLabelDefault",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ if(m_pInstruction)m_pInstruction->dump(tmp.utf8().data());
+}
+
+bool KviKvsTreeNodeSpecialCommandSwitchLabelDefault::execute(KviKvsRunTimeContext * c,KviKvsVariant * pRealParameter)
+{
+ if(m_pInstruction)
+ {
+ if(!m_pInstruction->execute(c))return false; // might be a break too
+ }
+ if(m_bHasTerminatingBreak)
+ {
+ c->setBreakPending();
+ return false;
+ }
+ return true;
+}
+
+
+
+
+KviKvsTreeNodeSpecialCommandSwitch::KviKvsTreeNodeSpecialCommandSwitch(const QChar * pLocation,KviKvsTreeNodeExpression * e)
+: KviKvsTreeNodeSpecialCommand(pLocation,"switch")
+{
+ m_pExpression = e;
+ m_pExpression->setParent(this);
+ m_pLabels = new KviPointerList<KviKvsTreeNodeSpecialCommandSwitchLabel>;
+ m_pLabels->setAutoDelete(true);
+}
+
+KviKvsTreeNodeSpecialCommandSwitch::~KviKvsTreeNodeSpecialCommandSwitch()
+{
+ delete m_pExpression;
+ delete m_pLabels;
+}
+
+void KviKvsTreeNodeSpecialCommandSwitch::addLabel(KviKvsTreeNodeSpecialCommandSwitchLabel * l)
+{
+ m_pLabels->append(l);
+ l->setParent(this);
+}
+
+void KviKvsTreeNodeSpecialCommandSwitch::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Special Command \"switch\"";
+}
+
+
+void KviKvsTreeNodeSpecialCommandSwitch::dump(const char * prefix)
+{
+ debug("%s SpecialCommandSwitch",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pExpression->dump(tmp.utf8().data());
+ for(KviKvsTreeNodeSpecialCommandSwitchLabel * l = m_pLabels->first();l;l = m_pLabels->next())
+ l->dump(tmp.utf8().data());
+}
+
+bool KviKvsTreeNodeSpecialCommandSwitch::execute(KviKvsRunTimeContext * c)
+{
+ KviKvsVariant v;
+ if(!m_pExpression->evaluateReadOnly(c,&v))return false;
+
+ for(KviKvsTreeNodeSpecialCommandSwitchLabel * l = m_pLabels->first();l;l = m_pLabels->next())
+ {
+ if(!l->execute(c,&v))
+ {
+ if(c->error())return false;
+ // break ?
+ if(c->breakPending())
+ {
+ c->handleBreak();
+ return true;
+ }
+ return false;
+ }
+ }
+ return true;
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_specialcommandswitch.h b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandswitch.h
new file mode 100644
index 00000000..ecad6e25
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandswitch.h
@@ -0,0 +1,117 @@
+#ifndef _KVI_KVS_TREENODE_SPECIALCOMMANDSWITCH_H_
+#define _KVI_KVS_TREENODE_SPECIALCOMMANDSWITCH_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_specialcommandswitch.h
+// Created on Fri 02 Jan 2004 13:54:00 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode.h"
+#include "kvi_kvs_treenode_specialcommand.h"
+
+class KviKvsTreeNodeExpression;
+class KviKvsTreeNodeInstruction;
+class KviKvsRunTimeContext;
+class KviKvsVariant;
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandSwitchLabel : public KviKvsTreeNode
+{
+public:
+ KviKvsTreeNodeSpecialCommandSwitchLabel(const QChar * pLocation);
+ ~KviKvsTreeNodeSpecialCommandSwitchLabel();
+protected:
+ KviKvsTreeNodeData * m_pParameter;
+ KviKvsTreeNodeInstruction * m_pInstruction;
+ bool m_bHasTerminatingBreak;
+public:
+ void setParameter(KviKvsTreeNodeData * pParameter);
+ void setInstruction(KviKvsTreeNodeInstruction * pInstruction);
+ void setTerminatingBreak(bool b){ m_bHasTerminatingBreak = b; };
+ virtual bool execute(KviKvsRunTimeContext * c,KviKvsVariant * pRealParameter) = 0;
+};
+
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandSwitchLabelCase : public KviKvsTreeNodeSpecialCommandSwitchLabel
+{
+public:
+ KviKvsTreeNodeSpecialCommandSwitchLabelCase(const QChar * pLocation);
+ ~KviKvsTreeNodeSpecialCommandSwitchLabelCase();
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c,KviKvsVariant * pRealParameter);
+};
+
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandSwitchLabelMatch : public KviKvsTreeNodeSpecialCommandSwitchLabel
+{
+public:
+ KviKvsTreeNodeSpecialCommandSwitchLabelMatch(const QChar * pLocation);
+ ~KviKvsTreeNodeSpecialCommandSwitchLabelMatch();
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c,KviKvsVariant * pRealParameter);
+};
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandSwitchLabelRegexp : public KviKvsTreeNodeSpecialCommandSwitchLabel
+{
+public:
+ KviKvsTreeNodeSpecialCommandSwitchLabelRegexp(const QChar * pLocation);
+ ~KviKvsTreeNodeSpecialCommandSwitchLabelRegexp();
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c,KviKvsVariant * pRealParameter);
+};
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandSwitchLabelDefault : public KviKvsTreeNodeSpecialCommandSwitchLabel
+{
+public:
+ KviKvsTreeNodeSpecialCommandSwitchLabelDefault(const QChar * pLocation);
+ ~KviKvsTreeNodeSpecialCommandSwitchLabelDefault();
+public:
+ virtual void dump(const char * prefix);
+ virtual void contextDescription(QString &szBuffer);
+ virtual bool execute(KviKvsRunTimeContext * c,KviKvsVariant * pRealParameter);
+};
+
+
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandSwitch : public KviKvsTreeNodeSpecialCommand
+{
+public:
+ KviKvsTreeNodeSpecialCommandSwitch(const QChar * pLocation,KviKvsTreeNodeExpression * e);
+ ~KviKvsTreeNodeSpecialCommandSwitch();
+private:
+ KviKvsTreeNodeExpression * m_pExpression; // can't be 0
+ KviPointerList<KviKvsTreeNodeSpecialCommandSwitchLabel> * m_pLabels; //can't be 0
+public:
+ void addLabel(KviKvsTreeNodeSpecialCommandSwitchLabel * l);
+ bool isEmpty(){ return m_pLabels->isEmpty(); };
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+#endif //!_KVI_KVS_TREENODE_SPECIALCOMMANDSWITCH_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_specialcommandunset.cpp b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandunset.cpp
new file mode 100644
index 00000000..be7c5df2
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandunset.cpp
@@ -0,0 +1,74 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_specialcommandunset.cpp
+// Created on Thu 14 Apr 2005 02:44:00 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_specialcommandunset.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_kvs_rwevaluationresult.h"
+#include "kvi_locale.h"
+
+KviKvsTreeNodeSpecialCommandUnset::KviKvsTreeNodeSpecialCommandUnset(const QChar * pLocation,KviPointerList<KviKvsTreeNodeVariable> * pVariableList)
+: KviKvsTreeNodeSpecialCommand(pLocation,"unset")
+{
+ m_pVariableList = pVariableList;
+ for(KviKvsTreeNodeVariable * pVar = m_pVariableList->first();pVar;pVar = m_pVariableList->next())
+ {
+ pVar->setParent(this);
+ }
+}
+
+KviKvsTreeNodeSpecialCommandUnset::~KviKvsTreeNodeSpecialCommandUnset()
+{
+ delete m_pVariableList;
+}
+
+void KviKvsTreeNodeSpecialCommandUnset::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Special Command \"unset\"";
+}
+
+void KviKvsTreeNodeSpecialCommandUnset::dump(const char * prefix)
+{
+ debug("%s SpecialCommandUnset",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ for(KviKvsTreeNodeVariable * pVar = m_pVariableList->first();pVar;pVar = m_pVariableList->next())
+ {
+ pVar->dump(tmp.utf8().data());
+ }
+}
+
+bool KviKvsTreeNodeSpecialCommandUnset::execute(KviKvsRunTimeContext * c)
+{
+ for(KviKvsTreeNodeVariable * pVar = m_pVariableList->first();pVar;pVar = m_pVariableList->next())
+ {
+ KviKvsRWEvaluationResult * r = pVar->evaluateReadWrite(c);
+ if(!r)return false;
+ r->result()->setNothing();
+ delete r; // this will remove the data from its container
+ }
+ return true;
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_specialcommandunset.h b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandunset.h
new file mode 100644
index 00000000..3d125065
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandunset.h
@@ -0,0 +1,47 @@
+#ifndef _KVI_KVS_TREENODE_SPECIALCOMMANDUNSET_H_
+#define _KVI_KVS_TREENODE_SPECIALCOMMANDUNSET_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_specialcommandunset.h
+// Created on Thu 14 Apr 2005 02:44:00 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_specialcommand.h"
+#include "kvi_kvs_treenode_variable.h"
+
+class KviKvsRunTimeContext;
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandUnset : public KviKvsTreeNodeSpecialCommand
+{
+public:
+ KviKvsTreeNodeSpecialCommandUnset(const QChar * pLocation,KviPointerList<KviKvsTreeNodeVariable> * pVarList);
+ ~KviKvsTreeNodeSpecialCommandUnset();
+private:
+ KviPointerList<KviKvsTreeNodeVariable> * m_pVariableList;
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+#endif //!_KVI_KVS_TREENODE_SPECIALCOMMANDUNSET_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_specialcommandwhile.cpp b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandwhile.cpp
new file mode 100644
index 00000000..377921df
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandwhile.cpp
@@ -0,0 +1,97 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_specialcommandwhile.cpp
+// Created on Thu 06 Nov 2003 11:58:43 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_specialcommandwhile.h"
+#include "kvi_kvs_treenode_expression.h"
+#include "kvi_kvs_treenode_instruction.h"
+#include "kvi_kvs_runtimecontext.h"
+#include "kvi_locale.h"
+
+KviKvsTreeNodeSpecialCommandWhile::KviKvsTreeNodeSpecialCommandWhile(const QChar * pLocation,KviKvsTreeNodeExpression * e,KviKvsTreeNodeInstruction * i)
+: KviKvsTreeNodeSpecialCommand(pLocation,"while")
+{
+#ifdef COMPILE_NEW_KVS
+ m_pExpression = e;
+ m_pExpression->setParent(this);
+ m_pInstruction = i;
+ if(i)m_pInstruction->setParent(this);
+#endif
+}
+
+KviKvsTreeNodeSpecialCommandWhile::~KviKvsTreeNodeSpecialCommandWhile()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pExpression;
+ if(m_pInstruction)delete m_pInstruction;
+#endif
+}
+
+void KviKvsTreeNodeSpecialCommandWhile::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Special Command \"while\"";
+#endif
+}
+
+void KviKvsTreeNodeSpecialCommandWhile::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s SpecialCommandWhile",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pExpression->dump(tmp);
+ if(m_pInstruction)m_pInstruction->dump(tmp);
+#endif
+}
+
+bool KviKvsTreeNodeSpecialCommandWhile::execute(KviKvsRunTimeContext * c)
+{
+#ifdef COMPILE_NEW_KVS
+ for(;;)
+ {
+ KviKvsVariant v;
+ if(!m_pExpression->evaluateReadOnly(c,&v))return false;
+
+ if(!v.asBoolean())break;
+
+ if(m_pInstruction)
+ {
+ if(!m_pInstruction->execute(c))
+ {
+ if(c->error())return false;
+
+ if(c->breakPending())
+ {
+ c->handleBreak();
+ return true;
+ }
+ return false;
+ }
+ }
+ }
+#endif
+ return true;
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_specialcommandwhile.h b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandwhile.h
new file mode 100644
index 00000000..87b3b902
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_specialcommandwhile.h
@@ -0,0 +1,51 @@
+#ifndef _KVI_KVS_TREENODE_SPECIALCOMMANDWHILE_H_
+#define _KVI_KVS_TREENODE_SPECIALCOMMANDWHILE_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_specialcommandwhile.h
+// Created on Thu 06 Nov 2003 11:58:43 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_specialcommand.h"
+
+class KviKvsTreeNodeExpression;
+class KviKvsTreeNodeInstruction;
+class KviKvsRunTimeContext;
+
+class KVIRC_API KviKvsTreeNodeSpecialCommandWhile : public KviKvsTreeNodeSpecialCommand
+{
+public:
+ KviKvsTreeNodeSpecialCommandWhile(const QChar * pLocation,KviKvsTreeNodeExpression * e,KviKvsTreeNodeInstruction * i);
+ ~KviKvsTreeNodeSpecialCommandWhile();
+private:
+ KviKvsTreeNodeExpression * m_pExpression; // can't be 0
+ KviKvsTreeNodeInstruction * m_pInstruction; // may be 0
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+
+#endif //!_KVI_KVS_TREENODE_SPECIALCOMMANDWHILE_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_stringcast.cpp b/src/kvirc/kvs/kvi_kvs_treenode_stringcast.cpp
new file mode 100644
index 00000000..8c4f76c9
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_stringcast.cpp
@@ -0,0 +1,67 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_stringcast.cpp
+// Created on Mon 26 Jun 2006 15:17:33 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2006 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_stringcast.h"
+#include "kvi_qstring.h"
+
+KviKvsTreeNodeStringCast::KviKvsTreeNodeStringCast(const QChar * pLocation,KviKvsTreeNodeData * pChildData)
+: KviKvsTreeNodeData(pLocation)
+{
+ m_pChildData = pChildData;
+ m_pChildData->setParent(this);
+}
+
+
+KviKvsTreeNodeStringCast::~KviKvsTreeNodeStringCast()
+{
+ delete m_pChildData;
+}
+
+bool KviKvsTreeNodeStringCast::evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+ if(!m_pChildData->evaluateReadOnly(c,pBuffer))return false;
+ if(!pBuffer->isString())
+ {
+ QString tmp;
+ pBuffer->asString(tmp);
+ pBuffer->setString(tmp);
+ }
+ return true;
+}
+
+void KviKvsTreeNodeStringCast::contextDescription(QString &szBuffer)
+{
+ szBuffer = "String Cast";
+}
+
+void KviKvsTreeNodeStringCast::dump(const char * prefix)
+{
+ debug("%s StringCast",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pChildData->dump(tmp.utf8().data());
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_stringcast.h b/src/kvirc/kvs/kvi_kvs_treenode_stringcast.h
new file mode 100644
index 00000000..af537f9a
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_stringcast.h
@@ -0,0 +1,45 @@
+#ifndef _KVI_KVS_TREENODE_STRINGCAST_H_
+#define _KVI_KVS_TREENODE_STRINGCAST_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_stringcast.h
+// Created on Mon 26 Jun 2006 15:17:33 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2006 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_kvs_treenode_data.h"
+
+class KVIRC_API KviKvsTreeNodeStringCast : public KviKvsTreeNodeData
+{
+public:
+ KviKvsTreeNodeStringCast(const QChar * pLocation,KviKvsTreeNodeData * pChildData);
+ ~KviKvsTreeNodeStringCast();
+protected:
+ KviKvsTreeNodeData * m_pChildData;
+public:
+ virtual bool evaluateReadOnly(KviKvsRunTimeContext * c,KviKvsVariant * pBuffer);
+ virtual void contextDescription(QString &szBuffer);
+
+ virtual void dump(const char * prefix);
+};
+
+
+#endif //!_KVI_KVS_TREENODE_STRINGCAST_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_switchlist.cpp b/src/kvirc/kvs/kvi_kvs_treenode_switchlist.cpp
new file mode 100644
index 00000000..c821529c
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_switchlist.cpp
@@ -0,0 +1,170 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_switchlist.cpp
+// Created on Tue 07 Oct 2003 02:06:53 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_switchlist.h"
+#include "kvi_kvs_runtimecontext.h"
+
+KviKvsTreeNodeSwitchList::KviKvsTreeNodeSwitchList(const QChar * pLocation)
+: KviKvsTreeNode(pLocation)
+{
+ m_pShortSwitchDict = 0;
+ m_pLongSwitchDict = 0;
+}
+
+KviKvsTreeNodeSwitchList::~KviKvsTreeNodeSwitchList()
+{
+ if(m_pShortSwitchDict)delete m_pShortSwitchDict;
+ if(m_pLongSwitchDict)delete m_pLongSwitchDict;
+}
+
+void KviKvsTreeNodeSwitchList::contextDescription(QString &szBuffer)
+{
+ szBuffer = "Switch List Evaluation";
+}
+
+
+void KviKvsTreeNodeSwitchList::dump(const char * prefix)
+{
+ debug("%s SwitchList",prefix);
+ if(m_pShortSwitchDict)
+ {
+ KviPointerHashTableIterator<int,KviKvsTreeNodeData> it(*m_pShortSwitchDict);
+ while(it.current())
+ {
+ QString tmp = prefix;
+ tmp.append(" Sw(");
+ QChar c((unsigned short)it.currentKey());
+ tmp.append(c);
+ tmp.append("): ");
+ it.current()->dump(tmp.utf8().data());
+ ++it;
+ }
+ }
+ if(m_pLongSwitchDict)
+ {
+ KviPointerHashTableIterator<QString,KviKvsTreeNodeData> it(*m_pLongSwitchDict);
+ while(it.current())
+ {
+ QString tmp = prefix;
+ tmp.append(" Sw(");
+ tmp.append(it.currentKey());
+ tmp.append("): ");
+ it.current()->dump(tmp.utf8().data());
+ ++it;
+ }
+ }
+}
+
+void KviKvsTreeNodeSwitchList::addShort(int iShortKey,KviKvsTreeNodeData * p)
+{
+ if(!m_pShortSwitchDict)
+ {
+ m_pShortSwitchDict = new KviPointerHashTable<int,KviKvsTreeNodeData>(11);
+ m_pShortSwitchDict->setAutoDelete(true);
+ }
+
+ m_pShortSwitchDict->replace(iShortKey,p);
+ p->setParent(this);
+}
+
+void KviKvsTreeNodeSwitchList::addLong(const QString &szLongKey,KviKvsTreeNodeData * p)
+{
+ if(!m_pLongSwitchDict)
+ {
+ m_pLongSwitchDict = new KviPointerHashTable<QString,KviKvsTreeNodeData>(11);
+ m_pLongSwitchDict->setAutoDelete(true);
+ }
+
+ m_pLongSwitchDict->replace(szLongKey,p);
+ p->setParent(this);
+}
+
+
+bool KviKvsTreeNodeSwitchList::evaluate(KviKvsRunTimeContext * c,KviKvsSwitchList * pSwList)
+{
+ pSwList->clear();
+
+ if(m_pShortSwitchDict)
+ {
+ KviPointerHashTableIterator<int,KviKvsTreeNodeData> it(*m_pShortSwitchDict);
+ while(KviKvsTreeNodeData * d = it.current())
+ {
+ KviKvsVariant * v = new KviKvsVariant();
+ if(!d->evaluateReadOnly(c,v))
+ {
+ delete v;
+ return false;
+ }
+ pSwList->addShort(it.currentKey(),v);
+ ++it;
+ }
+ }
+ if(m_pLongSwitchDict)
+ {
+ KviPointerHashTableIterator<QString,KviKvsTreeNodeData> it(*m_pLongSwitchDict);
+ while(KviKvsTreeNodeData * d = it.current())
+ {
+ KviKvsVariant * v = new KviKvsVariant();
+ if(!d->evaluateReadOnly(c,v))
+ {
+ delete v;
+ return false;
+ }
+ pSwList->addLong(it.currentKey(),v);
+ ++it;
+ }
+ }
+ return true;
+}
+
+KviKvsTreeNodeData * KviKvsTreeNodeSwitchList::getStandardRebindingSwitch()
+{
+ KviKvsTreeNodeData * d;
+ if(m_pShortSwitchDict)
+ {
+ d = m_pShortSwitchDict->find('r');
+ if(d)
+ {
+ m_pShortSwitchDict->setAutoDelete(false);
+ m_pShortSwitchDict->remove('r');
+ m_pShortSwitchDict->setAutoDelete(true);
+ return d;
+ }
+ }
+ if(m_pLongSwitchDict)
+ {
+ d = m_pLongSwitchDict->find("rebind");
+ if(d)
+ {
+ m_pLongSwitchDict->setAutoDelete(false);
+ m_pLongSwitchDict->remove("rebind");
+ m_pLongSwitchDict->setAutoDelete(true);
+ return d;
+ }
+ }
+ return 0;
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_switchlist.h b/src/kvirc/kvs/kvi_kvs_treenode_switchlist.h
new file mode 100644
index 00000000..9e6510a4
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_switchlist.h
@@ -0,0 +1,61 @@
+#ifndef _KVI_KVS_TREENODE_SWITCHLIST_H_
+#define _KVI_KVS_TREENODE_SWITCHLIST_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_switchlist.h
+// Created on Tue 07 Oct 2003 02:06:53 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+
+#include "kvi_pointerhashtable.h"
+#include "kvi_pointerhashtable.h"
+
+#include "kvi_kvs_treenode_base.h"
+#include "kvi_kvs_treenode_data.h"
+#include "kvi_kvs_switchlist.h"
+
+class KviKvsRunTimeContext;
+
+class KVIRC_API KviKvsTreeNodeSwitchList : public KviKvsTreeNode
+{
+public:
+ KviKvsTreeNodeSwitchList(const QChar * pLocation);
+ ~KviKvsTreeNodeSwitchList();
+public:
+ KviPointerHashTable<int,KviKvsTreeNodeData> * m_pShortSwitchDict;
+ KviPointerHashTable<QString,KviKvsTreeNodeData> *m_pLongSwitchDict;
+public:
+ void addShort(int iShortKey,KviKvsTreeNodeData * p);
+ void addLong(const QString &szLongKey,KviKvsTreeNodeData * p);
+ bool isEmpty(){ return (m_pShortSwitchDict == 0) && (m_pLongSwitchDict == 0); };
+ virtual void dump(const char * prefix);
+ virtual void contextDescription(QString &szBuffer);
+
+ KviKvsTreeNodeData * getStandardRebindingSwitch();
+
+ bool evaluate(KviKvsRunTimeContext * c,KviKvsSwitchList * pSwList);
+};
+
+
+
+#endif //!_KVI_KVS_TREENODE_SWITCHLIST_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_thisobjectfunctioncall.cpp b/src/kvirc/kvs/kvi_kvs_treenode_thisobjectfunctioncall.cpp
new file mode 100644
index 00000000..6f3e7578
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_thisobjectfunctioncall.cpp
@@ -0,0 +1,73 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_thisobjectfunctioncall.cpp
+// Created on Tue 07 Oct 2003 03:28:10 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_thisobjectfunctioncall.h"
+#include "kvi_kvs_object.h"
+
+
+KviKvsTreeNodeThisObjectFunctionCall::KviKvsTreeNodeThisObjectFunctionCall(const QChar * pLocation,const QString &szFncName,KviKvsTreeNodeDataList * pParams)
+: KviKvsTreeNodeObjectFunctionCall(pLocation,szFncName,pParams)
+{
+}
+
+KviKvsTreeNodeThisObjectFunctionCall::~KviKvsTreeNodeThisObjectFunctionCall()
+{
+}
+
+void KviKvsTreeNodeThisObjectFunctionCall::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "\"This\" Object Function Call \"";
+ szBuffer += m_szFunctionName;
+ szBuffer += "\"";
+#endif
+}
+
+void KviKvsTreeNodeThisObjectFunctionCall::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s ThisObjectFunctionCall(%s)",prefix,m_szFunctionName.utf8().data());
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pParams->dump(tmp.utf8().data());
+#endif
+}
+
+
+bool KviKvsTreeNodeThisObjectFunctionCall::evaluateReadOnlyInObjectScope(KviKvsObject * o,KviKvsRunTimeContext * c,KviKvsVariant * pBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ KviKvsVariantList l;
+ if(!m_pParams->evaluate(c,&l))return false;
+ pBuffer->setNothing();
+ c->setDefaultReportLocation(this);
+ return o->callFunction(c->thisObject(),m_szFunctionName,QString::null,c,pBuffer,&l);
+#else
+ return false;
+#endif
+}
+
+
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_thisobjectfunctioncall.h b/src/kvirc/kvs/kvi_kvs_treenode_thisobjectfunctioncall.h
new file mode 100644
index 00000000..2b245f50
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_thisobjectfunctioncall.h
@@ -0,0 +1,49 @@
+#ifndef _KVI_KVS_TREENODE_THISOBJECTFUNCTIONCALL_H_
+#define _KVI_KVS_TREENODE_THISOBJECTFUNCTIONCALL_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_thisobjectfunctioncall.h
+// Created on Tue 07 Oct 2003 03:28:10 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_datalist.h"
+#include "kvi_kvs_treenode_objectfunctioncall.h"
+
+
+class KviKvsObject;
+class KviKvsRunTimeContext;
+class KviKvsVariant;
+
+class KVIRC_API KviKvsTreeNodeThisObjectFunctionCall : public KviKvsTreeNodeObjectFunctionCall
+{
+public:
+ KviKvsTreeNodeThisObjectFunctionCall(const QChar * pLocation,const QString &szFncName,KviKvsTreeNodeDataList * pParams);
+ ~KviKvsTreeNodeThisObjectFunctionCall();
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool evaluateReadOnlyInObjectScope(KviKvsObject * o,KviKvsRunTimeContext * c,KviKvsVariant * pBuffer);
+};
+
+
+#endif //!_KVI_KVS_TREENODE_THISOBJECTFUNCTIONCALL_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_variable.cpp b/src/kvirc/kvs/kvi_kvs_treenode_variable.cpp
new file mode 100644
index 00000000..2d0f56e6
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_variable.cpp
@@ -0,0 +1,54 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_variable.cpp
+// Created on Thu 16 Oct 2003 22:34:59 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_variable.h"
+
+KviKvsTreeNodeVariable::KviKvsTreeNodeVariable(const QChar * pLocation,const QString &szIdentifier)
+: KviKvsTreeNodeData(pLocation)
+{
+#ifdef COMPILE_NEW_KVS
+ m_szIdentifier = szIdentifier;
+#endif
+}
+
+KviKvsTreeNodeVariable::~KviKvsTreeNodeVariable()
+{
+}
+
+bool KviKvsTreeNodeVariable::isReadOnly()
+{
+ return false;
+}
+
+bool KviKvsTreeNodeVariable::canEvaluateInObjectScope()
+{
+ return false;
+}
+
+bool KviKvsTreeNodeVariable::canEvaluateToObjectReference()
+{
+ return true;
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_variable.h b/src/kvirc/kvs/kvi_kvs_treenode_variable.h
new file mode 100644
index 00000000..7368e680
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_variable.h
@@ -0,0 +1,47 @@
+#ifndef _KVI_KVS_TREENODE_VARIABLE_H_
+#define _KVI_KVS_TREENODE_VARIABLE_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_variable.h
+// Created on Thu 16 Oct 2003 22:34:59 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_treenode_data.h"
+#include "kvi_kvs_variant.h"
+
+class KviKvsRunTimeContext;
+
+class KVIRC_API KviKvsTreeNodeVariable : public KviKvsTreeNodeData
+{
+public:
+ KviKvsTreeNodeVariable(const QChar * pLocation,const QString &szIdentifier);
+ ~KviKvsTreeNodeVariable();
+protected:
+ QString m_szIdentifier;
+protected:
+ virtual bool isReadOnly();
+ virtual bool canEvaluateInObjectScope();
+ virtual bool canEvaluateToObjectReference();
+};
+
+#endif //!_KVI_KVS_TREENODE_VARIABLE_H_
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_voidfunctioncall.cpp b/src/kvirc/kvs/kvi_kvs_treenode_voidfunctioncall.cpp
new file mode 100644
index 00000000..0a788ef4
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_voidfunctioncall.cpp
@@ -0,0 +1,66 @@
+//=============================================================================
+//
+// File : kvi_kvs_treenode_voidfunctioncall.cpp
+// Created on Thu 09 Oct 2003 01:47:16 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_treenode_voidfunctioncall.h"
+#include "kvi_kvs_runtimecontext.h"
+
+KviKvsTreeNodeVoidFunctionCall::KviKvsTreeNodeVoidFunctionCall(const QChar * pLocation,KviKvsTreeNodeFunctionCall * r)
+: KviKvsTreeNodeInstruction(pLocation)
+{
+#ifdef COMPILE_NEW_KVS
+ m_pFunctionCall = r;
+#endif
+}
+
+KviKvsTreeNodeVoidFunctionCall::~KviKvsTreeNodeVoidFunctionCall()
+{
+#ifdef COMPILE_NEW_KVS
+ delete m_pFunctionCall;
+#endif
+}
+
+void KviKvsTreeNodeVoidFunctionCall::contextDescription(QString &szBuffer)
+{
+#ifdef COMPILE_NEW_KVS
+ szBuffer = "Void Function Call";
+#endif
+}
+
+void KviKvsTreeNodeVoidFunctionCall::dump(const char * prefix)
+{
+#ifdef COMPILE_NEW_KVS
+ debug("%s VoidFunctionCall",prefix);
+ QString tmp = prefix;
+ tmp.append(" ");
+ m_pFunctionCall->dump(tmp.utf8().data());
+#endif
+}
+
+bool KviKvsTreeNodeVoidFunctionCall::execute(KviKvsRunTimeContext * c)
+{
+ KviKvsVariant v;
+ return m_pFunctionCall->evaluateReadOnly(c,&v);
+}
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_voidfunctioncall.h b/src/kvirc/kvs/kvi_kvs_treenode_voidfunctioncall.h
new file mode 100644
index 00000000..13b08ba4
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_treenode_voidfunctioncall.h
@@ -0,0 +1,47 @@
+#ifndef _KVI_KVS_TREENODE_VOIDFUNCTIONCALL_H_
+#define _KVI_KVS_TREENODE_VOIDFUNCTIONCALL_H_
+//=============================================================================
+//
+// File : kvi_kvs_treenode_voidfunctioncall.h
+// Created on Thu 09 Oct 2003 01:47:16 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include "kvi_kvs_treenode_instruction.h"
+#include "kvi_kvs_treenode_functioncall.h"
+
+class KviKvsRunTimeContext;
+
+class KVIRC_API KviKvsTreeNodeVoidFunctionCall : public KviKvsTreeNodeInstruction
+{
+public:
+ KviKvsTreeNodeVoidFunctionCall(const QChar * pLocation,KviKvsTreeNodeFunctionCall * r);
+ ~KviKvsTreeNodeVoidFunctionCall();
+protected:
+ KviKvsTreeNodeFunctionCall * m_pFunctionCall; // may be scope operator or direct function call
+public:
+ virtual void contextDescription(QString &szBuffer);
+ virtual void dump(const char * prefix);
+ virtual bool execute(KviKvsRunTimeContext * c);
+};
+
+#endif //!_KVI_KVS_TREENODE_VOIDFUNCTIONCALL_H_
diff --git a/src/kvirc/kvs/kvi_kvs_types.h b/src/kvirc/kvs/kvi_kvs_types.h
new file mode 100644
index 00000000..bf2b04b1
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_types.h
@@ -0,0 +1,38 @@
+#ifndef _KVI_KVS_TYPES_H_
+#define _KVI_KVS_TYPES_H_
+//=============================================================================
+//
+// File : kvi_kvs_types.h
+// Creation date : Sun 29 May 2005 05.25 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_inttypes.h"
+
+// we want to have 64 bit arithmetics, if possible...
+
+typedef void * kvs_hobject_t;
+typedef kvi_i64_t kvs_int_t;
+typedef kvi_u64_t kvs_uint_t;
+typedef double kvs_real_t;
+
+
+#endif //!_KVI_KVS_TYPES_H_
diff --git a/src/kvirc/kvs/kvi_kvs_useraction.cpp b/src/kvirc/kvs/kvi_kvs_useraction.cpp
new file mode 100644
index 00000000..47a342a3
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_useraction.cpp
@@ -0,0 +1,277 @@
+//=============================================================================
+//
+// File : kvi_kvs_useraction.cpp
+// Created on Tue 07 Dec 2004 02:00:24 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_useraction.h"
+#include "kvi_kvs_script.h"
+#include "kvi_config.h"
+#include "kvi_iconmanager.h"
+#include "kvi_actionmanager.h"
+#include "kvi_kvs_script.h"
+#include "kvi_window.h"
+#include "kvi_cmdformatter.h"
+
+KviKvsUserAction::KviKvsUserAction(QObject * pParent,
+ const QString &szName,
+ const QString &szScriptCode,
+ const QString &szVisibleNameCode,
+ const QString &szDescriptionCode,
+ const QString &szCategory,
+ const QString &szBigIcon,
+ const QString &szSmallIcon,
+ unsigned int uFlags,
+ const QString &szKeySequence)
+ : KviKvsAction(pParent,szName,szScriptCode,szVisibleNameCode,szDescriptionCode,0,szBigIcon,0,uFlags,szKeySequence)
+{
+ m_szSmallIcon = szSmallIcon;
+
+ QString szKvsName = "action::";
+ szKvsName += szName;
+
+ QString szTmp = szKvsName;
+ szTmp += "::description";
+ m_pDescriptionScript = new KviKvsScript(szTmp,szDescriptionCode,KviKvsScript::Parameter);
+
+ szTmp = szKvsName;
+ szTmp += "::label";
+ m_pVisibleNameScript = new KviKvsScript(szTmp,szVisibleNameCode,KviKvsScript::Parameter);
+
+ m_szCategory = szCategory;
+ m_pCategory = KviActionManager::instance()->category(szCategory);
+}
+
+
+KviKvsUserAction::KviKvsUserAction(QObject * pParent)
+ : KviKvsAction(pParent,QString::null,QString::null,QString::null,QString::null)
+{
+ // needs loading!
+ m_pDescriptionScript = 0;
+ m_pVisibleNameScript = 0;
+}
+
+KviKvsUserAction::~KviKvsUserAction()
+{
+ if(m_pDescriptionScript)delete m_pDescriptionScript;
+ if(m_pVisibleNameScript)delete m_pVisibleNameScript;
+}
+
+KviKvsUserAction * KviKvsUserAction::createInstance(QObject * pParent,
+ const QString &szName,
+ const QString &szScriptCode,
+ const QString &szVisibleNameCode,
+ const QString &szDescriptionCode,
+ const QString &szCategory,
+ const QString &szBigIcon,
+ const QString &szSmallIcon,
+ unsigned int uFlags,
+ const QString &szKeySequence)
+{
+ return new KviKvsUserAction(pParent,szName,szScriptCode,szVisibleNameCode,szDescriptionCode,szCategory,szBigIcon,szSmallIcon,uFlags,szKeySequence);
+}
+
+
+void KviKvsUserAction::exportToKvs(QString &szBuffer)
+{
+ exportToKvs(szBuffer,m_szName,scriptCode(),visibleNameCode(),descriptionCode(),m_szCategory,m_szBigIcon,m_szSmallIcon,m_uFlags,m_szKeySequence);
+}
+
+void KviKvsUserAction::exportToKvs(QString &szBuffer,
+ const QString &szName,
+ const QString &szScriptCode,
+ const QString &szVisibleName,
+ const QString &szDescription,
+ const QString &szCategory,
+ const QString &szBigIcon,
+ const QString &szSmallIcon,
+ unsigned int uFlags,
+ const QString &szKeySequence)
+{
+ szBuffer += "action.create";
+ if(uFlags & NeedsContext)
+ {
+ szBuffer += " -i";
+ if(uFlags & NeedsConnection)
+ {
+ szBuffer += " -c";
+ if(uFlags & EnableAtLogin)szBuffer += " -l";
+ }
+ }
+ if(uFlags & InternalWindowMask)
+ {
+ QString szWins;
+ if(uFlags & WindowConsole)szWins += "x";
+ if(uFlags & WindowChannel)szWins += "c";
+ if(uFlags & WindowQuery)szWins += "q";
+ if(uFlags & WindowDccChat)szWins += "d";
+ szBuffer += " -w=";
+ szBuffer += szWins;
+ if(uFlags & (WindowConsole | WindowChannel | WindowQuery))
+ {
+ if(uFlags & WindowOnlyIfUsersSelected)
+ szBuffer += " -s";
+ }
+ }
+ if(!szCategory.isEmpty())
+ {
+ szBuffer += " -t=";
+ szBuffer += szCategory;
+ }
+ if(!szKeySequence.isEmpty())
+ {
+ szBuffer += " -k=\"";
+ szBuffer += szKeySequence;
+ szBuffer += "\"";
+ }
+ szBuffer += " (\"";
+ szBuffer += szName;
+ szBuffer += "\",";
+ QString tmp = szVisibleName;
+ if(tmp.contains('$'))
+ {
+ szBuffer += tmp;
+ szBuffer += ",";
+ } else {
+ tmp.replace("\"","\\\"");
+ szBuffer += "\"";
+ szBuffer += tmp;
+ szBuffer += "\",";
+ }
+ tmp = szDescription;
+ if(tmp.contains('$'))
+ {
+ szBuffer += tmp;
+ szBuffer += ",\"";
+ } else {
+ tmp.replace("\"","\\\"");
+ szBuffer += "\"";
+ szBuffer += tmp;
+ szBuffer += "\",\"";
+ }
+ szBuffer += szBigIcon;
+ szBuffer += "\",\"";
+ szBuffer += szSmallIcon;
+ szBuffer += "\")\n";
+ tmp = szScriptCode;
+ KviCommandFormatter::blockFromBuffer(tmp);
+ szBuffer += tmp;
+ szBuffer += "\n";
+}
+
+
+// FIXME: Cache this stuff ??
+
+const QString & KviKvsUserAction::visibleName()
+{
+ if(!m_pVisibleNameScript)return m_szVisibleName;
+ if(!m_pVisibleNameScript->run(g_pActiveWindow,0,m_szVisibleName))m_szVisibleName = m_pVisibleNameScript->code();
+ return m_szVisibleName;
+}
+
+const QString & KviKvsUserAction::description()
+{
+ if(!m_pDescriptionScript)return m_szDescription;
+ if(!m_pDescriptionScript->run(g_pActiveWindow,0,m_szDescription))m_szDescription = m_pDescriptionScript->code();
+ return m_szDescription;
+}
+
+const QString & KviKvsUserAction::visibleNameCode()
+{
+ if(!m_pVisibleNameScript)return m_szVisibleName;
+ return m_pVisibleNameScript->code();
+}
+
+const QString & KviKvsUserAction::descriptionCode()
+{
+ if(!m_pDescriptionScript)return m_szDescription;
+ return m_pDescriptionScript->code();
+}
+
+QPixmap * KviKvsUserAction::smallIcon()
+{
+ return g_pIconManager->getImage(m_szSmallIcon.utf8().data());
+}
+
+bool KviKvsUserAction::isKviUserActionNeverOverrideThis()
+{
+ return true;
+}
+
+bool KviKvsUserAction::load(KviConfig * cfg)
+{
+ m_szName = cfg->group();
+ if(m_szName.isEmpty())return false;
+ m_szVisibleName = cfg->readQStringEntry("VisibleName");
+ if(m_szVisibleName.isEmpty())return false;
+ QString szKvsName = "action::";
+ szKvsName += m_szName;
+ QString szTmp = szKvsName;
+ szTmp += "::label";
+
+ if(m_pVisibleNameScript)delete m_pVisibleNameScript;
+ m_pVisibleNameScript = new KviKvsScript(szTmp,m_szVisibleName,KviKvsScript::Parameter);
+
+ if(m_szVisibleName.isEmpty())return false;
+ m_szDescription = cfg->readQStringEntry("Description");
+ szTmp = szKvsName;
+ szTmp += "::description";
+
+ if(m_pDescriptionScript)delete m_pDescriptionScript;
+ m_pDescriptionScript = new KviKvsScript(szTmp,m_szDescription,KviKvsScript::Parameter);
+
+
+ m_szBigIcon = cfg->readQStringEntry("BigIcon");
+ m_szSmallIcon = cfg->readQStringEntry("SmallIcon");
+ m_szKeySequence = cfg->readQStringEntry("KeySequence");
+ m_szCategory = cfg->readQStringEntry("Category");
+ m_pCategory = KviActionManager::instance()->category(m_szCategory);
+ m_uFlags = cfg->readUIntEntry("Flags",0);
+
+ QString szCode = cfg->readQStringEntry("Code");
+ if(szCode.isEmpty())return false;
+
+ if(m_pScript)delete m_pScript;
+ QString tmp = KVI_KVS_ACTION_SCRIPT_NAME_PREFIX;
+ tmp += m_szName;
+ m_pScript = new KviKvsScript(tmp,szCode);
+
+ return true;
+}
+
+void KviKvsUserAction::save(KviConfig * cfg)
+{
+ cfg->setGroup(m_szName);
+ if(m_pVisibleNameScript)cfg->writeEntry("VisibleName",m_pVisibleNameScript->code());
+ if(m_pDescriptionScript)
+ {
+ if(!m_pDescriptionScript->code().isEmpty())cfg->writeEntry("Description",m_pDescriptionScript->code());
+ }
+ if(!m_szBigIcon.isEmpty())cfg->writeEntry("BigIcon",m_szBigIcon);
+ if(!m_szSmallIcon.isEmpty())cfg->writeEntry("SmallIcon",m_szSmallIcon);
+ if(!m_szCategory.isEmpty())cfg->writeEntry("Category",m_szCategory);
+ if(!m_szKeySequence.isEmpty())cfg->writeEntry("KeySequence",m_szKeySequence);
+ if(m_uFlags != 0)cfg->writeEntry("Flags",m_uFlags);
+ cfg->writeEntry("Code",m_pScript->code());
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_useraction.h b/src/kvirc/kvs/kvi_kvs_useraction.h
new file mode 100644
index 00000000..2edd0337
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_useraction.h
@@ -0,0 +1,97 @@
+#ifndef _KVI_KVS_USERACTION_H_
+#define _KVI_KVS_USERACTION_H_
+//=============================================================================
+//
+// File : kvi_kvs_useraction.h
+// Created on Tue 07 Dec 2004 02:00:24 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_kvs_action.h"
+
+class KviConfig;
+class KviKvsScript;
+
+class KVIRC_API KviKvsUserAction : public KviKvsAction
+{
+ friend class KviActionManager;
+ Q_OBJECT
+public:
+ KviKvsUserAction(QObject * pParent,
+ const QString &szName,
+ const QString &szScriptCode,
+ const QString &szVisibleNameCode,
+ const QString &szDescriptionCode,
+ const QString &szCategory,
+ const QString &szBigIcon,
+ const QString &szSmallIcon,
+ unsigned int uFlags,
+ const QString &szKeySequence = QString::null);
+ KviKvsUserAction(QObject * pParent);
+ ~KviKvsUserAction();
+
+ // Static allocator function.
+ // This MUST be used by the modules to allocate action structures
+ // instead of the new operator.
+ // See kvi_heapobject.cpp for an explaination.
+ static KviKvsUserAction * createInstance(QObject * pParent,
+ const QString &szName,
+ const QString &szScriptCode,
+ const QString &szVisibleNameCode,
+ const QString &szDescriptionCode,
+ const QString &szCategory,
+ const QString &szBigIcon,
+ const QString &szSmallIcon,
+ unsigned int uFlags,
+ const QString &szKeySequence = QString::null);
+ void suicide() { delete this; };
+protected:
+ QString m_szSmallIcon;
+ QString m_szCategory;
+ KviKvsScript * m_pDescriptionScript;
+ KviKvsScript * m_pVisibleNameScript;
+protected:
+ virtual bool isKviUserActionNeverOverrideThis();
+ bool load(KviConfig * cfg);
+ void save(KviConfig * cfg);
+public:
+ virtual const QString & visibleName();
+ virtual const QString & description();
+ const QString & visibleNameCode();
+ const QString & descriptionCode();
+ virtual QPixmap * smallIcon();
+ const QString & category(){ return m_szCategory; };
+ const QString & smallIconString(){ return m_szSmallIcon; };
+ static void exportToKvs(QString &szBuffer,
+ const QString &szName,
+ const QString &szScriptCode,
+ const QString &szVisibleName,
+ const QString &szDescription,
+ const QString &szCategory,
+ const QString &szBigIcon,
+ const QString &szSmallIcon,
+ unsigned int uFlags,
+ const QString &szKeySequence);
+ void exportToKvs(QString &szBuffer);
+};
+
+
+#endif //!_KVI_KVS_USERACTION_H_
diff --git a/src/kvirc/kvs/kvi_kvs_variant.cpp b/src/kvirc/kvs/kvi_kvs_variant.cpp
new file mode 100644
index 00000000..b21fd956
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_variant.cpp
@@ -0,0 +1,1615 @@
+//=============================================================================
+//
+// File : kvi_kvs_variant.cpp
+// Created on Tue 07 Oct 2003 04:01:19 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_variant.h"
+#include "kvi_kvs_arraycast.h"
+#include "kvi_kvs_hash.h"
+#include "kvi_kvs_array.h"
+
+#include <math.h>
+
+KviKvsVariant::KviKvsVariant()
+{
+ m_pData = 0;
+}
+
+KviKvsVariant::KviKvsVariant(QString * pString)
+{
+ m_pData = new KviKvsVariantData;
+ m_pData->m_eType = KviKvsVariantData::String;
+ m_pData->m_uRefs = 1;
+ m_pData->m_u.pString = pString;
+}
+
+KviKvsVariant::KviKvsVariant(const QString &szString)
+{
+ m_pData = new KviKvsVariantData;
+ m_pData->m_eType = KviKvsVariantData::String;
+ m_pData->m_uRefs = 1;
+ m_pData->m_u.pString = new QString(szString);
+}
+
+KviKvsVariant::KviKvsVariant(const char * szString)
+{
+ m_pData = new KviKvsVariantData;
+ m_pData->m_eType = KviKvsVariantData::String;
+ m_pData->m_uRefs = 1;
+ m_pData->m_u.pString = new QString(QString::fromUtf8(szString));
+}
+
+
+KviKvsVariant::KviKvsVariant(KviKvsArray * pArray)
+{
+ m_pData = new KviKvsVariantData;
+ m_pData->m_eType = KviKvsVariantData::Array;
+ m_pData->m_uRefs = 1;
+ m_pData->m_u.pArray = pArray;
+}
+
+KviKvsVariant::KviKvsVariant(KviKvsHash * pHash)
+{
+ m_pData = new KviKvsVariantData;
+ m_pData->m_eType = KviKvsVariantData::Hash;
+ m_pData->m_uRefs = 1;
+ m_pData->m_u.pHash = pHash;
+}
+
+KviKvsVariant::KviKvsVariant(kvs_real_t * pReal)
+{
+ m_pData = new KviKvsVariantData;
+ m_pData->m_eType = KviKvsVariantData::Real;
+ m_pData->m_uRefs = 1;
+ m_pData->m_u.pReal = pReal;
+}
+
+KviKvsVariant::KviKvsVariant(kvs_real_t dReal)
+{
+ m_pData = new KviKvsVariantData;
+ m_pData->m_eType = KviKvsVariantData::Real;
+ m_pData->m_uRefs = 1;
+ m_pData->m_u.pReal = new kvs_real_t;
+ *(m_pData->m_u.pReal) = dReal;
+}
+
+KviKvsVariant::KviKvsVariant(bool bBoolean)
+{
+ m_pData = new KviKvsVariantData;
+ m_pData->m_eType = KviKvsVariantData::Boolean;
+ m_pData->m_uRefs = 1;
+ m_pData->m_u.bBoolean = bBoolean;
+}
+
+KviKvsVariant::KviKvsVariant(kvs_int_t iInteger)
+{
+ m_pData = new KviKvsVariantData;
+ m_pData->m_eType = KviKvsVariantData::Integer;
+ m_pData->m_uRefs = 1;
+ m_pData->m_u.iInteger = iInteger;
+}
+
+KviKvsVariant::KviKvsVariant(kvs_hobject_t hObject)
+{
+ m_pData = new KviKvsVariantData;
+ m_pData->m_eType = KviKvsVariantData::HObject;
+ m_pData->m_uRefs = 1;
+ m_pData->m_u.hObject = hObject;
+}
+
+KviKvsVariant::KviKvsVariant(const KviKvsVariant &v)
+{
+ m_pData = v.m_pData;
+ if(m_pData)m_pData->m_uRefs++;
+}
+
+#define DELETE_VARIANT_CONTENTS \
+ switch(m_pData->m_eType) \
+ { \
+ case KviKvsVariantData::Array: delete m_pData->m_u.pArray; break; \
+ case KviKvsVariantData::Hash: delete m_pData->m_u.pHash; break; \
+ case KviKvsVariantData::String: delete m_pData->m_u.pString; break; \
+ case KviKvsVariantData::Real: delete m_pData->m_u.pReal; break; \
+ default: /* make gcc happy */ break; \
+ }
+
+#define DETACH_CONTENTS \
+ if(m_pData) \
+ { \
+ if(m_pData->m_uRefs <= 1) \
+ { \
+ DELETE_VARIANT_CONTENTS \
+ delete m_pData; \
+ } else { \
+ m_pData->m_uRefs--; \
+ } \
+ }
+
+#define RENEW_VARIANT_DATA \
+ if(m_pData) \
+ { \
+ if(m_pData->m_uRefs > 1) \
+ { \
+ m_pData->m_uRefs--; \
+ m_pData = new KviKvsVariantData; \
+ m_pData->m_uRefs = 1; \
+ } else { \
+ DELETE_VARIANT_CONTENTS \
+ } \
+ } else { \
+ m_pData = new KviKvsVariantData; \
+ m_pData->m_uRefs = 1; \
+ }
+
+KviKvsVariant::~KviKvsVariant()
+{
+ DETACH_CONTENTS
+}
+
+void KviKvsVariant::setString(QString * pString)
+{
+ RENEW_VARIANT_DATA
+ m_pData->m_eType = KviKvsVariantData::String;
+ m_pData->m_u.pString = pString;
+}
+
+void KviKvsVariant::setString(const QString &szString)
+{
+ RENEW_VARIANT_DATA
+ m_pData->m_eType = KviKvsVariantData::String;
+ m_pData->m_u.pString = new QString(szString);
+}
+
+void KviKvsVariant::setReal(kvs_real_t dReal)
+{
+ RENEW_VARIANT_DATA
+ m_pData->m_eType = KviKvsVariantData::Real;
+ m_pData->m_u.pReal = new kvs_real_t;
+ *(m_pData->m_u.pReal) = dReal;
+}
+
+void KviKvsVariant::setHObject(kvs_hobject_t hObject)
+{
+ RENEW_VARIANT_DATA
+ m_pData->m_eType = KviKvsVariantData::HObject;
+ m_pData->m_u.hObject = hObject;
+}
+
+void KviKvsVariant::setBoolean(bool bBoolean)
+{
+ RENEW_VARIANT_DATA
+ m_pData->m_eType = KviKvsVariantData::Boolean;
+ m_pData->m_u.bBoolean = bBoolean;
+}
+
+void KviKvsVariant::setReal(kvs_real_t * pReal)
+{
+ RENEW_VARIANT_DATA
+ m_pData->m_eType = KviKvsVariantData::Real;
+ m_pData->m_u.pReal = pReal;
+}
+
+void KviKvsVariant::setInteger(kvs_int_t iInteger)
+{
+ RENEW_VARIANT_DATA
+ m_pData->m_eType = KviKvsVariantData::Integer;
+ m_pData->m_u.iInteger = iInteger;
+}
+
+void KviKvsVariant::setArray(KviKvsArray * pArray)
+{
+ RENEW_VARIANT_DATA
+ m_pData->m_eType = KviKvsVariantData::Array;
+ m_pData->m_u.pArray = pArray;
+}
+
+void KviKvsVariant::setHash(KviKvsHash * pHash)
+{
+ RENEW_VARIANT_DATA
+ m_pData->m_eType = KviKvsVariantData::Hash;
+ m_pData->m_u.pHash = pHash;
+}
+
+void KviKvsVariant::setNothing()
+{
+ if(m_pData)
+ {
+ if(m_pData->m_uRefs <= 1)
+ {
+ DELETE_VARIANT_CONTENTS
+ delete m_pData;
+ } else {
+ // just detach
+ m_pData->m_uRefs--;
+ }
+ m_pData = 0;
+ }
+}
+
+bool KviKvsVariant::isEmpty() const
+{
+ if(!m_pData)return true;
+ switch(m_pData->m_eType)
+ {
+ case KviKvsVariantData::String: return m_pData->m_u.pString->isEmpty(); break;
+ case KviKvsVariantData::Array: return m_pData->m_u.pArray->isEmpty(); break;
+ case KviKvsVariantData::Hash: return m_pData->m_u.pHash->isEmpty(); break;
+ case KviKvsVariantData::HObject: return m_pData->m_u.hObject == 0; break;
+ default: /* make gcc happy */ break;
+ }
+ return false;
+}
+
+bool KviKvsVariant::asBoolean() const
+{
+ if(!m_pData)return false;
+ switch(m_pData->m_eType)
+ {
+ case KviKvsVariantData::Boolean: return m_pData->m_u.bBoolean; break;
+ case KviKvsVariantData::String:
+ {
+ if(m_pData->m_u.pString->isEmpty())return false;
+ // check integer or real values
+ bool bOk;
+ kvs_int_t iVal = (kvs_int_t)KviQString::toI64(*(m_pData->m_u.pString),&bOk);
+ if(bOk)return iVal;
+ kvs_real_t dVal = m_pData->m_u.pString->toDouble(&bOk);
+ if(bOk)return (dVal != 0.0);
+ // non number, non empty
+ return true;
+ }
+ break;
+ case KviKvsVariantData::Integer: return m_pData->m_u.iInteger; break;
+ case KviKvsVariantData::Real: return *(m_pData->m_u.pReal) != 0.0; break;
+ case KviKvsVariantData::Array: return !(m_pData->m_u.pArray->isEmpty()); break;
+ case KviKvsVariantData::Hash: return !(m_pData->m_u.pHash->isEmpty()); break;
+ case KviKvsVariantData::HObject: return m_pData->m_u.hObject; break;
+ default: /* make gcc happy */ break;
+ }
+ debug("WARNING: invalid variant type %d in KviKvsVariant::asBoolean()",m_pData->m_eType);
+ return false;
+}
+
+bool KviKvsVariant::asHObject(kvs_hobject_t &hObject) const
+{
+ if(!m_pData)
+ {
+ // nothing evaluates to a null object
+ hObject = 0;
+ return true;
+ }
+ switch(m_pData->m_eType)
+ {
+ case KviKvsVariantData::HObject:
+ hObject = m_pData->m_u.hObject;
+ return true;
+ break;
+ case KviKvsVariantData::Integer:
+ if(m_pData->m_u.iInteger == 0)
+ {
+ hObject = 0;
+ return true;
+ }
+ return false;
+ break;
+ case KviKvsVariantData::String:
+ if(*(m_pData->m_u.pString) == "0")
+ {
+ hObject = 0;
+ return true;
+ }
+ return false;
+ break;
+ case KviKvsVariantData::Boolean:
+ if(!(m_pData->m_u.bBoolean))
+ {
+ hObject = 0;
+ return true;
+ }
+ default: /* make gcc happy */ break;
+ }
+ return false;
+}
+
+
+bool KviKvsVariant::asNumber(KviKvsNumber &n) const
+{
+ if(!m_pData)return false;
+
+ if(isInteger())
+ {
+ n.m_u.iInteger = m_pData->m_u.iInteger;
+ n.m_type = KviKvsNumber::Integer;
+ return true;
+ }
+ if(isReal())
+ {
+ n.m_u.dReal = *(m_pData->m_u.pReal);
+ n.m_type = KviKvsNumber::Real;
+ return true;
+ }
+ if(asInteger(n.m_u.iInteger))
+ {
+ n.m_type = KviKvsNumber::Integer;
+ return true;
+ }
+ if(asReal(n.m_u.dReal))
+ {
+ n.m_type = KviKvsNumber::Real;
+ return true;
+ }
+ return false;
+}
+
+
+void KviKvsVariant::castToNumber(KviKvsNumber &n) const
+{
+ if(!m_pData)
+ {
+ n.m_u.iInteger = 0;
+ n.m_type = KviKvsNumber::Integer;
+ return;
+ }
+
+ if(isInteger())
+ {
+ n.m_u.iInteger = m_pData->m_u.iInteger;
+ n.m_type = KviKvsNumber::Integer;
+ return;
+ }
+ if(isReal())
+ {
+ n.m_u.dReal = *(m_pData->m_u.pReal);
+ n.m_type = KviKvsNumber::Real;
+ return;
+ }
+ if(asInteger(n.m_u.iInteger))
+ {
+ n.m_type = KviKvsNumber::Integer;
+ return;
+ }
+ if(asReal(n.m_u.dReal))
+ {
+ n.m_type = KviKvsNumber::Real;
+ return;
+ }
+ castToInteger(n.m_u.iInteger);
+ n.m_type = KviKvsNumber::Integer;
+}
+
+void KviKvsVariant::castToArray(KviKvsArrayCast *c) const
+{
+ if(!m_pData)
+ {
+ c->set(new KviKvsArray(),true);
+ return;
+ }
+
+ switch(m_pData->m_eType)
+ {
+ case KviKvsVariantData::Array:
+ c->set(m_pData->m_u.pArray,false);
+ break;
+ case KviKvsVariantData::Hash:
+ {
+ KviPointerHashTableIterator<QString,KviKvsVariant> it(*(m_pData->m_u.pHash->dict()));
+ KviKvsArray * a = new KviKvsArray();
+ kvs_int_t idx = 0;
+ while(KviKvsVariant * v = it.current())
+ {
+ a->set(idx,new KviKvsVariant(*v));
+ ++it;
+ idx++;
+ }
+ c->set(a,true);
+ }
+ break;
+ default:
+ {
+ // other scalars
+ KviKvsArray * a = new KviKvsArray();
+ a->set(0,new KviKvsVariant(*this));
+ c->set(a,true);
+ }
+ break;
+ }
+}
+
+void KviKvsVariant::convertToArray()
+{
+ if(!m_pData)
+ {
+ setArray(new KviKvsArray());
+ return;
+ }
+
+ switch(m_pData->m_eType)
+ {
+ case KviKvsVariantData::Array:
+ return;
+ break;
+ case KviKvsVariantData::Hash:
+ {
+ KviPointerHashTableIterator<QString,KviKvsVariant> it(*(m_pData->m_u.pHash->dict()));
+ KviKvsArray * a = new KviKvsArray();
+ kvs_int_t idx = 0;
+ while(KviKvsVariant * v = it.current())
+ {
+ a->set(idx,new KviKvsVariant(*v));
+ ++it;
+ idx++;
+ }
+ setArray(a);
+ }
+ break;
+ default:
+ {
+ // other scalars
+ KviKvsArray * a = new KviKvsArray();
+ a->set(0,new KviKvsVariant(*this));
+ setArray(a);
+ }
+ break;
+ }
+}
+
+bool KviKvsVariant::asInteger(kvs_int_t &iVal) const
+{
+ if(!m_pData)return false;
+ switch(m_pData->m_eType)
+ {
+ case KviKvsVariantData::Integer:
+ iVal = m_pData->m_u.iInteger;
+ return true;
+ break;
+ case KviKvsVariantData::String:
+ {
+ bool bOk;
+ iVal = (kvs_int_t)KviQString::toI64(*(m_pData->m_u.pString),&bOk);
+ return bOk;
+ }
+ break;
+ case KviKvsVariantData::Real:
+ // FIXME: this truncates the value!
+ iVal = (kvs_int_t)*(m_pData->m_u.pReal);
+ return true;
+ break;
+ case KviKvsVariantData::Boolean:
+ iVal = m_pData->m_u.bBoolean ? 1 : 0;
+ return true;
+ break;
+ //case KviKvsVariantData::HObject: <-- light casts from objects to integer are not valid
+ // iVal = m_pData->m_u.hObject ? 1 : 0;
+ // return true;
+ //break;
+ default: /* make gcc happy */
+ break;
+ }
+ return false;
+}
+
+void KviKvsVariant::castToInteger(kvs_int_t &iVal) const
+{
+ if(!m_pData)
+ {
+ iVal = 0;
+ return;
+ }
+ switch(m_pData->m_eType)
+ {
+ case KviKvsVariantData::Integer:
+ iVal = m_pData->m_u.iInteger;
+ break;
+ case KviKvsVariantData::Boolean:
+ iVal = m_pData->m_u.bBoolean ? 1 : 0;
+ break;
+ case KviKvsVariantData::HObject:
+ iVal = m_pData->m_u.hObject ? 1 : 0;
+ break;
+ case KviKvsVariantData::String:
+ {
+ bool bOk;
+ iVal = (kvs_int_t)KviQString::toI64(*(m_pData->m_u.pString),&bOk);
+ if(bOk)return;
+ iVal = m_pData->m_u.pString->length();
+ }
+ break;
+ case KviKvsVariantData::Real:
+ // FIXME: this truncates the value!
+ iVal = (kvs_int_t)*(m_pData->m_u.pReal);
+ break;
+ case KviKvsVariantData::Array:
+ iVal = m_pData->m_u.pArray->size();
+ break;
+ case KviKvsVariantData::Hash:
+ iVal = m_pData->m_u.pHash->size();
+ break;
+ default: /* make gcc happy */
+ iVal = 0;
+ break;
+ }
+}
+
+
+bool KviKvsVariant::asReal(kvs_real_t & dVal) const
+{
+ if(!m_pData)return false;
+ switch(m_pData->m_eType)
+ {
+ case KviKvsVariantData::Integer:
+ dVal = m_pData->m_u.iInteger;
+ return true;
+ break;
+ case KviKvsVariantData::String:
+ {
+ bool bOk;
+ dVal = m_pData->m_u.pString->toDouble(&bOk);
+ return bOk;
+ }
+ break;
+ case KviKvsVariantData::Real:
+ dVal = *(m_pData->m_u.pReal);
+ return true;
+ break;
+ case KviKvsVariantData::Boolean:
+ dVal = m_pData->m_u.bBoolean ? 1.0 : 0.0;
+ return true;
+ break;
+ default: /* by default we make gcc happy */ break;
+ }
+ return false;
+}
+
+void KviKvsVariant::asString(QString &szBuffer) const
+{
+ if(!m_pData)
+ {
+ szBuffer = QString::null;
+ return;
+ }
+ switch(m_pData->m_eType)
+ {
+ case KviKvsVariantData::String: szBuffer = *(m_pData->m_u.pString); break;
+ case KviKvsVariantData::Array: szBuffer = QString::null; m_pData->m_u.pArray->appendAsString(szBuffer); break;
+ case KviKvsVariantData::Hash: szBuffer = QString::null; m_pData->m_u.pHash->appendAsString(szBuffer); break;
+ case KviKvsVariantData::Integer: szBuffer.setNum(m_pData->m_u.iInteger); break;
+ case KviKvsVariantData::Real: szBuffer.setNum(*(m_pData->m_u.pReal)); break;
+ case KviKvsVariantData::Boolean: szBuffer.setNum(m_pData->m_u.bBoolean ? 1 : 0); break;
+ case KviKvsVariantData::HObject:
+ if(m_pData->m_u.hObject)
+ KviQString::sprintf(szBuffer,"object[%lx]",m_pData->m_u.hObject);
+ else
+ szBuffer = "null-object";
+ break;
+ default: /* make gcc happy */ break;
+ }
+}
+
+void KviKvsVariant::appendAsString(QString &szBuffer) const
+{
+ if(!m_pData)return;
+ switch(m_pData->m_eType)
+ {
+ case KviKvsVariantData::String: szBuffer.append(*(m_pData->m_u.pString)); break;
+ case KviKvsVariantData::Array: m_pData->m_u.pArray->appendAsString(szBuffer); break;
+ case KviKvsVariantData::Hash: m_pData->m_u.pHash->appendAsString(szBuffer); break;
+ case KviKvsVariantData::Integer: KviQString::appendNumber(szBuffer,m_pData->m_u.iInteger); break;
+ case KviKvsVariantData::Real: KviQString::appendNumber(szBuffer,*(m_pData->m_u.pReal)); break;
+ case KviKvsVariantData::Boolean: KviQString::appendNumber(szBuffer,m_pData->m_u.bBoolean ? 1 : 0); break;
+ case KviKvsVariantData::HObject: szBuffer.append(m_pData->m_u.hObject ? "object" : "null-object"); break;
+ default: /* make gcc happy */ break;
+ }
+}
+
+void KviKvsVariant::dump(const char * prefix) const
+{
+ if(!m_pData)
+ {
+ debug("%s Nothing [this=0x%lx]",prefix,this);
+ return;
+ }
+ switch(m_pData->m_eType)
+ {
+ case KviKvsVariantData::String: debug("%s String(%s) [this=0x%lx]",prefix,m_pData->m_u.pString->utf8().data(),this); break;
+ case KviKvsVariantData::Array: debug("%s Array(ptr=0x%lx) [this=0x%lx]",prefix,m_pData->m_u.pArray,this); break;
+ case KviKvsVariantData::Hash: debug("%s Hash(ptr=0x%lx,dict=0x%lx) [this=0x%lx]",prefix,m_pData->m_u.pHash,m_pData->m_u.pHash->dict(),this); break;
+ case KviKvsVariantData::Integer: debug("%s Integer(%d) [this=0x%lx]",prefix,m_pData->m_u.iInteger,this); break;
+ case KviKvsVariantData::Real: debug("%s Real(%f) [this=0x%lx]",prefix,*(m_pData->m_u.pReal),this); break;
+ case KviKvsVariantData::Boolean: debug("%s Boolean(%s) [this=0x%lx]",prefix,m_pData->m_u.bBoolean ? "true" : "false",this); break;
+ case KviKvsVariantData::HObject: debug("%s HObject(%lx) [this=0x%lx]",prefix,m_pData->m_u.hObject,this); break;
+ default: /* make gcc happy */ break;
+ }
+}
+
+void KviKvsVariant::copyFrom(const KviKvsVariant * v)
+{
+ DETACH_CONTENTS
+ m_pData = v->m_pData;
+ if(m_pData)m_pData->m_uRefs++;
+}
+
+void KviKvsVariant::copyFrom(const KviKvsVariant &v)
+{
+ DETACH_CONTENTS
+ m_pData = v.m_pData;
+ if(m_pData)m_pData->m_uRefs++;
+
+}
+
+void KviKvsVariant::takeFrom(KviKvsVariant * v)
+{
+ DETACH_CONTENTS
+ m_pData = v->m_pData;
+ v->m_pData = 0;
+}
+
+void KviKvsVariant::takeFrom(KviKvsVariant &v)
+{
+ DETACH_CONTENTS
+ m_pData = v.m_pData;
+ v.m_pData = 0;
+}
+
+void KviKvsVariant::getTypeName(QString &szBuffer) const
+{
+ if(!m_pData)
+ {
+ szBuffer = "nothing";
+ return;
+ }
+ switch(m_pData->m_eType)
+ {
+ case KviKvsVariantData::String: szBuffer = "string"; break;
+ case KviKvsVariantData::Hash: szBuffer = "hash"; break;
+ case KviKvsVariantData::Array: szBuffer = "array"; break;
+ case KviKvsVariantData::Real: szBuffer = "real"; break;
+ case KviKvsVariantData::Integer: szBuffer = "integer"; break;
+ case KviKvsVariantData::Boolean: szBuffer = "boolean"; break;
+ case KviKvsVariantData::HObject: szBuffer = "hobject"; break;
+ default: szBuffer = "internal_error"; break;
+ }
+}
+
+bool KviKvsVariant::isEqualToNothing() const
+{
+ if(!m_pData)return true;
+ switch(m_pData->m_eType)
+ {
+ case KviKvsVariantData::HObject:
+ return (m_pData->m_u.hObject == (kvs_hobject_t)0);
+ break;
+ case KviKvsVariantData::Integer:
+ return (m_pData->m_u.iInteger == 0);
+ break;
+ case KviKvsVariantData::Real:
+ return (*(m_pData->m_u.pReal) == 0.0);
+ break;
+ case KviKvsVariantData::String:
+ {
+ if(m_pData->m_u.pString->isEmpty())return true;
+ kvs_real_t dReal;
+ if(asReal(dReal))
+ return dReal == 0.0;
+ return false;
+ }
+ break;
+ case KviKvsVariantData::Boolean:
+ return !m_pData->m_u.bBoolean;
+ break;
+ case KviKvsVariantData::Hash:
+ return m_pData->m_u.pHash->isEmpty();
+ break;
+ case KviKvsVariantData::Array:
+ return m_pData->m_u.pArray->isEmpty();
+ break;
+ default:
+ break;
+ }
+
+ return false;
+}
+
+
+#define CMP_THISGREATER -1
+#define CMP_EQUAL 0
+#define CMP_OTHERGREATER 1
+
+class KviKvsVariantComparison
+{
+public:
+ static inline int compare_integer_string(const KviKvsVariant * v1,const KviKvsVariant * v2)
+ {
+ if(v1->m_pData->m_u.iInteger == 0)
+ {
+ if(v2->m_pData->m_u.pString->isEmpty())return CMP_EQUAL;
+ }
+ kvs_real_t dReal;
+ if(v2->asReal(dReal))
+ {
+ if(((kvs_real_t)v1->m_pData->m_u.iInteger) == dReal)return CMP_EQUAL;
+ if(((kvs_real_t)v1->m_pData->m_u.iInteger) > dReal)return CMP_THISGREATER;
+ return CMP_OTHERGREATER;
+ }
+ // compare as strings instead
+ QString szString;
+ v1->asString(szString);
+ return -1 * KviQString::cmpCI(szString,*(v2->m_pData->m_u.pString));
+ }
+
+ static inline int compare_integer_real(const KviKvsVariant * v1,const KviKvsVariant * v2)
+ {
+ if(((kvs_real_t)v1->m_pData->m_u.iInteger) == *(v2->m_pData->m_u.pReal))return CMP_EQUAL;
+ if(((kvs_real_t)v1->m_pData->m_u.iInteger) > *(v2->m_pData->m_u.pReal))return CMP_THISGREATER;
+ return CMP_OTHERGREATER;
+ }
+
+ static inline int compare_integer_boolean(const KviKvsVariant * v1,const KviKvsVariant * v2)
+ {
+ if(v1->m_pData->m_u.iInteger == 0)
+ return v2->m_pData->m_u.bBoolean ? CMP_OTHERGREATER : CMP_EQUAL;
+ return v2->m_pData->m_u.bBoolean ? CMP_EQUAL : CMP_THISGREATER;
+ }
+
+ static inline int compare_integer_hash(const KviKvsVariant * v1,const KviKvsVariant * v2)
+ {
+ if(v1->m_pData->m_u.iInteger == 0)
+ return v2->m_pData->m_u.pHash->isEmpty() ? CMP_EQUAL : CMP_OTHERGREATER;
+ return CMP_THISGREATER;
+ }
+
+ static inline int compare_integer_array(const KviKvsVariant * v1,const KviKvsVariant * v2)
+ {
+ if(v1->m_pData->m_u.iInteger == 0)
+ return v2->m_pData->m_u.pArray->isEmpty() ? CMP_EQUAL : CMP_OTHERGREATER;
+ return CMP_THISGREATER;
+ }
+
+ static inline int compare_integer_hobject(const KviKvsVariant * v1,const KviKvsVariant * v2)
+ {
+ if(v1->m_pData->m_u.iInteger == 0.0)
+ return (v2->m_pData->m_u.hObject == (kvs_hobject_t)0) ? CMP_EQUAL : CMP_THISGREATER;
+ return CMP_OTHERGREATER;
+ }
+
+ static inline int compare_real_hobject(const KviKvsVariant * v1,const KviKvsVariant * v2)
+ {
+ if(*(v1->m_pData->m_u.pReal) == 0.0)
+ return (v2->m_pData->m_u.hObject == (kvs_hobject_t)0) ? CMP_EQUAL : CMP_THISGREATER;
+ return CMP_OTHERGREATER;
+ }
+
+ static inline int compare_real_string(const KviKvsVariant * v1,const KviKvsVariant * v2)
+ {
+ if(*(v1->m_pData->m_u.pReal) == 0.0)
+ {
+ if(v2->m_pData->m_u.pString->isEmpty())return CMP_EQUAL;
+ }
+ kvs_real_t dReal;
+ if(v2->asReal(dReal))
+ {
+ if(*(v1->m_pData->m_u.pReal) == dReal)return CMP_EQUAL;
+ if(*(v1->m_pData->m_u.pReal) > dReal)return CMP_THISGREATER;
+ return CMP_OTHERGREATER;
+ }
+ // compare as strings instead
+ QString szString;
+ v1->asString(szString);
+ return -1 * KviQString::cmpCI(szString,*(v2->m_pData->m_u.pString));
+ }
+
+ static inline int compare_real_boolean(const KviKvsVariant * v1,const KviKvsVariant * v2)
+ {
+ if(*(v1->m_pData->m_u.pReal) == 0.0)
+ return v2->m_pData->m_u.bBoolean ? CMP_OTHERGREATER : CMP_EQUAL;
+ return v2->m_pData->m_u.bBoolean ? CMP_EQUAL : CMP_THISGREATER;
+ }
+
+ static inline int compare_real_hash(const KviKvsVariant * v1,const KviKvsVariant * v2)
+ {
+ if(*(v1->m_pData->m_u.pReal) == 0)
+ return v2->m_pData->m_u.pHash->isEmpty() ? CMP_EQUAL : CMP_OTHERGREATER;
+ return CMP_THISGREATER;
+ }
+
+ static inline int compare_real_array(const KviKvsVariant * v1,const KviKvsVariant * v2)
+ {
+ if(*(v1->m_pData->m_u.pReal) == 0)
+ return v2->m_pData->m_u.pArray->isEmpty() ? CMP_EQUAL : CMP_OTHERGREATER;
+ return CMP_THISGREATER;
+ }
+
+ static inline int compare_string_hash(const KviKvsVariant * v1,const KviKvsVariant * v2)
+ {
+ if(v1->m_pData->m_u.pString->isEmpty())
+ {
+ return v2->m_pData->m_u.pHash->isEmpty() ? CMP_EQUAL : CMP_OTHERGREATER;
+ }
+ return CMP_THISGREATER;
+ }
+
+ static inline int compare_string_array(const KviKvsVariant * v1,const KviKvsVariant * v2)
+ {
+ if(v1->m_pData->m_u.pString->isEmpty())
+ {
+ return v2->m_pData->m_u.pArray->isEmpty() ? CMP_EQUAL : CMP_OTHERGREATER;
+ }
+ return CMP_THISGREATER;
+ }
+
+ static inline int compare_string_hobject(const KviKvsVariant * v1,const KviKvsVariant * v2)
+ {
+ if(v2->m_pData->m_u.hObject == (kvs_hobject_t)0)
+ {
+ if(v1->m_pData->m_u.pString->isEmpty())
+ return CMP_EQUAL;
+ kvs_real_t dReal;
+ if(v1->asReal(dReal))
+ {
+ if(dReal == 0)return CMP_EQUAL;
+ }
+ }
+
+ return CMP_THISGREATER;
+ }
+
+ static inline int compare_boolean_string(const KviKvsVariant * v1,const KviKvsVariant * v2)
+ {
+ if(v2->isEqualToNothing())
+ {
+ return v1->m_pData->m_u.bBoolean ? CMP_THISGREATER : CMP_EQUAL;
+ } else {
+ return v1->m_pData->m_u.bBoolean ? CMP_EQUAL : CMP_THISGREATER;
+ }
+ }
+
+ static inline int compare_boolean_hash(const KviKvsVariant * v1,const KviKvsVariant * v2)
+ {
+ if(v1->m_pData->m_u.bBoolean)
+ return v2->m_pData->m_u.pHash->isEmpty() ? CMP_THISGREATER : CMP_EQUAL;
+ else
+ return v2->m_pData->m_u.pHash->isEmpty() ? CMP_EQUAL : CMP_OTHERGREATER;
+ }
+
+ static inline int compare_boolean_array(const KviKvsVariant * v1,const KviKvsVariant * v2)
+ {
+ if(v1->m_pData->m_u.bBoolean)
+ return v2->m_pData->m_u.pArray->isEmpty() ? CMP_THISGREATER : CMP_EQUAL;
+ else
+ return v2->m_pData->m_u.pArray->isEmpty() ? CMP_EQUAL : CMP_OTHERGREATER;
+ }
+
+ static inline int compare_boolean_hobject(const KviKvsVariant * v1,const KviKvsVariant * v2)
+ {
+ if(v1->m_pData->m_u.bBoolean)
+ return v2->m_pData->m_u.hObject == ((kvs_hobject_t)0) ? CMP_THISGREATER : CMP_EQUAL;
+ else
+ return v2->m_pData->m_u.hObject == ((kvs_hobject_t)0) ? CMP_EQUAL : CMP_OTHERGREATER;
+ }
+
+ static inline int compare_array_hash(const KviKvsVariant * v1,const KviKvsVariant * v2)
+ {
+ if(v1->m_pData->m_u.pArray->size() > v2->m_pData->m_u.pHash->size())return CMP_THISGREATER;
+ if(v1->m_pData->m_u.pArray->size() == v2->m_pData->m_u.pHash->size())return CMP_EQUAL;
+ return CMP_OTHERGREATER;
+ }
+
+ static inline int compare_hobject_hash(const KviKvsVariant * v1,const KviKvsVariant * v2)
+ {
+ if(v2->m_pData->m_u.pHash->isEmpty())
+ return v1->m_pData->m_u.hObject == ((kvs_hobject_t)0) ? CMP_EQUAL : CMP_OTHERGREATER;
+ return v1->m_pData->m_u.hObject == ((kvs_hobject_t)0) ? CMP_THISGREATER : CMP_EQUAL;
+ }
+
+ static inline int compare_hobject_array(const KviKvsVariant * v1,const KviKvsVariant * v2)
+ {
+ if(v2->m_pData->m_u.pArray->isEmpty())
+ return v1->m_pData->m_u.hObject == ((kvs_hobject_t)0) ? CMP_EQUAL : CMP_OTHERGREATER;
+ return v1->m_pData->m_u.hObject == ((kvs_hobject_t)0) ? CMP_THISGREATER : CMP_EQUAL;
+ }
+
+};
+void KviKvsVariant::serializeString(QString& buffer)
+{
+ buffer.replace('\\',"\\\\");
+ buffer.replace('\n',"\\n");
+ buffer.replace('\r',"\\r");
+ buffer.replace('\b',"\\b");
+ buffer.replace('\t',"\\t");
+ buffer.replace('\f',"\\f");
+ buffer.replace('/',"\\/");
+ buffer.replace('"',"\\\"");
+ buffer.prepend('"');
+ buffer.append('"');
+}
+
+void KviKvsVariant::serialize(QString& result)
+{
+ switch(m_pData->m_eType)
+ {
+ case KviKvsVariantData::HObject:
+ //can't serialize objects yet
+ break;
+ case KviKvsVariantData::Integer:
+ result.setNum(m_pData->m_u.iInteger);
+ break;
+ case KviKvsVariantData::Real:
+ result.setNum(*(m_pData->m_u.pReal));
+ break;
+ case KviKvsVariantData::String:
+ result = *(m_pData->m_u.pString);
+ serializeString(result);
+ break;
+ case KviKvsVariantData::Boolean:
+ result = m_pData->m_u.bBoolean ? "true" : "false";
+ break;
+ case KviKvsVariantData::Hash:
+ m_pData->m_u.pHash->serialize(result);
+ break;
+ case KviKvsVariantData::Array:
+ m_pData->m_u.pArray->serialize(result);
+ break;
+ case KviKvsVariantData::Nothing:
+ result="null";
+ break;
+ default: // just make gcc happy
+ break;
+ }
+}
+
+KviKvsVariant* KviKvsVariant::unserializeTrue(const QChar** aux)
+{
+ if(KviQString::equalCIN(QString("true"),*aux,4))
+ {
+ (*aux)+=4;
+ return new KviKvsVariant(true);
+ }
+ return 0;
+}
+
+KviKvsVariant* KviKvsVariant::unserializeFalse(const QChar** aux)
+{
+ if(KviQString::equalCIN(QString("false"),*aux,5))
+ {
+ (*aux)+=5;
+ return new KviKvsVariant(false);
+ }
+ return 0;
+}
+
+KviKvsVariant* KviKvsVariant::unserializeNull(const QChar** aux)
+{
+ if(KviQString::equalCIN(QString("null"),*aux,4))
+ {
+ (*aux)+=4;
+ return new KviKvsVariant();
+ }
+ return 0;
+}
+
+KviKvsVariant* KviKvsVariant::unserializeRealOrInteger(const QChar** aux)
+{
+ QString data;
+ if((*aux)->unicode() == '-')
+ {
+ data.append('-');
+ (*aux)++;
+ }
+ if(!(*aux)->isDigit())
+ {
+ return 0;
+ }
+ while((*aux)->isDigit())
+ {
+ data.append(**aux);
+ (*aux)++;
+ }
+ if((*aux)->unicode()=='.')
+ {
+ return unserializeReal(aux,data);
+ }
+ return unserializeInteger(aux,data);
+}
+
+KviKvsVariant* KviKvsVariant::unserializeReal(const QChar** aux,QString& data)
+{
+ QString exponent;
+ (*aux)++; //skip .
+ data.append('.');
+ while((*aux)->isDigit())
+ {
+ data.append(**aux);
+ (*aux)++;
+ }
+
+ if((*aux)->unicode() == 'e' || (*aux)->unicode() == 'E')
+ {
+ (*aux)++;
+ if((*aux)->unicode() == '-')
+ {
+ exponent.append('-');
+ (*aux)++;
+ } else {
+ if((*aux)->unicode() == '+')
+ {
+ exponent.append('+');
+ (*aux)++;
+ }
+ }
+
+ while((*aux)->isDigit())
+ {
+ exponent.append(**aux);
+ (*aux)++;
+ }
+ }
+
+
+
+ float value = data.toFloat();
+ if(!exponent.isNull())
+ {
+ value*=pow(10.0,exponent.toInt());
+ }
+ return new KviKvsVariant(value);
+}
+
+KviKvsVariant* KviKvsVariant::unserializeInteger(const QChar** aux,QString& data)
+{
+
+ QString exponent;
+
+ if((*aux)->unicode() == 'e' || (*aux)->unicode() == 'E')
+ {
+ (*aux)++;
+ if((*aux)->unicode() == '-')
+ {
+ exponent.append('-');
+ (*aux)++;
+ } else {
+ if((*aux)->unicode() == '+')
+ {
+ exponent.append('+');
+ (*aux)++;
+ }
+ }
+
+ while((*aux)->isDigit())
+ {
+ exponent.append(**aux);
+ (*aux)++;
+ }
+ }
+
+ kvs_int_t value = data.toInt();
+ if(!exponent.isNull())
+ {
+ value*=pow(10.0,exponent.toInt());
+ }
+ return new KviKvsVariant(value);
+}
+
+KviKvsVariant* KviKvsVariant::unserializeString(const QChar** aux)
+{
+ QString buffer;
+ unserializeString(aux,buffer);
+ return new KviKvsVariant(buffer);
+}
+
+void KviKvsVariant::unserializeString(const QChar** aux,QString& data)
+{
+ data="";
+ QString hex; //temp var
+ //skip leading "
+ (*aux)++;
+ while((*aux)->unicode())
+ {
+ switch((*aux)->unicode())
+ {
+ case '"':
+ //EOF
+ (*aux)++;
+ return;
+ break;
+ case '\\':
+ //Special
+ (*aux)++;
+ switch((*aux)->unicode())
+ {
+ case 't':
+ data.append('\t');
+ break;
+ case '\"':
+ data.append('\"');
+ break;
+ case '/':
+ data.append('/');
+ case 'b':
+ data.append('\b');
+ case 'f':
+ data.append('\f');
+ break;
+ case 'n':
+ data.append('\n');
+ break;
+ case 'r':
+ data.append('\r');
+ break;
+ case 'u':
+ //4 hexadecmical digits pending...
+ hex="";
+ (*aux)++;
+ for(int k=0;k<4 && (*aux)->unicode(); k++)
+ {
+ if((*aux)->isDigit() ||
+ ((*aux)->unicode() >='A' && (*aux)->unicode() <='F')|| //ABCDEF
+ ((*aux)->unicode() >='a' && (*aux)->unicode() <='f')) //abcdef
+ {
+ hex.append(**aux);
+ (*aux)++;
+ } else {
+ break;
+ }
+ }
+ (*aux)--;
+ data.append(QChar(hex.toUInt(0,16)));
+ break;
+ default:
+ //Fallback; incorrect escape
+ (*aux)--;
+ data.append('\\');
+ }
+ (*aux)++;
+ break;
+ default:
+ data.append(**aux);
+ (*aux)++;
+ break;
+ }
+ }
+}
+
+KviKvsVariant* KviKvsVariant::unserializeHash(const QChar** aux)
+{
+ KviKvsHash* pHash = new KviKvsHash();
+ QString szKey;
+ KviKvsVariant* pElement = 0;
+ //skip leading '{'
+ (*aux)++;
+ int i=0;
+ while(1)
+ {
+ //skip leading space
+ while((*aux)->isSpace())
+ (*aux)++;
+ //waiting for starting of string
+ if((*aux)->unicode()!='\"')
+ {
+ //strange characters
+ delete pHash;
+ return 0;
+ }
+ unserializeString(aux,szKey);
+ if(szKey.isEmpty())
+ {
+ //Strange element name
+ delete pHash;
+ return 0;
+ }
+
+ //skip leading space before ':'
+ while((*aux)->isSpace())
+ (*aux)++;
+ //waiting for name-value delimeter
+ if((*aux)->unicode()!=':')
+ {
+ //strange characters
+ delete pHash;
+ return 0;
+ }
+ (*aux)++;
+
+
+ //getting element
+ pElement = unserialize(aux);
+ if(pElement)
+ {
+ pHash->set(szKey,pElement);
+ i++;
+ while((*aux)->isSpace())
+ (*aux)++;
+ switch((*aux)->unicode())
+ {
+ case ',':
+ //goto next
+ (*aux)++;
+ break;
+ case '}':
+ //EOF array
+ (*aux)++;
+ return new KviKvsVariant(pHash);
+ break;
+ default:
+ delete pHash;
+ return 0;
+ break;
+ }
+ } else {
+ //error
+ delete pHash;
+ return 0;
+ }
+ }
+ return 0;
+}
+
+KviKvsVariant* KviKvsVariant::unserializeArray(const QChar** aux)
+{
+ KviKvsArray* pArray = new KviKvsArray();
+ KviKvsVariant* pElement = 0;
+ (*aux)++;
+ int i=0;
+ while(1)
+ {
+ pElement = unserialize(aux);
+ if(pElement)
+ {
+ pArray->set(i,pElement);
+ i++;
+ while((*aux)->isSpace())
+ (*aux)++;
+ switch((*aux)->unicode())
+ {
+ case ',':
+ //goto next
+ (*aux)++;
+ break;
+ case ']':
+ //EOF array
+ (*aux)++;
+ return new KviKvsVariant(pArray);
+ break;
+ default:
+ delete pArray;
+ return 0;
+ break;
+ }
+ } else {
+ //error
+ delete pArray;
+ return 0;
+ }
+ }
+ return 0;
+}
+
+KviKvsVariant* KviKvsVariant::unserialize(const QChar** aux)
+{
+ KviKvsVariant* pResult = 0;
+
+ while((*aux)->isSpace())
+ (*aux)++;
+
+ switch((*aux)->unicode())
+ {
+ case 't':
+ //true
+ pResult = unserializeTrue(aux);
+ break;
+ case 'f':
+ //false
+ pResult = unserializeFalse(aux);
+ break;
+ case 'n':
+ //null
+ pResult = unserializeNull(aux);
+ break;
+ case '[':
+ //array
+ pResult = unserializeArray(aux);
+ break;
+ case '{':
+ //hash
+ pResult = unserializeHash(aux);
+ break;
+ case '"':
+ //string
+ pResult = unserializeString(aux);
+ break;
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case '0':
+ case '-':
+ //real or integer
+ pResult = unserializeRealOrInteger(aux);
+ break;
+ default:
+ //incorrect value
+ return 0;
+ }
+
+ while((*aux)->isSpace())
+ (*aux)++;
+
+ return pResult;
+}
+
+KviKvsVariant* KviKvsVariant::unserialize(const QString& data)
+{
+ KviKvsVariant* pResult = 0;
+
+#ifdef COMPILE_USE_QT4
+ const QChar * aux = (const QChar *)data.constData();
+#else
+ const QChar * aux = (const QChar *)data.ucs2();
+#endif
+
+ pResult = unserialize(&aux);
+
+ if(aux->unicode())
+ {
+ //strange extra characters?
+ if(pResult) delete pResult;
+ pResult = 0;
+ }
+
+ return pResult;
+}
+
+int KviKvsVariant::compare(const KviKvsVariant * pOther,bool bPreferNumeric) const
+{
+ // returns -1 if this variant is greater than pOther
+ // 0 if they are considered to be equal
+ // 1 if the other variant is greater
+
+ if(!pOther)
+ return isEqualToNothing() ? CMP_EQUAL : CMP_THISGREATER;
+ if(!pOther->m_pData)
+ return isEqualToNothing() ? CMP_EQUAL : CMP_THISGREATER;
+ if(!m_pData)
+ return pOther->isEqualToNothing() ? CMP_EQUAL : CMP_OTHERGREATER;
+
+ switch(m_pData->m_eType)
+ {
+ case KviKvsVariantData::HObject:
+ switch(pOther->m_pData->m_eType)
+ {
+ case KviKvsVariantData::HObject:
+ if(m_pData->m_u.hObject == pOther->m_pData->m_u.hObject)return CMP_EQUAL;
+ if(m_pData->m_u.hObject == ((kvs_hobject_t)0))return CMP_OTHERGREATER;
+ return CMP_THISGREATER;
+ break;
+ case KviKvsVariantData::Integer:
+ return -1 * KviKvsVariantComparison::compare_integer_hobject(pOther,this);
+ break;
+ case KviKvsVariantData::Real:
+ return -1 * KviKvsVariantComparison::compare_real_hobject(pOther,this);
+ break;
+ case KviKvsVariantData::String:
+ return -1 * KviKvsVariantComparison::compare_string_hobject(pOther,this);
+ break;
+ case KviKvsVariantData::Boolean:
+ return -1 * KviKvsVariantComparison::compare_boolean_hobject(pOther,this);
+ break;
+ case KviKvsVariantData::Hash:
+ return KviKvsVariantComparison::compare_hobject_hash(this,pOther);
+ break;
+ case KviKvsVariantData::Array:
+ return KviKvsVariantComparison::compare_hobject_array(this,pOther);
+ break;
+ default: // just make gcc happy
+ break;
+ }
+ break;
+ case KviKvsVariantData::Integer:
+ switch(pOther->m_pData->m_eType)
+ {
+ case KviKvsVariantData::HObject:
+ return KviKvsVariantComparison::compare_integer_hobject(this,pOther);
+ break;
+ case KviKvsVariantData::Integer:
+ if(m_pData->m_u.iInteger == pOther->m_pData->m_u.iInteger)return CMP_EQUAL;
+ if(m_pData->m_u.iInteger > pOther->m_pData->m_u.iInteger)return CMP_THISGREATER;
+ return CMP_OTHERGREATER;
+ break;
+ case KviKvsVariantData::Real:
+ return KviKvsVariantComparison::compare_integer_real(this,pOther);
+ break;
+ case KviKvsVariantData::String:
+ return KviKvsVariantComparison::compare_integer_string(this,pOther);
+ break;
+ case KviKvsVariantData::Boolean:
+ return KviKvsVariantComparison::compare_integer_boolean(this,pOther);
+ break;
+ case KviKvsVariantData::Hash:
+ return KviKvsVariantComparison::compare_integer_hash(this,pOther);
+ break;
+ case KviKvsVariantData::Array:
+ return KviKvsVariantComparison::compare_integer_array(this,pOther);
+ break;
+ default: // just make gcc happy
+ break;
+ }
+ break;
+ case KviKvsVariantData::Real:
+ switch(pOther->m_pData->m_eType)
+ {
+ case KviKvsVariantData::HObject:
+ return KviKvsVariantComparison::compare_real_hobject(this,pOther);
+ break;
+ case KviKvsVariantData::Integer:
+ return -1 * KviKvsVariantComparison::compare_integer_real(pOther,this);
+ break;
+ case KviKvsVariantData::Real:
+ if(*(m_pData->m_u.pReal) == *(pOther->m_pData->m_u.pReal))return CMP_EQUAL;
+ if(*(m_pData->m_u.pReal) > *(pOther->m_pData->m_u.pReal))return CMP_THISGREATER;
+ return CMP_OTHERGREATER;
+ break;
+ case KviKvsVariantData::String:
+ return KviKvsVariantComparison::compare_real_string(this,pOther);
+ break;
+ case KviKvsVariantData::Boolean:
+ return KviKvsVariantComparison::compare_real_boolean(this,pOther);
+ break;
+ case KviKvsVariantData::Hash:
+ return KviKvsVariantComparison::compare_real_hash(this,pOther);
+ break;
+ case KviKvsVariantData::Array:
+ return KviKvsVariantComparison::compare_real_array(this,pOther);
+ break;
+ default: // just make gcc happy
+ break;
+ }
+ break;
+ case KviKvsVariantData::String:
+ switch(pOther->m_pData->m_eType)
+ {
+ case KviKvsVariantData::String:
+ if(bPreferNumeric)
+ {
+ // prefer numeric comparison
+ double dReal1;
+ double dReal2;
+ if(asReal(dReal1))
+ {
+ if(pOther->asReal(dReal2))
+ {
+ if(dReal1 == dReal2)return CMP_EQUAL;
+ if(dReal1 > dReal2)return CMP_THISGREATER;
+ return CMP_OTHERGREATER;
+ }
+ }
+ }
+ return -1 * KviQString::cmpCI(*(m_pData->m_u.pString),*(pOther->m_pData->m_u.pString));
+ case KviKvsVariantData::Real:
+ return -1 * KviKvsVariantComparison::compare_real_string(pOther,this);
+ case KviKvsVariantData::Integer:
+ return -1 * KviKvsVariantComparison::compare_integer_string(pOther,this);
+ case KviKvsVariantData::Boolean:
+ return -1 * KviKvsVariantComparison::compare_boolean_string(pOther,this);
+ break;
+ case KviKvsVariantData::Hash:
+ return KviKvsVariantComparison::compare_string_hash(this,pOther);
+ break;
+ case KviKvsVariantData::Array:
+ return KviKvsVariantComparison::compare_string_array(this,pOther);
+ break;
+ case KviKvsVariantData::HObject:
+ return KviKvsVariantComparison::compare_string_hobject(this,pOther);
+ break;
+ }
+ break;
+ case KviKvsVariantData::Hash:
+ switch(pOther->m_pData->m_eType)
+ {
+ case KviKvsVariantData::String:
+ return -1 * KviKvsVariantComparison::compare_string_hash(pOther,this);
+ case KviKvsVariantData::Real:
+ return -1 * KviKvsVariantComparison::compare_real_hash(pOther,this);
+ break;
+ case KviKvsVariantData::Integer:
+ return -1 * KviKvsVariantComparison::compare_integer_hash(pOther,this);
+ break;
+ case KviKvsVariantData::Boolean:
+ return -1 * KviKvsVariantComparison::compare_boolean_hash(pOther,this);
+ break;
+ case KviKvsVariantData::Hash:
+ if(m_pData->m_u.pHash->size() > pOther->m_pData->m_u.pHash->size())return CMP_THISGREATER;
+ if(m_pData->m_u.pHash->size() == pOther->m_pData->m_u.pHash->size())return CMP_EQUAL;
+ return CMP_OTHERGREATER;
+ break;
+ case KviKvsVariantData::Array:
+ return -1 * KviKvsVariantComparison::compare_array_hash(pOther,this);
+ break;
+ case KviKvsVariantData::HObject:
+ return -1 * KviKvsVariantComparison::compare_hobject_hash(pOther,this);
+ break;
+ }
+ break;
+ case KviKvsVariantData::Array:
+ switch(pOther->m_pData->m_eType)
+ {
+ case KviKvsVariantData::String:
+ return -1 * KviKvsVariantComparison::compare_string_array(pOther,this);
+ case KviKvsVariantData::Real:
+ return -1 * KviKvsVariantComparison::compare_real_array(pOther,this);
+ case KviKvsVariantData::Integer:
+ return -1 * KviKvsVariantComparison::compare_integer_array(pOther,this);
+ case KviKvsVariantData::Boolean:
+ return -1 * KviKvsVariantComparison::compare_boolean_array(pOther,this);
+ break;
+ case KviKvsVariantData::Hash:
+ return KviKvsVariantComparison::compare_array_hash(this,pOther);
+ break;
+ case KviKvsVariantData::Array:
+ if(m_pData->m_u.pArray->size() > pOther->m_pData->m_u.pArray->size())return CMP_THISGREATER;
+ if(m_pData->m_u.pArray->size() == pOther->m_pData->m_u.pArray->size())return CMP_EQUAL;
+ return CMP_OTHERGREATER;
+ break;
+ case KviKvsVariantData::HObject:
+ return -1 * KviKvsVariantComparison::compare_hobject_array(pOther,this);
+ break;
+ }
+ break;
+ case KviKvsVariantData::Boolean:
+ switch(pOther->m_pData->m_eType)
+ {
+ case KviKvsVariantData::String:
+ return KviKvsVariantComparison::compare_boolean_string(this,pOther);
+ break;
+ case KviKvsVariantData::Real:
+ return -1 * KviKvsVariantComparison::compare_real_boolean(pOther,this);
+ break;
+ case KviKvsVariantData::Integer:
+ return -1 * KviKvsVariantComparison::compare_integer_boolean(pOther,this);
+ break;
+ case KviKvsVariantData::Boolean:
+ if(m_pData->m_u.bBoolean == pOther->m_pData->m_u.bBoolean)return CMP_EQUAL;
+ if(m_pData->m_u.bBoolean)return CMP_THISGREATER;
+ return CMP_OTHERGREATER;
+ break;
+ case KviKvsVariantData::Hash:
+ return KviKvsVariantComparison::compare_boolean_hash(this,pOther);
+ break;
+ case KviKvsVariantData::Array:
+ return KviKvsVariantComparison::compare_boolean_array(this,pOther);
+ break;
+ case KviKvsVariantData::HObject:
+ return KviKvsVariantComparison::compare_boolean_hobject(this,pOther);
+ break;
+ }
+ break;
+ default: // should never happen anyway
+ break;
+ }
+
+ return CMP_THISGREATER; // should never happen
+}
+
diff --git a/src/kvirc/kvs/kvi_kvs_variant.h b/src/kvirc/kvs/kvi_kvs_variant.h
new file mode 100644
index 00000000..99b64718
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_variant.h
@@ -0,0 +1,208 @@
+#ifndef _KVI_KVS_VARIANT_H_
+#define _KVI_KVS_VARIANT_H_
+//=============================================================================
+//
+// File : kvi_kvs_variant.h
+// Created on Tue 07 Oct 2003 04:01:19 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_heapobject.h"
+#include "kvi_kvs_types.h"
+
+
+class KviKvsVariant;
+class KviKvsArrayCast;
+
+class KVIRC_API KviKvsNumber
+{
+ friend class KviKvsVariant;
+public:
+ enum DataType { Real, Integer };
+protected:
+ union {
+ kvs_int_t iInteger;
+ kvs_real_t dReal;
+ } m_u;
+ DataType m_type;
+public:
+ DataType type() const { return m_type; };
+ bool isReal() const { return m_type == Real; };
+ bool isInteger() const { return m_type == Integer; };
+ kvs_real_t real() const { return m_u.dReal; };
+ kvs_int_t integer() const { return m_u.iInteger; };
+};
+
+// pre-declare.. the real declarations are included below
+class KviKvsHash;
+class KviKvsArray;
+
+class KviKvsVariantData
+{
+public:
+ enum Type {
+ Nothing = 0, // m_pData not initialized
+ String = 1, // QString (scalar)
+ Integer = 2, // long int (scalar)
+ Real = 4, // double (scalar)
+ Array = 8, // KviKvsArray
+ Hash = 16, // KviKvsHash
+ Boolean = 32, // bool (scalar)
+ HObject = 64 // object, shallow! (scalar)
+ };
+public:
+ unsigned int m_uRefs;
+ Type m_eType;
+ union {
+ kvs_int_t iInteger;
+ kvs_real_t * pReal;
+ QString * pString;
+ KviKvsArray * pArray;
+ KviKvsHash * pHash;
+ bool bBoolean;
+ kvs_hobject_t hObject;
+ } m_u;
+};
+
+// This class must not have virtual funcitons nor destructor
+// Otherwise it will happily crash on windows when it is
+// allocated in modules and destroyed anywhere else around...
+class KVIRC_API KviKvsVariant : public KviHeapObject
+{
+ friend class KviKvsVariantComparison;
+public:
+ KviKvsVariant();
+ KviKvsVariant(kvs_int_t iInteger);
+ KviKvsVariant(kvs_real_t dReal);
+ KviKvsVariant(kvs_real_t * pReal);
+ KviKvsVariant(bool bBoolean);
+ KviKvsVariant(const QString &szString);
+ KviKvsVariant(const char * szString); // without this gcc chooses the conversion (const char *)->(void *) instead of (const char *)->(QString) and obviously calls the wrong constructor
+ KviKvsVariant(QString * pString);
+ KviKvsVariant(KviKvsArray * pArray);
+ KviKvsVariant(KviKvsHash * pHash);
+ KviKvsVariant(kvs_hobject_t hObject);
+ KviKvsVariant(const KviKvsVariant &v);
+ ~KviKvsVariant();
+protected:
+ KviKvsVariantData * m_pData;
+public:
+ KviKvsVariantData::Type type(){ return m_pData ? m_pData->m_eType : KviKvsVariantData::Nothing; };
+
+ void setReal(kvs_real_t dReal);
+ void setReal(kvs_real_t * pReal);
+ void setInteger(kvs_int_t iInteger);
+ void setString(const QString &szString);
+ void setString(QString * pString);
+ void setArray(KviKvsArray * pArray);
+ void setHash(KviKvsHash * pHash);
+ void setBoolean(bool bBoolean);
+ void setHObject(kvs_hobject_t hObject);
+ void setNothing();
+ //void unset(){ setNothing(); };
+
+ void getTypeName(QString &szBuffer) const;
+
+ bool isNothing() const { return !m_pData; };
+ bool isInteger() const { return m_pData ? (m_pData->m_eType == KviKvsVariantData::Integer) : false; };
+ bool isReal() const { return m_pData ? (m_pData->m_eType == KviKvsVariantData::Real) : false; };
+ bool isNumeric() const { return m_pData ? (m_pData->m_eType & (KviKvsVariantData::Integer | KviKvsVariantData::Real)) : false; };
+ bool isString() const { return m_pData ? (m_pData->m_eType == KviKvsVariantData::String) : false; };
+ bool isScalar() const { return m_pData ? (m_pData->m_eType & (KviKvsVariantData::String | KviKvsVariantData::Integer | KviKvsVariantData::Real)) : false; };
+ bool isArray() const { return m_pData ? (m_pData->m_eType == KviKvsVariantData::Array) : false; };
+ bool isHash() const { return m_pData ? (m_pData->m_eType == KviKvsVariantData::Hash) : false; };
+ bool isBoolean() const { return m_pData ? (m_pData->m_eType == KviKvsVariantData::Boolean) : false; };
+ bool isHObject() const { return m_pData ? (m_pData->m_eType == KviKvsVariantData::HObject) : false; };
+
+ bool isEmpty() const;
+
+ // returns true if this variant is nothing, false, null, 0 or an empty string
+ bool isEqualToNothing() const;
+
+ // evaluates Integer, Real and String rappresenting an Integer
+ bool asInteger(kvs_int_t &iVal) const;
+ // evaluates Real, Integer and String rappresenting a Real
+ bool asReal(kvs_real_t &dVal) const;
+ // evaluates Real, Integer and String rappresenting a Real or integer
+ bool asNumber(KviKvsNumber &n) const;
+ // always evaluates to a boolean value
+ bool asBoolean() const;
+ // evaluates to an object handle
+ bool asHObject(kvs_hobject_t &hObject) const;
+ // evaluates anything to a string
+ void asString(QString &szBuffer) const;
+ void appendAsString(QString &szBuffer) const;
+
+ // always evaluates to some number...
+ void castToNumber(KviKvsNumber &n) const;
+ // always evaluates to an integer
+ void castToInteger(kvs_int_t &iVal) const;
+ // always evaluates to an array
+ void castToArray(KviKvsArrayCast *c) const;
+ // converts this variant to an array
+ void convertToArray();
+
+ kvs_int_t integer() const { return m_pData ? m_pData->m_u.iInteger : 0; };
+ kvs_real_t real() const { return m_pData ? *(m_pData->m_u.pReal) : 0.0; };
+ const QString & string() const { return m_pData ? *(m_pData->m_u.pString) : KviQString::empty; };
+ KviKvsArray * array() const { return m_pData ? m_pData->m_u.pArray : 0; };
+ KviKvsHash * hash() const { return m_pData ? m_pData->m_u.pHash : 0; };
+ bool boolean() const { return m_pData ? m_pData->m_u.bBoolean : false; };
+ kvs_hobject_t hobject() const { return m_pData ? m_pData->m_u.hObject : (kvs_hobject_t)0; };
+
+ void copyFrom(const KviKvsVariant * v);
+ void copyFrom(const KviKvsVariant & v);
+ void takeFrom(KviKvsVariant * v);
+ void takeFrom(KviKvsVariant &v);
+
+ void dump(const char * prefix) const;
+
+ // returns -1 if this variant is greater than the other, 0 if are equal, 1 if the other is greater
+ // if bPreferNumeric is true then when comparing strings a conversion to a numeric format
+ // is first attempted.
+ int compare(const KviKvsVariant * pOther,bool bPreferNumeric = false) const;
+
+ void operator = (const KviKvsVariant &v){ copyFrom(v); };
+
+ //JSON serialization
+ void serialize(QString& result);
+ static void serializeString(QString& buffer);
+ static KviKvsVariant* unserialize(const QString& buffer);
+private:
+ static KviKvsVariant* unserialize(const QChar** aux);
+ static KviKvsVariant* unserializeTrue(const QChar** aux);
+ static KviKvsVariant* unserializeFalse(const QChar** aux);
+ static KviKvsVariant* unserializeNull(const QChar** aux);
+ static KviKvsVariant* unserializeArray(const QChar** aux);
+ static KviKvsVariant* unserializeHash(const QChar** aux);
+ static void unserializeString(const QChar** aux,QString& buffer);
+ static KviKvsVariant* unserializeString(const QChar** aux);
+ static KviKvsVariant* unserializeRealOrInteger(const QChar** aux);
+ static KviKvsVariant* unserializeReal(const QChar** aux,QString& data);
+ static KviKvsVariant* unserializeInteger(const QChar** aux,QString& data);
+};
+
+#include "kvi_kvs_array.h"
+#include "kvi_kvs_hash.h"
+
+
+#endif //!_KVI_KVS_VARIANT_H_
diff --git a/src/kvirc/kvs/kvi_kvs_variantlist.cpp b/src/kvirc/kvs/kvi_kvs_variantlist.cpp
new file mode 100644
index 00000000..6c10a2a8
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_variantlist.cpp
@@ -0,0 +1,199 @@
+//=============================================================================
+//
+// File : kvi_kvs_variantlist.cpp
+// Created on Sat 11 Oct 2003 02:20:51 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_kvs_variantlist.h"
+
+KviKvsVariantList::KviKvsVariantList()
+{
+ m_pList = new KviPointerList<KviKvsVariant>();
+ m_pList->setAutoDelete(true);
+}
+
+KviKvsVariantList::KviKvsVariantList(KviKvsVariant * v1)
+{
+ m_pList = new KviPointerList<KviKvsVariant>();
+ m_pList->setAutoDelete(true);
+ m_pList->append(v1);
+}
+
+KviKvsVariantList::KviKvsVariantList(KviKvsVariant * v1,KviKvsVariant * v2)
+{
+ m_pList = new KviPointerList<KviKvsVariant>();
+ m_pList->setAutoDelete(true);
+ m_pList->append(v1);
+ m_pList->append(v2);
+}
+
+KviKvsVariantList::KviKvsVariantList(KviKvsVariant * v1,KviKvsVariant * v2,KviKvsVariant * v3)
+{
+ m_pList = new KviPointerList<KviKvsVariant>();
+ m_pList->setAutoDelete(true);
+ m_pList->append(v1);
+ m_pList->append(v2);
+ m_pList->append(v3);
+}
+
+KviKvsVariantList::KviKvsVariantList(KviKvsVariant * v1,KviKvsVariant * v2,KviKvsVariant * v3,KviKvsVariant * v4)
+{
+ m_pList = new KviPointerList<KviKvsVariant>();
+ m_pList->setAutoDelete(true);
+ m_pList->append(v1);
+ m_pList->append(v2);
+ m_pList->append(v3);
+ m_pList->append(v4);
+}
+
+KviKvsVariantList::KviKvsVariantList(KviKvsVariant * v1,KviKvsVariant * v2,KviKvsVariant * v3,KviKvsVariant * v4,KviKvsVariant * v5)
+{
+ m_pList = new KviPointerList<KviKvsVariant>();
+ m_pList->setAutoDelete(true);
+ m_pList->append(v1);
+ m_pList->append(v2);
+ m_pList->append(v3);
+ m_pList->append(v4);
+ m_pList->append(v5);
+}
+
+KviKvsVariantList::KviKvsVariantList(KviKvsVariant * v1,KviKvsVariant * v2,KviKvsVariant * v3,KviKvsVariant * v4,KviKvsVariant * v5,KviKvsVariant * v6)
+{
+ m_pList = new KviPointerList<KviKvsVariant>();
+ m_pList->setAutoDelete(true);
+ m_pList->append(v1);
+ m_pList->append(v2);
+ m_pList->append(v3);
+ m_pList->append(v4);
+ m_pList->append(v5);
+ m_pList->append(v6);
+}
+
+KviKvsVariantList::KviKvsVariantList(KviKvsVariant * v1,KviKvsVariant * v2,KviKvsVariant * v3,KviKvsVariant * v4,KviKvsVariant * v5,KviKvsVariant * v6,KviKvsVariant * v7)
+{
+ m_pList = new KviPointerList<KviKvsVariant>();
+ m_pList->setAutoDelete(true);
+ m_pList->append(v1);
+ m_pList->append(v2);
+ m_pList->append(v3);
+ m_pList->append(v4);
+ m_pList->append(v5);
+ m_pList->append(v6);
+ m_pList->append(v7);
+}
+
+KviKvsVariantList::KviKvsVariantList(QString * s1)
+{
+ m_pList = new KviPointerList<KviKvsVariant>();
+ m_pList->setAutoDelete(true);
+ m_pList->append(new KviKvsVariant(s1));
+}
+
+KviKvsVariantList::KviKvsVariantList(QString * s1,QString * s2)
+{
+ m_pList = new KviPointerList<KviKvsVariant>();
+ m_pList->setAutoDelete(true);
+ m_pList->append(new KviKvsVariant(s1));
+ m_pList->append(new KviKvsVariant(s2));
+}
+
+KviKvsVariantList::KviKvsVariantList(QString * s1,QString * s2,QString * s3)
+{
+ m_pList = new KviPointerList<KviKvsVariant>();
+ m_pList->setAutoDelete(true);
+ m_pList->append(new KviKvsVariant(s1));
+ m_pList->append(new KviKvsVariant(s2));
+ m_pList->append(new KviKvsVariant(s3));
+}
+
+KviKvsVariantList::KviKvsVariantList(QString * s1,QString * s2,QString * s3,QString * s4)
+{
+ m_pList = new KviPointerList<KviKvsVariant>();
+ m_pList->setAutoDelete(true);
+ m_pList->append(new KviKvsVariant(s1));
+ m_pList->append(new KviKvsVariant(s2));
+ m_pList->append(new KviKvsVariant(s3));
+ m_pList->append(new KviKvsVariant(s4));
+}
+
+KviKvsVariantList::KviKvsVariantList(QString * s1,QString * s2,QString * s3,QString * s4,QString * s5)
+{
+ m_pList = new KviPointerList<KviKvsVariant>();
+ m_pList->setAutoDelete(true);
+ m_pList->append(new KviKvsVariant(s1));
+ m_pList->append(new KviKvsVariant(s2));
+ m_pList->append(new KviKvsVariant(s3));
+ m_pList->append(new KviKvsVariant(s4));
+ m_pList->append(new KviKvsVariant(s5));
+}
+
+KviKvsVariantList::KviKvsVariantList(QString * s1,QString * s2,QString * s3,QString * s4,QString * s5,QString * s6)
+{
+ m_pList = new KviPointerList<KviKvsVariant>();
+ m_pList->setAutoDelete(true);
+ m_pList->append(new KviKvsVariant(s1));
+ m_pList->append(new KviKvsVariant(s2));
+ m_pList->append(new KviKvsVariant(s3));
+ m_pList->append(new KviKvsVariant(s4));
+ m_pList->append(new KviKvsVariant(s5));
+ m_pList->append(new KviKvsVariant(s6));
+}
+
+KviKvsVariantList::~KviKvsVariantList()
+{
+ delete m_pList;
+}
+
+
+void KviKvsVariantList::setAutoDelete(bool bAutoDelete)
+{
+ m_pList->setAutoDelete(bAutoDelete);
+}
+
+void KviKvsVariantList::allAsString(QString &szBuffer)
+{
+ szBuffer = QString::null;
+ bool bFirst = true;
+ for(KviKvsVariant * v = first();v;v = next())
+ {
+ if(bFirst)bFirst = false;
+ else szBuffer.append(' ');
+ v->appendAsString(szBuffer);
+ }
+}
+
+bool KviKvsVariantList::firstAsString(QString &szBuffer)
+{
+ KviKvsVariant * v = first();
+ if(!v)return false;
+ v->asString(szBuffer);
+ return true;
+}
+
+bool KviKvsVariantList::nextAsString(QString &szBuffer)
+{
+ KviKvsVariant * v = next();
+ if(!v)return false;
+ v->asString(szBuffer);
+ return true;
+}
diff --git a/src/kvirc/kvs/kvi_kvs_variantlist.h b/src/kvirc/kvs/kvi_kvs_variantlist.h
new file mode 100644
index 00000000..09a24986
--- /dev/null
+++ b/src/kvirc/kvs/kvi_kvs_variantlist.h
@@ -0,0 +1,81 @@
+#ifndef _KVI_KVS_VARIANTLIST_H_
+#define _KVI_KVS_VARIANTLIST_H_
+//=============================================================================
+//
+// File : kvi_kvs_variantlist.h
+// Created on Sat 11 Oct 2003 02:20:51 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2003 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_pointerlist.h"
+#include "kvi_kvs_variant.h"
+
+
+
+class KVIRC_API KviKvsVariantList
+{
+public:
+ KviKvsVariantList();
+ KviKvsVariantList(KviKvsVariant * v1);
+ KviKvsVariantList(KviKvsVariant * v1,KviKvsVariant * v2);
+ KviKvsVariantList(KviKvsVariant * v1,KviKvsVariant * v2,KviKvsVariant * v3);
+ KviKvsVariantList(KviKvsVariant * v1,KviKvsVariant * v2,KviKvsVariant * v3,KviKvsVariant * v4);
+ KviKvsVariantList(KviKvsVariant * v1,KviKvsVariant * v2,KviKvsVariant * v3,KviKvsVariant * v4,KviKvsVariant * v5);
+ KviKvsVariantList(KviKvsVariant * v1,KviKvsVariant * v2,KviKvsVariant * v3,KviKvsVariant * v4,KviKvsVariant * v5,KviKvsVariant * v6);
+ KviKvsVariantList(KviKvsVariant * v1,KviKvsVariant * v2,KviKvsVariant * v3,KviKvsVariant * v4,KviKvsVariant * v5,KviKvsVariant * v6,KviKvsVariant * v7);
+ KviKvsVariantList(QString * s1);
+ KviKvsVariantList(QString * s1,QString * s2);
+ KviKvsVariantList(QString * s1,QString * s2,QString * s3);
+ KviKvsVariantList(QString * s1,QString * s2,QString * s3,QString * s4);
+ KviKvsVariantList(QString * s1,QString * s2,QString * s3,QString * s4,QString * s5);
+ KviKvsVariantList(QString * s1,QString * s2,QString * s3,QString * s4,QString * s5,QString * s6);
+ ~KviKvsVariantList();
+protected:
+ KviPointerList<KviKvsVariant> * m_pList;
+public:
+ KviKvsVariant * first(){ return m_pList->first(); };
+ KviKvsVariant * next(){ return m_pList->next(); };
+ KviKvsVariant * at(int iIdx){ return m_pList->at(iIdx); };
+ unsigned int count(){ return m_pList->count(); };
+
+ void clear(){ m_pList->clear(); };
+
+ void append(const QString &szParam){ m_pList->append(new KviKvsVariant(szParam)); };
+ void append(kvs_int_t iInteger){ m_pList->append(new KviKvsVariant(iInteger)); };
+ void append(kvs_real_t dReal){ m_pList->append(new KviKvsVariant(dReal)); };
+ void append(bool bBoolean){ m_pList->append(new KviKvsVariant(bBoolean)); };
+ void append(kvs_hobject_t hObject){ m_pList->append(new KviKvsVariant(hObject)); };
+ void append(KviKvsArray * pArray){ m_pList->append(new KviKvsVariant(pArray)); };
+ void append(KviKvsHash * pHash){ m_pList->append(new KviKvsVariant(pHash)); };
+
+ void append(KviKvsVariant * v){ m_pList->append(v); };
+ void prepend(KviKvsVariant * v){ m_pList->prepend(v); };
+
+ void setAutoDelete(bool bAutoDelete); // this is TRUE by default
+
+ void allAsString(QString &szBuffer);
+ // returns true if there was a first parameter at all
+ bool firstAsString(QString &szBuffer);
+ // returns true if there was a next parameter at all
+ bool nextAsString(QString &szBuffer);
+};
+
+#endif //!_KVI_KVS_VARIANTLIST_H_
diff --git a/src/kvirc/kvs/moc_kvi_kvs_action.cpp b/src/kvirc/kvs/moc_kvi_kvs_action.cpp
new file mode 100644
index 00000000..25fafd8c
--- /dev/null
+++ b/src/kvirc/kvs/moc_kvi_kvs_action.cpp
@@ -0,0 +1,92 @@
+/****************************************************************************
+** KviKvsAction meta object code from reading C++ file 'kvi_kvs_action.h'
+**
+** Created: Mon Feb 25 00:11:56 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_kvs_action.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviKvsAction::className() const
+{
+ return "KviKvsAction";
+}
+
+QMetaObject *KviKvsAction::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviKvsAction( "KviKvsAction", &KviKvsAction::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviKvsAction::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviKvsAction", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviKvsAction::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviKvsAction", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviKvsAction::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviAction::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviKvsAction", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviKvsAction.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviKvsAction::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviKvsAction" ) )
+ return this;
+ return KviAction::qt_cast( clname );
+}
+
+bool KviKvsAction::qt_invoke( int _id, QUObject* _o )
+{
+ return KviAction::qt_invoke(_id,_o);
+}
+
+bool KviKvsAction::qt_emit( int _id, QUObject* _o )
+{
+ return KviAction::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviKvsAction::qt_property( int id, int f, QVariant* v)
+{
+ return KviAction::qt_property( id, f, v);
+}
+
+bool KviKvsAction::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/kvs/moc_kvi_kvs_asyncdnsoperation.cpp b/src/kvirc/kvs/moc_kvi_kvs_asyncdnsoperation.cpp
new file mode 100644
index 00000000..0c436dde
--- /dev/null
+++ b/src/kvirc/kvs/moc_kvi_kvs_asyncdnsoperation.cpp
@@ -0,0 +1,107 @@
+/****************************************************************************
+** KviKvsAsyncDnsOperation meta object code from reading C++ file 'kvi_kvs_asyncdnsoperation.h'
+**
+** Created: Mon Feb 25 00:11:58 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_kvs_asyncdnsoperation.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviKvsAsyncDnsOperation::className() const
+{
+ return "KviKvsAsyncDnsOperation";
+}
+
+QMetaObject *KviKvsAsyncDnsOperation::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviKvsAsyncDnsOperation( "KviKvsAsyncDnsOperation", &KviKvsAsyncDnsOperation::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviKvsAsyncDnsOperation::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviKvsAsyncDnsOperation", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviKvsAsyncDnsOperation::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviKvsAsyncDnsOperation", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviKvsAsyncDnsOperation::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviKvsAsyncOperation::staticMetaObject();
+ static const QUParameter param_slot_0[] = {
+ { 0, &static_QUType_ptr, "KviDns", QUParameter::In }
+ };
+ static const QUMethod slot_0 = {"lookupTerminated", 1, param_slot_0 };
+ static const QUMethod slot_1 = {"dnsStartFailed", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "lookupTerminated(KviDns*)", &slot_0, QMetaData::Protected },
+ { "dnsStartFailed()", &slot_1, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviKvsAsyncDnsOperation", parentObject,
+ slot_tbl, 2,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviKvsAsyncDnsOperation.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviKvsAsyncDnsOperation::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviKvsAsyncDnsOperation" ) )
+ return this;
+ return KviKvsAsyncOperation::qt_cast( clname );
+}
+
+bool KviKvsAsyncDnsOperation::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: lookupTerminated((KviDns*)static_QUType_ptr.get(_o+1)); break;
+ case 1: dnsStartFailed(); break;
+ default:
+ return KviKvsAsyncOperation::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviKvsAsyncDnsOperation::qt_emit( int _id, QUObject* _o )
+{
+ return KviKvsAsyncOperation::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviKvsAsyncDnsOperation::qt_property( int id, int f, QVariant* v)
+{
+ return KviKvsAsyncOperation::qt_property( id, f, v);
+}
+
+bool KviKvsAsyncDnsOperation::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/kvs/moc_kvi_kvs_asyncoperation.cpp b/src/kvirc/kvs/moc_kvi_kvs_asyncoperation.cpp
new file mode 100644
index 00000000..72b75b28
--- /dev/null
+++ b/src/kvirc/kvs/moc_kvi_kvs_asyncoperation.cpp
@@ -0,0 +1,92 @@
+/****************************************************************************
+** KviKvsAsyncOperation meta object code from reading C++ file 'kvi_kvs_asyncoperation.h'
+**
+** Created: Mon Feb 25 00:12:00 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_kvs_asyncoperation.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviKvsAsyncOperation::className() const
+{
+ return "KviKvsAsyncOperation";
+}
+
+QMetaObject *KviKvsAsyncOperation::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviKvsAsyncOperation( "KviKvsAsyncOperation", &KviKvsAsyncOperation::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviKvsAsyncOperation::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviKvsAsyncOperation", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviKvsAsyncOperation::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviKvsAsyncOperation", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviKvsAsyncOperation::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QObject::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviKvsAsyncOperation", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviKvsAsyncOperation.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviKvsAsyncOperation::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviKvsAsyncOperation" ) )
+ return this;
+ return QObject::qt_cast( clname );
+}
+
+bool KviKvsAsyncOperation::qt_invoke( int _id, QUObject* _o )
+{
+ return QObject::qt_invoke(_id,_o);
+}
+
+bool KviKvsAsyncOperation::qt_emit( int _id, QUObject* _o )
+{
+ return QObject::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviKvsAsyncOperation::qt_property( int id, int f, QVariant* v)
+{
+ return QObject::qt_property( id, f, v);
+}
+
+bool KviKvsAsyncOperation::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/kvs/moc_kvi_kvs_dnsmanager.cpp b/src/kvirc/kvs/moc_kvi_kvs_dnsmanager.cpp
new file mode 100644
index 00000000..27284122
--- /dev/null
+++ b/src/kvirc/kvs/moc_kvi_kvs_dnsmanager.cpp
@@ -0,0 +1,104 @@
+/****************************************************************************
+** KviKvsDnsManager meta object code from reading C++ file 'kvi_kvs_dnsmanager.h'
+**
+** Created: Mon Feb 25 00:12:02 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_kvs_dnsmanager.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviKvsDnsManager::className() const
+{
+ return "KviKvsDnsManager";
+}
+
+QMetaObject *KviKvsDnsManager::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviKvsDnsManager( "KviKvsDnsManager", &KviKvsDnsManager::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviKvsDnsManager::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviKvsDnsManager", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviKvsDnsManager::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviKvsDnsManager", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviKvsDnsManager::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QObject::staticMetaObject();
+ static const QUParameter param_slot_0[] = {
+ { "pDns", &static_QUType_ptr, "KviDns", QUParameter::In }
+ };
+ static const QUMethod slot_0 = {"dnsLookupTerminated", 1, param_slot_0 };
+ static const QMetaData slot_tbl[] = {
+ { "dnsLookupTerminated(KviDns*)", &slot_0, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviKvsDnsManager", parentObject,
+ slot_tbl, 1,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviKvsDnsManager.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviKvsDnsManager::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviKvsDnsManager" ) )
+ return this;
+ return QObject::qt_cast( clname );
+}
+
+bool KviKvsDnsManager::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: dnsLookupTerminated((KviDns*)static_QUType_ptr.get(_o+1)); break;
+ default:
+ return QObject::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviKvsDnsManager::qt_emit( int _id, QUObject* _o )
+{
+ return QObject::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviKvsDnsManager::qt_property( int id, int f, QVariant* v)
+{
+ return QObject::qt_property( id, f, v);
+}
+
+bool KviKvsDnsManager::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/kvs/moc_kvi_kvs_object.cpp b/src/kvirc/kvs/moc_kvi_kvs_object.cpp
new file mode 100644
index 00000000..a578edcf
--- /dev/null
+++ b/src/kvirc/kvs/moc_kvi_kvs_object.cpp
@@ -0,0 +1,104 @@
+/****************************************************************************
+** KviKvsObject meta object code from reading C++ file 'kvi_kvs_object.h'
+**
+** Created: Mon Feb 25 00:12:06 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_kvs_object.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviKvsObject::className() const
+{
+ return "KviKvsObject";
+}
+
+QMetaObject *KviKvsObject::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviKvsObject( "KviKvsObject", &KviKvsObject::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviKvsObject::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviKvsObject", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviKvsObject::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviKvsObject", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviKvsObject::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QObject::staticMetaObject();
+ static const QUMethod slot_0 = {"delayedDie", 0, 0 };
+ static const QUMethod slot_1 = {"objectDestroyed", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "delayedDie()", &slot_0, QMetaData::Protected },
+ { "objectDestroyed()", &slot_1, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviKvsObject", parentObject,
+ slot_tbl, 2,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviKvsObject.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviKvsObject::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviKvsObject" ) )
+ return this;
+ return QObject::qt_cast( clname );
+}
+
+bool KviKvsObject::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: delayedDie(); break;
+ case 1: objectDestroyed(); break;
+ default:
+ return QObject::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviKvsObject::qt_emit( int _id, QUObject* _o )
+{
+ return QObject::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviKvsObject::qt_property( int id, int f, QVariant* v)
+{
+ return QObject::qt_property( id, f, v);
+}
+
+bool KviKvsObject::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/kvs/moc_kvi_kvs_popupmenu.cpp b/src/kvirc/kvs/moc_kvi_kvs_popupmenu.cpp
new file mode 100644
index 00000000..d69f7227
--- /dev/null
+++ b/src/kvirc/kvs/moc_kvi_kvs_popupmenu.cpp
@@ -0,0 +1,217 @@
+/****************************************************************************
+** KviKvsPopupMenuItemLabelHelper meta object code from reading C++ file 'kvi_kvs_popupmenu.h'
+**
+** Created: Mon Feb 25 00:12:08 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_kvs_popupmenu.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviKvsPopupMenuItemLabelHelper::className() const
+{
+ return "KviKvsPopupMenuItemLabelHelper";
+}
+
+QMetaObject *KviKvsPopupMenuItemLabelHelper::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviKvsPopupMenuItemLabelHelper( "KviKvsPopupMenuItemLabelHelper", &KviKvsPopupMenuItemLabelHelper::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviKvsPopupMenuItemLabelHelper::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviKvsPopupMenuItemLabelHelper", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviKvsPopupMenuItemLabelHelper::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviKvsPopupMenuItemLabelHelper", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviKvsPopupMenuItemLabelHelper::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QObject::staticMetaObject();
+ static const QUMethod slot_0 = {"labelDestroyed", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "labelDestroyed()", &slot_0, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviKvsPopupMenuItemLabelHelper", parentObject,
+ slot_tbl, 1,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviKvsPopupMenuItemLabelHelper.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviKvsPopupMenuItemLabelHelper::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviKvsPopupMenuItemLabelHelper" ) )
+ return this;
+ return QObject::qt_cast( clname );
+}
+
+bool KviKvsPopupMenuItemLabelHelper::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: labelDestroyed(); break;
+ default:
+ return QObject::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviKvsPopupMenuItemLabelHelper::qt_emit( int _id, QUObject* _o )
+{
+ return QObject::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviKvsPopupMenuItemLabelHelper::qt_property( int id, int f, QVariant* v)
+{
+ return QObject::qt_property( id, f, v);
+}
+
+bool KviKvsPopupMenuItemLabelHelper::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
+
+
+const char *KviKvsPopupMenu::className() const
+{
+ return "KviKvsPopupMenu";
+}
+
+QMetaObject *KviKvsPopupMenu::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviKvsPopupMenu( "KviKvsPopupMenu", &KviKvsPopupMenu::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviKvsPopupMenu::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviKvsPopupMenu", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviKvsPopupMenu::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviKvsPopupMenu", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviKvsPopupMenu::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviTalPopupMenu::staticMetaObject();
+ static const QUMethod slot_0 = {"setupMenuContents", 0, 0 };
+ static const QUParameter param_slot_1[] = {
+ { "itemId", &static_QUType_int, 0, QUParameter::In }
+ };
+ static const QUMethod slot_1 = {"itemClicked", 1, param_slot_1 };
+ static const QMetaData slot_tbl[] = {
+ { "setupMenuContents()", &slot_0, QMetaData::Private },
+ { "itemClicked(int)", &slot_1, QMetaData::Protected }
+ };
+ static const QUParameter param_signal_0[] = {
+ { "it", &static_QUType_ptr, "KviKvsPopupMenuItem", QUParameter::In }
+ };
+ static const QUMethod signal_0 = {"testModeItemClicked", 1, param_signal_0 };
+ static const QMetaData signal_tbl[] = {
+ { "testModeItemClicked(KviKvsPopupMenuItem*)", &signal_0, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviKvsPopupMenu", parentObject,
+ slot_tbl, 2,
+ signal_tbl, 1,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviKvsPopupMenu.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviKvsPopupMenu::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviKvsPopupMenu" ) )
+ return this;
+ return KviTalPopupMenu::qt_cast( clname );
+}
+
+#include <qobjectdefs.h>
+#include <qsignalslotimp.h>
+
+// SIGNAL testModeItemClicked
+void KviKvsPopupMenu::testModeItemClicked( KviKvsPopupMenuItem* t0 )
+{
+ if ( signalsBlocked() )
+ return;
+ QConnectionList *clist = receivers( staticMetaObject()->signalOffset() + 0 );
+ if ( !clist )
+ return;
+ QUObject o[2];
+ static_QUType_ptr.set(o+1,t0);
+ activate_signal( clist, o );
+}
+
+bool KviKvsPopupMenu::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: setupMenuContents(); break;
+ case 1: itemClicked((int)static_QUType_int.get(_o+1)); break;
+ default:
+ return KviTalPopupMenu::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviKvsPopupMenu::qt_emit( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->signalOffset() ) {
+ case 0: testModeItemClicked((KviKvsPopupMenuItem*)static_QUType_ptr.get(_o+1)); break;
+ default:
+ return KviTalPopupMenu::qt_emit(_id,_o);
+ }
+ return TRUE;
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviKvsPopupMenu::qt_property( int id, int f, QVariant* v)
+{
+ return KviTalPopupMenu::qt_property( id, f, v);
+}
+
+bool KviKvsPopupMenu::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/kvs/moc_kvi_kvs_processmanager.cpp b/src/kvirc/kvs/moc_kvi_kvs_processmanager.cpp
new file mode 100644
index 00000000..6afd6682
--- /dev/null
+++ b/src/kvirc/kvs/moc_kvi_kvs_processmanager.cpp
@@ -0,0 +1,116 @@
+/****************************************************************************
+** KviKvsProcessAsyncOperation meta object code from reading C++ file 'kvi_kvs_processmanager.h'
+**
+** Created: Mon Feb 25 00:12:10 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_kvs_processmanager.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviKvsProcessAsyncOperation::className() const
+{
+ return "KviKvsProcessAsyncOperation";
+}
+
+QMetaObject *KviKvsProcessAsyncOperation::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviKvsProcessAsyncOperation( "KviKvsProcessAsyncOperation", &KviKvsProcessAsyncOperation::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviKvsProcessAsyncOperation::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviKvsProcessAsyncOperation", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviKvsProcessAsyncOperation::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviKvsProcessAsyncOperation", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviKvsProcessAsyncOperation::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviKvsAsyncOperation::staticMetaObject();
+ static const QUMethod slot_0 = {"maxRunTimeExpired", 0, 0 };
+ static const QUMethod slot_1 = {"ping", 0, 0 };
+ static const QUMethod slot_2 = {"readStdout", 0, 0 };
+ static const QUMethod slot_3 = {"readStderr", 0, 0 };
+ static const QUMethod slot_4 = {"processExited", 0, 0 };
+ static const QUMethod slot_5 = {"selfDelete", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "maxRunTimeExpired()", &slot_0, QMetaData::Private },
+ { "ping()", &slot_1, QMetaData::Private },
+ { "readStdout()", &slot_2, QMetaData::Private },
+ { "readStderr()", &slot_3, QMetaData::Private },
+ { "processExited()", &slot_4, QMetaData::Private },
+ { "selfDelete()", &slot_5, QMetaData::Private }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviKvsProcessAsyncOperation", parentObject,
+ slot_tbl, 6,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviKvsProcessAsyncOperation.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviKvsProcessAsyncOperation::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviKvsProcessAsyncOperation" ) )
+ return this;
+ return KviKvsAsyncOperation::qt_cast( clname );
+}
+
+bool KviKvsProcessAsyncOperation::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: maxRunTimeExpired(); break;
+ case 1: ping(); break;
+ case 2: readStdout(); break;
+ case 3: readStderr(); break;
+ case 4: processExited(); break;
+ case 5: selfDelete(); break;
+ default:
+ return KviKvsAsyncOperation::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviKvsProcessAsyncOperation::qt_emit( int _id, QUObject* _o )
+{
+ return KviKvsAsyncOperation::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviKvsProcessAsyncOperation::qt_property( int id, int f, QVariant* v)
+{
+ return KviKvsAsyncOperation::qt_property( id, f, v);
+}
+
+bool KviKvsProcessAsyncOperation::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/kvs/moc_kvi_kvs_timermanager.cpp b/src/kvirc/kvs/moc_kvi_kvs_timermanager.cpp
new file mode 100644
index 00000000..05f81bcb
--- /dev/null
+++ b/src/kvirc/kvs/moc_kvi_kvs_timermanager.cpp
@@ -0,0 +1,92 @@
+/****************************************************************************
+** KviKvsTimerManager meta object code from reading C++ file 'kvi_kvs_timermanager.h'
+**
+** Created: Mon Feb 25 00:12:04 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_kvs_timermanager.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviKvsTimerManager::className() const
+{
+ return "KviKvsTimerManager";
+}
+
+QMetaObject *KviKvsTimerManager::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviKvsTimerManager( "KviKvsTimerManager", &KviKvsTimerManager::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviKvsTimerManager::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviKvsTimerManager", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviKvsTimerManager::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviKvsTimerManager", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviKvsTimerManager::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QObject::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviKvsTimerManager", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviKvsTimerManager.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviKvsTimerManager::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviKvsTimerManager" ) )
+ return this;
+ return QObject::qt_cast( clname );
+}
+
+bool KviKvsTimerManager::qt_invoke( int _id, QUObject* _o )
+{
+ return QObject::qt_invoke(_id,_o);
+}
+
+bool KviKvsTimerManager::qt_emit( int _id, QUObject* _o )
+{
+ return QObject::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviKvsTimerManager::qt_property( int id, int f, QVariant* v)
+{
+ return QObject::qt_property( id, f, v);
+}
+
+bool KviKvsTimerManager::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/kvs/moc_kvi_kvs_useraction.cpp b/src/kvirc/kvs/moc_kvi_kvs_useraction.cpp
new file mode 100644
index 00000000..b2bd5c6e
--- /dev/null
+++ b/src/kvirc/kvs/moc_kvi_kvs_useraction.cpp
@@ -0,0 +1,92 @@
+/****************************************************************************
+** KviKvsUserAction meta object code from reading C++ file 'kvi_kvs_useraction.h'
+**
+** Created: Mon Feb 25 00:12:12 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_kvs_useraction.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviKvsUserAction::className() const
+{
+ return "KviKvsUserAction";
+}
+
+QMetaObject *KviKvsUserAction::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviKvsUserAction( "KviKvsUserAction", &KviKvsUserAction::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviKvsUserAction::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviKvsUserAction", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviKvsUserAction::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviKvsUserAction", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviKvsUserAction::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviKvsAction::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviKvsUserAction", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviKvsUserAction.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviKvsUserAction::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviKvsUserAction" ) )
+ return this;
+ return KviKvsAction::qt_cast( clname );
+}
+
+bool KviKvsUserAction::qt_invoke( int _id, QUObject* _o )
+{
+ return KviKvsAction::qt_invoke(_id,_o);
+}
+
+bool KviKvsUserAction::qt_emit( int _id, QUObject* _o )
+{
+ return KviKvsAction::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviKvsUserAction::qt_property( int id, int f, QVariant* v)
+{
+ return KviKvsAction::qt_property( id, f, v);
+}
+
+bool KviKvsUserAction::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/module/Makefile.am b/src/kvirc/module/Makefile.am
new file mode 100644
index 00000000..c84487eb
--- /dev/null
+++ b/src/kvirc/module/Makefile.am
@@ -0,0 +1,5 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+EXTRA_DIST = *.cpp *.h
diff --git a/src/kvirc/module/kvi_mexlinkfilter.cpp b/src/kvirc/module/kvi_mexlinkfilter.cpp
new file mode 100644
index 00000000..58987389
--- /dev/null
+++ b/src/kvirc/module/kvi_mexlinkfilter.cpp
@@ -0,0 +1,35 @@
+//=============================================================================
+//
+// File : kvi_mexlinkfilter.cpp
+// Creation date : Wed Apr 11 2003 03:07 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+#include "kvi_mexlinkfilter.h"
+
+KviMexLinkFilter::KviMexLinkFilter(KviModuleExtensionDescriptor * d)
+: QObject(), KviModuleExtension(d)
+{
+}
+
+KviMexLinkFilter::~KviMexLinkFilter()
+{
+}
diff --git a/src/kvirc/module/kvi_mexlinkfilter.h b/src/kvirc/module/kvi_mexlinkfilter.h
new file mode 100644
index 00000000..aaf2a091
--- /dev/null
+++ b/src/kvirc/module/kvi_mexlinkfilter.h
@@ -0,0 +1,45 @@
+#ifndef _KVI_MEXLINKFILTER_H_
+#define _KVI_MEXLINKFILTER_H_
+//=============================================================================
+//
+// File : kvi_mexlinkfilter.h
+// Creation date : Wed Apr 11 2003 03:07 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_moduleextension.h"
+
+#include <qobject.h>
+
+class KviDataBuffer;
+
+class KVIRC_API KviMexLinkFilter : public QObject, public KviModuleExtension
+{
+ Q_OBJECT
+public:
+ KviMexLinkFilter(KviModuleExtensionDescriptor * d);
+ ~KviMexLinkFilter();
+public:
+ virtual void processData(char * buffer,int len) = 0;
+ virtual bool sendPacket(KviDataBuffer * pData) = 0;
+};
+
+#endif //!_KVI_MEXLINKFILTER_H_
diff --git a/src/kvirc/module/kvi_mexserverimport.cpp b/src/kvirc/module/kvi_mexserverimport.cpp
new file mode 100644
index 00000000..1dfc61eb
--- /dev/null
+++ b/src/kvirc/module/kvi_mexserverimport.cpp
@@ -0,0 +1,33 @@
+//
+// File : kvi_mexserverimport.cpp
+// Creation date : Wed Apr 9 2003 04:53 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#define __KVIRC__
+#include "kvi_mexserverimport.h"
+
+KviMexServerImport::KviMexServerImport(KviModuleExtensionDescriptor * d)
+: QObject() , KviModuleExtension(d)
+{
+}
+
+KviMexServerImport::~KviMexServerImport()
+{
+}
diff --git a/src/kvirc/module/kvi_mexserverimport.h b/src/kvirc/module/kvi_mexserverimport.h
new file mode 100644
index 00000000..f15ce7ae
--- /dev/null
+++ b/src/kvirc/module/kvi_mexserverimport.h
@@ -0,0 +1,45 @@
+#ifndef _KVI_MEXSERVERIMPORT_H_
+#define _KVI_MEXSERVERIMPORT_H_
+//=============================================================================
+//
+// File : kvi_mexserverimport.h
+// Creation date : Wed Apr 9 2003 04:53 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_ircserverdb.h"
+#include "kvi_moduleextension.h"
+#include <qobject.h>
+
+class KVIRC_API KviMexServerImport : public QObject, public KviModuleExtension
+{
+ Q_OBJECT
+public:
+ KviMexServerImport(KviModuleExtensionDescriptor * d);
+ ~KviMexServerImport();
+public:
+ virtual void start() = 0;
+ virtual void die() = 0;
+signals:
+ void server(const KviIrcServer &s,const char * network);
+};
+
+#endif //!_KVI_MEXSERVERIMPORT_H_
diff --git a/src/kvirc/module/kvi_mextoolbar.cpp b/src/kvirc/module/kvi_mextoolbar.cpp
new file mode 100644
index 00000000..4d868786
--- /dev/null
+++ b/src/kvirc/module/kvi_mextoolbar.cpp
@@ -0,0 +1,38 @@
+//
+// File : kvi_mextoolbar.cpp
+// Creation date : Thu Sep 12 22:11:47 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#define __KVIRC__
+
+#include "kvi_mextoolbar.h"
+#include "kvi_frame.h"
+
+KviMexToolBar::KviMexToolBar(KviModuleExtensionDescriptor * d,const QString &szName)
+: KviToolBar(szName,QT_DOCK_TOP) , KviModuleExtension(d)
+{
+ g_pFrame->registerModuleExtensionToolBar(this);
+}
+
+KviMexToolBar::~KviMexToolBar()
+{
+ g_pFrame->unregisterModuleExtensionToolBar(this);
+}
+
diff --git a/src/kvirc/module/kvi_mextoolbar.h b/src/kvirc/module/kvi_mextoolbar.h
new file mode 100644
index 00000000..d8176e87
--- /dev/null
+++ b/src/kvirc/module/kvi_mextoolbar.h
@@ -0,0 +1,38 @@
+#ifndef _KVI_MEXTOOLBAR_H_
+#define _KVI_MEXTOOLBAR_H_
+//
+// File : kvi_mextoolbar.h
+// Creation date : Thu Sep 12 22:11:45 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_moduleextension.h"
+#include "kvi_toolbar.h"
+
+class KviFrame;
+
+class KVIRC_API KviMexToolBar : public KviToolBar , public KviModuleExtension
+{
+ Q_OBJECT
+public:
+ KviMexToolBar(KviModuleExtensionDescriptor * d,const QString &szName);
+ ~KviMexToolBar();
+};
+
+#endif //_KVI_MEXTOOLBAR_H_
diff --git a/src/kvirc/module/kvi_module.cpp b/src/kvirc/module/kvi_module.cpp
new file mode 100644
index 00000000..f0e50d06
--- /dev/null
+++ b/src/kvirc/module/kvi_module.cpp
@@ -0,0 +1,379 @@
+//=============================================================================
+//
+// File : kvi_module.cpp
+// Creation date : Sat Aug 12 2000 20:30:29 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_module.h"
+#include "kvi_app.h"
+#include "kvi_settings.h"
+#include "kvi_kvs_eventmanager.h"
+#include "kvi_kvs_eventhandler.h"
+#include "kvi_modulemanager.h"
+
+#include <time.h>
+
+#if QT_VERSION < 300
+ #include <qobjectdict.h>
+#endif
+
+#ifdef COMPILE_CRYPT_SUPPORT
+ extern KviCryptEngineManager * g_pCryptEngineManager;
+#endif
+
+extern KVIRC_API KviModuleExtensionManager * g_pModuleExtensionManager;
+
+/*
+ @doc: modules
+ @type:
+ generic
+ @keyterms:
+ module loading, functions exported by modules, commands exported by modules,
+ module naming convention, module locking, plugins, functions exported by modules,
+ dots in command names,dots in function names
+ @title:
+ Loadable modules
+ @short:
+ KVIrc modules model
+ @body:
+ Starting from version 2.0.0, KVIrc included support for external plugins:
+ parts of code that can be loaded at runtime. The support was optional
+ and the main KVIrc functionality was indipendant of that support.
+ In version 3.0.0 the "modularity" has becomed one of the primary KVIrc features.
+ The pieces of external code are now named "modules". The module
+ support has been rewritten completely to extend the available features
+ and remove some "basic" problems that were present in 2.0.0.
+ This caused the old "plugins" to be binary incompatible with the new KVIrc
+ executable; anyway, most old "plugins" have been rewritten as "modules"
+ and included in the 3.0.0 distribution. Some of the basic KVIrc features
+ are based on modules now; for example, the help browser is now in an
+ external library called libkvihelp.so. This allows to keep the basic
+ KVIrc executable smaller and faster (in some phases).
+ Module loading is now "transparent" to the user. There are no
+ "load" and "unload" commands: the modules are automatically
+ loaded when the "core" requests them and unloaded after some (configurable) time
+ of inactivity.[br]
+
+ [big]Module naming convention[/big][br]
+ Every KVIrc module must have an "unique" name: the name is a single token,
+ made only of [b]lowercase[/b] letters , digits and underscores.
+ The real object file (library) is named "libkvi<name>.so".
+ This convention allows KVIrc to load modules when they are referenced
+ by name in the scripting code (the reference in the code is case insensitive
+ and remapped always to the lowercase version).[br]
+ [big]What a module can do[/big][br]
+ Basically, a module exports parts of the scripting language features.
+ For example, the module "about" exports the "aboutkvirc" command, that
+ shows the dialog that lists the KVIrc staff people. The dialog
+ will be effectively activated only few times (maybe only once) by a single
+ user: including it in a separate module allows keeping rarely used code out
+ of the KVIrc executable and saving some memory.
+ To activate the dialog you only need to execute the command:[br]
+ [example]
+ about.aboutkvirc
+ [/example]
+ That's all. KVIrc will load the necessary module, run the "aboutkvirc" command,
+ wait until the module is not used anymore and then unload it.[br]
+
+ [big]Transparent loading and unloading[/big][br]
+ Any command that has the form <name>.<command> is assumed to be
+ a module reference. KVIrc tries to locate the module named <name>, load it (if
+ not already in memory) and execute the <command>.
+ After the command execution KVIrc waits some user defined interval of time
+ (typically 2-3 minutes) and then check the module state: if the module
+ has not been referenced again, it is unloaded, otherwise it is kept in memory
+ for another period of time. To prevent accidentaly unloading a module
+ that has some windows or dialogs open, a module can lock itself in memory.
+ For example, the 'help' module lock itself when a help browser window is open
+ and unlocks itself when the last help browser window is closed.[br]
+ A module can export functions as well: the function names follow
+ exactly the same rule as the commands: $<name>.<function> is assumed
+ to be a reference to the <function> exported by module named <name>.
+
+ [big]Forced loading and unloading[/big]
+ All the modules export a "load" and a "unload" command.
+ [example]
+ about.load
+ [/example]
+ The example above will do nothing more than loading the "about"
+ module into the core memory.
+ [example]
+ about.unload
+ [/example]
+ The example above will forcibly unload the module from the core memory;
+ even if it is still locked.[br]
+ Please note that this can be dangerous in some situations...so
+ better check the KVIrc behaviour twice before making public any script
+ that uses this command.
+*/
+
+
+
+
+
+
+
+// FIXME: #warning "Move all the modules to the new locking method ?"
+
+
+KviModule::KviModule(kvi_library_t handle,KviModuleInfo * info,const char * name,const char * filename)
+: KviKvsModuleInterface()
+{
+ m_dlHandle = handle;
+ m_pModuleInfo = info;
+ m_szName = name;
+ m_szFileName = filename;
+// FIXME: this should become case insensitive and converted toUpper()
+ /*
+ m_pCommandDict = new KviPointerHashTable<const char *,KviModuleCommandParseProc>(17,false,true);
+ m_pCommandDict->setAutoDelete(true);
+ m_pFunctionDict = new KviPointerHashTable<const char *,KviModuleFunctionParseProc>(17,false,true);
+ m_pFunctionDict->setAutoDelete(true);
+ */
+ m_uLock = 0;
+ m_lastAccessTime = (long int)time(0);
+ /*
+ m_pGenericCommandParseProc = 0;
+ m_pGenericFunctionParseProc = 0;
+ */
+}
+
+KviModule::~KviModule()
+{
+#ifdef COMPILE_CRYPT_SUPPORT
+ unregisterCryptEngines();
+#endif
+ unregisterAllExtensions();
+ /*
+ unregisterAllEventHandlers();
+ delete m_pCommandDict;
+ delete m_pFunctionDict;
+ if(m_pGenericCommandParseProc)delete m_pGenericCommandParseProc;
+ if(m_pGenericFunctionParseProc)delete m_pGenericFunctionParseProc;
+ */
+}
+
+KviModuleExtensionDescriptor * KviModule::registerExtension(const KviStr &szType,const KviStr &szName,const QString &szVisibleName,KviModuleExtensionAllocRoutine r)
+{
+ QPixmap pix; // null
+ return g_pModuleExtensionManager->registerExtension(this,szType,szName,szVisibleName,r,pix);
+}
+
+KviModuleExtensionDescriptor * KviModule::registerExtension(const KviStr &szType,const KviStr &szName,const QString &szVisibleName,KviModuleExtensionAllocRoutine r,const QPixmap &icon)
+{
+ return g_pModuleExtensionManager->registerExtension(this,szType,szName,szVisibleName,r,icon);
+}
+
+KviModuleExtensionDescriptor * KviModule::findExtensionDescriptor(const KviStr &szType,const KviStr &szName)
+{
+ return g_pModuleExtensionManager->findExtensionDescriptor(szType,szName);
+}
+
+void KviModule::unregisterAllExtensions()
+{
+ g_pModuleExtensionManager->unregisterExtensionsByModule(this);
+}
+/*
+void KviModule::setGenericCommandParseProc(KviModuleCommandParseProc proc)
+{
+ if(m_pGenericCommandParseProc)delete m_pGenericCommandParseProc;
+ if(proc)
+ {
+ m_pGenericCommandParseProc = new KviModuleCommandParseProc(proc);
+ } else {
+ m_pGenericCommandParseProc = 0;
+ }
+}
+
+void KviModule::setGenericFunctionParseProc(KviModuleFunctionParseProc proc)
+{
+ if(m_pGenericFunctionParseProc)delete m_pGenericFunctionParseProc;
+ if(proc)
+ {
+ m_pGenericFunctionParseProc = new KviModuleFunctionParseProc(proc);
+ } else {
+ m_pGenericFunctionParseProc = 0;
+ }
+}
+
+void KviModule::completeCommand(const QString &cmd,KviPointerList<QString> * matches)
+{
+ KviPointerHashTableIterator<const char *,KviModuleCommandParseProc> it(*m_pCommandDict);
+
+ while(it.current())
+ {
+ if(KviQString::equalCIN(cmd,it.currentKey(),cmd.length()))
+ {
+ QString * s = new QString();
+ KviQString::sprintf(*s,"%s.%s",name(),it.currentKey());
+ matches->append(s);
+ }
+ ++it;
+ }
+}
+
+void KviModule::completeFunction(const QString &cmd,KviPointerList<QString> * matches)
+{
+ KviPointerHashTableIterator<const char *,KviModuleFunctionParseProc> it(*m_pFunctionDict);
+
+ while(it.current())
+ {
+ if(KviQString::equalCIN(cmd,it.currentKey(),cmd.length()))
+ {
+ QString * s = new QString();
+ KviQString::sprintf(*s,"%s.%s",name(),it.currentKey());
+ matches->append(s);
+ }
+ ++it;
+ }
+}
+
+
+void KviModule::unregisterMetaObject(const char * metaObjName)
+{
+#if QT_VERSION < 300
+// FIXME: #warning "We might need zeroing the d->slotAccess member of QMetaObject!"
+ if(!objectDict)return;
+ objectDict->remove(metaObjName);
+#endif
+}
+*/
+void KviModule::updateAccessTime()
+{
+ m_lastAccessTime = (long int)time(0);
+}
+
+unsigned int KviModule::secondsSinceLastAccess()
+{
+ return (unsigned int)(((long int)time(0)) - m_lastAccessTime);
+}
+/*
+void KviModule::registerCommand(const char * cmd,KviModuleCommandParseProc proc)
+{
+ if(m_pCommandDict->find(cmd))m_pCommandDict->remove(cmd);
+ m_pCommandDict->insert(cmd,new KviModuleCommandParseProc(proc));
+}
+
+void KviModule::unregisterCommand(const char * cmd)
+{
+ m_pCommandDict->remove(cmd);
+}
+
+void KviModule::unregisterAllCommands()
+{
+ delete m_pCommandDict;
+ m_pCommandDict = new KviPointerHashTable<const char *,KviModuleCommandParseProc>(17,false,true);
+ m_pCommandDict->setAutoDelete(true);
+}
+
+void KviModule::registerEventHandler(int evIdx,KviModuleEventParseProc proc)
+{
+ KviKvsOldModuleEventHandler * h = new KviKvsOldModuleEventHandler(proc,this);
+ KviKvsEventManager::instance()->addAppHandler(evIdx,h);
+}
+
+void KviModule::unregisterEventHandler(int evIdx)
+{
+ KviKvsEventManager::instance()->removeModuleAppHandler(evIdx,this);
+}
+
+void KviModule::registerRawNumericEventHandler(int evIdx,KviModuleEventParseProc proc)
+{
+ KviKvsOldModuleEventHandler * h = new KviKvsOldModuleEventHandler(proc,this);
+ KviKvsEventManager::instance()->addRawHandler(evIdx,h);
+}
+
+void KviModule::unregisterRawNumericEventHandler(int evIdx)
+{
+ KviKvsEventManager::instance()->removeModuleRawHandler(evIdx,this);
+}
+
+
+void KviModule::unregisterAllEventHandlers()
+{
+ KviKvsEventManager::instance()->removeAllModuleHandlers(this);
+}
+
+void KviModule::registerFunction(const char * fnc,KviModuleFunctionParseProc proc)
+{
+ if(m_pFunctionDict->find(fnc))m_pFunctionDict->remove(fnc);
+ m_pFunctionDict->insert(fnc,new KviModuleFunctionParseProc(proc));
+}
+
+void KviModule::unregisterFunction(const char * fnc)
+{
+ m_pFunctionDict->remove(fnc);
+}
+
+void KviModule::unregisterAllFunctions()
+{
+ delete m_pFunctionDict;
+ m_pFunctionDict = new KviPointerHashTable<const char *,KviModuleFunctionParseProc>(17,false,true);
+ m_pFunctionDict->setAutoDelete(true);
+}
+*/
+
+#ifdef COMPILE_CRYPT_SUPPORT
+
+void KviModule::registerCryptEngine(KviCryptEngineDescription * d)
+{
+ d->providerHandle = (void *)this;
+ g_pCryptEngineManager->registerEngine(d);
+}
+
+void KviModule::unregisterCryptEngine(const char * szName)
+{
+ g_pCryptEngineManager->unregisterEngine(szName);
+}
+
+void KviModule::unregisterCryptEngines()
+{
+ g_pCryptEngineManager->unregisterEngines((void *)this);
+}
+
+#endif
+
+void * KviModule::getSymbol(const char * symname)
+{
+ return kvi_library_symbol(handle(),symname);
+}
+
+void KviModule::getDefaultConfigFileName(KviStr &buffer)
+{
+ KviStr szName(KviStr::Format,"libkvi%s.kvc",m_szName.ptr());
+ g_pApp->getLocalKvircDirectory(buffer,KviApp::ConfigPlugins,szName.ptr());
+}
+
+void KviModule::getDefaultConfigFileName(QString &szBuffer)
+{
+ QString tmp = "libkvi";
+ tmp += m_szName.ptr();
+ tmp += ".kvc";
+ g_pApp->getLocalKvircDirectory(szBuffer,KviApp::ConfigPlugins,tmp);
+}
+
+bool KviModule::ctrl(const char * operation,void * param)
+{
+ if(!(m_pModuleInfo->ctrl_routine))return false;
+ return m_pModuleInfo->ctrl_routine(this,operation,param);
+}
diff --git a/src/kvirc/module/kvi_module.h b/src/kvirc/module/kvi_module.h
new file mode 100644
index 00000000..7c237643
--- /dev/null
+++ b/src/kvirc/module/kvi_module.h
@@ -0,0 +1,204 @@
+#ifndef _KVI_MODULE_H_
+#define _KVI_MODULE_H_
+
+//=============================================================================
+//
+// File : kvi_module.h
+// Creation date : Sat Aug 12 2000 18:34:22 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_string.h"
+//#include "kvi_command.h"
+#include "kvi_parameterlist.h"
+#include "kvi_library.h"
+#include "kvi_pointerlist.h"
+#include "kvi_moduleextension.h"
+#include "kvi_kvs_moduleinterface.h"
+
+#include "kvi_pointerhashtable.h"
+
+#ifdef COMPILE_CRYPT_SUPPORT
+ #include "kvi_crypt.h"
+#endif
+
+
+#ifdef COMPILE_ON_WINDOWS
+ #define KVIMODULEEXPORT extern "C" __declspec(dllexport)
+ #define KVIMODULEEXPORTDATA KVIMODULEEXPORT
+ #define KVIMODULEEXPORTFUNC KVIMODULEEXPORT
+#else
+ #define KVIMODULEEXPORT extern "C"
+ #define KVIMODULEEXPORTDATA
+ #define KVIMODULEEXPORTFUNC KVIMODULEEXPORT
+#endif
+
+class KviModule;
+
+
+typedef bool (*KviModuleSystemRoutine)(KviModule *);
+typedef bool (*KviModuleCtrlRoutine)(KviModule *,const char *,void *);
+
+
+typedef struct _KviModuleInfo
+{
+ const char * szKVIrcVersion; // must match KVI_VERSION if module version checking is in force
+ const char * szModuleName;
+ const char * szVersion;
+ const char * szCopyright;
+ const char * szDescription;
+ /*
+ * This routine is called when the module is loaded
+ */
+ KviModuleSystemRoutine init_routine;
+ /*
+ * This should return true if the module is actually
+ * not providing any service and can be unloaded from memory.
+ * Please note that this is not a mandatory lock: KVIrc may still unload
+ * the module even when this function returns false.
+ * The only assumption you can make is that KVIrc will not try
+ * to unload the module spontaneously: it will do it only if forced to
+ * (actually only by the user, but maybe later also by constrained resources).
+ * If this pointer is zero, KVIrc will assume that the module
+ * does not provide any service and will unload the module at the
+ * first spontaneous cleanup.
+ * There is a yet stronger locking method in KviModule::lock()
+ */
+ KviModuleSystemRoutine can_unload;
+ /*
+ * This is a generic control routine with prototype
+ * bool <name>(KviModule * m,const char * operation,void * param)
+ * KVIrc uses it to comunicate with bundled modules
+ * in most user-build modules this will be 0
+ */
+ KviModuleCtrlRoutine ctrl_routine;
+ /*
+ * This routine is called when the module is being unloaded
+ * Note that the module can be unloaded even if can_unload returns false:
+ * that's the user choice, KVIrc can only forcibly unload the module,
+ * so better cleanup everything here :)
+ */
+ KviModuleSystemRoutine cleanup_routine; // WARNING : g_pApp may be in the destructor and may have no frames open!
+} KviModuleInfo;
+
+// NOTE: The init and cleanup routines should NEVER rely on g_pApp existing!
+// so only "initialization and cleanup INTERNAL to the module" goes there!
+
+// A module should be prepared to be unloaded at ANY time, even if it is locked
+// or if can_unload returns false; locking is only a "suggestion" to the KVIrc core.
+
+// When unloaded, a module must ensure the destruction of all the resources that depend
+// on the module core code
+
+#define KVIRC_MODULE_STRUCTURE_SYMBOL "KVIrc_module_info"
+
+#define KVIRC_MODULE(_szModuleName,_szVersion,_szCopyright,_szDescription,_init_routine,_can_unload,_ctrl_routine,_cleanup_routine) \
+ \
+ KVIMODULEEXPORTDATA KviModuleInfo KVIrc_module_info= \
+ { \
+ KVI_VERSION, \
+ _szModuleName, \
+ _szVersion, \
+ _szCopyright, \
+ _szDescription, \
+ _init_routine, \
+ _can_unload, \
+ _ctrl_routine, \
+ _cleanup_routine \
+ };
+
+
+// old type parsing procedures
+/*
+typedef bool (*KviModuleCommandParseProc)(KviModule *,KviCommand *);
+typedef bool (*KviModuleFunctionParseProc)(KviModule *,KviCommand *,KviParameterList *,KviStr &);
+typedef bool (*KviModuleEventParseProc)(KviModule *,KviWindow *,KviParameterList *);
+*/
+
+
+class KVIRC_API KviModule : public KviKvsModuleInterface
+{
+ friend class KviPointerHashTable<const char *,KviModule>;
+ friend class KviModuleManager;
+ friend class KviUserParser;
+protected:
+ KviModule(kvi_library_t handle,KviModuleInfo * info,const char * name,const char * filename);
+public:
+ ~KviModule(); // must be public for KviPointerList
+private:
+ KviStr m_szName;
+ KviStr m_szFileName;
+ KviModuleInfo * m_pModuleInfo;
+ kvi_library_t m_dlHandle;
+ unsigned int m_uLock;
+ long int m_lastAccessTime;
+protected:
+ void updateAccessTime();
+ unsigned int secondsSinceLastAccess();
+public:
+ // name of this module: always low case , single word
+ const char * name(){ return m_szName.ptr(); };
+ // filename of this module (with NO path): formatted as "libkvi%s.so",name()
+ const char * filename(){ return m_szFileName.ptr(); };
+ kvi_library_t handle(){ return m_dlHandle; };
+ KviModuleInfo * moduleInfo(){ return m_pModuleInfo; };
+
+ //
+ // This is a locking method a bit stronger than the can_unload routine
+ // in the descriptor. It will behave in the same way plus
+ // the user will be unable to unload the module unless he will specify
+ // the -f switch to the <module>.unload command. Without the -f switch
+ // he will be just warned that the module is locked in memory and
+ // don't want to be unloaded.
+ // The usage of this method is encouraged
+ // only when you have blocking dialogs inside the module code, like the
+ // QMessageBox or QFileDialog static methods.
+ // In this case you're entering a modal event loop that you can't control
+ // and if some script will attempt to forcibly unload the module
+ // it will surely lead to a crash when the static method returns (jumping into no mans land).
+ // <module>.unload -f is in fact undocumented so people will substantially
+ // not use it (unless they are developers and they are reading this comment).
+ //
+ void lock(){ m_uLock++; };
+ void unlock(){ if(m_uLock > 0)m_uLock--; };
+ bool isLocked(){ return (m_uLock > 0); };
+
+ void * getSymbol(const char * symname);
+ bool ctrl(const char * operation,void * param);
+
+ void getDefaultConfigFileName(KviStr &buffer);
+ void getDefaultConfigFileName(QString &szBuffer);
+
+ static void unregisterMetaObject(const char * metaObjName);
+
+#ifdef COMPILE_CRYPT_SUPPORT
+ void registerCryptEngine(KviCryptEngineDescription * d);
+ void unregisterCryptEngine(const char * szName);
+ void unregisterCryptEngines();
+#endif
+
+ KviModuleExtensionDescriptor * registerExtension(const KviStr &szType,const KviStr &szName,const QString &szVisibleName,KviModuleExtensionAllocRoutine r);
+ KviModuleExtensionDescriptor * registerExtension(const KviStr &szType,const KviStr &szName,const QString &szVisibleName,KviModuleExtensionAllocRoutine r,const QPixmap &icon);
+ KviModuleExtensionDescriptor * findExtensionDescriptor(const KviStr &szType,const KviStr &szName);
+ void unregisterAllExtensions();
+};
+
+#endif //_KVI_MODULE_H_
diff --git a/src/kvirc/module/kvi_moduleextension.cpp b/src/kvirc/module/kvi_moduleextension.cpp
new file mode 100644
index 00000000..fb6a9ae6
--- /dev/null
+++ b/src/kvirc/module/kvi_moduleextension.cpp
@@ -0,0 +1,253 @@
+//
+// File : kvi_moduleextension.cpp
+// Creation date : Tue Sep 10 01:16:25 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#define __KVIRC__
+#define _KVI_MODULEEXTENSION_CPP_
+
+#include "kvi_moduleextension.h"
+#include "kvi_module.h"
+#include "kvi_modulemanager.h"
+#include "kvi_app.h"
+
+// created and destroyed in kvi_app.cpp
+KVIRC_API KviModuleExtensionManager * g_pModuleExtensionManager = 0;
+
+
+KviModuleExtensionDescriptor::KviModuleExtensionDescriptor(KviModule * m,const KviStr &szType,const KviStr &szName,const QString &szVisibleName,KviModuleExtensionAllocRoutine r,const QPixmap &pix)
+{
+ m_iId = KviApp::getGloballyUniqueId();
+
+ m_pModule = m;
+ m_szType = szType;
+ m_szName = szName;
+ m_szVisibleName = szVisibleName;
+ m_allocRoutine = r;
+ m_pObjectList = new KviPointerList<KviModuleExtension>;
+ m_pObjectList->setAutoDelete(false);
+ if(pix.isNull())m_pIcon = 0;
+ else m_pIcon = new QPixmap(pix);
+}
+
+KviModuleExtensionDescriptor::~KviModuleExtensionDescriptor()
+{
+ while(KviModuleExtension * e = m_pObjectList->first())e->die();
+ delete m_pObjectList;
+ if(m_pIcon)delete m_pIcon;
+}
+
+void KviModuleExtensionDescriptor::setIcon(const QPixmap &pix)
+{
+ if(m_pIcon)delete m_pIcon;
+ if(pix.isNull())m_pIcon = 0;
+ else m_pIcon = new QPixmap(pix);
+}
+
+KviModuleExtension * KviModuleExtensionDescriptor::allocate(KviWindow * pWnd,KviPointerHashTable<QString,QVariant> * pParams,void * pSpecial)
+{
+ KviModuleExtensionAllocStruct s;
+ s.pDescriptor = this;
+ s.pWindow = pWnd;
+ s.pParams = pParams;
+ s.pSpecial = pSpecial;
+ return m_allocRoutine(&s);
+}
+
+
+void KviModuleExtensionDescriptor::registerObject(KviModuleExtension * e)
+{
+ m_pObjectList->append(e);
+}
+
+void KviModuleExtensionDescriptor::unregisterObject(KviModuleExtension * e)
+{
+ m_pObjectList->removeRef(e);
+}
+
+
+
+
+
+
+
+
+KviModuleExtensionManager::KviModuleExtensionManager()
+{
+ m_pExtensionDict = new KviPointerHashTable<const char *,KviModuleExtensionDescriptorList>(17,false);
+ m_pExtensionDict->setAutoDelete(true);
+}
+
+KviModuleExtensionManager::~KviModuleExtensionManager()
+{
+ delete m_pExtensionDict;
+}
+
+KviModuleExtensionDescriptorList * KviModuleExtensionManager::getExtensionList(const KviStr &szType)
+{
+ g_pModuleManager->loadModulesByCaps(szType.ptr());
+ return m_pExtensionDict->find(szType.ptr());
+}
+
+KviModuleExtensionDescriptor * KviModuleExtensionManager::registerExtension(KviModule * m,const KviStr &szType,const KviStr &szName,const QString &szVisibleName,KviModuleExtensionAllocRoutine r,const QPixmap &icon)
+{
+ KviModuleExtensionDescriptor * d = new KviModuleExtensionDescriptor(m,szType,szName,szVisibleName,r,icon);
+ KviModuleExtensionDescriptorList * l = m_pExtensionDict->find(szType.ptr());
+ if(!l)
+ {
+ l = new KviModuleExtensionDescriptorList();
+ l->setAutoDelete(false);
+ m_pExtensionDict->insert(szType.ptr(),l);
+ }
+ l->append(d);
+ return d;
+}
+
+void KviModuleExtensionManager::unregisterExtensionsByModule(KviModule * m)
+{
+ KviPointerHashTableIterator<const char *,KviModuleExtensionDescriptorList> it(*m_pExtensionDict);
+ KviPointerList<KviStr> dying;
+ dying.setAutoDelete(true);
+ while(KviModuleExtensionDescriptorList * l = it.current())
+ {
+ KviPointerList<KviModuleExtensionDescriptor> dying2;
+ dying2.setAutoDelete(true);
+
+ for(KviModuleExtensionDescriptor * d = l->first();d;d = l->next())
+ {
+ if(d->module() == m)dying2.append(d);
+ }
+
+ for(KviModuleExtensionDescriptor * de = dying2.first();de;de = dying2.next())
+ {
+ l->removeRef(de);
+ }
+
+ if(l->isEmpty())dying.append(new KviStr(it.currentKey()));
+ ++it;
+ }
+ for(KviStr * li = dying.first();li;li = dying.next())
+ {
+ m_pExtensionDict->remove(li->ptr());
+ }
+}
+
+KviModuleExtensionDescriptorList * KviModuleExtensionManager::allocateExtensionGetDescriptorList(const KviStr &szType,const char * preloadModule)
+{
+ if(preloadModule)
+ {
+ KviModule * m = g_pModuleManager->getModule(preloadModule);
+ (void)m; // get rid of the unused warning :D
+ }
+
+ KviModuleExtensionDescriptorList * l = m_pExtensionDict->find(szType.ptr());
+ if(!l)
+ {
+ // retry : it might have been unloaded
+ g_pModuleManager->loadModulesByCaps(szType.ptr());
+ l = m_pExtensionDict->find(szType.ptr());
+ }
+
+ return l;
+}
+
+KviModuleExtensionDescriptor * KviModuleExtensionManager::findExtensionDescriptor(const KviStr &szType,const KviStr &szName)
+{
+ KviModuleExtensionDescriptorList * l = m_pExtensionDict->find(szType.ptr());
+ if(!l)return 0;
+
+ for(KviModuleExtensionDescriptor * d = l->first();d;d = l->next())
+ {
+ if(d->name().equalsCI(szName))return d;
+ }
+
+ return 0;
+}
+
+KviModuleExtension * KviModuleExtensionManager::allocateExtension(const KviStr &szType,const KviStr &szName,KviWindow * pWnd,KviPointerHashTable<QString,QVariant> * pParams,void * pSpecial,const char * preloadModule)
+{
+ KviModuleExtensionDescriptorList * l = allocateExtensionGetDescriptorList(szType,preloadModule);
+ if(!l)return 0;
+
+ KviModuleExtensionDescriptor * d;
+
+ for(d = l->first();d;d = l->next())
+ {
+ if(d->name().equalsCI(szName))return d->allocate(pWnd,pParams,pSpecial);
+ }
+
+ // uhm... not there ?
+ g_pModuleManager->loadModulesByCaps(szType.ptr());
+ // try again after loading the modules
+ // l = m_pExtensionDict->find(szType.ptr()); <--- this shouldn't change!
+ for(d = l->first();d;d = l->next())
+ {
+ if(d->name().equalsCI(szName))return d->allocate(pWnd,pParams,pSpecial);
+ }
+
+ // no way : no such extension
+
+ return 0;
+}
+
+
+KviModuleExtension * KviModuleExtensionManager::allocateExtension(const KviStr &szType,int id,KviWindow * pWnd,KviPointerHashTable<QString,QVariant> * pParams,void * pSpecial,const char * preloadModule)
+{
+ KviModuleExtensionDescriptorList * l = allocateExtensionGetDescriptorList(szType,preloadModule);
+ if(!l)return 0;
+
+ KviModuleExtensionDescriptor * d;
+ for(d = l->first();d;d = l->next())
+ {
+ if(d->id() == id)return d->allocate(pWnd,pParams,pSpecial);
+ }
+
+ // uhm... not there ?
+ g_pModuleManager->loadModulesByCaps(szType.ptr());
+ // try again after loading the modules
+ // l = m_pExtensionDict->find(szType.ptr()); <--- this shouldn't change!
+ for(d = l->first();d;d = l->next())
+ {
+ if(d->id() == id)return d->allocate(pWnd,pParams,pSpecial);
+ }
+ // no way : no such extension
+
+ return 0;
+}
+
+
+
+
+
+
+
+KviModuleExtension::KviModuleExtension(KviModuleExtensionDescriptor * d)
+: KviHeapObject()
+{
+ m_pDescriptor = d;
+ m_pDescriptor->registerObject(this);
+}
+
+KviModuleExtension::~KviModuleExtension()
+{
+ m_pDescriptor->unregisterObject(this);
+}
+
+
diff --git a/src/kvirc/module/kvi_moduleextension.h b/src/kvirc/module/kvi_moduleextension.h
new file mode 100644
index 00000000..0d1b2428
--- /dev/null
+++ b/src/kvirc/module/kvi_moduleextension.h
@@ -0,0 +1,143 @@
+#ifndef _KVI_MODULEEXTENSION_H_
+#define _KVI_MODULEEXTENSION_H_
+//
+// File : kvi_moduleextension.h
+// Creation date : Tue Sep 10 01:16:24 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+#include "kvi_string.h"
+#include "kvi_pointerlist.h"
+#include "kvi_heapobject.h"
+
+#include "kvi_pointerhashtable.h"
+#include <qpixmap.h>
+#include <qvariant.h>
+#include "kvi_pointerhashtable.h"
+
+class KviWindow;
+class KviModule;
+class KviModuleExtension;
+class KviModuleExtensionDescriptor;
+
+typedef struct _KviModuleExtensionAllocStructTag
+{
+ KviModuleExtensionDescriptor * pDescriptor; // module extension that this alloc routine refers to
+ KviWindow * pWindow; // may be 0!
+ KviPointerHashTable<QString,QVariant> * pParams; // parameter dict (may be 0!)
+ void * pSpecial; // special parameter passed to the alloc routine, may be 0
+} KviModuleExtensionAllocStruct;
+
+typedef KviModuleExtension * (*KviModuleExtensionAllocRoutine)(KviModuleExtensionAllocStruct *);
+
+class KVIRC_API KviModuleExtensionDescriptor
+{
+ friend class KviModuleExtension;
+ friend class KviModuleExtensionManager; // only the manager allocates and deallocates these structures
+protected:
+ KviModuleExtensionDescriptor(KviModule * m,const KviStr &szType,const KviStr &szName,const QString &szVisibleName,KviModuleExtensionAllocRoutine r,const QPixmap &pix);
+public: // this has to be public because of QPtrList... but should be protected
+ ~KviModuleExtensionDescriptor();
+private:
+ int m_iId; // unique id assigned at creation time
+ KviStr m_szType; // name of the service (toolbar , crypt engine...)
+ KviStr m_szName; // name of the extension
+ QString m_szVisibleName; // name that is VISIBLE and possibly translated
+ KviStr m_szAuthor; // Author (visible)
+ KviStr m_szDescription; // Description (visible!)
+ int m_iFlags; // Flags (0 if not applicable)
+ QPixmap * m_pIcon; // Icon (may be null!)
+ KviModuleExtensionAllocRoutine m_allocRoutine;
+ KviPointerList<KviModuleExtension> * m_pObjectList;
+
+ KviModule * m_pModule; // module pointer
+public:
+ // pParams ownership is NOT taken
+ KviModuleExtension * allocate(KviWindow * pWnd = 0,KviPointerHashTable<QString,QVariant> * pParams = 0,void * pSpecial = 0);
+
+ int id(){ return m_iId; };
+ KviModule * module(){ return m_pModule; };
+ const KviStr &type(){ return m_szType; };
+ const KviStr &name(){ return m_szName; };
+ const QString &visibleName(){ return m_szVisibleName; };
+ const KviStr &author(){ return m_szAuthor; };
+ const KviStr &description(){ return m_szDescription; };
+ const QPixmap * icon(){ return m_pIcon; };
+ int flags(){ return m_iFlags; };
+
+ void setAuthor(const KviStr &szAuthor){ m_szAuthor = szAuthor; };
+ void setDescription(const KviStr &szDescription){ m_szDescription = szDescription; };
+ void setVisibleName(const KviStr &szVisibleName){ m_szVisibleName = szVisibleName; };
+ void setFlags(int iFlags){ m_iFlags = iFlags; };
+ void setIcon(const QPixmap &pix);
+
+protected:
+ void registerObject(KviModuleExtension * e);
+ void unregisterObject(KviModuleExtension * e);
+};
+
+typedef KviPointerList<KviModuleExtensionDescriptor> KviModuleExtensionDescriptorList;
+
+class KviModuleExtensionManager;
+
+extern KVIRC_API KviModuleExtensionManager * g_pModuleExtensionManager;
+
+class KVIRC_API KviModuleExtensionManager
+{
+ friend class KviModule;
+ friend class KviApp;
+protected:
+ KviModuleExtensionManager(); // KviApp calls this
+ ~KviModuleExtensionManager(); // and this
+protected:
+ KviPointerHashTable<const char *,KviModuleExtensionDescriptorList> * m_pExtensionDict;
+protected:
+ // Only KviModule can call this
+ KviModuleExtensionDescriptor * registerExtension(KviModule * m,const KviStr &szType,const KviStr &szName,const QString &szVisibleName,KviModuleExtensionAllocRoutine r,const QPixmap &icon);
+ void unregisterExtensionsByModule(KviModule * m);
+public:
+ KviModuleExtensionDescriptor * findExtensionDescriptor(const KviStr &szType,const KviStr &szName);
+ static KviModuleExtensionManager * instance(){ return g_pModuleExtensionManager; };
+ KviModuleExtensionDescriptorList * getExtensionList(const KviStr &szType);
+ KviModuleExtension * allocateExtension(const KviStr &szType,const KviStr &szName,KviWindow * pWnd = 0,KviPointerHashTable<QString,QVariant> * pParams = 0,void * pSpecial = 0,const char * preloadModule = 0);
+ KviModuleExtension * allocateExtension(const KviStr &szType,int id,KviWindow * pWnd = 0,KviPointerHashTable<QString,QVariant> * pParams = 0,void * pSpecial = 0,const char * preloadModule = 0);
+private:
+ KviModuleExtensionDescriptorList * allocateExtensionGetDescriptorList(const KviStr &szType,const char * preloadModule);
+};
+
+
+
+class KVIRC_API KviModuleExtension : public KviHeapObject
+{
+public:
+ KviModuleExtension(KviModuleExtensionDescriptor * d);
+ virtual ~KviModuleExtension();
+private:
+ KviModuleExtensionDescriptor * m_pDescriptor;
+public:
+ static KviModuleExtensionManager * manager(){ return g_pModuleExtensionManager; };
+ KviModuleExtensionDescriptor * descriptor(){ return m_pDescriptor; };
+ // A module extension MUST implement die() as "delete this" <-- FIXME: this should be no longer necessary with KviHeapObject
+ virtual void die() = 0;
+};
+
+
+
+#endif //_KVI_MODULEEXTENSION_H_
diff --git a/src/kvirc/module/kvi_modulemanager.cpp b/src/kvirc/module/kvi_modulemanager.cpp
new file mode 100644
index 00000000..e13d2fd2
--- /dev/null
+++ b/src/kvirc/module/kvi_modulemanager.cpp
@@ -0,0 +1,369 @@
+//=============================================================================
+//
+// File : kvi_modulemanager.cpp
+// Creation date : Sat Aug 12 2000 20:32:11 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+#define __KVIRC__
+
+#define _KVI_MODULEMANAGER_CPP_
+
+#include "kvi_modulemanager.h"
+#include "kvi_fileutils.h"
+#include "kvi_app.h"
+#include "kvi_options.h"
+#include "kvi_frame.h"
+#include "kvi_console.h"
+#include "kvi_locale.h"
+#include "kvi_out.h"
+
+#include "kvi_library.h"
+
+#include <qdir.h>
+
+KviModuleManager * g_pModuleManager = 0;
+
+
+KviModuleManager::KviModuleManager()
+{
+ m_pModuleDict = new KviPointerHashTable<const char *,KviModule>(17,false);
+ m_pModuleDict->setAutoDelete(false);
+
+ m_pCleanupTimer = new QTimer(this);
+ connect(m_pCleanupTimer,SIGNAL(timeout()),this,SLOT(cleanupUnusedModules()));
+}
+
+KviModuleManager::~KviModuleManager()
+{
+ unloadAllModules();
+ delete m_pModuleDict;
+ delete m_pCleanupTimer;
+}
+
+
+void KviModuleManager::loadModulesByCaps(const char * caps,const char * dir)
+{
+ KviStr szCapsPath(KviStr::Format,"%s%ccaps%c%s%c",dir,KVI_PATH_SEPARATOR_CHAR,
+ KVI_PATH_SEPARATOR_CHAR,caps,KVI_PATH_SEPARATOR_CHAR);
+
+ QDir d(QString(szCapsPath.ptr()));
+
+ // FIXME: maybe check timestamps ? (old modules)
+
+ QStringList sl = d.entryList(QDir::Files | QDir::Readable | QDir::NoSymLinks);
+ for(QStringList::Iterator it = sl.begin();it != sl.end();++it)
+ {
+ KviStr modname = *it;
+ modname.cutToLast(KVI_PATH_SEPARATOR_CHAR);
+ getModule((*it).ascii());
+ }
+}
+
+void KviModuleManager::loadModulesByCaps(const char * caps)
+{
+ KviStr szDir;
+ g_pApp->getLocalKvircDirectory(szDir,KviApp::Plugins);
+ loadModulesByCaps(caps,szDir.ptr());
+ g_pApp->getGlobalKvircDirectory(szDir,KviApp::Plugins);
+ loadModulesByCaps(caps,szDir.ptr());
+}
+
+void KviModuleManager::completeModuleNames(const QString &path,const QString &word,KviPointerList<QString> * matches)
+{
+ QDir d(path);
+#ifdef COMPILE_ON_WINDOWS
+ d.setNameFilter("kvi*.dll");
+#else
+ d.setNameFilter("libkvi*.so");
+#endif
+ // FIXME: maybe check timestamps ? (old modules)
+
+ QStringList sl = d.entryList(QDir::Files | QDir::Readable | QDir::NoSymLinks);
+ for(QStringList::Iterator it = sl.begin();it != sl.end();++it)
+ {
+ QString * modname = new QString(*it);
+ KviQString::cutToLast(*modname,KVI_PATH_SEPARATOR_CHAR);
+ KviQString::cutToFirst(*modname,"kvi");
+ if(KviQString::equalCIN(word,*modname,word.length()))
+ {
+ KviQString::cutFromLast(*modname,".so");
+ if(!modname->isEmpty())
+ matches->append(modname);
+ else
+ delete modname;
+ } else delete modname;
+ }
+}
+
+void KviModuleManager::completeModuleNames(const QString &word,KviPointerList<QString> * matches)
+{
+ QString szDir;
+ // FIXME: Should check for duplicate names here!
+ g_pApp->getLocalKvircDirectory(szDir,KviApp::Plugins);
+ completeModuleNames(szDir,word,matches);
+ g_pApp->getGlobalKvircDirectory(szDir,KviApp::Plugins);
+ completeModuleNames(szDir,word,matches);
+}
+
+KviModule * KviModuleManager::findModule(const char * modName)
+{
+ KviModule * m = m_pModuleDict->find(modName);
+ if(m)m->updateAccessTime();
+ return m;
+}
+
+KviModule * KviModuleManager::getModule(const char * modName)
+{
+ KviModule * m = m_pModuleDict->find(modName);
+ if(!m)
+ {
+ if(!loadModule(modName)) return 0;
+ m = m_pModuleDict->find(modName);
+ }
+ if(m)m->updateAccessTime();
+ return m;
+}
+
+/*
+static bool default_module_cmd_load(KviModule *,KviCommand *)
+{
+ return true;
+}
+
+static bool default_module_cmd_unload(KviModule *m,KviCommand *)
+{
+ g_pModuleManager->unloadModule(m->name());
+ return true;
+}
+*/
+
+bool KviModuleManager::loadModule(const char * modName)
+{
+ if(findModule(modName))
+ {
+ //debug("MODULE %s ALREADY IN CORE MEMORY",modName);
+ return true;
+ }
+ QString tmp;
+ QString szName;
+#ifdef COMPILE_ON_WINDOWS
+ KviQString::appendFormatted(szName,"kvi%s.dll",modName);
+#else
+ KviQString::appendFormatted(szName,"libkvi%s.so",modName);
+#endif
+ szName=szName.lower();
+
+ g_pApp->getLocalKvircDirectory(tmp,KviApp::Plugins,szName);
+ if(!KviFileUtils::fileExists(tmp))
+ {
+ g_pApp->getGlobalKvircDirectory(tmp,KviApp::Plugins,szName);
+ }
+
+ if(!KviFileUtils::fileExists(tmp)) return false;
+ kvi_library_t handle = kvi_library_open(tmp.local8Bit().data());
+ if(!handle)
+ {
+ m_szLastError = kvi_library_error();
+ //debug("ERROR IN LOADING MODULE %s (%s): %s",modName,szName.ptr(),kvi_library_error());
+ return false;
+ }
+ KviModuleInfo * info = (KviModuleInfo *)kvi_library_symbol(handle,KVIRC_MODULE_STRUCTURE_SYMBOL);
+ if(!info)
+ {
+ m_szLastError = __tr2qs("No " KVIRC_MODULE_STRUCTURE_SYMBOL " symbol exported: not a kvirc module ?");
+ kvi_library_close(handle);
+ return false;
+ }
+ if(!info->szKVIrcVersion)
+ {
+ m_szLastError = __tr2qs("This module has no version informations: refusing to load it");
+ kvi_library_close(handle);
+ return false;
+ }
+ if(!KVI_OPTION_BOOL(KviOption_boolIgnoreModuleVersions))
+ {
+ if(!kvi_strEqualCS(info->szKVIrcVersion,KVI_VERSION))
+ {
+ m_szLastError = __tr2qs("This module was compiled for a different KVIrc version and can't be loaded");
+ m_szLastError += " (";
+ m_szLastError += info->szKVIrcVersion;
+ m_szLastError += ")";
+ kvi_library_close(handle);
+ return false;
+ }
+ }
+ KviModule * module = new KviModule(handle,info,modName,szName.utf8().data());
+
+ // the module is probably up.. the only thing can fail is the init_routine now
+ // load the message catalogue if any
+ KviStr szDir;
+ // it's more probable to have the translations in the global directory
+ // try it as first... (yes, catalogue overriding is impossible this way.. but , anybody cares ?)
+ g_pApp->getGlobalKvircDirectory(szDir,KviApp::Locale);
+
+ if(!KviLocale::loadCatalogue(modName,szDir.ptr()))
+ {
+ // try the local directory then
+ g_pApp->getLocalKvircDirectory(szDir,KviApp::Locale);
+ KviLocale::loadCatalogue(modName,szDir.ptr());
+ }
+
+ if(info->init_routine)
+ {
+ if(!((info->init_routine)(module)))
+ {
+ m_szLastError = __tr2qs("Failed to execute the init routine");
+ //debug("ERROR IN LOADING MODULE %s (%s): failed to execute the init routine",modName,szName.ptr());
+ kvi_library_close(handle);
+ delete module;
+ // kill the message catalogue too then
+ KviLocale::unloadCatalogue(modName);
+ return false;
+ }
+ }
+ m_pModuleDict->insert(modName,module);
+
+ /*
+ registerDefaultCommands(module);
+ */
+ module->registerDefaultCommands();
+
+ if(KVI_OPTION_BOOL(KviOption_boolCleanupUnusedModules))
+ {
+ if(!m_pCleanupTimer->isActive())
+ {
+ if(KVI_OPTION_UINT(KviOption_uintModuleCleanupTimerInterval) < 30)
+ KVI_OPTION_UINT(KviOption_uintModuleCleanupTimerInterval) = 30;
+ m_pCleanupTimer->start(KVI_OPTION_UINT(KviOption_uintModuleCleanupTimerInterval) * 1000);
+ }
+ }
+ // be verbose if needed....just make sure that we're not shutting down...
+ if(_OUTPUT_VERBOSE && !g_pApp->closingDown())
+ {
+ if(g_pFrame)g_pFrame->firstConsole()->output(KVI_OUT_VERBOSE,
+ __tr2qs("Loaded module '%s' (%s)"),modName,szName.utf8().data());
+ }
+ return true;
+}
+
+/*
+void KviModuleManager::registerDefaultCommands(KviModule * module)
+{
+ // Register the default commands
+ module->registerCommand("load",default_module_cmd_load);
+ module->registerCommand("unload",default_module_cmd_unload);
+}
+*/
+bool KviModuleManager::unloadModule(const char * modName)
+{
+ return unloadModule(findModule(modName));
+}
+
+bool KviModuleManager::unloadModule(KviModule * module)
+{
+ if(!module)return false;
+ moduleAboutToUnload(module);
+
+ if(module->moduleInfo()->cleanup_routine)
+ {
+ (module->moduleInfo()->cleanup_routine)(module);
+ }
+ KviStr szModName = module->name();
+ kvi_library_close(module->handle());
+ //debug("Closing module %s, dlclose returns %d",szModName.ptr(),dlclose(module->handle()));
+
+ m_pModuleDict->remove(szModName.ptr());
+ delete module;
+
+ // unload the message catalogues, if any
+ KviLocale::unloadCatalogue(szModName.ptr());
+
+ if(m_pModuleDict->isEmpty())
+ {
+ if(m_pCleanupTimer->isActive())m_pCleanupTimer->stop();
+ }
+
+ if(_OUTPUT_VERBOSE && !g_pApp->closingDown())
+ {
+ if(g_pFrame)g_pFrame->firstConsole()->output(KVI_OUT_VERBOSE,
+ __tr2qs("Unloaded module '%s'"),szModName.ptr());
+ }
+ return true;
+}
+
+bool KviModuleManager::hasLockedModules()
+{
+ KviPointerHashTableIterator<const char *,KviModule> it(*m_pModuleDict);
+ while(KviModule * m = it.current())
+ {
+ if(m->isLocked())return true;
+ ++it;
+ }
+ return false;
+}
+
+
+void KviModuleManager::cleanupUnusedModules()
+{
+ KviPointerHashTableIterator<const char *,KviModule> it(*m_pModuleDict);
+
+ KviPointerList<KviModule> lModulesToUnload;
+ lModulesToUnload.setAutoDelete(false);
+
+ while(it.current())
+ {
+ if(it.current()->secondsSinceLastAccess() > KVI_OPTION_UINT(KviOption_uintModuleCleanupTimeout))
+ {
+ if(it.current()->moduleInfo()->can_unload)
+ {
+ if((it.current()->moduleInfo()->can_unload)(it.current()))
+ lModulesToUnload.append(it.current());
+ else {
+ // the module don't want to be unloaded
+ // keep it memory for a while
+ it.current()->updateAccessTime();
+ }
+ } else {
+ if(!(it.current()->isLocked()))
+ lModulesToUnload.append(it.current());
+ }
+ }
+ ++it;
+ }
+
+ for(KviModule * pModule = lModulesToUnload.first();pModule;pModule = lModulesToUnload.next())
+ unloadModule(pModule);
+}
+
+void KviModuleManager::unloadAllModules()
+{
+ KviPointerHashTableIterator<const char *,KviModule> it(*m_pModuleDict);
+
+ KviPointerList<KviModule> lModulesToUnload;
+ lModulesToUnload.setAutoDelete(false);
+ while(KviModule * pModule = it.current())
+ {
+ lModulesToUnload.append(pModule);
+ ++it;
+ }
+
+ for(KviModule * pModule = lModulesToUnload.first();pModule;pModule = lModulesToUnload.next())
+ unloadModule(pModule);
+}
diff --git a/src/kvirc/module/kvi_modulemanager.h b/src/kvirc/module/kvi_modulemanager.h
new file mode 100644
index 00000000..bba3544e
--- /dev/null
+++ b/src/kvirc/module/kvi_modulemanager.h
@@ -0,0 +1,70 @@
+#ifndef _KVI_MODULEMANAGER_H_
+#define _KVI_MODULEMANAGER_H_
+
+//=============================================================================
+//
+// File : kvi_modulemanager.h
+// Creation date : Sat Aug 12 2000 20:31:17 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include <qobject.h>
+#include "kvi_pointerhashtable.h"
+#include <qtimer.h>
+#include "kvi_pointerlist.h"
+
+#include "kvi_module.h"
+
+class KVIRC_API KviModuleManager : public QObject
+{
+ Q_OBJECT
+public:
+ KviModuleManager();
+ ~KviModuleManager();
+private:
+ KviPointerHashTable<const char *,KviModule> * m_pModuleDict;
+ QTimer * m_pCleanupTimer;
+ KviStr m_szLastError;
+public:
+ KviStr & lastError(){ return m_szLastError; };
+ KviModule * findModule(const char * modName);
+ KviModule * getModule(const char * modName);
+ bool loadModule(const char * modName);
+ bool unloadModule(const char * modName);
+ bool unloadModule(KviModule * module);
+ void unloadAllModules();
+ //void registerDefaultCommands(KviModule * module);
+ void loadModulesByCaps(const char * caps,const char * dir);
+ void loadModulesByCaps(const char * caps);
+ bool hasLockedModules();
+ void completeModuleNames(const QString &word,KviPointerList<QString> * matches);
+protected:
+ void completeModuleNames(const QString &path,const QString &work,KviPointerList<QString> * matches);
+public slots:
+ void cleanupUnusedModules();
+signals:
+ void moduleAboutToUnload(KviModule * m);
+};
+
+extern KVIRC_API KviModuleManager * g_pModuleManager;
+
+#endif //_KVI_MODULEMANAGER_H_
diff --git a/src/kvirc/module/moc_kvi_mexlinkfilter.cpp b/src/kvirc/module/moc_kvi_mexlinkfilter.cpp
new file mode 100644
index 00000000..17ee562a
--- /dev/null
+++ b/src/kvirc/module/moc_kvi_mexlinkfilter.cpp
@@ -0,0 +1,94 @@
+/****************************************************************************
+** KviMexLinkFilter meta object code from reading C++ file 'kvi_mexlinkfilter.h'
+**
+** Created: Mon Feb 25 00:12:13 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_mexlinkfilter.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviMexLinkFilter::className() const
+{
+ return "KviMexLinkFilter";
+}
+
+QMetaObject *KviMexLinkFilter::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviMexLinkFilter( "KviMexLinkFilter", &KviMexLinkFilter::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviMexLinkFilter::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviMexLinkFilter", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviMexLinkFilter::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviMexLinkFilter", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviMexLinkFilter::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QObject::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviMexLinkFilter", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviMexLinkFilter.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviMexLinkFilter::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviMexLinkFilter" ) )
+ return this;
+ if ( !qstrcmp( clname, "KviModuleExtension" ) )
+ return (KviModuleExtension*)this;
+ return QObject::qt_cast( clname );
+}
+
+bool KviMexLinkFilter::qt_invoke( int _id, QUObject* _o )
+{
+ return QObject::qt_invoke(_id,_o);
+}
+
+bool KviMexLinkFilter::qt_emit( int _id, QUObject* _o )
+{
+ return QObject::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviMexLinkFilter::qt_property( int id, int f, QVariant* v)
+{
+ return QObject::qt_property( id, f, v);
+}
+
+bool KviMexLinkFilter::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/module/moc_kvi_mexserverimport.cpp b/src/kvirc/module/moc_kvi_mexserverimport.cpp
new file mode 100644
index 00000000..1ef542ef
--- /dev/null
+++ b/src/kvirc/module/moc_kvi_mexserverimport.cpp
@@ -0,0 +1,124 @@
+/****************************************************************************
+** KviMexServerImport meta object code from reading C++ file 'kvi_mexserverimport.h'
+**
+** Created: Mon Feb 25 00:12:15 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_mexserverimport.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviMexServerImport::className() const
+{
+ return "KviMexServerImport";
+}
+
+QMetaObject *KviMexServerImport::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviMexServerImport( "KviMexServerImport", &KviMexServerImport::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviMexServerImport::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviMexServerImport", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviMexServerImport::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviMexServerImport", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviMexServerImport::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QObject::staticMetaObject();
+ static const QUParameter param_signal_0[] = {
+ { "s", &static_QUType_ptr, "KviIrcServer", QUParameter::In },
+ { "network", &static_QUType_charstar, 0, QUParameter::In }
+ };
+ static const QUMethod signal_0 = {"server", 2, param_signal_0 };
+ static const QMetaData signal_tbl[] = {
+ { "server(const KviIrcServer&,const char*)", &signal_0, QMetaData::Public }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviMexServerImport", parentObject,
+ 0, 0,
+ signal_tbl, 1,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviMexServerImport.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviMexServerImport::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviMexServerImport" ) )
+ return this;
+ if ( !qstrcmp( clname, "KviModuleExtension" ) )
+ return (KviModuleExtension*)this;
+ return QObject::qt_cast( clname );
+}
+
+#include <qobjectdefs.h>
+#include <qsignalslotimp.h>
+
+// SIGNAL server
+void KviMexServerImport::server( const KviIrcServer& t0, const char* t1 )
+{
+ if ( signalsBlocked() )
+ return;
+ QConnectionList *clist = receivers( staticMetaObject()->signalOffset() + 0 );
+ if ( !clist )
+ return;
+ QUObject o[3];
+ static_QUType_ptr.set(o+1,&t0);
+ static_QUType_charstar.set(o+2,t1);
+ activate_signal( clist, o );
+}
+
+bool KviMexServerImport::qt_invoke( int _id, QUObject* _o )
+{
+ return QObject::qt_invoke(_id,_o);
+}
+
+bool KviMexServerImport::qt_emit( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->signalOffset() ) {
+ case 0: server((const KviIrcServer&)*((const KviIrcServer*)static_QUType_ptr.get(_o+1)),(const char*)static_QUType_charstar.get(_o+2)); break;
+ default:
+ return QObject::qt_emit(_id,_o);
+ }
+ return TRUE;
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviMexServerImport::qt_property( int id, int f, QVariant* v)
+{
+ return QObject::qt_property( id, f, v);
+}
+
+bool KviMexServerImport::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/module/moc_kvi_mextoolbar.cpp b/src/kvirc/module/moc_kvi_mextoolbar.cpp
new file mode 100644
index 00000000..a537e3f4
--- /dev/null
+++ b/src/kvirc/module/moc_kvi_mextoolbar.cpp
@@ -0,0 +1,94 @@
+/****************************************************************************
+** KviMexToolBar meta object code from reading C++ file 'kvi_mextoolbar.h'
+**
+** Created: Mon Feb 25 00:12:16 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_mextoolbar.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviMexToolBar::className() const
+{
+ return "KviMexToolBar";
+}
+
+QMetaObject *KviMexToolBar::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviMexToolBar( "KviMexToolBar", &KviMexToolBar::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviMexToolBar::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviMexToolBar", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviMexToolBar::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviMexToolBar", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviMexToolBar::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviToolBar::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviMexToolBar", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviMexToolBar.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviMexToolBar::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviMexToolBar" ) )
+ return this;
+ if ( !qstrcmp( clname, "KviModuleExtension" ) )
+ return (KviModuleExtension*)this;
+ return KviToolBar::qt_cast( clname );
+}
+
+bool KviMexToolBar::qt_invoke( int _id, QUObject* _o )
+{
+ return KviToolBar::qt_invoke(_id,_o);
+}
+
+bool KviMexToolBar::qt_emit( int _id, QUObject* _o )
+{
+ return KviToolBar::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviMexToolBar::qt_property( int id, int f, QVariant* v)
+{
+ return KviToolBar::qt_property( id, f, v);
+}
+
+bool KviMexToolBar::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/module/moc_kvi_modulemanager.cpp b/src/kvirc/module/moc_kvi_modulemanager.cpp
new file mode 100644
index 00000000..e9b815a0
--- /dev/null
+++ b/src/kvirc/module/moc_kvi_modulemanager.cpp
@@ -0,0 +1,129 @@
+/****************************************************************************
+** KviModuleManager meta object code from reading C++ file 'kvi_modulemanager.h'
+**
+** Created: Mon Feb 25 00:12:18 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_modulemanager.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviModuleManager::className() const
+{
+ return "KviModuleManager";
+}
+
+QMetaObject *KviModuleManager::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviModuleManager( "KviModuleManager", &KviModuleManager::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviModuleManager::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviModuleManager", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviModuleManager::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviModuleManager", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviModuleManager::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QObject::staticMetaObject();
+ static const QUMethod slot_0 = {"cleanupUnusedModules", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "cleanupUnusedModules()", &slot_0, QMetaData::Public }
+ };
+ static const QUParameter param_signal_0[] = {
+ { "m", &static_QUType_ptr, "KviModule", QUParameter::In }
+ };
+ static const QUMethod signal_0 = {"moduleAboutToUnload", 1, param_signal_0 };
+ static const QMetaData signal_tbl[] = {
+ { "moduleAboutToUnload(KviModule*)", &signal_0, QMetaData::Public }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviModuleManager", parentObject,
+ slot_tbl, 1,
+ signal_tbl, 1,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviModuleManager.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviModuleManager::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviModuleManager" ) )
+ return this;
+ return QObject::qt_cast( clname );
+}
+
+#include <qobjectdefs.h>
+#include <qsignalslotimp.h>
+
+// SIGNAL moduleAboutToUnload
+void KviModuleManager::moduleAboutToUnload( KviModule* t0 )
+{
+ if ( signalsBlocked() )
+ return;
+ QConnectionList *clist = receivers( staticMetaObject()->signalOffset() + 0 );
+ if ( !clist )
+ return;
+ QUObject o[2];
+ static_QUType_ptr.set(o+1,t0);
+ activate_signal( clist, o );
+}
+
+bool KviModuleManager::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: cleanupUnusedModules(); break;
+ default:
+ return QObject::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviModuleManager::qt_emit( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->signalOffset() ) {
+ case 0: moduleAboutToUnload((KviModule*)static_QUType_ptr.get(_o+1)); break;
+ default:
+ return QObject::qt_emit(_id,_o);
+ }
+ return TRUE;
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviModuleManager::qt_property( int id, int f, QVariant* v)
+{
+ return QObject::qt_property( id, f, v);
+}
+
+bool KviModuleManager::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/sparser/Makefile.am b/src/kvirc/sparser/Makefile.am
new file mode 100644
index 00000000..c84487eb
--- /dev/null
+++ b/src/kvirc/sparser/Makefile.am
@@ -0,0 +1,5 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+EXTRA_DIST = *.cpp *.h
diff --git a/src/kvirc/sparser/kvi_antispam.cpp b/src/kvirc/sparser/kvi_antispam.cpp
new file mode 100644
index 00000000..e1eec8af
--- /dev/null
+++ b/src/kvirc/sparser/kvi_antispam.cpp
@@ -0,0 +1,122 @@
+//
+// File : kvi_antispam.cpp
+// Creation date : Sun Apr 18 1999 05:36:55 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#define __KVIRC__
+#define _KVI_ANTISPAM_CPP_
+
+#include "kvi_antispam.h"
+#include "kvi_options.h"
+
+//[05:10:48] <Nataly19> :2http://www.extrababes.com5Go ahead punk, make my day !
+//[05:11:04] <treeman> :-��`��`�� -= for mp3's go to http://members.xoom.com/treemansmp3/start.htm
+// =- `��`��`��-
+//[05:10:51] <Suzi48498>:P*** **** squirms like CRAZY when **** licks between her ...
+//[05:12:11] <dea_> :Hi my name is **** and I just posted pics of myself and
+// other hot girls on my website at http://133.16.114.32/~guest/
+// tell me what you think!
+//[15:18:37] <JuL|aN^bZ> Join #Teens4eva...Have Fun PPl!!!
+//[15:19:37] <jkhnbn> Ciao, vai sul sito www.sitromba.3000.it ci sono un casino di
+// immagini e video porno gratisssssssssssssssss!!!!!
+//[15:19:46] <emjot``> zapraszam na kanal #poke super zabawa i opa za free !!!!!
+//[15:23:20] <AlExXxX> IMPORTANTE: Se cerchi foto e video HARD andate qu�:
+// http://216.221.175.58/cgi-bin/affiliate/ad.cgi?id=m4rines [automsg]
+//[15:23:36] <Jane> hi..join #hard sex channel --Venom ScRipT�-- SToRM iN THe DaRK!!
+//[15:23:47] <lovghgh> VISIT>> http://go.to/mp3andwarez/ << VISIT[15:23:47] <lovghgh> VISIT>> http://go.to/mp3andwarez/ << VISIT
+//[15:23:56] <PIMPOLO> HO le prove certe che si puo' far soldi dovendo solo ricevere sms pubblicitari sul cellulare.
+// Mi sono arrivati sms pubblicitari!!! Ti interessa ? ISCRIVITI CLICCANDO DIRETTAMENTE SU QUESTO SITO:
+// http://www.smscash.it/index.php3?pagid=reg&p_form=P&p_pres=0&cpre=95620&p_desc=1 (Messaggio Automatico) IR�Simpson
+
+
+// Yes...it is really annoying when I join a channel and
+// i am flooded with all that messages.
+// On large-newbie-high-traffic channels I get lagged
+// with the Query windows popping up with all that stuff.
+// What I can do ? Ignore queries ?
+// mmmmh
+//
+// kvi_mayBeSpam : try to guess if text may be a spam message.
+// Ideas:
+// - A spam message is generally a single PRIVMSG <mynick> :<text>
+// so this function should be (and is) called when
+// a PRIVMSG is received from a person that has no QUERY
+// window open yet.
+// - 95% of spam messages contain an URL inside (http,ftp,www) or a channel name.
+// - The other 5% contain words like auto-msg , msg me or query <nickname>
+// - There are some really common words:
+// free , mp3 , sex , teen , porn , pics , girls , babe , pass , user... , hard , join
+//
+// In this way we can get rid of a good 70% of spam msgs.
+
+// Just a minor change. This allows to easily add more "banned" words.
+// Maybe there should be a config dialog for that ? Some people like to get
+// porno pics, but don't like mp3's for example ... ;-)))
+// -- Kristoff
+
+// Ok...made this completely configurable....
+// The default spam words get "installed" by the default script
+// 09-01-2001: Pragma
+
+/*
+ @doc: antispam
+ @title:
+ Anti-spam protection
+ @keyterms:
+ spam
+ @body:
+ KVIrc contains a small spam detector, and can help you in avoiding that annoying flood
+ of queries popping up when you join large channels full of lamers.[br]
+ The spam detector works in a rather simple way: when someone sends you a private message
+ containing one or more "special words", and that user has no open query window,
+ so the message is treated as spam and is redirected to the console window or is ignored completely
+ (if you enable that option).[br]
+ The spam words to check for, can be set by the means of [cmd]option[/cmd] stringlistSpamWords.[br]
+ The anti-spam engine can be enabled by setting [cmd]option[/cmd] boolUseAntiSpamOnPrivmsg and
+ [cmd]option[/cmd] boolUseAntiSpamOnNotice to 1.[br]
+ @examples:
+ [example]
+ [comment]# This will cause "new-query private messages" containing[/comment]
+ [comment]# words "http:","#" (channel name),"ftp:".... to be redirected to the console[/comment]
+ [cmd]option[/cmd] stringlistSpamWords http:,#,ftp:,sex,free,chat,join
+ [cmd]option[/cmd] boolUseAntiSpamOnPrivmsg 1
+ [comment]# This will cause these messages to be completely ignored[/comment]
+ [cmd]option[/cmd] boolSilentAntiSpam 1
+ [/example]
+*/
+
+bool kvi_mayBeSpam(KviStr * msg,KviStr &spamWord)
+{
+ for(QStringList::Iterator it = KVI_OPTION_STRINGLIST(KviOption_stringlistSpamWords).begin();
+ it != KVI_OPTION_STRINGLIST(KviOption_stringlistSpamWords).end() ; ++it)
+ {
+ // FIXME : This is SLOOOOOOOOW (QString -> ascii translation!!)
+
+ const char * aux = (*it).ascii();
+ if(aux)
+ {
+ if(msg->findFirstIdx(aux,false) != -1)
+ {
+ spamWord = aux;
+ return true;
+ }
+ }
+ }
+ return false;
+}
diff --git a/src/kvirc/sparser/kvi_antispam.h b/src/kvirc/sparser/kvi_antispam.h
new file mode 100644
index 00000000..2d4f1c0f
--- /dev/null
+++ b/src/kvirc/sparser/kvi_antispam.h
@@ -0,0 +1,31 @@
+#ifndef _KVI_ANTISPAM_H_
+#define _KVI_ANTISPAM_H_
+//
+// File : kvi_antispam.h
+// Creation date : Sun Apr 18 1999 05:36:55 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include "kvi_settings.h"
+
+#include "kvi_string.h"
+
+extern KVIRC_API bool kvi_mayBeSpam(KviStr * msg,KviStr &spamWord);
+
+
+#endif // _KVI_ANTISPAM_H_
diff --git a/src/kvirc/sparser/kvi_ircmessage.cpp b/src/kvirc/sparser/kvi_ircmessage.cpp
new file mode 100644
index 00000000..512f03e5
--- /dev/null
+++ b/src/kvirc/sparser/kvi_ircmessage.cpp
@@ -0,0 +1,179 @@
+//=============================================================================
+//
+// File : kvi_ircmessage.cpp
+// Creation date : Fri Aug 2 23:08:57 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_ircmessage.h"
+#include "kvi_ircconnection.h"
+#include "kvi_console.h"
+
+KviIrcMessage::KviIrcMessage(const char * message,KviIrcConnection * pConnection)
+{
+ m_pConnection = pConnection;
+ m_pConsole = pConnection->console();
+ m_iFlags = 0;
+
+ const char * aux;
+ m_ptr = message;
+
+ m_pParams = new KviPointerList<KviStr>;
+ m_pParams->setAutoDelete(true);
+
+ //m_pcParams = new KviPointerList<QCString>;
+ //m_pcParams->setAutoDelete(true);
+
+ while(*m_ptr == ' ')++m_ptr;
+ const char * allParams = m_ptr; // just to be sure
+ if(*m_ptr)
+ {
+ if(*m_ptr == ':')
+ {
+ aux = ++m_ptr;
+ while(*m_ptr && (*m_ptr != ' '))++m_ptr;
+ m_szPrefix.extractFromString(aux,m_ptr);
+ while(*m_ptr == ' ')++m_ptr;
+ }
+ aux = m_ptr;
+ while(*m_ptr && (*m_ptr != ' '))++m_ptr;
+ m_szCommand.extractFromString(aux,m_ptr);
+ while(*m_ptr == ' ')++m_ptr;
+ allParams = m_ptr;
+ while(*m_ptr)
+ {
+ if(*m_ptr == ':')
+ {
+ ++m_ptr;
+ m_pParams->append(new KviStr(m_ptr));
+ //m_pcParams->append(new QCString(m_ptr));
+ break; // this was the last
+ } else {
+ aux = m_ptr;
+ while(*m_ptr && (*m_ptr != ' '))++m_ptr;
+ m_pParams->append(new KviStr(aux,m_ptr));
+ //m_pcParams->append(new QCString(KviStr(aux,m_ptr).ptr()));
+ while(*m_ptr == ' ')++m_ptr;
+ }
+ }
+ }
+ m_ptr = allParams;
+
+ m_iNumericCommand = (*m_szCommand.ptr() - '0') * 100;
+
+ if((m_szCommand.len() == 3) && (m_iNumericCommand <= 900) && (m_iNumericCommand >= 0))
+ {
+ aux = m_szCommand.ptr();
+ aux++;
+ if((*aux >= '0') && (*aux <= '9'))
+ {
+ m_iNumericCommand += (*aux - '0') * 10;
+ aux++;
+ if((*aux >= '0') && (*aux <= '9'))
+ {
+ m_iNumericCommand += (*aux - '0');
+ } else {
+ m_iNumericCommand = -1;
+ m_szCommand.toUpper();
+ }
+ } else {
+ m_iNumericCommand = -1;
+ m_szCommand.toUpper();
+ }
+ } else {
+ m_iNumericCommand = -1;
+ m_szCommand.toUpper();
+ }
+ //m_SafeTrailingString=QCString(m_pParams->last()->ptr());
+}
+
+KviIrcMessage::~KviIrcMessage()
+{
+ delete m_pParams;
+}
+
+void KviIrcMessage::decodeAndSplitMask(char * b,QString &szNick,QString &szUser,QString &szHost)
+{
+ static QString szWild("*");
+ char * p = b;
+
+ while(*p && *p != '!')p++;
+ if(*p)
+ {
+ if(p != b)
+ {
+ *p = 0;
+ szNick = m_pConnection->decodeText(b);
+ *p = '!';
+ } else {
+ szNick = szWild; // ???
+ }
+ } else {
+ if(p != b)szNick = m_pConnection->decodeText(b);
+ else szNick = szWild; // ???
+ szUser = szWild;
+ szHost = szWild;
+ return;
+ }
+ p++;
+ b = p;
+ while(*p && *p != '@')p++;
+ if(*p)
+ {
+ if(p != b)
+ {
+ *p = 0;
+ szUser = m_pConnection->decodeText(b);
+ *p = '@';
+ } else {
+ szUser = szWild; // ???
+ }
+ } else {
+ if(p != b)szUser = m_pConnection->decodeText(b);
+ else szUser = szWild; // ???
+ szHost = szWild;
+ return;
+ }
+ p++;
+ szHost = p; // hostnames are NOT encoded (at the moment...)
+
+}
+
+void KviIrcMessage::decodeAndSplitPrefix(QString &szNick,QString &szUser,QString &szHost)
+{
+ char * b;
+ if(m_szPrefix.hasData())b = m_szPrefix.ptr();
+ else {
+ m_szPrefix = connection()->currentServerName();
+ b = m_szPrefix.ptr();
+ }
+ decodeAndSplitMask(b,szNick,szUser,szHost);
+}
+
+
+const char * KviIrcMessage::safePrefix()
+{
+ if(m_szPrefix.hasData())return m_szPrefix.ptr();
+ m_szPrefix = connection()->currentServerName();
+ return m_szPrefix.ptr();
+}
+
diff --git a/src/kvirc/sparser/kvi_ircmessage.h b/src/kvirc/sparser/kvi_ircmessage.h
new file mode 100644
index 00000000..b77946f2
--- /dev/null
+++ b/src/kvirc/sparser/kvi_ircmessage.h
@@ -0,0 +1,106 @@
+#ifndef _KVI_IRCMESSAGE_H_
+#define _KVI_IRCMESSAGE_H_
+//=============================================================================
+//
+// File : kvi_ircmessage.h
+// Creation date : Fri Aug 2 23:08:55 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_pointerlist.h"
+#include "kvi_string.h"
+#include "kvi_qstring.h"
+#include "kvi_console.h"
+
+class KviIrcConnection;
+class KviIrcContext;
+class KviConneciton;
+
+#define KVI_IRCMSG_FLAG_HALTOUTPUT 1
+#define KVI_IRCMSG_FLAG_UNRECOGNIZED 2
+
+//
+// This is a single IRC message received from the server.
+// The message is strictly associated to the connection it came from.
+//
+// The IRC protocol is strictly 8 bit and thus the strings
+// are all 8 bit strings. The decoding of these strings should
+// be done on the targeting context (mainly channel or query...)
+//
+
+class KVIRC_API KviIrcMessage
+{
+public:
+ KviIrcMessage(const char * message,KviIrcConnection * pConnection);
+ ~KviIrcMessage();
+private:
+ const char * m_ptr; // shallow! never null
+ KviStr m_szPrefix; // the extracted prefix string
+ KviStr m_szCommand; // the extracted command (may be numeric)
+ KviPointerList<KviStr> * m_pParams; // the list of parameters
+ KviConsole * m_pConsole; // the console we're attacched to
+ KviIrcConnection * m_pConnection; // the connection we're attacched to
+ int m_iNumericCommand; // the numeric of the command (0 if non numeric)
+ int m_iFlags; // yes.. flags :D
+public:
+ KviConsole * console(){ return m_pConsole; };
+ KviIrcConnection * connection(){ return m_pConsole->connection(); };
+
+ bool isNumeric(){ return (m_iNumericCommand >= 0); };
+ const char * command(){ return m_szCommand.ptr(); };
+ KviStr * commandPtr(){ return &m_szCommand; };
+ int numeric(){ return m_iNumericCommand; };
+
+ KviStr * prefixPtr(){ return &m_szPrefix; };
+ const char * prefix(){ return m_szPrefix.ptr(); };
+ const char * safePrefix();
+ bool hasPrefix(){ return m_szPrefix.hasData(); };
+
+ bool isEmpty(){ return (m_szPrefix.isEmpty() && m_szCommand.isEmpty() && m_pParams->isEmpty()); };
+
+ int paramCount(){ return m_pParams->count(); };
+
+ const char * param(unsigned int idx){ return (idx < m_pParams->count()) ? m_pParams->at(idx)->ptr() : 0; };
+
+ const char * safeParam(unsigned int idx){ return (idx < m_pParams->count()) ? m_pParams->at(idx)->ptr() : KviStr::emptyString().ptr(); };
+
+ KviStr * paramString(unsigned int idx){ return m_pParams->at(idx); };
+
+ const char * trailing(){ KviStr * tr = m_pParams->last(); return tr ? tr->ptr() : 0; };
+ KviStr * trailingString(){ return m_pParams->last(); };
+ KviStr & safeTrailingString(){ KviStr * tr = m_pParams->last(); return tr ? *tr : KviStr::emptyString(); };
+ const char * safeTrailing(){ KviStr * tr = m_pParams->last(); return tr ? tr->ptr() : KviStr::emptyString().ptr(); };
+
+ const char * allParams(){ return m_ptr; };
+
+ KviStr * firstParam(){ return m_pParams->first(); };
+ KviStr * nextParam(){ return m_pParams->next(); };
+
+ void setHaltOutput(){ m_iFlags |= KVI_IRCMSG_FLAG_HALTOUTPUT; };
+ bool haltOutput(){ return (m_iFlags & KVI_IRCMSG_FLAG_HALTOUTPUT); };
+ void setUnrecognized(){ m_iFlags |= KVI_IRCMSG_FLAG_UNRECOGNIZED; };
+ bool unrecognized(){ return (m_iFlags & KVI_IRCMSG_FLAG_UNRECOGNIZED); };
+
+ void decodeAndSplitPrefix(QString &szNick,QString &szUser,QString &szHost);
+ void decodeAndSplitMask(char * mask,QString &szNick,QString &szUser,QString &szHost);
+};
+
+#endif //_KVI_IRCMESSAGE_H_
diff --git a/src/kvirc/sparser/kvi_numeric.h b/src/kvirc/sparser/kvi_numeric.h
new file mode 100644
index 00000000..2f5adee2
--- /dev/null
+++ b/src/kvirc/sparser/kvi_numeric.h
@@ -0,0 +1,430 @@
+#ifndef _KVI_NUMERIC_H_
+#define _KVI_NUMERIC_H_
+
+//
+// IRC - Internet Relay Chat, include/numeric.h
+// Copyright (C) 1990 Jarkko Oikarinen
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 1, or (at your option)
+// any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+//
+
+// Revisited by Szymon Stefanek 07 Jul 1998 (pragma at kvirc dot net)
+// Re-revisited again on 11 Feb 1999 (pragma at kvirc dot net)
+
+// We will need 4 digit replies for the new irc protocol
+// and then leave 50-100 numbers between logical groups...
+
+// In kvirc 3.0.0 this file is newer included (at least for now: 31.07.2000)
+// Today I have included it in kvi_sp_numeric.cpp (23.03.2001)
+
+// ==============================================================================================//
+//
+// E=EFnet hybrid 5.3p2
+// e=EFNet hybrid 5.3p2 with #ifdef
+// I=IRCnet 2.10.0p5
+// i=IRCnet, reserved according to Undernet (sic) numerics header
+// U=Undernet u2.10.04
+// u=Undernet u2.10.04 with #ifdef
+// D=DALnet 4.6.7.DF
+// d=DALnet 4.6.7.DF, redundant
+// O=openprojects (dancer ircd)
+//
+
+// = 000-199 ====================================================================================//
+//
+// Reserve numerics 000-099 for server-client connections where the client
+// is local to the server. If any server is passed a numeric in this range
+// from another server then it is remapped to 100-199. -avalon
+//
+
+
+#define RPL_WELCOME 1 /* :Welcome to the Internet Relay Network %s [I,E,U,D] # */
+#define RPL_YOURHOST 2 /* :Your host is %s, running version %s [I,E,U,D] # */
+#define RPL_CREATED 3 /* :This server was created %s [I,E,U,D] # */
+#define RPL_MYINFO 4 /* <server_name> <srv_version> <u_modes> <ch_modes> [I,E,U,D] # */
+#define RPL_BOUNCE 5 /* :Try server %s, port %d [I] # */
+#define RPL_PROTOCTL 5 /* %s :are available on this server [D] # */
+#define RPL_MAP 5 /* :%s%s [U] # */
+#define RPL_MAPMORE 6 /* :%s%s --> *more* [U] # */
+#define RPL_MAPEND 7 /* :End of /MAP [U] # */
+//[03:45:18] [dune.webchat.org][007] newbie dune.webchat.org 1037760291 :Tue, 19 Nov 2002 18:44:51 -0800
+
+#define RPL_SNOMASK 8 /* %d :: Server notice mask (%#x) [U] # */
+//[03:45:18] [dune.webchat.org][008] newbie -/NAJgAxq7HQPwnkK^ 124963541 :This is your Session ID and Session Key.
+
+#define RPL_STATMEMTOT 9 /* %u %u :Bytes Blocks [U] # */
+//[03:45:18] [dune.webchat.org][009] newbie ASCII :Current character mapping.
+
+#define RPL_STATMEM 10 /* %u %u %s [U] # */
+#define RPL_BOUNCENEW 10 /* :Try server %s, port %d [I-NEW] # */
+// RPL_???????? 11,12,13
+#define RPL_YOURCOOKIE 14 /* <cookie> :is your reconnection cookie [E,i?] # */
+
+#define RPL_CONNECTING 20 //:irc.dotsrc.org 020 * :Please wait while we process your connection.
+
+
+
+// = 200-399 ====================================================================================//
+//
+// Command replies
+//
+
+#define RPL_TRACELINK 200 /* [I,E,U,D] "Link <version> <destination> <next server> <next-server-TS-version><zflag> <link-time> <sendQ> <prev-server-sendQ>" [I,E,U,D] */
+#define RPL_TRACECONNECTING 201 /* [I,E,U,D] "Try. %d %s"*/
+#define RPL_TRACEHANDSHAKE 202 /* [I,E,U,D] "H.S. %d %s"*/
+#define RPL_TRACEUNKNOWN 203 /* [I,E,U,D] "???? %d %s %d"*/
+#define RPL_TRACEOPERATOR 204 /* [I,E,U,D] "Oper %d %s"*/
+#define RPL_TRACEUSER 205 /* [I,E,U,D] "User %d %s"*/
+#define RPL_TRACESERVER 206 /* [I,E,U,D] "Serv <class> <int>S <int>C <server> <nick!user|*!*>@<host|server> <TS-version><zflag>" [I,E,U,D] */
+#define RPL_TRACENEWTYPE 208 /* [I,E,U,D] "<newtype> 0 %s"*/
+#define RPL_TRACECLASS 209 /* [I,E,U,D] "Class %d %d"*/
+#define RPL_TRACERECONNECT 210 /* [I] ??? */
+#define RPL_STATSLINKINFO 211 /* [I,E,U,D] */
+#define RPL_STATSCOMMANDS 212 /* [I,E,U,D] "%s %u %u"*/
+#define RPL_STATSCLINE 213 /* [I,E,U,D] "%c %s * %s %d %d"*/
+#define RPL_STATSNLINE 214 /* [I,E,U,D] "%c %s * %s %d %d"*/
+#define RPL_STATSILINE 215 /* [I,E,U,D] "%c %s * %s %d %d"*/
+#define RPL_STATSKLINE 216 /* [I,E,U,D] */
+#define RPL_STATSPLINE 217 /* [U] */
+#define RPL_STATSQLINE 217 /* [I,E,U,D] */
+#define RPL_STATSYLINE 218 /* [I,E,U,D] */
+#define RPL_ENDOFSTATS 219 // [I,E,U,D] */
+// #define RPL_???? 220
+#define RPL_UMODEIS 221 /* <nick> <mode> [I,E,U,D] # */
+#define RPL_STATSBLINE 222 /* [E] */
+#define RPL_SQLINE_NICK 222 /* [D] */
+#define RPL_STATSELINE 223 /* [E] */
+#define RPL_STATSFLINE 224 /* [E] */
+#define RPL_STATSDLINE 225 /* [E] */
+// RPL_?????????? 226-230
+#define RPL_SERVICEINFO 231 /* [I,U,D] */
+#define RPL_ENDOFSERVICES 232 /* [I,U,D] */
+#define RPL_SERVICE 233 /* [I,U,D] */
+#define RPL_SERVLIST 234 /* [I,E,U,D] */
+#define RPL_SERVLISTEND 235 /* [I,E,U,D] */
+// RPL_?????????? 236-238
+#define RPL_STATSIAUTH 239 /* [I] # */
+#define RPL_STATSVLINE 240 /* [I] # */
+#define RPL_STATSLLINE 241 /* [I,E,U,D] # */
+#define RPL_STATSUPTIME 242 /* [I,E,U,D] # */
+#define RPL_STATSOLINE 243 /* [I,E,U,D] # */
+#define RPL_STATSHLINE 244 /* [I,E,U,D] # */
+#define RPL_STATSSLINE 245 /* [I,E,u,D] # */
+#define RPL_STATSPING 246 /* [I] # */
+#define RPL_STATSTLINE 246 /* [U] # */
+#define RPL_STATSBLINE_I 247 /* [I] # */
+#define RPL_STATSGLINE 247 /* [U] # */
+#define RPL_STATSXLINE 247 /* [D] # */
+#define RPL_STATSDEFINE 248 /* [I] # */
+#define RPL_STATSULINE 248 /* [U,D] # */
+#define RPL_STATSDEBUG 249 /* [I,E,U,D] # */
+#define RPL_STATSCONN 250 /* [e,U,D,O] # */
+#define RPL_STATSDLINE_I 250 /* [I] # */
+#define RPL_LUSERCLIENT 251 /* ":There are %d users and %d invisible on %d servers" [I,E,U,D,O] # */
+#define RPL_LUSEROP 252 /* "%d :IRC Operators online" [I,E,U,D,O] # */
+#define RPL_LUSERUNKNOWN 253 /* "%d :unknown connection(s)" [I,E,U,D,O] # */
+#define RPL_LUSERCHANNELS 254 /* "%d :channels formed" [I,E,U,D,O] # */
+#define RPL_LUSERME 255 /* ":I have %d clients and %d servers" [I,E,U,D,O] # */
+#define RPL_ADMINME 256 /* ":Administrative info about %s" [I,E,U,D] */
+#define RPL_ADMINLOC1 257 /* ":%s" [I,E,U,D] */
+#define RPL_ADMINLOC2 258 /* ":%s" [I,E,U,D] */
+#define RPL_ADMINEMAIL 259 /* ":%s" [I,E,U,D] */
+// RPL_????????? 260
+#define RPL_TRACELOG 261 /* [I,E,U,D] */
+#define RPL_TRACEEND 262 /* [I,E] */
+#define RPL_TRACEPING 262 /* [U] */
+//[14:28:51] [ircd.tin.it][263] [newbie] LINKS :Please wait a while and try again.
+#define RPL_TRYAGAIN 263 /* [I] */
+#define RPL_LOAD2HI 263 /* ":Server load is temporarily too heavy. Please wait a while and try again." [E] */
+// RPL_??????? 264
+#define RPL_LOCALUSERS 265 /* ":Current local users: %d Max: %s" [e,D,O] # */
+#define RPL_GLOBALUSERS 266 /* ":Current global users: %d Max: %d" [e,D,O] # */
+#define RPL_SHAREDUSERS 267 /* ":Current shared users: %d Max: %d" [I] # */
+// RPL_??????? 267-270
+#define RPL_SILELIST 271 /* [U,D] */
+#define RPL_ENDOFSILELIST 272 /* [U,D] */
+#define RPL_STATSDELTA 274 /* "<timedelta>" [i,E] */
+#define RPL_STATSDLINE_U 275 /* [U,D] */
+#define RPL_WHOISSSL 275 /* [AzzurraNET] %s :is using a secure connection (SSL) # */
+// RPL_??????? 276-279
+#define RPL_GLIST 280 /* [U] */
+#define RPL_ENDOFGLIST 281 /* [U] */
+// RPL_??????? 282-289
+#define RPL_HELPHDR 290 /* [D] */
+#define RPL_HELPOP 291 /* [D] */
+#define RPL_HELPTLR 292 /* [D] */
+#define RPL_HELPHLP 293 /* [D] */
+#define RPL_HELPFWD 294 /* [D] */
+#define RPL_HELPIGN 295 /* [D] */
+// RPL_??????? 296-299
+#define RPL_NONE 300 /* [I,E,U,D] */
+#define RPL_AWAY 301 /* ":fontana.openprojects.net 301 Pragma Nick :sleep :) [I,E,U,D] # */
+#define RPL_USERHOST 302 /* ":up to 5 userhost replies" [I,E,U,D] # */
+#define RPL_ISON 303 /* ":<list of present nicks>" [I,E,U,D] # */
+#define RPL_TEXT 304 /* [I,E,U,D] */
+#define RPL_UNAWAY 305 /* [I,E,U,D] # */
+#define RPL_NOWAWAY 306 /* [I,E,U,D] # */
+//#define RPL_USERIP 307 /* [U] */
+#define RPL_WHOISREGNICK 307 /* "???" [D] # */
+#define RPL_WHOISADMIN 308 /* "???" [d] # */
+#define RPL_WHOISSADMIN 309 /* "???" [d] # */
+#define RPL_WHOISHELPOP 310 /* "???" [D] # */
+
+#define RPL_WHOISUSER 311 /* "%s %s %s * :%s" [I,E,U,D] # */
+#define RPL_WHOISSERVER 312 /* "%s %s :%s" [I,E,U,D] # */
+#define RPL_WHOISOPERATOR 313 /* "%s :is an IRC Operator" [I,E,U,D] # */
+#define RPL_WHOWASUSER 314 /* "%s %s %s * :%s" [I,E,U,D] # */
+#define RPL_ENDOFWHO 315 /* "<channel> :End of /WHO list." [I,E,U,D] # */
+#define RPL_WHOISCHANOP 316 /* "???" [I,E,D] # */
+#define RPL_WHOISIDLE 317 /* "%s %ld %ld :seconds idle, signon time" [I,E,U,D] # */
+#define RPL_ENDOFWHOIS 318 /* "%s :End of /WHOIS list." [I,E,U,D] # */
+#define RPL_WHOISCHANNELS 319 /* "%s :%s" [I,E,U,D] # */
+#define RPL_WHOISIDENTIFIED 320 /* %s :is an identified user [O] # */
+#define RPL_LISTSTART 321 /* Channel :Users Name [I,E,U,D] # */
+#define RPL_LIST 322 /* <channel> <users> :<topic> [I,E,U,D] # */
+#define RPL_LISTEND 323 /* :End of /LIST [I,E,U,D] # */
+#define RPL_CHANNELMODEIS 324 /* "<channel> +<mode>" [I,E,U,D] # */
+#define RPL_CHANNELPASSIS 325 /* "<channel> <password>" [i] */
+#define RPL_NOCHANPASS 326 /* "<channel> :No channel password" [i] */
+#define RPL_CHPASSUNKNOWN 327 /* [i] */
+#define RPL_CHANURL 328 /* [D] [services.dal.net][328] Pragma #linux :http://dalnet.linuxguru.net */
+//[04:25:18] [services.dal.net][328] rettter #cebu :none.
+#define RPL_CREATIONTIME 329 /* "<channel> %lu" [E,U,D] # */
+#define RPL_WHOISAUTH 330 /* %s %s :is authed as .... [Quakenet] # */
+#define RPL_NOTOPIC 331 /* "<channel> :No topic is set." [I,E,U,D] # */
+#define RPL_TOPIC 332 /* "<channel> :%s" [I,E,U,D] # */
+#define RPL_TOPICWHOTIME 333 /* "<channel> <whoset> %lu" [e,U,D] # */
+#define RPL_LISTUSAGE 334 /* [U] */
+#define RPL_LISTSYNTAX 335 /* [D] */
+// RPL_?????????? 336-337
+#define RPL_CHANPASSOK 338 /* "<channel> :Channel password OK" [i] */
+#define RPL_BADCHANPASS 339 /* "<channel> :Invalid channel password" [i] */
+#define RPL_EQUALNICKS 339
+// RPL_?????????? 340
+#define RPL_INVITING 341 /* [I,E,U,D] */
+#define RPL_SUMMONING 342 /* [I,E,D] */
+// RPL_????????? 343-345
+#define RPL_INVITELIST 346 /* "<channel> <exceptionmask>" [I] # */
+#define RPL_ENDOFINVITELIST 347 /* "<channel> :End of Channel Invite List" [I] # */
+#define RPL_EXCEPTLIST 348 /* "<channel> <exceptionmask>" [I] # */
+#define RPL_ENDOFEXCEPTLIST 349 /* "<channel> :End of Channel Exception List" [I] # */
+// RPL_?????????? 350
+#define RPL_VERSION 351 /* "%s.%s %s :%s" [I,E,U,D] # */
+#define RPL_WHOREPLY 352 /* "<chn> <usr> <hst> <srv> <nck> <stat> :<hops> <real>"[I,E,U,D] # */
+#define RPL_NAMREPLY 353 /* "= <channel> :<space_separated_list_of_nicks>" [I,E,U,D] # */
+#define RPL_WHOSPCRPL 354 /* [U] */
+// RPL_????????? 355-360
+#define RPL_KILLDONE 361 /* [I,E,U,D] */
+#define RPL_CLOSING 362 /* [I,E,U,D] */
+#define RPL_CLOSEEND 363 /* [I,E,U,D] */
+#define RPL_LINKS 364 /* "<host> <parent> :<hops> <description>" [I,E,U,D] # */
+#define RPL_ENDOFLINKS 365 /* %s :End of /LINKS" [I,E,U,D] # */
+#define RPL_ENDOFNAMES 366 /* "%s :End of /NAMES list." [I,E,U,D] # */
+#define RPL_BANLIST 367 /* "<channel> <banmask>" [I,E,U,D] # */
+#define RPL_ENDOFBANLIST 368 /* "<channel> :End of channel Ban List" [I,E,U,D] # */
+#define RPL_ENDOFWHOWAS 369 /* "%s :END of /WHOWAS" [I,E,U,D] # */
+#define RPL_INFO 371 /* ":%s" [I,E,U,D] # */
+#define RPL_MOTD 372 /* ":- %s" [I,E,U,D] # */
+#define RPL_INFOSTART 373 /* ":Server INFO" [I,E,U,D] # */
+#define RPL_ENDOFINFO 374 /* ":End of /INFO list." [I,E,U,D] # */
+#define RPL_MOTDSTART 375 /* ":- %s Message of the Day - " [I,E,U,D] # */
+#define RPL_ENDOFMOTD 376 /* ":End of /MOTD command." [I,E,U,D] # */
+#define RPL_MOTD2 377 /* ":- %s" [?] # */
+#define RPL_MOTD3 378 /* ":- %s" [Austnet] # */
+// RPL_????????? 378-380
+#define RPL_YOUREOPER 381 /* [I,E,U,D] */
+#define RPL_REHASHING 382 /* [I,E,U,D] */
+#define RPL_YOURESERVICE 383 /* [I,D] */
+#define RPL_MYPORTIS 384 /* [I,E,U,D] */
+#define RPL_NOTOPERANYMORE 385 /* [I,E,U,D] */
+// RPL_????????? 386-390
+#define RPL_TIME 391 /* [I,E,U,D] */
+#define RPL_USERSSTART 392 /* [I,E,D] */
+#define RPL_USERS 393 /* [I,E,D] */
+#define RPL_ENDOFUSERS 394 /* [I,E,D] */
+#define RPL_NOUSERS 395 /* [I,E,D] */
+// RPL_????????? 396-399
+
+// = 400-599 ====================================================================================//
+//
+// Errors are in the range from 400-599 currently and are grouped by what
+// commands they come from.
+//
+
+// ERR_????????? 400
+#define ERR_NOSUCHNICK 401 /* "%s :No such nick/channel" [I,E,U,D] # */
+#define ERR_NOSUCHSERVER 402 /* "%s :No such server" [I,E,U,D] # */
+#define ERR_NOSUCHCHANNEL 403 /* "%s :No such channel" [I,E,U,D] */
+#define ERR_CANNOTSENDTOCHAN 404 /* "%s :Cannot send to channel" [I,E,U,D] */
+#define ERR_TOOMANYCHANNELS 405 /* "%s :You have joined too many channels" [I,E,U,D] */
+#define ERR_WASNOSUCHNICK 406 /* "%s :There was no such nickname [I,E,U,D] # */
+#define ERR_TOOMANYTARGETS 407 /* "%s :Duplicate recipients. No message delivered" [I,E,U,D] */
+#define ERR_NOSUCHSERVICE 408 /* "%s :No such service" [I,D] */
+#define ERR_NOORIGIN 409 /* ":No origin specified" [I,E,U,D] */
+// ERR_?????????? 410
+#define ERR_NORECIPIENT 411 /* ":No recipient given (%s)" [I,E,U,D] */
+#define ERR_NOTEXTTOSEND 412 /* ":No text to send" [I,E,U,D] */
+#define ERR_NOTOPLEVEL 413 /* "%s :No toplevel domain specified" [I,E,U,D] */
+#define ERR_WILDTOPLEVEL 414 /* "%s :Wildcard in toplevel Domain" [I,E,U,D] */
+#define ERR_BADMASK 415 /* ??? [I] */
+//#define ERR_TOOMANYTARGETS 416 /* Can not understand this ... but I've found it in some docs [I] */
+#define ERR_QUERYTOOLONG 416 /* "<target> <erroneous command> :Too many lines in the output, please restrict your query [U] */
+// ERR_?????????? 417-420
+#define ERR_UNKNOWNCOMMAND 421 /* "%s :Unknown command" [I,E,U,D] # */
+#define ERR_NOMOTD 422 /* ":MOTD File is missing" [I,E,U,D] */
+#define ERR_NOADMININFO 423 /* "%s :No administrative info available" [I,E,U,D] */
+#define ERR_FILEERROR 424 /* ":File error doing %s on %s" [I,E,U,D] */
+// ERR_?????????? 425-430
+#define ERR_NONICKNAMEGIVEN 431 /* ":No nickname given" [I,E,U,D] */
+#define ERR_ERRONEUSNICKNAME 432 /* "%s :Erroneus Nickname" [I,E,U,D] # */
+#define ERR_NICKNAMEINUSE 433 /* "%s :Nickname is already in use." [I,E,U,D] # */
+#define ERR_SERVICENAMEINUSE 434 /* ??? [I,D] */
+#define ERR_SERVICECONFUSED 435 /* ??? [I,D] */
+#define ERR_NICKCOLLISION 436 /* "%s :Nickname collision KILL" [I,E,U,D] # */
+#define ERR_UNAVAILRESOURCE 437 /* ??? [I] # */
+//#define ERR_BANNICKCHANGE 437 /* ??? duplicate [U,D] */
+#define ERR_NICKTOOFAST 438 /* ??? [U] # */
+//#define ERR_NCHANGETOOFAST 438 /* ??? duplicate [D] */
+#define ERR_TARGETTOOFAST 439 /* ??? [U,D] */
+#define ERR_SERVICESDOWN 440 /* ??? [D] */
+#define ERR_USERNOTINCHANNEL 441 /* "%s %s :They aren't on that channel" [I,E,U,D] */
+#define ERR_NOTONCHANNEL 442 /* "%s :You're not on that channel" [I,E,U,D] */
+#define ERR_USERONCHANNEL 443 /* "%s %s :is already on channel" [I,E,U,D] */
+#define ERR_NOLOGIN 444 /* "%s :User not logged in" [I,E,U,D] */
+#define ERR_SUMMONDISABLED 445 /* ":SUMMON has been removed/disabled" [I,E,U,D] */
+#define ERR_USERSDISABLED 446 /* ":USERS has been removed/disabled" [I,E,U,D] */
+// ERR_?????????? 447-450
+#define ERR_NOTREGISTERED 451 /* ":You have not registered" [I,E,U,D] */
+#define ERR_IDCOLLISION 452 /* ":ID collision KILL" [i,?] */
+#define ERR_NICKLOST 453 /* "<nick> :Nickname collision; please enter a new nick" [i,?] */
+// ERR_?????????? 454
+#define ERR_HOSTILENAME 455 /* ??? [D] */
+// ERR_?????????? 456-460
+#define ERR_NEEDMOREPARAMS 461 /* "%s :Not enough parameters" [I,E,U,D] */
+#define ERR_ALREADYREGISTRED 462 /* ":You may not reregister" [I,E,U,D] */
+#define ERR_NOPERMFORHOST 463 /* ":Your host isn't among the privileged" [I,E,U,D] */
+#define ERR_PASSWDMISMATCH 464 /* ":Password Incorrect" [I,E,U,D] */
+#define ERR_YOUREBANNEDCREEP 465 /* ":You are banned from this server- %s" [I,E,U,D] */
+//[04:42:04] [forever.va.us.mystical.net][465] Pragma :You have been Autokilled.
+#define ERR_YOUWILLBEBANNED 466 /* ??? [I,E,U,D] */
+#define ERR_KEYSET 467 /* "%s :Channel key already set" [I,E,U,D] */
+#define ERR_INVALIDUSERNAME 468 /* ??? [U,?] */
+//#define ERR_ONLYSERVERSCANCHANGE 468 /* ??? [D] */
+// ERR_??????????? 469-470
+#define ERR_CHANNELISFULL 471 /* "%s :Cannot join channel (+l)" [I,E,U,D] # */
+#define ERR_UNKNOWNMODE 472 /* "%c :is unknown mode char to me" [I,E,U,D] */
+#define ERR_INVITEONLYCHAN 473 /* "%s :Cannot join channel (+i)" [I,E,U,D] # */
+#define ERR_BANNEDFROMCHAN 474 /* "%s :Cannot join channel (+b)" [I,E,U,D] # */
+#define ERR_BADCHANNELKEY 475 /* "%s :Cannot join channel (+k)" [I,E,U,D] # */
+#define ERR_BADCHANMASK 476 /* "%s :Bad Channel Mask" [I,E,U,D] */
+#define ERR_MODELESS 477 /* ??? [U] */
+//#define ERR_???? 477 /* [irc.tin.it][477] [Pragma] 8 :Channel doesn't support modes [I] */
+#define ERR_NEEDREGGEDNICK 477 /* ??? [U] */
+//[03:48:45] [tiscali.uk.eu.dal.net][477] PragTest #italia :You need to identify to a registered nick to join that channel.
+#define ERR_BANLISTFULL 478 /* ??? [U,D] */
+// ERR_??????????? 479-480
+#define ERR_NOPRIVILEGES 481 /* ":Permission Denied- You're not an IRC operator" [I,E,U,D] */
+#define ERR_CHANOPRIVSNEEDED 482 /* "%s :You're not channel operator" [I,E,U,D] */
+#define ERR_CANTKILLSERVER 483 /* ":You cant kill a server!" [E,U,D] */
+#define ERR_DESYNC 484 /* ??? [E] */
+#define ERR_ISCHANSERVICE 484 /* ??? [U] */
+#define ERR_CHANTOORECENT 487 /* "<channel> :Channel created too recently" [i] */
+#define ERR_TSLESSCHAN 488 /* "<channel> :Mode <mode> not available on TS-less channel" [i] */
+// ERR_??????????? 489-490
+#define ERR_NOOPERHOST 491 /* ":Only few of mere mortals may try to enter the twilight zone" [I,E,U,D] */
+#define ERR_NOSERVICEHOST 492 /* ??? [I,D] */
+// ERR_??????????? 493-500
+#define ERR_UMODEUNKNOWNFLAG 501 /* ":Unknown MODE flag" [I,E,U,D] */
+#define ERR_USERSDONTMATCH 502 /* ":Cant change mode for other users" [I,E,U,D] */
+#define ERR_GHOSTEDCLIENT 503 /* ":Message could not be delivered to %s" [E] */
+#define ERR_LAST_ERR_MSG 504 /* ":Last Error Message" [E] */
+// ERR_??????????? 505-510
+#define ERR_SILELISTFULL 511 /* ??? [U,D] */
+#define ERR_NOSUCHGLINE 512 /* ??? [U] */
+#define ERR_TOOMANYWATCH 513 /* ??? [D] */
+#define ERR_BADPING 514 /* ??? [U] */
+#define ERR_NEEDPONG 515 /* ??? [D] */
+#define ERR_LISTSYNTAX 516 /* ??? [D] */
+// DalNet (excellent) extension that substitutes the ISON ping
+#define RPL_LOGON 600 /* <nick> <user> <host> <logintime> :logged online [D] # */
+#define RPL_LOGOFF 601 /* <nick> <user> <host> <logintime> :logged offline [D] # */
+#define RPL_WATCHOFF 602 /* <nick> <user> <host> <logintime> :stopped watching [D] # */
+#define RPL_WATCHSTAT 603 /* :You have <n> and are on <n> WATCH entries [D] # */
+#define RPL_NOWON 604 /* <nick> <user> <host> <logintime> :is online [D] # */
+#define RPL_NOWOFF 605 /* <nick> <user> <host> 0 :is offline [D] # */
+#define RPL_WATCHLIST 606 /* ? [D] # */
+#define RPL_ENDOFWATCH 607 /* :End of WATCH <char l=list s=stats> [D] # */
+// WeNet codepage extension
+#define RPL_CODEPAGESET 700 /* :irc.wenet.ru 700 Pragma CP1251 :is now your translation scheme # */
+#define RPL_WHOISSCHEME 703 /* :interdacom.vgd.wenet.ru 703 Alexey Begemot KOI8-R :translation scheme */
+
+///* 303 */ RPL_ISON, ":",
+///* 304 */ RPL_TEXT, (char *)NULL,
+///* 305 */ RPL_UNAWAY, ":You are no longer marked as being away",
+///* 306 */ RPL_NOWAWAY, ":You have been marked as being away",
+
+///* 321 */ RPL_LISTSTART, "Channel :Users Name",
+///* 322 */ RPL_LIST, "%s %d :%s",
+///* 323 */ RPL_LISTEND, ":End of /LIST",
+///* 324 */ RPL_CHANNELMODEIS, "%???"
+
+///* 334 */ 0, (char *)NULL,
+///* 341 */ RPL_INVITING, "%s %s",
+///* 342 */ RPL_SUMMONING, "%s :User summoned to irc",
+///* 352 */ RPL_WHOREPLY, ,
+///* 361 */ RPL_KILLDONE, (char *)NULL,
+///* 362 */ RPL_CLOSING, "%s :Closed. Status = %d",
+///* 363 */ RPL_CLOSEEND, "%d: Connections Closed",
+///* 364 */ RPL_LINKS, "%s %s :%d %s",
+///* 365 */ RPL_ENDOFLINKS, "%s :End of /LINKS list.",
+///* 367 */ RPL_BANLIST, "%s %s %s %lu",
+///* 367 */ RPL_BANLIST, "%s %s",
+///* 368 */ RPL_ENDOFBANLIST, "%s :End of Channel Ban List",
+///* 369 */ RPL_ENDOFWHOWAS, "%s :End of WHOWAS",
+///* 381 */ RPL_YOUREOPER, ":You have entered... the Twilight Zone!.",
+///* 382 */ RPL_REHASHING, "%s :Rehashing",
+///* 383 */ 0, (char *)NULL,
+///* 384 */ RPL_MYPORTIS, "%d :Port to local server is\r\n",
+///* 385 */ RPL_NOTOPERANYMORE, (char *)NULL,
+///* 391 */ RPL_TIME, "%s :%s",
+///* 392 */ RPL_USERSSTART, ":UserID Terminal Host",
+///* 393 */ RPL_USERS, ":%-8s %-9s %-8s",
+///* 394 */ RPL_ENDOFUSERS, ":End of Users",
+///* 395 */ RPL_NOUSERS, ":Nobody logged in.",
+///* 216 */ RPL_STATSKLINE, "%c %s * %s %s",
+///* 216 */ RPL_STATSKLINE, "%c %s %s %s %d %d",
+///* 217 */ RPL_STATSQLINE, "%c %s * %s %d %d",
+///* 218 */ RPL_STATSYLINE, "%c %d %d %d %d %ld",
+///* 219 */ RPL_ENDOFSTATS, "%c :End of /STATS report",
+///* 221 */ RPL_UMODEIS, "%s",
+///* 222 */ RPL_STATSBLINE, "%c %s * %s %d %d",
+///* 223 */ RPL_STATSELINE, "%c %s * %s %d %d",
+///* 224 */ RPL_STATSFLINE, "%c %s * %s %d %d",
+///* 225 */ RPL_STATSDLINE, "%c %s %s",
+///* 231 */ 0, (char *)NULL,
+///* 232 */ 0, (char *)NULL,
+///* 233 */ 0, (char *)NULL,
+///* 234 */ RPL_SERVLIST, (char *)NULL,
+///* 235 */ RPL_SERVLISTEND, (char *)NULL,
+///* 241 */ RPL_STATSLLINE, "%c %s * %s %d %d",
+///* 242 */ RPL_STATSUPTIME, ":Server Up %d days, %d:%02d:%02d",
+///* 243 */ RPL_STATSOLINE, "%c %s * %s %d %d",
+///* 244 */ RPL_STATSHLINE, "%c %s * %s %d %d",
+///* 245 */ RPL_STATSSLINE, "%c %s * %s %d %d",
+///* 250 */ RPL_STATSCONN,":Highest connection count: %d (%d clients)"
+///* 261 */ RPL_TRACELOG, "File %s %d",
+///* 262 */ RPL_ENDOFTRACE, "%s :End of TRACE",
+//[21:04:58] [oltrelinux.azzurra.org][275] Pragma Pragma :is using a secure connection (SSL)
+#endif // _KVI_NUMERIC_H_
diff --git a/src/kvirc/sparser/kvi_sp_ctcp.cpp b/src/kvirc/sparser/kvi_sp_ctcp.cpp
new file mode 100644
index 00000000..1e3736aa
--- /dev/null
+++ b/src/kvirc/sparser/kvi_sp_ctcp.cpp
@@ -0,0 +1,1855 @@
+//=============================================================================
+//
+// File : kvi_sp_ctcp.cpp
+// Creation date : Thu Aug 16 2000 13:34:42 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+// FIXME: #warning "CTCP BEEP == WAKEUP == AWAKE"
+// FIXME: #warning "CTCP AVATARREQ or QUERYAVATAR"
+
+#include "kvi_mirccntrl.h"
+#include "kvi_osinfo.h"
+#include "kvi_app.h"
+#include "kvi_sparser.h"
+#include "kvi_window.h"
+#include "kvi_out.h"
+#include "kvi_locale.h"
+#include "kvi_ircsocket.h"
+#include "kvi_channel.h"
+#include "kvi_defaults.h"
+#include "kvi_channel.h"
+#include "kvi_query.h"
+#include "kvi_ircuserdb.h"
+#include "kvi_iconmanager.h"
+#include "kvi_modulemanager.h"
+#include "kvi_sharedfiles.h"
+#include "kvi_time.h"
+#include "kvi_fileutils.h"
+#include "kvi_ctcppagedialog.h"
+#include "kvi_useraction.h"
+#include "kvi_options.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectionuserinfo.h"
+#include "kvi_ircconnectionantictcpflooddata.h"
+#include "kvi_lagmeter.h"
+#include "kvi_kvs_eventtriggers.h"
+#include "kvi_kvs_script.h"
+#include "kvi_sourcesdate.h"
+#include "kvi_regusersdb.h"
+
+#include <stdlib.h>
+
+#include <qdatetime.h>
+
+#ifdef COMPILE_USE_QT4
+ #include <QTextDocument>
+#else
+ #include <qstylesheet.h>
+#endif
+
+
+
+extern KVIRC_API KviSharedFilesManager * g_pSharedFilesManager;
+extern KVIRC_API KviCtcpPageDialog * g_pCtcpPageDialog;
+
+/*
+ @doc: ctcp_handling
+ @title:
+ KVIrc and CTCP
+ @short:
+ For developers: Client-To-Client Protocol handling in KVIrc
+ @body:
+ [big]Introduction[/big][br]
+ Personally, I think that the CTCP specification is to
+ be symbolically printed & burned. It is really too complex
+ (you can go mad with the quoting specifications)
+ and NO IRC CLIENT supports it completely.
+ Here is my personal point of view on the CTCP protocol.[br]
+ [big]What is CTCP?[/big][br]
+ CTCP stands for Client-to-Client Protocol. It is designed
+ for exchanging almost arbitrary data between IRC clients;
+ the data is embedded into text messages of the underlying
+ IRC protocol.[br]
+ [big]Basic concepts[/big][br]
+ A CTCP message is sent as the <text> part of the PRIVMSG and
+ NOTICE IRC commands.[br]
+ To differentiate the CTCP message from a normal IRC message
+ text we use a delimiter character (ASCII char 1); we will
+ use the symbol <0x01> for this delimiter.
+ You may receive a CTCP message from server in one of the
+ following two ways:[br]
+ [b]:<source_mask> PRIVMSG <target> :<0x01><ctcp message><0x01>[/b][br]
+ [b]:<source_mask> NOTICE <target>:<0x01><ctcp message><0x01>[/b][br]
+ The PRIVMSG is used for CTCP REQUESTS, the NOTICE for CTCP REPLIES.
+ The NOTICE form should never generate an automatic reply.[br]
+ The two delimiters were used to begin and terminate the
+ CTCP message; The origial protocol allowed more than one CTCP
+ message inside a single IRC message. [b]Nobody sends more than
+ one message at once, no client can recognize it (since it
+ complicates the message parsing), it could be even dangerous (see below)[/b].
+ It makes no real sense unless we wanted to use the CTCP protocol to embed escape sequences
+ into IRC messages, which is not the case.[br]
+ Furthermore, sending more CTCP messages in a single IRC message could
+ be easily used to flood a client. Assuming 450 characters available for the IRC message
+ text part, you could include 50 CTCP messages containing "<0x01>VERSION<0x01>".[br]
+ Since the VERSION replies are usually long (there can be 3 or 4 replies per IRC message),
+ a client that has no CTCP flood protection (or has it disabled) will surely
+ be disconnected while sending the replies, after only
+ receiving a single IRC message (no flood for the sender).
+ From my personal point of view, only [b]one CTCP message per IRC message[/b]
+ should be allowed and theoretically the trailing <0x01> delimiter can be optional.[br]
+ [big]How to extract the CTCP message[/big][br]
+ The IRC messages do not allow the following characters to be sent:[br]
+ <NUL> (Ascii character 0), <CR> (Carriage return), <LF> (Line feed).[br]
+ So finally we have four characters that [b]cannot appear literally into a
+ CTCP message[/b]: <NUL>,<CR>,<LF>,<0x01>.[br]
+ To extract a <ctcp_message> from an IRC PRIVMSG or NOTICE command you
+ have to perform the following actions:[br]
+ Find the <trailing> part of the IRC message (the one just after the ':'
+ delimiter, or the last message token).[br]
+ Check if the first character of the <trailing> is a <0x01>, if it is
+ we have a <ctcp_message> beginning just after <0x01>.
+ The trailing (optional) <0x01> can be removed in this phase
+ or later, assuming that it is not a valid char in the <ctcp message>.[br]
+ In this document I will assume that you have stripped the trailing <0x01>
+ and thus from now on we will deal only with the <ctcp message> part.[br]
+
+ [big]Parsing a CTCP message: The quoting dilemma[/big][br]
+ Since there are characters that cannot appear in a <ctcp message>,
+ theoretically we should have to use a quoting mechanism.
+ Well, in fact, no actual CTCP message uses the quoting: there
+ is no need to include a <NUL>, a <CR> or <LF> inside the actually
+ defined messages (The only one could be CTCP SED, but I have never
+ seen it in action... is there any client that implements it?).
+ We could also leave the "quoting" to the "single message type semantic":
+ a message that needs to include "any character" could have its own
+ encoding method (Base64 for example). With the "one CTCP per IRC message"
+ convention we could even allow <0x01> inside messages. Only the leading
+ (and eventually trailing) <0x01> would be the delimiter, the other ones
+ would be valid characters. Finally, is there any CTCP type that needs
+ <0x01> inside a message? <0x01> is not printable (as well as <CR>,<LF> and <NUL>),
+ so only encoded messages (and again we can stick to the single message semantic)
+ messages or the ones including special parameters. Some machines might
+ allow <0x01> in filenames....well, a file with <0x01> in its name has something
+ broken inside, or the creator is a sort of "hacker" (so he also
+ knows how to rename a file...) :).[br]
+ Anyway, let's be pedantic, and define this quoting method.
+ Let's use the most intuitive method, adopted all around the world:[br]
+ The backslash character ('\') as escape.[br]
+ An escape sequence is formed by the backslash character and a number
+ of following ascii characters. We define the following two types of escape sequences:[br]
+ [b]'\XXX'[/b] (where XXX is an [b]octal number[/b] formed by three digits)
+ that indicates the ascii character with code that corresponds to the number.[br]
+ [b]'\C'[/b] (where C is a [b]CTCP valid ascii non digit character[/b]) that corresponds
+ literally to the character C discarding any other semantic that might be associated
+ with it (This will become clear later).
+ I've choosen the octal rappresentation just to follow a bit the old specification:
+ the authors seemed to like it. This point could be discussed in
+ some mailing list or sth. The '\C' sequence is useful to include the backslash
+ character (escape sequence '\\').[br]
+
+ [big]Let's mess a little more[/big][br]
+ A CTCP message is made of [b]space separated parameters[/b].[br]
+ The natural way of separating parameters is to use the space character.
+ We define a "token" as a sequence of valid CTCP characters not including literal space.
+ A <ctcp parameter> is usally a token, but not always;
+ filenames can contain spaces inside names (and it happens very often!).
+ So one of the parameters of CTCP DCC is not a space separated token.
+ How do we handle it? Again a standard is missing. Some clients simply change
+ the filename placing underscores instead of spaces, this is a reasonable solution if used with care.
+ Other clients attempt to "isolate" the filename token by surrounding it with some kind
+ of quotes, usually the '"' or ''' characters. This is also a good solution.
+ Another one that naturally comes into my mind is to use the previously defined
+ quoting to define a "non-breaking space" character, because a space after a backslash
+ could lose its original semantic. Better yet, use the backslash followed by
+ the octal rappresentation of the space character ('\040').
+ Anyway, to maintain compatibility with other popular IRC clients (such as mIRC),
+ let's include the '"' quotes in our standard: literal (unescaped) '"' quotes
+ define a single token string. To include a literal '"' character, escape it.
+ Additionally, the last parameter of a <ctcp message> may be made of multiple tokens.
+
+ [big]A CTCP parameter extracting example[/big][br]
+ A trivial example of a C "CTCP parameter extracting routine" follows.[br]
+ An IRC message is made of up to 510 useable characters.
+ When a CTCP is sent there is a PRIVMSG or NOTICE token that uses at least 6 characters,
+ at least two spaces and a target token (that can not be empty, so it is at least one character)
+ and finally one <0x01> escape character. This gives 500 characters as maximum size
+ for a complete <ctcp message> and thus for a <ctcp token>.
+ In fact, the <ctcp message> is always smaller than 500 characters; there are usually two
+ <0x01> chars, there is a message source part at the beginning of the IRC message
+ that is 10-15 characters long, and there is a ':' character before the trailing parameter.
+ Anyway, to really be on the "safe side", we use a 512 character buffer for each
+ <ctcp token>. Finally, I'll assume that you have already ensured that
+ the <ctcp message> that we are extracting from is shorter than 511 characters in all,
+ and have provided a buffer big enough to avoid this code segfaulting.
+ I'm assuming that msg_ptr points somewhere in the <ctcp message> and is null-terminated.[br]
+ (There are C++ style comments, you might want to remove them)
+ [example]
+ const char * decode_escape(const char * msg_ptr,char * buffer)
+ {
+ // This one decodes an escape sequence
+ // and returns the pointer "just after it"
+ // and should be called when *msg_ptr points
+ // just after a backslash
+ char c;
+ if((*msg_ptr >= '0') && (*msg_ptr < '8'))
+ {
+ // a digit follows the backslash
+ c = *msg_ptr - '0';
+ msg_ptr++;
+ if(*msg_ptr >= '0') && (*msg_ptr < '8'))
+ {
+ c = ((c << 3) + (*msg_ptr - '0'));
+ msg_ptr++;
+ if(*msg_ptr >= '0') && (*msg_ptr < '8'))
+ {
+ c = ((c << 3) + (*msg_ptr - '0'));
+ msg_ptr++;
+ } // else broken message, but let's be flexible
+ } // else it is broken, but let's be flexible
+ // append the character and return
+ *buffer = c;
+ return msg_ptr;
+ } else {
+ // simple escape: just append the following
+ // character (thus discarding its semantic)
+ *buffer = *msg_ptr;
+ return ++msg_ptr;
+ }
+ }
+
+ const char * extract_ctcp_parameter(const char * msg_ptr,char * buffer,int spaceBreaks)
+ {
+ // this one extracts the "next" ctcp parameter in msg_ptr
+ // it skips the leading and trailing spaces.
+ // spaceBreaks should be set to 0 if (and only if) the
+ // extracted parameter is the last in the CTCP message.
+ int inString = 0;
+ while(*msg_ptr == ' ')msg_ptr++;
+ while(*msg_ptr)
+ {
+ switch(*msg_ptr)
+ {
+ case '\\':
+ // backslash : escape sequence
+ msg_ptr++;
+ if(*msg_ptr)msg_ptr = decode_escape(msg_ptr,buffer);
+ else return msg_ptr; // senseless backslash
+ break;
+ case ' ':
+ // space : separate tokens?
+ if(inString || (!spaceBreaks))*buffer++ = *msg_ptr++;
+ else {
+ // not in string and space breaks: end of token
+ // skip trailing white space (this could be avoided)
+ // and return
+ while(*msg_ptr == ' ')msg_ptr++;
+ return msg_ptr;
+ }
+ break;
+ case '"':
+ // a string begin or end
+ inString = !inString;
+ msg_ptr++;
+ break;
+ default:
+ // any other char
+ *buffer++ = *msg_ptr++;
+ break;
+ }
+ }
+ return msg_ptr;
+ }
+ [/example][br]
+
+ [big]CTCP parameter semantics[/big][br]
+ The first <ctcp parameter> of a <ctcp message> is the <ctcp tag>: it defines
+ the semantic of the rest of the message.[br]
+ Altough it is a convention to specify the <ctcp tag> as uppercase letters,
+ and the original specification says that the whole <ctcp message> is
+ case sensitive, I'd prefer to follow the IRC message semantic (just to
+ have less "special cases") and treat the whole mssage as [b]case insensitive[/b].[br]
+ The remaining tokens depend on the <ctcp tag>. A description of known <ctcp tags>
+ and thus <ctcp messages> follows.[br]
+
+ [big]PING[/big][br]
+ [b]Syntax: <0x01>PING <data><0x01>[/b][br]
+ The PING request is used to check the round trip time from one client to another.
+ The receiving client should reply with exactly the same message but sent
+ through a NOTICE instead of a PRIVMSG. The <data> usually contains an unsigned
+ integer but not necessairly; it is not even mandatory for <data> to be a single token.
+ The receiver should ignore the semantic of <data>.[br]
+ The reply is intended to be processed by IRC clients.
+
+ [big]VERSION[/big][br]
+ [b]Syntax: <0x01>VERSION<0x01>[/b][br]
+ The VERSION request asks for informations about another user's IRC client program.
+ The reply should be sent thru a NOTICE with the following syntax:[br]
+ <0x01>VERSION <client_version_data><0x01>[br]
+ The preferred form for <client_version_data> is
+ "<client_name>:<client_version>:<client_enviroinement>", but historically
+ clients (and users) send a generic reply describing the client name, version
+ and eventually the used script name. This CTCP reply is intended to be human
+ readable, so any form is accepted.
+
+ [big]USERINFO[/big][br]
+ [b]Syntax: <0x01>USERINFO<0x01>[/b][br]
+ The USERINFO request asks for informations about another user.
+ The reply should be sent thru a NOTICE with the following syntax:[br]
+ <0x01>USERINFO <user_info_data><0x01>[br]
+ The <user_info_data> should be a human readable "user defined" string;
+
+ [big]CLIENTINFO[/big][br]
+ [b]Syntax: <0x01>CLIENTINFO<0x01>[/b][br]
+ The CLIENTINFO request asks for informations about another user's IRC client program.
+ While VERSION requests the client program name and version, CLIENTINFO requests
+ informations about CTCP capabilities.[br]
+ The reply should be sent thru a NOTICE with the following syntax:[br]
+ <0x01>CLIENTINFO <client_info_data><0x01>[br]
+ The <client_info_data> should contain a list of supported CTCP request tags.
+ The CLIENTINFO reply is intended to be human readable.
+
+ [big]FINGER[/big][br]
+ [b]Syntax: <0x01>FINGER<0x01>[/b][br]
+ The FINGER request asks for informations about another IRC user.
+ The reply should be sent thru a NOTICE with the following syntax:[br]
+ <0x01>FINGER <user_info_data><0x01>[br]
+ The <user_info_data> should be a human readable string containing
+ the system username and possibly the system idle time;
+
+ [big]SOURCE[/big][br]
+ [b]Syntax: <0x01>SOURCE<0x01>[/b][br]
+ The SOURCE request asks for the client homepage or ftp site informations.
+ The reply should be sent thru a NOTICE with the following syntax:[br]
+ <0x01>VERSION <homepage_url_data><0x01>[br]
+ This CTCP reply is intended to be human readable, so any form is accepted.
+
+ [big]TIME[/big][br]
+ [b]Syntax: <0x01>TIME<0x01>[/b][br]
+ The TIME request asks for the user local time.
+ The reply should be sent thru a NOTICE with the following syntax:[br]
+ <0x01>TIME <time and date string><0x01>[br]
+ This CTCP reply is intended to be human readable, so any form is accepted.
+
+ [big]ACTION[/big][br]
+ [b]Syntax: <0x01>ACTION<0x01>[/b][br]
+ The ACTION tag is used to describe an action.[br]
+ It should be sent through a NOTICE message and never generate a reply.[br]
+
+ [big]AVATAR (equivalent to ICON or FACE)[/big][br]
+ [b]Syntax: <0x01>AVATAR<0x01>[/b][br]
+ The AVATAR tag is used to query an user's avatar.[br]
+
+ [big]MULTIMEDIA (equivalent to MM or SOUND)[/big][br]
+ [b]Syntax: <0x01>MULTIMEDIA <filename><0x01>[/b][br]
+ The MULTIMEDIA tag is used to play a multimedia file on the receiver's side.[br]
+ The receiving client should locate the file associated to <filename>,
+ and play it. If the file can not be located
+ by the receiving client, and the MULTIMEDIA tag was sent through a PRIVMSG format CTCP,
+ the receiving client CAN request a [doc:dcc_connection]DCC GET[/doc] <filename> from the source user.
+ If the MULTIMEDIA tag was sent through a NOTICE message, the receiving client
+ should not generate any reply: the message should be notified to the receiving
+ client's user and then be discarded. The <filename> should never contain a leading
+ path. If any part of the <filename> appears to be a path component, it should be discarded.
+ The client may decide to drop the entire message too. Older clients (including
+ older releases of KVIrc) used to request the missing filenames by a particular
+ non-standard private message syntax. This convention should be dropped.[br]
+
+ [big]DCC[/big][br]
+ [b]Syntax: <0x01>DCC <type> <type dependant parameters><0x01>[/b][br]
+ The DCC tag is used to initiate a Direct Client Connection.
+ The known dcc types are:[br]
+ CHAT[br]
+ SEND[br]
+ TSEND[br]
+ GET[br]
+ TGET[br]
+ ACCEPT[br]
+ RESUME[br]
+
+*/
+
+
+
+void KviServerParser::encodeCtcpParameter(const char * param,KviStr &buffer,bool bSpaceBreaks)
+{
+ //
+ // This one encodes a single ctcp parameter with the simplest
+ // subset of rules and places it in the supplied buffer
+ //
+ if(!(*param))
+ {
+ // empty parameter: the only reason we REALLY need the double quotes
+ if(bSpaceBreaks)
+ buffer.append("\"\"");
+ return;
+ }
+
+ const char * begin = param;
+
+ bool bMustQuote = false;
+
+ while(*param)
+ {
+ switch(*param)
+ {
+ case ' ':
+ if(bSpaceBreaks)
+ {
+ if(param != begin)buffer.append(begin,param - begin);
+ buffer.append("\\040");
+ param++;
+ begin = param;
+ } else {
+ // space is non breaking (last parameter)
+ param++;
+ }
+ break;
+ case '\r':
+ if(param != begin)buffer.append(begin,param - begin);
+ buffer.append("\\015");
+ param++;
+ begin = param;
+ break;
+ case '\n':
+ if(param != begin)buffer.append(begin,param - begin);
+ buffer.append("\\012");
+ param++;
+ begin = param;
+ break;
+ case '"':
+ if(param != begin)buffer.append(begin,param - begin);
+ buffer.append("\\042");
+ param++;
+ begin = param;
+ break;
+ case '\\':
+ if(param != begin)buffer.append(begin,param - begin);
+ buffer.append("\\143");
+ param++;
+ begin = param;
+ break;
+ case 0x01:
+ if(param != begin)buffer.append(begin,param - begin);
+ buffer.append("\\001");
+ param++;
+ begin = param;
+ break;
+ default:
+ param++;
+ break;
+ }
+ }
+
+ if(param != begin)buffer.append(begin,param - begin);
+}
+
+void KviServerParser::encodeCtcpParameter(const char * parametr,QString &resultBuffer,bool bSpaceBreaks)
+{
+ //
+ // This one encodes a single ctcp parameter with the simplest
+ // subset of rules and places it in the supplied buffer
+ //
+ KviQCString buffer;
+ register const char* param=parametr;
+ if(!param)
+ {
+ if(bSpaceBreaks)
+ buffer.append("\"\"");
+ return;
+ }
+ if(!(*param))
+ {
+ // empty parameter: the only reason we REALLY need the double quotes
+ if(bSpaceBreaks)
+ buffer.append("\"\"");
+ return;
+ }
+
+ bool bMustQuote = false;
+
+ while(*param)
+ {
+ switch(*param)
+ {
+ case ' ':
+ if(bSpaceBreaks)
+ {
+ buffer.append("\\040");
+ param++;
+ } else {
+ buffer+=*param;
+ param++;
+ }
+ break;
+ case '\r':
+ buffer.append("\\015");
+ param++;
+ break;
+ case '\n':
+ buffer.append("\\012");
+ param++;
+ break;
+ case '"':
+ buffer.append("\\042");
+ param++;
+ break;
+ case '\\':
+ buffer.append("\\143");
+ param++;
+ break;
+ case 0x01:
+ buffer.append("\\001");
+ param++;
+ break;
+ default:
+ buffer+=*param;
+ param++;
+ break;
+ }
+ }
+ resultBuffer=buffer;
+}
+
+
+
+const char * KviServerParser::decodeCtcpEscape(const char * msg_ptr,KviStr &buffer)
+{
+ //
+ // This one decodes an octal sequence
+ // and returns the pointer "just after it".
+ // It should be called when *msg_ptr points
+ // just after a backslash.
+ // The decoded escape is appended to the buffer
+ //
+ // We're also assuming that *msg_ptr is not null here
+ //
+ char c;
+ if((*msg_ptr >= '0') && (*msg_ptr < '8'))
+ {
+ // a digit follows the backslash */
+ c = *msg_ptr - '0';
+ msg_ptr++;
+ if((*msg_ptr >= '0') && (*msg_ptr < '8'))
+ {
+ c = ((c << 3) + (*msg_ptr - '0'));
+ msg_ptr++;
+ if((*msg_ptr >= '0') && (*msg_ptr < '8'))
+ {
+ c = ((c << 3) + (*msg_ptr - '0'));
+ msg_ptr++;
+ } // else broken message, but let's be flexible
+ } // else it is broken, but let's be flexible
+ buffer.append(c);
+ return msg_ptr;
+ }
+
+ if(*msg_ptr == 'r')
+ {
+ buffer.append('\r');
+ return ++msg_ptr;
+ }
+
+ if(*msg_ptr == 'n')
+ {
+ buffer.append('\n');
+ return ++msg_ptr;
+ }
+
+ //
+ // null escape: just append the following
+ // character (thus discarding its semantics)
+ //
+
+ buffer.append(msg_ptr);
+ return ++msg_ptr;
+}
+
+
+const char * KviServerParser::decodeCtcpEscape(const char * msg_ptr,KviQCString &buffer)
+{
+ //
+ // This one decodes an octal sequence
+ // and returns the pointer "just after it".
+ // It should be called when *msg_ptr points
+ // just after a backslash.
+ // The decoded escape is appended to the buffer
+ //
+ // We're also assuming that *msg_ptr is not null here
+ //
+ char c;
+ if((*msg_ptr >= '0') && (*msg_ptr < '8'))
+ {
+ // a digit follows the backslash */
+ c = *msg_ptr - '0';
+ msg_ptr++;
+ if((*msg_ptr >= '0') && (*msg_ptr < '8'))
+ {
+ c = ((c << 3) + (*msg_ptr - '0'));
+ msg_ptr++;
+ if((*msg_ptr >= '0') && (*msg_ptr < '8'))
+ {
+ c = ((c << 3) + (*msg_ptr - '0'));
+ msg_ptr++;
+ } // else broken message, but let's be flexible
+ } // else it is broken, but let's be flexible
+ buffer+= (c ? c : ' ') ;
+ return msg_ptr;
+ }
+
+ if(*msg_ptr == 'r')
+ {
+ buffer+='\r';
+ return ++msg_ptr;
+ }
+ if(*msg_ptr == 'n')
+ {
+ buffer+='\n';
+ return ++msg_ptr;
+ }
+ //
+ // null escape: just append the following
+ // character (thus discarding its semantics)
+ //
+
+ buffer+=*msg_ptr;
+ return ++msg_ptr;
+}
+
+
+const char * KviServerParser::extractCtcpParameter(const char * msg_ptr,KviStr &buffer,bool bSpaceBreaks)
+{
+ //
+ // This one extracts the "next" ctcp parameter in msg_ptr
+ // and puts it in the supplied buffer.
+ // It is assumed that the leading and trailing CTCP
+ // tags have been already removed.
+ // Skips the leading and trailing spaces.
+ // bSpaceBreaks should be set to false if (and only if) the
+ // extracted parameter is the last in a positional parameter
+ // based CTCP message.
+ //
+
+ int bInString = 0;
+ if(!msg_ptr) return 0;
+ while(*msg_ptr == ' ')msg_ptr++; // skip leading spaces
+
+ if(*msg_ptr == '"')
+ {
+ // a quoted parameter
+ bInString = 1;
+ msg_ptr++;
+ }
+
+ const char * begin = msg_ptr;
+
+ while(*msg_ptr)
+ {
+ switch(*msg_ptr)
+ {
+ case '\\':
+ // backslash : escape sequence
+ if(msg_ptr != begin)buffer.append(begin,msg_ptr - begin);
+ msg_ptr++;
+ if(*msg_ptr)
+ {
+ // decode the escape
+ msg_ptr = decodeCtcpEscape(msg_ptr,buffer);
+ begin = msg_ptr;
+ }
+ // else it is a senseless trailing backslash.
+ // Just ignore and let the function
+ // return spontaneously.
+ break;
+ case ' ':
+ // space : separate tokens if not in string
+ if(bInString || (!bSpaceBreaks))msg_ptr++;
+ else {
+ // Not in string and space breaks: end of token
+ // skip trailing white space (this could be avoided)
+ // and return
+ if(msg_ptr != begin)buffer.append(begin,msg_ptr - begin);
+ while(*msg_ptr == ' ')msg_ptr++;
+ return msg_ptr;
+ }
+ break;
+ case '"':
+ if(bInString)
+ {
+ // A string terminator. We don't return
+ // immediately since if !bSpaceBreaks
+ // we must handle tokens until the end
+ // and otherwise we just run up to the
+ // next breaking space (but that's a bug anyway, heh).
+ if(msg_ptr != begin)buffer.append(begin,msg_ptr - begin);
+ bInString = 0;
+ msg_ptr++;
+ begin = msg_ptr;
+ } else {
+ // we don't begin a string here
+ // since we're in the middle of the token
+ // it is assumed to be simply a non encoded "
+ msg_ptr++;
+ }
+ break;
+ default:
+ // any other char
+ msg_ptr++;
+ break;
+ }
+ }
+ if(msg_ptr != begin)buffer.append(begin,msg_ptr - begin);
+ return msg_ptr;
+}
+
+const char * KviServerParser::extractCtcpParameter(const char * p_msg_ptr,QString &resultBuffer,bool bSpaceBreaks)
+{
+ //
+ // This one extracts the "next" ctcp parameter in p_msg_ptr
+ // and puts it in the supplied buffer.
+ // It is assumed that the leading and trailing CTCP
+ // tags have been already removed.
+ // Skips the leading and trailing spaces.
+ // bSpaceBreaks should be set to false if (and only if) the
+ // extracted parameter is the last in a positional parameter
+ // based CTCP message.
+ //
+
+ KviQCString buffer;
+ register const char* msg_ptr=p_msg_ptr;
+ int bInString = 0;
+ if(!msg_ptr) return 0;
+ while(*msg_ptr == ' ')msg_ptr++; // skip leading spaces
+
+ if(*msg_ptr == '"')
+ {
+ // a quoted parameter
+ bInString = 1;
+ msg_ptr++;
+ }
+
+ while(*msg_ptr)
+ {
+ switch(*msg_ptr)
+ {
+ case '\\':
+ // backslash : escape sequence
+ msg_ptr++;
+ if(*msg_ptr)
+ {
+ // decode the escape
+ msg_ptr = decodeCtcpEscape(msg_ptr,buffer);
+ }
+ // else it is a senseless trailing backslash.
+ // Just ignore and let the function
+ // return spontaneously.
+ break;
+ case ' ':
+ // space : separate tokens if not in string
+ if(bInString || (!bSpaceBreaks)) {
+ buffer+=*msg_ptr;
+ msg_ptr++;
+ }
+ else {
+ // Not in string and space breaks: end of token
+ // skip trailing white space (this could be avoided)
+ // and return
+ while(*msg_ptr == ' ')msg_ptr++;
+ resultBuffer=buffer;
+ return msg_ptr;
+ }
+ break;
+ case '"':
+ if(bInString)
+ {
+ // A string terminator. We don't return
+ // immediately since if !bSpaceBreaks
+ // we must handle tokens until the end
+ // and otherwise we just run up to the
+ // next breaking space (but that's a bug anyway, heh).
+ buffer+=*msg_ptr;
+ bInString = 0;
+ msg_ptr++;
+ } else {
+ // we don't begin a string here
+ // since we're in the middle of the token
+ // it is assumed to be simply a non encoded "
+ buffer+=*msg_ptr;
+ msg_ptr++;
+ }
+ break;
+ default:
+ // any other char
+ buffer+=*msg_ptr;
+ msg_ptr++;
+ break;
+ }
+ }
+ resultBuffer=buffer;
+ return msg_ptr;
+}
+
+
+
+
+
+void KviServerParser::parseCtcpRequest(KviCtcpMessage *msg)
+{
+ msg->pData = extractCtcpParameter(msg->pData,msg->szTag);
+
+ bool bDCCRequest = msg->szTag == "DCC" || msg->szTag == "XDCC" || msg->szTag == "TDCC";
+
+ bool bAction = (msg->szTag == "ACTION");
+
+ if (bDCCRequest)
+ {
+ if (KVI_OPTION_BOOL(KviOption_boolIgnoreCtcpDcc))
+ {
+ msg->msg->console()->output(KVI_OUT_IGNORE,__tr2qs("Ignoring DCC from \r!nc\r%s\r [%s@\r!h\r%s\r]"),
+ KviQString::toUtf8(msg->pSource->nick()).data(),
+ KviQString::toUtf8(msg->pSource->user()).data(),
+ KviQString::toUtf8(msg->pSource->host()).data()
+ );
+ return;
+ }
+ } else {
+ KviRegisteredUser * u = msg->msg->connection()->userDataBase()->registeredUser(msg->pSource->nick(),msg->pSource->user(),msg->pSource->host());
+ //Ignore it?
+ if(u)
+ {
+ if( (!bAction && u->isIgnoreEnabledFor(KviRegisteredUser::Ctcp)) ||
+ (bAction && u->isIgnoreEnabledFor(IS_ME(msg->msg,msg->szTarget) ? KviRegisteredUser::Query : KviRegisteredUser::Channel)) )
+ {
+ if (KVI_OPTION_BOOL(KviOption_boolVerboseIgnore))
+ {
+ msg->msg->console()->output(KVI_OUT_IGNORE,__tr2qs("Ignoring CTCP from \r!nc\r%s\r [%s@\r!h\r%s\r]"),
+ KviQString::toUtf8(msg->pSource->nick()).data(),
+ KviQString::toUtf8(msg->pSource->user()).data(),
+ KviQString::toUtf8(msg->pSource->host()).data()
+ );
+ }
+ return;
+ }
+ }
+ }
+
+ bool bCtcpVersion = KviQString::equalCI(msg->szTag,"VERSION");
+
+ for(int i=0;m_ctcpRequestParseProcTable[i].msgName;i++)
+ {
+ if(KviQString::equalCI(msg->szTag,m_ctcpRequestParseProcTable[i].msgName))
+ {
+ if(!(m_ctcpReplyParseProcTable[i].iFlags & KVI_CTCP_MESSAGE_PARSE_TRIGGERNOEVENT))
+ {
+ QString szData = msg->msg->connection()->decodeText(msg->pData);
+ //do not allow to make faked version reply
+ if(!(bCtcpVersion && KVI_OPTION_BOOL(KviOption_boolIgnoreCtcpVersion)))
+ {
+ if(KVS_TRIGGER_EVENT_6_HALTED(KviEvent_OnCtcpRequest, \
+ msg->msg->console(), \
+ msg->pSource->nick(), \
+ msg->pSource->user(), \
+ msg->pSource->host(), \
+ msg->szTarget, \
+ msg->szTag, \
+ szData) && !bCtcpVersion)return;
+ }
+ }
+ (this->*(m_ctcpRequestParseProcTable[i].proc))(msg);
+ return;
+ }
+ }
+
+ QString szData = msg->msg->connection()->decodeText(msg->pData);
+ // trigger the event on unrecognized requests too
+ if(KVS_TRIGGER_EVENT_6_HALTED(KviEvent_OnCtcpRequest, \
+ msg->msg->console(), \
+ msg->pSource->nick(), \
+ msg->pSource->user(), \
+ msg->pSource->host(), \
+ msg->szTarget, \
+ msg->szTag,
+ szData))
+ return;
+
+ // unknown
+ msg->bUnknown = true;
+ echoCtcpRequest(msg);
+}
+
+void KviServerParser::parseCtcpReply(KviCtcpMessage *msg)
+{
+ msg->pData = extractCtcpParameter(msg->pData,msg->szTag);
+
+ for(int i=0;m_ctcpReplyParseProcTable[i].msgName;i++)
+ {
+ if(KviQString::equalCI(msg->szTag,m_ctcpReplyParseProcTable[i].msgName))
+ {
+ if(!(m_ctcpReplyParseProcTable[i].iFlags & KVI_CTCP_MESSAGE_PARSE_TRIGGERNOEVENT))
+ {
+ QString szData = msg->msg->connection()->decodeText(msg->pData);
+ if(KVS_TRIGGER_EVENT_6_HALTED(KviEvent_OnCtcpReply, \
+ msg->msg->console(),msg->pSource->nick(),msg->pSource->user(), \
+ msg->pSource->host(),msg->szTarget,msg->szTag,szData))return;
+ }
+ (this->*(m_ctcpReplyParseProcTable[i].proc))(msg);
+ return;
+ }
+ }
+
+ QString szData = msg->msg->connection()->decodeText(msg->pData);
+ // trigger the event on unrecognized replies too
+ if(KVS_TRIGGER_EVENT_6_HALTED(KviEvent_OnCtcpReply, \
+ msg->msg->console(),msg->pSource->nick(),msg->pSource->user(), \
+ msg->pSource->host(),msg->szTarget,msg->szTag,szData))return;
+
+ // unknown
+ msg->bUnknown = true;
+ echoCtcpReply(msg);
+}
+
+
+// Ctcp message handlers
+
+bool KviServerParser::checkCtcpFlood(KviCtcpMessage *msg)
+{
+ if(!KVI_OPTION_BOOL(KviOption_boolUseCtcpFloodProtection))return false;
+
+ kvi_time_t tNow = kvi_unixTime();
+
+ KviIrcConnectionAntiCtcpFloodData * d = msg->msg->connection()->antiCtcpFloodData();
+
+ unsigned int interval = (unsigned int)(((unsigned int)tNow) - ((unsigned int)d->lastCtcpTime()));
+
+ if(interval < KVI_OPTION_UINT(KviOption_uintCtcpFloodCheckInterval))
+ {
+ d->increaseCtcpCount();
+ if(d->ctcpCount() > KVI_OPTION_UINT(KviOption_uintMaxCtcpRequests))
+ {
+ // This is flood
+ msg->bIsFlood = true;
+ return true;
+ }
+ } else {
+ d->setLastCtcpTime(tNow);
+ d->setCtcpCount(1);
+ }
+ return false;
+}
+
+
+void KviServerParser::replyCtcp(KviCtcpMessage *msg,const char * data)
+{
+ KviQCString szNick = msg->msg->connection()->encodeText(msg->pSource->nick());
+ msg->msg->connection()->sendFmtData("NOTICE %s :%c%s %s%c",
+ szNick.data(),0x01,msg->msg->connection()->encodeText(msg->szTag).data(),msg->msg->connection()->encodeText(data).data(),0x01);
+}
+
+void KviServerParser::echoCtcpReply(KviCtcpMessage * msg)
+{
+ if(!msg->msg->haltOutput())
+ {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolCtcpRepliesToActiveWindow) ? msg->msg->console()->activeWindow() : msg->msg->console();
+
+ bool bIsChannel = false;
+
+ if(!IS_ME(msg->msg,msg->szTarget))
+ {
+ // Channel ctcp request!
+ pOut = msg->msg->connection()->findChannel(msg->szTarget);
+ if(!pOut)
+ {
+ pOut = msg->msg->console();
+ pOut->output(KVI_OUT_SYSTEMWARNING,
+ __tr2qs("The following CTCP reply has unrecognized target %Q"),&(msg->szTarget));
+ } else bIsChannel = true;
+ }
+
+ QString szData = msg->msg->connection()->decodeText(msg->pData);
+
+ QString szWhat = bIsChannel ? __tr2qs("Channel CTCP") : QString("CTCP");
+
+ pOut->output(
+ msg->bUnknown ? KVI_OUT_CTCPREPLYUNKNOWN : KVI_OUT_CTCPREPLY,
+ __tr2qs("%Q %Q reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"),
+ &szWhat,&(msg->szTag),&(msg->pSource->nick()),&(msg->pSource->user()),
+ &(msg->pSource->host()),&szData);
+ }
+}
+
+
+void KviServerParser::echoCtcpRequest(KviCtcpMessage *msg)
+{
+ // FIXME: #warning "DEDICATED CTCP WINDOW...MINIMIZED ?"
+ if(!msg->msg->haltOutput())
+ {
+ QString req = msg->szTag;
+ if(*(msg->pData)) {
+ req.append(" ");
+ req.append(msg->pData);
+ }
+
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolCtcpRequestsToActiveWindow) ? msg->msg->console()->activeWindow() : msg->msg->console();
+
+ bool bIsChannel = false;
+
+ if(!IS_ME(msg->msg,msg->szTarget))
+ {
+ // Channel ctcp request!
+ pOut = msg->msg->connection()->findChannel(msg->szTarget);
+ if(!pOut)
+ {
+ pOut = msg->msg->console();
+ pOut->output(KVI_OUT_SYSTEMWARNING,
+ __tr2qs("The following CTCP request has unrecognized target %Q"),
+ &(msg->szTarget));
+ } else bIsChannel = true;
+ }
+
+ QString szRequest = pOut->decodeText(req);
+ QString szTag = pOut->decodeText(msg->szTag);
+ QString szWhat = bIsChannel ? __tr2qs("Channel CTCP") : QString("CTCP");
+
+ if(msg->bIsFlood)
+ {
+ QString szData = msg->msg->connection()->decodeText(msg->pData);
+ if(!KVS_TRIGGER_EVENT_6_HALTED(KviEvent_OnCtcpFlood,pOut,msg->pSource->nick(),msg->pSource->username(),msg->pSource->host(),msg->szTarget,msg->szTag,szData))
+ pOut->output(KVI_OUT_CTCPREQUESTFLOOD,
+ __tr2qs("%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), ignored (flood limit exceeded)"),
+ &szWhat,&szTag,KVI_TEXT_RESET,&(msg->pSource->nick()),
+ &(msg->pSource->user()),&(msg->pSource->host()),&szRequest);
+ } else {
+ QString szAction = msg->bUnknown ? __tr2qs("ignored (unrecognized)") :
+ (msg->bIgnored ? __tr2qs("ignored") : __tr2qs("replied"));
+ pOut->output(
+ msg->bUnknown ? KVI_OUT_CTCPREQUESTUNKNOWN :
+ (msg->bIgnored ? KVI_OUT_CTCPREQUESTIGNORED : KVI_OUT_CTCPREQUESTREPLIED),
+ __tr2qs("%Q %Q%c request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q), %Q"),
+ &szWhat,&szTag,KVI_TEXT_RESET,&(msg->pSource->nick()),
+ &(msg->pSource->user()),&(msg->pSource->host()),&szRequest,&szAction);
+ }
+ }
+}
+
+
+
+void KviServerParser::parseCtcpRequestPing(KviCtcpMessage *msg)
+{
+ if(!checkCtcpFlood(msg))
+ {
+ if(!KVI_OPTION_BOOL(KviOption_boolIgnoreCtcpPing))
+ {
+ replyCtcp(msg,msg->pData);
+ } else msg->bIgnored = true;
+ }
+
+ echoCtcpRequest(msg);
+}
+
+void KviServerParser::parseCtcpReplyPing(KviCtcpMessage * msg)
+{
+ if(!msg->msg->haltOutput())
+ {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolCtcpRepliesToActiveWindow) ? msg->msg->console()->activeWindow() : msg->msg->console();
+
+ bool bIsChannel = false;
+
+ if(!IS_ME(msg->msg,msg->szTarget))
+ {
+ // Channel ctcp request!
+ pOut = msg->msg->connection()->findChannel(msg->szTarget);
+ if(!pOut)
+ {
+ pOut = msg->msg->console();
+ pOut->output(KVI_OUT_SYSTEMWARNING,
+ __tr2qs("The following CTCP PING reply has unrecognized target \"%Q\""),
+ &(msg->szTarget));
+ } else bIsChannel = true;
+ }
+
+ unsigned int uSecs;
+ unsigned int uMSecs = 0;
+
+ KviStr szTime;
+
+ struct timeval tv;
+ kvi_gettimeofday(&tv,0);
+
+ msg->pData = extractCtcpParameter(msg->pData,szTime,true);
+
+ bool bOk;
+
+ if(szTime.contains('.'))
+ {
+ KviStr szUSecs = szTime;
+ szUSecs.cutToFirst('.');
+ szTime.cutFromFirst('.');
+
+ uMSecs = szUSecs.toUInt(&bOk);
+ if(!bOk)
+ {
+ uMSecs = 0;
+ tv.tv_usec = 0;
+ }
+ } else tv.tv_usec = 0;
+
+
+ uSecs = szTime.toUInt(&bOk);
+ if(!bOk)pOut->output(KVI_OUT_SYSTEMWARNING,
+ __tr2qs("The following CTCP PING reply has a broken time identifier \"%S\", don't trust the displayed time"),&szTime);
+
+ unsigned int uDiffSecs = tv.tv_sec - uSecs;
+
+ //unsigned int uDiffMSecs = ((((unsigned int)tv.tv_usec) - uMSecs) / 1000) % 1000;
+ //if ((uMSecs / 1000000) <= uDiffSecs) uDiffSecs -= (uMSecs / 1000000)
+
+ while(uMSecs > 1000000)uMSecs /= 10; // precision too high?
+ if(((unsigned int)tv.tv_usec) < uMSecs)
+ {
+ tv.tv_usec += 1000000;
+ if(uDiffSecs > 0)uDiffSecs --;
+ }
+ unsigned int uDiffMSecs = (tv.tv_usec - uMSecs) / 1000;
+
+ QString szWhat = bIsChannel ? __tr2qs("Channel CTCP") : QString("CTCP");
+
+ pOut->output(
+ msg->bUnknown ? KVI_OUT_CTCPREPLYUNKNOWN : KVI_OUT_CTCPREPLY,
+ __tr2qs("%Q PING reply from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %u sec %u msec"),
+ &szWhat,&(msg->pSource->nick()),
+ &(msg->pSource->user()),&(msg->pSource->host()),uDiffSecs,uDiffMSecs);
+ }
+}
+
+
+void KviServerParser::parseCtcpRequestVersion(KviCtcpMessage *msg)
+{
+ if(!checkCtcpFlood(msg))
+ {
+ if(!KVI_OPTION_BOOL(KviOption_boolIgnoreCtcpVersion))
+ {
+ QString szVersion;
+#ifdef COMPILE_USE_QT4
+ #define QT4_TAG " (QT4) "
+#else
+ #define QT4_TAG
+#endif
+
+#ifdef COMPILE_ON_WINDOWS
+ szVersion = "KVIrc " KVI_VERSION QT4_TAG " '" KVI_RELEASE_NAME "' " KVI_SOURCES_DATE " - build " KVI_BUILD_DATE;
+ szVersion.append(QString(" - %1").arg(KviOsInfo::version()));
+#else
+ szVersion = "KVIrc " KVI_VERSION QT4_TAG " '" KVI_RELEASE_NAME "' " KVI_SOURCES_DATE " - build " KVI_BUILD_DATE " - " KVI_BUILD_FLAGS;
+ szVersion.append(QString(" - %1 (%2)").arg(KviOsInfo::name()).arg(KviOsInfo::release()));
+#endif
+ //szVersion.append(QString(" - QT Version: %1 - %2").arg(qVersion()).arg(__tr2qs("http://www.kvirc.net/")));
+ if(!KVI_OPTION_STRING(KviOption_stringCtcpVersionPostfix).isEmpty())
+ {
+ QString sz = KVI_OPTION_STRING(KviOption_stringCtcpVersionPostfix);
+ if(!sz.isEmpty())
+ {
+ szVersion.append(" :");
+ szVersion.append(sz);
+ }
+ }
+ replyCtcp(msg,szVersion.utf8().data());
+ } else msg->bIgnored = true;
+ }
+
+ echoCtcpRequest(msg);
+}
+
+void KviServerParser::parseCtcpRequestUserinfo(KviCtcpMessage *msg)
+{
+ if(!checkCtcpFlood(msg))
+ {
+ if(!KVI_OPTION_BOOL(KviOption_boolIgnoreCtcpUserinfo))
+ {
+ QString szReply;
+ if(!KVI_OPTION_STRING(KviOption_stringCtcpUserInfoAge).isEmpty())
+ {
+ szReply = "Age=";
+ szReply += KVI_OPTION_STRING(KviOption_stringCtcpUserInfoAge);
+ }
+ if(!KVI_OPTION_STRING(KviOption_stringCtcpUserInfoGender).isEmpty())
+ {
+ if(!szReply.isEmpty())szReply += "; ";
+ szReply += "Gender=";
+ szReply += KVI_OPTION_STRING(KviOption_stringCtcpUserInfoGender);
+ }
+ if(!KVI_OPTION_STRING(KviOption_stringCtcpUserInfoLocation).isEmpty())
+ {
+ if(!szReply.isEmpty())szReply += "; ";
+ szReply += "Location=";
+ szReply += KVI_OPTION_STRING(KviOption_stringCtcpUserInfoLocation);
+ }
+ if(!KVI_OPTION_STRING(KviOption_stringCtcpUserInfoLanguages).isEmpty())
+ {
+ if(!szReply.isEmpty())szReply += "; ";
+ szReply += "Languages=";
+ szReply += KVI_OPTION_STRING(KviOption_stringCtcpUserInfoLanguages);
+ }
+ if(!KVI_OPTION_STRING(KviOption_stringCtcpUserInfoOther).isEmpty())
+ {
+ if(!szReply.isEmpty())szReply += "; ";
+ szReply += KVI_OPTION_STRING(KviOption_stringCtcpUserInfoOther);
+ }
+ if(szReply.isEmpty())szReply = KVI_DEFAULT_CTCP_USERINFO_REPLY;
+ replyCtcp(msg,szReply.utf8().data());
+ } else msg->bIgnored = true;
+ }
+
+ echoCtcpRequest(msg);
+}
+
+// FIXME: CTCP SEX , AGE , LOCATION!!! <--- so we will be safe :)
+// FIXME: KEEP THIS TABLE UP TO DATE
+
+static const char * ctcpTagTable[][2]=
+{
+ { "PING" , "Returns given parameters without parsing them" },
+ { "VERSION" , "Returns the version of this client" },
+ { "CLIENTINFO" , "With no parameters, lists supported CTCP tags," \
+ " 'CLIENTINFO <tag>' describes <tag>" },
+ { "USERINFO" , "Returns personal information about the current user" },
+ { "FINGER" , "Returns information about the current user" },
+ { "SOURCE" , "Returns the client homepage URL" },
+ { "TIME" , "Returns the current local time" },
+ { "ACTION" , "Used to describe actions, generates no reply" },
+ { "AVATAR" , "Returns the current avatar (may trigger a DCC GET) or" \
+ " sets your own on this side if sent through a NOTICE" },
+ { "DCC" , "Initiates a DCC connection (XDCC,TDCC)" },
+ { "PAGE" , "Leaves a message for this user" },
+ { 0 , 0 }
+};
+
+void KviServerParser::parseCtcpRequestClientinfo(KviCtcpMessage *msg)
+{
+ // this is completely latin1
+ if(!checkCtcpFlood(msg))
+ {
+ if(!KVI_OPTION_BOOL(KviOption_boolIgnoreCtcpClientinfo))
+ {
+ KviStr szTag;
+ msg->pData = extractCtcpParameter(msg->pData,szTag,false);
+ szTag.stripWhiteSpace();
+ szTag.toUpper();
+ if(szTag.isEmpty())
+ {
+ KviStr reply("KVIrc " KVI_VERSION " '" KVI_RELEASE_NAME "' " KVI_SOURCES_DATE " - http://www.kvirc.net - Supported tags: ");
+ for(int i=0;ctcpTagTable[i][0];i++)
+ {
+ reply.append(ctcpTagTable[i][0]);
+ if(ctcpTagTable[i + 1][0])reply.append(',');
+ }
+ reply.append(" - Use 'CLIENTINFO <tag>' for a description of each tag");
+ replyCtcp(msg,reply.ptr());
+ } else {
+ bool bFound = false;
+ for(int i=0;ctcpTagTable[i][0] && !bFound;i++)
+ {
+ if(kvi_strEqualCS(ctcpTagTable[i][0],szTag.ptr()))
+ {
+ KviStr reply(KviStr::Format,"%s: %s",ctcpTagTable[i][0],ctcpTagTable[i][1]);
+ replyCtcp(msg,reply.ptr());
+ bFound = true;
+ }
+ }
+ if(!bFound)
+ {
+ msg->szTag= "ERRMSG";
+ KviStr reply(KviStr::Format,"Unsupported tag %s",szTag.ptr());
+ replyCtcp(msg,reply.ptr());
+ }
+ }
+ } else msg->bIgnored = true;
+ }
+
+ echoCtcpRequest(msg);
+}
+
+void KviServerParser::parseCtcpRequestFinger(KviCtcpMessage *msg)
+{
+ // completely latin1 atm
+ if(!checkCtcpFlood(msg))
+ {
+ if(!KVI_OPTION_BOOL(KviOption_boolIgnoreCtcpFinger))
+ {
+ KviStr username = getenv("USER");
+ if(username.isEmpty())username = getenv("LOGNAME");
+ if(username.isEmpty())username = msg->msg->connection()->userInfo()->userName();
+ // FIXME: #warning "UTSNAME ?...AND OTHER INFO ?...SYSTEM IDLE TIME ?...KVIRC IDLE TIME ?"
+ KviStr reply(KviStr::Format,"%s",username.ptr());
+ replyCtcp(msg,reply.ptr());
+ } else msg->bIgnored = true;
+ }
+
+ echoCtcpRequest(msg);
+}
+
+void KviServerParser::parseCtcpRequestSource(KviCtcpMessage *msg)
+{
+ if(!checkCtcpFlood(msg))
+ {
+ if(!KVI_OPTION_BOOL(KviOption_boolIgnoreCtcpSource))
+ {
+ QString version = "KVIrc " KVI_VERSION " '" KVI_RELEASE_NAME "' - http://www.kvirc.net/";
+ if(!KVI_OPTION_STRING(KviOption_stringCtcpSourcePostfix).isEmpty())
+ {
+ version+=" :";
+ version+= KVI_OPTION_STRING(KviOption_stringCtcpSourcePostfix);
+ }
+ replyCtcp(msg,version.utf8().data());
+ } else msg->bIgnored = true;
+ }
+
+ echoCtcpRequest(msg);
+}
+
+void KviServerParser::parseCtcpRequestTime(KviCtcpMessage *msg)
+{
+ if(!checkCtcpFlood(msg))
+ {
+ if(!KVI_OPTION_BOOL(KviOption_boolIgnoreCtcpTime))
+ {
+ replyCtcp(msg,QDateTime::currentDateTime().toString());
+ } else msg->bIgnored = true;
+ }
+
+ echoCtcpRequest(msg);
+}
+
+void KviServerParser::parseCtcpRequestPage(KviCtcpMessage *msg)
+{
+ if(!checkCtcpFlood(msg))
+ {
+ if(!KVI_OPTION_BOOL(KviOption_boolIgnoreCtcpPage))
+ {
+ KVI_OPTION_STRING(KviOption_stringCtcpPageReply).stripWhiteSpace();
+ if(KVI_OPTION_STRING(KviOption_stringCtcpPageReply).isEmpty())
+ {
+ KVI_OPTION_STRING(KviOption_stringCtcpPageReply) = KVI_DEFAULT_CTCP_PAGE_REPLY;
+ }
+ replyCtcp(msg,KVI_OPTION_STRING(KviOption_stringCtcpPageReply));
+ if(KVI_OPTION_BOOL(KviOption_boolShowDialogOnCtcpPage))
+ {
+ if(!g_pCtcpPageDialog)g_pCtcpPageDialog = new KviCtcpPageDialog();
+ KviStr szData8;
+ szData8 = msg->pData;
+ QString szData;
+ szData = msg->msg->connection()->decodeText(szData8.ptr());
+ g_pCtcpPageDialog->addPage(msg->pSource->nick(),msg->pSource->user(),msg->pSource->host(),szData);
+ g_pCtcpPageDialog->popup();
+ }
+ } else msg->bIgnored = true;
+ }
+
+ echoCtcpRequest(msg);
+}
+
+void KviServerParser::parseCtcpRequestAction(KviCtcpMessage *msg)
+{
+ KviStr szData8;
+ // CTCP ACTION is a special exception... most clients do not encode/decode it.
+ //msg->pData = extractCtcpParameter(msg->pData,szData8,false);
+ szData8 = msg->pData;
+
+ KviWindow * pOut = 0;
+ bool bIsChannel = !IS_ME(msg->msg,msg->szTarget);
+
+ QString szData;
+
+ if(bIsChannel)
+ {
+ pOut = (KviWindow *)msg->msg->connection()->findChannel(msg->szTarget);
+ if(pOut)szData = pOut->decodeText(szData8.ptr());
+ else szData = msg->msg->connection()->decodeText(szData8.ptr());
+ } else {
+ KviQuery * query = msg->msg->connection()->findQuery(msg->pSource->nick());
+ if(!query)
+ {
+ szData = msg->msg->connection()->decodeText(szData8.ptr());
+ // New query requested ?
+ // FIXME: #warning "CHECK FOR SPAM!"
+ if(KVI_OPTION_BOOL(KviOption_boolCreateQueryOnPrivmsg))
+ {
+ // We still want to create it
+ // Give the scripter a chance to filter it out again
+ if(KVS_TRIGGER_EVENT_4_HALTED(KviEvent_OnQueryWindowRequest,msg->msg->console(),
+ msg->pSource->nick(),
+ msg->pSource->username(),
+ msg->pSource->host(),
+ szData))
+ {
+ // check if the scripter hasn't created it
+ query = msg->msg->connection()->findQuery(msg->pSource->nick());
+ } else {
+ // no query yet, create it!
+ // this will trigger OnQueryWindowCreated
+ query = msg->msg->console()->connection()->createQuery(msg->pSource->nick());
+ query->setTarget(msg->pSource->nick(),msg->pSource->username(),msg->pSource->host());
+ }
+ }
+ }
+ pOut = (KviWindow *)query;
+ if(pOut)szData = pOut->decodeText(szData8.ptr());
+ else szData = msg->msg->connection()->decodeText(szData8.ptr());
+ }
+
+ bool bTargetFound = pOut;
+ if(!pOut)
+ {
+ pOut = KVI_OPTION_BOOL(KviOption_boolExternalMessagesToActiveWindow) ? msg->msg->console()->activeWindow() : msg->msg->console();
+ }
+
+ if(KVS_TRIGGER_EVENT_5_HALTED(KviEvent_OnAction,pOut,
+ msg->pSource->nick(),
+ msg->pSource->username(),
+ msg->pSource->host(),
+ msg->szTarget,
+ szData
+ ))
+ {
+ msg->msg->setHaltOutput();
+ return;
+ }
+
+ int type = msg->msg->console()->applyHighlighting(pOut,KVI_OUT_ACTION,msg->pSource->nick(),msg->pSource->user(),msg->pSource->host(),szData);
+
+ if(type < 0)return; // event stopped the message!
+ if(type == KVI_OUT_HIGHLIGHT)
+ {
+ if(!pOut->hasAttention())
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolFlashWindowOnHighlightedMessages))
+ pOut->demandAttention();
+ if(KVI_OPTION_BOOL(KviOption_boolPopupNotifierOnHighlightedMessages))
+ {
+ QString szMsg = "<b>";
+ szMsg += msg->pSource->nick();
+ szMsg += "</b> ";
+ #ifdef COMPILE_USE_QT4
+ szMsg += Qt::escape(szData);
+ #else
+ szMsg += QStyleSheet::escape(szData);
+ #endif
+ //debug("kvi_sp_ctcp.cpp:975 debug: %s",szMsg.data());
+ g_pApp->notifierMessage(pOut,KVI_OPTION_MSGTYPE(KVI_OUT_ACTION).pixId(),szMsg,90);
+ }
+ }
+ }
+
+ if(bTargetFound)
+ {
+ QString szMsg = QString("\r!n\r%1\r ").arg(msg->pSource->nick());
+ szMsg += szData;
+ if(bIsChannel)
+ {
+ ((KviChannel *)pOut)->outputMessage(type,szMsg);
+ } else {
+ pOut->outputNoFmt(type,szMsg);
+ }
+ } else {
+ if(bIsChannel)
+ {
+ pOut->output(KVI_OUT_SYSTEMWARNING,
+ __tr2qs("The following CTCP ACTION has unrecognized target %Q"),
+ &(msg->szTarget));
+ }
+ KviStr buffer1,buffer2;
+ pOut->output(type,
+ __tr2qs("CTCP ACTION from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"),
+ &(msg->pSource->nick()),&(msg->pSource->user()),
+ &(msg->pSource->host()),&szData);
+ }
+}
+
+// FIXME: #warning "UTSNAME ?...AND OTHER INFO ?...SYSTEM IDLE TIME ?...KVIRC IDLE TIME ?"
+
+void KviServerParser::parseCtcpRequestAvatar(KviCtcpMessage *msg)
+{
+ // AVATAR
+ if(!KVI_OPTION_BOOL(KviOption_boolIgnoreCtcpAvatar))
+ {
+ QString szGenderTag=" ";
+ if(KVI_OPTION_STRING(KviOption_stringCtcpUserInfoGender).startsWith("m",false)){
+ szGenderTag.append("M");
+ } else if(KVI_OPTION_STRING(KviOption_stringCtcpUserInfoGender).startsWith("f",false)){
+ szGenderTag.append("F");
+ } else {
+ szGenderTag.append("?");
+ }
+
+ KviAvatar * a = msg->msg->console()->currentAvatar();
+ if(a)
+ {
+ if(!checkCtcpFlood(msg))
+ {
+ // FIXME: #warning "OPTION FOR SETTING A FIXED BIND ADDRESS FOR OUTGOING DCC OFFERS"
+ QString szUserMask;
+ msg->pSource->mask(szUserMask);
+
+ QString szReply,szFileName;
+ szFileName=a->name();
+ if(KVI_OPTION_BOOL(KviOption_boolDCCFileTransferReplaceOutgoingSpacesWithUnderscores))
+ szFileName.replace(" ","_");
+
+ // escape the spaces with the right octal code
+ encodeCtcpParameter(szFileName,szReply);
+
+
+ if(!a->isRemote())
+ {
+ KviSharedFile * o;
+ if(!(o = g_pSharedFilesManager->addSharedFile(szFileName,a->localPath(),szUserMask,KVI_OPTION_UINT(KviOption_uintAvatarOfferTimeoutInSecs))))
+ {
+ // Don't delete o...it has been already deleted by g_pSharedFilesManager
+ msg->msg->console()->output(KVI_OUT_SYSTEMWARNING,__tr2qs("Unable to add file offer for file %Q (File not readable?)"),&(a->localPath()));
+ } else {
+ if(_OUTPUT_VERBOSE)
+ {
+ msg->msg->console()->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Added %d sec file offer for file %Q (%Q) to recipient %Q"),
+ KVI_OPTION_UINT(KviOption_uintAvatarOfferTimeoutInSecs),&(a->name()),&(a->localPath()),&szUserMask);
+ }
+ }
+ //if(o)szReply.append(QString(" %1").arg(o->fileSize()));
+ }
+
+ szReply.append(szGenderTag);
+ replyCtcp(msg,szReply.utf8().data());
+ }
+ } else {
+ // no avatar set.. ignore channel requests if the user wishes
+ if(!IS_ME(msg->msg,msg->szTarget))
+ {
+ // channel target
+ if(KVI_OPTION_BOOL(KviOption_boolIgnoreChannelAvatarRequestsWhenNoAvatarSet))msg->bIgnored = true;
+ }
+ if(!msg->bIgnored)replyCtcp(msg,"");
+ }
+ } else msg->bIgnored = true;
+
+ echoCtcpRequest(msg);
+}
+
+
+void KviServerParser::parseCtcpReplyAvatar(KviCtcpMessage *msg)
+{
+ QString szRemoteFile;
+ QString szGender;
+ QString decoded=msg->msg->console()->decodeText(msg->pData);
+
+ decoded = extractCtcpParameter(decoded.utf8().data(),szRemoteFile,true);
+ decoded = extractCtcpParameter(decoded.utf8().data(),szGender,true);
+ szRemoteFile.stripWhiteSpace();
+
+ bool bPrivate = IS_ME(msg->msg,msg->szTarget);
+
+ QString textLine;
+ KviAvatar * avatar = 0;
+
+ bool bResetAvatar = true;
+
+ QString nickLink;
+
+ KviQString::sprintf(nickLink,"\r!n\r%Q\r",&(msg->pSource->nick()));
+
+ KviIrcUserEntry * e = msg->msg->connection()->userDataBase()->find(msg->pSource->nick());
+ if(e){
+ if( (szGender=="m") || (szGender=="M") ) {
+ e->setGender(KviIrcUserEntry::Male);
+ } else if((szGender=="f") || (szGender=="F") ) {
+ e->setGender(KviIrcUserEntry::Female);
+ } else {
+ e->setGender(KviIrcUserEntry::Unknown);
+ }
+ }
+
+ QString szWhere = bPrivate ? __tr2qs("private") : __tr2qs("channel notification:");
+ QString szWhat = bPrivate ? __tr2qs("notification") : msg->szTarget;
+
+ if(szRemoteFile.isEmpty())
+ {
+ // avatar unset
+ KviQString::sprintf(textLine,__tr2qs("%Q unsets avatar"),
+ &nickLink);
+ if(_OUTPUT_VERBOSE)
+ KviQString::appendFormatted(textLine," (%Q %Q)",&szWhere,&szWhat);
+ } else {
+
+ // FIXME: #warning "The avatar should be the one with the requested size!!"
+ KviQString::sprintf(textLine,__tr2qs("%Q changes avatar to %s"),
+ &nickLink,szRemoteFile.utf8().data(),&szWhere,&szWhat);
+ if(_OUTPUT_VERBOSE)
+ KviQString::appendFormatted(textLine," (%Q %Q)",&szWhere,&szWhat);
+
+ bool bIsUrl = KviQString::equalCIN("http://",szRemoteFile,7) && (szRemoteFile.length() > 7);
+ if(!bIsUrl)
+ {
+ // no hacks
+ KviQString::cutToLast(szRemoteFile,'/');
+ KviQString::cutToLast(szRemoteFile,'\\');
+ }
+
+ avatar = g_pIconManager->getAvatar(QString::null,szRemoteFile);
+
+ if((avatar == 0) && e)
+ {
+ // we have no such file on our HD....
+ bResetAvatar = false;
+ // request DCC GET ?
+ if(KVI_OPTION_BOOL(KviOption_boolRequestMissingAvatars))
+ {
+ // FIXME: #warning "Request avatars only from registered users ?"
+ // FIXME: #warning "Ask before making the request ?"
+ if(bIsUrl)
+ {
+ KviStr szLocalFilePath;
+ KviStr szLocalFile = szRemoteFile;
+ g_pIconManager->urlToCachedFileName(szLocalFile);
+ g_pApp->getLocalKvircDirectory(szLocalFilePath,KviApp::Avatars,szLocalFile.ptr());
+ szLocalFilePath.replaceAll('\\',"\\\\"); // <-- this is especially for windows
+ QString szCommand = "http.get -w=nm ";
+ unsigned int uMaxSize = KVI_OPTION_UINT(KviOption_uintMaximumRequestedAvatarSize);
+ if(uMaxSize > 0)KviQString::appendFormatted(szCommand,"-m=%u ",uMaxSize);
+ szRemoteFile = szRemoteFile.replace(";","%3B");
+ szRemoteFile = szRemoteFile.replace("\"","%22");
+ szCommand += "\""+szRemoteFile+"\"";
+ szCommand += " \"";
+ szCommand += szLocalFilePath.ptr();
+ szCommand += "\"";
+
+ if(KviKvsScript::run(szCommand,msg->msg->console()))
+ {
+ if(_OUTPUT_VERBOSE)
+ {
+ KviQString::appendFormatted(textLine,
+ __tr2qs(": No valid local copy of avatar available, requesting one (HTTP GET %s)"),
+ szRemoteFile.utf8().data());
+ }
+ g_pApp->setAvatarOnFileReceived(msg->msg->console(),
+ szRemoteFile,msg->pSource->nick(),msg->pSource->username(),msg->pSource->host());
+ } else {
+ if(_OUTPUT_VERBOSE)
+ KviQString::appendFormatted(textLine,__tr2qs(": No valid local copy of avatar available; failed to start an HTTP transfer, ignoring"));
+ }
+ } else {
+ if(!checkCtcpFlood(msg))
+ {
+ if(_OUTPUT_VERBOSE)
+ {
+ KviQString::appendFormatted(textLine,
+ __tr2qs(": No valid local copy of avatar available, requesting one (DCC GET %s)"),
+ szRemoteFile.utf8().data());
+ }
+
+ QString szFName;
+ encodeCtcpParameter(szRemoteFile.utf8().data(),szFName);
+ msg->msg->connection()->sendFmtData("PRIVMSG %s :%cDCC GET %s%c",
+ msg->msg->connection()->encodeText(msg->pSource->nick()).data(),0x01,msg->msg->connection()->encodeText(szFName.utf8().data()).data(),0x01);
+ g_pApp->setAvatarOnFileReceived(msg->msg->console(),
+ szRemoteFile,msg->pSource->nick(),msg->pSource->username(),msg->pSource->host());
+ } else {
+ if(_OUTPUT_VERBOSE)
+ KviQString::appendFormatted(textLine,__tr2qs(": No valid local copy of avatar available; flood limit exceeded, ignoring"));
+ }
+ }
+ } else {
+ if(_OUTPUT_VERBOSE)
+ KviQString::appendFormatted(textLine,__tr2qs(": No valid local copy of avatar available, ignoring"));
+ }
+ }
+ }
+
+ if(!e)
+ {
+ if(_OUTPUT_VERBOSE)
+ KviQString::appendFormatted(textLine,__tr2qs(": No such nickname in the user database, ignoring the change"));
+ msg->msg->console()->outputNoFmt(KVI_OUT_AVATAR,textLine);
+ return;
+ }
+
+ if(bResetAvatar)e->setAvatar(avatar);
+
+ msg->msg->console()->avatarChanged(avatar,msg->pSource->nick(),msg->pSource->user(),msg->pSource->host(),
+ msg->msg->haltOutput() ? QString::null : textLine);
+}
+
+
+
+typedef void (*dccModuleCtcpDccParseRoutine)(KviDccRequest *par);
+
+
+
+void KviServerParser::parseCtcpRequestDcc(KviCtcpMessage *msg)
+{
+ KviDccRequest p;
+ KviStr aux = msg->pData;
+ msg->pData = extractCtcpParameter(msg->pData,p.szType);
+ msg->pData = extractCtcpParameter(msg->pData,p.szParam1);
+ msg->pData = extractCtcpParameter(msg->pData,p.szParam2);
+ msg->pData = extractCtcpParameter(msg->pData,p.szParam3);
+ msg->pData = extractCtcpParameter(msg->pData,p.szParam4);
+ msg->pData = extractCtcpParameter(msg->pData,p.szParam5);
+ p.ctcpMsg = msg;
+ p.bIpV6 = msg->msg->console()->isIpV6Connection();
+ p.pConsole = msg->msg->console();
+
+ KviRegisteredUser * u = msg->msg->connection()->userDataBase()->registeredUser(msg->pSource->nick(),msg->pSource->user(),msg->pSource->host());
+
+ if (u)
+ {
+ if (u->isIgnoreEnabledFor(KviRegisteredUser::Dcc))
+ {
+ if (KVI_OPTION_BOOL(KviOption_boolVerboseIgnore))
+ {
+ msg->msg->console()->output(KVI_OUT_DCCREQUEST,
+ __tr2qs("Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S)"),
+ &p.szType,&(msg->pSource->nick()),
+ &(msg->pSource->user()),&(msg->pSource->host()),
+ &msg->szTag,&aux);
+ }
+ return;
+ }
+ }
+
+ /*if(KVI_OPTION_BOOL(KviOption_boolIgnoreCtcpDcc))
+ {
+ if(!msg->msg->haltOutput())
+ {
+ msg->msg->console()->output(KVI_OUT_DCCREQUEST,
+ __tr2qs("Ignoring DCC %S request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%Q %S)"),
+ &p.szType,&(msg->pSource->nick()),
+ &(msg->pSource->user()),&(msg->pSource->host()),
+ &msg->szTag,&aux);
+ }
+ return;
+ }*/
+
+ bool bIsFlood = checkCtcpFlood(msg);
+
+ if(bIsFlood &&
+ ((kvi_strEqualCI(p.szType.ptr(),"SEND")) ||
+ (kvi_strEqualCI(p.szType.ptr(),"RSEND")) ||
+ (kvi_strEqualCI(p.szType.ptr(),"TSEND")) ||
+ (kvi_strEqualCI(p.szType.ptr(),"TRSEND"))
+ ))
+ {
+ // don't consider as flood the avatars we have requested
+ if(g_pApp->findPendingAvatarChange(msg->msg->console(),msg->pSource->nick(),p.szParam1.ptr()))
+ bIsFlood = false;
+ }
+
+ if(!bIsFlood)
+ {
+ if(!msg->msg->haltOutput())
+ {
+ QString decoded = msg->msg->console()->decodeText(p.szType.ptr());
+ msg->msg->console()->output(KVI_OUT_DCCREQUEST,
+ __tr2qs("Processing DCC %Q request from \r!n\r%Q\r [%Q@\r!h\r%Q\r] (%s %s)"),
+ &decoded,&(msg->pSource->nick()),
+ &(msg->pSource->user()),&(msg->pSource->host()),
+ msg->msg->console()->decodeText(msg->szTag).data(),
+ msg->msg->console()->decodeText(aux.ptr()).data());
+ }
+
+ KviModule * m = g_pModuleManager->getModule("dcc");
+ if(!m)
+ {
+ msg->msg->console()->output(KVI_OUT_DCCERROR,
+ __tr2qs("Unable to process the above request: Cannot load DCC module (%s)"),g_pModuleManager->lastError().ptr());
+ } else {
+ dccModuleCtcpDccParseRoutine proc = (dccModuleCtcpDccParseRoutine)m->getSymbol("dccModuleCtcpDccParseRoutine");
+ if(!proc)
+ {
+ msg->msg->console()->outputNoFmt(KVI_OUT_DCCERROR,
+ __tr2qs("Unable to process the above request: DCC module may be broken"));
+ } else {
+ proc(&p);
+ }
+ }
+ } else {
+ // That's flood
+ echoCtcpRequest(msg);
+ }
+}
+
+void KviServerParser::parseCtcpReplyUserinfo(KviCtcpMessage *msg)
+{
+ QString szRemoteFile;
+ QString szGender;
+ QString decoded=msg->msg->console()->decodeText(msg->pData);
+
+ bool bNeedToUpdateUserlist = false;
+ KviIrcUserEntry * e = msg->msg->connection()->userDataBase()->find(msg->pSource->nick());
+ if(e)
+ {
+ int pos = decoded.find("Gender=",0,false);
+
+ if(pos>=0)
+ {
+ QChar c = decoded[pos+7];
+ switch(c.unicode())
+ {
+ case 'F':
+ case 'f':
+ bNeedToUpdateUserlist = true;
+ e->setGender(KviIrcUserEntry::Female);
+ break;
+ case 'M':
+ case 'm':
+ bNeedToUpdateUserlist = true;
+ e->setGender(KviIrcUserEntry::Male);
+ break;
+ }
+ }
+ }
+
+ if(bNeedToUpdateUserlist)
+ {
+ if(KviQString::equalCS(g_pActiveWindow->className(),QString("KviChannel")))
+ {
+ ((KviChannel*)g_pActiveWindow)->userListView()->updateArea();
+ }
+
+ }
+
+ echoCtcpReply(msg);
+}
+
+void KviServerParser::parseCtcpReplyGeneric(KviCtcpMessage *msg)
+{
+ echoCtcpReply(msg);
+}
+
+
+void KviServerParser::parseCtcpReplyLagcheck(KviCtcpMessage * msg)
+{
+ // this is an internal CTCP used for checking lag
+ KviStr szTag;
+ msg->pData = extractCtcpParameter(msg->pData,szTag,true);
+ if(msg->msg->console()->connection()->lagMeter())
+ msg->msg->console()->connection()->lagMeter()->lagCheckComplete(szTag.ptr());
+}
+
+//ERRORMSG,ECHO,ERRMSG
+//SED,DCC,SOUND/MULTIMEDIA/MM,SCRIPT
diff --git a/src/kvirc/sparser/kvi_sp_literal.cpp b/src/kvirc/sparser/kvi_sp_literal.cpp
new file mode 100644
index 00000000..f6a63a5a
--- /dev/null
+++ b/src/kvirc/sparser/kvi_sp_literal.cpp
@@ -0,0 +1,1867 @@
+//====================================================================================
+//
+// File : kvi_sp_literal.cpp
+// Creation date : Thu Aug 3 2000 01:29:12 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//====================================================================================
+
+#define __KVIRC__
+
+#include "kvi_sparser.h"
+#include "kvi_window.h"
+#include "kvi_console.h"
+#include "kvi_out.h"
+#include "kvi_locale.h"
+#include "kvi_ircsocket.h"
+#include "kvi_options.h"
+#include "kvi_ircmask.h"
+#include "kvi_channel.h"
+#include "kvi_topicw.h"
+#include "kvi_frame.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_query.h"
+#include "kvi_userlistview.h"
+#include "kvi_antispam.h"
+#include "kvi_nickserv.h"
+#include "kvi_parameterlist.h"
+#include "kvi_ircuserdb.h"
+#include "kvi_app.h"
+#include "kvi_regusersdb.h"
+#include "kvi_debug.h"
+#include "kvi_time.h"
+#include "kvi_useraction.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectionuserinfo.h"
+#include "kvi_ircconnectiontarget.h"
+#include "kvi_ircconnectionserverinfo.h"
+#include "kvi_ircconnectionstatedata.h"
+#include "kvi_ircconnectionnetsplitdetectordata.h"
+#include "kvi_iconmanager.h"
+#include "kvi_lagmeter.h"
+#include "kvi_ircserver.h"
+#include "kvi_kvs_eventtriggers.h"
+#include "kvi_qcstring.h"
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_CRYPT_SUPPORT
+ #include "kvi_crypt.h"
+ #include "kvi_cryptcontroller.h"
+#endif
+
+#include "kvi_kvs_script.h"
+
+//#include "kvi_regusersdb.h"
+//#include "kvi_iconmanager.h"
+#include <qdatetime.h>
+
+#ifdef COMPILE_USE_QT4
+ #include <QTextDocument>
+#else
+ #include <qstylesheet.h>
+#endif
+
+extern KviNickServRuleSet * g_pNickServRuleSet;
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// PING
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+void KviServerParser::parseLiteralPing(KviIrcMessage *msg)
+{
+ // PING
+ // <optional_prefix> PING :<argument>
+ msg->connection()->sendFmtData("PONG %s",msg->console()->connection()->encodeText(msg->allParams()).data());
+
+ QString szPrefix = msg->connection()->decodeText(msg->safePrefix());
+ QString szAllParams = msg->connection()->decodeText(msg->allParams());
+
+ if(KVS_TRIGGER_EVENT_2_HALTED(KviEvent_OnPing,msg->console(),szPrefix,szAllParams))
+ msg->setHaltOutput();
+
+ if((!msg->haltOutput()) && KVI_OPTION_BOOL(KviOption_boolShowPingPong))
+ {
+ msg->console()->output(KVI_OUT_SERVERPING,
+ __tr2qs("Received ping from \r!s\r%Q\r (PING %Q), replied pong"),
+ &szPrefix,&szAllParams);
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// PONG
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+void KviServerParser::parseLiteralPong(KviIrcMessage *msg)
+{
+ QString szPrefix = msg->connection()->decodeText(msg->safePrefix());
+ QString szAllParams = msg->connection()->decodeText(msg->allParams());
+
+ if(KVS_TRIGGER_EVENT_2_HALTED(KviEvent_OnPong,msg->console(),szPrefix,szAllParams))
+ msg->setHaltOutput();
+
+ if(msg->console()->connection()->lagMeter())
+ {
+ if(msg->console()->connection()->lagMeter()->lagCheckComplete("@ping@"))
+ msg->setHaltOutput(); // was internally generated!
+ }
+
+ if((!msg->haltOutput()) && KVI_OPTION_BOOL(KviOption_boolShowPingPong))
+ {
+ msg->console()->output(KVI_OUT_SERVERPING,
+ __tr2qs("Received pong from \r!s\r%s\r (PONG %s)"),msg->safePrefix(),msg->allParams());
+ }
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// ERROR
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+void KviServerParser::parseLiteralError(KviIrcMessage *msg)
+{
+ // ERROR
+ // <optional_prefix> ERROR :<argument>
+ // ERROR :Closing Link: phoenix.pragmaware.net (Ping timeout)
+
+ QString szPrefix = msg->connection()->decodeText(msg->safePrefix());
+ QString szParams = msg->connection()->decodeText(msg->allParams());
+
+ if(KVS_TRIGGER_EVENT_2_HALTED(KviEvent_OnError,msg->console(),szPrefix,szParams))
+ msg->setHaltOutput();
+
+ if(!msg->haltOutput())
+ {
+ msg->console()->output(KVI_OUT_SERVERERROR,
+ __tr2qs("Server ERROR: %Q"),&szParams);
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// JOIN
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+void KviServerParser::parseLiteralJoin(KviIrcMessage *msg)
+{
+ // JOIN
+ // :<joiner_mask> JOIN :<channel>
+ QString szNick,szUser,szHost;
+ msg->decodeAndSplitPrefix(szNick,szUser,szHost);
+
+ const char * encodedChan = msg->safeTrailing();
+ QString channel = msg->connection()->decodeText(encodedChan);
+
+ if(channel.isEmpty())
+ {
+ // This is broken....
+ UNRECOGNIZED_MESSAGE(msg,__tr2qs("Missing channel parameter in join message"));
+ return;
+ }
+
+ // check for extended join syntax.
+ // it is used in splits only (AFAIK)
+ // nick!user@host JOIN :#channel\x07[o|v]
+ const QChar * pExt = KviQString::nullTerminatedArray(channel);
+ char chExtMode = 0;
+ while(pExt->unicode() && (pExt->unicode() != 0x07))pExt++;
+ if(pExt->unicode())
+ {
+ ++pExt;
+ if(pExt->unicode())
+ {
+ chExtMode = (char)pExt->unicode();
+ channel.remove(channel.length() - 2,2); // assuming that we're at the end (we should be)
+ } // else { senseless 0x07 in channel name ?
+ }
+
+ // Now lookup the channel
+ KviConsole * console = msg->console();
+ KviChannel * chan = msg->connection()->findChannel(channel);
+
+ bool bIsMe = IS_ME(msg,szNick);
+
+ if(!chan)
+ {
+ // This must be me...(or desync)
+ if(bIsMe)
+ {
+ msg->connection()->userInfoReceived(szUser,szHost);
+ chan = msg->connection()->createChannel(channel); // New channel (will resurrect an eventual dead one too!)
+ } else {
+ // Someone is joining an inexsisting channel!!!
+ UNRECOGNIZED_MESSAGE(msg,__tr("Received a join message for an unknown channel, possible desync"));
+ return;
+ }
+
+ int iFlags = 0;
+ iFlags = msg->connection()->serverInfo()->modeFlagFromModeChar(chExtMode);
+
+ KviUserListEntry * it = chan->join(szNick,szUser,szHost,iFlags);
+ if(iFlags)chan->updateCaption();
+
+ // FIXME: #warning "Trigger also OnMeVoice and OnMeOp here ?"
+ if(!(it->globalData()->avatar()))
+ {
+ KviAvatar * av = console->defaultAvatarFromOptions();
+ if(av)
+ {
+ it->globalData()->setAvatar(av);
+ console->avatarChanged(av,szNick,szUser,szHost,QString::null);
+ }
+ }
+
+ if(KVS_TRIGGER_EVENT_0_HALTED(KviEvent_OnMeJoin,chan))
+ msg->setHaltOutput();
+
+ // the channel requests must be sent AFTER we have created and accessed the chan
+ // since it MAY happen that a sendFmtData() call fails by detecting a disconnect
+ // and thus destroys the channel window!
+
+ // If this problem persists in other parts of the KVIrc core then
+ // we should disable disconnection detection during the parsing of a single
+ // message in KviIrcSocket. See the comment in KviIrcSocket::processData() for more info.
+
+ // FIXME: #warning "IF VERBOSE SAY THAT WE'RE REQUESTING MODES & BAN LIST" (Synching channel)
+
+ if(!msg->connection()->sendFmtData("MODE %s",encodedChan))return; // disconnected
+
+ if(msg->connection()->serverInfo()->supportsModesIe())
+ {
+ if(!KVI_OPTION_BOOL(KviOption_boolDisableBanExceptionListRequestOnJoin))
+ {
+ if(!msg->connection()->sendFmtData("MODE %s e",encodedChan))return; // disconnected
+ chan->setSentBanExceptionListRequest();
+ }
+ if(!KVI_OPTION_BOOL(KviOption_boolDisableInviteListRequestOnJoin))
+ {
+ if(!msg->connection()->sendFmtData("MODE %s I",encodedChan))return; // disconnected
+ chan->setSentInviteListRequest();
+ }
+ }
+
+ // MODE %s b MUST BE THE LAST AUTOMATIC CHANNEL QUERY
+ // so we get RPL_ENDOFBANLIST as the last reply
+ // and we know that the channel is in sync
+
+ if(!KVI_OPTION_BOOL(KviOption_boolDisableWhoRequestOnJoin))
+ {
+ msg->connection()->stateData()->setLastSentChannelWhoRequest(kvi_unixTime());
+ if(msg->connection()->lagMeter())
+ {
+ KviStr tmp(KviStr::Format,"WHO %s",encodedChan);
+ msg->connection()->lagMeter()->lagCheckRegister(tmp.ptr(),60);
+ }
+ if(!msg->connection()->sendFmtData("WHO %s",encodedChan))return; // disconnected
+ chan->setSentWhoRequest();
+ }
+ if(!KVI_OPTION_BOOL(KviOption_boolDisableBanListRequestOnJoin))
+ {
+ if(!msg->connection()->sendFmtData("MODE %s b",encodedChan))return; // disconnected
+ chan->setSentBanListRequest();
+ }
+
+ } else {
+ // This must be someone else...(or desync)
+ int iFlags = 0;
+ iFlags = msg->connection()->serverInfo()->modeFlagFromModeChar(chExtMode);
+
+ KviUserListEntry * it = chan->join(szNick,szUser,szHost,iFlags);
+
+ // FIXME: #warning "Trigger also OnVoice and OnOp here ?"
+ // Note: checkDefaultAvatar() makes a KviRegisteredUser lookup
+ // if later it is needed, make it return a pointer
+ if(!(it->globalData()->avatar()))console->checkDefaultAvatar(it->globalData(),szNick,szUser,szHost);
+
+ if(KVS_TRIGGER_EVENT_3_HALTED(KviEvent_OnJoin,chan,szNick,szUser,szHost))
+ msg->setHaltOutput();
+ // FIXME: #warning "WE COULD OPTIONALLY REQUEST A /WHO FOR THE USERS JOINING THAT WE DON'T KNOW THE HOST OF"
+ }
+
+ // Now say it to the world
+ if(!msg->haltOutput())
+ {
+ // FIXME: #warning "CHECK IF MESSAGES GO TO CONSOLE OR NOT"
+
+ if(chExtMode != 0)
+ {
+ chan->output(KVI_OUT_JOIN,
+ __tr2qs("\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r [implicit +%c umode change]"),
+ &szNick,&szUser,&szHost,&channel,chExtMode);
+
+ } else {
+ chan->output(KVI_OUT_JOIN,
+ __tr2qs("\r!n\r%Q\r [%Q@\r!h\r%Q\r] has joined \r!c\r%Q\r"),
+ &szNick,&szUser,&szHost,&channel);
+ }
+ }
+
+ //if(!bisMe) deleted because we can open query with our nick
+ QString szChans;
+ int iChans = msg->connection()->getCommonChannels(szNick,szChans);
+ KviQuery * q = console->connection()->findQuery(szNick);
+ if(q)
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolEnableQueryTracing))
+ {
+ q->output(KVI_OUT_QUERYTRACE,
+ __tr2qs("\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just joined \r!c\r%Q\r"),&szNick,&szUser,
+ &szHost,&channel);
+ q->notifyCommonChannels(szNick,szUser,szHost,iChans,szChans);
+ } else {
+ q->updateLabelText();
+ }
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// PART
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+void KviServerParser::parseLiteralPart(KviIrcMessage *msg)
+{
+ // PART
+ // :<source_mask> PART <channel> :<part message>
+ QString szNick,szUser,szHost;
+ msg->decodeAndSplitPrefix(szNick,szUser,szHost);
+
+ QString szChan = msg->connection()->decodeText(msg->safeParam(0));
+
+ // Now lookup the channel
+ KviConsole * console = msg->console();
+ KviChannel * chan = msg->connection()->findChannel(szChan);
+
+ if(!chan)
+ {
+ //chan = msg->context()->findDeadChannel(msg->safeParam(0));
+ UNRECOGNIZED_MESSAGE(msg,__tr("Received a part message for an unknown channel, possible desync"));
+ return;
+ }
+
+ // always decode with the textEncoding of the channel
+ QString partMsg = msg->paramCount() > 1 ? chan->decodeText(msg->safeTrailing()) : QString::null;
+
+ if(IS_ME(msg,szNick))
+ {
+ if(KVS_TRIGGER_EVENT_1_HALTED(KviEvent_OnMePart,chan,partMsg))
+ msg->setHaltOutput();
+
+ KviWindow * pOut = console;
+
+ // It's me!
+ if(chan->closeOnPart() && !KVI_OPTION_BOOL(KviOption_boolKeepChannelOpenOnPart))
+ {
+ chan->frame()->closeWindow(chan); // <-- deleted path
+ } else {
+ chan->part(szNick); // this will trigger the action too
+ chan->setDeadChan();
+ pOut = chan;
+ }
+
+ if(!msg->haltOutput())
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolShowOwnParts))
+ {
+ if(partMsg.isEmpty())
+ pOut->output(KVI_OUT_PART,__tr2qs("You have left channel \r!c\r%Q\r"),&szChan);
+ else
+ pOut->output(KVI_OUT_PART,__tr2qs("You have left channel \r!c\r%Q\r: %Q"),&szChan,&partMsg);
+ }
+ }
+
+ } else {
+ // Someone else
+
+ if(KVS_TRIGGER_EVENT_4_HALTED(KviEvent_OnPart,chan,szNick,szUser,szHost,partMsg))
+ msg->setHaltOutput();
+
+ chan->part(szNick);
+
+ if(!msg->haltOutput())
+ {
+ if(!partMsg.isEmpty())
+ chan->output(KVI_OUT_PART,
+ __tr2qs("\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r: %Q"),&szNick,&szUser,
+ &szHost,&szChan,&partMsg);
+ else
+ chan->output(KVI_OUT_PART,
+ __tr2qs("\r!n\r%Q\r [%Q@\r!h\r%Q\r] has left \r!c\r%Q\r"),&szNick,&szUser,
+ &szHost,&szChan);
+
+ }
+
+ if(KVI_OPTION_BOOL(KviOption_boolEnableQueryTracing))
+ {
+ QString szChans;
+ int iChans = console->connection()->getCommonChannels(szNick,szChans);
+ KviQuery * q = console->connection()->findQuery(szNick);
+ if(q)
+ {
+ if(!partMsg.isEmpty())
+ q->output(KVI_OUT_QUERYTRACE,
+ __tr2qs("\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r: %Q"),
+ &szNick,&szUser,&szHost,&szChan,&partMsg);
+ else
+ q->output(KVI_OUT_QUERYTRACE,
+ __tr2qs("\r!nc\r%Q\r [%Q@\r!h\r%Q\r] has just left \r!c\r%Q\r"),
+ &szNick,&szUser,&szHost,&szChan);
+ q->notifyCommonChannels(szNick,szUser,szHost,iChans,szChans);
+ }
+ }
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// QUIT
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+void KviServerParser::parseLiteralQuit(KviIrcMessage *msg)
+{
+ // QUIT
+ // :<source_mask> QUIT :<quit message>
+ QString szNick,szUser,szHost;
+ msg->decodeAndSplitPrefix(szNick,szUser,szHost);
+
+ KviConsole * console = msg->console();
+
+ // NETSPLIT DETECTION STUFF
+ // this doesn't need to be decoded for the moment
+ const char * aux = msg->safeTrailing();
+ bool bWasSplit = false;
+ //determine if signoff string matches "%.% %.%", and only one space (from eggdrop code)
+ char *p = (char *)strchr(aux, ' ');
+ if (p && (p == (char *)strrchr(aux,' ')))
+ {
+ char *daSpace = p;
+ // one space detected. go ahead
+ char *z1, *z2;
+ *p = 0;
+ z1 = (char *)strchr(p + 1, '.');
+ z2 = (char *)strchr(aux, '.');
+ if (z1 && z2 && (*(z1 + 1) > 47) && (z1 - 1 != p) && (z2 + 1 != p) && (z2 != aux) && console->connection())
+ {
+ // server split, or else it looked like it anyway
+ KviIrcConnectionNetsplitDetectorData * ndd = msg->connection()->netsplitDetectorData();
+ *p=' ';
+ bWasSplit = true;
+
+ time_t curTime = kvi_unixTime();
+ int diff = ((unsigned int)curTime) - ((unsigned int)ndd->lastNetsplitOnQuitTime());
+ bool bDuplicate = false;
+
+ QString szReason = aux;
+ if(diff < 6)
+ {
+ if(KviQString::equalCI(ndd->lastNetsplitOnQuitReason(),szReason))
+ {
+ bDuplicate = true;
+ }
+ }
+
+ ndd->setLastNetsplitOnQuitTime(curTime);
+ ndd->setLastNetsplitOnQuitReason(szReason);
+
+ if(!bDuplicate)
+ {
+ KviStr sz1(aux,daSpace - aux);
+ KviStr sz2(daSpace + 1);
+
+ QString szD1 = msg->connection()->decodeText(sz1.ptr());
+ QString szD2 = msg->connection()->decodeText(sz2.ptr());
+ if(!KVS_TRIGGER_EVENT_2_HALTED(KviEvent_OnNetsplit,console,szD1,szD2))
+ {
+ if(!msg->haltOutput())
+ console->output(KVI_OUT_SPLIT,__tr2qs("Netsplit detected: %s"),aux);
+ }
+ }
+ } else *p = ' ';
+ }
+
+ // FIXME: #warning "Add a netsplit parameter ?"
+
+ if(KviKvsEventManager::instance()->hasAppHandlers(KviEvent_OnQuit))
+ {
+ // compute the channel list
+ QString chanlist;
+ QString szReason = msg->connection()->decodeText(msg->safeTrailing());
+
+ for(KviChannel *daChan=console->channelList()->first();daChan;daChan=console->channelList()->next())
+ {
+ if(daChan->isOn(szNick))
+ {
+ if(chanlist.isEmpty())chanlist = daChan->windowName();
+ else {
+ chanlist.append(',');
+ chanlist.append(daChan->windowName());
+ }
+ }
+ }
+
+ KviKvsVariantList vList;
+ vList.append(szNick);
+ vList.append(szUser);
+ vList.append(szHost);
+ vList.append(szReason);
+ vList.append(chanlist);
+
+ if(KviKvsEventManager::instance()->trigger(KviEvent_OnQuit,console,&vList))
+ msg->setHaltOutput();
+ }
+
+
+ for(KviChannel *c=console->channelList()->first();c;c=console->channelList()->next())
+ {
+ if(c->part(szNick))
+ {
+ if(!msg->haltOutput())
+ {
+ QString quitMsg = c->decodeText(msg->safeTrailing());
+
+ if(bWasSplit)
+ {
+ quitMsg.prepend("NETSPLIT ");
+ }
+
+ if(!msg->haltOutput())c->output(KVI_OUT_QUIT,
+ __tr2qs("\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"),
+ &szNick,&szUser,&szHost,&quitMsg);
+ }
+ }
+ }
+
+ if(!msg->haltOutput())
+ {
+ KviQuery * q = msg->connection()->findQuery(szNick);
+ if(q)
+ {
+ QString quitMsg = q->decodeText(msg->safeTrailing());
+ if(bWasSplit)
+ {
+ quitMsg.prepend("NETSPLIT ");
+ }
+ q->output(KVI_OUT_QUIT,__tr2qs("\r!n\r%Q\r [%Q@\r!h\r%Q\r] has quit IRC: %Q"),
+ &szNick,&szUser,&szHost,&quitMsg);
+ }
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// KICK
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+void KviServerParser::parseLiteralKick(KviIrcMessage *msg)
+{
+ // KICK
+ // :<source_mask> KICK <channel> <nick> :<kick message>
+ QString szNick,szUser,szHost;
+ msg->decodeAndSplitPrefix(szNick,szUser,szHost);
+
+ QString szChan = msg->connection()->decodeText(msg->safeParam(0));
+ QString victim = msg->connection()->decodeText(msg->safeParam(1));
+
+ KviConsole * console = msg->console();
+ KviChannel * chan = msg->connection()->findChannel(szChan);
+
+ if(!chan){
+ // Ooops , desync with the server.
+ UNRECOGNIZED_MESSAGE(msg,__tr("Received a kick message for an unknown channel, possible desync"));
+ return;
+ }
+
+ QString szKickMsg = chan->decodeText(msg->safeTrailing());
+
+ if(IS_ME(msg,victim))
+ {
+ // ops...I have been kicked
+
+ if(KVS_TRIGGER_EVENT_4_HALTED(KviEvent_OnMeKick,chan,
+ szNick,szUser,szHost,szKickMsg))
+ msg->setHaltOutput();
+ if(!KVI_OPTION_STRING(KviOption_stringOnMeKickedSound).isEmpty()) KviKvsScript::run("snd.play $0",0,new KviKvsVariantList(new KviKvsVariant(KVI_OPTION_STRING(KviOption_stringOnMeKickedSound))));
+
+ QString szPass = chan->channelKey();
+
+ if(KVI_OPTION_BOOL(KviOption_boolKeepChannelOpenOnKick))
+ {
+ chan->userAction(szNick,szUser,szHost,KVI_USERACTION_KICK);
+ chan->part(victim);
+ chan->setDeadChan();
+
+ if(!msg->haltOutput())
+ {
+ // FIXME: #warning "OPTION FOR THIS TO GO TO THE CONSOLE!"
+ chan->output(KVI_OUT_MEKICK,
+ __tr2qs("You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"),
+ &szChan,&szNick,&szUser,&szHost,&szKickMsg);
+ }
+ } else {
+ chan->frame()->closeWindow(chan); // <-- deleted path
+
+ if(!msg->haltOutput())
+ {
+ // FIXME: #warning "This could go also to the active window!"
+ console->output(KVI_OUT_MEKICK,
+ __tr2qs("You have been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"),
+ &szChan,&szNick,&szUser,&szHost,&szKickMsg);
+ }
+ }
+ if(KVI_OPTION_BOOL(KviOption_boolRejoinChannelOnKick))
+ {
+ if(_OUTPUT_VERBOSE)
+ console->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Attempting to rejoin \r!c\r%Q\r..."),&szChan);
+ KviQCString szC = msg->connection()->encodeText(szChan);
+ if(!szPass.isEmpty())
+ {
+ KviQCString szP = msg->connection()->encodeText(szChan);
+ msg->connection()->sendFmtData("JOIN %s %s",szC.data(),szP.data());
+ } else msg->connection()->sendFmtData("JOIN %s",szC.data());
+ }
+ } else {
+ // ok...someone else has been kicked
+
+ if(KVS_TRIGGER_EVENT_5_HALTED(KviEvent_OnKick,chan,
+ szNick,szUser,szHost,victim,szKickMsg))
+ msg->setHaltOutput();
+
+ KviIrcUserEntry * e = msg->connection()->userDataBase()->find(victim);
+
+ QString szVHost;
+ QString szVUser;
+
+ if(e)
+ {
+ szVHost = e->host();
+ szVUser = e->user();
+ } else {
+ szVHost = "*";
+ szVUser = "*";
+ }
+
+ chan->userAction(szNick,szUser,szHost,KVI_USERACTION_KICK);
+
+ chan->part(victim);
+
+ if(!msg->haltOutput())
+ {
+// FIXME: #warning "OPTION FOR THIS TO GO TO THE CONSOLE!"
+ chan->output(KVI_OUT_KICK,
+ __tr2qs("\r!n\r%Q\r [%Q@\r!h\r%Q\r] has been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"),
+ &victim,&szVUser,&szVHost,&szChan,&szNick,&szUser,&szHost,&szKickMsg);
+ }
+
+ if(KVI_OPTION_BOOL(KviOption_boolEnableQueryTracing))
+ {
+ KviQuery * q = console->connection()->findQuery(victim);
+ if(q)
+ {
+ QString szChans;
+ int iChans = console->connection()->getCommonChannels(victim,szChans);
+ q->output(KVI_OUT_QUERYTRACE,
+ __tr2qs("\r!n\r%Q\r [%Q@\r!h\r%Q\r] has just been kicked from \r!c\r%Q\r by \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"),
+ &victim,&szVUser,&szVHost,&szChan,
+ &szNick,&szUser,&szHost,&szKickMsg);
+ q->notifyCommonChannels(victim,szVUser,szVHost,iChans,szChans);
+ }
+ }
+ }
+}
+
+#ifdef COMPILE_CRYPT_SUPPORT
+ #define DECRYPT_IF_NEEDED(_target,_txt,_type,_type2,_buffer,_retptr,_retmsgtype) \
+ if(KviCryptSessionInfo * cinf = _target->cryptSessionInfo()){ \
+ if(cinf->bDoDecrypt){ \
+ switch(cinf->pEngine->decrypt(_txt,_buffer)) \
+ { \
+ case KviCryptEngine::DecryptOkWasEncrypted: \
+ _retptr = _buffer.ptr(); \
+ _retmsgtype = _type2; \
+ break; \
+ case KviCryptEngine::DecryptOkWasPlainText: \
+ case KviCryptEngine::DecryptOkWasEncoded: \
+ _retptr = _buffer.ptr(); \
+ _retmsgtype = _type; \
+ break; \
+ default: /* also case KviCryptEngine::DecryptError: */ \
+ { \
+ QString szEngineError = cinf->pEngine->lastError(); \
+ _target->output(KVI_OUT_SYSTEMERROR, \
+ __tr2qs("The following message appears to be encrypted, but the crypto engine failed to decode it: %Q"), \
+ &szEngineError); \
+ _retptr = _txt + 1; _retmsgtype=_type; \
+ } \
+ break; \
+ } \
+ } else _retptr = _txt, _retmsgtype=_type; \
+ } else _retptr = _txt, _retmsgtype=_type;
+#else //!COMPILE_CRYPT_SUPPORT
+ #define DECRYPT_IF_NEEDED(_target,_txt,_type,_type2,_buffer,_retptr,_retmsgtype) \
+ _retptr = _txt; _retmsgtype = _type;
+#endif //!COMPILE_CRYPT_SUPPORT
+
+
+
+void KviServerParser::parseLiteralPrivmsg(KviIrcMessage *msg)
+{
+ // PRIVMSG
+ // :source PRIVMSG <target> :<message>
+ QString szNick,szUser,szHost;
+ msg->decodeAndSplitPrefix(szNick,szUser,szHost);
+
+ QString szTarget = msg->connection()->decodeText(msg->safeParam(0));
+ QString szMsg = msg->connection()->decodeText(msg->safeTrailing());
+
+ KviConsole * console = msg->console();
+ KviRegisteredUser * u = msg->connection()->userDataBase()->registeredUser(szNick,szUser,szHost);
+ //Highlight it?
+
+ // FIXME: #warning "DEDICATED CTCP WINDOW ?"
+ KviStr * pTrailing = msg->trailingString();
+ if(pTrailing)
+ {
+ if(*(pTrailing->ptr()) == 0x01)
+ {
+ if(pTrailing->len() > 1)
+ {
+ if(pTrailing->lastCharIs(0x01))pTrailing->cutRight(1);
+ pTrailing->cutLeft(1);
+ KviCtcpMessage ctcp;
+ ctcp.msg = msg;
+ ctcp.pData = pTrailing->ptr();
+ KviIrcMask talker(szNick,szUser,szHost); // FIXME!
+ ctcp.pSource = &talker;
+ ctcp.szTarget = msg->connection()->decodeText(msg->safeParam(0));
+ ctcp.bIgnored = false;
+ ctcp.bIsFlood = false;
+ ctcp.bUnknown = false;
+ parseCtcpRequest(&ctcp);
+ return;
+ }
+ }
+ }
+
+ // Normal PRIVMSG
+ if(IS_ME(msg,szTarget))
+ {
+ //Ignore it?
+ if (u)
+ {
+ if (u->isIgnoreEnabledFor(KviRegisteredUser::Query))
+ {
+ if(KVS_TRIGGER_EVENT_5_HALTED(KviEvent_OnIgnoredMessage,msg->console(),szNick,szUser,szHost,szTarget,szMsg)) return;
+
+ if (KVI_OPTION_BOOL(KviOption_boolVerboseIgnore))
+ {
+ console->output(KVI_OUT_IGNORE,__tr2qs("Ignoring query-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"),&szNick,&szUser,&szHost,&szMsg);
+ }
+ return;
+ }
+ }
+ // FIXME: #warning "PROCESS MULTIMEDIA FILE REQUESTS"
+
+ // if(g_pOptions->m_bListenToMultimediaFileRequests)
+ // {
+ // if(*aux == '!')
+ // {
+ // const char *tmp = aux;
+ // tmp++;
+ // if(kvi_strEqualCI(tmp,m_pFrm->m_global.szCurrentNick.ptr()))
+ // {
+ // // A multimedia file request ?
+ // tmp += m_pFrm->m_global.szCurrentNick.len();
+ // if(((*tmp) == ' ') || ((*tmp) == '\t'))
+ // {
+ // while(((*tmp) == ' ') || ((*tmp) == '\t'))tmp++;
+ // if(*tmp)
+ // {
+ // KviStr file = tmp;
+ // KviStr filePath;
+ // m_pFrm->findMultimediaFileOffert(filePath,file);
+ // if(filePath.hasData())
+ // {
+ // m_pFrm->activeWindow()->output(KVI_OUT_INTERNAL,__tr("%s requests previously offered file %s: sending (%s)"),talker.nick(),file.ptr(),filePath.ptr());
+ // KviStr cmd(KviStr::Format,"DCC SEND %s %s",talker.nick(),filePath.ptr());
+ // m_pFrm->m_pUserParser->parseUserCommand(cmd,m_pConsole);
+ // return;
+
+ // } else {
+ // m_pFrm->activeWindow()->output(KVI_OUT_INTERNAL,__tr("%s requests file %s: no such file was offered , ignoring"),talker.nick(),file.ptr());
+ // return;
+ // }
+ // }
+ // }
+ // }
+ // }
+ // }
+
+ // A query request
+ // do we have a matching window ?
+ KviQuery * query = msg->connection()->findQuery(szNick);
+
+ if(!query)
+ {
+ // New query requested. Check if we really should create it or not
+
+ // first of all the anti spam , if desired.
+ // the antispam blocks anything else
+ // Eventually we could trigger a special event to notify the user of the
+ // spam message...
+ if(KVI_OPTION_BOOL(KviOption_boolUseAntiSpamOnPrivmsg))
+ {
+ KviStr * theMsg = msg->trailingString();
+ if(theMsg)
+ {
+ KviStr spamWord;
+ if(kvi_mayBeSpam(theMsg,spamWord))
+ {
+ // FIXME: OnSpam ?
+ if(!(msg->haltOutput() || KVI_OPTION_BOOL(KviOption_boolSilentAntiSpam)))
+ {
+ QString szMsg = msg->connection()->decodeText(msg->safeTrailing());
+ console->output(KVI_OUT_SPAM,
+ __tr2qs("Spam privmsg from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%s\")"),
+ &szNick,&szUser,&szHost,&szMsg,spamWord.ptr());
+ }
+ return;
+ }
+ }
+ }
+
+ // this is not a spam, or at least it hasn't been recognized as spam
+
+ // user option ? (this should again override any script)
+ // if the scripters want really to force the query creation they can do
+ // it manually or they can set the option to true at KVIrc startup
+ if(KVI_OPTION_BOOL(KviOption_boolCreateQueryOnPrivmsg))
+ {
+ QString szMsg = msg->connection()->decodeText(msg->safeTrailing());
+ // We still want to create it
+ // Give the scripter a chance to filter it out again
+ if(KVS_TRIGGER_EVENT_4_HALTED(KviEvent_OnQueryWindowRequest,
+ console,szNick,szUser,szHost,szMsg))
+ {
+ // check if the scripter hasn't created it
+ query = msg->connection()->findQuery(szNick);
+ } else {
+ // no query yet, create it!
+ // this will trigger OnQueryWindowCreated
+ query = console->connection()->createQuery(szNick);
+ // and this will trigger OnQueryTargetAdded
+ query->setTarget(szNick,szUser,szHost);
+ }
+ }
+ }
+
+ // ok, now we either have a query or not
+ if(query)
+ {
+ // ok, we have the query. Trigger the user action anyway
+ query->userAction(szNick,szUser,szHost,KVI_USERACTION_PRIVMSG);
+ // decrypt the message if needed
+ KviStr szBuffer; const char * txtptr; int msgtype;
+ DECRYPT_IF_NEEDED(query,msg->safeTrailing(),KVI_OUT_QUERYPRIVMSG,KVI_OUT_QUERYPRIVMSGCRYPTED,szBuffer,txtptr,msgtype)
+ // trigger the script event and eventually kill the output
+ QString szMsgText = query->decodeText(txtptr);
+ if(KVS_TRIGGER_EVENT_4_HALTED(KviEvent_OnQueryMessage,query,szNick,szUser,szHost,szMsgText))
+ msg->setHaltOutput();
+
+ if(!KVI_OPTION_STRING(KviOption_stringOnQueryMessageSound).isEmpty() && query!=g_pActiveWindow)
+ {
+ // KviKvsScript does NOT take parameters ownership
+ KviKvsVariantList soundParams(new KviKvsVariant(KVI_OPTION_STRING(KviOption_stringOnQueryMessageSound)));
+ //KviKvsScript::run("snd.play $0",0,&soundParams); <-- we also should provide a window for the script: it's always a good idea
+ KviKvsScript::run("snd.play $0",query,&soundParams);
+ }
+
+ // spit out the message text
+ if(!msg->haltOutput())
+ {
+ int iFlags = 0;
+ if(!query->hasAttention())
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolFlashQueryWindowOnNewMessages))
+ {
+ // avoid double window flashing
+ iFlags |= KviConsole::NoWindowFlashing;
+ query->demandAttention();
+ }
+ if(KVI_OPTION_BOOL(KviOption_boolPopupNotifierOnNewQueryMessages))
+ {
+ // don't send the message to the notifier twice
+ iFlags |= KviConsole::NoNotifier;
+ #ifdef COMPILE_USE_QT4
+ QString szMsg = Qt::escape(szMsgText);
+ #else
+ QString szMsg = QStyleSheet::escape(szMsgText);
+ #endif
+ //debug("kvi_sp_literal.cpp:908 debug: %s",szMsg.data());
+ g_pApp->notifierMessage(query,KVI_SMALLICON_QUERYPRIVMSG,szMsg,1800);
+ }
+ }
+ console->outputPrivmsg(query,msgtype,szNick,szUser,szHost,szMsgText,iFlags);
+ }
+ } else {
+ // no query creation: no decryption possible
+ // trigger the query message event in the console
+ QString szMsgText = msg->connection()->decodeText(msg->safeTrailing());
+ if(KVS_TRIGGER_EVENT_4_HALTED(KviEvent_OnQueryMessage,console,szNick,szUser,szHost,szMsgText))
+ msg->setHaltOutput();
+
+ // we don't have a query here!
+ //if(!KVI_OPTION_STRING(KviOption_stringOnQueryMessageSound).isEmpty() && query!=g_pActiveWindow)
+ if(!KVI_OPTION_STRING(KviOption_stringOnQueryMessageSound).isEmpty() && console!=g_pActiveWindow)
+ {
+ // same as above
+ KviKvsVariantList soundParams(new KviKvsVariant(KVI_OPTION_STRING(KviOption_stringOnQueryMessageSound)));
+ KviKvsScript::run("snd.play $0",console,&soundParams);
+ }
+ // spit the message text out
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolExternalMessagesToActiveWindow) ?
+ console->activeWindow() : (KviWindow *)(console);
+
+ if(KviIrcConnection * pConnection = console->connection())
+ {
+ KviWindow * aWin = console->activeWindow();
+ if((aWin->type() == KVI_WINDOW_TYPE_CHANNEL) && ((KviChannel *)aWin)->isOn(szNick))
+ pOut = aWin;
+ else {
+ for(KviChannel * c = pConnection->channelList()->first();c;c = pConnection->channelList()->next())
+ if(c->isOn(szNick))
+ {
+ pOut = (KviWindow *) c;
+ break;
+ }
+ }
+ }
+
+ pOut->output(KVI_OUT_QUERYPRIVMSG,"[PRIVMSG \r!nc\r%Q\r]: %Q",&szNick,&szMsgText);
+ }
+ }
+ } else {
+ // Channel PRIVMSG
+
+ KviChannel * chan = msg->connection()->findChannel(szTarget);
+
+ QString szOriginalTarget = szTarget;
+ QString szPrefixes;
+
+ //Ignore it?
+ if(u)
+ {
+ if(u->isIgnoreEnabledFor(KviRegisteredUser::Channel))
+ {
+ if(KVS_TRIGGER_EVENT_5_HALTED(KviEvent_OnIgnoredMessage,msg->console(),szNick,szUser,szHost,szTarget,szMsg))
+ return;
+
+ if (KVI_OPTION_BOOL(KviOption_boolVerboseIgnore))
+ {
+ console->output(KVI_OUT_IGNORE,__tr2qs("Ignoring channel-PRIVMSG from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"),&szNick,&szUser,&szHost,&szMsg);
+ }
+ return;
+ }
+ }
+
+ if(!chan)
+ {
+ // check if the channel has some leading mode prefixes
+ while((szTarget.length() > 0) && console->connection()->serverInfo()->isSupportedModePrefix(szTarget[0].unicode()))
+ {
+ szPrefixes += szTarget[0];
+ szTarget.remove(0,1);
+ }
+ chan = msg->connection()->findChannel(szTarget);
+ }
+
+ if(!chan)
+ {
+ if(!msg->haltOutput())
+ {
+ QString szMsgText = msg->connection()->decodeText(msg->safeTrailing());
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolOperatorMessagesToActiveWindow) ?
+ console->activeWindow() : (KviWindow *)(console);
+ QString broad;
+ KviQString::sprintf(broad,"[>> %Q] %Q",&szOriginalTarget,&szMsgText);
+ console->outputPrivmsg(pOut,KVI_OUT_BROADCASTPRIVMSG,szNick,szUser,szHost,broad,0);
+ }
+ } else {
+ chan->userAction(szNick,szUser,szHost,KVI_USERACTION_PRIVMSG);
+
+ KviStr szBuffer; const char * txtptr; int msgtype;
+ DECRYPT_IF_NEEDED(chan,msg->safeTrailing(),KVI_OUT_CHANPRIVMSG,KVI_OUT_CHANPRIVMSGCRYPTED,szBuffer,txtptr,msgtype)
+
+ QString szMsgText = chan->decodeText(txtptr);
+
+ if(KVS_TRIGGER_EVENT_5_HALTED(KviEvent_OnChannelMessage,chan,szNick,szUser,szHost,szMsgText,szPrefixes))
+ msg->setHaltOutput();
+
+ if(!msg->haltOutput())
+ {
+ if(szPrefixes.length() > 0)
+ {
+ QString szBroad;
+ KviQString::sprintf(szBroad,"[>> %Q\r!c\r%Q\r] %Q",&szPrefixes,&szTarget,&szMsgText);
+ console->outputPrivmsg(chan,msgtype,szNick,szUser,szHost,szBroad,0);
+ } else {
+ console->outputPrivmsg(chan,msgtype,szNick,szUser,szHost,szMsgText,0);
+ }
+ }
+ }
+ }
+}
+
+
+void KviServerParser::parseLiteralNotice(KviIrcMessage *msg)
+{
+ // NOTICE
+ // :source NOTICE <target> :<message>
+ QString szNick,szUser,szHost;
+ msg->decodeAndSplitPrefix(szNick,szUser,szHost);
+
+ KviConsole * console = msg->console();
+
+ if(szHost == "*")
+ {
+ if(szUser == "*")
+ {
+ if(szNick.find('.') != -1)
+ {
+ // server notice
+ // FIXME: "Dedicated window for server notices ?"
+ QString szMsgText = msg->connection()->decodeText(msg->safeTrailing());
+ if(KVS_TRIGGER_EVENT_2_HALTED(KviEvent_OnServerNotice,console,szNick,szMsgText))
+ msg->setHaltOutput();
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolServerNoticesToActiveWindow) ?
+ console->activeWindow() : (KviWindow *)(console);
+ pOut->output(KVI_OUT_SERVERNOTICE,"[\r!s\r%Q\r]: %Q",&szNick,&szMsgText);
+ }
+ return;
+ }
+ }
+ }
+
+ // FIXME: "DEDICATED CTCP WINDOW ?"
+
+ KviStr * pTrailing = msg->trailingString();
+ if(pTrailing)
+ {
+ if(*(pTrailing->ptr()) == 0x01){
+ if(pTrailing->len() > 1)
+ {
+ if(pTrailing->lastCharIs(0x01))pTrailing->cutRight(1);
+ pTrailing->cutLeft(1);
+ KviCtcpMessage ctcp;
+ ctcp.msg = msg;
+ ctcp.pData = pTrailing->ptr();
+ KviIrcMask talker(szNick,szUser,szHost); // FIXME
+ ctcp.pSource = &talker;
+ ctcp.szTarget = msg->connection()->decodeText(msg->safeParam(0));
+ ctcp.bIgnored = false;
+ ctcp.bIsFlood = false;
+ ctcp.bUnknown = false;
+ parseCtcpReply(&ctcp);
+ return;
+ }
+ }
+ }
+
+ QString szTarget = msg->connection()->decodeText(msg->safeParam(0));
+
+ KviRegisteredUser * u = msg->connection()->userDataBase()->registeredUser(szNick,szUser,szHost);
+ //Ignore it?
+ if(u)
+ {
+ if(u->isIgnoreEnabledFor(KviRegisteredUser::Notice))
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolVerboseIgnore))
+ {
+ QString szMsg = msg->connection()->decodeText(msg->safeTrailing());
+ console->output(KVI_OUT_IGNORE,__tr2qs("Ignoring Notice from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]: %Q"),&szNick,&szUser,&szHost,&szMsg);
+ }
+ return;
+ }
+ }
+
+ // Normal NOTICE
+ if(IS_ME(msg,szTarget))
+ {
+ // FIXME: "The NickServ and ChanServ handling should be optional!"
+
+ if(KviQString::equalCI(szNick,"NickServ"))
+ {
+ QString szMsgText = msg->connection()->decodeText(msg->safeTrailing());
+ if(KVS_TRIGGER_EVENT_4_HALTED(KviEvent_OnNickServNotice,console,szNick,szUser,szHost,szMsgText))
+ msg->setHaltOutput();
+
+ // nickname service... does it ask for identification ?
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolServicesNoticesToActiveWindow) ?
+ console->activeWindow() : (KviWindow *)(console);
+ pOut->output(KVI_OUT_NICKSERV,"\r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q",&szNick,&szUser,&szHost,&szMsgText);
+ }
+
+ bool bAuthDone = false;
+ KviNickServRuleSet * r = msg->connection()->target()->network()->nickServRuleSet();
+ if(r)
+ {
+ if(r->isEnabled() && !r->isEmpty())
+ {
+ KviIrcMask talker(szNick,szUser,szHost);
+ KviNickServRule * rule = r->matchRule(msg->connection()->currentNickName(),&talker,szMsgText);
+ if(rule)
+ {
+ bAuthDone = true;
+ console->outputNoFmt(KVI_OUT_SYSTEMMESSAGE,__tr2qs("NickServ requests authentication, executing scheduled command"));
+ if(!KviKvsScript::run(rule->identifyCommand(),console))
+ {
+ console->outputNoFmt(KVI_OUT_SYSTEMERROR,__tr2qs("The scheduled NickServ identification command appears to be broken, please change the setting"));
+ }
+ }
+ }
+ }
+
+ if(!bAuthDone)
+ {
+ if(g_pNickServRuleSet->isEnabled() && !g_pNickServRuleSet->isEmpty())
+ {
+ KviIrcMask talker(szNick,szUser,szHost);
+ KviNickServRule * rule = g_pNickServRuleSet->matchRule(msg->connection()->currentNickName(),&talker,szMsgText,msg->connection()->currentServerName());
+ if(rule)
+ {
+ console->outputNoFmt(KVI_OUT_SYSTEMMESSAGE,__tr2qs("NickServ requests authentication, executing scheduled command"));
+ if(!KviKvsScript::run(rule->identifyCommand(),console))
+ {
+ console->outputNoFmt(KVI_OUT_SYSTEMERROR,__tr2qs("The scheduled NickServ identification command appears to be broken, please change the setting"));
+ }
+ }
+ }
+ }
+
+ return;
+ }
+
+ if(KviQString::equalCI(szNick,"ChanServ"))
+ {
+ QString szMsgText = msg->connection()->decodeText(msg->safeTrailing());
+ if(KVS_TRIGGER_EVENT_4_HALTED(KviEvent_OnChanServNotice,console,szNick,szUser,szHost,szMsgText))
+ msg->setHaltOutput();
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolServicesNoticesToActiveWindow) ?
+ console->activeWindow() : (KviWindow *)(console);
+ pOut->output(KVI_OUT_CHANSERV,"\r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q",&szNick,&szUser,&szHost,&szMsgText);
+ }
+ return;
+ }
+
+ // FIXME: PROCESS MULTIMEDIA FILE REQUESTS
+
+ // A query request
+ // do we have a matching window ?
+ KviQuery * query = msg->connection()->findQuery(szNick);
+
+ if(!query)
+ {
+ // New query requested. Check if we really should create it or not
+
+ // first of all the anti spam , if desired.
+ // the antispam blocks anything else
+ // Eventually we could trigger a special event to notify the user of the
+ // spam message...
+ if(KVI_OPTION_BOOL(KviOption_boolUseAntiSpamOnNotice))
+ {
+ KviStr * theMsg = msg->trailingString(); // FIXME
+ if(theMsg)
+ {
+ KviStr spamWord;
+ if(kvi_mayBeSpam(theMsg,spamWord))
+ {
+ // FIXME: OnSpam ?
+
+ if(!(msg->haltOutput() || KVI_OPTION_BOOL(KviOption_boolSilentAntiSpam)))
+ {
+ QString szMsgText = msg->connection()->decodeText(msg->safeTrailing());
+ QString szSpamWord = spamWord.ptr();
+ console->output(KVI_OUT_SPAM,__tr2qs("Spam notice from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q (matching spamword \"%Q\")"),
+ &szNick,&szUser,&szHost,&szMsgText,&szSpamWord);
+ }
+ return;
+ }
+ }
+ }
+
+ // this is not a spam, or at least it hasn't been recognized as spam
+
+ // user option ? (this should again override any script)
+ // if the scripters want really to force the query creation they can do
+ // it manually or they can set the option to true at KVIrc startup
+ if(KVI_OPTION_BOOL(KviOption_boolCreateQueryOnNotice))
+ {
+ QString szMsgText = msg->connection()->decodeText(msg->safeTrailing());
+ // We still want to create it
+ // Give the scripter a chance to filter it out again
+ if(KVS_TRIGGER_EVENT_4_HALTED(KviEvent_OnQueryWindowRequest,console,szNick,szUser,szHost,szMsgText))
+ {
+ // check if the scripter hasn't created it
+ query = msg->connection()->findQuery(szNick);
+ } else {
+ // no query yet, create it!
+ // this will trigger OnQueryWindowCreated
+ query = console->connection()->createQuery(szNick);
+ // and this will trigger OnQueryTargetAdded
+ query->setTarget(szNick,szUser,szHost);
+ }
+ }
+ }
+
+ // ok, now we either have a query or not
+ if(query)
+ {
+ // ok, we have the query. Trigger the user action anyway
+ query->userAction(szNick,szUser,szHost,KVI_USERACTION_NOTICE);
+ // decrypt it if needed
+ KviStr szBuffer; const char * txtptr; int msgtype;
+ DECRYPT_IF_NEEDED(query,msg->safeTrailing(),KVI_OUT_QUERYNOTICE,KVI_OUT_QUERYNOTICECRYPTED,szBuffer,txtptr,msgtype)
+ QString szMsgText = query->decodeText(txtptr);
+ // trigger the script event and eventually kill the output
+ if(KVS_TRIGGER_EVENT_4_HALTED(KviEvent_OnQueryNotice,query,szNick,szUser,szHost,szMsgText))
+ msg->setHaltOutput();
+ // spit out the message text
+ if(!msg->haltOutput())
+ {
+ int iFlags = 0;
+
+ if(!query->hasAttention())
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolFlashQueryWindowOnNewMessages))
+ {
+ // avoid double window flashing
+ iFlags |= KviConsole::NoWindowFlashing;
+ query->demandAttention();
+ }
+ if(KVI_OPTION_BOOL(KviOption_boolPopupNotifierOnNewQueryMessages))
+ {
+ // don't send the message twice to the notifier
+ iFlags |= KviConsole::NoNotifier;
+ #ifdef COMPILE_USE_QT4
+ QString szMsg = Qt::escape(szMsgText);
+ #else
+ QString szMsg = QStyleSheet::escape(szMsgText);
+ #endif
+ //debug("kvi_sp_literal.cpp:908 debug: %s",szMsg.data());
+ g_pApp->notifierMessage(query,KVI_SMALLICON_QUERYNOTICE,szMsg,1800);
+ }
+ }
+
+ console->outputPrivmsg(query,msgtype,szNick,szUser,szHost,szMsgText,iFlags);
+ }
+ } else {
+ QString szMsgText = msg->connection()->decodeText(msg->safeTrailing());
+ // no query creation: no decryption possible
+ // trigger the query message event in the console
+ if(KVS_TRIGGER_EVENT_4_HALTED(KviEvent_OnQueryNotice,console,szNick,szUser,szHost,szMsgText))
+ msg->setHaltOutput();
+ // spit the message text out
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolExternalMessagesToActiveWindow) ?
+ console->activeWindow() : (KviWindow *)(console);
+
+ if(KviIrcConnection * pConnection = console->connection())
+ {
+ KviWindow * aWin = console->activeWindow();
+ if((aWin->type() == KVI_WINDOW_TYPE_CHANNEL) && ((KviChannel *)aWin)->isOn(szNick))
+ pOut = aWin;
+ else {
+ for(KviChannel * c = pConnection->channelList()->first();c;c = pConnection->channelList()->next())
+ if(c->isOn(szNick))
+ {
+ pOut = (KviWindow *) c;
+ break;
+ }
+ }
+ }
+
+ pOut->output(KVI_OUT_QUERYNOTICE,"*\r!n\r%Q\r* %Q",&szNick,&szMsgText);
+ }
+ }
+ return;
+ }
+
+ // Channel NOTICE
+ KviChannel * chan = msg->connection()->findChannel(szTarget);
+
+ QString szOriginalTarget = szTarget;
+ QString szPrefixes;
+
+ if(!chan)
+ {
+ // check if the channel has some leading mode prefixes
+ while((szTarget.length() > 0) && console->connection()->serverInfo()->isSupportedModePrefix(szTarget[0].unicode()))
+ {
+ szPrefixes += szTarget[0];
+ szTarget.remove(0,1);
+ }
+ chan = msg->connection()->findChannel(szTarget);
+ }
+
+ if(!chan)
+ {
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolOperatorMessagesToActiveWindow) ?
+ console->activeWindow() : (KviWindow *)(console);
+ QString szBroad;
+ QString szMsgText = msg->connection()->decodeText(msg->safeTrailing());
+ KviQString::sprintf(szBroad,"[>> %Q] %Q",&szOriginalTarget,&szMsgText);
+ console->outputPrivmsg(pOut,KVI_OUT_BROADCASTNOTICE,szNick,szUser,szHost,szBroad,0);
+ return;
+ }
+ } else {
+ chan->userAction(szNick,szUser,szHost,KVI_USERACTION_NOTICE);
+
+ KviStr szBuffer; const char * txtptr; int msgtype;
+ DECRYPT_IF_NEEDED(chan,msg->safeTrailing(),KVI_OUT_CHANNELNOTICE,KVI_OUT_CHANNELNOTICECRYPTED,szBuffer,txtptr,msgtype)
+ QString szMsgText = chan->decodeText(txtptr);
+
+ if(KVS_TRIGGER_EVENT_3_HALTED(KviEvent_OnChannelNotice,chan,szNick,szMsgText,szOriginalTarget))msg->setHaltOutput();
+
+ if(!msg->haltOutput())
+ {
+ if(szPrefixes.length() > 0)
+ {
+ QString szBroad;
+ KviQString::sprintf(szBroad,"[>> %Q\r!c\r%Q\r] %Q",&szPrefixes,&szTarget,&szMsgText);
+ console->outputPrivmsg(chan,msgtype,szNick,szUser,szHost,szBroad,0);
+ } else {
+ console->outputPrivmsg(chan,msgtype,szNick,szUser,szHost,szMsgText,0);
+ }
+ }
+ }
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// TOPIC
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+void KviServerParser::parseLiteralTopic(KviIrcMessage *msg)
+{
+ // TOPIC
+ // :<source_mask> TOPIC <channel> :<topic>
+ QString szNick,szUser,szHost;
+ msg->decodeAndSplitPrefix(szNick,szUser,szHost);
+ QString szTarget = msg->connection()->decodeText(msg->safeParam(0));
+
+ // Now lookup the channel
+ KviChannel * chan = msg->connection()->findChannel(szTarget);
+
+ if(!chan)
+ {
+ UNRECOGNIZED_MESSAGE(msg,__tr2qs("Received a topic message for an unknown channel, possible desync"));
+ return;
+ }
+
+ QString szTopic = chan->decodeText(msg->safeTrailing());
+
+ if(KVS_TRIGGER_EVENT_4_HALTED(KviEvent_OnTopic,chan,szNick,szUser,szHost,szTopic))
+ msg->setHaltOutput();
+
+ chan->topicWidget()->setTopic(szTopic);
+ chan->topicWidget()->setTopicSetBy(szNick);
+ QString tmp = QDateTime::currentDateTime().toString();
+ chan->topicWidget()->setTopicSetAt(tmp);
+
+ chan->userAction(szNick,szUser,szHost,KVI_USERACTION_TOPIC);
+
+ if(!msg->haltOutput())
+ {
+ chan->output(KVI_OUT_TOPIC,
+ __tr2qs("\r!n\r%Q\r [%Q@\r!h\r%Q\r] has changed topic to \"%Q%c\""),
+ &szNick,&szUser,&szHost,&szTopic,KVI_TEXT_RESET);
+ }
+}
+
+void KviServerParser::parseLiteralNick(KviIrcMessage *msg)
+{
+ // NICK
+ // :source NICK <newnick>
+ QString szNick,szUser,szHost;
+ msg->decodeAndSplitPrefix(szNick,szUser,szHost);
+ KviConsole * console = msg->console();
+ QString szNewNick = msg->connection()->decodeText(msg->safeTrailing());
+
+ bool bIsMe = IS_ME(msg,szNick);
+
+ if(bIsMe)
+ {
+ // We have changed our nick
+ msg->connection()->nickChange(szNewNick);
+
+ if(KVS_TRIGGER_EVENT_2_HALTED(KviEvent_OnMeNickChange,console,szNick,szNewNick))
+ msg->setHaltOutput();
+ } else {
+ if(KVS_TRIGGER_EVENT_4_HALTED(KviEvent_OnNickChange,console,szNick,szUser,szHost,szNewNick))
+ msg->setHaltOutput();
+ }
+
+ for(KviChannel * c = console->channelList()->first();c;c = console->channelList()->next())
+ {
+ if(c->nickChange(szNick,szNewNick))
+ {
+ if(!msg->haltOutput())
+ c->output(KVI_OUT_NICK,__tr2qs("\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"),
+ &szNick,&szUser,&szHost,&szNewNick);
+ // FIXME if(bIsMe)output(YOU ARE now known as.. ?)
+ }
+ if(bIsMe)c->updateCaption();
+ }
+
+
+ // FIXME: #warning "NEW NICK MIGHT BE REGISTERED AND HAVE AN AVATAR!"
+
+ if(bIsMe)
+ {
+ // just update all the captions : we have changed OUR nick
+ for(KviQuery * q = console->queryList()->first();q;q = console->queryList()->next())
+ {
+ if(!msg->haltOutput())
+ q->output(KVI_OUT_NICK,__tr2qs("You have changed your nickname to %Q"),&szNewNick);
+ q->updateCaption();
+ }
+ }
+ KviQuery * q = console->connection()->findQuery(szNick);
+ // It CAN happen that szNewNick first queries us without being
+ // on any channel then he QUITS , he reconnects , he joins
+ // a channel with szNick , queries us and changes nick to szNewNick : gotcha!
+ // should merge the queries!
+ KviQuery * old = console->connection()->findQuery(szNewNick);
+ if(old && (old != q))
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolEnableQueryTracing) && (!_OUTPUT_QUIET))
+ {
+ old->output(KVI_OUT_QUERYTRACE,
+ __tr2qs("The target of this query was lost and has been found when \r!n\r%Q\r [%Q@\r!h\r%Q\r] changed his nickname to \r!n\r%Q\r"),
+ &szNick,&szUser,&szHost,&szNewNick);
+ }
+ if(q)
+ {
+ bool bQWasActive = (q == g_pActiveWindow);
+ if(!_OUTPUT_MUTE)
+ {
+ old->output(KVI_OUT_SYSTEMWARNING,
+ __tr2qs("The recent nickname change from \r!n\r%Q\r to \r!n\r%Q\r caused a query collision: merging output"),
+ &szNick,&szNewNick);
+ }
+ old->mergeQuery(q);
+ q->frame()->closeWindow(q); // deleted path
+ if(!msg->haltOutput())
+ old->output(KVI_OUT_NICK,__tr2qs("\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"),
+ &szNick,&szUser,&szHost,&szNewNick);
+ if(!_OUTPUT_MUTE)
+ old->output(KVI_OUT_SYSTEMWARNING,__tr2qs("End of merged output"));
+ old->userAction(szNewNick,szUser,szHost,KVI_USERACTION_NICK);
+ if(bQWasActive)old->delayedAutoRaise();
+ }
+ if(KVI_OPTION_BOOL(KviOption_boolEnableQueryTracing))
+ {
+ QString szChans;
+ int iChans = console->connection()->getCommonChannels(szNewNick,szChans);
+ old->notifyCommonChannels(szNewNick,szUser,szHost,iChans,szChans);
+ }
+ } else {
+ if(q)
+ {
+ // the target SHOULD have changed his nick here
+ if(!q->nickChange(szNick,szNewNick))
+ debug("Internal error: query %s failed to change nick from %s to s",szNick.utf8().data(),szNick.utf8().data(),szNewNick.utf8().data());
+ if(!msg->haltOutput())
+ q->output(KVI_OUT_NICK,__tr2qs("\r!n\r%Q\r [%Q@\r!h\r%Q\r] is now known as \r!n\r%Q\r"),
+ &szNick,&szUser,&szHost,&szNewNick);
+ q->userAction(szNewNick,szUser,szHost,KVI_USERACTION_NICK);
+ }
+ }
+
+// FIXME: #warning "UPDATE ALL THE OTHER CONNECTION RELATED WINDOW CAPTIONS WHEN bIsMe!!"
+}
+
+void KviServerParser::parseLiteralInvite(KviIrcMessage *msg)
+{
+ // INVITE
+ // :source INVITE <target> <channel>
+ QString szNick,szUser,szHost;
+ msg->decodeAndSplitPrefix(szNick,szUser,szHost);
+
+ QString szTarget = msg->connection()->decodeText(msg->safeParam(0));
+ QString szChannel = msg->connection()->decodeText(msg->safeParam(1));
+
+ KviConsole * console = msg->console();
+ KviRegisteredUser * u = msg->connection()->userDataBase()->registeredUser(szNick,szUser,szHost);
+ //Ignore it?
+ if(u)
+ {
+ if(u->isIgnoreEnabledFor(KviRegisteredUser::Invite))
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolVerboseIgnore))
+ {
+ console->output(KVI_OUT_IGNORE,__tr2qs("Ignoring invite from \r!nc\r%Q\r [%Q@\r!h\r%Q\r]"),&szNick,&szUser,&szHost);
+ }
+ return;
+ }
+ }
+
+ if(IS_ME(msg,szTarget))
+ {
+ if(KVS_TRIGGER_EVENT_4_HALTED(KviEvent_OnInvite,msg->console(),szNick,szUser,szHost,szChannel))
+ msg->setHaltOutput();
+
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolInvitesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+ QString szAction = KVI_OPTION_BOOL(KviOption_boolAutoJoinOnInvite) ? __tr2qs("autojoining") : __tr2qs("double-click the channel name to join");
+ pOut->output(KVI_OUT_INVITE,__tr2qs("\r!n\r%Q\r [%Q@\r!h\r%Q\r] invites you to channel \r!c\r%Q\r (%Q)"),
+ &szNick,&szUser,&szHost,&szChannel,&szAction);
+ }
+
+ if(KVI_OPTION_BOOL(KviOption_boolAutoJoinOnInvite))
+ msg->connection()->sendFmtData("JOIN %s",msg->safeParam(1));
+
+ } else {
+ UNRECOGNIZED_MESSAGE(msg,__tr("Received an invite message directed to another nick, possible desync"));
+ }
+}
+
+void KviServerParser::parseLiteralWallops(KviIrcMessage *msg)
+{
+ // WALLOPS
+ // :source WALLOPS :msg
+ QString szNick,szUser,szHost;
+ msg->decodeAndSplitPrefix(szNick,szUser,szHost);
+
+ QString szMsg = msg->connection()->decodeText(msg->safeTrailing());
+
+ if(KVS_TRIGGER_EVENT_4_HALTED(KviEvent_OnWallops,msg->console(),szNick,szUser,szHost,szMsg))
+ msg->setHaltOutput();
+
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolOperatorMessagesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+ pOut->output(KVI_OUT_WALLOPS,__tr2qs("WALLOPS from \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"),
+ &szNick,&szUser,&szHost,&szMsg);
+ }
+}
+
+void KviServerParser::parseUserMode(KviIrcMessage *msg,const char * modeflptr)
+{
+ // changed my user mode
+ bool bSet = true;
+ while(*modeflptr)
+ {
+ switch(*modeflptr)
+ {
+ case '+': bSet = true; break;
+ case '-': bSet = false; break;
+ default:
+ if(msg->connection()->changeUserMode(*modeflptr,bSet))
+ {
+ if(msg->connection()->serverInfo()->registerModeChar()==*modeflptr)
+ {
+ KviKvsVariantList vList;
+ KviKvsEventManager::instance()->trigger(KviEvent_OnNickServAuth,msg->console(),&vList);
+ }
+ // There was a mode change
+ if(KviKvsEventManager::instance()->hasAppHandlers(KviEvent_OnUserMode))
+ {
+ QString szModeFlag(bSet ? QChar('+') : QChar('-'));
+ szModeFlag += QChar(*modeflptr);
+ KviKvsVariantList vList(new KviKvsVariant(szModeFlag));
+ if(KviKvsEventManager::instance()->trigger(KviEvent_OnUserMode,msg->console(),&vList))
+ msg->setHaltOutput();
+ }
+ }
+ break;
+ }
+ ++modeflptr;
+ }
+}
+
+
+
+void KviServerParser::parseLiteralMode(KviIrcMessage *msg)
+{
+ // NICK
+ // :source MODE target <params>
+ // :source MODE <me> +|-modeflag
+ // :source MODE <channel> +-modeflags [parameters]
+ QString szNick,szUser,szHost;
+ msg->decodeAndSplitPrefix(szNick,szUser,szHost);
+
+ // if(!source.hasHost())
+ // {
+ // // This is a server or a channel service
+ // KviStr snick = source.nick();
+ // if(snick.contains('.'))source.setHost(source.nick()); // this is a server
+ // }
+
+ QString szTarget = msg->connection()->decodeText(msg->safeParam(0));
+ KviStr modefl(msg->safeParam(1));
+
+ if(IS_ME(msg,szTarget))
+ {
+ parseUserMode(msg,modefl.ptr());
+ if(!msg->haltOutput())
+ msg->console()->output(KVI_OUT_MODE,__tr2qs("You have set user mode %s"),modefl.ptr());
+ } else {
+ // a channel mode
+ KviChannel * chan = msg->connection()->findChannel(szTarget);
+
+ if(!chan){
+ // Ooops , desync with the server.
+ UNRECOGNIZED_MESSAGE(msg,__tr("Received a mode change for an unknown channel, possible desync"));
+ return;
+ }
+
+ chan->userAction(szNick,szUser,szHost,KVI_USERACTION_CHANMODE);
+ parseChannelMode(szNick,szUser,szHost,chan,modefl,msg,2);
+ }
+}
+
+void KviServerParser::parseChannelMode(const QString &szNick,const QString &szUser,const QString &szHost,KviChannel * chan,KviStr &modefl,KviIrcMessage *msg,int curParam)
+{
+ // FIXME: freenode has two ugly incompatible extensions:
+ // mode e: that is NOT viewable (???)
+ // mode q that stands for "quiet-ban"
+ // mode #chan +q mask
+ // adds mask to the banlist with the prefix %
+ // and doesn't allow the users matching the mask to talk to the channel
+
+ bool bSet = true;
+ const char * aux = modefl.ptr();
+ QString aParam;
+
+ QString nickBuffer;
+ QString hostBuffer;
+
+ if(szHost != "*")
+ {
+ KviQString::sprintf(nickBuffer,"\r!n\r%Q\r",&szNick);
+ KviQString::sprintf(hostBuffer,"\r!h\r%Q\r",&szHost);
+ } else {
+ if(nickBuffer.find('.') != -1)
+ {
+ // This looks a lot like a server!
+ KviQString::sprintf(nickBuffer,"\r!s\r%Q\r",&szNick);
+ } else {
+ // Probably a service....whois should work
+ KviQString::sprintf(nickBuffer,"\r!n\r%Q\r",&szNick);
+ }
+ hostBuffer = szHost;
+ }
+
+ KviIrcMask * auxMask;
+
+ int curParamSave = curParam;
+ bool bIsMe;
+
+ //FIXME: Use PREFIX in 005 numeric instead of bServerSupportsModeIe - get rid of it altogether
+ //bool bModeIe = console->connection()->serverInfo()->supportsModesIe();
+
+
+ while(*aux)
+ {
+ switch(*aux)
+ {
+ case '+':
+ bSet = true;
+ break;
+ case '-':
+ bSet = false;
+ break;
+ case 'k':
+ if(bSet)aParam = msg->safeParam(curParam++);
+ else aParam = "";
+ chan->setChannelKey(aParam);
+
+ if(bSet) {
+ if(KVS_TRIGGER_EVENT_4_HALTED(KviEvent_OnKeySet,chan,szNick,szUser,szHost,aParam))
+ msg->setHaltOutput();
+ } else {
+ if(KVS_TRIGGER_EVENT_3_HALTED(KviEvent_OnKeyUnset,chan,szNick,szUser,szHost))
+ msg->setHaltOutput();
+ }
+
+ if(!(msg->haltOutput() || KVI_OPTION_BOOL(KviOption_boolShowCompactModeChanges)))
+ {
+ if(bSet)chan->output(KVI_OUT_KEY,
+ __tr2qs("%Q [%Q@%Q] has set channel key to \"\r!m-k\r%Q\r\""),
+ &nickBuffer,&szUser,&hostBuffer,&aParam);
+ else chan->output(KVI_OUT_KEY,
+ __tr2qs("%Q [%Q@%Q] has unset the channel key"),
+ &nickBuffer,&szUser,&hostBuffer);
+ }
+ break;
+ case 'l':
+ if(bSet)aParam = msg->safeParam(curParam++);
+ else aParam = "";
+ chan->setChannelLimit(aParam);
+
+ if(bSet) {
+ if(KVS_TRIGGER_EVENT_4_HALTED(KviEvent_OnLimitSet,chan,szNick,szUser,szHost,aParam))
+ msg->setHaltOutput();
+ } else {
+ if(KVS_TRIGGER_EVENT_3_HALTED(KviEvent_OnLimitUnset,chan,szNick,szUser,szHost))
+ msg->setHaltOutput();
+ }
+
+ if(!(msg->haltOutput() || KVI_OPTION_BOOL(KviOption_boolShowCompactModeChanges)))
+ {
+ if(bSet)chan->output(KVI_OUT_LIMIT,
+ __tr2qs("%Q [%Q@%Q] has set channel \r!m-l\rlimit to %Q\r"),
+ &nickBuffer,&szUser,&hostBuffer,&aParam);
+ else chan->output(KVI_OUT_LIMIT,
+ __tr2qs("%Q [%Q@%Q] has unset the channel limit"),
+ &nickBuffer,&szUser,&hostBuffer);
+ }
+ break;
+
+#define CHANUSER_MODE(__modechar,__chanfunc,__evmeset,__evmeunset,__evset,__evunset,__icomeset,__icomeunset,__icoset,__icounset) \
+ case __modechar: \
+ if(msg->connection()->serverInfo()->isSupportedModeFlag(__modechar)) \
+ { \
+ aParam = msg->connection()->decodeText(msg->safeParam(curParam++)); \
+ chan->__chanfunc(aParam,bSet); \
+ bIsMe = IS_ME(msg,aParam); \
+ if(bIsMe) \
+ { \
+ if(KVS_TRIGGER_EVENT_3_HALTED(bSet ? __evmeset : __evmeunset,chan,szNick,szUser,szHost))msg->setHaltOutput(); \
+ chan->updateCaption(); \
+ } else { \
+ if(KVS_TRIGGER_EVENT_4_HALTED(bSet ? __evset : __evunset,chan,szNick,szUser,szHost,aParam))msg->setHaltOutput(); \
+ } \
+ if(!(msg->haltOutput() || KVI_OPTION_BOOL(KviOption_boolShowCompactModeChanges))) \
+ { \
+ chan->output(bSet ? (bIsMe ? __icomeset : __icoset) : (bIsMe ? __icomeunset : __icounset), \
+ __tr2qs("%Q [%Q@%Q] has set mode %c%c \r!n\r%Q\r"), \
+ &nickBuffer,&szUser,&hostBuffer,bSet ? '+' : '-',__modechar,&aParam); \
+ } \
+ } else {\
+ chan->setChannelMode(__modechar,bSet);\
+ if(!(msg->haltOutput() || KVI_OPTION_BOOL(KviOption_boolShowCompactModeChanges)))\
+ {\
+ chan->output(KVI_OUT_CHANMODE,\
+ __tr2qs("%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"),\
+ &nickBuffer,&szUser,&hostBuffer,\
+ bSet ? '-' : '+',__modechar,bSet ? '+' : '-',__modechar);\
+ }\
+ }\
+ break;
+ CHANUSER_MODE('q',setChanOwner,KviEvent_OnMeChanOwner,KviEvent_OnMeDeChanOwner,KviEvent_OnChanOwner,KviEvent_OnDeChanOwner,KVI_OUT_MECHANOWNER,KVI_OUT_MEDECHANOWNER,KVI_OUT_CHANOWNER,KVI_OUT_DECHANOWNER)
+ CHANUSER_MODE('a',setChanAdmin,KviEvent_OnMeChanAdmin,KviEvent_OnMeDeChanAdmin,KviEvent_OnChanAdmin,KviEvent_OnDeChanAdmin,KVI_OUT_MECHANADMIN,KVI_OUT_MEDECHANADMIN,KVI_OUT_CHANADMIN,KVI_OUT_DECHANADMIN)
+ CHANUSER_MODE('o',op,KviEvent_OnMeOp,KviEvent_OnMeDeOp,KviEvent_OnOp,KviEvent_OnDeOp,KVI_OUT_MEOP,KVI_OUT_MEDEOP,KVI_OUT_OP,KVI_OUT_DEOP)
+ CHANUSER_MODE('h',halfop,KviEvent_OnMeHalfOp,KviEvent_OnMeDeHalfOp,KviEvent_OnHalfOp,KviEvent_OnDeHalfOp,KVI_OUT_MEHALFOP,KVI_OUT_MEDEHALFOP,KVI_OUT_HALFOP,KVI_OUT_HALFDEOP)
+ CHANUSER_MODE('v',voice,KviEvent_OnMeVoice,KviEvent_OnMeDeVoice,KviEvent_OnVoice,KviEvent_OnDeVoice,KVI_OUT_MEVOICE,KVI_OUT_MEDEVOICE,KVI_OUT_VOICE,KVI_OUT_DEVOICE)
+ CHANUSER_MODE('u',userop,KviEvent_OnMeUserOp,KviEvent_OnMeDeUserOp,KviEvent_OnUserOp,KviEvent_OnDeUserOp,KVI_OUT_MEUSEROP,KVI_OUT_MEDEUSEROP,KVI_OUT_USEROP,KVI_OUT_USERDEOP)
+
+#define CHANNEL_MODE(__modefl,__evmeset,__evmeunset,__evset,__evunset,__icomeset,__icomeunset,__icoset,__icounset) \
+ case __modefl: \
+ aParam = msg->connection()->decodeText(msg->safeParam(curParam++)); \
+ chan->setMask(*aux,aParam,bSet,msg->connection()->decodeText(msg->safePrefix()),QDateTime::currentDateTime().toTime_t()); \
+ auxMask = new KviIrcMask(aParam); \
+ bIsMe = auxMask->matchesFixed( \
+ msg->connection()->userInfo()->nickName(), \
+ msg->connection()->userInfo()->userName(), \
+ msg->connection()->userInfo()->hostName()); \
+ delete auxMask; \
+ if(bIsMe) \
+ { \
+ if(KVS_TRIGGER_EVENT_4_HALTED(bSet ? __evmeset : __evmeunset,chan,szNick,szUser,szHost,aParam))msg->setHaltOutput(); \
+ } else { \
+ if(KVS_TRIGGER_EVENT_4_HALTED(bSet ? __evset : __evunset,chan,szNick,szUser,szHost,aParam))msg->setHaltOutput(); \
+ } \
+ if(!(msg->haltOutput() || KVI_OPTION_BOOL(KviOption_boolShowCompactModeChanges))) \
+ { \
+ chan->output(bSet ? (bIsMe ? __icomeset : __icoset) : (bIsMe ? __icomeunset : __icounset), \
+ __tr2qs("%Q [%Q@%Q] has set mode %c%c \r!m%c%c\r%Q\r"), \
+ &nickBuffer,&szUser,&hostBuffer, \
+ bSet ? '+' : '-',__modefl,bSet ? '-' : '+',__modefl,&aParam); \
+ } \
+ break;
+
+ CHANNEL_MODE('b',KviEvent_OnMeBan,KviEvent_OnMeUnban,KviEvent_OnBan,KviEvent_OnUnban,KVI_OUT_MEBAN,KVI_OUT_MEUNBAN,KVI_OUT_BAN,KVI_OUT_UNBAN)
+ CHANNEL_MODE('I',KviEvent_OnMeInviteException,KviEvent_OnMeInviteExceptionRemove,KviEvent_OnInviteException,KviEvent_OnInviteExceptionRemove,KVI_OUT_MEINVITEEXCEPT,KVI_OUT_MEINVITEUNEXCEPT,KVI_OUT_INVITEEXCEPT,KVI_OUT_INVITEUNEXCEPT)
+ CHANNEL_MODE('e',KviEvent_OnMeBanException,KviEvent_OnMeBanExceptionRemove,KviEvent_OnBanException,KviEvent_OnBanExceptionRemove,KVI_OUT_MEBANEXCEPT,KVI_OUT_MEBANUNEXCEPT,KVI_OUT_BANEXCEPT,KVI_OUT_BANUNEXCEPT)
+
+ default:
+ chan->setChannelMode(*aux,bSet);
+ if(!(msg->haltOutput() || KVI_OPTION_BOOL(KviOption_boolShowCompactModeChanges)))
+ {
+ chan->output(KVI_OUT_CHANMODE,
+ __tr2qs("%Q [%Q@%Q] has set channel \r!m%c%c\rmode %c%c\r"),
+ &nickBuffer,&szUser,&hostBuffer,
+ bSet ? '-' : '+',*aux,bSet ? '+' : '-',*aux);
+ }
+ break;
+ }
+ ++aux;
+ }
+
+ QString param;
+ QString params;
+ param = msg->connection()->decodeText(msg->safeParam(curParamSave++));
+ while(!param.isEmpty())
+ {
+ if(!params.isEmpty())params.append(' ');
+ params.append(param);
+ param = msg->connection()->decodeText(msg->safeParam(curParamSave++));
+ }
+
+ if(KVS_TRIGGER_EVENT_5_HALTED(KviEvent_OnChannelModeChange,chan,szNick,szUser,szHost,modefl.ptr(),params))
+ msg->setHaltOutput();
+
+ if(KVI_OPTION_BOOL(KviOption_boolShowCompactModeChanges) && (!msg->haltOutput()) && (!kvi_strEqualCS(modefl.ptr(),"+")))
+ {
+ if(!params.isEmpty())
+ {
+ chan->output(KVI_OUT_CHANMODE,__tr2qs("%Q [%Q@%Q] has set mode %s %Q"),
+ &nickBuffer,&szUser,&hostBuffer,modefl.ptr(),&params);
+ } else {
+ chan->output(KVI_OUT_CHANMODE,__tr2qs("%Q [%Q@%Q] has set channel mode %s"),
+ &nickBuffer,&szUser,&hostBuffer,modefl.ptr());
+ }
+ }
+}
diff --git a/src/kvirc/sparser/kvi_sp_numeric.cpp b/src/kvirc/sparser/kvi_sp_numeric.cpp
new file mode 100644
index 00000000..a4481e88
--- /dev/null
+++ b/src/kvirc/sparser/kvi_sp_numeric.cpp
@@ -0,0 +1,2003 @@
+//=============================================================================
+//
+// File : kvi_sp_numeric.cpp
+// Creation date : Thu Aug 3 2000 01:30:45 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_sparser.h"
+#include "kvi_window.h"
+#include "kvi_query.h"
+#include "kvi_out.h"
+#include "kvi_locale.h"
+#include "kvi_ircsocket.h"
+#include "kvi_options.h"
+#include "kvi_channel.h"
+#include "kvi_topicw.h"
+#include "kvi_ircuserdb.h"
+#include "kvi_defaults.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_frame.h"
+#include "kvi_parameterlist.h"
+#include "kvi_app.h"
+#include "kvi_notifylist.h"
+#include "kvi_numeric.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectionstatedata.h"
+#include "kvi_ircconnectionuserinfo.h"
+#include "kvi_ircconnectionserverinfo.h"
+#include "kvi_ircconnectionasyncwhoisdata.h"
+#include "kvi_ircconnectiontarget.h"
+#include "kvi_time.h"
+#include "kvi_lagmeter.h"
+#include "kvi_qcstring.h"
+
+#include <qpixmap.h>
+#include <qdatetime.h>
+#include <qtextcodec.h>
+#include <qregexp.h>
+
+#include "kvi_kvs_eventtriggers.h"
+#include "kvi_kvs_script.h"
+#include "kvi_kvs_variantlist.h"
+
+// #define IS_CHANNEL_TYPE_FLAG(_str) ((*(_str) == '#') || (*(_str) == '&') || (*(_str) == '!'))
+#define IS_CHANNEL_TYPE_FLAG(_qchar) (msg->connection()->serverInfo()->supportedChannelTypes().find(_qchar) != -1)
+#define IS_USER_MODE_PREFIX(_qchar) (msg->connection()->serverInfo()->supportedModePrefixes().find(_qchar) != -1)
+
+// Numeric message handlers
+
+// FIXME: #warning "IN ALL OUTPUT ADD ESCAPE SEQUENCES!!!!"
+// FIXME: #warning "parseErrorUnknownModeChar() for modes e and I , parseErrorUnknownCommand for WATCH"
+
+void KviServerParser::parseNumeric001(KviIrcMessage *msg)
+{
+ // 001: RPL_WELCOME
+ // :prefix 001 target :Welcome to the Internet Relay Network <usermask>
+ // FIXME: #warning "SET THE USERMASK FROM SERVER"
+ QString szText = msg->connection()->decodeText(msg->safeTrailing());
+ QRegExp rx( " ([^ ]+)!([^ ]+)@([^ ]+)$" );
+ if( rx.search(szText) != -1)
+ {
+ msg->connection()->userInfo()->setUnmaskedHostName(rx.cap(3));
+ msg->connection()->userInfo()->setNickName(rx.cap(1));
+ msg->connection()->userInfoReceived(rx.cap(2),rx.cap(3));
+ }
+ if(msg->connection()->context()->state() != KviIrcContext::Connected)
+ msg->connection()->loginComplete(msg->connection()->decodeText(msg->param(0)));
+ if(!msg->haltOutput())
+ msg->console()->outputNoFmt(KVI_OUT_SERVERINFO,szText);
+}
+
+void KviServerParser::parseNumeric002(KviIrcMessage *msg)
+{
+ // 002: RPL_YOURHOST [I,E,U,D]
+ // :prefix 002 target :Your host is <server name>, running version <server version>
+ if(msg->connection()->context()->state() != KviIrcContext::Connected)
+ msg->connection()->loginComplete(msg->connection()->decodeText(msg->param(0)));
+ if(!msg->haltOutput())msg->console()->outputNoFmt(KVI_OUT_SERVERINFO,msg->connection()->decodeText(msg->safeTrailing()));
+}
+
+void KviServerParser::parseNumeric003(KviIrcMessage *msg)
+{
+ // 003: RPL_CREATED [I,E,U,D]
+ // :prefix 003 target :This server was created <date>
+ if(msg->connection()->context()->state() != KviIrcContext::Connected)
+ msg->connection()->loginComplete(msg->connection()->decodeText(msg->param(0)));
+ if(!msg->haltOutput())msg->console()->outputNoFmt(KVI_OUT_SERVERINFO,msg->connection()->decodeText(msg->safeTrailing()));
+}
+
+void KviServerParser::parseNumeric004(KviIrcMessage *msg)
+{
+ // 004: RPL_MYINFO [I,E,U,D]
+ // :prefix 004 target <server_name> <srv_version> <u_modes> <ch_modes>
+ if(msg->connection()->context()->state() != KviIrcContext::Connected)
+ msg->connection()->loginComplete(msg->connection()->decodeText(msg->param(0)));
+
+ int uParams = msg->paramCount();
+ int uModeParam = 3;
+
+ if(uParams < 2)uParams = 2;
+
+ KviStr version = msg->safeParam(2);
+ msg->connection()->serverInfo()->setServerVersion(msg->safeParam(2));
+
+ KviStr umodes;
+ // skip version number (great, thanks WEBMASTER INCORPORATED -_-)
+ do
+ {
+ umodes = msg->safeParam(uModeParam);
+ } while (((umodes.contains('.')) || (umodes.contains('-'))) && uModeParam++ < uParams);
+
+ KviStr chanmodes = msg->safeParam(uModeParam+1);
+
+ if(uModeParam > 3)
+ {
+ version.append(' ');
+ version.append(msg->safeParam(3));
+ }
+
+ if((umodes.occurences('o') != 1) || (chanmodes.occurences('o') != 1) ||
+ (chanmodes.occurences('b') != 1) || (chanmodes.occurences('v') != 1) ||
+ (chanmodes.occurences('t') != 1) || (chanmodes.occurences('n') != 1) ||
+ (chanmodes.contains('.')) || (chanmodes.contains('-')) || (chanmodes.contains('(')))
+ {
+ if(!_OUTPUT_QUIET)
+ {
+ msg->console()->output(KVI_OUT_SYSTEMWARNING,__tr2qs(
+ "One or more standard mode flags are missing in the server available modes.\n" \
+ "This is caused either by a non RFC1459-compliant IRC daemon or a broken server reply.\n" \
+ "Server umodes seem to be '%s' and channel modes seem to be '%s'.\n" \
+ "Ignoring this reply and assuming that the basic set of modes is available.\n" \
+ "If you have strange problems, try changing the server."),umodes.ptr(),chanmodes.ptr());
+ }
+ umodes = "oiws"; // standard support
+ chanmodes = "obtkmlvsn"; // standard support
+ }
+
+ if(KVI_OPTION_BOOL(KviOption_boolShowExtendedServerInfo) && (!msg->haltOutput()))
+ {
+ if(umodes.hasData())msg->console()->outputNoFmt(KVI_OUT_SERVERINFO,__tr2qs("Available user modes:"));
+
+ const char * aux = umodes.ptr();
+ QString tmp;
+
+ while(*aux)
+ {
+ tmp = msg->connection()->serverInfo()->getUserModeDescription(*aux);
+ if(tmp.isEmpty())
+ {
+ QString tmp2 = __tr2qs(": Unknown user mode");
+ KviQString::sprintf(tmp,"%c: %Q",*aux,&tmp2);
+ }
+
+ msg->console()->outputNoFmt(KVI_OUT_SERVERINFO,tmp);
+ aux++;
+ }
+
+ if(chanmodes.hasData())msg->console()->outputNoFmt(KVI_OUT_SERVERINFO,__tr2qs("Available channel modes:"));
+
+ aux = chanmodes.ptr();
+
+ while(*aux)
+ {
+ KviQString::sprintf(tmp,"%c: %Q",*aux,&(msg->connection()->serverInfo()->getChannelModeDescription(*aux)));
+ msg->console()->outputNoFmt(KVI_OUT_SERVERINFO,tmp);
+ aux++;
+ }
+ }
+
+ QString szServer = msg->connection()->decodeText(msg->safeParam(1));
+
+ msg->connection()->serverInfoReceived(szServer,umodes.ptr(),chanmodes.ptr());
+
+ // FIXME: #warning "TO ACTIVE ? OR TO CONSOLE ?"
+ if(!_OUTPUT_MUTE)
+ {
+ if(!msg->haltOutput())msg->console()->output(KVI_OUT_SERVERINFO,
+ __tr2qs("Server %Q version %S supporting user modes '%S' and channel modes '%S'"),
+ &szServer,&version,&umodes,&chanmodes);
+ }
+}
+
+void KviServerParser::parseNumeric005(KviIrcMessage *msg)
+{
+ // 005: RPL_PROTOCTL [D]
+ // :prefix 005 target <proto> <proto> .... :are available/supported on this server
+ // 005: RPL_BOUNCE [?]
+ // :prefix 005 target :Try server <server>, port <port>
+ // 005: RPL_ISUPPORT
+ if(msg->connection()->context()->state() != KviIrcContext::Connected)
+ msg->connection()->loginComplete(msg->connection()->decodeText(msg->param(0)));
+
+ bool bUhNames = false;
+ bool bNamesx = false;
+
+ unsigned int count = msg->paramCount();
+ if(count > 2)
+ {
+ count--;
+ for(unsigned int i = 1;i < count;i++)
+ {
+ const char * p = msg->param(i);
+ if(kvi_strEqualCIN("PREFIX=(",p,8))
+ {
+ p+=8;
+ const char * pModes = p;
+ while(*p && (*p != ')'))p++;
+ KviStr szModeFlags(pModes,p-pModes);
+ if(*p)p++;
+ KviStr szModePrefixes = p;
+ if(szModePrefixes.hasData() && (szModePrefixes.len() == szModeFlags.len()))
+ {
+ msg->connection()->serverInfo()->setSupportedModePrefixes(szModePrefixes.ptr(),szModeFlags.ptr());
+ }
+ } else if(kvi_strEqualCIN("CHANTYPES=",p,10))
+ {
+ p+=10;
+ KviStr tmp = p;
+ if(tmp.hasData())msg->connection()->serverInfo()->setSupportedChannelTypes(tmp.ptr());
+ } else if(kvi_strEqualCI("WATCH",p) || kvi_strEqualCIN("WATCH=",p,6))
+ {
+ msg->connection()->serverInfo()->setSupportsWatchList(true);
+ if((!_OUTPUT_MUTE) && (!msg->haltOutput()) && KVI_OPTION_BOOL(KviOption_boolShowExtendedServerInfo))
+ {
+ msg->console()->outputNoFmt(KVI_OUT_SERVERINFO,__tr2qs("This server supports the WATCH notify list method, it will be used"));
+ }
+ } else if(kvi_strEqualCIN("TOPICLEN=",p,9))
+ {
+ p += 9;
+ QString tmp = p;
+ if(!tmp.isEmpty()) {
+ bool ok;
+ int len = tmp.toInt( &ok );
+ if(ok) msg->connection()->serverInfo()->setMaxTopicLen(len);
+ }
+ } else if(kvi_strEqualCIN("NETWORK=",p,8))
+ {
+ p += 8;
+ QString tmp = p;
+ if(!tmp.isEmpty())msg->console()->connection()->target()->setNetworkName(tmp);
+ if((!_OUTPUT_MUTE) && (!msg->haltOutput()) && KVI_OPTION_BOOL(KviOption_boolShowExtendedServerInfo))
+ {
+ msg->console()->output(KVI_OUT_SERVERINFO,__tr2qs("The current network is %Q"),&tmp);
+ }
+ } else if(kvi_strEqualCI("CODEPAGES",p))
+ {
+ msg->connection()->serverInfo()->setSupportsCodePages(true);
+ if((!_OUTPUT_MUTE) && (!msg->haltOutput()) && KVI_OPTION_BOOL(KviOption_boolShowExtendedServerInfo))
+ {
+ msg->console()->outputNoFmt(KVI_OUT_SERVERINFO,__tr2qs("This server supports the CODEPAGE command, it will be used"));
+ }
+
+ //msg->connection()->sendFmtData("CODEPAGE %s",msg->console()->textCodec()->name());
+
+ } else if(kvi_strEqualCIN("CHANMODES=",p,10))
+ {
+ p+=10;
+ QString tmp = p;
+ msg->connection()->serverInfo()->setSupportedChannelModes(tmp);
+ }else if(kvi_strEqualCIN("MODES=",p,6))
+ {
+ p+=6;
+ QString tmp = p;
+ bool bok;
+ int num=tmp.toUInt(&bok);
+ if(bok)
+ msg->connection()->serverInfo()->setMaxModeChanges(num);
+ } else if(kvi_strEqualCIN("NAMESX",p,6))
+ {
+ p+=6;
+ bNamesx=true;
+ } else if(kvi_strEqualCIN("UHNAMES",p,7))
+ {
+ p+=7;
+ bUhNames=true;
+ }else if(kvi_strEqualCIN("CHARSET=",p,8))
+ {
+ p+=8;
+ QString tmp = p;
+ msg->connection()->serverInfo()->setSupportsCodePages(true);
+
+ if((!_OUTPUT_MUTE) && (!msg->haltOutput()) && KVI_OPTION_BOOL(KviOption_boolShowExtendedServerInfo))
+ {
+ msg->console()->outputNoFmt(KVI_OUT_SERVERINFO,__tr2qs("This server supports the CODEPAGE command, it will be used"));
+ }
+
+ /*if( tmp.contains(msg->console()->textCodec()->name(),false) || tmp.contains("*",false) )
+ {
+ msg->connection()->sendFmtData("CODEPAGE %s",msg->console()->textCodec()->name());
+ }*/
+ }
+ }
+ if((!_OUTPUT_MUTE) && (!msg->haltOutput()))
+ {
+ const char * aux = msg->allParams();
+ while(*aux == ' ')aux++;
+ while(*aux && (*aux != ' '))aux++;
+ while(*aux == ' ')aux++;
+ if(*aux == ':')aux++;
+ if(!msg->haltOutput())msg->console()->output(KVI_OUT_SERVERINFO,__tr2qs("This server supports: %s"),msg->connection()->decodeText(aux).utf8().data());
+ if(bNamesx || bUhNames) {
+ msg->connection()->sendFmtData("PROTOCTL %s %s",bNamesx ? "NAMESX" : "", bUhNames ? "UHNAMES" : "");
+ }
+ }
+ } else {
+ QString inf = msg->connection()->decodeText(msg->safeTrailing());
+ if(!msg->haltOutput())msg->console()->outputNoFmt(KVI_OUT_SERVERINFO,inf);
+ }
+ // } else {
+ // // RPL_BOUNCE prolly
+ // if(!msg->haltOutput())msg->console()->outputNoFmt(KVI_OUT_SERVERINFO,msg->safeTrailing());
+ // }
+}
+
+void KviServerParser::parseNumericMotd(KviIrcMessage *msg)
+{
+ // 372: RPL_MOTD [I,E,U,D]
+ // :prefix 372 target : - <motd>
+ // 377: RPL_MOTD2 [?]
+ // :prefix 377 target : - <motd>
+ // 378: RPL_MOTD3 [Austnet]
+ // :prefix 377 target : - <motd>
+ // 375: RPL_MOTDSTART [I,E,U,D]
+ // :prefix 375 target : - <server> Message of the Day -
+ // 372: RPL_ENDOFMOTD [I,E,U,D]
+ // :prefix 376 target :End of /MOTD command.
+ // FIXME: #warning "SKIP MOTD , MOTD IN A SEPARATE WINDOW , SILENT ENDOFMOTD , MOTD IN ACTIVE WINDOW"
+ if(!msg->haltOutput())msg->console()->outputNoFmt(KVI_OUT_MOTD,msg->connection()->decodeText(msg->safeTrailing()));
+
+ if(msg->numeric() == RPL_ENDOFMOTD)
+ {
+ msg->connection()->endOfMotdReceived();
+ }
+}
+
+void KviServerParser::parseNumericEndOfNames(KviIrcMessage *msg)
+{
+ // 366: RPL_ENDOFNAMES [I,E,U,D]
+ // :prefix 366 target <channel> :End of /NAMES list.
+ QString szChan = msg->connection()->decodeText(msg->safeParam(1));
+ KviChannel * chan = msg->connection()->findChannel(szChan);
+ if(chan)
+ {
+ if(!chan->hasAllNames())
+ {
+ chan->setHasAllNames();
+ return;
+ }
+ }
+
+ if(!msg->haltOutput() && !_OUTPUT_MUTE)
+ {
+// FIXME: #warning "KVI_OUT_NAMES missing"
+ KviWindow * pOut = chan ? chan : KVI_OPTION_BOOL(KviOption_boolServerRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+ pOut->output(KVI_OUT_UNHANDLED,__tr2qs("End of NAMES for \r!c\r%Q\r"),&szChan);
+ }
+}
+
+void KviServerParser::parseNumeric020(KviIrcMessage *msg)
+{
+ // 020: RPL_CONNECTING
+ //:irc.dotsrc.org 020 * :Please wait while we process your connection.
+ QString szServer;
+ if(!msg->haltOutput())
+ {
+ QString szWText = msg->console()->decodeText(msg->safeTrailing());
+ msg->console()->output(
+ KVI_OUT_CONNECTION,"%c\r!s\r%s\r%c: %Q",KVI_TEXT_BOLD,
+ msg->safePrefix(),KVI_TEXT_BOLD,&szWText);
+ }
+}
+
+void KviServerParser::parseNumericNames(KviIrcMessage *msg)
+{
+ // 353: RPL_NAMREPLY [I,E,U,D]
+ // :prefix 353 target [=|*|@] <channel> :<space_separated_list_of_nicks>
+
+ // [=|*|@] is the type of the channel:
+ // = --> public * --> private @ --> secret
+ // ...but we ignore it
+ //QString szChan = msg->connection()->decodeText(msg->cSafeParam(2)->data()); // <-- KviQCString::data() is implicitly unsafe: it CAN return 0
+ QString szChan = msg->connection()->decodeText(msg->safeParam(2));
+ KviChannel * chan = msg->connection()->findChannel(szChan);
+ // and run to the first nickname
+ char * aux = msg->safeTrailingString().ptr();
+ while((*aux) && (*aux == ' '))aux++;
+ // now check if we have that channel
+
+ char * trailing = aux;
+
+ bool bHalt = msg->haltOutput();
+
+ if(chan)
+ {
+ bHalt = bHalt || (!chan->hasAllNames());
+
+ // K...time to parse a lot of data
+ chan->enableUserListUpdates(false);
+
+ int iPrevFlags = chan->myFlags();
+
+ KviIrcConnectionServerInfo * pServerInfo = msg->connection()->serverInfo();
+
+ while(*aux)
+ {
+ int iFlags = 0;
+ // @ = op (+o), + = voiced (+v), % = halfop (+h), - = userop (+u), ^ = protected (+a?), * = chan owner (+q), !, & = channel admin (+a?)
+ // ^ +a is a weird mode: it also breaks nicknames on some networks!
+ // not a valid first char(s) of nickname, must be a mode prefix
+
+ bool bContinue = true;
+
+ while(pServerInfo->isSupportedModePrefix((unsigned char)(*aux)))
+ {
+ // leading umode flag(s)
+ iFlags |= pServerInfo->modeFlagFromPrefixChar(*aux);
+ aux++;
+ }
+
+ char * begin = aux;
+ while(*aux && (*aux != ' '))aux++;
+ char save = *aux;
+ *aux = 0;
+ // NAMESX + UHNAMES support
+ KviIrcMask mask(msg->connection()->decodeText(begin));
+ // and make it join
+ if(!mask.nick().isEmpty())chan->join(mask.nick(),
+ mask.hasUser() ? mask.user() : QString::null,
+ mask.hasHost() ? mask.host() : QString::null,
+ iFlags);
+ *aux = ' ';
+ *aux = save;
+ // run to the next nick (or the end)
+ while((*aux) && (*aux == ' '))aux++;
+ }
+
+ if(iPrevFlags != chan->myFlags())chan->updateCaption();
+
+ chan->enableUserListUpdates(true);
+ // finished a block
+ }
+
+ // So it is a result of a /NAMES command or a local desync
+ // We handle it in a cool way.
+
+ if(!bHalt)
+ {
+ // FIXME: #warning "KVI_OUT_NAMES missing"
+ KviWindow * pOut = chan ? chan : KVI_OPTION_BOOL(KviOption_boolServerRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+ QString szTrailing = trailing ? msg->connection()->decodeText(trailing) : QString("");
+ pOut->output(KVI_OUT_UNHANDLED,__tr2qs("Names for \r!c\r%Q\r: %Q"),&szChan,&szTrailing);
+ }
+}
+
+void KviServerParser::parseNumericTopic(KviIrcMessage *msg)
+{
+ // 332: RPL_TOPIC [I,E,U,D]
+ // :prefix 332 target <channel> :<topic>
+ QString szChan = msg->connection()->decodeText(msg->safeParam(1));
+ KviChannel * chan = msg->connection()->findChannel(szChan);
+ if(chan)
+ {
+ QString szTopic = chan->decodeText(msg->safeTrailing());
+
+ chan->topicWidget()->setTopic(szTopic);
+ chan->topicWidget()->setTopicSetBy(__tr2qs("(unknown)"));
+ if(KVI_OPTION_BOOL(KviOption_boolEchoNumericTopic))
+ {
+ if(!msg->haltOutput())
+ chan->output(KVI_OUT_TOPIC,__tr2qs("Channel topic is: %Q"),&szTopic);
+ }
+ } else {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolServerRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+
+ QString szTopic = msg->connection()->decodeText(msg->safeTrailing());
+ pOut->output(KVI_OUT_TOPIC,__tr2qs("Topic for \r!c\r%Q\r is: %Q"),
+ &szChan,&szTopic);
+ }
+
+}
+
+void KviServerParser::parseNumericNoTopic(KviIrcMessage *msg)
+{
+ // 331: RPL_NOTOPIC [I,E,U,D]
+ // :prefix 331 target <channel> :No topic is set
+ QString szChan = msg->connection()->decodeText(msg->safeParam(1));
+ KviChannel * chan = msg->connection()->findChannel(szChan);
+ if(chan)
+ {
+ chan->topicWidget()->setTopic("");
+ if(KVI_OPTION_BOOL(KviOption_boolEchoNumericTopic))
+ {
+ if(!msg->haltOutput())
+ chan->outputNoFmt(KVI_OUT_TOPIC,__tr2qs("No channel topic is set"));
+ }
+ } else {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolServerRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+ pOut->output(KVI_OUT_TOPIC,__tr2qs("No topic is set for channel \r!c\r%Q\r"),
+ &szChan);
+ }
+}
+
+void KviServerParser::parseNumericTopicWhoTime(KviIrcMessage *msg)
+{
+ // 333: RPL_TOPICWHOTIME [e,U,D]
+ // :prefix 333 target <channel> <whoset> <time>
+
+ QString szChan = msg->connection()->decodeText(msg->safeParam(1));
+ KviChannel * chan = msg->connection()->findChannel(szChan);
+
+ KviStr tmp = msg->safeParam(3);
+ bool bOk = false;
+ unsigned long t = 0;
+ if(tmp.hasData())t = tmp.toUInt(&bOk);
+
+ QDateTime dt;
+ dt.setTime_t(t);
+
+ QString szDate = dt.toString();
+ QString szWho = msg->connection()->decodeText(msg->safeParam(2));
+ KviIrcMask who(szWho);
+ QString szDisplayableWho;
+ if( !(who.hasUser() && who.hasHost()) )
+ {
+ szDisplayableWho="\r!n\r"+szWho+"\r";
+ } else {
+ KviQString::sprintf(szDisplayableWho,"\r!n\r%Q\r!%Q@\r!h\r%Q\r",&(who.nick()),&(who.user()),&(who.host()));
+ }
+ if(chan)
+ {
+ chan->topicWidget()->setTopicSetBy(szWho);
+ if(bOk)chan->topicWidget()->setTopicSetAt(szDate);
+ if(KVI_OPTION_BOOL(KviOption_boolEchoNumericTopic))
+ {
+ if(!msg->haltOutput())
+ {
+ if(bOk)chan->output(KVI_OUT_TOPIC,__tr2qs("Topic was set by %Q on %Q"),&szDisplayableWho,&szDate);
+ else chan->output(KVI_OUT_TOPIC,__tr2qs("Topic was set by %Q"),&szDisplayableWho);
+ }
+ }
+ } else {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolServerRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+ if(bOk)
+ {
+ pOut->output(KVI_OUT_TOPIC,__tr2qs("Topic for \r!c\r%Q\r was set by %Q on %Q"),
+ &szChan,&szDisplayableWho,&szDate);
+ } else {
+ pOut->output(KVI_OUT_TOPIC,__tr2qs("Topic for \r!c\r%Q\r was set by %Q"),
+ &szChan,&szDisplayableWho);
+ }
+ }
+}
+
+void KviServerParser::parseNumericChannelModeIs(KviIrcMessage *msg)
+{
+ // 324: RPL_CHANNELMODEIS [I,E,U,D]
+ // :prefix 324 target <channel> +<chanmode>
+ QString szSource = msg->connection()->decodeText(msg->safePrefix());
+ QString szChan = msg->connection()->decodeText(msg->safeParam(1));
+ KviChannel * chan = msg->connection()->findChannel(szChan);
+ KviStr modefl = msg->safeParam(2);
+ if(chan)parseChannelMode(szSource,"*","*",chan,modefl,msg,3);
+ else {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolServerRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+ if((!szChan.isEmpty()) && IS_CHANNEL_TYPE_FLAG(szChan[0]))
+ {
+ pOut->output(KVI_OUT_CHANMODE,__tr2qs("Channel mode for \r!c\r%Q\r is %s"),
+ &szChan,msg->safeParam(2));
+ } else {
+ pOut->output(KVI_OUT_MODE,__tr2qs("User mode for \r!n\r%Q\r is %s"),
+ &szChan,msg->safeParam(2));
+ }
+ }
+}
+
+void getDateTimeStringFromCharTimeT(QString &buffer,const char *time_t_string)
+{
+ KviStr tmp=time_t_string;
+ bool bOk=false;
+ unsigned int uTime = tmp.toUInt(&bOk);
+ if(bOk){
+ QDateTime dt;
+ dt.setTime_t(uTime);
+ buffer = dt.toString();
+ } else buffer = __tr2qs("(Unknown)");
+}
+
+#define PARSE_NUMERIC_ENDOFLIST(__funcname,__setGotIt,__didSendRequest,__setDone,__daicon,__szWhatQString) \
+ void KviServerParser::__funcname(KviIrcMessage *msg) \
+ { \
+ QString szChan = msg->connection()->decodeText(msg->safeParam(1)); \
+ KviChannel * chan = msg->connection()->findChannel(szChan); \
+ if(chan) \
+ { \
+ chan->__setGotIt(); \
+ if(chan->__didSendRequest()) \
+ { \
+ chan->__setDone(); \
+ return; \
+ } \
+ } \
+ if(!msg->haltOutput()) \
+ { \
+ KviWindow * pOut = chan ? chan : KVI_OPTION_BOOL(KviOption_boolServerRepliesToActiveWindow) ? \
+ msg->console()->activeWindow() : (KviWindow *)(msg->console()); \
+ pOut->output(__daicon,__tr2qs("End of channel %Q for \r!c\r%Q\r"),&(__szWhatQString),&szChan); \
+ } \
+ }
+
+PARSE_NUMERIC_ENDOFLIST(parseNumericEndOfBanList,setHasBanList,sentBanListRequest,setBanListDone,KVI_OUT_BAN,__tr2qs("ban list"))
+PARSE_NUMERIC_ENDOFLIST(parseNumericEndOfInviteList,setHasInviteList,sentInviteListRequest,setInviteListDone,KVI_OUT_INVITEEXCEPT,__tr2qs("invite list"))
+PARSE_NUMERIC_ENDOFLIST(parseNumericEndOfExceptList,setHasBanExceptionList,sentBanExceptionListRequest,setBanExceptionListDone,KVI_OUT_BANEXCEPT,__tr2qs("ban exception list"))
+
+#define PARSE_NUMERIC_LIST(__funcname,__modechar,__sentRequest,__ico,__szWhatQString) \
+ void KviServerParser::__funcname(KviIrcMessage *msg) \
+ { \
+ QString szChan = msg->connection()->decodeText(msg->safeParam(1)); \
+ QString banmask = msg->connection()->decodeText(msg->safeParam(2)); \
+ QString bansetby = msg->connection()->decodeText(msg->safeParam(3)); \
+ QString bansetat; \
+ getDateTimeStringFromCharTimeT(bansetat,msg->safeParam(4)); \
+ if(bansetby.isEmpty())bansetby = __tr2qs("(Unknown)"); \
+ KviChannel * chan = msg->connection()->findChannel(szChan); \
+ if(chan) \
+ { \
+ chan->setMask(__modechar,banmask,true,bansetby,QString(msg->safeParam(4)).toUInt()); \
+ if(chan->__sentRequest())return; \
+ } \
+ if(!msg->haltOutput()) \
+ { \
+ KviWindow * pOut = chan ? chan : KVI_OPTION_BOOL(KviOption_boolServerRepliesToActiveWindow) ? \
+ msg->console()->activeWindow() : (KviWindow *)(msg->console()); \
+ pOut->output(__ico,__tr2qs("%Q for \r!c\r%Q\r: \r!m-%c\r%Q\r (set by %Q on %Q)"), \
+ &(__szWhatQString),&szChan,__modechar,&banmask,&bansetby,&bansetat); \
+ } \
+ }
+
+// 367: RPL_BANLIST [I,E,U,D]
+// :prefix 367 target <channel> <banmask> [bansetby] [bansetat]
+PARSE_NUMERIC_LIST(parseNumericBanList,'b',sentBanListRequest,KVI_OUT_BAN,__tr2qs("Ban listing"))
+// 346: RPL_INVITELIST [I,E,U,D]
+// :prefix 346 target <channel> <invitemask> [invitesetby] [invitesetat]
+PARSE_NUMERIC_LIST(parseNumericInviteList,'I',sentInviteListRequest,KVI_OUT_INVITEEXCEPT,__tr2qs("Invite listing"))
+// 346: RPL_EXCEPTLIST [I,E,U,D]
+// :prefix 346 target <channel> <banmask> [bansetby] [bansetat]
+PARSE_NUMERIC_LIST(parseNumericExceptList,'e',sentBanExceptionListRequest,KVI_OUT_BANEXCEPT,__tr2qs("Ban exception listing"));
+
+
+void KviServerParser::parseNumericWhoReply(KviIrcMessage *msg)
+{
+ // 352: RPL_WHOREPLY [I,E,U,D]
+ // :prefix 352 target <chan> <usr> <hst> <srv> <nck> <stat> :<hops> <real>
+
+ QString szChan = msg->connection()->decodeText(msg->safeParam(1));
+ QString szUser = msg->connection()->decodeText(msg->safeParam(2));
+ QString szHost = msg->connection()->decodeText(msg->safeParam(3));
+ QString szServ = msg->connection()->decodeText(msg->safeParam(4));
+ QString szNick = msg->connection()->decodeText(msg->safeParam(5));
+ QString szFlag = msg->connection()->decodeText(msg->safeParam(6));
+ bool bAway = szFlag.find('G') != -1;
+
+ KviStr trailing = msg->safeTrailing();
+ KviStr hops = trailing.getToken(' ');
+ bool bHopsOk = false;
+ int iHops = hops.toInt(&bHopsOk);
+
+ QString szReal = msg->connection()->decodeText(trailing.ptr());
+
+ // Update the user entry
+ KviIrcUserDataBase * db = msg->connection()->userDataBase();
+ KviIrcUserEntry * e = db->find(szNick);
+ if(e)
+ {
+ if(bHopsOk)e->setHops(iHops);
+ e->setUser(szUser);
+ e->setHost(szHost);
+ e->setServer(szServ);
+ e->setRealName(szReal);
+ e->setAway(bAway);
+ KviQuery * q = msg->connection()->findQuery(szNick);
+ if(q) q->updateLabelText();
+ if(!e->avatar())
+ {
+ // FIXME: #warning "THE AVATAR SHOULD BE RESIZED TO MATCH THE MAX WIDTH/HEIGHT"
+ // maybe now we can match this user ?
+ msg->console()->checkDefaultAvatar(e,szNick,szUser,szHost);
+ }
+ }
+
+ KviChannel * chan = msg->connection()->findChannel(szChan);
+ if(chan)
+ {
+ if(!chan->hasWhoList())
+ {
+ // FIXME: #warning "IF VERBOSE && SHOW INTERNAL WHO REPLIES...."
+ return;
+ }
+ if(chan->sentSyncWhoRequest())
+ {
+ // FIXME: #warning "IF VERBOSE && SHOW INTERNAL WHO REPLIES...."
+ return;
+ }
+ }
+
+ // FIXME: #warning "SYNC OP/VOICE on channel!!!"
+
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = chan ? chan : KVI_OPTION_BOOL(KviOption_boolServerRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+
+ QString szAway = bAway ? __tr2qs("Yes") : __tr2qs("No");
+
+ pOut->output(KVI_OUT_WHO,
+ __tr2qs("WHO entry for %c\r!n\r%Q\r%c [%Q@\r!h\r%Q\r]: %cChannel%c: \r!c\r%Q\r, %cServer%c: \r!s\r%Q\r, %cHops%c: %d, %cFlags%c: %Q, %cAway%c: %Q, %cReal name%c: %Q"),
+ KVI_TEXT_BOLD,&szNick, KVI_TEXT_BOLD,
+ &szUser,&szHost,KVI_TEXT_UNDERLINE,
+ KVI_TEXT_UNDERLINE,&szChan,KVI_TEXT_UNDERLINE,
+ KVI_TEXT_UNDERLINE,&szServ,KVI_TEXT_UNDERLINE,
+ KVI_TEXT_UNDERLINE,iHops, KVI_TEXT_UNDERLINE, KVI_TEXT_UNDERLINE,
+ &szFlag, KVI_TEXT_UNDERLINE, KVI_TEXT_UNDERLINE,
+ &szAway, KVI_TEXT_UNDERLINE,
+ KVI_TEXT_UNDERLINE, &szReal);
+ }
+
+
+}
+
+void KviServerParser::parseNumericEndOfWho(KviIrcMessage *msg)
+{
+ // 315: RPL_ENDOFWHO [I,E,U,D]
+ // :prefix 315 target <channel/nick> :End of /WHO List.
+ QString szChan = msg->connection()->decodeText(msg->safeParam(1));
+ KviChannel * chan = msg->connection()->findChannel(szChan);
+ if(chan)
+ {
+ chan->userListView()->updateArea();
+ kvi_time_t tNow = kvi_unixTime();
+ msg->connection()->stateData()->setLastReceivedChannelWhoReply(tNow);
+ chan->setLastReceivedWhoReply(tNow);
+ if(msg->connection()->lagMeter())
+ {
+ KviStr tmp(KviStr::Format,"WHO %s",msg->safeParam(1));
+ msg->connection()->lagMeter()->lagCheckComplete(tmp.ptr());
+ }
+
+ if(!chan->hasWhoList())
+ {
+ // FIXME: #warning "IF VERBOSE && SHOW INTERNAL WHO REPLIES...."
+ chan->setHasWhoList();
+ return;
+ }
+
+ if(chan->sentSyncWhoRequest())
+ {
+ // FIXME: #warning "IF VERBOSE && SHOW INTERNAL WHO REPLIES...."
+ chan->clearSentSyncWhoRequest();
+ return;
+ }
+ }
+
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = chan ? chan : KVI_OPTION_BOOL(KviOption_boolServerRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+ QString whoTarget = msg->connection()->decodeText(msg->safeParam(1));
+ if(IS_CHANNEL_TYPE_FLAG(whoTarget[0]))
+ whoTarget.prepend("\r!c\r");
+ else
+ whoTarget.prepend("\r!n\r");
+ whoTarget.append("\r");
+ pOut->output(KVI_OUT_WHO,__tr2qs("End of WHO list for %Q"),&whoTarget);
+ }
+}
+
+void KviServerParser::parseLoginNicknameProblem(KviIrcMessage *msg)
+{
+ // ops...not logged in yet...
+ QString nextNick;
+ unsigned int uNickCnt;
+ switch(msg->connection()->stateData()->loginNickIndex())
+ {
+ case 0:
+ // used a server specific nickname
+ KVI_OPTION_STRING(KviOption_stringNickname1).stripWhiteSpace();
+ if(KVI_OPTION_STRING(KviOption_stringNickname1).isEmpty())
+ KVI_OPTION_STRING(KviOption_stringNickname1) = KVI_DEFAULT_NICKNAME1;
+ nextNick = KVI_OPTION_STRING(KviOption_stringNickname1);
+ uNickCnt = 1;
+ case 1:
+ // used the first nickname of the identity
+ KVI_OPTION_STRING(KviOption_stringNickname2).stripWhiteSpace();
+ if(KVI_OPTION_STRING(KviOption_stringNickname2).isEmpty())
+ KVI_OPTION_STRING(KviOption_stringNickname2) = KVI_DEFAULT_NICKNAME2;
+ nextNick = KVI_OPTION_STRING(KviOption_stringNickname2);
+ uNickCnt = 2;
+ break;
+ case 2:
+ // used the second nickname of the identity
+ KVI_OPTION_STRING(KviOption_stringNickname3).stripWhiteSpace();
+ if(KVI_OPTION_STRING(KviOption_stringNickname3).isEmpty())
+ KVI_OPTION_STRING(KviOption_stringNickname3) = KVI_DEFAULT_NICKNAME3;
+ nextNick = KVI_OPTION_STRING(KviOption_stringNickname3);
+ uNickCnt = 3;
+ break;
+ default:
+ {
+ // used all the nicknames of the identity
+ // fall back to a random string...
+ nextNick = msg->safeParam(1);
+ nextNick.stripWhiteSpace();
+ if(nextNick.isEmpty())nextNick = KVI_DEFAULT_NICKNAME1;
+ nextNick = nextNick.left(7);
+ QString num;
+ num.setNum(msg->connection()->stateData()->loginNickIndex());
+ nextNick.append(num);
+ uNickCnt = msg->connection()->stateData()->loginNickIndex() + 1;
+ }
+ break;
+ }
+
+ QString szOldNick = msg->connection()->userInfo()->nickName();
+ msg->console()->notifyListView()->nickChange(szOldNick,nextNick);
+
+ msg->connection()->userInfo()->setNickName(nextNick);
+ msg->connection()->stateData()->setLoginNickIndex(uNickCnt);
+
+ if(uNickCnt > 7)
+ {
+ msg->console()->output(KVI_OUT_NICKNAMEPROBLEM,
+ __tr2qs("Something really weird is happening: the server is refusing all the login nicknames..."));
+
+ if(msg->connection()->stateData()->loginNickIndex() > 10)
+ {
+ msg->console()->output(KVI_OUT_NICKNAMEPROBLEM,
+ __tr2qs("The server is refusing all the login nicknames: giving up, you must send the nickname manually"));
+ return;
+ }
+ }
+
+ if(!msg->haltOutput())
+ {
+ QString szActual = msg->connection()->decodeText(msg->safeParam(1));
+ QString szWText = msg->connection()->decodeText(msg->safeTrailing());
+ msg->console()->output(KVI_OUT_NICKNAMEPROBLEM,
+ __tr2qs("No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."),
+ &szActual,msg->numeric(),&szWText,&nextNick);
+ }
+
+ KviQCString d = msg->connection()->encodeText(nextNick);
+ msg->connection()->sendFmtData("NICK %s",d.data());
+}
+
+void KviServerParser::parseNumericUnavailResource(KviIrcMessage *msg)
+{
+ // 437: ERR_UNAVAILRESOURCE [I]
+ // :prefix 437 <target> <nick/channel> :Nick/Channel is temporairly unavailable
+ if(!(msg->console()->isConnected()))
+ {
+ parseLoginNicknameProblem(msg);
+ } else {
+ // already connected... just say that we have problems
+ if(!msg->haltOutput())
+ {
+ QString szNk = msg->connection()->decodeText(msg->safeParam(1));
+ QString szWText = msg->connection()->decodeText(msg->safeTrailing());
+ msg->console()->output(KVI_OUT_NICKNAMEPROBLEM,
+ "\r!n\r%Q\r: %Q",&szNk,&szWText);
+ }
+ }
+}
+
+void KviServerParser::parseNumericCantJoinChannel(KviIrcMessage *msg)
+{
+ // 471: ERR_CHANNELISFULL [I,E,U,D]
+ // 473: ERR_INVITEONLYCHAN [I,E,U,D]
+ // 474: ERR_BANNEDFROMCHAN [I,E,U,D]
+ // 475: ERR_BADCHANNELKEY [I,E,U,D]
+ // :prefix 47* <target> <channel> :Can't join channel (+l/i/b/k)
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = (KviWindow *)(msg->connection()->findChannel(msg->safeParam(1)));
+ if(!pOut)pOut = (KviWindow *)(msg->console());
+ QString szChannel = msg->connection()->decodeText(msg->safeParam(1));
+ QString szWText = msg->connection()->decodeText(msg->safeTrailing());
+ pOut->output(KVI_OUT_JOINERROR,
+ "\r!c\r%Q\r: %Q",&szChannel,&szWText);
+ }
+}
+
+// Keep the source ordered: this should be named "parseOtherChannelError"
+
+void KviServerParser::otherChannelError(KviIrcMessage *msg)
+{
+ // 482: ERR_CHANOPRIVSNEEDED
+ // 467: ERR_KEYSET
+ // 472: ERR_UNKNOWNMODE
+ // :prefix 4?? <target> <channel> :error text
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = (KviWindow *)(msg->connection()->findChannel(msg->safeParam(1)));
+ if(!pOut)pOut = (KviWindow *)(msg->console());
+ QString szChannel = msg->connection()->decodeText(msg->safeParam(1));
+ QString szWText = msg->connection()->decodeText(msg->safeTrailing());
+ pOut->output(KVI_OUT_GENERICERROR,
+ "\r!c\r%Q\r: %Q",&szChannel,&szWText);
+ }
+}
+
+void KviServerParser::parseCommandSyntaxHelp(KviIrcMessage *msg)
+{
+ // 704 RPL_COMMANDSYNTAX
+ // :prefix 704 <target> <command> :text
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = (KviWindow *)(msg->console());
+ QString szCommand = msg->connection()->decodeText(msg->safeParam(1));
+ QString szWText = msg->connection()->decodeText(msg->safeTrailing());
+ pOut->output(KVI_OUT_HELP,
+ __tr2qs("Command syntax %Q: %Q"),&szCommand,&szWText); // Pragma: wheee..... that should be in english :D
+ }
+}
+
+void KviServerParser::parseCommandHelp(KviIrcMessage *msg)
+{
+ // 705 RPL_COMMANDHELP
+ // :prefix 705 <target> <command> :text
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = (KviWindow *)(msg->console());
+ QString szCommand = msg->connection()->decodeText(msg->safeParam(1));
+ QString szWText = msg->connection()->decodeText(msg->safeTrailing());
+ pOut->outputNoFmt(KVI_OUT_HELP,szWText);
+ }
+}
+
+void KviServerParser::parseChannelHelp(KviIrcMessage *msg)
+{
+ // 477 RPL_CHANNELHELP (freenode)
+ // :prefix 477 <target> <channel> :text
+ if(!msg->haltOutput())
+ {
+ QString szChan = msg->connection()->decodeText(msg->safeParam(1));
+ QString szText = msg->connection()->decodeText(msg->safeTrailing());
+ KviWindow * pOut = msg->connection()->findChannel(szChan);
+ if(pOut)
+ {
+ pOut->output(KVI_OUT_HELP,__tr2qs("Tip: %Q"),&szText);
+ } else {
+ pOut = (KviWindow *)(msg->console());
+ pOut->output(KVI_OUT_HELP,__tr2qs("Tip for %Q: %Q"),&szChan,&szText);
+ }
+
+ }
+}
+
+
+void KviServerParser::parseCommandEndOfHelp(KviIrcMessage *msg)
+{
+ // 704 RPL_COMMANDSYNTAX
+ // 705 RPL_COMMANDHELP
+ // :prefix 706 <target> <command> :End of /HELP.
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = (KviWindow *)(msg->console());
+ QString szCommand = msg->connection()->decodeText(msg->safeParam(1));
+ pOut->output(KVI_OUT_HELP,
+ __tr2qs("End of help about %Q"),&szCommand);
+ }
+}
+
+void KviServerParser::parseNumericNicknameProblem(KviIrcMessage *msg)
+{
+ // 433: ERR_NICKNAMEINUSE [I,E,U,D]
+ // :prefix 433 <target> <nick> :Nickname is already in use.
+ // 432: ERR_ERRONEUSNICKNAME [I,E,U,D]
+ // :prefix 433 <target> <nick> :Erroneous nickname
+
+ if(!(msg->console()->isConnected()))
+ {
+ parseLoginNicknameProblem(msg);
+ } else {
+ // already connected... just say that we have problems
+ if(!msg->haltOutput())
+ {
+ QString szNk = msg->connection()->decodeText(msg->safeParam(1));
+ QString szWText = msg->connection()->decodeText(msg->safeTrailing());
+ msg->console()->output(KVI_OUT_NICKNAMEPROBLEM,
+ "\r!n\r%Q\r: %Q",&szNk,&szWText);
+ }
+ }
+}
+
+void KviServerParser::parseNumericWhoisAway(KviIrcMessage * msg)
+{
+// FIXME: #warning "Need an icon here too: sth like KVI_OUT_WHOISSERVER, but with 'A' letter"
+ msg->connection()->stateData()->setLastReceivedWhoisReply(kvi_unixTime());
+
+ QString szNk = msg->connection()->decodeText(msg->safeParam(1));
+ KviIrcUserDataBase * db = msg->connection()->userDataBase();
+ KviIrcUserEntry * e = db->find(szNk);
+ if(e)e->setAway(true);
+ KviQuery * q = msg->connection()->findQuery(szNk);
+ if(q) q->updateLabelText();
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = (KviWindow *)(msg->connection()->findQuery(szNk));
+ QString szWText = pOut ? pOut->decodeText(msg->safeTrailing()) : msg->connection()->decodeText(msg->safeTrailing());
+
+ if(!pOut)pOut = KVI_OPTION_BOOL(KviOption_boolWhoisRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+ pOut->output(KVI_OUT_WHOISUSER,__tr2qs("%c\r!n\r%Q\r%c is away: %Q"),
+ KVI_TEXT_BOLD,&szNk,KVI_TEXT_BOLD,&szWText);
+ }
+}
+
+void KviServerParser::parseNumericWhoisUser(KviIrcMessage *msg)
+{
+ // 311: RPL_WHOISUSER [I,E,U,D]
+ // :prefix 311 <target> <nick> <user> <host> * :<real_name>
+ msg->connection()->stateData()->setLastReceivedWhoisReply(kvi_unixTime());
+
+ QString szNick = msg->connection()->decodeText(msg->safeParam(1));
+ QString szUser = msg->connection()->decodeText(msg->safeParam(2));
+ QString szHost = msg->connection()->decodeText(msg->safeParam(3));
+ QString szReal = msg->connection()->decodeText(msg->safeTrailing());
+ KviIrcUserDataBase * db = msg->connection()->userDataBase();
+ KviIrcUserEntry * e = db->find(szNick);
+ if(e)
+ {
+ e->setUser(szUser);
+ e->setHost(szHost);
+ e->setRealName(szReal);
+ if(e->gender()!=KviIrcUserEntry::Unknown) {
+ if(KviQString::equalCS(g_pActiveWindow->className(),QString("KviChannel")))
+ {
+ ((KviChannel*)g_pActiveWindow)->userListView()->updateArea();
+ }
+ }
+ KviQuery * q = msg->connection()->findQuery(szNick);
+ if(q) q->updateLabelText();
+ if(!e->avatar())
+ {
+ // FIXME: #warning "THE AVATAR SHOULD BE RESIZED TO MATCH THE MAX WIDTH/HEIGHT"
+ // maybe now we can match this user ?
+ msg->console()->checkDefaultAvatar(e,szNick,szUser,szHost);
+ }
+ }
+
+ KviAsyncWhoisInfo * i = msg->connection()->asyncWhoisData()->lookup(szNick);
+ if(i)
+ {
+ i->szNick = szNick;
+ i->szUser = szUser;
+ i->szHost = szHost;
+ i->szReal = szReal;
+ return;
+ }
+
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolWhoisRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+ pOut->output(
+ KVI_OUT_WHOISUSER,__tr2qs("%c\r!n\r%Q\r%c is %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"),KVI_TEXT_BOLD,
+ &szNick,KVI_TEXT_BOLD,KVI_TEXT_UNDERLINE,&szNick,
+ &szUser,&szHost,KVI_TEXT_UNDERLINE);
+
+ pOut->output(
+ KVI_OUT_WHOISUSER,__tr2qs("%c\r!n\r%Q\r%c's real name: %Q"),KVI_TEXT_BOLD,
+ &szNick,KVI_TEXT_BOLD,&szReal);
+ }
+}
+
+void KviServerParser::parseNumericWhowasUser(KviIrcMessage * msg)
+{
+ // 314: RPL_WHOWASUSER [I,E,U,D]
+ // :prefix 314 <target> <nick> <user> <host> * :<real_name>
+
+ if(!msg->haltOutput())
+ {
+ QString szNick = msg->connection()->decodeText(msg->safeParam(1));
+ QString szUser = msg->connection()->decodeText(msg->safeParam(2));
+ QString szHost = msg->connection()->decodeText(msg->safeParam(3));
+ QString szReal = msg->connection()->decodeText(msg->safeTrailing());
+
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolWhoisRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+ pOut->output(
+ KVI_OUT_WHOISUSER,__tr2qs("%c\r!n\r%Q\r%c was %c\r!n\r%Q\r!%Q@\r!h\r%Q\r%c"),KVI_TEXT_BOLD,
+ &szNick,KVI_TEXT_BOLD,KVI_TEXT_UNDERLINE,&szNick,
+ &szUser,&szHost,KVI_TEXT_UNDERLINE);
+ pOut->output(
+ KVI_OUT_WHOISUSER,__tr2qs("%c\r!n\r%Q\r%c's real name was: %Q"),KVI_TEXT_BOLD,
+ &szNick,KVI_TEXT_BOLD,&szReal);
+ }
+}
+
+
+void KviServerParser::parseNumericWhoisChannels(KviIrcMessage *msg)
+{
+ // 319: RPL_WHOISCHANNELS [I,E,U,D]
+ // :prefix 319 <target> <nick> :<channel list>
+
+ msg->connection()->stateData()->setLastReceivedWhoisReply(kvi_unixTime());
+
+ QString szNick = msg->connection()->decodeText(msg->safeParam(1));
+ QString szChans = msg->connection()->decodeText(msg->safeTrailing());
+
+ KviAsyncWhoisInfo * i = msg->connection()->asyncWhoisData()->lookup(szNick);
+ if(i)
+ {
+ i->szChannels = szChans;
+ return;
+ }
+
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolWhoisRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+
+ QStringList sl = QStringList::split(" ",szChans);
+ QString szChanList;
+
+ for(QStringList::Iterator it = sl.begin();it != sl.end();++it)
+ {
+ QString szCur = *it;
+ // deals with <flag>[#channel] and [##channel]
+ int len = szCur.length();
+ int i =0;
+ while(i < len)
+ {
+
+ if(IS_CHANNEL_TYPE_FLAG(szCur[i]) && (!IS_USER_MODE_PREFIX(szCur[i])))break;
+ i++;
+ }
+ if(i < len)
+ {
+ if(i > 0)
+ {
+ len = szCur.length() - i;
+ if(szChanList.length() > 0)szChanList.append(", ");
+ szChanList += szCur.left(i);
+ QString szR = szCur.right(len);
+ KviQString::appendFormatted(szChanList,"\r!c\r%Q\r",&szR);
+ } else {
+ if(szChanList.length() > 0)szChanList.append(", ");
+ KviQString::appendFormatted(szChanList,"\r!c\r%Q\r",&szCur);
+ }
+ } else {
+ // we dunno what is this.. just append
+ if(szChanList.length() > 0)szChanList.append(", ");
+ szChanList.append(szCur);
+ }
+ }
+
+ pOut->output(
+ KVI_OUT_WHOISCHANNELS,__tr2qs("%c\r!n\r%Q\r%c's channels: %Q"),KVI_TEXT_BOLD,
+ &szNick,KVI_TEXT_BOLD,&szChanList);
+ }
+}
+
+void KviServerParser::parseNumericWhoisIdle(KviIrcMessage *msg)
+{
+ // 317: RPL_WHOISIDLE [I,E,U,D]
+ // :prefix 317 <target> <nick> <number> <number> :seconds idle, signon time
+
+ // FIXME: #warning "and NICK LINKS"
+ msg->connection()->stateData()->setLastReceivedWhoisReply(kvi_unixTime());
+
+ QString szNick = msg->connection()->decodeText(msg->safeParam(1));
+
+ KviAsyncWhoisInfo * i = msg->connection()->asyncWhoisData()->lookup(szNick);
+ if(i)
+ {
+ i->szIdle = msg->safeParam(2);
+ i->szSignon = msg->safeParam(3);
+ bool bOk = false;
+ i->szSignon.toUInt(&bOk);
+ if(!bOk)i->szSignon = "";
+ return;
+ }
+
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolWhoisRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+ KviStr idle = msg->safeParam(2); // shouldn't be encoded
+ KviStr sign = msg->safeParam(3); // shouldn't be encoded
+
+ bool bOk;
+ unsigned int uTime = idle.toUInt(&bOk);
+ if(!bOk)
+ {
+ UNRECOGNIZED_MESSAGE(msg,__tr2qs("Received a broken RPL_WHOISIDLE, can't evaluate the idle time"));
+ return;
+ }
+ unsigned int uDays = uTime / 86400;
+ uTime = uTime % 86400;
+ unsigned int uHours = uTime / 3600;
+ uTime = uTime % 3600;
+ unsigned int uMins = uTime / 60;
+ uTime = uTime % 60;
+ pOut->output(
+ KVI_OUT_WHOISIDLE,__tr2qs("%c\r!n\r%Q\r%c's idle time: %ud %uh %um %us"),KVI_TEXT_BOLD,
+ &szNick,KVI_TEXT_BOLD,uDays,uHours,uMins,uTime);
+
+ uTime = sign.toUInt(&bOk);
+ if(bOk)
+ {
+ QDateTime dt;
+ dt.setTime_t((time_t)uTime);
+ QString tmp = dt.toString();
+ pOut->output(
+ KVI_OUT_WHOISIDLE,__tr2qs("%c\r!n\r%Q\r%c's signon time: %Q"),KVI_TEXT_BOLD,
+ &szNick,KVI_TEXT_BOLD,&tmp);
+ }
+ }
+}
+
+void KviServerParser::parseNumericWhoisServer(KviIrcMessage *msg)
+{
+ // 312: RPL_WHOISSERVER [I,E,U,D] (sent also in response to WHOWAS)
+ // :prefix 312 <target> <nick> <server> :<server description / last whowas date>
+ msg->connection()->stateData()->setLastReceivedWhoisReply(kvi_unixTime());
+
+ QString szNick = msg->connection()->decodeText(msg->safeParam(1));
+ QString szServ = msg->connection()->decodeText(msg->safeParam(2));
+
+ KviIrcUserDataBase * db = msg->connection()->userDataBase();
+ KviIrcUserEntry * e = db->find(szNick);
+ if(e)e->setServer(szServ);
+ KviQuery * q = msg->connection()->findQuery(szNick);
+ if(q) q->updateLabelText();
+ KviAsyncWhoisInfo * i = msg->connection()->asyncWhoisData()->lookup(msg->safeParam(1));
+ if(i)
+ {
+ i->szServer = szServ;
+ return;
+ }
+
+ // FIXME: #warning "AWHOIS HERE.... and NICK LINKS"
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolWhoisRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+ QString szWText = pOut->decodeText(msg->safeTrailing());
+ pOut->output(
+ KVI_OUT_WHOISSERVER,__tr2qs("%c\r!n\r%Q\r%c's server: \r!s\r%Q\r - %Q"),KVI_TEXT_BOLD,
+ &szNick,KVI_TEXT_BOLD,&szServ,&szWText);
+ }
+}
+
+void KviServerParser::parseNumericWhoisAuth(KviIrcMessage *msg)
+{
+ // :prefix RPL_WHOISAUTH <target> <nick> :is authed as
+ // actually seen only on Quakenet
+ msg->connection()->stateData()->setLastReceivedWhoisReply(kvi_unixTime());
+
+ QString szNick = msg->connection()->decodeText(msg->safeParam(1));
+ QString szAuth = msg->connection()->decodeText(msg->safeParam(2));
+
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolWhoisRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+ pOut->output(
+ KVI_OUT_WHOISOTHER,__tr2qs("%c\r!n\r%Q\r%c is authenticated as %Q"),KVI_TEXT_BOLD,
+ &szNick,KVI_TEXT_BOLD,&szAuth);
+ }
+}
+
+void KviServerParser::parseNumericWhoisOther(KviIrcMessage *msg)
+{
+ // *: RPL_WHOIS* [?]
+ // :prefix * <target> <nick> :<description>
+ // used for RPL_WHOISCHANOP,RPL_WHOISADMIN,
+ // RPL_WHOISSADMIN,RPL_WHOISOPERATOR,RPL_WHOISREGNICK,RPL_WHOISSSL
+ // and all the other unrecognized codes that look really like a RPL_WHOIS*
+
+ msg->connection()->stateData()->setLastReceivedWhoisReply(kvi_unixTime());
+
+ QString szNick = msg->connection()->decodeText(msg->safeParam(1));
+ QString szOth = msg->connection()->decodeText(msg->safeTrailing());
+
+ KviAsyncWhoisInfo * i = msg->connection()->asyncWhoisData()->lookup(szNick);
+ if(i)
+ {
+ if(!(i->szServer.isEmpty()))i->szServer.append(',');
+ i->szServer.append(szOth);
+ return;
+ }
+
+ // FIXME: #warning "NICK LINKS"
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolWhoisRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+ pOut->output(
+ KVI_OUT_WHOISOTHER,__tr2qs("%c\r!n\r%Q\r%c's info: %Q"),KVI_TEXT_BOLD,
+ &szNick,KVI_TEXT_BOLD,&szOth);
+ }
+}
+
+// FIXME: #warning "WHOWAS MISSING"
+
+void KviServerParser::parseNumericEndOfWhois(KviIrcMessage *msg)
+{
+ // 318: RPL_ENDOFWHOIS [I,E,U,D]
+ // :prefix 318 <target> <nick> :End of /WHOIS list
+
+ msg->connection()->stateData()->setLastReceivedWhoisReply(0);
+
+ QString szNick = msg->connection()->decodeText(msg->safeParam(1));
+
+ KviAsyncWhoisInfo * i = msg->connection()->asyncWhoisData()->lookup(szNick);
+ if(i)
+ {
+ if(!g_pApp->windowExists(i->pWindow))i->pWindow = msg->console();
+
+ // that's the new KVS engine!
+ KviKvsVariantList vl;
+ vl.setAutoDelete(true);
+ vl.append(new KviKvsVariant(i->szNick));
+ vl.append(new KviKvsVariant(i->szUser));
+ vl.append(new KviKvsVariant(i->szHost));
+ vl.append(new KviKvsVariant(i->szReal));
+ vl.append(new KviKvsVariant(i->szServer));
+ vl.append(new KviKvsVariant(i->szIdle));
+ vl.append(new KviKvsVariant(i->szSignon));
+ vl.append(new KviKvsVariant(i->szChannels));
+ vl.append(new KviKvsVariant(QString(msg->safePrefix())));
+ vl.append(new KviKvsVariant(i->szSpecial));
+ vl.append(new KviKvsVariant(*(i->pMagic)));
+ i->pCallback->run(i->pWindow,&vl,0,KviKvsScript::PreserveParams);
+ msg->connection()->asyncWhoisData()->remove(i);
+ return;
+ }
+
+ // FIXME: #warning "NICK LINKS"
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolWhoisRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+ QString pref = msg->connection()->decodeText(msg->safePrefix());
+ pOut->output(
+ KVI_OUT_WHOISOTHER,__tr2qs("%c\r!n\r%Q\r%c WHOIS info from \r!s\r%Q\r"),KVI_TEXT_BOLD,
+ &szNick,KVI_TEXT_BOLD,&pref);
+ }
+}
+
+
+void KviServerParser::parseNumericEndOfWhowas(KviIrcMessage *msg)
+{
+ // 369: RPL_ENDOFWHOWAS [I,E,U,D]
+ // :prefix 369 <target> <nick> :End of /WHOWAS list
+ if(!msg->haltOutput())
+ {
+ QString szNick = msg->connection()->decodeText(msg->safeParam(1));
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolWhoisRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+ QString pref = msg->connection()->decodeText(msg->safePrefix());
+ pOut->output(
+ KVI_OUT_WHOISOTHER,__tr2qs("%c\r!n\r%Q\r%c WHOWAS info from \r!s\r%Q\r"),KVI_TEXT_BOLD,
+ &szNick,KVI_TEXT_BOLD,&pref);
+ }
+}
+
+void KviServerParser::parseNumericNoSuchNick(KviIrcMessage *msg)
+{
+ // 401: ERR_NOSUCHNICK [I,E,U,D]
+ // 406: ERR_WASNOSUCHNICK [I,E,U,D]
+ // :prefix 401 <target> <nick> :No such nick/channel
+ // :prefix 406 <target> <nick> :There was no such nickname
+ QString szNick = msg->connection()->decodeText(msg->safeParam(1));
+
+ if(msg->numeric() == ERR_NOSUCHNICK)
+ {
+ KviAsyncWhoisInfo * i = msg->connection()->asyncWhoisData()->lookup(szNick);
+ if(i)
+ {
+ if(!g_pApp->windowExists(i->pWindow))i->pWindow = msg->console();
+ // that's the new KVS engine!
+ KviKvsVariantList vl;
+ vl.setAutoDelete(true);
+ vl.append(new KviKvsVariant(i->szNick));
+ vl.append(new KviKvsVariant());
+ vl.append(new KviKvsVariant());
+ vl.append(new KviKvsVariant());
+ vl.append(new KviKvsVariant());
+ vl.append(new KviKvsVariant());
+ vl.append(new KviKvsVariant());
+ vl.append(new KviKvsVariant());
+ vl.append(new KviKvsVariant());
+ vl.append(new KviKvsVariant());
+ vl.append(new KviKvsVariant(*(i->pMagic)));
+ i->pCallback->run(i->pWindow,&vl,0,KviKvsScript::PreserveParams);
+ msg->connection()->asyncWhoisData()->remove(i);
+ return;
+ }
+ }
+ // FIXME: #warning "KVI_OUT_NOSUCHNICKCHANNEL ?"
+ // FIXME: #warning "QUERIES SHOULD REPORT NO TARGET HERE! (?)"
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = (KviWindow *)(msg->connection()->findQuery(szNick));
+ if(!pOut)
+ {
+ pOut = (KviWindow *)(msg->console()->activeWindow());
+ }
+ //} else {
+ // ((KviQuery *)pOut)->removeTarget(msg->safeParam(1));
+ //}
+ QString szWText = pOut->decodeText(msg->safeTrailing());
+ pOut->output(KVI_OUT_NICKNAMEPROBLEM,"\r!n\r%Q\r: %Q",
+ &szNick,&szWText);
+ }
+}
+
+void KviServerParser::parseNumericCreationTime(KviIrcMessage *msg)
+{
+ // 329: RPL_CREATIONTIME
+ // :prefix 329 <target> <channel> <creation_time>
+ QString szChan = msg->connection()->decodeText(msg->safeParam(1));
+ KviChannel * chan = msg->connection()->findChannel(szChan);
+ KviStr tmstr = msg->safeParam(2);
+ QDateTime dt;
+ dt.setTime_t((time_t)tmstr.toUInt());
+
+ if(!tmstr.isUnsignedNum())
+ {
+ UNRECOGNIZED_MESSAGE(msg,__tr2qs("Can't evaluate creation time"));
+ return;
+ }
+ QString szDate = dt.toString();
+ if(chan)
+ {
+ if(!msg->haltOutput())
+ {
+ chan->output(KVI_OUT_CREATIONTIME,__tr2qs("Channel was created at %Q"),&szDate);
+ }
+ } else {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolServerRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+ pOut->output(KVI_OUT_CREATIONTIME,__tr2qs("Channel \r!c\r%Q\r was created at %Q"),
+ &szChan,&szDate);
+ }
+}
+
+void KviServerParser::parseNumericIsOn(KviIrcMessage *msg)
+{
+ // 303: RPL_ISON
+ // :prefix 303 <target> :<ison replies>
+ if(msg->connection()->notifyListManager())
+ {
+ if(msg->connection()->notifyListManager()->handleIsOn(msg))return;
+ }
+ // not handled...output it
+
+ // FIXME: #warning "OUTPUT IT! (In a suitable way)"
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolServerRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+ QString szPrefix = msg->connection()->decodeText(msg->safePrefix());
+ QString szAllParms = msg->connection()->decodeText(msg->allParams());
+ pOut->output(KVI_OUT_UNHANDLED,
+ "[%Q][%s] %Q",&szPrefix,msg->command(),&szAllParms);
+ }
+}
+
+void KviServerParser::parseNumericUserhost(KviIrcMessage *msg)
+{
+ // 302: RPL_USERHOST
+ // :prefix 302 <target> :<userhost replies>
+ if(msg->connection()->notifyListManager())
+ {
+ if(msg->connection()->notifyListManager()->handleUserhost(msg))return;
+ }
+ // not handled...output it
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolServerRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+ QString szUser = msg->connection()->decodeText(msg->safeTrailing());
+ pOut->output(KVI_OUT_WHOISUSER,__tr2qs("USERHOST info: %Q"),&szUser);
+ }
+}
+
+void KviServerParser::parseNumericListStart(KviIrcMessage *msg)
+{
+ // 321: RPL_LISTSTART [I,E,U,D]
+ // :prefix 321 <target> :Channel users name
+ if(msg->haltOutput())return; // stopped by raw
+
+ if(!(msg->console()->ircContext()->listWindow()))
+ {
+ // attempt to load the module...
+ msg->console()->ircContext()->createListWindow();
+ }
+
+ if(msg->console()->ircContext()->listWindow())
+ {
+ // module loaded
+ msg->console()->ircContext()->listWindow()->control(EXTERNAL_SERVER_DATA_PARSER_CONTROL_STARTOFDATA);
+ } else {
+ msg->console()->output(KVI_OUT_LIST,__tr2qs("Channel list begin: channel, users, topic"));
+ }
+}
+
+void KviServerParser::parseNumericList(KviIrcMessage *msg)
+{
+ // 322: RPL_LIST [I,E,U,D]
+ // :prefix 364 <target> <channel> <users> :<topic>
+ if(msg->haltOutput())return; // stopped by raw
+
+ if(!(msg->console()->ircContext()->listWindow()))
+ {
+ // attempt to load the module...
+ msg->console()->ircContext()->createListWindow();
+ if(msg->console()->ircContext()->listWindow())
+ {
+ msg->console()->ircContext()->listWindow()->control(EXTERNAL_SERVER_DATA_PARSER_CONTROL_STARTOFDATA);
+ }
+ }
+
+ if(msg->console()->ircContext()->listWindow())
+ {
+ // module loaded
+ msg->console()->ircContext()->listWindow()->processData(msg);
+ } else {
+ // ops...can't load the module...
+ QString szList = msg->connection()->decodeText(msg->allParams());
+ msg->console()->output(KVI_OUT_LIST,__tr2qs("List: %Q"),&szList);
+ }
+}
+
+void KviServerParser::parseNumericListEnd(KviIrcMessage *msg)
+{
+ // 323: RPL_LISTEND [I,E,U,D]
+ // :prefix 323 <target> :End of /LIST
+ if(msg->haltOutput())return; // stopped by raw
+
+ if(msg->console()->ircContext()->listWindow())
+ {
+ msg->console()->ircContext()->listWindow()->control(EXTERNAL_SERVER_DATA_PARSER_CONTROL_ENDOFDATA);
+ } else {
+ msg->console()->output(KVI_OUT_LIST,__tr2qs("End of LIST"));
+ }
+
+}
+
+void KviServerParser::parseNumericLinks(KviIrcMessage *msg)
+{
+ // 364: RPL_LINKS [I,E,U,D]
+ // :prefix 364 <target> <host> <parent> :<hops> <description>
+ if(!(msg->console()->ircContext()->linksWindow()))
+ {
+ // attempt to load the module...
+ msg->console()->ircContext()->createLinksWindow();
+ }
+
+ if(msg->console()->ircContext()->linksWindow())
+ {
+ // module loaded
+ msg->console()->ircContext()->linksWindow()->processData(msg);
+ } else {
+ // ops...can't load the module... or the event halted the window creation
+ if(!msg->haltOutput())
+ {
+ QString szList = msg->connection()->decodeText(msg->allParams());
+ msg->console()->output(KVI_OUT_LINKS,__tr2qs("Link: %Q"),&szList);
+ }
+ }
+}
+
+void KviServerParser::parseNumericEndOfLinks(KviIrcMessage *msg)
+{
+ // 365: RPL_ENDOFLINKS [I,E,U,D]
+ // :prefix 365 <target> :End of /LINKS
+ if(msg->console()->ircContext()->linksWindow())
+ {
+ msg->console()->ircContext()->linksWindow()->control(EXTERNAL_SERVER_DATA_PARSER_CONTROL_ENDOFDATA);
+ } else {
+ if(!msg->haltOutput())
+ {
+ msg->console()->output(KVI_OUT_LINKS,__tr2qs("End of LINKS"));
+ }
+ }
+}
+
+void KviServerParser::parseNumericBackFromAway(KviIrcMessage * msg)
+{
+ // 305: RPL_UNAWAY [I,E,U,D]
+ // :prefix 305 <target> :You are no longer away
+ bool bWasAway = msg->connection()->userInfo()->isAway();
+ QString szNickBeforeAway;
+ QString szWText = msg->connection()->decodeText(msg->safeTrailing());
+
+ if(bWasAway)szNickBeforeAway = msg->connection()->userInfo()->nickNameBeforeAway();
+ msg->connection()->changeAwayState(false);
+
+ // trigger the event
+ QString tmp;
+ KviQString::sprintf(tmp,"%u",bWasAway ? (unsigned int)(msg->connection()->userInfo()->awayTime()) : 0);
+ if(KVS_TRIGGER_EVENT_2_HALTED(KviEvent_OnMeBack,msg->console(),tmp,szWText))
+ msg->setHaltOutput();
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolServerRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+
+ if(bWasAway)
+ {
+ int uTimeDiff = bWasAway ? (kvi_unixTime() - msg->connection()->userInfo()->awayTime()) : 0;
+ pOut->output(KVI_OUT_AWAY,__tr2qs("[Leaving away status after %ud %uh %um %us]: %Q"),
+ uTimeDiff / 86400,(uTimeDiff % 86400) / 3600,(uTimeDiff % 3600) / 60,uTimeDiff % 60,
+ &szWText);
+ } else {
+ pOut->output(KVI_OUT_AWAY,__tr2qs("[Leaving away status]: %Q"),&szWText);
+ }
+ }
+
+ if(KVI_OPTION_BOOL(KviOption_boolChangeNickAway) && bWasAway && (!(szNickBeforeAway.isEmpty())))
+ {
+ if(_OUTPUT_PARANOIC)
+ msg->console()->output(KVI_OUT_AWAY,__tr2qs("Restoring pre-away nickname (%Q)"),&szNickBeforeAway);
+ KviQCString szDat = msg->connection()->encodeText(szNickBeforeAway);
+ msg->connection()->sendFmtData("NICK %s",szDat.data());
+ }
+
+}
+
+void KviServerParser::parseNumericAway(KviIrcMessage * msg)
+{
+ // 306: RPL_NOWAWAY [I,E,U,D]
+ // :prefix 305 <target> :You're away man
+ msg->connection()->changeAwayState(true);
+ QString szWText = msg->connection()->decodeText(msg->safeTrailing());
+
+ if(KVS_TRIGGER_EVENT_1_HALTED(KviEvent_OnMeAway,msg->console(),szWText))msg->setHaltOutput();
+
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolServerRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+ pOut->output(KVI_OUT_AWAY,__tr2qs("[Entering away status]: %Q"),&szWText);
+ }
+
+ if(KVI_OPTION_BOOL(KviOption_boolChangeNickAway))
+ {
+ QString nick = msg->connection()->decodeText(msg->safeParam(0));
+ QString szNewNick;
+ if(KVI_OPTION_BOOL(KviOption_boolAutoGeneratedAwayNick))
+ {
+ if(nick.length() > 5)szNewNick = nick.left(5);
+ else szNewNick = nick;
+ szNewNick.append("AWAY");
+ } else {
+ szNewNick = KVI_OPTION_STRING(KviOption_stringCustomAwayNick);
+ szNewNick.replace("%nick%",nick);
+ }
+
+ if(_OUTPUT_PARANOIC)
+ msg->console()->output(KVI_OUT_AWAY,__tr2qs("Setting away nickname (%Q)"),&szNewNick);
+ KviQCString dat = msg->connection()->encodeText(szNewNick);
+ msg->connection()->sendFmtData("NICK %s",dat.data());
+ }
+}
+
+void KviServerParser::parseNumericWatch(KviIrcMessage *msg)
+{
+ // 600: RPL_LOGON
+ // :prefix 600 <target> <nick> <user> <host> <logintime> :logged online
+ // 601: RPL_LOGON
+ // :prefix 601 <target> <nick> <user> <host> <logintime> :logged offline
+ // 602: RPL_WATCHOFF
+ // :prefix 602 <target> <nick> <user> <host> <logintime> :stopped watching
+ // 604: PRL_NOWON
+ // :prefix 604 <target> <nick> <user> <host> <logintime> :is online
+ // 605: PRL_NOWOFF
+ // :prefix 605 <target> <nick> <user> <host> 0 :is offline
+
+ if(msg->connection()->notifyListManager())
+ {
+ if(msg->connection()->notifyListManager()->handleWatchReply(msg))return;
+ }
+ // not handled...output it
+
+// FIXME: #warning "OUTPUT IT! (In a suitable way) (And handle 602 , 603 , 606 and 607 gracefully)"
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolServerRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+ pOut->output(KVI_OUT_UNHANDLED,
+ "[%s][%s] %s",msg->prefix(),msg->command(),msg->allParams());
+ }
+}
+
+void KviServerParser::parseNumericStats(KviIrcMessage * msg)
+{
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = (KviWindow *)(msg->console());
+ if(msg->paramCount() > 2)
+ {
+ KviStr szParms;
+ KviStr *p = msg->firstParam();
+ for(p = msg->nextParam();p;p = msg->nextParam())
+ {
+ if(szParms.hasData())szParms.append(' ');
+ szParms.append(*p);
+ }
+ pOut->outputNoFmt(KVI_OUT_STATS,msg->connection()->decodeText(szParms).utf8().data());
+ } else {
+ pOut->outputNoFmt(KVI_OUT_STATS,msg->connection()->decodeText(msg->safeTrailing()).utf8().data());
+ }
+ }
+}
+
+void KviServerParser::parseNumericServerAdminInfoTitle(KviIrcMessage * msg)
+{
+ //RPL_ADMINME 256
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = (KviWindow *)(msg->console());
+ pOut->outputNoFmt(KVI_OUT_SERVERINFO,msg->connection()->decodeText(msg->safeTrailing()).utf8().data());
+ }
+}
+void KviServerParser::parseNumericServerAdminInfoServerName(KviIrcMessage * msg)
+{
+ //RPL_ADMINLOC1 257
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = (KviWindow *)(msg->console());
+ QString szInfo = msg->connection()->decodeText(msg->safeTrailing());
+ pOut->output(KVI_OUT_SERVERINFO,__tr2qs("%c\r!s\r%s\r%c's server info: %s"),KVI_TEXT_BOLD,msg->prefix(),KVI_TEXT_BOLD,szInfo.utf8().data());
+ }
+}
+
+void KviServerParser::parseNumericServerAdminInfoAdminName(KviIrcMessage * msg)
+{
+ //RPL_ADMINLOC2 258
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = (KviWindow *)(msg->console());
+ QString szInfo = msg->connection()->decodeText(msg->safeTrailing());
+ pOut->output(KVI_OUT_SERVERINFO,__tr2qs("%c\r!s\r%s\r%c's administrator is %s"),KVI_TEXT_BOLD,msg->prefix(),KVI_TEXT_BOLD,szInfo.utf8().data());
+ }
+}
+
+void KviServerParser::parseNumericServerAdminInfoAdminContact(KviIrcMessage * msg)
+{
+ //RPL_ADMINEMAIL 259
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = (KviWindow *)(msg->console());
+ QString szInfo = msg->connection()->decodeText(msg->safeTrailing());
+ pOut->output(KVI_OUT_SERVERINFO,__tr2qs("%c\r!s\r%s\r%c's contact adress is %s"),KVI_TEXT_BOLD,msg->prefix(),KVI_TEXT_BOLD,szInfo.utf8().data());
+ }
+}
+
+void KviServerParser::parseNumericCommandSyntax(KviIrcMessage * msg)
+{
+ //RPL_COMMANDSYNTAX 334
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = (KviWindow *)(msg->console());
+ pOut->outputNoFmt(KVI_OUT_STATS,msg->connection()->decodeText(msg->safeTrailing()));
+ }
+}
+
+void KviServerParser::parseNumericInviting(KviIrcMessage * msg)
+{
+ //RPL_INVITING 341
+ if(!msg->haltOutput())
+ {
+ QString szWho = msg->connection()->decodeText(msg->safeParam(0));
+ QString szTarget = msg->connection()->decodeText(msg->safeParam(1));
+ QString szChan = msg->connection()->decodeText(msg->safeParam(2));
+ KviChannel * chan = msg->connection()->findChannel(szChan);
+ if(chan)
+ {
+ chan->output(KVI_OUT_INVITE,__tr2qs("\r!n\r%Q\r invited %Q into channel %Q"),&szWho,&szTarget,&szChan);
+ } else {
+ KviWindow * pOut = (KviWindow *)(msg->console());
+ pOut->output(KVI_OUT_INVITE,__tr2qs("\r!n\r%Q\r invited %Q into channel %Q"),&szWho,&szTarget,&szChan);
+ }
+ }
+}
+
+void KviServerParser::parseNumericInfo(KviIrcMessage * msg)
+{
+ //RPL_INFO 371
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = (KviWindow *)(msg->console());
+ QString szInfo = msg->connection()->decodeText(msg->safeTrailing());
+ pOut->outputNoFmt(KVI_OUT_SERVERINFO,szInfo);
+ }
+}
+
+void KviServerParser::parseNumericInfoStart(KviIrcMessage * msg)
+{
+ //RPL_INFOSTART 373
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = (KviWindow *)(msg->console());
+ pOut->output(KVI_OUT_SERVERINFO,__tr2qs("%c\r!s\r%s\r%c's information:"),KVI_TEXT_BOLD,msg->prefix(),KVI_TEXT_BOLD);
+ }
+}
+
+void KviServerParser::parseNumericInfoEnd(KviIrcMessage * msg)
+{
+ //RPL_ENDOFINFO 374
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = (KviWindow *)(msg->console());
+ pOut->output(KVI_OUT_SERVERINFO,__tr2qs("End of %c\r!s\r%s\r%c's information"),KVI_TEXT_BOLD,msg->prefix(),KVI_TEXT_BOLD);
+ }
+}
+
+void KviServerParser::parseNumericTime(KviIrcMessage * msg)
+{
+ //RPL_TIME 391
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = (KviWindow *)(msg->console());
+ QString szInfo = msg->connection()->decodeText(msg->safeTrailing());
+ pOut->output(KVI_OUT_SERVERINFO,__tr2qs("%c\r!s\r%s\r%c's time is %Q"),KVI_TEXT_BOLD,msg->prefix(),KVI_TEXT_BOLD,&szInfo);
+ }
+}
+
+void KviServerParser::parseNumericNoSuchServer(KviIrcMessage * msg)
+{
+ //ERR_NOSUCHSERVER 402
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = (KviWindow *)(msg->console());
+ QString szWhat = msg->connection()->decodeText(msg->safeParam(1));
+ pOut->output(KVI_OUT_GENERICERROR,__tr2qs("%Q: no such server"),&szWhat);
+ }
+}
+
+void KviServerParser::parseNumericNoSuchChannel(KviIrcMessage * msg)
+{
+ // ERR_NOSUCHCHANNEL 403
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = (KviWindow *)(msg->console());
+ QString szWhat = msg->connection()->decodeText(msg->safeParam(1));
+ pOut->output(KVI_OUT_GENERICERROR,__tr2qs("%Q: no such channel"),&szWhat);
+ }
+}
+
+void KviServerParser::parseNumericCannotSendColor(KviIrcMessage * msg)
+{
+ // ERR_NOCOLORSONCHAN 408
+ if(!msg->haltOutput())
+ {
+ QString szChan = msg->connection()->decodeText(msg->safeParam(1));
+ QString szInfo = msg->connection()->decodeText(msg->safeTrailing());
+ KviChannel * chan = msg->connection()->findChannel(szChan);
+ if(chan)
+ {
+ chan->output(KVI_OUT_GENERICERROR,__tr2qs("Cannot sent to channel: %Q"),&szInfo);
+ } else {
+ KviWindow * pOut = (KviWindow *)(msg->console());
+ pOut->output(KVI_OUT_GENERICERROR,__tr2qs("Cannot sent text to channel %Q: %Q"),&szChan,&szInfo);
+ }
+ }
+}
+
+void KviServerParser::parseNumericCannotSend(KviIrcMessage * msg)
+{
+ // ERR_CANNOTSENDTOCHAN 404
+ if(!msg->haltOutput())
+ {
+ QString szChan = msg->connection()->decodeText(msg->safeParam(1));
+ QString szInfo = msg->connection()->decodeText(msg->safeTrailing());
+ KviChannel * chan = msg->connection()->findChannel(szChan);
+ if(chan)
+ {
+ chan->output(KVI_OUT_GENERICERROR,__tr2qs("Cannot sent to channel"));
+ } else {
+ KviWindow * pOut = (KviWindow *)(msg->console());
+ pOut->output(KVI_OUT_GENERICERROR,__tr2qs("Cannot sent text to channel %Q"),&szChan);
+ }
+ }
+}
+
+
+void KviServerParser::parseNumericCodePageSet(KviIrcMessage *msg)
+{
+ // a nice extension for irc.wenet.ru
+ // 700: RPL_CODEPAGESET
+ // :prefix 700 target <encoding> :is now your translation scheme
+
+ QString encoding = msg->connection()->decodeText(msg->safeParam(1));
+ if(msg->connection()->serverInfo()->supportsCodePages())
+ {
+ if(encoding=="NONE") encoding="KOI8-R"; //RusNet default codepage
+ msg->console()->output(KVI_OUT_TEXTENCODING,__tr2qs("Your encoding is now %Q"),&encoding);
+ msg->console()->setTextEncoding(encoding);
+ msg->connection()->setEncoding(encoding);
+ } else {
+ QString szMe = msg->connection()->decodeText(msg->safeParam(0));
+ if( (szMe==msg->connection()->currentNickName() || szMe == "*" ) //fix for pre-login codepage message
+ && KviLocale::codecForName(encoding.utf8().data()))
+ {
+ msg->console()->output(KVI_OUT_TEXTENCODING,__tr2qs("Your encoding is now %Q"),&encoding);
+ msg->console()->setTextEncoding(encoding);
+ msg->connection()->setEncoding(encoding);
+ } else if(!msg->haltOutput()) // simply unhandled
+ {
+ QString szWText = msg->connection()->decodeText(msg->allParams());
+ msg->connection()->console()->output(KVI_OUT_UNHANDLED,
+ "[%s][%s] %Q",msg->prefix(),msg->command(),&szWText);
+ }
+ }
+}
+
+void KviServerParser::parseNumericCodePageScheme(KviIrcMessage *msg)
+{
+ // a nice extension for irc.wenet.ru
+ // 703: RPL_WHOISSCHEME
+ // :prefix 703 <mynick> <nick> <encoding> :translation scheme
+
+ msg->connection()->stateData()->setLastReceivedWhoisReply(kvi_unixTime());
+
+ if(msg->connection()->serverInfo()->supportsCodePages())
+ {
+ QString szNick = msg->connection()->decodeText(msg->safeParam(1));
+ QString szCodepage = msg->connection()->decodeText(msg->safeParam(2));
+
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolWhoisRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+ QString szWText = pOut->decodeText(msg->safeTrailing());
+ pOut->output(
+ KVI_OUT_WHOISOTHER,__tr2qs("%c\r!n\r%Q\r%c's codepage is %Q: %Q"),KVI_TEXT_BOLD,
+ &szNick,KVI_TEXT_BOLD,&szCodepage,&szWText);
+ }
+ } else {
+ // simply unhandled
+ if(!msg->haltOutput())
+ {
+ QString szWText = msg->connection()->decodeText(msg->allParams());
+ msg->connection()->console()->output(KVI_OUT_UNHANDLED,
+ "[%s][%s] %Q",msg->prefix(),msg->command(),&szWText);
+ }
+ }
+}
+
+void KviServerParser::parseNumericUserMode(KviIrcMessage *msg)
+{
+ // 321: RPL_UMODEIS [I,E,U,D]
+ // :prefix 221 <target> <modeflags>
+ parseUserMode(msg,msg->safeParam(1));
+
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolServerRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+ pOut->output(KVI_OUT_MODE,__tr2qs("Your user mode is %s"),msg->safeParam(1));
+ }
+}
+
+void KviServerParser::parseNumericEndOfStats(KviIrcMessage *msg)
+{
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = (KviWindow *)(msg->console());
+ QString szText = msg->connection()->decodeText(msg->safeTrailing());
+ pOut->outputNoFmt(KVI_OUT_STATS, szText);
+ }
+}
diff --git a/src/kvirc/sparser/kvi_sp_tables.cpp b/src/kvirc/sparser/kvi_sp_tables.cpp
new file mode 100644
index 00000000..948a5c0e
--- /dev/null
+++ b/src/kvirc/sparser/kvi_sp_tables.cpp
@@ -0,0 +1,1089 @@
+//
+// File : kvi_sp_tables.cpp
+// Creation date : Sun Jun 30 2000 18:10:19 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#define __KVIRC__
+
+#include "kvi_sparser.h"
+
+// FIXME: #warning "Reorder this table!"
+#define PTM(__m) KVI_PTR2MEMBER(KviServerParser::__m)
+
+KviLiteralMessageParseStruct KviServerParser::m_literalParseProcTable[]=
+{
+ { "PRIVMSG" , PTM(parseLiteralPrivmsg)},
+ { "PING" , PTM(parseLiteralPing) },
+ { "MODE" , PTM(parseLiteralMode) },
+ { "TOPIC" , PTM(parseLiteralTopic) },
+ { "JOIN" , PTM(parseLiteralJoin) },
+ { "PART" , PTM(parseLiteralPart) },
+ { "QUIT" , PTM(parseLiteralQuit) },
+ { "NICK" , PTM(parseLiteralNick) },
+ { "KICK" , PTM(parseLiteralKick) },
+ { "NOTICE" , PTM(parseLiteralNotice) },
+ { "INVITE" , PTM(parseLiteralInvite) },
+ { "WALLOPS" , PTM(parseLiteralWallops)},
+ { "PONG" , PTM(parseLiteralPong) },
+ { "ERROR" , PTM(parseLiteralError) },
+ { 0 , 0 }
+};
+
+// FIXME: #warning "Merge these two tables into one"
+
+KviCtcpMessageParseStruct KviServerParser::m_ctcpRequestParseProcTable[]=
+{
+ { "PING" , PTM(parseCtcpRequestPing) , 0 },
+ { "VERSION" , PTM(parseCtcpRequestVersion) , 0 },
+ { "USERINFO" , PTM(parseCtcpRequestUserinfo) , 0 },
+ { "CLIENTINFO" , PTM(parseCtcpRequestClientinfo) , 0 },
+ { "FINGER" , PTM(parseCtcpRequestFinger) , 0 },
+ { "SOURCE" , PTM(parseCtcpRequestSource) , 0 },
+ { "TIME" , PTM(parseCtcpRequestTime) , 0 },
+ { "ACTION" , PTM(parseCtcpRequestAction) , 0 },
+ { "AVATAR" , PTM(parseCtcpRequestAvatar) , 0 },
+ { "DCC" , PTM(parseCtcpRequestDcc) , 0 },
+ { "TDCC" , PTM(parseCtcpRequestDcc) , 0 },
+ { "XDCC" , PTM(parseCtcpRequestDcc) , 0 },
+ { "PAGE" , PTM(parseCtcpRequestPage) , 0 },
+ { 0 , 0 , 0 }
+};
+
+KviCtcpMessageParseStruct KviServerParser::m_ctcpReplyParseProcTable[]=
+{
+ { "AVATAR" , PTM(parseCtcpReplyAvatar) , 0 },
+ { "ACTION" , PTM(parseCtcpRequestAction) , 0 },
+ { "DCC" , PTM(parseCtcpRequestDcc) , 0 },
+ { "TDCC" , PTM(parseCtcpRequestDcc) , 0 },
+ { "XDCC" , PTM(parseCtcpRequestDcc) , 0 },
+ { "VERSION" , PTM(parseCtcpReplyGeneric) , 0 },
+ { "USERINFO" , PTM(parseCtcpReplyUserinfo) , 0 },
+ { "CLIENTINFO" , PTM(parseCtcpReplyGeneric) , 0 },
+ { "FINGER" , PTM(parseCtcpReplyGeneric) , 0 },
+ { "TIME" , PTM(parseCtcpReplyGeneric) , 0 },
+ { "SOURCE" , PTM(parseCtcpReplyGeneric) , 0 },
+ { "PING" , PTM(parseCtcpReplyPing) , 0 },
+ { "PAGE" , PTM(parseCtcpReplyGeneric) , 0 },
+ { "LAGCHECK" , PTM(parseCtcpReplyLagcheck) , KVI_CTCP_MESSAGE_PARSE_TRIGGERNOEVENT },
+ { 0 , 0 , 0 }
+};
+
+messageParseProc KviServerParser::m_numericParseProcTable[1000]=
+{
+ 0, // 000
+ PTM(parseNumeric001) , // 001 RPL_WELCOME
+ PTM(parseNumeric002) , // 002 RPL_YOURHOST
+ PTM(parseNumeric003) , // 003 RPL_CREATED
+ PTM(parseNumeric004) , // 004 RPL_MYINFO
+ PTM(parseNumeric005) , // 005 RPL_BOUNCE, RPL_PROTOCTL
+ 0, // 006
+ 0, // 007
+ 0, // 008
+ 0, // 009
+ 0, // 010
+ 0, // 011
+ 0, // 012
+ 0, // 013
+ 0, // 014
+ 0, // 015
+ 0, // 016
+ 0, // 017
+ 0, // 018
+ 0, // 019
+ PTM(parseNumeric020) , // 020
+ 0, // 021
+ 0, // 022
+ 0, // 023
+ 0, // 024
+ 0, // 025
+ 0, // 026
+ 0, // 027
+ 0, // 028
+ 0, // 029
+ 0, // 030
+ 0, // 031
+ 0, // 032
+ 0, // 033
+ 0, // 034
+ 0, // 035
+ 0, // 036
+ 0, // 037
+ 0, // 038
+ 0, // 039
+ 0, // 040
+ 0, // 041
+ 0, // 042
+ 0, // 043
+ 0, // 044
+ 0, // 045
+ 0, // 046
+ 0, // 047
+ 0, // 048
+ 0, // 049
+ 0, // 050
+ 0, // 051
+ 0, // 052
+ 0, // 053
+ 0, // 054
+ 0, // 055
+ 0, // 056
+ 0, // 057
+ 0, // 058
+ 0, // 059
+ 0, // 060
+ 0, // 061
+ 0, // 062
+ 0, // 063
+ 0, // 064
+ 0, // 065
+ 0, // 066
+ 0, // 067
+ 0, // 068
+ 0, // 069
+ 0, // 070
+ 0, // 071
+ 0, // 072
+ 0, // 073
+ 0, // 074
+ 0, // 075
+ 0, // 076
+ 0, // 077
+ 0, // 078
+ 0, // 079
+ 0, // 080
+ 0, // 081
+ 0, // 082
+ 0, // 083
+ 0, // 084
+ 0, // 085
+ 0, // 086
+ 0, // 087
+ 0, // 088
+ 0, // 089
+ 0, // 090
+ 0, // 091
+ 0, // 092
+ 0, // 093
+ 0, // 094
+ 0, // 095
+ 0, // 096
+ 0, // 097
+ 0, // 098
+ 0, // 099
+ 0, // 100
+ 0, // 101
+ 0, // 102
+ 0, // 103
+ 0, // 104
+ 0, // 105
+ 0, // 106
+ 0, // 107
+ 0, // 108
+ 0, // 109
+ 0, // 110
+ 0, // 111
+ 0, // 112
+ 0, // 113
+ 0, // 114
+ 0, // 115
+ 0, // 116
+ 0, // 117
+ 0, // 118
+ 0, // 119
+ 0, // 120
+ 0, // 121
+ 0, // 122
+ 0, // 123
+ 0, // 124
+ 0, // 125
+ 0, // 126
+ 0, // 127
+ 0, // 128
+ 0, // 129
+ 0, // 130
+ 0, // 131
+ 0, // 132
+ 0, // 133
+ 0, // 134
+ 0, // 135
+ 0, // 136
+ 0, // 137
+ 0, // 138
+ 0, // 139
+ 0, // 140
+ 0, // 141
+ 0, // 142
+ 0, // 143
+ 0, // 144
+ 0, // 145
+ 0, // 146
+ 0, // 147
+ 0, // 148
+ 0, // 149
+ 0, // 150
+ 0, // 151
+ 0, // 152
+ 0, // 153
+ 0, // 154
+ 0, // 155
+ 0, // 156
+ 0, // 157
+ 0, // 158
+ 0, // 159
+ 0, // 160
+ 0, // 161
+ 0, // 162
+ 0, // 163
+ 0, // 164
+ 0, // 165
+ 0, // 166
+ 0, // 167
+ 0, // 168
+ 0, // 169
+ 0, // 170
+ 0, // 171
+ 0, // 172
+ 0, // 173
+ 0, // 174
+ 0, // 175
+ 0, // 176
+ 0, // 177
+ 0, // 178
+ 0, // 179
+ 0, // 180
+ 0, // 181
+ 0, // 182
+ 0, // 183
+ 0, // 184
+ 0, // 185
+ 0, // 186
+ 0, // 187
+ 0, // 188
+ 0, // 189
+ 0, // 190
+ 0, // 191
+ 0, // 192
+ 0, // 193
+ 0, // 194
+ 0, // 195
+ 0, // 196
+ 0, // 197
+ 0, // 198
+ 0, // 199
+ 0, // 200
+ 0, // 201
+ 0, // 202
+ 0, // 203
+ 0, // 204
+ 0, // 205
+ 0, // 206
+ 0, // 207
+ 0, // 208
+ 0, // 209
+ 0, // 210
+ 0, // 211
+ 0, // 212
+ 0, // 213
+ 0, // 214
+ 0, // 215
+ 0, // 216
+ 0, // 217
+ 0, // 218
+ PTM(parseNumericEndOfStats), // 219 RPL_ENDOFSTATS
+ 0, // 220
+ PTM(parseNumericUserMode) , // 221 RPL_UMODEIS
+ PTM(parseNumericCodePageSet), // 222 RusNet Codepage set
+ 0, // 223
+ 0, // 224
+ 0, // 225
+ 0, // 226
+ 0, // 227
+ 0, // 228
+ 0, // 229
+ 0, // 230
+ 0, // 231
+ 0, // 232
+ 0, // 233
+ 0, // 234
+ 0, // 235
+ 0, // 236
+ 0, // 237
+ 0, // 238
+ PTM(parseNumericStats) , // 239 RPL_STATSIAUTH
+ PTM(parseNumericStats) , // 240 RPL_STATSVLINE
+ PTM(parseNumericStats) , // 241 RPL_STATSLLINE
+ PTM(parseNumericStats) , // 242 RPL_STATSUPTIME
+ PTM(parseNumericStats) , // 243 RPL_STATSOLINE
+ PTM(parseNumericStats) , // 244 RPL_STATSHLINE
+ PTM(parseNumericStats) , // 245 RPL_STATSSLINE
+ PTM(parseNumericStats) , // 246 RPL_STATSPING RPL_STATSTLINE
+ PTM(parseNumericStats) , // 247 RPL_STATSBLINE_I RPL_STATSGLINE RPL_STATSXLINE
+ PTM(parseNumericStats) , // 248 RPL_STATSDEFINE RPL_STATSULINE
+ PTM(parseNumericStats) , // 249 RPL_STATSDEBUG
+ PTM(parseNumericStats) , // 250 RPL_STATSCONN RPL_STATSDLINE_I
+ PTM(parseNumericStats) , // 251 RPL_LUSERCLIENT
+ PTM(parseNumericStats) , // 252 RPL_LUSEROP
+ PTM(parseNumericStats) , // 253 RPL_LUSERUNKNOWN
+ PTM(parseNumericStats) , // 254 RPL_LUSERCHANNELS
+ PTM(parseNumericStats) , // 255 RPL_LUSERME
+ PTM(parseNumericServerAdminInfoTitle) , // 256 RPL_ADMINME
+ PTM(parseNumericServerAdminInfoServerName) , // 257 RPL_ADMINLOC1
+ PTM(parseNumericServerAdminInfoAdminName) , // 258 RPL_ADMINLOC2
+ PTM(parseNumericServerAdminInfoAdminContact) , // 259 RPL_ADMINEMAIL
+ 0, // 260
+ 0, // 261
+ 0, // 262
+ 0, // 263
+ 0, // 264
+ PTM(parseNumericStats) , // 265 RPL_LOCALUSERS
+ PTM(parseNumericStats) , // 266 RPL_GLOBALUSERS
+ PTM(parseNumericStats) , // 267 RPL_SHAREDUSERS
+ 0, // 268
+ 0, // 269
+ 0, // 270
+ 0, // 271
+ 0, // 272
+ 0, // 273
+ 0, // 274
+ PTM(parseNumericWhoisOther) , // 275 RPL_WHOISSSL
+ 0, // 276
+ 0, // 277
+ 0, // 278
+ 0, // 279
+ 0, // 280
+ 0, // 281
+ 0, // 282
+ 0, // 283
+ 0, // 284
+ 0, // 285
+ 0, // 286
+ 0, // 287
+ 0, // 288
+ 0, // 289
+ 0, // 290
+ 0, // 291
+ 0, // 292
+ 0, // 293
+ 0, // 294
+ 0, // 295
+ 0, // 296
+ 0, // 297
+ 0, // 298
+ 0, // 299
+ 0, // 300
+ PTM(parseNumericWhoisAway) , // 301
+ PTM(parseNumericUserhost) , // 302 RPL_USERHOST
+ PTM(parseNumericIsOn) , // 303 RPL_ISON
+ 0, // 304
+ PTM(parseNumericBackFromAway) , // 305 RPL_UNAWAY
+ PTM(parseNumericAway) , // 306 RPL_NOWAWAY
+ PTM(parseNumericWhoisOther) , // 307 RPL_WHOISREGNICK
+ PTM(parseNumericWhoisOther) , // 308 RPL_WHOISADMIN
+ PTM(parseNumericWhoisOther) , // 309 RPL_WHOISSADMIN
+ PTM(parseNumericWhoisOther) , // 310 RPL_WHOISHELPOP
+ PTM(parseNumericWhoisUser) , // 311 RPL_WHOISUSER
+ PTM(parseNumericWhoisServer) , // 312 RPL_WHOISSERVER
+ PTM(parseNumericWhoisOther) , // 313 RPL_WHOISOPERATOR
+ PTM(parseNumericWhowasUser) , // 314 RPL_WHOWASUSER
+ PTM(parseNumericEndOfWho) , // 315 RPL_ENDOFWHO
+ PTM(parseNumericWhoisOther) , // 316 RPL_WHOISCHANOP
+ PTM(parseNumericWhoisIdle) , // 317 RPL_WHOISIDLE
+ PTM(parseNumericEndOfWhois) , // 318 RPL_ENDOFWHOIS
+ PTM(parseNumericWhoisChannels) , // 319 RPL_WHOISCHANNELS
+ PTM(parseNumericWhoisOther) , // 320 RPL_WHOISIDENTIFIED
+ PTM(parseNumericListStart) , // 321 RPL_LISTSTART
+ PTM(parseNumericList) , // 322 RPL_LIST
+ PTM(parseNumericListEnd) , // 323 RPL_LISTEND
+ PTM(parseNumericChannelModeIs) , // 324 RPL_CHANNELMODEIS
+ 0, // 325
+ 0, // 326
+ 0, // 327
+ 0, // 328
+ PTM(parseNumericCreationTime) , // 329 RPL_CREATIONTIME
+ PTM(parseNumericWhoisAuth) , // 330 RPL_WHOISAUTH
+ PTM(parseNumericNoTopic) , // 331 RPL_NOTOPIC
+ PTM(parseNumericTopic) , // 332 RPL_TOPIC
+ PTM(parseNumericTopicWhoTime) , // 333 RPL_TOPICWHOTIME
+ PTM(parseNumericCommandSyntax) , // 334 RPL_COMMANDSYNTAX
+ 0, // 335
+ 0, // 336
+ 0, // 337
+ PTM(parseNumericWhoisOther), // 338 RPL_WHOISACTUALLY
+ PTM(parseNumericWhoisOther), // 339
+ 0, // 340
+ PTM(parseNumericInviting) , // 351 RPL_INVITING
+ 0, // 342
+ 0, // 343
+ 0, // 344
+ 0, // 345
+ PTM(parseNumericInviteList) , // 346 RPL_INVITELIST
+ PTM(parseNumericEndOfInviteList) , // 347 RPL_ENDOFINVITELIST
+ PTM(parseNumericExceptList) , // 348 RPL_EXCEPTLIST
+ PTM(parseNumericEndOfExceptList) , // 349 RPL_ENDOFEXCEPTLIST
+ 0, // 350
+ 0, // 351
+ PTM(parseNumericWhoReply) , // 352 RPL_WHOREPLY
+ PTM(parseNumericNames) , // 353 RPL_NAMREPLY
+ 0, // 354
+ 0, // 355
+ 0, // 356
+ 0, // 357
+ 0, // 358
+ 0, // 359
+ 0, // 360
+ 0, // 361
+ 0, // 362
+ 0, // 363
+ PTM(parseNumericLinks) , // 364 RPL_LINKS
+ PTM(parseNumericEndOfLinks) , // 365 RPL_ENDOFLINKS
+ PTM(parseNumericEndOfNames) , // 366 RPL_ENDOFNAMES
+ PTM(parseNumericBanList) , // 367 RPL_BANLIST
+ PTM(parseNumericEndOfBanList) , // 368 RPL_ENDOFBANLIST
+ PTM(parseNumericEndOfWhowas) , // 369 RPL_ENDOFWHOWAS
+ 0, // 370
+ PTM(parseNumericInfo) , // 371 RPL_INFO
+ PTM(parseNumericMotd) , // 372 RPL_MOTD
+ PTM(parseNumericInfoStart) , // 373 RPL_INFOSTART
+ PTM(parseNumericInfoEnd) , // 374 RPL_ENDOFINFO
+ PTM(parseNumericMotd) , // 375 RPL_MOTDSTART
+ PTM(parseNumericMotd) , // 376 RPL_ENDOFMOTD
+ PTM(parseNumericMotd) , // 377 RPL_MOTD2
+ PTM(parseNumericMotd) , // 378 RPL_MOTD3
+ 0, // 379
+ 0, // 380
+ 0, // 381
+ 0, // 382
+ 0, // 383
+ 0, // 384
+ 0, // 385
+ 0, // 386
+ 0, // 387
+ 0, // 388
+ 0, // 389
+ 0, // 390
+ PTM(parseNumericTime) , // 391 RPL_TIME
+ 0, // 392
+ 0, // 393
+ 0, // 394
+ 0, // 395
+ 0, // 396
+ 0, // 397
+ 0, // 398
+ 0, // 399
+ 0, // 400
+ PTM(parseNumericNoSuchNick) , // 401 ERR_NOSUCHNICK
+ PTM(parseNumericNoSuchServer) , // 402 ERR_NOSUCHSERVER
+ PTM(parseNumericNoSuchChannel) , // 403 ERR_NOSUCHCHANNEL
+ PTM(parseNumericCannotSend) , // 404 ERR_CANNOTSENDTOCHAN
+ 0, // 405
+ PTM(parseNumericNoSuchNick) , // 406 ERR_WASNOSUCHNICK
+ 0, // 407
+ PTM(parseNumericCannotSendColor) , // 408 ERR_NOCOLORSONCHAN
+ 0, // 409
+ 0, // 410
+ 0, // 411
+ 0, // 412
+ 0, // 413
+ 0, // 414
+ 0, // 415
+ 0, // 416
+ 0, // 417
+ 0, // 418
+ 0, // 419
+ 0, // 420
+ 0, // 421
+ 0, // 422
+ 0, // 423
+ 0, // 424
+ 0, // 425
+ 0, // 426
+ 0, // 427
+ 0, // 428
+ 0, // 429
+ 0, // 430
+ 0, // 431
+ PTM(parseNumericNicknameProblem) , // 432 ERR_ERRONEUSNICKNAME
+ PTM(parseNumericNicknameProblem) , // 433 ERR_NICKNAMEINUSE
+ 0, // 434
+ 0, // 435
+ 0, // 436
+ PTM(parseNumericUnavailResource) , // 437 ERR_UNAVAILRESOURCE
+ 0, // 438
+ 0, // 439
+ 0, // 440
+ 0, // 441
+ 0, // 442
+ 0, // 443
+ 0, // 444
+ 0, // 445
+ 0, // 446
+ 0, // 447
+ 0, // 448
+ 0, // 449
+ 0, // 450
+ 0, // 451
+ 0, // 452
+ 0, // 453
+ 0, // 454
+ 0, // 455
+ 0, // 456
+ 0, // 457
+ 0, // 458
+ 0, // 459
+ 0, // 460
+ 0, // 461
+ 0, // 462
+ 0, // 463
+ 0, // 464
+ 0, // 465
+ 0, // 466
+ PTM(otherChannelError), // 467 ERR_KEYSET
+ 0, // 468
+ 0, // 469
+ 0, // 470
+ PTM(parseNumericCantJoinChannel) , // 471 ERR_CHANNELISFULL
+ PTM(otherChannelError), // 472 ERR_UNKNOWNMODE
+ PTM(parseNumericCantJoinChannel) , // 473 ERR_INVITEONLYCHAN
+ PTM(parseNumericCantJoinChannel) , // 474 ERR_BANNEDFROMCHAN
+ PTM(parseNumericCantJoinChannel) , // 475 ERR_BADCHANNELKEY
+ 0, // 476
+ PTM(parseChannelHelp), // 477 RPL_CHANNELHELP
+ 0, // 478
+ 0, // 479
+ 0, // 480
+ 0, // 481
+ PTM(otherChannelError), // 482 ERR_CHANOPRIVSNEEDED
+ 0, // 483
+ 0, // 484
+ 0, // 485
+ 0, // 486
+ 0, // 487
+ 0, // 488
+ 0, // 489
+ 0, // 490
+ 0, // 491
+ 0, // 492
+ 0, // 493
+ 0, // 494
+ 0, // 495
+ 0, // 496
+ 0, // 497
+ 0, // 498
+ 0, // 499
+ 0, // 500
+ 0, // 501
+ 0, // 502
+ 0, // 503
+ 0, // 504
+ 0, // 505
+ 0, // 506
+ 0, // 507
+ 0, // 508
+ 0, // 509
+ 0, // 510
+ 0, // 511
+ 0, // 512
+ 0, // 513
+ 0, // 514
+ 0, // 515
+ 0, // 516
+ 0, // 517
+ 0, // 518
+ 0, // 519
+ 0, // 520
+ 0, // 521
+ 0, // 522
+ 0, // 523
+ 0, // 524
+ 0, // 525
+ 0, // 526
+ 0, // 527
+ 0, // 528
+ 0, // 529
+ 0, // 530
+ 0, // 531
+ 0, // 532
+ 0, // 533
+ 0, // 534
+ 0, // 535
+ 0, // 536
+ 0, // 537
+ 0, // 538
+ 0, // 539
+ 0, // 540
+ 0, // 541
+ 0, // 542
+ 0, // 543
+ 0, // 544
+ 0, // 545
+ 0, // 546
+ 0, // 547
+ 0, // 548
+ 0, // 549
+ 0, // 550
+ 0, // 551
+ 0, // 552
+ 0, // 553
+ 0, // 554
+ 0, // 555
+ 0, // 556
+ 0, // 557
+ 0, // 558
+ 0, // 559
+ 0, // 560
+ 0, // 561
+ 0, // 562
+ 0, // 563
+ 0, // 564
+ 0, // 565
+ 0, // 566
+ 0, // 567
+ 0, // 568
+ 0, // 569
+ 0, // 570
+ 0, // 571
+ 0, // 572
+ 0, // 573
+ 0, // 574
+ 0, // 575
+ 0, // 576
+ 0, // 577
+ 0, // 578
+ 0, // 579
+ 0, // 580
+ 0, // 581
+ 0, // 582
+ 0, // 583
+ 0, // 584
+ 0, // 585
+ 0, // 586
+ 0, // 587
+ 0, // 588
+ 0, // 589
+ 0, // 590
+ 0, // 591
+ 0, // 592
+ 0, // 593
+ 0, // 594
+ 0, // 595
+ 0, // 596
+ 0, // 597
+ 0, // 598
+ 0, // 599
+ PTM(parseNumericWatch) , // 600 RPL_LOGON
+ PTM(parseNumericWatch) , // 601 RPL_LOGOFF
+ PTM(parseNumericWatch) , // 602 RPL_WATCHOFF
+ 0, // 603 RPL_WATCHSTAT
+ PTM(parseNumericWatch) , // 604 RPL_NOWON
+ PTM(parseNumericWatch) , // 605 RPL_NOWOFF
+ 0, // 606 RPL_WATCHLIST
+ 0, // 607 RPL_ENDOFWATCH
+ 0, // 608
+ 0, // 609
+ 0, // 610
+ 0, // 611
+ 0, // 612
+ 0, // 613
+ 0, // 614
+ 0, // 615
+ 0, // 616
+ 0, // 617
+ 0, // 618
+ 0, // 619
+ 0, // 620
+ 0, // 621
+ 0, // 622
+ 0, // 623
+ 0, // 624
+ 0, // 625
+ 0, // 626
+ 0, // 627
+ 0, // 628
+ 0, // 629
+ 0, // 630
+ 0, // 631
+ 0, // 632
+ 0, // 633
+ 0, // 634
+ 0, // 635
+ 0, // 636
+ 0, // 637
+ 0, // 638
+ 0, // 639
+ 0, // 640
+ 0, // 641
+ 0, // 642
+ 0, // 643
+ 0, // 644
+ 0, // 645
+ 0, // 646
+ 0, // 647
+ 0, // 648
+ 0, // 649
+ 0, // 650
+ 0, // 651
+ 0, // 652
+ 0, // 653
+ 0, // 654
+ 0, // 655
+ 0, // 656
+ 0, // 657
+ 0, // 658
+ 0, // 659
+ 0, // 660
+ 0, // 661
+ 0, // 662
+ 0, // 663
+ 0, // 664
+ 0, // 665
+ 0, // 666
+ 0, // 667
+ 0, // 668
+ 0, // 669
+ 0, // 670
+ 0, // 671
+ 0, // 672
+ 0, // 673
+ 0, // 674
+ 0, // 675
+ 0, // 676
+ 0, // 677
+ 0, // 678
+ 0, // 679
+ 0, // 680
+ 0, // 681
+ 0, // 682
+ 0, // 683
+ 0, // 684
+ 0, // 685
+ 0, // 686
+ 0, // 687
+ 0, // 688
+ 0, // 689
+ 0, // 690
+ 0, // 691
+ 0, // 692
+ 0, // 693
+ 0, // 694
+ 0, // 695
+ 0, // 696
+ 0, // 697
+ 0, // 698
+ 0, // 699
+ PTM(parseNumericCodePageSet) , // 700 RPL_CODEPAGESET
+ 0, // 701
+ 0, // 702
+ PTM(parseNumericCodePageScheme) , // 703 RPL_WHOISSCHEME
+ PTM(parseCommandSyntaxHelp), // 704 RPL_COMMANDSYNTAX
+ PTM(parseCommandHelp), // 705 RPL_COMMANDHELP
+ PTM(parseCommandEndOfHelp), // 706 RPL_ENDOFCOMMANDHELP
+ 0, // 707
+ 0, // 708
+ 0, // 709
+ 0, // 710
+ 0, // 711
+ 0, // 712
+ 0, // 713
+ 0, // 714
+ 0, // 715
+ 0, // 716
+ 0, // 717
+ 0, // 718
+ 0, // 719
+ 0, // 720
+ 0, // 721
+ 0, // 722
+ 0, // 723
+ 0, // 724
+ 0, // 725
+ 0, // 726
+ 0, // 727
+ 0, // 728
+ 0, // 729
+ 0, // 730
+ 0, // 731
+ 0, // 732
+ 0, // 733
+ 0, // 734
+ 0, // 735
+ 0, // 736
+ 0, // 737
+ 0, // 738
+ 0, // 739
+ 0, // 740
+ 0, // 741
+ 0, // 742
+ 0, // 743
+ 0, // 744
+ 0, // 745
+ 0, // 746
+ 0, // 747
+ 0, // 748
+ 0, // 749
+ 0, // 750
+ 0, // 751
+ 0, // 752
+ 0, // 753
+ 0, // 754
+ 0, // 755
+ 0, // 756
+ 0, // 757
+ 0, // 758
+ 0, // 759
+ 0, // 760
+ 0, // 761
+ 0, // 762
+ 0, // 763
+ 0, // 764
+ 0, // 765
+ 0, // 766
+ 0, // 767
+ 0, // 768
+ 0, // 769
+ 0, // 770
+ 0, // 771
+ 0, // 772
+ 0, // 773
+ 0, // 774
+ 0, // 775
+ 0, // 776
+ 0, // 777
+ 0, // 778
+ 0, // 779
+ 0, // 780
+ 0, // 781
+ 0, // 782
+ 0, // 783
+ 0, // 784
+ 0, // 785
+ 0, // 786
+ 0, // 787
+ 0, // 788
+ 0, // 789
+ 0, // 790
+ 0, // 791
+ 0, // 792
+ 0, // 793
+ 0, // 794
+ 0, // 795
+ 0, // 796
+ 0, // 797
+ 0, // 798
+ 0, // 799
+ 0, // 800
+ 0, // 801
+ 0, // 802
+ 0, // 803
+ 0, // 804
+ 0, // 805
+ 0, // 806
+ 0, // 807
+ 0, // 808
+ 0, // 809
+ 0, // 810
+ 0, // 811
+ 0, // 812
+ 0, // 813
+ 0, // 814
+ 0, // 815
+ 0, // 816
+ 0, // 817
+ 0, // 818
+ 0, // 819
+ 0, // 820
+ 0, // 821
+ 0, // 822
+ 0, // 823
+ 0, // 824
+ 0, // 825
+ 0, // 826
+ 0, // 827
+ 0, // 828
+ 0, // 829
+ 0, // 830
+ 0, // 831
+ 0, // 832
+ 0, // 833
+ 0, // 834
+ 0, // 835
+ 0, // 836
+ 0, // 837
+ 0, // 838
+ 0, // 839
+ 0, // 840
+ 0, // 841
+ 0, // 842
+ 0, // 843
+ 0, // 844
+ 0, // 845
+ 0, // 846
+ 0, // 847
+ 0, // 848
+ 0, // 849
+ 0, // 850
+ 0, // 851
+ 0, // 852
+ 0, // 853
+ 0, // 854
+ 0, // 855
+ 0, // 856
+ 0, // 857
+ 0, // 858
+ 0, // 859
+ 0, // 860
+ 0, // 861
+ 0, // 862
+ 0, // 863
+ 0, // 864
+ 0, // 865
+ 0, // 866
+ 0, // 867
+ 0, // 868
+ 0, // 869
+ 0, // 870
+ 0, // 871
+ 0, // 872
+ 0, // 873
+ 0, // 874
+ 0, // 875
+ 0, // 876
+ 0, // 877
+ 0, // 878
+ 0, // 879
+ 0, // 880
+ 0, // 881
+ 0, // 882
+ 0, // 883
+ 0, // 884
+ 0, // 885
+ 0, // 886
+ 0, // 887
+ 0, // 888
+ 0, // 889
+ 0, // 890
+ 0, // 891
+ 0, // 892
+ 0, // 893
+ 0, // 894
+ 0, // 895
+ 0, // 896
+ 0, // 897
+ 0, // 898
+ 0, // 899
+ 0, // 900
+ 0, // 901
+ 0, // 902
+ 0, // 903
+ 0, // 904
+ 0, // 905
+ 0, // 906
+ 0, // 907
+ 0, // 908
+ 0, // 909
+ 0, // 910
+ 0, // 911
+ 0, // 912
+ 0, // 913
+ 0, // 914
+ 0, // 915
+ 0, // 916
+ 0, // 917
+ 0, // 918
+ 0, // 919
+ 0, // 920
+ 0, // 921
+ 0, // 922
+ 0, // 923
+ 0, // 924
+ 0, // 925
+ 0, // 926
+ 0, // 927
+ 0, // 928
+ 0, // 929
+ 0, // 930
+ 0, // 931
+ 0, // 932
+ 0, // 933
+ 0, // 934
+ 0, // 935
+ 0, // 936
+ 0, // 937
+ 0, // 938
+ 0, // 939
+ 0, // 940
+ 0, // 941
+ 0, // 942
+ 0, // 943
+ 0, // 944
+ 0, // 945
+ 0, // 946
+ 0, // 947
+ 0, // 948
+ 0, // 949
+ 0, // 950
+ 0, // 951
+ 0, // 952
+ 0, // 953
+ 0, // 954
+ 0, // 955
+ 0, // 956
+ 0, // 957
+ 0, // 958
+ 0, // 959
+ 0, // 960
+ 0, // 961
+ 0, // 962
+ 0, // 963
+ 0, // 964
+ 0, // 965
+ 0, // 966
+ 0, // 967
+ 0, // 968
+ 0, // 969
+ 0, // 970
+ 0, // 971
+ 0, // 972
+ 0, // 973
+ 0, // 974
+ 0, // 975
+ 0, // 976
+ 0, // 977
+ 0, // 978
+ 0, // 979
+ 0, // 980
+ 0, // 981
+ 0, // 982
+ 0, // 983
+ 0, // 984
+ 0, // 985
+ 0, // 986
+ 0, // 987
+ 0, // 988
+ 0, // 989
+ 0, // 990
+ 0, // 991
+ 0, // 992
+ 0, // 993
+ 0, // 994
+ 0, // 995
+ 0, // 996
+ 0, // 997
+ 0, // 998
+ 0 // 999
+};
diff --git a/src/kvirc/sparser/kvi_sparser.cpp b/src/kvirc/sparser/kvi_sparser.cpp
new file mode 100644
index 00000000..d0b69ea5
--- /dev/null
+++ b/src/kvirc/sparser/kvi_sparser.cpp
@@ -0,0 +1,150 @@
+//=============================================================================
+//
+// File : kvi_sparser.cpp
+// Creation date : Sun Jun 30 2000 03:25:17 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+#define __KVIRC__
+#define _KVI_SPARSER_CPP_
+
+#include "kvi_sparser.h"
+#include "kvi_window.h"
+#include "kvi_out.h"
+#include "kvi_locale.h"
+#include "kvi_ircsocket.h"
+#include "kvi_options.h"
+#include "kvi_kvs_eventmanager.h"
+#include "kvi_kvs_eventtriggers.h"
+#include "kvi_ircconnectionstatedata.h"
+
+KviServerParser * g_pServerParser = 0;
+
+
+KviServerParser::KviServerParser()
+: QObject(0,"server_parser")
+{
+}
+
+KviServerParser::~KviServerParser()
+{
+}
+
+void KviServerParser::parseMessage(const char * message,KviIrcConnection * pConnection)
+{
+ if(*message != 0 )
+ {
+ KviIrcMessage msg(message,pConnection);
+ if(msg.isNumeric())
+ {
+ if(KviKvsEventManager::instance()->hasRawHandlers(msg.numeric()))
+ {
+ KviKvsVariantList parms;
+ parms.append(pConnection->decodeText(msg.safePrefix()));
+ parms.append(pConnection->decodeText(msg.command()));
+
+ for(KviStr * str = msg.firstParam();str;str = msg.nextParam())
+ parms.append(pConnection->console()->decodeText(str->ptr()));
+
+ if(KviKvsEventManager::instance()->triggerRaw(msg.numeric(),pConnection->console(),&parms))
+ msg.setHaltOutput();
+ }
+
+ messageParseProc proc = m_numericParseProcTable[msg.numeric()];
+ if(proc)
+ {
+ (this->*proc)(&msg);
+ if(!msg.unrecognized())return; // parsed
+ } else {
+ // we don't have a proc for this
+
+ // special handling of unknown RPL_WHOIS* messages
+ // if
+ // - we're in the middle of a RPL_WHOIS* sequence (i.e. have received a RPL_WHOIS* message since less than 10 seconds)
+ // - we have not received RPL_ENDOFWHOIS yet (the time of the last RPL_WHOIS* is reset to zero when a RPL_ENDOFWHOIS is received)
+ // - this message is unrecognized and looks like a RPL_WHOIS*
+ // then pass it to the WhoisOther handler.
+ //
+ // Thnx Elephantman :)
+
+ if(msg.paramCount() >= 3) // might look like :prefix RPL_WHOIS* <target> <nick> [?] :<something>
+ {
+ kvi_time_t tNow = kvi_unixTime();
+
+ if((tNow - pConnection->stateData()->lastReceivedWhoisReply()) < 10)
+ {
+ // we're in the middle of a RPL_WHOIS* sequence and haven't
+ // received a RPL_ENDOFWHOIS yet.
+ parseNumericWhoisOther(&msg);
+ if(!msg.unrecognized())return;
+ }
+ }
+ }
+ } else {
+ for(int i=0;m_literalParseProcTable[i].msgName;i++)
+ {
+ if(kvi_strEqualCS(m_literalParseProcTable[i].msgName,msg.command()))
+ {
+ (this->*(m_literalParseProcTable[i].proc))(&msg);
+ if(!msg.unrecognized())return; // parsed
+ }
+ }
+
+
+ if(KviKvsEventManager::instance()->hasAppHandlers(KviEvent_OnUnhandledLiteral))
+ {
+ KviKvsVariantList parms;
+ parms.append(pConnection->decodeText(msg.safePrefix()));
+ parms.append(pConnection->decodeText(msg.command()));
+
+ for(KviStr * str = msg.firstParam();str;str = msg.nextParam())
+ parms.append(pConnection->console()->decodeText(str->ptr()));
+
+ if(KviKvsEventManager::instance()->trigger(KviEvent_OnUnhandledLiteral,pConnection->console(),&parms))
+ msg.setHaltOutput();
+ }
+
+ }
+
+ // unhandled || unrecognized
+ if(!msg.haltOutput() && !_OUTPUT_MUTE)
+ {
+ QString szWText = pConnection->decodeText(msg.allParams());
+ if(msg.unrecognized())
+ {
+ pConnection->console()->output(KVI_OUT_UNRECOGNIZED,
+ __tr2qs("[Server parser]: Encountered problems while parsing the following message:"));
+ pConnection->console()->output(KVI_OUT_UNRECOGNIZED,
+ __tr2qs("[Server parser]: [%s][%s] %Q"),msg.prefix(),msg.command(),&szWText);
+ pConnection->console()->output(KVI_OUT_UNRECOGNIZED,
+ __tr2qs("[Server parser]: %s"),m_szLastParserError.ptr());
+ } else {
+ // ignore spurious CRLF pairs (some servers send them a lot) unless we want PARANOID output
+ if((!msg.isEmpty()) || _OUTPUT_PARANOIC)
+ pConnection->console()->output(KVI_OUT_UNHANDLED,
+ "[%s][%s] %Q",msg.prefix(),msg.command(),&szWText);
+ }
+ }
+ }
+}
+
+
+
+
+#include "kvi_sparser.moc"
diff --git a/src/kvirc/sparser/kvi_sparser.h b/src/kvirc/sparser/kvi_sparser.h
new file mode 100644
index 00000000..72139ed7
--- /dev/null
+++ b/src/kvirc/sparser/kvi_sparser.h
@@ -0,0 +1,268 @@
+#ifndef _KVI_SPARSER_H_
+#define _KVI_SPARSER_H_
+
+//=============================================================================
+//
+// File : kvi_sparser.h
+// Creation date : Sat Jun 29 2000 14:23:11 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "kvi_settings.h"
+
+#include <time.h>
+
+#include <qobject.h>
+#include "kvi_pointerlist.h"
+
+#include "kvi_qstring.h"
+#include "kvi_qcstring.h"
+#include "kvi_console.h"
+
+#include "kvi_ircmessage.h"
+
+class KviWindow;
+class KviChannel;
+class KviServerParser;
+class KviFrame;
+class KviIrcConnection;
+
+
+
+#define UNRECOGNIZED_MESSAGE(_msg,_err) \
+ _msg->setUnrecognized(); \
+ m_szLastParserError = _err;
+
+#define IS_ME(_msg,_nick) KviQString::equalCI(_msg->connection()->currentNickName(),_nick)
+
+typedef void (KviServerParser::*messageParseProc)(KviIrcMessage *);
+
+typedef struct _KviLiteralMessageParseStruct
+{
+ const char * msgName;
+ messageParseProc proc;
+} KviLiteralMessageParseStruct;
+
+class KviIrcMask;
+
+typedef struct _KviCtcpMessage
+{
+ KviIrcMessage * msg;
+ const char * pData;
+ QString szTarget;
+ KviIrcMask * pSource;
+ bool bIgnored;
+ bool bIsFlood;
+ bool bUnknown;
+
+ QString szTag;
+} KviCtcpMessage;
+
+typedef struct _KviDccRequest
+{
+ KviStr szType;
+ KviStr szParam1;
+ KviStr szParam2;
+ KviStr szParam3;
+ KviStr szParam4;
+ KviStr szParam5;
+ bool bIpV6;
+ KviCtcpMessage * ctcpMsg;
+ KviConsole * pConsole;
+} KviDccRequest;
+
+typedef void (KviServerParser::*ctcpParseProc)(KviCtcpMessage *);
+
+#define KVI_CTCP_MESSAGE_PARSE_TRIGGERNOEVENT 1
+
+typedef struct _KviCtcpMessageParseStruct
+{
+ const char * msgName;
+ ctcpParseProc proc;
+ int iFlags;
+} KviCtcpMessageParseStruct;
+
+
+#define EXTERNAL_SERVER_DATA_PARSER_CONTROL_RESET 0
+#define EXTERNAL_SERVER_DATA_PARSER_CONTROL_STARTOFDATA 1
+#define EXTERNAL_SERVER_DATA_PARSER_CONTROL_ENDOFDATA 2
+
+class KVIRC_API KviExternalServerDataParser
+{
+public:
+ KviExternalServerDataParser(){};
+ virtual ~KviExternalServerDataParser(){};
+public:
+ virtual void processData(KviIrcMessage *){};
+ virtual void control(int){};
+ virtual void die(){ delete this; };
+};
+
+
+class KVIRC_API KviServerParser : public QObject
+{
+ Q_OBJECT
+public:
+ KviServerParser();
+ ~KviServerParser();
+private:
+ static messageParseProc m_numericParseProcTable[1000];
+ static KviLiteralMessageParseStruct m_literalParseProcTable[];
+ static KviCtcpMessageParseStruct m_ctcpRequestParseProcTable[];
+ static KviCtcpMessageParseStruct m_ctcpReplyParseProcTable[];
+ KviStr m_szLastParserError;
+
+// KviStr m_szNoAwayNick; //<-- moved to kvi_console.h in KviConnectionInfo
+public:
+ void parseMessage(const char * message,KviIrcConnection *pConnection);
+private:
+ void parseNumeric001(KviIrcMessage *msg);
+ void parseNumeric002(KviIrcMessage *msg);
+ void parseNumeric003(KviIrcMessage *msg);
+ void parseNumeric004(KviIrcMessage *msg);
+ void parseNumeric005(KviIrcMessage *msg);
+
+ void parseNumericMotd(KviIrcMessage *msg);
+ void parseNumericNames(KviIrcMessage *msg);
+ void parseNumericEndOfNames(KviIrcMessage *msg);
+ void parseNumericTopic(KviIrcMessage *msg);
+ void parseNumericNoTopic(KviIrcMessage *msg);
+ void parseNumericTopicWhoTime(KviIrcMessage *msg);
+ void parseNumericChannelModeIs(KviIrcMessage *msg);
+ void parseNumericBanList(KviIrcMessage *msg);
+ void parseNumericEndOfBanList(KviIrcMessage *msg);
+ void parseNumericInviteList(KviIrcMessage *msg);
+ void parseNumericEndOfInviteList(KviIrcMessage *msg);
+ void parseNumericExceptList(KviIrcMessage *msg);
+ void parseNumericEndOfExceptList(KviIrcMessage *msg);
+ void parseNumericWhoReply(KviIrcMessage *msg);
+ void parseNumericEndOfWho(KviIrcMessage *msg);
+ void parseNumericNicknameProblem(KviIrcMessage *msg);
+ void parseNumericWhoisAway(KviIrcMessage *);
+ void parseNumericWhoisUser(KviIrcMessage *msg);
+ void parseNumericWhoisChannels(KviIrcMessage *msg);
+ void parseNumericWhoisIdle(KviIrcMessage *msg);
+ void parseNumericWhoisServer(KviIrcMessage *msg);
+ void parseNumericWhoisOther(KviIrcMessage *msg);
+ void parseNumericWhoisAuth(KviIrcMessage *msg);
+ void parseNumericWhowasUser(KviIrcMessage *msg);
+ void parseNumericEndOfWhois(KviIrcMessage *msg);
+ void parseNumericEndOfWhowas(KviIrcMessage *msg);
+ void parseNumericNoSuchNick(KviIrcMessage *msg);
+ void parseNumericCreationTime(KviIrcMessage *msg);
+ void parseNumericIsOn(KviIrcMessage *msg);
+ void parseNumericUnavailResource(KviIrcMessage *msg);
+ void parseNumericLinks(KviIrcMessage *msg);
+ void parseNumericEndOfLinks(KviIrcMessage *msg);
+ void parseNumericUserhost(KviIrcMessage *msg);
+ void parseLoginNicknameProblem(KviIrcMessage *msg);
+ void parseNumericBackFromAway(KviIrcMessage *);
+ void parseNumericAway(KviIrcMessage *);
+ void parseNumericWatch(KviIrcMessage *msg);
+ void parseNumericList(KviIrcMessage *msg);
+ void parseNumericListStart(KviIrcMessage *msg);
+ void parseNumericListEnd(KviIrcMessage *msg);
+ void parseNumericCantJoinChannel(KviIrcMessage *msg);
+ void parseNumericStats(KviIrcMessage *msg);
+ void parseNumericUserMode(KviIrcMessage * msg);
+ void parseNumericCodePageSet(KviIrcMessage * msg);
+ void parseNumericCodePageScheme(KviIrcMessage * msg);
+ void parseNumeric020(KviIrcMessage *msg);
+ void parseNumericCannotSend(KviIrcMessage *msg);
+ void parseNumericNoSuchChannel(KviIrcMessage *msg);
+ void parseNumericNoSuchServer(KviIrcMessage *msg);
+ void parseNumericTime(KviIrcMessage *msg);
+ void parseNumericInfoEnd(KviIrcMessage *msg);
+ void parseNumericInfoStart(KviIrcMessage *msg);
+ void parseNumericInfo(KviIrcMessage *msg);
+ void parseNumericInviting(KviIrcMessage *msg);
+ void parseNumericCommandSyntax(KviIrcMessage *msg);
+ void parseNumericServerAdminInfoAdminContact(KviIrcMessage *msg);
+ void parseNumericServerAdminInfoAdminName(KviIrcMessage *msg);
+ void parseNumericServerAdminInfoServerName(KviIrcMessage *msg);
+ void parseNumericServerAdminInfoTitle(KviIrcMessage *msg);
+ void parseNumericCannotSendColor(KviIrcMessage *msg);
+ void parseNumericEndOfStats(KviIrcMessage *msg);
+ void otherChannelError(KviIrcMessage *msg);
+ void parseCommandSyntaxHelp(KviIrcMessage *msg);
+ void parseCommandHelp(KviIrcMessage *msg);
+ void parseCommandEndOfHelp(KviIrcMessage *msg);
+ void parseChannelHelp(KviIrcMessage *msg);
+
+ void parseLiteralPing(KviIrcMessage *msg);
+ void parseLiteralJoin(KviIrcMessage *msg);
+ void parseLiteralTopic(KviIrcMessage *msg);
+ void parseLiteralPart(KviIrcMessage *msg);
+ void parseLiteralPrivmsg(KviIrcMessage *msg);
+ void parseLiteralNotice(KviIrcMessage *msg);
+ void parseLiteralQuit(KviIrcMessage *msg);
+ void parseLiteralNick(KviIrcMessage *msg);
+ void parseLiteralMode(KviIrcMessage *msg);
+ void parseLiteralKick(KviIrcMessage *msg);
+ void parseLiteralInvite(KviIrcMessage *msg);
+ void parseLiteralWallops(KviIrcMessage *msg);
+ void parseLiteralPong(KviIrcMessage *msg);
+ void parseLiteralError(KviIrcMessage *msg);
+ void parseChannelMode(const QString &szNick,const QString &szUser,const QString &szHost,KviChannel * chan,KviStr &modefl,KviIrcMessage *msg,int curParam);
+ void parseUserMode(KviIrcMessage *msg,const char * modeflptr);
+
+
+
+ void parseCtcpRequest(KviCtcpMessage *msg);
+ void parseCtcpReply(KviCtcpMessage *msg);
+ void echoCtcpRequest(KviCtcpMessage *msg);
+ void echoCtcpReply(KviCtcpMessage *msg);
+ void replyCtcp(KviCtcpMessage *msg,const char * data);
+ bool checkCtcpFlood(KviCtcpMessage *msg);
+
+ void parseCtcpRequestPing(KviCtcpMessage *msg);
+ void parseCtcpRequestVersion(KviCtcpMessage *msg);
+ void parseCtcpRequestUserinfo(KviCtcpMessage *msg);
+ void parseCtcpRequestClientinfo(KviCtcpMessage *msg);
+ void parseCtcpRequestFinger(KviCtcpMessage *msg);
+ void parseCtcpRequestSource(KviCtcpMessage *msg);
+ void parseCtcpRequestAction(KviCtcpMessage *msg);
+ void parseCtcpRequestTime(KviCtcpMessage *msg);
+ void parseCtcpRequestAvatar(KviCtcpMessage *msg);
+ void parseCtcpRequestDcc(KviCtcpMessage *msg);
+ void parseCtcpRequestPage(KviCtcpMessage *msg);
+
+ void parseCtcpReplyAvatar(KviCtcpMessage *msg);
+ void parseCtcpReplyUserinfo(KviCtcpMessage *msg);
+ void parseCtcpReplyGeneric(KviCtcpMessage *msg);
+ void parseCtcpReplyPing(KviCtcpMessage *msg);
+ void parseCtcpReplyLagcheck(KviCtcpMessage *msg);
+// void parseCtcpReply(const char * msg_ptr,KviIrcUser &source,const char * target);
+public:
+ static void encodeCtcpParameter(const char * param,KviStr &buffer,bool bSpaceBreaks = true);
+ static void encodeCtcpParameter(const char * param,QString &buffer,bool bSpaceBreaks = true);
+ static const char * decodeCtcpEscape(const char * msg_ptr,KviStr &buffer);
+ static const char * decodeCtcpEscape(const char * msg_ptr,KviQCString &buffer);
+ static const char * extractCtcpParameter(const char * msg_ptr,KviStr &buffer,bool bSpaceBreaks = true);
+ static const char * extractCtcpParameter(const char * msg_ptr,QString &buffer,bool bSpaceBreaks = true);
+};
+
+#ifndef _KVI_SPARSER_CPP_
+ extern KVIRC_API KviServerParser * g_pServerParser;
+#endif
+
+
+#endif //_KVI_SPARSER_H_
diff --git a/src/kvirc/ui/Makefile.am b/src/kvirc/ui/Makefile.am
new file mode 100644
index 00000000..c84487eb
--- /dev/null
+++ b/src/kvirc/ui/Makefile.am
@@ -0,0 +1,5 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+EXTRA_DIST = *.cpp *.h
diff --git a/src/kvirc/ui/kvi_actiondrawer.cpp b/src/kvirc/ui/kvi_actiondrawer.cpp
new file mode 100644
index 00000000..a4659141
--- /dev/null
+++ b/src/kvirc/ui/kvi_actiondrawer.cpp
@@ -0,0 +1,227 @@
+//=============================================================================
+//
+// File : kvi_actiondrawer.cpp
+// Created on Sun 21 Nov 2004 05:44:22 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_actiondrawer.h"
+#include "kvi_action.h"
+#include "kvi_actionmanager.h"
+#include "kvi_iconmanager.h"
+#include "kvi_locale.h"
+
+#include <qlayout.h>
+#include <qlabel.h>
+//#include <qscrollview.h>
+#include <qpainter.h>
+#include <qpixmap.h>
+#ifdef COMPILE_USE_QT4
+ #include <q3header.h>
+ #include <q3simplerichtext.h>
+ #include <qmime.h>
+ #include <qevent.h>
+#else
+ #include <qheader.h>
+ #include <qsimplerichtext.h>
+#endif
+
+#include "kvi_draganddrop.h"
+
+#define LVI_ICON_SIZE 32
+#define LVI_BORDER 4
+#define LVI_SPACING 8
+#define LVI_MINIMUM_TEXT_WIDTH 300
+#define LVI_MINIMUM_CELL_WIDTH (LVI_MINIMUM_TEXT_WIDTH + LVI_BORDER + LVI_ICON_SIZE + LVI_SPACING + LVI_BORDER)
+
+KviActionDrawerPageListViewItem::KviActionDrawerPageListViewItem(KviTalListView * v,KviAction * a)
+: KviTalListViewItem(v,"")
+{
+ m_pListView = v;
+ setDragEnabled(true);
+ m_szName = a->name();
+ QString t = "<b>" + a->visibleName() + "</b>";
+ if(a->isKviUserActionNeverOverrideThis())
+ t += " <font color=\"#a0a0a0\">[" + __tr2qs("Script") + "]</font>";
+ t += "<br><font size=\"-1\">" + a->description()+ "</font>";
+ m_szKey = a->visibleName().upper();
+#ifdef COMPILE_USE_QT4
+ m_pText = new Q3SimpleRichText(t,v->font());
+#else
+ m_pText = new QSimpleRichText(t,v->font());
+#endif
+ QPixmap * p = a->bigIcon();
+ m_pIcon = p ? new QPixmap(*p) : new QPixmap(LVI_ICON_SIZE,LVI_ICON_SIZE);
+}
+
+KviActionDrawerPageListViewItem::~KviActionDrawerPageListViewItem()
+{
+ delete m_pIcon;
+ delete m_pText;
+}
+
+QString KviActionDrawerPageListViewItem::key(int,bool) const
+{
+ return m_szKey;
+}
+
+void KviActionDrawerPageListViewItem::setup()
+{
+ KviTalListViewItem::setup();
+ int iWidth = m_pListView->visibleWidth();
+ if(iWidth < LVI_MINIMUM_CELL_WIDTH)iWidth = LVI_MINIMUM_CELL_WIDTH;
+ iWidth -= LVI_BORDER + LVI_ICON_SIZE + LVI_SPACING + LVI_BORDER;
+ m_pText->setWidth(iWidth);
+ int iHeight = m_pText->height() + (2 * LVI_BORDER);
+ if(iHeight < (LVI_ICON_SIZE + (2 * LVI_BORDER)))iHeight = LVI_ICON_SIZE + (2 * LVI_BORDER);
+ setHeight(iHeight);
+}
+
+void KviActionDrawerPageListViewItem::paintCell(QPainter * p,const QColorGroup & cg,int column,int width,int align)
+{
+ KviTalListViewItem::paintCell(p,cg,column,width,align);
+ //p->fillRect(QRect(0,0,width,height()),isSelected() ? cg.highlight() : cg.base());
+ p->drawPixmap(LVI_BORDER,LVI_BORDER,*m_pIcon);
+ int afterIcon = LVI_BORDER + LVI_ICON_SIZE + LVI_SPACING;
+ int www = m_pListView->visibleWidth() - (afterIcon + LVI_BORDER);
+ m_pText->setWidth(www);
+ if(isSelected())
+ {
+ QColorGroup cg2(cg);
+ cg2.setColor(QColorGroup::HighlightedText,cg.text());
+ m_pText->draw(p,afterIcon,LVI_BORDER,QRect(afterIcon,LVI_BORDER,www,height() - (LVI_BORDER * 2)),cg2);
+ } else {
+ m_pText->draw(p,afterIcon,LVI_BORDER,QRect(afterIcon,LVI_BORDER,www,height() - (LVI_BORDER * 2)),cg);
+ }
+}
+
+KviActionDrawerPageListView::KviActionDrawerPageListView(KviActionDrawerPage * pParent)
+: KviListView(pParent)
+{
+ QPixmap * p = g_pIconManager->getImage("kvi_actiondrawer.png");
+ if(p)setBackgroundOverlayPixmap(p,Qt::AlignRight | Qt::AlignBottom);
+
+// m_pPage = pParent;
+ setSelectionMode(Single);
+ header()->hide();
+ int iWidth = visibleWidth();
+ if(iWidth < LVI_MINIMUM_CELL_WIDTH)iWidth = LVI_MINIMUM_CELL_WIDTH;
+ addColumn("",iWidth);
+ setSorting(0,true);
+}
+
+KviActionDrawerPageListView::~KviActionDrawerPageListView()
+{
+}
+
+
+void KviActionDrawerPageListView::contentsMousePressEvent(QMouseEvent * e)
+{
+ KviListView::contentsMousePressEvent(e);
+ KviActionDrawerPageListViewItem * i = (KviActionDrawerPageListViewItem *)itemAt(QPoint(5,contentsToViewport(e->pos()).y()));
+ if(!i)return;
+ KviTextDrag * dr = new KviTextDrag(i->name(),this); // does this leak memory ?
+ if(i->icon())dr->setPixmap(*(i->icon()),QPoint(3,3));
+ dr->dragCopy();
+}
+
+void KviActionDrawerPageListView::resizeEvent(QResizeEvent * e)
+{
+ KviListView::resizeEvent(e);
+ int iWidth = visibleWidth();
+ if(iWidth < LVI_MINIMUM_CELL_WIDTH)iWidth = LVI_MINIMUM_CELL_WIDTH;
+ setColumnWidth(0,iWidth);
+}
+
+
+KviActionDrawerPage::KviActionDrawerPage(QWidget * pParent,const QString &szDescription)
+: QWidget(pParent)
+{
+ QGridLayout * g = new QGridLayout(this,2,1,4,4);
+
+ QString t = "<b>" + szDescription + "</b>";
+ QLabel * l = new QLabel(t,this);
+ g->addWidget(l,0,0);
+
+ m_pListView = new KviActionDrawerPageListView(this);
+
+ g->addWidget(m_pListView,1,0);
+
+ g->setRowStretch(1,1);
+}
+
+KviActionDrawerPage::~KviActionDrawerPage()
+{
+}
+
+void KviActionDrawerPage::add(KviAction * a)
+{
+ (void)new KviActionDrawerPageListViewItem(m_pListView,a);
+}
+
+KviActionDrawer::KviActionDrawer(QWidget * pParent)
+: QTabWidget(pParent)
+{
+ setMinimumWidth(400);
+ setMinimumHeight(300);
+}
+
+KviActionDrawer::~KviActionDrawer()
+{
+}
+
+void KviActionDrawer::fill()
+{
+ KviActionManager::loadAllAvailableActions();
+
+ KviPointerHashTable<QString,KviActionDrawerPage> pages;
+ pages.setAutoDelete(false);
+
+ KviPointerHashTable<QString,KviAction> * d = KviActionManager::instance()->actions();
+ if(!d)return; // ooops
+
+ KviPointerHashTableIterator<QString,KviAction> it(*d);
+ while(KviAction * a = it.current())
+ {
+ KviActionCategory * c = a->category();
+ if(!c)c = KviActionManager::categoryGeneric();
+ KviActionDrawerPage * p = pages.find(c->visibleName());
+ if(!p)
+ {
+ p = new KviActionDrawerPage(this,c->description());
+ pages.replace(c->visibleName(),p);
+ addTab(p,c->visibleName());
+ //p->show();
+ }
+ p->add(a);
+ ++it;
+ }
+
+ KviActionDrawerPage * p = pages.find(KviActionManager::categoryIrc()->visibleName());
+ if(p)
+ {
+ int iii = indexOf(p);
+ if(iii >= 0)setCurrentPage(iii);
+ }
+}
+
+
diff --git a/src/kvirc/ui/kvi_actiondrawer.h b/src/kvirc/ui/kvi_actiondrawer.h
new file mode 100644
index 00000000..d9cd2778
--- /dev/null
+++ b/src/kvirc/ui/kvi_actiondrawer.h
@@ -0,0 +1,107 @@
+#ifndef _KVI_ACTIONDRAWER_H_
+#define _KVI_ACTIONDRAWER_H_
+//=============================================================================
+//
+// File : kvi_actiondrawer.h
+// Created on Sun 21 Nov 2004 05:44:22 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+
+#include <qwidget.h>
+#include <qtabwidget.h>
+
+#include "kvi_listview.h"
+
+class KviActionDrawerPage;
+class QPixmap;
+#ifdef COMPILE_USE_QT4
+ class Q3SimpleRichText;
+#else
+ class QSimpleRichText;
+#endif
+class KviAction;
+
+class KVIRC_API KviActionDrawerPageListViewItem : public KviTalListViewItem
+{
+public:
+ KviActionDrawerPageListViewItem(KviTalListView * v,KviAction * a);
+ ~KviActionDrawerPageListViewItem();
+protected:
+ QString m_szName;
+#ifdef COMPILE_USE_QT4
+ Q3SimpleRichText * m_pText;
+#else
+ QSimpleRichText * m_pText;
+#endif
+ QPixmap * m_pIcon;
+ KviTalListView * m_pListView;
+ QString m_szKey;
+public:
+ QPixmap * icon(){ return m_pIcon; };
+ const QString & name(){ return m_szName; };
+protected:
+ virtual void paintCell(QPainter * p,const QColorGroup & cg,int column,int width,int align);
+ virtual void setup();
+ virtual QString key(int,bool) const;
+};
+
+class KVIRC_API KviActionDrawerPageListView : public KviListView
+{
+ friend class KviActionDrawerPage;
+ Q_OBJECT
+protected:
+ KviActionDrawerPageListView(KviActionDrawerPage * pParent);
+public:
+ ~KviActionDrawerPageListView();
+//protected:
+// KviActionDrawerPage * m_pPage;
+protected:
+ virtual void resizeEvent(QResizeEvent * e);
+ virtual void contentsMousePressEvent(QMouseEvent * e);
+};
+
+class KVIRC_API KviActionDrawerPage : public QWidget
+{
+ friend class KviActionDrawer;
+ Q_OBJECT
+protected:
+ KviActionDrawerPage(QWidget * pParent,const QString &szDescription);
+public:
+ ~KviActionDrawerPage();
+protected:
+ KviActionDrawerPageListView * m_pListView;
+protected:
+ void add(KviAction * a);
+};
+
+class KVIRC_API KviActionDrawer : public QTabWidget
+{
+ Q_OBJECT
+public:
+ KviActionDrawer(QWidget * pParent);
+ ~KviActionDrawer();
+public:
+ void fill();
+};
+
+#endif //!_KVI_ACTIONDRAWER_H_
diff --git a/src/kvirc/ui/kvi_channel.cpp b/src/kvirc/ui/kvi_channel.cpp
new file mode 100644
index 00000000..a06ab144
--- /dev/null
+++ b/src/kvirc/ui/kvi_channel.cpp
@@ -0,0 +1,1628 @@
+//=============================================================================
+//
+// File : kvi_channel.cpp
+// Creation date : Tue Aug 1 2000 02:20:22 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+//
+// Channel widget : abstraction of an IRC channel
+//
+
+#define __KVIRC__
+
+#include "kvi_toolwindows_container.h"
+#include "kvi_styled_controls.h"
+#include "kvi_channel.h"
+#include "kvi_console.h"
+#include "kvi_iconmanager.h"
+#include "kvi_ircview.h"
+#include "kvi_input.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_topicw.h"
+#include "kvi_ircsocket.h"
+#include "kvi_out.h"
+#include "kvi_malloc.h"
+#include "kvi_taskbar.h"
+#include "kvi_frame.h"
+#include "kvi_config.h"
+#include "kvi_themedlabel.h"
+#include "kvi_maskeditor.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_settings.h"
+#include "kvi_parameterlist.h"
+#include "kvi_modeeditor.h"
+#include "kvi_app.h"
+#include "kvi_useraction.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectionserverinfo.h"
+#include "kvi_defaults.h"
+#include "kvi_sparser.h"
+#include "kvi_modew.h"
+#include "kvi_mirccntrl.h"
+
+#ifdef COMPILE_CRYPT_SUPPORT
+ #include "kvi_crypt.h"
+ #include "kvi_cryptcontroller.h"
+#endif
+
+#include "kvi_kvs_script.h"
+#include "kvi_kvs_eventtriggers.h"
+
+#include <time.h>
+
+#include <qsplitter.h>
+#include <qtoolbutton.h>
+#include <qlabel.h>
+#include <qevent.h>
+
+#include <qpalette.h>
+#include "kvi_tal_popupmenu.h"
+#include "kvi_pointerhashtable.h"
+#include <qmessagebox.h>
+#include "kvi_tal_widgetstack.h"
+
+#ifndef AVERAGE_CHANNEL_USERS
+ #define AVERAGE_CHANNEL_USERS 101
+#endif
+
+
+
+// FIXME: #warning "+a Anonymous channel mode!"
+// FIXME: #warning "+r channel mode (reop)"
+// FIXME: #warning "OnChannelFlood event...."
+
+
+KviChannel::KviChannel(KviFrame * lpFrm,KviConsole * lpConsole,const char * name)
+: KviWindow(KVI_WINDOW_TYPE_CHANNEL,lpFrm,name,lpConsole)
+{
+ // Init some member variables
+ m_pInput = 0;
+ m_iStateFlags = 0;
+ m_pBanList = new KviPointerList<KviMaskEntry>;
+ m_pBanList->setAutoDelete(true);
+ m_pBanExceptionList = new KviPointerList<KviMaskEntry>;
+ m_pBanExceptionList->setAutoDelete(true);
+ m_pInviteList = new KviPointerList<KviMaskEntry>;
+ m_pInviteList->setAutoDelete(true);
+ m_pActionHistory = new KviPointerList<KviChannelAction>;
+ m_pActionHistory->setAutoDelete(true);
+ m_uActionHistoryHotActionCount = 0;
+
+ m_pTmpHighLighted = new KviPointerHashTable<const char *,QString>();
+ m_pTmpHighLighted->setAutoDelete(true);
+
+ // Register ourselves
+ connection()->registerChannel(this);
+ // And create the widgets layout
+ // Button box
+ m_pButtonBox = new KviTalHBox(this);
+
+ m_pTopSplitter = new QSplitter(Qt::Horizontal,m_pButtonBox);
+
+ m_pButtonBox->setStretchFactor(m_pTopSplitter,1);
+
+ m_pButtonContainer = new KviTalHBox(m_pButtonBox);
+
+ // Topic widget on the left
+ m_pTopicWidget = new KviTopicWidget(m_pTopSplitter,"topic_widget");
+
+ connect(m_pTopicWidget,SIGNAL(topicSelected(const QString &)),
+ this,SLOT(topicSelected(const QString &)));
+ // mode label follows the topic widget
+ m_pModeWidget = new KviModeWidget(m_pTopSplitter,this,"mode_");
+ KviTalToolTip::add(m_pModeWidget,__tr2qs("Channel mode"));
+
+ createTextEncodingButton(m_pButtonContainer);
+
+ // Central splitter
+ m_pSplitter = new QSplitter(Qt::Horizontal,this);
+ #ifdef COMPILE_USE_QT4
+ m_pSplitter->setObjectName(name);
+ #else
+ m_pSplitter->setName(name);
+ #endif
+ m_pSplitter->setOpaqueResize(false);
+ // Spitted vertially on the left
+ m_pVertSplitter = new QSplitter(Qt::Vertical,m_pSplitter);
+ m_pVertSplitter->setOpaqueResize(false);
+ // With the IRC view over
+ m_pIrcView = new KviIrcView(m_pVertSplitter,lpFrm,this);
+ #ifdef COMPILE_USE_QT4
+ m_pIrcView->setObjectName(name);
+ #else
+ m_pIrcView->setName(name);
+ #endif
+ connect(m_pIrcView,SIGNAL(rightClicked()),this,SLOT(textViewRightClicked()));
+ // And the double view (that may be unused)
+ m_pMessageView = 0;
+ // The userlist on the right
+ //m_pEditorsContainer= new KviToolWindowsContainer(m_pSplitter);
+
+
+ // and the related buttons
+ m_pDoubleViewButton = createToolButton(m_pButtonContainer,"double_view_button",KVI_SMALLICON_HIDEDOUBLEVIEW,KVI_SMALLICON_SHOWDOUBLEVIEW,__tr2qs("Split View"),false);
+ connect(m_pDoubleViewButton,SIGNAL(clicked()),this,SLOT(toggleDoubleView()));
+
+ m_pListViewButton = new KviWindowToolPageButton(KVI_SMALLICON_HIDELISTVIEW,KVI_SMALLICON_SHOWLISTVIEW,__tr2qs("User List"),buttonContainer(),true,"list_view_button");
+ connect(m_pListViewButton,SIGNAL(clicked()),this,SLOT(toggleListView()));
+ m_pBanEditorButton = new KviWindowToolPageButton(KVI_SMALLICON_UNBAN,KVI_SMALLICON_BAN,__tr2qs("Ban Editor"),buttonContainer(),false,"ban_editor_button");
+ connect(m_pBanEditorButton,SIGNAL(clicked()),this,SLOT(toggleBanEditor()));
+
+ if(m_pConsole->connection()->serverInfo()->supportedListModes().contains('e'))
+ {
+ m_pBanExceptionEditorButton =new KviWindowToolPageButton(KVI_SMALLICON_BANUNEXCEPT,KVI_SMALLICON_BANEXCEPT,__tr2qs("Ban Exception Editor"),buttonContainer(),false,"ban_exception_editor_button");
+ connect(m_pBanExceptionEditorButton,SIGNAL(clicked()),this,SLOT(toggleBanExceptionEditor()));
+ } else {
+ m_pBanExceptionEditorButton=0;
+ }
+ if(m_pConsole->connection()->serverInfo()->supportedListModes().contains('I'))
+ {
+ m_pInviteEditorButton =new KviWindowToolPageButton(KVI_SMALLICON_INVITEUNEXCEPT,KVI_SMALLICON_INVITEEXCEPT,__tr2qs("Invite Exception Editor"),buttonContainer(),false,"invite_exception_editor_button");
+ connect(m_pInviteEditorButton,SIGNAL(clicked()),this,SLOT(toggleInviteEditor()));
+ } else {
+ m_pInviteEditorButton = 0;
+ }
+ m_pModeEditorButton = new KviWindowToolPageButton(KVI_SMALLICON_CHANMODEHIDE,KVI_SMALLICON_CHANMODE,__tr2qs("Mode Editor"),buttonContainer(),false,"mode_editor_button");
+ connect(m_pModeEditorButton,SIGNAL(clicked()),this,SLOT(toggleModeEditor()));
+ m_pModeEditor = 0;
+
+#ifdef COMPILE_CRYPT_SUPPORT
+ createCryptControllerButton(m_pButtonContainer);
+#endif
+
+ m_pHideToolsButton = new KviStyledToolButton(m_pButtonBox,"hide_container_button");
+
+#ifndef COMPILE_USE_QT4
+ m_pHideToolsButton->setUsesBigPixmap(false);
+#else
+ m_pHideToolsButton->setAutoRaise(true);
+#endif
+ m_pHideToolsButton->setFixedWidth(10);
+
+ if(g_pIconManager->getBigIcon("kvi_horizontal_left.png"))
+ m_pHideToolsButton->setPixmap(*(g_pIconManager->getBigIcon("kvi_horizontal_left.png")));
+
+ connect(m_pHideToolsButton,SIGNAL(clicked()),this,SLOT(toggleToolButtons()));
+
+ m_pUserListView = new KviUserListView(m_pSplitter,m_pListViewButton,connection()->userDataBase(),this,
+ AVERAGE_CHANNEL_USERS,__tr2qs("User List"),"user_list_view");
+// m_pEditorsContainer->addWidget(m_pUserListView);
+// m_pEditorsContainer->raiseWidget(m_pUserListView);
+ // And finally the input line on the bottom
+ m_pInput = new KviInput(this,m_pUserListView);
+ // no mask editors yet
+ m_pBanEditor = 0;
+ m_pBanExceptionEditor = 0;
+ m_pInviteEditor = 0;
+ // Ensure proper focusing
+ //setFocusHandler(m_pInput,this);
+ // And turn on the secondary IRC view if needed
+
+ if(KVI_OPTION_BOOL(KviOption_boolAutoLogChannels))m_pIrcView->startLogging();
+
+ applyOptions();
+ m_joinTime = QDateTime::currentDateTime();
+ m_tLastReceivedWhoReply = (kvi_time_t)m_joinTime.toTime_t();
+
+
+}
+
+KviChannel::~KviChannel()
+{
+ // Unregister ourself
+ if(type() == KVI_WINDOW_TYPE_DEADCHANNEL)context()->unregisterDeadChannel(this);
+ else connection()->unregisterChannel(this);
+ // Then remove all the users and free mem
+ m_pUserListView->enableUpdates(false);
+ m_pUserListView->partAll();
+ delete m_pActionHistory;
+ delete m_pBanList;
+ delete m_pBanExceptionList;
+ delete m_pInviteList;
+ delete m_pTmpHighLighted;
+}
+
+void KviChannel::toggleToolButtons()
+{
+ if(!buttonContainer()) return;
+ toggleButtonContainer();
+ QPixmap* pix= buttonContainer()->isVisible() ?
+ g_pIconManager->getBigIcon("kvi_horizontal_left.png") :
+ g_pIconManager->getBigIcon("kvi_horizontal_right.png");
+ if(pix)
+ m_pHideToolsButton->setPixmap(*pix);
+}
+
+void KviChannel::triggerCreationEvents()
+{
+ KVS_TRIGGER_EVENT_0(KviEvent_OnChannelWindowCreated,this);
+}
+
+void KviChannel::textViewRightClicked()
+{
+ KVS_TRIGGER_EVENT_0(KviEvent_OnChannelPopupRequest,this);
+}
+
+void KviChannel::getBaseLogFileName(QString &buffer)
+{
+ QString szChan(windowName());
+ szChan.replace(".","%2e");
+ if (console()->connection())
+ {
+ buffer=szChan;
+ buffer.append(".");
+ buffer.append(console()->currentNetworkName());
+ } else {
+ buffer=szChan;
+ buffer.append(".");
+ buffer.append(console()->ircContextId());
+ }
+}
+
+void KviChannel::applyOptions()
+{
+ m_pUserListView->applyOptions();
+ m_pTopicWidget->applyOptions();
+
+ if(m_pMessageView)m_pMessageView->applyOptions();
+
+ m_pModeWidget->applyOptions();
+
+ // this applies options for IrcView and Input and forces the window to relayout
+ KviWindow::applyOptions();
+}
+
+void KviChannel::getConfigGroupName(QString &buf)
+{
+ buf = windowName();
+}
+
+void KviChannel::saveProperties(KviConfig *cfg)
+{
+ KviWindow::saveProperties(cfg);
+ cfg->writeEntry("TopSplitter",m_pTopSplitter->sizes());
+ cfg->writeEntry("Splitter",m_pSplitter->sizes());
+#ifdef COMPILE_USE_QT4
+ QList<int> tmp = m_pVertSplitter->sizes();
+ KviValueList<int> tmp2;
+ for(QList<int>::Iterator it = tmp.begin();it != tmp.end();++it)
+ tmp2.append(*it);
+ cfg->writeEntry("VertSplitter",m_pMessageView ? tmp2 : m_VertSplitterSizesList);
+#else
+ cfg->writeEntry("VertSplitter",m_pMessageView ? m_pVertSplitter->sizes() : m_VertSplitterSizesList);
+#endif
+ cfg->writeEntry("PrivateBackground",m_privateBackground);
+ cfg->writeEntry("DoubleView",m_pMessageView ? true : false);
+ if(m_pUserListView)
+ cfg->writeEntry("UserListHidden",m_pUserListView->isHidden());
+ cfg->writeEntry("ToolButtonsHidden",buttonContainer()->isHidden());
+}
+
+void KviChannel::loadProperties(KviConfig *cfg)
+{
+ int w = width();
+ KviValueList<int> def;
+ def.append((w * 75) / 100);
+ def.append((w * 15) / 100);
+ def.append((w * 10) / 100);
+ m_pTopSplitter->setSizes(cfg->readIntListEntry("TopSplitter",def));
+ def.clear();
+ def.append((w * 82) / 100);
+ def.append((w * 18) / 100);
+ m_pSplitter->setSizes(cfg->readIntListEntry("Splitter",def));
+ //debug("SETTING DEFAULT SIZES");
+ def.clear();
+
+ def.append((w * 60) / 100);
+ def.append((w * 40) / 100);
+ m_VertSplitterSizesList=cfg->readIntListEntry("VertSplitter",def);
+ showDoubleView(cfg->readBoolEntry("DoubleView",false));
+ //def.append((w * 50) / 100);
+ //def.append((w * 50) / 100);
+
+ m_privateBackground = cfg->readPixmapEntry("PrivateBackground",KviPixmap());
+ if(m_privateBackground.pixmap())
+ {
+ m_pIrcView->setPrivateBackgroundPixmap(*(m_privateBackground.pixmap()));
+ if(m_pMessageView)m_pMessageView->setPrivateBackgroundPixmap(*(m_privateBackground.pixmap()));
+ }
+
+ KviWindow::loadProperties(cfg);
+ if(m_pUserListView)
+ {
+ bool bHidden=cfg->readBoolEntry("UserListHidden",0);
+ m_pUserListView->setHidden(bHidden);
+ resizeEvent(0);
+ }
+ if(cfg->readBoolEntry("ToolButtonsHidden",KVI_OPTION_BOOL(KviOption_boolHideWindowToolButtons))!=buttonContainer()->isHidden())
+ toggleToolButtons();
+}
+
+
+void KviChannel::showDoubleView(bool bShow)
+{
+ if(m_pMessageView)
+ {
+ if(bShow)return;
+ m_pIrcView->joinMessagesFrom(m_pMessageView);
+ m_VertSplitterSizesList=m_pVertSplitter->sizes();
+ delete m_pMessageView;
+ m_pMessageView = 0;
+ if(m_pDoubleViewButton->isOn())m_pDoubleViewButton->setOn(false);
+ } else {
+ if(!bShow)return;
+ m_pMessageView = new KviIrcView(m_pVertSplitter,m_pFrm,this);
+ m_pVertSplitter->setSizes(m_VertSplitterSizesList);
+ //setFocusHandler(m_pInput,m_pMessageView); //socket it!
+ if(!(m_pDoubleViewButton->isOn()))m_pDoubleViewButton->setOn(true);
+ if(m_privateBackground.pixmap())
+ {
+ m_pMessageView->setPrivateBackgroundPixmap(*(m_privateBackground.pixmap()));
+ }
+ connect(m_pMessageView,SIGNAL(rightClicked()),this,SLOT(textViewRightClicked()));
+ m_pMessageView->setMasterView(m_pIrcView);
+ m_pIrcView->splitMessagesTo(m_pMessageView);
+ m_pMessageView->show();
+ }
+}
+
+void KviChannel::toggleDoubleView()
+{
+ showDoubleView(!m_pMessageView);
+}
+
+void KviChannel::toggleListView()
+{
+ if(m_pUserListView->isVisible())
+ {
+ m_pUserListView->hide();
+ if(m_pListViewButton->isOn())m_pListViewButton->setOn(false);
+ } else {
+ m_pUserListView->show();
+ if(!(m_pListViewButton->isOn()))m_pListViewButton->setOn(true);
+ }
+}
+
+
+void KviChannel::toggleModeEditor()
+{
+ if(m_pModeEditor)
+ {
+ delete m_pModeEditor;
+ m_pModeEditor = 0;
+ m_pSplitter->setMinimumHeight(20); //gfgf
+ if(m_pModeEditorButton->isOn()) m_pModeEditorButton->setOn(false);
+ resizeEvent(0);
+ } else {
+ m_pModeEditor = new KviModeEditor(m_pSplitter,m_pModeEditorButton,"mode_editor",console(),m_szChannelMode,m_szChannelKey,m_szChannelLimit.ptr());
+ connect(m_pModeEditor,SIGNAL(setMode(const char *)),this,SLOT(setMode(const char *)));
+ connect(m_pModeEditor,SIGNAL(done()),this,SLOT(modeSelectorDone()));
+ m_pModeEditor->show();
+ //setFocusHandlerNoClass(m_pInput,m_pModeEditor,"QLineEdit");
+ if(!m_pModeEditorButton->isOn())m_pModeEditorButton->setOn(true);
+ }
+}
+
+void KviChannel::modeSelectorDone()
+{
+ if(m_pModeEditor)toggleModeEditor();
+}
+
+void KviChannel::setMode(const char * mode)
+{
+ if(!connection())return;
+ KviQCString tmp = connection()->encodeText(m_szName);
+ connection()->sendFmtData("MODE %s %s",tmp.data(),mode);
+}
+
+void KviChannel::toggleBanEditor()
+{
+ toggleEditor(&m_pBanEditor,&m_pBanEditorButton,
+ m_pBanList,'b',"ban_editor");
+}
+
+void KviChannel::toggleBanExceptionEditor()
+{
+ toggleEditor(&m_pBanExceptionEditor,&m_pBanExceptionEditorButton,
+ m_pBanExceptionList,'e',"ban_exception_editor");
+}
+
+void KviChannel::toggleInviteEditor()
+{
+ toggleEditor(&m_pInviteEditor,&m_pInviteEditorButton,
+ m_pInviteList,'I',"invite_exception_editor");
+}
+
+void KviChannel::toggleEditor(KviMaskEditor ** ppEd,KviWindowToolPageButton ** ppBtn,KviPointerList<KviMaskEntry> *l,char flag,const char *edName)
+{
+ if(*ppEd)
+ {
+ delete *ppEd;
+ *ppEd = 0;
+ if(!(*ppBtn))return;
+ if((*ppBtn)->isOn()) (*ppBtn)->setOn(false);
+ } else {
+ bool bHasList = true;
+ switch(flag)
+ {
+ case 'b':
+ if(!(bHasList = hasBanList()))
+ {
+ m_pBanList->clear();
+ setSentBanListRequest();
+ }
+ break;
+ case 'e':
+ if(!(bHasList = hasBanExceptionList()))
+ {
+ m_pBanExceptionList->clear();
+ setSentBanExceptionListRequest();
+ }
+ break;
+ case 'I':
+ if(!(bHasList = hasInviteList()))
+ {
+ m_pInviteList->clear();
+ setSentInviteListRequest();
+ }
+ break;
+ }
+ if(!bHasList)
+ {
+ if(connection())
+ {
+ KviQCString szName = connection()->encodeText(m_szName);
+ connection()->sendFmtData("MODE %s %c",szName.data(),flag);
+ }
+ }
+
+ *ppEd = new KviMaskEditor(m_pSplitter,*ppBtn,l,flag,edName);
+ connect(*ppEd,SIGNAL(removeMasks(KviMaskEditor *,KviPointerList<KviMaskEntry> *)),
+ this,SLOT(removeMasks(KviMaskEditor *,KviPointerList<KviMaskEntry> *)));
+ //setFocusHandler(m_pInput,*ppEd); //socket it!
+ (*ppEd)->show();
+ if(!(*ppBtn))return;
+ if(!((*ppBtn)->isOn()))(*ppBtn)->setOn(true);
+ }
+}
+
+void KviChannel::removeMasks(KviMaskEditor *ed,KviPointerList<KviMaskEntry> *l)
+{
+ KviStr masks;
+ KviStr flags;
+ unsigned int count = 0;
+ for(KviMaskEntry * e = l->first();e;e = l->next())
+ {
+ if(masks.hasData())masks.append(' ');
+ masks.append(e->szMask);
+ flags.append(ed->flag());
+ count++;
+ if(count == connection()->serverInfo()->maxModeChanges())
+ {
+ if(connection())
+ {
+ KviQCString szName = connection()->encodeText(m_szName);
+ connection()->sendFmtData("MODE %s -%s %s",szName.data(),flags.ptr(),connection()->encodeText(QString(masks)).data());
+ }
+ flags = "";
+ masks = "";
+ count = 0;
+ }
+ }
+ if(masks.hasData())
+ {
+ if(connection())
+ {
+ KviQCString szName = connection()->encodeText(m_szName);
+ connection()->sendFmtData("MODE %s -%s %s",szName.data(),flags.ptr(),connection()->encodeText(QString(masks)).data());
+ }
+ }
+}
+
+QPixmap * KviChannel::myIconPtr()
+{
+ return g_pIconManager->getSmallIcon((m_iStateFlags & KVI_CHANNEL_STATE_DEADCHAN) ? KVI_SMALLICON_DEADCHANNEL : KVI_SMALLICON_CHANNEL);
+}
+
+void KviChannel::resizeEvent(QResizeEvent *e)
+{
+#ifdef COMPILE_USE_QT4
+ int hght = m_pInput->heightHint();
+ int hght2 = m_pTopicWidget->sizeHint().height();
+ m_pButtonBox->setGeometry(0,0,width(),hght2);
+ m_pSplitter->setGeometry(0,hght2,width(),height() - (hght + hght2));
+ m_pInput->setGeometry(0,height() - hght,width(),hght);
+#else
+ int hght = m_pInput->heightHint();
+ int hght2 = m_pButtonBox->sizeHint().height();
+ m_pButtonBox->setGeometry(0,0,width(),hght2);
+ m_pSplitter->setGeometry(0,hght2,width(),height() - (hght + hght2));
+ m_pInput->setGeometry(0,height() - hght,width(),hght);
+#endif
+}
+
+QSize KviChannel::sizeHint() const
+{
+ QSize ret(m_pSplitter->sizeHint().width(),
+ m_pIrcView->sizeHint().height() + m_pInput->heightHint() + m_pButtonBox->sizeHint().height());
+ return ret;
+}
+
+void KviChannel::setChannelMode(char mode,bool bAdd)
+{
+ if(!m_pConsole->connection()->serverInfo()->supportedListModes().contains(mode)){
+ if(bAdd)
+ {
+ if(!(m_szChannelMode.contains(mode)))m_szChannelMode.append(mode);
+ } else {
+ if(m_szChannelMode.contains(mode))
+ {
+ m_szChannelMode.replace(mode,"");
+ }
+ }
+ updateModeLabel();
+ updateCaption();
+ }
+}
+
+void KviChannel::setChannelKey(const char * key)
+{
+ m_szChannelKey = key;
+ updateModeLabel();
+ updateCaption();
+}
+
+void KviChannel::setChannelLimit(const char * limit)
+{
+ m_szChannelLimit = limit;
+ updateModeLabel();
+ updateCaption();
+}
+
+void KviChannel::addHighlightedUser(const char * nick)
+{
+ if(!m_pUserListView->findEntry(nick))return;
+ else
+ m_pTmpHighLighted->replace(nick,new QString());
+}
+
+void KviChannel::removeHighlightedUser(const char * nick)
+{
+ m_pTmpHighLighted->remove(nick);
+}
+
+void KviChannel::getChannelModeString(QString &buffer)
+{
+ buffer = m_szChannelMode;
+ if(!m_szChannelKey.isEmpty())buffer.append('k');
+ if(m_szChannelLimit.hasData())buffer.append('l');
+}
+
+void KviChannel::setDeadChan()
+{
+ m_iStateFlags |= KVI_CHANNEL_STATE_DEADCHAN;
+ m_iStateFlags &= ~(KVI_CHANNEL_STATE_NOCLOSEONPART | KVI_CHANNEL_STATE_SENTSYNCWHOREQUEST);
+
+ m_pUserListView->enableUpdates(false);
+ m_pUserListView->partAll();
+ m_pUserListView->enableUpdates(true);
+ m_pUserListView->setUserDataBase(0);
+
+ m_pBanList->clear();
+ m_pBanExceptionList->clear();
+ m_pInviteList->clear();
+
+ m_pActionHistory->clear();
+ m_uActionHistoryHotActionCount = 0;
+
+ m_szChannelMode = "";
+ m_szChannelKey = "";
+ m_szChannelLimit = "";
+
+ // this should be moved to irc context!
+ connection()->unregisterChannel(this);
+ context()->registerDeadChannel(this);
+
+ setType(KVI_WINDOW_TYPE_DEADCHANNEL);
+
+ updateIcon();
+ updateModeLabel();
+ updateCaption();
+}
+
+void KviChannel::setAliveChan()
+{
+ // Rise like phoenix!
+ m_iStateFlags = 0;
+ setType(KVI_WINDOW_TYPE_CHANNEL);
+ m_pUserListView->setUserDataBase(connection()->userDataBase());
+ m_joinTime = QDateTime::currentDateTime();
+ context()->unregisterDeadChannel(this);
+ connection()->registerChannel(this);
+ // Update log file name
+ if(m_pIrcView->isLogging())m_pIrcView->startLogging();
+ updateIcon();
+ updateCaption();
+ m_pTopicWidget->reset(); // reset the topic (fixes bug #20 signaled by Klaus Weidenbach)
+}
+
+void KviChannel::getTalkingUsersStats(QString &buffer,QStringList &l,bool bPast)
+{
+ if(l.count() < 1)return;
+
+ if(l.count() == 1)
+ {
+ buffer += "<b>";
+ buffer += l.first();
+ buffer += "</b>";
+ buffer += " ";
+ buffer += bPast ? __tr2qs("said something recently") : __tr2qs("is talking");
+ } else if(l.count() == 2)
+ {
+ buffer += "<b>";
+ buffer += l.first();
+ buffer += "</b> ";
+ buffer += __tr2qs("and");
+ buffer += " <b>";
+ l.remove(l.begin());
+ buffer += l.first();
+ buffer += "</b> ";
+ buffer += bPast ? __tr2qs("were talking recently") : __tr2qs("are talking");
+ } else {
+ buffer += "<b>";
+ buffer += l.first();
+ buffer += "</b>, <b>";
+ l.remove(l.begin());
+ buffer += l.first();
+ if(l.count() == 2)
+ {
+ buffer += "</b> ";
+ buffer += __tr2qs("and");
+ buffer += " <b>";
+ l.remove(l.begin());
+ buffer += l.first();
+ buffer += "</b>";
+ } else {
+ // (l.count() - 1) is > 1
+ buffer += "</b> ";
+ buffer += __tr2qs("and other %1 users").arg(l.count() - 1);
+ }
+ buffer += " ";
+ buffer += bPast ? __tr2qs("were talking recently") : __tr2qs("are talking");
+ }
+}
+
+void KviChannel::getTaskBarTipText(QString &buffer)
+{
+ static QString html_bold("<b>");
+ static QString html_tab("&nbsp;&nbsp;");
+ static QString html_eofbold("</b> ");
+ static QString p5(" (");
+ // p6 == p4
+ static QString p7(" (");
+ static QString p8(": ");
+ static QString p9(")");
+ static QString p10("<br>");
+
+ static QString end_of_doc = "</table></body></html>";
+ static QString end_of_fontboldrow = END_TABLE_BOLD_ROW;
+ static QString start_of_row = "<tr><td>";
+ static QString end_of_row = "</td></tr>";
+
+ buffer = "<html>" \
+ "<body>" \
+ "<table width=\"100%\">"\
+ START_TABLE_BOLD_ROW;
+
+ if(m_iStateFlags & KVI_CHANNEL_STATE_DEADCHAN)
+ {
+ buffer += __tr2qs("Dead channel");
+ buffer += end_of_fontboldrow;
+ buffer += end_of_doc;
+ return;
+ }
+
+ KviUserListViewUserStats s;
+ m_pUserListView->userStats(&s);
+
+
+ buffer += m_szPlainTextCaption;
+ buffer += end_of_fontboldrow;
+
+ buffer += start_of_row;
+
+ QString op = __tr2qs("operator");
+ QString ops = __tr2qs("operators");
+
+ //////////////////////
+
+ buffer += html_tab;
+ buffer += html_bold;
+
+ QString num;
+
+ num.setNum(s.uActive);
+ buffer += num;
+
+ buffer += html_eofbold;
+ buffer += (s.uActive == 1 ? __tr2qs("active user") : __tr2qs("active users"));
+
+ buffer += p5;
+ buffer += html_bold;
+
+ num.setNum(s.uActiveOp);
+
+ buffer += num;
+ buffer += html_eofbold;
+ buffer += (s.uActiveOp == 1 ? op : ops);
+
+ buffer += p9;
+/*
+ * #warning FIXME: What is this supposed to mean?
+ buffer += "<font size=\"-1\">";
+ buffer += p7;
+
+ buffer += __tr2qs("humanity");
+
+ buffer += p8;
+ buffer += html_bold;
+
+ num.setNum(s.iAvgTemperature);
+
+ buffer += num;
+ buffer += "</bold>";
+
+ buffer += p9;
+*/
+ buffer += p10;
+ buffer += "</font>";
+
+
+
+ //////////////////////
+
+ buffer += html_tab;
+ buffer += html_bold;
+
+ num.setNum(s.uHot);
+ buffer += num;
+
+ buffer += html_eofbold;
+ buffer += (s.uHot == 1 ? __tr2qs("hot user") : __tr2qs("hot users"));
+
+ buffer += p5;
+ buffer += html_bold;
+
+ num.setNum(s.uHotOp);
+
+ buffer += num;
+ buffer += html_eofbold;
+ buffer += (s.uHotOp == 1 ? op : ops);
+
+ buffer += p9;
+
+ /////////////
+
+ buffer += end_of_row;
+ buffer += start_of_row;
+
+ ///////////////////
+
+ if(s.uChanOwner > 0)
+ {
+ buffer += html_tab;
+ buffer += html_bold;
+ num.setNum(s.uChanOwner);
+ buffer += num;
+ buffer += html_eofbold;
+ buffer += (s.uChanOwner == 1 ? __tr2qs("channel owner") : __tr2qs("channel owners"));
+ buffer += p10;
+ }
+
+ if(s.uChanAdmin > 0)
+ {
+ buffer += html_tab;
+ buffer += html_bold;
+ num.setNum(s.uChanAdmin);
+ buffer += num;
+ buffer += html_eofbold;
+ buffer += (s.uChanAdmin == 1 ? __tr2qs("channel administrator") : __tr2qs("channel administrators"));
+ buffer += p10;
+ }
+
+ if(s.uOp > 0)
+ {
+ buffer += html_tab;
+ buffer += html_bold;
+ num.setNum(s.uOp);
+ buffer += num;
+ buffer += html_eofbold;
+ buffer += (s.uOp == 1 ? op : ops);
+ buffer += p10;
+ }
+
+ if(s.uHalfOp > 0)
+ {
+ buffer += html_tab;
+ buffer += html_bold;
+ num.setNum(s.uHalfOp);
+ buffer += num;
+ buffer += html_eofbold;
+ buffer += (s.uHalfOp == 1 ? __tr2qs("half-operator") : __tr2qs("half-operators"));
+ buffer += p10;
+ }
+
+ if(s.uVoiced > 0)
+ {
+ buffer += html_tab;
+ buffer += html_bold;
+ num.setNum(s.uVoiced);
+ buffer += num;
+ buffer += html_eofbold;
+ buffer += (s.uVoiced == 1 ? __tr2qs("voiced user") : __tr2qs("voiced users"));
+ buffer += p10;
+ }
+
+ if(s.uUserOp > 0)
+ {
+ buffer += html_tab;
+ buffer += html_bold;
+ num.setNum(s.uUserOp);
+ buffer += num;
+ buffer += html_eofbold;
+ buffer += (s.uUserOp == 1 ? __tr2qs("user-operator") : __tr2qs("user-operators"));
+ buffer += p10;
+ }
+
+ buffer += html_tab;
+ buffer += html_bold;
+ num.setNum(s.uTotal);
+ buffer += num;
+ buffer += html_eofbold;
+ buffer += (s.uTotal == 1 ? __tr2qs("user total") : __tr2qs("users total"));
+
+ buffer += end_of_row;
+
+ KviChannelActivityStats cas;
+ getChannelActivityStats(&cas);
+
+
+ if(cas.lTalkingUsers.count() > 0)
+ {
+ if((cas.lTalkingUsers.count() < 3) && (cas.lWereTalkingUsers.count() > 0))
+ {
+ buffer += "<tr><td bgcolor=\"#E0E0E0\">";
+ getTalkingUsersStats(buffer,cas.lWereTalkingUsers,true);
+ buffer += end_of_row;
+ }
+ buffer += "<tr><td bgcolor=\"#E0E0E0\">";
+ getTalkingUsersStats(buffer,cas.lTalkingUsers,false);
+ buffer += end_of_row;
+ } else {
+ if(cas.lWereTalkingUsers.count() > 0)
+ {
+ buffer += "<tr><td bgcolor=\"#E0E0E0\">";
+ getTalkingUsersStats(buffer,cas.lWereTalkingUsers,true);
+ buffer += end_of_row;
+ }
+ }
+
+ buffer += "<tr><td bgcolor=\"#A0A0A0\"><b>";
+
+ if(cas.dActionsPerMinute < 0.1)buffer += __tr2qs("No activity");
+ else if(cas.dActionsPerMinute < 0.3)buffer += __tr2qs("Minimal activity");
+ else if(cas.dActionsPerMinute < 1.0)buffer += __tr2qs("Very low activity");
+ else if(cas.dActionsPerMinute < 3.0)buffer += cas.bStatsInaccurate ? __tr2qs("Might be low activity") : __tr2qs("Low activity");
+ else if(cas.dActionsPerMinute < 10.0)buffer += cas.bStatsInaccurate ? __tr2qs("Might be medium activity") : __tr2qs("Medium activity");
+ else if(cas.dActionsPerMinute < 30.0)buffer += cas.bStatsInaccurate ? __tr2qs("Might be high activity") : __tr2qs("High activity");
+ else if(cas.dActionsPerMinute < 60.0)buffer += cas.bStatsInaccurate ? __tr2qs("Might be very high activity") : __tr2qs("Very high activity");
+ else buffer += cas.bStatsInaccurate ? __tr2qs("Might be flooded with messages") : __tr2qs("Flooded with messages");
+
+
+ if(cas.dActionsPerMinute >= 0.1)
+ {
+ QString num;
+ num.sprintf(" [%u%% ",cas.uHotActionPercent);
+ buffer += num;
+ buffer += __tr2qs("human");
+ buffer += "]";
+ }
+
+
+ buffer += "</b></td></tr>";
+
+ buffer += end_of_doc;
+}
+
+void KviChannel::fillCaptionBuffers()
+{
+ static QString begin("<nobr><font color=\"");
+ static QString boldbegin("\"><b>");
+ static QString endofbold("</b></font> <font color=\"");
+ static QString endoffont("\">");
+ static QString end("</font></nobr>");
+
+ if(!connection())
+ {
+ QString dead = __tr2qs("[Dead channel]");
+
+ m_szNameWithUserFlag = m_szName;
+
+ m_szPlainTextCaption = m_szName;
+ m_szPlainTextCaption += " : ";
+ m_szPlainTextCaption += dead;
+
+ m_szHtmlActiveCaption = begin;
+ m_szHtmlActiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name();
+ m_szHtmlActiveCaption += boldbegin;
+ m_szHtmlActiveCaption += m_szName;
+ m_szHtmlActiveCaption += endofbold;
+ m_szHtmlActiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextActive2).name();
+ m_szHtmlActiveCaption += endoffont;
+ m_szHtmlActiveCaption += dead;
+ m_szHtmlActiveCaption += end;
+
+ m_szHtmlInactiveCaption = begin;
+ m_szHtmlInactiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name();
+ m_szHtmlInactiveCaption += boldbegin;
+ m_szHtmlInactiveCaption += m_szName;
+ m_szHtmlInactiveCaption += endofbold;
+ m_szHtmlInactiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive2).name();
+ m_szHtmlInactiveCaption += endoffont;
+ m_szHtmlInactiveCaption += dead;
+ m_szHtmlInactiveCaption += end;
+ return;
+ }
+
+ char uFlag = getUserFlag(connection()->currentNickName());
+
+
+ if(uFlag)
+ {
+ m_szNameWithUserFlag = QChar(uFlag);
+ m_szNameWithUserFlag += m_szName;
+ } else {
+ m_szNameWithUserFlag = m_szName;
+ }
+
+ QString szChanMode;
+ getChannelModeString(szChanMode);
+
+ m_szPlainTextCaption = m_szNameWithUserFlag;
+ if(!szChanMode.isEmpty())
+ {
+ m_szPlainTextCaption += " (+";
+ m_szPlainTextCaption += szChanMode;
+ m_szPlainTextCaption += QChar(')');
+ }
+
+ QString szNickOnServer = QChar('[');
+ szNickOnServer += connection()->currentNickName();
+ szNickOnServer += __tr2qs(" on ");
+ szNickOnServer += connection()->currentServerName();
+ szNickOnServer += QChar(']');
+
+ m_szPlainTextCaption += QChar(' ');
+ m_szPlainTextCaption += szNickOnServer;
+
+ m_szHtmlActiveCaption = begin;
+ m_szHtmlActiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name();
+ m_szHtmlActiveCaption += boldbegin;
+ m_szHtmlActiveCaption += m_szNameWithUserFlag;
+ m_szHtmlActiveCaption += endofbold;
+ m_szHtmlActiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextActive2).name();
+ m_szHtmlActiveCaption += endoffont;
+ m_szHtmlActiveCaption += szNickOnServer;
+ m_szHtmlActiveCaption += end;
+
+ m_szHtmlInactiveCaption = begin;
+ m_szHtmlInactiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name();
+ m_szHtmlInactiveCaption += boldbegin;
+ m_szHtmlInactiveCaption += m_szNameWithUserFlag;
+ m_szHtmlInactiveCaption += endofbold;
+ m_szHtmlInactiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive2).name();
+ m_szHtmlInactiveCaption += endoffont;
+ m_szHtmlInactiveCaption += szNickOnServer;
+ m_szHtmlInactiveCaption += end;
+}
+
+void KviChannel::ownMessage(const QString &buffer)
+{
+ if(!connection())return;
+
+ KviQCString szName = connection()->encodeText(windowName());
+ KviQCString szData = encodeText(buffer);
+ const char * d = szData.data();
+ if(!d)return;
+
+#ifdef COMPILE_CRYPT_SUPPORT
+ if(cryptSessionInfo())
+ {
+ if(cryptSessionInfo()->bDoEncrypt)
+ {
+ if(*d != KVI_TEXT_CRYPTESCAPE)
+ {
+ KviStr encrypted;
+ cryptSessionInfo()->pEngine->setMaxEncryptLen(500 - szName.length());
+ switch(cryptSessionInfo()->pEngine->encrypt(d,encrypted))
+ {
+ case KviCryptEngine::Encrypted:
+ if(!connection()->sendFmtData("PRIVMSG %s :%s",szName.data(),encrypted.ptr()))return;
+ m_pConsole->outputPrivmsg(this,KVI_OUT_OWNPRIVMSGCRYPTED,
+ QString::null,QString::null,QString::null,buffer,KviConsole::NoNotifications);
+ break;
+ case KviCryptEngine::Encoded:
+ {
+ if(!connection()->sendFmtData("PRIVMSG %s :%s",szName.data(),encrypted.ptr()))return;
+ // ugly ,but we must redecode here
+ QString szRedecoded = decodeText(encrypted.ptr());
+ m_pConsole->outputPrivmsg(this,KVI_OUT_OWNPRIVMSG,
+ QString::null,QString::null,QString::null,szRedecoded,KviConsole::NoNotifications);
+ }
+ break;
+ default: // also case KviCryptEngine::EncryptError
+ {
+ QString szEngineError = cryptSessionInfo()->pEngine->lastError();
+ output(KVI_OUT_SYSTEMERROR,
+ __tr2qs("The crypto engine was unable to encrypt the current message (%Q): %Q, no data sent to the server"),
+ &buffer,&szEngineError);
+ }
+ break;
+ }
+ userAction(connection()->currentNickName(),KVI_USERACTION_PRIVMSG);
+ return;
+ } else {
+ d++; //eat the escape code
+ QString tmp = buffer.right(buffer.length() - 1);
+ if(!connection()->sendFmtData("PRIVMSG %s :%s",szName.data(),d))return;
+ m_pConsole->outputPrivmsg(this,KVI_OUT_OWNPRIVMSG,QString::null,QString::null,QString::null,tmp,KviConsole::NoNotifications);
+ userAction(connection()->currentNickName(),KVI_USERACTION_PRIVMSG);
+ return;
+ }
+ }
+ }
+#endif
+
+ if(connection()->sendFmtData("PRIVMSG %s :%s",szName.data(),d))
+ {
+ m_pConsole->outputPrivmsg(this,KVI_OUT_OWNPRIVMSG,QString::null,QString::null,QString::null,buffer,KviConsole::NoNotifications);
+ userAction(connection()->currentNickName(),KVI_USERACTION_PRIVMSG);
+ }
+}
+
+void KviChannel::ownAction(const QString &buffer)
+{
+ if(!connection())return;
+ KviQCString szName = connection()->encodeText(m_szName);
+ KviQCString szData = encodeText(buffer);
+ const char * d = szData.data();
+ if(!d)return;
+ if(!connection()->sendFmtData("PRIVMSG %s :%cACTION %s%c",szName.data(),0x01,d,0x01))return;
+ if(KVS_TRIGGER_EVENT_1_HALTED(KviEvent_OnMeAction,this,QString(d)))return;
+ QString szBuffer = "\r!nc\r";
+ szBuffer += connection()->currentNickName();
+ szBuffer += "\r ";
+ szBuffer += buffer;
+ outputMessage(KVI_OUT_ACTION,szBuffer);
+ userAction(connection()->currentNickName(),KVI_USERACTION_ACTION);
+}
+
+bool KviChannel::nickChange(const QString &oldNick,const QString &newNick)
+{
+ bool bWasHere = m_pUserListView->nickChange(oldNick,newNick);
+ if(bWasHere)channelAction(newNick,KVI_USERACTION_NICK,kvi_getUserActionTemperature(KVI_USERACTION_NICK));
+ return bWasHere;
+}
+
+bool KviChannel::part(const QString &nick)
+{
+ bool bWasHere = m_pUserListView->part(nick);
+ if(bWasHere)channelAction(nick,KVI_USERACTION_PART,kvi_getUserActionTemperature(KVI_USERACTION_PART));
+ return bWasHere;
+}
+
+
+#define KVI_CHANACTIVITY_LIMIT_ICE 5
+#define KVI_CHANACTIVITY_LIMIT_VERYCOLD 10
+#define KVI_CHANACTIVITY_LIMIT_COLD 20
+#define KVI_CHANACTIVITY_LIMIT_UNDEFINED 30
+#define KVI_CHANACTIVITY_LIMIT_HOT 50
+#define KVI_CHANACTIVITY_LIMIT_VERYHOT 70
+
+
+bool KviChannel::activityMeter(unsigned int * puActivityValue,unsigned int * puActivityTemperature)
+{
+ fixActionHistory();
+
+ unsigned int uHotActionPercent;
+ double dActionsPerMinute;
+
+ if(m_pActionHistory->count() < 1)
+ {
+ // nothing is happening
+ uHotActionPercent = 0;
+ dActionsPerMinute = 0;
+ } else {
+ kvi_time_t tNow = kvi_unixTime();
+
+ KviChannelAction * a = m_pActionHistory->last();
+
+ double dSpan = (double)(tNow - a->tTime);
+
+ if(m_pActionHistory->count() < KVI_CHANNEL_ACTION_HISTORY_MAX_COUNT)
+ {
+ if(m_joinTime.secsTo(QDateTime::currentDateTime()) < KVI_CHANNEL_ACTION_HISTORY_MAX_TIMESPAN)
+ {
+ // we can't exactly estimate
+ if(dSpan < 60.0)dSpan = 60.0;
+ } else {
+ // there are less actions at all or they have been pushed out because of the timespan
+ dSpan = KVI_CHANNEL_ACTION_HISTORY_MAX_TIMESPAN;
+ }
+ } // else the actions have been pushed out of the history because they were too much
+
+ if(dSpan > 0.0)
+ dActionsPerMinute = (((double)(m_pActionHistory->count())) / (dSpan)) * 60.0;
+ else
+ dActionsPerMinute = (double)(m_pActionHistory->count()); // ???
+
+ uHotActionPercent = (m_uActionHistoryHotActionCount * 100) / (m_pActionHistory->count());
+ }
+
+
+ if(dActionsPerMinute < 0.3)*puActivityValue = KVI_ACTIVITY_NONE;
+ else if(dActionsPerMinute < 1.0)*puActivityValue = KVI_ACTIVITY_VERYLOW;
+ else if(dActionsPerMinute < 4.0)*puActivityValue = KVI_ACTIVITY_LOW;
+ else if(dActionsPerMinute < 10.0)*puActivityValue = KVI_ACTIVITY_MEDIUM;
+ else if(dActionsPerMinute < 30.0)*puActivityValue = KVI_ACTIVITY_HIGH;
+ else *puActivityValue = KVI_ACTIVITY_VERYHIGH;
+
+ if(uHotActionPercent < KVI_CHANACTIVITY_LIMIT_ICE)*puActivityTemperature = KVI_ACTIVITY_ICE;
+ else if(uHotActionPercent < KVI_CHANACTIVITY_LIMIT_VERYCOLD)*puActivityTemperature = KVI_ACTIVITY_VERYCOLD;
+ else if(uHotActionPercent < KVI_CHANACTIVITY_LIMIT_COLD)*puActivityTemperature = KVI_ACTIVITY_COLD;
+ else if(uHotActionPercent < KVI_CHANACTIVITY_LIMIT_UNDEFINED)*puActivityTemperature = KVI_ACTIVITY_UNDEFINED;
+ else if(uHotActionPercent < KVI_CHANACTIVITY_LIMIT_HOT)*puActivityTemperature = KVI_ACTIVITY_HOT;
+ else if(uHotActionPercent < KVI_CHANACTIVITY_LIMIT_VERYHOT)*puActivityTemperature = KVI_ACTIVITY_VERYHOT;
+ else *puActivityTemperature = KVI_ACTIVITY_FIRE;
+
+ return true;
+}
+
+
+void KviChannel::channelAction(const QString &nick,unsigned int uActionType,int iTemperature)
+{
+ KviChannelAction * a = new KviChannelAction;
+ a->tTime = kvi_unixTime();
+ a->uActionType = uActionType;
+ a->iTemperature = iTemperature;
+ a->szNick = nick;
+
+ if(iTemperature > 0)m_uActionHistoryHotActionCount++;
+
+ m_pActionHistory->append(a);
+ fixActionHistory();
+}
+
+void KviChannel::fixActionHistory()
+{
+ while(m_pActionHistory->count() > KVI_CHANNEL_ACTION_HISTORY_MAX_COUNT)m_pActionHistory->removeFirst();
+ KviChannelAction * a = m_pActionHistory->last();
+ if(!a)return;
+
+ kvi_time_t tMinimum = a->tTime - KVI_CHANNEL_ACTION_HISTORY_MAX_TIMESPAN;
+
+ KviChannelAction * act = m_pActionHistory->first();
+ while(act && (act->tTime < tMinimum))
+ {
+ if(act->iTemperature > 0)m_uActionHistoryHotActionCount--;
+ m_pActionHistory->removeFirst();
+ act = m_pActionHistory->first();
+ }
+}
+
+
+void KviChannel::lostUserFocus()
+{
+ KviWindow::lostUserFocus();
+ if(!m_pMessageView)return;
+ if(m_pMessageView->hasLineMark())m_pMessageView->clearLineMark(true);
+}
+
+
+void KviChannel::getChannelActivityStats(KviChannelActivityStats * s)
+{
+ fixActionHistory();
+
+ s->uActionCount = m_pActionHistory->count();
+ s->iAverageActionTemperature = 0;
+ s->uActionsInTheLastMinute = 0;
+ s->uHotActionCount = 0;
+ s->uHotActionPercent = 0;
+ s->bStatsInaccurate = false;
+
+ if(s->uActionCount < 1)
+ {
+ // nothing is happening
+ s->uLastActionTimeSpan = 0;
+ s->uFirstActionTimeSpan = 0;
+ s->dActionsPerMinute = 0;
+
+ return;
+ }
+
+ kvi_time_t tNow = kvi_unixTime();
+
+ KviChannelAction * a = m_pActionHistory->last();
+ s->uLastActionTimeSpan = tNow - a->tTime;
+
+ a = m_pActionHistory->first();
+ s->uFirstActionTimeSpan = tNow - a->tTime;
+
+ double dSpan = (double)s->uFirstActionTimeSpan;
+
+ if(s->uActionCount < KVI_CHANNEL_ACTION_HISTORY_MAX_COUNT)
+ {
+ if(m_joinTime.secsTo(QDateTime::currentDateTime()) < KVI_CHANNEL_ACTION_HISTORY_MAX_TIMESPAN)
+ {
+ // we can't exactly estimate
+ s->bStatsInaccurate = true;
+ if(dSpan < 60.0)dSpan = 60.0;
+ } else {
+ // there are less actions at all or they have been pushed out because of the timespan
+ dSpan = KVI_CHANNEL_ACTION_HISTORY_MAX_TIMESPAN;
+ }
+ } // else the actions have been pushed out of the history because they were too much
+
+ if(dSpan > 0.0)
+ s->dActionsPerMinute = (((double)s->uActionCount) / (dSpan)) * 60.0;
+ else
+ s->dActionsPerMinute = (double)s->uActionCount; // ???
+
+ kvi_time_t tTwoMinsAgo = tNow;
+ tTwoMinsAgo-= 120;
+ tNow -= 60;
+
+ KviPointerHashTable<QString,int> userDict;
+ userDict.setAutoDelete(false);
+
+ int fake;
+ s->lTalkingUsers.clear();
+ s->lWereTalkingUsers.clear();
+
+ for(a = m_pActionHistory->last();a;a = m_pActionHistory->prev())
+ {
+ if(a->tTime >= tNow)s->uActionsInTheLastMinute++;
+
+ if(a->iTemperature > 0)s->uHotActionCount++;
+ s->iAverageActionTemperature += a->iTemperature;
+
+ if((a->uActionType == KVI_USERACTION_PRIVMSG) ||
+ (a->uActionType == KVI_USERACTION_NOTICE) ||
+ (a->uActionType == KVI_USERACTION_ACTION))
+ {
+ if(!userDict.find(a->szNick))
+ {
+ if(isOn(a->szNick.ascii()))
+ {
+ if(a->tTime >= tTwoMinsAgo)s->lTalkingUsers.append(a->szNick);
+ else s->lWereTalkingUsers.append(a->szNick);
+ userDict.insert(a->szNick,&fake);
+ }
+ }
+ }
+ }
+
+ s->iAverageActionTemperature = s->iAverageActionTemperature / (int)s->uActionCount;
+
+ s->uHotActionPercent = (s->uHotActionCount * 100) / s->uActionCount;
+}
+
+
+
+void KviChannel::userAction(const QString &nick,const QString &user,const QString &host,unsigned int uActionType)
+{
+ int iTemperature = kvi_getUserActionTemperature(uActionType);
+ channelAction(nick,uActionType,iTemperature);
+ m_pUserListView->userAction(nick,user,host,iTemperature);
+}
+
+void KviChannel::userAction(const QString &nick,unsigned int uActionType)
+{
+ int iTemperature = kvi_getUserActionTemperature(uActionType);
+ channelAction(nick,uActionType,iTemperature);
+ m_pUserListView->userAction(nick,iTemperature);
+}
+
+void KviChannel::userAction(KviIrcMask * user,unsigned int uActionType)
+{
+ int iTemperature = kvi_getUserActionTemperature(uActionType);
+ channelAction(user->nick(),uActionType,iTemperature);
+ m_pUserListView->userAction(user,iTemperature);
+}
+
+void KviChannel::topicSelected(const QString & topic)
+{
+ if(!connection())return;
+ KviQCString szEncoded = encodeText(topic);
+ KviQCString szName = connection()->encodeText(m_szName);
+ connection()->sendFmtData("TOPIC %s :%s",szName.data(),szEncoded.length() ? szEncoded.data() : "");
+}
+
+void KviChannel::closeEvent(QCloseEvent *e)
+{
+ if((m_iStateFlags & KVI_CHANNEL_STATE_SENTPART) || (m_iStateFlags & KVI_CHANNEL_STATE_DEADCHAN) || !(m_pConsole->isConnected()))
+ {
+ m_pContext->unregisterDeadChannel(this);
+ KviWindow::closeEvent(e);
+ } else {
+ e->ignore();
+ // FIXME: #warning "THIS PART SHOULD BECOME A COMMAND /PART $option()..so the identifiers are parsed"
+ if(connection())
+ {
+ QString tmp = KVI_OPTION_STRING(KviOption_stringPartMessage);
+ tmp.replace(";","\\;");
+ tmp.replace("\n"," ");
+ KviKvsVariant vRet;
+
+ if(KviKvsScript::evaluate(tmp,this,0,&vRet))vRet.asString(tmp);
+
+ KviQCString dat = encodeText(tmp);
+ partMessageSent();
+ KviQCString szName = connection()->encodeText(m_szName);
+ connection()->sendFmtData("PART %s :%s",szName.data(),dat.data() ? dat.data() : "");
+ // be sure to not reference ourselves here.. we could be disconnected!
+ } else {
+ partMessageSent(); // huh ?
+ }
+ }
+}
+
+void KviChannel::partMessageSent(bool bCloseOnPart,bool bShowMessage)
+{
+ m_iStateFlags |= KVI_CHANNEL_STATE_SENTPART;
+ if(!bCloseOnPart)m_iStateFlags |= KVI_CHANNEL_STATE_NOCLOSEONPART;
+ if(bShowMessage)outputNoFmt(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Sent part request, waiting for reply..."));
+}
+
+#define IS_FNC(__name,__ulvname) \
+bool KviChannel::__name(bool bAtLeast) \
+{ \
+ if(!connection())return false; \
+ return m_pUserListView->__ulvname(connection()->currentNickName(),bAtLeast); \
+}
+
+IS_FNC(isMeChanOwner,isChanOwner)
+IS_FNC(isMeChanAdmin,isChanAdmin)
+IS_FNC(isMeOp,isOp)
+IS_FNC(isMeVoice,isVoice)
+IS_FNC(isMeHalfOp,isHalfOp)
+IS_FNC(isMeUserOp,isUserOp)
+
+int KviChannel::myFlags()
+{
+ if(!connection())return 0;
+ return m_pUserListView->flags(connection()->currentNickName());
+}
+
+
+void KviChannel::setMask(char flag, const QString &mask,bool bAdd,const QString &setBy,unsigned int setAt)
+{
+ if(!connection())return;
+ KviPointerList<KviMaskEntry> * list = m_pBanList;
+ KviMaskEditor * editor = m_pBanEditor;
+ switch(flag)
+ {
+ case 'b':
+ m_iStateFlags ^= KVI_CHANNEL_STATE_HAVEBANLIST;
+ break;
+ case 'e':
+ m_iStateFlags ^= KVI_CHANNEL_STATE_HAVEBANEXCEPTIONLIST;
+ list = m_pBanExceptionList;
+ editor = m_pBanExceptionEditor;
+ break;
+ case 'I':
+ m_iStateFlags ^= KVI_CHANNEL_STATE_HAVEINVITELIST;
+ list = m_pInviteList;
+ editor = m_pInviteEditor;
+ break;
+ }
+
+ internalMask(mask,bAdd,setBy,setAt,list,&editor);
+ m_pUserListView->setMaskEntries(flag,(int)list->count());
+}
+
+void KviChannel::internalMask(const QString &mask,bool bAdd,const QString &setBy,unsigned int setAt,KviPointerList<KviMaskEntry> *l,KviMaskEditor **ppEd)
+{
+ KviMaskEntry * e = 0;
+ if(bAdd)
+ {
+ for(e = l->first();e;e = l->next())
+ {
+ if(KviQString::equalCI(e->szMask,mask))return; //already there
+ }
+ e = new KviMaskEntry;
+ e->szMask = mask;
+ e->szSetBy = (!setBy.isEmpty()) ? setBy : __tr2qs("(Unknown)");
+ e->uSetAt = setAt;
+ l->append(e);
+ if(*ppEd)(*ppEd)->addMask(e);
+ } else {
+ for(e = l->first();e;e = l->next())
+ {
+ if(KviQString::equalCI(e->szMask,mask))break;
+ }
+ if(e)
+ {
+ if(*ppEd)(*ppEd)->removeMask(e);
+ l->removeRef(e);
+ }
+ }
+}
+
+void KviChannel::updateModeLabel()
+{
+ QString tmp = m_szChannelMode;
+ QString tip = __tr2qs("<b>Channel mode:</b>");
+ //const char * aux = m_szChannelMode.utf8().data(); leaks memory and will not work with getChannelModeDescription() (can channel modes be multibyte ?)
+ KviStr mod = m_szChannelMode;
+ const char * aux = mod.ptr();
+ while(*aux)
+ {
+ KviQString::appendFormatted(tip,"<br>%c: %Q",*aux,&(m_pConsole->connection()->serverInfo()->getChannelModeDescription(*aux)));
+ ++aux;
+ }
+
+ if(!m_szChannelKey.isEmpty())
+ {
+ if(!tmp.isEmpty())tmp.append(' ');
+ KviQString::appendFormatted(tmp,"k:%s",m_szChannelKey.utf8().data());
+ KviQString::appendFormatted(tip,__tr2qs("<br><b>Key:</b> %s"),m_szChannelKey.utf8().data());
+ }
+
+ if(m_szChannelLimit.hasData())
+ {
+ if(!tmp.isEmpty())tmp.append(' ');
+ KviQString::appendFormatted(tmp,"l:%s",m_szChannelLimit.ptr());
+ KviQString::appendFormatted(tip,__tr2qs("<br><b>Limit:</b> %s"),m_szChannelLimit.ptr());
+ }
+
+ m_pModeWidget->refreshModes();
+ KviTalToolTip::remove(m_pModeWidget);
+ KviTalToolTip::add(m_pModeWidget,tip);
+}
+
+/*
+void KviChannel::outputMessage(int msg_type,const char *format,...)
+{
+ kvi_wchar_t txt_ptr[512]; //It should be enough for all outputs...
+ kvi_va_list list;
+ kvi_va_start(list,format);
+ if(kvi_wvsnprintcf(txt_ptr,512,format,list) < 0){
+ //Just in case...
+ kvi_va_end(list);
+ int len = 512;
+ kvi_wchar_t *long_txt_ptr = 0;
+ int result;
+ do{
+ len += 512;
+ //first time long_txt_ptr == 0 so it is equivalent to malloc
+ //At least the man page says that...
+ long_txt_ptr = (kvi_wchar_t *)kvi_realloc((void *)long_txt_ptr,len * sizeof(kvi_wchar_t));
+ kvi_va_start(list,format);
+ result = kvi_wvsnprintcf(long_txt_ptr,len,format,list);
+ kvi_va_end(list);
+ } while(result < 0);
+ internalOutput(m_pMessageView ? m_pMessageView : m_pIrcView,msg_type,long_txt_ptr);
+ kvi_free((void *)long_txt_ptr);
+ } else {
+ //Succesful vsnprintf
+ kvi_va_end(list);
+ internalOutput(m_pMessageView ? m_pMessageView : m_pIrcView,msg_type,txt_ptr);
+ }
+}
+*/
+
+void KviChannel::outputMessage(int msg_type,const QString &msg)
+{
+ QString szBuf(msg);
+ preprocessMessage(szBuf);
+ const QChar * pC = KviQString::nullTerminatedArray(szBuf);
+ if(!pC)return;
+ internalOutput(m_pMessageView ? m_pMessageView : m_pIrcView,msg_type,(const kvi_wchar_t *)pC);
+}
+
+
+
+void KviChannel::checkChannelSync()
+{
+ if(m_iStateFlags & KVI_CHANNEL_STATE_SYNCHRONIZED)return;
+
+ if(m_iStateFlags & KVI_CHANNEL_STATE_SENTWHOREQUEST)
+ {
+ if(!(m_iStateFlags & KVI_CHANNEL_STATE_HAVEWHOLIST))return;
+ }
+
+ if(m_iStateFlags & KVI_CHANNEL_STATE_SENTBANLISTREQUEST)
+ {
+ if(!(m_iStateFlags & KVI_CHANNEL_STATE_HAVEBANLIST))return;
+ }
+
+ if(m_iStateFlags & KVI_CHANNEL_STATE_SENTBANEXCEPTIONLISTREQUEST)
+ {
+ if(!(m_iStateFlags & KVI_CHANNEL_STATE_HAVEBANEXCEPTIONLIST))return;
+ }
+
+ if(m_iStateFlags & KVI_CHANNEL_STATE_SENTINVITELISTREQUEST)
+ {
+ if(!(m_iStateFlags & KVI_CHANNEL_STATE_HAVEINVITELIST))return;
+ }
+
+ m_iStateFlags |= KVI_CHANNEL_STATE_SYNCHRONIZED;
+ // we already have all the spontaneous server replies
+ // (so probably mode, topic (or no topic is set),names)
+ // we have already received the I and e lists (if requested)
+ kvs_int_t iSyncTime = m_joinTime.time().msecsTo(QTime::currentTime());
+ if(iSyncTime < 0)iSyncTime += 86400000;
+
+ bool bStop = KVS_TRIGGER_EVENT_1_HALTED(KviEvent_OnChannelSync,this,iSyncTime);
+
+ if(!bStop && KVI_OPTION_BOOL(KviOption_boolShowChannelSyncTime))
+ {
+ output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Channel synchronized in %d.%d seconds"),iSyncTime / 1000,iSyncTime % 1000);
+ }
+}
+
+bool KviChannel::eventFilter(QObject * o, QEvent * e)
+{
+ if(e->type() == QEvent::FocusOut && o == m_pTopicWidget && \
+ m_pTopicWidget->isVisible())
+ m_pTopicWidget->deactivate();
+
+ return KviWindow::eventFilter(o, e);
+}
+
+
+void KviChannel::preprocessMessage(QString & szMessage)
+{
+ QStringList strings = QStringList::split(" ",szMessage, TRUE);
+ for ( QStringList::Iterator it = strings.begin(); it != strings.end(); ++it ) {
+ if((*it).contains('\r')) continue;
+ QString tmp = KviMircCntrl::stripControlBytes(*it);
+ if( findEntry(*it) ) *it=QString("\r!n\r%1\r").arg(*it);
+ if(m_pConsole)
+ if(m_pConsole->connection())
+ if(m_pConsole->connection()->serverInfo()->supportedChannelTypes().contains(tmp[0]))
+ if((*it)==tmp)
+ *it=QString("\r!c\r%1\r").arg(*it);
+ else
+ *it=QString("\r!c%1\r%2\r").arg(tmp).arg(*it);
+ }
+ szMessage=strings.join(" ");
+}
+
+void KviChannel::unhighlight()
+{
+ if(!m_pTaskBarItem)return;
+ m_pTaskBarItem->unhighlight();
+}
+
+#include "kvi_channel.moc"
diff --git a/src/kvirc/ui/kvi_channel.h b/src/kvirc/ui/kvi_channel.h
new file mode 100644
index 00000000..0efdabb0
--- /dev/null
+++ b/src/kvirc/ui/kvi_channel.h
@@ -0,0 +1,313 @@
+#ifndef _KVI_CHANNEL_H_
+#define _KVI_CHANNEL_H_
+//=============================================================================
+//
+// File : kvi_channel.h
+// Creation date : Tue Aug 1 2000 01:42:00 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+
+#include "kvi_console.h"
+#include "kvi_window.h"
+#include "kvi_string.h"
+#include "kvi_ircuserdb.h"
+#include "kvi_pixmap.h"
+#include "kvi_userlistview.h"
+#include "kvi_time.h"
+#include "kvi_modew.h"
+#include "kvi_valuelist.h"
+
+#include <qdatetime.h>
+#include "kvi_pointerhashtable.h"
+#include <qstringlist.h>
+
+class KviConsole;
+class QSplitter;
+class QToolButton;
+class KviTopicWidget;
+class KviIrcMask;
+class KviThemedLabel;
+class KviTalHBox;
+
+#ifdef COMPILE_ON_WINDOWS
+ // windows compiler wants this instead of the forward decl
+ #include "kvi_maskeditor.h"
+#else
+ typedef struct _KviMaskEntry KviMaskEntry; // kvi_maskeditor.h
+#endif
+class KviMaskEditor;
+class KviModeEditor;
+
+#define KVI_CHANNEL_STATE_HAVEALLNAMES 1
+#define KVI_CHANNEL_STATE_HAVEBANLIST (1 << 1)
+#define KVI_CHANNEL_STATE_HAVEWHOLIST (1 << 2)
+#define KVI_CHANNEL_STATE_HAVEBANEXCEPTIONLIST (1 << 3)
+#define KVI_CHANNEL_STATE_HAVEINVITELIST (1 << 4)
+#define KVI_CHANNEL_STATE_DEADCHAN (1 << 5)
+
+#define KVI_CHANNEL_STATE_SENTBANLISTREQUEST (1 << 6)
+#define KVI_CHANNEL_STATE_SENTBANEXCEPTIONLISTREQUEST (1 << 7)
+#define KVI_CHANNEL_STATE_SENTINVITELISTREQUEST (1 << 8)
+#define KVI_CHANNEL_STATE_SENTWHOREQUEST (1 << 9)
+
+#define KVI_CHANNEL_STATE_SENTPART (1 << 10)
+#define KVI_CHANNEL_STATE_SYNCHRONIZED (1 << 11)
+
+#define KVI_CHANNEL_STATE_NOCLOSEONPART (1 << 12)
+
+#define KVI_CHANNEL_STATE_SENTSYNCWHOREQUEST (1 << 13)
+
+typedef struct _KviChannelAction
+{
+ QString szNick; // action source nick
+ unsigned int uActionType; // type of the action
+ kvi_time_t tTime; // time of the action
+ int iTemperature; // temperature of the action
+} KviChannelAction;
+
+// this is the maximum count of actions that we keep in memory
+#define KVI_CHANNEL_ACTION_HISTORY_MAX_COUNT 40
+// this is the timespan of the oldest action that we keep in memory
+// 600 secs = 10 mins
+#define KVI_CHANNEL_ACTION_HISTORY_MAX_TIMESPAN 600
+
+typedef struct _KviChannelActivityStats
+{
+ unsigned int uActionCount; // number of actions in the history
+ bool bStatsInaccurate; // the stats are inaccurate because we have just joined the chan
+ unsigned int uLastActionTimeSpan; // the timespan between the last action and now
+ unsigned int uFirstActionTimeSpan; // the time span between the first and the last action
+ double dActionsPerMinute; // average number of actions per minute in the lastActionTimeSpan
+ unsigned int uActionsInTheLastMinute; // number of actions in the last minute
+ int iAverageActionTemperature; // the average chan temperature
+ unsigned int uHotActionCount;
+ unsigned int uHotActionPercent;
+ QStringList lTalkingUsers; // users that seem to be talking NOW
+ QStringList lWereTalkingUsers;
+} KviChannelActivityStats;
+
+class KVIRC_API KviChannel : public KviWindow
+{
+ Q_OBJECT
+public:
+ KviChannel(KviFrame * lpFrm,KviConsole * lpConsole,const char * name);
+ ~KviChannel();
+protected:
+ QSplitter * m_pTopSplitter;
+ QSplitter * m_pVertSplitter;
+ BUTTON_CLASS * m_pDoubleViewButton;
+ KviWindowToolPageButton * m_pListViewButton;
+ KviWindowToolPageButton * m_pBanEditorButton;
+ KviWindowToolPageButton * m_pBanExceptionEditorButton;
+ KviWindowToolPageButton * m_pInviteEditorButton;
+ KviWindowToolPageButton * m_pModeEditorButton;
+ KviMaskEditor * m_pBanEditor;
+ KviMaskEditor * m_pBanExceptionEditor;
+ KviMaskEditor * m_pInviteEditor;
+ KviModeEditor * m_pModeEditor;
+ KviIrcView * m_pMessageView;
+ KviTopicWidget * m_pTopicWidget;
+ KviUserListView * m_pUserListView;
+ KviModeWidget * m_pModeWidget;
+ int m_iStateFlags;
+ QString m_szChannelMode;
+ QString m_szChannelKey;
+ KviStr m_szChannelLimit;
+ KviPointerList<KviMaskEntry> * m_pBanList;
+ KviPointerList<KviMaskEntry> * m_pBanExceptionList;
+ KviPointerList<KviMaskEntry> * m_pInviteList;
+ KviPixmap m_privateBackground;
+ QDateTime m_joinTime;
+ QString m_szNameWithUserFlag;
+ KviPointerHashTable<const char *,QString> * m_pTmpHighLighted;
+ unsigned int m_uActionHistoryHotActionCount;
+ KviPointerList<KviChannelAction> * m_pActionHistory;
+ kvi_time_t m_tLastReceivedWhoReply;
+ KviValueList<int> m_VertSplitterSizesList;
+ KviTalHBox * m_pButtonContainer;
+protected:
+ bool eventFilter(QObject *, QEvent *);
+ virtual QPixmap * myIconPtr();
+ virtual void fillCaptionBuffers();
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual void closeEvent(QCloseEvent *e);
+// virtual void fillContextPopup(KviTalPopupMenu * p);
+ virtual void getConfigGroupName(QString &buf);
+ virtual void saveProperties(KviConfig * cfg);
+ virtual void loadProperties(KviConfig * cfg);
+ virtual void applyOptions();
+ virtual void getBaseLogFileName(QString &buffer);
+ virtual void triggerCreationEvents();
+ void toggleEditor(KviMaskEditor ** ppEd,KviWindowToolPageButton ** ppBtn,KviPointerList<KviMaskEntry> *l,char flag,const char *edName);
+ void internalMask(const QString &mask,bool bAdd,const QString &setBy,unsigned int setAt,KviPointerList<KviMaskEntry> *l,KviMaskEditor **ppEd);
+ void checkChannelSync();
+ void showDoubleView(bool bShow);
+ void fixActionHistory();
+ void getTalkingUsersStats(QString &buffer,QStringList &l,bool bPast);
+public:
+ void getChannelActivityStats(KviChannelActivityStats * s);
+ //void getChannelActivityStatsDescription(QString &buffer);
+
+ KviPointerList<KviMaskEntry> * banList(){ return m_pBanList; };
+ KviPointerList<KviMaskEntry> * banExceptionList(){ return m_pBanExceptionList; };
+ KviPointerList<KviMaskEntry> * inviteList(){ return m_pInviteList; };
+
+ QString * firstSelectedNickname(){ return m_pUserListView->firstSelectedNickname(); };
+ QString * nextSelectedNickname(){ return m_pUserListView->nextSelectedNickname(); };
+
+ int selectedCount(){ return m_pUserListView->selectedCount(); };
+ int opCount(){ return m_pUserListView->opCount(); };
+ int voiceCount(){ return m_pUserListView->voiceCount(); };
+ int halfOpCount(){ return m_pUserListView->halfOpCount(); };
+ int userOpCount(){ return m_pUserListView->userOpCount(); };
+ int chanAdminCount(){ return m_pUserListView->chanAdminCount(); };
+ int chanOwnerCount(){ return m_pUserListView->chanOwnerCount(); };
+ unsigned int count(){ return m_pUserListView->count(); };
+
+ unsigned int banCount(){ return m_pBanList->count(); };
+ unsigned int banExceptionCount(){ return m_pBanExceptionList->count(); };
+ unsigned int inviteCount(){ return m_pInviteList->count(); };
+
+ const QString & nameWithUserFlag(){ return m_szNameWithUserFlag; };
+ virtual const QString & target(){ return windowName(); };
+// void appendSelectedNicknames(KviStr &buffer);
+ void setMask(char flag, const QString &mask,bool bAdd,const QString &setBy,unsigned int setAt);
+
+ kvi_time_t lastReceivedWhoReply(){ return m_tLastReceivedWhoReply; };
+ void setLastReceivedWhoReply(kvi_time_t tTime){ m_tLastReceivedWhoReply = tTime; };
+ void setSentSyncWhoRequest(){ m_iStateFlags |= KVI_CHANNEL_STATE_SENTSYNCWHOREQUEST; };
+ void clearSentSyncWhoRequest(){ m_iStateFlags ^= KVI_CHANNEL_STATE_SENTSYNCWHOREQUEST; };
+ bool sentSyncWhoRequest(){ return (m_iStateFlags & KVI_CHANNEL_STATE_SENTSYNCWHOREQUEST); };
+
+ bool sentWhoRequest(){ return (m_iStateFlags & KVI_CHANNEL_STATE_SENTWHOREQUEST); };
+ void setSentWhoRequest(){ m_iStateFlags |= KVI_CHANNEL_STATE_SENTWHOREQUEST; };
+ bool sentInviteListRequest(){ return (m_iStateFlags & KVI_CHANNEL_STATE_SENTINVITELISTREQUEST); };
+ void setSentInviteListRequest(){ m_iStateFlags |= KVI_CHANNEL_STATE_SENTINVITELISTREQUEST; };
+ void setInviteListDone(){ m_iStateFlags ^= KVI_CHANNEL_STATE_SENTINVITELISTREQUEST; };
+ bool sentBanListRequest(){ return (m_iStateFlags & KVI_CHANNEL_STATE_SENTBANLISTREQUEST); };
+ void setSentBanListRequest(){ m_iStateFlags |= KVI_CHANNEL_STATE_SENTBANLISTREQUEST; };
+ void setBanListDone(){ m_iStateFlags ^= KVI_CHANNEL_STATE_SENTBANLISTREQUEST; };
+ bool sentBanExceptionListRequest(){ return (m_iStateFlags & KVI_CHANNEL_STATE_SENTBANEXCEPTIONLISTREQUEST); };
+ void setSentBanExceptionListRequest(){ m_iStateFlags |= KVI_CHANNEL_STATE_SENTBANEXCEPTIONLISTREQUEST; };
+ void setBanExceptionListDone(){ m_iStateFlags ^= KVI_CHANNEL_STATE_SENTBANEXCEPTIONLISTREQUEST; };
+
+ bool hasAllNames(){ return (m_iStateFlags & KVI_CHANNEL_STATE_HAVEALLNAMES); };
+ void setHasAllNames(){ m_iStateFlags |= KVI_CHANNEL_STATE_HAVEALLNAMES; checkChannelSync(); };
+ bool hasInviteList(){ return (m_iStateFlags & KVI_CHANNEL_STATE_HAVEINVITELIST); checkChannelSync(); };
+ void setHasInviteList(){ m_iStateFlags |= KVI_CHANNEL_STATE_HAVEINVITELIST; };
+ bool hasWhoList(){ return (m_iStateFlags & KVI_CHANNEL_STATE_HAVEWHOLIST); };
+ void setHasWhoList(){ m_iStateFlags |= KVI_CHANNEL_STATE_HAVEWHOLIST; checkChannelSync(); };
+ bool hasBanList(){ return (m_iStateFlags & KVI_CHANNEL_STATE_HAVEBANLIST); };
+ void setHasBanList(){ m_iStateFlags |= KVI_CHANNEL_STATE_HAVEBANLIST; checkChannelSync(); };
+ bool hasBanExceptionList(){ return (m_iStateFlags & KVI_CHANNEL_STATE_HAVEBANEXCEPTIONLIST); };
+ void setHasBanExceptionList(){ m_iStateFlags |= KVI_CHANNEL_STATE_HAVEBANEXCEPTIONLIST; checkChannelSync(); };
+
+ bool closeOnPart(){ return !(m_iStateFlags & KVI_CHANNEL_STATE_NOCLOSEONPART); };
+ void partMessageSent(bool bCloseOnPart = true,bool bShowMessage = true);
+
+ virtual bool activityMeter(unsigned int * puActivityValue,unsigned int * puActivityTemperature);
+
+ void setDeadChan();
+ void setAliveChan();
+ void prependUserFlag(const QString &nick,QString &buffer){ m_pUserListView->prependUserFlag(nick,buffer); };
+ char getUserFlag(const QString &nick){ return m_pUserListView->getUserFlag(nick); };
+ bool isDeadChan(){ return (m_iStateFlags & KVI_CHANNEL_STATE_DEADCHAN); };
+ virtual QSize sizeHint() const;
+ void enableUserListUpdates(bool bEnable){ m_pUserListView->enableUpdates(bEnable); };
+ KviUserListEntry * join(const QString &nick,const QString &user = QString::null,const QString &host = QString::null,int iFlags = 0)
+ { return m_pUserListView->join(nick,user,host,iFlags); };
+ bool op(const QString &nick,bool bOp){ return m_pUserListView->op(nick,bOp); };
+ bool avatarChanged(const QString &nick){ return m_pUserListView->avatarChanged(nick); };
+ bool voice(const QString &nick,bool bVoice){ return m_pUserListView->voice(nick,bVoice); };
+ bool halfop(const QString &nick,bool bHalfOp){ return m_pUserListView->halfop(nick,bHalfOp); };
+ bool userop(const QString &nick,bool bUserOp){ return m_pUserListView->userop(nick,bUserOp); };
+ bool setChanOwner(const QString &nick,bool bChanOwner){ return m_pUserListView->setChanOwner(nick,bChanOwner); };
+ bool setChanAdmin(const QString &nick,bool bChanAdmin){ return m_pUserListView->setChanAdmin(nick,bChanAdmin); };
+ void userAction(KviIrcMask * user,unsigned int uActionType);
+ void userAction(const QString &nick,unsigned int uActionType);
+ void userAction(const QString &nick,const QString &user,const QString &host,unsigned int uActionType);
+ bool nickChange(const QString &oldNick,const QString &newNick);
+ void channelAction(const QString &nick,unsigned int uActionType,int iTemperature);
+ bool part(const QString &nick);
+ bool isOn(const QString &nick){ return (m_pUserListView->findEntry(nick) != 0); };
+ KviUserListEntry * findEntry(const QString &nick){ return m_pUserListView->findEntry(nick); };
+ KviUserListView * userListView(){ return m_pUserListView; };
+ bool isMeOp(bool bAtLeast = false);
+ bool isMeChanOwner(bool bAtLeast = false);
+ bool isMeChanAdmin(bool bAtLeast = false);
+ bool isMeVoice(bool bAtLeast = false);
+ bool isMeHalfOp(bool bAtLeast = false);
+ bool isMeUserOp(bool bAtLeast = false);
+ bool isOp(const QString &nick,bool bAtLeast = false){ return m_pUserListView->isOp(nick,bAtLeast); };
+ bool isVoice(const QString &nick,bool bAtLeast = false){ return m_pUserListView->isVoice(nick,bAtLeast); };
+ bool isHalfOp(const QString &nick,bool bAtLeast = false){ return m_pUserListView->isHalfOp(nick,bAtLeast); };
+ bool isUserOp(const QString &nick,bool bAtLeast = false){ return m_pUserListView->isUserOp(nick,bAtLeast); };
+ bool isChanOwner(const QString &nick,bool bAtLeast = false){ return m_pUserListView->isChanOwner(nick,bAtLeast); };
+ bool isChanAdmin(const QString &nick,bool bAtLeast = false){ return m_pUserListView->isChanAdmin(nick,bAtLeast); };
+ int myFlags();
+ void updateModeLabel();
+ KviTopicWidget * topicWidget(){ return m_pTopicWidget; };
+ virtual void outputMessage(int msg_type,const QString &msg);
+ void ownMessage(const QString &buffer);
+ void ownAction(const QString &buffer);
+ void setChannelMode(char mode,bool bAdd);
+ void setChannelKey(const char * key);
+ void setChannelLimit(const char * limit);
+
+ void getChannelModeString(QString &buffer);
+
+ KviStr & channelLimit(){ return m_szChannelLimit; };
+ bool hasChannelLimit(){ return m_szChannelLimit.hasData(); };
+
+ bool hasChannelKey() { return !m_szChannelKey.isEmpty(); };
+ QString & channelKey(){ return m_szChannelKey; };
+
+ void addHighlightedUser(const char * nick);
+ void removeHighlightedUser(const char * nick);
+ bool isHighlightedUser(const char * nick) { return m_pTmpHighLighted->find(nick); };
+ KviIrcView * messageView() const { return m_pMessageView; };
+ virtual void lostUserFocus();
+ virtual void getTaskBarTipText(QString &buffer);
+ QString channelMode() { return m_szChannelMode; };
+
+ void unhighlight();
+
+ QFrame * buttonContainer() { return (QFrame*)m_pButtonContainer; };
+private slots:
+ void toggleDoubleView();
+ void toggleListView();
+ void toggleBanEditor();
+ void toggleBanExceptionEditor();
+ void toggleInviteEditor();
+ void toggleModeEditor();
+ void topicSelected(const QString & topic);
+ void setMode(const char * mode);
+ void modeSelectorDone();
+ void textViewRightClicked();
+ void removeMasks(KviMaskEditor *ed,KviPointerList<KviMaskEntry> *l);
+ void toggleToolButtons();
+protected:
+ virtual void preprocessMessage(QString & szMessage);
+};
+
+#endif //_KVI_CHANNEL_H_
diff --git a/src/kvirc/ui/kvi_colorwin.cpp b/src/kvirc/ui/kvi_colorwin.cpp
new file mode 100644
index 00000000..9cc1c6e4
--- /dev/null
+++ b/src/kvirc/ui/kvi_colorwin.cpp
@@ -0,0 +1,122 @@
+//=============================================================================
+//
+// File : kvi_colorwin.cpp
+// Creation date : Wed Jan 6 1999 04:30:20 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_colorwin.h"
+#include "kvi_app.h"
+#include "kvi_options.h"
+
+
+#include <qnamespace.h>
+#include <qpainter.h>
+#include <qstring.h>
+#include <qevent.h>
+
+
+KviColorWindow::KviColorWindow()
+:QWidget(0,"toplevel_color_window",Qt::WType_Popup)
+{
+#ifdef COMPILE_USE_QT4
+ setFocusPolicy(Qt::NoFocus);
+#else
+ setFocusPolicy(QWidget::NoFocus);
+#endif
+ setBackgroundMode(Qt::NoBackground);
+ setFixedSize(146,38);
+ m_pOwner = 0;
+ QFont fnt = QFont();
+ fnt.setStyleHint(QFont::TypeWriter);
+ fnt.setPointSize(10);
+ //QFont fnt("fixed",10);
+ setFont(fnt);
+ m_iTimerId = -1;
+}
+
+KviColorWindow::~KviColorWindow()
+{
+ if(m_iTimerId != -1)
+ killTimer(m_iTimerId);
+// if(m_pOwner)m_pOwner->setFocus();
+}
+
+void KviColorWindow::popup(QWidget *owner)
+{
+ m_pOwner = owner;
+ show();
+}
+
+
+void KviColorWindow::paintEvent(QPaintEvent *)
+{
+ static int clrIdx[16]={ 1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1 };
+ QPainter p(this);
+
+ for(int i=0;i<16;i++)
+ {
+ p.fillRect((i % 8) * 18,(i / 8) * 18,18,18,KVI_OPTION_MIRCCOLOR(i));
+ p.setPen(KVI_OPTION_MIRCCOLOR(clrIdx[i]));
+ KviStr szI(KviStr::Format,"%d",i);
+ p.drawText((i % 8) * 18,(i / 8) * 18,18,18,Qt::AlignVCenter | Qt::AlignHCenter,szI.ptr());
+ }
+}
+
+void KviColorWindow::keyPressEvent(QKeyEvent *e)
+{
+ if(m_iTimerId != -1)
+ killTimer(m_iTimerId);
+ hide();
+ if(m_pOwner)g_pApp->sendEvent(m_pOwner,e);
+}
+
+void KviColorWindow::mousePressEvent(QMouseEvent *e)
+{
+ QString str;
+ int key=e->x()/18;
+ if (e->x()<36 && e->y()>18) key +=8;
+ if (e->x()>36 && e->y()>18) key -=2;
+ int ascii=key+48;
+ str.setNum(key);
+ if (e->x()>36 && e->y()>18)
+ if(m_pOwner) g_pApp->sendEvent(m_pOwner,new QKeyEvent(QEvent::KeyPress,Qt::Key_1,49,Qt::NoButton,"1"));
+ if(m_pOwner) g_pApp->sendEvent(m_pOwner,new QKeyEvent(QEvent::KeyPress,key,ascii,Qt::NoButton,str));
+ if(m_iTimerId != -1)
+ killTimer(m_iTimerId);
+ hide();
+}
+void KviColorWindow::show()
+{
+ m_iTimerId = startTimer(10000); //10 sec ...seems enough
+ QWidget::show();
+}
+
+void KviColorWindow::timerEvent(QTimerEvent *)
+{
+ if(m_iTimerId != -1)
+ killTimer(m_iTimerId);
+ hide();
+}
+
+
+#include "kvi_colorwin.moc"
diff --git a/src/kvirc/ui/kvi_colorwin.h b/src/kvirc/ui/kvi_colorwin.h
new file mode 100644
index 00000000..21cf1ae3
--- /dev/null
+++ b/src/kvirc/ui/kvi_colorwin.h
@@ -0,0 +1,47 @@
+#ifndef _KVI_COLORWIN_H_
+#define _KVI_COLORWIN_H_
+//
+// File : kvi_colorwin.h
+// Creation date : Wed Jan 6 1999 04:27:45 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include "kvi_settings.h"
+
+#include <qwidget.h>
+
+class KVIRC_API KviColorWindow : public QWidget
+{
+ Q_OBJECT
+public:
+ KviColorWindow();
+ ~KviColorWindow();
+private:
+ QWidget *m_pOwner;
+ int m_iTimerId;
+public:
+ void popup(QWidget *owner);
+private:
+ virtual void show();
+ virtual void paintEvent(QPaintEvent *);
+ virtual void keyPressEvent(QKeyEvent *e);
+ virtual void mousePressEvent(QMouseEvent *);
+ virtual void timerEvent(QTimerEvent *);
+};
+
+#endif //_KVI_COLORWIN_H_
diff --git a/src/kvirc/ui/kvi_console.cpp b/src/kvirc/ui/kvi_console.cpp
new file mode 100644
index 00000000..df0bd707
--- /dev/null
+++ b/src/kvirc/ui/kvi_console.cpp
@@ -0,0 +1,1283 @@
+//=============================================================================
+//
+// File : kvi_console.cpp
+// Creation date : Sun Jun 25 2000 15:01:34 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+// FIXME: The TextEncoding should be inherited from network!
+
+#define __KVIRC__
+
+#include "kvi_ircurl.h"
+#include "kvi_app.h"
+#include "kvi_console.h"
+#include "kvi_frame.h"
+#include "kvi_iconmanager.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_ircview.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_input.h"
+#include "kvi_error.h"
+#include "kvi_proxydb.h"
+#include "kvi_netutils.h"
+#include "kvi_ircserver.h"
+#include "kvi_ircserverdb.h"
+#include "kvi_dns.h"
+#include "kvi_defaults.h"
+#include "kvi_ircuserdb.h"
+#include "kvi_channel.h"
+#include "kvi_query.h"
+#include "kvi_parameterlist.h"
+#include "kvi_regusersdb.h"
+#include "kvi_userlistview.h"
+#include "kvi_out.h"
+#include "kvi_config.h"
+#include "kvi_irctoolbar.h"
+#include "kvi_internalcmd.h"
+#include "kvi_sparser.h"
+#include "kvi_themedlabel.h"
+#include "kvi_garbage.h"
+#include "kvi_modulemanager.h"
+#include "kvi_fileutils.h"
+#include "kvi_irctoolbar.h"
+#include "kvi_time.h"
+#include "kvi_mexlinkfilter.h"
+#include "kvi_avatarcache.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectionuserinfo.h"
+#include "kvi_ircconnectionserverinfo.h"
+#include "kvi_ircconnectionstatedata.h"
+#include "kvi_ircconnectiontarget.h"
+#include "kvi_ircconnectionstatistics.h"
+#include "kvi_asynchronousconnectiondata.h"
+#include "kvi_ircdatastreammonitor.h"
+#include "kvi_toolwindows_container.h"
+#include "kvi_msgbox.h"
+
+#ifdef COMPILE_SSL_SUPPORT
+ #include "kvi_sslmaster.h"
+#endif
+
+#include "kvi_kvs_script.h"
+#include "kvi_kvs_eventtriggers.h"
+
+#include <qsplitter.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qtimer.h>
+#include "kvi_tal_hbox.h"
+#include "kvi_tal_popupmenu.h"
+#include <qmessagebox.h>
+#include <qstringlist.h>
+
+#ifdef COMPILE_USE_QT4
+ #include <q3mimefactory.h>
+#endif
+
+#define __KVI_DEBUG__
+#include "kvi_debug.h"
+
+#ifdef COMPILE_USE_QT4
+ #include <QTextDocument>
+#else
+ #include <qstylesheet.h>
+#endif
+
+extern KVIRC_API KviIrcServerDataBase * g_pIrcServerDataBase;
+extern KVIRC_API KviProxyDataBase * g_pProxyDataBase;
+extern KVIRC_API KviGarbageCollector * g_pGarbageCollector;
+
+// %tmp[] = $str.grep("test",%array[])
+
+KviConsole::KviConsole(KviFrame * lpFrm,int iFlags)
+#ifdef COMPILE_ON_WINDOWS
+: KviWindow(KVI_WINDOW_TYPE_CONSOLE,lpFrm,"CONSOLE",0)
+#else
+: KviWindow(KVI_WINDOW_TYPE_CONSOLE,lpFrm,"CONSOLE",this)
+#endif
+{
+ m_pConsole = this;
+ m_pContext = new KviIrcContext(this);
+
+ m_iFlags = iFlags;
+ if(m_pContext->id() == 1)
+ {
+ m_iFlags |= KVI_CONSOLE_FLAG_FIRSTINAPP;
+ }
+
+ m_pButtonBox = new KviTalHBox(this);
+ m_pButtonBox->setSpacing(0);
+ m_pButtonBox->setMargin(0);
+ new QLabel(__tr2qs("Address:"),m_pButtonBox,"url_label");
+ m_pAddressEdit = new QComboBox(m_pButtonBox,"url_editor");
+ m_pAddressEdit->setAutoCompletion(true);
+ m_pAddressEdit->setDuplicatesEnabled(false);
+ m_pAddressEdit->setEditable(true);
+ m_pAddressEdit->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_URL)));
+ recentUrlsChanged();
+ m_pAddressEdit->setCurrentText("");
+ m_pAddressEdit->setInsertionPolicy(QComboBox::NoInsertion);
+ m_pAddressEdit->setMinimumHeight(24); //icon is 16px, + margins
+ m_pButtonBox->setStretchFactor(m_pAddressEdit,1);
+#ifdef COMPILE_USE_QT4
+ m_pButtonBox->setObjectName( QLatin1String( "kvi_window_button_box" ) );
+#endif
+ KviTalToolTip::add(m_pAddressEdit,__tr2qs("Current IRC URI"));
+ connect(m_pAddressEdit,SIGNAL(activated(const QString & )),this,SLOT(ircUriChanged(const QString & )));
+ connect(g_pApp,SIGNAL(recentUrlsChanged()),this,SLOT(recentUrlsChanged()));
+
+
+ m_pSplitter = new QSplitter(Qt::Horizontal,this,"splitter");
+ m_pIrcView = new KviIrcView(m_pSplitter,lpFrm,this);
+ connect(m_pIrcView,SIGNAL(rightClicked()),this,SLOT(textViewRightClicked()));
+
+ // FIXME: #warning "If notify list is disabled avoid to show this"
+ // FIXME: #warning "Button to show/hide the notifyListView (NOT DELETE RE_CREATE!)"
+ // The userlist on the right
+ //m_pEditorsContainer= new KviToolWindowsContainer(m_pSplitter);
+ m_pNotifyViewButton = new KviWindowToolPageButton(KVI_SMALLICON_HIDELISTVIEW,KVI_SMALLICON_SHOWLISTVIEW,__tr2qs("Notify List"),buttonContainer(),true,"list_view_button");
+ connect(m_pNotifyViewButton,SIGNAL(clicked()),this,SLOT(toggleNotifyView()));
+
+ m_pNotifyListView = new KviUserListView(m_pSplitter,m_pNotifyViewButton,0,this,19,__tr2qs("Notify List"),"notify_list_view");
+
+ m_pInput = new KviInput(this,m_pNotifyListView);
+
+ if(KVI_OPTION_BOOL(KviOption_boolAutoLogConsole))m_pIrcView->startLogging();
+
+}
+
+
+int KviConsole::selectedCount()
+{
+ return m_pNotifyListView->selectedCount();
+}
+
+void KviConsole::recentUrlsChanged(){
+ QString cur = m_pAddressEdit->currentText();
+ m_pAddressEdit->clear();
+ for (
+ QStringList::Iterator it = KVI_OPTION_STRINGLIST(KviOption_stringlistRecentIrcUrls).begin();
+ it != KVI_OPTION_STRINGLIST(KviOption_stringlistRecentIrcUrls).end();
+ ++it
+ ) {
+ m_pAddressEdit->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_URL)),*it);
+ }
+ m_pAddressEdit->setCurrentText(cur);
+}
+
+bool KviConsole::isNotConnected()
+{
+ return (context()->state() == KviIrcContext::Idle);
+}
+
+bool KviConsole::connectionInProgress()
+{
+ if(context()->asynchronousConnectionData() != 0)return true;
+ if(context()->state() != KviIrcContext::Idle)return true;
+ return false;
+}
+
+
+KviConsole::~KviConsole()
+{
+ // FIXME: #warning "WARNING : THIS SHOULD BECOME A COMMAND /QUIT $option() so the idents are parsed!"
+
+ // Force connection close: it will just return if no connection is present
+ context()->terminateConnectionRequest(true);
+
+ KVS_TRIGGER_EVENT_0(KviEvent_OnIrcContextDestroyed,this);
+
+ if(g_pFrame->consoleCount() <= 1)
+ {
+ KVS_TRIGGER_EVENT_0(KviEvent_OnFrameWindowDestroyed,this);
+ KVS_TRIGGER_EVENT_0(KviEvent_OnKVIrcShutdown,this);
+ }
+
+ //if(m_pLastIrcServer)delete m_pLastIrcServer;
+
+ delete m_pContext;
+ m_pContext = 0;
+}
+
+KviIrcSocket * KviConsole::socket()
+{
+ return connection() ? connection()->socket() : 0;
+}
+
+unsigned int KviConsole::ircContextId()
+{
+ return m_pContext->id();
+}
+
+QString KviConsole::currentNetworkName()
+{
+ return (connection() ? connection()->networkName() : QString::null);
+}
+
+
+void KviConsole::triggerCreationEvents()
+{
+ if(m_iFlags & KVI_CONSOLE_FLAG_FIRSTINAPP) // this is the first context in the application
+ {
+ KVS_TRIGGER_EVENT_0(KviEvent_OnKVIrcStartup,this);
+
+ if(KVI_OPTION_BOOL(KviOption_boolShowTipAtStartup))
+ g_pFrame->executeInternalCommand(KVI_INTERNALCOMMAND_TIP_OPEN);
+ }
+
+ if(m_iFlags & KVI_CONSOLE_FLAG_FIRSTINFRAME)
+ {
+ KVS_TRIGGER_EVENT_0(KviEvent_OnFrameWindowCreated,this);
+ }
+
+ KVS_TRIGGER_EVENT_0(KviEvent_OnIrcContextCreated,this);
+}
+
+
+void KviConsole::fillContextPopup(KviTalPopupMenu * p)
+{
+ int id;
+ int cc = 0;
+ int qc = 0;
+ // FIXME: add items to close dead queries and channels ?
+ if(connection())
+ {
+ cc = channelCount();
+ qc = queryCount();
+ p->insertSeparator();
+ id = p->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CHANNEL)),__tr2qs("Part All Channels"),connection(),SLOT(partAllChannels()));
+ if(!cc)p->setItemEnabled(id,false);
+ id = p->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_QUERY)),__tr2qs("Close All Queries"),connection(),SLOT(closeAllQueries()));
+ if(!qc)p->setItemEnabled(id,false);
+ }
+
+ p->insertSeparator();
+ p->insertItem(__tr2qs("Unhighlight All Windows"),context(),SLOT(unhighlightAllWindows()));
+ if(connection())
+ {
+ id = p->insertItem(__tr2qs("Unhighlight All Channels"),connection(),SLOT(unhighlightAllChannels()));
+ if(!cc)p->setItemEnabled(id,false);
+ id = p->insertItem(__tr2qs("Unhighlight All Queries"),connection(),SLOT(unhighlightAllQueries()));
+ if(!qc)p->setItemEnabled(id,false);
+ }
+}
+
+void KviConsole::completeChannel(const QString &word,KviPointerList<QString> * matches)
+{
+ // FIXME: first look in our context ?
+ /*
+ if(!connection())return;
+ for(KviChannel * c = connection()->channelList()->first();c;c = connection()->channelList()->next())
+ {
+ if(kvi_strEqualCIN(c->windowName(),word.ptr(),word.len()))matches->append(new KviStr((*it)
+ }
+ */
+ QStringList *pList = g_pApp->getRecentChannels(currentNetworkName());
+ if(pList)
+ {
+ for(QStringList::Iterator it = pList->begin(); it != pList->end(); ++it)
+ {
+ if(KviQString::equalCIN((*it),word,word.length()))matches->append(new QString(*it));
+ }
+ }
+}
+
+void KviConsole::completeServer(const QString &word, KviPointerList<QString> * matches)
+{
+ for(QStringList::Iterator it = KVI_OPTION_STRINGLIST(KviOption_stringlistRecentServers).begin(); it != KVI_OPTION_STRINGLIST(KviOption_stringlistRecentServers).end(); ++it)
+ {
+ QString srv((*it));
+
+ KviQString::cutToFirst(srv,'/');
+ while(srv.startsWith("/"))srv.remove(0,1);
+ KviQString::cutFromLast(srv,':');
+ //We should have a full server name here, without the irc:// and without the port
+ if(KviQString::equalCIN(srv,word,word.length()))
+ {
+ matches->append(new QString(srv));
+ }
+
+ }
+}
+
+void KviConsole::getUserTipText(const QString &nick,KviIrcUserEntry *e,QString &buffer)
+{
+ KviRegisteredMask *u = g_pRegisteredUserDataBase->findMatchingMask(nick,e->user(),e->host());
+
+ buffer = "<table width=\"100%\">" \
+ "<tr><td bgcolor=\"#303030\">" \
+ "<center><font color=\"#FFFFFF\"><b>";
+
+ buffer += nick;
+ buffer += "!";
+ buffer += e->user().isEmpty() ? QString("*") : e->user();
+ buffer += "@";
+ buffer += e->host().isEmpty() ? QString("*") : e->host();
+
+
+ buffer += "</b></font></center></td></tr>";
+ if(u)
+ {
+ QString szComment=u->user()->getProperty("comment");
+ if(!szComment.isEmpty())
+ {
+ buffer += "<tr bgcolor=\"#F0F0F0\"><td><center><font size=\"-1\">(";
+ buffer += szComment;
+ buffer += ")</font></center></td></tr>";
+ }
+ }
+ if(e->avatar())
+ {
+#ifdef COMPILE_USE_QT4
+ Q3MimeSourceFactory::defaultFactory()->setPixmap("ulv_avatar",*(e->avatar()->pixmap()));
+#else
+ QMimeSourceFactory::defaultFactory()->setPixmap("ulv_avatar",*(e->avatar()->pixmap()));
+#endif
+ buffer += QString("<tr><td><center><img src=\"ulv_avatar\" width=\"%1\"></center></td></tr>").arg(e->avatar()->pixmap()->width());
+ }
+
+ if(e->hasRealName())
+ {
+ buffer += "<tr><td><center><b>";
+ buffer += KviMircCntrl::stripControlBytes(e->realName());
+ buffer += "</b></center></td></tr>";
+ }
+
+ if(e->gender()!=KviIrcUserEntry::Unknown)
+ {
+ buffer += "<tr><td>";
+ buffer += __tr2qs("Gender:");
+ buffer += " ";
+ buffer += (e->gender()==KviIrcUserEntry::Male) ? __tr2qs("Male") : __tr2qs("Female");
+ buffer += "</td></tr>";
+ }
+
+ if(u)
+ {
+ QString mask;
+ u->mask()->mask(mask);
+ buffer += "<tr bgcolor=\"#F0F0F0\"><td>";
+ buffer += __tr2qs("Registered as");
+ buffer += " <b>";
+ buffer += u->user()->name();
+ buffer += "</b>; Group ";
+ buffer += u->user()->group();
+ buffer += "</td></tr><tr bgcolor=\"#F0F0F0\"><td><font size=\"-1\">";
+ buffer += __tr2qs("(Matched by");
+ buffer += " ";
+ buffer += mask;
+ buffer += ")</td></tr>";
+ }
+
+ if(connection())
+ {
+ QString chans;
+ if(connection()->getCommonChannels(nick,chans,false))
+ {
+ buffer += "<tr><td bgcolor=\"#F0F0F0\">";
+ buffer += __tr2qs("On <b>");
+ buffer += chans;
+ buffer += "</b></td></tr>";
+ }
+ }
+
+ if(e->hasServer())
+ {
+ buffer += "<tr><td bgcolor=\"#F0F0F0\"><nobr>";
+ buffer += __tr2qs("Using server <b>%1</b>").arg(e->server());
+
+ if(e->hasHops())
+ {
+ buffer += " (";
+ buffer += __tr2qs("%1 hops").arg(e->hops());
+ buffer += ")</nobr></td></tr>";
+ } else {
+ buffer += "</nobr></td></tr></table>";
+ }
+ }
+
+ if(e->isAway())
+ {
+ buffer += "<tr><td bgcolor=\"#F0F0F0\">";
+ buffer += __tr2qs("Probably Away");
+ buffer += "</td></tr>";
+ }
+}
+
+
+void KviConsole::toggleNotifyView()
+{
+ showNotifyList(!m_pNotifyListView->isVisible());
+}
+
+void KviConsole::executeInternalCommand(int index)
+{
+ KviKvsScript::run(kvi_getInternalCommandBuffer(index),this);
+}
+
+void KviConsole::saveProperties(KviConfig *cfg)
+{
+ KviWindow::saveProperties(cfg);
+ cfg->writeEntry("Splitter",m_pSplitter->sizes());
+ cfg->writeEntry("NotifyListViewVisible",m_pNotifyListView->isVisible());
+
+}
+
+void KviConsole::getBaseLogFileName(QString &buffer)
+{
+ buffer=QString("CONSOLE%1").arg(ircContextId());
+}
+
+void KviConsole::showNotifyList(bool bShow)
+{
+ if(!bShow)
+ {
+ m_pNotifyListView->hide();
+ if(m_pNotifyViewButton->isOn())m_pNotifyViewButton->setOn(false);
+ } else {
+ m_pNotifyListView->show();
+ if(!(m_pNotifyViewButton->isOn()))m_pNotifyViewButton->setOn(true);
+ }
+}
+
+void KviConsole::loadProperties(KviConfig *cfg)
+{
+ int w = width();
+ KviValueList<int> def;
+ def.append((w * 85) / 100);
+ def.append((w * 15) / 100);
+ KviValueList<int> cur = cfg->readIntListEntry("Splitter",def);
+ // check the size correctness
+ if(cur.count() != 2)cur = def;
+ else {
+ int i1 = cur[0];
+ int i2 = cur[1];
+ if(i1 < i2)cur = def;
+ }
+ m_pSplitter->setSizes(cur);
+ KviWindow::loadProperties(cfg);
+ showNotifyList(cfg->readBoolEntry("NotifyListViewVisible",false));
+}
+
+void KviConsole::textViewRightClicked()
+{
+ KVS_TRIGGER_EVENT_0(KviEvent_OnConsolePopupRequest,this);
+}
+
+
+KviWindow * KviConsole::activeWindow()
+{
+ if(!g_pActiveWindow)return this;
+ if(g_pActiveWindow->console() == this)return g_pActiveWindow;
+ return this;
+}
+
+void KviConsole::ircUriChanged(const QString & text){
+ if(KviIrcUrl::run(text,KviIrcUrl::CurrentContext,this) & KviIrcUrl::InvalidProtocol)
+ {
+ KviMessageBox::warning(__tr2qs("KVIrc can accept only irc://, irc6://, ircs:// or irc6s:// URL's\n"
+ "Your URL is invalid. Check spelling and try again"));
+ }
+}
+
+void KviConsole::updateUri()
+{
+ QString uri;
+ if(connection())
+ {
+ KviIrcServer* server = connection()->target()->server();
+ if(server)
+ {
+ KviIrcUrl::join(uri,server);
+ KviChannel * last =connection()->channelList()->last();
+ for(KviChannel * c = connection()->channelList()->first();c;c = connection()->channelList()->next())
+ {
+ uri.append(c->name());
+ if(c->hasChannelKey()) {
+ uri.append("?");
+ uri.append(c->channelKey());
+ }
+ if(c!=last) uri.append(",");
+ }
+ }
+ }
+ m_pAddressEdit->setCurrentText(uri);
+}
+
+void KviConsole::connectionAttached()
+{
+ //need to update URI
+ connect(m_pContext->connection(),SIGNAL(chanListChanged()),this,SLOT(updateUri()));
+ updateUri();
+ m_pNotifyListView->setUserDataBase(connection()->userDataBase());
+}
+
+void KviConsole::connectionDetached()
+{
+ //need to update URI?
+ m_pNotifyListView->partAll();
+ m_pNotifyListView->setUserDataBase(0); // this is rather for crash tests
+}
+
+bool KviConsole::isIpV6Connection()
+{
+ __range_valid(connection());
+ return connection()->server()->isIpV6();
+}
+
+void KviConsole::closeEvent(QCloseEvent *e)
+{
+ if(g_pFrame->consoleCount() > 1)
+ {
+ // there are other consoles beside this one
+ if(context()->state() == KviIrcContext::Connected)
+ {
+ if(!KVI_OPTION_BOOL(KviOption_boolAlwaysDisconnectClosingConnectedConsole))
+ {
+ switch(QMessageBox::warning(this,
+ __tr2qs("Confirmation - KVIrc"),
+ __tr2qs("You have just attempted to close a console window with an active connection inside.\n" \
+ "Are you sure you wish to terminate the connection?"),
+ __tr2qs("&Always"),
+ __tr2qs("&Yes"),
+ __tr2qs("&No"),
+ 2,2))
+ {
+ case 0:
+ KVI_OPTION_BOOL(KviOption_boolAlwaysDisconnectClosingConnectedConsole) = true;
+ break;
+ case 1:
+ // nothing here
+ break;
+ default: // 2 = no
+ return;
+ break;
+ }
+ }
+ // ask the context to terminate the connection gracefully
+ context()->terminateConnectionRequest(false);
+ // the close event will recall terminateConnectionRequest()
+ // to brutally interrupt it in a while
+ }
+
+ // just close
+ KviWindow::closeEvent(e);
+ return;
+ }
+
+ // this is the only console... ask if the user really wants to quit KVirc
+ if(!KVI_OPTION_BOOL(KviOption_boolAlwaysQuitKVIrcClosingLastConsole))
+ {
+ switch(QMessageBox::warning(this,
+ __tr2qs("Confirmation - KVIrc"),
+ __tr2qs("You have just attempted to close the last console window.\nAre you sure you wish to quit KVIrc?"),
+ __tr2qs("&Always"),
+ __tr2qs("&Yes"),
+ __tr2qs("&No"),
+ 2,2))
+ {
+ case 0:
+ KVI_OPTION_BOOL(KviOption_boolAlwaysQuitKVIrcClosingLastConsole) = true;
+ break;
+ case 1:
+ // nothing here
+ break;
+ default: // 2 = no
+ return;
+ break;
+ }
+ }
+
+ g_pApp->quit();
+}
+
+// internal helper for applyHighlighting
+int KviConsole::triggerOnHighlight(KviWindow *wnd,int type,const QString &nick,const QString &user,const QString &host,const QString &szMsg,const QString &trigger)
+{
+ if(!KVI_OPTION_STRING(KviOption_stringOnHighlightedMessageSound).isEmpty() && wnd!=g_pActiveWindow) KviKvsScript::run("snd.play $0",0,new KviKvsVariantList(new KviKvsVariant(KVI_OPTION_STRING(KviOption_stringOnHighlightedMessageSound))));
+ QString szMessageType;
+ KviQString::sprintf(szMessageType,"%d",type);
+ if(KVS_TRIGGER_EVENT_7_HALTED(KviEvent_OnHighlight,
+ wnd,nick,user,host,
+ szMsg,trigger,
+ szMessageType,(type == KVI_OUT_ACTION)))
+ return -1;
+ return KVI_OUT_HIGHLIGHT;
+}
+
+// if it returns -1 you should just return and not display the message
+int KviConsole::applyHighlighting(KviWindow *wnd,int type,const QString &nick,const QString &user,const QString &host,const QString &szMsg)
+{
+ QString szPattern=KVI_OPTION_STRING(KviOption_stringWordSplitters);
+ QString szSource;
+ QString szStripMsg=KviMircCntrl::stripControlBytes(szMsg);
+ QChar* aux=(QChar*)(szStripMsg.ucs2());
+ if(aux)
+ {
+ while(aux->unicode())
+ {
+ if( KVI_OPTION_STRING(KviOption_stringWordSplitters).find(*aux) > -1 )
+ szSource.append(' ');
+ else
+ szSource.append(*aux);
+ aux++;
+ }
+ } else {
+ szSource=szStripMsg;
+ }
+ szSource.append(' ');
+ szSource.prepend(' ');
+ if(KVI_OPTION_BOOL(KviOption_boolAlwaysHighlightNick) && connection())
+ {
+ if(szSource.find(QString(" %1 ").arg(connection()->userInfo()->nickName()),0,false) > -1)
+ return triggerOnHighlight(wnd,type,nick,user,host,szMsg,connection()->userInfo()->nickName());
+ }
+
+ if(KVI_OPTION_BOOL(KviOption_boolUseWordHighlighting))
+ {
+ for(QStringList::Iterator it = KVI_OPTION_STRINGLIST(KviOption_stringlistHighlightWords).begin();
+ it != KVI_OPTION_STRINGLIST(KviOption_stringlistHighlightWords).end() ; ++it)
+ {
+ if((*it).isEmpty())
+ continue;
+ // FIXME : This is SLOOOOOOOOW (QString -> ascii translation!!) !!!!
+ if(szSource.find(QString(" %1 ").arg(*it),0,false) > -1)
+ {
+ return triggerOnHighlight(wnd,type,nick,user,host,szMsg,*it);
+ }
+ }
+ }
+
+ if(wnd->type() == KVI_WINDOW_TYPE_CHANNEL)
+ {
+ if(((KviChannel *)wnd)->isHighlightedUser(nick))
+ return triggerOnHighlight(wnd,type,nick,user,host,szMsg,nick);
+
+ // FIXME: this is for userhighlighing
+ // maybe mark the users as highlighted in the console user database
+ // and then lookup them there ? this would be potentially a lot faster
+ KviRegisteredUser * u = connection()->userDataBase()->registeredUser(nick,user,host);
+
+ // note that we're highlighting users only in channels since
+ // in a query (or DCC) highlighting the remote end is senseless.
+ if(u)
+ {
+ if(u->getBoolProperty("highlight"))
+ return triggerOnHighlight(wnd,type,nick,user,host,szMsg,nick);
+ }
+ }
+
+ return type;
+}
+
+#define KVI_NUM_NICK_COLORS 95
+
+static const char * g_nickColors[KVI_NUM_NICK_COLORS]=
+{
+ "0,1" ,"0,2" ,"0,3" ,"0,4" ,"0,5" ,"0,6" ,"0,10" ,"0,12" ,"0,14" , //9
+ "1,0" ,"1,4" ,"1,7" ,"1,8" ,"1,9" ,"1,11" ,"1,15" , //7
+ "2,0" ,"2,4" ,"2,7" ,"2,8" ,"2,9" ,"2,11" ,"2,15" , //7
+ "3,8" ,"3,9" ,"3,0" ,"3,15" , //4
+ "4,0" ,"4,1" ,"4,8" ,"4,9" ,"4,11" ,"4,15" , //6
+ "5,0" ,"5,7" ,"5,8" ,"5,15" , //4
+ "6,0" ,"6,7" ,"6,8" ,"6,9" ,"6,10" ,"6,11" ,"6,15" , //7
+ "7,1" ,"7,2" ,"7,5" ,"7,6" ,"7,14" , //5
+ "8,1" ,"8,2" ,"8,3" ,"8,4" ,"8,5" ,"8,6" ,"8,7" ,"8,10" ,"8,12" ,"8,14" , //10
+ "9,1" ,"9,2" ,"9,3" ,"9,5" ,"9,6" ,"9,14" , //6
+ "10,1" ,"10,2" , //2
+ "11,1" ,"11,2" ,"11,3" ,"11,5" ,"11,6" ,"11,14", //6
+ "12,0" ,"12,7" ,"12,8" ,"12,9" ,"12,10","12,11","12,15", //7
+ "13,0" ,"13,1" ,"13,6" ,"13,8" ,"13,11","13,15", //6
+ "14,0" ,"14,8" ,"14,11","14,15", //4
+ "15,1" ,"15,2" ,"15,3" ,"15,6" ,"15,14" //5
+};
+
+void KviConsole::outputPrivmsg(KviWindow *wnd,
+ int type,
+ const QString &daNick,
+ const QString &daUser,
+ const QString &daHost,
+ const QString &msg,
+ int iFlags,
+ const QString &prefix,
+ const QString &suffix)
+{
+ // FIXME: #warning "THIS IS USED BY WINDOWS THAT ARE NOT BOUND TO THIS IRC CONTEXT"
+ // FIXME: #warning "REMEMBER IT IN ESCAPE COMMANDS"
+ // __range_valid(wnd);
+
+ bool bIsChan = (wnd->type() == KVI_WINDOW_TYPE_CHANNEL);
+ bool bIsNotice = ((type == KVI_OUT_CHANNELNOTICE)||(type == KVI_OUT_CHANNELNOTICECRYPTED) \
+ ||(type == KVI_OUT_QUERYNOTICE)||(type == KVI_OUT_QUERYNOTICECRYPTED));
+
+ QString nick = daNick; // not that beautiful.. :/
+ QString user = daUser;
+ QString host = daHost;
+
+ if(connection())
+ {
+ if(nick.isEmpty())nick = connection()->userInfo()->nickName();
+ if(user.isEmpty())user = connection()->userInfo()->userName();
+ if(host.isEmpty())host = connection()->userInfo()->hostName();
+ }
+
+ QString szDecodedMessage = msg; // shallow copy
+
+ if(KVI_OPTION_BOOL(KviOption_boolStripMircColorsInUserMessages))
+ szDecodedMessage = KviMircCntrl::stripControlBytes(szDecodedMessage);
+
+ if(!(iFlags & NoHighlighting))
+ {
+ // HIGHLIGHTING BLOCK
+ int iSaveType = type;
+ type = applyHighlighting(wnd,type,nick,user,host,szDecodedMessage);
+ if(type < 0)return; // event stopped the message!
+ if(type == KVI_OUT_HIGHLIGHT)
+ {
+ if(!wnd->hasAttention())
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolFlashWindowOnHighlightedMessages) &&
+ (!(iFlags & NoWindowFlashing)))
+ {
+ wnd->demandAttention();
+ }
+ if(KVI_OPTION_BOOL(KviOption_boolPopupNotifierOnHighlightedMessages) &&
+ (!(iFlags & NoNotifier)))
+ {
+ QString szMsg = "<b>&lt;";
+ szMsg += nick;
+ szMsg += "&gt;</b> ";
+ #ifdef COMPILE_USE_QT4
+ szMsg += Qt::escape(szDecodedMessage);
+ #else
+ szMsg += QStyleSheet::escape(szDecodedMessage);
+ #endif
+ //debug("kvi_console.cpp:629 debug: %s",szMsg.data());
+ g_pApp->notifierMessage(wnd,KVI_OPTION_MSGTYPE(iSaveType).pixId(),szMsg,90);
+ }
+ }
+ }
+ }
+
+ // <PREFIX>nick[!user@host]<POSTFIX>This is a test message
+
+ QString szNick;
+ KviQString::sprintf(szNick,"\r!nc\r%Q\r",&nick);
+
+ if(KVI_OPTION_BOOL(KviOption_boolShowUserAndHostInPrivmsgView))
+ KviQString::appendFormatted(szNick,"!%Q@\r!h\r%Q\r",&user,&host);
+
+ if(bIsChan && KVI_OPTION_BOOL(KviOption_boolShowChannelUserFlagInPrivmsgView))
+ ((KviChannel *)wnd)->prependUserFlag(nick,szNick);
+
+ if(KVI_OPTION_BOOL(KviOption_boolColorNicks))
+ {
+ int sum = 0;
+ int i = nick.length();
+ const QChar * aux = nick.unicode();
+ // FIXME: Shouldn't this be case insensitive ?
+ while(i > 0)
+ {
+ sum += aux->unicode();
+ aux++;
+ i--;
+ }
+ szNick.prepend(g_nickColors[sum % KVI_NUM_NICK_COLORS]);
+ szNick.prepend(KVI_TEXT_COLOR);
+ szNick.append(KVI_TEXT_COLOR);
+ }
+/* if(KVI_OPTION_BOOL(KviOption_boolUseUserListColorsAsNickColors) && bIsChan)
+ {
+ if(((KviChannel*)wnd)->userListView())
+ {
+ KviUserListEntry *e = ((KviChannel*)wnd)->userListView()->findEntry(nick);
+ if(e)
+ {
+ int sum = 0;
+ int i = nick.length();
+ const QChar * aux = nick.unicode();
+ // FIXME: Shouldn't this be case insensitive ?
+ while(i > 0)
+ {
+ sum += aux->unicode();
+ aux++;
+ i--;
+ }
+ int color;
+ if(e->flags() == 0)
+ {
+ color = KVI_COLOR_EXT_USER_NORMAL;
+ } else {
+ color = (e->flags() & KVI_USERFLAG_CHANOWNER) ? \
+ KVI_COLOR_EXT_USER_OWNER : ((e->flags() & KVI_USERFLAG_CHANADMIN) ? \
+ KVI_COLOR_EXT_USER_ADMIN : ((e->flags() & KVI_USERFLAG_OP) ? \
+ KVI_COLOR_EXT_USER_OP : ((e->flags() & KVI_USERFLAG_HALFOP) ? \
+ KVI_COLOR_EXT_USER_HALFOP : ((e->flags() & KVI_USERFLAG_VOICE) ? \
+ KVI_COLOR_EXT_USER_VOICE : KVI_COLOR_EXT_USER_USEROP))));
+ }
+ szNick.prepend(QString("%1").arg(color));
+ szNick.prepend(KVI_TEXT_COLOR);
+ szNick.append(KVI_TEXT_COLOR);
+ }
+ }
+ }*/
+ if(KVI_OPTION_BOOL(KviOption_boolBoldedNicks))
+ {
+ szNick.prepend(KVI_TEXT_BOLD);
+ szNick.append(KVI_TEXT_BOLD);
+ }
+
+ QString szMessage;
+
+ if(KVI_OPTION_BOOL(KviOption_boolUseExtendedPrivmsgView))
+ {
+ szMessage = prefix.isEmpty() ? KVI_OPTION_STRING(KviOption_stringExtendedPrivmsgPrefix) : prefix;
+ szMessage += szNick;
+ szMessage += suffix.isEmpty() ? KVI_OPTION_STRING(KviOption_stringExtendedPrivmsgPostfix) : suffix;
+ } else {
+ if(bIsNotice)
+ {
+ static QString pre1("*");
+ static QString suf1("* ");
+ szMessage = prefix.isEmpty() ? pre1 : prefix;
+ szMessage += szNick;
+ szMessage += suffix.isEmpty() ? suf1 : suffix;
+ } else {
+ static QString pre2("<");
+ static QString suf2("> ");
+ szMessage = prefix.isEmpty() ? pre2 : prefix;
+ szMessage += szNick;
+ szMessage += suffix.isEmpty() ? suf2 : suffix;
+ }
+ }
+
+ szMessage += szDecodedMessage;
+
+ if(bIsChan)((KviChannel *)wnd)->outputMessage(type,szMessage);
+ else wnd->outputNoFmt(type,szMessage);
+}
+
+void KviConsole::avatarChangedUpdateWindows(const QString &nick,const QString &textLine)
+{
+ if(!connection())return; //ops...
+
+ // in quiet mode avoid bugging the user about avatar changes
+ bool bOut = ((!textLine.isEmpty()) && (!(_OUTPUT_QUIET)));
+
+ for(KviChannel * c = connection()->channelList()->first();c;c = connection()->channelList()->next())
+ {
+ if(c->avatarChanged(nick))
+ {
+ if(bOut)c->outputNoFmt(KVI_OUT_AVATAR,textLine);
+ }
+ }
+ for(KviQuery * q = connection()->queryList()->first();q;q = connection()->queryList()->next())
+ {
+ if(q->avatarChanged(nick))
+ {
+ if(bOut)q->outputNoFmt(KVI_OUT_AVATAR,textLine);
+ }
+ }
+ m_pNotifyListView->avatarChanged(nick); // recalc the item height here too!
+}
+
+void KviConsole::avatarChanged(KviAvatar * avatar,const QString &nick,const QString &user,const QString &host,const QString &textLine)
+{
+ if(!connection())return; //ops...
+
+ bool bRegisteredStuff = false;
+
+ if(KVI_OPTION_BOOL(KviOption_boolSetLastAvatarAsDefaultForRegisteredUsers))
+ {
+ // Don't even try to do it for myself
+ if(!KviQString::equalCI(nick,connection()->userInfo()->nickName()))
+ {
+ KviRegisteredUser * u = connection()->userDataBase()->registeredUser(nick,user,host);
+ if(u)
+ {
+ if(avatar)u->setProperty("avatar",avatar->identificationString());
+ else u->setProperty("avatar",QString::null);
+ bRegisteredStuff = true;
+ }
+ }
+ }
+
+ if(!bRegisteredStuff)
+ {
+ // cache it
+ if(avatar)
+ KviAvatarCache::instance()->replace(avatar->identificationString(),KviIrcMask(nick,user,host),currentNetworkName().utf8().data());
+ else
+ KviAvatarCache::instance()->remove(KviIrcMask(nick,user,host),currentNetworkName().utf8().data());
+ }
+
+ avatarChangedUpdateWindows(nick,textLine);
+}
+
+void KviConsole::checkDefaultAvatar(KviIrcUserEntry *e,const QString &nick,const QString &user,const QString &host)
+{
+ // look it up in the cache
+ QString szAvatar = KviAvatarCache::instance()->lookup(KviIrcMask(nick,user,host),currentNetworkName().utf8().data());
+ if(!szAvatar.isEmpty())
+ {
+ // got a cache hit... is it on disk ?
+ KviAvatar * avatar = g_pIconManager->getAvatar(QString::null,szAvatar);
+ if(avatar)
+ {
+ // cached image on disk
+ e->setAvatar(avatar);
+ avatarChangedUpdateWindows(nick,QString::null);
+ return;
+ } else {
+ // no cached image on disk.. will need to requery it anyway
+ // remove from cache
+ KviAvatarCache::instance()->remove(KviIrcMask(nick,user,host),currentNetworkName().utf8().data());
+ }
+ }
+
+ // registered ?
+ KviRegisteredUser * u = connection()->userDataBase()->registeredUser(nick,user,host);
+ if(u)
+ {
+ // the user is registered...
+ QString szAvatar;
+ if(u->getProperty("avatar",szAvatar))
+ {
+ // the user has a default avatar...
+ KviAvatar * avatar = g_pIconManager->getAvatar(QString::null,szAvatar);
+ if(avatar)
+ {
+ e->setAvatar(avatar);
+ avatarChangedUpdateWindows(nick,QString::null);
+ return;
+ }
+ }
+ }
+}
+
+void KviConsole::resetAvatarForMatchingUsers(KviRegisteredUser * u)
+{
+ if(!connection())return;
+
+ QString szAvatar;
+ if(!u->getProperty("avatar",szAvatar))return;
+
+ KviPointerHashTableIterator<QString,KviIrcUserEntry> it(*(connection()->userDataBase()->dict()));
+ while(KviIrcUserEntry * e = it.current())
+ {
+ if(e->hasHost())
+ {
+ if(u->matchesFixed(it.currentKey(),e->user(),e->host()))
+ {
+ KviAvatar * a = g_pIconManager->getAvatar(QString::null,szAvatar);
+ e->setAvatar(a);
+ avatarChangedUpdateWindows(it.currentKey(),QString::null);
+ }
+ }
+ ++it;
+ }
+}
+
+KviAvatar * KviConsole::setAvatar(const QString &nick,const QString &user,const QString &host,const QString &szLocalPath,const QString &szName)
+{
+ if(!connection())return 0;
+ KviIrcUserEntry * e = connection()->userDataBase()->find(nick);
+ if(e)
+ {
+ // User and host must match
+ if((!user.isEmpty()) && e->hasUser())
+ {
+ if(!KviQString::equalCI(user,e->user()))return 0;
+ }
+
+ if((!host.isEmpty()) && e->hasHost())
+ {
+ if(!KviQString::equalCI(host,e->host()))return 0;
+ }
+
+ // Ok...got it
+
+ KviAvatar * avatar = g_pIconManager->getAvatar(szLocalPath,szName);
+ if(avatar)
+ {
+ e->setAvatar(avatar);
+ avatarChanged(avatar,nick,user,host,QString::null);
+ return avatar;
+ } else {
+ if(_OUTPUT_PARANOIC)
+ output(KVI_OUT_VERBOSE,__tr2qs("Failed to load avatar with name \"%Q\" and local path \"%Q\""),&szName,&szLocalPath);
+ }
+ }
+ return 0;
+}
+
+KviAvatar * KviConsole::defaultAvatarFromOptions()
+{
+ QPixmap * avatar = KVI_OPTION_PIXMAP(KviOption_pixmapMyAvatar).pixmap();
+ if(!avatar)return 0;
+ if(avatar->isNull())return 0;
+ if(KVI_OPTION_STRING(KviOption_stringMyAvatar).isEmpty())return 0;
+ return new KviAvatar(KVI_OPTION_PIXMAP(KviOption_pixmapMyAvatar).path(),KVI_OPTION_STRING(KviOption_stringMyAvatar),new QPixmap(*avatar));
+}
+
+KviAvatar * KviConsole::currentAvatar()
+{
+ if(!connection())return 0;
+ KviIrcUserEntry * e = connection()->userDataBase()->find(connection()->userInfo()->nickName());
+ if(!e)return 0;
+ KviAvatar * a = e->avatar();
+ if(!a)
+ {
+ a = defaultAvatarFromOptions();
+ if(a)
+ {
+ e->setAvatar(a);
+ avatarChanged(a,connection()->userInfo()->nickName(),QString::null,QString::null,QString::null);
+ }
+ }
+ return a;
+}
+
+void KviConsole::setAvatarFromOptions()
+{
+ if(!connection())return;
+ KviIrcUserEntry * e = connection()->userDataBase()->find(connection()->userInfo()->nickName());
+ if(!e)return;
+ KviAvatar * a = defaultAvatarFromOptions();
+ if(a)
+ {
+ e->setAvatar(a);
+ avatarChanged(a,connection()->userInfo()->nickName(),QString::null,QString::null,QString::null);
+ }
+}
+
+void KviConsole::applyOptions()
+{
+ m_pNotifyListView->applyOptions();
+ m_pInput->applyOptions();
+ m_pIrcView->applyOptions();
+
+ KviWindow::applyOptions();
+
+ // trick
+ resize(width() - 1,height() - 1);
+ resize(width() + 1,height() + 1);
+}
+
+void KviConsole::resizeEvent(QResizeEvent *e)
+{
+ int hght = m_pInput->heightHint();
+ int hght2 = m_pButtonBox->sizeHint().height();
+ m_pButtonBox->setGeometry(0,0,width(),hght2);
+ m_pSplitter->setGeometry(0,hght2,width(),height() - (hght + hght2));
+ m_pInput->setGeometry(0,height() - hght,width(),hght);
+}
+
+QSize KviConsole::sizeHint() const
+{
+ QSize ret(m_pIrcView->sizeHint().height(),m_pIrcView->sizeHint().height() + m_pInput->heightHint());
+ return ret;
+}
+
+void KviConsole::fillStatusString()
+{
+ switch(context()->state())
+ {
+ case KviIrcContext::Idle: m_szStatusString = __tr2qs("No connection"); break;
+ case KviIrcContext::Connecting: m_szStatusString = __tr2qs("Connection in progress..."); break;
+ case KviIrcContext::LoggingIn: m_szStatusString = __tr2qs("Login in progress..."); break;
+ case KviIrcContext::Connected:
+ m_szStatusString = connection()->userInfo()->nickName();
+ if(!connection()->userInfo()->userMode().isEmpty())
+ {
+ m_szStatusString += " (+";
+ m_szStatusString += connection()->userInfo()->userMode();
+
+ if(connection()->userInfo()->isAway())
+ {
+ m_szStatusString += QChar(' ');
+ m_szStatusString += __tr2qs("away");
+ }
+ m_szStatusString += QChar(')');
+ } else {
+ if(connection()->userInfo()->isAway())
+ {
+ m_szStatusString += " (";
+ m_szStatusString += __tr2qs("away");
+ m_szStatusString += QChar(')');
+ }
+ }
+
+ m_szStatusString += __tr2qs(" on ");
+ m_szStatusString += connection()->serverInfo()->name();
+ break;
+ }
+}
+
+void KviConsole::fillCaptionBuffers()
+{
+ fillStatusString();
+
+ static QString begin("<nobr><font color=\"");
+ static QString boldbegin("\"><b>");
+ static QString endofbold("</b></font> <font color=\"");
+ static QString endoffont("\">");
+ static QString end("</font></nobr>");
+
+ m_szPlainTextCaption = windowName();
+ m_szPlainTextCaption += " [";
+ m_szPlainTextCaption += m_szStatusString;
+ m_szPlainTextCaption += QChar(']');
+
+ m_szHtmlActiveCaption = begin;
+ m_szHtmlActiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name();
+ m_szHtmlActiveCaption += boldbegin;
+ m_szHtmlActiveCaption += windowName();
+ m_szHtmlActiveCaption += endofbold;
+ m_szHtmlActiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextActive2).name();
+ m_szHtmlActiveCaption += endoffont;
+ m_szHtmlActiveCaption += m_szStatusString;
+ m_szHtmlActiveCaption += end;
+
+ m_szHtmlInactiveCaption = begin;
+ m_szHtmlInactiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name();
+ m_szHtmlInactiveCaption += boldbegin;
+ m_szHtmlInactiveCaption += windowName();
+ m_szHtmlInactiveCaption += endofbold;
+ m_szHtmlInactiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive2).name();
+ m_szHtmlInactiveCaption += endoffont;
+ m_szHtmlInactiveCaption += m_szStatusString;
+ m_szHtmlInactiveCaption += end;
+}
+
+
+QPixmap * KviConsole::myIconPtr()
+{
+ return g_pIconManager->getSmallIcon(isConnected() ? KVI_SMALLICON_LINKS : KVI_SMALLICON_CONSOLE);
+}
+
+
+void KviConsole::getTaskBarTipText(QString &buffer)
+{
+ fillStatusString();
+
+ static QString html_bold("<b>");
+ static QString html_tab("&nbsp;&nbsp;");
+ static QString html_eofbold("</b>");
+ static QString html_hrbr("<br><hr>");
+ static QString html_channel(__tr2qs("channel"));
+ static QString html_channels(__tr2qs("channels"));
+ static QString html_query(__tr2qs("query"));
+ static QString html_queries(__tr2qs("queries"));
+ static QString html_space(" ");
+ static QString html_commaspace(", ");
+ static QString html_br("<br>");
+ static QString html_spaceparopen(" (");
+ static QString html_spaceparclosed(")");
+
+ buffer = "<table width=\"100%\">" \
+ START_TABLE_BOLD_ROW;
+ buffer += m_szStatusString;
+ buffer += END_TABLE_BOLD_ROW;
+ if((context()->state() == KviIrcContext::Connected) && connection())
+ {
+ QString num;
+
+ unsigned int uD;
+ unsigned int uH;
+
+ uD = connection()->channelList()->count();
+ uH = connection()->queryList()->count();
+
+ if(uD || uH > 0)
+ {
+ buffer += "<tr><td>";
+ buffer += html_tab;
+
+ if(uD > 0)
+ {
+ num.setNum(uD);
+
+ buffer += html_bold;
+ buffer += num;
+ buffer += html_eofbold;
+ buffer += html_space;
+ buffer += uD > 1 ? html_channels : html_channel;
+ if(uH > 0)
+ buffer += html_commaspace;
+ }
+
+ if(uH > 0)
+ {
+ num.setNum(uH);
+ buffer += html_bold;
+ buffer += num;
+ buffer += html_eofbold;
+ buffer += html_space;
+ buffer += uH > 1 ? html_queries : html_query;
+ }
+ buffer += "</td></tr>";
+ }
+
+ QDateTime dt;
+ dt.setTime_t(connection()->statistics()->connectionStartTime());
+
+ buffer += START_TABLE_NORMAL_ROW;
+
+ buffer += __tr2qs("Connected since");
+ buffer += html_space;
+ buffer += html_br;
+ buffer += html_tab;
+ buffer += html_bold;
+ buffer += dt.toString();
+ buffer += html_eofbold;
+ buffer += html_br;
+
+ //buffer += html_spaceparopen;
+
+ QString tspan = KviTimeUtils::formatTimeInterval((unsigned int)(kvi_secondsSince(connection()->statistics()->connectionStartTime())),
+ KviTimeUtils::NoLeadingEmptyIntervals | KviTimeUtils::NoLeadingZeroes);
+
+ buffer += __tr2qs("Online for");
+ buffer += html_space;
+ buffer += html_bold;
+ buffer += tspan;
+ buffer += html_eofbold;
+ //buffer += html_spaceparclosed;
+
+ buffer += "</td></tr><tr><td bgcolor=\"#F0F0F0\">";
+
+ tspan = KviTimeUtils::formatTimeInterval((unsigned int)(kvi_secondsSince(connection()->statistics()->lastMessageTime())),
+ KviTimeUtils::NoLeadingEmptyIntervals | KviTimeUtils::NoLeadingZeroes);
+
+ buffer += __tr2qs("Server idle for");
+ buffer += html_space;
+ buffer += html_bold;
+ buffer += tspan;
+ buffer += "</b></td></tr>";
+ }
+
+ buffer += "</table>";
+}
+
+#include "kvi_console.moc"
diff --git a/src/kvirc/ui/kvi_console.h b/src/kvirc/ui/kvi_console.h
new file mode 100644
index 00000000..b9f494c3
--- /dev/null
+++ b/src/kvirc/ui/kvi_console.h
@@ -0,0 +1,212 @@
+#ifndef _KVI_CONSOLE_H_
+#define _KVI_CONSOLE_H_
+//=============================================================================
+//
+// File : kvi_console.h
+// Creation date : Sun Jun 25 2000 15:00:20 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_ircconnection.h"
+#include "kvi_window.h"
+#include "kvi_ircsocket.h"
+#include "kvi_string.h"
+#include "kvi_irccontext.h"
+
+#include "kvi_pointerlist.h"
+
+#include <time.h>
+#include <qcombobox.h>
+
+
+class QToolBar;
+class QToolButton;
+
+class KviAvatar;
+class KviDns;
+class KviIrcUserDataBase;
+class KviIrcUserEntry;
+class KviIrcServer;
+class KviIrcNetwork;
+class KviProxy;
+#ifndef COMPILE_ON_WINDOWS
+ class KviChannel;
+ class KviQuery;
+#else
+ // windoze wants it to compile QList<KviChannel> and QList<KviQuery>
+ #include "kvi_channel.h"
+ #include "kvi_query.h"
+#endif
+class KviUserListView;
+class KviNotifyListManager;
+class KviRegisteredUser;
+class KviWindowToolPageButton;
+
+
+
+//=================================================================================================
+//
+// The console window
+//
+//=================================================================================================
+
+#define KVI_CONSOLE_FLAG_FIRSTINAPP 1
+#define KVI_CONSOLE_FLAG_FIRSTINFRAME 2
+
+
+class KVIRC_API KviConsole : public KviWindow
+{
+ friend class KviFrame;
+ friend class KviIrcSocket;
+ friend class KviChannel;
+ friend class KviQuery;
+ friend class KviIrcContext;
+ Q_OBJECT
+protected:
+ KviConsole(KviFrame * lpFrm,int iFlags);
+public:
+ ~KviConsole();
+protected:
+ int m_iFlags; // FIXME: make this a KviWindow property ?
+ // UI
+ KviUserListView * m_pNotifyListView;
+ KviWindowToolPageButton * m_pNotifyViewButton;
+ QComboBox * m_pAddressEdit;
+ QString m_szStatusString; // nick (flags) on server | not connected
+protected:
+ // UI
+ virtual QPixmap * myIconPtr();
+ virtual void fillCaptionBuffers();
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual void closeEvent(QCloseEvent *e);
+ virtual void getBaseLogFileName(QString &buffer);
+ virtual void getTaskBarTipText(QString &buffer);
+ virtual void fillContextPopup(KviTalPopupMenu * p);
+ virtual QSize sizeHint() const;
+ virtual void applyOptions();
+ virtual void triggerCreationEvents();
+ void fillStatusString();
+ //void socketError(int iError);
+ //void socketStateChange();
+ //void registerLinkMonitor(KviIrcSocketMonitor * m);
+ //void unregisterLinkMonitor(KviIrcSocketMonitor * m);
+ virtual void loadProperties(KviConfig * cfg);
+ virtual void saveProperties(KviConfig * cfg);
+
+ void destroyConnection();
+ // internal helper for applyHighlighting
+ int triggerOnHighlight(KviWindow *wnd,int type,const QString &nick,const QString &user,const QString &host,const QString &szMsg,const QString &trigger);
+
+ void showNotifyList(bool bShow);
+
+public:
+ // UI
+ KviUserListView * notifyListView(){ return m_pNotifyListView; };
+ int selectedCount();
+
+
+ //
+ // State
+ //
+ KviIrcContext::State state(){ return context()->state(); };
+ KVI_DEPRECATED KviIrcContext * ircContext(){ return context(); };
+ unsigned int ircContextId() KVI_DEPRECATED;
+ //
+ // Sock state
+ //
+ KviIrcSocket * socket() KVI_DEPRECATED;
+
+ // these should disappear!
+ bool isConnected(){ return context()->isConnected(); };
+ bool isIpV6Connection();
+ bool isNotConnected();
+ bool connectionInProgress();
+ //
+ // This connection info
+ //
+ QString currentNetworkName();
+ KviAvatar * currentAvatar();
+ //
+ // IRC Context wide helpers (connection related)
+ //
+ void getUserTipText(const QString &nick,KviIrcUserEntry *e,QString &buffer);
+ enum OutputPrivmsgFlags {
+ NoWindowFlashing = 1, // has meaning only if NoHighlighting is NOT given, otherwise it is implied
+ NoNotifier = 2, // has meaning only if NoHighlighitng is NOT given, otherwise it is implied
+ NoHighlighting = 4,
+ NoNotifications = 7 // this is 1|2|4 implies NoWindowFlashing and NoNotifier
+ };
+ void outputPrivmsg(KviWindow *wnd,int type,const QString &nick,
+ const QString &user,const QString &host,const QString &msg,int iFlags = 0,const QString &prefix = QString::null,const QString &suffix = QString::null);
+ // this applies highlighting to the specified message
+ // and triggers the OnHighlight event.
+ // it returns KVI_OUT_HIGHLIGHT if highlighting was applied
+ // and -1 if OnHighlight called halt
+ // otherwise it returns <type>
+ int applyHighlighting(KviWindow *wnd,int type,const QString &nick,const QString &user,const QString &host,const QString &szMsg);
+ // Avatar helpers (conneciton related)
+ void resetAvatarForMatchingUsers(KviRegisteredUser * u);
+ // this should be protected at least
+ void avatarChangedUpdateWindows(const QString &nick,const QString &textLine);
+ void avatarChanged(KviAvatar * avatar,const QString &nick,const QString &user,const QString &host,const QString &textLine);
+ KviAvatar * setAvatar(const QString &nick,const QString &user,const QString &host,const QString &szLocalPath,const QString &szName);
+ void checkDefaultAvatar(KviIrcUserEntry *e,const QString &nick,const QString &user,const QString &host);
+ void setAvatarFromOptions();
+
+ // This returns the default avatar for the current KVIrc user
+ // if he has choosen a valid avatar in the options dialog
+ // otherwise returns 0.
+ // The avatar is allocated with new and must be deleted
+ // when no longer needed.
+ KviAvatar * defaultAvatarFromOptions();
+
+ void terminateConnectionRequest(bool bForce = false,const char * quitMsg = 0);
+
+ // Status string (usermode + nick) (connection related too)
+ const QString & statusString(){ return m_szStatusString; };
+
+ // forwarders from KviIrcConnection
+ KVI_DEPRECATED KviPointerList<KviChannel> * channelList(){ return connection() ? connection()->channelList() : 0; };
+ KVI_DEPRECATED KviPointerList<KviQuery> * queryList(){ return connection() ? connection()->queryList() : 0; };
+ KVI_DEPRECATED unsigned int channelCount(){ return (connection() ? connection()->channelList()->count() : 0); };
+ KVI_DEPRECATED unsigned int queryCount(){ return (connection() ? connection()->queryList()->count() : 0); };
+
+ // Window management
+ //KVI_DEPRECATED KviChannel * findChannel(const char * name){ return connection() ? connection()->findChannel(name) : 0; };
+ //KVI_DEPRECATED KviQuery * findQuery(const char * nick){ return connection() ? connection()->findQuery(nick) : 0; };
+
+ KviWindow * activeWindow();
+ // User db, connection related
+ void completeChannel(const QString &word,KviPointerList<QString> * matches);
+ void completeServer(const QString &word,KviPointerList<QString> * matches);
+ void connectionAttached();
+ void connectionDetached();
+public slots:
+ void updateUri();
+ void executeInternalCommand(int index);
+ void recentUrlsChanged();
+protected slots:
+ void ircUriChanged(const QString & );
+ void toggleNotifyView();
+ void textViewRightClicked();
+};
+
+#endif //_KVI_CONSOLE_H_
diff --git a/src/kvirc/ui/kvi_cryptcontroller.cpp b/src/kvirc/ui/kvi_cryptcontroller.cpp
new file mode 100644
index 00000000..6cbdd5bc
--- /dev/null
+++ b/src/kvirc/ui/kvi_cryptcontroller.cpp
@@ -0,0 +1,390 @@
+//
+// File : kvi_cryptcontroller.cpp
+// Creation date : Fri Nov 03 2000 14:16:33 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#define __KVIRC__
+
+#include "kvi_settings.h"
+
+
+#ifdef COMPILE_CRYPT_SUPPORT
+
+ #include "kvi_cryptcontroller.h"
+ #include "kvi_styled_controls.h"
+
+ #include "kvi_window.h"
+ #include "kvi_locale.h"
+ #include "kvi_out.h"
+ #include "kvi_iconmanager.h"
+ #include "kvi_modulemanager.h"
+ #include "kvi_module.h"
+ #include "kvi_malloc.h"
+ #include "kvi_memmove.h"
+ #include "kvi_toolwindows_container.h"
+
+ #include <qlayout.h>
+ #include "kvi_pointerhashtable.h"
+
+ // kvi_app.cpp
+ extern KVIRC_API KviCryptEngineManager * g_pCryptEngineManager;
+ extern KVIRC_API KviModuleManager * g_pModuleManager;
+
+ KviEngineListBoxItem::KviEngineListBoxItem(KviTalListBox * lb,KviCryptEngineDescription * d,const char * modName)
+ : KviTalListBoxText(lb,d->szName)
+ {
+ m_szName = d->szName;
+ m_szAuthor = d->szAuthor;
+ m_szDescription = d->szDescription;
+ m_iFlags = d->iFlags;
+ m_szModuleName = modName;
+ setText(d->szName);
+ }
+
+ KviEngineListBoxItem::~KviEngineListBoxItem()
+ {
+ }
+
+
+
+
+ KviCryptController::KviCryptController(QWidget * par,KviWindowToolPageButton* button,const char * name,KviWindow * wnd,KviCryptSessionInfo * cur)
+ : KviWindowToolWidget(par,button)
+ {
+// FIXME: #warning "Load the available modules here"
+
+ // Load the known encryption modules
+ (void)g_pModuleManager->loadModulesByCaps("crypt");
+// (void)g_pModuleManager->getModule("koi2win");
+// (void)g_pModuleManager->getModule("mircstrip");
+// (void)g_pModuleManager->getModule("texturizer");
+
+ m_pWindow = wnd;
+
+#ifdef COMPILE_USE_QT4
+ setFocusPolicy(Qt::ClickFocus);
+#else
+ setFocusPolicy(QWidget::ClickFocus);
+#endif
+
+ QGridLayout *g = new QGridLayout(this,10,4,2,2);
+
+ QLabel *l = new QLabel(this);
+ l->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_LOCKED)));
+ g->addWidget(l,0,0);
+ l = new QLabel(__tr2qs("Cryptography/text transformation"),this);
+ g->addMultiCellWidget(l,0,0,1,3);
+
+ QFrame * frm = new QFrame(this);
+ frm->setFrameStyle(QFrame::HLine | QFrame::Sunken);
+ g->addMultiCellWidget(frm,1,1,0,3);
+
+ m_pEnableCheck = new KviStyledCheckBox(__tr2qs("Use the crypt engine"),this);
+ g->addMultiCellWidget(m_pEnableCheck,2,2,0,3);
+ connect(m_pEnableCheck,SIGNAL(toggled(bool)),this,SLOT(enableCheckToggled(bool)));
+
+ m_pListBox = new KviTalListBox(this);
+ connect(m_pListBox,SIGNAL(highlighted(KviTalListBoxItem *)),this,SLOT(engineHighlighted(KviTalListBoxItem *)));
+ g->addMultiCellWidget(m_pListBox,3,8,0,0);
+
+ m_pDescriptionLabel = new QLabel(this);
+ m_pDescriptionLabel->setFrameStyle(QFrame::Sunken | QFrame::StyledPanel);
+#ifdef COMPILE_USE_QT4
+ m_pDescriptionLabel->setAlignment(Qt::AlignTop | Qt::AlignLeft);
+#else
+ m_pDescriptionLabel->setAlignment(Qt::AlignTop | Qt::AlignLeft);
+#endif
+ g->addMultiCellWidget(m_pDescriptionLabel,3,3,1,3);
+
+ m_pAuthorLabel = new QLabel(this);
+ m_pAuthorLabel->setFrameStyle(QFrame::Sunken | QFrame::StyledPanel);
+ g->addMultiCellWidget(m_pAuthorLabel,4,4,1,3);
+
+ m_pEnableEncrypt = new KviStyledCheckBox(__tr2qs("Enable encryption"),this);
+ g->addMultiCellWidget(m_pEnableEncrypt,5,5,1,3);
+
+ m_pEncryptKeyLabel = new QLabel(__tr2qs("Encrypt key:"),this);
+ g->addWidget(m_pEncryptKeyLabel,6,1);
+
+ m_pEncryptKeyEdit = new QLineEdit(this);
+ g->addWidget(m_pEncryptKeyEdit,6,2);
+
+ m_pEncryptHexKeyCheck = new KviStyledCheckBox(__tr2qs("Hex"),this);
+ g->addWidget(m_pEncryptHexKeyCheck,6,3);
+
+ m_pEnableDecrypt = new KviStyledCheckBox(__tr2qs("Enable decryption"),this);
+ g->addMultiCellWidget(m_pEnableDecrypt,7,7,1,3);
+
+ m_pDecryptKeyLabel = new QLabel(__tr2qs("Decrypt key:"),this);
+ g->addWidget(m_pDecryptKeyLabel,8,1);
+
+ m_pDecryptKeyEdit = new QLineEdit(this);
+ g->addWidget(m_pDecryptKeyEdit,8,2);
+
+ m_pDecryptHexKeyCheck = new KviStyledCheckBox(__tr2qs("Hex"),this);
+ g->addWidget(m_pDecryptHexKeyCheck,8,3);
+
+ m_pOkButton = new QPushButton(__tr2qs("OK"),this);
+ g->addMultiCellWidget(m_pOkButton,9,9,0,3);
+ connect(m_pOkButton,SIGNAL(clicked()),this,SLOT(okClicked()));
+
+ g->setRowStretch(3,1);
+ g->setColStretch(2,1);
+
+ m_pLastItem = 0;
+ m_pSessionInfo = 0;
+
+ fillEngineList();
+
+ if(cur)
+ {
+ KviTalListBoxItem * it = (KviTalListBoxItem *)m_pListBox->findItem(cur->szEngineName.ptr());
+ if(it)
+ {
+ m_pEnableCheck->setChecked(true);
+ m_pListBox->setCurrentItem(it);
+ engineHighlighted(it);
+ m_pEnableEncrypt->setChecked(cur->bDoEncrypt);
+ m_pEnableDecrypt->setChecked(cur->bDoDecrypt);
+ } else enableWidgets(false);
+ } else {
+ enableWidgets(false);
+ }
+ registerSelf();
+ }
+
+ KviCryptController::~KviCryptController()
+ {
+ if(m_pSessionInfo)
+ {
+ // huh ?
+ g_pCryptEngineManager->deallocateEngine(m_pSessionInfo->pEngine);
+ delete m_pSessionInfo;
+ }
+ // Unload the unused ones...
+ g_pModuleManager->cleanupUnusedModules();
+ }
+
+ void KviCryptController::fillEngineList()
+ {
+ const KviPointerHashTable<QString,KviCryptEngineDescription> * a = g_pCryptEngineManager->engineDict();
+ if(a)
+ {
+ KviPointerHashTableIterator<QString,KviCryptEngineDescription> it(*a);
+ while(it.current())
+ {
+ KviStr modName = it.current()->providerHandle ? ((KviModule *)(it.current()->providerHandle))->name() : "";
+ (void)(new KviEngineListBoxItem(m_pListBox,it.current(),modName.ptr()));
+ ++it;
+ }
+ if(m_pListBox->count() != 0)return;
+ }
+ noEnginesAvailable();
+ }
+
+ void KviCryptController::engineHighlighted(KviTalListBoxItem *it)
+ {
+ if(it)
+ {
+ KviEngineListBoxItem * eit = (KviEngineListBoxItem *)it;
+ m_pAuthorLabel->setText(eit->m_szAuthor.ptr());
+ QString des = "<p>";
+ des += eit->m_szDescription.ptr();
+ des += "<br><br>";
+ des += __tr2qs("If you dont want to encrypt a particular text line then just start it with the CTRL+P prefix");
+ m_pDescriptionLabel->setText(des);
+ m_pEnableEncrypt->setEnabled(eit->m_iFlags & KVI_CRYPTENGINE_CAN_ENCRYPT);
+ m_pEncryptKeyLabel->setEnabled((eit->m_iFlags & KVI_CRYPTENGINE_CAN_ENCRYPT) &&
+ (eit->m_iFlags & KVI_CRYPTENGINE_WANT_ENCRYPT_KEY));
+ m_pEncryptKeyEdit->setEnabled((eit->m_iFlags & KVI_CRYPTENGINE_CAN_ENCRYPT) &&
+ (eit->m_iFlags & KVI_CRYPTENGINE_WANT_ENCRYPT_KEY));
+ m_pEnableEncrypt->setChecked(m_pEncryptKeyEdit->isEnabled());
+ m_pEnableDecrypt->setEnabled(eit->m_iFlags & KVI_CRYPTENGINE_CAN_DECRYPT);
+ m_pEncryptHexKeyCheck->setEnabled(m_pEncryptKeyEdit->isEnabled());
+ m_pEncryptHexKeyCheck->setChecked(false);
+ m_pDecryptKeyLabel->setEnabled((eit->m_iFlags & KVI_CRYPTENGINE_CAN_DECRYPT) &&
+ (eit->m_iFlags & KVI_CRYPTENGINE_WANT_DECRYPT_KEY));
+ m_pDecryptKeyEdit->setEnabled((eit->m_iFlags & KVI_CRYPTENGINE_CAN_DECRYPT) &&
+ (eit->m_iFlags & KVI_CRYPTENGINE_WANT_DECRYPT_KEY));
+ m_pEnableDecrypt->setChecked(m_pDecryptKeyEdit->isEnabled());
+ m_pDecryptHexKeyCheck->setEnabled(m_pDecryptKeyEdit->isEnabled());
+ m_pDecryptHexKeyCheck->setChecked(false);
+ m_pLastItem = eit;
+ enableWidgets(true);
+ } else m_pLastItem = 0;
+ }
+
+ void KviCryptController::enableCheckToggled(bool bChecked)
+ {
+ enableWidgets(bChecked);
+ }
+
+ void KviCryptController::enableWidgets(bool bEnabled)
+ {
+ m_pListBox->setEnabled(bEnabled);
+ m_pAuthorLabel->setEnabled(bEnabled && m_pLastItem);
+ m_pDescriptionLabel->setEnabled(bEnabled && m_pLastItem);
+ bool bCanDecrypt = m_pLastItem ? m_pLastItem->m_iFlags & KVI_CRYPTENGINE_CAN_DECRYPT : false;
+ bool bCanEncrypt = m_pLastItem ? m_pLastItem->m_iFlags & KVI_CRYPTENGINE_CAN_ENCRYPT : false;
+ m_pEnableEncrypt->setEnabled(bEnabled && bCanEncrypt);
+ m_pEnableDecrypt->setEnabled(bEnabled && bCanDecrypt);
+ bool bWantDecryptKey = m_pLastItem ? (bCanDecrypt && (m_pLastItem->m_iFlags & KVI_CRYPTENGINE_WANT_DECRYPT_KEY)) : false;
+ bool bWantEncryptKey = m_pLastItem ? (bCanEncrypt && (m_pLastItem->m_iFlags & KVI_CRYPTENGINE_WANT_ENCRYPT_KEY)) : false;
+ m_pEncryptKeyLabel->setEnabled(bEnabled && m_pEnableEncrypt->isChecked() && bWantEncryptKey);
+ m_pDecryptKeyLabel->setEnabled(bEnabled && m_pEnableDecrypt->isChecked() && bWantDecryptKey);
+ m_pEncryptKeyEdit->setEnabled(m_pEncryptKeyLabel->isEnabled());
+ m_pDecryptKeyEdit->setEnabled(m_pDecryptKeyLabel->isEnabled());
+ m_pEncryptHexKeyCheck->setEnabled(m_pEncryptKeyLabel->isEnabled());
+ m_pDecryptHexKeyCheck->setEnabled(m_pDecryptKeyLabel->isEnabled());
+ }
+
+ void KviCryptController::noEnginesAvailable()
+ {
+
+ m_pEnableCheck->setEnabled(false);
+ enableWidgets(false);
+ m_pDescriptionLabel->setText(__tr2qs("Sorry, no crypt engines available"));
+ m_pDescriptionLabel->setEnabled(true); // we want this text to be visible.
+ m_pOkButton->setEnabled(false);
+ }
+
+ void KviCryptController::okClicked()
+ {
+ if(m_pEnableCheck->isChecked())
+ {
+ if(m_pLastItem)
+ {
+ if(m_pEnableEncrypt->isChecked() || m_pEnableDecrypt->isChecked())
+ {
+ m_pSessionInfo = allocateCryptSessionInfo();
+ // Reregister the module in case that it has been unloaded
+ // while this dialog was open
+ if(m_pLastItem->m_szModuleName.hasData())(void)g_pModuleManager->getModule(m_pLastItem->m_szModuleName.ptr());
+ m_pSessionInfo->pEngine = g_pCryptEngineManager->allocateEngine(m_pLastItem->m_szName.ptr());
+ if(!m_pSessionInfo->pEngine)
+ {
+ m_pWindow->output(KVI_OUT_SYSTEMERROR,__tr2qs("Crypt: Can't create an engine instance: crypting disabled"));
+ delete m_pSessionInfo;
+ m_pSessionInfo = 0;
+ } else {
+ // initialize the engine
+ if(!initializeEngine(m_pSessionInfo->pEngine))
+ {
+ KviStr errStr = m_pSessionInfo->pEngine->lastError();
+ g_pCryptEngineManager->deallocateEngine(m_pSessionInfo->pEngine);
+ delete m_pSessionInfo;
+ m_pSessionInfo = 0;
+ m_pWindow->output(KVI_OUT_SYSTEMERROR,__tr2qs("Crypt: Can't initialize the engine :%s"),errStr.ptr());
+ } else {
+ // ok, engine ready and waiting...
+ m_pSessionInfo->szEngineName = m_pLastItem->m_szName;
+ m_pSessionInfo->bDoEncrypt = m_pEnableEncrypt->isChecked();
+ m_pSessionInfo->bDoDecrypt = m_pEnableDecrypt->isChecked();
+ }
+ }
+ } else m_pWindow->output(KVI_OUT_SYSTEMERROR,__tr2qs("Crypt: You have to enable encryption and/or decryption for the engine to work"));
+ }
+ }
+ emit done();
+ }
+
+ bool KviCryptController::initializeEngine(KviCryptEngine * eng)
+ {
+ KviStr m_szEncryptKey;
+ KviStr m_szDecryptKey;
+
+ char * encKey = 0;
+ int encKeyLen = 0;
+
+ if(m_pEnableEncrypt->isChecked())
+ {
+ m_szEncryptKey = m_pEncryptKeyEdit->text();
+ if(m_pEncryptHexKeyCheck->isChecked())
+ {
+ char * tmpKey;
+ encKeyLen = m_szEncryptKey.hexToBuffer(&tmpKey,false);
+ if(encKeyLen > 0)
+ {
+ encKey = (char *)kvi_malloc(encKeyLen);
+ kvi_memmove(encKey,tmpKey,encKeyLen);
+ KviStr::freeBuffer(tmpKey);
+ }
+ } else {
+ encKey = (char *)kvi_malloc(m_szEncryptKey.len());
+ kvi_memmove(encKey,m_szEncryptKey.ptr(),m_szEncryptKey.len());
+ encKeyLen = m_szEncryptKey.len();
+ }
+ }
+
+ char * decKey = 0;
+ int decKeyLen = 0;
+
+ if(m_pEnableDecrypt->isChecked())
+ {
+ m_szDecryptKey = m_pDecryptKeyEdit->text();
+ if(m_pDecryptHexKeyCheck->isChecked())
+ {
+ char * tmpKey;
+ decKeyLen = m_szDecryptKey.hexToBuffer(&tmpKey,false);
+ if(decKeyLen > 0)
+ {
+ decKey = (char *)kvi_malloc(decKeyLen);
+ kvi_memmove(decKey,tmpKey,decKeyLen);
+ KviStr::freeBuffer(tmpKey);
+ }
+ } else {
+ decKey = (char *)kvi_malloc(m_szDecryptKey.len());
+ kvi_memmove(decKey,m_szDecryptKey.ptr(),m_szDecryptKey.len());
+ decKeyLen = m_szDecryptKey.len();
+ }
+ }
+
+ bool bRet = eng->init(encKey,encKeyLen,decKey,decKeyLen);
+ if(encKey)kvi_free(encKey);
+ if(decKey)kvi_free(decKey);
+
+ return bRet;
+ }
+
+ KviCryptSessionInfo * KviCryptController::getNewSessionInfo()
+ {
+ KviCryptSessionInfo * inf = m_pSessionInfo;
+ m_pSessionInfo = 0;
+ return inf;
+ }
+
+ KviCryptSessionInfo * KviCryptController::allocateCryptSessionInfo()
+ {
+ // this is mainly for modules wanting to alloc this
+ return new KviCryptSessionInfo();
+ }
+
+ void KviCryptController::destroyCryptSessionInfo(KviCryptSessionInfo ** inf)
+ {
+ if(!(*inf))return;
+ (*inf)->pEngine->disconnect(); // disconnect every signal (this is mainly for destroyed())
+ g_pCryptEngineManager->deallocateEngine((*inf)->pEngine); // kill the engine
+ delete *inf;
+ *inf = 0;
+ }
+
+ #include "kvi_cryptcontroller.moc"
+
+#endif //COMPILE_CRYPT_SUPPORT
diff --git a/src/kvirc/ui/kvi_cryptcontroller.h b/src/kvirc/ui/kvi_cryptcontroller.h
new file mode 100644
index 00000000..1d6afcb6
--- /dev/null
+++ b/src/kvirc/ui/kvi_cryptcontroller.h
@@ -0,0 +1,116 @@
+#ifndef _KVI_CRYPTCONTROLLER_H_
+#define _KVI_CRYPTCONTROLLER_H_
+//=============================================================================
+//
+// File : kvi_cryptcontroller.h
+// Creation date : Fri Nov 03 2000 14:11:03 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+
+
+// Qt4 moc bails out on this ??????
+
+#if defined(COMPILE_CRYPT_SUPPORT) || defined(Q_MOC_RUN)
+ #include <qwidget.h>
+ #include "kvi_tal_listbox.h"
+ #include <qpushbutton.h>
+ #include <qcheckbox.h>
+ #include <qlabel.h>
+ #include <qlineedit.h>
+ #include "kvi_styled_controls.h"
+
+ #include "kvi_crypt.h"
+ #include "kvi_heapobject.h"
+ #include "kvi_toolwindows_container.h"
+
+ class KviWindow;
+
+ class KVIRC_API KviCryptSessionInfo : public KviHeapObject
+ {
+ public:
+ KviCryptEngine * pEngine;
+ KviStr szEngineName;
+ bool bDoEncrypt;
+ bool bDoDecrypt;
+ };
+
+ class KVIRC_API KviEngineListBoxItem : public KviTalListBoxText
+ {
+ friend class KviCryptController;
+ public:
+ KviEngineListBoxItem(KviTalListBox * lb,KviCryptEngineDescription * d,const char * modName);
+ ~KviEngineListBoxItem();
+ public:
+ KviStr m_szName;
+ KviStr m_szAuthor;
+ KviStr m_szDescription;
+ KviStr m_szModuleName;
+ int m_iFlags;
+ };
+
+
+ class KVIRC_API KviCryptController : public KviWindowToolWidget
+ {
+ Q_OBJECT
+ public:
+ KviCryptController(QWidget * parent,KviWindowToolPageButton* button,const char * name,KviWindow * wnd,KviCryptSessionInfo * cur);
+ ~KviCryptController();
+ protected:
+ KviWindow * m_pWindow;
+ KviTalListBox * m_pListBox;
+ QPushButton * m_pOkButton;
+ KviStyledCheckBox * m_pEnableCheck;
+ QLabel * m_pDescriptionLabel;
+ QLabel * m_pAuthorLabel;
+ KviStyledCheckBox * m_pEnableEncrypt;
+ QLabel * m_pEncryptKeyLabel;
+ QLineEdit * m_pEncryptKeyEdit;
+ KviStyledCheckBox * m_pEncryptHexKeyCheck;
+ KviStyledCheckBox * m_pEnableDecrypt;
+ QLabel * m_pDecryptKeyLabel;
+ QLineEdit * m_pDecryptKeyEdit;
+ KviStyledCheckBox * m_pDecryptHexKeyCheck;
+ KviEngineListBoxItem * m_pLastItem;
+ KviCryptSessionInfo * m_pSessionInfo;
+ private slots:
+ void enableCheckToggled(bool bChecked);
+ void engineHighlighted(KviTalListBoxItem *it);
+ void okClicked();
+ public:
+ KviCryptSessionInfo * getNewSessionInfo();
+ static KviCryptSessionInfo * allocateCryptSessionInfo();
+ static void destroyCryptSessionInfo(KviCryptSessionInfo ** inf);
+ private:
+ void fillEngineList();
+ void noEnginesAvailable();
+ void enableWidgets(bool bEnabled);
+ bool initializeEngine(KviCryptEngine * eng);
+ signals:
+ void done();
+ };
+
+
+#endif //COMPILE_CRYPT_SUPPORT
+
+
+#endif //!_KVI_CRYPTCONTROLLER_H_
diff --git a/src/kvirc/ui/kvi_ctcppagedialog.cpp b/src/kvirc/ui/kvi_ctcppagedialog.cpp
new file mode 100644
index 00000000..e6f392d6
--- /dev/null
+++ b/src/kvirc/ui/kvi_ctcppagedialog.cpp
@@ -0,0 +1,147 @@
+//
+// File : kvi_ctcppagedialog.cpp
+// Creation date : Tue May 21 2002 22:09:45 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#define __KVIRC__
+
+#include "kvi_ctcppagedialog.h"
+
+#include "kvi_locale.h"
+#include "kvi_app.h"
+
+#include "kvi_iconmanager.h"
+
+#include <qdatetime.h>
+#include <qlayout.h>
+#include <qlabel.h>
+#include <qpixmap.h>
+
+#ifdef COMPILE_USE_QT4
+ #include <qdesktopwidget.h>
+#endif
+
+// kvi_app.cpp
+extern KVIRC_API KviCtcpPageDialog * g_pCtcpPageDialog;
+
+KviCtcpPageDialog::KviCtcpPageDialog()
+: QWidget(0,"kvirc_ctcppage_dialog",
+#ifdef COMPILE_USE_QT4
+ Qt::WindowStaysOnTopHint | Qt::Tool | Qt::Dialog | Qt::Window)
+#else
+ WStyle_StaysOnTop | WStyle_Tool | WType_Dialog | WType_TopLevel)
+#endif
+{
+ QGridLayout * g = new QGridLayout(this,4,1,6,0);
+ m_pWidgetStack = new KviTalWidgetStack(this);
+ g->addWidget(m_pWidgetStack,0,0);
+ m_pTabBar = new QTabBar(this);
+ m_pTabBar->setShape(QTabBar::TriangularBelow);
+ connect(m_pTabBar,SIGNAL(selected(int)),this,SLOT(tabSelected(int)));
+ g->addWidget(m_pTabBar,1,0);
+
+ g->setRowStretch(0,1);
+
+ g->addRowSpacing(2,15);
+
+ m_pCloseButton = new QPushButton(__tr2qs("Close"),this);
+ connect(m_pCloseButton,SIGNAL(clicked()),this,SLOT(die()));
+ g->addWidget(m_pCloseButton,3,0);
+
+ setMinimumSize(300,200);
+ setMaximumSize(780,580);
+ setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CTCPREQUESTREPLIED)));
+
+ setCaption(__tr2qs("CTCP Page - KVIrc"));
+}
+
+KviCtcpPageDialog::~KviCtcpPageDialog()
+{
+ g_pCtcpPageDialog = 0;
+}
+
+void KviCtcpPageDialog::center()
+{
+ move((g_pApp->desktop()->width() - width()) >> 1,
+ (g_pApp->desktop()->height() - height()) >> 1);
+}
+
+void KviCtcpPageDialog::die()
+{
+ delete this;
+}
+
+void KviCtcpPageDialog::tabSelected(int id)
+{
+ m_pWidgetStack->raiseWidget(id);
+}
+
+void KviCtcpPageDialog::addPage(const QString &szNick,const QString &szUser,const QString &szHost,const QString &szMsg)
+{
+#ifdef COMPILE_USE_QT4
+ int id = m_pTabBar->addTab(szNick);
+#else
+ int id = m_pTabBar->addTab(new QTab(szNick));
+#endif
+ QLabel * l = new QLabel(this);
+ l->setFrameStyle(QFrame::Raised | QFrame::StyledPanel);
+ //l->setMaximumWidth(600);
+ QString date = QDateTime::currentDateTime().toString();
+
+ QString tmp = "<center>";
+ tmp += __tr2qs("You have been paged by");
+ tmp += "<br><b>";
+ tmp += szNick;
+ tmp += " [";
+ tmp += szUser;
+ tmp += "@";
+ tmp += szHost;
+ tmp += "]</b>:<br><br><b>";
+ tmp += szMsg;
+ tmp += "</b><br><br>[";
+ tmp += date;
+ tmp += "]</center>";
+
+ l->setText(tmp);
+ m_pWidgetStack->addWidget(l,id);
+ m_pWidgetStack->raiseWidget(l);
+ m_pTabBar->setCurrentTab(id);
+}
+
+void KviCtcpPageDialog::closeEvent(QCloseEvent *)
+{
+ delete this;
+}
+
+void KviCtcpPageDialog::popup()
+{
+ show();
+// raise();
+// setActiveWindow();
+ m_pCloseButton->setFocus();
+}
+
+void KviCtcpPageDialog::showEvent(QShowEvent *e)
+{
+ QWidget::showEvent(e);
+ center();
+}
+
+#include "kvi_ctcppagedialog.moc"
diff --git a/src/kvirc/ui/kvi_ctcppagedialog.h b/src/kvirc/ui/kvi_ctcppagedialog.h
new file mode 100644
index 00000000..ea615257
--- /dev/null
+++ b/src/kvirc/ui/kvi_ctcppagedialog.h
@@ -0,0 +1,56 @@
+#ifndef _KVI_CTCPPAGEDIALOG_H_
+#define _KVI_CTCPPAGEDIALOG_H_
+//
+// File : kvi_ctcppagedialog.h
+// Creation date : Tue May 21 2002 22:09:45 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+
+#include "kvi_string.h"
+
+#include "kvi_tal_widgetstack.h"
+#include <qtabbar.h>
+#include <qwidget.h>
+#include <qpushbutton.h>
+
+class KVIRC_API KviCtcpPageDialog : public QWidget
+{
+ Q_OBJECT
+public:
+ KviCtcpPageDialog();
+ ~KviCtcpPageDialog();
+protected:
+ KviTalWidgetStack * m_pWidgetStack;
+ QTabBar * m_pTabBar;
+ QPushButton * m_pCloseButton;
+public:
+ void popup();
+ void addPage(const QString &szNick,const QString &szUser,const QString &szHost,const QString &szMsg);
+protected slots:
+ void tabSelected(int id);
+ void die();
+protected:
+ void center();
+ virtual void showEvent(QShowEvent *e);
+ virtual void closeEvent(QCloseEvent *);
+};
+
+#endif //_KVI_CTCPPAGEDIALOG_H_
diff --git a/src/kvirc/ui/kvi_customtoolbar.cpp b/src/kvirc/ui/kvi_customtoolbar.cpp
new file mode 100644
index 00000000..7aa6f1cc
--- /dev/null
+++ b/src/kvirc/ui/kvi_customtoolbar.cpp
@@ -0,0 +1,670 @@
+//=============================================================================
+//
+// File : kvi_customtoolbar.cpp
+// Created on Sun 21 Nov 2004 05:28:57 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_customtoolbar.h"
+#include "kvi_frame.h"
+#include "kvi_locale.h"
+#include "kvi_app.h"
+#include "kvi_actionmanager.h"
+#include "kvi_customtoolbardescriptor.h"
+
+#include <qcursor.h>
+#include "kvi_tal_popupmenu.h"
+#include <qlayout.h>
+#include <qpixmap.h>
+#include <qcursor.h>
+#include <qtoolbutton.h>
+#include <qpainter.h>
+#include <qstyle.h>
+
+#ifdef COMPILE_USE_QT4
+ #include <qevent.h>
+ #include <q3dragobject.h>
+
+ #define QDragObject Q3DragObject
+ #define QTextDrag Q3TextDrag
+ #define QIconDrag Q3IconDrag
+
+ #include <qstyleoption.h>
+#else
+ #include <qobjectlist.h>
+ #include <qdragobject.h>
+#endif
+
+
+
+KviCustomToolBarSeparator::KviCustomToolBarSeparator(KviCustomToolBar *pParent,const char * name)
+: QWidget(pParent,name)
+{
+ m_pToolBar = pParent;
+ setBackgroundMode(pParent->backgroundMode());
+ setBackgroundOrigin(ParentOrigin);
+ setSizePolicy(QSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum));
+}
+
+QSize KviCustomToolBarSeparator::sizeHint() const
+{
+#ifdef COMPILE_USE_QT4
+ QStyleOption opt;
+ opt.initFrom(this);
+ int extent = style()->pixelMetric(QStyle::PM_ToolBarSeparatorExtent,&opt,this);
+#else
+ int extent = style().pixelMetric(QStyle::PM_DockWindowSeparatorExtent,this);
+#endif
+ if(m_pToolBar->orientation() == Qt::Horizontal)return QSize(extent,0);
+ else return QSize(0,extent);
+}
+
+void KviCustomToolBarSeparator::paintEvent(QPaintEvent *)
+{
+ QPainter p(this);
+#ifdef COMPILE_USE_QT4
+ QStyleOption opt;
+ opt.initFrom(this);
+ style()->drawPrimitive(QStyle::PE_Q3DockWindowSeparator,&opt,&p,this);
+#else
+ QStyle::SFlags flags = QStyle::Style_Default;
+ if(m_pToolBar->orientation() == Qt::Horizontal)flags |= QStyle::Style_Horizontal;
+ style().drawPrimitive(QStyle::PE_DockWindowSeparator,&p,rect(),colorGroup(),flags);
+#endif
+}
+
+
+KviCustomToolBar::KviCustomToolBar(KviCustomToolBarDescriptor * d,const QString &label,QT_TOOLBARDOCK_TYPE dock,bool bNewLine,const char * nam)
+: KviToolBar(label,dock,bNewLine,nam)
+{
+ m_pDescriptor = d;
+ m_pMovedChild = 0;
+ m_pDraggedChild = 0;
+ m_pFilteredChildren = 0;
+ setAcceptDrops(true);
+ connect(KviActionManager::instance(),SIGNAL(beginCustomizeToolBars()),this,SLOT(beginCustomize()));
+ connect(KviActionManager::instance(),SIGNAL(endCustomizeToolBars()),this,SLOT(endCustomize()));
+ setMinimumSize(20,20);
+ d->registerToolBar(this);
+ if(KviActionManager::customizingToolBars())
+ beginCustomize(); // because we will not get the signal
+}
+
+KviCustomToolBar::~KviCustomToolBar()
+{
+ if(KviActionManager::customizingToolBars())
+ syncDescriptor(); // because we will not get endCustomize()
+ m_pDescriptor->unregisterToolBar(this);
+ if(KviActionManager::customizingToolBars())
+ {
+ if(KviActionManager::currentToolBar() == this)
+ KviActionManager::instance()->setCurrentToolBar(0);
+ }
+ if(m_pFilteredChildren)delete m_pFilteredChildren;
+}
+
+void KviCustomToolBar::paintEvent(QPaintEvent * e)
+{
+ KviToolBar::paintEvent(e);
+ if(KviActionManager::customizingToolBars() && (KviActionManager::currentToolBar() == this))
+ {
+ QPainter p(this);
+ p.setPen(Qt::red);
+ p.drawRect(0,0,width(),height());
+ }
+}
+
+void KviCustomToolBar::filteredChildDestroyed()
+{
+ if(!m_pFilteredChildren)return;
+ const QObject * o = sender();
+ m_pFilteredChildren->remove((void *)o);
+}
+
+void KviCustomToolBar::filterChild(QObject * o)
+{
+ bool * b = new bool(((QWidget *)o)->isEnabled());
+ if(m_pFilteredChildren)
+ m_pFilteredChildren->insert(o,b);
+ if(!*b)((QWidget *)o)->setEnabled(true);
+ o->installEventFilter(this);
+ connect(o,SIGNAL(destroyed()),this,SLOT(filteredChildDestroyed()));
+}
+
+void KviCustomToolBar::unfilterChild(QObject * o)
+{
+ if(m_pFilteredChildren)
+ {
+ bool * b = m_pFilteredChildren->find(o);
+ if(b)
+ {
+ if(!*b)((QWidget *)o)->setEnabled(false);
+ o->removeEventFilter(this);
+ disconnect(o,SIGNAL(destroyed()),this,SLOT(filteredChildDestroyed()));
+ }
+ }
+}
+
+void KviCustomToolBar::beginCustomize()
+{
+ if(m_pFilteredChildren)delete m_pFilteredChildren;
+ m_pFilteredChildren = new KviPointerHashTable<void *,bool>;
+ m_pFilteredChildren->setAutoDelete(true);
+ // filter the events for all the children
+#ifdef COMPILE_USE_QT4
+ QList<QObject*> l = children();
+ for(QList<QObject*>::Iterator it = l.begin();it != l.end();++it)
+ {
+ if((*it)->isWidgetType())
+ filterChild(*it);
+ }
+#else
+ const QObjectList * l = children();
+ QObjectListIterator it(*l);
+ while(QObject * o = it.current())
+ {
+ if(o->isWidgetType())
+ filterChild(o);
+ ++it;
+ }
+#endif
+}
+
+void KviCustomToolBar::endCustomize()
+{
+ // stop filtering events
+#ifdef COMPILE_USE_QT4
+ QList<QObject*> l = children();
+ for(QList<QObject*>::Iterator it = l.begin();it != l.end();++it)
+ {
+ if((*it)->isWidgetType())
+ unfilterChild(*it);
+ }
+#else
+ const QObjectList * l = children();
+ QObjectListIterator it(*l);
+ while(QObject * o = it.current())
+ {
+ if(o->isWidgetType())
+ unfilterChild(o);
+ ++it;
+ }
+#endif
+ // FIXME: We SHOULD MAKE SURE that the children are re-enabled...
+ // this could be done by calling setEnabled(isEnabled()) on each action ?
+ if(m_pFilteredChildren)
+ {
+ delete m_pFilteredChildren;
+ m_pFilteredChildren = 0;
+ }
+ syncDescriptor();
+}
+
+void KviCustomToolBar::syncDescriptor()
+{
+ // store the item order in the descriptor
+ QBoxLayout * lay = boxLayout();
+ QLayoutIterator iter = lay->iterator();
+ QLayoutItem * i;
+ m_pDescriptor->actions()->clear();
+ while((i = iter.current()))
+ {
+ if(QWidget * w = i->widget())
+ m_pDescriptor->actions()->append(new QString(w->name()));
+ ++iter;
+ }
+}
+
+void KviCustomToolBar::childEvent(QChildEvent *e)
+{
+ if(KviActionManager::customizingToolBars())
+ {
+ // this is useful for droppped and dragged-out children
+ if(e->type() == QEvent::ChildInserted)
+ {
+ if(e->child()->isWidgetType())
+ filterChild(e->child());
+ goto done;
+ }
+
+ if(e->type() == QEvent::ChildRemoved)
+ {
+ if(e->child()->isWidgetType())
+ unfilterChild(e->child());
+ goto done;
+ }
+ }
+done:
+ KviToolBar::childEvent(e);
+}
+
+void KviCustomToolBar::dragEnterEvent(QDragEnterEvent *e)
+{
+ if(!KviActionManager::customizingToolBars())return;
+ KviActionManager::instance()->setCurrentToolBar(this);
+ QString text;
+ if(QTextDrag::decode(e,text))
+ {
+ if(!text.isEmpty())
+ {
+ KviAction * a = KviActionManager::instance()->getAction(text);
+ if(a)
+ {
+ e->accept(true);
+ int idx = dropIndexAt(mapFromGlobal(QCursor::pos()),0,0);
+ m_pDraggedChild = a->addToCustomToolBar(this);
+#ifdef COMPILE_USE_QT4
+ QWidget * pWidgetToMove = widgetAt(idx);
+ bool bDone = false;
+ QAction * a;
+ if(pWidgetToMove)
+ {
+ a = actionForWidget(pWidgetToMove);
+ if(a)
+ {
+ bDone = true;
+ a = insertWidget(a,m_pDraggedChild);
+ }
+ }
+ if(!bDone)
+ a = addWidget(m_pDraggedChild);
+ a->setVisible(true);
+#else
+ boxLayout()->remove(m_pDraggedChild); // in case it was already added
+ boxLayout()->insertWidget(idx,m_pDraggedChild);
+#ifdef COMPILE_KDE_SUPPORT
+ // bleah ://///
+ insertWidget(-1,m_pDraggedChild->sizeHint().width(),m_pDraggedChild,idx);
+#endif
+#endif
+ QEvent ev(QEvent::LayoutHint);
+ QApplication::sendEvent(this,&ev);
+ } else e->accept(false);
+ } else e->accept(false);
+ } else e->accept(false);
+}
+
+void KviCustomToolBar::dragMoveEvent(QDragMoveEvent *e)
+{
+ if(!m_pDraggedChild)return;
+ drag(m_pDraggedChild,mapFromGlobal(QCursor::pos()));
+}
+
+void KviCustomToolBar::dragLeaveEvent(QDragLeaveEvent *e)
+{
+ if(m_pDraggedChild)
+ {
+ if(m_pFilteredChildren)
+ m_pFilteredChildren->remove(m_pDraggedChild); // just to be sure
+ delete m_pDraggedChild;
+ m_pDraggedChild = 0;
+ }
+}
+
+void KviCustomToolBar::dropEvent(QDropEvent *e)
+{
+ if(!m_pDraggedChild)return;
+ m_pDraggedChild = 0;
+ e->accept();
+ // nuthin :)
+}
+
+int KviCustomToolBar::dropIndexAt(const QPoint &pnt,QWidget * exclude,int * excludeIdx)
+{
+ // find the widget at the current poisition
+ // treating exclude as if it was going to be removed
+ // find also the exclude index if needed
+#ifdef COMPILE_USE_QT4
+ QLayout * l = layout();
+#else
+ QBoxLayout * l = boxLayout();
+#endif
+ QLayoutItem * i = 0;
+ if(excludeIdx)*excludeIdx = -1;
+ int idx = 0;
+
+ if(!l)return 0;
+ QLayoutIterator it = l->iterator();
+
+ // find the children with minimum distance
+ int iMinDistIdx = -1;
+ QWidget * pMinDistW = 0;
+ unsigned int uMinDist = 0xffffffff;
+ int iExcludeIdx = -1;
+ QPoint pntExclude;
+ QWidget * w = 0;
+
+ while((i = it.current()))
+ {
+ if((w = i->widget()))
+ {
+ if(uMinDist != 0)
+ {
+ int iRight = w->x() + w->width();
+ int iBottom = w->y() + w->height();
+ if((pnt.x() >= w->x()) && (pnt.y() >= w->y()) && (pnt.x() <= iRight) && (pnt.y() <= iBottom))
+ {
+ // inside the widget
+ // distance 0
+ pMinDistW = w;
+ iMinDistIdx = idx;
+ uMinDist = 0;
+ } else {
+ // outside the widget
+ // compute the distance
+ unsigned int uXDist = (pnt.x() < w->x()) ? (w->x() - pnt.x()) : (pnt.x() > iRight ? (pnt.x() - iRight) : 0);
+ unsigned int uYDist = (pnt.y() < w->y()) ? (w->y() - pnt.y()) : (pnt.y() > iBottom ? (pnt.y() - iBottom) : 0);
+ if((uXDist < 8192) && (uYDist < 8192))
+ {
+ // it is in reasonable rect
+ unsigned int uDist = (uXDist * uXDist) + (uYDist * uYDist);
+ if(uDist < uMinDist)
+ {
+ // min distance for now
+ uMinDist = uDist;
+ pMinDistW = w;
+ iMinDistIdx = idx;
+ }
+ } // else the user has a really HUUUGE screen
+ }
+ } // else the minimum distance widget has already been found
+ if(w == exclude)
+ {
+ iExcludeIdx = idx;
+ pntExclude = w->pos();
+ }
+ }
+ idx++;
+ ++it;
+ }
+
+ if(!pMinDistW)
+ {
+ // ops.. not found at all (empty toolbar or really far from any button)
+ if(orientation() == Qt::Horizontal)
+ {
+ if(pnt.x() < (width() / 2))iMinDistIdx = 0; // insert at position 0
+ else iMinDistIdx = idx;
+ // else insert at the last position found
+ } else {
+ if(pnt.y() < (height() / 2))iMinDistIdx = 0; // insert at position 0
+ else iMinDistIdx = idx;
+ // else insert at the last position found
+ }
+ } else {
+ // got it, check for the exclude idx
+ if((iExcludeIdx == -1) || (iExcludeIdx != iMinDistIdx))
+ {
+ // would not put it over exclude idx
+ // check if we have to stay on right or left of the widget found
+ if(orientation() == Qt::Horizontal)
+ {
+ if(pnt.x() > (pMinDistW->x() + (pMinDistW->width() / 2)))
+ iMinDistIdx++; // need to put it on the right
+ } else {
+ if(pnt.y() > (pMinDistW->y() + (pMinDistW->height() / 2)))
+ iMinDistIdx++; // need to put it below
+ }
+ }
+
+ // ok , check again (we might have moved exactly over exclude idx now!)
+ if((iExcludeIdx != -1) && (iExcludeIdx != iMinDistIdx))
+ {
+ // got the exclude idx by the way and wouldn't put exactly over it
+ // check if exclude idx is "before" the current possible insert position
+ // if it is , then lower down the index by one
+ if(orientation() == Qt::Horizontal)
+ {
+ if(pnt.x() > pntExclude.x())
+ iMinDistIdx--; // removing exclude will move everything one step back
+ } else {
+ if(pnt.y() > pntExclude.y())
+ iMinDistIdx--; // removing exclude will move everything one step back
+ }
+ }
+ }
+
+ if(iMinDistIdx < 0)iMinDistIdx = 0;
+ if(excludeIdx)*excludeIdx = iExcludeIdx;
+
+ return iMinDistIdx;
+
+}
+
+#ifdef COMPILE_USE_QT4
+QWidget * KviCustomToolBar::widgetAt(int index)
+{
+ QLayout * l = layout();
+ if(!l)
+ return NULL;
+ QLayoutItem * it = l->itemAt(index);
+ if(!it)
+ return NULL;
+ return it->widget();
+}
+
+QAction * KviCustomToolBar::actionForWidget(QWidget * pWidget)
+{
+ return actionAt(pWidget->x() + 1,pWidget->y() + 1);
+}
+
+#endif
+
+void KviCustomToolBar::drag(QWidget * child,const QPoint &pnt)
+{
+ int me = -1;
+ int idx = dropIndexAt(pnt,child,&me);
+ debug("DROP INDEX IS %d, ME IS %d",idx,me);
+ if(idx == me)
+ return; // would move over itself
+#ifdef COMPILE_USE_QT4
+ QWidget * pWidgetToMove = widgetAt(idx > me ? idx-1 : idx);
+ debug("SEARCHING FOR WIDGET TO MOVE AT %d AND FOUND %x (ME=%x)",idx > me ? idx-1 : idx,pWidgetToMove,child);
+ if(pWidgetToMove == child)
+ return; // hmmm
+ bool bDone = false;
+ QAction * pMyOwnAction = actionForWidget(child);
+ if(!pMyOwnAction)
+ return;
+ QAction * a;
+ removeAction(pMyOwnAction);
+ if(pWidgetToMove)
+ {
+ a = actionForWidget(pWidgetToMove);
+ if(a)
+ {
+ debug("AND GOT ACTION FOR THAT WIDGET");
+
+ bDone = true;
+ a = insertWidget(a,child);
+ }
+ } else {
+ addAction(a);
+ }
+ if(!bDone)
+ a = addWidget(child);
+ a->setVisible(true);
+#else
+ boxLayout()->remove(child);
+ boxLayout()->insertWidget(idx,child);
+#ifdef COMPILE_KDE_SUPPORT
+ // bleah ://///
+ insertWidget(-1,child->width(),child,idx);
+#endif
+#endif
+ QEvent ev(QEvent::LayoutHint);
+ QApplication::sendEvent(this,&ev);
+}
+
+void KviCustomToolBar::mousePressEvent(QMouseEvent * e)
+{
+ if(KviActionManager::customizingToolBars())
+ KviActionManager::instance()->setCurrentToolBar(this);
+ KviToolBar::mousePressEvent(e);
+}
+
+bool KviCustomToolBar::eventFilter(QObject *o,QEvent *e)
+{
+ if(!KviActionManager::customizingToolBars())goto unhandled; // anything here is done when customizing only
+ if(e->type() == QEvent::Enter)
+ {
+ if(m_pMovedChild)return true; // kill it while moving other children
+ }
+ if(e->type() == QEvent::Leave)
+ {
+ if(m_pMovedChild)return true; // kill it while moving other children
+ }
+ if(e->type() == QEvent::MouseButtonPress)
+ {
+ KviActionManager::instance()->setCurrentToolBar(this);
+ QMouseEvent * ev = (QMouseEvent *)e;
+ if(ev->button() & Qt::LeftButton)
+ {
+ if(o->isWidgetType())
+ {
+ if(!(
+ o->inherits("KviTalPopupMenu") ||
+ o->inherits("QToolBarHandle") ||
+ o->inherits("QDockWindowHandle") ||
+ o->inherits("QDockWindowResizeHandle") ||
+ o->inherits("QToolBarExtensionWidget")
+ ))
+ {
+ m_pMovedChild = (QWidget *)o;
+ // allow resizing of children
+ // FIXME: do it only if the child is really resizable
+ if(m_pMovedChild->width() > 20) // might be an applet
+ {
+ if(ev->pos().x() > (m_pMovedChild->width() - 4))
+ {
+ m_pMovedChild = 0;
+ goto unhandled; // let the applet handle the event it
+ }
+ }
+ g_pApp->setOverrideCursor(Qt::sizeAllCursor);
+ return true;
+ }
+ }
+ }
+ goto unhandled;
+ }
+ if(e->type() == QEvent::MouseButtonRelease)
+ {
+ if(m_pMovedChild)
+ {
+ g_pApp->restoreOverrideCursor();
+ m_pMovedChild = 0;
+ return true;
+ }
+ goto unhandled;
+ }
+ if(e->type() == QEvent::MouseMove)
+ {
+ if(m_pMovedChild)
+ {
+ QMouseEvent * ev = (QMouseEvent *)e;
+
+ QPoint pnt = mapFromGlobal(m_pMovedChild->mapToGlobal(ev->pos()));
+ if((pnt.y() < 0) || (pnt.y() > height()) || (pnt.x() < 0) || (pnt.x() > width()))
+ {
+ // drag out!
+// FIXME: This is screwed up in Qt4.... :/
+#ifdef COMPILE_USE_QT4
+ QDrag * d = new QDrag(this);
+ QMimeData * m = new QMimeData();
+ m->setText(m_pMovedChild->name());
+ d->setMimeData(m);
+#else
+ QDragObject * d = new QTextDrag(m_pMovedChild->name(),this);
+#endif
+ KviAction * act = KviActionManager::instance()->getAction(m_pMovedChild->name());
+ if(act)
+ {
+ QPixmap * pixie = act->bigIcon();
+#ifdef COMPILE_USE_QT4
+ if(pixie)
+ {
+ d->setPixmap(*pixie);
+ d->setHotSpot(QPoint(3,3));
+ }
+#else
+ if(pixie)d->setPixmap(*pixie,QPoint(3,3));
+#endif
+ }
+ //d->setPixmap(QPixmap::grabWidget(m_pMovedChild),QPoint(m_pMovedChild->width() / 2,m_pMovedChild->height() / 2));
+ // throw it somewhere else for now
+ if(m_pFilteredChildren)
+ unfilterChild(m_pMovedChild);
+#ifdef COMPILE_USE_QT4
+ QAction * pActionForMovedChild = actionForWidget(m_pMovedChild);
+ if(pActionForMovedChild)
+ pActionForMovedChild->setVisible(false);
+ m_pMovedChild->hide();
+#else
+ m_pMovedChild->hide();
+ m_pMovedChild->reparent(g_pFrame,QPoint(-1000,-1000),false);
+#endif
+ QEvent ev(QEvent::LayoutHint);
+ QApplication::sendEvent(this,&ev);
+#ifdef COMPILE_USE_QT4
+ if(!d->exec(Qt::MoveAction) != Qt::MoveAction)
+#else
+ if(!d->dragMove())
+#endif
+ {
+ // the user has probably failed to remove the action from the toolbar
+ // flash the trashcan in the customize toolbars dialog
+ KviActionManager::instance()->emitRemoveActionsHintRequest();
+ // will filter it as ChildInserted
+#ifndef COMPILE_USE_QT4
+ m_pMovedChild->reparent(this,QPoint(0,0),false);
+#endif
+#ifdef COMPILE_USE_QT4
+ QAction * pActionForMovedChild = actionForWidget(m_pMovedChild);
+ if(pActionForMovedChild)
+ pActionForMovedChild->setVisible(false);
+#else
+ boxLayout()->insertWidget(0,m_pMovedChild);
+ m_pMovedChild->show();
+#ifdef COMPILE_KDE_SUPPORT
+ // bleah ://///
+ insertWidget(-1,m_pMovedChild->width(),m_pMovedChild,0);
+#endif
+#endif
+ QEvent ev(QEvent::LayoutHint);
+ QApplication::sendEvent(this,&ev);
+ } else {
+ QApplication::sendPostedEvents(m_pMovedChild,0);
+ m_pMovedChild->deleteLater();
+ m_pMovedChild = 0;
+ }
+ return true;
+ }
+
+ drag(m_pMovedChild,pnt);
+ return true;
+ }
+ goto unhandled;
+ }
+unhandled:
+ return KviToolBar::eventFilter(o,e);
+}
diff --git a/src/kvirc/ui/kvi_customtoolbar.h b/src/kvirc/ui/kvi_customtoolbar.h
new file mode 100644
index 00000000..64e9526e
--- /dev/null
+++ b/src/kvirc/ui/kvi_customtoolbar.h
@@ -0,0 +1,91 @@
+#ifndef _KVI_CUSTOMTOOLBAR_H_
+#define _KVI_CUSTOMTOOLBAR_H_
+//=============================================================================
+//
+// File : kvi_customtoolbar.h
+// Created on Sun 21 Nov 2004 05:28:57 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_toolbar.h"
+#include "kvi_pointerhashtable.h"
+
+#ifdef COMPILE_ON_WINDOWS
+ #include "kvi_customtoolbardescriptor.h"
+#else
+ class KviCustomToolBarDescriptor;
+#endif
+class KviCustomToolBar;
+
+class KviCustomToolBarSeparator : public QWidget
+{
+ Q_OBJECT
+public:
+ KviCustomToolBarSeparator(KviCustomToolBar *pParent,const char * name);
+ QSize sizeHint() const;
+protected:
+ KviCustomToolBar * m_pToolBar;
+protected:
+ void paintEvent(QPaintEvent *e);
+};
+
+class KVIRC_API KviCustomToolBar : public KviToolBar
+{
+ friend class KviCustomToolBarDescriptor;
+ Q_OBJECT
+protected:
+ KviCustomToolBar(KviCustomToolBarDescriptor * d,const QString &label,QT_TOOLBARDOCK_TYPE dock = QT_DOCK_TOP,bool bNewLine = false,const char * nam = 0);
+public:
+ ~KviCustomToolBar();
+protected:
+ KviCustomToolBarDescriptor * m_pDescriptor;
+ QWidget * m_pMovedChild;
+ QWidget * m_pDraggedChild;
+ KviPointerHashTable<void *,bool> * m_pFilteredChildren;
+public:
+ KviCustomToolBarDescriptor * descriptor(){ return m_pDescriptor; };
+protected:
+ virtual void mousePressEvent(QMouseEvent * e);
+ virtual void dragEnterEvent(QDragEnterEvent *e);
+ virtual void dragMoveEvent(QDragMoveEvent *e);
+ virtual void dragLeaveEvent(QDragLeaveEvent *e);
+ virtual void dropEvent(QDropEvent *e);
+ virtual void childEvent(QChildEvent *e);
+ virtual bool eventFilter(QObject *o,QEvent *e);
+ int dropIndexAt(const QPoint &pnt,QWidget * exclude,int * excludeIdx);
+#ifdef COMPILE_USE_QT4
+ QWidget * widgetAt(int index);
+ QAction * actionForWidget(QWidget * pWidget);
+#endif
+ void drag(QWidget * child,const QPoint &pnt);
+ void filterChild(QObject * o);
+ void unfilterChild(QObject * o);
+ virtual void paintEvent(QPaintEvent * e);
+ void syncDescriptor();
+protected slots:
+ void beginCustomize();
+ void endCustomize();
+ void filteredChildDestroyed();
+};
+
+
+
+#endif //!_KVI_CUSTOMTOOLBAR_H_
diff --git a/src/kvirc/ui/kvi_debugwindow.cpp b/src/kvirc/ui/kvi_debugwindow.cpp
new file mode 100644
index 00000000..81067c04
--- /dev/null
+++ b/src/kvirc/ui/kvi_debugwindow.cpp
@@ -0,0 +1,132 @@
+//=============================================================================
+//
+// File : kvi_debugwindow.cpp
+// Creation date : Sun Jul 18 2005 14:12:22 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+#include "kvi_debugwindow.h"
+#include "kvi_console.h"
+#include "kvi_iconmanager.h"
+#include "kvi_ircview.h"
+#include "kvi_input.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_config.h"
+
+#include "kvi_parameterlist.h"
+#include "kvi_frame.h"
+#include "kvi_valuelist.h"
+
+#include <qpixmap.h>
+#include <qsplitter.h>
+#include <qtoolbutton.h>
+
+KviDebugWindow * KviDebugWindow::m_pInstance = 0;
+
+
+KviDebugWindow::KviDebugWindow()
+: KviWindow(KVI_WINDOW_TYPE_DEBUG,g_pFrame,__tr2qs("Debug Messages"),0)
+{
+ m_pInstance = this;
+ m_pSplitter = new QSplitter(Qt::Horizontal,this,"main_splitter");
+ m_pIrcView = new KviIrcView(m_pSplitter,g_pFrame,this);
+ m_pInput = new KviInput(this,0);
+ updateCaption();
+}
+
+KviDebugWindow::~KviDebugWindow()
+{
+ m_pInstance = 0;
+}
+
+KviDebugWindow * KviDebugWindow::getInstance()
+{
+ if(m_pInstance)return m_pInstance;
+ m_pInstance = new KviDebugWindow();
+ g_pFrame->addWindow(m_pInstance,!KVI_OPTION_BOOL(KviOption_boolShowMinimizedDebugWindow));
+ if(KVI_OPTION_BOOL(KviOption_boolShowMinimizedDebugWindow))
+ m_pInstance->minimize();
+ return m_pInstance;
+}
+
+
+
+void KviDebugWindow::getBaseLogFileName(QString &buffer)
+{
+ buffer = "debug";
+}
+
+void KviDebugWindow::saveProperties(KviConfig *cfg)
+{
+ KviWindow::saveProperties(cfg);
+ cfg->writeEntry("Splitter",m_pSplitter->sizes());
+}
+
+void KviDebugWindow::loadProperties(KviConfig *cfg)
+{
+ int w = width();
+ KviWindow::loadProperties(cfg);
+ KviValueList<int> def;
+ def.append((w * 80) / 100);
+ def.append((w * 20) / 100);
+ m_pSplitter->setSizes(cfg->readIntListEntry("Splitter",def));
+}
+
+void KviDebugWindow::fillCaptionBuffers()
+{
+ static QString begin("<nobr><font color=\"");
+ static QString boldbegin("\"><b>");
+ static QString end("</b></font></nobr>");
+
+ m_szPlainTextCaption = windowName();
+
+ m_szHtmlActiveCaption = begin;
+ m_szHtmlActiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name();
+ m_szHtmlActiveCaption += boldbegin;
+ m_szHtmlActiveCaption += windowName();
+ m_szHtmlActiveCaption += end;
+
+ m_szHtmlInactiveCaption = begin;
+ m_szHtmlInactiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name();
+ m_szHtmlInactiveCaption += boldbegin;
+ m_szHtmlInactiveCaption += windowName();
+ m_szHtmlInactiveCaption += end;
+}
+
+QPixmap * KviDebugWindow::myIconPtr()
+{
+ return g_pIconManager->getSmallIcon(KVI_SMALLICON_BUG);
+}
+
+void KviDebugWindow::resizeEvent(QResizeEvent *e)
+{
+ int hght = m_pInput->heightHint();
+ m_pSplitter->setGeometry(0,0,width(),height() - hght);
+ m_pInput->setGeometry(0,height() - hght,width(),hght);
+}
+
+QSize KviDebugWindow::sizeHint() const
+{
+ QSize ret(m_pSplitter->sizeHint().width(),m_pIrcView->sizeHint().height() + m_pInput->heightHint());
+ return ret;
+}
+
diff --git a/src/kvirc/ui/kvi_debugwindow.h b/src/kvirc/ui/kvi_debugwindow.h
new file mode 100644
index 00000000..b9646e24
--- /dev/null
+++ b/src/kvirc/ui/kvi_debugwindow.h
@@ -0,0 +1,54 @@
+#ifndef _KVI_DEBUGWINDOW_H_
+#define _KVI_DEBUGWINDOW_H_
+//=============================================================================
+//
+// File : kvi_debugwindow.h
+// Creation date : Sun Jul 18 2005 14:14:00 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_window.h"
+#include "kvi_string.h"
+
+class QSplitter;
+
+class KVIRC_API KviDebugWindow : public KviWindow
+{
+ Q_OBJECT
+public:
+ KviDebugWindow();
+ ~KviDebugWindow();
+protected:
+ static KviDebugWindow * m_pInstance;
+public:
+ static KviDebugWindow * instance(){ return m_pInstance; };
+ static KviDebugWindow * getInstance();
+protected:
+ virtual QPixmap * myIconPtr();
+ virtual void fillCaptionBuffers();
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual void loadProperties(KviConfig * cfg);
+ virtual void saveProperties(KviConfig * cfg);
+ virtual void getBaseLogFileName(QString &buffer);
+ virtual QSize sizeHint() const;
+};
+
+#endif //_KVI_DEBUGWINDOW_H_
diff --git a/src/kvirc/ui/kvi_dynamictooltip.cpp b/src/kvirc/ui/kvi_dynamictooltip.cpp
new file mode 100644
index 00000000..3e6f22ce
--- /dev/null
+++ b/src/kvirc/ui/kvi_dynamictooltip.cpp
@@ -0,0 +1,61 @@
+//
+// File : kvi_dynamictooltip.cpp
+// Creation date : Wed Nov 01 2000 15:25:11 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#define __KVIRC__
+#include "kvi_dynamictooltip.h"
+
+KviDynamicToolTipHelper::KviDynamicToolTipHelper(QWidget * parent,KviDynamicToolTip * parToolTip)
+: KviTalToolTip(parent)
+{
+ m_pParentToolTip = parToolTip;
+}
+
+KviDynamicToolTipHelper::~KviDynamicToolTipHelper()
+{
+}
+
+void KviDynamicToolTipHelper::maybeTip(const QPoint & pnt)
+{
+ m_pParentToolTip->maybeTip(pnt);
+}
+
+KviDynamicToolTip::KviDynamicToolTip(QWidget * parent,const char * name)
+: QObject(parent,name)
+{
+ m_pHelper = new KviDynamicToolTipHelper(parent,this);
+}
+
+KviDynamicToolTip::~KviDynamicToolTip()
+{
+ delete m_pHelper;
+}
+
+void KviDynamicToolTip::maybeTip(const QPoint &pnt)
+{
+ emit tipRequest(this,pnt);
+}
+
+void KviDynamicToolTip::tip(const QRect &rct,const QString & text)
+{
+ m_pHelper->tip(rct,text);
+}
+
+#include "kvi_dynamictooltip.moc"
diff --git a/src/kvirc/ui/kvi_dynamictooltip.h b/src/kvirc/ui/kvi_dynamictooltip.h
new file mode 100644
index 00000000..119c224c
--- /dev/null
+++ b/src/kvirc/ui/kvi_dynamictooltip.h
@@ -0,0 +1,61 @@
+#ifndef _KVI_DYNAMICTOOLTIP_H_
+#define _KVI_DYNAMICTOOLTIP_H_
+
+//
+// File : kvi_dynamictooltip.h
+// Creation date : Wed Nov 01 2000 15:23:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+#include "kvi_tal_tooltip.h"
+#include <qobject.h>
+
+class KviDynamicToolTip;
+
+class KVIRC_API KviDynamicToolTipHelper : public KviTalToolTip
+{
+ friend class KviDynamicToolTip;
+protected:
+ KviDynamicToolTipHelper(QWidget * parent,KviDynamicToolTip * parToolTip);
+ virtual ~KviDynamicToolTipHelper();
+protected:
+ KviDynamicToolTip * m_pParentToolTip;
+protected:
+ virtual void maybeTip(const QPoint &pnt);
+};
+
+class KVIRC_API KviDynamicToolTip : public QObject
+{
+ friend class KviDynamicToolTipHelper;
+ Q_OBJECT
+public:
+ KviDynamicToolTip(QWidget * parent,const char * name = 0);
+ virtual ~KviDynamicToolTip();
+protected:
+ KviDynamicToolTipHelper * m_pHelper;
+public:
+ void tip(const QRect &rct,const QString & text);
+protected:
+ void maybeTip(const QPoint &pnt);
+signals:
+ void tipRequest(KviDynamicToolTip *tip,const QPoint &pnt);
+};
+
+#endif //!_KVI_DYNAMICTOOLTIP_H_
diff --git a/src/kvirc/ui/kvi_filedialog.cpp b/src/kvirc/ui/kvi_filedialog.cpp
new file mode 100644
index 00000000..99f9c169
--- /dev/null
+++ b/src/kvirc/ui/kvi_filedialog.cpp
@@ -0,0 +1,229 @@
+//
+// File : kvi_filedialog.cpp
+// Creation date : Mon Nov 20 2000 12:20:42 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#define __KVIRC__
+#include "kvi_filedialog.h"
+#include "kvi_mediatype.h"
+#include "kvi_iconmanager.h"
+#include "kvi_locale.h"
+#include "kvi_app.h"
+#include "kvi_fileutils.h"
+#include "kvi_frame.h"
+#include "kvi_qstring.h"
+
+#include <qdir.h>
+#include "kvi_tal_tooltip.h"
+#include <qmessagebox.h>
+
+extern KviMediaManager * g_pMediaManager;
+
+
+KviFileDialog::KviFileDialog(const QString &dirName, const QString &filter,
+ QWidget *parent, const char *name, bool modal)
+: KviTalFileDialog(dirName,filter,parent,name,modal)
+{
+
+ setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_FOLDER)));
+
+}
+
+KviFileDialog::~KviFileDialog()
+{
+}
+
+
+/*
+void KviFileDialog::goKvirc()
+{
+
+ KviStr tmp;
+ g_pApp->getLocalKvircDirectory(tmp,KviApp::None);
+ setDir(QDir(tmp.ptr()));
+
+}
+
+void KviFileDialog::goHome()
+{
+
+ setDir(QDir::home());
+
+}
+*/
+
+
+
+bool KviFileDialog::askForOpenFileName(QString &buffer,const QString &caption,const QString &initial,const QString &filter,bool showHidden, bool showNative,QWidget* parent)
+{
+#ifdef COMPILE_ON_WINDOWS
+ if(showNative)
+ {
+ buffer=QFileDialog::getOpenFileName(initial,filter,parent,"open_file_name_dialog",caption);
+ KviFileUtils::adjustFilePath(buffer);
+ return !buffer.isEmpty();
+ }
+#endif
+ KviFileDialog * d = new KviFileDialog(initial,filter,parent,"open_file_name_dialog",true);
+ d->setCaption(caption);
+ d->setMode(QFileDialog::ExistingFile);
+ //d->setShowHiddenFiles(showHidden);
+ if(d->exec() == QDialog::Accepted)
+ {
+ buffer = d->selectedFile();
+ KviFileUtils::adjustFilePath(buffer);
+ delete d;
+ return !buffer.isEmpty();
+ }
+ delete d;
+ return false;
+}
+
+
+bool KviFileDialog::askForSaveFileName(QString &buffer,const QString & caption,const QString &initial,const QString &filter,bool showHidden,bool bConfirmOverwrite,bool showNative,QWidget* parent)
+{
+ #ifdef COMPILE_ON_WINDOWS
+ if (showNative)
+ {
+ while (1)
+ {
+ buffer=QFileDialog::getSaveFileName(initial,filter,parent,"save_file_name_dialog",caption);
+ KviFileUtils::adjustFilePath(buffer);
+ //return !buffer.isEmpty();
+ if(buffer.isEmpty()) return false;
+ if(!bConfirmOverwrite) return true;
+ // Check for the file existence
+ if(!KviFileUtils::fileExists(buffer)) return true;
+ QString tmp;
+ KviQString::sprintf(tmp,__tr2qs("The file %s already exists.<br>Do you wish to overwrite it?"),buffer.utf8().data());
+ switch(QMessageBox::information(parent,__tr2qs("File Exists - KVIrc"),tmp,QMessageBox::Yes,QMessageBox::No | QMessageBox::Default,QMessageBox::Cancel | QMessageBox::Escape))
+ {
+ case QMessageBox::Cancel: return false; break;
+ case QMessageBox::Yes: return true; break;
+ }
+
+ }
+
+
+ }
+ #endif
+
+
+ KviFileDialog * d = new KviFileDialog(initial,filter,parent,"save_file_name_dialog",true);
+ d->setCaption(caption);
+ d->setMode(QFileDialog::AnyFile);
+ //d->setShowHiddenFiles(showHidden);
+
+ while(d->exec() == QDialog::Accepted)
+ {
+ buffer = d->selectedFile();
+ KviFileUtils::adjustFilePath(buffer);
+
+ if(!buffer.isEmpty())
+ {
+ if(!bConfirmOverwrite)
+ {
+ delete d;
+ return true;
+ }
+ // Check for the file existence
+ if(KviFileUtils::fileExists(buffer))
+ {
+ QString tmp;
+ KviQString::sprintf(tmp,__tr2qs("The file %s already exists.<br>Do you wish to overwrite it?"),buffer.utf8().data());
+ switch(QMessageBox::information(d,__tr2qs("File Exists - KVIrc"),tmp,QMessageBox::Yes,QMessageBox::No | QMessageBox::Default,QMessageBox::Cancel | QMessageBox::Escape))
+ {
+ case QMessageBox::Cancel: delete d; return false; break;
+ case QMessageBox::Yes: delete d; return true; break;
+ }
+ } else {
+ delete d;
+ return true; // ok...file not exists
+ }
+ } else {
+ delete d;
+ return false; // empty buffer
+ }
+ }
+
+ delete d;
+ return false;
+
+}
+
+bool KviFileDialog::askForDirectoryName(QString &buffer,const QString & caption,const QString & initial,const char * filter,bool showHidden,bool showNative,QWidget* parent)
+{
+#ifdef COMPILE_ON_WINDOWS
+ if(showNative)
+ {
+ buffer = QFileDialog::getExistingDirectory(initial,parent,"open_file_name_dialog",caption);
+ return !buffer.isEmpty();
+ }
+#else
+ #ifdef COMPILE_KDE_SUPPORT
+ // the KDE based dir selection dialog is now quite nice
+ buffer = KFileDialog::getExistingDirectory(initial,parent,caption);
+ return !buffer.isEmpty();
+ #endif
+#endif
+
+ KviFileDialog * d = new KviFileDialog(initial,
+ filter,parent,"directory_name_dialog",true);
+ d->setCaption(caption);
+ d->setMode(QFileDialog::Directory);
+ //d->setShowHiddenFiles(showHidden);
+ if(d->exec() == QDialog::Accepted)
+ {
+ buffer = d->selectedFile();
+ KviFileUtils::adjustFilePath(buffer);
+ delete d;
+ return !buffer.isEmpty();
+ }
+ delete d;
+
+ return false;
+}
+
+
+bool KviFileDialog::askForOpenFileNames(QStringList &buffer,const QString & caption,const QString & initial,const char * filter,bool showHidden,bool showNative,QWidget* parent)
+{
+ #ifdef COMPILE_ON_WINDOWS
+ if (showNative)
+ {
+ buffer=QFileDialog::getOpenFileNames(filter,initial,parent,"open_file_name_dialog",caption);
+ return (buffer.count()>0);
+ }
+
+ #endif
+ KviFileDialog * d = new KviFileDialog(initial,filter ? QString(filter) : QString::null,parent,"open_file_names_dialog",true);
+ d->setCaption(caption);
+ d->setMode(QFileDialog::ExistingFiles);
+ //d->setShowHiddenFiles(showHidden);
+ if(d->exec() == QDialog::Accepted)
+ {
+ buffer = d->selectedFiles();
+ delete d;
+ return (buffer.count() > 0);
+ }
+ delete d;
+ return false;
+}
+
+
+#include "kvi_filedialog.moc"
diff --git a/src/kvirc/ui/kvi_filedialog.h b/src/kvirc/ui/kvi_filedialog.h
new file mode 100644
index 00000000..985898d6
--- /dev/null
+++ b/src/kvirc/ui/kvi_filedialog.h
@@ -0,0 +1,55 @@
+#ifndef _KVI_FILEDIALOG_H_
+#define _KVI_FILEDIALOG_H_
+
+//
+// File : kvi_filedialog.h
+// Creation date : Mon Nov 20 2000 03:52:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#ifdef Unsorted
+ #undef Unsorted
+#endif
+#include "kvi_settings.h"
+#include "kvi_string.h"
+
+
+#include "kvi_tal_filedialog.h"
+
+#include <qstringlist.h>
+
+
+class KVIRC_API KviFileDialog : public KviTalFileDialog
+{
+ Q_OBJECT
+public:
+ KviFileDialog(const QString &dirName, const QString &filter=QString::null,
+ QWidget *parent=0, const char *name=0, bool modal=false);
+ ~KviFileDialog();
+public:
+ static bool askForOpenFileName(QString &buffer,const QString & caption,const QString &initial = QString::null,const QString &filter = QString::null,bool showHidden = false,bool showNative = true,QWidget* parent=0);
+ static bool askForSaveFileName(QString &buffer,const QString & caption,const QString &initial = QString::null,const QString &filter = QString::null,bool showHidden = false,bool bConfirmOverwrite = false,bool showNative = true,QWidget* parent=0);
+
+ static bool askForDirectoryName(QString &buffer,const QString & caption,const QString & initial,const char * filter = 0,bool showHidden = false,bool showNative=true,QWidget* parent=0);
+ static bool askForOpenFileNames(QStringList &buffer,const QString & caption,const QString & initial,const char * filter = 0,bool showHidden = false,bool showNative=true,QWidget* parent=0);
+
+};
+
+
+#endif //_KVI_FILEDIALOG_H_
diff --git a/src/kvirc/ui/kvi_frame.cpp b/src/kvirc/ui/kvi_frame.cpp
new file mode 100644
index 00000000..e7b7c0b8
--- /dev/null
+++ b/src/kvirc/ui/kvi_frame.cpp
@@ -0,0 +1,1450 @@
+//=============================================================================
+//
+// File : kvi_frame.cpp
+// Creation date : Sun Jun 18 2000 17:59:02 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+#define _KVI_FRAME_CPP_
+
+#include "kvi_debug.h"
+#include "kvi_app.h"
+#include "kvi_settings.h"
+#include "kvi_frame.h"
+#include "kvi_options.h"
+#include "kvi_menubar.h"
+#include "kvi_mdimanager.h"
+#include "kvi_mdichild.h"
+#include "kvi_iconmanager.h"
+#include "kvi_window.h"
+#include "kvi_taskbar.h"
+#include "kvi_console.h"
+#include "kvi_config.h"
+#include "kvi_internalcmd.h"
+#include "kvi_console.h"
+#include "kvi_debug.h"
+#include "kvi_irctoolbar.h"
+#include "kvi_confignames.h"
+#include "kvi_parameterlist.h"
+#include "kvi_module.h"
+#include "kvi_mextoolbar.h"
+#include "kvi_locale.h"
+#include "kvi_irccontext.h"
+#include "kvi_statusbar.h"
+#include "kvi_customtoolbar.h"
+#include "kvi_customtoolbarmanager.h"
+#include "kvi_customtoolbardescriptor.h"
+#include "kvi_actionmanager.h"
+#include "kvi_defaults.h"
+#include "kvi_ircview.h"
+#include "kvi_tal_popupmenu.h"
+
+#include "kvi_kvs_script.h"
+#include "kvi_kvs_eventtriggers.h"
+
+#include <qsplitter.h>
+#include <qvariant.h>
+#include <qlineedit.h>
+#include <qmessagebox.h>
+#include <qcheckbox.h>
+
+#include <qtimer.h>
+#include <qlayout.h>
+
+#if QT_VERSION >= 300
+ #include <qfile.h>
+ #include <qtextstream.h>
+ #ifdef COMPILE_USE_QT4
+ #include <q3dockarea.h>
+ #define QDockArea Q3DockArea
+ #else
+ #include <qdockarea.h>
+ #endif
+#endif
+
+
+#ifdef COMPILE_USE_QT4
+ #include <qdesktopwidget.h>
+ #include <qevent.h>
+ #include <QShortcut>
+#else
+ #include <qaccel.h>
+#endif
+
+#include <time.h>
+
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ #include <qpixmap.h>
+ // kvi_app.h
+ extern QPixmap * g_pShadedParentGlobalDesktopBackground;
+ extern QPixmap * g_pShadedChildGlobalDesktopBackground;
+// FIXME: #warning "When a toolbar is moved , MdiManager is resized but does not update the MdiChild backgrounds"
+#endif
+
+// Declared and managed by KviApp (kvi_app.cpp)
+extern KviConfig * g_pWinPropertiesConfig;
+KVIRC_API KviFrame * g_pFrame = 0; // the one and only frame object
+
+KviFrame::KviFrame()
+: KviTalMainWindow(0,"kvirc_frame")
+{
+ g_pFrame = this;
+
+ setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_KVIRC)));
+
+ m_pWinList = new KviPointerList<KviWindow>;
+ m_pWinList->setAutoDelete(false);
+
+ m_pModuleExtensionToolBarList = new KviPointerList<KviMexToolBar>;
+ m_pModuleExtensionToolBarList->setAutoDelete(false);
+
+ m_pActiveContext = 0;
+
+ m_pDockExtension = 0;
+
+ m_pSplitter = new QSplitter(Qt::Horizontal,this,"main_splitter");
+// m_pSplitter->setFrameShape(QFrame::NoFrame);
+
+ setCentralWidget(m_pSplitter);
+
+ setUsesBigPixmaps(KVI_OPTION_BOOL(KviOption_boolUseBigIcons));
+
+ m_pMdi = new KviMdiManager(m_pSplitter,this,"mdi_manager");
+ connect(m_pMdi,SIGNAL(enteredSdiMode()),this,SLOT(enteredSdiMode()));
+ connect(m_pMdi,SIGNAL(leftSdiMode()),this,SLOT(leftSdiMode()));
+
+ // This theoretically had to exists before KviMdiManager (that uses enterSdiMode)
+ m_pMenuBar = new KviMenuBar(this,"main_menu_bar");
+#ifdef COMPILE_USE_QT4
+ setMenuWidget(m_pMenuBar);
+#endif
+
+ if(KVI_OPTION_BOOL(KviOption_boolStatusBarVisible))
+ {
+ m_pStatusBar = new KviStatusBar(this);
+#ifdef COMPILE_USE_QT4
+ setStatusBar(m_pStatusBar);
+#endif
+ // torque: moved out of status bar constructor
+ // because module init functions exectued in load()
+ // couldn't access the status bar via g_pFrame->mainStatusBar()
+ // (assignment of m_pStatusBar happened after load() and
+ // the init function)
+ m_pStatusBar->load();
+
+ } else
+ m_pStatusBar = 0;
+
+ m_pTaskBar = 0;
+
+ createTaskBar();
+
+ if((KVI_OPTION_RECT(KviOption_rectFrameGeometry).width() < 100) || (KVI_OPTION_RECT(KviOption_rectFrameGeometry).height() < 100))
+ {
+ // Try to find some reasonable defaults
+ KVI_OPTION_RECT(KviOption_rectFrameGeometry) = QRect(10,10,g_pApp->desktop()->width() - 200,g_pApp->desktop()->height() - 150);
+ }
+
+ resize(KVI_OPTION_RECT(KviOption_rectFrameGeometry).width(),
+ KVI_OPTION_RECT(KviOption_rectFrameGeometry).height());
+ move(KVI_OPTION_RECT(KviOption_rectFrameGeometry).x(),
+ KVI_OPTION_RECT(KviOption_rectFrameGeometry).y());
+
+ applyOptions();
+
+
+ m_pAccel = new KviAccel(this);
+
+ installAccelerators(this);
+
+ layout()->setResizeMode(QLayout::FreeResize);
+}
+
+KviFrame::~KviFrame()
+{
+ KVI_OPTION_RECT(KviOption_rectFrameGeometry) = QRect(pos().x(),pos().y(),
+ size().width(),size().height());
+
+ KVI_OPTION_BOOL(KviOption_boolUseBigIcons) = usesBigPixmaps();
+ KVI_OPTION_BOOL(KviOption_boolMdiManagerInSdiMode) = m_pMdi->isInSDIMode();
+ KVI_OPTION_BOOL(KviOption_boolStatusBarVisible) = m_pStatusBar ? true : false;
+
+ KviCustomToolBarManager::instance()->storeVisibilityState();
+
+ saveToolBarPositions();
+ saveModuleExtensionToolBars();
+
+ // Call the frame destructor callback AFTER saving the toolbar positions
+ // This is because the destructor callback kills alls the KVS objects
+ // and thus the eventual user toolbar objects too and their position
+ // wouldn't be saved if they are shown at startup.
+
+ g_pApp->frameDestructorCallback();
+
+ // Now start killing stuff
+
+ // Explicitly kill all the module extension toolbars: qt has NOT to delete them: we must call their "die" method
+ while(KviMexToolBar * t = m_pModuleExtensionToolBarList->first())t->die();
+ delete m_pModuleExtensionToolBarList;
+
+ KVI_OPTION_BOOL(KviOption_boolShowDockExtension) = m_pDockExtension;
+
+ if(m_pDockExtension)
+ {
+ m_pDockExtension->die();
+ m_pDockExtension = 0;
+ }
+
+ // the really last thing to do : close all the windows
+ while(m_pWinList->first())
+ closeWindow(m_pWinList->first());
+ delete m_pWinList;
+
+ delete m_pAccel;
+ g_pFrame = 0;
+}
+
+int KviFrame::registerAccelerator(const QString &szKeySequence,QObject * recv,const char * slot)
+{
+ int id = m_pAccel->insertItem(szKeySequence);
+ m_pAccel->connectItem(id,recv,slot);
+ return id;
+}
+
+void KviFrame::unregisterAccelerator(int id)
+{
+ m_pAccel->removeItem(id);
+}
+
+void KviFrame::registerModuleExtensionToolBar(KviMexToolBar * t)
+{
+ m_pModuleExtensionToolBarList->append(t);
+}
+
+void KviFrame::unregisterModuleExtensionToolBar(KviMexToolBar * t)
+{
+ m_pModuleExtensionToolBarList->removeRef(t);
+}
+
+void KviFrame::restoreModuleExtensionToolBars()
+{
+ for(QStringList::Iterator it = KVI_OPTION_STRINGLIST(KviOption_stringlistModuleExtensionToolbars).begin();it != KVI_OPTION_STRINGLIST(KviOption_stringlistModuleExtensionToolbars).end();++it)
+ {
+ QString szEntry = *it;
+ int idx = szEntry.find(':');
+ if(idx != -1)
+ {
+ QString szMod = szEntry.left(idx);
+ szEntry.remove(0,idx + 1);
+ g_pModuleExtensionManager->allocateExtension("toolbar",KviStr(szEntry),firstConsole(),0,0,szMod);
+ }
+ }
+}
+
+void KviFrame::saveModuleExtensionToolBars()
+{
+ KVI_OPTION_STRINGLIST(KviOption_stringlistModuleExtensionToolbars).clear();
+
+ for(KviMexToolBar * t = m_pModuleExtensionToolBarList->first();t;t = m_pModuleExtensionToolBarList->next())
+ {
+ QString s = t->descriptor()->module()->name();
+ s += ":";
+ s += t->descriptor()->name().ptr();
+
+ //debug("FOUND TOOLBAR %s",t->descriptor()->name().ptr());
+
+ KVI_OPTION_STRINGLIST(KviOption_stringlistModuleExtensionToolbars).append(s);
+ }
+}
+
+KviMexToolBar * KviFrame::moduleExtensionToolBar(int extensionId)
+{
+ for(KviMexToolBar * t = m_pModuleExtensionToolBarList->first();t;t = m_pModuleExtensionToolBarList->next())
+ {
+ if(extensionId == t->descriptor()->id())return t;
+ }
+ return 0;
+}
+
+/*
+ @doc: keyboard
+ @type:
+ generic
+ @title:
+ Keyboard shortcuts
+ @keyterms:
+ Keyboard shortcuts
+ @short:
+ The list of the common keyboard shortcuts
+ @body:
+ [b]Ctrl+LeftArrow[/b]: Selection left to the previous word[br]
+ [b]Ctrl+RightArrow[/b]: Selection right to the next word[br]
+ [b]Ctrl+Shift+LeftArrow[/b]: Previous word[br]
+ [b]Ctrl+Shift+RightArrow[/b]: Next word[br]
+ [b]Alt+LeftArrow[/b]: Previous window[br]
+ [b]Alt+RightArrow[/b]: Next window[br]
+ [b]Alt+Shift+LeftArrow[/b]: Previous window in the same IRC context[/b]
+ [b]Alt+Shift+RightArrow[/b]: Next window in the same IRC context[/b]
+ [b]Ctrl+UpArrow[/b]: Maximize current window[br]
+ [b]Ctrl+DownArrow[/b] or [b]ESC[/b]: Minimize current window[br]
+ [b]Ctrl+&lt;digit&gt;[/b], [b]F1-F12[/b], [b]Shift+(F1-F12)[/b]: Script accelerators (see [event:onaccelkeypressed]OnAccelKeyPressed[/event])[br]
+ [b]Shift+&lt;F1-F12&gt;[/b] window switch[br]
+ [b]Tab in the first word of input[/b]: Completes nicknames in the current channel or query[br]
+ [b]Tab after a leading /[/b]: Completes commands[br]
+ [b]Tab after a / in the middle of input[/b]: Completes directories[br]
+ [b]Tab after a $[/b]: Completes function names[br]
+ [b]Shift+Tab after the first word of input[/b]: completes masks in the current channel or query[br]
+ [b]Ctrl+B[/b]: Inserts the 'bold' mIRC text control character[br]
+ [b]Ctrl+K[/b]: Inserts the 'color' mIRC text control character[br]
+ [b]Ctrl+R[/b]: Inserts the 'reverse' mIRC text control character[br]
+ [b]Ctrl+U[/b]: Inserts the 'underline' mIRC text control character[br]
+ [b]Ctrl+O[/b]: Inserts the 'reset' mIRC text control character[br]
+ [b]Ctrl+P[/b]: Inserts the 'non-crypt' (plain text) KVIrc control character used to disable encryption of the current text line[br]
+ [b]Ctrl+C[/b]: Copies the selected text to clipboard[br]
+ [b]Ctrl+X[/b]: Cuts the selected text[br]
+ [b]Ctrl+V[/b]: Pastes the clipboard contents (same as middle mouse click)[br]
+ [b]Ctrl+I[/b]: Inserts the 'icon' control code and pops up the icon list box
+ [b]CursorUp[/b]: Moves backward in the command history[br]
+ [b]CursorDown[/b]: Moves forward in the command history[br]
+ [b]Ctrl+PageUp[/b]: Opens the history popup[br]
+ [b]CursorRight[/b]: Moves the cursor to the right[br]
+ [b]CursorLeft[/b]: Moves the cursor to the left :)[br]
+ [b]Shift+CursorLeft[/b]: Moves the selection to the left[br]
+ [b]Shift+RightCursor[/b]: Moves the selection to the right[br]
+ [b]PageUp[/b]: Scrolls the output window up one page[br]
+ [b]PageDown[/b]: Scrolls the output window down one page[b]
+ [b]Shift+PageUp[/b]: Scrolls the output window up one line[br]
+ [b]Shift+PageDown[/b]: Scrolls the output window down one line[b]
+ [b]Alt+lt;numeric_sequence&gt;[/b]: Inserts the character by ASCII/Unicode code[br]
+ [b]Ctrl+Backspace[/b]: Shows or hides the multiline editor[br]
+ [b]Ctrl+F4[/b]: Closes the current window[br]
+ <example>
+ Alt+32: Inserts ASCII/Unicode character 32: ' ' (a space)
+ Alt+00032: Same as above :)
+ Alt+13: Inserts the Carriage Return (CR) control character
+ Alt+77: Inserts ASCII/Unicode character 77: 'M'
+ Alt+23566: Inserts Unicode character 23566 (an ideogram)
+ </example>
+*/
+
+KviAccel * KviFrame::installAccelerators(QWidget * wnd)
+{
+ QWidget * pParent = wnd ? (QWidget *)wnd : (QWidget *)this;
+#ifdef COMPILE_USE_QT4
+ new QShortcut(QKeySequence(Qt::Key_Left + Qt::ALT),pParent,SLOT(switchToPrevWindow()));
+ new QShortcut(QKeySequence(Qt::Key_Right + Qt::ALT),pParent,SLOT(switchToNextWindow()));
+ new QShortcut(QKeySequence(Qt::Key_Up + Qt::CTRL),pParent,SLOT(maximizeWindow()));
+ new QShortcut(QKeySequence(Qt::Key_Down + Qt::CTRL),pParent,SLOT(minimizeWindow()));
+ new QShortcut(QKeySequence(Qt::Key_Escape +Qt::CTRL),pParent,SLOT(minimizeWindow()));
+ new QShortcut(QKeySequence(Qt::Key_Left + Qt::ALT + Qt::SHIFT),pParent,SLOT(switchToPrevWindowInContext()));
+ new QShortcut(QKeySequence(Qt::Key_Right + Qt::ALT + Qt::SHIFT),pParent,SLOT(switchToNextWindowInContext()));
+#endif
+ KviAccel *ac = new KviAccel(pParent);
+
+ static int accel_table[] = {
+ Qt::Key_Left + Qt::ALT , // prev window
+ Qt::Key_Right + Qt::ALT , // next window
+ Qt::Key_Up + Qt::CTRL , // maximize window
+ Qt::Key_Down + Qt::CTRL , // minimize window
+ Qt::Key_Escape +Qt::CTRL, // minimize window
+ Qt::Key_Left + Qt::ALT + Qt::SHIFT , // prev window in context
+ Qt::Key_Right + Qt::ALT + Qt::SHIFT, // next window in context
+ Qt::Key_F4 + Qt::CTRL , // close current window
+ Qt::Key_1 + Qt::CTRL , // script accels...
+ Qt::Key_2 + Qt::CTRL ,
+ Qt::Key_3 + Qt::CTRL ,
+ Qt::Key_4 + Qt::CTRL ,
+ Qt::Key_5 + Qt::CTRL ,
+ Qt::Key_6 + Qt::CTRL ,
+ Qt::Key_7 + Qt::CTRL ,
+ Qt::Key_8 + Qt::CTRL ,
+ Qt::Key_9 + Qt::CTRL ,
+ Qt::Key_0 + Qt::CTRL ,
+ Qt::Key_F1 , // reserved for context sensitive help
+ Qt::Key_F2 ,
+ Qt::Key_F3 ,
+ Qt::Key_F4 ,
+ Qt::Key_F5 ,
+ Qt::Key_F6 ,
+ Qt::Key_F7 ,
+ Qt::Key_F8 ,
+ Qt::Key_F9 ,
+ Qt::Key_F10 ,
+ Qt::Key_F11 ,
+ Qt::Key_F12 ,
+/* Qt::Key_F1 + Qt::SHIFT , // window select...
+ Qt::Key_F2 + Qt::SHIFT ,
+ Qt::Key_F3 + Qt::SHIFT ,
+ Qt::Key_F4 + Qt::SHIFT ,
+ Qt::Key_F5 + Qt::SHIFT ,
+ Qt::Key_F6 + Qt::SHIFT ,
+ Qt::Key_F7 + Qt::SHIFT ,
+ Qt::Key_F8 + Qt::SHIFT ,
+ Qt::Key_F9 + Qt::SHIFT ,
+ Qt::Key_F10 + Qt::SHIFT ,
+ Qt::Key_F11 + Qt::SHIFT ,
+ Qt::Key_F12 + Qt::SHIFT ,*/
+ 0
+ };
+
+ int i=0;
+ int keys;
+ while((keys = accel_table[i]))
+ {
+ ac->insertItem(keys);
+ i++;
+ }
+
+ connect(ac,SIGNAL(activated(int)),this,SLOT(accelActivated(int)));
+ return ac;
+}
+
+void KviFrame::accelActivated(int id)
+{
+ KviAccel * acc = (KviAccel *)sender();
+
+ int keys = (int)(acc->key(id));
+ KviTaskBarItem *item = 0;
+ debug("accel");
+ switch(keys)
+ {
+ case (Qt::Key_Left+Qt::ALT): switchToPrevWindow(); break;
+ case (Qt::Key_Right+Qt::ALT): switchToNextWindow(); break;
+ case (Qt::Key_Up+Qt::CTRL): maximizeWindow(); break;
+ case (Qt::Key_Escape+Qt::CTRL):
+ case (Qt::Key_Down+Qt::CTRL): minimizeWindow(); break;
+ case (Qt::Key_Left+Qt::ALT+Qt::SHIFT): switchToPrevWindowInContext(); break;
+ case (Qt::Key_Right+Qt::ALT+Qt::SHIFT): switchToNextWindowInContext(); break;
+ case (Qt::Key_F4+Qt::CTRL): if(g_pActiveWindow)g_pActiveWindow->close(); break;
+ case (Qt::Key_F1): g_pApp->contextSensitiveHelp(); break;
+/* case(Qt::Key_F1 + SHIFT):
+ item = m_pTaskBar->item(0);
+ if(item) setActiveWindow(item->window());
+ break;
+ case(Qt::Key_F2 + SHIFT):
+ item = m_pTaskBar->item(1);
+ if(item) setActiveWindow(item->window());
+ break;
+ case(Qt::Key_F3 + SHIFT):
+ item = m_pTaskBar->item(2);
+ if(item) setActiveWindow(item->window());
+ break;
+ case(Qt::Key_F4 + SHIFT):
+ item = m_pTaskBar->item(3);
+ if(item) setActiveWindow(item->window());
+ break;
+ case(Qt::Key_F5 + SHIFT):
+ item = m_pTaskBar->item(4);
+ if(item) setActiveWindow(item->window());
+ break;
+ case(Qt::Key_F6 + SHIFT):
+ item = m_pTaskBar->item(5);
+ if(item) setActiveWindow(item->window());
+ break;
+ case(Qt::Key_F7 + SHIFT):
+ item = m_pTaskBar->item(6);
+ if(item) setActiveWindow(item->window());
+ break;
+ case(Qt::Key_F8 + SHIFT):
+ item = m_pTaskBar->item(7);
+ if(item) setActiveWindow(item->window());
+ break;
+ case(Qt::Key_F9 + SHIFT):
+ item = m_pTaskBar->item(8);
+ if(item) setActiveWindow(item->window());
+ break;
+ case(Qt::Key_F10 + SHIFT):
+ item = m_pTaskBar->item(9);
+ if(item) setActiveWindow(item->window());
+ break;
+ case(Qt::Key_F11 + SHIFT):
+ item = m_pTaskBar->item(10);
+ if(item) setActiveWindow(item->window());
+ break;
+ case(Qt::Key_F12 + SHIFT):
+ item = m_pTaskBar->item(11);
+ if(item) setActiveWindow(item->window());
+ break;*/
+ default:
+ {
+ KVS_TRIGGER_EVENT_1(KviEvent_OnAccelKeyPressed,g_pActiveWindow,(QString)(acc->key(id)));
+ }
+ break;
+ };
+}
+
+void KviFrame::executeInternalCommand(int index)
+{
+ KviKvsScript::run(kvi_getInternalCommandBuffer(index),firstConsole());
+}
+
+
+void KviFrame::saveWindowProperties(KviWindow * wnd,const char * szSection)
+{
+ g_pWinPropertiesConfig->setGroup(szSection);
+ g_pWinPropertiesConfig->writeEntry("EntryTimestamp",(unsigned int)time(0));
+
+ // Allow max 80 window properties to be floating around
+ while(g_pWinPropertiesConfig->groupsCount() > 80)
+ {
+ // Kill the oldest group
+ KviConfigIterator it(*(g_pWinPropertiesConfig->dict()));
+ KviStr minKey;
+ unsigned int minVal = time(0);
+ while(it.current() && minVal)
+ {
+ QString * pVal = it.current()->find("EntryTimestamp");
+ if(pVal)
+ {
+ bool bOk;
+ unsigned int uVal = pVal->toUInt(&bOk);
+ if(bOk)
+ {
+ if(uVal < minVal)
+ {
+ minVal = uVal;
+ minKey = it.currentKey();
+ }
+ } else {
+ minVal = 0;
+ minKey = it.currentKey();
+ }
+ } else {
+ minVal = 0;
+ minKey = it.currentKey();
+ }
+ ++it;
+ }
+
+ if(minKey.hasData())g_pWinPropertiesConfig->clearGroup(minKey.ptr());
+ else debug("Oops...no minimum key found!");
+ }
+
+ // The following line should NOT be needed...but just to be sure...
+ g_pWinPropertiesConfig->setGroup(szSection);
+
+ g_pWinPropertiesConfig->writeEntry("IsDocked",wnd->mdiParent());
+
+// KviWindow * top = g_pActiveWindow;
+// if(!top)top = wnd;
+// g_pWinPropertiesConfig->writeEntry("IsMaximized",top->isMaximized());
+
+ g_pWinPropertiesConfig->writeEntry("WinRect",wnd->externalGeometry());
+
+ wnd->saveProperties(g_pWinPropertiesConfig);
+}
+
+void KviFrame::closeWindow(KviWindow *wnd)
+{
+ // notify the destruction
+ wnd->triggerDestructionEvents();
+
+ // save it's properties
+ if(KVI_OPTION_BOOL(KviOption_boolWindowsRememberProperties)) // && (wnd->type() == KVI_WINDOW_TYPE_CHANNEL))
+ {
+ QString group;
+ wnd->getConfigGroupName(group);
+ // not uses default settings : store it always
+ saveWindowProperties(wnd,group);
+ }
+
+ // forget it...
+ m_pWinList->removeRef(wnd);
+
+ // hide it
+ if(wnd->mdiParent())wnd->mdiParent()->hide();
+ else wnd->hide();
+
+ if(wnd == g_pActiveWindow)
+ {
+ // we need another active window before destroying it
+ KviMdiChild * pMdiChild = wnd->mdiParent();
+ if(pMdiChild)
+ {
+ pMdiChild = m_pMdi->highestChildExcluding(pMdiChild);
+ } else {
+ // the best candidate for the new active window
+ // is the top mdiManager's child
+ pMdiChild = m_pMdi->topChild();
+ }
+ KviWindow * pCandidate;
+ if(pMdiChild)
+ {
+ pCandidate = (KviWindow *)(pMdiChild->client());
+ } else {
+ pCandidate = m_pWinList->first();
+ if(pCandidate == wnd)pCandidate = 0;
+ }
+
+ if(pCandidate)
+ childWindowActivated(pCandidate);
+ // else { m_pActiveWindow = 0; m_pActiveContext = 0; };
+ }
+
+ if(wnd == g_pActiveWindow) // ops... :/ ... this happens only at shutdown
+ {
+ g_pActiveWindow = 0;
+ m_pActiveContext = 0;
+ }
+
+ // and shut it down...
+ // KviWindow will call childWindowDestroyed() here
+ if(wnd->mdiParent())m_pMdi->destroyChild(wnd->mdiParent(),true);
+ else delete wnd;
+}
+
+
+void KviFrame::addWindow(KviWindow *wnd,bool bShow)
+{
+ m_pWinList->append(wnd);
+ wnd->createTaskBarItem(); // create the window taskbar item AFTER it has been constructed
+
+ QString group;
+ wnd->getConfigGroupName(group);
+
+ bool bGroupSettings = false;
+
+ if(g_pWinPropertiesConfig->hasGroup(group))
+ {
+ g_pWinPropertiesConfig->setGroup(group);
+ } else {
+ bGroupSettings = true;
+ if(g_pWinPropertiesConfig->hasGroup(wnd->typeString()))
+ {
+ g_pWinPropertiesConfig->setGroup(wnd->typeString());
+ } else {
+ g_pWinPropertiesConfig->setGroup("no_settings_group");
+ wnd->loadProperties(g_pWinPropertiesConfig); // load it anyway (will set defaults if windows don't remember properties)
+ goto default_docking; // no settings stored
+ }
+ }
+
+ {
+ wnd->loadProperties(g_pWinPropertiesConfig); // load it anyway (will set defaults if windows don't remember properties)
+
+ if(KVI_OPTION_BOOL(KviOption_boolWindowsRememberProperties))
+ {
+ bool bDocked = g_pWinPropertiesConfig->readBoolEntry("IsDocked",true);
+ //bool bMaximized = g_pWinPropertiesConfig->readBoolEntry("IsMaximized",false);
+ bool bMaximized;
+
+ if(KVI_OPTION_BOOL(KviOption_boolMdiManagerInSdiMode))
+ {
+ bMaximized = true;
+ //KVI_OPTION_BOOL(KviOption_boolMdiManagerInSdiMode) = false;
+ } else bMaximized = false;
+
+ QRect rect = g_pWinPropertiesConfig->readRectEntry("WinRect",QRect(10,10,500,380));
+
+ if(bDocked)
+ {
+ // when group settings are used , we always cascade the windows
+ // this means that windows that have no specialized config group name
+ // are always cascaded : this is true for consoles , queries (and other windows) but not channels (and some other windows)
+ KviMdiChild * lpC = dockWindow(wnd,false,bGroupSettings,&rect);
+ lpC->setRestoredGeometry(rect);
+ wnd->triggerCreationEvents();
+ if(bShow)
+ {
+ m_pMdi->showAndActivate(lpC);
+ if(bMaximized)wnd->maximize();
+ // Handle the special case of this top level widget not being the active one.
+ // In this situation the child will not get the focusInEvent
+ // and thus will not call out childWindowActivated() method
+ if(!isActiveWindow())childWindowActivated(wnd);
+ }
+ } else {
+ wnd->setGeometry(rect);
+ wnd->triggerCreationEvents();
+ if(bShow)
+ {
+ wnd->show();
+ if(bMaximized)wnd->maximize();
+ }
+ wnd->youAreUndocked();
+ if(bShow)
+ {
+ wnd->raise();
+ wnd->setFocus();
+ }
+ }
+ goto docking_done;
+ }
+ }
+
+default_docking:
+ {
+ KviMdiChild * lpC = dockWindow(wnd,false); //cascade it
+ wnd->triggerCreationEvents();
+ if(bShow)
+ {
+ m_pMdi->showAndActivate(lpC);
+ if(KVI_OPTION_BOOL(KviOption_boolMdiManagerInSdiMode)) wnd->maximize();
+ // Handle the special case of this top level widget not being the active one.
+ // In this situation the child will not get the focusInEvent
+ // and thus will not call out childWindowActivated() method
+ if(!isActiveWindow())childWindowActivated(wnd);
+ }
+ }
+docking_done:
+ // we like to have an active window.. but don't trigger the events until it is really shown
+ if(!g_pActiveWindow)
+ {
+ g_pActiveWindow = wnd;
+ m_pActiveContext = wnd->context();
+ }
+}
+
+KviMdiChild * KviFrame::dockWindow(KviWindow *wnd,bool bShow,bool bCascade,QRect *setGeom)
+{
+ if(wnd->mdiParent())return wnd->mdiParent();
+ KviMdiChild * lpC = new KviMdiChild(m_pMdi,"");
+ lpC->setClient(wnd);
+ wnd->youAreDocked();
+ m_pMdi->manageChild(lpC,bCascade,setGeom);
+ if(bShow)m_pMdi->showAndActivate(lpC);
+ return lpC;
+}
+
+void KviFrame::undockWindow(KviWindow *wnd)
+{
+ if(!(wnd->mdiParent()))return;
+ KviMdiChild * lpC = wnd->mdiParent();
+ lpC->unsetClient();
+ m_pMdi->destroyChild(lpC,false);
+ wnd->youAreUndocked();
+ wnd->raise();
+ wnd->setFocus();
+}
+
+
+void KviFrame::newConsole()
+{
+ createNewConsole();
+}
+
+KviConsole * KviFrame::createNewConsole(bool bFirstInFrame)
+{
+ // the first console must be created BEFORE the toolbars visible
+ // at startup otherwise we cannot execute script code
+ // which is necessary for the actions that are going to be added
+ // to the toolbars
+ KviConsole * c = new KviConsole(this,bFirstInFrame ? KVI_CONSOLE_FLAG_FIRSTINFRAME : 0);
+ addWindow(c);
+
+ if(bFirstInFrame)
+ {
+ restoreModuleExtensionToolBars();
+ KviCustomToolBarManager::instance()->createToolBarsVisibleAtStartup();
+ KviActionManager::instance()->delayedRegisterAccelerators();
+ restoreToolBarPositions();
+ }
+
+ return c;
+}
+
+unsigned int KviFrame::consoleCount()
+{
+ unsigned int count = 0;
+ for(KviWindow * wnd = m_pWinList->first();wnd;wnd = m_pWinList->next())
+ {
+ if(wnd->type() == KVI_WINDOW_TYPE_CONSOLE)count++;
+ }
+ return count;
+}
+
+KviConsole * KviFrame::firstConsole()
+{
+ for(KviWindow * wnd = m_pWinList->first();wnd;wnd = m_pWinList->next())
+ {
+ if(wnd->type() == KVI_WINDOW_TYPE_CONSOLE)return (KviConsole *)wnd;
+ }
+ __range_valid(false);
+ return 0; //should newer be here!.. but sometimes we are ?
+}
+
+KviConsole * KviFrame::firstNotConnectedConsole()
+{
+ for(KviWindow * wnd = m_pWinList->first();wnd;wnd = m_pWinList->next())
+ {
+ if(wnd->type() == KVI_WINDOW_TYPE_CONSOLE)
+ {
+ if(!((KviConsole *)wnd)->connectionInProgress())
+ return (KviConsole *)wnd;
+ }
+ }
+ return 0;
+}
+
+void KviFrame::childWindowCloseRequest(KviWindow *wnd)
+{
+ closeWindow(wnd);
+}
+
+void KviFrame::unhighlightWindowsOfContext(KviIrcContext * c)
+{
+ for(KviWindow *w = m_pWinList->first();w;w = m_pWinList->next())
+ if(w->context() == c)w->unhighlight();
+}
+
+void KviFrame::setActiveWindow(KviWindow *wnd)
+{
+ // ASSERT(m_pWinList->findRef(wnd))
+ if(wnd->isMinimized())wnd->restore();
+ if(wnd->mdiParent())wnd->setFocus();
+ else wnd->delayedAutoRaise();
+}
+
+KviIrcConnection * KviFrame::activeConnection()
+{
+ return m_pActiveContext ? m_pActiveContext->connection() : 0;
+}
+
+void KviFrame::childWindowSelectionStateChange(KviWindow * pWnd,bool bGotSelectionNow)
+{
+ if(pWnd != g_pActiveWindow)return;
+ emit activeWindowSelectionStateChanged(bGotSelectionNow);
+
+}
+
+void KviFrame::childContextStateChange(KviIrcContext * c)
+{
+ if(c != m_pActiveContext)return;
+ emit activeContextStateChanged();
+}
+
+void KviFrame::childConnectionLagChange(KviIrcConnection * c)
+{
+ KviIrcContext * ctx = c->context();
+ if(ctx != m_pActiveContext)return;
+ emit activeConnectionLagChanged();
+}
+
+void KviFrame::childConnectionServerInfoChange(KviIrcConnection * c)
+{
+ KviIrcContext * ctx = c->context();
+ if(ctx != m_pActiveContext)return;
+ emit activeConnectionServerInfoChanged();
+}
+
+void KviFrame::childConnectionNickNameChange(KviIrcConnection * c)
+{
+ KviIrcContext * ctx = c->context();
+ if(ctx != m_pActiveContext)return;
+ emit activeConnectionNickNameChanged();
+}
+
+void KviFrame::childConnectionAwayStateChange(KviIrcConnection * c)
+{
+ KviIrcContext * ctx = c->context();
+ if(ctx != m_pActiveContext)return;
+ emit activeConnectionAwayStateChanged();
+}
+
+void KviFrame::childConnectionUserModeChange(KviIrcConnection * c)
+{
+ KviIrcContext * ctx = c->context();
+ if(ctx != m_pActiveContext)return;
+ emit activeConnectionUserModeChanged();
+}
+
+
+void KviFrame::childWindowActivated(KviWindow *wnd)
+{
+ // ASSERT(m_pWinList->findRef(wnd))
+ if(g_pActiveWindow == wnd)return;
+ if(g_pActiveWindow)g_pActiveWindow->lostUserFocus();
+ // YES: it's HERE!
+ g_pActiveWindow = wnd;
+
+ bool bActiveContextChanged = (m_pActiveContext != wnd->context());
+ m_pActiveContext = wnd->context();
+
+ if(wnd->isMaximized() && wnd->mdiParent())updateCaption();
+ m_pTaskBar->setActiveItem(wnd->taskBarItem());
+
+ //wnd->gainedActiveWindowStatus(); // <-- atm unused
+
+ if(g_pActiveWindow->view())
+ g_pActiveWindow->view()->clearUnreaded();
+
+ emit activeWindowChanged();
+ if(bActiveContextChanged)emit activeContextChanged();
+
+ KVS_TRIGGER_EVENT_0(KviEvent_OnWindowActivated,wnd);
+}
+
+void KviFrame::windowActivationChange(bool bOldActive)
+{
+ // if we have just been activated by the WM
+ // then update the active window task bar item
+ // It will then reset its highlight state
+ // and hopefully make the dock widget work correctly
+ // in this case.
+ // This will also trigger the OnWindowActivated event :)
+ if(isActiveWindow())
+ {
+ if(!bOldActive)
+ {
+ if(g_pActiveWindow)
+ {
+ KviWindow * pTmp = g_pActiveWindow;
+ g_pActiveWindow = 0; // really ugly hack!
+ childWindowActivated(pTmp);
+ }
+ }
+ } else {
+ if(g_pActiveWindow)g_pActiveWindow->lostUserFocus();
+ }
+}
+
+void KviFrame::enteredSdiMode()
+{
+ updateCaption();
+}
+
+void KviFrame::leftSdiMode()
+{
+ updateCaption();
+}
+
+#define KVI_DEFAULT_FRAME_CAPTION "KVIrc " KVI_VERSION " " KVI_RELEASE_NAME
+
+void KviFrame::updateCaption()
+{
+ if(g_pActiveWindow)
+ {
+ if(g_pActiveWindow->isMaximized() && g_pActiveWindow->mdiParent())
+ {
+ QString tmp = g_pActiveWindow->plainTextCaption();
+ tmp += QChar(' ');
+ tmp += KVI_DEFAULT_FRAME_CAPTION;
+ setCaption(tmp);
+ return;
+ }
+ }
+ setCaption(KVI_DEFAULT_FRAME_CAPTION);
+}
+
+
+void KviFrame::closeEvent(QCloseEvent *e)
+{
+
+ if(KVI_OPTION_BOOL(KviOption_boolCloseInTray))
+ {
+ e->ignore();
+
+ if(!dockExtension())
+ {
+ executeInternalCommand(KVI_INTERNALCOMMAND_DOCKWIDGET_SHOW);
+ }
+ if(dockExtension())
+ {
+
+ dockExtension()->setPrevWindowState(windowState());
+ QTimer::singleShot( 0, this, SLOT(hide()) );
+ }
+ return;
+ }
+
+ if(KVI_OPTION_BOOL(KviOption_boolConfirmCloseWhenThereAreConnections))
+ {
+ // check for running connections
+
+ bool bGotRunningConnection = false;
+ for(KviWindow * w = m_pWinList->first();w;w = m_pWinList->next())
+ {
+ if(w->type() == KVI_WINDOW_TYPE_CONSOLE)
+ {
+ if(((KviConsole *)w)->connectionInProgress())
+ {
+ bGotRunningConnection = true;
+ break;
+ }
+ }
+ }
+
+ if(bGotRunningConnection)
+ {
+ QString txt = "<p>";
+ txt += __tr2qs("There are active connections, are you sure you wish to ");
+ txt += __tr2qs("quit KVIrc?");
+ txt += "</p>";
+
+ switch(QMessageBox::warning(this,__tr2qs("Confirmation - KVIrc"),txt,__tr2qs("&Yes"),__tr2qs("&Always"),__tr2qs("&No"),2,2))
+ {
+ case 0:
+ // ok to close
+ break;
+ case 1:
+ // ok to close but don't ask again
+ KVI_OPTION_BOOL(KviOption_boolConfirmCloseWhenThereAreConnections) = false;
+ break;
+ case 2:
+ e->ignore();
+ return;
+ break;
+ }
+ }
+ }
+
+ e->accept();
+
+ if(g_pApp)
+ g_pApp->destroyFrame();
+}
+
+void KviFrame::resizeEvent(QResizeEvent *e)
+{
+ KVI_OPTION_RECT(KviOption_rectFrameGeometry) = QRect(pos().x(),pos().y(),
+ size().width(),size().height());
+ KviTalMainWindow::resizeEvent(e);
+}
+
+void KviFrame::updatePseudoTransparency()
+{
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ if(g_pShadedParentGlobalDesktopBackground)m_pMdi->viewport()->update();
+
+ if(g_pShadedChildGlobalDesktopBackground)
+ {
+ for(KviWindow * wnd = m_pWinList->first();wnd;wnd = m_pWinList->next())wnd->updateBackgrounds();
+ m_pTaskBar->updatePseudoTransparency();
+ }
+#endif
+}
+
+void KviFrame::moveEvent(QMoveEvent *e)
+{
+ KVI_OPTION_RECT(KviOption_rectFrameGeometry) = QRect(pos().x(),pos().y(),
+ size().width(),size().height());
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ updatePseudoTransparency();
+#endif
+ KviTalMainWindow::moveEvent(e);
+}
+
+void KviFrame::applyOptions()
+{
+ m_pMdi->update();
+ for(KviWindow * wnd = m_pWinList->first();wnd;wnd = m_pWinList->next())wnd->applyOptions();
+ updateCaption();
+
+ m_pTaskBar->applyOptions();
+}
+
+void KviFrame::toggleStatusBar()
+{
+ if(m_pStatusBar)
+ {
+ delete m_pStatusBar;
+ m_pStatusBar = 0;
+ } else {
+ //if(statusBar())delete statusBar(); // kill any existing status bar (QT BUG)
+
+ m_pStatusBar = new KviStatusBar(this);
+ m_pStatusBar->load();
+#ifdef COMPILE_USE_QT4
+ setStatusBar(m_pStatusBar);
+#endif
+ m_pStatusBar->show();
+#ifndef COMPILE_USE_QT4
+ setUpLayout();
+#endif //!COMPILE_USE_QT4
+ }
+}
+
+void KviFrame::fillToolBarsPopup(KviTalPopupMenu * p)
+{
+ p->clear();
+
+ disconnect(p,SIGNAL(activated(int)),this,SLOT(toolbarsPopupSelected(int))); // just to be sure
+ connect(p,SIGNAL(activated(int)),this,SLOT(toolbarsPopupSelected(int)));
+
+ int id;
+ int cnt = 0;
+
+ KviModuleExtensionDescriptorList * l = g_pModuleExtensionManager->getExtensionList("toolbar");
+ if(l)
+ {
+ for(KviModuleExtensionDescriptor * d = l->first();d;d = l->next())
+ {
+ QString label = __tr2qs("Show %1").arg(d->visibleName());
+ if(d->icon())id = p->insertItem(*(d->icon()),label);
+ else id = p->insertItem(label);
+ p->setItemChecked(id,moduleExtensionToolBar(d->id()));
+ p->setItemParameter(id,d->id());
+ cnt++;
+ }
+ }
+
+ // FIXME: Should this display "Hide %1" when the toolbar is already visible ?
+ KviPointerHashTableIterator<QString,KviCustomToolBarDescriptor> it2(*(KviCustomToolBarManager::instance()->descriptors()));
+ if(it2.current())
+ {
+ if(cnt > 0)p->insertSeparator();
+ while(KviCustomToolBarDescriptor * d = it2.current())
+ {
+ QString label = __tr2qs("Show %1").arg(d->label());
+ QString ico = d->iconId();
+ // use the icon only if there is no check
+ if(d->toolBar())
+ {
+ id = p->insertItem(label);
+ p->setItemChecked(id,true);
+ } else {
+ if(!ico.isEmpty())
+ {
+ QPixmap * pix = g_pIconManager->getImage(d->iconId());
+ if(pix)
+ {
+ id = p->insertItem(*pix,label);
+ } else {
+ id = p->insertItem(label);
+ }
+ } else {
+ id = p->insertItem(label);
+ }
+ }
+ p->setItemParameter(id,d->internalId());
+ ++it2;
+ cnt++;
+ }
+ }
+
+ if(cnt > 0)p->insertSeparator();
+ p->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TOOLBAR)),__tr2qs("Customize..."),this,SLOT(customizeToolBars()));
+}
+
+void KviFrame::customizeToolBars()
+{
+ KviKvsScript::run("toolbareditor.open",g_pActiveWindow);
+}
+
+void KviFrame::toolbarsPopupSelected(int id)
+{
+ const QObject * o = sender();
+ if(!o)return;
+ if(!o->inherits("KviTalPopupMenu"))return;
+ const KviTalPopupMenu * p = (const KviTalPopupMenu *)o;
+ int idext = p->itemParameter(id);
+
+ KviCustomToolBarDescriptor * dd = KviCustomToolBarManager::instance()->findDescriptorByInternalId(idext);
+ if(dd)
+ {
+ if(dd->toolBar())delete dd->toolBar();
+ else dd->createToolBar();
+ }
+
+ if(KviMexToolBar * t = moduleExtensionToolBar(idext))
+ {
+ t->die();
+ } else {
+ g_pModuleExtensionManager->allocateExtension("toolbar",idext,firstConsole());
+ }
+}
+
+
+
+bool KviFrame::focusNextPrevChild(bool next)
+{
+ //debug("FOCUS NEXT PREV CHILD");
+ QWidget * w = focusWidget();
+ if(w)
+ {
+#ifdef COMPILE_USE_QT4
+ if(w->focusPolicy() == Qt::StrongFocus)return false;
+#else
+ if(w->focusPolicy() == QWidget::StrongFocus)return false;
+#endif
+ //QVariant v = w->property("KviProperty_FocusOwner");
+ //if(v.isValid())return false; // Do NOT change the focus widget!
+
+ if(w->parent())
+ {
+ QVariant v = w->parent()->property("KviProperty_ChildFocusOwner");
+ if(v.isValid())return false; // Do NOT change the focus widget!
+ }
+ }
+ // try to focus the widget on top of the Mdi
+ if(m_pMdi->topChild())
+ {
+ m_pMdi->focusTopChild();
+ return false;
+ }
+ return KviTalMainWindow::focusNextPrevChild(next);
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// Toolbar positioning stuff
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+void KviFrame::saveToolBarPositions()
+{
+ QString szTemp;
+ g_pApp->getLocalKvircDirectory(szTemp,KviApp::Config,KVI_CONFIGFILE_TOOLBARS);
+
+ QFile f(szTemp);
+ if(f.open(IO_WriteOnly | IO_Truncate))
+ {
+#ifdef COMPILE_USE_QT4
+ f.write(saveState(1));
+#else //!COMPILE_USE_QT4
+ QTextStream ts(&f);
+ ts << *this;
+ f.close();
+#endif //!COMPILE_USE_QT4
+ }
+}
+
+void KviFrame::restoreToolBarPositions()
+{
+ QString szTemp;
+ g_pApp->getLocalKvircDirectory(szTemp,KviApp::Config,KVI_CONFIGFILE_TOOLBARS);
+
+ QFile f(szTemp);
+
+ bool bNeedDefaults = false;
+
+ if(f.open(IO_ReadOnly))
+ {
+#ifdef COMPILE_USE_QT4
+ if(!restoreState(f.readAll(),1))
+ debug("Error while restoring toolbars position");
+#else //!COMPILE_USE_QT4
+ QTextStream ts(&f);
+ ts >> *this;
+ f.close();
+#endif //!COMPILE_USE_QT4
+ } else {
+ bNeedDefaults = true;
+ }
+
+ if(m_pTaskBar->inherits("KviTreeTaskBar"))
+ {
+#ifdef COMPILE_USE_QT4
+ // ensure that it is not too wide
+ m_pTaskBar->setMaximumWidth(600);
+ if(m_pTaskBar->width() > 600)
+ m_pTaskBar->setFixedWidth(250);
+#else //!COMPILE_USE_QT4
+ QDockArea * a = m_pTaskBar->area();
+ if((a == topDock()) || (a == bottomDock()))
+ {
+ // nope.... need to move it
+ a->removeDockWindow(m_pTaskBar,true,false);
+
+ //int iMaxWidth = m_pTaskBar->maximumWidth();
+ leftDock()->moveDockWindow(m_pTaskBar);
+ //m_pTaskBar->setMaximumWidth(iMaxWidth);
+ //m_pTaskBar->setOrientation(Vertical);
+ }
+ // ensure that it is not too wide
+ if(m_pTaskBar->width() > 600)
+ m_pTaskBar->setFixedExtentWidth(250);
+#endif //!COMPILE_USE_QT4
+ } /*else if(m_pTaskBar->inherits("KviClassicTaskBar"))
+ {
+ QDockArea * a = m_pTaskBar->area();
+ if((a == leftDock()) || (a == rightDock()))
+ {
+ // nope.... need to move it
+ a->removeDockWindow(m_pTaskBar,true,false);
+ bottomDock()->moveDockWindow(m_pTaskBar);
+ bottomDock()->lineUp(true);
+ }
+ }*/
+
+#ifndef COMPILE_USE_QT4
+ if(bNeedDefaults)
+ lineUpDockWindows(false);
+#endif //!COMPILE_USE_QT4
+}
+
+
+void KviFrame::createTaskBar()
+{
+ if(KVI_OPTION_BOOL(KviOption_boolUseTreeWindowListTaskBar))
+ {
+ m_pTaskBar = new KviTreeTaskBar();
+#ifdef COMPILE_USE_QT4
+ m_pTaskBar->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
+ addDockWidget(Qt::LeftDockWidgetArea,m_pTaskBar);
+#else //!COMPILE_USE_QT4
+ setDockEnabled(m_pTaskBar,Qt::DockTop,false);
+ setDockEnabled(m_pTaskBar,Qt::DockBottom,false);
+#endif //!COMPILE_USE_QT4
+ } else {
+ m_pTaskBar = new KviClassicTaskBar();
+#ifdef COMPILE_USE_QT4
+ m_pTaskBar->setAllowedAreas(Qt::AllDockWidgetAreas);
+ addDockWidget(Qt::BottomDockWidgetArea,m_pTaskBar);
+#else //!COMPILE_USE_QT4
+ setDockEnabled(m_pTaskBar,Qt::DockTop,true);
+ setDockEnabled(m_pTaskBar,Qt::DockBottom,true);
+#endif //!COMPILE_USE_QT4
+ }
+#ifndef COMPILE_USE_QT4
+ setDockEnabled(m_pTaskBar,Qt::DockLeft,true);
+ setDockEnabled(m_pTaskBar,Qt::DockRight,true);
+#endif //!COMPILE_USE_QT4
+}
+
+void KviFrame::recreateTaskBar()
+{
+ QString szOldClass = m_pTaskBar->className();
+
+ saveToolBarPositions();
+ KviWindow * w;
+ for(w = m_pWinList->first();w;w = m_pWinList->next())
+ {
+ w->destroyTaskBarItem();
+ }
+#ifndef COMPILE_USE_QT4
+ removeDockWindow(m_pTaskBar);
+#endif //!COMPILE_USE_QT4
+ delete m_pTaskBar;
+ createTaskBar();
+ for(w = m_pWinList->first();w;w = m_pWinList->next())
+ {
+ w->createTaskBarItem();
+ }
+ restoreToolBarPositions();
+
+
+ /*
+ QString szNewClass = m_pTaskBar->className();
+ if(szOldClass != szNewClass)
+ {
+ // the class changed...
+ // make sure that the tree task bar is in the left or right dock
+ // and the classic one is in the top or bottom on
+
+ Qt::Dock dock;
+ int index;
+ bool nl;
+ int eo;
+ getLocation(m_pTaskBar,dock,index,nl,eo);
+
+ if(KVI_OPTION_BOOL(KviOption_boolUseTreeWindowListTaskBar))
+ {
+ if((dock == Qt::Bottom) || (dock == Qt::Top))
+ moveDockWindow(m_pTaskBar,Qt::Left);
+ } else {
+ if((dock == Qt::Left) || (dock == Qt::Right))
+ moveDockWindow(m_pTaskBar,Qt::Bottom);
+ }
+ }
+ */
+
+ if(g_pActiveWindow)m_pTaskBar->setActiveItem(g_pActiveWindow->taskBarItem());
+}
+
+
+#if QT_VERSION == 0x030201
+unsigned int KviFrame::windowState()
+{
+ /* enum GNWindowState { WindowNoState = 0x00000000, WindowMinimized = 0x00000001,
+ WindowMaximized = 0x00000002, WindowFullScreen = 0x00000004, WindowActive = 0x00000008 };
+ GNWindowState GNWState;
+ if(isMinimized()) GNWState=WindowMinimized;
+ else if(isMaximized()) GNWState=WindowMaximized;
+ else if(isActiveWindow()) GNWState=WindowActive;
+ else if(isFullScreen()) GNWState=WindowFullScreen;
+ else GNWState=WindowNoState; */
+
+/* WindowNoState = 0x00000000 WindowMinimized = 0x00000001
+ WindowMaximized = 0x00000002 WindowFullScreen = 0x00000004 WindowActive = 0x00000008*/
+ if(isMinimized()) return 0x00000001;
+ else if(isMaximized()) return 0x00000002;
+ else if(isActiveWindow()) return 0x00000008;
+ else if(isFullScreen()) return 0x00000004;
+ else return 0x00000000;
+}
+void KviFrame::setWindowState(unsigned int GNWState)
+{
+ switch(GNWState)
+ {
+ case 0x00000001:
+ showMinimized();
+ break;
+ case 0x00000002:
+ showMaximized();
+ break;
+ } // switch
+}
+#endif
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// Some accelerators
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+void KviFrame::maximizeWindow(void)
+{
+ if(!g_pActiveWindow)return;
+ if(g_pActiveWindow->isMaximized())g_pActiveWindow->restore();
+ else g_pActiveWindow->maximize();
+}
+
+void KviFrame::minimizeWindow(void)
+{
+ if(g_pActiveWindow)g_pActiveWindow->minimize();
+}
+
+void KviFrame::switchToPrevWindow(void)
+{
+ m_pTaskBar->switchWindow(false,false);
+}
+
+void KviFrame::switchToNextWindow(void)
+{
+ m_pTaskBar->switchWindow(true,false);
+}
+
+void KviFrame::switchToPrevWindowInContext(void)
+{
+ m_pTaskBar->switchWindow(false,true);
+}
+
+void KviFrame::switchToNextWindowInContext(void)
+{
+ m_pTaskBar->switchWindow(true,true);
+}
+
+void KviFrame::hideEvent ( QHideEvent * e)
+{
+ if(KVI_OPTION_BOOL(KviOption_boolMinimizeInTray))
+ {
+ if(e->spontaneous())
+ {
+
+ if(!dockExtension())
+ {
+ executeInternalCommand(KVI_INTERNALCOMMAND_DOCKWIDGET_SHOW);
+ }
+ QTimer::singleShot( 0, this, SLOT(hide()) );
+ }
+
+ }
+}
+
+#include "kvi_frame.moc"
diff --git a/src/kvirc/ui/kvi_frame.h b/src/kvirc/ui/kvi_frame.h
new file mode 100644
index 00000000..d735a7c6
--- /dev/null
+++ b/src/kvirc/ui/kvi_frame.h
@@ -0,0 +1,259 @@
+#ifndef _KVI_FRAME_H_
+#define _KVI_FRAME_H_
+//=============================================================================
+//
+// File : kvi_frame.h
+// Creation date : Sun Jun 18 2000 17:59:02 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+//=============================================================================
+//
+// KviFrame:
+// The main window for the KVIrc application
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include "kvi_tal_mainwindow.h"
+#include "kvi_qstring.h"
+#include "kvi_pointerlist.h"
+
+class KviMenuBar;
+class KviMdiManager;
+class KviMdiChild;
+class KviWindow;
+class KviConsole;
+class KviTaskBarBase;
+class QSplitter;
+class KviConfig;
+class KviMexToolBar;
+class KviIrcContext;
+class KviIrcConnection;
+class KviStatusBar;
+class KviTalPopupMenu;
+
+#include "kvi_accel.h" // we need this :/
+
+#ifdef COMPILE_ON_WINDOWS
+ // MSCV has problems with KviPointerList<KviWindow> otherwise
+ #include "kvi_window.h"
+#endif
+
+// base class for the dock extension applets..
+// this should be probably moved out of here
+class KVIRC_API KviDockExtension
+{
+protected:
+ unsigned int m_uStoredWindowState;
+public:
+ KviDockExtension() : m_uStoredWindowState(0){};
+ virtual ~KviDockExtension(){};
+public:
+ void setPrevWindowState(unsigned int state) { m_uStoredWindowState = state; };
+ unsigned int getPrevWindowState() { return m_uStoredWindowState; };
+
+ virtual void refresh(){};
+ virtual void die(){ delete this; };
+};
+
+
+
+class KVIRC_API KviFrame : public KviTalMainWindow // , public KviIrcContextManager
+{
+ friend class KviWindow;
+ friend class KviConsole;
+ friend class KviApp;
+ friend class KviServerParser;
+ friend class KviMexToolBar;
+ friend class KviMdiManager;
+ friend class KviIrcContext;
+ friend class KviIrcConnection;
+ friend class KviLagMeter;
+ friend class KviUserListView;
+ friend class KviUserListViewArea;
+ Q_OBJECT
+public:
+ KviFrame();
+ ~KviFrame();
+protected:
+ // subwindows
+ QSplitter * m_pSplitter; // the frame is splitted vertically and thus can host widgets
+ KviMenuBar * m_pMenuBar; // the main menu bar
+ KviMdiManager * m_pMdi; // the mdi manager widget (child of the splitter)
+ KviPointerList<KviMexToolBar> * m_pModuleExtensionToolBarList; // the module extension toolbars
+ KviTaskBarBase * m_pTaskBar; // the taskbar
+ KviStatusBar * m_pStatusBar;
+ // the mdi workspace child windows
+ KviPointerList<KviWindow> * m_pWinList; // the main list of windows
+ KviIrcContext * m_pActiveContext; // the context of the m_pActiveWindow
+ // other
+ KviDockExtension * m_pDockExtension; // the frame's dock extension: this should be prolly moved ?
+ KviAccel * m_pAccel; // the global accelelrator
+public:
+ // the mdi manager: handles mdi children
+ KviMdiManager * mdiManager(){ return m_pMdi; };
+ // the splitter is the central widget for this frame
+ QSplitter * splitter(){ return m_pSplitter; };
+ // KviTaskBarBase is the base class for KviTreeTaskBar and the KviClassicTaskBar
+ KviTaskBarBase * taskBar(){ return m_pTaskBar; };
+ // well.. the menu bar :D
+ KviMenuBar * mainMenuBar(){ return m_pMenuBar; };
+ KviStatusBar * mainStatusBar(){ return m_pStatusBar; };
+ // this function may return 0 if the active window has no irc context
+ KviIrcContext * activeContext(){ return m_pActiveContext; };
+ // shortcut to a = activeContext(); return a ? a->connection() : 0
+ KviIrcConnection * activeConnection();
+ // The list of the windows belonging to this frame
+ // Note that the windows may be also undocked, but they are still owned by the frame
+ KviPointerList<KviWindow> * windowList() { return m_pWinList; };
+ // Sets the specified window to be the active one
+ // Raises it and focuses it
+ void setActiveWindow(KviWindow *wnd);
+ // Adds a new KviWindow to this frame
+ // This should be done just after the KviWindow constructor has returned
+ // If bShow is false then the window is not explicitly shown
+ // otherwise it is set as active window.
+ void addWindow(KviWindow *wnd,bool bShow = true); // public for modules
+ // Checks if a specified window is still existing in this frame child
+ // window list. This is useful for asynchronous functions
+ // that keep a window pointer and need to ensure that it is still
+ // valid after an uncontrolled delay. (Think of a /timer implementation)
+ bool windowExists(KviWindow * wnd){ return (m_pWinList->findRef(wnd) != -1); };
+ // The number of consoles in this frame
+ unsigned int consoleCount();
+ // Creates a new console window. DON'T use the KviConsole constructor directly.
+ // (The script creation events are triggered from here)
+ KviConsole * createNewConsole(bool bFirstInFrame = false);
+ // Returns the first available console.
+ // There is almost always an available console.
+ // Exceptions are the startup and the shutdown (see activeWindow())
+ KviConsole * firstConsole();
+ // Returns the first console that has no connection in progress
+ // This function CAN return 0 if all the consoles are connected
+ KviConsole * firstNotConnectedConsole();
+ // this is explicitly dedicated to the DockExtension applets
+ void setDockExtension(KviDockExtension * e){ m_pDockExtension = e; };
+ // returns the dockExtension applet. Useful for calling refresh() when
+ // some particular event happens
+ KviDockExtension * dockExtension(){ return m_pDockExtension; };
+ // Updates the main window caption.
+ // Should be called when the active window changes
+ // and the active irc context changes state
+ void updateCaption();
+ // helper for saving the window properties
+ void saveWindowProperties(KviWindow * wnd,const char * szSection);
+ // finds the module extension toolbar with the specified identifier
+ // see kvi_moduleextension.h and kvi_mextoolbar.h
+ KviMexToolBar * moduleExtensionToolBar(int extensionId);
+ // Helper to fill the toolbars popup
+ // it is used by KviToolBar and KviMenuBar
+ void fillToolBarsPopup(KviTalPopupMenu * p);
+ int registerAccelerator(const QString &szKeySequence,QObject * recv,const char * slot);
+ void unregisterAccelerator(int id);
+
+#if QT_VERSION == 0x030201
+
+ unsigned int windowState();
+ void setWindowState(unsigned int GNWState);
+
+#endif
+
+public slots:
+ void newConsole();
+ void executeInternalCommand(int index);
+ void toggleStatusBar();
+ void customizeToolBars();
+protected:
+ void restoreModuleExtensionToolBars();
+ void saveModuleExtensionToolBars();
+ void registerModuleExtensionToolBar(KviMexToolBar * t);
+ void unregisterModuleExtensionToolBar(KviMexToolBar * t);
+
+ void unhighlightWindowsOfContext(KviIrcContext * c);
+
+ void createTaskBar();
+ void recreateTaskBar();
+
+ KviMdiChild * dockWindow(KviWindow *wnd,bool bShow = true,bool bCascade = true,QRect * setGeom = 0);
+ void undockWindow(KviWindow *wnd);
+
+ void closeWindow(KviWindow *wnd);
+
+ // called by KviWindow
+ void childWindowCloseRequest(KviWindow *wnd);
+ void childWindowActivated(KviWindow *wnd);
+
+ void childContextStateChange(KviIrcContext * c);
+ void childConnectionNickNameChange(KviIrcConnection * c);
+ void childConnectionAwayStateChange(KviIrcConnection * c);
+ void childConnectionUserModeChange(KviIrcConnection * c);
+ void childConnectionLagChange(KviIrcConnection * c);
+ void childConnectionServerInfoChange(KviIrcConnection * c);
+ void childWindowSelectionStateChange(KviWindow * pWnd,bool bGotSelectionNow);
+
+ virtual void closeEvent(QCloseEvent *e);
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual void moveEvent(QMoveEvent *e);
+ virtual bool focusNextPrevChild(bool next);
+ virtual void windowActivationChange(bool bOldActive);
+
+ void updatePseudoTransparency();
+
+ KviAccel * installAccelerators(QWidget * wnd);
+
+ virtual void hideEvent ( QHideEvent * e);
+protected slots:
+ void switchToNextWindow();
+ void switchToPrevWindow();
+ void switchToNextWindowInContext();
+ void switchToPrevWindowInContext();
+
+ void maximizeWindow();
+ void minimizeWindow();
+
+ void accelActivated(int id);
+ void enteredSdiMode();
+ void leftSdiMode();
+ void toolbarsPopupSelected(int id);
+
+signals:
+ void activeWindowChanged(); // almost never 0.. but may be
+ void activeContextChanged(); // may be 0!
+ void activeContextStateChanged(); // emitted only when the active context is non 0 and it changes state
+ void activeConnectionNickNameChanged();
+ void activeConnectionUserModeChanged();
+ void activeConnectionAwayStateChanged();
+ void activeConnectionServerInfoChanged();
+ void activeConnectionLagChanged();
+ void activeWindowSelectionStateChanged(bool bGotSelectionNow);
+protected:
+ void applyOptions();
+private:
+ void saveToolBarPositions();
+ void restoreToolBarPositions();
+};
+
+#ifndef _KVI_FRAME_CPP_
+ extern KVIRC_API KviFrame * g_pFrame;
+#endif
+
+#endif //_KVI_FRAME_H_
diff --git a/src/kvirc/ui/kvi_historywin.cpp b/src/kvirc/ui/kvi_historywin.cpp
new file mode 100644
index 00000000..ba9ca315
--- /dev/null
+++ b/src/kvirc/ui/kvi_historywin.cpp
@@ -0,0 +1,255 @@
+#ifndef _KVI_HISTORYWIN_CPP_
+#define _KVI_HISTORYWIN_CPP_
+//
+// File : kvi_historywin.cpp
+// Creation date : Mon Aug 19 01:34:48 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#define __KVIRC__
+
+#include "kvi_historywin.h"
+#include "kvi_app.h"
+#include "kvi_options.h"
+#include "kvi_input.h"
+#include "kvi_mirccntrl.h"
+
+#include <qnamespace.h>
+
+#ifdef COMPILE_USE_QT4
+ #include <qevent.h>
+#endif
+
+#include <ctype.h>
+
+extern KviInputHistory * g_pInputHistory;
+
+KviHistoryWindow::KviHistoryWindow()
+#ifdef COMPILE_USE_QT4
+: KviTalListBox(0,Qt::Popup)
+#else
+: KviTalListBox(0,Qt::WType_Popup)
+#endif
+{
+ m_pOwner = 0;
+#ifdef COMPILE_USE_QT4
+ setHScrollBarMode(Q3ScrollView::AlwaysOff);
+#else
+ setHScrollBarMode(QScrollView::AlwaysOff);
+#endif
+ connect(this,SIGNAL(selected(const QString &)),this,SLOT(itemSelected(const QString &)));
+
+ m_iTimerId = -1;
+}
+
+KviHistoryWindow::~KviHistoryWindow()
+{
+ if(m_iTimerId != -1)
+ {
+ killTimer(m_iTimerId);
+ m_iTimerId = -1;
+ }
+}
+
+void KviHistoryWindow::fill()
+{
+ clear();
+ for(QString * s = g_pInputHistory->list()->last();s;s = g_pInputHistory->list()->prev())
+ {
+ insertItem(*s);
+ }
+ if(count() > 0)setCurrentItem(count() - 1);
+}
+
+void KviHistoryWindow::popup(KviInput *owner)
+{
+ if(m_pOwner)disconnect(m_pOwner,SIGNAL(destroyed()),this,SLOT(ownerDead()));
+ m_pOwner = owner;
+ connect(m_pOwner,SIGNAL(destroyed()),this,SLOT(ownerDead()));
+ fill();
+ show();
+}
+
+void KviHistoryWindow::mousePressEvent(QMouseEvent *e)
+{
+ if(e->pos().x() < 0)goto hideme;
+ if(e->pos().x() > width())goto hideme;
+ if(e->pos().y() < 0)goto hideme;
+ if(e->pos().y() > height())goto hideme;
+
+ KviTalListBox::mousePressEvent(e);
+ e->accept();
+ return;
+
+hideme:
+ doHide();
+}
+
+/*
+bool KviHistoryWindow::findTypedSeq()
+{
+ int cnt = count();
+ int max = 0;
+ int mit = -1;
+ bool bFullMax = false;
+ for(int i=0;i<cnt;i++)
+ {
+ KviStr szIt = text(i);
+ int j;
+ for(j=0;j<szIt.len();j++)
+ {
+ if(tolower(*(szIt.ptr() + j)) != tolower(*(m_szTypedSeq.ptr() + j)))break;
+ }
+ if(j < max)
+ {
+ goto got_mit;
+ } else {
+ if(j >= max)
+ {
+ bFullMax = (j == szIt.len());
+ max = j;
+ mit = i;
+ }
+ }
+ }
+got_mit:
+ setCurrentItem(mit);
+ m_szCurFullSeq = text(mit);
+ return bFullMax;
+}
+*/
+
+void KviHistoryWindow::keyPressEvent(QKeyEvent *e)
+{
+ switch(e->key())
+ {
+ case Qt::Key_Up:
+ case Qt::Key_Down:
+ case Qt::Key_PageUp:
+ case Qt::Key_PageDown:
+ case Qt::Key_Return:
+ KviTalListBox::keyPressEvent(e);
+ return;
+ break;
+ case Qt::Key_Escape:
+ doHide();
+ return;
+ break;
+/*
+ case Qt::Key_Backspace:
+ if(m_szTypedSeq.hasData())
+ {
+ m_szTypedSeq.cutRight(1);
+ findTypedSeq();
+ } else {
+ doHide();
+ if(m_pOwner)g_pApp->sendEvent(m_pOwner,e);
+ }
+ return;
+ break;
+*/
+/*
+ case Qt::Key_Space:
+ doHide();
+ if(findTypedSeq())
+ {
+ KviStr szItem = m_szTypedSeq;
+ szItem.append(' ');
+ if(m_pOwner)m_pOwner->insertText(szItem);
+ } else {
+ if(m_pOwner)g_pApp->sendEvent(m_pOwner,e);
+ }
+ return;
+ break;
+*/
+/*
+ case Qt::Key_Tab:
+ doHide();
+ findTypedSeq();
+ KviStr szItem = m_szCurFullSeq;
+ szItem.append(KVI_TEXT_ICON);
+ if(m_pOwner)m_pOwner->insertText(szItem);
+ return;
+ break;
+*/
+ }
+/*
+ int as = e->ascii();
+ if((as >= 'a' && as <= 'z') || (as >= 'A' && as <= 'Z') || (as >= '0' && as <= '9')
+ || (as == '?') || (as == '$') || (as == '.') || (as == ',') || (as == '!') || (as =='&'))
+ {
+ m_szTypedSeq.append((char)as);
+ findTypedSeq();
+ } else {
+*/
+ if(m_pOwner)g_pApp->sendEvent(m_pOwner,e);
+/*
+ }
+*/
+}
+
+void KviHistoryWindow::ownerDead()
+{
+ m_pOwner = 0;
+ doHide();
+}
+
+void KviHistoryWindow::show()
+{
+ m_iTimerId = startTimer(100000); //100 sec ...seems enough
+ QWidget::show();
+}
+
+void KviHistoryWindow::timerEvent(QTimerEvent *)
+{
+ m_pOwner = 0; // do not setFocus() to the owner after the timeout
+ doHide();
+}
+
+void KviHistoryWindow::doHide()
+{
+ if(m_iTimerId != -1)
+ {
+ killTimer(m_iTimerId);
+ m_iTimerId = -1;
+ }
+ hide();
+ if(m_pOwner)
+ m_pOwner->setFocus();
+}
+
+void KviHistoryWindow::itemSelected(const QString &str)
+{
+ doHide();
+ if(m_pOwner)m_pOwner->setText(str);
+}
+
+
+void KviHistoryWindow::hideEvent(QHideEvent *)
+{
+ if(m_iTimerId != -1)
+ {
+ killTimer(m_iTimerId);
+ m_iTimerId = -1;
+ }
+}
+
+#include "kvi_historywin.moc"
+#endif //_KVI_HISTORYWIN_CPP_
diff --git a/src/kvirc/ui/kvi_historywin.h b/src/kvirc/ui/kvi_historywin.h
new file mode 100644
index 00000000..9a17eecd
--- /dev/null
+++ b/src/kvirc/ui/kvi_historywin.h
@@ -0,0 +1,61 @@
+#ifndef _KVI_HISTORYWIN_H_
+#define _KVI_HISTORYWIN_H_
+//
+// File : kvi_historywin.h
+// Creation date : Mon Aug 19 01:34:46 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "kvi_settings.h"
+#include "kvi_string.h"
+
+#include "kvi_tal_listbox.h"
+
+class KviInput;
+
+#define KVI_HISTORY_WIN_HEIGHT 130
+
+class KVIRC_API KviHistoryWindow : public KviTalListBox
+{
+ Q_OBJECT
+public:
+ KviHistoryWindow();
+ ~KviHistoryWindow();
+private:
+ KviInput * m_pOwner;
+ int m_iTimerId;
+public:
+ void popup(KviInput *owner);
+// KviInput * owner(){ return m_pOwner; };
+ void doHide();
+private:
+ virtual void show();
+// bool findTypedSeq(); // returns true if it is a complete word
+ virtual void keyPressEvent(QKeyEvent *e);
+ virtual void mousePressEvent(QMouseEvent *e);
+ virtual void timerEvent(QTimerEvent *);
+ virtual void hideEvent ( QHideEvent * );
+ void fill();
+public slots:
+ void ownerDead();
+ void itemSelected(const QString &str);
+};
+
+#endif //_KVI_HISTORYWIN_H_
diff --git a/src/kvirc/ui/kvi_htmldialog.cpp b/src/kvirc/ui/kvi_htmldialog.cpp
new file mode 100644
index 00000000..6a8b4378
--- /dev/null
+++ b/src/kvirc/ui/kvi_htmldialog.cpp
@@ -0,0 +1,155 @@
+//=============================================================================
+//
+// File : kvi_htmldialog.cpp
+// Created on Wed 03 Jan 2007 03:36:36 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2007 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+#define __KVIRC__
+
+#include "kvi_htmldialog.h"
+#include "kvi_locale.h"
+#include "kvi_tal_textedit.h"
+
+#include <qlabel.h>
+#include <qpushbutton.h>
+#include <qlayout.h>
+#include <qtextbrowser.h>
+
+KviHtmlDialog::KviHtmlDialog(QWidget * pParent,KviHtmlDialogData * pData)
+: QDialog(pParent)
+{
+ m_pData = pData;
+
+ if(pData->szCaption.isEmpty())
+ setCaption("KVIrc");
+ else
+ setCaption(pData->szCaption);
+
+ if(!pData->pixIcon.isNull())
+ setIcon(pData->pixIcon);
+
+ QGridLayout * g = new QGridLayout(this,4,3,7,7);
+
+ QLabel * l;
+ QTextBrowser * te;
+ QPushButton * pb;
+
+ int iUp = 0;
+ int iDown = 2;
+
+ if(!pData->szUpperLabelText.isEmpty())
+ {
+ l = new QLabel(this);
+ l->setText(pData->szUpperLabelText);
+ g->addMultiCellWidget(l,0,0,0,2);
+ iUp = 1;
+ }
+
+ if(!pData->szLowerLabelText.isEmpty())
+ {
+ l = new QLabel(this);
+ l->setText(pData->szLowerLabelText);
+ g->addMultiCellWidget(l,2,2,0,2);
+ iDown = 1;
+ }
+
+ te = new QTextBrowser(this);
+ te->setText(pData->szHtmlText);
+ //te->setReadOnly(true);
+
+ if(pData->iFlags & KviHtmlDialogData::ForceMinimumSize)
+ te->setMinimumSize(pData->iMinimumWidth,pData->iMinimumHeight);
+
+ //te->setReadOnly(true);
+ g->addMultiCellWidget(te,iUp,iDown,0,2);
+
+ int iButtons = pData->szButton3Text.isEmpty() ? (pData->szButton2Text.isEmpty() ? 1 : 2) : 3;
+ if(pData->iCancelButton > iButtons)pData->iCancelButton = iButtons;
+ if(pData->iDefaultButton > iButtons)pData->iDefaultButton = iButtons;
+
+ pb = new QPushButton(this);
+ pb->setText(pData->szButton1Text.isEmpty() ? __tr2qs("OK") : pData->szButton1Text);
+ pb->setDefault(pData->iDefaultButton == 1);
+ int iCoord = iButtons == 1 ? 1 : 0;
+ g->addWidget(pb,3,iCoord);
+ connect(pb,SIGNAL(clicked()),this,SLOT(button1Pressed()));
+
+ if(!pData->szButton2Text.isEmpty())
+ {
+ pb = new QPushButton(this);
+ pb->setText(pData->szButton2Text);
+ pb->setDefault(pData->iDefaultButton == 2);
+ iCoord = iButtons == 2 ? 2 : 1;
+ g->addWidget(pb,3,iCoord);
+ connect(pb,SIGNAL(clicked()),this,SLOT(button2Pressed()));
+
+ if(!pData->szButton3Text.isEmpty())
+ {
+ pb = new QPushButton(this);
+ pb->setText(pData->szButton3Text);
+ pb->setDefault(pData->iDefaultButton == 3);
+ g->addWidget(pb,3,2);
+ connect(pb,SIGNAL(clicked()),this,SLOT(button3Pressed()));
+ }
+ }
+
+ g->setRowStretch(1,1);
+
+ m_pData->iSelectedButton = m_pData->iDefaultButton;
+}
+
+KviHtmlDialog::~KviHtmlDialog()
+{
+
+}
+
+void KviHtmlDialog::button1Pressed()
+{
+ m_pData->iSelectedButton = 1;
+ accept();
+}
+
+void KviHtmlDialog::button2Pressed()
+{
+ m_pData->iSelectedButton = 2;
+ accept();
+}
+
+void KviHtmlDialog::button3Pressed()
+{
+ m_pData->iSelectedButton = 3;
+ accept();
+}
+
+void KviHtmlDialog::reject()
+{
+ m_pData->iSelectedButton = m_pData->iCancelButton;
+ QDialog::reject();
+}
+
+int KviHtmlDialog::display(QWidget * pParent,KviHtmlDialogData * pData)
+{
+ KviHtmlDialog * pDialog = new KviHtmlDialog(pParent,pData);
+ pDialog->exec();
+ delete pDialog;
+ return pData->iSelectedButton;
+}
+
+
diff --git a/src/kvirc/ui/kvi_htmldialog.h b/src/kvirc/ui/kvi_htmldialog.h
new file mode 100644
index 00000000..3f9a6d2a
--- /dev/null
+++ b/src/kvirc/ui/kvi_htmldialog.h
@@ -0,0 +1,87 @@
+#ifndef _KVI_HTMLDIALOG_H_
+#define _KVI_HTMLDIALOG_H_
+//=============================================================================
+//
+// File : kvi_htmldialog.h
+// Created on Wed 03 Jan 2007 03:36:36 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2007 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_qstring.h"
+#include "kvi_settings.h"
+
+
+#include <qpixmap.h>
+#include <qdialog.h>
+
+class KviHtmlDialogData
+{
+public:
+ // input
+
+ // mandatory fields
+ enum Flags { ForceMinimumSize = 1 };
+ int iFlags; // da flags :)
+ int iDefaultButton; // the button to use when Enter is pressed (1,2 or 3)
+ int iCancelButton; // the button to use when Esc is pressed (1,2 or 3)
+ QString szHtmlText; // Shouldn't be empty :D
+
+ // optional fields
+ QString szCaption; // KVIrc is used when this is empty
+ QString szUpperLabelText; // no label is shown if this is empty
+ QString szLowerLabelText; // no label is shown if this is empty
+ QString szButton1Text; // OK is used if this is empty
+ QString szButton2Text; // no button is shown if this is empty
+ QString szButton3Text; // no button is shown if this is empty
+
+ int iMinimumWidth;
+ int iMinimumHeight;
+
+ QPixmap pixIcon; // may be null
+
+ // output
+ int iSelectedButton; // returns 1,2 or 3
+};
+
+class KVIRC_API KviHtmlDialog : public QDialog
+{
+ Q_OBJECT
+public:
+ // the dialog does NOT delete this structure and assumes that
+ // it remains alive until the dialog closes (i.e. it may access
+ // the structure in the destructor
+ KviHtmlDialog(QWidget * pParent,KviHtmlDialogData * pData);
+ ~KviHtmlDialog();
+protected:
+ KviHtmlDialogData * m_pData;
+public:
+ // displays the dialog as modal and returns 1,2 or 3
+ static int display(QWidget * pParent,KviHtmlDialogData * pData);
+protected slots:
+ void button1Pressed();
+ void button2Pressed();
+ void button3Pressed();
+protected:
+ virtual void reject();
+};
+
+
+
+#endif //!_KVI_HTMLDIALOG_H_
diff --git a/src/kvirc/ui/kvi_imagedialog.cpp b/src/kvirc/ui/kvi_imagedialog.cpp
new file mode 100644
index 00000000..adb33a16
--- /dev/null
+++ b/src/kvirc/ui/kvi_imagedialog.cpp
@@ -0,0 +1,367 @@
+//
+// File : kvi_imagedialog.cpp
+// Creation date : Sun Dec 22 2002 19:42 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#define __KVIRC__
+#include "kvi_imagedialog.h"
+
+#include "kvi_locale.h"
+
+#include <qlayout.h>
+#include <qpushbutton.h>
+
+#include <qimage.h>
+#include <qfileinfo.h>
+#include <qdir.h>
+
+#include <qpainter.h>
+
+#include "kvi_fileutils.h"
+
+#include "kvi_iconmanager.h"
+#include "kvi_options.h"
+
+#include "kvi_app.h"
+
+int KviImageDialogItem::height(const KviTalListBox *lb) const
+{
+ return pixmap()->height() + 12 + lb->fontMetrics().lineSpacing();
+}
+
+int KviImageDialogItem::width(const KviTalListBox *lb) const
+{
+ int w;
+ if(text().isEmpty())w = 24;
+ w = lb->fontMetrics().width(text()) + 4;
+ if(w > 100)w = 100;
+ if(w < 24)w = 24;
+ return QMAX(pixmap()->width() + 10,w);
+}
+
+void KviImageDialogItem::paint(QPainter * p)
+{
+ const QPixmap *pm = pixmap();
+ if(pm && !pm->isNull())p->drawPixmap(5,5, *pm);
+
+ if(!m_bIsFolder)
+ {
+ p->setPen(Qt::gray);
+ p->drawRect(3,3,pm->width() + 4,pm->height() + 4);
+ }
+
+ QRect daRect(listBox()->itemRect(this));
+
+ p->setPen(Qt::black);
+ p->drawRect(1,1,daRect.width() - 2,daRect.height() - 2);
+
+ if(text().isEmpty())return;
+
+ QString t = text();
+
+ QFontMetrics fm(p->fontMetrics());
+
+ int wdth = fm.width(t);
+
+ int idx = t.length();
+ while(wdth > (daRect.width() - 6) && idx > 3)
+ {
+ t = text();
+ t.truncate(idx);
+ t.append("...");
+ wdth = fm.width(t);
+ idx--;
+ }
+
+ p->drawText(3,pm->height() + 8,daRect.width() - 6,daRect.height() - (pm->height() + 6),Qt::AlignLeft | Qt::AlignTop,t);
+}
+
+
+KviImageDialog::KviImageDialog(QWidget * par,
+ const QString &szCaption,
+ int types,
+ int initialType,
+ const QString &szInitialDir,
+ int maxPreviewFileSize,bool modal)
+: QDialog(par)
+{
+ m_szInitialPath = szInitialDir;
+ setModal(modal);
+ m_iMaxPreviewFileSize = maxPreviewFileSize;
+
+ setCaption(szCaption.isEmpty() ? __tr2qs("Choose image ...") : szCaption);
+
+ m_pTimer = new QTimer(this);
+ connect(m_pTimer,SIGNAL(timeout()),this,SLOT(heartbeat()));
+
+ QGridLayout * g = new QGridLayout(this,4,3,5,3);
+
+ m_pTypeComboBox = new QComboBox(this);
+
+ g->addMultiCellWidget(m_pTypeComboBox,0,0,0,2);
+
+ m_pTypeList = new KviValueList<int>;
+
+ QString bi = __tr2qs("Builtin images");
+
+ QString tmp = bi;
+
+ if((types & KID_TYPE_ALL) == 0)types = KID_TYPE_FULL_PATH;
+
+ if(types & KID_TYPE_BUILTIN_IMAGES_SMALL)
+ {
+ tmp += ": ";
+ tmp += __tr2qs("Small icons");
+ m_pTypeComboBox->insertItem(tmp);
+ m_pTypeList->append(KID_TYPE_BUILTIN_IMAGES_SMALL);
+ }
+
+ if(types & KID_TYPE_FULL_PATH)
+ {
+ m_pTypeComboBox->insertItem(__tr2qs("Full path"));
+ m_pTypeList->append(KID_TYPE_FULL_PATH);
+ }
+
+ int idx = m_pTypeList->findIndex(initialType);
+ if(idx < 0)idx = 0;
+
+ QWidget * l = new QWidget(this);
+ g->addMultiCellWidget(l,1,1,0,2);
+
+
+ m_pListBox = new KviTalListBox(this);
+ m_pListBox->setColumnMode(KviTalListBox::FitToWidth);
+ m_pListBox->setRowMode(KviTalListBox::Variable);
+
+ m_pTip = new KviDynamicToolTip(m_pListBox->viewport());
+
+ g->addMultiCellWidget(m_pListBox,2,2,0,2);
+
+ QPushButton * b = new QPushButton(__tr2qs("Cancel"),this);
+ connect(b,SIGNAL(clicked()),this,SLOT(cancelClicked()));
+ g->addWidget(b,3,1);
+
+ b = new QPushButton(__tr2qs("Ok"),this);
+ connect(b,SIGNAL(clicked()),this,SLOT(okClicked()));
+ g->addWidget(b,3,2);
+
+ g->setRowStretch(2,1);
+ g->setColStretch(0,1);
+
+ connect(m_pTypeComboBox,SIGNAL(activated(int)),this,SLOT(jobTypeSelected(int)));
+ connect(m_pListBox,SIGNAL(doubleClicked(KviTalListBoxItem *)),this,SLOT(itemDoubleClicked(KviTalListBoxItem *)));
+ connect(m_pTip,SIGNAL(tipRequest(KviDynamicToolTip *,const QPoint &)),this,SLOT(tipRequest(KviDynamicToolTip *,const QPoint &)));
+
+ m_pTypeComboBox->setCurrentItem(idx);
+ jobTypeSelected(idx);
+
+ m_pListBox->setMinimumSize(420,350);
+}
+
+KviImageDialog::~KviImageDialog()
+{
+ delete m_pTimer;
+ delete m_pTypeList;
+}
+
+void KviImageDialog::jobTypeSelected(int index)
+{
+ if(index < 0)return;
+ if(index >= (int)(m_pTypeList->count()))index = (int)m_pTypeList->count();
+ if(m_szInitialPath.isEmpty())
+ startJob(*(m_pTypeList->at(index)),KVI_OPTION_STRING(KviOption_stringLastImageDialogPath));
+ else {
+ startJob(*(m_pTypeList->at(index)),m_szInitialPath);
+ m_szInitialPath = ""; // clear it so we will use the last path
+ }
+}
+
+void KviImageDialog::startJob(int type,const QString &szInitialPath)
+{
+ m_pTimer->stop();
+ m_iJobType = type;
+
+ m_iJobIndexHelper = 0;
+ if(m_iJobType == KID_TYPE_FULL_PATH)
+ {
+ QDir d(szInitialPath);
+ if(!d.exists())d = QDir::homeDirPath();
+ if(!d.exists())d = QDir::rootDirPath();
+ m_szJobPath = d.absPath();
+ KVI_OPTION_STRING(KviOption_stringLastImageDialogPath) = m_szJobPath;
+ m_lJobFileList = d.entryList(QDir::Hidden | QDir::All,QDir::DirsFirst | QDir::Name | QDir::IgnoreCase);
+ }
+
+ m_pTimer->start(100);
+}
+
+void KviImageDialog::jobTerminated()
+{
+ m_pTimer->stop();
+}
+
+void KviImageDialog::heartbeat()
+{
+ if(m_iJobIndexHelper == 0)m_pListBox->clear();
+
+
+ switch(m_iJobType)
+ {
+ case KID_TYPE_BUILTIN_IMAGES_SMALL:
+ {
+ if(m_iJobIndexHelper >= KVI_NUM_SMALL_ICONS)
+ {
+ jobTerminated();
+ return;
+ }
+ int max = m_iJobIndexHelper + 15;
+ if(max > KVI_NUM_SMALL_ICONS)max = KVI_NUM_SMALL_ICONS;
+ while(m_iJobIndexHelper < max)
+ {
+ QString id = g_pIconManager->getSmallIconName(m_iJobIndexHelper);
+ KviImageDialogItem * it;
+ QString tip;
+ KviQString::sprintf(tip,__tr2qs("Builtin $icon(%Q) [index %d]"),&id,m_iJobIndexHelper);
+ QString image_id = "$icon(";
+ image_id += id;
+ image_id += ")";
+ it = new KviImageDialogItem(m_pListBox,*(g_pIconManager->getSmallIcon(m_iJobIndexHelper)),id,image_id,tip);
+ m_iJobIndexHelper++;
+ }
+ }
+ break;
+ case KID_TYPE_FULL_PATH:
+ {
+ m_iJobIndexHelper++;
+ if(m_lJobFileList.isEmpty())
+ {
+ jobTerminated();
+ return;
+ }
+ int idx = 0;
+ while((idx < 20) && (!m_lJobFileList.isEmpty()))
+ {
+ QString szFile = m_lJobFileList.first();
+ m_lJobFileList.remove(szFile);
+ QString szPath = m_szJobPath;
+ szPath += KVI_PATH_SEPARATOR;
+ szPath += szFile;
+ QFileInfo fi(szPath);
+ idx += fi.size() / 128000; // we do less entries when have big files to read
+ if(fi.isDir())
+ {
+ if(szFile != ".")
+ {
+ QString tip = szFile;
+ tip += "<br><hr>";
+ tip += __tr2qs("directory");
+ KviImageDialogItem * it;
+ it = new KviImageDialogItem(m_pListBox,*(g_pIconManager->getBigIcon(KVI_BIGICON_FOLDER)),szFile,szPath,tip,true);
+ }
+ } else {
+ if(((int)fi.size()) < m_iMaxPreviewFileSize)
+ {
+ QImage i(szPath);
+ if(i.isNull())continue;
+ QPixmap pix;
+#ifdef COMPILE_USE_QT4
+ if((i.width() > 80) || (i.height() > 80))pix = i.scaled(80,80,Qt::KeepAspectRatio);
+#else
+ if((i.width() > 80) || (i.height() > 80))pix = i.scale(80,80,QImage::ScaleMin);
+#endif
+ else pix = i;
+
+ QString tip = szFile;
+ tip += "<br><hr>";
+ QString sz;
+ sz.setNum(i.width());
+ tip += sz;
+ tip += " x ";
+ sz.setNum(i.height());
+ tip += sz;
+ tip += " ";
+ tip += __tr2qs("pixels");
+ tip += "<br>";
+ sz.setNum(fi.size());
+ tip += sz;
+ tip += " ";
+ tip += __tr2qs("bytes");
+ tip += "<br>";
+
+ KviImageDialogItem * it;
+ it = new KviImageDialogItem(m_pListBox,pix,szFile,szPath,tip);
+ }
+ }
+ idx++;
+ }
+ }
+ break;
+ }
+}
+
+void KviImageDialog::okClicked()
+{
+ KviTalListBoxItem * it = 0;
+ int idx = m_pListBox->currentItem();
+ if(idx != -1)it = (KviTalListBoxItem *)m_pListBox->item(idx);
+ if(!it)return;
+ itemDoubleClicked(it);
+}
+
+void KviImageDialog::cancelClicked()
+{
+ m_szSelectedImage = QString::null;
+ reject();
+}
+
+void KviImageDialog::closeEvent(QCloseEvent * e)
+{
+ m_szSelectedImage = QString::null;
+ QDialog::closeEvent(e);
+}
+
+void KviImageDialog::itemDoubleClicked(KviTalListBoxItem * it)
+{
+ if(!it)return;
+ KviImageDialogItem * i = (KviImageDialogItem *)it;
+ if(i->isFolder())
+ {
+ startJob(KID_TYPE_FULL_PATH,i->imageId());
+ } else {
+ QString szImageId = i->imageId();
+ if(szImageId.length() > 0)
+ {
+ if(szImageId.at(0) == QChar('$'))
+ m_szSelectedImage = szImageId; // it's $icon(something)
+ else
+ g_pApp->mapImageFile(m_szSelectedImage,i->imageId()); // it's a file and we need to map it to our filesystem view
+ accept();
+ }
+ }
+}
+
+void KviImageDialog::tipRequest(KviDynamicToolTip *,const QPoint &pnt)
+{
+ KviTalListBoxItem * it = (KviTalListBoxItem *)m_pListBox->itemAt(pnt);
+ if(!it)return;
+ QRect r = m_pListBox->itemRect(it);
+ KviImageDialogItem * i = (KviImageDialogItem *)it;
+ m_pTip->tip(r,i->tipText());
+}
diff --git a/src/kvirc/ui/kvi_imagedialog.h b/src/kvirc/ui/kvi_imagedialog.h
new file mode 100644
index 00000000..7e1da54d
--- /dev/null
+++ b/src/kvirc/ui/kvi_imagedialog.h
@@ -0,0 +1,109 @@
+#ifndef _KVI_IMAGEDIALOG_H_
+#define _KVI_IMAGEDIALOG_H_
+//
+// File : kvi_imagedialog.h
+// Creation date : Sun Dec 22 2002 19:42 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+
+
+
+
+#include <qdialog.h>
+#include <qcombobox.h>
+#include "kvi_tal_listbox.h"
+#include "kvi_valuelist.h"
+#include <qtimer.h>
+#include <qstringlist.h>
+
+#include "kvi_dynamictooltip.h"
+
+class KviImageDialogItem : public KviTalListBoxPixmap
+{
+public:
+ bool m_bIsFolder;
+ QString m_szImageId;
+ QString m_szTipText;
+public:
+ KviImageDialogItem(KviTalListBox * b,const QPixmap &thumb,const QString &szFile,const QString &image_id,const QString &szTipText = QString::null,bool bIsFolder = false)
+ : KviTalListBoxPixmap(b,thumb,szFile) , m_bIsFolder(bIsFolder) , m_szImageId(image_id) , m_szTipText(szTipText) {};
+ ~KviImageDialogItem(){};
+public:
+ bool isFolder(){ return m_bIsFolder; };
+ const QString & imageId(){ return m_szImageId; };
+ const QString & tipText(){ return m_szTipText; };
+ virtual int height(const KviTalListBox *) const;
+ virtual int width(const KviTalListBox *) const;
+ virtual void paint(QPainter * p);
+};
+
+
+#define KID_TYPE_BUILTIN_IMAGES_SMALL 1
+#define KID_TYPE_FULL_PATH 2
+
+#define KID_TYPE_ALL 3
+
+class KVIRC_API KviImageDialog : public QDialog
+{
+ Q_OBJECT
+public:
+ KviImageDialog(QWidget * par,
+ const QString &szCaption = QString::null,
+ int types = KID_TYPE_ALL,
+ int initialType = 0,
+ const QString &szInitialDir = QString::null,
+ int maxPreviewFileSize = 256000, bool modal=false);
+ virtual ~KviImageDialog();
+protected:
+ QComboBox * m_pTypeComboBox;
+ KviValueList<int> * m_pTypeList;
+ KviTalListBox * m_pListBox;
+ QTimer * m_pTimer;
+ int m_iJobType;
+
+ int m_iMaxPreviewFileSize;
+
+ QString m_szJobPath;
+ QStringList m_lJobFileList;
+
+ int m_iJobIndexHelper;
+
+ QString m_szSelectedImage;
+
+ QString m_szInitialPath;
+
+ KviDynamicToolTip * m_pTip;
+public:
+ const QString & selectedImage(){ return m_szSelectedImage; };
+protected:
+ void startJob(int type,const QString &szInitialPath = QString::null);
+ void jobTerminated();
+ virtual void closeEvent(QCloseEvent *e);
+protected slots:
+ void okClicked();
+ void cancelClicked();
+ void heartbeat();
+ void jobTypeSelected(int index);
+ void itemDoubleClicked(KviTalListBoxItem * it);
+ void tipRequest(KviDynamicToolTip *,const QPoint &pnt);
+};
+
+#endif //_KVI_IMAGEDIALOG_H_
diff --git a/src/kvirc/ui/kvi_input.cpp b/src/kvirc/ui/kvi_input.cpp
new file mode 100644
index 00000000..c0fbbd9e
--- /dev/null
+++ b/src/kvirc/ui/kvi_input.cpp
@@ -0,0 +1,2680 @@
+//=============================================================================
+//
+// File : kvi_input.cpp
+// Creation date : Sun Jan 3 1999 23:11:50 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+#define _KVI_DEBUG_CHECK_RANGE_
+#include "kvi_debug.h"
+
+#define _KVI_INPUT_CPP_
+
+#include "kvi_options.h"
+#include "kvi_app.h"
+#include "kvi_settings.h"
+#include "kvi_defaults.h"
+#include "kvi_colorwin.h"
+#include "kvi_texticonwin.h"
+#include "kvi_window.h"
+
+#include "kvi_locale.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_userlistview.h"
+#include "kvi_ircview.h"
+#include "kvi_console.h"
+#include "kvi_out.h"
+#include "kvi_iconmanager.h"
+#include "kvi_scripteditor.h"
+#include "kvi_config.h"
+#include "kvi_historywin.h"
+#include "kvi_input.h"
+#include "kvi_userinput.h"
+#include "kvi_kvs_script.h"
+#include "kvi_kvs_kernel.h"
+#include "kvi_doublebuffer.h"
+#include "kvi_styled_controls.h"
+#include "kvi_texticonmanager.h"
+#include "kvi_draganddrop.h"
+
+#include <qlabel.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <qfiledialog.h>
+#include "kvi_tal_popupmenu.h"
+#include <qpainter.h>
+#include <qclipboard.h>
+#include <qstringlist.h>
+#include "kvi_pointerlist.h"
+#include <qapplication.h>
+#include <qclipboard.h>
+#include <qmessagebox.h>
+#include "kvi_tal_hbox.h"
+#include <qlayout.h>
+#include <qstyle.h>
+#include <qevent.h>
+
+
+#ifndef ACCEL_KEY
+#define ACCEL_KEY(k) "\t" + QString(QKeySequence( Qt::CTRL | Qt::Key_ ## k ))
+#endif
+
+// FIXME: #warning "This hack is temporary...later remove it"
+#if QT_VERSION >= 300
+ #ifndef QT_CLEAN_NAMESPACE
+ #define QT_CLEAN_NAMESPACE
+ #include <qcursor.h>
+ #undef QT_CLEAN_NAMESPACE
+ #else
+ #include <qcursor.h>
+ #endif
+#else
+ #include <qcursor.h>
+#endif
+
+
+
+//This comes from kvi_app.cpp
+extern KviColorWindow * g_pColorWindow;
+extern KviTextIconWindow * g_pTextIconWindow;
+extern KviHistoryWindow * g_pHistoryWindow;
+extern KviTalPopupMenu * g_pInputPopup;
+
+static QFontMetrics * g_pLastFontMetrics = 0;
+
+
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ extern QPixmap * g_pShadedChildGlobalDesktopBackground;
+#endif
+
+
+#define KVI_INPUT_MAX_GLOBAL_HISTORY_ENTRIES 100
+#define KVI_INPUT_MAX_LOCAL_HISTORY_ENTRIES 20
+
+
+extern KviInputHistory * g_pInputHistory;
+
+
+KviInputHistory::KviInputHistory()
+{
+ m_pStringList = new KviPointerList<QString>;
+ m_pStringList->setAutoDelete(true);
+}
+
+KviInputHistory::~KviInputHistory()
+{
+ delete m_pStringList;
+}
+
+void KviInputHistory::add(QString * s)
+{
+ m_pStringList->insert(0,s);
+ if(m_pStringList->count() > KVI_INPUT_MAX_GLOBAL_HISTORY_ENTRIES)m_pStringList->removeLast();
+}
+
+void KviInputHistory::load(const char * filename)
+{
+ KviConfig c(filename,KviConfig::Read);
+
+ int cnt = c.readIntEntry("Count",0);
+
+ if(cnt > KVI_INPUT_MAX_GLOBAL_HISTORY_ENTRIES)cnt = KVI_INPUT_MAX_GLOBAL_HISTORY_ENTRIES;
+
+ KviStr tmp;
+
+ for(int i=0;i<cnt;i++)
+ {
+ tmp.sprintf("S%d",i);
+ QString entry = c.readQStringEntry(tmp.ptr(),"");
+ if(!entry.isEmpty())add(new QString(entry));
+ }
+}
+
+void KviInputHistory::save(const char * filename)
+{
+ KviConfig c(filename,KviConfig::Write);
+ c.clear();
+
+ c.writeEntry("Count",m_pStringList->count());
+
+ KviStr tmp;
+ int idx = 0;
+
+ for(QString * s = m_pStringList->first();s;s = m_pStringList->next())
+ {
+ if(!s->isEmpty())
+ {
+ tmp.sprintf("S%d",idx);
+ c.writeEntry(tmp.ptr(),*s);
+ idx++;
+ }
+ }
+}
+
+//=============== KviInputEditor ==============//
+
+static int g_iInputFontCharWidth[256];
+static bool g_bInputFontMetricsDirty = true;
+
+
+KviInputEditor::KviInputEditor(QWidget * par,KviWindow *wnd,KviUserListView * view)
+:QFrame(par,"input")
+{
+ m_pIconMenu = 0;
+ m_pInputParent = par;
+ m_iMaxBufferSize = KVI_INPUT_MAX_BUFFER_SIZE;
+ m_iCursorPosition = 0; //Index of the char AFTER the cursor
+ m_iFirstVisibleChar = 0; //Index of the first visible character
+ m_iSelectionBegin = -1; //Index of the first char in the selection
+ m_iSelectionEnd = -1; //Index of the last char in the selection
+ m_bIMComposing = false; //Whether the input method is active (composing).
+ // for input method support
+ m_iIMStart = 0; //Index of the start of the preedit string.
+ m_iIMLength = 0; //Length of the preedit string.
+ m_iIMSelectionBegin = 0; //Index of the start of the selection in preedit string.
+ m_iIMSelectionLength = 0; //Length of the selection in preedit string.
+
+ m_bCursorOn = false; //Cursor state
+ m_iCursorTimer = 0; //Timer that iverts the cursor state
+ m_iDragTimer = 0; //Timer for drag selection updates
+ m_iLastCursorXPosition = KVI_INPUT_MARGIN; //Calculated in paintEvent
+ m_iSelectionAnchorChar = -1; //Character clicked at the beginning of the selection process
+ m_iCurHistoryIdx = -1; //No data in the history
+ m_bUpdatesEnabled = true;
+ m_pKviWindow = wnd;
+ m_pUserListView = view;
+ m_pHistory = new KviPointerList<QString>;
+ m_pHistory->setAutoDelete(true);
+ m_bReadOnly = FALSE;
+
+ setInputMethodEnabled(true);
+
+#ifdef COMPILE_USE_QT4
+ setAutoFillBackground(false);
+ setFocusPolicy(Qt::StrongFocus);
+#else
+ setBackgroundMode(Qt::NoBackground);
+ setFocusPolicy(QWidget::StrongFocus);
+#endif
+ setAcceptDrops(true);
+ setFrameStyle( LineEditPanel );
+ setFrameShadow( Plain );
+
+ m_pIconMenu = new KviTalPopupMenu();
+ connect(m_pIconMenu,SIGNAL(activated(int)),this,SLOT(iconPopupActivated(int)));
+
+#ifdef COMPILE_USE_QT4
+ setCursor(Qt::IBeamCursor);
+#else
+ setCursor(IbeamCursor);
+#endif
+}
+
+KviInputEditor::~KviInputEditor()
+{
+ if(g_pLastFontMetrics) delete g_pLastFontMetrics;
+ g_pLastFontMetrics = 0;
+ if(m_pIconMenu)delete m_pIconMenu;
+ delete m_pHistory;
+ if(m_iCursorTimer)killTimer(m_iCursorTimer);
+ killDragTimer();
+}
+
+void KviInputEditor::recalcFontMetrics(QFontMetrics * pFm)
+{
+ QFontMetrics fm(KVI_OPTION_FONT(KviOption_fontInput));
+ unsigned short i;
+ for(i=1;i<32;i++)
+ {
+ QChar c = getSubstituteChar(i);
+ g_iInputFontCharWidth[i] = fm.width(c);
+ if(c != QChar(i))g_iInputFontCharWidth[i] += 4;
+ }
+ for(i=32;i<256;i++)
+ {
+ g_iInputFontCharWidth[i] = fm.width(QChar(i));
+ }
+ g_bInputFontMetricsDirty = false;
+}
+
+void KviInputEditor::applyOptions()
+{
+ g_bInputFontMetricsDirty = true;
+ update();
+}
+
+void KviInputEditor::dragEnterEvent(QDragEnterEvent *e)
+{
+ if(KviUriDrag::canDecode(e))
+ {
+ e->accept(true);
+// FIXME: #warning "FIX THIS COMMENTED STUFF"
+/*
+ m_pKviWindow->m_pFrm->m_pStatusBar->tempText(__tr("Drop the file to /PARSE it"),5000);
+*/
+ } else e->accept(false);
+}
+
+void KviInputEditor::dropEvent(QDropEvent *e)
+{
+ QStringList list;
+ if(KviUriDrag::decodeLocalFiles(e,list))
+ {
+ //debug("Local files decoded");
+ if(!list.isEmpty())
+ {
+ //debug("List not empty");
+ QStringList::ConstIterator it = list.begin(); //kewl ! :)
+ for( ; it != list.end(); ++it )
+ {
+ QString tmp = *it; //wow :)
+#ifndef COMPILE_ON_WINDOWS
+ if(tmp.length() > 0)
+ {
+ if(tmp[0] != QChar('/'))tmp.prepend("/"); //HACK HACK HACK for Qt bug (?!?)
+ }
+#endif
+ tmp.prepend("/PARSE \"");
+ tmp.append("\"");
+ if(m_pKviWindow)
+ KviKvsScript::run(tmp,m_pKviWindow);
+ }
+ }
+ }
+}
+
+int KviInputEditor::heightHint() const
+{
+ return sizeHint().height();
+}
+
+QSize KviInputEditor::sizeHint() const
+{
+ //grabbed from qlineedit.cpp
+ constPolish();
+ QFontMetrics fm(KVI_OPTION_FONT(KviOption_fontInput));
+ int h = QMAX(fm.lineSpacing(), 14) + 2*2; /* innerMargin */
+ int w = fm.width( 'x' ) * 17; // "some"
+ int m = frameWidth() * 2;
+#ifdef COMPILE_USE_QT4
+ QStyleOption opt;
+ opt.initFrom(this);
+ return (style()->sizeFromContents(QStyle::CT_LineEdit,&opt,
+ QSize( w + m, h + m ).
+ expandedTo(QApplication::globalStrut()),this));
+#else
+ return (style().sizeFromContents(QStyle::CT_LineEdit, this,
+ QSize( w + m, h + m ).
+ expandedTo(QApplication::globalStrut())));
+#endif
+}
+
+#define KVI_INPUT_DEF_BACK 100
+#define KVI_INPUT_DEF_FORE 101
+
+#ifdef COMPILE_USE_QT4
+void KviInputEditor::paintEvent(QPaintEvent *e)
+{
+ QPainter p(this);
+ SET_ANTI_ALIASING(p);
+ drawFrame(&p);
+ drawContents(&p);
+}
+#endif
+
+void KviInputEditor::drawContents(QPainter *p)
+{
+ if(!isVisible())return;
+
+ QRect rect = contentsRect();
+ int widgetWidth = rect.width();
+ int widgetHeight = rect.height();
+
+ KviDoubleBuffer doublebuffer(widgetWidth,widgetHeight);
+ QPixmap * pDoubleBufferPixmap = doublebuffer.pixmap();
+
+ QPainter pa(pDoubleBufferPixmap);
+ SET_ANTI_ALIASING(pa);
+
+ pa.setFont(KVI_OPTION_FONT(KviOption_fontInput));
+
+ QFontMetrics fm(pa.fontMetrics());
+
+ if(!g_pLastFontMetrics)
+ g_pLastFontMetrics = new QFontMetrics(pa.fontMetrics());
+
+ if(g_bInputFontMetricsDirty)
+ recalcFontMetrics(&fm);
+
+
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ if(g_pShadedChildGlobalDesktopBackground)
+ {
+ QPoint pnt = mapToGlobal(rect.topLeft());
+ pa.drawTiledPixmap(0,0,widgetWidth,widgetHeight,*g_pShadedChildGlobalDesktopBackground,pnt.x(),pnt.y());
+ } else {
+#endif
+ QPixmap *pix=KVI_OPTION_PIXMAP(KviOption_pixmapInputBackground).pixmap();
+
+ pa.fillRect(0,0,widgetWidth,widgetHeight,KVI_OPTION_COLOR(KviOption_colorInputBackground));
+ if(pix)
+ KviPixmapUtils::drawPixmapWithPainter(&pa,pix,KVI_OPTION_UINT(KviOption_uintInputPixmapAlign),rect,widgetWidth,widgetHeight);
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ }
+#endif
+
+
+ int curXPos = KVI_INPUT_MARGIN;
+ int maxXPos = widgetWidth-2*KVI_INPUT_MARGIN;
+ m_iCurBack = KVI_INPUT_DEF_BACK; //transparent
+ m_iCurFore = KVI_INPUT_DEF_FORE; //normal fore color
+ m_bCurBold = false;
+ m_bCurUnderline = false;
+
+ int bottom = widgetHeight-(widgetHeight-fm.height())/2;
+ int textBaseline = fm.ascent()+(widgetHeight-fm.height())/2;
+ int top = (widgetHeight-fm.height())/2;
+
+ runUpToTheFirstVisibleChar();
+
+ int charIdx = m_iFirstVisibleChar;
+
+ pa.setClipRect(0,0,widgetWidth,widgetHeight);
+
+ //Control the selection state
+ if((m_iSelectionEnd < m_iSelectionBegin) || (m_iSelectionEnd == -1) || (m_iSelectionBegin == -1))
+ {
+ m_iSelectionEnd = -1;
+ m_iSelectionBegin = -1;
+ }
+
+ if((m_iSelectionBegin != -1) && (m_iSelectionEnd >= m_iFirstVisibleChar))
+ {
+ int iSelStart = m_iSelectionBegin;
+
+ // TODO Refactor: write a function to combine this with the code determining iIMStart and iIMSelectionStart
+ if(iSelStart < m_iFirstVisibleChar)iSelStart = m_iFirstVisibleChar;
+ int xLeft = xPositionFromCharIndex(fm,iSelStart,TRUE);
+ int xRight = xPositionFromCharIndex(fm,m_iSelectionEnd + 1,TRUE);
+
+// pa.setRasterOp(Qt::NotROP);
+ pa.fillRect(xLeft,frameWidth(),xRight - xLeft,widgetWidth,KVI_OPTION_COLOR(KviOption_colorInputSelectionBackground));
+// pa.setRasterOp(Qt::CopyROP);
+ }
+
+ // When m_bIMComposing is true, the text between m_iIMStart and m_iIMStart+m_iIMLength should be highlighted to show that this is the active
+ // preedit area for the input method, and the text outside cannot be edited while
+ // composing. Maybe this can be implemented similarly as painting the selection?
+ // Also notice that inside the preedit, there can also be a selection, given by
+ // m_iSelectionBegin and m_iSelectionLength, and the widget needs to highlight that
+ // while in IM composition mode
+ if(m_bIMComposing && m_iIMLength > 0)
+ {
+ // TODO Write a function to combine IM selection drawing code. maybe the preedit area too.
+ int iIMSelectionStart = m_iIMSelectionBegin;
+ if(iIMSelectionStart < m_iFirstVisibleChar) iIMSelectionStart = m_iFirstVisibleChar;
+ int xIMSelectionLeft = xPositionFromCharIndex(fm,iIMSelectionStart,TRUE);
+ int xIMSelectionRight = xPositionFromCharIndex(fm,iIMSelectionStart + m_iIMSelectionLength,TRUE);
+// pa.setRasterOp(Qt::NotROP);
+ pa.fillRect(xIMSelectionLeft,0,xIMSelectionRight - xIMSelectionLeft, widgetWidth,KVI_OPTION_COLOR(KviOption_colorInputSelectionBackground));
+// pa.setRasterOp(Qt::CopyROP);
+
+ // highlight the IM selection
+ int iIMStart = m_iIMStart;
+ if(m_iIMStart < m_iFirstVisibleChar) m_iIMStart = m_iFirstVisibleChar;
+ int xIMLeft = xPositionFromCharIndex(fm,iIMStart,TRUE);
+ int xIMRight = xPositionFromCharIndex(fm,iIMStart + m_iIMLength,TRUE);
+
+ // underline the IM preedit
+ // Maybe should be put in drawTextBlock, similar to drawing underlined text
+ pa.drawLine(xIMLeft, bottom, xIMRight, bottom);
+ }
+
+ pa.setClipping(false);
+
+ while((charIdx < ((int)(m_szTextBuffer.length()))) && (curXPos < maxXPos))
+ {
+ extractNextBlock(charIdx,fm,curXPos,maxXPos);
+
+ if(m_bControlBlock)
+ {
+ pa.setPen(KVI_OPTION_COLOR(KviOption_colorInputControl));
+
+ QString s = getSubstituteChar(m_szTextBuffer[charIdx].unicode());
+
+ // the block width is 4 pixels more than the actual character
+
+ pa.drawText(curXPos + 2,textBaseline,s,1);
+
+ pa.drawRect(curXPos,top,m_iBlockWidth-1,bottom);
+ } else {
+ if(m_iSelectionBegin!=-1)
+ {
+ int iBlockEnd=charIdx+m_iBlockLen;
+ //block is selected (maybe partially)
+ if( iBlockEnd>m_iSelectionBegin && charIdx<=m_iSelectionEnd )
+ {
+ int iSubStart,iSubLen;
+ //in common it consists of 3 parts: unselected-selected-unselected
+ //some of thst parts can be empty (for example block is fully selected)
+
+ //first part start is always equal to the block start
+ iSubStart=charIdx;
+ iSubLen = m_iSelectionBegin>charIdx ? m_iSelectionBegin-charIdx : 0;
+
+
+ if(iSubLen)
+ {
+ drawTextBlock(&pa,fm,curXPos,textBaseline,iSubStart,iSubLen,FALSE);
+ curXPos += m_iBlockWidth;
+ m_iBlockWidth=0;
+ }
+
+ //second one
+ iSubStart+=iSubLen;
+ iSubLen=m_iSelectionEnd<iBlockEnd ? m_iSelectionEnd-iSubStart+1 : iBlockEnd-iSubStart;
+
+
+ if(iSubLen)
+ {
+ drawTextBlock(&pa,fm,curXPos,textBaseline,iSubStart,iSubLen,TRUE);
+ curXPos += m_iBlockWidth;
+ m_iBlockWidth=0;
+ }
+
+ if( m_iSelectionEnd<(iBlockEnd-1))
+ {
+ iSubStart+=iSubLen;
+ iSubLen=iBlockEnd-iSubStart;
+ drawTextBlock(&pa,fm,curXPos,textBaseline,iSubStart,iSubLen,FALSE);
+ }
+ } else {
+ drawTextBlock(&pa,fm,curXPos,textBaseline,charIdx,m_iBlockLen);
+ }
+ } else {
+ drawTextBlock(&pa,fm,curXPos,textBaseline,charIdx,m_iBlockLen);
+ }
+ }
+
+ curXPos += m_iBlockWidth;
+ charIdx += m_iBlockLen;
+ }
+
+ //Now the cursor
+
+ m_iLastCursorXPosition = KVI_INPUT_MARGIN;
+ m_iBlockLen = m_iFirstVisibleChar;
+
+ while(m_iBlockLen < m_iCursorPosition)
+ {
+ QChar c = m_szTextBuffer.at(m_iBlockLen);
+#ifdef COMPILE_USE_QT4
+ m_iLastCursorXPosition+= c.unicode() < 32 ? fm.width(getSubstituteChar(c.unicode())) + 3 : fm.width(c);
+#else
+ m_iLastCursorXPosition+= (c.unicode() < 256) ? g_iInputFontCharWidth[c.unicode()] : fm.width(c);
+#endif
+ m_iBlockLen++;
+ }
+
+ //m_iLastCursorXPosition = cur1XPos;
+
+ if(m_bCursorOn)
+ {
+ pa.setPen(KVI_OPTION_COLOR(KviOption_colorInputCursor));
+ pa.drawLine(m_iLastCursorXPosition,0,m_iLastCursorXPosition,widgetHeight);
+ } else {
+ pa.setPen(KVI_OPTION_COLOR(KviOption_colorInputForeground));
+ }
+
+#ifdef COMPILE_USE_QT4
+ // The other version of drawPixmap seems to be buggy
+ p->drawPixmap(rect.x(),rect.y(),rect.width(),rect.height(),*pDoubleBufferPixmap,0,0,widgetWidth,widgetHeight);
+#else
+ p->drawPixmap(rect.x(),rect.y(),*pDoubleBufferPixmap,0,0,widgetWidth,widgetHeight);
+#endif
+}
+
+void KviInputEditor::drawTextBlock(QPainter * pa,QFontMetrics & fm,int curXPos,int textBaseline,int charIdx,int len,bool bSelected)
+{
+ QString tmp = m_szTextBuffer.mid(charIdx,len);
+ m_iBlockWidth = fm.width(tmp);
+
+ QRect rect = contentsRect();
+ int widgetHeight = rect.height();
+
+ if(m_iCurFore == KVI_INPUT_DEF_FORE)
+ {
+ pa->setPen( bSelected ? KVI_OPTION_COLOR(KviOption_colorInputSelectionForeground) : KVI_OPTION_COLOR(KviOption_colorInputForeground));
+ } else {
+ if(((unsigned char)m_iCurFore) > 16)
+ {
+ pa->setPen(KVI_OPTION_COLOR(KviOption_colorInputBackground));
+ } else {
+ pa->setPen(KVI_OPTION_MIRCCOLOR((unsigned char)m_iCurFore));
+ }
+ }
+
+ if(m_iCurBack != KVI_INPUT_DEF_BACK)
+ {
+ if(((unsigned char)m_iCurBack) > 16)
+ {
+ pa->fillRect(curXPos,(widgetHeight-fm.height())/2,m_iBlockWidth,fm.height(),KVI_OPTION_COLOR(KviOption_colorInputForeground));
+ } else {
+ pa->fillRect(curXPos,(widgetHeight-fm.height())/2,m_iBlockWidth,fm.height(),KVI_OPTION_MIRCCOLOR((unsigned char)m_iCurBack));
+ }
+ }
+
+ pa->drawText(curXPos,textBaseline,tmp);
+
+ if(m_bCurBold)pa->drawText(curXPos+1,textBaseline,tmp);
+ if(m_bCurUnderline)
+ {
+ pa->drawLine(curXPos,textBaseline + fm.descent(),curXPos+m_iBlockWidth,textBaseline + fm.descent());
+ }
+
+}
+
+QChar KviInputEditor::getSubstituteChar(unsigned short control_code)
+{
+ switch(control_code)
+ {
+ case KVI_TEXT_COLOR:
+ return QChar('K');
+ break;
+ case KVI_TEXT_BOLD:
+ return QChar('B');
+ break;
+ case KVI_TEXT_RESET:
+ return QChar('O');
+ break;
+ case KVI_TEXT_REVERSE:
+ return QChar('R');
+ break;
+ case KVI_TEXT_UNDERLINE:
+ return QChar('U');
+ break;
+ case KVI_TEXT_CRYPTESCAPE:
+ return QChar('P');
+ break;
+ case KVI_TEXT_ICON:
+ return QChar('I');
+ break;
+ default:
+ return QChar(control_code);
+ break;
+ }
+}
+
+void KviInputEditor::extractNextBlock(int idx,QFontMetrics & fm,int curXPos,int maxXPos)
+{
+ m_iBlockLen = 0;
+ m_iBlockWidth = 0;
+
+ QChar c = m_szTextBuffer[idx];
+
+ if((c.unicode() > 32) ||
+ ((c != QChar(KVI_TEXT_COLOR)) &&
+ (c != QChar(KVI_TEXT_BOLD)) && (c != QChar(KVI_TEXT_UNDERLINE)) &&
+ (c != QChar(KVI_TEXT_RESET)) && (c != QChar(KVI_TEXT_REVERSE)) &&
+ (c != QChar(KVI_TEXT_CRYPTESCAPE)) && (c != QChar(KVI_TEXT_ICON))))
+ {
+ m_bControlBlock = false;
+ //Not a control code...run..
+ while((idx < ((int)(m_szTextBuffer.length()))) && (curXPos < maxXPos))
+ {
+ c = m_szTextBuffer[idx];
+ if((c.unicode() > 32) ||
+ ((c != QChar(KVI_TEXT_COLOR)) && (c != QChar(KVI_TEXT_BOLD)) &&
+ (c != QChar(KVI_TEXT_UNDERLINE)) && (c != QChar(KVI_TEXT_RESET)) &&
+ (c != QChar(KVI_TEXT_REVERSE)) && (c != QChar(KVI_TEXT_CRYPTESCAPE)) &&
+ (c != QChar(KVI_TEXT_ICON))))
+ {
+ m_iBlockLen++;
+#ifdef COMPILE_USE_QT4
+ int xxx = c.unicode() < 32 ? fm.width(getSubstituteChar(c.unicode())) + 3 : fm.width(c);;
+#else
+ int xxx = (c.unicode() < 256 ? g_iInputFontCharWidth[c.unicode()] : fm.width(c));
+#endif
+ m_iBlockWidth +=xxx;
+ curXPos +=xxx;
+ idx++;
+ } else break;
+ }
+ return;
+ } else {
+ m_bControlBlock = true;
+ m_iBlockLen = 1;
+ m_iBlockWidth = g_iInputFontCharWidth[c.unicode()];
+ //Control code
+ switch(c.unicode())
+ {
+ case KVI_TEXT_BOLD:
+ m_bCurBold = ! m_bCurBold;
+ break;
+ case KVI_TEXT_UNDERLINE:
+ m_bCurUnderline = ! m_bCurUnderline;
+ break;
+ case KVI_TEXT_RESET:
+ m_iCurFore = KVI_INPUT_DEF_FORE;
+ m_iCurBack = KVI_INPUT_DEF_BACK;
+ m_bCurBold = false;
+ m_bCurUnderline = false;
+ break;
+ case KVI_TEXT_REVERSE:
+ {
+ char auxClr = m_iCurFore;
+ m_iCurFore = m_iCurBack;
+ m_iCurBack = auxClr;
+ }
+ break;
+ case KVI_TEXT_CRYPTESCAPE:
+ case KVI_TEXT_ICON:
+ // makes a single block
+ break;
+ case KVI_TEXT_COLOR:
+ {
+ idx++;
+ if(idx >= ((int)(m_szTextBuffer.length())))return;
+ unsigned char fore;
+ unsigned char back;
+ idx = getUnicodeColorBytes(m_szTextBuffer,idx,&fore,&back);
+ if(fore != KVI_NOCHANGE)
+ {
+ m_iCurFore = fore;
+ if(back != KVI_NOCHANGE)m_iCurBack = back;
+ } else {
+ // ONLY a CTRL+K
+ m_iCurBack = KVI_INPUT_DEF_BACK;
+ m_iCurFore = KVI_INPUT_DEF_FORE;
+ }
+ }
+ break;
+ default:
+ debug("Ops..");
+ exit(0);
+ break;
+ }
+ }
+}
+
+void KviInputEditor::runUpToTheFirstVisibleChar()
+{
+ register int idx = 0;
+ while(idx < m_iFirstVisibleChar)
+ {
+ unsigned short c = m_szTextBuffer[idx].unicode();
+ if(c < 32)
+ {
+ switch(c)
+ {
+ case KVI_TEXT_BOLD:
+ m_bCurBold = ! m_bCurBold;
+ break;
+ case KVI_TEXT_UNDERLINE:
+ m_bCurUnderline = ! m_bCurUnderline;
+ break;
+ case KVI_TEXT_RESET:
+ m_iCurFore = KVI_INPUT_DEF_FORE;
+ m_iCurBack = KVI_INPUT_DEF_BACK;
+ m_bCurBold = false;
+ m_bCurUnderline = false;
+ break;
+ case KVI_TEXT_REVERSE:
+ {
+ char auxClr = m_iCurFore;
+ m_iCurFore = m_iCurBack;
+ m_iCurBack = auxClr;
+ }
+ break;
+ case KVI_TEXT_COLOR:
+ {
+ idx++;
+ if(idx >= ((int)(m_szTextBuffer.length())))return;
+ unsigned char fore;
+ unsigned char back;
+ idx = getUnicodeColorBytes(m_szTextBuffer,idx,&fore,&back);
+ idx--;
+ if(fore != KVI_NOCHANGE)m_iCurFore = fore;
+ else m_iCurFore = KVI_INPUT_DEF_FORE;
+ if(back != KVI_NOCHANGE)m_iCurBack = back;
+ else m_iCurBack = KVI_INPUT_DEF_BACK;
+ }
+ break;
+ case 0:
+ debug("KviInputEditor::Encountered invisible end of the string!");
+ exit(0);
+ break;
+ }
+ }
+ idx++;
+ }
+}
+
+
+void KviInputEditor::mousePressEvent(QMouseEvent *e)
+{
+ if(e->button() & Qt::LeftButton)
+ {
+ m_iCursorPosition = charIndexFromXPosition(e->pos().x());
+ //move the cursor to
+ int anchorX = xPositionFromCharIndex(m_iCursorPosition);
+ if(anchorX > (width()-frameWidth()))m_iFirstVisibleChar++;
+ m_iSelectionAnchorChar = m_iCursorPosition;
+ selectOneChar(-1);
+ //grabMouse(QCursor(crossCursor));
+ repaintWithCursorOn();
+ killDragTimer();
+ m_iDragTimer = startTimer(KVI_INPUT_DRAG_TIMEOUT);
+
+ } else if(e->button() & Qt::RightButton)
+ {
+ int type = g_pActiveWindow->type();
+
+ //Popup menu
+ g_pInputPopup->clear();
+
+ QString szClip;
+
+ QClipboard * c = QApplication::clipboard();
+ if(c)
+ {
+ szClip = c->text(QClipboard::Clipboard);
+
+#ifdef COMPILE_USE_QT4
+ int occ = szClip.count(QChar('\n'));
+#else
+ int occ = szClip.contains(QChar('\n'));
+#endif
+
+ if(!szClip.isEmpty())
+ {
+ if(szClip.length() > 60)
+ {
+ szClip.truncate(60);
+ szClip.append("...");
+ }
+ szClip.replace(QChar('&'),"&amp;");
+ szClip.replace(QChar('<'),"&lt;");
+ szClip.replace(QChar('>'),"&gt;");
+ szClip.replace(QChar('\n'),"<br>");
+
+ QString label = "<center><b>";
+ label += __tr2qs("Clipboard");
+ label += ":</b><br>";
+ label += szClip;
+ label += "<br><b>";
+
+ QString num;
+ num.setNum(occ);
+
+ label += num;
+ label += QChar(' ');
+ label += (occ == 1) ? __tr2qs("line break") : __tr2qs("line breaks");
+ label += "</b></center>";
+
+ QLabel * l = new QLabel(label,g_pInputPopup);
+ l->setFrameStyle(QFrame::Raised | QFrame::StyledPanel);
+ l->setMargin(5);
+ // FIXME: This does NOT work under Qt 4.x (they seem to consider it as bad UI design)
+#ifndef COMPILE_USE_QT4
+ g_pInputPopup->insertItem(l);
+#else
+ delete l;
+#endif
+ }
+ }
+
+ int id = g_pInputPopup->insertItem(__tr2qs("Cu&t") + ACCEL_KEY(X),this,SLOT(cut()));
+ g_pInputPopup->setItemEnabled(id,hasSelection());
+ id = g_pInputPopup->insertItem(__tr2qs("&Copy") + ACCEL_KEY(C),this,SLOT(copyToClipboard()));
+ g_pInputPopup->setItemEnabled(id,hasSelection());
+ id = g_pInputPopup->insertItem(__tr2qs("&Paste") + ACCEL_KEY(V),this,SLOT(pasteClipboardWithConfirmation()));
+ g_pInputPopup->setItemEnabled(id,!szClip.isEmpty() && !m_bReadOnly);
+ id = g_pInputPopup->insertItem(__tr2qs("Paste (Slowly)"),this,SLOT(pasteSlow()));
+ if ((type == KVI_WINDOW_TYPE_CHANNEL) || (type == KVI_WINDOW_TYPE_QUERY) || (type == KVI_WINDOW_TYPE_DCCCHAT))
+ g_pInputPopup->setItemEnabled(id,!szClip.isEmpty() && !m_bReadOnly);
+ else
+ g_pInputPopup->setItemEnabled(id,false);
+ id = g_pInputPopup->insertItem(__tr2qs("Paste &File") + ACCEL_KEY(F),this,SLOT(pasteFile()));
+ if ((type != KVI_WINDOW_TYPE_CHANNEL) && (type != KVI_WINDOW_TYPE_QUERY) && (type != KVI_WINDOW_TYPE_DCCCHAT))
+ g_pInputPopup->setItemEnabled(id,false);
+ else
+ g_pInputPopup->setItemEnabled(id,!m_bReadOnly);
+ if(m_bSpSlowFlag ==true)
+ {
+ id = g_pInputPopup->insertItem(__tr2qs("Stop Paste"),this,SLOT(stopPasteSlow())); /*G&N 2005*/
+ }
+ id = g_pInputPopup->insertItem(__tr2qs("Clear"),this,SLOT(clear()));
+ g_pInputPopup->setItemEnabled(id,!m_szTextBuffer.isEmpty() && !m_bReadOnly);
+ g_pInputPopup->insertSeparator();
+ id = g_pInputPopup->insertItem(__tr2qs("Select All"),this,SLOT(selectAll()));
+ g_pInputPopup->setItemEnabled(id,(!m_szTextBuffer.isEmpty()));
+
+
+ g_pInputPopup->insertSeparator();
+ m_pIconMenu->clear();
+
+ KviPointerHashTable<QString,KviTextIcon> * d = g_pTextIconManager->textIconDict();
+ KviPointerHashTableIterator<QString,KviTextIcon> it(*d);
+ QStringList strList;
+ while(KviTextIcon * i = it.current())
+ {
+ strList.append(it.currentKey());
+ ++it;
+ }
+ strList.sort();
+ KviTextIcon * icon;
+ QPixmap *pix;
+
+ for(QStringList::Iterator iter = strList.begin(); iter != strList.end(); ++iter)
+ {
+ icon=g_pTextIconManager->lookupTextIcon(*iter);
+ if(icon)
+ {
+ pix = icon->pixmap();
+ if(pix) m_pIconMenu->insertItem(*pix,*iter);
+ }
+ }
+
+ g_pInputPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_BIGGRIN)),__tr2qs("Insert Icon"),m_pIconMenu);
+ g_pInputPopup->popup(mapToGlobal(e->pos()));
+ } else {
+ pasteSelectionWithConfirmation();
+ }
+}
+void KviInputEditor::iconPopupActivated(int id)
+{
+ if(!m_bReadOnly)
+ {
+ QString text = m_pIconMenu->text(id);
+ if(!text.isEmpty())
+ {
+ text.prepend(KVI_TEXT_ICON);
+ text.append(' ');
+ insertText(text);
+ }
+ }
+}
+
+bool KviInputEditor::hasSelection()
+{
+ return ((m_iSelectionBegin != -1)&&(m_iSelectionEnd != -1));
+}
+
+void KviInputEditor::copyToClipboard()
+{
+ if(!hasSelection())return;
+ QClipboard * c = QApplication::clipboard();
+ if(!c)return;
+ QString szTxt = m_szTextBuffer.mid(m_iSelectionBegin,(m_iSelectionEnd-m_iSelectionBegin)+1);
+ c->setText(szTxt,QClipboard::Clipboard);
+ repaintWithCursorOn();
+}
+
+void KviInputEditor::copyToSelection(bool bDonNotCopyToClipboard)
+{
+ if(!hasSelection())return;
+ QClipboard * c = QApplication::clipboard();
+ if(!c)return;
+ QString szTxt = m_szTextBuffer.mid(m_iSelectionBegin,(m_iSelectionEnd-m_iSelectionBegin)+1);
+ if(c->supportsSelection())
+ c->setText(szTxt,QClipboard::Selection);
+ else if(!bDonNotCopyToClipboard)
+ c->setText(szTxt,QClipboard::Clipboard);
+ repaintWithCursorOn();
+}
+
+
+void KviInputEditor::moveCursorTo(int idx,bool bRepaint)
+{
+ if(idx < 0)idx = 0;
+ if(idx > ((int)(m_szTextBuffer.length())))idx = m_szTextBuffer.length();
+ if(idx > m_iCursorPosition)
+ {
+ while(m_iCursorPosition < idx)
+ {
+ moveRightFirstVisibleCharToShowCursor();
+ m_iCursorPosition++;
+ }
+ } else {
+ m_iCursorPosition = idx;
+ if(m_iFirstVisibleChar > m_iCursorPosition)m_iFirstVisibleChar = m_iCursorPosition;
+ }
+ if(bRepaint)repaintWithCursorOn();
+}
+
+void KviInputEditor::removeSelected()
+{
+ if(!hasSelection())return;
+ m_szTextBuffer.remove(m_iSelectionBegin,(m_iSelectionEnd-m_iSelectionBegin)+1);
+ moveCursorTo(m_iSelectionBegin,false);
+ selectOneChar(-1);
+ repaintWithCursorOn();
+}
+
+void KviInputEditor::cut()
+{
+ if(!hasSelection())return;
+ QClipboard * c = QApplication::clipboard();
+ if(!c)return;
+ c->setText(m_szTextBuffer.mid(m_iSelectionBegin,(m_iSelectionEnd-m_iSelectionBegin)+1),QClipboard::Clipboard);
+ m_szTextBuffer.remove(m_iSelectionBegin,(m_iSelectionEnd-m_iSelectionBegin)+1);
+ moveCursorTo(m_iSelectionBegin,false);
+ selectOneChar(-1);
+ repaintWithCursorOn();
+}
+
+void KviInputEditor::insertText(const QString &text)
+{
+ QString szText = text; // crop away constness
+ if(szText.isEmpty())return;
+
+ //szText.replaceAll('\t'," "); //Do not paste tabs
+
+ //szText.replace(QRegExp("\t")," "); // do not paste tabs
+
+ m_bUpdatesEnabled = false;
+ removeSelected();
+ m_bUpdatesEnabled = true;
+
+ if(szText.find('\n') == -1)
+ {
+ m_szTextBuffer.insert(m_iCursorPosition,szText);
+ m_szTextBuffer.truncate(m_iMaxBufferSize);
+ moveCursorTo(m_iCursorPosition + szText.length());
+ } else {
+ //Multiline paste...do not execute commands here
+ QString szBlock;
+ while(!szText.isEmpty())
+ {
+ int idx = szText.find('\n');
+ if(idx != -1)
+ {
+ szBlock = szText.left(idx);
+ //else szBlock = QChar(KVI_TEXT_RESET);
+ szText.remove(0,idx+1);
+ } else {
+ szBlock = szText;
+ szText = "";
+ }
+
+ m_szTextBuffer.insert(m_iCursorPosition,szBlock);
+ m_szTextBuffer.truncate(m_iMaxBufferSize);
+
+ int pos = 0;
+ while((pos < ((int)(m_szTextBuffer.length()))) && (m_szTextBuffer[pos] < 33))pos++;
+ if((pos < ((int)(m_szTextBuffer.length()))) && (m_szTextBuffer[pos] == QChar('/')))m_szTextBuffer.insert(pos,"\\");
+
+ returnPressed(idx != -1);
+ }
+ }
+}
+
+// Replace (length) characters in the buffer from (start) with (text), returns
+// the length of the text inserted (different from text.length() only if the
+// buffer was truncated.
+int KviInputEditor::replaceSegment(int start, int length, const QString &text)
+{
+ m_szTextBuffer.remove(start, length);
+ m_szTextBuffer.insert(start, text);
+ m_szTextBuffer.truncate(m_iMaxBufferSize);
+ repaintWithCursorOn();
+
+ int iInsertedLength = text.length();
+ int iMaxInsertedLength = m_iMaxBufferSize - start;
+ if(iInsertedLength > iMaxInsertedLength) return iMaxInsertedLength;
+ return iInsertedLength;
+}
+
+void KviInputEditor::pasteClipboardWithConfirmation()
+{
+ QClipboard * c = QApplication::clipboard();
+ if(!c)return;
+ QString szText = c->text(QClipboard::Clipboard);
+
+ if(szText.contains(QChar('\n')) > 0)
+ {
+ if(m_pInputParent->inherits("KviInput"))
+ ((KviInput*)(m_pInputParent))->multiLinePaste(szText);
+ } else {
+ insertText(szText);
+ }
+}
+
+void KviInputEditor::pasteSelectionWithConfirmation()
+{
+ QClipboard * c = QApplication::clipboard();
+ if(!c)return;
+ QString szText = c->text(c->supportsSelection() ? QClipboard::Selection : QClipboard::Clipboard);
+
+ if(szText.contains(QChar('\n')) > 0)
+ {
+ if(m_pInputParent->inherits("KviInput"))
+ ((KviInput*)(m_pInputParent))->multiLinePaste(szText);
+ } else {
+ insertText(szText);
+ }
+}
+
+void KviInputEditor::pasteSlow()
+{
+ KviKvsScript::run("spaste.clipboard",g_pActiveWindow);
+ m_bSpSlowFlag = true;
+}
+
+void KviInputEditor::stopPasteSlow()
+{
+ KviKvsScript::run("spaste.stop",g_pActiveWindow);
+ m_bSpSlowFlag = false;
+}
+
+void KviInputEditor::pasteFile()
+{
+ QString stmp = QFileDialog::getOpenFileName("","",this,"Paste File", "Choose a file" );
+ if(stmp!="")
+ {
+ QString stmp1 = "spaste.file " + stmp ;
+ KviKvsScript::run(stmp1,g_pActiveWindow);
+ m_bSpSlowFlag = true;
+ }
+}
+
+void KviInputEditor::selectAll()
+{
+ if(m_szTextBuffer.length() > 0)
+ {
+ m_iSelectionBegin = 0;
+ m_iSelectionEnd = m_szTextBuffer.length()-1;
+ }
+ end();
+}
+
+void KviInputEditor::clear()
+{
+ m_szTextBuffer = "";
+ selectOneChar(-1);
+ home();
+}
+
+void KviInputEditor::setText(const QString text)
+{
+ m_szTextBuffer = text;
+ m_szTextBuffer.truncate(m_iMaxBufferSize);
+ selectOneChar(-1);
+ end();
+}
+
+void KviInputEditor::mouseReleaseEvent(QMouseEvent *)
+{
+ if(m_iDragTimer)
+ {
+ m_iSelectionAnchorChar =-1;
+ //releaseMouse();
+ killDragTimer();
+ }
+ if(hasSelection())
+ copyToSelection();
+}
+
+void KviInputEditor::killDragTimer()
+{
+ if(m_iDragTimer)
+ {
+ killTimer(m_iDragTimer);
+ m_iDragTimer = 0;
+ }
+}
+
+void KviInputEditor::timerEvent(QTimerEvent *e)
+{
+ if(e->timerId() == m_iCursorTimer)
+ {
+ if(!hasFocus() || !isVisibleToTLW())
+ {
+ killTimer(m_iCursorTimer);
+ m_iCursorTimer = 0;
+ m_bCursorOn = false;
+ } else m_bCursorOn = ! m_bCursorOn;
+ update();
+ } else {
+ //Drag timer
+ handleDragSelection();
+ }
+}
+
+void KviInputEditor::handleDragSelection()
+{
+ if(m_iSelectionAnchorChar == -1)return;
+
+ QPoint pnt = mapFromGlobal(QCursor::pos());
+
+
+ if(pnt.x() <= 0)
+ {
+ //Left side dragging
+ if(m_iFirstVisibleChar > 0)m_iFirstVisibleChar--;
+ m_iCursorPosition = m_iFirstVisibleChar;
+ } else if(pnt.x() >= width())
+ {
+ //Right side dragging...add a single character to the selection on the right
+ if(m_iCursorPosition < ((int)(m_szTextBuffer.length())))
+ {
+ moveRightFirstVisibleCharToShowCursor();
+ m_iCursorPosition++;
+ } //else at the end of the selection...don't move anything
+ } else {
+ //Inside the window...
+ m_iCursorPosition = charIndexFromXPosition(pnt.x());
+ }
+ if(m_iCursorPosition == m_iSelectionAnchorChar)selectOneChar(-1);
+ else {
+ if(m_iCursorPosition > m_iSelectionAnchorChar)
+ {
+ m_iSelectionBegin = m_iSelectionAnchorChar;
+ m_iSelectionEnd = m_iCursorPosition-1;
+ } else {
+ m_iSelectionBegin = m_iCursorPosition;
+ m_iSelectionEnd = m_iSelectionAnchorChar-1;
+ }
+ }
+ repaintWithCursorOn();
+}
+
+void KviInputEditor::returnPressed(bool bRepaint)
+{
+ if (!m_szTextBuffer.isEmpty() /* && (!m_pHistory->current() || m_szTextBuffer.compare(*(m_pHistory->current())))*/)
+ {
+ if(m_pInputParent->inherits("KviInput"))
+ g_pInputHistory->add(new QString(m_szTextBuffer));
+
+ m_pHistory->insert(0,new QString(m_szTextBuffer));
+ }
+
+ __range_valid(KVI_INPUT_MAX_LOCAL_HISTORY_ENTRIES > 1); //ABSOLUTELY NEEDED, if not, pHist will be destroyed...
+ if(m_pHistory->count() > KVI_INPUT_MAX_LOCAL_HISTORY_ENTRIES)m_pHistory->removeLast();
+
+ m_iCurHistoryIdx = -1;
+
+ // FIXME: ALL THIS STUFF SHOULD BE CONVERTED TO QString
+ /*
+ if(m_pInputParent->inherits("KviInput"))
+ {
+ QString szBuffer(m_szTextBuffer);
+ m_szTextBuffer="";
+ selectOneChar(-1);
+ m_iCursorPosition = 0;
+ m_iFirstVisibleChar = 0;
+ if(bRepaint)repaintWithCursorOn();
+ KviUserInput::parse(szBuffer,m_pKviWindow);
+ } else {
+ */
+ emit enterPressed();
+ /*
+ return;
+ }
+ */
+}
+
+void KviInputEditor::focusInEvent(QFocusEvent *)
+{
+ if(m_iCursorTimer==0)
+ {
+ m_iCursorTimer = startTimer(KVI_INPUT_BLINK_TIME);
+ m_bCursorOn = true;
+ update();
+ }
+ // XIM handling...
+#ifndef COMPILE_USE_QT4
+ // THIS SEEMS TO BE GONE IN Qt4.x ? (even if the documentation states that it *should* be there)
+ setMicroFocusHint(1,1,width() - 2,height() - 2,true,0);
+#endif
+}
+
+void KviInputEditor::focusOutEvent(QFocusEvent *)
+{
+ if(m_iCursorTimer)killTimer(m_iCursorTimer);
+ m_iCursorTimer = 0;
+ m_bCursorOn = false;
+ update();
+}
+
+
+void KviInputEditor::internalCursorRight(bool bShift)
+{
+ if(m_iCursorPosition >= ((int)(m_szTextBuffer.length())))return;
+ moveRightFirstVisibleCharToShowCursor();
+ //Grow the selection if needed
+ if(bShift)
+ {
+ if((m_iSelectionBegin > -1)&&(m_iSelectionEnd > -1))
+ {
+ if(m_iSelectionEnd == m_iCursorPosition-1)m_iSelectionEnd++;
+ else if(m_iSelectionBegin == m_iCursorPosition)m_iSelectionBegin++;
+ else selectOneChar(m_iCursorPosition);
+ } else selectOneChar(m_iCursorPosition);
+ } else selectOneChar(-1);
+ m_iCursorPosition++;
+}
+
+void KviInputEditor::internalCursorLeft(bool bShift)
+{
+ if(m_iCursorPosition <= 0)return;
+
+ if(bShift)
+ {
+ if((m_iSelectionBegin > -1)&&(m_iSelectionEnd > -1))
+ {
+ if(m_iSelectionBegin == m_iCursorPosition)m_iSelectionBegin--;
+ else if(m_iSelectionEnd == m_iCursorPosition-1)m_iSelectionEnd--;
+ else selectOneChar(m_iCursorPosition - 1);
+ } else selectOneChar(m_iCursorPosition - 1);
+ } else selectOneChar(-1);
+
+ m_iCursorPosition--;
+ if(m_iFirstVisibleChar > m_iCursorPosition)m_iFirstVisibleChar--;
+}
+
+// remember the text before and after the cursor at this point, and put them
+// before and after the text inserted by IM in imEndEvent.
+// hagabaka
+void KviInputEditor::imStartEvent(QIMEvent *e)
+{
+ removeSelected();
+ m_iIMStart = m_iIMSelectionBegin = m_iCursorPosition;
+ m_iIMLength = 0;
+ m_bIMComposing = true;
+ e->accept();
+}
+
+// Whenever the IM's preedit changes, update the visuals and internal data. refer to <http://doc.trolltech.com/3.3/qimevent.html> */
+// hagabaka
+void KviInputEditor::imComposeEvent(QIMEvent *e)
+{
+ // replace the old pre-edit string with e->text()
+ m_bUpdatesEnabled = false;
+#ifdef COMPILE_USE_QT4
+ // Qt 4.x ??????????
+ m_iIMLength = replaceSegment(m_iIMStart, m_iIMLength, e->commitString());
+
+ // update selection inside the pre-edit
+ m_iIMSelectionBegin = m_iIMStart + e->replacementStart();
+ m_iIMSelectionLength = e->replacementLength();
+ moveCursorTo(m_iIMSelectionBegin);
+
+#else
+ m_iIMLength = replaceSegment(m_iIMStart, m_iIMLength, e->text());
+
+ // update selection inside the pre-edit
+ m_iIMSelectionBegin = m_iIMStart + e->cursorPos();
+ m_iIMSelectionLength = e->selectionLength();
+ moveCursorTo(m_iIMSelectionBegin);
+#endif
+
+
+ // repaint
+ m_bUpdatesEnabled = true;
+ repaintWithCursorOn();
+ e->accept();
+}
+
+// Input method is done; put its resulting text to where the preedit area was
+// hagabaka
+void KviInputEditor::imEndEvent(QIMEvent *e)
+{
+ // replace the preedit area with the IM result text
+ m_bUpdatesEnabled = false;
+#ifdef COMPILE_USE_QT4
+ // Qt 4.x ??????????
+ m_iIMLength = replaceSegment(m_iIMStart, m_iIMLength, e->commitString());
+#else
+ m_iIMLength = replaceSegment(m_iIMStart, m_iIMLength, e->text());
+#endif
+
+ // move cursor to after the IM result text
+ moveCursorTo(m_iIMStart + m_iIMLength);
+
+ // repaint
+ m_bUpdatesEnabled = true;
+ repaintWithCursorOn();
+
+ // reset data
+ m_bIMComposing = false;
+ e->accept();
+}
+
+// FIXME According to <http://www.kde.gr.jp/~asaki/how-to-support-input-method.html>, if the XIM
+// style used is OverTheTop, code needs to be added in keyPressEvent handler */
+// hagabaka
+void KviInputEditor::keyPressEvent(QKeyEvent *e)
+{
+ // disable the keyPress handling when IM is in composition.
+ if(m_bIMComposing)
+ {
+ e->ignore();
+ return;
+ }
+ // completion thingies
+
+ if(!m_bReadOnly)
+ {
+ if((e->key() == Qt::Key_Tab) || (e->key() == Qt::Key_BackTab))
+ {
+ completion(e->state() & Qt::ShiftButton);
+ return;
+ } else {
+ m_bLastCompletionFinished=1;
+ }
+ }
+
+
+ if(e->key() == Qt::Key_Escape)
+ {
+ emit escapePressed();
+ return;
+ }
+
+ if((e->state() & Qt::AltButton) || (e->state() & Qt::ControlButton))
+ {
+ switch(e->key())
+ {
+ case Qt::Key_Backspace:
+ if(m_pInputParent->inherits("KviInput"))
+ {
+ ((KviInput*)(m_pInputParent))->multiLinePaste(m_szTextBuffer);
+ clear();
+ return;
+ }
+ break;
+ }
+ }
+
+//Make CtrlKey and CommandKey ("Apple") behave equally on MacOSX.
+//This way typical X11 and Apple shortcuts can be used simultanously within the input line.
+#ifndef Q_OS_MACX
+ if(e->state() & Qt::ControlButton)
+#else
+ if((e->state() & Qt::ControlButton) || (e->state() & Qt::MetaButton))
+#endif
+ {
+ switch(e->key())
+ {
+ case Qt::Key_Right:
+ if(m_iCursorPosition < ((int)(m_szTextBuffer.length())))
+ {
+ // skip whitespace
+ while(m_iCursorPosition < ((int)(m_szTextBuffer.length())))
+ {
+ if(!m_szTextBuffer.at(m_iCursorPosition).isSpace())break;
+ internalCursorRight(e->state() & Qt::ShiftButton);
+ }
+ // skip nonwhitespace
+ while(m_iCursorPosition < ((int)(m_szTextBuffer.length())))
+ {
+ if(m_szTextBuffer.at(m_iCursorPosition).isSpace())break;
+ internalCursorRight(e->state() & Qt::ShiftButton);
+ }
+ repaintWithCursorOn();
+ }
+ break;
+ case Qt::Key_Left:
+ if(m_iCursorPosition > 0)
+ {
+ // skip whitespace
+ while(m_iCursorPosition > 0)
+ {
+ if(!m_szTextBuffer.at(m_iCursorPosition - 1).isSpace())break;
+ internalCursorLeft(e->state() & Qt::ShiftButton);
+ }
+ // skip nonwhitespace
+ while(m_iCursorPosition > 0)
+ {
+ if(m_szTextBuffer.at(m_iCursorPosition - 1).isSpace())break;
+ internalCursorLeft(e->state() & Qt::ShiftButton);
+ }
+ repaintWithCursorOn();
+ }
+ break;
+ case Qt::Key_K:
+ {
+ if(!m_bReadOnly)
+ {
+ insertChar(KVI_TEXT_COLOR);
+ int xPos = xPositionFromCharIndex(m_iCursorPosition);
+ if(xPos > 24)xPos-=24;
+ if(!g_pColorWindow)g_pColorWindow = new KviColorWindow();
+ if(xPos+g_pColorWindow->width() > width())xPos = width()-(g_pColorWindow->width()+2);
+ g_pColorWindow->move(mapToGlobal(QPoint(xPos,-35)));
+ g_pColorWindow->popup(this);
+ }
+ }
+ break;
+ case Qt::Key_B:
+ if(!m_bReadOnly) insertChar(KVI_TEXT_BOLD);
+ break;
+ case Qt::Key_O:
+ if(!m_bReadOnly) insertChar(KVI_TEXT_RESET);
+ break;
+ case Qt::Key_U:
+ if(!m_bReadOnly) insertChar(KVI_TEXT_UNDERLINE);
+ break;
+ case Qt::Key_R:
+ if(!m_bReadOnly) insertChar(KVI_TEXT_REVERSE);
+ break;
+ case Qt::Key_P:
+ if(!m_bReadOnly) insertChar(KVI_TEXT_CRYPTESCAPE); // DO NOT CRYPT THIS STUFF
+ break;
+ case Qt::Key_I:
+ {
+ if(!m_bReadOnly)
+ {
+ insertChar(KVI_TEXT_ICON); // THE NEXT WORD IS AN ICON NAME
+ int xPos = xPositionFromCharIndex(m_iCursorPosition);
+ if(xPos > 24)xPos-=24;
+ if(!g_pTextIconWindow)g_pTextIconWindow = new KviTextIconWindow();
+ if(xPos+g_pTextIconWindow->width() > width())xPos = width()-(g_pTextIconWindow->width()+2);
+ g_pTextIconWindow->move(mapToGlobal(QPoint(xPos,-KVI_TEXTICON_WIN_HEIGHT)));
+ g_pTextIconWindow->popup(this);
+ }
+ }
+ break;
+ case Qt::Key_C:
+ copyToClipboard();
+ break;
+ case Qt::Key_X:
+ if(!m_bReadOnly) cut();
+ break;
+ case Qt::Key_V:
+ if(!m_bReadOnly) pasteClipboardWithConfirmation();
+ break;
+ //case Qt::Key_Backspace:
+ case Qt::Key_W:
+ if(m_iCursorPosition > 0 && !m_bReadOnly && !hasSelection())
+ {
+ // skip whitespace
+ while(m_iCursorPosition > 0)
+ {
+ if(!m_szTextBuffer.at(m_iCursorPosition - 1).isSpace())break;
+ m_szTextBuffer.remove(m_iCursorPosition-1,1);
+ m_iCursorPosition--;
+ if(m_iFirstVisibleChar > m_iCursorPosition)m_iFirstVisibleChar--;
+ }
+ // skip nonwhitespace
+ while(m_iCursorPosition > 0)
+ {
+ if(m_szTextBuffer.at(m_iCursorPosition - 1).isSpace())break;
+ m_szTextBuffer.remove(m_iCursorPosition-1,1);
+ m_iCursorPosition--;
+ if(m_iFirstVisibleChar > m_iCursorPosition)m_iFirstVisibleChar--;
+ }
+ repaintWithCursorOn();
+ }
+ break;
+ case Qt::Key_PageUp:
+ if(KVI_OPTION_BOOL(KviOption_boolDisableInputHistory)) break;
+ if(m_pInputParent->inherits("KviInput"))
+ ((KviInput*)(m_pInputParent))->historyButtonClicked();
+ break;
+ case Qt::Key_F:
+ if(m_pKviWindow)
+ if(m_pKviWindow->view())m_pKviWindow->view()->toggleToolWidget();
+ break;
+ case Qt::Key_A:
+ m_iSelectionBegin=0;
+ m_iSelectionEnd=m_szTextBuffer.length()-1;
+ m_iCursorPosition=m_szTextBuffer.length();
+ repaintWithCursorOn();
+ break;
+ case Qt::Key_Return:
+ case Qt::Key_Enter:
+ if(m_pInputParent->inherits("KviInput"))
+ {
+ QString szBuffer(m_szTextBuffer);
+ m_szTextBuffer="";
+ selectOneChar(-1);
+ m_iCursorPosition = 0;
+ m_iFirstVisibleChar = 0;
+ repaintWithCursorOn();
+ KviUserInput::parseNonCommand(szBuffer,m_pKviWindow);
+ if (!szBuffer.isEmpty())
+ {
+ g_pInputHistory->add(new QString(szBuffer));
+ m_pHistory->insert(0,new QString(szBuffer));
+ }
+
+ __range_valid(KVI_INPUT_MAX_LOCAL_HISTORY_ENTRIES > 1); //ABSOLUTELY NEEDED, if not, pHist will be destroyed...
+ if(m_pHistory->count() > KVI_INPUT_MAX_LOCAL_HISTORY_ENTRIES)m_pHistory->removeLast();
+
+ m_iCurHistoryIdx = -1;
+ }
+ break;
+ default:
+ if(!m_bReadOnly) insertText(e->text());
+ break;
+ }
+ return;
+ }
+
+ if((e->state() & Qt::AltButton) && (e->state() & Qt::Keypad))
+ {
+ // Qt::Key_Meta seems to substitute Qt::Key_Alt on some keyboards
+ if((e->key() == Qt::Key_Alt) || (e->key() == Qt::Key_Meta))
+ {
+ m_szAltKeyCode = "";
+ return;
+ } else if((e->ascii() >= '0') && (e->ascii() <= '9'))
+ {
+ m_szAltKeyCode += e->ascii();
+ return;
+ }
+
+ //debug("%c",e->ascii());
+ if(!m_bReadOnly) {
+ insertText(e->text());
+ }
+ return;
+ }
+
+ if(e->state() & Qt::ShiftButton)
+ {
+ switch(e->key())
+ {
+ case Qt::Key_Insert:
+ if(!m_bReadOnly) pasteClipboardWithConfirmation();
+ return;
+ break;
+ case Qt::Key_PageUp:
+ if(m_pKviWindow)
+ if(m_pKviWindow->view())m_pKviWindow->view()->prevLine();
+ return;
+ break;
+ case Qt::Key_PageDown:
+ if(m_pKviWindow)
+ if(m_pKviWindow->view())m_pKviWindow->view()->nextLine();
+ return;
+ break;
+ }
+ }
+
+ switch(e->key())
+ {
+ case Qt::Key_Right:
+ if(m_iCursorPosition < ((int)(m_szTextBuffer.length())))
+ {
+ internalCursorRight(e->state() & Qt::ShiftButton);
+ repaintWithCursorOn();
+ }
+ break;
+ case Qt::Key_Left:
+ if(m_iCursorPosition > 0)
+ {
+ internalCursorLeft(e->state() & Qt::ShiftButton);
+ repaintWithCursorOn();
+ }
+ break;
+ case Qt::Key_Backspace:
+ if(!m_bReadOnly)
+ {
+ if(hasSelection() && (m_iSelectionEnd >= m_iCursorPosition-1) && (m_iSelectionBegin <= m_iCursorPosition))
+ {
+ //remove the selection
+ m_szTextBuffer.remove(m_iSelectionBegin,(m_iSelectionEnd-m_iSelectionBegin)+1);
+ m_iCursorPosition = m_iSelectionBegin;
+ if(m_iFirstVisibleChar > m_iCursorPosition)m_iFirstVisibleChar = m_iCursorPosition;
+ } else if(m_iCursorPosition > 0) {
+ m_iCursorPosition--;
+ m_szTextBuffer.remove(m_iCursorPosition,1);
+ if(m_iFirstVisibleChar > m_iCursorPosition)m_iFirstVisibleChar--;
+ }
+ selectOneChar(-1);
+ repaintWithCursorOn();
+ }
+ break;
+ case Qt::Key_Delete:
+ if(!m_bReadOnly)
+ {
+ if(hasSelection()) removeSelected();
+ else if(m_iCursorPosition < (int)m_szTextBuffer.length())
+ {
+ m_szTextBuffer.remove(m_iCursorPosition,1);
+ selectOneChar(-1);
+ repaintWithCursorOn();
+ }
+ }
+ break;
+ case Qt::Key_Home:
+ if(m_iCursorPosition > 0)
+ {
+ if(e->state() & Qt::ShiftButton)
+ {
+ if((m_iSelectionBegin == -1)&&(m_iSelectionEnd == -1))m_iSelectionEnd = m_iCursorPosition - 1;
+ m_iSelectionBegin = 0;
+ } else {
+ selectOneChar(-1);
+ }
+ home();
+ }
+ break;
+ case Qt::Key_End://we should call it even the cursor is at the end for deselecting
+ if(e->state() & Qt::ShiftButton)
+ {
+ if((m_iSelectionBegin == -1)&&(m_iSelectionEnd == -1))m_iSelectionBegin = m_iCursorPosition;
+ m_iSelectionEnd = m_szTextBuffer.length()-1;
+ } else {
+ selectOneChar(-1);
+ }
+ end();
+ break;
+ case Qt::Key_Up:
+ if(!m_bReadOnly)
+ {
+ if(m_pHistory->count() > 0)
+ {
+ if(m_iCurHistoryIdx < 0)
+ {
+ m_szSaveTextBuffer = m_szTextBuffer;
+ m_szTextBuffer = *(m_pHistory->at(0));
+ m_iCurHistoryIdx = 0;
+ } else if(m_iCurHistoryIdx >= (int)(m_pHistory->count()-1))
+ {
+ m_szTextBuffer=m_szSaveTextBuffer;
+ m_iCurHistoryIdx = -1;
+ } else {
+ m_iCurHistoryIdx++;
+ m_szTextBuffer = *(m_pHistory->at(m_iCurHistoryIdx));
+ }
+ selectOneChar(-1);
+ if(KVI_OPTION_BOOL(KviOption_boolInputHistoryCursorAtEnd))end();
+ else home();
+ }
+ }
+ break;
+ case Qt::Key_Down:
+ if(!m_bReadOnly)
+ {
+ if(m_pHistory->count() > 0)
+ {
+ if(m_iCurHistoryIdx < 0)
+ {
+ m_szSaveTextBuffer = m_szTextBuffer;
+ m_szTextBuffer = *(m_pHistory->at(m_pHistory->count()-1));
+ m_iCurHistoryIdx =m_pHistory->count()-1;
+ } else if(m_iCurHistoryIdx == 0)
+ {
+ m_szTextBuffer=m_szSaveTextBuffer;
+ m_iCurHistoryIdx = -1;
+ } else {
+ m_iCurHistoryIdx--;
+ m_szTextBuffer = *(m_pHistory->at(m_iCurHistoryIdx));
+ }
+ selectOneChar(-1);
+ if(KVI_OPTION_BOOL(KviOption_boolInputHistoryCursorAtEnd))end();
+ else home();
+ }
+ }
+ break;
+ case Qt::Key_PageUp:
+ if(m_pKviWindow)
+ if(m_pKviWindow->view())m_pKviWindow->view()->prevPage();
+ break;
+ case Qt::Key_PageDown:
+ if(m_pKviWindow)
+ if(m_pKviWindow->view())m_pKviWindow->view()->nextPage();
+ break;
+ case Qt::Key_Return:
+ case Qt::Key_Enter:
+ returnPressed();
+ break;
+ case Qt::Key_Alt:
+ case Qt::Key_Meta:
+ m_szAltKeyCode = "";
+ break;
+ default:
+ if(!e->text().isEmpty() && !m_bReadOnly)
+ insertText(e->text());
+ break;
+ }
+}
+
+void KviInputEditor::keyReleaseEvent(QKeyEvent *e)
+{
+ if((e->key() == Qt::Key_Alt) || (e->key() == Qt::Key_Meta))
+ {
+ if(m_szAltKeyCode.hasData())
+ {
+ bool bOk;
+ unsigned short ch = m_szAltKeyCode.toUShort(&bOk);
+ if(bOk && ch != 0)
+ {
+ //debug("INSERTING CHAR %d",ch);
+ insertChar(QChar(ch));
+ e->accept();
+ }
+ }
+ m_szAltKeyCode = "";
+ }
+ e->ignore();
+}
+
+void KviInputEditor::getWordBeforeCursor(QString &buffer,bool * bIsFirstWordInLine)
+{
+ if(m_szTextBuffer.isEmpty() || m_iCursorPosition <= 0)
+ {
+ buffer = "";
+ return;
+ }
+
+ buffer = m_szTextBuffer.left(m_iCursorPosition);
+
+ int idx = buffer.findRev(' ');
+ int idx2 = buffer.findRev(','); // This is for comma separated lists...
+ int idx3 = buffer.findRev('(');
+ int idx4 = buffer.findRev('"');
+ if(idx2 > idx)idx = idx2;
+ if(idx3 > idx)idx = idx3;
+ if(idx4 > idx)idx = idx4;
+ *bIsFirstWordInLine = false;
+ if(idx > -1)buffer.remove(0,idx+1);
+ else *bIsFirstWordInLine = true;
+}
+
+void KviInputEditor::completion(bool bShift)
+{
+ // FIXME: Spaces in directory completion can mess everything completely
+ // On windows the KVI_PATH_SEPARATOR_CHARacters are breaking everything...
+ // Well.... :D
+
+ QString word;
+ QString match;
+
+ bool bFirstWordInLine;
+ getWordBeforeCursor(word,&bFirstWordInLine);
+ if(word.isEmpty())
+ {
+ if(m_szLastCompletedNick.isEmpty())return; // nothing to complete
+ else {
+ // this is standard nick completion continued
+ standardNickCompletion(bShift,word,bFirstWordInLine);
+ repaintWithCursorOn();
+ return;
+ }
+ }
+ KviPointerList<QString> tmp;
+ tmp.setAutoDelete(true);
+
+ bool bIsCommand = false;
+ bool bIsDir = false;
+ bool bIsNick = false;
+
+ unsigned short uc = word[0].unicode();
+
+ if(uc == '/')
+ {
+ if(bFirstWordInLine)
+ {
+ // command completion
+ word.remove(0,1);
+ if(word.isEmpty())return;
+ KviKvsKernel::instance()->completeCommand(word,&tmp);
+ bIsCommand = true;
+ } else {
+ // directory completion attempt
+ g_pApp->completeDirectory(word,&tmp);
+ bIsDir = true;
+ }
+ } else if(uc == '$')
+ {
+ // function/identifer completion
+ word.remove(0,1);
+ if(word.isEmpty())return;
+ KviKvsKernel::instance()->completeFunction(word,&tmp);
+ } else if(uc == '#' || uc == '&' || uc == '!')
+ {
+ if(m_pKviWindow)
+ {
+ if( (word.length()==1) && (m_pKviWindow->windowName()[0].unicode()==uc))
+ {
+ match=m_pKviWindow->windowName();
+ match.append(" ");
+ replaceWordBeforeCursor(word,match,false);
+ repaintWithCursorOn();
+ return;
+ } else {
+ if(m_pKviWindow->console())
+ m_pKviWindow->console()->completeChannel(word,&tmp);
+ }
+ }
+
+ //FIXME: Complete also on irc:// starting strings, not only irc.?
+ } else if(KviQString::equalCIN(word,"irc.",4))
+ {
+ // irc server name
+ if(m_pKviWindow)
+ if(m_pKviWindow->console())
+ m_pKviWindow->console()->completeServer(word,&tmp);
+ } else {
+ // empty word will end up here
+ if(m_pUserListView)
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolBashLikeNickCompletion))
+ {
+ m_pUserListView->completeNickBashLike(word,&tmp,bShift);
+ bIsNick = true;
+ } else {
+ standardNickCompletion(bShift,word,bFirstWordInLine);
+ repaintWithCursorOn();
+ return;
+ }
+ }
+ }
+
+ // Lookup the longest exact match
+
+ if(tmp.count() > 0)
+ {
+ if(tmp.count() == 1)
+ {
+ match = *(tmp.first());
+ if(bIsCommand)match.append(' ');
+ else if(bIsNick)
+ {
+ if(!KVI_OPTION_STRING(KviOption_stringNickCompletionPostfix).isEmpty())
+ {
+ if(bFirstWordInLine || (!KVI_OPTION_BOOL(KviOption_boolUseNickCompletionPostfixForFirstWordOnly)))
+ match.append(KVI_OPTION_STRING(KviOption_stringNickCompletionPostfix));
+ }
+ }
+ } else {
+ QString all;
+ QString * s = tmp.first();
+ match = *s;
+ int wLen = word.length();
+ for(;s;s = tmp.next())
+ {
+ if(s->length() < match.length())
+ match.remove(s->length(),match.length() - s->length());
+ // All the matches here have length >= word.len()!!!
+ const QChar * b1 = KviQString::nullTerminatedArray(*s) + wLen;
+ const QChar * b2 = KviQString::nullTerminatedArray(match) + wLen;
+ const QChar * c1 = b1;
+ const QChar * c2 = b2;
+ if(bIsDir)while(c1->unicode() && (c1->unicode() == c2->unicode()))c1++,c2++;
+ else while(c1->unicode() && (c1->lower().unicode() == c2->lower().unicode()))c1++,c2++;
+ int len = wLen + (c1 - b1);
+ if(len < ((int)(match.length())))match.remove(len,match.length() - len);
+ if(!all.isEmpty())all.append(", ");
+ all.append(*s);
+ }
+ if(m_pKviWindow)
+ m_pKviWindow->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("%d matches: %Q"),tmp.count(),&all);
+ }
+ } else
+ if(m_pKviWindow)
+ m_pKviWindow->outputNoFmt(KVI_OUT_SYSTEMMESSAGE,__tr2qs("No matches"));
+
+ if(!match.isEmpty())
+ {
+ //if(!bIsDir && !bIsNick)match = match.lower(); <-- why? It is nice to have
+ // $module.someFunctionName instad
+ // of unreadable $module.somefunctionfame
+ replaceWordBeforeCursor(word,match,false);
+ }
+
+ repaintWithCursorOn();
+}
+
+void KviInputEditor::replaceWordBeforeCursor(const QString &word,const QString &replacement,bool bRepaint)
+{
+ selectOneChar(-1);
+ m_iCursorPosition -= word.length();
+ m_szTextBuffer.remove(m_iCursorPosition,word.length());
+ m_szTextBuffer.insert(m_iCursorPosition,replacement);
+ m_szTextBuffer.truncate(m_iMaxBufferSize);
+ moveCursorTo(m_iCursorPosition + replacement.length());
+ if(bRepaint)repaintWithCursorOn();
+}
+
+void KviInputEditor::standardNickCompletion(bool bAddMask,QString &word,bool bFirstWordInLine)
+{
+ // FIXME: this could be really simplified...
+ if(!m_pUserListView)return;
+ selectOneChar(-1);
+
+ QString buffer;
+ if(m_szLastCompletedNick.isEmpty())
+ {
+ // New completion session: we NEED sth to complete
+ if(word.isEmpty())return;
+ if(m_pUserListView->completeNickStandard(word,m_szLastCompletedNick,buffer,bAddMask))
+ {
+ // completed: save the buffer
+ m_szLastCompletionBuffer = m_szTextBuffer;
+ m_iLastCompletionCursorPosition = m_iCursorPosition;
+ m_iLastCompletionCursorXPosition = m_iLastCursorXPosition;
+ m_iLastCompletionFirstVisibleChar = m_iFirstVisibleChar;
+ m_szLastCompletedNick = buffer;
+ if(!KVI_OPTION_STRING(KviOption_stringNickCompletionPostfix).isEmpty())
+ {
+ if(bFirstWordInLine || (!KVI_OPTION_BOOL(KviOption_boolUseNickCompletionPostfixForFirstWordOnly)))
+ buffer.append(KVI_OPTION_STRING(KviOption_stringNickCompletionPostfix));
+ }
+ replaceWordBeforeCursor(word,buffer,false);
+ m_bLastCompletionFinished=0;
+ // REPAINT CALLED FROM OUTSIDE!
+ } // else no match at all
+ } else if(!m_bLastCompletionFinished) {
+ // Old session
+ // swap the buffers
+ m_szTextBuffer = m_szLastCompletionBuffer;
+ m_iCursorPosition = m_iLastCompletionCursorPosition;
+ m_iLastCursorXPosition = m_iLastCompletionCursorXPosition;
+ m_iFirstVisibleChar = m_iLastCompletionFirstVisibleChar;
+ // re-extract
+ //word = m_szTextBuffer.left(m_iCursorPosition);
+
+ getWordBeforeCursor(word,&bFirstWordInLine);
+ if(word.isEmpty())return;
+ if(m_pUserListView->completeNickStandard(word,m_szLastCompletedNick,buffer,bAddMask))
+ {
+ // completed
+ m_szLastCompletedNick = buffer;
+ if(!KVI_OPTION_STRING(KviOption_stringNickCompletionPostfix).isEmpty())
+ {
+ if(bFirstWordInLine || (!KVI_OPTION_BOOL(KviOption_boolUseNickCompletionPostfixForFirstWordOnly)))
+ buffer.append(KVI_OPTION_STRING(KviOption_stringNickCompletionPostfix));
+ }
+ replaceWordBeforeCursor(word,buffer,false);
+ m_bLastCompletionFinished=0;
+ // REPAINT CALLED FROM OUTSIDE!
+ } else {
+ m_bLastCompletionFinished=1;
+ m_szLastCompletedNick = "";
+ }
+ } else {
+ // Old session finished
+ // re-extract
+ //word = m_szTextBuffer.left(m_iCursorPosition);
+ //getWordBeforeCursor(word,&bFirstWordInLine);
+ if(word.isEmpty())return;
+ if(m_pUserListView->completeNickStandard(word,"",buffer,bAddMask))
+ {
+ // completed
+ m_szLastCompletionBuffer = m_szTextBuffer;
+ m_iLastCompletionCursorPosition = m_iCursorPosition;
+ m_iLastCompletionCursorXPosition = m_iLastCursorXPosition;
+ m_iLastCompletionFirstVisibleChar = m_iFirstVisibleChar;
+ m_szLastCompletedNick = buffer;
+ if(!KVI_OPTION_STRING(KviOption_stringNickCompletionPostfix).isEmpty())
+ {
+ if(bFirstWordInLine || (!KVI_OPTION_BOOL(KviOption_boolUseNickCompletionPostfixForFirstWordOnly)))
+ buffer.append(KVI_OPTION_STRING(KviOption_stringNickCompletionPostfix));
+ }
+ replaceWordBeforeCursor(word,buffer,false);
+ m_bLastCompletionFinished=0;
+ // REPAINT CALLED FROM OUTSIDE!
+ } else {
+ m_bLastCompletionFinished=1;
+ m_szLastCompletedNick = "";
+ }
+ }
+}
+
+
+//Funky helpers
+
+void KviInputEditor::end()
+{
+ m_iLastCursorXPosition = frameWidth();
+ m_iCursorPosition = 0;
+ m_iFirstVisibleChar = 0;
+ while(m_iCursorPosition < ((int)(m_szTextBuffer.length())))
+ {
+ moveRightFirstVisibleCharToShowCursor();
+ m_iCursorPosition++;
+ }
+ repaintWithCursorOn();
+}
+
+void KviInputEditor::home()
+{
+ m_iFirstVisibleChar = 0;
+ m_iCursorPosition = 0;
+ repaintWithCursorOn();
+}
+
+void KviInputEditor::insertChar(QChar c)
+{
+ if(m_szTextBuffer.length() >= m_iMaxBufferSize)return;
+
+ // Kill the selection
+ if((m_iSelectionBegin > -1) || (m_iSelectionEnd > -1))
+ {
+ if((m_iCursorPosition >= m_iSelectionBegin) && (m_iCursorPosition <= m_iSelectionEnd))
+ {
+ m_bUpdatesEnabled = false;
+ removeSelected();
+ m_bUpdatesEnabled = true;
+ }
+ }
+ selectOneChar(-1);
+ m_szTextBuffer.insert(m_iCursorPosition,c);
+ moveRightFirstVisibleCharToShowCursor();
+ m_iCursorPosition++;
+ repaintWithCursorOn();
+}
+
+void KviInputEditor::moveRightFirstVisibleCharToShowCursor()
+{
+ // :)
+ QFontMetrics fm(KVI_OPTION_FONT(KviOption_fontInput));
+
+ QChar c = m_szTextBuffer.at(m_iCursorPosition);
+
+#ifdef COMPILE_USE_QT4
+ m_iLastCursorXPosition += c.unicode() < 32 ? fm.width(getSubstituteChar(c.unicode())) + 3 : fm.width(c);;
+#else
+ m_iLastCursorXPosition += (c.unicode() < 256) ? g_iInputFontCharWidth[c.unicode()] : fm.width(c);
+#endif
+ while(m_iLastCursorXPosition >= contentsRect().width()-2*KVI_INPUT_MARGIN)
+ {
+ c = m_szTextBuffer.at(m_iFirstVisibleChar);
+#ifdef COMPILE_USE_QT4
+ m_iLastCursorXPosition -= c.unicode() < 32 ? fm.width(getSubstituteChar(c.unicode())) + 3 : fm.width(c);;
+#else
+ m_iLastCursorXPosition -= (c.unicode() < 256) ? g_iInputFontCharWidth[c.unicode()] : fm.width(c);
+#endif
+ m_iFirstVisibleChar++;
+ }
+}
+
+void KviInputEditor::repaintWithCursorOn()
+{
+ // :)
+ if(m_bUpdatesEnabled)
+ {
+ m_bCursorOn = true;
+ update();
+ }
+}
+
+void KviInputEditor::selectOneChar(int pos)
+{
+ m_iSelectionBegin = pos;
+ m_iSelectionEnd = pos;
+}
+
+int KviInputEditor::charIndexFromXPosition(int xPos)
+{
+ int curXPos = frameWidth()+KVI_INPUT_MARGIN;
+ int curChar = m_iFirstVisibleChar;
+ int bufLen = m_szTextBuffer.length();
+
+ QFontMetrics fm(KVI_OPTION_FONT(KviOption_fontInput));
+ while(curChar < bufLen)
+ {
+ QChar c = m_szTextBuffer.at(curChar);
+#ifdef COMPILE_USE_QT4
+ int widthCh = c.unicode() < 32 ? fm.width(getSubstituteChar(c.unicode())) + 3 : fm.width(c);;
+#else
+ int widthCh = (c.unicode() < 256) ? g_iInputFontCharWidth[c.unicode()] : fm.width(c);
+#endif
+ if(xPos < (curXPos+(widthCh/2)))return curChar;
+ else if(xPos < (curXPos+widthCh))return (curChar+1);
+ {
+ curXPos+=widthCh;
+ curChar++;
+ }
+ }
+ return curChar;
+}
+
+int KviInputEditor::xPositionFromCharIndex(QFontMetrics& fm,int chIdx,bool bContentsCoords)
+{
+ // FIXME: this could use fm.width(m_szTextBuffer,chIdx)
+ int curXPos = bContentsCoords ? KVI_INPUT_MARGIN : frameWidth()+KVI_INPUT_MARGIN;
+ int curChar = m_iFirstVisibleChar;
+ while(curChar < chIdx)
+ {
+ QChar c = m_szTextBuffer.at(curChar);
+#ifdef COMPILE_USE_QT4
+ curXPos += c.unicode() < 32 ? fm.width(getSubstituteChar(c.unicode())) + 3 : fm.width(c);;
+#else
+ curXPos += (c.unicode() < 256) ? g_iInputFontCharWidth[c.unicode()] : fm.width(c);
+#endif
+ curChar++;
+ }
+ return curXPos;
+}
+
+int KviInputEditor::xPositionFromCharIndex(int chIdx,bool bContentsCoords)
+{
+ // FIXME: this could use fm.width(m_szTextBuffer,chIdx)
+ int curXPos = bContentsCoords ? KVI_INPUT_MARGIN : frameWidth()+KVI_INPUT_MARGIN;
+ int curChar = m_iFirstVisibleChar;
+ //debug("%i",g_pLastFontMetrics);
+ if(!g_pLastFontMetrics) g_pLastFontMetrics = new QFontMetrics(KVI_OPTION_FONT(KviOption_fontInput));
+ while(curChar < chIdx)
+ {
+ QChar c = m_szTextBuffer.at(curChar);
+#ifdef COMPILE_USE_QT4
+ curXPos += c.unicode() < 32 ? g_pLastFontMetrics->width(getSubstituteChar(c.unicode())) + 3 : g_pLastFontMetrics->width(c);
+#else
+ curXPos += (c.unicode() < 256) ? g_iInputFontCharWidth[c.unicode()] : g_pLastFontMetrics->width(c);
+#endif
+ curChar++;
+ }
+ return curXPos;
+}
+
+/*
+ @doc: texticons
+ @type:
+ generic
+ @title:
+ The KVIrc TextIcons extension
+ @short:
+ The KVIrc TextIcons extension
+ @body:
+ Starting from version 3.0.0 KVIrc supports the TextIcon extension
+ to the standard IRC protocol. It is a mean for sending text enriched
+ of small images without sending the images themselves.[br]
+ The idea is quite simple: the IRC client (and it's user) associates
+ some small images to text strings (called icon tokens) and the strings are sent
+ in place of the images preceeded by a special escape character.[br]
+ The choosen escape character is 29 (hex 0x1d) which corresponds
+ to the ASCII group separator.[br]
+ So for example if a client has the association of the icon token "rose" with a small
+ icon containing a red rose flower then KVIrc could send the string
+ "&lt;0x1d&gt;rose" in the message stream to ask the remote parties to
+ display such an icon. If the remote parties don't have this association
+ then they will simply strip the control code and display the string "rose",
+ (eventually showing it in some enchanced way).[br]
+ The icon tokens can't contain spaces
+ so the receiving clients stop the extraction of the icon strings
+ when a space, an icon escape or the message termination is encountered.
+ [br]
+ &lt;icon escape&gt; := character 0x1d (ASCII group separator)[br]
+ &lt;icon token&gt; := any character with the exception of 0x1d, CR,LF and SPACE.[br]
+ [br]
+ Please note that this is a KVIrc extension and the remote clients
+ that don't support this feature will not display the icon (and will
+ eventually show the 0x1d character in the data stream).[br]
+ If you like this feature please either convince the remote users
+ to try KVIrc or tell them to write to their client developers asking
+ for this simple feature to be implemented.[br]
+*/
+
+
+/*
+ @doc: commandline
+ @title:
+ The Commandline Input Features
+ @type:
+ generic
+ @short:
+ Commandline input features
+ @body:
+ [big]Principles of operation[/big]
+ [p]
+ The idea is simple: anything that starts with a slash (/) character
+ is interpreted as a command. Anything else is plain text that is
+ sent to the target of the window (channel, query, dcc chat etc..).
+ [/p]
+ [big]The two operating modes[/big]
+ [p]
+ The commandline input has two operating modes: the "user friendly mode" and
+ the "kvs mode". In the user friendly mode all the parameters of the commands
+ are interpreted exactly like you type them. There is no special interpretation
+ of $,%,-,( and ; characters. This allows you to type "/me is happy ;)", for example.
+ In the kvs mode the full parameter interpretation is enabled and the commands
+ work just like in any other script editor. This means that anything that
+ starts with a $ is a function call, anything that starts with a % is a variable,
+ the dash characters after command names are interpreted as switches and ; is the
+ command separator. This in turn does NOT allow you to type "/me is happy ;)"
+ because ; is the command separator and ) will be interpreted as the beginning
+ of the next command. In KVS mode you obviously have to escape the ; character
+ by typing "/me is happy \;)". The user friendly mode is good for everyday chatting
+ and for novice users while the KVS mode is for experts that know that minimum about
+ scripting languages. Please note that in the user-friendly mode you're not allowed
+ to type multiple commands at once :).
+ [/p]
+ [big]Default Key Bindings:[/big][br]
+ Ctrl+B: Inserts the 'bold' mIRC text control character<br>
+ Ctrl+K: Inserts the 'color' mIRC text control character<br>
+ Ctrl+R: Inserts the 'reverse' mIRC text control character<br>
+ Ctrl+U: Inserts the 'underline' mIRC text control character<br>
+ Ctrl+O: Inserts the 'reset' mIRC text control character<br>
+ Ctrl+P: Inserts the 'non-crypt' (plain text) KVIrc control character used to disable encryption of the current text line<br>
+ Ctrl+C: Copies the selected text to clipboard<br>
+ Ctrl+X: Cuts the selected text<br>
+ Ctrl+V: Pastes the clipboard contents (same as middle mouse click)<br>
+ Ctrl+I: Inserts the 'icon' control code and pops up the icon list box<br>
+ Ctrl+A: Select all<br>
+ CursorUp: Moves backward in the command history<br>
+ CursorDown: Moves forward in the command history<br>
+ CursorRight: Moves the cursor to the right<br>
+ CursorLeft: Moves the cursor to the left :)<br>
+ Shift+CursorLeft: Moves the selection to the left<br>
+ Shift+RightCursor: Moves the selection to the right<br>
+ Ctrl+CursorLeft: Moves the cursor one word left<br>
+ Ctrl+CursorRight: Moves the cursor one word right<br>
+ Ctrl+Shift+CursorLeft: Moves the selection one word left<br>
+ Ctrl+Shift+CursorRight: Moves the selection one word right<br>
+ Tab: Nickname, function/command, or filename completion (see below)<br>
+ Shift+Tab: Hostmask or function/command completion (see below)<br>
+ Alt+&lt;numeric_sequence&gt;: Inserts the character by ASCII/Unicode code<br>
+ <example>
+ Alt+32: Inserts ASCII/Unicode character 32: ' ' (a space)
+ Alt+00032: Same as above :)
+ Alt+13: Inserts the Carriage Return (CR) control character
+ Alt+77: Inserts ASCII/Unicode character 77: 'M'
+ Alt+23566: Inserts Unicode character 23566 (an ideogram)
+ </example>
+ Also look at the <a href="shortcuts.kvihelp">global shortcuts</a> reference.<br>
+ If you drop a file on this widget, a <a href="parse.kvihelp">/PARSE &lt;filename&gt;</a> will be executed.<br>
+ You can enable word substitution in the preferences dialog.<br>
+ For example, if you choose to substitute "afaik" with "As far as I know",<br>
+ when you will type "afaik" somewhere in the command line, and then
+ press Space or Return, that word will be replaced with "As far as I know".<br>
+ Experiment with it :)<br>
+ The Tab key activates the completion of the current word.<br>
+ If a word is prefixed with a '/', it is treated as a command to be completed,
+ if it begins with '$', it is treated as a function or identifier to be completed,
+ otherwise it is treated as a nickname or filename to be completed.<br>
+ <example>
+ /ec&lt;Tab&gt; will produce /echo&lt;space&gt
+ /echo $loca&lt;Tab&gt; will produce /echo $localhost
+ </example>
+ Multiple matches are listed in the view window and the word is completed
+ to the common part of all the matches.<br>
+ <example>
+ $sel&lt;Tab;&gt; will find multiple matches and produce $selected
+ </example>
+ Experiment with that too :)
+*/
+
+
+
+KviInput::KviInput(KviWindow *par,KviUserListView * view)
+: QWidget(par,"input")
+{
+ QBoxLayout* pLayout=new QHBoxLayout(this);
+ pLayout->setAutoAdd(true);
+ pLayout->setDirection(QBoxLayout::RightToLeft);
+
+ pLayout->setMargin(0);
+ pLayout->setSpacing(0);
+
+ m_pWindow = par;
+ m_pMultiLineEditor = 0;
+
+ m_pHideToolsButton = new KviStyledToolButton(this,"hide_container_button");
+
+ m_pHideToolsButton->setUsesBigPixmap(false);
+ m_pHideToolsButton->setFixedWidth(10);
+
+ if(g_pIconManager->getBigIcon("kvi_horizontal_left.png"))
+ m_pHideToolsButton->setPixmap(*(g_pIconManager->getBigIcon("kvi_horizontal_left.png")));
+
+ connect(m_pHideToolsButton,SIGNAL(clicked()),this,SLOT(toggleToolButtons()));
+
+ m_pButtonContainer=new KviTalHBox(this);
+ m_pButtonContainer->setSpacing(0);
+
+#ifdef COMPILE_USE_QT4
+ m_pButtonContainer->setSizePolicy(QSizePolicy(QSizePolicy::Minimum,QSizePolicy::Preferred));
+// if(m_pButtonContainer->layout())
+// m_pButtonContainer->layout()->setSizeConstraint(QLayout::SetMinimumSize);
+#endif
+
+ m_pHistoryButton = new KviStyledToolButton(m_pButtonContainer,"historybutton");
+ m_pHistoryButton->setUsesBigPixmap(false);
+ //m_pHistoryButton->setUpdatesEnabled(TRUE); ???
+ QIconSet is1;
+ if(!KVI_OPTION_BOOL(KviOption_boolDisableInputHistory))//G&N mar 2005
+ {
+ is1.setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TIME)),QIconSet::Small);
+ m_pHistoryButton->setIconSet(is1);
+ KviTalToolTip::add(m_pHistoryButton,__tr2qs("Show History<br>&lt;Ctrl+PageUp&gt;"));
+ connect(m_pHistoryButton,SIGNAL(clicked()),this,SLOT(historyButtonClicked()));
+ }
+ else
+ {
+ is1.setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_QUITSPLIT)),QIconSet::Small);
+ m_pHistoryButton->setIconSet(is1);
+ KviTalToolTip::add(m_pHistoryButton,__tr2qs("Input History Disabled"));
+ }
+
+ m_pIconButton = new KviStyledToolButton(m_pButtonContainer,"iconbutton");
+ m_pIconButton->setUsesBigPixmap(false);
+ QIconSet is3;
+ is3.setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_BIGGRIN)),QIconSet::Small);
+ m_pIconButton->setIconSet(is3);
+ KviTalToolTip::add(m_pIconButton,__tr2qs("Show Icons Popup<br>&lt;Ctrl+I&gt;<br>See also /help texticons"));
+
+ connect(m_pIconButton,SIGNAL(clicked()),this,SLOT(iconButtonClicked()));
+
+
+ m_pCommandlineModeButton = new KviStyledToolButton(m_pButtonContainer,"commandlinemodebutton");
+ m_pCommandlineModeButton->setUsesBigPixmap(false);
+ m_pCommandlineModeButton->setToggleButton(true);
+ QIconSet is0;
+ is0.setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SAYSMILE)),QIconSet::Small,QIconSet::Normal,QIconSet::On);
+ is0.setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SAYKVS)),QIconSet::Small,QIconSet::Normal,QIconSet::Off);
+ m_pCommandlineModeButton->setIconSet(is0);
+ KviTalToolTip::add(m_pCommandlineModeButton,__tr2qs("User friendly commandline mode<br>See also /help commandline"));
+ if(KVI_OPTION_BOOL(KviOption_boolCommandlineInUserFriendlyModeByDefault))
+ m_pCommandlineModeButton->setOn(true);
+
+
+ m_pMultiEditorButton = new KviStyledToolButton(m_pButtonContainer,"multieditorbutton");
+ m_pMultiEditorButton->setToggleButton(true);
+ m_pMultiEditorButton->setUsesBigPixmap(false);
+ QIconSet is2;
+ is2.setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TERMINAL)),QIconSet::Small,QIconSet::Normal,QIconSet::On);
+ is2.setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TERMINAL)),QIconSet::Small,QIconSet::Normal,QIconSet::Off);
+ m_pMultiEditorButton->setIconSet(is2);
+ QString szTip = __tr2qs("Multi-line Editor<br>&lt;Alt+Backspace&gt;");
+ szTip += " - &lt;Ctrl+Backspace&gt;";
+ KviTalToolTip::add(m_pMultiEditorButton,szTip);
+
+ connect(m_pMultiEditorButton,SIGNAL(toggled(bool)),this,SLOT(multilineEditorButtonToggled(bool)));
+
+ m_pInputEditor = new KviInputEditor(this,par,view);
+ connect(m_pInputEditor,SIGNAL(enterPressed()),this,SLOT(inputEditorEnterPressed()));
+#ifdef COMPILE_USE_QT4
+ m_pInputEditor->setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Ignored));
+#else
+ m_pInputEditor->setSizePolicy(QSizePolicy(QSizePolicy::Ignored,QSizePolicy::Ignored));
+#endif
+
+
+#ifdef COMPILE_USE_QT4
+ m_pMultiEditorButton->setAutoRaise(true);
+ m_pCommandlineModeButton->setAutoRaise(true);
+ m_pIconButton->setAutoRaise(true);
+ m_pHistoryButton->setAutoRaise(true);
+ m_pHideToolsButton->setAutoRaise(true);
+#endif
+
+ pLayout->setStretchFactor(m_pInputEditor,100000);
+ pLayout->setStretchFactor(m_pButtonContainer,0);
+ pLayout->setStretchFactor(m_pHideToolsButton,0);
+}
+
+KviInput::~KviInput()
+{
+ if(m_pMultiLineEditor)KviScriptEditor::destroyInstance(m_pMultiLineEditor);
+}
+
+bool KviInput::isButtonsHidden()
+{
+ return m_pButtonContainer->isHidden();
+}
+
+void KviInput::setButtonsHidden(bool bHidden)
+{
+ if(!m_pHideToolsButton || !m_pButtonContainer) return;
+ if(bHidden==m_pButtonContainer->isHidden()) return;
+ m_pButtonContainer->setHidden(bHidden);
+ QPixmap* pix= bHidden ?
+ g_pIconManager->getBigIcon("kvi_horizontal_right.png") :
+ g_pIconManager->getBigIcon("kvi_horizontal_left.png");
+ if(pix)
+ m_pHideToolsButton->setPixmap(*pix);
+}
+
+void KviInput::toggleToolButtons()
+{
+ setButtonsHidden(!isButtonsHidden());
+}
+
+void KviInput::inputEditorEnterPressed()
+{
+ QString szText = m_pInputEditor->text();
+ KviUserInput::parse(szText,m_pWindow,QString::null,m_pCommandlineModeButton->isOn());
+ m_pInputEditor->setText("");
+}
+
+void KviInput::keyPressEvent(QKeyEvent *e)
+{
+ //debug("KviInput::keyPressEvent(key:%d,state:%d,text:%s)",e->key(),e->state(),e->text().isEmpty() ? "empty" : e->text().utf8().data());
+
+ if((e->state() & Qt::ControlButton) || (e->state() & Qt::AltButton) || (e->state() & Qt::MetaButton))
+ {
+ switch(e->key())
+ {
+ case Qt::Key_Backspace:
+ //if(m_pMultiLineEditor)
+ multilineEditorButtonToggled(!m_pMultiLineEditor);
+ break;
+ }
+ }
+
+ if(e->state() & Qt::ControlButton)
+ {
+ switch(e->key())
+ {
+ case Qt::Key_Enter:
+ case Qt::Key_Return:
+ {
+ if(m_pMultiLineEditor)
+ {
+ QString szText;
+ m_pMultiLineEditor->getText(szText);
+ if(szText.isEmpty())return;
+ if(KVI_OPTION_BOOL(KviOption_boolWarnAboutPastingMultipleLines))
+ {
+ if(szText.length() > 256)
+ {
+ if(szText[0] != '/')
+ {
+#ifdef COMPILE_USE_QT4
+ int nLines = szText.count('\n') + 1;
+#else
+ int nLines = szText.contains('\n') + 1;
+#endif
+ if(nLines > 15)
+ {
+ int nRet = QMessageBox::question(
+ this,
+ __tr2qs("Confirm Multiline Message"),
+ __tr2qs("You're about to send a message with %1 lines of text.<br><br>" \
+ "There is nothing wrong with it, this warning is<br>" \
+ "here to prevent you from accidentally sending<br>" \
+ "a really large message just because you didn't edit it<br>" \
+ "properly after pasting text from the clipboard.<br><br>" \
+ "Do you want the message to be sent?").arg(nLines),
+ __tr2qs("Yes, always"),
+ __tr2qs("Yes"),
+ __tr2qs("No"),
+ 1,2);
+ switch(nRet)
+ {
+ case 0:
+ KVI_OPTION_BOOL(KviOption_boolWarnAboutPastingMultipleLines) = false;
+ break;
+ case 2:
+ return;
+ break;
+ default: // also case 1
+ break;
+ }
+ }
+ }
+ }
+ }
+ KviUserInput::parse(szText,m_pWindow,QString::null,m_pCommandlineModeButton->isOn());
+ m_pMultiLineEditor->setText("");
+ }
+ }
+ break;
+ case Qt::Key_PageUp:
+ historyButtonClicked();
+ break;
+ }
+ }
+}
+
+void KviInput::multiLinePaste(const QString &text)
+{
+ if(!m_pMultiLineEditor)multilineEditorButtonToggled(true);
+ m_pMultiLineEditor->setText(text);
+}
+
+void KviInput::multilineEditorButtonToggled(bool bOn)
+{
+ if(m_pMultiLineEditor)
+ {
+ if(bOn)return;
+ KviScriptEditor::destroyInstance(m_pMultiLineEditor);
+ m_pMultiLineEditor = 0;
+ m_pInputEditor->show();
+ m_pWindow->childrenTreeChanged(0);
+ m_pInputEditor->setFocus();
+ m_pMultiEditorButton->setOn(false);
+ } else {
+ if(!bOn)return;
+ m_pMultiLineEditor = KviScriptEditor::createInstance(this);
+ QString szText = __tr2qs("<Ctrl+Return>; submits, <Alt+Backspace>; hides this editor");
+ // compatibility entry to avoid breaking translation just before a release... :)
+ szText.replace("Alt+Backspace","Ctrl+Backspace");
+ m_pMultiLineEditor->setFindText(szText);
+ m_pMultiLineEditor->setFindLineeditReadOnly(true);
+ m_pInputEditor->hide();
+ m_pMultiLineEditor->show();
+ m_pWindow->childrenTreeChanged(m_pMultiLineEditor);
+ m_pMultiLineEditor->setFocus();
+ m_pMultiEditorButton->setOn(true);
+ }
+}
+
+void KviInput::iconButtonClicked()
+{
+ if(!g_pTextIconWindow)g_pTextIconWindow = new KviTextIconWindow();
+ QPoint pnt = m_pIconButton->mapToGlobal(QPoint(m_pIconButton->width(),0));
+ g_pTextIconWindow->move(pnt.x()-g_pTextIconWindow->width(),pnt.y() - g_pTextIconWindow->height());
+ g_pTextIconWindow->popup(this,true);
+}
+
+void KviInput::historyButtonClicked()
+{
+ if(!g_pHistoryWindow)g_pHistoryWindow = new KviHistoryWindow();
+
+ QPoint pnt = mapToGlobal(QPoint(0,0));
+
+ g_pHistoryWindow->setGeometry(pnt.x(),pnt.y() - KVI_HISTORY_WIN_HEIGHT,width(),KVI_HISTORY_WIN_HEIGHT);
+ g_pHistoryWindow->popup(this);
+}
+
+#define BUTTON_WIDTH 20
+
+/*void KviInput::resizeEvent(QResizeEvent *e)
+{
+ //m_pButtonContainer
+ m_pInputEditor->setGeometry(0,0,m_pButtonContainer->isVisible() ? width() - (BUTTON_WIDTH * 4)-10 : width() - 10,height());
+ if(m_pMultiLineEditor)m_pMultiLineEditor->setGeometry(0,0,m_pButtonContainer->isVisible() ? width() - (BUTTON_WIDTH * 4)-10 : width() - 10,height());
+ if(m_pButtonContainer->isVisible()) m_pButtonContainer->setGeometry(width() - (BUTTON_WIDTH * 4)-10,0,BUTTON_WIDTH*4,height());
+
+ m_pHideToolsButton->setGeometry(width() - 10,0,10,height());
+
+ QWidget::resizeEvent(e);
+}*/
+
+void KviInput::setFocus()
+{
+ // redirect setFocus() to the right children
+ if(m_pMultiLineEditor)m_pMultiLineEditor->setFocus();
+ else m_pInputEditor->setFocus();
+}
+
+void KviInput::focusInEvent(QFocusEvent * e)
+{
+ // if we get a focus in event , redirect the focus to the children
+ if(m_pMultiLineEditor)m_pMultiLineEditor->setFocus();
+ else m_pInputEditor->setFocus();
+}
+
+
+int KviInput::heightHint() const
+{
+ return m_pMultiLineEditor ? 120 : m_pInputEditor->heightHint();
+}
+
+void KviInput::setText(const QString &text)
+{
+ // FIXME: Latin1 -> QString ?
+ if(m_pMultiLineEditor)m_pMultiLineEditor->setText(text);
+ else m_pInputEditor->setText(text);
+}
+
+void KviInput::insertChar(char c)
+{
+ m_pInputEditor->insertChar(c);
+}
+
+void KviInput::insertText(const QString& text)
+{
+ m_pInputEditor->insertText(text);
+}
+
+void KviInput::applyOptions()
+{
+ if(g_pLastFontMetrics) delete g_pLastFontMetrics;
+ g_pLastFontMetrics = 0;
+
+ if(KVI_OPTION_BOOL(KviOption_boolDisableInputHistory))//G&N mar 2005
+ {
+ QIconSet is1;
+ is1.setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_QUITSPLIT)),QIconSet::Small);
+ m_pHistoryButton->setIconSet(is1);
+ KviTalToolTip::add(m_pHistoryButton,__tr2qs("Input History Disabled"));
+ m_pHistoryButton->disconnect(SIGNAL(clicked()));
+ }
+
+ if(!KVI_OPTION_BOOL(KviOption_boolDisableInputHistory))
+ {
+ QIconSet is1;
+ is1.setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TIME)),QIconSet::Small);
+ m_pHistoryButton->setIconSet(is1);
+ KviTalToolTip::add(m_pHistoryButton,__tr2qs("Show History<br>&lt;Ctrl+PageUp&gt;"));
+ connect(m_pHistoryButton,SIGNAL(clicked()),this,SLOT(historyButtonClicked()));
+ }
+
+ m_pInputEditor->applyOptions();
+}
+
+void KviInput::setFocusProxy(QWidget *)
+{
+ /* do nothing */
+}
+
+//const QString & KviInput::text()
+QString KviInput::text()
+{
+ QString szText;
+ if(m_pMultiLineEditor)
+ m_pMultiLineEditor->getText(szText);
+ else
+ szText=m_pInputEditor->text();
+ return szText;
+}
+
+#include "kvi_input.moc"
diff --git a/src/kvirc/ui/kvi_input.h b/src/kvirc/ui/kvi_input.h
new file mode 100644
index 00000000..56ec5070
--- /dev/null
+++ b/src/kvirc/ui/kvi_input.h
@@ -0,0 +1,262 @@
+#ifndef _KVI_INPUT_H_
+#define _KVI_INPUT_H_
+
+//=============================================================================
+//
+// File : kvi_input.h
+// Creation date : Sun Jan 3 1999 23:04:10 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+
+#include <qwidget.h>
+#include "kvi_tal_hbox.h"
+#include <qpixmap.h>
+#include "kvi_pointerlist.h"
+
+#include "kvi_string.h"
+
+//#include <qdialog.h>
+#include <qtoolbutton.h>
+
+class KviUserListView;
+class KviWindow;
+class KviInput;
+class KviTalHBox;
+class QFontMetrics;
+
+// Default maximum buffer size.
+#define KVI_INPUT_MAX_BUFFER_SIZE 400
+// Border , better do not touch this
+#define KVI_INPUT_BORDER 1
+#define KVI_INPUT_MARGIN 2
+// Cursor blink time...just don't set it to a value less than 100 if
+// you don't want to be lagged by your cursors :)
+#define KVI_INPUT_BLINK_TIME 800
+// Drag scroll speed...(smaller values = faster)
+#define KVI_INPUT_DRAG_TIMEOUT 80
+// Maximum entries in the history buffer
+#define KVI_INPUT_MAX_HISTORY_ENTRIES 100
+
+class KVIRC_API KviInputHistory
+{
+public:
+ KviInputHistory();
+ ~KviInputHistory();
+protected:
+ KviPointerList<QString> * m_pStringList;
+public:
+ void add(QString * s);
+ KviPointerList<QString> * list(){ return m_pStringList; };
+ void save(const char * filename);
+ void load(const char * filename);
+};
+
+#ifdef COMPILE_USE_QT4
+ #define QIMEvent QInputMethodEvent
+#endif
+
+class KVIRC_API KviInputEditor : public QFrame
+{
+ // friend class KviUserParser;
+ //Q_PROPERTY( int KviProperty_FocusOwner READ heightHint )
+ Q_PROPERTY( int TransparencyCapable READ heightHint )
+
+ Q_OBJECT
+public:
+ KviInputEditor(QWidget * par,KviWindow *wnd,KviUserListView * view = 0);
+ ~KviInputEditor();
+protected:
+
+ QString m_szTextBuffer;
+ int m_iCursorPosition;
+ int m_iFirstVisibleChar;
+ int m_iSelectionBegin;
+ int m_iSelectionEnd;
+ int m_iMaxBufferSize;
+ bool m_bSpSlowFlag; // <-- what is this ?
+
+ // members for supporting input methods
+ QString m_szIMText;
+ int m_iIMStart;
+ int m_iIMLength;
+ int m_iIMSelectionBegin;
+ int m_iIMSelectionLength;
+ bool m_bIMComposing;
+
+ unsigned char m_iCurFore;
+ unsigned char m_iCurBack;
+ bool m_bCurBold;
+ bool m_bCurUnderline;
+
+ int m_iBlockLen;
+ int m_iBlockWidth;
+ bool m_bControlBlock;
+
+ bool m_bCursorOn;
+
+ int m_iCursorTimer;
+ int m_iDragTimer;
+
+ int m_iLastCursorXPosition;
+ int m_iSelectionAnchorChar;
+
+ // History stuff
+ KviPointerList<QString> * m_pHistory;
+ int m_iCurHistoryIdx;
+
+ KviStr m_szSaveTextBuffer;
+
+ // Nick completion
+ KviUserListView * m_pUserListView;
+ QString m_szLastCompletedNick;
+ QString m_szLastCompletionBuffer;
+ int m_iLastCompletionCursorPosition;
+ int m_iLastCompletionCursorXPosition;
+ int m_iLastCompletionFirstVisibleChar;
+ bool m_bLastCompletionFinished;
+
+ bool m_bUpdatesEnabled;
+ KviStr m_szAltKeyCode;
+ KviWindow * m_pKviWindow;
+ QWidget * m_pInputParent;
+ KviTalPopupMenu * m_pIconMenu;
+ bool m_bReadOnly;
+public:
+ int heightHint() const;
+ virtual QSize sizeHint() const;
+ void setText(const QString text);
+ QString text() { return m_szTextBuffer; };
+ void insertChar(QChar c);
+ void insertText(const QString &text);
+ void applyOptions();
+ void setMaxBufferSize(int size) { m_iMaxBufferSize = size; };
+ void setReadOnly(bool bReadOnly) {m_bReadOnly=bReadOnly; };
+ bool readOnly() {return m_bReadOnly; };
+private:
+ void replaceWordBeforeCursor(const QString &word,const QString &replacement,bool bRepaint = true);
+ int replaceSegment(int start, int length, const QString &string);
+ void getWordBeforeCursor(QString &buffer,bool * bIsFirstWordInLine);
+ void runUpToTheFirstVisibleChar();
+ void extractNextBlock(int idx,QFontMetrics & fm,int curXPos,int maxXPos);
+ void drawTextBlock(QPainter *pa,QFontMetrics & fm,int curXPos,int textBaseline,int idx,int len,bool bSelected=FALSE);
+ QChar getSubstituteChar(unsigned short control_code);
+ void moveRightFirstVisibleCharToShowCursor();
+ void repaintWithCursorOn();
+ void selectOneChar(int pos);
+ int charIndexFromXPosition(int xPos);
+ int xPositionFromCharIndex(QFontMetrics& fm,int chIdx,bool bContentsCoords=FALSE);
+ int xPositionFromCharIndex(int chIdx,bool bContentsCoords=FALSE);
+ void killDragTimer();
+ void handleDragSelection();
+ void end();
+ void home();
+ bool hasSelection();
+ void moveCursorTo(int idx,bool bRepaint = true);
+ void returnPressed(bool bRepaint = true);
+ void completion(bool bShift);
+ void standardNickCompletion(bool bAddMask,QString &word,bool bFirstWordInLine);
+ void recalcFontMetrics(QFontMetrics * pFm);
+ void internalCursorRight(bool bShift);
+ void internalCursorLeft(bool bShift);
+public slots:
+ void iconPopupActivated(int id);
+ void copyToSelection(bool bDonNotCopyToClipboard=true);
+ void copyToClipboard();
+ void removeSelected();
+ void cut();
+ void pasteClipboardWithConfirmation();
+ void pasteSelectionWithConfirmation();
+ void pasteSlow();
+ void stopPasteSlow();
+ void pasteFile();
+ void selectAll();
+ void clear();
+signals:
+ void escapePressed();
+ void enterPressed();
+protected:
+ virtual void drawContents(QPainter *);
+ //virtual void resizeEvent(QResizeEvent *);
+ virtual void timerEvent(QTimerEvent *e);
+ virtual void focusInEvent(QFocusEvent *);
+ virtual void focusOutEvent(QFocusEvent *);
+ virtual void keyPressEvent(QKeyEvent *e);
+ virtual void keyReleaseEvent(QKeyEvent *e);
+ virtual void mousePressEvent(QMouseEvent *e);
+ virtual void mouseReleaseEvent(QMouseEvent *);
+ virtual void dragEnterEvent(QDragEnterEvent *e);
+ virtual void dropEvent(QDropEvent *e);
+ virtual void imStartEvent(QIMEvent *e);
+ virtual void imComposeEvent(QIMEvent *e);
+ virtual void imEndEvent(QIMEvent *e);
+#ifdef COMPILE_USE_QT4
+ virtual void paintEvent(QPaintEvent *e);
+#endif
+};
+
+class KviScriptEditor;
+
+class KVIRC_API KviInput : public QWidget
+{
+ Q_OBJECT
+public:
+ KviInput(KviWindow *par,KviUserListView * view = 0);
+ ~KviInput();
+public:
+ KviWindow * m_pWindow;
+ KviInputEditor * m_pInputEditor;
+ KviScriptEditor * m_pMultiLineEditor;
+ KviTalHBox * m_pButtonContainer;
+ QToolButton * m_pMultiEditorButton;
+ QToolButton * m_pHistoryButton;
+ QToolButton * m_pIconButton;
+ QToolButton * m_pCommandlineModeButton;
+ QToolButton * m_pHideToolsButton;
+protected:
+// virtual void resizeEvent(QResizeEvent * e);
+ virtual void focusInEvent(QFocusEvent * e);
+ virtual void setFocusProxy(QWidget * w);
+ virtual void keyPressEvent(QKeyEvent * e);
+public slots:
+ void multilineEditorButtonToggled(bool bOn);
+ void historyButtonClicked();
+ void iconButtonClicked();
+ void inputEditorEnterPressed();
+ void toggleToolButtons();
+public:
+ virtual void setFocus();
+ void multiLinePaste(const QString &text);
+ bool isUserFriendly() { return m_pCommandlineModeButton->isOn(); };
+ void setUserFriendly(bool bSet) { m_pCommandlineModeButton->setOn(bSet); };
+ int heightHint() const;
+ void setText(const QString &text);
+ void insertChar(char c);
+ void insertText(const QString & text);
+ void applyOptions();
+ bool isButtonsHidden();
+ void setButtonsHidden(bool bHidden);
+ //const QString & text();
+ QString text();
+};
+
+#endif //_KVI_INPUT_H_
diff --git a/src/kvirc/ui/kvi_ipeditor.cpp b/src/kvirc/ui/kvi_ipeditor.cpp
new file mode 100644
index 00000000..13291c24
--- /dev/null
+++ b/src/kvirc/ui/kvi_ipeditor.cpp
@@ -0,0 +1,453 @@
+//
+// File : kvi_ipeditor.cpp
+// Creation date : Wed Jun 12 2000 14:16:49 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#define __KVIRC__
+#include "kvi_ipeditor.h"
+#include "kvi_qcstring.h"
+
+#include <qapplication.h>
+#include <qlineedit.h>
+#include <qlabel.h>
+#include <qframe.h>
+#include <ctype.h>
+#include <qevent.h>
+
+
+// FIXME: #warning "THIS COULD GO INTO libkvioptions ?"
+
+KviIpEditor::KviIpEditor(QWidget * parent,AddressType addrType,const QString &ipAddr,const char *name)
+:QFrame(parent,name)
+{
+
+ for(int i=0;i<7;i++)
+ {
+ m_pEdit[i] = 0;
+ m_pLabel[i] = 0;
+ }
+ m_pEdit[7] = 0;
+ setFrameStyle(QFrame::Sunken|QFrame::StyledPanel);
+
+#ifdef COMPILE_USE_QT4
+ setBackgroundRole(QPalette::Base);
+#else
+ setBackgroundMode(QWidget::PaletteBase);
+#endif
+
+ setAddressType(addrType);
+
+ setAddress(ipAddr);
+}
+
+KviIpEditor::~KviIpEditor()
+{
+
+}
+
+void KviIpEditor::setEnabled(bool bEnabled)
+{
+ QFrame::setEnabled(bEnabled);
+ for(int i=0;i<8;i++)
+ {
+ if(m_pEdit[i])m_pEdit[i]->setEnabled(bEnabled);
+ if(i<7)if(m_pLabel[i])
+ {
+ // Is this the right way ?
+#ifdef COMPILE_USE_QT4
+ m_pLabel[i]->setBackgroundRole(isEnabled() ? QPalette::Base : QPalette::Background);
+#else
+ m_pLabel[i]->setBackgroundMode(isEnabled() ? QWidget::PaletteBase : QWidget::PaletteBackground);
+#endif
+ m_pLabel[i]->setEnabled(bEnabled);
+ }
+ }
+#ifdef COMPILE_USE_QT4
+ setBackgroundRole(isEnabled() ? QPalette::Base : QPalette::Background);
+#else
+ setBackgroundMode(isEnabled() ? QWidget::PaletteBase : QWidget::PaletteBackground);
+#endif
+}
+
+void KviIpEditor::setAddressType(AddressType addrType)
+{
+ if((addrType != IpV4) && (addrType != IpV6))m_addrType = IpV4;
+ else m_addrType = addrType;
+ recreateChildren();
+}
+
+KviIpEditor::AddressType KviIpEditor::addressType() const
+{
+ return m_addrType;
+}
+
+bool KviIpEditor::hasEmptyFields() const
+{
+ bool bHasEF = false;
+ for(int i=0;i<8;i++)
+ {
+ if(m_pEdit[i])
+ {
+ if(m_pEdit[i]->text().isEmpty())bHasEF = true;
+ }
+ }
+ return bHasEF;
+}
+
+void KviIpEditor::clear()
+{
+ if(!m_pEdit[0])return;
+ int maxW = (m_addrType == IpV4) ? 4 : 8;
+ for(int i=0;i< maxW ;i++)
+ {
+ m_pEdit[i]->setText("");
+ }
+}
+
+bool KviIpEditor::setAddress(const QString &ipAddr)
+{
+ // FIXME We could check if the addres
+ // is valid before effectively setting the fields
+ clear();
+
+ KviQCString ip = ipAddr.ascii(); // ip addresses are digits & latin letters abcdef (IpV6)
+
+ ip = ip.stripWhiteSpace();
+ const char * c = ip.data();
+
+ if(!c)return false; // huh ?....(should never happen at this point)
+
+ if(m_addrType == IpV4)
+ {
+ for(int i=0;i<4;i++)
+ {
+ const char *anchor = c;
+ while(isdigit(*c))c++;
+ if(c == anchor)return false; // Invalid empty field
+ KviQCString str(anchor,(c - anchor) + 1);
+ bool bOk;
+ int num = str.toInt(&bOk);
+ if(!bOk)return false; // should never happen , but just to be sure
+ if((num < 0) || (num > 255))return false; // Invalid field
+ m_pEdit[i]->setText(str.data());
+ if(i < 3){
+ if(*c == '.')c++;
+ else return false; // missing separator
+ }
+ }
+ } else {
+ for(int i=0;i<8;i++)
+ {
+ const char *anchor = c;
+ while(isdigit(*c) || ((tolower(*c) >= 'a') && (tolower(*c) <= 'f')) || ((tolower(*c) >= 'A') && (tolower(*c) <= 'F')))c++;
+ KviQCString str(anchor,(c - anchor) + 1);
+ if(str.length() > 4)return false; // Too long
+ m_pEdit[i]->setText(str.data());
+ if(i < 7){
+ if(*c == ':')c++;
+ else return false; // missing separator
+ }
+ }
+ }
+ if(*c)return false; // trailing garbage (we could avoid this)
+ return true;
+}
+
+QString KviIpEditor::address() const
+{
+ QString ret;
+
+ if(m_addrType == IpV6)
+ {
+ for(int i=0;i<8;i++)
+ {
+ ret.append(m_pEdit[i]->text());
+ if(i < 7)ret.append(":");
+ }
+ } else {
+ for(int i=0;i<4;i++)
+ {
+ QString tmp = m_pEdit[i]->text();
+ bool bOk;
+ int num = tmp.toInt(&bOk);
+ if(!bOk)num = 0;
+ tmp.setNum(num);
+ ret.append(tmp);
+ if(i < 3)ret.append(".");
+ }
+ }
+ return ret;
+}
+
+void KviIpEditor::recreateChildren()
+{
+ // A bit slow , but compact
+ bool bIpV4 = (m_addrType == IpV4);
+ int max = bIpV4 ? 4 : 8;
+ QFontMetrics fm(font());
+ //int minWidth = fm.width(bIpV4 ? "000" : "AAAA") + 4;
+ for(int i=0;i<max;i++)
+ {
+ if(!m_pEdit[i]){
+ m_pEdit[i] = new QLineEdit(this);
+ m_pEdit[i]->installEventFilter(this);
+ m_pEdit[i]->setFrame(false);
+ m_pEdit[i]->setAlignment(Qt::AlignCenter);
+ }
+ //m_pEdit[i]->setMinimumWidth(minWidth);
+ m_pEdit[i]->setMaxLength(bIpV4 ? 3 : 4);
+ m_pEdit[i]->show();
+ if(i < (max - 1))
+ {
+ if(!m_pLabel[i])m_pLabel[i] = new QLabel(this);
+ m_pLabel[i]->setText(bIpV4 ? "." : ":");
+ m_pLabel[i]->show();
+ // Is this the right way ? setBackgroundMode seems to not work well
+#ifdef COMPILE_USE_QT4
+ m_pLabel[i]->setBackgroundRole(isEnabled() ? QPalette::Base : QPalette::Background);
+#else
+ m_pLabel[i]->setBackgroundMode(isEnabled() ? QWidget::PaletteBase : QWidget::PaletteBackground);
+#endif
+ }
+ }
+ // Kill the unused widgets , if any
+ if(bIpV4)
+ {
+ for(int i=4;i<8;i++)
+ {
+ if(m_pEdit[i])
+ {
+ delete m_pEdit[i];
+ m_pEdit[i] = 0;
+ }
+ if(m_pLabel[i - 1])
+ {
+ delete m_pLabel[i - 1];
+ m_pLabel[i - 1] = 0;
+ }
+ }
+ }
+ //setMinimumWidth(4 + (max * minWidth) + ((max - 1) * m_pLabel[0]->sizeHint().width()));
+ setMinimumHeight(m_pLabel[0]->sizeHint().height() + 4);
+ resizeEvent(0);
+}
+
+bool KviIpEditor::eventFilter(QObject * o,QEvent *e)
+{
+ if(o->inherits("QLineEdit"))
+ {
+ if(e->type() == QEvent::KeyPress)
+ {
+ QString s;
+ // find the editor
+ int edIdx = -1;
+ for(int i=0;i<8;i++)
+ {
+ if(m_pEdit[i] == o)
+ {
+ edIdx = i;
+ break;
+ }
+ }
+ if(edIdx == -1)return QFrame::eventFilter(o,e); // user added QLineEdit child ?
+ int edMax = (m_addrType == IpV4) ? 3 : 7;
+ int cursorPos = ((QLineEdit *)o)->cursorPosition();
+ switch(((QKeyEvent *)e)->key())
+ {
+ case Qt::Key_Right:
+ s = ((QLineEdit *)o)->text();
+ if(((unsigned int)cursorPos) == s.length())
+ {
+ if(edIdx < edMax)
+ {
+ m_pEdit[++edIdx]->setCursorPosition(0);
+ m_pEdit[edIdx]->setFocus();
+ return true;
+ }
+ }
+ break;
+ case Qt::Key_Left:
+ case Qt::Key_Backspace:
+ if(cursorPos == 0)
+ {
+ if(edIdx > 0)
+ {
+ s = m_pEdit[--edIdx]->text();
+ m_pEdit[edIdx]->setCursorPosition(s.length());
+ m_pEdit[edIdx]->setFocus();
+ return true;
+ }
+ }
+ return QFrame::eventFilter(o,e);
+ break;
+ case Qt::Key_End:
+ case Qt::Key_Home:
+ case Qt::Key_Delete:
+ case Qt::Key_Tab:
+ return QFrame::eventFilter(o,e);
+ break;
+ default:
+ // a normal key (this part substitutes a QValidator)
+ const char c = tolower(((QKeyEvent *)e)->ascii());
+ if(m_addrType == IpV4)
+ {
+ if((c >= '0') && (c <= '9'))
+ {
+#if QT_VERSION >= 300
+ if(m_pEdit[edIdx]->hasSelectedText())m_pEdit[edIdx]->cut();
+#else
+ if(m_pEdit[edIdx]->hasMarkedText())m_pEdit[edIdx]->cut();
+#endif
+ cursorPos = m_pEdit[edIdx]->cursorPosition();
+ s = m_pEdit[edIdx]->text();
+ s.insert(cursorPos,c);
+ bool bOk = false;
+ int num = s.toInt(&bOk);
+ if(!bOk)return true; //should never happen , but just to be sure
+ if((num < 0) || (num > 255))return true; //invalid field
+ m_pEdit[edIdx]->setText(s);
+ if(num > 25)
+ {
+ // The focus goes to the next editor
+ if(edIdx < edMax)
+ {
+ m_pEdit[++edIdx]->setFocus();
+ m_pEdit[edIdx]->selectAll();
+ //m_pEdit[edIdx]->setCursorPosition(0);
+ return true;
+ }
+ }
+#if QT_VERSION >= 300
+ m_pEdit[edIdx]->cursorForward(false);
+#else
+ m_pEdit[edIdx]->cursorRight(false);
+#endif
+ } else {
+ if((c == '.') && (edIdx < edMax))
+ {
+#if QT_VERSION >= 300
+ if(!m_pEdit[edIdx]->hasSelectedText())
+#else
+ if(!m_pEdit[edIdx]->hasMarkedText())
+#endif
+ {
+ m_pEdit[++edIdx]->setFocus();
+ m_pEdit[edIdx]->selectAll();
+ }
+ }
+ }
+ } else {
+ if( ((c >= '0') && (c <= '9')) || ((c >= 'a') && (c <= 'f')) )
+ {
+#if QT_VERSION >= 300
+ if(m_pEdit[edIdx]->hasSelectedText())m_pEdit[edIdx]->cut();
+#else
+ if(m_pEdit[edIdx]->hasMarkedText())m_pEdit[edIdx]->cut();
+#endif
+ cursorPos = m_pEdit[edIdx]->cursorPosition();
+ s = m_pEdit[edIdx]->text();
+
+ if(s.length() == 4)
+ {
+ if((cursorPos == 4) && (edIdx < edMax))
+ {
+ // the char goes in the next editor
+ s = c;
+ m_pEdit[++edIdx]->setText(s);
+ m_pEdit[edIdx]->end(false);
+ m_pEdit[edIdx]->setFocus();
+ } // else either no space or invalid place in the string
+ } else {
+ // ok .. can insert
+ s.insert(cursorPos,c);
+ m_pEdit[edIdx]->setText(s);
+ if((s.length() == 4) && (edIdx < edMax))
+ {
+ // the focus now goes to the next editor
+ m_pEdit[++edIdx]->setFocus();
+ m_pEdit[edIdx]->selectAll();
+ //m_pEdit[edIdx]->setCursorPosition(0);
+ } else {
+#if QT_VERSION >= 300
+ m_pEdit[edIdx]->cursorForward(false);
+#else
+ m_pEdit[edIdx]->cursorRight(false);
+#endif
+ }
+ }
+ } else {
+ if((c == ':') && (edIdx < edMax))
+ {
+#if QT_VERSION >= 300
+ if(!m_pEdit[edIdx]->hasSelectedText())
+#else
+ if(!m_pEdit[edIdx]->hasMarkedText())
+#endif
+ {
+ m_pEdit[++edIdx]->setFocus();
+ m_pEdit[edIdx]->selectAll();
+ }
+ }
+ }
+ }
+ return true;
+ break;
+ }
+ }
+ }
+ return QFrame::eventFilter(o,e);
+}
+
+void KviIpEditor::resizeEvent(QResizeEvent *e)
+{
+ if(m_pEdit[0])
+ {
+ int maxW = (m_addrType == IpV4) ? 4 : 8;
+ int labHint = m_pLabel[0]->sizeHint().width();
+ int hghHint = height() - 4;
+ int ediWdth = ((width() - 4) - ((maxW - 1) * labHint)) / maxW;
+ int curX = 2;
+ for(int i=0;i<maxW;i++)
+ {
+ if(i > 0)
+ {
+ m_pLabel[i - 1]->setGeometry(curX,2,labHint,hghHint);
+ curX += labHint;
+ }
+ m_pEdit[i]->setGeometry(curX,2,ediWdth,hghHint);
+ curX += ediWdth;
+ }
+ }
+ if(e)QFrame::resizeEvent(e);
+}
+
+QSize KviIpEditor::sizeHint()
+{
+ if(m_pEdit[0])
+ {
+ int labHint = m_pLabel[0]->sizeHint().width();
+ int hghHint = m_pEdit[0]->sizeHint().height();
+ int ediHint = m_pEdit[0]->sizeHint().width();
+ if(m_addrType == IpV4)return QSize((labHint * 3) + (ediHint * 4) + 4,hghHint + 4);
+ else return QSize((labHint * 7) + (ediHint * 8) + 4,hghHint + 4);
+ } else return QFrame::sizeHint();
+}
+
+
+#include "kvi_ipeditor.moc"
diff --git a/src/kvirc/ui/kvi_ipeditor.h b/src/kvirc/ui/kvi_ipeditor.h
new file mode 100644
index 00000000..04574e61
--- /dev/null
+++ b/src/kvirc/ui/kvi_ipeditor.h
@@ -0,0 +1,62 @@
+#ifndef _KVI_IPEDITOR_H_
+#define _KVI_IPEDITOR_H_
+
+//
+// File : kvi_ipeditor.h
+// Creation date : Wed Jun 12 2000 14:16:02 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+
+#include <qwidget.h>
+#include <qstring.h>
+#include <qframe.h>
+
+class QLineEdit;
+class QLabel;
+
+class KVIRC_API KviIpEditor : public QFrame
+{
+ Q_OBJECT
+public:
+ enum AddressType { IpV4 , IpV6 };
+ KviIpEditor(QWidget * parent,AddressType = IpV4,const QString &ipAddr = QString::null,const char *name = 0);
+ ~KviIpEditor();
+private:
+ QLabel * m_pLabel[7];
+ QLineEdit * m_pEdit[8];
+ AddressType m_addrType;
+public:
+ bool setAddress(const QString &ipAddr);
+ QString address() const;
+ void setAddressType(AddressType addrType);
+ AddressType addressType() const;
+ bool hasEmptyFields() const;
+ void clear();
+ virtual void setEnabled(bool bEnabled);
+protected:
+ virtual bool eventFilter(QObject * o,QEvent *e);
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual QSize sizeHint();
+private:
+ void recreateChildren();
+};
+
+#endif //_KVI_IPEDITOR_H_
diff --git a/src/kvirc/ui/kvi_irctoolbar.cpp b/src/kvirc/ui/kvi_irctoolbar.cpp
new file mode 100644
index 00000000..a7e45f3f
--- /dev/null
+++ b/src/kvirc/ui/kvi_irctoolbar.cpp
@@ -0,0 +1,441 @@
+//=============================================================================
+//
+// File : kvi_irctoolbar.cpp
+// Creation date : Thu Oct 29 2000 14:13:13 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+#include "kvi_irctoolbar.h"
+#include "kvi_console.h"
+#include "kvi_frame.h"
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+#include "kvi_settings.h"
+#include "kvi_options.h"
+#include "kvi_frame.h"
+#include "kvi_app.h"
+#include "kvi_dynamictooltip.h"
+#include "kvi_ircurl.h"
+#include "kvi_internalcmd.h"
+#include "kvi_pointerlist.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectionuserinfo.h"
+#include "kvi_irccontext.h"
+#include "kvi_lagmeter.h"
+
+#include <qstyle.h>
+#include <qpainter.h>
+#include "kvi_tal_popupmenu.h"
+#include <qlayout.h>
+
+#ifdef COMPILE_USE_QT4
+ #include <qevent.h>
+#endif
+
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ extern QPixmap * g_pShadedChildGlobalDesktopBackground;
+#endif
+
+static QPixmap * g_pIccMemBuffer = 0;
+static KviPointerList<KviToolBarGraphicalApplet> * g_pToolBarGraphicalAppletList = 0;
+
+KviToolBarGraphicalApplet::KviToolBarGraphicalApplet(QWidget * par,const char * name)
+: QToolButton(par,name)
+{
+ if(!g_pToolBarGraphicalAppletList)
+ {
+ g_pToolBarGraphicalAppletList = new KviPointerList<KviToolBarGraphicalApplet>();
+ g_pToolBarGraphicalAppletList->setAutoDelete(false);
+ g_pIccMemBuffer = new QPixmap(1,1);
+ }
+
+ g_pToolBarGraphicalAppletList->append(this);
+#ifdef COMPILE_USE_QT4
+ setAutoFillBackground(false);
+#else
+ setBackgroundMode(QWidget::NoBackground);
+#endif
+
+ setMouseTracking(true);
+ m_bResizeMode = false;
+
+ m_sizeHint = QSize(180,32);
+ m_bSizeLoaded = false;
+}
+
+unsigned int KviToolBarGraphicalApplet::loadAppletWidth()
+{
+ if(KVI_OPTION_UINT(KviOption_uintIrcContextAppletWidth) < 32)
+ KVI_OPTION_UINT(KviOption_uintIrcContextAppletWidth) = 32;
+ return KVI_OPTION_UINT(KviOption_uintIrcContextAppletWidth);
+}
+
+void KviToolBarGraphicalApplet::saveAppletWidth(unsigned int uWidth)
+{
+ KVI_OPTION_UINT(KviOption_uintIrcContextAppletWidth) = uWidth;
+}
+
+void KviToolBarGraphicalApplet::setupSizeHint()
+{
+ m_sizeHint = QSize(loadAppletWidth(),22);
+ m_bSizeLoaded = true;
+}
+
+QSize KviToolBarGraphicalApplet::sizeHint() const
+{
+ // forget constness :(
+ KviToolBarGraphicalApplet * that = (KviToolBarGraphicalApplet *)this;
+ if(!m_bSizeLoaded)that->setupSizeHint();
+ return m_sizeHint;
+}
+
+/*
+toolbar.define(default)
+{
+ applet(thisandthat);
+ applet(thisandthat);
+ applet(thisandthat);
+ applet(thisandthat);
+}
+*/
+
+
+void KviToolBarGraphicalApplet::mouseMoveEvent(QMouseEvent * e)
+{
+ if(e->state() & Qt::LeftButton)
+ {
+ if(m_bResizeMode)
+ {
+ int w = e->pos().x();
+ if(w < 32)w = 32;
+ if(w > 480)w = 480;
+ m_sizeHint = QSize(w,22);
+ resize(w,height());
+ g_pApp->postEvent(parentWidget(),new QEvent(QEvent::LayoutHint));
+ }
+ } else {
+ if(e->pos().x() > width() - 4)
+ setCursor(Qt::sizeHorCursor);
+ else
+ setCursor(Qt::arrowCursor);
+ }
+}
+
+void KviToolBarGraphicalApplet::mousePressEvent(QMouseEvent * e)
+{
+ if(e->button() & Qt::LeftButton)
+ {
+ m_bResizeMode = (e->pos().x() > (width() - 4));
+ }
+}
+
+void KviToolBarGraphicalApplet::mouseReleaseEvent(QMouseEvent * e)
+{
+ m_bResizeMode = false;
+}
+
+
+KviToolBarGraphicalApplet::~KviToolBarGraphicalApplet()
+{
+ saveAppletWidth(m_sizeHint.width());
+ g_pToolBarGraphicalAppletList->removeRef(this);
+ if(g_pToolBarGraphicalAppletList->isEmpty())
+ {
+ delete g_pToolBarGraphicalAppletList;
+ g_pToolBarGraphicalAppletList = 0;
+ delete g_pIccMemBuffer;
+ g_pIccMemBuffer = 0;
+ } else {
+ // resize the mem buffer to match the maximum width / height of the applets
+ resizeMemBuffer();
+ }
+}
+
+void KviToolBarGraphicalApplet::resizeMemBuffer()
+{
+ int uMaxW = 0;
+ int uMaxH = 0;
+ for(KviToolBarGraphicalApplet * a = g_pToolBarGraphicalAppletList->first();a;a = g_pToolBarGraphicalAppletList->next())
+ {
+ if(uMaxW < a->width())uMaxW = a->width();
+ if(uMaxH < a->height())uMaxH = a->height();
+ }
+ g_pIccMemBuffer->resize(uMaxW,uMaxH);
+}
+
+void KviToolBarGraphicalApplet::paintEvent(QPaintEvent *e)
+{
+ if(!isVisible())return;
+
+ QPainter pa(g_pIccMemBuffer);
+
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ if(g_pShadedChildGlobalDesktopBackground)
+ {
+ QPoint pnt = mapToGlobal(QPoint(0,0));
+ pa.drawTiledPixmap(e->rect().left(),e->rect().top(),e->rect().width(),e->rect().height(),*g_pShadedChildGlobalDesktopBackground,pnt.x(),pnt.y());
+ } else {
+#endif
+ if(KVI_OPTION_PIXMAP(KviOption_pixmapIrcToolBarAppletBackground).pixmap())
+ {
+ QPoint pnt = mapToGlobal(QPoint(0,0));
+ pa.drawTiledPixmap(e->rect().left(),e->rect().top(),e->rect().width(),e->rect().height(),*(KVI_OPTION_PIXMAP(KviOption_pixmapIrcToolBarAppletBackground).pixmap()),pnt.x(),pnt.y());
+ } else {
+ pa.fillRect(e->rect().left(),e->rect().top(),e->rect().width(),e->rect().height(),KVI_OPTION_COLOR(KviOption_colorIrcToolBarAppletBackground));
+ }
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ }
+#endif
+
+ drawContents(&pa);
+
+ //Need to draw the sunken rect around the view now...
+ pa.setPen(colorGroup().dark());
+ pa.drawLine(0,0,width(),0);
+ pa.drawLine(0,0,0,width());
+ pa.setPen(colorGroup().light());
+ pa.drawLine(1,height() - 1,width() - 1,height() - 1);
+ pa.drawLine(width() - 1,1,width() - 1,height());
+
+#ifdef COMPILE_USE_QT4
+ QPainter qt4SucksBecauseItNeedsAnAdditionalQPainter(this);
+ qt4SucksBecauseItNeedsAnAdditionalQPainter.drawPixmap(e->rect().left(),e->rect().top(),e->rect().width(),e->rect().height(),*g_pIccMemBuffer,e->rect().left(),e->rect().top(),e->rect().width(),e->rect().height());
+#else
+ bitBlt(this,e->rect().left(),e->rect().top(),g_pIccMemBuffer,e->rect().left(),e->rect().top(),e->rect().width(),e->rect().height(),Qt::CopyROP);
+#endif
+}
+
+void KviToolBarGraphicalApplet::drawContents(QPainter *)
+{
+ // nothing here
+}
+
+void KviToolBarGraphicalApplet::resizeEvent(QResizeEvent *e)
+{
+ unsigned int uBufferW = g_pIccMemBuffer->width();
+ unsigned int uBufferH = g_pIccMemBuffer->height();
+ unsigned int uW = width();
+ unsigned int uH = height();
+
+ if((uBufferW != uW) || (uBufferH != uH))
+ {
+ if((uBufferW < uW) && (uBufferH < uH))g_pIccMemBuffer->resize(uW,uH);
+ else resizeMemBuffer();
+ }
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// KviIrcContextDisplay
+//
+// Main applet of all irc contexts
+// Displays the server connection status, server name
+// nickname, user mode and the graphical indication of the context
+//
+//////////////////////////////////////////////////////////////////////////////
+
+KviIrcContextDisplay::KviIrcContextDisplay(QWidget * par,const char * name)
+: KviToolBarGraphicalApplet(par,name)
+{
+ KviDynamicToolTip * tip = new KviDynamicToolTip(this);
+ connect(tip,SIGNAL(tipRequest(KviDynamicToolTip *,const QPoint &)),this,SLOT(tipRequest(KviDynamicToolTip *,const QPoint &)));
+}
+
+
+KviIrcContextDisplay::~KviIrcContextDisplay()
+{
+}
+
+void KviIrcContextDisplay::tipRequest(KviDynamicToolTip * tip,const QPoint &)
+{
+ QString txt;
+
+ KviConsole * c = g_pActiveWindow->console();
+
+ static QString b = "<b>";
+ static QString nb = "</b>";
+ static QString br = "<br>";
+
+ if(c)
+ {
+ KviIrcConnection * ic = c->connection();
+
+ txt = b;
+
+ if(!ic)
+ {
+ txt += __tr2qs("No connection");
+ txt += nb;
+ txt += br;
+ } else {
+ KviStr nickAndMode = ic->userInfo()->nickName();
+ if(!(ic->userInfo()->userMode().isEmpty()))nickAndMode.append(KviStr::Format," (+%s)",ic->userInfo()->userMode().utf8().data());
+
+ txt += ic->currentServerName();
+ txt += nb;
+ txt += br;
+ txt += nickAndMode.ptr();
+ txt += br;
+ }
+
+ QString szNum;
+ szNum.setNum(c->ircContextId());
+
+ QString szIrcContext = QChar('(');
+ szIrcContext += __tr2qs("IRC Context");
+ szIrcContext += QChar(' ');
+ szIrcContext += szNum;
+ szIrcContext += QChar(')');
+ txt += szIrcContext;
+
+ if(ic && ic->lagMeter() && (KVI_OPTION_BOOL(KviOption_boolShowLagOnContextDisplay)))
+ {
+ txt += br;
+ int lll;
+ if((lll = ic->lagMeter()->lag()) > 0)
+ {
+ int llls = lll / 1000;
+ int llld = (lll % 1000) / 100;
+ int lllc = (lll % 100) / 10;
+ KviQString::appendFormatted(txt,__tr2qs("Lag: %d.%d%d"),llls,llld,lllc);
+ } else {
+ txt += __tr2qs("Lag: ?.??");
+ }
+ }
+ } else {
+ txt = b;
+ txt += __tr2qs("No IRC context");
+ txt += nb;
+ }
+
+ tip->tip(rect(),txt);
+}
+
+
+/*
+QSize KviIrcContextDisplay::sizeHint() const
+{
+ return QSize(160,22);
+}
+*/
+
+#define KVI_APPLETIRCCONTEXTINDICATORWIDTH 12
+
+void KviIrcContextDisplay::drawContents(QPainter * p)
+{
+ // The context indicator
+ KviWindow * wnd = g_pActiveWindow;
+ KviConsole * c = wnd ? wnd->console() : 0;
+
+ if(c)
+ {
+ QString serv,nick;
+ QString tmp;
+ if(!c->connection())
+ {
+ serv = __tr2qs("Not connected");
+ } else {
+ if(c->isConnected())
+ {
+ KviIrcConnection * ic = c->connection();
+ nick = ic->currentNickName();
+ if(!ic->userInfo()->userMode().isEmpty())
+ {
+ static QString spp(" (+");
+ nick += spp;
+ nick += ic->userInfo()->userMode();
+ if(ic->userInfo()->isAway())
+ {
+ nick += QChar(' ');
+ nick += __tr2qs("away");
+ }
+ nick += QChar(')');
+ } else {
+ if(ic->userInfo()->isAway())
+ {
+ static QString ugly(" (");
+ nick += ugly;
+ nick += __tr2qs("away");
+ nick += QChar(')');
+ }
+ }
+ serv = ic->currentServerName();
+ if(ic->lagMeter() && (KVI_OPTION_BOOL(KviOption_boolShowLagOnContextDisplay)))
+ {
+ nick += " ";
+ int lll;
+ if((lll = ic->lagMeter()->lag()) > 0)
+ {
+ int llls = lll / 1000;
+ int llld = (lll % 1000) / 100;
+ int lllc = (lll % 100) / 10;
+ KviQString::appendFormatted(nick,__tr2qs("Lag: %d.%d%d"),llls,llld,lllc);
+ } else {
+ nick += __tr2qs("Lag: ?.??");
+ }
+ }
+ } else {
+ serv = __tr2qs("In progress...");
+ }
+ }
+
+ p->setPen(KVI_OPTION_COLOR(KviOption_colorIrcToolBarAppletForegroundHighContrastActive1));
+
+ p->setClipRect(KVI_APPLETIRCCONTEXTINDICATORWIDTH + 2,2,width() - (KVI_APPLETIRCCONTEXTINDICATORWIDTH + 4),height() - 4);
+
+ if(height() < 30)
+ {
+ static QString xxx(" [");
+ serv += xxx;
+ serv += nick;
+ serv += QChar(']');
+ p->drawText(KVI_APPLETIRCCONTEXTINDICATORWIDTH + 4,16,serv,serv.length());
+ } else {
+ p->drawText(KVI_APPLETIRCCONTEXTINDICATORWIDTH + 4,16,serv,serv.length());
+ p->drawText(KVI_APPLETIRCCONTEXTINDICATORWIDTH + 4,30,nick,nick.length());
+ }
+
+ p->setClipping(false);
+
+ QColor base = colorGroup().background();
+ QColor cntx = KVI_OPTION_ICCOLOR(c->ircContextId() % KVI_NUM_ICCOLOR_OPTIONS);
+ base.setRgb((base.red() + cntx.red()) >> 1,(base.green() + cntx.green()) >> 1,
+ (base.blue() + cntx.blue()) >> 1);
+
+ p->fillRect(2,2, KVI_APPLETIRCCONTEXTINDICATORWIDTH - 2,height() - 4,base);
+ }
+
+ p->setPen(KVI_OPTION_COLOR(KviOption_colorIrcToolBarAppletForegroundMidContrast));
+ p->drawLine(1,1,width() - 1,1);
+ p->drawLine(1,1,1,height() - 1);
+ p->drawLine(2,height() - 2,width() - 1,height() - 2);
+ p->drawLine(width() - 2,1,width() - 2,height());
+ p->drawLine(KVI_APPLETIRCCONTEXTINDICATORWIDTH,2,KVI_APPLETIRCCONTEXTINDICATORWIDTH,height() - 2);
+
+}
+
+
+#ifdef Bool
+ #undef Bool
+#endif
+
+#include "kvi_irctoolbar.moc"
diff --git a/src/kvirc/ui/kvi_irctoolbar.h b/src/kvirc/ui/kvi_irctoolbar.h
new file mode 100644
index 00000000..a9030650
--- /dev/null
+++ b/src/kvirc/ui/kvi_irctoolbar.h
@@ -0,0 +1,95 @@
+#ifndef _KVI_IRCTOOLBAR_H_
+#define _KVI_IRCTOOLBAR_H_
+
+//
+// File : kvi_irctoolbar.h
+// Creation date : Thu Oct 29 2000 14:09:11 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+
+#include "kvi_string.h"
+#include "kvi_toolbar.h"
+#include "kvi_console.h"
+
+#include "kvi_pointerlist.h"
+#include <qwidget.h>
+#include <qtoolbutton.h>
+#include "kvi_tal_widgetstack.h"
+#include <qlabel.h>
+
+class KviTalPopupMenu;
+
+
+//
+// Basic graphical applet
+//
+// Thinks about the "common" background (handles transparency stuff & co.)
+// Can be a child of any AppletContainer
+//
+
+class KVIRC_API KviToolBarGraphicalApplet : public QToolButton
+{
+ Q_OBJECT
+public:
+ KviToolBarGraphicalApplet(QWidget * par,const char * name = 0);
+ ~KviToolBarGraphicalApplet();
+private:
+ bool m_bResizeMode;
+ bool m_bSizeLoaded;
+ QSize m_sizeHint;
+private:
+ void resizeMemBuffer();
+protected:
+ void setupSizeHint();
+
+ virtual unsigned int loadAppletWidth();
+ virtual void saveAppletWidth(unsigned int uWidth);
+ virtual QSize sizeHint() const;
+ virtual void mouseMoveEvent(QMouseEvent *e);
+ virtual void mousePressEvent(QMouseEvent *e);
+ virtual void mouseReleaseEvent(QMouseEvent *e);
+
+ virtual void paintEvent(QPaintEvent *e);
+ virtual void drawContents(QPainter * p);
+ virtual void resizeEvent(QResizeEvent *e);
+};
+
+
+class KviDynamicToolTip;
+
+class KVIRC_API KviIrcContextDisplay : public KviToolBarGraphicalApplet
+{
+ Q_OBJECT
+public:
+ KviIrcContextDisplay(QWidget * par,const char * name = 0);
+ ~KviIrcContextDisplay();
+protected:
+ virtual void drawContents(QPainter * p);
+protected slots:
+ void tipRequest(KviDynamicToolTip * tip,const QPoint &);
+};
+
+
+
+
+
+
+#endif //_KVI_IRCTOOLBAR_H_
diff --git a/src/kvirc/ui/kvi_ircview.cpp b/src/kvirc/ui/kvi_ircview.cpp
new file mode 100644
index 00000000..e09edee1
--- /dev/null
+++ b/src/kvirc/ui/kvi_ircview.cpp
@@ -0,0 +1,5161 @@
+//=============================================================================
+//
+// File : kvi_ircview.cpp
+// Creation date : Tue Jul 6 1999 14:45:20 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+// Damn complex class ...but it works :)
+// #include <brain.h>
+//
+// #define HOPE_THAT_IT_WILL_NEVER_NEED_TO_BE_MODIFIED :)
+
+// 07 May 1999 ,
+// Already forgot how this damn thing works ,
+// and spent 1 hour over a stupid bug.
+// I had to recreate the whole thing in my mind......ooooouh...
+// How did I wrote it ?
+// Just take a look to paintEvent() or to calculateLineWraps()...
+// Anyway...I've solved the bug.
+
+// 23 Nov 1999 ,
+// Well , not so bad...I seem to still remember how it works
+// So just for fun , complicated the things a little bit more.
+// Added precaclucaltion of the text blocks and word wrapping
+// and a fast scrolling mode (3 lines at once) for consecutive
+// appendText() calls.
+// Now the code becomes really not understandable...:)
+
+// 29 Jun 2000 21:02 ,
+// Here we go again... I have to adjust this stuff for 3.0.0
+// Will I make this thingie work ?
+// 01 Jul 2000 04:20 (AM!) ,
+// Yes....I got it to work just now
+// and YES , complicated the things yet more.
+// This time made some paint event code completely unreadable
+// by placing two monster macros...
+// I hope that you have a smart compiler (such as gcc is).
+
+// 09 Dec 2000
+// This is my C-asm-optimisation-hack playground
+// Expect Bad Programming(tm) , Ugly Code(tm) , Unreadable Macros (tm)
+// and massive usage of the Evil(tm) goto.
+
+// 25 Sep 2001
+// This stuff is going to be ported to Windoze
+// A conditionally compiled code will use only Qt calls...let's see :)
+//
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// Here we go... a huge set of includes
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#include "kvi_ircview.h"
+#include "kvi_ircviewtools.h"
+#include "kvi_ircviewprivate.h"
+#include "kvi_styled_controls.h"
+#include "kvi_debug.h"
+#include "kvi_app.h"
+#include "kvi_settings.h"
+#include "kvi_options.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_defaults.h"
+#include "kvi_window.h"
+#include "kvi_locale.h"
+#include "kvi_frame.h"
+#include "kvi_malloc.h"
+#include "kvi_memmove.h"
+#include "kvi_iconmanager.h"
+#include "kvi_out.h"
+#include "kvi_parameterlist.h"
+#include "kvi_console.h"
+#include "kvi_ircuserdb.h"
+#include "kvi_channel.h"
+#include "kvi_topicw.h"
+#include "kvi_query.h"
+#include "kvi_filedialog.h"
+#include "kvi_msgbox.h"
+#include "kvi_texticonmanager.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectiontarget.h"
+#include "kvi_mdimanager.h"
+#include "kvi_userinput.h"
+#include "kvi_kvs_eventtriggers.h"
+#include "kvi_doublebuffer.h"
+#include "kvi_ircurl.h"
+#include "kvi_draganddrop.h"
+#include "kvi_qcstring.h"
+// FIXME: #warning "There should be an option to preserve control codes in copied text (clipboard) (mIrc = CTRL+Copy->with colors)"
+
+#include <qbitmap.h>
+#include <qpainter.h>
+#include <qregexp.h>
+#include <qfile.h>
+#include <qtoolbutton.h>
+#include <qfontmetrics.h> // needed
+#include <qapplication.h>
+#include "kvi_tal_popupmenu.h"
+#include <qmessagebox.h>
+#include <qtextcodec.h>
+#include <qdatetime.h>
+#include <qevent.h>
+
+//#include <qcolor.h> // needed
+
+// FIXME: #warning "There are problems with the selection and wrapped lines: you can select something on the first line and get the second highlighted"
+// FIXME: #warning "This hack is temporary...later remove it"
+
+#if QT_VERSION >= 300
+ #ifndef QT_CLEAN_NAMESPACE
+ #define QT_CLEAN_NAMESPACE
+ #include <qcursor.h>
+ #undef QT_CLEAN_NAMESPACE
+ #else
+ #include <qcursor.h>
+ #endif
+#else
+ #include <qcursor.h>
+#endif
+
+#include <qclipboard.h>
+#include <qdatetime.h>
+#include <qmessagebox.h>
+#include <qscrollbar.h>
+#include <qfontdialog.h>
+
+#include <time.h>
+
+#ifdef COMPILE_USE_QT4
+ #include <q3mimefactory.h>
+ #define QMimeSourceFactory Q3MimeSourceFactory
+#endif
+
+
+#ifdef COMPILE_ON_WINDOWS
+ #pragma warning(disable: 4102)
+#endif
+
+#ifdef __STRICT_ANSI__
+ #ifdef COMPILE_USE_DYNAMIC_LABELS
+ // incompatible with -ansi
+ #undef COMPILE_USE_DYNAMIC_LABELS
+ #endif
+#endif
+
+#ifdef COMPILE_ZLIB_SUPPORT
+ #include <zlib.h>
+#endif
+
+#define KVI_DEF_BACK 200
+
+// FIXME: #warning "The scrollbar should NOT have a fixed size : the KDE styles can configure the size (sizeHint() ?)"
+
+//
+// FIXME: PgUp and PgDn scrolls a fixed number of lines!
+// Make it view height dependant
+//
+// FIXME: This widget is quite slow on a 300 MHz processor
+//
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// Globals
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// Stuff declared in kvi_app.cpp and managed by KviApp class
+
+
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ extern QPixmap * g_pShadedChildGlobalDesktopBackground;
+#endif
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// Internal constants
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+// Maximum size of the internal buffer for each window
+// This is the default value
+//#define KVI_IRCVIEW_MAX_LINES 1024
+// Borders...just do not set it to 0
+#define KVI_IRCVIEW_HORIZONTAL_BORDER 4
+#define KVI_IRCVIEW_VERTICAL_BORDER 4
+// A little bit more than the scroll-bar...
+// Qt+X have strange interactions that I can not understand when I try to move the splitter
+// to the maximum on the left , Maybe the cache pixmap size becomes negative ? (I don't think so)
+// Anyway , when the scroll bar position becomes negative (or the IrcView has smaller width than
+// the scroll bar) X aborts with a funny
+// X Error: BadDrawable (invalid Pixmap or Window parameter) 9
+// Major opcode: 55
+// Program received signal SIGABRT, Aborted.
+// Do not change unless you're sure that it will not happen :)
+#define KVI_IRCVIEW_MINIMUM_WIDTH 22
+//16+4+(2*4) * Do not change
+#define KVI_IRCVIEW_PIXMAP_AND_SEPARATOR 20
+#define KVI_IRCVIEW_PIXMAP_SEPARATOR_AND_DOUBLEBORDER_WIDTH 28
+#define KVI_IRCVIEW_SELECT_REPAINT_INTERVAL 100
+#define KVI_IRCVIEW_SIZEHINT_WIDTH 150
+#define KVI_IRCVIEW_SIZEHINT_HEIGHT 150
+
+#define KVI_IRCVIEW_BLOCK_SELECTION_TOTAL 0
+#define KVI_IRCVIEW_BLOCK_SELECTION_LEFT 1
+#define KVI_IRCVIEW_BLOCK_SELECTION_RIGHT 2
+#define KVI_IRCVIEW_BLOCK_SELECTION_CENTRAL 3
+#define KVI_IRCVIEW_BLOCK_SELECTION_ICON 4
+
+#define KVI_IRCVIEW_PIXMAP_SIZE 16
+
+#define KVI_IRCVIEW_ESCAPE_TAG_URLLINK 'u'
+#define KVI_IRCVIEW_ESCAPE_TAG_NICKLINK 'n'
+#define KVI_IRCVIEW_ESCAPE_TAG_SERVERLINK 's'
+#define KVI_IRCVIEW_ESCAPE_TAG_HOSTLINK 'h'
+#define KVI_IRCVIEW_ESCAPE_TAG_GENERICESCAPE '['
+
+// FIXME: Get rid of this!!!!!!!!!
+#define WSTRINGCONFIG_SAFE_TO_MEMCPY_QCHAR
+
+#define _WSTRING_WMEMCPY(_dst,_src,_len) kvi_fastmoveodd((void *)(_dst),(const void *)(_src),sizeof(kvi_wchar_t) * (_len))
+
+void kvi_appendWCharToQStringWithLength(QString * qstrptr,const kvi_wchar_t * ptr,kvi_wslen_t len)
+{
+ kvi_wslen_t oldLen = qstrptr->length();
+ qstrptr->setLength(oldLen + len);
+ #ifdef WSTRINGCONFIG_SAFE_TO_MEMCPY_QCHAR
+ _WSTRING_WMEMCPY(qstrptr->unicode() + oldLen,ptr,len);
+ #else // !WSTRINGCONFIG_SAFE_TO_MEMCPY_QCHAR
+ QChar * c = (qstrptr->unicode() + oldLen);
+ while(*ptr)
+ {
+ c->unicode() = *ptr;
+ ptr++;
+ c++;
+ }
+ #endif // !WSTRINGCONFIG_SAFE_TO_MEMCPY_QCHAR
+}
+
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// Info about escape syntax
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// escape commands:
+//
+// <cr>!<escape_command><cr><visible parameters<cr>
+//
+// <escape_command> ::= u <--- url link
+// <escape_command> ::= n <--- nick link
+// <escape_command> ::= s <--- server link
+// <escape_command> ::= h <--- host link
+// <escape_command> ::= [... <--- generic escape "rbt" | "mbt" | "dbl" | "txt"
+//
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// The IrcView : construct and destroy
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+KviIrcView::KviIrcView(QWidget *parent,KviFrame *pFrm,KviWindow *pWnd)
+: QWidget(parent,"irc_view")
+{
+ // Ok...here we go
+ // initialize the initializable
+
+#ifdef COMPILE_USE_QT4
+ setAttribute(Qt::WA_NoSystemBackground); // This disables automatic qt double buffering
+ setAttribute(Qt::WA_OpaquePaintEvent);
+ //setAttribute(Qt::WA_PaintOnScreen); // disable qt backing store (that would force us to trigger repaint() instead of the 10 times faster paintEvent(0))
+#endif
+
+ m_iFlushTimer = 0;
+ m_pToolsPopup = 0;
+ m_pFirstLine = 0;
+ m_pCurLine = 0;
+ m_pLastLine = 0;
+ m_pCursorLine = 0;
+ m_uLineMarkLineIndex = KVI_IRCVIEW_INVALID_LINE_MARK_INDEX;
+ m_bHaveUnreadedHighlightedMessages = false;
+ m_bHaveUnreadedMessages = false;
+ m_iNumLines = 0;
+ m_iMaxLines = KVI_OPTION_UINT(KviOption_uintIrcViewMaxBufferSize);
+
+ m_uNextLineIndex = 0;
+
+ if(m_iMaxLines < 32)
+ {
+ m_iMaxLines = 32;
+ KVI_OPTION_UINT(KviOption_uintIrcViewMaxBufferSize) = 32;
+ }
+
+ m_bMouseIsDown = false;
+
+ //m_bShowImages = KVI_OPTION_BOOL(KviOption_boolIrcViewShowImages);
+
+ m_iSelectTimer = 0;
+ m_iMouseTimer = 0;
+ //m_iTipTimer = 0;
+ //m_bTimestamp = KVI_OPTION_BOOL(KviOption_boolIrcViewTimestamp);
+
+ m_bAcceptDrops = false;
+ m_pPrivateBackgroundPixmap = 0;
+ m_bSkipScrollBarRepaint = false;
+ m_pLogFile = 0;
+ m_pKviWindow = pWnd;
+ m_pFrm = pFrm;
+
+ m_iUnprocessedPaintEventRequests = 0;
+ m_bPostedPaintEventPending = false;
+
+ m_pLastLinkUnderMouse = 0;
+ m_iLastLinkRectTop = -1;
+ m_iLastLinkRectHeight = -1;
+
+ m_pMasterView = 0;
+
+ m_pToolWidget = 0;
+
+ m_pWrappedBlockSelectionInfo = new KviIrcViewWrappedBlockSelectionInfo;
+
+
+ m_pMessagesStoppedWhileSelecting = new KviPointerList<KviIrcViewLine>;
+ m_pMessagesStoppedWhileSelecting->setAutoDelete(false);
+
+ // say qt to avoid erasing on repaint
+#ifdef COMPILE_USE_QT4
+ setAutoFillBackground(false);
+#else
+ setBackgroundMode(NoBackground);
+#endif
+
+ m_pFm = 0; // will be updated in the first paint event
+
+ m_pToolTip = new KviIrcViewToolTip(this);
+
+ // Create the scroll bar
+#ifdef COMPILE_USE_QT4
+ m_pScrollBar = new QScrollBar(0,0,1,10,0,Qt::Vertical,this,"irc_view_scrollbar");
+#else
+ m_pScrollBar = new QScrollBar(0,0,1,10,0,QScrollBar::Vertical,this,"irc_view_scrollbar");
+#endif
+ m_pScrollBar->setTracking(true);
+ m_pScrollBar->show();
+
+ m_pScrollBar->setFocusProxy(this);
+
+
+ m_pToolsButton = new KviStyledToolButton(this,"btntools");
+#ifdef COMPILE_USE_QT4
+ QIcon is1(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_POPUPMENU)));
+ m_pToolsButton->setAutoRaise(true);
+#else
+ QIconSet is1(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_POPUPMENU)),QIconSet::Small);
+#endif
+ m_pToolsButton->setIconSet(is1);
+
+ KviTalToolTip::add(m_pToolsButton,__tr2qs("Search tools"));
+ m_pToolsButton->setFocusProxy(this);
+
+ connect(m_pToolsButton,SIGNAL(clicked()),this,SLOT(showToolsPopup()));
+ m_pToolsButton->show();
+
+ connect(m_pScrollBar,SIGNAL(valueChanged(int)),this,SLOT(scrollBarPositionChanged(int)));
+ m_iLastScrollBarValue = 0;
+
+ // set the minimum width
+ setMinimumWidth(KVI_IRCVIEW_MINIMUM_WIDTH);
+ // and catch all mouse events
+ setMouseTracking(true);
+ // let's go!
+ applyOptions();
+
+ if(KVI_OPTION_UINT(KviOption_uintAutoFlushLogs)) //m_iFlushTimer
+ {
+ m_iFlushTimer = startTimer(KVI_OPTION_UINT(KviOption_uintAutoFlushLogs)*60*1000);
+ }
+
+// if(pWnd->input()) setFocusProxy(pWnd->input());
+
+}
+
+static inline void delete_text_line(KviIrcViewLine * l)
+{
+ for(unsigned int i=0;i<l->uChunkCount;i++)
+ {
+ if((l->pChunks[i].type == KVI_TEXT_ESCAPE) || (l->pChunks[i].type == KVI_TEXT_ICON))
+ {
+ if( (l->pChunks[i].type == KVI_TEXT_ICON) && (l->pChunks[i].szPayload!=l->pChunks[i].szSmileId) )
+ kvi_free(l->pChunks[i].szSmileId);
+ kvi_free(l->pChunks[i].szPayload);
+ }
+ }
+ kvi_free(l->pChunks); //free attributes data
+ if(l->iBlockCount)kvi_free(l->pBlocks);
+ delete l;
+}
+
+KviIrcView::~KviIrcView()
+{
+ // kill any pending timer
+ if(m_iFlushTimer) killTimer(m_iFlushTimer);
+ if(m_iSelectTimer)killTimer(m_iSelectTimer);
+ if(m_iMouseTimer)killTimer(m_iMouseTimer);
+ // and close the log file (flush!)
+ stopLogging();
+ if(m_pToolWidget)delete m_pToolWidget;
+ // don't forget the bacgkround pixmap!
+ if(m_pPrivateBackgroundPixmap)delete m_pPrivateBackgroundPixmap;
+ // and to remove all the text lines
+ emptyBuffer(false);
+ // the pending ones too!
+ while(KviIrcViewLine * l = m_pMessagesStoppedWhileSelecting->first())
+ {
+ m_pMessagesStoppedWhileSelecting->removeFirst();
+ delete_text_line(l);
+ }
+ delete m_pMessagesStoppedWhileSelecting;
+ if(m_pFm)delete m_pFm;
+ delete m_pToolTip;
+ delete m_pWrappedBlockSelectionInfo;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// The IrcView : options
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+void KviIrcView::setFont(const QFont &f)
+{
+ if(m_pFm)
+ {
+ // force an update to the font variables
+ delete m_pFm;
+ m_pFm = 0;
+ }
+ KviIrcViewLine * l = m_pFirstLine;
+ while(l)
+ {
+ l->iMaxLineWidth = -1;
+ l = l->pNext;
+ }
+ QWidget::setFont(f);
+ update();
+}
+
+void KviIrcView::applyOptions()
+{
+ flushLog();
+ setFont(KVI_OPTION_FONT(KviOption_fontIrcView));
+ if(m_iFlushTimer) killTimer(m_iFlushTimer);
+ if(KVI_OPTION_UINT(KviOption_uintAutoFlushLogs))
+ {
+ m_iFlushTimer = startTimer(KVI_OPTION_UINT(KviOption_uintAutoFlushLogs)*60*1000);
+ }
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// The IrcView : DnD //2005.Resurection by Grifisx & Noldor
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+void KviIrcView::enableDnd(bool bEnable)
+{
+ setAcceptDrops(bEnable);
+ m_bAcceptDrops = bEnable;
+}
+
+void KviIrcView::dragEnterEvent(QDragEnterEvent *e)
+{
+ if(!m_bAcceptDrops)return;
+ e->accept(KviUriDrag::canDecode(e));
+ emit dndEntered();
+}
+
+void KviIrcView::dropEvent(QDropEvent *e)
+{
+ if(!m_bAcceptDrops)return;
+ QStringList list;
+ if(KviUriDrag::decodeLocalFiles(e,list))
+ {
+ if(!list.isEmpty())
+ {
+ QStringList::ConstIterator it = list.begin(); //kewl ! :)
+ for( ; it != list.end(); ++it )
+ {
+ QString tmp = *it; //wow :)
+ #ifndef COMPILE_ON_WINDOWS
+ if(tmp[0] != '/')tmp.prepend("/"); //HACK HACK HACK for Qt bug (?!?)
+ #endif
+ emit fileDropped(tmp);
+ }
+ }
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// The IrcView : Logging
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+void KviIrcView::stopLogging()
+{
+ if(m_pLogFile)
+ {
+ QString szLogEnd;
+ szLogEnd.sprintf(__tr2qs("### Log session terminated at %s ###"),QDateTime::currentDateTime().toString().utf8().data());
+
+ add2Log(szLogEnd);
+ m_pLogFile->close();
+#ifdef COMPILE_ZLIB_SUPPORT
+ if(KVI_OPTION_BOOL(KviOption_boolGzipLogs))
+ {
+ if(m_pLogFile->open(IO_ReadOnly))
+ {
+ QByteArray bytes;
+ bytes=m_pLogFile->readAll();
+ m_pLogFile->close();
+ QFileInfo fi(*m_pLogFile);
+ QString szFname=fi.dirPath(true)+QString("/")+fi.baseName(true);
+ gzFile file=gzopen(QTextCodec::codecForLocale()->fromUnicode(szFname).data(),"ab9");
+ if(file)
+ {
+ gzwrite(file,bytes.data(),bytes.size());
+ gzclose(file);
+ m_pLogFile->remove();
+ } else {
+ debug("Cannot open compressed stream");
+ }
+ }
+ }
+#endif
+ delete m_pLogFile;
+ m_pLogFile = 0;
+ }
+}
+
+void KviIrcView::getLogFileName(KviStr &buffer)
+{
+ if(m_pLogFile)buffer.append(m_pLogFile->name());
+}
+
+void KviIrcView::getLogFileName(QString &buffer)
+{
+ if(m_pLogFile) buffer=m_pLogFile->name();
+}
+
+void KviIrcView::getTextBuffer(QString &buffer)
+{
+ // FIXME: #warning "This does not merge the KviChannel::m_pMessageView buffer!"
+ buffer = "";
+ if(!m_pLastLine)return;
+ for(KviIrcViewLine *l=m_pFirstLine;l;l=l->pNext)
+ {
+ buffer.append(l->szText);
+ buffer.append("\n");
+ }
+}
+
+void KviIrcView::flushLog()
+{
+ if(m_pLogFile) {
+#ifdef COMPILE_ZLIB_SUPPORT
+ if(KVI_OPTION_BOOL(KviOption_boolGzipLogs))
+ {
+ m_pLogFile->close();
+ if(m_pLogFile->open(IO_ReadOnly))
+ {
+ QByteArray bytes;
+ bytes=m_pLogFile->readAll();
+ m_pLogFile->close();
+ QFileInfo fi(*m_pLogFile);
+ QString szFname=fi.dirPath(true)+QString("/")+fi.baseName(true);
+ gzFile file=gzopen(QTextCodec::codecForLocale()->fromUnicode(szFname).data(),"ab9");
+ if(file)
+ {
+ gzwrite(file,bytes.data(),bytes.size());
+ gzclose(file);
+ m_pLogFile->remove();
+ } else {
+ debug("Cannot open compressed stream");
+ }
+ }
+ m_pLogFile->open(IO_Append|IO_WriteOnly);
+ } else
+#endif
+ m_pLogFile->flush();
+ }
+ else if(m_pMasterView)m_pMasterView->flushLog();
+}
+
+const QString & KviIrcView::lastMessageText()
+{
+ KviIrcViewLine * pCur=m_pLastLine;
+ while(pCur)
+ {
+ switch(pCur->iMsgType)
+ {
+ case KVI_OUT_CHANPRIVMSG:
+ case KVI_OUT_CHANPRIVMSGCRYPTED:
+ case KVI_OUT_CHANNELNOTICE:
+ case KVI_OUT_CHANNELNOTICECRYPTED:
+ case KVI_OUT_ACTION:
+ case KVI_OUT_OWNPRIVMSG:
+ case KVI_OUT_OWNPRIVMSGCRYPTED:
+ case KVI_OUT_HIGHLIGHT:
+ return pCur->szText;
+ }
+ pCur=pCur->pPrev;
+ }
+ return KviQString::empty;
+}
+
+const QString & KviIrcView::lastLineOfText()
+{
+ if(!m_pLastLine)return KviQString::empty;
+ return m_pLastLine->szText;
+}
+
+//void KviIrcView::toggleLogging()
+//{
+// if(isLogging())stopLogging();
+// else {
+//#warning "FIX THIS COMMENTED STUFF"
+//
+// KviStr tmp;
+// m_pKviWindow->getDefaultLogName(tmp);
+// startLogging(tmp.ptr());
+//
+// }
+//}
+
+void KviIrcView::setMasterView(KviIrcView * v)
+{
+ if(m_pMasterView)disconnect(this,SLOT(masterDead()));
+ m_pMasterView = v;
+ if(m_pMasterView)connect(m_pMasterView,SIGNAL(destroyed()),this,SLOT(masterDead()));
+}
+
+void KviIrcView::masterDead()
+{
+ m_pMasterView = 0;
+}
+
+bool KviIrcView::startLogging(const QString& fname,bool bPrependCurBuffer)
+{
+ stopLogging();
+ QString szFname(fname);
+
+ if(fname.isEmpty())
+ {
+ if(!m_pKviWindow)return false;
+ m_pKviWindow->getDefaultLogFileName(szFname);
+ }
+
+#ifdef COMPILE_ZLIB_SUPPORT
+ if(KVI_OPTION_BOOL(KviOption_boolGzipLogs))
+ szFname+=".tmp";
+#endif
+
+ m_pLogFile = new QFile(szFname);
+
+ if(m_pLogFile->exists())
+ {
+ if(!m_pLogFile->open(IO_Append|IO_WriteOnly))
+ {
+ delete m_pLogFile;
+ m_pLogFile = 0;
+ return false;
+ }
+ } else {
+ if(!m_pLogFile->open(IO_WriteOnly))
+ {
+ delete m_pLogFile;
+ m_pLogFile = 0;
+ return false;
+ }
+ }
+
+ QString szLogStart;
+ szLogStart.sprintf(__tr2qs("### Log session started at %s ###"),QDateTime::currentDateTime().toString().utf8().data());
+ add2Log(szLogStart);
+ if(bPrependCurBuffer)
+ {
+ add2Log(__tr2qs("### Existing data buffer:"));
+ QString buffer;
+ getTextBuffer(buffer);
+ add2Log(buffer);
+ add2Log(__tr2qs("### End of existing data buffer."));
+ m_pLogFile->flush();
+ }
+
+ return true;
+}
+
+void KviIrcView::add2Log(const QString &szBuffer,int iMsgType)
+{
+ QString szToWrite=QString("%1 %2\n").arg(iMsgType).arg(szBuffer);
+ KviQCString szTmp = KviQString::toUtf8(szToWrite);
+ if(m_pLogFile->writeBlock(szTmp.data(),szTmp.length())==-1) debug("WARNING : Can not write to the log file.");
+}
+
+//=============================================================================
+//
+// Some slots
+//
+
+//void KviIrcView::saveBufferToFile()
+//{
+// // Yeah....this is powerful! :)
+//// KviStr cmd = "/DIALOG (savefile,Choose a file name,$deflogfile($window).savebuf,$window) "
+//// "if(\"$dialogresult\" != \"\")window $dialogmagic savebuffer $dialogresult";
+//// m_pFrm->m_pUserParser->parseUserCommand(cmd,m_pKviWindow);
+//}
+/*
+void KviIrcView::toggleTimestamp()
+{
+ setTimestamp(!timestamp());
+}
+
+void KviIrcView::toggleImages()
+{
+ setShowImages(!imagesVisible());
+}*/
+
+void KviIrcView::clearBuffer()
+{
+ emptyBuffer(true);
+}
+
+bool KviIrcView::saveBuffer(const char *filename)
+{
+ QFile f(QString::fromUtf8(filename));
+ if(!f.open(IO_WriteOnly|IO_Truncate))return false;
+ QString tmp;
+ getTextBuffer(tmp);
+ KviQCString tmpx = KviQString::toUtf8(tmp);
+ f.writeBlock(tmpx.data(),tmpx.length());
+ f.close();
+ return true;
+}
+
+void KviIrcView::prevLine(){ m_pScrollBar->subtractLine(); }
+void KviIrcView::nextLine(){ m_pScrollBar->addLine(); }
+void KviIrcView::prevPage(){ m_pScrollBar->subtractPage(); }
+void KviIrcView::nextPage(){ m_pScrollBar->addPage(); }
+
+void KviIrcView::setPrivateBackgroundPixmap(const QPixmap &pixmap,bool bRepaint)
+{
+ if(m_pPrivateBackgroundPixmap)
+ {
+ delete m_pPrivateBackgroundPixmap;
+ m_pPrivateBackgroundPixmap=0;
+ }
+ if(!pixmap.isNull())m_pPrivateBackgroundPixmap = new QPixmap(pixmap);
+
+ if(bRepaint)
+ update();
+}
+
+void KviIrcView::emptyBuffer(bool bRepaint)
+{
+ while(m_pLastLine != 0)removeHeadLine();
+ if(bRepaint)
+ update();
+}
+
+void KviIrcView::clearLineMark(bool bRepaint)
+{
+ m_uLineMarkLineIndex = KVI_IRCVIEW_INVALID_LINE_MARK_INDEX;
+ clearUnreaded();
+ if(bRepaint)
+ update();
+}
+
+void KviIrcView::checkLogDate()
+{
+ QDate::currentDate();
+}
+
+void KviIrcView::clearUnreaded()
+{
+ m_bHaveUnreadedHighlightedMessages = false;
+ m_bHaveUnreadedMessages = false;
+
+ if(m_pFrm)
+ if(m_pFrm->dockExtension())
+ m_pFrm->dockExtension()->refresh();
+}
+
+void KviIrcView::setMaxBufferSize(int maxBufSize,bool bRepaint)
+{
+ if(maxBufSize < 32)maxBufSize = 32;
+ m_iMaxLines = maxBufSize;
+ while(m_iNumLines > m_iMaxLines)removeHeadLine();
+ m_pScrollBar->setRange(0,m_iNumLines);
+ if(bRepaint)
+ update();
+}
+
+/*
+void KviIrcView::setShowImages(bool bShow,bool bRepaint)
+{
+ if(m_bShowImages!=bShow)
+ {
+ m_bShowImages=bShow;
+ if(bRepaint)paintEvent(0);
+ }
+}
+*/
+/*
+void KviIrcView::setTimestamp(bool bTimestamp)
+{
+ m_bTimestamp = bTimestamp;
+
+
+// STATS FOR A BUFFER FULL OF HIGHLY COLORED STRINGS , HIGHLY WRAPPED
+//
+// Lines = 1024 (322425 bytes - 314 KB) (avg 314 bytes per line) , well :)
+// string bytes = 87745 (85 KB)
+// attributes = 3576 (42912 bytes - 41 KB)
+// blocks = 12226 (146712 bytes - 143 KB)
+//
+// unsigned long int nAlloc = 0;
+// unsigned long int nLines = 0;
+// unsigned long int nStringBytes = 0;
+// unsigned long int nAttrBytes = 0;
+// unsigned long int nBlockBytes = 0;
+// unsigned long int nBlocks = 0;
+// unsigned long int nAttributes = 0;
+// KviIrcViewLine * l=m_pFirstLine;
+// while(l){
+// nLines++;
+// nAlloc += sizeof(KviIrcViewLine);
+// nStringBytes += l->data_len + 1;
+// nAlloc += l->data_len + 1;
+// nAlloc += (l->uChunkCount * sizeof(KviIrcViewLineChunk));
+// nAttrBytes +=(l->uChunkCount * sizeof(KviIrcViewLineChunk));
+// nAlloc += (l->iBlockCount * sizeof(KviIrcViewLineChunk));
+// nBlockBytes += (l->iBlockCount * sizeof(KviIrcViewLineChunk));
+// nBlocks += (l->iBlockCount);
+// nAttributes += (l->uChunkCount);
+// l = l->pNext;
+// }
+// debug("\n\nLines = %u (%u bytes - %u KB) (avg %u bytes per line)",nLines,nAlloc,nAlloc / 1024,nLines ? (nAlloc / nLines) : 0);
+// debug("string bytes = %u (%u KB)",nStringBytes,nStringBytes / 1024);
+// debug("attributes = %u (%u bytes - %u KB)",nAttributes,nAttrBytes,nAttrBytes / 1024);
+// debug("blocks = %u (%u bytes - %u KB)\n",nBlocks,nBlockBytes,nBlockBytes / 1024);
+
+}
+*/
+void KviIrcView::scrollBarPositionChanged(int newValue)
+{
+ if(!m_pCurLine)return;
+ int diff = 0;
+ if(newValue > m_iLastScrollBarValue)
+ {
+ while(newValue > m_iLastScrollBarValue)
+ {
+ if(m_pCurLine->pNext)
+ {
+ m_pCurLine=m_pCurLine->pNext;
+ diff++;
+ }
+ m_iLastScrollBarValue++;
+ }
+ } else {
+ while(newValue < m_iLastScrollBarValue)
+ {
+ if(m_pCurLine->pPrev)m_pCurLine=m_pCurLine->pPrev;
+ m_iLastScrollBarValue--;
+ }
+ }
+ if(!m_bSkipScrollBarRepaint)
+ repaint();
+ //update();
+// if(!m_bSkipScrollBarRepaint)postUpdateEvent();
+}
+
+bool KviIrcView::event(QEvent *e)
+{
+ if(e->type() == QEvent::User)
+ {
+ __range_valid(m_bPostedPaintEventPending);
+ if(m_iUnprocessedPaintEventRequests)
+ repaint();
+ // else we just had a pointEvent that did the job
+ m_bPostedPaintEventPending = false;
+ return true;
+ }
+ return QWidget::event(e);
+}
+
+void KviIrcView::wheelEvent(QWheelEvent *e)
+{
+#ifdef COMPILE_USE_QT4
+ static bool bHere = false;
+ if(bHere)return;
+ bHere = true; // Qt4 tends to jump into infinite recursion here
+#endif
+ g_pApp->sendEvent(m_pScrollBar,e);
+#ifdef COMPILE_USE_QT4
+ bHere = false;
+#endif
+}
+
+
+void KviIrcView::postUpdateEvent()
+{
+ // This will post a QEvent with a full repaint request
+ if(!m_bPostedPaintEventPending)
+ {
+ m_bPostedPaintEventPending = true;
+ QEvent *e = new QEvent(QEvent::User);
+ g_pApp->postEvent(this,e); // queue a repaint
+ }
+
+ m_iUnprocessedPaintEventRequests++; // paintEvent() will set it to 0
+
+ if(m_iUnprocessedPaintEventRequests == 3)
+ {
+ // Three unprocessed paint events...do it now
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ if(! ((KVI_OPTION_PIXMAP(KviOption_pixmapIrcViewBackground).pixmap()) || m_pPrivateBackgroundPixmap || g_pShadedChildGlobalDesktopBackground))
+ fastScroll(3);
+#else
+ if(! ((KVI_OPTION_PIXMAP(KviOption_pixmapIrcViewBackground).pixmap()) || m_pPrivateBackgroundPixmap))
+ fastScroll(3);
+#endif
+ else
+ repaint();
+ }
+}
+
+void KviIrcView::appendLine(KviIrcViewLine *ptr,bool bRepaint)
+{
+ //This one appends a KviIrcViewLine to
+ //the buffer list (at the end)
+ if(m_bMouseIsDown)
+ {
+ // Do not move the view!
+ // So we append the text line to a temp queue
+ // and then we'll add it when the mouse button is released
+ m_pMessagesStoppedWhileSelecting->append(ptr);
+ return;
+ }
+
+ // First log the line and assign the index
+ // Don't use add2log here!...we must go as fast as possible, so we avoid some push and pop calls, and also a couple of branches
+ if(m_pLogFile && KVI_OPTION_BOOL(KviOption_boolStripControlCodesInLogs))
+ {
+ // a slave view has no log files!
+ if(KVI_OPTION_MSGTYPE(ptr->iMsgType).logEnabled())
+ {
+ add2Log(ptr->szText,ptr->iMsgType);
+ // If we fail...this has been already reported!
+ }
+ // mmh.. when this overflows... we have problems (find doesn't work anymore :()
+ // but it overflows at 2^32 lines... 2^32 = 4.294.967.296 lines
+ // to spit it out in a year you'd need to print 1360 lines per second... that's insane :D
+ // a really fast but reasonable rate of printed lines might be 10 per second
+ // thus 429.496.730 seconds would be needed to make this var overflow
+ // that means more or less 13 years of text spitting at full rate :D
+ // I think that we can safely assume that this will NOT overflow ... your cpu (or you)
+ // will get mad before. Well.. it is not that dangerous after all...
+ ptr->uIndex = m_uNextLineIndex;
+ m_uNextLineIndex++;
+ } else {
+ // no log: we could have master view!
+ if(m_pMasterView)
+ {
+ if(m_pMasterView->m_pLogFile && KVI_OPTION_BOOL(KviOption_boolStripControlCodesInLogs))
+ {
+ if(KVI_OPTION_MSGTYPE(ptr->iMsgType).logEnabled())
+ {
+ m_pMasterView->add2Log(ptr->szText,ptr->iMsgType);
+ }
+ }
+ ptr->uIndex = m_pMasterView->m_uNextLineIndex;
+ m_pMasterView->m_uNextLineIndex++;
+ } else {
+ ptr->uIndex = m_uNextLineIndex;
+ m_uNextLineIndex++;
+ }
+ }
+
+ if(m_pLastLine)
+ {
+ // There is at least one line in the view
+ m_pLastLine->pNext=ptr;
+ ptr->pPrev =m_pLastLine;
+ ptr->pNext =0;
+ m_iNumLines++;
+
+ if(m_iNumLines > m_iMaxLines)
+ {
+ // Too many lines in the view...remove one
+ removeHeadLine();
+ if(m_pCurLine==m_pLastLine)
+ {
+ m_pCurLine=ptr;
+ if(bRepaint)
+ postUpdateEvent();
+ } else {
+ // the cur line remains the same
+ // the scroll bar must move up one place to be in sync
+ m_bSkipScrollBarRepaint = true;
+ if(m_pScrollBar->value() > 0)
+ {
+ m_iLastScrollBarValue--;
+ __range_valid(m_iLastScrollBarValue >= 0);
+ m_pScrollBar->subtractLine();
+ } // else will stay in sync
+ m_bSkipScrollBarRepaint = false;
+ }
+ } else {
+ // Just append
+ m_pScrollBar->setRange(0,m_iNumLines);
+ if(m_pCurLine==m_pLastLine)
+ {
+ m_bSkipScrollBarRepaint = true;
+ m_pScrollBar->addLine();
+ m_bSkipScrollBarRepaint = false;
+ if(bRepaint)
+ postUpdateEvent();
+ }
+ }
+ m_pLastLine=ptr;
+ } else {
+ //First line
+ m_pLastLine = ptr;
+ m_pFirstLine = ptr;
+ m_pCurLine = ptr;
+ ptr->pPrev = 0;
+ ptr->pNext = 0;
+ m_iNumLines = 1;
+ m_pScrollBar->setRange(0,1);
+ m_pScrollBar->addLine();
+ if(bRepaint)
+ postUpdateEvent();
+ }
+}
+
+//============== removeHeadLine ===============//
+
+void KviIrcView::removeHeadLine(bool bRepaint)
+{
+ //Removes the first line of the text buffer
+ if(!m_pLastLine)return;
+ if(m_pFirstLine == m_pCursorLine)m_pCursorLine = 0;
+
+ if(m_pFirstLine->pNext)
+ {
+ KviIrcViewLine *aux_ptr=m_pFirstLine->pNext; //get the next line
+ aux_ptr->pPrev=0; //becomes the first
+ if(m_pFirstLine==m_pCurLine)m_pCurLine=aux_ptr; //move the cur line if necessary
+ delete_text_line(m_pFirstLine); //delete the struct
+ m_pFirstLine=aux_ptr; //set the last
+ m_iNumLines--; //and decrement the count
+ } else { //unique line
+ m_pCurLine = 0;
+ delete_text_line(m_pFirstLine);
+ m_pFirstLine = 0;
+ m_iNumLines = 0;
+ m_pLastLine = 0;
+ }
+ if(bRepaint)
+ repaint();
+}
+
+void KviIrcView::splitMessagesTo(KviIrcView *v)
+{
+ v->emptyBuffer(false);
+
+ KviIrcViewLine * l = m_pFirstLine;
+ KviIrcViewLine * tmp;
+ while(l)
+ switch(l->iMsgType)
+ {
+ case KVI_OUT_CHANPRIVMSG:
+ case KVI_OUT_CHANPRIVMSGCRYPTED:
+ case KVI_OUT_CHANNELNOTICE:
+ case KVI_OUT_CHANNELNOTICECRYPTED:
+ case KVI_OUT_ACTION:
+ case KVI_OUT_OWNPRIVMSG:
+ case KVI_OUT_OWNPRIVMSGCRYPTED:
+ case KVI_OUT_HIGHLIGHT:
+ {
+ m_iNumLines--;
+ v->m_iNumLines++;
+
+ if(l->pNext)l->pNext->pPrev = l->pPrev;
+ if(l->pPrev)l->pPrev->pNext = l->pNext;
+ if(l == m_pFirstLine)m_pFirstLine = l->pNext;
+ if(l == m_pLastLine)m_pLastLine = l->pPrev;
+ if(v->m_pLastLine)
+ {
+ v->m_pLastLine->pNext = l;
+ l->pPrev = v->m_pLastLine;
+ v->m_pLastLine = l;
+ } else {
+ v->m_pFirstLine = l;
+ l->pPrev = 0;
+ v->m_pLastLine = l;
+ }
+ tmp = l->pNext;
+ l->pNext = 0;
+ l = tmp;
+ }
+ break;
+ default:
+ l = l->pNext;
+ break;
+ }
+ v->m_pCurLine = v->m_pLastLine;
+ m_pCurLine = m_pLastLine;
+
+ v->m_pCursorLine = 0;
+ m_pCursorLine = 0;
+
+ m_iLastScrollBarValue = m_iNumLines;
+ m_pScrollBar->setRange(0,m_iNumLines);
+ m_pScrollBar->setValue(m_iNumLines);
+
+ repaint();
+
+ v->m_iLastScrollBarValue = v->m_iNumLines;
+ v->m_pScrollBar->setRange(0,v->m_iNumLines);
+ v->m_pScrollBar->setValue(v->m_iNumLines);
+ v->repaint();
+
+}
+
+void KviIrcView::appendMessagesFrom(KviIrcView *v)
+{
+ if(!m_pLastLine)
+ {
+ m_pFirstLine = v->m_pFirstLine;
+ } else {
+ m_pLastLine->pNext = v->m_pFirstLine;
+ v->m_pFirstLine->pPrev = m_pLastLine;
+ }
+ m_pLastLine = v->m_pLastLine;
+ m_pCurLine = m_pLastLine;
+ m_pCursorLine = 0;
+ v->m_pFirstLine = 0;
+ v->m_pLastLine = 0;
+ v->m_pCurLine = 0;
+ v->m_pCursorLine = 0;
+ m_iNumLines += v->m_iNumLines;
+ v->m_iNumLines = 0;
+// v->m_pScrollBar->setRange(0,0);
+// v->m_pScrollBar->setValue(0);
+ m_iLastScrollBarValue = m_iNumLines;
+ m_pScrollBar->setRange(0,m_iNumLines);
+ m_pScrollBar->setValue(m_iNumLines);
+
+ repaint();
+}
+
+void KviIrcView::joinMessagesFrom(KviIrcView *v)
+{
+ KviIrcViewLine * l1 = m_pFirstLine;
+ KviIrcViewLine * l2 = v->m_pFirstLine;
+ KviIrcViewLine * tmp;
+
+ while(l2)
+ {
+ if(l1)
+ {
+ if(l2->uIndex < l1->uIndex)
+ {
+ // the external message is older than the current internal one
+ l2->pPrev = l1->pPrev;
+ if(l1->pPrev)l1->pPrev->pNext = l2;
+ else m_pFirstLine = l2;
+ l1->pPrev = l2;
+ tmp = l2->pNext;
+ l2->pNext = l1;
+ l2 = tmp;
+ } else {
+ // the external message is younger than the current internal one
+ l1 = l1->pNext;
+ }
+ } else {
+ // There is no current internal message (ran over the end)
+ // merge at the end then
+ if(m_pFirstLine)
+ {
+ m_pLastLine->pNext = l2;
+ l2->pPrev = m_pLastLine;
+ } else {
+ m_pFirstLine = l2;
+ l2->pPrev = 0;
+ }
+ tmp = l2->pNext;
+ l2->pNext = 0;
+ m_pLastLine = l2;
+ l2 = tmp;
+ }
+ }
+
+ m_pCurLine = m_pLastLine;
+ m_pCursorLine = 0;
+ v->m_pFirstLine = 0;
+ v->m_pLastLine = 0;
+ v->m_pCurLine = 0;
+ v->m_pCursorLine = 0;
+ m_iNumLines += v->m_iNumLines;
+ v->m_iNumLines = 0;
+// v->m_pScrollBar->setRange(0,0);
+// v->m_pScrollBar->setValue(0);
+
+ m_iLastScrollBarValue = m_iNumLines;
+ m_pScrollBar->setRange(0,m_iNumLines);
+ m_pScrollBar->setValue(m_iNumLines);
+
+ repaint();
+}
+
+void KviIrcView::appendText(int iMsgType,const kvi_wchar_t *data_ptr,int iFlags)
+{
+ //appends a text string to the buffer list
+ //splits the lines
+ __range_valid(data_ptr);
+ m_pLastLinkUnderMouse = 0;
+
+ while(*data_ptr)
+ { //Have more data
+ KviIrcViewLine *line_ptr=new KviIrcViewLine; //create a line struct
+ line_ptr->iMsgType=iMsgType;
+ line_ptr->iMaxLineWidth=-1;
+ line_ptr->iBlockCount=0;
+
+ if(!KVI_OPTION_BOOL(KviOption_boolStripControlCodesInLogs))
+ {
+ QString szBuffer;
+ kvi_appendWCharToQStringWithLength(&szBuffer,data_ptr,kvi_wstrlen(data_ptr));
+ szBuffer.prepend(QDateTime::currentDateTime().toString("[h:mm:ss] "));
+ if(m_pLogFile && KVI_OPTION_MSGTYPE(iMsgType).logEnabled())
+ {
+ add2Log(szBuffer,iMsgType);
+ } else if(m_pMasterView) {
+ if(m_pMasterView->m_pLogFile && KVI_OPTION_MSGTYPE(iMsgType).logEnabled())
+ {
+ m_pMasterView->add2Log(szBuffer,iMsgType);
+ }
+ }
+ }
+
+ data_ptr=getTextLine(iMsgType,data_ptr,line_ptr,!(iFlags & NoTimestamp));
+ appendLine(line_ptr,!(iFlags & NoRepaint));
+ if(iFlags & SetLineMark)
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolTrackLastReadTextViewLine))
+ {
+ m_uLineMarkLineIndex = line_ptr->uIndex;
+ iFlags &= ~SetLineMark;
+ }
+ m_bHaveUnreadedHighlightedMessages = m_bHaveUnreadedHighlightedMessages || iMsgType == KVI_OUT_HIGHLIGHT;
+ m_bHaveUnreadedMessages = m_bHaveUnreadedMessages ||
+ iMsgType == KVI_OUT_CHANPRIVMSG ||
+ iMsgType == KVI_OUT_CHANPRIVMSGCRYPTED ||
+ iMsgType == KVI_OUT_CHANNELNOTICE ||
+ iMsgType == KVI_OUT_CHANNELNOTICECRYPTED ||
+ iMsgType == KVI_OUT_ACTION ||
+ iMsgType == KVI_OUT_OWNPRIVMSGCRYPTED ||
+ iMsgType == KVI_OUT_HIGHLIGHT;
+ }
+ }
+}
+
+
+void KviIrcView::getLinkEscapeCommand(QString &buffer,const QString &szPayload,const QString &escape_label)
+{
+ if(szPayload.isEmpty())return;
+
+ int idx = szPayload.find(escape_label);
+ if(idx == -1)return;
+ idx += escape_label.length();
+
+ int idx2 = szPayload.find("[!",idx);
+ int len = idx2 == -1 ? szPayload.length() - idx : idx2 - idx;
+
+ buffer = szPayload.mid(idx,len);
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// The IrcView : Get text line
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+static kvi_wchar_t case_xtx_XX[256] =
+{
+ 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
+ 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
+ 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
+ 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
+ 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
+ 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
+ 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
+ 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
+ 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
+ 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
+ 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
+ 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
+ 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
+ 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
+ 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
+ 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000
+};
+
+static kvi_wchar_t case_ltu_00[256] =
+{
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0130, 0x004A, 0x212A, 0x004C, 0x004D, 0x004E, 0x004F,
+ 0x0050, 0x0051, 0x0052, 0x017F, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x212B, 0x00C6, 0x00C7, 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
+ 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x0000, 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x0178
+};
+
+
+static kvi_wchar_t case_ltu_01[256] =
+{
+ 0x0000, 0x0100, 0x0000, 0x0102, 0x0000, 0x0104, 0x0000, 0x0106, 0x0000, 0x0108, 0x0000, 0x010A, 0x0000, 0x010C, 0x0000, 0x010E,
+ 0x0000, 0x0110, 0x0000, 0x0112, 0x0000, 0x0114, 0x0000, 0x0116, 0x0000, 0x0118, 0x0000, 0x011A, 0x0000, 0x011C, 0x0000, 0x011E,
+ 0x0000, 0x0120, 0x0000, 0x0122, 0x0000, 0x0124, 0x0000, 0x0126, 0x0000, 0x0128, 0x0000, 0x012A, 0x0000, 0x012C, 0x0000, 0x012E,
+ 0x0000, 0x0049, 0x0000, 0x0132, 0x0000, 0x0134, 0x0000, 0x0136, 0x0000, 0x0000, 0x0139, 0x0000, 0x013B, 0x0000, 0x013D, 0x0000,
+ 0x013F, 0x0000, 0x0141, 0x0000, 0x0143, 0x0000, 0x0145, 0x0000, 0x0147, 0x0000, 0x0000, 0x014A, 0x0000, 0x014C, 0x0000, 0x014E,
+ 0x0000, 0x0150, 0x0000, 0x0152, 0x0000, 0x0154, 0x0000, 0x0156, 0x0000, 0x0158, 0x0000, 0x015A, 0x0000, 0x015C, 0x0000, 0x015E,
+ 0x0000, 0x0160, 0x0000, 0x0162, 0x0000, 0x0164, 0x0000, 0x0166, 0x0000, 0x0168, 0x0000, 0x016A, 0x0000, 0x016C, 0x0000, 0x016E,
+ 0x0000, 0x0170, 0x0000, 0x0172, 0x0000, 0x0174, 0x0000, 0x0176, 0x0000, 0x0000, 0x0179, 0x0000, 0x017B, 0x0000, 0x017D, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0182, 0x0000, 0x0184, 0x0000, 0x0000, 0x0187, 0x0000, 0x0000, 0x0000, 0x018B, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0191, 0x0000, 0x0000, 0x01F6, 0x0000, 0x0000, 0x0000, 0x0198, 0x0000, 0x0000, 0x0000, 0x0000, 0x0220, 0x0000,
+ 0x0000, 0x01A0, 0x0000, 0x01A2, 0x0000, 0x01A4, 0x0000, 0x0000, 0x01A7, 0x0000, 0x0000, 0x0000, 0x0000, 0x01AC, 0x0000, 0x0000,
+ 0x01AF, 0x0000, 0x0000, 0x0000, 0x01B3, 0x0000, 0x01B5, 0x0000, 0x0000, 0x01B8, 0x0000, 0x0000, 0x0000, 0x01BC, 0x0000, 0x01F7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01C5, 0x0000, 0x0000, 0x01C8, 0x0000, 0x0000, 0x01CB, 0x0000, 0x01CD, 0x0000,
+ 0x01CF, 0x0000, 0x01D1, 0x0000, 0x01D3, 0x0000, 0x01D5, 0x0000, 0x01D7, 0x0000, 0x01D9, 0x0000, 0x01DB, 0x018E, 0x0000, 0x01DE,
+ 0x0000, 0x01E0, 0x0000, 0x01E2, 0x0000, 0x01E4, 0x0000, 0x01E6, 0x0000, 0x01E8, 0x0000, 0x01EA, 0x0000, 0x01EC, 0x0000, 0x01EE,
+ 0x0000, 0x0000, 0x0000, 0x01F2, 0x0000, 0x01F4, 0x0000, 0x0000, 0x0000, 0x01F8, 0x0000, 0x01FA, 0x0000, 0x01FC, 0x0000, 0x01FE
+};
+
+
+static kvi_wchar_t case_ltu_02[256] =
+{
+ 0x0000, 0x0200, 0x0000, 0x0202, 0x0000, 0x0204, 0x0000, 0x0206, 0x0000, 0x0208, 0x0000, 0x020A, 0x0000, 0x020C, 0x0000, 0x020E,
+ 0x0000, 0x0210, 0x0000, 0x0212, 0x0000, 0x0214, 0x0000, 0x0216, 0x0000, 0x0218, 0x0000, 0x021A, 0x0000, 0x021C, 0x0000, 0x021E,
+ 0x0000, 0x0000, 0x0000, 0x0222, 0x0000, 0x0224, 0x0000, 0x0226, 0x0000, 0x0228, 0x0000, 0x022A, 0x0000, 0x022C, 0x0000, 0x022E,
+ 0x0000, 0x0230, 0x0000, 0x0232, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0181, 0x0186, 0x0000, 0x0189, 0x018A, 0x0000, 0x018F, 0x0000, 0x0190, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0193, 0x0000, 0x0000, 0x0194, 0x0000, 0x0000, 0x0000, 0x0000, 0x0197, 0x0196, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x019C,
+ 0x0000, 0x0000, 0x019D, 0x0000, 0x0000, 0x019F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x01A6, 0x0000, 0x0000, 0x01A9, 0x0000, 0x0000, 0x0000, 0x0000, 0x01AE, 0x0000, 0x01B1, 0x01B2, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x01B7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+
+static kvi_wchar_t case_ltu_03[256] =
+{
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0386, 0x0388, 0x0389, 0x038A,
+ 0x0000, 0x0391, 0x03D0, 0x0393, 0x0394, 0x03F5, 0x0396, 0x0397, 0x03F4, 0x1FBE, 0x03F0, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F,
+ 0x03D6, 0x03F1, 0x0000, 0x03F2, 0x03A4, 0x03A5, 0x03D5, 0x03A7, 0x03A8, 0x2126, 0x03AA, 0x03AB, 0x038C, 0x038E, 0x038F, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03D8, 0x0000, 0x03DA, 0x0000, 0x03DC, 0x0000, 0x03DE,
+ 0x0000, 0x03E0, 0x0000, 0x03E2, 0x0000, 0x03E4, 0x0000, 0x03E6, 0x0000, 0x03E8, 0x0000, 0x03EA, 0x0000, 0x03EC, 0x0000, 0x03EE,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+
+static kvi_wchar_t case_ltu_04[256] =
+{
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
+ 0x0400, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409, 0x040A, 0x040B, 0x040C, 0x040D, 0x040E, 0x040F,
+ 0x0000, 0x0460, 0x0000, 0x0462, 0x0000, 0x0464, 0x0000, 0x0466, 0x0000, 0x0468, 0x0000, 0x046A, 0x0000, 0x046C, 0x0000, 0x046E,
+ 0x0000, 0x0470, 0x0000, 0x0472, 0x0000, 0x0474, 0x0000, 0x0476, 0x0000, 0x0478, 0x0000, 0x047A, 0x0000, 0x047C, 0x0000, 0x047E,
+ 0x0000, 0x0480, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x048A, 0x0000, 0x048C, 0x0000, 0x048E,
+ 0x0000, 0x0490, 0x0000, 0x0492, 0x0000, 0x0494, 0x0000, 0x0496, 0x0000, 0x0498, 0x0000, 0x049A, 0x0000, 0x049C, 0x0000, 0x049E,
+ 0x0000, 0x04A0, 0x0000, 0x04A2, 0x0000, 0x04A4, 0x0000, 0x04A6, 0x0000, 0x04A8, 0x0000, 0x04AA, 0x0000, 0x04AC, 0x0000, 0x04AE,
+ 0x0000, 0x04B0, 0x0000, 0x04B2, 0x0000, 0x04B4, 0x0000, 0x04B6, 0x0000, 0x04B8, 0x0000, 0x04BA, 0x0000, 0x04BC, 0x0000, 0x04BE,
+ 0x0000, 0x0000, 0x04C1, 0x0000, 0x04C3, 0x0000, 0x04C5, 0x0000, 0x04C7, 0x0000, 0x04C9, 0x0000, 0x04CB, 0x0000, 0x04CD, 0x0000,
+ 0x0000, 0x04D0, 0x0000, 0x04D2, 0x0000, 0x04D4, 0x0000, 0x04D6, 0x0000, 0x04D8, 0x0000, 0x04DA, 0x0000, 0x04DC, 0x0000, 0x04DE,
+ 0x0000, 0x04E0, 0x0000, 0x04E2, 0x0000, 0x04E4, 0x0000, 0x04E6, 0x0000, 0x04E8, 0x0000, 0x04EA, 0x0000, 0x04EC, 0x0000, 0x04EE,
+ 0x0000, 0x04F0, 0x0000, 0x04F2, 0x0000, 0x04F4, 0x0000, 0x0000, 0x0000, 0x04F8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+
+static kvi_wchar_t case_ltu_05[256] =
+{
+ 0x0000, 0x0500, 0x0000, 0x0502, 0x0000, 0x0504, 0x0000, 0x0506, 0x0000, 0x0508, 0x0000, 0x050A, 0x0000, 0x050C, 0x0000, 0x050E,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0531, 0x0532, 0x0533, 0x0534, 0x0535, 0x0536, 0x0537, 0x0538, 0x0539, 0x053A, 0x053B, 0x053C, 0x053D, 0x053E, 0x053F,
+ 0x0540, 0x0541, 0x0542, 0x0543, 0x0544, 0x0545, 0x0546, 0x0547, 0x0548, 0x0549, 0x054A, 0x054B, 0x054C, 0x054D, 0x054E, 0x054F,
+ 0x0550, 0x0551, 0x0552, 0x0553, 0x0554, 0x0555, 0x0556, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+
+static kvi_wchar_t case_ltu_1E[256] =
+{
+ 0x0000, 0x1E00, 0x0000, 0x1E02, 0x0000, 0x1E04, 0x0000, 0x1E06, 0x0000, 0x1E08, 0x0000, 0x1E0A, 0x0000, 0x1E0C, 0x0000, 0x1E0E,
+ 0x0000, 0x1E10, 0x0000, 0x1E12, 0x0000, 0x1E14, 0x0000, 0x1E16, 0x0000, 0x1E18, 0x0000, 0x1E1A, 0x0000, 0x1E1C, 0x0000, 0x1E1E,
+ 0x0000, 0x1E20, 0x0000, 0x1E22, 0x0000, 0x1E24, 0x0000, 0x1E26, 0x0000, 0x1E28, 0x0000, 0x1E2A, 0x0000, 0x1E2C, 0x0000, 0x1E2E,
+ 0x0000, 0x1E30, 0x0000, 0x1E32, 0x0000, 0x1E34, 0x0000, 0x1E36, 0x0000, 0x1E38, 0x0000, 0x1E3A, 0x0000, 0x1E3C, 0x0000, 0x1E3E,
+ 0x0000, 0x1E40, 0x0000, 0x1E42, 0x0000, 0x1E44, 0x0000, 0x1E46, 0x0000, 0x1E48, 0x0000, 0x1E4A, 0x0000, 0x1E4C, 0x0000, 0x1E4E,
+ 0x0000, 0x1E50, 0x0000, 0x1E52, 0x0000, 0x1E54, 0x0000, 0x1E56, 0x0000, 0x1E58, 0x0000, 0x1E5A, 0x0000, 0x1E5C, 0x0000, 0x1E5E,
+ 0x0000, 0x1E9B, 0x0000, 0x1E62, 0x0000, 0x1E64, 0x0000, 0x1E66, 0x0000, 0x1E68, 0x0000, 0x1E6A, 0x0000, 0x1E6C, 0x0000, 0x1E6E,
+ 0x0000, 0x1E70, 0x0000, 0x1E72, 0x0000, 0x1E74, 0x0000, 0x1E76, 0x0000, 0x1E78, 0x0000, 0x1E7A, 0x0000, 0x1E7C, 0x0000, 0x1E7E,
+ 0x0000, 0x1E80, 0x0000, 0x1E82, 0x0000, 0x1E84, 0x0000, 0x1E86, 0x0000, 0x1E88, 0x0000, 0x1E8A, 0x0000, 0x1E8C, 0x0000, 0x1E8E,
+ 0x0000, 0x1E90, 0x0000, 0x1E92, 0x0000, 0x1E94, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x1EA0, 0x0000, 0x1EA2, 0x0000, 0x1EA4, 0x0000, 0x1EA6, 0x0000, 0x1EA8, 0x0000, 0x1EAA, 0x0000, 0x1EAC, 0x0000, 0x1EAE,
+ 0x0000, 0x1EB0, 0x0000, 0x1EB2, 0x0000, 0x1EB4, 0x0000, 0x1EB6, 0x0000, 0x1EB8, 0x0000, 0x1EBA, 0x0000, 0x1EBC, 0x0000, 0x1EBE,
+ 0x0000, 0x1EC0, 0x0000, 0x1EC2, 0x0000, 0x1EC4, 0x0000, 0x1EC6, 0x0000, 0x1EC8, 0x0000, 0x1ECA, 0x0000, 0x1ECC, 0x0000, 0x1ECE,
+ 0x0000, 0x1ED0, 0x0000, 0x1ED2, 0x0000, 0x1ED4, 0x0000, 0x1ED6, 0x0000, 0x1ED8, 0x0000, 0x1EDA, 0x0000, 0x1EDC, 0x0000, 0x1EDE,
+ 0x0000, 0x1EE0, 0x0000, 0x1EE2, 0x0000, 0x1EE4, 0x0000, 0x1EE6, 0x0000, 0x1EE8, 0x0000, 0x1EEA, 0x0000, 0x1EEC, 0x0000, 0x1EEE,
+ 0x0000, 0x1EF0, 0x0000, 0x1EF2, 0x0000, 0x1EF4, 0x0000, 0x1EF6, 0x0000, 0x1EF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+
+static kvi_wchar_t case_ltu_1F[256] =
+{
+ 0x1F08, 0x1F09, 0x1F0A, 0x1F0B, 0x1F0C, 0x1F0D, 0x1F0E, 0x1F0F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1F18, 0x1F19, 0x1F1A, 0x1F1B, 0x1F1C, 0x1F1D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1F28, 0x1F29, 0x1F2A, 0x1F2B, 0x1F2C, 0x1F2D, 0x1F2E, 0x1F2F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1F38, 0x1F39, 0x1F3A, 0x1F3B, 0x1F3C, 0x1F3D, 0x1F3E, 0x1F3F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1F48, 0x1F49, 0x1F4A, 0x1F4B, 0x1F4C, 0x1F4D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x1F59, 0x0000, 0x1F5B, 0x0000, 0x1F5D, 0x0000, 0x1F5F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1F68, 0x1F69, 0x1F6A, 0x1F6B, 0x1F6C, 0x1F6D, 0x1F6E, 0x1F6F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1FBA, 0x1FBB, 0x1FC8, 0x1FC9, 0x1FCA, 0x1FCB, 0x1FDA, 0x1FDB, 0x1FF8, 0x1FF9, 0x1FEA, 0x1FEB, 0x1FFA, 0x1FFB, 0x0000, 0x0000,
+ 0x1F88, 0x1F89, 0x1F8A, 0x1F8B, 0x1F8C, 0x1F8D, 0x1F8E, 0x1F8F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1F98, 0x1F99, 0x1F9A, 0x1F9B, 0x1F9C, 0x1F9D, 0x1F9E, 0x1F9F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1FA8, 0x1FA9, 0x1FAA, 0x1FAB, 0x1FAC, 0x1FAD, 0x1FAE, 0x1FAF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1FB8, 0x1FB9, 0x0000, 0x1FBC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x1FCC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1FD8, 0x1FD9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1FE8, 0x1FE9, 0x0000, 0x0000, 0x0000, 0x1FEC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x1FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+
+static kvi_wchar_t case_ltu_21[256] =
+{
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x216A, 0x216B, 0x216C, 0x216D, 0x216E, 0x216F,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+
+static kvi_wchar_t case_ltu_24[256] =
+{
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x24B6, 0x24B7, 0x24B8, 0x24B9, 0x24BA, 0x24BB, 0x24BC, 0x24BD, 0x24BE, 0x24BF, 0x24C0, 0x24C1, 0x24C2, 0x24C3, 0x24C4, 0x24C5,
+ 0x24C6, 0x24C7, 0x24C8, 0x24C9, 0x24CA, 0x24CB, 0x24CC, 0x24CD, 0x24CE, 0x24CF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+
+static kvi_wchar_t case_ltu_FF[256] =
+{
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F,
+ 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+
+kvi_wchar_t * kvirc_case_map_ltu[256] =
+{
+ case_ltu_00, case_ltu_01, case_ltu_02, case_ltu_03, case_ltu_04, case_ltu_05, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_ltu_1E, case_ltu_1F,
+ case_xtx_XX, case_ltu_21, case_xtx_XX, case_xtx_XX, case_ltu_24, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_ltu_FF
+};
+
+
+static kvi_wchar_t case_utl_00[256] =
+{
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0131, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03BC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
+ 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x0000, 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+
+static kvi_wchar_t case_utl_01[256] =
+{
+ 0x0101, 0x0000, 0x0103, 0x0000, 0x0105, 0x0000, 0x0107, 0x0000, 0x0109, 0x0000, 0x010B, 0x0000, 0x010D, 0x0000, 0x010F, 0x0000,
+ 0x0111, 0x0000, 0x0113, 0x0000, 0x0115, 0x0000, 0x0117, 0x0000, 0x0119, 0x0000, 0x011B, 0x0000, 0x011D, 0x0000, 0x011F, 0x0000,
+ 0x0121, 0x0000, 0x0123, 0x0000, 0x0125, 0x0000, 0x0127, 0x0000, 0x0129, 0x0000, 0x012B, 0x0000, 0x012D, 0x0000, 0x012F, 0x0000,
+ 0x0069, 0x0000, 0x0133, 0x0000, 0x0135, 0x0000, 0x0137, 0x0000, 0x0000, 0x013A, 0x0000, 0x013C, 0x0000, 0x013E, 0x0000, 0x0140,
+ 0x0000, 0x0142, 0x0000, 0x0144, 0x0000, 0x0146, 0x0000, 0x0148, 0x0000, 0x0000, 0x014B, 0x0000, 0x014D, 0x0000, 0x014F, 0x0000,
+ 0x0151, 0x0000, 0x0153, 0x0000, 0x0155, 0x0000, 0x0157, 0x0000, 0x0159, 0x0000, 0x015B, 0x0000, 0x015D, 0x0000, 0x015F, 0x0000,
+ 0x0161, 0x0000, 0x0163, 0x0000, 0x0165, 0x0000, 0x0167, 0x0000, 0x0169, 0x0000, 0x016B, 0x0000, 0x016D, 0x0000, 0x016F, 0x0000,
+ 0x0171, 0x0000, 0x0173, 0x0000, 0x0175, 0x0000, 0x0177, 0x0000, 0x00FF, 0x017A, 0x0000, 0x017C, 0x0000, 0x017E, 0x0000, 0x0073,
+ 0x0000, 0x0253, 0x0183, 0x0000, 0x0185, 0x0000, 0x0254, 0x0188, 0x0000, 0x0256, 0x0257, 0x018C, 0x0000, 0x0000, 0x01DD, 0x0259,
+ 0x025B, 0x0192, 0x0000, 0x0260, 0x0263, 0x0000, 0x0269, 0x0268, 0x0199, 0x0000, 0x0000, 0x0000, 0x026F, 0x0272, 0x0000, 0x0275,
+ 0x01A1, 0x0000, 0x01A3, 0x0000, 0x01A5, 0x0000, 0x0280, 0x01A8, 0x0000, 0x0283, 0x0000, 0x0000, 0x01AD, 0x0000, 0x0288, 0x01B0,
+ 0x0000, 0x028A, 0x028B, 0x01B4, 0x0000, 0x01B6, 0x0000, 0x0292, 0x01B9, 0x0000, 0x0000, 0x0000, 0x01BD, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x01C6, 0x01C6, 0x0000, 0x01C9, 0x01C9, 0x0000, 0x01CC, 0x01CC, 0x0000, 0x01CE, 0x0000, 0x01D0,
+ 0x0000, 0x01D2, 0x0000, 0x01D4, 0x0000, 0x01D6, 0x0000, 0x01D8, 0x0000, 0x01DA, 0x0000, 0x01DC, 0x0000, 0x0000, 0x01DF, 0x0000,
+ 0x01E1, 0x0000, 0x01E3, 0x0000, 0x01E5, 0x0000, 0x01E7, 0x0000, 0x01E9, 0x0000, 0x01EB, 0x0000, 0x01ED, 0x0000, 0x01EF, 0x0000,
+ 0x0000, 0x01F3, 0x01F3, 0x0000, 0x01F5, 0x0000, 0x0195, 0x01BF, 0x01F9, 0x0000, 0x01FB, 0x0000, 0x01FD, 0x0000, 0x01FF, 0x0000
+};
+
+
+static kvi_wchar_t case_utl_02[256] =
+{
+ 0x0201, 0x0000, 0x0203, 0x0000, 0x0205, 0x0000, 0x0207, 0x0000, 0x0209, 0x0000, 0x020B, 0x0000, 0x020D, 0x0000, 0x020F, 0x0000,
+ 0x0211, 0x0000, 0x0213, 0x0000, 0x0215, 0x0000, 0x0217, 0x0000, 0x0219, 0x0000, 0x021B, 0x0000, 0x021D, 0x0000, 0x021F, 0x0000,
+ 0x019E, 0x0000, 0x0223, 0x0000, 0x0225, 0x0000, 0x0227, 0x0000, 0x0229, 0x0000, 0x022B, 0x0000, 0x022D, 0x0000, 0x022F, 0x0000,
+ 0x0231, 0x0000, 0x0233, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+
+static kvi_wchar_t case_utl_03[256] =
+{
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03B9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03AC, 0x0000, 0x03AD, 0x03AE, 0x03AF, 0x0000, 0x03CC, 0x0000, 0x03CD, 0x03CE,
+ 0x0000, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF,
+ 0x03C0, 0x03C1, 0x0000, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x03C3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x03B2, 0x03B8, 0x0000, 0x0000, 0x0000, 0x03C6, 0x03C0, 0x0000, 0x03D9, 0x0000, 0x03DB, 0x0000, 0x03DD, 0x0000, 0x03DF, 0x0000,
+ 0x03E1, 0x0000, 0x03E3, 0x0000, 0x03E5, 0x0000, 0x03E7, 0x0000, 0x03E9, 0x0000, 0x03EB, 0x0000, 0x03ED, 0x0000, 0x03EF, 0x0000,
+ 0x03BA, 0x03C1, 0x03C3, 0x0000, 0x03B8, 0x03B5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+
+static kvi_wchar_t case_utl_04[256] =
+{
+ 0x0450, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, 0x0458, 0x0459, 0x045A, 0x045B, 0x045C, 0x045D, 0x045E, 0x045F,
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0461, 0x0000, 0x0463, 0x0000, 0x0465, 0x0000, 0x0467, 0x0000, 0x0469, 0x0000, 0x046B, 0x0000, 0x046D, 0x0000, 0x046F, 0x0000,
+ 0x0471, 0x0000, 0x0473, 0x0000, 0x0475, 0x0000, 0x0477, 0x0000, 0x0479, 0x0000, 0x047B, 0x0000, 0x047D, 0x0000, 0x047F, 0x0000,
+ 0x0481, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x048B, 0x0000, 0x048D, 0x0000, 0x048F, 0x0000,
+ 0x0491, 0x0000, 0x0493, 0x0000, 0x0495, 0x0000, 0x0497, 0x0000, 0x0499, 0x0000, 0x049B, 0x0000, 0x049D, 0x0000, 0x049F, 0x0000,
+ 0x04A1, 0x0000, 0x04A3, 0x0000, 0x04A5, 0x0000, 0x04A7, 0x0000, 0x04A9, 0x0000, 0x04AB, 0x0000, 0x04AD, 0x0000, 0x04AF, 0x0000,
+ 0x04B1, 0x0000, 0x04B3, 0x0000, 0x04B5, 0x0000, 0x04B7, 0x0000, 0x04B9, 0x0000, 0x04BB, 0x0000, 0x04BD, 0x0000, 0x04BF, 0x0000,
+ 0x0000, 0x04C2, 0x0000, 0x04C4, 0x0000, 0x04C6, 0x0000, 0x04C8, 0x0000, 0x04CA, 0x0000, 0x04CC, 0x0000, 0x04CE, 0x0000, 0x0000,
+ 0x04D1, 0x0000, 0x04D3, 0x0000, 0x04D5, 0x0000, 0x04D7, 0x0000, 0x04D9, 0x0000, 0x04DB, 0x0000, 0x04DD, 0x0000, 0x04DF, 0x0000,
+ 0x04E1, 0x0000, 0x04E3, 0x0000, 0x04E5, 0x0000, 0x04E7, 0x0000, 0x04E9, 0x0000, 0x04EB, 0x0000, 0x04ED, 0x0000, 0x04EF, 0x0000,
+ 0x04F1, 0x0000, 0x04F3, 0x0000, 0x04F5, 0x0000, 0x0000, 0x0000, 0x04F9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+
+static kvi_wchar_t case_utl_05[256] =
+{
+ 0x0501, 0x0000, 0x0503, 0x0000, 0x0505, 0x0000, 0x0507, 0x0000, 0x0509, 0x0000, 0x050B, 0x0000, 0x050D, 0x0000, 0x050F, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0561, 0x0562, 0x0563, 0x0564, 0x0565, 0x0566, 0x0567, 0x0568, 0x0569, 0x056A, 0x056B, 0x056C, 0x056D, 0x056E, 0x056F,
+ 0x0570, 0x0571, 0x0572, 0x0573, 0x0574, 0x0575, 0x0576, 0x0577, 0x0578, 0x0579, 0x057A, 0x057B, 0x057C, 0x057D, 0x057E, 0x057F,
+ 0x0580, 0x0581, 0x0582, 0x0583, 0x0584, 0x0585, 0x0586, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+
+static kvi_wchar_t case_utl_1E[256] =
+{
+ 0x1E01, 0x0000, 0x1E03, 0x0000, 0x1E05, 0x0000, 0x1E07, 0x0000, 0x1E09, 0x0000, 0x1E0B, 0x0000, 0x1E0D, 0x0000, 0x1E0F, 0x0000,
+ 0x1E11, 0x0000, 0x1E13, 0x0000, 0x1E15, 0x0000, 0x1E17, 0x0000, 0x1E19, 0x0000, 0x1E1B, 0x0000, 0x1E1D, 0x0000, 0x1E1F, 0x0000,
+ 0x1E21, 0x0000, 0x1E23, 0x0000, 0x1E25, 0x0000, 0x1E27, 0x0000, 0x1E29, 0x0000, 0x1E2B, 0x0000, 0x1E2D, 0x0000, 0x1E2F, 0x0000,
+ 0x1E31, 0x0000, 0x1E33, 0x0000, 0x1E35, 0x0000, 0x1E37, 0x0000, 0x1E39, 0x0000, 0x1E3B, 0x0000, 0x1E3D, 0x0000, 0x1E3F, 0x0000,
+ 0x1E41, 0x0000, 0x1E43, 0x0000, 0x1E45, 0x0000, 0x1E47, 0x0000, 0x1E49, 0x0000, 0x1E4B, 0x0000, 0x1E4D, 0x0000, 0x1E4F, 0x0000,
+ 0x1E51, 0x0000, 0x1E53, 0x0000, 0x1E55, 0x0000, 0x1E57, 0x0000, 0x1E59, 0x0000, 0x1E5B, 0x0000, 0x1E5D, 0x0000, 0x1E5F, 0x0000,
+ 0x1E61, 0x0000, 0x1E63, 0x0000, 0x1E65, 0x0000, 0x1E67, 0x0000, 0x1E69, 0x0000, 0x1E6B, 0x0000, 0x1E6D, 0x0000, 0x1E6F, 0x0000,
+ 0x1E71, 0x0000, 0x1E73, 0x0000, 0x1E75, 0x0000, 0x1E77, 0x0000, 0x1E79, 0x0000, 0x1E7B, 0x0000, 0x1E7D, 0x0000, 0x1E7F, 0x0000,
+ 0x1E81, 0x0000, 0x1E83, 0x0000, 0x1E85, 0x0000, 0x1E87, 0x0000, 0x1E89, 0x0000, 0x1E8B, 0x0000, 0x1E8D, 0x0000, 0x1E8F, 0x0000,
+ 0x1E91, 0x0000, 0x1E93, 0x0000, 0x1E95, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1E61, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1EA1, 0x0000, 0x1EA3, 0x0000, 0x1EA5, 0x0000, 0x1EA7, 0x0000, 0x1EA9, 0x0000, 0x1EAB, 0x0000, 0x1EAD, 0x0000, 0x1EAF, 0x0000,
+ 0x1EB1, 0x0000, 0x1EB3, 0x0000, 0x1EB5, 0x0000, 0x1EB7, 0x0000, 0x1EB9, 0x0000, 0x1EBB, 0x0000, 0x1EBD, 0x0000, 0x1EBF, 0x0000,
+ 0x1EC1, 0x0000, 0x1EC3, 0x0000, 0x1EC5, 0x0000, 0x1EC7, 0x0000, 0x1EC9, 0x0000, 0x1ECB, 0x0000, 0x1ECD, 0x0000, 0x1ECF, 0x0000,
+ 0x1ED1, 0x0000, 0x1ED3, 0x0000, 0x1ED5, 0x0000, 0x1ED7, 0x0000, 0x1ED9, 0x0000, 0x1EDB, 0x0000, 0x1EDD, 0x0000, 0x1EDF, 0x0000,
+ 0x1EE1, 0x0000, 0x1EE3, 0x0000, 0x1EE5, 0x0000, 0x1EE7, 0x0000, 0x1EE9, 0x0000, 0x1EEB, 0x0000, 0x1EED, 0x0000, 0x1EEF, 0x0000,
+ 0x1EF1, 0x0000, 0x1EF3, 0x0000, 0x1EF5, 0x0000, 0x1EF7, 0x0000, 0x1EF9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+
+static kvi_wchar_t case_utl_1F[256] =
+{
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1F00, 0x1F01, 0x1F02, 0x1F03, 0x1F04, 0x1F05, 0x1F06, 0x1F07,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1F10, 0x1F11, 0x1F12, 0x1F13, 0x1F14, 0x1F15, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1F20, 0x1F21, 0x1F22, 0x1F23, 0x1F24, 0x1F25, 0x1F26, 0x1F27,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1F30, 0x1F31, 0x1F32, 0x1F33, 0x1F34, 0x1F35, 0x1F36, 0x1F37,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1F40, 0x1F41, 0x1F42, 0x1F43, 0x1F44, 0x1F45, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1F51, 0x0000, 0x1F53, 0x0000, 0x1F55, 0x0000, 0x1F57,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1F60, 0x1F61, 0x1F62, 0x1F63, 0x1F64, 0x1F65, 0x1F66, 0x1F67,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1F80, 0x1F81, 0x1F82, 0x1F83, 0x1F84, 0x1F85, 0x1F86, 0x1F87,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1F90, 0x1F91, 0x1F92, 0x1F93, 0x1F94, 0x1F95, 0x1F96, 0x1F97,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1FA0, 0x1FA1, 0x1FA2, 0x1FA3, 0x1FA4, 0x1FA5, 0x1FA6, 0x1FA7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1FB0, 0x1FB1, 0x1F70, 0x1F71, 0x1FB3, 0x0000, 0x03B9, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1F72, 0x1F73, 0x1F74, 0x1F75, 0x1FC3, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1FD0, 0x1FD1, 0x1F76, 0x1F77, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1FE0, 0x1FE1, 0x1F7A, 0x1F7B, 0x1FE5, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1F78, 0x1F79, 0x1F7C, 0x1F7D, 0x1FF3, 0x0000, 0x0000, 0x0000
+};
+
+
+static kvi_wchar_t case_utl_21[256] =
+{
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03C9, 0x0000, 0x0000, 0x0000, 0x006B, 0x00E5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x217A, 0x217B, 0x217C, 0x217D, 0x217E, 0x217F,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+
+static kvi_wchar_t case_utl_24[256] =
+{
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x24D0, 0x24D1, 0x24D2, 0x24D3, 0x24D4, 0x24D5, 0x24D6, 0x24D7, 0x24D8, 0x24D9,
+ 0x24DA, 0x24DB, 0x24DC, 0x24DD, 0x24DE, 0x24DF, 0x24E0, 0x24E1, 0x24E2, 0x24E3, 0x24E4, 0x24E5, 0x24E6, 0x24E7, 0x24E8, 0x24E9,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+
+static kvi_wchar_t case_utl_FF[256] =
+{
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F,
+ 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+
+kvi_wchar_t * kvirc_case_map_utl[256] =
+{
+ case_utl_00, case_utl_01, case_utl_02, case_utl_03, case_utl_04, case_utl_05, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_utl_1E, case_utl_1F,
+ case_xtx_XX, case_utl_21, case_xtx_XX, case_xtx_XX, case_utl_24, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX,
+ case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_xtx_XX, case_utl_FF
+};
+
+
+// Case mapping tables are 13824 bytes long
+
+
+
+kvi_wchar_t kvi_wtolower(kvi_wchar_t c)
+{
+ kvi_wchar_t l = kvirc_case_map_utl[c >> 8][c & 0xff];
+ return l ? l : c;
+}
+
+bool kvi_hstrEqualCIN(const kvi_wchar_t *str1,const char *str2,int len)
+{
+ while(len-- && *str1)if(kvi_wtolower(*str1++) != (kvi_wchar_t)tolower(*str2++))return false;
+ return (len < 0);
+}
+
+
+const kvi_wchar_t * KviIrcView::getTextLine(int iMsgType,
+ const kvi_wchar_t * data_ptr,
+ KviIrcViewLine *line_ptr,
+ bool bEnableTimeStamp)
+{
+ const kvi_wchar_t* pUnEscapeAt = 0;
+ // Splits the text data in lines (separated by '\n')
+
+ // NOTE: This function may be NOT reentrant
+ // ... no function in this file is supposed to be thread safe anyway
+
+ int iTextIdx = 0; //we're at the beginning in the buffer
+ int iCurChunk = 0;
+ int blockLen;
+
+ register const kvi_wchar_t *p= data_ptr;
+
+ //Alloc the first attribute
+ line_ptr->uChunkCount = 1;
+ line_ptr->pChunks = (KviIrcViewLineChunk *)kvi_malloc(sizeof(KviIrcViewLineChunk));
+ //And fill it up
+ line_ptr->pChunks[0].type = KVI_TEXT_COLOR;
+ line_ptr->pChunks[0].iTextStart = 0;
+ line_ptr->pChunks[0].colors.back = KVI_OPTION_MSGTYPE(iMsgType).back();
+ line_ptr->pChunks[0].colors.fore = KVI_OPTION_MSGTYPE(iMsgType).fore();
+ line_ptr->pChunks[0].customFore=QColor();
+
+ if(bEnableTimeStamp && KVI_OPTION_BOOL(KviOption_boolIrcViewTimestamp))
+ {
+ QString szTimestamp;
+ szTimestamp=QDateTime::currentDateTime (
+ KVI_OPTION_BOOL(KviOption_boolIrcViewTimestampUTC) ? Qt::UTC : Qt::LocalTime ).toString(
+ KVI_OPTION_STRING(KviOption_stringIrcViewTimestampFormat) );
+ szTimestamp.append(' ');
+ int iTimeStampLength=szTimestamp.length();
+
+ if(KVI_OPTION_BOOL(KviOption_boolUseSpecialColorForTimestamp))
+ {
+ // we need three chunks: the first one uses the default colors
+ // for the message type, the second one the special colors
+ // of the timestamp and the third one goes back to the defaults
+ line_ptr->pChunks[0].iTextLen = 0;
+
+ line_ptr->uChunkCount=3;
+ line_ptr->pChunks=(KviIrcViewLineChunk *)kvi_realloc((void *)line_ptr->pChunks,3 * sizeof(KviIrcViewLineChunk));
+
+ line_ptr->pChunks[1].type = KVI_TEXT_COLOR;
+ line_ptr->pChunks[1].iTextStart = 0;
+ line_ptr->pChunks[1].iTextLen = iTimeStampLength-1;
+ line_ptr->pChunks[1].colors.back = KVI_OPTION_UINT(KviOption_uintTimeStampBackground);
+ line_ptr->pChunks[1].colors.fore = KVI_OPTION_UINT(KviOption_uintTimeStampForeground);
+
+ line_ptr->pChunks[2].type = KVI_TEXT_COLOR;
+ line_ptr->pChunks[2].iTextStart = iTimeStampLength-1;
+ line_ptr->pChunks[2].iTextLen = 1;
+ line_ptr->pChunks[2].colors.back = KVI_OPTION_MSGTYPE(iMsgType).back();
+ line_ptr->pChunks[2].colors.fore = KVI_OPTION_MSGTYPE(iMsgType).fore();
+ line_ptr->pChunks[2].customFore=QColor();
+ iCurChunk+=2;
+ } else {
+ // only one chunk
+ line_ptr->pChunks[0].iTextLen = iTimeStampLength;
+ }
+
+ // We need the timestamp string to be added
+ // alloc the necessary space
+ line_ptr->szText.setLength(iTimeStampLength);
+
+ iTextIdx = iTimeStampLength; // the rest of the string will begin 11 chars later
+
+ // throw away const: we WANT to set the chars :D
+ register QChar * data_ptr_aux = (QChar *)line_ptr->szText.unicode();
+ register QChar * stamp_ptr_aux = (QChar *)szTimestamp.unicode();
+
+ for(int i=0;i<iTimeStampLength;i++)
+ *data_ptr_aux++ = *stamp_ptr_aux++;
+ } else {
+ // Timestamp not needed... but we don't want null strings floating around
+ line_ptr->szText = "";
+ line_ptr->pChunks[0].iTextLen = 0;
+ }
+
+ //
+ // Ok... a couple of macros that occur really frequently
+ // in the following code...
+ // these could work well as functions too...but the macros are a lot faster :)
+ //
+
+#define APPEND_LAST_TEXT_BLOCK(__data_ptr,__data_len) \
+ blockLen = (__data_len); \
+ line_ptr->pChunks[iCurChunk].iTextLen += blockLen; \
+ kvi_appendWCharToQStringWithLength(&(line_ptr->szText),__data_ptr,__data_len); \
+ iTextIdx+=blockLen;
+
+#define APPEND_LAST_TEXT_BLOCK_HIDDEN_FROM_NOW(__data_ptr,__data_len) \
+ blockLen = (__data_len); \
+ kvi_appendWCharToQStringWithLength(&(line_ptr->szText),__data_ptr,__data_len); \
+ iTextIdx+=blockLen;
+
+
+#define APPEND_ZERO_LENGTH_BLOCK(__data_ptr) /* does nothing */
+
+#define NEW_LINE_CHUNK(_chunk_type) \
+ line_ptr->uChunkCount++; \
+ line_ptr->pChunks=(KviIrcViewLineChunk *)kvi_realloc((void *)line_ptr->pChunks, \
+ line_ptr->uChunkCount * sizeof(KviIrcViewLineChunk)); \
+ iCurChunk++; \
+ line_ptr->pChunks[iCurChunk].type = _chunk_type; \
+ line_ptr->pChunks[iCurChunk].iTextStart = iTextIdx; \
+ line_ptr->pChunks[iCurChunk].iTextLen = 0; \
+ line_ptr->pChunks[iCurChunk].customFore=iCurChunk ? line_ptr->pChunks[iCurChunk-1].customFore : QColor();
+
+ // EOF Macros
+
+ int partLen;
+
+#ifdef COMPILE_USE_DYNAMIC_LABELS
+
+ // Herezy :)
+
+ // This is not only usage of the *Evil Goto(tm)*
+ // This is also a *rather unclear* use of the *Really Evil Goto(tm)*
+ // char_to_check_jump_table is a table of dynamic label addresses...
+ // we use it to jump to the proper check
+ // loop_begin is a dynamic label, and we use it to
+ // return to the appropriate loop
+ // This is again BAD PROGRAMMING(TM) :).... but it is faster than
+ // the version with no dynamic gotos, and really faster
+ // that any version without gotos that comed into my mind...
+ //
+ // This code will prolly work only with GCC...(and even needs a "smart" one)
+
+ // Again did two versions... the first was:
+ //
+ // if(void * jmp_address = char_to_check_jump_table[*((unsigned char *)p)])goto *jmp_address;
+ // 18a3: 8b 55 f0 movl 0xfffffff0(%ebp),%edx
+ // 18a6: 31 c0 xorl %eax,%eax
+ // 18a8: 8a 02 movb (%edx),%al
+ // 18aa: 8b 04 85 20 00 00 00 movl 0x20(,%eax,4),%eax
+ // 18b1: 85 c0 testl %eax,%eax
+ // 18b3: 74 02 je 18b7 <KviIrcView::getTextLine(int, char const *, KviIrcViewLine *)+0x1f3>
+ // 18b5: ff e0 jmp *%eax
+ //
+ // I even had a nicer version:
+ //
+ // goto *(char_to_check_jump_table[*((unsigned char *)p)]);
+ // 18a3: 8b 55 f0 movl 0xfffffff0(%ebp),%edx
+ // 18a6: 31 c0 xorl %eax,%eax
+ // 18a8: 8a 02 movb (%edx),%al
+ // 18aa: ff 24 85 20 00 00 00 jmp *0x20(,%eax,4)
+ //
+ // but sth tells me that "jmp *0x20(,%eax,4)" takes a loooooot of clock ticks...
+ // ...we have less instructions , but the code takes longer to execute (7-8% longer)
+ // it might be also due to pipeline tricks, jump "next instruction precalculation" stuff...
+
+ // So we end up using the fist version here
+
+ void * loop_begin;
+
+ static void * char_to_check_jump_table[256]=
+ {
+ &&found_end_of_buffer ,0 ,&&found_mirc_escape ,&&found_color_escape ,
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,&&found_end_of_line ,0 ,
+ 0 ,&&found_command_escape ,0 ,&&found_mirc_escape ,
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,&&found_mirc_escape ,0 ,
+ 0 ,0 ,0 ,0 ,
+ 0 ,&&found_icon_escape ,0 ,&&found_mirc_escape , // 000-031
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 , // 032-047
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,&&check_emoticon_char ,&&check_emoticon_char ,
+ 0 ,&&check_emoticon_char ,0 ,0 , // 048-063 // 61='=' , 59=';' , 58=':'
+ 0 ,0 ,0 ,0 ,
+ 0 ,&&check_e2k_url ,&&check_file_or_ftp_url,0 ,
+ &&check_http_url ,&&check_irc_url ,0 ,0 ,
+ 0 ,&&check_mailto_url ,0 ,0 , // 064-079 // 070==F 072==H 073==I 077==M
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,&&check_www_url ,
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 , // 080-095 // 087==W
+ 0 ,0 ,0 ,0 ,
+ 0 ,&&check_e2k_url ,&&check_file_or_ftp_url,0 ,
+ &&check_http_url ,&&check_irc_url ,0 ,0 ,
+ 0 ,&&check_mailto_url ,0 ,0 , // 096-111 // 101=e 102=f 104=h 105=i 109==m
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,&&check_www_url ,
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 , // 112-127 // 119==w
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 , // 128-133
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 , // 134-159
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 , // 160-175
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 , // 176-191
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 , // 192-207
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 , // 208-223
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 , // 224-239
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 ,
+ 0 ,0 ,0 ,0 // 240-255
+ };
+
+ if(KVI_OPTION_BOOL(KviOption_boolIrcViewUrlHighlighting))
+ {
+ loop_begin = &&highlighting_check_loop; // get the address of the return label
+ // forewer loop
+highlighting_check_loop:
+ // yet more optimized
+ if(*((unsigned short *)p) < 0xff)
+ if(void * jmp_address = char_to_check_jump_table[*((unsigned short *)p)])goto *jmp_address;
+ // goto *(char_to_check_jump_table[*((unsigned char *)p)]); <--- replace 0 with &nothing_found
+//nothing_found:
+ p++;
+ goto highlighting_check_loop;
+ // newer here
+ } else {
+ loop_begin = &&escape_check_loop; // get the address of the return label
+ // forever loop
+escape_check_loop:
+ while(*((unsigned short *)p) > 31)p++;
+ goto check_escape_switch; // returns to escape_check_loop or returns from the function at all
+ // newer here
+ }
+ // newer here
+
+
+#else // !COMPILE_USE_DYNAMIC_LABELS
+
+ // No way to have a jump table, nor a dynamic return jump
+ // Anyway...we can have sth similar to a jump table...
+ // Note: this could be substituted by a compiler generated jump table
+ // for a switch command... but this is STILL faster
+
+ static char char_to_check_table[256]=
+ {
+ 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, // 000-015
+ 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, // 016-031
+ 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, // 032-047
+ 0,0,0,0,0,0,0,0, 0,0,7,7,0,7,0,0, // 048-063
+ 0,0,0,0,0,8,3,0, 2,5,0,0,0,6,0,0, // 064-079 // 070==F 072==H 073==I 077==M
+ 0,0,0,0,0,0,0,4, 0,0,0,0,0,0,0,0, // 080-095 // 087==W
+ 0,0,0,0,0,8,3,0, 2,5,0,0,0,6,0,0, // 096-111 // 102==f 104==h 105==i 109==m
+ 0,0,0,0,0,0,0,4, 0,0,0,0,0,0,0,0, // 112-127 // 119==w
+ 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, // 128-133
+ 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, // 134-159
+ 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, // 160-175
+ 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, // 176-191
+ 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, // 192-207
+ 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, // 208-223
+ 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, // 224-239
+ 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0 // 240-255
+ };
+
+check_char_loop:
+ if(KVI_OPTION_BOOL(KviOption_boolIrcViewUrlHighlighting))
+ {
+ for(;;)
+ {
+ if(*((unsigned short *)p) < 0xff)
+ if(unsigned int chk = char_to_check_table[*((unsigned short *)p)])
+ {
+ switch(chk)
+ {
+ case 1: goto check_escape_switch; break; // returns to check_char_loop or returns from the function at all
+ case 2: goto check_http_url; break; // returns to check_char_loop
+ case 3: goto check_file_or_ftp_url; break; // returns to check_char_loop
+ case 4: goto check_www_url; break; // returns to check_char_loop
+ case 5: goto check_irc_url; break; // returns to check_char_loop
+ case 6: goto check_mailto_url; break; // returns to check_char_loop
+ case 7: goto check_emoticon_char; break; // returns to check_char_loop
+ case 8: goto check_e2k_url; break;
+ }
+ }
+ p++;
+ }
+ } else {
+ while(((unsigned short)*p) > 31)p++;
+ goto check_escape_switch; // returns to check_char_loop
+ }
+
+#endif // !COMPILE_USE_DYNAMIC_LABELS
+
+check_escape_switch:
+ switch(*p)
+ {
+ case '\0':
+#ifdef COMPILE_USE_DYNAMIC_LABELS
+found_end_of_buffer:
+#endif //COMPILE_USE_DYNAMIC_LABELS
+ APPEND_LAST_TEXT_BLOCK(data_ptr,p - data_ptr)
+ return p;
+ break;
+ case '\n':
+#ifdef COMPILE_USE_DYNAMIC_LABELS
+found_end_of_line:
+#endif //COMPILE_USE_DYNAMIC_LABELS
+ // Found the end of a line
+ APPEND_LAST_TEXT_BLOCK(data_ptr,p - data_ptr)
+ // terminate the string
+ // move the current pointer to the next character...
+ // if it is '\0' we will simply stop
+ p++;
+ return p;
+ break;
+ case '\r':
+#ifdef COMPILE_USE_DYNAMIC_LABELS
+found_command_escape:
+#endif //COMPILE_USE_DYNAMIC_LABELS
+ if (p==pUnEscapeAt) {
+ APPEND_LAST_TEXT_BLOCK(data_ptr,p - data_ptr);
+ NEW_LINE_CHUNK(KVI_TEXT_UNESCAPE);
+ pUnEscapeAt = 0;
+ p++;
+ data_ptr=p;
+ break;
+ }
+ // Command escape sequence
+ // \r!<escape_cmd>\r<visible parameters string>\r
+ p++;
+ if(*p == '!')
+ {
+ const kvi_wchar_t * next_cr = p;
+ // lookup the next carriage return
+ while(*next_cr && (*next_cr != '\r'))next_cr++;
+ if(*next_cr)
+ {
+ const kvi_wchar_t * term_cr = next_cr;
+ term_cr++;
+ while(*term_cr && (*term_cr != '\r'))term_cr++;
+ if(*term_cr)
+ {
+ // ok....the format is right:
+ // \r! ... \r ... \r
+ // ^p ^next_cr ^term_cr
+ p--;
+ // \r! ... \r ... \r
+ // ^p ^next_cr ^term_cr
+ APPEND_LAST_TEXT_BLOCK(data_ptr,p - data_ptr)
+ NEW_LINE_CHUNK(KVI_TEXT_ESCAPE)
+
+ p+=2; //point after \r!
+
+ blockLen = (next_cr - p);
+ line_ptr->pChunks[iCurChunk].szPayload = (kvi_wchar_t *)kvi_malloc(((next_cr - p) + 1) * sizeof(kvi_wchar_t));
+ kvi_fastmoveodd((void *)(line_ptr->pChunks[iCurChunk].szPayload),p,blockLen * sizeof(kvi_wchar_t));
+
+ line_ptr->pChunks[iCurChunk].szPayload[blockLen] = 0;
+
+ ++next_cr; //point after the middle \r
+
+ pUnEscapeAt = term_cr;
+
+ bool bColorSetted=false;
+ if((line_ptr->pChunks[iCurChunk].szPayload[0]=='n') && KVI_OPTION_BOOL(KviOption_boolUseUserListColorsAsNickColors) && (!KVI_OPTION_BOOL(KviOption_boolColorNicks)))
+ {
+ if(m_pKviWindow->type()==KVI_WINDOW_TYPE_CHANNEL && m_pKviWindow)
+ {
+ if(line_ptr->pChunks[iCurChunk].szPayload[1]=='c' && ((KviChannel*)m_pKviWindow)->userListView())
+ {
+ KviUserListEntry *e = ((KviChannel*)m_pKviWindow)->userListView()->findEntry(QString((QChar*)next_cr,term_cr-next_cr));
+ if(e)
+ {
+ line_ptr->pChunks[iCurChunk].colors.fore = KVI_COLOR_CUSTOM; e->color(line_ptr->pChunks[iCurChunk].customFore);
+ bColorSetted=true;
+ }
+ }
+ }
+ else if(m_pKviWindow->type()==KVI_WINDOW_TYPE_QUERY && m_pKviWindow && line_ptr->pChunks[iCurChunk].szPayload[1]=='c')
+ {
+ QString m_szNick = QString((QChar*)next_cr,term_cr-next_cr);
+ if(m_szNick==m_pKviWindow->connection()->currentNickName()) {
+ line_ptr->pChunks[iCurChunk].colors.fore = KVI_COLOR_OWN;
+ bColorSetted=true;
+ }
+ }
+ }
+ if(!bColorSetted)
+ {
+ line_ptr->pChunks[iCurChunk].colors.fore=KVI_NOCHANGE;
+ }
+
+ /*APPEND_LAST_TEXT_BLOCK(next_cr,term_cr - next_cr)
+ NEW_LINE_CHUNK(KVI_TEXT_UNESCAPE)*/
+
+ p=next_cr;
+ data_ptr=p;
+ }
+ }
+ }
+ break;
+ case KVI_TEXT_COLOR:
+#ifdef COMPILE_USE_DYNAMIC_LABELS
+found_color_escape:
+#endif //COMPILE_USE_DYNAMIC_LABELS
+ //Color control code...need a new attribute struct
+ APPEND_LAST_TEXT_BLOCK(data_ptr,p - data_ptr)
+ NEW_LINE_CHUNK(*p)
+ p++;
+ p=getColorBytesW(p,&(line_ptr->pChunks[iCurChunk].colors.fore),
+ &(line_ptr->pChunks[iCurChunk].colors.back));
+ data_ptr=p;
+ break;
+ case KVI_TEXT_ICON:
+#ifdef COMPILE_USE_DYNAMIC_LABELS
+found_icon_escape:
+#endif //COMPILE_USE_DYNAMIC_LABELS
+ p++;
+ if(*p > 32)
+ {
+ // Icon control word... need a new attribute struct
+ const kvi_wchar_t * beginPtr = p - 1;
+ const kvi_wchar_t * icon_name = p;
+ while(*p > 32)p++;
+ int datalen = p - icon_name;
+ kvi_wchar_t save = *p;
+ // throw away constness!
+ *((kvi_wchar_t *)p) = 0;
+ // FIXME: this has to be changed! : lookupTextIcon must use wide characters!
+ QString tmpQ;
+ tmpQ.setUnicodeCodes(icon_name,datalen);
+ KviTextIcon * icon = g_pTextIconManager->lookupTextIcon(tmpQ);
+ // throw away constness!
+ *((kvi_wchar_t *)p) = save;
+ //if(*p == KVI_TEXT_ICON)p++; // ending delimiter
+ if(icon)
+ {
+ APPEND_LAST_TEXT_BLOCK(data_ptr,beginPtr - data_ptr)
+ NEW_LINE_CHUNK(KVI_TEXT_ICON)
+ line_ptr->pChunks[iCurChunk].szPayload = (kvi_wchar_t *)kvi_malloc((datalen + 1) * sizeof(kvi_wchar_t));
+ kvi_fastmoveodd((void *)(line_ptr->pChunks[iCurChunk].szPayload),icon_name,datalen * sizeof(kvi_wchar_t));
+ line_ptr->pChunks[iCurChunk].szPayload[datalen] = 0;
+ line_ptr->pChunks[iCurChunk].szSmileId=line_ptr->pChunks[iCurChunk].szPayload;
+
+ APPEND_LAST_TEXT_BLOCK_HIDDEN_FROM_NOW(icon_name,datalen)
+
+ data_ptr = p;
+ NEW_LINE_CHUNK(KVI_TEXT_UNICON)
+ }
+ }
+ break;
+ case KVI_TEXT_BOLD:
+ case KVI_TEXT_UNDERLINE:
+ case KVI_TEXT_REVERSE:
+ case KVI_TEXT_RESET:
+#ifdef COMPILE_USE_DYNAMIC_LABELS
+found_mirc_escape:
+#endif //COMPILE_USE_DYNAMIC_LABELS
+ APPEND_LAST_TEXT_BLOCK(data_ptr,p - data_ptr)
+ NEW_LINE_CHUNK(*p)
+ data_ptr=++p;
+ break;
+ default:
+ p++;
+ break;
+ }
+#ifdef COMPILE_USE_DYNAMIC_LABELS
+ goto *loop_begin;
+#else // !COMPILE_USE_DYNAMIC_LABELS
+ goto check_char_loop;
+#endif // !COMPILE_USE_DYNAMIC_LABELS
+
+check_http_url:
+ p++;
+ if((*p == 't') || (*p == 'T'))
+ {
+ p--;
+ if(kvi_hstrEqualCIN(p,"http://",7))
+ {
+ partLen = 7;
+ goto got_url;
+ }
+ if(kvi_hstrEqualCIN(p,"https://",8))
+ {
+ partLen = 8;
+ goto got_url;
+ }
+ p++;
+ }
+#ifdef COMPILE_USE_DYNAMIC_LABELS
+ goto *loop_begin;
+#else // !COMPILE_USE_DYNAMIC_LABELS
+ goto check_char_loop;
+#endif // !COMPILE_USE_DYNAMIC_LABELS
+
+
+check_file_or_ftp_url:
+ p++;
+ if((*p == 'i') || (*p == 'I'))
+ {
+ p--;
+ if(kvi_hstrEqualCIN(p,"file://",7))
+ {
+ partLen = 7;
+ goto got_url;
+ }
+ p++;
+ } else if((*p == 't') || (*p == 'T'))
+ {
+ p--;
+ if(kvi_hstrEqualCIN(p,"ftp://",6))
+ {
+ partLen = 6;
+ goto got_url;
+ }
+ if(kvi_hstrEqualCIN(p,"ftp.",4))
+ {
+ partLen = 4;
+ goto got_url;
+ }
+ p++;
+ }
+
+#ifdef COMPILE_USE_DYNAMIC_LABELS
+ goto *loop_begin;
+#else // !COMPILE_USE_DYNAMIC_LABELS
+ goto check_char_loop;
+#endif // !COMPILE_USE_DYNAMIC_LABELS
+
+check_e2k_url:
+ p++;
+ if((*p == 'd') || (*p == 'D'))
+ {
+ p--;
+ if(kvi_hstrEqualCIN(p,"ed2k://",7))
+ {
+ partLen = 7;
+ goto got_url;
+ }
+ p++;
+ }
+
+#ifdef COMPILE_USE_DYNAMIC_LABELS
+ goto *loop_begin;
+#else // !COMPILE_USE_DYNAMIC_LABELS
+ goto check_char_loop;
+#endif // !COMPILE_USE_DYNAMIC_LABELS
+
+check_www_url:
+ p++;
+ if((*p == 'w') || (*p == 'W'))
+ {
+ p--;
+ if(kvi_hstrEqualCIN(p,"www.",4))
+ {
+ partLen = 4;
+ goto got_url;
+ }
+ p++;
+ }
+
+#ifdef COMPILE_USE_DYNAMIC_LABELS
+ goto *loop_begin;
+#else // !COMPILE_USE_DYNAMIC_LABELS
+ goto check_char_loop;
+#endif // !COMPILE_USE_DYNAMIC_LABELS
+
+check_irc_url:
+ p++;
+ if((*p == 'r') || (*p == 'R'))
+ {
+ p--;
+ if(kvi_hstrEqualCIN(p,"irc://",6))
+ {
+ partLen = 6;
+ goto got_url;
+ }
+ if(kvi_hstrEqualCIN(p,"irc6://",7))
+ {
+ partLen = 7;
+ goto got_url;
+ }
+ if(kvi_hstrEqualCIN(p,"ircs://",7))
+ {
+ partLen = 7;
+ goto got_url;
+ }
+ if(kvi_hstrEqualCIN(p,"ircs6://",8))
+ {
+ partLen = 8;
+ goto got_url;
+ }
+ p++;
+ }
+
+#ifdef COMPILE_USE_DYNAMIC_LABELS
+ goto *loop_begin;
+#else // !COMPILE_USE_DYNAMIC_LABELS
+ goto check_char_loop;
+#endif // !COMPILE_USE_DYNAMIC_LABELS
+
+check_mailto_url:
+ p++;
+ if((*p == 'a') || (*p == 'A'))
+ {
+ p--;
+ if(kvi_hstrEqualCIN(p,"mailto:",7))
+ {
+ partLen = 7;
+ goto got_url;
+ }
+ p++;
+ }
+#ifdef COMPILE_USE_DYNAMIC_LABELS
+ goto *loop_begin;
+#else // !COMPILE_USE_DYNAMIC_LABELS
+ goto check_char_loop;
+#endif // !COMPILE_USE_DYNAMIC_LABELS
+
+
+
+got_url:
+ //Url highlighting block
+ if(*(p + partLen) < 47)
+ {
+ p+=partLen;
+ APPEND_LAST_TEXT_BLOCK(data_ptr,p - data_ptr)
+ } else {
+ APPEND_LAST_TEXT_BLOCK(data_ptr,p - data_ptr)
+ NEW_LINE_CHUNK(KVI_TEXT_ESCAPE)
+// FIXME: #warning "Option for the URL escape...double click and right button!!!"
+// int urlLen = KVI_OPTION_STRING(KviOption_stringUrlLinkCommand).len() + 1;
+ line_ptr->pChunks[iCurChunk].szPayload = (kvi_wchar_t *)kvi_malloc(2 * sizeof(kvi_wchar_t));
+ line_ptr->pChunks[iCurChunk].szPayload[0] = 'u';
+ line_ptr->pChunks[iCurChunk].szPayload[1] = 0x0;
+ line_ptr->pChunks[iCurChunk].colors.fore = KVI_OPTION_MSGTYPE(KVI_OUT_URL).fore();
+ //and run until the presumed end of the url
+ data_ptr=p;
+ p+=partLen;
+ // Question : What characters are NOT allowed in an URL ?
+ // I assume [] () {} 'and chars below 33 (space too , and negative chars too! (for signed char systems))
+ // [] and () are used in ed2k links often
+
+ // These characters are "{", "}", "|", "\", "^", "~", "[", "]", and "`". (RFC1738)
+ while((*p > 32) && (*p != '[') && (*p != '|') && (*p != '{') && (*p != '>') &&
+ (*p != ']') && (*p != '}') && (*p != '<') && (*p != '"'))p++;
+
+ if(m_pKviWindow)
+ {
+ QString tmp;
+ tmp.setUnicodeCodes(data_ptr,p-data_ptr);
+ KVS_TRIGGER_EVENT_1(KviEvent_OnUrl,m_pKviWindow,tmp);
+ }
+
+ APPEND_LAST_TEXT_BLOCK(data_ptr,p - data_ptr)
+ NEW_LINE_CHUNK(KVI_TEXT_UNESCAPE)
+
+ }
+ data_ptr=p;
+
+#ifdef COMPILE_USE_DYNAMIC_LABELS
+ goto *loop_begin;
+#else // !COMPILE_USE_DYNAMIC_LABELS
+ goto check_char_loop;
+#endif // !COMPILE_USE_DYNAMIC_LABELS
+
+ //FIXME #warning: Add more emoticons, and more intelligent code to detect when they're not really emoticons
+
+check_emoticon_char:
+ // What about this ?
+
+ const kvi_wchar_t * begin = p;
+ p++;
+ if(KVI_OPTION_BOOL(KviOption_boolDrawEmoticons))
+ switch(iMsgType)
+ {
+ case KVI_OUT_CHANPRIVMSG:
+ case KVI_OUT_ACTION:
+ case KVI_OUT_OWNPRIVMSG:
+ case KVI_OUT_QUERYPRIVMSG:
+ case KVI_OUT_QUERYPRIVMSGCRYPTED:
+ case KVI_OUT_QUERYNOTICE:
+ case KVI_OUT_QUERYNOTICECRYPTED:
+ case KVI_OUT_CHANPRIVMSGCRYPTED:
+ case KVI_OUT_CHANNELNOTICE:
+ case KVI_OUT_CHANNELNOTICECRYPTED:
+ case KVI_OUT_OWNPRIVMSGCRYPTED:
+ case KVI_OUT_HIGHLIGHT:
+ case KVI_OUT_DCCCHATMSG:
+ {
+ // Pragma: 31.05.2002 : I had to kill the 8 prefix
+ // It happens really too often to have an 8 followed by a parenthesis
+ // that is not an emoticon
+
+ // *begin can be one of ':' , ';' , '='
+ if(*p == '-')p++; // FIXME: we could handle also 'o' as a nose ??? (extreme: also '+' ?)
+ // FIXME: use a "jump-like-check-table" here ? .... it would be surely faster
+ // FIXME: handle also '[',']','\\','p','@','#','<','>','|' ???
+ switch(*p)
+ {
+ case ')':
+ case '(':
+ case '/':
+ case 'D':
+ case 'P':
+ case 'S':
+ case 'O':
+ case '*':
+ case '|':
+ case 176: // '°' -> alt 176 : teardrop
+ {
+ const kvi_wchar_t * item = p;
+ const kvi_wchar_t * item2 = 0;
+ p++;
+ while(*p == *item)p++;
+ int count = (p - item) - 1;
+ if(*item == 176)
+ {
+ if(*p == ')')
+ {
+ item2 = p;
+ p++;
+ }
+ }
+ if(!*p || (*p == ' '))
+ {
+ // ok! this is an emoticon (sequence) !
+ // We lookup simplified versions of the emoticons...
+
+ // FIXME: this sould become UNICODE!!!
+ QString lookupstring;
+ kvi_wchar_t ng[3];
+ ng[0] = *begin;
+ ng[1] = *item;
+ if(item2)ng[2] = *item2;
+ lookupstring.setUnicodeCodes(ng,item2 ? 3 : 2);
+
+ KviTextIcon * icon = g_pTextIconManager->lookupTextIcon(lookupstring);
+ // do we have that emoticon-icon association ?
+ if(icon)
+ {
+ // we got an icon for this emoticon
+ // the tooltip will carry the original emoticon source text
+ APPEND_LAST_TEXT_BLOCK(data_ptr,begin - data_ptr)
+ NEW_LINE_CHUNK(KVI_TEXT_ICON)
+
+ int emolen = p - begin;
+ int reallen=item2 ? 3 : 2;
+
+ line_ptr->pChunks[iCurChunk].szPayload = (kvi_wchar_t *)kvi_malloc((emolen + 1) * sizeof(kvi_wchar_t));
+ kvi_fastmoveodd(line_ptr->pChunks[iCurChunk].szPayload,begin,emolen * sizeof(kvi_wchar_t));
+ line_ptr->pChunks[iCurChunk].szPayload[emolen] = 0;
+
+ line_ptr->pChunks[iCurChunk].szSmileId = (kvi_wchar_t *)kvi_malloc((reallen + 1) * sizeof(kvi_wchar_t));
+ kvi_fastmoveodd(line_ptr->pChunks[iCurChunk].szSmileId,ng,reallen * sizeof(kvi_wchar_t));
+ line_ptr->pChunks[iCurChunk].szSmileId[reallen] = 0;
+
+ APPEND_LAST_TEXT_BLOCK_HIDDEN_FROM_NOW(begin,emolen)
+ data_ptr = p;
+ // let's also handle thingies like :DDDD
+ item++;
+ while(count > 0)
+ {
+ NEW_LINE_CHUNK(KVI_TEXT_ICON)
+ line_ptr->pChunks[iCurChunk].szPayload = (kvi_wchar_t *)kvi_malloc((emolen + 1) * sizeof(kvi_wchar_t));
+ kvi_fastmoveodd(line_ptr->pChunks[iCurChunk].szPayload,begin,emolen * sizeof(kvi_wchar_t));
+ line_ptr->pChunks[iCurChunk].szPayload[emolen] = 0;
+
+ line_ptr->pChunks[iCurChunk].szSmileId = (kvi_wchar_t *)kvi_malloc((reallen + 1) * sizeof(kvi_wchar_t));
+ kvi_fastmoveodd(line_ptr->pChunks[iCurChunk].szSmileId,ng,reallen * sizeof(kvi_wchar_t));
+ line_ptr->pChunks[iCurChunk].szSmileId[reallen] = 0;
+
+ APPEND_ZERO_LENGTH_BLOCK(data_ptr)
+ count--;
+ }
+ NEW_LINE_CHUNK(KVI_TEXT_UNICON)
+ } // we don't even need to skip back... the text eventually parsed is ok to be in a single block for sure
+ } // we don't even need to skip back... the text eventually parsed is ok to be in a single block for sure
+ } // we don't even need to skip back... the text eventually parsed is ok to be in a single block for sure
+ break;
+ } // switch(*p)
+ } break;
+
+ }
+
+
+#ifdef COMPILE_USE_DYNAMIC_LABELS
+ goto *loop_begin;
+#else // !COMPILE_USE_DYNAMIC_LABELS
+ goto check_char_loop;
+#endif // !COMPILE_USE_DYNAMIC_LABELS
+
+ // never here
+ return p;
+
+}
+
+void KviIrcView::fastScroll(int lines)
+{
+ m_iUnprocessedPaintEventRequests = 0;
+
+ if(!isVisible())return;
+
+ if(!m_pFm)
+ {
+ // We must get the metrics from a real paint event :/
+ // must do a full repaint to get them...
+ repaint();
+ return;
+ }
+
+ // Ok...the current line is the last one here
+ // It is the only one that needs to be repainted
+ int widgetWidth = width()-m_pScrollBar->width();
+ if(widgetWidth < KVI_IRCVIEW_PIXMAP_SEPARATOR_AND_DOUBLEBORDER_WIDTH+10)return; //can't show stuff here
+ int widgetHeight = height();
+ int maxLineWidth = widgetWidth;
+ int defLeftCoord=KVI_IRCVIEW_HORIZONTAL_BORDER;
+ if(KVI_OPTION_BOOL(KviOption_boolIrcViewShowImages))
+ {
+ maxLineWidth -= KVI_IRCVIEW_PIXMAP_SEPARATOR_AND_DOUBLEBORDER_WIDTH;
+ defLeftCoord+=KVI_IRCVIEW_PIXMAP_AND_SEPARATOR;
+ }
+
+
+ int heightToPaint = 1;
+ KviIrcViewLine * l = m_pCurLine;
+ while(lines > 0)
+ {
+ if(l)
+ {
+ if(maxLineWidth != l->iMaxLineWidth)calculateLineWraps(l,maxLineWidth);
+ heightToPaint += l->uLineWraps * m_iFontLineSpacing;
+ heightToPaint += (m_iFontLineSpacing + m_iFontDescent);
+ lines--;
+ l = l->pPrev;
+ } else lines = 0;
+ }
+
+#ifdef COMPILE_USE_QT4
+ scroll(0,-(heightToPaint-1),QRect(1,1,widgetWidth-2,widgetHeight-2));
+#else
+ bitBlt(this,1,1,this,1,heightToPaint,widgetWidth -2,widgetHeight - (heightToPaint + KVI_IRCVIEW_VERTICAL_BORDER));
+
+ QRect r(0,widgetHeight - (heightToPaint + KVI_IRCVIEW_VERTICAL_BORDER),
+ widgetWidth,heightToPaint + KVI_IRCVIEW_VERTICAL_BORDER);
+
+ QPaintEvent * e = new QPaintEvent(r);
+ paintEvent(e);
+ delete e;
+#endif
+
+ if(m_iLastLinkRectHeight > -1)
+ {
+ // need to kill the last highlighted link
+ m_iLastLinkRectTop -= heightToPaint;
+ if(m_iLastLinkRectTop < 0)
+ {
+ m_iLastLinkRectHeight += m_iLastLinkRectTop;
+ m_iLastLinkRectTop = 0;
+ }
+ }
+
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// The IrcView : THE paint event
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+void KviIrcView::paintEvent(QPaintEvent *p)
+{
+ //
+ // THIS FUNCTION IS A MONSTER
+ //
+
+ int scrollbarWidth = m_pScrollBar->width();
+ int widgetWidth = width() - scrollbarWidth;
+ if(!isVisible() || (widgetWidth < 20))
+ {
+ m_iUnprocessedPaintEventRequests = 0; // assume a full repaint when this widget is shown...
+ return; //can't show stuff here
+ }
+
+ // if the mdiManager is in SDI mode
+ // and this window is attacched but is not the toplevel one
+ // then it is hidden completely behind the other windows
+ // and we can avoid to paint it :)
+ if(g_pFrame->mdiManager()->isInSDIMode() &&
+ (m_pKviWindow->mdiParent() != g_pFrame->mdiManager()->topChild()) &&
+ (m_pKviWindow->mdiParent()))
+ {
+ m_iUnprocessedPaintEventRequests = 0; // assume a full repaint when this widget is shown...
+ return; // totally hidden behind other windows
+ }
+
+ int widgetHeight = height();
+
+ static QRect r; // static: avoid calling constructor and destructor every time...
+
+ if(p)
+ {
+ r=p->rect(); // app triggered , or self triggered from fastScroll (in that case m_iUnprocessedPaintEventRequests is set to 0 there)
+ if(r == rect())
+ m_iUnprocessedPaintEventRequests = 0; // only full repaints reset
+ } else {
+ // A self triggered event
+ m_iUnprocessedPaintEventRequests = 0; // only full repaints reset
+ r = rect();
+ }
+
+ int rectLeft = r.x();
+ int rectTop = r.y();
+ int rectHeight = r.height();
+ int rectBottom = rectTop + rectHeight;
+ int rectWidth = r.width();
+ if(rectWidth > widgetWidth)rectWidth = widgetWidth;
+
+#ifdef COMPILE_USE_QT4
+ QPainter pa(this); // we use qt4 double buffering
+#else
+ KviDoubleBuffer doublebuffer(width(),height());
+ QPixmap * pDoubleBufferPixmap = doublebuffer.pixmap();
+
+ QPainter pa(pDoubleBufferPixmap);
+#endif
+ SET_ANTI_ALIASING(pa);
+
+ pa.setFont(font());
+ if(!m_pFm)
+ {
+ // note that QFontMetrics(pa.font()) may be not the same as QFontMetrics(font())
+ // because the painter might effectively use an approximation of the QFont specified
+ // by font().
+ recalcFontVariables(QFontMetrics(pa.font()),pa.fontInfo());
+ }
+
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ if(g_pShadedChildGlobalDesktopBackground)
+ {
+ QPoint pnt = mapToGlobal(QPoint(rectLeft,rectTop));
+ pa.drawTiledPixmap(rectLeft,rectTop,rectWidth,rectHeight,*g_pShadedChildGlobalDesktopBackground,pnt.x(),pnt.y());
+ } else {
+#endif
+ QPixmap * pix = m_pPrivateBackgroundPixmap;
+
+ if(!pix)
+ pix = KVI_OPTION_PIXMAP(KviOption_pixmapIrcViewBackground).pixmap();
+
+ pa.fillRect(rectLeft,rectTop,rectWidth,rectHeight,KVI_OPTION_COLOR(KviOption_colorIrcViewBackground));
+ if(pix)
+ KviPixmapUtils::drawPixmapWithPainter(&pa,pix,KVI_OPTION_UINT(KviOption_uintIrcViewPixmapAlign),r,widgetWidth,widgetHeight);
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ }
+#endif
+
+ //Have lines visible
+ int curBottomCoord = widgetHeight - KVI_IRCVIEW_VERTICAL_BORDER;
+ int maxLineWidth = widgetWidth;
+ int defLeftCoord = KVI_IRCVIEW_HORIZONTAL_BORDER;
+ int lineWrapsHeight;
+
+ if(KVI_OPTION_BOOL(KviOption_boolIrcViewShowImages))
+ {
+ maxLineWidth -= KVI_IRCVIEW_PIXMAP_SEPARATOR_AND_DOUBLEBORDER_WIDTH;
+ defLeftCoord += KVI_IRCVIEW_PIXMAP_AND_SEPARATOR;
+ }
+
+ KviIrcViewLine *pCurTextLine = m_pCurLine;
+
+ if(m_bMouseIsDown)
+ {
+ m_szLastSelectionLine = "";
+ m_szLastSelection = "";
+ }
+
+ //Make sure that we have enough space to paint something...
+ if(maxLineWidth < m_iMinimumPaintWidth)pCurTextLine=0;
+
+ bool bLineMarkPainted = !KVI_OPTION_BOOL(KviOption_boolTrackLastReadTextViewLine);
+
+
+ //And loop thru lines until we not run over the upper bound of the view
+ while((curBottomCoord >= KVI_IRCVIEW_VERTICAL_BORDER) && pCurTextLine)
+ {
+ //Paint pCurTextLine
+ if(maxLineWidth != pCurTextLine->iMaxLineWidth)
+ {
+ // Width of the widget or the font has been changed
+ // from the last time that this line was painted
+ calculateLineWraps(pCurTextLine,maxLineWidth);
+ }
+
+ // the evil multiplication
+ // in an i486 it can get up to 42 clock cycles
+ lineWrapsHeight = (pCurTextLine->uLineWraps) * m_iFontLineSpacing;
+ curBottomCoord -= lineWrapsHeight;
+
+ if((curBottomCoord - m_iFontLineSpacing) > rectBottom)
+ {
+ // not in update rect... skip
+ curBottomCoord -= (m_iFontLineSpacing + m_iFontDescent);
+ pCurTextLine = pCurTextLine->pPrev;
+ continue;
+ }
+
+ if(KVI_OPTION_BOOL(KviOption_boolIrcViewShowImages))
+ {
+ //Paint the pixmap first
+ //Calculate the position of the image
+ //imageYPos = curBottomCoord - (pixmapHeight(16) + ((m_iFontLineSpacing - 16)/2) );
+ int imageYPos = curBottomCoord - m_iRelativePixmapY;
+ //Set the mask if needed
+ int iPixId = KVI_OPTION_MSGTYPE(pCurTextLine->iMsgType).pixId();
+ if(iPixId > 0)
+ pa.drawPixmap(KVI_IRCVIEW_HORIZONTAL_BORDER,imageYPos,*(g_pIconManager->getSmallIcon(iPixId)));
+ }
+
+ if(m_pToolWidget)
+ {
+ if(!m_pToolWidget->messageEnabled(pCurTextLine->iMsgType))
+ {
+ // not in update rect... skip
+ curBottomCoord -= (m_iFontLineSpacing + m_iFontDescent);
+ pCurTextLine = pCurTextLine->pPrev;
+ continue;
+ }
+ }
+
+ // Initialize for drawing this line of text
+ // The first block is always an attribute block
+ char defaultBack = pCurTextLine->pBlocks->pChunk->colors.back;
+ char defaultFore = pCurTextLine->pBlocks->pChunk->colors.fore;
+ bool curBold = false;
+ bool curUnderline = false;
+ char foreBeforeEscape= KVI_BLACK;
+ bool curLink = false;
+ bool bacWasTransp = false;
+ char curFore = defaultFore;
+ char curBack = defaultBack;
+ int curLeftCoord = defLeftCoord;
+ curBottomCoord -= m_iFontDescent; //rise up the text...
+
+ //
+ // Single text line loop (paint all text blocks)
+ // (May correspond to more physical lines on the display if the text is wrapped)
+ //
+
+ for(int i=0;i < pCurTextLine->iBlockCount;i++)
+ {
+ register KviIrcViewWrappedBlock * block = &(pCurTextLine->pBlocks[i]);
+
+ // Play with the attributes
+ if(block->pChunk)
+ {
+ //normal block
+ switch(block->pChunk->type)
+ {
+ case KVI_TEXT_COLOR:
+ if(block->pChunk->colors.fore != KVI_NOCHANGE)
+ {
+ curFore = block->pChunk->colors.fore;
+ if(block->pChunk->colors.back != KVI_NOCHANGE)
+ curBack = block->pChunk->colors.back;
+ } else {
+ // only a CTRL+K... reset
+ curFore = defaultFore;
+ curBack = defaultBack;
+ }
+ // Begin Edit by GMC-jimmy: Added
+ // When KVIrc encounters a CTRL+K code without any trailing numbers, we then use KVIrc's default color value
+ // defined by the user in the Options dialog.
+ // This is to allow KVIrc to handle mIRC color codes in a similar fashion to most other modern irc clients.
+ // See also kvi_input.cpp
+
+ // Pragma: optimized: moved the code above (avoided duplicate if())
+ // Pragma(05.03.2003): fixed again: reset ONLY if CTRL+K without numbers
+ // otherwise leave the background unchanged
+
+ //if(block->pChunk->colors.fore == KVI_NOCHANGE)
+ // curFore = defaultFore;
+ //if(block->pChunk->colors.back == KVI_NOCHANGE)
+ // curBack = defaultBack;
+ // End Edit
+ break;
+ case KVI_TEXT_ESCAPE:
+ foreBeforeEscape = curFore;
+ if(block->pChunk->colors.fore != KVI_NOCHANGE)
+ curFore = block->pChunk->colors.fore;
+ if(m_pLastLinkUnderMouse == block)curLink = true;
+ break;
+ case KVI_TEXT_UNESCAPE:
+ curLink = false;
+ curFore = foreBeforeEscape;
+ break;
+ case KVI_TEXT_BOLD:
+ curBold = !curBold;
+ break;
+ case KVI_TEXT_UNDERLINE:
+ curUnderline = !curUnderline;
+ break;
+ case KVI_TEXT_RESET:
+ curBold = false;
+ curUnderline = false;
+ curFore = defaultFore;
+ curBack = defaultBack;
+ break;
+ case KVI_TEXT_REVERSE: //Huh ?
+ char aux = curBack;
+ if(bacWasTransp == true)
+ {
+ curBack = KVI_TRANSPARENT;
+ } else {
+ curBack = curFore;
+ }
+ if(aux == KVI_TRANSPARENT)
+ {
+ curFore = (char)KVI_DEF_BACK;
+ } else {
+ curFore = aux;
+ }
+ bacWasTransp = (aux == KVI_TRANSPARENT);
+/* if(curBack != KVI_TRANSPARENT)
+ {
+ char aux =curFore;
+ curFore = curBack;
+ curBack = aux;
+ } else {
+ curBack = curFore;
+ switch(curBack)
+ {
+ case KVI_WHITE:
+ case KVI_ORANGE:
+ case KVI_YELLOW:
+ case KVI_LIGHTGREEN:
+ case KVI_BLUEMARINE:
+ case KVI_LIGHTBLUE:
+ case KVI_LIGHTVIOLET:
+ case KVI_LIGHTGRAY:
+ curFore=KVI_BLACK;
+ break;
+ default: //transparent too
+ curFore=KVI_LIGHTGREEN;
+ break;
+ }
+ }
+*/
+ break;
+ //case KVI_TEXT_ICON:
+ //case KVI_TEXT_UNICON:
+ // does nothing
+ //debug("Have a block with ICON/UNICON attr");
+ //break;
+ }
+
+ } else {
+ // no attributes , it is a line wrap
+ curLeftCoord = defLeftCoord;
+ if(KVI_OPTION_BOOL(KviOption_boolIrcViewWrapMargin))curLeftCoord+=m_iWrapMargin;
+ curBottomCoord += m_iFontLineSpacing;
+ }
+
+//
+// Here we run really out of bounds :)))))
+// A couple of macros that could work well as functions...
+// but since there are really many params to be passed
+// and push & pop calls take clock cycles
+// my paranoic mind decided to go for the macro way.
+// This is NOT good programming
+//
+
+#define SET_PEN(_color,_custom)\
+ if( ((unsigned char)_color) < 16 )\
+ {\
+ pa.setPen(KVI_OPTION_MIRCCOLOR((unsigned char)_color));\
+ } else {\
+ switch((unsigned char)_color)\
+ {\
+ case KVI_COLOR_EXT_USER_OP:\
+ pa.setPen(KVI_OPTION_COLOR(KviOption_colorUserListViewOpForeground));\
+ break;\
+ case KVI_COLOR_EXT_USER_HALFOP:\
+ pa.setPen(KVI_OPTION_COLOR(KviOption_colorUserListViewHalfOpForeground));\
+ break;\
+ case KVI_COLOR_EXT_USER_ADMIN:\
+ pa.setPen(KVI_OPTION_COLOR(KviOption_colorUserListViewChanAdminForeground));\
+ break;\
+ case KVI_COLOR_EXT_USER_OWNER:\
+ pa.setPen(KVI_OPTION_COLOR(KviOption_colorUserListViewChanOwnerForeground));\
+ break;\
+ case KVI_COLOR_EXT_USER_VOICE:\
+ pa.setPen(KVI_OPTION_COLOR(KviOption_colorUserListViewVoiceForeground));\
+ break;\
+ case KVI_COLOR_EXT_USER_USEROP:\
+ pa.setPen(KVI_OPTION_COLOR(KviOption_colorUserListViewUserOpForeground));\
+ break;\
+ case KVI_COLOR_EXT_USER_NORMAL:\
+ pa.setPen(KVI_OPTION_COLOR(KviOption_colorUserListViewNormalForeground));\
+ break;\
+ case KVI_DEF_BACK :\
+ pa.setPen(KVI_OPTION_COLOR(KviOption_colorIrcViewBackground));\
+ break;\
+ case KVI_COLOR_CUSTOM :\
+ pa.setPen(_custom);\
+ break;\
+ case KVI_COLOR_OWN :\
+ pa.setPen(KVI_OPTION_COLOR(KviOption_colorUserListViewOwnForeground));\
+ break;\
+ }\
+ }
+
+#define DRAW_SELECTED_TEXT(_text_str,_text_idx,_text_len,_text_width) \
+ SET_PEN(KVI_OPTION_MSGTYPE(KVI_OUT_SELECT).fore(),block->pChunk ? block->pChunk->customFore : QColor()); \
+ { \
+ int theWdth = _text_width; \
+ if(theWdth < 0) \
+ theWdth=width()-(curLeftCoord+KVI_IRCVIEW_HORIZONTAL_BORDER+scrollbarWidth); \
+ pa.fillRect(curLeftCoord,curBottomCoord - m_iFontLineSpacing + m_iFontDescent,theWdth,m_iFontLineSpacing,KVI_OPTION_MIRCCOLOR(KVI_OPTION_MSGTYPE(KVI_OUT_SELECT).back())); \
+ } \
+ pa.drawText(curLeftCoord,curBottomCoord,_text_str,_text_idx,_text_len); \
+ m_szLastSelectionLine.append(_text_str.mid(_text_idx,_text_len)); \
+ curLeftCoord += _text_width;
+
+#define DRAW_NORMAL_TEXT(_text_str,_text_idx,_text_len,_text_width) \
+ SET_PEN(curFore,block->pChunk ? block->pChunk->customFore : QColor()); \
+ if(curBack != KVI_TRANSPARENT){ \
+ int theWdth = _text_width; \
+ if(theWdth < 0) \
+ theWdth=width()-(curLeftCoord+KVI_IRCVIEW_HORIZONTAL_BORDER+scrollbarWidth); \
+ pa.fillRect(curLeftCoord,curBottomCoord - m_iFontLineSpacing + m_iFontDescent,theWdth,m_iFontLineSpacing,KVI_OPTION_MIRCCOLOR((unsigned char)curBack)); \
+ } \
+ pa.drawText(curLeftCoord,curBottomCoord,_text_str,_text_idx,_text_len); \
+ if(curBold)pa.drawText(curLeftCoord+1,curBottomCoord,_text_str,_text_idx,_text_len); \
+ if(curUnderline){ \
+ int theWdth = _text_width; \
+ if(theWdth < 0) \
+ theWdth=width()-(curLeftCoord+KVI_IRCVIEW_HORIZONTAL_BORDER+scrollbarWidth); \
+ pa.drawLine(curLeftCoord,curBottomCoord+2,curLeftCoord+theWdth,curBottomCoord+2); \
+ } \
+ curLeftCoord += _text_width;
+
+
+// EOF macro declarations
+
+ if(m_bMouseIsDown)
+ {
+ //Check if the block or a part of it is selected
+ if(checkSelectionBlock(pCurTextLine,curLeftCoord,curBottomCoord,i))
+ {
+ //Selected in some way
+ //__range_valid(g_pOptions->m_cViewOutSeleFore != KVI_TRANSPARENT);
+ //__range_valid(g_pOptions->m_cViewOutSeleBack != KVI_TRANSPARENT);
+
+ if(m_bShiftPressed && i && block->pChunk &&
+ ((m_pWrappedBlockSelectionInfo->selection_type == KVI_IRCVIEW_BLOCK_SELECTION_TOTAL) ||
+ (m_pWrappedBlockSelectionInfo->selection_type == KVI_IRCVIEW_BLOCK_SELECTION_LEFT))
+ )
+ {
+ switch(block->pChunk->type)
+ {
+ case KVI_TEXT_BOLD:
+ case KVI_TEXT_UNDERLINE:
+ case KVI_TEXT_REVERSE:
+ case KVI_TEXT_RESET:
+ m_szLastSelectionLine.append(QChar(block->pChunk->type));
+ break;
+ case KVI_TEXT_COLOR:
+ m_szLastSelectionLine.append(QChar(block->pChunk->type));
+ if((block->pChunk->colors.fore != KVI_NOCHANGE) && (block->pChunk->colors.fore != KVI_TRANSPARENT))
+ {
+ if(curFore > 9)m_szLastSelectionLine.append(QChar('1'));
+ m_szLastSelectionLine.append(QChar((curFore%10)+'0'));
+ }
+ if((block->pChunk->colors.back != KVI_NOCHANGE) && (block->pChunk->colors.back != KVI_TRANSPARENT) )
+ {
+ m_szLastSelectionLine.append(QChar(','));
+ if(curBack > 9)m_szLastSelectionLine.append(QChar('1'));
+ m_szLastSelectionLine.append(QChar((curBack%10)+'0'));
+ }
+ break;
+ }
+ }
+
+ switch(m_pWrappedBlockSelectionInfo->selection_type)
+ {
+ case KVI_IRCVIEW_BLOCK_SELECTION_TOTAL:
+ DRAW_SELECTED_TEXT(pCurTextLine->szText,block->block_start,
+ block->block_len,block->block_width)
+ break;
+ case KVI_IRCVIEW_BLOCK_SELECTION_LEFT:
+ DRAW_SELECTED_TEXT(pCurTextLine->szText,block->block_start,
+ m_pWrappedBlockSelectionInfo->part_1_length,
+ m_pWrappedBlockSelectionInfo->part_1_width)
+ DRAW_NORMAL_TEXT(pCurTextLine->szText,block->block_start+m_pWrappedBlockSelectionInfo->part_1_length,
+ m_pWrappedBlockSelectionInfo->part_2_length,
+ m_pWrappedBlockSelectionInfo->part_2_width)
+ break;
+ case KVI_IRCVIEW_BLOCK_SELECTION_RIGHT:
+ DRAW_NORMAL_TEXT(pCurTextLine->szText,block->block_start,
+ m_pWrappedBlockSelectionInfo->part_1_length,
+ m_pWrappedBlockSelectionInfo->part_1_width)
+ DRAW_SELECTED_TEXT(pCurTextLine->szText,block->block_start+m_pWrappedBlockSelectionInfo->part_1_length,
+ m_pWrappedBlockSelectionInfo->part_2_length,
+ m_pWrappedBlockSelectionInfo->part_2_width)
+ break;
+ case KVI_IRCVIEW_BLOCK_SELECTION_CENTRAL:
+ DRAW_NORMAL_TEXT(pCurTextLine->szText,block->block_start,
+ m_pWrappedBlockSelectionInfo->part_1_length,
+ m_pWrappedBlockSelectionInfo->part_1_width)
+ DRAW_SELECTED_TEXT(pCurTextLine->szText,block->block_start+m_pWrappedBlockSelectionInfo->part_1_length,
+ m_pWrappedBlockSelectionInfo->part_2_length,
+ m_pWrappedBlockSelectionInfo->part_2_width)
+ DRAW_NORMAL_TEXT(pCurTextLine->szText,block->block_start+m_pWrappedBlockSelectionInfo->part_1_length+m_pWrappedBlockSelectionInfo->part_2_length,
+ m_pWrappedBlockSelectionInfo->part_3_length,
+ m_pWrappedBlockSelectionInfo->part_3_width)
+ break;
+ case KVI_IRCVIEW_BLOCK_SELECTION_ICON:
+ {
+ int theWdth = block->block_width;
+ if(theWdth < 0)theWdth=width()-(curLeftCoord+KVI_IRCVIEW_HORIZONTAL_BORDER+scrollbarWidth);
+ pa.fillRect(curLeftCoord,curBottomCoord - m_iFontLineSpacing + m_iFontDescent,theWdth,m_iFontLineSpacing,KVI_OPTION_MIRCCOLOR(KVI_OPTION_MSGTYPE(KVI_OUT_SELECT).back()));
+ kvi_wslen_t the_len = kvi_wstrlen(block->pChunk->szPayload);
+ m_szLastSelectionLine.append(QChar(block->pChunk->type));
+ QString tmp;
+ tmp.setUnicodeCodes(block->pChunk->szPayload,the_len);
+ m_szLastSelectionLine.append(tmp);
+ goto no_selection_paint;
+ }
+ break;
+ }
+ } else {
+ if(block->pChunk && block->pChunk->type == KVI_TEXT_ICON)goto no_selection_paint;
+ int wdth = block->block_width;
+ if(wdth == 0)
+ {
+ // Last block before a word wrap , or a zero characters attribute block ?
+ if(i < (pCurTextLine->iBlockCount - 1))
+ {
+ // There is another block...
+ // Check if it is a wrap...
+ if(pCurTextLine->pBlocks[i+1].pChunk == 0)wdth = widgetWidth-(curLeftCoord+KVI_IRCVIEW_HORIZONTAL_BORDER);
+ // else simply a zero characters block
+ }
+ // else simply a zero characters block
+ }
+ DRAW_NORMAL_TEXT(pCurTextLine->szText,block->block_start,block->block_len,wdth)
+ }
+ } else {
+ //No selection ...go fast!
+no_selection_paint:
+ if(block->pChunk && block->pChunk->type == KVI_TEXT_ICON)
+ {
+ int wdth = block->block_width;
+ if(wdth < 0)wdth = widgetWidth - (curLeftCoord + KVI_IRCVIEW_HORIZONTAL_BORDER);
+ int imageYPos = curBottomCoord - m_iRelativePixmapY;
+ //Set the mask if needed
+ if(curBack != KVI_TRANSPARENT && curBack < 16)
+ {
+ pa.fillRect(curLeftCoord,curBottomCoord - m_iFontLineSpacing + m_iFontDescent,wdth,m_iFontLineSpacing,KVI_OPTION_MIRCCOLOR((unsigned char)curBack));
+ }
+ QString tmpQ;
+ tmpQ.setUnicodeCodes(block->pChunk->szSmileId,kvi_wstrlen(block->pChunk->szSmileId));
+ QPixmap * daIcon =0;
+ KviTextIcon* pIcon = g_pTextIconManager->lookupTextIcon(tmpQ);
+ if(pIcon)
+ {
+ daIcon = pIcon->pixmap();
+ }
+ if(!daIcon)
+ {
+ // this should never happen since we do a check
+ // when building the text icon block , but.. better safe than sorry:
+ // so... we lost some icons ? wrong associations ?
+ // recover it by displaying the "question mark" icon
+ daIcon = g_pIconManager->getSmallIcon(KVI_SMALLICON_HELP); // must be there, eventually null pixmap :D
+ }
+ int moredown = 1; //used to center imager vertically (pixels which the image is moved more down)
+ moredown += ((m_iFontLineSpacing - daIcon->height()) / 2);
+ pa.drawPixmap(curLeftCoord + m_iIconSideSpacing,imageYPos + moredown,*(daIcon));
+
+ //debug("SHifting by %d",block->block_width);
+ curLeftCoord += block->block_width;
+ } else {
+
+ int wdth = block->block_width;
+ if(wdth < 0)wdth = widgetWidth - (curLeftCoord + KVI_IRCVIEW_HORIZONTAL_BORDER);
+
+ // FIXME: We could avoid this XSetForeground if the curFore was not changed....
+
+ SET_PEN(curFore,block->pChunk ? block->pChunk->customFore : QColor());
+
+ if(curBack != KVI_TRANSPARENT && curBack < 16 )
+ {
+ pa.fillRect(curLeftCoord,curBottomCoord - m_iFontLineSpacing + m_iFontDescent,wdth,m_iFontLineSpacing,KVI_OPTION_MIRCCOLOR((unsigned char)curBack));
+ }
+
+ if(curLink)
+ {
+ SET_PEN(KVI_OPTION_MSGTYPE(KVI_OUT_LINK).fore(),block->pChunk ? block->pChunk->customFore : QColor());
+ pa.drawText(curLeftCoord,curBottomCoord,pCurTextLine->szText,block->block_start,block->block_len);
+ pa.drawText(curLeftCoord+1,curBottomCoord,pCurTextLine->szText,block->block_start,block->block_len);
+ pa.drawLine(curLeftCoord,curBottomCoord+2,curLeftCoord+wdth,curBottomCoord+2);
+ } else if(curBold) {
+ //Draw doubled font (simulate bold)
+ pa.drawText(curLeftCoord,curBottomCoord,pCurTextLine->szText,block->block_start,block->block_len);
+ pa.drawText(curLeftCoord + 1,curBottomCoord,pCurTextLine->szText,block->block_start,block->block_len);
+ } else {
+ pa.drawText(curLeftCoord,curBottomCoord,pCurTextLine->szText,block->block_start,block->block_len);
+ }
+
+ if(curUnderline)
+ {
+ //Draw a line under the text block....
+ pa.drawLine(curLeftCoord,curBottomCoord+2,curLeftCoord+wdth,curBottomCoord+2);
+ }
+ curLeftCoord += block->block_width;
+ }
+ }
+ }
+
+ if(pCurTextLine == m_pCursorLine)
+ {
+ // paint the cursor line
+ int iH = lineWrapsHeight + m_iFontLineSpacing;
+#ifdef COMPILE_USE_QT4
+ pa.setCompositionMode(QPainter::CompositionMode_SourceOut);
+#else
+ pa.setRasterOp(NotROP);
+#endif
+ pa.fillRect(0,curBottomCoord - iH,widgetWidth,iH + (m_iFontDescent << 1),Qt::black);
+#ifdef COMPILE_USE_QT4
+ pa.setCompositionMode(QPainter::CompositionMode_SourceOver);
+#else
+ pa.setRasterOp(CopyROP);
+#endif
+ }
+
+ if(m_bMouseIsDown)
+ {
+ if(!m_szLastSelectionLine.isEmpty())
+ {
+ if(!m_szLastSelection.isEmpty())m_szLastSelection.prepend("\n");
+ m_szLastSelection.prepend(m_szLastSelectionLine);
+ m_szLastSelectionLine = "";
+ }
+ }
+
+ curBottomCoord -= (lineWrapsHeight + m_iFontLineSpacing);
+
+ if(pCurTextLine->uIndex == m_uLineMarkLineIndex)
+ {
+ if((curBottomCoord >= KVI_IRCVIEW_VERTICAL_BORDER) && !bLineMarkPainted)
+ {
+ // visible!
+ bLineMarkPainted = true;
+ //pa.setRasterOp(NotROP);
+#ifdef COMPILE_USE_QT4
+ pa.setPen(QPen(KVI_OPTION_COLOR(KviOption_colorIrcViewMarkLine),1,Qt::DotLine));
+#else
+ pa.setPen(QPen(KVI_OPTION_COLOR(KviOption_colorIrcViewMarkLine),1,QPen::DotLine));
+#endif
+ pa.drawLine(0,curBottomCoord,widgetWidth,curBottomCoord);
+ //pa.setRasterOp(CopyROP);
+ } // else was partially visible only
+ }
+
+ pCurTextLine = pCurTextLine->pPrev;
+ }
+
+ if(!bLineMarkPainted && pCurTextLine && (rectTop <= (KVI_IRCVIEW_VERTICAL_BORDER + 5)))
+ {
+ // the line mark hasn't been painted yet
+ // need to find out if the mark is above the display
+ // the mark might be somewhere before the current text line
+ // find the first line that can't be painted in the view at all
+ while((curBottomCoord >= KVI_IRCVIEW_VERTICAL_BORDER) && pCurTextLine)
+ {
+ // the line wraps for the visible lines MUST have been already calculated
+ // for this view width
+ lineWrapsHeight = (pCurTextLine->uLineWraps) * m_iFontLineSpacing;
+ curBottomCoord -= lineWrapsHeight + m_iFontLineSpacing + m_iFontDescent;
+ pCurTextLine = pCurTextLine->pPrev;
+ }
+
+ if(pCurTextLine)
+ {
+ // this is the first NOT visible
+ // so pCurTextLine->pNext is the last visible one
+ if(pCurTextLine->pNext)
+ {
+ if(pCurTextLine->pNext->uIndex >= m_uLineMarkLineIndex)
+ bLineMarkPainted = true; // yes, its somewhere before or on this line
+ } else {
+ // no next line ? hm... compare to the not visible one.. but this should never happen
+ if(pCurTextLine->uIndex >= m_uLineMarkLineIndex)
+ bLineMarkPainted = true; // yes, its somewhere before or on this line
+ }
+ if(bLineMarkPainted)
+ {
+ // need to mark it!
+ //pa.setRasterOp(NotROP);
+ //pa.setPen(Qt::black);
+#ifdef COMPILE_USE_QT4
+ pa.setPen(QPen(KVI_OPTION_COLOR(KviOption_colorIrcViewMarkLine),1,Qt::DotLine));
+#else
+ pa.setPen(QPen(KVI_OPTION_COLOR(KviOption_colorIrcViewMarkLine),1,QPen::DotLine));
+#endif
+ int x = widgetWidth - 8;
+ int y = KVI_IRCVIEW_VERTICAL_BORDER;
+ pa.drawLine(x,y,x,y);
+ y++; pa.drawLine(x-1,y,x+1,y);
+ y++; pa.drawLine(x-2,y,x+2,y);
+ y++; pa.drawLine(x-3,y,x+3,y);
+ y++; pa.drawLine(x-4,y,x+4,y);
+ //pa.setRasterOp(CopyROP);
+ }
+ }
+ }
+
+ //Need to draw the sunken rect around the view now...
+ pa.setPen(colorGroup().dark());
+ pa.drawLine(0,0,widgetWidth,0);
+ pa.drawLine(0,0,0,widgetHeight);
+ pa.setPen(colorGroup().light());
+ widgetWidth--;
+ pa.drawLine(1,widgetHeight-1,widgetWidth,widgetHeight-1);
+ pa.drawLine(widgetWidth,1,widgetWidth,widgetHeight);
+
+ // COPY TO THE DISPLAY
+#ifndef COMPILE_USE_QT4
+ bitBlt(this,rectLeft,rectTop,pDoubleBufferPixmap,rectLeft,rectTop,rectWidth,rectHeight,Qt::CopyROP);
+#endif
+// else we use the Qt4 native double buffering
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// The IrcView : calculate line wraps
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#define IRCVIEW_WCHARWIDTH(__c) (((__c).unicode() < 0xff) ? m_iFontCharacterWidth[(__c).unicode()] : m_pFm->width(__c))
+
+void KviIrcView::calculateLineWraps(KviIrcViewLine *ptr,int maxWidth)
+{
+ //
+ // Another monster
+ //
+
+ if(maxWidth<=0) return;
+
+ if(ptr->iBlockCount != 0)kvi_free(ptr->pBlocks); // free any previous wrap blocks
+ ptr->pBlocks = (KviIrcViewWrappedBlock *)kvi_malloc(sizeof(KviIrcViewWrappedBlock)); // alloc one block
+ ptr->iMaxLineWidth = maxWidth; // calculus for this width
+ ptr->iBlockCount = 0; // it will be ++
+ ptr->uLineWraps = 0; // no line wraps yet
+
+ unsigned int curAttrBlock = 0; // Current attribute block
+ int curLineWidth = 0;
+
+ // init the first block
+ ptr->pBlocks->block_start = 0;
+ ptr->pBlocks->block_len = 0;
+ ptr->pBlocks->block_width = 0;
+ ptr->pBlocks->pChunk = &(ptr->pChunks[0]); // always an attribute block
+
+ int maxBlockLen = ptr->pChunks->iTextLen; // ptr->pChunks[0].iTextLen
+
+ const QChar * unicode = ptr->szText.unicode();
+
+ for(;;)
+ {
+ //Calculate the block_width
+ register const QChar * p = unicode + ptr->pBlocks[ptr->iBlockCount].block_start;
+ int curBlockLen = 0;
+ int curBlockWidth = 0;
+
+ if(ptr->pChunks[curAttrBlock].type == KVI_TEXT_ICON)
+ {
+ curBlockWidth = m_iIconWidth;
+ } else {
+ while(curBlockLen < maxBlockLen)
+ {
+ // FIXME: this is ugly :/
+ curBlockWidth += IRCVIEW_WCHARWIDTH(*p);
+ curBlockLen++;
+ p++;
+ }
+ }
+ //Check the length
+ curLineWidth += curBlockWidth;
+
+ if(curLineWidth < maxWidth)
+ {
+ //debug("Block of %d pix and len %d with type %d",ptr->pBlocks[ptr->iBlockCount].block_width,ptr->pBlocks[ptr->iBlockCount].block_len,ptr->pChunks[curAttrBlock].type);
+ //Ok....proceed to next block
+ ptr->pBlocks[ptr->iBlockCount].block_len = curBlockLen;
+ ptr->pBlocks[ptr->iBlockCount].block_width = curBlockWidth;
+ curAttrBlock++;
+ ptr->iBlockCount++;
+ //Process the next block of data in the next loop or return if have no more blocks
+ if(curAttrBlock < ptr->uChunkCount)
+ {
+ ptr->pBlocks = (KviIrcViewWrappedBlock *)kvi_realloc(ptr->pBlocks,(ptr->iBlockCount + 1) * sizeof(KviIrcViewWrappedBlock));
+ ptr->pBlocks[ptr->iBlockCount].block_start = ptr->pChunks[curAttrBlock].iTextStart;
+ ptr->pBlocks[ptr->iBlockCount].block_len = 0;
+ ptr->pBlocks[ptr->iBlockCount].block_width = 0;
+ ptr->pBlocks[ptr->iBlockCount].pChunk = &(ptr->pChunks[curAttrBlock]);
+ maxBlockLen = ptr->pBlocks[ptr->iBlockCount].pChunk->iTextLen;
+ } else return;
+ } else {
+ //Need word wrap
+ //First go back to an admissible width
+ while((curLineWidth >= maxWidth) && curBlockLen)
+ {
+ p--;
+ curBlockLen--;
+ curLineWidth-=IRCVIEW_WCHARWIDTH(*p);
+ }
+ //Now look for a space
+ while((*p != ' ') && curBlockLen)
+ {
+ p--;
+ curBlockLen--;
+ curLineWidth-=IRCVIEW_WCHARWIDTH(*p);
+ }
+
+ //If we ran up to the beginning of the block....
+ if(curBlockLen == 0)
+ {
+ if(ptr->pChunks[curAttrBlock].type == KVI_TEXT_ICON)
+ {
+ // This is an icon block: needs to be wrapped differently:
+ // The wrap block goes BEFORE the icon itself
+ ptr->pBlocks[ptr->iBlockCount].pChunk = 0;
+ ptr->pBlocks[ptr->iBlockCount].block_width = 0;
+ ptr->iBlockCount++;
+ ptr->pBlocks = (KviIrcViewWrappedBlock *)kvi_realloc(ptr->pBlocks,(ptr->iBlockCount + 1) * sizeof(KviIrcViewWrappedBlock));
+ ptr->pBlocks[ptr->iBlockCount].block_start = p - unicode;
+ ptr->pBlocks[ptr->iBlockCount].block_len = 0;
+ ptr->pBlocks[ptr->iBlockCount].block_width = 0;
+ ptr->pBlocks[ptr->iBlockCount].pChunk = &(ptr->pChunks[curAttrBlock]);
+ goto wrap_line;
+ }
+ //Don't like it....forced wrap here...
+ //Go ahead up to the biggest possible string
+ if(maxBlockLen > 0)
+ {
+ do
+ {
+ curBlockLen++;
+ p++;
+ curLineWidth+=IRCVIEW_WCHARWIDTH(*p);
+ } while((curLineWidth < maxWidth) && (curBlockLen < maxBlockLen));
+ //Now overrunned , go back 1 char
+ p--;
+ curBlockLen--;
+ }
+ //K...wrap
+ } else {
+ //found a space...
+ //include it in the first block
+ p++;
+ curBlockLen++;
+ }
+
+ ptr->pBlocks[ptr->iBlockCount].block_len = curBlockLen;
+ ptr->pBlocks[ptr->iBlockCount].block_width = -1; // word wrap --> negative block_width
+ maxBlockLen-=curBlockLen;
+ ptr->iBlockCount++;
+ ptr->pBlocks = (KviIrcViewWrappedBlock *)kvi_realloc(ptr->pBlocks,(ptr->iBlockCount + 1) * sizeof(KviIrcViewWrappedBlock));
+ ptr->pBlocks[ptr->iBlockCount].block_start = p - unicode;
+ ptr->pBlocks[ptr->iBlockCount].block_len = 0;
+ ptr->pBlocks[ptr->iBlockCount].block_width = 0;
+ ptr->pBlocks[ptr->iBlockCount].pChunk = 0;
+wrap_line:
+ curLineWidth = 0;
+ ptr->uLineWraps++;
+ if(ptr->uLineWraps == 1)
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolIrcViewWrapMargin))maxWidth-=m_iWrapMargin;
+ if(maxWidth<=0) return;
+ }
+ }
+ }
+
+ ptr->iBlockCount++;
+}
+
+//================= calculateSelectionBounds ==================//
+
+void KviIrcView::calculateSelectionBounds()
+{
+ if(m_mousePressPos.y() < m_mouseCurrentPos.y())
+ {
+ m_iSelectionTop = m_mousePressPos.y();
+ m_iSelectionBottom = m_mouseCurrentPos.y();
+ m_iSelectionBegin = m_mousePressPos.x();
+ m_iSelectionEnd = m_mouseCurrentPos.x();
+ } else {
+ m_iSelectionTop = m_mouseCurrentPos.y();
+ m_iSelectionBottom = m_mousePressPos.y();
+ m_iSelectionBegin = m_mouseCurrentPos.x();
+ m_iSelectionEnd = m_mousePressPos.x();
+ }
+
+ if(m_iSelectionBegin < m_iSelectionEnd)
+ {
+ m_iSelectionLeft = m_iSelectionBegin;
+ m_iSelectionRight = m_iSelectionEnd;
+ } else {
+ m_iSelectionLeft = m_iSelectionEnd;
+ m_iSelectionRight = m_iSelectionBegin;
+ }
+}
+
+
+//=============== checkSelectionBlock ===============//
+
+bool KviIrcView::checkSelectionBlock(KviIrcViewLine * line,int left,int bottom,int bufIndex)
+{
+ //
+ // Yahoo!!!!
+ //
+ const QChar * unicode = line->szText.unicode();
+ register const QChar * p = unicode + line->pBlocks[bufIndex].block_start;
+
+ int top = bottom-m_iFontLineSpacing;
+ int right = ((line->pBlocks[bufIndex].block_width >= 0) ? \
+ left+line->pBlocks[bufIndex].block_width : width()-(KVI_IRCVIEW_HORIZONTAL_BORDER + m_pScrollBar->width()));
+ if(bottom < m_iSelectionTop)return false; //The selection starts under this line
+ if(top > m_iSelectionBottom)return false; //The selection ends over this line
+ if((top >= m_iSelectionTop)&&(bottom < m_iSelectionBottom))
+ {
+ //Whole line selected
+ if(line->pBlocks[bufIndex].pChunk && line->pBlocks[bufIndex].pChunk->type == KVI_TEXT_ICON)
+ m_pWrappedBlockSelectionInfo->selection_type = KVI_IRCVIEW_BLOCK_SELECTION_ICON;
+ else
+ m_pWrappedBlockSelectionInfo->selection_type = KVI_IRCVIEW_BLOCK_SELECTION_TOTAL;
+ return true;
+ }
+ if((top < m_iSelectionTop) && (bottom >= m_iSelectionBottom))
+ {
+ //Selection begins and ends in this line
+ if(right < m_iSelectionLeft)return false;
+ if(left > m_iSelectionRight)return false;
+ if(line->pBlocks[bufIndex].pChunk && line->pBlocks[bufIndex].pChunk->type == KVI_TEXT_ICON)
+ {
+ m_pWrappedBlockSelectionInfo->selection_type = KVI_IRCVIEW_BLOCK_SELECTION_ICON;
+ return true;
+ }
+ if((right <= m_iSelectionRight) && (left > m_iSelectionLeft))
+ {
+ //Whole line selected
+ m_pWrappedBlockSelectionInfo->selection_type = KVI_IRCVIEW_BLOCK_SELECTION_TOTAL;
+ return true;
+ }
+ if((right > m_iSelectionRight) && (left <= m_iSelectionLeft))
+ {
+ //Selection ends and begins in THIS BLOCK!
+ m_pWrappedBlockSelectionInfo->selection_type = KVI_IRCVIEW_BLOCK_SELECTION_CENTRAL;
+ m_pWrappedBlockSelectionInfo->part_1_length = 0;
+ m_pWrappedBlockSelectionInfo->part_1_width = 0;
+ while((left <= m_iSelectionLeft) && (m_pWrappedBlockSelectionInfo->part_1_length < line->pBlocks[bufIndex].block_len)){
+ int www = IRCVIEW_WCHARWIDTH(*p);
+ left += www;
+ m_pWrappedBlockSelectionInfo->part_1_width += www;
+ p++;
+ m_pWrappedBlockSelectionInfo->part_1_length++;
+ }
+ //Need to include the first character
+ if(m_pWrappedBlockSelectionInfo->part_1_length > 0)
+ {
+ m_pWrappedBlockSelectionInfo->part_1_length--;
+ p--;
+ int www = IRCVIEW_WCHARWIDTH(*p);
+ left -= www;
+ m_pWrappedBlockSelectionInfo->part_1_width -= www;
+ }
+ int maxLenNow = line->pBlocks[bufIndex].block_len-m_pWrappedBlockSelectionInfo->part_1_length;
+ int maxWidthNow = line->pBlocks[bufIndex].block_width-m_pWrappedBlockSelectionInfo->part_1_width;
+ m_pWrappedBlockSelectionInfo->part_2_length = 0;
+ m_pWrappedBlockSelectionInfo->part_2_width = 0;
+ while((left < m_iSelectionRight) && (m_pWrappedBlockSelectionInfo->part_2_length < maxLenNow))
+ {
+ int www = IRCVIEW_WCHARWIDTH(*p);
+ left += www;
+ m_pWrappedBlockSelectionInfo->part_2_width += www;
+ p++;
+ m_pWrappedBlockSelectionInfo->part_2_length++;
+ }
+ m_pWrappedBlockSelectionInfo->part_3_length = maxLenNow-m_pWrappedBlockSelectionInfo->part_2_length;
+ m_pWrappedBlockSelectionInfo->part_3_width = maxWidthNow-m_pWrappedBlockSelectionInfo->part_2_width;
+ return true;
+ }
+ if(right > m_iSelectionRight)
+ {
+ //Selection ends in THIS BLOCK!
+ m_pWrappedBlockSelectionInfo->selection_type = KVI_IRCVIEW_BLOCK_SELECTION_LEFT;
+ m_pWrappedBlockSelectionInfo->part_1_length = 0;
+ m_pWrappedBlockSelectionInfo->part_1_width = 0;
+ while((left < m_iSelectionRight) && (m_pWrappedBlockSelectionInfo->part_1_length < line->pBlocks[bufIndex].block_len))
+ {
+ int www = IRCVIEW_WCHARWIDTH(*p);
+ left += www;
+ m_pWrappedBlockSelectionInfo->part_1_width += www;
+ p++;
+ m_pWrappedBlockSelectionInfo->part_1_length++;
+ }
+ m_pWrappedBlockSelectionInfo->part_2_length = line->pBlocks[bufIndex].block_len-m_pWrappedBlockSelectionInfo->part_1_length;
+ m_pWrappedBlockSelectionInfo->part_2_width = line->pBlocks[bufIndex].block_width-m_pWrappedBlockSelectionInfo->part_1_width;
+ //debug("%d",m_pWrappedBlockSelectionInfo->part_2_width);
+ return true;
+ }
+ //Selection begins in THIS BLOCK!
+ m_pWrappedBlockSelectionInfo->selection_type = KVI_IRCVIEW_BLOCK_SELECTION_RIGHT;
+ m_pWrappedBlockSelectionInfo->part_1_length = 0;
+ m_pWrappedBlockSelectionInfo->part_1_width = 0;
+ while((left <= m_iSelectionLeft) && (m_pWrappedBlockSelectionInfo->part_1_length < line->pBlocks[bufIndex].block_len))
+ {
+ int www = IRCVIEW_WCHARWIDTH(*p);
+ left += www;
+ m_pWrappedBlockSelectionInfo->part_1_width += www;
+ p++;
+ m_pWrappedBlockSelectionInfo->part_1_length++;
+ }
+ //Need to include the first character
+ if(m_pWrappedBlockSelectionInfo->part_1_length > 0)
+ {
+ m_pWrappedBlockSelectionInfo->part_1_length--;
+ p--;
+ int www = IRCVIEW_WCHARWIDTH(*p);
+ left -= www;
+ m_pWrappedBlockSelectionInfo->part_1_width -= www;
+ }
+ m_pWrappedBlockSelectionInfo->part_2_length = line->pBlocks[bufIndex].block_len-m_pWrappedBlockSelectionInfo->part_1_length;
+ m_pWrappedBlockSelectionInfo->part_2_width = line->pBlocks[bufIndex].block_width-m_pWrappedBlockSelectionInfo->part_1_width;
+ return true;
+ }
+
+ if(top < m_iSelectionTop)
+ {
+ //Selection starts in this line
+ if(right < m_iSelectionBegin)return false;
+ if(line->pBlocks[bufIndex].pChunk && line->pBlocks[bufIndex].pChunk->type == KVI_TEXT_ICON)
+ {
+ m_pWrappedBlockSelectionInfo->selection_type = KVI_IRCVIEW_BLOCK_SELECTION_ICON;
+ return true;
+ }
+ if(left > m_iSelectionBegin)
+ {
+ //Whole block selected
+ m_pWrappedBlockSelectionInfo->selection_type = KVI_IRCVIEW_BLOCK_SELECTION_TOTAL;
+ return true;
+ }
+ //Selection begins in THIS BLOCK!
+ m_pWrappedBlockSelectionInfo->selection_type = KVI_IRCVIEW_BLOCK_SELECTION_RIGHT;
+ m_pWrappedBlockSelectionInfo->part_1_length = 0;
+ m_pWrappedBlockSelectionInfo->part_1_width = 0;
+ while((left <= m_iSelectionBegin) && (m_pWrappedBlockSelectionInfo->part_1_length < line->pBlocks[bufIndex].block_len))
+ {
+ int www = IRCVIEW_WCHARWIDTH(*p);
+ left += www;
+ m_pWrappedBlockSelectionInfo->part_1_width += www;
+ p++;
+ m_pWrappedBlockSelectionInfo->part_1_length++;
+ }
+ //Need to include the first character
+ if(m_pWrappedBlockSelectionInfo->part_1_length > 0)
+ {
+ m_pWrappedBlockSelectionInfo->part_1_length--;
+ p--;
+ int www = IRCVIEW_WCHARWIDTH(*p);
+ left -= www;
+ m_pWrappedBlockSelectionInfo->part_1_width -= www;
+ }
+ m_pWrappedBlockSelectionInfo->part_2_length = line->pBlocks[bufIndex].block_len-m_pWrappedBlockSelectionInfo->part_1_length;
+ m_pWrappedBlockSelectionInfo->part_2_width = line->pBlocks[bufIndex].block_width-m_pWrappedBlockSelectionInfo->part_1_width;
+ return true;
+ }
+ //Selection ends in this line
+ if(left > m_iSelectionEnd)return false;
+ if(line->pBlocks[bufIndex].pChunk && line->pBlocks[bufIndex].pChunk->type == KVI_TEXT_ICON)
+ {
+ m_pWrappedBlockSelectionInfo->selection_type = KVI_IRCVIEW_BLOCK_SELECTION_ICON;
+ return true;
+ }
+ if(right < m_iSelectionEnd)
+ {
+ //Whole block selected
+ m_pWrappedBlockSelectionInfo->selection_type = KVI_IRCVIEW_BLOCK_SELECTION_TOTAL;
+ return true;
+ }
+ //Selection ends in THIS BLOCK!
+ m_pWrappedBlockSelectionInfo->selection_type = KVI_IRCVIEW_BLOCK_SELECTION_LEFT;
+ m_pWrappedBlockSelectionInfo->part_1_length = 0;
+ m_pWrappedBlockSelectionInfo->part_1_width = 0;
+ while((left < m_iSelectionEnd) && (m_pWrappedBlockSelectionInfo->part_1_length < line->pBlocks[bufIndex].block_len))
+ {
+ int www = IRCVIEW_WCHARWIDTH(*p);
+ left += www;
+ m_pWrappedBlockSelectionInfo->part_1_width += www;
+ p++;
+ m_pWrappedBlockSelectionInfo->part_1_length++;
+ }
+ m_pWrappedBlockSelectionInfo->part_2_length = line->pBlocks[bufIndex].block_len-m_pWrappedBlockSelectionInfo->part_1_length;
+ m_pWrappedBlockSelectionInfo->part_2_width = line->pBlocks[bufIndex].block_width-m_pWrappedBlockSelectionInfo->part_1_width;
+ return true;
+}
+
+//============ recalcFontVariables ==============//
+
+void KviIrcView::recalcFontVariables(const QFontMetrics &fm,const QFontInfo &fi)
+{
+ // FIXME: #warning "OPTIMIZE THIS: GLOBAL VARIABLES"
+ if(m_pFm)delete m_pFm;
+ m_pFm = new QFontMetrics(fm);
+ m_iFontLineSpacing = m_pFm->lineSpacing();
+ if(m_iFontLineSpacing < KVI_IRCVIEW_PIXMAP_SIZE && KVI_OPTION_BOOL(KviOption_boolIrcViewShowImages))
+ {
+ m_iFontLineSpacing = KVI_IRCVIEW_PIXMAP_SIZE;
+ }
+ m_iFontDescent =m_pFm->descent();
+ m_iFontLineWidth =m_pFm->lineWidth();
+ // cache the first 256 characters
+ for(unsigned short i=0;i<256;i++)
+ {
+ m_iFontCharacterWidth[i]=m_pFm->width(QChar(i));
+ }
+ if(m_iFontLineWidth==0)m_iFontLineWidth=1;
+ m_iWrapMargin = m_pFm->width("wwww");
+ //for(int i=0;i<256;i++)m_iFontCharacterWidth[i]=fm.width((char)i);
+ m_iMinimumPaintWidth = (m_pFm->width('w') << 1)+m_iWrapMargin;
+ m_iRelativePixmapY = (m_iFontLineSpacing + KVI_IRCVIEW_PIXMAP_SIZE) >> 1;
+ m_iIconWidth = m_pFm->width("w");
+
+ if(fi.fixedPitch() && (m_iIconWidth > 0))
+ {
+ while(m_iIconWidth < 18)m_iIconWidth += m_iIconWidth;
+ m_iIconSideSpacing = (m_iIconWidth - 16) >> 1;
+ } else {
+ m_iIconWidth = 18;
+ m_iIconSideSpacing = 1;
+ }
+}
+
+//================ resizeEvent ===============//
+
+void KviIrcView::resizeEvent(QResizeEvent *)
+{
+ int iScr = m_pScrollBar->sizeHint().width();
+ int iLeft = width()-iScr;
+ m_pToolsButton->setGeometry(iLeft,0,iScr,iScr);
+ m_pScrollBar->setGeometry(iLeft,iScr,iScr,height() - iScr);
+
+ if(m_pToolWidget)
+ {
+ if( ((m_pToolWidget->x() + m_pToolWidget->width()) > (iLeft - 1)) ||
+ ((m_pToolWidget->y() + m_pToolWidget->height()) > (height() - 1)))
+ {
+ m_pToolWidget->move(10,10);
+ }
+ }
+}
+
+QSize KviIrcView::sizeHint() const
+{
+ QSize ret(KVI_IRCVIEW_SIZEHINT_WIDTH,KVI_IRCVIEW_SIZEHINT_HEIGHT);
+ return ret;
+}
+
+void KviIrcView::showToolsPopup()
+{
+ if(!m_pToolsPopup)
+ m_pToolsPopup = new KviTalPopupMenu(this);
+
+ m_pToolsPopup->clear();
+
+ if(m_pToolWidget)
+ m_pToolsPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SEARCH)),__tr2qs("Hide Find Window"),this,SLOT(toggleToolWidget()));
+ else
+ m_pToolsPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SEARCH)),__tr2qs("Show Find Window"),this,SLOT(toggleToolWidget()));
+ m_pToolsPopup->insertSeparator();
+ m_pToolsPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_PLUS)),__tr2qs("Zoom In"),this,SLOT(increaseFontSize()));
+ m_pToolsPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_MINUS)),__tr2qs("Zoom Out"),this,SLOT(decreaseFontSize()));
+ m_pToolsPopup->insertItem(__tr2qs("Choose Temporary Font..."),this,SLOT(chooseFont()));
+ m_pToolsPopup->insertItem(__tr2qs("Choose Temporary Background..."),this,SLOT(chooseBackground()));
+ int id = m_pToolsPopup->insertItem(__tr2qs("Reset Temporary Background"),this,SLOT(resetBackground()));
+ m_pToolsPopup->setItemEnabled(id,m_pPrivateBackgroundPixmap != 0);
+ m_pToolsPopup->insertSeparator();
+ m_pToolsPopup->insertItem(__tr2qs("Clear Buffer"),this,SLOT(clearBuffer()));
+
+ QSize s = m_pToolsPopup->sizeHint();
+
+ m_pToolsPopup->popup(m_pToolsButton->mapToGlobal(QPoint(m_pToolsButton->width() - s.width(),m_pToolsButton->height())));
+}
+
+void KviIrcView::increaseFontSize()
+{
+ QFont f = font();
+ f.setPointSize(f.pointSize() + 1);
+ setFont(f);
+}
+
+void KviIrcView::decreaseFontSize()
+{
+ QFont f = font();
+ int p = f.pointSize();
+ if(p > 2)p--;
+ f.setPointSize(p);
+ setFont(f);
+}
+
+void KviIrcView::chooseFont()
+{
+ bool bOk;
+ QFont f = QFontDialog::getFont(&bOk,font(),this);
+ if(!bOk)return;
+ setFont(f);
+}
+
+void KviIrcView::chooseBackground()
+{
+ QString f;
+ if(!KviFileDialog::askForOpenFileName(f,__tr2qs("Choose the background image...")))return;
+ if(f.isEmpty())return;
+ QPixmap p(f);
+ if(p.isNull())
+ {
+ QMessageBox::information(this,__tr2qs("Invalid image"),__tr2qs("Failed to load the selected image"),__tr2qs("Ok"));
+ return;
+ }
+ setPrivateBackgroundPixmap(p);
+}
+
+void KviIrcView::resetBackground()
+{
+ setPrivateBackgroundPixmap(0);
+}
+
+void KviIrcView::toggleToolWidget()
+{
+ if(m_pToolWidget)
+ {
+ delete m_pToolWidget;
+ m_pToolWidget = 0;
+ m_pCursorLine = 0;
+ repaint();
+
+ } else {
+ m_pToolWidget = new KviIrcViewToolWidget(this);
+ int w = m_pToolWidget->sizeHint().width();
+ m_pToolWidget->move(width() - (w + 40),10);
+ m_pToolWidget->show();
+ }
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// The IrcView : find
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+void KviIrcView::setCursorLine(KviIrcViewLine * l)
+{
+ m_pCursorLine = l;
+ if(m_pCursorLine == m_pCurLine)
+ {
+
+ repaint();
+
+ return;
+ }
+ int sc = m_pScrollBar->value();
+ l = m_pCurLine;
+ if(m_pCursorLine->uIndex > m_pCurLine->uIndex)
+ {
+ // The cursor line is below the current line
+ while(l && (l != m_pCursorLine))
+ {
+ l = l->pNext;
+ sc++;
+ }
+ if(!l)return;
+ if(sc != m_pScrollBar->value())
+ {
+ m_pCurLine = m_pCursorLine;
+ m_iLastScrollBarValue = sc;
+ m_pScrollBar->setValue(sc);
+ } else {
+ repaint();
+ }
+ } else {
+ // The cursor line is over the current line
+ // Here we're in trouble :D
+ int curBottomCoord = height() - KVI_IRCVIEW_VERTICAL_BORDER;
+ int maxLineWidth = width();
+ if(KVI_OPTION_BOOL(KviOption_boolIrcViewShowImages))maxLineWidth -= KVI_IRCVIEW_PIXMAP_SEPARATOR_AND_DOUBLEBORDER_WIDTH;
+ //Make sure that we have enough space to paint something...
+ if(maxLineWidth < m_iMinimumPaintWidth)return; // ugh
+ //And loop thru lines until we not run over the upper bound of the view
+ KviIrcViewLine * curLine = m_pCurLine;
+ while(l)
+ {
+ if(maxLineWidth != l->iMaxLineWidth)calculateLineWraps(l,maxLineWidth);
+ curBottomCoord -= (l->uLineWraps + 1) * m_iFontLineSpacing;
+ while(curLine && (curBottomCoord < KVI_IRCVIEW_VERTICAL_BORDER))
+ {
+ if(curLine->iMaxLineWidth != maxLineWidth)calculateLineWraps(curLine,maxLineWidth);
+ curBottomCoord += ((curLine->uLineWraps + 1) * m_iFontLineSpacing) + m_iFontDescent;
+ curLine = curLine->pPrev;
+ sc--;
+ }
+ if(l == m_pCursorLine)break;
+ curBottomCoord -= m_iFontDescent;
+ l = l->pPrev;
+ }
+ if(!curLine)return;
+ if(sc != m_pScrollBar->value())
+ {
+ m_pCurLine = curLine;
+ m_iLastScrollBarValue = sc;
+ m_pScrollBar->setValue(sc);
+ } else {
+ repaint();
+ }
+ }
+}
+
+void KviIrcView::findNext(const QString& szText,bool bCaseS,bool bRegExp,bool bExtended)
+{
+ KviIrcViewLine * l = m_pCursorLine;
+ if(!l)l = m_pCurLine;
+ if(l)
+ {
+ l = l->pNext;
+ if(!l)l = m_pFirstLine;
+ KviIrcViewLine * start = l;
+
+ int idx = -1;
+
+ do{
+ if(m_pToolWidget)
+ {
+ if(!(m_pToolWidget->messageEnabled(l->iMsgType)))goto do_pNext;
+ }
+
+ if(bRegExp)
+ {
+ QRegExp re(szText,bCaseS,!bExtended);
+#if QT_VERSION >= 300
+ idx = re.search(l->szText,0);
+#else
+ idx = re.find(l->szText,0);
+#endif
+ } else {
+ QString tmp = l->szText;
+ idx = tmp.find(szText,0,bCaseS);
+ }
+
+ if(idx != -1)
+ {
+ setCursorLine(l);
+ if(m_pToolWidget)
+ {
+ QString tmp;
+ KviQString::sprintf(tmp,__tr2qs("Pos %d"),idx);
+ m_pToolWidget->setFindResult(tmp);
+ }
+ return;
+ }
+
+do_pNext:
+
+ l = l->pNext;
+ if(!l)l = m_pFirstLine;
+
+ } while(l != start);
+ }
+ m_pCursorLine = 0;
+ repaint();
+ if(m_pToolWidget)m_pToolWidget->setFindResult(__tr2qs("Not found"));
+}
+
+
+void KviIrcView::findPrev(const QString& szText,bool bCaseS,bool bRegExp,bool bExtended)
+{
+ KviIrcViewLine * l = m_pCursorLine;
+ if(!l)l = m_pCurLine;
+ if(l)
+ {
+ l = l->pPrev;
+ if(!l)l = m_pLastLine;
+ KviIrcViewLine * start = l;
+
+ int idx = -1;
+
+ do{
+
+ if(m_pToolWidget)
+ {
+ if(!(m_pToolWidget->messageEnabled(l->iMsgType)))goto do_pPrev;
+ }
+
+ if(bRegExp)
+ {
+ QRegExp re(szText,bCaseS,!bExtended);
+#if QT_VERSION >= 300
+ idx = re.search(l->szText,0);
+#else
+ idx = re.find(l->szText,0);
+#endif
+ } else {
+ QString tmp = l->szText;
+ idx = tmp.find(szText,0,bCaseS);;
+ }
+
+ if(idx != -1)
+ {
+ setCursorLine(l);
+ if(m_pToolWidget)
+ {
+ QString tmp;
+ KviQString::sprintf(tmp,__tr2qs("Pos %d"),idx);
+ m_pToolWidget->setFindResult(tmp);
+ }
+ return;
+ }
+
+do_pPrev:
+
+ l = l->pPrev;
+ if(!l)l = m_pLastLine;
+
+ } while(l != start);
+ }
+ m_pCursorLine = 0;
+
+ repaint();
+ if(m_pToolWidget)m_pToolWidget->setFindResult(__tr2qs("Not found"));
+}
+
+/*
+void KviIrcView::findClosestPositionInText(int xCursorPos,int yCursorPos,KviIrcViewPositionInText &pos)
+{
+ pos.pLine = getVisibleLineAt(xCursorPos,uCursorPos);
+}
+*/
+
+
+KviIrcViewLine * KviIrcView::getVisibleLineAt(int xPos,int yPos)
+{
+ KviIrcViewLine * l = m_pCurLine;
+ int iTop = height() + m_iFontDescent - KVI_IRCVIEW_VERTICAL_BORDER;
+
+ while(iTop > yPos)
+ {
+ if(l)
+ {
+ iTop -= ((l->uLineWraps + 1) * m_iFontLineSpacing) + m_iFontDescent;
+ if(iTop <= yPos)return l;
+ l = l->pPrev;
+ } else return 0;
+ }
+ return 0;
+}
+
+KviIrcViewWrappedBlock * KviIrcView::getLinkUnderMouse(int xPos,int yPos,QRect * pRect,QString * linkCmd,QString * linkText)
+{
+ KviIrcViewLine * l = m_pCurLine;
+ int iTop = height() + m_iFontDescent - KVI_IRCVIEW_VERTICAL_BORDER;
+
+ while(iTop > yPos)
+ {
+ if(!l)return 0;
+
+ iTop -= ((l->uLineWraps + 1) * m_iFontLineSpacing) + m_iFontDescent;
+
+ if(iTop > yPos)
+ {
+ // still below the mouse
+ l = l->pPrev;
+ continue;
+ }
+
+ // got the right KviIrcViewLine
+ int iLeft = KVI_IRCVIEW_HORIZONTAL_BORDER;
+ if(KVI_OPTION_BOOL(KviOption_boolIrcViewShowImages))iLeft += KVI_IRCVIEW_PIXMAP_AND_SEPARATOR;
+ int firstRowTop = iTop;
+ int i = 0;
+
+ for(;;)
+ {
+ if(yPos <= iTop + m_iFontLineSpacing)
+ {
+ // exactly this row of this line
+ if(iTop != firstRowTop)
+ if(KVI_OPTION_BOOL(KviOption_boolIrcViewWrapMargin))iLeft+=m_iWrapMargin;
+ if(xPos < iLeft)return 0;
+ int iBlockWidth = 0;
+ int iLastEscapeBlock = -1;
+ int iLastEscapeBlockTop = -1;
+ for(;;)
+ {
+ int iLastLeft = iLeft;
+ if(i >= l->iBlockCount)return 0;
+ if(l->pBlocks[i].pChunk)
+ if(l->pBlocks[i].pChunk->type == KVI_TEXT_ESCAPE)
+ {
+ iLastEscapeBlock=i;
+ iLastEscapeBlockTop=iTop;
+ }
+ if(l->pBlocks[i].pChunk)
+ if(l->pBlocks[i].pChunk->type == KVI_TEXT_UNESCAPE) iLastEscapeBlock=-1;
+ if(l->pBlocks[i].block_width > 0)
+ {
+ iBlockWidth = l->pBlocks[i].block_width;
+ iLeft += iBlockWidth;
+ } else {
+ if(i < (l->iBlockCount - 1))
+ {
+ // There is another block...
+ // Check if it is a wrap...
+ if(l->pBlocks[i+1].pChunk == 0)
+ {
+ iBlockWidth = width() - iLastLeft;
+ iLeft = width();
+ }
+ // else simply a zero characters block
+ }
+ }
+ if(xPos < iLeft)
+ {
+ // Got it!
+ // link ?
+ bool bHadWordWraps = false;
+ while(l->pBlocks[i].pChunk == 0)
+ {
+ // word wrap ?
+ if(i >= 0)
+ {
+ i--;
+ bHadWordWraps = true;
+ } else return 0; // all word wraps ?!!!
+ }
+ if(iLastEscapeBlock != -1)
+ {
+ int iLeftBorder=iLeft;
+ int k;
+ for(k = i ; k>=iLastEscapeBlock ; k--)
+ iLeftBorder-=l->pBlocks[k].block_width;
+ int iRightBorder=0;
+ unsigned int uLineWraps = 0;
+ for(k = iLastEscapeBlock;; k++)
+ {
+ if(l->pBlocks[k].pChunk)
+ if(l->pBlocks[k].pChunk->type != KVI_TEXT_UNESCAPE)
+ iRightBorder+=l->pBlocks[k].block_width;
+ else
+ break;
+ else
+ {
+ uLineWraps++;
+ bHadWordWraps=1;
+ }
+ }
+ if(pRect)
+ {
+ *pRect = QRect(iLeftBorder,
+ bHadWordWraps ? iLastEscapeBlockTop : iTop,
+ iRightBorder,
+ ((uLineWraps + 1) * m_iFontLineSpacing) + m_iFontDescent);
+ }
+ if(linkCmd)
+ {
+ linkCmd->setUnicodeCodes(l->pBlocks[iLastEscapeBlock].pChunk->szPayload,kvi_wstrlen(l->pBlocks[iLastEscapeBlock].pChunk->szPayload));
+ linkCmd->stripWhiteSpace();
+ if((*linkCmd)=="nc") (*linkCmd)="n";
+ }
+ if(linkText)
+ {
+ QString szLink;
+ int iEndOfLInk = iLastEscapeBlock;
+ while(1)
+ {
+ if(l->pBlocks[iEndOfLInk].pChunk)
+ if(l->pBlocks[iEndOfLInk].pChunk->type != KVI_TEXT_UNESCAPE)
+ {
+ switch(l->pBlocks[iEndOfLInk].pChunk->type)
+ {
+ case KVI_TEXT_BOLD:
+ case KVI_TEXT_UNDERLINE:
+ case KVI_TEXT_REVERSE:
+ case KVI_TEXT_RESET:
+ szLink.append(QChar(l->pBlocks[iEndOfLInk].pChunk->type));
+ break;
+ case KVI_TEXT_COLOR:
+ szLink.append(QChar(KVI_TEXT_COLOR));
+ if(l->pBlocks[iEndOfLInk].pChunk->colors.fore != KVI_NOCHANGE)
+ {
+ szLink.append(QString("%1").arg((int)(l->pBlocks[iEndOfLInk].pChunk->colors.fore)));
+ }
+ if(l->pBlocks[iEndOfLInk].pChunk->colors.back != KVI_NOCHANGE)
+ {
+ szLink.append(QChar(','));
+ szLink.append(QString("%1").arg((int)(l->pBlocks[iEndOfLInk].pChunk->colors.back)));
+ }
+ break;
+ }
+ szLink.append(l->szText.mid(l->pBlocks[iEndOfLInk].block_start,l->pBlocks[iEndOfLInk].block_len));
+ } else
+ break;
+ iEndOfLInk++;
+
+ }
+ *linkText=szLink;
+ // grab the rest of the link visible string
+ // Continue while we do not find a non word wrap block block
+ for(int bufIndex = (i + 1);bufIndex < l->iBlockCount;bufIndex++)
+ {
+ if(l->pBlocks[bufIndex].pChunk ) break; //finished : not a word wrap
+ else {
+ linkText->append(l->szText.mid(l->pBlocks[bufIndex].block_start,l->pBlocks[bufIndex].block_len));
+ }
+ }
+ }
+ return &(l->pBlocks[iLastEscapeBlock]);
+ }
+ if(l->pBlocks[i].pChunk->type == KVI_TEXT_ICON)
+ {
+ if(pRect)
+ {
+ *pRect = QRect(iLastLeft,
+ bHadWordWraps ? firstRowTop : iTop,
+ iBlockWidth,
+ ((l->uLineWraps + 1) * m_iFontLineSpacing) + m_iFontDescent);
+ }
+ if(linkCmd)
+ {
+ *linkCmd = "[!txt]";
+ QString tmp;
+ tmp.setUnicodeCodes(l->pBlocks[i].pChunk->szPayload,kvi_wstrlen(l->pBlocks[i].pChunk->szPayload));
+ linkCmd->append(tmp);
+ linkCmd->stripWhiteSpace();
+ }
+ if(linkText)
+ {
+ *linkText = "";
+ }
+ return &(l->pBlocks[i]);
+ }
+ return 0;
+ }
+ i++;
+ }
+ } else {
+ // run until a word wrap block
+ i++; //at least one block!
+ while(i < l->iBlockCount)
+ {
+ // still ok to run right
+ if(l->pBlocks[i].pChunk == 0)
+ {
+// i++;
+ break;
+ } else i++;
+ }
+ if(i >= l->iBlockCount)return 0;
+ iTop += m_iFontLineSpacing;
+ }
+ }
+ }
+ return 0;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Mouse handling routines
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+/*
+ @doc: escape_sequences
+ @title:
+ Escape sequences and clickable links
+ @type:
+ generic
+ @body:
+ The KVIrc view widgets support clickable links.[br]
+ The links can be created using special escape sequences in the text
+ passed to the [cmd]echo[/cmd] command.[br]
+ KVIrc uses some escape sequences in the text "echoed" internally.[br]
+ The simplest way to explain it is to use an example:[br]
+ [example]
+ [cmd]echo[/cmd] This is a [fnc]$cr[/fnc]![!dbl][cmd]echo[/cmd] You have clicked it![fnc]$cr[/fnc]\clickable link$cr !
+ [/example]
+ The example above will show the following text line: "This is a clickable link".
+ If you move the mouse over the words "clickable link", you will see the text highlighted.[br]
+ Once you double-click one of that words, the command "[cmd]echo[/cmd] You have clicked it!" will be executed.[br]
+ The format looks complex ?... it is not...just read on.[br]
+
+ <cr>!<link_type><cr><visible text><cr>
+ <cr>!<escape_command><cr><visible text><cr>
+
+ [big]Escape format[/big]
+ The whole escape sequence format is the following:[br]
+ [b]<cr>!<escape_command><cr><visible text><cr>[/b][br]
+ <cr> is the carriage return character. You can obtain it by using the [fnc]]$cr[/fnc] function.[br]
+ <visible text> is the text that will appear as "link" when you move the mouse over it.[br]
+ <escape_command> is the description of the actions to be taken when the user interacts with the link.[br]
+ <escape_command> has the two following syntactic forms:[br]
+ [b]<escape_command> ::= <user_defined_commands>[/b][br]
+ [b]<escape_command> ::= <builtin_link_description>[/b]
+
+ [big]User defined links[/big][br]
+ The user defined links allow you to perform arbitrary commands when the user interacts with the link.[br]
+ The commands are specified in the <escape_command> part by using the following syntax:[br]
+ <escape_command> ::= <user_defined_commands>[br]
+ <user_defined_commands> ::= <command_rule> [<user_defined_commands>][br]
+ <command_rule> ::= <action_tag><command>[br]
+ <action_tag> ::= "[!" <action> "]"[br]
+ <action> ::= "rbt" | "mbt" | "dbl" | "txt"[br]
+ <command> ::= any kvirc command (see notes below)[br]
+
+ [big]Builtin links[/big][br]
+ The builtin links have builtin actions performed when the user interact with the link.[br]
+ These links are used internally in KVIrc , but you can use them too.[br]
+ The <escape_command> is a single letter this time: it defines the type of the link.[br]
+ Currently KVIrc uses six types of builtin links : 'n' for nickname links, 'u' for url links,
+ 'c' for channel links, 'h' for hostname links, 'm' for mask links and 's' for server links.[br]
+ Theoretically you can also use your own link types: just use any other letter or digit (you can't use ']' and <cr>),
+ but probably you will prefer a completely user defined link in that case anyway.[br]
+ Once the user interacts with the link , kvirc executes the predefined events:[br]
+ On right-click the event OnBuiltinLinkRightClicked is triggered: the first parameter is the link type,
+ the second parameter is the <visible text> (as a single parameter!!!)[br]
+ On middle-click the event OnBuiltinLinkMiddleClicked is triggered: the parameters are similar to the previous one.[br]
+ In the same way you have OnBuiltinLinkDoubleClicked.[br]
+
+ [big]A shortcut[/big]
+ You may have a look at the [fnc]$fmtlink[/fnc] function: it does automatically some of the job explained
+ in this document.[br]
+
+*/
+
+// FIXME: #warning "Finish the doc above!! Maybe some examples ?!"
+
+
+void KviIrcView::mouseDoubleClickEvent(QMouseEvent *e)
+{
+ QString cmd;
+ QString linkCmd;
+ QString linkText;
+
+ if(m_iMouseTimer)
+ {
+ killTimer(m_iMouseTimer);
+ m_iMouseTimer=0;
+ delete m_pLastEvent;
+ m_pLastEvent = 0;
+ }
+
+ getLinkUnderMouse(e->pos().x(),e->pos().y(),0,&linkCmd,&linkText);
+
+ if(linkCmd.isEmpty())
+ {
+ KVS_TRIGGER_EVENT_0(KviEvent_OnTextViewDoubleClicked,m_pKviWindow);
+ return;
+ }
+
+ QString szCmd(linkCmd);
+ szCmd.remove(0,1);
+
+ KviKvsVariantList * pParams = new KviKvsVariantList();
+ if(!szCmd.isEmpty()) pParams->append(szCmd);
+ else pParams->append(linkText);
+ pParams->append(linkText);
+ pParams->append(szCmd);
+
+
+ switch(linkCmd[0].unicode())
+ {
+ case 'n':
+ {
+ bool bTrigger = false;
+ switch(m_pKviWindow->type())
+ {
+ case KVI_WINDOW_TYPE_CHANNEL:
+ if(((KviChannel *)m_pKviWindow)->isOn(linkText))
+ {
+ KVS_TRIGGER_EVENT(KviEvent_OnChannelNickDefaultActionRequest,m_pKviWindow,pParams);
+ } else bTrigger = true;
+ break;
+ case KVI_WINDOW_TYPE_QUERY:
+ if(KviQString::equalCI(((KviQuery *)m_pKviWindow)->windowName(),linkText))
+ {
+ KVS_TRIGGER_EVENT(KviEvent_OnQueryNickDefaultActionRequest,m_pKviWindow,pParams);
+ } else bTrigger = true;
+ break;
+ default:
+ bTrigger = true;
+ break;
+ }
+ if(bTrigger)
+ {
+ if(console())
+ {
+ KVS_TRIGGER_EVENT(KviEvent_OnNickLinkDefaultActionRequest,m_pKviWindow,pParams);
+ }
+ }
+ }
+ break;
+ case 'm':
+ if((linkCmd.length() > 2) && (m_pKviWindow->type() == KVI_WINDOW_TYPE_CHANNEL))
+ {
+ if(((KviChannel *)m_pKviWindow)->isMeOp())
+ {
+ QChar plmn = linkCmd[1];
+ if((plmn.unicode() == '+') || (plmn.unicode() == '-'))
+ {
+ QString target(m_pKviWindow->windowName());
+ target.replace("\\","\\\\");
+ target.replace("\"","\\\"");
+ target.replace(";","\\;");
+ target.replace("$","\\$");
+ target.replace("%","\\%");
+ QChar flag = linkCmd[2];
+ switch(flag.unicode())
+ {
+ case 'o':
+ case 'v':
+ // We can do nothing here...
+ break;
+
+ case 'b':
+ case 'I':
+ case 'e':
+ case 'k':
+ KviQString::sprintf(cmd,"mode %Q %c%c $0",&target,plmn.latin1(),flag.latin1());
+ break;
+ default:
+ KviQString::sprintf(cmd,"mode %Q %c%c",&target,plmn.latin1(),flag.latin1());
+ break;
+ }
+ }
+ }
+ }
+ break;
+ case 'h':
+ m_pKviWindow->output(KVI_OUT_HOSTLOOKUP,__tr2qs("Looking up host %Q..."),&linkText);
+ cmd = "host -a $0";
+ break;
+ case 'u':
+ {
+ QString urlText;
+ if(!szCmd.isEmpty()) urlText=szCmd;
+ else urlText=linkText;
+ if(
+ !KviQString::cmpCIN(urlText,"irc://",6) ||
+ !KviQString::cmpCIN(urlText,"irc6://",7) ||
+ !KviQString::cmpCIN(urlText,"ircs://",7) ||
+ !KviQString::cmpCIN(urlText,"ircs6://",8)
+ )
+ {
+ KviIrcUrl::run(urlText,KviIrcUrl::TryCurrentContext | KviIrcUrl::DoNotPartChans, console());
+ } else {
+ cmd = "openurl $0";
+ }
+ }
+ break;
+ case 'c':
+ {
+ if(console() && console()->connection())
+ {
+ QString szChan=linkText;
+ if(szCmd.length()>0) szChan=szCmd;
+ if(KviChannel * c = console()->connection()->findChannel(szChan))
+ {
+ // FIXME: #warning "Is this ok ?"
+ c->raise();
+ c->setFocus();
+ } else {
+ cmd = QString("join %1").arg(szChan);
+ }
+ }
+ }
+ break;
+ case 's':
+ cmd = "motd $0";
+ break;
+ default:
+ {
+ getLinkEscapeCommand(cmd,linkCmd,"[!dbl]");
+ if(cmd.isEmpty())
+ {
+ KVS_TRIGGER_EVENT_0(KviEvent_OnTextViewDoubleClicked,m_pKviWindow);
+ }
+ }
+ break;
+ }
+ if(!cmd.isEmpty())
+ {
+ KviKvsScript::run(cmd,m_pKviWindow,pParams);
+ }
+ delete pParams;
+}
+
+void KviIrcView::mousePressEvent(QMouseEvent *e)
+{
+ if(m_pKviWindow->input()) m_pKviWindow->input()->setFocus();
+
+ if(e->button() & Qt::LeftButton)
+ {
+ // This is the beginning of a selection...
+ // We just set the mouse to be "down" and
+ // await mouseMove events...
+
+ if(m_pToolWidget)
+ {
+ m_pCursorLine = getVisibleLineAt(e->pos().x(),e->pos().y());
+ repaint();
+ }
+
+ m_mousePressPos = e->pos();
+ m_mouseCurrentPos = e->pos();
+
+ m_bMouseIsDown = true;
+
+ m_bShiftPressed = (e->state() & Qt::ShiftButton);
+
+ calculateSelectionBounds();
+ }
+
+ if(e->button() & Qt::LeftButton)
+ {
+ if(m_iMouseTimer)
+ {
+ killTimer(m_iMouseTimer);
+ m_iMouseTimer=0;
+ delete m_pLastEvent;
+ m_pLastEvent = 0;
+ } else {
+ m_iMouseTimer = startTimer(QApplication::doubleClickInterval());
+ m_pLastEvent = new QMouseEvent(*e);
+ }
+ } else {
+ mouseRealPressEvent(e);
+ }
+}
+
+void KviIrcView::mouseRealPressEvent(QMouseEvent *e)
+{
+ QString linkCmd;
+ QString linkText;
+ getLinkUnderMouse(e->pos().x(),e->pos().y(),0,&linkCmd,&linkText);
+
+ QString szCmd(linkCmd);
+ szCmd.remove(0,1);
+
+ KviKvsVariantList * pParams = new KviKvsVariantList();
+ if(!szCmd.isEmpty()) pParams->append(szCmd);
+ else pParams->append(linkText);
+ pParams->append(linkText);
+ pParams->append(szCmd);
+
+
+ if(!(e->state() & Qt::ControlButton))//(e->button() & Qt::RightButton) && (
+ {
+ if(!linkCmd.isEmpty())
+ {
+ switch(linkCmd[0].unicode())
+ {
+ case 'n':
+ {
+ bool bTrigger = false;
+ switch(m_pKviWindow->type())
+ {
+ case KVI_WINDOW_TYPE_CHANNEL:
+ if(((KviChannel *)m_pKviWindow)->isOn(linkText))
+ {
+ if(e->button() & Qt::RightButton)
+ KVS_TRIGGER_EVENT(KviEvent_OnChannelNickPopupRequest,m_pKviWindow,pParams);
+ if(e->button() & Qt::LeftButton) {
+ KVS_TRIGGER_EVENT(KviEvent_OnChannelNickLinkClick,m_pKviWindow,pParams);
+ if(m_pKviWindow)
+ {
+ if(m_pKviWindow->inherits("KviChannel")) {
+ KviChannel *c = (KviChannel*)m_pKviWindow;
+ QString nick;
+ if(pParams->firstAsString(nick))
+ c->userListView()->select(nick);
+ }
+ }
+ }
+ } else bTrigger = true;
+ break;
+ case KVI_WINDOW_TYPE_QUERY:
+ if(KviQString::equalCI(((KviQuery *)m_pKviWindow)->windowName(),linkText))
+ {
+ if(e->button() & Qt::RightButton)
+ KVS_TRIGGER_EVENT(KviEvent_OnQueryNickPopupRequest,m_pKviWindow,pParams);
+ if(e->button() & Qt::LeftButton)
+ KVS_TRIGGER_EVENT(KviEvent_OnQueryNickLinkClick,m_pKviWindow,pParams);
+ } else bTrigger = true;
+ break;
+ default:
+ bTrigger = true;
+ break;
+ }
+ if(bTrigger)
+ {
+ if(console())
+ {
+ if(e->button() & Qt::RightButton)
+ KVS_TRIGGER_EVENT(KviEvent_OnNickLinkPopupRequest,m_pKviWindow,pParams);
+ if(e->button() & Qt::LeftButton)
+ KVS_TRIGGER_EVENT(KviEvent_OnConsoleNickLinkClick,m_pKviWindow,pParams);
+ } else emit rightClicked();
+ }
+ }
+ break;
+ case 'h':
+ if(e->button() & Qt::RightButton)
+ KVS_TRIGGER_EVENT(KviEvent_OnHostLinkPopupRequest,m_pKviWindow,pParams);
+ if(e->button() & Qt::LeftButton)
+ KVS_TRIGGER_EVENT(KviEvent_OnHostLinkClick,m_pKviWindow,pParams);
+ break;
+ case 'u':
+ if(e->button() & Qt::RightButton)
+ KVS_TRIGGER_EVENT(KviEvent_OnUrlLinkPopupRequest,m_pKviWindow,pParams);
+ if(e->button() & Qt::LeftButton)
+ KVS_TRIGGER_EVENT(KviEvent_OnUrlLinkClick,m_pKviWindow,pParams);
+ break;
+ case 'c':
+ if(e->button() & Qt::RightButton)
+ KVS_TRIGGER_EVENT(KviEvent_OnChannelLinkPopupRequest,m_pKviWindow,pParams);
+ if(e->button() & Qt::LeftButton)
+ KVS_TRIGGER_EVENT(KviEvent_OnChannelLinkClick,m_pKviWindow,pParams);
+ break;
+ case 's':
+ if(e->button() & Qt::RightButton)
+ KVS_TRIGGER_EVENT(KviEvent_OnServerLinkPopupRequest,m_pKviWindow,pParams);
+ if(e->button() & Qt::LeftButton)
+ KVS_TRIGGER_EVENT(KviEvent_OnServerLinkClick,m_pKviWindow,pParams);
+ break;
+ default:
+ {
+ if(e->button() & Qt::RightButton)
+ {
+ QString tmp;
+ getLinkEscapeCommand(tmp,linkCmd,"[!rbt]");
+ if(!tmp.isEmpty())
+ {
+ KviKvsScript::run(tmp,m_pKviWindow,pParams);
+ } else emit rightClicked();
+ }
+ }
+ break;
+ }
+ } else if(e->button() & Qt::RightButton) emit rightClicked();
+
+ } else if((e->button() & Qt::MidButton) || ((e->button() & Qt::RightButton) && (e->state() & Qt::ControlButton)))
+ {
+ QString tmp;
+ getLinkEscapeCommand(tmp,linkCmd,QString("[!mbt]"));
+ if(!tmp.isEmpty())
+ {
+ KviKvsScript::run(tmp,m_pKviWindow,pParams);
+ } else {
+ KVS_TRIGGER_EVENT_0(KviEvent_OnWindowPopupRequest,m_pKviWindow);
+ }
+ }
+ delete pParams;
+}
+
+//================ mouseReleaseEvent ===============//
+
+void KviIrcView::mouseReleaseEvent(QMouseEvent *)
+{
+ if(m_iSelectTimer)
+ {
+ killTimer(m_iSelectTimer);
+ m_iSelectTimer = 0;
+ QClipboard * c = QApplication::clipboard();
+ if(c)
+ {
+ // copy to both!
+ c->setText(m_szLastSelection,QClipboard::Clipboard);
+ if(c->supportsSelection())
+ c->setText(m_szLastSelection,QClipboard::Selection);
+ }
+ }
+
+ if(m_bMouseIsDown)
+ {
+ m_bMouseIsDown = false;
+ m_bShiftPressed = false;
+ // Insert the lines blocked while selecting
+ while(KviIrcViewLine * l = m_pMessagesStoppedWhileSelecting->first())
+ {
+ m_pMessagesStoppedWhileSelecting->removeFirst();
+ appendLine(l,false);
+ }
+ repaint();
+ }
+}
+
+// FIXME: #warning "The tooltip timeout should be small, because the view scrolls!"
+
+void KviIrcView::mouseMoveEvent(QMouseEvent *e)
+{
+// debug("Pos : %d,%d",e->pos().x(),e->pos().y());
+ if(m_bMouseIsDown && (e->state() & Qt::LeftButton)) // m_bMouseIsDown MUST BE true...(otherwise the mouse entered the window with the button pressed ?)
+ {
+
+ if(m_iSelectTimer == 0)m_iSelectTimer = startTimer(KVI_IRCVIEW_SELECT_REPAINT_INTERVAL);
+
+ /*if(m_iMouseTimer)
+ {
+ killTimer(m_iMouseTimer);
+ m_iMouseTimer=0;
+ mouseRealPressEvent(m_pLastEvent);
+ delete m_pLastEvent;
+ m_pLastEvent=0;
+ }*/
+ } else {
+ if(m_iSelectTimer)
+ {
+ killTimer(m_iSelectTimer);
+ m_iSelectTimer = 0;
+ }
+
+ int yPos = e->pos().y();
+ int rectTop;
+ int rectHeight;
+ QRect rctLink;
+ KviIrcViewWrappedBlock * newLinkUnderMouse = getLinkUnderMouse(e->pos().x(),yPos,&rctLink);
+
+ rectTop = rctLink.y();
+ rectHeight = rctLink.height();
+
+ if(newLinkUnderMouse != m_pLastLinkUnderMouse)
+ {
+ //abortTip();
+ //m_iTipTimer = startTimer(KVI_OPTION_UINT(KviOption_uintIrcViewToolTipTimeoutInMsec));
+ m_pLastLinkUnderMouse = newLinkUnderMouse;
+ if(m_pLastLinkUnderMouse)
+ {
+ setCursor(Qt::PointingHandCursor);
+ if(rectTop < 0)rectTop = 0;
+ if((rectTop + rectHeight) > height())rectHeight = height() - rectTop;
+
+ if(m_iLastLinkRectHeight > -1)
+ {
+ // prev link
+ int top = (rectTop < m_iLastLinkRectTop) ? rectTop : m_iLastLinkRectTop;
+ int lastBottom = m_iLastLinkRectTop + m_iLastLinkRectHeight;
+ int thisBottom = rectTop + rectHeight;
+ QRect r(0,top,width(),((lastBottom > thisBottom) ? lastBottom : thisBottom) - top);
+ repaint(r);
+ } else {
+ // no prev link
+ QRect r(0,rectTop,width(),rectHeight);
+ repaint(r);
+ }
+ m_iLastLinkRectTop = rectTop;
+ m_iLastLinkRectHeight = rectHeight;
+ } else {
+ setCursor(Qt::ArrowCursor);
+ if(m_iLastLinkRectHeight > -1)
+ {
+ // There was a previous bottom rect
+ QRect r(0,m_iLastLinkRectTop,width(),m_iLastLinkRectHeight);
+ repaint(r);
+ m_iLastLinkRectTop = -1;
+ m_iLastLinkRectHeight = -1;
+ }
+ }
+
+ }
+ }
+}
+
+KviConsole * KviIrcView::console()
+{
+ return m_pKviWindow->console();
+}
+
+void KviIrcView::doLinkToolTip(const QRect &rct,QString &linkCmd,QString &linkText)
+{
+ if(linkCmd.isEmpty())return;
+
+ QString szCmd(linkCmd);
+ szCmd.remove(0,1);
+
+ QString tip;
+
+ switch(linkCmd[0].unicode())
+ {
+ case 'u': // url link
+ {
+ tip = "<table width=\"100%\">" \
+ "<tr><td valign=\"center\"><img src=\"url_icon\"> <u><font color=\"blue\"><nowrap>";
+ if(linkText.length() > 50)
+ {
+ tip += linkText.left(47);
+ tip += "...";
+ } else {
+ tip += linkText;
+ }
+ tip+="</nowrap></font></u></td></tr><tr><td>";
+ QMimeSourceFactory::defaultFactory()->setPixmap("url_icon",*(g_pIconManager->getSmallIcon(KVI_SMALLICON_URL)));
+ tip += __tr2qs("Double-click to open this link");
+ tip += "</td></tr></table>";
+ }
+ break;
+ case 'h': // host link
+ {
+ tip = "<table width=\"100%\">" \
+ "<tr><td valign=\"center\"><img src=\"host_icon\"> <u><font color=\"blue\"><nowrap>";
+ if(linkText.length() > 50)
+ {
+ tip += linkText.left(47);
+ tip += "...";
+ } else {
+ tip += linkText;
+ }
+ tip+="</nowrap></font></u></td></tr><tr><td>";
+ QMimeSourceFactory::defaultFactory()->setPixmap("host_icon",*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SERVER)));
+
+ if(linkText.find('*') != -1)
+ {
+ if(linkText.length() > 1)tip += __tr2qs("Unable to look it up hostname: Hostname appears to be masked");
+ else tip += __tr2qs("Unable to look it up hostname: Unknown host");
+ } else {
+ tip += __tr2qs("Double-click to look up this hostname<br>Right-click to view other options");
+ }
+ tip += "</td></tr></table>";
+ }
+ break;
+ case 's': // server link
+ {
+ // FIXME: #warning "Spit out some server info...hub ?...registered ?"
+
+ tip = "<table width=\"100%\">" \
+ "<tr><td valign=\"center\"><img src=\"server_icon\"> <u><font color=\"blue\"><nowrap>";
+ QMimeSourceFactory::defaultFactory()->setPixmap("server_icon",*(g_pIconManager->getSmallIcon(KVI_SMALLICON_IRC)));
+ if(linkText.length() > 50)
+ {
+ tip += linkText.left(47);
+ tip += "...";
+ } else {
+ tip += linkText;
+ }
+ tip+="</nowrap></font></u></td></tr><tr><td>";
+
+ if(linkText.find('*') != -1)
+ {
+ if(linkText.length() > 1)tip += __tr2qs("Server appears to be a network hub<br>");
+ else tip += __tr2qs("Unknown server<br>"); // might happen...
+ }
+
+ tip.append(__tr2qs("Double-click to read the MOTD<br>Right-click to view other options"));
+ tip += "</td></tr></table>";
+ }
+ break;
+ case 'm': // mode link
+ {
+ if((linkCmd.length() > 2) && (m_pKviWindow->type() == KVI_WINDOW_TYPE_CHANNEL))
+ {
+ if(((KviChannel *)m_pKviWindow)->isMeOp())
+ {
+ QChar plmn = linkCmd[1];
+ if((plmn.unicode() == '+') || (plmn.unicode() == '-'))
+ {
+ tip = __tr2qs("Double-click to set<br>");
+ QChar flag = linkCmd[2];
+ switch(flag.unicode())
+ {
+ case 'o':
+ case 'v':
+ // We can do nothing here...
+ tip = "";
+ break;
+ case 'b':
+ case 'I':
+ case 'e':
+ case 'k':
+ KviQString::appendFormatted(tip,QString("<b>mode %Q %c%c %Q</b>"),&(m_pKviWindow->windowName()),plmn.latin1(),flag.latin1(),&linkText);
+ break;
+ default:
+ KviQString::appendFormatted(tip,QString("<b>mode %Q %c%c</b>"),&(m_pKviWindow->windowName()),plmn.latin1(),flag.latin1());
+ break;
+ }
+ }
+ } else {
+ // I'm not op...no way
+ tip = __tr2qs("You're not an operator: You may not change channel modes");
+ }
+ }
+ }
+ break;
+ case 'n': // nick link
+ {
+ if(console())
+ {
+ if(console()->connection())
+ {
+ KviIrcUserEntry * e = console()->connection()->userDataBase()->find(linkText);
+ if(e)
+ {
+ QString buffer;
+ console()->getUserTipText(linkText,e,buffer);
+ tip = buffer;
+ } else KviQString::sprintf(tip,__tr2qs("Nothing known about %Q"),&linkText);
+ } else KviQString::sprintf(tip,__tr2qs("Nothing known about %Q (no connection)"),&linkText);
+ }
+ }
+ break;
+ case 'c': // channel link
+ {
+ if(console() && console()->connection())
+ {
+ QString szChan = linkText;
+ QString buf;
+ tip = "<img src=\"chan_icon\"> ";
+ QMimeSourceFactory::defaultFactory()->setPixmap("chan_icon",*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CHANNEL)));
+
+ if(szCmd.length()>0) szChan=szCmd;
+ KviChannel * c = console()->connection()->findChannel(szChan);
+ QString szUrl;
+ if(c)
+ {
+ QString chanMode;
+ c->getChannelModeString(chanMode);
+ QString topic = KviMircCntrl::stripControlBytes(c->topicWidget()->topic());
+ topic.replace("<","&lt;");
+ topic.replace(">","&gt;");
+ KviIrcUrl::join(szUrl,console()->connection()->target()->server());
+ szUrl.append(szChan);
+ KviQString::sprintf(buf,__tr2qs("<b>%Q</b> (<u><font color=\"blue\"><nowrap>"
+ "%Q</nowrap></font></u>): <br><nowrap>+%Q (%u users)<hr>%Q</nowrap>"),&szChan,&szUrl,&chanMode,
+ c->count(),&topic);
+ } else {
+ KviIrcUrl::join(szUrl,console()->connection()->target()->server());
+ szUrl.append(szChan);
+ KviQString::sprintf(buf,__tr2qs("<b>%Q</b> (<u><font color=\"blue\"><nowrap>"
+ "%Q</nowrap></font></u>)<hr>Double-click to join %Q<br>Right click to view other options"),&szChan,&szUrl,&szChan);
+ }
+
+ tip += buf;
+ }
+ }
+ break;
+ default:
+ {
+ QString dbl,rbt,txt,mbt;
+ getLinkEscapeCommand(dbl,linkCmd,"[!dbl]");
+ getLinkEscapeCommand(rbt,linkCmd,"[!rbt]");
+ getLinkEscapeCommand(txt,linkCmd,"[!txt]");
+ getLinkEscapeCommand(mbt,linkCmd,"[!mbt]");
+
+ if(!txt.isEmpty())tip = txt;
+ if(tip.isEmpty() && (!dbl.isEmpty()))
+ {
+ if(!tip.isEmpty())tip.append("<hr>");
+ KviQString::appendFormatted(tip,__tr2qs("<b>Double-click:</b><br>%Q"),&dbl);
+ }
+ if(tip.isEmpty() && (!mbt.isEmpty()))
+ {
+ if(!tip.isEmpty())tip.append("<hr>");
+ KviQString::appendFormatted(tip,__tr2qs("<b>Middle-click:</b><br>%Q"),&mbt);
+ }
+ if(tip.isEmpty() && (!rbt.isEmpty()))
+ {
+ if(!tip.isEmpty())tip.append("<hr>");
+ KviQString::appendFormatted(tip,__tr2qs("<b>Right-click:</b><br>%Q"),&rbt);
+ }
+ }
+ break;
+ }
+
+ if(tip.isEmpty())return;
+
+ m_pToolTip->doTip(rct,tip);
+}
+void KviIrcView::leaveEvent ( QEvent * )
+{
+ if(m_pLastLinkUnderMouse)
+ {
+ m_pLastLinkUnderMouse=0;
+ update();
+ }
+}
+void KviIrcView::timerEvent(QTimerEvent *e)
+{
+ m_mouseCurrentPos = mapFromGlobal(QCursor::pos());
+
+ if(e->timerId() == m_iSelectTimer)
+ {
+ calculateSelectionBounds();
+ repaint();
+ }
+ if(e->timerId() == m_iMouseTimer)
+ {
+ killTimer(m_iMouseTimer);
+ m_iMouseTimer=0;
+ mouseRealPressEvent(m_pLastEvent);
+ delete m_pLastEvent;
+ m_pLastEvent=0;
+ }
+ if(e->timerId() == m_iFlushTimer)
+ {
+ flushLog();
+ }
+}
+
+void KviIrcView::keyPressEvent(QKeyEvent *e)
+{
+ switch(e->key())
+ {
+ case Qt::Key_PageUp:
+ prevPage();
+ e->accept();
+ break;
+ case Qt::Key_PageDown:
+ nextPage();
+ e->accept();
+ break;
+ default:
+ e->ignore();
+ }
+}
+
+void KviIrcView::maybeTip(const QPoint &pnt)
+{
+ QString linkCmd;
+ QString linkText;
+
+ QRect rctLink;
+
+ KviIrcViewWrappedBlock * linkUnderMouse = getLinkUnderMouse(pnt.x(),pnt.y(),&rctLink,&linkCmd,&linkText);
+
+ if((linkUnderMouse == m_pLastLinkUnderMouse) && linkUnderMouse)doLinkToolTip(rctLink,linkCmd,linkText);
+ else m_pLastLinkUnderMouse = 0; //
+}
+
+#include "kvi_ircview.moc"
diff --git a/src/kvirc/ui/kvi_ircview.h b/src/kvirc/ui/kvi_ircview.h
new file mode 100644
index 00000000..62ee3e75
--- /dev/null
+++ b/src/kvirc/ui/kvi_ircview.h
@@ -0,0 +1,252 @@
+#ifndef _KVI_IRCVIEW_H_
+#define _KVI_IRCVIEW_H_
+//=========================================================================================================
+//
+// File : kvi_ircview.h
+// Creation date : Fri Mar 19 1999 05:39:01 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=========================================================================================================
+
+#include "kvi_settings.h"
+#include "kvi_string.h"
+#include "kvi_pointerlist.h"
+
+#include <qwidget.h>
+#include <qpixmap.h> // needed
+
+class QScrollBar;
+class QLineEdit;
+class QFile;
+class QToolButton;
+class QFontMetrics;
+class KviTalPopupMenu;
+
+class KviWindow;
+class KviFrame;
+class KviConsole;
+class KviIrcViewToolWidget;
+class KviIrcViewToolTip;
+
+typedef struct _KviIrcViewLineChunk KviIrcViewLineChunk;
+typedef struct _KviIrcViewWrappedBlock KviIrcViewWrappedBlock;
+typedef struct _KviIrcViewLine KviIrcViewLine;
+typedef struct _KviIrcViewWrappedBlockSelectionInfoTag KviIrcViewWrappedBlockSelectionInfo;
+
+#define KVI_IRCVIEW_INVALID_LINE_MARK_INDEX 0xffffffff
+
+class KVIRC_API KviIrcView : public QWidget
+{
+ Q_OBJECT
+ Q_PROPERTY(int TransparencyCapable READ dummyRead)
+ // we cannot #ifdef due to a bug in moc
+ Q_PROPERTY(bool usePaintOnScreen READ getPaintOnScreen WRITE setPaintOnScreen)
+public:
+ friend class KviIrcViewToolTip;
+ friend class KviIrcViewToolWidget;
+public:
+ KviIrcView(QWidget *parent,KviFrame *pFrm,KviWindow *pWnd);
+ ~KviIrcView();
+public:
+ int dummyRead() const { return 0; };
+#ifdef COMPILE_USE_QT4
+ bool getPaintOnScreen() const { return testAttribute(Qt::WA_PaintOnScreen);};
+ void setPaintOnScreen(bool bFlag){setAttribute(Qt::WA_PaintOnScreen,bFlag);} ;
+#else
+ // hack to fix moc bug on win qt4
+ bool getPaintOnScreen() const { return 0;};
+ void setPaintOnScreen(bool bFlag){} ;
+#endif
+private:
+// QDate m_lastLogDay;
+ int m_iFlushTimer;
+ KviIrcViewLine * m_pFirstLine;
+ KviIrcViewLine * m_pCurLine; // Bottom line in the view
+ KviIrcViewLine * m_pLastLine;
+ KviIrcViewLine * m_pCursorLine;
+ unsigned int m_uLineMarkLineIndex;
+
+ // Highliting of links
+ KviIrcViewWrappedBlock * m_pLastLinkUnderMouse;
+ int m_iLastLinkRectTop;
+ int m_iLastLinkRectHeight;
+
+ int m_iNumLines;
+ int m_iMaxLines;
+
+ unsigned int m_uNextLineIndex;
+
+ QPixmap * m_pPrivateBackgroundPixmap;
+ QScrollBar * m_pScrollBar;
+ QToolButton * m_pToolsButton;
+ KviTalPopupMenu * m_pToolsPopup;
+
+ KviIrcViewToolWidget * m_pToolWidget;
+
+ int m_iLastScrollBarValue;
+
+ // Font related stuff (needs precalculation!)
+ int m_iFontLineSpacing;
+ int m_iFontLineWidth;
+ int m_iFontDescent;
+ int m_iFontCharacterWidth[256]; //1024 bytes fixed
+
+ int m_iWrapMargin;
+ int m_iMinimumPaintWidth;
+ int m_iRelativePixmapY;
+ int m_iIconWidth;
+ int m_iIconSideSpacing;
+
+ QPoint m_mousePressPos;
+ QPoint m_mouseCurrentPos;
+
+ // Selection
+ int m_iSelectionBegin;
+ int m_iSelectionTop;
+ int m_iSelectionEnd;
+ int m_iSelectionBottom;
+ int m_iSelectionLeft;
+ int m_iSelectionRight;
+
+ bool m_bMouseIsDown;
+ bool m_bShiftPressed;
+
+ bool m_bSkipScrollBarRepaint;
+ int m_iSelectTimer;
+ int m_iMouseTimer;
+ //int m_iTipTimer;
+ QString m_szLastSelection;
+ QString m_szLastSelectionLine;
+ KviWindow * m_pKviWindow;
+ KviIrcViewWrappedBlockSelectionInfo * m_pWrappedBlockSelectionInfo;
+ QFile * m_pLogFile;
+ KviFrame * m_pFrm;
+ bool m_bAcceptDrops;
+ int m_iUnprocessedPaintEventRequests;
+ bool m_bPostedPaintEventPending;
+ KviPointerList<KviIrcViewLine> * m_pMessagesStoppedWhileSelecting;
+ KviIrcView * m_pMasterView;
+ QFontMetrics * m_pFm; // assume this valid only inside a paint event (may be 0 in other circumstances)
+
+ QMouseEvent * m_pLastEvent;
+
+ KviIrcViewToolTip * m_pToolTip;
+ bool m_bHaveUnreadedHighlightedMessages;
+ bool m_bHaveUnreadedMessages;
+public:
+ void checkLogDate();
+ void clearUnreaded();
+ void applyOptions();
+ void enableDnd(bool bEnable);
+ bool haveUnreadedMessages() { return m_bHaveUnreadedMessages; };
+ bool haveUnreadedHighlightedMessages() { return m_bHaveUnreadedHighlightedMessages; };
+ enum AppendTextFlags { NoRepaint = 1, NoTimestamp = 2, SetLineMark = 4 };
+ void appendText(int msg_type,const kvi_wchar_t *data_ptr,int iFlags = 0);
+ void clearLineMark(bool bRepaint=false);
+ bool hasLineMark(){ return m_uLineMarkLineIndex != KVI_IRCVIEW_INVALID_LINE_MARK_INDEX; };
+ void removeHeadLine(bool bRepaint=false);
+ void emptyBuffer(bool bRepaint=true);
+ void getTextBuffer(QString &buffer);
+ void setMaxBufferSize(int maxBufSize,bool bRepaint=true);
+ int maxBufferSize(){ return m_iMaxLines; }; //Never used ?
+ bool saveBuffer(const char *filename);
+ void findNext(const QString& szText,bool bCaseS = false,bool bRegExp = false,bool bExtended = false);
+ void findPrev(const QString& szText,bool bCaseS = false,bool bRegExp = false,bool bExtended = false);
+ KviWindow * parentKviWindow(){ return m_pKviWindow; };
+ KviConsole * console();
+ // A null pixmap passed here unsets the private backgrdound.
+ void setPrivateBackgroundPixmap(const QPixmap &pixmap,bool bRepaint=true);
+ bool hasPrivateBackgroundPixmap(){ return (m_pPrivateBackgroundPixmap != 0); };
+
+ //==============================================================================================
+ // Logging
+ // Stops previous logging session too...
+ bool startLogging(const QString& fname = QString::null,bool bPrependCurBuffer = false);
+ void stopLogging();
+ bool isLogging(){ return (m_pLogFile != 0); };
+ void getLogFileName(KviStr &buffer);
+ void getLogFileName(QString &buffer);
+ //void add2Log(const char *buffer,int buf_len=-1);
+ void add2Log(const QString &szBuffer,int iMsgType=0);
+
+ //==============================================================================================
+ // Channel view splitting
+ void setMasterView(KviIrcView * v);
+ void splitMessagesTo(KviIrcView * v);
+ void joinMessagesFrom(KviIrcView * v);
+ void appendMessagesFrom(KviIrcView * v);
+
+ void prevLine();
+ void nextLine();
+ void nextPage();
+ void prevPage();
+ virtual QSize sizeHint() const;
+ const QString & lastLineOfText();
+ const QString & lastMessageText();
+ virtual void setFont(const QFont &f);
+public slots:
+ void flushLog();
+ void showToolsPopup();
+ void clearBuffer();
+ void toggleToolWidget();
+ void increaseFontSize();
+ void decreaseFontSize();
+ void chooseFont();
+ void chooseBackground();
+ void resetBackground();
+signals:
+ void rightClicked();
+ void dndEntered();
+ void fileDropped(const char *);
+private:
+ void setCursorLine(KviIrcViewLine * l);
+ KviIrcViewLine * getVisibleLineAt(int xPos,int yPos);
+ void getLinkEscapeCommand(QString &buffer,const QString &escape_cmd,const QString &escape_label);
+ void appendLine(KviIrcViewLine *ptr,bool bRepaint);
+ void postUpdateEvent();
+ void fastScroll(int lines = 1);
+ const kvi_wchar_t * getTextLine(int msg_type,const kvi_wchar_t * data_ptr,KviIrcViewLine *line_ptr,bool bEnableTimeStamp = true);
+ void calculateLineWraps(KviIrcViewLine *ptr,int maxWidth);
+ void recalcFontVariables(const QFontMetrics &fm,const QFontInfo &fi);
+ bool checkSelectionBlock(KviIrcViewLine * line,int left,int bottom,int bufIndex);
+ void calculateSelectionBounds();
+ KviIrcViewWrappedBlock * getLinkUnderMouse(int xPos,int yPos,QRect * pRect = 0,QString * linkCmd = 0,QString * linkText = 0);
+ void doLinkToolTip(const QRect &rct,QString &linkCmd,QString &linkText);
+protected:
+ virtual void paintEvent(QPaintEvent *);
+ virtual void resizeEvent(QResizeEvent *);
+ virtual void mousePressEvent(QMouseEvent *e);
+ virtual void mouseRealPressEvent(QMouseEvent *e);
+ virtual void mouseReleaseEvent(QMouseEvent *);
+ virtual void mouseDoubleClickEvent(QMouseEvent *e);
+ virtual void mouseMoveEvent(QMouseEvent *e);
+ virtual void timerEvent(QTimerEvent *e);
+ virtual void dragEnterEvent(QDragEnterEvent *e);
+ virtual void dropEvent(QDropEvent *e);
+ virtual bool event(QEvent *e);
+ virtual void wheelEvent(QWheelEvent *e);
+ virtual void keyPressEvent(QKeyEvent *e);
+ void maybeTip(const QPoint &pnt);
+ virtual void leaveEvent ( QEvent * );
+protected slots:
+ virtual void scrollBarPositionChanged(int newValue);
+ void masterDead();
+};
+
+#endif //_KVI_IRCVIEW_H_
diff --git a/src/kvirc/ui/kvi_ircviewprivate.h b/src/kvirc/ui/kvi_ircviewprivate.h
new file mode 100644
index 00000000..0a2dea20
--- /dev/null
+++ b/src/kvirc/ui/kvi_ircviewprivate.h
@@ -0,0 +1,164 @@
+#ifndef _KVI_IRCVIEWPRIVATE_H_
+#define _KVI_IRCVIEWPRIVATE_H_
+//=========================================================================================================
+//
+// File : kvi_ircviewprivate.h
+// Creation date : Sat Oct 9 2004 16:29:01 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=========================================================================================================
+
+#include "kvi_settings.h"
+#include <qstring.h>
+
+//=========================================================================================================
+// Internal data structures
+//=========================================================================================================
+
+// Force the structs to be packed...
+#ifdef COMPILE_ON_WINDOWS
+ #pragma pack(push,old_packing,1)
+ #define _KVI_PACKED
+#else //!COMPILE_ON_WIDNOWS
+ // this works only on gcc
+ #ifdef __GNUC__
+ #define _KVI_PACKED __attribute__((__packed__))
+ #else
+ #define _KVI_PACKED
+ #endif
+#endif //!COMPILE_ON_WINDOWS
+
+//
+// The LineChunk structure contains informations about
+// an attribute change, an icon or a link
+//
+// type can be one of:
+//
+// KVI_TEXT_ICON:
+// the uIconId member is the icon to be shown
+// szPayload contains the text that triggered this icon was triggered by
+// KVI_TEXT_UNICON:
+// the text block after an icon
+// KVI_TEXT_ESCAPE:
+// szPayload contains the encoded escape command
+// colors.fore contains the new text color
+// KVI_TEXT_UNESCAPE:
+// the text block after an escape
+// KVI_TEXT_COLOR:
+// the colors.back and colors.fore members indicate the color change
+// KVI_TEXT_BOLD:
+// toggles the bold flag
+// KVI_TEXT_UNDERLINE:
+// toggles the underline flag
+// KVI_TEXT_REVERSE:
+// inverts the current fore and back colors
+// KVI_TEXT_RESET:
+// resets the color, bold and underline flags
+//
+
+typedef struct _KviIrcViewLineChunk
+{
+ unsigned char type; // chunk type
+ int iTextStart; // index in the szText string of the beginning of the block
+ int iTextLen; // length in chars of the block (excluding the terminator)
+ kvi_wchar_t * szPayload; // KVI_TEXT_ESCAPE attribute command buffer and KVI_TEXT_ICON icon name (non zeroed for other attributes!!!)
+ kvi_wchar_t * szSmileId;
+ struct {
+ unsigned char back; // optional background color for KVI_TEXT_COLOR attribute
+ unsigned char fore; // optional foreground color for KVI_TEXT_COLOR attribute (used also for KVI_TEXT_ESCAPE!!!)
+ } _KVI_PACKED colors; // anonymous
+// QColor customBack;
+ QColor customFore;
+} /*_KVI_PACKED*/ KviIrcViewLineChunk;
+
+//
+// The wrapped paintable data block
+//
+
+typedef struct _KviIrcViewWrappedBlock
+{
+ KviIrcViewLineChunk * pChunk; // pointer to real line chunk or 0 for word wraps
+ int block_start; // this is generally different than pAttribute->block_idx!
+ int block_len; // length if the block in characters
+ int block_width; // width of the block in pixels
+} _KVI_PACKED KviIrcViewWrappedBlock;
+
+
+typedef struct _KviIrcViewLine
+{
+ // this is a text line in the IrcView's memory
+ unsigned int uIndex; // index of the text line (needed for find and splitting)
+ QString szText; // data string without color codes nor escapes...
+ int iMsgType; // type of the line (defines icon and colors)
+
+ // At line instert time the szData text is splitted in parts which
+ // signal attribute changes (or icons)
+ unsigned int uChunkCount; // number of allocated chunks
+ KviIrcViewLineChunk * pChunks; // pointer to the allocated structures
+
+ // At paint time the data is re-splitted in drawable chunks which
+ // are either real data chunks or line wraps.
+ // The algorightm that does this is lazy and computes it
+ // only once for a given widget width (iMaxLineWidth)
+ unsigned int uLineWraps; // number of line wraps (lines - 1)
+ int iMaxLineWidth; // width that the blocks were calculated for (lazy calculation)
+ int iBlockCount; // number of allocated paintable blocks
+ KviIrcViewWrappedBlock * pBlocks; // pointer to the re-splitted paintable blocks
+
+ // next and previous line
+ struct _KviIrcViewLine * pPrev;
+ struct _KviIrcViewLine * pNext;
+} KviIrcViewLine;
+
+typedef struct _KviIrcViewWrappedBlockSelectionInfoTag
+{
+ int selection_type;
+ /*struct {
+ int length;
+ int width;
+ } part[3];*/
+ int part_1_length;
+ int part_1_width;
+ int part_2_length;
+ int part_2_width;
+ int part_3_length;
+ int part_3_width;
+} KviIrcViewWrappedBlockSelectionInfo;
+
+#ifdef COMPILE_ON_WINDOWS
+ #pragma pack(pop,old_packing)
+#else //!COMPILE_ON_WINDOWS
+ #undef _KVI_PACKED
+#endif //!COMPILE_ON_WINDOWS
+
+//=========================================================================================================
+// Screen layout
+//=========================================================================================================
+
+//FIRST LINE (prev_line = 0) <---m_pFirstLine
+//LINE
+//--------------------SCREEN--
+//LINE
+//LINE
+//LINE
+//LINE <-------------------------m_pCurLine
+//--------------------SCREEN--
+//LAST LINE (next_line = 0) <----m_pLastLine
+
+#endif //!_KVI_IRCVIEWPRIVATE_H_
diff --git a/src/kvirc/ui/kvi_ircviewtools.cpp b/src/kvirc/ui/kvi_ircviewtools.cpp
new file mode 100644
index 00000000..ea473107
--- /dev/null
+++ b/src/kvirc/ui/kvi_ircviewtools.cpp
@@ -0,0 +1,348 @@
+//=============================================================================
+//
+// File : kvi_ircviewtools.cpp
+// Creation date : Sat Oct 9 2004 16:03:01 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_ircviewtools.h"
+#include "kvi_ircview.h"
+#include "kvi_styled_controls.h"
+#include "kvi_iconmanager.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_malloc.h"
+#include "kvi_msgbox.h"
+#include "kvi_filedialog.h"
+#include "kvi_app.h"
+#include "kvi_memmove.h"
+
+#include <qtoolbutton.h>
+#include <qtabwidget.h>
+#include <qlayout.h>
+#include <qlabel.h>
+#include <qcheckbox.h>
+#include <qpushbutton.h>
+#ifdef COMPILE_USE_QT4
+ #include <q3header.h>
+#else
+ #include <qheader.h>
+#endif
+#include <qlineedit.h>
+#include <qcursor.h>
+#include "kvi_accel.h"
+#include <qevent.h>
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// Tool widget implementation
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviIrcMessageCheckListItem::KviIrcMessageCheckListItem(KviTalListView * par,KviIrcViewToolWidget * w,int id)
+: KviTalCheckListItem(par,QString::null,KviTalCheckListItem::CheckBox)
+{
+ m_iId = id;
+ m_pToolWidget = 0;
+ setPixmap(0,*(g_pIconManager->getSmallIcon(KVI_OPTION_MSGTYPE(id).pixId())));
+ setOn(true);
+ m_pToolWidget = w;
+}
+
+KviIrcMessageCheckListItem::~KviIrcMessageCheckListItem()
+{
+}
+
+void KviIrcMessageCheckListItem::stateChange(bool bOn)
+{
+ KviTalCheckListItem::stateChange(bOn);
+ if(!m_pToolWidget)return;
+ m_pToolWidget->forceRepaint();
+}
+
+
+
+KviIrcViewToolWidget::KviIrcViewToolWidget(KviIrcView * par)
+: QFrame(par)
+{
+ m_pIrcView = par;
+ setFrameStyle(QFrame::StyledPanel | QFrame::Raised);
+
+ QGridLayout * gl = new QGridLayout(this,2,2,4,2);
+
+ QLabel * l = new QLabel(__tr2qs("<b><font color=\"#EAEAEA\" size=\"-1\">Find Text</font></b>"),this);
+ l->setMaximumHeight(14);
+ l->setBackgroundColor(Qt::black);
+ gl->addWidget(l,0,0);
+
+ QToolButton *tb = new QToolButton(Qt::DownArrow,this,"down_arrow");
+ tb->setFixedSize(14,14);
+ tb->setAutoRepeat(false);
+ connect(tb,SIGNAL(clicked()),m_pIrcView,SLOT(toggleToolWidget()));
+ gl->addWidget(tb,0,1);
+
+
+ QTabWidget * tw = new QTabWidget(this);
+
+
+
+ // Find tab
+ QWidget * w = new QWidget(tw);
+
+ QGridLayout * g = new QGridLayout(w,6,2,2,1);
+
+ m_pStringToFind = new QLineEdit(w);
+ g->addMultiCellWidget(m_pStringToFind,0,0,0,2);
+ connect(m_pStringToFind,SIGNAL(returnPressed()),this,SLOT(findNext()));
+
+ m_pRegExp = new KviStyledCheckBox(__tr2qs("&Regular expression"),w);
+ g->addMultiCellWidget(m_pRegExp,1,1,0,2);
+
+ m_pExtendedRegExp = new KviStyledCheckBox(__tr2qs("E&xtended regexp."),w);
+ g->addMultiCellWidget(m_pExtendedRegExp,2,2,0,2);
+ m_pExtendedRegExp->setEnabled(false);
+ connect(m_pRegExp,SIGNAL(toggled(bool)),m_pExtendedRegExp,SLOT(setEnabled(bool)));
+
+ m_pCaseSensitive = new KviStyledCheckBox(__tr2qs("C&ase sensitive"),w);
+ g->addMultiCellWidget(m_pCaseSensitive,3,3,0,2);
+
+ QPushButton * pb = new QPushButton(__tr2qs("Find &Prev."),w);
+ connect(pb,SIGNAL(clicked()),this,SLOT(findPrev()));
+ g->addWidget(pb,4,0);
+
+ pb = new QPushButton(__tr2qs("&Find Next"),w);
+ pb->setDefault(true);
+ connect(pb,SIGNAL(clicked()),this,SLOT(findNext()));
+ g->addMultiCellWidget(pb,4,4,1,2);
+
+ m_pFindResult = new QLabel(w);
+ m_pFindResult->setFrameStyle(QFrame::Sunken | QFrame::StyledPanel);
+ g->addMultiCellWidget(m_pFindResult,5,5,0,2);
+
+ //g->setResizeMode(QGridLayout::Fixed);
+
+ tw->addTab(w,__tr2qs("Find"));
+
+ // Filter tab
+ QWidget * w1 = new QWidget(tw);
+
+ g = new QGridLayout(w1,5,2,2,1);
+
+ m_pFilterView = new KviTalListView(w1);
+ m_pFilterView->addColumn(__tr2qs("Type"));
+ m_pFilterView->header()->hide();
+ m_pFilterView->setMinimumSize(QSize(10,10));
+
+ g->addMultiCellWidget(m_pFilterView,0,4,0,0);
+
+
+ m_pFilterItems = (KviIrcMessageCheckListItem **)kvi_malloc(KVI_NUM_MSGTYPE_OPTIONS * sizeof(KviIrcMessageCheckListItem *));
+
+ for(int i=0;i<KVI_NUM_MSGTYPE_OPTIONS;i++)
+ {
+ m_pFilterItems[i] = new KviIrcMessageCheckListItem(m_pFilterView,this,i);
+ }
+
+ pb = new QPushButton(__tr2qs("Set &All"),w1);
+ connect(pb,SIGNAL(clicked()),this,SLOT(filterEnableAll()));
+ g->addWidget(pb,0,1);
+
+ pb = new QPushButton(__tr2qs("Set &None"),w1);
+ connect(pb,SIGNAL(clicked()),this,SLOT(filterEnableNone()));
+ g->addWidget(pb,1,1);
+
+ pb = new QPushButton(__tr2qs("&Load From..."),w1);
+ connect(pb,SIGNAL(clicked()),this,SLOT(filterLoad()));
+ g->addWidget(pb,2,1);
+
+ pb = new QPushButton(__tr2qs("&Save As..."),w1);
+ connect(pb,SIGNAL(clicked()),this,SLOT(filterSave()));
+ g->addWidget(pb,3,1);
+
+ tw->addTab(w1,__tr2qs("Filter"));
+
+ gl->addMultiCellWidget(tw,1,1,0,1);
+
+ gl->setResizeMode(QGridLayout::Fixed);
+ m_pStringToFind->setFocus();
+ tw->showPage(w);
+ KviAccel *a = new KviAccel( this );
+ a->connectItem( a->insertItem(Qt::Key_Escape), this,SLOT(close()) );
+}
+
+KviIrcViewToolWidget::~KviIrcViewToolWidget()
+{
+ kvi_free((void *)m_pFilterItems);
+}
+
+void KviIrcViewToolWidget::filterEnableAll()
+{
+ for(int i=0;i<KVI_NUM_MSGTYPE_OPTIONS;i++)
+ {
+ m_pFilterItems[i]->setToolWidget(0);
+ m_pFilterItems[i]->setOn(true);
+ m_pFilterItems[i]->setToolWidget(this);
+ }
+ forceRepaint();
+}
+
+void KviIrcViewToolWidget::filterEnableNone()
+{
+ for(int i=0;i<KVI_NUM_MSGTYPE_OPTIONS;i++)
+ {
+ m_pFilterItems[i]->setToolWidget(0);
+ m_pFilterItems[i]->setOn(false);
+ m_pFilterItems[i]->setToolWidget(this);
+ }
+ forceRepaint();
+}
+
+void KviIrcViewToolWidget::hideEvent ( QHideEvent * ){
+ m_pIrcView->toggleToolWidget();
+}
+
+void KviIrcViewToolWidget::closeEvent ( QCloseEvent * e ){
+ m_pIrcView->toggleToolWidget();
+}
+
+void KviIrcViewToolWidget::filterLoad()
+{
+ QString szFile;
+ QString szInit;
+ g_pApp->getLocalKvircDirectory(szInit,KviApp::Filters);
+
+ if(KviFileDialog::askForOpenFileName(szFile,__tr2qs("Select a Filter File"),szInit))
+ {
+ QFile f(szFile);
+ if(f.open(IO_ReadOnly))
+ {
+ char buffer[KVI_NUM_MSGTYPE_OPTIONS];
+ kvi_memset(buffer,0,KVI_NUM_MSGTYPE_OPTIONS);
+ f.readBlock(buffer,KVI_NUM_MSGTYPE_OPTIONS);
+ f.close();
+ for(int i=0;i<KVI_NUM_MSGTYPE_OPTIONS;i++)
+ {
+ m_pFilterItems[i]->setToolWidget(0);
+ m_pFilterItems[i]->setOn(buffer[i]);
+ m_pFilterItems[i]->setToolWidget(this);
+ }
+ forceRepaint();
+ } else {
+ KviMessageBox::warning(__tr2qs("Can't open the filter file %s for reading."),&szFile);
+ }
+ }
+}
+
+void KviIrcViewToolWidget::filterSave()
+{
+ QString szFile;
+ QString szInit;
+ g_pApp->getLocalKvircDirectory(szInit,KviApp::Filters,"filter.kvf");
+ if(KviFileDialog::askForSaveFileName(szFile,__tr2qs("Select a Name for the Filter File"),szInit,0,false,true))
+ {
+ QFile f(szFile);
+ if(f.open(IO_WriteOnly))
+ {
+ char buffer[KVI_NUM_MSGTYPE_OPTIONS];
+ for(int i=0;i<KVI_NUM_MSGTYPE_OPTIONS;i++)
+ {
+ buffer[i] = messageEnabled(i) ? 1 : 0;
+ }
+ if(f.writeBlock(buffer,KVI_NUM_MSGTYPE_OPTIONS) < KVI_NUM_MSGTYPE_OPTIONS)
+ KviMessageBox::warning(__tr2qs("Failed to write the filter file %Q (IO Error)"),&szFile);
+ f.close();
+ } else KviMessageBox::warning(__tr2qs("Can't open the filter file %Q for writing"),&szFile);
+ }
+}
+
+void KviIrcViewToolWidget::forceRepaint()
+{
+ #if defined(COMPILE_USE_QT4) && defined(COMPILE_ON_WINDOWS)
+ m_pIrcView->repaint();
+ #else
+ m_pIrcView->paintEvent(0);
+ #endif
+
+}
+
+void KviIrcViewToolWidget::setFindResult(const QString & text)
+{
+ m_pFindResult->setText(text);
+}
+
+void KviIrcViewToolWidget::findPrev()
+{
+ bool bRegExp = m_pRegExp->isChecked();
+ m_pIrcView->findPrev(m_pStringToFind->text(),m_pCaseSensitive->isChecked(),bRegExp,bRegExp && m_pExtendedRegExp->isChecked());
+}
+
+void KviIrcViewToolWidget::findNext()
+{
+ bool bRegExp = m_pRegExp->isChecked();
+ m_pIrcView->findNext(m_pStringToFind->text(),m_pCaseSensitive->isChecked(),bRegExp,bRegExp && m_pExtendedRegExp->isChecked());
+}
+
+
+void KviIrcViewToolWidget::mousePressEvent(QMouseEvent *e)
+{
+ m_pressPoint = e->pos();
+}
+
+void KviIrcViewToolWidget::mouseMoveEvent(QMouseEvent *)
+{
+ QPoint p=m_pIrcView->mapFromGlobal(QCursor::pos());
+ p-=m_pressPoint;
+ if(p.x() < 1)p.setX(1);
+ else {
+ int www = (m_pIrcView->width() - (m_pIrcView->m_pScrollBar->width() + 1));
+ if((p.x() + width()) > www)p.setX(www - width());
+ }
+ if(p.y() < 1)p.setY(1);
+ else {
+ int hhh = (m_pIrcView->height() - 1);
+ if((p.y() + height()) > hhh)p.setY(hhh - height());
+ }
+ move(p);
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// Link tip label implementation
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+KviIrcViewToolTip::KviIrcViewToolTip(KviIrcView * pView)
+: KviTalToolTip(pView)
+{
+ m_pView = pView;
+}
+
+KviIrcViewToolTip::~KviIrcViewToolTip()
+{
+}
+
+void KviIrcViewToolTip::maybeTip(const QPoint &pnt)
+{
+ m_pView->maybeTip(pnt);
+}
+
diff --git a/src/kvirc/ui/kvi_ircviewtools.h b/src/kvirc/ui/kvi_ircviewtools.h
new file mode 100644
index 00000000..248c180d
--- /dev/null
+++ b/src/kvirc/ui/kvi_ircviewtools.h
@@ -0,0 +1,119 @@
+#ifndef _KVI_IRCVIEWTOOLS_H_
+#define _KVI_IRCVIEWTOOLS_H_
+//=========================================================================================================
+//
+// File : kvi_ircviewtools.h
+// Creation date : Sat Oct 9 2004 16:03:01 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=========================================================================================================
+
+#include "kvi_settings.h"
+
+#include "kvi_tal_tooltip.h"
+#include <qframe.h>
+#include "kvi_tal_listview.h"
+#include <qstring.h>
+
+class QLabel;
+//class KviStyledCheckBox;
+#include "kvi_styled_controls.h"
+class QLineEdit;
+
+class KviIrcView;
+
+class KviIrcViewToolTip : public KviTalToolTip
+{
+public:
+ KviIrcViewToolTip(KviIrcView * pView);
+ virtual ~KviIrcViewToolTip();
+protected:
+ KviIrcView * m_pView;
+protected:
+ virtual void maybeTip(const QPoint &pnt);
+public:
+ void doTip(const QRect &rct,const QString &str){ tip(rct,str); };
+};
+
+//=========================================================================================================
+// Item for the filter list view
+//=========================================================================================================
+
+class KviIrcViewToolWidget;
+
+class KviIrcMessageCheckListItem : public KviTalCheckListItem
+{
+public:
+ KviIrcMessageCheckListItem(KviTalListView * par,KviIrcViewToolWidget * w,int id);
+ ~KviIrcMessageCheckListItem();
+private:
+ int m_iId;
+ KviIrcViewToolWidget * m_pToolWidget;
+public:
+ void setToolWidget(KviIrcViewToolWidget * w){ m_pToolWidget = w; };
+ virtual void stateChange(bool bOn);
+};
+
+//=========================================================================================================
+// Search tools widget
+//=========================================================================================================
+
+class KviIrcView;
+
+class KviIrcViewToolWidget : public QFrame
+{
+ friend class KviIrcView;
+ Q_OBJECT
+protected:
+ KviIrcViewToolWidget(KviIrcView * par);
+ ~KviIrcViewToolWidget();
+protected:
+ KviIrcView * m_pIrcView;
+ QLineEdit * m_pStringToFind;
+ QPoint m_pressPoint;
+
+ KviStyledCheckBox * m_pCaseSensitive;
+ KviStyledCheckBox * m_pRegExp;
+ KviStyledCheckBox * m_pExtendedRegExp;
+
+ QLabel * m_pFindResult;
+
+ KviTalListView * m_pFilterView;
+
+ KviIrcMessageCheckListItem ** m_pFilterItems;
+
+public:
+ void setFindResult(const QString & text);
+ inline bool messageEnabled(int msg_type){ return m_pFilterItems[msg_type]->isOn(); }
+ void forceRepaint();
+protected slots:
+ void findPrev();
+ void findNext();
+ void filterEnableAll();
+ void filterEnableNone();
+ void filterSave();
+ void filterLoad();
+protected:
+ virtual void hideEvent( QHideEvent * );
+ virtual void closeEvent( QCloseEvent * e );
+ virtual void mouseMoveEvent(QMouseEvent *);
+ virtual void mousePressEvent(QMouseEvent *);
+};
+
+#endif //!_KVI_IRCVIEWTOOLS_H_
diff --git a/src/kvirc/ui/kvi_listview.cpp b/src/kvirc/ui/kvi_listview.cpp
new file mode 100644
index 00000000..e9c4b233
--- /dev/null
+++ b/src/kvirc/ui/kvi_listview.cpp
@@ -0,0 +1,212 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// File : kvi_listview.cpp
+// Creation date : 19 Jan 2006 GMT by Alexey Uzhva
+//
+// This toolbar is part of the KVirc irc client distribution
+// Copyright (C) 2006 Alexey Uzhva
+// Copyright (C) 2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define __KVIRC__
+
+#include "kvi_listview.h"
+
+#include <qpainter.h>
+#include <qpixmap.h>
+
+#include "kvi_doublebuffer.h"
+
+KviListView::KviListView( QWidget * parent, const char * name)
+:KviTalListView(parent)
+{
+ m_pBackgroundOverlayPixmap=0;
+ m_iBackgroundOverlayAlignment=Qt::AlignAuto;
+}
+
+KviListView::~KviListView()
+{
+ if(m_pBackgroundOverlayPixmap)
+ delete m_pBackgroundOverlayPixmap;
+}
+
+void KviListView::setBackgroundOverlayPixmap(QPixmap * pix,int iAlignmentFlags)
+{
+ setStaticBackground(TRUE);
+#ifdef COMPILE_USE_QT4
+ viewport()->setAutoFillBackground(false);
+#else
+ viewport()->setBackgroundMode(QWidget::NoBackground);
+#endif
+ m_pBackgroundOverlayPixmap=new QPixmap(*pix);
+ m_iBackgroundOverlayAlignment= Qt::AlignRight | Qt::AlignBottom;
+ repaintContents();
+}
+
+
+
+void KviListView::drawContentsOffset(QPainter * p,int ox,int oy,int cx,int cy,int cw,int ch)
+{
+ if(!m_pBackgroundOverlayPixmap)
+ {
+ KviTalListView::drawContentsOffset(p,ox,oy,cx,cy,cw,ch);
+ return;
+ }
+
+ if(cw <= 0)return; // this does happen
+ if(ch <= 0)return; // this does happen
+
+ KviDoubleBuffer pix(viewport()->width(),viewport()->height());
+
+ QPixmap * pMemPixmap = pix.pixmap();
+
+ QPainter pa(pMemPixmap);
+
+ int xx = cx - ox;
+ int yy = cy - oy;
+
+ pa.fillRect(QRect(xx,yy,cw,ch),viewport()->backgroundColor());
+
+ //KviTalListView::paintEmptyArea(&pa,);
+
+ // compute the pixmap position
+ int x,y;
+ if(m_iBackgroundOverlayAlignment == Qt::AlignAuto)
+ x=y=0;
+ else {
+ if(m_iBackgroundOverlayAlignment & Qt::AlignLeft)
+ x=0;
+ else if ( m_iBackgroundOverlayAlignment & Qt::AlignRight )
+ x=viewport()->width() - m_pBackgroundOverlayPixmap->width();
+ else if( m_iBackgroundOverlayAlignment & Qt::AlignHCenter )
+ x=(viewport()->width() - m_pBackgroundOverlayPixmap->width())/2;
+ else
+ x=0;
+
+ if( m_iBackgroundOverlayAlignment & Qt::AlignTop )
+ y=0;
+ else if ( m_iBackgroundOverlayAlignment & Qt::AlignBottom )
+ y=viewport()->height() - m_pBackgroundOverlayPixmap->height();
+ else if ( m_iBackgroundOverlayAlignment & Qt::AlignVCenter )
+ y=(viewport()->height() - m_pBackgroundOverlayPixmap->height())/2;
+ else
+ y=0;
+ }
+
+ pa.drawPixmap(xx,yy,*m_pBackgroundOverlayPixmap,xx-x,yy-y,cw,ch);
+
+ // Qt's auto double buffering is buggy and can't be disabled... too bad :/
+ //
+ // The Qt source for the listview painting is also totally unreadable
+ // (maybe that's why they have thrown this cool widget away in Qt4: unmantainable)
+ //
+ // Anyway, I've noticed that when double buffering is choosen (and
+ // Qt seems to have a really complex logic to choose when to enable it
+ // and when not) then the painter passed to paintCell() of the
+ // list view items is NOT this painter. It's the internal painter
+ // of the QSharedDoubleBuffer private Qt class. It's screwed
+ // because of the multiple coordinate translations. With this
+ // widget we screw it even more just because our paintEmptyArea()
+ // does nothing and we do double buffering ourselves.
+
+ KviTalListView::drawContentsOffset(&pa,ox,oy,cx,cy,cw,ch);
+
+ p->drawPixmap(xx,yy,*pMemPixmap,xx,yy,cw,ch);
+
+ //p->drawPixmap(cx-ox,cy-oy,*pMemPixmap,0,0,cw,ch);
+ //KviTalListView::drawContentsOffset(p,ox,oy,cx,cy,cw,ch);
+}
+
+
+void KviListView::paintEmptyArea(QPainter * p,const QRect & rect)
+{
+ if(!m_pBackgroundOverlayPixmap)
+ {
+ KviTalListView::paintEmptyArea(p,rect);
+ return;
+ }
+
+ // otherwise just do nothing (we're filling the background in drawContentsOffset)
+
+ /*
+ KviDoubleBuffer pix(rect.right()+1,rect.bottom()+1);
+
+ QPixmap * pMemPixmap = pix.pixmap();
+
+ QPainter pa(pMemPixmap);
+
+ pa.fillRect(rect,viewport()->backgroundColor());
+
+ KviTalListView::paintEmptyArea(&pa,rect);
+
+ QPoint realTopLeft = p->xForm(rect.topLeft());
+
+ // compute the pixmap position
+ int x,y;
+ if(m_iBackgroundOverlayAlignment == Qt::AlignAuto)
+ x=y=0;
+ else {
+ if(m_iBackgroundOverlayAlignment & Qt::AlignLeft)
+ x=0;
+ else if ( m_iBackgroundOverlayAlignment & Qt::AlignRight )
+ x=viewport()->width() - m_pBackgroundOverlayPixmap->width();
+ else if( m_iBackgroundOverlayAlignment & Qt::AlignHCenter )
+ x=(viewport()->width() - m_pBackgroundOverlayPixmap->width())/2;
+ else
+ x=0;
+
+ if( m_iBackgroundOverlayAlignment & Qt::AlignTop )
+ y=0;
+ else if ( m_iBackgroundOverlayAlignment & Qt::AlignBottom )
+ y=viewport()->height() - m_pBackgroundOverlayPixmap->height();
+ else if ( m_iBackgroundOverlayAlignment & Qt::AlignVCenter )
+ y=(viewport()->height() - m_pBackgroundOverlayPixmap->height())/2;
+ else
+ y=0;
+ }
+
+ pa.drawPixmap(rect.x(),rect.y(),*m_pBackgroundOverlayPixmap,realTopLeft.x()-x,realTopLeft.y()-y,rect.width(),rect.height());
+
+ p->drawPixmap(rect.x(),rect.y(),*pMemPixmap,rect.x(),rect.y(),rect.width(),rect.height());
+ */
+}
+
+void KviListView::resizeEvent(QResizeEvent * e)
+{
+ KviTalListView::resizeEvent(e);
+ if(m_pBackgroundOverlayPixmap)
+ repaintContents(); // force a full repaint (otherwise qt does not honor static background here)
+}
+
+#ifdef COMPILE_ON_WINDOWS
+
+void KviListView::focusInEvent(QFocusEvent * e)
+{
+ KviTalListView::focusInEvent(e);
+ if(m_pBackgroundOverlayPixmap)
+ repaintContents();
+}
+
+void KviListView::focusOutEvent(QFocusEvent * e)
+{
+ KviTalListView::focusOutEvent(e);
+ if(m_pBackgroundOverlayPixmap)
+ repaintContents();
+}
+
+#endif
diff --git a/src/kvirc/ui/kvi_listview.h b/src/kvirc/ui/kvi_listview.h
new file mode 100644
index 00000000..8d39529b
--- /dev/null
+++ b/src/kvirc/ui/kvi_listview.h
@@ -0,0 +1,58 @@
+#ifndef _KVI_LISTVIEW_H_
+#define _KVI_LISTVIEW_H_
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// File : kvi_listview.h
+// Creation date : 19 Jan 2006 GMT by Alexey Uzhva
+//
+// This toolbar is part of the KVirc irc client distribution
+// Copyright (C) 2006 Alexey Uzhva
+// Copyright (C) 2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include "kvi_heapobject.h"
+
+#include "kvi_tal_listview.h"
+
+class QPainter;
+
+class KVIRC_API KviListView : public KviTalListView
+{
+ Q_OBJECT
+public:
+ KviListView( QWidget * parent = 0, const char * name = 0);
+ ~KviListView();
+protected:
+ QPixmap * m_pBackgroundOverlayPixmap;
+ int m_iBackgroundOverlayAlignment;
+public:
+ virtual void setBackgroundOverlayPixmap(QPixmap* pix,int iAlignmentFlags = Qt::AlignAuto);
+public:
+ void publicUpdateContents(){ updateContents(); }; // <-- unscrewContents(); :D
+protected:
+ virtual void paintEmptyArea(QPainter * p, const QRect & rect );
+ virtual void drawContentsOffset(QPainter * p,int ox,int oy,int cx,int cy,int cw,int ch);
+ virtual void resizeEvent(QResizeEvent * e);
+#ifdef COMPILE_ON_WINDOWS
+ virtual void focusInEvent(QFocusEvent * e);
+ virtual void focusOutEvent(QFocusEvent * e);
+#endif
+};
+
+#endif //!_KVI_LISTVIEW_H_
diff --git a/src/kvirc/ui/kvi_maskeditor.cpp b/src/kvirc/ui/kvi_maskeditor.cpp
new file mode 100644
index 00000000..744df1ca
--- /dev/null
+++ b/src/kvirc/ui/kvi_maskeditor.cpp
@@ -0,0 +1,350 @@
+//=============================================================================
+//
+// File : kvi_maskeditor.cpp
+// Creation date : Tue Aug 30 2000 12:24:59 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+#include "kvi_maskeditor.h"
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+#include "kvi_qstring.h"
+#include "kvi_channel.h"
+#include "kvi_ircconnectionuserinfo.h"
+#include "kvi_toolwindows_container.h"
+#include "kvi_channel.h"
+
+#include <qlayout.h>
+#include <qlabel.h>
+#include <qvalidator.h>
+
+KviMaskItem::KviMaskItem(KviTalListView* parent,KviMaskEntry* entry)
+:KviTalListViewItem(parent), m_Mask(*entry)
+{
+ QDateTime date;
+ date.setTime_t(mask()->uSetAt);
+ setText(0,mask()->szMask);
+ setText(1,mask()->szSetBy);
+ setText(2,date.toString());
+}
+
+KviMaskItem::~KviMaskItem()
+{
+}
+#ifdef COMPILE_USE_QT4
+int KviMaskItem::compare ( KviTalListViewItem * i, int col, bool ascending ) const
+#else
+int KviMaskItem::compare ( QListViewItem * i, int col, bool ascending ) const
+#endif
+{
+ if(col==2)
+ {
+ if( ((KviMaskItem*)i)->mask()->uSetAt > m_Mask.uSetAt ) return -1;
+ if( ((KviMaskItem*)i)->mask()->uSetAt == m_Mask.uSetAt ) return 0;
+ if( ((KviMaskItem*)i)->mask()->uSetAt < m_Mask.uSetAt ) return 1;
+ }
+ return KviTalListViewItem::compare(i,col,ascending);
+}
+
+KviMaskInputDialog::KviMaskInputDialog(const QString &szMask,KviMaskEditor* pEditor,KviChannel * pChannel)
+:QDialog(pEditor)
+{
+ m_pChannel=pChannel;
+ m_pEditor=pEditor;
+ setModal(1);
+ m_szOldMask=szMask;
+
+ setCaption(__tr2qs("Mask editor - KVirc"));
+
+ QGridLayout * g = new QGridLayout(this,2,3,5,5);
+
+ QLabel * tl = new QLabel(__tr2qs("New mask must match an *!*@* expression"),this);
+ g->addMultiCellWidget(tl,0,0,0,3);
+
+ m_pEdit=new QLineEdit(szMask,this);
+ g->addMultiCellWidget(m_pEdit,1,1,0,3);
+
+ m_pOkButton= new QPushButton(__tr2qs("Ok"),this);
+ connect(m_pOkButton,SIGNAL(clicked()), this, SLOT(accept()));
+ g->addWidget(m_pOkButton,2,1);
+ m_pOkButton->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ACCEPT)));
+
+ m_pChancelButton= new QPushButton(__tr2qs("Cancel"),this);
+ connect(m_pChancelButton,SIGNAL(clicked()), this, SLOT(reject()));
+ g->addWidget(m_pChancelButton,2,2);
+ m_pChancelButton->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DISCARD)));
+
+ QRegExp rx( "*!*@*", false,true );
+ QValidator* validator = new QRegExpValidator( rx, this );
+
+ m_pEdit->setValidator( validator );
+}
+
+KviMaskInputDialog::~KviMaskInputDialog()
+{
+}
+
+void KviMaskInputDialog::accept()
+{
+ if(m_szOldMask.isEmpty())
+ {
+ m_pChannel->connection()->sendFmtData("MODE %s +%c %s",
+ m_pChannel->connection()->encodeText(m_pChannel->name()).data(),
+ m_pEditor->flag(),
+ m_pChannel->connection()->encodeText(m_pEdit->text()).data()
+ );
+ } else {
+ m_pChannel->connection()->sendFmtData("MODE %s -%c+%c %s %s",
+ m_pChannel->connection()->encodeText(m_pChannel->name()).data(),
+ m_pEditor->flag(),
+ m_pEditor->flag(),
+ m_pChannel->connection()->encodeText(m_szOldMask).data(),
+ m_pChannel->connection()->encodeText(m_pEdit->text()).data()
+ );
+ }
+ QDialog::accept();
+}
+
+KviMaskEditor::KviMaskEditor(QWidget * par,KviWindowToolPageButton* button,KviPointerList<KviMaskEntry> * maskList,char flag,const char * nam)
+: KviWindowToolWidget(par,button)
+{
+ bool isEnabled=1;
+
+ QObject * w = parent();
+ while(w)
+ {
+ if(w->inherits("KviChannel"))
+ {
+ KviChannel *chan = ((KviChannel *)w);
+ if(!( chan->isMeHalfOp() || chan->isMeOp() || chan->isMeChanOwner() || chan->isMeChanAdmin() || chan->connection()->userInfo()->hasUserMode('o') || chan->connection()->userInfo()->hasUserMode('O') ) ) isEnabled=0;
+ break;
+ }
+ w = w->parent();
+ }
+
+#ifdef COMPILE_USE_QT4
+ setFocusPolicy(Qt::ClickFocus);
+#else
+ setFocusPolicy(QWidget::ClickFocus);
+#endif
+
+ QGridLayout *g = new QGridLayout(this,4,2,2,2);
+
+ m_cFlag = flag;
+
+ QString txt;
+ switch(flag)
+ {
+ case 'b':
+ txt = __tr2qs("Active Bans");
+ m_iIconId = KVI_SMALLICON_BAN;
+ break;
+ case 'I':
+ txt = __tr2qs("Active Invite Exceptions");
+ m_iIconId = KVI_SMALLICON_INVITEEXCEPT;
+ break;
+ case 'e':
+ txt = __tr2qs("Active Ban Exceptions");
+ m_iIconId = KVI_SMALLICON_BANEXCEPT;
+ break;
+ default:
+ txt = "?";
+ m_iIconId = KVI_SMALLICON_UNHANDLED;
+ break;
+ }
+
+ QLabel * l = new QLabel("",this);
+ l->setPixmap(*(g_pIconManager->getSmallIcon(m_iIconId)));
+ g->addWidget(l,0,0);
+
+ l = new QLabel(txt,this);
+ g->addWidget(l,0,1);
+
+ KviTalHBox * hb = new KviTalHBox(this);
+ g->addMultiCellWidget(hb,1,1,0,1);
+
+ new QLabel(__tr2qs("Filter:"),hb);
+ m_pSearch = new QLineEdit(hb);
+ connect(m_pSearch,SIGNAL(textChanged ( const QString & ) ),this,SLOT(searchTextChanged ( const QString & )));
+
+ l = new QLabel(__tr2qs("Use doubleclick to edit item"),this);
+ g->addWidget(l,1,1);
+ g->addMultiCellWidget(l,2,2,0,1);
+
+ m_pMaskBox = new KviTalListView(this);
+#ifdef COMPILE_USE_QT4
+ m_pMaskBox->setFocusPolicy(Qt::ClickFocus);
+#else
+ m_pMaskBox->setFocusPolicy(QWidget::ClickFocus);
+#endif
+ m_pMaskBox->setFocusProxy(this);
+ m_pMaskBox->setFrameStyle(QFrame::StyledPanel|QFrame::Sunken);
+ m_pMaskBox->addColumn(__tr2qs("Mask"));
+ m_pMaskBox->addColumn(__tr2qs("Set by"));
+ m_pMaskBox->addColumn(__tr2qs("Set at"));
+ m_pMaskBox->setMultiSelection(true);
+ m_pMaskBox->setAllColumnsShowFocus(true);
+ m_pMaskBox->setShowSortIndicator(true);
+ m_pMaskBox->setSorting(2,false);
+ connect(m_pMaskBox,SIGNAL(doubleClicked ( KviTalListViewItem * )),this,SLOT(listViewDoubleClicked( KviTalListViewItem * )));
+ g->addMultiCellWidget(m_pMaskBox,3,3,0,1);
+
+ m_pRemoveMask = new QPushButton(__tr2qs("Re&move"),this);
+ m_pRemoveMask->setEnabled(isEnabled);
+#ifdef COMPILE_USE_QT4
+ m_pRemoveMask->setFocusPolicy(Qt::ClickFocus);
+#else
+ m_pRemoveMask->setFocusPolicy(QWidget::ClickFocus);
+#endif
+ m_pRemoveMask->setFocusProxy(this);
+ g->addWidget(m_pRemoveMask,4,1);
+ connect(m_pRemoveMask,SIGNAL(clicked()),this,SLOT(removeClicked()));
+ m_pRemoveMask->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DELETEITEM)));
+
+ m_pAddButton = new QPushButton(__tr2qs("Add"),this);
+ m_pAddButton->setEnabled(isEnabled);
+#ifdef COMPILE_USE_QT4
+ m_pAddButton->setFocusPolicy(Qt::ClickFocus);
+#else
+ m_pAddButton->setFocusPolicy(QWidget::ClickFocus);
+#endif
+ m_pAddButton->setFocusProxy(this);
+ g->addWidget(m_pAddButton,4,0);
+ connect(m_pAddButton,SIGNAL(clicked()),this,SLOT(addClicked()));
+ m_pAddButton->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_NEWITEM)));
+
+ g->setColStretch(3,1);
+
+ for(KviMaskEntry * e = maskList->first();e;e = maskList->next()) addMask(e);
+ registerSelf();
+}
+
+KviMaskEditor::~KviMaskEditor()
+{
+
+}
+
+void KviMaskEditor::searchTextChanged ( const QString & text)
+{
+ KviTalListViewItem *pItem=m_pMaskBox->firstChild();
+ KviMaskItem *pMaskItem;
+ bool bEmpty = text.isEmpty();
+ while(pItem)
+ {
+ pMaskItem = (KviMaskItem *)pItem;
+ if(bEmpty)
+ {
+ pMaskItem->setVisible(true);
+ } else {
+ if(pMaskItem->mask()->szMask.contains(text))
+ pMaskItem->setVisible(true);
+ else
+ pMaskItem->setVisible(false);
+ }
+ pItem=pItem->nextSibling();
+ }
+}
+
+void KviMaskEditor::removeClicked()
+{
+ KviPointerList<KviMaskEntry> * l = new KviPointerList<KviMaskEntry>;
+ l->setAutoDelete(true);
+ KviMaskItem * it = (KviMaskItem *)(m_pMaskBox->firstChild());
+ while(it)
+ {
+ if(it->isSelected())
+ {
+ KviMaskEntry * e = new KviMaskEntry;
+ e->szMask = it->mask()->szMask;
+ e->szSetBy = it->mask()->szSetBy;
+ e->uSetAt = it->mask()->uSetAt;
+ l->append(e);
+ }
+ it = (KviMaskItem *)(it->nextSibling());
+ }
+ if(l->count() > 0)emit removeMasks(this,l);
+ delete l;
+}
+
+void KviMaskEditor::addClicked()
+{
+ QObject * w = parent();
+ while(w)
+ {
+ if(w->inherits("KviChannel"))
+ {
+ KviChannel *chan = ((KviChannel *)w);
+ if(chan->isMeHalfOp() || chan->isMeOp() || chan->isMeChanAdmin() || chan->isMeChanOwner() || chan->connection()->userInfo()->hasUserMode('o') || chan->connection()->userInfo()->hasUserMode('O'))
+ {
+ KviMaskInputDialog* pDialog=new KviMaskInputDialog("",this,chan);
+ pDialog->show();
+ }
+ break;
+ }
+ w = w->parent();
+ }
+}
+
+void KviMaskEditor::addMask(KviMaskEntry *e)
+{
+// debug("%s %s %i",__FILE__,__FUNCTION__,__LINE__);
+ KviMaskItem *it;
+ it = new KviMaskItem(m_pMaskBox,e);
+ it->setPixmap(0,*(g_pIconManager->getSmallIcon(m_iIconId)));
+}
+
+void KviMaskEditor::removeMask(KviMaskEntry *e)
+{
+ KviMaskItem * it =(KviMaskItem *)(m_pMaskBox->firstChild());
+ while(it)
+ {
+ if(KviQString::equalCI(it->mask()->szMask,e->szMask))
+ {
+ delete it;
+ return;
+ }
+ it = (KviMaskItem *)(it->nextSibling());
+ }
+}
+
+void KviMaskEditor::listViewDoubleClicked( KviTalListViewItem * pItem)
+{
+ if(pItem)
+ {
+ QObject * w = parent();
+ while(w)
+ {
+ if(w->inherits("KviChannel"))
+ {
+ KviChannel *chan = ((KviChannel *)w);
+ if(chan->isMeHalfOp() || chan->isMeOp() || chan->isMeChanAdmin() || chan->isMeChanOwner() || chan->connection()->userInfo()->hasUserMode('o') || chan->connection()->userInfo()->hasUserMode('O'))
+ {
+ KviMaskInputDialog* pDialog=new KviMaskInputDialog(pItem->text(0),this,chan);
+ pDialog->show();
+ }
+ break;
+ }
+ w = w->parent();
+ }
+ }
+}
+
+#include "kvi_maskeditor.moc"
diff --git a/src/kvirc/ui/kvi_maskeditor.h b/src/kvirc/ui/kvi_maskeditor.h
new file mode 100644
index 00000000..de281377
--- /dev/null
+++ b/src/kvirc/ui/kvi_maskeditor.h
@@ -0,0 +1,108 @@
+#ifndef _KVI_MASKEDITOR_H_
+#define _KVI_MASKEDITOR_H_
+
+//
+// File : kvi_maskeditor.h
+// Creation date : Tue Aug 30 2000 12:20:10 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+#include <qdialog.h>
+#include <qlineedit.h>
+#include <qwidget.h>
+#include "kvi_tal_listview.h"
+#include <qpushbutton.h>
+#include "kvi_pointerlist.h"
+
+#include "kvi_string.h"
+#include "kvi_toolwindows_container.h"
+
+class KviMaskEditor;
+class KviChannel;
+
+typedef struct _KviMaskEntry
+{
+ QString szMask;
+ QString szSetBy;
+ unsigned int uSetAt;
+} KviMaskEntry;
+
+class KviMaskItem: public KviTalListViewItem
+{
+public:
+ KviMaskItem(KviTalListView* parent,KviMaskEntry* entry);
+ ~KviMaskItem();
+
+ KviMaskEntry* mask() { return &m_Mask; };
+#ifdef COMPILE_USE_QT4
+ virtual int compare ( KviTalListViewItem * i, int col, bool ascending ) const;
+#else
+ virtual int compare ( QListViewItem * i, int col, bool ascending ) const;
+#endif
+protected:
+ KviMaskEntry m_Mask;
+
+};
+
+class KviMaskInputDialog : public QDialog
+{
+ Q_OBJECT
+public:
+ KviMaskInputDialog(const QString &szMask,KviMaskEditor* pEditor,KviChannel * pChannel);
+ ~KviMaskInputDialog();
+protected:
+ QLineEdit * m_pEdit;
+ QPushButton * m_pOkButton;
+ QPushButton * m_pChancelButton;
+ QString m_szOldMask;
+ KviChannel * m_pChannel;
+ KviMaskEditor * m_pEditor;
+protected slots:
+ virtual void accept();
+};
+
+class KVIRC_API KviMaskEditor : public KviWindowToolWidget
+{
+ Q_OBJECT
+public:
+ KviMaskEditor(QWidget * par,KviWindowToolPageButton* button,KviPointerList<KviMaskEntry> * maskList,
+ char flag,const char * nam);
+ ~KviMaskEditor();
+protected:
+ KviTalListView * m_pMaskBox;
+ QPushButton * m_pRemoveMask;
+ QPushButton * m_pAddButton;
+ QLineEdit * m_pSearch;
+ char m_cFlag;
+ int m_iIconId;
+public:
+ char flag(){ return m_cFlag; };
+ void addMask(KviMaskEntry *e);
+ void removeMask(KviMaskEntry *e);
+protected slots:
+ void removeClicked();
+ void addClicked();
+ void listViewDoubleClicked( KviTalListViewItem * );
+ void searchTextChanged ( const QString & );
+signals:
+ void removeMasks(KviMaskEditor *,KviPointerList<KviMaskEntry> *);
+};
+
+#endif //_KVI_MASKEDITOR_H_
diff --git a/src/kvirc/ui/kvi_mdicaption.cpp b/src/kvirc/ui/kvi_mdicaption.cpp
new file mode 100644
index 00000000..ba4aea40
--- /dev/null
+++ b/src/kvirc/ui/kvi_mdicaption.cpp
@@ -0,0 +1,285 @@
+//=================================================================================================
+//
+// File : kvi_mdicaption.cpp
+// Creation date : Tue Sep 2 2003 02:35:45 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=================================================================================================
+
+#define __KVIRC__
+
+#define _KVI_DEBUG_CHECK_RANGE_
+#include "kvi_debug.h"
+#include "kvi_mdichild.h"
+#include "kvi_mdimanager.h"
+#include "kvi_string.h"
+#include "kvi_locale.h"
+#include "kvi_options.h"
+#include "kvi_settings.h"
+#include "kvi_iconmanager.h"
+#include "kvi_window.h"
+#include "kvi_mdicaption.h"
+
+#include <qcursor.h>
+#include <qnamespace.h>
+#include <qapplication.h>
+#include <qfontmetrics.h>
+#include "kvi_pointerlist.h"
+#include <qpixmap.h>
+#include <qstyle.h>
+#include <qpainter.h>
+#include "kvi_tal_popupmenu.h"
+#ifdef COMPILE_USE_QT4
+ #include <q3simplerichtext.h>
+ #define QSimpleRichText Q3SimpleRichText
+ #include <qstyleoption.h>
+#else
+ #include <qsimplerichtext.h>
+#endif
+#include <qdrawutil.h>
+#include <qevent.h>
+
+KviMdiCaptionButton::KviMdiCaptionButton(const QPixmap &pix,QWidget * parent,const char * name)
+: QToolButton(parent,name)
+{
+ setPixmap(pix);
+ //setAutoRaise(true);
+ setMinimumSize(18,18);
+}
+
+KviMdiCaptionButton::~KviMdiCaptionButton()
+{
+}
+
+
+#ifdef COMPILE_USE_QT4
+void KviMdiCaptionButton::paintEvent(QPaintEvent *e)
+{
+ QPainter painter(this);
+ drawButton(&painter);
+}
+#endif
+
+void KviMdiCaptionButton::drawButton(QPainter *p)
+{
+#ifdef COMPILE_USE_QT4
+ QBrush b(parentWidget()->palette().window());
+#else
+ QBrush b(parentWidget()->colorGroup().background());
+#endif
+
+ if(isDown())
+ qDrawShadePanel(p,0,0,width(),height(),colorGroup(),true,1,&b);
+ else
+ p->fillRect(0,0,width(),height(),b);
+
+#ifdef COMPILE_USE_QT4
+ int x = (width() - 16) / 2;
+ int y = (width() - 16) / 2;
+ p->drawPixmap(x,y,16,16,icon().pixmap(16,16),0,0,16,16);
+#else
+ drawButtonLabel(p);
+#endif
+}
+
+
+
+
+
+
+
+KviMdiCaption::KviMdiCaption(KviMdiChild * parent,const char * name)
+: QWidget(parent,name)
+{
+ m_pMaximizeButton = new KviMdiCaptionButton(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_MAXIMIZE)),this,"maximize_button");
+ connect(m_pMaximizeButton,SIGNAL(clicked()),parent,SLOT(maximize()));
+ m_pMinimizeButton = new KviMdiCaptionButton(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_MINIMIZE)),this,"minimize_button");
+ connect(m_pMinimizeButton,SIGNAL(clicked()),parent,SLOT(minimize()));
+ m_pCloseButton = new KviMdiCaptionButton(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CLOSE)),this,"close_button");
+ connect(m_pCloseButton,SIGNAL(clicked()),parent,SLOT(closeRequest()));
+ m_pSystemButton = new KviMdiCaptionButton(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DEFAULTICON)),this,"icon_button");
+ connect(m_pSystemButton,SIGNAL(clicked()),parent,SLOT(systemPopupSlot()));
+
+ m_lastMousePos = QPoint(-1,-1);
+ m_bMouseGrabbed = true;
+ m_bActive = false;
+ calcLineSpacing();
+#ifdef COMPILE_USE_QT4
+ setAutoFillBackground(false);
+#endif
+}
+
+KviMdiCaption::~KviMdiCaption()
+{
+}
+
+void KviMdiCaption::reloadImages()
+{
+ m_pMaximizeButton->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_MAXIMIZE)));
+ m_pMinimizeButton->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_MINIMIZE)));
+ m_pCloseButton->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CLOSE)));
+}
+
+void KviMdiCaption::calcLineSpacing()
+{
+ QFontMetrics fm(font());
+ m_iLineSpacing = fm.lineSpacing() + 3;
+ if(m_iLineSpacing < 20)m_iLineSpacing = 20;
+}
+
+int KviMdiCaption::heightHint()
+{
+ return m_iLineSpacing;
+}
+
+void KviMdiCaption::setActive(bool bActive)
+{
+ m_bActive = bActive;
+
+ QPalette pal(Qt::white,m_bActive ? KVI_OPTION_COLOR(KviOption_colorMdiCaptionActive) : KVI_OPTION_COLOR(KviOption_colorMdiCaptionInactive));
+ setPalette(pal);
+ //update();
+ m_pSystemButton->update();
+ m_pCloseButton->update();
+ m_pMinimizeButton->update();
+ m_pMaximizeButton->update();
+}
+
+void KviMdiCaption::fontChange(const QFont &old)
+{
+ calcLineSpacing();
+ QWidget::fontChange(old);
+ ((KviMdiChild *)parent())->resizeEvent(0);
+}
+
+void KviMdiCaption::mousePressEvent(QMouseEvent *e)
+{
+ m_bMouseGrabbed = true;
+ m_lastMousePos = QCursor::pos();
+#ifdef COMPILE_USE_QT4
+ setCursor(Qt::SizeAllCursor);
+#else
+ setCursor(QCursor::sizeAllCursor);
+#endif
+ ((KviMdiChild *)parent())->activate(true);
+}
+
+void KviMdiCaption::mouseMoveEvent(QMouseEvent *)
+{
+ if(m_bMouseGrabbed)
+ {
+ QPoint p = QCursor::pos();
+ int dx = m_lastMousePos.x() - p.x();
+ int dy = m_lastMousePos.y() - p.y();
+ KviMdiChild * c = (KviMdiChild *)parent();
+
+ int nx = c->manager()->childX(c) - dx;
+ int ny = c->manager()->childY(c) - dy;
+
+ if((nx < 0) || (ny < 0))
+ {
+ int cx = p.x();
+ int cy = p.y();
+ if(nx < 0)
+ {
+ cx -= nx;
+ nx = 0;
+ }
+ if(ny < 0)
+ {
+ cy -= ny;
+ ny = 0;
+ }
+
+ QCursor::setPos(cx,cy);
+ m_lastMousePos = QPoint(cx,cy);
+ } else {
+ m_lastMousePos = p;
+ }
+
+ c->manager()->moveChild(c,nx,ny);
+ c->manager()->childMoved(c);
+ }
+}
+
+void KviMdiCaption::mouseDoubleClickEvent(QMouseEvent *e)
+{
+ ((KviMdiChild *)parent())->maximize();
+}
+
+void KviMdiCaption::paintEvent(QPaintEvent * e)
+{
+ QRect r = e->rect();
+ QPainter p(this);
+ p.fillRect(r,m_bActive ? KVI_OPTION_COLOR(KviOption_colorMdiCaptionActive) : KVI_OPTION_COLOR(KviOption_colorMdiCaptionInactive));
+ QSimpleRichText rt(m_bActive ? ((KviMdiChild *)parent())->xmlActiveCaption() : ((KviMdiChild *)parent())->xmlInactiveCaption(),font());
+ rt.draw(&p,height() + 2,-1,rect(),colorGroup());
+}
+
+void KviMdiCaption::mouseReleaseEvent(QMouseEvent *)
+{
+ m_bMouseGrabbed = false;
+#ifdef COMPILE_USE_QT4
+ setCursor(Qt::arrowCursor);
+#else
+ setCursor(QCursor::arrowCursor);
+#endif
+// releaseMouse();
+}
+
+void KviMdiCaption::setFocusProxy(QWidget * w)
+{
+ QWidget::setFocusProxy(w);
+ m_pSystemButton->setFocusProxy(w);
+ m_pMinimizeButton->setFocusProxy(w);
+ m_pMaximizeButton->setFocusProxy(w);
+ m_pCloseButton->setFocusProxy(w);
+}
+
+void KviMdiCaption::resizeEvent(QResizeEvent * e)
+{
+ int s = height() - 2;
+ m_pSystemButton->setGeometry(1,1,s,s);
+ m_pCloseButton->setGeometry(width() - (s + 1),
+ 1,s,s);
+ m_pMaximizeButton->setGeometry(width() - ((s << 1) + 2),
+ 1,s,s);
+ m_pMinimizeButton->setGeometry(width() - ((s * 3) + 3),
+ 1,s,s);
+}
+
+
+
+KviMenuBarToolButton::KviMenuBarToolButton(QWidget * par,const QPixmap &img, const char * name)
+: KviStyledToolButton(par)
+{
+ setProperty("name","name");
+ setIconSet(img);
+ setAutoRaise(true);
+}
+
+KviMenuBarToolButton::~KviMenuBarToolButton()
+{
+}
+
+QSize KviMenuBarToolButton::sizeHint() const
+{
+ return QSize(20,20);
+}
+
diff --git a/src/kvirc/ui/kvi_mdicaption.h b/src/kvirc/ui/kvi_mdicaption.h
new file mode 100644
index 00000000..6bec4051
--- /dev/null
+++ b/src/kvirc/ui/kvi_mdicaption.h
@@ -0,0 +1,101 @@
+#ifndef _KVI_MDICAPTION_H_
+#define _KVI_MDICAPTION_H_
+//=================================================================================================
+//
+// File : kvi_mdicaption.h
+// Creation date : Tue Sep 2 2003 02:35:45 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=================================================================================================
+
+#include "kvi_settings.h"
+
+#include <qtoolbutton.h>
+#include <qlabel.h>
+#include "kvi_styled_controls.h"
+
+class KviMdiManager;
+class KviMdiChild;
+
+
+class KVIRC_API KviMdiCaptionButton : public QToolButton
+{
+ Q_OBJECT
+public:
+ KviMdiCaptionButton(const QPixmap &pix,QWidget * parent,const char * name);
+ ~KviMdiCaptionButton();
+protected:
+ virtual void drawButton(QPainter * p);
+#ifdef COMPILE_USE_QT4
+ virtual void paintEvent(QPaintEvent *e);
+#endif
+};
+
+
+class KviMenuBarToolButton : public KviStyledToolButton
+{
+ Q_OBJECT
+public:
+ KviMenuBarToolButton(QWidget * par,const QPixmap &img, const char * name);
+ ~KviMenuBarToolButton();
+public:
+ virtual QSize sizeHint() const;
+};
+
+
+class KVIRC_API KviMdiCaption : public QWidget
+{
+ friend class KviMdiChild;
+ Q_OBJECT
+public:
+ KviMdiCaption(KviMdiChild * parent,const char * name);
+ ~KviMdiCaption();
+protected:
+ QPoint m_lastMousePos;
+ bool m_bMouseGrabbed;
+ int m_iLineSpacing;
+ bool m_bActive;
+ KviMdiCaptionButton * m_pSystemButton;
+ KviMdiCaptionButton * m_pMinimizeButton;
+ KviMdiCaptionButton * m_pMaximizeButton;
+ KviMdiCaptionButton * m_pCloseButton;
+ QPixmap m_pixSystemIcon;
+public:
+ int heightHint();
+ void setActive(bool bActive);
+ bool active(){ return m_bActive; };
+ void setSystemIcon(const QPixmap &pix){ m_pSystemButton->setPixmap(pix); m_pixSystemIcon = pix; };
+ const QPixmap * systemIcon(){ return &m_pixSystemIcon; };
+ void enableClose(bool bEnable){ m_pCloseButton->setEnabled(bEnable); };
+ bool closeEnabled(){ return m_pCloseButton->isEnabled(); };
+ virtual void setFocusProxy(QWidget * w);
+protected:
+ void calcLineSpacing();
+ virtual void fontChange(const QFont &old);
+ virtual void mousePressEvent(QMouseEvent *e);
+ virtual void mouseDoubleClickEvent(QMouseEvent *e);
+ virtual void mouseMoveEvent(QMouseEvent *e);
+ virtual void mouseReleaseEvent(QMouseEvent *e);
+ virtual void paintEvent(QPaintEvent * e);
+ virtual void resizeEvent(QResizeEvent * e);
+ void reloadImages();
+};
+
+
+#endif //_KVI_MDICAPTION_H_
diff --git a/src/kvirc/ui/kvi_mdichild.cpp b/src/kvirc/ui/kvi_mdichild.cpp
new file mode 100644
index 00000000..9b92c563
--- /dev/null
+++ b/src/kvirc/ui/kvi_mdichild.cpp
@@ -0,0 +1,576 @@
+//=============================================================================
+//
+// File : kvi_mdichild.cpp
+// Creation date : Wed Jun 21 2000 17:35:45 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+#define __KVIRC__
+
+#define _KVI_DEBUG_CHECK_RANGE_
+#include "kvi_debug.h"
+#include "kvi_mdichild.h"
+#include "kvi_mdimanager.h"
+#include "kvi_string.h"
+#include "kvi_locale.h"
+#include "kvi_options.h"
+#include "kvi_settings.h"
+#include "kvi_iconmanager.h"
+#include "kvi_window.h"
+#include "kvi_mdicaption.h"
+
+#include <qcursor.h>
+#include <qnamespace.h>
+#include <qapplication.h>
+#include <qfontmetrics.h>
+#include "kvi_pointerlist.h"
+#include <qpixmap.h>
+#include <qstyle.h>
+#include <qpainter.h>
+#include "kvi_tal_popupmenu.h"
+#ifndef COMPILE_USE_QT4
+ #include <qobjectlist.h>
+#endif
+#include <qevent.h>
+
+#ifdef Q_OS_MACX
+#include "kvi_app.h" //Needed for g_pApp
+#ifdef COMPILE_USE_QT4
+ #include <QDesktopWidget>
+#endif
+#endif
+
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ extern QPixmap * g_pShadedChildGlobalDesktopBackground;
+#endif
+
+
+#define KVI_MDI_NORESIZE 0
+#define KVI_MDI_RESIZE_TOP 1
+#define KVI_MDI_RESIZE_LEFT 2
+#define KVI_MDI_RESIZE_RIGHT 4
+#define KVI_MDI_RESIZE_BOTTOM 8
+#define KVI_MDI_RESIZE_TOPLEFT (1|2)
+#define KVI_MDI_RESIZE_TOPRIGHT (1|4)
+#define KVI_MDI_RESIZE_BOTTOMLEFT (8|2)
+#define KVI_MDI_RESIZE_BOTTOMRIGHT (8|4)
+
+
+KviMdiChild::KviMdiChild(KviMdiManager * par,const char * name)
+: QFrame(par->viewport(),name ? name : "mdi_child")
+{
+ setFrameStyle(QFrame::StyledPanel | QFrame::Raised);
+ setFrameShape(NoFrame);
+ m_pManager = par;
+
+ m_pCaption = new KviMdiCaption(this,"mdi_caption");
+
+ m_bResizeMode = false;
+ m_iResizeCorner = KVI_MDI_NORESIZE;
+ m_iLastCursorCorner = KVI_MDI_NORESIZE;
+
+ m_pClient = 0;
+ m_state = Normal;
+ m_restoredGeometry = QRect(10,10,100,100);
+
+ setMouseTracking(true);
+ setMinimumSize(KVI_MDICHILD_MIN_WIDTH,KVI_MDICHILD_MIN_HEIGHT);
+
+#ifdef COMPILE_USE_QT4
+ setAutoFillBackground(true);
+#endif
+
+}
+
+KviMdiChild::~KviMdiChild()
+{
+ if(m_pClient)delete m_pClient;
+}
+
+void KviMdiChild::reloadImages()
+{
+ m_pCaption->reloadImages();
+}
+
+QRect KviMdiChild::restoredGeometry()
+{
+ if(m_state == Maximized)return m_restoredGeometry;
+ else return QRect(x(),y(),width(),height());
+// else return geometry();
+
+}
+
+#ifdef COMPILE_USE_QT4
+void KviMdiChild::setBackgroundRole(QPalette::ColorRole)
+{
+ // hack
+ QFrame::setBackgroundRole(QPalette::Window);
+}
+#else
+void KviMdiChild::setBackgroundMode(QWidget::BackgroundMode)
+{
+ // hack
+ QFrame::setBackgroundMode(QWidget::PaletteBackground);
+}
+#endif
+
+void KviMdiChild::setIcon(const QPixmap &pix)
+{
+ m_pCaption->setSystemIcon(pix);
+
+ if((m_state == Maximized) && (m_pManager->topChild() == this))
+ {
+ m_pManager->updateSDIMode();
+ }
+}
+
+const QPixmap * KviMdiChild::icon()
+{
+ return m_pCaption->systemIcon();
+}
+
+void KviMdiChild::enableClose(bool bEnable)
+{
+ m_pCaption->enableClose(bEnable);
+ if((m_state == Maximized) && (m_pManager->topChild() == this))
+ {
+ m_pManager->updateSDIMode();
+ }
+
+}
+
+bool KviMdiChild::closeEnabled()
+{
+ return m_pCaption->closeEnabled();
+}
+
+void KviMdiChild::setCaption(const QString & plain,const QString & xmlActive,const QString & xmlInactive)
+{
+ m_szPlainCaption = plain;
+ m_szXmlActiveCaption = xmlActive;
+ m_szXmlInactiveCaption = xmlInactive;
+ //m_pCaptionLabel->setActive(m_pCaptionLabel->active());
+ m_pCaption->update();
+}
+
+void KviMdiChild::maximize()
+{
+ if(m_state == Minimized)restore(); // restore first
+ if(m_state == Normal)m_restoredGeometry = geometry();
+ m_state = Maximized;
+ manager()->maximizeChild(this);
+}
+
+void KviMdiChild::restore()
+{
+ if(m_restoredGeometry.x() < 0)m_restoredGeometry.setX(0);
+ if(m_restoredGeometry.y() < 0)m_restoredGeometry.setY(0);
+ // ensure coherency
+ if(m_restoredGeometry.width() < 5)m_restoredGeometry.setWidth(5);
+ if(m_restoredGeometry.height() < 5)m_restoredGeometry.setHeight(5);
+
+ /*
+ if((m_restoredGeometry.x() + m_restoredGeometry.width()) > m_pManager->width())
+ m_restoredGeometry.setWidth(m_pManager->width() - m_restoredGeometry.x());
+ if((m_restoredGeometry.y() + m_restoredGeometry.height()) > m_pManager->height())
+ m_restoredGeometry.setHeight(m_pManager->height() - m_restoredGeometry.y());
+ */
+
+ switch(m_state)
+ {
+ case Maximized:
+ m_pManager->moveChild(this,m_restoredGeometry.x(),m_restoredGeometry.y());
+ resize(m_restoredGeometry.width(),m_restoredGeometry.height());
+ m_state = Normal;
+ m_pManager->childRestored(this,true);
+ break;
+ case Minimized:
+ m_pManager->moveChild(this,m_restoredGeometry.x(),m_restoredGeometry.y());
+ resize(m_restoredGeometry.width(),m_restoredGeometry.height());
+ show();
+ m_state = Normal;
+ m_pManager->childRestored(this,false);
+ break;
+ case Normal:
+ m_state = Normal;
+ if(!isVisible())show();
+ return;
+ break;
+ }
+}
+
+void KviMdiChild::minimize()
+{
+ switch(m_state)
+ {
+ case Maximized:
+ hide();
+ m_state = Minimized;
+ m_pManager->childMinimized(this,true);
+ break;
+ case Normal:
+ m_restoredGeometry = geometry();
+ hide();
+ m_state = Minimized;
+ m_pManager->childMinimized(this,false);
+ break;
+ case Minimized:
+ m_state = Minimized;
+ if(isVisible())hide();
+ return;
+ break;
+ }
+}
+
+void KviMdiChild::closeRequest()
+{
+ if(closeEnabled())if(m_pClient)m_pClient->close();
+}
+/*
+void KviMdiChild::systemPopupAboutToShow()
+{
+ m_pSystemPopup->clear();
+ if(m_state != Maximized)m_pSystemPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_MAXIMIZE)),__tr("&Maximize"),this,SLOT(maximize()));
+ if(m_state != Minimized)m_pSystemPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_MINIMIZE)),__tr("M&inimize"),this,SLOT(minimize()));
+ if(m_state != Normal)m_pSystemPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_RESTORE)),__tr("&Restore"),this,SLOT(restore()));
+ if(closeEnabled())
+ {
+ m_pSystemPopup->insertSeparator();
+ m_pSystemPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CLOSE)),__tr("&Close"),this,SLOT(closeRequest()));
+ }
+}
+*/
+void KviMdiChild::moveEvent(QMoveEvent *e)
+{
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ if(m_pClient && g_pShadedChildGlobalDesktopBackground)
+ {
+ if(m_pClient->inherits("KviWindow")) // actually this is always the case
+ {
+ ((KviWindow *)m_pClient)->updateBackgrounds();
+ }
+ }
+#endif
+ QFrame::moveEvent(e);
+}
+
+void KviMdiChild::systemPopupSlot()
+{
+ if(sender()->inherits("QToolButton"))
+ {
+ emit systemPopupRequest(((QToolButton *)sender())->mapToGlobal(QPoint(0,((QToolButton *)sender())->height())));
+ } else {
+ emit systemPopupRequest(m_pCaption->mapToGlobal(QPoint(5,5)));
+ }
+}
+
+void KviMdiChild::resizeEvent(QResizeEvent *e)
+{
+ int s = m_pCaption->heightHint();
+ m_pCaption->setGeometry(KVI_MDICHILD_BORDER,KVI_MDICHILD_BORDER,
+ width() - (KVI_MDICHILD_BORDER << 1),s);
+
+ if(m_pClient)
+ {
+ int yPos = KVI_MDICHILD_BORDER + s + KVI_MDICHILD_SPACING;
+ m_pClient->setGeometry(KVI_MDICHILD_BORDER,yPos,
+ width() - (KVI_MDICHILD_BORDER << 1),height() - (yPos + KVI_MDICHILD_BORDER));
+ }
+ QFrame::resizeEvent(e);
+}
+
+void KviMdiChild::mousePressEvent(QMouseEvent *e)
+{
+ if(m_state == Maximized)return;
+ m_iResizeCorner=getResizeCorner(e->pos().x(),e->pos().y());
+ if(m_iResizeCorner != KVI_MDI_NORESIZE)
+ {
+ grabMouse(getResizeCursor(m_iResizeCorner));
+ m_bResizeMode = true;
+ }
+}
+
+void KviMdiChild::mouseReleaseEvent(QMouseEvent *)
+{
+ m_iResizeCorner=KVI_MDI_NORESIZE;
+ m_iLastCursorCorner=KVI_MDI_NORESIZE;
+
+ if(m_bResizeMode)
+ {
+ m_bResizeMode = false;
+ releaseMouse();
+ }
+
+ //if(QApplication::overrideCursor())QApplication::restoreOverrideCursor();
+}
+
+QCursor KviMdiChild::getResizeCursor(int resizeCorner)
+{
+ switch (resizeCorner)
+ {
+ case KVI_MDI_RESIZE_LEFT:
+ case KVI_MDI_RESIZE_RIGHT:
+ return Qt::sizeHorCursor;
+ break;
+ case KVI_MDI_RESIZE_TOP:
+ case KVI_MDI_RESIZE_BOTTOM:
+ return Qt::sizeVerCursor;
+ break;
+ case KVI_MDI_RESIZE_TOPLEFT:
+ case KVI_MDI_RESIZE_BOTTOMRIGHT:
+ return Qt::sizeFDiagCursor;
+ break;
+ case KVI_MDI_RESIZE_BOTTOMLEFT:
+ case KVI_MDI_RESIZE_TOPRIGHT:
+ return Qt::sizeBDiagCursor;
+ break;
+ default:
+ return Qt::arrowCursor;
+ break;
+ }
+}
+
+void KviMdiChild::mouseMoveEvent(QMouseEvent *e)
+{
+ if(e->state() & Qt::LeftButton)
+ {
+ if(m_iResizeCorner && (m_state != Maximized))resizeWindowOpaque(m_iResizeCorner);
+ } else {
+ setResizeCursor(getResizeCorner(e->pos().x(), e->pos().y()));
+ }
+}
+
+void KviMdiChild::setResizeCursor(int resizeCorner)
+{
+ if(resizeCorner == m_iLastCursorCorner)
+ return; //Don't do it twice
+ m_iLastCursorCorner = resizeCorner;
+ if(resizeCorner == KVI_MDI_NORESIZE)
+ {
+ setCursor(getResizeCursor(resizeCorner));
+ //if(QApplication::overrideCursor())QApplication::restoreOverrideCursor();
+ } else {
+ if(m_state != Maximized)
+ {
+ setCursor(getResizeCursor(resizeCorner));
+ //QApplication::setOverrideCursor(getResizeCursor(resizeCorner),true);
+ }
+ }
+}
+
+void KviMdiChild::leaveEvent(QEvent *)
+{
+ if(!m_bResizeMode)
+ {
+ m_iResizeCorner=KVI_MDI_NORESIZE;
+ m_iLastCursorCorner=KVI_MDI_NORESIZE;
+ //if(QApplication::overrideCursor())QApplication::restoreOverrideCursor();
+ } else {
+ if(m_iResizeCorner != KVI_MDI_NORESIZE)resizeWindowOpaque(m_iResizeCorner);
+ }
+}
+
+void KviMdiChild::calculateResizeRect(int resizeCorner,QPoint mousePos,QRect &resizeRect,int minWidth,int minHeight)
+{
+ switch(resizeCorner)
+ {
+ case KVI_MDI_RESIZE_LEFT:
+ resizeRect.setLeft(mousePos.x() - 1);
+ if(resizeRect.width() < minWidth)resizeRect.setLeft(resizeRect.right() - minWidth);
+ if(resizeRect.x() < 0)resizeRect.setX(0);
+ break;
+ case KVI_MDI_RESIZE_RIGHT:
+ resizeRect.setRight(mousePos.x() + 1);
+ if(resizeRect.width() < minWidth)resizeRect.setRight(resizeRect.left() + minWidth);
+ break;
+ case KVI_MDI_RESIZE_TOP:
+ resizeRect.setTop(mousePos.y() - 1);
+ if(resizeRect.height() < minHeight)resizeRect.setTop(resizeRect.bottom() - minHeight);
+ if(resizeRect.y() < 0)resizeRect.setY(0);
+ break;
+ case KVI_MDI_RESIZE_BOTTOM:
+ resizeRect.setBottom(mousePos.y() + 1);
+ if(resizeRect.height() < minHeight)resizeRect.setBottom(resizeRect.top() + minHeight);
+ break;
+ case KVI_MDI_RESIZE_BOTTOMRIGHT:
+ resizeRect.setBottom(mousePos.y() + 1);
+ if(resizeRect.height() < minHeight)resizeRect.setBottom(resizeRect.top() + minHeight);
+ resizeRect.setRight(mousePos.x() + 1);
+ if(resizeRect.width() < minWidth)resizeRect.setRight(resizeRect.left() + minWidth);
+ break;
+ case KVI_MDI_RESIZE_TOPRIGHT:
+ resizeRect.setTop(mousePos.y() - 1);
+ if(resizeRect.height() < minHeight)resizeRect.setTop(resizeRect.bottom() - minHeight);
+ if(resizeRect.y() < 0)resizeRect.setY(0);
+ resizeRect.setRight(mousePos.x() + 1);
+ if(resizeRect.width() < minWidth)resizeRect.setRight(resizeRect.left() + minWidth);
+ break;
+ case KVI_MDI_RESIZE_BOTTOMLEFT:
+ resizeRect.setBottom(mousePos.y() + 1);
+ if(resizeRect.height() < minHeight)resizeRect.setBottom(resizeRect.top() + minHeight);
+ resizeRect.setLeft(mousePos.x() - 1);
+ if(resizeRect.width() < minWidth)resizeRect.setLeft(resizeRect.right() - minWidth);
+ if(resizeRect.x() < 0)resizeRect.setX(0);
+ break;
+ case KVI_MDI_RESIZE_TOPLEFT:
+ resizeRect.setTop(mousePos.y() - 1);
+ if(resizeRect.height() < minHeight)resizeRect.setTop(resizeRect.bottom() - minHeight);
+ if(resizeRect.y() < 0)resizeRect.setY(0);
+ resizeRect.setLeft(mousePos.x() - 1);
+ if(resizeRect.width() < minWidth)resizeRect.setLeft(resizeRect.right() - minWidth);
+ if(resizeRect.x() < 0)resizeRect.setX(0);
+ break;
+ }
+}
+
+void KviMdiChild::calculateMinimumSize(int &minWidth,int &minHeight)
+{
+ if(m_pClient){
+ minWidth = m_pClient->minimumSize().width() + (KVI_MDICHILD_BORDER << 1);
+ minHeight = m_pClient->minimumSize().height()+ (KVI_MDICHILD_BORDER << 1)+
+ m_pCaption->heightHint() + KVI_MDICHILD_SPACING;
+ }
+ if(minWidth<KVI_MDICHILD_MIN_WIDTH)minWidth=KVI_MDICHILD_MIN_WIDTH;
+ if(minHeight<KVI_MDICHILD_MIN_HEIGHT)minHeight=KVI_MDICHILD_MIN_HEIGHT;
+}
+
+void KviMdiChild::resizeWindowOpaque(int resizeCorner)
+{
+ int minWidth=0;
+ int minHeight=0;
+ QRect resizeRect(m_pManager->childX(this),m_pManager->childY(this),width(),height());
+ calculateMinimumSize(minWidth,minHeight);
+ QPoint mousePos = m_pManager->viewportToContents(m_pManager->viewport()->mapFromGlobal(QCursor::pos()));
+ calculateResizeRect(resizeCorner,mousePos,resizeRect,minWidth,minHeight);
+ m_pManager->moveChild(this,resizeRect.x(),resizeRect.y());
+ resize(resizeRect.width(),resizeRect.height());
+ m_pManager->childMoved(this);
+
+ if(m_state == Maximized)
+ {
+ m_state=Normal;
+ m_pManager->childRestored(this,true);
+ }
+
+}
+
+int KviMdiChild::getResizeCorner(int ax,int ay)
+{
+ int ret = KVI_MDI_NORESIZE;
+ if((ax>0)&&(ax<(KVI_MDICHILD_BORDER+2))) ret |= KVI_MDI_RESIZE_LEFT;
+ if((ax<width())&&(ax>(width()-(KVI_MDICHILD_BORDER+2)))) ret |= KVI_MDI_RESIZE_RIGHT;
+ if((ay>0)&&(ay<(KVI_MDICHILD_BORDER+2))) ret |= KVI_MDI_RESIZE_TOP;
+ if((ay<(height()))&&(ay>(height()-(KVI_MDICHILD_BORDER+2)))) ret |= KVI_MDI_RESIZE_BOTTOM;
+ return ret;
+}
+
+void KviMdiChild::setClient(QWidget *w)
+{
+ __range_valid(m_pClient==0);
+ __range_valid(w!=0);
+
+ m_pClient = w;
+ //resize to match the client
+ int clientYPos=m_pCaption->heightHint()+KVI_MDICHILD_SPACING+KVI_MDICHILD_BORDER;
+ resize(w->width()+(KVI_MDICHILD_BORDER << 1),w->height()+KVI_MDICHILD_BORDER+clientYPos);
+
+ //Reparent if needed
+ if(w->parent()!=this){
+ //reparent to this widget , no flags , point , show it
+ QPoint pnt2(KVI_MDICHILD_BORDER,clientYPos);
+ w->reparent(this,pnt2,true);
+ } else w->move(KVI_MDICHILD_BORDER,clientYPos);
+
+ setFocusProxy(w);
+ m_pCaption->setFocusProxy(w);
+
+/*
+ m_pMinimizeButton->setFocusProxy(w);
+ m_pMaximizeButton->setFocusProxy(w);
+ m_pCloseButton->setFocusProxy(w);
+ m_pIconButton->setFocusProxy(w);
+*/
+ //linkChildren(w);
+
+ if(m_pClient->minimumSize().width() > KVI_MDICHILD_MIN_WIDTH &&
+ m_pClient->minimumSize().height() > KVI_MDICHILD_MIN_HEIGHT){
+ setMinimumWidth(m_pClient->minimumSize().width() + (KVI_MDICHILD_BORDER << 1));
+ setMinimumHeight(m_pClient->minimumSize().height()+ (KVI_MDICHILD_BORDER << 1) +
+ m_pCaption->heightHint() + KVI_MDICHILD_SPACING);
+ }
+
+ KviStr tmp(KviStr::Format,"mdi_child_%s",w->name());
+ setName(tmp.ptr());
+}
+
+void KviMdiChild::unsetClient()
+{
+ __range_valid(m_pClient!=0);
+ if(!m_pClient)return;
+ //reparent to desktop widget , no flags , point , show it
+ //unlinkChildren(m_pClient);
+ setFocusProxy(0); //remove the focus proxy...
+ //Kewl...the reparent function has a small prob now..
+ //the new toplelvel widgets gets not reenabled for dnd
+#ifndef Q_OS_MACX
+ m_pClient->reparent(0,m_pClient->mapToGlobal(QPoint(0,0)),true);
+#else
+ QRect r = g_pApp->desktop()->availableGeometry(m_pClient);
+ r.moveBy(0, 22);
+ m_pClient->reparent(0,r.topLeft(),true);
+#endif
+ m_pClient=0;
+ setName("mdi_child");
+}
+
+
+
+void KviMdiChild::activate(bool bSetFocus)
+{
+ if(!m_pCaption->active())m_pCaption->setActive(true);
+ if(m_pManager->topChild() != this)
+ m_pManager->setTopChild(this,bSetFocus);
+ else if(bSetFocus)setFocus();
+}
+
+void KviMdiChild::focusInEvent(QFocusEvent *)
+{
+ // We gained focus by click , tab or from the caption label
+ // Bring this child to top
+ m_pCaption->setActive(true);
+ m_pManager->setTopChild(this,false); //Do not focus by now...
+ /*The client is our focusProxy ! it should be focused by Qt !*/
+#ifdef _KVI_DEBUG_CLASS_NAME_
+ __range_valid(focusProxy() == m_pClient);
+#endif
+}
+
+QSize KviMdiChild::sizeHint()
+{
+ if(m_pClient)
+ {
+ QSize s = m_pClient->sizeHint();
+ QSize ret(s.width() + (KVI_MDICHILD_BORDER << 1),
+ s.height() + (KVI_MDICHILD_BORDER << 1) + KVI_MDICHILD_SPACING + m_pCaption->heightHint());
+ return ret;
+ }
+ return QFrame::sizeHint();
+}
+
+
diff --git a/src/kvirc/ui/kvi_mdichild.h b/src/kvirc/ui/kvi_mdichild.h
new file mode 100644
index 00000000..7915a3bb
--- /dev/null
+++ b/src/kvirc/ui/kvi_mdichild.h
@@ -0,0 +1,122 @@
+#ifndef _KVI_MDICHILD_H_
+#define _KVI_MDICHILD_H_
+//=================================================================================================
+//
+// File : kvi_mdichild.h
+// Creation date : Wed Jun 21 2000 17:35:04 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=================================================================================================
+
+#include "kvi_settings.h"
+#include "kvi_string.h"
+
+#include <qframe.h>
+#include <qtoolbutton.h>
+#include <qlabel.h>
+
+
+class KviMdiManager;
+class KviMdiChild;
+class KviMdiCaption;
+
+class QCursor;
+
+
+
+class KVIRC_API KviMdiChild : public QFrame
+{
+ friend class KviMdiManager;
+ friend class KviMdiCaption;
+ Q_OBJECT
+public:
+ KviMdiChild(KviMdiManager* par,const char * name = 0);
+ ~KviMdiChild();
+public:
+ enum MdiChildState { Maximized , Minimized , Normal };
+protected:
+ KviMdiManager * m_pManager;
+ KviMdiCaption * m_pCaption;
+private:
+ int m_iResizeCorner;
+ int m_iLastCursorCorner;
+ bool m_bResizeMode;
+ QWidget * m_pClient;
+ MdiChildState m_state;
+ QRect m_restoredGeometry;
+
+ QString m_szXmlActiveCaption;
+ QString m_szXmlInactiveCaption;
+ QString m_szPlainCaption;
+public:
+ QRect restoredGeometry();
+ void setRestoredGeometry(const QRect &r){ m_restoredGeometry = r; };
+ void setClient(QWidget * w);
+ QWidget * client(){ return m_pClient; };
+ void unsetClient();
+ KviMdiCaption * captionLabel(){ return m_pCaption; };
+ MdiChildState state(){ return m_state; };
+ const QString & plainCaption(){ return m_szPlainCaption; };
+ const QString & xmlActiveCaption(){ return m_szXmlActiveCaption; };
+ const QString & xmlInactiveCaption(){ return m_szXmlInactiveCaption; };
+ void setCaption(const QString & plain,const QString & xmlActive,const QString & xmlInactive);
+ virtual QSize sizeHint();
+ void setIcon(const QPixmap &pix);
+ const QPixmap * icon();
+ void enableClose(bool bEnable);
+ bool closeEnabled();
+ KviMdiManager * manager(){ return m_pManager; };
+ void activate(bool bSetFocus);
+ void reloadImages();
+public slots:
+ void maximize();
+ void minimize();
+ void restore();
+ void systemPopupSlot();
+ void closeRequest();
+signals:
+ void systemPopupRequest(const QPoint & pnt);
+protected:
+#ifdef COMPILE_USE_QT4
+ virtual void setBackgroundRole(QPalette::ColorRole);
+#else
+ virtual void setBackgroundMode(QWidget::BackgroundMode bgmd);
+#endif
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual void mousePressEvent(QMouseEvent *e);
+ virtual void mouseMoveEvent(QMouseEvent *e);
+ virtual void mouseReleaseEvent(QMouseEvent *e);
+ virtual void leaveEvent(QEvent *e);
+ virtual void focusInEvent(QFocusEvent *);
+ virtual void moveEvent(QMoveEvent *e);
+// bool eventFilter(QObject *o,QEvent *e);
+ void emitSystemPopupRequest(const QPoint & pnt){ emit systemPopupRequest(pnt); };
+private:
+// void linkChildren(QWidget *w);
+// void unlinkChildren(QWidget *w);
+ QCursor getResizeCursor(int resizeCorner);
+ void resizeWindowOpaque(int resizeCorner);
+ int getResizeCorner(int ax,int ay);
+ void calculateMinimumSize(int &minWidth,int &minHeight);
+ void setResizeCursor(int resizeCorner);
+ void calculateResizeRect(int resizeCorner,QPoint mousePos,QRect &resizeRect,int minWidth,int minHeight);
+};
+
+
+#endif //_KVI_MDICHILD_H_
diff --git a/src/kvirc/ui/kvi_mdimanager.cpp b/src/kvirc/ui/kvi_mdimanager.cpp
new file mode 100644
index 00000000..feddca11
--- /dev/null
+++ b/src/kvirc/ui/kvi_mdimanager.cpp
@@ -0,0 +1,1126 @@
+//=============================================================================
+//
+// File : kvi_mdimanager.cpp
+// Creation date : Wed Jun 21 2000 17:28:04 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_debug.h"
+#include "kvi_settings.h"
+#include "kvi_mdimanager.h"
+#include "kvi_mdichild.h"
+#include "kvi_locale.h"
+#include "kvi_options.h"
+#include "kvi_iconmanager.h"
+#include "kvi_frame.h"
+#include "kvi_menubar.h"
+#include "kvi_mdicaption.h"
+#include "kvi_app.h"
+
+#include "kvi_tal_popupmenu.h"
+#include <qmenubar.h>
+#include <qlayout.h>
+#include <qpainter.h>
+#include <math.h>
+#include <qcursor.h>
+#include <qdrawutil.h>
+#include <qevent.h>
+
+#ifdef COMPILE_USE_QT4
+ #include "kvi_tal_hbox.h"
+#endif
+
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ #include <qpixmap.h>
+ extern QPixmap * g_pShadedParentGlobalDesktopBackground;
+#endif
+
+
+
+
+KviMdiManager::KviMdiManager(QWidget * parent,KviFrame * pFrm,const char * name)
+: KviTalScrollView(parent)
+{
+ setFrameShape(NoFrame);
+ m_pZ = new KviPointerList<KviMdiChild>;
+ m_pZ->setAutoDelete(true);
+
+ m_pFrm = pFrm;
+
+ m_iSdiIconItemId = 0;
+ m_iSdiCloseItemId = 0;
+ m_iSdiRestoreItemId = 0;
+ m_iSdiMinimizeItemId = 0;
+ m_pSdiIconButton = 0;
+ m_pSdiCloseButton = 0;
+ m_pSdiRestoreButton = 0;
+ m_pSdiMinimizeButton = 0;
+#ifdef COMPILE_USE_QT4
+ m_pSdiControls = 0;
+#endif
+
+ m_pWindowPopup = new KviTalPopupMenu(this);
+ connect(m_pWindowPopup,SIGNAL(activated(int)),this,SLOT(menuActivated(int)));
+ connect(m_pWindowPopup,SIGNAL(aboutToShow()),this,SLOT(fillWindowPopup()));
+ m_pTileMethodPopup = new KviTalPopupMenu(this);
+ connect(m_pTileMethodPopup,SIGNAL(activated(int)),this,SLOT(tileMethodMenuActivated(int)));
+
+#ifdef COMPILE_USE_QT4
+ viewport()->setAutoFillBackground(false);
+#else
+ viewport()->setBackgroundMode(QWidget::NoBackground);
+#endif
+ setStaticBackground(true);
+ resizeContents(width(),height());
+
+#ifdef COMPILE_USE_QT4
+ setFocusPolicy(Qt::NoFocus);
+ viewport()->setFocusPolicy(Qt::NoFocus);
+#else
+ setFocusPolicy(QWidget::NoFocus);
+ viewport()->setFocusPolicy(QWidget::NoFocus);
+#endif
+
+ connect(g_pApp,SIGNAL(reloadImages()),this,SLOT(reloadImages()));
+}
+
+KviMdiManager::~KviMdiManager()
+{
+ delete m_pZ;
+}
+
+void KviMdiManager::reloadImages()
+{
+ for(KviMdiChild * c = m_pZ->first();c;c = m_pZ->next())
+ {
+ c->reloadImages();
+ }
+}
+
+bool KviMdiManager::focusNextPrevChild(bool bNext)
+{
+ //bug("FFFFFF");
+ // this is a QScrollView bug... it doesn't pass this
+ // event to the toplevel window
+ return m_pFrm->focusNextPrevChild(bNext);
+}
+
+void KviMdiManager::drawContents(QPainter *p,int x,int y,int w,int h)
+{
+ //debug("MY DRAW CONTENTS (%d,%d,%d,%d)",x,y,w,h);
+ QRect r(x,y,w,h);
+
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ if(g_pShadedParentGlobalDesktopBackground)
+ {
+ QPoint pnt = viewport()->mapToGlobal(contentsToViewport(r.topLeft()));
+ p->drawTiledPixmap(r,*(g_pShadedParentGlobalDesktopBackground),pnt);
+ return;
+ }
+#endif
+
+ if(KVI_OPTION_PIXMAP(KviOption_pixmapMdiBackground).pixmap())
+ {
+ p->drawTiledPixmap(r,*(KVI_OPTION_PIXMAP(KviOption_pixmapMdiBackground).pixmap()));
+ } else {
+ p->fillRect(r,KVI_OPTION_COLOR(KviOption_colorMdiBackground));
+ }
+}
+
+void KviMdiManager::manageChild(KviMdiChild * lpC,bool bCascade,QRect *setGeom)
+{
+ __range_valid(lpC);
+
+ m_pZ->insert(0,lpC); //hidden -> last in the Z order
+
+ if(bCascade)
+ {
+ QPoint p = getCascadePoint(m_pZ->count()-1);
+ addChild(lpC,p.x(),p.y());
+ } else {
+ // FIXME: is this right ?
+ QPoint p = lpC->pos();
+ if(p.x() < 0)p.setX(0);
+ if(p.y() < 0)p.setY(0);
+ addChild(lpC,p.x(),p.y());
+
+ if(setGeom)
+ {
+ if(setGeom->left() < 0)setGeom->setLeft(0);
+ if(setGeom->top() < 0)setGeom->setTop(0);
+ moveChild(lpC,setGeom->x(),setGeom->y());
+ lpC->setGeometry(*setGeom);
+ }
+ }
+
+ if(KVI_OPTION_BOOL(KviOption_boolAutoTileWindows))tile();
+}
+
+void KviMdiManager::showAndActivate(KviMdiChild * lpC)
+{
+ lpC->show();
+ setTopChild(lpC,true);
+ if(KVI_OPTION_BOOL(KviOption_boolAutoTileWindows))tile();
+}
+
+void KviMdiManager::setTopChild(KviMdiChild *lpC,bool bSetFocus)
+{
+ __range_valid(lpC);
+ // The following check fails safely at startup....
+ // __range_valid(lpC->isVisible() || lpC->testWState(WState_ForceHide));
+
+ KviMdiChild * pOldTop = m_pZ->last();
+ if(pOldTop != lpC)
+ {
+ m_pZ->setAutoDelete(false);
+
+ if(!m_pZ->removeRef(lpC))
+ {
+ m_pZ->setAutoDelete(true);
+ return; // no such child ?
+ }
+
+ // disable the labels of all the other children
+ //for(KviMdiChild *pC=m_pZ->first();pC;pC=m_pZ->next())
+ //{
+ // pC->captionLabel()->setActive(false);
+ //}
+ KviMdiChild * pMaximizedChild = pOldTop;
+ if(pOldTop)
+ {
+ pOldTop->captionLabel()->setActive(false);
+ if(pOldTop->m_state != KviMdiChild::Maximized)pMaximizedChild=0;
+ }
+
+ m_pZ->setAutoDelete(true);
+ m_pZ->append(lpC);
+
+ if(pMaximizedChild)lpC->maximize(); //do not animate the change
+ lpC->raise();
+ if(pMaximizedChild)pMaximizedChild->restore();
+ }
+
+ if(bSetFocus)
+ {
+ if(!lpC->hasFocus())
+ {
+ lpC->setFocus();
+ /*
+ if(topLevelWidget()->isActiveWindow())
+ {
+
+ }
+ */
+ }
+ }
+}
+
+void KviMdiManager::focusInEvent(QFocusEvent *)
+{
+ focusTopChild();
+}
+
+void KviMdiManager::destroyChild(KviMdiChild *lpC,bool bFocusTopChild)
+{
+ bool bWasMaximized = lpC->state() == KviMdiChild::Maximized;
+ disconnect(lpC);
+ lpC->blockSignals(true);
+#ifdef _KVI_DEBUG_CHECK_RANGE_
+ //Report invalid results in a debug session
+ __range_valid(m_pZ->removeRef(lpC));
+#else
+ m_pZ->removeRef(lpC);
+#endif
+ if(bWasMaximized)
+ {
+ KviMdiChild * c=topChild();
+ if(c)
+ {
+ if(c->state() != KviMdiChild::Minimized)c->maximize();
+ else {
+ // minimized top child...the last one
+ leaveSDIMode();
+ }
+ } else {
+ // SDI state change
+ leaveSDIMode();
+ }
+ }
+ if(bFocusTopChild)focusTopChild();
+
+ if(KVI_OPTION_BOOL(KviOption_boolAutoTileWindows))tile();
+ updateContentsSize();
+}
+
+KviMdiChild * KviMdiManager::highestChildExcluding(KviMdiChild * pChild)
+{
+ KviMdiChild * c = m_pZ->last();
+ while(c && (c == pChild))c = m_pZ->prev();
+ return c;
+}
+
+QPoint KviMdiManager::getCascadePoint(int indexOfWindow)
+{
+ QPoint pnt(0,0);
+ if(indexOfWindow==0)return pnt;
+ KviMdiChild *lpC=m_pZ->first();
+ int step=(lpC ? (lpC->captionLabel()->heightHint()+KVI_MDICHILD_BORDER) : 20);
+ int availableHeight=viewport()->height()-(lpC ? lpC->minimumSize().height() : KVI_MDICHILD_MIN_HEIGHT);
+ int availableWidth=viewport()->width()-(lpC ? lpC->minimumSize().width() : KVI_MDICHILD_MIN_WIDTH);
+ int ax=0;
+ int ay=0;
+ for(int i=0;i<indexOfWindow;i++)
+ {
+ ax+=step;
+ ay+=step;
+ if(ax>availableWidth)ax=0;
+ if(ay>availableHeight)ay=0;
+ }
+ pnt.setX(ax);
+ pnt.setY(ay);
+ return pnt;
+}
+
+void KviMdiManager::mousePressEvent(QMouseEvent *e)
+{
+ //Popup the window menu
+ if(e->button() & Qt::RightButton)m_pWindowPopup->popup(mapToGlobal(e->pos()));
+}
+
+void KviMdiManager::childMoved(KviMdiChild *)
+{
+ updateContentsSize();
+}
+
+void KviMdiManager::maximizeChild(KviMdiChild * lpC)
+{
+ // the children must be moved once by the means of QScrollView::moveChild()
+ // so the QScrollView internal structures get updated with the negative
+ // position of the widget, otherwise, when restoring with moveChild()
+ // it will refuse to move it back to the original position
+ resizeContents(visibleWidth(),visibleHeight());
+ updateScrollBars();
+ g_pApp->sendPostedEvents();
+ if(g_pApp->closingDown())return;
+
+ moveChild(lpC,-KVI_MDICHILD_HIDDEN_EDGE,
+ -(KVI_MDICHILD_HIDDEN_EDGE + KVI_MDICHILD_SPACING + lpC->m_pCaption->heightHint()));
+
+ lpC->setGeometry(
+ -KVI_MDICHILD_HIDDEN_EDGE,
+ -(KVI_MDICHILD_HIDDEN_EDGE + KVI_MDICHILD_SPACING + lpC->m_pCaption->heightHint()),
+ viewport()->width() + (KVI_MDICHILD_HIDDEN_EDGE * 2), //KVI_MDICHILD_DOUBLE_HIDDEN_EDGE,
+ viewport()->height() + (KVI_MDICHILD_HIDDEN_EDGE * 2) + lpC->m_pCaption->heightHint() + KVI_MDICHILD_SPACING);
+
+ if(isInSDIMode())updateSDIMode();
+ else {
+ enterSDIMode(lpC);
+ // make sure that the child is focused
+ lpC->setFocus();
+ }
+
+ // fixme: we could hide all the other children now!
+}
+
+
+
+void KviMdiManager::resizeEvent(QResizeEvent *e)
+{
+ //If we have a maximized children at the top , adjust its size
+ KviTalScrollView::resizeEvent(e);
+ KviMdiChild *lpC=m_pZ->last();
+ if(lpC)
+ {
+ if(lpC->state()==KviMdiChild::Maximized)
+ {
+ // SDI mode
+ lpC->resize(viewport()->width() + (KVI_MDICHILD_HIDDEN_EDGE * 2),
+ viewport()->height() + lpC->m_pCaption->heightHint() + (KVI_MDICHILD_HIDDEN_EDGE * 2) + KVI_MDICHILD_SPACING);
+ return;
+ } else {
+ if(KVI_OPTION_BOOL(KviOption_boolAutoTileWindows))tile();
+ }
+ }
+ updateContentsSize();
+}
+
+
+/*
+void KviMdiManager::childMaximized(KviMdiChild * lpC)
+{
+ if(lpC == m_pZ->last())
+ {
+ enterSDIMode(lpC);
+ }
+ updateContentsSize();
+}
+*/
+
+void KviMdiManager::childMinimized(KviMdiChild * lpC,bool bWasMaximized)
+{
+ __range_valid(lpC);
+ if(m_pZ->findRef(lpC) == -1)return;
+ if(m_pZ->count() > 1)
+ {
+ m_pZ->setAutoDelete(false);
+#ifdef _KVI_DEBUG_CHECK_RANGE_
+ //Report invalid results in a debug session
+ __range_valid(m_pZ->removeRef(lpC));
+#else
+ m_pZ->removeRef(lpC);
+#endif
+ m_pZ->setAutoDelete(true);
+ m_pZ->insert(0,lpC);
+ if(bWasMaximized)
+ {
+ // Need to maximize the top child
+ lpC = m_pZ->last();
+ if(!lpC)return; //??
+ if(lpC->state()==KviMdiChild::Minimized)
+ {
+ if(bWasMaximized)leaveSDIMode();
+ return;
+ }
+ lpC->maximize(); //do nrot animate the change
+ } else {
+ if(KVI_OPTION_BOOL(KviOption_boolAutoTileWindows))tile();
+ }
+ focusTopChild();
+ } else {
+ // Unique window minimized...it won't loose the focus...!!
+ setFocus(); //Remove focus from the child
+ if(bWasMaximized)leaveSDIMode();
+ }
+ updateContentsSize();
+}
+
+void KviMdiManager::childRestored(KviMdiChild * lpC,bool bWasMaximized)
+{
+ if(bWasMaximized)
+ {
+ if(lpC != m_pZ->last())return; // do nothing in this case
+ leaveSDIMode();
+ updateContentsSize();
+ }
+ if(KVI_OPTION_BOOL(KviOption_boolAutoTileWindows))tile();
+}
+
+void KviMdiManager::focusTopChild()
+{
+ KviMdiChild *lpC=m_pZ->last();
+ if(!lpC)return;
+ if(!lpC->isVisible())return;
+ // if(lpC->state()==KviMdiChild::Minimized)return;
+ // debug("Focusing top child %s",lpC->name());
+ //disable the labels of all the other children
+ for(KviMdiChild *pC=m_pZ->first();pC;pC=m_pZ->next())
+ {
+ if(pC != lpC)
+ pC->captionLabel()->setActive(false);
+ }
+ lpC->raise();
+ if(!lpC->hasFocus())lpC->setFocus();
+}
+
+void KviMdiManager::minimizeActiveChild()
+{
+ KviMdiChild * lpC = m_pZ->last();
+ if(!lpC)return;
+ if(lpC->state() != KviMdiChild::Minimized)lpC->minimize();
+}
+
+void KviMdiManager::restoreActiveChild()
+{
+ KviMdiChild * lpC = m_pZ->last();
+ if(!lpC)return;
+ if(lpC->state() == KviMdiChild::Maximized)lpC->restore();
+}
+
+void KviMdiManager::closeActiveChild()
+{
+ KviMdiChild * lpC = m_pZ->last();
+ if(!lpC)return;
+ lpC->closeRequest();
+}
+
+void KviMdiManager::updateContentsSize()
+{
+ KviMdiChild * c = m_pZ->last();
+ if(c)
+ {
+ if(c->state() == KviMdiChild::Maximized)
+ {
+ return;
+ }
+ }
+
+ int fw = frameWidth() * 2;
+ int mx = width() - fw;
+ int my = height() - fw;
+
+ for(c = m_pZ->first();c;c = m_pZ->next())
+ {
+ if(c->isVisible())
+ {
+ int x = childX(c) + c->width();
+ if(x > mx)mx = x;
+ int y = childY(c) + c->height();
+ if(y > my)my = y;
+ }
+ }
+
+ resizeContents(mx,my);
+}
+
+
+void KviMdiManager::updateSDIMode()
+{
+
+ KviMdiChild * lpC = m_pZ->last();
+
+ if(m_pSdiCloseButton)
+ m_pSdiCloseButton->setEnabled(lpC ? lpC->closeEnabled() : false);
+
+// This would result in an addictional main menu bar entry on MacOSX which would trigger a popup menu and not
+// a submenu. Due to the optical reasons it is removed here.
+// The same popup is triggered by right clicking on the window name in the channel window list.
+#ifndef Q_OS_MACX
+ KviMenuBar * b = m_pFrm->mainMenuBar();
+
+ const QPixmap * pix = lpC ? lpC->icon() : 0;
+ if(!pix)pix = g_pIconManager->getSmallIcon(KVI_SMALLICON_NONE);
+ else if(pix->isNull())pix = g_pIconManager->getSmallIcon(KVI_SMALLICON_NONE);
+
+ if(!m_pSdiIconButton)
+ {
+ m_pSdiIconButton = new KviMenuBarToolButton(b,*pix,"nonne");
+ connect(m_pSdiIconButton,SIGNAL(clicked()),this,SLOT(activeChildSystemPopup()));
+#ifdef COMPILE_USE_QT4
+ // This is an obscure, undocumented and internal function in QT4 QMenuBar
+ // I won't be surprised if this disappears....
+ b->setCornerWidget(m_pSdiIconButton,Qt::TopLeftCorner);
+ m_pSdiIconButton->show();
+#else
+ m_iSdiIconItemId = b->insertItem(m_pSdiIconButton,-1,0);
+#endif
+ connect(m_pSdiIconButton,SIGNAL(destroyed()),this,SLOT(sdiIconButtonDestroyed()));
+ } else {
+ m_pSdiIconButton->setPixmap(*pix);
+ }
+#endif //Q_OS_MACX
+}
+
+void KviMdiManager::activeChildSystemPopup()
+{
+ KviMdiChild * lpC = m_pZ->last();
+ if(!lpC)return;
+ QPoint pnt;
+ if(m_pSdiIconButton)
+ {
+ pnt = m_pSdiIconButton->mapToGlobal(QPoint(0,m_pSdiIconButton->height()));
+ } else {
+ pnt = QCursor::pos();
+ }
+ lpC->emitSystemPopupRequest(pnt);
+}
+
+bool KviMdiManager::isInSDIMode()
+{
+ return (m_pSdiCloseButton != 0);
+}
+
+
+void KviMdiManager::enterSDIMode(KviMdiChild *lpC)
+{
+ if(!m_pSdiCloseButton)
+ {
+ KviMenuBar * b = m_pFrm->mainMenuBar();
+
+ QWidget * pButtonParent;
+
+#ifdef COMPILE_USE_QT4
+ m_pSdiControls = new KviTalHBox(b);
+ m_pSdiControls->setMargin(0);
+ m_pSdiControls->setSpacing(2);
+ m_pSdiControls->setAutoFillBackground(false);
+ pButtonParent = m_pSdiControls;
+#else
+ pButtonParent = b;
+#endif
+ m_pSdiMinimizeButton = new KviMenuBarToolButton(pButtonParent,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_MINIMIZE)),"btnminimize");
+ connect(m_pSdiMinimizeButton,SIGNAL(clicked()),this,SLOT(minimizeActiveChild()));
+#ifndef COMPILE_USE_QT4
+ m_iSdiMinimizeItemId = b->insertItem(m_pSdiMinimizeButton,-1,b->count());
+#endif
+ connect(m_pSdiMinimizeButton,SIGNAL(destroyed()),this,SLOT(sdiMinimizeButtonDestroyed()));
+
+ m_pSdiRestoreButton = new KviMenuBarToolButton(pButtonParent,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_RESTORE)),"btnrestore");
+ connect(m_pSdiRestoreButton,SIGNAL(clicked()),this,SLOT(restoreActiveChild()));
+#ifndef COMPILE_USE_QT4
+ m_iSdiRestoreItemId = b->insertItem(m_pSdiRestoreButton,-1,b->count());
+#endif
+ connect(m_pSdiRestoreButton,SIGNAL(destroyed()),this,SLOT(sdiRestoreButtonDestroyed()));
+
+ m_pSdiCloseButton = new KviMenuBarToolButton(pButtonParent,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CLOSE)),"btnclose");
+ connect(m_pSdiCloseButton,SIGNAL(clicked()),this,SLOT(closeActiveChild()));
+#ifndef COMPILE_USE_QT4
+ m_iSdiCloseItemId = b->insertItem(m_pSdiCloseButton,-1,b->count());
+#endif
+ connect(m_pSdiCloseButton,SIGNAL(destroyed()),this,SLOT(sdiCloseButtonDestroyed()));
+
+#ifdef COMPILE_USE_QT4
+ // This is an obscure, undocumented and internal function in QT4 QMenuBar
+ // I won't be surprised if this disappears....
+ b->setCornerWidget(m_pSdiControls,Qt::TopRightCorner);
+ // The show below SHOULD force a re-layout of the menubar..
+ // but it doesn't work when the KviFrame is still hidden (at startup)
+ // We handle this BUG in showEvent()
+ m_pSdiControls->show();
+#else
+ m_pSdiRestoreButton->show();
+ m_pSdiMinimizeButton->show();
+ m_pSdiCloseButton->show();
+#endif
+ emit enteredSdiMode();
+
+ setVScrollBarMode(KviTalScrollView::AlwaysOff);
+ setHScrollBarMode(KviTalScrollView::AlwaysOff);
+ }
+
+ updateSDIMode();
+}
+void KviMdiManager::relayoutMenuButtons()
+{
+#ifdef COMPILE_USE_QT4
+ // force a re-layout of the menubar in Qt4 (see the note in enterSDIMode())
+ // by resetting the corner widget
+ if(m_pSdiControls)
+ {
+ m_pFrm->mainMenuBar()->setCornerWidget(0,Qt::TopRightCorner);
+ m_pFrm->mainMenuBar()->setCornerWidget(m_pSdiControls,Qt::TopRightCorner);
+ }
+ // also force an activation of the top MdiChild since it probably didn't get it yet
+ KviMdiChild * c = topChild();
+ if(c)
+ c->activate(false);
+#endif
+}
+
+
+void KviMdiManager::sdiIconButtonDestroyed()
+{
+ m_iSdiIconItemId = 0;
+ m_pSdiIconButton = 0;
+}
+
+void KviMdiManager::sdiMinimizeButtonDestroyed()
+{
+ m_iSdiMinimizeItemId = 0;
+ m_pSdiMinimizeButton = 0;
+}
+
+void KviMdiManager::sdiRestoreButtonDestroyed()
+{
+ m_iSdiRestoreItemId = 0;
+ m_pSdiRestoreButton = 0;
+}
+
+void KviMdiManager::sdiCloseButtonDestroyed()
+{
+ m_iSdiCloseItemId = 0;
+ m_pSdiCloseButton = 0;
+}
+
+void KviMdiManager::leaveSDIMode()
+{
+ __range_valid(m_pSdiCloseButton);
+
+#ifdef COMPILE_USE_QT4
+ if(m_pSdiControls)
+ {
+ delete m_pSdiControls;
+ m_pSdiControls = 0;
+ }
+ if(m_pSdiIconButton)
+ {
+ m_pSdiIconButton->hide(); // this will force a QMenuBar relayout
+ delete m_pSdiIconButton;
+ m_pSdiIconButton = 0;
+ }
+#else
+ if(m_iSdiIconItemId != 0)m_pFrm->mainMenuBar()->removeItem(m_iSdiIconItemId);
+ if(m_iSdiCloseItemId != 0)m_pFrm->mainMenuBar()->removeItem(m_iSdiCloseItemId);
+ if(m_iSdiRestoreItemId != 0)m_pFrm->mainMenuBar()->removeItem(m_iSdiRestoreItemId);
+ if(m_iSdiMinimizeItemId != 0)m_pFrm->mainMenuBar()->removeItem(m_iSdiMinimizeItemId);
+#endif
+
+ setVScrollBarMode(KviTalScrollView::Auto);
+ setHScrollBarMode(KviTalScrollView::Auto);
+
+ emit leftSdiMode();
+}
+
+#define KVI_TILE_METHOD_ANODINE 0
+#define KVI_TILE_METHOD_PRAGMA4HOR 1
+#define KVI_TILE_METHOD_PRAGMA4VER 2
+#define KVI_TILE_METHOD_PRAGMA6HOR 3
+#define KVI_TILE_METHOD_PRAGMA6VER 4
+#define KVI_TILE_METHOD_PRAGMA9HOR 5
+#define KVI_TILE_METHOD_PRAGMA9VER 6
+
+#define KVI_NUM_TILE_METHODS 7
+
+void KviMdiManager::fillWindowPopup()
+{
+ m_pWindowPopup->clear();
+
+ m_pWindowPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CASCADEWINDOWS)),(__tr2qs("&Cascade Windows")),this,SLOT(cascadeWindows()));
+ m_pWindowPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CASCADEWINDOWS)),(__tr2qs("Cascade &Maximized")),this,SLOT(cascadeMaximized()));
+
+ m_pWindowPopup->insertSeparator();
+ m_pWindowPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TILEWINDOWS)),(__tr2qs("&Tile Windows")),this,SLOT(tile()));
+
+ m_pTileMethodPopup->clear();
+ int id = m_pTileMethodPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_AUTOTILEWINDOWS)),(__tr2qs("&Auto Tile")),this,SLOT(toggleAutoTile()));
+ m_pTileMethodPopup->setItemChecked(id,KVI_OPTION_BOOL(KviOption_boolAutoTileWindows));
+ m_pTileMethodPopup->setItemParameter(id,-1);
+ m_pTileMethodPopup->insertSeparator();
+ int ids[KVI_NUM_TILE_METHODS];
+ ids[KVI_TILE_METHOD_ANODINE] = m_pTileMethodPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TILEWINDOWS)),(__tr2qs("Anodine's Full Grid")));
+ m_pTileMethodPopup->setItemParameter(ids[KVI_TILE_METHOD_ANODINE],KVI_TILE_METHOD_ANODINE);
+ ids[KVI_TILE_METHOD_PRAGMA4HOR] = m_pTileMethodPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TILEWINDOWS)),(__tr2qs("Pragma's Horizontal 4-Grid")));
+ m_pTileMethodPopup->setItemParameter(ids[KVI_TILE_METHOD_PRAGMA4HOR],KVI_TILE_METHOD_PRAGMA4HOR);
+ ids[KVI_TILE_METHOD_PRAGMA4VER] = m_pTileMethodPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TILEWINDOWS)),(__tr2qs("Pragma's Vertical 4-Grid")));
+ m_pTileMethodPopup->setItemParameter(ids[KVI_TILE_METHOD_PRAGMA4VER],KVI_TILE_METHOD_PRAGMA4VER);
+ ids[KVI_TILE_METHOD_PRAGMA6HOR] = m_pTileMethodPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TILEWINDOWS)),(__tr2qs("Pragma's Horizontal 6-Grid")));
+ m_pTileMethodPopup->setItemParameter(ids[KVI_TILE_METHOD_PRAGMA6HOR],KVI_TILE_METHOD_PRAGMA6HOR);
+ ids[KVI_TILE_METHOD_PRAGMA6VER] = m_pTileMethodPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TILEWINDOWS)),(__tr2qs("Pragma's Vertical 6-Grid")));
+ m_pTileMethodPopup->setItemParameter(ids[KVI_TILE_METHOD_PRAGMA6VER],KVI_TILE_METHOD_PRAGMA6VER);
+ ids[KVI_TILE_METHOD_PRAGMA9HOR] = m_pTileMethodPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TILEWINDOWS)),(__tr2qs("Pragma's Horizontal 9-Grid")));
+ m_pTileMethodPopup->setItemParameter(ids[KVI_TILE_METHOD_PRAGMA9HOR],KVI_TILE_METHOD_PRAGMA9HOR);
+ ids[KVI_TILE_METHOD_PRAGMA9VER] = m_pTileMethodPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TILEWINDOWS)),(__tr2qs("Pragma's Vertical 9-Grid")));
+ m_pTileMethodPopup->setItemParameter(ids[KVI_TILE_METHOD_PRAGMA9VER],KVI_TILE_METHOD_PRAGMA9VER);
+
+ if(KVI_OPTION_UINT(KviOption_uintTileMethod) >= KVI_NUM_TILE_METHODS)KVI_OPTION_UINT(KviOption_uintTileMethod) = KVI_TILE_METHOD_PRAGMA9HOR;
+ m_pTileMethodPopup->setItemChecked(ids[KVI_OPTION_UINT(KviOption_uintTileMethod)],true);
+
+ m_pWindowPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TILEWINDOWS)),(__tr2qs("Tile Met&hod")),m_pTileMethodPopup);
+
+ m_pWindowPopup->insertSeparator();
+ m_pWindowPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_MAXVERTICAL)),(__tr2qs("Expand &Vertically")),this,SLOT(expandVertical()));
+ m_pWindowPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_MAXHORIZONTAL)),(__tr2qs("Expand &Horizontally")),this,SLOT(expandHorizontal()));
+
+ m_pWindowPopup->insertSeparator();
+ m_pWindowPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_MINIMIZE)),(__tr2qs("Mi&nimize All")),this,SLOT(minimizeAll()));
+// m_pWindowPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_RESTORE)),(__tr2qs("&Restore all")),this,SLOT(restoreAll()));
+//
+ m_pWindowPopup->insertSeparator();
+ int i=100;
+ QString szItem;
+ QString szCaption;
+ for(KviMdiChild *lpC=m_pZ->first();lpC;lpC=m_pZ->next())
+ {
+ szItem.setNum(((uint)i)-99);
+ szItem+=". ";
+
+ szCaption = lpC->plainCaption();
+ if(szCaption.length() > 30)
+ {
+ QString trail = szCaption.right(12);
+ szCaption.truncate(12);
+ szCaption+="...";
+ szCaption+=trail;
+ }
+
+ if(lpC->state()==KviMdiChild::Minimized)
+ {
+ szItem+="(";
+ szItem+=szCaption;
+ szItem+=")";
+ } else szItem+=szCaption;
+ const QPixmap * pix = lpC->icon();
+ if(pix && !(pix->isNull()))m_pWindowPopup->insertItem(*pix,szItem,i);
+ else m_pWindowPopup->insertItem(szItem,i);
+ m_pWindowPopup->setItemChecked(i,((uint)i)==(m_pZ->count()+99));
+ i++;
+ }
+}
+
+void KviMdiManager::menuActivated(int id)
+{
+ if(id<100)return;
+ id-=100;
+ __range_valid(((uint)id) < m_pZ->count());
+ KviMdiChild *lpC=m_pZ->at(id);
+ if(!lpC)return;
+ if(lpC->state()==KviMdiChild::Minimized)lpC->restore();
+ setTopChild(lpC,true);
+}
+
+void KviMdiManager::ensureNoMaximized()
+{
+ KviMdiChild * lpC;
+
+ for(lpC=m_pZ->first();lpC;lpC=m_pZ->next())
+ {
+ if(lpC->state()==KviMdiChild::Maximized)lpC->restore();
+ }
+}
+
+void KviMdiManager::tileMethodMenuActivated(int id)
+{
+ int idx = m_pTileMethodPopup->itemParameter(id);
+ if(idx < 0)idx = 0;
+ if(idx >= KVI_NUM_TILE_METHODS)idx = KVI_TILE_METHOD_PRAGMA9VER;
+ KVI_OPTION_UINT(KviOption_uintTileMethod) = idx;
+ if(KVI_OPTION_BOOL(KviOption_boolAutoTileWindows))tile();
+}
+
+void KviMdiManager::cascadeWindows()
+{
+ ensureNoMaximized();
+ // this hack is needed to ensure that the scrollbars are hidden and the viewport()->width() and height() are correct
+ resizeContents(visibleWidth(),visibleHeight());
+ updateScrollBars();
+ g_pApp->sendPostedEvents();
+ if(g_pApp->closingDown())return;
+
+ int idx=0;
+ KviPointerList<KviMdiChild> list(*m_pZ);
+ list.setAutoDelete(false);
+ while(!list.isEmpty())
+ {
+ KviMdiChild *lpC=list.first();
+ if(lpC->state() != KviMdiChild::Minimized)
+ {
+ QPoint p = getCascadePoint(idx);
+ moveChild(lpC,p.x(),p.y());
+ lpC->resize(lpC->sizeHint());
+ idx++;
+ }
+ list.removeFirst();
+ }
+ focusTopChild();
+ updateContentsSize();
+}
+
+void KviMdiManager::cascadeMaximized()
+{
+ ensureNoMaximized();
+ // this hack is needed to ensure that the scrollbars are hidden and the viewport()->width() and height() are correct
+ resizeContents(visibleWidth(),visibleHeight());
+ updateScrollBars();
+ g_pApp->sendPostedEvents();
+ if(g_pApp->closingDown())return;
+
+ int idx=0;
+ KviPointerList<KviMdiChild> list(*m_pZ);
+
+ list.setAutoDelete(false);
+ while(!list.isEmpty())
+ {
+ KviMdiChild *lpC=list.first();
+ if(lpC->state() != KviMdiChild::Minimized)
+ {
+ QPoint pnt(getCascadePoint(idx));
+ moveChild(lpC,pnt.x(),pnt.y());
+ QSize curSize(viewport()->width() - pnt.x(),viewport()->height() - pnt.y());
+ if((lpC->minimumSize().width() > curSize.width()) ||
+ (lpC->minimumSize().height() > curSize.height()))lpC->resize(lpC->minimumSize());
+ else lpC->resize(curSize);
+ idx++;
+ }
+ list.removeFirst();
+ }
+ focusTopChild();
+ updateContentsSize();
+}
+
+void KviMdiManager::expandVertical()
+{
+ ensureNoMaximized();
+ // this hack is needed to ensure that the scrollbars are hidden and the viewport()->width() and height() are correct
+ resizeContents(visibleWidth(),visibleHeight());
+ updateScrollBars();
+ g_pApp->sendPostedEvents();
+ if(g_pApp->closingDown())return;
+
+ KviPointerList<KviMdiChild> list(*m_pZ);
+ list.setAutoDelete(false);
+ while(!list.isEmpty())
+ {
+ KviMdiChild *lpC=list.first();
+ if(lpC->state() != KviMdiChild::Minimized)
+ {
+ moveChild(lpC,lpC->x(),0);
+ lpC->resize(lpC->width(),viewport()->height());
+ }
+ list.removeFirst();
+ }
+
+ focusTopChild();
+ updateContentsSize();
+}
+
+void KviMdiManager::expandHorizontal()
+{
+ ensureNoMaximized();
+ // this hack is needed to ensure that the scrollbars are hidden and the viewport()->width() and height() are correct
+ resizeContents(visibleWidth(),visibleHeight());
+ updateScrollBars();
+ g_pApp->sendPostedEvents();
+ if(g_pApp->closingDown())return;
+
+ KviPointerList<KviMdiChild> list(*m_pZ);
+ list.setAutoDelete(false);
+ while(!list.isEmpty())
+ {
+ KviMdiChild *lpC=list.first();
+ if(lpC->state() != KviMdiChild::Minimized)
+ {
+ moveChild(lpC,0,lpC->y());
+ lpC->resize(viewport()->width(),lpC->height());
+ }
+ list.removeFirst();
+ }
+ focusTopChild();
+ updateContentsSize();
+}
+
+void KviMdiManager::minimizeAll()
+{
+ KviPointerList<KviMdiChild> list(*m_pZ);
+ list.setAutoDelete(false);
+ m_pFrm->setActiveWindow((KviWindow*)m_pFrm->firstConsole());
+ while(!list.isEmpty())
+ {
+ KviMdiChild *lpC=list.first();
+ if(lpC->state() != KviMdiChild::Minimized)lpC->minimize();
+ list.removeFirst();
+ }
+ focusTopChild();
+ updateContentsSize();
+}
+
+/*
+void KviMdiManager::restoreAll()
+{
+ int idx=0;
+ KviPointerList<KviMdiChild> list(*m_pZ);
+ list.setAutoDelete(false);
+ while(!list.isEmpty())
+ {
+ KviMdiChild *lpC=list.first();
+ if(lpC->state() != KviMdiChild::Normal && (!(lpC->plainCaption()).contains("CONSOLE") ))
+ lpC->restore();
+ list.removeFirst();
+ }
+ focusTopChild();
+ updateContentsSize();
+}
+*/
+
+int KviMdiManager::getVisibleChildCount()
+{
+ int cnt=0;
+ for(KviMdiChild *lpC=m_pZ->first();lpC;lpC=m_pZ->next())
+ {
+ if(lpC->state() != KviMdiChild::Minimized)cnt++;
+ }
+ return cnt;
+}
+
+void KviMdiManager::tile()
+{
+ switch(KVI_OPTION_UINT(KviOption_uintTileMethod))
+ {
+ case KVI_TILE_METHOD_ANODINE: tileAnodine(); break;
+ case KVI_TILE_METHOD_PRAGMA4HOR: tileAllInternal(4,true); break;
+ case KVI_TILE_METHOD_PRAGMA4VER: tileAllInternal(4,false); break;
+ case KVI_TILE_METHOD_PRAGMA6HOR: tileAllInternal(6,true); break;
+ case KVI_TILE_METHOD_PRAGMA6VER: tileAllInternal(6,false); break;
+ case KVI_TILE_METHOD_PRAGMA9HOR: tileAllInternal(9,true); break;
+ case KVI_TILE_METHOD_PRAGMA9VER: tileAllInternal(9,false); break;
+ default:
+ KVI_OPTION_UINT(KviOption_uintTileMethod) = KVI_TILE_METHOD_PRAGMA9HOR;
+ tileAllInternal(9,true);
+ break;
+ }
+}
+
+void KviMdiManager::toggleAutoTile()
+{
+ if(KVI_OPTION_BOOL(KviOption_boolAutoTileWindows))
+ {
+ KVI_OPTION_BOOL(KviOption_boolAutoTileWindows) = false;
+ } else {
+ KVI_OPTION_BOOL(KviOption_boolAutoTileWindows) = true;
+ tile();
+ }
+}
+
+
+void KviMdiManager::tileAllInternal(int maxWnds,bool bHorizontal)
+{
+ //NUM WINDOWS = 1,2,3,4,5,6,7,8,9
+ static int colstable[9]={ 1,1,1,2,2,2,3,3,3 }; //num columns
+ static int rowstable[9]={ 1,2,3,2,3,3,3,3,3 }; //num rows
+ static int lastwindw[9]={ 1,1,1,1,2,1,3,2,1 }; //last window multiplier
+ static int colrecall[9]={ 0,0,0,3,3,3,6,6,6 }; //adjust self
+ static int rowrecall[9]={ 0,0,0,0,4,4,4,4,4 }; //adjust self
+
+ int * pColstable = bHorizontal ? colstable : rowstable;
+ int * pRowstable = bHorizontal ? rowstable : colstable;
+ int * pColrecall = bHorizontal ? colrecall : rowrecall;
+ int * pRowrecall = bHorizontal ? rowrecall : colrecall;
+
+ ensureNoMaximized();
+ // this hack is needed to ensure that the scrollbars are hidden and the viewport()->width() and height() are correct
+ resizeContents(visibleWidth(),visibleHeight());
+ updateScrollBars();
+ g_pApp->sendPostedEvents();
+ if(g_pApp->closingDown())return;
+
+ KviMdiChild *lpTop=topChild();
+ int numVisible=getVisibleChildCount();
+
+ if(numVisible<1)return;
+
+ int numToHandle=((numVisible > maxWnds) ? maxWnds : numVisible);
+ int xQuantum=viewport()->width()/pColstable[numToHandle-1];
+ if(xQuantum < ((lpTop->minimumSize().width() > KVI_MDICHILD_MIN_WIDTH) ? lpTop->minimumSize().width() : KVI_MDICHILD_MIN_WIDTH)){
+ if(pColrecall[numToHandle-1]==0)debug("Tile : Not enouh space");
+ else tileAllInternal(pColrecall[numToHandle-1],bHorizontal);
+ return;
+ }
+ int yQuantum=viewport()->height()/pRowstable[numToHandle-1];
+ if(yQuantum < ((lpTop->minimumSize().height() > KVI_MDICHILD_MIN_HEIGHT) ? lpTop->minimumSize().height() : KVI_MDICHILD_MIN_HEIGHT)){
+ if(pRowrecall[numToHandle-1]==0)debug("Tile : Not enough space");
+ else tileAllInternal(pRowrecall[numToHandle-1],bHorizontal);
+ return;
+ }
+ int curX=0;
+ int curY=0;
+ int curRow=1;
+ int curCol=1;
+ int curWin=1;
+
+ for(KviMdiChild * lpC=m_pZ->first();lpC;lpC=m_pZ->next())
+ {
+ if(lpC->state()!=KviMdiChild::Minimized)
+ {
+ if((curWin%numToHandle)==0)
+ {
+ moveChild(lpC,curX,curY);
+ lpC->resize(xQuantum * lastwindw[numToHandle-1],yQuantum);
+ } else {
+ moveChild(lpC,curX,curY);
+ lpC->resize(xQuantum,yQuantum);
+ }
+ //example : 12 windows : 3 cols 3 rows
+ if(curCol<pColstable[numToHandle-1])
+ { //curCol<3
+ curX+=xQuantum; //add a column in the same row
+ curCol++; //increase current column
+ } else {
+ curX=0; //new row
+ curCol=1; //column 1
+ if(curRow<pRowstable[numToHandle-1])
+ { //curRow<3
+ curY+=yQuantum; //add a row
+ curRow++; //
+ } else {
+ curY=0; //restart from beginning
+ curRow=1; //
+ }
+ }
+ curWin++;
+ }
+ }
+ if(lpTop)lpTop->setFocus();
+ updateContentsSize();
+}
+
+void KviMdiManager::tileAnodine()
+{
+ ensureNoMaximized();
+ // this hack is needed to ensure that the scrollbars are hidden and the viewport()->width() and height() are correct
+ resizeContents(visibleWidth(),visibleHeight());
+ updateScrollBars();
+ g_pApp->sendPostedEvents();
+ if(g_pApp->closingDown())return;
+
+ KviMdiChild *lpTop=topChild();
+ int numVisible=getVisibleChildCount(); // count visible windows
+ if(numVisible<1)return;
+ int numCols=int(sqrt((double)numVisible)); // set columns to square root of visible count
+ // create an array to form grid layout
+ int *numRows=new int[numCols];
+ int numCurCol=0;
+ while(numCurCol<numCols)
+ {
+ numRows[numCurCol]=numCols; // create primary grid values
+ numCurCol++;
+ }
+ int numDiff=numVisible-(numCols*numCols); // count extra rows
+ int numCurDiffCol=numCols; // set column limiting for grid updates
+ while(numDiff>0)
+ {
+ numCurDiffCol--;
+ numRows[numCurDiffCol]++; // add extra rows to column grid
+ if(numCurDiffCol<1)numCurDiffCol=numCols; // rotate through the grid
+ numDiff--;
+ }
+ numCurCol=0;
+ int numCurRow=0;
+ int curX=0;
+ int curY=0;
+ // the following code will size everything based on my grid above
+ // there is no limit to the number of windows it will handle
+ // it's great when a kick-ass theory works!!! // Pragma :)
+ int xQuantum=viewport()->width()/numCols;
+ int yQuantum=viewport()->height()/numRows[numCurCol];
+
+ for(KviMdiChild * lpC=m_pZ->first();lpC;lpC=m_pZ->next())
+ {
+ if(lpC->state() != KviMdiChild::Minimized)
+ {
+ moveChild(lpC,curX,curY);
+ lpC->resize(xQuantum,yQuantum);
+ numCurRow++;
+ curY+=yQuantum;
+ if(numCurRow==numRows[numCurCol])
+ {
+ numCurRow=0;
+ numCurCol++;
+ curY=0;
+ curX+=xQuantum;
+ if(numCurCol!=numCols)yQuantum=viewport()->height()/numRows[numCurCol];
+ }
+ }
+ }
+ delete[] numRows;
+ if(lpTop)lpTop->setFocus();
+ updateContentsSize();
+}
+
+
diff --git a/src/kvirc/ui/kvi_mdimanager.h b/src/kvirc/ui/kvi_mdimanager.h
new file mode 100644
index 00000000..17202fa0
--- /dev/null
+++ b/src/kvirc/ui/kvi_mdimanager.h
@@ -0,0 +1,144 @@
+#ifndef _KVI_MDIMANAGER_H_
+#define _KVI_MDIMANAGER_H_
+//=============================================================================
+//
+// File : kvi_mdimanager.h
+// Creation date : Wed Jun 21 2000 17:28:04 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "kvi_settings.h"
+#include "kvi_pointerlist.h"
+
+#include <qwidget.h>
+#include <qframe.h>
+#include <qpixmap.h>
+#include <qtoolbutton.h>
+
+#include "kvi_tal_scrollview.h"
+
+#define KVI_MDICHILD_BORDER 4
+#define KVI_MDICHILD_SPACING 2
+#define KVI_MDICHILD_MIN_WIDTH 100
+#define KVI_MDICHILD_MIN_HEIGHT 40
+#define KVI_MDICHILD_HIDDEN_EDGE 3
+
+#ifdef COMPILE_ON_WINDOWS
+ #include "kvi_mdichild.h"
+#else
+ class KviMdiChild;
+#endif
+//class KviMdiCaptionButton;
+class KviFrame;
+
+class KviTalPopupMenu;
+class KviTalHBox;
+class KviSdiButtonBox;
+class KviMenuBarToolButton;
+
+class KVIRC_API KviMdiManager : public KviTalScrollView
+{
+ friend class KviMdiChild;
+ friend class KviMdiCaption;
+ Q_OBJECT
+public:
+ KviMdiManager(QWidget * parent,KviFrame * pFrm,const char * name);
+ ~KviMdiManager();
+public:
+ KviMdiChild * topChild(){ return m_pZ->last(); };
+ KviMdiChild * highestChildExcluding(KviMdiChild * pChild);
+ void manageChild(KviMdiChild * lpC,bool bCascade = true,QRect * setGeom = 0);
+ void setTopChild(KviMdiChild *lpC,bool bSetFocus);
+ void showAndActivate(KviMdiChild * lpC);
+ KviTalPopupMenu * windowPopup(){ return m_pWindowPopup; };
+ void focusTopChild();
+ void destroyChild(KviMdiChild *lpC,bool bFocusTopChild = true);
+ int getVisibleChildCount();
+ bool isInSDIMode();
+protected:
+ KviPointerList<KviMdiChild> * m_pZ; // topmost child is the last in the list
+
+ KviMenuBarToolButton * m_pSdiRestoreButton;
+ KviMenuBarToolButton * m_pSdiMinimizeButton;
+ KviMenuBarToolButton * m_pSdiCloseButton;
+ KviMenuBarToolButton * m_pSdiIconButton;
+
+#ifdef COMPILE_USE_QT4
+ KviTalHBox * m_pSdiControls;
+#endif
+ int m_iSdiIconItemId;
+ int m_iSdiRestoreItemId;
+ int m_iSdiMinimizeItemId;
+ int m_iSdiCloseItemId;
+
+ KviTalPopupMenu * m_pWindowPopup;
+ KviTalPopupMenu * m_pTileMethodPopup;
+ KviFrame * m_pFrm;
+protected:
+ void updateContentsSize();
+ //void childMaximized(KviMdiChild *lpC);
+ void childMinimized(KviMdiChild *lpC,bool bWasMaximized);
+ void childRestored(KviMdiChild *lpC,bool bWasMaximized);
+ void childMoved(KviMdiChild * lpC);
+ void maximizeChild(KviMdiChild * lpC);
+ virtual void focusInEvent(QFocusEvent *e);
+ virtual void mousePressEvent(QMouseEvent *e);
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual void drawContents(QPainter * p,int x,int y,int w,int h);
+ virtual bool focusNextPrevChild(bool pNext);
+public slots:
+ void relayoutMenuButtons();
+ void cascadeWindows();
+ void cascadeMaximized();
+ void expandVertical();
+ void expandHorizontal();
+ void minimizeAll();
+// void restoreAll(); <-- this does nothing
+ void tile();
+ void toggleAutoTile();
+
+ void tileAnodine();
+ void reloadImages();
+protected slots:
+ void minimizeActiveChild();
+ void restoreActiveChild();
+ void closeActiveChild();
+ void activeChildSystemPopup();
+ void menuActivated(int id);
+ void tileMethodMenuActivated(int id);
+ void fillWindowPopup();
+ void sdiMinimizeButtonDestroyed();
+ void sdiRestoreButtonDestroyed();
+ void sdiCloseButtonDestroyed();
+ void sdiIconButtonDestroyed();
+private:
+ void ensureNoMaximized();
+ void tileAllInternal(int maxWnds,bool bHorizontal);
+ QPoint getCascadePoint(int indexOfWindow);
+ void enterSDIMode(KviMdiChild *lpC);
+ void leaveSDIMode();
+ void updateSDIMode();
+signals:
+ void enteredSdiMode();
+ void leftSdiMode();
+};
+
+#endif //_KVI_MDIMANAGER_H_
diff --git a/src/kvirc/ui/kvi_menubar.cpp b/src/kvirc/ui/kvi_menubar.cpp
new file mode 100644
index 00000000..a382f738
--- /dev/null
+++ b/src/kvirc/ui/kvi_menubar.cpp
@@ -0,0 +1,415 @@
+//=============================================================================
+//
+// File : kvi_menubar.cpp
+// Creation date : Wen Jun 21 2000 13:12:11 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+#include "kvi_menubar.h"
+#include "kvi_app.h"
+#include "kvi_locale.h"
+#include "kvi_frame.h"
+#include "kvi_mdimanager.h"
+#include "kvi_iconmanager.h"
+#include "kvi_internalcmd.h"
+#include "kvi_settings.h"
+#include "kvi_ircurl.h"
+#include "kvi_console.h"
+#include "kvi_kvs_popupmenu.h"
+#include "kvi_malloc.h"
+#include "kvi_moduleextension.h"
+#include "kvi_actionmanager.h"
+#include "kvi_coreactionnames.h"
+#include "kvi_kvs_script.h"
+
+#include "kvi_tal_popupmenu.h"
+
+KviMenuBar::KviMenuBar(KviFrame * par,const char * name)
+ : KviTalMenuBar(par,name)
+{
+ m_pFrm = par;
+
+ m_iNumDefaultItems = 0;
+ m_pDefaultItemId = 0;
+
+ KviTalPopupMenu * pop = new KviTalPopupMenu(this,"KVIrc");
+ connect(pop,SIGNAL(aboutToShow()),this,SLOT(setupMainPopup()));
+#ifndef Q_OS_MACX
+ addDefaultItem("&KVIrc",pop);
+#else
+ // Qt/Mac creates already a "KVirc" menu item on its own, and we don't like double entries ;-)
+ addDefaultItem("&IRC",pop);
+#endif //Q_OS_MACX
+ m_pRecentServersPopup = new KviTalPopupMenu(this,"recentservers");
+ connect(m_pRecentServersPopup,SIGNAL(aboutToShow()),this,SLOT(setupRecentServersPopup()));
+ connect(m_pRecentServersPopup,SIGNAL(activated(int)),this,SLOT(newConnectionToServer(int)));
+
+ m_pScriptItemList = 0;
+
+ pop = new KviTalPopupMenu(this,"scripting");
+ connect(pop,SIGNAL(aboutToShow()),this,SLOT(setupScriptingPopup()));
+ addDefaultItem(__tr2qs("Scri&pting"),pop);
+
+ pop = new KviTalPopupMenu(this,"tools");
+ connect(pop,SIGNAL(aboutToShow()),this,SLOT(setupToolsPopup()));
+ connect(pop,SIGNAL(activated(int)),this,SLOT(toolsPopupSelected(int)));
+ addDefaultItem(__tr2qs("&Tools"),pop);
+
+ m_pToolbarsPopup = new KviTalPopupMenu(this,"toolbars");
+ connect(m_pToolbarsPopup,SIGNAL(aboutToShow()),this,SLOT(setupToolbarsPopup()));
+
+ pop = new KviTalPopupMenu(this,"settings");
+ connect(pop,SIGNAL(aboutToShow()),this,SLOT(setupSettingsPopup()));
+ addDefaultItem(__tr2qs("&Settings"),pop);
+
+ addDefaultItem(__tr2qs("&Window"),par->mdiManager()->windowPopup());
+
+ pop = new KviTalPopupMenu(this,"help");
+ connect(pop,SIGNAL(aboutToShow()),this,SLOT(setupHelpPopup()));
+ addDefaultItem(__tr2qs("&Help"),pop);
+}
+
+KviMenuBar::~KviMenuBar()
+{
+ if(m_pScriptItemList)delete m_pScriptItemList;
+ if(m_pDefaultItemId)kvi_free(m_pDefaultItemId);
+}
+
+void KviMenuBar::showEvent(QShowEvent *e)
+{
+#ifdef COMPILE_USE_QT4
+ debug("menubar show");
+ // force a re-layout of the menubar in Qt4 (see the note in enterSDIMode())
+ // by resetting the corner widget
+ m_pFrm->mdiManager()->relayoutMenuButtons();
+#endif
+}
+
+void KviMenuBar::addDefaultItem(const QString &text,KviTalPopupMenu * pop)
+{
+ m_iNumDefaultItems++;
+ m_pDefaultItemId = (int *)kvi_realloc((void *)m_pDefaultItemId,sizeof(int) * m_iNumDefaultItems);
+ m_pDefaultItemId[m_iNumDefaultItems - 1] = insertItem(text,pop);
+}
+
+void KviMenuBar::setupHelpPopup()
+{
+ KviTalPopupMenu * help = (KviTalPopupMenu *)sender();
+ help->clear();
+
+ // FIXME: Convert these to actions!
+ int id = help->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_HELP)),__tr2qs("&Help Browser (Panel)"),m_pFrm,SLOT(executeInternalCommand(int)));
+ help->setItemParameter(id,KVI_INTERNALCOMMAND_HELP_NEWSTATICWINDOW);
+ id = help->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_MDIHELP)),__tr2qs("Help Browser (&Window)"),m_pFrm,SLOT(executeInternalCommand(int)));
+ help->setItemParameter(id,KVI_INTERNALCOMMAND_HELP_NEWMDIWINDOW);
+ help->insertSeparator();
+ id = help->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_IDEA)),__tr2qs("&Tip of the Day"),m_pFrm,SLOT(executeInternalCommand(int)));
+ help->setItemParameter(id,KVI_INTERNALCOMMAND_TIP_OPEN);
+ help->insertSeparator();
+ id = help->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_KVIRC)),__tr2qs("About &KVIrc"),m_pFrm,SLOT(executeInternalCommand(int)));
+ help->setItemParameter(id,KVI_INTERNALCOMMAND_ABOUT_ABOUTKVIRC);
+ help->insertSeparator();
+ id = help->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_HOMEPAGE)),__tr2qs("KVIrc Home&page"),m_pFrm,SLOT(executeInternalCommand(int)));
+ help->setItemParameter(id,KVI_INTERNALCOMMAND_KVIRC_HOMEPAGE);
+ if(kvi_strEqualCIN(KviLocale::localeName(),"ru",2))
+ {
+ id = help->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_HOMEPAGE)),__tr2qs("KVIrc Russian Home&page"),m_pFrm,SLOT(executeInternalCommand(int)));
+ help->setItemParameter(id,KVI_INTERNALCOMMAND_KVIRC_HOMEPAGE_RU);
+ }
+ if(kvi_strEqualCIN(KviLocale::localeName(),"fr",2))
+ {
+ id = help->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_HOMEPAGE)),__tr2qs("KVIrc French Home&page"),m_pFrm,SLOT(executeInternalCommand(int)));
+ help->setItemParameter(id,KVI_INTERNALCOMMAND_KVIRC_HOMEPAGE_FR);
+ }
+ help->insertSeparator();
+ id = help->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_MESSAGE)),__tr2qs("Subscribe to the Mailing List"),m_pFrm,SLOT(executeInternalCommand(int)));
+ help->setItemParameter(id,KVI_INTERNALCOMMAND_OPENURL_KVIRC_MAILINGLIST);
+ id = help->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_BOMB)),__tr2qs("Report a Bug / Propose Improvements"),m_pFrm,SLOT(executeInternalCommand(int)));
+ help->setItemParameter(id,KVI_INTERNALCOMMAND_OPENURL_KVIRC_BUGTRACK);
+ help->insertSeparator();
+ id = help->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CHANNEL)),__tr2qs("Join KVIrc International Channel on Freenode"),m_pFrm,SLOT(executeInternalCommand(int)));
+ help->setItemParameter(id,KVI_INTERNALCOMMAND_OPENURL_KVIRC_ON_FREENODE);
+ id = help->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CHANNEL)),__tr2qs("Join KVIrc International Channel on IRCNet"),m_pFrm,SLOT(executeInternalCommand(int)));
+ help->setItemParameter(id,KVI_INTERNALCOMMAND_OPENURL_KVIRC_ON_IRCNET);
+ if(kvi_strEqualCIN(KviLocale::localeName(),"it",2))
+ {
+ // join #kvirc.net on azzurra
+ id = help->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CHANNEL)),__tr2qs("Join KVIrc Italian Channel on AzzurraNet"),m_pFrm,SLOT(executeInternalCommand(int)));
+ help->setItemParameter(id,KVI_INTERNALCOMMAND_OPENURL_KVIRC_IT_ON_AZZURRA);
+ }
+ if(kvi_strEqualCIN(KviLocale::localeName(),"fr",2))
+ {
+ // join #kvirc-fr on freenode
+ id = help->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CHANNEL)),__tr2qs("Join KVIrc French Channel on Freenode"),m_pFrm,SLOT(executeInternalCommand(int)));
+ help->setItemParameter(id,KVI_INTERNALCOMMAND_OPENURL_KVIRC_FR_ON_FREENODE);
+ // join #kvirc on europnet
+ id = help->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CHANNEL)),__tr2qs("Join KVIrc French Channel on EuropNet"),m_pFrm,SLOT(executeInternalCommand(int)));
+ help->setItemParameter(id,KVI_INTERNALCOMMAND_OPENURL_KVIRC_FR_ON_EUROPNET);
+ }
+ // add your localized #kvirc channels here...
+}
+
+void KviMenuBar::setupSettingsPopup()
+{
+ // FIXME: Move everything to actions!
+
+ KviTalPopupMenu * opt = (KviTalPopupMenu *)sender();
+ opt->clear();
+
+ opt->insertItem(__tr2qs("Toolbars"),m_pToolbarsPopup);
+
+ int id = opt->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_STATUSBAR)),__tr2qs("Show StatusBar"),m_pFrm,SLOT(toggleStatusBar()));
+ opt->setItemChecked(id,m_pFrm->mainStatusBar());
+
+
+ opt->insertSeparator();
+ // FIXME: #warning "Toggle these items on the fly ?"
+ ACTION_POPUP_ITEM(KVI_COREACTION_GENERALOPTIONS,opt)
+ ACTION_POPUP_ITEM(KVI_COREACTION_THEMEOPTIONS,opt)
+ ACTION_POPUP_ITEM(KVI_COREACTION_MANAGETHEMES,opt)
+ ACTION_POPUP_ITEM(KVI_COREACTION_MANAGEADDONS,opt)
+ ACTION_POPUP_ITEM(KVI_COREACTION_SERVEROPTIONS,opt)
+ ACTION_POPUP_ITEM(KVI_COREACTION_TOOLBAREDITOR,opt)
+ ACTION_POPUP_ITEM(KVI_COREACTION_EDITREGUSERS,opt)
+
+ opt->insertSeparator();
+ opt->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_FLOPPY)),__tr2qs("&Save Configuration"),g_pApp,SLOT(saveConfiguration()));
+}
+
+void KviMenuBar::setupScriptingPopup()
+{
+ KviTalPopupMenu * script = (KviTalPopupMenu *)sender();
+ script->clear();
+
+ ACTION_POPUP_ITEM(KVI_COREACTION_ACTIONEDITOR,script)
+ ACTION_POPUP_ITEM(KVI_COREACTION_ALIASEDITOR,script)
+ ACTION_POPUP_ITEM(KVI_COREACTION_EVENTEDITOR,script)
+ ACTION_POPUP_ITEM(KVI_COREACTION_POPUPEDITOR,script)
+ ACTION_POPUP_ITEM(KVI_COREACTION_RAWEDITOR,script)
+ script->insertSeparator();
+ ACTION_POPUP_ITEM(KVI_COREACTION_CODETESTER,script)
+ script->insertSeparator();
+ ACTION_POPUP_ITEM(KVI_COREACTION_EXECUTEKVS,script)
+
+ script->insertSeparator();
+ script->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TEXTEXCLAMATIVE)),__tr2qs("Restore &Default Script"),g_pApp,SLOT(restoreDefaultScript()));
+}
+
+void KviMenuBar::setupMainPopup()
+{
+ KviTalPopupMenu * main = (KviTalPopupMenu *)sender();
+ main->clear();
+
+ ACTION_POPUP_ITEM(KVI_COREACTION_NEWIRCCONTEXT,main)
+ if(m_pFrm->activeContext())
+ if(m_pFrm->activeContext()->state()==KviIrcContext::Connected)
+ {
+ int id = main->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_QUIT)),__tr2qs("Disconnect"),m_pFrm,SLOT(executeInternalCommand(int)));
+ main->setItemParameter(id,KVI_INTERNALCOMMAND_QUIT);
+ }
+ main->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_WORLD)),__tr2qs("New &Connection To"),m_pRecentServersPopup);
+
+ main->insertSeparator();
+
+ if(m_pFrm->dockExtension())
+ {
+ int id = main->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DOCKWIDGET)),__tr2qs("Hide &Dock Icon"),m_pFrm,SLOT(executeInternalCommand(int)));
+ main->setItemParameter(id,KVI_INTERNALCOMMAND_DOCKWIDGET_HIDE);
+ } else {
+ int id = main->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DOCKWIDGET)),__tr2qs("Show &Dock Icon"),m_pFrm,SLOT(executeInternalCommand(int)));
+ main->setItemParameter(id,KVI_INTERNALCOMMAND_DOCKWIDGET_SHOW);
+ }
+
+// Qt/Mac creates a Quit item on its own
+#ifndef Q_OS_MACX
+ main->insertSeparator();
+
+ main->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_QUITAPP)),__tr2qs("&Quit"),g_pApp,SLOT(quit()));
+#endif //Q_OS_MACX
+}
+
+
+void KviMenuBar::setupRecentServersPopup()
+{
+ KviTalPopupMenu * m = (KviTalPopupMenu *)sender();
+ g_pApp->fillRecentServersPopup(m);
+ m->insertSeparator();
+ m->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SERVER)),__tr2qs("&Other..."));
+}
+
+void KviMenuBar::newConnectionToServer(int id)
+{
+ QString text = m_pRecentServersPopup->text(id);
+ if(!text.isEmpty())
+ {
+ // the gentoo qt 3.3.4-r2 is broken
+ // since it adds random & characters to the popup texts...
+ if(text == __tr2qs("&Other..."))
+ {
+ KviKvsScript::run("options.edit KviServerOptionsWidget",m_pFrm->firstConsole());
+ } else {
+ text.replace(QString("&"),QString(""));
+ KviStr szCommand;
+ if(KviIrcUrl::parse(text.utf8().data(),szCommand,KVI_IRCURL_CONTEXT_NEW))
+ KviKvsScript::run(szCommand.ptr(),m_pFrm->firstConsole());
+ }
+ }
+}
+
+void KviMenuBar::setupToolsPopup()
+{
+ KviTalPopupMenu * m = (KviTalPopupMenu *)sender();
+ if(!m)return;
+
+ m->clear();
+
+ KviModuleExtensionDescriptorList * l = g_pModuleExtensionManager->getExtensionList("tool");
+ if(l)
+ {
+ for(KviModuleExtensionDescriptor * d = l->first();d;d = l->next())
+ {
+ int id;
+ if(d->icon())id = m->insertItem(*(d->icon()),d->visibleName());
+ else id = m->insertItem(d->visibleName());
+ //m->setItemChecked(id,(m_pFrm->moduleExtensionToolBar(d->id())));
+ m->setItemParameter(id,d->id());
+ }
+ }
+ m->insertSeparator();
+ ACTION_POPUP_ITEM(KVI_COREACTION_SOCKETSPY,m)
+ ACTION_POPUP_ITEM(KVI_COREACTION_NETWORKLINKS,m)
+ ACTION_POPUP_ITEM(KVI_COREACTION_CHANNELLIST,m)
+ m->insertSeparator();
+
+ ACTION_POPUP_ITEM(KVI_COREACTION_SCREENSHOT,m)
+
+ // moved the old tools here
+ m->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ICONMANAGER)),__tr2qs("Show &Icon Table"),g_pIconManager,SLOT(showIconWidget()));
+#ifdef COMPILE_KDE_SUPPORT
+ int id;
+ id = m->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TERMINAL)),__tr2qs("Open &Terminal"),m_pFrm,SLOT(executeInternalCommand(int)));
+ m->setItemParameter(id,KVI_INTERNALCOMMAND_TERM_OPEN);
+#endif
+
+
+ KviPointerList<KviAction> list;
+ KviActionManager::instance()->listActionsByCategory("tools",&list);
+ if(!list.isEmpty())
+ {
+ m->insertSeparator();
+ for(KviAction * ac = list.first();ac;ac = list.next())
+ ac->addToPopupMenu(m);
+ }
+}
+
+void KviMenuBar::toolsPopupSelected(int id)
+{
+ KviTalPopupMenu * m = (KviTalPopupMenu *)sender();
+ if(!m)return;
+ int idext = m->itemParameter(id);
+ g_pModuleExtensionManager->allocateExtension("tool",idext,m_pFrm->firstConsole());
+}
+
+
+void KviMenuBar::setupToolbarsPopup()
+{
+ m_pFrm->fillToolBarsPopup(m_pToolbarsPopup);
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// Script items
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+int KviMenuBar::getDefaultItemRealIndex(int iDefaultIndex)
+{
+ if(iDefaultIndex < 0)iDefaultIndex = 0;
+ if(iDefaultIndex >= m_iNumDefaultItems)
+ return indexOf(m_pDefaultItemId[m_iNumDefaultItems - 1]) + 1;
+ return indexOf(m_pDefaultItemId[iDefaultIndex]);
+}
+
+KviScriptMenuBarItem * KviMenuBar::findMenu(const QString &text)
+{
+ if(!m_pScriptItemList)return 0;
+ for(KviScriptMenuBarItem * i = m_pScriptItemList->first();i;i = m_pScriptItemList->next())
+ {
+ if(KviQString::equalCI(i->szText,text))return i;
+ }
+ return 0;
+}
+
+KviScriptMenuBarItem * KviMenuBar::findMenu(KviKvsPopupMenu * p)
+{
+ if(!m_pScriptItemList)return 0;
+ for(KviScriptMenuBarItem * i = m_pScriptItemList->first();i;i = m_pScriptItemList->next())
+ {
+ if(i->pPopup == p)return i;
+ }
+ return 0;
+}
+
+bool KviMenuBar::removeMenu(const QString &text)
+{
+ KviScriptMenuBarItem * i = findMenu(text);
+ if(i)
+ {
+ disconnect(i->pPopup,SIGNAL(destroyed()),this,SLOT(menuDestroyed()));
+ removeItem(i->id);
+ m_pScriptItemList->removeRef(i);
+ return true;
+ }
+ return false;
+}
+
+void KviMenuBar::menuDestroyed()
+{
+ KviScriptMenuBarItem * i = findMenu(((KviKvsPopupMenu *)sender()));
+ if(i)
+ {
+ removeItem(i->id);
+ m_pScriptItemList->removeRef(i);
+ }
+}
+
+void KviMenuBar::addMenu(const QString &text,KviKvsPopupMenu * p,int index)
+{
+ if(!m_pScriptItemList)
+ {
+ m_pScriptItemList = new KviPointerList<KviScriptMenuBarItem>;
+ m_pScriptItemList->setAutoDelete(true);
+ }/* else {
+ removeMenu(text);
+ }*/
+ KviScriptMenuBarItem * it = new KviScriptMenuBarItem;
+ it->szText = text;
+ it->szPopupName = p->name();
+ it->pPopup = p;
+ it->id = insertItem(text,p,-1,index);
+ connect(p,SIGNAL(destroyed()),this,SLOT(menuDestroyed()));
+ m_pScriptItemList->append(it);
+}
+
+#include "kvi_menubar.moc"
diff --git a/src/kvirc/ui/kvi_menubar.h b/src/kvirc/ui/kvi_menubar.h
new file mode 100644
index 00000000..3095913b
--- /dev/null
+++ b/src/kvirc/ui/kvi_menubar.h
@@ -0,0 +1,83 @@
+#ifndef _KVI_MENUBAR_H_
+#define _KVI_MENUBAR_H_
+
+//=============================================================================
+//
+// File : kvi_menubar.h
+// Creation date : Wen Jun 21 2000 13:11:24 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include "kvi_tal_menubar.h"
+#include "kvi_string.h"
+
+#include "kvi_pointerlist.h"
+
+class KviFrame;
+class KviTalPopupMenu;
+class KviKvsPopupMenu;
+
+typedef struct _KviScriptMenuBarItem
+{
+ int id;
+ KviStr szPopupName;
+ KviKvsPopupMenu * pPopup;
+ KviStr szText;
+} KviScriptMenuBarItem;
+
+
+class KVIRC_API KviMenuBar : public KviTalMenuBar
+{
+ Q_OBJECT
+public:
+ KviMenuBar(KviFrame * par,const char * name);
+ ~KviMenuBar();
+protected:
+ KviTalPopupMenu * m_pToolbarsPopup;
+ KviTalPopupMenu * m_pRecentServersPopup;
+ KviFrame * m_pFrm;
+ KviPointerList<KviScriptMenuBarItem> * m_pScriptItemList;
+ int m_iNumDefaultItems;
+ int * m_pDefaultItemId;
+protected:
+ KviScriptMenuBarItem * findMenu(const QString &text);
+ KviScriptMenuBarItem * findMenu(KviKvsPopupMenu * p);
+ void addDefaultItem(const QString &text,KviTalPopupMenu * pop);
+ virtual void showEvent(QShowEvent *e);
+public:
+ int getDefaultItemRealIndex(int iDefaultIndex);
+ void addMenu(const QString &text,KviKvsPopupMenu * p,int index);
+ bool removeMenu(const QString &text);
+protected slots:
+ void menuDestroyed();
+ void setupMainPopup();
+ void setupSettingsPopup();
+ void setupHelpPopup();
+ void setupRecentServersPopup();
+ void setupScriptingPopup();
+ void newConnectionToServer(int id);
+ void setupToolbarsPopup();
+ void setupToolsPopup();
+ void toolsPopupSelected(int id);
+};
+
+#endif //_KVI_MENUBAR_H_
diff --git a/src/kvirc/ui/kvi_modeeditor.cpp b/src/kvirc/ui/kvi_modeeditor.cpp
new file mode 100644
index 00000000..f72d0a22
--- /dev/null
+++ b/src/kvirc/ui/kvi_modeeditor.cpp
@@ -0,0 +1,336 @@
+//
+// File : kvi_modeeditor.cpp
+// Creation date : Sat Apr 14 2001 13:52:11 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#define __KVIRC__
+#include "kvi_modeeditor.h"
+#include "kvi_iconmanager.h"
+#include "kvi_locale.h"
+#include "kvi_qstring.h"
+#include "kvi_console.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectionserverinfo.h"
+#include "kvi_channel.h"
+#include "kvi_ircconnectionuserinfo.h"
+#include "kvi_styled_controls.h"
+#include "kvi_toolwindows_container.h"
+#include "kvi_tal_scrollview.h"
+
+#include <qlayout.h>
+#include <qlabel.h>
+
+
+//////////////////////////////////////////////////////////////////////
+// class KviModeEditor
+//
+//////////////////////////////////////////////////////////////////////
+
+//static char checkable_modes_table[KVI_NUM_CHECKABLE_MODES] = { 'p','s','t','n','m','i'};
+
+// FIXME: This widget should use a KviTalScrollView!
+
+KviModeEditor::KviModeEditor(QWidget * par,KviWindowToolPageButton* button,const char * nam,KviConsole * c,const char * mode,const char * key,const char * limit)
+: KviWindowToolWidget(par,button)
+{
+ m_szMode = mode;
+ m_szKey = key;
+ m_szLimit = limit;
+ bool isEnabled=1;
+
+ QObject * w = parent();
+ while(w)
+ {
+ if(w->inherits("KviChannel"))
+ {
+ KviChannel *chan = ((KviChannel *)w);
+ if(!( chan->isMeHalfOp() || chan->isMeOp() || chan->isMeChanOwner() || chan->isMeChanAdmin() || chan->connection()->userInfo()->hasUserMode('o') || chan->connection()->userInfo()->hasUserMode('O') ) ) isEnabled=0;
+ break;
+ }
+ w = w->parent();
+ }
+
+ QGridLayout *pMasterLayout = new QGridLayout(this,2,1,2,2);
+
+#ifdef COMPILE_USE_QT4
+ setFocusPolicy(Qt::ClickFocus);
+#else
+ setFocusPolicy(QWidget::ClickFocus);
+#endif
+
+ KviTalScrollView *pScrollView = new KviTalScrollView(this);
+#ifdef COMPILE_USE_QT4
+ pScrollView->viewport()->setBackgroundRole(QPalette::Background);
+#else
+ pScrollView->viewport()->setBackgroundMode(QWidget::PaletteBackground);
+#endif
+
+ pMasterLayout->addWidget(pScrollView,0,0);
+
+ pMasterLayout->setRowStretch(1,1);
+ QPushButton * b;
+ if(isEnabled) b = new QPushButton(__tr2qs("&Apply"),this);
+ else b = new QPushButton(__tr2qs("Close"),this);
+
+ pMasterLayout->addWidget(b,1,0);
+ connect(b,SIGNAL(clicked()),this,SLOT(commit()));
+
+ QWidget * pBackground = new QWidget(pScrollView->viewport());
+
+ QGridLayout *g = new QGridLayout(pBackground,20,3,2,2);
+
+ QLabel * l = new QLabel("",pBackground);
+ l->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_MODE)));
+ g->addWidget(l,0,0);
+
+ l = new QLabel(__tr2qs("Channel Modes"),pBackground);
+ g->addMultiCellWidget(l,0,0,1,2);
+
+ QFrame * f = new QFrame(pBackground);
+ f->setFrameStyle(QFrame::HLine | QFrame::Sunken);
+ g->addMultiCellWidget(f,1,1,0,2);
+
+ int i = 1;
+ QString tmp;
+
+ m_pCheckBoxes = new KviPointerList<KviStyledCheckBox>;
+ m_pCheckBoxes->setAutoDelete(false);
+
+
+ // first che basic checkable modes pstnmi
+ QString szModes = "pstnmi";
+
+ while(!szModes.isEmpty())
+ {
+ QChar ccc = szModes[0];
+ szModes.remove(0,1);
+
+ KviQString::sprintf(tmp,"%c: %Q",ccc.unicode(),&(c->connection()->serverInfo()->getChannelModeDescription(ccc)));
+ KviStyledCheckBox * cb = new KviStyledCheckBox(tmp,pBackground);
+ cb->setEnabled(isEnabled);
+ m_pCheckBoxes->append(cb);
+ cb->setChecked(m_szMode.contains((char)ccc.unicode()));
+ i++;
+ g->addMultiCellWidget(cb,i,i,0,2);
+ }
+
+ KviQString::sprintf(tmp,"l: %Q",&(c->connection()->serverInfo()->getChannelModeDescription('l')));
+ m_pLimitBox = new KviStyledCheckBox(tmp,pBackground);
+ m_pLimitBox->setEnabled(isEnabled);
+ i++;
+ g->addMultiCellWidget(m_pLimitBox,i,i,0,2);
+ connect(m_pLimitBox,SIGNAL(toggled(bool)),this,SLOT(limitBoxToggled(bool)));
+ m_pLimitEdit = new QLineEdit(pBackground);
+ m_pLimitEdit->setEnabled(isEnabled);
+ i++;
+ g->addMultiCellWidget(m_pLimitEdit,i,i,1,2);
+ if(m_szLimit.hasData())
+ {
+ m_pLimitBox->setChecked(true);
+// m_pLimitEdit->setEnabled(true);
+ m_pLimitEdit->setText(m_szLimit.ptr());
+ } else {
+ m_pLimitEdit->setEnabled(false);
+ }
+
+ KviQString::sprintf(tmp,"k: %Q",&(c->connection()->serverInfo()->getChannelModeDescription('k')));
+ m_pKeyBox = new KviStyledCheckBox(tmp,pBackground);
+ m_pKeyBox->setEnabled(isEnabled);
+ i++;
+ g->addMultiCellWidget(m_pKeyBox,i,i,0,2);
+ connect(m_pKeyBox,SIGNAL(toggled(bool)),this,SLOT(keyBoxToggled(bool)));
+ m_pKeyEdit = new QLineEdit(pBackground);
+ m_pKeyEdit->setEnabled(isEnabled);
+ i++;
+ g->addMultiCellWidget(m_pKeyEdit,i,i,1,2);
+ if(m_szKey.hasData())
+ {
+ m_pKeyBox->setChecked(true);
+// m_pLimitEdit->setEnabled(true);
+ m_pKeyEdit->setText(m_szKey.ptr());
+ } else {
+ m_pKeyEdit->setEnabled(false);
+ }
+
+ if(c->connection())
+ {
+ if(c->connection()->serverInfo())
+ szModes = c->connection()->serverInfo()->supportedChannelModes();
+ }
+
+ int idx = szModes.findRev(',');
+ if(idx != -1)szModes.remove(0,idx+1);
+
+ szModes.replace("p","");
+ szModes.replace("s","");
+ szModes.replace("t","");
+ szModes.replace("n","");
+ szModes.replace("m","");
+ szModes.replace("i","");
+ szModes.replace(",","");
+ szModes.replace("b","");
+ szModes.replace("k","");
+ szModes.replace("l","");
+
+ while(!szModes.isEmpty())
+ {
+ QChar ccc = szModes[0];
+ szModes.remove(0,1);
+
+ KviQString::sprintf(tmp,"%c: %Q",(char)ccc.unicode(),&(c->connection()->serverInfo()->getChannelModeDescription(ccc)));
+ KviStyledCheckBox * cb = new KviStyledCheckBox(tmp,pBackground);
+ cb->setEnabled(isEnabled);
+ m_pCheckBoxes->append(cb);
+ cb->setChecked(m_szMode.contains((char)ccc.unicode()));
+ i++;
+ g->addMultiCellWidget(cb,i,i,0,2);
+ }
+
+ i++;
+
+ g->setRowStretch(i,1);
+ g->setColStretch(2,1);
+
+ pScrollView->addChild(pBackground,0,0);
+ registerSelf();
+}
+
+KviModeEditor::~KviModeEditor()
+{
+ delete m_pCheckBoxes;
+}
+
+void KviModeEditor::limitBoxToggled(bool bChecked)
+{
+ m_pLimitEdit->setEnabled(bChecked);
+}
+
+void KviModeEditor::keyBoxToggled(bool bChecked)
+{
+ m_pKeyEdit->setEnabled(bChecked);
+}
+
+void KviModeEditor::commit()
+{
+ KviStr szPlusModes;
+ KviStr szMinusModes;
+
+ if(m_szKey.hasData())
+ {
+ // had a key before
+ if(m_pKeyBox->isChecked())
+ {
+ // still have it
+ KviStr tmp = m_pKeyEdit->text();
+ tmp.stripWhiteSpace();
+ if(tmp.hasData())
+ {
+ if(!kvi_strEqualCI(tmp.ptr(),m_szKey.ptr()))
+ {
+ // not the same key!
+ // set the new one
+ KviStr mode(KviStr::Format,"-k %s",m_szKey.ptr());
+ emit setMode(mode.ptr());
+ mode.sprintf("+k %s",tmp.ptr());
+ emit setMode(mode.ptr());
+ }
+ }
+ } else {
+ // no key now! reset
+ KviStr mode(KviStr::Format,"-k %s",m_szKey.ptr());
+ emit setMode(mode.ptr());
+ }
+ } else {
+ // there was no key before
+ if(m_pKeyBox->isChecked())
+ {
+ KviStr tmp = m_pKeyEdit->text();
+ tmp.stripWhiteSpace();
+ if(tmp.hasData())
+ {
+ // new key to be set
+ KviStr mode(KviStr::Format,"+k %s",tmp.ptr());
+ emit setMode(mode.ptr());
+ }
+ }
+ }
+
+ if(m_szLimit.hasData())
+ {
+ // had a limit before
+ if(m_pLimitBox->isChecked())
+ {
+ // still have it
+ KviStr tmp = m_pLimitEdit->text();
+ tmp.stripWhiteSpace();
+ if(tmp.hasData() && tmp.isUnsignedNum())
+ {
+ if(!kvi_strEqualCI(tmp.ptr(),m_szLimit.ptr()))
+ {
+ // not the same limit!
+ KviStr mode(KviStr::Format,"+l %s",tmp.ptr());
+ emit setMode(mode.ptr());
+ }
+ }
+ } else {
+ // no limit now! reset
+ szMinusModes.append('l');
+ }
+ } else {
+ // there was no limit before
+ if(m_pLimitBox->isChecked())
+ {
+ KviStr tmp = m_pLimitEdit->text();
+ tmp.stripWhiteSpace();
+ if(tmp.hasData() && tmp.isUnsignedNum())
+ {
+ // new limit to be set
+ KviStr mode(KviStr::Format,"+l %s",tmp.ptr());
+ emit setMode(mode.ptr());
+ }
+ }
+ }
+
+
+ for(KviStyledCheckBox * cb = m_pCheckBoxes->first();cb;cb = m_pCheckBoxes->next())
+ {
+ QString sz = cb->text();
+ sz.replace("&","");
+ if(sz.length() > 0)
+ {
+ QChar ccc = sz[0];
+ if(cb->isChecked())
+ {
+ if(!m_szMode.contains((char)ccc.unicode()))szPlusModes.append((char)ccc.unicode());
+ } else {
+ if(m_szMode.contains((char)ccc.unicode()))szMinusModes.append((char)ccc.unicode());
+ }
+ }
+ }
+
+ KviStr szModes;
+
+ if(szMinusModes.hasData())szModes.sprintf("-%s",szMinusModes.ptr());
+ if(szPlusModes.hasData())szModes.append(KviStr::Format,"+%s",szPlusModes.ptr());
+ if(szModes.hasData())emit setMode(szModes.ptr());
+
+ emit done();
+}
+
+#include "kvi_modeeditor.moc"
diff --git a/src/kvirc/ui/kvi_modeeditor.h b/src/kvirc/ui/kvi_modeeditor.h
new file mode 100644
index 00000000..06512d9b
--- /dev/null
+++ b/src/kvirc/ui/kvi_modeeditor.h
@@ -0,0 +1,70 @@
+#ifndef _KVI_MODEEDITOR_H_
+#define _KVI_MODEEDITOR_H_
+
+//
+// File : kvi_modeeditor.h
+// Creation date : Sat Apr 14 2001 13:50:12 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+
+#include <qwidget.h>
+#include <qpushbutton.h>
+#include <qcheckbox.h>
+#include <qlineedit.h>
+#include <qlabel.h>
+
+#include "kvi_string.h"
+#include "kvi_pointerlist.h"
+#include "kvi_styled_controls.h"
+#include "kvi_toolwindows_container.h"
+
+class KviConsole;
+
+//////////////////////////////////////////////////////////////////////
+// class KviModeEditor
+//
+//////////////////////////////////////////////////////////////////////
+
+class KVIRC_API KviModeEditor : public KviWindowToolWidget
+{
+ Q_OBJECT
+public:
+ KviModeEditor(QWidget * par,KviWindowToolPageButton* button,const char * nam,KviConsole * c,const char * mode,const char * key,const char * limit);
+ ~KviModeEditor();
+protected: // fields
+ KviStr m_szMode;
+ KviStr m_szKey;
+ KviStr m_szLimit;
+ KviPointerList<KviStyledCheckBox> * m_pCheckBoxes;
+ KviStyledCheckBox * m_pLimitBox;
+ QLineEdit * m_pLimitEdit;
+ KviStyledCheckBox * m_pKeyBox;
+ QLineEdit * m_pKeyEdit;
+signals:
+ void setMode(const char *);
+ void done();
+protected slots:
+ void limitBoxToggled(bool bChecked);
+ void keyBoxToggled(bool bChecked);
+ void commit();
+};
+
+#endif //_KVI_MODEEDITOR_H_
diff --git a/src/kvirc/ui/kvi_modew.cpp b/src/kvirc/ui/kvi_modew.cpp
new file mode 100755
index 00000000..a0cf85e4
--- /dev/null
+++ b/src/kvirc/ui/kvi_modew.cpp
@@ -0,0 +1,175 @@
+//============================================================================
+//
+// File : kvi_modew.cpp
+// Creation date : 12.11.2005 23.50 by Uzhva Alexey
+//
+// This file is part of the KVirc irc client 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 opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//============================================================================
+#define __KVIRC__
+
+#include "kvi_themedlabel.h"
+#include "kvi_channel.h"
+#include "kvi_options.h"
+#include "kvi_ircconnectionserverinfo.h"
+#include "kvi_ircconnectionuserinfo.h"
+#include "kvi_qcstring.h"
+
+#include <qframe.h>
+#include <qlineedit.h>
+#include "kvi_tal_hbox.h"
+#include <qevent.h>
+
+KviModeWidget::KviModeWidget(QWidget * par,KviChannel* chan,const char * name)
+:QFrame(par,name)
+{
+ m_pChannel=chan;
+ m_pLabel=0;
+ m_pLineEdit=0;
+#ifdef COMPILE_USE_QT4
+ setAutoFillBackground(false);
+#else
+ setBackgroundMode(QWidget::NoBackground);
+#endif
+ reset();
+}
+
+KviModeWidget::~KviModeWidget()
+{
+}
+
+void KviModeWidget::reset()
+{
+ if(m_pLineEdit)
+ {
+ delete m_pLineEdit;
+ m_pLineEdit=0;
+ }
+ if(!m_pLabel)
+ m_pLabel=new KviThemedLabel(this,0);
+ refreshModes();
+ m_pLabel->show();
+ connect(m_pLabel,SIGNAL(doubleClicked()),this,SLOT(labelDoubleClick()));
+ QResizeEvent* ev=new QResizeEvent(size(),size());
+ resizeEvent(ev);
+ delete ev;
+ if(m_pChannel->input())
+ m_pChannel->setFocus();
+}
+
+void KviModeWidget::refreshModes()
+{
+ QString szMode=m_pChannel->channelMode();
+ if(!m_pChannel->channelKey().isEmpty())
+ szMode+=QString(" k:%1").arg(m_pChannel->channelKey());
+ if(!m_pChannel->channelLimit().isEmpty())
+ szMode+=QString(" l:%1").arg(m_pChannel->channelLimit().ptr());
+ if(m_pLabel)
+ m_pLabel->setText(szMode);
+}
+
+void KviModeWidget::applyOptions()
+{
+ if(m_pLabel)
+ m_pLabel->applyOptions();
+}
+
+void KviModeWidget::resizeEvent(QResizeEvent *e)
+{
+ if(e)QFrame::resizeEvent(e);
+ if(m_pLabel)
+ {
+ m_pLabel->setGeometry(0,0,width(),height());
+ }
+ if(m_pLineEdit)
+ {
+ m_pLineEdit->setGeometry(0,0,width(),height());
+ }
+}
+
+void KviModeWidget::labelDoubleClick()
+{
+ if(m_pLabel && ( m_pChannel->isMeHalfOp() || m_pChannel->isMeOp() || m_pChannel->isMeChanOwner() || m_pChannel->isMeChanAdmin() || m_pChannel->connection()->userInfo()->hasUserMode('o') || m_pChannel->connection()->userInfo()->hasUserMode('O')) )
+ {
+ delete m_pLabel;
+ m_pLabel=0;
+ m_pLineEdit = new QLineEdit(this,0);
+ m_pLineEdit->setText(m_pChannel->channelMode());
+ m_pLineEdit->show();
+ m_pLineEdit->setFocus();
+ resizeEvent(new QResizeEvent(size(),size()));
+ m_pLineEdit->installEventFilter( this );
+ connect(m_pLineEdit,SIGNAL(textChanged ( const QString & ) ),this,SLOT(editorTextChanged( const QString & )));
+ }
+}
+
+bool KviModeWidget::eventFilter( QObject *obj, QEvent *ev )
+{
+ if( (obj==m_pLineEdit) && ( ev->type() == QEvent::KeyPress ) )
+ {
+ QKeyEvent *keyEvent = (QKeyEvent*)ev;
+ switch(keyEvent->key())
+ {
+ case Qt::Key_Return:
+ case Qt::Key_Enter:
+ editorReturnPressed();
+ return TRUE;
+ case Qt::Key_Escape:
+ reset();
+ return TRUE;
+ }
+ }
+ return QFrame::eventFilter( obj, ev );
+}
+
+void KviModeWidget::editorReturnPressed()
+{
+ QString szCurModes=m_pChannel->channelMode();
+ QString szNewModes=m_pLineEdit->text();
+ QString szMinusModes;
+ for(int i=0; i<szCurModes.length(); i++)
+ {
+ if(szNewModes.contains(szCurModes[i]))
+ szNewModes.remove(szCurModes[i]);
+ else
+ szMinusModes+=szCurModes[i];
+ }
+ QString mode;
+ if(!szMinusModes.isEmpty()) mode+=QString("-"+szMinusModes);
+ if(!szNewModes.isEmpty()) mode+=QString("+"+szNewModes);
+ if(!mode.isEmpty())
+ {
+ KviQCString chan = m_pChannel->connection()->encodeText(m_pChannel->name());
+ m_pChannel->connection()->sendFmtData("MODE %s %s",chan.data(),mode.utf8().data());
+ }
+ reset();
+}
+
+void KviModeWidget::editorTextChanged( const QString & text)
+{
+ int i = 0;
+ QString szText=text;
+ for(i=0;i<szText.length();i++)
+ {
+ if( !m_pChannel->connection()->serverInfo()->supportedPlainModes().contains(szText[i]) ||
+ szText.find(szText[i])<i )
+ szText.remove(i,1);
+ }
+ m_pLineEdit->setText(szText);
+}
+
+#include "kvi_modew.moc"
diff --git a/src/kvirc/ui/kvi_modew.h b/src/kvirc/ui/kvi_modew.h
new file mode 100755
index 00000000..7efbc961
--- /dev/null
+++ b/src/kvirc/ui/kvi_modew.h
@@ -0,0 +1,57 @@
+#ifndef _KVI_MODEW_H_
+#define _KVI_MODEW_H_
+
+//============================================================================
+//
+// File : kvi_modew.h
+// Creation date : 12.11.2005 23.50 by Uzhva Alexey
+//
+// This file is part of the KVirc irc client 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 opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//============================================================================
+
+#include "kvi_themedlabel.h"
+#include "kvi_channel.h"
+
+#include <qframe.h>
+#include <qlineedit.h>
+#include "kvi_tal_hbox.h"
+
+class KVIRC_API KviModeWidget : public QFrame
+{
+ Q_OBJECT
+
+public:
+ KviModeWidget(QWidget * par,KviChannel* chan,const char * name=0);
+ ~KviModeWidget();
+ void reset();
+ void refreshModes();
+ void applyOptions();
+private:
+ KviChannel * m_pChannel;
+ KviThemedLabel * m_pLabel;
+ QLineEdit * m_pLineEdit;
+protected:
+ void resizeEvent(QResizeEvent *e);
+ bool eventFilter( QObject *obj, QEvent *ev );
+public slots:
+ void labelDoubleClick();
+ void editorReturnPressed();
+ void editorTextChanged( const QString & );
+};
+
+#endif //_KVI_MODEW_H_
diff --git a/src/kvirc/ui/kvi_msgbox.cpp b/src/kvirc/ui/kvi_msgbox.cpp
new file mode 100644
index 00000000..81cea104
--- /dev/null
+++ b/src/kvirc/ui/kvi_msgbox.cpp
@@ -0,0 +1,89 @@
+//
+// File : kvi_msgbox.cpp
+// Creation date : Tue Jun 20 2000 12:49:41 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#define __KVIRC__
+#include "kvi_msgbox.h"
+
+// FIXME: #warning "This should go into TAL as layer ...then maybe a wrapper in KviApp!"
+
+#ifdef COMPILE_KDE_SUPPORT
+ #include <kmessagebox.h>
+#else
+ #include <qmessagebox.h>
+#endif //!COMPILE_WITH_KDE
+
+#include "kvi_malloc.h"
+#include "kvi_string.h"
+#include "kvi_locale.h"
+
+// FIXME: #warning "This could go into KviApp"
+
+namespace KviMessageBox
+{
+ void warning(const QString &fmt,...)
+ {
+ kvi_va_list list;
+ kvi_va_start_by_reference(list,fmt);
+ QString s;
+ KviQString::vsprintf(s,fmt,list);
+ kvi_va_end(list);
+#ifdef COMPILE_KDE_SUPPORT
+ KMessageBox::error(0,s,"KVIrc");
+#else
+ QMessageBox::warning(0,"KVIrc",s);
+#endif
+ }
+
+ void information(const QString &fmt,...)
+ {
+ kvi_va_list list;
+ kvi_va_start_by_reference(list,fmt);
+ QString s;
+ KviQString::vsprintf(s,fmt,list);
+ kvi_va_end(list);
+#ifdef COMPILE_KDE_SUPPORT
+ KMessageBox::information(0,s,"KVIrc");
+#else
+ QMessageBox::information(0,"KVIrc",s);
+#endif
+ }
+
+ bool yesNo(const QString &caption,const QString &fmt,...)
+ {
+ kvi_va_list list;
+ kvi_va_start_by_reference(list,fmt);
+ QString s;
+ KviQString::vsprintf(s,fmt,list);
+ kvi_va_end(list);
+ bool bRet;
+#ifdef COMPILE_KDE_SUPPORT
+ bRet = (KMessageBox::questionYesNo(0,s,caption) == KMessageBox::Yes);
+#else
+ bRet = (QMessageBox::information(0,caption,s,
+ QMessageBox::Yes | QMessageBox::Default,
+ QMessageBox::No | QMessageBox::Escape) == QMessageBox::Yes);
+#endif
+ return bRet;
+ }
+};
+
+
+
diff --git a/src/kvirc/ui/kvi_msgbox.h b/src/kvirc/ui/kvi_msgbox.h
new file mode 100644
index 00000000..71b22a26
--- /dev/null
+++ b/src/kvirc/ui/kvi_msgbox.h
@@ -0,0 +1,53 @@
+#ifndef _KVI_MSGBOX_H_
+#define _KVI_MSGBOX_H_
+
+//
+// File : kvi_msgbox.h
+// Creation date : Sun Jan 17 1999 13:55:41 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+/*
+class KviMessageBox : public KviTalMessageBox
+{
+ enum Result { Yes , No , Ok , Cancel };
+ enum ButtonResult { Button1 , Button2 , Button3 };
+
+ KVIRC_API void warning(const char * fmt,...);
+ KVIRC_API void information(const char * fmt,...);
+
+ KVIRC_API Result yesNo(const char * fmt,...);
+ KVIRC_API Result yesNoCancel(const char * fmt,...);
+
+ KVIRC_API ButtonResult oneButton(const char * btnTxt,const char * fmt,...);
+ KVIRC_API ButtonResult twoButtons(const char * btnTxt1,const char * btnTxt2,const char * fmt,...);
+ KVIRC_API ButtonResult threeButtons(const char * btnTxt1,const char * btnTxt2,const char * btnTxt3,const char * fmt,...);
+};
+*/
+
+namespace KviMessageBox
+{
+ KVIRC_API void warning(const QString &fmt,...);
+ KVIRC_API void information(const QString &fmt,...);
+ KVIRC_API bool yesNo(const QString &caption,const QString &fmt,...);
+};
+
+#endif //!_KVI_MSGBOX_H_
diff --git a/src/kvirc/ui/kvi_optionswidget.cpp b/src/kvirc/ui/kvi_optionswidget.cpp
new file mode 100644
index 00000000..546d4b1e
--- /dev/null
+++ b/src/kvirc/ui/kvi_optionswidget.cpp
@@ -0,0 +1,722 @@
+//=============================================================================
+//
+// File : kvi_optionswidget.h
+// Creation date : Mon Jun 10 2000 17:47:33 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_optionswidget.h"
+
+#define _WANT_OPTION_FLAGS_
+#include "kvi_options.h"
+
+#include "kvi_locale.h"
+
+#include "kvi_app.h"
+
+#include "kvi_tal_tooltip.h"
+
+#define KVI_OPTIONSWIDGET_GRIDLAYOUT_BORDER 4
+#define KVI_OPTIONSWIDGET_GRIDLAYOUT_SPACE 6
+
+QString KviOptionsWidget::m_szBasicTipStart; // empty decl
+QString KviOptionsWidget::m_szBasicTipEnd;
+
+KviOptionsWidget::KviOptionsWidget(QWidget * parent,const char * name,bool bSunken)
+: QFrame(parent,name), KviSelectorInterface()
+{
+ if(m_szBasicTipStart.isEmpty())
+ {
+ m_szBasicTipStart = "<center><font color=\"#a0a0a0\">";
+ m_szBasicTipStart += __tr2qs("This option is also available as");
+ m_szBasicTipStart += "<br><nobr>/option <b> ";
+ m_szBasicTipEnd = "</b></nobr></font></center>";
+
+ }
+ // FIXME: The bSunken value is ignored!
+ //if(bSunken)setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
+ //setFrameStyle(QFrame::StyledPanel | QFrame::Plain);
+ m_pLayout = 0;
+ m_pTabWidget = 0;
+ m_iResetFlags = 0;
+ m_iSelectors = 0;
+ m_pSelectorInterfaceList = new KviPointerList<KviSelectorInterface>;
+ m_pSelectorInterfaceList->setAutoDelete(false);
+}
+
+KviOptionsWidget::~KviOptionsWidget()
+{
+ delete m_pSelectorInterfaceList;
+}
+
+void KviOptionsWidget::mergeTip(QWidget * w,const QString &tip)
+{
+ static QString begin = "<table width=\"100%\" align=\"center\"><tr><td bgcolor=\"#fefef0\">";
+ static QString mid = "</td></tr><tr><td>";
+ static QString end = "</td></tr></table>";
+#ifdef COMPILE_USE_QT4
+ QString s = w->toolTip();
+#else
+ QString s = KviTalToolTip::textFor(w);
+#endif
+ if(s.isEmpty())KviTalToolTip::add(w,tip);
+ else {
+ QString tmp = begin;
+ tmp += tip;
+ tmp += mid;
+ tmp += s;
+ tmp += end;
+ KviTalToolTip::add(w,tmp);
+ }
+}
+
+void KviOptionsWidget::createLayout(int rows,int cols)
+{
+ if(m_pLayout)delete m_pLayout;
+ m_pLayout = new QGridLayout(this,rows,cols,KVI_OPTIONSWIDGET_GRIDLAYOUT_BORDER,KVI_OPTIONSWIDGET_GRIDLAYOUT_SPACE);
+}
+
+void KviOptionsWidget::createTabbedPage()
+{
+ createLayout(1,1);
+ layout()->setMargin(0);
+ layout()->setSpacing(0);
+ m_pTabWidget = new QTabWidget(this);
+ addWidgetToLayout(m_pTabWidget,0,0,0,0);
+}
+
+void KviOptionsWidget::addOptionsWidget(const QString &szText,const QIconSet &iconSet,KviOptionsWidget * pWidget)
+{
+ if(pWidget->layout())
+ pWidget->layout()->setMargin(10);
+ m_pTabWidget->addTab(pWidget,iconSet,szText);
+ m_pSelectorInterfaceList->append(pWidget);
+}
+
+
+void KviOptionsWidget::addWidgetToLayout(QWidget * w,int x1,int y1,int x2,int y2)
+{
+ if((x1 == x2) && (y1 == y2))layout()->addWidget(w,y1,x1);
+ else layout()->addMultiCellWidget(w,y1,y2,x1,x2);
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+KviDirectorySelector * KviOptionsWidget::addDirectorySelector(int x1,int y1,int x2,int y2,const QString & txt,QString *pOption,bool bEnabled)
+{
+ KviDirectorySelector * d = new KviDirectorySelector(this,txt,pOption,bEnabled);
+ addWidgetToLayout(d,x1,y1,x2,y2);
+ m_pSelectorInterfaceList->append(d);
+ return d;
+}
+
+KviDirectorySelector * KviOptionsWidget::addDirectorySelector(QWidget * pParent,const QString & txt,QString *pOption,bool bEnabled)
+{
+ KviDirectorySelector * d = new KviDirectorySelector(pParent,txt,pOption,bEnabled);
+ //addWidgetToLayout(d,x1,y1,x2,y2);
+ m_pSelectorInterfaceList->append(d);
+ return d;
+}
+
+KviDirectorySelector * KviOptionsWidget::addDirectorySelector(int x1,int y1,int x2,int y2,const QString & txt,int optId,bool bEnabled)
+{
+ m_iResetFlags |= (g_stringOptionsTable[optId].flags & KviOption_resetMask);
+ KviDirectorySelector * d = addDirectorySelector(x1,y1,x2,y2,txt,&(KVI_OPTION_STRING(optId)),bEnabled);
+
+ QString tmp = m_szBasicTipStart;
+ tmp += g_stringOptionsTable[optId].name;
+ tmp += m_szBasicTipEnd;
+ KviTalToolTip::add(d,tmp);
+
+ return d;
+}
+
+KviDirectorySelector * KviOptionsWidget::addDirectorySelector(QWidget * pParent,const QString & txt,int optId,bool bEnabled)
+{
+ m_iResetFlags |= (g_stringOptionsTable[optId].flags & KviOption_resetMask);
+ KviDirectorySelector * d = addDirectorySelector(pParent,txt,&(KVI_OPTION_STRING(optId)),bEnabled);
+
+ QString tmp = m_szBasicTipStart;
+ tmp += g_stringOptionsTable[optId].name;
+ tmp += m_szBasicTipEnd;
+ KviTalToolTip::add(d,tmp);
+
+ return d;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviFileSelector * KviOptionsWidget::addFileSelector(int x1,int y1,int x2,int y2,const QString & txt,QString *pOption,bool bEnabled)
+{
+ KviFileSelector * d = new KviFileSelector(this,txt,pOption,bEnabled);
+ addWidgetToLayout(d,x1,y1,x2,y2);
+ m_pSelectorInterfaceList->append(d);
+ return d;
+}
+
+KviFileSelector * KviOptionsWidget::addFileSelector(QWidget * pParent,const QString & txt,QString *pOption,bool bEnabled)
+{
+ KviFileSelector * d = new KviFileSelector(pParent,txt,pOption,bEnabled);
+ m_pSelectorInterfaceList->append(d);
+ return d;
+}
+
+KviFileSelector * KviOptionsWidget::addFileSelector(int x1,int y1,int x2,int y2,const QString & txt,int optId,bool bEnabled)
+{
+ m_iResetFlags |= (g_stringOptionsTable[optId].flags & KviOption_resetMask);
+ KviFileSelector * d = addFileSelector(x1,y1,x2,y2,txt,&(KVI_OPTION_STRING(optId)),bEnabled);
+
+ QString tmp = m_szBasicTipStart;
+ tmp += g_stringOptionsTable[optId].name;
+ tmp += m_szBasicTipEnd;
+ KviTalToolTip::add(d,tmp);
+
+ return d;
+}
+
+KviFileSelector * KviOptionsWidget::addFileSelector(QWidget * pParent,const QString & txt,int optId,bool bEnabled)
+{
+ m_iResetFlags |= (g_stringOptionsTable[optId].flags & KviOption_resetMask);
+ KviFileSelector * d = addFileSelector(pParent,txt,&(KVI_OPTION_STRING(optId)),bEnabled);
+
+ QString tmp = m_szBasicTipStart;
+ tmp += g_stringOptionsTable[optId].name;
+ tmp += m_szBasicTipEnd;
+ KviTalToolTip::add(d,tmp);
+
+ return d;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviSoundSelector * KviOptionsWidget::addSoundSelector(int x1,int y1,int x2,int y2,const QString & txt,QString *pOption,bool bEnabled)
+{
+ KviSoundSelector * d = new KviSoundSelector(this,txt,pOption,bEnabled);
+ addWidgetToLayout(d,x1,y1,x2,y2);
+ m_pSelectorInterfaceList->append(d);
+ return d;
+}
+
+KviSoundSelector * KviOptionsWidget::addSoundSelector(QWidget * pParent,const QString & txt,QString *pOption,bool bEnabled)
+{
+ KviSoundSelector * d = new KviSoundSelector(pParent,txt,pOption,bEnabled);
+ m_pSelectorInterfaceList->append(d);
+ return d;
+}
+
+KviSoundSelector * KviOptionsWidget::addSoundSelector(int x1,int y1,int x2,int y2,const QString & txt,int optId,bool bEnabled)
+{
+ m_iResetFlags |= (g_stringOptionsTable[optId].flags & KviOption_resetMask);
+ KviSoundSelector * d = addSoundSelector(x1,y1,x2,y2,txt,&(KVI_OPTION_STRING(optId)),bEnabled);
+
+ QString tmp = m_szBasicTipStart;
+ tmp += g_stringOptionsTable[optId].name;
+ tmp += m_szBasicTipEnd;
+ KviTalToolTip::add(d,tmp);
+
+ return d;
+}
+
+KviSoundSelector * KviOptionsWidget::addSoundSelector(QWidget * pParent,const QString & txt,int optId,bool bEnabled)
+{
+ m_iResetFlags |= (g_stringOptionsTable[optId].flags & KviOption_resetMask);
+ KviSoundSelector * d = addSoundSelector(pParent,txt,&(KVI_OPTION_STRING(optId)),bEnabled);
+
+ QString tmp = m_szBasicTipStart;
+ tmp += g_stringOptionsTable[optId].name;
+ tmp += m_szBasicTipEnd;
+ KviTalToolTip::add(d,tmp);
+
+ return d;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+KviBoolSelector * KviOptionsWidget::addBoolSelector(int x1,int y1,int x2,int y2,const QString & txt,bool *pOption,bool bEnabled)
+{
+ KviBoolSelector * b = new KviBoolSelector(this,txt,pOption,bEnabled);
+ addWidgetToLayout(b,x1,y1,x2,y2);
+ m_pSelectorInterfaceList->append(b);
+ return b;
+}
+
+KviBoolSelector * KviOptionsWidget::addBoolSelector(QWidget * pParent,const QString & txt,bool *pOption,bool bEnabled)
+{
+ KviBoolSelector * b = new KviBoolSelector(pParent,txt,pOption,bEnabled);
+ m_pSelectorInterfaceList->append(b);
+ return b;
+}
+
+KviBoolSelector * KviOptionsWidget::addBoolSelector(int x1,int y1,int x2,int y2,const QString & txt,int optId,bool bEnabled)
+{
+ m_iResetFlags |= (g_boolOptionsTable[optId].flags & KviOption_resetMask);
+ KviBoolSelector * d = addBoolSelector(x1,y1,x2,y2,txt,&(KVI_OPTION_BOOL(optId)),bEnabled);
+ QString tmp = m_szBasicTipStart;
+ tmp += g_boolOptionsTable[optId].name;
+ tmp += m_szBasicTipEnd;
+ KviTalToolTip::add(d,tmp);
+ return d;
+}
+
+KviBoolSelector * KviOptionsWidget::addBoolSelector(QWidget * pParent,const QString & txt,int optId,bool bEnabled)
+{
+ m_iResetFlags |= (g_boolOptionsTable[optId].flags & KviOption_resetMask);
+ KviBoolSelector * d = addBoolSelector(pParent,txt,&(KVI_OPTION_BOOL(optId)),bEnabled);
+ QString tmp = m_szBasicTipStart;
+ tmp += g_boolOptionsTable[optId].name;
+ tmp += m_szBasicTipEnd;
+ KviTalToolTip::add(d,tmp);
+ return d;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviPixmapSelector * KviOptionsWidget::addPixmapSelector(int x1,int y1,int x2,int y2,const QString & txt,KviPixmap *pOption,bool bEnabled)
+{
+ KviPixmapSelector * b = new KviPixmapSelector(this,txt,pOption,bEnabled);
+ addWidgetToLayout(b,x1,y1,x2,y2);
+ m_pSelectorInterfaceList->append(b);
+ return b;
+}
+
+KviPixmapSelector * KviOptionsWidget::addPixmapSelector(int x1,int y1,int x2,int y2,const QString & txt,int optId,bool bEnabled)
+{
+ m_iResetFlags |= (g_pixmapOptionsTable[optId].flags & KviOption_resetMask);
+ KviPixmapSelector * d = addPixmapSelector(x1,y1,x2,y2,txt,&(KVI_OPTION_PIXMAP(optId)),bEnabled);
+ QString tmp = m_szBasicTipStart;
+ tmp += g_pixmapOptionsTable[optId].name;
+ tmp += m_szBasicTipEnd;
+ KviTalToolTip::add(d,tmp);
+ return d;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviUIntSelector * KviOptionsWidget::addUIntSelector(int x1,int y1,int x2,int y2,const QString & txt,
+ unsigned int * pOption,unsigned int uLowBound,
+ unsigned int uHighBound,unsigned int uDefault,bool bEnabled)
+{
+ KviUIntSelector * u = new KviUIntSelector(this,txt,pOption,uLowBound,uHighBound,uDefault,bEnabled,false);
+ addWidgetToLayout(u,x1,y1,x2,y2);
+ m_pSelectorInterfaceList->append(u);
+ return u;
+}
+
+KviUIntSelector * KviOptionsWidget::addUIntSelector(QWidget * pParent,const QString & txt,
+ unsigned int * pOption,unsigned int uLowBound,
+ unsigned int uHighBound,unsigned int uDefault,bool bEnabled)
+{
+ KviUIntSelector * u = new KviUIntSelector(pParent,txt,pOption,uLowBound,uHighBound,uDefault,bEnabled,false);
+ m_pSelectorInterfaceList->append(u);
+ return u;
+}
+
+KviUIntSelector * KviOptionsWidget::addUIntSelector(int x1,int y1,int x2,int y2,const QString & txt,
+ int optId,unsigned int uLowBound,
+ unsigned int uHighBound,unsigned int uDefault,bool bEnabled)
+{
+ m_iResetFlags |= (g_uintOptionsTable[optId].flags & KviOption_resetMask);
+ KviUIntSelector * d = addUIntSelector(x1,y1,x2,y2,txt,&(KVI_OPTION_UINT(optId)),uLowBound,uHighBound,uDefault,bEnabled);
+ QString tmp = m_szBasicTipStart;
+ tmp += g_uintOptionsTable[optId].name;
+ tmp += m_szBasicTipEnd;
+ KviTalToolTip::add(d,tmp);
+ return d;
+}
+
+KviUIntSelector * KviOptionsWidget::addUIntSelector(QWidget * pParent,const QString & txt,
+ int optId,unsigned int uLowBound,
+ unsigned int uHighBound,unsigned int uDefault,bool bEnabled)
+{
+ m_iResetFlags |= (g_uintOptionsTable[optId].flags & KviOption_resetMask);
+ KviUIntSelector * d = addUIntSelector(pParent,txt,&(KVI_OPTION_UINT(optId)),uLowBound,uHighBound,uDefault,bEnabled);
+ QString tmp = m_szBasicTipStart;
+ tmp += g_uintOptionsTable[optId].name;
+ tmp += m_szBasicTipEnd;
+ KviTalToolTip::add(d,tmp);
+ return d;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////
+
+KviUIntSelector * KviOptionsWidget::addUShortIntSelector(int x1,int y1,int x2,int y2,const QString & txt,
+ unsigned short int * pOption,unsigned int uLowBound,
+ unsigned int uHighBound,unsigned int uDefault,bool bEnabled)
+{
+ KviUIntSelector * u = new KviUIntSelector(this,txt,(unsigned int *)pOption,uLowBound,uHighBound,uDefault,bEnabled,true);
+ addWidgetToLayout(u,x1,y1,x2,y2);
+ m_pSelectorInterfaceList->append(u);
+ return u;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviStringSelector * KviOptionsWidget::addStringSelector(int x1,int y1,int x2,int y2,const QString & txt,QString *pOption,bool bEnabled)
+{
+ KviStringSelector * d = new KviStringSelector(this,txt,pOption,bEnabled);
+ addWidgetToLayout(d,x1,y1,x2,y2);
+ m_pSelectorInterfaceList->append(d);
+ return d;
+}
+
+KviStringSelector * KviOptionsWidget::addStringSelector(QWidget * pParent,const QString & txt,QString *pOption,bool bEnabled)
+{
+ KviStringSelector * d = new KviStringSelector(pParent,txt,pOption,bEnabled);
+ m_pSelectorInterfaceList->append(d);
+ return d;
+}
+
+KviStringSelector * KviOptionsWidget::addStringSelector(int x1,int y1,int x2,int y2,const QString & txt,int optId,bool bEnabled)
+{
+ m_iResetFlags |= (g_stringOptionsTable[optId].flags & KviOption_resetMask);
+ KviStringSelector * d = addStringSelector(x1,y1,x2,y2,txt,&(KVI_OPTION_STRING(optId)),bEnabled);
+ QString tmp = m_szBasicTipStart;
+ tmp += g_stringOptionsTable[optId].name;
+ tmp += m_szBasicTipEnd;
+ KviTalToolTip::add(d,tmp);
+ return d;
+}
+
+KviStringSelector * KviOptionsWidget::addStringSelector(QWidget * pParent,const QString & txt,int optId,bool bEnabled)
+{
+ m_iResetFlags |= (g_stringOptionsTable[optId].flags & KviOption_resetMask);
+ KviStringSelector * d = addStringSelector(pParent,txt,&(KVI_OPTION_STRING(optId)),bEnabled);
+ QString tmp = m_szBasicTipStart;
+ tmp += g_stringOptionsTable[optId].name;
+ tmp += m_szBasicTipEnd;
+ KviTalToolTip::add(d,tmp);
+ return d;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviPasswordSelector * KviOptionsWidget::addPasswordSelector(int x1,int y1,int x2,int y2,const QString & txt,QString *pOption,bool bEnabled)
+{
+ KviPasswordSelector * d = new KviPasswordSelector(this,txt,pOption,bEnabled);
+ addWidgetToLayout(d,x1,y1,x2,y2);
+ m_pSelectorInterfaceList->append(d);
+ return d;
+}
+
+KviPasswordSelector * KviOptionsWidget::addPasswordSelector(QWidget * pParent,const QString & txt,QString *pOption,bool bEnabled)
+{
+ KviPasswordSelector * d = new KviPasswordSelector(pParent,txt,pOption,bEnabled);
+ m_pSelectorInterfaceList->append(d);
+ return d;
+}
+
+KviPasswordSelector * KviOptionsWidget::addPasswordSelector(int x1,int y1,int x2,int y2,const QString & txt,int optId,bool bEnabled)
+{
+ m_iResetFlags |= (g_stringOptionsTable[optId].flags & KviOption_resetMask);
+ KviPasswordSelector * d = addPasswordSelector(x1,y1,x2,y2,txt,&(KVI_OPTION_STRING(optId)),bEnabled);
+ QString tmp = m_szBasicTipStart;
+ tmp += g_stringOptionsTable[optId].name;
+ tmp += m_szBasicTipEnd;
+ KviTalToolTip::add(d,tmp);
+ return d;
+}
+
+KviPasswordSelector * KviOptionsWidget::addPasswordSelector(QWidget * pParent,const QString & txt,int optId,bool bEnabled)
+{
+ m_iResetFlags |= (g_stringOptionsTable[optId].flags & KviOption_resetMask);
+ KviPasswordSelector * d = addPasswordSelector(pParent,txt,&(KVI_OPTION_STRING(optId)),bEnabled);
+ QString tmp = m_szBasicTipStart;
+ tmp += g_stringOptionsTable[optId].name;
+ tmp += m_szBasicTipEnd;
+ KviTalToolTip::add(d,tmp);
+ return d;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviStringListSelector * KviOptionsWidget::addStringListSelector(int x1,int y1,int x2,int y2,const QString & txt,QStringList * pOption,bool bEnabled)
+{
+ KviStringListSelector * d = new KviStringListSelector(this,txt,pOption,bEnabled);
+ addWidgetToLayout(d,x1,y1,x2,y2);
+ m_pSelectorInterfaceList->append(d);
+ return d;
+}
+
+KviStringListSelector * KviOptionsWidget::addStringListSelector(int x1,int y1,int x2,int y2,const QString & txt,int optId,bool bEnabled)
+{
+ m_iResetFlags |= (g_stringlistOptionsTable[optId].flags & KviOption_resetMask);
+ KviStringListSelector * d = addStringListSelector(x1,y1,x2,y2,txt,&(KVI_OPTION_STRINGLIST(optId)),bEnabled);
+ QString tmp = m_szBasicTipStart;
+ tmp += g_stringlistOptionsTable[optId].name;
+ tmp += m_szBasicTipEnd;
+ KviTalToolTip::add(d,tmp);
+ return d;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviColorSelector * KviOptionsWidget::addColorSelector(int x1,int y1,int x2,int y2,const QString & txt,QColor * pOption,bool bEnabled)
+{
+ KviColorSelector * s = new KviColorSelector(this,txt,pOption,bEnabled);
+ addWidgetToLayout(s,x1,y1,x2,y2);
+ m_pSelectorInterfaceList->append(s);
+ return s;
+}
+
+KviColorSelector * KviOptionsWidget::addColorSelector(QWidget * pParent,const QString & txt,QColor * pOption,bool bEnabled)
+{
+ KviColorSelector * s = new KviColorSelector(pParent,txt,pOption,bEnabled);
+ m_pSelectorInterfaceList->append(s);
+ return s;
+}
+
+KviColorSelector * KviOptionsWidget::addColorSelector(int x1,int y1,int x2,int y2,const QString & txt,int optId,bool bEnabled)
+{
+ m_iResetFlags |= (g_colorOptionsTable[optId].flags & KviOption_resetMask);
+ KviColorSelector * d = addColorSelector(x1,y1,x2,y2,txt,&(KVI_OPTION_COLOR(optId)),bEnabled);
+ QString tmp = m_szBasicTipStart;
+ tmp += g_colorOptionsTable[optId].name;
+ tmp += m_szBasicTipEnd;
+ KviTalToolTip::add(d,tmp);
+ return d;
+}
+
+KviColorSelector * KviOptionsWidget::addColorSelector(QWidget * pParent,const QString & txt,int optId,bool bEnabled)
+{
+ m_iResetFlags |= (g_colorOptionsTable[optId].flags & KviOption_resetMask);
+ KviColorSelector * d = addColorSelector(pParent,txt,&(KVI_OPTION_COLOR(optId)),bEnabled);
+ QString tmp = m_szBasicTipStart;
+ tmp += g_colorOptionsTable[optId].name;
+ tmp += m_szBasicTipEnd;
+ KviTalToolTip::add(d,tmp);
+ return d;
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviMircTextColorSelector * KviOptionsWidget::addMircTextColorSelector(int x1,int y1,int x2,int y2,const QString & txt,unsigned int *uFore,unsigned int *uBack,bool bEnabled)
+{
+ KviMircTextColorSelector * s = new KviMircTextColorSelector(this,txt,uFore,uBack,bEnabled);
+ addWidgetToLayout(s,x1,y1,x2,y2);
+ m_pSelectorInterfaceList->append(s);
+ return s;
+}
+
+KviMircTextColorSelector * KviOptionsWidget::addMircTextColorSelector(QWidget * pParent,const QString & txt,unsigned int *uFore,unsigned int *uBack,bool bEnabled)
+{
+ KviMircTextColorSelector * s = new KviMircTextColorSelector(pParent,txt,uFore,uBack,bEnabled);
+ m_pSelectorInterfaceList->append(s);
+ return s;
+}
+
+KviMircTextColorSelector * KviOptionsWidget::addMircTextColorSelector(int x1,int y1,int x2,int y2,const QString & txt,int optForeId,int optBackId,bool bEnabled)
+{
+ m_iResetFlags |= (g_uintOptionsTable[optForeId].flags & KviOption_resetMask);
+ m_iResetFlags |= (g_uintOptionsTable[optBackId].flags & KviOption_resetMask);
+ KviMircTextColorSelector * d = addMircTextColorSelector(x1,y1,x2,y2,txt,&(KVI_OPTION_UINT(optForeId)),&(KVI_OPTION_UINT(optBackId)),bEnabled);
+ QString tmp = m_szBasicTipStart;
+ tmp += g_uintOptionsTable[optForeId].name;
+ tmp += m_szBasicTipEnd;
+ KviTalToolTip::add(d,tmp);
+ return d;
+}
+
+KviMircTextColorSelector * KviOptionsWidget::addMircTextColorSelector(QWidget * pParent,const QString & txt,int optForeId,int optBackId,bool bEnabled)
+{
+ m_iResetFlags |= (g_uintOptionsTable[optForeId].flags & KviOption_resetMask);
+ m_iResetFlags |= (g_uintOptionsTable[optBackId].flags & KviOption_resetMask);
+ KviMircTextColorSelector * d = addMircTextColorSelector(pParent,txt,&(KVI_OPTION_UINT(optForeId)),&(KVI_OPTION_UINT(optBackId)),bEnabled);
+ QString tmp = m_szBasicTipStart;
+ tmp += g_uintOptionsTable[optForeId].name;
+ tmp += m_szBasicTipEnd;
+ KviTalToolTip::add(d,tmp);
+ return d;
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviFontSelector * KviOptionsWidget::addFontSelector(int x1,int y1,int x2,int y2,const QString & txt,QFont * pOption,bool bEnabled)
+{
+ KviFontSelector * f = new KviFontSelector(this,txt,pOption,bEnabled);
+ addWidgetToLayout(f,x1,y1,x2,y2);
+ m_pSelectorInterfaceList->append(f);
+ return f;
+}
+
+KviFontSelector * KviOptionsWidget::addFontSelector(QWidget * pParent,const QString & txt,QFont * pOption,bool bEnabled)
+{
+ KviFontSelector * f = new KviFontSelector(pParent,txt,pOption,bEnabled);
+ m_pSelectorInterfaceList->append(f);
+ return f;
+}
+
+KviFontSelector * KviOptionsWidget::addFontSelector(int x1,int y1,int x2,int y2,const QString & txt,int optId,bool bEnabled)
+{
+ m_iResetFlags |= (g_fontOptionsTable[optId].flags & KviOption_resetMask);
+ KviFontSelector * d = addFontSelector(x1,y1,x2,y2,txt,&(KVI_OPTION_FONT(optId)),bEnabled);
+ QString tmp = m_szBasicTipStart;
+ tmp += g_fontOptionsTable[optId].name;
+ tmp += m_szBasicTipEnd;
+ KviTalToolTip::add(d,tmp);
+ return d;
+}
+
+KviFontSelector * KviOptionsWidget::addFontSelector(QWidget * pParent,const QString & txt,int optId,bool bEnabled)
+{
+ m_iResetFlags |= (g_fontOptionsTable[optId].flags & KviOption_resetMask);
+ KviFontSelector * d = addFontSelector(pParent,txt,&(KVI_OPTION_FONT(optId)),bEnabled);
+ QString tmp = m_szBasicTipStart;
+ tmp += g_fontOptionsTable[optId].name;
+ tmp += m_szBasicTipEnd;
+ KviTalToolTip::add(d,tmp);
+ return d;
+}
+
+//#define DECLARE_COMMIT_FUNCTION(__fnc,__class,__classString)
+// void KviOptionsWidget::__fnc()
+// {
+// QObjectList * l = queryList(__classString);
+// if(!l)return;
+// QObjectListIt it(*l);
+// while(it.current())
+// {
+// ((__class *)it.current())->commit();
+// ++it;
+// }
+// delete l;
+// }
+
+//DECLARE_COMMIT_FUNCTION(commitBoolSelectors,KviBoolSelector,"KviBoolSelector")
+//DECLARE_COMMIT_FUNCTION(commitUIntSelectors,KviUIntSelector,"KviUIntSelector")
+//DECLARE_COMMIT_FUNCTION(commitStringSelectors,KviStringSelector,"KviStringSelector")
+//DECLARE_COMMIT_FUNCTION(commitPixmapSelectors,KviPixmapSelector,"KviPixmapSelector")
+
+void KviOptionsWidget::addRowSpacer(int x1,int y1,int x2,int y2)
+{
+ QWidget * w = new QWidget(this);
+ addWidgetToLayout(w,x1,y1,x2,y2);
+ layout()->setRowStretch(y1,1);
+}
+
+QLabel * KviOptionsWidget::addLabel(int x1,int y1,int x2,int y2,const QString & text,bool bEnabled)
+{
+ QLabel * l = new QLabel(text,this);
+#ifdef COMPILE_USE_QT4
+ l->setWordWrap(true);
+#endif
+ l->setEnabled(bEnabled);
+ addWidgetToLayout(l,x1,y1,x2,y2);
+ return l;
+}
+
+QLabel * KviOptionsWidget::addLabel(QWidget * pParent,const QString & text,bool bEnabled)
+{
+ QLabel * l = new QLabel(text,pParent);
+#ifdef COMPILE_USE_QT4
+ l->setWordWrap(true);
+#endif
+ l->setEnabled(bEnabled);
+ return l;
+}
+
+QLineEdit * KviOptionsWidget::addLineEdit(int x1,int y1,int x2,int y2,bool bEnabled)
+{
+ QLineEdit * l = new QLineEdit(this);
+ l->setEnabled(bEnabled);
+ addWidgetToLayout(l,x1,y1,x2,y2);
+ return l;
+}
+
+QFrame * KviOptionsWidget::addSeparator(int x1,int y1,int x2,int y2)
+{
+ QFrame * f = new QFrame(this);
+ f->setFrameStyle(QFrame::HLine | QFrame::Sunken);
+ addWidgetToLayout(f,x1,y1,x2,y2);
+ return f;
+}
+
+#ifdef COMPILE_USE_QT4
+KviTalGroupBox * KviOptionsWidget::addGroupBox(int x1,int y1,int x2,int y2,int nStrips,Qt::Orientation o,const QString &txt,bool bEnabled)
+#else
+KviTalGroupBox * KviOptionsWidget::addGroupBox(int x1,int y1,int x2,int y2,int nStrips,KviTalGroupBox::Orientation o,const QString &txt,bool bEnabled)
+#endif
+{
+ KviTalGroupBox * g = new KviTalGroupBox(nStrips,o,txt,this);
+ g->setEnabled(bEnabled);
+ addWidgetToLayout(g,x1,y1,x2,y2);
+ return g;
+}
+
+void KviOptionsWidget::addAdvancedButton(int x1,int y1,int x2,int y2)
+{
+ QWidget * w = topLevelWidget();
+ if(!w)return;
+ if(!w->inherits("KviGeneralOptionsDialog"))return;
+
+ QPushButton * b = new QPushButton(__tr2qs("Advanced..."),this);
+ connect(b,SIGNAL(clicked()),this,SLOT(switchToAdvancedPage()));
+ addWidgetToLayout(b,x1,y1,x2,y2);
+}
+
+
+void KviOptionsWidget::commitSelectors()
+{
+// if(m_iSelectors & KVI_OPTIONSELECTOR_TYPE_BOOL)commitBoolSelectors();
+// if(m_iSelectors & KVI_OPTIONSELECTOR_TYPE_UINT)commitUIntSelectors();
+// if(m_iSelectors & KVI_OPTIONSELECTOR_TYPE_STRING)commitStringSelectors();
+// if(m_iSelectors & KVI_OPTIONSELECTOR_TYPE_PIXMAP)commitPixmapSelectors();
+// m_iSelectors = 0;
+ for(KviSelectorInterface * i = m_pSelectorInterfaceList->first();i;i = m_pSelectorInterfaceList->next())
+ {
+ i->commit();
+ }
+}
+
+void KviOptionsWidget::commitOptionsReset()
+{
+ if(m_iResetFlags)g_pApp->optionResetUpdate(m_iResetFlags);
+ //m_iResetFlags = 0;
+}
+
+void KviOptionsWidget::commit()
+{
+ commitSelectors();
+ commitOptionsReset();
+}
+
+void KviOptionsWidget::switchToAdvancedPage()
+{
+ // FIXME: what happens if we're toplevel ????
+ // (so nobody listens to this signal....)
+
+ emit wantToSwitchToAdvancedPage(this);
+}
+
+#include "kvi_optionswidget.moc"
diff --git a/src/kvirc/ui/kvi_optionswidget.h b/src/kvirc/ui/kvi_optionswidget.h
new file mode 100644
index 00000000..84660939
--- /dev/null
+++ b/src/kvirc/ui/kvi_optionswidget.h
@@ -0,0 +1,163 @@
+#ifndef _KVI_OPTIONSWIDGET_H_
+#define _KVI_OPTIONSWIDGET_H_
+
+//=============================================================================
+//
+// File : kvi_optionswidget.h
+// Creation date : Mon Jun 10 2000 17:47:33 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include <qframe.h>
+#include <qlayout.h>
+#include "kvi_pointerlist.h"
+#include <qlineedit.h>
+#include <kvi_tal_groupbox.h>
+#include <qtabwidget.h>
+#include "kvi_tal_groupbox.h"
+#include "kvi_selectors.h"
+
+class KVIRC_API KviOptionsWidget : public QFrame, public KviSelectorInterface
+{
+ Q_OBJECT
+public:
+ KviOptionsWidget(QWidget * parent,const char * name = 0,bool bSunken = true);
+ ~KviOptionsWidget();
+private:
+ QGridLayout * m_pLayout;
+ QTabWidget * m_pTabWidget;
+ int m_iResetFlags;
+ int m_iSelectors;
+ KviPointerList<KviSelectorInterface> * m_pSelectorInterfaceList;
+ static QString m_szBasicTipStart;
+ static QString m_szBasicTipEnd;
+public:
+ void mergeResetFlag(int flag){ m_iResetFlags |= flag; };
+ void createLayout(int rows,int columns);
+ QGridLayout * layout(){ return m_pLayout; };
+protected:
+ void commitSelectors();
+ void commitOptionsReset();
+public:
+ void mergeTip(QWidget * w,const QString &tip);
+
+ // tabbed page paradigm
+ void createTabbedPage();
+ void addOptionsWidget(const QString &szText,const QIconSet &iconSet,KviOptionsWidget * pWidget);
+ QTabWidget * tabWidget(){ return m_pTabWidget; };
+
+ // non tabbed page paradigm
+ KviBoolSelector * addBoolSelector(int x1,int y1,int x2,int y2,const QString & txt,bool * pOption,bool bEnabled = true);
+ KviBoolSelector * addBoolSelector(QWidget * pParent,const QString & txt,bool * pOption,bool bEnabled = true);
+ KviBoolSelector * addBoolSelector(int x1,int y1,int x2,int y2,const QString & txt,int optId,bool bEnabled = true);
+ KviBoolSelector * addBoolSelector(QWidget * pParnt,const QString & txt,int optId,bool bEnabled = true);
+
+ KviColorSelector * addColorSelector(int x1,int y1,int x2,int y2,const QString & txt,QColor * pOption,bool bEnabled = true);
+ KviColorSelector * addColorSelector(QWidget * pParent,const QString & txt,QColor * pOption,bool bEnabled = true);
+ KviColorSelector * addColorSelector(int x1,int y1,int x2,int y2,const QString & txt,int optId,bool bEnabled = true);
+ KviColorSelector * addColorSelector(QWidget * pParent,const QString & txt,int optId,bool bEnabled = true);
+
+ KviMircTextColorSelector * addMircTextColorSelector(int x1,int y1,int x2,int y2,const QString & txt,unsigned int *uFore,unsigned int *uBack,bool bEnabled = true);
+ KviMircTextColorSelector * addMircTextColorSelector(QWidget * pParent,const QString & txt,unsigned int *uFore,unsigned int *uBack,bool bEnabled = true);
+ KviMircTextColorSelector * addMircTextColorSelector(int x1,int y1,int x2,int y2,const QString & txt,int optForeId,int optBackId,bool bEnabled = true);
+ KviMircTextColorSelector * addMircTextColorSelector(QWidget * pParent,const QString & txt,int optForeId,int optBackId,bool bEnabled = true);
+
+ KviDirectorySelector * addDirectorySelector(int x1,int y1,int x2,int y2,const QString & txt,QString * pOption,bool bEnabled = true);
+ KviDirectorySelector * addDirectorySelector(QWidget * pParent,const QString & txt,QString * pOption,bool bEnabled = true);
+ KviDirectorySelector * addDirectorySelector(int x1,int y1,int x2,int y2,const QString & txt,int optId,bool bEnabled = true);
+ KviDirectorySelector * addDirectorySelector(QWidget * pParent,const QString & txt,int optId,bool bEnabled = true);
+
+ KviFileSelector * addFileSelector(int x1,int y1,int x2,int y2,const QString & txt,QString * pOption,bool bEnabled = true);
+ KviFileSelector * addFileSelector(QWidget * pParent,const QString & txt,QString * pOption,bool bEnabled = true);
+ KviFileSelector * addFileSelector(int x1,int y1,int x2,int y2,const QString & txt,int optId,bool bEnabled = true);
+ KviFileSelector * addFileSelector(QWidget * pParent,const QString & txt,int optId,bool bEnabled = true);
+
+ KviSoundSelector * addSoundSelector(int x1,int y1,int x2,int y2,const QString & txt,QString * pOption,bool bEnabled = true);
+ KviSoundSelector * addSoundSelector(QWidget * pParent,const QString & txt,QString * pOption,bool bEnabled = true);
+ KviSoundSelector * addSoundSelector(int x1,int y1,int x2,int y2,const QString & txt,int optId,bool bEnabled = true);
+ KviSoundSelector * addSoundSelector(QWidget * pParent,const QString & txt,int optId,bool bEnabled = true);
+
+
+ KviFontSelector * addFontSelector(int x1,int y1,int x2,int y2,const QString & txt,QFont * pOption,bool bEnabled = true);
+ KviFontSelector * addFontSelector(QWidget * pParent,const QString & txt,QFont * pOption,bool bEnabled = true);
+ KviFontSelector * addFontSelector(int x1,int y1,int x2,int y2,const QString & txt,int optId,bool bEnabled = true);
+ KviFontSelector * addFontSelector(QWidget * pParent,const QString & txt,int optId,bool bEnabled = true);
+
+ KviPasswordSelector * addPasswordSelector(int x1,int y1,int x2,int y2,const QString & txt,QString * pOption,bool bEnabled = true);
+ KviPasswordSelector * addPasswordSelector(QWidget * pParent,const QString & txt,QString * pOption,bool bEnabled = true);
+ KviPasswordSelector * addPasswordSelector(int x1,int y1,int x2,int y2,const QString & txt,int optId,bool bEnabled = true);
+ KviPasswordSelector * addPasswordSelector(QWidget * pParent,const QString & txt,int optId,bool bEnabled = true);
+
+ KviPixmapSelector * addPixmapSelector(int x1,int y1,int x2,int y2,const QString & txt,int optId,bool bEnabled = true);
+ KviPixmapSelector * addPixmapSelector(int x1,int y1,int x2,int y2,const QString & txt,KviPixmap * pOption,bool bEnabled = true);
+
+ KviStringListSelector * addStringListSelector(int x1,int y1,int x2,int y2,const QString & txt,QStringList * pOption,bool bEnabled = true);
+ KviStringListSelector * addStringListSelector(int x1,int y1,int x2,int y2,const QString & txt,int optId,bool bEnabled = true);
+
+ KviStringSelector * addStringSelector(int x1,int y1,int x2,int y2,const QString & txt,QString * pOption,bool bEnabled = true);
+ KviStringSelector * addStringSelector(QWidget * pParent,const QString & txt,QString * pOption,bool bEnabled = true);
+ KviStringSelector * addStringSelector(int x1,int y1,int x2,int y2,const QString & txt,int optId,bool bEnabled = true);
+ KviStringSelector * addStringSelector(QWidget * pParent,const QString & txt,int optId,bool bEnabled = true);
+
+ KviUIntSelector * addUIntSelector(int x1,int y1,int x2,int y2,const QString & txt,unsigned int * pOption,
+ unsigned int uLowBound,unsigned int uHighBound,unsigned int uDefault,bool bEnabled = true);
+ KviUIntSelector * addUIntSelector(QWidget * pParent,const QString & txt,unsigned int * pOption,
+ unsigned int uLowBound,unsigned int uHighBound,unsigned int uDefault,bool bEnabled = true);
+ KviUIntSelector * addUIntSelector(int x1,int y1,int x2,int y2,const QString & txt,int optId,
+ unsigned int uLowBound,unsigned int uHighBound,unsigned int uDefault,bool bEnabled = true);
+ KviUIntSelector * addUIntSelector(QWidget * pParent,const QString & txt,int optId,
+ unsigned int uLowBound,unsigned int uHighBound,unsigned int uDefault,bool bEnabled = true);
+
+
+ KviUIntSelector * addUShortIntSelector(int x1,int y1,int x2,int y2,const QString & txt,unsigned short int * pOption,
+ unsigned int uLowBound,unsigned int uHighBound,unsigned int uDefault,bool bEnabled = true);
+
+ QLabel * addLabel(int x1,int y1,int x2,int y2,const QString & text,bool bEnabled = true);
+ QLabel * addLabel(QWidget * pParent,const QString & text,bool bEnabled = true);
+ QLineEdit * addLineEdit(int x1,int y1,int x2,int y2,bool bEnabled = true);
+#ifdef COMPILE_USE_QT4
+ KviTalGroupBox * addGroupBox(int x1,int y1,int x2,int y2,int nStrips,Qt::Orientation o,const QString &txt,bool bEnabled = true);
+#else
+ KviTalGroupBox * addGroupBox(int x1,int y1,int x2,int y2,int nStrips,KviTalGroupBox::Orientation o,const QString &txt,bool bEnabled = true);
+#endif
+ QFrame * addSeparator(int x1,int y1,int x2,int y2);
+ void addRowSpacer(int x1,int y1,int x2,int y2);
+
+ void addWidgetToLayout(QWidget * w,int x1,int y1,int x2,int y2);
+
+ // this does NOT add the advanced button if this page is not inside a KviGeneralOptionsDialog
+ // this is because nobody listens to the "switchToAdvancedPage" requests....
+ void addAdvancedButton(int x1,int y1,int x2,int y2);
+
+ virtual void commit();
+protected slots:
+ // this is internal to the options dialog (options module)
+ // it attempts to show all the hidden subitems (usually the "Advanced...") page
+ // and switch to the first of them
+ void switchToAdvancedPage();
+signals:
+ // internal signal used for the stuff above
+ void wantToSwitchToAdvancedPage(KviOptionsWidget *);
+};
+
+
+#endif //!_KVI_OPTIONSWIDGET_H_
diff --git a/src/kvirc/ui/kvi_query.cpp b/src/kvirc/ui/kvi_query.cpp
new file mode 100644
index 00000000..c32c33f8
--- /dev/null
+++ b/src/kvirc/ui/kvi_query.cpp
@@ -0,0 +1,659 @@
+//=============================================================================
+//
+// File : kvi_query.cpp
+// Creation date : Tue Aug 7 2000 14:23:22 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+#include "kvi_query.h"
+#include "kvi_console.h"
+#include "kvi_iconmanager.h"
+#include "kvi_ircview.h"
+#include "kvi_input.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_settings.h"
+#include "kvi_ircsocket.h"
+#include "kvi_out.h"
+#include "kvi_taskbar.h"
+#include "kvi_config.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_settings.h"
+#include "kvi_themedlabel.h"
+#include "kvi_useraction.h"
+#include "kvi_parameterlist.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectionuserinfo.h"
+#include "kvi_sparser.h"
+#include "kvi_ircuserdb.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_toolwindows_container.h"
+#include "kvi_qcstring.h"
+
+#ifdef COMPILE_CRYPT_SUPPORT
+ #include "kvi_crypt.h"
+ #include "kvi_cryptcontroller.h"
+#endif
+
+#include "kvi_kvs_eventtriggers.h"
+
+#include <qpixmap.h>
+#include <qsplitter.h>
+#include "kvi_tal_hbox.h"
+#include <qtoolbutton.h>
+#include "kvi_draganddrop.h"
+#include "kvi_valuelist.h"
+
+KviQuery::KviQuery(KviFrame * lpFrm,KviConsole * lpConsole,const QString &nick)
+: KviWindow(KVI_WINDOW_TYPE_QUERY,lpFrm,nick,lpConsole)
+{
+
+ m_iFlags = 0;
+ connection()->registerQuery(this);
+
+ //m_pTopSplitter = new QSplitter(QSplitter::Horizontal,this,"top_splitter");
+ m_pButtonBox = new KviTalHBox(this);
+ m_pLabel = new KviThemedLabel(m_pButtonBox,"query_label");
+ m_pLabel->setAutoHeight(1);
+ updateLabelText();
+ m_pButtonBox->setStretchFactor(m_pLabel,1);
+
+ // The button box on the right
+ //KviTalHBox * box = new KviTalHBox(m_pTopSplitter,"button_box");
+ if(KVI_OPTION_BOOL(KviOption_boolShowExtendedInfoInQueryLabel))
+ m_pButtonGrid= (QFrame*) new KviTalGrid(2,Qt::Horizontal,m_pButtonBox);
+ else
+ m_pButtonGrid= (QFrame*) new KviTalGrid(4,Qt::Horizontal,m_pButtonBox);
+
+ createTextEncodingButton(m_pButtonGrid);
+
+#ifdef COMPILE_USE_QT4
+ m_pSplitter = new QSplitter(Qt::Horizontal,this,"main_splitter");
+#else
+ m_pSplitter = new QSplitter(QSplitter::Horizontal,this,"main_splitter");
+#endif
+ m_pIrcView = new KviIrcView(m_pSplitter,lpFrm,this);
+ connect(m_pIrcView,SIGNAL(rightClicked()),this,SLOT(textViewRightClicked()));
+ //m_pEditorsContainer= new KviToolWindowsContainer(m_pSplitter);
+
+
+ m_pListViewButton = new KviWindowToolPageButton(KVI_SMALLICON_HIDELISTVIEW,KVI_SMALLICON_SHOWLISTVIEW,__tr2qs("Show User List"),buttonContainer(),true,"list_view_button");
+ connect(m_pListViewButton,SIGNAL(clicked()),this,SLOT(toggleListView()));
+
+#ifdef COMPILE_CRYPT_SUPPORT
+ createCryptControllerButton(m_pButtonGrid);
+#endif
+
+ m_pUserListView = new KviUserListView(m_pSplitter,m_pListViewButton,connection()->userDataBase(),this,7,__tr2qs("Query Targets"),"user_list_view");
+
+ m_pInput = new KviInput(this,m_pUserListView);
+
+ if(KVI_OPTION_BOOL(KviOption_boolAutoLogQueries)) m_pIrcView->startLogging();
+ // FIXME: #warning "Maybe tell the user all that we know about the remote end(s)....channels..."
+
+ m_pIrcView->enableDnd(TRUE);
+ connect(m_pIrcView,SIGNAL(fileDropped(const char *)),this,SLOT(slotDndEvents(const char *)));
+
+ updateCaption();
+}
+
+KviQuery::~KviQuery()
+{
+ m_pUserListView->partAll();
+ if(type() == KVI_WINDOW_TYPE_DEADQUERY)
+ context()->unregisterDeadQuery(this);
+ else
+ connection()->unregisterQuery(this);
+}
+
+void KviQuery::updateLabelText()
+{
+ QString szText=getInfoLabelText();
+ if(szText!=m_pLabel->text())
+ {
+ m_pLabel->setText(szText);
+ KviTalToolTip::add(m_pLabel,getInfoLabelTipText());
+ }
+}
+
+QString KviQuery::getInfoLabelTipText()
+{
+ QString txt;
+ KviIrcUserEntry * e = connection()->userDataBase()->find(m_szName);
+ if(e)
+ {
+ QString tmp;
+ QString szMask;
+ if(e->hasUser())
+ szMask+=e->user();
+ else
+ szMask+="*";
+ szMask+="@";
+ if(e->hasHost())
+ szMask+=e->host();
+ else
+ szMask+="*";
+ tmp+="\n";
+ QString szChans;
+ connection()->getCommonChannels(m_szName,szChans,0);
+ if(console()->connection())
+ {
+
+ txt = "<html>" \
+ "<body>" \
+ "<table width=\"100%\">";
+
+ txt += START_TABLE_BOLD_ROW;
+ txt += __tr2qs("Query target:");
+ txt += END_TABLE_BOLD_ROW;
+ txt += "<tr><td>";
+
+ if(e->hasRealName())
+ tmp=__tr2qs("%1 is %2 (%3)").arg(m_szName).arg(szMask).arg(KviMircCntrl::stripControlBytes(e->realName()));
+ else
+ tmp=__tr2qs("%1 is %2").arg(m_szName).arg(szMask);
+
+ tmp.replace('&',"&amp;");
+ tmp.replace('<',"&lt;");
+ tmp.replace('>',"&gt;");
+
+ txt += tmp;
+
+ txt += "</td></tr>";
+
+ if(e->hasServer())
+ {
+ txt+="<tr><td>";
+ if(e->hasHops())
+ txt+=__tr2qs("%1 is using irc server: %2 (%3 hops)").arg(m_szName).arg(e->server()).arg(e->hops());
+ else
+ txt+=__tr2qs("%1 is using irc server: %2").arg(m_szName).arg(e->server());
+ txt+="</td></tr>";
+ }
+
+ if(e->isAway())
+ {
+ txt+="<tr><td>";
+ txt+=__tr2qs("%1 is probably away").arg(m_szName);
+ txt+="</td></tr>";
+ }
+
+ txt+="<tr><td>";
+ tmp=__tr2qs("Common channels with %1: %2").arg(m_szName).arg(szChans);
+
+ tmp.replace('&',"&amp;");
+ tmp.replace('<',"&lt;");
+ tmp.replace('>',"&gt;");
+
+ txt+=tmp;
+ txt +="</td></tr>";
+
+ txt += "</table>" \
+ "</body>" \
+ "<html>";
+ } else {
+ txt=__tr2qs("[Dead Query]");
+ }
+ }
+ return txt;
+}
+
+QString KviQuery::getInfoLabelText()
+{
+ QString tmp;
+ if(KVI_OPTION_BOOL(KviOption_boolShowExtendedInfoInQueryLabel))
+ {
+ KviIrcUserEntry * e = connection()->userDataBase()->find(m_szName);
+ if(e)
+ {
+ QString szMask;
+ if(console()->connection())
+ {
+ if(e->hasUser())
+ szMask+=e->user();
+ else
+ szMask+="*";
+ szMask+="@";
+ if(e->hasHost())
+ szMask+=e->host();
+ else
+ szMask+="*";
+ if(e->hasRealName())
+ tmp=__tr2qs("Query with %1!%2 (%3)").arg(m_szName).arg(szMask).arg(KviMircCntrl::stripControlBytes(e->realName()));
+ else
+ tmp=__tr2qs("Query with %1!%2").arg(m_szName).arg(szMask);
+ if(e->hasServer())
+ tmp+=__tr2qs(", using server %1").arg(e->server());
+ if(e->hasHops())
+ tmp+=__tr2qs(" (%1 hops)").arg(e->hops());
+ if(e->isAway())
+ tmp+=__tr2qs(", probably away");
+ tmp+="\n";
+ QString szChans;
+ connection()->getCommonChannels(m_szName,szChans,0);
+ tmp+=__tr2qs("Common channels: %2").arg(szChans);
+ } else {
+ tmp=__tr2qs("[Dead Query]");
+ }
+ }
+ }
+ return tmp;
+}
+void KviQuery::slotDndEvents(const char *file)
+{
+ KVS_TRIGGER_EVENT_1(KviEvent_OnQueryFileDropped,this,QString(file));
+}
+
+void KviQuery::triggerCreationEvents()
+{
+ if(!KVI_OPTION_STRING(KviOption_stringOnNewQueryOpenedSound).isEmpty()) KviKvsScript::run("snd.play $0",0,new KviKvsVariantList(new KviKvsVariant(KVI_OPTION_STRING(KviOption_stringOnNewQueryOpenedSound))));
+ KVS_TRIGGER_EVENT_0(KviEvent_OnQueryWindowCreated,this);
+}
+
+void KviQuery::getBaseLogFileName(QString &buffer)
+{
+ if(console()->connection())
+ {
+ buffer=windowName();
+ buffer += ".";
+ buffer += console()->currentNetworkName();
+ } else {
+ buffer=windowName();
+ buffer+=".";
+ buffer+=console()->ircContextId();
+ }
+}
+
+void KviQuery::mergeQuery(KviQuery * q)
+{
+ m_pIrcView->appendMessagesFrom(q->m_pIrcView);
+ updateLabelText();
+}
+
+void KviQuery::textViewRightClicked()
+{
+ KVS_TRIGGER_EVENT_0(KviEvent_OnQueryPopupRequest,this);
+}
+
+void KviQuery::saveProperties(KviConfig *cfg)
+{
+ KviWindow::saveProperties(cfg);
+ cfg->writeEntry("Splitter",m_pSplitter->sizes());
+ cfg->writeEntry("UserListViewVisible",m_pUserListView->isVisible());
+}
+
+void KviQuery::loadProperties(KviConfig *cfg)
+{
+ int w = width();
+ KviWindow::loadProperties(cfg);
+ KviValueList<int> def;
+ def.append((w * 80) / 100);
+ def.append((w * 20) / 100);
+ m_pSplitter->setSizes(cfg->readIntListEntry("Splitter",def));
+ showListView(cfg->readBoolEntry("UserListViewVisible",false));
+}
+
+void KviQuery::notifyTargetChange(const QString &oldNick,const QString &oldUser,const QString &oldHost,const QString &nick,const QString &user,const QString &host)
+{
+ QString oldN = oldNick.isEmpty() ? QString("*") : oldNick;
+ QString oldU = oldUser.isEmpty() ? QString("*") : oldUser;
+ QString oldH = oldHost.isEmpty() ? QString("*") : oldHost;
+ output(KVI_OUT_QUERYTRACE,
+ __tr2qs("The target of this query has changed from \r!n\r%Q\r [%Q@\r!h\r%Q\r] to \r!n\r%Q\r [%Q@\r!h\r%Q\r]"),
+ &oldN,&oldU,&oldH,&nick,&user,&host);
+ updateLabelText();
+}
+
+
+void KviQuery::userAction(const QString &nick,const QString &user,const QString &host,unsigned int uActionType)
+{
+ int iTemperature = kvi_getUserActionTemperature(uActionType);
+ if(KVI_OPTION_BOOL(KviOption_boolEnableQueryTracing))
+ {
+ QString oldUser,oldHost;
+ if(!m_pUserListView->userActionVerifyMask(nick,user,host,iTemperature,oldUser,oldHost))
+ notifyTargetChange(nick,oldUser,oldHost,nick,user,host);
+ } else {
+ m_pUserListView->userAction(nick,user,host,iTemperature);
+ }
+ updateLabelText();
+}
+
+
+void KviQuery::userAction(const QString &nick,unsigned int uActionType)
+{
+ int iTemperature = kvi_getUserActionTemperature(uActionType);
+ m_pUserListView->userAction(nick,iTemperature);
+ updateLabelText();
+}
+
+void KviQuery::userAction(KviIrcMask *user,unsigned int uActionType)
+{
+ int iTemperature = kvi_getUserActionTemperature(uActionType);
+ if(KVI_OPTION_BOOL(KviOption_boolEnableQueryTracing))
+ {
+ QString oldUser,oldHost;
+ if(!m_pUserListView->userActionVerifyMask(user->nick(),user->user(),user->host(),iTemperature,oldUser,oldHost))
+ notifyTargetChange(user->nick(),oldUser,oldHost,user->nick(),user->user(),user->host());
+ } else {
+ m_pUserListView->userAction(user,iTemperature);
+ }
+ updateLabelText();
+}
+
+
+KviUserListEntry * KviQuery::setTarget(const QString &nick,const QString &user,const QString &host)
+{
+ KviUserListEntry * e = m_pUserListView->join(nick,user,host);
+ if((!e->globalData()->avatar()) && (!user.isEmpty()) && (user != "*"))
+ m_pConsole->checkDefaultAvatar(e->globalData(),nick,user,host);
+
+ setWindowName(nick);
+ updateCaption();
+
+ if(KVI_OPTION_BOOL(KviOption_boolEnableQueryTracing))
+ {
+ QString szChans;
+ int iChans = m_pConsole->connection()->getCommonChannels(nick,szChans);
+ notifyCommonChannels(nick,user,host,iChans,szChans);
+ }
+
+ KVS_TRIGGER_EVENT_3(KviEvent_OnQueryTargetAdded,this,nick,user,host);
+ updateLabelText();
+ return e;
+}
+
+void KviQuery::notifyCommonChannels(const QString &nick,const QString &user,const QString &host,int iChans,const QString &szChans)
+{
+ static QString star("*");
+ if(iChans > 0)
+ {
+ output(KVI_OUT_QUERYTRACE,__tr2qs("Common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]: %Q"),
+ &nick,user.isEmpty() ? &star : &user,host.isEmpty() ? &star : &host,&szChans);
+ } else {
+ output(KVI_OUT_QUERYTRACE,__tr2qs("No common channels for \r!n\r%Q\r [%Q@\r!h\r%Q\r]"),
+ &nick,user.isEmpty() ? &star : &user,host.isEmpty() ? &star : &host);
+ }
+ updateLabelText();
+}
+
+
+
+
+/*void KviQuery::updateTargets()
+{
+ QString szName;
+
+ if(targetCount() > 0)
+ {
+ KviPointerHashTableIterator<QString,KviUserListEntry> it(*(m_pUserListView->entryDict()));
+ if(it.current())szName = it.currentKey();
+ }
+
+ if(szName.isEmpty())szName = __tr2qs("[No targets]");
+
+ setWindowName(szName);
+
+ updateCaption();
+}*/
+
+void KviQuery::fillCaptionBuffers()
+{
+ static QString begin("<nobr><font color=\"");
+ static QString boldbegin("\"><b>");
+ static QString endofbold("</b></font> <font color=\"");
+ static QString endoffont("\">");
+ static QString end("</font></nobr>");
+
+ if(!console()->connection())
+ {
+ QString dead = __tr2qs("[Dead query]");
+
+ m_szPlainTextCaption = windowName();
+ m_szPlainTextCaption += " : ";
+ m_szPlainTextCaption += dead;
+
+ m_szHtmlActiveCaption = begin;
+ m_szHtmlActiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name();
+ m_szHtmlActiveCaption += boldbegin;
+ m_szHtmlActiveCaption += windowName();
+ m_szHtmlActiveCaption += endofbold;
+ m_szHtmlActiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextActive2).name();
+ m_szHtmlActiveCaption += endoffont;
+ m_szHtmlActiveCaption += dead;
+ m_szHtmlActiveCaption += end;
+
+ m_szHtmlInactiveCaption = begin;
+ m_szHtmlInactiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name();
+ m_szHtmlInactiveCaption += boldbegin;
+ m_szHtmlInactiveCaption += windowName();
+ m_szHtmlInactiveCaption += endofbold;
+ m_szHtmlInactiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive2).name();
+ m_szHtmlInactiveCaption += endoffont;
+ m_szHtmlInactiveCaption += dead;
+ m_szHtmlInactiveCaption += end;
+
+ return;
+ }
+
+ QString szNickOnServer = QChar('[');
+ szNickOnServer += connection()->currentNickName();
+ szNickOnServer += __tr2qs(" on ");
+ szNickOnServer += connection()->currentServerName();
+ szNickOnServer += QChar(']');
+
+ m_szPlainTextCaption = windowName();
+ m_szPlainTextCaption += QChar(' ');
+ m_szPlainTextCaption += szNickOnServer;
+
+ m_szHtmlActiveCaption = begin;
+ m_szHtmlActiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name();
+ m_szHtmlActiveCaption += boldbegin;
+ m_szHtmlActiveCaption += windowName();
+ m_szHtmlActiveCaption += endofbold;
+ m_szHtmlActiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextActive2).name();
+ m_szHtmlActiveCaption += endoffont;
+ m_szHtmlActiveCaption += szNickOnServer;
+ m_szHtmlActiveCaption += end;
+
+ m_szHtmlInactiveCaption = begin;
+ m_szHtmlInactiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name();
+ m_szHtmlInactiveCaption += boldbegin;
+ m_szHtmlInactiveCaption += windowName();
+ m_szHtmlInactiveCaption += endofbold;
+ m_szHtmlInactiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive2).name();
+ m_szHtmlInactiveCaption += endoffont;
+ m_szHtmlInactiveCaption += szNickOnServer;
+ m_szHtmlInactiveCaption += end;
+}
+
+bool KviQuery::nickChange(const QString &oldNick,const QString &newNick)
+{
+ bool bRet = m_pUserListView->nickChange(oldNick,newNick);
+ if(!bRet)return false; // ugh!! ?
+ setWindowName(newNick);
+ updateCaption();
+ updateLabelText();
+ return bRet;
+}
+
+void KviQuery::showListView(bool bShow)
+{
+ if(!bShow)
+ {
+ m_pUserListView->hide();
+ if(m_pListViewButton->isOn())m_pListViewButton->setOn(false);
+ } else {
+ m_pUserListView->show();
+ if(!(m_pListViewButton->isOn()))m_pListViewButton->setOn(true);
+ }
+}
+
+void KviQuery::toggleListView()
+{
+ showListView(!m_pUserListView->isVisible());
+}
+
+void KviQuery::setDeadQuery()
+{
+ m_iFlags |= KVI_QUERY_FLAG_DEAD;
+
+ m_pUserListView->enableUpdates(false);
+ m_pUserListView->partAll();
+ m_pUserListView->enableUpdates(true);
+ m_pUserListView->setUserDataBase(0);
+ connection()->unregisterQuery(this);
+ context()->registerDeadQuery(this);
+ setType(KVI_WINDOW_TYPE_DEADQUERY);
+
+ updateIcon();
+ updateCaption();
+ updateLabelText();
+};
+
+void KviQuery::setAliveQuery()
+{
+ m_iFlags &= ~KVI_QUERY_FLAG_DEAD;
+ m_pUserListView->setUserDataBase(connection()->userDataBase());
+ setType(KVI_WINDOW_TYPE_QUERY);
+ context()->unregisterDeadQuery(this);
+ connection()->registerQuery(this);
+ // Update log file name
+ if(m_pIrcView->isLogging()) m_pIrcView->startLogging();
+ updateIcon();
+ updateCaption();
+ updateLabelText();
+}
+
+void KviQuery::applyOptions()
+{
+ m_pUserListView->applyOptions();
+ updateLabelText();
+ // this applies options for IrcView and Input and forces the window to relayout
+ KviWindow::applyOptions();
+}
+
+QPixmap * KviQuery::myIconPtr()
+{
+ return g_pIconManager->getSmallIcon(isDeadQuery() ? KVI_SMALLICON_DEADQUERY : KVI_SMALLICON_QUERY);
+}
+
+void KviQuery::resizeEvent(QResizeEvent *e)
+{
+ int hght = m_pInput->heightHint();
+ int hght2 = m_pButtonBox->sizeHint().height();
+ m_pButtonBox->setGeometry(0,0,width(),hght2);
+ m_pSplitter->setGeometry(0,hght2,width(),height() - (hght + hght2));
+ m_pInput->setGeometry(0,height() - hght,width(),hght);
+}
+
+QSize KviQuery::sizeHint() const
+{
+ QSize ret(m_pSplitter->sizeHint().width(),m_pIrcView->sizeHint().height() + m_pInput->heightHint());
+ return ret;
+}
+
+void KviQuery::ownMessage(const QString &buffer)
+{
+ if(!connection())
+ {
+ outputNoFmt(KVI_OUT_SYSTEMWARNING,__tr2qs("This query has no active targets, no message sent"));
+ return;
+ }
+
+ KviQCString szName = connection()->encodeText(windowName());
+ KviQCString szData = encodeText(buffer);
+
+ const char * d = szData.data();
+ if(!d)return;
+
+#ifdef COMPILE_CRYPT_SUPPORT
+ if(cryptSessionInfo())
+ {
+ if(cryptSessionInfo()->bDoEncrypt)
+ {
+ if(*d != KVI_TEXT_CRYPTESCAPE)
+ {
+ KviStr encrypted;
+ cryptSessionInfo()->pEngine->setMaxEncryptLen(500 - szName.length());
+ switch(cryptSessionInfo()->pEngine->encrypt(d,encrypted))
+ {
+ case KviCryptEngine::Encrypted:
+ if(!connection()->sendFmtData("PRIVMSG %s :%s",szName.data(),encrypted.ptr()))return;
+ m_pConsole->outputPrivmsg(this,KVI_OUT_OWNPRIVMSGCRYPTED,
+ QString::null,QString::null,QString::null,buffer,KviConsole::NoNotifications);
+ break;
+ case KviCryptEngine::Encoded:
+ {
+ if(!connection()->sendFmtData("PRIVMSG %s :%s",szName.data(),encrypted.ptr()))return;
+ // ugly ,but we must redecode here
+ QString szRedecoded = decodeText(encrypted.ptr());
+ m_pConsole->outputPrivmsg(this,KVI_OUT_OWNPRIVMSG,
+ QString::null,QString::null,QString::null,szRedecoded,KviConsole::NoNotifications);
+ }
+ break;
+ default: // also case KviCryptEngine::EncryptError
+ {
+ QString szEngineError = cryptSessionInfo()->pEngine->lastError();
+ output(KVI_OUT_SYSTEMERROR,
+ __tr2qs("The crypto engine was unable to encrypt the current message (%Q): %s, no data sent to the server"),
+ &buffer,&szEngineError);
+ }
+ break;
+ }
+ userAction(connection()->currentNickName(),KVI_USERACTION_PRIVMSG);
+ return;
+ } else {
+ d++; //eat the escape code
+ QString tmp = buffer.right(buffer.length() - 1);
+ if(!connection()->sendFmtData("PRIVMSG %s :%s",szName.data(),d))return;
+ m_pConsole->outputPrivmsg(this,KVI_OUT_OWNPRIVMSG,QString::null,QString::null,QString::null,tmp,KviConsole::NoNotifications);
+ userAction(connection()->currentNickName(),KVI_USERACTION_PRIVMSG);
+ return;
+ }
+ }
+ }
+#endif
+
+ if(!connection()->sendFmtData("PRIVMSG %s :%s",szName.data(),d))return;
+ m_pConsole->outputPrivmsg(this,KVI_OUT_OWNPRIVMSG,QString::null,QString::null,QString::null,buffer,KviConsole::NoNotifications);
+ userAction(connection()->currentNickName(),KVI_USERACTION_PRIVMSG);
+}
+
+void KviQuery::ownAction(const QString &buffer)
+{
+ if(!connection())
+ {
+ outputNoFmt(KVI_OUT_SYSTEMWARNING,__tr2qs("This query has no active targets, no message sent"));
+ } else {
+ KviQCString szBuffer = encodeText(buffer);
+ if(!szBuffer.data())return;
+ KviQCString sz = connection()->encodeText(windowName());
+ if(sz.isEmpty())return;
+ if(!connection()->sendFmtData("PRIVMSG %s :%cACTION %s%c",
+ sz.data(),0x01,szBuffer.data(),0x01))return;
+ if(KVS_TRIGGER_EVENT_1_HALTED(KviEvent_OnMeAction,this,QString(szBuffer.data())))return;
+ output(KVI_OUT_ACTION,"\r!nc\r%Q\r %Q",&(connection()->currentNickName()),&buffer);
+ m_pUserListView->userAction(connection()->currentNickName(),KVI_USERACTION_ACTION);
+ }
+}
+
+#include "kvi_query.moc"
diff --git a/src/kvirc/ui/kvi_query.h b/src/kvirc/ui/kvi_query.h
new file mode 100644
index 00000000..ba087acb
--- /dev/null
+++ b/src/kvirc/ui/kvi_query.h
@@ -0,0 +1,95 @@
+#ifndef _KVI_QUERY_H_
+#define _KVI_QUERY_H_
+//=============================================================================
+//
+// File : kvi_query.h
+// Creation date : Mon Aug 7 2000 14:19:00 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_window.h"
+#include "kvi_string.h"
+#include "kvi_ircuserdb.h"
+#include "kvi_userlistview.h"
+#include "kvi_themedlabel.h"
+
+#include "kvi_pointerhashtable.h"
+#include "kvi_tal_grid.h"
+
+class KviConsole;
+class KviConfig;
+class QSplitter;
+class KviWindowToolPageButton;
+
+#define KVI_QUERY_FLAG_DEAD 1
+
+class KVIRC_API KviQuery : public KviWindow
+{
+ Q_OBJECT
+public:
+ KviQuery(KviFrame * lpFrm,KviConsole * lpConsole,const QString &nick);
+ ~KviQuery();
+protected:
+ KviUserListView * m_pUserListView;
+ KviWindowToolPageButton * m_pListViewButton;
+ int m_iFlags;
+ KviThemedLabel * m_pLabel;
+ QFrame * m_pButtonGrid;
+protected:
+ virtual QPixmap * myIconPtr();
+ virtual void fillCaptionBuffers();
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual void loadProperties(KviConfig * cfg);
+ virtual void saveProperties(KviConfig * cfg);
+ virtual void getBaseLogFileName(QString &buffer);
+ virtual void triggerCreationEvents();
+public:
+ void setDeadQuery();
+ void setAliveQuery();
+ bool isDeadQuery(){ return m_iFlags & KVI_QUERY_FLAG_DEAD; };
+ virtual QSize sizeHint() const;
+ virtual const QString & target(){ return windowName(); };
+ virtual void applyOptions();
+ KviUserListEntry * setTarget(const QString &nick,const QString &user,const QString &host);
+ void userAction(KviIrcMask *user,unsigned int uActionType);
+ void userAction(const QString &nick,unsigned int uActionType);
+ void userAction(const QString &nick,const QString &user,const QString &host,unsigned int uActionType);
+ bool nickChange(const QString &oldNick,const QString &newNick);
+ void ownMessage(const QString &buffer);
+ void ownAction(const QString &buffer);
+ int selectedCount(){ return m_pUserListView->selectedCount(); };
+ bool avatarChanged(const QString &nick){ return m_pUserListView->avatarChanged(nick); };
+ void notifyCommonChannels(const QString &nick,const QString &user,const QString &host,int iChans,const QString &szChans);
+ void showListView(bool bShow);
+ void mergeQuery(KviQuery * q);
+ void updateLabelText();
+ QFrame * buttonContainer() { return (QFrame*)m_pButtonGrid; };
+protected:
+ void notifyTargetChange(const QString &oldNick,const QString &oldUser,const QString &oldHost,const QString &nick,const QString &user,const QString &host);
+ QString getInfoLabelText();
+ QString getInfoLabelTipText();
+protected slots:
+ void textViewRightClicked();
+ void toggleListView();
+ void slotDndEvents(const char *);
+};
+
+#endif //_KVI_CHANNEL_H_
diff --git a/src/kvirc/ui/kvi_scriptbutton.cpp b/src/kvirc/ui/kvi_scriptbutton.cpp
new file mode 100644
index 00000000..7b4a8e71
--- /dev/null
+++ b/src/kvirc/ui/kvi_scriptbutton.cpp
@@ -0,0 +1,98 @@
+//
+// File : kvi_scriptbutton.cpp
+// Creation date : Wed Nov 14 15:43:41 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#define __KVIRC__
+#include "kvi_scriptbutton.h"
+#include "kvi_irctoolbar.h"
+#include "kvi_window.h"
+#include "kvi_console.h"
+#include "kvi_app.h"
+#include "kvi_parameterlist.h"
+#include "kvi_kvs_variantlist.h"
+#include "kvi_kvs_script.h"
+
+
+KviScriptUserButton::KviScriptUserButton(QWidget * par,const char * name)
+: KviStyledToolButton(par,name)
+{
+ m_pScript = 0;
+// setAutoRaise(true);
+ connect(this,SIGNAL(clicked()),this,SLOT(btnClicked()));
+ setAutoRaise(true);
+}
+
+KviScriptUserButton::~KviScriptUserButton()
+{
+ if(m_pScript)delete m_pScript;
+}
+
+KviWindow * KviScriptUserButton::window()
+{
+ return g_pActiveWindow;
+}
+
+void KviScriptUserButton::setButtonCode(KviKvsScript * pScript)
+{
+ if(m_pScript)delete m_pScript;
+ m_pScript = pScript;
+}
+
+
+void KviScriptUserButton::btnClicked()
+{
+ KviWindow * pWnd = window();
+ if(!pWnd)return; // ops...
+ QPoint pos = mapToGlobal(QPoint(0,height()));
+
+ KviKvsVariantList vList;
+ vList.append((kvs_int_t)pos.x());
+ vList.append((kvs_int_t)pos.y());
+ m_pScript->run(pWnd,&vList,0,KviKvsScript::PreserveParams);
+}
+/*
+
+KviIrcToolBarScriptButton::KviIrcToolBarScriptButton(QToolBar * p,const char * name)
+: KviScriptUserButton(p,name)
+{
+ setAutoRaise(true);
+}
+
+KviIrcToolBarScriptButton::~KviIrcToolBarScriptButton()
+{
+}
+
+KviWindow * KviIrcToolBarScriptButton::window()
+{
+ return g_pActiveWindow;
+}
+*/
+
+KviWindowScriptButton::KviWindowScriptButton(QWidget * p,KviWindow * wnd,const char * name)
+: KviScriptUserButton(p,name)
+{
+ m_pWnd = wnd;
+}
+
+KviWindowScriptButton::~KviWindowScriptButton()
+{
+}
+
+#include "kvi_scriptbutton.moc"
diff --git a/src/kvirc/ui/kvi_scriptbutton.h b/src/kvirc/ui/kvi_scriptbutton.h
new file mode 100644
index 00000000..79740c86
--- /dev/null
+++ b/src/kvirc/ui/kvi_scriptbutton.h
@@ -0,0 +1,79 @@
+#ifndef _KVI_SCRIPTBUTTON_H_
+#define _KVI_SCRIPTBUTTON_H_
+//
+// File : kvi_scriptbutton.h
+// Creation date : Wed Nov 14 15:43:39 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+#include "kvi_string.h"
+#include "kvi_styled_controls.h"
+
+#include <qtoolbutton.h>
+#include <qtoolbar.h>
+
+class KviKvsScript;
+class KviWindow;
+
+class KVIRC_API KviScriptUserButton : public KviStyledToolButton
+{
+ Q_OBJECT
+public:
+ KviScriptUserButton(QWidget * par,const char * name);
+ ~KviScriptUserButton();
+protected:
+ KviKvsScript * m_pScript;
+public:
+ void setButtonCode(KviKvsScript * pScript);
+ virtual void setButtonPixmap(const QPixmap & pix){ setIconSet(pix); };
+ void setButtonText(const char * text){ setTextLabel(text); };
+ virtual KviWindow * window();
+protected slots:
+ void btnClicked();
+};
+
+/*
+class KVIRC_API KviIrcToolBarScriptButton : public KviScriptUserButton
+{
+ Q_OBJECT
+public:
+ KviIrcToolBarScriptButton(QToolBar * p,const char * name);
+ ~KviIrcToolBarScriptButton();
+protected:
+ KviStr m_szCode;
+public:
+ virtual KviWindow * window();
+};
+*/
+
+class KVIRC_API KviWindowScriptButton : public KviScriptUserButton
+{
+ Q_OBJECT
+public:
+ KviWindowScriptButton(QWidget * p,KviWindow * wnd,const char * name);
+ ~KviWindowScriptButton();
+protected:
+ KviWindow * m_pWnd;
+public:
+ virtual void setButtonPixmap(const QPixmap & pix){ setIconSet(pix); setUsesBigPixmap(false); };
+ virtual KviWindow * window(){ return m_pWnd; };
+};
+
+#endif //_KVI_SCRIPTBUTTON_H_
diff --git a/src/kvirc/ui/kvi_scripteditor.cpp b/src/kvirc/ui/kvi_scripteditor.cpp
new file mode 100644
index 00000000..f94000da
--- /dev/null
+++ b/src/kvirc/ui/kvi_scripteditor.cpp
@@ -0,0 +1,139 @@
+//
+// File : kvi_scripteditor.cpp
+// Creation date : Sun Mar 28 1999 16:12:41 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#define __KVIRC__
+
+#define _KVI_SCRIPTEDITOR_CPP_
+
+#define _KVI_DEBUG_CHECK_RANGE_
+#include "kvi_debug.h"
+
+#include "kvi_scripteditor.h"
+#include "kvi_modulemanager.h"
+
+
+KviScriptEditor::KviScriptEditor(QWidget * par)
+: QWidget(par)
+{
+}
+
+
+KviScriptEditor::~KviScriptEditor()
+{
+}
+
+void KviScriptEditor::setText(const char * txt)
+{
+ setText(KviQCString(txt));
+}
+
+void KviScriptEditor::setText(const KviQCString &txt)
+{
+}
+
+void KviScriptEditor::setText(const QString &txt)
+{
+ setText(KviQCString(txt.utf8()));
+}
+
+void KviScriptEditor::setFindText(const QString &text)
+{
+}
+void KviScriptEditor::setInfoText(const QString &text)
+{
+}
+
+void KviScriptEditor::setFindLineeditReadOnly(bool b)
+{
+}
+
+void KviScriptEditor::getText(KviQCString &txt)
+{
+}
+
+void KviScriptEditor::setCursorPosition(QPoint)
+{
+}
+
+bool KviScriptEditor::isModified()
+{
+ return false;
+}
+
+QPoint KviScriptEditor::getCursor()
+{
+ return QPoint(0,0);
+}
+void KviScriptEditor::getText(QString &txt)
+{
+ KviQCString tmp;
+ getText(tmp);
+ txt = QString::fromUtf8(tmp.data());
+}
+
+KviScriptEditor * KviScriptEditor::getDummyEditor(QWidget * par)
+{
+ return new KviScriptEditor(par);
+}
+
+
+static KviScriptEditor * (*editorModuleCreateScriptEditor)(QWidget *);
+static void (*editorModuleDestroyScriptEditor)(KviScriptEditor *);
+
+
+KviScriptEditor * KviScriptEditor::createInstance(QWidget * par)
+{
+ KviModule * m = g_pModuleManager->getModule("editor");
+ // If the module can't be loaded...return a dummy widget
+// FIXME: #warning "Maybe provide some sort of basic default editable widget ?"
+ if(!m)return KviScriptEditor::getDummyEditor(par); // dummy implementation
+
+
+ editorModuleCreateScriptEditor = (KviScriptEditor * (*)(QWidget *)) m->getSymbol("editor_module_createScriptEditor");
+
+ if(!editorModuleCreateScriptEditor)return KviScriptEditor::getDummyEditor(par);
+
+ return editorModuleCreateScriptEditor(par);
+
+}
+
+void KviScriptEditor::destroyInstance(KviScriptEditor * e)
+{
+ KviModule * m = g_pModuleManager->getModule("editor");
+ if(!m)
+ {
+ delete e;
+ return;
+ }
+
+ editorModuleDestroyScriptEditor = (void (*)(KviScriptEditor *)) m->getSymbol("editor_module_destroyScriptEditor");
+
+ if(!editorModuleDestroyScriptEditor)
+ {
+ delete e;
+ return;
+ }
+
+ editorModuleDestroyScriptEditor(e);
+}
+
+#include "kvi_scripteditor.moc"
diff --git a/src/kvirc/ui/kvi_scripteditor.h b/src/kvirc/ui/kvi_scripteditor.h
new file mode 100644
index 00000000..e9f04c26
--- /dev/null
+++ b/src/kvirc/ui/kvi_scripteditor.h
@@ -0,0 +1,69 @@
+#ifndef _KVI_SCRIPTEDITOR_H_
+#define _KVI_SCRIPTEDITOR_H_
+
+//
+// File : kvi_scripteditor.h
+// Creation date : Sun Mar 28 1999 16:11:48 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+#include <qwidget.h>
+#include <qlineedit.h>
+#include "kvi_qcstring.h"
+
+//
+// This is the basic interface of a script editor widget
+//
+// Actually the REAL script editor is implemented in an
+// external module called "libkvieditor", and it is a really
+// huge class.
+// The constructor of this thing is protected: forget
+// about instantiating it directly
+//
+
+
+class KVIRC_API KviScriptEditor : public QWidget
+{
+ Q_OBJECT
+protected:
+ KviScriptEditor(QWidget * par);
+ ~KviScriptEditor();
+protected:
+ QLineEdit * m_pFindLineedit;
+public:
+ virtual void setText(const char * txt);
+ virtual void setText(const KviQCString &txt);
+ virtual void setText(const QString &txt);
+ virtual void getText(KviQCString &txt);
+ virtual void getText(QString &txt);
+ virtual void setInfoText(const QString &text);
+ virtual void setFindText(const QString &text);
+ virtual void setCursorPosition(QPoint);
+ virtual QPoint getCursor();
+ virtual void setFindLineeditReadOnly(bool b);
+ virtual bool isModified();
+
+ static KviScriptEditor * getDummyEditor(QWidget * par);
+ static KviScriptEditor * createInstance(QWidget * par);
+ static void destroyInstance(KviScriptEditor * e);
+};
+
+
+#endif //!_KVI_SCRIPTEDITOR_H_
diff --git a/src/kvirc/ui/kvi_selectors.cpp b/src/kvirc/ui/kvi_selectors.cpp
new file mode 100644
index 00000000..f8c9af9f
--- /dev/null
+++ b/src/kvirc/ui/kvi_selectors.cpp
@@ -0,0 +1,839 @@
+//=============================================================================
+//
+// File : kvi_selectors.cpp
+// Creation date : Mon Nov 13 2000 15:22:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#define _KVI_SELECTORS_CPP_
+
+#include "kvi_selectors.h"
+#include "kvi_locale.h"
+#include "kvi_options.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_filedialog.h"
+#include "kvi_kvs_script.h"
+
+#include <qlabel.h>
+#include <qpainter.h>
+#include <qlayout.h>
+#include <qcolordialog.h>
+#include <qpalette.h>
+#include <qfontdialog.h>
+#include "kvi_tal_popupmenu.h"
+
+KviBoolSelector::KviBoolSelector(QWidget * par,const QString & txt,bool *pOption,bool bEnabled)
+: KviStyledCheckBox(txt,par), KviSelectorInterface()
+{
+ setEnabled(bEnabled);
+ setChecked(*pOption);
+ m_pOption = pOption;
+}
+
+void KviBoolSelector::setNotEnabled(bool bNotEnabled)
+{
+ setEnabled(!bNotEnabled);
+}
+
+void KviBoolSelector::commit()
+{
+ *m_pOption = isChecked();
+}
+
+KviUIntSelector::KviUIntSelector(QWidget * par,const QString & txt,unsigned int *pOption,
+ unsigned int uLowBound,unsigned int uHighBound,unsigned int uDefault,bool bEnabled,bool bShortInt)
+: KviTalHBox(par) , KviSelectorInterface()
+{
+ m_pLabel = new QLabel(txt,this);
+ //m_pLineEdit = new QLineEdit(this);
+ //m_pLineEdit->setMaximumWidth(150);
+ m_pSpinBox = new QSpinBox(this);
+
+ m_bIsShortInt = bShortInt;
+
+ setEnabled(bEnabled);
+
+ m_pOption = pOption;
+
+ m_uLowBound = uLowBound;
+ m_uHighBound = uHighBound;
+ m_uDefault = uDefault;
+
+ m_pSpinBox->setMinValue(m_uLowBound);
+ m_pSpinBox->setMaxValue(m_uHighBound);
+
+ //KviStr tmp(KviStr::Format,"%u",bShortInt ? (unsigned int) *((unsigned short int *)pOption) : *pOption);
+ //m_pLineEdit->setText(tmp.ptr());
+ m_pSpinBox->setValue(bShortInt ? (unsigned int) *((unsigned short int *)pOption) : *pOption);
+
+ setSpacing(4);
+ setStretchFactor(m_pLabel,1);
+}
+
+void KviUIntSelector::setPrefix(const QString & txt)
+{
+ m_pSpinBox->setPrefix(txt);
+}
+
+void KviUIntSelector::setSuffix(const QString & txt)
+{
+ m_pSpinBox->setSuffix(txt);
+}
+
+void KviUIntSelector::commit()
+{
+ KviStr tmp = m_pSpinBox->cleanText();
+ bool bOk;
+ unsigned int val = tmp.toUInt(&bOk);
+ if(!bOk)val = m_uDefault;
+ if(m_uHighBound > m_uLowBound)
+ {
+ if(val < m_uLowBound)val = m_uLowBound;
+ else if(val > m_uHighBound)val = m_uHighBound;
+ }
+
+ if(m_bIsShortInt)*((unsigned short int *)m_pOption) = (unsigned short int)val;
+ else *m_pOption = val;
+}
+
+
+void KviUIntSelector::setEnabled(bool bEnabled)
+{
+ KviTalHBox::setEnabled(bEnabled);
+ m_pLabel->setEnabled(bEnabled);
+ m_pSpinBox->setEnabled(bEnabled);
+}
+
+
+
+KviStringSelector::KviStringSelector(QWidget * par,const QString & txt,QString * pOption,bool bEnabled)
+: KviTalHBox(par) , KviSelectorInterface()
+{
+ m_pLabel = new QLabel(txt,this);
+ m_pLineEdit = new QLineEdit(this);
+ //m_pLineEdit->setMinimumWidth(200);
+ QString tmp = *pOption;
+ m_pLineEdit->setText(tmp);
+
+ setSpacing(4);
+ setStretchFactor(m_pLineEdit,1);
+
+ m_pOption = pOption;
+
+ setEnabled(bEnabled);
+}
+
+KviStringSelector::~KviStringSelector()
+{
+}
+
+void KviStringSelector::commit()
+{
+ QString tmp = m_pLineEdit->text();
+ *m_pOption = tmp;
+}
+
+void KviStringSelector::setEnabled(bool bEnabled)
+{
+ KviTalHBox::setEnabled(bEnabled);
+ m_pLineEdit->setEnabled(bEnabled);
+ m_pLabel->setEnabled(bEnabled);
+}
+
+void KviStringSelector::setText(const QString& text){
+ m_pLineEdit->setText(text);
+}
+
+KviPasswordSelector::KviPasswordSelector(QWidget * par,const QString & txt,QString *pOption,bool bEnabled)
+: KviStringSelector(par,txt,pOption,bEnabled)
+{
+ m_pLineEdit->setEchoMode(QLineEdit::Password);
+}
+
+
+
+
+KviPixmapPreview::KviPixmapPreview(QWidget * par)
+: KviTalScrollView(par)
+{
+ m_pPixmap = 0;
+ resizeContents(0,0);
+}
+
+
+KviPixmapPreview::~KviPixmapPreview()
+{
+}
+
+void KviPixmapPreview::setPixmap(KviPixmap * pix)
+{
+ m_pPixmap = pix;
+ if(m_pPixmap)
+ {
+ if(m_pPixmap->pixmap())
+ {
+ resizeContents(m_pPixmap->pixmap()->width(),m_pPixmap->pixmap()->height());
+ update();
+ return;
+ }
+ }
+ resizeContents(0,0);
+ update();
+}
+
+void KviPixmapPreview::drawContents(QPainter * p, int clipx, int clipy, int clipw, int cliph)
+{
+ if(m_pPixmap)
+ {
+ if(m_pPixmap->pixmap())
+ {
+ p->drawPixmap(clipx,clipy,*(m_pPixmap->pixmap()),clipx,clipy,clipw,cliph);
+ }
+ }
+}
+
+
+KviPixmapSelector::KviPixmapSelector(QWidget * par,const QString & txt,KviPixmap * pOption,bool bEnabled)
+: QWidget(par), KviSelectorInterface()
+{
+ QGridLayout * g = new QGridLayout(this,3,2,4,8);
+ m_pOption = pOption;
+
+ m_localPixmap = *pOption;
+
+ m_pCheckBox = new KviStyledCheckBox(txt,this);
+ m_pCheckBox->setChecked(m_localPixmap.pixmap());
+ connect(m_pCheckBox,SIGNAL(toggled(bool)),this,SLOT(checkBoxToggled(bool)));
+ g->addMultiCellWidget(m_pCheckBox,0,0,0,1);
+
+ m_pPreview = new KviPixmapPreview(this);
+ m_pPreview->setPixmap(&m_localPixmap);
+ g->addMultiCellWidget(m_pPreview,1,1,0,1);
+
+ m_pFileNameLabel = new QLabel(this);
+ m_pFileNameLabel->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
+ if(m_localPixmap.pixmap())m_pFileNameLabel->setText(m_localPixmap.path());
+ g->addWidget(m_pFileNameLabel,2,0);
+
+ m_pChooseButton = new QPushButton("...",this);
+ g->addWidget(m_pChooseButton,2,1);
+ connect(m_pChooseButton,SIGNAL(clicked()),this,SLOT(choosePixmap()));
+
+ g->setRowStretch(1,1);
+ g->setColStretch(0,1);
+
+ setEnabled(bEnabled);
+}
+
+KviPixmapSelector::~KviPixmapSelector()
+{
+}
+
+
+void KviPixmapSelector::checkBoxToggled(bool bEnabled)
+{
+ setEnabled(isEnabled());
+}
+
+void KviPixmapSelector::commit()
+{
+ if(m_pCheckBox->isChecked())
+ {
+ *m_pOption = m_localPixmap;
+ } else {
+ *m_pOption = KviPixmap(); // null pixmap
+ }
+}
+
+void KviPixmapSelector::choosePixmap()
+{
+// KviStr tmp;
+ QString tmp;
+ if(KviFileDialog::askForOpenFileName(tmp,__tr("Choose an Image File - KVIrc")))
+ {
+ setImagePath(tmp);
+ }
+}
+
+void KviPixmapSelector::setImagePath(const char * path)
+{
+ m_localPixmap.load(path);
+ m_pPreview->setPixmap(&m_localPixmap);
+
+ if(m_localPixmap.isNull())
+ {
+ KviStr tmp2(KviStr::Format,__tr("Unloadable: %s"),path);
+ m_pFileNameLabel->setText(tmp2.ptr());
+ m_pCheckBox->setChecked(false);
+ } else {
+ m_pCheckBox->setChecked(true);
+ m_pFileNameLabel->setText(path);
+ }
+
+ setEnabled(isEnabled());
+}
+
+void KviPixmapSelector::setEnabled(bool bEnabled)
+{
+ QWidget::setEnabled(bEnabled);
+ m_pCheckBox->setEnabled(bEnabled);
+ m_pPreview->setEnabled(bEnabled && m_pCheckBox->isChecked());
+ m_pFileNameLabel->setEnabled(bEnabled && m_pCheckBox->isChecked());
+ m_pChooseButton->setEnabled(bEnabled && m_pCheckBox->isChecked());
+}
+
+
+
+// FIXME: #warning "Option for DIR_MUST_EXISTS...(this widget could be turned into a file selector too)"
+KviFileSelector::KviFileSelector(QWidget * par,const QString & txt,QString * pOption,bool bEnabled,unsigned int uFlags,const QString &szFilter)
+: KviTalHBox(par), KviSelectorInterface()
+{
+ m_uFlags = uFlags;
+ m_szFilter = szFilter;
+ m_pLabel = new QLabel(txt,this);
+ m_pLineEdit = new QLineEdit(this);
+ //m_pLineEdit->setMinimumWidth(200);
+ m_pLineEdit->setText(*pOption);
+ m_pButton = new QPushButton(__tr2qs("&Browse..."),this);
+ connect(m_pButton,SIGNAL(clicked()),this,SLOT(browseClicked()));
+
+ setSpacing(4);
+ setStretchFactor(m_pLineEdit,1);
+
+ m_pOption = pOption;
+
+ setEnabled(bEnabled);
+}
+
+
+void KviFileSelector::commit()
+{
+ *m_pOption = m_pLineEdit->text();
+}
+
+void KviFileSelector::setEnabled(bool bEnabled)
+{
+ KviTalHBox::setEnabled(bEnabled);
+ m_pLineEdit->setEnabled(bEnabled);
+ m_pLabel->setEnabled(bEnabled);
+ m_pButton->setEnabled(bEnabled);
+}
+
+void KviFileSelector::browseClicked()
+{
+ select();
+}
+
+void KviFileSelector::setSelection(const QString &szSelection)
+{
+ m_pLineEdit->setText(szSelection);
+}
+
+
+void KviFileSelector::select()
+{
+ //KviStr tmp;
+ QString tmp = *m_pOption;
+ if(m_uFlags & ChooseSaveFileName)
+ {
+ if(KviFileDialog::askForSaveFileName(tmp,__tr2qs("Choose a File - KVIrc"),tmp,m_szFilter,true,!(m_uFlags & DontConfirmOverwrite)))
+ {
+ m_pLineEdit->setText(tmp);
+ emit selectionChanged(tmp);
+ }
+ } else {
+ if(KviFileDialog::askForOpenFileName(tmp,__tr2qs("Choose a File - KVIrc"),tmp,m_szFilter,true))
+ {
+ m_pLineEdit->setText(tmp);
+ emit selectionChanged(tmp);
+ }
+ }
+
+}
+
+
+KviDirectorySelector::KviDirectorySelector(QWidget * par,const QString & txt,QString * pOption,bool bEnabled)
+: KviFileSelector(par,txt,pOption,bEnabled)
+{
+}
+
+void KviDirectorySelector::select()
+{
+ QString tmp;
+ if(KviFileDialog::askForDirectoryName(tmp,__tr2qs("Choose a Directory - KVIrc"),""))
+ {
+ m_pLineEdit->setText(tmp);
+ }
+
+}
+
+
+
+
+
+
+
+
+KviStringListSelector::KviStringListSelector(QWidget * par,const QString & txt,QStringList * pOption,bool bEnabled)
+: KviTalVBox(par), KviSelectorInterface()
+{
+ m_pLabel = new QLabel(txt,this);
+ m_pListBox = new KviTalListBox(this);
+ m_pLineEdit = new QLineEdit(this);
+ connect(m_pLineEdit,SIGNAL(textChanged(const QString &)),this,SLOT(textChanged(const QString &)));
+ connect(m_pLineEdit,SIGNAL(returnPressed()),this,SLOT(addClicked()));
+ KviTalHBox * hBox = new KviTalHBox(this);
+ m_pAddButton = new QPushButton(__tr2qs("A&dd"),hBox);
+ connect(m_pAddButton,SIGNAL(clicked()),this,SLOT(addClicked()));
+ m_pRemoveButton = new QPushButton(__tr2qs("Re&move"),hBox);
+ connect(m_pRemoveButton,SIGNAL(clicked()),this,SLOT(removeClicked()));
+ m_pOption = pOption;
+ m_pListBox->insertStringList(*pOption);
+ m_pListBox->setSelectionMode(KviTalListBox::Extended);
+ connect(m_pListBox,SIGNAL(selectionChanged()),this,SLOT(selectionChanged()));
+ setSpacing(4);
+ setStretchFactor(m_pListBox,1);
+ setEnabled(bEnabled);
+}
+
+KviStringListSelector::~KviStringListSelector()
+{
+}
+
+void KviStringListSelector::selectionChanged()
+{
+ unsigned int uCount = m_pListBox->count();
+ bool bSomeSelected = false;
+ for(unsigned int u=0;u<uCount;u++)
+ {
+ if(m_pListBox->isSelected(u))
+ {
+ bSomeSelected = true;
+ break;
+ }
+ }
+ m_pRemoveButton->setEnabled(isEnabled() && bSomeSelected);
+}
+
+void KviStringListSelector::textChanged(const QString &str)
+{
+ str.stripWhiteSpace();
+ m_pAddButton->setEnabled((str.length() > 0) && isEnabled());
+}
+
+void KviStringListSelector::setEnabled(bool bEnabled)
+{
+ KviTalVBox::setEnabled(bEnabled);
+ m_pLineEdit->setEnabled(bEnabled);
+ m_pLabel->setEnabled(bEnabled);
+ QString txt = m_pLineEdit->text();
+ txt.stripWhiteSpace();
+ m_pAddButton->setEnabled(bEnabled && (txt.length() > 0));
+ unsigned int uCount = m_pListBox->count();
+ bool bSomeSelected = false;
+ for(unsigned int u=0;u<uCount;u++)
+ {
+ if(m_pListBox->isSelected(u))
+ {
+ bSomeSelected = true;
+ break;
+ }
+ }
+ m_pRemoveButton->setEnabled(bEnabled && bSomeSelected);
+ m_pListBox->setEnabled(bEnabled);
+}
+
+void KviStringListSelector::commit()
+{
+ unsigned int uCount = m_pListBox->count();
+ m_pOption->clear();
+ for(unsigned int u=0;u<uCount;u++)
+ {
+ QString str = m_pListBox->text(u);
+ str.stripWhiteSpace();
+ if(str.length() > 0)m_pOption->append(str);
+ }
+}
+
+void KviStringListSelector::addClicked()
+{
+ QString str = m_pLineEdit->text();
+ str.stripWhiteSpace();
+ if(str.length() > 0)m_pListBox->insertItem(str);
+ m_pLineEdit->setText("");
+}
+
+void KviStringListSelector::removeClicked()
+{
+ unsigned int uCount = m_pListBox->count();
+ for(unsigned int u=0;u<uCount;u++)
+ {
+ while(m_pListBox->isSelected(u))m_pListBox->removeItem(u);
+ }
+}
+
+
+KviColorSelector::KviColorSelector(QWidget * par,const QString & txt,QColor * pOption,bool bEnabled)
+: KviTalHBox(par), KviSelectorInterface()
+{
+ m_pLabel = new QLabel(txt,this);
+
+ m_pButton = new QPushButton(" ",this);
+ // m_pButton->setMinimumWidth(150);
+ connect(m_pButton,SIGNAL(clicked()),this,SLOT(changeClicked()));
+
+ setSpacing(4);
+ setStretchFactor(m_pLabel,1);
+
+ setButtonPalette(pOption);
+
+ m_pOption = pOption;
+
+ setEnabled(bEnabled);
+}
+
+void KviColorSelector::setButtonPalette(QColor * pOption)
+{
+ QPalette pal(*pOption,colorGroup().background());
+ m_memColor = *pOption;
+ m_pButton->setPalette(pal);
+
+ QPixmap pix(16,16);
+ pix.fill(*pOption);
+ m_pButton->setIconSet(pix);
+}
+
+void KviColorSelector::forceColor(QColor clr)
+{
+ setButtonPalette(&clr);
+}
+
+void KviColorSelector::changeClicked()
+{
+ QColor tmp = QColorDialog::getColor(m_memColor);
+ if(tmp.isValid())setButtonPalette(&tmp);
+}
+
+void KviColorSelector::commit()
+{
+ *m_pOption = m_memColor;
+}
+
+void KviColorSelector::setEnabled(bool bEnabled)
+{
+ KviTalHBox::setEnabled(bEnabled);
+ m_pLabel->setEnabled(bEnabled);
+ m_pButton->setEnabled(bEnabled);
+}
+
+
+KviFontSelector::KviFontSelector(QWidget * par,const QString & txt,QFont * pOption,bool bEnabled)
+: KviTalHBox(par), KviSelectorInterface()
+{
+ m_pLabel = new QLabel(txt,this);
+
+ m_pButton = new QPushButton("",this);
+ // m_pButton->setMinimumWidth(150);
+ connect(m_pButton,SIGNAL(clicked()),this,SLOT(changeClicked()));
+
+ setSpacing(4);
+ setStretchFactor(m_pLabel,1);
+
+ setButtonFont(pOption);
+
+ m_pOption = pOption;
+
+ setEnabled(bEnabled);
+}
+
+void KviFontSelector::setButtonFont(QFont * pOption)
+{
+ m_pButton->setText(pOption->family());
+ m_pButton->setFont(*pOption);
+}
+
+void KviFontSelector::changeClicked()
+{
+ bool bOk;
+ QFont tmp = QFontDialog::getFont(&bOk,m_pButton->font());
+ if(bOk)setButtonFont(&tmp);
+}
+
+void KviFontSelector::commit()
+{
+ *m_pOption = m_pButton->font();
+}
+
+void KviFontSelector::setEnabled(bool bEnabled)
+{
+ KviTalHBox::setEnabled(bEnabled);
+ m_pLabel->setEnabled(bEnabled);
+ m_pButton->setEnabled(bEnabled);
+}
+
+
+
+
+
+KviMircTextColorSelector::KviMircTextColorSelector(QWidget * par,const QString &txt,unsigned int * uFore,unsigned int * uBack,bool bEnabled)
+: KviTalHBox(par), KviSelectorInterface()
+{
+ m_pLabel = new QLabel(txt,this);
+
+ m_pButton = new QPushButton(__tr2qs("Sample Text"),this);
+ // m_pButton->setMinimumWidth(150);
+ connect(m_pButton,SIGNAL(clicked()),this,SLOT(buttonClicked()));
+
+ setSpacing(4);
+ setStretchFactor(m_pLabel,1);
+
+ m_pUFore = uFore;
+ m_pUBack = uBack;
+
+ m_uBack = *uBack;
+ m_uFore = *uFore;
+
+ setButtonPalette();
+
+ setEnabled(bEnabled);
+
+ m_pContextPopup = new KviTalPopupMenu(this);
+
+ m_pForePopup = new KviTalPopupMenu(this);
+ connect(m_pForePopup,SIGNAL(activated(int)),this,SLOT(foreSelected(int)));
+ int i;
+ for(i=0;i<KVI_MIRCCOLOR_MAX_FOREGROUND;i++)
+ {
+ QPixmap tmp(120,16);
+ tmp.fill(KVI_OPTION_MIRCCOLOR(i));
+#ifdef COMPILE_USE_QT4
+ int id = m_pForePopup->insertItem(tmp,QString("x"));
+#else
+ int id = m_pForePopup->insertItem(tmp);
+#endif
+ m_pForePopup->setItemParameter(id,i);
+ }
+ m_pContextPopup->insertItem(__tr2qs("Foreground"),m_pForePopup);
+
+ m_pBackPopup = new KviTalPopupMenu(this);
+ connect(m_pBackPopup,SIGNAL(activated(int)),this,SLOT(backSelected(int)));
+ i = m_pBackPopup->insertItem(__tr2qs("Transparent"));
+ m_pBackPopup->setItemParameter(i,KVI_TRANSPARENT);
+ for(i=0;i<KVI_MIRCCOLOR_MAX_BACKGROUND;i++)
+ {
+ QPixmap tmp(120,16);
+ tmp.fill(KVI_OPTION_MIRCCOLOR(i));
+#ifdef COMPILE_USE_QT4
+ int id = m_pForePopup->insertItem(tmp,QString("x"));
+#else
+ int id = m_pBackPopup->insertItem(tmp);
+#endif
+ m_pBackPopup->setItemParameter(id,i);
+ }
+ m_pContextPopup->insertItem(__tr2qs("Background"),m_pBackPopup);
+}
+
+KviMircTextColorSelector::~KviMircTextColorSelector()
+{
+}
+
+void KviMircTextColorSelector::commit()
+{
+ *m_pUFore = m_uFore;
+ *m_pUBack = m_uBack;
+}
+
+void KviMircTextColorSelector::setEnabled(bool bEnabled)
+{
+ KviTalHBox::setEnabled(bEnabled);
+ m_pLabel->setEnabled(bEnabled);
+ m_pButton->setEnabled(bEnabled);
+}
+
+void KviMircTextColorSelector::setButtonPalette()
+{
+ QPalette pal;
+
+ if(m_uBack > KVI_MIRCCOLOR_MAX_BACKGROUND)
+ {
+ if(m_uBack != KVI_TRANSPARENT)m_uBack = KVI_TRANSPARENT;
+ pal = palette();
+ } else {
+ pal = QPalette(KVI_OPTION_MIRCCOLOR(m_uBack));
+ }
+
+ if(m_uFore > KVI_MIRCCOLOR_MAX_FOREGROUND)m_uFore = KVI_MIRCCOLOR_MAX_FOREGROUND;
+
+ pal.setColor(QColorGroup::ButtonText,KVI_OPTION_MIRCCOLOR(m_uFore));
+ pal.setColor(QColorGroup::Text,KVI_OPTION_MIRCCOLOR(m_uFore));
+
+ m_pButton->setPalette(pal);
+}
+
+void KviMircTextColorSelector::buttonClicked()
+{
+ QPoint p = m_pButton->mapToGlobal(QPoint(0,m_pButton->height()));
+ m_pContextPopup->popup(p);
+}
+
+void KviMircTextColorSelector::foreSelected(int id)
+{
+ if(m_pForePopup)
+ m_uFore = m_pForePopup->itemParameter(id);
+ setButtonPalette();
+}
+
+void KviMircTextColorSelector::backSelected(int id)
+{
+ if(m_pBackPopup)
+ m_uBack = m_pBackPopup->itemParameter(id);
+ setButtonPalette();
+}
+
+KviSoundSelector::KviSoundSelector(QWidget * par,const QString & txt,QString * pOption,bool bEnabled)
+:KviFileSelector(par,txt,pOption,bEnabled)
+{
+ m_pPlayButton = new QPushButton(__tr2qs("Play"),this);
+ connect(m_pPlayButton,SIGNAL(clicked()),this,SLOT(playSound()));
+}
+
+KviSoundSelector::~KviSoundSelector()
+{
+}
+
+void KviSoundSelector::playSound()
+{
+ KviKvsScript::run("snd.play $0",0,new KviKvsVariantList(new KviKvsVariant(m_pLineEdit->text())));
+}
+
+void KviSoundSelector::setEnabled(bool bEnabled)
+{
+ KviFileSelector::setEnabled(bEnabled);
+ m_pPlayButton->setEnabled(bEnabled);
+}
+
+KviChanListViewItem::KviChanListViewItem(KviTalListView* pList,QString szChan,QString szPass)
+:KviTalListViewItem(pList,szChan)
+{
+ m_szPass=szPass;
+ QString mask;
+ mask.fill('*',szPass.length());
+ setText(1,mask);
+}
+
+KviCahnnelListSelector::KviCahnnelListSelector(QWidget * par,const QString & txt,QStringList * pOption,bool bEnabled)
+: KviTalVBox(par), KviSelectorInterface()
+{
+ m_pLabel = new QLabel(txt,this);
+ m_pListView = new KviTalListView(this);
+ m_pListView->addColumn(__tr2qs("Channel name"));
+ m_pListView->addColumn(__tr2qs("Channel password"));
+
+ KviTalHBox* pEditsHBox = new KviTalHBox(this);
+
+ m_pChanLineEdit = new QLineEdit(pEditsHBox);
+ connect(m_pChanLineEdit,SIGNAL(textChanged(const QString &)),this,SLOT(textChanged(const QString &)));
+ connect(m_pChanLineEdit,SIGNAL(returnPressed()),this,SLOT(addClicked()));
+
+ m_pPassLineEdit = new QLineEdit(pEditsHBox);
+ m_pPassLineEdit->setEchoMode(QLineEdit::Password);
+ connect(m_pPassLineEdit,SIGNAL(textChanged(const QString &)),this,SLOT(textChanged(const QString &)));
+ connect(m_pPassLineEdit,SIGNAL(returnPressed()),this,SLOT(addClicked()));
+
+
+ KviTalHBox * hBox = new KviTalHBox(this);
+ m_pAddButton = new QPushButton(__tr2qs("A&dd"),hBox);
+ connect(m_pAddButton,SIGNAL(clicked()),this,SLOT(addClicked()));
+ m_pRemoveButton = new QPushButton(__tr2qs("Re&move"),hBox);
+ connect(m_pRemoveButton,SIGNAL(clicked()),this,SLOT(removeClicked()));
+ m_pOption = pOption;
+
+ for ( QStringList::Iterator it = pOption->begin(); it != pOption->end(); ++it ) {
+ new KviChanListViewItem(m_pListView,(*it).section(':',0,0),(*it).section(':',1));
+ }
+
+ m_pListView->setSelectionMode(KviTalListView::Extended);
+ m_pListView->setAllColumnsShowFocus(TRUE);
+ connect(m_pListView,SIGNAL(selectionChanged()),this,SLOT(selectionChanged()));
+ setSpacing(4);
+ setStretchFactor(m_pListView,1);
+ setEnabled(bEnabled);
+}
+
+KviCahnnelListSelector::~KviCahnnelListSelector()
+{
+}
+
+void KviCahnnelListSelector::commit()
+{
+ m_pOption->clear();
+ register KviChanListViewItem* pItem;
+ KviTalListViewItemIterator it( m_pListView);
+ while ( it.current() ) {
+ pItem = (KviChanListViewItem*)( it.current() );
+ m_pOption->append(pItem->text(0)+":"+pItem->pass());
+ ++it;
+ }
+}
+
+void KviCahnnelListSelector::setEnabled(bool bEnabled)
+{
+ m_pLabel->setEnabled(bEnabled);
+ m_pListView->setEnabled(bEnabled);
+ m_pChanLineEdit->setEnabled(bEnabled);
+ m_pPassLineEdit->setEnabled(bEnabled);
+ m_pAddButton->setEnabled(bEnabled);
+ m_pRemoveButton->setEnabled(bEnabled);
+}
+
+void KviCahnnelListSelector::textChanged(const QString &str)
+{
+ m_pAddButton->setEnabled(!m_pChanLineEdit->text().isEmpty());
+}
+
+void KviCahnnelListSelector::selectionChanged()
+{
+}
+
+void KviCahnnelListSelector::addClicked()
+{
+ if(!m_pChanLineEdit->text().isEmpty())
+ {
+ new KviChanListViewItem(m_pListView,m_pChanLineEdit->text().stripWhiteSpace(),m_pPassLineEdit->text().stripWhiteSpace());
+ m_pChanLineEdit->clear();
+ m_pPassLineEdit->clear();
+ }
+}
+
+void KviCahnnelListSelector::removeClicked()
+{
+ KviPointerList<KviTalListViewItem> lst;
+ KviTalListViewItemIterator it( m_pListView, KviTalListViewItemIterator::Selected );
+ while ( it.current() ) {
+ lst.append((KviTalListViewItem *)it.current() );
+ ++it;
+ }
+ lst.setAutoDelete(TRUE);
+ lst.clear();
+}
+
+#include "kvi_selectors.moc"
diff --git a/src/kvirc/ui/kvi_selectors.h b/src/kvirc/ui/kvi_selectors.h
new file mode 100644
index 00000000..3e620127
--- /dev/null
+++ b/src/kvirc/ui/kvi_selectors.h
@@ -0,0 +1,367 @@
+#ifndef _KVI_SELECTORS_H_
+#define _KVI_SELECTORS_H_
+
+//=============================================================================
+//
+// File : kvi_selectors.h
+// Creation date : Mon Now 13 2000 15:21:10 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "kvi_settings.h"
+
+#include <qcheckbox.h>
+#include "kvi_tal_hbox.h"
+#include "kvi_tal_vbox.h"
+#include <qlineedit.h>
+#include <qlabel.h>
+#include "kvi_tal_scrollview.h"
+#include <qpushbutton.h>
+#include <qcolor.h>
+#include <qfont.h>
+#include "kvi_tal_listbox.h"
+#include "kvi_tal_listview.h"
+#include <qspinbox.h>
+#include <qstringlist.h>
+#include <qvalidator.h>
+
+#include "kvi_string.h"
+#include "kvi_pixmap.h"
+#include "kvi_styled_controls.h"
+
+//#ifndef _KVI_SELECTORS_CPP_
+// extern void commitAllSelectors(QWidget * par,const char * classname);
+//#endif
+
+
+//
+// This is the common KviSelectorInterface
+//
+// Note: I'm always learning
+// Today I have discovered that:
+// QObject * o = new KviBoolSelector(...)
+// ((KviSelectorInterface *)o)->commit()
+// Does not work (SIGSEGV when jumping into commit(): bad vtable entry)
+// But the following works fine:
+// KviBoolSelector * b = new KviBoolSelector(...)
+// ((KviSelectorInterface *)b)->commit();
+// Mmmmmh.... the assembler generated by gcc
+// uses two different vtable offsets in the two cases
+// why ?
+//
+
+class KVIRC_API KviSelectorInterface
+{
+public:
+ KviSelectorInterface(){};
+ virtual ~KviSelectorInterface(){};
+public:
+ virtual void commit(){};
+};
+
+class KVIRC_API KviBoolSelector : public KviStyledCheckBox, public KviSelectorInterface
+{
+ Q_OBJECT
+public:
+ KviBoolSelector(QWidget * par,const QString & txt,bool *pOption,bool bEnabled);
+ ~KviBoolSelector(){};
+private:
+ bool * m_pOption;
+public:
+ virtual void commit();
+public slots:
+ void setNotEnabled(bool bNotEnabled);
+};
+
+class KVIRC_API KviStringSelector : public KviTalHBox, public KviSelectorInterface
+{
+ Q_OBJECT
+public:
+ KviStringSelector(QWidget * par,const QString & txt,QString * pOption,bool bEnabled);
+ ~KviStringSelector();
+protected:
+ QLabel * m_pLabel;
+ QLineEdit * m_pLineEdit;
+ QString * m_pOption;
+public:
+ void setValidator(QValidator * v){ m_pLineEdit->setValidator(v); };
+ void setMinimumLabelWidth(unsigned int uWidth){ m_pLabel->setMinimumWidth(uWidth); };
+ virtual void commit();
+ virtual void setEnabled(bool bEnabled);
+ void setText(const QString& text);
+};
+
+
+class KVIRC_API KviPasswordSelector : public KviStringSelector
+{
+ Q_OBJECT
+public:
+ KviPasswordSelector(QWidget * par,const QString & txt,QString * pOption,bool bEnabled);
+ ~KviPasswordSelector(){};
+};
+
+class KVIRC_API KviPixmapPreview : public KviTalScrollView
+{
+ Q_OBJECT
+public:
+ KviPixmapPreview(QWidget * par);
+ ~KviPixmapPreview();
+protected:
+ KviPixmap * m_pPixmap;
+public:
+ void setPixmap(KviPixmap * pix);
+protected:
+ virtual void drawContents(QPainter * p, int clipx, int clipy, int clipw, int cliph);
+
+};
+
+class KVIRC_API KviPixmapSelector : public QWidget, public KviSelectorInterface
+{
+ Q_OBJECT
+public:
+ KviPixmapSelector(QWidget * par,const QString & txt,KviPixmap * pOption,bool bEnabled);
+ ~KviPixmapSelector();
+private:
+ KviStyledCheckBox * m_pCheckBox;
+ QLabel * m_pFileNameLabel;
+ KviPixmapPreview * m_pPreview;
+ QPushButton * m_pChooseButton;
+ KviPixmap * m_pOption;
+ KviPixmap m_localPixmap;
+public:
+ void setImagePath(const char * path);
+ virtual void commit();
+ virtual void setEnabled(bool bEnabled);
+protected slots:
+ void checkBoxToggled(bool bEnabled);
+ void choosePixmap();
+};
+
+class KVIRC_API KviUIntSelector : public KviTalHBox, public KviSelectorInterface
+{
+ Q_OBJECT
+public:
+ KviUIntSelector(QWidget * par,const QString & txt,unsigned int *pOption,
+ unsigned int uLowBound,unsigned int uHighBound,unsigned int uDefault,bool bEnabled,bool bShortInt = false);
+ ~KviUIntSelector(){};
+private:
+ QLabel * m_pLabel;
+ QSpinBox * m_pSpinBox;
+ unsigned int * m_pOption;
+ unsigned int m_uLowBound;
+ unsigned int m_uHighBound;
+ unsigned int m_uDefault;
+ bool m_bIsShortInt;
+public:
+ virtual void setPrefix(const QString & txt);
+ virtual void setSuffix(const QString & txt);
+ virtual void commit();
+ virtual void setEnabled(bool bEnabled);
+};
+
+
+class KVIRC_API KviFileSelector : public KviTalHBox, public KviSelectorInterface
+{
+ Q_OBJECT
+public:
+ KviFileSelector(QWidget * par,const QString & txt,QString * pOption,bool bEnabled,unsigned int uFlags = 0,const QString &szFilter = QString::null);
+ ~KviFileSelector(){};
+public:
+ enum Flags {
+ ChooseSaveFileName = 1,
+ DontConfirmOverwrite = 2
+ };
+protected:
+ QLabel * m_pLabel;
+ QLineEdit * m_pLineEdit;
+ QPushButton * m_pButton;
+ QString * m_pOption;
+ unsigned int m_uFlags;
+ QString m_szFilter;
+public:
+ virtual void commit();
+ virtual void setEnabled(bool bEnabled);
+ void setSelection(const QString &szSelection);
+signals:
+ void selectionChanged(const QString &szNewValue);
+private slots:
+ void browseClicked();
+protected:
+ virtual void select();
+};
+
+class KVIRC_API KviDirectorySelector : public KviFileSelector
+{
+ Q_OBJECT
+public:
+ KviDirectorySelector(QWidget * par,const QString & txt,QString * pOption,bool bEnabled);
+ ~KviDirectorySelector(){};
+protected:
+ virtual void select();
+};
+
+
+class KVIRC_API KviColorSelector : public KviTalHBox, public KviSelectorInterface
+{
+ Q_OBJECT
+public:
+ KviColorSelector(QWidget * par,const QString & txt,QColor * pOption,bool bEnabled);
+ ~KviColorSelector(){};
+private:
+ QLabel * m_pLabel;
+ QColor * m_pOption;
+ QColor m_memColor;
+ QPushButton * m_pButton;
+public:
+ virtual void commit();
+ virtual void setEnabled(bool bEnabled);
+ QColor getColor(){ return m_memColor; };
+ void forceColor(QColor clr);
+private:
+ void setButtonPalette(QColor * pOption);
+private slots:
+ void changeClicked();
+};
+
+class KVIRC_API KviFontSelector : public KviTalHBox, public KviSelectorInterface
+{
+ Q_OBJECT
+public:
+ KviFontSelector(QWidget * par,const QString & txt,QFont * pOption,bool bEnabled);
+ ~KviFontSelector(){};
+private:
+ QLabel * m_pLabel;
+ QFont * m_pOption;
+ QPushButton * m_pButton;
+public:
+ virtual void commit();
+ virtual void setEnabled(bool bEnabled);
+private:
+ void setButtonFont(QFont * pOption);
+private slots:
+ void changeClicked();
+};
+
+class KVIRC_API KviStringListSelector : public KviTalVBox, public KviSelectorInterface
+{
+ Q_OBJECT
+public:
+ KviStringListSelector(QWidget * par,const QString & txt,QStringList * pOption,bool bEnabled);
+ ~KviStringListSelector();
+private:
+ QLabel * m_pLabel;
+ KviTalListBox * m_pListBox;
+ QLineEdit * m_pLineEdit;
+ QPushButton * m_pAddButton;
+ QPushButton * m_pRemoveButton;
+ QStringList * m_pOption;
+public:
+ virtual void commit();
+ virtual void setEnabled(bool bEnabled);
+private slots:
+ void textChanged(const QString &str);
+ void selectionChanged();
+ void addClicked();
+ void removeClicked();
+};
+
+class KviTalPopupMenu;
+
+class KVIRC_API KviMircTextColorSelector : public KviTalHBox, public KviSelectorInterface
+{
+ Q_OBJECT
+public:
+ KviMircTextColorSelector(QWidget * par,const QString &txt,unsigned int * uFore,unsigned int * uBack,bool bEnabled);
+ ~KviMircTextColorSelector();
+private:
+ QLabel *m_pLabel;
+ QPushButton * m_pButton;
+ unsigned int * m_pUFore;
+ unsigned int * m_pUBack;
+ unsigned int m_uFore;
+ unsigned int m_uBack;
+ KviTalPopupMenu * m_pContextPopup;
+ KviTalPopupMenu * m_pForePopup;
+ KviTalPopupMenu * m_pBackPopup;
+public:
+ virtual void commit();
+ virtual void setEnabled(bool bEnabled);
+protected slots:
+ void buttonClicked();
+ void foreSelected(int);
+ void backSelected(int);
+protected:
+ void setButtonPalette();
+};
+
+
+class KVIRC_API KviSoundSelector : public KviFileSelector
+{
+ Q_OBJECT
+public:
+ KviSoundSelector(QWidget * par,const QString & txt,QString * pOption,bool bEnabled);
+ ~KviSoundSelector();
+protected:
+ QPushButton *m_pPlayButton;
+private slots:
+ void playSound();
+public:
+ virtual void setEnabled(bool bEnabled);
+};
+
+class KVIRC_API KviChanListViewItem : public KviTalListViewItem
+{
+private:
+ QString m_szPass;
+public:
+ KviChanListViewItem(KviTalListView* pList,QString szChan,QString szPass);
+ ~KviChanListViewItem() {};
+
+ const QString& pass() { return m_szPass; }
+};
+
+class KVIRC_API KviCahnnelListSelector : public KviTalVBox, public KviSelectorInterface
+{
+ Q_OBJECT
+public:
+ KviCahnnelListSelector(QWidget * par,const QString & txt,QStringList * pOption,bool bEnabled);
+ ~KviCahnnelListSelector();
+private:
+ QLabel * m_pLabel;
+ KviTalListView * m_pListView;
+ QLineEdit * m_pChanLineEdit;
+ QLineEdit * m_pPassLineEdit;
+ QPushButton * m_pAddButton;
+ QPushButton * m_pRemoveButton;
+ QStringList * m_pOption;
+public:
+ virtual void commit();
+ virtual void setEnabled(bool bEnabled);
+private slots:
+ void textChanged(const QString &str);
+ void selectionChanged();
+ void addClicked();
+ void removeClicked();
+};
+
+
+
+#endif //!_KVI_SELECTORS_H_
diff --git a/src/kvirc/ui/kvi_splash.cpp b/src/kvirc/ui/kvi_splash.cpp
new file mode 100644
index 00000000..7b6b7177
--- /dev/null
+++ b/src/kvirc/ui/kvi_splash.cpp
@@ -0,0 +1,222 @@
+//=============================================================================
+//
+// File : kvi_splash.cpp
+// Creation date : Wed Aug 8 2001 17:46:10 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+#include "kvi_string.h"
+#include "kvi_app.h"
+#include "kvi_defaults.h"
+#include "kvi_splash.h"
+#include "kvi_locale.h"
+#include "kvi_fileutils.h"
+#include <qsplashscreen.h>
+
+#ifdef COMPILE_USE_QT4
+ #include <qdesktopwidget.h>
+#endif
+
+#include <qpixmap.h>
+#include <qpainter.h>
+#include <qlayout.h>
+
+#include <stdio.h>
+
+
+KviSplashScreen::KviSplashScreen()
+: QSplashScreen(QPixmap(1,1),Qt::WStyle_NoBorder | Qt::WType_TopLevel | Qt::WStyle_Customize | Qt::WStyle_StaysOnTop | Qt::WStyle_Splash)
+{
+ QString szPix;
+ QPixmap * pix = 0;
+
+ // check for the current theme splash screen pointer
+ QString szPointerFile;
+ g_pApp->getLocalKvircDirectory(szPointerFile,KviApp::Themes,"current-splash");
+ if(KviFileUtils::fileExists(szPointerFile))
+ {
+ QString szBuf;
+ KviFileUtils::readFile(szPointerFile,szBuf);
+ if(!szBuf.isEmpty())
+ {
+ g_pApp->getLocalKvircDirectory(szPix,KviApp::Themes,szBuf);
+ KviQString::ensureLastCharIs(szPix,KVI_PATH_SEPARATOR_CHAR);
+ szPix.append("kvi_splash.png");
+ pix = new QPixmap(szPix);
+ if(pix->isNull())
+ {
+ // no way..
+ delete pix;
+ pix = 0;
+ } else {
+ // else we might have a themed splash screen
+// g_pApp->getLocalKvircDirectory(szPix,KviApp::Themes,szBuf);
+ KviQString::ensureLastCharIs(szPix,KVI_PATH_SEPARATOR_CHAR);
+ szPix.append("kvi_splash_overlay.png");
+ m_pOverlay = new QPixmap(szPix);
+ if(m_pOverlay->isNull())
+ {
+ // no way..
+ delete pix;
+ pix = 0;
+ delete m_pOverlay;
+ m_pOverlay = 0;
+ }
+ }
+ }
+ }
+
+ if(!pix)
+ {
+ if(g_pApp->findImage(szPix,"kvi_splash.png"))
+ {
+ pix = new QPixmap(szPix);
+ } else {
+ // dummy image
+ pix = new QPixmap(300,200);
+ }
+
+ if(g_pApp->findImage(szPix,"kvi_splash_overlay.png"))
+ {
+ m_pOverlay = new QPixmap(szPix);
+ } else {
+ m_pOverlay = new QPixmap(300,20);
+ }
+ }
+
+ setPixmap(*pix);
+ m_pTimer = new QTimer(this);
+ connect(m_pTimer,SIGNAL(timeout()),this,SLOT(suicide()));
+ delete pix;
+
+#ifdef COMPILE_USE_QT4
+ setWindowOpacity(0);
+ m_bIncreasing=true;
+ m_rTransparency=0;
+ m_pFadeTimer= new QTimer(this);
+ connect(m_pFadeTimer,SIGNAL(timeout()),this,SLOT(fadeTimerShot()));
+ m_pFadeTimer->start(6);
+#endif
+}
+
+// We don't need messages on the splash: they just add work to the translators and nobody can read them anyway :D
+//void KviSplashScreen::message(QString szMessage)
+//{
+ //QSplashScreen::message(szMessage, Qt::AlignRight | Qt::AlignBottom, Qt::white);
+//}
+
+KviSplashScreen::~KviSplashScreen()
+{
+ g_pSplashScreen = 0; // make sure it's true
+ delete m_pTimer;
+ delete m_pOverlay;
+}
+
+
+void KviSplashScreen::showEvent(QShowEvent *e)
+{
+ move((g_pApp->desktop()->width() - width())/2,
+ (g_pApp->desktop()->height() - height())/2);
+ m_creationTime = QTime::currentTime();
+}
+
+void KviSplashScreen::hideEvent(QHideEvent *e)
+{
+ suicide();
+}
+
+void KviSplashScreen::setProgress(int progress)
+{
+#ifdef COMPILE_USE_QT4
+ QPixmap slowQt4Copy = pixmap();
+ QPainter painter(&slowQt4Copy);
+ QSize size = slowQt4Copy.size();
+ int w = (m_pOverlay->width() * progress) / 100;
+ painter.drawPixmap(0,size.height() - m_pOverlay->height(),w,m_pOverlay->height(),*m_pOverlay,0,0,w,m_pOverlay->height());
+ painter.end();
+ setPixmap(slowQt4Copy);
+#else
+ QPainter painter(pixmap());
+ QSize size = pixmap()->size();
+ painter.drawPixmap(0,size.height() - m_pOverlay->height(),*m_pOverlay,0,0,(m_pOverlay->width() * progress) / 100,m_pOverlay->height());
+ painter.end();
+#endif
+ //raise();
+ repaint();
+ g_pApp->processEvents(); //damn...
+}
+
+#define KVI_SPLASH_SCREEN_MINIMUM_TIMEOUT_IN_MSECS 2000
+
+void KviSplashScreen::die()
+{
+#ifdef COMPILE_USE_QT4
+ m_bIncreasing = false;
+ m_pFadeTimer->start(6);
+#else
+ QTime now = QTime::currentTime();
+ int mSecs = m_creationTime.msecsTo(now);
+ int mRemaining = KVI_SPLASH_SCREEN_MINIMUM_TIMEOUT_IN_MSECS - mSecs;
+ if(mRemaining < 0)mRemaining = 0;
+ m_pTimer->start(mRemaining,true);
+#endif
+}
+
+
+void KviSplashScreen::suicide()
+{
+ if(!g_pSplashScreen)return; // already in suicide ?
+ //g_pApp->collectGarbage(this);
+ g_pSplashScreen = 0;
+ deleteLater();
+ //delete this;
+}
+
+
+void KviSplashScreen::fadeTimerShot()
+{
+#ifdef COMPILE_USE_QT4
+ if(m_bIncreasing)
+ {
+ m_rTransparency+=0.05;
+ setWindowOpacity(m_rTransparency);
+ if(m_rTransparency>=1)
+ {
+ m_pFadeTimer->stop();
+ m_bIncreasing=false;
+ }
+
+
+ } else {
+ m_rTransparency-=0.02;
+ setWindowOpacity(m_rTransparency);
+ if(m_rTransparency<=0)
+ {
+ m_pFadeTimer->stop();
+ m_bIncreasing=true;
+ suicide();
+ }
+ }
+#endif
+}
+
+
+#include "kvi_splash.moc"
diff --git a/src/kvirc/ui/kvi_splash.h b/src/kvirc/ui/kvi_splash.h
new file mode 100644
index 00000000..83cfb734
--- /dev/null
+++ b/src/kvirc/ui/kvi_splash.h
@@ -0,0 +1,72 @@
+#ifndef _KVI_SPLASH_H_
+#define _KVI_SPLASH_H_
+//=============================================================================
+//
+// File : kvi_splash.h
+// Creation date : Wed Aug 8 2001 17:45:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+
+#include <qframe.h>
+
+#include <qprogressbar.h>
+#include <qlabel.h>
+#include <qtimer.h>
+#include <qdatetime.h>
+#include <qsplashscreen.h>
+#include <qpixmap.h>
+
+class KVIRC_API KviSplashScreen : public QSplashScreen
+{
+ Q_OBJECT
+public:
+ KviSplashScreen();
+ virtual ~KviSplashScreen();
+private:
+ QTimer * m_pTimer;
+ QTime m_creationTime;
+ QPixmap * m_pOverlay;
+#ifdef COMPILE_USE_QT4
+ bool m_bIncreasing;
+ qreal m_rTransparency;
+ QTimer * m_pFadeTimer;
+#endif
+protected:
+ virtual void showEvent(QShowEvent * e);
+ virtual void hideEvent(QHideEvent * e);
+public:
+ void setProgress(int progress);
+ void die();
+ //void message(QString);
+protected slots:
+ void suicide();
+ void fadeTimerShot();
+};
+
+extern KVIRC_API KviSplashScreen * g_pSplashScreen;
+
+#define KVI_SPLASH_SET_PROGRESS(__val) if(g_pSplashScreen)g_pSplashScreen->setProgress(__val);
+//#define KVI_SPLASH_SET_TEXT(__txt) if(g_pSplashScreen){ g_pSplashScreen->message(__txt); debug(__txt.latin1()); }
+
+
+#endif //_KVI_SPLASH_H_
diff --git a/src/kvirc/ui/kvi_statusbar.cpp b/src/kvirc/ui/kvi_statusbar.cpp
new file mode 100644
index 00000000..df20a225
--- /dev/null
+++ b/src/kvirc/ui/kvi_statusbar.cpp
@@ -0,0 +1,643 @@
+//=============================================================================
+//
+// File : kvi_statusbar.cpp
+// Created on Tue 07 Sep 2004 03:56:46 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_statusbar.h"
+#include "kvi_frame.h"
+
+#include <qlabel.h>
+
+#include "kvi_iconmanager.h"
+#include "kvi_window.h"
+#include "kvi_irccontext.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectionuserinfo.h"
+#include "kvi_locale.h"
+#include "kvi_app.h"
+#include "kvi_config.h"
+#include "kvi_modulemanager.h"
+#include "kvi_statusbarapplet.h"
+#include "kvi_dynamictooltip.h"
+
+#include <qpainter.h>
+#include <qstyle.h>
+#include <qlayout.h>
+#include <qtimer.h>
+#include <qcursor.h>
+#include "kvi_tal_popupmenu.h"
+#include <qpixmap.h>
+
+#ifdef COMPILE_USE_QT4
+ #include <qevent.h>
+#endif
+
+// This class COULD be derived also from KStatusBar but in fact
+// it adds no graphic functionality and it has only useless methods for us.
+// ... for now let's keep it simple :)
+
+
+#include "kvi_time.h"
+#include "kvi_qstring.h"
+
+#include <qfont.h>
+
+/*
+ IDEAS:
+ - Countdown timer
+*/
+
+
+
+
+
+KviStatusBar::KviStatusBar(KviFrame * pFrame)
+: QStatusBar(pFrame)
+{
+
+ setProperty("name","statusbar");
+ m_pFrame = pFrame;
+ // ugh :D
+ setSizeGripEnabled(false);
+
+ m_pContextPopup = 0;
+ m_pAppletsPopup = 0;
+
+ m_pClickedApplet = 0;
+
+ m_pAppletDescriptors = new KviPointerHashTable<QString,KviStatusBarAppletDescriptor>;
+ m_pAppletDescriptors->setAutoDelete(true);
+
+ KviStatusBarClock::selfRegister(this);
+ KviStatusBarAwayIndicator::selfRegister(this);
+ KviStatusBarLagIndicator::selfRegister(this);
+ KviStatusBarConnectionTimer::selfRegister(this);
+ KviStatusBarSeparator::selfRegister(this);
+
+ m_pAppletList = new KviPointerList<KviStatusBarApplet>;
+ m_pAppletList->setAutoDelete(false);
+
+ m_pMessageQueue = new KviPointerList<KviStatusBarMessage>;
+ m_pMessageQueue->setAutoDelete(true);
+
+ m_pMessageTimer = 0;
+
+ m_pMessageLabel = new QLabel("<b>[x]</b> x",this,"msgstatuslabel");
+ m_pMessageLabel->setMargin(1);
+#ifdef COMPILE_USE_QT4
+ m_pMessageLabel->setAlignment(Qt::AlignVCenter | Qt::AlignLeft);
+#else
+ m_pMessageLabel->setAlignment(SingleLine | Qt::AlignVCenter | Qt::AlignLeft);
+#endif
+ m_pMessageLabel->setMinimumWidth(350);
+
+ m_iLastMinimumHeight = 0;
+ m_bStopLayoutOnAddRemove = true;
+
+ connect(m_pFrame,SIGNAL(activeContextChanged()),this,SLOT(setPermanentMessage()));
+ connect(m_pFrame,SIGNAL(activeContextStateChanged()),this,SLOT(setPermanentMessage()));
+ connect(m_pFrame,SIGNAL(activeConnectionUserModeChanged()),this,SLOT(setPermanentMessage()));
+ connect(m_pFrame,SIGNAL(activeConnectionNickNameChanged()),this,SLOT(setPermanentMessage()));
+ setPermanentMessage();
+
+ m_bStopLayoutOnAddRemove = false;
+
+ m_pToolTip = new KviDynamicToolTip(this);
+ connect(m_pToolTip,SIGNAL(tipRequest(KviDynamicToolTip *,const QPoint &)),this,SLOT(tipRequest(KviDynamicToolTip *,const QPoint &)));
+
+ updateLayout();
+}
+
+KviStatusBar::~KviStatusBar()
+{
+ save();
+
+ m_bStopLayoutOnAddRemove = true;
+
+ if(m_pMessageTimer)delete m_pMessageTimer;
+ delete m_pMessageQueue;
+ delete m_pAppletDescriptors;
+ delete m_pAppletList;
+}
+
+void KviStatusBar::load()
+{
+ KviStr szBuf;
+ if(!g_pApp->getReadOnlyConfigPath(szBuf,"statusbar.kvc"))return; // no config file at all
+
+ KviConfig cfg(szBuf.ptr(),KviConfig::Read);
+ cfg.setGroup("Applets");
+
+ int nApplets = cfg.readIntEntry("Count",0);
+ for(int i=0;i<nApplets;i++)
+ {
+ KviStr prefix(KviStr::Format,"Applet%d",i);
+ KviStr tmp(KviStr::Format,"%s_InternalName",prefix.ptr());
+ QString szInternalName = cfg.readEntry(tmp.ptr(),"");
+ if(!szInternalName.isEmpty())
+ {
+ tmp.sprintf("%s_PreloadModule",prefix.ptr());
+ QString szPreloadModule = cfg.readEntry(tmp.ptr(),"");
+ if(!szPreloadModule.isEmpty())
+ g_pModuleManager->getModule(szPreloadModule.utf8().data());
+
+ KviStatusBarApplet * a = createApplet(szInternalName);
+ if (a)
+ a->loadState(prefix.ptr(),&cfg);
+ else
+ debug("warning: failed to create applet %s (preload: %s)!",
+ szInternalName.utf8().data(), szPreloadModule.utf8().data());
+ }
+ }
+}
+
+void KviStatusBar::save()
+{
+ // FIXME: This will preserve the settings of the last saved KviFrame's statusbar only :/
+ KviStr szBuf;
+ g_pApp->getLocalKvircDirectory(szBuf,KviApp::Config,"statusbar.kvc");
+
+ KviConfig cfg(szBuf.ptr(),KviConfig::Write);
+ cfg.setGroup("Applets");
+
+ cfg.writeEntry("Count",m_pAppletList->count());
+
+ int i = 0;
+ for(KviStatusBarApplet * a = m_pAppletList->first();a;a = m_pAppletList->next())
+ {
+ KviStr prefix(KviStr::Format,"Applet%d",i);
+ KviStr tmp(KviStr::Format,"%s_InternalName",prefix.ptr());
+ cfg.writeEntry(tmp.ptr(),a->descriptor()->internalName());
+ a->saveState(prefix.ptr(),&cfg);
+ if(!(a->descriptor()->preloadModule().isEmpty()))
+ {
+ tmp.sprintf("%s_PreloadModule",prefix.ptr());
+ cfg.writeEntry(tmp.ptr(),a->descriptor()->preloadModule());
+ }
+ i++;
+ }
+}
+
+#define VMARGIN 3
+#define HMARGIN 4
+#define SPACING 3
+#define RICHTEXTLABELTRICK 2
+
+void KviStatusBar::layoutChildren()
+{
+ int x = width() - HMARGIN;
+ int h = height() - (VMARGIN * 2);
+ for(KviStatusBarApplet * a = m_pAppletList->last();a;a = m_pAppletList->prev())
+ {
+ int w = a->sizeHint().width();
+ x -= w;
+ a->setGeometry(x,VMARGIN,w,h);
+ x -= SPACING;
+ }
+ // trick to center vertically the rich text label: make it some pixels smaller
+ m_pMessageLabel->setGeometry(HMARGIN,VMARGIN,x - HMARGIN,h - RICHTEXTLABELTRICK);
+}
+
+void KviStatusBar::resizeEvent(QResizeEvent * e)
+{
+ layoutChildren();
+}
+
+bool KviStatusBar::event(QEvent * e)
+{
+ if(e->type() == QEvent::LayoutHint)
+ {
+ updateLayout();
+ return false; // send to parents too!
+ }
+ return QStatusBar::event(e);
+}
+
+void KviStatusBar::recalcMinimumHeight()
+{
+ int s = 18;
+ int h = m_pMessageLabel->sizeHint().height();
+ if(h > s)s = h;
+ for(KviStatusBarApplet * a = m_pAppletList->last();a;a = m_pAppletList->prev())
+ {
+ h = a->sizeHint().height();
+ if(h > s)s = h;
+ }
+ s += (VMARGIN * 2) + RICHTEXTLABELTRICK;
+ if(m_iLastMinimumHeight != s)
+ {
+ m_iLastMinimumHeight = s;
+ setMinimumHeight(s);
+ QLayout * l = layout();
+ if(l)
+ if(l->inherits("QBoxLayout"))
+ ((QBoxLayout *)l)->addStrut(s);
+ // FIXME: do QMainWindow need setUpLayout() here ?
+ }
+}
+
+bool KviStatusBar::appletExists(KviStatusBarApplet * pApplet)
+{
+ return (m_pAppletList->findRef(pApplet) != -1);
+}
+
+KviStatusBarApplet * KviStatusBar::appletAt(const QPoint &pnt,bool bBestMatch)
+{
+ QPoint local = mapFromGlobal(pnt);
+ if(bBestMatch)
+ {
+ for(KviStatusBarApplet * a = m_pAppletList->first();a;a = m_pAppletList->next())
+ {
+ if(local.x() <= (a->x() + a->width()))return a;
+ }
+ return m_pAppletList->last(); // last anyway
+ }
+
+ for(KviStatusBarApplet * a = m_pAppletList->first();a;a = m_pAppletList->next())
+ {
+ if((local.x() >= a->x()) && (local.y() >= a->y()))
+ {
+ if((local.x() <= (a->x() + a->width())) && (local.y() <= (a->y() + a->height())))
+ {
+ return a;
+ }
+ }
+ }
+ return 0;
+}
+
+void KviStatusBar::tipRequest(KviDynamicToolTip *pTip,const QPoint &pnt)
+{
+ KviStatusBarApplet * a = appletAt(mapToGlobal(pnt));
+ QString szTip;
+ QRect r;
+ if(a)
+ {
+ szTip = "<table width=\"100%\"><tr><td bgcolor=\"#303030\" align=\"center\"><font color=\"#ffffff\"><b>" + a->descriptor()->visibleName() + "</b></font></td></tr>";
+
+ QString szTipx = a->tipText(a->mapFromGlobal(mapToGlobal(pnt)));
+ if(!szTipx.isEmpty())
+ {
+ szTip += "<tr><td>";
+ szTip += szTipx;
+ szTip += "</td></tr><tr><td align=\"center\"><hr></td></tr>";
+ }
+
+ szTip += "<tr><td align=\"center\"><font color=\"#808080\" size=\"-1\">";
+ szTip += __tr2qs("<b>Shift+Drag</b> or <b>Ctrl+Drag</b> to move the applet around<br><b>Right click</b> to see the other options");
+ szTip += "</font></td></tr></table>";
+ r = QRect(a->x(),a->y(),a->width(),a->height());
+ } else {
+ szTip = "<center>";
+ szTip += __tr2qs("<b>Right click</b> to add/remove applets");
+ szTip += "</center>";
+ r = QRect(m_pMessageLabel->x(),m_pMessageLabel->y(),m_pMessageLabel->width(),m_pMessageLabel->height());
+ }
+ pTip->tip(r,szTip);
+}
+
+KviTalPopupMenu * KviStatusBar::contextPopup()
+{
+ if(!m_pContextPopup)
+ {
+ m_pContextPopup = new KviTalPopupMenu(this);
+ connect(m_pContextPopup,SIGNAL(aboutToShow()),this,SLOT(contextPopupAboutToShow()));
+ }
+ m_pClickedApplet = appletAt(QCursor::pos());
+ return m_pContextPopup;
+}
+
+void KviStatusBar::contextPopupAboutToShow()
+{
+ if(!m_pContextPopup)return;
+ m_pContextPopup->clear();
+
+
+ if(appletExists(m_pClickedApplet))
+ {
+ QString app = m_pClickedApplet->descriptor()->visibleName();
+
+ QString tmp;
+ KviQString::sprintf(tmp,"<center><b>%Q</b></center>",&app);
+
+#ifndef COMPILE_USE_QT4
+ // FIXME: This is not supported under Qt4.. :(
+ QLabel * l = new QLabel(tmp,m_pContextPopup);
+ l->setFrameStyle(QFrame::Raised | QFrame::StyledPanel);
+ m_pContextPopup->insertItem(l);
+#endif
+
+ m_pClickedApplet->fillContextPopup(m_pContextPopup);
+
+ KviQString::sprintf(tmp,__tr2qs("Remove %Q"),&app);
+ m_pContextPopup->insertSeparator();
+ m_pContextPopup->insertItem(tmp,this,SLOT(removeClickedApplet()));
+ }
+
+ if(!m_pAppletsPopup)
+ {
+ m_pAppletsPopup = new KviTalPopupMenu(this);
+ connect(m_pAppletsPopup,SIGNAL(aboutToShow()),this,SLOT(appletsPopupAboutToShow()));
+ connect(m_pAppletsPopup,SIGNAL(activated(int)),this,SLOT(appletsPopupActivated(int)));
+ }
+
+ m_pContextPopup->insertItem(__tr2qs("Add Applet"),m_pAppletsPopup);
+}
+
+void KviStatusBar::removeClickedApplet()
+{
+ if(!appletExists(m_pClickedApplet))return;
+ delete m_pClickedApplet;
+ m_pClickedApplet = 0;
+}
+
+void KviStatusBar::appletsPopupAboutToShow()
+{
+ if(!m_pAppletsPopup)return;
+ m_pAppletsPopup->clear();
+
+ // FIXME: could we cache the module results in some way ?
+ g_pModuleManager->loadModulesByCaps("statusbarapplet");
+
+ KviPointerHashTableIterator<QString,KviStatusBarAppletDescriptor> it(*m_pAppletDescriptors);
+ while(KviStatusBarAppletDescriptor * d = it.current())
+ {
+ int id;
+ QPixmap * pix = d->icon();
+ if(pix)id = m_pAppletsPopup->insertItem(*pix,d->visibleName());
+ else id = m_pAppletsPopup->insertItem(d->visibleName());
+ m_pAppletsPopup->setItemParameter(id,d->id());
+ ++it;
+ }
+}
+
+KviStatusBarApplet * KviStatusBar::createApplet(const QString &szInternalName)
+{
+ KviStatusBarAppletDescriptor * d = m_pAppletDescriptors->find(szInternalName);
+ if(!d)return 0;
+ return d->create(this);
+}
+
+void KviStatusBar::showLayoutHelp()
+{
+ queueMessage(new KviStatusBarMessage(__tr2qs("Drag the applet while holding the Shift or Ctrl key to move it to the desired position")));
+}
+
+void KviStatusBar::appletsPopupActivated(int id)
+{
+ // FIXME: In fact the applet descriptors in modules could
+ // have been unloaded while the popup was being shown...
+ // For now we just assume that this never happens :D
+
+ if(!m_pAppletsPopup)return;
+ int par = m_pAppletsPopup->itemParameter(id);
+ KviPointerHashTableIterator<QString,KviStatusBarAppletDescriptor> it(*m_pAppletDescriptors);
+ while(KviStatusBarAppletDescriptor * d = it.current())
+ {
+ if(par == d->id())
+ {
+ if(m_pClickedApplet)
+ {
+ int idx = m_pAppletList->findRef(m_pClickedApplet);
+ if(idx != -1)
+ {
+ // try to put the new applet just after the clicked one
+ bool bSave = m_bStopLayoutOnAddRemove;
+ m_bStopLayoutOnAddRemove = true;
+ KviStatusBarApplet * a = d->create(this);
+ m_pAppletList->removeRef(a);
+ m_pAppletList->insert(idx + 1,a);
+ m_bStopLayoutOnAddRemove = bSave;
+ if(!m_bStopLayoutOnAddRemove)updateLayout();
+ showLayoutHelp();
+ return;
+ }
+ }
+ d->create(this);
+ showLayoutHelp();
+ return;
+ }
+ ++it;
+ }
+}
+
+void KviStatusBar::registerAppletDescriptor(KviStatusBarAppletDescriptor * d)
+{
+ m_pAppletDescriptors->replace(d->internalName(),d);
+}
+
+void KviStatusBar::registerApplet(KviStatusBarApplet * a)
+{
+ m_pAppletList->append(a);
+ if(!a->isVisible())a->show();
+ if(!m_bStopLayoutOnAddRemove)updateLayout();
+}
+
+void KviStatusBar::unregisterApplet(KviStatusBarApplet * a)
+{
+ if(!a)return;
+ m_pAppletList->removeRef(a);
+ if(a->isVisible())a->hide();
+ if(!m_bStopLayoutOnAddRemove)updateLayout();
+}
+
+
+void KviStatusBar::paintEvent(QPaintEvent * e)
+{
+ // avoid the ugly rectangle around the widgets painted by QStatusBar
+// QPainter p(this);
+// style().drawPrimitive(QStyle::PE_Panel,&p,rect(),colorGroup(),QStyle::Style_Raised,QStyleOption(1,1));
+ //QStatusBar::paintEvent(e);
+ //qDrawWinPanel(&p,0,0,width(),height(),colorGroup(),false,0);
+}
+
+void KviStatusBar::mousePressEvent(QMouseEvent * e)
+{
+ m_pClickedApplet = 0;
+ if(e->button() & Qt::RightButton)
+ {
+ contextPopup()->popup(QCursor::pos());
+ return;
+ }
+ if((e->button() & Qt::LeftButton) && (e->state() & (Qt::ShiftButton | Qt::ControlButton)))
+ {
+ // move!
+ m_pClickedApplet = appletAt(mapToGlobal(e->pos()));
+ if(!m_pClickedApplet)return;
+ m_pClickedApplet->select();
+#ifdef COMPILE_USE_QT4
+ g_pApp->setOverrideCursor(Qt::SizeAllCursor);
+#else
+ g_pApp->setOverrideCursor(sizeAllCursor);
+#endif
+ }
+}
+
+void KviStatusBar::mouseMoveEvent(QMouseEvent * e)
+{
+ if(!m_pClickedApplet)return;
+ if(!appletExists(m_pClickedApplet))return;
+ QPoint g = mapToGlobal(e->pos());
+ KviStatusBarApplet * a = appletAt(g,true);
+ if(a == m_pClickedApplet)return;
+ // move!
+ if(!a)
+ {
+ a = m_pAppletList->first();
+ if(!a)return; // ops!
+
+ if(e->pos().x() < (a->x() + a->width()))
+ {
+ if(a == m_pClickedApplet)return; // don't move
+ } else {
+ a = m_pAppletList->last();
+ if(!a)return;
+ if(a == m_pClickedApplet)return; // no way to move
+ }
+ }
+
+ m_pAppletList->removeRef(m_pClickedApplet);
+ int idx = m_pAppletList->findRef(a);
+ if(idx == -1)m_pAppletList->append(m_pClickedApplet); // uhg ?
+ else {
+ QPoint p = a->mapFromGlobal(g);
+ if(p.x() > (a->width() / 2))idx++; // just after
+ m_pAppletList->insert(idx,m_pClickedApplet);
+ }
+ layoutChildren();
+}
+
+void KviStatusBar::mouseReleaseEvent(QMouseEvent * e)
+{
+ if(e->button() & Qt::LeftButton)
+ {
+ if(m_pClickedApplet && appletExists(m_pClickedApplet))
+ {
+ m_pClickedApplet->select(false);
+ g_pApp->restoreOverrideCursor();
+ }
+ }
+}
+
+void KviStatusBar::queueMessage(KviStatusBarMessage * pMsg)
+{
+ // FIXME: the priority of the message!!!
+ m_pMessageQueue->append(pMsg);
+ if(!m_pMessageTimer)showFirstMessageInQueue();
+ // else we wait for the message timer to shot
+}
+
+void KviStatusBar::messageTimerFired()
+{
+ if(m_pMessageTimer)m_pMessageTimer->stop();
+
+ if(!m_pMessageQueue->isEmpty())
+ {
+ // the first message in queue is currently visible
+ // kill it
+ m_pMessageQueue->removeFirst();
+ if(!m_pMessageQueue->isEmpty())
+ {
+ // something to show
+ showFirstMessageInQueue();
+ }
+ }
+ // nothing else to show
+ delete m_pMessageTimer;
+ m_pMessageTimer = 0;
+
+ setPermanentMessage();
+}
+
+void KviStatusBar::showFirstMessageInQueue()
+{
+ KviStatusBarMessage * pMsg = m_pMessageQueue->first();
+ if(!pMsg)
+ {
+ if(m_pMessageTimer)
+ {
+ delete m_pMessageTimer;
+ m_pMessageTimer = 0;
+ }
+ return;
+ }
+
+ if(!m_pMessageTimer)
+ {
+ m_pMessageTimer = new QTimer(this);
+ QObject::connect(m_pMessageTimer,SIGNAL(timeout()),this,SLOT(messageTimerFired()));
+ } else {
+ m_pMessageTimer->stop();
+ }
+
+ m_pMessageLabel->setText("<nobr>" + pMsg->text() + "</nobr>");
+ m_pMessageTimer->start(pMsg->timeout());
+}
+
+
+void KviStatusBar::setPermanentMessage()
+{
+ if(m_pMessageTimer)return; // something is being actually shown!
+
+ KviIrcContext * c = m_pFrame->activeContext();
+
+ QString txt = "<nobr>";
+
+ if(c)
+ {
+ switch(c->state())
+ {
+ case KviIrcContext::Connected:
+ txt += "<b>[";
+ txt += c->connection()->currentServerName();
+ txt += "]</b> ";
+ txt += c->connection()->currentNickName();
+ if(!c->connection()->userInfo()->userMode().isEmpty())
+ {
+ txt += " (+";
+ txt += c->connection()->userInfo()->userMode();
+ txt += ")";
+ }
+ break;
+ case KviIrcContext::Connecting:
+ txt += __tr2qs("Connection in progress...");
+ break;
+ case KviIrcContext::LoggingIn:
+ txt += "<b>[";
+ txt += c->connection()->currentServerName();
+ txt += "]</b> ";
+ txt += __tr2qs("Login in progress...");
+ break;
+ default:
+ txt += __tr2qs("Not connected");
+ break;
+ }
+ } else {
+ txt += __tr2qs("No IRC context");
+ }
+
+ txt += "</nobr>";
+
+ m_pMessageLabel->setText(txt);
+}
diff --git a/src/kvirc/ui/kvi_statusbar.h b/src/kvirc/ui/kvi_statusbar.h
new file mode 100644
index 00000000..119c93d8
--- /dev/null
+++ b/src/kvirc/ui/kvi_statusbar.h
@@ -0,0 +1,130 @@
+#ifndef _KVI_STATUSBAR_H_
+#define _KVI_STATUSBAR_H_
+//=============================================================================
+//
+// File : kvi_statusbar.h
+// Created on Tue 07 Sep 2004 03:56:46 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_pointerlist.h"
+#include "kvi_heapobject.h"
+
+#include <qstring.h>
+#include "kvi_pointerhashtable.h"
+#include <qstatusbar.h>
+
+class KviFrame;
+
+class QTimer;
+class QLabel;
+class KviTalPopupMenu;
+
+class KVIRC_API KviStatusBarMessage : public KviHeapObject
+{
+ friend class KviStatusBar;
+protected:
+ QString m_szText;
+ unsigned int m_uTimeout;
+ unsigned int m_uPriority;
+public:
+ KviStatusBarMessage(const QString &szText,unsigned int uTimeout = 8000,unsigned int uPriority = 0)
+ : KviHeapObject(), m_szText(szText), m_uTimeout(uTimeout), m_uPriority(uPriority) {};
+ ~KviStatusBarMessage(){};
+public:
+ const QString & text(){ return m_szText; };
+ unsigned int timeout(){ return m_uTimeout; };
+ unsigned int priority(){ return m_uPriority; };
+};
+
+
+class KviStatusBarApplet;
+class KviStatusBarAppletDescriptor;
+class KviIrcContext;
+class KviDynamicToolTip;
+
+class KVIRC_API KviStatusBar : public QStatusBar
+{
+ friend class KviStatusBarApplet;
+ friend class KviFrame;
+ Q_OBJECT
+public:
+ KviStatusBar(KviFrame * pFrame);
+ ~KviStatusBar();
+protected:
+ KviFrame * m_pFrame;
+ KviPointerList<KviStatusBarMessage> * m_pMessageQueue;
+ QTimer * m_pMessageTimer;
+ QLabel * m_pMessageLabel;
+ KviPointerList<KviStatusBarApplet> * m_pAppletList;
+ KviPointerHashTable<QString,KviStatusBarAppletDescriptor> * m_pAppletDescriptors;
+ KviTalPopupMenu * m_pContextPopup;
+ KviTalPopupMenu * m_pAppletsPopup;
+ KviStatusBarApplet * m_pClickedApplet;
+ int m_iLastMinimumHeight;
+ bool m_bStopLayoutOnAddRemove;
+ KviDynamicToolTip * m_pToolTip;
+public:
+ KviFrame * frame(){ return m_pFrame; };
+protected slots:
+ void messageTimerFired();
+protected:
+ void showFirstMessageInQueue();
+ virtual void paintEvent(QPaintEvent * e);
+ virtual void mousePressEvent(QMouseEvent * e);
+ virtual void mouseMoveEvent(QMouseEvent * e);
+ virtual void mouseReleaseEvent(QMouseEvent * e);
+ virtual void resizeEvent(QResizeEvent * e);
+ virtual bool event(QEvent * e);
+ void registerApplet(KviStatusBarApplet * a);
+ void unregisterApplet(KviStatusBarApplet * a);
+ void recalcMinimumHeight();
+ void layoutChildren();
+ void updateLayout(){ recalcMinimumHeight(); layoutChildren(); };
+ void save();
+ void load();
+ KviStatusBarApplet * createApplet(const QString &szInternalName);
+ void showLayoutHelp();
+public:
+ bool appletExists(KviStatusBarApplet * pApplet);
+ // pnt is global!
+ KviStatusBarApplet * appletAt(const QPoint &pnt,bool bBestMatch = false);
+
+ KviTalPopupMenu * contextPopup();
+ // takes the ownership of pMsg
+ void queueMessage(KviStatusBarMessage * pMsg);
+ // called by KviFrame
+ void activeWindowChanged();
+
+ void registerAppletDescriptor(KviStatusBarAppletDescriptor * d);
+
+ //void addApplet(KviStatusBarApplet * pApplet);
+ //void removeApplet(KviStatusBarApplet * pApplet);
+protected slots:
+ void contextPopupAboutToShow();
+ void appletsPopupAboutToShow();
+ void appletsPopupActivated(int id);
+ void removeClickedApplet();
+ void setPermanentMessage();
+ void tipRequest(KviDynamicToolTip *pTip,const QPoint &pnt);
+};
+
+#endif //!_KVI_STATUSBAR_H_
diff --git a/src/kvirc/ui/kvi_statusbarapplet.cpp b/src/kvirc/ui/kvi_statusbarapplet.cpp
new file mode 100644
index 00000000..8e4ec89a
--- /dev/null
+++ b/src/kvirc/ui/kvi_statusbarapplet.cpp
@@ -0,0 +1,563 @@
+//=============================================================================//
+// File : kvi_statusbarapplet.cpp
+// Created on Tue 07 Sep 2004 03:56:46 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_statusbarapplet.h"
+#include "kvi_frame.h"
+#include "kvi_iconmanager.h"
+#include "kvi_window.h"
+#include "kvi_irccontext.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectionuserinfo.h"
+#include "kvi_ircconnectionstatistics.h"
+#include "kvi_locale.h"
+#include "kvi_app.h"
+#include "kvi_config.h"
+#include "kvi_modulemanager.h"
+#include "kvi_console.h"
+#include "kvi_lagmeter.h"
+#include "kvi_options.h"
+#include "kvi_kvs_script.h"
+
+#include <qpainter.h>
+#include <qstyle.h>
+#include <qlayout.h>
+#include <qtimer.h>
+#include <qcursor.h>
+#include "kvi_tal_popupmenu.h"
+#include <qpixmap.h>
+#ifdef COMPILE_USE_QT4
+ #include <qevent.h>
+#endif
+
+// This class COULD be derived also from KStatusBar but in fact
+// it adds no graphic functionality and it has only useless methods for us.
+// ... for now let's keep it simple :)
+
+
+// FIXME: Applets in modules SHOULD be unregistered automatically on unload!
+
+#include "kvi_time.h"
+#include "kvi_qstring.h"
+
+#include <qfont.h>
+
+/*
+ IDEAS:
+ - Lag meter
+ - Countdown timer
+*/
+
+KviStatusBarAppletDescriptor::KviStatusBarAppletDescriptor(const QString &szVisibleName,const QString &szInternalName,CreateAppletCallback pProc,const QString &szPreloadModule,const QPixmap &pixIcon)
+: KviHeapObject()
+{
+ static int s_iAppletDescriptorUniqueId = 0;
+ m_iId = s_iAppletDescriptorUniqueId;
+ s_iAppletDescriptorUniqueId++;
+ m_szVisibleName = szVisibleName;
+ m_szInternalName = szInternalName;
+ m_szPreloadModule = szPreloadModule;
+ m_pProc = pProc;
+ m_pAppletList = new KviPointerList<KviStatusBarApplet>;
+ m_pAppletList->setAutoDelete(false);
+ if(!pixIcon.isNull())m_pIcon = new QPixmap(pixIcon);
+ else m_pIcon = 0;
+}
+
+KviStatusBarAppletDescriptor::~KviStatusBarAppletDescriptor()
+{
+ while(KviStatusBarApplet * a = m_pAppletList->first())delete a;
+ delete m_pAppletList;
+ if(m_pIcon)delete m_pIcon;
+}
+
+KviStatusBarApplet * KviStatusBarAppletDescriptor::create(KviStatusBar * pBar)
+{
+ return m_pProc(pBar,this);
+}
+
+void KviStatusBarAppletDescriptor::registerApplet(KviStatusBarApplet * a)
+{
+ m_pAppletList->append(a);
+}
+
+void KviStatusBarAppletDescriptor::unregisterApplet(KviStatusBarApplet * a)
+{
+ m_pAppletList->removeRef(a);
+}
+
+
+
+
+
+
+KviStatusBarApplet::KviStatusBarApplet(KviStatusBar * pParent,KviStatusBarAppletDescriptor *pDescriptor)
+: QLabel(pParent), m_pStatusBar(pParent), m_pDescriptor(pDescriptor)
+{
+ m_pDescriptor->registerApplet(this);
+ m_pStatusBar->registerApplet(this);
+ m_bSelected = false;
+}
+
+KviStatusBarApplet::~KviStatusBarApplet()
+{
+ m_pDescriptor->unregisterApplet(this);
+ m_pStatusBar->unregisterApplet(this);
+}
+
+QString KviStatusBarApplet::tipText(const QPoint &)
+{
+ return QString::null;
+}
+
+void KviStatusBarApplet::paintEvent(QPaintEvent * e)
+{
+ QLabel::paintEvent(e);
+ setFont(KVI_OPTION_FONT(KviOption_fontIrcToolBarApplet));
+ if(m_bSelected)
+ {
+ QPainter p(this);
+#ifdef COMPILE_USE_QT4
+ p.setCompositionMode(QPainter::CompositionMode_SourceOut);
+ p.fillRect(rect(),Qt::black);
+ p.setCompositionMode(QPainter::CompositionMode_SourceOver);
+#else
+ p.setRasterOp(Qt::NotROP);
+ p.fillRect(rect(),Qt::black);
+ p.setRasterOp(Qt::CopyROP);
+#endif
+ }
+}
+
+void KviStatusBarApplet::select(bool bSelect)
+{
+ if(m_bSelected == bSelect)return;
+ m_bSelected = bSelect;
+ update();
+}
+
+
+
+
+KviStatusBarAwayIndicator::KviStatusBarAwayIndicator(KviStatusBar * pParent,KviStatusBarAppletDescriptor *pDescriptor)
+: KviStatusBarApplet(pParent,pDescriptor)
+{
+ m_bAwayOnAllContexts = false;
+ connect(pParent->frame(),SIGNAL(activeContextChanged()),this,SLOT(updateDisplay()));
+ connect(pParent->frame(),SIGNAL(activeContextStateChanged()),this,SLOT(updateDisplay()));
+ connect(pParent->frame(),SIGNAL(activeConnectionAwayStateChanged()),this,SLOT(updateDisplay()));
+
+ updateDisplay();
+
+ if(!pixmap())
+ setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_NOTAWAY)));
+}
+
+KviStatusBarAwayIndicator::~KviStatusBarAwayIndicator()
+{
+}
+
+void KviStatusBarAwayIndicator::updateDisplay()
+{
+ KviIrcContext * c = statusBar()->frame()->activeContext();
+
+ if(c && c->isConnected())
+ {
+ setPixmap(c->connection()->userInfo()->isAway() ?
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_AWAY)) : *(g_pIconManager->getSmallIcon(KVI_SMALLICON_NOTAWAY)));
+ } else {
+ // FIXME: We'd like to appear disabled here... but then we
+ // no longer get mouse events :/
+ setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_NOTAWAY)));
+ }
+}
+
+void KviStatusBarAwayIndicator::toggleContext()
+{
+ m_bAwayOnAllContexts = !m_bAwayOnAllContexts;
+}
+
+void KviStatusBarAwayIndicator::fillContextPopup(KviTalPopupMenu *p)
+{
+ int id = p->insertItem(__tr2qs("Apply to all IRC Contexts"),this,SLOT(toggleContext()));
+ p->setItemChecked(id,m_bAwayOnAllContexts);
+}
+
+void KviStatusBarAwayIndicator::loadState(const char * prefix,KviConfig *cfg)
+{
+ KviStr tmp(KviStr::Format,"%s_AwayOnAllContexts",prefix);
+ m_bAwayOnAllContexts = cfg->readBoolEntry(tmp.ptr(),false);
+}
+
+void KviStatusBarAwayIndicator::saveState(const char * prefix,KviConfig *cfg)
+{
+ KviStr tmp(KviStr::Format,"%s_AwayOnAllContexts",prefix);
+ cfg->writeEntry(tmp.ptr(),m_bAwayOnAllContexts);
+}
+
+KviStatusBarApplet * CreateStatusBarAwayIndicator(KviStatusBar * pBar,KviStatusBarAppletDescriptor *pDescriptor)
+{
+ return new KviStatusBarAwayIndicator(pBar,pDescriptor);
+}
+
+void KviStatusBarAwayIndicator::selfRegister(KviStatusBar * pBar)
+{
+ KviStatusBarAppletDescriptor * d = new KviStatusBarAppletDescriptor(
+ __tr2qs("Away Indicator"),"awayindicator",CreateStatusBarAwayIndicator,"",*(g_pIconManager->getSmallIcon(KVI_SMALLICON_AWAY)));
+ pBar->registerAppletDescriptor(d);
+}
+
+// FIXME: Away on all context should know where user is not away/back before toggling status
+void KviStatusBarAwayIndicator::mouseDoubleClickEvent(QMouseEvent * e)
+{
+ if(!(e->button() & Qt::LeftButton))return;
+ KviIrcConnection * c = statusBar()->frame()->activeConnection();
+ if(!c)return;
+ if(c->state() != KviIrcConnection::Connected)return;
+ QString command;
+ if(m_bAwayOnAllContexts)
+ command = "if($away)back -a; else away -a";
+ else
+ command = "if($away)back; else away";
+ KviKvsScript::run(command,c->console());
+}
+
+QString KviStatusBarAwayIndicator::tipText(const QPoint &)
+{
+ KviIrcConnection * c = statusBar()->frame()->activeConnection();
+ QString ret = "<center><b>";
+ if(!c)goto not_connected;
+ if(c->state() != KviIrcConnection::Connected)goto not_connected;
+ if(c->userInfo()->isAway())
+ {
+ QString tmp = KviTimeUtils::formatTimeInterval(kvi_unixTime() - c->userInfo()->awayTime(),KviTimeUtils::NoLeadingEmptyIntervals);
+ ret += __tr2qs("Away since");
+ ret += ' ';
+ ret += tmp;
+ ret += "</b><br>";
+ ret += __tr2qs("Double click to leave away mode");
+ } else {
+ ret += __tr2qs("Not away");
+ ret += "</b><br>";
+ ret += __tr2qs("Double click to enter away mode");
+ }
+ ret += "</center>";
+ return ret;
+
+not_connected:
+ ret += __tr2qs("Not connected");
+ ret += "</b></center>";
+ return ret;
+}
+
+
+KviStatusBarLagIndicator::KviStatusBarLagIndicator(KviStatusBar * pParent,KviStatusBarAppletDescriptor *pDescriptor)
+: KviStatusBarApplet(pParent,pDescriptor)
+{
+ connect(pParent->frame(),SIGNAL(activeContextChanged()),this,SLOT(updateDisplay()));
+ connect(pParent->frame(),SIGNAL(activeContextStateChanged()),this,SLOT(updateDisplay()));
+ connect(pParent->frame(),SIGNAL(activeConnectionLagChanged()),this,SLOT(updateDisplay()));
+
+ updateDisplay();
+
+ QFont f = font();
+ f.setFixedPitch(true);
+ f.setFamily("fixed");
+ setFont(f);
+
+ updateDisplay();
+}
+
+KviStatusBarLagIndicator::~KviStatusBarLagIndicator()
+{
+}
+
+void KviStatusBarLagIndicator::mouseDoubleClickEvent(QMouseEvent *e)
+{
+ if(!(e->button() & Qt::LeftButton))return;
+
+ KviIrcConnection * c = statusBar()->frame()->activeConnection();
+ if(!c)return;
+ if(c->state() != KviIrcConnection::Connected)return;
+ if(!c->lagMeter())
+ {
+ KVI_OPTION_BOOL(KviOption_boolUseLagMeterEngine) = true;
+ g_pApp->restartLagMeters();
+ }
+}
+
+
+QString KviStatusBarLagIndicator::tipText(const QPoint &)
+{
+ KviIrcConnection * c = statusBar()->frame()->activeConnection();
+ QString ret = "<center><b>";
+ if(!c)goto not_connected;
+ if(c->state() != KviIrcConnection::Connected)goto not_connected;
+ if(c->lagMeter())
+ {
+ int lll;
+ if((lll = c->lagMeter()->lag()) > 0)
+ {
+ int llls = lll / 1000;
+ int llld = (lll % 1000) / 100;
+ int lllc = (lll % 100) / 10;
+ KviQString::appendFormatted(ret,__tr2qs("Lag: %d.%d%d"),llls,llld,lllc);
+ ret += "</b><br>";
+ int vss = c->lagMeter()->secondsSinceLastCompleted();
+ int vmm = vss / 60;
+ vss = vss % 60;
+ KviQString::appendFormatted(ret,__tr2qs("Last checked %d mins %d secs ago"),vmm,vss);
+ } else {
+ ret += __tr2qs("Lag measure not available yet");
+ ret += "</b>";
+ }
+ } else {
+ ret += __tr2qs("Lag meter engine disabled");
+ ret += "</b><br>";
+ ret += __tr2qs("Double click to enable it");
+ }
+ ret += "</center>";
+ return ret;
+
+not_connected:
+ ret += __tr2qs("Not connected");
+ ret += "</b></center>";
+ return ret;
+}
+
+void KviStatusBarLagIndicator::updateDisplay()
+{
+ KviIrcContext * c = statusBar()->frame()->activeContext();
+ if(!c)return;
+ if(c->isConnected())
+ {
+ KviIrcConnection * ic = c->connection();
+ if(ic->lagMeter())
+ {
+ int lll;
+ if((lll = ic->lagMeter()->lag()) > 0)
+ {
+ int llls = lll / 1000;
+ int llld = (lll % 1000) / 100;
+ int lllc = (lll % 100) / 10;
+ QString tmp;
+ KviQString::sprintf(tmp,__tr2qs("Lag: %d.%d%d"),llls,llld,lllc);
+ if(lll > 60000)
+ {
+ // one minute lag!
+ // paint it in red
+ tmp.prepend("<nobr><font color=\"#e00000\">");
+ tmp.append("</font></nobr>");
+ }
+ setText(tmp);
+ return;
+ }
+ }
+ }
+ // no lag available
+ setText(__tr2qs("Lag: ?.??"));
+}
+
+KviStatusBarApplet * CreateStatusBarLagIndicator(KviStatusBar * pBar,KviStatusBarAppletDescriptor *pDescriptor)
+{
+ return new KviStatusBarLagIndicator(pBar,pDescriptor);
+}
+
+
+void KviStatusBarLagIndicator::selfRegister(KviStatusBar * pBar)
+{
+ KviStatusBarAppletDescriptor * d = new KviStatusBarAppletDescriptor(
+ __tr2qs("Lag Indicator"),"lagindicator",CreateStatusBarLagIndicator,"",*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SERVERPING)));
+ pBar->registerAppletDescriptor(d);
+}
+
+
+
+KviStatusBarClock::KviStatusBarClock(KviStatusBar * pParent,KviStatusBarAppletDescriptor *pDescriptor)
+: KviStatusBarApplet(pParent,pDescriptor)
+{
+ m_bUtc = false;
+
+ startTimer(1000);
+
+ QFont f = font();
+ f.setFixedPitch(true);
+ f.setFamily("fixed");
+ setFont(f);
+}
+
+KviStatusBarClock::~KviStatusBarClock()
+{
+}
+
+void KviStatusBarClock::timerEvent(QTimerEvent *)
+{
+ kvi_time_t tt = kvi_unixTime();
+ struct tm * t = m_bUtc ? gmtime(&tt) : localtime(&tt);
+ QString tmp;
+ KviQString::sprintf(tmp,"%d%d:%d%d:%d%d",
+ t->tm_hour / 10,
+ t->tm_hour % 10,
+ t->tm_min / 10,
+ t->tm_min % 10,
+ t->tm_sec / 10,
+ t->tm_sec % 10);
+ setText(tmp);
+}
+
+void KviStatusBarClock::fillContextPopup(KviTalPopupMenu * p)
+{
+ int id = p->insertItem("UTC",this,SLOT(toggleUtc()));
+ p->setItemChecked(id,m_bUtc);
+}
+
+void KviStatusBarClock::toggleUtc()
+{
+ m_bUtc = !m_bUtc;
+ timerEvent(0);
+}
+
+void KviStatusBarClock::loadState(const char * prefix,KviConfig *cfg)
+{
+ KviStr tmp(KviStr::Format,"%s_Utc",prefix);
+ m_bUtc = cfg->readBoolEntry(tmp.ptr(),false);
+}
+
+void KviStatusBarClock::saveState(const char * prefix,KviConfig *cfg)
+{
+ KviStr tmp(KviStr::Format,"%s_Utc",prefix);
+ cfg->writeEntry(tmp.ptr(),m_bUtc);
+}
+
+KviStatusBarApplet * CreateStatusBarClock(KviStatusBar * pBar,KviStatusBarAppletDescriptor *pDescriptor)
+{
+ return new KviStatusBarClock(pBar,pDescriptor);
+}
+
+void KviStatusBarClock::selfRegister(KviStatusBar * pBar)
+{
+ KviStatusBarAppletDescriptor * d = new KviStatusBarAppletDescriptor(
+ __tr2qs("Simple Clock"),"clock",CreateStatusBarClock,"",*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TIME)));
+ pBar->registerAppletDescriptor(d);
+}
+
+
+KviStatusBarConnectionTimer::KviStatusBarConnectionTimer(KviStatusBar * pParent,KviStatusBarAppletDescriptor *pDescriptor)
+: KviStatusBarApplet(pParent,pDescriptor)
+{
+ startTimer(1000);
+ m_bTotal=0;
+}
+
+KviStatusBarConnectionTimer::~KviStatusBarConnectionTimer()
+{
+}
+//g_pApp->topmostConnectedConsole()
+void KviStatusBarConnectionTimer::timerEvent(QTimerEvent * e)
+{
+ if(m_bTotal)
+ {
+ setText(KviTimeUtils::formatTimeInterval(KVI_OPTION_UINT(KviOption_uintTotalConnectionTime)));
+ } else {
+ if(g_pActiveWindow)
+ {
+ KviIrcContext * c = g_pActiveWindow->context();
+ if(c)
+ {
+ if(c->isConnected())
+ {
+ KviIrcConnection * cnn = c->connection();
+ if(cnn)
+ {
+ setText(KviTimeUtils::formatTimeInterval(kvi_unixTime() - cnn->statistics()->connectionStartTime()));
+ return;
+ }
+ }
+ }
+ }
+
+ setText(KviTimeUtils::formatTimeInterval(0,KviTimeUtils::FillWithHypens));
+ }
+ return;
+}
+
+void KviStatusBarConnectionTimer::toggleTotal()
+{
+ m_bTotal = !m_bTotal;
+}
+
+void KviStatusBarConnectionTimer::fillContextPopup(KviTalPopupMenu *p)
+{
+ int id = p->insertItem(__tr2qs("Show total connection time"),this,SLOT(toggleTotal()));
+ p->setItemChecked(id,m_bTotal);
+}
+
+void KviStatusBarConnectionTimer::loadState(const char * prefix,KviConfig *cfg)
+{
+ KviStr tmp(KviStr::Format,"%s_Total",prefix);
+ m_bTotal = cfg->readBoolEntry(tmp.ptr(),false);
+}
+
+void KviStatusBarConnectionTimer::saveState(const char * prefix,KviConfig *cfg)
+{
+ KviStr tmp(KviStr::Format,"%s_Total",prefix);
+ cfg->writeEntry(tmp.ptr(),m_bTotal);
+}
+
+KviStatusBarApplet * CreateStatusBarConnectionTimer(KviStatusBar * pBar,KviStatusBarAppletDescriptor *pDescriptor)
+{
+ return new KviStatusBarConnectionTimer(pBar,pDescriptor);
+}
+
+void KviStatusBarConnectionTimer::selfRegister(KviStatusBar * pBar)
+{
+ KviStatusBarAppletDescriptor * d = new KviStatusBarAppletDescriptor(
+ __tr2qs("Connection Timer"),"connectiontimer",CreateStatusBarConnectionTimer,"",*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TIME)));
+ pBar->registerAppletDescriptor(d);
+}
+
+
+
+KviStatusBarSeparator::KviStatusBarSeparator(KviStatusBar * pParent,KviStatusBarAppletDescriptor *pDescriptor)
+: KviStatusBarApplet(pParent,pDescriptor)
+{
+ setFrameStyle(QFrame::VLine | QFrame::Sunken);
+}
+
+KviStatusBarSeparator::~KviStatusBarSeparator()
+{
+}
+
+KviStatusBarApplet * CreateStatusBarSeparator(KviStatusBar * pBar,KviStatusBarAppletDescriptor *pDescriptor)
+{
+ return new KviStatusBarSeparator(pBar,pDescriptor);
+}
+
+void KviStatusBarSeparator::selfRegister(KviStatusBar * pBar)
+{
+ KviStatusBarAppletDescriptor * d = new KviStatusBarAppletDescriptor(
+ __tr2qs("Separator"),"separator",CreateStatusBarSeparator);
+ pBar->registerAppletDescriptor(d);
+}
+
diff --git a/src/kvirc/ui/kvi_statusbarapplet.h b/src/kvirc/ui/kvi_statusbarapplet.h
new file mode 100644
index 00000000..6302be59
--- /dev/null
+++ b/src/kvirc/ui/kvi_statusbarapplet.h
@@ -0,0 +1,195 @@
+#ifndef _KVI_STATUSBARAPPLET_H_
+#define _KVI_STATUSBARAPPLET_H_
+//=============================================================================
+//
+// File : kvi_statusbarapplet.h
+// Created on Tue 07 Sep 2004 03:56:46 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_pointerlist.h"
+#include "kvi_heapobject.h"
+#include "kvi_statusbar.h"
+
+#include <qstring.h>
+#include "kvi_pointerhashtable.h"
+#include <qstatusbar.h>
+#include <qlabel.h>
+#include <qpixmap.h>
+
+class QTimer;
+class QLabel;
+class KviTalPopupMenu;
+
+class KviConfig;
+class KviFrame;
+class KviIrcContext;
+class KviIrcConnection;
+class KviStatusBarApplet;
+class KviStatusBarAppletDescriptor;
+
+typedef KviStatusBarApplet * (*CreateAppletCallback)(KviStatusBar *,KviStatusBarAppletDescriptor *);
+
+class KVIRC_API KviStatusBarAppletDescriptor : public KviHeapObject
+{
+ friend class KviStatusBar;
+ friend class KviStatusBarApplet;
+protected:
+ QString m_szVisibleName; // visible name of the applet
+ QString m_szInternalName; // UNIQUE name of the applet
+ QString m_szPreloadModule; // name of the module that must be preloaded for this applet
+ CreateAppletCallback m_pProc; // creation callback
+ QPixmap * m_pIcon;
+ int m_iId;
+ KviPointerList<KviStatusBarApplet> * m_pAppletList;
+public:
+ KviStatusBarAppletDescriptor(const QString &szVisibleName,
+ const QString &szInternalName,
+ CreateAppletCallback pProc,
+ const QString &szPreloadModule = QString::null,
+ const QPixmap &pixIcon = QPixmap());
+ virtual ~KviStatusBarAppletDescriptor();
+public:
+ const QString &visibleName(){ return m_szVisibleName; };
+ const QString &internalName(){ return m_szInternalName; };
+ const QString &preloadModule(){ return m_szPreloadModule; };
+ int id(){ return m_iId; };
+ QPixmap * icon(){ return m_pIcon; };
+protected:
+ KviStatusBarApplet * create(KviStatusBar * pBar);
+ void registerApplet(KviStatusBarApplet * a);
+ void unregisterApplet(KviStatusBarApplet * a);
+};
+
+
+class KVIRC_API KviStatusBarApplet : public QLabel
+{
+ friend class KviStatusBar;
+ Q_OBJECT
+protected:
+ KviStatusBar * m_pStatusBar;
+ KviStatusBarAppletDescriptor * m_pDescriptor;
+ bool m_bSelected;
+public:
+ KviStatusBarApplet(KviStatusBar * pParent,KviStatusBarAppletDescriptor *pDescriptor);
+ virtual ~KviStatusBarApplet();
+public:
+ KviStatusBar * statusBar(){ return m_pStatusBar; };
+ KviFrame * frame(){ return m_pStatusBar->frame(); };
+ KviStatusBarAppletDescriptor * descriptor(){ return m_pDescriptor; };
+ void select(bool bSelect = true);
+ bool isSelected(){ return m_bSelected; };
+protected:
+ virtual void paintEvent(QPaintEvent *e);
+ virtual void fillContextPopup(KviTalPopupMenu *p){};
+ virtual void loadState(const char * prefix,KviConfig *cfg){};
+ virtual void saveState(const char * prefix,KviConfig *cfg){};
+ virtual QString tipText(const QPoint &);
+};
+
+
+
+class KviStatusBarClock : public KviStatusBarApplet
+{
+ Q_OBJECT
+public:
+ KviStatusBarClock(KviStatusBar * pParent,KviStatusBarAppletDescriptor *pDescriptor);
+ virtual ~KviStatusBarClock();
+protected:
+ bool m_bUtc;
+public:
+ static void selfRegister(KviStatusBar * pBar);
+protected:
+ virtual void fillContextPopup(KviTalPopupMenu * p);
+ virtual void timerEvent(QTimerEvent * e);
+ virtual void loadState(const char * prefix,KviConfig *cfg);
+ virtual void saveState(const char * prefix,KviConfig *cfg);
+protected slots:
+ void toggleUtc();
+};
+
+class KviStatusBarConnectionTimer : public KviStatusBarApplet
+{
+ Q_OBJECT
+public:
+ KviStatusBarConnectionTimer(KviStatusBar * pParent,KviStatusBarAppletDescriptor *pDescriptor);
+ virtual ~KviStatusBarConnectionTimer();
+protected:
+ bool m_bTotal;
+protected:
+ virtual void timerEvent(QTimerEvent * e);
+ virtual void fillContextPopup(KviTalPopupMenu *p);
+ virtual void loadState(const char * prefix,KviConfig *cfg);
+ virtual void saveState(const char * prefix,KviConfig *cfg);
+public:
+ static void selfRegister(KviStatusBar * pBar);
+protected slots:
+ void toggleTotal();
+};
+
+class KviStatusBarSeparator : public KviStatusBarApplet
+{
+ Q_OBJECT
+public:
+ KviStatusBarSeparator(KviStatusBar * pParent,KviStatusBarAppletDescriptor *pDescriptor);
+ virtual ~KviStatusBarSeparator();
+public:
+ static void selfRegister(KviStatusBar * pBar);
+};
+
+class KviStatusBarAwayIndicator : public KviStatusBarApplet
+{
+ Q_OBJECT
+public:
+ KviStatusBarAwayIndicator(KviStatusBar * pParent,KviStatusBarAppletDescriptor *pDescriptor);
+ virtual ~KviStatusBarAwayIndicator();
+public:
+ static void selfRegister(KviStatusBar * pBar);
+protected:
+ bool m_bAwayOnAllContexts;
+protected:
+ virtual void mouseDoubleClickEvent(QMouseEvent *e);
+ virtual QString tipText(const QPoint &);
+ virtual void fillContextPopup(KviTalPopupMenu *p);
+ virtual void loadState(const char * prefix,KviConfig *cfg);
+ virtual void saveState(const char * prefix,KviConfig *cfg);
+protected slots:
+ void updateDisplay();
+ void toggleContext();
+};
+
+class KviStatusBarLagIndicator : public KviStatusBarApplet
+{
+ Q_OBJECT
+public:
+ KviStatusBarLagIndicator(KviStatusBar * pParent,KviStatusBarAppletDescriptor *pDescriptor);
+ virtual ~KviStatusBarLagIndicator();
+public:
+ static void selfRegister(KviStatusBar * pBar);
+protected:
+ virtual void mouseDoubleClickEvent(QMouseEvent *e);
+ virtual QString tipText(const QPoint &);
+protected slots:
+ void updateDisplay();
+};
+
+
+#endif //!_KVI_STATUSBARAPPLET_H_
diff --git a/src/kvirc/ui/kvi_styled_controls.cpp b/src/kvirc/ui/kvi_styled_controls.cpp
new file mode 100644
index 00000000..8656b69b
--- /dev/null
+++ b/src/kvirc/ui/kvi_styled_controls.cpp
@@ -0,0 +1,373 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// File : kvi_styled_controls.cpp
+// Creation date : 19 Jan 2006 GMT by Alexey Uzhva
+//
+// This toolbar is part of the KVirc irc client distribution
+// Copyright (C) 2006 Alexey Uzhva
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+
+#define __KVIRC__
+
+#include "kvi_styled_controls.h"
+
+#ifndef COMPILE_USE_QT4
+
+#include "kvi_iconmanager.h"
+#include "kvi_app.h"
+#include "kvi_options.h"
+#include "kvi_doublebuffer.h"
+#include "kvi_tal_toolbar.h"
+
+#include <qcheckbox.h>
+#include <qpainter.h>
+#include <qimage.h>
+#include <qevent.h>
+#include <qtimer.h>
+
+
+KviStyledControlInternal::KviStyledControlInternal( KviStyledControl* control)
+:QObject(0,0)
+{
+ m_pControl=control;
+}
+
+KviStyledControlInternal::~KviStyledControlInternal()
+{
+
+}
+
+bool KviStyledControlInternal::eventFilter( QObject *obj, QEvent *ev )
+{
+ if(ev->type()==QEvent::Enter)
+ {
+ m_pControl->enterEvent(ev);
+ } else if(ev->type()==QEvent::Leave) {
+ m_pControl->leaveEvent(ev);
+ }
+ return FALSE;
+}
+
+void KviStyledControlInternal::paintTimerShot ()
+{
+// debug("%s %s %i",__FILE__,__FUNCTION__,__LINE__);
+// debug("%s %i",__FUNCTION__,m_pControl->m_iStepNumber);
+ if(m_pControl->m_bMouseEnter)
+ {
+ m_pControl->m_iStepNumber++;
+ if(m_pControl->m_iStepNumber>=KVI_STYLE_NUM_STEPS)
+ {
+ m_pControl->m_iStepNumber=KVI_STYLE_NUM_STEPS;
+ m_pControl->m_pTimer->stop();
+ }
+ } else {
+ m_pControl->m_iStepNumber--;
+ if(m_pControl->m_iStepNumber<=0)
+ {
+ m_pControl->m_iStepNumber=0;
+ m_pControl->m_pTimer->stop();
+ }
+ }
+ m_pControl->m_pWidget->repaint( false );
+}
+
+KviStyledControl::KviStyledControl(QWidget* w)
+{
+ m_pWidget=w;
+ m_iStepNumber=0;
+ m_bMouseEnter=0;
+ m_pInternal=new KviStyledControlInternal(this);
+ m_pTimer = new QTimer(m_pInternal);
+ m_pWidget->installEventFilter(m_pInternal);
+}
+
+KviStyledControl::~KviStyledControl()
+{
+ delete m_pTimer;
+ delete m_pInternal;
+}
+
+void KviStyledControl::enterEvent ( QEvent * )
+{
+// debug("%s %s %i",__FILE__,__FUNCTION__,__LINE__);
+ if(m_pWidget->isEnabled() && KVI_OPTION_BOOL(KviOption_boolEnableVisualEffects))
+ {
+ if(m_iStepNumber<KVI_STYLE_NUM_STEPS)
+ {
+ if(!m_pTimer->isActive())
+ {
+ m_pTimer->connect( m_pTimer, SIGNAL(timeout()), m_pInternal, SLOT(paintTimerShot()) );
+ m_pTimer->start(KVI_STYLE_TIMER_STEP);
+ }
+ }
+ m_bMouseEnter=1;
+ m_iStepNumber++;
+ m_pWidget->repaint( false );
+ }
+}
+
+void KviStyledControl::leaveEvent ( QEvent * )
+{
+// debug("%s %s %i",__FILE__,__FUNCTION__,__LINE__);
+ if(m_pWidget->isEnabled() && KVI_OPTION_BOOL(KviOption_boolEnableVisualEffects))
+ {
+ if(m_iStepNumber>0)
+ {
+ if(!m_pTimer->isActive())
+ {
+ m_pTimer->connect( m_pTimer, SIGNAL(timeout()), m_pInternal, SLOT(paintTimerShot()) );
+ m_pTimer->start(KVI_STYLE_TIMER_STEP);
+ }
+ }
+ m_bMouseEnter=0;
+ m_iStepNumber--;
+ m_pWidget->repaint( false );
+ }
+}
+
+
+KviStyledCheckBox::KviStyledCheckBox ( QWidget * parent, const char * name )
+: QCheckBox(parent,name), KviStyledControl(this)
+{
+ setWFlags(WNoAutoErase);
+
+}
+
+KviStyledCheckBox::KviStyledCheckBox ( const QString & text, QWidget * parent, const char * name )
+: QCheckBox(text,parent,name), KviStyledControl(this)
+{
+ setWFlags(WNoAutoErase);
+}
+
+KviStyledCheckBox::~KviStyledCheckBox()
+{
+
+}
+
+
+void KviStyledCheckBox::paintEvent ( QPaintEvent * event)
+{
+ //debug("%s %s %i %i %i",__FILE__,__FUNCTION__,__LINE__,m_bMouseEnter,m_iStepNumber);
+ if(KVI_OPTION_BOOL(KviOption_boolEnableVisualEffects))
+ {
+ KviDoubleBuffer doublebuffer(event->rect().width(),event->rect().height());
+ QPixmap * pDoubleBufferPixmap = doublebuffer.pixmap();
+
+ QRect rect=event->rect();
+ pDoubleBufferPixmap->fill(this, rect.topLeft());
+
+ QPainter p(pDoubleBufferPixmap, this);
+ p.translate(-rect.x(), -rect.y());
+
+ QPixmap* pStoredPix = 0;
+
+ if(isChecked())
+ pStoredPix=g_pIconManager->getBigIcon("kvi_checkbox_selected.png");
+ else
+ pStoredPix=g_pIconManager->getBigIcon("kvi_checkbox_unselected.png");
+ //debug("%s %s %i %i %i",__FILE__,__FUNCTION__,__LINE__,m_bMouseEnter,m_iStepNumber);
+ if(pStoredPix)
+ {
+ //debug("%s %s %i %i %i",__FILE__,__FUNCTION__,__LINE__,m_bMouseEnter,m_iStepNumber);
+ QPixmap pix=*pStoredPix;
+ if(m_iStepNumber && isEnabled())
+ {
+ QImage image = pix.convertToImage();
+ for(int x=0; x<image.width(); x++)
+ for(int y=0; y<image.height(); y++)
+ {
+ QRgb rgb=image.pixel(x,y);
+ rgb=qRgba(
+ qRed(rgb)+KVI_STYLE_COLOR_DIFF/KVI_STYLE_NUM_STEPS*m_iStepNumber < 255 ? qRed(rgb)+KVI_STYLE_COLOR_DIFF/KVI_STYLE_NUM_STEPS*m_iStepNumber : 255 ,
+ qGreen(rgb)+KVI_STYLE_COLOR_DIFF/KVI_STYLE_NUM_STEPS*m_iStepNumber < 255 ? qGreen(rgb)+KVI_STYLE_COLOR_DIFF/KVI_STYLE_NUM_STEPS*m_iStepNumber : 255,
+ qBlue(rgb),
+ qAlpha(rgb)
+ );
+ image.setPixel(x,y,rgb);
+ }
+ p.drawImage(0,0,image);
+ } else if( !isEnabled()) {
+ QImage image = pix.convertToImage();
+ for(int x=0; x<image.width(); x++)
+ for(int y=0; y<image.height(); y++)
+ {
+ //- From Black to Gray conversion for disabled mode.
+ QRgb rgb=image.pixel(x,y);
+ rgb=qRgba(
+ qRed(rgb)+KVI_STYLE_COLOR_DIFF/KVI_STYLE_NUM_STEPS*m_iStepNumber == 0 ? 180 : qRed(rgb)+KVI_STYLE_COLOR_DIFF/KVI_STYLE_NUM_STEPS*m_iStepNumber,
+ qGreen(rgb)+KVI_STYLE_COLOR_DIFF/KVI_STYLE_NUM_STEPS*m_iStepNumber == 0 ? 180 : qGreen(rgb)+KVI_STYLE_COLOR_DIFF/KVI_STYLE_NUM_STEPS*m_iStepNumber,
+ qBlue(rgb)+KVI_STYLE_COLOR_DIFF/KVI_STYLE_NUM_STEPS*m_iStepNumber == 0 ? 180 : qBlue(rgb)+KVI_STYLE_COLOR_DIFF/KVI_STYLE_NUM_STEPS*m_iStepNumber,
+ qAlpha(rgb)
+ );
+ image.setPixel(x,y,rgb);
+ }
+ p.drawImage(0,0,image);
+ } else {
+ p.drawPixmap(0,0,pix);
+ }
+ //debug("%s %s %i %i %i",__FILE__,__FUNCTION__,__LINE__,m_bMouseEnter,m_iStepNumber);
+ QString szText=text();
+ szText=szText.remove("&");
+ p.drawText(pix.width()+3,0,width(),height(),0,szText);
+ bitBlt(this, rect.x(), rect.y(), pDoubleBufferPixmap, 0, 0, rect.width(), rect.height());
+ //debug("%s %s %i %i %i",__FILE__,__FUNCTION__,__LINE__,m_bMouseEnter,m_iStepNumber);
+ } else {
+ QCheckBox::paintEvent(event);
+ }
+ } else
+ QCheckBox::paintEvent(event);
+}
+
+KviStyledToolButton::KviStyledToolButton( QWidget * parent, const char * name )
+: QToolButton(parent,name), KviStyledControl(this), bShowSubmenuIndicator(false)
+{
+ setWFlags(WNoAutoErase);
+ resizeEvent(0);
+}
+
+KviStyledToolButton::KviStyledToolButton ( const QIconSet & iconSet, const QString & textLabel, const QString & grouptext, QObject * receiver, const char * slot, KviTalToolBar * parent, const char * name )
+: QToolButton(iconSet,textLabel,grouptext,receiver,slot,parent,name), KviStyledControl(this), bShowSubmenuIndicator(false)
+{
+ setWFlags(WNoAutoErase);
+ resizeEvent(0);
+}
+
+KviStyledToolButton::~KviStyledToolButton()
+{
+
+}
+
+void KviStyledToolButton::setShowSubmenuIndicator(bool bShow)
+{
+ bShowSubmenuIndicator=bShow;
+ resizeEvent(0);
+}
+
+void KviStyledToolButton::paintEvent ( QPaintEvent * event)
+{
+ if(KVI_OPTION_BOOL(KviOption_boolEnableVisualEffects))
+ {
+ QPixmap* pArrowPix = 0;
+ int iWidth=width();
+ int iPixWidth=0;
+ if(bShowSubmenuIndicator)
+ {
+ if(pArrowPix=g_pIconManager->getBigIcon("kvi_toolbutton_menuindicator.png"))
+ iPixWidth=pArrowPix->width();
+ }
+ bool bActive= isOn() || m_bMouseEnter;
+ KviDoubleBuffer doublebuffer(event->rect().width(),event->rect().height());
+ QPixmap * pDoubleBufferPixmap = doublebuffer.pixmap();
+
+ QRect rect=event->rect();
+
+ pDoubleBufferPixmap->fill(
+ bActive ? QColor(206,215,223) :
+ colorGroup().background()
+ );
+
+
+ QPainter p(pDoubleBufferPixmap, this);
+ p.translate(-rect.x(), -rect.y());
+
+ if(bActive)
+ {
+ p.setPen(QColor(185,190,195));
+ p.drawRect(0,0,iWidth,height());
+ }
+
+ QPixmap pix=iconSet().pixmap(
+ usesBigPixmap() ? QIconSet::Large : QIconSet::Small,
+ isEnabled() ? QIconSet::Normal :
+ QIconSet::Disabled,
+ isOn() ? QIconSet::On :
+ QIconSet::Off);
+ QPoint pos((iWidth-iPixWidth-pix.width())/2,(height()-pix.height())/2);
+ if(!pix.isNull())
+ {
+ if(m_iStepNumber && isEnabled())
+ {
+ QImage image = pix.convertToImage();
+ for(int x=0; x<image.width(); x++)
+ for(int y=0; y<image.height(); y++)
+ {
+ QRgb rgb=image.pixel(x,y);
+ rgb=qRgba(
+ qRed(rgb)+KVI_STYLE_COLOR_DIFF/KVI_STYLE_NUM_STEPS*m_iStepNumber < 255 ? qRed(rgb)+KVI_STYLE_COLOR_DIFF/KVI_STYLE_NUM_STEPS*m_iStepNumber : 255 ,
+ qGreen(rgb)+KVI_STYLE_COLOR_DIFF/KVI_STYLE_NUM_STEPS*m_iStepNumber < 255 ? qGreen(rgb)+KVI_STYLE_COLOR_DIFF/KVI_STYLE_NUM_STEPS*m_iStepNumber : 255,
+ qBlue(rgb),
+ qAlpha(rgb)
+ );
+ image.setPixel(x,y,rgb);
+ }
+ p.drawImage(pos,image);
+ } else if( !isEnabled()) {
+ QImage image = pix.convertToImage();
+ for(int x=0; x<image.width(); x++)
+ for(int y=0; y<image.height(); y++)
+ {
+ //- From Black to Gray conversion for disabled mode.
+ QRgb rgb=image.pixel(x,y);
+ rgb=qRgba(
+ qRed(rgb)+KVI_STYLE_COLOR_DIFF/KVI_STYLE_NUM_STEPS*m_iStepNumber == 0 ? 180 : qRed(rgb)+KVI_STYLE_COLOR_DIFF/KVI_STYLE_NUM_STEPS*m_iStepNumber,
+ qGreen(rgb)+KVI_STYLE_COLOR_DIFF/KVI_STYLE_NUM_STEPS*m_iStepNumber == 0 ? 180 : qGreen(rgb)+KVI_STYLE_COLOR_DIFF/KVI_STYLE_NUM_STEPS*m_iStepNumber,
+ qBlue(rgb)+KVI_STYLE_COLOR_DIFF/KVI_STYLE_NUM_STEPS*m_iStepNumber == 0 ? 180 : qBlue(rgb)+KVI_STYLE_COLOR_DIFF/KVI_STYLE_NUM_STEPS*m_iStepNumber,
+ qAlpha(rgb)
+ );
+ image.setPixel(x,y,rgb);
+ }
+ p.drawImage(pos,image);
+ } else {
+ p.drawPixmap(pos,pix);
+ }
+ }
+
+ if(pArrowPix)
+ {
+ pos.setX(pix.width()+4);
+ pos.setY((height()-pArrowPix->height())/2);
+ p.drawPixmap(pos,*pArrowPix);
+ }
+
+ bitBlt(this, rect.x(), rect.y(), pDoubleBufferPixmap, 0, 0, rect.width(), rect.height());
+
+ } else {
+ QToolButton::paintEvent(event);
+ }
+}
+
+void KviStyledToolButton::resizeEvent ( QResizeEvent * e)
+{
+ QPixmap* pStoredPix = 0;
+ if(pStoredPix=g_pIconManager->getBigIcon("kvi_toolbutton_menuindicator.png"))
+ {
+ QPixmap pix=iconSet().pixmap(
+ usesBigPixmap() ? QIconSet::Large : QIconSet::Small,
+ isEnabled() ? QIconSet::Normal :
+ QIconSet::Disabled,
+ isOn() ? QIconSet::On :
+ QIconSet::Off);
+
+ setMinimumWidth(bShowSubmenuIndicator ? pix.width()+8+pStoredPix->width() : pix.width());
+ }
+}
+
+#include "kvi_styled_controls.moc"
+
+#endif
diff --git a/src/kvirc/ui/kvi_styled_controls.h b/src/kvirc/ui/kvi_styled_controls.h
new file mode 100644
index 00000000..8d096fa8
--- /dev/null
+++ b/src/kvirc/ui/kvi_styled_controls.h
@@ -0,0 +1,113 @@
+#ifndef _KVI_STYLED_CONTROLS_H_
+#define _KVI_STYLED_CONTROLS_H_
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// File : kvi_styled_controls.h
+// Creation date : 19 Jan 2006 GMT by Alexey Uzhva
+//
+// This toolbar is part of the KVirc irc client distribution
+// Copyright (C) 2006 Alexey Uzhva
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_USE_QT4
+ // we use internal Qt4 styles for now
+ #include <qcheckbox.h>
+ #include <qtoolbutton.h>
+
+ #define KviStyledCheckBox QCheckBox
+ #define KviStyledToolButton QToolButton
+#else
+
+#include <qcheckbox.h>
+#include <qtoolbutton.h>
+#include <qevent.h>
+#include <qtimer.h>
+#include "kvi_heapobject.h"
+
+class KviTalToolBar;
+
+#define KVI_STYLE_NUM_STEPS 20
+#define KVI_STYLE_COLOR_DIFF 60
+#define KVI_STYLE_TIMER_STEP 18
+
+class KviStyledControl;
+
+class KVIRC_API KviStyledControlInternal : public QObject
+{
+ Q_OBJECT
+public:
+ KviStyledControlInternal( KviStyledControl* control );
+ ~KviStyledControlInternal();
+public slots:
+ virtual void paintTimerShot();
+protected:
+ bool eventFilter( QObject *obj, QEvent *ev );
+protected:
+ KviStyledControl* m_pControl;
+};
+
+class KVIRC_API KviStyledControl
+{
+ friend class KviStyledControlInternal;
+public:
+ KviStyledControl(QWidget*);
+ ~KviStyledControl();
+protected:
+ virtual void enterEvent ( QEvent * );
+ virtual void leaveEvent ( QEvent * );
+
+ int m_bMouseEnter;
+ int m_iStepNumber;
+ QTimer* m_pTimer;
+ KviStyledControlInternal* m_pInternal;
+ QWidget *m_pWidget;
+};
+
+class KVIRC_API KviStyledCheckBox : public QCheckBox, public KviStyledControl
+{
+ Q_OBJECT
+public:
+ KviStyledCheckBox ( QWidget * parent, const char * name = 0 );
+ KviStyledCheckBox ( const QString & text, QWidget * parent, const char * name = 0 );
+ ~KviStyledCheckBox();
+protected:
+ virtual void paintEvent ( QPaintEvent * );
+};
+
+class KVIRC_API KviStyledToolButton : public QToolButton, public KviStyledControl
+{
+ Q_OBJECT
+private:
+ bool bShowSubmenuIndicator;
+public:
+ KviStyledToolButton ( QWidget * parent, const char * name = 0 );
+ KviStyledToolButton ( const QIconSet & iconSet, const QString & textLabel, const QString & grouptext, QObject * receiver, const char * slot, KviTalToolBar * parent, const char * name = 0 );
+ ~KviStyledToolButton();
+
+ void setShowSubmenuIndicator(bool bShow);
+protected:
+ virtual void paintEvent ( QPaintEvent * );
+ virtual void resizeEvent ( QResizeEvent * ) ;
+};
+
+#endif
+
+#endif
diff --git a/src/kvirc/ui/kvi_taskbar.cpp b/src/kvirc/ui/kvi_taskbar.cpp
new file mode 100644
index 00000000..8e75bfde
--- /dev/null
+++ b/src/kvirc/ui/kvi_taskbar.cpp
@@ -0,0 +1,1509 @@
+//===============================================================================================
+//
+// File : kvi_taskbar.cpp
+// Last major modification : Thu Jan 7 1999 03:59:43 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//===============================================================================================
+
+#define __KVIRC__
+//#define KVI_TASKBARBUTTON_MIN_WIDTH 100
+#define KVI_TASKBARBUTTON_CONTEXTINDICATORHEIGHT 6
+#define KVI_TASKBAR_MIN_WIDTH 120
+
+#define KVI_NUM_STEPS 20
+#define KVI_TIMER_DELAY 18
+
+
+#define _KVI_DEBUG_CHECK_RANGE_
+#include "kvi_debug.h"
+#include "kvi_taskbar.h"
+#include "kvi_frame.h"
+#include "kvi_window.h"
+#include "kvi_string.h"
+#include "kvi_options.h"
+#include "kvi_console.h"
+#include "kvi_locale.h"
+#include "kvi_dynamictooltip.h"
+#include "kvi_settings.h"
+#include "kvi_channel.h"
+#include "kvi_ircconnection.h"
+#include "kvi_doublebuffer.h"
+
+// FIXME: #warning "The tree taskbar min width should be configurable"
+#include <qtimer.h>
+#include <qfontmetrics.h>
+#include <qpainter.h>
+#include <qpixmap.h>
+#include <qimage.h>
+#include "kvi_tal_popupmenu.h"
+#include <qcursor.h>
+
+#ifdef COMPILE_USE_QT4
+ #include <q3header.h>
+#else
+ #include <qheader.h>
+#endif
+#include <qevent.h>
+
+#ifdef COMPILE_USE_QT4
+ #include <QPaintEvent>
+#endif
+
+
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ extern QPixmap * g_pShadedChildGlobalDesktopBackground;
+#endif
+
+extern QPixmap * g_pActivityMeterPixmap;
+
+// FIXME: This should be renamed to "Window List"
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// KviTaskBarBase
+//
+
+KviTaskBarBase::KviTaskBarBase()
+#ifdef COMPILE_USE_QT4
+: QDockWidget(__tr2qs("Taskbar"),g_pFrame)
+#else
+: KviToolBar(__tr2qs("Taskbar"),QT_DOCK_BOTTOM,false,"taskbar")
+#endif
+{
+ // FIXME: this timer should be started only if KVI_OPTION_BOOL(KviOption_boolUseTaskBarActivityMeter)
+#ifdef COMPILE_USE_QT4
+ setObjectName(__tr2qs("taskbar"));
+ setFeatures(QDockWidget::DockWidgetMovable);
+#endif //COMPILE_USE_QT4
+ m_pActivityMeterTimer = new QTimer();
+ connect(m_pActivityMeterTimer,SIGNAL(timeout()),this,SLOT(updateActivityMeter()));
+ m_pActivityMeterTimer->start(5000);
+}
+
+KviTaskBarBase::~KviTaskBarBase()
+{
+ delete m_pActivityMeterTimer;
+}
+
+void KviTaskBarBase::updateActivityMeter()
+{
+}
+
+void KviTaskBarBase::getTextForConsole(QString &szText,KviConsole * pConsole)
+{
+ if(pConsole->isConnected())
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolShowNetworkNameForConsoleTaskBarEntry))
+ {
+ // FIXME: Should never show "Standalone Servers" or "orphan_servers".
+ // It would also be nice to have a number appended to
+ // multiple entries with the same server name...but this costs too much.
+ szText = pConsole->connection()->networkName();
+ if(szText.isEmpty())
+ szText = pConsole->connection()->currentServerName();
+ } else {
+ szText = pConsole->connection()->currentServerName();
+ }
+ } else {
+ szText = pConsole->statusString();
+ }
+}
+
+
+KviTaskBarItem * KviTaskBarBase::item(int number)
+{
+ KviTaskBarItem * it = firstItem();
+ if(!setIterationPointer(it))return 0;
+
+ while(it && (number > 0))
+ {
+ it = nextItem();
+ number--;
+ }
+ return it;
+}
+
+void KviTaskBarBase::switchWindow(bool bNext,bool bInContextOnly)
+{
+ if(!g_pActiveWindow)return;
+
+ KviConsole * cons = g_pActiveWindow->console();
+ KviTaskBarItem * cur = g_pActiveWindow->taskBarItem();
+ KviTaskBarItem * it = cur;
+
+ if(!setIterationPointer(cur))return;
+
+ while(it)
+ {
+ it = bNext ? nextItem() : prevItem();
+ if(!it)it = bNext ? firstItem() : lastItem();
+ if(it)
+ {
+ if(bInContextOnly)
+ {
+ if(it->kviWindow()->console() == cons)
+ {
+ g_pFrame->setActiveWindow(it->kviWindow());
+ return;
+ }
+ } else {
+ g_pFrame->setActiveWindow(it->kviWindow());
+ return;
+ }
+ }
+ if(it == cur)return; // did a complete loop.... no window to switch to
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// KviTaskBarItem
+//
+
+KviTaskBarItem::KviTaskBarItem(KviWindow * wnd)
+{
+ m_pWindow = wnd;
+ m_iHighlightLevel = 0;
+ m_iProgress = -1;
+}
+
+KviTaskBarItem::~KviTaskBarItem()
+{
+ m_pWindow->m_pTaskBarItem = 0;
+}
+
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// KviTaskBarButton
+//
+
+
+KviTaskBarButton::KviTaskBarButton(QWidget * par,KviWindow * wnd,const char * name)
+: QPushButton(par,name) , KviTaskBarItem(wnd)
+{
+ m_bActive = false;
+ m_pTip = new KviDynamicToolTip(this);
+ connect(m_pTip,SIGNAL(tipRequest(KviDynamicToolTip *,const QPoint &)),this,SLOT(tipRequest(KviDynamicToolTip *,const QPoint &)));
+// setBackgroundMode(QWidget::NoBackground);
+ setToggleButton (true);
+ setFlat ( KVI_OPTION_BOOL(KviOption_boolUseFlatClassicTaskbarButtons) );
+}
+
+KviTaskBarButton::~KviTaskBarButton()
+{
+ delete m_pTip; //not necessary ?
+}
+
+void KviTaskBarButton::tipRequest(KviDynamicToolTip *,const QPoint &pnt)
+{
+ if(KVI_OPTION_BOOL(KviOption_boolShowTaskBarToolTips))
+ {
+ QString szText;
+ m_pWindow->getTaskBarTipText(szText);
+ m_pTip->tip(rect(),szText);
+ }
+}
+
+void KviTaskBarButton::mousePressEvent(QMouseEvent *e)
+{
+ if(e->button() & Qt::LeftButton)
+ {
+ if(e->state() & Qt::ShiftButton)
+ {
+ m_pWindow->delayedClose();
+ } else {
+ if((g_pActiveWindow != m_pWindow) || (m_pWindow->isMinimized()))g_pFrame->setActiveWindow(m_pWindow);
+ else m_pWindow->minimize();
+ }
+ } else m_pWindow->contextPopup();
+}
+
+#if QT_VERSION >= 300
+void KviTaskBarButton::contextMenuEvent(QContextMenuEvent *e)
+{
+ m_pWindow->contextPopup();
+ e->accept();
+}
+#endif
+
+void KviTaskBarButton::setActive(bool bActive)
+{
+ if(bActive)
+ {
+ m_bActive = true;
+ m_iHighlightLevel = 0;
+ } else {
+ if(m_bActive)
+ {
+ // was active... unset the highlighting if it was silently turned on while being active...
+ m_iHighlightLevel = 0;
+ }
+ m_bActive = false;
+ }
+ setOn(bActive);
+ update();
+}
+
+#ifdef COMPILE_USE_QT4
+void KviTaskBarButton::paintEvent(QPaintEvent * e)
+{
+ QPainter p(this);
+ QStyleOption opt;
+ opt.initFrom(this);
+ if(isOn())
+ opt.state = QStyle::State_On | QStyle::State_Active;
+ style()->drawPrimitive(QStyle::PE_PanelButtonTool,&opt,&p,this);
+ drawButtonLabel(&p);
+}
+#endif
+
+void KviTaskBarButton::drawButtonLabel(QPainter * painter)
+{
+ QRect distRect = painter->window();
+ int iHeight = distRect.height();
+ int iWidth = distRect.width();
+
+ QPainter * pPainter;
+#ifdef COMPILE_USE_QT4
+ pPainter = painter;
+#else //!COMPILE_USE_QT4
+ KviDoubleBuffer db(iWidth,iHeight);
+ QPixmap * pMemBuffer = db.pixmap();
+ QPainter p(pMemBuffer);
+ bitBlt(pMemBuffer,0,0,painter->device(),distRect.x(),distRect.y(),iWidth,iHeight);
+ pPainter = &p;
+#endif //!COMPILE_USE_QT4
+ if(KVI_OPTION_BOOL(KviOption_boolUseTaskBarIrcContextIndicator))
+ {
+ iHeight -= KVI_TASKBARBUTTON_CONTEXTINDICATORHEIGHT;
+ QColor base = colorGroup().background();
+ if(m_pWindow->console())
+ {
+ QColor cntx = KVI_OPTION_ICCOLOR(m_pWindow->console()->ircContextId() % KVI_NUM_ICCOLOR_OPTIONS);
+ base.setRgb((base.red() + cntx.red()) >> 1,(base.green() + cntx.green()) >> 1,
+ (base.blue() + cntx.blue()) >> 1);
+ pPainter->fillRect(2,iHeight,iWidth - 4,KVI_TASKBARBUTTON_CONTEXTINDICATORHEIGHT - 2,base);
+ } else {
+ pPainter->fillRect(2,iHeight,iWidth - 4,KVI_TASKBARBUTTON_CONTEXTINDICATORHEIGHT - 2,colorGroup().brush(QColorGroup::Background));
+ }
+ }
+
+ int daX = 3;
+
+ if(KVI_OPTION_BOOL(KviOption_boolUseTaskBarIcons))
+ {
+ pPainter->drawPixmap(3,3,*(m_pWindow->myIconPtr()));
+ daX = 20;
+ }
+
+ if(KVI_OPTION_BOOL(KviOption_boolUseTaskBarActivityMeter))
+ {
+ unsigned int uActivityValue;
+ unsigned int uActivityTemperature;
+ if(m_pWindow->activityMeter(&uActivityValue,&uActivityTemperature))
+ {
+ pPainter->drawPixmap(daX,3,*g_pActivityMeterPixmap,uActivityValue * 5,uActivityTemperature * 16,5,16);
+ daX = 27;
+ }
+ }
+
+ QRect cRect(daX,3,iWidth - (20 + daX),iHeight - 6);
+
+ if(m_iProgress >= 0)
+ {
+ // paint the progress bar
+ int wdth = (m_iProgress * cRect.width()) / 100;
+ pPainter->setPen(KVI_OPTION_COLOR(KviOption_colorTaskBarProgressBar));
+ pPainter->drawRect(cRect);
+ pPainter->fillRect(daX,3,wdth,cRect.height(),KVI_OPTION_COLOR(KviOption_colorTaskBarProgressBar));
+ }
+
+ QRect bRect;
+ QString szText;
+
+ bool bMinimized = m_pWindow->isMinimized();
+
+ if(m_bActive)
+ {
+ pPainter->setPen(KVI_OPTION_COLOR(KviOption_colorTaskBarNormalText));
+ } else {
+ int iLevel;
+
+ switch(m_iHighlightLevel)
+ {
+ case 0: iLevel = bMinimized ? KviOption_colorTaskBarMinimizedText : KviOption_colorTaskBarNormalText; break;
+ case 1: iLevel = KviOption_colorTaskBarHighlight1Text; break;
+ case 2: iLevel = KviOption_colorTaskBarHighlight2Text; break;
+ case 3: iLevel = KviOption_colorTaskBarHighlight3Text; break;
+ case 4: iLevel = KviOption_colorTaskBarHighlight4Text; break;
+ default: iLevel = KviOption_colorTaskBarHighlight5Text; break;
+ }
+ pPainter->setPen(KVI_OPTION_COLOR(iLevel));
+ }
+
+ pPainter->setFont(KVI_OPTION_FONT(KviOption_fontTaskbar));
+
+ switch(m_pWindow->type())
+ {
+ case KVI_WINDOW_TYPE_CONSOLE:
+ {
+ QFont f = QFont(KVI_OPTION_FONT(KviOption_fontTaskbar));
+ f.setBold(true);
+ pPainter->setFont(f);
+ KviTaskBarBase::getTextForConsole(szText,(KviConsole *)m_pWindow);
+ }
+ break;
+ case KVI_WINDOW_TYPE_CHANNEL:
+ case KVI_WINDOW_TYPE_DEADCHANNEL:
+ szText = ((KviChannel *)m_pWindow)->nameWithUserFlag();
+ break;
+ case KVI_WINDOW_TYPE_QUERY:
+ case KVI_WINDOW_TYPE_DEADQUERY:
+ szText = m_pWindow->windowName();
+ break;
+ default:
+ szText = m_pWindow->plainTextCaption();
+ break;
+ }
+
+ if(bMinimized)
+ {
+ QString tmp = QChar('(');
+ tmp += szText;
+ tmp += QChar(')');
+ pPainter->drawText(cRect,Qt::AlignLeft | Qt::AlignTop,tmp,-1,&bRect);
+ } else {
+ pPainter->drawText(cRect,Qt::AlignLeft | Qt::AlignTop,szText,-1,&bRect);
+ }
+
+ if(bRect.width() > cRect.width())
+ {
+ pPainter->setClipRect(cRect.right(),cRect.y(),10,cRect.height());
+ QColor base = pPainter->pen().color();
+ QColor bg = colorGroup().color(QColorGroup::Background);
+ base.setRgb((base.red() + bg.red()) / 2,(base.green() + bg.green()) / 2,(base.blue() + bg.blue()) / 2);
+ pPainter->setPen(base);
+ cRect.setWidth(cRect.width() + 10);
+ pPainter->drawText(cRect,Qt::AlignLeft | Qt::AlignTop,szText,-1);
+ pPainter->setClipRect(cRect.right(),cRect.y(),5,cRect.height());
+ base.setRgb((base.red() + bg.red()) / 2,(base.green() + bg.green()) / 2,(base.blue() + bg.blue()) / 2);
+ pPainter->setPen(base);
+ cRect.setWidth(cRect.width() + 10);
+ pPainter->drawText(cRect,Qt::AlignLeft | Qt::AlignTop,szText,-1);
+ }
+#ifndef COMPILE_USE_QT4
+ pPainter->setClipping(FALSE);
+ painter->drawPixmap(0,0,*pMemBuffer,distRect.x(),distRect.y(),iWidth,iHeight);
+#endif
+}
+
+
+void KviTaskBarButton::captionChanged()
+{
+ update();
+}
+
+void KviTaskBarButton::setProgress(int progress)
+{
+ if(progress == m_iProgress)return;
+ m_iProgress = progress;
+ update(); // repaint(false) ?
+}
+
+void KviTaskBarButton::unhighlight()
+{
+ if(m_iHighlightLevel < 1)return;
+ m_iHighlightLevel = 0;
+ if(g_pFrame->dockExtension())g_pFrame->dockExtension()->refresh();
+ update();
+}
+
+void KviTaskBarButton::highlight(int iLevel)
+{
+ if(iLevel <= m_iHighlightLevel)return;
+ if(m_bActive && g_pFrame->isActiveWindow())return;
+ m_iHighlightLevel = iLevel;
+ if(g_pFrame->dockExtension())g_pFrame->dockExtension()->refresh();
+ if(m_bActive)return;
+ update(); // repaint(false) ?
+}
+
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// KviTaskBarToolTip
+//
+/*
+KviTaskBarToolTip::KviTaskBarToolTip(KviTaskBarButton * b)
+: KviTalToolTip(b,0)
+{
+ m_pTaskBarButton = b;
+}
+
+KviTaskBarToolTip::~KviTaskBarToolTip()
+{
+}
+
+void KviTaskBarToolTip::maybeTip(const QPoint &pnt)
+{
+ tip(m_pTaskBarButton->rect(),m_pTaskBarButton->m_pWindow->plainTextCaption());
+}
+*/
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// KviClasicTaskBar
+//
+
+
+KviClassicTaskBar::KviClassicTaskBar()
+: KviTaskBarBase()
+{
+ m_pButtonList = new KviPointerList<KviTaskBarButton>;
+ m_pButtonList->setAutoDelete(true);
+
+ calcButtonHeight();
+
+ m_pBase = new QWidget(this);
+// m_pBase->setBackgroundMode(NoBackground);
+#ifdef COMPILE_USE_QT4
+ setWidget(m_pBase);
+
+ m_pBase->setMinimumWidth(KVI_TASKBAR_MIN_WIDTH);
+ setMinimumWidth(KVI_TASKBAR_MIN_WIDTH);
+#else //!COMPILE_USE_QT4
+ setStretchableWidget(m_pBase);
+
+ setVerticalStretchable(true);
+ setHorizontalStretchable(true);
+#endif //!COMPILE_USE_QT4
+ //m_pBase->setMinimumWidth(KVI_TASKBAR_MIN_WIDTH);
+ //setMinimumWidth(KVI_TASKBAR_MIN_WIDTH);
+
+ m_pBase->setMinimumHeight(m_iButtonHeight+5);
+ setMinimumHeight(m_iButtonHeight+5);
+
+#ifndef COMPILE_USE_QT4
+ setResizeEnabled( true );
+ connect(this,SIGNAL(orientationChanged(Orientation)),this,SLOT(orientationChangedSlot(Orientation)));
+#endif
+}
+
+KviClassicTaskBar::~KviClassicTaskBar()
+{
+ delete m_pButtonList;
+ m_pButtonList = 0;
+}
+
+void KviClassicTaskBar::orientationChangedSlot(Qt::Orientation o)
+{
+#ifndef COMPILE_USE_QT4
+ if (orientation() == Qt::Horizontal) m_pBase->setMinimumHeight(m_iButtonHeight);
+#endif
+ doLayout();
+}
+
+/*
+void KviClassicTaskBar::fontChange(const QFont &old)
+{
+ calcButtonHeight();
+ doLayout();
+ QToolBar::fontChange(old);
+}
+*/
+
+void KviClassicTaskBar::updateActivityMeter()
+{
+ if(KVI_OPTION_BOOL(KviOption_boolUseTaskBarActivityMeter))
+ {
+ for(KviTaskBarButton * btn = m_pButtonList->first();btn;btn = m_pButtonList->next())
+ btn->update();
+ }
+}
+
+void KviClassicTaskBar::calcButtonHeight()
+{
+ QFontMetrics fm(KVI_OPTION_FONT(KviOption_fontTaskbar));
+ m_iButtonHeight = fm.lineSpacing() + 6;
+ if(m_iButtonHeight < 22)m_iButtonHeight = 22;
+ if(KVI_OPTION_BOOL(KviOption_boolUseTaskBarIrcContextIndicator))
+ m_iButtonHeight += KVI_TASKBARBUTTON_CONTEXTINDICATORHEIGHT;
+}
+
+void KviClassicTaskBar::insertButton(KviTaskBarButton * b)
+{
+ int idx = 0;
+// if(KVI_OPTION_BOOL(KviOption_boolSortTaskbarButtons))
+// {
+ // first sort by irc context
+ for(KviTaskBarButton * btn = m_pButtonList->first();btn;btn = m_pButtonList->next())
+ {
+ if(btn->kviWindow()->console() == b->kviWindow()->console())
+ {
+ // same irc context (or none)
+ // sort by type now
+ for(;btn;btn = m_pButtonList->next())
+ {
+ if((btn->kviWindow()->type() > b->kviWindow()->type()) ||
+ (btn->kviWindow()->console() != b->kviWindow()->console()))
+ {
+ // greater type or another irc context
+ m_pButtonList->insert(idx,b);
+ return;
+ } else if(btn->kviWindow()->type() == b->kviWindow()->type())
+ {
+ // same type!
+ // sort by name
+ if(!KVI_OPTION_BOOL(KviOption_boolSortTaskBarItemsByName) || (KviQString::cmpCI(btn->kviWindow()->windowName(),b->kviWindow()->windowName()) > 0))
+ {
+ // got a "higher one"
+ m_pButtonList->insert(idx,b);
+ return;
+ }
+ }
+ idx++;
+ }
+ // ran out of buttons
+ m_pButtonList->append(b);
+ return;
+ } else {
+ if(!(btn->kviWindow()->console()) && b->kviWindow()->console())
+ {
+ // this must be a new console...insert before the contextless windows
+ __range_valid(b->kviWindow()->console() == b->kviWindow());
+ m_pButtonList->insert(idx,b);
+ return;
+ } else idx++; // wrong irc contet...go on searching
+ }
+ }
+// }
+ // no sorting selected , or no match for this irc context
+ m_pButtonList->append(b);
+}
+
+
+KviTaskBarItem * KviClassicTaskBar::addItem(KviWindow * wnd)
+{
+ KviTaskBarButton * b = new KviTaskBarButton(m_pBase,wnd,"");
+ insertButton(b);
+ b->show();
+ doLayout();
+ if(g_pFrame->dockExtension())g_pFrame->dockExtension()->refresh();
+/* if(b->width() < m_pBase->width()) m_pBase->setMinimumWidth(b->width());
+ if(b->height() < m_pBase->height()) m_pBase->setMinimumWidth(b->height());*/
+ return b;
+}
+
+bool KviClassicTaskBar::removeItem(KviTaskBarItem * it)
+{
+ if(it)
+ {
+ m_pButtonList->removeRef((KviTaskBarButton *)it);
+ doLayout();
+ if(g_pFrame->dockExtension())g_pFrame->dockExtension()->refresh();
+ }
+ return true;
+}
+
+void KviClassicTaskBar::setActiveItem(KviTaskBarItem * it)
+{
+ if(it)
+ {
+ for(KviTaskBarButton * b = m_pButtonList->first();b;b = m_pButtonList->next())
+ {
+ b->setActive(((KviTaskBarButton *)it) == b);
+ }
+ if(g_pFrame->dockExtension())g_pFrame->dockExtension()->refresh();
+ }
+}
+
+
+void KviClassicTaskBar::doLayout()
+{
+ if(!m_pButtonList->count())return;
+
+ if(!m_pBase->isVisible())
+ {
+ // handle a windows bug: sometimes this ugly thing happens
+ // this shouldn't hurt on other platforms
+ if(isVisible())m_pBase->show();
+ }
+
+ int baseWidth = m_pBase->width();
+ int btnsInRow = baseWidth / KVI_OPTION_UINT(KviOption_uintTaskBarButtonMinWidth);
+ int totCount = m_pButtonList->count();
+ //int btnsInRow = totCount * totCount * btnWidth * btnWidth / (wdth * wdth);
+ if(btnsInRow < 1)btnsInRow = 1;
+
+ int rows = 0;
+ while(totCount > 0)
+ {
+ rows++;
+ totCount -= btnsInRow;
+ }
+
+#ifdef COMPILE_USE_QT4
+ if(isFloating() || ((g_pFrame->dockWidgetArea(this) != Qt::BottomDockWidgetArea) && (g_pFrame->dockWidgetArea(this) != Qt::TopDockWidgetArea)))
+ {
+ QDockWidget::DockWidgetFeatures f = features();
+ if(f & QDockWidget::DockWidgetVerticalTitleBar)
+ {
+ f &= ~QDockWidget::DockWidgetVerticalTitleBar;
+ setFeatures(f);
+ }
+ } else {
+ QDockWidget::DockWidgetFeatures f = features();
+ if(!(f & QDockWidget::DockWidgetVerticalTitleBar))
+ {
+ f |= QDockWidget::DockWidgetVerticalTitleBar;
+ setFeatures(f);
+ }
+ }
+#endif
+
+#ifdef COMPILE_USE_QT4
+ if ((width() > height()) &&
+#else
+ if ((orientation() == Qt::Horizontal) &&
+#endif
+ (((unsigned int)rows) > m_pBase->height() / m_iButtonHeight ))
+ {
+ rows = m_pBase->height() / m_iButtonHeight;
+ }
+ if(rows==0) rows=1;
+ totCount = m_pButtonList->count();
+ btnsInRow = totCount / rows;
+ if(totCount % rows)btnsInRow++;
+
+ //m_pBase->setMinimumHeight(rows * m_iButtonHeight);
+
+ int theWidth = 0;
+ int theX = 0;
+ int theY = -m_iButtonHeight;
+ int btnIdx = 0;
+ int btnInRow = 1;
+ for(KviTaskBarButton * b = m_pButtonList->first();b;b = m_pButtonList->next())
+ {
+ if((btnIdx % btnsInRow) == 0)
+ {
+ int inRow = ((totCount < btnsInRow ) ? totCount : btnsInRow);
+ theWidth = baseWidth / (inRow ? inRow : 1);
+ theX = 0;
+ theY += m_iButtonHeight;
+ btnInRow = 1;
+ } else {
+ if((btnInRow == btnsInRow) || (totCount == 1))theWidth = baseWidth - theX;
+ }
+
+ if( KVI_OPTION_BOOL(KviOption_boolClassicTaskBarSetMaximumButtonWidth) && (theWidth > KVI_OPTION_UINT(KviOption_uintClassicTaskBarMaximumButtonWidth)) &&
+#ifdef COMPILE_USE_QT4
+ (width() > height())
+#else
+ (orientation() == Qt::Horizontal)
+#endif
+ )
+ theWidth = KVI_OPTION_UINT(KviOption_uintClassicTaskBarMaximumButtonWidth);
+
+ b->setGeometry(theX,theY,theWidth,m_iButtonHeight);
+
+ if(btnInRow != btnsInRow)
+ {
+ theX += theWidth;
+ btnInRow++;
+ }
+ btnIdx++;
+ totCount--;
+ }
+}
+
+void KviClassicTaskBar::applyOptions()
+{
+ for(KviTaskBarButton * b = m_pButtonList->first();b;b = m_pButtonList->next())
+ {
+ b->setFlat(KVI_OPTION_BOOL(KviOption_boolUseFlatClassicTaskbarButtons));
+ }
+ doLayout();
+}
+
+void KviClassicTaskBar::resizeEvent(QResizeEvent *e)
+{
+/*
+#ifdef COMPILE_USE_QT4
+ if(orientation() == Qt::Horizontal)
+ {
+ int iRows = height()/m_iButtonHeight;
+ if(!iRows) iRows=1;
+ debug("%i %i",height(),iRows);
+ resize(width(),iRows*m_iButtonHeight);
+ }
+#endif
+*/
+ KviTaskBarBase::resizeEvent(e);
+ doLayout();
+}
+
+inline KviTaskBarItem * KviClassicTaskBar::firstItem()
+{
+ return m_pButtonList->first();
+}
+
+inline KviTaskBarItem * KviClassicTaskBar::lastItem(void)
+{
+ return m_pButtonList->last();
+}
+
+inline KviTaskBarItem * KviClassicTaskBar::nextItem()
+{
+ return m_pButtonList->next();
+}
+
+inline KviTaskBarItem * KviClassicTaskBar::prevItem(void)
+{
+ return m_pButtonList->prev();
+}
+
+inline bool KviClassicTaskBar::setIterationPointer(KviTaskBarItem * it)
+{
+ return (m_pButtonList->findRef((const KviTaskBarButton *)it) != -1);
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// KviTreeTaskBarItem
+//
+
+
+KviTreeTaskBarItem::KviTreeTaskBarItem(KviTalListView * par,KviWindow * wnd)
+: KviTalListViewItem(par) , KviTaskBarItem(wnd)
+{
+ m_iStepNumber=0;
+ m_bIncreasing=0;
+ m_pInternal=new KviTreeTaskBarItemInternal(this);
+ m_pAnimTimer=new QTimer();
+ QObject::connect( m_pAnimTimer, SIGNAL(timeout()), m_pInternal, SLOT(timerShot()));
+ applyOptions();
+}
+
+KviTreeTaskBarItem::KviTreeTaskBarItem(KviTreeTaskBarItem * par,KviWindow * wnd)
+: KviTalListViewItem(par) , KviTaskBarItem(wnd)
+{
+ m_iStepNumber=0;
+ m_bIncreasing=0;
+ m_pInternal=new KviTreeTaskBarItemInternal(this);
+ m_pAnimTimer=new QTimer();
+ QObject::connect( m_pAnimTimer, SIGNAL(timeout()), m_pInternal, SLOT(timerShot()));
+ applyOptions();
+}
+
+int KviTreeTaskBarItem::calculateColor(int col1,int col2)
+{
+ int result=col1+(col2-col1)/KVI_NUM_STEPS*m_iStepNumber;
+ return result<255 ? result :255;
+}
+
+KviTreeTaskBarItem::~KviTreeTaskBarItem()
+{
+ KviTalListView* pView=(KviTalListView *)listView();
+ if(pView)
+ if(((KviTreeTaskBarListView*)(pView))->m_pPrevItem==this) ((KviTreeTaskBarListView*)(listView()))->m_pPrevItem=0;
+ delete m_pAnimTimer;
+ delete m_pInternal;
+}
+
+void KviTreeTaskBarItem::applyOptions()
+{
+ m_iRedDiff=(KVI_OPTION_COLOR(KviOption_colorTreeTaskBarActiveBackground).red()-KVI_OPTION_COLOR(KviOption_colorTreeTaskBarBackground).red())/KVI_NUM_STEPS;
+ m_iGreenDiff=(KVI_OPTION_COLOR(KviOption_colorTreeTaskBarActiveBackground).green()-KVI_OPTION_COLOR(KviOption_colorTreeTaskBarBackground).green())/KVI_NUM_STEPS;
+ m_iBlueDiff=(KVI_OPTION_COLOR(KviOption_colorTreeTaskBarActiveBackground).blue()-KVI_OPTION_COLOR(KviOption_colorTreeTaskBarBackground).blue())/KVI_NUM_STEPS;
+}
+
+void KviTreeTaskBarItem::captionChanged()
+{
+ // FIXME: can we do better ?
+ repaint();
+}
+
+void KviTreeTaskBarItem::unhighlight()
+{
+ if(m_iHighlightLevel < 1)return;
+ m_iHighlightLevel = 0;
+ if(g_pFrame->dockExtension())g_pFrame->dockExtension()->refresh();
+ repaint();
+}
+
+void KviTreeTaskBarItem::highlight(int iLevel)
+{
+ if(iLevel <= m_iHighlightLevel)return;
+ if(isSelected() && g_pFrame->isActiveWindow())return;
+ m_iHighlightLevel = iLevel;
+ if(g_pFrame->dockExtension())g_pFrame->dockExtension()->refresh();
+ if(isSelected())return;
+ repaint(); // repaint(false) ?
+}
+
+void KviTreeTaskBarItem::setProgress(int progress)
+{
+ if(progress == m_iProgress)return;
+ m_iProgress = progress;
+ repaint(); // repaint(false) ?
+}
+
+void KviTreeTaskBarItem::setActive(bool bActive)
+{
+ if(bActive)
+ {
+// m_bHighlighted = false;
+// m_bAltColor = false;
+ m_iHighlightLevel = 0;
+ // was not selected: the listView will repaint it
+ } else {
+ if(isSelected())
+ {
+ // was active... unset the highlighting if it was silently turned on while being active...
+// m_bHighlighted = false;
+// m_bAltColor = false;
+ m_iHighlightLevel = 0;
+ // was selected: the list view will repaint it
+ }
+ }
+}
+
+#ifdef COMPILE_USE_QT4
+void KviTreeTaskBarItem::paintBranches(QPainter *p,const QColorGroup &,int w,int y,int h)
+#else
+void KviTreeTaskBarItem::paintBranches(QPainter *p,const QColorGroup &,int w,int y,int h,GUIStyle s)
+#endif
+{
+ SET_ANTI_ALIASING(*p);
+ ((KviTreeTaskBarListView *)listView())->paintEmptyArea(p,QRect(0,y,w,totalHeight() - height()));
+}
+
+void KviTreeTaskBarItem::paintCell(QPainter *painter,const QColorGroup &cg,int column,int width,int)
+{
+ KviDoubleBuffer db(width,height());
+ QPixmap * pMemBuffer = db.pixmap();
+ QPainter p(pMemBuffer);
+ SET_ANTI_ALIASING(p);
+
+ if(isSelected())
+ {
+ p.fillRect(0,0,width,height(),KVI_OPTION_COLOR(KviOption_colorTreeTaskBarActiveBackground));
+ } else {
+ if(!m_iStepNumber)
+ {
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ if(g_pShadedChildGlobalDesktopBackground)
+ {
+ QPoint pnt = listView()->viewport()->mapToGlobal(QPoint(int(painter->worldMatrix().dx()),int(painter->worldMatrix().dy())));
+ p.drawTiledPixmap(0,0,width,height(),*g_pShadedChildGlobalDesktopBackground,pnt.x(),pnt.y());
+ } else {
+#endif
+ p.fillRect(0,0,width,height(),KVI_OPTION_COLOR(KviOption_colorTreeTaskBarBackground));
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ }
+#endif
+ QPixmap * pix = KVI_OPTION_PIXMAP(KviOption_pixmapTreeTaskBarBackground).pixmap();
+ if(pix)
+ {
+ QPoint pnt = listView()->viewportToContents(QPoint(int(painter->worldMatrix().dx()),int(painter->worldMatrix().dy())));
+ //p.drawTiledPixmap(0,0,width,height(),*pix,pnt.x(),pnt.y());
+// debug("%i %i",pnt.x(),pnt.y());
+ p.translate(-pnt.x(),-pnt.y());
+ KviPixmapUtils::drawPixmapWithPainter(&p,pix,KVI_OPTION_UINT(KviOption_uintTreeTaskBarPixmapAlign),QRect(pnt.x(),pnt.y(),width,height()),listView()->width(),listView()->height());
+ p.translate(pnt.x(),pnt.y());
+ }
+ } else {
+ p.fillRect(0,0,width,height(),
+ QColor(KVI_OPTION_COLOR(KviOption_colorTreeTaskBarBackground).red()+m_iRedDiff*m_iStepNumber,
+ KVI_OPTION_COLOR(KviOption_colorTreeTaskBarBackground).green()+m_iGreenDiff*m_iStepNumber,
+ KVI_OPTION_COLOR(KviOption_colorTreeTaskBarBackground).blue()+m_iBlueDiff*m_iStepNumber
+ )
+ );
+
+ }
+ }
+
+ int h = height();
+ int im = listView()->itemMargin();
+ int yPixmap = (h - 16) >> 1;
+
+ QString szText;
+
+ QRect cRect(im + 3,0,width - (im << 1),height());
+
+ switch(m_pWindow->type())
+ {
+ case KVI_WINDOW_TYPE_CONSOLE:
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolUseTaskBarIrcContextIndicator))
+ {
+ QColor base = cg.background();
+ QColor cntx = KVI_OPTION_ICCOLOR(m_pWindow->console()->ircContextId() % KVI_NUM_ICCOLOR_OPTIONS);
+ base.setRgb((base.red() + cntx.red()) >> 1,(base.green() + cntx.green()) >> 1,
+ (base.blue() + cntx.blue()) >> 1);
+ p.fillRect(im + 2,yPixmap + 1,14,15,base);
+ //draw_frame_helper(&p,im + 1,yPixmap,im + 15,yPixmap + 15,base.light(180),base.dark());
+ if(KVI_OPTION_BOOL(KviOption_boolUseTaskBarIcons))
+ {
+ p.drawPixmap(im + 20,yPixmap,*(m_pWindow->myIconPtr()));
+ cRect.setLeft(cRect.left() + 37);
+ } else {
+ cRect.setLeft(cRect.left() + 20);
+ }
+ } else {
+ if(KVI_OPTION_BOOL(KviOption_boolUseTaskBarIcons))
+ {
+ p.drawPixmap(im,yPixmap,*(m_pWindow->myIconPtr()));
+ cRect.setLeft(cRect.left() + 17);
+ }
+ }
+ QFont f = QFont();
+ f.setBold(true);
+ p.setFont(f);
+ KviTaskBarBase::getTextForConsole(szText,(KviConsole *)m_pWindow);
+ }
+ break;
+ case KVI_WINDOW_TYPE_CHANNEL:
+ case KVI_WINDOW_TYPE_DEADCHANNEL:
+ szText = ((KviChannel *)m_pWindow)->nameWithUserFlag();
+ if(KVI_OPTION_BOOL(KviOption_boolUseTaskBarIcons))
+ {
+ p.drawPixmap(im,yPixmap,*(m_pWindow->myIconPtr()));
+ cRect.setLeft(cRect.left() + 17);
+ }
+ break;
+ case KVI_WINDOW_TYPE_QUERY:
+ case KVI_WINDOW_TYPE_DEADQUERY:
+ szText = m_pWindow->windowName();
+ if(KVI_OPTION_BOOL(KviOption_boolUseTaskBarIcons))
+ {
+ p.drawPixmap(im,yPixmap,*(m_pWindow->myIconPtr()));
+ cRect.setLeft(cRect.left() + 17);
+ }
+ break;
+ default:
+ szText = m_pWindow->plainTextCaption();
+ if(KVI_OPTION_BOOL(KviOption_boolUseTaskBarIcons))
+ {
+ p.drawPixmap(im,yPixmap,*(m_pWindow->myIconPtr()));
+ cRect.setLeft(cRect.left() + 17);
+ }
+ break;
+ }
+
+ if(KVI_OPTION_BOOL(KviOption_boolUseTaskBarActivityMeter))
+ {
+ unsigned int uActivityValue;
+ unsigned int uActivityTemperature;
+ if(m_pWindow->activityMeter(&uActivityValue,&uActivityTemperature))
+ {
+ p.drawPixmap(cRect.left(),yPixmap,*g_pActivityMeterPixmap,uActivityValue * 5,uActivityTemperature * 16,5,16);
+ cRect.setLeft(cRect.left() + 7);
+ }
+ }
+
+ if(m_iProgress >= 0)
+ {
+ // paint the progress bar
+ int wdth = (m_iProgress * cRect.width()) / 100;
+ p.fillRect(cRect.x(),cRect.y(),wdth,cRect.height(),KVI_OPTION_COLOR(KviOption_colorTreeTaskBarProgress));
+ }
+
+ if(isSelected())
+ {
+ p.setPen(KVI_OPTION_COLOR(KviOption_colorTreeTaskBarActiveForeground));
+ } else {
+ int iLevel;
+ switch(m_iHighlightLevel)
+ {
+ case 0: iLevel = KviOption_colorTreeTaskBarForeground; break;
+ case 1: iLevel = KviOption_colorTreeTaskBarHighlight1Foreground; break;
+ case 2: iLevel = KviOption_colorTreeTaskBarHighlight2Foreground; break;
+ case 3: iLevel = KviOption_colorTreeTaskBarHighlight3Foreground; break;
+ case 4: iLevel = KviOption_colorTreeTaskBarHighlight4Foreground; break;
+ default: iLevel = KviOption_colorTreeTaskBarHighlight5Foreground; break;
+ }
+ p.setPen(
+ QColor(
+ calculateColor(KVI_OPTION_COLOR(iLevel).red(),KVI_OPTION_COLOR(KviOption_colorTreeTaskBarActiveForeground).red()),
+ calculateColor(KVI_OPTION_COLOR(iLevel).green(),KVI_OPTION_COLOR(KviOption_colorTreeTaskBarActiveForeground).green()),
+ calculateColor(KVI_OPTION_COLOR(iLevel).blue(),KVI_OPTION_COLOR(KviOption_colorTreeTaskBarActiveForeground).blue())
+ )
+ );
+ }
+
+ if(m_pWindow->isMinimized())
+ {
+ QString tmp = QChar('(');
+ tmp += szText;
+ tmp += QChar(')');
+ p.drawText(cRect,Qt::AlignLeft | Qt::AlignVCenter,tmp,-1,0);
+ } else {
+ p.drawText(cRect,Qt::AlignLeft | Qt::AlignVCenter,szText,-1,0);
+ }
+
+ painter->drawPixmap(0,0,*pMemBuffer,0,0,width,height());
+ //bitBlt(painter->pixmap(),0,0,pMemBuffer,0,0,width,height(),Qt::CopyROP,false);
+}
+
+QString KviTreeTaskBarItem::key(int,bool) const
+{
+ QString ret = m_pWindow->typeString();
+ ret.append(m_pWindow->windowName());
+ return ret;
+}
+
+void KviTreeTaskBarItem::timerShot()
+{
+ if(m_bIncreasing)
+ m_iStepNumber++;
+ else
+ m_iStepNumber--;
+
+ if((m_iStepNumber>=KVI_NUM_STEPS) && m_bIncreasing)
+ {
+ m_pAnimTimer->stop();
+ m_iStepNumber=KVI_NUM_STEPS; //make shure, that we cannot get out of range
+ } else if((m_iStepNumber<=0) && !m_bIncreasing) {
+ m_pAnimTimer->stop();
+ m_iStepNumber=0; //make shure, that we cannot get out of range
+ }
+ repaint();
+}
+
+void KviTreeTaskBarItem::mouseEnter()
+{
+ if(KVI_OPTION_BOOL(KviOption_boolEnableVisualEffects))
+ {
+ m_bIncreasing=true;
+ if(!m_pAnimTimer->isActive()) m_pAnimTimer->start(KVI_TIMER_DELAY);
+ }
+}
+
+void KviTreeTaskBarItem::mouseLeave()
+{
+ if(KVI_OPTION_BOOL(KviOption_boolEnableVisualEffects))
+ {
+ m_bIncreasing=false;
+ if(!m_pAnimTimer->isActive()) m_pAnimTimer->start(KVI_TIMER_DELAY);
+ }
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// KviTreeTaskBarListView
+//
+
+
+KviTreeTaskBarListView::KviTreeTaskBarListView(QWidget * par)
+: KviTalListView(par)
+{
+ //setSorting(0);
+ setShowSortIndicator(true);
+ setItemMargin(2);
+ setFrameShape(NoFrame);
+ viewport()->setMouseTracking(TRUE);
+ m_pPrevItem=0;
+ setHScrollBarMode(KviTalListView::AlwaysOff);
+}
+
+KviTreeTaskBarListView::~KviTreeTaskBarListView()
+{
+}
+
+void KviTreeTaskBarListView::contentsMouseMoveEvent ( QMouseEvent * e )
+{
+ if(!e) return;
+ KviTreeTaskBarItem* pCur=(KviTreeTaskBarItem*)(itemAt(contentsToViewport(e->pos())));
+ if(pCur!=m_pPrevItem)
+ {
+ if(m_pPrevItem)m_pPrevItem->mouseLeave();
+ if(pCur) pCur->mouseEnter();
+ setCursor(Qt::PointingHandCursor);
+ m_pPrevItem=pCur;
+ } else if(!pCur) {
+ setCursor(Qt::ArrowCursor);
+ }
+}
+void KviTreeTaskBarListView::leaveEvent(QEvent *)
+{
+ if(m_pPrevItem) m_pPrevItem->mouseLeave();
+ m_pPrevItem=0;
+ setCursor(Qt::ArrowCursor);
+}
+
+
+void KviTreeTaskBarListView::contentsMousePressEvent(QMouseEvent *e)
+{
+ KviTalListViewItem * it = (KviTalListViewItem *)itemAt(contentsToViewport(e->pos()));
+ if(it)
+ {
+ if(e->button() & Qt::LeftButton)emit leftMousePress(it);
+ else if(e->button() & Qt::RightButton)emit rightMousePress(it);
+ } else {
+ if(e->button() & Qt::RightButton)
+ {
+ KviTalPopupMenu* pPopup=new KviTalPopupMenu();
+ pPopup->insertItem(__tr2qs("Sort"),this,SLOT(sort()));
+ pPopup->insertItem(__tr2qs("Reverse Sort"),this,SLOT(reverseSort()));
+ pPopup->popup(QCursor::pos());
+ }
+ }
+}
+
+void KviTreeTaskBarListView::sort()
+{
+ setSorting(0,TRUE);
+}
+
+void KviTreeTaskBarListView::reverseSort()
+{
+ setSorting(0,FALSE);
+}
+
+void KviTreeTaskBarListView::resizeEvent(QResizeEvent *e)
+{
+ KviTalListView::resizeEvent(e);
+ setColumnWidth(0,viewport()->width());
+ resizeContents(viewport()->width(),contentsHeight());
+}
+
+//void KviTreeTaskBarListView::paintEmptyAreaInternal(QPainter * p,const QRect &viewportRect,const QRect &painterRect)
+//{
+//
+//}
+
+void KviTreeTaskBarListView::paintEmptyArea(QPainter * p,const QRect &rct)
+{
+ SET_ANTI_ALIASING(*p);
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ if(g_pShadedChildGlobalDesktopBackground)
+ {
+ QPoint pnt = viewport()->mapToGlobal(QPoint(rct.x() + int(p->worldMatrix().dx()),rct.y() + int(p->worldMatrix().dy())));
+ p->drawTiledPixmap(rct.x(),rct.y(),rct.width(),rct.height(),*g_pShadedChildGlobalDesktopBackground,pnt.x(),pnt.y());
+ } else {
+#endif
+ p->fillRect(rct.x(),rct.y(),rct.width(),rct.height(),KVI_OPTION_COLOR(KviOption_colorTreeTaskBarBackground));
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ }
+#endif
+
+ QPixmap * pix = KVI_OPTION_PIXMAP(KviOption_pixmapTreeTaskBarBackground).pixmap();
+ if(pix)
+ {
+ QPoint pnt = viewportToContents(QPoint(rct.x() + int(p->worldMatrix().dx()),rct.y() + int(p->worldMatrix().dy())));
+ //p->drawTiledPixmap(rct.x(),rct.y(),rct.width(),rct.height(),*pix,pnt.x(),pnt.y());
+ KviPixmapUtils::drawPixmapWithPainter(p,pix,KVI_OPTION_UINT(KviOption_uintTreeTaskBarPixmapAlign),rct,viewport()->width(),viewport()->height(),pnt.x(),pnt.y());
+ }
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// KviTreeTaskBar
+//
+
+KviTreeTaskBar::KviTreeTaskBar()
+: KviTaskBarBase()
+{
+ m_pListView = new KviTreeTaskBarListView(this);
+ m_pListView->addColumn(__tr2qs("Window List"),135);
+ m_pListView->setAllColumnsShowFocus(true);
+ m_pListView->setMultiSelection(false);
+
+#ifdef COMPILE_USE_QT4
+ setWidget(m_pListView);
+#else //!COMPILE_USE_QT4
+ setStretchableWidget(m_pListView);
+
+ setVerticalStretchable(true);
+ setHorizontalStretchable(true);
+#endif //!COMPILE_USE_QT4
+
+
+ // FIXME: this code is useless ?
+ if(KVI_OPTION_UINT(KviOption_uintTreeTaskBarMinimumWidth) < 48)
+ KVI_OPTION_UINT(KviOption_uintTreeTaskBarMinimumWidth) = 48;
+ int iMin = m_pListView->minimumSize().width() + 4;
+ if(((unsigned int)iMin) < KVI_OPTION_UINT(KviOption_uintTreeTaskBarMinimumWidth))
+ iMin = KVI_OPTION_UINT(KviOption_uintTreeTaskBarMinimumWidth);
+ setMinimumWidth(iMin);
+
+ // this is surely useful :)
+ m_pListView->setMinimumWidth(4);
+
+ //setMaximumWidth(KVI_OPTION_UINT(KviOption_uintTreeTaskBarMaximumWidth));
+ //m_pListView->setMinimumWidth(KVI_OPTION_UINT(KviOption_uintTreeTaskBarMinimumWidth));
+ //m_pListView->setMaximumWidth(KVI_OPTION_UINT(KviOption_uintTreeTaskBarMaximumWidth));
+#ifdef COMPILE_USE_QT4
+ m_pListView->setFocusPolicy(Qt::NoFocus);
+#else
+ m_pListView->setFocusPolicy(QWidget::NoFocus);
+#endif
+ m_pListView->setStaticBackground(true);
+#ifdef COMPILE_USE_QT4
+ m_pListView->viewport()->setAutoFillBackground(false);
+#else
+ m_pListView->viewport()->setBackgroundMode(QWidget::NoBackground);
+#endif
+ if(!KVI_OPTION_BOOL(KviOption_boolShowTreeTaskbarHeader))
+ {
+ m_pListView->header()->hide();
+ }
+
+ m_pListView->header()->setResizeEnabled(true);
+
+#ifdef COMPILE_USE_QT4
+ setMaximumWidth(600);
+#endif
+
+ m_pListView->viewport()->installEventFilter(this);
+
+#if QT_VERSION >= 300
+#ifndef COMPILE_USE_QT4
+ setResizeEnabled(true);
+#endif
+#endif
+
+ m_pToolTip = new KviDynamicToolTip(m_pListView->viewport(),"tree_taskbar_tooltip");
+ connect(m_pToolTip,SIGNAL(tipRequest(KviDynamicToolTip *,const QPoint &)),this,SLOT(tipRequest(KviDynamicToolTip *,const QPoint &)));
+}
+
+KviTreeTaskBar::~KviTreeTaskBar()
+{
+}
+
+void KviTreeTaskBar::updatePseudoTransparency()
+{
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ m_pListView->viewport()->update();
+#endif
+}
+
+void KviTreeTaskBar::moveEvent(QMoveEvent *)
+{
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ updatePseudoTransparency();
+#endif
+}
+
+void KviTreeTaskBar::tipRequest(KviDynamicToolTip *,const QPoint &pnt)
+{
+ if(KVI_OPTION_BOOL(KviOption_boolShowTaskBarToolTips))
+ {
+ KviTalListViewItem * it = (KviTalListViewItem *)m_pListView->itemAt(pnt);
+ if(it)
+ {
+ QString szText;
+ ((KviTreeTaskBarItem *)it)->m_pWindow->getTaskBarTipText(szText);
+ m_pToolTip->tip(m_pListView->itemRect(it),szText);
+ }
+ }
+}
+
+bool KviTreeTaskBar::eventFilter(QObject * o,QEvent *e)
+{
+ if(o == m_pListView->viewport())
+ {
+ if(e->type() == QEvent::MouseButtonPress)
+ {
+ QMouseEvent * ev = (QMouseEvent *)e;
+ KviTreeTaskBarItem * it = (KviTreeTaskBarItem *)m_pListView->itemAt(ev->pos());
+ if(!it)return false;
+ KviWindow * wnd = it->kviWindow();
+ if(wnd)
+ {
+ if(ev->button() & Qt::LeftButton)
+ {
+ if(ev->state() & Qt::ShiftButton)
+ {
+ wnd->delayedClose();
+ } else {
+ if((g_pActiveWindow != wnd) || (wnd->isMinimized()))g_pFrame->setActiveWindow(wnd);
+ else wnd->minimize();
+ }
+ } else {
+ wnd->contextPopup();
+ }
+ }
+ return true;
+ }
+ }
+ return false;
+}
+
+
+KviTaskBarItem * KviTreeTaskBar::addItem(KviWindow * wnd)
+{
+ // complex insertion task
+ if(wnd->console())
+ {
+ if(wnd->type() != KVI_WINDOW_TYPE_CONSOLE)
+ {
+ ((KviTreeTaskBarItem *)(wnd->console()->m_pTaskBarItem))->setOpen(true);
+ return new KviTreeTaskBarItem(((KviTreeTaskBarItem *)(wnd->console()->m_pTaskBarItem)),wnd);
+ }
+ }
+
+ // console , or a window that has no irc context
+ return new KviTreeTaskBarItem(m_pListView,wnd);
+}
+
+bool KviTreeTaskBar::removeItem(KviTaskBarItem * it)
+{
+ delete (KviTreeTaskBarItem *)it;
+ return true;
+}
+
+void KviTreeTaskBar::setActiveItem(KviTaskBarItem * it)
+{
+ if(it)
+ {
+ KviTreeTaskBarItem * cur = (KviTreeTaskBarItem *)m_pListView->currentItem();
+ if(cur && (cur != (KviTreeTaskBarItem *)it))
+ {
+ cur->setActive(false);
+ }
+ if(((KviTreeTaskBarItem *)it)->parent())
+ {
+ if(!((KviTreeTaskBarItem *)it)->parent()->isOpen())((KviTreeTaskBarItem *)it)->parent()->setOpen(true);
+ }
+ ((KviTreeTaskBarItem *)it)->setActive(true);
+ m_pListView->setSelected(((KviTreeTaskBarItem *)it),true); // this MUST go after it->setActive()
+ if(g_pFrame->dockExtension())g_pFrame->dockExtension()->refresh();
+ }
+}
+
+void KviTreeTaskBar::updateActivityMeter()
+{
+ if(KVI_OPTION_BOOL(KviOption_boolUseTaskBarActivityMeter))
+ {
+ m_pListView->viewport()->update();
+ }
+}
+
+KviTaskBarItem * KviTreeTaskBar::firstItem()
+{
+ m_pCurrentItem = (KviTreeTaskBarItem *)m_pListView->firstChild();
+ return m_pCurrentItem;
+}
+
+KviTaskBarItem * KviTreeTaskBar::nextItem()
+{
+ if(!m_pCurrentItem)return 0;
+
+ if(m_pCurrentItem->firstChild())
+ {
+ m_pCurrentItem = (KviTreeTaskBarItem *)m_pCurrentItem->firstChild();
+ } else {
+ // this item has no children: try the next sibling
+ if(m_pCurrentItem->nextSibling())
+ {
+ m_pCurrentItem = (KviTreeTaskBarItem *)m_pCurrentItem->nextSibling();
+ } else {
+ if(m_pCurrentItem->parent())
+ {
+ // child with not siblings : try the sibling of the parent
+ m_pCurrentItem = (KviTreeTaskBarItem *)m_pCurrentItem->parent()->nextSibling();
+ } else {
+ m_pCurrentItem = 0; // toplevel with no siblings
+ }
+ }
+ }
+ return m_pCurrentItem;
+}
+
+KviTaskBarItem * KviTreeTaskBar::prevItem()
+{
+ KviTreeTaskBarItem * it;
+
+ if(!m_pCurrentItem)return 0;
+
+ if(m_pCurrentItem->parent())
+ {
+ // a child item
+ it = (KviTreeTaskBarItem *)m_pCurrentItem->parent()->firstChild();
+
+ while(it)
+ {
+ if(((KviTreeTaskBarItem *)it->nextSibling()) == m_pCurrentItem)break;
+ else it = ((KviTreeTaskBarItem *)(it->nextSibling()));
+ }
+ if(!it)
+ {
+ it = (KviTreeTaskBarItem *)m_pCurrentItem->parent();
+ }
+
+ } else {
+ // a toplevel one
+ it = (KviTreeTaskBarItem *)m_pListView->firstChild();
+ while(it)
+ {
+ if(((KviTreeTaskBarItem *)it->nextSibling()) == m_pCurrentItem)break;
+ else it = ((KviTreeTaskBarItem *)(it->nextSibling()));
+ }
+ if(it)
+ {
+ if(it->firstChild())
+ {
+ it = ((KviTreeTaskBarItem *)(it->firstChild()));
+ while(it->nextSibling())it = ((KviTreeTaskBarItem *)(it->nextSibling()));
+ }
+ }
+ }
+
+ m_pCurrentItem = it;
+ return it;
+}
+
+KviTaskBarItem * KviTreeTaskBar::lastItem()
+{
+ // first find last toplevel item
+ m_pCurrentItem = (KviTreeTaskBarItem *)m_pListView->firstChild();
+ for(;;)
+ {
+ if(m_pCurrentItem->nextSibling())
+ {
+ m_pCurrentItem = (KviTreeTaskBarItem *)m_pCurrentItem->nextSibling();
+ } else if(m_pCurrentItem->firstChild())
+ {
+ m_pCurrentItem = (KviTreeTaskBarItem *)m_pCurrentItem->firstChild();
+ } else return m_pCurrentItem;
+ }
+ return 0;
+}
+
+bool KviTreeTaskBar::setIterationPointer(KviTaskBarItem * it)
+{
+ m_pCurrentItem = (KviTreeTaskBarItem *)it;
+ if(!it)return true;
+ if(((KviTalListView *)m_pListView) == ((KviTreeTaskBarItem *)it)->listView())return true;
+ m_pCurrentItem = 0;
+ return false;
+}
+
+void KviTreeTaskBar::applyOptions()
+{
+ m_pListView->update();
+ if(!KVI_OPTION_BOOL(KviOption_boolShowTreeTaskbarHeader))
+ {
+ m_pListView->header()->hide();
+ } else {
+ m_pListView->header()->show();
+ }
+}
+
+#include "kvi_taskbar.moc"
diff --git a/src/kvirc/ui/kvi_taskbar.h b/src/kvirc/ui/kvi_taskbar.h
new file mode 100644
index 00000000..300e0f68
--- /dev/null
+++ b/src/kvirc/ui/kvi_taskbar.h
@@ -0,0 +1,312 @@
+#ifndef _KVI_TASKBAR_H_
+#define _KVI_TASKBAR_H_
+//=============================================================================
+//
+// File : kvi_taskbar.h
+// Creation date : Thu Jan 7 1999 03:56:50 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include "kvi_pointerlist.h"
+#include <qframe.h>
+#include "kvi_tal_tooltip.h"
+#include "kvi_tal_listview.h"
+#include <qpushbutton.h>
+
+
+
+class KviWindow;
+class KviFrame;
+class QPixmap;
+class KviDynamicToolTip;
+class KviConsole;
+
+//
+// KviTaskBarItem
+//
+// The base class for the taskBar items
+// this is the only interface to an item visible to external classes
+//
+
+class KVIRC_API KviTaskBarItem
+{
+public:
+ KviTaskBarItem(KviWindow * wnd);
+ virtual ~KviTaskBarItem();
+protected:
+ KviWindow * m_pWindow;
+ int m_iHighlightLevel;
+ int m_iProgress;
+public:
+ KviWindow * kviWindow(){ return m_pWindow; };
+ virtual void captionChanged(){};
+ virtual void highlight(int iLevel = 1){};
+ virtual void setProgress(int progress){};
+ virtual bool active(){ return false; };
+ virtual void unhighlight(){};
+ int progress(){ return m_iProgress; };
+ int highlightLevel(){ return m_iHighlightLevel; };
+};
+
+//
+// KviTaskBarBase
+//
+// The base class for the taskbar implementations
+// This is the basic interface that all the external classes should see
+//
+
+// Please note that Qt3 moc skips the *_SKIP_BEGIN -> *_SKIP_END blocks
+// while the Qt4 moc skips the Q_MOC_RUN ifdef block.. so...
+
+// Qt4 version
+
+// If you get failures (undefined references) in some non-autotools based
+// build system that uses Qt4 then you must add the -DCOMPILE_USE_QT4
+// commandline parameter to moc (at leat) when parsing this file.
+
+// MOC_SKIP_BEGIN
+#ifdef COMPILE_USE_QT4
+
+#include <QDockWidget>
+
+class KVIRC_API KviTaskBarBase : public QDockWidget
+{
+ Q_OBJECT
+#endif //COMPILE_USE_QT4
+// MOC_SKIP_END
+
+// Qt3 version
+#ifndef Q_MOC_RUN
+#ifndef COMPILE_USE_QT4
+
+#include "kvi_toolbar.h"
+
+class KVIRC_API KviTaskBarBase : public KviToolBar
+{
+ Q_OBJECT
+#endif
+#endif
+
+public:
+ KviTaskBarBase();
+ virtual ~KviTaskBarBase();
+protected:
+ KviFrame * m_pFrm;
+ QTimer * m_pActivityMeterTimer;
+public:
+ virtual KviTaskBarItem * addItem(KviWindow *){ return 0; };
+ virtual bool removeItem(KviTaskBarItem *){ return false; };
+ virtual void setActiveItem(KviTaskBarItem *){};
+ virtual KviTaskBarItem * firstItem(){ return 0; };
+ virtual KviTaskBarItem * lastItem(void) { return 0; }
+ virtual KviTaskBarItem * nextItem(){ return 0; };
+ virtual KviTaskBarItem * prevItem(void) { return 0; }
+ virtual KviTaskBarItem * item(int number);
+ virtual bool setIterationPointer(KviTaskBarItem * it){ return false; };
+ virtual void switchWindow(bool bNext,bool bInContextOnly);
+ virtual void updatePseudoTransparency(){};
+ virtual void applyOptions(){};
+ static void getTextForConsole(QString &szText,KviConsole * pConsole);
+protected slots:
+ virtual void updateActivityMeter();
+};
+
+//
+// Implementation details: the following classes should be
+// never used directly (with just the exception of KviFrame
+// that creates the taskbar)
+//
+
+class KviClassicTaskBar;
+
+class KVIRC_API KviTaskBarButton : public QPushButton , KviTaskBarItem
+{
+ friend class KviClassicTaskBar;
+ Q_OBJECT
+public:
+ KviTaskBarButton(QWidget * par,KviWindow * wnd,const char * name);
+ ~KviTaskBarButton();
+protected:
+ bool m_bActive;
+ KviDynamicToolTip * m_pTip;
+protected:
+ virtual void mousePressEvent(QMouseEvent *e);
+#if QT_VERSION >= 300
+ virtual void contextMenuEvent(QContextMenuEvent *e);
+#endif
+ virtual void drawButtonLabel(QPainter *p);
+#ifdef COMPILE_USE_QT4
+ virtual void paintEvent(QPaintEvent * e);
+#endif
+public:
+ virtual bool active(){ return m_bActive; };
+ virtual void highlight(int iLevel = 1);
+ virtual void unhighlight();
+ virtual void setProgress(int progress);
+ virtual void captionChanged();
+protected:
+ void setActive(bool bActive);
+protected slots:
+ void tipRequest(KviDynamicToolTip *tip,const QPoint &pnt);
+};
+
+
+class KVIRC_API KviClassicTaskBar : public KviTaskBarBase
+{
+ Q_OBJECT
+public:
+ KviClassicTaskBar();
+ ~KviClassicTaskBar();
+protected:
+ KviPointerList<KviTaskBarButton> * m_pButtonList;
+ int m_iButtonHeight;
+ QWidget * m_pBase;
+protected:
+ void calcButtonHeight();
+ void doLayout(); // called by KviFrame to adjust a bug on WIndows
+ void insertButton(KviTaskBarButton * b);
+public:
+// virtual void fontChange(const QFont & old);
+ virtual void resizeEvent(QResizeEvent *e);
+public:
+ virtual KviTaskBarItem * addItem(KviWindow *);
+ virtual bool removeItem(KviTaskBarItem *);
+ virtual void setActiveItem(KviTaskBarItem *);
+ virtual KviTaskBarItem * firstItem();
+ virtual KviTaskBarItem * lastItem(void);
+ virtual KviTaskBarItem * nextItem();
+ virtual KviTaskBarItem * prevItem(void);
+ virtual bool setIterationPointer(KviTaskBarItem * it);
+ virtual void updateActivityMeter();
+ virtual void applyOptions();
+protected slots:
+ void orientationChangedSlot(Qt::Orientation o);
+};
+
+class KviTreeTaskBar;
+class KviTreeTaskBarItemInternal;
+
+class KVIRC_API KviTreeTaskBarItem : public KviTalListViewItem , public KviTaskBarItem
+{
+ friend class KviTreeTaskBar;
+ friend class KviTreeTaskBarListView;
+ friend class KviTreeTaskBarItemInternal;
+public:
+ KviTreeTaskBarItem(KviTalListView * par,KviWindow * wnd);
+ KviTreeTaskBarItem(KviTreeTaskBarItem * par,KviWindow * wnd);
+ ~KviTreeTaskBarItem();
+protected:
+ int m_iStepNumber;
+ bool m_bIncreasing;
+ QTimer* m_pAnimTimer;
+ KviTreeTaskBarItemInternal *m_pInternal;
+ int m_iRedDiff;
+ int m_iGreenDiff;
+ int m_iBlueDiff;
+public:
+ virtual QString key(int column,bool) const;
+ virtual void paintCell(QPainter *p,const QColorGroup &cg,int column,int width,int alignment);
+#ifdef COMPILE_USE_QT4
+ virtual void paintBranches(QPainter *p,const QColorGroup &cg,int w,int y,int h);
+#else
+ virtual void paintBranches(QPainter *p,const QColorGroup &cg,int w,int y,int h,GUIStyle s);
+#endif
+ virtual void captionChanged();
+ virtual void highlight(int iLevel = 1);
+ virtual void unhighlight();
+ virtual void setProgress(int progress);
+ virtual bool active(){ return isSelected(); };
+ virtual void applyOptions();
+protected:
+ void setActive(bool bActive);
+ void mouseEnter();
+ void mouseLeave();
+ void timerShot();
+ int calculateColor(int col1,int col2);
+};
+
+class KviTreeTaskBarItemInternal : public QObject
+{
+ Q_OBJECT
+public:
+ KviTreeTaskBarItemInternal(KviTreeTaskBarItem* pItem):m_pItem(pItem) {};
+ ~KviTreeTaskBarItemInternal() {};
+protected:
+ KviTreeTaskBarItem* m_pItem;
+public slots:
+ void timerShot() { m_pItem->timerShot();};
+};
+
+class KVIRC_API KviTreeTaskBarListView : public KviTalListView
+{
+ friend class KviTreeTaskBarItem;
+ Q_OBJECT
+ KviTreeTaskBarItem* m_pPrevItem;
+public:
+ KviTreeTaskBarListView(QWidget * par);
+ ~KviTreeTaskBarListView();
+protected:
+ virtual void contentsMousePressEvent(QMouseEvent *e);
+ virtual void paintEmptyArea(QPainter * p,const QRect &rct);
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual void contentsMouseMoveEvent ( QMouseEvent * e );
+ virtual void leaveEvent(QEvent *);
+signals:
+ void leftMousePress(KviTalListViewItem * it);
+ void rightMousePress(KviTalListViewItem * it);
+public slots:
+ void sort();
+ void reverseSort();
+};
+
+
+class KVIRC_API KviTreeTaskBar : public KviTaskBarBase
+{
+ Q_OBJECT
+public:
+ KviTreeTaskBar();
+ ~KviTreeTaskBar();
+private:
+ KviTreeTaskBarListView * m_pListView;
+ KviTreeTaskBarItem * m_pCurrentItem;
+ KviDynamicToolTip * m_pToolTip;
+public:
+ virtual KviTaskBarItem * addItem(KviWindow *);
+ virtual bool removeItem(KviTaskBarItem *);
+ virtual void setActiveItem(KviTaskBarItem *);
+ virtual KviTaskBarItem * firstItem();
+ virtual KviTaskBarItem * nextItem(void);
+ virtual KviTaskBarItem * lastItem();
+ virtual KviTaskBarItem * prevItem(void);
+ virtual bool setIterationPointer(KviTaskBarItem * it);
+ virtual void updatePseudoTransparency();
+ virtual bool eventFilter(QObject * o,QEvent *e);
+ virtual void updateActivityMeter();
+ virtual void applyOptions();
+protected:
+ virtual void moveEvent(QMoveEvent *);
+protected slots:
+ void tipRequest(KviDynamicToolTip *tip,const QPoint &pnt);
+};
+
+
+#endif //_KVI_TASKBAR_H_
diff --git a/src/kvirc/ui/kvi_texticonwin.cpp b/src/kvirc/ui/kvi_texticonwin.cpp
new file mode 100644
index 00000000..bd480785
--- /dev/null
+++ b/src/kvirc/ui/kvi_texticonwin.cpp
@@ -0,0 +1,283 @@
+//=============================================================================
+//
+// File : kvi_texticonwin.cpp
+// Creation date : Fri May 17 2002 02:35:20 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_texticonwin.h"
+#include "kvi_texticonmanager.h"
+#include "kvi_app.h"
+#include "kvi_options.h"
+#include "kvi_input.h"
+#include "kvi_topicw.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_iconmanager.h"
+
+#include <qnamespace.h>
+#include <qlineedit.h>
+#include <ctype.h>
+#ifdef COMPILE_USE_QT4
+ #include <qevent.h>
+#endif
+
+KviTextIconWindow::KviTextIconWindow()
+#ifdef COMPILE_USE_QT4
+: KviTalIconView(0,Qt::Popup)
+#else
+: KviTalIconView(0,Qt::WType_Popup)
+#endif
+{
+ m_iTimerId = -1;
+ setGridX ( 40 );
+ setFixedSize(KVI_TEXTICON_WIN_WIDTH,KVI_TEXTICON_WIN_HEIGHT);
+ m_pOwner = 0;
+ fill();
+ connect(g_pTextIconManager,SIGNAL(changed()),this,SLOT(fill()));
+ connect(this,SIGNAL(doubleClicked( KviTalIconViewItem * )),this,SLOT(itemSelected(KviTalIconViewItem *)));
+ connect(this,SIGNAL(returnPressed ( KviTalIconViewItem * ) ),this,SLOT(itemSelected(KviTalIconViewItem *)));
+ m_bAltMode = false;
+ setWordWrapIconText(true);
+}
+
+KviTextIconWindow::~KviTextIconWindow()
+{
+ if(m_iTimerId != -1)
+ {
+ killTimer(m_iTimerId);
+ m_iTimerId = -1;
+ }
+// killTimers();
+// if(m_pOwner)m_pOwner->setFocus();
+}
+
+void KviTextIconWindow::fill()
+{
+ clear();
+ KviPointerHashTable<QString,KviTextIcon> * d = g_pTextIconManager->textIconDict();
+ KviPointerHashTableIterator<QString,KviTextIcon> it(*d);
+ while(KviTextIcon * i = it.current())
+ {
+ QPixmap *pix = i->pixmap();
+ if(pix)insertItem(new KviTalIconViewItem(this,it.currentKey(),*pix));
+ ++it;
+ }
+ sort();
+ setCurrentItem(0);
+}
+
+void KviTextIconWindow::popup(QWidget *owner,bool bAltMode)
+{
+ if(m_pOwner)disconnect(m_pOwner,SIGNAL(destroyed()),this,SLOT(ownerDead()));
+ m_pOwner = owner;
+ m_szTypedSeq = "";
+ m_bAltMode = bAltMode;
+ connect(m_pOwner,SIGNAL(destroyed()),this,SLOT(ownerDead()));
+ show();
+}
+
+bool KviTextIconWindow::findTypedSeq()
+{
+ int cnt = count();
+ int max = 0;
+ KviTalIconViewItem *mit = 0;
+ bool bFullMax = false;
+ KviTalIconViewItem *item;
+ for ( item = (KviTalIconViewItem *)firstItem(); item; item = (KviTalIconViewItem *)item->nextItem() )
+ {
+ QString szIt = item->text();
+ int j;
+ for(j=0;j<((int)(szIt.length()));j++)
+ {
+ if(szIt[j].lower() != m_szTypedSeq[j].lower())break;
+ }
+ if(j < max)
+ {
+ goto got_mit;
+ } else {
+ if(j >= max)
+ {
+ bFullMax = (j == ((int)(szIt.length())));
+ max = j;
+ mit = item;
+ }
+ }
+ }
+got_mit:
+ setCurrentItem(mit);
+ m_szCurFullSeq = mit->text();
+ return bFullMax;
+}
+
+void KviTextIconWindow::keyPressEvent(QKeyEvent *e)
+{
+ switch(e->key())
+ {
+ case Qt::Key_Up:
+ case Qt::Key_Down:
+ case Qt::Key_Left:
+ case Qt::Key_Right:
+ case Qt::Key_PageUp:
+ case Qt::Key_PageDown:
+ case Qt::Key_Return:
+ KviTalIconView::keyPressEvent(e);
+ return;
+ break;
+ case Qt::Key_Escape:
+ doHide();
+ return;
+ break;
+ case Qt::Key_Backspace:
+ if(!m_szTypedSeq.isEmpty())
+ {
+ m_szTypedSeq.remove(m_szTypedSeq.length() - 1,1);
+ findTypedSeq();
+ } else {
+ doHide();
+ if(m_pOwner)g_pApp->sendEvent(m_pOwner,e);
+ }
+ return;
+ break;
+ case Qt::Key_Space:
+ doHide();
+ if(findTypedSeq())
+ {
+ QString szItem = m_szTypedSeq;
+ szItem.append(' ');
+ if(m_pOwner)
+ {
+ if(m_pOwner->inherits("KviInputEditor"))
+ ((KviInputEditor *)m_pOwner)->insertText(szItem);
+ else if(m_pOwner->inherits("KviInput"))
+ ((KviInput *)m_pOwner)->insertText(szItem);
+ else if(m_pOwner->inherits("QLineEdit"))
+ {
+ QString tmp = ((QLineEdit *)m_pOwner)->text();
+ tmp.insert(((QLineEdit *)m_pOwner)->cursorPosition(),szItem);
+ ((QLineEdit *)m_pOwner)->setText(tmp);
+ ((QLineEdit *)m_pOwner)->setCursorPosition(((QLineEdit *)m_pOwner)->cursorPosition() + szItem.length());
+ }
+ }
+ } else {
+ if(m_pOwner)g_pApp->sendEvent(m_pOwner,e);
+ }
+ return;
+ break;
+ case Qt::Key_Tab:
+ doHide();
+ findTypedSeq();
+ QString szItem = m_szCurFullSeq;
+ szItem.append(' ');
+ if(m_bAltMode)szItem.prepend(KVI_TEXT_ICON);
+ if(m_pOwner->inherits("KviInputEditor"))
+ ((KviInputEditor *)m_pOwner)->insertText(szItem);
+ else if(m_pOwner->inherits("KviInput"))
+ ((KviInput *)m_pOwner)->insertText(szItem);
+ else if(m_pOwner->inherits("QLineEdit"))
+ {
+ QString tmp = ((QLineEdit *)m_pOwner)->text();
+ tmp.insert(((QLineEdit *)m_pOwner)->cursorPosition(),szItem);
+ ((QLineEdit *)m_pOwner)->setText(tmp);
+ ((QLineEdit *)m_pOwner)->setCursorPosition(((QLineEdit *)m_pOwner)->cursorPosition() + szItem.length());
+ }
+ return;
+ break;
+ }
+
+ int as = e->ascii();
+ if((as >= 'a' && as <= 'z') || (as >= 'A' && as <= 'Z') || (as >= '0' && as <= '9')
+ || (as == '?') || (as == '$') || (as == '.') || (as == ',') || (as == '!') || (as =='&'))
+ {
+ m_szTypedSeq.append((char)as);
+ findTypedSeq();
+ } else {
+ if(m_pOwner)g_pApp->sendEvent(m_pOwner,e);
+ }
+}
+
+void KviTextIconWindow::ownerDead()
+{
+ m_pOwner = 0;
+ doHide();
+}
+
+void KviTextIconWindow::show()
+{
+ m_iTimerId = startTimer(50000); //50 sec ...seems enough
+ QWidget::show();
+}
+
+void KviTextIconWindow::timerEvent(QTimerEvent *)
+{
+ doHide();
+}
+
+void KviTextIconWindow::doHide()
+{
+ if(m_iTimerId != -1)
+ {
+ killTimer(m_iTimerId);
+ m_iTimerId = -1;
+ }
+ hide();
+ if(m_pOwner)m_pOwner->setFocus();
+}
+
+void KviTextIconWindow::itemSelected(KviTalIconViewItem * item)
+{
+ if(item)
+ {
+// debug("%i %i %i %s",m_pOwner->inherits("KviInputEditor"),m_pOwner->inherits("KviInput"),m_pOwner->inherits("QLineEdit"),m_pOwner->className());
+ doHide();
+ QString szItem = item->text();
+ szItem.append(' ');
+ if(m_bAltMode)szItem.prepend(KVI_TEXT_ICON);
+ if(m_pOwner->inherits("KviInputEditor"))
+ ((KviInputEditor *)m_pOwner)->insertText(szItem);
+ else if(m_pOwner->inherits("KviInput"))
+ ((KviInput *)m_pOwner)->insertText(szItem);
+ else if(m_pOwner->inherits("QLineEdit"))
+ {
+ QString tmp = ((QLineEdit *)m_pOwner)->text();
+ tmp.insert(((QLineEdit *)m_pOwner)->cursorPosition(),szItem);
+ ((QLineEdit *)m_pOwner)->setText(tmp);
+ ((QLineEdit *)m_pOwner)->setCursorPosition(((QLineEdit *)m_pOwner)->cursorPosition() + szItem.length());
+ }
+ }
+}
+
+void KviTextIconWindow::mousePressEvent(QMouseEvent *e)
+{
+ if(e->pos().x() < 0)goto hideme;
+ if(e->pos().x() > width())goto hideme;
+ if(e->pos().y() < 0)goto hideme;
+ if(e->pos().y() > height())goto hideme;
+
+ KviTalIconView::mousePressEvent(e);
+ return;
+
+hideme:
+ doHide();
+}
+
+
+#include "kvi_texticonwin.moc"
diff --git a/src/kvirc/ui/kvi_texticonwin.h b/src/kvirc/ui/kvi_texticonwin.h
new file mode 100644
index 00000000..76a4a60e
--- /dev/null
+++ b/src/kvirc/ui/kvi_texticonwin.h
@@ -0,0 +1,64 @@
+#ifndef _KVI_TEXTICONWIN_H_
+#define _KVI_TEXTICONWIN_H_
+//=============================================================================
+//
+// File : kvi_texticonwin.h
+// Creation date : Fri May 17 2002 02:33:45 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_string.h"
+
+#include "kvi_tal_iconview.h"
+
+
+#define KVI_TEXTICON_WIN_WIDTH 230
+#define KVI_TEXTICON_WIN_HEIGHT 200
+
+class KVIRC_API KviTextIconWindow : public KviTalIconView
+{
+ Q_OBJECT
+public:
+ KviTextIconWindow();
+ ~KviTextIconWindow();
+private:
+ QWidget * m_pOwner;
+ QString m_szTypedSeq;
+ QString m_szCurFullSeq;
+ bool m_bAltMode; // in alt mode the itemSelected() string contains
+ // also the CTRL+I escape code
+ int m_iTimerId;
+public:
+ void popup(QWidget *owner,bool bAltMode = false);
+private:
+ void doHide();
+ virtual void show();
+ bool findTypedSeq(); // returns true if it is a complete word
+ virtual void keyPressEvent(QKeyEvent *e);
+ virtual void mousePressEvent(QMouseEvent *);
+ virtual void timerEvent(QTimerEvent *);
+public slots:
+ void fill();
+ void ownerDead();
+ void itemSelected(KviTalIconViewItem * item);
+};
+
+#endif //_KVI_TEXTICONWIN_H_
diff --git a/src/kvirc/ui/kvi_themedlabel.cpp b/src/kvirc/ui/kvi_themedlabel.cpp
new file mode 100644
index 00000000..f9cf8e33
--- /dev/null
+++ b/src/kvirc/ui/kvi_themedlabel.cpp
@@ -0,0 +1,154 @@
+//
+// File : kvi_themedlabel.cpp
+// Creation date : Tue Aug 29 2000 21:17:01 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#define __KVIRC__
+#include "kvi_themedlabel.h"
+
+#include "kvi_options.h"
+#include "kvi_settings.h"
+#include "kvi_app.h"
+#include "kvi_window.h"
+#include <qpainter.h>
+
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ extern QPixmap * g_pShadedChildGlobalDesktopBackground;
+#endif
+
+KviThemedLabel::KviThemedLabel(QWidget * par,const char * name)
+: QFrame(par,name)
+{
+ setFrameStyle(QFrame::Sunken | QFrame::StyledPanel);
+ applyOptions();
+ m_bAutoHeight=0;
+}
+
+KviThemedLabel::~KviThemedLabel()
+{
+}
+
+/*QSize KviThemedLabel::sizeHint()
+{
+ QSize size=QFrame::sizeHint();
+ int iHeight=fontMetrics().height()*QStringList::split('\n',m_szText).count()+4;
+ size.setHeight(iHeight);
+ return size;
+}*/
+
+void KviThemedLabel::setText(const char * text)
+{
+ m_szText = QString(text);
+ if(m_bAutoHeight)
+ {
+ int iHeight=fontMetrics().height()*QStringList::split('\n',m_szText).count()+4;
+ setMinimumHeight(iHeight);
+ //g_pApp->postEvent(parent(),new QEvent(QEvent::Resize));
+ }
+ update();
+}
+
+void KviThemedLabel::setText(const QString& text)
+{
+ m_szText = text;
+ if(m_bAutoHeight)
+ {
+ int iHeight=fontMetrics().height()*QStringList::split('\n',m_szText).count()+4;
+ setMinimumHeight(iHeight);
+ //g_pApp->postEvent(parent(),new QEvent(QEvent::Resize));
+ }
+ update();
+}
+
+void KviThemedLabel::applyOptions()
+{
+ setFont(KVI_OPTION_FONT(KviOption_fontLabel));
+ update();
+}
+
+#ifdef COMPILE_USE_QT4
+void KviThemedLabel::paintEvent ( QPaintEvent * event )
+{
+ QFrame::paintEvent(event);
+ QPainter p(this);
+ SET_ANTI_ALIASING(p);
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ if(g_pShadedChildGlobalDesktopBackground)
+ {
+ QPoint pnt = mapToGlobal(contentsRect().topLeft());
+ p.drawTiledPixmap(contentsRect(),*g_pShadedChildGlobalDesktopBackground,pnt);
+ } else {
+#endif
+
+ if(KVI_OPTION_PIXMAP(KviOption_pixmapLabelBackground).pixmap())
+ {
+ p.drawTiledPixmap(contentsRect(),*(KVI_OPTION_PIXMAP(KviOption_pixmapLabelBackground).pixmap()));
+ } else {
+ p.fillRect(contentsRect(),KVI_OPTION_COLOR(KviOption_colorLabelBackground));
+ }
+
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ }
+#endif
+
+ QRect r = contentsRect();
+ r.setLeft(r.left() + 2); // some margin
+
+ p.setPen(KVI_OPTION_COLOR(KviOption_colorLabelForeground));
+
+ p.drawText(r,Qt::AlignLeft | Qt::AlignVCenter,m_szText);
+}
+#else
+void KviThemedLabel::drawContents(QPainter *p)
+{
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ if(g_pShadedChildGlobalDesktopBackground)
+ {
+ QPoint pnt = mapToGlobal(contentsRect().topLeft());
+ p->drawTiledPixmap(contentsRect(),*g_pShadedChildGlobalDesktopBackground,pnt);
+ } else {
+#endif
+
+ if(KVI_OPTION_PIXMAP(KviOption_pixmapLabelBackground).pixmap())
+ {
+ p->drawTiledPixmap(contentsRect(),*(KVI_OPTION_PIXMAP(KviOption_pixmapLabelBackground).pixmap()));
+ } else {
+ p->fillRect(contentsRect(),KVI_OPTION_COLOR(KviOption_colorLabelBackground));
+ }
+
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ }
+#endif
+
+ QRect r = contentsRect();
+ r.setLeft(r.left() + 2); // some margin
+
+ p->setPen(KVI_OPTION_COLOR(KviOption_colorLabelForeground));
+
+ p->drawText(r,Qt::AlignLeft | Qt::AlignVCenter,m_szText);
+}
+#endif
+
+void KviThemedLabel::mouseDoubleClickEvent(QMouseEvent *)
+{
+ emit doubleClicked();
+}
+
+
+#include "kvi_themedlabel.moc"
diff --git a/src/kvirc/ui/kvi_themedlabel.h b/src/kvirc/ui/kvi_themedlabel.h
new file mode 100644
index 00000000..b63e2386
--- /dev/null
+++ b/src/kvirc/ui/kvi_themedlabel.h
@@ -0,0 +1,62 @@
+#ifndef _KVI_THEMEDLABEL_H_
+#define _KVI_THEMEDLABEL_H_
+
+//
+// File : kvi_themedlabel.h
+// Creation date : Tue Aug 29 2000 21:12:12 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+
+#include <qframe.h>
+
+#include "kvi_string.h"
+
+class KVIRC_API KviThemedLabel : public QFrame
+{
+ Q_OBJECT
+ Q_PROPERTY(int TransparencyCapable READ dummyRead)
+public:
+ KviThemedLabel(QWidget * par,const char * name);
+ ~KviThemedLabel();
+private:
+ QString m_szText;
+ bool m_bAutoHeight;
+protected:
+#ifdef COMPILE_USE_QT4
+ virtual void paintEvent ( QPaintEvent * event );
+#else
+ virtual void drawContents(QPainter *p);
+#endif
+ virtual void mouseDoubleClickEvent(QMouseEvent *e);
+public:
+ int dummyRead() const { return 0; };
+ void setText(const char * text);
+ void setText(const QString& text);
+ QString text() { return m_szText; };
+ void setAutoHeight(bool value) { m_bAutoHeight=value; };
+ void applyOptions();
+
+// QSize sizeHint();
+signals:
+ void doubleClicked();
+};
+
+#endif //_KVI_THEMEDLABEL_H_
diff --git a/src/kvirc/ui/kvi_toolbar.cpp b/src/kvirc/ui/kvi_toolbar.cpp
new file mode 100644
index 00000000..792f9fc0
--- /dev/null
+++ b/src/kvirc/ui/kvi_toolbar.cpp
@@ -0,0 +1,160 @@
+//=============================================================================
+//
+// File : kvi_toolbar.cpp
+// Creation date : Tue Sep 17 02:00:17 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_toolbar.h"
+#include "kvi_frame.h"
+#include "kvi_locale.h"
+#include "kvi_app.h"
+
+#include <qcursor.h>
+#include "kvi_tal_popupmenu.h"
+
+#ifdef COMPILE_USE_QT4
+ #include <qevent.h>
+#endif
+
+static KviTalPopupMenu * g_pToolBarContextPopup = 0;
+static KviTalPopupMenu * g_pToolBarWindowsPopup = 0;
+static KviTalPopupMenu * g_pToolBarIconSizesPopup = 0;
+static KviTalPopupMenu * g_pToolBarPositionsPopup = 0;
+
+
+KviToolBar::KviToolBar(const QString &label,QT_TOOLBARDOCK_TYPE dock,bool bNewLine,const char * nam)
+: KviTalToolBar(label,g_pFrame,dock,bNewLine,nam)
+{
+}
+
+KviToolBar::~KviToolBar()
+{
+ if(g_pToolBarContextPopup)delete g_pToolBarContextPopup;
+ if(g_pToolBarIconSizesPopup)delete g_pToolBarIconSizesPopup;
+ if(g_pToolBarPositionsPopup)delete g_pToolBarPositionsPopup;
+ if(g_pToolBarWindowsPopup)delete g_pToolBarWindowsPopup;
+
+ g_pToolBarContextPopup = 0;
+ g_pToolBarIconSizesPopup = 0;
+ g_pToolBarPositionsPopup = 0;
+ g_pToolBarWindowsPopup = 0;
+}
+
+void KviToolBar::mousePressEvent(QMouseEvent *e)
+{
+ if(!(e->button() & Qt::RightButton))
+ {
+ KviTalToolBar::mousePressEvent(e);
+ return;
+ }
+
+ if(!g_pToolBarContextPopup)g_pToolBarContextPopup = new KviTalPopupMenu();
+ if(!g_pToolBarIconSizesPopup)g_pToolBarIconSizesPopup = new KviTalPopupMenu();
+ if(!g_pToolBarPositionsPopup)g_pToolBarPositionsPopup = new KviTalPopupMenu();
+ if(!g_pToolBarWindowsPopup)g_pToolBarWindowsPopup = new KviTalPopupMenu();
+
+ g_pToolBarContextPopup->clear();
+ g_pToolBarIconSizesPopup->clear();
+ g_pToolBarPositionsPopup->clear();
+ g_pToolBarWindowsPopup->clear();
+
+ g_pFrame->fillToolBarsPopup(g_pToolBarWindowsPopup);
+ g_pToolBarContextPopup->insertItem(__tr2qs("Toolbars"),g_pToolBarWindowsPopup);
+
+ g_pToolBarContextPopup->insertItem(__tr2qs("Orientation"),g_pToolBarPositionsPopup);
+
+ g_pToolBarPositionsPopup->insertItem(__tr2qs("Top"),this,SLOT(moveToTop()));
+ g_pToolBarPositionsPopup->insertItem(__tr2qs("Left"),this,SLOT(moveToLeft()));
+ g_pToolBarPositionsPopup->insertItem(__tr2qs("Right"),this,SLOT(moveToRight()));
+ g_pToolBarPositionsPopup->insertItem(__tr2qs("Bottom"),this,SLOT(moveToBottom()));
+ g_pToolBarPositionsPopup->insertSeparator();
+ g_pToolBarPositionsPopup->insertItem(__tr2qs("Detached"),this,SLOT(moveToTornOff()));
+ g_pToolBarPositionsPopup->insertItem(__tr2qs("Flat"),this,SLOT(moveToMinimized()));
+
+ g_pToolBarContextPopup->insertItem(__tr2qs("Icon Size"),g_pToolBarIconSizesPopup);
+
+ g_pToolBarIconSizesPopup->insertItem(__tr2qs("Small (22x22)"),this,SLOT(setSmallIcons()));
+ g_pToolBarIconSizesPopup->insertItem(__tr2qs("Large (32x32)"),this,SLOT(setBigIcons()));
+
+ g_pToolBarContextPopup->popup(QCursor::pos());
+}
+
+void KviToolBar::moveTo(QT_TOOLBARDOCK_TYPE dock)
+{
+ // FIXME: this should be hidden in Tal
+#ifdef COMPILE_USE_QT4
+ g_pFrame->removeToolBar(this);
+ g_pFrame->addToolBar(dock,this);
+#else //!COMPILE_USE_QT4
+#if QT_VERSION >= 300
+ g_pFrame->moveDockWindow(this,dock);
+#else
+ g_pFrame->moveToolBar(this,dock);
+#endif
+#endif //!COMPILE_USE_QT4
+}
+
+void KviToolBar::moveToTop()
+{
+ moveTo(QT_DOCK_TOP);
+}
+
+void KviToolBar::moveToLeft()
+{
+ moveTo(QT_DOCK_LEFT);
+}
+
+void KviToolBar::moveToRight()
+{
+ moveTo(QT_DOCK_RIGHT);
+}
+
+void KviToolBar::moveToBottom()
+{
+ moveTo(QT_DOCK_BOTTOM);
+}
+
+void KviToolBar::moveToMinimized()
+{
+ moveTo(QT_DOCK_MINIMIZED);
+}
+
+void KviToolBar::moveToTornOff()
+{
+ moveTo(QT_DOCK_TORNOFF);
+}
+
+void KviToolBar::setBigIcons()
+{
+ g_pFrame->setUsesBigPixmaps(true);
+}
+
+void KviToolBar::setSmallIcons()
+{
+ g_pFrame->setUsesBigPixmaps(false);
+}
+
+
+
+
+#include "kvi_toolbar.moc"
diff --git a/src/kvirc/ui/kvi_toolbar.h b/src/kvirc/ui/kvi_toolbar.h
new file mode 100644
index 00000000..a0e05119
--- /dev/null
+++ b/src/kvirc/ui/kvi_toolbar.h
@@ -0,0 +1,52 @@
+#ifndef _KVI_TOOLBAR_H_
+#define _KVI_TOOLBAR_H_
+//=============================================================================
+//
+// File : kvi_toolbar.h
+// Creation date : Tue Sep 17 02:00:16 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_tal_toolbar.h"
+
+class KviFrame;
+
+class KVIRC_API KviToolBar : public KviTalToolBar
+{
+ Q_OBJECT
+public:
+ KviToolBar(const QString &label,QT_TOOLBARDOCK_TYPE dock = QT_DOCK_TOP,bool bNewLine = false,const char * nam = 0);
+ ~KviToolBar();
+protected:
+ virtual void mousePressEvent(QMouseEvent *e);
+ void moveTo(QT_TOOLBARDOCK_TYPE dock);
+public slots:
+ void moveToTop();
+ void moveToLeft();
+ void moveToRight();
+ void moveToBottom();
+ void moveToMinimized();
+ void moveToTornOff();
+ void setBigIcons();
+ void setSmallIcons();
+};
+
+
+#endif //_KVI_TOOLBAR_H_
diff --git a/src/kvirc/ui/kvi_toolwindows_container.cpp b/src/kvirc/ui/kvi_toolwindows_container.cpp
new file mode 100644
index 00000000..270a7063
--- /dev/null
+++ b/src/kvirc/ui/kvi_toolwindows_container.cpp
@@ -0,0 +1,140 @@
+#define __KVIRC__
+
+
+#include <qlayout.h>
+#include <qtoolbutton.h>
+#include <qobjectcleanuphandler.h>
+#include <qpushbutton.h>
+#include "kvi_tal_vbox.h"
+#include <qpainter.h>
+#include <qapplication.h>
+
+#include "kvi_toolwindows_container.h"
+#include "kvi_iconmanager.h"
+
+
+KviWindowToolWidget::KviWindowToolWidget(QWidget * parent, KviWindowToolPageButton* button/*, const char * name, WFlags f*/ )
+:QWidget(parent/*,name,f*/)
+{
+// m_pContainer=parent;
+ m_pButton=button;
+ m_bAutoDelete=1;
+ m_bHidden=0;
+ if(m_pButton) m_pButton->setOn(!isHidden());
+// m_ObjectHandler.add(button);
+// setMinimumWidth(0);
+}
+
+KviWindowToolWidget::~KviWindowToolWidget()
+{
+// unregisterSelf();
+// m_ObjectHandler.remove(m_pButton);
+
+}
+
+void KviWindowToolWidget::registerSelf()
+{
+/* m_pContainer->registerWidget(this);
+ if(!m_ObjectHandler.isEmpty())
+ {
+ if(m_pButton)
+ m_pButton->setOn(true);
+ } else {
+ m_pButton=0;
+ }*/
+}
+
+void KviWindowToolWidget::unregisterSelf()
+{
+/* if(!m_bHidden)
+ m_pContainer->unregisterWidget(this);
+ if(!m_ObjectHandler.isEmpty())
+ {
+ if(m_pButton)
+ m_pButton->setOn(false);
+ } else {
+ m_pButton=0;
+ }*/
+}
+
+/*void KviWindowToolWidget::hide()
+{
+ if(m_bAutoDelete==0)
+ {
+ unregisterSelf();
+ m_bHidden=1;
+ }
+ QWidget::hide();
+}*/
+
+/*void KviWindowToolWidget::show()
+{
+ if(m_bHidden)
+ {
+ registerSelf();
+ }
+ QWidget::show();
+ m_bHidden=0;
+}*/
+
+KviWindowToolPageButton::KviWindowToolPageButton ( int pixon,int pixoff, const QString & text, QWidget * parent,bool bOn, const char * name )
+:TOOL_PAGE_PARENT(parent)
+{
+#ifdef COMPILE_USE_QT4
+ setFlat(true);
+ setObjectName("kvi_window_tool_button");
+ setIcon(QIcon(*(g_pIconManager->getSmallIcon(pixon))));
+#else
+ QIconSet is1;
+ is1.setPixmap(*(g_pIconManager->getSmallIcon(pixon)),QIconSet::Small,QIconSet::Normal,QIconSet::On);
+ is1.setPixmap(*(g_pIconManager->getSmallIcon(pixoff)),QIconSet::Small,QIconSet::Normal,QIconSet::Off);
+ setIconSet(is1);
+ setUsesBigPixmap(false);
+#endif
+ setToggleButton(true);
+ setOn(bOn);
+
+// setSizePolicy(QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Ignored));
+}
+
+KviWindowToolPageButton::~KviWindowToolPageButton()
+{
+
+}
+
+/*void KviWindowToolPageButton::drawButton ( QPainter * p)
+{
+ QPixmap pixmap( height(), width() );
+ if(isOn())
+ pixmap.fill(colorGroup().mid());
+ else
+ pixmap.fill(colorGroup().button());
+ QPainter painter( &pixmap );
+
+ QPixmap icon;
+ if(isOn())
+ icon=iconSet()->pixmap(QIconSet::Small,QIconSet::Normal,QIconSet::On);
+ else
+ icon=iconSet()->pixmap(QIconSet::Small,QIconSet::Normal,QIconSet::Off);
+
+ // Draw the frame
+ //painter.setPen( colorGroup().mid() );
+ //if ( m_id != NUM_TABS - 1 ) painter.drawLine( 0, 0, 0, pixmap.height() - 1 );
+ //painter.drawLine( 0, pixmap.height() - 1, pixmap.width() - 1, pixmap.height() - 1 );
+
+ // Draw the text
+ QFont font;
+ QString str = text();
+ str.remove("&");
+ const int textX = pixmap.width() / 2 - QFontMetrics( font ).width( str ) / 2;
+ painter.setPen( colorGroup().buttonText() );
+ const QRect rect( textX + icon.width() / 2 + 2, 0, pixmap.width(), pixmap.height() );
+ painter.drawText( rect, Qt::AlignLeft | Qt::AlignVCenter, str );
+
+ // Draw the icon
+ painter.drawPixmap( textX - icon.width() / 2 - 2, pixmap.height() / 2 - icon.height() / 2, icon );
+
+ // Paint to widget
+ p->rotate( -90 );
+ p->drawPixmap( 1 - pixmap.width(), 0, pixmap );
+}*/
diff --git a/src/kvirc/ui/kvi_toolwindows_container.h b/src/kvirc/ui/kvi_toolwindows_container.h
new file mode 100644
index 00000000..ec131d9b
--- /dev/null
+++ b/src/kvirc/ui/kvi_toolwindows_container.h
@@ -0,0 +1,65 @@
+#ifndef _KVI_TOOLWINDOWS_CONTAINER_H_
+#define _KVI_TOOLWINDOWS_CONTAINER_H_
+
+#include "kvi_tal_widgetstack.h"
+#include "kvi_tal_vbox.h"
+
+#include <qtoolbutton.h>
+#include <qobjectcleanuphandler.h>
+#include <qpushbutton.h>
+
+#include "kvi_heapobject.h"
+#include "kvi_styled_controls.h"
+
+class KviWindowToolWidget;
+class KviWindowToolPageButton;
+
+// FIXME: these classes are probably useless now... no ?
+
+// Pragma: KviWindowToolPageButton is actually used in kvi_window.h and others (need to fix the name and move
+// it to its own file.
+
+
+
+class KVIRC_API KviWindowToolWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ KviWindowToolWidget( QWidget * parent,KviWindowToolPageButton* button/*, const char * name = 0, WFlags f = 0 */);
+ ~KviWindowToolWidget();
+
+ void setAutoDelete(bool b) { m_bAutoDelete=b; };
+ bool autoDelete() { return m_bAutoDelete; };
+
+ virtual void registerSelf();
+ virtual void unregisterSelf();
+/*public slots:
+ virtual void hide ();
+ virtual void show ();*/
+protected:
+// KviToolWindowsContainer *m_pContainer;
+ KviWindowToolPageButton *m_pButton;
+ bool m_bAutoDelete;
+ bool m_bHidden;
+// QObjectCleanupHandler m_ObjectHandler;
+
+};
+
+#ifdef COMPILE_USE_QT4
+ #define TOOL_PAGE_PARENT QPushButton
+#else
+ #define TOOL_PAGE_PARENT KviStyledToolButton
+#endif
+
+
+class KVIRC_API KviWindowToolPageButton : public TOOL_PAGE_PARENT
+{
+ Q_OBJECT
+public:
+ KviWindowToolPageButton ( int pixon,int pixoff, const QString & text, QWidget * parent,bool bOn=0,const char * name = 0 );
+ ~KviWindowToolPageButton();
+/*protected:
+ virtual void drawButton ( QPainter * painter);*/
+};
+
+#endif //_KVI_TOOLWINDOWS_CONTAINER_H_
diff --git a/src/kvirc/ui/kvi_topicw.cpp b/src/kvirc/ui/kvi_topicw.cpp
new file mode 100644
index 00000000..bbcf0c5c
--- /dev/null
+++ b/src/kvirc/ui/kvi_topicw.cpp
@@ -0,0 +1,834 @@
+//=============================================================================
+//
+// File : kvi_topicw.cpp
+// Creation date : Fri Aug 4 2000 12:09:21 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+
+#include "kvi_topicw.h"
+#include "kvi_options.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_locale.h"
+#include "kvi_defaults.h"
+#include "kvi_settings.h"
+#include "kvi_iconmanager.h"
+#include "kvi_texticonmanager.h"
+#include "kvi_app.h"
+#include "kvi_colorwin.h"
+#include "kvi_texticonwin.h"
+#include "kvi_window.h"
+#include "kvi_channel.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectionserverinfo.h"
+#include "kvi_ircconnectionuserinfo.h"
+#include "kvi_mirccntrl.h"
+
+extern KviTextIconWindow * g_pTextIconWindow;
+extern KviColorWindow * g_pColorWindow;
+static int g_iInputFontCharWidth[256];
+
+#include <qpainter.h>
+#include <qfontmetrics.h>
+#include "kvi_tal_tooltip.h"
+#include <qlineedit.h>
+#include "kvi_tal_listbox.h"
+#include <qregexp.h>
+#include <qclipboard.h>
+#include "kvi_tal_popupmenu.h"
+#include <qevent.h>
+
+// FIXME: #warning "The combo should disappear when it looses focus!...(how to do it ?)"
+
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ extern QPixmap * g_pShadedChildGlobalDesktopBackground;
+
+#endif
+
+
+extern QStringList * g_pRecentTopicList;
+
+int KviListBoxTopicItem::width ( const KviTalListBox * lb ) const
+{
+ QFontMetrics fm(lb->font());
+ return fm.width(KviMircCntrl::stripControlBytes(text()));
+}
+
+void KviListBoxTopicItem::paint ( QPainter * p )
+{
+ KviTopicWidget::paintColoredText(p,text(),listBox()->colorGroup(),height(listBox()));
+}
+
+
+KviTopicWidget::KviTopicWidget(QWidget * par,const char * name)
+: QFrame(par,name)
+{
+ setFrameStyle(QFrame::Sunken | QFrame::StyledPanel);
+ setFont(KVI_OPTION_FONT(KviOption_fontLabel));
+ m_pHistory = 0;
+ m_pAccept = 0;
+ m_pDiscard = 0;
+ m_pContextPopup = 0;
+ m_iCursorPosition = 0;
+ m_pInput = 0;
+#ifdef COMPILE_USE_QT4
+ setAutoFillBackground(false);
+#else
+ setBackgroundMode(QWidget::NoBackground);
+#endif
+ reset();
+#ifdef COMPILE_USE_QT4
+ m_pCompletionBox=new KviTalListBox(this,Qt::Popup);
+#else
+ m_pCompletionBox=new KviTalListBox(this,Qt::WType_Popup);
+#endif
+ m_pCompletionBox->setFont( font() );
+ m_pCompletionBox->setPalette( palette() );
+// m_pCompletionBox->setVScrollBarMode( KviTalListBox::AlwaysOff );
+// m_pCompletionBox->setHScrollBarMode( KviTalListBox::AlwaysOff );
+ m_pCompletionBox->setFrameStyle( QFrame::Box | QFrame::Plain );
+ m_pCompletionBox->setLineWidth( 1 );
+ connect(m_pCompletionBox,SIGNAL(selected(int)),this,SLOT(complete(int)));
+ m_pCompletionBox->hide();
+}
+
+KviTopicWidget::~KviTopicWidget()
+{
+ delete m_pCompletionBox;
+}
+
+void KviTopicWidget::popDownListBox()
+{
+ m_pCompletionBox->removeEventFilter( this );
+ m_pCompletionBox->hide();
+}
+
+void KviTopicWidget::reset()
+{
+ KviTalToolTip::remove(this);
+ m_szTopic = __tr2qs("Unknown");
+ KviTalToolTip::add(this,__tr2qs("No topic message has been received from the server yet"));
+ m_szSetAt = "";
+ m_szSetBy = "";
+ update();
+}
+
+void KviTopicWidget::applyOptions()
+{
+// setFont(KVI_OPTION_FONT(KviOption_fontLabel));
+// if(m_pComboBox)m_pComboBox->setFont(KVI_OPTION_FONT(KviOption_fontLabel));
+ resizeEvent(0);
+}
+
+#define KVI_LABEL_DEF_BACK 100
+#define KVI_LABEL_DEF_FORE 101
+
+QString convertToHtml(const QString &text)
+{
+ QString result;
+ bool curBold = false;
+ bool curUnderline = false;
+ unsigned char curFore = KVI_LABEL_DEF_FORE; //default fore
+ unsigned char curBack = KVI_LABEL_DEF_BACK; //default back
+
+ unsigned int idx = 0;
+
+ while(idx < text.length())
+ {
+ unsigned short c = text[(int)idx].unicode();
+
+ unsigned int start = idx;
+
+ while(
+ (c != KVI_TEXT_COLOR) &&
+ (c != KVI_TEXT_BOLD) &&
+ (c != KVI_TEXT_UNDERLINE) &&
+ (c != KVI_TEXT_REVERSE) &&
+ (c != KVI_TEXT_RESET) &&
+ (c != KVI_TEXT_ICON)
+ )
+ {
+ idx++;
+ if(idx >= text.length())break;
+ else c = text[(int)idx].unicode();
+ }
+
+ int len = idx - start;
+
+ if(len > 0)
+ {
+ bool bOpened = FALSE;
+ QString szText = text.mid(start,len);
+
+ if(curBold) result.append("<b>");
+ if(curUnderline) result.append("<u>");
+
+ if(curFore != KVI_LABEL_DEF_FORE)
+ {
+ result.append("<font color=\"");
+ result.append(KVI_OPTION_MIRCCOLOR(curFore).name());
+ result.append('"');
+ bOpened = TRUE;
+ }
+
+/* if(curBack != KVI_LABEL_DEF_BACK)
+ {
+ if(!bOpened)
+ result.append("<font bgcolor=");
+ else
+ result.append(" bgcolor=");
+ result.append(KVI_OPTION_MIRCCOLOR(curBack).name());
+ }*/
+
+ if(bOpened) result.append(">");
+
+ result.append(text.mid(start,len));
+
+ if( (curFore != KVI_LABEL_DEF_FORE) /*|| (curBack != KVI_LABEL_DEF_BACK)*/ )
+ result.append("</font>");
+
+ if(curUnderline) result.append("</u>");
+ if(curBold) result.append("</b>");
+
+ }
+
+ switch(c)
+ {
+ case KVI_TEXT_BOLD: curBold = !curBold; ++idx; break;
+ case KVI_TEXT_UNDERLINE: curUnderline = !curUnderline; ++idx; break;
+ case KVI_TEXT_REVERSE:
+ {
+ char auxBack = curBack;
+ curBack = curFore;
+ curFore = auxBack;
+ }
+ ++idx;
+ break;
+ case KVI_TEXT_RESET:
+ curFore = KVI_LABEL_DEF_FORE;
+ curBack = KVI_LABEL_DEF_BACK;
+ curBold = false;
+ curUnderline = false;
+ ++idx;
+ break;
+ case KVI_TEXT_COLOR:
+ {
+ ++idx;
+ unsigned char fore;
+ unsigned char back;
+ idx = getUnicodeColorBytes(text,idx,&fore,&back);
+ if(fore != KVI_NOCHANGE)
+ {
+ curFore = fore;
+ if(back != KVI_NOCHANGE)curBack = back;
+ } else {
+ // only a CTRL+K
+ curBack = KVI_LABEL_DEF_BACK;
+ curFore = KVI_LABEL_DEF_FORE;
+ }
+ }
+ break;
+ case KVI_TEXT_ICON:
+ {
+ ++idx;
+
+ unsigned int icoStart = idx;
+ while((idx < text.length()) && (text[(int)idx].unicode() > 32))idx++;
+
+ KviStr lookupString = text.mid(icoStart,idx - icoStart);
+
+ KviTextIcon * icon = g_pTextIconManager->lookupTextIcon(lookupString.ptr());
+ if(icon)
+ {
+ //TODO: icons
+/* QPixmap * pigzmap = icon->pixmap();
+ p->drawPixmap(curX,(baseline + 2) - pigzmap->height(),*(pigzmap));
+ curX += pigzmap->width();*/
+ } else {
+ idx = icoStart;
+ }
+ }
+ break;
+ }
+ }
+ return result;
+}
+
+void KviTopicWidget::paintColoredText(QPainter *p, QString text,const QColorGroup& cg,int height, int width)
+{
+ QFontMetrics fm(p->font());
+
+ if(height<0) height=p->window().height();
+ if(width<0) width=p->window().width();
+
+ bool curBold = false;
+ bool curUnderline = false;
+ unsigned char curFore = KVI_LABEL_DEF_FORE; //default fore
+ unsigned char curBack = KVI_LABEL_DEF_BACK; //default back
+ int baseline = ((height + fm.ascent() - fm.descent() + 1) >> 1);
+
+ int curX = p->window().x() + 2; //2 is the margin
+
+ unsigned int idx = 0;
+
+ while((idx < text.length()) && (curX < width))
+ {
+ unsigned short c = text[(int)idx].unicode();
+
+ unsigned int start = idx;
+
+ while((idx < text.length()) &&
+ (c != KVI_TEXT_COLOR) &&
+ (c != KVI_TEXT_BOLD) &&
+ (c != KVI_TEXT_UNDERLINE) &&
+ (c != KVI_TEXT_REVERSE) &&
+ (c != KVI_TEXT_RESET) &&
+ (c != KVI_TEXT_ICON)
+ )
+ {
+ idx++;
+ c = text[(int)idx].unicode();
+ }
+
+ int len = idx - start;
+ int wdth;
+
+ if(len > 0)
+ {
+ QString szText = text.mid(start,len);
+
+ wdth = fm.width(szText);
+
+ if(curFore == KVI_LABEL_DEF_FORE)
+ {
+ p->setPen(cg.text());
+ } else {
+ if(curFore > 16)p->setPen(cg.background());
+ else p->setPen(KVI_OPTION_MIRCCOLOR(curFore));
+ }
+
+ if(curBack != KVI_LABEL_DEF_BACK)
+ {
+ if(curBack > 16)
+ {
+ p->fillRect(curX,p->window().y() + 2,wdth,height - 4,
+ cg.text());
+ } else {
+ p->fillRect(curX,p->window().y() + 2,wdth,height - 4,
+ KVI_OPTION_MIRCCOLOR(curBack));
+ }
+ }
+
+ p->drawText(curX,baseline,szText,0,len);
+
+ if(curBold)p->drawText(curX+1,baseline,szText,0,len);
+ if(curUnderline)
+ {
+ p->drawLine(curX,baseline + 1,curX+wdth,baseline + 1);
+ }
+ } else {
+ wdth = 0;
+ }
+
+
+ curX += wdth;
+
+ switch(c)
+ {
+ case KVI_TEXT_BOLD: curBold = !curBold; ++idx; break;
+ case KVI_TEXT_UNDERLINE: curUnderline = !curUnderline; ++idx; break;
+ case KVI_TEXT_REVERSE:
+ {
+ char auxBack = curBack;
+ curBack = curFore;
+ curFore = auxBack;
+ }
+ ++idx;
+ break;
+ case KVI_TEXT_RESET:
+ curFore = KVI_LABEL_DEF_FORE;
+ curBack = KVI_LABEL_DEF_BACK;
+ curBold = false;
+ curUnderline = false;
+ ++idx;
+ break;
+ case KVI_TEXT_COLOR:
+ {
+ ++idx;
+ unsigned char fore;
+ unsigned char back;
+ idx = getUnicodeColorBytes(text,idx,&fore,&back);
+ if(fore != KVI_NOCHANGE)
+ {
+ curFore = fore;
+ if(back != KVI_NOCHANGE)curBack = back;
+ } else {
+ // only a CTRL+K
+ curBack = KVI_LABEL_DEF_BACK;
+ curFore = KVI_LABEL_DEF_FORE;
+ }
+ }
+ break;
+ case KVI_TEXT_ICON:
+ {
+ ++idx;
+
+ unsigned int icoStart = idx;
+ while((idx < text.length()) && (text[(int)idx].unicode() > 32))idx++;
+
+ KviStr lookupString = text.mid(icoStart,idx - icoStart);
+
+ KviTextIcon * icon = g_pTextIconManager->lookupTextIcon(lookupString.ptr());
+ if(icon)
+ {
+ QPixmap * pigzmap = icon->pixmap();
+ p->drawPixmap(curX,(baseline + 2) - pigzmap->height(),*(pigzmap));
+ curX += pigzmap->width();
+ } else {
+ idx = icoStart;
+ }
+ }
+ break;
+ }
+ }
+}
+
+#ifdef COMPILE_USE_QT4
+void KviTopicWidget::paintEvent(QPaintEvent * e)
+{
+ QPainter pa(this);
+ drawFrame(&pa);
+ drawContents(&pa);
+}
+#endif
+
+void KviTopicWidget::drawContents(QPainter *p)
+{
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ if(g_pShadedChildGlobalDesktopBackground)
+ {
+ QPoint pnt = mapToGlobal(contentsRect().topLeft());
+ p->drawTiledPixmap(contentsRect(),*g_pShadedChildGlobalDesktopBackground,pnt);
+ } else {
+#endif
+ if(KVI_OPTION_PIXMAP(KviOption_pixmapLabelBackground).pixmap())
+ {
+ p->drawTiledPixmap(contentsRect(),*(KVI_OPTION_PIXMAP(KviOption_pixmapLabelBackground).pixmap()));
+ } else {
+ p->fillRect(contentsRect(),KVI_OPTION_COLOR(KviOption_colorLabelBackground));
+ }
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ }
+#endif
+ QColorGroup colorGroup;
+ //colorGroup()
+ colorGroup.setColor(QColorGroup::Text,KVI_OPTION_COLOR(KviOption_colorLabelForeground));
+ colorGroup.setColor(QColorGroup::Background,KVI_OPTION_COLOR(KviOption_colorLabelBackground));
+ paintColoredText(p,m_szTopic,colorGroup);
+}
+
+void KviTopicWidget::setTopic(const QString & topic)
+{
+ m_szTopic = topic;
+ bool bFound = false;
+ for(QStringList::Iterator it=g_pRecentTopicList->begin();it != g_pRecentTopicList->end(); ++it)
+ {
+ if(*it == m_szTopic)
+ {
+ bFound = true;
+ break;
+ }
+ }
+ if(!bFound && (!m_szTopic.isEmpty()))
+ {
+ if(g_pRecentTopicList->count() >= KVI_RECENT_TOPIC_ENTRIES)
+ {
+ g_pRecentTopicList->remove(g_pRecentTopicList->begin());
+ }
+ g_pRecentTopicList->append(m_szTopic);
+ }
+ updateToolTip();
+ update();
+}
+
+void KviTopicWidget::setTopicSetBy(const QString & setBy)
+{
+ m_szSetBy = setBy;
+ updateToolTip();
+}
+
+void KviTopicWidget::setTopicSetAt(const QString & setAt)
+{
+ m_szSetAt = setAt;
+ updateToolTip();
+}
+
+void KviTopicWidget::updateToolTip()
+{
+ KviTalToolTip::remove(this);
+
+ QString txt = "<html>" \
+ "<body>" \
+ "<table width=\"100%\">";
+
+ if(!m_szTopic.isEmpty())
+ {
+ txt += START_TABLE_BOLD_ROW;
+ txt += __tr2qs("Channel topic:");
+ txt += END_TABLE_BOLD_ROW;
+
+ txt += "<tr><td><center>";
+
+ QString tmp = m_szTopic;
+
+ tmp.replace('&',"&amp;");
+ tmp.replace('<',"&lt;");
+ tmp.replace('>',"&gt;");
+ tmp = convertToHtml(tmp);
+
+ txt += tmp;
+ txt += "</center></td></tr>";
+
+ if(!m_szSetBy.isEmpty())
+ {
+ txt += "<tr><td bgcolor=\"#D0D0D0\">";
+ txt += __tr2qs("Set by") + " <b>" + m_szSetBy + "</b>";
+ txt += "</td></tr>";
+
+ if(!m_szSetAt.isEmpty())
+ {
+ txt += "<tr><td bgcolor=\"#D0D0D0\">";
+ txt += __tr2qs("Set on") + " <b>" + m_szSetAt + "</b>";
+ txt += "</td></tr>";
+ }
+ }
+
+ txt += "<tr><td>";
+ txt += __tr2qs("Double-click to edit...");
+ txt += "</td></tr>";
+
+ } else {
+ txt += "<tr><td>";
+ txt += __tr2qs("No topic is set");
+ txt += "</td></tr>";
+ txt += "<tr><td>";
+ txt += __tr2qs("Double-click to set...");
+ txt += "</td></tr>";
+ }
+
+ txt += "</table>" \
+ "</body>" \
+ "<html>";
+
+ KviTalToolTip::add(this,txt);
+}
+
+QSize KviTopicWidget::sizeHint() const
+{
+ QFontMetrics fm(font());
+ int hght = fm.lineSpacing() + (frameWidth() << 1) + 4;
+ int baseline = ((hght + fm.ascent() - fm.descent() + 1) >> 1);
+ if(baseline < 16)hght += (16 - baseline);
+ return QSize(width(),hght);
+}
+
+void KviTopicWidget::mouseDoubleClickEvent(QMouseEvent *)
+{
+ int maxlen=-1;
+ QObject * w = parent();
+ QString szModes;
+ bool bCanEdit = TRUE;
+ while(w)
+ {
+ if(w->inherits("KviChannel"))
+ {
+ KviChannel *chan = ((KviChannel *)w);
+ maxlen=chan->connection()->serverInfo()->maxTopicLen();
+ chan->getChannelModeString(szModes);
+ if(szModes.contains('t') && !( chan->isMeHalfOp() || chan->isMeOp() || chan->isMeChanOwner() || chan->isMeChanAdmin() || chan->connection()->userInfo()->hasUserMode('o') || chan->connection()->userInfo()->hasUserMode('O')) ) {
+ bCanEdit=false;
+ }
+ break;
+ }
+ w = w->parent();
+ }
+ if(m_pInput == 0)
+ {
+ m_pInput=new KviInputEditor(this,0);
+ m_pInput->setReadOnly(!bCanEdit);
+ m_pInput->setMaxBufferSize(maxlen);
+ m_pInput->setGeometry(0,0,width() - (height() << 2)+height(),height());
+ m_pInput->setText(m_szTopic);
+ connect(m_pInput,SIGNAL(enterPressed()),this,SLOT(acceptClicked()));
+ connect(m_pInput,SIGNAL(escapePressed()),this,SLOT(discardClicked()));
+ m_pInput->installEventFilter(this);
+
+ m_pHistory = new QPushButton(this);
+ m_pHistory->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TIME)));
+ m_pHistory->setGeometry(width() - (height() << 2)+height(),0,height(),height());
+ KviTalToolTip::add(m_pHistory,__tr2qs("History"));
+ m_pHistory->show();
+ connect(m_pHistory,SIGNAL(clicked()),this,SLOT(historyClicked()));
+
+ m_pAccept = new QPushButton(this);
+ m_pAccept->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ACCEPT)));
+ m_pAccept->setGeometry(width() - (height() << 1),0,height(),height());
+ m_pAccept->setEnabled(bCanEdit);
+ m_pAccept->show();
+ KviTalToolTip::add(m_pAccept,__tr2qs("Commit Changes"));
+ connect(m_pAccept,SIGNAL(clicked()),this,SLOT(acceptClicked()));
+
+ m_pDiscard = new QPushButton(this);
+ m_pDiscard->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DISCARD)));
+ m_pDiscard->setGeometry(width() - height(),0,height(),height());
+ KviTalToolTip::add(m_pDiscard,__tr2qs("Discard Changes"));
+ m_pDiscard->show();
+ connect(m_pDiscard,SIGNAL(clicked()),this,SLOT(discardClicked()));
+
+ m_pInput->show();
+ m_pInput->setFocus();
+ }
+}
+
+void KviTopicWidget::mousePressEvent(QMouseEvent * e)
+{
+
+ if(!(e->button() & Qt::RightButton))return;
+ if(!m_pContextPopup)
+ {
+ m_pContextPopup = new KviTalPopupMenu(this);
+ connect(m_pContextPopup,SIGNAL(aboutToShow()),this,SLOT(contextPopupAboutToShow()));
+ }
+ m_pContextPopup->popup(mapToGlobal(e->pos()));
+}
+
+void KviTopicWidget::contextPopupAboutToShow()
+{
+ if(!m_pContextPopup)return; // hm ?
+ m_pContextPopup->clear();
+ m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_COPY)),__tr2qs("Copy to clipboard"),this,SLOT(copy()));
+}
+
+void KviTopicWidget::copy()
+{
+ QClipboard * c = QApplication::clipboard();
+ if(!c)return;
+ if(c->supportsSelection())c->setText(m_szTopic,QClipboard::Selection);
+ c->setText(m_szTopic,QClipboard::Clipboard);
+}
+
+bool KviTopicWidget::eventFilter(QObject *object,QEvent *e)
+{
+ if ( !e )
+ return TRUE;
+ if(object==m_pCompletionBox)
+ {
+ switch( e->type() ) {
+ case QEvent::MouseButtonPress:
+ if ( m_pCompletionBox->rect().contains( ((QMouseEvent*)e)->pos() ) ) {
+ complete(m_pCompletionBox->index(m_pCompletionBox->itemAt(((QMouseEvent*)e)->pos())));
+ return TRUE;
+ }
+ break;
+ case QEvent::MouseButtonRelease:
+ if ( m_pCompletionBox->rect().contains( ((QMouseEvent*)e)->pos() ) ) {
+ QMouseEvent tmp( QEvent::MouseButtonDblClick,
+ ((QMouseEvent*)e)->pos(), ((QMouseEvent*)e)->button(), ((QMouseEvent*)e)->state() ) ;
+ // will hide popup
+ QApplication::sendEvent( object, &tmp );
+ return TRUE;
+ } else {
+ if ( m_pCompletionBox->isVisible() )
+ popDownListBox();
+ }
+ break;
+ case QEvent::KeyPress:
+ switch( ((QKeyEvent *)e)->key() ) {
+ case Qt::Key_Up:
+ case Qt::Key_Down:
+ if ( !(((QKeyEvent *)e)->state() & Qt::AltButton) )
+ break;
+ case Qt::Key_F4:
+ case Qt::Key_Escape:
+ if ( m_pCompletionBox->isVisible() ) {
+ popDownListBox();
+ return TRUE;
+ }
+ break;
+ default:
+ break;
+ }
+ break;
+ case QEvent::Hide:
+ popDownListBox();
+ break;
+ default:
+ break;
+ }
+ }
+ return QFrame::eventFilter(object,e);
+}
+
+bool KviTopicWidget::handleKeyPressEvent(QKeyEvent * e)
+{
+ return 1;
+}
+
+void KviTopicWidget::keyPressEvent(QKeyEvent * e)
+{
+ if(handleKeyPressEvent(e))
+ {
+ e->accept();
+ return;
+ }
+}
+
+void KviTopicWidget::resizeEvent(QResizeEvent *e)
+{
+ if(e)QFrame::resizeEvent(e);
+ if(m_pInput)
+ {
+ m_pInput->setGeometry(0,0,width() - (height() << 2)+height(),height());
+ m_pHistory->setGeometry(width() - (height() << 2)+height(),0,height(),height());
+ m_pAccept->setGeometry(width() - (height() << 1),0,height(),height());
+ m_pDiscard->setGeometry(width() - height(),0,height(),height());
+ }
+}
+
+void KviTopicWidget::deactivate()
+{
+ popDownListBox();
+ if(m_pInput)
+ {
+ delete m_pInput;
+ m_pInput = 0;
+ delete m_pHistory;
+ m_pHistory = 0;
+ delete m_pAccept;
+ m_pAccept = 0;
+ delete m_pDiscard;
+ m_pDiscard = 0;
+ }
+
+ // try to find a KviWindow parent and give it the focus
+
+ QObject * w = parent();
+ while(w)
+ {
+ if(w->inherits("KviWindow"))
+ {
+ ((KviWindow *)w)->setFocus();
+ return;
+ }
+ w = w->parent();
+ }
+
+ // no KviWindow on the path
+ w = parent();
+ if(w)
+ {
+ if(w->inherits("QWidget"))
+ ((QWidget *)w)->setFocus();
+ }
+}
+
+void KviTopicWidget::discardClicked()
+{
+ deactivate();
+}
+
+void KviTopicWidget::historyClicked()
+{
+ if(g_pRecentTopicList)
+ {
+ m_pCompletionBox->installEventFilter( this );
+ m_pCompletionBox->clear();
+ for ( QStringList::Iterator it = g_pRecentTopicList->begin(); it != g_pRecentTopicList->end(); ++it ) {
+ KviListBoxTopicItem* item=new KviListBoxTopicItem(m_pCompletionBox,*it);
+ }
+ m_pCompletionBox->resize(m_pInput->width(),6*m_pCompletionBox->fontMetrics().height()+20);
+ QPoint point=m_pInput->mapToGlobal(QPoint(0,0));
+ point+=QPoint(0,m_pInput->height());
+ m_pCompletionBox->move(point);
+ m_pCompletionBox->show();
+ }
+}
+
+void KviTopicWidget::acceptClicked()
+{
+ if(!m_pInput->readOnly())
+ {
+ QString tmp = m_pInput->text();
+ if(tmp != m_szTopic)emit topicSelected(tmp);
+ }
+ deactivate();
+}
+
+void KviTopicWidget::insertChar(QChar c)
+{
+ insertText(QString(c));
+}
+
+void KviTopicWidget::insertText(const QString &c)
+{
+ if(m_pInput)
+ m_pInput->insertText(c);
+}
+
+int KviTopicWidget::xCursorPostionCalculation(int xInd)
+{
+ return 0;
+}
+void KviTopicWidget::complete(int pos)
+{
+ m_pInput->setText(m_pCompletionBox->text(pos));
+ popDownListBox();
+}
+
+QChar KviTopicWidget::getSubstituteChar(unsigned short control_code)
+{
+ switch(control_code)
+ {
+ case KVI_TEXT_COLOR:
+ return QChar('K');
+ break;
+ case KVI_TEXT_BOLD:
+ return QChar('B');
+ break;
+ case KVI_TEXT_RESET:
+ return QChar('O');
+ break;
+ case KVI_TEXT_REVERSE:
+ return QChar('R');
+ break;
+ case KVI_TEXT_UNDERLINE:
+ return QChar('U');
+ break;
+ case KVI_TEXT_ICON:
+ return QChar('I');
+ break;
+ default:
+ return QChar(control_code);
+ break;
+ }
+}
+
+#include "kvi_topicw.moc"
diff --git a/src/kvirc/ui/kvi_topicw.h b/src/kvirc/ui/kvi_topicw.h
new file mode 100644
index 00000000..b13088d7
--- /dev/null
+++ b/src/kvirc/ui/kvi_topicw.h
@@ -0,0 +1,120 @@
+#ifndef _KVI_TOPICW_H_
+#define _KVI_TOPICW_H_
+
+//============================================================================
+//
+// File : kvi_topicw.h
+// Creation date : Fri Aug 4 2000 12:03:12 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//============================================================================
+
+#include "kvi_settings.h"
+
+#include <qframe.h>
+#include <qpushbutton.h>
+#include "kvi_tal_listbox.h"
+
+#include "kvi_string.h"
+#include "kvi_app.h"
+#include "kvi_input.h"
+
+class QComboBox;
+class KviChannel;
+class KviTalPopupMenu;
+class KviIrcConnection;
+class KviTalListBox;
+
+class KVIRC_API KviListBoxTopicItem : public KviTalListBoxText
+{
+public:
+ KviListBoxTopicItem( KviTalListBox * listbox = 0 , const QString & text = QString::null):KviTalListBoxText(listbox,text) { ; };
+ virtual int width ( const KviTalListBox * lb ) const;
+protected:
+ virtual void paint ( QPainter * p );
+
+};
+
+class KVIRC_API KviTopicWidget : public QFrame
+{
+ Q_OBJECT
+ Q_PROPERTY(int TransparencyCapable READ dummyRead)
+ friend class KviChannel;
+
+public:
+ KviTopicWidget(QWidget * par,const char * name);
+ ~KviTopicWidget();
+
+private:
+ QString m_szTopic;
+ QString m_szSetBy;
+ QString m_szSetAt;
+ QPushButton * m_pAccept;
+ QPushButton * m_pDiscard;
+ QPushButton * m_pHistory;
+ KviTalPopupMenu * m_pContextPopup;
+ QChar getSubstituteChar(unsigned short control_code);
+ int xCursorPostionCalculation(int xInd);
+ KviInputEditor* m_pInput;
+ KviTalListBox* m_pCompletionBox;
+protected:
+ int m_iCursorPosition;
+ virtual void drawContents(QPainter *p);
+ virtual void mouseDoubleClickEvent(QMouseEvent *e);
+ virtual void mousePressEvent(QMouseEvent *e);
+ virtual void keyPressEvent(QKeyEvent *e);
+ virtual void resizeEvent(QResizeEvent *e);
+#ifdef COMPILE_USE_QT4
+ virtual void paintEvent(QPaintEvent * e);
+#endif
+ void updateToolTip();
+ void deactivate();
+ void iconButtonClicked();
+ virtual bool eventFilter(QObject *o,QEvent *e);
+ bool handleKeyPressEvent(QKeyEvent * e);
+public:
+ void insertChar(QChar c);
+ void insertText(const QString &s);
+ int dummyRead() const { return 0; };
+ void reset();
+
+ void setTopic(const QString & szTopic);
+ void setTopicSetBy(const QString & setBy);
+ void setTopicSetAt(const QString & setAt);
+
+ const QString & topic(){ return m_szTopic; };
+ const QString & topicSetBy(){ return m_szSetBy; };
+ const QString & topicSetAt(){ return m_szSetAt; };
+ virtual QSize sizeHint() const;
+ void applyOptions();
+
+ static void paintColoredText(QPainter *p, QString text,const QColorGroup& cg, int h=-1, int w=-1);
+protected slots:
+ void acceptClicked();
+ void discardClicked();
+ void historyClicked();
+ void contextPopupAboutToShow();
+ void copy();
+ void complete(int);
+ void popDownListBox();
+signals:
+ void topicSelected(const QString &szTopic);
+};
+
+#endif //_KVI_TOPICW_H_
diff --git a/src/kvirc/ui/kvi_userlistview.cpp b/src/kvirc/ui/kvi_userlistview.cpp
new file mode 100644
index 00000000..20f75f06
--- /dev/null
+++ b/src/kvirc/ui/kvi_userlistview.cpp
@@ -0,0 +1,1972 @@
+//=============================================================================
+//
+// File : kvi_userlistview.cpp
+// Creation date : Tue Aug 1 2000 21:05:22 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+#define _KVI_USERLISTVIEW_CPP_
+
+#include "kvi_debug.h"
+#include "kvi_userlistview.h"
+#include "kvi_settings.h"
+#include "kvi_locale.h"
+#include "kvi_options.h"
+#include "kvi_defaults.h"
+#include "kvi_iconmanager.h"
+#include "kvi_regusersdb.h"
+#include "kvi_parameterlist.h"
+#include "kvi_window.h"
+#include "kvi_console.h"
+#include "kvi_app.h"
+#include "kvi_useraction.h"
+#include "kvi_qstring.h"
+#include "kvi_frame.h"
+#include "kvi_mdimanager.h"
+#include "kvi_kvs_eventtriggers.h"
+#include "kvi_toolwindows_container.h"
+#include "kvi_doublebuffer.h"
+#include "kvi_stringconversion.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectionserverinfo.h"
+
+#include <qlabel.h>
+#include <qscrollbar.h>
+#include <qpainter.h>
+#include <qpixmap.h>
+#include <qfontmetrics.h>
+#include <qdatetime.h>
+#include <qmime.h>
+#include "kvi_styled_controls.h"
+#include <qevent.h>
+
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ extern QPixmap * g_pShadedChildGlobalDesktopBackground;
+#endif
+
+
+// kvi_app.cpp (loaded and destroyed by KviIconManager)
+extern QPixmap * g_pUserChanStatePixmap;
+
+// Yet another really complex widget :)
+
+#define KVI_USERLIST_BORDER_WIDTH 2
+
+// FIXME: #warning "Button to show/hide avatars"
+// FIXME: #warning "We want to be able to navigate the list with the keyboard!"
+
+KviUserListToolTip::KviUserListToolTip(KviUserListView * v,KviUserListViewArea * a)
+: KviTalToolTip(a)
+{
+ m_pListView = v;
+}
+
+KviUserListToolTip::~KviUserListToolTip()
+{
+}
+
+void KviUserListToolTip::maybeTip(const QPoint &pnt)
+{
+ m_pListView->maybeTip(this,pnt);
+}
+
+
+
+
+KviUserListEntry::KviUserListEntry(KviUserListView * parent,const QString &nick,
+ KviIrcUserEntry * e,short int iFlags,bool bJoinTimeUnknown)
+{
+ m_pListView = parent;
+ m_szNick = nick;
+ m_pGlobalData = e;
+ m_iFlags = iFlags;
+ m_lastActionTime = (kvi_time_t)0;
+ m_joinTime = bJoinTimeUnknown ? (kvi_time_t)0 : kvi_unixTime();
+ m_iTemperature = bJoinTimeUnknown ? 0 : KVI_USERACTION_JOIN;
+
+ m_bSelected = false;
+
+ recalcSize();
+}
+
+KviUserListEntry::~KviUserListEntry()
+{
+}
+
+bool KviUserListEntry::color(QColor& color)
+{
+ //
+ // FIXME: Unused ?
+ //
+ KviRegisteredUser* pRegisteredUser=m_pListView->m_pKviWindow->connection()->userDataBase()->registeredUser(m_szNick);
+ if(pRegisteredUser)
+ {
+ if(m_pListView->m_pKviWindow->connection()->userDataBase()->haveCustomColor(m_szNick))
+ {
+ color=*(m_pListView->m_pKviWindow->connection()->userDataBase()->customColor(m_szNick));
+ return true;
+ }
+ }
+ if(KVI_OPTION_BOOL(KviOption_boolUseDifferentColorForOwnNick) && m_pListView->m_pKviWindow->connection())
+ {
+ if(m_szNick==m_pListView->m_pKviWindow->connection()->currentNickName())
+ {
+ color = KVI_OPTION_COLOR(KviOption_colorUserListViewOwnForeground);
+ return true;
+ }
+ }
+ if(m_iFlags == 0)
+ {
+ color=KVI_OPTION_COLOR(KviOption_colorUserListViewNormalForeground);
+ return true;
+ } else {
+ color = KVI_OPTION_COLOR((m_iFlags & KVI_USERFLAG_CHANOWNER) ? \
+ KviOption_colorUserListViewChanOwnerForeground : ((m_iFlags & KVI_USERFLAG_CHANADMIN) ? \
+ KviOption_colorUserListViewChanAdminForeground : ((m_iFlags & KVI_USERFLAG_OP) ? \
+ KviOption_colorUserListViewOpForeground : ((m_iFlags & KVI_USERFLAG_HALFOP) ? \
+ KviOption_colorUserListViewHalfOpForeground : ((m_iFlags & KVI_USERFLAG_VOICE) ? \
+ KviOption_colorUserListViewVoiceForeground : KviOption_colorUserListViewUserOpForeground)))));
+ return true;
+ }
+ return true;
+}
+
+void KviUserListEntry::recalcSize()
+{
+ KviAvatar * av = m_pGlobalData->avatar();
+ m_iHeight = m_pListView->m_iFontHeight;
+ if(KVI_OPTION_BOOL(KviOption_boolShowUserChannelIcons) && (m_iHeight < 20))m_iHeight = 20;
+
+ if(!KVI_OPTION_BOOL(KviOption_boolDisableAvatars))//G&N 2005
+ {
+ if(av)
+ {
+ if( KVI_OPTION_BOOL(KviOption_boolScaleAvatars) &&
+ (
+ !KVI_OPTION_BOOL(KviOption_boolDoNotStretchAvatars) ||
+ (av->pixmap()->width() > KVI_OPTION_UINT(KviOption_uintAvatarScaleWidth)) ||
+ (av->pixmap()->height() > KVI_OPTION_UINT(KviOption_uintAvatarScaleHeight))
+ )
+ )
+ {
+ QPixmap * pix = av->scaledPixmap(KVI_OPTION_UINT(KviOption_uintAvatarScaleWidth), KVI_OPTION_UINT(KviOption_uintAvatarScaleHeight));
+
+ m_iHeight += pix->height();
+ }
+ else
+ {
+ m_iHeight += av->pixmap()->height();
+ }
+ }
+ }
+ m_iHeight += 3;
+}
+
+///////////////////////////////////////////////
+
+
+
+KviUserListView::KviUserListView(QWidget * parent,KviWindowToolPageButton* button,KviIrcUserDataBase * db,KviWindow * pWnd,int dictSize,const QString & label_text,const char * name)
+: KviWindowToolWidget(parent,button)
+{
+ setAutoDelete(0);
+ m_pKviWindow = pWnd;
+ m_pEntryDict = new KviPointerHashTable<QString,KviUserListEntry>(dictSize,false);
+ m_pEntryDict->setAutoDelete(true);
+
+ m_pUsersLabel = new QLabel(this,"userslabel");
+ KviTalToolTip::add(m_pUsersLabel,label_text);
+
+ m_pViewArea = new KviUserListViewArea(this);
+ m_pToolTip = new KviUserListToolTip(this,m_pViewArea);
+ m_pTopItem = 0;
+ m_pHeadItem = 0;
+ m_pTailItem = 0;
+ m_iOpCount = 0;
+ m_iHalfOpCount = 0;
+ m_iVoiceCount = 0;
+ m_iChanAdminCount = 0;
+ m_iChanOwnerCount = 0;
+ m_iUserOpCount = 0;
+ m_pIrcUserDataBase = db;
+ m_iTotalHeight = 0;
+ m_ibEntries = 0;
+ m_ieEntries = 0;
+ m_iIEntries = 0;
+ m_iSelectedCount = 0;
+// setBackgroundMode(QWidget::NoBackground);
+ applyOptions();
+ registerSelf();
+}
+
+KviUserListView::~KviUserListView()
+{
+ removeAllEntries();
+ delete m_pEntryDict;
+ delete m_pToolTip;
+}
+
+void KviUserListView::emitRightClick()
+{
+ int ev = -1;
+ switch(m_pKviWindow->type())
+ {
+ case KVI_WINDOW_TYPE_CHANNEL: ev = KviEvent_OnChannelNickPopupRequest; break;
+ case KVI_WINDOW_TYPE_QUERY: ev = KviEvent_OnQueryNickPopupRequest; break;
+ case KVI_WINDOW_TYPE_CONSOLE: ev = KviEvent_OnNotifyListPopupRequest; break;
+ default: ev = KviEvent_OnNickLinkPopupRequest; break; // this should actually never happen
+ }
+ if(ev > -1)
+ {
+ if(KviKvsEventManager::instance()->hasAppHandlers(ev))
+ {
+ QString nicks;
+ appendSelectedNicknames(nicks);
+ KviKvsVariantList vList;
+ vList.append(nicks);
+ KviKvsEventManager::instance()->trigger(ev,m_pKviWindow,&vList);
+ } else {
+ g_pApp->checkSuggestRestoreDefaultScript();
+ }
+ }
+}
+
+void KviUserListView::emitDoubleClick()
+{
+ int ev = -1;
+ switch(m_pKviWindow->type())
+ {
+ case KVI_WINDOW_TYPE_CHANNEL: ev = KviEvent_OnChannelNickDefaultActionRequest; break;
+ case KVI_WINDOW_TYPE_QUERY: ev = KviEvent_OnQueryNickDefaultActionRequest; break;
+ case KVI_WINDOW_TYPE_CONSOLE: ev = KviEvent_OnNotifyListDefaultActionRequest; break;
+ default: ev = KviEvent_OnNickLinkDefaultActionRequest; break; // this should actually never happen
+ }
+ if(ev > -1)
+ {
+ if(KviKvsEventManager::instance()->hasAppHandlers(ev))
+ {
+ QString nicks;
+ appendSelectedNicknames(nicks);
+ KviKvsVariantList vList;
+ vList.append(nicks);
+ KviKvsEventManager::instance()->trigger(ev,m_pKviWindow,&vList);
+ } else {
+ g_pApp->checkSuggestRestoreDefaultScript();
+ }
+ }
+}
+
+void KviUserListView::updateScrollBarRange()
+{
+ int max = m_iTotalHeight - (m_pViewArea->height() - (KVI_USERLIST_BORDER_WIDTH * 2));
+ m_pViewArea->m_pScrollBar->setRange(0,max > 0 ? max : 0);
+}
+
+void KviUserListView::applyOptions()
+{
+/* if(!KVI_OPTION_BOOL(KviOption_boolDisableUserListLabel)){
+ m_pUsersLabel->hide();
+ m_pViewArea->setGeometry(0,0,width(),height());
+ }
+ if(KVI_OPTION_BOOL(KviOption_boolDisableUserListLabel)){
+ m_pUsersLabel->show();
+ updateUsersLabel();
+ }*/
+ setFont(KVI_OPTION_FONT(KviOption_fontUserListView));
+ QFontMetrics fm(KVI_OPTION_FONT(KviOption_fontUserListView));
+ m_iFontHeight = fm.lineSpacing();
+ KviUserListEntry * e = m_pHeadItem;
+ m_iTotalHeight = 0;
+ while(e)
+ {
+ e->recalcSize();
+ m_iTotalHeight += e->m_iHeight;
+ e = e->m_pNext;
+ }
+ updateScrollBarRange();
+ m_pUsersLabel->setFont(KVI_OPTION_FONT(KviOption_fontUserListView));
+ setMinimumWidth(100);
+ resizeEvent(0); // this will call update() too
+ repaint();
+}
+void KviUserListView::updateArea()
+{
+ bool bEnable = m_pViewArea->isUpdatesEnabled();
+ if(!bEnable) m_pViewArea->setUpdatesEnabled(true);
+ triggerUpdate();
+ if(!bEnable) m_pViewArea->setUpdatesEnabled(false);
+}
+
+void KviUserListView::enableUpdates(bool bEnable)
+{
+ m_pViewArea->setUpdatesEnabled(bEnable);
+ if(bEnable)triggerUpdate();
+}
+
+void KviUserListView::setMaskEntries(char type, int num)
+{
+ switch (type)
+ {
+ case 'b':
+ m_ibEntries = num;
+ break;
+ case 'e':
+ m_ieEntries = num;
+ break;
+ case 'I':
+ m_iIEntries = num;
+ break;
+ }
+ updateUsersLabel();
+}
+
+void KviUserListView::completeNickBashLike(const QString &begin,KviPointerList<QString> *l,bool bAppendMask)
+{
+ KviUserListEntry * entry = m_pHeadItem;
+
+ while(entry)
+ {
+ if(KviQString::equalCIN(begin,entry->m_szNick,begin.length()))
+ {
+ if(bAppendMask)
+ {
+ QString * s = new QString();
+ KviQString::sprintf(*s,"%Q!%Q@%Q",&(entry->m_szNick),&(entry->m_pGlobalData->user()),&(entry->m_pGlobalData->host()));
+ l->append(s);
+ } else
+ l->append(new QString(entry->m_szNick));
+ }
+ entry = entry->m_pNext;
+ }
+}
+
+bool KviUserListView::completeNickStandard(const QString &begin,const QString &skipAfter,QString &buffer,bool bAppendMask)
+{
+ KviUserListEntry * entry = m_pHeadItem;
+
+ if(!skipAfter.isEmpty())
+ {
+ while(entry)
+ {
+ if(KviQString::equalCI(skipAfter,entry->m_szNick))
+ {
+ entry = entry->m_pNext;
+ break;
+ }
+ entry = entry->m_pNext;
+ }
+ }
+
+ // FIXME: completion should skip my own nick or place it as last entry in the chain (?)
+
+ // if(KviConsole * c = m_pKviWindow->console())
+ // {
+ // if(kvi_strEqualCI(entry->m_szNick.ptr(),c->currentNickName())
+ // }
+
+ // Ok...now the real completion
+ while(entry)
+ {
+ if(entry->m_szNick.length() >= begin.length())
+ {
+ int result = KviQString::cmpCIN(begin,entry->m_szNick,begin.length());
+ if(result == 0)
+ {
+ // This is ok.
+ buffer = entry->m_szNick;
+ if(bAppendMask)
+ {
+ buffer += entry->m_pGlobalData->user();
+ buffer += entry->m_pGlobalData->host();
+ }
+ return true;
+ } else if(result < 0)
+ {
+ // No match...begin is lower than the current entry
+ if(entry->m_iFlags == 0)return false;
+ else {
+ int flags = entry->m_iFlags;
+ // skip the current flag
+ while(entry)
+ {
+ if(entry->m_iFlags != flags)break;
+ entry = entry->m_pNext;
+ }
+ continue;
+ }
+ }
+ }
+ entry = entry->m_pNext;
+ }
+
+ return false;
+}
+
+
+void KviUserListView::insertUserEntry(const QString &nick,KviUserListEntry * e)
+{
+ // Complex insertion task :)
+
+ m_pEntryDict->insert(nick,e);
+ m_iTotalHeight += e->m_iHeight;
+
+ bool bGotTopItem = false;
+
+ int flag = 0;
+ if(e->m_iFlags != 0)
+ {
+ if(e->m_iFlags & KVI_USERFLAG_USEROP)
+ {
+ flag = KVI_USERFLAG_USEROP;
+ m_iUserOpCount++;
+ }
+ if(e->m_iFlags & KVI_USERFLAG_VOICE)
+ {
+ flag = KVI_USERFLAG_VOICE;
+ m_iVoiceCount++;
+ }
+ if(e->m_iFlags & KVI_USERFLAG_HALFOP)
+ {
+ flag = KVI_USERFLAG_HALFOP;
+ m_iHalfOpCount++;
+ }
+ if(e->m_iFlags & KVI_USERFLAG_OP)
+ {
+ flag = KVI_USERFLAG_OP;
+ m_iOpCount++;
+ }
+ if(e->m_iFlags & KVI_USERFLAG_CHANADMIN)
+ {
+ flag = KVI_USERFLAG_CHANADMIN;
+ m_iChanAdminCount++;
+ }
+ if(e->m_iFlags & KVI_USERFLAG_CHANOWNER)
+ {
+ flag = KVI_USERFLAG_CHANOWNER;
+ m_iChanOwnerCount++;
+ }
+ }
+
+
+ if(m_pHeadItem)
+ {
+ KviUserListEntry * entry = m_pHeadItem;
+
+ if(!(e->m_iFlags & KVI_USERFLAG_CHANOWNER))
+ {
+ // the new user is not a channel owner...
+ // skip the channel owners
+ while(entry && (entry->m_iFlags & KVI_USERFLAG_CHANOWNER))
+ {
+ if(entry == m_pTopItem)bGotTopItem = true;
+ entry = entry->m_pNext;
+ }
+
+ if(!(e->m_iFlags & KVI_USERFLAG_CHANADMIN))
+ {
+ // the new user is not a channel admin...
+ // skip chan admins
+ while(entry && (entry->m_iFlags & KVI_USERFLAG_CHANADMIN))
+ {
+ if(entry == m_pTopItem)bGotTopItem = true;
+ entry = entry->m_pNext;
+ }
+
+ // is operator ?
+ if(!(e->m_iFlags & KVI_USERFLAG_OP))
+ {
+ // the new user is not an op...
+ // skip ops
+ while(entry && (entry->m_iFlags & KVI_USERFLAG_OP))
+ {
+ if(entry == m_pTopItem)bGotTopItem = true;
+ entry = entry->m_pNext;
+ }
+
+ // is half oped ?
+ if(!(e->m_iFlags & KVI_USERFLAG_HALFOP))
+ {
+ // nope , skip halfops
+ while(entry && (entry->m_iFlags & KVI_USERFLAG_HALFOP))
+ {
+ if(entry == m_pTopItem)bGotTopItem = true;
+ entry = entry->m_pNext;
+ }
+
+ // is voiced ?
+ if(!(e->m_iFlags & KVI_USERFLAG_VOICE))
+ {
+ // nope , not voiced so skip voiced users
+ while(entry && (entry->m_iFlags & KVI_USERFLAG_VOICE))
+ {
+ if(entry == m_pTopItem)bGotTopItem = true;
+ entry = entry->m_pNext;
+ }
+
+ // is userop'd?
+ if(!(e->m_iFlags & KVI_USERFLAG_USEROP))
+ {
+ // nope , skip userops
+ while(entry && (entry->m_iFlags & KVI_USERFLAG_USEROP))
+ {
+ if(entry == m_pTopItem)bGotTopItem = true;
+ entry = entry->m_pNext;
+ }
+ } // else is userop, ops, halfops, and voiced are skipped
+ } // else it is voiced , ops and halfops are skipped
+ } // else it is halfop , ops are skipped
+ } // else it is op , chan admins are skipped
+ } // else it is chan admin , chan owners are skipped
+ } // else it is chan owner, so nothing to skip: the chan owners are first in the list
+
+ // now strcmp within the current user-flag group...
+ while(entry && (KviQString::cmpCI(entry->m_szNick,e->m_szNick) < 0) &&
+ ((entry->m_iFlags & flag) || (flag == 0)))
+ {
+ if(entry == m_pTopItem)bGotTopItem = true;
+ entry = entry->m_pNext;
+ }
+ if(entry)
+ {
+ // inserting
+ e->m_pNext = entry;
+ e->m_pPrev = entry->m_pPrev;
+ if(e->m_pPrev == 0)m_pHeadItem = e;
+ else e->m_pPrev->m_pNext = e;
+ entry->m_pPrev = e;
+ // need to adjust the item offsets now...
+ // ok... if we're inserting something after
+ // the top item, we move everything down
+ // otherwise we only update the scrollbar values
+ if(!bGotTopItem)
+ {
+ // Inserting BEFORE the top item
+ if((e == m_pHeadItem) && (m_pTopItem == e->m_pNext) && (m_pViewArea->m_iTopItemOffset == 0))
+ {
+ // special case...the top item is the head one
+ // and it has zero offset...change the top item too
+ m_pTopItem = e;
+ triggerUpdate();
+ } else {
+ // invisible insertion
+ m_pViewArea->m_bIgnoreScrollBar = true;
+ m_pViewArea->m_iLastScrollBarVal += e->m_iHeight;
+ updateScrollBarRange();
+ m_pViewArea->m_pScrollBar->setValue(m_pViewArea->m_iLastScrollBarVal);
+ m_pViewArea->m_bIgnoreScrollBar = false;
+ updateUsersLabel();
+ }
+ } else {
+ triggerUpdate();
+ }
+ } else {
+ // appending to the end (may be visible)
+ m_pTailItem->m_pNext = e;
+ e->m_pNext = 0;
+ e->m_pPrev = m_pTailItem;
+ m_pTailItem = e;
+ triggerUpdate();
+ }
+ } else {
+ // There were no items (is rather visible)
+ m_pHeadItem = e;
+ m_pTailItem = e;
+ m_pTopItem = e;
+ e->m_pNext = 0;
+ e->m_pPrev = 0;
+ triggerUpdate();
+ }
+ if(e->m_bSelected)
+ {
+ m_iSelectedCount++;
+ if(m_iSelectedCount == 1)g_pFrame->childWindowSelectionStateChange(m_pKviWindow,true);
+ }
+}
+
+KviUserListEntry * KviUserListView::join(const QString &nick,const QString &user,
+ const QString &host,int iFlags)
+{
+ // Ok..an user joins the channel
+ KviUserListEntry * it = m_pEntryDict->find(nick);
+ if(it == 0)
+ {
+ // add an entry to the global dict
+ KviIrcUserEntry * pGlobalData = m_pIrcUserDataBase->insertUser(nick,user,host);
+ // calculate the flags and update the counters
+ it = new KviUserListEntry(this,nick,pGlobalData,iFlags,(user == QString::null));
+ insertUserEntry(nick,it);
+ } else {
+// if(!host.isEmpty()) - it can be UHNAMES with host or NAMEX(X) w/o it
+// {
+ // Ok...the user was already on...
+ // Probably this is a NAMES(X) reply , and the user IS_ME
+ // (already joined after the JOIN message)
+ if(iFlags != it->m_iFlags)
+ {
+//// FIXME: #warning "Maybe say to the channel that we're oped : and the op is guessed from the names reply"
+ if((iFlags & KVI_USERFLAG_CHANOWNER) != (it->m_iFlags & KVI_USERFLAG_CHANOWNER))setChanOwner(nick,iFlags & KVI_USERFLAG_CHANOWNER);
+ if((iFlags & KVI_USERFLAG_CHANADMIN) != (it->m_iFlags & KVI_USERFLAG_CHANADMIN))setChanAdmin(nick,iFlags & KVI_USERFLAG_CHANADMIN);
+ if((iFlags & KVI_USERFLAG_OP) != (it->m_iFlags & KVI_USERFLAG_OP))op(nick,iFlags & KVI_USERFLAG_OP);
+ if((iFlags & KVI_USERFLAG_HALFOP) != (it->m_iFlags & KVI_USERFLAG_HALFOP))halfop(nick,iFlags & KVI_USERFLAG_HALFOP);
+ if((iFlags & KVI_USERFLAG_VOICE) != (it->m_iFlags & KVI_USERFLAG_VOICE))voice(nick,iFlags & KVI_USERFLAG_VOICE);
+ if((iFlags & KVI_USERFLAG_USEROP) != (it->m_iFlags & KVI_USERFLAG_USEROP))userop(nick,iFlags & KVI_USERFLAG_USEROP);
+ }
+// }
+ }
+ return it;
+}
+
+void KviUserListView::triggerUpdate()
+{
+ // This stuff is useful on joins only
+ if(m_pViewArea->isUpdatesEnabled())
+ {
+ //m_pViewArea->m_pScrollBar->setRange(0,m_iTotalHeight);
+ updateScrollBarRange();
+ m_pViewArea->update();
+ updateUsersLabel();
+ }
+}
+
+bool KviUserListView::avatarChanged(const QString &nick)
+{
+ KviUserListEntry * it = m_pEntryDict->find(nick);
+ if(it)
+ {
+ int oldH = it->m_iHeight;
+ m_iTotalHeight -= it->m_iHeight;
+ it->recalcSize();
+ m_iTotalHeight += it->m_iHeight;
+ // if this was "over" the top item , we must adjust the scrollbar value
+ // otherwise scroll everything down
+ KviUserListEntry * e = m_pHeadItem;
+ bool bGotTopItem = false;
+ while(e != it)
+ {
+ if(e == m_pTopItem)
+ {
+ bGotTopItem = true;
+ e = it;
+ } else e = e->m_pNext;
+ }
+ if(!bGotTopItem && (m_pTopItem != it))
+ {
+ // we're "over" the top item , so over the
+ // upper side of the view...adjust the scroll bar value
+ int hDiff = it->m_iHeight - oldH;
+ m_pViewArea->m_iLastScrollBarVal += hDiff;
+ m_pViewArea->m_bIgnoreScrollBar = true;
+// m_pViewArea->m_pScrollBar->setRange(0,m_iTotalHeight);
+ updateScrollBarRange();
+ m_pViewArea->m_pScrollBar->setValue(m_pViewArea->m_iLastScrollBarVal);
+ m_pViewArea->m_bIgnoreScrollBar = false;
+ } else {
+ // the item may be visible!
+ // the scroll bar should take care of the case
+ // in that the current value runs out of the allowed
+ // range.... it should set the value to a good one
+ // and emit the signal
+ updateScrollBarRange();
+// m_pViewArea->m_pScrollBar->setRange(0,m_iTotalHeight);
+ m_pViewArea->update();
+ }
+ return true;
+ }
+ return false;
+}
+
+
+bool KviUserListView::userActionVerifyMask(const QString &nick,const QString &user,const QString &host,int actionTemperature,QString &oldUser,QString &oldHost)
+{
+ // This is called when an user "acts" in some visible way
+ // on the channel, so we can keep track of his channeel
+ // idle time.
+ // This particular function version of userAction
+ // will return false if there was a user or hostname
+ // change (unless they were not known at all)
+ // This will also update the username and hostname
+ // if needed.
+ KviUserListEntry * it = m_pEntryDict->find(QString(nick));
+ if(it)
+ {
+ it->m_lastActionTime = kvi_unixTime();
+ bool bChanged = false;
+ if(!(host.isEmpty() || (KviQString::equalCS(host,"*"))))
+ {
+ if(!KviQString::equalCI(it->m_pGlobalData->host(),host))
+ {
+ if(!(it->m_pGlobalData->host().isEmpty() || KviQString::equalCS(it->m_pGlobalData->host(),"*")))
+ {
+ oldHost = it->m_pGlobalData->host();
+ bChanged = true;
+ }
+ it->m_pGlobalData->setHost(host);
+ }
+ }
+ if(!(user.isEmpty() || (KviQString::equalCS(user,"*"))))
+ {
+ if(!KviQString::equalCI(it->m_pGlobalData->user(),user))
+ {
+ if(!(it->m_pGlobalData->user().isEmpty() || KviQString::equalCS(it->m_pGlobalData->user(),"*")))
+ {
+ oldUser = it->m_pGlobalData->user();
+ bChanged = true;
+ }
+ it->m_pGlobalData->setUser(user);
+ }
+ }
+ it->m_iTemperature += actionTemperature;
+ // Don't allow it to grow too much
+ if(it->m_iTemperature > 300)it->m_iTemperature = 300;
+ else if(it->m_iTemperature < -300)it->m_iTemperature = -300;
+ if(itemVisible(it))triggerUpdate();
+ return !bChanged;
+ }
+ return true; // no such nick so no change
+}
+
+
+void KviUserListView::userAction(const QString &nick,const QString &user,const QString &host,int actionTemperature)
+{
+ // This is called when an user "acts" in some visible way
+ // on the channel, so we can keep track of his channeel
+ // idle time. This will also update the username and hostname
+ // if needed.
+ KviUserListEntry * it = m_pEntryDict->find(QString(nick));
+ if(it)
+ {
+ it->m_lastActionTime = kvi_unixTime();
+ if(!(host.isEmpty() || (KviQString::equalCS(host,"*"))))
+ it->m_pGlobalData->setHost(host);
+ if(!(user.isEmpty() || (KviQString::equalCS(user,"*"))))
+ it->m_pGlobalData->setUser(user);
+ it->m_iTemperature += actionTemperature;
+ // Don't allow it to grow too much
+ if(it->m_iTemperature > 300)it->m_iTemperature = 300;
+ else if(it->m_iTemperature < -300)it->m_iTemperature = -300;
+ if(itemVisible(it))triggerUpdate();
+ }
+}
+
+
+void KviUserListView::userAction(KviIrcMask *user,int actionTemperature)
+{
+ // This is called when an user "acts" in some visible way
+ // on the channel, so we can keep track of his channeel
+ // idle time. This will also update the username and hostname
+ // if needed.
+ KviUserListEntry * it = m_pEntryDict->find(QString(user->nick()));
+ if(it)
+ {
+ it->m_lastActionTime = kvi_unixTime();
+ if(user->hasUser())it->m_pGlobalData->setUser(user->user());
+ if(user->hasHost())it->m_pGlobalData->setHost(user->host());
+ it->m_iTemperature += actionTemperature;
+ // Don't allow it to grow too much
+ if(it->m_iTemperature > 300)it->m_iTemperature = 300;
+ else if(it->m_iTemperature < -300)it->m_iTemperature = -300;
+ if(itemVisible(it))triggerUpdate();
+ }
+}
+
+void KviUserListView::userAction(const QString &nick,int actionTemperature)
+{
+ // This is called when an user "acts" in some visible way
+ // on the channel, so we can keep track of his channeel
+ // idle time. This will also update the username and hostname
+ // if needed.
+ KviUserListEntry * it = m_pEntryDict->find(nick);
+ if(it)
+ {
+ it->m_lastActionTime = kvi_unixTime();
+ it->m_iTemperature += actionTemperature;
+ if(it->m_iTemperature > 300)it->m_iTemperature = 300;
+ else if(it->m_iTemperature < -300)it->m_iTemperature = -300;
+ if(itemVisible(it))triggerUpdate();
+ }
+}
+
+kvi_time_t KviUserListView::getUserJoinTime(const QString &szNick)
+{
+ KviUserListEntry * e = m_pEntryDict->find(szNick);
+ if(!e)return (kvi_time_t)0;
+ return e->m_joinTime;
+}
+
+kvi_time_t KviUserListView::getUserLastActionTime(const QString &szNick)
+{
+ KviUserListEntry * e = m_pEntryDict->find(szNick);
+ if(!e)return (kvi_time_t)0;
+ return e->m_lastActionTime;
+}
+
+
+int KviUserListView::getUserModeLevel(const QString &szNick)
+{
+ KviUserListEntry * e = m_pEntryDict->find(szNick);
+ if(!e)return 0;
+ if(e->m_iFlags & KVI_USERFLAG_MODEMASK)
+ {
+ if(e->m_iFlags & KVI_USERFLAG_CHANOWNER)return 60;
+ if(e->m_iFlags & KVI_USERFLAG_CHANADMIN)return 50;
+ if(e->m_iFlags & KVI_USERFLAG_OP)return 40;
+ if(e->m_iFlags & KVI_USERFLAG_HALFOP)return 30;
+ if(e->m_iFlags & KVI_USERFLAG_VOICE)return 20;
+ if(e->m_iFlags & KVI_USERFLAG_USEROP)return 10;
+ }
+ return 0;
+}
+
+char KviUserListView::getUserFlag(KviUserListEntry * e)
+{
+ if(!e)return 0;
+ return (char)m_pKviWindow->connection()->serverInfo()->modePrefixChar(e->m_iFlags).unicode();
+}
+
+void KviUserListView::prependUserFlag(const QString &nick,QString &buffer)
+{
+ char uFlag = getUserFlag(nick);
+ if(uFlag)buffer.prepend(uFlag);
+}
+
+int KviUserListView::flags(const QString &nick)
+{
+ KviUserListEntry * it = m_pEntryDict->find(nick);
+ return it ? it->m_iFlags : 0;
+}
+
+#define SET_FLAG_FUNC(__funcname,__flag) \
+ bool KviUserListView::__funcname(const QString &nick,bool bYes) \
+ { \
+ KviUserListEntry * it = m_pEntryDict->find(nick); \
+ if(!it)return false; \
+ m_pEntryDict->setAutoDelete(false); \
+ partInternal(nick,false); \
+ m_pEntryDict->setAutoDelete(true); \
+ if(bYes) \
+ { \
+ if(!(it->m_iFlags & __flag))it->m_iFlags |= __flag; \
+ } else { \
+ if(it->m_iFlags & __flag)it->m_iFlags &= ~__flag; \
+ } \
+ updateScrollBarRange(); \
+ insertUserEntry(nick,it); \
+ m_pViewArea->update(); \
+ return true; \
+ }
+
+SET_FLAG_FUNC(setChanOwner,KVI_USERFLAG_CHANOWNER)
+SET_FLAG_FUNC(setChanAdmin,KVI_USERFLAG_CHANADMIN)
+SET_FLAG_FUNC(op,KVI_USERFLAG_OP)
+SET_FLAG_FUNC(halfop,KVI_USERFLAG_HALFOP)
+SET_FLAG_FUNC(userop,KVI_USERFLAG_USEROP)
+SET_FLAG_FUNC(voice,KVI_USERFLAG_VOICE)
+
+#define GET_FLAG_FUNC(__funcname,__flag) \
+ bool KviUserListView::__funcname(const QString &nick,bool bAtLeast) \
+ { \
+ KviUserListEntry * it = m_pEntryDict->find(nick); \
+ return it ? (bAtLeast ? (it->m_iFlags >= __flag) : (it->m_iFlags & __flag)) : false; \
+ }
+
+GET_FLAG_FUNC(isChanOwner,KVI_USERFLAG_CHANOWNER)
+GET_FLAG_FUNC(isChanAdmin,KVI_USERFLAG_CHANADMIN)
+GET_FLAG_FUNC(isOp,KVI_USERFLAG_OP)
+GET_FLAG_FUNC(isVoice,KVI_USERFLAG_VOICE)
+GET_FLAG_FUNC(isHalfOp,KVI_USERFLAG_HALFOP)
+GET_FLAG_FUNC(isUserOp,KVI_USERFLAG_USEROP)
+
+
+QString * KviUserListView::firstSelectedNickname()
+{
+ m_pIterator = m_pHeadItem;
+ while(m_pIterator)
+ {
+ if(m_pIterator->m_bSelected)
+ {
+ QString * s = &(m_pIterator->m_szNick);
+ m_pIterator = m_pIterator->m_pNext;
+ return s;
+ }
+ m_pIterator = m_pIterator->m_pNext;
+ }
+ return 0;
+}
+
+QString * KviUserListView::nextSelectedNickname()
+{
+ while(m_pIterator)
+ {
+ if(m_pIterator->m_bSelected)
+ {
+ QString * s = &(m_pIterator->m_szNick);
+ m_pIterator = m_pIterator->m_pNext;
+ return s;
+ }
+ m_pIterator = m_pIterator->m_pNext;
+ }
+ return 0;
+}
+
+void KviUserListView::appendSelectedNicknames(QString &buffer)
+{
+ KviUserListEntry * aux = m_pHeadItem;
+ bool bFirst = true;
+ while(aux)
+ {
+ if(aux->m_bSelected)
+ {
+ if(!bFirst)buffer.append(',');
+ else bFirst = false;
+ buffer.append(aux->m_szNick);
+ }
+ aux = aux->m_pNext;
+ }
+}
+
+void KviUserListView::select(const QString& nick){
+ KviPointerHashTableIterator<QString,KviUserListEntry> it(*m_pEntryDict);
+ while(it.current())
+ {
+ ((KviUserListEntry *)it.current())->m_bSelected = false;
+ ++it;
+ }
+
+ KviUserListEntry * entry = m_pEntryDict->find(nick);
+ if(entry)
+ {
+ entry->m_bSelected = true;
+ m_iSelectedCount = 1;
+ } else {
+ m_iSelectedCount = 0;
+ }
+ g_pFrame->childWindowSelectionStateChange(m_pKviWindow,true);
+ m_pViewArea->update();
+}
+
+bool KviUserListView::partInternal(const QString &nick,bool bRemove)
+{
+ KviUserListEntry * it = m_pEntryDict->find(nick);
+ if(it)
+ {
+ // so, first of all..check if this item is over, or below the top item
+ KviUserListEntry * e = m_pHeadItem;
+ bool bGotTopItem = false;
+ while(e != it)
+ {
+ if(e == m_pTopItem)
+ {
+ bGotTopItem = true;
+ e = it;
+ } else e = e->m_pNext;
+ }
+ if(bRemove)m_pIrcUserDataBase->removeUser(nick,it->m_pGlobalData);
+
+ // now just remove it
+ if(it->m_iFlags & KVI_USERFLAG_OP)m_iOpCount--;
+ if(it->m_iFlags & KVI_USERFLAG_VOICE)m_iVoiceCount--;
+ if(it->m_iFlags & KVI_USERFLAG_HALFOP)m_iHalfOpCount--;
+ if(it->m_iFlags & KVI_USERFLAG_CHANADMIN)m_iChanAdminCount--;
+ if(it->m_iFlags & KVI_USERFLAG_CHANOWNER)m_iChanOwnerCount--;
+ if(it->m_iFlags & KVI_USERFLAG_USEROP)m_iUserOpCount--;
+ if(it->m_bSelected)
+ {
+ m_iSelectedCount--;
+ if(m_iSelectedCount == 0)g_pFrame->childWindowSelectionStateChange(m_pKviWindow,false);
+ }
+ if(it->m_pPrev)it->m_pPrev->m_pNext = it->m_pNext;
+ if(it->m_pNext)it->m_pNext->m_pPrev = it->m_pPrev;
+ if(m_pTopItem == it)
+ {
+ bGotTopItem = true; //!!! the previous while() does not handle it!
+ m_pTopItem = it->m_pNext;
+ if(m_pTopItem == 0)m_pTopItem = it->m_pPrev;
+ }
+ if(it == m_pHeadItem)m_pHeadItem = it->m_pNext;
+ if(it == m_pTailItem)m_pTailItem = it->m_pPrev;
+ m_iTotalHeight -= it->m_iHeight;
+
+ int iHeight = it->m_iHeight;
+
+ m_pEntryDict->remove(nick);
+
+ if(bGotTopItem)
+ {
+ // removing after (or exactly) the top item, may be visible
+ if(bRemove)triggerUpdate();
+ } else {
+ // removing over (before) the top item...not visible
+ m_pViewArea->m_bIgnoreScrollBar = true;
+ m_pViewArea->m_iLastScrollBarVal -= iHeight;
+ m_pViewArea->m_pScrollBar->setValue(m_pViewArea->m_iLastScrollBarVal);
+// m_pViewArea->m_pScrollBar->setRange(0,m_iTotalHeight);
+ updateScrollBarRange();
+ m_pViewArea->m_bIgnoreScrollBar = false;
+ if(bRemove)updateUsersLabel();
+ }
+
+ return true;
+ }
+ return false;
+}
+
+bool KviUserListView::nickChange(const QString &oldNick,const QString &newNick)
+{
+ KviUserListEntry * it = m_pEntryDict->find(oldNick);
+ if(it)
+ {
+ QString user = it->m_pGlobalData->user();
+ QString host = it->m_pGlobalData->host();
+ int iFlags = it->m_iFlags;
+ kvi_time_t joint = it->m_joinTime;
+ bool bSelect = it->m_bSelected;
+ KviAvatar * av = it->m_pGlobalData->forgetAvatar();
+ KviIrcUserEntry::Gender gender = it->m_pGlobalData->gender();
+ bool bBot = it->m_pGlobalData->isBot();
+ part(oldNick);
+ __range_invalid(m_pEntryDict->find(oldNick));
+ it = join(newNick,user,host,iFlags);
+ it->m_pGlobalData->setGender(gender);
+ it->m_pGlobalData->setBot(bBot);
+ it->m_joinTime = joint;
+ it->m_lastActionTime = kvi_unixTime();
+ it->m_bSelected = bSelect;
+ it->m_iTemperature += KVI_USERACTION_NICK;
+ if(av)
+ {
+ it->m_pGlobalData->setAvatar(av);
+ avatarChanged(newNick);
+ }
+ return true;
+ }
+ return false;
+}
+
+
+void KviUserListView::updateUsersLabel()
+{
+ if(!KVI_OPTION_BOOL(KviOption_boolDisableUserListLabel))//G&N 2005
+ {
+ KviStr tmp;
+ tmp.sprintf("<nobr><b>[%u]</b>",m_pEntryDict->count());
+ if(m_iChanOwnerCount)tmp.append(KviStr::Format," q:%d",m_iChanOwnerCount);
+ if(m_iChanAdminCount)tmp.append(KviStr::Format," a:%d",m_iChanAdminCount);
+ if(m_iOpCount)tmp.append(KviStr::Format," o:%d",m_iOpCount);
+ if(m_iHalfOpCount)tmp.append(KviStr::Format," h:%d",m_iHalfOpCount);
+ if(m_iVoiceCount)tmp.append(KviStr::Format," v:%d",m_iVoiceCount);
+ if(m_iUserOpCount)tmp.append(KviStr::Format," u:%d",m_iUserOpCount);
+ if(m_ibEntries)tmp.append(KviStr::Format," b:%d",m_ibEntries);
+ if(m_ieEntries)tmp.append(KviStr::Format," e:%d",m_ieEntries);
+ if(m_iIEntries)tmp.append(KviStr::Format," I:%d",m_iIEntries);
+ tmp.append("</nobr>");
+ m_pUsersLabel->setText(tmp.ptr());
+ }
+}
+
+// FIXME: this could be done really better
+void KviUserListView::partAllButOne(const QString &whoNot)
+{
+ QStringList ll;
+ KviPointerHashTableIterator<QString,KviUserListEntry> it(*m_pEntryDict);
+ while(it.current())
+ {
+ if(!KviQString::equalCI(whoNot,it.currentKey()))
+ ll.append(it.currentKey());
+ ++it;
+ }
+ for(QStringList::Iterator it2 = ll.begin();it2 != ll.end();it2++)
+ {
+ part(*it2);
+ }
+}
+
+void KviUserListView::removeAllEntries()
+{
+ KviPointerHashTableIterator<QString,KviUserListEntry> it(*m_pEntryDict);
+ while(it.current())
+ {
+ m_pIrcUserDataBase->removeUser(it.currentKey(),
+ ((KviUserListEntry *)it.current())->m_pGlobalData);
+ ++it;
+ }
+ m_pEntryDict->clear();
+ m_pHeadItem = 0;
+ m_pTopItem = 0;
+ m_iVoiceCount = 0;
+ m_iHalfOpCount = 0;
+ m_iChanAdminCount = 0;
+ m_iChanOwnerCount = 0;
+ m_iOpCount = 0;
+ m_iUserOpCount = 0;
+ if(m_iSelectedCount != 0)
+ {
+ m_iSelectedCount = 0;
+ g_pFrame->childWindowSelectionStateChange(m_pKviWindow,false);
+ }
+ m_pViewArea->m_iTopItemOffset = 0;
+ m_pViewArea->m_iLastScrollBarVal = 0;
+ m_pViewArea->m_bIgnoreScrollBar = true;
+ m_pViewArea->m_pScrollBar->setValue(0);
+ m_iTotalHeight = 0;
+ updateScrollBarRange();
+ m_pViewArea->m_bIgnoreScrollBar = false; // gfgf
+}
+
+void KviUserListView::partAll()
+{
+ removeAllEntries();
+ triggerUpdate();
+}
+
+void KviUserListView::resizeEvent(QResizeEvent *)
+{
+ int hght;
+ if(!KVI_OPTION_BOOL(KviOption_boolDisableUserListLabel))//G&N 2005
+ {
+ hght = m_pUsersLabel->sizeHint().height();
+ if(hght < 16)hght = 16; // at least
+ m_pUsersLabel->setGeometry(0,0,width(),hght);
+ }
+ else
+ {
+ hght =0;
+ }
+
+ m_pViewArea->setGeometry(0,hght,width(),height() - hght);
+
+ updateScrollBarRange();
+}
+
+bool KviUserListView::itemVisible(KviUserListEntry * e)
+{
+ KviUserListEntry * le = m_pTopItem;
+ int curTop = KVI_USERLIST_BORDER_WIDTH - m_pViewArea->m_iTopItemOffset;
+ int hght = height();
+ while(le && (curTop < hght))
+ {
+ if(le == e)return true;
+ curTop += le->m_iHeight;
+ le = le->m_pNext;
+ }
+ return false;
+}
+
+KviUserListEntry * KviUserListView::itemAt(const QPoint &pnt,QRect * rct)
+{
+ if(!m_pTopItem)return 0;
+ if(pnt.y() < 0)return 0;
+ int curTop = KVI_USERLIST_BORDER_WIDTH - m_pViewArea->m_iTopItemOffset;
+ KviUserListEntry * e = m_pTopItem;
+ int curBottom = 0;
+ while(e && (curTop <= m_pViewArea->height()))
+ {
+ curBottom = curTop + e->m_iHeight;
+ if((pnt.y() >= curTop) && (pnt.y() < curBottom))
+ {
+ if(rct)
+ {
+ rct->setX(0);
+ rct->setY(curTop);
+ rct->setWidth(m_pViewArea->width());
+ rct->setHeight(e->m_iHeight);
+ }
+ return e;
+ }
+ curTop = curBottom;
+ e = e->m_pNext;
+ }
+ return 0;
+}
+
+
+
+void KviUserListView::userStats(KviUserListViewUserStats * s)
+{
+ s->uTotal = m_pEntryDict->count();
+ s->uHot = 0;
+ s->uHotOp = 0;
+ s->uActive = 0;
+ s->uActiveOp = 0;
+ s->uChanAdmin = 0;
+ s->uChanOwner = 0;
+ s->iAvgTemperature = 0;
+ s->uOp = 0;
+ s->uVoiced = 0;
+ s->uHalfOp = 0;
+ s->uUserOp = 0;
+
+ KviUserListEntry * e = m_pHeadItem;
+
+ kvi_time_t curTime = kvi_unixTime();
+
+ while(e)
+ {
+ if(e->m_lastActionTime)
+ {
+ unsigned int uTimeDiff = (((unsigned int)(curTime - e->m_lastActionTime)) >> 6);
+ if(uTimeDiff < 10)
+ {
+ s->uActive++; // the user was alive in the last ~16 mins
+ if(e->m_iFlags & (KVI_USERFLAG_OP | KVI_USERFLAG_CHANADMIN | KVI_USERFLAG_CHANOWNER))
+ {
+ s->uActiveOp++;
+ if(e->m_iTemperature > 0)
+ {
+ s->uHot++;
+ s->uHotOp++;
+ }
+ } else {
+ if(e->m_iTemperature > 0)s->uHot++;
+ }
+ s->iAvgTemperature += e->m_iTemperature;
+ }
+ }
+ if(e->m_iFlags & KVI_USERFLAG_CHANOWNER)s->uChanOwner++;
+ else {
+ if(e->m_iFlags & KVI_USERFLAG_CHANADMIN)s->uChanAdmin++;
+ else {
+ if(e->m_iFlags & KVI_USERFLAG_OP)s->uOp++;
+ else {
+ if(e->m_iFlags & KVI_USERFLAG_HALFOP)s->uHalfOp++;
+ else {
+ if(e->m_iFlags & KVI_USERFLAG_VOICE)s->uVoiced++;
+ else {
+ if(e->m_iFlags & KVI_USERFLAG_USEROP)s->uUserOp++;
+ }
+ }
+ }
+ }
+ }
+ e = e->m_pNext;
+ }
+
+ if(s->uActive > 0)s->iAvgTemperature /= ((int)s->uActive);
+}
+
+
+void KviUserListView::maybeTip(KviUserListToolTip * tip,const QPoint &pnt)
+{
+ if(!KVI_OPTION_BOOL(KviOption_boolShowUserListViewToolTips))return;
+ QRect itRect;
+ KviUserListEntry * it = (KviUserListEntry *)itemAt(pnt,&itRect);
+ if(it)
+ {
+ if(m_pKviWindow->console())
+ {
+ QString buffer;
+ m_pKviWindow->console()->getUserTipText(it->m_szNick,it->m_pGlobalData,buffer);
+
+ buffer += "<table width=\"100%\">";
+
+ if(it->m_joinTime != 0)
+ {
+ QDateTime dt;
+ dt.setTime_t(it->m_joinTime);
+ buffer += "<tr><td bgcolor=\"#F0F0F0\"><nobr>";
+ buffer += __tr2qs("Joined on <b>%1</b>").arg(dt.toString());
+ buffer += "</nobr></td></tr>";
+ }
+
+ if(it->m_lastActionTime != 0)
+ {
+ int secs = kvi_unixTime() - it->m_lastActionTime;
+ int mins = secs / 60;
+ secs = secs % 60;
+ int hors = mins / 60;
+ mins = mins % 60;
+ buffer += "<tr><td bgcolor=\"#F0F0F0\"><nobr>";
+ buffer += __tr2qs("Quiet for <b>%1h %2m %3s</b>").arg(hors).arg(mins).arg(secs);
+ buffer += "</nobr></td></tr>";
+ }
+ buffer += "</table>";
+
+ tip->doTip(itRect,buffer);
+ }
+ }
+}
+
+///////////////////////////////////////////////////////////////
+
+KviUserListViewArea::KviUserListViewArea(KviUserListView * par)
+: QWidget(par)
+{
+ m_pListView = par;
+#ifdef COMPILE_USE_QT4
+ setAutoFillBackground(false);
+#else
+ setBackgroundMode(QWidget::NoBackground);
+#endif
+#ifdef COMPILE_USE_QT4
+ m_pScrollBar = new QScrollBar(Qt::Vertical,this,"scrollbar");
+#else
+ m_pScrollBar = new QScrollBar(QScrollBar::Vertical,this,"scrollbar");
+#endif
+ m_pScrollBar->setRange(0,0);
+ m_pScrollBar->setValue(0);
+ connect(m_pScrollBar,SIGNAL(valueChanged(int)),this,SLOT(scrollBarMoved(int)));
+ m_pScrollBar->setPageStep(height());
+ m_pScrollBar->setLineStep(m_pListView->m_iFontHeight);
+ m_iLastScrollBarVal = 0;
+ m_iTopItemOffset = 0;
+ m_bIgnoreScrollBar = false;
+ m_pLastEntryUnderMouse = 0;
+}
+
+KviUserListViewArea::~KviUserListViewArea()
+{
+}
+
+void KviUserListViewArea::scrollBarMoved(int newVal)
+{
+ if(m_bIgnoreScrollBar)return;
+ int diff = newVal - m_iLastScrollBarVal;
+ if(m_pListView->m_pTopItem)
+ {
+ while(diff > 0)
+ {
+ int nextH = (m_pListView->m_pTopItem->m_iHeight - m_iTopItemOffset);
+ if(diff >= nextH)
+ {
+ // the diff is greater than the top item visible part
+ diff -= nextH;
+ if(m_pListView->m_pTopItem->m_pNext)
+ {
+ // There is a next item (offset to 0)
+ m_pListView->m_pTopItem = m_pListView->m_pTopItem->m_pNext;
+ m_iTopItemOffset = 0;
+ } else {
+ // No next item (rather a bug) (offset to the top item size)
+ m_iTopItemOffset = m_pListView->m_pTopItem->m_iHeight;
+ diff = 0;
+ }
+ } else {
+ // just offset the top item
+ m_iTopItemOffset += diff;
+ diff = 0;
+ }
+ }
+ while(diff < 0)
+ {
+ if((-diff) <= m_iTopItemOffset)
+ {
+ // just move the top item
+ m_iTopItemOffset += diff;
+ diff = 0;
+ } else {
+ diff += m_iTopItemOffset;
+ if(m_pListView->m_pTopItem->m_pPrev)
+ {
+ // There is a prev item (offset to 0)
+ m_pListView->m_pTopItem = m_pListView->m_pTopItem->m_pPrev;
+ m_iTopItemOffset = m_pListView->m_pTopItem->m_iHeight;
+ } else {
+ // No prev item (rather a bug) (offset to the top item size)
+ m_iTopItemOffset = 0;
+ diff = 0;
+ }
+ }
+ }
+ }
+ m_iLastScrollBarVal = newVal;
+ update();
+
+}
+
+void KviUserListViewArea::paintEvent(QPaintEvent *ev)
+{
+ // update the scroll bar
+
+ if(!isVisible())return;
+
+ // if the mdiManager is in SDI mode
+ // and this window is attacched but is not the toplevel one
+ // then it is hidden completely behind the other windows
+ // and we can avoid to paint it :)
+ if(g_pFrame->mdiManager()->isInSDIMode() &&
+ (m_pListView->window()->mdiParent() != g_pFrame->mdiManager()->topChild()) &&
+ (m_pListView->window()->mdiParent()))
+ {
+ return; // totally hidden behind other windows
+ }
+
+ int wdth = width() - m_pScrollBar->width();
+
+ QRect r = ev->rect();
+ if(r.right() > wdth)r.setRight(wdth);
+
+ //debug("PAINT EVENT %d,%d,%d,%d",r.left(),r.top(),r.width(),r.height());
+
+ KviDoubleBuffer db(width(),height());
+ QPixmap * pMemBuffer = db.pixmap();
+
+ QPainter p(pMemBuffer);
+ SET_ANTI_ALIASING(p);
+ p.setFont(KVI_OPTION_FONT(KviOption_fontUserListView));
+
+#ifdef COMPILE_USE_QT4
+ QFontMetrics fm(p.fontMetrics());
+#endif
+
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ if(g_pShadedChildGlobalDesktopBackground)
+ {
+ QPoint pnt = mapToGlobal(QPoint(r.left(),r.top()));
+ p.drawTiledPixmap(r.left(),r.top(),r.width(),r.height(),*g_pShadedChildGlobalDesktopBackground,pnt.x(),pnt.y());
+ } else {
+#endif
+ QPixmap *pix = KVI_OPTION_PIXMAP(KviOption_pixmapUserListViewBackground).pixmap();
+ p.fillRect(r.left(),r.top(),r.width(),r.height(),KVI_OPTION_COLOR(KviOption_colorUserListViewBackground));
+ if(pix)
+ KviPixmapUtils::drawPixmapWithPainter(&p,pix,KVI_OPTION_UINT(KviOption_uintUserListPixmapAlign),r,width(),height());
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ }
+#endif
+
+ KviUserListEntry * e = m_pListView->m_pTopItem;
+
+ int theY = KVI_USERLIST_BORDER_WIDTH - m_iTopItemOffset;
+
+ kvi_time_t curTime = kvi_unixTime();
+
+ bool bShowIcons = KVI_OPTION_BOOL(KviOption_boolShowUserChannelIcons);
+ bool bShowState = KVI_OPTION_BOOL(KviOption_boolShowUserChannelState);
+ bool bShowGender = KVI_OPTION_BOOL(KviOption_boolDrawGenderIcons);
+
+ while(e && theY <= r.bottom())
+ {
+ int bottom = theY + e->m_iHeight;
+ // theY is our top line
+ // theX is our left corner
+ // bottom is our bottom line
+ // wdth is the width of the whole widget
+
+ if(bottom >= r.top())
+ {
+ QColor * pClrFore = 0;
+ bool bColorAllocated=0; // FIXME: bool is true or false
+ if(e->m_bSelected)
+ {
+ p.fillRect(0,theY,wdth,e->m_iHeight,KVI_OPTION_COLOR(KviOption_colorUserListViewSelectionBackground));
+ pClrFore = &(KVI_OPTION_COLOR(KviOption_colorUserListViewSelectionForeground));
+ } else if(KVI_OPTION_BOOL(KviOption_boolUseDifferentColorForOwnNick) && m_pListView->m_pKviWindow->connection())
+ {
+ if(e->m_szNick==m_pListView->m_pKviWindow->connection()->currentNickName())
+ pClrFore = &(KVI_OPTION_COLOR(KviOption_colorUserListViewOwnForeground));
+ }
+
+ if(!pClrFore){
+ // FIXME:
+ //
+ // this is slow... VERY slow when one has a lot of registered users.
+ // (this is NOT a simple lookup in the user db... it is a mask match)
+ // if we REALLY need to use custom colors for regged users then
+ // they should be updated ONCE and stored (cached) in the KviUserListEntry structure
+ //
+ if(m_pListView->m_pKviWindow->connection()->userDataBase()->haveCustomColor(e->m_szNick))
+ {
+ pClrFore = m_pListView->m_pKviWindow->connection()->userDataBase()->customColor(e->m_szNick);
+ }
+ if(!pClrFore)
+ {
+ if(e->m_iFlags == 0)
+ {
+ pClrFore = &(KVI_OPTION_COLOR(KviOption_colorUserListViewNormalForeground));
+ } else {
+ pClrFore = &(KVI_OPTION_COLOR((e->m_iFlags & KVI_USERFLAG_CHANOWNER) ? \
+ KviOption_colorUserListViewChanOwnerForeground : ((e->m_iFlags & KVI_USERFLAG_CHANADMIN) ? \
+ KviOption_colorUserListViewChanAdminForeground : ((e->m_iFlags & KVI_USERFLAG_OP) ? \
+ KviOption_colorUserListViewOpForeground : ((e->m_iFlags & KVI_USERFLAG_HALFOP) ? \
+ KviOption_colorUserListViewHalfOpForeground : ((e->m_iFlags & KVI_USERFLAG_VOICE) ? \
+ KviOption_colorUserListViewVoiceForeground : KviOption_colorUserListViewUserOpForeground))))));
+ }
+ }
+ }
+
+ int theX = KVI_USERLIST_BORDER_WIDTH + 1;
+
+ int iAvatarAndTextX = theX;
+
+ if(bShowGender)iAvatarAndTextX += 11;
+ if(bShowIcons)iAvatarAndTextX += 18;
+ if(bShowState)iAvatarAndTextX += 11;
+
+ if(KVI_OPTION_BOOL(KviOption_boolUserListViewDrawGrid))
+ {
+ // the grid
+ switch(KVI_OPTION_UINT(KviOption_uintUserListViewGridType))
+ {
+ case KVI_USERLISTVIEW_GRIDTYPE_PLAINGRID:
+ case KVI_USERLISTVIEW_GRIDTYPE_DOTGRID:
+ p.setPen(QPen(KVI_OPTION_COLOR(KviOption_colorUserListViewGrid),0,
+#ifdef COMPILE_USE_QT4
+ (KVI_OPTION_UINT(KviOption_uintUserListViewGridType) == KVI_USERLISTVIEW_GRIDTYPE_DOTGRID) ? Qt::DotLine : Qt::SolidLine));
+#else
+ (KVI_OPTION_UINT(KviOption_uintUserListViewGridType) == KVI_USERLISTVIEW_GRIDTYPE_DOTGRID) ? QPen::DotLine : QPen::SolidLine));
+#endif
+ p.drawLine(0,bottom - 1,wdth,bottom - 1);
+ if(bShowState || bShowIcons)
+ p.drawLine(iAvatarAndTextX,bottom - 1,iAvatarAndTextX,theY);
+ break;
+ default: // KVI_USERLISTVIEW_GRIDTYPE_3DGRID and KVI_USERLISTVIEW_GRIDTYPE_3DBUTTONS
+ if(!e->m_bSelected)
+ {
+ p.setPen(QPen(KVI_OPTION_COLOR(KviOption_colorUserListViewGrid),0 /*,QPen::DotLine*/));
+ if((bShowState || bShowIcons) && (KVI_OPTION_UINT(KviOption_uintUserListViewGridType) == KVI_USERLISTVIEW_GRIDTYPE_3DGRID))
+ p.drawLine(iAvatarAndTextX,bottom - 1,iAvatarAndTextX,theY);
+ p.setPen(colorGroup().shadow());
+ p.drawLine(0,bottom - 1,wdth,bottom - 1);
+ p.setPen(colorGroup().light());
+ p.drawLine(0,theY,wdth,theY);
+ theY--;
+ }
+ theY++;
+ break;
+ }
+ iAvatarAndTextX += 3;
+ } else {
+ iAvatarAndTextX += 1;
+ }
+
+ if(e->globalData()->isAway())
+ {
+ QRgb rgb2 = pClrFore->rgb();
+ QRgb rgb1 = KVI_OPTION_COLOR(KviOption_colorUserListViewAwayForeground).rgb();
+ p.setPen(QColor(((qRed(rgb1)*2) + qRed(rgb2)) / 3,((qGreen(rgb1)*2) + qGreen(rgb2)) / 3,((qBlue(rgb1)*2) + qBlue(rgb2)) / 3));
+ } else {
+ p.setPen(*pClrFore);
+ }
+ theY+=2;
+
+ if(!KVI_OPTION_BOOL(KviOption_boolDisableAvatars))//G&N 2005
+ {
+ KviAvatar * av = e->m_pGlobalData->avatar();
+ if(av && KVI_OPTION_UINT(KviOption_uintAvatarScaleWidth) && KVI_OPTION_UINT(KviOption_uintAvatarScaleHeight))
+ {
+ QPixmap * pix;
+ if( KVI_OPTION_BOOL(KviOption_boolScaleAvatars) &&
+ (
+ !KVI_OPTION_BOOL(KviOption_boolDoNotStretchAvatars) ||
+ (av->pixmap()->width() > KVI_OPTION_UINT(KviOption_uintAvatarScaleWidth)) ||
+ (av->pixmap()->height() > KVI_OPTION_UINT(KviOption_uintAvatarScaleHeight))
+ )
+ )
+ pix=av->scaledPixmap(KVI_OPTION_UINT(KviOption_uintAvatarScaleWidth),KVI_OPTION_UINT(KviOption_uintAvatarScaleHeight));
+ else
+ pix=av->pixmap();
+ p.drawPixmap(iAvatarAndTextX,theY,*pix);
+ theY += pix->height() + 1;
+ }
+ }
+
+ if(bShowGender)
+ {
+ if(e->globalData()->gender()!=KviIrcUserEntry::Unknown)
+ {
+ QPixmap * ico = g_pIconManager->getBigIcon((e->globalData()->gender()==KviIrcUserEntry::Male) ? "kvi_icon_male.png" : "kvi_icon_female.png");
+ p.drawPixmap(theX,theY+(m_pListView->m_iFontHeight-11)/2,*ico);
+ }
+ if(e->globalData()->isBot())
+ {
+ QPixmap * ico = g_pIconManager->getBigIcon("kvi_icon_bot.png");
+ p.drawPixmap(theX,theY+(m_pListView->m_iFontHeight-11)/2,*ico);
+ }
+ theX +=11;
+ }
+
+ if(bShowState)
+ {
+ if(e->m_lastActionTime)
+ {
+ // the g_pUserChanStatePixmap is 36 x 80 pixels
+ // divided into 6 rows of 5 pixmaps
+ // row 0 is hot , row 5 is cold
+ // left is most active , right is least active
+ // e->m_iTemperature is a signed short , negative values are cold
+ // e->m_lastActionTime is the time of the last action (eventually 0 , if not known)
+ // 6 bit right shift is an aprox division for 64 : really aprox minutes
+ unsigned int uTimeDiff = (((unsigned int)(curTime - e->m_lastActionTime)) >> 6);
+ if(uTimeDiff < 16)
+ {
+ //p.drawRect(theX,theY + 2,10,e->m_iHeight - 4);
+ static int xOffTable[16] =
+ {
+ 0 , 8 , 16 , 16 ,
+ 24 , 24 , 24 , 24 ,
+ 32 , 32 , 32 , 32 ,
+ 32 , 32 , 32 , 32
+ };
+ // the temperature now
+ // temp > 100 is hot (offset y = 0)
+ // temp < -100 is cold (offset y = 80)
+ // temp > 30 is half-hot (offset y = 16)
+ // temp < -30 is half-cold (offset y = 64)
+ // temp > 0 is a-bit-hot (offset y = 32)
+ // temp < 0 is a-bit-cold (offset y = 48)
+
+ if(e->m_iTemperature > KVI_MID_TEMPERATURE)
+ {
+ if(e->m_iTemperature > KVI_HALF_HOT_TEMPERATURE)
+ {
+ if(e->m_iTemperature > KVI_HOT_TEMPERATURE)
+ {
+ // hot
+ p.drawPixmap(theX,theY,*g_pUserChanStatePixmap,xOffTable[uTimeDiff],0,8,16);
+ } else {
+ // half-hot
+ p.drawPixmap(theX,theY,*g_pUserChanStatePixmap,xOffTable[uTimeDiff],16,8,16);
+ }
+ } else {
+ // bit-hot
+ p.drawPixmap(theX,theY,*g_pUserChanStatePixmap,xOffTable[uTimeDiff],32,8,16);
+ }
+ } else {
+ if(e->m_iTemperature < KVI_HALF_COLD_TEMPERATURE)
+ {
+ if(e->m_iTemperature < KVI_COLD_TEMPERATURE)
+ {
+ // cold
+ p.drawPixmap(theX,theY,*g_pUserChanStatePixmap,xOffTable[uTimeDiff],80,8,16);
+ } else {
+ // half-cold
+ p.drawPixmap(theX,theY,*g_pUserChanStatePixmap,xOffTable[uTimeDiff],64,8,16);
+ }
+ } else {
+ // bit-cold
+ p.drawPixmap(theX,theY,*g_pUserChanStatePixmap,xOffTable[uTimeDiff],48,8,16);
+ }
+ }
+ }
+ }
+ theX += 11;
+ }
+
+ if(bShowIcons)
+ {
+ //p.drawRect(theX,theY + 2,18,e->m_iHeight - 4);
+ if(e->m_iFlags != 0)
+ {
+ QPixmap * ico = g_pIconManager->getSmallIcon( \
+ e->globalData()->isAway() ? \
+ ( \
+ (e->m_iFlags & KVI_USERFLAG_CHANOWNER) ? \
+ KVI_SMALLICON_CHANOWNERAWAY : ((e->m_iFlags & KVI_USERFLAG_CHANADMIN) ? \
+ KVI_SMALLICON_CHANADMINAWAY : ((e->m_iFlags & KVI_USERFLAG_OP) ? \
+ KVI_SMALLICON_OPAWAY : ((e->m_iFlags & KVI_USERFLAG_HALFOP) ? \
+ KVI_SMALLICON_HALFOPAWAY : ((e->m_iFlags & KVI_USERFLAG_VOICE) ? \
+ KVI_SMALLICON_VOICEAWAY : KVI_SMALLICON_USEROPAWAY))))
+ ) \
+ : \
+ ( \
+ (e->m_iFlags & KVI_USERFLAG_CHANOWNER) ? \
+ KVI_SMALLICON_CHANOWNER : ((e->m_iFlags & KVI_USERFLAG_CHANADMIN) ? \
+ KVI_SMALLICON_CHANADMIN : ((e->m_iFlags & KVI_USERFLAG_OP) ? \
+ KVI_SMALLICON_OP : ((e->m_iFlags & KVI_USERFLAG_HALFOP) ? \
+ KVI_SMALLICON_HALFOP : ((e->m_iFlags & KVI_USERFLAG_VOICE) ? \
+ KVI_SMALLICON_VOICE : KVI_SMALLICON_USEROP)))) \
+ ) \
+ );
+#ifdef COMPILE_USE_QT4
+ p.drawPixmap(theX,theY+(fm.lineSpacing()-16/*size of small icon*/)/2,*ico);
+#else
+ p.drawPixmap(theX,theY+(m_pListView->m_iFontHeight-16/*size of small icon*/)/2,*ico);
+#endif
+ }
+ theX +=18;
+#ifdef COMPILE_USE_QT4
+ p.drawText(iAvatarAndTextX,theY,wdth - theX,fm.lineSpacing(),Qt::AlignLeft|Qt::AlignVCenter,e->m_szNick);
+#else
+ p.drawText(iAvatarAndTextX,theY,wdth - theX,m_pListView->m_iFontHeight,Qt::AlignLeft|Qt::AlignVCenter,e->m_szNick);
+#endif
+ } else {
+
+ char flag = m_pListView->getUserFlag(e);
+ if(flag)
+ {
+ QString ttt = QChar(flag);
+ ttt += e->m_szNick;
+#ifdef COMPILE_USE_QT4
+ p.drawText(iAvatarAndTextX,theY,wdth - theX,fm.lineSpacing(),Qt::AlignLeft|Qt::AlignVCenter,ttt);
+#else
+ p.drawText(iAvatarAndTextX,theY,wdth - theX,m_pListView->m_iFontHeight,Qt::AlignLeft|Qt::AlignVCenter,ttt);
+#endif
+ } else {
+#ifdef COMPILE_USE_QT4
+ p.drawText(iAvatarAndTextX,theY,wdth - theX,fm.lineSpacing(),Qt::AlignLeft|Qt::AlignVCenter,e->m_szNick);
+#else
+ p.drawText(iAvatarAndTextX,theY,wdth - theX,m_pListView->m_iFontHeight,Qt::AlignLeft|Qt::AlignVCenter,e->m_szNick);
+#endif
+ }
+ }
+ if(bColorAllocated) delete pClrFore;
+ }
+
+ theY = bottom;
+ e = e->m_pNext;
+ }
+
+ //we really do not need any self-draw borders.
+ //if we will need it, we will draw a better one with system style
+
+ //p.setPen(colorGroup().dark());
+ //p.drawLine(0,0,wdth,0);
+ //p.drawLine(0,0,0,height());
+ //p.setPen(colorGroup().light());
+ //p.drawLine(1,height()-1,wdth,height()-1);
+ //p.drawLine(wdth - 1,1,wdth - 1,height());
+
+#ifdef COMPILE_USE_QT4
+ QPainter qt4SuxBecauseOfThisAdditionalPainter(this);
+ qt4SuxBecauseOfThisAdditionalPainter.drawPixmap(r.left(),r.top(),r.width(),r.height(),*pMemBuffer,r.left(),r.top(),r.width(),r.height());
+#else
+ bitBlt(this,r.left(),r.top(),pMemBuffer,r.left(),r.top(),r.width(),r.height(),Qt::CopyROP,false);
+#endif
+}
+
+void KviUserListViewArea::resizeEvent(QResizeEvent *)
+{
+ int iScr = m_pScrollBar->sizeHint().width();
+ m_pScrollBar->setGeometry(width() - iScr,0,iScr,height());
+ m_pScrollBar->setPageStep(height());
+ m_pScrollBar->setLineStep(m_pListView->m_iFontHeight - 1);
+}
+
+void KviUserListViewArea::mousePressEvent(QMouseEvent *e)
+{
+ setFocus();
+ if(e->button() & Qt::LeftButton)
+ {
+ KviUserListEntry * entry = m_pListView->itemAt(e->pos());
+ if(entry)
+ {
+ if(e->state() & Qt::ShiftButton)
+ {
+ // Multiselect mode
+ if(!entry->m_bSelected)m_pListView->m_iSelectedCount++;
+ entry->m_bSelected = true;
+ if(m_pListView->m_iSelectedCount == 1)g_pFrame->childWindowSelectionStateChange(m_pListView->m_pKviWindow,true);
+ update();
+ } else if(e->state() & Qt::ControlButton)
+ {
+ // Invert mode
+ if(!entry->m_bSelected)m_pListView->m_iSelectedCount++;
+ else m_pListView->m_iSelectedCount--;
+ entry->m_bSelected = ! entry->m_bSelected;
+ if(m_pListView->m_iSelectedCount == 0)g_pFrame->childWindowSelectionStateChange(m_pListView->m_pKviWindow,false);
+ else if(m_pListView->m_iSelectedCount == 1)g_pFrame->childWindowSelectionStateChange(m_pListView->m_pKviWindow,true);
+ update();
+ } else {
+ // Single select mode
+ bool bThereWasSelection = false;
+ if(m_pListView->m_iSelectedCount > 0)
+ {
+ KviUserListEntry * aux = m_pListView->m_pHeadItem;
+ while(aux)
+ {
+ aux->m_bSelected = false;
+ aux = aux->m_pNext;
+ }
+ bThereWasSelection = true;
+ }
+ entry->m_bSelected = true;
+ m_pListView->m_iSelectedCount = 1;
+ if(!bThereWasSelection)g_pFrame->childWindowSelectionStateChange(m_pListView->m_pKviWindow,true);
+ update();
+ }
+ }
+ m_pLastEntryUnderMouse = entry;
+ } else if(e->button() & Qt::RightButton)
+ {
+ KviUserListEntry * entry = m_pListView->itemAt(e->pos());
+ if(entry)
+ {
+ if(!entry->m_bSelected){
+ entry->m_bSelected = true;
+ m_pListView->m_iSelectedCount=1;
+ KviPointerHashTableIterator<QString,KviUserListEntry> it(*(m_pListView->m_pEntryDict));
+ while(it.current())
+ {
+ if(it.current()!=entry)
+ ((KviUserListEntry *)it.current())->m_bSelected = false;
+ ++it;
+ }
+ }
+ if(m_pListView->m_iSelectedCount == 1)
+ g_pFrame->childWindowSelectionStateChange(m_pListView->m_pKviWindow,true);
+ update();
+ }
+ m_pListView->emitRightClick();
+ }
+}
+void KviUserListViewArea::keyPressEvent( QKeyEvent * e )
+{
+ if(e->key()==Qt::Key_Escape)
+ {
+ if(m_pListView->m_pKviWindow->input())
+ ((QWidget*)(m_pListView->m_pKviWindow->input()))->setFocus();
+ } else {
+ QString szKey=e->text();
+ if(!szKey.isEmpty())
+ {
+ KviUserListEntry * nick=0;
+ KviUserListEntry * aux = m_pListView->m_pHeadItem;
+ while(aux)
+ {
+ //debug("%s %s %i %s %i",__FILE__,__FUNCTION__,__LINE__,aux->nick().utf8().data(),aux->nick().find(szKey,0,0));
+ if(aux->nick().find(szKey,0,0)==0)
+ {
+ nick=aux;
+ break;
+ }
+ aux = aux->m_pNext;
+ }
+ if(nick)
+ {
+ bool bThereWasSelection = false;
+ if(m_pListView->m_iSelectedCount > 0)
+ {
+ aux = m_pListView->m_pHeadItem;
+ while(aux)
+ {
+ aux->m_bSelected = false;
+ aux = aux->m_pNext;
+ }
+ bThereWasSelection = true;
+ }
+ nick->m_bSelected = true;
+ m_pListView->m_iSelectedCount = 1;
+ if(!bThereWasSelection)g_pFrame->childWindowSelectionStateChange(m_pListView->m_pKviWindow,true);
+ update();
+ }
+ }
+ }
+}
+
+void KviUserListViewArea::mouseDoubleClickEvent(QMouseEvent *e)
+{
+ m_pListView->emitDoubleClick();
+}
+
+void KviUserListViewArea::mouseMoveEvent(QMouseEvent *e)
+{
+ if(e->state() & Qt::LeftButton)
+ {
+ KviUserListEntry * entry = m_pListView->itemAt(e->pos());
+ if(entry && (entry != m_pLastEntryUnderMouse))
+ {
+ if(e->state() & Qt::ControlButton)
+ {
+ if(entry->m_bSelected)m_pListView->m_iSelectedCount--;
+ else m_pListView->m_iSelectedCount++;
+ entry->m_bSelected = ! entry->m_bSelected;
+ if(m_pListView->m_iSelectedCount == 0)g_pFrame->childWindowSelectionStateChange(m_pListView->m_pKviWindow,false);
+ else if(m_pListView->m_iSelectedCount == 1)g_pFrame->childWindowSelectionStateChange(m_pListView->m_pKviWindow,true);
+ } else {
+ if(!entry->m_bSelected)m_pListView->m_iSelectedCount++;
+ entry->m_bSelected = true;
+ if(m_pListView->m_iSelectedCount == 1)g_pFrame->childWindowSelectionStateChange(m_pListView->m_pKviWindow,true);
+ }
+ update();
+ m_pLastEntryUnderMouse = entry;
+ } else {
+ // out of the widget ?
+ if(entry == m_pLastEntryUnderMouse)return;
+ if(e->pos().y() < KVI_USERLIST_BORDER_WIDTH)
+ {
+ KviUserListEntry * top = m_pListView->m_pTopItem;
+ if(top)
+ {
+ m_pScrollBar->setValue(m_pScrollBar->value() - top->m_iHeight);
+ if(m_pListView->m_pTopItem != top)
+ {
+ if(e->state() & Qt::ControlButton)
+ {
+ if(m_pListView->m_pTopItem->m_bSelected)m_pListView->m_iSelectedCount--;
+ else m_pListView->m_iSelectedCount++;
+ m_pListView->m_pTopItem->m_bSelected = ! m_pListView->m_pTopItem->m_bSelected;
+ if(m_pListView->m_iSelectedCount == 0)g_pFrame->childWindowSelectionStateChange(m_pListView->m_pKviWindow,false);
+ else if(m_pListView->m_iSelectedCount == 1)g_pFrame->childWindowSelectionStateChange(m_pListView->m_pKviWindow,true);
+ } else {
+ if(!m_pListView->m_pTopItem->m_bSelected)m_pListView->m_iSelectedCount++;
+ m_pListView->m_pTopItem->m_bSelected = true;
+ if(m_pListView->m_iSelectedCount == 1)g_pFrame->childWindowSelectionStateChange(m_pListView->m_pKviWindow,true);
+ }
+ update();
+ }
+ }
+ m_pLastEntryUnderMouse = top;
+ } else if(e->pos().y() > (height() - KVI_USERLIST_BORDER_WIDTH))
+ {
+ KviUserListEntry * bottom = m_pListView->m_pTopItem;
+ if(bottom)
+ {
+ int theY = KVI_USERLIST_BORDER_WIDTH - m_iTopItemOffset;
+ while(bottom && (theY < height()))
+ {
+ theY+= bottom->m_iHeight;
+ bottom = bottom->m_pNext;
+ }
+ if(!bottom)bottom = m_pListView->m_pTailItem;
+ if(bottom)
+ {
+ m_pScrollBar->setValue(m_pScrollBar->value() + bottom->m_iHeight);
+ if(bottom != m_pLastEntryUnderMouse)
+ {
+ if(e->state() & Qt::ControlButton)
+ {
+ if(bottom->m_bSelected)m_pListView->m_iSelectedCount--;
+ else m_pListView->m_iSelectedCount++;
+ bottom->m_bSelected = ! bottom->m_bSelected;
+ if(m_pListView->m_iSelectedCount == 0)g_pFrame->childWindowSelectionStateChange(m_pListView->m_pKviWindow,false);
+ else if(m_pListView->m_iSelectedCount == 1)g_pFrame->childWindowSelectionStateChange(m_pListView->m_pKviWindow,true);
+ } else {
+ if(!bottom->m_bSelected)m_pListView->m_iSelectedCount++;
+ bottom->m_bSelected = true;
+ if(m_pListView->m_iSelectedCount == 1)g_pFrame->childWindowSelectionStateChange(m_pListView->m_pKviWindow,true);
+ }
+ update();
+ }
+ }
+ }
+ m_pLastEntryUnderMouse = bottom;
+ } else m_pLastEntryUnderMouse = 0;
+ }
+ }
+}
+
+void KviUserListViewArea::mouseReleaseEvent(QMouseEvent *)
+{
+ m_pLastEntryUnderMouse = 0;
+}
+
+void KviUserListViewArea::wheelEvent(QWheelEvent *e)
+{
+#ifdef COMPILE_USE_QT4
+ static bool bHere = false; // Qt4(<= 4.2.2) has a nasty bug that makes the re-sent wheelEvent to cause infinite recursion
+ if(bHere)return;
+ bHere = true;
+#endif
+ g_pApp->sendEvent(m_pScrollBar,e);
+#ifdef COMPILE_USE_QT4
+ bHere = false;
+#endif
+}
+
+#include "kvi_userlistview.moc"
diff --git a/src/kvirc/ui/kvi_userlistview.h b/src/kvirc/ui/kvi_userlistview.h
new file mode 100644
index 00000000..f5405937
--- /dev/null
+++ b/src/kvirc/ui/kvi_userlistview.h
@@ -0,0 +1,259 @@
+#ifndef _KVI_USERLISTVIEW_H_
+#define _KVI_USERLISTVIEW_H_
+
+//=============================================================================
+//
+// File : kvi_userlistview.h
+// Creation date : Tue Aug 1 2000 21:03:41 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include "kvi_string.h"
+#include "kvi_ircuserdb.h"
+#include "kvi_ircmask.h"
+#include "kvi_time.h"
+
+#include <time.h>
+#include "kvi_tal_tooltip.h"
+#include <qwidget.h>
+#include "kvi_pointerlist.h"
+#include "kvi_pointerhashtable.h"
+#include "kvi_toolwindows_container.h"
+
+class QLabel;
+class QScrollBar;
+
+class KviUserListView;
+class KviUserListViewArea;
+class KviConsole;
+class KviWindow;
+
+#define KVI_USERLISTVIEW_GRIDTYPE_3DGRID 0
+#define KVI_USERLISTVIEW_GRIDTYPE_3DBUTTONS 1
+#define KVI_USERLISTVIEW_GRIDTYPE_PLAINGRID 2
+#define KVI_USERLISTVIEW_GRIDTYPE_DOTGRID 3
+
+#define KVI_USERLISTVIEW_GRIDTYPE_MAXIMUM 3
+#define KVI_USERLISTVIEW_GRIDTYPE_DEFAULT 0
+
+class KVIRC_API KviUserListToolTip : public KviTalToolTip
+{
+public:
+ KviUserListToolTip(KviUserListView *v,KviUserListViewArea * a);
+ virtual ~KviUserListToolTip();
+private:
+ KviUserListView * m_pListView;
+public:
+ virtual void maybeTip(const QPoint &pnt);
+ void doTip(const QRect &rct,const QString &str){ tip(rct,str); };
+};
+
+
+
+class KVIRC_API KviUserListEntry
+{
+ friend class KviUserListView;
+ friend class KviUserListViewArea;
+public:
+ KviUserListEntry(KviUserListView * parent,const QString &nick,KviIrcUserEntry * e,short int iFlags,bool bJoinTimeUnknown = true);
+ ~KviUserListEntry();
+protected:
+ KviUserListView * m_pListView;
+ QString m_szNick;
+ KviIrcUserEntry * m_pGlobalData;
+ short int m_iFlags;
+ short int m_iTemperature; // user temperature : 0 = neutral
+ kvi_time_t m_lastActionTime;
+ kvi_time_t m_joinTime;
+
+ int m_iHeight;
+ bool m_bSelected;
+ KviUserListEntry * m_pNext;
+ KviUserListEntry * m_pPrev;
+public:
+ short int flags() const { return m_iFlags; };
+ KviIrcUserEntry * globalData(){ return m_pGlobalData; };
+ const QString &nick() const { return m_szNick; };
+ KviUserListEntry * next(){ return m_pNext; };
+ bool color(QColor& color);
+protected:
+ void recalcSize();
+};
+
+
+typedef struct _KviUserListViewUserStats
+{
+ unsigned int uTotal; // total users on the channel
+ unsigned int uActive; // active users in the last 10 mins
+ unsigned int uActiveOp; // active operators in the last 10 minutes
+ unsigned int uHot; // hot active users
+ unsigned int uHotOp; // hot operators
+ unsigned int uOp; // total operators
+ unsigned int uHalfOp; // total halfops
+ unsigned int uVoiced; // total voiced users
+ unsigned int uChanAdmin; // total channel administrators
+ unsigned int uChanOwner; // total channel owners
+ unsigned int uUserOp; // total userops (uops)
+ int iAvgTemperature; // average user temperature
+} KviUserListViewUserStats;
+
+
+class KVIRC_API KviUserListView : public KviWindowToolWidget
+{
+ friend class KviUserListEntry;
+ friend class KviUserListViewArea;
+ friend class KviUserListToolTip;
+ friend class KviConsole;
+ friend class KviChannel;
+ friend class KviQuery;
+ Q_OBJECT
+public:
+ KviUserListView(QWidget * parent,KviWindowToolPageButton* button,KviIrcUserDataBase * db,KviWindow * pWnd,int dictSize = 5,const QString &label_text = QString::null,const char * name = 0);
+ ~KviUserListView();
+protected:
+ KviPointerHashTable<QString,KviUserListEntry> * m_pEntryDict;
+ KviUserListEntry * m_pTopItem;
+ KviUserListEntry * m_pHeadItem;
+ KviUserListEntry * m_pTailItem;
+ KviUserListEntry * m_pIterator;
+ QLabel * m_pUsersLabel;
+ KviUserListViewArea * m_pViewArea;
+ KviIrcUserDataBase * m_pIrcUserDataBase;
+ int m_iSelectedCount;
+ int m_iOpCount;
+ int m_iVoiceCount;
+ int m_iHalfOpCount;
+ int m_iChanAdminCount;
+ int m_iChanOwnerCount;
+ int m_iUserOpCount;
+ int m_iTotalHeight;
+ int m_iFontHeight;
+ KviUserListToolTip * m_pToolTip;
+ int m_ibEntries;
+ int m_ieEntries;
+ int m_iIEntries;
+ KviWindow * m_pKviWindow;
+protected:
+ void maybeTip(KviUserListToolTip * tip,const QPoint &pnt);
+ void triggerUpdate();
+ void updateUsersLabel();
+ void insertUserEntry(const QString &nick,KviUserListEntry * e);
+ void removeAllEntries();
+ virtual void resizeEvent(QResizeEvent *);
+ bool partInternal(const QString &nick,bool bRemove = true);
+ void setUserDataBase(KviIrcUserDataBase * db){ m_pIrcUserDataBase = db; };
+ void updateScrollBarRange();
+public:
+ void updateArea();
+ void select(const QString&);
+ void applyOptions();
+ KviPointerHashTable<QString,KviUserListEntry> * entryDict(){ return m_pEntryDict; };
+ KviUserListEntry * firstItem(){ return m_pHeadItem; };
+ KviUserListEntry * itemAt(const QPoint &pnt,QRect * rct = 0);
+ bool itemVisible(KviUserListEntry * e);
+ KviWindow * window(){ return m_pKviWindow; };
+
+ unsigned int count(){ return m_pEntryDict->count(); };
+ int selectedCount(){ return m_iSelectedCount; };
+ int opCount(){ return m_iOpCount; };
+ int voiceCount(){ return m_iVoiceCount; };
+ int chanOwnerCount(){ return m_iChanOwnerCount; };
+ int chanAdminCount(){ return m_iChanAdminCount; };
+ int halfOpCount(){ return m_iHalfOpCount; };
+ int userOpCount(){ return m_iUserOpCount; };
+
+ KviUserListEntry * findEntry(const QString &nick){ return nick.isEmpty() ? 0 : m_pEntryDict->find(nick); };
+ void appendSelectedNicknames(QString &buffer);
+ QString * firstSelectedNickname();
+ QString * nextSelectedNickname();
+ void partAll();
+ void partAllButOne(const QString &whoNot);
+ void userStats(KviUserListViewUserStats * s);
+ int getUserModeLevel(const QString &nick);
+ kvi_time_t getUserJoinTime(const QString &nick);
+ kvi_time_t getUserLastActionTime(const QString &nick);
+ char getUserFlag(KviUserListEntry * e);
+ char getUserFlag(const QString &nick){ return getUserFlag(m_pEntryDict->find(nick)); };
+ bool part(const QString &nick){ return partInternal(nick,true); };
+ bool op(const QString &nick,bool bOp);
+ void prependUserFlag(const QString &nick,QString &buffer);
+ int flags(const QString &nick);
+ bool isOp(const QString &nick,bool bAtLeast = false);
+ bool isVoice(const QString &nick,bool bAtLeast = false);
+ bool isHalfOp(const QString &nick,bool bAtLeast = false);
+ bool isChanAdmin(const QString &nick,bool bAtLeast = false);
+ bool isChanOwner(const QString &nick,bool bAtLeast = false);
+ bool isUserOp(const QString &nick,bool bAtLeast = false);
+ bool voice(const QString &nick,bool bVoice);
+ bool setChanAdmin(const QString &nick,bool bChanAdmin);
+ bool setChanOwner(const QString &nick,bool bChanOwner);
+ bool halfop(const QString &nick,bool bHalfOp);
+ bool userop(const QString &nick,bool bUserOp);
+ void userAction(KviIrcMask *user,int actionTemperature);
+ bool userActionVerifyMask(const QString &nick,const QString &user,const QString &host,int actionTemperature,QString &oldUser,QString &oldHost);
+ void userAction(const QString &nick,const QString &user,const QString &host,int actionTemperature);
+ void userAction(const QString &nick,int actionTemperature);
+ bool nickChange(const QString &oldNick,const QString &newNick);
+ //KviUserListEntry * join(const char *nick,const char * user,const char * host,bool bOp,bool bVoice,bool bHalfOp);
+ KviUserListEntry * join(const QString &nick,const QString &user = QString::null,const QString &host = QString::null,int iFlags = 0);
+ bool avatarChanged(const QString &nick);
+ void enableUpdates(bool bEnable);
+ void setMaskEntries(char type, int num);
+ void emitRightClick();
+ void emitDoubleClick();
+ bool completeNickStandard(const QString &begin,const QString &skipAfter,QString &buffer,bool bAppendMask);
+ void completeNickBashLike(const QString &begin,KviPointerList<QString> * l,bool bAppendMask);
+};
+
+class KVIRC_API KviUserListViewArea : public QWidget
+{
+ friend class KviUserListView;
+
+ Q_OBJECT
+ Q_PROPERTY(int TransparencyCapable READ dummyRead)
+public:
+ KviUserListViewArea(KviUserListView * par);
+ ~KviUserListViewArea();
+public:
+ int dummyRead() const { return 0; };
+protected:
+ KviUserListView * m_pListView;
+ KviUserListEntry * m_pLastEntryUnderMouse;
+ QScrollBar * m_pScrollBar;
+ int m_iLastScrollBarVal;
+ int m_iTopItemOffset;
+ bool m_bIgnoreScrollBar;
+protected:
+ virtual void paintEvent(QPaintEvent *);
+ virtual void resizeEvent(QResizeEvent *);
+ virtual void mousePressEvent(QMouseEvent *e);
+ virtual void mouseMoveEvent(QMouseEvent *e);
+ virtual void mouseReleaseEvent(QMouseEvent *);
+ virtual void mouseDoubleClickEvent(QMouseEvent *e);
+ virtual void wheelEvent(QWheelEvent *e);
+ virtual void keyPressEvent( QKeyEvent * e );
+protected slots:
+ void scrollBarMoved(int newVal);
+};
+
+
+#endif //!_KVI_USERLISTVIEW_H_
diff --git a/src/kvirc/ui/kvi_window.cpp b/src/kvirc/ui/kvi_window.cpp
new file mode 100644
index 00000000..2cf64085
--- /dev/null
+++ b/src/kvirc/ui/kvi_window.cpp
@@ -0,0 +1,1518 @@
+//=============================================================================
+//
+// File : kvi_window.cpp
+// Creation date : Tue Jul 6 1999 14:52:11 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVIRC__
+#define KVI_WINDOW_MIN_WIDTH 100
+#define KVI_WINDOW_MIN_HEIGHT 100
+
+#define _KVI_WINDOW_CPP_
+
+#define _KVI_DEBUG_CHECK_RANGE_
+
+#include "kvi_debug.h"
+#include "kvi_app.h"
+#include "kvi_window.h"
+#include "kvi_frame.h"
+#include "kvi_taskbar.h"
+#include "kvi_iconmanager.h"
+#include "kvi_mdichild.h"
+#include "kvi_locale.h"
+#include "kvi_ircview.h"
+#include "kvi_out.h"
+#include "kvi_malloc.h"
+#include "kvi_input.h"
+#include "kvi_fileutils.h"
+#include "kvi_options.h"
+#include "kvi_config.h"
+#include "kvi_irccontext.h"
+#include "kvi_console.h"
+#include "kvi_ircconnectionserverinfo.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_toolwindows_container.h"
+#include "kvi_styled_controls.h"
+#include "kvi_kvs_script.h"
+
+#include <qpixmap.h>
+#include "kvi_tal_popupmenu.h"
+#include <qcursor.h>
+#include <qtimer.h>
+#include <qsplitter.h>
+#include <qmetaobject.h>
+#include <qdatetime.h>
+#include <qtextcodec.h>
+#include <qevent.h>
+
+// it looks they can't decide :D
+#ifdef COMPILE_USE_QT4
+ #include <QPushButton>
+ #include <qdesktopwidget.h>
+#else
+ #include <qobjectlist.h>
+#endif
+
+
+#include <qvariant.h>
+#include <qtoolbutton.h>
+#include "kvi_tal_tooltip.h"
+#include <qmessagebox.h>
+
+#ifdef COMPILE_CRYPT_SUPPORT
+ #include "kvi_crypt.h"
+ #include "kvi_cryptcontroller.h"
+#endif
+
+#ifdef COMPILE_KDE_SUPPORT
+ #include <kwin.h>
+ #include <kdeversion.h>
+#endif
+
+#ifdef COMPILE_ON_WINDOWS
+ #include <windows.h>
+#endif
+
+KVIRC_API KviWindow * g_pActiveWindow = 0;
+
+static KviTalPopupMenu * g_pMdiWindowSystemMainPopup = 0;
+static KviTalPopupMenu * g_pMdiWindowSystemTextEncodingPopup = 0;
+static KviTalPopupMenu * g_pMdiWindowSystemTextEncodingPopupStandard = 0;
+static KviTalPopupMenu * g_pMdiWindowSystemTextEncodingPopupSmart = 0;
+static KviTalPopupMenu * g_pMdiWindowSystemTextEncodingPopupSmartUtf8 = 0;
+
+unsigned long int g_uUniqueWindowId = 1;
+
+// FIXME: #warning "Mouse wheel support"
+KviWindow::KviWindow(int type,KviFrame * lpFrm,const QString &name,KviConsole * lpConsole)
+ : QWidget(0)
+{
+ m_uId = g_uUniqueWindowId;
+ g_uUniqueWindowId++;
+
+
+ // FIXME: REMOVE THIS
+ setName(name);
+ // END FIXME
+ m_szName = name;
+
+ g_pApp->registerWindow(this);
+
+ m_iType = type;
+ m_pFocusHandler = 0;
+
+ m_pFrm = lpFrm; // FIXME: Should disappear!
+ m_pIrcView = 0;
+ m_pInput = 0;
+ m_pSplitter = 0;
+ m_pButtonBox = 0;
+ m_pConsole = lpConsole;
+ m_pContext = lpConsole ? lpConsole->context() : 0;
+ m_pLastFocusedChild = 0;
+ m_pTextCodec = 0; // will be set by loadProperties
+ m_pTextEncodingButton = 0;
+ m_pHideToolsButton = 0;
+// m_pEditorsContainer = 0;
+
+#ifdef COMPILE_CRYPT_SUPPORT
+
+ m_pCryptControllerButton = 0;
+ m_pCryptController = 0;
+ m_pCryptSessionInfo = 0;
+#endif
+
+ m_pAccel = 0;
+
+ m_pTaskBarItem = 0;
+
+ setMinimumSize(KVI_WINDOW_MIN_WIDTH,KVI_WINDOW_MIN_HEIGHT);
+#ifdef COMPILE_USE_QT4
+ //setAutoFillBackground(false);
+ setFocusPolicy(Qt::StrongFocus);
+#else
+ setBackgroundMode(NoBackground);
+ setFocusPolicy(StrongFocus);
+#endif
+
+ connect(g_pApp,SIGNAL(reloadImages()),this,SLOT(reloadImages()));
+}
+
+KviWindow::~KviWindow()
+{
+ //g_pFrame->childWindowDestroyed(this);
+ destroyTaskBarItem();
+ g_pApp->unregisterWindow(this);
+ if(g_pApp->windowCount() == 0)
+ {
+ // this is the last window!
+ if(g_pMdiWindowSystemMainPopup)
+ delete g_pMdiWindowSystemMainPopup;
+ if(g_pMdiWindowSystemTextEncodingPopup)
+ delete g_pMdiWindowSystemTextEncodingPopup;
+ if(g_pMdiWindowSystemTextEncodingPopupStandard)
+ delete g_pMdiWindowSystemTextEncodingPopupStandard;
+ if(g_pMdiWindowSystemTextEncodingPopupSmart)
+ delete g_pMdiWindowSystemTextEncodingPopupSmart;
+ if(g_pMdiWindowSystemTextEncodingPopupSmartUtf8)
+ delete g_pMdiWindowSystemTextEncodingPopupSmartUtf8;
+ }
+#ifdef COMPILE_CRYPT_SUPPORT
+ if(m_pCryptSessionInfo)
+ KviCryptController::destroyCryptSessionInfo(&m_pCryptSessionInfo);
+#endif
+}
+
+void KviWindow::setWindowName(const QString &szName)
+{
+ m_szName = szName;
+ emit windowNameChanged();
+}
+
+void KviWindow::toggleButtonContainer()
+{
+ QFrame *pContainer=buttonContainer();
+ if(pContainer)
+ {
+ pContainer->setHidden(!pContainer->isHidden());
+ }
+}
+
+void KviWindow::setName(const char * name)
+{
+ m_szName = name;
+ QWidget::setName(name);
+}
+
+KviIrcConnection * KviWindow::connection()
+{
+ return m_pContext ? m_pContext->connection() : 0;
+}
+
+void KviWindow::reloadImages()
+{
+ updateIcon();
+}
+
+bool KviWindow::hasAttention()
+{
+ if(((QApplication *)g_pApp)->activeWindow() == 0)return false; // no application window has the focus atm
+
+ if(mdiParent())
+ {
+ if(frame()->isActiveWindow())return true;
+ // This frame is not the active window but the
+ // active window still belongs to KVIrc.
+ // When the active window is derived from QDialog
+ // then it is probably a KVIrc's option dialog
+ // or something similar.
+ // In this case we assume that the user has the
+ // KVIrc window just below and can see it.
+
+ // Handle the special case of the dialogs then
+ QWidget * w = ((QApplication *)g_pApp)->activeWindow();
+ if(w->inherits("QDialog"))
+ {
+ // but make sure that the frame is visible at all!
+ if(!frame()->isVisible())return false;
+ return true;
+ }
+ // any other class is so unfrequent that we ignore it
+ } else {
+ // when the window is undocked, instead
+ // it is likely to be covered by KVIrc or other windows...
+ if(isActiveWindow())return true;
+ }
+ return false;
+}
+
+void KviWindow::demandAttention()
+{
+ if(mdiParent())
+ {
+ if(frame()->isActiveWindow())return;
+#ifdef COMPILE_ON_WINDOWS
+ FLASHWINFO fwi;
+ fwi.cbSize = sizeof(fwi);
+ fwi.hwnd = (HWND)(frame()->winId());
+ fwi.dwFlags = FLASHW_TRAY | FLASHW_TIMERNOFG;
+ fwi.uCount = 20;
+ fwi.dwTimeout = 500;
+ FlashWindowEx(&fwi);
+#else
+ #ifdef COMPILE_KDE_SUPPORT
+ #if (KDE_VERSION_MAJOR >= 3) && (KDE_VERSION_MINOR >= 2)
+ KWin::demandAttention(frame()->winId(),true);
+ #endif
+ #endif
+#endif
+ } else {
+ if(isActiveWindow())return;
+#ifdef COMPILE_ON_WINDOWS
+ FLASHWINFO fwi;
+ fwi.cbSize = sizeof(fwi);
+ fwi.hwnd = (HWND)winId();
+ fwi.dwFlags = FLASHW_TRAY | FLASHW_TIMERNOFG;
+ fwi.uCount = 20;
+ fwi.dwTimeout = 500;
+ FlashWindowEx(&fwi);
+#else
+ #ifdef COMPILE_KDE_SUPPORT
+ #if (KDE_VERSION_MAJOR >= 3) && (KDE_VERSION_MINOR >= 2)
+ KWin::demandAttention(winId(),true);
+ #endif
+ #endif
+#endif
+ }
+}
+
+bool KviWindow::focusNextPrevChild(bool next)
+{
+ QWidget * w = focusWidget();
+ if(w)
+ {
+#ifdef COMPILE_USE_QT4
+ if(w->focusPolicy() == Qt::StrongFocus)return false;
+#else
+ if(w->focusPolicy() == QWidget::StrongFocus)return false;
+#endif
+ //QVariant v = w->property("KviProperty_FocusOwner");
+ //if(v.isValid())return false; // Do NOT change the focus widget!
+
+ if(w->parent())
+ {
+#ifdef COMPILE_USE_QT4
+ if(w->parent()->metaObject()->indexOfProperty("KviProperty_ChildFocusOwner") == -1)
+#else
+ if(w->parent()->metaObject()->findProperty("KviProperty_ChildFocusOwner") == -1)
+#endif
+ return false; // Do NOT change the focus widget!
+ }
+ }
+
+ return QWidget::focusNextPrevChild(next);
+}
+
+void KviWindow::forceTextCodec(QTextCodec * c)
+{
+ if(!c)return;
+ m_pTextCodec = c;
+ QTextCodec * dc = defaultTextCodec();
+ if(dc != c)
+ m_szTextEncoding = c->name();
+ else
+ m_szTextEncoding = ""; // this is the default anyway
+}
+
+bool KviWindow::setTextEncoding(const QString &szTextEncoding)
+{
+ if(!szTextEncoding.isEmpty())
+ {
+ m_pTextCodec = KviLocale::codecForName(szTextEncoding.latin1());
+ if(m_pTextCodec)
+ {
+ m_szTextEncoding = szTextEncoding;
+ return true;
+ }
+ // this is an error because we specified an encoding
+ // and we couldn't find a codec for this
+ } // else it is empty : this means : guess from locale
+ // either empty or not found...
+ m_pTextCodec = 0;
+ m_szTextEncoding = ""; // empty: we're using the default
+ return false;
+}
+
+QTextCodec * KviWindow::defaultTextCodec()
+{
+ // if we have a connection try to inherit from there...
+ if(connection())
+ {
+ QTextCodec * c = connection()->textCodec();
+ if(c)return c;
+ }
+ return KviApp::defaultTextCodec();
+}
+
+KviQCString KviWindow::encodeText(const QString &szText)
+{
+ if(!m_pTextCodec)return defaultTextCodec()->fromUnicode(szText);
+ return m_pTextCodec->fromUnicode(szText);
+}
+
+QString KviWindow::decodeText(const char * szText)
+{
+ if(!m_pTextCodec)return defaultTextCodec()->toUnicode(szText);
+ return m_pTextCodec->toUnicode(szText);
+}
+
+bool KviWindow::activityMeter(unsigned int *,unsigned int *)
+{
+ return false;
+}
+
+
+const char * KviWindow::m_typeTable[KVI_WINDOW_NUM_TYPES + 1]=
+{
+ "console",
+ "channel",
+ "query",
+ "help",
+ "terminal",
+ "editor",
+ "dccchat",
+ "dccsend",
+ "socketspy",
+ "links",
+ "tool",
+ "gnutella",
+ "dirbrowser",
+ "dcccanvas",
+ "dccvoice",
+ "list",
+ "offer",
+ "logview",
+ "deadchannel",
+ "deadquery",
+ "scripteditor",
+ "scriptobject",
+ "userwindow",
+ "debug",
+ // <------ NEW TYPES GO HERE!
+ "unknown"
+};
+
+const char * KviWindow::typeString()
+{
+ if(m_iType < KVI_WINDOW_NUM_TYPES)
+ {
+ return m_typeTable[m_iType];
+ }
+ return m_typeTable[KVI_WINDOW_NUM_TYPES];
+}
+
+void KviWindow::setType(int iType)
+{
+ m_iType = iType;
+}
+
+
+void KviWindow::createTaskBarItem()
+{
+ if(m_pTaskBarItem)return;
+ m_pTaskBarItem = g_pFrame->m_pTaskBar->addItem(this);
+}
+
+void KviWindow::destroyTaskBarItem()
+{
+ if(!m_pTaskBarItem)return;
+ g_pFrame->m_pTaskBar->removeItem(m_pTaskBarItem);
+ // m_pTaskBarItem = 0; // actually the taskBarItem destructor sets it
+}
+
+BUTTON_CLASS * KviWindow::createToolButton(QWidget * par,const char * nam,int pixon,int pixoff,const QString & tooltip,bool bOn)
+{
+#ifdef COMPILE_USE_QT4
+ BUTTON_CLASS * b = new BUTTON_CLASS(par);
+ b->setObjectName(nam);
+ b->setFlat(true);
+ b->setIcon(QIcon(*(g_pIconManager->getSmallIcon(pixon))));
+#else
+ BUTTON_CLASS * b = new BUTTON_CLASS(par,nam);
+ b->setToggleButton(true);
+ b->setUsesBigPixmap(false);
+ QIconSet is1;
+ is1.setPixmap(*(g_pIconManager->getSmallIcon(pixon)),QIconSet::Small,QIconSet::Normal,QIconSet::On);
+ is1.setPixmap(*(g_pIconManager->getSmallIcon(pixoff)),QIconSet::Small,QIconSet::Normal,QIconSet::Off);
+ b->setIconSet(is1);
+#endif
+
+
+ KviTalToolTip::add
+ (b,tooltip);
+ b->setOn(bOn);
+ return b;
+}
+
+// This is always defined...
+void KviWindow::createCryptControllerButton(QWidget * par)
+{
+#ifdef COMPILE_CRYPT_SUPPORT
+ m_pCryptControllerButton = new KviWindowToolPageButton(KVI_SMALLICON_UNLOCKEDOFF,KVI_SMALLICON_UNLOCKED,__tr2qs("Crypting"),buttonContainer(),false,"crypt_controller_button");
+ connect(m_pCryptControllerButton,SIGNAL(clicked()),this,SLOT(toggleCryptController()));
+#endif // COMPILE_CRYPT_SUPPORT
+}
+
+void KviWindow::createTextEncodingButton(QWidget * par)
+{
+ if(m_pTextEncodingButton)delete m_pTextEncodingButton;
+ m_pTextEncodingButton = createToolButton(par,"text_encoding_button",KVI_SMALLICON_TEXTENCODING,KVI_SMALLICON_TEXTENCODING,__tr2qs("Private Text Encoding"),false);
+ connect(m_pTextEncodingButton,SIGNAL(clicked()),this,SLOT(textEncodingButtonClicked()));
+}
+
+void KviWindow::textEncodingButtonClicked()
+{
+ createSystemTextEncodingPopup();
+ g_pMdiWindowSystemTextEncodingPopup->popup(m_pTextEncodingButton->mapToGlobal(QPoint(0,m_pTextEncodingButton->height())));
+ m_pTextEncodingButton->setOn(false);
+}
+
+const QString & KviWindow::lastLineOfText()
+{
+ if(m_pIrcView)
+ return m_pIrcView->lastLineOfText();
+ return KviQString::empty;
+}
+
+const QString & KviWindow::lastMessageText()
+{
+ if(m_pIrcView)
+ return m_pIrcView->lastMessageText();
+ return KviQString::empty;
+}
+
+// The following three have to be here even if the crypt support is disabled...moc does not support conditional compilations
+void KviWindow::toggleCryptController()
+{
+#ifdef COMPILE_CRYPT_SUPPORT
+ if(!m_pCryptControllerButton->isOn())
+ {
+ if(m_pCryptController)
+ {
+ delete m_pCryptController;
+ m_pCryptController = 0;
+ if(!m_pCryptControllerButton)
+ return;
+ if(m_pCryptControllerButton->isOn())
+ m_pCryptControllerButton->setOn(false);
+ }
+ } else {
+ if(m_pSplitter && m_pInput)
+ {
+ m_pCryptController = new KviCryptController(m_pSplitter,m_pCryptControllerButton,"crypt_controller",this,m_pCryptSessionInfo);
+ connect(m_pCryptController,SIGNAL(done()),this,SLOT(cryptControllerFinished()));
+ //setFocusHandlerNoClass(m_pInput,m_pCryptController,"QLineEdit"); //link it!
+ m_pCryptController->show();
+ if(!m_pCryptControllerButton)
+ return;
+ if(!(m_pCryptControllerButton->isOn()))
+ m_pCryptControllerButton->setOn(true);
+ }
+ }
+#endif // COMPILE_CRYPT_SUPPORT
+}
+
+#ifdef COMPILE_CRYPT_SUPPORT
+void KviWindow::setCryptSessionInfo(KviCryptSessionInfo * inf)
+{
+ if(m_pCryptSessionInfo)
+ KviCryptController::destroyCryptSessionInfo(&m_pCryptSessionInfo);
+ m_pCryptSessionInfo = inf;
+ if(m_pCryptSessionInfo)
+ {
+ connect(m_pCryptSessionInfo->pEngine,SIGNAL(destroyed()),this,SLOT(cryptSessionInfoDestroyed()));
+ }
+ if(m_pCryptControllerButton)
+ {
+#if QT_VERSION >= 300
+ QIconSet is;
+ is.setPixmap(*(g_pIconManager->getSmallIcon(m_pCryptSessionInfo ? KVI_SMALLICON_LOCKEDOFF : KVI_SMALLICON_UNLOCKEDOFF)),QIconSet::Small,QIconSet::Normal,QIconSet::Off);
+ is.setPixmap(*(g_pIconManager->getSmallIcon(m_pCryptSessionInfo ? KVI_SMALLICON_LOCKED : KVI_SMALLICON_UNLOCKED)),QIconSet::Small,QIconSet::Normal,QIconSet::On);
+ m_pCryptControllerButton->setIconSet(is);
+#else
+
+ m_pCryptControllerButton->setOnIconSet(
+ *(g_pIconManager->getSmallIcon(m_pCryptSessionInfo ? KVI_SMALLICON_LOCKEDOFF : KVI_SMALLICON_UNLOCKEDOFF)));
+ m_pCryptControllerButton->setOffIconSet(
+ *(g_pIconManager->getSmallIcon(m_pCryptSessionInfo ? KVI_SMALLICON_LOCKED : KVI_SMALLICON_UNLOCKED)));
+#endif
+
+ if(m_pCryptControllerButton->isOn())
+ m_pCryptControllerButton->setOn(false);
+ }
+}
+#endif // COMPILE_CRYPT_SUPPORT
+
+void KviWindow::cryptControllerFinished()
+{
+#ifdef COMPILE_CRYPT_SUPPORT
+ KviCryptSessionInfo * inf = m_pCryptController->getNewSessionInfo();
+ setCryptSessionInfo(inf);
+ delete m_pCryptController;
+ m_pCryptController = 0;
+#endif
+}
+
+void KviWindow::cryptSessionInfoDestroyed()
+{
+#ifdef COMPILE_CRYPT_SUPPORT
+ output(KVI_OUT_SYSTEMERROR,__tr2qs("Ops...I've accidentally lost the crypting engine..."));
+ m_pCryptSessionInfo->pEngine = 0;
+ delete m_pCryptSessionInfo;
+ m_pCryptSessionInfo = 0;
+#endif
+}
+
+
+
+void KviWindow::setProgress(int progress)
+{
+ m_pTaskBarItem->setProgress(progress);
+}
+
+void KviWindow::listWindowTypes()
+{
+ outputNoFmt(KVI_OUT_SYSTEMMESSAGE,__tr2qs("List of window types available in this release of KVIrc:"));
+ for(int i=0;i< KVI_WINDOW_NUM_TYPES;i++)
+ outputNoFmt(KVI_OUT_SYSTEMMESSAGE,m_typeTable[i]);
+}
+
+void KviWindow::getConfigGroupName(QString &buf)
+{
+ buf = typeString();
+}
+
+
+void KviWindow::getDefaultLogFileName(QString &buffer)
+{
+ // FIXME: #warning "Make it configurable ?"
+ QString date;
+ QDate dt(QDate::currentDate());
+ date=dt.toString("yyyy.MM.dd");
+ QString base;
+ getBaseLogFileName(base);
+ kvi_encodeFileName(base);
+ base.replace("%%2e","%2e");
+ base=base.lower();
+ QString tmp;
+ if(KVI_OPTION_BOOL(KviOption_boolGzipLogs))
+ KviQString::sprintf(tmp,"%s_%s_%s.log.gz",typeString(),base.utf8().data(),date.utf8().data());
+ else
+ KviQString::sprintf(tmp,"%s_%s_%s.log",typeString(),base.utf8().data(),date.utf8().data());
+ g_pApp->getLocalKvircDirectory(buffer,KviApp::Log,tmp);
+}
+
+/*void KviWindow::getBaseLogFileName(KviStr &buffer)
+{
+ buffer = m_szName;
+}*/
+
+void KviWindow::getBaseLogFileName(QString &buffer)
+{
+ buffer = m_szName;
+}
+
+
+void KviWindow::saveProperties(KviConfig *cfg)
+{
+ // store only the non-default text encoding.
+ QString szCodec = m_szTextEncoding;
+ QTextCodec * c = defaultTextCodec();
+ if(c && m_pTextCodec)
+ {
+#ifdef COMPILE_USE_QT4
+ if(KviQString::equalCI(szCodec,c->name().data()))szCodec = KviQString::empty; // store "default"
+#else
+ if(KviQString::equalCI(szCodec,c->name()))szCodec = KviQString::empty; // store "default"
+#endif
+ }
+ QString szKey = "TextEncoding_";
+ szKey += m_szName;
+ cfg->writeEntry(szKey,szCodec);
+ if(m_pInput) {
+ cfg->writeEntry("inputToolButtonsHidden",m_pInput->isButtonsHidden());
+ cfg->writeEntry("commandLineIsUserFriendly",m_pInput->isUserFriendly());
+ }
+
+ //
+
+ /*if(m_pIrcView && m_iType==KVI_WINDOW_TYPE_CHANNEL)
+ if(m_pIrcView->isLogging())
+ cfg->writeEntry("LoggingEnabled",m_pIrcView->isLogging());*/
+}
+
+void KviWindow::loadProperties(KviConfig *cfg)
+{
+ QString szKey = "TextEncoding_";
+ szKey += m_szName;
+ setTextEncoding(cfg->readQStringEntry(szKey,KviQString::empty).utf8().data());
+ if(m_pInput) {
+ m_pInput->setButtonsHidden(cfg->readBoolEntry("inputToolButtonsHidden",KVI_OPTION_BOOL(KviOption_boolHideInputToolButtons)));
+ m_pInput->setUserFriendly(cfg->readBoolEntry("commandLineIsUserFriendly",KVI_OPTION_BOOL(KviOption_boolCommandlineInUserFriendlyModeByDefault)));
+ }
+/* if(m_pIrcView && m_iType==KVI_WINDOW_TYPE_CHANNEL)
+ {
+ bool bEnableLogs=cfg->readBoolEntry("LoggingEnabled",0);
+ if(!m_pIrcView->isLogging() && bEnableLogs)
+ {
+ QString szTmp;
+ getBaseLogFileName(szTmp);
+ m_pIrcView->startLogging();
+ }
+ }*/
+}
+
+QPixmap * KviWindow::myIconPtr()
+{
+ return g_pIconManager->getSmallIcon(KVI_SMALLICON_DEFAULTICON);
+}
+
+void KviWindow::getTaskBarTipText(QString &buffer)
+{
+ buffer = m_szPlainTextCaption;
+}
+
+void KviWindow::setFixedCaption(const QString &szCaption)
+{
+ m_szPlainTextCaption = szCaption;
+}
+
+void KviWindow::fillCaptionBuffers()
+{
+ QString szCaption = m_szPlainTextCaption;
+ if(szCaption.isEmpty())
+ szCaption = m_szName;
+
+ fillSingleColorCaptionBuffers(szCaption);
+}
+
+void KviWindow::fillSingleColorCaptionBuffers(const QString &szName)
+{
+ static QString p1("<nobr><font color=\"");
+ static QString p2("\"><b>");
+ static QString p3("</b></font></nobr>");
+
+ m_szPlainTextCaption = szName;
+
+ m_szHtmlActiveCaption = p1;
+ m_szHtmlActiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name();
+ m_szHtmlActiveCaption += p2;
+ m_szHtmlActiveCaption += szName;
+ m_szHtmlActiveCaption += p3;
+
+ m_szHtmlInactiveCaption = p1;
+ m_szHtmlInactiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name();
+ m_szHtmlInactiveCaption += p2;
+ m_szHtmlInactiveCaption += szName;
+ m_szHtmlInactiveCaption += p3;
+}
+
+void KviWindow::updateCaption()
+{
+ fillCaptionBuffers();
+ if(mdiParent())
+ mdiParent()->setCaption(plainTextCaption(),htmlActiveCaption(),htmlInactiveCaption());
+ else
+ setCaption(plainTextCaption());
+ if(m_pTaskBarItem)m_pTaskBarItem->captionChanged();
+ if(mdiParent() && isMaximized() && (g_pActiveWindow == this))
+ g_pFrame->updateCaption();
+}
+
+void KviWindow::createSystemTextEncodingPopup()
+{
+ if(!g_pMdiWindowSystemTextEncodingPopup)
+ g_pMdiWindowSystemTextEncodingPopup = new KviTalPopupMenu();
+ else
+ {
+ g_pMdiWindowSystemTextEncodingPopup->clear();
+ }
+
+ if(!g_pMdiWindowSystemTextEncodingPopupStandard)
+ g_pMdiWindowSystemTextEncodingPopupStandard = new KviTalPopupMenu();
+ else
+ {
+ g_pMdiWindowSystemTextEncodingPopupStandard->clear();
+ disconnect(g_pMdiWindowSystemTextEncodingPopupStandard,SIGNAL(activated(int)),0,0);
+ }
+
+ if(!g_pMdiWindowSystemTextEncodingPopupSmart)
+ g_pMdiWindowSystemTextEncodingPopupSmart = new KviTalPopupMenu();
+ else
+ {
+ g_pMdiWindowSystemTextEncodingPopupSmart->clear();
+ disconnect(g_pMdiWindowSystemTextEncodingPopupSmart,SIGNAL(activated(int)),0,0);
+ }
+
+ if(!g_pMdiWindowSystemTextEncodingPopupSmartUtf8)
+ g_pMdiWindowSystemTextEncodingPopupSmartUtf8 = new KviTalPopupMenu();
+ else
+ {
+ g_pMdiWindowSystemTextEncodingPopupSmartUtf8->clear();
+ disconnect(g_pMdiWindowSystemTextEncodingPopupSmartUtf8,SIGNAL(activated(int)),0,0);
+ }
+
+ QTextCodec * c = defaultTextCodec();
+ QString tmp = __tr2qs("Use Default Encoding");
+ if(c)
+ {
+ tmp += " (";
+ tmp += c->name();
+ tmp += ")";
+ }
+
+ int id = g_pMdiWindowSystemTextEncodingPopup->insertItem(tmp,this,SLOT(systemTextEncodingPopupDefault()));
+ if(m_szTextEncoding.isEmpty())g_pMdiWindowSystemTextEncodingPopup->setItemChecked(id,true);
+ g_pMdiWindowSystemTextEncodingPopup->insertSeparator();
+
+ g_pMdiWindowSystemTextEncodingPopup->insertItem(__tr2qs("Standard"),g_pMdiWindowSystemTextEncodingPopupStandard);
+ g_pMdiWindowSystemTextEncodingPopup->insertItem(__tr2qs("Smart (Send Local)"),g_pMdiWindowSystemTextEncodingPopupSmart);
+ g_pMdiWindowSystemTextEncodingPopup->insertItem(__tr2qs("Smart (Send UTF-8)"),g_pMdiWindowSystemTextEncodingPopupSmartUtf8);
+
+ int i = 0;
+ KviLocale::EncodingDescription * d = KviLocale::encodingDescription(i);
+ while(d->szName)
+ {
+ KviQString::sprintf(tmp,"%s (%s)",d->szName,d->szDescription);
+ KviTalPopupMenu * ppp = d->bSmart ? (d->bSendUtf8 ? g_pMdiWindowSystemTextEncodingPopupSmartUtf8 : g_pMdiWindowSystemTextEncodingPopupSmart) : g_pMdiWindowSystemTextEncodingPopupStandard;
+ id = ppp->insertItem(tmp);
+ if(KviQString::equalCI(m_szTextEncoding,d->szName))
+ ppp->setItemChecked(id,true);
+ i = i + 1;
+ d = KviLocale::encodingDescription(i);
+ }
+
+ connect(g_pMdiWindowSystemTextEncodingPopupSmart,SIGNAL(activated(int)),this,SLOT(systemTextEncodingPopupSmartActivated(int)));
+ connect(g_pMdiWindowSystemTextEncodingPopupSmartUtf8,SIGNAL(activated(int)),this,SLOT(systemTextEncodingPopupSmartUtf8Activated(int)));
+ connect(g_pMdiWindowSystemTextEncodingPopupStandard,SIGNAL(activated(int)),this,SLOT(systemTextEncodingPopupStandardActivated(int)));
+}
+
+
+void KviWindow::systemPopupRequest(const QPoint &pnt)
+{
+ if(!g_pMdiWindowSystemMainPopup)
+ g_pMdiWindowSystemMainPopup = new KviTalPopupMenu();
+ else
+ {
+ g_pMdiWindowSystemMainPopup->clear();
+ g_pMdiWindowSystemMainPopup->disconnect();
+ }
+
+ if(mdiParent())
+ g_pMdiWindowSystemMainPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_UNDOCK)),
+ __tr2qs("&Undock"),this,SLOT(undock()));
+ else
+ g_pMdiWindowSystemMainPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DOCK)),
+ __tr2qs("&Dock"),this,SLOT(dock()));
+
+ g_pMdiWindowSystemMainPopup->insertSeparator();
+
+ int id = g_pMdiWindowSystemMainPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_MINIMIZE)),
+ __tr2qs("Mi&nimize"),this,SLOT(minimize()));
+ g_pMdiWindowSystemMainPopup->setItemEnabled(id,!isMinimized());
+ id = g_pMdiWindowSystemMainPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_MAXIMIZE)),
+ __tr2qs("Ma&ximize"),this,SLOT(maximize()));
+ g_pMdiWindowSystemMainPopup->setItemEnabled(id,!isMaximized());
+ id = g_pMdiWindowSystemMainPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_RESTORE)),
+ __tr2qs("&Restore"),this,SLOT(restore()));
+ g_pMdiWindowSystemMainPopup->setItemEnabled(id,isMinimized()||isMaximized());
+
+ g_pMdiWindowSystemMainPopup->insertSeparator();
+
+ g_pMdiWindowSystemMainPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CLOSE)),
+ __tr2qs("Close"),this,SLOT(close()));
+
+ g_pMdiWindowSystemMainPopup->insertSeparator();
+
+ if(m_pTextEncodingButton)
+ {
+ createSystemTextEncodingPopup();
+ g_pMdiWindowSystemMainPopup->insertItem(__tr2qs("Text &Encoding"),g_pMdiWindowSystemTextEncodingPopup);
+ } // else we don't support setting private encoding anyway
+
+
+ g_pMdiWindowSystemMainPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_XY)),
+ __tr2qs("Sa&ve Window Properties"),this,SLOT(savePropertiesAsDefault()));
+
+ fillContextPopup(g_pMdiWindowSystemMainPopup);
+
+ g_pMdiWindowSystemMainPopup->popup(pnt);
+}
+
+void KviWindow::systemTextEncodingPopupDefault()
+{
+ // default
+ setTextEncoding("");
+}
+
+void KviWindow::systemTextEncodingPopupSmartActivated(int id)
+{
+ if(!g_pMdiWindowSystemTextEncodingPopupSmart)
+ return;
+ QString tmp = g_pMdiWindowSystemTextEncodingPopupSmart->text(id);
+ KviQString::cutFromFirst(tmp," (");
+ setTextEncoding(tmp);
+}
+
+void KviWindow::systemTextEncodingPopupSmartUtf8Activated(int id)
+{
+ if(!g_pMdiWindowSystemTextEncodingPopupSmartUtf8)
+ return;
+ QString tmp = g_pMdiWindowSystemTextEncodingPopupSmartUtf8->text(id);
+ KviQString::cutFromFirst(tmp," (");
+ setTextEncoding(tmp);
+}
+
+void KviWindow::systemTextEncodingPopupStandardActivated(int id)
+{
+ if(!g_pMdiWindowSystemTextEncodingPopupStandard)
+ return;
+ QString tmp = g_pMdiWindowSystemTextEncodingPopupStandard->text(id);
+ KviQString::cutFromFirst(tmp," (");
+ setTextEncoding(tmp);
+}
+
+void KviWindow::savePropertiesAsDefault()
+{
+ QString group;
+ getConfigGroupName(group);
+
+ if(!kvi_strEqualCI(group,typeString()))
+ {
+ // save also the settings for THIS specialized window
+ g_pFrame->saveWindowProperties(this,group);
+ }
+
+ g_pFrame->saveWindowProperties(this,typeString());
+}
+
+void KviWindow::contextPopup()
+{
+ systemPopupRequest(QCursor::pos());
+}
+
+void KviWindow::fillContextPopup(KviTalPopupMenu *)
+{
+ // nothing here
+}
+
+void KviWindow::undock()
+{
+ g_pFrame->undockWindow(this);
+}
+
+void KviWindow::dock()
+{
+ g_pFrame->dockWindow(this);
+}
+
+void KviWindow::delayedAutoRaise()
+{
+ QTimer::singleShot(0,this,SLOT(autoRaise()));
+}
+
+void KviWindow::autoRaise()
+{
+ if(!mdiParent())
+ {
+ raise();
+ setActiveWindow();
+ }
+ if(m_pFocusHandler)
+ m_pFocusHandler->setFocus();
+ else
+ setFocus();
+}
+
+void KviWindow::delayedClose()
+{
+ QTimer::singleShot(0,this,SLOT(close()));
+}
+
+void KviWindow::closeEvent(QCloseEvent *e)
+{
+ e->ignore();
+ g_pFrame->childWindowCloseRequest(this);
+}
+
+void KviWindow::updateIcon()
+{
+ if(parent())
+ {
+ ((KviMdiChild *)parent())->setIcon(*myIconPtr());
+ } else {
+ setIcon(*myIconPtr());
+ }
+}
+
+void KviWindow::youAreDocked()
+{
+ if(m_pAccel)
+ {
+ delete m_pAccel;
+ m_pAccel = 0;
+ }
+ ((KviMdiChild *)parent())->setIcon(*myIconPtr());
+ updateCaption();
+ connect(((KviMdiChild *)parent()),SIGNAL(systemPopupRequest(const QPoint &)),this,SLOT(systemPopupRequest(const QPoint &)));
+}
+
+void KviWindow::youAreUndocked()
+{
+ m_pAccel = g_pFrame->installAccelerators(this);
+ setIcon(*myIconPtr());
+ updateCaption();
+}
+
+#ifdef FocusIn
+// Hack for X.h
+#undef FocusIn
+#endif
+
+void KviWindow::activateSelf()
+{
+ if(mdiParent())
+ mdiParent()->activate(false);
+
+ g_pFrame->childWindowActivated(this);
+ // this is now done by KviFrame in childWindowActivated
+ //g_pFrame->m_pTaskBar->setActiveItem(m_pTaskBarItem);
+}
+
+void KviWindow::setFocus()
+{
+ // don't trigger the whole Qt focus mechanism..
+ // just trigger directly our focusInEvent
+ // so we'll redirect the focus to the m_pFocusHandler
+ focusInEvent(0);
+}
+
+void KviWindow::focusInEvent(QFocusEvent *)
+{
+ if(m_pLastFocusedChild)
+ {
+ if(m_pLastFocusedChild->hasFocus() && m_pLastFocusedChild->isVisible())
+ {
+ // the last focused child still has focus (ehm ???)
+ if(g_pActiveWindow != this)activateSelf();
+ return;
+ }
+ }
+
+ if(!m_pFocusHandler)
+ {
+ // must find one NOW
+ // we probably have no KviInput since it would have been grabbed anyway
+
+ if(m_pIrcView)m_pFocusHandler = m_pIrcView;
+ else {
+#ifdef COMPILE_USE_QT4
+ QList<QObject *> list = children();
+ for(QList<QObject *>::Iterator it = list.begin();it != list.end();++it)
+ {
+ QObject * c = *it;
+ if(c->isWidgetType())
+ {
+ m_pFocusHandler = (QWidget *)c;
+ break;
+ }
+ }
+#else
+ QObjectList *list = (QObjectList *)(children());
+ if(list)
+ {
+ for(QObject * c = list->first();c;c = list->next())
+ {
+ if(c->isWidgetType())
+ {
+ m_pFocusHandler = (QWidget *)c;
+ break;
+ }
+ }
+ }
+#endif
+ }
+ if(m_pFocusHandler)m_pFocusHandler->setFocus();
+ else {
+ // else too bad :/
+ debug("No widget able to handle focus for window %s",name());
+ return;
+ }
+ } else {
+ m_pFocusHandler->setFocus();
+ }
+
+ // Setting the focus to the focus handler usually
+ // triggers our filter for the children's focusInEvent.
+ // This should call activateSelf() and thus
+ // we should be already the active window at this point.
+ // If we're not, then run activateSelf() to fix this.
+ if(g_pActiveWindow != this)activateSelf();
+ //else debug("ACTIVE WINDOW IS ALREADY THIS");
+ updateCaption();
+}
+
+bool KviWindow::eventFilter(QObject *o,QEvent *e)
+{
+ switch(e->type())
+ {
+ case QEvent::FocusIn:
+ m_pLastFocusedChild = (QWidget *)o;
+ if(g_pActiveWindow != this)activateSelf();
+ break;
+ case QEvent::Enter:
+ // this is a handler moved here from KviMdiChild::eventFilter
+ if(QApplication::overrideCursor())
+ QApplication::restoreOverrideCursor();
+ break;
+ case QEvent::MouseButtonPress:
+#ifdef COMPILE_USE_QT4
+ if( (((QWidget *)o)->focusPolicy() == Qt::NoFocus) ||
+ (((QWidget *)o)->focusPolicy() == Qt::TabFocus))
+#else
+ if( (((QWidget *)o)->focusPolicy() == QWidget::NoFocus) ||
+ (((QWidget *)o)->focusPolicy() == QWidget::TabFocus))
+#endif
+ {
+ // this will not focus our window
+ // set the focus to the focus handler
+ if(m_pLastFocusedChild)
+ {
+ if(m_pLastFocusedChild->hasFocus() && m_pLastFocusedChild->isVisible())
+ return false;
+ }
+
+ if(m_pFocusHandler)
+ {
+ m_pFocusHandler->setFocus();
+ } else {
+ setFocus(); // we grab the focus (someone must do it , damn :D)
+ }
+ }
+ break;
+ case QEvent::ChildInserted:
+ if(((QChildEvent *)e)->child()->isWidgetType())
+ childInserted((QWidget *)((QChildEvent *)e)->child());
+ break;
+ case QEvent::ChildRemoved:
+ if(((QChildEvent *)e)->child()->isWidgetType())
+ childRemoved((QWidget *)((QChildEvent *)e)->child());
+ break;
+ default: /* make gcc happy */ break;
+ }
+ return false;
+}
+
+
+void KviWindow::childInserted(QWidget * o)
+{
+ o->removeEventFilter(this); // ensure that we don't filter twice
+ o->installEventFilter(this); // we filter its events
+ connect(o,SIGNAL(destroyed()),this,SLOT(childDestroyed()));
+
+ if(o->inherits("KviInput"))
+ m_pFocusHandler = o;
+ else
+ {
+#ifdef COMPILE_USE_QT4
+ if(!m_pFocusHandler && (o->focusPolicy() == Qt::StrongFocus))
+#else
+ if(!m_pFocusHandler && (o->focusPolicy() == QWidget::StrongFocus))
+#endif
+ {
+ m_pFocusHandler = o;
+ }
+ }
+
+#ifdef COMPILE_USE_QT4
+ QList<QObject *> list = o->children();
+ for(QList<QObject *>::Iterator it = list.begin();it != list.end();++it)
+ {
+ QObject * c = *it;
+ if(c->isWidgetType())
+ {
+ childInserted((QWidget *)c);
+ }
+ }
+#else
+ QObjectList *list = (QObjectList *)(o->children());
+ if(list)
+ {
+ for(QObject * c = list->first();c;c = list->next())
+ {
+ if(c->isWidgetType())
+ childInserted((QWidget *)c);
+ }
+ }
+#endif
+}
+
+void KviWindow::childDestroyed()
+{
+ QWidget * s = (QWidget *)sender();
+ childRemoved(s);
+}
+
+void KviWindow::childRemoved(QWidget * o)
+{
+ //debug("CHILD REMOVED %d",o);
+ o->removeEventFilter(this);
+ if(o == m_pFocusHandler)
+ m_pFocusHandler = 0;
+ if(o == m_pLastFocusedChild)
+ m_pLastFocusedChild = 0;
+
+#ifdef COMPILE_USE_QT4
+ QList<QObject *> list = o->children();
+ for(QList<QObject *>::Iterator it = list.begin();it != list.end();++it)
+ {
+ QObject * c = *it;
+ if(c->isWidgetType())
+ {
+ childRemoved((QWidget *)c);
+ }
+ }
+#else
+ QObjectList *list = (QObjectList *)(o->children());
+ if(list)
+ {
+ for(QObject * c = list->first();c;c = list->next())
+ {
+ if(c->isWidgetType())
+ childRemoved((QWidget *)c);
+ }
+ } //else debug("The removed object has no children");
+#endif
+}
+
+void KviWindow::childEvent(QChildEvent *e)
+{
+ if(e->child()->isWidgetType())
+ {
+ if(e->removed())
+ childRemoved((QWidget *)(e->child()));
+ else
+ childInserted((QWidget *)(e->child()));
+ }
+ QWidget::childEvent(e);
+}
+
+void KviWindow::wheelEvent(QWheelEvent *e)
+{
+ /* NOTHING HERE FOR NOW (FIXME) */
+}
+
+
+void KviWindow::childrenTreeChanged(QWidget * widgetAdded)
+{
+ // if(widgetAdded && m_pFocusHandler)setFocusHandler(m_pFocusHandler,widgetAdded);
+ // FIXME: This might be useless
+ QResizeEvent * e = new QResizeEvent(size(),size());
+ resizeEvent(e);
+ delete e;
+}
+
+
+void KviWindow::updateBackgrounds(QObject * obj)
+{
+ if(!obj)
+ obj = this;
+#ifdef COMPILE_USE_QT4
+ QList<QObject *> list = obj->children();
+ if (list.count())
+ {
+
+ for(QList<QObject *>::Iterator it = list.begin();it != list.end();++it)
+ {
+ QObject * child = *it;
+ if(child->metaObject()->indexOfProperty("TransparencyCapable") != -1){
+ // if (child->isWidgetType())
+ ((QWidget *)child)->update();
+ }
+ updateBackgrounds(child);
+ }
+ }
+#else
+ QObjectList * list = (QObjectList *)(obj->children());
+ if(list)
+ {
+ for(unsigned int i=0;i<list->count();i++)
+ {
+ QObject * child = list->at(i);
+#if QT_VERSION >= 300
+ // FIXME: check if this code can work with qt < 3.0.0 too
+ if(child->metaObject()->findProperty("TransparencyCapable",true) != -1)
+ ((QWidget *)child)->update();
+#else
+
+ QVariant v = list->at(i)->property("TransparencyCapable");
+ if(v.isValid())
+ ((QWidget *)child)->update();
+#endif
+
+ updateBackgrounds(child);
+ }
+ }
+#endif
+}
+
+void KviWindow::moveEvent(QMoveEvent *e)
+{
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ updateBackgrounds();
+#endif
+
+ QWidget::moveEvent(e);
+}
+
+void KviWindow::minimize()
+{
+ if(mdiParent())
+ {
+ if(!isMinimized())
+ mdiParent()->minimize();
+ }
+ else
+ showMinimized();
+}
+
+void KviWindow::maximize()
+{
+ if(mdiParent())
+ {
+ if(!isMaximized())
+ mdiParent()->maximize();
+ }
+ else
+ showMaximized();
+ autoRaise();
+}
+
+bool KviWindow::isMinimized()
+{
+ if(mdiParent())
+ return (mdiParent()->state() == KviMdiChild::Minimized);
+ else
+ return QWidget::isMinimized();
+}
+
+bool KviWindow::isMaximized()
+{
+ if(mdiParent())
+ return (mdiParent()->state() == KviMdiChild::Maximized);
+ // Heh...how to check it ?
+ // Empirical check
+ int wdth = (g_pApp->desktop()->width() * 75) / 100;
+ int hght = (g_pApp->desktop()->height() * 75) / 100;
+
+ return ((x() <= 1)&&(y() <= 1)&&(width() >= wdth)&&(height() >= hght));
+}
+
+void KviWindow::restore()
+{
+ if(mdiParent())
+ {
+ if(isMinimized()||isMaximized())
+ mdiParent()->restore();
+ }
+ else
+ showNormal();
+ autoRaise();
+}
+
+QRect KviWindow::externalGeometry()
+{
+#ifndef Q_OS_MACX
+ return mdiParent() ? mdiParent()->restoredGeometry() : frameGeometry();
+#else
+ return mdiParent() ? mdiParent()->restoredGeometry() : geometry();
+#endif
+}
+
+void KviWindow::applyOptions()
+{
+ updateCaption();
+ if(m_pIrcView)m_pIrcView->applyOptions();
+ if(m_pInput)m_pInput->applyOptions();
+
+ // trick: relayout
+ resize(width() - 1,height() - 1);
+ resize(width() + 1,height() + 1);
+}
+
+KviWindow * KviWindow::outputProxy()
+{
+ return 0;
+}
+
+void KviWindow::lostUserFocus()
+{
+ if(!m_pIrcView)return;
+ if(m_pIrcView->hasLineMark())m_pIrcView->clearLineMark(true);
+}
+
+
+void KviWindow::internalOutput(KviIrcView * pView,int msg_type,const kvi_wchar_t * pText,int iFlags)
+{
+ // all roads lead to Rome :)
+
+ if(pView)
+ {
+ if((this != g_pActiveWindow) || (!isActiveWindow()))
+ {
+ if(!pView->hasLineMark())
+ {
+ iFlags |= KviIrcView::SetLineMark;
+ }
+ }
+ pView->appendText(msg_type,pText,iFlags);
+ } else {
+ // Redirect to the output proxy
+ KviWindow *wnd = outputProxy();
+ if(wnd)wnd->outputNoFmt(msg_type,pText,iFlags);
+ }
+
+ if(!m_pTaskBarItem) {
+ return;
+ }
+
+ // if this option is checked we dont highlight other than channel msg
+ if(KVI_OPTION_BOOL(KviOption_boolHighlightOnlyNormalMsg))
+ {
+ if((msg_type != KVI_OUT_CHANPRIVMSG) && (msg_type != KVI_OUT_CHANPRIVMSGCRYPTED))
+ {
+ if(!(
+ (
+ KVI_OPTION_BOOL(KviOption_boolHighlightOnlyNormalMsgQueryToo) &&
+ (
+ (msg_type == KVI_OUT_QUERYPRIVMSG) || (msg_type == KVI_OUT_QUERYTRACE) ||
+ (msg_type == KVI_OUT_QUERYPRIVMSGCRYPTED) || (msg_type == KVI_OUT_QUERYNOTICE) || (msg_type == KVI_OUT_QUERYNOTICECRYPTED)
+ )
+ )
+ ||
+ (
+ KVI_OPTION_BOOL(KviOption_boolHighlightOnlyNormalMsgHighlightInChanToo) && (msg_type == KVI_OUT_HIGHLIGHT)
+ )
+ )
+ )
+ return;
+ }
+ }
+
+ if(KVI_OPTION_BOOL(KviOption_boolHighlightOnlyAtCostumHighlightLevel) &&
+ (KVI_OPTION_MSGTYPE(msg_type).level() < ((int)(KVI_OPTION_UINT(KviOption_uintMinHighlightLevel)))))
+ {
+ return;
+ }
+
+ m_pTaskBarItem->highlight(KVI_OPTION_MSGTYPE(msg_type).level());
+}
+
+void KviWindow::output(int msg_type,const char *format,...)
+{
+ QString szFmt(format);
+ kvi_va_list l;
+ kvi_va_start(l,format);
+ QString szBuf;
+ KviQString::vsprintf(szBuf,szFmt,l);
+ kvi_va_end(l);
+ preprocessMessage(szBuf);
+ const QChar * pC = KviQString::nullTerminatedArray(szBuf);
+ if(!pC)return;
+ internalOutput(m_pIrcView,msg_type,(kvi_wchar_t *)pC);
+}
+
+void KviWindow::output(int msg_type,const QString &szFmt,...)
+{
+ kvi_va_list l;
+ kvi_va_start_by_reference(l,szFmt);
+ QString szBuf;
+ KviQString::vsprintf(szBuf,szFmt,l);
+ kvi_va_end(l);
+ preprocessMessage(szBuf);
+ const QChar * pC = KviQString::nullTerminatedArray(szBuf);
+ if(!pC)return;
+ internalOutput(m_pIrcView,msg_type,(kvi_wchar_t *)pC);
+}
+
+void KviWindow::output(int msg_type,const kvi_wchar_t *format,...)
+{
+ QString szFmt=QString::fromUtf8(KviStr(format).ptr());
+ kvi_va_list l;
+ kvi_va_start(l,format);
+ QString szBuf;
+ KviQString::vsprintf(szBuf,szFmt,l);
+ kvi_va_end(l);
+ preprocessMessage(szBuf);
+ const QChar * pC = KviQString::nullTerminatedArray(szBuf);
+ if(!pC)return;
+ internalOutput(m_pIrcView,msg_type,(kvi_wchar_t *)pC);
+}
+
+void KviWindow::outputNoFmt(int msg_type,const char * text,int iFlags)
+{
+ QString szText(text);
+ preprocessMessage(szText);
+ const QChar * pC = KviQString::nullTerminatedArray(szText);
+ if(!pC)return;
+ internalOutput(m_pIrcView,msg_type,(kvi_wchar_t *)pC,iFlags);
+}
+
+void KviWindow::outputNoFmt(int msg_type,const QString &szText,int iFlags)
+{
+ QString szBuf(szText);
+ preprocessMessage(szBuf);
+ const QChar * pC = KviQString::nullTerminatedArray(szBuf);
+ if(!pC)return;
+ internalOutput(m_pIrcView,msg_type,(kvi_wchar_t *)pC,iFlags);
+}
+
+void KviWindow::unhighlight()
+{
+ if(!m_pTaskBarItem)return;
+ m_pTaskBarItem->unhighlight();
+}
+
+/* This messes up a bit: for example it breaks the WHOIS output where
+ escapes are already present (checking for them here would be an overkill).
+ This should be eventually done ONLY for remote user message texts
+ in the server parser.
+
+ Fixed
+*/
+
+void KviWindow::preprocessMessage(QString & szMessage)
+{
+ // slow
+#ifdef COMPILE_USE_QT4
+ QStringList strings = szMessage.split(" ");
+#else
+ QStringList strings = QStringList::split(" ",szMessage, TRUE);
+#endif
+ for ( QStringList::Iterator it = strings.begin(); it != strings.end(); ++it ) {
+ QString tmp(*it);
+ if(tmp.contains('\r')) continue;
+ tmp = KviMircCntrl::stripControlBytes(tmp);
+ tmp.stripWhiteSpace();
+ if(m_pConsole)
+ if(m_pConsole->connection())
+ if(m_pConsole->connection()->serverInfo()->supportedChannelTypes().contains(tmp[0]))
+ if((*it)==tmp)
+ *it=QString("\r!c\r%1\r").arg(*it);
+ else
+ {
+ *it=QString("\r!c%1\r%2\r").arg(tmp).arg(*it);
+ }
+ }
+ szMessage=strings.join(" ");
+}
+
+
+#include "kvi_window.moc"
diff --git a/src/kvirc/ui/kvi_window.h b/src/kvirc/ui/kvi_window.h
new file mode 100644
index 00000000..419096fc
--- /dev/null
+++ b/src/kvirc/ui/kvi_window.h
@@ -0,0 +1,393 @@
+#ifndef _KVI_WINDOW_H_
+#define _KVI_WINDOW_H_
+//=============================================================================
+//
+// File : kvi_window.h
+// Creation date : Tue Jul 6 1999 14:52:20 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_string.h"
+#include "kvi_qstring.h"
+#include "kvi_qcstring.h"
+#include "kvi_settings.h"
+
+#ifdef COMPILE_ON_WINDOWS
+ // The brain-damaged MSVC compiler can't instantiate QList templates without a destructor definition
+ #include "kvi_mdichild.h"
+#else
+ class KviMdiChild;
+#endif
+
+#include <qframe.h>
+
+class KviFrame;
+class KviTaskBarItem;
+class KviConfig;
+class KviIrcView;
+class KviInput;
+class KviConsole;
+class KviIrcContext;
+class KviIrcConnection;
+class KviWindowToolPageButton;
+
+class KviTalPopupMenu;
+class QPixmap;
+class QSplitter;
+class KviTalHBox;
+class QToolButton;
+class QTextCodec;
+class KviTalWidgetStack;
+
+#include "kvi_tal_hbox.h"
+#include "kvi_tal_widgetstack.h"
+#include "kvi_accel.h"
+
+#ifdef COMPILE_CRYPT_SUPPORT
+ class KviCryptController;
+ class KviCryptSessionInfo;
+#endif
+
+#include <qwidget.h>
+
+//
+// Window types
+//
+// There are KVI_WINDOW_NUM_TYPES predefined
+// window types: these are used by the KVIrc core and distributed modules
+// If you add a new def, increase KVI_WINDOW_NUM_TYPES
+//
+
+#define KVI_WINDOW_TYPE_CONSOLE 0
+#define KVI_WINDOW_TYPE_CHANNEL 1
+#define KVI_WINDOW_TYPE_QUERY 2
+#define KVI_WINDOW_TYPE_HELP 3
+#define KVI_WINDOW_TYPE_TERM 4
+#define KVI_WINDOW_TYPE_EDITOR 5
+#define KVI_WINDOW_TYPE_DCCCHAT 6
+#define KVI_WINDOW_TYPE_DCCSEND 7
+#define KVI_WINDOW_TYPE_SOCKETSPY 8
+#define KVI_WINDOW_TYPE_LINKS 9
+#define KVI_WINDOW_TYPE_TOOL 10
+#define KVI_WINDOW_TYPE_GNUTELLA 11
+#define KVI_WINDOW_TYPE_DIRBROWSER 12
+#define KVI_WINDOW_TYPE_DCCCANVAS 13
+#define KVI_WINDOW_TYPE_DCCVOICE 14
+#define KVI_WINDOW_TYPE_LIST 15
+#define KVI_WINDOW_TYPE_OFFER 16
+#define KVI_WINDOW_TYPE_LOGVIEW 17
+#define KVI_WINDOW_TYPE_DEADCHANNEL 18
+#define KVI_WINDOW_TYPE_DEADQUERY 19
+#define KVI_WINDOW_TYPE_SCRIPTEDITOR 20
+#define KVI_WINDOW_TYPE_SCRIPTOBJECT 21
+#define KVI_WINDOW_TYPE_USERWINDOW 22
+#define KVI_WINDOW_TYPE_DEBUG 23
+
+
+#define KVI_WINDOW_NUM_TYPES 24
+
+
+#define KVI_WINDOW_TYPE_USER 10000
+
+
+
+
+#define KVI_ACTIVITY_NONE 0
+#define KVI_ACTIVITY_VERYLOW 1
+#define KVI_ACTIVITY_LOW 2
+#define KVI_ACTIVITY_MEDIUM 3
+#define KVI_ACTIVITY_HIGH 4
+#define KVI_ACTIVITY_VERYHIGH 5
+
+#define KVI_ACTIVITY_ICE 0
+#define KVI_ACTIVITY_VERYCOLD 1
+#define KVI_ACTIVITY_COLD 2
+#define KVI_ACTIVITY_UNDEFINED 3
+#define KVI_ACTIVITY_HOT 4
+#define KVI_ACTIVITY_VERYHOT 5
+#define KVI_ACTIVITY_FIRE 6
+
+#ifdef COMPILE_USE_QT4
+ class QPushButton;
+ #define BUTTON_CLASS QPushButton
+#else
+ #define BUTTON_CLASS QToolButton
+#endif
+
+
+class KVIRC_API KviWindow : public QWidget
+{
+ friend class KviInput;
+ friend class KviFrame;
+ friend class KviTaskBarItem;
+ friend class KviTaskBarButton;
+ friend class KviTreeTaskBarItem;
+ friend class KviTreeTaskBar;
+ Q_PROPERTY(int KviProperty_ChildFocusOwner READ type)
+ Q_OBJECT
+public:
+ KviWindow(int type,KviFrame * lpFrm,const QString &name,KviConsole * pConsole = 0);
+ virtual ~KviWindow();
+protected: // almost private: don't touch :D
+ QString m_szName; // the current window name (usually also the target)
+ KviFrame * m_pFrm;
+ KviConsole * m_pConsole;
+ KviIrcContext * m_pContext;
+
+ int m_iType;
+
+ KviTaskBarItem * m_pTaskBarItem;
+ QWidget * m_pFocusHandler;
+ QString m_szPlainTextCaption;
+ QString m_szHtmlActiveCaption;
+ QString m_szHtmlInactiveCaption;
+ KviIrcView * m_pIrcView;
+ KviInput * m_pInput;
+ QSplitter * m_pSplitter;
+ KviTalHBox * m_pButtonBox;
+ unsigned long int m_uId;
+ QString m_szTextEncoding;
+#ifdef COMPILE_CRYPT_SUPPORT
+ KviWindowToolPageButton * m_pCryptControllerButton;
+ KviCryptController * m_pCryptController;
+ KviCryptSessionInfo * m_pCryptSessionInfo;
+#endif
+ BUTTON_CLASS * m_pTextEncodingButton;
+ QToolButton * m_pHideToolsButton;
+ QWidget * m_pLastFocusedChild;
+ KviAccel * m_pAccel;
+ static const char * m_typeTable[KVI_WINDOW_NUM_TYPES + 1];
+ // text encoding and decoding
+ //unsigned int m_uTextEncoding;
+ QTextCodec * m_pTextCodec;
+// KviToolWindowsContainer * m_pEditorsContainer;
+public:
+ // The global ID of this window: unique in the application
+ QString id(){ return QString("%1").arg(m_uId); };
+ unsigned long int numericId(){ return m_uId; };
+public:
+ // THIS is the function that should be used
+ const QString & windowName(){ return m_szName; };
+ void setWindowName(const QString &szName);
+ // force QT to set our UNICODE name too... FIXME: this should be removed later...
+ virtual void setName(const char * szName);
+
+ // Window type management
+ int type() const { return m_iType; };
+ // This returns a descriptive name of the window type
+ // if the window is an user window, the typeString returned
+ // by THIS implementation is "unknown"
+ virtual const char * typeString();
+
+ QTextCodec * textCodec(){ return m_pTextCodec ? m_pTextCodec : defaultTextCodec(); };
+ void forceTextCodec(QTextCodec * c);
+
+ // The frame that this window belongs to
+ // It is always non-null and never changes
+ KviFrame * frame() const { return m_pFrm; };
+ // The KviIrcView of this window: may be NULL if the window has no KviIrcView (and thus supports no direct output)
+ KviIrcView * view() const { return m_pIrcView; };
+ // The mdiParent widget: may be nulll if the window is undocked
+ KviMdiChild * mdiParent(){ return (KviMdiChild *)parent(); };
+ // The console that this window belongs to: may be null for windows that aren't bound to irc contexts
+ KviConsole * console(){ return m_pConsole; };
+ // same as above
+ KviIrcContext * context(){ return m_pContext; };
+ // the current IRC connection (if any)
+ KviIrcConnection * connection();
+ // The splitter of this window: it *shouldn't* be null... but ... well.. who knows ? :D ...better check it
+ QSplitter * splitter(){ return m_pSplitter; };
+ // The window has ALWAYS a taskbar item
+ KviTaskBarItem * taskBarItem(){ return m_pTaskBarItem; };
+ // The window *might* have a button container
+ virtual QFrame * buttonContainer(){ return (QFrame*)m_pButtonBox; };
+ virtual void toggleButtonContainer();
+ // The window *might* have an output proxy: if it has no view() for example
+ virtual KviWindow * outputProxy();
+ // The window input widget
+ KviInput * input(){ return m_pInput; };
+
+ // The target of this window: empty when it makes no sense :D
+ virtual const QString & target(){ return KviQString::empty; };
+ // The local nickname bound to this window: might be empty when a local nickname makes no sense
+ virtual const QString & localNick(){ return KviQString::empty; };
+
+#ifdef COMPILE_CRYPT_SUPPORT
+ KviCryptSessionInfo * cryptSessionInfo(){ return m_pCryptSessionInfo; };
+ void setCryptSessionInfo(KviCryptSessionInfo * i);
+#endif
+
+ virtual bool activityMeter(unsigned int * puActivityValue,unsigned int * puActivityTemperature);
+
+ void unhighlight();
+
+ virtual void getTaskBarTipText(QString &buffer);
+
+ // This is meaningful only if view() is non NULL
+ const QString & lastLineOfText();
+ const QString & lastMessageText();
+
+ const QString &textEncoding(){ return m_szTextEncoding; };
+ // returns true if the encoding could be succesfully set
+ bool setTextEncoding(const QString &szTextEncoding);
+ // this must return a default text codec suitable for this window
+ virtual QTextCodec * defaultTextCodec();
+ // encode the text from szSource by using m_uTextEncoding
+ KviQCString encodeText(const QString &szText);
+ QString decodeText(const char * szText);
+
+ void contextPopup();
+ // Raises the window (after a light delay to prevent focus pingpongs)
+ void delayedAutoRaise();
+ // Window state: might work :D
+ bool isMinimized();
+ bool isMaximized();
+ // Retrieves the default log file name: this is pre-build
+ void getDefaultLogFileName(QString &buffer);
+ // Well...the external geometry :)
+ QRect externalGeometry();
+
+ void delayedClose(); // close that jumps out of the current event loop
+
+ // Interesting overridables:
+ virtual void fillContextPopup(KviTalPopupMenu * p);
+ virtual void getConfigGroupName(QString &buf);
+// virtual void getBaseLogFileName(KviStr &buffer);
+ virtual void getBaseLogFileName(QString &buffer);
+ virtual void updateCaption();
+ virtual void applyOptions();
+ virtual void updateIcon();
+ virtual void ownMessage(const QString &text){};
+ virtual void ownAction(const QString &text){};
+ virtual const QString & plainTextCaption(){ return m_szPlainTextCaption; };
+ virtual const QString & htmlActiveCaption(){ return m_szHtmlActiveCaption; };
+ virtual const QString & htmlInactiveCaption(){ return m_szHtmlInactiveCaption; };
+ virtual void setFocus();
+
+ void internalOutput(KviIrcView * pView,int msg_type,const kvi_wchar_t * text,int iFlags=0);
+ // You *might* want to override these too.. but better don't touch them :D
+ virtual void output(int msg_type,const char * format,...);
+ virtual void outputNoFmt(int msg_type,const char * text,int iFlags=0);
+ virtual void output(int msg_type,const kvi_wchar_t * format,...);
+ virtual void outputNoFmt(int msg_type,const kvi_wchar_t * text,int iFlags=0){ internalOutput(m_pIrcView,msg_type,text,iFlags); };
+ virtual void output(int msg_type,const QString &szFmt,...);
+ virtual void outputNoFmt(int msg_type,const QString &szText,int iFlags=0); // <-- these are KviIrcView::AppendTextFlags
+ // Just helpers.. FIXME: might be redesigned in some other way
+ void updateBackgrounds(QObject * obj = 0);
+
+ void demandAttention();
+ bool hasAttention();
+
+ // This should die, probably
+ void listWindowTypes();
+
+public slots:
+ void dock();
+ void undock();
+ void autoRaise();
+ void maximize();
+ void minimize();
+ void restore();
+ void reloadImages();
+protected slots:
+ void savePropertiesAsDefault();
+ void toggleCryptController(); // This has to be here even if the crypt support is enabled...moc does not support conditionals
+ void cryptControllerFinished(); // same as above
+ void cryptSessionInfoDestroyed(); // same as above
+ void textEncodingButtonClicked();
+ void systemPopupRequest(const QPoint &pnt);
+ void systemTextEncodingPopupSmartActivated(int id);
+ void systemTextEncodingPopupSmartUtf8Activated(int id);
+ void systemTextEncodingPopupStandardActivated(int id);
+ void systemTextEncodingPopupDefault();
+ void childDestroyed();
+signals:
+ void windowNameChanged();
+protected:
+ // Loading and saving of properties
+ // Protected: only KviFrame can call these
+ virtual void saveProperties(KviConfig *cfg);
+ virtual void loadProperties(KviConfig *cfg);
+ // Creation and destruction events: overridden in windows that have script events bound to creation and destruction
+ virtual void triggerCreationEvents(){};
+ virtual void triggerDestructionEvents(){};
+ // Internal: do not touch :D (KviFrame)
+ virtual void createTaskBarItem();
+ virtual void destroyTaskBarItem();
+ // called by KviFrame
+ // either lost the active window status or the frame is no longer active (but we're still the active kvirc's subwindow)
+ virtual void lostUserFocus();
+ // Sets the progress for the taskbar item: if "progress" makes sense in your window , well , use this
+ void setProgress(int progress);
+ // call this in the constructor if your caption is fixed:
+ // it will set m_szPlainTextCaption to szCaption and it will
+ // automatically use it without the need of overriding fillCaptionBuffers
+ void setFixedCaption(const QString &szCaption);
+ // this by default calls fillSingleColorCaptionBuffer(plainTextCaption());
+ virtual void fillCaptionBuffers();
+ // protected helper
+ void fillSingleColorCaptionBuffers(const QString &szName);
+ // Virtual events that signal dock state change
+ virtual void youAreDocked();
+ virtual void youAreUndocked();
+ // Reimplement to show a special icon in the taskbar items and captions
+ virtual QPixmap * myIconPtr();
+ // Sets the type of this window: be careful with this
+ void setType(int iType);
+
+ bool eventFilter(QObject *o,QEvent *e);
+
+ // Virtuals overridden to manage the internal layouts...
+ virtual void moveEvent(QMoveEvent *e);
+ virtual void closeEvent(QCloseEvent *e);
+ virtual void wheelEvent(QWheelEvent *e);
+ virtual void childEvent(QChildEvent *e);
+ virtual void focusInEvent(QFocusEvent *e);
+
+ void childInserted(QWidget * o);
+ void childRemoved(QWidget * o);
+
+ void activateSelf();
+
+ // Internal helpers
+ void createCryptControllerButton(QWidget * par);
+ void createTextEncodingButton(QWidget * par);
+ void createSystemTextEncodingPopup();
+
+ BUTTON_CLASS * createToolButton(QWidget * par,const char * nam,int pixon,int pixoff,const QString & tooltip,bool bOn);
+ // This is called by KviInput: actually it links the widgetAdded
+ virtual void childrenTreeChanged(QWidget * widgetAdded);
+
+ virtual bool focusNextPrevChild(bool bNext);
+
+ virtual void preprocessMessage(QString & szMessage);
+};
+
+#ifndef _KVI_WINDOW_CPP_
+ // The active window:
+ // This is almost always non null
+ // The exception is the startup (when there are no windows at all)
+ // and the last phase of the destructor.
+ // You usually shouldn't care of checking this pointer for NULL unless
+ // you're running very early at startup or very late at shutdown
+ extern KVIRC_API KviWindow * g_pActiveWindow;
+#endif
+
+#endif //_KVI_WINDOW_H_
diff --git a/src/kvirc/ui/moc_kvi_actiondrawer.cpp b/src/kvirc/ui/moc_kvi_actiondrawer.cpp
new file mode 100644
index 00000000..833bc391
--- /dev/null
+++ b/src/kvirc/ui/moc_kvi_actiondrawer.cpp
@@ -0,0 +1,238 @@
+/****************************************************************************
+** KviActionDrawerPageListView meta object code from reading C++ file 'kvi_actiondrawer.h'
+**
+** Created: Mon Feb 25 00:12:20 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_actiondrawer.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviActionDrawerPageListView::className() const
+{
+ return "KviActionDrawerPageListView";
+}
+
+QMetaObject *KviActionDrawerPageListView::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviActionDrawerPageListView( "KviActionDrawerPageListView", &KviActionDrawerPageListView::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviActionDrawerPageListView::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviActionDrawerPageListView", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviActionDrawerPageListView::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviActionDrawerPageListView", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviActionDrawerPageListView::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviListView::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviActionDrawerPageListView", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviActionDrawerPageListView.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviActionDrawerPageListView::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviActionDrawerPageListView" ) )
+ return this;
+ return KviListView::qt_cast( clname );
+}
+
+bool KviActionDrawerPageListView::qt_invoke( int _id, QUObject* _o )
+{
+ return KviListView::qt_invoke(_id,_o);
+}
+
+bool KviActionDrawerPageListView::qt_emit( int _id, QUObject* _o )
+{
+ return KviListView::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviActionDrawerPageListView::qt_property( int id, int f, QVariant* v)
+{
+ return KviListView::qt_property( id, f, v);
+}
+
+bool KviActionDrawerPageListView::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
+
+
+const char *KviActionDrawerPage::className() const
+{
+ return "KviActionDrawerPage";
+}
+
+QMetaObject *KviActionDrawerPage::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviActionDrawerPage( "KviActionDrawerPage", &KviActionDrawerPage::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviActionDrawerPage::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviActionDrawerPage", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviActionDrawerPage::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviActionDrawerPage", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviActionDrawerPage::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QWidget::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviActionDrawerPage", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviActionDrawerPage.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviActionDrawerPage::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviActionDrawerPage" ) )
+ return this;
+ return QWidget::qt_cast( clname );
+}
+
+bool KviActionDrawerPage::qt_invoke( int _id, QUObject* _o )
+{
+ return QWidget::qt_invoke(_id,_o);
+}
+
+bool KviActionDrawerPage::qt_emit( int _id, QUObject* _o )
+{
+ return QWidget::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviActionDrawerPage::qt_property( int id, int f, QVariant* v)
+{
+ return QWidget::qt_property( id, f, v);
+}
+
+bool KviActionDrawerPage::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
+
+
+const char *KviActionDrawer::className() const
+{
+ return "KviActionDrawer";
+}
+
+QMetaObject *KviActionDrawer::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviActionDrawer( "KviActionDrawer", &KviActionDrawer::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviActionDrawer::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviActionDrawer", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviActionDrawer::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviActionDrawer", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviActionDrawer::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QTabWidget::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviActionDrawer", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviActionDrawer.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviActionDrawer::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviActionDrawer" ) )
+ return this;
+ return QTabWidget::qt_cast( clname );
+}
+
+bool KviActionDrawer::qt_invoke( int _id, QUObject* _o )
+{
+ return QTabWidget::qt_invoke(_id,_o);
+}
+
+bool KviActionDrawer::qt_emit( int _id, QUObject* _o )
+{
+ return QTabWidget::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviActionDrawer::qt_property( int id, int f, QVariant* v)
+{
+ return QTabWidget::qt_property( id, f, v);
+}
+
+bool KviActionDrawer::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/ui/moc_kvi_customtoolbar.cpp b/src/kvirc/ui/moc_kvi_customtoolbar.cpp
new file mode 100644
index 00000000..4a89b121
--- /dev/null
+++ b/src/kvirc/ui/moc_kvi_customtoolbar.cpp
@@ -0,0 +1,180 @@
+/****************************************************************************
+** KviCustomToolBarSeparator meta object code from reading C++ file 'kvi_customtoolbar.h'
+**
+** Created: Mon Feb 25 00:12:23 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_customtoolbar.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviCustomToolBarSeparator::className() const
+{
+ return "KviCustomToolBarSeparator";
+}
+
+QMetaObject *KviCustomToolBarSeparator::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviCustomToolBarSeparator( "KviCustomToolBarSeparator", &KviCustomToolBarSeparator::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviCustomToolBarSeparator::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviCustomToolBarSeparator", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviCustomToolBarSeparator::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviCustomToolBarSeparator", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviCustomToolBarSeparator::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QWidget::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviCustomToolBarSeparator", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviCustomToolBarSeparator.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviCustomToolBarSeparator::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviCustomToolBarSeparator" ) )
+ return this;
+ return QWidget::qt_cast( clname );
+}
+
+bool KviCustomToolBarSeparator::qt_invoke( int _id, QUObject* _o )
+{
+ return QWidget::qt_invoke(_id,_o);
+}
+
+bool KviCustomToolBarSeparator::qt_emit( int _id, QUObject* _o )
+{
+ return QWidget::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviCustomToolBarSeparator::qt_property( int id, int f, QVariant* v)
+{
+ return QWidget::qt_property( id, f, v);
+}
+
+bool KviCustomToolBarSeparator::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
+
+
+const char *KviCustomToolBar::className() const
+{
+ return "KviCustomToolBar";
+}
+
+QMetaObject *KviCustomToolBar::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviCustomToolBar( "KviCustomToolBar", &KviCustomToolBar::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviCustomToolBar::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviCustomToolBar", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviCustomToolBar::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviCustomToolBar", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviCustomToolBar::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviToolBar::staticMetaObject();
+ static const QUMethod slot_0 = {"beginCustomize", 0, 0 };
+ static const QUMethod slot_1 = {"endCustomize", 0, 0 };
+ static const QUMethod slot_2 = {"filteredChildDestroyed", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "beginCustomize()", &slot_0, QMetaData::Protected },
+ { "endCustomize()", &slot_1, QMetaData::Protected },
+ { "filteredChildDestroyed()", &slot_2, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviCustomToolBar", parentObject,
+ slot_tbl, 3,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviCustomToolBar.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviCustomToolBar::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviCustomToolBar" ) )
+ return this;
+ return KviToolBar::qt_cast( clname );
+}
+
+bool KviCustomToolBar::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: beginCustomize(); break;
+ case 1: endCustomize(); break;
+ case 2: filteredChildDestroyed(); break;
+ default:
+ return KviToolBar::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviCustomToolBar::qt_emit( int _id, QUObject* _o )
+{
+ return KviToolBar::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviCustomToolBar::qt_property( int id, int f, QVariant* v)
+{
+ return KviToolBar::qt_property( id, f, v);
+}
+
+bool KviCustomToolBar::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/ui/moc_kvi_debugwindow.cpp b/src/kvirc/ui/moc_kvi_debugwindow.cpp
new file mode 100644
index 00000000..5e3da82c
--- /dev/null
+++ b/src/kvirc/ui/moc_kvi_debugwindow.cpp
@@ -0,0 +1,92 @@
+/****************************************************************************
+** KviDebugWindow meta object code from reading C++ file 'kvi_debugwindow.h'
+**
+** Created: Mon Feb 25 00:12:25 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_debugwindow.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviDebugWindow::className() const
+{
+ return "KviDebugWindow";
+}
+
+QMetaObject *KviDebugWindow::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviDebugWindow( "KviDebugWindow", &KviDebugWindow::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviDebugWindow::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviDebugWindow", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviDebugWindow::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviDebugWindow", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviDebugWindow::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviWindow::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviDebugWindow", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviDebugWindow.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviDebugWindow::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviDebugWindow" ) )
+ return this;
+ return KviWindow::qt_cast( clname );
+}
+
+bool KviDebugWindow::qt_invoke( int _id, QUObject* _o )
+{
+ return KviWindow::qt_invoke(_id,_o);
+}
+
+bool KviDebugWindow::qt_emit( int _id, QUObject* _o )
+{
+ return KviWindow::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviDebugWindow::qt_property( int id, int f, QVariant* v)
+{
+ return KviWindow::qt_property( id, f, v);
+}
+
+bool KviDebugWindow::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/ui/moc_kvi_htmldialog.cpp b/src/kvirc/ui/moc_kvi_htmldialog.cpp
new file mode 100644
index 00000000..62d76814
--- /dev/null
+++ b/src/kvirc/ui/moc_kvi_htmldialog.cpp
@@ -0,0 +1,107 @@
+/****************************************************************************
+** KviHtmlDialog meta object code from reading C++ file 'kvi_htmldialog.h'
+**
+** Created: Mon Feb 25 00:12:27 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_htmldialog.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviHtmlDialog::className() const
+{
+ return "KviHtmlDialog";
+}
+
+QMetaObject *KviHtmlDialog::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviHtmlDialog( "KviHtmlDialog", &KviHtmlDialog::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviHtmlDialog::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviHtmlDialog", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviHtmlDialog::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviHtmlDialog", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviHtmlDialog::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QDialog::staticMetaObject();
+ static const QUMethod slot_0 = {"button1Pressed", 0, 0 };
+ static const QUMethod slot_1 = {"button2Pressed", 0, 0 };
+ static const QUMethod slot_2 = {"button3Pressed", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "button1Pressed()", &slot_0, QMetaData::Protected },
+ { "button2Pressed()", &slot_1, QMetaData::Protected },
+ { "button3Pressed()", &slot_2, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviHtmlDialog", parentObject,
+ slot_tbl, 3,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviHtmlDialog.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviHtmlDialog::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviHtmlDialog" ) )
+ return this;
+ return QDialog::qt_cast( clname );
+}
+
+bool KviHtmlDialog::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: button1Pressed(); break;
+ case 1: button2Pressed(); break;
+ case 2: button3Pressed(); break;
+ default:
+ return QDialog::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviHtmlDialog::qt_emit( int _id, QUObject* _o )
+{
+ return QDialog::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviHtmlDialog::qt_property( int id, int f, QVariant* v)
+{
+ return QDialog::qt_property( id, f, v);
+}
+
+bool KviHtmlDialog::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/ui/moc_kvi_imagedialog.cpp b/src/kvirc/ui/moc_kvi_imagedialog.cpp
new file mode 100644
index 00000000..be88643c
--- /dev/null
+++ b/src/kvirc/ui/moc_kvi_imagedialog.cpp
@@ -0,0 +1,126 @@
+/****************************************************************************
+** KviImageDialog meta object code from reading C++ file 'kvi_imagedialog.h'
+**
+** Created: Mon Feb 25 00:12:28 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_imagedialog.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviImageDialog::className() const
+{
+ return "KviImageDialog";
+}
+
+QMetaObject *KviImageDialog::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviImageDialog( "KviImageDialog", &KviImageDialog::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviImageDialog::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviImageDialog", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviImageDialog::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviImageDialog", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviImageDialog::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QDialog::staticMetaObject();
+ static const QUMethod slot_0 = {"okClicked", 0, 0 };
+ static const QUMethod slot_1 = {"cancelClicked", 0, 0 };
+ static const QUMethod slot_2 = {"heartbeat", 0, 0 };
+ static const QUParameter param_slot_3[] = {
+ { "index", &static_QUType_int, 0, QUParameter::In }
+ };
+ static const QUMethod slot_3 = {"jobTypeSelected", 1, param_slot_3 };
+ static const QUParameter param_slot_4[] = {
+ { "it", &static_QUType_ptr, "KviTalListBoxItem", QUParameter::In }
+ };
+ static const QUMethod slot_4 = {"itemDoubleClicked", 1, param_slot_4 };
+ static const QUParameter param_slot_5[] = {
+ { 0, &static_QUType_ptr, "KviDynamicToolTip", QUParameter::In },
+ { "pnt", &static_QUType_varptr, "\x0e", QUParameter::In }
+ };
+ static const QUMethod slot_5 = {"tipRequest", 2, param_slot_5 };
+ static const QMetaData slot_tbl[] = {
+ { "okClicked()", &slot_0, QMetaData::Protected },
+ { "cancelClicked()", &slot_1, QMetaData::Protected },
+ { "heartbeat()", &slot_2, QMetaData::Protected },
+ { "jobTypeSelected(int)", &slot_3, QMetaData::Protected },
+ { "itemDoubleClicked(KviTalListBoxItem*)", &slot_4, QMetaData::Protected },
+ { "tipRequest(KviDynamicToolTip*,const QPoint&)", &slot_5, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviImageDialog", parentObject,
+ slot_tbl, 6,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviImageDialog.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviImageDialog::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviImageDialog" ) )
+ return this;
+ return QDialog::qt_cast( clname );
+}
+
+bool KviImageDialog::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: okClicked(); break;
+ case 1: cancelClicked(); break;
+ case 2: heartbeat(); break;
+ case 3: jobTypeSelected((int)static_QUType_int.get(_o+1)); break;
+ case 4: itemDoubleClicked((KviTalListBoxItem*)static_QUType_ptr.get(_o+1)); break;
+ case 5: tipRequest((KviDynamicToolTip*)static_QUType_ptr.get(_o+1),(const QPoint&)*((const QPoint*)static_QUType_ptr.get(_o+2))); break;
+ default:
+ return QDialog::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviImageDialog::qt_emit( int _id, QUObject* _o )
+{
+ return QDialog::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviImageDialog::qt_property( int id, int f, QVariant* v)
+{
+ return QDialog::qt_property( id, f, v);
+}
+
+bool KviImageDialog::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/ui/moc_kvi_ircviewtools.cpp b/src/kvirc/ui/moc_kvi_ircviewtools.cpp
new file mode 100644
index 00000000..e44adb66
--- /dev/null
+++ b/src/kvirc/ui/moc_kvi_ircviewtools.cpp
@@ -0,0 +1,116 @@
+/****************************************************************************
+** KviIrcViewToolWidget meta object code from reading C++ file 'kvi_ircviewtools.h'
+**
+** Created: Mon Feb 25 00:12:30 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_ircviewtools.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviIrcViewToolWidget::className() const
+{
+ return "KviIrcViewToolWidget";
+}
+
+QMetaObject *KviIrcViewToolWidget::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviIrcViewToolWidget( "KviIrcViewToolWidget", &KviIrcViewToolWidget::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviIrcViewToolWidget::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviIrcViewToolWidget", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviIrcViewToolWidget::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviIrcViewToolWidget", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviIrcViewToolWidget::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QFrame::staticMetaObject();
+ static const QUMethod slot_0 = {"findPrev", 0, 0 };
+ static const QUMethod slot_1 = {"findNext", 0, 0 };
+ static const QUMethod slot_2 = {"filterEnableAll", 0, 0 };
+ static const QUMethod slot_3 = {"filterEnableNone", 0, 0 };
+ static const QUMethod slot_4 = {"filterSave", 0, 0 };
+ static const QUMethod slot_5 = {"filterLoad", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "findPrev()", &slot_0, QMetaData::Protected },
+ { "findNext()", &slot_1, QMetaData::Protected },
+ { "filterEnableAll()", &slot_2, QMetaData::Protected },
+ { "filterEnableNone()", &slot_3, QMetaData::Protected },
+ { "filterSave()", &slot_4, QMetaData::Protected },
+ { "filterLoad()", &slot_5, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviIrcViewToolWidget", parentObject,
+ slot_tbl, 6,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviIrcViewToolWidget.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviIrcViewToolWidget::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviIrcViewToolWidget" ) )
+ return this;
+ return QFrame::qt_cast( clname );
+}
+
+bool KviIrcViewToolWidget::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: findPrev(); break;
+ case 1: findNext(); break;
+ case 2: filterEnableAll(); break;
+ case 3: filterEnableNone(); break;
+ case 4: filterSave(); break;
+ case 5: filterLoad(); break;
+ default:
+ return QFrame::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviIrcViewToolWidget::qt_emit( int _id, QUObject* _o )
+{
+ return QFrame::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviIrcViewToolWidget::qt_property( int id, int f, QVariant* v)
+{
+ return QFrame::qt_property( id, f, v);
+}
+
+bool KviIrcViewToolWidget::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/ui/moc_kvi_listview.cpp b/src/kvirc/ui/moc_kvi_listview.cpp
new file mode 100644
index 00000000..f9f61186
--- /dev/null
+++ b/src/kvirc/ui/moc_kvi_listview.cpp
@@ -0,0 +1,92 @@
+/****************************************************************************
+** KviListView meta object code from reading C++ file 'kvi_listview.h'
+**
+** Created: Mon Feb 25 00:12:44 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_listview.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviListView::className() const
+{
+ return "KviListView";
+}
+
+QMetaObject *KviListView::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviListView( "KviListView", &KviListView::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviListView::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviListView", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviListView::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviListView", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviListView::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviTalListView::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviListView", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviListView.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviListView::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviListView" ) )
+ return this;
+ return KviTalListView::qt_cast( clname );
+}
+
+bool KviListView::qt_invoke( int _id, QUObject* _o )
+{
+ return KviTalListView::qt_invoke(_id,_o);
+}
+
+bool KviListView::qt_emit( int _id, QUObject* _o )
+{
+ return KviTalListView::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviListView::qt_property( int id, int f, QVariant* v)
+{
+ return KviTalListView::qt_property( id, f, v);
+}
+
+bool KviListView::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/ui/moc_kvi_mdicaption.cpp b/src/kvirc/ui/moc_kvi_mdicaption.cpp
new file mode 100644
index 00000000..3e027b92
--- /dev/null
+++ b/src/kvirc/ui/moc_kvi_mdicaption.cpp
@@ -0,0 +1,238 @@
+/****************************************************************************
+** KviMdiCaptionButton meta object code from reading C++ file 'kvi_mdicaption.h'
+**
+** Created: Mon Feb 25 00:12:32 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_mdicaption.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviMdiCaptionButton::className() const
+{
+ return "KviMdiCaptionButton";
+}
+
+QMetaObject *KviMdiCaptionButton::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviMdiCaptionButton( "KviMdiCaptionButton", &KviMdiCaptionButton::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviMdiCaptionButton::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviMdiCaptionButton", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviMdiCaptionButton::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviMdiCaptionButton", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviMdiCaptionButton::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QToolButton::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviMdiCaptionButton", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviMdiCaptionButton.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviMdiCaptionButton::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviMdiCaptionButton" ) )
+ return this;
+ return QToolButton::qt_cast( clname );
+}
+
+bool KviMdiCaptionButton::qt_invoke( int _id, QUObject* _o )
+{
+ return QToolButton::qt_invoke(_id,_o);
+}
+
+bool KviMdiCaptionButton::qt_emit( int _id, QUObject* _o )
+{
+ return QToolButton::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviMdiCaptionButton::qt_property( int id, int f, QVariant* v)
+{
+ return QToolButton::qt_property( id, f, v);
+}
+
+bool KviMdiCaptionButton::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
+
+
+const char *KviMenuBarToolButton::className() const
+{
+ return "KviMenuBarToolButton";
+}
+
+QMetaObject *KviMenuBarToolButton::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviMenuBarToolButton( "KviMenuBarToolButton", &KviMenuBarToolButton::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviMenuBarToolButton::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviMenuBarToolButton", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviMenuBarToolButton::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviMenuBarToolButton", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviMenuBarToolButton::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviStyledToolButton::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviMenuBarToolButton", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviMenuBarToolButton.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviMenuBarToolButton::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviMenuBarToolButton" ) )
+ return this;
+ return KviStyledToolButton::qt_cast( clname );
+}
+
+bool KviMenuBarToolButton::qt_invoke( int _id, QUObject* _o )
+{
+ return KviStyledToolButton::qt_invoke(_id,_o);
+}
+
+bool KviMenuBarToolButton::qt_emit( int _id, QUObject* _o )
+{
+ return KviStyledToolButton::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviMenuBarToolButton::qt_property( int id, int f, QVariant* v)
+{
+ return KviStyledToolButton::qt_property( id, f, v);
+}
+
+bool KviMenuBarToolButton::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
+
+
+const char *KviMdiCaption::className() const
+{
+ return "KviMdiCaption";
+}
+
+QMetaObject *KviMdiCaption::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviMdiCaption( "KviMdiCaption", &KviMdiCaption::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviMdiCaption::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviMdiCaption", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviMdiCaption::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviMdiCaption", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviMdiCaption::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QWidget::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviMdiCaption", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviMdiCaption.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviMdiCaption::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviMdiCaption" ) )
+ return this;
+ return QWidget::qt_cast( clname );
+}
+
+bool KviMdiCaption::qt_invoke( int _id, QUObject* _o )
+{
+ return QWidget::qt_invoke(_id,_o);
+}
+
+bool KviMdiCaption::qt_emit( int _id, QUObject* _o )
+{
+ return QWidget::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviMdiCaption::qt_property( int id, int f, QVariant* v)
+{
+ return QWidget::qt_property( id, f, v);
+}
+
+bool KviMdiCaption::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/ui/moc_kvi_mdichild.cpp b/src/kvirc/ui/moc_kvi_mdichild.cpp
new file mode 100644
index 00000000..3fcefcda
--- /dev/null
+++ b/src/kvirc/ui/moc_kvi_mdichild.cpp
@@ -0,0 +1,141 @@
+/****************************************************************************
+** KviMdiChild meta object code from reading C++ file 'kvi_mdichild.h'
+**
+** Created: Mon Feb 25 00:12:34 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_mdichild.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviMdiChild::className() const
+{
+ return "KviMdiChild";
+}
+
+QMetaObject *KviMdiChild::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviMdiChild( "KviMdiChild", &KviMdiChild::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviMdiChild::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviMdiChild", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviMdiChild::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviMdiChild", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviMdiChild::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QFrame::staticMetaObject();
+ static const QUMethod slot_0 = {"maximize", 0, 0 };
+ static const QUMethod slot_1 = {"minimize", 0, 0 };
+ static const QUMethod slot_2 = {"restore", 0, 0 };
+ static const QUMethod slot_3 = {"systemPopupSlot", 0, 0 };
+ static const QUMethod slot_4 = {"closeRequest", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "maximize()", &slot_0, QMetaData::Public },
+ { "minimize()", &slot_1, QMetaData::Public },
+ { "restore()", &slot_2, QMetaData::Public },
+ { "systemPopupSlot()", &slot_3, QMetaData::Public },
+ { "closeRequest()", &slot_4, QMetaData::Public }
+ };
+ static const QUParameter param_signal_0[] = {
+ { "pnt", &static_QUType_varptr, "\x0e", QUParameter::In }
+ };
+ static const QUMethod signal_0 = {"systemPopupRequest", 1, param_signal_0 };
+ static const QMetaData signal_tbl[] = {
+ { "systemPopupRequest(const QPoint&)", &signal_0, QMetaData::Public }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviMdiChild", parentObject,
+ slot_tbl, 5,
+ signal_tbl, 1,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviMdiChild.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviMdiChild::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviMdiChild" ) )
+ return this;
+ return QFrame::qt_cast( clname );
+}
+
+#include <qobjectdefs.h>
+#include <qsignalslotimp.h>
+
+// SIGNAL systemPopupRequest
+void KviMdiChild::systemPopupRequest( const QPoint& t0 )
+{
+ if ( signalsBlocked() )
+ return;
+ QConnectionList *clist = receivers( staticMetaObject()->signalOffset() + 0 );
+ if ( !clist )
+ return;
+ QUObject o[2];
+ static_QUType_varptr.set(o+1,&t0);
+ activate_signal( clist, o );
+}
+
+bool KviMdiChild::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: maximize(); break;
+ case 1: minimize(); break;
+ case 2: restore(); break;
+ case 3: systemPopupSlot(); break;
+ case 4: closeRequest(); break;
+ default:
+ return QFrame::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviMdiChild::qt_emit( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->signalOffset() ) {
+ case 0: systemPopupRequest((const QPoint&)*((const QPoint*)static_QUType_ptr.get(_o+1))); break;
+ default:
+ return QFrame::qt_emit(_id,_o);
+ }
+ return TRUE;
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviMdiChild::qt_property( int id, int f, QVariant* v)
+{
+ return QFrame::qt_property( id, f, v);
+}
+
+bool KviMdiChild::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/ui/moc_kvi_mdimanager.cpp b/src/kvirc/ui/moc_kvi_mdimanager.cpp
new file mode 100644
index 00000000..fed719be
--- /dev/null
+++ b/src/kvirc/ui/moc_kvi_mdimanager.cpp
@@ -0,0 +1,191 @@
+/****************************************************************************
+** KviMdiManager meta object code from reading C++ file 'kvi_mdimanager.h'
+**
+** Created: Mon Feb 25 00:12:36 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_mdimanager.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviMdiManager::className() const
+{
+ return "KviMdiManager";
+}
+
+QMetaObject *KviMdiManager::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviMdiManager( "KviMdiManager", &KviMdiManager::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviMdiManager::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviMdiManager", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviMdiManager::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviMdiManager", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviMdiManager::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviTalScrollView::staticMetaObject();
+ static const QUMethod slot_0 = {"relayoutMenuButtons", 0, 0 };
+ static const QUMethod slot_1 = {"cascadeWindows", 0, 0 };
+ static const QUMethod slot_2 = {"cascadeMaximized", 0, 0 };
+ static const QUMethod slot_3 = {"expandVertical", 0, 0 };
+ static const QUMethod slot_4 = {"expandHorizontal", 0, 0 };
+ static const QUMethod slot_5 = {"minimizeAll", 0, 0 };
+ static const QUMethod slot_6 = {"tile", 0, 0 };
+ static const QUMethod slot_7 = {"toggleAutoTile", 0, 0 };
+ static const QUMethod slot_8 = {"tileAnodine", 0, 0 };
+ static const QUMethod slot_9 = {"reloadImages", 0, 0 };
+ static const QUMethod slot_10 = {"minimizeActiveChild", 0, 0 };
+ static const QUMethod slot_11 = {"restoreActiveChild", 0, 0 };
+ static const QUMethod slot_12 = {"closeActiveChild", 0, 0 };
+ static const QUMethod slot_13 = {"activeChildSystemPopup", 0, 0 };
+ static const QUParameter param_slot_14[] = {
+ { "id", &static_QUType_int, 0, QUParameter::In }
+ };
+ static const QUMethod slot_14 = {"menuActivated", 1, param_slot_14 };
+ static const QUParameter param_slot_15[] = {
+ { "id", &static_QUType_int, 0, QUParameter::In }
+ };
+ static const QUMethod slot_15 = {"tileMethodMenuActivated", 1, param_slot_15 };
+ static const QUMethod slot_16 = {"fillWindowPopup", 0, 0 };
+ static const QUMethod slot_17 = {"sdiMinimizeButtonDestroyed", 0, 0 };
+ static const QUMethod slot_18 = {"sdiRestoreButtonDestroyed", 0, 0 };
+ static const QUMethod slot_19 = {"sdiCloseButtonDestroyed", 0, 0 };
+ static const QUMethod slot_20 = {"sdiIconButtonDestroyed", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "relayoutMenuButtons()", &slot_0, QMetaData::Public },
+ { "cascadeWindows()", &slot_1, QMetaData::Public },
+ { "cascadeMaximized()", &slot_2, QMetaData::Public },
+ { "expandVertical()", &slot_3, QMetaData::Public },
+ { "expandHorizontal()", &slot_4, QMetaData::Public },
+ { "minimizeAll()", &slot_5, QMetaData::Public },
+ { "tile()", &slot_6, QMetaData::Public },
+ { "toggleAutoTile()", &slot_7, QMetaData::Public },
+ { "tileAnodine()", &slot_8, QMetaData::Public },
+ { "reloadImages()", &slot_9, QMetaData::Public },
+ { "minimizeActiveChild()", &slot_10, QMetaData::Protected },
+ { "restoreActiveChild()", &slot_11, QMetaData::Protected },
+ { "closeActiveChild()", &slot_12, QMetaData::Protected },
+ { "activeChildSystemPopup()", &slot_13, QMetaData::Protected },
+ { "menuActivated(int)", &slot_14, QMetaData::Protected },
+ { "tileMethodMenuActivated(int)", &slot_15, QMetaData::Protected },
+ { "fillWindowPopup()", &slot_16, QMetaData::Protected },
+ { "sdiMinimizeButtonDestroyed()", &slot_17, QMetaData::Protected },
+ { "sdiRestoreButtonDestroyed()", &slot_18, QMetaData::Protected },
+ { "sdiCloseButtonDestroyed()", &slot_19, QMetaData::Protected },
+ { "sdiIconButtonDestroyed()", &slot_20, QMetaData::Protected }
+ };
+ static const QUMethod signal_0 = {"enteredSdiMode", 0, 0 };
+ static const QUMethod signal_1 = {"leftSdiMode", 0, 0 };
+ static const QMetaData signal_tbl[] = {
+ { "enteredSdiMode()", &signal_0, QMetaData::Private },
+ { "leftSdiMode()", &signal_1, QMetaData::Private }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviMdiManager", parentObject,
+ slot_tbl, 21,
+ signal_tbl, 2,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviMdiManager.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviMdiManager::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviMdiManager" ) )
+ return this;
+ return KviTalScrollView::qt_cast( clname );
+}
+
+// SIGNAL enteredSdiMode
+void KviMdiManager::enteredSdiMode()
+{
+ activate_signal( staticMetaObject()->signalOffset() + 0 );
+}
+
+// SIGNAL leftSdiMode
+void KviMdiManager::leftSdiMode()
+{
+ activate_signal( staticMetaObject()->signalOffset() + 1 );
+}
+
+bool KviMdiManager::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: relayoutMenuButtons(); break;
+ case 1: cascadeWindows(); break;
+ case 2: cascadeMaximized(); break;
+ case 3: expandVertical(); break;
+ case 4: expandHorizontal(); break;
+ case 5: minimizeAll(); break;
+ case 6: tile(); break;
+ case 7: toggleAutoTile(); break;
+ case 8: tileAnodine(); break;
+ case 9: reloadImages(); break;
+ case 10: minimizeActiveChild(); break;
+ case 11: restoreActiveChild(); break;
+ case 12: closeActiveChild(); break;
+ case 13: activeChildSystemPopup(); break;
+ case 14: menuActivated((int)static_QUType_int.get(_o+1)); break;
+ case 15: tileMethodMenuActivated((int)static_QUType_int.get(_o+1)); break;
+ case 16: fillWindowPopup(); break;
+ case 17: sdiMinimizeButtonDestroyed(); break;
+ case 18: sdiRestoreButtonDestroyed(); break;
+ case 19: sdiCloseButtonDestroyed(); break;
+ case 20: sdiIconButtonDestroyed(); break;
+ default:
+ return KviTalScrollView::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviMdiManager::qt_emit( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->signalOffset() ) {
+ case 0: enteredSdiMode(); break;
+ case 1: leftSdiMode(); break;
+ default:
+ return KviTalScrollView::qt_emit(_id,_o);
+ }
+ return TRUE;
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviMdiManager::qt_property( int id, int f, QVariant* v)
+{
+ return KviTalScrollView::qt_property( id, f, v);
+}
+
+bool KviMdiManager::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/ui/moc_kvi_statusbar.cpp b/src/kvirc/ui/moc_kvi_statusbar.cpp
new file mode 100644
index 00000000..d3cbf9c4
--- /dev/null
+++ b/src/kvirc/ui/moc_kvi_statusbar.cpp
@@ -0,0 +1,126 @@
+/****************************************************************************
+** KviStatusBar meta object code from reading C++ file 'kvi_statusbar.h'
+**
+** Created: Mon Feb 25 00:12:38 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_statusbar.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviStatusBar::className() const
+{
+ return "KviStatusBar";
+}
+
+QMetaObject *KviStatusBar::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviStatusBar( "KviStatusBar", &KviStatusBar::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviStatusBar::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviStatusBar", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviStatusBar::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviStatusBar", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviStatusBar::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QStatusBar::staticMetaObject();
+ static const QUMethod slot_0 = {"messageTimerFired", 0, 0 };
+ static const QUMethod slot_1 = {"contextPopupAboutToShow", 0, 0 };
+ static const QUMethod slot_2 = {"appletsPopupAboutToShow", 0, 0 };
+ static const QUParameter param_slot_3[] = {
+ { "id", &static_QUType_int, 0, QUParameter::In }
+ };
+ static const QUMethod slot_3 = {"appletsPopupActivated", 1, param_slot_3 };
+ static const QUMethod slot_4 = {"removeClickedApplet", 0, 0 };
+ static const QUMethod slot_5 = {"setPermanentMessage", 0, 0 };
+ static const QUParameter param_slot_6[] = {
+ { "pTip", &static_QUType_ptr, "KviDynamicToolTip", QUParameter::In },
+ { "pnt", &static_QUType_varptr, "\x0e", QUParameter::In }
+ };
+ static const QUMethod slot_6 = {"tipRequest", 2, param_slot_6 };
+ static const QMetaData slot_tbl[] = {
+ { "messageTimerFired()", &slot_0, QMetaData::Protected },
+ { "contextPopupAboutToShow()", &slot_1, QMetaData::Protected },
+ { "appletsPopupAboutToShow()", &slot_2, QMetaData::Protected },
+ { "appletsPopupActivated(int)", &slot_3, QMetaData::Protected },
+ { "removeClickedApplet()", &slot_4, QMetaData::Protected },
+ { "setPermanentMessage()", &slot_5, QMetaData::Protected },
+ { "tipRequest(KviDynamicToolTip*,const QPoint&)", &slot_6, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviStatusBar", parentObject,
+ slot_tbl, 7,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviStatusBar.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviStatusBar::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviStatusBar" ) )
+ return this;
+ return QStatusBar::qt_cast( clname );
+}
+
+bool KviStatusBar::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: messageTimerFired(); break;
+ case 1: contextPopupAboutToShow(); break;
+ case 2: appletsPopupAboutToShow(); break;
+ case 3: appletsPopupActivated((int)static_QUType_int.get(_o+1)); break;
+ case 4: removeClickedApplet(); break;
+ case 5: setPermanentMessage(); break;
+ case 6: tipRequest((KviDynamicToolTip*)static_QUType_ptr.get(_o+1),(const QPoint&)*((const QPoint*)static_QUType_ptr.get(_o+2))); break;
+ default:
+ return QStatusBar::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviStatusBar::qt_emit( int _id, QUObject* _o )
+{
+ return QStatusBar::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviStatusBar::qt_property( int id, int f, QVariant* v)
+{
+ return QStatusBar::qt_property( id, f, v);
+}
+
+bool KviStatusBar::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/ui/moc_kvi_statusbarapplet.cpp b/src/kvirc/ui/moc_kvi_statusbarapplet.cpp
new file mode 100644
index 00000000..85eb55e8
--- /dev/null
+++ b/src/kvirc/ui/moc_kvi_statusbarapplet.cpp
@@ -0,0 +1,496 @@
+/****************************************************************************
+** KviStatusBarApplet meta object code from reading C++ file 'kvi_statusbarapplet.h'
+**
+** Created: Mon Feb 25 00:12:39 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_statusbarapplet.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviStatusBarApplet::className() const
+{
+ return "KviStatusBarApplet";
+}
+
+QMetaObject *KviStatusBarApplet::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviStatusBarApplet( "KviStatusBarApplet", &KviStatusBarApplet::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviStatusBarApplet::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviStatusBarApplet", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviStatusBarApplet::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviStatusBarApplet", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviStatusBarApplet::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QLabel::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviStatusBarApplet", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviStatusBarApplet.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviStatusBarApplet::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviStatusBarApplet" ) )
+ return this;
+ return QLabel::qt_cast( clname );
+}
+
+bool KviStatusBarApplet::qt_invoke( int _id, QUObject* _o )
+{
+ return QLabel::qt_invoke(_id,_o);
+}
+
+bool KviStatusBarApplet::qt_emit( int _id, QUObject* _o )
+{
+ return QLabel::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviStatusBarApplet::qt_property( int id, int f, QVariant* v)
+{
+ return QLabel::qt_property( id, f, v);
+}
+
+bool KviStatusBarApplet::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
+
+
+const char *KviStatusBarClock::className() const
+{
+ return "KviStatusBarClock";
+}
+
+QMetaObject *KviStatusBarClock::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviStatusBarClock( "KviStatusBarClock", &KviStatusBarClock::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviStatusBarClock::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviStatusBarClock", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviStatusBarClock::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviStatusBarClock", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviStatusBarClock::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviStatusBarApplet::staticMetaObject();
+ static const QUMethod slot_0 = {"toggleUtc", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "toggleUtc()", &slot_0, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviStatusBarClock", parentObject,
+ slot_tbl, 1,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviStatusBarClock.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviStatusBarClock::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviStatusBarClock" ) )
+ return this;
+ return KviStatusBarApplet::qt_cast( clname );
+}
+
+bool KviStatusBarClock::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: toggleUtc(); break;
+ default:
+ return KviStatusBarApplet::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviStatusBarClock::qt_emit( int _id, QUObject* _o )
+{
+ return KviStatusBarApplet::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviStatusBarClock::qt_property( int id, int f, QVariant* v)
+{
+ return KviStatusBarApplet::qt_property( id, f, v);
+}
+
+bool KviStatusBarClock::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
+
+
+const char *KviStatusBarConnectionTimer::className() const
+{
+ return "KviStatusBarConnectionTimer";
+}
+
+QMetaObject *KviStatusBarConnectionTimer::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviStatusBarConnectionTimer( "KviStatusBarConnectionTimer", &KviStatusBarConnectionTimer::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviStatusBarConnectionTimer::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviStatusBarConnectionTimer", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviStatusBarConnectionTimer::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviStatusBarConnectionTimer", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviStatusBarConnectionTimer::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviStatusBarApplet::staticMetaObject();
+ static const QUMethod slot_0 = {"toggleTotal", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "toggleTotal()", &slot_0, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviStatusBarConnectionTimer", parentObject,
+ slot_tbl, 1,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviStatusBarConnectionTimer.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviStatusBarConnectionTimer::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviStatusBarConnectionTimer" ) )
+ return this;
+ return KviStatusBarApplet::qt_cast( clname );
+}
+
+bool KviStatusBarConnectionTimer::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: toggleTotal(); break;
+ default:
+ return KviStatusBarApplet::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviStatusBarConnectionTimer::qt_emit( int _id, QUObject* _o )
+{
+ return KviStatusBarApplet::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviStatusBarConnectionTimer::qt_property( int id, int f, QVariant* v)
+{
+ return KviStatusBarApplet::qt_property( id, f, v);
+}
+
+bool KviStatusBarConnectionTimer::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
+
+
+const char *KviStatusBarSeparator::className() const
+{
+ return "KviStatusBarSeparator";
+}
+
+QMetaObject *KviStatusBarSeparator::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviStatusBarSeparator( "KviStatusBarSeparator", &KviStatusBarSeparator::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviStatusBarSeparator::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviStatusBarSeparator", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviStatusBarSeparator::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviStatusBarSeparator", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviStatusBarSeparator::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviStatusBarApplet::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviStatusBarSeparator", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviStatusBarSeparator.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviStatusBarSeparator::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviStatusBarSeparator" ) )
+ return this;
+ return KviStatusBarApplet::qt_cast( clname );
+}
+
+bool KviStatusBarSeparator::qt_invoke( int _id, QUObject* _o )
+{
+ return KviStatusBarApplet::qt_invoke(_id,_o);
+}
+
+bool KviStatusBarSeparator::qt_emit( int _id, QUObject* _o )
+{
+ return KviStatusBarApplet::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviStatusBarSeparator::qt_property( int id, int f, QVariant* v)
+{
+ return KviStatusBarApplet::qt_property( id, f, v);
+}
+
+bool KviStatusBarSeparator::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
+
+
+const char *KviStatusBarAwayIndicator::className() const
+{
+ return "KviStatusBarAwayIndicator";
+}
+
+QMetaObject *KviStatusBarAwayIndicator::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviStatusBarAwayIndicator( "KviStatusBarAwayIndicator", &KviStatusBarAwayIndicator::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviStatusBarAwayIndicator::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviStatusBarAwayIndicator", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviStatusBarAwayIndicator::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviStatusBarAwayIndicator", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviStatusBarAwayIndicator::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviStatusBarApplet::staticMetaObject();
+ static const QUMethod slot_0 = {"updateDisplay", 0, 0 };
+ static const QUMethod slot_1 = {"toggleContext", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "updateDisplay()", &slot_0, QMetaData::Protected },
+ { "toggleContext()", &slot_1, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviStatusBarAwayIndicator", parentObject,
+ slot_tbl, 2,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviStatusBarAwayIndicator.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviStatusBarAwayIndicator::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviStatusBarAwayIndicator" ) )
+ return this;
+ return KviStatusBarApplet::qt_cast( clname );
+}
+
+bool KviStatusBarAwayIndicator::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: updateDisplay(); break;
+ case 1: toggleContext(); break;
+ default:
+ return KviStatusBarApplet::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviStatusBarAwayIndicator::qt_emit( int _id, QUObject* _o )
+{
+ return KviStatusBarApplet::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviStatusBarAwayIndicator::qt_property( int id, int f, QVariant* v)
+{
+ return KviStatusBarApplet::qt_property( id, f, v);
+}
+
+bool KviStatusBarAwayIndicator::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
+
+
+const char *KviStatusBarLagIndicator::className() const
+{
+ return "KviStatusBarLagIndicator";
+}
+
+QMetaObject *KviStatusBarLagIndicator::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviStatusBarLagIndicator( "KviStatusBarLagIndicator", &KviStatusBarLagIndicator::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviStatusBarLagIndicator::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviStatusBarLagIndicator", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviStatusBarLagIndicator::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviStatusBarLagIndicator", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviStatusBarLagIndicator::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KviStatusBarApplet::staticMetaObject();
+ static const QUMethod slot_0 = {"updateDisplay", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "updateDisplay()", &slot_0, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "KviStatusBarLagIndicator", parentObject,
+ slot_tbl, 1,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviStatusBarLagIndicator.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviStatusBarLagIndicator::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviStatusBarLagIndicator" ) )
+ return this;
+ return KviStatusBarApplet::qt_cast( clname );
+}
+
+bool KviStatusBarLagIndicator::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: updateDisplay(); break;
+ default:
+ return KviStatusBarApplet::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool KviStatusBarLagIndicator::qt_emit( int _id, QUObject* _o )
+{
+ return KviStatusBarApplet::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviStatusBarLagIndicator::qt_property( int id, int f, QVariant* v)
+{
+ return KviStatusBarApplet::qt_property( id, f, v);
+}
+
+bool KviStatusBarLagIndicator::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/kvirc/ui/moc_kvi_toolwindows_container.cpp b/src/kvirc/ui/moc_kvi_toolwindows_container.cpp
new file mode 100644
index 00000000..dc5a24f9
--- /dev/null
+++ b/src/kvirc/ui/moc_kvi_toolwindows_container.cpp
@@ -0,0 +1,165 @@
+/****************************************************************************
+** KviWindowToolWidget meta object code from reading C++ file 'kvi_toolwindows_container.h'
+**
+** Created: Mon Feb 25 00:12:41 2008
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "kvi_toolwindows_container.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *KviWindowToolWidget::className() const
+{
+ return "KviWindowToolWidget";
+}
+
+QMetaObject *KviWindowToolWidget::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviWindowToolWidget( "KviWindowToolWidget", &KviWindowToolWidget::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviWindowToolWidget::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviWindowToolWidget", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviWindowToolWidget::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviWindowToolWidget", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviWindowToolWidget::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QWidget::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviWindowToolWidget", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviWindowToolWidget.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviWindowToolWidget::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviWindowToolWidget" ) )
+ return this;
+ return QWidget::qt_cast( clname );
+}
+
+bool KviWindowToolWidget::qt_invoke( int _id, QUObject* _o )
+{
+ return QWidget::qt_invoke(_id,_o);
+}
+
+bool KviWindowToolWidget::qt_emit( int _id, QUObject* _o )
+{
+ return QWidget::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviWindowToolWidget::qt_property( int id, int f, QVariant* v)
+{
+ return QWidget::qt_property( id, f, v);
+}
+
+bool KviWindowToolWidget::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
+
+
+const char *KviWindowToolPageButton::className() const
+{
+ return "KviWindowToolPageButton";
+}
+
+QMetaObject *KviWindowToolPageButton::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_KviWindowToolPageButton( "KviWindowToolPageButton", &KviWindowToolPageButton::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString KviWindowToolPageButton::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviWindowToolPageButton", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString KviWindowToolPageButton::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "KviWindowToolPageButton", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* KviWindowToolPageButton::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = TOOL_PAGE_PARENT::staticMetaObject();
+ metaObj = QMetaObject::new_metaobject(
+ "KviWindowToolPageButton", parentObject,
+ 0, 0,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_KviWindowToolPageButton.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* KviWindowToolPageButton::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "KviWindowToolPageButton" ) )
+ return this;
+ return TOOL_PAGE_PARENT::qt_cast( clname );
+}
+
+bool KviWindowToolPageButton::qt_invoke( int _id, QUObject* _o )
+{
+ return TOOL_PAGE_PARENT::qt_invoke(_id,_o);
+}
+
+bool KviWindowToolPageButton::qt_emit( int _id, QUObject* _o )
+{
+ return TOOL_PAGE_PARENT::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool KviWindowToolPageButton::qt_property( int id, int f, QVariant* v)
+{
+ return TOOL_PAGE_PARENT::qt_property( id, f, v);
+}
+
+bool KviWindowToolPageButton::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/src/modules/Makefile.am b/src/modules/Makefile.am
new file mode 100644
index 00000000..267a89ef
--- /dev/null
+++ b/src/modules/Makefile.am
@@ -0,0 +1,61 @@
+SUBDIRS = about \
+ action \
+ actioneditor \
+ addon \
+ aliaseditor \
+ avatar \
+ chan \
+ channelsjoin \
+ clock \
+ codetester \
+ config \
+ context \
+ dcc \
+ dialog \
+ editor \
+ eventeditor \
+ file \
+ filetransferwindow \
+ dockwidget \
+ help \
+ http \
+ ident \
+ iograph \
+ lamerizer \
+ links \
+ list \
+ log \
+ logview \
+ mask \
+ math \
+ mediaplayer \
+ mircimport \
+ my \
+ notifier \
+ objects \
+ options \
+ perl \
+ perlcore \
+ popupeditor \
+ raweditor \
+ regchan \
+ reguser \
+ rijndael \
+ setup \
+ sharedfile \
+ sharedfileswindow \
+ snd \
+ socketspy \
+ spaste \
+ str \
+ system \
+ term \
+ texticons \
+ theme \
+ tip \
+ tmphighlight \
+ toolbar \
+ toolbareditor \
+ torrent \
+ url \
+ window
diff --git a/src/modules/about/ENTRIES b/src/modules/about/ENTRIES
new file mode 100644
index 00000000..0e53b3da
--- /dev/null
+++ b/src/modules/about/ENTRIES
@@ -0,0 +1,259 @@
+NAME: Szymon Stefanek
+NICK: Pragma
+MAIL: pragma at kvirc dot net
+ROLE: The "Creator" of KVIrc
+ROLE: Mental work, hand work,
+ROLE: eyes consuming and coffee drinking
+TEXT: I'll check... lemme check...
+TEXT: I'll fix it tomorrow...
+TEXT: KVIrc: the client that can't make coffee
+
+NAME: Jan Wagner
+NICK: Istari
+NICK: spion
+ROLE: Webmaster, bughunter, snapshot mantainer
+ROLE: support gay^Wguy :o) and the man that gives
+ROLE: you KVIrc through IPv6.
+
+NAME: Luk De Ketelaere
+NICK: Balboy
+MAIL: balboy at kvirc dot net
+ROLE: Documentation, bug searching, public relations
+TEXT: No idea of what you're talking about... or why you need it :)
+
+NAME: Andrea Parrella
+NICK: YaP
+MAIL: yap at kvirc dot net
+ROLE: Bug hunting, plugin development, bug fixes,
+ROLE: windows porting and snapshots
+TEXT: why you haven't implemented a class like DoEverythingByYourself ? :)
+TEXT: <Pragma> a wonderful recursive function :)
+TEXT: <YaP> Damn...I knew it eheheheheh
+
+NAME: Christian Strommen
+NICK: Number1
+MAIL: number1 at realityx dot net
+ROLE: Makes sure that nobody is lazy, bug-hunter, a LOT of suggestions and maker of RealityX IRC
+TEXT: Skydiving is almost as exciting as KVIrc scripting!
+TEXT: Pragma: could you add these functions: $rubmyback() and $makecoffe() ?
+
+NAME: Olle Hällnäs
+NICK: Crocodile
+MAIL: olle at xmms dot org
+ROLE: The "open hand" for the KVIrc project.
+ROLE: Provider of the CVS service, www & ftp mirroring, bandwidth,
+ROLE: great ideas and fun while coding.
+
+NAME: Juanjo Alvarez
+NICK: Kane
+MAIL: juanjux at yahoo dot es
+ROLE: Away system, colored nicks, general programming, spanish translantation
+TEXT: Pragma: think of KVIrc as a tool for scripters... we have to left them something to do :)
+
+NAME: Krzysztof Godlewski
+NICK: Kristoff
+MAIL: kristoff at proczta dot wprost dot pl
+ROLE: Official polish beer provider
+ROLE: and plugin developer
+TEXT: echo "STOP IT" > /dev/neighbour
+TEXT: cd ./neighbour && make clean
+TEXT: Pragma...erm...bugs ? WHICH bugs ? ;))
+
+NAME: Christopher R. Gabriel
+NICK: CGabriel
+MAIL: cgabriel at linux dot it
+ROLE: The 'light' inside the GNU clouds
+ROLE: Generic (??!) official project supporter :)
+TEXT: Pragma: seems that kvirc with all its plugins is becoming a desktop environment
+TEXT: echo espresso > /dev/coffee
+TEXT: Pragma: you reached the user limit. WTF!
+
+NAME: Andrew Frolov
+NICK: Drosha@Undernet
+ROLE: Beta testing
+ROLE: Ideator of www.kvirc.org
+TEXT: This free project is better that shareware
+TEXT: mIrc for windows even in alpha stage
+
+NAME: Ted Podgurski
+NICK: alch3m1st
+MAIL: tedp at toocool dot com
+ROLE: Test scripter, bug hunting
+ROLE: ideator & creator of the first www.kvirc.net
+TEXT: whassup ?
+
+NAME: RAD Kade 1
+NICK: RADKade1
+ROLE: Debugging an improvements
+TEXT: I'm just *really* good at doing things
+TEXT: when I have no idea of what I'm actually doing
+
+NAME: Fritz Elfert
+NICK: KNFritz@OpenProjects
+ROLE: Improvements of KVIrc code and of my linux knowledge
+ROLE: I like to think him as a 'spiritual guide'... :D
+
+NAME: Charles Samuels
+NICK: Njaard
+MAIL: charles at altair dot dhs dot org
+ROLE: The KDE man! Making sure that KVirc has a reason to have a K in the beginning
+TEXT: Could I please make KVirc a pure KDE application today?? Pleeease...
+
+NAME: BuTi
+NICK: BuTi@OpenProjects
+MAIL: buti at geocities dot com
+ROLE: Some "tiny" pieces of code
+
+NAME: Nick Betcher
+NICK: Error403
+MAIL: nbetcher at real-time dot com
+TEXT: &lt;Error403&gt; Number1: I imagined you looking crazy :)
+TEXT: "&lt;NumeroUno&gt; I was drunk
+
+NAME: Orn E. Hansen
+NICK: oehansen
+MAIL: oe.hansen at gamma dot telenordia dot se
+ROLE: The official C++ manual and plugin developer
+TEXT: prepare yourselves..
+TEXT: #include <iostream.h>
+TEXT: class testing {...
+TEXT: <oehansen> I must admit, I'm getting confused :-)
+TEXT: <Pragma> Me too , at this point :)
+
+NAME: Giovanni Ferri
+NICK: marl
+MAIL: giovanni at fonderiadigitale dot it
+ROLE: Bug hunter, ideas source :)
+TEXT: buy a pigeon traveller and pass dcc transfers to him
+
+NAME: Anodine
+NICK: [Anodine]
+ROLE: Various funky improvements
+TEXT: I can program anything I set my mind to!
+
+NAME: Paul Boehm
+NICK: infected
+ROLE: Beta testing, language structure improvements
+TEXT: ...it's enough for 100 IPs per meter
+TEXT: on earth, so every lightswitch can have
+TEXT: its own IP...then you telnet to your lightswitch
+TEXT: and turn it off!
+
+NAME: munehiro
+NICK: munehiro
+ROLE: Italian translations, code improvements and many useful suggestions
+
+NAME: Eva Schaller
+NICK: Penny
+ROLE: Italian translation, bug hunting, moral support :))))
+TEXT: KVirc ? Ah! Il dinosauro...
+
+NAME: Christoph Thielecke
+NICK: Crissi
+ROLE: German translation, bug hunting, new ideas
+ROLE: Some scripting, Code improvements + new code ;)
+TEXT: Pragma: Short question...
+
+NAME: Triskelios
+NICK: Triskelios
+MAIL: trisk-kvirc at quasarnet dot org
+ROLE: Breaking everything, and correcting grammar when there isn't anything left to break
+ROLE: Also, listening to Aeri's requests and getting about half of them done...
+TEXT: Hey, it's not my responsibility to find a funny quote of myself ^_~
+
+NAME: Du&#353;an Hok&#367;v
+NICK: Hunterz
+MAIL: dusan at mirc dot cz
+ROLE: Czech translation
+
+NAME: Thilo Shulz
+NICK: Thilo
+ROLE: Bugtracking and constant user support on #kvirc
+
+NAME: Iacopo Palazzi
+NICK: Iakko@IrcNet
+MAIL: iakko at omnikron dot net
+ROLE: Various code patches, ideas and bug hunting
+
+NAME: Thomas Kalla
+NICK: |Tom|@IrcNet
+ROLE: MacOSX porting
+
+NAME: Valeriy Girchenko
+ROLE: Russian translation
+
+NAME: José Melo
+NICK: Ze_M
+ROLE: Portuguese translation, default script patches and Mandriva (MDE) packager.
+
+NAME: Adilson Gonçalves Soares Junior
+NICK: CaBiDe
+MAIL: cabide at brfree dot com dot br
+ROLE: Portuguese Brasilian translation
+
+NAME: Alessandro Carbone
+NICK: Noldor
+MAIL: noldor at barmes dot org
+ROLE: Betatesting, bugfixing, exotic scripting,
+ROLE: code improvements, documentation....To be continued :-)
+TEXT: <Grifisx>...damned brackets  ...there are always too many...
+TEXT: <Noldor>....or too few..
+
+NAME: Tonino Imbesi
+NICK: Grifisx
+MAIL: grifisx at barmes dot org
+ROLE: Betatesting, bugfixing, exotic scripting,
+ROLE: code improvements, documentation....To be continued :-)
+TEXT: <Grifisx> The difference between me and you is just that
+TEXT: <Grifisx> You see things and you say "Why?" But I dream things
+TEXT: <Grifisx> that never were and I say..."Why not?"
+
+NAME: Alexey Uzhva
+NICK: Alexey
+MAIL: wizard at opendoor dot ru
+ROLE: Bugfixing, code improvements, localization improvements
+ROLE: To be continued :-)
+
+NAME: Ahinu
+NICK: Ahinu
+MAIL: ahinu at wanadoo dot fr
+ROLE: French translation, code fixes, betatesting and heavy bughunting
+
+NAME: Cle'
+NICK: Etherea
+MAIL: badgirl at virg0 dot org
+ROLE: Artist :)
+TEXT: Time makes no sense ;)
+
+NAME: Andidas
+NICK: Andidas
+ROLE: Splash screen Artist :)
+MAIL: http://www.andidas.com
+
+NAME: TheXception
+NICK: TheXception
+ROLE: bugfixes, german tutorials
+TEXT: everything is possible, it only needs its time.
+
+NAME: Elvio Basello
+NICK: HelLViS69
+MAIL: hellvis69 at netsons dot org
+ROLE: Site (re)creator, Italian translation, scripting,
+ROLE: bughunting, Slackware packages, new ideas...
+TEXT: <HelLViS69> Blessed gdb, in the name of ritchie,
+TEXT: kermingham and rms
+
+NAME: Massimiliano Leone
+NICK: k0sm|k0
+MAIL: k0smik0 at logorroici dot org
+ROLE: Debian packages, moral support
+TEXT: One must make one's self superior to humanity, in power,
+TEXT: in loftiness of soul, in contempt. - Friedrich Nietzsche
+
+NAME: Lorenzo Marcon
+NICK: LoSko
+MAIL: http://losko.altervista.org/nglfserv/
+ROLE: Bug hunting and fixing, doc fixes, scripting (NGL File Server)
+TEXT: I don't know what I want, but I know how to get it.
+
diff --git a/src/modules/about/Makefile.am b/src/modules/about/Makefile.am
new file mode 100644
index 00000000..4192c119
--- /dev/null
+++ b/src/modules/about/Makefile.am
@@ -0,0 +1,27 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkviabout.la
+
+libkviabout_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkviabout_la_SOURCES = libkviabout.cpp aboutdialog.cpp
+
+libkviabout_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= aboutdialog.h
+
+EXTRA_DIST = mkabouttext.pl abouttext.inc ENTRIES
+
+abouttext:
+ perl mkabouttext.pl
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+#libkviabout.cpp: libkviabout.moc
+aboutdialog.cpp: aboutdialog.moc
diff --git a/src/modules/about/aboutdialog.cpp b/src/modules/about/aboutdialog.cpp
new file mode 100644
index 00000000..4d13d98f
--- /dev/null
+++ b/src/modules/about/aboutdialog.cpp
@@ -0,0 +1,166 @@
+//=============================================================================
+//
+// File : aboutdialog.cpp
+// Creation date : Sun Jun 23 17:59:12 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "aboutdialog.h"
+
+#include "kvi_defaults.h"
+
+#include "kvi_locale.h"
+#include "kvi_app.h"
+#include "kvi_fileutils.h"
+#include "kvi_sourcesdate.h"
+
+#include <qwidget.h>
+#include <qlayout.h>
+#include <kvi_tal_textedit.h>
+#include <qlabel.h>
+#include <qpixmap.h>
+#include <qevent.h>
+
+extern KviAboutDialog * g_pAboutDialog;
+/*
+"<font color=\"#FFFF00\"><b>KVIrc public releases :</b></font><br>\n" \
+"<br>\n" \
+"<font color=\"#FF0000\">0.9.0</font><br>\n" \
+"<font size=\"2\" color=\"#808080\">Release date: 25.01.1999</font><br>\n" \
+"<br>\n" \
+"<font color=\"#FF0000\">1.0.0 'Millennium'</font><br>\n" \
+"<font size=\"2\">\"The net in your hands\"</font><br>\n" \
+"<font size=\"2\" color=\"#808080\">Release date: 21.12.1999</font><br>\n" \
+"<br>\n" \
+"<font color=\"#FF0000\">2.0.0 'Phoenix'</font><br>\n" \
+"<font size=\"2\">\"The client that can't make coffee\"</font><br>\n" \
+"<font size=\"2\" color=\"#808080\">Release date: 30.05.2000</font><br>\n" \
+"<br>\n" \
+"<font color=\"#FF0000\">2.1.0 'Dark Star'</font><br>\n" \
+"<font size=\"2\">\"The client that can't make coffee\"</font><br>\n" \
+"<font size=\"2\" color=\"#808080\">Release date: 30.01.2001</font><br>\n" \
+"<br>\n" \
+"<font color=\"#FF0000\">2.1.1 'Monolith'</font><br>\n" \
+"<font size=\"2\">\"A breath of fresh net\"</font><br>\n" \
+"<font size=\"2\" color=\"#808080\">Release date: 01.05.2001</font><br>\n" \
+"<br> 3.0.0-xmas build: 24-12-2001\n" \
+"3.0.0-beta1: 24-06-2002\n "
+"<font color=\"#FF0000\">3.0.0 'Avatar'</font><br>\n" \
+"<font size=\"2\">\"No slogan yet\"</font><br>\n" \
+"<font size=\"2\" color=\"#808080\">Release date: Still unknown</font><br>\n" \
+*/
+
+#include "abouttext.inc"
+
+KviAboutDialog::KviAboutDialog()
+: KviTalTabDialog(0)
+{
+ setCaption(__tr2qs_ctx("About KVIrc...","about"));
+ setOkButton(__tr2qs_ctx("Close","about"));
+
+ KviStr buffer;
+ g_pApp->findImage(buffer,"kvi_splash.png");
+
+ QPixmap pix(buffer.ptr());
+
+ QWidget * w = new QWidget(this);
+ QGridLayout * g = new QGridLayout(w,2,1,4,8);
+
+ QLabel * l = new QLabel(w);
+ l->setFrameStyle(QFrame::WinPanel | QFrame::Sunken);
+ l->setBackgroundColor(Qt::black);
+ l->setAlignment(Qt::AlignCenter);
+ l->setPixmap(pix);
+
+ g->addWidget(l,0,0);
+
+ QString aboutString= "KVIrc <b>" KVI_VERSION " '" KVI_RELEASE_NAME "'</b><br>";
+ aboutString += __tr2qs_ctx("Forged by the <b>KVIrc Development Team</b>","about");
+ aboutString += "<br>";
+ aboutString += __tr2qs_ctx("Sources date","about");
+ aboutString += ": ";
+ aboutString += KVI_SOURCES_DATE;
+
+ l = new QLabel(aboutString,w);
+ l->setAlignment(Qt::AlignCenter);
+ g->addWidget(l,1,0);
+
+ addTab(w,__tr2qs_ctx("About","about"));
+
+
+
+ w = new QWidget(this);
+ g = new QGridLayout(w,1,1,4,8);
+
+ KviTalTextEdit * v = new KviTalTextEdit(w);
+ v->setReadOnly(true);
+ g->addWidget(v,0,0);
+
+ v->setText(g_szAboutText);
+
+ addTab(w,__tr2qs_ctx("Honor && Glory","about"));
+
+
+
+ w = new QWidget(this);
+ g = new QGridLayout(w,1,1,4,8);
+
+ v = new KviTalTextEdit(w);
+ v->setReadOnly(true);
+ v->setWordWrap(KviTalTextEdit::NoWrap);
+ g->addWidget(v,0,0);
+
+ QString szLicense;
+
+ QString szLicensePath;
+ g_pApp->getGlobalKvircDirectory(szLicensePath,KviApp::License,"EULA");
+
+ if(!KviFileUtils::loadFile(szLicensePath,szLicense))
+ {
+ szLicense = __tr2qs_ctx("Oops... Can't find the license file...\n" \
+ "It MUST be included in the distribution...\n" \
+ "Please report to <pragma at kvirc dot net>","about");
+ }
+
+ v->setText(szLicense);
+
+ addTab(w,__tr2qs_ctx("License","about"));
+
+
+ connect(this,SIGNAL(applyButtonPressed()),this,SLOT(closeButtonPressed()));
+}
+
+KviAboutDialog::~KviAboutDialog()
+{
+ g_pAboutDialog = 0;
+}
+
+void KviAboutDialog::closeEvent(QCloseEvent *e)
+{
+ e->ignore();
+ delete this;
+}
+
+void KviAboutDialog::closeButtonPressed()
+{
+ delete this;
+}
+
+#include "aboutdialog.moc"
diff --git a/src/modules/about/aboutdialog.h b/src/modules/about/aboutdialog.h
new file mode 100644
index 00000000..da543a19
--- /dev/null
+++ b/src/modules/about/aboutdialog.h
@@ -0,0 +1,39 @@
+#ifndef _ABOUTDIALOG_H_
+#define _ABOUTDIALOG_H_
+//
+// File : aboutdialog.h
+// Creation date : Sun Jun 23 17:59:13 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include <kvi_tal_tabdialog.h>
+
+class KviAboutDialog : public KviTalTabDialog
+{
+ Q_OBJECT
+public:
+ KviAboutDialog();
+ ~KviAboutDialog();
+protected:
+ virtual void closeEvent(QCloseEvent *e);
+protected slots:
+ void closeButtonPressed();
+};
+
+#endif //_ABOUTDIALOG_H_
diff --git a/src/modules/about/abouttext.inc b/src/modules/about/abouttext.inc
new file mode 100644
index 00000000..c35fc173
--- /dev/null
+++ b/src/modules/about/abouttext.inc
@@ -0,0 +1,768 @@
+static char * g_szAboutText = "" \
+"<html>" \
+"<head>" \
+"<title>Honor and glory</title>" \
+"</head>" \
+"<body bgcolor=\"#FFFFFF\" text=\"#000000\" link=\"#FF0000\"><center>" \
+"<h4>" \
+"This is a partial list of the people that have " \
+"contributed in some way to the KVIrc project.<br><br>" \
+"Honor and glory to:<br>" \
+"</h4><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Szymon Stefanek</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"Pragma" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"pragma at kvirc dot net" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"The \"Creator\" of KVIrc" \
+"<br>" \
+"Mental work, hand work," \
+"<br>" \
+"eyes consuming and coffee drinking" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"I'll check... lemme check...\"" \
+"<br>" \
+"\"I'll fix it tomorrow...\"" \
+"<br>" \
+"\"KVIrc: the client that can't make coffee\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Jan Wagner</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"Istari" \
+", " \
+"spion" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Webmaster, bughunter, snapshot mantainer" \
+"<br>" \
+"support gay^Wguy :o) and the man that gives" \
+"<br>" \
+"you KVIrc through IPv6." \
+"</font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Luk De Ketelaere</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"Balboy" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"balboy at kvirc dot net" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Documentation, bug searching, public relations" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"No idea of what you're talking about... or why you need it :)\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Andrea Parrella</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"YaP" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"yap at kvirc dot net" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Bug hunting, plugin development, bug fixes," \
+"<br>" \
+"windows porting and snapshots" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"why you haven't implemented a class like DoEverythingByYourself ? :)\"" \
+"<br>" \
+"\"&lt;Pragma&gt; a wonderful recursive function :)\"" \
+"<br>" \
+"\"&lt;YaP&gt; Damn...I knew it eheheheheh\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Christian Strommen</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"Number1" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"number1 at realityx dot net" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Makes sure that nobody is lazy, bug-hunter, a LOT of suggestions and maker of RealityX IRC" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"Skydiving is almost as exciting as KVIrc scripting!\"" \
+"<br>" \
+"\"Pragma: could you add these functions: $rubmyback() and $makecoffe() ?\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Olle Hällnäs</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"Crocodile" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"olle at xmms dot org" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"The \"open hand\" for the KVIrc project." \
+"<br>" \
+"Provider of the CVS service, www & ftp mirroring, bandwidth," \
+"<br>" \
+"great ideas and fun while coding." \
+"</font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Juanjo Alvarez</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"Kane" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"juanjux at yahoo dot es" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Away system, colored nicks, general programming, spanish translantation" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"Pragma: think of KVIrc as a tool for scripters... we have to left them something to do :)\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Krzysztof Godlewski</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"Kristoff" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"kristoff at proczta dot wprost dot pl" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Official polish beer provider" \
+"<br>" \
+"and plugin developer" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"echo \"STOP IT\" &gt; /dev/neighbour\"" \
+"<br>" \
+"\"cd ./neighbour && make clean\"" \
+"<br>" \
+"\"Pragma...erm...bugs ? WHICH bugs ? ;))\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Christopher R. Gabriel</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"CGabriel" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"cgabriel at linux dot it" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"The 'light' inside the GNU clouds" \
+"<br>" \
+"Generic (??!) official project supporter :)" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"Pragma: seems that kvirc with all its plugins is becoming a desktop environment\"" \
+"<br>" \
+"\"echo espresso &gt; /dev/coffee\"" \
+"<br>" \
+"\"Pragma: you reached the user limit. WTF!\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Andrew Frolov</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"Drosha@Undernet" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Beta testing" \
+"<br>" \
+"Ideator of www.kvirc.org" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"This free project is better that shareware\"" \
+"<br>" \
+"\"mIrc for windows even in alpha stage\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Ted Podgurski</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"alch3m1st" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"tedp at toocool dot com" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Test scripter, bug hunting" \
+"<br>" \
+"ideator & creator of the first www.kvirc.net" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"whassup ?\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>RAD Kade 1</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"RADKade1" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Debugging an improvements" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"I'm just *really* good at doing things\"" \
+"<br>" \
+"\"when I have no idea of what I'm actually doing\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Fritz Elfert</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"KNFritz@OpenProjects" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Improvements of KVIrc code and of my linux knowledge" \
+"<br>" \
+"I like to think him as a 'spiritual guide'... :D" \
+"</font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Charles Samuels</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"Njaard" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"charles at altair dot dhs dot org" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"The KDE man! Making sure that KVirc has a reason to have a K in the beginning" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"Could I please make KVirc a pure KDE application today?? Pleeease...\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>BuTi</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"BuTi@OpenProjects" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"buti at geocities dot com" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Some \"tiny\" pieces of code" \
+"</font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Nick Betcher</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"Error403" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"nbetcher at real-time dot com" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"&lt;Error403&gt; Number1: I imagined you looking crazy :)\"" \
+"<br>" \
+"\"\"&lt;NumeroUno&gt; I was drunk\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Orn E. Hansen</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"oehansen" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"oe.hansen at gamma dot telenordia dot se" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"The official C++ manual and plugin developer" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"prepare yourselves..\"" \
+"<br>" \
+"\"#include &lt;iostream.h&gt;\"" \
+"<br>" \
+"\"class testing {...\"" \
+"<br>" \
+"\"&lt;oehansen&gt; I must admit, I'm getting confused :-)\"" \
+"<br>" \
+"\"&lt;Pragma&gt; Me too , at this point :)\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Giovanni Ferri</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"marl" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"giovanni at fonderiadigitale dot it" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Bug hunter, ideas source :)" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"buy a pigeon traveller and pass dcc transfers to him\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Anodine</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"[Anodine]" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Various funky improvements" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"I can program anything I set my mind to!\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Paul Boehm</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"infected" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Beta testing, language structure improvements" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"...it's enough for 100 IPs per meter\"" \
+"<br>" \
+"\"on earth, so every lightswitch can have\"" \
+"<br>" \
+"\"its own IP...then you telnet to your lightswitch\"" \
+"<br>" \
+"\"and turn it off!\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>munehiro</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"munehiro" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Italian translations, code improvements and many useful suggestions" \
+"</font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Eva Schaller</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"Penny" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Italian translation, bug hunting, moral support :))))" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"KVirc ? Ah! Il dinosauro...\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Christoph Thielecke</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"Crissi" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"German translation, bug hunting, new ideas" \
+"<br>" \
+"Some scripting, Code improvements + new code ;)" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"Pragma: Short question...\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Triskelios</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"Triskelios" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"trisk-kvirc at quasarnet dot org" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Breaking everything, and correcting grammar when there isn't anything left to break" \
+"<br>" \
+"Also, listening to Aeri's requests and getting about half of them done..." \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"Hey, it's not my responsibility to find a funny quote of myself ^_~\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Du&#353;an Hok&#367;v</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"Hunterz" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"dusan at mirc dot cz" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Czech translation" \
+"</font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Thilo Shulz</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"Thilo" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Bugtracking and constant user support on #kvirc" \
+"</font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Iacopo Palazzi</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"Iakko@IrcNet" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"iakko at omnikron dot net" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Various code patches, ideas and bug hunting" \
+"</font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Thomas Kalla</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"|Tom|@IrcNet" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"MacOSX porting" \
+"</font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Valeriy Girchenko</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Russian translation" \
+"</font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>José Melo</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"Ze_M" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Portuguese translation, default script patches and Mandriva (MDE) packager." \
+"</font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Adilson Gonçalves Soares Junior</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"CaBiDe" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"cabide at brfree dot com dot br" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Portuguese Brasilian translation" \
+"</font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Alessandro Carbone</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"Noldor" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"noldor at barmes dot org" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Betatesting, bugfixing, exotic scripting," \
+"<br>" \
+"code improvements, documentation....To be continued :-)" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"&lt;Grifisx&gt;...damned brackets  ...there are always too many...\"" \
+"<br>" \
+"\"&lt;Noldor&gt;....or too few..\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Tonino Imbesi</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"Grifisx" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"grifisx at barmes dot org" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Betatesting, bugfixing, exotic scripting," \
+"<br>" \
+"code improvements, documentation....To be continued :-)" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"&lt;Grifisx&gt; The difference between me and you is just that\"" \
+"<br>" \
+"\"&lt;Grifisx&gt; You see things and you say \"Why?\" But I dream things \"" \
+"<br>" \
+"\"&lt;Grifisx&gt; that never were and I say...\"Why not?\"\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Alexey Uzhva</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"Alexey" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"wizard at opendoor dot ru" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Bugfixing, code improvements, localization improvements" \
+"<br>" \
+"To be continued :-)" \
+"</font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Ahinu</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"Ahinu" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"ahinu at wanadoo dot fr " \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"French translation, code fixes, betatesting and heavy bughunting" \
+"</font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Cle'</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"Etherea" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"badgirl at virg0 dot org" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Artist :)" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"Time makes no sense ;)\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Andidas</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"Andidas" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"http://www.andidas.com" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Splash screen Artist :)" \
+"</font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>TheXception</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"TheXception" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"bugfixes, german tutorials" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"everything is possible, it only needs its time.\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Elvio Basello</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"HelLViS69" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"hellvis69 at netsons dot org" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Site (re)creator, Italian translation, scripting," \
+"<br>" \
+"bughunting, Slackware packages, new ideas..." \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"&lt;HelLViS69&gt; Blessed gdb, in the name of ritchie,\"" \
+"<br>" \
+"\"kermingham and rms\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Massimiliano Leone</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"k0sm|k0" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"k0smik0 at logorroici dot org" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Debian packages, moral support" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"One must make one's self superior to humanity, in power,\"" \
+"<br>" \
+"\"in loftiness of soul, in contempt. - Friedrich Nietzsche\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" \
+"<tr><td align=\"center\">" \
+"<font color=\"#000000\" size=\"+2\"><b>Lorenzo Marcon</b></font>" \
+"</td></tr>" \
+"<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (" \
+"LoSko" \
+")</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">" \
+"[" \
+"http://losko.altervista.org/nglfserv/" \
+"]" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#303030\">" \
+"Bug hunting and fixing, doc fixes, scripting (NGL File Server)" \
+"</font></td></tr>" \
+"<tr><td align=\"center\"><font color=\"#606060\"><i>" \
+"\"I don't know what I want, but I know how to get it.\"" \
+"</i></font></td></tr>" \
+"</table><br><br>" \
+"<br>" \
+"This list is far from being complete.<br>" \
+"A lot of more or less \"anonymous\" people have wasted their time, " \
+"eyes, bandwidth and brain resources on this project.<br>" \
+"If you're one of those, then well, this dialog is also for you :)<br>" \
+"</center><body>" \
+"</html>" \
+"";
diff --git a/src/modules/about/libkviabout.cpp b/src/modules/about/libkviabout.cpp
new file mode 100644
index 00000000..c7cb899c
--- /dev/null
+++ b/src/modules/about/libkviabout.cpp
@@ -0,0 +1,100 @@
+//=============================================================================
+//
+// File : kvi_about.cpp
+// Creation date : Tue Jul 6 1999 03:54:25 by Szymon Stefanek
+// Last major modification : Tue Dec 05 2000 06:00:00 by Christian Strmmen
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Till Bush (buti at geocities dot com)
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_module.h"
+#include "kvi_locale.h"
+
+
+#include "aboutdialog.h"
+
+KviAboutDialog * g_pAboutDialog = 0;
+
+/*
+ @doc: about.kvirc
+ @type:
+ command
+ @title:
+ about.kvirc
+ @short:
+ Shows the "about kvirc" dialog
+ @syntax:
+ about.kvirc
+ @description:
+ Shows the KVIrc "about dialog".
+ This command is exported by the "about" module.
+*/
+
+
+static bool about_kvs_command_kvirc(KviKvsModuleCommandCall *)
+{
+ if(!g_pAboutDialog)
+ {
+ g_pAboutDialog = new KviAboutDialog();
+ g_pAboutDialog->show();
+ } else {
+ g_pAboutDialog->raise();
+ }
+ return true;
+}
+
+
+// =======================================
+// init routine
+// =======================================
+
+static bool about_module_init(KviModule * m)
+{
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"kvirc",about_kvs_command_kvirc)
+ return true;
+}
+
+static bool about_module_cleanup(KviModule *m)
+{
+ if(g_pAboutDialog)delete g_pAboutDialog;
+ g_pAboutDialog = 0;
+ return true;
+}
+
+static bool about_module_can_unload(KviModule * m)
+{
+ return (!g_pAboutDialog);
+}
+
+// =======================================
+// plugin definition structure
+// =======================================
+
+KVIRC_MODULE(
+ "KVIrc about dialog",
+ "2.0.0",
+ "Till Bush <[email protected]>\n" \
+ "Szymon Stefanek <pragma at kvirc dot net>" ,
+ "Exports the /about.kvirc command\n",
+ about_module_init ,
+ about_module_can_unload,
+ 0,
+ about_module_cleanup
+)
diff --git a/src/modules/about/mkabouttext.pl b/src/modules/about/mkabouttext.pl
new file mode 100644
index 00000000..0b58a42c
--- /dev/null
+++ b/src/modules/about/mkabouttext.pl
@@ -0,0 +1,172 @@
+#!/usr/bin/perl
+
+open(TEMPLATE,"ENTRIES") or die "Can't open the ENTRIES file";
+
+$cnt = -1;
+
+while(<TEMPLATE>)
+{
+ $_ =~ s/\n//g;
+ $_ =~ s/</&lt;/g;
+ $_ =~ s/>/&gt;/g;
+
+ if(/^NAME:[ ]*/)
+ {
+ $_ =~ s/^NAME:[ ]*//;
+ $cnt++;
+ $g_names[$cnt]=$_;
+ } elsif(/^MAIL:[ ]*/)
+ {
+ $_ =~ s/^MAIL:[ ]*//;
+ $tmp = $g_mails[$cnt];
+ if($tmp ne "")
+ {
+ $tmp = "$tmp<!!!>";
+ }
+ $tmp = "$tmp$_";
+ $g_mails[$cnt] = $tmp;
+ } elsif(/^ROLE:[ ]*/)
+ {
+ $_ =~ s/^ROLE:[ ]*//;
+ $tmp = $g_roles[$cnt];
+ if($tmp ne "")
+ {
+ $tmp = "$tmp<!!!>";
+ }
+ $tmp = "$tmp$_";
+ $g_roles[$cnt] = $tmp;
+ } elsif(/^TEXT:[ ]*/)
+ {
+ $_ =~ s/^TEXT:[ ]*//;
+ $tmp = $g_texts[$cnt];
+ if($tmp ne "")
+ {
+ $tmp = "$tmp<!!!>";
+ }
+ $tmp = "$tmp$_";
+ $g_texts[$cnt] = $tmp;
+ } elsif(/^NICK:[ ]*/)
+ {
+ $_ =~ s/^NICK:[ ]*//;
+ $tmp = $g_nicks[$cnt];
+ if($tmp ne "")
+ {
+ $tmp = "$tmp<!!!>";
+ }
+ $tmp = "$tmp$_";
+ $g_nicks[$cnt] = $tmp;
+ }
+}
+
+close(TEMPLATE);
+
+sub p
+{
+ $t = $_[0];
+ $t =~ s/\"/\\\"/g;
+ $t =~ s/^[ ]*//g;
+ print OUT "\"$t\" \\\n";
+}
+
+open(OUT,">abouttext.inc") or die "Can't open abouttext.inc";
+
+print OUT "static char * g_szAboutText = \"\" \\\n";
+
+p "<html>";
+p " <head>";
+p " <title>Honor and glory</title>";
+p " </head>";
+p " <body bgcolor=\"#FFFFFF\" text=\"#000000\" link=\"#FF0000\"><center>";
+
+
+p " <h4>";
+p "This is a partial list of the people that have ";
+p "contributed in some way to the KVIrc project.<br><br>";
+p "Honor and glory to:<br>";
+p " </h4><br><br>";
+
+$i = 0;
+$cnt++;
+while($i < $cnt)
+{
+ p "<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">";
+ p "<tr><td align=\"center\">";
+ p "<font color=\"#000000\" size=\"+2\"><b>$g_names[$i]</b></font>";
+ p "</td></tr>";
+
+ if($g_nicks[$i] ne "")
+ {
+
+ p "<tr><td align=\"center\"><font color=\"#800020\" size=\"+2\"> (";
+ @n = split(/<!!!>/,$g_nicks[$i]);
+ $j = 0;
+ while($n[$j] ne "")
+ {
+ if($j > 0){ p ", "; }
+ p $n[$j];
+ $j++;
+ }
+ p ")</font></td></tr>";
+
+ }
+
+ if($g_mails[$i] ne "")
+ {
+ p "<tr><td align=\"center\"><font color=\"#0000FF\" size=\"+1\">";
+ @n = split(/<!!!>/,$g_mails[$i]);
+ $j = 0;
+ while($n[$j] ne "")
+ {
+ if($j > 0){ p "<br>"; }
+ p "[";
+ p $n[$j];
+ p "]";
+ $j++;
+ }
+ p "</font></td></tr>";
+ }
+
+ if($g_roles[$i] ne "")
+ {
+ p "<tr><td align=\"center\"><font color=\"#303030\">";
+ @n = split(/<!!!>/,$g_roles[$i]);
+ $j = 0;
+ while($n[$j] ne "")
+ {
+ if($j > 0){ p "<br>"; }
+ p $n[$j];
+ $j++;
+ }
+ p "</font></td></tr>";
+ }
+
+ if($g_texts[$i] ne "")
+ {
+ p "<tr><td align=\"center\"><font color=\"#606060\"><i>";
+ @n = split(/<!!!>/,$g_texts[$i]);
+ $j = 0;
+ while($n[$j] ne "")
+ {
+ if($j > 0){ p "<br>" ; }
+ p "\"$n[$j]\"";
+ $j++;
+ }
+ p "</i></font></td></tr>";
+ }
+
+ p "</table><br><br>";
+ $i++;
+}
+
+p "<br>";
+p "This list is far from being complete.<br>";
+p "A lot of more or less \"anonymous\" people have wasted their time, ";
+p "eyes, bandwidth and brain resources on this project.<br>";
+p "If you're one of those, then well, this dialog is also for you :)<br>";
+
+p " </center><body>";
+p "</html>";
+
+print OUT "\"\";\n";
+
+close(OUT);
diff --git a/src/modules/action/Makefile.am b/src/modules/action/Makefile.am
new file mode 100644
index 00000000..2015e908
--- /dev/null
+++ b/src/modules/action/Makefile.am
@@ -0,0 +1,17 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkviaction.la
+
+libkviaction_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkviaction_la_SOURCES = libkviaction.cpp
+
+libkviaction_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+#noinst_HEADERS= actiondialog.h
+
diff --git a/src/modules/action/libkviaction.cpp b/src/modules/action/libkviaction.cpp
new file mode 100644
index 00000000..daf84699
--- /dev/null
+++ b/src/modules/action/libkviaction.cpp
@@ -0,0 +1,533 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// File : libkviaction.cpp
+// Creation date : Tue 7 Dec 00:05:59 2002 GMT by Szymon Stefanek
+//
+// This toolbar is part of the KVirc irc client distribution
+// Copyright (C) 2004-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include "kvi_module.h"
+#include "kvi_action.h"
+#include "kvi_actionmanager.h"
+#include "kvi_locale.h"
+#include "kvi_qstring.h"
+#include "kvi_parameterlist.h"
+#include "kvi_cmdformatter.h"
+#include "kvi_qstring.h"
+#include "kvi_error.h"
+#include "kvi_out.h"
+#include "kvi_iconmanager.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_kvs_useraction.h"
+#include "kvi_kvs_script.h"
+
+/*
+ @doc: action.list
+ @type:
+ command
+ @title:
+ action.list
+ @short:
+ Lists the available actions
+ @syntax:
+ action.list
+ @description:
+ Lists the currently defined actions: nothing more, nothing less.
+*/
+
+static bool action_kvs_cmd_list(KviKvsModuleCommandCall * c)
+{
+ KviWindow * pOut = c->window();
+
+ KviPointerHashTableIterator<QString,KviAction> it(*(KviActionManager::instance()->actions()));
+ while(KviAction * a = it.current())
+ {
+ if(a->isKviUserActionNeverOverrideThis())
+ pOut->output(KVI_OUT_VERBOSE,__tr2qs("%cCore action: %Q"),KVI_TEXT_BOLD,&(a->name()));
+ else
+ pOut->output(KVI_OUT_VERBOSE,__tr2qs("%cUser action: %Q"),KVI_TEXT_BOLD,&(a->name()));
+ pOut->output(KVI_OUT_VERBOSE,__tr2qs("Label: %Q"),&(a->visibleName()));
+ pOut->output(KVI_OUT_VERBOSE,__tr2qs("Category: %Q"),&(a->category()->visibleName()));
+ pOut->output(KVI_OUT_VERBOSE,__tr2qs("Description: %Q"),&(a->description()));
+ pOut->output(KVI_OUT_VERBOSE," "); // spacer
+ ++it;
+ }
+ return true;
+}
+
+/*
+ @doc: action.trigger
+ @type:
+ command
+ @title:
+ action.trigger
+ @short:
+ Triggers an action
+ @syntax:
+ action.trigger [-q] <name:string>
+ @switches:
+ !sw: -q | --quiet
+ Run in quiet mode (do not print any warnings)
+ @description:
+ Triggers the action specified by <name>, if that action exists and is enabled.
+ If the -q switch is specified the command runs in quiet mode and
+ does not print warnings if the action is not defined or disabled.
+ @examples:
+ [example]
+ action.trigger connect
+ [/example]
+*/
+
+static bool action_kvs_cmd_trigger(KviKvsModuleCommandCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("name",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSM_PARAMETERS_END(c)
+
+ KviAction * a = KviActionManager::instance()->getAction(szName);
+ if(a)
+ {
+ if(a->isEnabled())
+ {
+ a->activate();
+ } else {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("The action \"%1\" is disabled").arg(szName));
+ }
+ } else {
+ c->warning(__tr2qs("The action \"%1\" does not exist").arg(szName));
+ }
+
+ return true;
+}
+
+/*
+ @doc: action.enable
+ @type:
+ command
+ @title:
+ action.enable
+ @short:
+ Enables an action
+ @syntax:
+ action.enable [-q] <name:string>
+ @switches:
+ !sw: -q | --quiet
+ Run quietly, do not print any warnings
+ @description:
+ Enables the action specified by <name>, if that action exists.
+ If the action was previously enabled then this command does nothing.
+ otherwise all the toolbar buttons and menu items belonging to this
+ action will get enabled.[br]
+ Since [cmd]action.create[/cmd] command allows specifying contexts
+ for actions and the action engine is able to enable/disable the actions
+ automatically on certain events you will probably never need to use this command.
+ If the -q switch is specified the command runs in quiet mode and
+ does not print warnings if the action is not defined.
+ @seealso:
+ [cmd]action.disable[/cmd]
+*/
+
+static bool action_kvs_cmd_enable(KviKvsModuleCommandCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("name",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSM_PARAMETERS_END(c)
+
+ KviAction * a = KviActionManager::instance()->getAction(szName);
+ if(a)
+ {
+ if(!a->isEnabled())a->setEnabled(true);
+ } else {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("The action \"%1\" does not exist").arg(szName));
+ }
+
+ return true;
+}
+
+/*
+ @doc: action.disable
+ @type:
+ command
+ @title:
+ action.disable
+ @short:
+ Disables an action
+ @syntax:
+ action.disable [-q] [-f] <name:string>
+ @switches:
+ !sw: -q | --quiet
+ Run quietly, do not print any warnings
+ @description:
+ Disables the action specified by <name>, if that action exists.
+ If the action was previously disabled then this command does nothing.
+ otherwise all the toolbar buttons and menu items belonging to this
+ action will get disabled.[br]
+ Since [cmd]action.create[/cmd] command allows specifying contexts
+ for actions and the action engine is able to enable/disable the actions
+ automatically on certain events you will probably never need to use this command.
+ For the same reason the action may get automatically re-enabled when
+ one of the enabling events specified at [cmd]action.create[/cmd] time happens.
+ If the -q switch is specified the command runs in quiet mode and
+ does not print warnings if the action is not defined.
+ @seealso:
+ [cmd]action.enable[/cmd]
+*/
+
+static bool action_kvs_cmd_disable(KviKvsModuleCommandCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("name",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSM_PARAMETERS_END(c)
+
+ KviAction * a = KviActionManager::instance()->getAction(szName);
+ if(a)
+ {
+ if(a->isEnabled())a->setEnabled(false);
+ } else {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("The action \"%1\" does not exist").arg(szName));
+ }
+
+ return true;
+}
+
+/*
+ @doc: action.destroy
+ @type:
+ command
+ @title:
+ action.destroy
+ @short:
+ Destroy an action
+ @syntax:
+ action.destroy [-q] <name:string>
+ @switches:
+ !sw: -q | --quiet
+ Run quietly, do not print any warnings
+ @description:
+ Destroys the action specified by <name>, if that action exists.[br]
+ Destroying an action will remove it from any toolbar or popup.[br]
+ If the -q switch is specified the command runs in quiet mode and
+ does not print warnings if the action is not defined.
+ Please note that you CAN'T destroy core actions, you can destroy
+ only script actions that have been defined by the user (or other scripts).
+ @seealso:
+ # this will trigger a warning and NOT work
+ action.destroy connect
+*/
+
+static bool action_kvs_cmd_destroy(KviKvsModuleCommandCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("name",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSM_PARAMETERS_END(c)
+
+ KviAction * a = KviActionManager::instance()->getAction(szName);
+ if(a)
+ {
+ if(a->isKviUserActionNeverOverrideThis())
+ {
+ a->suicide();
+ } else {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("The action \"%1\" is a core action and cannot be destroyed").arg(szName));
+ }
+ } else {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("The action \"%1\" does not exist").arg(szName));
+ }
+
+ return true;
+}
+
+/*
+ @doc: action.create
+ @type:
+ command
+ @title:
+ action.create
+ @short:
+ Defines a new action
+ @syntax:
+ action.create [-i] [-c] [-l] [-w=<window_types:string>] [-s] [-t=<category:string>] (<name:string>,<visible label:string>,<description:string>,<big_icon_id:string>[,<small_icon_id:string>])
+ {
+ <action body>
+ }
+ @switches:
+ !sw: -i | --bind-to-context
+ Specifies that the action needs an IRC context to be executed.
+ When the current window does not belong to an IRC context
+ the action is automatically disabled
+
+ !sw: -c | --bind-to-connection
+ Specifies that the action needs an IRC connection to be executed.
+ When the current window has no associated IRC connection
+ the action is automatically disabled.
+ This switch implies -i.
+
+ !sw: -l | --enable-at-login
+ Specifies that the action needs to be enabled at login time, that is
+ when a link to the server has been estabilished but the login
+ operations haven't been carried out yet (and thus there is no real IRC connection).
+ This switch requires -c to work.
+
+ !sw: -w=<window_types> | --window-types=<window_type>
+ Causes the action to be enabled only when the active window
+ is one of the specified types. <window_types> may be any combination
+ of the letters 'q' (query), 'c' (channel), 'x' (console), 'd' (dccchat).
+ If this switch is omitted then the action is enabled in all the windows.[br]
+
+ !sw: -s | --selected-only
+ Specifies that the action will be activated only if the active window
+ has selected users in the userlist. This switch requires -w with a combination
+ of flags 'q','c' and 'x' (it doesn't work for dcc chat).
+
+ !sw: -t=<category> | --category=<category>
+ Causes the action to belong to the specified category.
+ <category> can be one of "irc","scripting","settings","gui","channel","tools" and "generic".
+ If this switch is omitted the "generic" category is automatically assumed.
+ The actions failing in the "tools" category will appear in the "Tools" KVIrc menu too.
+
+ !sw: -k=<key sequence> | --key-sequence=<key sequence>
+ Specifies that the action will be activated also by the <key sequence>
+ which is a string formed from up to four keyboard codes separated by
+ commas optionally combined with the modifiers "Alt","Ctrl","Shift" and "Meta".[br]
+ Examples of such sequences are: "Ctrl+X", "Ctrl+Alt+F" or "Ctrl+X,Alt+Space".
+ @description:
+ [p]
+ Defines a new script action.
+ [/p]
+ [p]
+ Each action has an unique <name> that must not collide with any core action
+ (i.e. don't use the "kvirc." prefix).
+ At any time you can check [cmd]action.list[/cmd] to verify that no core action
+ is already using your <name>. If the <name> was already used for a script action
+ then this action is simply replaced by the new one.
+ [/p]
+ [p]
+ Each action has an associated <visible label> that is the name meant to be presented to the user,
+ possibly even translated. This label will appear on the toolbar buttons, in the tooltips and
+ in the popup menu items. The string will be evaluated just before the actions is displayed
+ so the eventual runtime translation will fetch from the correct language catalogue.
+ [/p]
+ [p]
+ <description> is the descriptive text that will be displayed in the action choice dialog
+ (and maybe in other places).
+ The string will be evaluated just before the actions is displayed
+ so the eventual runtime translation will fetch from the correct language catalogue.
+ [/p]
+ [p]
+ <big_icon_id> is the [doc:image_id]image identifier[/doc] of the icon that will
+ appear on the toolbar buttons and in the action choice dialog.
+ [/p]
+ [p]
+ <small_icon_id> is optional and is the [doc:image_id]image identifier[/doc] of the icon
+ that will appear in the menu items. Since menu items can be also iconless then
+ this parameter is optional.
+ [/p]
+ [p]
+ <action body> is the callback code snippet that will be triggered when this action is activated
+ either by the means of [cmd]action.trigger[/cmd], a toolbar button or a menu item selection.
+ An empty <action body> causes this command to behave like [cmd]action.destoy[/cmd] <name>.
+ [/p]
+ @seealso:
+ [cmd]action.destroy[/cmd], [cmd]action.trigger[/cmd]
+ @examples:
+ [example]
+
+ [/example]
+*/
+
+static bool action_kvs_cmd_create(KviKvsModuleCallbackCommandCall * c)
+{
+ QString szName,szVisibleText,szDescription,szBigIconId,szSmallIconId;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("name",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSM_PARAMETER_IGNORED("visible_label")
+ KVSM_PARAMETER_IGNORED("description")
+ KVSM_PARAMETER("big_icon_id",KVS_PT_NONEMPTYSTRING,0,szBigIconId)
+ KVSM_PARAMETER("small_icon_id",KVS_PT_STRING,KVS_PF_OPTIONAL,szSmallIconId)
+ KVSM_PARAMETERS_END(c)
+
+ if(!(c->getParameterCode(1,szVisibleText) && c->getParameterCode(2,szDescription)))
+ {
+ c->error(__tr2qs("Internal error: call a head-shrinker"));
+ return false;
+ }
+
+ QString szCategory,szWindows,szKeySequence;
+
+ int iFlags = 0;
+
+ if(c->switches()->find('i',"bind-to-context"))iFlags |= KviAction::NeedsContext;
+ if(c->switches()->find('c',"bind-to-connection"))iFlags |= KviAction::NeedsConnection | KviAction::NeedsContext;
+ if(c->switches()->find('l',"enable-at-login"))
+ {
+ if(iFlags & KviAction::NeedsConnection)
+ iFlags |= KviAction::EnableAtLogin;
+ else
+ c->warning(__tr2qs("The switch -l requires -c"));
+ }
+ c->switches()->getAsStringIfExisting('t',"category",szCategory);
+ if(szCategory.isEmpty())szCategory = "generic";
+ c->switches()->getAsStringIfExisting('w',"window-types",szWindows);
+ if(!szWindows.isEmpty())
+ {
+ if(szWindows.find('c') != -1)iFlags |= KviAction::WindowChannel;
+ if(szWindows.find('x') != -1)iFlags |= KviAction::WindowConsole;
+ if(szWindows.find('d') != -1)iFlags |= KviAction::WindowDccChat;
+ if(szWindows.find('q') != -1)iFlags |= KviAction::WindowQuery;
+ }
+ if(c->switches()->find('s',"enable-on-selected"))
+ {
+ if(iFlags & (KviAction::WindowChannel | KviAction::WindowConsole | KviAction::WindowQuery))
+ iFlags |= KviAction::WindowOnlyIfUsersSelected;
+ else
+ c->warning(__tr2qs("The switch -s requires -w with a combination of flags 'c','x' and 'q'"));
+ }
+ c->switches()->getAsStringIfExisting('k',"key-sequence",szKeySequence);
+
+
+ KviAction * old = KviActionManager::instance()->getAction(szName);
+ if(old)
+ {
+ if(old->isKviUserActionNeverOverrideThis())
+ old->suicide();
+ else {
+ c->warning(__tr2qs("The action \"%1\" is already defined as core action and cannot be overridden").arg(szName));
+ return false;
+ }
+ }
+
+ QString szCmd = c->callback()->code();
+
+ if(szCmd.isEmpty())
+ {
+ // just killed it :)
+ return true;
+ }
+
+ int iOldFlags = iFlags;
+ iFlags = KviAction::validateFlags(iFlags);
+ if(iFlags != iOldFlags)
+ debug("action.validate has provided invalid flags: %d fixed to %d",iOldFlags,iFlags);
+
+ KviKvsUserAction * a = KviKvsUserAction::createInstance(KviActionManager::instance(),
+ szName,szCmd,szVisibleText,
+ szDescription,szCategory,szBigIconId,
+ szSmallIconId,iFlags,szKeySequence);
+
+ KviActionManager::instance()->registerAction(a);
+
+ return true;
+}
+
+/*
+ @doc: action.exists
+ @type:
+ function
+ @title:
+ $action.exists
+ @short:
+ Checks if an action is currently defined
+ @syntax:
+ <boolean> $action.exists(<name:string>)
+ @description:
+ Returns 1 if the action with the specified <name> is currently defined
+ and 0 otherwise.
+*/
+
+static bool action_kvs_fnc_exists(KviKvsModuleFunctionCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("action_name",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSM_PARAMETERS_END(c)
+ c->returnValue()->setBoolean(KviActionManager::instance()->getAction(szName) ? true : false);
+ return true;
+}
+
+/*
+ @doc: action.isEnabled
+ @type:
+ function
+ @title:
+ $action.isEnabled
+ @short:
+ Checks if an action is currently enabled.
+ @syntax:
+ <boolean> $action.isEnabled(<name:string>)
+ @description:
+ Returns 1 if the action with the specified <name> is currently enabled
+ and 0 otherwise. If the action does not exist the function returns 0.
+*/
+
+static bool action_kvs_fnc_isEnabled(KviKvsModuleFunctionCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("action_name",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSM_PARAMETERS_END(c)
+ KviAction * a = KviActionManager::instance()->getAction(szName);
+ if(a)
+ c->returnValue()->setBoolean(a->isEnabled());
+ else
+ c->returnValue()->setBoolean(false);
+ return true;
+}
+
+
+static bool action_module_init(KviModule *m)
+{
+ // setlabel , $label , $position , move , $itempos , $itemexists , $itemtype
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"list",action_kvs_cmd_list);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"trigger",action_kvs_cmd_trigger);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"enable",action_kvs_cmd_enable);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"disable",action_kvs_cmd_disable);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"destroy",action_kvs_cmd_destroy);
+
+ KVSM_REGISTER_CALLBACK_COMMAND(m,"create",action_kvs_cmd_create);
+
+ KVSM_REGISTER_FUNCTION(m,"exists",action_kvs_fnc_exists);
+ KVSM_REGISTER_FUNCTION(m,"isEnabled",action_kvs_fnc_isEnabled);
+ return true;
+}
+
+static bool action_module_cleanup(KviModule *m)
+{
+ return true;
+}
+
+KVIRC_MODULE(
+ "action", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2004 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "Interface to the system actions",
+ action_module_init,
+ 0,
+ 0,
+ action_module_cleanup
+)
diff --git a/src/modules/actioneditor/Makefile.am b/src/modules/actioneditor/Makefile.am
new file mode 100644
index 00000000..84ce9dd7
--- /dev/null
+++ b/src/modules/actioneditor/Makefile.am
@@ -0,0 +1,21 @@
+###############################################################################
+# KVirc IRC client module Makefile - Szymon Stefanek <pragma at kvirc dot net>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkviactioneditor.la
+
+libkviactioneditor_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkviactioneditor_la_SOURCES = libkviactioneditor.cpp actioneditor.cpp
+nodist_libkviactioneditor_la_SOURCES = moc_actioneditor.cpp
+
+noinst_HEADERS = actioneditor.h
+libkviactioneditor_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+# noinst_HEADERS=
+
+moc_actioneditor.cpp: actioneditor.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/actioneditor/actioneditor.cpp b/src/modules/actioneditor/actioneditor.cpp
new file mode 100644
index 00000000..cfc12932
--- /dev/null
+++ b/src/modules/actioneditor/actioneditor.cpp
@@ -0,0 +1,1009 @@
+//=============================================================================
+//
+// File : aliaseditor.cpp
+// Creation date : Tue 29 Dec 2004 02:45:59 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the linkss of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+#include "actioneditor.h"
+
+#include "kvi_iconmanager.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_imagedialog.h"
+#include "kvi_config.h"
+#include "kvi_filedialog.h"
+#include "kvi_fileutils.h"
+#include "kvi_scripteditor.h"
+#include "kvi_debug.h"
+#include "kvi_app.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_aliasmanager.h"
+#include "kvi_filedialog.h"
+#include "kvi_actionmanager.h"
+#include "kvi_action.h"
+#include "kvi_kvs_useraction.h"
+#include "kvi_customtoolbarmanager.h"
+
+#include <qsplitter.h>
+#include <qlayout.h>
+#include "kvi_tal_vbox.h"
+#include <qtooltip.h>
+#include <qpushbutton.h>
+#include <qdir.h>
+#include <qmessagebox.h>
+#include <qlineedit.h>
+#include <qcombobox.h>
+#include <qtoolbutton.h>
+#include <qcheckbox.h>
+#include <qtooltip.h>
+#include <qpainter.h>
+#ifdef COMPILE_USE_QT4
+ #include <q3header.h>
+#else
+ #include <qheader.h>
+#endif
+#include <qtabwidget.h>
+#include <kvi_tal_groupbox.h>
+#include "kvi_valuelist.h"
+#include <qlabel.h>
+
+extern KviActionEditorWindow * g_pActionEditorWindow;
+
+static QString g_szLastEditedAction;
+
+#define LVI_ICON_SIZE 32
+#define LVI_BORDER 4
+#define LVI_SPACING 8
+#define LVI_MINIMUM_TEXT_WIDTH 150
+#define LVI_MINIMUM_CELL_WIDTH (LVI_MINIMUM_TEXT_WIDTH + LVI_BORDER + LVI_ICON_SIZE + LVI_SPACING + LVI_BORDER)
+
+KviActionEditorListViewItem::KviActionEditorListViewItem(KviTalListView * v,KviActionData * a)
+: KviTalListViewItem(v,"")
+{
+ m_pActionData = a;
+ m_pListView = v;
+ m_pIcon = 0;
+ setupForActionData();
+}
+
+KviActionEditorListViewItem::~KviActionEditorListViewItem()
+{
+ if(m_pIcon)delete m_pIcon;
+ delete m_pActionData;
+}
+
+void KviActionEditorListViewItem::setupForActionData()
+{
+ QString t = "<b>" + m_pActionData->m_szName + "</b>";
+ t += "<br><font color=\"#808080\" size=\"-1\">" + m_pActionData->m_szVisibleName + "</font>";
+ m_szKey = m_pActionData->m_szName.upper();
+ m_pText = new QSimpleRichText(t,m_pListView->font());
+ if(m_pIcon)delete m_pIcon;
+ QPixmap * p = g_pIconManager->getBigIcon(m_pActionData->m_szBigIcon);
+ if(p)m_pIcon = new QPixmap(*p);
+ else {
+ p = g_pIconManager->getImage("kvi_bigicon_unknown.png");
+ if(p)m_pIcon = new QPixmap(*p);
+ else m_pIcon = new QPixmap(LVI_ICON_SIZE,LVI_ICON_SIZE);
+ }
+ setup();
+}
+
+QString KviActionEditorListViewItem::key(int,bool) const
+{
+ return m_szKey;
+}
+
+void KviActionEditorListViewItem::setup()
+{
+ KviTalListViewItem::setup();
+ int iWidth = m_pListView->visibleWidth();
+ if(iWidth < LVI_MINIMUM_CELL_WIDTH)iWidth = LVI_MINIMUM_CELL_WIDTH;
+ iWidth -= LVI_BORDER + LVI_ICON_SIZE + LVI_SPACING + LVI_BORDER;
+ m_pText->setWidth(iWidth);
+ int iHeight = m_pText->height() + (2 * LVI_BORDER);
+ if(iHeight < (LVI_ICON_SIZE + (2 * LVI_BORDER)))iHeight = LVI_ICON_SIZE + (2 * LVI_BORDER);
+ setHeight(iHeight);
+}
+
+void KviActionEditorListViewItem::paintCell(QPainter * p,const QColorGroup & cg,int column,int width,int align)
+{
+ p->fillRect(QRect(0,0,width,height()),isSelected() ? cg.highlight() : cg.base());
+ p->drawPixmap(LVI_BORDER,LVI_BORDER,*m_pIcon);
+ int afterIcon = LVI_BORDER + LVI_ICON_SIZE + LVI_SPACING;
+ int www = m_pListView->visibleWidth() - (afterIcon + LVI_BORDER);
+ m_pText->setWidth(www);
+ m_pText->draw(p,afterIcon,LVI_BORDER,QRect(afterIcon,LVI_BORDER,www,height() - (LVI_BORDER * 2)),cg);
+}
+
+
+KviSingleActionEditor::KviSingleActionEditor(QWidget * par,KviActionEditor * ed)
+: QWidget(par)
+{
+ m_pActionEditor = ed;
+ m_pActionData = 0;
+
+ QGridLayout * g = new QGridLayout(this,3,2,0,4);
+
+ QLabel * l = new QLabel(__tr2qs("Name:"),this);
+ g->addWidget(l,0,0);
+ m_pNameEdit = new QLineEdit(this);
+ g->addWidget(m_pNameEdit,0,1);
+ QToolTip::add(m_pNameEdit,__tr2qs("Internal unique name for the action"));
+
+ l = new QLabel(__tr2qs("Label:"),this);
+ g->addWidget(l,1,0);
+ m_pVisibleNameEdit = new QLineEdit(this);
+ g->addWidget(m_pVisibleNameEdit,1,1);
+ QToolTip::add(m_pVisibleNameEdit,__tr2qs("Visible name for this action.<br>This string will be displayed to the user so it is a good idea to use $tr() here"));
+
+ QTabWidget * tw = new QTabWidget(this);
+ g->addMultiCellWidget(tw,2,2,0,1);
+
+ // code tab
+ QWidget * tab = new QWidget(tw);
+ QGridLayout * gl = new QGridLayout(tab,1,1,8,4);
+
+ m_pScriptEditor = KviScriptEditor::createInstance(tab);
+ gl->addWidget(m_pScriptEditor,0,0);
+ QToolTip::add(m_pScriptEditor,__tr2qs("Action code"));
+
+ tw->addTab(tab,__tr2qs("Code"));
+
+ // properties tab
+ tab = new QWidget(tw);
+ gl = new QGridLayout(tab,7,4,8,4);
+
+ l = new QLabel(__tr2qs("Category:"),tab);
+ gl->addWidget(l,0,0);
+ m_pCategoryCombo = new QComboBox(false,tab);
+ gl->addMultiCellWidget(m_pCategoryCombo,0,0,1,3);
+ QToolTip::add(m_pCategoryCombo,__tr2qs("Choose the category that best fits for this action"));
+
+ l = new QLabel(__tr2qs("Description:"),tab);
+ gl->addWidget(l,1,0);
+ m_pDescriptionEdit = new QLineEdit(tab);
+ gl->addMultiCellWidget(m_pDescriptionEdit,1,1,1,3);
+ QToolTip::add(m_pDescriptionEdit,__tr2qs("Visible short description for this action.<br>This string will be displayed to the user so it is a good idea to use $tr() here"));
+
+ l = new QLabel(__tr2qs("Small Icon:"),tab);
+ gl->addWidget(l,2,0);
+ m_pSmallIconEdit = new QLineEdit(tab);
+ gl->addWidget(m_pSmallIconEdit,2,1);
+ m_pSmallIconButton = new QToolButton(tab);
+ m_pSmallIconButton->setMinimumSize(QSize(20,20));
+ connect(m_pSmallIconButton,SIGNAL(clicked()),this,SLOT(chooseSmallIcon()));
+ gl->addWidget(m_pSmallIconButton,2,2);
+ QString s= __tr2qs("The small icon associated to this action.<br>" \
+ "It will appear at least in the popup menus when this action is inserted.<br>" \
+ "It should be 16x16 pixels.");
+ QToolTip::add(m_pSmallIconEdit,s);
+ QToolTip::add(m_pSmallIconButton,s);
+
+ l = new QLabel(__tr2qs("Big Icon:"),tab);
+ gl->addWidget(l,3,0);
+ m_pBigIconEdit = new QLineEdit(tab);
+ gl->addWidget(m_pBigIconEdit,3,1);
+ m_pBigIconButton = new QToolButton(tab);
+ m_pBigIconButton->setMinimumSize(QSize(48,48));
+ m_pBigIconButton->setUsesBigPixmap(true);
+ connect(m_pBigIconButton,SIGNAL(clicked()),this,SLOT(chooseBigIcon()));
+ gl->addMultiCellWidget(m_pBigIconButton,3,4,2,3);
+ s = __tr2qs("The big icon associated to this action.<br>" \
+ "It will appear at least in the toolbar buttons when this action is inserted.<br>" \
+ "It should be 32x32 pixels.");
+ QToolTip::add(m_pBigIconEdit,s);
+ QToolTip::add(m_pBigIconButton,s);
+
+ l = new QLabel(__tr2qs("Key Sequence:"),tab);
+ gl->addMultiCellWidget(l,4,5,0,0);
+ m_pKeySequenceEdit = new QLineEdit(tab);
+ gl->addMultiCellWidget(m_pKeySequenceEdit,4,5,1,1);
+ QToolTip::add(m_pKeySequenceEdit,__tr2qs("Optional keyboard sequence that will activate this action.<br>" \
+ "The sequence should be expressed as a string of up to four key codes separated by commas " \
+ "eventually combined with the modifiers \"Ctrl\",\"Shift\",\"Alt\" and \"Meta\".<br>" \
+ "Examples of such sequences are \"Ctrl+X\", \"Ctrl+Alt+Z\", \"Ctrl+X,Ctrl+C\" ..."));
+
+ l = new QLabel(tab);
+ gl->addMultiCellWidget(l,6,6,0,3);
+
+ gl->setColStretch(1,1);
+ gl->setRowStretch(6,1);
+
+
+ tw->addTab(tab,__tr2qs("Properties"));
+
+
+
+ // flags tab
+ tab = new QWidget(tw);
+ gl = new QGridLayout(tab,12,4,8,4);
+
+
+ m_pNeedsContextCheck = new KviStyledCheckBox(__tr2qs("Needs IRC Context"),tab);
+ connect(m_pNeedsContextCheck,SIGNAL(toggled(bool)),this,SLOT(needsContextCheckToggled(bool)));
+ QToolTip::add(m_pNeedsContextCheck,__tr2qs("Check this option if this action should be enabled only when " \
+ "the active window belongs to an irc context"));
+ gl->addMultiCellWidget(m_pNeedsContextCheck,0,0,0,3);
+
+ l = new QLabel(tab);
+ l->setMinimumWidth(40);
+ gl->addWidget(l,1,0);
+
+ m_pNeedsConnectionCheck = new KviStyledCheckBox(__tr2qs("Needs IRC Connection"),tab);
+ connect(m_pNeedsConnectionCheck,SIGNAL(toggled(bool)),this,SLOT(needsConnectionCheckToggled(bool)));
+ QToolTip::add(m_pNeedsConnectionCheck,__tr2qs("Check this option if this action should be enabled only when " \
+ "the active window has an active IRC connection"));
+ gl->addMultiCellWidget(m_pNeedsConnectionCheck,1,1,1,3);
+
+ l = new QLabel(tab);
+ l->setMinimumWidth(40);
+ gl->addWidget(l,2,1);
+
+ m_pEnableAtLoginCheck = new KviStyledCheckBox(__tr2qs("Enable at Login"),tab);
+ QToolTip::add(m_pEnableAtLoginCheck,__tr2qs("Check this option if this action should be enabled also during " \
+ "the login operations (so when the logical IRC connection hasn't been estabilished yet)"));
+ gl->addMultiCellWidget(m_pEnableAtLoginCheck,2,2,2,3);
+
+ m_pSpecificWindowsCheck = new KviStyledCheckBox(__tr2qs("Enable Only in Specified Windows"),tab);
+ connect(m_pSpecificWindowsCheck,SIGNAL(toggled(bool)),this,SLOT(specificWindowsCheckToggled(bool)));
+ QToolTip::add(m_pSpecificWindowsCheck,__tr2qs("Check this option if this action should be enabled only when " \
+ "the active window is of a specified type"));
+ gl->addMultiCellWidget(m_pSpecificWindowsCheck,3,3,0,3);
+
+ m_pWindowConsoleCheck = new KviStyledCheckBox(__tr2qs("Enable in Console Windows"),tab);
+ QToolTip::add(m_pWindowConsoleCheck,__tr2qs("Check this option if this action should be enabled only when " \
+ "the active window is a console"));
+ connect(m_pWindowConsoleCheck,SIGNAL(toggled(bool)),this,SLOT(channelQueryOrConsoleWindowCheckToggled(bool)));
+ gl->addMultiCellWidget(m_pWindowConsoleCheck,4,4,1,3);
+
+ m_pConsoleOnlyIfUsersSelectedCheck = new KviStyledCheckBox(__tr2qs("Only If There Are Selected Users"),tab);
+ QToolTip::add(m_pConsoleOnlyIfUsersSelectedCheck,__tr2qs("This will enable the action only if there are " \
+ "selected users in the active window"));
+ gl->addMultiCellWidget(m_pConsoleOnlyIfUsersSelectedCheck,5,5,2,3);
+
+ m_pWindowChannelCheck = new KviStyledCheckBox(__tr2qs("Enable in Channel Windows"),tab);
+ QToolTip::add(m_pWindowChannelCheck,__tr2qs("Check this option if this action should be enabled only when " \
+ "the active window is a channel"));
+ connect(m_pWindowChannelCheck,SIGNAL(toggled(bool)),this,SLOT(channelQueryOrConsoleWindowCheckToggled(bool)));
+ gl->addMultiCellWidget(m_pWindowChannelCheck,6,6,1,3);
+
+ m_pChannelOnlyIfUsersSelectedCheck = new KviStyledCheckBox(__tr2qs("Only If There Are Selected Users"),tab);
+ QToolTip::add(m_pChannelOnlyIfUsersSelectedCheck,__tr2qs("This will enable the action only if there are " \
+ "selected users in the active window"));
+ gl->addMultiCellWidget(m_pChannelOnlyIfUsersSelectedCheck,7,7,2,3);
+
+ m_pWindowQueryCheck = new KviStyledCheckBox(__tr2qs("Enable in Query Windows"),tab);
+ QToolTip::add(m_pWindowQueryCheck,__tr2qs("Check this option if this action should be enabled only when " \
+ "the active window is a query"));
+ connect(m_pWindowQueryCheck,SIGNAL(toggled(bool)),this,SLOT(channelQueryOrConsoleWindowCheckToggled(bool)));
+ gl->addMultiCellWidget(m_pWindowQueryCheck,8,8,1,3);
+
+ m_pQueryOnlyIfUsersSelectedCheck = new KviStyledCheckBox(__tr2qs("Only If There Are Selected Users"),tab);
+ QToolTip::add(m_pQueryOnlyIfUsersSelectedCheck,__tr2qs("This will enable the action only if there are " \
+ "selected users in the active window"));
+ gl->addMultiCellWidget(m_pQueryOnlyIfUsersSelectedCheck,9,9,2,3);
+
+ m_pWindowDccChatCheck = new KviStyledCheckBox(__tr2qs("Enable in DCC Chat Windows"),tab);
+ QToolTip::add(m_pWindowDccChatCheck,__tr2qs("Check this option if this action should be enabled only when " \
+ "the active window is a dcc chat"));
+ gl->addMultiCellWidget(m_pWindowDccChatCheck,10,10,1,3);
+
+
+
+ l = new QLabel(tab);
+ gl->addMultiCellWidget(l,11,11,0,3);
+
+ gl->setColStretch(3,1);
+ gl->setRowStretch(11,1);
+
+ tw->addTab(tab,__tr2qs("Flags"));
+
+
+
+ tw->setCurrentPage(0);
+
+ g->setRowStretch(2,1);
+ g->setColStretch(1,1);
+
+
+ KviPointerHashTableIterator<QString,KviActionCategory> it(*(KviActionManager::instance()->categories()));
+ while(KviActionCategory * ac = it.current())
+ {
+ m_pCategoryCombo->insertItem(ac->visibleName() + " (" + ac->name() + ")");
+ ++it;
+ }
+}
+
+KviSingleActionEditor::~KviSingleActionEditor()
+{
+}
+
+void KviSingleActionEditor::channelQueryOrConsoleWindowCheckToggled(bool)
+{
+ m_pChannelOnlyIfUsersSelectedCheck->setEnabled(m_pWindowChannelCheck->isChecked());
+ m_pChannelOnlyIfUsersSelectedCheck->setChecked(false);
+ m_pQueryOnlyIfUsersSelectedCheck->setEnabled(m_pWindowQueryCheck->isChecked());
+ m_pQueryOnlyIfUsersSelectedCheck->setChecked(false);
+ m_pConsoleOnlyIfUsersSelectedCheck->setEnabled(m_pWindowConsoleCheck->isChecked());
+ m_pConsoleOnlyIfUsersSelectedCheck->setChecked(false);
+}
+
+void KviSingleActionEditor::needsContextCheckToggled(bool)
+{
+ m_pEnableAtLoginCheck->setChecked(false);
+ m_pEnableAtLoginCheck->setEnabled(false);
+ m_pNeedsConnectionCheck->setChecked(false);
+ m_pNeedsConnectionCheck->setEnabled(m_pNeedsContextCheck->isChecked());
+}
+
+void KviSingleActionEditor::needsConnectionCheckToggled(bool)
+{
+ m_pEnableAtLoginCheck->setChecked(false);
+ m_pEnableAtLoginCheck->setEnabled(m_pNeedsConnectionCheck->isChecked());
+}
+
+void KviSingleActionEditor::specificWindowsCheckToggled(bool)
+{
+ m_pWindowConsoleCheck->setChecked(false);
+ m_pWindowChannelCheck->setChecked(false);
+ m_pWindowQueryCheck->setChecked(false);
+ m_pWindowDccChatCheck->setChecked(false);
+ m_pQueryOnlyIfUsersSelectedCheck->setChecked(false);
+ m_pChannelOnlyIfUsersSelectedCheck->setChecked(false);
+ m_pConsoleOnlyIfUsersSelectedCheck->setChecked(false);
+ m_pQueryOnlyIfUsersSelectedCheck->setEnabled(false);
+ m_pChannelOnlyIfUsersSelectedCheck->setEnabled(false);
+ m_pConsoleOnlyIfUsersSelectedCheck->setEnabled(false);
+ bool b = m_pSpecificWindowsCheck->isChecked();
+ m_pWindowConsoleCheck->setEnabled(b);
+ m_pWindowChannelCheck->setEnabled(b);
+ m_pWindowQueryCheck->setEnabled(b);
+ m_pWindowDccChatCheck->setEnabled(b);
+}
+
+void KviSingleActionEditor::chooseSmallIcon()
+{
+ if(!m_pActionData)return;
+ KviImageDialog * d = new KviImageDialog(this);
+ int ret = d->exec();
+ QString s = d->selectedImage();
+ delete d;
+ if(ret != QDialog::Accepted)return;
+ QPixmap * p = g_pIconManager->getImage(s.utf8().data());
+ if(!p)return;
+ m_pSmallIconEdit->setText(s);
+ m_pSmallIconButton->setPixmap(*p);
+}
+
+void KviSingleActionEditor::chooseBigIcon()
+{
+ if(!m_pActionData)return;
+ KviImageDialog * d = new KviImageDialog(this,QString::null,KID_TYPE_ALL,KID_TYPE_FULL_PATH);
+ int ret = d->exec();
+ QString s = d->selectedImage();
+ delete d;
+ if(ret != QDialog::Accepted)return;
+ QPixmap * p = g_pIconManager->getBigIcon(s);
+ if(!p)return;
+ m_pBigIconEdit->setText(s);
+ m_pBigIconButton->setPixmap(*p);
+}
+
+void KviSingleActionEditor::setActionData(KviActionData * d)
+{
+ m_pActionData = d;
+
+ if(d)
+ {
+ unsigned int uOldFlags = d->m_uFlags;
+ d->m_uFlags = KviAction::validateFlags(d->m_uFlags);
+ if(d->m_uFlags != uOldFlags)
+ debug("invalid action flags in KviSingleActionEditor::setActionData(): %d fixed to %d",uOldFlags,d->m_uFlags);
+
+ m_pNameEdit->setText(d->m_szName);
+ m_pNameEdit->setEnabled(true);
+ m_pVisibleNameEdit->setText(d->m_szVisibleName);
+ m_pVisibleNameEdit->setEnabled(true);
+ m_pCategoryCombo->setEnabled(true);
+ int i;
+ for(i=0;i<m_pCategoryCombo->count();i++)
+ {
+ QString t = m_pCategoryCombo->text(i);
+ int idx = t.findRev('(');
+ QString r = t.right(t.length() - (idx + 1));
+ QString r2 = r.left(r.length() - 1);
+ r2.stripWhiteSpace();
+ if(r2 == d->m_szCategory)
+ {
+ m_pCategoryCombo->setCurrentItem(i);
+ break;
+ }
+ }
+ if(i == m_pCategoryCombo->count())
+ {
+ m_pCategoryCombo->setCurrentItem(0);
+ }
+ m_pScriptEditor->setText(d->m_szScriptCode);
+ m_pScriptEditor->setEnabled(true);
+ m_pKeySequenceEdit->setText(d->m_szKeySequence);
+ m_pKeySequenceEdit->setEnabled(true);
+ m_pDescriptionEdit->setText(d->m_szDescription);
+ m_pDescriptionEdit->setEnabled(true);
+ m_pSmallIconEdit->setEnabled(true);
+ m_pBigIconEdit->setEnabled(true);
+ QPixmap * p = g_pIconManager->getImage(d->m_szSmallIcon);
+ if(p)
+ {
+ m_pSmallIconEdit->setText(d->m_szSmallIcon);
+ m_pSmallIconButton->setPixmap(*p);
+ } else {
+ m_pSmallIconEdit->setText("");
+ m_pSmallIconButton->setPixmap(QPixmap());
+ }
+ p = g_pIconManager->getImage(d->m_szBigIcon);
+ if(p)
+ {
+ m_pBigIconEdit->setText(d->m_szBigIcon);
+ m_pBigIconButton->setPixmap(*p);
+ } else {
+ m_pBigIconEdit->setText("");
+ m_pBigIconButton->setPixmap(QPixmap());
+ }
+ m_pSmallIconButton->setEnabled(true);
+ m_pBigIconButton->setEnabled(true);
+ m_pNeedsContextCheck->setEnabled(true);
+ bool b = (d->m_uFlags & KviAction::NeedsContext) || (d->m_uFlags & KviAction::NeedsConnection);
+ m_pNeedsContextCheck->setChecked(b);
+
+ m_pNeedsConnectionCheck->setEnabled(b);
+ b = (d->m_uFlags & KviAction::NeedsContext) && (d->m_uFlags & KviAction::NeedsConnection);
+ m_pNeedsConnectionCheck->setChecked(b);
+
+ m_pEnableAtLoginCheck->setEnabled(b);
+ m_pEnableAtLoginCheck->setChecked(b && (d->m_uFlags & KviAction::EnableAtLogin));
+
+ m_pSpecificWindowsCheck->setEnabled(true);
+ b = d->m_uFlags & KviAction::InternalWindowMask;
+ m_pSpecificWindowsCheck->setChecked(b);
+
+ m_pWindowConsoleCheck->setEnabled(b);
+ m_pWindowChannelCheck->setEnabled(b);
+ m_pWindowQueryCheck->setEnabled(b);
+ m_pWindowDccChatCheck->setEnabled(b);
+ b = d->m_uFlags & KviAction::WindowConsole;
+ m_pWindowConsoleCheck->setChecked(b);
+ m_pConsoleOnlyIfUsersSelectedCheck->setEnabled(b);
+ m_pConsoleOnlyIfUsersSelectedCheck->setChecked(b && (d->m_uFlags & KviAction::WindowOnlyIfUsersSelected));
+ b = d->m_uFlags & KviAction::WindowChannel;
+ m_pWindowChannelCheck->setChecked(b);
+ m_pChannelOnlyIfUsersSelectedCheck->setEnabled(b);
+ m_pChannelOnlyIfUsersSelectedCheck->setChecked(b && (d->m_uFlags & KviAction::WindowOnlyIfUsersSelected));
+ b = d->m_uFlags & KviAction::WindowQuery;
+ m_pWindowQueryCheck->setChecked(b);
+ m_pQueryOnlyIfUsersSelectedCheck->setEnabled(b);
+ m_pQueryOnlyIfUsersSelectedCheck->setChecked(b && (d->m_uFlags & KviAction::WindowOnlyIfUsersSelected));
+ m_pWindowDccChatCheck->setChecked(d->m_uFlags & KviAction::WindowDccChat);
+ } else {
+ m_pNameEdit->setText("");
+ m_pNameEdit->setEnabled(false);
+ m_pVisibleNameEdit->setText("");
+ m_pVisibleNameEdit->setEnabled(false);
+ m_pCategoryCombo->setEnabled(false);
+ m_pScriptEditor->setText("");
+ m_pScriptEditor->setEnabled(false);
+ m_pKeySequenceEdit->setText("");
+ m_pKeySequenceEdit->setEnabled(false);
+ m_pDescriptionEdit->setText("");
+ m_pDescriptionEdit->setEnabled(false);
+ m_pSmallIconEdit->setText("");
+ m_pSmallIconEdit->setEnabled(false);
+ m_pBigIconEdit->setText("");
+ m_pBigIconEdit->setEnabled(false);
+ m_pSmallIconButton->setPixmap(QPixmap());
+ m_pSmallIconButton->setEnabled(false);
+ m_pBigIconButton->setPixmap(QPixmap());
+ m_pBigIconButton->setEnabled(false);
+ m_pNeedsContextCheck->setChecked(false);
+ m_pNeedsContextCheck->setEnabled(false);
+ m_pNeedsConnectionCheck->setChecked(false);
+ m_pNeedsConnectionCheck->setEnabled(false);
+ m_pEnableAtLoginCheck->setChecked(false);
+ m_pEnableAtLoginCheck->setEnabled(false);
+ m_pWindowConsoleCheck->setChecked(false);
+ m_pWindowConsoleCheck->setEnabled(false);
+ m_pWindowChannelCheck->setChecked(false);
+ m_pWindowChannelCheck->setEnabled(false);
+ m_pWindowQueryCheck->setChecked(false);
+ m_pWindowQueryCheck->setEnabled(false);
+ m_pWindowDccChatCheck->setChecked(false);
+ m_pWindowDccChatCheck->setEnabled(false);
+ m_pSpecificWindowsCheck->setChecked(false);
+ m_pSpecificWindowsCheck->setEnabled(false);
+ m_pQueryOnlyIfUsersSelectedCheck->setChecked(false);
+ m_pChannelOnlyIfUsersSelectedCheck->setChecked(false);
+ m_pConsoleOnlyIfUsersSelectedCheck->setChecked(false);
+ m_pQueryOnlyIfUsersSelectedCheck->setEnabled(false);
+ m_pChannelOnlyIfUsersSelectedCheck->setEnabled(false);
+ m_pConsoleOnlyIfUsersSelectedCheck->setEnabled(false);
+ }
+}
+
+void KviSingleActionEditor::commit()
+{
+ if(!m_pActionData)return;
+
+ QString tmp = m_pNameEdit->text();
+ if(tmp != m_pActionData->m_szName)
+ {
+ int idx = 1;
+ while(KviActionManager::instance()->coreActionExists(tmp) || m_pActionEditor->actionExists(tmp))
+ {
+ QString tmp2;
+ tmp2.setNum(idx);
+ tmp = m_pNameEdit->text();
+ tmp.append(tmp2);
+ idx++;
+ }
+ }
+
+ m_pActionData->m_szName = tmp;
+ m_pScriptEditor->getText(m_pActionData->m_szScriptCode);
+ m_pActionData->m_szVisibleName = m_pVisibleNameEdit->text();
+ m_pActionData->m_szDescription = m_pDescriptionEdit->text();
+ m_pActionData->m_szBigIcon = m_pBigIconEdit->text();
+ m_pActionData->m_szSmallIcon = m_pSmallIconEdit->text();
+ m_pActionData->m_szKeySequence = m_pKeySequenceEdit->text();
+ QString szCat = m_pCategoryCombo->currentText();
+ int idx = szCat.findRev(')');
+ if(idx != -1)m_pActionData->m_szCategory = szCat.left(idx);
+ else m_pActionData->m_szCategory = szCat;
+ idx = m_pActionData->m_szCategory.findRev('(');
+ if(idx != -1)m_pActionData->m_szCategory.remove(0,idx+1);
+ m_pActionData->m_uFlags = 0;
+ if(m_pNeedsContextCheck->isChecked())
+ {
+ m_pActionData->m_uFlags |= KviAction::NeedsContext;
+ if(m_pNeedsConnectionCheck->isChecked())
+ {
+ m_pActionData->m_uFlags |= KviAction::NeedsConnection;
+ if(m_pEnableAtLoginCheck->isChecked())m_pActionData->m_uFlags |= KviAction::EnableAtLogin;
+ }
+
+ }
+ if(m_pSpecificWindowsCheck->isChecked())
+ {
+ if(m_pWindowConsoleCheck->isChecked())m_pActionData->m_uFlags |= KviAction::WindowConsole;
+ if(m_pWindowChannelCheck->isChecked())m_pActionData->m_uFlags |= KviAction::WindowChannel;
+ if(m_pWindowQueryCheck->isChecked())m_pActionData->m_uFlags |= KviAction::WindowQuery;
+ if(m_pWindowDccChatCheck->isChecked())m_pActionData->m_uFlags |= KviAction::WindowDccChat;
+ if(m_pActionData->m_uFlags & KviAction::InternalWindowMask)
+ {
+ if(m_pConsoleOnlyIfUsersSelectedCheck->isChecked() ||
+ m_pChannelOnlyIfUsersSelectedCheck->isChecked() ||
+ m_pQueryOnlyIfUsersSelectedCheck->isChecked())
+ {
+ m_pActionData->m_uFlags |= KviAction::WindowOnlyIfUsersSelected;
+ }
+ }
+ }
+
+ unsigned int uOldFlags = m_pActionData->m_uFlags;
+ m_pActionData->m_uFlags = KviAction::validateFlags(m_pActionData->m_uFlags);
+ if(m_pActionData->m_uFlags != uOldFlags)
+ debug("invalid action flags in KviSingleActionEditor::commit(): %d fixed to %d",uOldFlags,m_pActionData->m_uFlags);
+}
+
+
+
+
+
+
+
+
+KviActionEditorListView::KviActionEditorListView(QWidget * pParent)
+: KviTalListView(pParent)
+{
+ setSelectionMode(Extended);
+ int iWidth = visibleWidth();
+ if(iWidth < LVI_MINIMUM_CELL_WIDTH)iWidth = LVI_MINIMUM_CELL_WIDTH;
+ addColumn(__tr2qs("Action"),iWidth);
+ setSorting(0,true);
+}
+
+KviActionEditorListView::~KviActionEditorListView()
+{
+}
+
+
+void KviActionEditorListView::resizeEvent(QResizeEvent * e)
+{
+ KviTalListView::resizeEvent(e);
+ int iWidth = visibleWidth();
+ if(iWidth < LVI_MINIMUM_CELL_WIDTH)iWidth = LVI_MINIMUM_CELL_WIDTH;
+ setColumnWidth(0,iWidth);
+}
+
+
+
+
+
+
+
+
+KviActionEditor::KviActionEditor(QWidget * par)
+: QWidget(par)
+{
+
+ QGridLayout * l = new QGridLayout(this,1,1,2,2);
+
+#ifdef COMPILE_USE_QT4
+ m_pSplitter = new QSplitter(Qt::Horizontal,this);
+ m_pSplitter->setOpaqueResize(false);
+
+#else
+ m_pSplitter = new QSplitter(QSplitter::Horizontal,this);
+#endif
+
+ l->addWidget(m_pSplitter,0,0);
+
+
+ KviTalVBox * box = new KviTalVBox(m_pSplitter);
+ m_pListView = new KviActionEditorListView(box);
+ //m_pListView->setMultiSelection(false);
+ m_pListView->setShowSortIndicator(true);
+#ifdef COMPILE_USE_QT4
+ m_pListView->setFocusPolicy(Qt::StrongFocus);
+#else
+ m_pListView->setFocusPolicy(QWidget::StrongFocus);
+#endif
+ connect(m_pListView,SIGNAL(currentChanged(KviTalListViewItem *)),this,SLOT(currentChanged(KviTalListViewItem *)));
+
+
+ m_pNewActionButton = new QPushButton(__tr2qs("New Action"),box);
+ connect(m_pNewActionButton,SIGNAL(clicked()),this,SLOT(newAction()));
+
+ m_pDeleteActionsButton = new QPushButton(__tr2qs("Delete Actions"),box);
+ connect(m_pDeleteActionsButton,SIGNAL(clicked()),this,SLOT(deleteActions()));
+
+ m_pExportActionsButton = new QPushButton(__tr2qs("Export Actions..."),box);
+ connect(m_pExportActionsButton,SIGNAL(clicked()),this,SLOT(exportActions()));
+
+ box->setSpacing(1);
+
+ m_pSingleActionEditor = new KviSingleActionEditor(m_pSplitter,this);
+
+ KviActionEditorListViewItem * last = 0;
+ KviActionEditorListViewItem * first = 0;
+
+ KviPointerHashTableIterator<QString,KviAction> it(*(KviActionManager::instance()->actions()));
+ while(KviAction * a = it.current())
+ {
+ if(a->isKviUserActionNeverOverrideThis())
+ {
+ KviActionData * ad = new KviActionData(a->name(),
+ ((KviKvsUserAction *)a)->scriptCode(),
+ ((KviKvsUserAction *)a)->visibleNameCode(),
+ ((KviKvsUserAction *)a)->descriptionCode(),
+ a->category() ? a->category()->name() : KviActionManager::categoryGeneric()->name(),
+ a->bigIconString(),
+ ((KviKvsUserAction *)a)->smallIconString(),
+ a->flags(),
+ a->keySequence(),
+ 0);
+ KviActionEditorListViewItem * lvi = new KviActionEditorListViewItem(m_pListView,ad);
+ ad->m_pItem = lvi;
+ if(ad->m_szName == g_szLastEditedAction)
+ last = lvi;
+ if(!first)
+ first = lvi;
+ }
+ ++it;
+ }
+
+ if(!last)last = first; // try to sleect the first one then
+
+ if(last)
+ {
+ m_pListView->setCurrentItem(last);
+ currentChanged(last);
+ } else {
+ currentChanged(0);
+ }
+
+}
+
+KviActionEditor::~KviActionEditor()
+{
+}
+
+void KviActionEditor::exportActions()
+{
+ QString szName = QDir::homeDirPath();
+ if(!szName.endsWith(QString(KVI_PATH_SEPARATOR)))szName += KVI_PATH_SEPARATOR;
+ szName += "myactions.kvs";
+
+ QString szFile;
+
+ if(!KviFileDialog::askForSaveFileName(szFile,__tr2qs("Choose a Filename - KVIrc"),szName,QString::null,true,true,true))return;
+
+ QString szCode;
+
+ KviActionEditorListViewItem * it = (KviActionEditorListViewItem *)m_pListView->firstChild();
+ while(it)
+ {
+ if(it->isSelected())
+ {
+ KviActionData * a = it->actionData();
+
+ KviKvsUserAction::exportToKvs(szCode,
+ a->m_szName,
+ a->m_szScriptCode,
+ a->m_szVisibleName,
+ a->m_szDescription,
+ a->m_szCategory,
+ a->m_szBigIcon,
+ a->m_szSmallIcon,
+ a->m_uFlags,
+ a->m_szKeySequence);
+ }
+
+ it = (KviActionEditorListViewItem *)(it->nextSibling());
+ }
+
+ if(!KviFileUtils::writeFile(szFile,szCode))
+ {
+ QMessageBox::warning(this,__tr2qs("Write Failed - KVIrc"),__tr2qs("Unable to write to the actions file."),__tr2qs("OK"));
+ }
+}
+
+void KviActionEditor::deleteActions()
+{
+ KviPointerList<KviActionEditorListViewItem> l;
+ l.setAutoDelete(false);
+
+ KviActionEditorListViewItem * it = (KviActionEditorListViewItem *)m_pListView->firstChild();
+ while(it)
+ {
+ if(it->isSelected())
+ l.append(it);
+
+ it = (KviActionEditorListViewItem *)(it->nextSibling());
+ }
+
+ if(l.isEmpty())return;
+
+ //if(QMessageBox::question(this,__tr2qsf("Confirm Deletion"),__tr2qsf("Do you really want to delete the selected actions ?"),__tr2qsf("Yes"),__tr2qsf("No")) != 0)
+ // return;
+
+ for(KviActionEditorListViewItem * i = l.first();i;i = l.next())
+ {
+ if(m_pSingleActionEditor->actionData() == i->actionData())
+ m_pSingleActionEditor->setActionData(0);
+ delete i;
+ }
+}
+
+
+QString KviActionEditor::nameForAutomaticAction(const QString &szTemplate)
+{
+ QString ret;
+ QString szT = szTemplate;
+ szT.replace(" ","");
+ szT.replace(".","_");
+
+ int i = 1;
+ do {
+ KviQString::sprintf(ret,"%Q%d",&szT,i);
+ i++;
+ } while(actionExists(ret));
+
+ return ret;
+}
+
+void KviActionEditor::newAction()
+{
+ QString szName = nameForAutomaticAction(__tr2qs("My Action"));
+ QString szVis = __tr2qs("My Action");
+ QString szDes = __tr2qs("Put here a short description of your action");
+
+ szVis.prepend("$tr(\"");
+ szVis.append("\")");
+ szDes.prepend("$tr(\"");
+ szDes.append("\")");
+
+ KviActionData * ad = new KviActionData(szName,
+ QString::null,
+ szVis,
+ szDes,
+ KviActionManager::categoryGeneric()->name(),
+ QString::null,
+ QString::null,
+ 0,
+ QString::null,
+ 0);
+
+ KviActionEditorListViewItem * lvi = new KviActionEditorListViewItem(m_pListView,ad);
+ ad->m_pItem = lvi;
+ m_pListView->setCurrentItem(lvi);
+ currentChanged(lvi);
+}
+
+bool KviActionEditor::actionExists(const QString &szName)
+{
+ KviActionEditorListViewItem * it = (KviActionEditorListViewItem *)m_pListView->firstChild();
+ while(it)
+ {
+ if(it->actionData()->m_szName == szName)return true;
+ it = (KviActionEditorListViewItem *)(it->nextSibling());
+ }
+ return false;
+}
+
+
+void KviActionEditor::currentChanged(KviTalListViewItem * i)
+{
+ if(m_pSingleActionEditor->actionData())
+ {
+ m_pSingleActionEditor->commit();
+ m_pSingleActionEditor->actionData()->m_pItem->setupForActionData();
+ }
+
+ m_pListView->update();
+
+ KviActionEditorListViewItem * it = (KviActionEditorListViewItem *)i;
+ if(!it)
+ {
+ m_pSingleActionEditor->setActionData(0);
+ m_pDeleteActionsButton->setEnabled(false);
+ m_pExportActionsButton->setEnabled(false);
+ return;
+ }
+ m_pDeleteActionsButton->setEnabled(true);
+ m_pExportActionsButton->setEnabled(true);
+
+ if(!it->isSelected())m_pListView->setSelected(it,true);
+
+ m_pSingleActionEditor->setActionData(it->actionData());
+ g_szLastEditedAction = it->actionData()->m_szName;
+}
+
+void KviActionEditor::commit()
+{
+ m_pSingleActionEditor->commit();
+
+ // the hard part: update the actions without destroying them...
+
+ KviActionManager::instance()->killAllKvsUserActions();
+
+ KviActionEditorListViewItem * it = (KviActionEditorListViewItem *)m_pListView->firstChild();
+ while(it)
+ {
+ KviKvsUserAction * a = KviKvsUserAction::createInstance( // msvc workaround
+ KviActionManager::instance(),
+ it->actionData()->m_szName,
+ it->actionData()->m_szScriptCode,
+ it->actionData()->m_szVisibleName,
+ it->actionData()->m_szDescription,
+ it->actionData()->m_szCategory,
+ it->actionData()->m_szBigIcon,
+ it->actionData()->m_szSmallIcon,
+ it->actionData()->m_uFlags,
+ it->actionData()->m_szKeySequence);
+
+ KviActionManager::instance()->registerAction(a);
+
+ it = (KviActionEditorListViewItem *)(it->nextSibling());
+ }
+
+ KviCustomToolBarManager::instance()->updateVisibleToolBars();
+}
+
+
+
+KviActionEditorWindow::KviActionEditorWindow(KviFrame * lpFrm)
+: KviWindow(KVI_WINDOW_TYPE_SCRIPTEDITOR,lpFrm,"actioneditor",0)
+{
+ g_pActionEditorWindow = this;
+ setFixedCaption(__tr2qs("Action Editor"));
+
+ m_pEditor = new KviActionEditor(this);
+
+ m_pBase = new QWidget(this);
+ QGridLayout * g = new QGridLayout(m_pBase,1,4,4,4);
+
+ QPushButton * btn = new QPushButton(__tr2qs("OK"),m_pBase);
+ btn->setMinimumWidth(80);
+ connect(btn,SIGNAL(clicked()),this,SLOT(okClicked()));
+ btn->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ACCEPT)));
+ g->addWidget(btn,0,1);
+
+ btn = new QPushButton(__tr2qs("Apply"),m_pBase);
+ btn->setMinimumWidth(80);
+ connect(btn,SIGNAL(clicked()),this,SLOT(applyClicked()));
+ btn->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ACCEPT)));
+ g->addWidget(btn,0,2);
+
+ btn = new QPushButton(__tr2qs("Cancel"),m_pBase);
+ btn->setMinimumWidth(80);
+ connect(btn,SIGNAL(clicked()),this,SLOT(cancelClicked()));
+ btn->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DISCARD)));
+ g->addWidget(btn,0,3);
+
+ g->setColStretch(0,1);
+
+}
+
+KviActionEditorWindow::~KviActionEditorWindow()
+{
+ g_pActionEditorWindow = 0;
+}
+
+void KviActionEditorWindow::okClicked()
+{
+ m_pEditor->commit();
+ close();
+}
+
+void KviActionEditorWindow::applyClicked()
+{
+ m_pEditor->commit();
+}
+
+void KviActionEditorWindow::cancelClicked()
+{
+ close();
+}
+
+
+QPixmap * KviActionEditorWindow::myIconPtr()
+{
+ return g_pIconManager->getSmallIcon(KVI_SMALLICON_SCRIPTACTION);
+}
+
+void KviActionEditorWindow::resizeEvent(QResizeEvent *e)
+{
+ int hght = m_pBase->sizeHint().height();
+ m_pEditor->setGeometry(0,0,width(),height()- hght);
+ m_pBase->setGeometry(0,height() - hght,width(),hght);
+}
+
+
+void KviActionEditorWindow::getConfigGroupName(KviStr &szName)
+{
+ szName = "actioneditor";
+}
+
+
+void KviActionEditorWindow::saveProperties(KviConfig *cfg)
+{
+ KviWindow::saveProperties(cfg);
+ cfg->writeEntry("Splitter",m_pEditor->m_pSplitter->sizes());
+}
+
+void KviActionEditorWindow::loadProperties(KviConfig *cfg)
+{
+ int w = width();
+ KviWindow::loadProperties(cfg);
+ KviValueList<int> def;
+ def.append((w * 25) / 100);
+ def.append((w * 75) / 100);
+ m_pEditor->m_pSplitter->setSizes(cfg->readIntListEntry("Splitter",def));
+}
diff --git a/src/modules/actioneditor/actioneditor.h b/src/modules/actioneditor/actioneditor.h
new file mode 100644
index 00000000..fc112614
--- /dev/null
+++ b/src/modules/actioneditor/actioneditor.h
@@ -0,0 +1,210 @@
+#ifndef _ACTIONEDITOR_H_
+#define _ACTIONEDITOR_H_
+//=============================================================================
+//
+// File : actioneditor.h
+// Creation date : Tue Dec 29 2004 02:40:55 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the linkss of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_window.h"
+
+#include <qwidget.h>
+#include "kvi_tal_listview.h"
+#include "kvi_styled_controls.h"
+
+class KviActionEditorListViewItem;
+
+class KviActionData
+{
+public:
+ QString m_szName;
+ QString m_szScriptCode;
+ QString m_szVisibleName;
+ QString m_szDescription;
+ QString m_szCategory;
+ QString m_szBigIcon;
+ QString m_szSmallIcon;
+ QString m_szKeySequence;
+ unsigned int m_uFlags;
+ KviActionEditorListViewItem * m_pItem; // ummigarba tanto...
+public:
+ KviActionData(const QString &szName,
+ const QString &szScriptCode,
+ const QString &szVisibleName,
+ const QString &szDescription,
+ const QString &szCategory,
+ const QString &szBigIcon,
+ const QString &szSmallIcon,
+ unsigned int uFlags,
+ const QString &szKeySequence,
+ KviActionEditorListViewItem * pItem)
+ : m_szName(szName), m_szScriptCode(szScriptCode), m_szVisibleName(szVisibleName),
+ m_szDescription(szDescription), m_szCategory(szCategory), m_szBigIcon(szBigIcon),
+ m_szSmallIcon(szSmallIcon), m_szKeySequence(szKeySequence), m_uFlags(uFlags),
+ m_pItem(pItem)
+ {};
+};
+
+
+class QLineEdit;
+class QComboBox;
+class KviScriptEditor;
+class QToolButton;
+class QSimpleRichText;
+class QPushButton;
+
+#ifdef COMPILE_USE_QT4
+ #include <q3simplerichtext.h>
+ #define QSimpleRichText Q3SimpleRichText
+#else
+ #include <qsimplerichtext.h>
+#endif
+
+
+
+class KviActionEditorListViewItem : public KviTalListViewItem
+{
+public:
+ KviActionEditorListViewItem(KviTalListView * v,KviActionData * a);
+ ~KviActionEditorListViewItem();
+protected:
+ KviActionData * m_pActionData;
+ QSimpleRichText * m_pText;
+ QPixmap * m_pIcon;
+ KviTalListView * m_pListView;
+ QString m_szKey;
+public:
+ KviActionData * actionData(){ return m_pActionData; };
+ void setupForActionData();
+public:
+ virtual void paintCell(QPainter * p,const QColorGroup & cg,int column,int width,int align);
+ virtual void setup();
+ virtual QString key(int,bool) const;
+};
+
+
+class KviActionEditorListView : public KviTalListView
+{
+ Q_OBJECT
+public:
+ KviActionEditorListView(QWidget * pParent);
+ ~KviActionEditorListView();
+protected:
+ virtual void resizeEvent(QResizeEvent * e);
+};
+
+class KviActionEditor;
+
+class KviSingleActionEditor : public QWidget
+{
+ Q_OBJECT
+public:
+ KviSingleActionEditor(QWidget * par,KviActionEditor * ed);
+ ~KviSingleActionEditor();
+protected:
+ KviActionEditor * m_pActionEditor;
+ KviActionData * m_pActionData;
+ QLineEdit * m_pNameEdit;
+ QLineEdit * m_pVisibleNameEdit;
+ QComboBox * m_pCategoryCombo;
+ KviScriptEditor * m_pScriptEditor;
+ QLineEdit * m_pKeySequenceEdit;
+ QLineEdit * m_pDescriptionEdit;
+ QLineEdit * m_pSmallIconEdit;
+ QLineEdit * m_pBigIconEdit;
+ QToolButton * m_pSmallIconButton;
+ QToolButton * m_pBigIconButton;
+ KviStyledCheckBox * m_pNeedsContextCheck;
+ KviStyledCheckBox * m_pNeedsConnectionCheck;
+ KviStyledCheckBox * m_pEnableAtLoginCheck;
+ KviStyledCheckBox * m_pSpecificWindowsCheck;
+ KviStyledCheckBox * m_pWindowConsoleCheck;
+ KviStyledCheckBox * m_pWindowChannelCheck;
+ KviStyledCheckBox * m_pWindowQueryCheck;
+ KviStyledCheckBox * m_pWindowDccChatCheck;
+ KviStyledCheckBox * m_pConsoleOnlyIfUsersSelectedCheck;
+ KviStyledCheckBox * m_pChannelOnlyIfUsersSelectedCheck;
+ KviStyledCheckBox * m_pQueryOnlyIfUsersSelectedCheck;
+public:
+ KviActionData * actionData(){ return m_pActionData; };
+ void setActionData(KviActionData * d);
+ void commit();
+protected slots:
+ void chooseSmallIcon();
+ void chooseBigIcon();
+ void needsContextCheckToggled(bool);
+ void needsConnectionCheckToggled(bool);
+ void specificWindowsCheckToggled(bool);
+ void channelQueryOrConsoleWindowCheckToggled(bool);
+};
+
+class QSplitter;
+
+class KviActionEditor : public QWidget
+{
+ friend class KviActionEditorWindow;
+ Q_OBJECT
+public:
+ KviActionEditor(QWidget * par);
+ ~KviActionEditor();
+protected:
+ KviActionEditorListView * m_pListView;
+ KviSingleActionEditor * m_pSingleActionEditor;
+ QSplitter * m_pSplitter;
+ QPushButton * m_pNewActionButton;
+ QPushButton * m_pDeleteActionsButton;
+ QPushButton * m_pExportActionsButton;
+public:
+ void commit();
+ bool actionExists(const QString &szName);
+protected:
+ int selectedCount();
+ QString nameForAutomaticAction(const QString &szTemplate);
+protected slots:
+ void currentChanged(KviTalListViewItem * it);
+ void newAction();
+ void deleteActions();
+ void exportActions();
+};
+
+
+class KviActionEditorWindow : public KviWindow
+{
+ Q_OBJECT
+public:
+ KviActionEditorWindow(KviFrame * lpFrm);
+ ~KviActionEditorWindow();
+protected:
+ KviActionEditor * m_pEditor;
+ QWidget * m_pBase;
+protected:
+ virtual QPixmap * myIconPtr();
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual void getConfigGroupName(KviStr &szName);
+ virtual void saveProperties(KviConfig *);
+ virtual void loadProperties(KviConfig *);
+protected slots:
+ void cancelClicked();
+ void okClicked();
+ void applyClicked();
+};
+
+#endif //_ACTIONEDITOR_H_
diff --git a/src/modules/actioneditor/libkviactioneditor.cpp b/src/modules/actioneditor/libkviactioneditor.cpp
new file mode 100644
index 00000000..c2e489e5
--- /dev/null
+++ b/src/modules/actioneditor/libkviactioneditor.cpp
@@ -0,0 +1,86 @@
+//=============================================================================
+//
+// File : libkviactioneditor.cpp
+// Creation date : Tue 29 Dec 2004 02:45:59 2002 GMT by Szymon Stefanek
+//
+// This toolbar is part of the KVirc irc client distribution
+// Copyright (C) 2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_module.h"
+#include "kvi_locale.h"
+#include "kvi_frame.h"
+
+#include "actioneditor.h"
+KviActionEditorWindow * g_pActionEditorWindow = 0;
+
+
+/*
+ @doc: actioneditor.open
+ @type:
+ command
+ @title:
+ actioneditor.open
+ @short:
+ Shows the action editor
+ @syntax:
+ actioneditor.open
+ @description:
+ Opens the script action editor dialog.
+*/
+
+static bool actioneditor_kvs_cmd_open(KviKvsModuleCommandCall * c)
+{
+ if(!g_pActionEditorWindow)
+ {
+ g_pActionEditorWindow = new KviActionEditorWindow(c->window()->frame());
+ c->window()->frame()->addWindow(g_pActionEditorWindow);
+ }
+
+ g_pActionEditorWindow->setFocus();
+ return true;
+}
+static bool actioneditor_module_init(KviModule * m)
+{
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"open",actioneditor_kvs_cmd_open);
+ g_pActionEditorWindow = 0;
+ return true;
+}
+
+static bool actioneditor_module_can_unload(KviModule * m)
+{
+ return (g_pActionEditorWindow == 0);
+}
+
+static bool actioneditor_module_cleanup(KviModule *m)
+{
+ if(g_pActionEditorWindow)delete g_pActionEditorWindow;
+ g_pActionEditorWindow = 0;
+ return true;
+}
+
+KVIRC_MODULE(
+ "ActionEditor", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2004 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "Editor for the script actions",
+ actioneditor_module_init,
+ actioneditor_module_can_unload,
+ 0,
+ actioneditor_module_cleanup
+)
diff --git a/src/modules/addon/Makefile.am b/src/modules/addon/Makefile.am
new file mode 100644
index 00000000..e232b8ff
--- /dev/null
+++ b/src/modules/addon/Makefile.am
@@ -0,0 +1,22 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+SUBDIRS = pics
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkviaddon.la
+
+libkviaddon_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkviaddon_la_SOURCES = libkviaddon.cpp managementdialog.cpp
+nodist_libkviaddon_la_SOURCES = moc_managementdialog.cpp
+
+libkviaddon_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= managementdialog.h
+
+moc_managementdialog.cpp: managementdialog.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/addon/libkviaddon.cpp b/src/modules/addon/libkviaddon.cpp
new file mode 100644
index 00000000..a7cd4b88
--- /dev/null
+++ b/src/modules/addon/libkviaddon.cpp
@@ -0,0 +1,659 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// File : libkviaddon.cpp
+// Creation date : Tue 31 Mar 01:02:12 2005 GMT by Szymon Stefanek
+//
+// This toolbar is part of the KVirc irc client distribution
+// Copyright (C) 2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include "kvi_module.h"
+#include "kvi_kvs_scriptaddonmanager.h"
+#include "kvi_locale.h"
+#include "kvi_qstring.h"
+#include "kvi_parameterlist.h"
+#include "kvi_cmdformatter.h"
+#include "kvi_qstring.h"
+#include "kvi_error.h"
+#include "kvi_out.h"
+#include "kvi_iconmanager.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_config.h"
+#include "kvi_sourcesdate.h"
+#include "kvi_miscutils.h"
+
+#include "managementdialog.h"
+
+
+
+QRect g_rectManagementDialogGeometry(0,0,0,0);
+
+/*
+ @doc: addon.exists
+ @type:
+ function
+ @title:
+ $addon.exists
+ @short:
+ Checks if an addon is currently installed
+ @syntax:
+ <boolean> $addon.exists(<id:string>[,<version:string>])
+ @description:
+ Returns 1 if the addon with the specified <id> is currently installed
+ and 0 otherwise. If <version> is specified then any addon with
+ a version lower than <version> is ignored (so you can effectively
+ check if a greater or equal version is present).
+*/
+
+static bool addon_kvs_fnc_exists(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+ QString szVersion;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("id",KVS_PT_NONEMPTYSTRING,0,szId)
+ KVSM_PARAMETER("version",KVS_PT_STRING,KVS_PF_OPTIONAL,szVersion)
+ KVSM_PARAMETERS_END(c)
+
+ KviKvsScriptAddon * a = KviKvsScriptAddonManager::instance()->findAddon(szId);
+ if(a)
+ {
+ if(szVersion.isEmpty())
+ {
+ c->returnValue()->setBoolean(true);
+ } else {
+ c->returnValue()->setBoolean(KviMiscUtils::compareVersions(a->version(),szVersion) < 0);
+ }
+ } else {
+ c->returnValue()->setBoolean(false);
+ }
+ return true;
+}
+
+/*
+ @doc: addon.version
+ @type:
+ function
+ @title:
+ $addon.version
+ @short:
+ Returns the version of an installed addon
+ @syntax:
+ <string> $addon.version(<id:string>)
+ @description:
+ Returns the version of the currently installed addon with the
+ specified <id>. If the addon with the given <id> does not exist
+ then an empty string is returned.
+*/
+
+static bool addon_kvs_fnc_version(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("id",KVS_PT_NONEMPTYSTRING,0,szId)
+ KVSM_PARAMETERS_END(c)
+
+ KviKvsScriptAddon * a = KviKvsScriptAddonManager::instance()->findAddon(szId);
+ if(a)
+ {
+ c->returnValue()->setString(a->version());
+ } else {
+ c->returnValue()->setNothing();
+ }
+ return true;
+}
+
+/*
+ @doc: addon.list
+ @type:
+ command
+ @title:
+ addon.list
+ @short:
+ Lists the installed addons
+ @syntax:
+ addon.list
+ @description:
+ Lists the currently installed addons
+ @seealso:
+ [cmd]addon.register[/cmd]
+*/
+
+static bool addon_kvs_cmd_list(KviKvsModuleCommandCall * c)
+{
+ KviPointerHashTable<QString,KviKvsScriptAddon> * da = KviKvsScriptAddonManager::instance()->addonDict();
+
+ int cnt = 0;
+ KviPointerHashTableIterator<QString,KviKvsScriptAddon> it(*da);
+ while(KviKvsScriptAddon * a = it.current())
+ {
+ c->window()->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("%cAddon id %Q, version %Q%c"),KVI_TEXT_BOLD,&(a->name()),&(a->version()),KVI_TEXT_BOLD);
+ c->window()->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Name: %Q"),&(a->visibleName()));
+ c->window()->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Description: %Q"),&(a->description()));
+
+ ++it;
+ cnt++;
+ }
+
+ c->window()->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Total: %d addons installed"),cnt);
+ return true;
+}
+
+/*
+ @doc: addon.uninstall
+ @type:
+ command
+ @title:
+ addon.uninstall
+ @short:
+ Uninstalls an addon
+ @syntax:
+ addon.uninstall [-q] [-n] <id:string>
+ @switches:
+ !sw: -n | --no-callback
+ Doesn't call the uninstall callback but only removes the
+ registration entry.
+ !sw: -q | --quiet
+ Makes the command run quietly
+ @description:
+ Uninstalls the specified addon by executing its uninstall callback function.
+ It also removes the addon's registration entry.
+ If the -n switch is specified the the uninstall callback is not called,
+ only the registration entry is removed.
+ @seealso:
+ [cmd]addon.register[/cmd]
+*/
+
+static bool addon_kvs_cmd_uninstall(KviKvsModuleCommandCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("name",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSM_PARAMETERS_END(c)
+
+ KviKvsScriptAddon * a = KviKvsScriptAddonManager::instance()->findAddon(szName);
+ if(a)
+ {
+ if(!c->switches()->find('q',"quiet"))
+ c->window()->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Uninstalling existing addon version %Q"),&(a->version()));
+
+ // uninstall the existing version
+ KviKvsScriptAddonManager::instance()->unregisterAddon(szName,c->window(),!c->switches()->find('n',"no-callback"));
+ } else {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("The addon \"%1\" does not exist").arg(szName));
+ }
+
+ return true;
+}
+
+/*
+ @doc: addon.configure
+ @type:
+ command
+ @title:
+ addon.configure
+ @short:
+ Executes a addon's configuration callback
+ @syntax:
+ addon.configure [-q] <id:string>
+ @switches:
+ !sw: -q | --quiet
+ Makes the command run quietly
+ @description:
+ Executes the configuration callback of the specified addon.
+ @seealso:
+ [cmd]addon.register[/cmd]
+ [cmd]addon.setconfigurecallback[/cmd]
+*/
+
+static bool addon_kvs_cmd_configure(KviKvsModuleCommandCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("name",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSM_PARAMETERS_END(c)
+
+ KviKvsScriptAddon * a = KviKvsScriptAddonManager::instance()->findAddon(szName);
+ if(a)
+ {
+ QString ss = a->configureCallbackCode();
+ if(ss.isEmpty())
+ {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("The addon \"%1\" has no configure callback set").arg(szName));
+ } else {
+ a->executeConfigureCallback(c->window());
+ }
+ } else {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("The addon \"%1\" does not exist").arg(szName));
+ }
+
+ return true;
+}
+
+/*
+ @doc: addon.help
+ @type:
+ command
+ @title:
+ addon.help
+ @short:
+ Executes a addon's help callback
+ @syntax:
+ addon.help [-q] <id:string>
+ @switches:
+ !sw: -q | --quiet
+ Makes the command run quietly
+ @description:
+ Executes the help callback of the specified addon.
+ It will usually display the addon's documentation in the help viewer.
+ @seealso:
+ [cmd]addon.register[/cmd]
+ [cmd]addon.sethelpcallback[/cmd]
+*/
+
+static bool addon_kvs_cmd_help(KviKvsModuleCommandCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("name",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSM_PARAMETERS_END(c)
+
+ KviKvsScriptAddon * a = KviKvsScriptAddonManager::instance()->findAddon(szName);
+ if(a)
+ {
+ QString ss = a->helpCallbackCode();
+ if(ss.isEmpty())
+ {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("The addon \"%1\" has no help callback set").arg(szName));
+ } else {
+ a->executeHelpCallback(c->window());
+ }
+ } else {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("The addon \"%1\" does not exist").arg(szName));
+ }
+
+ return true;
+}
+
+/*
+ @doc: addon.setconfigurecallback
+ @type:
+ command
+ @title:
+ addon.setconfigurecallback
+ @short:
+ Sets a addon's configuration callback
+ @syntax:
+ addon.setconfigurecallback [-q] (<id:string>)
+ {
+ <configure_callback>
+ }
+ @switches:
+ !sw: -q
+ Makes the command run quietly
+ @description:
+ Sets the configure callback for the specified addon.
+ The configure callback will be called by the user either by the
+ means of [cmd]addon.configure[/cmd] or by accessing the
+ proper function via GUI.
+ @seealso:
+ [cmd]addon.register[/cmd]
+ [cmd]addon.configure[/cmd]
+*/
+
+static bool addon_kvs_cmd_setconfigurecallback(KviKvsModuleCallbackCommandCall * c)
+{
+ QString szName;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("name",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSM_PARAMETERS_END(c)
+
+ KviKvsScriptAddon * a = KviKvsScriptAddonManager::instance()->findAddon(szName);
+ if(a)
+ {
+ a->setConfigureCallback(c->callback()->code());
+ } else {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("The addon \"%1\" does not exist").arg(szName));
+ }
+
+ return true;
+}
+
+/*
+ @doc: addon.sethelpcallback
+ @type:
+ command
+ @title:
+ addon.sethelpcallback
+ @short:
+ Sets a addon's configuration callback
+ @syntax:
+ addon.sethelpcallback(<id:string>)
+ {
+ <configure_callback>
+ }
+ @switches:
+ !sw: -q
+ Makes the command run quietly
+ @description:
+ Sets the help callback for the specified addon.
+ The help callback will be called by the user either by the
+ means of [cmd]addon.help[/cmd] or by accessing the
+ proper function via GUI. It should display some sort
+ of addon documentation, usually in the help browser.
+ @seealso:
+ [cmd]addon.register[/cmd]
+ [cmd]addon.help[/cmd]
+*/
+
+static bool addon_kvs_cmd_sethelpcallback(KviKvsModuleCallbackCommandCall * c)
+{
+ QString szName;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("name",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSM_PARAMETERS_END(c)
+
+ KviKvsScriptAddon * a = KviKvsScriptAddonManager::instance()->findAddon(szName);
+ if(a)
+ {
+ a->setHelpCallback(c->callback()->code());
+ } else {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("The addon \"%1\" does not exist").arg(szName));
+ }
+
+ return true;
+}
+
+/*
+ @doc: addon.register
+ @type:
+ command
+ @title:
+ addon.register
+ @short:
+ Registers a script-based addon
+ @syntax:
+ addon.register [-f] [-n] [-q] (<id:string>,<version:string>,<visible_name:string>,<description:string>,<minkvircverion:string>[,<iconid:string>])
+ {
+ <uninstall callback>
+ }
+ @switches:
+ !sw: -f | --force
+ Registers the addon even if an addon with the same <id> and
+ a higher version already exists. The usage of this flag
+ is highly discouraged (i.e. use it only for debugging purposes
+ on your own machine).
+ !sw: -n | --no-uninstall
+ Performs no uninstallation of existing versions of the addon:
+ it simply replaces the registration entry with the new data.
+ Again, do NOT use this switch if not for debugging purposes
+ and on your own machine.
+ !sw: -q | --quiet
+ Makes the command run quietly
+ @description:
+ [p]
+ Registers a script-based addon.
+ [/p]
+ [p]
+ The registration process allows to "show" the addon in the script-addon manager
+ dialog and provides a standard way for the user to manage and uninstall the addons.
+ You simply register your addon BEFORE attempting to install it.
+ [/p]
+ [p]
+ A script-based addon is a set of scripts, icons, translations and possibly
+ other data files that add functionality to the KVIrc program.
+ The script-based addons are often simply called "scripts" and
+ we will adhere to that naming in certain parts of the documentation too.
+ [/p]
+ [p]
+ Each script-based addon (a set of scripts) is identified by an UNIQUE
+ <id>. Two addons with the same <id> can't co-exist in the same
+ KVIrc installation (so be sure to choose a token characteristic enough
+ to avoid collisions with others). The <id> itself is used only for
+ identification purposes and the user will almost always see the <visible_name>
+ instead, which can contain the [fnc]$tr[/fnc] function that will handle
+ the translation for it.
+ [/p]
+ [p]
+ Each addon has also a <version> which is a string in the form x.y.z
+ where x, y and z are numbers (yes.. that's the standard major-minor-patch level
+ version numbering scheme). A <version> of 2.4.23 is greater than 2.4.3
+ even if 2.4.3 comes after when compared as a string.
+ When an addon with a greater or equal version is installed over
+ an addon with a lower version, the lower one gets uninstalled first.
+ Installing a lower version over a greater one is not possible, unless
+ the lower versioned one is uninstalled first.
+ [/p]
+ [p]
+ <description> is another, possibly translated, string that will
+ be presented to the user in the addon management dialog.
+ [/p]
+ [p]
+ <minkvircversion> is the minimum KVIrc version required for the
+ addon to run. If the version of the running KVIrc executable
+ is lower than the requested one then the command will abort with an error.
+ If you want to completly ignore the KVIrc versioning (don't do it),
+ use "0.0.0" here. If you need fine tuning on cvs features you may add also
+ the sources date tag at the end of the required version string (e.g 3.2.1.20060303).
+ [/p]
+ [p]
+ <iconid> is the [doc:image_id]image identifier[/doc] of the icon
+ that will be displayed in the addon management dialog.
+ If not specified, a default icon will be used.
+ [/p]
+ [p]
+ The <uninstall_callback> is a snippet of code that should
+ wipe out the addon from the system. It is ALWAYS a good practice
+ to write a complete uninstallation procedure (think that YOU like
+ to be able to completly uninstall a program that you don't use anymore).
+ The <uninstall_callback> will be called by KVIrc when the addon
+ uninstallation is requested, either explicitly by using the GUI or the
+ command [cmd]addon.uninstall[/cmd], or implicitly by installing
+ a newer version of the addon (upgrading).
+ [/p]
+ [p]
+ If the user security rules don't allow your addon to be installed
+ or a higher version of a addon with the same name already exists
+ the command will fail with an error (aborting your whole intallation addon).
+ If you don't want to fail with an error but handle it gracefully instead
+ then you should use [fnc]$addon.exists()[/fnc] to check if a
+ addon with the same name and a greater version already exists.
+ You can't gracefully handle security error conditions: your installation
+ will be always aborted with an error in this case.
+ [/p]
+ [p]
+ The addon can also have a configuration callback settable with [cmd]addon.setconfigurecallback[/cmd]
+ and a help callback settable with [cmd]addon.sethelpcallback[/cmd]. The first
+ will usually display a configuration dialog, the second will display
+ some sort of addon's documentation, usually in the help browser.
+ [/p]
+ [p]
+ The registration process uninstalls any previous addon version
+ by executing its uninstall callback routine. This is another reason for that
+ you should call addon.register BEFORE you attempt to install your addon.
+ Failing to do that may cause your old uninstalled to wipe out your newly
+ installed files or code.
+ [/p]
+ @seealso:
+ [cmd]addon.uninstall[/cmd], [fnc]$addon.exists[/fnc],
+ [cmd]addon.setconfigurecallback[/cmd], [cmd]addon.configure[/cmd],
+ [cmd]addon.sethelpcallback[/cmd], [cmd]addon.help[/cmd]
+ @examples:
+ [example]
+
+ [/example]
+*/
+
+static bool addon_kvs_cmd_register(KviKvsModuleCallbackCommandCall * c)
+{
+ KviKvsScriptAddonRegistrationData rd;
+ QString szMinKVIrcVersion;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("name",KVS_PT_NONEMPTYSTRING,0,(rd.szName))
+ KVSM_PARAMETER("version",KVS_PT_NONEMPTYSTRING,0,(rd.szVersion))
+ KVSM_PARAMETER_IGNORED("visible_text")
+ KVSM_PARAMETER_IGNORED("description")
+ KVSM_PARAMETER("min_kvirc_version",KVS_PT_NONEMPTYSTRING,0,szMinKVIrcVersion)
+ KVSM_PARAMETER("icon_id",KVS_PT_STRING,KVS_PF_OPTIONAL,(rd.szIconId))
+ KVSM_PARAMETERS_END(c)
+
+
+ if(!(c->getParameterCode(2,rd.szVisibleNameScript) && c->getParameterCode(3,rd.szDescriptionScript)))
+ {
+ c->error(__tr2qs("Internal error: call a head-shrinker"));
+ return false;
+ }
+
+ if(c->callback())
+ rd.szUninstallCallbackScript = c->callback()->code();
+
+ if(!KviMiscUtils::isValidVersionString(rd.szVersion))
+ {
+ c->error(__tr2qs("The specified version \"%Q\" is not a valid version string"),&(rd.szVersion));
+ return false;
+ }
+
+ if(!KviMiscUtils::isValidVersionString(szMinKVIrcVersion))
+ {
+ c->error(__tr2qs("The specified KVIrc version \"%Q\" is not a valid version string"),&szMinKVIrcVersion);
+ return false;
+ }
+
+ if(KviMiscUtils::compareVersions(szMinKVIrcVersion,KVI_VERSION "." KVI_SOURCES_DATE) < 0)
+ {
+ c->error(__tr2qs("This KVIrc executable is too old to run this addon (minimum version required is %Q)"),&szMinKVIrcVersion);
+ return false;
+ }
+
+ if(!c->switches()->find('q',"quiet"))
+ c->window()->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Attempting to register addon \"%Q\" with version %Q"),&(rd.szName),&(rd.szVersion));
+
+ KviKvsScriptAddon * a = KviKvsScriptAddonManager::instance()->findAddon(rd.szName);
+ if(a)
+ {
+ // the same addon already exists
+ if(KviMiscUtils::compareVersions(a->version(),rd.szVersion) < 0)
+ {
+ // and it has a higher version...
+ // complain unless -f is used
+ if(!c->switches()->find('f',"force"))
+ {
+ c->error(__tr2qs("The script addon \"%Q\" already exists with version %Q which is higher than %Q"),&(rd.szName),&(a->version()),&(rd.szVersion));
+ return false;
+ }
+ }
+
+ if(!c->switches()->find('q',"quiet"))
+ c->window()->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Uninstalling existing addon version %Q"),&(a->version()));
+
+ // uninstall the existing version
+ KviKvsScriptAddonManager::instance()->unregisterAddon(rd.szName,c->window(),!c->switches()->find('n',"no-uninstall"));
+ }
+
+ if(!KviKvsScriptAddonManager::instance()->registerAddon(&rd))
+ {
+ c->error(__tr2qs("Script registration failed"));
+ return false;
+ }
+
+ if(!c->switches()->find('q',"quiet"))
+ c->window()->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Script succesfully registered"));
+
+ return true;
+}
+
+/*
+ @doc: addon.dialog
+ @type:
+ command
+ @title:
+ addon.dialog
+ @short:
+ Shows the addon addon management editor
+ @syntax:
+ addon.dialog
+ @description:
+ Shows the addon addon management editor
+*/
+
+static bool addon_kvs_cmd_dialog(KviKvsModuleCommandCall * c)
+{
+ KviScriptManagementDialog::display();
+ return true;
+}
+
+static bool addon_module_init(KviModule *m)
+{
+ KVSM_REGISTER_FUNCTION(m,"exists",addon_kvs_fnc_exists);
+ KVSM_REGISTER_FUNCTION(m,"version",addon_kvs_fnc_version);
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"dialog",addon_kvs_cmd_dialog);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"list",addon_kvs_cmd_list);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"uninstall",addon_kvs_cmd_uninstall);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"configure",addon_kvs_cmd_configure);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"help",addon_kvs_cmd_help);
+
+ KVSM_REGISTER_CALLBACK_COMMAND(m,"setconfigurecallback",addon_kvs_cmd_setconfigurecallback);
+ KVSM_REGISTER_CALLBACK_COMMAND(m,"sethelpcallback",addon_kvs_cmd_sethelpcallback);
+ KVSM_REGISTER_CALLBACK_COMMAND(m,"register",addon_kvs_cmd_register);
+
+ QString szBuf;
+ m->getDefaultConfigFileName(szBuf);
+ KviConfig cfg(szBuf,KviConfig::Read);
+ g_rectManagementDialogGeometry = cfg.readRectEntry("EditorGeometry",QRect(10,10,390,440));
+
+ return true;
+}
+
+static bool addon_module_cleanup(KviModule *m)
+{
+ KviScriptManagementDialog::cleanup();
+
+ QString szBuf;
+ m->getDefaultConfigFileName(szBuf);
+ KviConfig cfg(szBuf,KviConfig::Write);
+ cfg.writeEntry("EditorGeometry",g_rectManagementDialogGeometry);
+
+ return true;
+}
+
+static bool addon_module_can_unload(KviModule * m)
+{
+ return (!KviScriptManagementDialog::instance());
+}
+
+
+KVIRC_MODULE(
+ "addon", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2005 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "Script management functions for the KVS engine",
+ addon_module_init,
+ addon_module_can_unload,
+ 0,
+ addon_module_cleanup
+)
diff --git a/src/modules/addon/managementdialog.cpp b/src/modules/addon/managementdialog.cpp
new file mode 100644
index 00000000..a6765587
--- /dev/null
+++ b/src/modules/addon/managementdialog.cpp
@@ -0,0 +1,403 @@
+//=============================================================================
+//
+// File : managementdialog.cpp
+// Created on Fri 08 Apr 2005 14:54:56 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "managementdialog.h"
+
+#include "kvi_listview.h"
+#include "kvi_locale.h"
+#include "kvi_frame.h"
+#include "kvi_iconmanager.h"
+#include "kvi_kvs_scriptaddonmanager.h"
+#include "kvi_window.h"
+
+#include "kvi_filedialog.h"
+#include "kvi_fileutils.h"
+#include "kvi_kvs_script.h"
+#include "kvi_sourcesdate.h"
+
+#include <qpushbutton.h>
+#include <qlayout.h>
+#include <qapplication.h>
+#include <qtooltip.h>
+#include <qlineedit.h>
+#include <qlabel.h>
+#include <qmessagebox.h>
+#include <qframe.h>
+#include "kvi_tal_scrollview.h"
+#ifdef COMPILE_USE_QT4
+ #include <q3header.h>
+
+#else
+ #include <qheader.h>
+#endif
+#include "kvi_draganddrop.h"
+#include <qpainter.h>
+#include <qpixmap.h>
+#include <qmessagebox.h>
+#include <qevent.h>
+
+KviScriptManagementDialog * KviScriptManagementDialog::m_pInstance = 0;
+extern QRect g_rectManagementDialogGeometry;
+
+
+#define LVI_ICON_SIZE 32
+#define LVI_BORDER 4
+#define LVI_SPACING 8
+#define LVI_MINIMUM_TEXT_WIDTH 300
+#define LVI_MINIMUM_CELL_WIDTH (LVI_MINIMUM_TEXT_WIDTH + LVI_BORDER + LVI_ICON_SIZE + LVI_SPACING + LVI_BORDER)
+
+KviScriptAddonListViewItem::KviScriptAddonListViewItem(KviTalListView * v,KviKvsScriptAddon * a)
+: KviTalListViewItem(v,"")
+{
+ m_pAddon = new KviKvsScriptAddon(*a);
+ m_pListView = v;
+ QString t = "<nobr><b>";
+ t += a->visibleName();
+ t += "</b> [";
+ t += a->version();
+ t += "]";
+ t += " <font color=\"#a0a0a0\">[";
+ t += a->name();
+ t += "]</font></nobr>";
+ t += "<br><nobr><font size=\"-1\">";
+ t += a->description();
+ t += "</font></nobr>";
+ m_szKey = a->visibleName().upper();
+#ifdef COMPILE_USE_QT4
+ m_pText = new QTextDocument();
+ m_pText->setHtml(t);
+ m_pText->setDefaultFont(v->font());
+#else
+ m_pText = new QSimpleRichText(t,v->font());
+#endif
+
+ QPixmap * p = a->icon();
+ m_pIcon = p ? new QPixmap(*p) : new QPixmap(LVI_ICON_SIZE,LVI_ICON_SIZE);
+}
+
+KviScriptAddonListViewItem::~KviScriptAddonListViewItem()
+{
+ delete m_pIcon;
+ delete m_pText;
+ delete m_pAddon;
+}
+
+QString KviScriptAddonListViewItem::key(int,bool) const
+{
+ return m_szKey;
+}
+
+void KviScriptAddonListViewItem::setup()
+{
+ KviTalListViewItem::setup();
+ int iWidth = m_pListView->visibleWidth();
+ if(iWidth < LVI_MINIMUM_CELL_WIDTH)iWidth = LVI_MINIMUM_CELL_WIDTH;
+ iWidth -= LVI_BORDER + LVI_ICON_SIZE + LVI_SPACING + LVI_BORDER;
+
+ #ifdef COMPILE_USE_QT4
+ int iHeight = m_pText->size().height() + (2 * LVI_BORDER);
+ #else
+ m_pText->setWidth(iWidth);
+ int iHeight = m_pText->height() + (2 * LVI_BORDER);
+ #endif
+ if(iHeight < (LVI_ICON_SIZE + (2 * LVI_BORDER)))iHeight = LVI_ICON_SIZE + (2 * LVI_BORDER);
+ setHeight(iHeight+2);
+}
+
+void KviScriptAddonListViewItem::paintCell(QPainter * p,const QColorGroup & cg,int column,int width,int align)
+{
+ #ifdef COMPILE_USE_QT4
+ if (isSelected())
+ {
+ QColor col(m_pListView->palette().highlight());
+ col.setAlpha(127);
+ p->setBrush(col);
+ p->drawRect(0, 0, m_pListView->visibleWidth(), height());
+ }
+ p->drawPixmap(LVI_BORDER,LVI_BORDER,*m_pIcon);
+ int afterIcon = LVI_BORDER + LVI_ICON_SIZE + LVI_SPACING;
+ int www = m_pListView->visibleWidth() - (afterIcon + LVI_BORDER);
+ p->translate(afterIcon,LVI_BORDER);
+ m_pText->setPageSize(QSizeF(www,height() - (LVI_BORDER * 2)));
+ m_pText->drawContents(p);
+ #else
+ p->drawPixmap(LVI_BORDER,LVI_BORDER,*m_pIcon);
+ int afterIcon = LVI_BORDER + LVI_ICON_SIZE + LVI_SPACING;
+ int www = m_pListView->visibleWidth() - (afterIcon + LVI_BORDER);
+ m_pText->setWidth(www);
+ if(isSelected())
+ {
+ QColorGroup cg2(cg);
+ cg2.setColor(QColorGroup::HighlightedText,cg.text());
+
+ m_pText->draw(p,afterIcon,LVI_BORDER,QRect(afterIcon,LVI_BORDER,www,height() - (LVI_BORDER * 2)),cg2);
+ } else {
+ m_pText->draw(p,afterIcon,LVI_BORDER,QRect(afterIcon,LVI_BORDER,www,height() - (LVI_BORDER * 2)),cg);
+ }
+ #endif
+}
+
+
+
+
+
+
+
+KviScriptAddonListView::KviScriptAddonListView(QWidget * pParent)
+: KviListView(pParent)
+{
+ QPixmap * p = g_pIconManager->getImage("kvi_dialog_addons.png");
+ if(p)setBackgroundOverlayPixmap(p,Qt::AlignRight | Qt::AlignBottom);
+
+ setSelectionMode(Single);
+ header()->hide();
+ int iWidth = visibleWidth();
+ if(iWidth < LVI_MINIMUM_CELL_WIDTH)iWidth = LVI_MINIMUM_CELL_WIDTH;
+ addColumn("",iWidth);
+ setSorting(0,true);
+}
+
+KviScriptAddonListView::~KviScriptAddonListView()
+{
+}
+
+void KviScriptAddonListView::resizeEvent(QResizeEvent * e)
+{
+ KviListView::resizeEvent(e);
+ int iWidth = visibleWidth();
+ if(iWidth < LVI_MINIMUM_CELL_WIDTH)iWidth = LVI_MINIMUM_CELL_WIDTH;
+ setColumnWidth(0,iWidth);
+}
+
+
+KviScriptManagementDialog::KviScriptManagementDialog(QWidget * p)
+: QDialog(p,"" /*,WType_TopLevel | WStyle_Customize | WStyle_Title | WStyle_StaysOnTop | WStyle_DialogBorder*/)
+{
+ setCaption(__tr2qs("Manage Script-Based Addons"));
+ setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ADDONS)));
+ setModal(true);
+
+ m_pInstance = this;
+
+ QGridLayout * g = new QGridLayout(this,11,3,4,5);
+
+ /*QLabel * lb = new QLabel(this);
+ lb->setFrameStyle(QFrame::WinPanel | QFrame::Sunken);
+
+ g->addMultiCellWidget(lb,0,10,0,0);
+ QPixmap * pix = g_pIconManager->getImage("kvi_dialog_addons.png");
+ if(pix)
+ {
+ lb->setPixmap(*pix);
+ lb->setFixedWidth(pix->width());
+ }
+ lb->setBackgroundColor(Qt::black);
+ lb->setAlignment(Qt::AlignBottom | Qt::AlignRight);
+ */
+ m_pListView = new KviScriptAddonListView(this);
+ g->addMultiCellWidget(m_pListView,0,10,1,1);
+
+ m_pConfigureButton = new QPushButton(__tr2qs("Configure"),this);
+ connect(m_pConfigureButton,SIGNAL(clicked()),this,SLOT(configureScript()));
+ g->addWidget(m_pConfigureButton,0,2);
+
+ m_pHelpButton = new QPushButton(__tr2qs("Show Help"),this);
+ connect(m_pHelpButton,SIGNAL(clicked()),this,SLOT(showScriptHelp()));
+ g->addWidget(m_pHelpButton,1,2);
+
+ g->addRowSpacing(2,40);
+
+ m_pUninstallButton = new QPushButton(__tr2qs("Uninstall"),this);
+ connect(m_pUninstallButton,SIGNAL(clicked()),this,SLOT(uninstallScript()));
+ g->addWidget(m_pUninstallButton,3,2);
+
+ g->addRowSpacing(4,15);
+
+ QFrame *f = new QFrame(this);
+ f->setFrameStyle(QFrame::HLine | QFrame::Sunken);
+ g->addWidget(f,5,2);
+
+ g->addRowSpacing(6,15);
+
+ m_pInstallButton = new QPushButton(__tr2qs("Install Addon..."),this);
+ connect(m_pInstallButton,SIGNAL(clicked()),this,SLOT(installScript()));
+ g->addWidget(m_pInstallButton,7,2);
+
+ m_pGetScriptsButton = new QPushButton(__tr2qs("More Addons..."),this);
+ connect(m_pGetScriptsButton,SIGNAL(clicked()),this,SLOT(getMoreScripts()));
+ g->addWidget(m_pGetScriptsButton,8,2);
+
+ QPushButton * b = new QPushButton(__tr2qs("Close"),this);
+ connect(b,SIGNAL(clicked()),this,SLOT(closeClicked()));
+ g->addWidget(b,10,2);
+
+ g->setRowStretch(9,1);
+ g->setColStretch(1,1);
+
+ fillListView();
+
+ currentChanged(0);
+ connect(m_pListView,SIGNAL(currentChanged(KviTalListViewItem *)),this,SLOT(currentChanged(KviTalListViewItem *)));
+ //currentToolBarChanged();
+
+ if(g_rectManagementDialogGeometry.y() < 5)
+ {
+ g_rectManagementDialogGeometry.setY(5);
+ }
+ resize(g_rectManagementDialogGeometry.width(),
+ g_rectManagementDialogGeometry.height());
+ move(g_rectManagementDialogGeometry.x(),
+ g_rectManagementDialogGeometry.y());
+}
+
+KviScriptManagementDialog::~KviScriptManagementDialog()
+{
+ g_rectManagementDialogGeometry = QRect(pos().x(),pos().y(),size().width(),size().height());
+
+ //KviActionManager::instance()->customizeToolBarsDialogDestroyed();
+ m_pInstance = 0;
+}
+
+void KviScriptManagementDialog::fillListView()
+{
+ m_pListView->clear();
+ KviPointerHashTable<QString,KviKvsScriptAddon> * d = KviKvsScriptAddonManager::instance()->addonDict();
+ if(!d)return;
+ KviPointerHashTableIterator<QString,KviKvsScriptAddon> it(*d);
+ KviScriptAddonListViewItem * item;
+ while(KviKvsScriptAddon * a = it.current())
+ {
+ item = new KviScriptAddonListViewItem(m_pListView,a);
+ ++it;
+ }
+}
+
+void KviScriptManagementDialog::currentChanged(KviTalListViewItem *)
+{
+ KviScriptAddonListViewItem * it = (KviScriptAddonListViewItem *)m_pListView->currentItem();
+ if(!it)
+ {
+ m_pConfigureButton->setEnabled(false);
+ m_pUninstallButton->setEnabled(false);
+ m_pHelpButton->setEnabled(false);
+ } else {
+ m_pConfigureButton->setEnabled(!(it->addon()->configureCallbackCode().isEmpty()));
+ m_pHelpButton->setEnabled(!(it->addon()->helpCallbackCode().isEmpty()));
+ m_pUninstallButton->setEnabled(true);
+ }
+}
+
+void KviScriptManagementDialog::showScriptHelp()
+{
+ KviScriptAddonListViewItem * it = (KviScriptAddonListViewItem *)m_pListView->currentItem();
+ if(!it)return;
+ if(it->addon()->helpCallbackCode().isEmpty())return;
+ it->addon()->executeHelpCallback(g_pActiveWindow);
+}
+
+void KviScriptManagementDialog::configureScript()
+{
+ KviScriptAddonListViewItem * it = (KviScriptAddonListViewItem *)m_pListView->currentItem();
+ if(!it)return;
+ if(it->addon()->configureCallbackCode().isEmpty())return;
+ it->addon()->executeConfigureCallback(g_pActiveWindow);
+}
+
+void KviScriptManagementDialog::uninstallScript()
+{
+ KviScriptAddonListViewItem * it = (KviScriptAddonListViewItem *)m_pListView->currentItem();
+ if(!it)return;
+
+ QString txt = "<p>";
+ txt += __tr2qs("Do you really want to uninstall the addon \"%1\" ?").arg(it->addon()->visibleName());
+ txt += "</p>";
+
+ if(QMessageBox::question(this,
+ __tr2qs("Confirm addon uninstallation"),txt,__tr2qs("&Yes"),__tr2qs("&No"),0,1) != 0)return;
+
+ KviKvsScriptAddonManager::instance()->unregisterAddon(it->addon()->name(),g_pActiveWindow);
+
+ fillListView();
+ currentChanged(0);
+}
+
+void KviScriptManagementDialog::getMoreScripts()
+{
+ KviKvsScript::run("openurl http://www.kvirc.net/?id=addons&version=" KVI_VERSION "." KVI_SOURCES_DATE,g_pActiveWindow);
+}
+
+void KviScriptManagementDialog::installScript()
+{
+ QString buffer;
+
+ if(!KviFileDialog::askForOpenFileName(buffer,__tr2qs("Please select the addon installation file"),QString::null,"install.kvs",false,true))return;
+
+ buffer.replace("\\","\\\\");
+
+ QString szCmd = "parse \"";
+ szCmd += buffer;
+ szCmd += "\"";
+
+ KviKvsScript::run(szCmd,g_pActiveWindow);
+
+ fillListView();
+ currentChanged(0);
+
+ m_pListView->publicUpdateContents();
+ //m_pListView->triggerUpdate();
+}
+
+void KviScriptManagementDialog::showEvent(QShowEvent * e)
+{
+// QRect r = parentWidget() ? parentWidget()->rect() : QApplication::desktop()->rect();
+// int x = (r.width() - width()) / 2;
+// int y = (r.height() - height()) / 2;
+// move(x,y);
+}
+
+void KviScriptManagementDialog::closeClicked()
+{
+ delete this;
+}
+
+void KviScriptManagementDialog::cleanup()
+{
+ if(!m_pInstance)return;
+ delete m_pInstance;
+ m_pInstance = 0;
+}
+
+void KviScriptManagementDialog::display()
+{
+ if(m_pInstance)return;
+ m_pInstance = new KviScriptManagementDialog(g_pFrame);
+ m_pInstance->show();
+}
+
+void KviScriptManagementDialog::closeEvent(QCloseEvent * e)
+{
+ e->ignore();
+ delete this;
+}
+
diff --git a/src/modules/addon/managementdialog.h b/src/modules/addon/managementdialog.h
new file mode 100644
index 00000000..0abbb4f9
--- /dev/null
+++ b/src/modules/addon/managementdialog.h
@@ -0,0 +1,114 @@
+#ifndef _MANAGEMENTDIALOG_H_
+#define _MANAGEMENTDIALOG_H_
+//=============================================================================
+//
+// File : managementdialog.h
+// Created on Fri 08 Apr 2005 14:54:56 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include <qdialog.h>
+
+#include "kvi_listview.h"
+#include "kvi_settings.h"
+#include <qwidget.h>
+#include <qlabel.h>
+#include <qdialog.h>
+#include <qcolor.h>
+#include "kvi_tal_listview.h"
+
+class QPushButton;
+class QPixmap;
+class KviKvsScriptAddon;
+
+#ifdef COMPILE_USE_QT4
+ #include <QTextDocument>
+#else
+ #include <qsimplerichtext.h>
+#endif
+
+class KviScriptAddonListViewItem : public KviTalListViewItem
+{
+public:
+ KviScriptAddonListViewItem(KviTalListView * v,KviKvsScriptAddon * a);
+ ~KviScriptAddonListViewItem();
+protected:
+ KviKvsScriptAddon * m_pAddon;
+#ifdef COMPILE_USE_QT4
+ QTextDocument * m_pText;
+#else
+ QSimpleRichText * m_pText;
+#endif
+ QPixmap * m_pIcon;
+ KviTalListView * m_pListView;
+ QString m_szKey;
+public:
+ KviKvsScriptAddon * addon(){ return m_pAddon; };
+protected:
+ virtual QString key(int,bool) const;
+ virtual void paintCell(QPainter * p,const QColorGroup & cg,int column,int width,int align);
+ virtual void setup();
+};
+
+class KviScriptAddonListView : public KviListView
+{
+ Q_OBJECT
+public:
+ KviScriptAddonListView(QWidget * pParent);
+ ~KviScriptAddonListView();
+protected:
+ virtual void resizeEvent(QResizeEvent * e);
+};
+
+class KviScriptManagementDialog : public QDialog
+{
+ Q_OBJECT
+protected:
+ KviScriptManagementDialog(QWidget * p);
+public:
+ ~KviScriptManagementDialog();
+protected:
+ KviScriptAddonListView * m_pListView;
+ static KviScriptManagementDialog * m_pInstance;
+ QPushButton * m_pUninstallButton;
+ QPushButton * m_pConfigureButton;
+ QPushButton * m_pHelpButton;
+ QPushButton * m_pInstallButton;
+ QPushButton * m_pGetScriptsButton;
+public:
+ static KviScriptManagementDialog * instance(){ return m_pInstance; };
+ static void display();
+ static void cleanup();
+protected:
+ void fillListView();
+ virtual void showEvent(QShowEvent * e);
+ virtual void closeEvent(QCloseEvent *e);
+protected slots:
+ void currentChanged(KviTalListViewItem *i);
+ void closeClicked();
+ void showScriptHelp();
+ void configureScript();
+ void uninstallScript();
+ void getMoreScripts();
+ void installScript();
+};
+
+
+#endif //!_MANAGEMENTDIALOG_H_
diff --git a/src/modules/addon/pics/Makefile.am b/src/modules/addon/pics/Makefile.am
new file mode 100644
index 00000000..726f519d
--- /dev/null
+++ b/src/modules/addon/pics/Makefile.am
@@ -0,0 +1,9 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+tmpdir = $(picsdir)
+
+tmp_DATA= kvi_dialog_addons.png
+
+EXTRA_DIST = $(tmp_DATA)
diff --git a/src/modules/addon/pics/kvi_dialog_addons.png b/src/modules/addon/pics/kvi_dialog_addons.png
new file mode 100644
index 00000000..6cfa53d9
--- /dev/null
+++ b/src/modules/addon/pics/kvi_dialog_addons.png
Binary files differ
diff --git a/src/modules/aliaseditor/Makefile.am b/src/modules/aliaseditor/Makefile.am
new file mode 100644
index 00000000..60845dbc
--- /dev/null
+++ b/src/modules/aliaseditor/Makefile.am
@@ -0,0 +1,21 @@
+###############################################################################
+# KVirc IRC client Makealiaseditor - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvialiaseditor.la
+
+libkvialiaseditor_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvialiaseditor_la_SOURCES = libkvialiaseditor.cpp aliaseditor.cpp
+nodist_libkvialiaseditor_la_SOURCES = moc_aliaseditor.cpp
+
+noinst_HEADERS = aliaseditor.h
+libkvialiaseditor_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+# noinst_HEADERS=
+
+moc_aliaseditor.cpp: aliaseditor.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/aliaseditor/aliaseditor.cpp b/src/modules/aliaseditor/aliaseditor.cpp
new file mode 100644
index 00000000..3317fd3f
--- /dev/null
+++ b/src/modules/aliaseditor/aliaseditor.cpp
@@ -0,0 +1,1408 @@
+//=====================================================================================
+//
+// File : aliaseditor.cpp
+// Creation date : Mon Dec 23 2002 14:36:18 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the linkss of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=====================================================================================
+
+#include "aliaseditor.h"
+
+#include "kvi_iconmanager.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_imagedialog.h"
+#include "kvi_config.h"
+#include "kvi_filedialog.h"
+#include "kvi_fileutils.h"
+#include "kvi_scripteditor.h"
+#include "kvi_debug.h"
+#include "kvi_app.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_aliasmanager.h"
+#include "kvi_filedialog.h"
+#include "kvi_cmdformatter.h"
+#include "kvi_module.h"
+#include "kvi_valuelist.h"
+
+#include <qsplitter.h>
+#include <qlayout.h>
+#include "kvi_tal_vbox.h"
+#include <qtooltip.h>
+#include <qpushbutton.h>
+#include <qdir.h>
+#include <qmessagebox.h>
+#include <qinputdialog.h>
+#include <qregexp.h>
+
+extern KviAliasEditorWindow * g_pAliasEditorWindow;
+extern KviModule * g_pAliasEditorModule;
+
+KviAliasEditorListViewItem::KviAliasEditorListViewItem(KviTalListView * pListView,Type eType,const QString &szName)
+: KviTalListViewItem(pListView), m_eType(eType), m_pParentNamespaceItem(0)
+{
+ setName(szName);
+}
+
+KviAliasEditorListViewItem::KviAliasEditorListViewItem(KviAliasNamespaceListViewItem * pParentNamespaceItem,Type eType,const QString &szName)
+: KviTalListViewItem(pParentNamespaceItem), m_eType(eType), m_pParentNamespaceItem(pParentNamespaceItem)
+{
+ setName(szName);
+}
+
+QString KviAliasEditorListViewItem::key(int column,bool bAsc) const
+{
+ QString ret;
+ if(m_eType == Namespace)ret = "1";
+ else ret = "2";
+ ret += m_szName;
+ return ret;
+}
+
+
+void KviAliasEditorListViewItem::setName(const QString &szName)
+{
+ m_szName = szName;
+ setText(0,m_szName);
+}
+
+KviAliasListViewItem::KviAliasListViewItem(KviAliasNamespaceListViewItem * pParentNamespaceItem,const QString &szName)
+: KviAliasEditorListViewItem(pParentNamespaceItem,KviAliasEditorListViewItem::Alias,szName)
+{
+ setPixmap(0,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ALIAS)));
+ m_cPos=QPoint(0,0);
+}
+
+KviAliasListViewItem::KviAliasListViewItem(KviTalListView * pListView,const QString &szName)
+: KviAliasEditorListViewItem(pListView,KviAliasEditorListViewItem::Alias,szName)
+{
+ setPixmap(0,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ALIAS)));
+ m_cPos=QPoint(0,0);
+}
+
+
+KviAliasNamespaceListViewItem::KviAliasNamespaceListViewItem(KviTalListView * pListView,const QString &szName)
+: KviAliasEditorListViewItem(pListView,KviAliasEditorListViewItem::Namespace,szName)
+{
+ setPixmap(0,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_NAMESPACE)));
+}
+
+KviAliasNamespaceListViewItem::KviAliasNamespaceListViewItem(KviAliasNamespaceListViewItem * pParentNamespaceItem,const QString &szName)
+: KviAliasEditorListViewItem(pParentNamespaceItem,KviAliasEditorListViewItem::Namespace,szName)
+{
+ setPixmap(0,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_NAMESPACE)));
+}
+
+
+KviAliasNamespaceListViewItem * KviAliasNamespaceListViewItem::findNamespaceItem(const QString &szName)
+{
+ KviAliasEditorListViewItem * it = (KviAliasEditorListViewItem *)firstChild();
+ while(it)
+ {
+ if(it->isNamespace())
+ {
+ if(KviQString::equalCI(szName,it->name()))return (KviAliasNamespaceListViewItem *)it;
+ }
+ it = (KviAliasEditorListViewItem *)it->nextSibling();
+ }
+ return 0;
+}
+
+KviAliasNamespaceListViewItem * KviAliasNamespaceListViewItem::getNamespaceItem(const QString &szName)
+{
+ KviAliasNamespaceListViewItem * it = findNamespaceItem(szName);
+ if(it)return it;
+ it = new KviAliasNamespaceListViewItem(this,szName);
+ return it;
+}
+
+KviAliasListViewItem * KviAliasNamespaceListViewItem::findAliasItem(const QString &szName)
+{
+ KviAliasEditorListViewItem * it = (KviAliasEditorListViewItem *)firstChild();
+ while(it)
+ {
+ if(it->isAlias())
+ {
+ if(KviQString::equalCI(szName,it->name()))return (KviAliasListViewItem *)it;
+ }
+ it = (KviAliasEditorListViewItem *)it->nextSibling();
+ }
+ return 0;
+}
+
+KviAliasListViewItem * KviAliasNamespaceListViewItem::getAliasItem(const QString &szName)
+{
+ KviAliasListViewItem * it = findAliasItem(szName);
+ if(it)return it;
+ it = new KviAliasListViewItem(this,szName);
+ return it;
+}
+
+
+KviAliasListViewItem * KviAliasNamespaceListViewItem::createFullAliasItem(const QString &szFullName)
+{
+ QStringList lNamespaces;
+ QString szName;
+ KviAliasEditor::splitFullAliasOrNamespaceName(szFullName,lNamespaces,szName);
+
+ if(lNamespaces.isEmpty())
+ return getAliasItem(szName);
+
+ QStringList::Iterator it = lNamespaces.begin();
+
+ KviAliasNamespaceListViewItem * nit = getNamespaceItem(*it);
+ ++it;
+ while(it != lNamespaces.end())
+ {
+ nit = nit->getNamespaceItem(*it);
+ ++it;
+ }
+
+ return nit->getAliasItem(szName);
+}
+
+KviAliasNamespaceListViewItem * KviAliasNamespaceListViewItem::createFullNamespaceItem(const QString &szFullName)
+{
+ QStringList lNamespaces;
+ QString szName;
+ KviAliasEditor::splitFullAliasOrNamespaceName(szFullName,lNamespaces,szName);
+
+ if(lNamespaces.isEmpty())
+ return getNamespaceItem(szName);
+
+ QStringList::Iterator it = lNamespaces.begin();
+
+ KviAliasNamespaceListViewItem * nit = getNamespaceItem(*it);
+ ++it;
+ while(it != lNamespaces.end())
+ {
+ nit = nit->getNamespaceItem(*it);
+ ++it;
+ }
+
+ return nit->getNamespaceItem(szName);
+}
+
+
+KviAliasEditor::KviAliasEditor(QWidget * par)
+: QWidget(par)
+{
+ m_pLastEditedItem = 0;
+ m_pLastClickedItem = 0;
+ m_szDir = QDir::homeDirPath();
+
+
+ QGridLayout * l = new QGridLayout(this,1,1,2,2);
+
+#ifdef COMPILE_USE_QT4
+ m_pSplitter = new QSplitter(Qt::Horizontal,this);
+ m_pSplitter->setOpaqueResize(false);
+#else
+ m_pSplitter = new QSplitter(QSplitter::Horizontal,this);
+#endif
+
+ l->addWidget(m_pSplitter,0,0);
+
+ KviTalVBox * box = new KviTalVBox(m_pSplitter);
+ m_pListView = new KviTalListView(box);
+ m_pListView->addColumn(__tr2qs("Alias"));
+ m_pListView->setSelectionMode(KviTalListView::Extended);
+ m_pListView->setShowSortIndicator(true);
+ m_pListView->setRootIsDecorated(true);
+
+ box = new KviTalVBox(m_pSplitter);
+ KviTalHBox * hbox = new KviTalHBox(box);
+ m_pNameLabel = new QLabel(__tr2qs("No item selected"),hbox);
+ m_pRenameButton = new QPushButton(__tr2qs("Rename"),hbox);
+ m_pRenameButton->setEnabled(false);
+ connect(m_pRenameButton,SIGNAL(clicked()),this,SLOT(renameItem()));
+ hbox->setStretchFactor(m_pNameLabel,2);
+ QToolTip::add(m_pRenameButton,__tr2qs("Edit the alias or namespace name"));
+ m_pEditor = KviScriptEditor::createInstance(box);
+ m_pEditor->setFocus();
+ connect(m_pEditor,SIGNAL(find(const QString &)),this,SLOT(slotFindWord(const QString &)));
+ connect(m_pEditor,SIGNAL(replaceAll(const QString &,const QString &)),this,SLOT(slotReplaceAll(const QString &,const QString &)));
+
+ m_pContextPopup = new KviTalPopupMenu(this);
+
+ oneTimeSetup();
+
+ currentItemChanged(0);
+}
+
+KviAliasEditor::~KviAliasEditor()
+{
+ KviScriptEditor::destroyInstance(m_pEditor);
+}
+
+KviAliasNamespaceListViewItem * KviAliasEditor::findNamespaceItem(const QString &szName)
+{
+ KviAliasNamespaceListViewItem * it = (KviAliasNamespaceListViewItem *)m_pListView->firstChild();
+ while(it)
+ {
+ if(KviQString::equalCI(szName,it->name()))return it;
+ it = (KviAliasNamespaceListViewItem *)it->nextSibling();
+ }
+ return 0;
+}
+
+KviAliasNamespaceListViewItem * KviAliasEditor::getNamespaceItem(const QString &szName)
+{
+ KviAliasNamespaceListViewItem * it = findNamespaceItem(szName);
+ if(it)return it;
+ it = new KviAliasNamespaceListViewItem(m_pListView,szName);
+ return it;
+}
+
+KviAliasListViewItem * KviAliasEditor::findAliasItem(const QString &szName)
+{
+ KviAliasEditorListViewItem * it = (KviAliasEditorListViewItem *)m_pListView->firstChild();
+ while(it)
+ {
+ if(it->isAlias())
+ {
+ if(KviQString::equalCI(szName,it->name()))return (KviAliasListViewItem *)it;
+ }
+ it = (KviAliasEditorListViewItem *)it->nextSibling();
+ }
+ return 0;
+}
+
+KviAliasListViewItem * KviAliasEditor::getAliasItem(const QString &szName)
+{
+ KviAliasListViewItem * it = findAliasItem(szName);
+ if(it)return it;
+ it = new KviAliasListViewItem(m_pListView,szName);
+ return it;
+}
+
+
+void KviAliasEditor::splitFullAliasOrNamespaceName(const QString &szFullName,QStringList &lNamespaces,QString &szName)
+{
+ lNamespaces = QStringList::split("::",szFullName);
+ if(lNamespaces.count() < 1)
+ {
+ szName = "unnamed";
+ lNamespaces.append(QString(""));
+ return;
+ }
+ szName = *(lNamespaces.fromLast());
+ lNamespaces.remove(lNamespaces.fromLast());
+}
+
+QString KviAliasEditor::buildFullItemName(KviAliasEditorListViewItem * it)
+{
+ if(!it) return QString::null;
+ QString szName = it->name();
+ KviAliasNamespaceListViewItem * nit = it->parentNamespaceItem();
+ while(nit)
+ {
+ QString tmp = nit->name();
+ if(!tmp.isEmpty())
+ {
+ szName.prepend("::");
+ szName.prepend(tmp);
+ }
+ nit = nit->parentNamespaceItem();
+ }
+ return szName;
+}
+
+
+KviAliasListViewItem * KviAliasEditor::createFullAliasItem(const QString &szFullName)
+{
+ QStringList lNamespaces;
+ QString szName;
+ splitFullAliasOrNamespaceName(szFullName,lNamespaces,szName);
+
+ if(lNamespaces.isEmpty())
+ return getAliasItem(szName);
+
+ QStringList::Iterator it = lNamespaces.begin();
+
+ KviAliasNamespaceListViewItem * nit = getNamespaceItem(*it);
+ ++it;
+ while(it != lNamespaces.end())
+ {
+ nit = nit->getNamespaceItem(*it);
+ ++it;
+ }
+
+ return nit->getAliasItem(szName);
+}
+
+KviAliasNamespaceListViewItem * KviAliasEditor::createFullNamespaceItem(const QString &szFullName)
+{
+ QStringList lNamespaces;
+ QString szName;
+ splitFullAliasOrNamespaceName(szFullName,lNamespaces,szName);
+
+ if(lNamespaces.isEmpty())
+ return getNamespaceItem(szName);
+
+ QStringList::Iterator it = lNamespaces.begin();
+
+ KviAliasNamespaceListViewItem * nit = getNamespaceItem(*it);
+ ++it;
+ while(it != lNamespaces.end())
+ {
+ nit = nit->getNamespaceItem(*it);
+ ++it;
+ }
+
+ return nit->getNamespaceItem(szName);
+}
+
+void KviAliasEditor::oneTimeSetup()
+{
+ KviPointerHashTable<QString,KviKvsScript> * a = KviKvsAliasManager::instance()->aliasDict();
+ if(!a)return;
+
+ KviPointerHashTableIterator<QString,KviKvsScript> it(*a);
+
+ KviAliasListViewItem * item;
+ while(it.current())
+ {
+ KviKvsScript * alias = it.current();
+ item = createFullAliasItem(alias->name());
+ item->setBuffer(alias->code());
+ ++it;
+ }
+
+ connect(m_pListView,SIGNAL(currentChanged(KviTalListViewItem *)),this,SLOT(currentItemChanged(KviTalListViewItem *)));
+ connect(m_pListView,SIGNAL(rightButtonPressed(KviTalListViewItem *,const QPoint &,int)),
+ this,SLOT(itemPressed(KviTalListViewItem *,const QPoint &,int)));
+}
+
+bool KviAliasEditor::hasSelectedItems(KviTalListViewItem * it)
+{
+ if(!it)return false;
+ if(it->isSelected())return true;
+ if(it->isOpen())
+ {
+ if(hasSelectedItems(it->firstChild()))return true;
+ }
+ return hasSelectedItems(it->nextSibling());
+}
+
+bool KviAliasEditor::itemExists(KviTalListViewItem *pSearchFor,KviTalListViewItem * pSearchAt)
+{
+ if(!pSearchFor)return false;
+ if(!pSearchAt)return false;
+ if(pSearchFor == pSearchAt)return true;
+ if(itemExists(pSearchFor,pSearchAt->firstChild()))return true;
+ return itemExists(pSearchFor,pSearchAt->nextSibling());
+}
+
+
+void KviAliasEditor::itemPressed(KviTalListViewItem *it,const QPoint &pnt,int col)
+{
+ m_pContextPopup->clear();
+
+ m_pLastClickedItem = (KviAliasEditorListViewItem *)it;
+
+ int id;
+
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_ALIAS)),
+ __tr2qs("Add Alias"),
+ this,SLOT(newAlias()));
+
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_ALIAS)),
+ __tr2qs("Add Namespace"),
+ this,SLOT(newNamespace()));
+
+
+ bool bHasItems = m_pListView->firstChild() != 0;
+ bool bHasSelected = hasSelectedItems(m_pListView->firstChild());
+
+ m_pContextPopup->insertSeparator();
+
+ id = m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_QUIT)),
+ __tr2qs("Remove Selected"),
+ this,SLOT(removeSelectedItems()));
+ m_pContextPopup->setItemEnabled(id,bHasSelected);
+
+
+ m_pContextPopup->insertSeparator();
+
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_FOLDER)),
+ __tr2qs("Export Selected..."),
+ this,SLOT(exportSelected()));
+ m_pContextPopup->setItemEnabled(id,bHasSelected);
+
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_FOLDER)),
+ __tr2qs("Export Selected in singles files..."),
+ this,SLOT(exportSelectedSepFiles()));
+
+ m_pContextPopup->setItemEnabled(id,bHasSelected);
+
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_FOLDER)),
+ __tr2qs("Export All..."),
+ this,SLOT(exportAll()));
+ m_pContextPopup->setItemEnabled(id,bHasItems);
+
+ m_pContextPopup->insertSeparator();
+
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_SEARCH)),
+ __tr2qs("Find In Aliases..."),
+ this,SLOT(slotFind()));
+ m_pContextPopup->setItemEnabled(id,bHasItems);
+
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_NAMESPACE)),
+ __tr2qs("Collapse All Namespaces"),
+ this,SLOT(slotCollapseNamespaces()));
+
+ m_pContextPopup->setItemEnabled(id,bHasItems);
+
+
+ m_pContextPopup->popup(pnt);
+}
+
+void KviAliasEditor::recursiveSearchReplace(const QString &szSearch,KviAliasEditorListViewItem * it,bool bReplace,const QString &szReplace)
+{
+ if(!it)return;
+ if(it->isAlias())
+ {
+ if(((KviAliasListViewItem *)it)->buffer().find(szSearch,0,false) != -1)
+ {
+ it->setPixmap(0,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ALIASHIGHLIGHTED)));
+ if (bReplace) ((QString &)((KviAliasListViewItem *)it)->buffer()).replace(szSearch,szReplace,false);
+ openParentItems(it);
+ } else
+ it->setPixmap(0,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ALIAS)));
+ } else {
+ recursiveSearchReplace(szSearch,(KviAliasEditorListViewItem *)(it->firstChild()),bReplace,szReplace);
+ }
+ recursiveSearchReplace(szSearch,(KviAliasEditorListViewItem *)(it->nextSibling()),bReplace,szReplace);
+}
+
+void KviAliasEditor::slotFind()
+{
+ g_pAliasEditorModule->lock();
+ bool bOk;
+ QString szSearch = QInputDialog::getText(
+ __tr2qs("Find In Aliases"),
+ __tr2qs("Please enter the text to be searched for. The matching aliases will be highlighted."),
+ QLineEdit::Normal,
+ "",
+ &bOk,
+ this);
+ g_pAliasEditorModule->unlock();
+ if(!bOk)return;
+ if(szSearch.isEmpty())return;
+ m_pEditor->setFindText(szSearch);
+
+ recursiveSearchReplace(szSearch,(KviAliasEditorListViewItem *)m_pListView->firstChild());
+}
+void KviAliasEditor::slotFindWord(const QString &szSearch)
+{
+ m_pEditor->setFindText(szSearch);
+
+ recursiveSearchReplace(szSearch,(KviAliasEditorListViewItem *)m_pListView->firstChild());
+
+}
+void KviAliasEditor::recursiveCollapseNamespaces(KviAliasEditorListViewItem * it)
+{
+ if(!it)return;
+ if(it->isNamespace())
+ {
+ recursiveCollapseNamespaces((KviAliasEditorListViewItem *)(it->firstChild()));
+ }
+ recursiveCollapseNamespaces((KviAliasEditorListViewItem *)(it->nextSibling()));
+ it->setOpen(false);
+}
+
+void KviAliasEditor::slotCollapseNamespaces()
+{
+ recursiveCollapseNamespaces((KviAliasEditorListViewItem *)m_pListView->firstChild());
+}
+
+
+void KviAliasEditor::slotReplaceAll(const QString &before,const QString &after)
+{
+ recursiveSearchReplace(before,(KviAliasEditorListViewItem *)m_pListView->firstChild(),true,after);
+}
+
+
+
+void KviAliasEditor::getExportAliasBuffer(QString &buffer,KviAliasListViewItem * it)
+{
+ QString szBuf = it->buffer();
+ KviCommandFormatter::blockFromBuffer(szBuf);
+ QString szNam = buildFullItemName(it);
+
+ buffer = "alias(";
+ buffer += szNam;
+ buffer += ")\n";
+ buffer += szBuf;
+ buffer += "\n";
+}
+
+
+void KviAliasEditor::exportAll()
+{
+ exportAliases(false);
+}
+
+void KviAliasEditor::exportSelectedSepFiles()
+{
+ exportAliases (true,true);
+}
+void KviAliasEditor::exportSelected()
+{
+ exportAliases(true);
+}
+
+void KviAliasEditor::exportSelectionInSinglesFiles(KviPointerList<KviAliasListViewItem> *l)
+{
+ if(!m_szDir.endsWith(QString(KVI_PATH_SEPARATOR)))m_szDir += KVI_PATH_SEPARATOR;
+ debug ("dir %s",m_szDir.latin1());
+ if (!l->first())
+ {
+ g_pAliasEditorModule->lock();
+ QMessageBox::warning(this,__tr2qs("Alias Export"),__tr2qs("There is not selection!"),__tr2qs("Ok"));
+ g_pAliasEditorModule->unlock();
+ return;
+ }
+ g_pAliasEditorModule->lock();
+
+ if(!KviFileDialog::askForDirectoryName(m_szDir,__tr2qs("Choose a Directory - KVIrc"),m_szDir)){
+ g_pAliasEditorModule->unlock();
+ return;
+ }
+
+ if(!m_szDir.endsWith(QString(KVI_PATH_SEPARATOR)))m_szDir += KVI_PATH_SEPARATOR;
+ debug ("dir changed in %s",m_szDir.latin1());
+
+ bool bReplaceAll=false;
+
+ for(KviAliasListViewItem * it = l->first();it;it = l->next())
+ {
+ QString tmp;
+ getExportAliasBuffer(tmp,it);
+ QString szFileName=buildFullItemName(it);
+ szFileName += ".kvs";
+ szFileName.replace("::","_");
+ QString szCompletePath=m_szDir+szFileName;
+
+ if (KviFileUtils::fileExists(szCompletePath) && !bReplaceAll)
+ {
+ QString szMsg;
+ KviQString::sprintf(szMsg,__tr2qs("The file \"%Q\" exists. Do you want to replace it ?"),&szFileName);
+ int ret = QMessageBox::question(this,__tr2qs("Replace file"),szMsg,__tr2qs("Yes"),__tr2qs("Yes to All"),__tr2qs("No"));
+ if (ret!=2){
+ KviFileUtils::writeFile(szCompletePath,tmp);
+ if (ret==1) bReplaceAll=true;
+ }
+
+ }
+ else
+ KviFileUtils::writeFile(szCompletePath,tmp);
+
+ }
+ g_pAliasEditorModule->unlock();
+
+}
+void KviAliasEditor::exportAliases(bool bSelectedOnly,bool bSingleFiles)
+{
+ saveLastEditedItem();
+
+ KviPointerList<KviAliasListViewItem> l;
+ l.setAutoDelete(false);
+
+ QString out;
+
+ appendAliasItems(&l,(KviAliasEditorListViewItem *)(m_pListView->firstChild()),bSelectedOnly);
+ if (bSingleFiles)
+ {
+ exportSelectionInSinglesFiles(&l);
+ return;
+
+ }
+ int count=0;
+ KviAliasListViewItem * tempitem=0;
+ for(KviAliasListViewItem * it = l.first();it;it = l.next())
+ {
+ tempitem=it;
+ count ++;
+ QString tmp;
+ getExportAliasBuffer(tmp,it);
+ out += tmp;
+ out += "\n";
+ }
+ QString szNameFile;
+ if(out.isEmpty())
+ {
+ g_pAliasEditorModule->lock();
+ QMessageBox::warning(this,__tr2qs("Alias Export"),__tr2qs("There exported file would be empty: cowardly refusing to write it"),__tr2qs("Ok"));
+ g_pAliasEditorModule->unlock();
+ return;
+ }
+
+ QString szName = m_szDir;
+
+ if(!szName.endsWith(QString(KVI_PATH_SEPARATOR)))szName += KVI_PATH_SEPARATOR;
+ QString szFile;
+ g_pAliasEditorModule->lock();
+
+ if (count==1)
+ {
+ QString tmp=buildFullItemName(tempitem);
+ szNameFile = tmp.replace("::","_");
+ }
+ else szNameFile="aliases";
+ szName += szNameFile;
+ szName += ".kvs";
+ if(!KviFileDialog::askForSaveFileName(szFile,__tr2qs("Choose a Filename - KVIrc"),szName,"*.kvs",false,true,true))
+ {
+ g_pAliasEditorModule->unlock();
+ return;
+ }
+ m_szDir=QFileInfo(szFile).dirPath(TRUE);
+ g_pAliasEditorModule->unlock();
+
+ if(!KviFileUtils::writeFile(szFile,out))
+ {
+ g_pAliasEditorModule->lock();
+ QMessageBox::warning(this,__tr2qs("Write Failed - KVIrc"),__tr2qs("Unable to write to the alias file."),__tr2qs("Ok"));
+ g_pAliasEditorModule->unlock();
+ }
+}
+
+void KviAliasEditor::saveProperties(KviConfig *cfg)
+{
+ cfg->writeEntry("Sizes",m_pSplitter->sizes());
+ QString szName;
+ if(m_pLastEditedItem)
+ szName = buildFullItemName(m_pLastEditedItem);
+ cfg->writeEntry("LastAlias",szName);
+}
+
+void KviAliasEditor::loadProperties(KviConfig *cfg)
+{
+ KviValueList<int> def;
+ def.append(20);
+ def.append(80);
+ m_pSplitter->setSizes(cfg->readIntListEntry("Sizes",def));
+ QString tmp = cfg->readEntry("LastAlias",QString::null);
+
+ KviAliasEditorListViewItem * it = findAliasItem(tmp);
+ if(!it)it = findNamespaceItem(tmp);
+ if(it)activateItem(it);
+}
+
+void KviAliasEditor::appendAliasItems(KviPointerList<KviAliasListViewItem> * l,KviAliasEditorListViewItem * pStartFrom,bool bSelectedOnly)
+{
+ if(!pStartFrom)return;
+ if(pStartFrom->isAlias())
+ {
+ if(bSelectedOnly)
+ {
+ if(pStartFrom->isSelected())
+ l->append((KviAliasListViewItem *)pStartFrom);
+ } else {
+ l->append((KviAliasListViewItem *)pStartFrom);
+ }
+ } else {
+ if(bSelectedOnly)
+ {
+ if(pStartFrom->isSelected())
+ appendAliasItems(l,(KviAliasEditorListViewItem *)(pStartFrom->firstChild()),false); // ALL the items below the selected namespace
+ else
+ appendAliasItems(l,(KviAliasEditorListViewItem *)(pStartFrom->firstChild()),true); // only the selected items below
+ } else {
+ appendAliasItems(l,(KviAliasEditorListViewItem *)(pStartFrom->firstChild()),false);
+ }
+ }
+ appendAliasItems(l,(KviAliasEditorListViewItem *)(pStartFrom->nextSibling()),bSelectedOnly);
+}
+
+void KviAliasEditor::appendNamespaceItems(KviPointerList<KviAliasListViewItem> * l,KviAliasEditorListViewItem * pStartFrom,bool bSelectedOnly)
+{
+ if(!pStartFrom)return;
+ if(pStartFrom->isNamespace())
+ {
+ if(bSelectedOnly)
+ {
+ if(pStartFrom->isSelected())
+ l->append((KviAliasListViewItem *)pStartFrom);
+ } else {
+ l->append((KviAliasListViewItem *)pStartFrom);
+ }
+ } else {
+ if(bSelectedOnly)
+ {
+ if(pStartFrom->isSelected())
+ appendNamespaceItems(l,(KviAliasEditorListViewItem *)(pStartFrom->firstChild()),false); // ALL the items below the selected namespace
+ else
+ appendNamespaceItems(l,(KviAliasEditorListViewItem *)(pStartFrom->firstChild()),true); // only the selected items below
+ } else {
+ appendNamespaceItems(l,(KviAliasEditorListViewItem *)(pStartFrom->firstChild()),false);
+ }
+ }
+ appendNamespaceItems(l,(KviAliasEditorListViewItem *)(pStartFrom->nextSibling()),bSelectedOnly);
+}
+
+void KviAliasEditor::appendSelectedItems(KviPointerList<KviAliasEditorListViewItem> * l,KviAliasEditorListViewItem * pStartFrom,bool bIncludeChildrenOfSelected)
+{
+ if(!pStartFrom)return;
+ if(pStartFrom->isSelected())
+ {
+ l->append(pStartFrom);
+ if(bIncludeChildrenOfSelected)
+ appendSelectedItems(l,(KviAliasEditorListViewItem *)(pStartFrom->firstChild()),bIncludeChildrenOfSelected);
+ } else {
+ appendSelectedItems(l,(KviAliasEditorListViewItem *)(pStartFrom->firstChild()),bIncludeChildrenOfSelected);
+ }
+ appendSelectedItems(l,(KviAliasEditorListViewItem *)(pStartFrom->nextSibling()),bIncludeChildrenOfSelected);
+}
+
+bool KviAliasEditor::removeItem(KviAliasEditorListViewItem *it,bool * pbYesToAll,bool bDeleteEmptyTree)
+{
+ if(!it)return true;
+ QString szMsg;
+ QString szName = it->name();
+
+ if(!*pbYesToAll)
+ {
+ if(it->isAlias())
+ KviQString::sprintf(szMsg,__tr2qs("Do you really want to remove the alias \"%Q\" ?"),&szName);
+ else {
+ KviQString::sprintf(szMsg,__tr2qs("Do you really want to remove the namespace \"%Q\" ?"),&szName);
+ szMsg += "<br>";
+ szMsg += __tr2qs("Please note that all the children items will be deleted too.");
+ }
+
+ g_pAliasEditorModule->lock();
+ int ret = QMessageBox::question(this,__tr2qs("Remove item"),szMsg,__tr2qs("Yes"),__tr2qs("Yes to All"),__tr2qs("No"));
+ g_pAliasEditorModule->unlock();
+ switch(ret)
+ {
+ case 0:
+ // nothing
+ break;
+ case 1:
+ *pbYesToAll = true;
+ break;
+ default:
+ return false;
+ break;
+ }
+ }
+
+ if(it == m_pLastEditedItem)
+ m_pLastEditedItem = 0;
+ if(it == m_pLastClickedItem)
+ m_pLastClickedItem = 0;
+ if(bDeleteEmptyTree)
+ {
+ while(it)
+ {
+ KviAliasEditorListViewItem * par = (KviAliasEditorListViewItem *)(it->parent());
+ delete it;
+ if(par)
+ {
+ if(!par->firstChild())it = par;
+ else it = 0;
+ } else {
+ it = 0;
+ }
+ }
+ } else {
+ delete it;
+ }
+ return true;
+}
+
+void KviAliasEditor::removeSelectedItems()
+{
+ KviPointerList<KviAliasEditorListViewItem> l;
+ l.setAutoDelete(false);
+ appendSelectedItems(&l,(KviAliasEditorListViewItem *)(m_pListView->firstChild()),false);
+
+ bool bYesToAll = false;
+
+ for(KviAliasEditorListViewItem *it = l.first();it;it = l.next())
+ {
+ if(!removeItem(it,&bYesToAll,false))return;
+ }
+}
+
+QString KviAliasEditor::askForAliasName(const QString &szAction,const QString &szText,const QString &szInitialText)
+{
+ bool bOk = false;
+ QString szNewName;
+ while(szNewName.isEmpty())
+ {
+ g_pAliasEditorModule->lock();
+ szNewName = QInputDialog::getText(
+ szAction,
+ szText,
+ QLineEdit::Normal,
+ szInitialText,
+ &bOk,
+ this);
+ g_pAliasEditorModule->unlock();
+ if(!bOk)return QString::null;
+ if(szNewName.isEmpty())
+ {
+ g_pAliasEditorModule->lock();
+ QMessageBox::warning(this,
+ __tr2qs("Missing Alias Name"),
+ __tr2qs("You must specify a valid name for the alias"),
+ __tr2qs("Ok, Let me try again..."));
+ g_pAliasEditorModule->unlock();
+ continue;
+ }
+
+ // we allow only [\w:]+
+ QRegExp re("[\\w:]+");
+ if(!re.exactMatch(szNewName))
+ {
+ g_pAliasEditorModule->lock();
+ QMessageBox::information(this,
+ __tr2qs("Bad Alias Name"),
+ __tr2qs("Alias names can contain only letters, digits, underscores and '::' namespace separators"),
+ __tr2qs("Ok, Let me try again..."));
+ g_pAliasEditorModule->unlock();
+ szNewName = "";
+ continue;
+ }
+ // make sure that we have only doubled "::" and not ":" or ":::..."
+ QString tmp = szNewName;
+ tmp.replace("::","@"); // @ is not allowed by the rule above
+ if(tmp.find(":") != -1)
+ {
+ g_pAliasEditorModule->lock();
+ QMessageBox::information(this,
+ __tr2qs("Bad Alias Name"),
+ __tr2qs("Stray ':' character in alias name: did you mean ...<namespace>::<name> ?"),
+ __tr2qs("Ok, Let me try again..."));
+ g_pAliasEditorModule->unlock();
+ szNewName = "";
+ continue;
+ }
+ if(tmp.find("@@") != -1)
+ {
+ g_pAliasEditorModule->lock();
+ QMessageBox::information(this,
+ __tr2qs("Bad Alias Name"),
+ __tr2qs("Found an empty namespace in alias name"),
+ __tr2qs("Ok, Let me try again..."));
+ g_pAliasEditorModule->unlock();
+ szNewName = "";
+ continue;
+ }
+ }
+ return szNewName;
+}
+
+QString KviAliasEditor::askForNamespaceName(const QString &szAction,const QString &szText,const QString &szInitialText)
+{
+ bool bOk = false;
+ QString szNewName;
+ while(szNewName.isEmpty())
+ {
+ g_pAliasEditorModule->lock();
+ szNewName = QInputDialog::getText(
+ szAction,
+ szText,
+ QLineEdit::Normal,
+ szInitialText,
+ &bOk,
+ this);
+ g_pAliasEditorModule->unlock();
+ if(!bOk)return QString::null;
+ if(szNewName.isEmpty())
+ {
+ g_pAliasEditorModule->lock();
+ QMessageBox::warning(this,
+ __tr2qs("Missing Namespace Name"),
+ __tr2qs("You must specify a valid name for the namespace"),
+ __tr2qs("Ok, Let me try again..."));
+ g_pAliasEditorModule->unlock();
+ continue;
+ }
+
+ // we allow only [\w:]+
+ QRegExp re("[\\w:]+");
+ if(!re.exactMatch(szNewName))
+ {
+ g_pAliasEditorModule->lock();
+ QMessageBox::information(this,
+ __tr2qs("Bad Namespace Name"),
+ __tr2qs("Namespace names can contain only letters, digits, underscores and '::' namespace separators"),
+ __tr2qs("Ok, Let me try again..."));
+ g_pAliasEditorModule->unlock();
+ szNewName = "";
+ continue;
+ }
+ // make sure that we have only doubled "::" and not ":" or ":::..."
+ QString tmp = szNewName;
+ tmp.replace("::","@"); // @ is not allowed by the rule above
+ if(tmp.find(":") != -1)
+ {
+ g_pAliasEditorModule->lock();
+ QMessageBox::information(this,
+ __tr2qs("Bad Namespace Name"),
+ __tr2qs("Stray ':' character in namespace name: did you mean ...<namespace>::<name> ?"),
+ __tr2qs("Ok, Let me try again..."));
+ g_pAliasEditorModule->unlock();
+ szNewName = "";
+ continue;
+ }
+ if(tmp.find("@@") != -1)
+ {
+ g_pAliasEditorModule->lock();
+ QMessageBox::information(this,
+ __tr2qs("Bad Namespace Name"),
+ __tr2qs("Found an empty namespace in namespace name"),
+ __tr2qs("Ok, Let me try again..."));
+ g_pAliasEditorModule->unlock();
+ szNewName = "";
+ continue;
+ }
+ }
+ return szNewName;
+}
+
+void KviAliasEditor::openParentItems(KviTalListViewItem * it)
+{
+ if(it->parent())
+ {
+ it->parent()->setOpen(true);
+ openParentItems(it->parent());
+ }
+}
+
+
+void KviAliasEditor::selectOneItem(KviTalListViewItem * it,KviTalListViewItem *pStartFrom)
+{
+ if(!pStartFrom)return;
+ if(pStartFrom == it)pStartFrom->setSelected(true);
+ else pStartFrom->setSelected(false);
+ selectOneItem(it,pStartFrom->firstChild());
+ selectOneItem(it,pStartFrom->nextSibling());
+}
+
+
+void KviAliasEditor::activateItem(KviTalListViewItem * it)
+{
+ openParentItems(it);
+ selectOneItem(it,m_pListView->firstChild());
+ m_pListView->setCurrentItem(it);
+}
+
+
+void KviAliasEditor::newAlias()
+{
+ if(m_pLastClickedItem)
+ {
+ if(!itemExists(m_pLastClickedItem,m_pListView->firstChild()))return; // dead ?
+ if(m_pLastClickedItem->isAlias())
+ m_pLastClickedItem = m_pLastClickedItem->parentNamespaceItem();
+ }
+
+ QString szNewName = askForAliasName(__tr2qs("Add Alias"),__tr2qs("Please enter the name for the new alias"),"myfunction");
+ if(szNewName.isEmpty())return;
+
+ getUniqueItemName(m_pLastClickedItem,szNewName,KviAliasEditorListViewItem::Alias);
+
+ KviAliasListViewItem * it;
+
+ if(m_pLastClickedItem)
+ it = ((KviAliasNamespaceListViewItem *)m_pLastClickedItem)->createFullAliasItem(szNewName);
+ else
+ it = createFullAliasItem(szNewName);
+
+ activateItem(it);
+}
+
+void KviAliasEditor::newNamespace()
+{
+ if(m_pLastClickedItem)
+ {
+ if(!itemExists(m_pLastClickedItem,m_pListView->firstChild()))return; // dead ?
+ if(m_pLastClickedItem->isAlias())
+ m_pLastClickedItem = m_pLastClickedItem->parentNamespaceItem();
+ }
+
+
+ QString szNewName = askForNamespaceName(__tr2qs("Add Namespace"),__tr2qs("Please enter the name for the new namespace"),"mynamespace");
+ if(szNewName.isEmpty())return;
+
+ getUniqueItemName(m_pLastClickedItem,szNewName,KviAliasEditorListViewItem::Namespace);
+
+ KviAliasNamespaceListViewItem * it;
+
+ if(m_pLastClickedItem)
+ it = ((KviAliasNamespaceListViewItem *)m_pLastClickedItem)->createFullNamespaceItem(szNewName);
+ else
+ it = createFullNamespaceItem(szNewName);
+
+ activateItem(it);
+}
+
+bool KviAliasEditor::aliasExists(QString &szFullItemName)
+{
+ KviPointerList<KviAliasListViewItem> l;
+ l.setAutoDelete(false);
+
+ appendAliasItems(&l,(KviAliasEditorListViewItem *)(m_pListView->firstChild()),false);
+ for(KviAliasListViewItem * it = l.first();it;it = l.next())
+ {
+ if (KviQString::equalCI(buildFullItemName(it),szFullItemName))
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
+bool KviAliasEditor::namespaceExists(QString &szFullItemName)
+{
+ KviPointerList<KviAliasListViewItem> l;
+ l.setAutoDelete(false);
+
+ appendNamespaceItems(&l,(KviAliasEditorListViewItem *)(m_pListView->firstChild()),false);
+ for(KviAliasListViewItem * it = l.first();it;it = l.next())
+ {
+ if (KviQString::equalCI(buildFullItemName(it),szFullItemName))
+ {
+ return true;
+ }
+ }
+ return false;
+}
+void KviAliasEditor::renameItem()
+{
+ if(!m_pLastEditedItem)return;
+ if(!itemExists(m_pLastEditedItem,m_pListView->firstChild()))return; // dead ?
+
+ QString szName = buildFullItemName(m_pLastEditedItem);
+ QString szNewName;
+
+ bool bAlias = m_pLastEditedItem->isAlias();
+
+ if(bAlias)
+ szNewName = askForAliasName(__tr2qs("Rename Alias"),__tr2qs("Please enter the new name for the alias"),szName);
+ else
+ szNewName = askForNamespaceName(__tr2qs("Rename Namespace"),__tr2qs("Please enter the new name for the namespace"),szName);
+ if(szNewName.isEmpty())return;
+
+ if(szName == szNewName)return;
+
+ // check if there is already an alias with this name
+ if (bAlias)
+ {
+ if (aliasExists(szNewName))
+ {
+ g_pAliasEditorModule->lock();
+ QMessageBox::information(this,
+ __tr2qs("Alias already exists"),
+ __tr2qs("This name is already in use. Please choose another one."),
+ __tr2qs("Ok, Let me try again..."));
+ g_pAliasEditorModule->unlock();
+ return;
+ }
+ } else {
+ // check if there is already a anmespace with this name
+ if (namespaceExists(szNewName))
+ {
+ g_pAliasEditorModule->lock();
+ QMessageBox::information(this,
+ __tr2qs("Namespace already exists"),
+ __tr2qs("This name is already in use. Please choose another one."),
+ __tr2qs("Ok, let me try again..."));
+ g_pAliasEditorModule->unlock();
+ return;
+ }
+ }
+
+ QString szCode;
+ QPoint pntCursor;
+ if(bAlias)
+ {
+ m_pEditor->getText(szCode);
+ pntCursor = m_pEditor->getCursor();
+ }
+
+ // take child items, if any
+ KviPointerList<KviTalListViewItem> lChildren;
+ lChildren.setAutoDelete(false);
+ KviTalListViewItem * it = m_pLastEditedItem->firstChild();
+ while(it)
+ {
+ lChildren.append(it);
+ it = it->nextSibling();
+ }
+ for(it = lChildren.first();it;it = lChildren.next())
+ m_pLastEditedItem->takeItem(it);
+
+ bool bYesToAll = true;
+ removeItem(m_pLastEditedItem,&bYesToAll,true);
+
+ m_pLastEditedItem = 0; // make sure it's true (but it already should be because of removeItem())
+ m_pLastClickedItem = 0; // make sure it's true (but it already should be because of removeItem())
+
+ if(bAlias)
+ {
+ KviAliasListViewItem * ait = createFullAliasItem(szNewName);
+ ait->setBuffer(szCode);
+ ait->setCursorPosition(pntCursor);
+ activateItem(ait);
+
+ for(it = lChildren.first();it;it = lChildren.next())
+ ait->insertItem(it);
+ } else {
+ KviAliasNamespaceListViewItem * nit = createFullNamespaceItem(szNewName);
+ activateItem(nit);
+
+ for(it = lChildren.first();it;it = lChildren.next())
+ {
+ ((KviAliasEditorListViewItem*)it)->setParentNamespaceItem(nit);
+ nit->insertItem(it);
+ }
+ }
+}
+
+// warning: this saves ONLY the body, not the name!
+// the name is changed explicitly with renameItem(), when needed
+void KviAliasEditor::saveLastEditedItem()
+{
+ if(!m_pLastEditedItem)return;
+ if(!m_pEditor->isModified())return; // nothing to save
+ if(!itemExists(m_pLastEditedItem,m_pListView->firstChild()))return; // dead ?
+
+ if(m_pLastEditedItem->isNamespace())return;
+
+ QString newCode;
+ m_pEditor->getText(newCode);
+ ((KviAliasListViewItem *)m_pLastEditedItem)->setBuffer(newCode);
+ ((KviAliasListViewItem *)m_pLastEditedItem)->setCursorPosition(m_pEditor->getCursor());
+}
+
+void KviAliasEditor::currentItemChanged(KviTalListViewItem *it)
+{
+ saveLastEditedItem();
+
+ m_pLastEditedItem = (KviAliasEditorListViewItem *)it;
+
+ if(!m_pLastEditedItem)
+ {
+ m_pNameLabel->setText(__tr2qs("No item selected"));
+ m_pRenameButton->setEnabled(false);
+ m_pEditor->setText("");
+ m_pEditor->setEnabled(false);
+ return;
+ }
+
+ QString szNam = buildFullItemName(m_pLastEditedItem);
+ if(m_pLastEditedItem->isNamespace())
+ {
+ QString szLabelText = __tr2qs("Namespace");
+ szLabelText += ": <b>";
+ szLabelText += szNam;
+ szLabelText += "</b>";
+ m_pNameLabel->setText(szLabelText);
+ m_pRenameButton->setEnabled(true);
+ m_pEditor->setText("");
+ m_pEditor->setEnabled(false);
+ return;
+ }
+
+ QString szLabelText = __tr2qs("Alias");
+ szLabelText += ": <b>";
+ szLabelText += szNam;
+ szLabelText += "</b>";
+ m_pNameLabel->setText(szLabelText);
+ m_pRenameButton->setEnabled(true);
+ m_pEditor->setText(((KviAliasListViewItem *)it)->buffer());
+ m_pEditor->setCursorPosition(((KviAliasListViewItem *)it)->cursorPosition());
+ m_pEditor->setEnabled(true);
+}
+
+void KviAliasEditor::recursiveCommit(KviAliasEditorListViewItem * it)
+{
+ if(!it)return;
+ if(it->isAlias())
+ {
+ QString szName = buildFullItemName(it);
+ //debug("ADDING %s",szName.latin1());
+ // WARNING: On MSVC operator new here is valid ONLY because
+ // KviKvsScript has a non virtual detructor!
+ KviKvsScript * a = new KviKvsScript(szName,((KviAliasListViewItem *)it)->buffer());
+ KviKvsAliasManager::instance()->add(szName,a);
+ } else {
+ recursiveCommit((KviAliasEditorListViewItem *)(it->firstChild()));
+ }
+ recursiveCommit((KviAliasEditorListViewItem *)(it->nextSibling()));
+}
+
+
+void KviAliasEditor::commit()
+{
+ saveLastEditedItem();
+ KviKvsAliasManager::instance()->clear();
+
+ recursiveCommit((KviAliasEditorListViewItem *)(m_pListView->firstChild()));
+
+ g_pApp->saveAliases();
+}
+
+
+void KviAliasEditor::getUniqueItemName(KviAliasEditorListViewItem *item,QString &buffer,KviAliasEditorListViewItem::Type eType)
+{
+ QString ret;
+
+ int idx = 0;
+ KviAliasEditorListViewItem * found;
+
+ for(;;)
+ {
+ ret = buffer;
+ if(idx > 0)
+ {
+ QString tmp;
+ tmp.setNum(idx);
+ ret.append(tmp);
+ }
+
+ if(item)
+ {
+ if(!item->isNamespace())
+ {
+ buffer = ret;
+ return;
+ }
+
+ if(eType == KviAliasEditorListViewItem::Namespace)
+ found = ((KviAliasNamespaceListViewItem *)item)->findNamespaceItem(ret);
+ else
+ found = ((KviAliasNamespaceListViewItem *)item)->findAliasItem(ret);
+ } else {
+ if(eType == KviAliasEditorListViewItem::Namespace)
+ found = findNamespaceItem(ret);
+ else
+ found = findAliasItem(ret);
+ }
+
+ if(!found)
+ {
+ buffer = ret;
+ return;
+ }
+
+ idx++;
+ }
+}
+
+
+
+
+KviAliasEditorWindow::KviAliasEditorWindow(KviFrame * lpFrm)
+: KviWindow(KVI_WINDOW_TYPE_SCRIPTEDITOR,lpFrm,"aliaseditor",0)
+{
+ g_pAliasEditorWindow = this;
+
+ setFixedCaption(__tr2qs("Alias Editor"));
+
+ m_pEditor = new KviAliasEditor(this);
+
+ m_pBase = new QWidget(this);
+ QGridLayout * g = new QGridLayout(m_pBase,1,4,4,4);
+
+ QPushButton * btn = new QPushButton(__tr2qs("&OK"),m_pBase);
+ connect(btn,SIGNAL(clicked()),this,SLOT(okClicked()));
+ btn->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ACCEPT)));
+ g->addWidget(btn,0,1);
+
+ btn = new QPushButton(__tr2qs("&Apply"),m_pBase);
+ connect(btn,SIGNAL(clicked()),this,SLOT(applyClicked()));
+ btn->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ACCEPT)));
+ g->addWidget(btn,0,2);
+
+ btn = new QPushButton(__tr2qs("Cancel"),m_pBase);
+ connect(btn,SIGNAL(clicked()),this,SLOT(cancelClicked()));
+ btn->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DISCARD)));
+ g->addWidget(btn,0,3);
+
+ g->setColStretch(0,1);
+}
+
+KviAliasEditorWindow::~KviAliasEditorWindow()
+{
+ g_pAliasEditorWindow = 0;
+}
+
+void KviAliasEditorWindow::okClicked()
+{
+ m_pEditor->commit();
+ close();
+}
+
+void KviAliasEditorWindow::applyClicked()
+{
+ m_pEditor->commit();
+}
+
+void KviAliasEditorWindow::cancelClicked()
+{
+ close();
+}
+
+
+QPixmap * KviAliasEditorWindow::myIconPtr()
+{
+ return g_pIconManager->getSmallIcon(KVI_SMALLICON_ALIAS);
+}
+
+void KviAliasEditorWindow::resizeEvent(QResizeEvent *e)
+{
+ int hght = m_pBase->sizeHint().height();
+ m_pEditor->setGeometry(0,0,width(),height()- hght);
+ m_pBase->setGeometry(0,height() - hght,width(),hght);
+}
+
+
+void KviAliasEditorWindow::getConfigGroupName(KviStr &szName)
+{
+ szName = "aliaseditor";
+}
+
+
+void KviAliasEditorWindow::saveProperties(KviConfig *cfg)
+{
+ m_pEditor->saveProperties(cfg);
+}
+
+
+
+void KviAliasEditorWindow::loadProperties(KviConfig *cfg)
+{
+ m_pEditor->loadProperties(cfg);
+}
diff --git a/src/modules/aliaseditor/aliaseditor.h b/src/modules/aliaseditor/aliaseditor.h
new file mode 100644
index 00000000..fa49fc96
--- /dev/null
+++ b/src/modules/aliaseditor/aliaseditor.h
@@ -0,0 +1,197 @@
+#ifndef _ALIASEDITOR_H_
+#define _ALIASEDITOR_H_
+//=====================================================================================
+//
+// File : aliaseditor.h
+// Creation date : Mon Dec 23 2002 14:35:55 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the linkss of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=====================================================================================
+
+#include "kvi_window.h"
+#include "kvi_string.h"
+#include "kvi_pointerlist.h"
+
+
+#include <qwidget.h>
+#include "kvi_tal_listview.h"
+#include <qlineedit.h>
+#include "kvi_tal_popupmenu.h"
+#include <qstringlist.h>
+#include <qpushbutton.h>
+#include <qlabel.h>
+
+class KviScriptEditor;
+class KviAliasNamespaceListViewItem;
+
+
+class KviAliasEditorListViewItem : public KviTalListViewItem
+{
+public:
+ enum Type { Alias, Namespace };
+public:
+ KviAliasEditorListViewItem(KviTalListView * pListView,Type eType,const QString &szName);
+ KviAliasEditorListViewItem(KviAliasNamespaceListViewItem * pParentNamespaceItem,Type eType,const QString &szName);
+ ~KviAliasEditorListViewItem(){};
+protected:
+ Type m_eType;
+ KviAliasNamespaceListViewItem * m_pParentNamespaceItem;
+ QString m_szName;
+public:
+ const QString & name(){ return m_szName; };
+ void setName(const QString &szName);
+ Type type(){ return m_eType; };
+ bool isAlias(){ return m_eType == Alias; };
+ bool isNamespace(){ return m_eType == Namespace; };
+ void setParentNamespaceItem(KviAliasNamespaceListViewItem* it){ m_pParentNamespaceItem=it; };
+ KviAliasNamespaceListViewItem * parentNamespaceItem(){ return m_pParentNamespaceItem; };
+ virtual QString key(int column,bool bAsc) const;
+};
+
+class KviAliasListViewItem;
+
+class KviAliasNamespaceListViewItem : public KviAliasEditorListViewItem
+{
+public:
+ KviAliasNamespaceListViewItem(KviTalListView * pListView,const QString &szName);
+ KviAliasNamespaceListViewItem(KviAliasNamespaceListViewItem * pParentNamespace,const QString &szName);
+ ~KviAliasNamespaceListViewItem(){};
+public:
+ KviAliasNamespaceListViewItem * findNamespaceItem(const QString &szName);
+ KviAliasNamespaceListViewItem * getNamespaceItem(const QString &szName);
+ KviAliasListViewItem * findAliasItem(const QString &szName);
+ KviAliasListViewItem * getAliasItem(const QString &szName);
+ KviAliasListViewItem * createFullAliasItem(const QString &szFullName);
+ KviAliasNamespaceListViewItem * createFullNamespaceItem(const QString &szFullName);
+};
+
+
+class KviAliasListViewItem : public KviAliasEditorListViewItem
+{
+public:
+ KviAliasListViewItem(KviAliasNamespaceListViewItem * pParentNamespace,const QString &szName);
+ KviAliasListViewItem(KviTalListView *pListView,const QString &szName);
+ ~KviAliasListViewItem(){};
+public:
+ QString m_szBuffer;
+ QPoint m_cPos;
+public:
+ const QString & buffer(){ return m_szBuffer; };
+ const QPoint & cursorPosition(){ return m_cPos; };
+ void setBuffer(const QString &szBuffer){ m_szBuffer = szBuffer; };
+ void setCursorPosition(const QPoint &cPos){ m_cPos = cPos; };
+};
+
+class QSplitter;
+
+class KviAliasEditor : public QWidget
+{
+ Q_OBJECT
+public:
+ KviAliasEditor(QWidget * par);
+ ~KviAliasEditor();
+public:
+ KviScriptEditor * m_pEditor;
+ KviTalListView * m_pListView;
+ QLabel * m_pNameLabel;
+ QPushButton * m_pRenameButton;
+ KviAliasEditorListViewItem * m_pLastEditedItem;
+ KviAliasEditorListViewItem * m_pLastClickedItem;
+ //KviAliasListViewItem * m_pLastEditedItem;
+ KviTalPopupMenu * m_pContextPopup;
+ QSplitter * m_pSplitter;
+ QString m_szDir;
+public:
+ //bool modified(){ return m_bModified; };
+ void commit();
+ void exportAliases(bool,bool=false);
+ void exportSelectionInSinglesFiles(KviPointerList<KviAliasListViewItem> *l);
+
+ void saveProperties(KviConfig *);
+ void loadProperties(KviConfig *);
+ static void splitFullAliasOrNamespaceName(const QString &szFullName,QStringList &lNamespaces,QString &szName);
+protected slots:
+ void currentItemChanged(KviTalListViewItem *it);
+ void newAlias();
+ void newNamespace();
+ void exportAll();
+ void exportSelectedSepFiles();
+ void exportSelected();
+ void removeSelectedItems();
+ void itemPressed(KviTalListViewItem *it,const QPoint &pnt,int col);
+ void renameItem();
+ void slotFind();
+ void slotCollapseNamespaces();
+ void slotFindWord(const QString &);
+ void slotReplaceAll(const QString &before,const QString &after);
+protected:
+// QString const & findWord(const QString &txt,bool);
+ void recursiveCollapseNamespaces(KviAliasEditorListViewItem * it);
+ void recursiveSearchReplace(const QString &szSearch,KviAliasEditorListViewItem * it,bool bReplace=false,const QString &szReplace="n");
+
+ void recursiveCommit(KviAliasEditorListViewItem * it);
+ void getExportAliasBuffer(QString &buffer,KviAliasListViewItem * it);
+ void oneTimeSetup();
+ void selectOneItem(KviTalListViewItem * it,KviTalListViewItem *pStartFrom);
+ void saveLastEditedItem();
+ void getUniqueItemName(KviAliasEditorListViewItem *item,QString &buffer,KviAliasEditorListViewItem::Type eType);
+ void appendSelectedItems(KviPointerList<KviAliasEditorListViewItem> * l,KviAliasEditorListViewItem * pStartFrom,bool bIncludeChildrenOfSelected = false);
+ void appendAliasItems(KviPointerList<KviAliasListViewItem> * l,KviAliasEditorListViewItem * pStartFrom,bool bSelectedOnly);
+ void appendNamespaceItems(KviPointerList<KviAliasListViewItem> * l,KviAliasEditorListViewItem * pStartFrom,bool bSelectedOnly);
+ bool removeItem(KviAliasEditorListViewItem *it,bool * pbYesToAll,bool bDeleteEmptyTree);
+ void openParentItems(KviTalListViewItem * it);
+ void activateItem(KviTalListViewItem * it);
+ QString askForAliasName(const QString &szAction,const QString &szText,const QString &szInitialText);
+ QString askForNamespaceName(const QString &szAction,const QString &szText,const QString &szInitialText);
+ bool itemExists(KviTalListViewItem *pSearchFor,KviTalListViewItem * pSearchAt);
+ bool namespaceExists(QString &szFullItemName);
+ bool aliasExists(QString &szFullItemName);
+ bool hasSelectedItems(KviTalListViewItem * it);
+ KviAliasNamespaceListViewItem * findNamespaceItem(const QString &szName);
+ KviAliasNamespaceListViewItem * getNamespaceItem(const QString &szName);
+ KviAliasListViewItem * findAliasItem(const QString &szName);
+ KviAliasListViewItem * getAliasItem(const QString &szName);
+ KviAliasListViewItem * createFullAliasItem(const QString &szFullName);
+ KviAliasNamespaceListViewItem * createFullNamespaceItem(const QString &szFullName);
+ QString buildFullItemName(KviAliasEditorListViewItem * it);
+};
+
+
+class KviAliasEditorWindow : public KviWindow
+{
+ Q_OBJECT
+public:
+ KviAliasEditorWindow(KviFrame * lpFrm);
+ ~KviAliasEditorWindow();
+protected:
+ KviAliasEditor * m_pEditor;
+ QWidget * m_pBase;
+protected:
+ virtual QPixmap * myIconPtr();
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual void getConfigGroupName(KviStr &szName);
+ virtual void saveProperties(KviConfig *);
+ virtual void loadProperties(KviConfig *);
+protected slots:
+ void cancelClicked();
+ void okClicked();
+ void applyClicked();
+};
+
+#endif //_ALIASEDITOR_H_
diff --git a/src/modules/aliaseditor/libkvialiaseditor.cpp b/src/modules/aliaseditor/libkvialiaseditor.cpp
new file mode 100644
index 00000000..079197c7
--- /dev/null
+++ b/src/modules/aliaseditor/libkvialiaseditor.cpp
@@ -0,0 +1,90 @@
+//==========================================================================================
+//
+// File : libkvialiaseditor.cpp
+// Creation date : Mon 23 Dec 2002 14:30:59 2002 GMT by Szymon Stefanek
+//
+// This toolbar is part of the KVirc irc client distribution
+// Copyright (C) 2002-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//==========================================================================================
+
+#include "kvi_module.h"
+#include "kvi_locale.h"
+#include "kvi_frame.h"
+
+#include "aliaseditor.h"
+KviAliasEditorWindow * g_pAliasEditorWindow = 0;
+KviModule * g_pAliasEditorModule = 0;
+
+
+/*
+ @doc: aliaseditor.open
+ @type:
+ command
+ @title:
+ aliaseditor.open
+ @short:
+ Shows the alias editor
+ @syntax:
+ aliaseditor.open
+ @description:
+ Opens the script alias editor dialog.
+*/
+
+static bool aliaseditor_kvs_cmd_open(KviKvsModuleCommandCall * c)
+{
+ if(!g_pAliasEditorWindow)
+ {
+ g_pAliasEditorWindow = new KviAliasEditorWindow(c->window()->frame());
+ c->window()->frame()->addWindow(g_pAliasEditorWindow);
+ }
+
+ g_pAliasEditorWindow->setFocus();
+
+ return true;
+}
+
+static bool aliaseditor_module_init(KviModule * m)
+{
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"open",aliaseditor_kvs_cmd_open);
+ g_pAliasEditorWindow = 0;
+ g_pAliasEditorModule = m;
+ return true;
+}
+
+static bool aliaseditor_module_can_unload(KviModule * m)
+{
+ return (g_pAliasEditorWindow == 0);
+}
+
+static bool aliaseditor_module_cleanup(KviModule *m)
+{
+ if(g_pAliasEditorWindow)delete g_pAliasEditorWindow;
+ g_pAliasEditorWindow = 0;
+ return true;
+}
+
+KVIRC_MODULE(
+ "AliasEditor", // module name
+ "2.0.0", // module version
+ "Copyright (C) 2002-2005 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "Editor for the script aliases",
+ aliaseditor_module_init,
+ aliaseditor_module_can_unload,
+ 0,
+ aliaseditor_module_cleanup
+)
diff --git a/src/modules/avatar/Makefile.am b/src/modules/avatar/Makefile.am
new file mode 100644
index 00000000..8e8a793a
--- /dev/null
+++ b/src/modules/avatar/Makefile.am
@@ -0,0 +1,20 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkviavatar.la
+
+libkviavatar_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkviavatar_la_SOURCES = libkviavatar.cpp
+nodist_libkviavatar_la_SOURCES = moc_libkviavatar.cpp
+
+libkviavatar_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS = libkviavatar.h
+
+moc_%.cpp: %.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/avatar/libkviavatar.cpp b/src/modules/avatar/libkviavatar.cpp
new file mode 100644
index 00000000..e97b1f67
--- /dev/null
+++ b/src/modules/avatar/libkviavatar.cpp
@@ -0,0 +1,585 @@
+//=============================================================================
+//
+// File : libkviavatar.cpp
+// Creation date : Thu Nov 12 02:32:59 2004 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "libkviavatar.h"
+
+#include "kvi_module.h"
+#include "kvi_fileutils.h"
+#include "kvi_locale.h"
+#include "kvi_malloc.h"
+#include "kvi_app.h"
+#include "kvi_options.h"
+#include "kvi_http.h"
+#include "kvi_iconmanager.h"
+#include "kvi_avatar.h"
+#include "kvi_ircuserdb.h"
+
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectionuserinfo.h"
+#include "kvi_console.h"
+#include "kvi_filedialog.h"
+#include "kvi_pointerlist.h"
+#include "kvi_frame.h"
+#include "kvi_sharedfiles.h"
+#include "kvi_out.h"
+#include "kvi_ircmask.h"
+#include "kvi_qcstring.h"
+
+#include <qlineedit.h>
+#include <qpushbutton.h>
+#include <qmessagebox.h>
+#include <qtimer.h>
+#include <qlabel.h>
+#include "kvi_tal_hbox.h"
+#include <qlayout.h>
+
+static KviPointerList<KviAsyncAvatarSelectionDialog> * g_pAvatarSelectionDialogList = 0;
+extern KVIRC_API KviSharedFilesManager * g_pSharedFilesManager;
+
+KviAsyncAvatarSelectionDialog::KviAsyncAvatarSelectionDialog(QWidget * par,const QString &szInitialPath,KviIrcConnection * c)
+: QDialog(par,0,false,Qt::WType_Dialog | Qt::WStyle_DialogBorder | Qt::WStyle_StaysOnTop)
+{
+ g_pAvatarSelectionDialogList->append(this);
+
+ m_pConnection = c;
+
+ setCaption(__tr2qs("Choose Avatar - KVIrc"));
+
+ QGridLayout * g = new QGridLayout(this,3,3,4,8);
+
+ QString msg = "<center>";
+ msg += __tr2qs("Please select an avatar image. " \
+ "The full path to a local file or an image on the Web can be used.<br>" \
+ "If you wish to use a local image file, click the \"<b>Browse</b>\"" \
+ "button to browse local folders.<br>" \
+ "The full URL for an image (including <b>http://</b>) can be entered manually.");
+ msg += "</center><br>";
+
+ QLabel * l = new QLabel(msg,this);
+ l->setMinimumWidth(250);
+
+ g->addMultiCellWidget(l,0,0,0,2);
+
+ m_pLineEdit = new QLineEdit(this);
+ m_pLineEdit->setText(szInitialPath);
+ m_pLineEdit->setMinimumWidth(180);
+
+ g->addMultiCellWidget(m_pLineEdit,1,1,0,1);
+
+ QPushButton * b = new QPushButton(__tr2qs("&Browse..."),this);
+ connect(b,SIGNAL(clicked()),this,SLOT(chooseFileClicked()));
+ g->addWidget(b,1,2);
+ KviTalHBox * h = new KviTalHBox(this);h->setSpacing(8);g->addMultiCellWidget(h,2,2,1,2);
+ b = new QPushButton(__tr2qs("&OK"),h);
+ b->setMinimumWidth(80);
+ b->setDefault(true);
+ connect(b,SIGNAL(clicked()),this,SLOT(okClicked()));
+
+ b = new QPushButton(__tr2qs("Cancel"),h);
+ b->setMinimumWidth(80);
+ connect(b,SIGNAL(clicked()),this,SLOT(cancelClicked()));
+
+ g->setRowStretch(0,1);
+ g->setColStretch(0,1);
+}
+
+KviAsyncAvatarSelectionDialog::~KviAsyncAvatarSelectionDialog()
+{
+ g_pAvatarSelectionDialogList->removeRef(this);
+}
+
+void KviAsyncAvatarSelectionDialog::okClicked()
+{
+ m_szAvatarName = m_pLineEdit->text();
+
+ if(!g_pApp->connectionExists(m_pConnection))return; // the connection no longer exists :/
+
+ if(!m_szAvatarName.isEmpty())
+ {
+ QString tmp = m_szAvatarName;
+ tmp.replace("\\","\\\\");
+ QString szBuffer=QString("avatar.set \"%1\"").arg(tmp);
+ KviKvsScript::run(szBuffer,m_pConnection->console());
+ }
+
+ accept();
+ deleteLater();
+}
+
+void KviAsyncAvatarSelectionDialog::cancelClicked()
+{
+ reject();
+ deleteLater();
+}
+
+void KviAsyncAvatarSelectionDialog::chooseFileClicked()
+{
+ QString tmp;
+ if(KviFileDialog::askForOpenFileName(tmp,__tr2qs("Choose an Image File - KVIrc")))
+ {
+ m_pLineEdit->setText(tmp);
+ }
+}
+
+void KviAsyncAvatarSelectionDialog::closeEvent(QCloseEvent * e)
+{
+ e->ignore();
+ reject();
+ deleteLater();
+}
+
+/*
+ @doc: avatar.set
+ @type:
+ command
+ @title:
+ avatar.set
+ @keyterms:
+ setting your avatar, avatar
+ @short:
+ Sets the local user's avatar
+ @syntax:
+ avatar.set [avatar:string]
+ @description:
+ Sets your avatar in the current connection to <avatar>.
+ <avatar> may be a local filename or a http url.[br]
+ If avatar is an empty string then an asynchronous dialog
+ will be opened that will allow choosing an avatar.[br]
+ Note that this command does NOT notify the avatar to
+ any target: use [cmd]avatar.notify[/cmd] for that purpose.
+ Note also that this will NOT set your default avatar
+ option: you must use the options dialog for that.[br]
+ @examples:
+ [example]
+ avatar.set /home/myavatar.png
+ avatar.set http://www.kvirc.net/img/pragma.png
+ [/example]
+ @seealso:
+ [cmd]avatar.unset[/cmd]
+*/
+
+static bool avatar_kvs_cmd_set(KviKvsModuleCommandCall * c)
+{
+ QString szAvatar;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("avatar",KVS_PT_NONEMPTYSTRING,KVS_PF_OPTIONAL,szAvatar)
+ KVSM_PARAMETERS_END(c)
+
+ KVSM_REQUIRE_CONNECTION(c)
+
+ QString absPath;
+
+ if(szAvatar.isEmpty())
+ {
+ KviAsyncAvatarSelectionDialog * d = new KviAsyncAvatarSelectionDialog(g_pFrame,QString::null,c->window()->connection());
+ d->show();
+ return true;
+ }
+
+ // new avatar specified...try to load it
+
+ KviIrcUserEntry * e = c->window()->connection()->userDataBase()->find(c->window()->connection()->currentNickName());
+ if(!e)
+ {
+ c->warning(__tr2qs("Internal error: I'm not in the user database ?"));
+ return true;
+ }
+
+ KviAvatar * av = g_pIconManager->getAvatar(QString::null,szAvatar);
+ if(av)
+ {
+ // Ok...got it...
+ e->setAvatar(av);
+ c->window()->console()->avatarChanged(av,
+ c->window()->connection()->userInfo()->nickName(),
+ c->window()->connection()->userInfo()->userName(),
+ c->window()->connection()->userInfo()->hostName(),
+ QString::null);
+ } else {
+ bool bIsUrl = KviQString::equalCIN(szAvatar,"http://",7) && (szAvatar.length() > 7);
+
+ if(bIsUrl)
+ {
+ // This is an url, and we don't have a cached copy for now
+ QString szLocalFilePath;
+ QString szLocalFile = szAvatar;
+ g_pIconManager->urlToCachedFileName(szLocalFile);
+ g_pApp->getLocalKvircDirectory(szLocalFilePath,KviApp::Avatars,szLocalFile);
+
+ szLocalFilePath.replace("\\","\\\\");
+
+ QString szCommand = "http.get -w=nm ";
+ szCommand += szAvatar;
+ szCommand += " ";
+ szCommand += szLocalFilePath;
+
+ if(KviKvsScript::run(szCommand,c->window()->console()))
+ {
+ g_pApp->setAvatarOnFileReceived(c->window()->console(),
+ szAvatar,
+ c->window()->connection()->userInfo()->nickName(),
+ c->window()->connection()->userInfo()->userName(),
+ c->window()->connection()->userInfo()->hostName());
+ } else {
+ c->warning(__tr2qs("Can't set the current avatar to '%Q': failed to start the http transfer"),&szAvatar);
+ return true;
+ }
+ } else {
+ c->warning(__tr2qs("Can't set the current avatar to '%Q': can't load the image"),&szAvatar);
+ return true;
+ }
+ }
+
+ return true;
+}
+
+
+/*
+ @doc: avatar.unset
+ @type:
+ command
+ @title:
+ avatar.unset
+ @short:
+ Unsets the local user's avatar
+ @syntax:
+ avatar.unset
+ @description:
+ Unsets the local user's avatar.
+ Note also that this will NOT unset your default avatar
+ option: you must use the options dialog for that.[br]
+ @seealso:
+ [cmd]avatar.set[/cmd]
+*/
+
+static bool avatar_kvs_cmd_unset(KviKvsModuleCommandCall * c)
+{
+ KVSM_REQUIRE_CONNECTION(c)
+
+ KviIrcUserEntry * e = c->window()->connection()->userDataBase()->find(c->window()->connection()->currentNickName());
+ if(!e)
+ {
+ c->warning(__tr2qs("Internal error: I'm not in the user database ?"));
+ return true;
+ }
+
+ e->setAvatar(0);
+ c->window()->console()->avatarChanged(0,
+ c->window()->connection()->userInfo()->nickName(),
+ c->window()->connection()->userInfo()->userName(),
+ c->window()->connection()->userInfo()->hostName(),
+ QString::null);
+
+ return true;
+}
+
+/*
+ @doc: avatar.notify
+ @type:
+ command
+ @title:
+ avatar.notify
+ @short:
+ Notifies the current avatar to a remote target
+ @syntax:
+ avatar.notify [-q] [-t=<timeout:integer>] <target:string>
+ @switches:
+ !sw: -q | --quiet
+ Do not print warnings
+ !sw: -t=<timeout> | --timeout=<integer>
+ @description:
+ Notifies the current avatar to the remote <target> via CTCP AVATAR.
+ See the [doc:ctcp_avatar]avatar protocol documentation[/doc] for the
+ description of the protocol.[br]
+ This has the effect to notify your avatar image to the <target>.[br]
+ The CTCP is sent thru a NOTICE and the current avatar image
+ is added to the public offer list for <timeout> seconds (or a default timeout if the -t switch is not used).[br]
+ If the -q switch is specified, the command executes in quet mode and
+ prints nothing in the current window.[br]
+ If you don't have an avatar set, the ctcp will unset the previous avatar
+ on the target side.[br]
+ [b]Warning:[/b] The implementation of the avatar protocol is actually
+ restricted to KVIrc clients only. In the future other clients may implement it.[br]
+ This command is [doc:connection_dependant_commands]connection dependant[/doc].[br]
+ @examples:
+ [example]
+ [comment]# Notify your current avatar to Pragma[/comment]
+ avatar.notify Pragma
+ [comment]# Notify your avatar to the channel #kvirc and to Pragma[/comment]
+ avatar #kvirc,Pragma
+ [/example]
+ @seealso:
+ [cmd]avatar.set[/cmd], [cmd]avatar.unset[/cmd]
+*/
+
+static bool avatar_kvs_cmd_notify(KviKvsModuleCommandCall * c)
+{
+ QString szTarget;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("target",KVS_PT_NONEMPTYSTRING,0,szTarget)
+ KVSM_PARAMETERS_END(c)
+
+ KVSM_REQUIRE_CONNECTION(c)
+
+ kvs_int_t iTimeout = (kvs_int_t)KVI_OPTION_UINT(KviOption_uintAvatarOfferTimeoutInSecs);
+ if(KviKvsVariant * pTimeout = c->switches()->find('t',"timeout"))
+ {
+ if(!pTimeout->asInteger(iTimeout))
+ {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("Invalid timeout specified, using default"));
+ }
+ }
+
+ KviIrcUserEntry * e = c->window()->connection()->userDataBase()->find(c->window()->connection()->currentNickName());
+ if(!e)
+ {
+ c->warning(__tr2qs("Internal error: I'm not in the user database ?"));
+ return true;
+ }
+
+ QString absPath,avatar;
+
+ if(e->avatar())
+ {
+ absPath = e->avatar()->localPath();
+ avatar = e->avatar()->name();
+ }
+
+ KviSharedFile * o = 0;
+ if((!absPath.isEmpty()) && (!avatar.isEmpty()))
+ {
+ bool bTargetIsChan = (szTarget.contains('#') || szTarget.contains('&') || szTarget.contains('!'));
+ if(bTargetIsChan)o = g_pSharedFilesManager->lookupSharedFile(avatar,0);
+ else {
+ KviIrcMask u(szTarget);
+ o = g_pSharedFilesManager->lookupSharedFile(avatar,&u);
+ }
+ if(!o)
+ {
+ // FIXME: #warning "OPTION FOR PERMANENT OR TIMEDOUT OFFER...TIMEDOUT WOULD ALSO NEED TO EXTEND EXISTING OFFERS LIFETIME"
+ QString szUserMask = bTargetIsChan ? QString("*") : szTarget;
+ szUserMask += "!*@*";
+ o = g_pSharedFilesManager->addSharedFile(avatar,absPath,szUserMask,iTimeout);
+ if(!o)
+ {
+ // Don't delete o...it has been already deleted by g_pFileTrader
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("Can't add a file offer for file %Q (huh ? file not readable ?)"),&absPath);
+ return true;
+ }
+
+ if(_OUTPUT_VERBOSE)
+ {
+ if(!c->switches()->find('q',"quiet"))
+ c->window()->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Added %d secs file offer for file %Q (%Q) and receiver %Q"),
+ iTimeout,&(o->absFilePath()),&avatar,&(o->userMask()));
+ }
+ }
+ }
+
+ if(!c->switches()->find('q',"quiet"))
+ c->window()->output(KVI_OUT_AVATAR,__tr2qs("Notifying avatar '%Q' to %Q"),&avatar,&szTarget);
+
+ KviQCString encodedTarget = c->window()->connection()->encodeText(szTarget);
+
+ if(!avatar.isEmpty())
+ {
+ KviQCString encodedAvatar = c->window()->connection()->encodeText(avatar);
+
+ if(o)
+ {
+ c->window()->connection()->sendFmtData("NOTICE %s :%cAVATAR %s %u%c",encodedTarget.data(),0x01,
+ encodedAvatar.data(),o->fileSize(),0x01);
+ } else {
+ c->window()->connection()->sendFmtData("NOTICE %s :%cAVATAR %s%c",encodedTarget.data(),0x01,
+ encodedAvatar.data(),0x01);
+ }
+ } else {
+ c->window()->connection()->sendFmtData("NOTICE %s :%cAVATAR%c",encodedTarget.data(),0x01,0x01);
+ }
+
+ return true;
+}
+
+/*
+ @doc: avatar.name
+ @type:
+ function
+ @title:
+ $avatar.name
+ @short:
+ Returns the avatar name for the specified user
+ @syntax:
+ <string> $avatar.name
+ <string> $avatar.name(<nick:string>)
+ @description:
+ Returns the name of the avatar belonging to <nick> in the current IRC context.
+ If <nick> is omitted then the name of the avatar of the current local user
+ is returned. The returned string is empty if the specified user has no
+ avatar set or there is no such user at all.
+ @seealso:
+ [fnc]$avatar.path[/fnc]
+*/
+
+static bool avatar_kvs_fnc_name(KviKvsModuleFunctionCall * c)
+{
+ QString szNick;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("nick",KVS_PT_STRING,KVS_PF_OPTIONAL,szNick)
+ KVSM_PARAMETERS_END(c)
+
+ KVSM_REQUIRE_CONNECTION(c)
+
+ if(szNick.isEmpty())szNick = c->window()->connection()->currentNickName();
+
+ KviIrcUserEntry * e = c->window()->connection()->userDataBase()->find(szNick);
+ if(e)
+ {
+ if(e->avatar())
+ {
+ c->returnValue()->setString(e->avatar()->name());
+ return true;
+ }
+ }
+ c->returnValue()->setNothing();
+ return true;
+}
+
+/*
+ @doc: avatar.path
+ @type:
+ function
+ @title:
+ $avatar.path
+ @short:
+ Returns the avatar path for the specified user
+ @syntax:
+ <string> $avatar.path
+ <string> $avatar.path(<nick:string>)
+ @description:
+ Returns the local path of the avatar belonging to <nick> in the current IRC context.
+ If <nick> is omitted then the path of the avatar of the current local user
+ is returned. The returned string is empty if the specified user has no
+ avatar set or there is no such user at all.
+ @seealso:
+ [fnc]$avatar.name[/fnc]
+*/
+
+static bool avatar_kvs_fnc_path(KviKvsModuleFunctionCall * c)
+{
+ QString szNick;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("path",KVS_PT_STRING,KVS_PF_OPTIONAL,szNick)
+ KVSM_PARAMETERS_END(c)
+
+ KVSM_REQUIRE_CONNECTION(c)
+
+ if(szNick.isEmpty())szNick = c->window()->connection()->currentNickName();
+
+ KviIrcUserEntry * e = c->window()->connection()->userDataBase()->find(szNick);
+ if(e)
+ {
+ if(e->avatar())
+ {
+ c->returnValue()->setString(e->avatar()->localPath());
+ return true;
+ }
+ }
+ c->returnValue()->setNothing();
+ return true;
+}
+
+/*
+ @doc: avatar.query
+ @type:
+ command
+ @title:
+ avatar.query
+ @short:
+ Queries the avatar of a remote target
+ @syntax:
+ avatar.query <target:string>
+ @description:
+ Queries the avatar of a remote target via CTCP AVATAR.
+ The <target> can be a channel or a nickname.
+ This command is equivalent to "[cmd]ctcp[/cmd] <target> AVATAR".
+ @seealso:
+ [cmd]avatar.set[/cmd]
+*/
+
+static bool avatar_kvs_cmd_query(KviKvsModuleCommandCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("target",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSM_PARAMETERS_END(c)
+
+ KVSM_REQUIRE_CONNECTION(c)
+
+ KviQCString target = c->window()->connection()->encodeText(szName);
+ c->window()->connection()->sendFmtData("PRIVMSG %s :%cAVATAR%c",target.data(),0x01,0x01);
+
+ return true;
+}
+
+static bool avatar_module_init(KviModule * m)
+{
+ g_pAvatarSelectionDialogList = new KviPointerList<KviAsyncAvatarSelectionDialog>;
+ g_pAvatarSelectionDialogList->setAutoDelete(false);
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"query",avatar_kvs_cmd_query);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"set",avatar_kvs_cmd_set);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"unset",avatar_kvs_cmd_set);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"notify",avatar_kvs_cmd_notify);
+
+ KVSM_REGISTER_FUNCTION(m,"name",avatar_kvs_fnc_name);
+ KVSM_REGISTER_FUNCTION(m,"path",avatar_kvs_fnc_path);
+
+ return true;
+}
+
+static bool avatar_module_can_unload(KviModule *m)
+{
+ return g_pAvatarSelectionDialogList->isEmpty();
+}
+
+static bool avatar_module_cleanup(KviModule *m)
+{
+ while(KviAsyncAvatarSelectionDialog * d = g_pAvatarSelectionDialogList->first())
+ delete d;
+ delete g_pAvatarSelectionDialogList;
+ return true;
+}
+
+KVIRC_MODULE(
+ "Avatar",
+ "1.0.0",
+ "Copyright (C) 2004 Szymon Stefanek (pragma at kvirc dot net)",
+ "Avatar manipulation routines",
+ avatar_module_init,
+ avatar_module_can_unload,
+ 0,
+ avatar_module_cleanup
+)
diff --git a/src/modules/avatar/libkviavatar.h b/src/modules/avatar/libkviavatar.h
new file mode 100644
index 00000000..d30b4233
--- /dev/null
+++ b/src/modules/avatar/libkviavatar.h
@@ -0,0 +1,54 @@
+#ifndef _LIBKVIAVATAR_H_
+#define _LIBKVIAVATAR_H_
+//=============================================================================
+//
+// File : libkviavatar.cpp
+// Creation date : Thu Nov 12 02:32:59 2004 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include <qdialog.h>
+
+class QLineEdit;
+class KviIrcConnection;
+
+class KviAsyncAvatarSelectionDialog : public QDialog
+{
+ Q_OBJECT
+public:
+ KviAsyncAvatarSelectionDialog(QWidget * par,const QString &szInitialPath,KviIrcConnection * c);
+ ~KviAsyncAvatarSelectionDialog();
+protected:
+ QLineEdit * m_pLineEdit;
+ QString m_szAvatarName;
+ KviIrcConnection * m_pConnection;
+protected:
+ virtual void closeEvent(QCloseEvent * e);
+ const QString &avatarName(){ return m_szAvatarName; };
+protected slots:
+ void okClicked();
+ void cancelClicked();
+ void chooseFileClicked();
+};
+
+
+#endif //!_LIBKVIAVATAR_H_
diff --git a/src/modules/chan/Makefile.am b/src/modules/chan/Makefile.am
new file mode 100644
index 00000000..620836ac
--- /dev/null
+++ b/src/modules/chan/Makefile.am
@@ -0,0 +1,18 @@
+###############################################################################
+# KVirc IRC client Makefile - 31.01.2002 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvichan.la
+
+libkvichan_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvichan_la_SOURCES = libkvichan.cpp
+libkvichan_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+# noinst_HEADERS=
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/chan/libkvichan.cpp b/src/modules/chan/libkvichan.cpp
new file mode 100644
index 00000000..99f8e38e
--- /dev/null
+++ b/src/modules/chan/libkvichan.cpp
@@ -0,0 +1,1635 @@
+//=============================================================================
+//
+// File : libkvichan.cpp
+// Creation date : Sun Feb 02 2002 05:27:11 GMT by Szymon Stefanek
+//
+// This chan is part of the KVirc irc client distribution
+// Copyright (C) 2002-2005 Szymon Stefanek ([email protected])
+// Copyright (C) 2002-2004 Juanjo Alvarez ([email protected])
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_module.h"
+#include "kvi_string.h"
+#include "kvi_app.h"
+#include "kvi_channel.h"
+#include "kvi_locale.h"
+#include "kvi_topicw.h"
+#include "kvi_ircmask.h"
+#include "kvi_maskeditor.h"
+#include "kvi_ircurl.h"
+#include "kvi_ircconnectiontarget.h"
+#include "kvi_ircconnection.h"
+
+static KviChannel * chan_kvs_find_channel(KviKvsModuleFunctionCall * c,QString &szChan,bool noWarnings=false)
+{
+ if(szChan.isEmpty())
+ {
+ if(c->window()->type() == KVI_WINDOW_TYPE_CHANNEL)return (KviChannel *)(c->window());
+ if(c->window()->type() == KVI_WINDOW_TYPE_DEADCHANNEL)return (KviChannel *)(c->window());
+ if(!noWarnings) c->warning(__tr2qs("The current window is not a channel"));
+ } else {
+ KviWindow * w = g_pApp->findWindow(szChan);
+ if(!w)
+ {
+ if(!noWarnings) c->warning(__tr2qs("Can't find the window with id '%Q'"),&szChan);
+ return 0;
+ }
+ if(w->type() == KVI_WINDOW_TYPE_CHANNEL)return (KviChannel *)w;
+ if(!noWarnings) c->warning(__tr2qs("The specified window (%Q) is not a channel"),&szChan);
+ }
+ return 0;
+}
+
+/*
+ @doc: chan.name
+ @type:
+ function
+ @title:
+ $chan.name
+ @short:
+ Returns the name of a channel
+ @syntax:
+ <string> $chan.name
+ <string> $chan.name(<window_id:string>)
+ @description:
+ The first form returns the name of the current channel (assuming that the current window
+ is a channel at all). If the current window is not a channel, a warning is printed
+ and an empty string is returned.[br]
+ The second form returns the name of the channel specified by <window_id>.[br]
+ This function works also on dead channels.[br]
+*/
+
+static bool chan_kvs_fnc_name(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szId)
+ KVSM_PARAMETERS_END(c)
+ KviChannel * ch = chan_kvs_find_channel(c,szId);
+ if (ch) {
+ c->returnValue()->setString(ch->windowName());
+ }
+ return true;
+}
+
+/*
+ @doc: chan.getUrl
+ @type:
+ function
+ @title:
+ $chan.getUrl
+ @short:
+ Returns the URL of a channel
+ @syntax:
+ <string> $chan.getUrl
+ <string> $chan.getUrl(<window_id:string>)
+ <string> $chan.getUrl(<channel_name:string>)
+ @description:
+ Returns IRC URL for this channel
+*/
+
+static bool chan_kvs_fnc_getUrl(KviKvsModuleFunctionCall * c)
+{
+ QString szId,url;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("channel id",KVS_PT_STRING,KVS_PF_OPTIONAL,szId)
+ KVSM_PARAMETERS_END(c)
+ KviChannel * ch = chan_kvs_find_channel(c,szId,true);
+ if (ch) {
+ KviIrcUrl::join(url,ch->connection()->target()->server());
+ url.append(ch->windowName());
+ if(ch->hasChannelKey())
+ {
+ url.append('?');
+ url.append(ch->channelKey());
+ }
+ } else {
+ if(c->window()->connection()) {
+ KviIrcUrl::join(url,c->window()->connection()->target()->server());
+ url.append(szId);
+ } else {
+ c->error("There is no active IRC connection for current context");
+ }
+ }
+ c->returnValue()->setString(url);
+ return true;
+}
+
+/*
+ @doc: chan.isDead
+ @type:
+ function
+ @title:
+ $chan.isDead
+ @short:
+ Checks if a channel is dead
+ @syntax:
+ <boolean> $chan.isDead
+ <boolean> $chan.isDead(<window_id:string>)
+ @description:
+ Returns 1 if the channel specified by <window_id> is a dead channel and 0 otherwise.[br]
+ The form without parameters works on the current window.[br]
+*/
+
+static bool chan_kvs_fnc_isdead(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szId)
+ KVSM_PARAMETERS_END(c)
+ KviChannel * ch = chan_kvs_find_channel(c,szId);
+ if (ch) c->returnValue()->setBoolean((ch->type() == KVI_WINDOW_TYPE_DEADCHANNEL));
+ return true;
+}
+
+/*
+ @doc: chan.topic
+ @type:
+ function
+ @title:
+ $chan.topic
+ @short:
+ Returns the topic of a channel
+ @syntax:
+ <string> $chan.topic
+ <string> $chan.topic(<window_id:string>)
+ @description:
+ The first form returns the topic of the current channel (assuming that the current window
+ is a channel at all). If the current window is not a channel, a warning is printed
+ and an empty string is returned.[br]
+ The second form returns the topic of the channel specified by <window_id>.[br]
+ The topic is returned as it is known form at the call time: this means that
+ if the channel is not synchronized with the server (as just after the join, for example)
+ you might get an empty string (the topic is not yet known).[br]
+ This function works also on dead channels altough the topic returned is the last
+ topic seen while the channel wasn't dead.[br]
+*/
+
+static bool chan_kvs_fnc_topic(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szId)
+ KVSM_PARAMETERS_END(c)
+ KviChannel * ch = chan_kvs_find_channel(c,szId);
+ if (ch) c->returnValue()->setString(ch->topicWidget()->topic());
+ return true;
+}
+
+/*
+ @doc: chan.topicsetby
+ @type:
+ function
+ @title:
+ $chan.topicsetby
+ @short:
+ Returns the author of the topic of a channel
+ @syntax:
+ <string> $chan.topicsetby
+ <string> $chan.topicsetby(<window_id:string>)
+ @description:
+ The first form returns the author of the topic of the current channel (assuming that the current window
+ is a channel at all). If the current window is not a channel, a warning is printed
+ and an empty string is returned.[br]
+ The second form returns the author of the topic of the channel specified by <window_id>.[br]
+ The topic author nickname is returned if it is known form at the call time: this means that
+ if the channel is not synchronized with the server (as just after the join, for example)
+ you might get an empty string (the topic is not yet known).[br]
+ This function works also on dead channels altough the information returned is the last
+ information seen while the channel wasn't dead.[br]
+*/
+
+static bool chan_kvs_fnc_topicsetby(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szId)
+ KVSM_PARAMETERS_END(c)
+ KviChannel * ch = chan_kvs_find_channel(c,szId);
+ if (ch) c->returnValue()->setString(ch->topicWidget()->topicSetBy());
+ return true;
+}
+
+/*
+ @doc: chan.topicsetat
+ @type:
+ function
+ @title:
+ $chan.topicsetat
+ @short:
+ Returns the set time of the topic of a channel
+ @syntax:
+ <string> $chan.topicsetat
+ <string> $chan.topicsetat(<window_id:string>)
+ @description:
+ The first form returns the set time of the topic of the current channel (assuming that the current window
+ is a channel at all). If the current window is not a channel, a warning is printed
+ and an empty string is returned.[br]
+ The second form returns the set time of the topic of the channel specified by <window_id>.[br]
+ The topic set time is returned if it is known form at the call time: this means that
+ if the channel is not synchronized with the server (as just after the join, for example)
+ you might get an empty string (the topic is not yet known).[br]
+ This function works also on dead channels altough the information returned is the last
+ information seen while the channel wasn't dead.[br]
+*/
+
+static bool chan_kvs_fnc_topicsetat(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szId)
+ KVSM_PARAMETERS_END(c)
+ KviChannel * ch = chan_kvs_find_channel(c,szId);
+ if (ch) c->returnValue()->setString(ch->topicWidget()->topicSetAt());
+ return true;
+}
+/*
+ @doc: chan.usercount
+ @type:
+ function
+ @title:
+ $chan.usercount
+ @short:
+ Returns the number of users on a channel
+ @syntax:
+ <intger> $chan.usercount
+ <integer> $chan.usercount(<window_id:string>)
+ @description:
+ The first form returns the number of users on the current channel (assuming that the current window
+ is a channel at all). If the current window is not a channel, a warning is printed
+ and an empty string is returned.[br]
+ The second form returns the number of users on the channel specified by <window_id>.[br]
+ The number of users is returned if it is known form at the call time: this means that
+ if the channel is not synchronized with the server (as just after the join, for example)
+ you might get a number that is actually smaller.[br]
+*/
+
+static bool chan_kvs_fnc_usercount(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szId)
+ KVSM_PARAMETERS_END(c)
+ KviChannel * ch = chan_kvs_find_channel(c,szId);
+ if (ch) c->returnValue()->setInteger(ch->count());
+ return true;
+}
+
+/*
+ @doc: chan.ownercount
+ @type:
+ function
+ @title:
+ $chan.ownercount
+ @short:
+ Returns the number of channel owner users on a channel
+ @syntax:
+ <integer> $chan.ownercount
+ <integer> $chan.ownercount(<window_id:integer>)
+ @description:
+ The first form returns the number of owners users on the current channel (assuming that the current window
+ is a channel at all). If the current window is not a channel, a warning is printed
+ and an empty string is returned.[br]
+ The second form returns the number of owners users on the channel specified by <window_id>.[br]
+ The number of owners is returned if it is known form at the call time: this means that
+ if the channel is not synchronized with the server (as just after the join, for example)
+ you might get a number that is actually smaller.[br]
+*/
+
+static bool chan_kvs_fnc_ownercount(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szId)
+ KVSM_PARAMETERS_END(c)
+ KviChannel * ch = chan_kvs_find_channel(c,szId);
+ if (ch) c->returnValue()->setInteger(ch->chanOwnerCount());
+ return true;
+}
+
+/*
+ @doc: chan.admincount
+ @type:
+ function
+ @title:
+ $chan.admincount
+ @short:
+ Returns the number of channel admin users on a channel
+ @syntax:
+ <integer> $chan.admincount
+ <integer> $chan.admincount(<window_id:string>)
+ @description:
+ The first form returns the number of administrator users on the current channel (assuming that the current window
+ is a channel at all). If the current window is not a channel, a warning is printed
+ and an empty string is returned.[br]
+ The second form returns the number of administrator users on the channel specified by <window_id>.[br]
+ The number of administrators is returned if it is known form at the call time: this means that
+ if the channel is not synchronized with the server (as just after the join, for example)
+ you might get a number that is actually smaller.[br]
+*/
+
+static bool chan_kvs_fnc_admincount(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szId)
+ KVSM_PARAMETERS_END(c)
+ KviChannel * ch = chan_kvs_find_channel(c,szId);
+ if (ch) c->returnValue()->setInteger(ch->chanAdminCount());
+ return true;
+}
+
+
+/*
+ @doc: chan.opcount
+ @type:
+ function
+ @title:
+ $chan.opcount
+ @short:
+ Returns the number of op users on a channel
+ @syntax:
+ <integer> $chan.opcount
+ <integer> $chan.opcount(<window_id:string>)
+ @description:
+ The first form returns the number of op users on the current channel (assuming that the current window
+ is a channel at all). If the current window is not a channel, a warning is printed
+ and an empty string is returned.[br]
+ The second form returns the number of op users on the channel specified by <window_id>.[br]
+ The number of ops is returned if it is known form at the call time: this means that
+ if the channel is not synchronized with the server (as just after the join, for example)
+ you might get a number that is actually smaller.[br]
+*/
+
+static bool chan_kvs_fnc_opcount(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szId)
+ KVSM_PARAMETERS_END(c)
+ KviChannel * ch = chan_kvs_find_channel(c,szId);
+ if (ch) c->returnValue()->setInteger(ch->opCount());
+ return true;
+}
+
+/*
+ @doc: chan.voicecount
+ @type:
+ function
+ @title:
+ $chan.voicecount
+ @short:
+ Returns the number of voiced users on a channel
+ @syntax:
+ <integer> $chan.voicecount
+ <integer> $chan.voicecount(<window_id:string>)
+ @description:
+ The first form returns the number of voiced users on the current channel (assuming that the current window
+ is a channel at all). If the current window is not a channel, a warning is printed
+ and an empty string is returned.[br]
+ The second form returns the number of voiced users on the channel specified by <window_id>.[br]
+ The number of voiced users is returned if it is known form at the call time: this means that
+ if the channel is not synchronized with the server (as just after the join, for example)
+ you might get a number that is actually smaller.[br]
+*/
+
+static bool chan_kvs_fnc_voicecount(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szId)
+ KVSM_PARAMETERS_END(c)
+ KviChannel * ch = chan_kvs_find_channel(c,szId);
+ if (ch) c->returnValue()->setInteger(ch->voiceCount());
+ return true;
+}
+
+/*
+ @doc: chan.halfopcount
+ @type:
+ function
+ @title:
+ $chan.halfopcount
+ @short:
+ Returns the number of halfop users on a channel
+ @syntax:
+ <integer> $chan.halfOpCount
+ <integer> $chan.halfOpCount(<window_id:string>)
+ @description:
+ The first form returns the number of half-operator users on the current channel (assuming that the current window
+ is a channel at all). If the current window is not a channel, a warning is printed
+ and an empty string is returned.[br]
+ The second form returns the number of half-operator users on the channel specified by <window_id>.[br]
+ The number of half-operator users is returned if it is known form at the call time: this means that
+ if the channel is not synchronized with the server (as just after the join, for example)
+ you might get a number that is actually smaller.[br]
+*/
+
+static bool chan_kvs_fnc_halfopcount(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szId)
+ KVSM_PARAMETERS_END(c)
+ KviChannel * ch = chan_kvs_find_channel(c,szId);
+ if (ch) c->returnValue()->setInteger(ch->halfOpCount());
+ return true;
+}
+
+/*
+ @doc: chan.useropcount
+ @type:
+ function
+ @title:
+ $chan.useropcount
+ @short:
+ Returns the number of userop users on a channel
+ @syntax:
+ <integer> $chan.userOpCount
+ <integer> $chan.userOpCount(<window_id:string>)
+ @description:
+ The first form returns the number of user-operator users on the current channel (assuming that the current window
+ is a channel at all). If the current window is not a channel, a warning is printed
+ and an empty string is returned.[br]
+ The second form returns the number of user-operator users on the channel specified by <window_id>.[br]
+ The number of user-operator users is returned if it is known form at the call time: this means that
+ if the channel is not synchronized with the server (as just after the join, for example)
+ you might get a number that is actually smaller.[br]
+*/
+
+static bool chan_kvs_fnc_useropcount(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szId)
+ KVSM_PARAMETERS_END(c)
+ KviChannel * ch = chan_kvs_find_channel(c,szId);
+ if (ch) c->returnValue()->setInteger(ch->userOpCount());
+ return true;
+}
+
+/*
+ @doc: chan.bancount
+ @type:
+ function
+ @title:
+ $chan.bancount
+ @short:
+ Returns the number of entries in the channel ban list
+ @syntax:
+ <integer> $chan.bancount
+ <integer> $chan.bancount(<window_id:string>)
+ @description:
+ The first form returns the number of entries in the ban list of the current channel (assuming that the current window
+ is a channel at all). If the current window is not a channel, a warning is printed
+ and 0 is returned.[br]
+ The second form returns the number entries in the ban list of the channel specified by <window_id>.[br]
+ The number of ban list entries is returned if it is known form at the call time: this means that
+ if the channel is not synchronized with the server (as just after the join, for example)
+ you might get a number that is actually smaller.[br]
+*/
+
+static bool chan_kvs_fnc_bancount(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szId)
+ KVSM_PARAMETERS_END(c)
+ KviChannel * ch = chan_kvs_find_channel(c,szId);
+ if (ch) c->returnValue()->setInteger(ch->banCount());
+ return true;
+}
+
+/*
+ @doc: chan.banexceptioncount
+ @type:
+ function
+ @title:
+ $chan.banexceptioncount
+ @short:
+ Returns the number of entries in the channel ban exception list
+ @syntax:
+ <integer> $chan.banexceptioncount
+ <integer> $chan.banexceptioncount(<window_id:string>)
+ @description:
+ The first form returns the number of entries in the ban exception list of the current channel (assuming that the current window
+ is a channel at all). If the current window is not a channel, a warning is printed
+ and 0 is returned.[br]
+ The second form returns the number entries in the ban exception list of the channel specified by <window_id>.[br]
+ The number of ban exception list entries is returned if it is known form at the call time: this means that
+ if the channel is not synchronized with the server (as just after the join, for example)
+ you might get a number that is actually smaller.[br]
+*/
+
+static bool chan_kvs_fnc_banexceptioncount(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szId)
+ KVSM_PARAMETERS_END(c)
+ KviChannel * ch = chan_kvs_find_channel(c,szId);
+ if (ch) c->returnValue()->setInteger(ch->banExceptionCount());
+ return true;
+}
+
+/*
+ @doc: chan.invitecount
+ @type:
+ function
+ @title:
+ $chan.invitecount
+ @short:
+ Returns the number of entries in the channel invite list
+ @syntax:
+ <integer> $chan.invitecount
+ <integer> $chan.invitecount(<window_id:string>)
+ @description:
+ The first form returns the number of entries in the invite list of the current channel (assuming that the current window
+ is a channel at all). If the current window is not a channel, a warning is printed
+ and 0 is returned.[br]
+ The second form returns the number entries in the invite list of the channel specified by <window_id>.[br]
+ The number of invite list entries is returned if it is known form at the call time: this means that
+ if the channel is not synchronized with the server (as just after the join, for example)
+ you might get a number that is actually smaller.[br]
+*/
+
+static bool chan_kvs_fnc_invitecount(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szId)
+ KVSM_PARAMETERS_END(c)
+ KviChannel * ch = chan_kvs_find_channel(c,szId);
+ if (ch) c->returnValue()->setInteger(ch->inviteCount());
+ return true;
+}
+
+/*
+ @doc: chan.ison
+ @type:
+ function
+ @title:
+ $chan.ison
+ @short:
+ Checks if an user is on a channel
+ @syntax:
+ <boolean> $chan.ison(<nickname:string>[,<window_id:string>])
+ @description:
+ Returns 1 if <nickname> is on the channel identified by <window_id>, 0 otherwise.[br]
+ If <window_id> is not specified the current window is used (assuming that it is a channel at all).[br]
+ If the window is not a channel, a warning is printed and an empty string is returned.[br]
+*/
+
+static bool chan_kvs_fnc_ison(KviKvsModuleFunctionCall * c)
+{
+ QString szId,szNick;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("nickname",KVS_PT_NONEMPTYSTRING,0,szNick)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szId)
+ KVSM_PARAMETERS_END(c)
+ KviChannel * ch = chan_kvs_find_channel(c,szId);
+ if (ch) c->returnValue()->setBoolean(ch->isOn(szNick));
+ return true;
+}
+
+/*
+ @doc: chan.getflag
+ @type:
+ function
+ @title:
+ $chan.getflag
+ @short:
+ Returns the channel-user mode flag of an user
+ @syntax:
+ <char> $chan.getflag(<nickname:string>[,<window_id:string>])
+ @description:
+ Returns the channel user mode flag of an user on the channel specified by <window_id>.[br]
+ If <window_id> is not passed, the current window is used.[br]
+ If the specified window is not a channel, a warning is printed and an empty string is returned.[br]
+ If the specified user is not on the channel identified by <window_id>, and empty string is returned.[br]
+ The possible user flags are:[br]
+ '!' for channel administrators[br]
+ '@' for ops[br]
+ '%' for halfops[br]
+ '+' for voiced users[br]
+ '-' for userops[br]
+ If the user has more than one flag then the highest one is returned.[br]
+ If the user has no flag at all then an empty string is returned.
+*/
+
+static bool chan_kvs_fnc_getflag(KviKvsModuleFunctionCall * c)
+{
+ QString szId,szNick;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("nickname",KVS_PT_NONEMPTYSTRING,0,szNick)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szId)
+ KVSM_PARAMETERS_END(c)
+ KviChannel * ch = chan_kvs_find_channel(c,szId);
+ if(ch)
+ {
+ QChar cFlag = ch->userListView()->getUserFlag(szNick);
+ if(cFlag != QChar(0))
+ {
+ QString szFlag = cFlag;
+ c->returnValue()->setString(szFlag);
+ } else {
+ c->returnValue()->setNothing();
+ }
+ }
+ return true;
+}
+
+#define IS_KVS_FUNC(__clbkname,__chanfunc) \
+static bool __clbkname(KviKvsModuleFunctionCall * c) \
+{ \
+ QString szId,szNick;\
+ KVSM_PARAMETERS_BEGIN(c)\
+ KVSM_PARAMETER("nickname",KVS_PT_NONEMPTYSTRING,0,szNick)\
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szId)\
+ KVSM_PARAMETERS_END(c)\
+ KviChannel * ch = chan_kvs_find_channel(c,szId); \
+ if(ch) c->returnValue()->setBoolean(ch->__chanfunc(szNick,true)); \
+ return true; \
+}
+
+/*
+ @doc: chan.isowner
+ @type:
+ function
+ @title:
+ $chan.isowner
+ @short:
+ Checks if an user is at least a channel owner
+ @syntax:
+ <boolean> $chan.isowner(<nickname:string>[,<window_id:string>])
+ @description:
+ Returns 1 if <nickname> is at least an owner on the channel identified by <window_id>, 0 otherwise.[br]
+ If <window_id> is not specified the current window is used (assuming that it is a channel at all).[br]
+ If the window is not a channel, a warning is printed and an empty string is returned.[br]
+ Note that if the user is not on the channel at all, you will get 0 as return value.[br]
+*/
+
+IS_KVS_FUNC(chan_kvs_fnc_isowner,isChanOwner)
+
+/*
+ @doc: chan.isadmin
+ @type:
+ function
+ @title:
+ $chan.isadmin
+ @short:
+ Checks if an user is at least channel administrator
+ @syntax:
+ <boolean> $chan.isadmin(<nickname:string>[,<window_id:string>])
+ @description:
+ Returns 1 if <nickname> is at least an administrator on the channel identified by <window_id>, 0 otherwise.[br]
+ If <window_id> is not specified the current window is used (assuming that it is a channel at all).[br]
+ If the window is not a channel, a warning is printed and an empty string is returned.[br]
+ Note that if the user is not on the channel at all, you will get 0 as return value.[br]
+*/
+
+IS_KVS_FUNC(chan_kvs_fnc_isadmin,isChanAdmin)
+
+/*
+ @doc: chan.isop
+ @type:
+ function
+ @title:
+ $chan.isop
+ @short:
+ Checks if an user is at least an op on a channel
+ @syntax:
+ <boolean> $chan.isop(<nickname:string>[,<window_id:stringn>])
+ @description:
+ Returns 1 if <nickname> is at least an operator on the channel identified by <window_id>, 0 otherwise.[br]
+ If <window_id> is not specified the current window is used (assuming that it is a channel at all).[br]
+ If the window is not a channel, a warning is printed and an empty string is returned.[br]
+ Note that if the user is not on the channel at all, you will get 0 as return value.[br]
+*/
+
+IS_KVS_FUNC(chan_kvs_fnc_isop,isOp)
+
+/*
+ @doc: chan.isvoice
+ @type:
+ function
+ @title:
+ $chan.isvoice
+ @short:
+ Checks if an user is at least voiced on a channel
+ @syntax:
+ <boolean> $chan.isvoice(<nickname:string>[,<window_id:string>])
+ @description:
+ Returns 1 if <nickname> is at least voiced on the channel identified by <window_id>, 0 otherwise.[br]
+ If <window_id> is not specified the current window is used (assuming that it is a channel at all).[br]
+ If the window is not a channel, a warning is printed and an empty string is returned.[br]
+ Note that if the user is not on the channel at all, you will get 0 as return value.[br]
+*/
+
+IS_KVS_FUNC(chan_kvs_fnc_isvoice,isVoice)
+
+/*
+ @doc: chan.ishalfop
+ @type:
+ function
+ @title:
+ $chan.ishalfop
+ @short:
+ Checks if an user is at least halfop on a channel
+ @syntax:
+ <boolean> $chan.ishalfop(<nickname:string>[,<window_id:string>])
+ @description:
+ Returns 1 if <nickname> is at least a half-operator on the channel identified by <window_id>, 0 otherwise.[br]
+ If <window_id> is not specified the current window is used (assuming that it is a channel at all).[br]
+ If the window is not a channel, a warning is printed and an empty string is returned.[br]
+ Note that if the user is not on the channel at all, you will get 0 as return value.[br]
+*/
+
+IS_KVS_FUNC(chan_kvs_fnc_ishalfop,isHalfOp)
+
+/*
+ @doc: chan.isuserop
+ @type:
+ function
+ @title:
+ $chan.isuserop
+ @short:
+ Checks if an user is at least an userop on a channel
+ @syntax:
+ <boolean> $chan.isuserop(<nickname:string>[,<window_id:string>])
+ @description:
+ Returns 1 if <nickname> is at least an user-operator on the channel identified by <window_id>, 0 otherwise.[br]
+ If <window_id> is not specified the current window is used (assuming that it is a channel at all).[br]
+ If the window is not a channel, a warning is printed and an empty string is returned.[br]
+ Note that if the user is not on the channel at all, you will get 0 as return value.[br]
+*/
+
+IS_KVS_FUNC(chan_kvs_fnc_isuserop,isUserOp)
+
+
+/*
+ @doc: chan.ismeowner
+ @type:
+ function
+ @title:
+ $chan.isMeOwner
+ @short:
+ Checks if the current user is at least an owner on a channel
+ @syntax:
+ <boolean> $chan.isMeOwner
+ <boolean> $chan.isMeOwner(<window_id:string>)
+ @description:
+ Returns 1 if the current user is at least an owner on the channel specified by <window_id>, 0 otherwise.[br]
+ If <window_id> is not passed, the current window is used (assuming it is a channel at all).[br]
+ If the window is not a channel, a warning is printed and an empty string is returned.[br]
+ This function is a "shortcut" for [fnc]$chan.isowner[/fnc]([fnc]$me[/fnc]).[br]
+*/
+
+#define IS_ME_KVS_FUNC(__clbkname,__chanfunc) \
+static bool __clbkname(KviKvsModuleFunctionCall * c) \
+{ \
+ QString szId;\
+ KVSM_PARAMETERS_BEGIN(c)\
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szId)\
+ KVSM_PARAMETERS_END(c)\
+ KviChannel * ch = chan_kvs_find_channel(c,szId); \
+ if(ch) c->returnValue()->setBoolean(ch->__chanfunc(true)); \
+ return true; \
+}
+
+IS_ME_KVS_FUNC(chan_kvs_fnc_ismeowner,isMeChanOwner)
+
+/*
+ @doc: chan.ismeadmin
+ @type:
+ function
+ @title:
+ $chan.isMeAdmin
+ @short:
+ Checks if the current user is at least an administrator on a channel
+ @syntax:
+ <boolean> $chan.isMeAdmin
+ <boolean> $chan.isMeAdmin(<window_id:string>)
+ @description:
+ Returns 1 if the current user is at least an administrator on the channel specified by <window_id>, 0 otherwise.[br]
+ If <window_id> is not passed, the current window is used (assuming it is a channel at all).[br]
+ If the window is not a channel, a warning is printed and an empty string is returned.[br]
+ This function is a "shortcut" for [fnc]$chan.isadmin[/fnc]([fnc]$me[/fnc]).[br]
+*/
+
+IS_ME_KVS_FUNC(chan_kvs_fnc_ismeadmin,isMeChanAdmin)
+
+/*
+ @doc: chan.ismeop
+ @type:
+ function
+ @title:
+ $chan.isMeOp
+ @short:
+ Checks if the current user is at least op on a channel
+ @syntax:
+ <boolean> $chan.isMeOp
+ <boolean> $chan.isMeOp(<window_id:string>)
+ @description:
+ Returns 1 if the current user is at least op on the channel specified by <window_id>, 0 otherwise.[br]
+ If <window_id> is not passed, the current window is used (assuming it is a channel at all).[br]
+ If the window is not a channel, a warning is printed and an empty string is returned.[br]
+ This function is a "shortcut" for [fnc]$chan.isop[/fnc]([fnc]$me[/fnc]).[br]
+*/
+
+IS_ME_KVS_FUNC(chan_kvs_fnc_ismeop,isMeOp)
+
+/*
+ @doc: chan.ismehalfop
+ @type:
+ function
+ @title:
+ $chan.isMeHalfOp
+ @short:
+ Checks if the current user is at least an half operator on a channel
+ @syntax:
+ <boolean> $chan.isMeHalfOp
+ <boolean> $chan.isMeHalfOp(<window_id:string>)
+ @description:
+ Returns 1 if the current user is at least an half operator on the channel specified by <window_id>, 0 otherwise.[br]
+ If <window_id> is not passed, the current window is used (assuming it is a channel at all).[br]
+ If the window is not a channel, a warning is printed and an empty string is returned.[br]
+ This function is a "shortcut" for [fnc]$chan.ishalfop[/fnc]([fnc]$me[/fnc]).[br]
+*/
+
+IS_ME_KVS_FUNC(chan_kvs_fnc_ismehalfop,isMeHalfOp)
+
+/*
+ @doc: chan.ismevoice
+ @type:
+ function
+ @title:
+ $chan.isMeVoice
+ @short:
+ Checks if the current user is at least voice on a channel
+ @syntax:
+ <boolean> $chan.isMeVoice
+ <boolean> $chan.isMeVoice(<window_id:string>)
+ @description:
+ Returns 1 if the current user is at least voice on the channel specified by <window_id>, 0 otherwise.[br]
+ If <window_id> is not passed, the current window is used (assuming it is a channel at all).[br]
+ If the window is not a channel, a warning is printed and an empty string is returned.[br]
+ This function is a "shortcut" for [fnc]$chan.isvoice[/fnc]([fnc]$me[/fnc]).[br]
+*/
+
+IS_ME_KVS_FUNC(chan_kvs_fnc_ismevoice,isMeVoice)
+
+/*
+ @doc: chan.ismeuserop
+ @type:
+ function
+ @title:
+ $chan.isMeUserOp
+ @short:
+ Checks if the current user is at least an user operator on a channel
+ @syntax:
+ <boolean> $chan.isMeUserOp
+ <boolean> $chan.isMeUserOp(<window_id:String>)
+ @description:
+ Returns 1 if the current user is at least an user operator on the channel specified by <window_id>, 0 otherwise.[br]
+ If <window_id> is not passed, the current window is used (assuming it is a channel at all).[br]
+ If the window is not a channel, a warning is printed and an empty string is returned.[br]
+ This function is a "shortcut" for [fnc]$chan.isuserop[/fnc]([fnc]$me[/fnc]).[br]
+*/
+
+IS_ME_KVS_FUNC(chan_kvs_fnc_ismeuserop,isMeUserOp)
+
+/*
+ @doc: chan.mode
+ @type:
+ function
+ @title:
+ $chan.mode
+ @short:
+ Returns the mode string of a channel
+ @syntax:
+ <string> $chan.mode
+ <string> $chan.mode(<window_id:string>)
+ @description:
+ Returns the mode string of the channel identified by <window_id>.[br]
+ If no <window_id> is passed, the current channel mode string is returned (assuming that
+ the current window is a chnannel at all).[br]
+ If the window is not a channel, a warning is printed and an empty string is returned.[br]
+*/
+
+static bool chan_kvs_fnc_mode(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szId)
+ KVSM_PARAMETERS_END(c)
+ KviChannel * ch = chan_kvs_find_channel(c,szId);
+ if(ch)
+ {
+ QString chMode;
+ ch->getChannelModeString(chMode);
+ c->returnValue()->setString(chMode);
+ }
+ return true;
+}
+
+
+/*
+ @doc: chan.key
+ @type:
+ function
+ @title:
+ $chan.key
+ @short:
+ Returns the key of a channel
+ @syntax:
+ <string> $chan.key
+ <string> $chan.key(<window_id:string>)
+ @description:
+ Returns the key of the channel identified by <window_id>.[br]
+ If no <window_id> is passed, the current channel key is returned (assuming that
+ the current window is a chnannel at all).[br]
+ If the window is not a channel, a warning is printed and an empty string is returned.[br]
+ If the channel has no key set, an empty string is returned.[br]
+*/
+
+static bool chan_kvs_fnc_key(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szId)
+ KVSM_PARAMETERS_END(c)
+ KviChannel * ch = chan_kvs_find_channel(c,szId);
+ if (ch) c->returnValue()->setString(ch->channelKey());
+ return true;
+}
+
+/*
+ @doc: chan.limit
+ @type:
+ function
+ @title:
+ $chan.limit
+ @short:
+ Returns the limit of a channel
+ @syntax:
+ <integer> $chan.limit
+ <integer> $chan.limit(<window_id:string>)
+ @description:
+ Returns the limit of the channel identified by <window_id>.[br]
+ If no <window_id> is passed, the current channel limit is returned (assuming that
+ the current window is a chnannel at all).[br]
+ If the window is not a channel, a warning is printed and an empty string is returned.[br]
+ If the channel has no limit set, "0" is returned.[br]
+*/
+
+static bool chan_kvs_fnc_limit(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szId)
+ KVSM_PARAMETERS_END(c)
+ KviChannel * ch = chan_kvs_find_channel(c,szId);
+ kvs_int_t limit=0;
+ QString lim;
+ if (ch)
+ {
+ if(ch->hasChannelLimit())
+ {
+ lim=ch->channelLimit().ptr();
+ limit=lim.toInt();
+ }
+ c->returnValue()->setInteger(limit);
+ }
+ return true;
+}
+
+
+/*
+ @doc: chan.users
+ @type:
+ function
+ @title:
+ $chan.users
+ @short:
+ Returns an array of channel user nicknames
+ @syntax:
+ <array> $chan.users([window_id:string],[mask:string],[flags:string])
+ @description:
+ Returns an array of nicknames on the channel specified by [window_id].[br]
+ If [window_id] is empty, the current window is used.[br]
+ If the window designated by [window_id] is not a channel a warning is printed and an empty array is returned.[br]
+ If [mask] is given, each user is added to the array only
+ if it matches the [mask].[br]
+ [flags] may contain a subset of the letters "aovhnmi":[br]
+ "ovhn" are mode flags: the users are added to the array only if they are channel administrators ('a'), operators ('o'),
+ voiced users ('v'), half-operators ('h'), user-operators ('u') or unflagged ('n') users. (Unflagged means not operators, not
+ voiced and not half-operators). If none of the "ovhun" flags are used, KVIrc behaves like all five were passed.[br]
+ The flag 'm' causes the entire user masks to be added to the
+ array entries, as known by KVIrc at the moment of this function call.[br]
+ The flag 'i' causes KVIrc to invert the match and add only the users that do NOT match [mask].[br]
+ Please note that on really large channels this function may be time consuming (especially if [mask] is used):
+ use with care.[br]
+ @example:
+ [example]
+ [comment]# Get the nickname list[/comment]
+ %test[] = $chan.users
+ [comment]# And loop thru the items[/comment]
+ %i = 0
+ [comment]# %test[]# returns the number of elements in the array[/comment]
+ %count = %test[]#
+ while(%i < %count)
+ {
+ echo "User %i : %test[%i]"
+ %i++
+ }
+ [comment]# Another way of looping[/comment]
+ foreach(%tmp,%test[])echo "User %tmp"
+ [comment]# Find all the users that come from the *.org domain[/comment]
+ %test[]=$chan.users(,*!*@*.org)
+ echo %test[]
+ [comment]# This will work too![/comment]
+ echo $chan.users(,*!*@*.org)
+ [comment]# Find all the channel operators[/comment]
+ %test[] = $chan.users(,,o)
+ echo %test[]
+ [comment]# Find all the voiced users that do NOT come from *.edu[/comment]
+ [comment]# See also their whole mask[/comment]
+ %test[] = $chan.users(,*!*@*.edu,vim)
+ echo %test[]
+ [/example]
+
+*/
+
+static bool chan_kvs_fnc_users(KviKvsModuleFunctionCall * c)
+{
+ QString szWinId,szMask,szFlags;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szWinId)
+ KVSM_PARAMETER("mask",KVS_PT_STRING,KVS_PF_OPTIONAL,szMask)
+ KVSM_PARAMETER("flags",KVS_PT_STRING,KVS_PF_OPTIONAL,szFlags)
+ KVSM_PARAMETERS_END(c)
+
+ KviKvsArray * pArray = new KviKvsArray();
+ c->returnValue()->setArray(pArray);
+
+ KviChannel * ch = chan_kvs_find_channel(c,szWinId);
+ if(!ch)return true;
+
+ KviUserListEntry * e = ch->userListView()->firstItem(); // Thnx Julien :)
+
+ bool bCheckMask = !szMask.isEmpty();
+ bool bOp = szFlags.find('o',false) != -1;
+ bool bVoice = szFlags.find('v',false) != -1;
+ bool bHalfOp = szFlags.find('h',false) != -1;
+ bool bChanAdmins = szFlags.find('a',false) != -1;
+ bool bUserOp = szFlags.find('u',false) != -1;
+ bool bNone = szFlags.find('n',false) != -1;
+ bool bCheckFlags = bOp || bVoice || bHalfOp || bNone || bChanAdmins || bUserOp;
+ bool bAddMask = szFlags.find('m',false) != -1;
+
+ int idx = 0;
+
+ if(bAddMask || bCheckFlags || bCheckMask)
+ {
+ bool bMaskMustMatch = szFlags.find('i',false) == -1;
+ KviIrcMask mask(szMask);
+
+ while(e)
+ {
+ if(bCheckFlags)
+ {
+ if(bChanAdmins)
+ {
+ if(e->flags() & KVI_USERFLAG_CHANADMIN)goto check_mask;
+ }
+ if(bOp)
+ {
+ if(e->flags() & KVI_USERFLAG_OP)goto check_mask;
+ }
+ if(bVoice)
+ {
+ if(e->flags() & KVI_USERFLAG_VOICE)goto check_mask;
+ }
+ if(bHalfOp)
+ {
+ if(e->flags() & KVI_USERFLAG_HALFOP)goto check_mask;
+ }
+ if(bUserOp)
+ {
+ if(e->flags() & KVI_USERFLAG_USEROP)goto check_mask;
+ }
+ if(bNone)
+ {
+ if(!(e->flags() & KVI_USERFLAG_MASK))goto check_mask;
+ }
+ goto next_item;
+ }
+check_mask:
+ if(bCheckMask)
+ {
+ if(mask.matchesFixed(e->nick(),e->globalData()->user(),e->globalData()->host()) == bMaskMustMatch)goto add_item;
+ goto next_item;
+ }
+add_item:
+ if(bAddMask)
+ {
+ QString x(e->nick());
+ x.append('!');
+ x.append(e->globalData()->user());
+ x.append('@');
+ x.append(e->globalData()->host());
+ pArray->set(idx,new KviKvsVariant(x));
+ } else {
+ pArray->set(idx,new KviKvsVariant(e->nick()));
+ }
+ idx++;
+next_item:
+ e = e->next();
+ }
+ } else {
+ while(e)
+ {
+ pArray->set(idx,new KviKvsVariant(e->nick()));
+ idx++;
+ e = e->next();
+ }
+ }
+
+
+ return true;
+}
+
+/*
+ @doc: chan.banlist
+ @type:
+ function
+ @title:
+ $chan.banlist
+ @short:
+ Returns an array of channel ban masks
+ @syntax:
+ $chan.banlist([window_id])
+ @description:
+ Returns an array of ban masks set ont the channel identified by [window_id].[br]
+ If [window_id] is empty, the current window is used.[br]
+ If the window designated by [window_id] is not a channel a warning is printed and an empty array is returned.[br]
+*/
+
+static bool chan_kvs_fnc_banlist(KviKvsModuleFunctionCall * c)
+{
+ QString szWinId,szMask,szFlags;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szWinId)
+ KVSM_PARAMETERS_END(c)
+
+ KviKvsArray * pArray = new KviKvsArray();
+ c->returnValue()->setArray(pArray);
+
+ KviChannel * ch = chan_kvs_find_channel(c,szWinId);
+
+ if(!ch)return true;
+
+ int idx = 0;
+
+ KviPointerList<KviMaskEntry> * l = ((KviChannel *)(c->window()))->banList();
+
+ for(KviMaskEntry * e = l->first();e;e = l->next())
+ {
+ pArray->set(idx,new KviKvsVariant(e->szMask));
+ idx++;
+ }
+
+ return true;
+}
+
+/*
+ @doc: chan.banexceptionlist
+ @type:
+ function
+ @title:
+ $chan.banexceptionlist
+ @short:
+ Returns an array of channel ban exception masks
+ @syntax:
+ <array> $chan.banexceptionlist([window_id])
+ @description:
+ Returns an array of ban exception masks set ont the channel identified by [window_id].[br]
+ If [window_id] is empty, the current window is used.[br]
+ If the window designated by [window_id] is not a channel a warning is printed and an empty array is returned.[br]
+*/
+
+static bool chan_kvs_fnc_banexceptionlist(KviKvsModuleFunctionCall * c)
+{
+ QString szWinId,szMask,szFlags;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szWinId)
+ KVSM_PARAMETERS_END(c)
+
+ KviKvsArray * pArray = new KviKvsArray();
+ c->returnValue()->setArray(pArray);
+
+ KviChannel * ch = chan_kvs_find_channel(c,szWinId);
+
+ if(!ch)return true;
+
+ int idx = 0;
+
+ KviPointerList<KviMaskEntry> * l = ((KviChannel *)(c->window()))->banExceptionList();
+
+ for(KviMaskEntry * e = l->first();e;e = l->next())
+ {
+ pArray->set(idx,new KviKvsVariant(e->szMask));
+ idx++;
+ }
+
+ return true;
+}
+
+/*
+ @doc: chan.invitelist
+ @type:
+ function
+ @title:
+ $chan.invitelist
+ @short:
+ Returns an array of channel invite masks
+ @syntax:
+ <array> $chan.banexceptionlist([window_id])
+ @description:
+ Returns an array of invite masks set ont the channel identified by [window_id].[br]
+ If [window_id] is empty, the current window is used.[br]
+ If the window designated by [window_id] is not a channel a warning is printed and an empty array is returned.[br]
+*/
+
+static bool chan_kvs_fnc_invitelist(KviKvsModuleFunctionCall * c)
+{
+ QString szWinId,szMask,szFlags;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szWinId)
+ KVSM_PARAMETERS_END(c)
+
+ KviKvsArray * pArray = new KviKvsArray();
+ c->returnValue()->setArray(pArray);
+
+ KviChannel * ch = chan_kvs_find_channel(c,szWinId);
+
+ if(!ch)return true;
+
+ int idx = 0;
+
+ KviPointerList<KviMaskEntry> * l = ((KviChannel *)(c->window()))->inviteList();
+
+ for(KviMaskEntry * e = l->first();e;e = l->next())
+ {
+ pArray->set(idx,new KviKvsVariant(e->szMask));
+ idx++;
+ }
+
+ return true;
+}
+
+/*
+ @doc: chan.matchban
+ @type:
+ function
+ @title:
+ $chan.matchban
+ @short:
+ Matches a mask agains the channel ban list
+ @syntax:
+ <string> $chan.matchban([window_id],<complete_mask>)
+ @description:
+ Returns the ban mask that matches <complete_mask> on channel identified by [window_id].[br]
+ If no ban mask matches <complete_mask> an empty string is returned.[br]
+ If [window_id] is empty, the current window is used.[br]
+ If the window designated by [window_id] is not a channel a warning is printed and an empty string is returned.[br]
+ This function is useful to determine if a ban set on the channel matches an user.[br]
+*/
+
+static bool chan_kvs_fnc_matchban(KviKvsModuleFunctionCall * c)
+{
+ QString szWinId,szMask;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,0,szWinId)
+ KVSM_PARAMETER("mask",KVS_PT_STRING,0,szMask)
+ KVSM_PARAMETERS_END(c)
+
+ KviChannel * ch = chan_kvs_find_channel(c,szWinId);
+
+ if(!ch)
+ {
+ c->returnValue()->setNothing();
+ return true;
+ }
+
+ KviPointerList<KviMaskEntry> * l = ((KviChannel *)(c->window()))->banList();
+
+ for(KviMaskEntry * e = l->first();e;e = l->next())
+ {
+ if(KviQString::matchStringCI(e->szMask,szMask))
+ {
+ c->returnValue()->setString(e->szMask);
+ return true;
+ }
+ }
+
+ c->returnValue()->setNothing();
+ return true;
+}
+
+/*
+ @doc: chan.matchbanexception
+ @type:
+ function
+ @title:
+ $chan.matchbanexception
+ @short:
+ Matches a mask agains the channel ban exception list
+ @syntax:
+ <string> $chan.matchbanexception([window_id],<complete_mask>)
+ @description:
+ Returns the ban exception mask that matches <complete_mask> on channel identified by [window_id].[br]
+ If no ban exception mask matches <complete_mask> an empty string is returned.[br]
+ If [window_id] is empty, the current window is used.[br]
+ If the window designated by [window_id] is not a channel a warning is printed and an empty string is returned.[br]
+ This function is useful to determine if a ban exception set on the channel matches an user.[br]
+*/
+
+static bool chan_kvs_fnc_matchbanexception(KviKvsModuleFunctionCall * c)
+{
+ QString szWinId,szMask;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,0,szWinId)
+ KVSM_PARAMETER("mask",KVS_PT_STRING,0,szMask)
+ KVSM_PARAMETERS_END(c)
+
+ KviChannel * ch = chan_kvs_find_channel(c,szWinId);
+
+ if(!ch)
+ {
+ c->returnValue()->setNothing();
+ return true;
+ }
+
+ KviPointerList<KviMaskEntry> * l = ((KviChannel *)(c->window()))->banExceptionList();
+
+ for(KviMaskEntry * e = l->first();e;e = l->next())
+ {
+ if(KviQString::matchStringCI(e->szMask,szMask))
+ {
+ c->returnValue()->setString(e->szMask);
+ return true;
+ }
+ }
+
+ c->returnValue()->setNothing();
+ return true;
+}
+
+/*
+ @doc: chan.matchinvite
+ @type:
+ function
+ @title:
+ $chan.matchinvite
+ @short:
+ Matches a mask agains the channel invite list
+ @syntax:
+ <string> $chan.matchinvite([window_id:string],<complete_mask>)
+ @description:
+ Returns the invite mask that matches <complete_mask> on channel identified by [window_id].[br]
+ If no invite mask matches <complete_mask> an empty string is returned.[br]
+ If [window_id] is empty, the current window is used.[br]
+ If the window designated by [window_id] is not a channel a warning is printed and an empty string is returned.[br]
+ This function is useful to determine if a invite set on the channel matches an user.[br]
+*/
+
+static bool chan_kvs_fnc_matchinvite(KviKvsModuleFunctionCall * c)
+{
+ QString szWinId,szMask;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,0,szWinId)
+ KVSM_PARAMETER("mask",KVS_PT_STRING,0,szMask)
+ KVSM_PARAMETERS_END(c)
+
+ KviChannel * ch = chan_kvs_find_channel(c,szWinId);
+
+ if(!ch)
+ {
+ c->returnValue()->setNothing();
+ return true;
+ }
+
+ KviPointerList<KviMaskEntry> * l = ((KviChannel *)(c->window()))->inviteList();
+
+ for(KviMaskEntry * e = l->first();e;e = l->next())
+ {
+ if(KviQString::matchStringCI(e->szMask,szMask))
+ {
+ c->returnValue()->setString(e->szMask);
+ return true;
+ }
+ }
+
+ c->returnValue()->setNothing();
+ return true;
+}
+
+/*
+ @doc: chan.usermodelevel
+ @type:
+ function
+ @title:
+ $chan.usermodelevel
+ @short:
+ Returns the channel user-mode level
+ @syntax:
+ <integer> $chan.userModeLevel(<nickname:string>[,<window_id:string>])
+ @description:
+ Returns an integer identifying the specified user's channel mode on the channel specified by <window_id>.[br]
+ If <window_id> is not passed, the current window is used.[br]
+ If the specified window is not a channel, a warning is printed and '0' is returned.[br]
+ This number can be useful to implement comparison functions between
+ users in order to determine the actions they can issue between each other.[br]
+ For example it is granted that an op will have userModeLevel greater than
+ a voiced user or that a simple "modeless" user will have
+ an userModeLevel lower than a halfop.[br]
+ IRC allows multiple modes to be applied to a single user on a channel,
+ in that case this function will return the level of the highest mode
+ applied to the user.[br]
+ Note: Don't rely on this number being any particular exact value except
+ for the completely modeless users (in which case this function will return always '0').
+*/
+
+static bool chan_kvs_fnc_usermodelevel(KviKvsModuleFunctionCall * c)
+{
+ QString szNick,szWinId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("nickname",KVS_PT_STRING,0,szNick)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szWinId)
+ KVSM_PARAMETERS_END(c)
+ KviChannel * ch = chan_kvs_find_channel(c,szWinId);
+
+ kvs_int_t mode=0;
+ if(ch) mode=ch->userListView()->getUserModeLevel(szNick);
+ c->returnValue()->setInteger(mode);
+ return true;
+}
+
+/*
+ @doc: chan.userjointime
+ @type:
+ function
+ @title:
+ $chan.userJoinTime
+ @short:
+ Returns the time that an user has joined the channel
+ @syntax:
+ <integer> $chan.userJoinTime(<nickname:string>[,<window_id:string>])
+ @description:
+ Returns the unix time at which the user specified by <nickname> has joined the channel specified by <window_id>.[br]
+ If <window_id> is not passed, the current window is used.[br]
+ If the specified window is not a channel, a warning is printed and '0' is returned.[br]
+ '0' is also returned when the user's join time is unknown: this is true
+ for all the users that were on the channel before the local user has joined it (e.g.
+ you know the join time only for users that YOU see joining).[br]
+ @seealso:
+ [fnc]$unixTime[/fnc], [fnc]$chan.userLastActionTime[/fnc]
+*/
+
+static bool chan_kvs_fnc_userjointime(KviKvsModuleFunctionCall * c)
+{
+ QString szNick,szWinId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("nickname",KVS_PT_STRING,0,szNick)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szWinId)
+ KVSM_PARAMETERS_END(c)
+ KviChannel * ch = chan_kvs_find_channel(c,szWinId);
+
+ kvs_int_t time=0;
+ if(ch) time=ch->userListView()->getUserJoinTime(szNick);
+ c->returnValue()->setInteger(time);
+ return true;
+}
+
+/*
+ @doc: chan.userlastactiontime
+ @type:
+ function
+ @title:
+ $chan.userLastActionTime
+ @short:
+ Returns the time that an user has last performed some kind of action on the channel
+ @syntax:
+ <integer> $chan.userLastActionTime(<nickname:string>[,<window_id:string>])
+ @description:
+ Returns the unix time at which the user specified by <nickname> has performed
+ some kind of action on the channel specified by <window_id>.[br]
+ If <window_id> is not passed, the current window is used.[br]
+ If the specified window is not a channel, a warning is printed and '0' is returned.[br]
+ '0' is also returned when the user's last action time is unknown: this is true
+ for all the users that were on the channel before the local user has joined it
+ and have performed no actions since that moment.
+ @seealso:
+ [fnc]$unixTime[/fnc], [fnc]$chan.userJoinTime[/fnc]
+*/
+
+static bool chan_kvs_fnc_userlastactiontime(KviKvsModuleFunctionCall * c)
+{
+ QString szNick,szWinId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("nickname",KVS_PT_STRING,0,szNick)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szWinId)
+ KVSM_PARAMETERS_END(c)
+ KviChannel * ch = chan_kvs_find_channel(c,szWinId);
+
+ kvs_int_t time=0;
+ if(ch) time=ch->userListView()->getUserLastActionTime(szNick);
+ c->returnValue()->setInteger(time);
+ return true;
+}
+
+static bool chan_module_init(KviModule * m)
+{
+ KVSM_REGISTER_FUNCTION(m,"name",chan_kvs_fnc_name);
+ KVSM_REGISTER_FUNCTION(m,"topic",chan_kvs_fnc_topic);
+ KVSM_REGISTER_FUNCTION(m,"topicsetby",chan_kvs_fnc_topicsetby);
+ KVSM_REGISTER_FUNCTION(m,"topicsetat",chan_kvs_fnc_topicsetat);
+ KVSM_REGISTER_FUNCTION(m,"usercount",chan_kvs_fnc_usercount);
+ KVSM_REGISTER_FUNCTION(m,"ownercount",chan_kvs_fnc_ownercount);
+ KVSM_REGISTER_FUNCTION(m,"admincount",chan_kvs_fnc_admincount);
+ KVSM_REGISTER_FUNCTION(m,"opcount",chan_kvs_fnc_opcount);
+ KVSM_REGISTER_FUNCTION(m,"voicecount",chan_kvs_fnc_voicecount);
+ KVSM_REGISTER_FUNCTION(m,"halfopcount",chan_kvs_fnc_halfopcount);
+ KVSM_REGISTER_FUNCTION(m,"useropcount",chan_kvs_fnc_useropcount);
+ KVSM_REGISTER_FUNCTION(m,"isowner",chan_kvs_fnc_isowner);
+ KVSM_REGISTER_FUNCTION(m,"ison",chan_kvs_fnc_ison);
+ KVSM_REGISTER_FUNCTION(m,"isadmin",chan_kvs_fnc_isadmin);
+ KVSM_REGISTER_FUNCTION(m,"isop",chan_kvs_fnc_isop);
+ KVSM_REGISTER_FUNCTION(m,"isvoice",chan_kvs_fnc_isvoice);
+ KVSM_REGISTER_FUNCTION(m,"ishalfop",chan_kvs_fnc_ishalfop);
+ KVSM_REGISTER_FUNCTION(m,"isuserop",chan_kvs_fnc_isuserop);
+ KVSM_REGISTER_FUNCTION(m,"ismeuserop",chan_kvs_fnc_ismeuserop);
+ KVSM_REGISTER_FUNCTION(m,"ismevoice",chan_kvs_fnc_ismevoice);
+ KVSM_REGISTER_FUNCTION(m,"ismehalfop",chan_kvs_fnc_ismehalfop);
+ KVSM_REGISTER_FUNCTION(m,"ismeop",chan_kvs_fnc_ismeop);
+ KVSM_REGISTER_FUNCTION(m,"ismeadmin",chan_kvs_fnc_ismeadmin);
+ KVSM_REGISTER_FUNCTION(m,"ismeowner",chan_kvs_fnc_ismeowner);
+ KVSM_REGISTER_FUNCTION(m,"isdead",chan_kvs_fnc_isdead);
+ KVSM_REGISTER_FUNCTION(m,"getflag",chan_kvs_fnc_getflag);
+
+ KVSM_REGISTER_FUNCTION(m,"usermodelevel",chan_kvs_fnc_usermodelevel);
+ KVSM_REGISTER_FUNCTION(m,"userjointime",chan_kvs_fnc_userjointime);//
+ KVSM_REGISTER_FUNCTION(m,"userlastactiontime",chan_kvs_fnc_userlastactiontime);
+ KVSM_REGISTER_FUNCTION(m,"mode",chan_kvs_fnc_mode);
+
+ KVSM_REGISTER_FUNCTION(m,"key",chan_kvs_fnc_key);
+ KVSM_REGISTER_FUNCTION(m,"limit",chan_kvs_fnc_limit);
+ KVSM_REGISTER_FUNCTION(m,"users",chan_kvs_fnc_users);
+ KVSM_REGISTER_FUNCTION(m,"bancount",chan_kvs_fnc_bancount);
+ KVSM_REGISTER_FUNCTION(m,"banexceptioncount",chan_kvs_fnc_banexceptioncount);
+ KVSM_REGISTER_FUNCTION(m,"invitecount",chan_kvs_fnc_invitecount);
+ KVSM_REGISTER_FUNCTION(m,"banlist",chan_kvs_fnc_banlist);
+ KVSM_REGISTER_FUNCTION(m,"banexceptionlist",chan_kvs_fnc_banexceptionlist);
+ KVSM_REGISTER_FUNCTION(m,"invitelist",chan_kvs_fnc_invitelist);
+ KVSM_REGISTER_FUNCTION(m,"matchban",chan_kvs_fnc_matchban);
+ KVSM_REGISTER_FUNCTION(m,"matchbanexception",chan_kvs_fnc_matchbanexception);
+ KVSM_REGISTER_FUNCTION(m,"matchinvite",chan_kvs_fnc_matchinvite);
+ KVSM_REGISTER_FUNCTION(m,"getUrl",chan_kvs_fnc_getUrl);
+
+ return true;
+}
+
+static bool chan_module_cleanup(KviModule *m)
+{
+ return true;
+}
+
+
+KVIRC_MODULE(
+ "Chan", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)"\
+ " (C) 2002 Juanjo Alvarez (juanjux at yahoo dot es)",
+ "Scripting interface for the channel management",
+ chan_module_init,
+ 0,
+ 0,
+ chan_module_cleanup
+)
diff --git a/src/modules/channelsjoin/Makefile.am b/src/modules/channelsjoin/Makefile.am
new file mode 100644
index 00000000..c9f8a78e
--- /dev/null
+++ b/src/modules/channelsjoin/Makefile.am
@@ -0,0 +1,20 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+################################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvichannelsjoin.la
+
+libkvichannelsjoin_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvichannelsjoin_la_SOURCES = libkvichannelsjoin.cpp channelsjoinwindow.cpp
+libkvichannelsjoin_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= channelsjoinwindow.h
+
+m_%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+channelsjoinwindow.cpp: m_channelsjoinwindow.moc
diff --git a/src/modules/channelsjoin/channelsjoinwindow.cpp b/src/modules/channelsjoin/channelsjoinwindow.cpp
new file mode 100644
index 00000000..5f73b55e
--- /dev/null
+++ b/src/modules/channelsjoin/channelsjoinwindow.cpp
@@ -0,0 +1,301 @@
+//=============================================================================
+//
+// File : channelsjoinwindow.cpp
+// Creation date : Thu Nov 6 2001 12:41:18 by Juanjo �varez
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the linkss of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "channelsjoinwindow.h"
+
+#include "kvi_locale.h"
+#include "kvi_options.h"
+#include "kvi_selectors.h"
+#include "kvi_app.h"
+
+#include "kvi_string.h"
+#include "kvi_iconmanager.h"
+#include "kvi_console.h"
+#include "kvi_regchan.h"
+#include "kvi_kvs_script.h"
+
+#include <qlabel.h>
+#include <qlineedit.h>
+#include "kvi_tal_listview.h"
+#include <kvi_tal_groupbox.h>
+#include <qlayout.h>
+#include <qcheckbox.h>
+#include <qpushbutton.h>
+#ifdef COMPILE_USE_QT4
+ #include <q3header.h>
+#else
+ #include <qheader.h>
+#endif
+#include <qevent.h>
+
+extern KviChannelsJoinWindow * g_pChannelsWindow;
+extern QRect g_rectChannelsJoinGeometry;
+// kvi_app.cpp
+extern KVIRC_API KviRegisteredChannelDataBase * g_pRegisteredChannelDataBase;
+
+
+KviChannelsJoinWindow::KviChannelsJoinWindow(QWidget * par, const char * name)
+: QDialog(par,name)
+{
+ m_pConsole=0;
+ setCaption(__tr2qs("Join Channels"));
+
+ setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CHANNEL)));
+
+ QGridLayout * g = new QGridLayout(this,4,2,4,8);
+
+ m_pListView = new KviTalListView(this);
+ m_pListView->addColumn(__tr2qs("Channel"));
+ m_pListView->setRootIsDecorated(true);
+ m_pListView->setSelectionMode(KviTalListView::Single);
+ g->addMultiCellWidget(m_pListView,0,0,0,1);
+ connect(m_pListView,SIGNAL(clicked(KviTalListViewItem *)),this,SLOT(itemClicked(KviTalListViewItem *)));
+ connect(m_pListView,SIGNAL(doubleClicked(KviTalListViewItem *)),this,SLOT(itemDoubleClicked(KviTalListViewItem *)));
+
+
+ m_pGroupBox = new KviTalGroupBox(2,Qt::Horizontal,__tr2qs("Channel" ),this);
+ QString szMsg = __tr2qs("Name");
+ szMsg.append(":");
+ QLabel * l = new QLabel(szMsg,m_pGroupBox);
+
+ m_pChannelEdit = new QLineEdit(m_pGroupBox);
+ connect(m_pChannelEdit,SIGNAL(returnPressed()), this, SLOT(editReturnPressed()));
+ connect(m_pChannelEdit,SIGNAL(textChanged(const QString &)),this,SLOT(editTextChanged(const QString &)));
+
+ szMsg = __tr2qs("Password");
+ szMsg.append(":");
+ l = new QLabel(szMsg,m_pGroupBox);
+
+ m_pPass = new QLineEdit(m_pGroupBox);
+ m_pPass->setEchoMode(QLineEdit::Password);
+
+ g->addMultiCellWidget(m_pGroupBox,1,1,0,1);
+
+
+ m_pJoinButton = new QPushButton(__tr2qs("&Join"),this);
+ // Join on return pressed
+ m_pJoinButton->setDefault(true);
+ connect(m_pJoinButton,SIGNAL(clicked()),this,SLOT(joinClicked()));
+
+#ifdef COMPILE_USE_QT4
+ g->addMultiCellWidget(m_pJoinButton,2,2,0,1,Qt::AlignHCenter);
+#else
+ g->addMultiCellWidget(m_pJoinButton,2,2,0,1,AlignHCenter);
+#endif
+
+
+ m_pShowAtStartupCheck = new KviStyledCheckBox(__tr2qs("Show this window after connecting"),this);
+ m_pShowAtStartupCheck->setChecked(KVI_OPTION_BOOL(KviOption_boolShowChannelsJoinOnIrc));
+ g->addWidget(m_pShowAtStartupCheck,3,0);
+
+
+ QPushButton * cancelButton = new QPushButton(__tr2qs("Close"),this);
+ connect(cancelButton,SIGNAL(clicked()),this,SLOT(cancelClicked()));
+
+ g->addWidget(cancelButton,3,1);
+
+/*
+ KviTalHBox * hb = new KviTalHBox(this);
+ hb->setSpacing(4);
+
+ QPushButton * namesButton = new QPushButton("/names", hb);
+ connect(namesButton,SIGNAL(clicked()),this,SLOT(namesClicked()));
+ QPushButton * whoButton = new QPushButton("/who", hb);
+ connect(whoButton,SIGNAL(clicked()),this,SLOT(whoClicked()));
+
+ g->addWidget(hb,2,0);
+*/
+
+ g->setRowStretch(0,1);
+ g->setColStretch(0,1);
+
+ fillListView();
+
+ if(g_rectChannelsJoinGeometry.y() < 5)g_rectChannelsJoinGeometry.setY(5);
+
+ resize(g_rectChannelsJoinGeometry.width(),g_rectChannelsJoinGeometry.height());
+ move(g_rectChannelsJoinGeometry.x(),g_rectChannelsJoinGeometry.y());
+
+ enableJoin();
+}
+
+KviChannelsJoinWindow::~KviChannelsJoinWindow()
+{
+ KVI_OPTION_BOOL(KviOption_boolShowChannelsJoinOnIrc) = m_pShowAtStartupCheck->isChecked();
+
+ g_rectChannelsJoinGeometry = QRect(pos().x(),pos().y(),size().width(),size().height());
+ g_pChannelsWindow = 0;
+}
+
+void KviChannelsJoinWindow::setConsole(KviConsole * pConsole)
+{
+ m_pConsole=pConsole;
+ fillListView();
+}
+
+void KviChannelsJoinWindow::fillListView()
+{
+ m_pListView->clear();
+
+ m_pListView->header()->hide();
+
+ KviTalListViewItem * par = new KviTalListViewItem(m_pListView,__tr2qs("Recent Channels"));
+ par->setOpen(true);
+ KviTalListViewItem * chld;
+
+ if(m_pConsole)
+ {
+
+ QStringList* pList=g_pApp->getRecentChannels(m_pConsole->currentNetworkName());
+ if(pList)
+ {
+ for(QStringList::Iterator it = pList->begin(); it != pList->end(); ++it)
+ {
+ chld = new KviTalListViewItem(par,*it);
+ chld->setPixmap(0,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CHANNEL)));
+ }
+ }
+ }
+
+ // FIXME: Registered channels go here!
+ par = new KviTalListViewItem(m_pListView,__tr2qs("Registered Channels"));
+ par->setOpen(true);
+
+ KviPointerHashTable<const char *,KviRegisteredChannelList> * d = g_pRegisteredChannelDataBase->channelDict();
+ if(d)
+ {
+ KviPointerHashTableIterator<const char *,KviRegisteredChannelList> it(*d);
+ while(it.current())
+ {
+ chld = new KviTalListViewItem(par,it.currentKey());
+ chld->setPixmap(0,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CHANNEL)));
+ ++it;
+ }
+ }
+
+
+}
+
+void KviChannelsJoinWindow::itemClicked(KviTalListViewItem * it)
+{
+ if(!it)return;
+ if(!it->parent())return;
+ KviStr tmp = it->text(0);
+ m_pChannelEdit->setText(tmp.ptr());
+ enableJoin();
+}
+
+void KviChannelsJoinWindow::itemDoubleClicked(KviTalListViewItem * it)
+{
+ if(!it)return;
+ if(!it->parent())return;
+ KviStr tmp = it->text(0);
+ m_pChannelEdit->setText(tmp.ptr());
+ enableJoin();
+ joinClicked();
+}
+
+
+void KviChannelsJoinWindow::editTextChanged(const QString &)
+{
+ enableJoin();
+}
+
+void KviChannelsJoinWindow::enableJoin()
+{
+ KviStr tmp = m_pChannelEdit->text();
+ KviConsole * c = g_pApp->topmostConnectedConsole();
+ if(c)
+ {
+ if(tmp.isEmpty())
+ m_pJoinButton->setEnabled(false);
+ else
+ m_pJoinButton->setEnabled(true);
+ } else {
+ m_pListView->setEnabled(false);
+ m_pGroupBox->setEnabled(false);
+ m_pJoinButton->setEnabled(false);
+ }
+}
+
+void KviChannelsJoinWindow::cancelClicked()
+{
+ delete this;
+}
+
+void KviChannelsJoinWindow::joinClicked()
+{
+ KviStr pass = m_pPass->text();
+ KviStr tmp = m_pChannelEdit->text();
+
+ if(tmp.isEmpty())return;
+
+ KviStr command(KviStr::Format,"join %s %s",tmp.ptr(),pass.ptr());
+
+ KviConsole * c = g_pApp->topmostConnectedConsole();
+ if(!c)return; // no connection
+ KviWindow * w = g_pActiveWindow;
+ if(w->console() != c)w = c;
+ KviKvsScript::run(command.ptr(),w);
+
+ m_pChannelEdit->setText("");
+ m_pPass->setText("");
+}
+
+/*
+void KviChannelsJoinWindow::whoClicked()
+{
+ KviStr tmp = m_pChannelEdit->text();
+ if(!tmp.isEmpty())doCmd("who", tmp.ptr());
+}
+
+void KviChannelsJoinWindow::namesClicked()
+{
+ KviStr tmp = m_pChannelEdit->text();
+ //FIXME: I must be a nice guy and implement /names in the core...
+ if(!tmp.isEmpty())doCmd("raw names", tmp.ptr());
+}
+
+void KviChannelsJoinWindow::itemDoubleClicked(KviTalListBoxItem * it)
+{
+ if (it == 0)return;
+ KviStr tmp = it->text();
+ doCmd("join", tmp.ptr());
+// if(KVI_OPTION_BOOL(KviOption_boolCloseChannelsJoinAfterJoin))
+// g_pApp->collectGarbage(this);
+}
+*/
+
+void KviChannelsJoinWindow::editReturnPressed()
+{
+ joinClicked();
+}
+
+void KviChannelsJoinWindow::closeEvent(QCloseEvent *e)
+{
+ e->ignore();
+ delete this;
+}
+
+#include "m_channelsjoinwindow.moc"
diff --git a/src/modules/channelsjoin/channelsjoinwindow.h b/src/modules/channelsjoin/channelsjoinwindow.h
new file mode 100644
index 00000000..d0ce62a9
--- /dev/null
+++ b/src/modules/channelsjoin/channelsjoinwindow.h
@@ -0,0 +1,70 @@
+//
+// File : channelsjoinwindow.h
+// Creation date : Thu Nov 06 2001 12:30:25 CEST by Juan Jos��varez
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#ifndef _CHANNELSJOIN_H_
+#define _CHANNELSJOIN_H_
+#include "kvi_window.h"
+#include "kvi_string.h"
+
+#include <qdialog.h>
+
+class KviConsole;
+class KviTalGroupBox;
+class QPushButton;
+class QLineEdit;
+
+#include "kvi_styled_controls.h"
+#include "kvi_tal_listview.h"
+
+class KviChannelsJoinWindow : public QDialog
+{
+ Q_OBJECT
+public:
+ KviChannelsJoinWindow(QWidget * par, const char * name);
+ ~KviChannelsJoinWindow();
+protected:
+ QLineEdit * m_pChannelEdit;
+ KviTalListView * m_pListView;
+ KviTalGroupBox * m_pGroupBox;
+ QLineEdit * m_pPass;
+ KviStyledCheckBox * m_pShowAtStartupCheck;
+ KviStyledCheckBox * m_pCloseAfterJoinCheck;
+ QPushButton * m_pJoinButton;
+ KviConsole * m_pConsole;
+public:
+ virtual void closeEvent(QCloseEvent *e);
+ void fillListView();
+ void enableJoin();
+ void setConsole(KviConsole * pConsole);
+protected slots:
+ void editTextChanged(const QString &);
+ void itemClicked(KviTalListViewItem *it);
+ void itemDoubleClicked(KviTalListViewItem *it);
+ void editReturnPressed();
+ void cancelClicked();
+ void joinClicked();
+// void whoClicked();
+// void namesClicked();
+};
+
+#endif //_CHANNELSJOINSWINDOW_H_
diff --git a/src/modules/channelsjoin/libkvichannelsjoin.cpp b/src/modules/channelsjoin/libkvichannelsjoin.cpp
new file mode 100644
index 00000000..a2936e8e
--- /dev/null
+++ b/src/modules/channelsjoin/libkvichannelsjoin.cpp
@@ -0,0 +1,108 @@
+//=============================================================================
+//
+// File : libkvichannelsjoin.cpp
+// Creation date : Thu Nov 06 2001 12:30:25 CEST by Juanjo Alvarez
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2005 Juanjo Alvarez
+// Copyright (C) 2001-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+#include "kvi_module.h"
+
+#include "channelsjoinwindow.h"
+#include "kvi_window.h"
+#include "kvi_frame.h"
+#include "kvi_locale.h"
+#include "kvi_config.h"
+
+#include <qsplitter.h>
+
+KviChannelsJoinWindow * g_pChannelsWindow = 0;
+QRect g_rectChannelsJoinGeometry;
+
+/*
+ @doc: channelsjoin.open
+ @type:
+ command
+ @title:
+ channelsjoin.open
+ @short:
+ Opens a window to join channels
+ @syntax:
+ channelsjoin.open
+ @description:
+ Shows a dialog that allows the user to enter channels in a visual manner.[br]
+ This command is exported by the "channelsjoin" module.
+
+*/
+
+static bool channelsjoin_kvs_cmd_open(KviKvsModuleCommandCall * c)
+{
+ if(!g_pChannelsWindow)g_pChannelsWindow = new KviChannelsJoinWindow(c->window()->frame(),"channelsjoin");
+
+ g_pChannelsWindow->setConsole(c->window()->console());
+
+ g_pChannelsWindow->show();
+ g_pChannelsWindow->raise();
+ g_pChannelsWindow->setFocus();
+
+ return true;
+
+
+}
+
+static bool channelsjoin_module_init(KviModule * m)
+{
+ QString fName;
+ m->getDefaultConfigFileName(fName);
+ KviConfig cfg(fName,KviConfig::Read);
+
+ g_rectChannelsJoinGeometry = cfg.readRectEntry("geometry",QRect(30,30,320,410));
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"open",channelsjoin_kvs_cmd_open);
+ return true;
+}
+
+static bool channelsjoin_module_cleanup(KviModule *m)
+{
+ QString fName;
+ m->getDefaultConfigFileName(fName);
+ KviConfig cfg(fName,KviConfig::Write);
+
+ cfg.writeEntry("geometry",g_rectChannelsJoinGeometry);
+
+ if (g_pChannelsWindow)delete g_pChannelsWindow;
+ g_pChannelsWindow = 0;
+ return true;
+}
+
+static bool channelsjoin_module_can_unload(KviModule *m)
+{
+ return (!g_pChannelsWindow);
+}
+
+KVIRC_MODULE(
+ "ChannelsJoin",
+ "0.0.3",
+ "Copyright (C) 2001-2006 Juan Jos��varez ([email protected]), Alexey ([email protected])",
+ "Window to join channels in a GUI",
+ channelsjoin_module_init,
+ channelsjoin_module_can_unload,
+ 0,
+ channelsjoin_module_cleanup
+)
diff --git a/src/modules/clock/Makefile.am b/src/modules/clock/Makefile.am
new file mode 100644
index 00000000..bf0a6816
--- /dev/null
+++ b/src/modules/clock/Makefile.am
@@ -0,0 +1,20 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkviclock.la
+
+libkviclock_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkviclock_la_SOURCES = libkviclock.cpp
+libkviclock_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= libkviclock.h
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+libkviclock.cpp: libkviclock.moc
diff --git a/src/modules/clock/libkviclock.cpp b/src/modules/clock/libkviclock.cpp
new file mode 100644
index 00000000..03757b0d
--- /dev/null
+++ b/src/modules/clock/libkviclock.cpp
@@ -0,0 +1,257 @@
+//
+// File : kvi_clock.cpp
+// Creation date : Mon Aug 13 2001 16:34:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "libkviclock.h"
+#include "kvi_module.h"
+#include "kvi_console.h"
+#include "kvi_options.h"
+#include "kvi_frame.h"
+#include "kvi_locale.h"
+
+#include "kvi_pointerlist.h"
+#include <qbitmap.h>
+#include <qtooltip.h>
+#include <qpainter.h>
+
+
+
+
+//#include <X11/Xlib.h>
+#include <time.h>
+
+#if 0
+
+
+#warning "Change this XPM to bitmap bits! (And thus use the QBitmap(w,h,bits) constructor)"
+#warning "Support GMT , LOCAL , DATE , ALARM..."
+
+/* XPM */
+static const char * kvi_clock_digits_xpm[] = {
+"234 25 3 1",
+" c None",
+". c #000000",
+"+ c #FFFFFF",
+"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
+"+................+++++++++++.......++................++................+...+++++++.......++................++................++................++................++................+++++++++++++++++++++++++++++++++++++++++++++...+++++++",
+"+................+++++++++++.......++...+++++++......++...+++++++......+...+++++++.......++....++++++++++++++....++++++......++...+++++++......++....++++++......++...+++++++......++++++++++++++++++++++++++++++++++++++++++++.....++++++",
+"+....++++++......+++++++++++.......++...+++++++......++...+++++++......+...+++++++.......++....++++++++++++++....++++++......++...+++++++......++....++++++......++...+++++++......++++++++++++++++++++++++++++++++++++++++++++.....++++++",
+"+....++++++......+++++++++++.......++...+++++++......++...+++++++......+...+++++++.......++....++++++++++++++....++++++......++...+++++++......++....++++++......++...+++++++......++++...+++++++++++++++++++++++++++++++++++++.....++++++",
+"+....++++++......+++++++++++.......++...+++++++......++...+++++++......+...+++++++.......++....++++++++++++++....++++++......++...+++++++......++....++++++......++...+++++++......++++...++++++++++++++++++++++++++++++++++++.......+++++",
+"+....++++++......+++++++++++.......++++++++++++......++...+++++++......+...+++++++.......++....++++++++++++++....++++++++++++++...+++++++......++....++++++......++...+++++++......++++...++++..++++++++++++++++++++++++++++++++++++++++++",
+"+....++++++......+++++++++++.......++++++++++++......++++++++++++......+...+++++++.......++....++++++++++++++....++++++++++++++++++++++++......++....++++++......++...+++++++......+++++++++++..+++++++++++++++++++++++++++++++++.++++++++",
+"+....++++++......+++++++++++.......++................+++...............+.................++................++................++++++++++++......++................++...+++++++......+++++++++++..++++++++++++++++++++++++++++++++++++++++++",
+"+....++++++......+++++++++++.......++................+++...............+.................++................++................++++++++++++......++................++................+++++++++++..++++++++++++++++++++++++++++++++++++++++++",
+"+....++++++......+++++++++++.......++...+++++++++++++++++++++++++......+++++++++++.......++++++++++++......++....++++++......++++++++++++......++....++++++......++++++++++++......+++++++++++..++++++++++++++++++++++++++++++++++++++++++",
+"+....++++++......+++++++++++.......++...+++++++++++++++++++++++++......+++++++++++.......++++++++++++......++....++++++......++++++++++++......++....++++++......++++++++++++......++++...++++.......++.......++.......+++++.+++++++++.+++",
+"+....++++++......+++++++++++.......++...+++++++++++++++...+++++++......+++++++++++.......++....++++++......++....++++++......++++++++++++......++....++++++......++++++++++++......++++...++++..+++..++..+.+..++..+++++++++.++.++.++.++.++",
+"+....++++++......+++++++++++.......++...+++++++++++++++...+++++++......+++++++++++.......++....++++++......++....++++++......++++++++++++......++....++++++......++++++++++++......++++...++++..+++..++..+.+..++.......++++.+.++...++.+.++",
+"+....++++++......+++++++++++.......++...+++++++++++++++...+++++++......+++++++++++.......++....++++++......++....++++++......++++++++++++......++....++++++......++++++++++++......+++++++++++..+++..++..+.+..+++++++..++++.+.++...++.+.++",
+"+................+++++++++++.......++................++................+++++++++++.......++................++................++++++++++++......++................++++++++++++......+++++++++++..+++..++..+.+..++..+++..++++.++.++.++.++.++",
+"+................+++++++++++.......++................++................+++++++++++.......++................++................++++++++++++......++................++++++++++++......+++++++++++..+++..++..+.+..++.......+++++.+++++++++.+++",
+"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
+"+................++................++................++................++................+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
+"+..+...+++.++++..++..+.+.+++.++++..++..+++.+++.+.....++..+++.+++.+.....++..+++.+++.+.....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
+"+..+...+.+.+.....++..+.+..+..+.....++..+...+.+.+.....++..+...+.+.+.....++..+...+.+.+.....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
+"+..+...+.+.+.....++..+.+..+..+.....++..+...+++.+.....++..+...+++.+.....++..+...+++.+.....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
+"+..+...+.+.+.....++..+.+..+..+.....++..+...+.+.+.....++..+...+.+.+.....++..+...+.+.+.....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
+"+..+++.+++.++++..++..+++..+..++++..++..+++.+.+.++++..++..+++.+.+.++++..++..+++.+.+.++++..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
+"+................++................++................++................++................+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"};
+
+
+// kvi_app.cpp
+//extern Display * g_display;
+//extern GC g_iccGC;
+extern QPixmap * g_pIccMemBuffer;
+//extern HANDLE g_hIccMemBuffer;
+
+
+static KviPointerList<KviClockDisplay> * g_pClockWidgetList;
+
+static QBitmap * g_pClockBitmap = 0;
+
+
+KviClockDisplay::KviClockDisplay(KviIrcToolBarAppletContainer * pContainer)
+: KviIrcToolBarGraphicalApplet(pContainer,"clock_display")
+{
+ g_pClockWidgetList->append(this);
+
+ for(int i=0;i<6;i++)
+ {
+ m_uDigit[i] = 0;
+ }
+
+ startTimer(1000);
+}
+
+KviClockDisplay::~KviClockDisplay()
+{
+ g_pClockWidgetList->removeRef(this);
+}
+
+void KviClockDisplay::timerEvent(QTimerEvent *e)
+{
+ time_t t = time(0);
+ struct tm * pTm = gmtime(&t);
+
+ m_uDigit[0] = pTm->tm_hour / 10;
+ m_uDigit[1] = pTm->tm_hour % 10;
+ m_uDigit[2] = pTm->tm_min / 10;
+ m_uDigit[3] = pTm->tm_min % 10;
+ m_uDigit[4] = pTm->tm_sec / 10;
+ m_uDigit[5] = pTm->tm_sec % 10;
+
+ update();
+}
+
+
+
+void KviClockDisplay::drawContents(QPainter *p)
+{
+ //XSetLineAttributes(g_display,g_iccGC,1,LineSolid,CapButt,JoinMiter); //need this for line size
+
+
+ //XSetClipMask(g_display,g_iccGC,g_pClockBitmap->handle());
+
+ #define LOW_ROW_Y 6
+
+
+
+#define DRAW_DIGIT(_x,_num,_br) \
+ p->setBrushOrigin(- (m_uDigit[_num] * 18) + _x,LOW_ROW_Y); \
+ p->fillRect(_x,LOW_ROW_Y,18,18,_br);
+
+#define DRAW_DOTS(_x,_br) \
+ p->setBrushOrigin(- 180 + _x,LOW_ROW_Y); \
+ p->fillRect(_x,LOW_ROW_Y,9,18,_br);
+
+ QBrush br1(KVI_OPTION_COLOR(KviOption_colorIrcToolBarAppletForegroundLowContrast),*g_pClockBitmap);
+
+ p->setBrushOrigin(- 216,LOW_ROW_Y);
+ p->fillRect(0,LOW_ROW_Y,18,18,br1);
+
+ p->setBrushOrigin(22,LOW_ROW_Y + 2 /*-18 + LOW_ROW_Y + 20 */);
+ p->fillRect(22,LOW_ROW_Y + 20,18 * 5,7,br1);
+
+ QBrush br2(KVI_OPTION_COLOR(KviOption_colorIrcToolBarAppletForegroundHighContrastActive1),*g_pClockBitmap);
+
+ DRAW_DIGIT(22,0,br2)
+ DRAW_DIGIT(40,1,br2)
+
+ DRAW_DOTS(58,br2)
+
+ DRAW_DIGIT(67,2,br2)
+ DRAW_DIGIT(85,3,br2)
+
+ DRAW_DOTS(103,br2)
+
+ DRAW_DIGIT(112,4,br2)
+ DRAW_DIGIT(130,5,br2)
+
+}
+
+QSize KviClockDisplay::sizeHint() const
+{
+ return QSize(KVI_IRCTOOLBARAPPLET_MAXIMUM_WIDTH,KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT);
+}
+
+
+/*
+ @doc: clock.add
+ @type:
+ command
+ @title:
+ clock.add
+ @short:
+ Adds a Clock applet
+ @syntax:
+ clock.add
+ @description:
+*/
+
+
+
+static bool clock_module_cmd_add(KviModule *m,KviCommand *c)
+{
+ ENTER_STACK_FRAME(c,"clock_module_cmd_add");
+
+ KviStr dummy;
+ if(!g_pUserParser->parseCmdFinalPart(c,dummy))return false;
+
+ KviClockDisplay * dpy = new KviClockDisplay(c->window()->frame()->frameAppletContainer());
+ c->window()->frame()->frameAppletContainer()->addApplet(dpy);
+ dpy->show();
+
+ return c->leaveStackFrame();
+}
+#endif
+
+
+static bool clock_module_init(KviModule *m)
+{
+#if 0
+ g_pClockBitmap = new QBitmap();
+ QPixmap pix(kvi_clock_digits_xpm);
+ *g_pClockBitmap = pix;
+ g_pClockWidgetList = new KviPointerList<KviClockDisplay>;
+ g_pClockWidgetList->setAutoDelete(false);
+ m->registerCommand("add",clock_module_cmd_add);
+#endif
+ return true;
+}
+
+static bool clock_module_cleanup(KviModule *m)
+{
+#if 0
+ while(g_pClockWidgetList->first())
+ {
+ KviClockDisplay * dpy = g_pClockWidgetList->first();
+ dpy->container()->removeApplet(dpy); // deleted path
+ }
+ delete g_pClockWidgetList;
+ delete g_pClockBitmap;
+#endif
+ return true;
+}
+
+static bool clock_module_can_unload(KviModule *m)
+{
+#if 0
+ return g_pClockWidgetList->isEmpty();
+#else
+ return true;
+#endif
+}
+
+KVIRC_MODULE(
+ "Clock", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "Clock toolbar applet",
+ clock_module_init,
+ clock_module_can_unload,
+ 0,
+ clock_module_cleanup
+)
+#if 0
+#include "libkviclock.moc"
+#endif
diff --git a/src/modules/clock/libkviclock.h b/src/modules/clock/libkviclock.h
new file mode 100644
index 00000000..bf4881a6
--- /dev/null
+++ b/src/modules/clock/libkviclock.h
@@ -0,0 +1,46 @@
+#ifndef _LIBKVICLOCK_H_
+#define _LIBKVICLOCK_H_
+
+//
+// File : kvi_clock.cpp
+// Creation date : Mon Aug 13 2001 16:33:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#if 0
+
+#include "kvi_irctoolbar.h"
+
+class KviClockDisplay : public KviIrcToolBarGraphicalApplet
+{
+ Q_OBJECT
+public:
+ KviClockDisplay(KviIrcToolBarAppletContainer * pContainer);
+ ~KviClockDisplay();
+protected:
+ unsigned char m_uDigit[6];
+protected:
+ virtual void drawContents(QPainter * p);
+ virtual QSize sizeHint() const;
+ virtual void timerEvent(QTimerEvent *e);
+};
+
+#endif
+
+#endif
diff --git a/src/modules/codetester/Makefile.am b/src/modules/codetester/Makefile.am
new file mode 100644
index 00000000..37540094
--- /dev/null
+++ b/src/modules/codetester/Makefile.am
@@ -0,0 +1,17 @@
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvicodetester.la
+
+libkvicodetester_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvicodetester_la_SOURCES = libkvicodetester.cpp codetester.cpp
+nodist_libkvicodetester_la_SOURCES = moc_codetester.cpp
+
+noinst_HEADERS = codetester.h
+libkvicodetester_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+# noinst_HEADERS=
+
+moc_codetester.cpp: codetester.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/codetester/codetester.cpp b/src/modules/codetester/codetester.cpp
new file mode 100644
index 00000000..69a46abc
--- /dev/null
+++ b/src/modules/codetester/codetester.cpp
@@ -0,0 +1,157 @@
+//
+// File : codetester.cpp
+// Creation date : Mon Dec 23 2002 20:28:18 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the linkss of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include "codetester.h"
+
+#include "kvi_iconmanager.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_config.h"
+#include "kvi_filedialog.h"
+#include "kvi_fileutils.h"
+#include "kvi_scripteditor.h"
+
+#include "kvi_app.h"
+#include "kvi_console.h"
+#include "kvi_parameterlist.h"
+#include "kvi_kvs_script.h"
+#include "kvi_kvs_variantlist.h"
+
+#include <qpushbutton.h>
+#include <qlayout.h>
+#include <qlabel.h>
+#include <qtoolbutton.h>
+#include "kvi_tal_popupmenu.h"
+
+extern KviPointerList<KviCodeTesterWindow> * g_pCodeTesterWindowList;
+
+
+
+
+KviCodeTester::KviCodeTester(QWidget * par)
+: QWidget(par,"code_tester")
+{
+ QGridLayout * g = new QGridLayout(this,2,4,2,2);
+ m_pEditor = KviScriptEditor::createInstance(this);
+ g->addMultiCellWidget(m_pEditor,0,0,0,3);
+ m_pExecuteButton = new QPushButton(__tr2qs("&Execute"),this);
+ g->addWidget(m_pExecuteButton,1,3);
+ connect(m_pExecuteButton,SIGNAL(clicked()),this,SLOT(execute()));
+
+ m_pModeLabel = new QLabel(__tr("Params:"),this);
+ g->addWidget(m_pModeLabel,1,1);
+ m_pParams = new QLineEdit(this);
+ g->addWidget(m_pParams,1,2);
+}
+
+KviCodeTester::~KviCodeTester()
+{
+ KviScriptEditor::destroyInstance(m_pEditor);
+}
+
+//#warning "Allow to bind the command to a specified window"
+
+void KviCodeTester::execute()
+{
+ QString parms = m_pParams->text();
+ QString buffer;
+ m_pEditor->getText(buffer);
+ KviConsole * con = g_pApp->activeConsole();
+ //KviParameterList * l = new KviParameterList(parms.ptr());
+ KviKvsScript::run(buffer,con,new KviKvsVariantList(new QString(parms)));
+}
+
+KviCodeTesterWindow::KviCodeTesterWindow(KviFrame * lpFrm)
+: KviWindow(KVI_WINDOW_TYPE_SCRIPTEDITOR,lpFrm,"codetester",0)
+{
+ g_pCodeTesterWindowList->append(this);
+
+ m_pTester = new KviCodeTester(this);
+}
+
+KviCodeTesterWindow::~KviCodeTesterWindow()
+{
+ g_pCodeTesterWindowList->removeRef(this);
+}
+
+QPixmap * KviCodeTesterWindow::myIconPtr()
+{
+ return g_pIconManager->getSmallIcon(KVI_SMALLICON_BOMB);
+}
+
+void KviCodeTesterWindow::resizeEvent(QResizeEvent *e)
+{
+ m_pTester->setGeometry(0,0,width(),height());
+}
+
+void KviCodeTesterWindow::fillCaptionBuffers()
+{
+ m_szPlainTextCaption = __tr2qs("Script Tester");
+
+ static QString p1("<nobr><font color=\"");
+ static QString p2("\"><b>");
+ static QString p3("</b></font></nobr>");
+
+ m_szHtmlActiveCaption = p1;
+ m_szHtmlActiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name();
+ m_szHtmlActiveCaption += p2;
+ m_szHtmlActiveCaption += m_szPlainTextCaption;
+ m_szHtmlActiveCaption += p3;
+
+ m_szHtmlInactiveCaption = p1;
+ m_szHtmlInactiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name();
+ m_szHtmlInactiveCaption += p2;
+ m_szHtmlInactiveCaption += m_szPlainTextCaption;
+ m_szHtmlInactiveCaption += p3;
+}
+
+
+void KviCodeTesterWindow::getConfigGroupName(KviStr &szName)
+{
+ szName = "codetester";
+}
+
+
+void KviCodeTesterWindow::saveProperties(KviConfig *cfg)
+{
+/*
+#ifdef COMPILE_SCRIPTTOOLBAR
+ cfg->writeEntry("Sizes",m_pEditor->sizes());
+ cfg->writeEntry("LastRaw",m_pEditor->lastEditedRaw().ptr());
+ //debug("LAST EDITED=%s",m_pEditor->lastEditedRaw().ptr());
+#endif // COMPILE_SCRIPTTOOLBAR
+*/
+}
+
+void KviCodeTesterWindow::loadProperties(KviConfig *cfg)
+{
+/*
+#ifdef COMPILE_SCRIPTTOOLBAR
+ QValueList<int> def;
+ def.append(20);
+ def.append(80);
+ m_pEditor->setSizes(cfg->readIntListEntry("Sizes",def));
+ KviStr tmp = cfg->readEntry("LastRaw","");
+ m_pEditor->editRaw(tmp);
+ //debug("LAST EDITED WAS %s",tmp.ptr());
+#endif // COMPILE_SCRIPTTOOLBAR
+*/
+}
diff --git a/src/modules/codetester/codetester.h b/src/modules/codetester/codetester.h
new file mode 100644
index 00000000..ce24ca5d
--- /dev/null
+++ b/src/modules/codetester/codetester.h
@@ -0,0 +1,67 @@
+#ifndef _CODETESTER_H_
+#define _CODETESTER_H_
+//
+// File : eventeditor.h
+// Creation date : Mon Dec 23 2002 20:24:55 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the linkss of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_window.h"
+#include "kvi_string.h"
+
+#include <qlineedit.h>
+
+class QPushButton;
+class QLabel;
+
+class KviScriptEditor;
+
+class KviCodeTester : public QWidget
+{
+ Q_OBJECT
+public:
+ KviCodeTester(QWidget * par);
+ ~KviCodeTester();
+private:
+ KviScriptEditor * m_pEditor;
+ QLineEdit * m_pParams;
+ QPushButton * m_pExecuteButton;
+ QLabel * m_pModeLabel;
+private slots:
+ void execute();
+};
+
+class KviCodeTesterWindow : public KviWindow
+{
+ Q_OBJECT
+public:
+ KviCodeTesterWindow(KviFrame * lpFrm);
+ ~KviCodeTesterWindow();
+protected:
+ KviCodeTester * m_pTester;
+protected:
+ virtual QPixmap * myIconPtr();
+ virtual void fillCaptionBuffers();
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual void getConfigGroupName(KviStr &szName);
+ virtual void saveProperties(KviConfig *);
+ virtual void loadProperties(KviConfig *);
+};
+
+#endif //_CODETESTER_H_
diff --git a/src/modules/codetester/libkvicodetester.cpp b/src/modules/codetester/libkvicodetester.cpp
new file mode 100644
index 00000000..ec84a217
--- /dev/null
+++ b/src/modules/codetester/libkvicodetester.cpp
@@ -0,0 +1,89 @@
+//===============================================================================
+//
+// File : libkvicodetester.cpp
+// Creation date : Mon 23 Dec 2002 20:23:59 2002 GMT by Szymon Stefanek
+//
+// This toolbar is part of the KVirc irc client distribution
+// Copyright (C) 2002-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//===============================================================================
+
+#include "kvi_module.h"
+#include "kvi_locale.h"
+#include "kvi_frame.h"
+#include "kvi_pointerlist.h"
+
+#include "codetester.h"
+
+KviPointerList<KviCodeTesterWindow> * g_pCodeTesterWindowList = 0;
+
+
+/*
+ @doc: codetester.open
+ @type:
+ command
+ @title:
+ codetester.open
+ @short:
+ Shows the code tester window
+ @syntax:
+ codetester.open
+ @description:
+ Opens a new code tester window
+*/
+
+static bool codetester_kvs_cmd_open(KviKvsModuleCommandCall * c)
+{
+ KviCodeTesterWindow * w = new KviCodeTesterWindow(c->window()->frame());
+ c->window()->frame()->addWindow(w);
+ w->setFocus();
+ return true;
+}
+
+static bool codetester_module_init(KviModule * m)
+{
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"open",codetester_kvs_cmd_open);
+
+ g_pCodeTesterWindowList = new KviPointerList<KviCodeTesterWindow>();
+ g_pCodeTesterWindowList->setAutoDelete(false);
+ return true;
+}
+
+static bool codetester_module_can_unload(KviModule * m)
+{
+ return (g_pCodeTesterWindowList->count() == 0);
+}
+
+static bool codetester_module_cleanup(KviModule *m)
+{
+ while(KviCodeTesterWindow * w = g_pCodeTesterWindowList->first())
+ {
+ w->close(); // deleted path!
+ }
+ return true;
+}
+
+KVIRC_MODULE(
+ "CodeTester", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "Code tester window",
+ codetester_module_init,
+ codetester_module_can_unload,
+ 0,
+ codetester_module_cleanup
+)
diff --git a/src/modules/config/Makefile.am b/src/modules/config/Makefile.am
new file mode 100644
index 00000000..1a43c2e9
--- /dev/null
+++ b/src/modules/config/Makefile.am
@@ -0,0 +1,18 @@
+###############################################################################
+# KVirc IRC client Makefile - 31.01.2002 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkviconfig.la
+
+libkviconfig_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkviconfig_la_SOURCES = libkviconfig.cpp
+libkviconfig_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+# noinst_HEADERS=
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/config/libkviconfig.cpp b/src/modules/config/libkviconfig.cpp
new file mode 100644
index 00000000..854c321b
--- /dev/null
+++ b/src/modules/config/libkviconfig.cpp
@@ -0,0 +1,877 @@
+//=============================================================================
+//
+// File : libkviconfig.cpp
+// Creation date : Thu Jan 31 2002 22:50:12 GMT by Szymon Stefanek
+//
+// This config is part of the KVirc irc client distribution
+// Copyright (C) 2002-2005 Szymon Stefanek ([email protected])
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_module.h"
+#include "kvi_string.h"
+#include "kvi_config.h"
+#include "kvi_fileutils.h"
+#include "kvi_app.h"
+#include "kvi_locale.h"
+
+#include "kvi_pointerhashtable.h"
+
+static KviPointerHashTable<QString,KviConfig> * g_pConfigDict = 0;
+static int g_iNextConfigId = 0;
+
+/*
+ @doc: config.open
+ @type:
+ function
+ @title:
+ $config.open
+ @short:
+ Opens a config file
+ @syntax:
+ $config.open(<filename:string>[,<flags:string>])
+ @description:
+ Opens a config file.
+ If the file already exists , its contents
+ are parsed and available for extracting by the [fnc]$config.read[/fnc]() function.[br]
+ <filename> may be an absolute path or a relative path: if a relative path is used,
+ KVIrc will complete it with a local kvirc directory suitable for writing script config files.[br]
+ If the config file doesn't exist , it is opened as empty config file.[br]
+ Flags can contain a combination of letters 'r' and 'w'.[br]
+ If only 'r' is specified , the config file is opened in "read-only" mode: no changes will be written to disk.[br]
+ If only 'w' is specified , the config file is opened in "write-only" mode: the contents of the file on disk
+ are not readed.[br]
+ If <flags> are not specified then 'rw' is assumed.[br]
+ The function returns an identifier for the open config file. This identifier
+ is a mandatory parameter in all the other config.* functions and commands.[br]
+ The config section is set to the default section name: you can change it by using
+ [cmd]config.setsection[/cmd].[br]
+ After you have finished using the file , don't forget to call [cmd]config.close[/cmd]!
+ KVIrc tries to not open a config file twice: if the file was already opened then
+ the identifier of the open file is returned.[br]
+ You can check if a config file is already open by using the
+ [fnc]$config.id[/fnc]() function.[br]
+ @examples:
+ [example]
+ # It is a good idea to store the returned id to a variable :)
+ %cfg = $config.open(myscript.kvc)
+ %num = [fnc]$config.read[/fnc](%cfg,Number,0)
+ [cmd]echo[/cmd] Number of entries is %num
+ %num++;
+ [cmd]config.write[/cmd] %cfg Number %num
+ [cmd]config.close[/cmd] %cfg
+ [/example]
+ @seealso:
+ [module:config]Config module documentation[/module]
+*/
+
+
+static bool config_kvs_fnc_open(KviKvsModuleFunctionCall * c)
+{
+ QString szFile;
+ QString szMode;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("filename",KVS_PT_STRING,0,szFile)
+ KVSM_PARAMETER("mode",KVS_PT_STRING,KVS_PF_OPTIONAL,szMode)
+ KVSM_PARAMETERS_END(c)
+
+ KviConfig::FileMode fileMode;
+
+ if(szMode.contains('r'))
+ {
+ if(szMode.contains('w'))fileMode = KviConfig::ReadWrite;
+ else fileMode = KviConfig::Read;
+ } else {
+ if(szMode.contains('w'))fileMode = KviConfig::Write;
+ else fileMode = KviConfig::ReadWrite;
+ }
+
+ KviFileUtils::adjustFilePath(szFile);
+ QString szAbsFile;
+
+ if(KviFileUtils::isAbsolutePath(szFile))szAbsFile = szFile;
+ else g_pApp->getLocalKvircDirectory(szAbsFile,KviApp::ConfigScripts,szFile,true);
+
+ KviPointerHashTableIterator<QString,KviConfig> it(*g_pConfigDict);
+ while(it.current())
+ {
+ if(KviQString::equalCI(it.current()->fileName(),szAbsFile))
+ {
+ c->returnValue()->setString(it.currentKey());
+ if(it.current()->readOnly() && (fileMode & KviConfig::Write))
+ {
+ it.current()->setReadOnly(false);
+ }
+ return true;
+ }
+ ++it;
+ }
+
+ KviConfig * cfg = new KviConfig(szAbsFile,fileMode);
+ g_iNextConfigId++;
+ QString tmp = QString("%1").arg(g_iNextConfigId);
+ g_pConfigDict->insert(tmp,cfg);
+ c->returnValue()->setString(tmp);
+ return true;
+}
+
+/*
+ @doc: config.id
+ @type:
+ function
+ @title:
+ $config.id
+ @short:
+ Returns the id of an open config file
+ @syntax:
+ $config.id(<filename>)
+ @description:
+ Returns the id of an open config file specified by <filename>.[br]
+ (This is the same id that is returned by [fnc]$config.open[/fnc].[br]
+ If no such file is open, 0 is returned (that is an invalid config identifier).[br]
+ @seealso:
+ [module:config]Config module documentation[/module]
+*/
+
+static bool config_kvs_fnc_id(KviKvsModuleFunctionCall * c)
+{
+ QString szFile;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("file",KVS_PT_STRING,0,szFile)
+ KVSM_PARAMETERS_END(c)
+
+ KviFileUtils::adjustFilePath(szFile);
+
+ QString szAbsFile;
+
+ if(KviFileUtils::isAbsolutePath(szFile))szAbsFile = szFile;
+ else g_pApp->getLocalKvircDirectory(szAbsFile,KviApp::ConfigScripts,szFile,true);
+
+ KviPointerHashTableIterator<QString,KviConfig> it(*g_pConfigDict);
+ while(it.current())
+ {
+ if(KviQString::equalCI(it.current()->fileName(),szAbsFile))
+ {
+ c->returnValue()->setString(it.currentKey());
+ return true;
+ }
+ ++it;
+ }
+
+ c->returnValue()->setString("0");
+
+ return true;
+}
+
+/*
+ @doc: config.read
+ @type:
+ function
+ @title:
+ $config.read
+ @short:
+ Reads an entry from a config file
+ @syntax:
+ $config.read(<id:string>,<key:string>[,<default:string>])
+ @description:
+ Reads and returns the value associated to <key> in the current section of the config
+ file identified by <id>.[br]
+ <id> must be a valid config identifier returned by [fnc]$config.open[/fnc]()
+ If no value is associated with <key> in the current section the return value
+ is an empty string or the string <default> if it has been passed.[br]
+ @seealso:
+ [module:config]Config module documentation[/module]
+*/
+
+static bool config_kvs_fnc_read(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+ QString szKey;
+ QString szDefault;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("id",KVS_PT_STRING,0,szId)
+ KVSM_PARAMETER("key",KVS_PT_STRING,0,szKey)
+ KVSM_PARAMETER("default",KVS_PT_STRING,KVS_PF_OPTIONAL,szDefault)
+ KVSM_PARAMETERS_END(c)
+
+ KviConfig * cfg = g_pConfigDict->find(szId);
+
+ if(cfg)
+ {
+ c->returnValue()->setString(cfg->readEntry(szKey,szDefault));
+ } else {
+ c->warning(__tr2qs("The config file with id '%Q' is not open"),&szId);
+ }
+ return true;
+}
+
+/*
+ @doc: config.section
+ @type:
+ function
+ @title:
+ $config.section
+ @short:
+ Returns the name of the current section of a config file
+ @syntax:
+ $config.section(<id>)
+ @description:
+ Returns the name of the current section in the config file identifier by <id>.[br]
+ <id> must be a valid config identifier returned by [fnc]$config.open[/fnc]()
+ @seealso:
+ [module:config]Config module documentation[/module]
+*/
+
+static bool config_kvs_fnc_section(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("id",KVS_PT_STRING,0,szId)
+ KVSM_PARAMETERS_END(c)
+
+ KviConfig * cfg = g_pConfigDict->find(szId);
+
+ if(cfg)
+ {
+ c->returnValue()->setString(cfg->group());
+ } else {
+ c->warning(__tr2qs("The config file with id '%Q' is not open"),&szId);
+ }
+ return true;
+}
+
+/*
+ @doc: config.readonly
+ @type:
+ function
+ @title:
+ $config.readonly
+ @short:
+ Checks wheter a config file is opened in readonly mode
+ @syntax:
+ $config.readonly(<id>)
+ @description:
+ Returns 1 if the config file identified by <id> is opened in readonly mode,
+ 0 otherwise.[br]
+ <id> must be a valid config identifier returned by [fnc]$config.open[/fnc]()
+ If <id> does not identify an open config file, a warning is printed and 0 is returned.[br]
+ @seealso:
+ [module:config]Config module documentation[/module]
+*/
+
+static bool config_kvs_fnc_readonly(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("id",KVS_PT_STRING,0,szId)
+ KVSM_PARAMETERS_END(c)
+
+ KviConfig * cfg = g_pConfigDict->find(szId);
+
+ if(cfg)
+ {
+ c->returnValue()->setBoolean(cfg->readOnly());
+ } else {
+ c->warning(__tr2qs("The config file with id '%Q' is not open"),&szId);
+ c->returnValue()->setInteger(false);
+ }
+ return true;
+}
+
+/*
+ @doc: config.filename
+ @type:
+ function
+ @title:
+ $config.filename
+ @short:
+ Returns the filename of an open config file
+ @syntax:
+ $config.filename(<id>)
+ @description:
+ Returns the filename of the [b]open[/b] config file identifier by <id>.[br]
+ <id> must be a valid config identifier returned by [fnc]$config.open[/fnc]()
+ If the <id> doesn't match any open file, and empty string is returned.[br]
+ @seealso:
+ [module:config]Config module documentation[/module]
+*/
+
+static bool config_kvs_fnc_filename(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("id",KVS_PT_STRING,0,szId)
+ KVSM_PARAMETERS_END(c)
+
+ KviConfig * cfg = g_pConfigDict->find(szId);
+
+ if(cfg)
+ {
+ c->returnValue()->setString(cfg->fileName());
+ }
+ return true;
+}
+
+/*
+ @doc: config.hassection
+ @type:
+ function
+ @title:
+ $config.hassection
+ @short:
+ Checks wheter a section is present in a config file
+ @syntax:
+ $config.hassection(<id>,<section_name>)
+ @description:
+ Returns 1 if the section <section_name> exists in the config file identifier by <id>,
+ 0 otherwise.[br]
+ <id> must be a valid config identifier returned by [fnc]$config.open[/fnc]()
+ @seealso:
+ [module:config]Config module documentation[/module]
+*/
+
+static bool config_kvs_fnc_hassection(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+ QString szSect;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("id",KVS_PT_STRING,0,szId)
+ KVSM_PARAMETER("id",KVS_PT_STRING,0,szSect)
+ KVSM_PARAMETERS_END(c)
+
+ KviConfig * cfg = g_pConfigDict->find(szId);
+
+ if(cfg)
+ {
+ c->returnValue()->setBoolean(cfg->hasGroup(szSect));
+ } else {
+ c->warning(__tr2qs("The config file with id '%Q' is not open"),&szId);
+ }
+ return true;
+}
+
+/*
+ @doc: config.sectionlist
+ @type:
+ function
+ @title:
+ $config.sectionlist
+ @short:
+ Returns a list of the sections in a config file
+ @syntax:
+ $config.sectionlist(<id>)
+ @description:
+ Returns an array of sections present in the config file identified by <id>.[br]
+ <id> must be a valid config identifier returned by [fnc]$config.open[/fnc]()
+ @seealso:
+ [module:config]Config module documentation[/module]
+*/
+
+static bool config_kvs_fnc_sectionlist(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("id",KVS_PT_STRING,0,szId)
+ KVSM_PARAMETERS_END(c)
+
+ KviConfig * cfg = g_pConfigDict->find(szId);
+
+ if(cfg)
+ {
+ KviConfigIterator it(*(cfg->dict()));
+ KviKvsArray* pArray = new KviKvsArray();
+ int id=0;
+ while(it.current())
+ {
+ pArray->set(id++, new KviKvsVariant(it.currentKey()));
+ ++it;
+ }
+ c->returnValue()->setArray(pArray);
+ } else {
+ c->warning(__tr2qs("The config file with id '%Q' is not open"),&szId);
+ }
+ return true;
+}
+
+/*
+ @doc: config.keylist
+ @type:
+ function
+ @title:
+ $config.keylist
+ @short:
+ Returns a list of keys in a config file
+ @syntax:
+ $config.keylist(<id>)
+ @description:
+ Returns an array of keys present in the current section of the config file identified by <id>.[br]
+ <id> must be a valid config identifier returned by [fnc]$config.open[/fnc]()
+ @seealso:
+ [module:config]Config module documentation[/module]
+*/
+
+static bool config_kvs_fnc_keylist(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("id",KVS_PT_STRING,0,szId)
+ KVSM_PARAMETERS_END(c)
+
+ KviConfig * cfg = g_pConfigDict->find(szId);
+
+ if(cfg)
+ {
+ KviConfigGroup * d = cfg->dict()->find(cfg->group());
+ if(!d)return true;
+
+ KviConfigGroupIterator it(*d);
+
+ KviKvsArray* pArray = new KviKvsArray();
+ int id=0;
+
+ while(it.current())
+ {
+ pArray->set(id++, new KviKvsVariant(it.currentKey()));
+ ++it;
+ }
+ c->returnValue()->setArray(pArray);
+ } else {
+ c->warning(__tr2qs("The config file with id '%Q' is not open"),&szId);
+ }
+ return true;
+}
+
+/*
+ @doc: config.filelist
+ @type:
+ function
+ @title:
+ $config.filelist
+ @short:
+ Returns a list of open config files
+ @syntax:
+ $config.filelist
+ @description:
+ Returns an array of open config files.[br]
+ @seealso:
+ [module:config]Config module documentation[/module]
+*/
+
+static bool config_kvs_fnc_filelist(KviKvsModuleFunctionCall * c)
+{
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETERS_END(c)
+
+ KviKvsArray* pArray = new KviKvsArray();
+ int id=0;
+
+ KviPointerHashTableIterator<QString,KviConfig> it(*g_pConfigDict);
+ while(it.current())
+ {
+ pArray->set(id++, new KviKvsVariant(it.currentKey()));
+ ++it;
+ }
+ c->returnValue()->setArray(pArray);
+ return true;
+}
+
+/*
+ @doc: config.close
+ @type:
+ command
+ @title:
+ config.close
+ @keyterms:
+ storing & reading configuration entries
+ @short:
+ Closes a config file
+ @syntax:
+ config.close [-q] <id>
+ @description:
+ Closes the config file identified by <id>.[br]
+ <id> must be a a valid config file identifier returned by [fnc]$config.open[/fnc].[br]
+ If the config file was opened as read-write (default), the changes will be stored
+ to disk. If the config was opened as read-only , changes will not be written.[br]
+ If the <id> does not match any open config file, a warning is printed unless
+ the -q switch is used.[br]
+ @seealso:
+ [module:config]Config module documentation[/module]
+*/
+
+static bool config_kvs_cmd_close(KviKvsModuleCommandCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("id",KVS_PT_STRING,0,szId)
+ KVSM_PARAMETERS_END(c)
+
+ KviConfig * cfg = g_pConfigDict->find(szId);
+
+ if(cfg)
+ {
+ if(cfg->dirty() && cfg->readOnly())
+ {
+ if(!c->hasSwitch('q',"quiet"))
+ c->warning(__tr2qs("The config file '%Q' has been changed but is opened as read-only: changes will be lost"),&cfg->fileName());
+ }
+ g_pConfigDict->remove(szId);
+ } else {
+ if(!c->hasSwitch('q',"quiet"))
+ c->warning(__tr2qs("The config file with id '%Q' is not open"),&szId);
+ }
+
+ return true;
+}
+
+/*
+ @doc: config.flush
+ @type:
+ command
+ @title:
+ config.flush
+ @keyterms:
+ storing & reading configuration entries
+ @short:
+ Flushes a config file
+ @syntax:
+ config.flush <id>
+ @description:
+ Flushes the config file identified by <id>.[br]
+ <id> must be a a valid config file identifier returned by [fnc]$config.open[/fnc].[br]
+ If the config file was opened as read-write (default), the changes will be stored
+ to disk. If the config was opened as read-only ,an error is printed.[br]
+ If the <id> does not match any open config file, a warning is printed.
+ @seealso:
+ [module:config]Config module documentation[/module]
+*/
+
+static bool config_kvs_cmd_flush(KviKvsModuleCommandCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("id",KVS_PT_STRING,0,szId)
+ KVSM_PARAMETERS_END(c)
+
+ KviConfig * cfg = g_pConfigDict->find(szId);
+
+ if(cfg)
+ {
+ if(cfg->readOnly())
+ c->warning(__tr2qs("The config file with id '%Q' is read only"),&szId);
+ else
+ cfg->sync();
+ } else {
+ c->warning(__tr2qs("The config file with id '%Q' is not open"),&szId);
+ }
+
+ return true;
+}
+
+/*
+ @doc: config.clear
+ @type:
+ command
+ @title:
+ config.clear
+ @keyterms:
+ storing & reading configuration entries
+ @short:
+ Clears a config file
+ @syntax:
+ config.clear <id>
+ @description:
+ Clears the contents of the config file identified by <id>.[br]
+ All the sections are removed (except for the default section) and all the key=value
+ pairs are destroyed.[br]
+ <id> must be a a valid config file identifier returned by [fnc]$config.open[/fnc].[br]
+ If the <id> does not match any open config file, a warning is printed.
+ @seealso:
+ [module:config]Config module documentation[/module]
+*/
+
+static bool config_kvs_cmd_clear(KviKvsModuleCommandCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("id",KVS_PT_STRING,0,szId)
+ KVSM_PARAMETERS_END(c)
+
+ KviConfig * cfg = g_pConfigDict->find(szId);
+
+ if(cfg)
+ {
+ cfg->clear();
+ } else {
+ c->warning(__tr2qs("The config file with id '%Q' is not open"),&szId);
+ }
+
+ return true;
+}
+
+/*
+ @doc: config.clearsection
+ @type:
+ command
+ @title:
+ config.clearsection
+ @keyterms:
+ storing & reading configuration entries
+ @short:
+ Clears a section in a config file
+ @syntax:
+ config.clearsection <id> <section_name>
+ @description:
+ Clears the contents of the section <section_name> in the config file identified by <id>.[br]
+ All the key=value pairs in the section are destroyed.[br]
+ <id> must be a a valid config file identifier returned by [fnc]$config.open[/fnc].[br]
+ If the <id> does not match any open config file, a warning is printed.
+ If <section_name> was also the current section, the current section is set to the default one.[br]
+ No warning is printed if the section wasn't existing.[br]
+ @seealso:
+ [module:config]Config module documentation[/module]
+*/
+
+static bool config_kvs_cmd_clearsection(KviKvsModuleCommandCall * c)
+{
+ QString szId;
+ QString szSect;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("id",KVS_PT_STRING,0,szId)
+ KVSM_PARAMETER("section",KVS_PT_STRING,0,szSect)
+ KVSM_PARAMETERS_END(c)
+
+ KviConfig * cfg = g_pConfigDict->find(szId);
+
+ if(cfg)
+ {
+ cfg->clearGroup(szSect);
+ } else {
+ c->warning(__tr2qs("The config file with id '%Q' is not open"),&szId);
+ }
+
+ return true;
+}
+
+/*
+ @doc: config.write
+ @type:
+ command
+ @title:
+ config.write
+ @keyterms:
+ storing & reading configuration entries
+ @short:
+ Writes a data field to a config file
+ @syntax:
+ config.write <id> <key> <value>
+ @description:
+ Writes the <key>=<value> pair to the config file identifier by <id>.[br]
+ <id> must be a valid config file id returned by [fnc]$config.open[/fnc]().[br]
+ <key> and <value> can be any strings.[br]
+ The <key>=<value> pair is written in the current section of the config file.[br]
+ If <key> already exists in the current section of the config , the corresponding value is replaced with <value>.[br]
+ If <value> is an empty string, the <key> is simply removed from the current section.[br]
+ If a section remains empty (with no keys) at file write time, that section will be removed.[br]
+ The changes are NOT written to disk: you must call [cmd]config.flush[/cmd] or (better) [cmd]config.close[/cmd]
+ for the changes to be effectively written.[br]
+ @seealso:
+ [module:config]Config module documentation[/module]
+*/
+
+static bool config_kvs_cmd_write(KviKvsModuleCommandCall * c)
+{
+ QString szId;
+ QString szKey;
+ QString szVal;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("id",KVS_PT_STRING,0,szId)
+ KVSM_PARAMETER("key",KVS_PT_STRING,0,szKey)
+ KVSM_PARAMETER("value",KVS_PT_STRING,0,szVal)
+ KVSM_PARAMETERS_END(c)
+
+ KviConfig * cfg = g_pConfigDict->find(szId);
+
+ if(cfg)
+ {
+ cfg->writeEntry(szKey,szVal);
+ } else {
+ c->warning(__tr2qs("The config file with id '%Q' is not open"),&szId);
+ }
+
+ return true;
+}
+
+/*
+ @doc: config.setsection
+ @type:
+ command
+ @title:
+ config.setsection
+ @keyterms:
+ storing & reading configuration entries
+ @short:
+ Changes the current section of a config file
+ @syntax:
+ config.setsection <id> <section_name>
+ @description:
+ Changes the current section of the config file <id> to <section_name>.[br]
+ Sections are effectively namespaces for the keys: each section can contain
+ a set of keys and equal keys in different sections do not collide.[br]
+ <id> must be a valid config file id returned by [fnc]$config.open[/fnc]().[br]
+ @seealso:
+ [module:config]Config module documentation[/module]
+*/
+
+static bool config_kvs_cmd_setsection(KviKvsModuleCommandCall * c)
+{
+ QString szId;
+ QString szSect;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("id",KVS_PT_STRING,0,szId)
+ KVSM_PARAMETER("section",KVS_PT_STRING,0,szSect)
+ KVSM_PARAMETERS_END(c)
+
+ KviConfig * cfg = g_pConfigDict->find(szId);
+
+ if(cfg)
+ {
+ cfg->setGroup(szSect);
+ } else {
+ c->warning(__tr2qs("The config file with id '%Q' is not open"),&szId);
+ }
+
+ return true;
+}
+
+/*
+ @doc: config
+ @type:
+ module
+ @short:
+ Managing of configuration files
+ @title:
+ The config module
+ @body:
+ The config module is a powerful interface that manages text configuration files.[br]
+ The files are arranged in named sections and the data is stored in key=value pairs
+ belonging to each section.[br]
+ [br]
+ [section1_name][br]
+ <key1>=<value1>[br]
+ <key2>=<value2>[br]
+ <key3>=<value3>[br]
+ ....[br]
+ [section2_name][br]
+ <key1>=<value1>[br]
+ ....[br]
+ [br]
+ Keys and values are plain text strings. Eventual newlines in values are encoded using
+ a simple hexadecimal notation.[br]
+ The config files can be also edited by using any text editor.[br]
+ The config module works on config files loaded in memory. For this reason,
+ you must first open a config file by the means of [fnc]$config.open[/fnc]().[br]
+ Once you open the file , if it exists on disk , its contents are loaded into memory
+ and you can access the data stored in it. If the file wasn't existing, and empty
+ memory config file is created.[br]
+ The config file is opened in read-write mode by default. You can also choose
+ the "read-only" method: a read-only config file is never flushed to disk (but you can
+ set the values in memory!).[br]
+ It is not a good idea to keep a config file open forever: a good approach
+ is to keep settings in memory variables and write them all at once when it comes to
+ write settings: you open the config file , write all your values and close the file.[br]
+ You can obviously keep the config file open for some time but remember that
+ no change is written to the disk until [cmd]config.flush[/cmd] or [cmd]config.close[/cmd] is called.[br]
+ You write entries by using [cmd]config.write[/cmd] and read them by using [fnc]$config.read[/fnc]().[br]
+ You can change the "current" config section by using [cmd]config.setsection[/cmd].[br]
+ Here comes a complete list of commands and functions exported by this module:[br]
+ [fnc]$config.open[/fnc][br]
+ [fnc]$config.read[/fnc][br]
+ [fnc]$config.section[/fnc][br]
+ [fnc]$config.hassection[/fnc][br]
+ [fnc]$config.sectionlist[/fnc][br]
+ [fnc]$config.keylist[/fnc][br]
+ [fnc]$config.filelist[/fnc][br]
+ [fnc]$config.filename[/fnc][br]
+ [fnc]$config.id[/fnc][br]
+ [fnc]$config.readonly[/fnc][br]
+ [cmd]config.close[/cmd][br]
+ [cmd]config.flush[/cmd][br]
+ [cmd]config.clear[/cmd][br]
+ [cmd]config.clearsection[/cmd][br]
+ [cmd]config.setsection[/cmd][br]
+ [cmd]config.write[/cmd][br]
+*/
+
+static bool config_module_init(KviModule * m)
+{
+ g_pConfigDict = new KviPointerHashTable<QString,KviConfig>;
+ g_pConfigDict->setAutoDelete(true);
+
+ KVSM_REGISTER_FUNCTION(m,"open",config_kvs_fnc_open);
+ KVSM_REGISTER_FUNCTION(m,"id",config_kvs_fnc_id);
+ KVSM_REGISTER_FUNCTION(m,"read",config_kvs_fnc_read);
+ KVSM_REGISTER_FUNCTION(m,"section",config_kvs_fnc_section);
+ KVSM_REGISTER_FUNCTION(m,"hassection",config_kvs_fnc_hassection);
+ KVSM_REGISTER_FUNCTION(m,"sectionlist",config_kvs_fnc_sectionlist);
+ KVSM_REGISTER_FUNCTION(m,"keylist",config_kvs_fnc_keylist);
+ KVSM_REGISTER_FUNCTION(m,"filelist",config_kvs_fnc_filelist);
+ KVSM_REGISTER_FUNCTION(m,"filename",config_kvs_fnc_filename);
+ KVSM_REGISTER_FUNCTION(m,"readonly",config_kvs_fnc_readonly);
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"close",config_kvs_cmd_close);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"flush",config_kvs_cmd_flush);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"clear",config_kvs_cmd_clear);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"clearsection",config_kvs_cmd_clearsection);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"setsection",config_kvs_cmd_setsection);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"write",config_kvs_cmd_write);
+
+ return true;
+}
+
+static bool config_module_cleanup(KviModule *m)
+{
+ delete g_pConfigDict;
+ g_pConfigDict = 0;
+ return true;
+}
+
+static bool config_module_can_unload(KviModule *m)
+{
+ return g_pConfigDict->isEmpty();
+}
+
+KVIRC_MODULE(
+ "Config", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "Config file system for KVIrc",
+ config_module_init,
+ config_module_can_unload,
+ 0,
+ config_module_cleanup
+)
diff --git a/src/modules/context/Makefile.am b/src/modules/context/Makefile.am
new file mode 100644
index 00000000..e4ec3252
--- /dev/null
+++ b/src/modules/context/Makefile.am
@@ -0,0 +1,18 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvicontext.la
+
+libkvicontext_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvicontext_la_SOURCES = libkvicontext.cpp
+libkvicontext_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+# noinst_HEADERS=
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/context/libkvicontext.cpp b/src/modules/context/libkvicontext.cpp
new file mode 100644
index 00000000..a6a3bb97
--- /dev/null
+++ b/src/modules/context/libkvicontext.cpp
@@ -0,0 +1,401 @@
+//=============================================================================
+//
+// File : libkvicontext.cpp
+// Creation date : Wed Jan 02 2007 03:04:12 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+//#warning: FIXME: Incomplete documentation ('seealso', 'example', etc)
+
+#include "kvi_module.h"
+#include "kvi_locale.h"
+#include "kvi_qstring.h"
+#include "kvi_window.h"
+#include "kvi_frame.h"
+#include "kvi_console.h"
+#include "kvi_app.h"
+
+#include "kvi_ircserver.h"
+#include "kvi_irccontext.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectionserverinfo.h"
+#include "kvi_ircconnectionuserinfo.h"
+#include "kvi_ircconnectiontarget.h"
+
+#define GET_CONSOLE_FROM_STANDARD_PARAMS \
+ kvs_int_t iContextId; \
+ KVSM_PARAMETERS_BEGIN(c) \
+ KVSM_PARAMETER("irc_context_id",KVS_PT_UINT,KVS_PF_OPTIONAL,iContextId) \
+ KVSM_PARAMETERS_END(c) \
+ KviConsole * pConsole = NULL; \
+ if(c->parameterCount() > 0) \
+ pConsole = g_pApp->findConsole(iContextId); \
+ else \
+ pConsole = c->window()->console();
+
+#define GET_CONNECTION_FROM_STANDARD_PARAMS \
+ GET_CONSOLE_FROM_STANDARD_PARAMS \
+ KviIrcConnection * pConnection = NULL; \
+ if(pConsole) \
+ pConnection = pConsole->context()->connection();
+
+#define STANDARD_IRC_CONNECTION_TARGET_PARAMETER(_fncName,_setCall) \
+ static bool _fncName(KviKvsModuleFunctionCall * c) \
+ { \
+ GET_CONNECTION_FROM_STANDARD_PARAMS \
+ if(pConnection) \
+ { \
+ if(pConnection->target()) \
+ { \
+ _setCall; \
+ return true; \
+ } \
+ } \
+ c->returnValue()->setNothing(); \
+ return true; \
+ }
+
+/*
+ @doc: context.networkName
+ @type:
+ function
+ @title:
+ $context.networkName
+ @short:
+ Returns the IRC network name of an IRC context
+ @syntax:
+ <string> $contex.networkName
+ <string> $contex.networkName(<irc_context_id:uint>)
+ @description:
+ Returns the name of the network for the specified IRC context.
+ If no irc_context_id is specified then the current irc_context is used.
+ If the irc_context_id specification is not valid then this function
+ returns nothing. If the specified IRC context is not currently connected
+ then this function returns nothing.
+ @seealso:
+ [fnc]$context.serverHostName[/fnc]
+*/
+
+STANDARD_IRC_CONNECTION_TARGET_PARAMETER(
+ context_kvs_fnc_networkName,
+ c->returnValue()->setString(pConnection->target()->network()->name())
+ )
+
+
+/*
+ @doc: context.serverHostName
+ @type:
+ function
+ @title:
+ $context.serverHostName
+ @short:
+ Returns the IRC server name of an IRC context
+ @syntax:
+ <string> $contex.serverHostName
+ <string> $contex.serverHostName(<irc_context_id:uint>)
+ @description:
+ Returns the host name of the IRC server that was used to perform
+ the connection in the specified irc context.
+ If no irc_context_id is specified then the current irc_context is used.
+ If the irc_context_id specification is not valid then this function
+ returns nothing. If the specified IRC context is not currently connected
+ then this function returns nothing.
+ If the returned value is non empty then it will always be a valid
+ DNS hostname that can be used to perform a real connection.
+ Please note that this is different from $my.server() which might
+ return an invalid DNS entry.
+ @seealso:
+ [fnc]$context.serverPort[/fnc],
+ [fnc]$context.serverIpAddress[/fnc],
+ [fnc]$context.serverPassword[/fnc]
+*/
+
+STANDARD_IRC_CONNECTION_TARGET_PARAMETER(
+ context_kvs_fnc_serverHostName,
+ c->returnValue()->setString(pConnection->target()->server()->hostName())
+ )
+
+/*
+ @doc: context.serverIpAddress
+ @type:
+ function
+ @title:
+ $context.serverIpAddress
+ @short:
+ Returns the IRC server ip address of an IRC context
+ @syntax:
+ <string> $contex.serverIpAddress
+ <string> $contex.serverIpAddress(<irc_context_id:uint>)
+ @description:
+ Returns the ip address of the IRC server for the specified irc context.
+ If no irc_context_id is specified then the current irc_context is used.
+ If the irc_context_id specification is not valid then this function
+ returns nothing. If the specified IRC context is not currently connected
+ then this function returns nothing.
+ @seealso:
+ [fnc]$context.serverPort[/fnc],
+ [fnc]$context.serverHostName[/fnc],
+ [fnc]$context.serverPassword[/fnc]
+*/
+
+STANDARD_IRC_CONNECTION_TARGET_PARAMETER(
+ context_kvs_fnc_serverIpAddress,
+ c->returnValue()->setString(pConnection->target()->server()->ipAddress())
+ )
+
+/*
+ @doc: context.serverIsIPV6
+ @type:
+ function
+ @title:
+ $context.serverIsIPV6
+ @short:
+ Returns the IPV6 state of an IRC context
+ @syntax:
+ <string> $contex.serverIsIPV6
+ <string> $contex.serverIsIPV6(<irc_context_id:uint>)
+ @description:
+ Returns true if the current irc context connection runs over IPV6.
+ If no irc_context_id is specified then the current irc_context is used.
+ If the irc_context_id specification is not valid then this function
+ returns nothing (that evaluates to false). If the specified IRC context
+ is not currently connected then this function returns nothing (that
+ evaluates to false).
+ @seealso:
+ [fnc]$context.serverPort[/fnc],
+ [fnc]$context.serverHostName[/fnc],
+ [fnc]$context.serverPassword[/fnc]
+*/
+
+STANDARD_IRC_CONNECTION_TARGET_PARAMETER(
+ context_kvs_fnc_serverIsIPV6,
+ c->returnValue()->setBoolean(pConnection->target()->server()->isIpV6())
+ )
+
+/*
+ @doc: context.serverIsSSL
+ @type:
+ function
+ @title:
+ $context.serverIsSSL
+ @short:
+ Returns the SSL state of an IRC context
+ @syntax:
+ <string> $contex.serverIsSSL
+ <string> $contex.serverIsSSL(<irc_context_id:uint>)
+ @description:
+ Returns true if the current irc context connection runs over SSL.
+ If no irc_context_id is specified then the current irc_context is used.
+ If the irc_context_id specification is not valid then this function
+ returns nothing (that evaluates to false). If the specified IRC context
+ is not currently connected then this function returns nothing (that
+ evaluates to false).
+ @seealso:
+ [fnc]$context.serverPort[/fnc],
+ [fnc]$context.serverHostName[/fnc],
+ [fnc]$context.serverPassword[/fnc]
+*/
+
+STANDARD_IRC_CONNECTION_TARGET_PARAMETER(
+ context_kvs_fnc_serverIsSSL,
+ c->returnValue()->setBoolean(pConnection->target()->server()->useSSL())
+ )
+
+/*
+ @doc: context.serverPassword
+ @type:
+ function
+ @title:
+ $context.serverPassword
+ @short:
+ Returns the password used to login to the server of an IRC context
+ @syntax:
+ <string> $contex.serverPassword
+ <string> $contex.serverPassword(<irc_context_id:uint>)
+ @description:
+ Returns the password used to login to the IRC server for the specified irc context.
+ If no irc_context_id is specified then the current irc_context is used.
+ If the irc_context_id specification is not valid then this function
+ returns nothing. If the specified IRC context is not currently connected
+ then this function returns nothing.
+ @seealso:
+ [fnc]$context.serverHostName[/fnc],
+ [fnc]$context.serverIpAddress[/fnc],
+ [fnc]$context.serverPort[/fnc]
+*/
+
+STANDARD_IRC_CONNECTION_TARGET_PARAMETER(
+ context_kvs_fnc_serverPassword,
+ c->returnValue()->setString(pConnection->target()->server()->password())
+ )
+
+
+/*
+ @doc: context.serverPort
+ @type:
+ function
+ @title:
+ $context.serverPort
+ @short:
+ Returns the port of the IRC server of an IRC context
+ @syntax:
+ <uint> $contex.serverPort
+ <uint> $contex.serverPort(<irc_context_id:uint>)
+ @description:
+ Returns the port of the IRC server for the specified irc context.
+ If no irc_context_id is specified then the current irc_context is used.
+ If the irc_context_id specification is not valid then this function
+ returns nothing. If the specified IRC context is not currently connected
+ then this function returns nothing.
+ @seealso:
+ [fnc]$context.serverHostName[/fnc],
+ [fnc]$context.serverIpAddress[/fnc]
+*/
+
+STANDARD_IRC_CONNECTION_TARGET_PARAMETER(
+ context_kvs_fnc_serverPort,
+ c->returnValue()->setInteger(pConnection->target()->server()->port())
+ )
+
+
+/*
+ @doc: context.state
+ @type:
+ function
+ @title:
+ $context.state
+ @short:
+ Returns the state of an IRC context
+ @syntax:
+ <string> $context.state
+ <string> $context.state(<irc_context_id:uint>)
+ @description:
+ Returns a string describing the state of the specified irc context.
+ The string will be either "idle","connecting","loggingin" or "connected".
+ If no irc_context_id is specified then the current irc_context is used.
+ If the irc_context_id specification is not valid then this function
+ returns nothing.
+ @seealso:
+ [fnc]$context.serverHostName[/fnc],
+ [fnc]$context.serverIpAddress[/fnc]
+*/
+
+static bool context_kvs_fnc_state(KviKvsModuleFunctionCall * c)
+{
+ GET_CONSOLE_FROM_STANDARD_PARAMS
+
+ if(pConsole)
+ {
+ switch(pConsole->ircContext()->state())
+ {
+ case KviIrcContext::Idle:
+ c->returnValue()->setString(QString("idle"));
+ break;
+ case KviIrcContext::Connecting:
+ c->returnValue()->setString(QString("connecting"));
+ break;
+ case KviIrcContext::LoggingIn:
+ c->returnValue()->setString(QString("loggingin"));
+ break;
+ case KviIrcContext::Connected:
+ c->returnValue()->setString(QString("connected"));
+ break;
+ default:
+ c->returnValue()->setString(QString("unknown"));
+ break;
+ }
+ return true;
+ }
+
+ c->returnValue()->setNothing();
+ return true;
+}
+
+
+/*
+ @doc: context.list
+ @type:
+ function
+ @title:
+ $context.list
+ @short:
+ Returns a list of existing IRC contexts
+ @syntax:
+ <array> $contex.list
+ @description:
+ Returns the array of currently existing IRC context identifiers.
+ @seealso:
+ @examples:
+ Print the names of the currently connected servers
+ [example]
+ foreach(%ic,$context.list)
+ echo "IRC Context" %ic ": " $context.serverHostName
+ [/example]
+*/
+
+static bool context_kvs_fnc_list(KviKvsModuleFunctionCall * c)
+{
+ KviKvsArray * pArray = new KviKvsArray();
+
+ KviPointerList<KviWindow> * pWinList = g_pFrame->windowList();
+ int idx = 0;
+ for(KviWindow * pWnd = pWinList->first();pWnd;pWnd = pWinList->next())
+ {
+ if(pWnd->type() == KVI_WINDOW_TYPE_CONSOLE)
+ {
+ pArray->set(idx,new KviKvsVariant((kvs_int_t)((KviConsole *)pWnd)->ircContextId()));
+ idx++;
+ }
+ }
+
+ c->returnValue()->setArray(pArray);
+ return true;
+}
+
+static bool context_module_init(KviModule * m)
+{
+ KVSM_REGISTER_FUNCTION(m,"serverHostName",context_kvs_fnc_serverHostName);
+ KVSM_REGISTER_FUNCTION(m,"serverIpAddress",context_kvs_fnc_serverIpAddress);
+ KVSM_REGISTER_FUNCTION(m,"serverPort",context_kvs_fnc_serverPort);
+ KVSM_REGISTER_FUNCTION(m,"serverIsIPV6",context_kvs_fnc_serverIsIPV6);
+ KVSM_REGISTER_FUNCTION(m,"serverIsSSL",context_kvs_fnc_serverIsSSL);
+ KVSM_REGISTER_FUNCTION(m,"serverPassword",context_kvs_fnc_serverPassword);
+ KVSM_REGISTER_FUNCTION(m,"networkName",context_kvs_fnc_networkName);
+ KVSM_REGISTER_FUNCTION(m,"state",context_kvs_fnc_state);
+ KVSM_REGISTER_FUNCTION(m,"list",context_kvs_fnc_list);
+
+ return true;
+}
+
+static bool context_module_cleanup(KviModule *m)
+{
+ return true;
+}
+
+KVIRC_MODULE(
+ "context",
+ "1.0.0",
+ "Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)",
+ "Irc Context Related Functions",
+ context_module_init,
+ 0,
+ 0,
+ context_module_cleanup
+)
diff --git a/src/modules/dcc/Makefile.am b/src/modules/dcc/Makefile.am
new file mode 100644
index 00000000..8a63b888
--- /dev/null
+++ b/src/modules/dcc/Makefile.am
@@ -0,0 +1,66 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+tmpdir=$(picsdir)
+
+tmp_DATA=kvi_dccfiletransfericons.png
+
+EXTRA_DIST=kvi_dccfiletransfericons.png
+
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvidcc.la
+
+libkvidcc_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvidcc_la_SOURCES = adpcmcodec.cpp \
+ broker.cpp \
+ canvas.cpp \
+ canvaswidget.cpp \
+ chat.cpp \
+ codec.cpp \
+ descriptor.cpp \
+ dialogs.cpp \
+ gsmcodec.cpp \
+ libkvidcc.cpp \
+ marshal.cpp \
+ requests.cpp \
+ send.cpp \
+ thread.cpp \
+ utils.cpp \
+ voice.cpp \
+ window.cpp
+
+libkvidcc_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= adpcmcodec.h \
+ broker.h \
+ canvas.h \
+ canvaswidget.h \
+ chat.h \
+ codec.h \
+ descriptor.h \
+ dialogs.h \
+ gsmcodec.h \
+ marshal.h \
+ send.h \
+ thread.h \
+ utils.h \
+ voice.h \
+ window.h
+
+m_%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+broker.cpp: m_broker.moc
+canvas.cpp: m_canvas.moc
+canvaswidget.cpp: m_canvaswidget.moc
+chat.cpp: m_chat.moc
+dialogs.cpp: m_dialogs.moc
+marshal.cpp: m_marshal.moc
+send.cpp: m_send.moc
+voice.cpp: m_voice.moc
+window.cpp: m_window.moc
diff --git a/src/modules/dcc/adpcmcodec.cpp b/src/modules/dcc/adpcmcodec.cpp
new file mode 100644
index 00000000..65f12a00
--- /dev/null
+++ b/src/modules/dcc/adpcmcodec.cpp
@@ -0,0 +1,294 @@
+//
+// File : adpcmcodec.cpp
+// Creation date : Wed Aug 22 19:12:50 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+//
+// Code derived from adpcm.c : Intel ADPCM coder/decoder
+// Adapted for the KVirc distribution by Szymon Stefanek (pragma at kvirc dot net)
+// Last revision : 20 Sep 1999
+//
+// Copyright 1992 by Stichting Mathematisch Centrum, Amsterdam, The Netherlands.
+// All Rights Reserved
+//
+// Permission to use, copy, modify, and distribute this software and its
+// documentation for any purpose and without fee is hereby granted,
+// provided that the above copyright notice appear in all copies and that
+// both that copyright notice and this permission notice appear in
+// supporting documentation, and that the names of Stichting Mathematisch
+// Centrum or CWI not be used in advertising or publicity pertaining to
+// distribution of the software without specific, written prior permission.
+//
+// STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
+// THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+// FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
+// FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+// OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+//
+//
+// Intel/DVI ADPCM coder/decoder.
+//
+// The algorithm for this coder was taken from the IMA Compatability Project
+// proceedings, Vol 2, Number 2; May 1992.
+//
+// Version 1.2, 18-Dec-92.
+//
+
+#define _ADPCMCODEC_CPP_
+#include "adpcmcodec.h"
+
+#include <stdio.h> /*DBG*/
+
+#ifndef __STDC__
+ #define signed
+#endif
+
+
+
+#define ADPCM_PACKED_FRAME_SIZE_IN_BYTES 512
+#define ADPCM_UNPACKED_FRAME_SIZE_IN_BYTES 2048
+#define ADPCM_UNPACKED_FRAME_SIZE_IN_SHORTS 1024
+
+// Intel ADPCM step variation table */
+static int indexTable[16] = {
+ -1, -1, -1, -1, 2, 4, 6, 8,
+ -1, -1, -1, -1, 2, 4, 6, 8,
+};
+
+static int stepsizeTable[89] = {
+ 7, 8, 9, 10, 11, 12, 13, 14, 16, 17,
+ 19, 21, 23, 25, 28, 31, 34, 37, 41, 45,
+ 50, 55, 60, 66, 73, 80, 88, 97, 107, 118,
+ 130, 143, 157, 173, 190, 209, 230, 253, 279, 307,
+ 337, 371, 408, 449, 494, 544, 598, 658, 724, 796,
+ 876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066,
+ 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358,
+ 5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899,
+ 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767
+};
+
+
+void ADPCM_compress(short indata[],char outdata[],int len,ADPCM_state *state)
+{
+ short *lpIn; /* Input buffer pointer */
+ signed char *lpOut; /* output buffer pointer */
+ int val; /* Current input sample value */
+ int sign; /* Current adpcm sign bit */
+ int delta; /* Current adpcm output value */
+ int diff; /* Difference between val and valprev */
+ int step; /* Stepsize */
+ int valpred; /* Predicted output value */
+ int vpdiff; /* Current change to valpred */
+ int index; /* Current step change index */
+ int outputbuffer = 0; /* place to keep previous 4-bit value */
+ int bufferstep; /* toggle between outputbuffer/output */
+
+ lpOut = (signed char *)outdata;
+ lpIn = indata;
+
+ valpred = state->valprev;
+ index = state->index;
+ step = stepsizeTable[index];
+
+ bufferstep = 1;
+
+ for ( ;len > 0;len-- ) {
+ val = *lpIn++;
+ // Step 1 - compute difference with previous value
+ diff = val - valpred;
+ sign = (diff < 0) ? 8 : 0;
+ if(sign)diff=(-diff);
+ // Step 2 - Divide and clamp
+ // Note:
+ // This code *approximately* computes:
+ // delta = diff*4/step;
+ // vpdiff = (delta+0.5)*step/4;
+ // but in shift step bits are dropped. The net result of this is
+ // that even if you have fast mul/div hardware you cannot put it to
+ // good use since the fixup would be too expensive.
+ //
+ delta = 0;
+ vpdiff = (step >> 3);
+ if (diff >=step){
+ delta = 4;
+ diff -= step;
+ vpdiff += step;
+ }
+ step >>= 1;
+ if (diff >= step) {
+ delta |= 2;
+ diff -= step;
+ vpdiff += step;
+ }
+ step >>= 1;
+ if ( diff >= step ) {
+ delta |= 1;
+ vpdiff += step;
+ }
+ // Step 3 - Update previous value
+ if(sign)valpred -= vpdiff;
+ else valpred += vpdiff;
+ // Step 4 - Clamp previous value to 16 bits
+ if ( valpred > 32767 )valpred = 32767;
+ else if ( valpred < -32768 )valpred = -32768;
+ // Step 5 - Assemble value, update index and step values
+ delta |= sign;
+ index += indexTable[delta];
+ if ( index < 0 ) index = 0;
+ if ( index > 88 ) index = 88;
+ step = stepsizeTable[index];
+ // Step 6 - Output value
+ if ( bufferstep )outputbuffer = (delta << 4) & 0xf0;
+ else *lpOut++ = (delta & 0x0f) | outputbuffer;
+ bufferstep = !bufferstep;
+ }
+ // Output last step, if needed
+ if (!bufferstep)*lpOut++ = outputbuffer;
+ state->valprev = valpred;
+ state->index = index;
+}
+
+void ADPCM_uncompress(char indata[],short outdata[],int len,ADPCM_state *state)
+{
+ signed char *inp; /* Input buffer pointer */
+ short *outp; /* output buffer pointer */
+ int sign; /* Current adpcm sign bit */
+ int delta; /* Current adpcm output value */
+ int step; /* Stepsize */
+ int valpred; /* Predicted value */
+ int vpdiff; /* Current change to valpred */
+ int index; /* Current step change index */
+ int inputbuffer=0; /* place to keep next 4-bit value */
+ int bufferstep; /* toggle between inputbuffer/input */
+
+ outp = outdata;
+ inp = (signed char *)indata;
+
+ valpred = state->valprev;
+ index = state->index;
+ step = stepsizeTable[index];
+
+ bufferstep = 0;
+
+ for ( ; len > 0 ; len-- ) {
+
+ /* Step 1 - get the delta value */
+ if ( bufferstep )delta = inputbuffer & 0xf;
+ else {
+ inputbuffer = *inp++;
+ delta = (inputbuffer >> 4) & 0xf;
+ }
+ bufferstep = !bufferstep;
+
+ /* Step 2 - Find new index value (for later) */
+ index += indexTable[delta];
+ if ( index < 0 ) index = 0;
+ if ( index > 88 ) index = 88;
+
+ /* Step 3 - Separate sign and magnitude */
+ sign = delta & 8;
+ delta = delta & 7;
+
+ /* Step 4 - Compute difference and new predicted value */
+ /*
+ ** Computes 'vpdiff = (delta+0.5)*step/4', but see comment
+ ** in adpcm_coder.
+ */
+ vpdiff = step >> 3;
+ if( delta & 4 )vpdiff += step;
+ if( delta & 2 )vpdiff += step>>1;
+ if( delta & 1 )vpdiff += step>>2;
+
+ if(sign)valpred -= vpdiff;
+ else valpred += vpdiff;
+
+ /* Step 5 - clamp output value */
+ if(valpred > 32767)valpred = 32767;
+ else if(valpred < -32768)valpred = -32768;
+
+ /* Step 6 - Update step value */
+ step = stepsizeTable[index];
+
+ /* Step 7 - Output value */
+ *outp++ = valpred;
+ }
+
+ state->valprev = valpred;
+ state->index = index;
+}
+
+
+KviDccVoiceAdpcmCodec::KviDccVoiceAdpcmCodec()
+: KviDccVoiceCodec()
+{
+ m_pEncodeState = new ADPCM_state;
+ m_pEncodeState->index = 0;
+ m_pEncodeState->valprev = 0;
+ m_pDecodeState = new ADPCM_state;
+ m_pDecodeState->index = 0;
+ m_pDecodeState->valprev = 0;
+ m_szName = "adpcm (compression 1:4)";
+}
+
+KviDccVoiceAdpcmCodec::~KviDccVoiceAdpcmCodec()
+{
+ delete m_pEncodeState;
+ delete m_pDecodeState;
+}
+
+void KviDccVoiceAdpcmCodec::encode(KviDataBuffer * signal,KviDataBuffer * stream)
+{
+ if(signal->size() < ADPCM_UNPACKED_FRAME_SIZE_IN_BYTES)return; // nothing to encode
+
+ char * ptr = (char *)signal->data();
+
+ int uFrames = signal->size() / ADPCM_UNPACKED_FRAME_SIZE_IN_BYTES;
+ int uTotalDataCompressed = uFrames * ADPCM_UNPACKED_FRAME_SIZE_IN_BYTES;
+ int uFrameOffset = stream->size();
+ char * endPtr = ptr + uTotalDataCompressed;
+
+ stream->addSize(ADPCM_PACKED_FRAME_SIZE_IN_BYTES * uFrames);
+
+ while(ptr != endPtr)
+ {
+ ADPCM_compress((short *)ptr,(char *)(stream->data() + uFrameOffset),ADPCM_UNPACKED_FRAME_SIZE_IN_SHORTS,m_pEncodeState);
+ ptr += ADPCM_UNPACKED_FRAME_SIZE_IN_BYTES;
+ uFrameOffset += ADPCM_PACKED_FRAME_SIZE_IN_BYTES;
+ }
+ signal->remove(uTotalDataCompressed);
+}
+
+void KviDccVoiceAdpcmCodec::decode(KviDataBuffer * stream,KviDataBuffer * signal)
+{
+ if(stream->size() < ADPCM_PACKED_FRAME_SIZE_IN_BYTES)return; // nothing to decode
+
+ char * ptr = (char *)stream->data();
+
+ // Adpcm codec
+ int uFrames = stream->size() / ADPCM_PACKED_FRAME_SIZE_IN_BYTES;
+ int uTotalDataDecompressed = uFrames * ADPCM_PACKED_FRAME_SIZE_IN_BYTES;
+ int uSignalOffset = signal->size();
+ char * endPtr = ptr + (uTotalDataDecompressed);
+
+ signal->addSize(ADPCM_UNPACKED_FRAME_SIZE_IN_BYTES * uFrames);
+
+ while(ptr != endPtr)
+ {
+ ADPCM_uncompress((char *)ptr,(short *)(signal->data() + uSignalOffset),ADPCM_UNPACKED_FRAME_SIZE_IN_SHORTS,m_pDecodeState);
+ ptr += ADPCM_PACKED_FRAME_SIZE_IN_BYTES;
+ uSignalOffset += ADPCM_UNPACKED_FRAME_SIZE_IN_BYTES;
+ }
+ stream->remove(uTotalDataDecompressed);
+}
+
+int KviDccVoiceAdpcmCodec::encodedFrameSize()
+{
+ return ADPCM_PACKED_FRAME_SIZE_IN_BYTES;
+}
+
+int KviDccVoiceAdpcmCodec::decodedFrameSize()
+{
+ return ADPCM_UNPACKED_FRAME_SIZE_IN_BYTES;
+}
diff --git a/src/modules/dcc/adpcmcodec.h b/src/modules/dcc/adpcmcodec.h
new file mode 100644
index 00000000..63343df0
--- /dev/null
+++ b/src/modules/dcc/adpcmcodec.h
@@ -0,0 +1,59 @@
+#ifndef _ADPCMCODEC_H_
+#define _ADPCMCODEC_H_
+//
+// File : adpcmcodec.h
+// Creation date : Wed Aug 22 19:12:46 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Code derived from adpcm.c : Intel ADPCM coder/decoder
+// Adapted for the KVirc distribution by Szymon Stefanek (pragma at kvirc dot net)
+// Last revision : 22 Aug 2001
+// See kvi_adpcm.cpp for the complete copyright notice.
+//
+//
+// adpcm.h - include file for adpcm coder.
+//
+// Version 1.0, 7-Jul-92.
+//
+//
+// Average compression speed experiment: P166MMX 32MEG
+//
+// INPUT | OUTPUT | COMPRESSION TIME
+// ------------------------------------------------------------------------
+// shorts bytes | bytes | min msec. avrg. high peak (1 time)
+// ------------------------------------------------------------------------
+// 512 1024 | 256 | ~4 4 34
+// 1024 2048 | 512 | ~7 8 75
+// 2048 4096 | 1024 | ~13 15 175 (!!!)
+// 4096 8192 | 2048 | ~26 33 91
+// 8192 16384 | 4096 | ~57 80 220 (~1 sec of audio)
+// 16384 32768 | 8192 | ~110 250 290
+//
+
+#include <qstring.h> // fix for qtextstream.h
+#include "codec.h"
+
+typedef struct adpcm_state
+{
+ short valprev; /* Previous output value */
+ char index; /* Index into stepsize table */
+} ADPCM_state;
+
+
+class KviDccVoiceAdpcmCodec : public KviDccVoiceCodec
+{
+public:
+ KviDccVoiceAdpcmCodec();
+ virtual ~KviDccVoiceAdpcmCodec();
+private:
+ ADPCM_state * m_pEncodeState;
+ ADPCM_state * m_pDecodeState;
+public:
+ virtual void encode(KviDataBuffer * signal,KviDataBuffer * stream);
+ virtual void decode(KviDataBuffer * stream,KviDataBuffer * signal);
+ virtual int encodedFrameSize();
+ virtual int decodedFrameSize();
+};
+
+
+#endif //_ADPCMCODEC_H_
diff --git a/src/modules/dcc/broker.cpp b/src/modules/dcc/broker.cpp
new file mode 100644
index 00000000..b6548e0c
--- /dev/null
+++ b/src/modules/dcc/broker.cpp
@@ -0,0 +1,898 @@
+//
+// File : broker.cpp
+// Creation date : Tue Sep 19 09 2000 10:21:54 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "broker.h"
+#include "dialogs.h"
+#include "chat.h"
+#include "send.h"
+#ifdef COMPILE_DCC_CANVAS
+#include "canvas.h"
+#endif
+#include "voice.h"
+
+#include "kvi_app.h"
+#include "kvi_frame.h"
+#include "kvi_locale.h"
+#include "kvi_options.h"
+#include "kvi_console.h"
+#include "kvi_fileutils.h"
+#include "kvi_out.h"
+#include "kvi_mediatype.h"
+#include "kvi_ircconnection.h"
+#include "kvi_sharedfiles.h"
+
+// kvi_app.cpp
+extern KVIRC_API KviMediaManager * g_pMediaManager;
+extern KVIRC_API KviSharedFilesManager * g_pSharedFilesManager;
+
+#include <qfileinfo.h>
+#include <qstring.h>
+
+//#warning "The broker might lookup the remote host name"
+
+KviDccBroker::KviDccBroker()
+: QObject(0,"dcc_broker")
+{
+ KviDccFileTransfer::init();
+
+ m_pBoxList = new KviPointerList<KviDccBox>;
+ m_pBoxList->setAutoDelete(false);
+
+ m_pDccWindowList = new KviPointerList<KviWindow>;
+ m_pDccWindowList->setAutoDelete(false);
+
+ m_pZeroPortTags = new KviPointerHashTable<QString,KviDccZeroPortTag>(17);
+ m_pZeroPortTags->setAutoDelete(true);
+}
+
+KviDccBroker::~KviDccBroker()
+{
+ delete m_pZeroPortTags;
+ while(m_pBoxList->first())delete m_pBoxList->first();
+ delete m_pBoxList;
+ m_pBoxList = 0;
+ while(m_pDccWindowList->first())delete m_pDccWindowList->first();
+ delete m_pDccWindowList;
+ KviDccFileTransfer::done();
+}
+
+
+KviDccZeroPortTag * KviDccBroker::addZeroPortTag()
+{
+ static unsigned int g_uNextZeroPortTag = 0;
+ g_uNextZeroPortTag++;
+ KviDccZeroPortTag * t = new KviDccZeroPortTag;
+ t->m_tTimestamp = QDateTime::currentDateTime();
+ t->m_szTag.setNum(g_uNextZeroPortTag);
+ //t->m_szTag.prepend("mIrc-zero-port-");
+ t->m_uResumePosition = 0;
+ // FIXME: we should clear this dict if it grows too high....
+ m_pZeroPortTags->insert(t->m_szTag,t);
+ return t;
+}
+
+KviDccZeroPortTag * KviDccBroker::findZeroPortTag(const QString &szTag)
+{
+ KviDccZeroPortTag * t = m_pZeroPortTags->find(szTag);
+ if(!t)return 0;
+ if(t->m_tTimestamp.secsTo(QDateTime::currentDateTime()) > 180)
+ {
+ // too late man...
+ m_pZeroPortTags->remove(szTag);
+ return 0;
+ }
+ return t;
+}
+
+void KviDccBroker::removeZeroPortTag(const QString &szTag)
+{
+ m_pZeroPortTags->remove(szTag);
+}
+
+unsigned int KviDccBroker::dccBoxCount()
+{
+ return m_pBoxList->count();
+}
+
+void KviDccBroker::unregisterDccWindow(KviWindow *wnd)
+{
+ m_pDccWindowList->removeRef(wnd);
+}
+
+void KviDccBroker::unregisterDccBox(KviDccBox * box)
+{
+ //debug("Forgetting box %d",box);
+ m_pBoxList->removeRef(box);
+}
+
+
+void KviDccBroker::cancelDcc(KviDccDescriptor * dcc)
+{
+ delete dcc;
+ dcc = 0;
+}
+
+void KviDccBroker::cancelDcc(KviDccBox *box,KviDccDescriptor * dcc)
+{
+ if(box)box->forgetDescriptor();
+ delete dcc;
+ dcc = 0;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// RSEND
+///////////////////////////////////////////////////////////////////////////////
+
+void KviDccBroker::rsendManage(KviDccDescriptor * dcc)
+{
+ // We need the filename...
+ QFileInfo fi(dcc->szLocalFileName);
+ if(fi.exists())rsendExecute(0,dcc);
+ else rsendAskForFileName(dcc);
+}
+
+void KviDccBroker::rsendAskForFileName(KviDccDescriptor * dcc)
+{
+ QStringList filenames;
+ if(
+ KviFileDialog::askForOpenFileNames(filenames,
+ __tr2qs_ctx("Choose Files to Send - KVIrc","dcc"),"")
+ ) {
+ if(filenames.count() > 0)
+ {
+ KviDccDescriptor * d;
+ KviDccDescriptor * templ = dcc;
+ QStringList::Iterator it=filenames.begin();
+ while(it != filenames.end())
+ {
+ d = new KviDccDescriptor(*dcc);
+ d->szLocalFileName = *(it);
+ d->szLocalFileName.stripWhiteSpace();
+ ++it;
+ if(d->szLocalFileName.isEmpty())
+ cancelDcc(d);
+ else
+ rsendExecute(d);
+ }
+ delete dcc;
+ }
+ } else {
+ cancelDcc(dcc);
+ }
+}
+
+void KviDccBroker::rsendExecute(KviDccDescriptor * dcc)
+{
+ if(!g_pApp->windowExists(dcc->console()))
+ {
+ // No way...we NEED the right IRC context...
+ g_pApp->activeConsole()->output(KVI_OUT_DCCERROR,
+ __tr2qs_ctx("Can't send DCC %Q request to %Q: IRC connection has been terminated","dcc"),
+ &(dcc->szType),&(dcc->szNick));
+ delete dcc;
+ return;
+ }
+
+ // Ok...we need the file to exist
+ QFileInfo fi(dcc->szLocalFileName);
+ if(!(fi.exists() && fi.isReadable() && (fi.isFile()) && (fi.size() > 0)))
+ {
+ dcc->console()->output(KVI_OUT_DCCERROR,__tr2qs_ctx("Can't open file %Q for reading","dcc"),
+ &(dcc->szLocalFileName));
+ delete dcc;
+ return;
+ }
+
+ dcc->szFileName = dcc->szLocalFileName;
+ dcc->szFileName = QFileInfo(dcc->szFileName).fileName();
+
+ QString fName = dcc->szFileName;
+ fName.replace(' ',"\\040"); // be cool :)
+
+ QString szTag;
+ if(dcc->isZeroPortRequest())
+ {
+ // actually we tagged it as "nonempty" in /dcc.rsend --zero-port
+ // retag it with something more reasonable
+ KviDccZeroPortTag * t = addZeroPortTag();
+ t->m_uFileSize = fi.size();
+ dcc->setZeroPortRequestTag(t->m_szTag.latin1()); // latin1() should be ok here
+ szTag = t->m_szTag;
+
+ // DCC [ST]SEND <filename> <fakeipaddress> <zero-port> <filesize> <sessionid>
+ dcc->console()->connection()->sendFmtData("PRIVMSG %s :%cDCC %s %s 127.0.0.1 0 %u %s%c",
+ dcc->console()->connection()->encodeText(dcc->szNick).data(),
+ 0x01,
+ dcc->console()->connection()->encodeText(dcc->szType).data(),
+ dcc->console()->connection()->encodeText(fName).data(),
+ fi.size(),
+ dcc->console()->connection()->encodeText(szTag).data(),
+ 0x01);
+ } else {
+ dcc->console()->connection()->sendFmtData("PRIVMSG %s :%cDCC %s %s %u%c",
+ dcc->console()->connection()->encodeText(dcc->szNick).data(),
+ 0x01,
+ dcc->console()->connection()->encodeText(dcc->szType).data(),
+ dcc->console()->connection()->encodeText(fName).data(),
+ fi.size(),0x01);
+ szTag = dcc->szFileName;
+ }
+
+ // now add a file offer , so he we will accept it automatically
+ // 120 secs is a reasonable timeout
+ QString szMask = dcc->szNick;
+ szMask += "!*@*";
+
+ g_pSharedFilesManager->addSharedFile(szTag,dcc->szLocalFileName,szMask,120);
+
+ delete dcc;
+}
+
+void KviDccBroker::rsendExecute(KviDccBox * box,KviDccDescriptor * dcc)
+{
+ if(box)box->forgetDescriptor();
+ rsendExecute(dcc);
+}
+
+
+///////////////////////////////////////////////////////////////////////////////
+// DCC CHAT
+///////////////////////////////////////////////////////////////////////////////
+
+void KviDccBroker::handleChatRequest(KviDccDescriptor * dcc)
+{
+
+ if(!dcc->bAutoAccept)
+ {
+ // FIXME: better message ? Secure Direct Client Connection...eventually
+ // need confirmation
+ QString tmp = __tr2qs_ctx( \
+ "<b>%1 [%2@%3]</b> requests a " \
+ "<b>Direct Client Connection</b> in <b>%4</b> mode.<br>", \
+ "dcc").arg(dcc->szNick).arg(dcc->szUser).arg(dcc->szHost).arg(dcc->szType);
+
+#ifdef COMPILE_SSL_SUPPORT
+ if(dcc->bIsSSL)tmp += __tr2qs_ctx("The connection will be secured using SSL.<br>","dcc");
+#endif
+
+ if(dcc->isZeroPortRequest())
+ {
+ tmp += __tr2qs_ctx( \
+ "You will be the passive side of the connection.<br>" \
+ ,"dcc");
+ } else {
+ tmp += __tr2qs_ctx( \
+ "The connection target will be host <b>%1</b> on port <b>%2</b><br>" \
+ ,"dcc").arg(dcc->szIp).arg(dcc->szPort);
+ }
+
+
+ QString caption = __tr2qs_ctx("DCC %1 Request - KVIrc","dcc").arg(dcc->szType);
+
+ KviDccAcceptBox * box = new KviDccAcceptBox(this,dcc,tmp,caption);
+
+ m_pBoxList->append(box);
+ connect(box,SIGNAL(accepted(KviDccBox *,KviDccDescriptor *)),
+ this,SLOT(executeChat(KviDccBox *,KviDccDescriptor *)));
+ connect(box,SIGNAL(rejected(KviDccBox *,KviDccDescriptor *)),
+ this,SLOT(cancelDcc(KviDccBox *,KviDccDescriptor *)));
+ box->show();
+ } else {
+ // auto accept
+ executeChat(0,dcc);
+ }
+}
+
+void KviDccBroker::executeChat(KviDccBox *box,KviDccDescriptor * dcc)
+{
+ if(box)box->forgetDescriptor();
+
+ if(!g_pApp->windowExists(dcc->console()))
+ {
+ // rebind to the first available console....
+ dcc->setConsole(g_pApp->activeConsole());
+ }
+
+ KviStr szSubProto = dcc->szType;
+ szSubProto.toLower();
+
+ QString tmp = QString("dcc: %1 %2@%3:%4").arg(szSubProto.ptr()).arg(dcc->szNick).arg(dcc->szIp).arg(dcc->szPort);
+ KviDccChat * chat = new KviDccChat(dcc->console()->frame(),dcc,tmp.utf8().data());
+
+ bool bMinimized = dcc->bOverrideMinimize ? dcc->bShowMinimized : \
+ (KVI_OPTION_BOOL(KviOption_boolCreateMinimizedDccChat) || \
+ (dcc->bAutoAccept && KVI_OPTION_BOOL(KviOption_boolCreateMinimizedDccChatWhenAutoAccepted)));
+
+ dcc->console()->frame()->addWindow(chat,!bMinimized);
+ if(bMinimized)chat->minimize();
+ m_pDccWindowList->append(chat);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// ACTIVE VOICE
+///////////////////////////////////////////////////////////////////////////////
+
+void KviDccBroker::activeVoiceManage(KviDccDescriptor * dcc)
+{
+ if(!dcc->bAutoAccept)
+ {
+ // need confirmation
+ QString tmp = __tr2qs_ctx(
+ "<b>%1 [%2@%3]</b> requests a<br>" \
+ "<b>Direct Client Connection</b> in <b>VOICE</b> mode.<br>" \
+ "The connection target will be host <b>%4</b> on port <b>%5</b><br>" \
+ ,"dcc" \
+ ).arg(dcc->szNick).arg(dcc->szUser).arg(dcc->szHost).arg(dcc->szIp).arg(dcc->szPort);
+
+ KviDccAcceptBox * box = new KviDccAcceptBox(this,dcc,tmp,__tr2qs_ctx("DCC VOICE request","dcc"));
+ m_pBoxList->append(box);
+ connect(box,SIGNAL(accepted(KviDccBox *,KviDccDescriptor *)),
+ this,SLOT(activeVoiceExecute(KviDccBox *,KviDccDescriptor *)));
+ connect(box,SIGNAL(rejected(KviDccBox *,KviDccDescriptor *)),
+ this,SLOT(cancelDcc(KviDccBox *,KviDccDescriptor *)));
+ box->show();
+ } else {
+ // auto accept
+ activeVoiceExecute(0,dcc);
+ }
+}
+
+void KviDccBroker::activeVoiceExecute(KviDccBox *box,KviDccDescriptor * dcc)
+{
+ if(box)box->forgetDescriptor();
+
+ if(!g_pApp->windowExists(dcc->console()))
+ {
+ // rebind to the first available console....
+ dcc->setConsole(g_pApp->activeConsole());
+ }
+
+ KviStr tmp(KviStr::Format,"dcc: voice %s@%s:%s",dcc->szNick.utf8().data(),dcc->szIp.utf8().data(),dcc->szPort.utf8().data());
+ KviDccVoice * v = new KviDccVoice(dcc->console()->frame(),dcc,tmp.ptr());
+
+ bool bMinimized = dcc->bOverrideMinimize ? dcc->bShowMinimized : \
+ (KVI_OPTION_BOOL(KviOption_boolCreateMinimizedDccVoice) || \
+ (dcc->bAutoAccept && KVI_OPTION_BOOL(KviOption_boolCreateMinimizedDccVoiceWhenAutoAccepted)));
+
+ dcc->console()->frame()->addWindow(v,!bMinimized);
+ if(bMinimized)v->minimize();
+
+ m_pDccWindowList->append(v);
+}
+
+
+///////////////////////////////////////////////////////////////////////////////
+// PASSIVE VOICE
+///////////////////////////////////////////////////////////////////////////////
+
+void KviDccBroker::passiveVoiceExecute(KviDccDescriptor * dcc)
+{
+ KviStr tmp(KviStr::Format,"dcc: voice %s@%s:%s",dcc->szNick.utf8().data(),dcc->szIp.utf8().data(),dcc->szPort.utf8().data());
+ KviDccVoice * v = new KviDccVoice(dcc->console()->frame(),dcc,tmp.ptr());
+//#warning "Create minimized dcc voice ?... or maybe it's too much ? :)"
+ bool bMinimized = dcc->bOverrideMinimize ? dcc->bShowMinimized : KVI_OPTION_BOOL(KviOption_boolCreateMinimizedDccChat);
+ dcc->console()->frame()->addWindow(v,!bMinimized);
+ if(bMinimized)v->minimize();
+ m_pDccWindowList->append(v);
+}
+
+
+///////////////////////////////////////////////////////////////////////////////
+// ACTIVE CANVAS
+///////////////////////////////////////////////////////////////////////////////
+
+#ifdef COMPILE_DCC_CANVAS
+
+void KviDccBroker::activeCanvasManage(KviDccDescriptor * dcc)
+{
+ if(!dcc->bAutoAccept)
+ {
+ // need confirmation
+ QString tmp = __tr2qs_ctx( \
+ "<b>%1 [%2@%3]</b> requests a<br>" \
+ "<b>Direct Client Connection</b> in <b>CANVAS</b> mode.<br>" \
+ "The connection target will be host <b>%4</b> on port <b>%5</b><br>" \
+ ,"dcc" \
+ ).arg(dcc->szNick).arg(dcc->szUser).arg(dcc->szHost).arg(dcc->szIp).arg(dcc->szPort);
+
+ KviDccAcceptBox * box = new KviDccAcceptBox(this,dcc,tmp,__tr2qs_ctx("DCC CANVAS request","dcc"));
+ m_pBoxList->append(box);
+ connect(box,SIGNAL(accepted(KviDccBox *,KviDccDescriptor *)),
+ this,SLOT(activeCanvasExecute(KviDccBox *,KviDccDescriptor *)));
+ connect(box,SIGNAL(rejected(KviDccBox *,KviDccDescriptor *)),
+ this,SLOT(cancelDcc(KviDccBox *,KviDccDescriptor *)));
+ box->show();
+ } else {
+ // auto accept
+ activeCanvasExecute(0,dcc);
+ }
+}
+
+#endif
+
+void KviDccBroker::activeCanvasExecute(KviDccBox *box,KviDccDescriptor * dcc)
+{
+#ifdef COMPILE_DCC_CANVAS
+ if(box)box->forgetDescriptor();
+
+ if(!g_pApp->windowExists(dcc->console()))
+ {
+ // rebind to the first available console....
+ dcc->setConsole(g_pApp->activeConsole());
+ }
+
+ KviStr tmp(KviStr::Format,"dcc: canvas %s@%s:%s",dcc->szNick.utf8().data(),dcc->szIp.utf8().data(),dcc->szPort.utf8().data());
+ KviDccCanvas * cnv = new KviDccCanvas(dcc->console()->frame(),dcc,tmp.ptr());
+
+//#warning "This option should be dedicated to Dcc Canvas!....for now we are using the DccChat options"
+ bool bMinimized = dcc->bOverrideMinimize ? dcc->bShowMinimized : \
+ (KVI_OPTION_BOOL(KviOption_boolCreateMinimizedDccChat) || \
+ (dcc->bAutoAccept && KVI_OPTION_BOOL(KviOption_boolCreateMinimizedDccChatWhenAutoAccepted)));
+
+ dcc->console()->frame()->addWindow(cnv,!bMinimized);
+ if(bMinimized)cnv->minimize();
+
+ m_pDccWindowList->append(cnv);
+#endif
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// PASSIVE CANVAS
+///////////////////////////////////////////////////////////////////////////////
+#ifdef COMPILE_DCC_CANVAS
+void KviDccBroker::passiveCanvasExecute(KviDccDescriptor * dcc)
+{
+ KviStr tmp(KviStr::Format,"dcc: canvas %s@%s:%s",dcc->szNick.utf8().data(),dcc->szIp.utf8().data(),dcc->szPort.utf8().data());
+ KviDccCanvas * cnv = new KviDccCanvas(dcc->console()->frame(),dcc,tmp.ptr());
+//#warning "This option should be dedicated to Dcc Canvas!....for now we are using the DccChat options"
+ bool bMinimized = dcc->bOverrideMinimize ? dcc->bShowMinimized : KVI_OPTION_BOOL(KviOption_boolCreateMinimizedDccChat);
+ dcc->console()->frame()->addWindow(cnv,!bMinimized);
+ if(bMinimized)cnv->minimize();
+ m_pDccWindowList->append(cnv);
+}
+
+#endif
+
+///////////////////////////////////////////////////////////////////////////////
+// SEND
+///////////////////////////////////////////////////////////////////////////////
+
+void KviDccBroker::recvFileManage(KviDccDescriptor * dcc)
+{
+ if(dcc->bIsIncomingAvatar)
+ {
+ bool bOk;
+ uint size = dcc->szFileSize.toUInt(&bOk);
+ if(bOk) {
+ if(size>=KVI_OPTION_UINT(KviOption_uintMaximumRequestedAvatarSize)) {
+ cancelDcc(0,dcc);
+ return;
+ }
+ }
+ }
+
+ if(!dcc->bAutoAccept)
+ {
+ // need confirmation
+ QString tmp;
+
+ if(dcc->bActive)
+ {
+ // Normal active send: we will be connecting
+ tmp = __tr2qs_ctx( \
+ "<b>%1 [%2@%3]</b> " \
+ "wants to send you the file " \
+ "'<b>%4</b>', " \
+ "<b>%5</b> large.<br>" \
+ "The connection target will be host <b>%6</b> on port <b>%7</b><br>" \
+ ,"dcc" \
+ ).arg(dcc->szNick).arg(dcc->szUser).arg(dcc->szHost).arg(
+ dcc->szFileName).arg(KviQString::makeSizeReadable(dcc->szFileSize.toInt())).arg(
+ dcc->szIp).arg(dcc->szPort);
+
+ } else {
+ // passive: we will be listening!
+ tmp = __tr2qs_ctx( \
+ "<b>%1 [%2@%3]</b> "
+ "wants to send you the file " \
+ "'<b>%4</b>', " \
+ "<b>%5</b> large.<br>" \
+ "You will be the passive side of the connection.<br>" \
+ ,"dcc" \
+ ).arg(dcc->szNick).arg(dcc->szUser).arg(dcc->szHost).arg(
+ dcc->szFileName).arg(KviQString::makeSizeReadable(dcc->szFileSize.toInt()));
+ }
+
+ if(dcc->bIsIncomingAvatar)
+ {
+ tmp += __tr2qs_ctx( \
+ "<center><b>Note:</b></center>" \
+ "The file appears to be an avatar that you have requested. " \
+ "You should not change its filename. " \
+ "Save it in a location where KVIrc can find it, such as " \
+ "the 'avatars', 'incoming', or 'pics' directories, " \
+ "your home directory, or the save directory for the incoming file type. " \
+ "The default save path will probably work. " \
+ "You can instruct KVIrc to accept incoming avatars automatically " \
+ "by setting the option <tt>boolAutoAcceptIncomingAvatars</tt> to true.<br>" \
+ ,"dcc" \
+ );
+ }
+
+//#warning "Maybe remove the pending avatar if rejected ?"
+
+ QString title = __tr2qs_ctx("DCC %1 Request - KVIrc","dcc").arg(dcc->szType);
+
+ KviDccAcceptBox * box = new KviDccAcceptBox(this,dcc,tmp,title);
+ m_pBoxList->append(box);
+ connect(box,SIGNAL(accepted(KviDccBox *,KviDccDescriptor *)),
+ this,SLOT(chooseSaveFileName(KviDccBox *,KviDccDescriptor *)));
+ connect(box,SIGNAL(rejected(KviDccBox *,KviDccDescriptor *)),
+ this,SLOT(cancelDcc(KviDccBox *,KviDccDescriptor *)));
+ box->show();
+ } else {
+ // auto accept
+
+ if(_OUTPUT_VERBOSE)
+ {
+ dcc->console()->output(KVI_OUT_DCCMSG,__tr2qs_ctx("Auto-accepting DCC %Q request from %Q!%Q@%Q for file %Q","dcc"),
+ &(dcc->szType),&(dcc->szNick),&(dcc->szUser),
+ &(dcc->szHost),&(dcc->szFileName));
+ }
+ chooseSaveFileName(0,dcc);
+ }
+}
+
+void KviDccBroker::chooseSaveFileName(KviDccBox *box,KviDccDescriptor *dcc)
+{
+ if(box)box->forgetDescriptor();
+
+ // Lookup the suggested save directory
+
+ dcc->szLocalFileName = "";
+
+ if(dcc->bIsIncomingAvatar)g_pApp->getLocalKvircDirectory(dcc->szLocalFileName,KviApp::Avatars);
+ else {
+
+ if(KVI_OPTION_BOOL(KviOption_boolUseIncomingDccMediaTypeSavePath))
+ {
+ g_pMediaManager->lock();
+ if(KviMediaType * mt = g_pMediaManager->findMediaType(dcc->szFileName.utf8().data(),false))
+ {
+ if(mt->szSavePath.hasData())
+ {
+ if(KviFileUtils::directoryExists(mt->szSavePath.ptr()))dcc->szLocalFileName = mt->szSavePath;
+ else {
+ if(KviFileUtils::makeDir(mt->szSavePath.ptr()))dcc->szLocalFileName = mt->szSavePath;
+ }
+ if(KVI_OPTION_BOOL(KviOption_boolSortReceivedByDccFilesByNicks))
+ {
+ KviQString::ensureLastCharIs(dcc->szLocalFileName,KVI_PATH_SEPARATOR_CHAR);
+ dcc->szLocalFileName.append(dcc->szNick);
+ KviFileUtils::adjustFilePath(dcc->szLocalFileName);
+ }
+ KviFileUtils::makeDir(dcc->szLocalFileName);
+ }
+ }
+ g_pMediaManager->unlock();
+ }
+
+ if(dcc->szLocalFileName.isEmpty())
+ {
+ g_pApp->getLocalKvircDirectory(dcc->szLocalFileName,KviApp::Incoming);
+ if(KVI_OPTION_BOOL(KviOption_boolSortReceivedByDccFilesByNicks))
+ {
+ KviQString::ensureLastCharIs(dcc->szLocalFileName,KVI_PATH_SEPARATOR_CHAR);
+ dcc->szLocalFileName.append(dcc->szNick);
+ KviFileUtils::adjustFilePath(dcc->szLocalFileName);
+ KviFileUtils::makeDir(dcc->szLocalFileName);
+ }
+ }
+ }
+ KviFileUtils::adjustFilePath(dcc->szLocalFileName);
+ KviQString::ensureLastCharIs(dcc->szLocalFileName,KVI_PATH_SEPARATOR_CHAR);
+
+ if(!(dcc->bAutoAccept))
+ {
+ dcc->szLocalFileName+=dcc->szFileName;
+ if(KviFileDialog::askForSaveFileName(dcc->szLocalFileName,
+ __tr2qs_ctx("Choose Files to Save - KVIrc","dcc"),dcc->szLocalFileName))
+ {
+ renameOverwriteResume(0,dcc);
+ } else {
+ cancelDcc(dcc);
+ }
+ } else {
+ // auto accept
+ // WE choose the filename
+ dcc->szLocalFileName.append(dcc->szFileName);
+
+ if(_OUTPUT_VERBOSE)
+ {
+ dcc->console()->output(KVI_OUT_DCCMSG,__tr2qs_ctx("Auto-saving DCC %Q file %Q as \r![!dbl]play $0\r%Q\r","dcc"),
+ &(dcc->szType),&(dcc->szFileName),&(dcc->szLocalFileName));
+ }
+
+ renameOverwriteResume(0,dcc);
+ }
+}
+
+void KviDccBroker::renameOverwriteResume(KviDccBox *box,KviDccDescriptor * dcc)
+{
+ if(box)box->forgetDescriptor();
+
+ // Check if file exists
+ QFileInfo fi(dcc->szLocalFileName);
+ if(fi.exists() && (fi.size() > 0)) // 0 byte files are senseless for us
+ {
+ dcc->szLocalFileSize.setNum(fi.size());
+
+ bool bOk;
+ int iRemoteSize = dcc->szFileSize.toInt(&bOk);
+ if(!bOk)iRemoteSize = -1;
+
+ // FIXME: Files downloaded succesfully shouldn't be resumed
+ // we should keep a db of downloaded files!
+
+ if(!dcc->bAutoAccept)
+ {
+ QString tmp;
+ bool bDisableResume = false;
+
+ if((iRemoteSize > -1) || // remote size is unknown
+ (iRemoteSize > ((int)(fi.size())))) // or it is larger than the actual size on disk
+ {
+ tmp = __tr2qs_ctx( \
+ "The file '<b>%1</b>' already exists " \
+ "and is <b>%2</b> large.<br>" \
+ "Do you wish to<br>" \
+ "<b>overwrite</b> the existing file,<br> " \
+ "<b>auto-rename</b> the new file, or<br>" \
+ "<b>resume</b> an incomplete download?" \
+ ,"dcc" \
+ ).arg(dcc->szLocalFileName).arg(KviQString::makeSizeReadable(fi.size()));
+ } else {
+ bDisableResume = true;
+ // the file on disk is larger or equal to the remote one
+ tmp = __tr2qs_ctx( \
+ "The file '<b>%1</b>' already exists" \
+ "and is larger than the offered one.<br>" \
+ "Do you wish to<br>" \
+ "<b>overwrite</b> the existing file, or<br> " \
+ "<b>auto-rename</b> the new file ?" \
+ ,"dcc" \
+ ).arg(dcc->szLocalFileName);
+ }
+
+ KviDccRenameBox * box = new KviDccRenameBox(this,dcc,tmp,bDisableResume);
+ m_pBoxList->append(box);
+ connect(box,SIGNAL(renameSelected(KviDccBox *,KviDccDescriptor *)),
+ this,SLOT(renameDccSendFile(KviDccBox *,KviDccDescriptor *)));
+ connect(box,SIGNAL(overwriteSelected(KviDccBox *,KviDccDescriptor *)),
+ this,SLOT(recvFileExecute(KviDccBox *,KviDccDescriptor *)));
+ connect(box,SIGNAL(cancelSelected(KviDccBox *,KviDccDescriptor *)),
+ this,SLOT(cancelDcc(KviDccBox *,KviDccDescriptor *)));
+ box->show();
+ return;
+ } else {
+ // auto resume ?
+ if(KVI_OPTION_BOOL(KviOption_boolAutoResumeDccSendWhenAutoAccepted) &&
+ (iRemoteSize > -1) && // only if the remote size is really known
+ (iRemoteSize > ((int)(fi.size()))) && // only if the remote size is larger than the local size
+ (!KviDccFileTransfer::nonFailedTransferWithLocalFileName(dcc->szLocalFileName.utf8().data()))) // only if there is no transfer with this local file name yet
+ {
+ // yep, auto resume...
+ dcc->bResume = true;
+ recvFileExecute(0,dcc);
+ } else {
+ // otherwise auto rename
+ renameDccSendFile(0,dcc);
+ }
+ return;
+ }
+ } else dcc->szLocalFileSize = "0";
+
+ // everything OK
+ recvFileExecute(0,dcc);
+}
+
+void KviDccBroker::renameDccSendFile(KviDccBox *box,KviDccDescriptor * dcc)
+{
+ if(box)box->forgetDescriptor();
+
+
+ if(QFileInfo(dcc->szLocalFileName).exists())
+ {
+ KviStr szOrig = dcc->szLocalFileName;
+ int i = 1;
+ do {
+ KviStr szNum;
+ szNum.setNum(i);
+ int idx = szOrig.findLastIdx('.');
+ if(idx != -1)
+ {
+ dcc->szLocalFileName = szOrig.left(idx);
+ dcc->szLocalFileName += ".";
+ dcc->szLocalFileName += szNum;
+ dcc->szLocalFileName += szOrig.right(szOrig.len() - idx);
+ } else {
+ dcc->szLocalFileName = szOrig;
+ dcc->szLocalFileName += ".";
+ dcc->szLocalFileName += szNum;
+ }
+ i++;
+ } while(QFileInfo(dcc->szLocalFileName).exists());
+
+ if(_OUTPUT_VERBOSE)
+ {
+ dcc->console()->output(KVI_OUT_DCCMSG,__tr2qs_ctx("File %s exists, auto-renaming to %Q","dcc"),
+ szOrig.ptr(),&(dcc->szLocalFileName));
+ }
+ }
+
+ dcc->szLocalFileSize = "0"; // 0 for sure
+
+ recvFileExecute(0,dcc);
+}
+
+void KviDccBroker::recvFileExecute(KviDccBox *box,KviDccDescriptor * dcc)
+{
+ if(box)box->forgetDescriptor();
+
+ if(!g_pApp->windowExists(dcc->console()))
+ {
+ // rebind to the first available console....
+ dcc->setConsole(g_pApp->activeConsole());
+ }
+
+ //KviDccSend * send = new KviDccSend(dcc->console()->frame(),dcc,tmp.ptr());
+ KviDccFileTransfer * send = new KviDccFileTransfer(dcc);
+
+ bool bMinimized = dcc->bOverrideMinimize ? dcc->bShowMinimized : \
+ (KVI_OPTION_BOOL(KviOption_boolCreateMinimizedDccSend) || \
+ (dcc->bAutoAccept && KVI_OPTION_BOOL(KviOption_boolCreateMinimizedDccSendWhenAutoAccepted)));
+
+ send->invokeTransferWindow(dcc->console(),bMinimized,bMinimized);
+}
+
+
+void KviDccBroker::sendFileManage(KviDccDescriptor * dcc)
+{
+ QStringList filenames;
+ if(
+ KviFileDialog::askForOpenFileNames(filenames,
+ __tr2qs_ctx("Choose Files to Send - KVIrc","dcc"),"")
+ ) {
+ if(filenames.count() > 0)
+ {
+ KviDccDescriptor * d;
+ KviDccDescriptor * templ = dcc;
+ QStringList::Iterator it=filenames.begin();
+ while(it != filenames.end())
+ {
+ d = new KviDccDescriptor(*dcc);
+ d->szLocalFileName = *(it);
+ d->szLocalFileName.stripWhiteSpace();
+ ++it;
+ if(d->szLocalFileName.isEmpty())
+ cancelDcc(d);
+ else
+ sendFileExecute(0,d);
+ }
+ delete dcc;
+ }
+ } else {
+ cancelDcc(dcc);
+ }
+}
+
+void KviDccBroker::sendFileExecute(KviDccBox * box,KviDccDescriptor *dcc)
+{
+ if(box)box->forgetDescriptor();
+
+ if(!g_pApp->windowExists(dcc->console()))
+ {
+ // rebind to the first available console....
+ dcc->setConsole(g_pApp->activeConsole());
+ }
+
+ QFileInfo fi(dcc->szLocalFileName);
+ if(!(fi.exists() && fi.isReadable() && (fi.isFile()) && (fi.size() > 0)))
+ {
+ dcc->console()->output(KVI_OUT_DCCERROR,__tr2qs_ctx("Can't open file %Q for reading","dcc"),
+ &(dcc->szLocalFileName));
+ delete dcc;
+ return;
+ }
+
+ dcc->szFileName = dcc->szLocalFileName;
+ dcc->szFileName = QFileInfo(dcc->szFileName).fileName();
+
+ dcc->szLocalFileSize.setNum(fi.size());
+
+ KviDccFileTransfer * send = new KviDccFileTransfer(dcc);
+
+ bool bMinimized = dcc->bOverrideMinimize ? dcc->bShowMinimized : KVI_OPTION_BOOL(KviOption_boolCreateMinimizedDccSend);
+
+ send->invokeTransferWindow(dcc->console(),bMinimized,bMinimized);
+}
+
+bool KviDccBroker::canUnload()
+{
+ if(m_pBoxList)
+ {
+ if((m_pBoxList->count() != 0) ||
+ (m_pDccWindowList->count() != 0) ||
+ (KviDccFileTransfer::transferCount() != 0))return false;
+ } // else in the destructor anyway (going to die)
+ return true;
+}
+
+bool KviDccBroker::handleResumeAccepted(const char * filename,const char * port,const char * szZeroPortTag)
+{
+ return KviDccFileTransfer::handleResumeAccepted(filename,port,szZeroPortTag);
+}
+
+bool KviDccBroker::handleResumeRequest(KviDccRequest * dcc,const char * filename,const char * port,unsigned int filePos,const char * szZeroPortTag)
+{
+ //debug("HANDLE %s %s %u %s",filename,port,filePos,szZeroPortTag);
+ // the zeroPOrtTag is nonempty here only if port == 0
+ if(kvi_strEqualCI("0",port) && szZeroPortTag)
+ {
+ // zero port resume request (we have sent out a DCC SEND <filename> <fakeip> 0 <tag>
+ KviDccZeroPortTag * t = findZeroPortTag(QString(szZeroPortTag));
+ if(t)
+ {
+ //debug("FOUND");
+ // valid zero port resume request
+ if(filePos < t->m_uFileSize)
+ {
+ //debug("VALID");
+ // ok!
+ t->m_uResumePosition = filePos;
+
+ KviStr szBuffy;
+ KviServerParser::encodeCtcpParameter(filename,szBuffy);
+
+ dcc->ctcpMsg->msg->console()->connection()->sendFmtData(
+ "PRIVMSG %s :%cDCC ACCEPT %s %s %u %s%c",
+ dcc->ctcpMsg->msg->console()->connection()->encodeText(dcc->ctcpMsg->pSource->nick()).data(),
+ 0x01,
+ szBuffy.ptr(),
+ port,
+ filePos,
+ szZeroPortTag,
+ 0x01);
+
+ return true;
+ } else {
+ return false; // invalid resume size
+ }
+ }
+ }
+ //debug("NOT A ZeRO PORT");
+
+ return KviDccFileTransfer::handleResumeRequest(filename,port,filePos);
+}
+
+
+#include "m_broker.moc"
diff --git a/src/modules/dcc/broker.h b/src/modules/dcc/broker.h
new file mode 100644
index 00000000..80fa9768
--- /dev/null
+++ b/src/modules/dcc/broker.h
@@ -0,0 +1,124 @@
+#ifndef _BROKER_H_
+#define _BROKER_H_
+//=======================================================================================
+//
+// File : broker.h
+// Creation date : Tue Sep 19 09 2000 10:20:01 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=======================================================================================
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_USE_QT4
+ // #define COMPILE_DCC_CANVAS
+#else
+ #define COMPILE_DCC_CANVAS
+#endif
+
+#include "kvi_string.h"
+#include "kvi_pointerlist.h"
+#include "kvi_sparser.h"
+
+#include "kvi_pointerhashtable.h"
+#include <qdatetime.h>
+#include <qobject.h>
+
+class KviConsole;
+class KviDccBroker;
+class KviWindow;
+class KviDccBox;
+
+#include "descriptor.h"
+
+class KviDccZeroPortTag
+{
+public:
+ QDateTime m_tTimestamp;
+ QString m_szTag;
+ unsigned int m_uFileSize; // outgoing file size, valid only for file transfers obviously
+ unsigned int m_uResumePosition; // if 0 = no resume, valid only for file transfers obviously
+};
+
+class KviDccBroker : public QObject
+{
+ Q_OBJECT
+public:
+ KviDccBroker();
+ ~KviDccBroker();
+protected:
+ KviPointerList<KviDccBox> * m_pBoxList;
+ KviPointerList<KviWindow> * m_pDccWindowList;
+ KviPointerHashTable<QString,KviDccZeroPortTag> * m_pZeroPortTags;
+public:
+ KviDccZeroPortTag * addZeroPortTag();
+ KviDccZeroPortTag * findZeroPortTag(const QString &szTag);
+ void removeZeroPortTag(const QString &szTag);
+
+ unsigned int dccWindowsCount(){ return m_pDccWindowList->count(); };
+ unsigned int dccBoxCount();
+
+ void unregisterDccBox(KviDccBox * box);
+ void unregisterDccWindow(KviWindow *dcc);
+
+ void rsendManage(KviDccDescriptor * dcc);
+ void rsendAskForFileName(KviDccDescriptor * dcc);
+
+ void handleChatRequest(KviDccDescriptor * dcc);
+
+#ifdef COMPILE_DCC_CANVAS
+ void activeCanvasManage(KviDccDescriptor * dcc);
+ void passiveCanvasExecute(KviDccDescriptor * dcc);
+#endif
+
+ void activeVoiceManage(KviDccDescriptor * dcc);
+ void passiveVoiceExecute(KviDccDescriptor * dcc);
+
+ void recvFileManage(KviDccDescriptor * dcc);
+ void sendFileManage(KviDccDescriptor * dcc);
+
+ bool handleResumeAccepted(const char * filename,const char * port,const char * szZeroPortTag);
+ bool handleResumeRequest(KviDccRequest * dcc,const char * filename,const char * port,unsigned int filePos,const char * szZeroPortTag);
+
+public slots:
+ void rsendExecute(KviDccBox * box,KviDccDescriptor * dcc);
+ void rsendExecute(KviDccDescriptor * dcc);
+
+// void activeChatExecute(KviDccBox * box,KviDccDescriptor * dcc);
+ void executeChat(KviDccBox * box,KviDccDescriptor * dcc);
+
+ void activeCanvasExecute(KviDccBox * box,KviDccDescriptor * dcc);
+ void activeVoiceExecute(KviDccBox * box,KviDccDescriptor * dcc);
+
+ void sendFileExecute(KviDccBox * box,KviDccDescriptor * dcc);
+ void recvFileExecute(KviDccBox * box,KviDccDescriptor * dcc);
+
+
+ void chooseSaveFileName(KviDccBox *box,KviDccDescriptor * dcc);
+ void renameOverwriteResume(KviDccBox *box,KviDccDescriptor * dcc);
+ void renameDccSendFile(KviDccBox *box,KviDccDescriptor * dcc);
+
+ void cancelDcc(KviDccBox *box,KviDccDescriptor * dcc);
+ void cancelDcc(KviDccDescriptor * dcc);
+
+public:
+ bool canUnload();
+};
+
+#endif
diff --git a/src/modules/dcc/canvas.cpp b/src/modules/dcc/canvas.cpp
new file mode 100644
index 00000000..e80272ae
--- /dev/null
+++ b/src/modules/dcc/canvas.cpp
@@ -0,0 +1,301 @@
+//
+// File : canvas.cpp
+// Creation date : Sun Jul 29 07 2001 20:23:13 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#define QT_MODULE_CANVAS
+
+#include "canvas.h"
+
+#ifdef COMPILE_DCC_CANVAS
+
+#include "dialogs.h"
+#include "marshal.h"
+#include "canvaswidget.h"
+
+#define _KVI_DEBUG_CHECK_RANGE_
+#include "kvi_debug.h"
+#include "kvi_options.h"
+#include "kvi_input.h"
+#include "kvi_ircview.h"
+#include "kvi_iconmanager.h"
+#include "kvi_locale.h"
+#include "kvi_error.h"
+#include "kvi_out.h"
+#include "kvi_netutils.h"
+#include "kvi_console.h"
+#include "kvi_frame.h"
+#include "kvi_malloc.h"
+#include "kvi_memmove.h"
+#include "kvi_thread.h"
+#include "kvi_ircsocket.h"
+#include "kvi_settings.h"
+#include "kvi_themedlabel.h"
+#include "kvi_ircconnection.h"
+
+#include <qsplitter.h>
+
+extern KviDccBroker * g_pDccBroker;
+
+
+KviDccCanvas::KviDccCanvas(KviFrame *pFrm,KviDccDescriptor * dcc,const char * name)
+: KviDccWindow(KVI_WINDOW_TYPE_DCCCANVAS,pFrm,name,dcc)
+{
+ m_pSplitter = new QSplitter(QSplitter::Vertical,this,"splitter");
+
+ m_pCanvas = new KviCanvasWidget(m_pSplitter);
+
+ m_pIrcView = new KviIrcView(m_pSplitter,pFrm,this);
+ m_pInput = new KviInput(this);
+
+// setFocusHandler(m_pInput,this);
+
+ m_pMarshal = new KviDccMarshal(this);
+ connect(m_pMarshal,SIGNAL(error(int)),this,SLOT(handleMarshalError(int)));
+ connect(m_pMarshal,SIGNAL(connected()),this,SLOT(connected()));
+
+
+ if(!(m_pDescriptor->bActive))
+ {
+ // PASSIVE CONNECTION
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("Attempting a passive DCC CANVAS connection","dcc"));
+ int ret = m_pMarshal->dccListen(dcc->szListenIp,dcc->szListenPort,m_pDescriptor->bDoTimeout);
+ if(ret != KviError_success)handleMarshalError(ret);
+ else {
+
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("Listening on interface %Q port %Q","dcc"),
+ &(m_pMarshal->localIp()),&(m_pMarshal->localPort()));
+
+ if(dcc->bSendRequest)
+ {
+ QString ip = !dcc->szFakeIp.isEmpty() ? dcc->szFakeIp : dcc->szListenIp;
+ QString port = !dcc->szFakePort.isEmpty() ? dcc->szFakePort.utf8().data() : m_pMarshal->localPort();
+//#warning "OPTION FOR SENDING 127.0.0.1 and so on (not an unsigned number)"
+ struct in_addr a;
+ if(kvi_stringIpToBinaryIp(ip.utf8().data(),&a))ip.setNum(htonl(a.s_addr));
+ dcc->console()->connection()->sendFmtData("PRIVMSG %s :%cDCC CANVAS chat %Q %Q%c",
+ dcc->console()->connection()->encodeText( dcc->szNick.utf8().data() ).data(),
+ 0x01,&ip,
+ &port,
+ 0x01);
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("Sent DCC CANVAS request to %Q, waiting for the remote client to connect...","dcc"),
+ &(dcc->szNick));
+ } else outputNoFmt(KVI_OUT_DCCMSG,__tr2qs_ctx("DCC CANVAS request not sent: awaiting manual connections","dcc"));
+ }
+ } else {
+ // ACTIVE CONNECTION
+ outputNoFmt(KVI_OUT_DCCMSG,__tr2qs_ctx("Attempting an active DCC CANVAS connection","dcc"));
+ int ret = m_pMarshal->dccConnect(dcc->szIp.utf8().data(),dcc->szPort.utf8().data(),m_pDescriptor->bDoTimeout);
+ if(ret != KviError_success)handleMarshalError(ret);
+ else output(KVI_OUT_DCCMSG,__tr2qs_ctx("Contacting host %Q on port %Q","dcc"),&(dcc->szIp),&(dcc->szPort));
+ }
+
+// m_pSlaveThread = 0;
+}
+
+KviDccCanvas::~KviDccCanvas()
+{
+ g_pDccBroker->unregisterDccWindow(this);
+// if(m_pSlaveThread)
+// {
+// m_pSlaveThread->terminate();
+// delete m_pSlaveThread;
+// m_pSlaveThread = 0;
+// }
+ KviThreadManager::killPendingEvents(this);
+// delete m_pDescriptor;
+// delete m_pMarshal;
+}
+
+const QString & KviDccCanvas::target()
+{
+ // This may change on the fly...
+ m_szTarget.sprintf("%s@%s:%s",
+ m_pDescriptor->szNick.utf8().data(),m_pDescriptor->szIp.utf8().data(),m_pDescriptor->szPort.utf8().data());
+ return m_szTarget;
+}
+
+void KviDccCanvas::fillCaptionBuffers()
+{
+ KviStr tmp(KviStr::Format,"DCC Canvas %s@%s:%s",
+ m_pDescriptor->szNick.utf8().data(),m_pDescriptor->szIp.utf8().data(),m_pDescriptor->szPort.utf8().data());
+
+ m_szPlainTextCaption = tmp;
+
+ m_szHtmlActiveCaption.sprintf("<nobr><font color=\"%s\"><b>%s</b></font></nobr>",
+ KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name().ascii(),tmp.ptr());
+ m_szHtmlInactiveCaption.sprintf("<nobr><font color=\"%s\"><b>%s</b></font></nobr>",
+ KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name().ascii(),tmp.ptr());
+}
+
+QPixmap * KviDccCanvas::myIconPtr()
+{
+ return g_pIconManager->getSmallIcon(KVI_SMALLICON_CANVAS);
+}
+
+
+void KviDccCanvas::getBaseLogFileName(KviStr &buffer)
+{
+ buffer.sprintf("%s_%s_%s",m_pDescriptor->szNick.utf8().data(),m_pDescriptor->szIp.utf8().data(),m_pDescriptor->szPort.utf8().data());
+}
+
+void KviDccCanvas::ownMessage(const char * text)
+{
+ KviStr buf(KviStr::Format,"%s\r\n",text);
+// m_pSlaveThread->sendRawData(buf.ptr(),buf.len());
+ m_pFrm->firstConsole()->outputPrivmsg(this,KVI_OUT_OWNPRIVMSG,
+ m_pDescriptor->szLocalNick.utf8().data(),m_pDescriptor->szLocalUser.utf8().data(),
+ m_pDescriptor->szLocalHost.utf8().data(),text);
+}
+
+void KviDccCanvas::ownAction(const char * text)
+{
+ KviStr buf(KviStr::Format,"%cACTION %s%c\r\n",text);
+// m_pSlaveThread->sendRawData(buf.ptr(),buf.len());
+ output(KVI_OUT_ACTION,"%Q %s",&(m_pDescriptor->szLocalNick),text);
+}
+
+bool KviDccCanvas::event(QEvent *e)
+{
+// if(e->type() == KVI_THREAD_EVENT)
+// {
+// switch(((KviThreadEvent *)e)->id())
+// {
+// case KVI_DCC_THREAD_EVENT_ERROR:
+// {
+// int * err = ((KviThreadDataEvent<int> *)e)->getData();
+// output(KVI_OUT_DCCERROR,__tr("ERROR: %s"),kvi_getErrorString(*err));
+// delete err;
+// return true;
+// }
+// break;
+// case KVI_DCC_THREAD_EVENT_DATA:
+// {
+// KviStr * d = ((KviThreadDataEvent<KviStr> *)e)->getData();
+// if(d->firstCharIs(0x01))
+// {
+// d->cutLeft(1);
+// if(d->lastCharIs(0x01))d->cutRight(1);
+// if(kvi_strEqualCIN("ACTION",d->ptr(),6))d->cutLeft(6);
+// d->stripLeftWhiteSpace();
+// output(KVI_OUT_ACTION,"%s %s",m_pDescriptor->szNick.ptr(),d->ptr());
+// } else {
+//
+//#ifdef COMPILE_CRYPT_SUPPORT
+// if(KviCryptSessionInfo * cinf = cryptSessionInfo())
+// {
+// if(cinf->bDoDecrypt)
+// {
+// if(cinf->pEngine->isCryptographicEngine() && (*(d->ptr()) == KVI_TEXT_CRYPT))
+// {
+// KviStr decryptedStuff;
+// if(cinf->pEngine->decrypt(d->ptr() + 1,decryptedStuff))
+// {
+// m_pFrm->firstConsole()->outputPrivmsg(this,KVI_OUT_DCCCHATMSGCRYPTED,
+// m_pDescriptor->szNick.ptr(),m_pDescriptor->szUser.ptr(),
+// m_pDescriptor->szHost.ptr(),decryptedStuff.ptr());
+// } else {
+// output(KVI_OUT_SYSTEMERROR,
+// __tr("The following message looks like an encrypted one, but the crypting engine failed to decode it: %s"),
+// cinf->pEngine->lastError());
+// m_pFrm->firstConsole()->outputPrivmsg(this,KVI_OUT_DCCCHATMSG,
+// m_pDescriptor->szNick.ptr(),m_pDescriptor->szUser.ptr(),
+// m_pDescriptor->szHost.ptr(),d->ptr() + 1);
+// }
+// delete d;
+// return true;
+// } else {
+// if(!(cinf->pEngine->isCryptographicEngine()))
+// {
+// KviStr decryptedStuff;
+// if(cinf->pEngine->decrypt(d->ptr(),decryptedStuff))
+// {
+// m_pFrm->firstConsole()->outputPrivmsg(this,KVI_OUT_DCCCHATMSG,
+// m_pDescriptor->szNick.ptr(),m_pDescriptor->szUser.ptr(),
+// m_pDescriptor->szHost.ptr(),decryptedStuff.ptr());
+// delete d;
+// return true;
+// } else {
+// output(KVI_OUT_SYSTEMERROR,
+// __tr("The following message looks like an encrypted one, but the crypting engine failed to decode it: %s"),
+// cinf->pEngine->lastError());
+// }
+// }
+// }
+// }
+// }
+//#endif
+// m_pFrm->firstConsole()->outputPrivmsg(this,KVI_OUT_DCCCHATMSG,
+// m_pDescriptor->szNick.ptr(),m_pDescriptor->szUser.ptr(),
+// m_pDescriptor->szHost.ptr(),d->ptr());
+// }
+// delete d;
+// return true;
+// }
+// break;
+// }
+// }
+ return KviWindow::event(e);
+}
+
+void KviDccCanvas::resizeEvent(QResizeEvent *e)
+{
+ int hght = m_pInput->heightHint();
+// int hght2 = m_pTopSplitter->sizeHint().height();
+// m_pTopSplitter->setGeometry(0,0,width(),hght2);
+ m_pSplitter->setGeometry(0,0,width(),height() - hght);
+ m_pInput->setGeometry(0,height() - hght,width(),hght);
+}
+
+QSize KviDccCanvas::sizeHint() const
+{
+ QSize ret(m_pIrcView->sizeHint().width(),
+ m_pIrcView->sizeHint().height() + m_pInput->heightHint());
+ return ret;
+}
+
+void KviDccCanvas::handleMarshalError(int err)
+{
+ QString sss = KviError::getDescription(err);
+ output(KVI_OUT_DCCERROR,__tr2qs_ctx("DCC Failed: %Q","dcc"),&sss);
+}
+
+void KviDccCanvas::connected()
+{
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("Connected to %Q:%Q","dcc"),
+ &(m_pMarshal->remoteIp()),&(m_pMarshal->remotePort()));
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("Local end is %Q:%Q","dcc"),
+ &(m_pMarshal->localIp()),&(m_pMarshal->localPort()));
+ if(!(m_pDescriptor->bActive))
+ {
+ // PASSIVE CONNECTION...Find out the remote end
+ m_pDescriptor->szIp = m_pMarshal->remoteIp();
+ m_pDescriptor->szPort = m_pMarshal->remotePort();
+ m_pDescriptor->szHost = m_pMarshal->remoteIp();
+ }
+ updateCaption();
+// m_pSlaveThread = new KviDccCanvasThread(this,m_pMarshal->releaseSocket());
+// m_pSlaveThread->start();
+}
+
+
+#include "m_canvas.moc"
+
+#endif
diff --git a/src/modules/dcc/canvas.h b/src/modules/dcc/canvas.h
new file mode 100644
index 00000000..8e6b1fb3
--- /dev/null
+++ b/src/modules/dcc/canvas.h
@@ -0,0 +1,74 @@
+#ifndef _CANVAS_H_
+#define _CANVAS_H_
+//
+// File : canvas.h
+// Creation date : Sun Jul 29 07 2001 20:17:12 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "broker.h"
+
+#ifdef COMPILE_DCC_CANVAS
+
+#include "kvi_window.h"
+#include "kvi_string.h"
+
+#include "descriptor.h"
+#include "window.h"
+#include "thread.h"
+
+#include "kvi_pointerlist.h"
+
+
+
+class KviDccMarshal;
+class KviCanvasWidget;
+
+class QSplitter;
+
+
+class KviDccCanvas : public KviDccWindow
+{
+ Q_OBJECT
+public:
+ KviDccCanvas(KviFrame *pFrm,KviDccDescriptor * dcc,const char * name);
+ ~KviDccCanvas();
+protected:
+// KviDccCanvasThread * m_pSlaveThread;
+ KviCanvasWidget * m_pCanvas;
+// QSplitter * m_pTopSplitter;
+ QString m_szTarget;
+protected:
+ virtual const QString &target();
+ virtual void fillCaptionBuffers();
+ virtual void getBaseLogFileName(KviStr &buffer);
+ virtual QPixmap * myIconPtr();
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual QSize sizeHint() const;
+ virtual bool event(QEvent *e);
+ virtual void ownMessage(const char *text);
+ virtual void ownAction(const char *text);
+protected slots:
+ void handleMarshalError(int err);
+ void connected();
+};
+
+#endif
+
+#endif // _CANVAS_H_
diff --git a/src/modules/dcc/canvaswidget.cpp b/src/modules/dcc/canvaswidget.cpp
new file mode 100644
index 00000000..203e0b36
--- /dev/null
+++ b/src/modules/dcc/canvaswidget.cpp
@@ -0,0 +1,1601 @@
+//
+// File : canvaswidget.cpp
+// Creation date : Mon Jul 30 07 2001 04:50:50 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "canvaswidget.h"
+
+#ifdef COMPILE_DCC_CANVAS
+
+
+#include <qcursor.h>
+#include <qpainter.h>
+#include <qsimplerichtext.h>
+#include <qlineedit.h>
+#include <qcombobox.h>
+#include <qvalidator.h>
+#include <stdlib.h>
+
+#include "kvi_string.h"
+
+#include "kvi_locale.h"
+#include "kvi_tal_popupmenu.h"
+
+#include <math.h>
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// KviCanvasRectangleItem
+//
+
+KviCanvasRectangleItem::KviCanvasRectangleItem(QCanvas * c,int x,int y,int w,int h)
+: QCanvasRectangle(x,y,w,h,c)
+{
+}
+
+KviCanvasRectangleItem::~KviCanvasRectangleItem()
+{
+}
+
+void KviCanvasRectangleItem::drawSelection(QPainter &p)
+{
+ p.setRasterOp(NotROP);
+ p.fillRect((int)x() + 1,(int)y() + 1,width() - 2,height() - 2,QBrush(Dense6Pattern));
+ p.setPen(QPen(DotLine));
+ p.drawRect((int)x(),(int)y(),width(),height());
+ p.setRasterOp(CopyROP);
+}
+
+
+void KviCanvasRectangleItem::setProperty(const QString &property,const QVariant &val)
+{
+ if(m_properties[property].isValid())
+ {
+ m_properties.replace(property,val);
+ hide();
+ show();
+ }
+}
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// KviCanvasPolygon
+//
+
+
+KviCanvasPolygon::KviCanvasPolygon(QCanvas * c,int x,int y,QPointArray &pnts,double dScaleFactor)
+: QCanvasPolygon(c)
+{
+ m_properties.insert("clrForeground",QVariant(QColor(0,0,0)));
+ m_properties.insert("uLineWidth",QVariant((unsigned int)0));
+
+ m_properties.insert("clrBackground",QVariant(QColor(0,0,0)));
+ m_properties.insert("bHasBackground",QVariant(false,1));
+
+ m_dScaleFactor = dScaleFactor;
+ m_points = pnts;
+
+ resetPoints();
+ move(x,y);
+}
+
+
+KviCanvasPolygon::~KviCanvasPolygon()
+{
+}
+
+void KviCanvasPolygon::setScaleFactor(double dScaleFactor)
+{
+ m_dScaleFactor = dScaleFactor;
+ resetPoints();
+}
+
+void KviCanvasPolygon::setInternalPoints(const QPointArray &pnts)
+{
+ m_points = pnts;
+ resetPoints();
+
+}
+
+void KviCanvasPolygon::resetPoints()
+{
+ QPointArray scaled(m_points.size());
+ for(unsigned int i=0;i<m_points.size();i++)
+ {
+ int px;
+ int py;
+ m_points.point(i,&px,&py);
+ px = (int)(px * m_dScaleFactor);
+ py = (int)(py * m_dScaleFactor);
+ scaled.setPoint(i,px,py);
+ }
+ setPoints(scaled);
+}
+
+int KviCanvasPolygon::rtti() const
+{
+ return KVI_CANVAS_RTTI_POLYGON;
+}
+
+void KviCanvasPolygon::setProperty(const QString &property,const QVariant &val)
+{
+ if(m_properties[property].isValid())
+ {
+ m_properties.replace(property,val);
+ if((property == "clrForeground") || (property == "uLineWidth"))
+ {
+ setPen(QPen(m_properties["clrForeground"].asColor(),m_properties["uLineWidth"].toInt()));
+ } else if((property == "clrBackground") || (property == "bHasBackground"))
+ {
+ if(m_properties["bHasBackground"].asBool())
+ setBrush(QBrush(m_properties["clrBackground"].asColor()));
+ else
+ setBrush(QBrush());
+ } else {
+ hide(); show();
+ }
+ }
+}
+
+void KviCanvasPolygon::draw(QPainter &p)
+{
+#if QT_VERSION >= 300
+ if(isEnabled())
+#else
+ if(enabled())
+#endif
+ {
+ p.setBrush(brush());
+ p.setPen(pen());
+ p.drawPolygon(areaPoints());
+ }
+
+#if QT_VERSION >=300
+ if(isSelected())
+#else
+ if(selected())
+#endif
+ {
+ p.setRasterOp(NotROP);
+ p.setPen(QPen(DotLine));
+ p.drawPolygon(areaPoints());
+ p.setBrush(QBrush());
+ double dVal = 10;
+ p.drawEllipse((int)(x() - dVal),(int)(y() - dVal),(int)(dVal * 2),(int)(dVal * 2));
+ p.drawLine((int)(x() - (dVal * 2)),(int)y(),(int)(x() + (dVal * 2)),(int)y());
+ p.drawLine((int)x(),(int)(y() - (dVal * 2)),(int)x(),(int)(y() + (dVal * 2)));
+ p.setRasterOp(CopyROP);
+ canvas()->setChanged(QRect((int)(x() - dVal),(int)(y() - dVal),(int)(dVal * 4),(int)(dVal * 4)));
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// KviCanvasEllipticItem
+//
+
+KviCanvasEllipticItem::KviCanvasEllipticItem(QCanvas * c,int x,int y,int w,int h)
+: KviCanvasRectangleItem(c,x,y,w,h)
+{
+ m_properties.insert("clrForeground",QVariant(QColor(0,0,0)));
+ m_properties.insert("uLineWidth",QVariant((unsigned int)0));
+
+ m_properties.insert("clrBackground",QVariant(QColor(0,0,0)));
+ m_properties.insert("bHasBackground",QVariant(false,1));
+
+// m_properties.insert("iStartAngle",QVariant(0));
+// m_properties.insert("iEndAngle",QVariant(360));
+}
+
+KviCanvasEllipticItem::~KviCanvasEllipticItem()
+{
+}
+
+void KviCanvasEllipticItem::draw(QPainter &p)
+{
+#if QT_VERSION >= 300
+ if(isEnabled())
+#else
+ if(enabled())
+#endif
+ {
+ QBrush b = p.brush();
+ if(m_properties["bHasBackground"].asBool())p.setBrush(m_properties["clrBackground"].asColor());
+ else p.setBrush(QBrush());
+ p.setPen(pen());
+ drawContent(p);
+ p.setBrush(b);
+ }
+
+#if QT_VERSION >= 300
+ if(isSelected())drawSelection(p);
+#else
+ if(selected())drawSelection(p);
+#endif
+}
+
+void KviCanvasEllipticItem::drawContent(QPainter &p)
+{
+}
+
+
+void KviCanvasEllipticItem::setProperty(const QString & property,const QVariant &val)
+{
+ if(m_properties[property].isValid())
+ {
+ m_properties.replace(property,val);
+ if((property == "clrForeground") || (property == "uLineWidth"))
+ {
+ setPen(QPen(m_properties["clrForeground"].asColor(),m_properties["uLineWidth"].toInt()));
+ } else {
+ hide(); show();
+ }
+ }
+}
+
+int KviCanvasEllipticItem::rtti() const
+{
+ return KVI_CANVAS_RTTI_ELLIPSE;
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// KviCanvasEllipse
+//
+
+
+KviCanvasEllipse::KviCanvasEllipse(QCanvas * c,int x,int y,int w,int h)
+: KviCanvasEllipticItem(c,x,y,w,h)
+{
+}
+
+KviCanvasEllipse::~KviCanvasEllipse()
+{
+}
+
+int KviCanvasEllipse::rtti() const
+{
+ return KVI_CANVAS_RTTI_ELLIPSE;
+}
+
+void KviCanvasEllipse::drawContent(QPainter &p)
+{
+ p.drawEllipse((int)x(),(int)y(),width(),height());
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// KviCanvasPie
+//
+
+
+KviCanvasPie::KviCanvasPie(QCanvas * c,int x,int y,int w,int h)
+: KviCanvasEllipticItem(c,x,y,w,h)
+{
+ m_properties.insert("iStartAngle",QVariant((int)0));
+ m_properties.insert("iExtensionAngle",QVariant((int)360));
+}
+
+KviCanvasPie::~KviCanvasPie()
+{
+}
+
+int KviCanvasPie::rtti() const
+{
+ return KVI_CANVAS_RTTI_PIE;
+}
+
+void KviCanvasPie::drawContent(QPainter &p)
+{
+ int iStartAngle = m_properties["iStartAngle"].asInt() * 16;
+ int iEndAngle = m_properties["iExtensionAngle"].asInt() * 16;
+ p.drawPie((int)x(),(int)y(),width(),height(),iStartAngle,iEndAngle);
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// KviCanvasChord
+//
+
+
+KviCanvasChord::KviCanvasChord(QCanvas * c,int x,int y,int w,int h)
+: KviCanvasEllipticItem(c,x,y,w,h)
+{
+ m_properties.insert("iStartAngle",QVariant((int)0));
+ m_properties.insert("iExtensionAngle",QVariant((int)360));
+}
+
+KviCanvasChord::~KviCanvasChord()
+{
+}
+
+int KviCanvasChord::rtti() const
+{
+ return KVI_CANVAS_RTTI_CHORD;
+}
+
+void KviCanvasChord::drawContent(QPainter &p)
+{
+ int iStartAngle = m_properties["iStartAngle"].asInt() * 16;
+ int iEndAngle = m_properties["iExtensionAngle"].asInt() * 16;
+ p.drawChord((int)x(),(int)y(),width(),height(),iStartAngle,iEndAngle);
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// KviCanvasRectangle
+//
+
+KviCanvasRectangle::KviCanvasRectangle(QCanvas * c,int x,int y,int w,int h)
+: KviCanvasRectangleItem(c,x,y,w,h)
+{
+ m_properties.insert("clrForeground",QVariant(QColor(0,0,0)));
+ m_properties.insert("uLineWidth",QVariant((unsigned int)0));
+
+ m_properties.insert("clrBackground",QVariant(QColor(0,0,0)));
+ m_properties.insert("bHasBackground",QVariant(false,1));
+}
+
+KviCanvasRectangle::~KviCanvasRectangle()
+{
+}
+
+int KviCanvasRectangle::rtti() const
+{
+ return KVI_CANVAS_RTTI_RECTANGLE;
+}
+
+
+void KviCanvasRectangle::setProperty(const QString &property,const QVariant &val)
+{
+ if(m_properties[property].isValid())
+ {
+ m_properties.replace(property,val);
+ if((property == "clrForeground") || (property == "uLineWidth"))
+ {
+ setPen(QPen(m_properties["clrForeground"].asColor(),m_properties["uLineWidth"].toInt()));
+ } else {
+ hide(); show();
+ }
+ }
+}
+
+void KviCanvasRectangle::draw(QPainter & p)
+{
+#if QT_VERSION >= 300
+ if(isEnabled())
+#else
+ if(enabled())
+#endif
+ {
+ if(m_properties["bHasBackground"].asBool())
+ {
+ p.fillRect((int)x() + 1,(int)y() + 1,width() - 2,height() - 2,m_properties["clrBackground"].asColor());
+ }
+ p.setPen(pen());
+ p.drawRect((int)x(),(int)y(),width(),height());
+ }
+#if QT_VERSION >= 300
+ if(isSelected())drawSelection(p);
+#else
+ if(selected())drawSelection(p);
+#endif
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// KviCanvasRichText
+//
+
+KviCanvasRichText::KviCanvasRichText(QCanvas * c,int x,int y,int w,int h)
+: KviCanvasRectangleItem(c,x,y,w,h)
+{
+ QFont f = QFont();
+ f.setStyleHint(QFont::SansSerif);
+ f.setPointSize(12);
+ m_properties.insert("szText",QVariant(QString("<center>Insert here your <font color=\"#FF0000\"><b>RICH TEXT</b></font></center>")));
+ m_properties.insert("fntDefault",QVariant(f));
+}
+
+KviCanvasRichText::~KviCanvasRichText()
+{
+}
+
+int KviCanvasRichText::rtti() const
+{
+ return KVI_CANVAS_RTTI_RICHTEXT;
+}
+
+void KviCanvasRichText::draw(QPainter & p)
+{
+#if QT_VERSION >= 300
+ if(isEnabled())
+#else
+ if(enabled())
+#endif
+ {
+ QString szText = m_properties["szText"].asString();
+ QSimpleRichText text(szText,m_properties["fntDefault"].asFont());
+ text.setWidth(width());
+#if QT_VERSION >= 300
+ text.draw(&p,(int)x() + 1,(int)y() + 1,QRegion(QRect((int)x() + 1,(int)y() + 1,width(),height())),QColorGroup());
+#else
+ text.draw(&p,(int)x() + 1,(int)y() + 1,QRegion(QRect((int)x() + 1,(int)y() + 1,width(),height())),QPalette());
+#endif
+ }
+#if QT_VERSION >= 300
+ if(isSelected())drawSelection(p);
+#else
+ if(selected())drawSelection(p);
+#endif
+}
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// KviCanvasLine
+//
+
+
+KviCanvasLine::KviCanvasLine(QCanvas * c,int x1,int y1,int x2,int y2)
+: QCanvasLine(c)
+{
+ setPoints(x1,y1,x2,y2);
+ m_properties.insert("uLineWidth",QVariant((unsigned int)0));
+ m_properties.insert("clrForeground",QVariant(QColor()));
+}
+
+KviCanvasLine::~KviCanvasLine()
+{
+}
+
+void KviCanvasLine::setProperty(const QString &property,const QVariant &val)
+{
+ m_properties.replace(property,val);
+ if((property == "uLineWidth") || (property == "clrForeground"))
+ {
+ setPen(QPen(m_properties["clrForeground"].asColor(),m_properties["uLineWidth"].toInt()));
+ }
+}
+
+int KviCanvasLine::rtti() const
+{
+ return KVI_CANVAS_RTTI_LINE;
+}
+
+void KviCanvasLine::draw(QPainter &p)
+{
+#if QT_VERSION >= 300
+ if(isEnabled())
+#else
+ if(enabled())
+#endif
+ {
+ p.setPen(pen());
+ p.drawLine(startPoint(),endPoint());
+ }
+
+#if QT_VERSION >= 300
+ if(isSelected())
+#else
+ if(selected())
+#endif
+ {
+ p.setRasterOp(NotROP);
+ p.setPen(QPen(DotLine));
+ p.drawLine(startPoint(),endPoint());
+ p.setRasterOp(CopyROP);
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// KviCanvasView
+//
+
+KviCanvasView::KviCanvasView(QCanvas * c,KviCanvasWidget * cw,QWidget * par)
+: QCanvasView(c,par)
+{
+ m_pCanvasWidget = cw;
+ m_state = Idle;
+ m_dragMode = None;
+ m_pSelectedItem = 0;
+ viewport()->setMouseTracking(true);
+}
+
+
+KviCanvasView::~KviCanvasView()
+{
+}
+
+
+void KviCanvasView::insertRectangle()
+{
+ m_state = SelectOrigin;
+ setCursor(crossCursor);
+ m_objectToInsert = Rectangle;
+}
+
+void KviCanvasView::insertRichText()
+{
+ m_state = SelectOrigin;
+ setCursor(crossCursor);
+ m_objectToInsert = RichText;
+}
+
+void KviCanvasView::insertLine()
+{
+ m_state = SelectOrigin;
+ setCursor(crossCursor);
+ m_objectToInsert = Line;
+}
+
+void KviCanvasView::insertEllipse()
+{
+ m_state = SelectOrigin;
+ setCursor(crossCursor);
+ m_objectToInsert = Ellipse;
+}
+
+void KviCanvasView::insertPie()
+{
+ m_state = SelectOrigin;
+ setCursor(crossCursor);
+ m_objectToInsert = Pie;
+}
+
+void KviCanvasView::insertChord()
+{
+ m_state = SelectOrigin;
+ setCursor(crossCursor);
+ m_objectToInsert = Chord;
+}
+
+
+void KviCanvasView::insertPolygonTriangle()
+{
+ m_state = SelectOrigin;
+ setCursor(crossCursor);
+ m_objectToInsert = PolygonTriangle;
+}
+
+
+void KviCanvasView::insertPolygonRectangle()
+{
+ m_state = SelectOrigin;
+ setCursor(crossCursor);
+ m_objectToInsert = PolygonRectangle;
+}
+
+
+void KviCanvasView::insertPolygonPentagon()
+{
+ m_state = SelectOrigin;
+ setCursor(crossCursor);
+ m_objectToInsert = PolygonPentagon;
+}
+
+void KviCanvasView::insertPolygonHexagon()
+{
+ m_state = SelectOrigin;
+ setCursor(crossCursor);
+ m_objectToInsert = PolygonPentagon;
+}
+
+#ifndef M_PI
+ #define M_PI 3.14159265358979323846
+#endif
+
+static void calcPolygonPoints(QPointArray &pnts,unsigned int nVertices)
+{
+ double dDelta = (2 * M_PI) / nVertices;
+ for(unsigned int i=0;i<nVertices;i++)
+ {
+ double dAng = dDelta * i;
+ double theX = 300 * sin(dAng);
+ double theY = 300 * cos(dAng);
+ pnts.setPoint(i,(int)theX,(int)theY);
+ }
+}
+
+void KviCanvasView::insertObjectAt(const QPoint & pnt,ObjectType o)
+{
+ QCanvasItem * r = 0;
+
+ switch(o)
+ {
+ case Rectangle:
+ r = new KviCanvasRectangle(canvas(),pnt.x(),pnt.y(),0,0);
+ break;
+ case RichText:
+ r = new KviCanvasRichText(canvas(),pnt.x(),pnt.y(),0,0);
+ break;
+ case Line:
+ r = new KviCanvasLine(canvas(),pnt.x(),pnt.y(),pnt.x(),pnt.y());
+ break;
+ case Ellipse:
+ r = new KviCanvasEllipse(canvas(),pnt.x(),pnt.y(),0,0);
+ break;
+ case Pie:
+ r = new KviCanvasPie(canvas(),pnt.x(),pnt.y(),0,0);
+ break;
+ case Chord:
+ r = new KviCanvasChord(canvas(),pnt.x(),pnt.y(),0,0);
+ break;
+ case PolygonTriangle:
+ {
+ QPointArray pa(3);
+ pa.setPoint(0,0,-500);
+ pa.setPoint(1,-450,220);
+ pa.setPoint(2,450,220);
+ r = new KviCanvasPolygon(canvas(),pnt.x(),pnt.y(),pa,0.1);
+ }
+ break;
+ case PolygonRectangle:
+ {
+ QPointArray pa(4);
+ pa.setPoint(0,-350,-350);
+ pa.setPoint(1,350,-350);
+ pa.setPoint(2,350,350);
+ pa.setPoint(3,-350,350);
+ r = new KviCanvasPolygon(canvas(),pnt.x(),pnt.y(),pa,0.1);
+ }
+ break;
+ case PolygonPentagon:
+ {
+ QPointArray pa(5);
+ calcPolygonPoints(pa,5);
+ r = new KviCanvasPolygon(canvas(),pnt.x(),pnt.y(),pa,0.1);
+ }
+ break;
+ case PolygonHexagon:
+ {
+ QPointArray pa(6);
+ calcPolygonPoints(pa,6);
+ r = new KviCanvasPolygon(canvas(),pnt.x(),pnt.y(),pa,0.1);
+ }
+ break;
+ }
+
+ if(r)
+ {
+ setItemSelected(r);
+ r->setEnabled(true);
+ r->show();
+ }
+
+ switch(KVI_CANVAS_RTTI_CONTROL_TYPE(r))
+ {
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE:
+ beginDragRectangle((KviCanvasRectangleItem *)r,pnt,true);
+ break;
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_LINE:
+ beginDragLine((KviCanvasLine *)r,pnt,true);
+ break;
+// case KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON:
+// beginDragPolygon((KviCanvasPolygon *)r,pnt,true);
+// break;
+ }
+
+// canvas()->update();
+}
+
+void KviCanvasView::setItemSelected(QCanvasItem * it)
+{
+ clearSelection();
+ it->setSelected(true);
+ m_pSelectedItem = it;
+ m_pCanvasWidget->m_pPropertiesWidget->editItem(it);
+
+}
+
+void KviCanvasView::clearSelection()
+{
+ if(!m_pSelectedItem)return;
+ m_pSelectedItem->setSelected(false);
+ m_pSelectedItem = 0;
+ m_pCanvasWidget->m_pPropertiesWidget->editItem(0);
+}
+
+
+
+void KviCanvasView::beginDragLine(KviCanvasLine * it,const QPoint &p,bool bInitial)
+{
+ QPoint sp = it->startPoint();
+
+ m_dragBegin = p - sp;
+
+ if(bInitial)
+ {
+ m_dragMode = Bottom;
+ setCursor(sizeAllCursor);
+ return;
+ }
+
+ if((abs(p.x() - sp.x()) < 3) && (abs(p.y() - sp.y()) < 3))
+ {
+ m_dragMode = Top;
+ setCursor(sizeAllCursor);
+ return;
+ }
+
+ sp = it->endPoint();
+ if((abs(p.x() - sp.x()) < 3) && (abs(p.y() - sp.y()) < 3))
+ {
+ m_dragMode = Bottom;
+ setCursor(sizeAllCursor);
+ return;
+ }
+
+ m_dragMode = All;
+ setCursor(pointingHandCursor);
+}
+
+void KviCanvasView::dragLine(KviCanvasLine * it,const QPoint &p)
+{
+ switch(m_dragMode)
+ {
+ case Bottom:
+ {
+ QPoint sp = it->startPoint();
+ it->setPoints(sp.x(),sp.y(),p.x(),p.y());
+ }
+ break;
+ case Top:
+ {
+ QPoint ep = it->endPoint();
+ it->setPoints(p.x(),p.y(),ep.x(),ep.y());
+ }
+ break;
+ case All:
+ {
+ QPoint sp = p - m_dragBegin;
+ QPoint ep = sp + (it->endPoint() - it->startPoint());
+ it->setPoints(sp.x(),sp.y(),ep.x(),ep.y());
+ }
+ break;
+ default: /* make gcc happy */
+ break;
+ }
+ canvas()->update();
+}
+
+
+static double ssm_2d_rotationAngleFromXAxis(double dx,double dy)
+{
+ //
+ // v1 . v2 dx * 1 + dy * 0 dx
+ //acos(---------) = acos(-----------------) = acos(---------)
+ // |v1||v2| |(dx,dy)| * 1 |(dx,dy)|
+ //
+
+ //double dVal = hypot(dx,dy);
+ double dVal = sqrt((dx * dx) + (dy * dy));
+
+ if(dVal == 0.0)return 0; // ???
+
+ dVal = acos(dx / dVal);
+
+ return (dy > 0.0) ? dVal : -dVal;
+}
+
+static double ssm_2d_rotationAngle(double drefx,double drefy,double drotatedx,double drotatedy)
+{
+ double dRefAngle = ssm_2d_rotationAngleFromXAxis(drefx,drefy);
+ double dRotAngle = ssm_2d_rotationAngleFromXAxis(drotatedx,drotatedy);
+ return dRotAngle - dRefAngle;
+}
+
+static void ssm_2d_rotate(double &dx,double &dy,double dAngle)
+{
+ // Rotation matrix:
+ //
+ // | cos(x) sin(x) |
+ // | |
+ // | -sin(x) cos(x) |
+
+ double s = sin(dAngle);
+ double c = cos(dAngle);
+
+ double tmpX = (dx * c) - (dy * s);
+ double tmpY = (dx * s) + (dy * c);
+
+ dx = tmpX;
+ dy = tmpY;
+}
+
+static double ssm_hypot(double a,double b)
+{
+ return sqrt((a * a) + (b * b));
+}
+
+void KviCanvasView::beginDragPolygon(KviCanvasPolygon * it,const QPoint &p,bool bShift,bool bCtrl)
+{
+ m_dragBegin = QPoint((int)(p.x() - it->x()),(int)(p.y() - it->y()));
+
+ QPointArray pa = it->areaPoints();
+
+ for(unsigned int i=0;i<pa.size();i++)
+ {
+ QPoint pnt = pa.point(i);
+ double dX = pnt.x() - p.x();
+ double dY = pnt.y() - p.y();
+ double dHypot = sqrt((dX * dX) + (dY * dY));
+ if(dHypot < 3.0)
+ {
+ // We're dragging a point
+ m_dragMode = SinglePoint;
+ m_dragPointIndex = i;
+ setCursor(crossCursor);
+ return;
+ }
+ }
+
+ if(bShift)
+ {
+ m_dragMode = Scale;
+ m_dragScaleFactor = it->scaleFactor();
+ setCursor(sizeAllCursor);
+ return;
+ }
+
+ if(bCtrl)
+ {
+ m_dragMode = Rotate;
+ m_dragPointArray = it->internalPoints();
+// debug("Here");
+ setCursor(sizeHorCursor);
+ return;
+ }
+
+ m_dragMode = All;
+ setCursor(pointingHandCursor);
+}
+
+void KviCanvasView::dragPolygon(KviCanvasPolygon * it,const QPoint &p)
+{
+ switch(m_dragMode)
+ {
+ case All:
+ it->move(p.x() - m_dragBegin.x(),p.y() - m_dragBegin.y());
+ break;
+ case SinglePoint:
+ {
+ QPointArray pnt = it->internalPoints();
+ pnt.setPoint(m_dragPointIndex,(int)((p.x() - it->x()) / it->scaleFactor()),(int)((p.y() - it->y()) / it->scaleFactor()));
+ it->setInternalPoints(pnt);
+ }
+ break;
+ case Scale:
+ {
+ double dDistance = ssm_hypot(p.x() - it->x(),p.y() - it->y());
+ double dOriginal = ssm_hypot(m_dragBegin.x(),m_dragBegin.y());
+ if(dOriginal < 1)dOriginal = 1;
+ if(dDistance < 0.1)dDistance = 0.1;
+ it->setScaleFactor(m_dragScaleFactor * dDistance / dOriginal);
+ }
+ break;
+ case Rotate:
+ {
+ QPoint act((int)(p.x() - it->x()),(int)(p.y() - it->y()));
+ double dAngle = ssm_2d_rotationAngle(m_dragBegin.x(),m_dragBegin.y(),act.x(),act.y());
+// debug("%d,%d %d,%d %f",m_dragBegin.x(),m_dragBegin.y(),act.x(),act.y(),dAngle);
+ QPointArray thePoints = m_dragPointArray.copy();
+ for(unsigned int i=0;i<thePoints.size();i++)
+ {
+ QPoint tmp = thePoints.point(i);
+ double dx = tmp.x();
+ double dy = tmp.y();
+ ssm_2d_rotate(dx,dy,dAngle);
+ thePoints.setPoint(i,(int)dx,(int)dy);
+ }
+ it->setInternalPoints(thePoints);
+ }
+ break;
+ default:
+ break;
+ }
+ canvas()->update();
+}
+
+void KviCanvasView::beginDragRectangle(KviCanvasRectangleItem * it,const QPoint & p,bool bInitial)
+{
+ m_dragBegin = QPoint((int)(p.x() - it->x()),(int)(p.y() - it->y()));
+
+ if(bInitial)
+ {
+ // Right bottom
+ m_dragMode = RightBottom;
+ setCursor(sizeFDiagCursor);
+ return;
+ }
+
+ if(p.x() < (((int)it->x()) + 2))
+ {
+ // Left edge
+ if(p.y() < (((int)it->y()) + 2))
+ {
+ // Left top
+ m_dragMode = LeftTop;
+ setCursor(sizeFDiagCursor);
+ return;
+ }
+ if(p.y() > ( it->bottom() - 2))
+ {
+ // Left bottom
+ m_dragMode = LeftBottom;
+ setCursor(sizeBDiagCursor);
+ return;
+ }
+ m_dragMode = Left;
+ setCursor(sizeHorCursor);
+ return;
+ }
+
+ if(p.x() > (it->right() - 2))
+ {
+ // Right edge
+ if(p.y() < (((int)it->y()) + 2))
+ {
+ // Right top
+ m_dragMode = RightTop;
+ setCursor(sizeBDiagCursor);
+ return;
+ }
+ if(p.y() > ( it->bottom() - 2))
+ {
+ // Right bottom
+ m_dragMode = RightBottom;
+ setCursor(sizeFDiagCursor);
+ return;
+ }
+ m_dragMode = Right;
+ setCursor(sizeHorCursor);
+ return;
+ }
+
+ // Somewhere in the middle
+ if(p.y() < (((int)it->y()) + 2))
+ {
+ // Top
+ m_dragMode = Top;
+ setCursor(sizeVerCursor);
+ return;
+ }
+ if(p.y() > ( it->bottom() - 2))
+ {
+ // Bottom
+ m_dragMode = Bottom;
+ setCursor(sizeVerCursor);
+ return;
+ }
+
+ m_dragMode = All;
+ setCursor(pointingHandCursor);
+}
+
+void KviCanvasView::dragRectangle(KviCanvasRectangleItem * it,const QPoint & p)
+{
+
+ int aux1,aux2,aux3,aux4;
+
+ switch(m_dragMode)
+ {
+ case All:
+ it->move(p.x() - m_dragBegin.x(),p.y() - m_dragBegin.y());
+ break;
+ case Left:
+ aux1 = it->width() + (int)(it->x() - p.x());
+ aux2 = p.x();
+ if(aux1 < 1)
+ {
+ aux2 += (aux1 - 1);
+ aux1 = 1;
+ }
+ it->move(aux2,it->y());
+ it->setSize(aux1,it->height());
+ break;
+ case Right:
+ aux1 = it->width() + (p.x() - it->right());
+ if(aux1 < 1)aux1 = 1;
+ it->setSize(aux1,it->height());
+ break;
+ case Top:
+ aux1 = it->height() + (int)(it->y() - p.y());
+ aux2 = p.y();
+ if(aux1 < 1)
+ {
+ aux2 += (aux1 - 1);
+ aux1 = 1;
+ }
+ it->move(it->x(),aux2);
+ it->setSize(it->width(),aux1);
+ break;
+ case Bottom:
+ aux1 = (int)it->height() + (p.y() - it->bottom());
+ if(aux1 < 1)aux1 = 1;
+ it->setSize(it->width(),aux1);
+ break;
+ case LeftTop:
+ aux1 = it->width() + (int)(it->x() - p.x());
+ aux3 = p.x();
+ if(aux1 < 1)
+ {
+ aux3 += (aux1 - 1);
+ aux1 = 1;
+ }
+ aux2 = it->height() + (int)(it->y() - p.y());
+ aux4 = p.y();
+ if(aux2 < 1)
+ {
+ aux4 += (aux2 - 1);
+ aux2 = 1;
+ }
+ it->setSize(aux1,aux2);
+ it->move(aux3,aux4);
+ break;
+ case RightTop:
+ aux1 = it->width() + (int)(p.x() - it->right());
+ if(aux1 < 1)aux1 = 1;
+ aux2 = it->height() + (int)(it->y() - p.y());
+ aux4 = p.y();
+ if(aux2 < 1)
+ {
+ aux4 += (aux2 - 1);
+ aux2 = 1;
+ }
+ it->setSize(aux1,aux2);
+ it->move(it->x(),aux4);
+ break;
+ case LeftBottom:
+ aux1 = it->width() + (int)(it->x() - p.x());
+ aux3 = p.x();
+ if(aux1 < 1)
+ {
+ aux3 += (aux1 - 1);
+ aux1 = 1;
+ }
+ aux2 = it->height() + (int)(p.y() - it->bottom());
+ if(aux2 < 1)aux2 = 1;
+ it->setSize(aux1,aux2);
+ it->move(aux3,it->y());
+ break;
+ case RightBottom:
+ aux1 = it->width() + (int)(p.x() - it->right());
+ if(aux1 < 1)aux1 = 1;
+ aux2 = it->height() + (int)(p.y() - it->bottom());
+ if(aux2 < 1)aux2 = 1;
+ it->setSize(aux1,aux2);
+ break;
+ default:
+ break;
+ }
+
+ canvas()->update();
+}
+
+void KviCanvasView::contentsMouseMoveEvent(QMouseEvent *e)
+{
+// QPoint p = inverseWorldMatrix().map(e->pos());
+ QPoint p = e->pos();
+ if(e->state() & Qt::LeftButton)
+ {
+ if((m_dragMode != None) && (m_pSelectedItem))
+ {
+#if QT_VERSION >= 300
+ if(m_pSelectedItem->isEnabled())m_pSelectedItem->setEnabled(false);
+#else
+ if(m_pSelectedItem->enabled())m_pSelectedItem->setEnabled(false);
+#endif
+ switch(KVI_CANVAS_RTTI_CONTROL_TYPE(m_pSelectedItem))
+ {
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE:
+ dragRectangle((KviCanvasRectangleItem *)m_pSelectedItem,p);
+ break;
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_LINE:
+ dragLine((KviCanvasLine *)m_pSelectedItem,p);
+ break;
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON:
+ dragPolygon((KviCanvasPolygon *)m_pSelectedItem,p);
+ break;
+ }
+ }
+ } else {
+ // Without buttons
+ if(m_state == Idle)
+ {
+ QCanvasItemList l = canvas()->collisions(p);
+ QCanvasItemList::Iterator it = l.begin();
+
+ if(it != l.end())
+ {
+ // Got an item
+ QCanvasItem * hit = (QCanvasItem *)*it;
+ // Now find the point on that we have clicked it
+ if(hit == m_pSelectedItem)
+ {
+ switch(KVI_CANVAS_RTTI_CONTROL_TYPE(m_pSelectedItem))
+ {
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE:
+ beginDragRectangle((KviCanvasRectangleItem *)m_pSelectedItem,p);
+ break;
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_LINE:
+ beginDragLine((KviCanvasLine *)m_pSelectedItem,p);
+ break;
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON:
+ beginDragPolygon((KviCanvasPolygon *)m_pSelectedItem,p);
+ break;
+ }
+ }
+ else if(m_dragMode != None)setCursor(arrowCursor);
+ } else {
+ if(m_dragMode != None)setCursor(arrowCursor);
+ }
+ }
+ }
+}
+
+void KviCanvasView::contentsMouseReleaseEvent(QMouseEvent *e)
+{
+ if(m_dragMode != None)
+ {
+ // Was just dragging a rectangle
+ m_dragMode = None;
+ setCursor(arrowCursor);
+ if(m_pSelectedItem)
+ {
+ m_pSelectedItem->setEnabled(true);
+ canvas()->update();
+ }
+ }
+}
+
+void KviCanvasView::contentsMousePressEvent(QMouseEvent *e)
+{
+ if(e->button() & Qt::LeftButton)
+ {
+// QPoint p = inverseWorldMatrix().map(e->pos());
+ QPoint p = e->pos();
+
+ switch(m_state)
+ {
+ case SelectOrigin:
+ clearSelection();
+ setCursor(arrowCursor);
+ m_state = Idle;
+ insertObjectAt(p,m_objectToInsert);
+ canvas()->update();
+ break;
+
+ case Idle:
+ {
+ QCanvasItemList l = canvas()->collisions(p);
+ QCanvasItemList::Iterator it = l.begin();
+
+ if(it != l.end())
+ {
+ // Got an item
+ QCanvasItem * hit = *it;
+ if(hit != m_pSelectedItem)
+ {
+ // Was not selected yet
+ setItemSelected(hit);
+ canvas()->update();
+ }
+ // Now find the point on that we have clicked it
+ switch(KVI_CANVAS_RTTI_CONTROL_TYPE(hit))
+ {
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE:
+ beginDragRectangle(((KviCanvasRectangleItem *)hit),p);
+ break;
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_LINE:
+ beginDragLine(((KviCanvasLine *)hit),p);
+ break;
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON:
+ beginDragPolygon(((KviCanvasPolygon *)hit),p,e->state() & Qt::ShiftButton,e->state() & Qt::ControlButton);
+ break;
+ }
+ } else {
+ // No item
+ clearSelection();
+ canvas()->update();
+ }
+ }
+ break;
+ }
+ }
+}
+
+
+void KviCanvasView::propertyChanged(const QString &s,const QVariant &v)
+{
+ if(!m_pSelectedItem)return;
+
+
+ switch(KVI_CANVAS_RTTI_CONTROL_TYPE(m_pSelectedItem))
+ {
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE:
+ ((KviCanvasRectangleItem *)m_pSelectedItem)->setProperty(s,v);
+ break;
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_LINE:
+ ((KviCanvasLine *)m_pSelectedItem)->setProperty(s,v);
+ break;
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON:
+ ((KviCanvasPolygon *)m_pSelectedItem)->setProperty(s,v);
+ break;
+ }
+
+ canvas()->update();
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// KviVariantTableItem
+//
+
+
+
+KviVariantTableItem::KviVariantTableItem(QTable * t,const QVariant & property)
+: QTableItem(t,QTableItem::WhenCurrent,QString::null)
+{
+ m_property = property;
+}
+
+KviVariantTableItem::~KviVariantTableItem()
+{
+}
+
+
+QWidget * KviVariantTableItem::createEditor() const
+{
+ switch(m_property.type())
+ {
+ case QVariant::String:
+ {
+ QLineEdit * e = new QLineEdit(table()->viewport());
+ e->setText(m_property.toString());
+ return e;
+ }
+ break;
+ case QVariant::Int:
+ {
+ QLineEdit * e = new QLineEdit(table()->viewport());
+ QString sz;
+ sz.setNum(m_property.toInt());
+ e->setText(sz);
+ e->setValidator(new QIntValidator(e));
+ return e;
+ }
+ break;
+ case QVariant::UInt:
+ {
+ QLineEdit * e = new QLineEdit(table()->viewport());
+ QString sz;
+ sz.setNum(m_property.toInt());
+ e->setText(sz);
+ QIntValidator * i = new QIntValidator(e);
+ i->setBottom(0);
+ e->setValidator(i);
+ return e;
+ }
+ break;
+ case QVariant::Bool:
+ {
+ QComboBox * b = new QComboBox(false,table()->viewport());
+ b->insertItem("FALSE");
+ b->insertItem("TRUE");
+ b->setCurrentItem(m_property.toBool() ? 1 : 0);
+ return b;
+ }
+ break;
+ case QVariant::Color:
+ {
+ QLineEdit * e = new QLineEdit(table()->viewport());
+ e->setText(m_property.toColor().name());
+ return e;
+ }
+ break;
+ case QVariant::Font:
+ {
+ QComboBox * b = new QComboBox(true,table()->viewport());
+
+ QString tmp;
+ QString tmpDefault;
+ QFont f = QFont();
+ f.setStyleHint(QFont::SansSerif);
+ tmpDefault = f.family();
+ f.setStyleHint(QFont::TypeWriter);
+ tmp.setNum(m_property.toFont().pointSize());
+ tmp.prepend(", ");
+ tmp.prepend(m_property.toFont().family());
+ b->insertItem(tmp);
+ b->insertItem(tmpDefault + ", 8");
+ b->insertItem(tmpDefault + ", 10");
+ b->insertItem(tmpDefault + ", 12");
+ b->insertItem(tmpDefault + ", 14");
+ b->insertItem(tmpDefault + ", 16");
+ b->insertItem(tmpDefault + ", 18");
+ b->insertItem(tmpDefault + ", 20");
+ b->insertItem(tmpDefault + ", 24");
+ b->insertItem(tmpDefault + ", 28");
+ b->insertItem(tmpDefault + ", 32");
+ b->insertItem(tmpDefault + ", 40");
+ b->insertItem(tmpDefault + ", 48");
+ b->insertItem(f.family() + ", 12");
+ b->setCurrentItem(0);
+
+ b->setCurrentItem(m_property.toBool() ? 1 : 0);
+ return b;
+ }
+ break;
+ default:
+ break;
+ }
+ return 0;
+}
+
+void KviVariantTableItem::setContentFromEditor(QWidget * w)
+{
+ switch(m_property.type())
+ {
+ case QVariant::String:
+ m_property = QVariant(((QLineEdit *)w)->text());
+ break;
+ case QVariant::Int:
+ m_property = QVariant(((QLineEdit *)w)->text().toInt());
+ break;
+ case QVariant::UInt:
+ m_property = QVariant(((QLineEdit *)w)->text().toUInt());
+ break;
+ case QVariant::Bool:
+ m_property = QVariant(((QComboBox *)w)->currentItem(),1);
+ break;
+ case QVariant::Color:
+ m_property.asColor().setNamedColor(((QLineEdit *)w)->text());
+ break;
+ case QVariant::Font:
+ {
+ KviStr txt = ((QComboBox *)w)->currentText();
+ if(txt.hasData())
+ {
+ KviStr fam = txt;
+ fam.cutFromFirst(',',true);
+ fam.stripWhiteSpace();
+ KviStr psz = txt;
+ psz.cutToFirst(',',true);
+ psz.stripWhiteSpace();
+ bool bOk;
+ unsigned int uSize = psz.toUInt(&bOk);
+ if(!bOk)uSize = 12;
+ m_property = QVariant(QFont(fam.ptr(),uSize));
+ }
+
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+
+void KviVariantTableItem::paint(QPainter *p,const QColorGroup &cg,const QRect &cr,bool)
+{
+ p->fillRect(0,0,cr.width(),cr.height(),cg.base());
+
+ if(m_property.type() == QVariant::Color)
+ {
+ p->fillRect(3,3,cr.width() - 6,cr.height() - 6,m_property.asColor());
+ } else {
+ QString sz;
+ switch(m_property.type())
+ {
+ case QVariant::String:
+ sz = m_property.toString();
+ break;
+ case QVariant::Bool:
+ sz = m_property.toBool() ? "TRUE" : "FALSE";
+ break;
+ case QVariant::Font:
+ sz.setNum(m_property.toFont().pointSize());
+ sz.prepend(", ");
+ sz.prepend(m_property.toFont().family());
+ break;
+ case QVariant::Int:
+ sz.setNum(m_property.toInt());
+ break;
+ case QVariant::UInt:
+ sz.setNum(m_property.toUInt());
+ break;
+ default:
+ break;
+ }
+ p->setPen(cg.text());
+ p->drawText(0,0,cr.width(),cr.height(),Qt::AlignLeft | Qt::AlignTop,sz);
+ }
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// KviCanvasItemPropertiesWidget
+//
+
+
+KviCanvasItemPropertiesWidget::KviCanvasItemPropertiesWidget(QWidget * par)
+: QTable(par)
+{
+ setSelectionMode(QTable::NoSelection);
+ setColumnMovingEnabled(false);
+ setRowMovingEnabled(false);
+ setShowGrid(true);
+ setNumCols(2);
+ setSorting(false);
+ setLeftMargin(0);
+ verticalHeader()->hide();
+ connect(this,SIGNAL(valueChanged(int,int)),this,SLOT(cellEdited(int,int)));
+}
+
+KviCanvasItemPropertiesWidget::~KviCanvasItemPropertiesWidget()
+{
+}
+
+void KviCanvasItemPropertiesWidget::cellEdited(int row,int)
+{
+ QTableItem * it = item(row,0);
+ if(!it)return;
+ QString szName = it->text();
+ it = item(row,1);
+ if(!it)return;
+ emit propertyChanged(szName,((KviVariantTableItem *)it)->property());
+}
+
+void KviCanvasItemPropertiesWidget::editItem(QCanvasItem * it)
+{
+ if(!it)
+ {
+ for(int i=0;i<numRows();i++)
+ {
+ clearCell(i,0);
+ clearCell(i,1);
+ clearCellWidget(i,1);
+ }
+ setNumRows(0);
+ return;
+ }
+
+ QMap<QString,QVariant> * m = 0;
+
+ switch(KVI_CANVAS_RTTI_CONTROL_TYPE(it))
+ {
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE:
+ m = ((KviCanvasRectangleItem *)it)->properties();
+ break;
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_LINE:
+ m = ((KviCanvasLine *)it)->properties();
+ break;
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON:
+ m = ((KviCanvasPolygon *)it)->properties();
+ break;
+ }
+
+ if(!m)
+ {
+ editItem(0);
+ return;
+ }
+
+ for(int i=0;i<numRows();i++)
+ {
+ clearCell(i,0);
+ clearCell(i,1);
+ clearCellWidget(i,1);
+ }
+
+ setNumRows(m->count());
+
+ QTableItem * item;
+
+ int idx = 0;
+
+ for(QMap<QString,QVariant>::ConstIterator iter = m->begin();iter != m->end();++iter)
+ {
+ item = new QTableItem(this,QTableItem::Never,iter.key().utf8().data());
+ setItem(idx,0,item);
+ item = new KviVariantTableItem(this,iter.data());
+ setItem(idx,1,item);
+ idx++;
+ }
+
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// KviCanvasWidget
+//
+
+KviCanvasWidget::KviCanvasWidget(QWidget * par)
+: QWidget(par,"canvas_widget")
+{
+ m_pCanvas = new QCanvas(this);
+//#warning "Make this size as parameter of Dcc ?"
+ m_pCanvas->resize(648,480);
+ m_pMenuBar = new QMenuBar(this);
+ m_pSplitter = new QSplitter(QSplitter::Horizontal,this);
+ m_pCanvasView = new KviCanvasView(m_pCanvas,this,m_pSplitter);
+ m_pStatusLabel = new QLabel(this);
+ m_pPropertiesWidget = new KviCanvasItemPropertiesWidget(m_pSplitter);
+ QValueList<int> l;
+ l.append(80);
+ l.append(20);
+ m_pSplitter->setSizes(l);
+
+ connect(m_pPropertiesWidget,SIGNAL(propertyChanged(const QString &,const QVariant &)),m_pCanvasView,SLOT(propertyChanged(const QString &,const QVariant &)));
+
+ KviTalPopupMenu * add = new KviTalPopupMenu(m_pMenuBar);
+ KviTalPopupMenu * shapes = new KviTalPopupMenu(add);
+ KviTalPopupMenu * polygons = new KviTalPopupMenu(add);
+ KviTalPopupMenu * items = new KviTalPopupMenu(add);
+ shapes->insertItem(__tr2qs_ctx("&Line","dcc"),m_pCanvasView,SLOT(insertLine()));
+ shapes->insertItem(__tr2qs_ctx("&Rectangle","dcc"),m_pCanvasView,SLOT(insertRectangle()));
+ shapes->insertItem(__tr2qs_ctx("&Ellipse","dcc"),m_pCanvasView,SLOT(insertEllipse()));
+ shapes->insertItem(__tr2qs_ctx("&Pie","dcc"),m_pCanvasView,SLOT(insertPie()));
+ shapes->insertItem(__tr2qs_ctx("&Chord","dcc"),m_pCanvasView,SLOT(insertChord()));
+
+ items->insertItem(__tr2qs_ctx("&Rich text (html)","dcc"),m_pCanvasView,SLOT(insertRichText()));
+
+ polygons->insertItem(__tr2qs_ctx("&Triangle","dcc"),m_pCanvasView,SLOT(insertPolygonTriangle()));
+ polygons->insertItem(__tr2qs_ctx("&Rectangle","dcc"),m_pCanvasView,SLOT(insertPolygonRectangle()));
+ polygons->insertItem(__tr2qs_ctx("&Pentagon","dcc"),m_pCanvasView,SLOT(insertPolygonPentagon()));
+ polygons->insertItem(__tr2qs_ctx("&Hexagon","dcc"),m_pCanvasView,SLOT(insertPolygonHexagon()));
+
+ add->insertItem(__tr2qs_ctx("&Shape","dcc"),shapes);
+ add->insertItem(__tr2qs_ctx("&Item","dcc"),items);
+ add->insertItem(__tr2qs_ctx("&Polygons","dcc"),polygons);
+
+ m_pMenuBar->insertItem(__tr2qs_ctx("&Insert","dcc"),add);
+}
+
+KviCanvasWidget::~KviCanvasWidget()
+{
+}
+
+
+
+void KviCanvasWidget::resizeEvent(QResizeEvent *)
+{
+ int h = m_pMenuBar->sizeHint().height();
+ m_pMenuBar->setGeometry(0,0,width(),h);
+ int h2 = m_pStatusLabel->sizeHint().height();
+ m_pStatusLabel->setGeometry(0,height() - h2,width(),h2);
+ m_pSplitter->setGeometry(0,h,width(),height() - (h + h2));
+}
+
+
+#include "m_canvaswidget.moc"
+
+#endif
diff --git a/src/modules/dcc/canvaswidget.h b/src/modules/dcc/canvaswidget.h
new file mode 100644
index 00000000..41d451e4
--- /dev/null
+++ b/src/modules/dcc/canvaswidget.h
@@ -0,0 +1,322 @@
+#ifndef _CANVAS_WIDGET_H_
+#define _CANVAS_WIDGET_H_
+//
+// File : canvaswidget.h
+// Creation date : Mon Jul 30 07 2001 04:49:49 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "broker.h"
+
+#ifdef COMPILE_DCC_CANVAS
+
+
+#include <qcanvas.h>
+
+//#ifdef QT_NO_CANVAS
+// #warning "HEre is not"
+//#endif
+
+
+#include <qmenubar.h>
+#include <qlabel.h>
+
+#include <qmap.h>
+#include <qvariant.h>
+#include <qtable.h>
+#include <qsplitter.h>
+
+
+
+class KviCanvasWidget;
+
+
+
+#define KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE 1
+#define KVI_CANVAS_RTTI_CONTROL_TYPE_LINE 2
+#define KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON 4
+
+#define KVI_CANVAS_RTTI_CONTROL_TYPE_MASK 255
+
+#define KVI_CANVAS_RTTI_RECTANGLE (KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE | (1 << 8))
+#define KVI_CANVAS_RTTI_RICHTEXT (KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE | (2 << 8))
+#define KVI_CANVAS_RTTI_LINE (KVI_CANVAS_RTTI_CONTROL_TYPE_LINE | (3 << 8))
+#define KVI_CANVAS_RTTI_ELLIPSE (KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE | (4 << 8))
+#define KVI_CANVAS_RTTI_CHORD (KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE | (5 << 8))
+#define KVI_CANVAS_RTTI_PIE (KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE | (6 << 8))
+#define KVI_CANVAS_RTTI_POLYGON (KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON | (7 << 8))
+
+#define KVI_CANVAS_RTTI_CONTROL_TYPE(__item) (__item->rtti() & KVI_CANVAS_RTTI_CONTROL_TYPE_MASK)
+
+
+
+class KviCanvasPolygon : public QCanvasPolygon
+{
+public:
+ KviCanvasPolygon(QCanvas * c,int x,int y,QPointArray &pnts,double dScaleFactor);
+ virtual ~KviCanvasPolygon();
+protected:
+ QMap<QString,QVariant> m_properties;
+ double m_dScaleFactor;
+ QPointArray m_points;
+public:
+ virtual void draw(QPainter & p);
+ double scaleFactor(){ return m_dScaleFactor; };
+ void setScaleFactor(double dScaleFactor);
+ void resetPoints();
+ const QPointArray & internalPoints(){ return m_points; };
+ void setInternalPoints(const QPointArray &pnts);
+ QMap<QString,QVariant> * properties(){ return &m_properties; };
+ virtual void setProperty(const QString &property,const QVariant &val);
+ virtual int rtti() const;
+};
+
+
+
+
+class KviCanvasRectangleItem : public QCanvasRectangle
+{
+ friend class KviCanvasRectangle;
+ friend class KviCanvasRichText;
+ friend class KviCanvasEllipticItem;
+protected:
+ KviCanvasRectangleItem(QCanvas * c,int x,int y,int w,int h);
+public:
+ virtual ~KviCanvasRectangleItem();
+protected:
+ QMap<QString,QVariant> m_properties;
+public:
+ int right(){ return ((int)x()) + width(); };
+ int bottom(){ return ((int)y()) + height(); };
+ QMap<QString,QVariant> * properties(){ return &m_properties; };
+ virtual void setProperty(const QString &property,const QVariant &val);
+// QVariant property(const QString &name){ return m_properties[name]; };
+protected:
+ void drawSelection(QPainter &p);
+};
+
+
+class KviCanvasEllipticItem : public KviCanvasRectangleItem
+{
+ friend class KviCanvasEllipse;
+ friend class KviCanvasChord;
+ friend class KviCanvasPie;
+protected:
+ KviCanvasEllipticItem(QCanvas * c,int x,int y,int w,int h);
+ ~KviCanvasEllipticItem();
+public:
+ virtual void setProperty(const QString & property,const QVariant &val);
+ virtual void draw(QPainter & p);
+ virtual void drawContent(QPainter & p);
+ virtual int rtti() const;
+};
+
+
+class KviCanvasEllipse : public KviCanvasEllipticItem
+{
+public:
+ KviCanvasEllipse(QCanvas * c,int x,int y,int w,int h);
+ ~KviCanvasEllipse();
+public:
+ virtual void drawContent(QPainter & p);
+ virtual int rtti() const;
+};
+
+
+class KviCanvasPie : public KviCanvasEllipticItem
+{
+public:
+ KviCanvasPie(QCanvas * c,int x,int y,int w,int h);
+ ~KviCanvasPie();
+public:
+ virtual void drawContent(QPainter & p);
+ virtual int rtti() const;
+};
+
+
+class KviCanvasChord : public KviCanvasEllipticItem
+{
+public:
+ KviCanvasChord(QCanvas * c,int x,int y,int w,int h);
+ ~KviCanvasChord();
+public:
+ virtual void drawContent(QPainter & p);
+ virtual int rtti() const;
+};
+
+
+class KviCanvasLine : public QCanvasLine
+{
+public:
+ KviCanvasLine(QCanvas * c,int x1,int y1,int x2,int y2);
+ virtual ~KviCanvasLine();
+protected:
+ QMap<QString,QVariant> m_properties;
+public:
+ QMap<QString,QVariant> * properties(){ return &m_properties; };
+ virtual void setProperty(const QString &property,const QVariant &val);
+// QVariant property(const QString &name){ return m_properties[name]; };
+ virtual void draw(QPainter & p);
+ virtual int rtti() const;
+};
+
+
+
+class KviCanvasRectangle : public KviCanvasRectangleItem
+{
+public:
+ KviCanvasRectangle(QCanvas * c,int x,int y,int w,int h);
+ ~KviCanvasRectangle();
+public:
+ virtual void draw(QPainter & p);
+ virtual void setProperty(const QString &property,const QVariant &val);
+ virtual int rtti() const;
+};
+
+
+class KviCanvasRichText : public KviCanvasRectangleItem
+{
+public:
+ KviCanvasRichText(QCanvas * c,int x,int y,int w,int h);
+ ~KviCanvasRichText();
+public:
+ virtual void draw(QPainter & p);
+ virtual int rtti() const;
+};
+
+
+class KviCanvasView : public QCanvasView
+{
+ Q_OBJECT
+public:
+ KviCanvasView(QCanvas * c,KviCanvasWidget * cw,QWidget * par);
+ ~KviCanvasView();
+public:
+ enum State { Idle , SelectOrigin };
+ enum ObjectType {
+ Rectangle , RichText , Line , Ellipse , Chord , Pie ,
+ PolygonTriangle , PolygonRectangle , PolygonPentagon ,
+ PolygonHexagon
+ };
+ enum DragMode {
+ None , All , Left , Right , Top , Bottom , LeftTop , RightTop ,
+ LeftBottom , RightBottom , Scale , SinglePoint , Rotate
+ };
+protected:
+ KviCanvasWidget * m_pCanvasWidget;
+
+ // Insertion of objects
+ State m_state;
+ ObjectType m_objectToInsert;
+
+ // Selected item
+ QCanvasItem * m_pSelectedItem;
+
+ DragMode m_dragMode;
+ QPoint m_dragBegin;
+ double m_dragScaleFactor;
+ unsigned int m_dragPointIndex;
+ QPointArray m_dragPointArray;
+protected:
+ void beginDragRectangle(KviCanvasRectangleItem * it,const QPoint &p,bool bInitial = false);
+ void dragRectangle(KviCanvasRectangleItem * it,const QPoint & p);
+
+ void beginDragLine(KviCanvasLine * it,const QPoint &p,bool bInitial = false);
+ void dragLine(KviCanvasLine * it,const QPoint &p);
+
+ void beginDragPolygon(KviCanvasPolygon * it,const QPoint &p,bool bShift = false,bool bCtrl = false);
+ void dragPolygon(KviCanvasPolygon * it,const QPoint &p);
+
+
+ void setItemSelected(QCanvasItem * it);
+ void clearSelection();
+ void insertObjectAt(const QPoint & pnt,ObjectType o);
+ virtual void contentsMousePressEvent(QMouseEvent *e);
+ virtual void contentsMouseMoveEvent(QMouseEvent *e);
+ virtual void contentsMouseReleaseEvent(QMouseEvent *e);
+public slots:
+ void insertRectangle();
+ void insertRichText();
+ void insertLine();
+ void insertPie();
+ void insertChord();
+ void insertEllipse();
+ void insertPolygonTriangle();
+ void insertPolygonRectangle();
+ void insertPolygonPentagon();
+ void insertPolygonHexagon();
+ void propertyChanged(const QString &s,const QVariant &v);
+};
+
+// For Qt3.0 this might need to be changed
+
+class KviVariantTableItem : public QTableItem
+{
+public:
+ KviVariantTableItem(QTable * t,const QVariant & property);
+ ~KviVariantTableItem();
+private:
+ QVariant m_property;
+public:
+ virtual QWidget * createEditor() const;
+ virtual void setContentFromEditor(QWidget *w);
+ QVariant & property(){ return m_property; };
+ virtual void paint(QPainter *p,const QColorGroup &cg,const QRect &cr,bool selected);
+};
+
+
+
+class KviCanvasItemPropertiesWidget : public QTable
+{
+ Q_OBJECT
+public:
+ KviCanvasItemPropertiesWidget(QWidget * par);
+ ~KviCanvasItemPropertiesWidget();
+public:
+ void editItem(QCanvasItem * it);
+protected slots:
+ void cellEdited(int row,int col);
+signals:
+ void propertyChanged(const QString &s,const QVariant &v);
+};
+
+
+
+class KviCanvasWidget : public QWidget
+{
+ friend class KviCanvasView;
+ Q_OBJECT
+public:
+ KviCanvasWidget(QWidget * par);
+ ~KviCanvasWidget();
+protected:
+ QSplitter * m_pSplitter;
+ QCanvas * m_pCanvas;
+ QMenuBar * m_pMenuBar;
+ KviCanvasView * m_pCanvasView;
+ QLabel * m_pStatusLabel;
+ KviCanvasItemPropertiesWidget * m_pPropertiesWidget;
+protected:
+ virtual void resizeEvent(QResizeEvent *);
+};
+
+
+#endif
+
+#endif //_CANVAS_WIDGET_H_
diff --git a/src/modules/dcc/chat.cpp b/src/modules/dcc/chat.cpp
new file mode 100644
index 00000000..715d17b9
--- /dev/null
+++ b/src/modules/dcc/chat.cpp
@@ -0,0 +1,842 @@
+//=======================================================================================
+//
+// File : chat.cpp
+// Creation date : Tue Sep 20 09 2000 15:13:13 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=======================================================================================
+
+#include "chat.h"
+#include "marshal.h"
+#include "broker.h"
+
+#ifdef COMPILE_ON_WINDOWS
+ // Ugly Windoze compiler...
+ #include "dialogs.h"
+#endif
+
+#define _KVI_DEBUG_CHECK_RANGE_
+#include "kvi_debug.h"
+#include "kvi_options.h"
+#include "kvi_input.h"
+#include "kvi_ircview.h"
+#include "kvi_iconmanager.h"
+#include "kvi_locale.h"
+#include "kvi_error.h"
+#include "kvi_out.h"
+#include "kvi_netutils.h"
+#include "kvi_console.h"
+#include "kvi_frame.h"
+#include "kvi_malloc.h"
+#include "kvi_memmove.h"
+#include "kvi_thread.h"
+#include "kvi_ircsocket.h"
+#include "kvi_settings.h"
+#include "kvi_themedlabel.h"
+#include "kvi_socket.h"
+#include "kvi_app.h"
+#include "kvi_parameterlist.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectionuserinfo.h"
+#include "kvi_kvs_eventtriggers.h"
+#include "kvi_qcstring.h"
+
+#ifdef COMPILE_CRYPT_SUPPORT
+ #include "kvi_crypt.h"
+ #include "kvi_cryptcontroller.h"
+ #include "kvi_mirccntrl.h"
+#endif
+
+#include <qsplitter.h>
+#include <qevent.h>
+#include "kvi_tal_vbox.h"
+
+
+#ifdef COMPILE_SSL_SUPPORT
+ #include "kvi_sslmaster.h"
+#endif
+
+
+
+extern KviDccBroker * g_pDccBroker;
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//////
+////// WINDOW
+//////
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+KviDccChat::KviDccChat(KviFrame *pFrm,KviDccDescriptor * dcc,const char * name)
+: KviDccWindow(KVI_WINDOW_TYPE_DCCCHAT,pFrm,name,dcc)
+{
+ m_pTopSplitter = new QSplitter(Qt::Horizontal,this,"top_splitter");
+ KviThemedLabel * dummy;
+ dummy = new KviThemedLabel(m_pTopSplitter,"dummy_label");
+ KviTalVBox * box = new KviTalVBox(m_pTopSplitter);
+
+#ifdef COMPILE_CRYPT_SUPPORT
+ createCryptControllerButton(box);
+#endif
+
+ m_pSplitter = new QSplitter(Qt::Horizontal,this,"splitter");
+ m_pIrcView = new KviIrcView(m_pSplitter,pFrm,this);
+ connect(m_pIrcView,SIGNAL(rightClicked()),this,SLOT(textViewRightClicked()));
+ m_pInput = new KviInput(this);
+
+ //setFocusHandler(m_pInput,this);
+
+ m_pSlaveThread = 0;
+
+ if(KVI_OPTION_BOOL(KviOption_boolAutoLogDccChat))m_pIrcView->startLogging();
+
+ m_pMarshal = new KviDccMarshal(this);
+ connect(m_pMarshal,SIGNAL(error(int)),this,SLOT(handleMarshalError(int)));
+ connect(m_pMarshal,SIGNAL(connected()),this,SLOT(connected()));
+ connect(m_pMarshal,SIGNAL(inProgress()),this,SLOT(connectionInProgress()));
+#ifdef COMPILE_SSL_SUPPORT
+ connect(m_pMarshal,SIGNAL(startingSSLHandshake()),this,SLOT(startingSSLHandshake()));
+ connect(m_pMarshal,SIGNAL(sslError(const char *)),this,SLOT(sslError(const char *)));
+#endif
+
+ m_pSlaveThread = 0;
+
+ startConnection();
+}
+
+KviDccChat::~KviDccChat()
+{
+ g_pDccBroker->unregisterDccWindow(this);
+ if(m_pSlaveThread)
+ {
+ m_pSlaveThread->terminate();
+ delete m_pSlaveThread;
+ m_pSlaveThread = 0;
+ }
+ KviThreadManager::killPendingEvents(this);
+}
+
+void KviDccChat::textViewRightClicked()
+{
+ KVS_TRIGGER_EVENT_1(KviEvent_OnDCCChatPopupRequest,this,m_pDescriptor->idString());
+}
+
+void KviDccChat::triggerCreationEvents()
+{
+ KVS_TRIGGER_EVENT_1(KviEvent_OnDCCChatWindowCreated,this,m_pDescriptor->idString());
+}
+
+void KviDccChat::triggerDestructionEvents()
+{
+ KVS_TRIGGER_EVENT_1(KviEvent_OnDCCChatWindowClosing,this,m_pDescriptor->idString());
+}
+
+void KviDccChat::startConnection()
+{
+ if(!(m_pDescriptor->bActive))
+ {
+ // PASSIVE CONNECTION
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("Attempting a passive DCC %s connection","dcc"),m_pDescriptor->szType.utf8().data());
+#ifdef COMPILE_SSL_SUPPORT
+ int ret = m_pMarshal->dccListen(m_pDescriptor->szListenIp,m_pDescriptor->szListenPort,m_pDescriptor->bDoTimeout,m_pDescriptor->bIsSSL);
+#else
+ int ret = m_pMarshal->dccListen(m_pDescriptor->szListenIp,m_pDescriptor->szListenPort,m_pDescriptor->bDoTimeout);
+#endif
+ if(ret != KviError_success)handleMarshalError(ret);
+
+ } else {
+ // ACTIVE CONNECTION
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("Attempting an active DCC %s connection","dcc"),m_pDescriptor->szType.utf8().data());
+#ifdef COMPILE_SSL_SUPPORT
+ int ret = m_pMarshal->dccConnect(m_pDescriptor->szIp.utf8().data(),m_pDescriptor->szPort.utf8().data(),m_pDescriptor->bDoTimeout,m_pDescriptor->bIsSSL);
+#else
+ int ret = m_pMarshal->dccConnect(m_pDescriptor->szIp.utf8().data(),m_pDescriptor->szPort.utf8().data(),m_pDescriptor->bDoTimeout);
+#endif
+ if(ret != KviError_success)handleMarshalError(ret);
+ }
+}
+
+void KviDccChat::connectionInProgress()
+{
+ if(m_pDescriptor->bActive)
+ {
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("Contacting host %Q on port %Q","dcc"),&(m_pDescriptor->szIp),&(m_pDescriptor->szPort));
+ } else {
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("Listening on interface %Q port %Q","dcc"),&(m_pMarshal->localIp()),&(m_pMarshal->localPort()));
+
+ if(m_pDescriptor->bSendRequest)
+ {
+
+ KviStr ip;
+ if(!m_pDescriptor->szFakeIp.isEmpty())
+ {
+ ip = m_pDescriptor->szFakeIp;
+ } else {
+ ip = m_pDescriptor->szListenIp;
+
+ if(KVI_OPTION_BOOL(KviOption_boolDccGuessIpFromServerWhenLocalIsUnroutable))
+ {
+ if(!kvi_isRoutableIpString(ip.ptr()))
+ {
+ // try to get the IP that the IRC server can see
+ if(m_pDescriptor->console())
+ {
+ KviStr tmp = m_pDescriptor->console()->connection() ? m_pDescriptor->console()->connection()->userInfo()->hostIp().utf8().data() : "";
+ if(tmp.hasData())
+ {
+ ip = tmp;
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("The local IP address is private, determining from IRC server: %s","dcc"),ip.ptr());
+ } else {
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("The local IP address is private, but unable to determine it from the IRC server","dcc"));
+ }
+ } else {
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("The local IP address is private, but have no IRC server to determine it from","dcc"));
+ }
+ }
+ }
+ }
+
+ QString port = !m_pDescriptor->szFakePort.isEmpty() ? m_pDescriptor->szFakePort : QString(m_pMarshal->localPort());
+
+ //FIXME: #warning "OPTION FOR SENDING 127.0.0.1 and so on (not an unsigned number)"
+ struct in_addr a;
+ if(kvi_stringIpToBinaryIp(ip.ptr(),&a))ip.setNum(htonl(a.s_addr));
+
+ QString szReq = QString("PRIVMSG %1 :%2DCC %3 chat %4 %5").arg(m_pDescriptor->szNick).arg((char)0x01).arg(m_pDescriptor->szType).arg(ip.ptr()).arg(port);
+
+ if(m_pDescriptor->isZeroPortRequest())
+ {
+ szReq.append(" ");
+ szReq+=m_pDescriptor->zeroPortRequestTag();
+ }
+ szReq.append((char)(0x01));
+
+ m_pDescriptor->console()->connection()->sendData(m_pDescriptor->console()->connection()->encodeText(szReq).data());
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("Sent DCC %Q request to %Q, waiting for the remote client to connect...","dcc"),
+ &(m_pDescriptor->szType),&(m_pDescriptor->szNick));
+ //qDebug(m_pDescriptor->szNick);
+ } else output(KVI_OUT_DCCMSG,__tr2qs_ctx("DCC %Q request not sent, awaiting manual connection","dcc"),&(m_pDescriptor->szType));
+ }
+ KVS_TRIGGER_EVENT_1(KviEvent_OnDCCChatConnectionInProgress,this,m_pDescriptor->idString());
+}
+
+void KviDccChat::startingSSLHandshake()
+{
+#ifdef COMPILE_SSL_SUPPORT
+ outputNoFmt(KVI_OUT_SSL,__tr2qs_ctx("Low-level transport connection established","dcc"));
+ outputNoFmt(KVI_OUT_SSL,__tr2qs_ctx("Starting Secure Socket Layer handshake","dcc"));
+#endif
+}
+
+void KviDccChat::sslError(const char * msg)
+{
+#ifdef COMPILE_SSL_SUPPORT
+ if(!KVS_TRIGGER_EVENT_2_HALTED(KviEvent_OnDCCChatError,this,QString(msg),m_pDescriptor->idString()))
+ output(KVI_OUT_DCCERROR,__tr2qs_ctx("[SSL ERROR]: %s","dcc"),msg);
+#endif
+}
+
+const QString & KviDccChat::target()
+{
+ // This may change on the fly...
+ m_szTarget = m_pDescriptor->szNick;
+ m_szTarget += "@";
+ m_szTarget += m_pDescriptor->szIp;
+ m_szTarget += ":";
+ m_szTarget += m_pDescriptor->szPort;
+ return m_szTarget;
+}
+
+void KviDccChat::fillCaptionBuffers()
+{
+ QString tmp = QString("DCC %1 %2@%3:%4").arg(
+#ifdef COMPILE_SSL_SUPPORT
+ m_pDescriptor->bIsSSL ? "SChat" : "Chat").arg(
+#else
+ "Chat").arg(
+#endif
+ m_pDescriptor->szNick).arg(m_pDescriptor->szIp).arg(m_pDescriptor->szPort);
+
+ m_szPlainTextCaption = tmp;
+
+ m_szHtmlActiveCaption.sprintf("<nobr><font color=\"%s\"><b>%s</b></font></nobr>",
+ KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name().ascii(),tmp.utf8().data());
+ m_szHtmlInactiveCaption.sprintf("<nobr><font color=\"%s\"><b>%s</b></font></nobr>",
+ KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name().ascii(),tmp.utf8().data());
+}
+
+QPixmap * KviDccChat::myIconPtr()
+{
+ return g_pIconManager->getSmallIcon(KVI_SMALLICON_DCCMSG);
+}
+
+
+void KviDccChat::getBaseLogFileName(KviStr &buffer)
+{
+ buffer.sprintf("%s_%s_%s",m_pDescriptor->szNick.utf8().data(),m_pDescriptor->szIp.utf8().data(),m_pDescriptor->szPort.utf8().data());
+}
+
+void KviDccChat::ownMessage(const QString &text)
+{
+ if(!m_pSlaveThread)
+ {
+ output(KVI_OUT_SYSTEMWARNING,__tr2qs_ctx("Cannot send data: No active connection","dcc"));
+ return;
+ }
+
+ KviQCString szData = encodeText(text);
+ const char * d = szData.data();
+ if(!d)return;
+
+#ifdef COMPILE_CRYPT_SUPPORT
+ if(cryptSessionInfo())
+ {
+ if(cryptSessionInfo()->bDoEncrypt)
+ {
+ if(*d != KVI_TEXT_CRYPTESCAPE)
+ {
+ KviStr encrypted;
+ cryptSessionInfo()->pEngine->setMaxEncryptLen(-1);
+ switch(cryptSessionInfo()->pEngine->encrypt(d,encrypted))
+ {
+ case KviCryptEngine::Encrypted:
+ {
+ KviStr buf(KviStr::Format,"%s\r\n",encrypted.ptr());
+ m_pSlaveThread->sendRawData(buf.ptr(),buf.len());
+ m_pFrm->firstConsole()->outputPrivmsg(this,KVI_OUT_OWNPRIVMSGCRYPTED,
+ m_pDescriptor->szLocalNick.utf8().data(),m_pDescriptor->szLocalUser.utf8().data(),
+ m_pDescriptor->szLocalHost.utf8().data(),text,KviConsole::NoNotifications);
+ }
+ break;
+ case KviCryptEngine::Encoded:
+ {
+ KviStr buf(KviStr::Format,"%s\r\n",encrypted.ptr());
+ m_pSlaveThread->sendRawData(buf.ptr(),buf.len());
+ QString encr = decodeText(encrypted.ptr());
+ m_pFrm->firstConsole()->outputPrivmsg(this,KVI_OUT_OWNPRIVMSG,
+ m_pDescriptor->szLocalNick.utf8().data(),m_pDescriptor->szLocalUser.utf8().data(),
+ m_pDescriptor->szLocalHost.utf8().data(),encr,KviConsole::NoNotifications);
+ }
+ break;
+ default: // also case KviCryptEngine::EncryptError
+ {
+ QString szErr = cryptSessionInfo()->pEngine->lastError();
+ output(KVI_OUT_SYSTEMERROR,
+ __tr2qs_ctx("The crypto engine was not able to encrypt the current message (%Q): %Q, no data was sent to the remote end","dcc"),
+ &text,&szErr);
+ }
+ break;
+ }
+ return;
+ } else {
+ d++; //eat the escape code
+ KviStr buf(KviStr::Format,"%s\r\n",d);
+ QString tmp = text.right(text.length() - 1);
+ m_pSlaveThread->sendRawData(buf.ptr(),buf.len());
+ m_pFrm->firstConsole()->outputPrivmsg(this,KVI_OUT_OWNPRIVMSG,
+ m_pDescriptor->szLocalNick.utf8().data(),m_pDescriptor->szLocalUser.utf8().data(),
+ m_pDescriptor->szLocalHost.utf8().data(),tmp,KviConsole::NoNotifications);
+ return;
+ }
+ }
+ }
+#endif
+ KviStr buf(KviStr::Format,"%s\r\n",d);
+ m_pSlaveThread->sendRawData(buf.ptr(),buf.len());
+ m_pFrm->firstConsole()->outputPrivmsg(this,KVI_OUT_OWNPRIVMSG,
+ m_pDescriptor->szLocalNick.utf8().data(),m_pDescriptor->szLocalUser.utf8().data(),
+ m_pDescriptor->szLocalHost.utf8().data(),text,KviConsole::NoNotifications);
+}
+
+const QString & KviDccChat::localNick()
+{
+ // FIXME: This is just a complete HACK
+ m_szLocalNick = m_pDescriptor->szLocalNick;
+ return m_szLocalNick;
+}
+
+void KviDccChat::ownAction(const QString &text)
+{
+ if(m_pSlaveThread)
+ {
+ KviQCString szData = encodeText(text);
+ const char * d = szData.data();
+ if(!d)return;
+ KviStr buf(KviStr::Format,"%cACTION %s%c\r\n",0x01,d,0x01);
+ m_pSlaveThread->sendRawData(buf.ptr(),buf.len());
+ output(KVI_OUT_ACTION,"%Q %Q",&(m_pDescriptor->szLocalNick),&text);
+ } else {
+ output(KVI_OUT_SYSTEMWARNING,__tr2qs_ctx("Cannot send data: No active connection","dcc"));
+ }
+}
+
+bool KviDccChat::event(QEvent *e)
+{
+ if(e->type() == KVI_THREAD_EVENT)
+ {
+ switch(((KviThreadEvent *)e)->id())
+ {
+ case KVI_DCC_THREAD_EVENT_ERROR:
+ {
+ int * err = ((KviThreadDataEvent<int> *)e)->getData();
+ QString szErr = KviError::getDescription(*err);
+ if(!KVS_TRIGGER_EVENT_2_HALTED(KviEvent_OnDCCChatError,this,szErr,m_pDescriptor->idString()))
+ output(KVI_OUT_DCCERROR,__tr2qs_ctx("ERROR: %Q","dcc"),&szErr);
+ KVS_TRIGGER_EVENT_1(KviEvent_OnDCCChatDisconnected,this,m_pDescriptor->idString());
+ delete err;
+ return true;
+ }
+ break;
+ case KVI_DCC_THREAD_EVENT_DATA:
+ {
+ KviStr * encoded = ((KviThreadDataEvent<KviStr> *)e)->getData();
+ KviStr d=KviStr(decodeText(encoded->ptr()));
+ if(d.firstCharIs(0x01))
+ {
+ d.cutLeft(1);
+ if(d.lastCharIs(0x01))d.cutRight(1);
+ if(kvi_strEqualCIN("ACTION",d.ptr(),6))d.cutLeft(6);
+ d.stripLeftWhiteSpace();
+ output(KVI_OUT_ACTION,"%Q %s",&(m_pDescriptor->szNick),d.ptr());
+ } else {
+
+#ifdef COMPILE_CRYPT_SUPPORT
+ if(KviCryptSessionInfo * cinf = cryptSessionInfo())
+ {
+ if(cinf->bDoDecrypt)
+ {
+ KviStr decryptedStuff;
+ switch(cinf->pEngine->decrypt(d.ptr(),decryptedStuff))
+ {
+ case KviCryptEngine::DecryptOkWasEncrypted:
+ case KviCryptEngine::DecryptOkWasEncoded:
+ case KviCryptEngine::DecryptOkWasPlainText:
+ if(!KVS_TRIGGER_EVENT_2_HALTED(KviEvent_OnDCCChatMessage,this,QString(decryptedStuff.ptr()),m_pDescriptor->idString()))
+ {
+ m_pFrm->firstConsole()->outputPrivmsg(this,KVI_OUT_DCCCHATMSG,
+ m_pDescriptor->szNick.utf8().data(),m_pDescriptor->szUser.utf8().data(),
+ m_pDescriptor->szHost.utf8().data(),decryptedStuff.ptr());
+ }
+ delete encoded;
+ return true;
+ break;
+
+ default: // also case KviCryptEngine::DecryptError
+ {
+ QString szErr = cinf->pEngine->lastError();
+ output(KVI_OUT_SYSTEMERROR,
+ __tr2qs_ctx("The following message appears to be encrypted, but the crypto engine failed to decode it: %Q","dcc"),
+ &szErr);
+ }
+ break;
+ }
+ }
+ } else {
+#endif
+ // FIXME!
+ if(!KVS_TRIGGER_EVENT_2_HALTED(KviEvent_OnDCCChatMessage,this,QString(d.ptr()),m_pDescriptor->idString()))
+ m_pFrm->firstConsole()->outputPrivmsg(this,KVI_OUT_DCCCHATMSG,
+ m_pDescriptor->szNick.utf8().data(),m_pDescriptor->szUser.utf8().data(),
+ m_pDescriptor->szHost.utf8().data(),d.ptr());
+#ifdef COMPILE_CRYPT_SUPPORT
+ }
+#endif
+ }
+ delete encoded;
+ return true;
+ }
+ break;
+ }
+ }
+ return KviWindow::event(e);
+}
+
+void KviDccChat::resizeEvent(QResizeEvent *e)
+{
+ int hght = m_pInput->heightHint();
+ int hght2 = m_pTopSplitter->sizeHint().height();
+ m_pTopSplitter->setGeometry(0,0,width(),hght2);
+ m_pSplitter->setGeometry(0,hght2,width(),height() - (hght + hght2));
+ m_pInput->setGeometry(0,height() - hght,width(),hght);
+}
+
+QSize KviDccChat::sizeHint() const
+{
+ QSize ret(m_pIrcView->sizeHint().width(),
+ m_pIrcView->sizeHint().height() + m_pInput->heightHint());
+ return ret;
+}
+
+void KviDccChat::handleMarshalError(int err)
+{
+ QString szErr = KviError::getDescription(err);
+ if(!KVS_TRIGGER_EVENT_2_HALTED(KviEvent_OnDCCChatError,this,szErr,m_pDescriptor->idString()))
+ output(KVI_OUT_DCCERROR,__tr2qs_ctx("DCC %Q failed: %Q","dcc"),&(m_pDescriptor->szType),&szErr);
+}
+
+void KviDccChat::connected()
+{
+ if(!(m_pDescriptor->bActive))
+ {
+ // PASSIVE CONNECTION...Find out the remote end
+ m_pDescriptor->szIp = m_pMarshal->remoteIp();
+ m_pDescriptor->szPort = m_pMarshal->remotePort();
+ m_pDescriptor->szHost = m_pMarshal->remoteIp();
+ }
+
+ updateCaption();
+
+ m_pSlaveThread = new KviDccChatThread(this,m_pMarshal->releaseSocket());
+#ifdef COMPILE_SSL_SUPPORT
+ KviSSL * s = m_pMarshal->releaseSSL();
+ if(s)
+ {
+ KviSSLMaster::printSSLConnectionInfo(this,s);
+ m_pSlaveThread->setSSL(s);
+ }
+#endif
+ m_pSlaveThread->start();
+
+ if(!KVS_TRIGGER_EVENT_1_HALTED(KviEvent_OnDCCChatConnected,this,m_pDescriptor->idString()))
+ {
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("Connected to %Q:%Q","dcc"),
+ &(m_pMarshal->remoteIp()),&(m_pMarshal->remotePort()));
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("Local end is %Q:%Q","dcc"),
+ &(m_pMarshal->localIp()),&(m_pMarshal->localPort()));
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//////
+////// THREAD
+//////
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviDccChatThread::KviDccChatThread(KviWindow *wnd,kvi_socket_t fd)
+: KviDccThread(wnd,fd)
+{
+ m_pOutBuffers = new KviPointerList<KviDataBuffer>;
+ m_pOutBuffers->setAutoDelete(true);
+}
+
+
+KviDccChatThread::~KviDccChatThread()
+{
+ if(m_pOutBuffers)delete m_pOutBuffers;
+}
+
+
+void KviDccChatThread::run()
+{
+ KviDccThreadIncomingData data;
+ data.iLen = 0;
+ data.buffer = 0;
+
+ for(;;)
+ {
+ // Dequeue events
+ while(KviThreadEvent * e = dequeueEvent())
+ {
+ if(e->id() == KVI_THREAD_EVENT_TERMINATE)
+ {
+ delete e;
+ goto out_of_the_loop;
+ } else {
+ // Other events are senseless to us
+ delete e;
+ }
+ }
+
+ bool bCanRead;
+ bool bCanWrite;
+ if(kvi_select(m_fd,&bCanRead,&bCanWrite))
+ {
+ if(bCanWrite)
+ {
+ if(!tryFlushOutBuffers())goto out_of_the_loop;
+ }
+ if(bCanRead)
+ {
+ data.buffer = (char *) kvi_realloc(data.buffer,(data.iLen + 512) * sizeof(char));
+ int readLen;
+#ifdef COMPILE_SSL_SUPPORT
+ if(m_pSSL)
+ {
+ readLen = m_pSSL->read(data.buffer + data.iLen,512);
+ } else {
+#endif
+ readLen = kvi_socket_recv(m_fd,data.buffer + data.iLen,512);
+#ifdef COMPILE_SSL_SUPPORT
+ }
+#endif
+ if(readLen > 0)
+ {
+ data.iLen += readLen;
+ data.buffer = (char *)kvi_realloc(data.buffer,data.iLen * sizeof(char));
+ if(!handleIncomingData(&data,false))break; // non critical...
+ } else {
+
+#ifdef COMPILE_SSL_SUPPORT
+ if(m_pSSL)
+ {
+ // ssl error....?
+ switch(m_pSSL->getProtocolError(readLen))
+ {
+ case KviSSL::ZeroReturn:
+ readLen = 0;
+ break;
+ case KviSSL::WantRead:
+ case KviSSL::WantWrite:
+ // hmmm...
+ break;
+ case KviSSL::SyscallError:
+ {
+ int iE = m_pSSL->getLastError(true);
+ if(iE != 0)
+ {
+ raiseSSLError();
+ postErrorEvent(KviError_SSLError);
+ goto out_of_the_loop;
+ }
+ }
+ break;
+ case KviSSL::SSLError:
+ {
+ raiseSSLError();
+ postErrorEvent(KviError_SSLError);
+ goto out_of_the_loop;
+ }
+ break;
+ default:
+ // Raise unknown SSL ERROR
+ postErrorEvent(KviError_SSLError);
+ goto out_of_the_loop;
+ break;
+ }
+ }
+#endif
+ if(data.iLen > 0)
+ {
+ data.buffer = (char *)kvi_realloc(data.buffer,data.iLen * sizeof(char));
+ } else {
+ kvi_free(data.buffer);
+ data.buffer = 0;
+ }
+
+ if(!handleInvalidSocketRead(readLen))
+ {
+ if(data.iLen)handleIncomingData(&data,true); // critical
+ __range_invalid(data.iLen);
+ break; // error
+ }
+ }
+ }
+ msleep(100);
+ }
+ }
+
+out_of_the_loop:
+
+
+ if(data.iLen)kvi_free(data.buffer);
+
+#ifdef COMPILE_SSL_SUPPORT
+ if(m_pSSL)
+ {
+ KviSSLMaster::freeSSL(m_pSSL);
+ m_pSSL = 0;
+ }
+#endif
+
+ if(m_fd != KVI_INVALID_SOCKET)::kvi_socket_close(m_fd);
+ m_fd = KVI_INVALID_SOCKET;
+}
+
+bool KviDccChatThread::handleIncomingData(KviDccThreadIncomingData * data,bool bCritical)
+{
+ __range_valid(data->iLen);
+ __range_valid(data->buffer);
+ char * aux = data->buffer;
+ char * end = data->buffer + data->iLen;
+ while(aux != end)
+ {
+ if((*aux == '\n') || (*aux == '\0'))
+ {
+ KviThreadDataEvent<KviStr> * e = new KviThreadDataEvent<KviStr>(KVI_DCC_THREAD_EVENT_DATA);
+ // The left part is len chars long
+ int len = aux - data->buffer;
+// debug("LEN = %d, iLen = %d",len,data->iLen);
+//#warning "DO IT BETTER (the \r cutting)"
+ KviStr * s = new KviStr(data->buffer,len);
+ if(s->lastCharIs('\r'))s->cutRight(1);
+ e->setData(s);
+ // but we cut also \n (or \0)
+ ++aux;
+ // so len += 1; --> new data->iLen -= len;
+ data->iLen -= (len + 1);
+// debug("iLen now = %d",data->iLen);
+ __range_valid(data->iLen >= 0);
+ if(data->iLen > 0)
+ {
+ // memmove the remaining part to the beginning
+ // aux points after \n or \0
+ kvi_memmove(data->buffer,aux,data->iLen);
+ data->buffer = (char *)kvi_realloc(data->buffer,data->iLen);
+ end = data->buffer + data->iLen;
+ aux = data->buffer;
+ } else {
+ // no more data in the buffer
+ __range_valid(data->iLen == 0);
+ kvi_free(data->buffer);
+ data->buffer = end = aux = 0;
+ }
+ postEvent(parent(),e);
+ } else aux++;
+// debug("PASSING CHAR %c",*aux);
+ }
+ // now aux == end
+ if(bCritical)
+ {
+ // need to flush everything...
+ if(data->iLen > 0)
+ {
+ // in the last part there are no NULL and \n chars
+ KviThreadDataEvent<KviStr> * e = new KviThreadDataEvent<KviStr>(KVI_DCC_THREAD_EVENT_DATA);
+ KviStr * s = new KviStr(data->buffer,data->iLen);
+ if(s->lastCharIs('\r'))s->cutRight(1);
+ e->setData(s);
+ data->iLen = 0;
+ kvi_free(data->buffer);
+ data->buffer = 0;
+ postEvent(parent(),e);
+ }
+ }
+ return true;
+}
+
+void KviDccChatThread::sendRawData(const void * buffer,int len)
+{
+ m_pMutex->lock();
+ m_pOutBuffers->append(new KviDataBuffer((unsigned int)len,(const unsigned char *)buffer));
+ m_pMutex->unlock();
+}
+
+bool KviDccChatThread::tryFlushOutBuffers()
+{
+ bool bRet = true;
+ m_pMutex->lock();
+ while(KviDataBuffer * b = m_pOutBuffers->first())
+ {
+ int sentLen;
+#ifdef COMPILE_SSL_SUPPORT
+ if(m_pSSL)
+ {
+ sentLen = m_pSSL->write((const char *)b->data(),b->size());
+ } else {
+#endif
+ sentLen = kvi_socket_send(m_fd,b->data(),b->size());
+#ifdef COMPILE_SSL_SUPPORT
+ }
+#endif
+ if(sentLen > 0)
+ {
+ if(sentLen == b->size())m_pOutBuffers->removeFirst();
+ else {
+ // just a part
+ b->remove((unsigned int)sentLen);
+ break;
+ }
+ } else {
+#ifdef COMPILE_SSL_SUPPORT
+ if(m_pSSL)
+ {
+ // ops...might be an SSL error
+ switch(m_pSSL->getProtocolError(sentLen))
+ {
+ case KviSSL::WantWrite:
+ case KviSSL::WantRead:
+ // Async continue...
+ goto handle_system_error;
+ break;
+ case KviSSL::SyscallError:
+ if(sentLen == 0)
+ {
+ raiseSSLError();
+ postErrorEvent(KviError_remoteEndClosedConnection);
+ bRet = false;
+ goto out_of_the_loop;
+ } else {
+ int iSSLErr = m_pSSL->getLastError(true);
+ if(iSSLErr != 0)
+ {
+ raiseSSLError();
+ postErrorEvent(KviError_SSLError);
+ bRet = false;
+ goto out_of_the_loop;
+ } else {
+ goto handle_system_error;
+ }
+ }
+ break;
+ case KviSSL::SSLError:
+ raiseSSLError();
+ postErrorEvent(KviError_SSLError);
+ bRet = false;
+ goto out_of_the_loop;
+ break;
+ default:
+ postErrorEvent(KviError_SSLError);
+ bRet = false;
+ goto out_of_the_loop;
+ break;
+ }
+ }
+#endif
+handle_system_error:
+ if(sentLen < 0)
+ {
+ int err = kvi_socket_error();
+#ifdef COMPILE_ON_WINDOWS
+ if((err != EAGAIN) || (err != EINTR) || (err != WSAEWOULDBLOCK))
+#else
+ if((err != EAGAIN)||(err != EINTR))
+#endif
+ {
+ postErrorEvent(KviError::translateSystemError(err));
+ bRet = false;
+ goto out_of_the_loop;
+ }
+ }
+ break; // send error
+ }
+ }
+out_of_the_loop:
+ m_pMutex->unlock();
+ return bRet;
+}
+
+#include "m_chat.moc"
diff --git a/src/modules/dcc/chat.h b/src/modules/dcc/chat.h
new file mode 100644
index 00000000..ae1d51b9
--- /dev/null
+++ b/src/modules/dcc/chat.h
@@ -0,0 +1,101 @@
+#ifndef _CHAT_H_
+#define _CHAT_H_
+//=============================================================================
+//
+// File : chat.h
+// Creation date : Tue Sep 20 09 2000 15:11:12 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_window.h"
+#include "kvi_string.h"
+#include "kvi_databuffer.h"
+
+#include "window.h"
+#include "descriptor.h"
+#include "thread.h"
+
+#include "kvi_pointerlist.h"
+
+#ifdef COMPILE_SSL_SUPPORT
+ class KviSSL;
+#endif
+
+class KviDccChatThread : public KviDccThread
+{
+public:
+ KviDccChatThread(KviWindow * wnd,kvi_socket_t fd);
+ ~KviDccChatThread();
+protected:
+ KviPointerList<KviDataBuffer> * m_pOutBuffers;
+protected:
+ virtual void run();
+ bool tryFlushOutBuffers();
+ // This should handle the incoming data buffer
+ // must "eat" some data from data.buffer, memmove the remaining part
+ // to the beginning , kvi_realloc data.buffer and update data.iLen
+ // If bCritical is true , it should handle the whole data buffer
+ // since the thread is going to die
+ // It should return true if the handing was succesfull
+ // or false if the thread should be stopped
+ virtual bool handleIncomingData(KviDccThreadIncomingData *data,bool bCritical);
+public:
+ virtual void sendRawData(const void * buffer,int len); // mutex (m_pOutBuffers usage)
+};
+
+class KviDccMarshal;
+class QSplitter;
+
+class KviDccChat : public KviDccWindow
+{
+ Q_OBJECT
+public:
+ KviDccChat(KviFrame *pFrm,KviDccDescriptor * dcc,const char * name);
+ ~KviDccChat();
+protected:
+ KviDccChatThread * m_pSlaveThread;
+ QSplitter * m_pTopSplitter;
+ QString m_szTarget;
+ QString m_szLocalNick;
+protected:
+ virtual const QString & target();
+ virtual void fillCaptionBuffers();
+ virtual void getBaseLogFileName(KviStr &buffer);
+ virtual QPixmap * myIconPtr();
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual QSize sizeHint() const;
+ virtual const QString & localNick();
+ virtual bool event(QEvent *e);
+ virtual void ownMessage(const QString &text);
+ virtual void ownAction(const QString &text);
+ virtual void triggerCreationEvents();
+ virtual void triggerDestructionEvents();
+ void startConnection();
+protected slots:
+ void handleMarshalError(int err);
+ void connected();
+ void sslError(const char * msg);
+ void connectionInProgress();
+ void startingSSLHandshake();
+ void textViewRightClicked();
+};
+
+
+#endif //_CHAT_H_
diff --git a/src/modules/dcc/codec.cpp b/src/modules/dcc/codec.cpp
new file mode 100644
index 00000000..833796ac
--- /dev/null
+++ b/src/modules/dcc/codec.cpp
@@ -0,0 +1,88 @@
+//
+// File : codec.cpp
+// Creation date : Sun Aug 26 04:19:36 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "codec.h"
+
+KviDccVoiceCodec::KviDccVoiceCodec()
+{
+}
+
+KviDccVoiceCodec::~KviDccVoiceCodec()
+{
+}
+
+void KviDccVoiceCodec::encode(KviDataBuffer *,KviDataBuffer *)
+{
+}
+
+void KviDccVoiceCodec::decode(KviDataBuffer *,KviDataBuffer *)
+{
+}
+
+int KviDccVoiceCodec::encodedFrameSize()
+{
+ return 0;
+}
+
+int KviDccVoiceCodec::decodedFrameSize()
+{
+ return 0;
+}
+
+const char * KviDccVoiceCodec::name()
+{
+ return m_szName.ptr();
+}
+
+KviDccVoiceNullCodec::KviDccVoiceNullCodec()
+: KviDccVoiceCodec()
+{
+ m_szName = "null (no compression)";
+}
+
+KviDccVoiceNullCodec::~KviDccVoiceNullCodec()
+{
+}
+
+void KviDccVoiceNullCodec::encode(KviDataBuffer * signal,KviDataBuffer * stream)
+{
+ if(signal->size() < 1)return;
+ stream->append(signal->data(),signal->size());
+ signal->resize(0);
+}
+
+void KviDccVoiceNullCodec::decode(KviDataBuffer * stream,KviDataBuffer * signal)
+{
+ if(stream->size() < 1)return;
+ signal->append(stream->data(),stream->size());
+ stream->resize(0);
+}
+
+int KviDccVoiceNullCodec::encodedFrameSize()
+{
+ return 1024;
+}
+
+int KviDccVoiceNullCodec::decodedFrameSize()
+{
+ return 1024;
+}
diff --git a/src/modules/dcc/codec.h b/src/modules/dcc/codec.h
new file mode 100644
index 00000000..72fa6023
--- /dev/null
+++ b/src/modules/dcc/codec.h
@@ -0,0 +1,57 @@
+#ifndef _CODEC_H_
+#define _CODEC_H_
+//
+// File : codec.h
+// Creation date : Sun Aug 26 04:19:34 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_string.h"
+#include "kvi_databuffer.h"
+
+class KviDccVoiceCodec
+{
+public:
+ KviDccVoiceCodec();
+ virtual ~KviDccVoiceCodec();
+protected:
+ KviStr m_szName;
+public:
+ const char * name();
+ virtual void encode(KviDataBuffer * signal,KviDataBuffer * stream);
+ virtual void decode(KviDataBuffer * stream,KviDataBuffer * signal);
+ virtual int encodedFrameSize();
+ virtual int decodedFrameSize();
+};
+
+class KviDccVoiceNullCodec : public KviDccVoiceCodec
+{
+public:
+ KviDccVoiceNullCodec();
+ virtual ~KviDccVoiceNullCodec();
+public:
+ virtual void encode(KviDataBuffer * signal,KviDataBuffer * stream);
+ virtual void decode(KviDataBuffer * stream,KviDataBuffer * signal);
+ virtual int encodedFrameSize();
+ virtual int decodedFrameSize();
+};
+
+
+
+#endif //_CODEC_H_
diff --git a/src/modules/dcc/descriptor.cpp b/src/modules/dcc/descriptor.cpp
new file mode 100644
index 00000000..b21b0561
--- /dev/null
+++ b/src/modules/dcc/descriptor.cpp
@@ -0,0 +1,224 @@
+//=============================================================================
+//
+// File : src/modules/dcc/descriptor.cpp
+// Creation date : Tue Jul 23 01:11:54 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "descriptor.h"
+
+#include "kvi_locale.h"
+#include "kvi_kvs_eventtriggers.h"
+
+#include "kvi_window.h"
+#include "kvi_app.h"
+
+#include "send.h"
+#include "window.h"
+
+
+static unsigned int g_uNextDescriptorId = 1; // we use 0 as an invalid descriptor id
+static KviPointerHashTable<int,KviDccDescriptor> * g_pDescriptorDict = 0;
+
+KviPointerHashTable<int,KviDccDescriptor> * KviDccDescriptor::descriptorDict()
+{
+ return g_pDescriptorDict;
+}
+
+/*
+KviDccDescriptor::KviDccDescriptor(const KviDccDescriptor & src)
+{
+ copyFrom(src);
+}
+*/
+
+KviDccDescriptor::KviDccDescriptor(KviConsole * pConsole)
+{
+ m_pConsole = pConsole;
+ m_pDccWindow = 0;
+ m_pDccTransfer = 0;
+
+ m_uId = g_uNextDescriptorId;
+ g_uNextDescriptorId++;
+
+ m_szId.setNum(m_uId);
+
+ if(!g_pDescriptorDict)
+ {
+ g_pDescriptorDict = new KviPointerHashTable<int,KviDccDescriptor>;
+ g_pDescriptorDict->setAutoDelete(false);
+ }
+ g_pDescriptorDict->replace((long)m_uId,this);
+
+ szNick = __tr_ctx("unknown","dcc");
+ szUser = szNick;
+ szHost = szNick;
+
+ szLocalNick = szNick;
+ szLocalUser = szNick;
+ szLocalHost = szNick;
+
+ szIp = szNick;
+ szPort = szNick;
+
+
+ bSendRequest = true;
+ bDoTimeout = true;
+ bIsTdcc = false;
+ bOverrideMinimize = false;
+ bShowMinimized = false;
+ bAutoAccept = false;
+#ifdef COMPILE_SSL_SUPPORT
+ bIsSSL = false;
+#endif
+ bRecvFile = false;
+ bResume = false;
+ bNoAcks = false;
+ bIsIncomingAvatar = false;
+
+ iSampleRate = 0;
+
+
+ m_bCreationEventTriggered = false;
+}
+
+KviDccDescriptor::~KviDccDescriptor()
+{
+ if(m_bCreationEventTriggered)
+ {
+ KviWindow * pEventWindow = m_pConsole;
+ if(!pEventWindow)pEventWindow = g_pApp->activeConsole(); // any console
+ else {
+ if(!(g_pApp->windowExists(pEventWindow)))pEventWindow = g_pApp->activeConsole();
+ }
+
+ if(pEventWindow)
+ {
+ // recheck it again...
+ if(g_pApp->windowExists(pEventWindow))
+ {
+ KVS_TRIGGER_EVENT_1(KviEvent_OnDCCSessionDestroyed,pEventWindow,m_szId);
+ }
+ }
+ }
+
+ if(g_pDescriptorDict)
+ {
+ g_pDescriptorDict->remove((long)m_uId);
+ if(g_pDescriptorDict->count() < 1)
+ {
+ delete g_pDescriptorDict;
+ g_pDescriptorDict = 0;
+ }
+ }
+
+}
+
+void KviDccDescriptor::triggerCreationEvent()
+{
+ if(m_bCreationEventTriggered)
+ {
+ debug("Ops.. trying to trigger OnDccSessionCreated twice");
+ return;
+ }
+ m_bCreationEventTriggered = true;
+ KviWindow * pEventWindow = m_pConsole;
+ if(!pEventWindow)pEventWindow = g_pApp->activeConsole(); // any console
+ if(pEventWindow)
+ {
+ KVS_TRIGGER_EVENT_1(KviEvent_OnDCCSessionCreated,pEventWindow,m_szId);
+ }
+}
+
+
+KviDccDescriptor * KviDccDescriptor::find(unsigned int uId)
+{
+ if(!g_pDescriptorDict)return 0;
+ return g_pDescriptorDict->find((long)uId);
+}
+
+/*
+void KviDccDescriptor::copyFrom(const KviDccDescriptor &src)
+{
+ m_pDccWindow = src.m_pDccWindow;
+ m_pDccTransfer = src.m_pDccTransfer;
+ m_uId = src.m_uId;
+ szType = src.szType;
+ szNick = src.szNick;
+ szUser = src.szUser;
+ szHost = src.szHost;
+ szLocalNick = src.szLocalNick;
+ szLocalUser = src.szLocalUser;
+ szLocalHost = src.szLocalHost;
+ szIp = src.szIp;
+ szPort = src.szPort;
+ m_pConsole = src.console();
+ m_szZeroPortRequestTag= src.zeroPortRequestTag();
+ bActive = src.bActive;
+ szListenIp = src.szListenIp;
+ szListenPort = src.szListenPort;
+ szFakeIp = src.szFakeIp;
+ szFakePort = src.szFakePort;
+ bSendRequest = src.bSendRequest;
+ bDoTimeout = src.bDoTimeout;
+ szFileName = src.szFileName;
+ szFileSize = src.szFileSize;
+ bResume = src.bResume;
+ bRecvFile = src.bRecvFile;
+ bNoAcks = src.bNoAcks;
+ bIsTdcc = src.bIsTdcc;
+ bOverrideMinimize = src.bOverrideMinimize;
+ bShowMinimized = src.bShowMinimized;
+ bAutoAccept = src.bAutoAccept;
+ bIsIncomingAvatar = src.bIsIncomingAvatar;
+#ifdef COMPILE_SSL_SUPPORT
+ bIsSSL = src.bIsSSL;
+#endif
+}
+*/
+
+bool KviDccDescriptor::isFileUpload()
+{
+ if(szType.upper()=="SEND")return true;
+ if(szType.upper()=="TSEND")return true;
+#ifdef COMPILE_SSL_SUPPORT
+ if(szType.upper()=="SSEND")return true;
+#endif
+ return false;
+}
+
+bool KviDccDescriptor::isFileDownload()
+{
+ if(szType.upper()=="RECV")return true;
+ if(szType.upper()=="TRECV")return true;
+#ifdef COMPILE_SSL_SUPPORT
+ if(szType.upper()=="SRECV")return true;
+#endif
+ return false;
+}
+
+bool KviDccDescriptor::isDccChat()
+{
+ if(szType.upper()=="CHAT")return true;
+#ifdef COMPILE_SSL_SUPPORT
+ if(szType.upper()=="SCHAT")return true;
+#endif
+ return false;
+}
diff --git a/src/modules/dcc/descriptor.h b/src/modules/dcc/descriptor.h
new file mode 100644
index 00000000..f3f6c3f3
--- /dev/null
+++ b/src/modules/dcc/descriptor.h
@@ -0,0 +1,163 @@
+#ifndef _DESCRIPTOR_H_
+#define _DESCRIPTOR_H_
+//=============================================================================
+//
+// File : src/modules/dcc/descriptor.h
+// Creation date : Tue Jul 23 01:11:52 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002-2004 Szymon Stefanek (oragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_string.h"
+#include "kvi_console.h"
+
+#include "kvi_pointerhashtable.h"
+
+
+class KviDccWindow;
+class KviDccFileTransfer;
+
+class KviDccDescriptor
+{
+public:
+ KviDccDescriptor(KviConsole * pConsole);
+ //KviDccDescriptor(const KviDccDescriptor & src);
+ ~KviDccDescriptor();
+protected:
+ KviConsole * m_pConsole;
+
+ // mIrc zero port reverse send/chat extension
+ KviStr m_szZeroPortRequestTag;
+
+ unsigned int m_uId; // this dcc session ID
+ QString m_szId;
+
+ KviDccWindow * m_pDccWindow; // 0 if it has no window
+ KviDccFileTransfer * m_pDccTransfer; // 0 if it is not a transfer
+
+ bool m_bCreationEventTriggered;
+public:
+ // A console that this DCC is bound to (might be replaced while we wait for user acknowledge in dialogs)
+ KviConsole * console() const { return m_pConsole; };
+ void setConsole(KviConsole * c){ m_pConsole = c; };
+
+ KviDccWindow * window() const { return m_pDccWindow; };
+ void setWindow(KviDccWindow * w){ m_pDccWindow = w; };
+
+ KviDccFileTransfer * transfer() const { return m_pDccTransfer; };
+ void setTransfer(KviDccFileTransfer * t){ m_pDccTransfer = t; };
+
+ // mIrc zero port reverse send/chat extension
+ bool isZeroPortRequest() const { return m_szZeroPortRequestTag.hasData(); };
+ const char * zeroPortRequestTag() const { return m_szZeroPortRequestTag.ptr(); };
+ void setZeroPortRequestTag(const KviStr &szTag){ m_szZeroPortRequestTag = szTag; };
+
+ unsigned int id() const { return m_uId; };
+ const QString & idString() const { return m_szId; };
+ static KviDccDescriptor * find(unsigned int uId);
+ static KviPointerHashTable<int,KviDccDescriptor> * descriptorDict();
+
+ void triggerCreationEvent(); // this MUST be called by the creator of the descriptor!
+//private:
+// void copyFrom(const KviDccDescriptor &src);
+public:
+ // Generic parameters
+ QString szType; // DCC protocol : CHAT , SCHAT , SEND , TSSEND....
+
+ bool bActive; // active or passive connection ?
+
+ QString szNick; // remote user nickname
+ QString szUser; // remote user name (unknown for passive dcc)
+ QString szHost; // remote user host (unknown for passive dcc)
+
+ QString szLocalNick; // local user nickname (always from irc)
+ QString szLocalUser; // local user username (always from irc)
+ QString szLocalHost; // local user hostname (always from irc)
+
+ QString szIp; // remote user ip (active dcc only)
+ QString szPort; // remote user port (active dcc only)
+
+ QString szListenIp; // passive only : ip to listen on
+ QString szListenPort; // passive only : port to listen on
+
+ bool bSendRequest; // passive only : true if we have to send the CTCP request
+
+ QString szFakeIp; // passive only : fake ip to send in the CTCP
+ QString szFakePort; // passive only : fake port to send in the CTCP
+
+ bool bDoTimeout; // the marshall has to setup a timeout ?
+
+ bool bIsTdcc; // is this a TDCC ?
+
+ bool bOverrideMinimize; // Override the default minimize option ?
+ bool bShowMinimized; // Show minimized ? (valid if bOverrideMinimize is true)
+
+ bool bAutoAccept; // Auto accepted dcc send/chat ?
+#ifdef COMPILE_SSL_SUPPORT
+ bool bIsSSL; // do we have to use SSL ?
+#endif
+ // Specific parameters
+
+ // DCC SEND/RECV
+
+ QString szFileName; // RECVFILE: incoming file name, SENDFILE: filename sent to the remote end
+ QString szFileSize; // RECVFILE: incoming file size, SENDFILE: remote resume size
+
+ QString szLocalFileName; // RECVFILE: save file name selected, SENDFILE: file to send
+ QString szLocalFileSize; // RECVFILE: local file size (to resume), SENDFILE: file to send size
+
+ bool bRecvFile; // do we have to RECEIVE the file or SEND it ?
+
+ bool bResume; // do we want to resume ?
+ bool bNoAcks; // blind dcc send ? (do not receive nor send acknowledges)
+
+ bool bIsIncomingAvatar; // It is an Incoming Avatar DCC SEND ?
+
+ // DCC VOICE
+
+ KviStr szCodec; // codec name
+ int iSampleRate; // Sample rate
+public:
+ // new interface... but should be converted to QString...
+ QString protocol(){ return szType; };
+ bool isActive(){ return bActive; };
+ QString remoteNick(){ return szNick; };
+ QString remoteUser(){ return szUser; };
+ QString remoteHost(){ return szHost; };
+ QString remoteIp(){ return szIp; };
+ QString remotePort(){ return szPort; };
+ QString remoteFileName(){ return szFileName; };
+ QString remoteFileSize(){ return szFileSize; };
+ QString localNick(){ return szLocalNick; };
+ QString localUser(){ return szLocalUser; };
+ QString localHost(){ return szLocalHost; };
+ QString localIp(){ return szIp; };
+ QString localPort(){ return szPort; };
+ QString localFileName(){ return szLocalFileName; };
+ QString localFileSize(){ return szLocalFileSize; };
+ bool isFileUpload();
+ bool isFileDownload();
+ bool isDccChat();
+ bool isFileTransfer(){ return (isFileUpload() || isFileDownload()); };
+};
+
+
+
+
+#endif //_DESCRIPTOR_H_
diff --git a/src/modules/dcc/dialogs.cpp b/src/modules/dcc/dialogs.cpp
new file mode 100644
index 00000000..0ec0afba
--- /dev/null
+++ b/src/modules/dcc/dialogs.cpp
@@ -0,0 +1,206 @@
+//
+// File : dialogs.cpp
+// Creation date : Tue Sep 19 09 2000 15:23:12 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include "dialogs.h"
+
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+#include "kvi_app.h"
+
+#include <qlayout.h>
+#include <qpushbutton.h>
+#include <qlabel.h>
+#include <qstringlist.h>
+#include <qevent.h>
+#include <qdesktopwidget.h>
+
+KviDccBox::KviDccBox(KviDccBroker * br,KviDccDescriptor * dcc)
+{
+ m_pDescriptor = dcc;
+ m_pBroker = br;
+}
+
+KviDccBox::~KviDccBox()
+{
+ if(m_pDescriptor)delete m_pDescriptor;
+ m_pDescriptor = 0;
+ m_pBroker->unregisterDccBox(this);
+}
+
+void KviDccBox::forgetDescriptor()
+{
+ m_pDescriptor = 0;
+}
+
+KviDccAcceptBox::KviDccAcceptBox(KviDccBroker * br,KviDccDescriptor * dcc,const QString &text,const QString &capt)
+: QWidget(0,"dcc_accept_box") , KviDccBox(br,dcc)
+{
+ QVBoxLayout * vb = new QVBoxLayout(this,4,4);
+ QLabel * l = new QLabel(text,this);
+#ifdef COMPILE_USE_QT4
+ l->setWordWrap(true);
+#endif
+ vb->addWidget(l);
+ QHBoxLayout *hb = new QHBoxLayout(4);
+ vb->addLayout(hb,Qt::AlignCenter);
+ QPushButton * btn = new QPushButton(__tr2qs_ctx("&Accept","dcc"),this);
+ btn->setDefault(true);
+ //btn->setFocus();
+ hb->addWidget(btn);
+ connect(btn,SIGNAL(clicked()),this,SLOT(acceptClicked()));
+ btn = new QPushButton(__tr2qs_ctx("&Reject","dcc"),this);
+ connect(btn,SIGNAL(clicked()),this,SLOT(rejectClicked()));
+ hb->addWidget(btn);
+
+ setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DCCMSG)));
+ setCaption(capt);
+
+ l->setActiveWindow();
+ l->setFocus();
+}
+
+KviDccAcceptBox::~KviDccAcceptBox()
+{
+}
+
+void KviDccAcceptBox::acceptClicked()
+{
+ hide();
+ emit accepted(this,m_pDescriptor);
+ g_pApp->collectGarbage(this);
+}
+
+void KviDccAcceptBox::rejectClicked()
+{
+ hide();
+ emit rejected(this,m_pDescriptor);
+ g_pApp->collectGarbage(this);
+}
+
+void KviDccAcceptBox::closeEvent(QCloseEvent *e)
+{
+ hide();
+ e->ignore();
+ emit rejected(this,m_pDescriptor);
+ g_pApp->collectGarbage(this);
+}
+
+void KviDccAcceptBox::showEvent(QShowEvent *e)
+{
+ move((g_pApp->desktop()->width() - width()) >> 1,
+ (g_pApp->desktop()->height() - height()) >> 1);
+ QWidget::showEvent(e);
+}
+
+
+
+
+KviDccRenameBox::KviDccRenameBox(KviDccBroker * br,KviDccDescriptor * dcc,const QString &text,bool bDisableResume)
+: QWidget(0,"dcc_rename_box") , KviDccBox(br,dcc)
+{
+ QVBoxLayout * vb = new QVBoxLayout(this,4,4);
+ QLabel * l = new QLabel(text,this);
+#ifdef COMPILE_USE_QT4
+ l->setWordWrap(true);
+#endif
+ vb->addWidget(l);
+
+ QHBoxLayout *hb = new QHBoxLayout(4);
+ vb->addLayout(hb,Qt::AlignCenter);
+
+ QPushButton * btn = new QPushButton(__tr2qs_ctx("&Rename","dcc"),this);
+ hb->addWidget(btn);
+ connect(btn,SIGNAL(clicked()),this,SLOT(renameClicked()));
+
+ btn = new QPushButton(__tr2qs_ctx("Over&write","dcc"),this);
+ hb->addWidget(btn);
+ connect(btn,SIGNAL(clicked()),this,SLOT(overwriteClicked()));
+
+ btn = new QPushButton(__tr2qs_ctx("Re&sume","dcc"),this);
+ hb->addWidget(btn);
+ connect(btn,SIGNAL(clicked()),this,SLOT(resumeClicked()));
+ if(bDisableResume)btn->setEnabled(false);
+
+ btn = new QPushButton(__tr2qs_ctx("Cancel","dcc"),this);
+ hb->addWidget(btn);
+ connect(btn,SIGNAL(clicked()),this,SLOT(cancelClicked()));
+ btn->setDefault(true);
+ //btn->setFocus();
+
+ setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DCCMSG)));
+ setCaption(__tr2qs_ctx("File Already Exists - KVIrc","dcc"));
+}
+
+KviDccRenameBox::~KviDccRenameBox()
+{
+}
+
+void KviDccRenameBox::closeEvent(QCloseEvent *e)
+{
+ hide();
+ e->ignore();
+ if(m_pDescriptor)
+ {
+ emit cancelSelected(this,m_pDescriptor);
+ g_pApp->collectGarbage(this);
+ }
+}
+
+void KviDccRenameBox::showEvent(QShowEvent *e)
+{
+ move((g_pApp->desktop()->width() - width()) >> 1,
+ (g_pApp->desktop()->height() - height()) >> 1);
+ QWidget::showEvent(e);
+}
+
+void KviDccRenameBox::renameClicked()
+{
+ hide();
+ emit renameSelected(this,m_pDescriptor);
+ g_pApp->collectGarbage(this);
+}
+
+void KviDccRenameBox::overwriteClicked()
+{
+ hide();
+ emit overwriteSelected(this,m_pDescriptor);
+ g_pApp->collectGarbage(this);
+}
+
+void KviDccRenameBox::resumeClicked()
+{
+ hide();
+ m_pDescriptor->bResume = true;
+ emit overwriteSelected(this,m_pDescriptor);
+ g_pApp->collectGarbage(this);
+}
+
+void KviDccRenameBox::cancelClicked()
+{
+ hide();
+ emit cancelSelected(this,m_pDescriptor);
+ g_pApp->collectGarbage(this);
+}
+
+
+
+
+#include "m_dialogs.moc"
diff --git a/src/modules/dcc/dialogs.h b/src/modules/dcc/dialogs.h
new file mode 100644
index 00000000..805c0147
--- /dev/null
+++ b/src/modules/dcc/dialogs.h
@@ -0,0 +1,82 @@
+#ifndef _DIALOGS_H_
+#define _DIALOGS_H_
+//
+// File : dialogs.h
+// Creation date : Tue Sep 19 09 2000 15:17:22 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include <qwidget.h>
+#include "kvi_filedialog.h"
+
+#include "broker.h"
+
+class KviDccBox
+{
+protected:
+ KviDccDescriptor * m_pDescriptor;
+ KviDccBroker * m_pBroker;
+public:
+ KviDccBox(KviDccBroker * br,KviDccDescriptor * dcc);
+ virtual ~KviDccBox();
+public:
+ virtual void forgetDescriptor();
+};
+
+
+
+class KviDccAcceptBox : public QWidget , public KviDccBox
+{
+ Q_OBJECT
+public:
+ KviDccAcceptBox(KviDccBroker * br,KviDccDescriptor * dcc,const QString &text,const QString &capt);
+ ~KviDccAcceptBox();
+protected:
+ virtual void closeEvent(QCloseEvent *e);
+ virtual void showEvent(QShowEvent *e);
+private slots:
+ void acceptClicked();
+ void rejectClicked();
+signals:
+ void accepted(KviDccBox *,KviDccDescriptor *);
+ void rejected(KviDccBox *,KviDccDescriptor *);
+};
+
+class KviDccRenameBox : public QWidget , public KviDccBox
+{
+ Q_OBJECT
+public:
+ KviDccRenameBox(KviDccBroker * br,KviDccDescriptor * dcc,const QString &text,bool bDisableResume);
+ ~KviDccRenameBox();
+protected:
+ virtual void closeEvent(QCloseEvent *e);
+ virtual void showEvent(QShowEvent *e);
+private slots:
+ void renameClicked();
+ void overwriteClicked();
+ void resumeClicked();
+ void cancelClicked();
+signals:
+ void overwriteSelected(KviDccBox *,KviDccDescriptor *);
+ void renameSelected(KviDccBox *,KviDccDescriptor *);
+ void cancelSelected(KviDccBox *,KviDccDescriptor *);
+};
+
+#endif
diff --git a/src/modules/dcc/gsmcodec.cpp b/src/modules/dcc/gsmcodec.cpp
new file mode 100644
index 00000000..58af1473
--- /dev/null
+++ b/src/modules/dcc/gsmcodec.cpp
@@ -0,0 +1,149 @@
+//
+// File : gsmcodec.cpp
+// Creation date : Wed Aug 22 19:12:55 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#define _GSMCODEC_CPP_
+
+#include "gsmcodec.h"
+
+#ifdef COMPILE_USE_GSM
+
+#include <dlfcn.h>
+
+#define GSM_PACKED_FRAME_SIZE_IN_BYTES 33
+#define GSM_UNPACKED_FRAME_SIZE_IN_BYTES 320
+#define GSM_UNPACKED_FRAME_SIZE_IN_SHORTS 160
+
+void * (*gsm_session_create)() = 0;
+void (*gsm_session_destroy)(void *) = 0;
+void (*gsm_session_encode)(void *,short *,unsigned char *) = 0;
+int (*gsm_session_decode)(void *,unsigned char *,short *) = 0;
+
+
+void * g_pGSMCodecLibraryHandle = 0;
+
+bool kvi_gsm_codec_init()
+{
+ if(g_pGSMCodecLibraryHandle)return true; // Already initialized
+
+ g_pGSMCodecLibraryHandle = dlopen("libgsm.so",RTLD_NOW | RTLD_GLOBAL);
+ if(!g_pGSMCodecLibraryHandle)return false; // no way to open it
+
+ gsm_session_create = (void * (*)()) dlsym(g_pGSMCodecLibraryHandle,"gsm_create");
+ gsm_session_destroy = (void (*)(void *)) dlsym(g_pGSMCodecLibraryHandle,"gsm_destroy");
+ gsm_session_encode = (void (*)(void *,short *,unsigned char *)) dlsym(g_pGSMCodecLibraryHandle,"gsm_encode");
+ gsm_session_decode = (int (*)(void *,unsigned char *,short *)) dlsym(g_pGSMCodecLibraryHandle,"gsm_decode");
+
+ if(! (gsm_session_create && gsm_session_destroy && gsm_session_encode && gsm_session_decode))
+ {
+ dlclose(g_pGSMCodecLibraryHandle);
+ g_pGSMCodecLibraryHandle = 0;
+ return false;
+ }
+ return true;
+}
+
+void kvi_gsm_codec_done()
+{
+ if(g_pGSMCodecLibraryHandle)
+ {
+ dlclose(g_pGSMCodecLibraryHandle);
+ g_pGSMCodecLibraryHandle = 0;
+ }
+}
+
+
+
+KviDccVoiceGsmCodec::KviDccVoiceGsmCodec()
+: KviDccVoiceCodec()
+{
+ m_pEncodeState = gsm_session_create();
+ m_pDecodeState = gsm_session_create();
+ m_szName = "gsm (compression 33:320)";
+}
+
+KviDccVoiceGsmCodec::~KviDccVoiceGsmCodec()
+{
+ gsm_session_destroy(m_pEncodeState);
+ gsm_session_destroy(m_pDecodeState);
+}
+
+void KviDccVoiceGsmCodec::encode(KviDataBuffer * signal,KviDataBuffer * stream)
+{
+ if(signal->size() < GSM_UNPACKED_FRAME_SIZE_IN_BYTES)return; // nothing to encode
+
+ unsigned char * ptr = signal->data();
+
+ int uFrames = signal->size() / GSM_UNPACKED_FRAME_SIZE_IN_BYTES;
+ int uTotalDataCompressed = uFrames * GSM_UNPACKED_FRAME_SIZE_IN_BYTES;
+ int uFrameOffset = stream->size();
+ unsigned char * endPtr = ptr + uTotalDataCompressed;
+
+ stream->addSize(GSM_PACKED_FRAME_SIZE_IN_BYTES * uFrames);
+
+ while(ptr != endPtr)
+ {
+ gsm_session_encode(m_pEncodeState,(short *)ptr,stream->data() + uFrameOffset);
+ ptr += GSM_UNPACKED_FRAME_SIZE_IN_BYTES;
+ uFrameOffset += GSM_PACKED_FRAME_SIZE_IN_BYTES;
+ }
+ signal->remove(uTotalDataCompressed);
+}
+
+void KviDccVoiceGsmCodec::decode(KviDataBuffer * stream,KviDataBuffer * signal)
+{
+ if(stream->size() < GSM_PACKED_FRAME_SIZE_IN_BYTES)return; // nothing to decode
+
+ unsigned char * ptr = stream->data();
+
+ // Gsm codec
+ int uFrames = stream->size() / GSM_PACKED_FRAME_SIZE_IN_BYTES;
+ int uTotalDataDecompressed = uFrames * GSM_PACKED_FRAME_SIZE_IN_BYTES;
+ int uSignalOffset = signal->size();
+ unsigned char * endPtr = ptr + (uTotalDataDecompressed);
+
+ signal->addSize(GSM_UNPACKED_FRAME_SIZE_IN_BYTES * uFrames);
+
+ while(ptr != endPtr)
+ {
+ // We don't check the return value here
+ // Well..it is either an unrecoverable internal error
+ // or a broken frame...
+ // but if we receive broken frames over DCC...well....better
+ // check the hardware...or the remote codec as well...
+ gsm_session_decode(m_pDecodeState,ptr,(short *)(signal->data() + uSignalOffset));
+ ptr += GSM_PACKED_FRAME_SIZE_IN_BYTES;
+ uSignalOffset += GSM_UNPACKED_FRAME_SIZE_IN_BYTES;
+ }
+ stream->remove(uTotalDataDecompressed);
+}
+
+int KviDccVoiceGsmCodec::encodedFrameSize()
+{
+ return GSM_PACKED_FRAME_SIZE_IN_BYTES;
+}
+
+int KviDccVoiceGsmCodec::decodedFrameSize()
+{
+ return GSM_UNPACKED_FRAME_SIZE_IN_BYTES;
+}
+
+#endif // COMPILE_USE_GSM
diff --git a/src/modules/dcc/gsmcodec.h b/src/modules/dcc/gsmcodec.h
new file mode 100644
index 00000000..a1de407b
--- /dev/null
+++ b/src/modules/dcc/gsmcodec.h
@@ -0,0 +1,54 @@
+#ifndef _GSMCODEC_H_
+#define _GSMCODEC_H_
+//
+// File : gsmcodec.h
+// Creation date : Wed Aug 22 19:12:54 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+
+
+#ifdef COMPILE_USE_GSM
+
+ #include "codec.h"
+
+ #ifndef _GSMCODEC_CPP_
+ extern bool kvi_gsm_codec_init();
+ extern void kvi_gsm_codec_done();
+ #endif //_GSMCODEC_CPP_
+
+ class KviDccVoiceGsmCodec : public KviDccVoiceCodec
+ {
+ public:
+ KviDccVoiceGsmCodec();
+ virtual ~KviDccVoiceGsmCodec();
+ private:
+ void * m_pEncodeState;
+ void * m_pDecodeState;
+ public:
+ virtual void encode(KviDataBuffer * signal,KviDataBuffer * stream);
+ virtual void decode(KviDataBuffer * stream,KviDataBuffer * signal);
+ virtual int encodedFrameSize();
+ virtual int decodedFrameSize();
+ };
+
+#endif //COMPILE_USE_GSM
+
+#endif //_GSMCODEC_H_
diff --git a/src/modules/dcc/kvi_dccfiletransfericons.png b/src/modules/dcc/kvi_dccfiletransfericons.png
new file mode 100644
index 00000000..11999a03
--- /dev/null
+++ b/src/modules/dcc/kvi_dccfiletransfericons.png
Binary files differ
diff --git a/src/modules/dcc/libkvidcc.cpp b/src/modules/dcc/libkvidcc.cpp
new file mode 100644
index 00000000..717f568d
--- /dev/null
+++ b/src/modules/dcc/libkvidcc.cpp
@@ -0,0 +1,2766 @@
+//=============================================================================
+//
+// File : libkviobjects.cpp
+// Creation date : Wed Sep 09 2000 20:59:01 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_debug.h"
+#include "kvi_settings.h"
+#include "kvi_string.h"
+#include "kvi_module.h"
+#include "kvi_sparser.h"
+#include "kvi_locale.h"
+#include "kvi_out.h"
+#include "kvi_console.h"
+#include "kvi_netutils.h"
+#include "kvi_frame.h"
+#include "kvi_console.h"
+#include "kvi_error.h"
+#include "kvi_options.h"
+#include "kvi_defaults.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_app.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectionuserinfo.h"
+
+#include "gsmcodec.h"
+#include "broker.h"
+#include "voice.h"
+#include "utils.h"
+#include "send.h"
+#include "window.h"
+
+#include <qfileinfo.h>
+
+#ifdef COMPILE_ON_WINDOWS
+ // Ugly Windoze compiler...
+ #include "dialogs.h"
+#endif
+
+//#warning "KviOption_boolIgnoreDccChat and other types too"
+
+//extern KVIRC_API KviSharedFilesManager * g_pSharedFilesManager;
+
+KviDccBroker * g_pDccBroker = 0;
+
+
+static void dcc_module_set_dcc_type(KviDccDescriptor * d,const char * szBaseType)
+{
+ d->szType = szBaseType;
+#ifdef COMPILE_SSL_SUPPORT
+ if(d->bIsSSL)d->szType.prepend('S');
+#endif
+ if(d->bIsTdcc)d->szType.prepend('T');
+}
+
+static bool dcc_kvs_parse_default_parameters(KviDccDescriptor * d,KviKvsModuleCommandCall *c)
+{
+ d->bIsTdcc = c->switches()->find('t',"tdcc");
+
+ KviKvsVariant * pSw = c->switches()->find('m',"minimize");
+
+ if(pSw != 0)
+ d->bOverrideMinimize = pSw->asBoolean();
+ else
+ d->bOverrideMinimize = false;
+
+ if(!d->console())
+ {
+ // We don't need a console with -c and -n , otherwise we need it
+ if(!(c->switches()->find('c',"connect") || c->switches()->find('n',"no-ctcp")))
+ {
+ delete d;
+ c->error(__tr2qs_ctx("This window has no associated IRC context (an IRC context is required unless -c or -n are passed)","dcc"));
+ return false;
+ } else d->setConsole(c->window()->frame()->firstConsole());
+ }
+
+ __range_valid(d->console());
+
+ if(!d->console()->isConnected())
+ {
+ // We don't need a connection with -c and -n , otherwise we need it
+ if(!(c->switches()->find('c',"connect") || c->switches()->find('n',"no-ctcp")))
+ {
+ delete d;
+ c->error(__tr2qs_ctx("You're not connected to a server (an active connection is required unless -c or -n are passed)","dcc"));
+ return false;
+ } else {
+ // -c or -n , grab a local nick from somewhere
+ d->szLocalNick = KVI_OPTION_STRING(KviOption_stringNickname1);
+ d->szLocalNick.stripWhiteSpace();
+ if(d->szLocalNick.isEmpty())d->szLocalNick = KVI_DEFAULT_NICKNAME1;
+ d->szLocalUser = __tr2qs_ctx("unknown","dcc"); // we can live without it
+ d->szLocalHost = d->szLocalUser; // we can live without it
+ }
+ } else {
+ // We know everything
+ d->szLocalNick = d->console()->connection()->userInfo()->nickName();
+ d->szLocalUser = d->console()->connection()->userInfo()->userName();
+ d->szLocalHost = d->console()->connection()->userInfo()->hostName();
+ }
+
+ if(pSw = c->switches()->find('i',"ip"))
+ {
+ pSw->asString(d->szListenIp);
+ if(!(d->szListenIp.contains('.') || d->szListenIp.contains(':')))
+ {
+ // This will magically work with the same buffer as source and dst!
+ if(!KviNetUtils::getInterfaceAddress(d->szListenIp,d->szListenIp))
+ {
+ c->error(__tr2qs_ctx("Unable to get address of interface %Q","dcc"),&(d->szListenIp));
+ delete d;
+ return false;
+ }
+ }
+ } else {
+ QString tmp;
+ if(!dcc_kvs_get_listen_ip_address(c,d->console(),tmp))
+ {
+ delete d;
+ c->error(__tr2qs_ctx("No suitable interfaces to listen on, use -i","dcc"));
+ return false;
+ }
+ d->szListenIp=tmp;
+ }
+
+ if(pSw = c->switches()->find('p',"port"))
+ {
+ pSw->asString(d->szListenPort); // fixme!
+ }
+ else d->szListenPort = "0"; // any port is ok
+
+ if(pSw = c->switches()->find('a',"fake-address"))
+ {
+ pSw->asString(d->szFakeIp);
+ }
+ else {
+ if(KVI_OPTION_BOOL(KviOption_boolDccSendFakeAddressByDefault))
+ {
+ d->szFakeIp = KVI_OPTION_STRING(KviOption_stringDefaultDccFakeAddress);
+ if(d->szFakeIp.isEmpty())KVI_OPTION_BOOL(KviOption_boolDccSendFakeAddressByDefault) = false;
+ }
+ }
+
+ if(pSw = c->switches()->find('f',"fake-port"))
+ {
+ pSw->asString(d->szFakePort);
+ }
+
+ d->bDoTimeout = (!c->switches()->find('u',"unlimited"));
+#ifdef COMPILE_SSL_SUPPORT
+ d->bIsSSL = c->switches()->find('s',"ssl");
+#else
+ if(c->switches()->find('s',"ssl"))c->warning(__tr2qs_ctx("This executable was built without SSL support, -s switch ignored","dcc"));
+#endif
+
+ return true;
+}
+
+
+/*
+ @doc: dcc.chat
+ @type:
+ command
+ @title:
+ dcc.chat
+ @short:
+ Starts a DCC Chat connection
+ @syntax:
+ dcc.chat [-s] [-n] [-c] [-u] [-m[=<boolean>]] [-i=<interface>] [-p=<port>] [-a=<fake address>] [-f=<fake port>] <nickname>
+ @switches:
+ !sw: -m[=<boolean>] | --minimize[=<boolean>]
+ If the -m switch is passed, the default boolCreateMinimizedDccChat option
+ is overridden with the <boolean> parameter passed. So actually
+ by passing -m=1 will create a minimized DCC send even
+ if the [fnc]$option[/fnc](boolCreateMinimizedDccChat) returns false.[br]
+ In the same way, by passing -m=0 you will create a non minimized DCC send.
+ If no <boolean> value is specified, it defaults to 1.[br]
+
+ !sw: -n | --no-ctcp
+ Do NOT send the CTCP request to the target user, you will have to do it manually,
+ or the remote user will have to connect manually (for example by using dcc.chat -c).[br]
+
+ !sw: -c | --connect
+ Attempt to CONNECT to the remote host specified as <interface> and <port>,
+ instead of listening (active connection instead of a passive one).
+ In this case the -i and -p switches are mandatory.[br]
+ The 'c' switch takes precedence over 'n' (In fact both should
+ be mutually exclusive).[br]
+ If the 'c' and 'n' switches are missing, this commands
+ needs to be executed in a window that is bound to a connected
+ IRC context (you need a third entity to accomplish the negotiation).[br]
+
+ !sw: -i=<interface> | --ip=<interface>
+ Bind the local listening socket to the specified <interface> (which is an IP address, IPv4 or IPv6).
+ If this switch is NOT specified, the socket is bound to the interface of
+ the current IRC connection (if any) or to "127.0.0.1".[br]
+ You can also specify a local interface name to get the address from (this works only for IPv4 interfaces
+ since IPv6 ones seems to be unsupported by the system ioctl() calls at the moment (for linux at least)).[br]
+ Here go some examples:[br]
+ -i=215.243.12.12: this will bind to the IPv4 interface with the specified address.[br]
+ -i=3ffe:1001::1: this will bind to the IPv6 interface with the specified address.[br]
+ -i=ppp0: this will bind to the IPv4 address of the interface ppp0 (if supported by the underlying system).[br]
+ The -i switch parameter may serve also as a target address when the -c switch is used.[br]
+
+ !sw: -p=<port> | --port=<port>
+ Bind the local listening socket to the specified <port>.
+ If this switch is NOT specified, the port will be a "random" one choosen by the kernel.[br]
+
+ !sw: -a=<fake address> | --fake-address=<fake address>
+ Send the <fake address> as target for the remote client in the requesting CTCP message.
+ If this switch is not given, the CTCP will contain the real IP address of the listening
+ interface.[br]
+
+ !sw: -f=<fake port> | --fake-port=<fake port>
+ Send the <fake port> as target port for the remote client in the requesting CTCP message.
+ If this switch is not given, the CTCP will contain the real port of the listening socket.
+ [br][br]
+ All these switches are meant to allow maximum flexibility of the
+ DCC negotiation, earlier KVIrc releases had serious problems
+ with firewalled and/or masqueraded machines. With the -a and -f switches
+ you can work around it.[br]
+ [br]
+
+ !sw: -u | --unlimited
+ If the 'u' switch is given, the connection attempt will
+ never time out; this might be useful if you want to leave
+ a listening socket for a friend of yours while you are sleeping
+ and have the CTCP processing disabled. The 'u' switch works either
+ in active and passive mode.[br]
+
+ !sw: -s | --ssl
+ Use a Secure Socket Layer for the transfer; the whole communication will be encrypted
+ with a private key algorithm after a public key handshake.[br]
+ This option will work only if the KVIrc executable has been compiled with SSL support
+ and the remote end supports the SSL protocol too.[br]
+ Please note that this will may down the transfer somewhat.[br]
+ -s can be combined with -t.[br]
+ The CTCP negotiation will use SSEND as parameter (or eventually TSSEND).[br]
+ When requesting a SSL based DCC send to someone you probably will need a
+ certificate. If you don't have one, create it (for example with CA.pl -newcert)
+ and set it in the options dialog.
+
+ !sw: -z | --zero-port
+ Use the 0 port method. This is a dirty hack that allows you to use the CHAT
+ protocol with mIrc receiving clients.
+ @description:
+ Attempts a DCC connection to <nickname>.[br]
+ The simplest case "dcc.chat <nickname>" will work just as in all
+ the other IRC clients, but this command is really more powerful...[br]
+ Before attempting to understand the possibilities of this command,
+ be sure to know how [doc:dcc_connection]DCC negotiation and connections[/doc] work.
+ If the 'i' switch is specified, the local listening socket
+ will be bound to the specified <interface> (which is an IP address, IPv4 or IPv6),
+ otherwise it will be bound to the interface of the
+ current IRC connection.[br]
+ You can also specify a local interface name to get the address from (this works only for IPv4 interfaces
+ since IPv6 ones seem to be unsupported by the system ioctl() calls at the moment (in Linux at least)).[br]
+ Here are some examples:[br]
+ -i=215.243.12.12: This will bind to the IPv4 interface with the specified address.[br]
+ -i=3ffe:1001::1: This will bind to the IPv6 interface with the specified address.[br]
+ -i=ppp0: This will bind to the IPv4 address of the interface ppp0 (if supported by the underlying system).[br]
+ The -i switch parameter may serve also as a target address when the -c switch is used.[br]
+ If the 'p' switch is specified, the local listening socket
+ will be bound to the <port>, otherwise it will be bound to
+ a random port choosen by the kernel.[br]
+ If the 'a' switch is specified, the requesting CTCP message
+ will contain <fake address> as target for the remote user,
+ otherwise the CTCP message will contain the real IP address
+ of the listening interface.
+ If the 'f' switch is specified, the requesting CTCP message
+ will contain <fake port> as target for the remote user,
+ otherwise the CTCP message will contain the real port of the
+ listening socket.
+ All these switches are meant to allow maximum flexibility of the
+ DCC negotiation, earlier KVIrc releases had serious problems
+ with firewalled and/or masqueraded machines. With the -a and -f switches
+ you can workaround it.
+ If the 'n' switch is specified, KVIrc will NOT send the CTCP request
+ to the target user; you will have to do it manually, or the remote user
+ will have to connect manually (for example by using dcc.chat -c).
+ If the 'c' switch is specified, KVIrc will attempt to connect
+ to the remote host specified as <interface> and <port>, instead
+ of listening (active connection instead of a passive one).
+ In this case the -i and -p switches are mandatory.[br]
+ The 'c' switch takes precedence over 'n' (In fact both should
+ be mutually exclusive).[br]
+ If the 'c' and 'n' switches are missing, this commands
+ needs to be executed in a window that is bound to a connected
+ IRC context (you need a third entity to accomplish the negotiation).[br]
+ If the 'u' switch is given, the connection attempt will
+ never time out; this might be useful if you want to leave
+ a listening socket for a friend of yours while you are sleeping
+ and have the CTCP processing disabled. The 'u' switch works either
+ in active and passive mode.[br]
+ If the -m switch is passed, the default boolCreateMinimizedDccChat option
+ is overridden with the <boolean> parameter passed. So actually
+ by passing -m=1 will create a minimized DCC chat even
+ if the [fnc]$option[/fnc](boolCreateMinimizedDccChat) returns false.[br]
+ In the same way, by passing -m=0 you will create a non minimized DCC chat.
+ If no <boolean> value is specified, it defaults to 1.[br]
+ -s will cause the DCC chat to be attempted in Secure Sockets Layer mode:
+ the connection will be encrypted with a private key algorithm after a
+ public key handshake. -s will work only if the KVIrc executable was compiled
+ with SSL support enabled and if the remote end supports it.
+ The eventual DCC request will contain the string SCHAT instead of CHAT.[br]
+ When requesting a SSL based DCC chat to someone you probably will need a
+ certificate. If you don't have one, create it (for example with CA.pl -newcert)
+ and set it in the options dialog.
+ @examples:
+ Simple examples:
+ [example]
+ # Simple DCC chat to Pragma
+ dcc.chat Pragma
+ # DCC chat to Pragma, listen on address 127.0.0.1
+ dcc.chat -i=127.0.0.1 Pragma
+ # DCC chat to Pragma, listen on address 168.0.0.1 and port 1025
+ dcc.chat -i=168.0.0.1 -p=1025 Pragma
+ [/example]
+ More tricky ones:
+ [example]
+ # DCC chat to Pragma, listen on address 127.0.0.1 and port 1080
+ # but tell him to connect to address 212.134.22.11 port 1080
+ dcc.chat -i=127.0.0.1 -p=1080 -a=212.134.22.11 Pragma
+ # DCC chat to Pragma, listen on address 127.0.0.1 and port 1080
+ # but tell him to connect to address 212.134.22.11 port 1090
+ dcc.chat -i=127.0.0.1 -p=1080 -a=212.134.22.11 -f=1090 Pragma
+ [/example]
+ Now run completely out of bounds. Use dcc.chat connections
+ to do various things:
+ [example]
+ # Tricky: simulate a HTTP server
+ dcc.chat -n -i=127.0.0.1 -p=80 Netscape
+ # Now open http://127.0.0.1 with netscape
+ # and type "<html><body>Hello!</body></html>" :)
+ #
+ # Tricky 2: simulate the ident daemon (if you have none)
+ dcc.chat -n -i=127.0.0.1 -p=113 Client
+ #
+ # Now a self-DCC connection without the IRC negotiation
+ # Src: Setup a listening socket awaiting the "Destination" user connection
+ dcc.chat -n -i=127.0.0.1 -p=1080 Dst
+ # Dst: Connect to the listening socket at addr 127.0.0.1 and port 1080
+ dcc.chat -c -i=127.0.0.1 -p=1080 Src
+ # The above example will mess you a bit...
+ # Try to guess why in both windows YOU have the same nickname
+ # that is probably not Dst nor Src... :)
+ [/example]
+ Using the shell ftp proggie is too easy:
+ we're [b]real hackers[/b] and want to do complicated things...
+ [example]
+ # Connect to the local ftp server and get the list of contents
+ /dcc.chat -c -i=127.0.0.1 -p=21 FtpServer
+ # Now login, type in the new window (the following lines are NOT commands):
+ USER youruser
+ PASS yourpass
+ # Now enter passive mode
+ PASV
+ # And watch the line that you have received...sth like
+ # 227 Entering passive mode (127,0,0,1,210,195)
+ /dcc.chat -c -i=127.0.0.1 -p=$((210 * 256) + 195) FtpList
+ # (Change the port numbers accordingly)
+ # And then type in the FtpServer window (this is NOT a KVIrc command):
+ LIST
+ # Then watch the ls output in the FtpList window. :)
+ # In this way you can also read ascii files by ftp:
+ # Assume that in the previous ls output you have seen
+ # a README file.
+ # In the FtpServer window type:
+ PASV
+ # Watch the message
+ # 227 Entering passive mode (127,0,0,1,22,227)
+ /dcc.chat -c -i=127.0.0.1 -p=$((22 * 256) + 227) README
+ # In the FtpServer window type:
+ RETR README
+ # And read the file in the README window :)
+ [/example]
+*/
+
+static bool dcc_kvs_cmd_chat(KviKvsModuleCommandCall * c)
+{
+ QString szTarget;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("target",KVS_PT_NONEMPTYSTRING,0,szTarget)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * d = new KviDccDescriptor(c->window()->console());
+
+ d->szNick = szTarget; // we always specify the nickname
+ d->szUser = __tr2qs_ctx("unknown","dcc"); // username is always unknown
+ d->szHost = d->szUser; // host is always unknown
+
+ if(!dcc_kvs_parse_default_parameters(d,c))return false;
+ dcc_module_set_dcc_type(d,"CHAT");
+
+ if(c->switches()->find('z',"zero-port"))
+ {
+ // we want to have it reversed... add a tag and send out the request
+ KviDccZeroPortTag * t = g_pDccBroker->addZeroPortTag();
+
+ d->console()->connection()->sendFmtData("PRIVMSG %s :%cDCC %s chat 127.0.0.1 0 %s%c",
+ d->console()->connection()->encodeText(d->szNick).data(),
+ 0x01,
+ d->console()->connection()->encodeText(d->szType).data(),
+ d->console()->connection()->encodeText(t->m_szTag).data(),
+ 0x01);
+
+ return true;
+ }
+
+ if(c->switches()->find('c',"connect"))
+ {
+ if(!(c->switches()->find('i',"ip") && c->switches()->find('p',"port")))
+ {
+ delete d;
+ c->error(__tr2qs_ctx("-c requires -i and -p","dcc"));
+ return false;
+ }
+ d->szIp = d->szListenIp;
+ d->szPort = d->szListenPort;
+ d->szListenIp = ""; // useless
+ d->szListenPort = ""; // useless
+ d->bActive = true;
+ } else {
+ d->szIp = __tr2qs_ctx("unknown","dcc");
+ d->szPort = d->szIp;
+ d->bActive = false;
+ d->bSendRequest = !c->switches()->find('n',"no-ctcp");
+ }
+
+ //c->window()->output(0,"%Q %Q %Q",&(d->szIp),&(d->szPort),&(d->szListenIp));
+ d->triggerCreationEvent();
+ g_pDccBroker->executeChat(0,d);
+
+ return true;
+}
+
+
+/*
+ @doc: dcc.send
+ @type:
+ command
+ @title:
+ dcc.send
+ @short:
+ Sends a file
+ @syntax:
+ dcc.send [-s] [-n] [-c] [-u] [-b] [-g[=<file size>]] [-t] [-m[=<boolean>]] [-i=<interface>] [-p=<port>] [-a=<fake address>] [-f=<fake port>] <nickname> [filename]
+ @switches:
+ !sw: -g[=<file size>] | --get[=<file size>]
+ This switch is a dirty trick, you can use it to receive files from people
+ behind a firewall with masquerading enabled.[br]
+ It causes the transfer direction to be inverted; your client will receive
+ the file from the remote host instead of sending it.[br]
+ <file size> is the expected file size in bytes. This parameter can be omitted,
+ and in this case the DCC will "blindly" trust the remote end and assume
+ that the file has been transferred correctly when the remote end closes the connection.[br]
+ If you don't pass the -n option, the remote end will receive an informational DCC RECV request,
+ specifying the IP address and the port to connect to.[br]
+ -t can be used to prevent sending acknowledges to the remote end, and -u can be used
+ to avoid the listening socket to timeout.[br]
+ -a and -f can be used as well, but I see no real reason for that...[br]
+ Here is an example of usage of this option:[br]
+ spion can't accept connections (is behind a firewall with masquerading or some other reason...),
+ to his machine.[br]
+ spion wants to send the file important.jpg to Pragma.[br]
+ spion tells to Pragma that he wants to send him the file and Pragma sets up a connection in the following way:[br]
+ [b]dcc.send -g spion important.png[/b][br]
+ spion will see the informational DCC RECV request with the IP address and port that Pragma is listening on.
+ Assume that the address was 212.212.231.220 and the port 32344.[br]
+ spion will then use the following command:[br]
+ [b]dcc.send -c -i=212.212.231.220 -p=32344 Pragma /home/spion/important.jpg[/b][br]
+ Et voila!..the file is transferring.[br]
+ Pragma will see no file progress indication, since the file size is unknown on Pragma's side.[br]
+ If spion had specified the file size, Pragma could use -g=<file size> while setting up the connection,
+ to be able to see the progress indications.[br]
+ If Pragma used the the -n option, the DCC RECV indication wouldn't have been sent, in this case
+ Pragma would need to communicate the Ip address and the port "manually" to spion.[br]
+
+ !sw: -b | --blind
+ Assume that no acknowledges are sent.
+ Assume that the transfer was successful when the whole file has been sent,
+ then close the socket.[br]
+ This is called a "blind" DCC send.[br]
+
+ !sw: -t | -tdcc
+ Emulate the TDCC protocol: Use the TDCC CTCP message (DCC TSEND) for requesting the connection
+ and assume that no acknowledges are sent. Wait for the remote end to close the connection.[br]
+
+ !sw: -m[=<boolean>] | --minimize[=<boolean>]
+ If the -m switch is passed, the default boolCreateMinimizedDccSend option
+ is overridden with the <boolean> parameter passed. So actually
+ by passing -m=1 will create a minimized DCC send even
+ if the [fnc]$option[/fnc](boolCreateMinimizedDccSend) returns false.[br]
+ In the same way, by passing -m=0 you will create a non minimized DCC send.
+ If no <boolean> value is specified, it defaults to 1.[br]
+
+ !sw: -n | --no-ctcp
+ Do NOT send the CTCP request to the target user, you will have to do it manually,
+ or the remote user will have to connect manually (for example by using dcc.recv -c).[br]
+
+ !sw: -c | --connect
+ Attempt to CONNECT to the remote host specified as <interface> and <port>,
+ instead of listening (active connection instead of a passive one).
+ In this case the -i and -p switches are mandatory.[br]
+ The 'c' switch takes precedence over 'n' (In fact both should
+ be mutually exclusive).[br]
+ If the 'c' and 'n' switches are missing, this commands
+ needs to be executed in a window that is bound to a connected
+ IRC context (you need a third entity to accomplish the negotiation).[br]
+
+ !sw: -i=<interface> | --ip=<interface>
+ Bind the local listening socket to the specified <interface> (which is an IP address, IPv4 or IPv6).
+ If this switch is NOT specified, the socket is bound to the interface of
+ the current IRC connection (if any) or to "127.0.0.1".[br]
+ You can also specify a local interface name to get the address from (this works only for IPv4 interfaces
+ since IPv6 ones seems to be unsupported by the system ioctl() calls at the moment (for linux at least)).[br]
+ Here go some examples:[br]
+ -i=215.243.12.12: this will bind to the IPv4 interface with the specified address.[br]
+ -i=3ffe:1001::1: this will bind to the IPv6 interface with the specified address.[br]
+ -i=ppp0: this will bind to the IPv4 address of the interface ppp0 (if supported by the underlying system).[br]
+ The -i switch parameter may serve also as a target address when the -c switch is used.[br]
+
+ !sw: -p=<port> | --port=<port>
+ Bind the local listening socket to the specified <port>.
+ If this switch is NOT specified, the port will be a "random" one choosen by the kernel.[br]
+
+ !sw: -a=<fake address> | --fake-address=<fake address>
+ Send the <fake address> as target for the remote client in the requesting CTCP message.
+ If this switch is not given, the CTCP will contain the real IP address of the listening
+ interface.[br]
+
+ !sw: -f=<fake port> | --fake-port=<fake port>
+ Send the <fake port> as target port for the remote client in the requesting CTCP message.
+ If this switch is not given, the CTCP will contain the real port of the listening socket.
+ [br][br]
+ All these switches are meant to allow maximum flexibility of the
+ DCC negotiation, earlier KVIrc releases had serious problems
+ with firewalled and/or masqueraded machines. With the -a and -f switches
+ you can work around it.[br]
+ [br]
+
+ !sw: -u | --unlimited
+ If the 'u' switch is given, the connection attempt will
+ never time out; this might be useful if you want to leave
+ a listening socket for a friend of yours while you are sleeping
+ and have the CTCP processing disabled. The 'u' switch works either
+ in active and passive mode.[br]
+
+ !sw: -s | --ssl
+ Use a Secure Socket Layer for the transfer; the whole communication will be encrypted
+ with a private key algorithm after a public key handshake.[br]
+ This option will work only if the KVIrc executable has been compiled with SSL support
+ and the remote end supports the SSL protocol too.[br]
+ Please note that this will may down the transfer somewhat.[br]
+ -s can be combined with -t.[br]
+ The CTCP negotiation will use SSEND as parameter (or eventually TSSEND).[br]
+ When requesting a SSL based DCC send to someone you probably will need a
+ certificate. If you don't have one, create it (for example with CA.pl -newcert)
+ and set it in the options dialog.
+
+ @description:
+ Attempts to send the file <filename> to <nickname>.[br]
+ If [filename] is specified it must be an absolute file path,
+ otherwise a file selection dialog is opened.[br]
+ The simplest case "dcc.send <nickname> <filename>" will work just as in all
+ the other IRC clients, but this command is really more powerful...[br]
+ Before attempting to understand the possibilities of this command,
+ be sure to know how a [doc:dcc_connection]DCC negotiation and connection[/doc] works.[br]
+ The file will be sent as a sequence of packets which must
+ be acknowledged one by one by the active client.[br]
+ There is a special option (see $option()) called "fast send" (also known
+ as "send ahead") that makes KVIrc avoid to wait for the acknowledge
+ of the last packet before sending the next one.[br]
+ Anyway, the connection is declared as successful only
+ when the whole file (all the packets) has been acknowledged.[br]
+ If you need to send a file but you're firewalled, you might take
+ a look at the [cmd]dcc.rsend[/cmd] command. It also handles
+ the mIrc zero port protocol extension.
+ @examples:
+
+*/
+
+//#warning "Example for -r"
+//#warning "OPTION FOR NO GUI ? (this is hard...)"
+//#warning "When in IPv6 mode, should be able to use the IPv4 binding!"
+
+static bool dcc_kvs_cmd_send(KviKvsModuleCommandCall * c)
+{
+ QString szTarget,szFileName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("target",KVS_PT_NONEMPTYSTRING,0,szTarget)
+ KVSM_PARAMETER("file name",KVS_PT_NONEMPTYSTRING,KVS_PF_OPTIONAL,szFileName)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * d = new KviDccDescriptor(c->window()->console());
+
+ d->szNick = szTarget; // we always specify the nickname
+
+ QString szTmp;
+ KviKvsVariant * pSw = 0;
+
+ if(pSw = c->switches()->find('g',"get"))
+ {
+ d->szFileName = QFileInfo(szFileName).fileName();
+
+ if(!pSw->isBoolean())
+ {
+ kvs_int_t iSize;
+ if(pSw->asInteger(iSize)) // is an integer
+ {
+ pSw->asString(szTmp);
+ // avoid sprintf as long as possibile
+ d->szFileSize = szTmp;
+ } else {
+ d->szFileSize = __tr_ctx("<unknown size>","dcc");
+ }
+ }
+ } else {
+ d->szFileName = szFileName;
+ d->szLocalFileName = szFileName;
+ }
+
+ d->szUser = __tr2qs_ctx("unknown","dcc"); // username is always unknown
+ d->szHost = d->szUser; // host is always unknown
+ d->bRecvFile = pSw != 0;
+ d->bNoAcks = c->switches()->find('b',"blind") || c->switches()->find('t',"tdcc");
+ d->bResume = false;
+ d->bAutoAccept = pSw != 0;
+ d->bIsIncomingAvatar = false;
+
+ if(!dcc_kvs_parse_default_parameters(d,c))return false;
+
+ if(c->switches()->find('c',"connect"))
+ {
+ if(!(c->switches()->find('i',"ip") && c->switches()->find('p',"port")))
+ {
+ delete d;
+ c->error(__tr2qs_ctx("-c requires -i and -p","dcc"));
+ return false;
+ }
+ d->szIp = d->szListenIp;
+ d->szPort = d->szListenPort;
+ d->szListenIp = ""; // useless
+ d->szListenPort = ""; // useless
+ d->bActive = true;
+ } else {
+ d->szIp = __tr2qs_ctx("unknown","dcc");
+ d->szPort = d->szIp;
+ d->bActive = false;
+ d->bSendRequest = !c->switches()->find('n',"no-ctcp");
+ }
+
+ if(c->switches()->find('g',"get"))
+ {
+ dcc_module_set_dcc_type(d,"RECV");
+ d->triggerCreationEvent();
+ g_pDccBroker->recvFileManage(d);
+ } else {
+ dcc_module_set_dcc_type(d,"SEND");
+ d->triggerCreationEvent();
+ if(!d->szLocalFileName.isEmpty())
+ {
+ g_pDccBroker->sendFileExecute(0,d);
+ } else {
+ g_pDccBroker->sendFileManage(d);
+ }
+ }
+
+ return true;
+}
+
+/*
+ @doc: dcc.recv
+ @type:
+ command
+ @title:
+ dcc.recv
+ @short:
+ Sets up a file receiving connection
+ @syntax:
+ dcc.recv [-s] [-t] [-u] [-b] [-n] [-c] [-i=<interface>] [-p=<port>] [-m[=<boolean>]] <nickname> <filename> <remote file size>
+ @switches:
+ !sw: -b | --blind
+ Assume that no acknowledges are sent.
+ Assume that the transfer was successful when the whole file has been sent,
+ then close the socket.[br]
+ This is called a "blind" DCC send.[br]
+
+ !sw: -t | -tdcc
+ Emulate the TDCC protocol: Use the TDCC CTCP message (DCC TSEND) for requesting the connection
+ and assume that no acknowledges are sent. Wait for the remote end to close the connection.[br]
+
+ !sw: -m[=<boolean>] | --minimize[=<boolean>]
+ If the -m switch is passed, the default boolCreateMinimizedDccSend option
+ is overridden with the <boolean> parameter passed. So actually
+ by passing -m=1 will create a minimized DCC send even
+ if the [fnc]$option[/fnc](boolCreateMinimizedDccSend) returns false.[br]
+ In the same way, by passing -m=0 you will create a non minimized DCC send.
+ If no <boolean> value is specified, it defaults to 1.[br]
+
+ !sw: -n | --no-ctcp
+ Do NOT send the CTCP request to the target user, you will have to do it manually,
+ or the remote user will have to connect manually (for example by using dcc.recv -c).[br]
+
+ !sw: -i=<interface> | --ip=<interface>
+ Bind the local listening socket to the specified <interface> (which is an IP address, IPv4 or IPv6).
+ If this switch is NOT specified, the socket is bound to the interface of
+ the current IRC connection (if any) or to "127.0.0.1".[br]
+ You can also specify a local interface name to get the address from (this works only for IPv4 interfaces
+ since IPv6 ones seems to be unsupported by the system ioctl() calls at the moment (for linux at least)).[br]
+ Here go some examples:[br]
+ -i=215.243.12.12: this will bind to the IPv4 interface with the specified address.[br]
+ -i=3ffe:1001::1: this will bind to the IPv6 interface with the specified address.[br]
+ -i=ppp0: this will bind to the IPv4 address of the interface ppp0 (if supported by the underlying system).[br]
+ The -i switch parameter may serve also as a target address when the -c switch is used.[br]
+
+ !sw: -p=<port> | --port=<port>
+ Bind the local listening socket to the specified <port>.
+ If this switch is NOT specified, the port will be a "random" one choosen by the kernel.[br]
+
+ !sw: -a=<fake address> | --fake-address=<fake address>
+ Send the <fake address> as target for the remote client in the requesting CTCP message.
+ If this switch is not given, the CTCP will contain the real IP address of the listening
+ interface.[br]
+
+ !sw: -f=<fake port> | --fake-port=<fake port>
+ Send the <fake port> as target port for the remote client in the requesting CTCP message.
+ If this switch is not given, the CTCP will contain the real port of the listening socket.
+ [br][br]
+ All these switches are meant to allow maximum flexibility of the
+ DCC negotiation, earlier KVIrc releases had serious problems
+ with firewalled and/or masqueraded machines. With the -a and -f switches
+ you can work around it.[br]
+ [br]
+
+ !sw: -u | --unlimited
+ If the 'u' switch is given, the connection attempt will
+ never time out; this might be useful if you want to leave
+ a listening socket for a friend of yours while you are sleeping
+ and have the CTCP processing disabled. The 'u' switch works either
+ in active and passive mode.[br]
+
+ !sw: -s | --ssl
+ Use a Secure Socket Layer for the transfer; the whole communication will be encrypted
+ with a private key algorithm after a public key handshake.[br]
+ This option will work only if the KVIrc executable has been compiled with SSL support
+ and the remote end supports the SSL protocol too.[br]
+ Please note that this will may down the transfer somewhat.[br]
+ -s can be combined with -t.[br]
+ The CTCP negotiation will use SSEND as parameter (or eventually TSSEND).[br]
+ When requesting a SSL based DCC send to someone you probably will need a
+ certificate. If you don't have one, create it (for example with CA.pl -newcert)
+ and set it in the options dialog.
+
+ !sw: -c | --connect
+ Accepted for compatibility: don't use it!
+ @description:
+ Sets up a connection ready to receive a file.[br]
+ In most 'common' cases you will not need this command, you might want to use [cmd]dcc.get[/cmd] instead.[br]
+ This works like dcc.send but has two main differences: The file is INCOMING, and the CTCP sent to the other side
+ is a CTCP RECV.[br]
+ This command is the counterpart of [cmd]dcc.send[/cmd] and its parameters are exactly the same, so please refer to that
+ help page for the full discussion. This help page contains only a brief resume of these parameters.[br]
+ The [doc:dcc_connection]dcc documentation[/doc] explains the DCC Recv subprotocol in detail.[br]
+ @examples:
+
+*/
+
+//#warning "ENCODE THE CTCP'S!!!!!!!"
+//#warning "DOCS FOR dcc.recv (examples!)"
+
+static bool dcc_kvs_cmd_recv(KviKvsModuleCommandCall * c)
+{
+ QString szTarget,szFileName;
+ kvs_uint_t uSize;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("target",KVS_PT_NONEMPTYSTRING,0,szTarget)
+ KVSM_PARAMETER("filename",KVS_PT_NONEMPTYSTRING,0,szFileName)
+ KVSM_PARAMETER("size",KVS_PT_UINT,0,uSize)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * d = new KviDccDescriptor(c->window()->console());
+ d->szNick = szTarget;
+ d->szUser = __tr2qs_ctx("unknown","dcc");
+ d->szHost = d->szUser;
+ d->szIp = __tr2qs_ctx("unknown","dcc");
+ d->szPort = d->szIp;
+
+ // -c is senseless here...but we accept it for compatibility
+
+ if(!dcc_kvs_parse_default_parameters(d,c))return false;
+
+ d->szFileName = szFileName;
+ d->szFileSize.setNum(uSize);
+
+ d->bActive = false; // we have to listen!
+ d->bResume = false;
+ d->bRecvFile = true; // we have to receive the file!
+ d->bSendRequest = !c->switches()->find('n',"no-ctcp");
+ d->bNoAcks = d->bIsTdcc || c->switches()->find('b',"blind");
+ d->bAutoAccept = KVI_OPTION_BOOL(KviOption_boolAutoAcceptDccSend);
+ d->bIsIncomingAvatar = g_pApp->findPendingAvatarChange(d->console(),d->szNick,d->szFileName);
+
+ if(KVI_OPTION_BOOL(KviOption_boolAutoAcceptIncomingAvatars))d->bAutoAccept = d->bAutoAccept || d->bIsIncomingAvatar;
+ dcc_module_set_dcc_type(d,"RECV");
+ d->triggerCreationEvent();
+ g_pDccBroker->recvFileManage(d);
+
+ return true;
+}
+
+/*
+ @doc: dcc.rsend
+ @type:
+ command
+ @title:
+ dcc.rsend
+ @short:
+ Sends a file by using the Reverse DCC Send protocol
+ @syntax:
+ dcc.rsend [-s] [-t] <nickname> [filename]
+ @switches:
+ !sw: -t | -tdcc
+ Emulate the TDCC protocol.
+
+ !sw: -s | --ssl
+ Use a Secure Socket Layer for the transfer; the whole communication will be encrypted
+ with a private key algorithm after a public key handshake.[br]
+ This option will work only if the KVIrc executable has been compiled with SSL support
+ and the remote end supports the SSL protocol too.[br]
+ Please note that this will may down the transfer somewhat.[br]
+ -s can be combined with -t.[br]
+ The CTCP negotiation will use SSEND as parameter (or eventually TSSEND).[br]
+ When requesting a SSL based DCC send to someone you probably will need a
+ certificate. If you don't have one, create it (for example with CA.pl -newcert)
+ and set it in the options dialog.
+ !sw: -z | --zero-port
+ Use the 0 port method. This is a dirty hack that allows you to use the RSEND
+ protocol with mIrc receiving clients.
+ @description:
+ Sends a DCC RSEND request to <nickname> notifying him that you want to
+ send him the file [filename].[br]
+ The remote end may acknowledge the request by sending a DCC RECV request.
+ This command effects are similar to [cmd]dcc.send[/cmd], but will work also on machines
+ that can't accept incoming connections (firewalling or masquerading problems).[br]
+ A 120 seconds file offer is added for the specified file and mask "<nickname>!*@*".
+ @examples:
+
+*/
+
+//#warning "ENCODE THE CTCP'S!!!!!!!"
+//#warning "DOCS FOR dcc.rsend"
+
+static bool dcc_kvs_cmd_rsend(KviKvsModuleCommandCall * c)
+{
+ QString szTarget,szFileName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("target",KVS_PT_NONEMPTYSTRING,0,szTarget)
+ KVSM_PARAMETER("filename",KVS_PT_NONEMPTYSTRING,KVS_PF_OPTIONAL,szFileName)
+ KVSM_PARAMETERS_END(c)
+
+ KVSM_REQUIRE_CONNECTION(c)
+
+ KviDccDescriptor * d = new KviDccDescriptor(c->window()->console());
+ d->szNick = szTarget;
+ d->szLocalFileName = szFileName;
+ d->bIsTdcc = c->switches()->find('t',"tdcc");
+#ifdef COMPILE_SSL_SUPPORT
+ d->bIsSSL = c->switches()->find('s',"ssl");
+#else
+ if(c->switches()->find('s',"ssl"))c->warning(__tr2qs_ctx("This executable has been built without SSL support, -s switch ignored","dcc"));
+#endif //!COMPILE_SSL_SUPPORT
+
+ if(c->switches()->find('z',"zero-port"))
+ {
+ dcc_module_set_dcc_type(d,"SEND");
+ d->setZeroPortRequestTag("nonempty"); // just to tag it
+ } else
+ dcc_module_set_dcc_type(d,"RSEND");
+ d->triggerCreationEvent();
+ g_pDccBroker->rsendManage(d);
+
+ return true;
+}
+
+
+
+
+/*
+ @doc: dcc.get
+ @type:
+ command
+ @title:
+ dcc.get
+ @short:
+ Requests a file
+ @syntax:
+ dcc.get [-s] [-t] <nickname> <filename> [filesize]
+ @description:
+ Sends a CTCP DCC GET to <nickname> requesting the file <filename>.
+ The remote end should reply with a DCC SEND request CTCP.
+ <filename> must not contain any leading path.
+ If the -t switch is given, the message is a DCC TGET, expecting
+ a TSEND reply.[br]
+ If the -s switch is given, the message will be a DCC SGET, expecting
+ a SSEND reply.[br]
+ -t and -s can be combined together to obtain a "turbo"+"SSL" extension transfer.[br]
+ -s will work only if the KVIrc executable has been compiled with SSL support and
+ the remote client supports it.[br]
+ @examples:
+
+*/
+
+//#warning "ENCODE THE CTCP'S!!!!!!!"
+//#warning "DOCS FOR dcc.get"
+
+static bool dcc_kvs_cmd_get(KviKvsModuleCommandCall * c)
+{
+ QString szTarget,szFileName;
+ kvs_uint_t uSize;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("target",KVS_PT_NONEMPTYSTRING,0,szTarget)
+ KVSM_PARAMETER("filename",KVS_PT_NONEMPTYSTRING,0,szFileName)
+ KVSM_PARAMETER("size",KVS_PT_UINT,KVS_PF_OPTIONAL,uSize)
+ KVSM_PARAMETERS_END(c)
+
+ KVSM_REQUIRE_CONNECTION(c)
+
+ KviQString::cutToLast(szFileName,'/');
+
+ if(szFileName.contains(' '))
+ {
+ szFileName.prepend('"');
+ szFileName.append('"');
+ }
+
+ KviStr szDCC("GET");
+#ifdef COMPILE_SSL_SUPPORT
+ if(c->switches()->find('s',"ssl"))szDCC.prepend('S');
+#else
+ if(c->switches()->find('s',"ssl"))c->warning(__tr2qs_ctx("This executable has no SSL support, -s switch ignored","dcc"));
+#endif
+ if(c->switches()->find('t',"tdcc"))szDCC.prepend('T');
+
+ if(uSize == 0)
+ {
+ c->window()->console()->connection()->sendFmtData("PRIVMSG %s :%cDCC %s %s%c",
+ c->window()->console()->connection()->encodeText(szTarget).data(),
+ 0x01,
+ c->window()->console()->connection()->encodeText(szDCC.ptr()).data(),
+ c->window()->console()->connection()->encodeText(szFileName).data(),
+ 0x01);
+ } else {
+ c->window()->console()->connection()->sendFmtData("PRIVMSG %s :%cDCC %s %s %u%c",
+ c->window()->console()->connection()->encodeText(szTarget).data(),
+ 0x01,
+ c->window()->console()->connection()->encodeText(szDCC.ptr()).data(),
+ c->window()->console()->connection()->encodeText(szFileName).data(),
+ uSize,0x01);
+ }
+
+ return true;
+}
+
+
+
+
+// FIXME: SSL support for DCC VOICE ? (has a sense ?)
+
+/*
+ @doc: dcc.voice
+ @type:
+ command
+ @title:
+ dcc.voice
+ @short:
+ Starts a DCC Voice connection
+ @syntax:
+ dcc.voice [-g=<codec>] [-n] [-c] [-u] [-h=<sample_rate_in_hz>] [-m[=<boolean>]] [-i=<interface>] [-p=<port>] [-a=<fake address>] [-f=<fake port>] <nickname>
+ @switches:
+ !sw: -g=<codec> | --codec=<codec>
+ Use the codec specified as parameter.
+ Actually the supported codecs are "null","adpcm" and "gsm".
+
+ !sw: -h=<rate> | --sample-rate=<rate>
+ Use the sample rate specified by <rage>.
+ Valid sample rates are 8000, 11025, 22050 and 44100 Hz.
+
+ !sw: -m[=<boolean>] | --minimize[=<boolean>]
+ If the -m switch is passed, the default boolCreateMinimizedDccSend option
+ is overridden with the <boolean> parameter passed. So actually
+ by passing -m=1 will create a minimized DCC send even
+ if the [fnc]$option[/fnc](boolCreateMinimizedDccSend) returns false.[br]
+ In the same way, by passing -m=0 you will create a non minimized DCC send.
+ If no <boolean> value is specified, it defaults to 1.[br]
+
+ !sw: -n | --no-ctcp
+ Do NOT send the CTCP request to the target user, you will have to do it manually,
+ or the remote user will have to connect manually (for example by using dcc.recv -c).[br]
+
+ !sw: -c | --connect
+ Attempt to CONNECT to the remote host specified as <interface> and <port>,
+ instead of listening (active connection instead of a passive one).
+ In this case the -i and -p switches are mandatory.[br]
+ The 'c' switch takes precedence over 'n' (In fact both should
+ be mutually exclusive).[br]
+ If the 'c' and 'n' switches are missing, this commands
+ needs to be executed in a window that is bound to a connected
+ IRC context (you need a third entity to accomplish the negotiation).[br]
+
+ !sw: -i=<interface> | --ip=<interface>
+ Bind the local listening socket to the specified <interface> (which is an IP address, IPv4 or IPv6).
+ If this switch is NOT specified, the socket is bound to the interface of
+ the current IRC connection (if any) or to "127.0.0.1".[br]
+ You can also specify a local interface name to get the address from (this works only for IPv4 interfaces
+ since IPv6 ones seems to be unsupported by the system ioctl() calls at the moment (for linux at least)).[br]
+ Here go some examples:[br]
+ -i=215.243.12.12: this will bind to the IPv4 interface with the specified address.[br]
+ -i=3ffe:1001::1: this will bind to the IPv6 interface with the specified address.[br]
+ -i=ppp0: this will bind to the IPv4 address of the interface ppp0 (if supported by the underlying system).[br]
+ The -i switch parameter may serve also as a target address when the -c switch is used.[br]
+
+ !sw: -p=<port> | --port=<port>
+ Bind the local listening socket to the specified <port>.
+ If this switch is NOT specified, the port will be a "random" one choosen by the kernel.[br]
+
+ !sw: -a=<fake address> | --fake-address=<fake address>
+ Send the <fake address> as target for the remote client in the requesting CTCP message.
+ If this switch is not given, the CTCP will contain the real IP address of the listening
+ interface.[br]
+
+ !sw: -f=<fake port> | --fake-port=<fake port>
+ Send the <fake port> as target port for the remote client in the requesting CTCP message.
+ If this switch is not given, the CTCP will contain the real port of the listening socket.
+ [br][br]
+ All these switches are meant to allow maximum flexibility of the
+ DCC negotiation, earlier KVIrc releases had serious problems
+ with firewalled and/or masqueraded machines. With the -a and -f switches
+ you can work around it.[br]
+ [br]
+
+ !sw: -u | --unlimited
+ If the 'u' switch is given, the connection attempt will
+ never time out; this might be useful if you want to leave
+ a listening socket for a friend of yours while you are sleeping
+ and have the CTCP processing disabled. The 'u' switch works either
+ in active and passive mode.[br]
+
+ @description:
+ Attempts a DCC Voice connection to <nickname>.[br]
+ The -g option is used to select the GSM codec, available codecs are "gsm", "adpcm" and "null".[br]
+ The adpcm codec is the one that was used in previous KVIrc versions, it provides a 1:4 compression rate
+ and is designed for 8 KHz audio sampling rate (but will work also with other sampling rates).[br]
+ The gsm codec offers 1:10 compression at the cost of some quality and cpu time. If you have a good
+ cpu and plan to transmit voice only, use this codec.<br> The null codec
+ offers no compression and may be used to transfer plain audio data over a fast connection (usually loopback
+ connection or local networks). The null codec with 44100 sampling rate would provide CD quality audio
+ streaming, but it is practically not usable (at the time I'm writing) since requires a
+ monster bandwidth. If the -g switch is not present, the adpcm codec is used by default (for compatibility reasons).[br]
+ The -h switch is used to select the sampling rate, if not given the sampling rate defaults to 8000 Hz.
+ This switch accepts any value, but in fact the soundcards have limits on the values. Typically
+ the lowest limit is 5 KHz and the upper limit is 44.1 KHz (but some soundcards support 96 KHz).
+ It is also possible that the soundcard can't support a continous range of frequencies and
+ will select a discrete closest match instead.[br]
+ The "commonly used" sample rates are 8000, 11025, 22050 and 44100 Hz.[br]
+ The remaining parameters are equivalent to the ones used in [cmd]dcc.send[/cmd], so please refer to that
+ help page for the full discussion. This help page contains only a brief resume of these parameters.[br]
+ @examples:
+ [example]
+ [comment]# Setup a DCC VOICE connection with Pragma (IRC user)[/comment]
+ dcc.voice Pragma
+ [comment]# Setup a DCC VOICE connection with Pragma and use the gsm codec[/comment]
+ dcc.voice -g=gsm Pragma
+ [comment]# Setup a DCC VOICE connection with Pragma, use the gsm codec and 22050 Hz sampling rate[/comment]
+ dcc.voice -g=gsm -h=22050 Pragma
+ [comment]# Setup a listening socket for a DCC VOICE connection on interface 127.0.0.1 and port 8088[/comment]
+ dcc.voice -n -i=127.0.0.1 -p=8088 Pippo
+ [comment]# Connect to the socket above[/comment]
+ dcc.voice -c -i=127.0.0.1 -p=8088 Pluto
+ [comment]# Same as above but use the NULL codec with 11025 Hz sampling rate[/comment]
+ dcc.voice -g=null -h=11025 -n -i=127.0.0.1 -p=8088 Pippo
+ [comment]# Connect to the socket above[/comment]
+ dcc.voice -g=null -h=11025 -c -i=127.0.0.1 -p=8088 Pluto
+ [/example]
+*/
+
+static bool dcc_kvs_cmd_voice(KviKvsModuleCommandCall * c)
+{
+ QString szTarget;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("target",KVS_PT_NONEMPTYSTRING,0,szTarget)
+ KVSM_PARAMETERS_END(c)
+
+#ifdef COMPILE_DISABLE_DCC_VOICE
+ c->warning(__tr2qs_ctx("DCC VOICE support not enabled at compilation time","dcc"));
+ return true;
+#endif
+
+ KviDccDescriptor * d = new KviDccDescriptor(c->window()->console());
+
+ d->szNick = szTarget; // we always specify the nickname
+ d->szUser = __tr2qs_ctx("unknown","dcc"); // username is always unknown
+ d->szHost = d->szUser; // host is always unknown
+ d->iSampleRate = 8000;
+
+ if(!dcc_kvs_parse_default_parameters(d,c))return false;
+
+ if(KviKvsVariant * pSR = c->switches()->find('h',"sample-rate"))
+ {
+ kvs_int_t iSR;
+ if(!pSR->asInteger(iSR))
+ {
+ c->warning(__tr2qs_ctx("Invalid sample rate specified, defaulting to 8000","dcc"));
+ d->iSampleRate = 8000;
+ } else {
+ d->iSampleRate = iSR;
+ }
+ }
+
+ d->szCodec = "adpcm";
+
+ if(KviKvsVariant * pCodec = c->switches()->find('g',"codec"))
+ {
+ QString szCodec;
+ pCodec->asString(szCodec);
+
+ if(!kvi_dcc_voice_is_valid_codec(szCodec))
+ {
+ c->warning(__tr2qs_ctx("Invalid codec specified, defaulting to 'adpcm'","dcc"));
+ d->szCodec = "adpcm";
+ }
+ }
+
+ dcc_module_set_dcc_type(d,"VOICE");
+ if(c->switches()->find('c',"connect"))
+ {
+ if(!(c->switches()->find('i',"ip") && c->switches()->find('p',"port")))
+ {
+ delete d;
+ c->error(__tr2qs_ctx("-c requires -i and -p","dcc"));
+ return false;
+ }
+ d->szIp = d->szListenIp;
+ d->szPort = d->szListenPort;
+ d->szListenIp = ""; // useless
+ d->szListenPort = ""; // useless
+ d->bActive = true;
+
+ d->triggerCreationEvent();
+ g_pDccBroker->activeVoiceExecute(0,d);
+ } else {
+ d->szIp = __tr2qs_ctx("unknown","dcc");
+ d->szPort = d->szIp;
+ d->bActive = false;
+ d->bSendRequest = !(c->switches()->find('n',"no-ctcp"));
+
+ d->triggerCreationEvent();
+ g_pDccBroker->passiveVoiceExecute(d);
+ }
+
+ return true;
+}
+
+
+
+
+/*
+static bool dcc_module_cmd_canvas(KviModule *m,KviCommand *c)
+{
+ ENTER_STACK_FRAME(c,"dcc_module_cmd_canvas");
+
+ KviStr target;
+ if(!g_pUserParser->parseCmdFinalPart(c,target))return false;
+
+ if(target.isEmpty())return c->error(KviError_notEnoughParameters,"%s",__tr_ctx("Missing target nickname","dcc"));
+
+ KviDccDescriptor * d = new KviDccDescriptor(c->window()->console());
+
+ d->szNick = target.ptr(); // we always specify the nickname
+ d->szUser = __tr2qs_ctx("unknown","dcc"); // username is always unknown
+ d->szHost = d->szUser; // host is always unknown
+*/
+/*
+ d->bIsTdcc = c->hasSwitch('t');
+
+ d->bOverrideMinimize = c->hasSwitch('m');
+
+ if(d->bOverrideMinimize)
+ {
+ KviStr tmpVal;
+ if(!(c->getSwitchValue('m',tmpVal)))d->bShowMinimized = false;
+ else d->bShowMinimized = kvi_strEqualCI(tmpVal.ptr(),"1");
+ }
+
+
+ if(!d->console())
+ {
+ // We don't need a console with -c and -n , otherwise we need it
+ if(!(c->hasSwitch('c') || c->hasSwitch('n')))return c->noIrcContext();
+ else d->console() = c->window()->frame()->firstConsole();
+ }
+
+ __range_valid(d->console());
+
+ if(!d->console()->isConnected())
+ {
+ // We don't need a connection with -c and -n , otherwise we need it
+ if(!(c->hasSwitch('c') || c->hasSwitch('n')))return c->notConnectedToServer();
+ else {
+ // -c or -n , grab a local nick from somewhere
+ d->szLocalNick = KVI_OPTION_STRING(KviOption_stringNickname1);
+ d->szLocalNick.stripWhiteSpace();
+ if(d->szLocalNick.isEmpty())d->szLocalNick = KVI_DEFAULT_NICKNAME1;
+ d->szLocalUser = __tr("unknown"); // we can live without it
+ d->szLocalHost = d->szLocalUser; // we can live without it
+ }
+ } else {
+ // We know everything
+ d->szLocalNick = d->console()->currentNickName();
+ d->szLocalUser = d->console()->currentUserName();
+ d->szLocalHost = d->console()->currentLocalHostName();
+ }
+
+
+ if(c->hasSwitch('i'))
+ {
+ c->getSwitchValue('i',d->szListenIp);
+ if(!(d->szListenIp.contains('.') || d->szListenIp.contains(':')))
+ {
+ // This will magically work with the same buffer as source and dst!
+ if(!kvi_getInterfaceAddress(d->szListenIp.ptr(),d->szListenIp))
+ {
+ return c->error(KviError_invalidParameter,__tr("Can't get address of interface %s"),d->szListenIp.ptr());
+ }
+ }
+ } else {
+ if(d->console()->isConnected())
+ {
+ d->console()->socket()->getLocalHostIp(d->szListenIp,d->console()->isIpV6Connection());
+ } else d->szListenIp = "127.0.0.1"; // huh ? :)
+ }
+
+ if(c->hasSwitch('p'))c->getSwitchValue('p',d->szListenPort);
+ else d->szListenPort = "0"; // any port is ok
+
+ if(c->hasSwitch('a'))c->getSwitchValue('a',d->szFakeIp);
+
+ if(c->hasSwitch('f'))c->getSwitchValue('f',d->szFakePort);
+
+ d->bDoTimeout = (!c->hasSwitch('u'));
+
+*/
+/*
+ if(!dcc_module_parse_default_parameters(d,c))return false;
+ dcc_module_set_dcc_type(d,"VOICE");
+
+ if(c->hasSwitch('c'))
+ {
+ if(!(c->hasSwitch('i') && c->hasSwitch('p')))
+ {
+ delete d;
+ return c->error(KviError_notEnoughParameters,__tr_ctx("-c requires -i and -p","dcc"));
+ }
+ d->szIp = d->szListenIp;
+ d->szPort = d->szListenPort;
+ d->szListenIp = ""; // useless
+ d->szListenPort = ""; // useless
+ d->bActive = true;
+
+ d->triggerCreationEvent();
+ g_pDccBroker->activeCanvasExecute(0,d);
+ } else {
+ d->szIp = __tr2qs_ctx("unknown","dcc");
+ d->szPort = d->szIp;
+ d->bActive = false;
+ d->bSendRequest = !c->hasSwitch('n');
+
+ d->triggerCreationEvent();
+ g_pDccBroker->passiveCanvasExecute(d);
+ }
+
+ return c->leaveStackFrame();
+}
+*/
+
+
+
+
+
+/*
+ @doc: dcc_connection
+ @type:
+ generic
+ @title:
+ DCC negotiation and connection
+ @short:
+ Overview of the DCC internals
+ @keyterms:
+ DCC without IRC
+ @body:
+ [big]What is DCC?[/big][br]
+ 'DCC' stands for Direct Client Connection, it is used to exchange data
+ directly between two IRC clients (with no IRC server in the middle).[br]
+ DCC itself is not a well-defined protocol, but rather a set of
+ subprotocols with (more or less) standardized rules.[br]
+ Sub-protocols are also (historically) called [b]"DCC types"[/b]; this term often
+ leads to confusion and it will become clear later.[br]
+ Each subprotocol has two main parts: The [b]DCC negotiation[/b] and the [b]DCC transfer[/b].[br]
+ The [b]DCC negotiation[/b] part is used to request the [b]DCC transfer[/b] and define its necessary parameters,[br]
+ while the [b]DCC transfer[/b] part is the real data transfer between clients.[br]
+ The [b]DCC negotiation[/b] requires a third entity that routes the negotiation data between clients,
+ this is usually an IRC server.[br]
+ [br]
+ [big]DCC Negotiation[/big][br]
+ This part of the protocol is the most tricky and difficult one, and is different for almost every DCC subprotocol.[br]
+ The "constant" scenario of the negotiation is more or less the following:[br]
+ There are two IRC clients connected to the same IRC network and they want to exchange some data in
+ a direct client connection.[br]
+ Each client knows the other by nickname only (and eventually by the host displayed by the IRC server,
+ but this cannot be trusted for several reasons), and can send text messages to each other by using the
+ IRC network as data channel.[br]
+ To initiate a direct client connection, one of the clients must start listening on some port (this is called [b]passive client[/b])
+ and the other must connect to that port on the first client's machine (this is the [b]active client[/b]).[br]
+ Both clients must agree on who is the passive and who is the active client. The active client must also
+ know the passive client's IP address and port (in order to be able to contact it).[br]
+ Finally, both clients must agree on the transfer type that has to be initiated.[br]
+ The negotiation exchanges these informations between clients by using IRC as channel and CTCP messages
+ as encoding method.[br]
+ An example will make things clearer:[br]
+ DCC Chat is the simplest (and most widely implemented) DCC subprotocol:
+ it is used to exchange <cr><lf> separated text data between clients.[br]
+ Assume that you want to establish a DCC Chat
+ connection to 'Sarah' that is actually connected to your IRC network (so
+ she/he is an IRC user just like you).
+ All you have to do is type sth as "/dcc chat Sarah" in your IRC client.
+ The client will setup a listening socket on a random port choosen
+ usually by the kernel of your OS. In this case YOU are the [b]passive client[/b], and Sarah is the active one.[br]
+ Once the socket is ready to accept connections,
+ your client will send a [doc:ctcp_handling]CTCP message[/doc] to Sarah using the IRC connection (and protocol) as channel:[br]
+ PRIVMSG Sarah :<0x01>DCC CHAT chat <ip_address> <port><0x01>[br]
+ where <ip_address> is the address of the listening socket and <port>
+ is the port that it has been bound to (these informations are obtained
+ after the socket has been setup). Once Sarah has received the CTCP message,
+ and agreed to connect, her (active) client will attempt to connect to the
+ specified <ip_address> and <port> (eg. to your listening socket).[br]
+ Once the connection has been established, it continues using the
+ specific CHAT transfer protocol.[br]
+ Some IRC clients allow modifications of this procedure:[br]
+ First of all, the port to listen on can be specified by the user
+ and not by the kernel; this is useful when the passive client
+ is behind a firewall that "shades" some sets of ports.
+ The ip address for the listening socket
+ can be specified by the user as well (especially when the machine has more than one network interface).[br]
+ A more challenging trick is to listen on a specified ip address and port
+ and notify different ones to the remote user (eg, <ip_address> and <port>
+ parameters of the CTCP message are not the ones that the client is listening on).
+ This is especially useful with "transparent proxy" firewalls that
+ often are not transparent enough to allow the DCC connections.
+ (If you have one of these firewalls you know what I'm talking about,
+ otherwise just read on). KVIrc allows to avoid the usage of a third entity
+ for the protocol negotiation too.
+ You can setup a listening socket on a specified port and ip address
+ without notyfying anyone of this.
+ You can also manually connect to a specified port and ip address without
+ having been notified of a DCC request.[br][br][br]
+ Is everything clear ?...I don't think so... my English is really too bad...
+ [br]
+ [big]DCC Transfer[/big][br]
+ The DCC transfer part is different for every DCC subprotocol, but
+ it always happens over a direct client to client TCP connection.[br]
+ [br]
+ [big]DCC Subprotocols[/big][br]
+ There are two main standardized DCC subprotocols that are widely implemented in IRC clients:
+ [b]DCC Chat[/b] and [b]DCC Send[/b].[br]
+ DCC Chat is quite simple and the protocol is more or less completely defined.[br]
+ DCC Send is a *real mess*, the original definition was not very flexible
+ so many IRC clients tried to enchance both the negotiation and the transfer, leading
+ often to incompatible implementations. (I can remember the Turbo File Transfer implemented
+ by VIrc, the Send-Ahead enchancement implemented in many clients, the RESUME facility...)[br]
+ Many clients introduced new DCC subprotocols with non-standard implementations,
+ leading again to client incompatibility.[br]
+ Some of the notable subprotocols are DCC Voice, DCC Draw, DCC Whiteboard...[br]
+ [br]
+ [big]DCC Chat[/big][br]
+ This is the simplest and most standardized DCC subprotocol. Almost every IRC client implements it.[br]
+ It is used to exchange lines of text between the two clients.[br]
+ The negotiation is quite simple, we assume that Client A wants to establish a DCC Chat connection to Client B.
+ Client A sets up a listening socket and retrieves its adress (ip address and port).[br]
+ Once the socket is ready Client A sends a CTCP request to B, in the following form:[br]
+ [b]DCC CHAT chat <ipaddress> <port>[/b][br]
+ Where <ipaddress> is a string representing an positive integer that is the A socket's IP address
+ in network byte order, and where <port> is a string representing an positive integer that is the
+ A socket's port.[br]
+ The original purpose of the second "chat" string in the CTCP request is quite obscure, it was probably
+ introduced to have the <ipaddress> as second parameter, as in the DCC Send subprotocol.[br]
+ Client B receives the CTCP, parses it, eventually asks the user for permission and connects
+ to the specified ip address and port.
+ The transfer protocol is quite simple, both clients can send text lines separated by <cr><lf> pairs.[br]
+ Some clients use only <lf> as line terminator so the general idea is that one of <cr> <cr><lf> or <lf>
+ can be used as line terminator.[br]
+ As extension to the protocol, KVIrc allows <ipaddress> to be an IPv6 address in the standard hexadecimal
+ notation, the connection will be made over the IPv6 protocol in this case (obviously if both clients
+ support this feature).[br]
+ (It is not clear why the original DCC specification used the unsigned int format instead of a
+ standard string representation of the IP address... missing inet_aton() function on the target system?).[br]
+ KVIrc adds the Secure Sockets Layer to the DCC Chat protocol. In this case the negotiation string becomes:[br]
+ [b]DCC SCHAT chat <ipaddress> <port>[/b][br]
+ where "SCHAT" stands for Secure CHAT.[br] The external protocol is exactly the same but is built on top of a Secure Sockets Layer
+ implementation (specifically OpenSSL). The connection will be encrypted with a private key algorithm after
+ a public key handshake.[br]
+ [br]
+ [big]DCC Send[/big][br]
+ DCC Send is another standard subprotocol. Most clients implement this as well, many have tried
+ to enchance it.[br]
+ The basic DCC Send protocol allows transferring a file from the requesting client to the receiving client.[br]
+ The requesting client (the one that sends the file) is always passive and the receiving client is always active.[br]
+ This is a huge protocol limitation since firewalled clients are often unable to accept incoming connections.[br]
+ The negotiation protocol is more complex than DCC Chat; we assume that Client A wants to send the file F to Client B.[br]
+ Client A sets up a listening socket and retrieves its ip address and port.[br]
+ Client A sends a CTCP request to Client B in the following form:[br]
+ [b]DCC SEND <filename> <ipaddress> <port> <filesize>[/b][br]
+ <ipaddress> and <port> have the same semantics as in the DCC Chat subprotocol.[br]
+ <filename> is the name (without path!) of the file to be sent, and <filesize> is (yeah), the file size.[br]
+ Client B receives the CTCP, parses it, eventually asks the user for confirmation and connects to the
+ specified ip address and port; the transfer then begins.[br]
+ Client A sends blocks of data (usually 1-2 KB) and at every block awaits confirmation from the Client B,
+ that when receiving a block should reply 4 bytes containing an positive number specifying the total size
+ of the file received up to that moment.[br]
+ The transmission closes when the last acknowledge is received by Client A.[br]
+ The acknowledges were meant to include some sort of coherency check in the transmission, but in fact
+ no client can "recover" from an acknowledge error/desync, all of them just close the connection declaring the
+ transfer as failed (the situation is even worse in fact, often acknowledge errors aren't even detected!).[br]
+ Since the packet-acknowledge round trip eats a lot of time, many clients included
+ the "send-ahead" feature; the Client A does NOT wait for the acknowledge of the first packet before sending the second one.[br]
+ The acknowledges are still sent, but just a reverse independent stream.[br] This makes the DCC Send considerably faster.[br]
+ Since the acknowledge stream has non-zero bandwidth usage, no client can recover from an acknowledge error and
+ having them as an independant stream is more or less like having no acknowledges, the "Turbo" ( :) ) extension has been added:
+ Client B will send no acknowledges and will just close the connection when he has received all the expected data.[br]
+ This makes the DCC Send as fast as FTP transfers.[br]
+ The "Turbo" extension is specified during the negotiation phase, bu using TSEND as DCC message type (instead of SEND).[br]
+ The "Turbo" extension is not widely implemented.[br]
+ Later implementations have added the support for resuming interrupted DCC Send transfers:[br]
+ Client A sets up the socket and sends the CTCP request as before.[br]
+ If Client B discovers that the file has been partially received in a previous DCC Send session it sends
+ a resume request in the following form:[br]
+ [b]DCC RESUME <filename> <port> <resume position>[/b][br]
+ Where <port> is the <port> sent in the DCC SEND request and <resume position> is the position in the file
+ from where the transfer should start.[br]
+ Cilent A receives the request, parses it and eventually replies with:[br]
+ [b]DCC ACCEPT <filename> <port> <resume position>[/b][br]
+ Client B receives the ACCEPT message, connects to Client A and the transfer initiates as before.[br]
+ The "Send-ahead" and "Turbo" extensions can obviously be used also in this case (But 'T' is NOT prepended to the RESUME and ACCEPT messages).[br]
+ The IPv6 extension can be used also in this subprotocol, so <ipaddress> can be also an IPv6 address in hexadecimal notation.[br]
+ KVIrc introduces the SSL extension also to DCC Send. The protocol remains the same again but it is built on top of
+ a Secure Sockets Layer implementation just like DCC Chat.[br]
+ With SSL the negotiation string becomes:[br]
+ [b]DCC SSEND <filename> <ipaddress> <port> <filesize>[/b][br]
+ where "SSEND" stands for Secure SEND.[br]
+ The "turbo" extension can be combined with the SSL extension too. In this case the second parameter
+ of the negotiation string must be "TSSEND" or "STSEND".[br]
+ [br]
+ [big]DCC Recv[/big][br]
+ DCC Recv is the counterpart of DCC Send. This is a KVIrc extension and is not standard yet.[br]
+ The purpose of this subprotocol will not be immediately clear, but read on for an explanation.[br]
+ It is used to request a file from another client; we assume that Client A knows that Client B has
+ a specific file and is able/wants to send it.[br]
+ Client A sets up a listening socket, retrieves its address and port and then
+ sends a CTCP request to Client B in the following form:[br]
+ [b]DCC RECV <filename> <ipaddress> <port> <resume position>[/b][br]
+ where <filename> is the name of the requested file without path, <ipaddress> and <port> have the usual meaning and <resume position>
+ is the position from that the transfer should start from.[br]
+ <ipaddress> can be an IPv6 address as well.[br]
+ Client B receives the CTCP message, parses it, looks for the file to send (in some unspecified way)
+ and connects to the specified ip address and port. The transfer then begins just as in the DCC send, but in the inverse way:
+ Client B sends blocks of data to Client A and Client B sends back acknowledges.[br]
+ This subprotocol is useful in transferring data from clients that are behind a firewall and are not able to accept
+ incoming connections (this is not possible with a normal DCC Send). In this case the client that receives
+ the file is passive and the client that sends it is active (as opposite to DCC Send).[br]
+ The "Send ahead" extension can be used also in this case and the "Turbo" extension is activated by prepending a 'T' to the
+ DCC message, "TRECV" instead of "RECV". The SSL extension is activated by prepending an 'S' to the
+ DCC message, "SRECV", "STRECV" or "TSRECV".[br]
+ This subprotocol has an implicit resume capability and thus has no need for RESUME and ACCEPT messages.[br]
+ DCC Recv requires the initiating (passive) client to know that the file to be transferred is avaiable on the B's side
+ and probably also know the file size. This subprotocol does not specify how this information is obtained, but it
+ will become clear soon that it can be obtained either manually (User B can simply tell the info to User A),
+ or automatically (as in the DCC Rsend subprotocol (keep reading)).[br]
+ [br]
+ [big]DCC RSend[/big][br]
+ DCC RSend stands for Reverse Send. This is a KVIrc extension to the SEND protocol to allow firewalled clients
+ to send files.[br] In fact, this is a "half" subprotocol, since it defines only a part of the DCC negotiation;
+ the transfer is defined by another subprotocol (and specifically bu DCC Recv).[br]
+ The requesting client (the one that sends the file) is active and the receiving client is passive.[br]
+ Assume that Client A wants to send a file to Client B and that Client A cannot accept incoming connections.[br]
+ Client A sends a CTCP request to Client B in the following form:[br]
+ [b]DCC RSEND <filename> <filesize>[/b][br]
+ Client B receives the request, parses it, eventually asks the user for confirmation, sets up a listening socket, retrieves
+ its ip address and port and switches to the DCC Recv subprotocol by effectively sending the following CTCP message:[br]
+ [b]DCC RECV <filename> <ipaddress> <port> <resume position>[/b][br]
+ The rest of the transfer is defined by the DCC Recv subprotocol.[br]
+ The "Turbo" extension is again activated by prepending a 'T' to the RSEND string, so the initial CTCP will become:[br]
+ [b]DCC TRSEND <filename> <filesize>[/b][br]
+ The "SSL" extension is also activated by prepending an 'S' to the RSEND string. It can be again combined
+ with the "turbo" extension. The negotiation parameter becomes then "SRSEND","TSRSEND" or "STRSEND".[br]
+ Easy, no ? :)[br]
+ [br]
+ [big]DCC Get[/big][br]
+ This is again a "half" subprotocol in fact since it defines only a part of the negotiation for file transfers.[br]
+ It is also NON standard, since actually no client except KVIrc implements it (AFAIK).[br]
+ DCC Get is used to request a file from a remote client. Assume that Client A wants to request a file from Client B
+ (and assume that Client A knows that B has that file and wants to send it).[br]
+ Client A sends a CTCP message to Client B in the following form:[br]
+ [b]DCC GET <filename>[/b][br]
+ Where <filename> is a name of a file without path.[br]
+ Client B receives the message, parses it, looks for an association of the <filename> to a real filesystem file
+ and starts one of the two DCC File transfer subprotocols, DCC Send or DCC RSend.[br]
+ Client B should prefer the DCC Send method and choose DCC RSend only if it is not able to accept incoming connections.[br]
+ This subprotocol can be used by firewalled clients that can't accept connections but still want to request a file
+ from another client, this one can fail only if both clients are firewalled (in this case no DCC transfer is possible at all).[br]
+ This subprotocol also does not need to "magically" know the file size, the size definition
+ is found in the subprotocol that the remote client will choose.[br]
+ The association of <filename> with a real file on the B's machine is not explicitly defined by the subprotocol;
+ KVIrc uses an internal "file-offer" table with a list of files that are available for download.[br]
+ The "turbo" and "SSL" extensions are activated as usual, "TGET", "SGET", "TSGET" and "STGET" are supported.[br]
+ [br]
+ [big]DCC File Transfer[/big][br]
+ DCC Send: Send a file, sender is passive, receiver is active (not good for firewalled senders)[br]
+ DCC Recv: Receive a file, sender is active, receiver is passive (not good for firewalled receivers)[br]
+ DCC RSend: Send a file, sender is active, receiver is passive (not good for firewalled receivers)[br]
+ DCC Get: Receive a file, sender is passive if not firewalled, receiver active if sender not firewalled (will fail only if both are firewalled)[br]
+ The "turbo" extension disables the stream of acknowledges and is activated by prepending the 'T' character to the DCC subprotocol name[br]
+ The "SSL" extension causes a Secure Socket Layer to be used and is activated by prepending the 'S' character to the DCC subprotocol name[br]
+ [br]
+ [big]DCC Voice[/big][br]
+ DCC Voice is a KVIrc extension (there is a Windows client called VIrc that implements such
+ a protocol, but it is incompatible with KVIrc).[br]
+ DCC Voice allows audio level communication between two clients, the audio stream is compressed
+ with a specified codec.[br]
+ KVIrc currently supports the ADPCM (core support) and the GSM codec (if the libgsm is available on the target system).[br]
+ [b]TODO: Finish the DCC Voice doc :)[/b]
+ [big]More tricks[/big][br]
+ KVIrc supports another "hack" to the DCC negotiation, it recognizes "XDCC" as
+ a DCC negotiation CTCP parameter.[br]
+ This can be used to circumvent limitations of some IRC clients (read mIRC) that will not allow
+ you to send a /DCC GET since it is an unrecognized DCC type.[br]
+ "XDCC" has exactly the same meaning as "DCC" (at least in KVIrc).[br]
+*/
+
+static KviDccDescriptor * dcc_kvs_find_dcc_descriptor(const kvs_uint_t &uId,KviKvsModuleRunTimeCall * c,bool bWarn = true)
+{
+ KviDccDescriptor * dcc = 0;
+ if(uId == 0)
+ {
+ if(c->window()->inherits("KviDccWindow"))
+ {
+ dcc = ((KviDccWindow *)(c->window()))->descriptor();
+ }
+ if((!dcc) && bWarn)
+ c->warning(__tr2qs_ctx("The current window has no associated DCC session","dcc"));
+ return dcc;
+ }
+ dcc = KviDccDescriptor::find(uId);
+ if((!dcc) && bWarn)
+ c->warning(__tr2qs_ctx("The specified parameter is not a valid DCC identifier","dcc"));
+ return dcc;
+}
+
+
+/*
+ @doc: dcc.abort
+ @type:
+ command
+ @title:
+ dcc.abort
+ @short:
+ Aborts a dcc session
+ @syntax:
+ dcc.abort [-q] [dcc_id:uint]
+ @description:
+ Terminates the Direct Client Connection specified by <dcc_id>.[br]
+ If <dcc_id> is omitted then the DCC Session associated
+ to the current window is assumed.[br]
+ If <dcc_id> is not a valid DCC session identifier (or it is omitted
+ and the current window has no associated DCC session) then
+ this function doesn't abort anything and prints a warning unless the -q switch is used.[br]
+ If <dcc_id> refers to a file transfer then it the transfer is simply
+ terminated. If <dcc_id> refers to a dcc chat then the result
+ is equivalent to closing the related window.[br]
+ See the [module:dcc]dcc module[/module] documentation for more informations.[br]
+ @examples:
+*/
+
+static bool dcc_kvs_cmd_abort(KviKvsModuleCommandCall * c)
+{
+ kvs_uint_t uDccId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("dcc_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uDccId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = dcc_kvs_find_dcc_descriptor(uDccId,c,!c->switches()->find('q',"quiet"));
+
+ if(dcc)
+ {
+ if(dcc->transfer())dcc->transfer()->abort();
+ else if(dcc->window())dcc->window()->close();
+ }
+
+ return true;
+}
+
+/*
+ @doc: dcc.setBandwidthLimit
+ @type:
+ command
+ @title:
+ dcc.setBandwidthLimit
+ @short:
+ Set the bandwidthlimit of a dcc.send session.
+ @syntax:
+ dcc.setBandwidthLimit [-q] [dcc_id:uint]
+ @description:
+ Terminates the Direct Client Connection specified by <dcc_id>.[br]
+ If <dcc_id> is omitted then the DCC Session associated
+ to the current window is assumed.[br]
+ If <dcc_id> is not a valid DCC session identifier (or it is omitted
+ and the current window has no associated DCC session) then
+ this function prints a warning unless the -q switch is used.[br]
+ If <dcc_id> does not refers to a file transfer a warning will be printing unless the -q switch is used.[br]
+ See the [module:dcc]dcc module[/module] documentation for more informations.[br]
+ @examples:
+*/
+static bool dcc_kvs_cmd_setBandwidthLimit(KviKvsModuleCommandCall * c)
+{
+ kvs_uint_t uDccId,uVal;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("limit_value",KVS_PT_UINT,0,uVal)
+ KVSM_PARAMETER("dcc_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uDccId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = dcc_kvs_find_dcc_descriptor(uDccId,c,!c->switches()->find('q',"quiet"));
+ if(dcc)
+ {
+ if (dcc->transfer())dcc->transfer()->setBandwidthLimit(uVal);
+ else if (!c->switches()->find('q',"quiet"))c->warning(__tr2qs_ctx("This DCC session is not a DCC transfer session","dcc"));
+ }
+ return true;
+}
+
+/*
+ @doc: dcc.protocol
+ @type:
+ function
+ @title:
+ $dcc.protocol
+ @short:
+ Returns the protocol of the specified DCC
+ @syntax:
+ <string> $dcc.protocol
+ <string> $dcc.protocol(<dcc_id:uint>)
+ @description:
+ Returns the string describing the protocol of the
+ Direct Client Connection specified by <dcc_id>.[br]
+ If <dcc_id> is omitted then the DCC Session associated
+ to the current window is assumed.[br]
+ If <dcc_id> is not a valid DCC session identifier (or it is omitted
+ and the current window has no associated DCC session) then
+ this function prints a warning and returns an empty sting.[br]
+ See the [module:dcc]dcc module[/module] documentation for more informations.[br]
+*/
+
+static bool dcc_kvs_fnc_protocol(KviKvsModuleFunctionCall * c)
+{
+ kvs_uint_t uDccId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("dcc_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uDccId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = dcc_kvs_find_dcc_descriptor(uDccId,c);
+
+ if(dcc)c->returnValue()->setString(dcc->protocol());
+ return true;
+}
+
+
+/*
+ @doc: dcc.connectionType
+ @type:
+ function
+ @title:
+ $dcc.connectionType
+ @short:
+ Returns the connection type of the specified DCC
+ @syntax:
+ <string> $dcc.connectionType
+ <string> $dcc.connectionType(<dcc_id:uint>)
+ @description:
+ Returns the connection type of the specified DCC.[br]
+ Returns the string "ACTIVE" for active DCC connections
+ and the string "PASSIVE" for passive DCC connections.
+ If <dcc_id> is omitted then the DCC Session associated
+ to the current window is assumed.[br]
+ If <dcc_id> is not a valid DCC session identifier (or it is omitted
+ and the current window has no associated DCC session) then
+ this function prints a warning and returns an empty sting.[br]
+ See the [module:dcc]dcc module[/module] documentation for more informations.[br]
+*/
+
+static bool dcc_kvs_fnc_connectionType(KviKvsModuleFunctionCall * c)
+{
+ kvs_uint_t uDccId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("dcc_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uDccId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = dcc_kvs_find_dcc_descriptor(uDccId,c);
+
+ if(dcc)c->returnValue()->setString(dcc->isActive() ? "ACTIVE" : "PASSIVE");
+ return true;
+}
+
+
+/*
+ @doc: dcc.isFileTransfer
+ @type:
+ function
+ @title:
+ $dcc.isFileTransfer
+ @short:
+ Checks if a DCC is a file transfer
+ @syntax:
+ <boolean> $dcc.isFileTransfer
+ <boolean> $dcc.isFileTransfer(<dcc_id:uint>)
+ @description:
+ Returns 1 if the specified Direct Client Connection
+ is a file transfer and 0 otherwise.[br]
+ If <dcc_id> is omitted then the DCC Session associated
+ to the current window is assumed.[br]
+ If <dcc_id> is not a valid DCC session identifier (or it is omitted
+ and the current window has no associated DCC session) then
+ this and returns 0.[br]
+ See the [module:dcc]dcc module[/module] documentation for more informations.[br]
+*/
+
+static bool dcc_kvs_fnc_isFileTransfer(KviKvsModuleFunctionCall * c)
+{
+ kvs_uint_t uDccId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("dcc_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uDccId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = dcc_kvs_find_dcc_descriptor(uDccId,c,false);
+
+ if(dcc)c->returnValue()->setBoolean(dcc->isFileTransfer());
+ return true;
+}
+
+
+/*
+ @doc: dcc.isFileUpload
+ @type:
+ function
+ @title:
+ $dcc.isFileUpload
+ @short:
+ Checks if a DCC is an upload file transfer
+ @syntax:
+ <boolean> $dcc.isFileUpload
+ <boolean> $dcc.isFileUpload(<dcc_id:uint>)
+ @description:
+ Returns 1 if the specified Direct Client Connection
+ is an upload file transfer and 0 otherwise.[br]
+ If <dcc_id> is omitted then the DCC Session associated
+ to the current window is assumed.[br]
+ If <dcc_id> is not a valid DCC session identifier (or it is omitted
+ and the current window has no associated DCC session) then
+ this function prints a warning and returns 0.[br]
+ See the [module:dcc]dcc module[/module] documentation for more informations.[br]
+*/
+
+static bool dcc_kvs_fnc_isFileUpload(KviKvsModuleFunctionCall * c)
+{
+ kvs_uint_t uDccId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("dcc_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uDccId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = dcc_kvs_find_dcc_descriptor(uDccId,c);
+
+ if(dcc)c->returnValue()->setBoolean(dcc->isFileUpload());
+ return true;
+}
+
+
+/*
+ @doc: dcc.isFileDownload
+ @type:
+ function
+ @title:
+ $dcc.isFileDownload
+ @short:
+ Checks if a DCC is a download file transfer
+ @syntax:
+ <boolean> $dcc.isFileDownload
+ <boolean> $dcc.isFileDownload(<dcc_id:uint>)
+ @description:
+ Returns 1 if the specified Direct Client Connection
+ is a download file transfer and 0 otherwise.[br]
+ If <dcc_id> is omitted then the DCC Session associated
+ to the current window is assumed.[br]
+ If <dcc_id> is not a valid DCC session identifier (or it is omitted
+ and the current window has no associated DCC session) then
+ this function prints a warning and returns 0.[br]
+ See the [module:dcc]dcc module[/module] documentation for more informations.[br]
+*/
+
+static bool dcc_kvs_fnc_isFileDownload(KviKvsModuleFunctionCall * c)
+{
+ kvs_uint_t uDccId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("dcc_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uDccId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = dcc_kvs_find_dcc_descriptor(uDccId,c);
+
+ if(dcc)c->returnValue()->setBoolean(dcc->isFileDownload());
+ return true;
+}
+
+
+/*
+ @doc: dcc.localNick
+ @type:
+ function
+ @title:
+ $dcc.localNick
+ @short:
+ Returns the local nickname associated to the specified DCC
+ @syntax:
+ <string> $dcc.localNick
+ <string> $dcc.localNick(<dcc_id:uint>)
+ @description:
+ Returns the local nickname associated to the specified DCC.[br]
+ If <dcc_id> is omitted then the DCC Session associated
+ to the current window is assumed.[br]
+ If <dcc_id> is not a valid DCC session identifier (or it is omitted
+ and the current window has no associated DCC session) then
+ this function prints a warning and returns an empty sting.[br]
+ See the [module:dcc]dcc module[/module] documentation for more informations.[br]
+*/
+
+static bool dcc_kvs_fnc_localNick(KviKvsModuleFunctionCall * c)
+{
+ kvs_uint_t uDccId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("dcc_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uDccId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = dcc_kvs_find_dcc_descriptor(uDccId,c);
+
+ if(dcc)c->returnValue()->setString(dcc->localNick());
+ return true;
+}
+
+
+/*
+ @doc: dcc.localUser
+ @type:
+ function
+ @title:
+ $dcc.localUser
+ @short:
+ Returns the local username associated to the specified DCC
+ @syntax:
+ <string> $dcc.localUser
+ <string> $dcc.localUser(<dcc_id:uint>)
+ @description:
+ Returns the local username associated to the specified DCC.[br]
+ If <dcc_id> is omitted then the DCC Session associated
+ to the current window is assumed.[br]
+ If <dcc_id> is not a valid DCC session identifier (or it is omitted
+ and the current window has no associated DCC session) then
+ this function prints a warning and returns an empty sting.[br]
+ See the [module:dcc]dcc module[/module] documentation for more informations.[br]
+*/
+
+static bool dcc_kvs_fnc_localUser(KviKvsModuleFunctionCall * c)
+{
+ kvs_uint_t uDccId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("dcc_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uDccId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = dcc_kvs_find_dcc_descriptor(uDccId,c);
+
+ if(dcc)c->returnValue()->setString(dcc->localUser());
+ return true;
+}
+
+/*
+ @doc: dcc.localHost
+ @type:
+ function
+ @title:
+ $dcc.localHost
+ @short:
+ Returns the local hostname associated to the specified DCC
+ @syntax:
+ <string> $dcc.localHost
+ <string> $dcc.localHost(<dcc_id:uint>)
+ @description:
+ Returns the local hostname associated to the specified DCC.[br]
+ If <dcc_id> is omitted then the DCC Session associated
+ to the current window is assumed.[br]
+ If <dcc_id> is not a valid DCC session identifier (or it is omitted
+ and the current window has no associated DCC session) then
+ this function prints a warning and returns an empty sting.[br]
+ See the [module:dcc]dcc module[/module] documentation for more informations.[br]
+*/
+
+static bool dcc_kvs_fnc_localHost(KviKvsModuleFunctionCall * c)
+{
+ kvs_uint_t uDccId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("dcc_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uDccId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = dcc_kvs_find_dcc_descriptor(uDccId,c);
+
+ if(dcc)c->returnValue()->setString(dcc->localHost());
+ return true;
+}
+
+
+/*
+ @doc: dcc.localIp
+ @type:
+ function
+ @title:
+ $dcc.localIp
+ @short:
+ Returns the local ip address associated to the specified DCC
+ @syntax:
+ <string> $dcc.localIp
+ <string> $dcc.localIp(<dcc_id:uint>)
+ @description:
+ Returns the local ip address associated to the specified DCC.[br]
+ If <dcc_id> is omitted then the DCC Session associated
+ to the current window is assumed.[br]
+ If <dcc_id> is not a valid DCC session identifier (or it is omitted
+ and the current window has no associated DCC session) then
+ this function prints a warning and returns an empty sting.[br]
+ See the [module:dcc]dcc module[/module] documentation for more informations.[br]
+*/
+
+static bool dcc_kvs_fnc_localIp(KviKvsModuleFunctionCall * c)
+{
+ kvs_uint_t uDccId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("dcc_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uDccId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = dcc_kvs_find_dcc_descriptor(uDccId,c);
+
+ if(dcc)c->returnValue()->setString(dcc->localIp());
+ return true;
+}
+
+
+/*
+ @doc: dcc.localPort
+ @type:
+ function
+ @title:
+ $dcc.localPort
+ @short:
+ Returns the local port associated to the specified DCC
+ @syntax:
+ <integer> $dcc.localPort
+ <integer> $dcc.localPort(<dcc_id:uint>)
+ @description:
+ Returns the local port associated to the specified DCC.[br]
+ If <dcc_id> is omitted then the DCC Session associated
+ to the current window is assumed.[br]
+ If <dcc_id> is not a valid DCC session identifier then
+ this function prints a warning and returns an empty sting.[br]
+ See the [module:dcc]dcc module[/module] documentation for more informations.[br]
+*/
+
+static bool dcc_kvs_fnc_localPort(KviKvsModuleFunctionCall * c)
+{
+ kvs_uint_t uDccId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("dcc_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uDccId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = dcc_kvs_find_dcc_descriptor(uDccId,c);
+
+ if(dcc)c->returnValue()->setString(dcc->localPort());
+ return true;
+}
+
+
+/*
+ @doc: dcc.localFileName
+ @type:
+ function
+ @title:
+ $dcc.localFileName
+ @short:
+ Returns the local file name associated to the specified DCC
+ @syntax:
+ <string> $dcc.localFileName(<dcc_id:uint>)
+ @description:
+ Returns the local file name associated to the specified DCC.[br]
+ If <dcc_id> does not identify a file transfer DCC then this
+ function returns an empty string.
+ If <dcc_id> is not a valid Direct Client Connection identifier
+ then this function prints a warning and returns an empty string.
+*/
+
+static bool dcc_kvs_fnc_localFileName(KviKvsModuleFunctionCall * c)
+{
+ kvs_uint_t uDccId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("dcc_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uDccId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = dcc_kvs_find_dcc_descriptor(uDccId,c);
+
+ if(dcc)c->returnValue()->setString(dcc->localFileName());
+ return true;
+}
+
+
+/*
+ @doc: dcc.localFileSize
+ @type:
+ function
+ @title:
+ $dcc.localFileSize
+ @short:
+ Returns the local file size associated to the specified DCC
+ @syntax:
+ <integer> $dcc.localFileSize(<dcc_id:uint>)
+ @description:
+ Returns the local file size associated to the specified DCC.[br]
+ If <dcc_id> does not identify a file transfer DCC then this
+ function returns '0'[br]
+ If <dcc_id> is not a valid Direct Client Connection identifier
+ then this function prints a warning and returns '0'[br]
+ In upload transfers the local file size rappresents the
+ total size of the file to be transferred. In download transfers
+ the local file size is non zero only if the transfer has to resume
+ a file already existing on the local disk and it rappresents the
+ size of that file (and thus the offset that the transfer started on).
+*/
+
+static bool dcc_kvs_fnc_localFileSize(KviKvsModuleFunctionCall * c)
+{
+ kvs_uint_t uDccId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("dcc_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uDccId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = dcc_kvs_find_dcc_descriptor(uDccId,c);
+
+ if(dcc)c->returnValue()->setString(dcc->localFileSize().isEmpty() ? QString("0") : dcc->localFileSize());
+ return true;
+}
+
+
+/*
+ @doc: dcc.remoteNick
+ @type:
+ function
+ @title:
+ $dcc.remoteNick
+ @short:
+ Returns the remote nickname associated to the specified DCC
+ @syntax:
+ <string> $dcc.remoteNick
+ <string> $dcc.remoteNick(<dcc_id:uint>)
+ @description:
+ Returns the remote nickname associated to the specified DCC.[br]
+ If <dcc_id> is omitted then the DCC Session associated
+ to the current window is assumed.[br]
+ If <dcc_id> is not a valid DCC session identifier (or it is omitted
+ and the current window has no associated DCC session) then
+ this function prints a warning and returns an empty sting.[br]
+ See the [module:dcc]dcc module[/module] documentation for more informations.[br]
+*/
+
+static bool dcc_kvs_fnc_remoteNick(KviKvsModuleFunctionCall * c)
+{
+ kvs_uint_t uDccId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("dcc_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uDccId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = dcc_kvs_find_dcc_descriptor(uDccId,c);
+
+ if(dcc)c->returnValue()->setString(dcc->remoteNick());
+ return true;
+}
+
+
+/*
+ @doc: dcc.remoteUser
+ @type:
+ function
+ @title:
+ $dcc.remoteUser
+ @short:
+ Returns the remote username associated to the specified DCC
+ @syntax:
+ <string> $dcc.remoteUser
+ <string> $dcc.remoteUser(<dcc_id:uint>)
+ @description:
+ Returns the remote username associated to the specified DCC.[br]
+ If <dcc_id> is omitted then the DCC Session associated
+ to the current window is assumed.[br]
+ If <dcc_id> is not a valid DCC session identifier (or it is omitted
+ and the current window has no associated DCC session) then
+ this function prints a warning and returns an empty sting.[br]
+ See the [module:dcc]dcc module[/module] documentation for more informations.[br]
+*/
+
+static bool dcc_kvs_fnc_remoteUser(KviKvsModuleFunctionCall * c)
+{
+ kvs_uint_t uDccId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("dcc_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uDccId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = dcc_kvs_find_dcc_descriptor(uDccId,c);
+
+ if(dcc)c->returnValue()->setString(dcc->remoteUser());
+ return true;
+}
+
+/*
+ @doc: dcc.remoteHost
+ @type:
+ function
+ @title:
+ $dcc.remoteHost
+ @short:
+ Returns the remote hostname associated to the specified DCC
+ @syntax:
+ <string> $dcc.remoteHost
+ <string> $dcc.remoteHost(<dcc_id:uint>)
+ @description:
+ Returns the remote hostname associated to the specified DCC.[br]
+ If <dcc_id> is omitted then the DCC Session associated
+ to the current window is assumed.[br]
+ If <dcc_id> is not a valid DCC session identifier (or it is omitted
+ and the current window has no associated DCC session) then
+ this function prints a warning and returns an empty sting.[br]
+ See the [module:dcc]dcc module[/module] documentation for more informations.[br]
+*/
+
+static bool dcc_kvs_fnc_remoteHost(KviKvsModuleFunctionCall * c)
+{
+ kvs_uint_t uDccId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("dcc_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uDccId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = dcc_kvs_find_dcc_descriptor(uDccId,c);
+
+ if(dcc)c->returnValue()->setString(dcc->remoteHost());
+ return true;
+}
+
+/*
+ @doc: dcc.remoteIp
+ @type:
+ function
+ @title:
+ $dcc.remoteIp
+ @short:
+ Returns the remote ip address associated to the specified DCC
+ @syntax:
+ <string> $dcc.remoteIp
+ <string> $dcc.remoteIp(<dcc_id:uint>)
+ @description:
+ Returns the remote ip address associated to the specified DCC.[br]
+ If <dcc_id> is omitted then the DCC Session associated
+ to the current window is assumed.[br]
+ If <dcc_id> is not a valid DCC session identifier (or it is omitted
+ and the current window has no associated DCC session) then
+ this function prints a warning and returns an empty sting.[br]
+ See the [module:dcc]dcc module[/module] documentation for more informations.[br]
+*/
+
+static bool dcc_kvs_fnc_remoteIp(KviKvsModuleFunctionCall * c)
+{
+ kvs_uint_t uDccId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("dcc_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uDccId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = dcc_kvs_find_dcc_descriptor(uDccId,c);
+
+ if(dcc)c->returnValue()->setString(dcc->remoteIp());
+ return true;
+}
+
+
+/*
+ @doc: dcc.remotePort
+ @type:
+ function
+ @title:
+ $dcc.remotePort
+ @short:
+ Returns the remote port associated to the specified DCC
+ @syntax:
+ <integer> $dcc.remotePort
+ <integer> $dcc.remotePort(<dcc_id:uint>)
+ @description:
+ Returns the remote port associated to the specified DCC.[br]
+ If <dcc_id> is omitted then the DCC Session associated
+ to the current window is assumed.[br]
+ If <dcc_id> is not a valid DCC session identifier (or it is omitted
+ and the current window has no associated DCC session) then
+ this function prints a warning and returns an empty sting.[br]
+ See the [module:dcc]dcc module[/module] documentation for more informations.[br]
+*/
+
+static bool dcc_kvs_fnc_remotePort(KviKvsModuleFunctionCall * c)
+{
+ kvs_uint_t uDccId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("dcc_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uDccId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = dcc_kvs_find_dcc_descriptor(uDccId,c);
+
+ if(dcc)c->returnValue()->setString(dcc->remotePort());
+ return true;
+}
+
+
+/*
+ @doc: dcc.remoteFileName
+ @type:
+ function
+ @title:
+ $dcc.remoteFileName
+ @short:
+ Returns the remote file name associated to the specified DCC
+ @syntax:
+ <string> $dcc.remoteFileName(<dcc_id:uint>)
+ @description:
+ Returns the remote file name associated to the specified DCC.[br]
+ If <dcc_id> does not identify a file transfer DCC then this
+ function returns an empty string.
+ If <dcc_id> is not a valid Direct Client Connection identifier
+ then this function prints a warning and returns an empty string.
+*/
+
+static bool dcc_kvs_fnc_remoteFileName(KviKvsModuleFunctionCall * c)
+{
+ kvs_uint_t uDccId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("dcc_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uDccId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = dcc_kvs_find_dcc_descriptor(uDccId,c);
+
+ if(dcc)c->returnValue()->setString(dcc->remoteFileName());
+ return true;
+}
+
+
+/*
+ @doc: dcc.remoteFileSize
+ @type:
+ function
+ @title:
+ $dcc.remoteFileSize
+ @short:
+ Returns the remote file size associated to the specified DCC
+ @syntax:
+ <integer> $dcc.remoteFileSize(<dcc_id:uint>)
+ @description:
+ Returns the remote file size associated to the specified DCC.[br]
+ If <dcc_id> does not identify a file transfer DCC then this
+ function returns '0'[br]
+ If <dcc_id> is not a valid Direct Client Connection identifier
+ then this function prints a warning and returns '0'[br]
+ In download transfers the remote file size rappresents the
+ total size of the file to be transferred (advertished by the remote end).[br]
+ In upload transfers the remote file size is non zero only if the
+ remote user has issued a resume request and is rappresents the requested offset
+ in bytes from which the transfer has started.
+*/
+
+static bool dcc_kvs_fnc_remoteFileSize(KviKvsModuleFunctionCall * c)
+{
+ kvs_uint_t uDccId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("dcc_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uDccId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = dcc_kvs_find_dcc_descriptor(uDccId,c);
+
+ if(dcc)c->returnValue()->setString(dcc->remoteFileSize().isEmpty() ? QString("0") : dcc->remoteFileSize());
+ return true;
+}
+
+
+/*
+ @doc: dcc.ircContext
+ @type:
+ function
+ @title:
+ $dcc.ircContext
+ @short:
+ Returns the ircContext from which this DCC has originated
+ @syntax:
+ <integer> $dcc.ircContext
+ <integer> $dcc.ircContext(<dcc_id:uint>)
+ @description:
+ Returns the identifier of the irc context from which
+ the specified DCC has been originated.[br]
+ When the DCC is not originated from an IRC context
+ then this function returns '0' : an invalid irc context id.
+ If <dcc_id> is omitted then the DCC Session associated
+ to the current window is assumed.[br]
+ If <dcc_id> is not a valid DCC session identifier (or it is omitted
+ and the current window has no associated DCC session) then
+ this function prints a warning and returns 0.[br]
+ See the [module:dcc]dcc module[/module] documentation for more informations.[br]
+*/
+
+static bool dcc_kvs_fnc_ircContext(KviKvsModuleFunctionCall * c)
+{
+ kvs_uint_t uDccId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("dcc_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uDccId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = dcc_kvs_find_dcc_descriptor(uDccId,c);
+
+ if(dcc)c->returnValue()->setInteger(dcc->console()->context()->id());
+ return true;
+}
+
+
+
+/*
+ @doc: dcc.transferStatus
+ @type:
+ function
+ @title:
+ $dcc.transferStatus
+ @short:
+ Returns the current status of a dcc file transfer
+ @syntax:
+ <string> $dcc.transferStatus
+ <string> $dcc.transferStatus(<dcc_id:uint>)
+ @description:
+ Returns the status in the specified DCC session.[br]
+ The status is one of the strings "connecting", "transferring", "success" and "failure".
+ "success" and "failure" are reported when the transfer is terminated.
+ If <dcc_id> is omitted then the DCC Session associated
+ to the current window is assumed.[br]
+ If <dcc_id> is not a valid DCC session identifier (or it is omitted
+ and the current window has no associated DCC session) then
+ this function prints a warning and returns an empty sting.[br]
+ If the DCC session does not refer to a file transfer then
+ this function returns "".[br]
+ See the [module:dcc]dcc module[/module] documentation for more informations.[br]
+*/
+
+static bool dcc_kvs_fnc_transferStatus(KviKvsModuleFunctionCall * c)
+{
+ kvs_uint_t uDccId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("dcc_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uDccId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = dcc_kvs_find_dcc_descriptor(uDccId,c);
+
+ if(dcc)
+ {
+ if(dcc->transfer())
+ {
+ QString tmp;
+ dcc->transfer()->fillStatusString(tmp);
+ c->returnValue()->setString(tmp);
+ }
+ }
+ return true;
+}
+
+
+/*
+ @doc: dcc.transferredBytes
+ @type:
+ function
+ @title:
+ $dcc.transferredBytes
+ @short:
+ Returns the number of transferred bytes in a dcc file transfer
+ @syntax:
+ <integer> $dcc.transferredBytes
+ <integer> $dcc.transferredBytes(<dcc_id:uint>)
+ @description:
+ Returns the number of transferred bytes in the specified DCC session.[br]
+ If <dcc_id> is omitted then the DCC Session associated
+ to the current window is assumed.[br]
+ If <dcc_id> is not a valid DCC session identifier (or it is omitted
+ and the current window has no associated DCC session) then
+ this function prints a warning and returns an empty sting.[br]
+ If the DCC session does not refer to a file transfer then
+ this function returns 0.[br]
+ See the [module:dcc]dcc module[/module] documentation for more informations.[br]
+*/
+
+static bool dcc_kvs_fnc_transferredBytes(KviKvsModuleFunctionCall * c)
+{
+ kvs_uint_t uDccId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("dcc_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uDccId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = dcc_kvs_find_dcc_descriptor(uDccId,c);
+
+ if(dcc)
+ {
+ if(dcc->transfer())
+ {
+ c->returnValue()->setInteger(dcc->transfer()->transferredBytes());
+ } else {
+ c->returnValue()->setInteger(0);
+ }
+ }
+ return true;
+}
+
+
+
+/*
+ @doc: dcc.averageSpeed
+ @type:
+ function
+ @title:
+ $dcc.averageSpeed
+ @short:
+ Returns the average speed of a dcc file transfer
+ @syntax:
+ $dcc.averageSpeed
+ $dcc.averageSpeed(<dcc_id>)
+ @description:
+ Returns the average speed (in bytes/sec) of the specified DCC session.[br]
+ If <dcc_id> is omitted then the DCC Session associated
+ to the current window is assumed.[br]
+ If <dcc_id> is not a valid DCC session identifier (or it is omitted
+ and the current window has no associated DCC session) then
+ this function prints a warning and returns an empty sting.[br]
+ If the DCC session does not refer to a file transfer then
+ this function returns 0.[br]
+ See the [module:dcc]dcc module[/module] documentation for more informations.[br]
+*/
+
+static bool dcc_kvs_fnc_averageSpeed(KviKvsModuleFunctionCall * c)
+{
+ kvs_uint_t uDccId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("dcc_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uDccId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = dcc_kvs_find_dcc_descriptor(uDccId,c);
+
+ if(dcc)
+ {
+ if(dcc->transfer())
+ {
+ c->returnValue()->setInteger(dcc->transfer()->averageSpeed());
+ } else {
+ c->returnValue()->setInteger(0);
+ }
+ }
+ return true;
+}
+
+
+
+/*
+ @doc: dcc.session
+ @type:
+ function
+ @title:
+ $dcc.session
+ @short:
+ Returns the DCC session identifier associated to a window
+ @syntax:
+ <uint> $dcc.session
+ <uint> $dcc.session(<window_id>)
+ @description:
+ Returns the DCC session identifier associated to the DCC window specified
+ by <window_id>. If <window_id> is omitted then the DCC session identifier
+ associated to the current window is returned. If the specified window
+ has no associated DCC session then a warning is printed and 0 is returned.[br]
+*/
+
+static bool dcc_kvs_fnc_session(KviKvsModuleFunctionCall * c)
+{
+ QString szWinId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window_id",KVS_PT_STRING,KVS_PF_OPTIONAL,szWinId)
+ KVSM_PARAMETERS_END(c)
+
+ KviDccDescriptor * dcc = 0;
+ if(szWinId.isEmpty())
+ {
+ if(c->window()->inherits("KviDccWindow"))
+ dcc = ((KviDccWindow *)(c->window()))->descriptor();
+ if(!dcc)
+ {
+ c->warning(__tr2qs_ctx("The current window has no associated DCC session","dcc"));
+ c->returnValue()->setInteger(0);
+ } else {
+ c->returnValue()->setInteger(dcc->id());
+ }
+ return true;
+ }
+
+ KviWindow * pWnd = g_pApp->findWindow(szWinId);
+ if(!pWnd)
+ {
+ c->warning(__tr2qs_ctx("The specified window identifier is not valid","dcc"));
+ c->returnValue()->setInteger(0);
+ return true;
+ }
+
+ if(pWnd->inherits("KviDccWindow"))
+ dcc = ((KviDccWindow *)pWnd)->descriptor();
+ if(!dcc)
+ {
+ c->warning(__tr2qs_ctx("The current window has no associated DCC session","dcc"));
+ c->returnValue()->setInteger(0);
+ } else {
+ c->returnValue()->setInteger(dcc->id());
+ }
+ return true;
+}
+
+
+/*
+ @doc: dcc.sessionList
+ @type:
+ function
+ @title:
+ $dcc.sessionList
+ @short:
+ List the existing dcc session identifiers
+ @syntax:
+ <array> $dcc.sessionList
+ <array> $dcc.sessionList(<filter:string>)
+ @description:
+ The first form returns an array with all the currently existing dcc session
+ identifiers. The second form returns an array with the session types specified
+ in <filter> which may be a combination of the flags 'u' (for file upload),
+ 'd' (for file download) and 'c' (for dcc chat). To select all the file transfers
+ please use the combination 'ud'.[br]
+ See the [module:dcc]dcc module[/module] documentation for more informations.[br]
+*/
+
+static bool dcc_kvs_fnc_sessionList(KviKvsModuleFunctionCall * c)
+{
+ QString szFlags;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("filter",KVS_PT_STRING,KVS_PF_OPTIONAL,szFlags)
+ KVSM_PARAMETERS_END(c)
+
+ KviKvsArray * a = new KviKvsArray();
+ c->returnValue()->setArray(a);
+
+ KviPointerHashTable<int,KviDccDescriptor> * dict = KviDccDescriptor::descriptorDict();
+ if(!dict)return true;
+
+ KviPointerHashTableIterator<int,KviDccDescriptor> it(*dict);
+
+ int idx = 0;
+
+ if(szFlags.isEmpty())
+ {
+ // all
+ while(KviDccDescriptor * dcc = it.current())
+ {
+ a->set(idx++,new KviKvsVariant((kvs_int_t)(dcc->id())));
+ ++it;
+ }
+ } else {
+ bool bWantFileUploads = szFlags.find('u',false) != -1;
+ bool bWantFileDownloads = szFlags.contains('d',false) != -1;
+ bool bWantChats = szFlags.contains('c',false) != -1;
+
+ while(KviDccDescriptor * dcc = it.current())
+ {
+ if((dcc->isFileUpload() && bWantFileUploads) ||
+ (dcc->isFileDownload() && bWantFileDownloads) ||
+ (dcc->isDccChat() && bWantChats))
+ {
+ a->set(idx++,new KviKvsVariant((kvs_int_t)(dcc->id())));
+ }
+ ++it;
+ }
+ }
+
+ return true;
+}
+
+
+/*
+ @doc: dcc
+ @type:
+ module
+ @short:
+ Direct Client Connections
+ @title:
+ The DCC module
+ @body:
+ [big]Overview[/big][br]
+ The DCC module handles the Direct Client Connection
+ protocol layer and all it's sub-protocols.[br]
+ The sub-protocols include the standard CHAT
+ the standard SEND and its variants plus several
+ KVIrc extensions like RECV,RSEND,GET and VOICE.[br]
+ [br]
+ [big]Initiating a DCC negotiation[/big][br]
+ The following commands initiate a specific DCC session
+ with a remote client:[br]
+ [cmd]dcc.chat[/cmd][br]
+ [cmd]dcc.send[/cmd][br]
+ [cmd]dcc.rsend[/cmd][br]
+ [cmd]dcc.recv[/cmd][br]
+ [cmd]dcc.get[/cmd][br]
+ [cmd]dcc.voice[/cmd][br]
+ [br]
+ [big]Handling the DCC events[/big][br]
+ Each DCC session has an associated unique identifier (&lt;dcc_id&gt;).[br]
+ You can interact with the session by using several commands
+ and functions exported by this module and by passing the above session
+ id as parameter.[br]
+ The session related commands and functions are the following:[br]
+ [fnc]$dcc.sessionList[/fnc][br]
+ [fnc]$dcc.protocol[/fnc][br]
+ [fnc]$dcc.connectionType[/fnc][br]
+ [fnc]$dcc.transferStatus[/fnc][br]
+ [fnc]$dcc.isFileTransfer[/fnc][br]
+ [fnc]$dcc.isFileUpload[/fnc][br]
+ [fnc]$dcc.isFileDownload[/fnc][br]
+ [fnc]$dcc.localNick[/fnc][br]
+ [fnc]$dcc.localUser[/fnc][br]
+ [fnc]$dcc.localHost[/fnc][br]
+ [fnc]$dcc.localIp[/fnc][br]
+ [fnc]$dcc.localPort[/fnc][br]
+ [fnc]$dcc.localFileName[/fnc][br]
+ [fnc]$dcc.localFileSize[/fnc][br]
+ [fnc]$dcc.remoteNick[/fnc][br]
+ [fnc]$dcc.remoteUser[/fnc][br]
+ [fnc]$dcc.remoteHost[/fnc][br]
+ [fnc]$dcc.remoteIp[/fnc][br]
+ [fnc]$dcc.remotePort[/fnc][br]
+ [fnc]$dcc.remoteFileName[/fnc][br]
+ [fnc]$dcc.remoteFileSize[/fnc][br]
+ [fnc]$dcc.ircContext[/fnc][br]
+ [fnc]$dcc.session[/fnc][br]
+*/
+
+
+static bool dcc_module_init(KviModule * m)
+{
+ g_pDccBroker = new KviDccBroker();
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"send",dcc_kvs_cmd_send);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"chat",dcc_kvs_cmd_chat);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"voice",dcc_kvs_cmd_voice);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"recv",dcc_kvs_cmd_recv);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"rsend",dcc_kvs_cmd_rsend);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"get",dcc_kvs_cmd_get);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"abort",dcc_kvs_cmd_abort);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"setBandwidthLimit",dcc_kvs_cmd_setBandwidthLimit);
+
+
+ // FIXME: file upload / download state ?
+
+ KVSM_REGISTER_FUNCTION(m,"transferStatus",dcc_kvs_fnc_transferStatus);
+ KVSM_REGISTER_FUNCTION(m,"protocol",dcc_kvs_fnc_protocol);
+ KVSM_REGISTER_FUNCTION(m,"connectionType",dcc_kvs_fnc_connectionType);
+ KVSM_REGISTER_FUNCTION(m,"isFileTransfer",dcc_kvs_fnc_isFileTransfer);
+ KVSM_REGISTER_FUNCTION(m,"isFileUpload",dcc_kvs_fnc_isFileUpload);
+ KVSM_REGISTER_FUNCTION(m,"isFileDownload",dcc_kvs_fnc_isFileDownload);
+ KVSM_REGISTER_FUNCTION(m,"localNick",dcc_kvs_fnc_localNick);
+ KVSM_REGISTER_FUNCTION(m,"localUser",dcc_kvs_fnc_localUser);
+ KVSM_REGISTER_FUNCTION(m,"localHost",dcc_kvs_fnc_localHost);
+ KVSM_REGISTER_FUNCTION(m,"localIp",dcc_kvs_fnc_localIp);
+ KVSM_REGISTER_FUNCTION(m,"localPort",dcc_kvs_fnc_localPort);
+ KVSM_REGISTER_FUNCTION(m,"localFileName",dcc_kvs_fnc_localFileName);
+ KVSM_REGISTER_FUNCTION(m,"localFileSize",dcc_kvs_fnc_localFileSize);
+ KVSM_REGISTER_FUNCTION(m,"remoteNick",dcc_kvs_fnc_remoteNick);
+ KVSM_REGISTER_FUNCTION(m,"remoteUser",dcc_kvs_fnc_remoteUser);
+ KVSM_REGISTER_FUNCTION(m,"remoteHost",dcc_kvs_fnc_remoteHost);
+ KVSM_REGISTER_FUNCTION(m,"remoteIp",dcc_kvs_fnc_remoteIp);
+ KVSM_REGISTER_FUNCTION(m,"remotePort",dcc_kvs_fnc_remotePort);
+ KVSM_REGISTER_FUNCTION(m,"remoteFileName",dcc_kvs_fnc_remoteFileName);
+ KVSM_REGISTER_FUNCTION(m,"remoteFileSize",dcc_kvs_fnc_remoteFileSize);
+ KVSM_REGISTER_FUNCTION(m,"averageSpeed",dcc_kvs_fnc_averageSpeed);
+ KVSM_REGISTER_FUNCTION(m,"transferredBytes",dcc_kvs_fnc_transferredBytes);
+ KVSM_REGISTER_FUNCTION(m,"ircContext",dcc_kvs_fnc_ircContext);
+ KVSM_REGISTER_FUNCTION(m,"session",dcc_kvs_fnc_session);
+ KVSM_REGISTER_FUNCTION(m,"sessionList",dcc_kvs_fnc_sessionList);
+
+ return true;
+}
+
+static bool dcc_module_cleanup(KviModule *m)
+{
+ delete g_pDccBroker;
+ g_pDccBroker = 0;
+#ifdef COMPILE_USE_GSM
+ kvi_gsm_codec_done();
+#endif
+
+ return true;
+}
+
+static bool dcc_module_can_unload(KviModule *m)
+{
+ return g_pDccBroker ? g_pDccBroker->canUnload() : true;
+}
+
+KVIRC_MODULE(
+ "Dcc",
+ "1.0.0",
+ "Copyright (C) 2000-2004:\n" \
+ " Szymon Stefanek (pragma at kvirc dot net)\n",
+ "DCC extension for KVIrc\n",
+ dcc_module_init,
+ dcc_module_can_unload,
+ 0,
+ dcc_module_cleanup
+)
diff --git a/src/modules/dcc/marshal.cpp b/src/modules/dcc/marshal.cpp
new file mode 100644
index 00000000..9aedec41
--- /dev/null
+++ b/src/modules/dcc/marshal.cpp
@@ -0,0 +1,647 @@
+//
+// File : marshal.cpp
+// Creation date : Sun Sep 17 2000 15:59:11 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "marshal.h"
+
+#include "kvi_settings.h"
+#include "kvi_netutils.h"
+#include "kvi_error.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_memmove.h"
+#include "kvi_socket.h"
+#include "kvi_fileutils.h"
+
+
+#include <stdlib.h> //for exit()
+
+
+
+
+KviDccMarshal::KviDccMarshal(KviDccMarshalOutputContext * ctx)
+: QObject(0,"dcc_marshal")
+{
+ m_pSn = 0;
+ m_fd = KVI_INVALID_SOCKET;
+ m_pTimeoutTimer = 0;
+ m_bIpV6 = false;
+ m_pOutputContext = ctx;
+#ifdef COMPILE_SSL_SUPPORT
+ m_pSSL = 0;
+#endif
+ m_szIp = "";
+ m_szPort = "";
+ m_szSecondaryIp = "";
+ m_szSecondaryPort = "";
+}
+
+KviDccMarshal::~KviDccMarshal()
+{
+ reset();
+}
+
+kvi_socket_t KviDccMarshal::releaseSocket()
+{
+ kvi_socket_t aux_fd = m_fd;
+ m_fd = KVI_INVALID_SOCKET;
+ return aux_fd;
+}
+
+#ifdef COMPILE_SSL_SUPPORT
+KviSSL * KviDccMarshal::releaseSSL()
+{
+ KviSSL * theSSL = m_pSSL;
+ m_pSSL = 0;
+ return theSSL;
+}
+#endif
+
+void KviDccMarshal::reset()
+{
+ if(m_pSn)
+ {
+ delete m_pSn;
+ m_pSn = 0;
+ }
+ if(m_fd != KVI_INVALID_SOCKET)
+ {
+ kvi_socket_close(m_fd);
+ m_fd = KVI_INVALID_SOCKET;
+ }
+#ifdef COMPILE_SSL_SUPPORT
+// debug("MARSHAL RESETTING (SSL=%d)",m_pSSL);
+ if(m_pSSL)
+ {
+// debug("MARSHAL CLEARING THE SSL");
+ KviSSLMaster::freeSSL(m_pSSL);
+ m_pSSL = 0;
+ }
+#endif
+ if(m_pTimeoutTimer)
+ {
+ delete m_pTimeoutTimer;
+ m_pTimeoutTimer = 0;
+ }
+ m_bIpV6 = false;
+}
+
+int KviDccMarshal::dccListen(const QString &ip,const QString &port,bool bUseTimeout,bool bUseSSL)
+{
+ if(m_fd != KVI_INVALID_SOCKET)return KviError_anotherConnectionInProgress;
+
+ m_szIp = ip;
+ m_szPort = port;
+
+ m_bOutgoing = false;
+
+ m_bUseTimeout = bUseTimeout;
+
+#ifdef COMPILE_SSL_SUPPORT
+ m_bUseSSL = bUseSSL;
+#else
+ if(bUseSSL)return KviError_noSSLSupport;
+#endif
+
+ if(m_pTimeoutTimer)delete m_pTimeoutTimer;
+ m_pTimeoutTimer = new QTimer();
+ connect(m_pTimeoutTimer,SIGNAL(timeout()),this,SLOT(doListen()));
+ m_pTimeoutTimer->start(100,true);
+
+ return KviError_success;
+}
+
+void KviDccMarshal::doListen()
+{
+ if(m_pTimeoutTimer)
+ {
+ delete m_pTimeoutTimer;
+ m_pTimeoutTimer = 0;
+ }
+
+ // Check the address type
+ if(!kvi_isValidStringIp(m_szIp))
+ {
+#ifdef COMPILE_IPV6_SUPPORT
+ if(!kvi_isValidStringIp_V6(m_szIp))
+ {
+ emit error(KviError_invalidIpAddress);
+ return;
+ } else m_bIpV6 = true;
+#else
+ emit error(KviError_invalidIpAddress);
+ return;
+#endif
+ }
+
+ bool bOk;
+ m_uPort = m_szPort.toUInt(&bOk);
+ if(!bOk)
+ {
+ emit error(KviError_invalidPortNumber);
+ return;
+ }
+
+
+#ifndef COMPILE_IPV6_SUPPORT
+ if(m_bIpV6)
+ {
+ emit error(KviError_noIpV6Support);
+ return;
+ }
+#endif
+
+
+#ifdef COMPILE_IPV6_SUPPORT
+ m_fd = kvi_socket_create(m_bIpV6 ? KVI_SOCKET_PF_INET6 : KVI_SOCKET_PF_INET,
+ KVI_SOCKET_TYPE_STREAM,KVI_SOCKET_PROTO_TCP);
+#else
+ m_fd = kvi_socket_create(KVI_SOCKET_PF_INET,KVI_SOCKET_TYPE_STREAM,KVI_SOCKET_PROTO_TCP);
+#endif
+
+ if(m_fd == KVI_INVALID_SOCKET)
+ {
+ emit error(KviError_socketCreationFailed);
+ return;
+ }
+
+ if((!KVI_OPTION_BOOL(KviOption_boolUserDefinedPortRange)) || (m_uPort != 0))
+ {
+#ifdef COMPILE_IPV6_SUPPORT
+ KviSockaddr sa(m_szIp,m_uPort,m_bIpV6);
+#else
+ KviSockaddr sa(m_szIp,m_uPort,false);
+#endif
+
+ if(!sa.socketAddress())
+ {
+ reset();
+ emit error(KviError_bindFailed);
+ return;
+ }
+
+ if(!kvi_socket_bind(m_fd,sa.socketAddress(),sa.addressLength()))
+ {
+ reset();
+ emit error(KviError_bindFailed);
+ return;
+ }
+
+ } else {
+ m_uPort = KVI_OPTION_UINT(KviOption_uintDccMinPort);
+ if(KVI_OPTION_UINT(KviOption_uintDccMaxPort) > 65535)KVI_OPTION_UINT(KviOption_uintDccMaxPort) = 65535;
+ bool bBindSuccess;
+ do {
+#ifdef COMPILE_IPV6_SUPPORT
+ KviSockaddr sa(m_szIp,m_uPort,m_bIpV6);
+#else
+ KviSockaddr sa(m_szIp,m_uPort,false);
+#endif
+ if(!sa.socketAddress())
+ {
+ reset();
+ emit error(KviError_bindFailed);
+ return;
+ }
+
+ bBindSuccess = kvi_socket_bind(m_fd,sa.socketAddress(),sa.addressLength());
+
+ if(!bBindSuccess)
+ {
+ if(m_uPort == 65535)
+ {
+ reset();
+ emit error(KviError_bindFailed);
+ return;
+ }
+ m_uPort++;
+ }
+
+ } while((!bBindSuccess) && (m_uPort <= KVI_OPTION_UINT(KviOption_uintDccMaxPort)));
+
+ if(!bBindSuccess)
+ {
+ reset();
+ emit error(KviError_bindFailed);
+ return;
+ }
+
+ }
+
+ if(!kvi_socket_listen(m_fd,1))
+ {
+ reset();
+ emit error(KviError_listenFailed);
+ return;
+ }
+
+
+ // Reread the port in case we're binding to a random one (0)
+
+#ifdef COMPILE_IPV6_SUPPORT
+ KviSockaddr sareal(0,m_bIpV6);
+#else
+ KviSockaddr sareal(0,false);
+#endif
+
+
+ int size = sareal.addressLength();
+
+ if(kvi_socket_getsockname(m_fd,sareal.socketAddress(),&size))
+ {
+// debug("GETSOCKNAMEOK");
+ m_szPort.setNum(sareal.port());
+ m_uPort = sareal.port();
+// debug("REALPORT %u",m_uPort);
+ } else {
+// debug("GETSOCKNAMEFAILED");
+ }
+
+ // and setup the READ notifier...
+ m_pSn = new QSocketNotifier(m_fd,QSocketNotifier::Read);
+ QObject::connect(m_pSn,SIGNAL(activated(int)),this,SLOT(snActivated(int)));
+ m_pSn->setEnabled(true);
+
+ // set the timer
+ if(KVI_OPTION_UINT(KviOption_uintDccSocketTimeout) < 5)
+ KVI_OPTION_UINT(KviOption_uintDccSocketTimeout) = 5;
+
+ if(m_bUseTimeout)
+ {
+ m_pTimeoutTimer = new QTimer();
+ connect(m_pTimeoutTimer,SIGNAL(timeout()),this,SLOT(connectionTimedOut()));
+ m_pTimeoutTimer->start(KVI_OPTION_UINT(KviOption_uintDccSocketTimeout) * 1000,true);
+ }
+ // and wait for connect
+
+ emit inProgress();
+}
+
+int KviDccMarshal::dccConnect(const char * ip,const char * port,bool bUseTimeout,bool bUseSSL)
+{
+ if(m_fd != KVI_INVALID_SOCKET)return KviError_anotherConnectionInProgress;
+
+ m_bUseTimeout = bUseTimeout;
+ m_szIp = ip;
+ m_szPort = port;
+ m_bOutgoing = true;
+
+#ifdef COMPILE_SSL_SUPPORT
+ m_bUseSSL = bUseSSL;
+#else
+ if(bUseSSL)return KviError_noSSLSupport;
+#endif
+
+ if(m_pTimeoutTimer)delete m_pTimeoutTimer;
+ m_pTimeoutTimer = new QTimer();
+ connect(m_pTimeoutTimer,SIGNAL(timeout()),this,SLOT(doConnect()));
+ m_pTimeoutTimer->start(100,true);
+
+ return KviError_success;
+}
+
+void KviDccMarshal::doConnect()
+{
+ if(m_pTimeoutTimer)
+ {
+ delete m_pTimeoutTimer;
+ m_pTimeoutTimer = 0;
+ }
+
+ // Check the address type
+ if(!kvi_isValidStringIp(m_szIp))
+ {
+#ifdef COMPILE_IPV6_SUPPORT
+ if(!kvi_isValidStringIp_V6(m_szIp))
+ {
+ emit error(KviError_invalidIpAddress);
+ return;
+ } else m_bIpV6 = true;
+#else
+ emit error(KviError_invalidIpAddress);
+ return;
+#endif
+ }
+
+ bool bOk;
+ m_uPort = m_szPort.toUInt(&bOk);
+ if(!bOk)
+ {
+ emit error(KviError_invalidPortNumber);
+ return;
+ }
+
+
+ // create the socket
+#ifdef COMPILE_IPV6_SUPPORT
+ m_fd = kvi_socket_create(m_bIpV6 ? KVI_SOCKET_PF_INET6 : KVI_SOCKET_PF_INET,
+ KVI_SOCKET_TYPE_STREAM,KVI_SOCKET_PROTO_TCP);
+#else
+ m_fd = kvi_socket_create(KVI_SOCKET_PF_INET,
+ KVI_SOCKET_TYPE_STREAM,KVI_SOCKET_PROTO_TCP);
+#endif
+ if(m_fd == KVI_INVALID_SOCKET)
+ {
+ emit error(KviError_socketCreationFailed);
+ return;
+ }
+
+ // make it non blocking
+ if(!kvi_socket_setNonBlocking(m_fd))
+ {
+ reset();
+ emit error(KviError_asyncSocketFailed);
+ return;
+ }
+
+
+ // fill the sockaddr structure
+
+#ifdef COMPILE_IPV6_SUPPORT
+ KviSockaddr sa(m_szIp,m_uPort,m_bIpV6);
+#else
+ KviSockaddr sa(m_szIp,m_uPort,false);
+#endif
+
+ if(!sa.socketAddress())
+ {
+ reset();
+ emit error(KviError_socketCreationFailed);
+ return;
+ }
+
+ if(!kvi_socket_connect(m_fd,sa.socketAddress(),sa.addressLength()))
+ {
+ int err = kvi_socket_error();
+
+ if(!kvi_socket_recoverableConnectError(err))
+ {
+ // Ops...
+ int sockError=err;
+ if(sockError==0)
+ {
+ // Zero error ?...let's look closer
+ int iSize=sizeof(int);
+ if(!kvi_socket_getsockopt(m_fd,SOL_SOCKET,SO_ERROR,
+ (void *)&sockError,&iSize))sockError=0;
+ }
+ // Die
+ reset();
+ // And declare problems :)
+ if(sockError)emit error(KviError::translateSystemError(sockError));
+ else emit error(KviError_unknownError); //Error 0 ?
+ return;
+ }
+ }
+
+
+ // and setup the WRITE notifier...
+ m_pSn = new QSocketNotifier(m_fd,QSocketNotifier::Write);
+ QObject::connect(m_pSn,SIGNAL(activated(int)),this,SLOT(snActivated(int)));
+ m_pSn->setEnabled(true);
+
+ // set the timer
+ if(KVI_OPTION_UINT(KviOption_uintDccSocketTimeout) < 5)
+ KVI_OPTION_UINT(KviOption_uintDccSocketTimeout) = 5;
+
+ if(m_bUseTimeout)
+ {
+ m_pTimeoutTimer = new QTimer();
+ connect(m_pTimeoutTimer,SIGNAL(timeout()),this,SLOT(connectionTimedOut()));
+ m_pTimeoutTimer->start(KVI_OPTION_UINT(KviOption_uintDccSocketTimeout) * 1000,true);
+ }
+
+ // and wait for connect
+ emit inProgress();
+}
+
+
+void KviDccMarshal::snActivated(int)
+{
+ if(m_pTimeoutTimer)
+ {
+ delete m_pTimeoutTimer;
+ m_pTimeoutTimer = 0;
+ }
+
+#ifdef COMPILE_IPV6_SUPPORT
+ struct sockaddr_in6 hostSockAddr6;
+#endif
+ struct sockaddr_in hostSockAddr;
+
+ int size = sizeof(hostSockAddr);
+ struct sockaddr * addr = (struct sockaddr *)&hostSockAddr;
+
+#ifdef COMPILE_IPV6_SUPPORT
+ if(m_bIpV6)
+ {
+ addr = (struct sockaddr *)&hostSockAddr6;
+ size = sizeof(hostSockAddr6);
+ }
+#endif
+
+ if(m_bOutgoing)
+ {
+ // outgoing connection (we have called connect())
+ // Check for errors...
+ int sockError;
+ int iSize=sizeof(int);
+ if(!kvi_socket_getsockopt(m_fd,SOL_SOCKET,SO_ERROR,(void *)&sockError,&iSize))sockError = -1;
+ if(sockError != 0)
+ {
+ //failed
+ if(sockError > 0)sockError = KviError::translateSystemError(sockError);
+ else sockError = KviError_unknownError; //Error 0 ?
+ reset();
+ emit error(sockError);
+ return;
+ }
+ //Succesfully connected...
+ delete m_pSn;
+ m_pSn = 0;
+ // get the local address
+ if(!kvi_socket_getsockname(m_fd,addr,&size))
+ {
+ m_szSecondaryIp = "localhost";
+ m_szSecondaryPort = __tr2qs_ctx("unknown","dcc");
+ } else {
+#ifdef COMPILE_IPV6_SUPPORT
+ if(m_bIpV6)
+ {
+ m_szSecondaryPort.setNum(ntohs(((struct sockaddr_in6 *)addr)->sin6_port));
+ if(!kvi_binaryIpToStringIp_V6(((struct sockaddr_in6 *)addr)->sin6_addr,m_szSecondaryIp))
+ m_szSecondaryIp = "localhost";
+ } else {
+#endif
+ m_szSecondaryPort.setNum(ntohs(((struct sockaddr_in *)addr)->sin_port));
+ if(!kvi_binaryIpToStringIp(((struct sockaddr_in *)addr)->sin_addr,m_szSecondaryIp))
+ m_szSecondaryIp = "localhost";
+#ifdef COMPILE_IPV6_SUPPORT
+ }
+#endif
+ }
+ } else {
+ // Incoming connection
+ int newsock = kvi_socket_accept(m_fd,addr,&size);
+ if(newsock != KVI_INVALID_SOCKET)
+ {
+ // Connected
+ delete m_pSn;
+ m_pSn = 0;
+#ifdef COMPILE_IPV6_SUPPORT
+ if(m_bIpV6)
+ {
+ m_szSecondaryPort.setNum(ntohs(((struct sockaddr_in6 *)addr)->sin6_port));
+ if(!kvi_binaryIpToStringIp_V6(((struct sockaddr_in6 *)addr)->sin6_addr,m_szSecondaryIp))
+ m_szSecondaryIp = __tr2qs_ctx("unknown","dcc");
+ } else {
+#endif
+ m_szSecondaryPort.setNum(ntohs(((struct sockaddr_in *)addr)->sin_port));
+ if(!kvi_binaryIpToStringIp(((struct sockaddr_in *)addr)->sin_addr,m_szSecondaryIp))
+ m_szSecondaryIp = __tr2qs_ctx("unknown","dcc");
+#ifdef COMPILE_IPV6_SUPPORT
+ }
+#endif
+ kvi_socket_close(m_fd);
+ m_fd = newsock;
+ if(!kvi_socket_setNonBlocking(m_fd))
+ {
+ reset();
+ emit error(KviError_asyncSocketFailed);
+ return;
+ }
+
+ } else {
+ // Huh ?.. wait for the next notifier call
+ return;
+ }
+ }
+
+#ifdef COMPILE_SSL_SUPPORT
+ // SSL Handshake needed ?
+ if(m_bUseSSL)
+ {
+ m_pSSL = KviSSLMaster::allocSSL(m_pOutputContext->dccMarshalOutputWindow(),m_fd,m_bOutgoing ? KviSSL::Client : KviSSL::Server,m_pOutputContext->dccMarshalOutputContextString());
+
+ if(m_pSSL)
+ {
+ emit startingSSLHandshake();
+ doSSLHandshake(0);
+ } else {
+ reset();
+ emit error(KviError_SSLError);
+ }
+ return;
+ }
+#endif
+
+ emit connected();
+}
+
+
+void KviDccMarshal::doSSLHandshake(int)
+{
+#ifdef COMPILE_SSL_SUPPORT
+// debug("DO SSL HANDSHAKE");
+ if(m_pSn)
+ {
+ delete m_pSn;
+ m_pSn = 0;
+ }
+
+ if(!m_pSSL)
+ {
+ debug("Ops... I've lost the SSL class ?");
+ reset();
+ emit error(KviError_internalError);
+ return; // ops ?
+ }
+
+ KviSSL::Result r = m_bOutgoing ? m_pSSL->connect() : m_pSSL->accept();
+
+ switch(r)
+ {
+ case KviSSL::Success:
+ // done!
+// debug("EMITTING CONNECTED");
+ emit connected();
+// debug("CONNECTED EMITTED");
+ break;
+ case KviSSL::WantRead:
+ m_pSn = new QSocketNotifier((int)m_fd,QSocketNotifier::Read);
+ QObject::connect(m_pSn,SIGNAL(activated(int)),this,SLOT(doSSLHandshake(int)));
+ m_pSn->setEnabled(true);
+ break;
+ case KviSSL::WantWrite:
+ m_pSn = new QSocketNotifier((int)m_fd,QSocketNotifier::Write);
+ QObject::connect(m_pSn,SIGNAL(activated(int)),this,SLOT(doSSLHandshake(int)));
+ m_pSn->setEnabled(true);
+ break;
+ case KviSSL::RemoteEndClosedConnection:
+ reset();
+ emit error(KviError_remoteEndClosedConnection);
+ break;
+ case KviSSL::SyscallError:
+ {
+ // syscall problem
+ int err = kvi_socket_error();
+ if(kvi_socket_recoverableError(err))
+ {
+ // can recover ? (EAGAIN , EINTR ?)
+ m_pSn = new QSocketNotifier((int)m_fd,QSocketNotifier::Write);
+ QObject::connect(m_pSn,SIGNAL(activated(int)),this,SLOT(doSSLHandshake(int)));
+ m_pSn->setEnabled(true);
+ return;
+ } else {
+ // Declare problems :)
+ reset();
+ emit error(err ? KviError::translateSystemError(err) : KviError_unknownError);
+ }
+ }
+ break;
+ default:
+ {
+ KviStr buffer;
+ while(m_pSSL->getLastErrorString(buffer))emit sslError(buffer.ptr());
+ reset();
+ emit error(KviError_SSLError);
+ }
+ break;
+ }
+#else //!COMPILE_SSL_SUPPORT
+ debug("Ops.. ssl handshake without ssl support!...aborting!");
+ exit(-1);
+#endif //!COMPILE_SSL_SUPPORT
+}
+
+void KviDccMarshal::abort()
+{
+ reset();
+}
+
+void KviDccMarshal::connectionTimedOut()
+{
+ reset();
+ emit error(KviError_connectionTimedOut);
+}
+
+
+#include "m_marshal.moc"
diff --git a/src/modules/dcc/marshal.h b/src/modules/dcc/marshal.h
new file mode 100644
index 00000000..9665e09a
--- /dev/null
+++ b/src/modules/dcc/marshal.h
@@ -0,0 +1,112 @@
+#ifndef _MARSHAL_H_
+#define _MARSHAL_H_
+//
+// File marshal.h
+// Creation date : Sun Sep 17 2000 10:44:20 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_string.h"
+#include "kvi_sockettype.h"
+#include <qobject.h>
+#include <qsocketnotifier.h>
+#include <qtimer.h>
+#include "kvi_inttypes.h"
+
+class KviWindow;
+
+#ifdef COMPILE_SSL_SUPPORT
+ #include "kvi_sslmaster.h"
+#endif
+
+class KviDccMarshal;
+
+class KviDccMarshalOutputContext
+{
+ friend class KviDccMarshal;
+public:
+ KviDccMarshalOutputContext(){};
+ virtual ~KviDccMarshalOutputContext(){};
+protected:
+ virtual KviWindow * dccMarshalOutputWindow() = 0;
+ virtual const char * dccMarshalOutputContextString() = 0;
+};
+
+class KviDccMarshal : public QObject
+{
+ Q_OBJECT
+public:
+ KviDccMarshal(KviDccMarshalOutputContext * ctx);
+ ~KviDccMarshal();
+protected:
+ // DCC DESCRIPTOR
+ QString m_szIp; // Dcc initiator ip address (the one that listens)
+ QString m_szPort; // Dcc initiator port (the one that listens)
+ // other info
+ bool m_bIpV6; // Dcc mode
+ kvi_u32_t m_uPort; // Dcc initiator port
+ bool m_bOutgoing; // true if WE have connected to the remote host (so m_szIp is the remote host ip)
+ QString m_szSecondaryIp; // Ip of the client that has connected to the remote host
+ QString m_szSecondaryPort; // Port of the client that has connected to the remote host
+ // internals
+ kvi_socket_t m_fd; // socket
+ QSocketNotifier * m_pSn;
+ QTimer * m_pTimeoutTimer;
+ bool m_bUseTimeout;
+#ifdef COMPILE_SSL_SUPPORT
+ KviSSL * m_pSSL;
+ bool m_bUseSSL;
+#endif
+ KviDccMarshalOutputContext * m_pOutputContext;
+public:
+ const QString & dccIp() const { return m_szIp; };
+ const QString & dccPort() const { return m_szPort; };
+ const QString & localIp() const { return m_bOutgoing ? m_szSecondaryIp : m_szIp; };
+ const QString & localPort() const { return m_bOutgoing ? m_szSecondaryPort : m_szPort; };
+ const QString & remoteIp() const { return m_bOutgoing ? m_szIp : m_szSecondaryIp; };
+ const QString & remotePort() const { return m_bOutgoing ? m_szPort : m_szSecondaryPort; };
+ int dccListen(const QString &ip,const QString &port,bool bUseTimeout,bool bUseSSL = false);
+ int dccConnect(const char * ip,const char * port,bool bUseTimeout,bool bUseSSL = false);
+ kvi_socket_t releaseSocket();
+#ifdef COMPILE_SSL_SUPPORT
+ KviSSL * releaseSSL();
+#endif
+ void abort();
+private:
+ void reset();
+//#ifdef COMPILE_SSL_SUPPORT
+// bool trySSLCertificate();
+//#endif
+private slots:
+ void doSSLHandshake(int);
+// void doListenSSLHandshake();
+ void snActivated(int);
+ void connectionTimedOut();
+ void doListen();
+ void doConnect();
+signals:
+ void startingSSLHandshake();
+ void sslError(const char * msg);
+ void connected();
+ void inProgress();
+ void error(int);
+};
+
+
+#endif //_MARSHAL_H_
diff --git a/src/modules/dcc/requests.cpp b/src/modules/dcc/requests.cpp
new file mode 100644
index 00000000..e1e18143
--- /dev/null
+++ b/src/modules/dcc/requests.cpp
@@ -0,0 +1,1154 @@
+//=============================================================================
+//
+// File : requests.cpp
+// Creation date : Tue Jul 23 02:44:38 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define _KVI_DEBUG_CHECK_RANGE_
+#include "kvi_debug.h"
+#include "kvi_settings.h"
+#include "kvi_string.h"
+#include "kvi_module.h"
+#include "kvi_sparser.h"
+#include "kvi_locale.h"
+#include "kvi_out.h"
+#include "kvi_console.h"
+#include "kvi_netutils.h"
+#include "kvi_frame.h"
+#include "kvi_console.h"
+
+#include "kvi_error.h"
+#include "kvi_options.h"
+#include "kvi_defaults.h"
+#include "kvi_sharedfiles.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_app.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectionuserinfo.h"
+
+#include "gsmcodec.h"
+#include "broker.h"
+#include "voice.h"
+#include "utils.h"
+#include "send.h"
+
+#include <qfileinfo.h>
+
+#ifdef COMPILE_ON_WINDOWS
+ // Ugly Windoze compiler...
+ #include "dialogs.h"
+#endif
+
+//#warning "KviOption_boolIgnoreDccChat and other types too"
+
+extern KVIRC_API KviSharedFilesManager * g_pSharedFilesManager;
+extern KviDccBroker * g_pDccBroker;
+
+static void dcc_module_reply_errmsg(KviDccRequest * dcc,const QString& errText)
+{
+ dcc->ctcpMsg->msg->console()->connection()->sendFmtData(
+ "NOTICE %s :%cERRMSG %s%c",
+ dcc->ctcpMsg->msg->console()->connection()->encodeText(dcc->ctcpMsg->pSource->nick()).data(),0x01,
+ dcc->ctcpMsg->msg->console()->connection()->encodeText(errText).data()
+ ,0x01);
+}
+
+static void dcc_module_request_error(KviDccRequest * dcc,const QString& errText)
+{
+ dcc->ctcpMsg->msg->console()->output(KVI_OUT_DCCERROR,
+ __tr2qs_ctx("Unable to process the above request: %Q, %Q","dcc"),
+ &errText,
+ KVI_OPTION_BOOL(KviOption_boolNotifyFailedDccHandshakes) ? &(__tr2qs_ctx("Ignoring and notifying failure","dcc")) : &(__tr2qs_ctx("Ignoring","dcc")));
+
+ if(KVI_OPTION_BOOL(KviOption_boolNotifyFailedDccHandshakes))
+ {
+ QString szError = QString("Sorry, your DCC %1 request can't be satisfied: %2").arg(dcc->szType.ptr()).arg(errText);
+ dcc_module_reply_errmsg(dcc,szError);
+ }
+}
+
+static bool dcc_module_check_concurrent_transfers_limit(KviDccRequest * dcc)
+{
+ if(KVI_OPTION_UINT(KviOption_uintMaxDccSendTransfers) > 0)
+ {
+ unsigned int uTransfers = KviDccFileTransfer::runningTransfersCount();
+ if(uTransfers >= KVI_OPTION_UINT(KviOption_uintMaxDccSendTransfers))
+ {
+ KviStr szError(KviStr::Format,__tr2qs_ctx("Concurrent transfer limit reached (%u of %u transfers running)","dcc"),
+ uTransfers,KVI_OPTION_UINT(KviOption_uintMaxDccSendTransfers));
+ dcc_module_request_error(dcc,szError.ptr());
+ return false;
+ }
+ }
+ return true;
+}
+
+static bool dcc_module_check_limits(KviDccRequest * dcc)
+{
+ if(KVI_OPTION_UINT(KviOption_uintMaxDccSlots) > 0)
+ {
+ unsigned int uWindows = g_pDccBroker->dccWindowsCount();
+ if(uWindows >= KVI_OPTION_UINT(KviOption_uintMaxDccSlots))
+ {
+ KviStr szError(KviStr::Format,__tr2qs_ctx("Slot limit reached (%u slots of %u)","dcc"),
+ uWindows,KVI_OPTION_UINT(KviOption_uintMaxDccSlots));
+ dcc_module_request_error(dcc,szError.ptr());
+ return false;
+ }
+ }
+ if(g_pDccBroker->dccBoxCount() >= 32)
+ {
+ // there are too many pending dcc requests: the user isn't watching....
+ dcc_module_request_error(dcc,__tr2qs_ctx("Too many pending connections","dcc"));
+ return false;
+ }
+ return true;
+}
+
+static void dcc_fill_local_nick_user_host(KviDccDescriptor * d,KviDccRequest * dcc)
+{
+ if(dcc->pConsole->connection())
+ {
+ d->szLocalNick = dcc->pConsole->connection()->userInfo()->nickName();
+ d->szLocalUser = dcc->pConsole->connection()->userInfo()->userName();
+ d->szLocalHost = dcc->pConsole->connection()->userInfo()->hostName();
+ } else {
+ d->szLocalNick = __tr_ctx("unknown","dcc");
+ d->szLocalUser = __tr2qs_ctx("unknown","dcc");
+ d->szLocalHost = __tr2qs_ctx("unknown","dcc");
+ }
+}
+
+static void dcc_module_set_dcc_type(KviDccDescriptor * d,const char * szBaseType)
+{
+ d->szType = szBaseType;
+#ifdef COMPILE_SSL_SUPPORT
+ if(d->bIsSSL)d->szType.prepend('S');
+#endif
+ if(d->bIsTdcc)d->szType.prepend('T');
+}
+
+
+static bool dcc_module_normalize_target_data(KviDccRequest * dcc,KviStr &ipaddr,KviStr &port)
+{
+ if(!port.isUnsignedNum())
+ {
+ if(!dcc->ctcpMsg->msg->haltOutput())
+ {
+ KviStr szError(KviStr::Format,__tr2qs_ctx("Invalid port number %s","dcc"),port.ptr());
+ dcc_module_request_error(dcc,szError.ptr());
+ }
+ return false;
+ }
+
+ struct in_addr addr;
+
+ if(ipaddr.isUnsignedNum())
+ {
+ addr.s_addr = htonl((unsigned long)ipaddr.toULong());
+ QString tmp;
+ if(!kvi_binaryIpToStringIp(addr,tmp))
+ {
+ if(!dcc->ctcpMsg->msg->haltOutput())
+ {
+ KviStr szError(KviStr::Format,__tr2qs_ctx("Invalid IP address in old format %s","dcc"),ipaddr.ptr());
+ dcc_module_request_error(dcc,szError.ptr());
+ }
+ return false;
+ }
+ ipaddr = tmp;
+ } else {
+ if(!kvi_stringIpToBinaryIp(ipaddr,&addr))
+ {
+#ifdef COMPILE_IPV6_SUPPORT
+ struct in6_addr addr6;
+ if(kvi_stringIpToBinaryIp_V6(ipaddr,&addr6))
+ {
+ dcc->bIpV6 = true;
+ return true; // IPV6 address.
+ }
+#endif
+ if(!dcc->ctcpMsg->msg->haltOutput())
+ {
+ KviStr szError(KviStr::Format,__tr2qs_ctx("Invalid IP address %s","dcc"),ipaddr.ptr());
+ dcc_module_request_error(dcc,szError.ptr());
+ }
+ return false;
+ }
+ }
+ return true;
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// CHAT
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+static void dccModuleParseDccChat(KviDccRequest *dcc)
+{
+ //
+ // We have received a DCC CHAT request in the following form:
+ //
+ // DCC CHAT chat <ipaddress> <port>
+ //
+ // This means that we're requested to setup an ACTIVE chat connection
+ // ... Easy task :)
+ //
+ // Anybody understands the meaning of the secondo "chat" in there ?
+ // It was meant to simplify the parsing ? :DDD
+ //
+ // There is a mIrc extension that allows <port> to be 0
+ // and adds a last parameter that seems to be a random number (thnx YaP :)
+ // that is used to keep track of the connection.
+ // This extension is used by firewalled machines to initiate a DCC CHAT:
+ // the receiving side should respond with a DCC CHAT offer
+ // with the same random number appended, and then should listen for a connection.
+ //
+ // when a zero port request is initiated by another party we get
+ //
+ // DCC CHAT chat <fakeipaddress> 0 <tag>
+ //
+ // and we reply with
+ //
+ // DCC CHAT chat <ourip> <ourport> <tag>
+ //
+ // when a zero port request is initiated by us we send out
+ //
+ // DCC CHAT chat <fakeipaddress> 0 <tag>
+ //
+ // and we get
+ //
+ // DCC CHAT chat <remoteip> <remoteport> <tag>
+ //
+ // Thus if there is a <tag> and the port is 0, then the remote party
+ // wanted to estabilish a dcc with us and wants us to listen, but if the port is nonzero then
+ // we have sent out a zero port request and the remote party acked it
+ // thus we have to connect instead!
+ //
+
+ // First of all we check the dcc slot limits
+ if(!dcc_module_check_limits(dcc))return;
+
+ // Then we check the target host data
+ if(!dcc_module_normalize_target_data(dcc,dcc->szParam2,dcc->szParam3))return;
+
+ if(!kvi_strEqualCI(dcc->szParam1.ptr(),"chat"))
+ {
+ if(!dcc->ctcpMsg->msg->haltOutput())
+ {
+ dcc->ctcpMsg->msg->console()->output(KVI_OUT_DCCMSG,
+ __tr2qs_ctx("The above request is broken: The second parameter is '%s' and should be 'chat', trying to continue","dcc"),dcc->szParam1.ptr());
+ }
+ }
+
+ KviStr szExtensions = dcc->szType;
+ szExtensions.cutRight(4); // cut off CHAT
+
+#ifdef COMPILE_SSL_SUPPORT
+ bool bSSLExtension = szExtensions.contains('S',false);
+#else //!COMPILE_SSL_SUPPORT
+ if(szExtensions.contains('S',false))
+ {
+ dcc_module_request_error(dcc,__tr2qs_ctx("This executable has been compiled without SSL support, the SSL extension to DCC CHAT is not available","dcc"));
+ return;
+ }
+#endif //!COMPILE_SSL_SUPPORT
+
+ KviDccDescriptor * d = new KviDccDescriptor(dcc->pConsole);
+
+ d->szNick = dcc->ctcpMsg->pSource->nick();
+ d->szUser = dcc->ctcpMsg->pSource->username();
+ d->szHost = dcc->ctcpMsg->pSource->host();
+
+ dcc_fill_local_nick_user_host(d,dcc);
+
+ d->szIp = dcc->szParam2.ptr();
+ d->szPort = dcc->szParam3.ptr();
+
+
+ if(dcc->szParam4.hasData())
+ {
+ // zero port tag ?
+ if(d->szPort == "0")
+ {
+ // zero port request
+ if(KVI_OPTION_BOOL(KviOption_boolDccSendFakeAddressByDefault))
+ {
+ d->szFakeIp = KVI_OPTION_STRING(KviOption_stringDefaultDccFakeAddress);
+ if(d->szFakeIp.isEmpty())KVI_OPTION_BOOL(KviOption_boolDccSendFakeAddressByDefault) = false;
+ }
+ d->setZeroPortRequestTag(dcc->szParam4.ptr());
+ QString tmp;
+ if(!dcc_kvs_get_listen_ip_address(0,d->console(),tmp))d->szListenIp = "0.0.0.0";
+ else d->szListenIp=tmp;
+ d->szListenPort = "0"; // any port is OK
+ d->bAutoAccept = KVI_OPTION_BOOL(KviOption_boolAutoAcceptDccChat);
+ d->bActive = false; // we must listen then...
+ } else {
+ // zero port acknowledge
+ // check if this is a tag that we have sent out
+ QString szTag = QString(dcc->szParam4.ptr());
+ KviDccZeroPortTag * t = g_pDccBroker->findZeroPortTag(szTag);
+ if(!t)
+ {
+ // hum.. not our tag
+
+ // FIXME: As segnaled by PRAEDO, ezbounce seems to send a fourth parameter in response to /quote ezb log
+ // Pragma: That's a bug in ezbounce, it sends the filesize of the log as a DCC CHAT parameter...
+ // The author probably copied and pasted the CTCP line from DCC SEND and forgot to remove the filesize.
+ // We *could* add an option to ignore the last parameter and treat it as a standard dcc chat
+ // request, but since we don't encourage bugs, we don't do it :D
+ // Mail me at pragma at kvirc dot net if you really think it's necessary.
+ dcc->ctcpMsg->msg->console()->output(KVI_OUT_DCCMSG,
+ __tr2qs_ctx("The above request is broken: it looks like a zero port tag acknowledge but I have either never seen this tag or it was sent more than 120 seconds ago","dcc"));
+ dcc_module_request_error(dcc,__tr2qs_ctx("It seems that I haven't requested this dcc chat","dcc"));
+ delete d;
+ return;
+ } else {
+ g_pDccBroker->removeZeroPortTag(szTag);
+ }
+
+ d->bAutoAccept = true; // auto-accept it (we have sent it out)
+ d->bActive = true;
+ }
+ } else {
+ d->bAutoAccept = KVI_OPTION_BOOL(KviOption_boolAutoAcceptDccChat);
+ d->bActive = true; // we have to connct (standard active chat)
+ }
+
+#ifdef COMPILE_SSL_SUPPORT
+ d->bIsSSL = bSSLExtension;
+#endif
+
+ dcc_module_set_dcc_type(d,"CHAT");
+ d->triggerCreationEvent();
+
+ g_pDccBroker->handleChatRequest(d);
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// SEND
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+static void dccModuleParseDccRecv(KviDccRequest * dcc);
+
+static void dccModuleParseDccSend(KviDccRequest *dcc)
+{
+//#warning "Ignore files depending on file type ? (MediaType ?)"
+ //
+ // We have received a DCC SEND request in the following form
+ //
+ // DCC [ST]SEND <filename> <ipaddress> <port> <filesize>
+ //
+ // Now the things are a bit tricky... we eventually can
+ // reply with a DCC RESUME and receive a DCC ACCEPT then
+ // The format of these requests is:
+ //
+ // DCC RESUME <filename> <port> <resumepos>
+ // ACCEPT <filename> <port> <resumepos>
+ //
+ // There is a mIrc extension that allows <port> to be 0
+ // and adds a last parameter that seems to be a random number (thnx YaP :)
+ // that is used to keep track of the connection.
+ // This extension is used by firewalled machines to initiate a DCC SEND:
+ // the receiving side should respond with a DCC SEND offer
+ // with the same random number appended, listen for a connection, and receive the file
+ // instead of sending it.
+ //
+ // when a zero port request is initiated by another party we get
+ // DCC SEND <filename> <fakeipaddress> 0 <filesize> <tag>
+ // if (and only if) we want to resume we reply with
+ // DCC RESUME <filename> 0 <resumesize> <tag>
+ // in this case the remote part replies again with
+ // DCC ACCEPT <filename> 0 <resumesize> <tag>
+ // and we finally reply with
+ // DCC SEND <filename> <ourip> <ourport> <filesize> <tag>
+ //
+ // when a zero port request is initiated by us we send out
+ // DCC SEND <filename> <fakeipaddress> 0 <filesize> <tag>
+ // and if the remote party wants to resume then we get
+ // DCC RESUME <filename> 0 <resumesize> <tag>
+ // and we eventually reply with
+ // DCC ACCEPT <filename> 0 <resumesize> <tag>
+ // and we finally get
+ // DCC SEND <filename> <remoteip> <remoteport> <filesize> <tag>
+ //
+ // Thus if there is a <tag> and the port is 0, then the remote party
+ // is trying to send a file to us, but if the port is nonzero then
+ // we have sent out a zero port request and the remote party acked it
+ //
+
+ if((!kvi_strEqualCS(dcc->szParam3.ptr(),"0")) && dcc->szParam5.hasData())
+ {
+ // DCC SEND <filename> <remoteip> <remoteport> <filesize> <tag>
+ // zero port acknowledge: treat as a RECV that should look like
+ // DCC [TS]RECV <filename> <remoteip> <remoteport> <resume-filesize>
+ // but since we have stored the sharedfile with the name <tag>
+ // we do exchange the params :)
+
+ KviDccZeroPortTag * t = g_pDccBroker->findZeroPortTag(dcc->szParam5.ptr());
+ if(t)
+ {
+ dcc->szParam4.sprintf("%u",t->m_uResumePosition);
+ g_pDccBroker->removeZeroPortTag(dcc->szParam5.ptr());
+ } else {
+ // this should never happen since we always add
+ // a zero port tag for out outgoing requests
+ // but well... maybe the user did something behing our back...
+ dcc->szParam4 = "0"; // no resume possible in this case
+ }
+
+ // swap the tag and the filename (we have added a fileoffer with this tag)
+ dcc->szParam1 = dcc->szParam5;
+ dcc->szParam5 = "";
+
+ dccModuleParseDccRecv(dcc);
+ return;
+ }
+
+ // First of all we check the transfer limits
+ dcc->szParam1=dcc->pConsole->decodeText(dcc->szParam1);
+ if(!dcc_module_check_limits(dcc))return;
+ if(!dcc_module_check_concurrent_transfers_limit(dcc))return;
+
+ // Then we ensure that the data that the remote end has sent are valid
+ if(!dcc_module_normalize_target_data(dcc,dcc->szParam2,dcc->szParam3))return;
+
+ if(!(dcc->szParam4.isUnsignedNum()))
+ {
+ if(!dcc->ctcpMsg->msg->haltOutput())
+ {
+ dcc->ctcpMsg->msg->console()->output(KVI_OUT_DCCMSG,
+ __tr2qs_ctx("The above request is broken: The fourth parameter should be the file size but does not appear to be an unsigned number, trying to continue","dcc"),dcc->szParam4.ptr());
+ }
+ dcc->szParam4 = __tr2qs_ctx("<unknown size>","dcc");
+ }
+
+ if(dcc->szParam1.contains('/'))
+ {
+ if(!dcc->ctcpMsg->msg->haltOutput())
+ {
+ dcc->ctcpMsg->msg->console()->output(KVI_OUT_DCCMSG,
+ __tr2qs_ctx("The above request is broken: The filename contains path components, stripping the leading path and trying to continue","dcc"),dcc->szParam1.ptr());
+ }
+ dcc->szParam1.cutToLast('/');
+ }
+
+ KviStr szExtensions = dcc->szType;
+ szExtensions.cutRight(4); // cut off SEND
+
+ bool bTurboExtension = szExtensions.contains('T',false);
+#ifdef COMPILE_SSL_SUPPORT
+ bool bSSLExtension = szExtensions.contains('S',false);
+#else //!COMPILE_SSL_SUPPORT
+ if(szExtensions.contains('S',false))
+ {
+ dcc_module_request_error(dcc,__tr2qs_ctx("This executable has been compiled without SSL support, the SSL extension to DCC SEND is not available","dcc"));
+ return;
+ }
+#endif //!COMPILE_SSL_SUPPORT
+
+ KviDccDescriptor * d = new KviDccDescriptor(dcc->pConsole);
+ d->szNick = dcc->ctcpMsg->pSource->nick();
+ d->szUser = dcc->ctcpMsg->pSource->username();
+ d->szHost = dcc->ctcpMsg->pSource->host();
+ dcc_fill_local_nick_user_host(d,dcc);
+
+ d->szIp = dcc->szParam2.ptr();
+ d->szPort = dcc->szParam3.ptr();
+ d->szFileName = dcc->szParam1.ptr();
+ d->szFileSize = dcc->szParam4.ptr();
+
+ if(d->szPort=="0" && dcc->szParam5.hasData())
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolDccSendFakeAddressByDefault))
+ {
+ d->szFakeIp = KVI_OPTION_STRING(KviOption_stringDefaultDccFakeAddress);
+ if(d->szFakeIp.isEmpty())KVI_OPTION_BOOL(KviOption_boolDccSendFakeAddressByDefault) = false;
+ }
+ d->setZeroPortRequestTag(dcc->szParam5.ptr());
+ QString tmp;
+ if(!dcc_kvs_get_listen_ip_address(0,d->console(),tmp))d->szListenIp = "0.0.0.0";
+ else d->szListenIp=QString(tmp);
+ d->szListenPort = "0"; // any port is OK
+ d->bSendRequest = true;
+ d->szLocalFileSize = d->szFileSize;
+ }
+
+ d->bActive = !d->isZeroPortRequest(); // we have to connect unless it is a zero port request
+
+ d->bResume = false;
+ d->bRecvFile = true;
+ d->bIsTdcc = bTurboExtension;
+ d->bNoAcks = d->bIsTdcc;
+#ifdef COMPILE_SSL_SUPPORT
+ d->bIsSSL = bSSLExtension;
+#endif
+ d->bOverrideMinimize = false;
+ d->bAutoAccept = KVI_OPTION_BOOL(KviOption_boolAutoAcceptDccSend);
+
+ d->bIsIncomingAvatar = g_pApp->findPendingAvatarChange(dcc->pConsole,d->szNick,d->szFileName);
+ dcc_module_set_dcc_type(d,"RECV");
+ if(KVI_OPTION_BOOL(KviOption_boolAutoAcceptIncomingAvatars))d->bAutoAccept = d->bAutoAccept || d->bIsIncomingAvatar;
+ d->triggerCreationEvent();
+
+ g_pDccBroker->recvFileManage(d);
+}
+
+static void dccModuleParseDccAccept(KviDccRequest *dcc)
+{
+ // this is usually DCC ACCEPT <filename> <port> <resumesize>
+ // but may be also
+ // DCC ACCEPT <filename> 0 <resumesize> <tag>
+ if(!g_pDccBroker->handleResumeAccepted(dcc->szParam1.ptr(),dcc->szParam2.ptr(),dcc->szParam4.ptr()))
+ {
+//#warning "IF KviOption_boolReplyCtcpErrmsgOnInvalidAccept..."
+ if(!dcc->ctcpMsg->msg->haltOutput())
+ {
+ KviStr szError(KviStr::Format,__tr2qs_ctx("Can't proceed with DCC RECV: Transfer not initiated for file %s on port %s","dcc"),dcc->szParam1.ptr(),dcc->szParam2.ptr());
+ dcc_module_request_error(dcc,szError.ptr());
+ }
+ }
+}
+
+static void dccModuleParseDccResume(KviDccRequest *dcc)
+{
+ // This is usually RESUME <filename> <port> <resumesize>
+
+ // when a zero port request is initiated by us we send out
+ // DCC SEND <filename> <fakeipaddress> 0 <filesize> <tag>
+ // and if the remote party wants to resume then we get
+ // DCC RESUME <filename> 0 <resumesize> <tag>
+ // and we eventually reply with
+ // DCC ACCEPT <filename> 0 <resumesize> <tag>
+ // and we finally get
+ // DCC SEND <filename> <remoteip> <remoteport> <filesize> <tag>
+
+ bool bOk;
+ unsigned int filePos = dcc->szParam3.toUInt(&bOk);
+ if(!bOk)
+ {
+ if(!dcc->ctcpMsg->msg->haltOutput())
+ {
+ KviStr szError(KviStr::Format,__tr2qs_ctx("Invalid resume position argument '%s'","dcc"),dcc->szParam3.ptr());
+ dcc_module_request_error(dcc,szError.ptr());
+ }
+ return;
+ }
+
+ if(!g_pDccBroker->handleResumeRequest(dcc,dcc->szParam1.ptr(),dcc->szParam2.ptr(),filePos,dcc->szParam4.ptr()))
+ {
+//#warning "IF KviOption_boolReplyCtcpErrmsgOnInvalidResume..."
+ if(!dcc->ctcpMsg->msg->haltOutput())
+ {
+ KviStr szError(KviStr::Format,
+ __tr2qs_ctx("Can't proceed with DCC SEND: Transfer not initiated for file %s on port %s, or invalid resume size","dcc"),
+ dcc->szParam1.ptr(),dcc->szParam2.ptr());
+ dcc_module_request_error(dcc,szError.ptr());
+ }
+ }
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// RECV
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+static void dccModuleParseDccRecv(KviDccRequest * dcc)
+{
+ // DCC [TS]RECV <filename> <ipaddr> <port> <resume-filesize>
+ if(!dcc_module_check_limits(dcc))return;
+ if(!dcc_module_check_concurrent_transfers_limit(dcc))return;
+
+ if(!dcc_module_normalize_target_data(dcc,dcc->szParam2,dcc->szParam3))return;
+
+ if(!(dcc->szParam4.isUnsignedNum()))
+ {
+ if(!dcc->ctcpMsg->msg->haltOutput())
+ {
+ dcc->ctcpMsg->msg->console()->outputNoFmt(KVI_OUT_DCCMSG,
+ __tr2qs_ctx("The above request has resume file size missing, assuming a resume file size of 0","dcc"));
+ }
+ dcc->szParam4 = "0";
+ }
+
+ if(dcc->szParam1.contains('/'))
+ {
+ if(!dcc->ctcpMsg->msg->haltOutput())
+ {
+ dcc->ctcpMsg->msg->console()->output(KVI_OUT_DCCMSG,
+ __tr2qs_ctx("The above request is broken: The filename contains path components, stripping the leading path and trying to continue","dcc"),dcc->szParam1.ptr());
+ }
+ dcc->szParam1.cutToLast('/');
+ }
+
+ KviStr szExtensions = dcc->szType;
+ szExtensions.cutRight(4); // cut off RECV
+
+ bool bTurboExtension = szExtensions.contains('T',false);
+#ifdef COMPILE_SSL_SUPPORT
+ bool bSSLExtension = szExtensions.contains('S',false);
+#else //!COMPILE_SSL_SUPPORT
+ if(szExtensions.contains('S',false))
+ {
+ dcc_module_request_error(dcc,__tr2qs_ctx("This executable has been compiled without SSL support, the SSL extension to DCC RECV is not available","dcc"));
+ return;
+ }
+#endif //!COMPILE_SSL_SUPPORT
+
+ // If we have a file offer for this...do it automatically
+ KviSharedFile * o = g_pSharedFilesManager->lookupSharedFile(dcc->szParam1.ptr(),dcc->ctcpMsg->pSource,0);
+ if(o)
+ {
+
+ unsigned int uResumeSize = dcc->szParam4.toUInt(); // this will NEVER fail
+ if(uResumeSize >= o->fileSize())
+ {
+ // senseless request
+ KviStr szError(KviStr::Format,
+ __tr2qs_ctx("Invalid RECV request: Position %u is is larger than file size","dcc"),uResumeSize);
+ dcc_module_request_error(dcc,szError.ptr());
+ return;
+ }
+
+ // ok...we have requested this send
+// #warning "Maybe remove this file offer now ?"
+ KviDccDescriptor * d = new KviDccDescriptor(dcc->pConsole);
+
+ d->szNick = dcc->ctcpMsg->pSource->nick();
+ d->szUser = dcc->ctcpMsg->pSource->user();
+ d->szHost = dcc->ctcpMsg->pSource->host();
+
+ d->szFileName = dcc->szParam1.ptr();
+ d->szFileSize = dcc->szParam4.ptr();
+
+ //d->bResume = false; // This is actually useless
+
+ d->szLocalFileName = o->absFilePath();
+ d->szLocalFileSize.setNum(o->fileSize()); // Should we look it up again ?
+
+
+ d->bRecvFile = false;
+ d->bNoAcks = bTurboExtension;
+
+ d->bAutoAccept = true;
+ d->bIsIncomingAvatar = false;
+
+ d->bIsTdcc = bTurboExtension;
+#ifdef COMPILE_SSL_SUPPORT
+ d->bIsSSL = bSSLExtension;
+#endif
+
+ d->bOverrideMinimize = false;
+
+ // We know everything
+ dcc_fill_local_nick_user_host(d,dcc);
+
+
+ d->bDoTimeout = true;
+
+ d->szIp = dcc->szParam2.ptr();
+ d->szPort = dcc->szParam3.ptr();
+
+ d->bActive = true;
+ dcc_module_set_dcc_type(d,"SEND");
+ d->triggerCreationEvent();
+ g_pDccBroker->sendFileExecute(0,d);
+
+ return;
+
+ } else {
+
+ dcc->ctcpMsg->msg->console()->output(KVI_OUT_DCCMSG,
+ __tr2qs_ctx("%Q [%Q@%Q] is ready to receive the file \"%s\"","dcc"),
+ &(dcc->ctcpMsg->pSource->nick()),
+ &(dcc->ctcpMsg->pSource->username()),
+ &(dcc->ctcpMsg->pSource->host()),
+ dcc->szParam1.ptr());
+ dcc->ctcpMsg->msg->console()->output(KVI_OUT_DCCMSG,
+ __tr2qs_ctx("The remote client is listening on interface %s and port %s","dcc"),dcc->szParam2.ptr(),dcc->szParam3.ptr());
+ KviStr szSwitches = "-c";
+ if(bTurboExtension)szSwitches.prepend("-t ");
+#ifdef COMPILE_SSL_SUPPORT
+ if(bSSLExtension)szSwitches.prepend("-s ");
+#endif
+ dcc->ctcpMsg->msg->console()->output(KVI_OUT_DCCMSG,
+ __tr2qs_ctx("Use %c\r![!dbl]dcc.send %s -i=%s -p=%s %Q\r/dcc.send %s -i=%s -p=%s %Q\r%c to send the file (or double-click on the socket)","dcc"),
+ KVI_TEXT_BOLD,
+ szSwitches.ptr(),
+ dcc->szParam2.ptr(),dcc->szParam3.ptr(),&(dcc->ctcpMsg->pSource->nick()),
+ szSwitches.ptr(),
+ dcc->szParam2.ptr(),dcc->szParam3.ptr(),&(dcc->ctcpMsg->pSource->nick()),
+ KVI_TEXT_BOLD);
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// RSEND
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+static void dccModuleParseDccRSend(KviDccRequest *dcc)
+{
+ // DCC RSEND <filename> <filesize>
+//#warning "Ignore files depending on file type ? (MediaType ?)"
+ //
+ // We have received a DCC RSEND request in the following form
+ //
+ // DCC [ST]RSEND <filename> <filesize>
+ //
+ dcc->szParam1 = dcc->pConsole->decodeText(dcc->szParam1);
+ if(!dcc_module_check_limits(dcc))return;
+ if(!dcc_module_check_concurrent_transfers_limit(dcc))return;
+
+ if(!(dcc->szParam2.isUnsignedNum()))
+ {
+ if(!dcc->ctcpMsg->msg->haltOutput())
+ {
+ dcc->ctcpMsg->msg->console()->output(KVI_OUT_DCCMSG,
+ __tr2qs_ctx("The above request is broken: The fourth parameter should be the file size but does not appear to be an unsigned number; trying to continue","dcc"),dcc->szParam2.ptr());
+ }
+ dcc->szParam2 = __tr_ctx("<unknown size>","dcc");
+ }
+
+ if(dcc->szParam1.contains('/'))
+ {
+ if(!dcc->ctcpMsg->msg->haltOutput())
+ {
+ dcc->ctcpMsg->msg->console()->output(KVI_OUT_DCCMSG,
+ __tr2qs_ctx("The above request is broken: The filename contains path components, stripping the leading path and trying to continue","dcc"),dcc->szParam1.ptr());
+ }
+ dcc->szParam1.cutToLast('/');
+ }
+
+ KviStr szExtensions = dcc->szType;
+ szExtensions.cutRight(4); // cut off SEND
+
+ bool bTurboExtension = szExtensions.contains('T',false);
+#ifdef COMPILE_SSL_SUPPORT
+ bool bSSLExtension = szExtensions.contains('S',false);
+#else //!COMPILE_SSL_SUPPORT
+ if(szExtensions.contains('S',false))
+ {
+ dcc_module_request_error(dcc,__tr2qs_ctx("This executable has been compiled without SSL support, the SSL extension to DCC RSEND is not available","dcc"));
+ return;
+ }
+#endif //!COMPILE_SSL_SUPPORT
+
+//#warning "When behind a firewall, we should reply an error message and avoid setting up the listening connection"
+
+ KviDccDescriptor * d = new KviDccDescriptor(dcc->pConsole);
+ d->szNick = dcc->ctcpMsg->pSource->nick();
+ d->szUser = dcc->ctcpMsg->pSource->username();
+ d->szHost = dcc->ctcpMsg->pSource->host();
+ d->szIp = __tr2qs_ctx("(unknown)","dcc");
+ d->szPort = d->szIp;
+ QString tmp;
+ if(!dcc_kvs_get_listen_ip_address(0,d->console(),tmp))
+ {
+ d->console()->output(KVI_OUT_DCCMSG,
+ __tr2qs_ctx("No suitable interface to listen on, trying to continue anyway...","dcc"));
+ d->szListenIp = "0.0.0.0";
+ } else
+ d->szListenIp=QString(tmp);
+
+ d->szListenPort = "0";
+ dcc_fill_local_nick_user_host(d,dcc);
+
+
+ d->szFileName = dcc->szParam1.ptr();
+ d->szFileSize = dcc->szParam2.ptr();
+ d->bActive = false; // we have to listen!
+ d->bResume = false;
+ d->bRecvFile = true; // we have to receive the file!
+
+#ifdef COMPILE_SSL_SUPPORT
+ d->bIsSSL = bSSLExtension;
+#endif
+ d->bIsTdcc = bTurboExtension;
+ d->bSendRequest = true; // we have to send the [ST]RECV request back
+ d->bNoAcks = d->bIsTdcc;
+ d->bOverrideMinimize = false;
+ d->bAutoAccept = KVI_OPTION_BOOL(KviOption_boolAutoAcceptDccSend);
+ d->bIsIncomingAvatar = g_pApp->findPendingAvatarChange(dcc->pConsole,d->szNick.utf8().data(),d->szFileName.utf8().data());
+
+ if(KVI_OPTION_BOOL(KviOption_boolDccSendFakeAddressByDefault))
+ {
+ d->szFakeIp = KVI_OPTION_STRING(KviOption_stringDefaultDccFakeAddress);
+ if(d->szFakeIp.isEmpty())KVI_OPTION_BOOL(KviOption_boolDccSendFakeAddressByDefault) = false;
+ }
+
+ if(KVI_OPTION_BOOL(KviOption_boolAutoAcceptIncomingAvatars))d->bAutoAccept = d->bAutoAccept || d->bIsIncomingAvatar;
+
+ dcc_module_set_dcc_type(d,"RECV");
+ d->triggerCreationEvent();
+ g_pDccBroker->recvFileManage(d);
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// GET
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+static void dccModuleParseDccGet(KviDccRequest *dcc)
+{
+ // DCC [TS]GET <filename> [filesize]
+ // -> DCC [TS]SEND <filename> <ipaddr> <port> <filesize>
+ // ...
+ dcc->szParam1=dcc->pConsole->decodeText(dcc->szParam1);
+ bool bOk;
+ unsigned int uSize = dcc->szParam2.toUInt(&bOk);
+ if(!bOk)uSize = 0;
+
+ if(!dcc_module_check_limits(dcc))return;
+ if(!dcc_module_check_concurrent_transfers_limit(dcc))return;
+
+ KviStr szExtensions = dcc->szType;
+ szExtensions.cutRight(3); // cut off GET
+
+ bool bTurboExtension = szExtensions.contains('T',false);
+#ifdef COMPILE_SSL_SUPPORT
+ bool bSSLExtension = szExtensions.contains('S',false);
+#else //!COMPILE_SSL_SUPPORT
+ if(szExtensions.contains('S',false))
+ {
+ dcc_module_request_error(dcc,__tr2qs_ctx("This executable has been compiled without SSL support, the SSL extension to DCC GET is not available","dcc"));
+ return;
+ }
+#endif //!COMPILE_SSL_SUPPORT
+
+ KviSharedFile * o = g_pSharedFilesManager->lookupSharedFile(dcc->szParam1.ptr(),dcc->ctcpMsg->pSource,uSize);
+ if(!o)
+ {
+ if(!dcc->ctcpMsg->msg->haltOutput())
+ {
+ KviStr szError(KviStr::Format,
+ __tr2qs_ctx("No file offer named '%s' (with size %s) available for %Q [%Q@%Q]","dcc"),
+ dcc->szParam1.ptr(),uSize > 0 ? dcc->szParam2.ptr() : __tr_ctx("\"any\"","dcc"),
+ &(dcc->ctcpMsg->pSource->nick()),
+ &(dcc->ctcpMsg->pSource->username()),
+ &(dcc->ctcpMsg->pSource->host()));
+ dcc_module_request_error(dcc,szError.ptr());
+ }
+ return;
+ }
+
+//#warning "IF NOT IGNORE DCC GET!"
+
+//#warning "CREATE IT MINIMIZED ETC..."
+//#warning "MAYBE USE A DIALOG TO ACCEPT THE REQUEST ?"
+//#warning "DO NOT ACCEPT /etc/* requests..."
+
+ if(KVI_OPTION_BOOL(KviOption_boolCantAcceptIncomingDccConnections))
+ {
+ // we have to use DCC RSEND , otherwise it will not work
+ KviStr szSubproto("RSEND");
+ szSubproto.prepend(szExtensions);
+
+
+ QString szFileName = QFileInfo(o->absFilePath()).fileName();
+ if(o->name() != szFileName)
+ {
+ // BUG
+ // If the file offer was added with a name that is senseless (like "mediaXYZ" for an *.mp3 file)
+ // then we would be going to RSEND that name here: the remote user woulnd't be
+ // able to recognize the file.
+ // Here we add another temporary offer with the right filename.
+
+ // now add a file offer , so he we will accept it automatically
+ // 120 secs is a reasonable timeout
+ QString szMask;
+ dcc->ctcpMsg->pSource->mask(szMask,KviIrcMask::NickUserHost);
+
+ KviSharedFile * pOld = o;
+ o = g_pSharedFilesManager->addSharedFile(szFileName,o->absFilePath(),szMask,120);
+ if(!o)o = pOld; // give up (FIXME: should we notify that ?)
+ }
+
+ if(!dcc->ctcpMsg->msg->haltOutput())
+ {
+ dcc->ctcpMsg->msg->console()->output(KVI_OUT_DCCMSG,
+ __tr2qs_ctx("Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering DCC %s since we can't accept incoming connections (user option)","dcc"),
+ &(dcc->ctcpMsg->pSource->nick()),
+ &(dcc->ctcpMsg->pSource->username()),
+ &(dcc->ctcpMsg->pSource->host()),dcc->szParam1.ptr(),
+ &(o->absFilePath()),szSubproto.ptr());
+ }
+
+ dcc->pConsole->connection()->sendFmtData("PRIVMSG %s :%cDCC %s %s %u%c",
+ dcc->pConsole->connection()->encodeText(dcc->ctcpMsg->pSource->nick()).data(),
+ 0x01,szSubproto.ptr(),
+ dcc->pConsole->connection()->encodeText(dcc->szParam1.ptr()).data(),o->fileSize(),0x01);
+ return;
+ }
+
+
+ KviDccDescriptor * d = new KviDccDescriptor(dcc->pConsole);
+ d->szNick = dcc->ctcpMsg->pSource->nick();
+ d->szLocalFileName = o->absFilePath();
+ d->szUser = dcc->ctcpMsg->pSource->username();
+ d->szHost = dcc->ctcpMsg->pSource->host();
+ d->bRecvFile = false;
+ dcc_fill_local_nick_user_host(d,dcc);
+
+ QString tmp;
+ if(!dcc_kvs_get_listen_ip_address(0,d->console(),tmp))
+ {
+ d->console()->output(KVI_OUT_DCCMSG,
+ __tr2qs_ctx("No suitable interface to listen on, trying to continue anyway...","dcc"));
+ d->szListenIp = "0.0.0.0";
+ } else
+ d->szListenIp=QString(tmp);
+//#warning "DO STH WITH THIS PORT (HOW TO SPECIFY IT ?)"
+ d->szListenPort = "0"; // any port is ok
+
+ if(KVI_OPTION_BOOL(KviOption_boolDccSendFakeAddressByDefault))
+ {
+ d->szFakeIp = KVI_OPTION_STRING(KviOption_stringDefaultDccFakeAddress);
+ if(d->szFakeIp.isEmpty())KVI_OPTION_BOOL(KviOption_boolDccSendFakeAddressByDefault) = false;
+ }
+
+ d->bDoTimeout = true;
+ d->szIp = __tr2qs_ctx("(unknown)","dcc");
+ d->szPort = d->szIp;
+ d->bActive = false;
+ d->bSendRequest = true;
+ d->bIsTdcc = bTurboExtension;
+#ifdef COMPILE_SSL_SUPPORT
+ d->bIsSSL = bSSLExtension;
+#endif
+ d->bNoAcks = d->bIsTdcc;
+ d->bOverrideMinimize = false;
+
+ dcc_module_set_dcc_type(d,"SEND");
+
+ if(!dcc->ctcpMsg->msg->haltOutput())
+ {
+ dcc->ctcpMsg->msg->console()->output(KVI_OUT_DCCMSG,
+ __tr2qs_ctx("Accepting file request from %Q [%Q@%Q] for '%s' (real file: %Q), offering DCC %Q","dcc"),
+ &(dcc->ctcpMsg->pSource->nick()),
+ &(dcc->ctcpMsg->pSource->username()),
+ &(dcc->ctcpMsg->pSource->host()),
+ dcc->szParam1.ptr(),
+ &(o->absFilePath()),&(d->szType));
+ }
+ d->triggerCreationEvent();
+ g_pDccBroker->sendFileExecute(0,d);
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// VOICE
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+static void dccModuleParseDccVoice(KviDccRequest *dcc)
+{
+ //
+ // We have received a DCC VOICE request in the following form:
+ //
+ // DCC VOICE codec <ipaddress> <port> <sample-rate>
+ //
+ // This means that we're requested to setup an ACTIVE voice connection
+ // ... Easy task :)
+ //
+
+ if(!dcc_module_check_limits(dcc))return;
+
+ if(!dcc_module_normalize_target_data(dcc,dcc->szParam2,dcc->szParam3))return;
+
+#ifdef COMPILE_DISABLE_DCC_VOICE
+ if(!dcc->ctcpMsg->msg->haltOutput())
+ {
+ dcc->ctcpMsg->msg->console()->output(KVI_OUT_DCCERROR,
+ __tr2qs_ctx("The above request cannot be accepted: DCC VOICE support not enabled at compilation time ","dcc"));
+ return;
+ }
+#endif
+ // Actually unused parameter
+ if(!kvi_dcc_voice_is_valid_codec(dcc->szParam1.ptr()))
+ {
+ if(!dcc->ctcpMsg->msg->haltOutput())
+ {
+ dcc->ctcpMsg->msg->console()->output(KVI_OUT_DCCERROR,
+ __tr2qs_ctx("The above request cannot be accepted: Unsupported codec '%s'","dcc"),dcc->szParam1.ptr());
+ return;
+ }
+ }
+
+ bool bOk;
+
+ int iSampleRate = dcc->szParam4.toInt(&bOk);
+ if(!bOk)
+ {
+ if(!dcc->ctcpMsg->msg->haltOutput())
+ {
+ dcc->ctcpMsg->msg->console()->output(KVI_OUT_DCCMSG,
+ __tr2qs_ctx("The above request appears to be broken: Invalid sample-rate '%s', defaulting to 8000","dcc"),dcc->szParam4.ptr());
+ }
+ iSampleRate = 8000;
+ }
+
+
+ KviDccDescriptor * d = new KviDccDescriptor(dcc->pConsole);
+ d->szNick = dcc->ctcpMsg->pSource->nick();
+ d->szUser = dcc->ctcpMsg->pSource->username();
+ d->szHost = dcc->ctcpMsg->pSource->host();
+ dcc_fill_local_nick_user_host(d,dcc);
+
+
+ d->szIp = dcc->szParam2.ptr();
+ d->szPort = dcc->szParam3.ptr();
+ d->bActive = true; // we have to connect
+ d->bIsTdcc = false;
+ d->bNoAcks = false; // this has no meaning in voice
+ d->szCodec = dcc->szParam1;
+ d->iSampleRate = iSampleRate;
+ d->bOverrideMinimize = false;
+ d->bAutoAccept = KVI_OPTION_BOOL(KviOption_boolAutoAcceptDccVoice);
+ dcc_module_set_dcc_type(d,"VOICE");
+ d->triggerCreationEvent();
+ g_pDccBroker->activeVoiceManage(d);
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// CANVAS
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+static void dccModuleParseDccCanvas(KviDccRequest *dcc)
+{
+ //
+ // We have received a DCC CANVAS request in the following form:
+ //
+ // DCC CANVAS unused <ipaddress> <port>
+ //
+ // This means that we're requested to setup an ACTIVE canvas connection
+ // ... Easy task :)
+ //
+ if(!dcc_module_check_limits(dcc))return;
+
+ if(!dcc_module_normalize_target_data(dcc,dcc->szParam2,dcc->szParam3))return;
+
+// Actually unused parameter
+// if(!(kvi_strEqualCI("canvas",dcc->szParam1.ptr())))
+// {
+// if(!dcc->ctcpMsg->msg->haltOutput())
+// {
+// dcc->ctcpMsg->msg->console()->output(KVI_OUT_DCCMSG,
+// __tr("The above request is broken: the second parameter is '%s' and shoud be 'chat'; trying to continue"),dcc->szParam1.ptr());
+// }
+// }
+#ifdef COMPILE_DCC_CANVAS
+ KviDccDescriptor * d = new KviDccDescriptor(dcc->pConsole);
+ d->szNick = dcc->ctcpMsg->pSource->nick();
+ d->szUser = dcc->ctcpMsg->pSource->username();
+ d->szHost = dcc->ctcpMsg->pSource->host();
+ dcc_fill_local_nick_user_host(d,dcc);
+
+
+ d->szIp = dcc->szParam2.ptr();
+ d->szPort = dcc->szParam3.ptr();
+ d->bActive = true; // we have to connect
+ d->bIsTdcc = false;
+ d->bNoAcks = false; // this has no meaning in canvas
+ d->bOverrideMinimize = false;
+ d->bAutoAccept = KVI_OPTION_BOOL(KviOption_boolAutoAcceptDccCanvas);
+ dcc_module_set_dcc_type(d,"CANVAS");
+ d->triggerCreationEvent();
+ g_pDccBroker->activeCanvasManage(d);
+#endif
+}
+
+
+static void dccModuleParseDccList(KviDccRequest *dcc)
+{
+ // DCC LIST <mask> <ipaddr> <port>
+ // FIXME!
+}
+
+
+
+typedef void (*dccParseProc)(KviDccRequest *);
+typedef struct _dccParseProcEntry
+{
+ const char * type;
+ dccParseProc proc;
+} dccParseProcEntry;
+
+#define KVI_NUM_KNOWN_DCC_TYPES 27
+
+static dccParseProcEntry dccParseProcTable[KVI_NUM_KNOWN_DCC_TYPES]=
+{
+ { "CHAT" , dccModuleParseDccChat },
+ { "SCHAT" , dccModuleParseDccChat },
+ { "SEND" , dccModuleParseDccSend },
+ { "TSEND" , dccModuleParseDccSend },
+ { "SSEND" , dccModuleParseDccSend },
+ { "TSSEND" , dccModuleParseDccSend },
+ { "STSEND" , dccModuleParseDccSend },
+ { "GET" , dccModuleParseDccGet },
+ { "SGET" , dccModuleParseDccGet },
+ { "TGET" , dccModuleParseDccGet },
+ { "STGET" , dccModuleParseDccGet },
+ { "TSGET" , dccModuleParseDccGet },
+ { "LIST" , dccModuleParseDccList },
+ { "ACCEPT" , dccModuleParseDccAccept },
+ { "RESUME" , dccModuleParseDccResume },
+ { "RECV" , dccModuleParseDccRecv },
+ { "SRECV" , dccModuleParseDccRecv },
+ { "TRECV" , dccModuleParseDccRecv },
+ { "TSRECV" , dccModuleParseDccRecv },
+ { "STRECV" , dccModuleParseDccRecv },
+ { "RSEND" , dccModuleParseDccRSend },
+ { "SRSEND" , dccModuleParseDccRSend },
+ { "TRSEND" , dccModuleParseDccRSend },
+ { "STRSEND", dccModuleParseDccRSend },
+ { "TSRSEND", dccModuleParseDccRSend },
+ { "CANVAS" , dccModuleParseDccCanvas },
+ { "VOICE" , dccModuleParseDccVoice }
+};
+
+
+
+// We want C linkage on this one: we want to be able to dlsym() it with a simple name
+// FIXME: Is this portable enough ? Or is better to have a table entry ?
+
+KVIMODULEEXPORTFUNC void dccModuleCtcpDccParseRoutine(KviDccRequest *dcc)
+{
+ dcc->szType.toUpper();
+
+ for(int i=0;i<KVI_NUM_KNOWN_DCC_TYPES;i++)
+ {
+ if(kvi_strEqualCS(dccParseProcTable[i].type,dcc->szType.ptr()))
+ {
+ (dccParseProcTable[i].proc)(dcc);
+ return;
+ }
+ }
+ // ops...we don't know this dcc type
+ if(!dcc->ctcpMsg->msg->haltOutput())
+ {
+ KviStr szError(KviStr::Format,
+ __tr2qs_ctx("Unknown DCC type '%s'","dcc"),dcc->szType.ptr());
+ dcc_module_request_error(dcc,szError.ptr());
+ }
+}
diff --git a/src/modules/dcc/send.cpp b/src/modules/dcc/send.cpp
new file mode 100644
index 00000000..c6cc1182
--- /dev/null
+++ b/src/modules/dcc/send.cpp
@@ -0,0 +1,1898 @@
+//=============================================================================
+//
+// File : send.cpp
+// Creation date : Tue Sep 20 09 2000 15:14:14 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "send.h"
+#include "broker.h"
+#include "marshal.h"
+#include "broker.h"
+#include "window.h"
+#include "kvi_styled_controls.h"
+
+#ifdef COMPILE_ON_WINDOWS
+ // Ugly Windoze compiler...
+ #include "dialogs.h"
+#endif
+
+#define _KVI_DEBUG_CHECK_RANGE_
+#include "kvi_debug.h"
+#include "kvi_app.h"
+#include "kvi_options.h"
+#include "kvi_ircview.h"
+#include "kvi_iconmanager.h"
+#include "kvi_locale.h"
+#include "kvi_error.h"
+#include "kvi_out.h"
+#include "kvi_netutils.h"
+#include "kvi_console.h"
+#include "kvi_frame.h"
+#include "kvi_malloc.h"
+#include "kvi_memmove.h"
+#include "kvi_thread.h"
+#include "kvi_ircsocket.h"
+
+#include "kvi_mediatype.h"
+#include "kvi_socket.h"
+#include "kvi_kvs_eventtriggers.h"
+#include "kvi_parameterlist.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectionuserinfo.h"
+#include "kvi_sparser.h"
+#include "kvi_kvs_script.h"
+
+#include <qevent.h>
+#include <qfile.h>
+#include <qpainter.h>
+#include <qdatetime.h>
+#include <qglobal.h>
+#include <qcheckbox.h>
+#include <qspinbox.h>
+#include <qlayout.h>
+#include <qpushbutton.h>
+
+#define INSTANT_BANDWIDTH_CHECK_INTERVAL_IN_MSECS 3000
+#define INSTANT_BANDWIDTH_CHECK_INTERVAL_IN_SECS 3
+
+// This limit, when multiplied by INSTANT_BANDWIDTH_CHECK_INTERVAL_IN_SECS
+// must fit in 31 bits (0x7fffffff)! (because of data size limits)
+#define MAX_DCC_BANDWIDTH_LIMIT 0x1fffffff
+
+//#include <unistd.h> //close()
+
+// FIXME: SSL Support here!
+// FIXME: The events OnDCCConnect etc are in wrong places here...!
+
+extern KviDccBroker * g_pDccBroker;
+
+extern KVIRC_API KviMediaManager * g_pMediaManager; // kvi_app.cpp
+
+
+static KviPointerList<KviDccFileTransfer> * g_pDccFileTransfers = 0;
+static QPixmap * g_pDccFileTransferIcon = 0;
+
+//#warning "The events that have a KviStr data pointer should become real classes, that take care of deleting the data pointer!"
+//#warning "Otherwise, when left undispatched we will be leaking memory (event class destroyed but not the data ptr)"
+
+KviDccRecvThread::KviDccRecvThread(QObject * par,kvi_socket_t fd,KviDccRecvThreadOptions * opt)
+: KviDccThread(par,fd)
+{
+ m_pOpt = opt;
+ m_iAverageSpeed = -1;
+ m_iInstantSpeed = -1;
+ m_iFilePosition = 0;
+
+ m_iTotalReceivedBytes = 0;
+ m_iInstantReceivedBytes = 0;
+ m_pFile = 0;
+ m_pTimeInterval = new KviMSecTimeInterval();
+ m_uStartTime = 0;
+ m_uInstantSpeedInterval = 0;
+}
+
+KviDccRecvThread::~KviDccRecvThread()
+{
+ if(m_pOpt)delete m_pOpt;
+ if(m_pFile)delete m_pFile;
+ delete m_pTimeInterval;
+}
+
+bool KviDccRecvThread::sendAck(int filePos)
+{
+ int size = htonl(filePos);
+ if(kvi_socket_send(m_fd,(void *)(&size),4) != 4)
+ {
+ postErrorEvent(KviError_acknowledgeError);
+ return false;
+ }
+ return true;
+}
+
+void KviDccRecvThread::updateStats()
+{
+ m_uInstantSpeedInterval += m_pTimeInterval->mark();
+ unsigned long uCurTime = m_pTimeInterval->secondsCounter();
+
+ m_pMutex->lock();
+ unsigned long uElapsedTime = uCurTime - m_uStartTime;
+ if(uElapsedTime < 1)uElapsedTime = 1;
+
+ m_iFilePosition = m_pFile->at();
+ m_iAverageSpeed = m_iTotalReceivedBytes / uElapsedTime;
+
+ if(m_uInstantSpeedInterval > INSTANT_BANDWIDTH_CHECK_INTERVAL_IN_MSECS)
+ {
+ unsigned int uMSecsOfTheNextInterval = 0;
+ if(m_uInstantSpeedInterval < (INSTANT_BANDWIDTH_CHECK_INTERVAL_IN_MSECS + (INSTANT_BANDWIDTH_CHECK_INTERVAL_IN_MSECS / 2)))
+ uMSecsOfTheNextInterval = m_uInstantSpeedInterval - INSTANT_BANDWIDTH_CHECK_INTERVAL_IN_MSECS;
+ m_iInstantSpeed = (m_iInstantReceivedBytes * 1000) / m_uInstantSpeedInterval;
+ m_iInstantReceivedBytes = 0;
+ m_uInstantSpeedInterval = uMSecsOfTheNextInterval;
+ } else {
+ if(uElapsedTime <= INSTANT_BANDWIDTH_CHECK_INTERVAL_IN_SECS)
+ m_iInstantSpeed = m_iAverageSpeed;
+ }
+ m_pMutex->unlock();
+}
+
+void KviDccRecvThread::postMessageEvent(const char * m)
+{
+ KviThreadDataEvent<KviStr> * e = new KviThreadDataEvent<KviStr>(KVI_DCC_THREAD_EVENT_MESSAGE);
+ e->setData(new KviStr(m));
+ postEvent(parent(),e);
+}
+
+// FIXME: This stuff should be somewhat related to the 1448 bytes TCP basic packet size
+#define KVI_DCC_RECV_BLOCK_SIZE 8192
+#define KVI_DCC_RECV_75PERCENTOF_BLOCK_SIZE 6150
+
+void KviDccRecvThread::run()
+{
+ // take care of sleeping a bit if we can't read stuff
+ // so we don't hog the CPU too much...
+ int iFailedSelects = 0;
+ // take care of sleeping a bit if we get a lot of short reads
+ // so we don't hog the CPU too much...
+ int iShortReadQuantifier = 0;
+ // the algorithm is as follows:
+ // attempt to read KVI_DCC_RECV_BLOCK_SIZE bytes
+ // iShortReadQuantifier += ((KVI_DCC_RECV_75PERCENT_OF_BLOCK_SIZE - realReadedBytes) / 42);
+ // thus we gain points if we read less than 75% of the requested size
+ // and we loose points otherwise
+ // there are nearly 24 points per KB
+ // if(iShortReadQuantifier > 10)
+ // msleep(iShortReadQuantifier);
+ // also never sleep more than 500 msecs since it will
+ // rise our exit latency too much
+
+ m_pTimeInterval->mark();
+ m_pMutex->lock();
+ m_uStartTime = m_pTimeInterval->secondsCounter();
+ m_pMutex->unlock();
+
+ int iProbableTerminationTime = 0;
+
+ m_pFile = new QFile(QString::fromUtf8(m_pOpt->szFileName.ptr()));
+
+ if(m_pOpt->bResume)
+ {
+ if(!m_pFile->open(IO_WriteOnly | IO_Append))
+ {
+ postErrorEvent(KviError_cantOpenFileForAppending);
+ goto exit_dcc;
+ } // else pFile is already at end
+ } else {
+ if(!m_pFile->open(IO_WriteOnly))
+ {
+ postErrorEvent(KviError_cantOpenFileForWriting);
+ goto exit_dcc;
+ }
+ }
+
+ if(m_pOpt->bSendZeroAck && (!m_pOpt->bNoAcks))
+ {
+ if(!sendAck(m_pFile->at()))goto exit_dcc;
+ }
+
+ for(;;)
+ {
+ // Dequeue events
+ while(KviThreadEvent * e = dequeueEvent())
+ {
+ if(e->id() == KVI_THREAD_EVENT_TERMINATE)
+ {
+ delete e;
+ goto exit_dcc;
+ } else {
+ // Other events are senseless to us
+ delete e;
+ }
+ }
+
+ bool bCanRead;
+ bool bDummy;
+
+ if(kvi_select(m_fd,&bCanRead,&bDummy,15000))
+ {
+ // reset sleep time
+
+ if(bCanRead)
+ {
+ iFailedSelects = 0;
+
+ // Read a data block
+ char buffer[KVI_DCC_RECV_BLOCK_SIZE];
+
+ m_pMutex->lock(); // FIXME: how to remove this lock ?
+ unsigned int uMaxPossible = (m_pOpt->uMaxBandwidth < MAX_DCC_BANDWIDTH_LIMIT) ? m_pOpt->uMaxBandwidth * INSTANT_BANDWIDTH_CHECK_INTERVAL_IN_SECS : MAX_DCC_BANDWIDTH_LIMIT * INSTANT_BANDWIDTH_CHECK_INTERVAL_IN_SECS;
+ m_pMutex->unlock();
+ unsigned int uToRead = uMaxPossible > ((unsigned int)(m_iInstantReceivedBytes)) ? uMaxPossible - m_iInstantReceivedBytes : 0;
+ if(uToRead > KVI_DCC_RECV_BLOCK_SIZE)uToRead = KVI_DCC_RECV_BLOCK_SIZE;
+
+ if(uToRead > 0)
+ {
+ int readLen = kvi_socket_recv(m_fd,buffer,uToRead);
+
+ if(readLen > 0)
+ {
+ // Readed something useful...write back
+ if((m_pOpt->iTotalFileSize > -1) && ((readLen + (int)m_pFile->at()) > m_pOpt->iTotalFileSize))
+ {
+ postMessageEvent(__tr2qs_ctx("WARNING: The peer is sending garbage data past the end of the file","dcc"));
+ postMessageEvent(__tr2qs_ctx("WARNING: Ignoring data past the declared end of file and closing the connection","dcc"));
+
+ readLen = m_pOpt->iTotalFileSize - m_pFile->at();
+ if(readLen > 0)
+ {
+ if(m_pFile->writeBlock(buffer,readLen) != readLen)
+ postErrorEvent(KviError_fileIOError);
+ }
+ break;
+
+ } else {
+ if(m_pFile->writeBlock(buffer,readLen) != readLen)
+ {
+ postErrorEvent(KviError_fileIOError);
+ break;
+ }
+ }
+
+ // Update stats
+ m_iTotalReceivedBytes += readLen;
+ m_iInstantReceivedBytes += readLen;
+
+ updateStats();
+ // Now send the ack
+ if(m_pOpt->bNoAcks)
+ {
+ // No acks...
+ // Interrupt if the whole file has been received
+ if(m_pOpt->iTotalFileSize > 0)
+ {
+ if(((int)(m_pFile->at())) == m_pOpt->iTotalFileSize)
+ {
+ // Received the whole file...die
+ KviThreadEvent * e = new KviThreadEvent(KVI_DCC_THREAD_EVENT_SUCCESS);
+ postEvent(parent(),e);
+ break;
+ }
+ }
+ } else {
+ // Must send the ack... the peer must close the connection
+ if(!sendAck(m_pFile->at()))break;
+ }
+
+ // now take care of short reads
+ iShortReadQuantifier += ((KVI_DCC_RECV_75PERCENTOF_BLOCK_SIZE - readLen) / 42);
+ if(iShortReadQuantifier > 10)
+ {
+ // we're having short reads.. sleep a while
+ // but don't allow it to go too high: 0.45 sec is really a lot
+ if(iShortReadQuantifier > 500)
+ iShortReadQuantifier = 500;
+ msleep(iShortReadQuantifier);
+ } else {
+ // don't allow it to go too low
+ if(iShortReadQuantifier < -500)
+ iShortReadQuantifier = -500;
+ }
+
+ } else {
+ updateStats();
+ // Read problem...
+
+ if(readLen == 0)
+ {
+ // readed EOF..
+ if((((int)(m_pFile->at())) == m_pOpt->iTotalFileSize) || (m_pOpt->iTotalFileSize < 0))
+ {
+ // success if we got the whole file or if we don't know the file size (we trust the peer)
+ KviThreadEvent * e = new KviThreadEvent(KVI_DCC_THREAD_EVENT_SUCCESS);
+ postEvent(parent(),e);
+ break;
+ }
+ }
+ if(!handleInvalidSocketRead(readLen))break;
+ }
+ } else {
+ updateStats();
+
+ // reached the bandwidth limit: slow down a bit
+ if(m_uInstantSpeedInterval < (INSTANT_BANDWIDTH_CHECK_INTERVAL_IN_MSECS - 100))
+ msleep(100);
+ else if(m_uInstantSpeedInterval < (INSTANT_BANDWIDTH_CHECK_INTERVAL_IN_MSECS - 20))
+ msleep(20);
+ }
+ } else {
+ // Can't read stuff (can just write)
+ updateStats();
+
+ // sleep up to 300 msecs (if data arrives...we want low exit latency here)
+ if(iFailedSelects < 100)iFailedSelects++;
+ updateStats();
+ if(iFailedSelects > 3)
+ msleep(3 * iFailedSelects);
+
+ if(((int)(m_pFile->at())) == m_pOpt->iTotalFileSize)
+ {
+ // Wait for the peer to close the connection
+ if(iProbableTerminationTime == 0)
+ {
+ iProbableTerminationTime = (int)kvi_unixTime();
+ m_pFile->flush();
+ postMessageEvent(__tr2qs_ctx("Data transfer terminated, waiting 30 seconds for the peer to close the connection...","dcc"));
+ // FIXME: Close the file ?
+ } else {
+ int iDiff = (((int)kvi_unixTime()) - iProbableTerminationTime);
+ if(iDiff > 30)
+ {
+ // success if we got the whole file or if we don't know the file size (we trust the peer)
+ postMessageEvent(__tr2qs_ctx("Data transfer was terminated 30 seconds ago, closing the connection","dcc"));
+ KviThreadEvent * e = new KviThreadEvent(KVI_DCC_THREAD_EVENT_SUCCESS);
+ postEvent(parent(),e);
+ break;
+ }
+ }
+ }
+ }
+ // include the artificial delay if needed
+ if(m_pOpt->iIdleStepLengthInMSec > 0)
+ {
+ debug("LOOP: artificial delay");
+ msleep(m_pOpt->iIdleStepLengthInMSec);
+ }
+ } else {
+ // sleep up to 200 msecs (if data arrives...we want low exit latency here)
+ if(iFailedSelects < 100)iFailedSelects++;
+ updateStats();
+ if(iFailedSelects > 3)
+ msleep(2 * iFailedSelects);
+ }
+ }
+
+exit_dcc:
+ if(m_pFile)
+ {
+ m_pFile->close();
+ delete m_pFile;
+ m_pFile = 0;
+ }
+ kvi_socket_close(m_fd);
+ m_fd = KVI_INVALID_SOCKET;
+}
+
+void KviDccRecvThread::initGetInfo()
+{
+ m_pMutex->lock();
+}
+
+void KviDccRecvThread::doneGetInfo()
+{
+ m_pMutex->unlock();
+}
+
+KviDccSendThread::KviDccSendThread(QObject * par,kvi_socket_t fd,KviDccSendThreadOptions * opt)
+: KviDccThread(par,fd)
+{
+ m_pOpt = opt;
+ // stats
+ m_iAverageSpeed = -1;
+ m_iInstantSpeed = -1;
+ m_iFilePosition = 0;
+ m_iTotalSentBytes = 0;
+ m_pTimeInterval = new KviMSecTimeInterval();
+ m_uStartTime = 0;
+ m_uInstantSpeedInterval = 0;
+}
+
+KviDccSendThread::~KviDccSendThread()
+{
+ if(m_pOpt)delete m_pOpt;
+ delete m_pTimeInterval;
+}
+
+void KviDccSendThread::updateStats()
+{
+ m_uInstantSpeedInterval += m_pTimeInterval->mark();
+
+ m_pMutex->lock();
+ unsigned long uElapsedTime = m_pTimeInterval->secondsCounter() - m_uStartTime;
+ if(uElapsedTime < 1)uElapsedTime = 1;
+
+ if(m_pOpt->bNoAcks)
+ {
+ // There are no acks : the avg bandwidth is based on the sent bytes
+ m_iAverageSpeed = m_iTotalSentBytes / uElapsedTime;
+ } else {
+ // acknowledges : we compute the avg bandwidth based on the acks we receive
+ m_iAverageSpeed = (m_iAckedBytes - m_pOpt->iStartPosition) / uElapsedTime;
+ }
+
+ if(m_uInstantSpeedInterval >= INSTANT_BANDWIDTH_CHECK_INTERVAL_IN_MSECS)
+ {
+ // we often overcount the time interval of 10-20 msecs
+ // and thus our bandwidth is used less than requested.
+ // for this reason we try to account the time in excess
+ // to the next period in order to balance the bandwidth usage.
+ unsigned long uMSecsOfNextPeriodUsed = 0;
+ if(m_uInstantSpeedInterval > INSTANT_BANDWIDTH_CHECK_INTERVAL_IN_MSECS)
+ {
+ if(m_uInstantSpeedInterval < (INSTANT_BANDWIDTH_CHECK_INTERVAL_IN_MSECS + (INSTANT_BANDWIDTH_CHECK_INTERVAL_IN_MSECS / 2)))
+ {
+ uMSecsOfNextPeriodUsed = m_uInstantSpeedInterval - INSTANT_BANDWIDTH_CHECK_INTERVAL_IN_MSECS;
+ m_uInstantSpeedInterval = INSTANT_BANDWIDTH_CHECK_INTERVAL_IN_MSECS;
+ }
+ // else we have been delayed for a time comparable to a period
+ // and thus we can't recover the bandwidth... let it go as it does...
+ }
+ m_iInstantSpeed = (m_iInstantSentBytes * 1000) / m_uInstantSpeedInterval;
+ m_uInstantSpeedInterval = uMSecsOfNextPeriodUsed;
+ m_iInstantSentBytes = 0;
+ } else {
+ if(uElapsedTime <= INSTANT_BANDWIDTH_CHECK_INTERVAL_IN_SECS)
+ m_iInstantSpeed = m_iAverageSpeed;
+ }
+ m_pMutex->unlock();
+}
+
+void KviDccSendThread::run()
+{
+ m_pTimeInterval->mark();
+ m_pMutex->lock();
+ m_uStartTime = m_pTimeInterval->secondsCounter();
+ m_pMutex->unlock();
+
+ m_iTotalSentBytes = 0;
+ m_iInstantSentBytes = 0;
+ int iFailedSelects = 0;
+ char ackbuffer[4];
+ int iBytesInAckBuffer = 0;
+ Q_UINT32 iLastAck = 0;
+
+ if(m_pOpt->iPacketSize < 32)m_pOpt->iPacketSize = 32;
+ char * buffer = (char *)kvi_malloc(m_pOpt->iPacketSize * sizeof(char));
+
+ QFile * pFile = new QFile(QString::fromUtf8(m_pOpt->szFileName.ptr()));
+
+ if(!pFile->open(IO_ReadOnly))
+ {
+ postErrorEvent(KviError_cantOpenFileForReading);
+ goto exit_dcc;
+ }
+
+ if(pFile->size() < 1)
+ {
+ postErrorEvent(KviError_cantSendAZeroSizeFile);
+ goto exit_dcc;
+ }
+
+ if(m_pOpt->iStartPosition > 0)
+ {
+ // seek
+ if(!(pFile->at(m_pOpt->iStartPosition)))
+ {
+ postErrorEvent(KviError_fileIOError);
+ goto exit_dcc;
+ }
+ }
+
+ iLastAck = m_pOpt->iStartPosition;
+
+ for(;;)
+ {
+ // Dequeue events
+ while(KviThreadEvent * e = dequeueEvent())
+ {
+ if(e->id() == KVI_THREAD_EVENT_TERMINATE)
+ {
+ delete e;
+ goto exit_dcc;
+ } else {
+ // Other events are senseless to us
+ delete e;
+ }
+ }
+
+ bool bCanRead;
+ bool bCanWrite;
+
+ if(kvi_select(m_fd,&bCanRead,&bCanWrite,15000))
+ {
+ // reset the sleep time
+ iFailedSelects = 0;
+ if(bCanRead)
+ {
+ if(!m_pOpt->bNoAcks)
+ {
+ int iAckBytesToRead = 4 - iBytesInAckBuffer;
+ int readLen = kvi_socket_recv(m_fd,(void *)(ackbuffer + iBytesInAckBuffer),iAckBytesToRead);
+ if(readLen > 0)
+ {
+ iBytesInAckBuffer += readLen;
+ if(iBytesInAckBuffer == 4)
+ {
+ Q_UINT32 iNewAck = ntohl(*((Q_UINT32 *)ackbuffer));
+ if((iNewAck > pFile->at()) || (iNewAck < iLastAck))
+ {
+ // the peer is drunk or is trying to fool us
+ postErrorEvent(KviError_acknowledgeError);
+ break;
+ }
+ iLastAck = iNewAck;
+ iBytesInAckBuffer = 0;
+ }
+ } else {
+ if(!handleInvalidSocketRead(readLen))break;
+ }
+
+ // update stats
+ m_pMutex->lock(); // is this really necessary ?
+ m_iAckedBytes = iLastAck;
+ m_pMutex->unlock();
+
+ if(iLastAck >= pFile->size())
+ {
+ KviThreadEvent * e = new KviThreadEvent(KVI_DCC_THREAD_EVENT_SUCCESS);
+ postEvent(parent(),e);
+ break;
+ }
+ } else {
+ // No acknowledges
+ if(m_pOpt->bIsTdcc)
+ {
+ // We expect the remote end to close the connection when the whole file has been sent
+ if(pFile->atEnd())
+ {
+ int iAck;
+ int readLen = kvi_socket_recv(m_fd,(void *)&iAck,4);
+ if(readLen == 0)
+ {
+ // done...success
+ updateStats();
+ KviThreadEvent * e = new KviThreadEvent(KVI_DCC_THREAD_EVENT_SUCCESS);
+ postEvent(parent(),e);
+ break;
+ } else {
+ if(readLen < 0)
+ {
+ if(!handleInvalidSocketRead(readLen))break;
+ } else {
+ KviThreadDataEvent<KviStr> * e = new KviThreadDataEvent<KviStr>(KVI_DCC_THREAD_EVENT_MESSAGE);
+ e->setData(new KviStr(__tr2qs_ctx("WARNING: Received data in a DCC TSEND, there should be no acknowledges","dcc")));
+ postEvent(parent(),e);
+ }
+ }
+ }
+ }
+ }
+ }
+ if(bCanWrite)
+ {
+ if(!pFile->atEnd())
+ {
+ if(m_pOpt->bFastSend || m_pOpt->bNoAcks || (iLastAck == pFile->at()))
+ {
+ // maximum readable size
+ int toRead = pFile->size() - pFile->at();
+ // the max number of bytes we can send in this interval (bandwidth limit)
+ m_pMutex->lock(); // FIXME: how to remove this lock ?
+ int iMaxPossible = m_pOpt->uMaxBandwidth < MAX_DCC_BANDWIDTH_LIMIT ? m_pOpt->uMaxBandwidth * INSTANT_BANDWIDTH_CHECK_INTERVAL_IN_SECS : MAX_DCC_BANDWIDTH_LIMIT * INSTANT_BANDWIDTH_CHECK_INTERVAL_IN_SECS;
+ m_pMutex->unlock();
+ if(iMaxPossible < m_iInstantSentBytes)toRead = 0; // already sent too much!
+ else {
+ iMaxPossible -= m_iInstantSentBytes;
+ if(toRead > iMaxPossible)toRead = iMaxPossible;
+ }
+ // limit to packet size
+ if(toRead > m_pOpt->iPacketSize)toRead = m_pOpt->iPacketSize;
+
+ int written = 0;
+ if(toRead > 0)
+ {
+ // read data
+ int readed = pFile->readBlock(buffer,toRead);
+ if(readed < toRead)
+ {
+ postErrorEvent(KviError_fileIOError);
+ break;
+ }
+ // send it out
+ written = kvi_socket_send(m_fd,buffer,toRead);
+ if(written < toRead)
+ {
+ if(written < 0)
+ {
+ // error ?
+ if(!handleInvalidSocketRead(written))break;
+ } else {
+ // seek back to the right position
+ pFile->at(pFile->at() - (toRead - written));
+ }
+ }
+ } else {
+ // just nothing to send out in this interval
+ // sleep a while
+ if(m_uInstantSpeedInterval < (INSTANT_BANDWIDTH_CHECK_INTERVAL_IN_MSECS - 100))
+ {
+ msleep(100);
+ } else if(m_uInstantSpeedInterval < (INSTANT_BANDWIDTH_CHECK_INTERVAL_IN_MSECS - 20))
+ {
+ msleep(20);
+ }
+ }
+
+ m_iTotalSentBytes += written;
+ m_iInstantSentBytes += written;
+ m_iFilePosition = pFile->at();
+ updateStats();
+ }
+ } else {
+ if(m_pOpt->bNoAcks && !m_pOpt->bIsTdcc)
+ {
+ // at end of the file in a blind dcc send...
+ // not in a tdcc: we can close the file...
+ updateStats();
+ KviThreadEvent * e = new KviThreadEvent(KVI_DCC_THREAD_EVENT_SUCCESS);
+ postEvent(parent(),e);
+ break;
+ } else {
+ // upload finished but we're waiting for the last ack
+ // sleep a bit: don't lag the kernie too much while waiting
+ msleep(100);
+ }
+ }
+ }
+ } else {
+ // after 2 failed selects start to sleep
+ if(iFailedSelects > 3)
+ {
+ // sleep up to 200 msecs
+ if(iFailedSelects < 100)iFailedSelects++;
+ msleep(3 * iFailedSelects);
+ } else {
+ iFailedSelects++;
+ }
+ }
+
+ // include the artificial delay if needed
+ if(m_pOpt->iIdleStepLengthInMSec > 0)
+ {
+ msleep(m_pOpt->iIdleStepLengthInMSec);
+ }
+ }
+
+exit_dcc:
+ kvi_free(buffer);
+ pFile->close();
+ delete pFile;
+ pFile = 0;
+ kvi_socket_close(m_fd);
+ m_fd = KVI_INVALID_SOCKET;
+}
+
+void KviDccSendThread::initGetInfo()
+{
+ m_pMutex->lock();
+}
+
+void KviDccSendThread::doneGetInfo()
+{
+ m_pMutex->unlock();
+}
+
+
+KviDccFileTransfer::KviDccFileTransfer(KviDccDescriptor * dcc)
+: KviFileTransfer()
+{
+ init(); // ensure we're initialized
+ g_pDccFileTransfers->append(this);
+
+ m_pResumeTimer = 0;
+ m_pBandwidthDialog = 0;
+
+ KviQString::sprintf(m_szTransferIdString,__tr2qs_ctx("TRANSFER %d","dcc"),id());
+
+ m_pDescriptor = dcc;
+ m_pDescriptor->setTransfer(this);
+
+ m_pMarshal = new KviDccMarshal(this);
+
+ connect(m_pMarshal,SIGNAL(error(int)),this,SLOT(handleMarshalError(int)));
+ connect(m_pMarshal,SIGNAL(connected()),this,SLOT(connected()));
+ connect(m_pMarshal,SIGNAL(inProgress()),this,SLOT(connectionInProgress()));
+#ifdef COMPILE_SSL_SUPPORT
+ connect(m_pMarshal,SIGNAL(startingSSLHandshake()),this,SLOT(startingSSLHandshake()));
+ connect(m_pMarshal,SIGNAL(sslError(const char *)),this,SLOT(sslError(const char *)));
+#endif
+
+ m_szDccType = dcc->bIsTdcc ? (dcc->bRecvFile ? "TRECV" : "TSEND") : (dcc->bRecvFile ? "RECV" : "SEND");
+
+ m_pSlaveRecvThread = 0;
+ m_pSlaveSendThread = 0;
+
+ m_tTransferStartTime = 0;
+ m_tTransferEndTime = 0;
+
+ m_szStatusString = __tr2qs_ctx("Setting up the connection","dcc");
+ m_eGeneralStatus = Connecting;
+
+ bool bOk;
+ m_uTotalFileSize = dcc->bRecvFile ? dcc->szFileSize.toUInt(&bOk) : dcc->szLocalFileSize.toUInt(&bOk);
+ if(!bOk)m_uTotalFileSize = 0;
+
+ if(m_pDescriptor->bRecvFile)
+ m_uMaxBandwidth = KVI_OPTION_BOOL(KviOption_boolLimitDccRecvSpeed) ? KVI_OPTION_UINT(KviOption_uintMaxDccRecvSpeed) : MAX_DCC_BANDWIDTH_LIMIT;
+ else
+ m_uMaxBandwidth = KVI_OPTION_BOOL(KviOption_boolLimitDccSendSpeed) ? KVI_OPTION_UINT(KviOption_uintMaxDccSendSpeed) : MAX_DCC_BANDWIDTH_LIMIT;
+
+ startConnection();
+}
+
+KviDccFileTransfer::~KviDccFileTransfer()
+{
+ g_pDccFileTransfers->removeRef(this);
+
+ if(m_pResumeTimer)delete m_pResumeTimer;
+ if(m_pBandwidthDialog)delete m_pBandwidthDialog;
+
+ if(m_pSlaveRecvThread)
+ {
+ m_pSlaveRecvThread->terminate();
+ delete m_pSlaveRecvThread;
+ m_pSlaveRecvThread = 0;
+ }
+
+ if(m_pSlaveSendThread)
+ {
+ m_pSlaveSendThread->terminate();
+ delete m_pSlaveSendThread;
+ m_pSlaveSendThread = 0;
+ }
+
+ KviThreadManager::killPendingEvents(this);
+
+ delete m_pDescriptor;
+ delete m_pMarshal;
+}
+
+void KviDccFileTransfer::bandwidthDialogDestroyed()
+{
+ m_pBandwidthDialog = 0;
+}
+
+KviWindow * KviDccFileTransfer::eventWindow()
+{
+ KviWindow *w = transferWindow();
+ if(w)return w;
+ return m_pDescriptor->console();
+}
+
+void KviDccFileTransfer::startConnection()
+{
+ if(!(m_pDescriptor->bActive))
+ {
+ // PASSIVE CONNECTION
+ m_szStatusString = __tr2qs_ctx("Attempting a passive DCC %1 connection","dcc").arg(m_szDccType.ptr());
+ outputAndLog(m_szStatusString);
+ } else {
+ // ACTIVE CONNECTION
+ m_szStatusString = __tr2qs_ctx("Attempting an active DCC %1 connection","dcc").arg(m_szDccType.ptr());
+ outputAndLog(m_szStatusString);
+ }
+
+
+ if(m_pDescriptor->bResume && m_pDescriptor->bRecvFile)
+ {
+ QString fName;
+ KviServerParser::encodeCtcpParameter(m_pDescriptor->szFileName.utf8().data(),fName);
+ if(m_pDescriptor->isZeroPortRequest())
+ {
+ m_pDescriptor->console()->connection()->sendFmtData("PRIVMSG %s :%cDCC RESUME %s %s %s %s%c",
+ m_pDescriptor->console()->connection()->encodeText(m_pDescriptor->szNick).data(),
+ 0x01,
+ m_pDescriptor->console()->connection()->encodeText(fName).data(),
+ m_pDescriptor->szPort.utf8().data(),
+ m_pDescriptor->szLocalFileSize.utf8().data(),
+ m_pDescriptor->zeroPortRequestTag(),0x01);
+ } else {
+ m_pDescriptor->console()->connection()->sendFmtData("PRIVMSG %s :%cDCC RESUME %s %s %s%c",
+ m_pDescriptor->console()->connection()->encodeText(m_pDescriptor->szNick).data(),
+ 0x01,
+ m_pDescriptor->console()->connection()->encodeText(fName).data(),
+ m_pDescriptor->szPort.utf8().data(),
+ m_pDescriptor->szLocalFileSize.utf8().data(),0x01);
+ }
+ m_szStatusString = __tr2qs_ctx("Sent DCC RESUME request to %1, waiting for ACCEPT","dcc").arg(m_pDescriptor->szNick);
+ outputAndLog(m_szStatusString);
+
+ // setup the resume timer: we don't want to wait forever
+
+ if(KVI_OPTION_UINT(KviOption_uintDccSocketTimeout) < 5)
+ KVI_OPTION_UINT(KviOption_uintDccSocketTimeout) = 5;
+
+ if(m_pResumeTimer)delete m_pResumeTimer;
+ m_pResumeTimer = new QTimer(this);
+ connect(m_pResumeTimer,SIGNAL(timeout()),this,SLOT(resumeTimedOut()));
+ m_pResumeTimer->start(KVI_OPTION_UINT(KviOption_uintDccSocketTimeout) * 1000,true);
+ } else {
+ listenOrConnect();
+ }
+
+ displayUpdate();
+}
+
+void KviDccFileTransfer::listenOrConnect()
+{
+ if(!(m_pDescriptor->bActive))
+ {
+ int ret = m_pMarshal->dccListen(m_pDescriptor->szListenIp,m_pDescriptor->szListenPort,m_pDescriptor->bDoTimeout);
+ if(ret != KviError_success)handleMarshalError(ret);
+ } else {
+ int ret = m_pMarshal->dccConnect(m_pDescriptor->szIp.utf8().data(),m_pDescriptor->szPort.utf8().data(),m_pDescriptor->bDoTimeout);
+ if(ret != KviError_success)handleMarshalError(ret);
+ }
+
+ displayUpdate();
+}
+
+void KviDccFileTransfer::resumeTimedOut()
+{
+ if(m_pResumeTimer)
+ {
+ delete m_pResumeTimer;
+ m_pResumeTimer = 0;
+ }
+ handleMarshalError(KviError_connectionTimedOut);
+}
+
+KviWindow * KviDccFileTransfer::dccMarshalOutputWindow()
+{
+ return transferWindow();
+}
+
+const char * KviDccFileTransfer::dccMarshalOutputContextString()
+{
+ return m_szTransferIdString.utf8().data();
+}
+
+void KviDccFileTransfer::die()
+{
+ delete this;
+}
+
+QString KviDccFileTransfer::localFileName()
+{
+ return m_pDescriptor->szLocalFileName;
+}
+
+void KviDccFileTransfer::abort()
+{
+ if(m_pSlaveRecvThread)m_pSlaveRecvThread->terminate();
+ if(m_pSlaveSendThread)m_pSlaveSendThread->terminate();
+ if(m_pMarshal)m_pMarshal->abort();
+
+ if(m_pDescriptor->bRecvFile)
+ g_pApp->fileDownloadTerminated(false,m_pDescriptor->szFileName.utf8().data(),m_pDescriptor->szLocalFileName.utf8().data(),m_pDescriptor->szNick.utf8().data(),__tr_ctx("Aborted","dcc"));
+
+ KviStr tmp;
+
+ if(m_pSlaveRecvThread)tmp.setNum(m_pSlaveRecvThread->receivedBytes());
+ else if(m_pSlaveSendThread)tmp.setNum(m_pSlaveSendThread->sentBytes());
+ else tmp = '0';
+
+ m_eGeneralStatus = Failure;
+ m_tTransferEndTime = kvi_unixTime();
+ m_szStatusString = __tr2qs_ctx("Transfer failed: ","dcc");
+ m_szStatusString += __tr2qs_ctx("Aborted","dcc");
+
+ KVS_TRIGGER_EVENT_3(KviEvent_OnDCCFileTransferFailed,eventWindow(),QString("Aborted by user"),QString(tmp.ptr()),m_pDescriptor->idString());
+
+ outputAndLog(KVI_OUT_DCCERROR,m_szStatusString);
+ displayUpdate();
+}
+
+
+void KviDccFileTransfer::fillContextPopup(KviTalPopupMenu * m,int column)
+{
+ m->insertItem(__tr2qs_ctx("Configure Bandwidth...","dcc"),this,SLOT(configureBandwidth()));
+ m->insertSeparator();
+ m->insertItem(__tr2qs_ctx("Resend DCC","dcc"),this,SLOT(retryDCC()));
+ m->insertItem(__tr2qs_ctx("Resend TDCC","dcc"),this,SLOT(retryTDCC()));
+ m->insertItem(__tr2qs_ctx("Resend RevDCC","dcc"),this,SLOT(retryRevDCC()));
+ /* FIX ME credo che il problema sia che se riavvio un trasferimento, a sua volta gia'
+ avviato, questo non ha irc contex, perche' la finestra "in cui e' nato"e' sta
+ quella della dcc. Conservarsi l'id della finestra? */
+ int id = m->insertItem(__tr2qs_ctx("Abort","dcc"),this,SLOT(abort()));
+ if(!active())m->setItemEnabled(id,false);
+}
+
+void KviDccFileTransfer::configureBandwidth()
+{
+ if(m_pBandwidthDialog)return;
+ m_pBandwidthDialog = new KviDccFileTransferBandwidthDialog(g_pFrame,this);
+ connect(m_pBandwidthDialog,SIGNAL(destroyed()),this,SLOT(bandwidthDialogDestroyed()));
+ m_pBandwidthDialog->setModal(true);
+ m_pBandwidthDialog->show();
+}
+
+void KviDccFileTransfer::retryDCC()
+{
+ abort();
+ QString szRemoteNick = m_pDescriptor->remoteNick();
+ QString szFileName = m_pDescriptor->localFileName();
+ QString szId;
+ szId.setNum(m_pDescriptor->id());
+ QString szCommand = "dcc.send -r=$console($dcc.irccontext(" + szId + ")) " + szRemoteNick + " " + "\"" + szFileName + "\"";
+ KviKvsScript::run(szCommand,g_pActiveWindow);
+}
+
+void KviDccFileTransfer::retryTDCC()
+{
+ abort();
+ QString szRemoteNick = m_pDescriptor->remoteNick();
+ QString szFileName = m_pDescriptor->localFileName();
+ QString szId;
+ szId.setNum(m_pDescriptor->id());
+ QString szCommand = "dcc.send -r=$console($dcc.irccontext(" + szId + ")) -t " + szRemoteNick + " " + "\"" + szFileName + "\"";
+ KviKvsScript::run(szCommand,g_pActiveWindow);
+}
+void KviDccFileTransfer::retryRevDCC()
+{
+ abort();
+ QString szRemoteNick = m_pDescriptor->remoteNick();
+ QString szFileName = m_pDescriptor->localFileName();
+ QString szId;
+ szId.setNum(m_pDescriptor->id());
+ QString szCommand = "dcc.rsend -z -r=$console($dcc.irccontext(" + szId + ")) " + szRemoteNick + " " + "\"" + szFileName + "\"";
+ KviKvsScript::run(szCommand,g_pActiveWindow);
+}
+
+void KviDccFileTransfer::fillStatusString(QString &szBuffer)
+{
+ switch(m_eGeneralStatus)
+ {
+ case Connecting:
+ szBuffer = "connecting";
+ break;
+ case Transferring:
+ szBuffer = "transferring";
+ break;
+ case Failure:
+ szBuffer = "failure";
+ break;
+ case Success:
+ szBuffer = "success";
+ break;
+ default:
+ szBuffer = "unknown";
+ break;
+ }
+}
+
+bool KviDccFileTransfer::active()
+{
+ return ((m_eGeneralStatus == Connecting) || (m_eGeneralStatus == Transferring));
+}
+
+int KviDccFileTransfer::bandwidthLimit()
+{
+ int iLimit = m_uMaxBandwidth; // we have the cached value anyway...
+ if(m_pDescriptor->bRecvFile)
+ {
+ if(m_pSlaveRecvThread)
+ {
+ m_pSlaveRecvThread->initGetInfo();
+ iLimit = (int)m_pSlaveRecvThread->bandwidthLimit();
+ m_pSlaveRecvThread->doneGetInfo();
+ if(iLimit < 0)iLimit = MAX_DCC_BANDWIDTH_LIMIT;
+ }
+ } else {
+ if(m_pSlaveSendThread)
+ {
+ m_pSlaveSendThread->initGetInfo();
+ iLimit = (int)m_pSlaveSendThread->bandwidthLimit();
+ m_pSlaveSendThread->doneGetInfo();
+ if(iLimit < 0)iLimit = MAX_DCC_BANDWIDTH_LIMIT;
+ }
+ }
+ return iLimit;
+}
+
+void KviDccFileTransfer::setBandwidthLimit(int iVal)
+{
+ if(iVal < 0)iVal = MAX_DCC_BANDWIDTH_LIMIT;
+ if(iVal > MAX_DCC_BANDWIDTH_LIMIT)iVal = MAX_DCC_BANDWIDTH_LIMIT;
+ m_uMaxBandwidth = iVal;
+ if(m_pDescriptor->bRecvFile)
+ {
+ if(m_pSlaveRecvThread)
+ {
+ m_pSlaveRecvThread->initGetInfo();
+ m_pSlaveRecvThread->setBandwidthLimit(iVal);
+ m_pSlaveRecvThread->doneGetInfo();
+ }
+ } else {
+ if(m_pSlaveSendThread)
+ {
+ m_pSlaveSendThread->initGetInfo();
+ m_pSlaveSendThread->setBandwidthLimit(iVal);
+ m_pSlaveSendThread->doneGetInfo();
+ }
+ }
+}
+
+unsigned int KviDccFileTransfer::averageSpeed()
+{
+ unsigned int iAvgBandwidth = 0;
+ if(m_pDescriptor->bRecvFile)
+ {
+ if(m_pSlaveRecvThread)
+ {
+ m_pSlaveRecvThread->initGetInfo();
+ iAvgBandwidth = (unsigned int)m_pSlaveRecvThread->averageSpeed();
+ m_pSlaveRecvThread->doneGetInfo();
+ }
+ } else {
+ if(m_pSlaveSendThread)
+ {
+ m_pSlaveSendThread->initGetInfo();
+ iAvgBandwidth = (unsigned int)m_pSlaveSendThread->averageSpeed();
+ m_pSlaveSendThread->doneGetInfo();
+ }
+ }
+ return iAvgBandwidth;
+}
+
+unsigned int KviDccFileTransfer::transferredBytes()
+{
+ unsigned int uTransferred = 0;
+ if(m_pDescriptor->bRecvFile)
+ {
+ if(m_pSlaveRecvThread)
+ {
+ m_pSlaveRecvThread->initGetInfo();
+ uTransferred = m_pSlaveRecvThread->filePosition();
+ m_pSlaveRecvThread->doneGetInfo();
+ }
+ } else {
+ if(m_pSlaveSendThread)
+ {
+ m_pSlaveSendThread->initGetInfo();
+ uTransferred = m_pSlaveSendThread->filePosition();
+ m_pSlaveSendThread->doneGetInfo();
+ }
+ }
+ return uTransferred;
+}
+
+void KviDccFileTransfer::displayPaint(QPainter * p,int column,int width,int height)
+{
+
+ QString txt;
+ bool bIsTerminated = ((m_eGeneralStatus == Success) || (m_eGeneralStatus == Failure));
+
+ switch(column)
+ {
+ case COLUMN_TRANSFERTYPE:
+ {
+ int xoffset = 0;
+ int yoffset = 0;
+ if(m_pDescriptor->bRecvFile)yoffset = 64;
+ switch(m_eGeneralStatus)
+ {
+ case Connecting: xoffset = 0; break;
+ case Transferring: xoffset = 48; break;
+ case Success: xoffset = 96; break;
+ case Failure: xoffset = 144; break;
+ }
+ p->drawPixmap(3,3,*g_pDccFileTransferIcon,xoffset,yoffset,48,64);
+ }
+ break;
+ case COLUMN_FILEINFO:
+ {
+
+ QFontMetrics fm(p->font());
+
+ QString szFrom = __tr2qs_ctx("From: ","dcc");
+ QString szTo = __tr2qs_ctx("To: ","dcc");
+
+ int daW1 = fm.width(szFrom);
+ int daW2 = fm.width(szTo);
+ if(daW1 < daW2)daW1 = daW2;
+ int iLineSpacing = fm.lineSpacing();
+
+ int iY = 4;
+
+ p->setPen(Qt::black);
+
+ KviStr szRemote(KviStr::Format,"dcc://%s@%s:%s/%s",m_pDescriptor->szNick.utf8().data(),m_pDescriptor->szIp.utf8().data(),m_pDescriptor->szPort.utf8().data(),
+ m_pDescriptor->szFileName.utf8().data());
+
+ p->drawText(4 + daW1,iY,width - (8 + daW1),height - 8,Qt::AlignTop | Qt::AlignLeft,
+ m_pDescriptor->bRecvFile ? szRemote.ptr() : m_pDescriptor->szLocalFileName.utf8().data());
+ iY += iLineSpacing;
+
+ p->drawText(4 + daW1,iY,width - (8 + daW1),height - 8,Qt::AlignTop | Qt::AlignLeft,
+ m_pDescriptor->bRecvFile ? m_pDescriptor->szLocalFileName.utf8().data() : szRemote.ptr());
+ iY += iLineSpacing;
+
+
+ p->setPen(Qt::darkGray);
+
+ p->drawText(4,4,width - 8,height - 8,Qt::AlignTop | Qt::AlignLeft,szFrom);
+ p->drawText(4,4 + iLineSpacing,width - 8,height - 8,Qt::AlignTop | Qt::AlignLeft,szTo);
+
+
+ p->setPen(QColor(180,180,200));
+
+ iLineSpacing += 2;
+
+ p->drawRect(4,height - (iLineSpacing + 4),width - 8,iLineSpacing);
+ p->fillRect(5,height - (iLineSpacing + 3),width - 10,iLineSpacing - 2,bIsTerminated ? QColor(210,210,210) : QColor(190,190,240));
+
+ p->setPen(Qt::black);
+
+ p->drawText(7,height - (iLineSpacing + 4),width - 14,iLineSpacing,Qt::AlignVCenter | Qt::AlignLeft,m_szStatusString);
+
+ }
+ break;
+ case COLUMN_PROGRESS:
+ {
+
+ QFontMetrics fm(p->font());
+
+ int iW = width - 8;
+ int iAvgBandwidth = -1;
+ int iInstantSpeed = -1;
+ int iAckedBytes = -1;
+
+ int iEta = -1;
+
+ unsigned int uTransferred = 0;
+
+ if(m_pDescriptor->bRecvFile)
+ {
+ if(m_pSlaveRecvThread)
+ {
+ m_pSlaveRecvThread->initGetInfo();
+ iAvgBandwidth = m_pSlaveRecvThread->averageSpeed();
+ iInstantSpeed = m_pSlaveRecvThread->instantSpeed();
+ uTransferred = m_pSlaveRecvThread->filePosition();
+ m_pSlaveRecvThread->doneGetInfo();
+ }
+ } else {
+ if(m_pSlaveSendThread)
+ {
+ m_pSlaveSendThread->initGetInfo();
+ iAvgBandwidth = m_pSlaveSendThread->averageSpeed();
+ iInstantSpeed = m_pSlaveSendThread->instantSpeed();
+ uTransferred = m_pSlaveSendThread->filePosition();
+ iAckedBytes = m_pSlaveSendThread->ackedBytes();
+ m_pSlaveSendThread->doneGetInfo();
+ }
+ }
+
+ p->setPen(bIsTerminated ? Qt::lightGray : QColor(210,210,240));
+ p->drawRect(4,4,iW,12);
+
+ iW -= 2;
+
+ if(m_uTotalFileSize > 0)
+ {
+ if(iAvgBandwidth > 0)
+ {
+ unsigned int uRemaining = m_uTotalFileSize - uTransferred;
+ iEta = uRemaining / iAvgBandwidth;
+ }
+
+ if(!m_pDescriptor->bNoAcks && (iAckedBytes > 0) && (iAckedBytes < ((int)(uTransferred))))
+ {
+ // we are sending a file and are getting acks
+
+ double dPerc1 = (double)(((double)uTransferred) * 100.0) / (double)m_uTotalFileSize;
+ int iL1 = (int) ((((double)iW) * dPerc1) / 100.0);
+ double dPerc2 = (double)(((double)iAckedBytes) * 100.0) / (double)m_uTotalFileSize;
+ int iL2 = (int) ((((double)iW) * dPerc2) / 100.0);
+ int iW2 = iL1 - iL2;
+ if(iW2 > 0)p->fillRect(5 + iL2,5,iW2,10,bIsTerminated ? QColor(150,130,110) : QColor(220,170,100));
+ p->fillRect(5,5,iL2,10,bIsTerminated ? QColor(140,110,110) : QColor(200,100,100));
+
+ txt = QString(__tr2qs_ctx("%1 of %2 (%3%)","dcc")).arg(KviQString::makeSizeReadable(iAckedBytes)).arg(KviQString::makeSizeReadable(m_uTotalFileSize)).arg(dPerc2,0,'f',2);
+ } else {
+ // we are receiving a file or not sending acks
+ double dPerc = (double)(((double)uTransferred) * 100.0) / (double)m_uTotalFileSize;
+ int iL = (int) ((((double)iW) * dPerc) / 100.0);
+ p->fillRect(5,5,iL,10,bIsTerminated ? QColor(140,110,110) : QColor(200,100,100));
+
+ txt = QString(__tr2qs_ctx("%1 of %2 (%3%)","dcc")).arg(KviQString::makeSizeReadable(uTransferred)).arg(KviQString::makeSizeReadable(m_uTotalFileSize)).arg(dPerc,0,'f',2);
+ }
+
+ } else {
+ txt = QString(__tr2qs_ctx("%1","dcc")).arg(KviQString::makeSizeReadable(uTransferred));
+ }
+
+ p->setPen(Qt::black);
+
+ p->drawText(4,19,width - 8,height - 8,Qt::AlignTop | Qt::AlignLeft,txt);
+
+ int iLeftHalf = (iW - 2) / 2;
+ int iRightHalf = iW - (iLeftHalf + 1);
+ int iLineSpacing = fm.lineSpacing() + 2;
+
+ if(!bIsTerminated)
+ {
+ txt = __tr2qs_ctx("Spd:","dcc");
+ txt += " ";
+ if(iInstantSpeed >= 0)
+ {
+ QString tmpisp;
+ KviNetUtils::formatNetworkBandwidthString(tmpisp,iInstantSpeed);
+ txt += tmpisp;
+ } else {
+ txt += "? B/s";
+ }
+ txt += " [";
+ } else {
+ txt = "";
+ }
+
+ txt += __tr2qs_ctx("Avg:","dcc");
+ txt += " ";
+ if(iAvgBandwidth >= 0)
+ {
+ QString tmpspd;
+ KviNetUtils::formatNetworkBandwidthString(tmpspd,iAvgBandwidth);
+ txt += tmpspd;
+ } else {
+ txt += "? B/s";
+ }
+
+ if(!bIsTerminated)
+ {
+ txt += "]";
+ }
+
+ int iDaH = height - (iLineSpacing + 4);
+
+ p->setPen(QColor(180,180,200));
+ p->drawRect(4,iDaH,iLeftHalf,iLineSpacing);
+ p->fillRect(5,iDaH + 1,iLeftHalf - 2,iLineSpacing - 2,bIsTerminated ? QColor(210,210,210) : QColor(190,190,240));
+ p->setPen(bIsTerminated ? Qt::darkGray : Qt::black);
+ p->drawText(6,iDaH,iLeftHalf - 4,iLineSpacing,Qt::AlignLeft | Qt::AlignVCenter,txt);
+
+ if(bIsTerminated)
+ {
+ if((m_tTransferStartTime != 0) && (m_tTransferEndTime != 0))
+ {
+ QString tot = KviTimeUtils::formatTimeInterval(kvi_timeSpan(m_tTransferEndTime,m_tTransferStartTime),KviTimeUtils::NoLeadingEmptyIntervals | KviTimeUtils::NoLeadingZeroes);
+ txt = "TOT: ";
+ txt += tot;
+ } else {
+ txt = "";
+ }
+ } else {
+ if(iEta >= 0)
+ {
+ QString eta = KviTimeUtils::formatTimeInterval(iEta,KviTimeUtils::NoLeadingEmptyIntervals | KviTimeUtils::NoLeadingZeroes);
+ txt = "ETA: ";
+ txt += eta;
+ } else {
+ txt = "ETA: ?";
+ }
+ }
+
+ p->setPen(QColor(180,180,200));
+ p->drawRect(width - (4 + iRightHalf),iDaH,iRightHalf,iLineSpacing);
+ p->fillRect(width - (3 + iRightHalf),iDaH + 1,iRightHalf - 2,iLineSpacing - 2,bIsTerminated ? QColor(210,210,210) : QColor(190,190,240));
+ p->setPen(bIsTerminated ? Qt::darkGray : Qt::black);
+ p->drawText(width - (2 + iRightHalf),iDaH,iRightHalf - 4,iLineSpacing,Qt::AlignLeft | Qt::AlignVCenter,txt);
+
+ }
+ break;
+ }
+
+}
+
+int KviDccFileTransfer::displayHeight(int iLineSpacing)
+{
+ int iH = (iLineSpacing * 3) + 10;
+ return iH >= 70 ? iH : 70;
+}
+
+QString KviDccFileTransfer::tipText()
+{
+
+ QString s;
+
+ s = QString("<table><tr><td bgcolor=\"#000000\"><font color=\"#FFFFFF\"><b>DCC %1 (ID %2)</b></font></td></tr>").arg(m_szDccType.ptr()).arg(id());
+
+ s += "<tr><td bgcolor=\"#404040\"><font color=\"#FFFFFF\">";
+ s += __tr2qs_ctx("Transfer Log","dcc");
+ s += "</font></td></tr>";
+ s += "<tr><td bgcolor=\"#C0C0C0\">";
+ s += m_szTransferLog;
+ s += "</td></tr>";
+ s += "<table>";
+
+ return s;
+}
+
+void KviDccFileTransfer::init()
+{
+ if(g_pDccFileTransfers)return;
+ g_pDccFileTransfers = new KviPointerList<KviDccFileTransfer>;
+ g_pDccFileTransfers->setAutoDelete(false);
+
+ QPixmap * pix = g_pIconManager->getImage("kvi_dccfiletransfericons.png");
+ if(pix)g_pDccFileTransferIcon = new QPixmap(*pix);
+ else g_pDccFileTransferIcon = new QPixmap(192,128);
+}
+
+void KviDccFileTransfer::done()
+{
+ if(!g_pDccFileTransfers)return;
+ while(KviDccFileTransfer * t = g_pDccFileTransfers->first())
+ delete t;
+ delete g_pDccFileTransfers;
+ g_pDccFileTransfers = 0;
+ delete g_pDccFileTransferIcon;
+ g_pDccFileTransferIcon = 0;
+}
+
+unsigned int KviDccFileTransfer::transferCount()
+{
+ if(!g_pDccFileTransfers)return 0;
+ return g_pDccFileTransfers->count();
+}
+
+KviDccFileTransfer * KviDccFileTransfer::nonFailedTransferWithLocalFileName(const QString &szLocalFileName)
+{
+ if(!g_pDccFileTransfers)return 0;
+ for(KviDccFileTransfer * t = g_pDccFileTransfers->first();t;t = g_pDccFileTransfers->next())
+ {
+#ifdef COMPILE_ON_WINDOWS
+ // on windows the file names are case insensitive
+ if(t->localFileName().lower() == szLocalFileName.lower())
+#else
+ if(t->localFileName() == szLocalFileName)
+#endif
+ {
+ if(t->m_eGeneralStatus != Failure)
+ return t;
+ }
+ }
+ return 0;
+}
+
+
+unsigned int KviDccFileTransfer::runningTransfersCount()
+{
+ if(!g_pDccFileTransfers)return 0;
+ unsigned int cnt = 0;
+ for(KviDccFileTransfer * t = g_pDccFileTransfers->first();t;t = g_pDccFileTransfers->next())
+ {
+ if(t->active())cnt++;
+ }
+ return cnt;
+}
+
+bool KviDccFileTransfer::handleResumeAccepted(const char * filename,const char * port,const char * szZeroPortTag)
+{
+ if(!g_pDccFileTransfers)return false;
+
+ for(KviDccFileTransfer * t = g_pDccFileTransfers->first();t;t = g_pDccFileTransfers->next())
+ {
+ if(t->resumeAccepted(filename,port,szZeroPortTag))return true;
+ }
+
+ return false;
+}
+
+bool KviDccFileTransfer::handleResumeRequest(const char * filename,const char * port,unsigned int filePos)
+{
+ if(!g_pDccFileTransfers)return false;
+
+ for(KviDccFileTransfer * t = g_pDccFileTransfers->first();t;t = g_pDccFileTransfers->next())
+ {
+ if(t->doResume(filename,port,filePos))return true;
+ }
+
+ return false;
+}
+
+void KviDccFileTransfer::outputAndLog(const QString &s)
+{
+ KviWindow * out = transferWindow();
+ addToTransferLog(s);
+ if(out)out->output(KVI_OUT_DCCMSG,"[%Q]: %Q",&m_szTransferIdString,&s);
+}
+
+void KviDccFileTransfer::outputAndLog(int msgtype,const QString &s)
+{
+ KviWindow * out = transferWindow();
+ addToTransferLog(s);
+ if(out)out->output(msgtype,"[%Q]: %Q",&m_szTransferIdString,&s);
+}
+
+
+void KviDccFileTransfer::addToTransferLog(const QString &s)
+{
+ QDateTime dt = QDateTime::currentDateTime();
+ QString ts;
+ ts.sprintf("[%4d.%2d.%2d %2d:%2d:%2d] ",dt.date().year(),dt.date().month(),dt.date().day(),dt.time().hour(),dt.time().minute(),dt.time().second());
+ m_szTransferLog += ts+s;
+ m_szTransferLog += "<br>";
+}
+
+
+void KviDccFileTransfer::connectionInProgress()
+{
+ if(m_pDescriptor->bActive)
+ {
+ // ACTIVE CONNECTION
+// if((kvi_strEqualCS(m_szDccType.ptr(), "RECV")) || (kvi_strEqualCS(m_szDccType.ptr(),"TRECV")))
+// {
+// // FIXME: that's not true!... we're NOT connected here
+// if(TRIGGER_EVENT_5PARAM_RETVALUE(KviEvent_OnDCCGetConnected,this,m_pDescriptor->szPort.ptr(),m_pDescriptor->szFileName.ptr(),m_pDescriptor->szNick.ptr(),m_pDescriptor->szUser.ptr(),m_pDescriptor->szHost.ptr()));
+// } else {
+// if(TRIGGER_EVENT_5PARAM_RETVALUE(KviEvent_OnDCCSendConnected,this,m_pDescriptor->szPort.ptr(),m_pDescriptor->szFileName.ptr(),m_pDescriptor->szNick.ptr(),m_pDescriptor->szUser.ptr(),m_pDescriptor->szHost.ptr()));
+// }
+//
+ m_szStatusString = __tr2qs_ctx("Contacting host %1 on port %2","dcc").arg(m_pDescriptor->szIp).arg(m_pDescriptor->szPort);
+ outputAndLog(m_szStatusString);
+ displayUpdate();
+ return;
+ }
+
+ // PASSIVE CONNECTION
+ m_szStatusString = __tr2qs_ctx("Listening on interface %1 port %2","dcc").arg(m_pMarshal->localIp()).arg(m_pMarshal->localPort());
+ outputAndLog(m_szStatusString);
+
+ if(m_pDescriptor->bSendRequest)
+ {
+ QString ip;
+ if(!m_pDescriptor->szFakeIp.isEmpty())
+ {
+ ip = m_pDescriptor->szFakeIp;
+ } else {
+ ip = m_pDescriptor->szListenIp;
+
+ if(KVI_OPTION_BOOL(KviOption_boolDccGuessIpFromServerWhenLocalIsUnroutable))
+ {
+ if(!KviNetUtils::isRoutableIpString(ip))
+ {
+ // try to get the IP that the IRC server can see
+ if(m_pDescriptor->console())
+ {
+ QString tmp = m_pDescriptor->console()->connection() ? m_pDescriptor->console()->connection()->userInfo()->hostIp() : "";
+ if(!tmp.isEmpty())
+ {
+ ip = tmp;
+ outputAndLog(__tr2qs_ctx("The local IP address is private, determining from IRC server: %1","dcc").arg(ip));
+ } else {
+ outputAndLog(__tr2qs_ctx("The local IP address is private, but unable to determine it from the IRC server","dcc"));
+ }
+ } else {
+ outputAndLog(__tr2qs_ctx("The local IP address is private, but have no IRC server to determine it from","dcc"));
+ }
+ }
+ }
+ }
+
+ KviStr port = !m_pDescriptor->szFakePort.isEmpty() ? m_pDescriptor->szFakePort : m_pMarshal->localPort();
+ //#warning "OPTION FOR SENDING 127.0.0.1 and so on (not an unsigned nuumber)"
+ struct in_addr a;
+ if(KviNetUtils::stringIpToBinaryIp(ip,&a))ip.setNum(htonl(a.s_addr));
+
+ QString tmp = m_pDescriptor->szFileName;
+ // just to be sure
+ KviQString::cutToLast(tmp,'/');
+ KviQString::cutToLast(tmp,'\\');
+
+ QString fName;
+
+ // BUG-TO-BUG mIrc compatibility
+ if(KVI_OPTION_BOOL(KviOption_boolDCCFileTransferReplaceOutgoingSpacesWithUnderscores))
+ tmp.replace(" ","_");
+
+ KviServerParser::encodeCtcpParameter(tmp.utf8().data(),fName);
+ // Zero port requests want DCC SEND as back-request
+ KviStr szReq;
+
+ if(m_pDescriptor->isZeroPortRequest())
+ {
+ szReq = "SEND";
+ m_pDescriptor->console()->connection()->sendFmtData("PRIVMSG %s :%cDCC %s %s %s %s %s %s%c",
+ m_pDescriptor->console()->connection()->encodeText(m_pDescriptor->szNick).data(),
+ 0x01,
+ m_pDescriptor->console()->connection()->encodeText(szReq.ptr()).data(),
+ m_pDescriptor->console()->connection()->encodeText(fName).data(),
+ ip.utf8().data(),port.ptr(),
+ m_pDescriptor->szFileSize.utf8().data(),m_pDescriptor->zeroPortRequestTag(),0x01);
+ } else {
+ szReq = m_szDccType;
+ m_pDescriptor->console()->connection()->sendFmtData("PRIVMSG %s :%cDCC %s %s %s %s %Q%c",
+ m_pDescriptor->console()->connection()->encodeText(m_pDescriptor->szNick).data(),
+ 0x01,
+ m_pDescriptor->console()->connection()->encodeText(szReq.ptr()).data(),
+ m_pDescriptor->console()->connection()->encodeText(fName).data(),
+ ip.utf8().data(),port.ptr(),
+ &(m_pDescriptor->szLocalFileSize),0x01);
+ }
+ outputAndLog(__tr2qs_ctx("Sent DCC %1 request to %2, waiting for remote client to connect...","dcc").arg(szReq.ptr()).arg(m_pDescriptor->szNick));
+ } else {
+ outputAndLog(__tr2qs_ctx("DCC %1 request not sent, awaiting manual connection","dcc").arg(m_szDccType.ptr()));
+ }
+
+ KVS_TRIGGER_EVENT_1(KviEvent_OnDCCFileTransferConnectionInProgress,eventWindow(),m_pDescriptor->idString());
+
+ displayUpdate();
+}
+
+void KviDccFileTransfer::startingSSLHandshake()
+{
+#ifdef COMPILE_SSL_SUPPORT
+ outputAndLog(KVI_OUT_SSL,__tr2qs_ctx("Low-level transport connection established","dcc"));
+ outputAndLog(KVI_OUT_SSL,__tr2qs_ctx("Starting Secure Socket Layer handshake","dcc"));
+#endif
+}
+
+void KviDccFileTransfer::sslError(const char * msg)
+{
+#ifdef COMPILE_SSL_SUPPORT
+ outputAndLog(KVI_OUT_DCCERROR,__tr2qs_ctx("[SSL ERROR]: %1","dcc").arg(msg));
+#endif
+}
+
+
+
+
+bool KviDccFileTransfer::event(QEvent *e)
+{
+ if(e->type() == KVI_THREAD_EVENT)
+ {
+ switch(((KviThreadEvent *)e)->id())
+ {
+ case KVI_DCC_THREAD_EVENT_ERROR:
+ {
+ int * err = ((KviThreadDataEvent<int> *)e)->getData();
+ QString szErrorString = KviError::getDescription(*err);
+ delete err;
+ if(m_pDescriptor->bRecvFile)
+ g_pApp->fileDownloadTerminated(false,m_pDescriptor->szFileName.utf8().data(),m_pDescriptor->szLocalFileName.utf8().data(),m_pDescriptor->szNick.utf8().data(),szErrorString.utf8().data());
+
+ m_szStatusString = __tr2qs_ctx("Transfer failed: ","dcc");
+ m_szStatusString += szErrorString;
+ m_eGeneralStatus = Failure;
+ m_tTransferEndTime = kvi_unixTime();
+
+ KVS_TRIGGER_EVENT_3(KviEvent_OnDCCFileTransferFailed,
+ eventWindow(),
+ szErrorString,
+ (kvs_int_t)(m_pSlaveRecvThread ? m_pSlaveRecvThread->receivedBytes() : m_pSlaveSendThread->sentBytes()),
+ m_pDescriptor->idString());
+
+ outputAndLog(KVI_OUT_DCCERROR,m_szStatusString);
+ displayUpdate();
+ return true;
+ }
+ break;
+ case KVI_DCC_THREAD_EVENT_SUCCESS:
+ {
+ // FIXME: for >= 3.2.0 change this text to
+ // File Upload/Download terminated, or something like this
+ if(KVI_OPTION_BOOL(KviOption_boolNotifyDccSendSuccessInConsole))
+ {
+ KviConsole *c;
+ if(!g_pApp->windowExists(m_pDescriptor->console())) c=g_pApp->activeConsole();
+ else c=m_pDescriptor->console();
+ c->output(KVI_OUT_DCCMSG,__tr2qs_ctx("DCC %s transfer with %Q@%Q:%Q completed: \r![!dbl]play $0\r%s\r","dcc"),
+ m_pDescriptor->bIsTdcc ? (m_pDescriptor->bRecvFile ? "TRECV" : "TSEND") : (m_pDescriptor->bRecvFile ? "RECV" : "SEND"),
+ &(m_pDescriptor->szNick),&(m_pDescriptor->szIp),&(m_pDescriptor->szPort),
+ &(m_pDescriptor->szLocalFileName));
+ }
+ /*
+ // Also add an optional message to the notifier, unless it is an AVATAR download!
+ if(KVI_OPTION_BOOL(KviOption_boolNotifiDccDownloadSuccessInNotifier))
+ {
+ QString szMsg;
+ KviQString::sprintf(szMsg,__tr2qs_ctx(""));
+ g_pApp->notifierMessage(0,KVI_SMALLICON_DCCMSG,szMsg,30);
+ }
+ */
+ if(m_pDescriptor->bRecvFile)g_pApp->fileDownloadTerminated(true,m_pDescriptor->szFileName.utf8().data(),m_pDescriptor->szLocalFileName.utf8().data(),m_pDescriptor->szNick.utf8().data());
+ m_szStatusString = __tr2qs_ctx("Transfer completed","dcc");
+ outputAndLog(m_szStatusString);
+ m_eGeneralStatus = Success;
+ m_tTransferEndTime = kvi_unixTime();
+
+ KVS_TRIGGER_EVENT_2(KviEvent_OnDCCFileTransferSuccess,
+ eventWindow(),
+ (kvs_int_t)(m_pSlaveRecvThread ? m_pSlaveRecvThread->receivedBytes() : m_pSlaveSendThread->sentBytes()),
+ m_pDescriptor->idString());
+
+ displayUpdate();
+
+ if(KVI_OPTION_BOOL(KviOption_boolAutoCloseDccSendOnSuccess))die();
+ return true;
+ }
+ break;
+ case KVI_DCC_THREAD_EVENT_MESSAGE:
+ {
+ KviStr * str = ((KviThreadDataEvent<KviStr> *)e)->getData();
+ outputAndLog(QString(__tr_no_xgettext_ctx(str->ptr(),"dcc")));
+ delete str;
+ return true;
+ }
+ break;
+ default:
+ debug("Invalid event type %d received",((KviThreadEvent *)e)->id());
+ break;
+ }
+ }
+//#warning "Remove this!"
+// if(e->type() == QEvent::Close)debug("Close event received");
+ return KviFileTransfer::event(e);
+}
+
+void KviDccFileTransfer::handleMarshalError(int err)
+{
+ QString szErr = KviError::getDescription(err);
+ m_eGeneralStatus = Failure;
+ m_szStatusString = __tr2qs_ctx("Transfer failed: ","dcc");
+ m_szStatusString += szErr;
+ outputAndLog(m_szStatusString);
+ KVS_TRIGGER_EVENT_3(KviEvent_OnDCCFileTransferFailed,eventWindow(),szErr,(kvs_int_t)0,m_pDescriptor->idString());
+ displayUpdate();
+}
+
+void KviDccFileTransfer::connected()
+{
+ outputAndLog(__tr2qs_ctx("Connected to %1:%2","dcc").arg(m_pMarshal->remoteIp()).arg(m_pMarshal->remotePort()));
+ outputAndLog(__tr2qs_ctx("Local end is %1:%2","dcc").arg(m_pMarshal->localIp()).arg(m_pMarshal->localPort()));
+
+ m_tTransferStartTime = kvi_unixTime();
+
+ if(!(m_pDescriptor->bActive))
+ {
+ m_pDescriptor->szIp = m_pMarshal->remoteIp();
+ m_pDescriptor->szPort = m_pMarshal->remotePort();
+ m_pDescriptor->szHost = m_pMarshal->remoteIp();
+ }
+
+ if(m_pDescriptor->bRecvFile)
+ {
+ KviDccRecvThreadOptions * o = new KviDccRecvThreadOptions;
+ o->szFileName = m_pDescriptor->szLocalFileName.utf8().data();
+ bool bOk;
+ o->iTotalFileSize = m_pDescriptor->szFileSize.toInt(&bOk);
+ if(!bOk)o->iTotalFileSize = -1;
+ o->bResume = m_pDescriptor->bResume;
+ o->iIdleStepLengthInMSec = KVI_OPTION_BOOL(KviOption_boolDccSendForceIdleStep) ? KVI_OPTION_UINT(KviOption_uintDccSendIdleStepInMSec) : 0;
+ o->bIsTdcc = m_pDescriptor->bIsTdcc;
+ o->bSendZeroAck = KVI_OPTION_BOOL(KviOption_boolSendZeroAckInDccRecv);
+ o->bNoAcks = m_pDescriptor->bNoAcks;
+ o->uMaxBandwidth = m_uMaxBandwidth;
+ m_pSlaveRecvThread = new KviDccRecvThread(this,m_pMarshal->releaseSocket(),o);
+ m_pSlaveRecvThread->start();
+ } else {
+ KviDccSendThreadOptions * o = new KviDccSendThreadOptions;
+ o->szFileName = m_pDescriptor->szLocalFileName.utf8().data();
+ o->bFastSend = KVI_OPTION_BOOL(KviOption_boolUseFastDccSend);
+ o->iIdleStepLengthInMSec = KVI_OPTION_BOOL(KviOption_boolDccSendForceIdleStep) ? KVI_OPTION_UINT(KviOption_uintDccSendIdleStepInMSec) : 0;
+ bool bOk;
+ o->bIsTdcc = m_pDescriptor->bIsTdcc;
+ o->iStartPosition = m_pDescriptor->szFileSize.toInt(&bOk);
+ if(!bOk || (o->iStartPosition < 0))o->iStartPosition = 0;
+ o->iPacketSize = KVI_OPTION_UINT(KviOption_uintDccSendPacketSize);
+ if(o->iPacketSize < 32)o->iPacketSize = 32;
+ o->uMaxBandwidth = m_uMaxBandwidth;
+ o->bNoAcks = m_pDescriptor->bNoAcks;
+ m_pSlaveSendThread = new KviDccSendThread(this,m_pMarshal->releaseSocket(),o);
+ m_pSlaveSendThread->start();
+ }
+
+ m_eGeneralStatus = Transferring;
+ m_szStatusString = __tr2qs_ctx("Transferring data","dcc");
+
+ KVS_TRIGGER_EVENT_1(KviEvent_OnDCCFileTransferBegin,eventWindow(),m_pDescriptor->idString());
+
+ outputAndLog(m_szStatusString);
+ displayUpdate();
+}
+
+bool KviDccFileTransfer::resumeAccepted(const char *filename,const char *port,const char *szZeroPortTag)
+{
+ if(!(kvi_strEqualCI(filename,m_pDescriptor->szFileName.utf8().data()) || KVI_OPTION_BOOL(KviOption_boolAcceptBrokenFileNameDccResumeRequests)))
+ return false;
+
+ if(!(kvi_strEqualCI(port,m_pDescriptor->szPort.utf8().data()) &&
+ (!m_pSlaveRecvThread) && m_pDescriptor->bResume && m_pDescriptor->bRecvFile && m_pResumeTimer))
+ return false;
+
+ if(kvi_strEqualCI(port,"0"))
+ {
+ if(!kvi_strEqualCI(szZeroPortTag,m_pDescriptor->zeroPortRequestTag()))
+ return false;
+ }
+
+ delete m_pResumeTimer;
+ m_pResumeTimer = 0;
+
+ outputAndLog(__tr2qs_ctx("RESUME accepted, transfer will begin at position %1","dcc").arg(m_pDescriptor->szLocalFileSize));
+
+ listenOrConnect();
+
+ /*
+ int ret = m_pMarshal->dccConnect(m_pDescriptor->szIp.utf8().data(),
+ m_pDescriptor->szPort.utf8().data(),m_pDescriptor->bDoTimeout);
+
+ if(ret != KviError_success)handleMarshalError(ret);
+ else {
+ m_szStatusString = __tr2qs_ctx("Contacting host %1 on port %2","dcc").arg(m_pDescriptor->szIp).arg(m_pDescriptor->szPort);
+ outputAndLog(m_szStatusString);
+ displayUpdate();
+ }
+ */
+
+ return true;
+}
+
+bool KviDccFileTransfer::doResume(const char * filename,const char * port,unsigned int filePos)
+{
+ if(KviQString::equalCI(port,m_pMarshal->dccPort()) &&
+ (!m_pSlaveRecvThread) && (!m_pDescriptor->bRecvFile))
+ {
+ if(KviQString::equalCI(filename,m_pDescriptor->szFileName) || KVI_OPTION_BOOL(KviOption_boolAcceptBrokenFileNameDccResumeRequests))
+ {
+ bool bOk;
+ unsigned int iLocalFileSize = m_pDescriptor->szLocalFileSize.toUInt(&bOk);
+ if(!bOk)
+ {
+ // ops...internal error
+ outputAndLog(KVI_OUT_DCCERROR,__tr2qs_ctx("Internal error in RESUME request","dcc"));
+ return false;
+ }
+ if(iLocalFileSize <= filePos)
+ {
+ outputAndLog(KVI_OUT_DCCERROR,__tr2qs_ctx("Invalid RESUME request: Position %1 is larger than file size","dcc").arg(filePos));
+ return false;
+ }
+
+ outputAndLog(KVI_OUT_DCCERROR,__tr2qs_ctx("Accepting RESUME request, transfer will begin at position %1","dcc").arg(filePos));
+
+ m_pDescriptor->szFileSize.setNum(filePos);
+
+
+ KviStr szBuffy;
+ KviServerParser::encodeCtcpParameter(filename,szBuffy);
+
+ m_pDescriptor->console()->connection()->sendFmtData("PRIVMSG %s :%cDCC ACCEPT %s %s %u%c",
+ m_pDescriptor->console()->connection()->encodeText(m_pDescriptor->szNick).data(),
+ 0x01,
+ m_pDescriptor->console()->connection()->encodeText(szBuffy.ptr()).data(),
+ port,filePos,0x01);
+ return true;
+ }
+ }
+ return false;
+}
+
+
+
+
+
+
+KviDccFileTransferBandwidthDialog::KviDccFileTransferBandwidthDialog(QWidget * pParent,KviDccFileTransfer * t)
+: QDialog(pParent)
+{
+ QGridLayout * g = new QGridLayout(this,3,3,4,4);
+
+ m_pTransfer = t;
+ int iVal = m_pTransfer->bandwidthLimit();
+
+ QString szText = __tr2qs_ctx("Configure bandwidth for DCC transfer %1","dcc").arg(t->id());
+ setCaption(szText);
+
+ szText = t->isFileUpload() ? __tr2qs_ctx("Limit upload bandwidth to","dcc") : __tr2qs_ctx("Limit download bandwidth to","dcc");
+
+ m_pEnableLimitCheck = new KviStyledCheckBox(szText,this);
+ g->addWidget(m_pEnableLimitCheck,0,0);
+
+ m_pEnableLimitCheck->setChecked((iVal >= 0) && (iVal < MAX_DCC_BANDWIDTH_LIMIT));
+
+ m_pLimitBox = new QSpinBox(0,MAX_DCC_BANDWIDTH_LIMIT-1,1,this);
+ m_pLimitBox->setEnabled((iVal >= 0) && (iVal < MAX_DCC_BANDWIDTH_LIMIT));
+ connect(m_pEnableLimitCheck,SIGNAL(toggled(bool)),m_pLimitBox,SLOT(setEnabled(bool)));
+ g->addMultiCellWidget(m_pLimitBox,0,0,1,2);
+
+ szText = " ";
+ szText += __tr2qs_ctx("bytes/sec","dcc");
+ m_pLimitBox->setSuffix(szText);
+ m_pLimitBox->setValue(iVal < MAX_DCC_BANDWIDTH_LIMIT ? iVal : 0);
+
+ QPushButton * pb = new QPushButton(__tr2qs_ctx("OK","dcc"),this);
+ connect(pb,SIGNAL(clicked()),this,SLOT(okClicked()));
+ pb->setMinimumWidth(80);
+ g->addWidget(pb,2,2);
+
+ pb = new QPushButton(__tr2qs_ctx("Cancel","dcc"),this);
+ connect(pb,SIGNAL(clicked()),this,SLOT(cancelClicked()));
+ pb->setMinimumWidth(80);
+ g->addWidget(pb,2,1);
+
+ g->setColStretch(0,1);
+ g->setRowStretch(1,1);
+}
+
+KviDccFileTransferBandwidthDialog::~KviDccFileTransferBandwidthDialog()
+{
+}
+
+void KviDccFileTransferBandwidthDialog::okClicked()
+{
+ int iVal = MAX_DCC_BANDWIDTH_LIMIT;
+ if(m_pEnableLimitCheck->isChecked())
+ {
+ iVal = m_pLimitBox->value();
+ if(iVal < 0)iVal = MAX_DCC_BANDWIDTH_LIMIT;
+ if(iVal > MAX_DCC_BANDWIDTH_LIMIT)iVal = MAX_DCC_BANDWIDTH_LIMIT;
+ }
+ m_pTransfer->setBandwidthLimit(iVal);
+ delete this;
+}
+
+void KviDccFileTransferBandwidthDialog::cancelClicked()
+{
+ delete this;
+}
+
+void KviDccFileTransferBandwidthDialog::closeEvent(QCloseEvent * e)
+{
+ e->ignore();
+ delete this;
+}
+
+
+
+
+#include "m_send.moc"
diff --git a/src/modules/dcc/send.h b/src/modules/dcc/send.h
new file mode 100644
index 00000000..636f2b3b
--- /dev/null
+++ b/src/modules/dcc/send.h
@@ -0,0 +1,260 @@
+#ifndef _SEND_H_
+#define _SEND_H_
+//=============================================================================
+//
+// File : send.h
+// Creation date : Tue Sep 24 09 2000 15:06:12 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_window.h"
+#include "kvi_string.h"
+
+#include "descriptor.h"
+#include "window.h"
+#include "thread.h"
+
+#include "kvi_sockettype.h"
+
+#include "kvi_pointerlist.h"
+#include <qlabel.h>
+#include <qprogressbar.h>
+#include "kvi_tal_popupmenu.h"
+#include "kvi_tal_hbox.h"
+#include "kvi_tal_vbox.h"
+#include <qfile.h>
+#include <qdialog.h>
+
+#include "kvi_filetransfer.h"
+#include "kvi_time.h"
+
+
+typedef struct _KviDccSendThreadOptions
+{
+ KviStr szFileName;
+ int iStartPosition;
+ int iPacketSize;
+ int iIdleStepLengthInMSec;
+ bool bFastSend;
+ bool bNoAcks;
+ bool bIsTdcc;
+ unsigned int uMaxBandwidth;
+} KviDccSendThreadOptions;
+
+
+class KviDccSendThread : public KviDccThread
+{
+public:
+ KviDccSendThread(QObject * par,kvi_socket_t fd,KviDccSendThreadOptions * opt);
+ ~KviDccSendThread();
+private:
+ // stats: SHARED!!!
+ int m_iAverageSpeed;
+ int m_iInstantSpeed;
+ int m_iFilePosition;
+ int m_iAckedBytes;
+ int m_iTotalSentBytes;
+ // internal
+ unsigned long m_uStartTime;
+ unsigned long m_uInstantSpeedInterval;
+ int m_iInstantSentBytes;
+ KviDccSendThreadOptions * m_pOpt;
+ KviMSecTimeInterval * m_pTimeInterval; // used for computing the instant bandwidth but not only
+public:
+ void initGetInfo();
+ int averageSpeed(){ return m_iAverageSpeed; };
+ int instantSpeed(){ return m_iInstantSpeed; };
+ int filePosition(){ return m_iFilePosition; };
+ // sent ONLY in this session
+ int sentBytes(){ return m_iTotalSentBytes; };
+ int ackedBytes(){ return m_iAckedBytes; };
+ unsigned int bandwidthLimit(){ return m_pOpt->uMaxBandwidth; };
+ void setBandwidthLimit(unsigned int uMaxBandwidth){ m_pOpt->uMaxBandwidth = uMaxBandwidth; };
+ void doneGetInfo();
+protected:
+ void updateStats();
+ virtual void run();
+};
+
+typedef struct _KviDccRecvThreadOptions
+{
+ bool bResume;
+ KviStr szFileName;
+ int iTotalFileSize;
+ int iIdleStepLengthInMSec;
+ bool bSendZeroAck;
+ bool bNoAcks;
+ bool bIsTdcc;
+ unsigned int uMaxBandwidth;
+} KviDccRecvThreadOptions;
+
+class KviDccRecvThread : public KviDccThread
+{
+public:
+ KviDccRecvThread(QObject * par,kvi_socket_t fd,KviDccRecvThreadOptions * opt);
+ ~KviDccRecvThread();
+protected:
+ KviDccRecvThreadOptions * m_pOpt;
+
+ // stats: SHARED!
+ int m_iAverageSpeed;
+ int m_iInstantSpeed;
+ int m_iFilePosition;
+ int m_iTotalReceivedBytes;
+
+ // internal
+ unsigned long m_uStartTime;
+ KviMSecTimeInterval * m_pTimeInterval; // used for computing the instant bandwidth
+ int m_iInstantReceivedBytes;
+ unsigned long m_uInstantSpeedInterval;
+ QFile * m_pFile;
+public:
+ void initGetInfo();
+ int averageSpeed(){ return m_iAverageSpeed; };
+ int instantSpeed(){ return m_iInstantSpeed; };
+ int filePosition(){ return m_iFilePosition; };
+ // received ONLY in this session
+ int receivedBytes(){ return m_iTotalReceivedBytes; };
+ unsigned int bandwidthLimit(){ return m_pOpt->uMaxBandwidth; };
+ void setBandwidthLimit(unsigned int uMaxBandwidth){ m_pOpt->uMaxBandwidth = uMaxBandwidth; };
+ void doneGetInfo();
+protected:
+ void postMessageEvent(const char * msg);
+ void updateStats();
+ bool sendAck(int filePos);
+ virtual void run();
+};
+
+class KviDccFileTransfer;
+class QSpinBox;
+class QTimer;
+
+#include "kvi_styled_controls.h"
+
+class KviDccFileTransferBandwidthDialog : public QDialog
+{
+ Q_OBJECT
+public:
+ KviDccFileTransferBandwidthDialog(QWidget * pParent,KviDccFileTransfer * t);
+ ~KviDccFileTransferBandwidthDialog();
+protected:
+ KviDccFileTransfer * m_pTransfer;
+ KviStyledCheckBox * m_pEnableLimitCheck;
+ QSpinBox * m_pLimitBox;
+protected:
+ virtual void closeEvent(QCloseEvent *e);
+protected slots:
+ void okClicked();
+ void cancelClicked();
+};
+
+
+class KviDccMarshal;
+class QPainter;
+class KviTalPopupMenu;
+
+class KviDccFileTransfer : public KviFileTransfer, public KviDccMarshalOutputContext
+{
+ enum GeneralStatus { Connecting , Transferring , Success , Failure };
+ Q_OBJECT
+public:
+ KviDccFileTransfer(KviDccDescriptor * dcc);
+ ~KviDccFileTransfer();
+private:
+ KviDccSendThread * m_pSlaveSendThread;
+ KviDccRecvThread * m_pSlaveRecvThread;
+ KviDccDescriptor * m_pDescriptor;
+ KviDccMarshal * m_pMarshal;
+
+ KviStr m_szTarget;
+ KviStr m_szDccType;
+ QString m_szTransferIdString;
+
+ QString m_szStatusString;
+ GeneralStatus m_eGeneralStatus;
+
+ QString m_szTransferLog; // html
+
+ kvi_time_t m_tTransferStartTime;
+ kvi_time_t m_tTransferEndTime;
+ // cached stats
+ unsigned int m_uTotalFileSize; // total file size to transfer
+
+ unsigned int m_uMaxBandwidth;
+ KviDccFileTransferBandwidthDialog * m_pBandwidthDialog;
+
+ QTimer * m_pResumeTimer; // used to signal resume timeout
+public:
+ bool resumeAccepted(const char * filename,const char * port,const char *szZeroPortTag);
+ bool doResume(const char * filename,const char * port,unsigned int filePos);
+
+ static void init();
+ static void done();
+ static unsigned int runningTransfersCount();
+ static KviDccFileTransfer * nonFailedTransferWithLocalFileName(const QString &szLocalFileName);
+ static unsigned int transferCount();
+ static bool handleResumeAccepted(const char * filename,const char * port,const char * szZeroPortTag);
+ static bool handleResumeRequest(const char * filename,const char * port,unsigned int filePos);
+
+ virtual bool event(QEvent *e);
+
+ virtual KviWindow * dccMarshalOutputWindow();
+ virtual const char * dccMarshalOutputContextString();
+
+ virtual void displayPaint(QPainter * p,int column,int width,int height);
+ virtual int displayHeight(int iLineSpacing);
+ virtual void fillContextPopup(KviTalPopupMenu * m,int column);
+ virtual void fillStatusString(QString &szBuffer);
+ virtual bool active();
+ virtual void die();
+ virtual QString tipText();
+ virtual QString localFileName();
+
+ bool isFileUpload(){ return m_pDescriptor->isFileUpload(); };
+
+ unsigned int averageSpeed();
+ unsigned int transferredBytes();
+
+ int bandwidthLimit();
+ void setBandwidthLimit(int iVal);
+protected:
+ void startConnection();
+ void listenOrConnect();
+ void addToTransferLog(const QString &s);
+ void outputAndLog(const QString &s);
+ void outputAndLog(int msgtype,const QString &s);
+ KviWindow * eventWindow();
+protected slots:
+ void connectionInProgress();
+ void sslError(const char * msg);
+ void startingSSLHandshake();
+ void handleMarshalError(int err);
+ void connected();
+ void bandwidthDialogDestroyed();
+ void configureBandwidth();
+ void resumeTimedOut();
+public slots:
+ void abort();
+ void retryDCC();
+ void retryTDCC();
+ void retryRevDCC();
+};
+
+#endif //_SEND_H_
diff --git a/src/modules/dcc/thread.cpp b/src/modules/dcc/thread.cpp
new file mode 100644
index 00000000..7ae38bbe
--- /dev/null
+++ b/src/modules/dcc/thread.cpp
@@ -0,0 +1,111 @@
+//
+// File : thread.cpp
+// Creation date : Tue Sep 20 09 2000 18:29:51 CEST Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "thread.h"
+#define _KVI_DEBUG_CHECK_RANGE_
+#include "kvi_debug.h"
+#include "kvi_window.h"
+#include "kvi_error.h"
+#include "kvi_memmove.h"
+#include "kvi_malloc.h"
+#include "kvi_netutils.h"
+#include "kvi_socket.h"
+#ifdef COMPILE_SSL_SUPPORT
+ #include "kvi_sslmaster.h"
+#endif
+
+KviDccThread::KviDccThread(QObject * par,kvi_socket_t fd)
+: KviSensitiveThread()
+{
+ m_pParent = par;
+ m_fd = fd;
+ m_pMutex = new KviMutex();
+#ifdef COMPILE_SSL_SUPPORT
+// debug("CLEARING SSL IN KviDccThread constructor");
+ m_pSSL = 0;
+#endif
+}
+
+KviDccThread::~KviDccThread()
+{
+#ifdef COMPILE_SSL_SUPPORT
+ if(m_pSSL)KviSSLMaster::freeSSL(m_pSSL);
+ m_pSSL = 0;
+#endif
+ if(m_fd != KVI_INVALID_SOCKET)kvi_socket_close(m_fd);
+ __range_invalid(m_pMutex->locked());
+ delete m_pMutex;
+}
+
+#ifdef COMPILE_SSL_SUPPORT
+void KviDccThread::setSSL(KviSSL * s)
+{
+ if(m_pSSL)KviSSLMaster::freeSSL(m_pSSL);
+ m_pSSL = s;
+}
+#endif
+
+bool KviDccThread::handleInvalidSocketRead(int readLen)
+{
+ __range_valid(readLen < 1);
+ if(readLen == 0)
+ {
+ // connection closed
+ postErrorEvent(KviError_remoteEndClosedConnection);
+ return false;
+ } else {
+ // error ?
+ int err = kvi_socket_error();
+ if((err != EINTR) && (err != EAGAIN))
+ {
+ postErrorEvent(KviError::translateSystemError(err));
+ return false;
+ }
+ }
+ return true; // continue
+}
+
+#ifdef COMPILE_SSL_SUPPORT
+void KviDccThread::raiseSSLError()
+{
+ KviStr buffer;
+ while(m_pSSL->getLastErrorString(buffer))
+ {
+ KviStr msg(KviStr::Format,"[SSL ERROR]: %s",buffer.ptr());
+ postMessageEvent(msg.ptr());
+ }
+}
+#endif
+
+void KviDccThread::postErrorEvent(int err)
+{
+ KviThreadDataEvent<int> * e = new KviThreadDataEvent<int>(KVI_DCC_THREAD_EVENT_ERROR);
+ e->setData(new int(err));
+ postEvent(m_pParent,e);
+}
+
+void KviDccThread::postMessageEvent(const char * message)
+{
+ KviThreadDataEvent<KviStr> * e = new KviThreadDataEvent<KviStr>(KVI_DCC_THREAD_EVENT_MESSAGE);
+ e->setData(new KviStr(message));
+ postEvent(m_pParent,e);
+}
diff --git a/src/modules/dcc/thread.h b/src/modules/dcc/thread.h
new file mode 100644
index 00000000..3d56661d
--- /dev/null
+++ b/src/modules/dcc/thread.h
@@ -0,0 +1,79 @@
+#ifndef _THREAD_H_
+#define _THREAD_H_
+//
+// File : thread.h
+// Creation date : Tue Sep 20 09 2000 18:28:44 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+#include "kvi_thread.h"
+#include "kvi_sockettype.h"
+
+#include "kvi_pointerlist.h"
+
+#include <qobject.h>
+
+#ifdef COMPILE_SSL_SUPPORT
+ #include "kvi_ssl.h"
+#endif
+
+// KviThreadDataEvent<int>
+#define KVI_DCC_THREAD_EVENT_ERROR (KVI_THREAD_USER_EVENT_BASE + 1)
+// KviThreadDataEvent<KviStr>
+#define KVI_DCC_THREAD_EVENT_DATA (KVI_THREAD_USER_EVENT_BASE + 2)
+// KviThreadEvent
+#define KVI_DCC_THREAD_EVENT_SUCCESS (KVI_THREAD_USER_EVENT_BASE + 3)
+// KviThreadDataEvent<KviStr>
+#define KVI_DCC_THREAD_EVENT_MESSAGE (KVI_THREAD_USER_EVENT_BASE + 4)
+// KviThreadDataEvent<int>
+#define KVI_DCC_THREAD_EVENT_ACTION (KVI_THREAD_USER_EVENT_BASE + 5)
+
+typedef struct _KviDccThreadIncomingData
+{
+ int iLen;
+ char * buffer;
+} KviDccThreadIncomingData;
+
+class KviDccThread : public KviSensitiveThread
+{
+public:
+ KviDccThread(QObject * par,kvi_socket_t fd);
+ ~KviDccThread();
+protected:
+ KviMutex * m_pMutex; // OWNED! PROTECTS m_pOutBuffers
+ kvi_socket_t m_fd;
+ QObject * m_pParent; // READ ONLY!
+#ifdef COMPILE_SSL_SUPPORT
+ KviSSL * m_pSSL;
+#endif
+protected:
+ bool handleInvalidSocketRead(int readLen);
+public:
+ QObject * parent(){ return m_pParent; };
+ void postErrorEvent(int err);
+ // Warning!..newer call __tr() here!...use __tr_no_lookup()
+ void postMessageEvent(const char * message);
+#ifdef COMPILE_SSL_SUPPORT
+ void raiseSSLError();
+ void setSSL(KviSSL * s);
+#endif
+};
+
+#endif //_THREAD_H_
diff --git a/src/modules/dcc/utils.cpp b/src/modules/dcc/utils.cpp
new file mode 100644
index 00000000..8d3229e7
--- /dev/null
+++ b/src/modules/dcc/utils.cpp
@@ -0,0 +1,169 @@
+//
+// File : utils.cpp
+// Creation date : Tue Jul 23 02:54:44 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#define _UTILS_CPP_
+
+#include "utils.h"
+
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_netutils.h"
+#include "kvi_ircsocket.h"
+#include "kvi_qstring.h"
+
+/*
+bool dcc_module_get_listen_ip_address(KviCommand *c,KviConsole * pConsole,QString &szListenIp)
+{
+ //
+ // Find an interface suitable for listening....
+ // Either from user options or from the current connection...
+ //
+
+ if(KVI_OPTION_BOOL(KviOption_boolDccListenOnSpecifiedInterfaceByDefault))
+ {
+ KVI_OPTION_STRING(KviOption_stringDccListenDefaultInterface).stripWhiteSpace();
+ if(!KVI_OPTION_STRING(KviOption_stringDccListenDefaultInterface).isEmpty())
+ {
+ if(kvi_isValidStringIp(KVI_OPTION_STRING(KviOption_stringDccListenDefaultInterface).utf8().data()))
+ {
+ if(KviQString::equalCI(KVI_OPTION_STRING(KviOption_stringDccListenDefaultInterface),"0.0.0.0"))
+ {
+ // Try to find the first available IpV4 interface
+ if(!kvi_getLocalHostAddress(szListenIp))
+ {
+ if(c)c->warning(__tr2qs_ctx("Can't retrieve a suitable local IPV4 address","dcc"),
+ KVI_OPTION_STRING(KviOption_stringDccListenDefaultInterface).utf8().data());
+ return false;
+ }
+ } else {
+ szListenIp = KVI_OPTION_STRING(KviOption_stringDccListenDefaultInterface);
+ }
+ return true;
+ }
+#ifdef COMPILE_IPV6_SUPPORT
+ if(kvi_isValidStringIp_V6(KVI_OPTION_STRING(KviOption_stringDccListenDefaultInterface).utf8().data()))
+ {
+ szListenIp = KVI_OPTION_STRING(KviOption_stringDccListenDefaultInterface);
+ } else {
+#endif
+ if(!kvi_getInterfaceAddress(KVI_OPTION_STRING(KviOption_stringDccListenDefaultInterface).utf8().data(),szListenIp))
+ {
+ KVI_OPTION_BOOL(KviOption_boolDccListenOnSpecifiedInterfaceByDefault) = false;
+ if(c)c->warning(__tr2qs_ctx("Can't listen on default interface '%s': fix it in the options dialog, disabling the option (so the next dcc will work)","dcc"),
+ KVI_OPTION_STRING(KviOption_stringDccListenDefaultInterface).utf8().data());
+ return false;
+ }
+#ifdef COMPILE_IPV6_SUPPORT
+ }
+#endif
+ return true;
+ } else {
+ // the option was empty.. disable it
+ KVI_OPTION_BOOL(KviOption_boolDccListenOnSpecifiedInterfaceByDefault) = false;
+ }
+ }
+
+ if(pConsole)
+ {
+ if(pConsole->isConnected())
+ {
+ //#warning "The IPV6 choice is not OK here.... and maybe allow to bind to specified ports"
+ pConsole->socket()->getLocalHostIp(szListenIp,pConsole->isIpV6Connection());
+ } else {
+ szListenIp = "0.0.0.0"; // huh ? :)
+ }
+ } else {
+ szListenIp = "0.0.0.0";
+ }
+
+ return true;
+}
+*/
+
+
+bool dcc_kvs_get_listen_ip_address(KviKvsModuleCommandCall *c,KviConsole * pConsole,QString &szListenIp)
+{
+ //
+ // Find an interface suitable for listening....
+ // Either from user options or from the current connection...
+ //
+
+ if(KVI_OPTION_BOOL(KviOption_boolDccListenOnSpecifiedInterfaceByDefault))
+ {
+ KVI_OPTION_STRING(KviOption_stringDccListenDefaultInterface).stripWhiteSpace();
+ if(!KVI_OPTION_STRING(KviOption_stringDccListenDefaultInterface).isEmpty())
+ {
+ if(kvi_isValidStringIp(KVI_OPTION_STRING(KviOption_stringDccListenDefaultInterface).utf8().data()))
+ {
+ if(KviQString::equalCI(KVI_OPTION_STRING(KviOption_stringDccListenDefaultInterface),"0.0.0.0"))
+ {
+ // Try to find the first available IpV4 interface
+ if(!kvi_getLocalHostAddress(szListenIp))
+ {
+ if(c)c->warning(__tr2qs_ctx("Can't retrieve a suitable local IPV4 address","dcc"),
+ KVI_OPTION_STRING(KviOption_stringDccListenDefaultInterface).utf8().data());
+ return false;
+ }
+ } else {
+ szListenIp = KVI_OPTION_STRING(KviOption_stringDccListenDefaultInterface);
+ }
+ return true;
+ }
+#ifdef COMPILE_IPV6_SUPPORT
+ if(kvi_isValidStringIp_V6(KVI_OPTION_STRING(KviOption_stringDccListenDefaultInterface).utf8().data()))
+ {
+ szListenIp = KVI_OPTION_STRING(KviOption_stringDccListenDefaultInterface);
+ } else {
+#endif
+ if(!kvi_getInterfaceAddress(KVI_OPTION_STRING(KviOption_stringDccListenDefaultInterface).utf8().data(),szListenIp))
+ {
+ KVI_OPTION_BOOL(KviOption_boolDccListenOnSpecifiedInterfaceByDefault) = false;
+ if(c)c->warning(__tr2qs_ctx("Can't listen on default interface '%s': fix it in the options dialog, disabling the option (so the next dcc will work)","dcc"),
+ KVI_OPTION_STRING(KviOption_stringDccListenDefaultInterface).utf8().data());
+ return false;
+ }
+#ifdef COMPILE_IPV6_SUPPORT
+ }
+#endif
+ return true;
+ } else {
+ // the option was empty.. disable it
+ KVI_OPTION_BOOL(KviOption_boolDccListenOnSpecifiedInterfaceByDefault) = false;
+ }
+ }
+
+ if(pConsole)
+ {
+ if(pConsole->isConnected())
+ {
+ //#warning "The IPV6 choice is not OK here.... and maybe allow to bind to specified ports"
+ pConsole->socket()->getLocalHostIp(szListenIp,pConsole->isIpV6Connection());
+ } else {
+ szListenIp = "0.0.0.0"; // huh ? :)
+ }
+ } else {
+ szListenIp = "0.0.0.0";
+ }
+
+ return true;
+}
+
diff --git a/src/modules/dcc/utils.h b/src/modules/dcc/utils.h
new file mode 100644
index 00000000..992814f2
--- /dev/null
+++ b/src/modules/dcc/utils.h
@@ -0,0 +1,34 @@
+#ifndef _UTILS_H_
+#define _UTILS_H_
+//
+// File : utils.h
+// Creation date : Tue Jul 23 02:54:45 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+#include "kvi_string.h"
+#include "kvi_console.h"
+#include "kvi_kvs_moduleinterface.h"
+
+#ifndef _UTILS_CPP_
+ extern bool dcc_kvs_get_listen_ip_address(KviKvsModuleCommandCall *c,KviConsole * pConsole,QString &szListenIp);
+#endif
+
+#endif //_UTILS_H_
diff --git a/src/modules/dcc/voice.cpp b/src/modules/dcc/voice.cpp
new file mode 100644
index 00000000..2e34df2f
--- /dev/null
+++ b/src/modules/dcc/voice.cpp
@@ -0,0 +1,1041 @@
+//
+// File : voice.cpp
+// Creation date : Thu Aug 23 04:08:09 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "voice.h"
+#include "marshal.h"
+#include "broker.h"
+
+#include "kvi_settings.h"
+#include "kvi_iconmanager.h"
+#include "kvi_ircview.h"
+#include "kvi_locale.h"
+#include "kvi_out.h"
+#include "kvi_error.h"
+#include "kvi_netutils.h"
+#include "kvi_options.h"
+#include "kvi_console.h"
+#include "kvi_malloc.h"
+#include "kvi_socket.h"
+#include "kvi_ircconnection.h"
+
+#include "adpcmcodec.h"
+#include "gsmcodec.h"
+
+#include <qframe.h>
+#include <qsplitter.h>
+#include "kvi_tal_vbox.h"
+#include <qslider.h>
+#include <qtooltip.h>
+
+#ifndef COMPILE_ON_WINDOWS
+ #include <sys/time.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+ #include <errno.h>
+ #include <fcntl.h>
+//#include "kvi_error.h"
+
+#include <sys/stat.h> // for open()
+#include <sys/ioctl.h> // for ioctl()
+#endif //!COMPILE_ON_WIDNOWS
+
+extern KviDccBroker * g_pDccBroker;
+
+//Check for the *SS Api....we don't want to fail here...
+
+#ifndef COMPILE_DISABLE_DCC_VOICE
+ #ifdef HAVE_LINUX_SOUNDCARD_H
+ #include <linux/soundcard.h>
+ #else
+ #ifdef HAVE_SYS_SOUNDCARD_H
+ #include <sys/soundcard.h>
+ #else
+ #ifdef HAVE_SOUNDCARD_H
+ #include <soundcard.h>
+ #else
+ //CAN NOT COMPILE :(
+ #define COMPILE_DISABLE_DCC_VOICE
+ #ifndef COMPILE_ON_WINDOWS
+ #warning "Cannot find the soundcard.h header; you will NOT be able to use DCC Voice"
+ #endif
+ #endif
+ #endif
+ #endif
+#endif
+
+
+//#define KVI_AUDIO_DEVICE "/dev/dsp"
+// 32 fragments , 512 bytes
+#define KVI_SNDCTL_FRAG_SIZE 0x00B00009
+#define KVI_FRAGMENT_SIZE_IN_BYTES 512
+#define KVI_FORMAT AFMT_S16_LE
+#define KVI_NUM_CHANNELS 1
+
+
+bool kvi_dcc_voice_is_valid_codec(const char * codecName)
+{
+#ifdef COMPILE_USE_GSM
+ if(kvi_strEqualCI("gsm",codecName))
+ {
+ return kvi_gsm_codec_init();
+ }
+#endif
+ if(kvi_strEqualCI("adpcm",codecName))return true;
+ if(kvi_strEqualCI("null",codecName))return true;
+ return false;
+}
+
+static KviDccVoiceCodec * kvi_dcc_voice_get_codec(const char * codecName)
+{
+#ifdef COMPILE_USE_GSM
+ if(kvi_strEqualCI("gsm",codecName))
+ {
+ if(kvi_gsm_codec_init())return new KviDccVoiceGsmCodec();
+ }
+#endif
+ if(kvi_strEqualCI("adpcm",codecName))return new KviDccVoiceAdpcmCodec();
+ if(kvi_strEqualCI("null",codecName))return new KviDccVoiceNullCodec();
+ return new KviDccVoiceAdpcmCodec();
+}
+
+
+KviDccVoiceThread::KviDccVoiceThread(KviWindow * wnd,kvi_socket_t fd,KviDccVoiceThreadOptions * opt)
+: KviDccThread(wnd,fd)
+{
+#ifndef COMPILE_DISABLE_DCC_VOICE
+ m_pOpt = opt;
+ m_bPlaying = false;
+ m_bRecording = false;
+ m_bSoundcardChecked = false;
+ m_soundFd = -1;
+ m_soundFdMode = 0;
+ m_pInfoMutex = new KviMutex();
+ m_bRecordingRequestPending = false;
+#endif
+}
+
+KviDccVoiceThread::~KviDccVoiceThread()
+{
+#ifndef COMPILE_DISABLE_DCC_VOICE
+ delete m_pOpt->pCodec;
+ delete m_pOpt;
+ delete m_pInfoMutex;
+#endif
+}
+
+
+bool KviDccVoiceThread::checkSoundcard()
+{
+#ifdef COMPILE_DISABLE_DCC_VOICE
+ return false;
+#else
+ bool bOpened = false;
+ if(m_soundFd == -1)
+ {
+ if(!openSoundcard(O_RDONLY))return false;
+ bOpened = true;
+ }
+
+ int caps;
+
+ m_bSoundcardChecked = true;
+
+ if(ioctl(m_soundFd,SNDCTL_DSP_GETCAPS,&caps) < 0)
+ {
+ postMessageEvent(__tr2qs_ctx("WARNING: failed to check the soundcard duplex capabilities: if this is a half-duplex soundcard , use the DCC VOICE option to force half-duplex algorithm","dcc"));
+ if(bOpened)closeSoundcard();
+ return false;
+ }
+
+ if(!(caps & DSP_CAP_DUPLEX))
+ {
+ m_pOpt->bForceHalfDuplex = true; // the device is half duplex...use it in that way
+ postMessageEvent(__tr2qs_ctx("Half duplex soundcard detected, you will not be able to talk and listen at the same time","dcc"));
+ }
+
+ if(bOpened)closeSoundcard();
+
+ return true;
+#endif
+}
+
+
+bool KviDccVoiceThread::openSoundcard(int mode)
+{
+#ifdef COMPILE_DISABLE_DCC_VOICE
+ return false;
+#else
+ int speed = m_pOpt->iSampleRate;
+ static int chans=KVI_NUM_CHANNELS;
+ static int fmt=KVI_FORMAT;
+ static int frag = KVI_SNDCTL_FRAG_SIZE;
+
+
+ if(m_soundFd != -1)
+ {
+ if(m_soundFdMode == mode)return true; // already open
+ closeSoundcard();
+ }
+
+ m_soundFd = ::open(m_pOpt->szSoundDevice.ptr(),mode | O_NONBLOCK);
+ if(m_soundFd < 0)return false;
+
+ if(!m_pOpt->bForceHalfDuplex)
+ {
+ if(ioctl(m_soundFd,SNDCTL_DSP_SETDUPLEX,0) < 0)goto exit_false;
+ }
+
+ if(ioctl(m_soundFd,SNDCTL_DSP_SETFRAGMENT,&frag)<0)goto exit_false;
+ if(ioctl(m_soundFd,SNDCTL_DSP_SETFMT,&fmt)<0)goto exit_false;
+ if(ioctl(m_soundFd,SNDCTL_DSP_CHANNELS,&chans)<0)goto exit_false;
+ if(ioctl(m_soundFd,SNDCTL_DSP_SPEED,&speed)<0)goto exit_false;
+ if(speed != m_pOpt->iSampleRate)
+ {
+ KviStr tmp(KviStr::Format,__tr2qs_ctx("WARNING: failed to set the requested sample rate (%d): the device used closest match (%d)","dcc"),
+ m_pOpt->iSampleRate,speed);
+ postMessageEvent(tmp.ptr());
+ }
+
+ // TODO: #warning "We could also support blocking operations mode"
+
+ m_soundFdMode = mode;
+
+
+ return true;
+
+exit_false:
+ closeSoundcard();
+ return false;
+#endif
+}
+
+bool KviDccVoiceThread::openSoundcardForWriting()
+{
+#ifndef COMPILE_DISABLE_DCC_VOICE
+ return openSoundcardWithDuplexOption(O_WRONLY,O_RDONLY);
+#else
+ return false;
+#endif
+}
+
+bool KviDccVoiceThread::openSoundcardForReading()
+{
+#ifndef COMPILE_DISABLE_DCC_VOICE
+ return openSoundcardWithDuplexOption(O_RDONLY,O_WRONLY);
+#else
+ return false;
+#endif
+}
+
+bool KviDccVoiceThread::openSoundcardWithDuplexOption(int openMode,int failMode)
+{
+#ifndef COMPILE_DISABLE_DCC_VOICE
+ if(m_soundFd == -1)
+ {
+ // soundcard not open yet...open for write (at least)
+ if(m_pOpt->bForceHalfDuplex)
+ {
+ // Forcing half duplex... (user option or the card does not support full duplex mode)
+ if(!openSoundcard(openMode))return false;
+ } else {
+ // Try read/write open
+ if(!openSoundcard(O_RDWR))
+ {
+ // half-duplex sound card ?
+ if(!m_bSoundcardChecked)
+ {
+ // We haven't checked the full-duplex support yet...
+ // Try to open in RDONLY o WRONLY mode
+ if(!openSoundcard(openMode))return false;
+ if(!checkSoundcard())
+ {
+ postMessageEvent(__tr2qs_ctx("Ops...failed to test the soundcard capabilities...expect problems...","dcc"));
+ }
+ } // else the test has been done and it is a full duplex card that is just busy
+ }
+ }
+ } else {
+ // Hmmm...already open
+ // If it is open in O_RDWR or O_WRONLY mode...it is ok for us
+ // but if it is open in O_RDONLY mode...we can do nothing...just wait
+ return (m_soundFdMode != failMode);
+ }
+
+
+
+ return true;
+#else
+ return false;
+#endif
+}
+
+void KviDccVoiceThread::closeSoundcard()
+{
+#ifndef COMPILE_DISABLE_DCC_VOICE
+ if(m_soundFd != -1)
+ {
+ ::close(m_soundFd);
+ m_soundFd = -1;
+ m_soundFdMode = 0;
+ }
+#endif
+}
+
+
+
+bool KviDccVoiceThread::readWriteStep()
+{
+#ifndef COMPILE_DISABLE_DCC_VOICE
+ // Socket management
+ bool bCanRead;
+ bool bCanWrite;
+
+ if(kvi_select(m_fd,&bCanRead,&bCanWrite))
+ {
+ if(bCanRead)
+ {
+ unsigned int actualSize = m_inFrameBuffer.size();
+ m_inFrameBuffer.resize(actualSize + 1024);
+ int readLen = kvi_socket_recv(m_fd,(void *)(m_inFrameBuffer.data() + actualSize),1024);
+ if(readLen > 0)
+ {
+ if(readLen < 1024)m_inFrameBuffer.resize(actualSize + readLen);
+ m_pOpt->pCodec->decode(&m_inFrameBuffer,&m_inSignalBuffer);
+//#warning "A maximum length for the signal buffer is actually needed!!!"
+ } else {
+ if(!handleInvalidSocketRead(readLen))return false;
+ m_inFrameBuffer.resize(actualSize);
+ }
+ }// else {
+ // m_uSleepTime += 100;
+ //}
+
+ if(bCanWrite)
+ {
+ // Have somethihg to write ?
+ if(m_outFrameBuffer.size() > 0)
+ {
+ int written = kvi_socket_send(m_fd,m_outFrameBuffer.data(),m_outFrameBuffer.size());
+ if(written > 0)
+ {
+ m_outFrameBuffer.remove(written);
+ } else {
+ if(!handleInvalidSocketRead(written))return false;
+ }
+ }// else {
+ // m_uSleepTime += 100;
+ // }
+ }// else {
+ // m_uSleepTime += 100;
+// }
+//#warning "Usleep here ?"
+ }// else {
+// if(!(m_bPlaying || m_bRecording))
+// {
+// // Really NOTHING is happening...sleep a bit more
+// m_uSleepTime += 800;
+// } else {
+// m_uSleepTime += 100;
+// }
+// }
+
+#endif // !COMPILE_DISABLE_DCC_VOICE
+ return true;
+}
+
+bool KviDccVoiceThread::soundStep()
+{
+#ifndef COMPILE_DISABLE_DCC_VOICE
+ // Are we playing ?
+ if(m_bPlaying)
+ {
+ // Do we have something to write ?
+ audio_buf_info info;
+ if(m_inSignalBuffer.size() > 0)
+ {
+ // Get the number of fragments that can be written to the soundcard without blocking
+
+ if(ioctl(m_soundFd,SNDCTL_DSP_GETOSPACE,&info) < 0)
+ {
+ debug("get o space failed");
+ info.bytes = KVI_FRAGMENT_SIZE_IN_BYTES; // dummy... if this is not correct...well...we will block for 1024/16000 of a sec
+ info.fragments = 1;
+ info.fragsize = KVI_FRAGMENT_SIZE_IN_BYTES;
+ }
+ if(info.fragments > 0)
+ {
+ int toWrite = info.fragments * info.fragsize;
+ //debug("Can write %d bytes",toWrite);
+ if(m_inSignalBuffer.size() < toWrite)toWrite = m_inSignalBuffer.size();
+ int written = write(m_soundFd,m_inSignalBuffer.data(),toWrite);
+ if(written > 0)m_inSignalBuffer.remove(written);
+ else {
+//#warning "Do something for -1 here ?"
+//#warning "Usleep ?"
+ }
+ } //else {
+ // No stuff can be written...we are running too fast ?
+ // m_uSleepTime += 100; // sleep for a while
+ //}
+ } else {
+ // hmmmm....playing , but nothing to write , possible underrun or EOF
+ // a nice idea would be to use SNDCTL_DSP_GETODELAY here...
+ // but it appears to be broken on some audio devices
+ if(ioctl(m_soundFd,SNDCTL_DSP_GETOSPACE,&info) < 0)info.fragstotal = info.fragments; // dummy...but what should we do ?
+ if(info.fragstotal == info.fragments)
+ {
+ // underrun or EOF: close the device
+ stopPlaying();
+ }
+ }
+ } else {
+ // do we have anything to play ?
+ if(m_inSignalBuffer.size() > 0)
+ {
+ if(m_inSignalBuffer.size() >= m_pOpt->iPreBufferSize)
+ {
+ // yep...stuff to play... open the soundcard , if possible
+ startPlaying();
+
+ m_iLastSignalBufferSize = m_inSignalBuffer.size();
+ } else {
+ // have stuff to play , but it's not enough to fill the pre-buffer
+ //
+ struct timeval tv;
+ gettimeofday(&tv,0);
+
+ long int sigBufferTime = (tv.tv_sec * 1000) + (tv.tv_usec / 1000);
+
+ if(m_inSignalBuffer.size() == m_iLastSignalBufferSize)
+ {
+ // the same signal buffer size... check the time
+ // m_pOpt->iPreBufferSize / 16 gives us the preBufferTime in msecs
+ // we calc the remaining preBufferTime by subtracting the
+ // size of buffer already filled and we also add 50 milliseconds... smart heuristic
+ int preBufferTime = ((m_pOpt->iPreBufferSize - m_iLastSignalBufferSize) / 16) + 50;
+ // if the buffer size hasn't changed since preBufferTime
+ // it's time to start playing anyway, since there is
+ // either a network stall or it was just a really short data stream
+ if((sigBufferTime - m_iLastSignalBufferTime) > preBufferTime)
+ {
+ startPlaying();
+ if(m_bPlaying)m_iLastSignalBufferSize = 0;
+ }
+ } else {
+ // signal buffer size differs...we have received new packets
+ // and still pre-buffering
+ m_iLastSignalBufferSize = m_inSignalBuffer.size();
+ m_iLastSignalBufferTime = sigBufferTime;
+ }
+ }
+
+ }
+ }
+
+ // Are we recording ?
+ if(m_bRecording)
+ {
+ fd_set rs;
+ FD_ZERO(&rs);
+ FD_SET(m_soundFd,&rs);
+ struct timeval tv;
+ tv.tv_sec = 0;
+ tv.tv_usec = 10;
+ int ret = select(m_soundFd + 1,&rs,0,0,&tv);
+ if(ret > 0)
+ {
+ // This is rather easy...
+ audio_buf_info info;
+ if(ioctl(m_soundFd,SNDCTL_DSP_GETISPACE,&info) < 0)
+ {
+ debug("Ispace failed");
+ info.fragments = 0; // dummy...
+ info.bytes = 0;
+ }
+
+ //debug("INFO: fragments: %d, fragstotal: %d, fragsize: %d, bytes: %d",info.fragments,info.fragstotal,info.fragsize,info.bytes);
+
+ if(info.fragments == 0 && info.bytes == 0)
+ {
+ // force a dummy read: the device needs to be triggered
+ info.fragments = 1;
+ }
+
+ if(info.fragments > 0)
+ {
+ int oldSize = m_outSignalBuffer.size();
+ int available = info.fragments * info.fragsize;
+ m_outSignalBuffer.addSize(available);
+ int readed = read(m_soundFd,m_outSignalBuffer.data() + oldSize,available);
+
+ if(readed < available)
+ {
+ // huh ? ...error ?
+ if(readed >= 0)m_outSignalBuffer.resize(oldSize + readed);
+ else {
+ if((errno == EINTR) || (errno == EAGAIN))
+ {
+ m_outSignalBuffer.resize(oldSize);
+ } else {
+//#warning "Critical error...do something reasonable!"
+ m_outSignalBuffer.resize(oldSize);
+ }
+ }
+ }
+/*
+ debug("Signal buffer:");
+ for(int i=0;i<200;i+=2)
+ {
+ if(i >= m_outSignalBuffer.size())break;
+ printf("%04x ",*(((unsigned short *)(m_outSignalBuffer.data() + i))));
+ if((i % 6) == 0)printf("\n");
+ }
+ debug("END\n");
+*/
+ m_pOpt->pCodec->encode(&m_outSignalBuffer,&m_outFrameBuffer);
+ }
+ }// else {
+ // Nothing to read
+ // m_uSleepTime += 100;
+ // }
+ }
+
+#endif // !COMPILE_DISABLE_DCC_VOICE
+ return true;
+}
+
+void KviDccVoiceThread::startRecording()
+{
+#ifndef COMPILE_DISABLE_DCC_VOICE
+ //debug("Start recording");
+ if(m_bRecording)return; // already started
+ if(openSoundcardForReading())
+ {
+// debug("Posting event");
+ KviThreadDataEvent<int> * e = new KviThreadDataEvent<int>(KVI_DCC_THREAD_EVENT_ACTION);
+ e->setData(new int(KVI_DCC_VOICE_THREAD_ACTION_START_RECORDING));
+ postEvent(parent(),e);
+
+ m_bRecording = true;
+ m_bRecordingRequestPending = false;
+ } else {
+ m_bRecordingRequestPending = true;
+ }
+#endif
+}
+
+void KviDccVoiceThread::stopRecording()
+{
+#ifndef COMPILE_DISABLE_DCC_VOICE
+ //debug("Stop recording");
+ m_bRecordingRequestPending = false;
+ if(!m_bRecording)return; // already stopped
+
+ KviThreadDataEvent<int> * e = new KviThreadDataEvent<int>(KVI_DCC_THREAD_EVENT_ACTION);
+ e->setData(new int(KVI_DCC_VOICE_THREAD_ACTION_STOP_RECORDING));
+ postEvent(parent(),e);
+
+ m_bRecording = false;
+ if(!m_bPlaying)closeSoundcard();
+#endif
+}
+
+void KviDccVoiceThread::startPlaying()
+{
+#ifndef COMPILE_DISABLE_DCC_VOICE
+ //debug("Start playing");
+ if(m_bPlaying)return;
+
+ if(openSoundcardForWriting())
+ {
+ KviThreadDataEvent<int> * e = new KviThreadDataEvent<int>(KVI_DCC_THREAD_EVENT_ACTION);
+ e->setData(new int(KVI_DCC_VOICE_THREAD_ACTION_START_PLAYING));
+ postEvent(parent(),e);
+ m_bPlaying = true;
+ }
+#endif
+}
+
+void KviDccVoiceThread::stopPlaying()
+{
+#ifndef COMPILE_DISABLE_DCC_VOICE
+ //debug("Stop playing");
+ if(!m_bPlaying)return;
+
+ KviThreadDataEvent<int> * e = new KviThreadDataEvent<int>(KVI_DCC_THREAD_EVENT_ACTION);
+ e->setData(new int(KVI_DCC_VOICE_THREAD_ACTION_STOP_PLAYING));
+ postEvent(parent(),e);
+
+ m_bPlaying = false;
+ if(!m_bRecording)closeSoundcard();
+#endif
+}
+
+void KviDccVoiceThread::run()
+{
+#ifndef COMPILE_DISABLE_DCC_VOICE
+ for(;;)
+ {
+// m_uSleepTime = 0;
+
+ // Dequeue events
+ while(KviThreadEvent * e = dequeueEvent())
+ {
+ if(e->id() == KVI_THREAD_EVENT_TERMINATE)
+ {
+ delete e;
+ goto exit_dcc;
+ } else if(e->id() == KVI_DCC_THREAD_EVENT_ACTION)
+ {
+ int * act = ((KviThreadDataEvent<int> *)e)->getData();
+ if(*act)startRecording();
+ else stopRecording();
+ delete act;
+ delete e;
+ } else {
+ // Other events are senseless to us
+ delete e;
+ }
+ }
+
+ if(!readWriteStep())goto exit_dcc;
+ if(!soundStep())goto exit_dcc;
+
+ m_pInfoMutex->lock();
+ m_iInputBufferSize = m_inSignalBuffer.size();
+ m_iOutputBufferSize = (m_outFrameBuffer.size() / m_pOpt->pCodec->encodedFrameSize()) * m_pOpt->pCodec->decodedFrameSize();
+ m_pInfoMutex->unlock();
+
+ // Actually the maximum that we can sleep here is
+ // around 500 usecs... = 0.0005 sec -> 8 bytes at 8 KHz
+
+ // if(m_uSleepTime)usleep(m_uSleepTime);
+
+ // Start recording if the request was not fulfilled yet
+ if(m_bRecordingRequestPending)startRecording();
+ }
+
+
+exit_dcc:
+
+#endif //! COMPILE_DISABLE_DCC_VOICE
+ closeSoundcard();
+ kvi_socket_close(m_fd);
+ m_fd = KVI_INVALID_SOCKET;
+}
+
+
+
+
+KviDccVoice::KviDccVoice(KviFrame *pFrm,KviDccDescriptor * dcc,const char * name)
+: KviDccWindow(KVI_WINDOW_TYPE_DCCVOICE,pFrm,name,dcc)
+{
+ m_pDescriptor = dcc;
+ m_pSlaveThread = 0;
+
+ m_pSplitter = new QSplitter(Qt::Horizontal,this,"splitter");
+ m_pIrcView = new KviIrcView(m_pSplitter,pFrm,this);
+
+ m_pHBox = new KviTalHBox(this);
+
+ KviTalVBox * vbox = new KviTalVBox(m_pHBox);
+
+ m_pInputLabel = new QLabel(__tr2qs_ctx("Input buffer","dcc"),vbox);
+ m_pInputLabel->setFrameStyle(QFrame::Sunken | QFrame::Panel);
+ m_pOutputLabel = new QLabel(__tr2qs_ctx("Output buffer","dcc"),vbox);
+ m_pOutputLabel->setFrameStyle(QFrame::Sunken | QFrame::Panel);
+ vbox->setSpacing(1);
+
+ KviTalVBox * vbox2 = new KviTalVBox(m_pHBox);
+
+ m_pRecordingLabel = new QLabel(vbox2);
+ m_pRecordingLabel->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_RECORD)));
+ m_pRecordingLabel->setEnabled(false);
+ m_pRecordingLabel->setFrameStyle(QFrame::Raised | QFrame::Panel);
+
+ m_pPlayingLabel = new QLabel(vbox2);
+ m_pPlayingLabel->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_PLAY)));
+ m_pPlayingLabel->setEnabled(false);
+ m_pPlayingLabel->setFrameStyle(QFrame::Raised | QFrame::Panel);
+
+ vbox2->setSpacing(1);
+
+//#warning "The volume slider should be enabled only when receiving data"
+ m_pVolumeSlider = new QSlider(-100, 0, 10, 0, Qt::Vertical, m_pHBox, "dcc_voice_volume_slider");
+ m_pVolumeSlider->setValue(getMixerVolume());
+/* Update the tooltip */
+ setMixerVolume(m_pVolumeSlider->value());
+ m_pVolumeSlider->setMaximumWidth(16);
+ m_pVolumeSlider->setMaximumHeight(2*m_pPlayingLabel->height());
+ connect(m_pVolumeSlider, SIGNAL(valueChanged(int)), this, SLOT(setMixerVolume(int)));
+
+ m_pTalkButton = new QToolButton(m_pHBox);
+ m_pTalkButton->setEnabled(false);
+ m_pTalkButton->setToggleButton(true);
+#if QT_VERSION >= 300
+ QIconSet iset;
+ iset.setPixmap(*(g_pIconManager->getBigIcon(KVI_BIGICON_DISCONNECTED)),QIconSet::Large,QIconSet::Normal,QIconSet::Off);
+ iset.setPixmap(*(g_pIconManager->getBigIcon(KVI_BIGICON_CONNECTED)),QIconSet::Large,QIconSet::Normal,QIconSet::On);
+ m_pTalkButton->setIconSet(iset);
+#else
+ m_pTalkButton->setOffIconSet(*(g_pIconManager->getBigIcon(KVI_BIGICON_DISCONNECTED)));
+ m_pTalkButton->setOnIconSet(*(g_pIconManager->getBigIcon(KVI_BIGICON_CONNECTED)));
+#endif
+ m_pTalkButton->setUsesBigPixmap(true);
+
+ connect(m_pTalkButton,SIGNAL(toggled(bool)),this,SLOT(startOrStopTalking(bool)));
+
+ m_pHBox->setStretchFactor(vbox,1);
+ m_pHBox->setMargin(2);
+ m_pHBox->setSpacing(1);
+
+ //setFocusHandler(m_pIrcView,this);
+
+ m_pMarshal = new KviDccMarshal(this);
+ connect(m_pMarshal,SIGNAL(error(int)),this,SLOT(handleMarshalError(int)));
+ connect(m_pMarshal,SIGNAL(connected()),this,SLOT(connected()));
+ connect(m_pMarshal,SIGNAL(inProgress()),this,SLOT(connectionInProgress()));
+
+ m_pUpdateTimer = new QTimer();
+
+ startConnection();
+}
+
+KviDccVoice::~KviDccVoice()
+{
+ g_pDccBroker->unregisterDccWindow(this);
+ if(m_pSlaveThread)
+ {
+ m_pSlaveThread->terminate();
+ delete m_pSlaveThread;
+ m_pSlaveThread = 0;
+ }
+
+ KviThreadManager::killPendingEvents(this);
+
+ delete m_pUpdateTimer;
+// delete m_pDescriptor;
+// delete m_pMarshal;
+}
+
+
+void KviDccVoice::startConnection()
+{
+ if(!(m_pDescriptor->bActive))
+ {
+ // PASSIVE CONNECTION
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("Attempting a passive DCC VOICE connection","dcc"));
+ int ret = m_pMarshal->dccListen(m_pDescriptor->szListenIp,m_pDescriptor->szListenPort,m_pDescriptor->bDoTimeout);
+ if(ret != KviError_success)handleMarshalError(ret);
+ } else {
+ // ACTIVE CONNECTION
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("Attempting an active DCC VOICE connection","dcc"));
+ int ret = m_pMarshal->dccConnect(m_pDescriptor->szIp.utf8().data(),m_pDescriptor->szPort.utf8().data(),m_pDescriptor->bDoTimeout);
+ if(ret != KviError_success)handleMarshalError(ret);
+ }
+}
+
+void KviDccVoice::connectionInProgress()
+{
+ if(m_pDescriptor->bActive)
+ {
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("Contacting host %Q on port %Q","dcc"),&(m_pDescriptor->szIp),&(m_pDescriptor->szPort));
+ } else {
+
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("Listening on interface %Q port %Q","dcc"),
+ &(m_pMarshal->localIp()),&(m_pMarshal->localPort()));
+
+ if(m_pDescriptor->bSendRequest)
+ {
+ KviStr ip = !m_pDescriptor->szFakeIp.isEmpty() ? m_pDescriptor->szFakeIp : m_pDescriptor->szListenIp;
+ KviStr port = !m_pDescriptor->szFakePort.isEmpty() ? m_pDescriptor->szFakePort : m_pMarshal->localPort();
+//#warning "OPTION FOR SENDING 127.0.0.1 and so on (not an unsigned nuumber)"
+ struct in_addr a;
+ if(kvi_stringIpToBinaryIp(ip.ptr(),&a))ip.setNum(htonl(a.s_addr));
+
+ m_pDescriptor->console()->connection()->sendFmtData("PRIVMSG %s :%cDCC VOICE %s %s %s %d%c",
+ m_pDescriptor->console()->connection()->encodeText(m_pDescriptor->szNick).data(),
+ 0x01,m_pDescriptor->szCodec.ptr(),
+ ip.ptr(),port.ptr(),m_pDescriptor->iSampleRate,0x01);
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("Sent DCC VOICE (%s) request to %Q, waiting for the remote client to connect...","dcc"),
+ m_pDescriptor->szCodec.ptr(),&(m_pDescriptor->szNick));
+ } else output(KVI_OUT_DCCMSG,__tr2qs_ctx("DCC VOICE request not sent: awaiting manual connections","dcc"));
+ }
+}
+
+const QString & KviDccVoice::target()
+{
+ // This may change on the fly...
+ m_szTarget.sprintf("%s@%s:%s",
+ m_pDescriptor->szNick.utf8().data(),m_pDescriptor->szIp.utf8().data(),m_pDescriptor->szPort.utf8().data());
+ return m_szTarget;
+}
+
+void KviDccVoice::getBaseLogFileName(KviStr &buffer)
+{
+ buffer.sprintf("dccvoice_%s_%s_%s",m_pDescriptor->szNick.utf8().data(),m_pDescriptor->szLocalFileName.utf8().data(),m_pDescriptor->szPort.utf8().data());
+}
+
+void KviDccVoice::fillCaptionBuffers()
+{
+ KviStr tmp(KviStr::Format,"DCC Voice %s@%s:%s %s",
+ m_pDescriptor->szNick.utf8().data(),m_pDescriptor->szIp.utf8().data(),m_pDescriptor->szPort.utf8().data(),
+ m_pDescriptor->szLocalFileName.utf8().data());
+
+ m_szPlainTextCaption = tmp;
+
+ m_szHtmlActiveCaption.sprintf("<nobr><font color=\"%s\"><b>%s</b></font></nobr>",
+ KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name().ascii(),tmp.ptr());
+ m_szHtmlInactiveCaption.sprintf("<nobr><font color=\"%s\"><b>%s</b></font></nobr>",
+ KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name().ascii(),tmp.ptr());
+}
+
+QPixmap * KviDccVoice::myIconPtr()
+{
+ return g_pIconManager->getSmallIcon(KVI_SMALLICON_DCCVOICE);
+}
+
+bool KviDccVoice::event(QEvent *e)
+{
+ if(e->type() == KVI_THREAD_EVENT)
+ {
+ switch(((KviThreadEvent *)e)->id())
+ {
+ case KVI_DCC_THREAD_EVENT_ERROR:
+ {
+ int * err = ((KviThreadDataEvent<int> *)e)->getData();
+ QString ssss = KviError::getDescription(*err);
+ output(KVI_OUT_DCCERROR,__tr2qs_ctx("ERROR: %Q","dcc"),&(ssss));
+ delete err;
+ m_pUpdateTimer->stop();
+ updateInfo();
+ m_pTalkButton->setEnabled(false);
+ m_pRecordingLabel->setEnabled(false);
+ m_pPlayingLabel->setEnabled(false);
+ return true;
+ }
+ break;
+ case KVI_DCC_THREAD_EVENT_MESSAGE:
+ {
+ KviStr * str = ((KviThreadDataEvent<KviStr> *)e)->getData();
+ outputNoFmt(KVI_OUT_DCCMSG,__tr_no_xgettext_ctx(str->ptr(),"dcc"));
+ delete str;
+ return true;
+ }
+ break;
+ case KVI_DCC_THREAD_EVENT_ACTION:
+ {
+ int * act = ((KviThreadDataEvent<int> *)e)->getData();
+ switch(*act)
+ {
+ case KVI_DCC_VOICE_THREAD_ACTION_START_RECORDING:
+ m_pRecordingLabel->setEnabled(true);
+ break;
+ case KVI_DCC_VOICE_THREAD_ACTION_STOP_RECORDING:
+ m_pRecordingLabel->setEnabled(false);
+ break;
+ case KVI_DCC_VOICE_THREAD_ACTION_START_PLAYING:
+ m_pPlayingLabel->setEnabled(true);
+ break;
+ case KVI_DCC_VOICE_THREAD_ACTION_STOP_PLAYING:
+ m_pPlayingLabel->setEnabled(false);
+ break;
+ }
+ delete act;
+ return true;
+ }
+ break;
+ default:
+ debug("Invalid event type %d received",((KviThreadEvent *)e)->id());
+ break;
+ }
+
+ }
+
+ return KviWindow::event(e);
+}
+
+void KviDccVoice::updateInfo()
+{
+ if(m_pSlaveThread)
+ {
+ m_pSlaveThread->m_pInfoMutex->lock();
+ int iOSize = m_pSlaveThread->m_iOutputBufferSize;
+ int iISize = m_pSlaveThread->m_iInputBufferSize;
+ m_pSlaveThread->m_pInfoMutex->unlock();
+ KviStr tmp(KviStr::Format,__tr_ctx("Input buffer: %d bytes","dcc"),iISize);
+ m_pInputLabel->setText(tmp.ptr());
+ tmp.sprintf(__tr_ctx("Output buffer: %d bytes","dcc"),iOSize);
+ m_pOutputLabel->setText(tmp.ptr());
+ }
+}
+
+void KviDccVoice::resizeEvent(QResizeEvent *e)
+{
+ int hght2 = m_pHBox->sizeHint().height();
+ m_pHBox->setGeometry(0,0,width(),hght2);
+ m_pSplitter->setGeometry(0,hght2,width(),height() - hght2);
+}
+
+QSize KviDccVoice::sizeHint() const
+{
+ int w = m_pIrcView->sizeHint().width();
+ int w2 = m_pHBox->sizeHint().width();
+ QSize ret(w > w2 ? w : w2, m_pIrcView->sizeHint().height() + m_pHBox->sizeHint().height());
+ return ret;
+}
+
+void KviDccVoice::handleMarshalError(int err)
+{
+ QString ssss = KviError::getDescription(err);
+ output(KVI_OUT_DCCERROR,__tr2qs_ctx("DCC Failed: %Q","dcc"),&ssss);
+ m_pTalkButton->setEnabled(false);
+ m_pTalkButton->setOn(false);
+ m_pRecordingLabel->setEnabled(false);
+ m_pPlayingLabel->setEnabled(false);
+}
+
+void KviDccVoice::connected()
+{
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("Connected to %Q:%Q","dcc"),
+ &(m_pMarshal->remoteIp()),&(m_pMarshal->remotePort()));
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("Local end is %Q:%Q","dcc"),
+ &(m_pMarshal->localIp()),&(m_pMarshal->localPort()));
+ if(!(m_pDescriptor->bActive))
+ {
+ m_pDescriptor->szIp = m_pMarshal->remoteIp();
+ m_pDescriptor->szPort = m_pMarshal->remotePort();
+ m_pDescriptor->szHost = m_pMarshal->remoteIp();
+ }
+ updateCaption();
+
+ connect(m_pUpdateTimer,SIGNAL(timeout()),this,SLOT(updateInfo()));
+ m_pUpdateTimer->start(1000);
+
+ KviDccVoiceThreadOptions * opt = new KviDccVoiceThreadOptions;
+
+
+ opt->pCodec = kvi_dcc_voice_get_codec(m_pDescriptor->szCodec.ptr());
+
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("Actual codec used is '%s'","dcc"),opt->pCodec->name());
+
+ opt->bForceHalfDuplex = KVI_OPTION_BOOL(KviOption_boolDccVoiceForceHalfDuplex);
+// opt->bForceDummyReadTrigger = false;
+ opt->iPreBufferSize = KVI_OPTION_UINT(KviOption_uintDccVoicePreBufferSize);
+ opt->szSoundDevice = KVI_OPTION_STRING(KviOption_stringDccVoiceSoundDevice).utf8().data();
+ opt->iSampleRate = m_pDescriptor->iSampleRate;
+
+ m_pSlaveThread = new KviDccVoiceThread(this,m_pMarshal->releaseSocket(),opt);
+ connect(m_pUpdateTimer,SIGNAL(timeout()),this,SLOT(updateInfo()));
+ m_pSlaveThread->start();
+
+ m_pTalkButton->setEnabled(true);
+}
+
+void KviDccVoice::stopTalking()
+{
+ KviThreadDataEvent<int> * e = new KviThreadDataEvent<int>(KVI_DCC_THREAD_EVENT_ACTION);
+ e->setData(new int(0));
+ m_pSlaveThread->enqueueEvent(e);
+}
+
+void KviDccVoice::startTalking()
+{
+ KviThreadDataEvent<int> * e = new KviThreadDataEvent<int>(KVI_DCC_THREAD_EVENT_ACTION);
+ e->setData(new int(1));
+ m_pSlaveThread->enqueueEvent(e);
+}
+
+void KviDccVoice::startOrStopTalking(bool bStart)
+{
+ if(bStart)startTalking();
+ else stopTalking();
+}
+
+int KviDccVoice::getMixerVolume(void) const
+{
+#ifndef COMPILE_DISABLE_DCC_VOICE
+ int fd;
+ int ret;
+ int left; //, right;
+ int req;
+
+ if((fd = ::open(KVI_OPTION_STRING(KviOption_stringDccVoiceMixerDevice).utf8().data(), O_RDONLY)) == -1)
+ {
+ return 0;
+ }
+
+ req = KVI_OPTION_BOOL(KviOption_boolDccVoiceVolumeSliderControlsPCM) ? SOUND_MIXER_READ_PCM : SOUND_MIXER_READ_VOLUME;
+
+ if(::ioctl(fd,req,&ret))
+ {
+ ::close(fd);
+ return 0;
+ }
+
+ left = (ret & 0x00ff);
+// right = (ret & 0xff00) >> 8;
+
+ ::close(fd);
+
+ return -left;
+#else
+ return 0;
+#endif
+}
+
+void KviDccVoice::setMixerVolume(int vol)
+{
+#ifndef COMPILE_DISABLE_DCC_VOICE
+ int fd;
+ int val;
+ int req;
+
+ if((fd = ::open(KVI_OPTION_STRING(KviOption_stringDccVoiceMixerDevice).utf8().data(), O_WRONLY)) == -1)
+ return;
+
+ req = KVI_OPTION_BOOL(KviOption_boolDccVoiceVolumeSliderControlsPCM) ? SOUND_MIXER_WRITE_PCM : SOUND_MIXER_WRITE_VOLUME;
+
+ val = (-vol << 8) | -vol;
+ ::ioctl(fd, req, &val);
+ ::close(fd);
+
+ QString s;
+ s.sprintf(__tr_ctx("Volume: %i","dcc"), -vol);
+ QToolTip::add(m_pVolumeSlider, s);
+#endif
+}
+
+
+/* The code below doesn't work. Guess I have to catch some other widget's focusInEvent. Which one ? */
+/* The point is to move the volume slider to correct position if for example user switched to
+ * another KVirc window, fired up xmms, changed the volume, and returned to our dcc voice window */
+void KviDccVoice::focusInEvent(QFocusEvent *e)
+{
+// debug("focusInEvent()");
+ m_pVolumeSlider->setValue(getMixerVolume());
+ setMixerVolume(m_pVolumeSlider->value());
+
+ KviWindow::focusInEvent(e);
+}
+
+#include "m_voice.moc"
diff --git a/src/modules/dcc/voice.h b/src/modules/dcc/voice.h
new file mode 100644
index 00000000..c74c677c
--- /dev/null
+++ b/src/modules/dcc/voice.h
@@ -0,0 +1,440 @@
+#ifndef _VOICE_H_
+#define _VOICE_H_
+//
+// File : voice.h
+// Creation date : Thu Aug 23 04:08:10 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_window.h"
+
+#include "kvi_databuffer.h"
+#include "kvi_sockettype.h"
+
+#include "codec.h"
+#include "descriptor.h"
+#include "thread.h"
+#include "window.h"
+
+#include "kvi_tal_hbox.h"
+#include <qlabel.h>
+#include <qtoolbutton.h>
+#include <qtimer.h>
+
+#ifndef _DCC_VOICE_CPP_
+ extern bool kvi_dcc_voice_is_valid_codec(const char * codecName);
+#endif
+
+#define KVI_DCC_VOICE_THREAD_ACTION_START_RECORDING 0
+#define KVI_DCC_VOICE_THREAD_ACTION_STOP_RECORDING 1
+#define KVI_DCC_VOICE_THREAD_ACTION_START_PLAYING 2
+#define KVI_DCC_VOICE_THREAD_ACTION_STOP_PLAYING 3
+
+typedef struct _KviDccVoiceThreadOptions
+{
+ bool bForceHalfDuplex;
+ int iPreBufferSize;
+ int iSampleRate;
+ KviStr szSoundDevice;
+ KviDccVoiceCodec * pCodec;
+} KviDccVoiceThreadOptions;
+
+class KviDccVoiceThread : public KviDccThread
+{
+ friend class KviDccVoice;
+public:
+ KviDccVoiceThread(KviWindow * wnd,kvi_socket_t fd,KviDccVoiceThreadOptions * opt);
+ ~KviDccVoiceThread();
+protected:
+// bool m_bUseGsm;
+ KviDccVoiceThreadOptions * m_pOpt;
+ int m_soundFd;
+ int m_soundFdMode;
+ KviDataBuffer m_outFrameBuffer;
+ KviDataBuffer m_inFrameBuffer;
+ KviDataBuffer m_inSignalBuffer;
+ KviDataBuffer m_outSignalBuffer;
+ bool m_bPlaying;
+ bool m_bRecording;
+ bool m_bRecordingRequestPending;
+ bool m_bSoundcardChecked;
+ int m_iLastSignalBufferSize;
+ long m_iLastSignalBufferTime;
+// unsigned int m_uSleepTime;
+ KviMutex * m_pInfoMutex;
+ // stuff protected by the mutex:
+ int m_iInputBufferSize;
+ int m_iOutputBufferSize;
+protected:
+ bool checkSoundcard();
+ bool openSoundcardWithDuplexOption(int openMode,int failMode);
+ bool openSoundcard(int mode);
+ bool openSoundcardForWriting();
+ bool openSoundcardForReading();
+ void closeSoundcard();
+ bool readWriteStep();
+ bool soundStep();
+ void startRecording();
+ void stopRecording();
+ void startPlaying();
+ void stopPlaying();
+ virtual void run();
+};
+
+class KviDccMarshal;
+class QSlider;
+
+class KviDccVoice : public KviDccWindow
+{
+ Q_OBJECT
+public:
+ KviDccVoice(KviFrame *pFrm,KviDccDescriptor * dcc,const char * name);
+ ~KviDccVoice();
+protected:
+ KviTalHBox * m_pHBox;
+ QSlider * m_pVolumeSlider;
+ QLabel * m_pInputLabel;
+ QLabel * m_pOutputLabel;
+ QLabel * m_pRecordingLabel;
+ QLabel * m_pPlayingLabel;
+ QToolButton * m_pTalkButton;
+ QTimer * m_pUpdateTimer;
+ QString m_szTarget;
+ KviDccVoiceThread * m_pSlaveThread;
+protected:
+ virtual void focusInEvent(QFocusEvent *);
+ virtual const QString & target();
+ virtual void fillCaptionBuffers();
+ virtual QPixmap * myIconPtr();
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual QSize sizeHint() const;
+ virtual bool event(QEvent *e);
+ virtual void getBaseLogFileName(KviStr &buffer);
+ void startTalking();
+ void stopTalking();
+ void startConnection();
+ int getMixerVolume(void) const;
+protected slots:
+ void handleMarshalError(int err);
+ void connected();
+ void updateInfo();
+ void startOrStopTalking(bool bStart);
+ void setMixerVolume(int);
+ void connectionInProgress();
+// void stopTalking();
+};
+
+#if 0
+
+
+
+/*
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+CODEC DEFINITION
+
+ Sample rate = samples/sec (ex. 8000)
+ Sample size = bits (ex. 16 bits)
+ Sample endianness = le/be
+
+ Sample compressor = name
+
+ <rate>:<bits>:<endianness>:<compressor>
+
+ 8000:16:le:null
+ 8000:16:le:gsm
+ 8000:16:le:adpcm
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class KviVoiceParty
+{
+public:
+ KviVoiceParty(const QString &szNick,const QString &szIp,unsigned short uPort);
+ ~KviVoiceParty();
+protected:
+ QString m_szIp;
+ unsigned short m_uPort;
+ QString m_szNick;
+ KviPointerList<KviVoiceParty> * m_pChildrenTree;
+public:
+ const QString & ip(){ return m_szIp; };
+ unsigned short port(){ return m_uPort; };
+ const QString & nick(){ return m_szNick; };
+ void addChild(KviVoiceParty * pChild);
+};
+
+
+KviVoiceParty::KviVoiceParty(const QString &szNick,const QString &szIp,unsigned short uPort)
+: m_szIp(szIp), m_uPort(uPort), m_szNick(szNick)
+{
+ m_pChildrenTree = 0;
+}
+
+KviVoiceParty::~KviVoiceParty()
+{
+ if(m_pChildrenTree)delete m_pChildrenTree;
+}
+
+void KviVoiceParty::addChild(KviVoiceParty * pChild)
+{
+ if(!m_pChildrenTree)
+ {
+ m_pChildrenTree = new KviPointerList<KviVoiceParty>;
+ m_pChildrenTree->setAutoDelete(true);
+ }
+ m_pChildrenTree->append(pChild);
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class KviVoiceAudioEncoder
+{
+public:
+ KviVoiceAudioEncoder();
+ ~KviVoiceAudioEncoder();
+public:
+
+};
+
+class KviVoiceAudioDecoder
+{
+public:
+ KviVoiceAudioDecoder();
+ ~KviVoiceAudioDecoder();
+};
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class KviVoiceLink
+{
+public:
+ KviVoiceLink(KviVoiceParty * pRemoteParty);
+ ~KviVoiceLink();
+protected:
+ QString m_szId;
+ KviVoiceParty * m_pRemoteParty;
+ KviVoiceAudioEncoder * m_pAudioEncoder;
+ KviVoiceAudioDecoder * m_pAudioDecoder;
+public:
+ const QStirng & id(){ return m_szId; };
+ KviVoiceParty * remoteParty(){ return m_pRemoteParty; };
+};
+
+KviVoiceLink::KviVoiceLink(KviVoiceParty * pRemoteParty)
+{
+ KviQString::sprintf("%Q:%u",&(pRemoteParty->nick()),pRemoteParty->port());
+ m_pRemoteParty = pRemoteParty;
+ m_pAudioEncoder = 0;
+ m_pAudioDecoder = 0;
+}
+
+KviVoiceLink::~KviVoiceLink()
+{
+ delete m_pRemoteParty;
+ if(m_pAudioEncoder)delete m_pAudioEncoder;
+ if(m_pAudioDecoder)delete m_pAudioDecoder;
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class KviVoice_r8000s16eL_to_r8000s16eB_Transformer
+{
+
+}
+
+class KviVoice_r8000s16eB_to_r8000s16eL_Transformer
+{
+
+}
+
+class KviVoice_r11025s16eL_to_r11025s16eB_Transformer
+{
+
+}
+
+class KviVoice_r11025s16eB_to_r11025s16eL_Transformer
+{
+
+}
+
+class KviVoice_r11025s16eL_to_r8000s16eL_Transformer
+{
+
+}
+
+class KviVoice_r11025s16eL_to_r8000s16eB_Transformer
+{
+
+}
+
+class KviVoice_r11025s16eB_to_r8000s16eL_Transformer
+{
+
+}
+
+class KviVoice_r8000s16eL_to_r11025s16eL_Transformer
+{
+
+}
+
+class KviVoice_r8000s16eL_to_r11025s16eB_Transformer
+{
+
+}
+
+class KviVoice_r8000s16eB_to_r11025s16eL_Transformer
+{
+
+}
+
+
+
+class KviVoiceConference
+{
+public:
+ KviVoiceConference();
+ ~KviVoiceConference();
+public:
+ KviPointerList<KviVoiceLink> * m_pLinks;
+ KviPointerHashTable<QString,KviVoiceLink> *
+ SOCKET m_hUdpSocket;
+ QString m_szLastError;
+
+ unsigned int m_uLocalAudioSampleRate; // samples/sec
+ unsigned int m_uLocalAudioSampleSize; // bits
+ unsigned int m_uLocalAudioEndianness; // 0 = le, 1 = be
+
+public:
+ void conferenceThread();
+protected:
+ void conferenceThreadMain();
+ bool setupUdpSocket();
+};
+
+KviVoiceConference::KviVoiceConference()
+{
+ m_pLinks = new KviPointerList<KviVoiceLink>;
+ m_pLinks->setAutoDelete(true);
+}
+
+KviVoiceConference::~KviVoiceConference()
+{
+ delete m_pLinks;
+}
+
+bool KviVoiceConference::setupUdpSocket()
+{
+ return true;
+}
+
+void KviVoiceConference::shutdownUdpSocket()
+{
+}
+
+void KviVoiceConference::conferenceThreadMain()
+{
+ for(;;)
+ {
+ readAndDecompressIncomingDataForEveryLink();
+
+ mixIncomingDataToASingleStream();
+ playIncomingDataSingleStream();
+
+ readLocalAudioStream();
+
+ foreach(link)
+ {
+ mixLocalAndOtherIncomingDataStreams()
+ compressAndSendOtherIncomingDataStreams()
+ }
+
+ }
+}
+
+void KviVoiceConference::conferenceThread()
+{
+ if(!setupUdpSocket())return;
+
+ conferenceThreadMain();
+
+ shutdownUdpSocket();
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+*/
+
+// DCC VOICE NG proto
+
+//
+// tcp control connection
+// --> HELLO: DccVoice protocol header
+// <-- HELLO: DccVoice protocol header
+// --> IACCEPT: Codec-description|CodecId,Codec-description|CodecID,Codec... (in order of preference)
+// <-- IACCEPT: Codec-description|CodecID,Codec-description|CodecId,Codec... (in order of preference)
+// --> MYADDRESS
+// <-- MYADDRESS
+// --> YOURIDIS: <local id for the remote end> (CID)
+// <-- YOURIDIS: <local id for the remote end> (CID)
+
+// Audio is sent in blocks broken in chunks broken in udp packets
+// Each block is a set of consecutive audio chunks that theoretically
+// should be played consecutively.
+// Each packet in a chunk has an ordinal
+// Chunks must be relatively short in order
+// to allow a remote end that looses a packet to
+// synchronize after a short period of time
+// The maximum number of packets in a chunk is 65535 (but a chunk should be no more than 24-32 KBytes in size
+// and in general they should be as small as possible, even one packet per chunk, if the codec allows it)
+// Each chunk should be encoded independently of the others
+// We can switch codec at each chunk (but not at each packet)
+// When some packets are lost we loose the entire chunk
+// A block is completly synchronized in time (unless we loose some chunks: in that case
+// we may decide to synchronize with silence or insert a glitch...)
+// Decoding never depends on the future
+
+// Each packet should be decompressable (eventually dependently on the previous in the chunk)
+// but playable independently
+
+// start UDP stream
+
+// UDP Packet format:
+
+// <magic byte>: byte
+// <magic byte>: byte
+// <local id>: word
+// <payload len>: word
+// <payload>
+
+
+// Payload format:
+
+// <codec id>: word
+// <ordinal in a chunk>: word (0 = beginning of a chunk)
+
+// read raw audio data at sample rate X, sample size Y
+// multiplex data always at this sample rate and sample size
+
+
+#endif
+
+#endif //_VOICE_H_
diff --git a/src/modules/dcc/window.cpp b/src/modules/dcc/window.cpp
new file mode 100644
index 00000000..4abd7f99
--- /dev/null
+++ b/src/modules/dcc/window.cpp
@@ -0,0 +1,53 @@
+//
+// File : window.cpp
+// Creation date : Fri Jul 26 02:04:40 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "window.h"
+#include "kvi_tal_hbox.h"
+
+KviDccWindow::KviDccWindow(int type,KviFrame * lpFrm,const char * name,KviDccDescriptor * d)
+: KviWindow(type,lpFrm,name)
+{
+ m_pDescriptor = d;
+ m_pDescriptor->setWindow(this);
+ m_pMarshal = 0;
+ m_pButtonBox = new KviTalHBox(this);
+ createTextEncodingButton(m_pButtonBox);
+}
+
+KviDccWindow::~KviDccWindow()
+{
+ if(m_pMarshal)delete m_pMarshal;
+ if(m_pDescriptor)delete m_pDescriptor;
+}
+
+KviWindow * KviDccWindow::dccMarshalOutputWindow()
+{
+ return this;
+}
+
+const char * KviDccWindow::dccMarshalOutputContextString()
+{
+ static const char * static_context = "DCC";
+ return static_context;
+}
+
+#include "m_window.moc"
diff --git a/src/modules/dcc/window.h b/src/modules/dcc/window.h
new file mode 100644
index 00000000..b4bfa43d
--- /dev/null
+++ b/src/modules/dcc/window.h
@@ -0,0 +1,49 @@
+#ifndef _WINDOW_H_
+#define _WINDOW_H_
+//
+// File : window.h
+// Creation date : Fri Jul 26 02:04:39 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_window.h"
+
+#include "descriptor.h"
+#include "marshal.h"
+
+class KviDccWindow : public KviWindow , public KviDccMarshalOutputContext
+{
+ Q_OBJECT
+public:
+ KviDccWindow(int type,KviFrame * lpFrm,const char * name,KviDccDescriptor * d);
+ ~KviDccWindow();
+protected:
+ KviDccDescriptor * m_pDescriptor;
+ KviDccMarshal * m_pMarshal;
+public:
+ KviDccDescriptor * descriptor(){ return m_pDescriptor; };
+ const KviDccMarshal * marshal(){ return m_pMarshal; };
+
+ virtual KviWindow * dccMarshalOutputWindow();
+ virtual const char * dccMarshalOutputContextString();
+};
+
+
+
+#endif //_WINDOW_H_
diff --git a/src/modules/dialog/Makefile.am b/src/modules/dialog/Makefile.am
new file mode 100644
index 00000000..06018a14
--- /dev/null
+++ b/src/modules/dialog/Makefile.am
@@ -0,0 +1,21 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvidialog.la
+
+libkvidialog_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvidialog_la_SOURCES = libkvidialog.cpp
+
+libkvidialog_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= libkvidialog.h
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+libkvidialog.cpp: libkvidialog.moc
diff --git a/src/modules/dialog/libkvidialog.cpp b/src/modules/dialog/libkvidialog.cpp
new file mode 100644
index 00000000..dd7cf391
--- /dev/null
+++ b/src/modules/dialog/libkvidialog.cpp
@@ -0,0 +1,920 @@
+//=============================================================================
+//
+// File : libkvidialog.cpp
+// Creation date : Sat Sep 15 2001 01:13:25 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "libkvidialog.h"
+
+#include <qmessagebox.h>
+#include <qlayout.h>
+#include "kvi_tal_hbox.h"
+#include <qlineedit.h>
+#ifdef COMPILE_USE_QT4
+ #include <q3multilineedit.h>
+ #define QMultiLineEdit Q3MultiLineEdit
+ #include <qdesktopwidget.h>
+#else
+ #include <qmultilineedit.h>
+#endif
+#include <qevent.h>
+#include <qlabel.h>
+#include <qpushbutton.h>
+
+#include "kvi_locale.h"
+#include "kvi_module.h"
+#include "kvi_modulemanager.h"
+#include "kvi_error.h"
+#include "kvi_app.h"
+#include "kvi_iconmanager.h"
+#include "kvi_console.h"
+#include "kvi_iconmanager.h"
+#include "kvi_kvs_script.h"
+#include "kvi_msgbox.h"
+
+static KviPointerList<QWidget> * g_pDialogModuleDialogList;
+
+KviKvsCallbackMessageBox::KviKvsCallbackMessageBox(
+ const QString &szCaption,
+ const QString &szText,
+ const QString &szIcon,
+ const QString &szButton0,
+ const QString &szButton1,
+ const QString &szButton2,
+ const QString &szCode,
+ KviKvsVariantList * pMagicParams,
+ KviWindow * pWindow,bool modal)
+: QMessageBox(
+ szCaption,
+ szText,
+ QMessageBox::NoIcon,
+ szButton0.isEmpty() ? QMessageBox::NoButton : QMessageBox::Ok | QMessageBox::Default,
+ szButton1.isEmpty() ? QMessageBox::NoButton : (szButton2.isEmpty() ? QMessageBox::No | QMessageBox::Escape : QMessageBox::No),
+ szButton2.isEmpty() ? QMessageBox::NoButton : QMessageBox::Cancel | QMessageBox::Escape,
+ 0,0,modal) ,
+ KviKvsCallbackObject("dialog.message",pWindow,szCode,pMagicParams,0)
+{
+ g_pDialogModuleDialogList->append(this);
+#ifndef COMPILE_USE_QT4
+ setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_KVIRC)));
+#endif
+
+ QPixmap * pix = g_pIconManager->getImage(szIcon);
+
+ if(pix)setIconPixmap(*pix);
+ else {
+ if(KviQString::equalCI(szIcon,"information"))setIcon(QMessageBox::Information);
+ else if(KviQString::equalCI(szIcon,"warning"))setIcon(QMessageBox::Warning);
+ else if(KviQString::equalCI(szIcon,"critical"))setIcon(QMessageBox::Critical);
+ }
+ if(!szButton0.isEmpty())setButtonText(QMessageBox::Ok,szButton0);
+ if(!szButton1.isEmpty())setButtonText(QMessageBox::No,szButton1);
+ if(!szButton2.isEmpty())setButtonText(QMessageBox::Cancel,szButton2);
+}
+
+KviKvsCallbackMessageBox::~KviKvsCallbackMessageBox()
+{
+ g_pDialogModuleDialogList->removeRef(this);
+}
+
+void KviKvsCallbackMessageBox::done(int code)
+{
+ QMessageBox::done(code);
+
+ kvs_int_t iVal = 0;
+
+ switch(code)
+ {
+ case QMessageBox::No: iVal = 1; break;
+ case QMessageBox::Cancel: iVal = 2; break;
+ }
+
+ KviKvsVariantList params;
+ params.append(new KviKvsVariant(iVal));
+
+ execute(&params);
+
+ delete this;
+}
+
+
+/*
+ @doc: dialog.message
+ @type:
+ command
+ @title:
+ dialog.message
+ @short:
+ Shows a message box
+ @syntax:
+ dialog.message [-b] (<caption>,<message_text>,<icon>,<button0>[,<button1>[,<button2>[,<magic1>[,<magic2>[...]]]]])
+ {
+ <callback_command>
+ }
+ @description:
+ Shows a message dialog box with the specified <caption> , <message_text> , <icon> and
+ buttons.[br]
+ <caption> is a text string that will appear in the caption of the dialog box.[br]
+ <message_text> is a text string that will appear in the dialog box and can contain HTML formatting.[br]
+ <icon> is an [doc:image_id]image identifier[/doc] that defines an icon to be placed in the dialog box.
+ <icon> can be a relative or absolute path to an image file , a signed number (in that case it defines
+ an internal KVIrc image) or one of the special strings "critical", "information" and "warning".[br]
+ <button0> is the text of the first button (on the left).[br]
+ <button1> is the text of the second button (if empty or not given at all, only one button will appear in the dialog).[br]
+ <button2> is the text of the third button (if empty or not given, only two buttons will appear in the dialog).[br]
+ The first button is always the default button: it is activated when the user presses the
+ enter key. The thirs, or the second if the third is not present, is the escape button
+ and is activated when the user presses the Esc key.[br]
+ <magic1>,<magic2>... are the magic parameters: evaluated at dialog.message call time and passed
+ to the <callback_command> as positional parameters.[br]
+ If the -b or -modal switch is specified the dialog will have non-blocking modal behaviour:
+ it will appear above its parent widget and block its input until it's closed.[br]
+ Once the dialog has been shown , the user will click one of the buttons. At this point the dialog
+ is hidden and the <callback_command> is executed passing the number of the button clicked
+ as $0 and the magic parameters as positional parameters $1 , $2 , $3....[br]
+ Please note that if the user closes the window with the window manager close button ,
+ the action is interpreted as a button2 click (that is usually sth as "Cancel").[br]
+ @examples:
+ [example]
+ [comment]# Just a warning dialog[/comment]
+ dialog.message("Warning","You're being <b>warned</b>",warning,"Ok"){ echo The user clicked OK; }
+ [comment]# A question[/comment]
+ dialog.message("And now ?","What do you want to do ?",information,"Go home","Watch TV","Scream")
+ {
+ if($0 == 0)echo "The user want's to go home"
+ else if($0 == 1)echo "The user want's to watch TV"
+ else echo "The user wants to scream!"
+ }
+ [/example]
+*/
+
+static bool dialog_kvs_cmd_message(KviKvsModuleCallbackCommandCall * c)
+{
+ QString szCaption,szMessage,szIcon,szButton0,szButton1,szButton2;
+ KviKvsVariantList params;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("caption",KVS_PT_STRING,0,szCaption)
+ KVSM_PARAMETER("message",KVS_PT_STRING,0,szMessage)
+ KVSM_PARAMETER("icon",KVS_PT_STRING,0,szIcon)
+ KVSM_PARAMETER("button0",KVS_PT_STRING,KVS_PF_OPTIONAL,szButton0)
+ KVSM_PARAMETER("button1",KVS_PT_STRING,KVS_PF_OPTIONAL,szButton1)
+ KVSM_PARAMETER("button2",KVS_PT_STRING,KVS_PF_OPTIONAL,szButton2)
+ KVSM_PARAMETER("magic",KVS_PT_VARIANTLIST,KVS_PF_OPTIONAL,params)
+ KVSM_PARAMETERS_END(c)
+ bool modal;
+ if(c->hasSwitch('b',"modal")) modal=true;
+ else modal=false;
+ QString szCmd = c->callback()->code();
+
+ KviKvsCallbackMessageBox * box = new KviKvsCallbackMessageBox(
+ szCaption,szMessage,szIcon,szButton0,szButton1,szButton2,szCmd,&params,c->window(),modal);
+ box->show();
+
+ return true;
+}
+
+
+
+KviKvsCallbackTextInput::KviKvsCallbackTextInput(
+ const QString &szCaption,
+ const QString &szLabel,
+ const QString &szDefaultText,
+ const QString &szIcon,
+ bool bMultiLine,
+ const QString &szButton0,
+ const QString &szButton1,
+ const QString &szButton2,
+ const QString &szCode,
+ KviKvsVariantList * pMagicParams,
+ KviWindow * pWindow,bool modal)
+ : QDialog(), KviKvsCallbackObject("dialog.textinput",pWindow,szCode,pMagicParams,0)
+{
+ g_pDialogModuleDialogList->append(this);
+ setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_KVIRC)));
+ setModal(modal);
+ setCaption(szCaption);
+
+ QGridLayout * g = new QGridLayout(this,2,3,5,5);
+
+ QPixmap * pix = g_pIconManager->getImage(szIcon);
+
+ if(pix)
+ {
+ QLabel * il = new QLabel(this);
+ il->setPixmap(*pix);
+ il->setAlignment(Qt::AlignCenter);
+ g->addWidget(il,0,0);
+ QLabel * tl = new QLabel(szLabel,this);
+ g->addWidget(tl,0,1);
+ } else {
+ QLabel * tl = new QLabel(szLabel,this);
+ g->addMultiCellWidget(tl,0,0,0,1);
+ }
+
+ g->setColStretch(1,1);
+
+ m_bMultiLine = bMultiLine;
+
+ if(m_bMultiLine)
+ {
+ m_pEdit = new QMultiLineEdit(this);
+ ((QMultiLineEdit *)m_pEdit)->setText(szDefaultText);
+ } else {
+ m_pEdit = new QLineEdit(this);
+ ((QLineEdit *)m_pEdit)->setText(szDefaultText);
+ }
+
+ g->addMultiCellWidget(m_pEdit,1,1,0,1);
+
+ KviTalHBox * box = new KviTalHBox(this);
+ g->addMultiCellWidget(box,2,2,0,1);
+
+ m_iEscapeButton = 0;
+ m_iDefaultButton = 0;
+
+ if(!szButton0.isEmpty())
+ {
+ QString szB = szButton0;
+ bool bDef = false;
+ if(KviQString::equalCIN(szB,"default=",8))
+ {
+ bDef = true;
+ szB.remove(0,8);
+ m_iDefaultButton = 0;
+ } else if(KviQString::equalCIN(szB,"escape=",7))
+ {
+ szB.remove(0,7);
+ m_iEscapeButton = 0;
+ }
+ QPushButton * pb1 = new QPushButton(szB,box);
+ if(bDef)pb1->setDefault(true);
+ connect(pb1,SIGNAL(clicked()),this,SLOT(b0Clicked()));
+ }
+
+ if(!szButton1.isEmpty())
+ {
+ QString szB = szButton1;
+ bool bDef = false;
+ if(KviQString::equalCIN(szB,"default=",8))
+ {
+ bDef = true;
+ szB.remove(0,8);
+ m_iDefaultButton = 1;
+ } else if(KviQString::equalCIN(szB,"escape=",7))
+ {
+ szB.remove(0,7);
+ m_iEscapeButton = 1;
+ }
+ QPushButton * pb2 = new QPushButton(szB,box);
+ if(bDef)pb2->setDefault(true);
+ connect(pb2,SIGNAL(clicked()),this,SLOT(b1Clicked()));
+ }
+
+ if(!szButton2.isEmpty())
+ {
+ QString szB = szButton2;
+ bool bDef = false;
+ if(KviQString::equalCIN(szB,"default=",8))
+ {
+ bDef = true;
+ szB.remove(0,8);
+ m_iDefaultButton = 2;
+ } else if(KviQString::equalCIN(szB,"escape=",7))
+ {
+ szB.remove(0,7);
+ m_iEscapeButton = 2;
+ }
+ QPushButton * pb3 = new QPushButton(szB,box);
+ if(bDef)pb3->setDefault(true);
+ connect(pb3,SIGNAL(clicked()),this,SLOT(b2Clicked()));
+ }
+
+}
+
+KviKvsCallbackTextInput::~KviKvsCallbackTextInput()
+{
+ g_pDialogModuleDialogList->removeRef(this);
+}
+
+void KviKvsCallbackTextInput::b0Clicked()
+{
+ done(0+10);
+}
+
+void KviKvsCallbackTextInput::b1Clicked()
+{
+ done(1+10);
+}
+
+void KviKvsCallbackTextInput::b2Clicked()
+{
+ done(2+10);
+}
+
+void KviKvsCallbackTextInput::closeEvent(QCloseEvent *e)
+{
+ e->ignore();
+ done(m_iEscapeButton+10);
+}
+
+void KviKvsCallbackTextInput::done(int code)
+{
+ if(code >= 10)
+ {
+ code -= 10;
+ } else {
+ switch(code)
+ {
+ case QDialog::Accepted:
+ code = m_iDefaultButton;
+ break;
+ default:
+ code = m_iEscapeButton;
+ break;
+ }
+ }
+
+ QString txt;
+
+ if(m_bMultiLine)
+ {
+ txt = ((QMultiLineEdit *)m_pEdit)->text();
+ } else {
+ txt = ((QLineEdit *)m_pEdit)->text();
+ }
+
+ KviKvsVariantList params;
+ params.append(new KviKvsVariant((kvs_int_t)code));
+ params.append(new KviKvsVariant(txt));
+
+ execute(&params);
+
+ //QDialog::done(code);
+
+ delete this;
+}
+
+void KviKvsCallbackTextInput::showEvent(QShowEvent *e)
+{
+ move((g_pApp->desktop()->width() - width())/2,(g_pApp->desktop()->height() - height()) / 2);
+ QDialog::showEvent(e);
+}
+
+
+
+/*
+ @doc: dialog.textinput
+ @type:
+ command
+ @title:
+ dialog.textinput
+ @short:
+ Shows a dialog that accepts user input as text
+ @syntax:
+ dialog.textinput [-d=<default text>] [-i=<icon>] [-m] [-b] (<caption>,<info_text>,<button0>[,<button1>[,<button2>[,<magic1>[,<magic2>[...]]]]])
+ {
+ <callback_command>
+ }
+ @switches:
+ !sw: -d=<default_text> | --default=<default_text>
+ Set the initial text input value to <default_text>
+ !sw: -i=<icon> | --icon=<icon>
+ Display the specified icon, just of the left of the informational text
+ !sw: -m | --multiline
+ Input multiline text instead of single line
+ @description:
+ Shows a text input dialog box with the specified <caption> , <info_text> , <icon> and
+ buttons.[br]
+ <caption> is a text string that will appear in the caption of the dialog box.[br]
+ <info_text> is a fixed text string that will appear in the dialog box and can contain HTML formatting.[br]
+ <button0> is the text of the first button (on the left).[br]
+ <button1> is the text of the second button (if empty or not given at all, only one button will appear in the dialog).[br]
+ <button2> is the text of the third button (if empty or not given, only two buttons will appear in the dialog).[br]
+ If one of the text strings starts with a "default=" prefix then the button is assumed
+ to be the default button of the dialog and will be also activated when the user presses enter.
+ If the -m switch is used , the dialog will be a multi-line text input, otherwise the user will be able to
+ input only a single line of text.[br]
+ If the -d switch is used , the initial text input value is set to <default text>.[br]
+ If the -i switch is used , the dialog displays also the icon <icon> , just on the left ot the <info_text>[br]
+ If the -b or -modal switch is specified the dialog will have non-blocking modal behaviour:
+ it will appear above its parent widget and block its input until it's closed.[br]
+ In that case <icon> is an [doc:image_id]image identifier[/doc] (can be a relative or absolute
+ path to an image file or a signed number (in that case it defines an internal KVIrc image).[br]
+ <magic1>,<magic2>... are the magic parameters: evaluated at dialog.textinput call time and passed
+ to the <callback_command> as positional parameters.[br]
+ Once the dialog has been shown , the user will click one of the buttons. At this point the dialog
+ is hidden and the <callback_command> is executed passing the text input value in $1, the number of the button clicked
+ as $0, and the magic parameters as positional parameters $2 , $3 , $4....[br]
+ Please note that if the user closes the window with the window manager close button ,
+ the action is interpreted as a button2 click (that is usually sth as "Cancel").[br]
+ @examples:
+ [example]
+ [comment]# We need a single line "reason"[/comment]
+ dialog.textinput -d="Working !" (Away,<center>Please enter the <h1>away message</h1></center>,"Ok","Cancel")
+ {
+ switch($0)
+ {
+ case(0):
+ away $1-
+ break;
+ default:
+ # Cancelled
+ break;
+ }
+ }
+ [/example]
+*/
+
+static bool dialog_kvs_cmd_textinput(KviKvsModuleCallbackCommandCall * c)
+{
+ QString szCaption,szInfoText,szIcon,szDefaultText,szButton0,szButton1,szButton2;
+ KviKvsVariantList params;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("caption",KVS_PT_STRING,0,szCaption)
+ KVSM_PARAMETER("info_text",KVS_PT_STRING,0,szInfoText)
+ KVSM_PARAMETER("button0",KVS_PT_STRING,KVS_PF_OPTIONAL,szButton0)
+ KVSM_PARAMETER("button1",KVS_PT_STRING,KVS_PF_OPTIONAL,szButton1)
+ KVSM_PARAMETER("button2",KVS_PT_STRING,KVS_PF_OPTIONAL,szButton2)
+ KVSM_PARAMETER("magic",KVS_PT_VARIANTLIST,KVS_PF_OPTIONAL,params)
+ KVSM_PARAMETERS_END(c)
+
+ QString szCmd = c->callback()->code();
+
+ c->switches()->getAsStringIfExisting('i',"icon",szIcon);
+ c->switches()->getAsStringIfExisting('d',"default",szDefaultText);
+ bool modal;
+ if(c->hasSwitch('b',"modal")) modal=true;
+ else modal=false;
+ KviKvsCallbackTextInput * box = new KviKvsCallbackTextInput(
+ szCaption,szInfoText,szDefaultText,szIcon,c->switches()->find('m',"multiline"),
+ szButton0,szButton1,szButton2,szCmd,&params,c->window(),modal);
+ box->show();
+
+ return true;
+}
+
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+// New KVS
+KviKvsCallbackFileDialog::KviKvsCallbackFileDialog(
+ const QString &szCaption,
+ const QString &szInitialSelection,
+ const QString &szFilter,
+ const QString &szCode,
+ KviKvsVariantList * pMagicParams,
+ KviWindow * pWindow,bool modal)
+ : KviFileDialog(szInitialSelection,szFilter,0,0,modal), KviKvsCallbackObject("dialog.file",pWindow,szCode,pMagicParams,0)
+{
+ g_pDialogModuleDialogList->append(this);
+ setCaption(szCaption);
+}
+
+KviKvsCallbackFileDialog::~KviKvsCallbackFileDialog()
+{
+ g_pDialogModuleDialogList->removeRef(this);
+}
+
+void KviKvsCallbackFileDialog::done(int code)
+{
+ KviFileDialog::done(code);
+ KviKvsVariantList params;
+
+ if(code == QDialog::Accepted)
+ {
+#ifdef COMPILE_KDE_SUPPORT
+ if(mode() == KFile::ExistingOnly)
+#else
+ if(mode() == QFileDialog::ExistingFiles)
+#endif
+ {
+ KviKvsArray * a = new KviKvsArray();
+ QStringList sl = selectedFiles();
+ int idx = 0;
+ for(QStringList::Iterator it = sl.begin();it != sl.end();++it)
+ {
+ a->set(idx,new KviKvsVariant(*it));
+ idx++;
+ }
+ params.append(new KviKvsVariant(a));
+ } else {
+ params.append(new KviKvsVariant(selectedFile()));
+ }
+ } else {
+ params.append(new KviKvsVariant(QString("")));
+ }
+
+ hide(); // ensure we're hidden
+
+ // ugly workaround for the Qt filedialog "destructive accept() before this reference" bug
+ // we can't delete ourselves in this moment.... :(((
+ // ...so skip out of this call stack and ask KviApp to destroy us just
+ // when the control returns to the main loop.
+ // If the module is unloaded then , KviApp will notice it and will NOT delete the dialog
+ g_pApp->collectGarbage(this);
+
+ // calling dialog.unload here WILL lead to a sigsegv (this is SURE
+ // with a lot of qt versions that have the ugly file dialog "accept before this reference" bug)
+ // to avoid it, we can execute the callback triggered by a timer...
+ // ... umpf ...
+ execute(&params);
+}
+
+/*
+ @doc: dialog.file
+ @type:
+ command
+ @title:
+ dialog.file
+ @short:
+ Shows a file dialog
+ @syntax:
+ dialog.file [-b] (<mode>,<caption>[,<initial_selection[,<file_filter>[,<magic1>[,<magic2>[...]]]]]])
+ {
+ <callback_command>
+ }
+ @description:
+ Shows an openfile dialog box with the specified <caption> , <initial_selection> , and <file_filter>.[br]
+ <mode> can be "open" , "openm" , "save" or "dir":[br]
+ "open" causes the dialog to return an existing file[br]
+ "openm" is similar to open but allows returning multiple files as a comma separated list[br]
+ "save" causes the dialog to return any file name (no overwrite confirmation is built in the dialog!)[br]
+ "dir" causes the dialog to return an existing directory name[br]
+ <mode> defaults to "open".[br]
+ <caption> is a text string that will appear in the caption of the dialog box.[br]
+ <initial_selection> can be a directory or filename that will be initially selected in the dialog.[br]
+ Only files matching <file_filter> are selectable. If filter is an empty string, all files are selectable.[br]
+ In the filter string multiple filters can be specified separated by either two semicolons next to each
+ other or separated by newlines. To add two filters, one to show all C++ files and one to show all
+ header files, the filter string could look like "C++ Files (*.cpp *.cc *.C *.cxx *.c++);;Header Files (*.h *.hxx *.h++)"
+ <magic1>,<magic2>... are the magic parameters: evaluated at dialog.message call time and passed
+ to the <callback_command> as positional parameters.[br]
+ If the -b or -modal switch is specified the dialog will have non-blocking modal behaviour:
+ it will appear above its parent widget and block its input until it's closed.[br]
+ Once the dialog has been shown , the user will select an EXISTING file and click either
+ Ok or Cancel. At this point the dialog is hidden and the <callback_command> is executed passing the selected file(s) as $0
+ and the magic parameters as positional parameters $1 , $2 , $3....[br]
+ If the user clicks "Cancel" or does not select any file the positional parameter $0 will be empty.[br]
+ @examples:
+ [example]
+ dialog.file(open,Choose an audio file,/home/pragma/TheAudio.au,"Audio files (*.au *.wav *.snd)")
+ {
+ if("$0" != "")run play $0
+ }
+ [/example]
+*/
+
+//#warning "Examples for these dialogs!"
+
+
+static bool dialog_kvs_cmd_file(KviKvsModuleCallbackCommandCall * c)
+{
+ QString szMode,szCaption,szInitialSelection,szFilter;
+ KviKvsVariantList params;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("mode",KVS_PT_STRING,0,szMode)
+ KVSM_PARAMETER("caption",KVS_PT_STRING,0,szCaption)
+ KVSM_PARAMETER("initial_selection",KVS_PT_STRING,KVS_PF_OPTIONAL,szInitialSelection)
+ KVSM_PARAMETER("filter",KVS_PT_STRING,KVS_PF_OPTIONAL,szFilter)
+ KVSM_PARAMETER("magic",KVS_PT_VARIANTLIST,KVS_PF_OPTIONAL,params)
+ KVSM_PARAMETERS_END(c)
+ bool modal;
+ if(c->hasSwitch('b',"modal")) modal=true;
+ else modal=false;
+ QString szCmd = c->callback()->code();
+
+ KviKvsCallbackFileDialog * box = new KviKvsCallbackFileDialog(szCaption,szInitialSelection,szFilter,szCmd,&params,c->window(),modal);
+
+ KviFileDialog::FileMode md = KviFileDialog::ExistingFile;
+
+ if(KviQString::equalCI(szMode,"openm"))md = KviFileDialog::ExistingFiles;
+ else if(KviQString::equalCI(szMode,"save"))md = KviFileDialog::AnyFile;
+ else if(KviQString::equalCI(szMode,"dir"))md = KviFileDialog::DirectoryOnly;
+
+ box->setFileMode(md);
+
+ box->show();
+
+ return true;
+}
+
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+// New KVS
+KviKvsCallbackImageDialog::KviKvsCallbackImageDialog(
+ const QString &szCaption,
+ const QString &szInitialSelection,
+ int iType,
+ int iMaxSize,
+ const QString &szCode,
+ KviKvsVariantList * pMagicParams,
+ KviWindow * pWindow,bool modal)
+ : KviImageDialog(0,szCaption,iType,0,szInitialSelection,iMaxSize,modal), KviKvsCallbackObject("dialog.image",pWindow,szCode,pMagicParams,0)
+{
+ g_pDialogModuleDialogList->append(this);
+}
+
+KviKvsCallbackImageDialog::~KviKvsCallbackImageDialog()
+{
+ g_pDialogModuleDialogList->removeRef(this);
+}
+
+void KviKvsCallbackImageDialog::done(int code)
+{
+ KviImageDialog::done(code);
+ KviKvsVariantList params;
+
+ if(code == QDialog::Accepted)
+ {
+ params.append(new KviKvsVariant(selectedImage()));
+ } else {
+ params.append(new KviKvsVariant(QString("")));
+ }
+
+ hide(); // ensure we're hidden
+
+ // ugly workaround for the Qt filedialog "destructive accept() before this reference" bug
+ // we can't delete ourselves in this moment.... :(((
+ // ...so skip out of this call stack and ask KviApp to destroy us just
+ // when the control returns to the main loop.
+ // If the module is unloaded then , KviApp will notice it and will NOT delete the dialog
+ g_pApp->collectGarbage(this);
+
+ // calling dialog.unload here WILL lead to a sigsegv (this is SURE
+ // with a lot of qt versions that have the ugly file dialog "accept before this reference" bug)
+ // to avoid it, we can execute the callback triggered by a timer...
+ // ... umpf ...
+ execute(&params);
+}
+
+
+/*
+ @doc: dialog.image
+ @type:
+ command
+ @title:
+ dialog.image
+ @short:
+ Shows a image dialog
+ @syntax:
+ dialog.image [-b] (<type>,<caption>,<initial_directory>,[<maxsize>,[,<magic1>[,<magic2>[...]]]]]])
+ {
+ <callback_command>
+ }
+ @description:
+ Shows a dialog that allows selecting an [doc:image_id]image_id[doc].
+ The <type> parameter must be a combination of the following flags:<br>
+ 's' : allow selecting from the KVIrc builtin small icons<br>
+ 'f' : allow browsing the local directories<br>
+ 'a' : all of the above<br>
+ The default for <type> is 'a'.<br>
+ <caption> is the caption string for the dialog.<br>
+ <initial_directory> makes sense only if 'f' is specified (if <initial_directory> is empty
+ then the last path used by the image dialog will be used).<br>
+ <maxsize> is the maximum size of the images for that the preview will be generated:
+ this is 256000 bytes by default (if unspecified). Don't make it a lot bigger : it can take a lot to make
+ the thumbnails for bigger images (and it can eat a considerable amount of memory).<br>
+ <magic1>,<magic2>... are the magic parameters: evaluated at dialog.image call time and passed
+ to the <callback_command> as positional parameters.[br]
+ If the -b or -modal switch is specified the dialog will have non-blocking modal behaviour:
+ it will appear above its parent widget and block its input until it's closed.[br]
+ Once the dialog has been shown , the user will select an EXISTING file and click either
+ Ok or Cancel. At this point the dialog is hidden and the <callback_command> is executed passing the selected file(s) as $0
+ and the magic parameters as positional parameters $1 , $2 , $3....[br]
+ If the user clicks "Cancel" or does not select any image the positional parameter $0 will be empty.[br]
+ @examples:
+ [example]
+ dialog.image(f,Choose an image file,/home/pragma/,"256000")
+ {
+ if("$0" != "")run kview $0
+ }
+ [/example]
+*/
+
+//#warning "Examples for these dialogs!"
+
+
+static bool dialog_kvs_cmd_image(KviKvsModuleCallbackCommandCall * c)
+{
+ QString szType,szCaption,szInitialSelection;
+ kvs_uint_t iMaxSize;
+ KviKvsVariantList params;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("mode",KVS_PT_STRING,0,szType)
+ KVSM_PARAMETER("caption",KVS_PT_STRING,0,szCaption)
+ KVSM_PARAMETER("initial_directory",KVS_PT_STRING,0,szInitialSelection)
+ KVSM_PARAMETER("maxsize",KVS_PT_UINT,KVS_PF_OPTIONAL,iMaxSize)
+ KVSM_PARAMETER("magic",KVS_PT_VARIANTLIST,KVS_PF_OPTIONAL,params)
+ KVSM_PARAMETERS_END(c)
+ bool modal;
+ if(c->hasSwitch('b',"modal")) modal=true;
+ else modal=false;
+ QString szCmd = c->callback()->code();
+
+ int iType = 0;
+
+ if(szType.contains('s'))iType |= KID_TYPE_BUILTIN_IMAGES_SMALL;
+ if(szType.contains('f'))iType |= KID_TYPE_FULL_PATH;
+ if(szType.isEmpty())iType = KID_TYPE_ALL;
+
+ if(iMaxSize < 1)iMaxSize = 256000;
+
+ KviKvsCallbackImageDialog * box = new KviKvsCallbackImageDialog(szCaption,szInitialSelection,iType,iMaxSize,szCmd,&params,c->window(),modal);
+
+ box->show();
+
+ return true;
+}
+
+/*
+ @doc: dialog.yesno
+ @type:
+ function
+ @title:
+ $dialog.yesno
+ @short:
+ Shows a simple yes/no dialog
+ @syntax:
+ $dialog.yesno(<caption:string>,<szText:string>)
+ @description:
+ Shows a simple yes/no dialog. Returns 1 if user clicks "Yes" and 0 if (s)he clicks "No".
+ Please note that this dialog is BLOCKING: it blocks execution of the script
+ until the user has selected either YES or NO.
+ @examples:
+ @seealso:
+*/
+
+static bool dialog_kvs_fnc_yesno(KviKvsModuleFunctionCall * c)
+{
+ QString szCaption;
+ QString szText;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("caption",KVS_PT_STRING,0,szCaption)
+ KVSM_PARAMETER("text",KVS_PT_STRING,0,szText)
+ KVSM_PARAMETERS_END(c)
+
+ c->enterBlockingSection();
+ bool yes=KviMessageBox::yesNo(szCaption,szText); // this will happily crash on quit ?
+ if(!c->leaveBlockingSection())return true; // just die
+ c->returnValue()->setBoolean(yes);
+ return true;
+}
+
+/*
+
+static int g_iLocalEventLoops = 0;
+
+static bool dialog_module_cmd_unload(KviModule *m,KviCommand *c)
+{
+ // We use local loops in this module: we must FORBID explicit unloading of the
+ // module while local even loops are running
+ ENTER_STACK_FRAME(c,"dialog_module_cmd_unload");
+ c->warning(__tr("The dialog module can't be explicitly unloaded: a modal dialog is currently open"));
+ return c->leaveStackFrame();
+}
+
+static void dialog_module_entering_local_loop(KviModule * m)
+{
+ // Replace unload
+ g_iLocalEventLoops++;
+ if(g_iLocalEventLoops == 1)m->registerCommand("unload",dialog_module_cmd_unload);
+}
+
+static void dialog_module_exiting_local_loop(KviModule * m)
+{
+ g_pModuleManager->registerDefaultCommands(m);
+ g_iLocalEventLoops--;
+}
+
+static bool dialog_module_fnc_textline(KviModule *m,KviCommand *c,KviParameterList * parms,KviStr &buffer)
+{
+ ENTER_STACK_FRAME(c,"dialog_module_fnc_textline");
+
+ KviStr caption = parms->safeFirstParam();
+ KviStr info = parms->safeNextParam();
+ KviStr initial = parms->safeNextParam();
+
+ dialog_module_entering_local_loop(m);
+ QMessageBox::information(0,caption.ptr(),info.ptr(),QMessageBox::Ok);
+ dialog_module_exiting_local_loop(m);
+
+ // It might be that the current window is no longer available!!!
+
+ return c->leaveStackFrame();
+}
+
+*/
+
+/*
+ @doc: noblockingdialogs
+ @type:
+ generic
+ @title:
+ Why there are no blocking dialogs in KVIrc ?
+ @short:
+ Tecnical answer
+ @description:
+ Why there are no blocking dialogs in KVIrc ?[br]
+ The answer is simple: because they're more confusing and tricky than it seems.[br]
+ Blocking the entire program control flow while showing a dialog is
+ rather a bad idea since we have to deal with external entities (servers and other users)
+ that are NOT blocked. This means that the blocking dialogs must block only the
+ script control-flow but let the rest of the application running.
+ Such blocking dialogs actually seem to simplify scripting because
+ the programmer "feels" that the control is always left in the script snippet that he is writing.
+ This is actually confusing: the control IS in the script snippet but while the dialog
+ is open the whole world can change: you can return from the dialog call and discover
+ that the server connection no longer exists and the application is about to quit.[br]
+ This may happen even with non-blocking dialogs ,but in non-blocking mode you have
+ a way to handle this event. Consider the following snippet of code:[br]
+ [example]
+ echo My name is $?
+ [/example]
+ Where $? stands for a blocking input dialog that asks the user for some text.[br]
+ When the input dialog returns the window that the echo was directed to no longer
+ exists and you have no way to stop the echo! (Well...I could add extra code
+ in the executable to handle all these situations but that would be really too expensive).[br]
+ With object scripting this is actually dangerous: you might use a blocking dialog
+ in an object signal handler and when returning discover that this object has been deleted!
+ (The example refers to a simple object , but think about a complex hierarchy of objects
+ where one random gets deleted...).[br]
+ This is why the dialogs in KVIrc are non-blocking :)[br]
+ That's REAL programming.
+*/
+
+
+
+
+
+
+
+static bool dialog_module_init(KviModule * m)
+{
+ g_pDialogModuleDialogList = new KviPointerList<QWidget>;
+ g_pDialogModuleDialogList->setAutoDelete(false);
+
+ KVSM_REGISTER_CALLBACK_COMMAND(m,"message",dialog_kvs_cmd_message);
+ KVSM_REGISTER_CALLBACK_COMMAND(m,"textinput",dialog_kvs_cmd_textinput);
+ KVSM_REGISTER_CALLBACK_COMMAND(m,"file",dialog_kvs_cmd_file);
+ KVSM_REGISTER_CALLBACK_COMMAND(m,"image",dialog_kvs_cmd_image);
+
+ KVSM_REGISTER_FUNCTION(m,"yesno",dialog_kvs_fnc_yesno);
+
+ return true;
+}
+
+static bool dialog_module_cleanup(KviModule *m)
+{
+ // Here we get a tragedy if g_iLocalEventLoops > 0!
+ while(g_pDialogModuleDialogList->first())delete g_pDialogModuleDialogList->first();
+ delete g_pDialogModuleDialogList;
+ g_pDialogModuleDialogList = 0;
+ return true;
+}
+
+static bool dialog_module_can_unload(KviModule *m)
+{
+ return g_pDialogModuleDialogList->isEmpty();
+}
+
+
+KVIRC_MODULE(
+ "KVIrc script dialogs",
+ "1.0.0",
+ "Szymon Stefanek <pragma at kvirc dot net>" ,
+ "Adds the /dialog.* commands functionality\n",
+ dialog_module_init ,
+ dialog_module_can_unload,
+ 0,
+ dialog_module_cleanup
+)
+
+#include "libkvidialog.moc"
diff --git a/src/modules/dialog/libkvidialog.h b/src/modules/dialog/libkvidialog.h
new file mode 100644
index 00000000..43b1510f
--- /dev/null
+++ b/src/modules/dialog/libkvidialog.h
@@ -0,0 +1,133 @@
+#ifndef _KVI_DIALOG_H_
+#define _KVI_DIALOG_H_
+//=============================================================================
+//
+// File : libkvidialog.cpp
+// Creation date : Sat Sep 15 2001 01:13:25 by Szymon Stefanek
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_window.h"
+#include "kvi_string.h"
+#include "kvi_parameterlist.h"
+#include "kvi_filedialog.h"
+#include "kvi_imagedialog.h"
+
+#include "kvi_kvs_callbackobject.h"
+
+#include <qmessagebox.h>
+#include <qdialog.h>
+
+
+
+// New KVS
+class KviKvsCallbackMessageBox : public QMessageBox, public KviKvsCallbackObject
+{
+ Q_OBJECT
+public:
+ KviKvsCallbackMessageBox(
+ const QString &szCaption,
+ const QString &szText,
+ const QString &szIcon,
+ const QString &szButton0,
+ const QString &szButton1,
+ const QString &szButton2,
+ const QString &szCode,
+ KviKvsVariantList * pMagicParams,
+ KviWindow * pWindow, bool modal=false);
+ ~KviKvsCallbackMessageBox();
+protected slots:
+ virtual void done(int code);
+};
+
+
+
+
+// New KVS
+class KviKvsCallbackTextInput : public QDialog, public KviKvsCallbackObject
+{
+ Q_OBJECT
+public:
+ KviKvsCallbackTextInput(
+ const QString &szCaption,
+ const QString &szLabel,
+ const QString &szDefaultText,
+ const QString &szIcon,
+ bool bMultiLine,
+ const QString &szButton0,
+ const QString &szButton1,
+ const QString &szButton2,
+ const QString &szCode,
+ KviKvsVariantList * pMagicParams,
+ KviWindow * pWindow, bool modal=false);
+ ~KviKvsCallbackTextInput();
+protected:
+ bool m_bMultiLine;
+ QWidget * m_pEdit;
+ int m_iEscapeButton;
+ int m_iDefaultButton;
+protected:
+ virtual void closeEvent(QCloseEvent *e);
+ virtual void showEvent(QShowEvent *e);
+protected slots:
+ void b0Clicked();
+ void b1Clicked();
+ void b2Clicked();
+ virtual void done(int code);
+};
+
+
+
+// New KVS
+class KviKvsCallbackFileDialog : public KviFileDialog, public KviKvsCallbackObject
+{
+ Q_OBJECT
+public:
+ KviKvsCallbackFileDialog(
+ const QString &szCaption,
+ const QString &szInitialSelection,
+ const QString &szFilter,
+ const QString &szCode,
+ KviKvsVariantList * pMagicParams,
+ KviWindow * pWindow, bool modal=false);
+ ~KviKvsCallbackFileDialog();
+protected:
+ virtual void done(int code);
+};
+
+
+// New KVS
+class KviKvsCallbackImageDialog : public KviImageDialog, public KviKvsCallbackObject
+{
+ Q_OBJECT
+public:
+ KviKvsCallbackImageDialog(
+ const QString &szCaption,
+ const QString &szInitialSelection,
+ int iType,
+ int iMaxSize,
+ const QString &szCode,
+ KviKvsVariantList * pMagicParams,
+ KviWindow * pWindow,bool modal=false);
+ ~KviKvsCallbackImageDialog();
+protected:
+ virtual void done(int code);
+};
+
+#endif //_KVI_DIALOG_H_
diff --git a/src/modules/dockwidget/Makefile.am b/src/modules/dockwidget/Makefile.am
new file mode 100644
index 00000000..71a2f023
--- /dev/null
+++ b/src/modules/dockwidget/Makefile.am
@@ -0,0 +1,33 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvidockwidget.la
+
+libkvidockwidget_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvidockwidget_la_SOURCES = libkvidockwidget_qt3.cpp libkvidockwidget_qt4.cpp
+
+#nodist_libkvidockwidget_la_SOURCES = moc_trayicon.cpp
+
+libkvidockwidget_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= libkvidockwidget.h libkvidockwidget_qt4.h libkvidockwidget_qt3.h
+
+tmpdir = $(picsdir)
+
+tmp_DATA = kvi_dock.png kvi_dock_part-0.png kvi_dock_part-1.png kvi_dock_part-2.png
+
+EXTRA_DIST = $(tmp_DATA)
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+moc_%.cpp: %.h
+ $(SS_QT_MOC) $< -o $@
+
+libkvidockwidget_qt3.cpp: libkvidockwidget_qt3.moc
+libkvidockwidget_qt4.cpp: libkvidockwidget_qt4.moc
diff --git a/src/modules/dockwidget/kvi_dock.png b/src/modules/dockwidget/kvi_dock.png
new file mode 100644
index 00000000..3ac1a3ce
--- /dev/null
+++ b/src/modules/dockwidget/kvi_dock.png
Binary files differ
diff --git a/src/modules/dockwidget/kvi_dock_part-0.png b/src/modules/dockwidget/kvi_dock_part-0.png
new file mode 100644
index 00000000..80bdbb0a
--- /dev/null
+++ b/src/modules/dockwidget/kvi_dock_part-0.png
Binary files differ
diff --git a/src/modules/dockwidget/kvi_dock_part-1.png b/src/modules/dockwidget/kvi_dock_part-1.png
new file mode 100644
index 00000000..b0acff09
--- /dev/null
+++ b/src/modules/dockwidget/kvi_dock_part-1.png
Binary files differ
diff --git a/src/modules/dockwidget/kvi_dock_part-2.png b/src/modules/dockwidget/kvi_dock_part-2.png
new file mode 100644
index 00000000..5229a74e
--- /dev/null
+++ b/src/modules/dockwidget/kvi_dock_part-2.png
Binary files differ
diff --git a/src/modules/dockwidget/libkvidockwidget.h b/src/modules/dockwidget/libkvidockwidget.h
new file mode 100644
index 00000000..89b99a47
--- /dev/null
+++ b/src/modules/dockwidget/libkvidockwidget.h
@@ -0,0 +1,34 @@
+#ifndef _KVI_TAL_DOCK_H_
+#define _KVI_TAL_DOCK_H_
+
+//
+// File : libkvidockwidget.h
+// Creation date : Sun Jun 18 2000 12:53:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_USE_QT4
+ #include "libkvidockwidget_qt4.h"
+#else
+ #include "libkvidockwidget_qt3.h"
+#endif
+
+#endif // _KVI_TAL_DOCK_H_
diff --git a/src/modules/dockwidget/libkvidockwidget_qt3.cpp b/src/modules/dockwidget/libkvidockwidget_qt3.cpp
new file mode 100644
index 00000000..60003853
--- /dev/null
+++ b/src/modules/dockwidget/libkvidockwidget_qt3.cpp
@@ -0,0 +1,858 @@
+//
+// File : libkvidockwidget.cpp
+// Creation date : Tue Jan 02 20001 14:34:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+#ifndef COMPILE_USE_QT4
+
+#include "kvi_app.h"
+#include "kvi_module.h"
+#include "kvi_locale.h"
+#include "kvi_memmove.h"
+#include "kvi_taskbar.h"
+#include "kvi_window.h"
+#include "kvi_dynamictooltip.h"
+#include "kvi_iconmanager.h"
+#include "kvi_internalcmd.h"
+#include "kvi_console.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectionuserinfo.h"
+#include "kvi_imagelib.h"
+#include "kvi_options.h"
+#include "kvi_ircview.h"
+
+#include "libkvidockwidget.h"
+#include "kvi_doublebuffer.h"
+
+#ifdef COMPILE_KDE_SUPPORT
+ #include <kwin.h>
+ #include <kpopupmenu.h>
+#else
+ #include <qlabel.h>
+#endif
+
+#include "kvi_tal_popupmenu.h"
+
+
+#include <qpixmap.h>
+#include <qpainter.h>
+#include <qtimer.h>
+#include <qevent.h>
+#include <qregexp.h>
+
+#include <stdlib.h>
+#include <time.h>
+
+#ifdef COMPILE_ON_WINDOWS
+ #include <windows.h>
+
+ #include <qbitmap.h>
+ #include <qcursor.h>
+
+ #define ID_DOCKWIDGET_TASKBAR_ICON 0xdeadbeef
+ #define WM_KVIRC_NOTIFY_ICON_MESSAGE (WM_USER + 0xbeef)
+
+ static UINT WM_KVIRC_TASKBAR_CREATED = 0;
+#else
+#ifndef Q_OS_MACX
+ #include <X11/Xlib.h>
+
+ //const int XFocusOut = FocusOut;
+ const int XFocusIn = FocusIn;
+ #undef FocusOut
+ #undef FocusIn
+ #undef KeyPress
+ #undef KeyRelease
+
+ //#warning "Later remove this stuff and use a wrapper for #include <X11/Xlib.h>"
+ #ifdef Bool
+ #undef Bool
+ #endif
+#endif
+#endif
+
+extern KVIRC_API KviPointerHashTable<const char *,KviWindow> * g_pGlobalWindowDict;
+static KviPointerList<KviDockWidget> * g_pDockWidgetList = 0;
+
+static QPixmap * g_pDock1 = 0;
+static QPixmap * g_pDock2 = 0;
+static QPixmap * g_pDock3 = 0;
+
+#ifdef COMPILE_ON_WINDOWS
+ static HICON g_pCurrentIcon = 0;
+ static QPixmap * g_pCurrentPixmap = 0;
+#endif
+
+
+KviDockWidget::KviDockWidget(KviFrame * frm,const char * name)
+: QWidget(0,name)
+{
+ m_iConsoles = 0;
+ m_iChannels = 0;
+ m_iQueries = 0;
+ m_iOther = 0;
+
+ m_pFlashingTimer = new QTimer(this,"flashing_timer");
+ connect( m_pFlashingTimer, SIGNAL(timeout()), this, SLOT(flashingTimerShot()) );
+ m_bFlashed=0;
+ g_pDockWidgetList->append(this);
+ m_pFrm = frm;
+ m_pFrm->setDockExtension(this);
+
+#ifdef COMPILE_ON_WINDOWS
+ // kode54
+ if(!WM_KVIRC_TASKBAR_CREATED)WM_KVIRC_TASKBAR_CREATED = RegisterWindowMessage(TEXT("TaskbarCreated"));
+ createTaskbarIcon();
+#else //!COMPILE_ON_WINDOWS
+ setMinimumSize(22,22);
+ #ifndef COMPILE_USE_QT4
+ setBackgroundMode(X11ParentRelative);
+ #endif
+ #ifdef COMPILE_KDE_SUPPORT
+ KWin::setSystemTrayWindowFor(winId(),frm->winId());
+ #endif
+#endif //!COMPILE_ON_WINDOWS
+
+#ifdef COMPILE_USE_QT4
+ m_pSysTrayIcon = new QSystemTrayIcon(m_pFrm);
+#endif
+
+ m_pTip = new KviDynamicToolTip(this,"dock_tooltip");
+ connect(m_pTip,SIGNAL(tipRequest(KviDynamicToolTip *,const QPoint &)),this,SLOT(tipRequest(KviDynamicToolTip *,const QPoint &)));
+
+ m_pAwayPopup = new KviTalPopupMenu(this);
+
+#ifdef COMPILE_KDE_SUPPORT
+ m_pContextPopup = new KPopupMenu(this);
+ m_pContextPopup->insertTitle(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_KVIRC)),__tr2qs("KVIrc"));
+#else
+ m_pContextPopup = new KviTalPopupMenu(this);
+#ifndef COMPILE_USE_QT4
+ QLabel * l = new QLabel(__tr2qs("KVIrc"),m_pContextPopup);
+ l->setFrameStyle(QFrame::Raised | QFrame::StyledPanel);
+ m_pContextPopup->insertItem(l);
+#endif
+#endif
+ m_pContextPopup->setCaption(__tr2qs("Context"));
+ m_iAwayMenuId = m_pContextPopup->insertItem ( __tr2qs("Away"), m_pAwayPopup);
+ m_pContextPopup->changeItem(m_iAwayMenuId,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_AWAY)),__tr2qs("Away"));
+
+ int id = m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_OPTIONS)),__tr2qs("&Configure KVIrc..."),m_pFrm,SLOT(executeInternalCommand(int)));
+ m_pContextPopup->setItemParameter(id,KVI_INTERNALCOMMAND_OPTIONS_DIALOG);
+ id = m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_KVIRC)),__tr2qs("&About KVIrc"),m_pFrm,SLOT(executeInternalCommand(int)));
+ m_pContextPopup->setItemParameter(id,KVI_INTERNALCOMMAND_ABOUT_ABOUTKVIRC);
+ m_pContextPopup->insertSeparator();
+ m_iToggleFrame = m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_RAW)),QString(""),this,SLOT(toggleParentFrame()));
+ m_pContextPopup->insertSeparator();
+ id = m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DOCKWIDGET)),__tr2qs("Un&dock"),m_pFrm,SLOT(executeInternalCommand(int)));
+ m_pContextPopup->setItemParameter(id,KVI_INTERNALCOMMAND_DOCKWIDGET_HIDE);
+ id = m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_QUITAPP)),__tr2qs("&Quit"),g_pApp,SLOT(quit()));
+ m_pContextPopup->setAccel(__tr2qs("Ctrl+Q"),id);
+ connect(m_pContextPopup,SIGNAL(aboutToShow()),this,SLOT(fillContextPopup()));
+}
+
+
+KviDockWidget::~KviDockWidget()
+{
+#ifdef COMPILE_ON_WINDOWS
+ destroyTaskbarIcon();
+#endif
+ m_pFrm->setDockExtension(0);
+ g_pDockWidgetList->removeRef(this);
+}
+
+void KviDockWidget::die()
+{
+ delete this;
+}
+void KviDockWidget::flashingTimerShot()
+{
+ m_bFlashed=!m_bFlashed;
+#ifdef COMPILE_ON_WINDOWS
+ updateTaskbarIcon();
+#else
+ update();
+#endif
+}
+
+#ifdef COMPILE_ON_WINDOWS
+void KviDockWidget::createTaskbarIcon()
+{
+ ICONINFO inf;
+ g_pCurrentPixmap=new QPixmap(*g_pDock1);
+ inf.hbmColor = g_pCurrentPixmap->hbm();
+ if(!g_pCurrentPixmap->mask())g_pCurrentPixmap->setMask(g_pCurrentPixmap->createHeuristicMask());
+ inf.hbmMask = g_pCurrentPixmap->mask()->hbm();
+ g_pCurrentIcon=CreateIconIndirect(&inf);
+
+ NOTIFYICONDATA nid;
+ nid.cbSize = sizeof(nid);
+ nid.hWnd = winId();
+ nid.uID = ID_DOCKWIDGET_TASKBAR_ICON;
+ nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
+ nid.uCallbackMessage = WM_KVIRC_NOTIFY_ICON_MESSAGE;
+ kvi_memmove(nid.szTip,"KVIrc",6);
+ nid.hIcon = g_pCurrentIcon;
+ Shell_NotifyIcon(NIM_ADD,&nid);
+}
+
+void KviDockWidget::destroyTaskbarIcon()
+{
+ NOTIFYICONDATA nid;
+ nid.cbSize = sizeof(nid);
+ nid.hWnd = winId();
+ nid.uID = ID_DOCKWIDGET_TASKBAR_ICON;
+ nid.uFlags = 0;
+ Shell_NotifyIcon(NIM_DELETE,&nid);
+}
+
+void KviDockWidget::updateTaskbarIcon()
+{
+ ICONINFO inf;
+ QPixmap* pix = m_bFlashed ? g_pIconManager->getSmallIcon(KVI_SMALLICON_MESSAGE) : g_pCurrentPixmap;
+ inf.hbmColor = pix->hbm();
+ if(!pix->mask())pix->setMask(pix->createHeuristicMask());
+ inf.hbmMask = pix->mask()->hbm();
+ HICON hIcon=CreateIconIndirect(&inf);
+
+ NOTIFYICONDATA nid;
+ nid.cbSize = sizeof(nid);
+ nid.hWnd = winId();
+ nid.uID = ID_DOCKWIDGET_TASKBAR_ICON;
+ nid.uFlags = NIF_ICON;
+ nid.hIcon = hIcon;
+ Shell_NotifyIcon(NIM_MODIFY,&nid);
+ DestroyIcon(g_pCurrentIcon);
+ g_pCurrentIcon=hIcon;
+}
+
+bool KviDockWidget::winEvent(MSG * m)
+{
+ if(m->message == WM_KVIRC_NOTIFY_ICON_MESSAGE)
+ {
+ if(m->wParam == ID_DOCKWIDGET_TASKBAR_ICON)
+ {
+ switch(m->lParam)
+ {
+ case WM_MOUSEMOVE:
+ tipRequest(m_pTip,QCursor::pos());
+ break;
+ case WM_LBUTTONDOWN:
+ toggleParentFrame();
+ break;
+ case WM_RBUTTONDOWN:
+ m_pContextPopup->popup(QCursor::pos());
+ break;
+ }
+ return true;
+ }
+ } else if(m->message == WM_KVIRC_TASKBAR_CREATED)
+ {
+ // kode54 : when the window shell dies and is restarted
+ // it sends the "TaskbarCreated" message to all the toplevel windows
+ // We recreate the taskbar icon then
+ createTaskbarIcon();
+ refresh();
+ }
+ return false;
+}
+
+#endif
+
+#define NIDLEMSGS 18
+
+static const char * idlemsgs[NIDLEMSGS]=
+{
+ __tr("Nothing is happening...") ,
+ __tr("Just idling...") ,
+ __tr("Dum de dum de dum...") ,
+ __tr("Hey man... do something!") ,
+ __tr("Umpf!") ,
+ __tr("Silence speaking") ,
+ __tr("Are ya here?") ,
+ __tr("The world has stopped?") ,
+ __tr("Everything is all right") ,
+ __tr("idle()") ,
+ __tr("It's so cold here...") ,
+ __tr("Do not disturb... watching TV") ,
+ __tr("Just vegetating") ,
+ __tr("Hey... are ya sure that your network is up?") ,
+ __tr("Seems like the world has stopped spinning") ,
+ __tr("This silence is freaking me out!") ,
+ __tr("Mieeeeeowww!") ,
+ __tr("idle idle idle idle!")
+};
+
+#ifdef COMPILE_KDE_SUPPORT
+ extern Time qt_x_time;
+#endif
+
+void KviDockWidget::enterEvent( QEvent* )
+{
+#ifdef COMPILE_KDE_SUPPORT
+ if(!g_pApp->focusWidget())
+ {
+ XEvent ev;
+ kvi_memset(&ev, 0, sizeof(ev));
+ ev.xfocus.display = qt_xdisplay();
+ ev.xfocus.type = XFocusIn;
+ ev.xfocus.window = winId();
+ ev.xfocus.mode = NotifyNormal;
+ ev.xfocus.detail = NotifyAncestor;
+ Time time = qt_x_time;
+ qt_x_time = 1;
+ g_pApp->x11ProcessEvent( &ev );
+ qt_x_time = time;
+ }
+#endif
+}
+
+void KviDockWidget::tipRequest(KviDynamicToolTip *tip,const QPoint &pnt)
+{
+ QString tmp;
+
+ KviTaskBarBase * t = m_pFrm->taskBar();
+
+ QString line;
+
+ for(KviTaskBarItem * b = t->firstItem();b;b = t->nextItem())
+ {
+
+ if(b->kviWindow()->view())
+ {
+ if(b->kviWindow()->view()->haveUnreadedMessages())
+ {
+ line = b->kviWindow()->lastMessageText();
+ if(!line.isEmpty())
+ {
+ line.replace(QChar('&'),"&amp;");
+ line.replace(QChar('<'),"&lt;");
+ line.replace(QChar('>'),"&gt;");
+ tmp += "<b>";
+ tmp += b->kviWindow()->plainTextCaption();
+ tmp += "</b><br>";
+ tmp += line;
+ tmp += "<br><br>\n";
+ }
+ }
+ }
+ }
+
+
+ srand(time(0));
+
+ // We use the bad way to generate random numbers :)))))
+
+ if(tmp.isEmpty())tmp = __tr2qs_no_xgettext(idlemsgs[(int)(rand() % NIDLEMSGS)]);
+
+#ifdef COMPILE_ON_WINDOWS
+
+#else
+ m_pTip->tip(rect(),tmp);
+#endif
+}
+
+//int KviDockWidget::message(int,void *)
+//{
+// debug("Message");
+// update();
+// return 0;
+//}
+
+void KviDockWidget::mousePressEvent(QMouseEvent *e)
+{
+ if(e->button() & Qt::LeftButton)toggleParentFrame();
+ else if(e->button() & Qt::RightButton)
+ m_pContextPopup->popup(mapToGlobal(e->pos()));
+}
+
+void KviDockWidget::doAway(int id)
+{
+ if(id<0)
+ {
+ KviPointerHashTableIterator<const char *,KviWindow> it(*g_pGlobalWindowDict);
+ while(KviWindow * wnd = it.current())
+ {
+ if(wnd->type()==KVI_WINDOW_TYPE_CONSOLE)
+ {
+ KviConsole* pConsole=(KviConsole*)wnd;
+ if(pConsole->isConnected())
+ if(id==-2)
+ pConsole->connection()->sendFmtData("AWAY");
+ else
+ pConsole->connection()->sendFmtData("AWAY :%s",
+ pConsole->connection()->encodeText(KVI_OPTION_STRING(KviOption_stringAwayMessage)).data()
+ );
+ }
+ ++it;
+ }
+ } else {
+ KviConsole* pConsole=g_pApp->findConsole((unsigned int)id);
+ if(pConsole)
+ if(pConsole->isConnected())
+ if(pConsole->connection()->userInfo()->isAway())
+ pConsole->connection()->sendFmtData("AWAY");
+ else
+ pConsole->connection()->sendFmtData("AWAY :%s",
+ pConsole->connection()->encodeText(KVI_OPTION_STRING(KviOption_stringAwayMessage)).data()
+ );
+ }
+}
+
+void KviDockWidget::fillContextPopup()
+{
+ m_pContextPopup->changeItem(m_iToggleFrame,m_pFrm->isVisible() ? __tr2qs("Hide Window") : __tr2qs("Show Window"));
+ if(g_pApp->topmostConnectedConsole())
+ {
+ m_pContextPopup->setItemVisible(m_iAwayMenuId,true);
+ m_pAwayPopup->clear();
+
+ int iAllAway=m_pAwayPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CONSOLE)),__tr2qs("Away on all"),this,SLOT(doAway(int)));
+ m_pAwayPopup->setItemParameter(iAllAway,-1);
+
+ int iAllUnaway=m_pAwayPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CONSOLE)),__tr2qs("Back on all"),this,SLOT(doAway(int)));
+ m_pAwayPopup->setItemParameter(iAllUnaway,-2);
+
+ int iSeparator=m_pAwayPopup->insertSeparator();
+
+ KviPointerHashTableIterator<const char *,KviWindow> it(*g_pGlobalWindowDict);
+ bool bAllAway=1;
+ bool bAllUnaway=1;
+ int iNetCount=0;
+ while(KviWindow * wnd = it.current())
+ {
+ if(wnd->type()==KVI_WINDOW_TYPE_CONSOLE)
+ {
+ KviConsole* pConsole=(KviConsole*)wnd;
+ if(pConsole->isConnected())
+ {
+ int id;
+ if(pConsole->connection()->userInfo()->isAway())
+ {
+ id=m_pAwayPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CONSOLE)),__tr2qs("Back on %1").arg(pConsole->currentNetworkName()),this,SLOT(doAway(int)));
+ bAllUnaway=0;
+ } else {
+ id=m_pAwayPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CONSOLE)),__tr2qs("Away on %1").arg(pConsole->currentNetworkName()),this,SLOT(doAway(int)));
+ bAllAway=0;
+ }
+ m_pAwayPopup->setItemParameter(id,pConsole->ircContextId());
+ iNetCount++;
+ }
+ }
+ ++it;
+ }
+ if(iNetCount==1)
+ {
+ m_pAwayPopup->setItemVisible(iAllAway,false);
+ m_pAwayPopup->setItemVisible(iAllUnaway,false);
+ m_pAwayPopup->setItemVisible(iSeparator,false);
+ } else {
+ m_pAwayPopup->setItemVisible(iAllAway,!bAllAway);
+ m_pAwayPopup->setItemVisible(iAllUnaway,!bAllUnaway);
+ }
+ } else {
+ m_pContextPopup->setItemVisible(m_iAwayMenuId,false);
+ }
+}
+
+void KviDockWidget::toggleParentFrame()
+{
+ QWidget *top_widget = m_pFrm->topLevelWidget();
+
+ if(m_pFrm->isVisible()) {
+ m_pFrm->hide();
+ } else {
+ top_widget->show();
+ top_widget->raise();
+ top_widget->setActiveWindow();
+ if(g_pActiveWindow) g_pActiveWindow->setFocus();
+ if(m_pFrm->isMinimized())
+ m_pFrm->showNormal();
+ else
+ m_pFrm->show();
+ }
+}
+
+void KviDockWidget::refresh()
+{
+ grabActivityInfo();
+
+#ifdef COMPILE_ON_WINDOWS
+ // how to copy transparency????
+ delete g_pCurrentPixmap;
+ g_pCurrentPixmap=new QPixmap(16,16);
+ bitBlt(g_pCurrentPixmap,0,0,m_iOther ? ((m_iOther == 2) ? g_pDock3 : g_pDock2) : g_pDock1,0,0,8,8,Qt::ClearROP);
+ bitBlt(g_pCurrentPixmap,0,8,m_iConsoles ? ((m_iConsoles == 2) ? g_pDock3 : g_pDock2) : g_pDock1,0,8,8,8,Qt::ClearROP);
+ bitBlt(g_pCurrentPixmap,8,0,m_iQueries ? ((m_iQueries == 2) ? g_pDock3 : g_pDock2) : g_pDock1,8,0,8,8,Qt::ClearROP);
+ bitBlt(g_pCurrentPixmap,8,8,m_iChannels ? ((m_iChannels == 2) ? g_pDock3 : g_pDock2) : g_pDock1,8,8,8,8,Qt::ClearROP);
+#endif
+
+ if( (m_iChannels == 2) || (m_iQueries == 2) )
+ {
+ if(!m_pFlashingTimer->isActive() && KVI_OPTION_BOOL(KviOption_boolEnableTrayIconFlashing) ) m_pFlashingTimer->start(1000);
+ } else {
+ if(m_pFlashingTimer->isActive()) m_pFlashingTimer->stop();
+ m_bFlashed=false;
+ }
+
+#ifdef COMPILE_ON_WINDOWS
+ updateTaskbarIcon();
+#else
+ update();
+#endif
+}
+
+void KviDockWidget::grabActivityInfo()
+{
+ KviTaskBarBase * t = m_pFrm->taskBar();
+
+ if(KVI_OPTION_BOOL(KviOption_boolUseLevelBasedTrayNotification))
+ {
+ if(KVI_OPTION_UINT(KviOption_uintMinTrayLowLevelMessage)>5) KVI_OPTION_UINT(KviOption_uintMinTrayLowLevelMessage)=5;
+ if(KVI_OPTION_UINT(KviOption_uintMinTrayHighLevelMessage)>5) KVI_OPTION_UINT(KviOption_uintMinTrayHighLevelMessage)=5;
+
+ if(KVI_OPTION_UINT(KviOption_uintMinTrayLowLevelMessage)<1) KVI_OPTION_UINT(KviOption_uintMinTrayLowLevelMessage)=1;
+ if(KVI_OPTION_UINT(KviOption_uintMinTrayHighLevelMessage)<1) KVI_OPTION_UINT(KviOption_uintMinTrayHighLevelMessage)=1;
+
+ if(KVI_OPTION_UINT(KviOption_uintMinTrayHighLevelMessage)<KVI_OPTION_UINT(KviOption_uintMinTrayLowLevelMessage))
+ KVI_OPTION_UINT(KviOption_uintMinTrayHighLevelMessage)=KVI_OPTION_UINT(KviOption_uintMinTrayLowLevelMessage);
+ }
+
+ m_iConsoles = 0;
+ m_iChannels = 0;
+ m_iQueries = 0;
+ m_iOther = 0;
+
+ for(KviTaskBarItem * b = t->firstItem();b;b = t->nextItem())
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolUseLevelBasedTrayNotification))
+ {
+ int iLevel = b->highlightLevel();
+ switch(b->kviWindow()->type())
+ {
+ case KVI_WINDOW_TYPE_CONSOLE:
+ if(m_iConsoles < iLevel) m_iConsoles = iLevel;
+ break;
+ case KVI_WINDOW_TYPE_CHANNEL:
+ if(m_iChannels < iLevel) m_iChannels = iLevel;
+ break;
+ case KVI_WINDOW_TYPE_QUERY:
+ if(m_iQueries < iLevel) m_iQueries = iLevel;
+ break;
+ default:
+ if(m_iOther < iLevel) m_iOther = iLevel;
+ break;
+ }
+ } else {
+ int iLevel=0;
+ if(b->kviWindow()->view())
+ {
+ if(b->kviWindow()->view()->haveUnreadedHighlightedMessages())
+ {
+ iLevel=2;
+ } else if(b->kviWindow()->view()->haveUnreadedMessages())
+ {
+ iLevel=1;
+ }
+ if(iLevel>0)
+ switch(b->kviWindow()->type())
+ {
+ case KVI_WINDOW_TYPE_CONSOLE:
+ if(m_iConsoles < iLevel) m_iConsoles = iLevel;
+ break;
+ case KVI_WINDOW_TYPE_CHANNEL:
+ if(m_iChannels < iLevel) m_iChannels = iLevel;
+ break;
+ case KVI_WINDOW_TYPE_QUERY:
+ if(m_iQueries < iLevel) m_iQueries = iLevel;
+ break;
+ default:
+ if(m_iOther < iLevel) m_iOther = iLevel;
+ break;
+ }
+ }
+ }
+ }
+
+ if(KVI_OPTION_BOOL(KviOption_boolUseLevelBasedTrayNotification))
+ {
+ if(m_iConsoles >= KVI_OPTION_UINT(KviOption_uintMinTrayHighLevelMessage)) m_iConsoles=2;
+ else if(m_iConsoles >= KVI_OPTION_UINT(KviOption_uintMinTrayLowLevelMessage)) m_iConsoles=1;
+ else m_iConsoles=0;
+
+ if(m_iChannels >= KVI_OPTION_UINT(KviOption_uintMinTrayHighLevelMessage)) m_iChannels=2;
+ else if(m_iChannels >= KVI_OPTION_UINT(KviOption_uintMinTrayLowLevelMessage)) m_iChannels=1;
+ else m_iChannels=0;
+
+ if(m_iQueries >= KVI_OPTION_UINT(KviOption_uintMinTrayHighLevelMessage)) m_iQueries=2;
+ else if(m_iQueries >= KVI_OPTION_UINT(KviOption_uintMinTrayLowLevelMessage)) m_iQueries=1;
+ else m_iQueries=0;
+
+ if(m_iOther >= KVI_OPTION_UINT(KviOption_uintMinTrayHighLevelMessage)) m_iOther=2;
+ else if(m_iOther >= KVI_OPTION_UINT(KviOption_uintMinTrayLowLevelMessage)) m_iOther=1;
+ else m_iOther=0;
+ }
+}
+
+void KviDockWidget::paintEvent(QPaintEvent * event)
+{
+#ifdef COMPILE_USE_QT4
+ QPainter thisRestrictionOfQt4IsNotNice(this);
+ if(m_bFlashed)
+ {
+ erase();
+ thisRestrictionOfQt4IsNotNice.drawPixmap(4,4,16,16,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_MESSAGE)),0,0,16,16);
+ } else {
+ thisRestrictionOfQt4IsNotNice.drawPixmap(0,0,12,12,m_iOther ? ((m_iOther == 2) ? *g_pDock3 : *g_pDock2) : *g_pDock1,0,0,12,12);
+ thisRestrictionOfQt4IsNotNice.drawPixmap(0,12,12,12,m_iConsoles ? ((m_iConsoles == 2) ? *g_pDock3 : *g_pDock2) : *g_pDock1,0,12,12,12);
+ thisRestrictionOfQt4IsNotNice.drawPixmap(12,0,12,12,m_iQueries ? ((m_iQueries == 2) ? *g_pDock3 : *g_pDock2) : *g_pDock1,12,0,12,12);
+ thisRestrictionOfQt4IsNotNice.drawPixmap(12,12,12,12,m_iChannels ? ((m_iChannels == 2) ? *g_pDock3 : *g_pDock2) : *g_pDock1,12,12,12,12);
+ }
+#else
+ if(m_bFlashed)
+ {
+ erase();
+ bitBlt(this,4,4,g_pIconManager->getSmallIcon(KVI_SMALLICON_MESSAGE),0,0,16,16);
+ } else {
+ bitBlt(this,0,0,m_iOther ? ((m_iOther == 2) ? g_pDock3 : g_pDock2) : g_pDock1,0,0,12,12,Qt::CopyROP,false);
+ bitBlt(this,0,12,m_iConsoles ? ((m_iConsoles == 2) ? g_pDock3 : g_pDock2) : g_pDock1,0,12,12,12,Qt::CopyROP,false);
+ bitBlt(this,12,0,m_iQueries ? ((m_iQueries == 2) ? g_pDock3 : g_pDock2) : g_pDock1,12,0,12,12,Qt::CopyROP,false);
+ bitBlt(this,12,12,m_iChannels ? ((m_iChannels == 2) ? g_pDock3 : g_pDock2) : g_pDock1,12,12,12,12,Qt::CopyROP,false);
+ }
+#endif
+}
+
+
+static KviDockWidget * dockwidget_find(KviFrame *f)
+{
+ if(!g_pDockWidgetList)return 0;
+ for(KviDockWidget * w = g_pDockWidgetList->first();w;w = g_pDockWidgetList->next())
+ {
+ if(w->frame() == f)return w;
+ }
+ return 0;
+}
+
+/*
+ @doc: dockwidget.show
+ @type:
+ command
+ @title:
+ dockwidget.show
+ @short:
+ Shows the dock widget for the current frame window
+ @keyterms:
+ dock widget , system tray
+ @syntax:
+ dockwidget.show
+ @description:
+ Shows the dock widget for the current frame window.[br]
+ The dock widget is a small widget that docks in the KDE panel.[br]
+ It shows a small icon of the earth and eventually displays four squares
+ that cover this icon: the bottom left square appears when there is some new
+ text in any console window, the square becomes red if the text is highlighted.[br]
+ The bottom right square appears when there is some new text in any channel window,
+ and it becomes red when the text is highlighted.[br] The upper right square refers to
+ query windows and the upper left one to any other kind of window (dcc , links...).[br]
+ If you move the mouse over the dock widget a tooltip will show you the last lines
+ of the "new" text in all these windows.[br]
+ This is useful when you keep the main KVIrc window minimized and you're working on something else:
+ if the dock widget shows nothing but the earth icon , nothing is happening in the main KVIrc window.
+ If the dock widget shows one or more white (or red) squares , you can move the mouse over
+ and check what's happened exactly and eventually bring up the main KVIrc window by clicking on the widget.[br]
+ [big]tecnical details[/big]
+ The dock widget is currently working in KDE compilation mode only:
+ it relies on the KWin implementation of the Window Manager interaction protocol.
+ @seealso:
+ [cmd]dockwidget.hide[/cmd]
+*/
+
+static bool dockwidget_kvs_cmd_show(KviKvsModuleCommandCall * c)
+{
+ if(!(dockwidget_find(c->window()->frame())))
+ {
+ KviDockWidget * w = new KviDockWidget(c->window()->frame(),"dock_widget");
+#ifndef COMPILE_ON_WINDOWS
+ w->show();
+#else
+ w->hide();
+#endif
+ }
+ return true;
+}
+
+/*
+ @doc: dockwidget.hide
+ @type:
+ command
+ @title:
+ dockwidget.hide
+ @short:
+ Hides the dock widget for the current frame window
+ @syntax:
+ dockwidget.hide
+ @description:
+ Hides the dock widget for the current frame window
+ @seealso:
+ [cmd]dockwidget.show[/cmd]
+*/
+
+static bool dockwidget_kvs_cmd_hide(KviKvsModuleCommandCall * c)
+{
+ KviDockWidget * w= dockwidget_find(c->window()->frame());
+ if(w)delete w;
+ // show the parent frame.. otherwise there will be no way to get it back
+ if(!c->window()->frame()->isVisible())
+ {
+ c->window()->frame()->show();
+ }
+ return true;
+}
+
+/*
+ @doc: dockwidget.hidewindow
+ @type:
+ command
+ @title:
+ dockwidget.hidewindow
+ @short:
+ Returns the state of the dock widget
+ @syntax:
+ dockwidget.hidewindow
+ @description:
+ Hides the window, assotiated with dockwidget
+ @seealso:
+ [cmd]dockwidget.show[/cmd], [cmd]dockwidget.hide[/cmd]
+*/
+
+static bool dockwidget_kvs_cmd_hidewindow(KviKvsModuleCommandCall * c)
+{
+ KviDockWidget * w= dockwidget_find(c->window()->frame());
+ if(w)
+ {
+#if QT_VERSION > 0x030201
+ w->setPrevWindowState(c->window()->frame()->windowState());
+#endif
+ c->window()->frame()->hide();
+ }
+ return true;
+}
+
+/*
+ @doc: dockwidget.isVisible
+ @type:
+ function
+ @title:
+ $dockwidget.isVisible
+ @short:
+ Returns the state of the dock widget
+ @syntax:
+ $reguser.isVisible()
+ @description:
+ Returns 1 if the dock widget is actually visible , 0 otherwise.
+ @seealso:
+ [cmd]dockwidget.show[/cmd]
+*/
+
+static bool dockwidget_kvs_fnc_isvisible(KviKvsModuleFunctionCall * c)
+{
+ c->returnValue()->setBoolean(dockwidget_find(c->window()->frame()));
+ return true;
+}
+
+
+
+// =======================================
+// init routine
+// =======================================
+static bool dockwidget_module_init(KviModule * m)
+{
+ KviStr buffer;
+#ifdef COMPILE_ON_WINDOWS
+ g_pApp->findImage(buffer,"kvi_dock_win32.png");
+ KviImageLibrary l1(buffer.ptr(),16,16);
+#else
+ g_pApp->findImage(buffer,"kvi_dock.png");
+ KviImageLibrary l1(buffer.ptr(),22,22);
+#endif
+ g_pDock1 = new QPixmap(l1.getImage(0));
+ g_pDock2 = new QPixmap(l1.getImage(1));
+ g_pDock3 = new QPixmap(l1.getImage(2));
+
+#ifdef COMPILE_ON_WINDOWS
+
+#endif
+
+
+ g_pDockWidgetList = new KviPointerList<KviDockWidget>;
+ g_pDockWidgetList->setAutoDelete(false);
+
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"hide",dockwidget_kvs_cmd_hide);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"hidewindow",dockwidget_kvs_cmd_hidewindow);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"show",dockwidget_kvs_cmd_show);
+ KVSM_REGISTER_FUNCTION(m,"isVisible",dockwidget_kvs_fnc_isvisible);
+
+ return true;
+}
+
+static bool dockwidget_module_cleanup(KviModule *m)
+{
+ while(g_pDockWidgetList->first())delete g_pDockWidgetList->first();
+ delete g_pDockWidgetList;
+ g_pDockWidgetList = 0;
+
+#ifdef COMPILE_ON_WINDOWS
+ DestroyIcon(g_pCurrentIcon);
+#endif
+
+ delete g_pDock1;
+ g_pDock1 = 0;
+ delete g_pDock2;
+ g_pDock2 = 0;
+ delete g_pDock3;
+ g_pDock3 = 0;
+
+ return true;
+}
+
+static bool dockwidget_module_can_unload(KviModule *)
+{
+ return g_pDockWidgetList->isEmpty();
+}
+
+// =======================================
+// plugin definition structure
+// =======================================
+KVIRC_MODULE(
+ "KVIrc dock widget implementation",
+ "1.0.0",
+ "Szymon Stefanek <pragma at kvirc dot net>" ,
+ "exports the /dockwidget.* interface\n",
+ dockwidget_module_init ,
+ dockwidget_module_can_unload,
+ 0,
+ dockwidget_module_cleanup
+)
+
+#include "libkvidockwidget_qt3.moc"
+
+#endif \ No newline at end of file
diff --git a/src/modules/dockwidget/libkvidockwidget_qt3.h b/src/modules/dockwidget/libkvidockwidget_qt3.h
new file mode 100644
index 00000000..1721c28b
--- /dev/null
+++ b/src/modules/dockwidget/libkvidockwidget_qt3.h
@@ -0,0 +1,95 @@
+#ifndef _KVI_DOCKWIDGET_H_
+#define _KVI_DOCKWIDGET_H_
+//
+// This file is part of the KVirc irc client distribution
+// Creation date : Tue 02 Jan 2001 14:28:25 by Szymon Stefanek
+// Copyright (C) 2000-2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "kvi_frame.h"
+
+#ifdef COMPILE_KDE_SUPPORT
+ class KPopupMenu;
+#else
+ class KviTalPopupMenu;
+#endif
+
+
+
+
+class QPixmap;
+class QTimer;
+
+//class KviFrame;
+class KviDynamicToolTip;
+
+class KviDockWidget : public QWidget , public KviDockExtension
+{
+ Q_OBJECT
+public:
+ KviDockWidget(KviFrame * win,const char * name);
+ ~KviDockWidget();
+protected:
+ KviFrame * m_pFrm;
+ KviDynamicToolTip * m_pTip;
+#ifdef COMPILE_KDE_SUPPORT
+ KPopupMenu * m_pContextPopup;
+#else
+ KviTalPopupMenu * m_pContextPopup;
+#endif
+ KviTalPopupMenu * m_pAwayPopup;
+ int m_iToggleFrame;
+ int m_iAwayMenuId;
+
+ bool m_bFlashed;
+
+ QTimer* m_pFlashingTimer;
+ int m_iConsoles;
+ int m_iChannels;
+ int m_iQueries;
+ int m_iOther;
+public:
+ KviFrame * frame(){ return m_pFrm; };
+public:
+// virtual int message(int msgtype,void * data);
+ virtual void enterEvent(QEvent *);
+ virtual void refresh();
+ virtual void die();
+protected:
+ virtual void paintEvent(QPaintEvent *e);
+ virtual void mousePressEvent(QMouseEvent *e);
+ void grabActivityInfo();
+
+#ifdef COMPILE_ON_WINDOWS
+private:
+ void createTaskbarIcon();
+ void destroyTaskbarIcon();
+ void updateTaskbarIcon();
+protected:
+ bool winEvent(MSG * m);
+#endif
+
+protected slots:
+ void fillContextPopup();
+ void toggleParentFrame();
+ void tipRequest(KviDynamicToolTip *tip,const QPoint &pnt);
+ void doAway(int);
+ void flashingTimerShot();
+};
+
+#endif //_KVI_DOCKWIDGET_H_
diff --git a/src/modules/dockwidget/libkvidockwidget_qt4.cpp b/src/modules/dockwidget/libkvidockwidget_qt4.cpp
new file mode 100644
index 00000000..73a21998
--- /dev/null
+++ b/src/modules/dockwidget/libkvidockwidget_qt4.cpp
@@ -0,0 +1,691 @@
+//
+// File : libkvidockwidget.cpp
+// Creation date : Tue Jan 02 20001 14:34:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_USE_QT4
+
+#ifdef COMPILE_ON_WINDOWS
+ #define ICON_SIZE 16
+#else
+ #define ICON_SIZE 22
+#endif
+
+#include "kvi_app.h"
+#include "kvi_module.h"
+#include "kvi_locale.h"
+#include "kvi_memmove.h"
+#include "kvi_taskbar.h"
+#include "kvi_window.h"
+#include "kvi_dynamictooltip.h"
+#include "kvi_iconmanager.h"
+#include "kvi_internalcmd.h"
+#include "kvi_console.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectionuserinfo.h"
+#include "kvi_imagelib.h"
+#include "kvi_options.h"
+#include "kvi_ircview.h"
+
+#include "libkvidockwidget.h"
+#include "kvi_doublebuffer.h"
+
+#include <qlabel.h>
+
+#include "kvi_tal_popupmenu.h"
+
+
+#include <qpixmap.h>
+#include <qpainter.h>
+#include <qtimer.h>
+#include <qevent.h>
+#include <qregexp.h>
+
+#include <stdlib.h>
+#include <time.h>
+
+
+extern KVIRC_API KviPointerHashTable<const char *,KviWindow> * g_pGlobalWindowDict;
+static KviPointerList<KviDockWidget> * g_pDockWidgetList = 0;
+
+static QPixmap * g_pDock1 = 0;
+static QPixmap * g_pDock2 = 0;
+static QPixmap * g_pDock3 = 0;
+
+KviDockWidget::KviDockWidget(KviFrame * frm)
+: QSystemTrayIcon(frm), m_CurrentPixmap(ICON_SIZE,ICON_SIZE)
+{
+ m_pContextPopup = new KviTalPopupMenu(0);
+ setContextMenu(m_pContextPopup);
+
+ m_iConsoles = 0;
+ m_iChannels = 0;
+ m_iQueries = 0;
+ m_iOther = 0;
+
+ m_pFlashingTimer = new QTimer(this,"flashing_timer");
+ connect( m_pFlashingTimer, SIGNAL(timeout()), this, SLOT(flashingTimerShot()) );
+ m_bFlashed=0;
+ g_pDockWidgetList->append(this);
+ m_pFrm = frm;
+ m_pFrm->setDockExtension(this);
+
+ m_pTip = new KviDynamicToolTip(frm,"dock_tooltip");
+ m_pAwayPopup = new KviTalPopupMenu(0);
+
+ QLabel * l = new QLabel(__tr2qs("KVIrc"),m_pContextPopup);
+ l->setFrameStyle(QFrame::Raised | QFrame::StyledPanel);
+ m_pContextPopup->insertItem(l);
+ m_pContextPopup->setCaption(__tr2qs("Context"));
+ m_iAwayMenuId = m_pContextPopup->insertItem ( __tr2qs("Away"), m_pAwayPopup);
+ m_pContextPopup->changeItem(m_iAwayMenuId,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_AWAY)),__tr2qs("Away"));
+
+ int id = m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_OPTIONS)),__tr2qs("&Configure KVIrc..."),m_pFrm,SLOT(executeInternalCommand(int)));
+ m_pContextPopup->setItemParameter(id,KVI_INTERNALCOMMAND_OPTIONS_DIALOG);
+ id = m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_KVIRC)),__tr2qs("&About KVIrc"),m_pFrm,SLOT(executeInternalCommand(int)));
+ m_pContextPopup->setItemParameter(id,KVI_INTERNALCOMMAND_ABOUT_ABOUTKVIRC);
+ m_pContextPopup->insertSeparator();
+ m_iToggleFrame = m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_RAW)),QString(""),this,SLOT(toggleParentFrame()));
+ m_pContextPopup->insertSeparator();
+ id = m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DOCKWIDGET)),__tr2qs("Un&dock"),m_pFrm,SLOT(executeInternalCommand(int)));
+ m_pContextPopup->setItemParameter(id,KVI_INTERNALCOMMAND_DOCKWIDGET_HIDE);
+ id = m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_QUITAPP)),__tr2qs("&Quit"),g_pApp,SLOT(quit()));
+ m_pContextPopup->setAccel(__tr2qs("Ctrl+Q"),id);
+ connect(m_pContextPopup,SIGNAL(aboutToShow()),this,SLOT(fillContextPopup()));
+
+ QIcon icon(*g_pDock1);
+ setIcon(icon);
+
+ connect(this,SIGNAL(activated ( QSystemTrayIcon::ActivationReason )),this,SLOT(activatedSlot ( QSystemTrayIcon::ActivationReason )));
+}
+
+
+KviDockWidget::~KviDockWidget()
+{
+ m_pFrm->setDockExtension(0);
+ g_pDockWidgetList->removeRef(this);
+}
+
+void KviDockWidget::die()
+{
+ delete this;
+}
+
+void KviDockWidget::flashingTimerShot()
+{
+ m_bFlashed=!m_bFlashed;
+ refresh();
+}
+
+#define NIDLEMSGS 18
+
+static const char * idlemsgs[NIDLEMSGS]=
+{
+ __tr("Nothing is happening...") ,
+ __tr("Just idling...") ,
+ __tr("Dum de dum de dum...") ,
+ __tr("Hey man... do something!") ,
+ __tr("Umpf!") ,
+ __tr("Silence speaking") ,
+ __tr("Are ya here?") ,
+ __tr("The world has stopped?") ,
+ __tr("Everything is all right") ,
+ __tr("idle()") ,
+ __tr("It's so cold here...") ,
+ __tr("Do not disturb... watching TV") ,
+ __tr("Just vegetating") ,
+ __tr("Hey... are ya sure that your network is up?") ,
+ __tr("Seems like the world has stopped spinning") ,
+ __tr("This silence is freaking me out!") ,
+ __tr("Mieeeeeowww!") ,
+ __tr("idle idle idle idle!")
+};
+
+void KviDockWidget::tipRequest(KviDynamicToolTip *tip,const QPoint &pnt)
+{
+ QString tmp;
+
+ KviTaskBarBase * t = m_pFrm->taskBar();
+
+ QString line;
+
+ for(KviTaskBarItem * b = t->firstItem();b;b = t->nextItem())
+ {
+
+ if(b->kviWindow()->view())
+ {
+ if(b->kviWindow()->view()->haveUnreadedMessages())
+ {
+ line = b->kviWindow()->lastMessageText();
+ if(!line.isEmpty())
+ {
+ line.replace(QChar('&'),"&amp;");
+ line.replace(QChar('<'),"&lt;");
+ line.replace(QChar('>'),"&gt;");
+ tmp += "<b>";
+ tmp += b->kviWindow()->plainTextCaption();
+ tmp += "</b><br>";
+ tmp += line;
+ tmp += "<br><br>\n";
+ }
+ }
+ }
+ }
+
+
+ srand(time(0));
+
+ // We use the bad way to generate random numbers :)))))
+
+ if(tmp.isEmpty())tmp = __tr2qs_no_xgettext(idlemsgs[(int)(rand() % NIDLEMSGS)]);
+
+ //m_pTip->tip(rect(),tmp);
+}
+
+//int KviDockWidget::message(int,void *)
+//{
+// debug("Message");
+// update();
+// return 0;
+//}
+
+//FIXME: Qt4 port
+/*void KviDockWidget::mousePressEvent(QMouseEvent *e)
+{
+ if(e->button() & Qt::LeftButton)toggleParentFrame();
+ else if(e->button() & Qt::RightButton)
+ m_pContextPopup->popup(mapToGlobal(e->pos()));
+}*/
+
+void KviDockWidget::doAway(int id)
+{
+ if(id<0)
+ {
+ KviPointerHashTableIterator<const char *,KviWindow> it(*g_pGlobalWindowDict);
+ while(KviWindow * wnd = it.current())
+ {
+ if(wnd->type()==KVI_WINDOW_TYPE_CONSOLE)
+ {
+ KviConsole* pConsole=(KviConsole*)wnd;
+ if(pConsole->isConnected())
+ if(id==-2)
+ pConsole->connection()->sendFmtData("AWAY");
+ else
+ pConsole->connection()->sendFmtData("AWAY :%s",
+ pConsole->connection()->encodeText(KVI_OPTION_STRING(KviOption_stringAwayMessage)).data()
+ );
+ }
+ ++it;
+ }
+ } else {
+ KviConsole* pConsole=g_pApp->findConsole((unsigned int)id);
+ if(pConsole)
+ if(pConsole->isConnected())
+ if(pConsole->connection()->userInfo()->isAway())
+ pConsole->connection()->sendFmtData("AWAY");
+ else
+ pConsole->connection()->sendFmtData("AWAY :%s",
+ pConsole->connection()->encodeText(KVI_OPTION_STRING(KviOption_stringAwayMessage)).data()
+ );
+ }
+}
+
+void KviDockWidget::fillContextPopup()
+{
+ m_pContextPopup->changeItem(m_iToggleFrame,m_pFrm->isVisible() ? __tr2qs("Hide Window") : __tr2qs("Show Window"));
+ if(g_pApp->topmostConnectedConsole())
+ {
+ m_pContextPopup->setItemVisible(m_iAwayMenuId,true);
+ m_pAwayPopup->clear();
+
+ int iAllAway=m_pAwayPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CONSOLE)),__tr2qs("Away on all"),this,SLOT(doAway(int)));
+ m_pAwayPopup->setItemParameter(iAllAway,-1);
+
+ int iAllUnaway=m_pAwayPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CONSOLE)),__tr2qs("Back on all"),this,SLOT(doAway(int)));
+ m_pAwayPopup->setItemParameter(iAllUnaway,-2);
+
+ int iSeparator=m_pAwayPopup->insertSeparator();
+
+ KviPointerHashTableIterator<const char *,KviWindow> it(*g_pGlobalWindowDict);
+ bool bAllAway=1;
+ bool bAllUnaway=1;
+ int iNetCount=0;
+ while(KviWindow * wnd = it.current())
+ {
+ if(wnd->type()==KVI_WINDOW_TYPE_CONSOLE)
+ {
+ KviConsole* pConsole=(KviConsole*)wnd;
+ if(pConsole->isConnected())
+ {
+ int id;
+ if(pConsole->connection()->userInfo()->isAway())
+ {
+ id=m_pAwayPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CONSOLE)),__tr2qs("Back on %1").arg(pConsole->currentNetworkName()),this,SLOT(doAway(int)));
+ bAllUnaway=0;
+ } else {
+ id=m_pAwayPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CONSOLE)),__tr2qs("Away on %1").arg(pConsole->currentNetworkName()),this,SLOT(doAway(int)));
+ bAllAway=0;
+ }
+ m_pAwayPopup->setItemParameter(id,pConsole->ircContextId());
+ iNetCount++;
+ }
+ }
+ ++it;
+ }
+ if(iNetCount==1)
+ {
+ m_pAwayPopup->setItemVisible(iAllAway,false);
+ m_pAwayPopup->setItemVisible(iAllUnaway,false);
+ m_pAwayPopup->setItemVisible(iSeparator,false);
+ } else {
+ m_pAwayPopup->setItemVisible(iAllAway,!bAllAway);
+ m_pAwayPopup->setItemVisible(iAllUnaway,!bAllUnaway);
+ }
+ } else {
+ m_pContextPopup->setItemVisible(m_iAwayMenuId,false);
+ }
+}
+
+void KviDockWidget::toggleParentFrame()
+{
+ QWidget *top_widget = m_pFrm->topLevelWidget();
+
+ if(m_pFrm->isVisible()) {
+ m_pFrm->hide();
+ } else {
+ top_widget->show();
+ top_widget->raise();
+ top_widget->setActiveWindow();
+ if(g_pActiveWindow) g_pActiveWindow->setFocus();
+ if(m_pFrm->isMinimized())
+ m_pFrm->showNormal();
+ else
+ m_pFrm->show();
+ }
+}
+
+void KviDockWidget::refresh()
+{
+ grabActivityInfo();
+
+ if( (m_iChannels == 2) || (m_iQueries == 2) )
+ {
+ if(!m_pFlashingTimer->isActive() && KVI_OPTION_BOOL(KviOption_boolEnableTrayIconFlashing) )
+ m_pFlashingTimer->start(1000);
+ } else {
+ if(m_pFlashingTimer->isActive()) m_pFlashingTimer->stop();
+ m_bFlashed=false;
+ }
+
+ m_CurrentPixmap.fill(Qt::transparent);
+ QPainter thisRestrictionOfQt4IsNotNice(&m_CurrentPixmap);
+ //thisRestrictionOfQt4IsNotNice.drawPixmap(0,0,22,22,*g_pDock1,0,0,22,22);
+
+ if(m_bFlashed)
+ {
+ thisRestrictionOfQt4IsNotNice.drawPixmap((ICON_SIZE-16)/2,(ICON_SIZE-16)/2,16,16,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_MESSAGE)),0,0,16,16);
+ } else {
+ thisRestrictionOfQt4IsNotNice.drawPixmap(0,0,ICON_SIZE/2,ICON_SIZE/2,
+ m_iOther ?
+ ((m_iOther == 2) ? *g_pDock3 : *g_pDock2)
+ : *g_pDock1,0,0,ICON_SIZE/2,ICON_SIZE/2);
+
+ thisRestrictionOfQt4IsNotNice.drawPixmap(0,ICON_SIZE/2,ICON_SIZE/2,ICON_SIZE/2,
+ m_iConsoles ?
+ ((m_iConsoles == 2) ? *g_pDock3 : *g_pDock2)
+ : *g_pDock1,0,ICON_SIZE/2,ICON_SIZE/2,ICON_SIZE/2);
+
+ thisRestrictionOfQt4IsNotNice.drawPixmap(ICON_SIZE/2,0,ICON_SIZE/2,ICON_SIZE/2,
+ m_iQueries ?
+ ((m_iQueries == 2)
+ ? *g_pDock3 : *g_pDock2)
+ : *g_pDock1,ICON_SIZE/2,0,ICON_SIZE/2,ICON_SIZE/2);
+
+ thisRestrictionOfQt4IsNotNice.drawPixmap(ICON_SIZE/2,ICON_SIZE/2,ICON_SIZE/2,ICON_SIZE/2,
+ m_iChannels ?
+ ((m_iChannels == 2) ? *g_pDock3 : *g_pDock2)
+ : *g_pDock1
+ ,ICON_SIZE/2,ICON_SIZE/2,ICON_SIZE/2,ICON_SIZE/2);
+
+ }
+ updateIcon();
+}
+
+void KviDockWidget::activatedSlot( QSystemTrayIcon::ActivationReason reason )
+{
+ if(reason==QSystemTrayIcon::Trigger)
+ {
+ toggleParentFrame();
+ }
+}
+
+void KviDockWidget::grabActivityInfo()
+{
+ KviTaskBarBase * t = m_pFrm->taskBar();
+
+ if(KVI_OPTION_BOOL(KviOption_boolUseLevelBasedTrayNotification))
+ {
+ if(KVI_OPTION_UINT(KviOption_uintMinTrayLowLevelMessage)>5) KVI_OPTION_UINT(KviOption_uintMinTrayLowLevelMessage)=5;
+ if(KVI_OPTION_UINT(KviOption_uintMinTrayHighLevelMessage)>5) KVI_OPTION_UINT(KviOption_uintMinTrayHighLevelMessage)=5;
+
+ if(KVI_OPTION_UINT(KviOption_uintMinTrayLowLevelMessage)<1) KVI_OPTION_UINT(KviOption_uintMinTrayLowLevelMessage)=1;
+ if(KVI_OPTION_UINT(KviOption_uintMinTrayHighLevelMessage)<1) KVI_OPTION_UINT(KviOption_uintMinTrayHighLevelMessage)=1;
+
+ if(KVI_OPTION_UINT(KviOption_uintMinTrayHighLevelMessage)<KVI_OPTION_UINT(KviOption_uintMinTrayLowLevelMessage))
+ KVI_OPTION_UINT(KviOption_uintMinTrayHighLevelMessage)=KVI_OPTION_UINT(KviOption_uintMinTrayLowLevelMessage);
+ }
+
+ m_iConsoles = 0;
+ m_iChannels = 0;
+ m_iQueries = 0;
+ m_iOther = 0;
+
+ for(KviTaskBarItem * b = t->firstItem();b;b = t->nextItem())
+ {
+ if(KVI_OPTION_BOOL(KviOption_boolUseLevelBasedTrayNotification))
+ {
+ int iLevel = b->highlightLevel();
+ switch(b->kviWindow()->type())
+ {
+ case KVI_WINDOW_TYPE_CONSOLE:
+ if(m_iConsoles < iLevel) m_iConsoles = iLevel;
+ break;
+ case KVI_WINDOW_TYPE_CHANNEL:
+ if(m_iChannels < iLevel) m_iChannels = iLevel;
+ break;
+ case KVI_WINDOW_TYPE_QUERY:
+ if(m_iQueries < iLevel) m_iQueries = iLevel;
+ break;
+ default:
+ if(m_iOther < iLevel) m_iOther = iLevel;
+ break;
+ }
+ } else {
+ int iLevel=0;
+ if(b->kviWindow()->view())
+ {
+ if(b->kviWindow()->view()->haveUnreadedHighlightedMessages())
+ {
+ iLevel=2;
+ } else if(b->kviWindow()->view()->haveUnreadedMessages())
+ {
+ iLevel=1;
+ }
+ if(iLevel>0)
+ switch(b->kviWindow()->type())
+ {
+ case KVI_WINDOW_TYPE_CONSOLE:
+ if(m_iConsoles < iLevel) m_iConsoles = iLevel;
+ break;
+ case KVI_WINDOW_TYPE_CHANNEL:
+ if(m_iChannels < iLevel) m_iChannels = iLevel;
+ break;
+ case KVI_WINDOW_TYPE_QUERY:
+ if(m_iQueries < iLevel) m_iQueries = iLevel;
+ break;
+ default:
+ if(m_iOther < iLevel) m_iOther = iLevel;
+ break;
+ }
+ }
+ }
+ }
+
+ if(KVI_OPTION_BOOL(KviOption_boolUseLevelBasedTrayNotification))
+ {
+ if(m_iConsoles >= KVI_OPTION_UINT(KviOption_uintMinTrayHighLevelMessage)) m_iConsoles=2;
+ else if(m_iConsoles >= KVI_OPTION_UINT(KviOption_uintMinTrayLowLevelMessage)) m_iConsoles=1;
+ else m_iConsoles=0;
+
+ if(m_iChannels >= KVI_OPTION_UINT(KviOption_uintMinTrayHighLevelMessage)) m_iChannels=2;
+ else if(m_iChannels >= KVI_OPTION_UINT(KviOption_uintMinTrayLowLevelMessage)) m_iChannels=1;
+ else m_iChannels=0;
+
+ if(m_iQueries >= KVI_OPTION_UINT(KviOption_uintMinTrayHighLevelMessage)) m_iQueries=2;
+ else if(m_iQueries >= KVI_OPTION_UINT(KviOption_uintMinTrayLowLevelMessage)) m_iQueries=1;
+ else m_iQueries=0;
+
+ if(m_iOther >= KVI_OPTION_UINT(KviOption_uintMinTrayHighLevelMessage)) m_iOther=2;
+ else if(m_iOther >= KVI_OPTION_UINT(KviOption_uintMinTrayLowLevelMessage)) m_iOther=1;
+ else m_iOther=0;
+ }
+}
+
+void KviDockWidget::updateIcon()
+{
+ setIcon(QIcon(m_CurrentPixmap));
+}
+
+
+static KviDockWidget * dockwidget_find(KviFrame *f)
+{
+ if(!g_pDockWidgetList)return 0;
+ for(KviDockWidget * w = g_pDockWidgetList->first();w;w = g_pDockWidgetList->next())
+ {
+ if(w->frame() == f)return w;
+ }
+ return 0;
+}
+
+/*
+ @doc: dockwidget.show
+ @type:
+ command
+ @title:
+ dockwidget.show
+ @short:
+ Shows the dock widget for the current frame window
+ @keyterms:
+ dock widget , system tray
+ @syntax:
+ dockwidget.show
+ @description:
+ Shows the dock widget for the current frame window.[br]
+ The dock widget is a small widget that docks in the KDE panel.[br]
+ It shows a small icon of the earth and eventually displays four squares
+ that cover this icon: the bottom left square appears when there is some new
+ text in any console window, the square becomes red if the text is highlighted.[br]
+ The bottom right square appears when there is some new text in any channel window,
+ and it becomes red when the text is highlighted.[br] The upper right square refers to
+ query windows and the upper left one to any other kind of window (dcc , links...).[br]
+ If you move the mouse over the dock widget a tooltip will show you the last lines
+ of the "new" text in all these windows.[br]
+ This is useful when you keep the main KVIrc window minimized and you're working on something else:
+ if the dock widget shows nothing but the earth icon , nothing is happening in the main KVIrc window.
+ If the dock widget shows one or more white (or red) squares , you can move the mouse over
+ and check what's happened exactly and eventually bring up the main KVIrc window by clicking on the widget.[br]
+ [big]tecnical details[/big]
+ The dock widget is currently working in KDE compilation mode only:
+ it relies on the KWin implementation of the Window Manager interaction protocol.
+ @seealso:
+ [cmd]dockwidget.hide[/cmd]
+*/
+
+static bool dockwidget_kvs_cmd_show(KviKvsModuleCommandCall * c)
+{
+ if(!(dockwidget_find(c->window()->frame())))
+ {
+ KviDockWidget * w = new KviDockWidget(c->window()->frame());
+ w->show();
+ }
+ return true;
+}
+
+/*
+ @doc: dockwidget.hide
+ @type:
+ command
+ @title:
+ dockwidget.hide
+ @short:
+ Hides the dock widget for the current frame window
+ @syntax:
+ dockwidget.hide
+ @description:
+ Hides the dock widget for the current frame window
+ @seealso:
+ [cmd]dockwidget.show[/cmd]
+*/
+
+static bool dockwidget_kvs_cmd_hide(KviKvsModuleCommandCall * c)
+{
+ KviDockWidget * w= dockwidget_find(c->window()->frame());
+ if(w)delete w;
+ // show the parent frame.. otherwise there will be no way to get it back
+ if(!c->window()->frame()->isVisible())
+ {
+ c->window()->frame()->show();
+ }
+ return true;
+}
+
+/*
+ @doc: dockwidget.hidewindow
+ @type:
+ command
+ @title:
+ dockwidget.hidewindow
+ @short:
+ Returns the state of the dock widget
+ @syntax:
+ dockwidget.hidewindow
+ @description:
+ Hides the window, assotiated with dockwidget
+ @seealso:
+ [cmd]dockwidget.show[/cmd], [cmd]dockwidget.hide[/cmd]
+*/
+
+static bool dockwidget_kvs_cmd_hidewindow(KviKvsModuleCommandCall * c)
+{
+ KviDockWidget * w= dockwidget_find(c->window()->frame());
+ if(w)
+ {
+ c->window()->frame()->hide();
+ }
+ return true;
+}
+
+/*
+ @doc: dockwidget.isVisible
+ @type:
+ function
+ @title:
+ $dockwidget.isVisible
+ @short:
+ Returns the state of the dock widget
+ @syntax:
+ $reguser.isVisible()
+ @description:
+ Returns 1 if the dock widget is actually visible , 0 otherwise.
+ @seealso:
+ [cmd]dockwidget.show[/cmd]
+*/
+
+static bool dockwidget_kvs_fnc_isvisible(KviKvsModuleFunctionCall * c)
+{
+ c->returnValue()->setBoolean(dockwidget_find(c->window()->frame()));
+ return true;
+}
+
+
+
+// =======================================
+// init routine
+// =======================================
+static bool dockwidget_module_init(KviModule * m)
+{
+ QString buffer;
+#ifdef COMPILE_ON_WINDOWS
+ g_pApp->findImage(buffer,"kvi_dock_win32-0.png");
+#else
+ g_pApp->findImage(buffer,"kvi_dock_part-0.png");
+#endif
+ g_pDock1 = new QPixmap(buffer);
+
+#ifdef COMPILE_ON_WINDOWS
+ g_pApp->findImage(buffer,"kvi_dock_win32-1.png");
+#else
+ g_pApp->findImage(buffer,"kvi_dock_part-1.png");
+#endif
+ g_pDock2 = new QPixmap(buffer);
+
+#ifdef COMPILE_ON_WINDOWS
+ g_pApp->findImage(buffer,"kvi_dock_win32-2.png");
+#else
+ g_pApp->findImage(buffer,"kvi_dock_part-2.png");
+#endif
+
+ g_pDock3 = new QPixmap(buffer);
+
+
+ g_pDockWidgetList = new KviPointerList<KviDockWidget>;
+ g_pDockWidgetList->setAutoDelete(false);
+
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"hide",dockwidget_kvs_cmd_hide);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"hidewindow",dockwidget_kvs_cmd_hidewindow);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"show",dockwidget_kvs_cmd_show);
+ KVSM_REGISTER_FUNCTION(m,"isVisible",dockwidget_kvs_fnc_isvisible);
+
+ return true;
+}
+
+static bool dockwidget_module_cleanup(KviModule *m)
+{
+ while(g_pDockWidgetList->first())delete g_pDockWidgetList->first();
+ delete g_pDockWidgetList;
+ g_pDockWidgetList = 0;
+
+ delete g_pDock1;
+ g_pDock1 = 0;
+
+ delete g_pDock2;
+ g_pDock2 = 0;
+
+ delete g_pDock3;
+ g_pDock3 = 0;
+
+ return true;
+}
+
+static bool dockwidget_module_can_unload(KviModule *)
+{
+ return g_pDockWidgetList->isEmpty();
+}
+
+// =======================================
+// plugin definition structure
+// =======================================
+KVIRC_MODULE(
+ "KVIrc dock widget implementation",
+ "2.0.0",
+ "Szymon Stefanek <pragma at kvirc dot net> and Alexey Uzhva <alexey at kvirc dot ru>" ,
+ "exports the /dockwidget.* interface\n",
+ dockwidget_module_init ,
+ dockwidget_module_can_unload,
+ 0,
+ dockwidget_module_cleanup
+)
+
+#include "libkvidockwidget_qt4.moc"
+
+#endif
diff --git a/src/modules/dockwidget/libkvidockwidget_qt4.h b/src/modules/dockwidget/libkvidockwidget_qt4.h
new file mode 100644
index 00000000..9d9e87bc
--- /dev/null
+++ b/src/modules/dockwidget/libkvidockwidget_qt4.h
@@ -0,0 +1,81 @@
+#ifndef _KVI_DOCKWIDGET_QT4_H_
+#define _KVI_DOCKWIDGET_QT4_H_
+//
+// This file is part of the KVirc irc client distribution
+// Creation date : Tue 02 Jan 2001 14:28:25 by Szymon Stefanek
+// Copyright (C) 2000-2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+//#ifdef COMPILE_USE_QT4
+
+#include "kvi_frame.h"
+
+class KviTalPopupMenu;
+#include <QSystemTrayIcon>
+
+class QPixmap;
+class QTimer;
+
+//class KviFrame;
+class KviDynamicToolTip;
+
+class KviDockWidget : public QSystemTrayIcon, public KviDockExtension
+{
+ Q_OBJECT
+public:
+ KviDockWidget(KviFrame * win);
+ ~KviDockWidget();
+protected:
+ KviFrame * m_pFrm;
+ KviDynamicToolTip * m_pTip;
+ KviTalPopupMenu * m_pContextPopup;
+ KviTalPopupMenu * m_pAwayPopup;
+
+ int m_iToggleFrame;
+ int m_iAwayMenuId;
+
+ bool m_bFlashed;
+
+ QPixmap m_CurrentPixmap;
+ QTimer* m_pFlashingTimer;
+ int m_iConsoles;
+ int m_iChannels;
+ int m_iQueries;
+ int m_iOther;
+public:
+ KviFrame * frame(){ return m_pFrm; };
+public:
+ virtual void refresh();
+ virtual void die();
+ void updateIcon();
+protected:
+ void grabActivityInfo();
+
+protected slots:
+ void fillContextPopup();
+ void toggleParentFrame();
+ void tipRequest(KviDynamicToolTip *tip,const QPoint &pnt);
+ void doAway(int);
+ void flashingTimerShot();
+
+ void activatedSlot( QSystemTrayIcon::ActivationReason reason );
+};
+
+//#endif
+
+#endif //_KVI_DOCKWIDGET_QT4_H_
diff --git a/src/modules/editor/Makefile.am b/src/modules/editor/Makefile.am
new file mode 100644
index 00000000..beb22541
--- /dev/null
+++ b/src/modules/editor/Makefile.am
@@ -0,0 +1,20 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\" -DKVIRC_SSEX
+
+pluglib_LTLIBRARIES = libkvieditor.la
+
+libkvieditor_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+nodist_libkvieditor_la_SOURCES = moc_scripteditor.cpp
+libkvieditor_la_SOURCES = libkvieditor.cpp scripteditor.cpp
+libkvieditor_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= scripteditor.h
+
+moc_%.cpp: %.h
+ $(SS_QT_MOC) $< -o $@
+
diff --git a/src/modules/editor/libkvieditor.cpp b/src/modules/editor/libkvieditor.cpp
new file mode 100644
index 00000000..14ad53b3
--- /dev/null
+++ b/src/modules/editor/libkvieditor.cpp
@@ -0,0 +1,94 @@
+//
+// File : libkvieditor.cpp
+// Creation date : Mon Sep 11 2000 12:19:00 by Szymon Stefanek
+//
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_module.h"
+
+#include "kvi_window.h"
+
+#include "scripteditor.h"
+
+KviModule * g_pEditorModulePointer = 0;
+
+KviPointerList<KviScriptEditorImplementation> * g_pScriptEditorWindowList = 0;
+
+static bool editor_module_init(KviModule * m)
+{
+ g_pScriptEditorWindowList = new KviPointerList<KviScriptEditorImplementation>;
+ g_pScriptEditorWindowList->setAutoDelete(false);
+
+ g_pEditorModulePointer = m;
+
+ return true;
+}
+
+static bool editor_module_cleanup(KviModule *m)
+{
+ while(g_pScriptEditorWindowList->first())
+ {
+ QObject * w = g_pScriptEditorWindowList->first()->parent();;
+ while(w)
+ {
+ //debug("%s %s %i %s",__FILE__,__FUNCTION__,__LINE__,w->className());
+ if(w->inherits("KviWindow"))
+ {
+ // debug("%s %s %i",__FILE__,__FUNCTION__,__LINE__);
+ ((KviWindow *)w)->close();
+ // debug("%s %s %i",__FILE__,__FUNCTION__,__LINE__);
+ break;
+ }
+ w = w->parent();
+ }
+ delete g_pScriptEditorWindowList->first();
+ }
+ delete g_pScriptEditorWindowList;
+ g_pScriptEditorWindowList = 0;
+
+ return true;
+}
+
+static bool editor_module_can_unload(KviModule *m)
+{
+ return ((g_pScriptEditorWindowList == 0) || (g_pScriptEditorWindowList->count() == 0));
+}
+
+KVIRC_MODULE(
+ "Editor", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2000 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "Text editor extension",
+ editor_module_init,
+ editor_module_can_unload,
+ 0,
+ editor_module_cleanup
+)
+
+// We want C linkage on this one: we want to be able to dlsym() it with a simple name
+// FIXME: Is this portable enough ? Or is better to have a table entry ?
+
+KVIMODULEEXPORTFUNC KviScriptEditor * editor_module_createScriptEditor(QWidget * par)
+{
+ return new KviScriptEditorImplementation(par);
+}
+
+KVIMODULEEXPORTFUNC void editor_module_destroyScriptEditor(KviScriptEditor * e)
+{
+ delete ((KviScriptEditorImplementation *)e);
+}
diff --git a/src/modules/editor/scripteditor.cpp b/src/modules/editor/scripteditor.cpp
new file mode 100644
index 00000000..06023a7c
--- /dev/null
+++ b/src/modules/editor/scripteditor.cpp
@@ -0,0 +1,1224 @@
+//=============================================================================
+//
+// File : scripteditor.cpp
+// Created on Sun Mar 28 1999 16:11:48 CEST by Szymon Stefanek
+// Code improvements by Carbone Alessandro & Tonino Imbesi
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 1999-2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "scripteditor.h"
+
+#include <qlayout.h>
+#include <qtoolbutton.h>
+#include <kvi_tal_groupbox.h>
+#include "kvi_tal_popupmenu.h"
+#include "kvi_tal_scrollview.h"
+#include <qmessagebox.h>
+#include <qtimer.h>
+#ifdef COMPILE_USE_QT4
+ //#define QSyntaxHighlighter Q3SyntaxHighlighter
+#else
+ #include <qobjectlist.h>
+#endif
+#include <qcursor.h>
+#include <qfont.h>
+#include <qrect.h>
+
+#include "kvi_fileutils.h"
+#include "kvi_locale.h"
+#include "kvi_filedialog.h"
+#include "kvi_qstring.h"
+#include "kvi_config.h"
+#include "kvi_module.h"
+#include "kvi_pointerlist.h"
+//
+#include "kvi_app.h"
+#include "kvi_console.h"
+#include "kvi_window.h"
+#include "kvi_iconmanager.h"
+#include "kvi_kvs_kernel.h"
+
+#include <qlayout.h>
+
+
+extern KviPointerList<KviScriptEditorImplementation> * g_pScriptEditorWindowList;
+extern KviModule * g_pEditorModulePointer;
+
+
+static QColor g_clrBackground(255,255,255);
+static QColor g_clrNormalText(0,0,0);
+static QColor g_clrBracket(255,0,0);
+static QColor g_clrComment(0,120,0);
+static QColor g_clrFunction(0,17,255);
+static QColor g_clrKeyword(85,85,255);
+static QColor g_clrVariable(255,0,0);
+static QColor g_clrPunctuation(180,180,0);
+static QColor g_clrFind(0,0,0);
+
+static QFont g_fntNormal("Courier New",8);
+
+KviCompletionBox::KviCompletionBox(QWidget * parent = 0)
+: KviTalListBox(parent)
+{
+ setPaletteForegroundColor(QColor(0,0,0));
+ setPaletteBackgroundColor(QColor(255,255,255));
+#ifdef COMPILE_USE_QT4
+ setHScrollBarMode(KviTalListBox::AlwaysOff);
+#else
+ setHScrollBarMode(QScrollView::AlwaysOff);
+#endif
+ QFont listfont=font();
+ listfont.setPointSize(8);
+ setFont(listfont);
+ setVariableWidth(false);
+ setFixedWidth(200);
+ //completelistbox->setColumnMode(KviTalListBox::Variable);
+ hide();
+}
+
+void KviCompletionBox::updateContents(QString buffer)
+{
+ buffer=buffer.stripWhiteSpace();
+ KviPointerList<QString> list;
+ clear();
+
+ QString szModule;
+ QChar* pCur = (QChar *)buffer.ucs2();
+
+ int pos=buffer.find('.');
+
+ if(pos>0)
+ {
+ szModule=buffer.left(pos);
+ if(szModule[0].unicode()=='$')
+ szModule.remove(0,1);
+ }
+
+ if(pCur->unicode() == '$')
+ {
+ buffer.remove(0,1);
+ if(!buffer.isEmpty())
+ {
+ if(szModule.isEmpty())
+ KviKvsKernel::instance()->completeFunction(buffer,&list);
+ else
+ debug("we need a module completion!");
+ for ( QString* szCurrent = list.first(); szCurrent; szCurrent = list.next() )
+ {
+ szCurrent->prepend('$');
+ //szCurrent->append('(');
+ insertItem(*szCurrent);
+ }
+ }
+ }
+ else
+ {
+ if(szModule.isEmpty())
+ KviKvsKernel::instance()->completeCommand(buffer,&list);
+ else
+ debug("we need a module completion!");
+ for ( QString* szCurrent = list.first(); szCurrent; szCurrent = list.next() )
+ {
+ szCurrent->append(' ');
+ insertItem(*szCurrent);
+ }
+ }
+// debug("%s %s %i %i",__FILE__,__FUNCTION__,__LINE__,count());
+}
+
+void KviCompletionBox::keyPressEvent(QKeyEvent * e)
+{
+// debug("%s %s %i %x",__FILE__,__FUNCTION__,__LINE__,e->key());
+ switch(e->key())
+ {
+ case Qt::Key_Escape:
+ hide();
+ setFocus();
+ break;
+ case Qt::Key_Return:
+ break;
+ default:
+ if(!e->text().isEmpty())
+ {
+ e->ignore();
+ }
+
+ }
+ KviTalListBox::keyPressEvent(e);
+}
+
+KviScriptEditorWidgetColorOptions::KviScriptEditorWidgetColorOptions(QWidget * pParent)
+: QDialog(pParent)
+{
+ m_pSelectorInterfaceList = new KviPointerList<KviSelectorInterface>;
+ m_pSelectorInterfaceList->setAutoDelete(false);
+ setCaption(__tr2qs_ctx("Preferences","editor"));
+ QGridLayout * g = new QGridLayout(this,3,3,4,4);
+
+ KviFontSelector * f = new KviFontSelector(this,__tr2qs_ctx("Font:","editor"),&g_fntNormal,true);
+ g->addMultiCellWidget(f,0,0,0,2);
+ m_pSelectorInterfaceList->append(f);
+ KviTalGroupBox * gbox = new KviTalGroupBox(1,Qt::Horizontal,__tr2qs("Colors" ),this);
+ g->addMultiCellWidget(gbox,1,1,0,2);
+ KviColorSelector * s = addColorSelector(gbox,__tr2qs_ctx("Background:","editor"),&g_clrBackground,true);
+ s = addColorSelector(gbox,__tr2qs_ctx("Normal text:","editor"),&g_clrNormalText,true);
+ s = addColorSelector(gbox,__tr2qs_ctx("Brackets:","editor"),&g_clrBracket,true);
+ s = addColorSelector(gbox,__tr2qs_ctx("Comments:","editor"),&g_clrComment,true);
+ s = addColorSelector(gbox,__tr2qs_ctx("Functions:","editor"),&g_clrFunction,true);
+ s = addColorSelector(gbox,__tr2qs_ctx("Keywords:","editor"),&g_clrKeyword,true);
+ s = addColorSelector(gbox,__tr2qs_ctx("Variables:","editor"),&g_clrVariable,true);
+ s = addColorSelector(gbox,__tr2qs_ctx("Punctuation:","editor"),&g_clrPunctuation,true);
+ s = addColorSelector(gbox,__tr2qs_ctx("Find:","editor"),&g_clrFind,true);
+
+ QPushButton * b = new QPushButton(__tr2qs_ctx("&OK","editor"),this);
+ b->setDefault(true);
+ connect(b,SIGNAL(clicked()),this,SLOT(okClicked()));
+ g->addWidget(b,2,1);
+
+ b = new QPushButton(__tr2qs_ctx("Cancel","editor"),this);
+ connect(b,SIGNAL(clicked()),this,SLOT(reject()));
+ g->addWidget(b,2,2);
+
+
+ g->setRowStretch(0,1);
+ g->setColStretch(0,1);
+}
+
+KviScriptEditorWidgetColorOptions::~KviScriptEditorWidgetColorOptions()
+{
+ delete m_pSelectorInterfaceList;
+}
+
+KviColorSelector * KviScriptEditorWidgetColorOptions::addColorSelector(QWidget * pParent,const QString & txt,QColor * pOption,bool bEnabled)
+{
+ KviColorSelector * s = new KviColorSelector(pParent,txt,pOption,bEnabled);
+ m_pSelectorInterfaceList->append(s);
+ return s;
+}
+
+void KviScriptEditorWidgetColorOptions::okClicked()
+{
+ for(KviSelectorInterface * i = m_pSelectorInterfaceList->first();i;i = m_pSelectorInterfaceList->next())
+ {
+ i->commit();
+ }
+
+ accept();
+}
+
+
+KviScriptEditorWidget::KviScriptEditorWidget(QWidget * pParent)
+: KviTalTextEdit(pParent)
+{
+ setWordWrap(KviTalTextEdit::NoWrap);
+ m_pParent=pParent;
+ m_szHelp="Nothing";
+ updateOptions();
+ m_szFind="";
+ completelistbox=new KviCompletionBox(this);
+ connect (completelistbox,SIGNAL(selected(const QString &)),this,SLOT(slotComplete(const QString &)));
+}
+
+KviScriptEditorWidget::~KviScriptEditorWidget()
+{
+
+}
+
+#ifdef COMPILE_USE_QT4
+Q3PopupMenu * KviScriptEditorWidget::createPopupMenu( const QPoint& pos )
+#else
+QPopupMenu * KviScriptEditorWidget::createPopupMenu( const QPoint& pos )
+#endif
+{
+#ifdef COMPILE_USE_QT4
+ Q3PopupMenu *pop=KviTalTextEdit::createPopupMenu(pos);
+#else
+ QPopupMenu *pop=KviTalTextEdit::createPopupMenu(pos);
+#endif
+ pop->insertItem(__tr2qs("Context sensitive help"),this,SLOT(slotHelp()),Qt::CTRL+Qt::Key_H);
+ pop->insertItem(__tr2qs("&Replace"),this,SLOT(slotReplace()),Qt::CTRL+Qt::Key_R);
+ return pop;
+}
+
+void KviScriptEditorWidget::slotFind()
+{
+ m_szFind=((KviScriptEditorImplementation*)m_pParent)->getFindlineedit()->text();
+ setText(text());
+}
+
+void KviScriptEditorWidget::slotReplace()
+{
+ KviScriptEditorReplaceDialog *dialog=new KviScriptEditorReplaceDialog(this,tr("Find & Repalce"));
+ connect (dialog,SIGNAL(replaceAll(const QString &,const QString &)),m_pParent,SLOT(slotReplaceAll(const QString &,const QString &)));
+ connect (dialog,SIGNAL(initFind()),m_pParent,SLOT(slotInitFind()));
+ connect (dialog,SIGNAL(nextFind(const QString &)),m_pParent,SLOT(slotNextFind(const QString &)));
+ if(dialog->exec()){};
+
+}
+void KviScriptEditorWidget::slotHelp()
+{
+ contextSensitiveHelp();
+}
+
+
+void KviScriptEditorWidget::updateOptions()
+{
+ setPaper(QBrush(g_clrBackground));
+ setFont(g_fntNormal);
+ setColor(g_clrNormalText);
+
+ QPalette p = palette();
+ p.setColor(QColorGroup::Text,g_clrNormalText);
+ setPalette(p);
+
+#ifdef COMPILE_USE_QT4
+ setTextFormat(Qt::PlainText);
+#else
+ setTextFormat(KviTalTextEdit::PlainText);
+#endif
+
+ // this will rehighlight everything
+ setText(text()); // an "hack" to ensure Update all in the editor
+ KviScriptSyntaxHighlighter *h = new KviScriptSyntaxHighlighter(this);
+ (void)h;
+ ((KviScriptEditorImplementation*)m_pParent)->getFindlineedit()->setPaletteForegroundColor(g_clrFind);
+}
+
+void KviScriptEditorWidget::keyPressEvent(QKeyEvent * e)
+{
+ if(e->state() == Qt::ControlButton)
+ {
+ switch(e->key())
+ {
+ case Qt::Key_B:
+ insert("$b");
+ return;
+ case Qt::Key_K:
+ insert("$k");
+ return;
+ case Qt::Key_O:
+ insert("$o");
+ return;
+ case Qt::Key_U:
+ insert("$u");
+ return;
+ case Qt::Key_Enter:
+ case Qt::Key_Return:
+ case Qt::Key_Backspace:
+ case Qt::Key_PageUp:
+ e->ignore(); // allow the parent to process it
+ return;
+ break;
+ }
+ }
+
+ if(e->state() == Qt::ShiftButton)
+ {
+ if (e->key() == Qt::Key_Insert)
+ {
+ completition();
+ return;
+ }
+ }
+ switch(e->key())
+ {
+ case Qt::Key_Period:
+ case Qt::Key_Left:
+ case Qt::Key_Right:
+ if(!completelistbox->isVisible()) completition(0);
+ break;
+ case Qt::Key_Up:
+ case Qt::Key_Escape:
+ case Qt::Key_PageUp:
+ case Qt::Key_PageDown:
+ case Qt::Key_End:
+ case Qt::Key_Home:
+ if(completelistbox->isVisible()) completelistbox->hide();
+ break;
+ case Qt::Key_Down:
+ if(completelistbox->isVisible())
+ {
+ completelistbox->setFocus();
+ completelistbox->setCurrentItem(0);
+ return;
+ }
+ break;
+ case Qt::Key_Return:
+ KviTalTextEdit::keyPressEvent(e);
+ int para,pos;
+ getCursorPosition(&para,&pos);
+ if(para > 0)
+ {
+ QString szPrev=text(para-1);
+ if(!szPrev.isEmpty())
+ {
+ if(szPrev.at(szPrev.length() - 1).unicode() == ' ')
+ szPrev.remove(szPrev.length() - 1,1);
+ QString szCur;
+ const QChar * pCur = (const QChar *)szPrev.ucs2();
+ if(pCur)
+ {
+ while(pCur->unicode() && pCur->isSpace())
+ {
+ szCur.append(*pCur);
+ pCur++;
+ }
+ }
+ insertAt(szCur,para,0);
+ setCursorPosition(para,szCur.length()+pos);
+ }
+// debug("|%i|",pos);
+ }
+ return;
+ default:
+ setFocus();
+ break;
+ }
+ KviTalTextEdit::keyPressEvent(e);
+ emit keyPressed();
+ if(completelistbox->isVisible())
+ completition(0);
+}
+
+void KviScriptEditorWidget::contentsMousePressEvent(QMouseEvent *e)
+{
+ completelistbox->hide();
+ if (e->button() == Qt::RightButton)
+ {
+// bool bIsFirstWordInLine;
+ QString buffer;
+ int para = paragraphAt(e->pos());
+ int index=charAt(e->pos(),&para);
+ buffer=this->text(para);
+ getWordOnCursor(buffer,index);
+ QString tmp=buffer;
+ KviPointerList<QString> l;
+ if (tmp.left(1) == "$")
+ {
+ tmp.remove(0,1);
+ KviKvsKernel::instance()->completeFunction(tmp,&l);
+ if (l.count() != 1) buffer="";
+ else buffer=*(l.at(0));
+ }
+ else
+ {
+ KviKvsKernel::instance()->completeCommand(tmp,&l);
+ if (l.count() != 1) buffer="";
+ else buffer=*(l.at(0));
+ }
+ //debug (buffer);
+ m_szHelp=buffer;
+ }
+ KviTalTextEdit::contentsMousePressEvent(e);
+
+}
+
+bool KviScriptEditorWidget::contextSensitiveHelp() const
+{
+ QString buffer;
+ int para,index;
+ getCursorPosition(&para,&index);
+ buffer=text(para);
+
+ getWordOnCursor(buffer,index);
+
+ /*
+ QString tmp=buffer;
+ KviPointerList<QString> * l;
+ if(tmp.left(1) == "$")
+ {
+ tmp.remove(0,1);
+ l = g_pUserParser->completeFunctionAllocateResult(tmp);
+ } else {
+ l = g_pUserParser->completeCommandAllocateResult(tmp);
+ }
+
+ bool bOk = false;
+ if(l)
+ {
+ for(QString * s = l->first();s;s = l->next())
+ {
+ if(KviQString::equalCI(*s,buffer))
+ {
+ l->last();
+ bOk = true;
+ }
+ }
+ }
+ g_pUserParser->freeCompletionResult(l);
+ if(!bOk)return false;
+ */
+
+ QString parse;
+ KviQString::sprintf(parse,"timer -s (help,0){ help -s %Q; }",&buffer);
+ debug ("parsing %s",parse.latin1());
+ KviKvsScript::run(parse,(KviWindow*)g_pApp->activeConsole());
+
+ return true;
+}
+
+
+void KviScriptEditorWidget::getWordOnCursor(QString &buffer,int index) const
+{
+ QRegExp re("[ \t=,\\(\\)\"}{\\[\\]\r\n+-*><;@!]");
+ //debug("BUFFER IS %s",buffer.utf8().data());
+ int start = buffer.findRev(re,index);
+ int end = buffer.find(re,index);
+
+ QString tmp;
+ if(start!=end)
+ {
+ if(start<0)start=0;
+ else start++;
+ if(end<0)end=index;
+ tmp = buffer.mid(start,end-start);
+ }
+ buffer = tmp;
+ //debug("BUFFER NOW IS %s",buffer.utf8().data());
+}
+
+void KviScriptEditorWidget::completition(bool bCanComplete)
+{
+ int line,index;
+ QString buffer;
+ QString word;
+ getCursorPosition(&line,&index);
+ buffer=this->text(line);
+ bool bIsFirstWordInLine;
+ getWordBeforeCursor(buffer,index,&bIsFirstWordInLine);
+ if(!buffer.isEmpty())
+ completelistbox->updateContents(buffer);
+ if (completelistbox->count() == 1) word=completelistbox->text(0);
+ if (!word.isEmpty() && bCanComplete)
+ {
+ insert(word);
+ completelistbox->hide();
+ }
+ if( completelistbox->count() == 0 )
+ completelistbox->hide();
+ else if(!completelistbox->isVisible())
+ {
+ if (completelistbox->count() <6) completelistbox->resize(completelistbox->width(),(completelistbox->count()*completelistbox->fontMetrics().height()+20));
+ else completelistbox->resize(completelistbox->width(),6*completelistbox->fontMetrics().height()+20);
+ int posy=paragraphRect(line).bottom();
+ int posx=fontMetrics().width(this->text(line).left(index));
+ completelistbox->move(posx,posy);
+ completelistbox->show();
+ }
+}
+
+void KviScriptEditorWidget::getWordBeforeCursor(QString &buffer,int index,bool *bIsFirstWordInLine)
+{
+ QString tmp = buffer.left(index);
+ buffer=tmp;
+ int idx = buffer.findRev(' ');
+ int idx1 = buffer.findRev("=");
+ int idx2 = buffer.findRev(',');
+ int idx3 = buffer.findRev('(');
+ int idx4 = buffer.findRev('"');
+ if(idx1 > idx) idx= idx1;
+ if(idx2 > idx)idx = idx2;
+ if(idx3 > idx)idx = idx3;
+ if(idx4 > idx)idx = idx4;
+ *bIsFirstWordInLine = false;
+ if(idx > -1)buffer.remove(0,idx);
+ else
+ {
+ *bIsFirstWordInLine = true;
+ buffer.insert(0," ");
+ }
+
+}
+
+void KviScriptEditorWidget::slotComplete(const QString &str)
+{
+ QString complete=str;
+ int line,index;
+ getCursorPosition(&line,&index);
+ QString buffer;
+ buffer=this->text(line);
+ bool bIsFirstWordInLine;
+ getWordBeforeCursor(buffer,index,&bIsFirstWordInLine);
+ int len=buffer.length();
+// if (buffer[1].unicode() == '$') len --;
+ complete.remove(0,len-1);
+ if (buffer[1].unicode() == '$') complete.append("(");
+ else complete.append(" ");
+ insert (complete);
+ completelistbox->hide();
+ setFocus();
+}
+
+KviScriptSyntaxHighlighter::KviScriptSyntaxHighlighter(KviScriptEditorWidget * pWidget)
+: QSyntaxHighlighter(pWidget)
+{
+}
+
+KviScriptSyntaxHighlighter::~KviScriptSyntaxHighlighter()
+{
+}
+
+#define IN_COMMENT 1
+#define IN_LINE 2
+#define IN_STRING 4
+
+int KviScriptSyntaxHighlighter::highlightParagraph(const QString &text,int endStateOfLastPara)
+
+{
+ const QChar * pBuf = (const QChar *)text.ucs2();
+ const QChar * c = pBuf;
+ if(!c)return endStateOfLastPara;
+
+ if(endStateOfLastPara < 0)endStateOfLastPara = 0;
+
+ bool bNewCommand = !(endStateOfLastPara & IN_LINE);
+ bool bInComment = endStateOfLastPara & IN_COMMENT;
+ bool bInString = endStateOfLastPara & IN_STRING;
+
+ const QChar * pBegin;
+
+
+ while(c->unicode())
+ {
+ if(bInComment)
+ {
+ pBegin = c;
+ while(c->unicode() && (c->unicode() != '*'))c++;
+ if(!c->unicode())
+ {
+ setFormat(pBegin - pBuf,c - pBegin,g_fntNormal,g_clrComment);
+ return IN_COMMENT;
+ }
+ c++;
+ if(c->unicode() == '/')
+ {
+ // end of the comment!
+ c++;
+ setFormat(pBegin - pBuf,c - pBegin,g_fntNormal,g_clrComment);
+ bInComment = false;
+ bNewCommand = true;
+ }
+ continue;
+ }
+
+ if(c->isSpace())
+ {
+ while(c->unicode() && c->isSpace())c++;
+ if(!c->unicode())continue;
+ }
+
+ pBegin = c;
+
+ // this does not break the bNewCommand flag
+ if((c->unicode() == '{') || (c->unicode() == '}'))
+ {
+ c++;
+ setFormat(pBegin - pBuf,1,g_fntNormal,g_clrBracket);
+ continue;
+ }
+
+
+ if(bNewCommand)
+ {
+ bNewCommand = false;
+
+ if(c->unicode() == '#')
+ {
+ if(c > pBuf)
+ {
+ const QChar * prev = c - 1;
+ if((prev->unicode() == ']') || (prev->unicode() == '}'))
+ {
+ // array or hash count
+ c++;
+ setFormat(pBegin - pBuf,c - pBegin,g_fntNormal,g_clrPunctuation);
+ continue;
+ }
+ }
+ // comment until the end of the line
+ while(c->unicode())c++;
+ setFormat(pBegin - pBuf,c - pBegin,g_fntNormal,g_clrComment);
+ continue;
+ }
+ if(c->unicode() == '/')
+ {
+ c++;
+ if(c->unicode() == '/')
+ {
+ while(c->unicode())c++;
+ setFormat(pBegin - pBuf,c - pBegin,g_fntNormal,g_clrComment);
+ continue;
+ } else if(c->unicode() == '*')
+ {
+ c++;
+ setFormat(pBegin - pBuf,c - pBegin,g_fntNormal,g_clrComment);
+ bInComment = true;
+ continue;
+ }
+ c--;
+ }
+ if(c->unicode() && (c->isLetterOrNumber() || (c->unicode() == '_')))
+ {
+ c++;
+ while(c->unicode() && (c->isLetterOrNumber() || (c->unicode() == '.') || (c->unicode() == '_') || (c->unicode() == ':')))c++;
+ setFormat(pBegin - pBuf,c - pBegin,g_fntNormal,g_clrKeyword);
+ // special processing for callbacks and magic commands
+ if(pBegin->unicode() == 'e')
+ {
+ if(c - pBegin == 4)
+ {
+ // might be "else"
+ QString tmp(pBegin,4);
+ if(tmp.lower() == "else")bNewCommand = true;
+ continue;
+ }
+ }
+ else
+ if(pBegin->unicode() == 'f')
+ {
+ if(c - pBegin == 8)
+ {
+ // might be "function"
+ QString tmp(pBegin,8);
+ if(tmp.lower() == "function")bNewCommand = true;
+ continue;
+ }
+ }
+
+ if(pBegin->unicode() == 'i')
+ {
+ if(c - pBegin == 8)
+ {
+ // might be "internal"
+ QString tmp(pBegin,8);
+ if(tmp.lower() == "internal")bNewCommand = true;
+ continue;
+ }
+ }
+
+ // not an else or special command function... FIXME: should check for callbacks.. but that's prolly too difficult :)
+ continue;
+ }
+ }
+ if(c->unicode() == '$')
+ {
+ c++;
+ if(c->unicode() == '$')
+ {
+ c++;
+ setFormat(pBegin - pBuf,c - pBegin,g_fntNormal,g_clrKeyword);
+ } else {
+ while(c->unicode() && (c->isLetterOrNumber() || (c->unicode() == '.') || (c->unicode() == '_') || (c->unicode() == ':')))c++;
+ setFormat(pBegin - pBuf,c - pBegin,g_fntNormal,g_clrFunction);
+ }
+ continue;
+ }
+
+ if(c->unicode() == '-')
+ {
+ QChar * pTmp =(QChar *) c;
+ c++;
+ if(c->unicode() == '-') c++;
+ if(c->isLetter())
+ {
+ while(c->unicode() && (c->isLetterOrNumber() || (c->unicode() == '_')))c++;
+ setFormat(pBegin - pBuf,c - pBegin,g_fntNormal,g_clrKeyword);
+ continue;
+ } else {
+ while(c!=pTmp) c--;
+ }
+ }
+
+ if(c->unicode() == '%')
+ {
+ c++;
+ if(c->unicode() && (c->isLetterOrNumber() || (c->unicode() == ':') || (c->unicode() == '_')))
+ {
+ while(c->unicode() && (c->isLetterOrNumber() || (c->unicode() == ':') || (c->unicode() == '_')))c++;
+ setFormat(pBegin - pBuf,c - pBegin,g_fntNormal,g_clrVariable);
+ continue;
+ }
+ c--;
+ }
+
+ if(!c->unicode())continue;
+
+ if(c->isLetterOrNumber() || c->unicode() == '_')
+ {
+ c++;
+ while(c->unicode() && c->isLetterOrNumber() || (c->unicode() == '_'))c++;
+ setFormat(pBegin - pBuf,c - pBegin,g_fntNormal,g_clrNormalText);
+ continue;
+ }
+
+ if(c->unicode() == '\\')
+ {
+ c++;
+ setFormat(pBegin - pBuf,c - pBegin,g_fntNormal,g_clrPunctuation);
+ // the next char is to be interpreted as normal text
+ pBegin = c;
+ if(c->unicode() && (c->unicode() != '\n'))
+ {
+ c++;
+ setFormat(pBegin - pBuf,c - pBegin,g_fntNormal,g_clrNormalText);
+ continue;
+ }
+ // this is never returned since Qt sux in string processing
+ // it sets the newlines to spaces and we have no secure way to undestand that this was the end of a line
+ return IN_LINE;
+ }
+
+ if(c->unicode() == '"')
+ {
+ bInString = !bInString;
+ c++;
+ setFormat(pBegin - pBuf,c - pBegin,g_fntNormal,g_clrPunctuation);
+ continue;
+ } else if(c->unicode() == ';')
+ {
+ if(!bInString) bNewCommand = true; // the next will be a new command
+ }
+
+ c++;
+ if(bInString)
+ {
+ setFormat(pBegin - pBuf,c - pBegin,g_fntNormal,g_clrNormalText);
+ } else {
+ setFormat(pBegin - pBuf,c - pBegin,g_fntNormal,g_clrPunctuation);
+ }
+ }
+
+ bool i=TRUE;
+ QString szFind=((KviScriptEditorWidget *)textEdit())->m_szFind;
+ if (!szFind.isEmpty())
+ {
+ int index=0;
+ while (i)
+ {
+ index=text.find(szFind,index,false);
+ if (index != -1)
+ {
+ setFormat(index,szFind.length(),g_clrFind);
+ index += szFind.length();
+ }
+ else i=false;
+ }
+ }
+ if(bInString)
+ return IN_LINE | IN_STRING;
+ else
+ return 0;
+}
+
+// 22.02.2005 :: 00:01
+// valgrind --leak-check=yes --num-callers=10 -v kvirc -f
+//
+//==30299== Warning: SIGSEGV not in user code; either from syscall kill()
+//==30299== or possible Valgrind bug. This message is only shown 3 times.
+//==30299== Warning: SIGSEGV not in user code; either from syscall kill()
+//==30299== or possible Valgrind bug. This message is only shown 3 times.
+//==30299== Warning: SIGSEGV not in user code; either from syscall kill()
+//==30299== or possible Valgrind bug. This message is only shown 3 times.
+
+
+KviScriptEditorImplementation::KviScriptEditorImplementation(QWidget * par)
+:KviScriptEditor(par)
+{
+ if(g_pScriptEditorWindowList->isEmpty())loadOptions();
+ g_pScriptEditorWindowList->append(this);
+ m_lastCursorPos=QPoint(0,0);
+ QGridLayout * g = new QGridLayout(this,2,3,0,0);
+
+ m_pFindLineedit = new QLineEdit(" ",this);
+#ifndef COMPILE_USE_QT4
+ m_pFindLineedit->setFrameStyle(QFrame::Sunken | QFrame::Panel);
+#endif
+ m_pFindLineedit->setText("");
+ m_pFindLineedit->setPaletteForegroundColor(g_clrFind);
+
+ m_pEditor = new KviScriptEditorWidget(this);
+ g->addMultiCellWidget(m_pEditor,0,0,0,3);
+ g->setRowStretch(0,1);
+
+#ifdef COMPILE_USE_QT4
+ QToolButton * b = new QToolButton(Qt::DownArrow,this,"dsa2");
+#else
+ QToolButton * b = new QToolButton(DownArrow,this);
+#endif
+ b->setMinimumWidth(24);
+ g->addWidget(b,1,0);
+
+ KviTalPopupMenu * pop = new KviTalPopupMenu(b);
+ pop->insertItem(__tr2qs_ctx("&Open...","editor"),this,SLOT(loadFromFile()));
+ pop->insertItem(__tr2qs_ctx("&Save As...","editor"),this,SLOT(saveToFile()));
+ pop->insertSeparator();
+ pop->insertItem(__tr2qs_ctx("&Configure Editor...","editor"),this,SLOT(configureColors()));
+ b->setPopup(pop);
+ b->setPopupDelay(1);
+
+ g->setColStretch(1,1);
+ g->setColStretch(2,10);
+ g->addWidget(m_pFindLineedit,1,2);
+ QLabel *lab= new QLabel("find",this);
+ lab->setText(tr("Find"));
+
+ g->addWidget(lab,1,1);
+ m_pRowColLabel = new QLabel("0",this);
+ m_pRowColLabel->setFrameStyle(QFrame::Sunken | QFrame::Panel);
+ m_pRowColLabel->setMinimumWidth(80);
+ g->addWidget(m_pRowColLabel,1,3);
+
+ connect(m_pFindLineedit,SIGNAL(returnPressed()),m_pEditor,SLOT(slotFind()));
+ connect(m_pFindLineedit,SIGNAL(returnPressed()),this,SLOT(slotFind()));
+ connect(m_pEditor,SIGNAL(keyPressed()),this,SLOT(updateRowColLabel()));
+ connect(m_pEditor,SIGNAL(textChanged()),this,SLOT(updateRowColLabel()));
+ connect(m_pEditor,SIGNAL(selectionChanged()),this,SLOT(updateRowColLabel()));
+ m_lastCursorPos = QPoint(-1,-1);
+}
+
+KviScriptEditorImplementation::~KviScriptEditorImplementation()
+{
+ g_pScriptEditorWindowList->removeRef(this);
+ if(g_pScriptEditorWindowList->isEmpty())saveOptions();
+}
+
+void KviScriptEditorImplementation::loadOptions()
+{
+ QString tmp;
+ g_pEditorModulePointer->getDefaultConfigFileName(tmp);
+
+ KviConfig cfg(tmp,KviConfig::Read);
+
+ g_clrBackground = cfg.readColorEntry("Background",QColor(0,0,0));;
+ g_clrNormalText = cfg.readColorEntry("NormalText",QColor(100,255,0));
+ g_clrBracket = cfg.readColorEntry("Bracket",QColor(255,0,0));
+ g_clrComment = cfg.readColorEntry("Comment",QColor(0,120,0));
+ g_clrFunction = cfg.readColorEntry("Function",QColor(255,255,0));
+ g_clrKeyword = cfg.readColorEntry("Keyword",QColor(120,120,150));
+ g_clrVariable = cfg.readColorEntry("Variable",QColor(200,200,200));
+ g_clrPunctuation = cfg.readColorEntry("Punctuation",QColor(180,180,0));
+ g_clrFind = cfg.readColorEntry("Find",QColor(255,0,0));
+
+ g_fntNormal = cfg.readFontEntry("Font",QFont("Fixed",12));
+}
+
+bool KviScriptEditorImplementation::isModified()
+{
+ return m_pEditor->isModified();
+}
+
+void KviScriptEditorImplementation::slotFind()
+{
+ emit find(m_pFindLineedit->text());
+
+}
+void KviScriptEditorImplementation::slotNextFind(const QString &text)
+{
+// emit nextFind(const QString &text);
+
+}void KviScriptEditorImplementation::slotInitFind()
+{
+ emit initFind();
+
+}
+void KviScriptEditorImplementation::slotReplaceAll(const QString &txt,const QString &txt1)
+{
+ emit replaceAll(txt,txt1);
+}
+void KviScriptEditorImplementation::saveOptions()
+{
+ QString tmp;
+ g_pEditorModulePointer->getDefaultConfigFileName(tmp);
+
+ KviConfig cfg(tmp,KviConfig::Write);
+
+ cfg.writeEntry("Background",g_clrBackground);;
+ cfg.writeEntry("NormalText",g_clrNormalText);
+ cfg.writeEntry("Bracket",g_clrBracket);
+ cfg.writeEntry("Comment",g_clrComment);
+ cfg.writeEntry("Function",g_clrFunction);
+ cfg.writeEntry("Keyword",g_clrKeyword);
+ cfg.writeEntry("Variable",g_clrVariable);
+ cfg.writeEntry("Punctuation",g_clrPunctuation);
+ cfg.writeEntry("Find",g_clrFind);
+ cfg.writeEntry("Font",g_fntNormal);
+}
+
+void KviScriptEditorImplementation::setFocus()
+{
+ m_pEditor->setFocus();
+}
+
+
+
+void KviScriptEditorImplementation::focusInEvent(QFocusEvent *)
+{
+ m_pEditor->setFocus();
+}
+
+
+void KviScriptEditorImplementation::setEnabled(bool bEnabled)
+{
+ QWidget::setEnabled(bEnabled);
+ m_pEditor->setEnabled(bEnabled);
+ m_pRowColLabel->setEnabled(bEnabled);
+}
+
+void KviScriptEditorImplementation::saveToFile()
+{
+ QString fName;
+ if(KviFileDialog::askForSaveFileName(fName,
+ __tr2qs_ctx("Choose a Filename - KVIrc","editor"),
+ QString::null,
+ QString::null,false,true,true))
+ {
+ QString buffer = m_pEditor->text();
+
+ //if(tmp.isEmpty())tmp = "";
+ //KviStr buffer = tmp.utf8().data();
+ if(!KviFileUtils::writeFile(fName,buffer))
+ {
+ QString tmp;
+ QMessageBox::warning(this,
+ __tr2qs_ctx("Save Failed - KVIrc","editor"),
+ KviQString::sprintf(tmp,__tr2qs_ctx("Can't open the file %s for writing.","editor"),&fName));
+ }
+ }
+}
+
+void KviScriptEditorImplementation::setText(const KviQCString &txt)
+{
+ m_pEditor->setText(txt.data());
+#ifdef COMPILE_USE_QT4
+ m_pEditor->setTextFormat(Qt::PlainText);
+#else
+ m_pEditor->setTextFormat(KviTalTextEdit::PlainText);
+#endif
+ m_pEditor->moveCursor(KviTalTextEdit::MoveEnd,false);
+ m_pEditor->setModified(false);
+ updateRowColLabel();
+}
+
+void KviScriptEditorImplementation::getText(KviQCString &txt)
+{
+ txt = m_pEditor->text();
+}
+QLineEdit * KviScriptEditorImplementation::getFindlineedit()
+{
+ return m_pFindLineedit;
+}
+void KviScriptEditorImplementation::setText(const QString &txt)
+{
+ m_pEditor->setText(txt);
+#ifdef COMPILE_USE_QT4
+ m_pEditor->setTextFormat(Qt::PlainText);
+#else
+ m_pEditor->setTextFormat(KviTalTextEdit::PlainText);
+#endif
+ m_pEditor->moveCursor(KviTalTextEdit::MoveEnd,false);
+ m_pEditor->setModified(false);
+ updateRowColLabel();
+}
+
+void KviScriptEditorImplementation::getText(QString &txt)
+{
+ txt = m_pEditor->text();
+}
+void KviScriptEditorImplementation::setFindText(const QString &txt)
+{
+ m_pFindLineedit->setText(txt);
+ m_pEditor->slotFind();
+
+}
+
+void KviScriptEditorImplementation::setFindLineeditReadOnly(bool b)
+{
+ m_pFindLineedit->setReadOnly(b);
+
+}
+
+
+void KviScriptEditorImplementation::updateRowColLabel()
+{
+ int iRow,iCol;
+ m_pEditor->getCursorPosition(&iRow,&iCol);
+ if(iRow != m_lastCursorPos.x() || iCol != m_lastCursorPos.y())
+ {
+ m_lastCursorPos = QPoint(iRow,iCol);
+ QString tmp;
+ KviQString::sprintf(tmp,__tr2qs_ctx("Row: %d Col: %d","editor"),iRow,iCol);
+ m_pRowColLabel->setText(tmp);
+ }
+}
+
+QPoint KviScriptEditorImplementation::getCursor()
+{
+ return m_lastCursorPos;
+}
+void KviScriptEditorImplementation::setCursorPosition(QPoint pos)
+{
+ m_pEditor->setCursorPosition(pos.x(),pos.y());
+ m_pEditor->setFocus();
+ m_pEditor->ensureCursorVisible();
+ QString tmp;
+ KviQString::sprintf(tmp,__tr2qs_ctx("Row: %d Col: %d","editor"),pos.x(),pos.y());
+ m_pRowColLabel->setText(tmp);
+
+ m_lastCursorPos=pos;
+}
+
+void KviScriptEditorImplementation::loadFromFile()
+{
+ QString fName;
+ if(KviFileDialog::askForOpenFileName(fName,
+ __tr2qs_ctx("Load Script File - KVIrc","editor"),
+ QString::null,
+ QString::null,false,true))
+ {
+ QString buffer;
+ if(KviFileUtils::loadFile(fName,buffer))
+ {
+ m_pEditor->setText(buffer);
+ m_pEditor->moveCursor(KviTalTextEdit::MoveEnd,false);
+ updateRowColLabel();
+ } else {
+ QString tmp;
+ QMessageBox::warning(this,
+ __tr2qs_ctx("Open Failed - KVIrc","editor"),
+ KviQString::sprintf(tmp,__tr2qs_ctx("Can't open the file %s for reading.","editor"),&fName));
+ }
+ }
+}
+
+void KviScriptEditorImplementation::configureColors()
+{
+ KviScriptEditorWidgetColorOptions dlg(this);
+ if(dlg.exec() == QDialog::Accepted)
+
+ {
+ m_pEditor->updateOptions();
+ saveOptions();
+ }
+}
+KviScriptEditorReplaceDialog::KviScriptEditorReplaceDialog( QWidget* parent, const char* name)
+ : QDialog( parent)
+{
+ m_pParent=parent;
+ emit initFind();
+ setPaletteForegroundColor( QColor( 0, 0, 0 ) );
+ setPaletteBackgroundColor( QColor( 236, 233, 216 ) );
+ QGridLayout *layout = new QGridLayout( this, 1, 1, 11, 6, "replace layout");
+
+ m_pFindlineedit = new QLineEdit( this, "findlineedit" );
+#ifndef COMPILE_USE_QT4
+ m_pFindlineedit->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, m_pFindlineedit->sizePolicy().hasHeightForWidth() ) );
+ m_pFindlineedit->setFrameShape( QLineEdit::LineEditPanel );
+ m_pFindlineedit->setFrameShadow( QLineEdit::Sunken );
+#endif
+
+ layout->addMultiCellWidget( m_pFindlineedit, 2, 2, 1, 2 );
+
+ m_pReplacelineedit = new QLineEdit( this, "replacelineedit" );
+#ifndef COMPILE_USE_QT4
+ m_pReplacelineedit->setFrameShape( QLineEdit::LineEditPanel );
+ m_pReplacelineedit->setFrameShadow( QLineEdit::Sunken );
+#endif
+ layout->addMultiCellWidget( m_pReplacelineedit, 3, 3, 1, 2 );
+
+ m_pFindlineedit->setFocus();
+
+ QLabel *findlabel = new QLabel( this, "findlabel" );
+ findlabel->setText(tr("Word to Find"));
+#ifndef COMPILE_USE_QT4
+ findlabel->setAutoResize(true);
+#endif
+
+ layout->addWidget( findlabel, 2, 0 );
+
+ QLabel *replacelabel = new QLabel( this, "replacelabel" );
+ replacelabel->setText(tr("Replace with"));
+#ifndef COMPILE_USE_QT4
+ replacelabel->setAutoResize(true);
+#endif
+ layout->addWidget( replacelabel, 3, 0 );
+
+ QPushButton *cancelbutton = new QPushButton( this, "cancelButton" );
+ cancelbutton->setText(tr("&Cancel"));
+ layout->addWidget( cancelbutton, 5, 2 );
+
+ replacebutton = new QPushButton( this, "replacebutton" );
+ replacebutton->setText(tr("&Replace"));
+ replacebutton->setEnabled( FALSE );
+ layout->addWidget( replacebutton, 5, 0 );
+
+ checkReplaceAll = new KviStyledCheckBox( this, "replaceAll" );
+ checkReplaceAll->setText(tr("&Replace in all Aliases"));
+ layout->addWidget( checkReplaceAll, 4, 0 );
+
+ findNext = new QPushButton(this, "findNext(WIP)" );
+ findNext->setText(tr("&Findnext"));
+ layout->addWidget( findNext, 2, 3 );
+ findNext->setEnabled(false);
+
+ replace = new QPushButton(this, "replace" );
+ replace->setText(tr("&Replace(WIP)"));
+ layout->addWidget( replace, 3, 3 );
+ replace->setEnabled(false);
+
+#ifndef COMPILE_USE_QT4
+ clearWState( WState_Polished );
+ setTabOrder(m_pFindlineedit,m_pReplacelineedit);
+#endif
+ // signals and slots connections
+ connect( replacebutton, SIGNAL( clicked() ), this, SLOT( slotReplace() ) );
+ connect( findNext, SIGNAL( clicked() ),this,SLOT( slotNextFind()));
+ connect( cancelbutton, SIGNAL( clicked() ), this, SLOT( reject() ) );
+ connect( m_pFindlineedit, SIGNAL( textChanged(const QString &)), this, SLOT( textChanged(const QString &)));
+
+}
+
+
+KviScriptEditorReplaceDialog::~KviScriptEditorReplaceDialog()
+{
+}
+
+void KviScriptEditorReplaceDialog::textChanged(const QString &txt)
+{
+ if (!txt.isEmpty()) replacebutton->setEnabled(TRUE);
+ else replacebutton->setEnabled(FALSE);
+
+}
+void KviScriptEditorReplaceDialog::slotReplace()
+{
+ QString txt=((KviScriptEditorWidget *)m_pParent)->text();
+ if (checkReplaceAll->isChecked()) emit replaceAll(m_pFindlineedit->text(),m_pReplacelineedit->text());
+ txt.replace(m_pFindlineedit->text(),m_pReplacelineedit->text(),false);
+ ((KviScriptEditorWidget *)m_pParent)->setText(txt);
+ ((KviScriptEditorWidget *)m_pParent)->setModified(true);
+ m_pFindlineedit->setText("");
+ m_pReplacelineedit->setText("");
+ setTabOrder(m_pFindlineedit,m_pReplacelineedit);
+}
+
+
+void KviScriptEditorReplaceDialog::slotNextFind()
+{
+ emit nextFind(m_pFindlineedit->text());
+}
diff --git a/src/modules/editor/scripteditor.h b/src/modules/editor/scripteditor.h
new file mode 100644
index 00000000..d7bc435f
--- /dev/null
+++ b/src/modules/editor/scripteditor.h
@@ -0,0 +1,200 @@
+#ifndef _SCRIPTEDITOR_H_
+#define _SCRIPTEDITOR_H_
+
+//=============================================================================
+//
+// File : scripteditor.h
+// Created on Sun Mar 28 1999 16:11:48 CEST by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 1999-2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_scripteditor.h"
+
+#include <qlabel.h>
+#include <kvi_tal_textedit.h>
+#include <qsyntaxhighlighter.h>
+#include <qdialog.h>
+#include <qcheckbox.h>
+#include "kvi_tal_listbox.h"
+#include <qevent.h>
+#include "kvi_qcstring.h"
+
+#include "kvi_tal_popupmenu.h"
+
+#include "kvi_pointerlist.h"
+#include "kvi_selectors.h"
+typedef KviPointerList<int> ColumnList;
+
+class KviCompletionBox: public KviTalListBox
+{
+ Q_OBJECT
+public:
+ KviCompletionBox(QWidget * parent);
+ ~KviCompletionBox(){};
+
+ void updateContents(QString word);
+protected:
+ virtual void keyPressEvent(QKeyEvent * e);
+};
+
+class KviScriptEditorWidget : public KviTalTextEdit
+{
+ Q_OBJECT
+ Q_PROPERTY(bool contextSensitiveHelp READ contextSensitiveHelp)
+public:
+ KviScriptEditorWidget(QWidget * pParent);
+ virtual ~KviScriptEditorWidget();
+public:
+ void updateOptions();
+ void find1();
+ QString m_szFind;
+ KviCompletionBox *completelistbox;
+ void completition(bool bCanComplete = 1);
+ void getWordBeforeCursor(QString &buffer,int index,bool *);
+ void getWordOnCursor(QString &buffer,int index) const;
+ bool contextSensitiveHelp() const;
+public slots:
+ void slotFind();
+ void slotHelp();
+ void slotReplace();
+ void slotComplete(const QString &str);
+
+signals:
+ void keyPressed();
+protected:
+ virtual void keyPressEvent(QKeyEvent * e);
+ void contentsMousePressEvent(QMouseEvent *);
+#ifdef COMPILE_USE_QT4
+ Q3PopupMenu *createPopupMenu( const QPoint& pos );
+#else
+ QPopupMenu *createPopupMenu( const QPoint& pos );
+#endif
+ QWidget *m_pParent;
+ QString m_szHelp;
+
+};
+
+#ifdef COMPILE_USE_QT4
+ #include <q3syntaxhighlighter.h>
+ #define QSyntaxHighlighter Q3SyntaxHighlighter
+#else
+ #include <qobjectlist.h>
+#endif
+class KviScriptSyntaxHighlighter : public QSyntaxHighlighter
+{
+public:
+ KviScriptSyntaxHighlighter(KviScriptEditorWidget * pWidget);
+ virtual ~KviScriptSyntaxHighlighter();
+public:
+ virtual int highlightParagraph(const QString & text,int endStateOfLastPara);
+};
+
+class KviScriptEditorWidgetColorOptions : public QDialog
+{
+ Q_OBJECT
+public:
+ KviScriptEditorWidgetColorOptions(QWidget * pParent);
+ ~KviScriptEditorWidgetColorOptions();
+private:
+ KviPointerList<KviSelectorInterface> * m_pSelectorInterfaceList;
+protected:
+ KviColorSelector * addColorSelector(QWidget * pParent,const QString & txt,QColor * pOption,bool bEnabled);
+
+protected slots:
+ void okClicked();
+};
+
+class QTimer;
+
+class KviScriptEditorImplementation : public KviScriptEditor
+{
+ Q_OBJECT
+public:
+ KviScriptEditorImplementation(QWidget * par);
+ virtual ~KviScriptEditorImplementation();
+protected:
+ KviScriptEditorWidget * m_pEditor;
+ QLabel * m_pRowColLabel;
+ QPoint m_lastCursorPos;
+public:
+ virtual void setText(const QString &txt);
+ virtual void getText(QString &txt);
+ virtual void setText(const KviQCString &txt);
+ virtual void getText(KviQCString &txt);
+ virtual void setFindText(const QString & text);
+ virtual void setEnabled(bool bEnabled);
+ virtual void setFocus();
+ virtual bool isModified();
+ void setFindLineeditReadOnly(bool b);
+ void setCursorPosition(QPoint);
+ QPoint getCursor();
+ QLineEdit *m_pFindlineedit;
+ QLineEdit * getFindlineedit();
+protected:
+ virtual void focusInEvent(QFocusEvent *e);
+ void loadOptions();
+ void saveOptions();
+protected slots:
+ void saveToFile();
+ void loadFromFile();
+ void configureColors();
+ void updateRowColLabel();
+ void slotFind();
+ void slotReplaceAll(const QString &,const QString &);
+ void slotInitFind();
+ void slotNextFind(const QString &);
+signals:
+ void find( const QString &);
+ void replaceAll( const QString &, const QString &);
+ void initFind();
+ void nextFind(const QString &);
+};
+
+class KviScriptEditorReplaceDialog: public QDialog
+{
+ Q_OBJECT
+public:
+ KviScriptEditorReplaceDialog( QWidget* parent = 0, const char* name = 0);
+ ~KviScriptEditorReplaceDialog();
+ QLineEdit *m_pFindlineedit;
+ QLineEdit *m_pReplacelineedit;
+protected:
+ QLabel *findlabel;
+ QLabel *replacelabel;
+ QPushButton *replacebutton;
+ QPushButton *replace;
+ QPushButton *findNext;
+
+// QPushButton *cancelbutton;
+ KviStyledCheckBox *checkReplaceAll;
+ QWidget *m_pParent;
+protected slots:
+ void textChanged(const QString &);
+ void slotReplace();
+ void slotNextFind();
+signals:
+ void replaceAll( const QString &,const QString &);
+ void initFind();
+ void nextFind(const QString &);
+
+};
+
+
+#endif //!_SCRIPTEDITOR_H_
diff --git a/src/modules/eventeditor/Makefile.am b/src/modules/eventeditor/Makefile.am
new file mode 100644
index 00000000..ceb7541a
--- /dev/null
+++ b/src/modules/eventeditor/Makefile.am
@@ -0,0 +1,21 @@
+###############################################################################
+# KVirc IRC client Makeeventeditor - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvieventeditor.la
+
+libkvieventeditor_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvieventeditor_la_SOURCES = libkvieventeditor.cpp eventeditor.cpp
+nodist_libkvieventeditor_la_SOURCES = moc_eventeditor.cpp
+
+noinst_HEADERS = eventeditor.h
+libkvieventeditor_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+# noinst_HEADERS=
+
+moc_eventeditor.cpp: eventeditor.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/eventeditor/eventeditor.cpp b/src/modules/eventeditor/eventeditor.cpp
new file mode 100644
index 00000000..bedeca5f
--- /dev/null
+++ b/src/modules/eventeditor/eventeditor.cpp
@@ -0,0 +1,536 @@
+//
+// File : eventeditor.cpp
+// Creation date : Mon Dec 23 2002 20:28:18 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the linkss of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include "eventeditor.h"
+
+#include "kvi_iconmanager.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_imagedialog.h"
+#include "kvi_config.h"
+#include "kvi_filedialog.h"
+#include "kvi_fileutils.h"
+#include "kvi_scripteditor.h"
+#include "kvi_debug.h"
+//#include "kvi_event.h"
+#include "kvi_app.h"
+#include "kvi_cmdformatter.h"
+//#include "kvi_eventhandler.h"
+#include "kvi_qstring.h"
+#include "kvi_filedialog.h"
+
+#include "kvi_kvs_eventmanager.h"
+
+#include <qmessagebox.h>
+
+#include <qsplitter.h>
+#include <qlayout.h>
+#include "kvi_tal_vbox.h"
+#include "kvi_tal_popupmenu.h"
+#include <qtooltip.h>
+#include <qpushbutton.h>
+#include <qevent.h>
+
+extern KviEventEditorWindow * g_pEventEditorWindow;
+
+
+
+const QPixmap * KviEventListViewItem::pixmap(int col) const
+{
+ return g_pIconManager->getSmallIcon(firstChild() ? KVI_SMALLICON_EVENT : KVI_SMALLICON_EVENTNOHANDLERS);
+}
+
+const QPixmap * KviEventHandlerListViewItem::pixmap(int col) const
+{
+ return g_pIconManager->getSmallIcon(m_bEnabled ? KVI_SMALLICON_HANDLER : KVI_SMALLICON_HANDLERDISABLED);
+}
+
+
+
+KviEventEditor::KviEventEditor(QWidget * par)
+: QWidget(par,"event_editor")
+{
+ QGridLayout * l = new QGridLayout(this,1,1,2,2);
+
+ QSplitter * spl = new QSplitter(Qt::Horizontal,this);
+ spl->setOpaqueResize(false);
+
+ l->addWidget(spl,0,0);
+
+ KviTalVBox * boxi = new KviTalVBox(spl);
+ m_pListView = new KviTalListView(boxi);
+ m_pListView->addColumn(__tr2qs("Event"));
+ m_pListView->setMultiSelection(false);
+ m_pListView->setShowSortIndicator(true);
+ m_pListView->setRootIsDecorated(true);
+
+ QPushButton * pb = new QPushButton(__tr2qs("&Export All To..."),boxi);
+ connect(pb,SIGNAL(clicked()),this,SLOT(exportAllEvents()));
+
+ KviTalVBox * box = new KviTalVBox(spl);
+ m_pNameEditor = new QLineEdit(box);
+ QToolTip::add(m_pNameEditor,__tr2qs("Edit the event handler name."));
+ m_pEditor = KviScriptEditor::createInstance(box);
+ m_pEditor->setFocus();
+
+ m_bOneTimeSetupDone = false;
+ m_pLastEditedItem = 0;
+}
+
+KviEventEditor::~KviEventEditor()
+{
+ KviScriptEditor::destroyInstance(m_pEditor);
+}
+
+void KviEventEditor::oneTimeSetup()
+{
+ if(m_bOneTimeSetupDone)return;
+ m_bOneTimeSetupDone = true;
+
+ KviEventListViewItem * it;
+ KviEventHandlerListViewItem * ch;
+
+ for(unsigned int i = 0;i < KVI_KVS_NUM_APP_EVENTS;i++)
+ {
+ KviKvsEvent * e = KviKvsEventManager::instance()->appEvent(i);
+ it = new KviEventListViewItem(m_pListView,i,e->name(),e->parameterDescription());
+ if(KviPointerList<KviKvsEventHandler> * l = e->handlers())
+ {
+ for(KviKvsEventHandler * s = l->first();s;s = l->next())
+ {
+ if(s->type() == KviKvsEventHandler::Script)
+ {
+ ch = new KviEventHandlerListViewItem(it,((KviKvsScriptEventHandler *)s)->name(),
+ ((KviKvsScriptEventHandler *)s)->code(),((KviKvsScriptEventHandler *)s)->isEnabled());
+ }
+ }
+ it->setOpen(true);
+ }
+ }
+
+
+ m_pContextPopup = new KviTalPopupMenu(this);
+
+ connect(m_pListView,SIGNAL(selectionChanged(KviTalListViewItem *)),this,SLOT(selectionChanged(KviTalListViewItem *)));
+ connect(m_pListView,SIGNAL(rightButtonPressed(KviTalListViewItem *,const QPoint &,int)),
+ this,SLOT(itemPressed(KviTalListViewItem *,const QPoint &,int)));
+}
+
+void KviEventEditor::itemPressed(KviTalListViewItem *it,const QPoint &pnt,int col)
+{
+ __range_valid(m_bOneTimeSetupDone);
+
+ if(it)
+ {
+ m_pContextPopup->clear();
+ if(it->parent())
+ {
+ QString tmp;
+ if(!(((KviEventHandlerListViewItem *)it)->m_bEnabled))
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_HANDLER)),
+ __tr2qs("&Enable Handler"),this,SLOT(toggleCurrentHandlerEnabled()));
+ else
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_HANDLERDISABLED)),
+ __tr2qs("&Disable Handler"),this,SLOT(toggleCurrentHandlerEnabled()));
+
+ //m_pContextPopup->setItemChecked(id,((KviEventHandlerListViewItem *)it)->m_bEnabled);
+
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_QUIT)),
+ __tr2qs("Re&move Handler"),
+ this,SLOT(removeCurrentHandler()));
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_FOLDER)),
+ __tr2qs("&Export Handler To..."),
+ this,SLOT(exportCurrentHandler()));
+ } else {
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_HANDLER)),
+ __tr2qs("&New Handler"),
+ this,SLOT(addHandlerForCurrentEvent()));
+ }
+
+ m_pContextPopup->popup(pnt);
+ }
+}
+
+void KviEventEditor::getUniqueHandlerName(KviEventListViewItem *it,QString &buffer)
+{
+ __range_valid(m_bOneTimeSetupDone);
+
+ QString newName = buffer;
+ if(newName.isEmpty())newName = __tr2qs("unnamed");
+
+ bool bFound = true;
+ int idx = 1;
+
+ while(bFound)
+ {
+ bFound = false;
+
+ for(KviEventHandlerListViewItem * ch = (KviEventHandlerListViewItem *)(it->firstChild());ch;ch = (KviEventHandlerListViewItem *)ch->nextSibling())
+ {
+ if(KviQString::equalCI(newName,ch->m_szName))
+ {
+ bFound = true;
+ KviQString::sprintf(newName,"%Q_%d",&buffer,idx);
+ idx++;
+ break;
+ }
+ }
+ }
+
+ buffer = newName;
+}
+
+void KviEventEditor::addHandlerForCurrentEvent()
+{
+ __range_valid(m_pOneTimeSetupDone);
+
+ KviTalListViewItem * it = m_pListView->selectedItem();
+ if(it)
+ {
+ if(it->parent() == 0)
+ {
+ QString buffer = __tr2qs("default");
+ getUniqueHandlerName((KviEventListViewItem *)it,buffer);
+ KviTalListViewItem * ch = new KviEventHandlerListViewItem(it,buffer,"",true);
+ it->setOpen(true);
+ m_pListView->setSelected(ch,true);
+ }
+ }
+}
+
+void KviEventEditor::removeCurrentHandler()
+{
+ __range_valid(m_pOneTimeSetupDone);
+ if(m_pLastEditedItem)
+ {
+ KviTalListViewItem * it = m_pLastEditedItem;
+ m_pLastEditedItem = 0;
+ delete it;
+ m_pEditor->setEnabled(false);
+ m_pNameEditor->setEnabled(false);
+ }
+}
+
+void KviEventEditor::toggleCurrentHandlerEnabled()
+{
+ __range_valid(m_pOneTimeSetupDone);
+ if(m_pLastEditedItem)
+ {
+ m_pLastEditedItem->m_bEnabled = !(m_pLastEditedItem->m_bEnabled);
+ m_pListView->repaintItem(m_pLastEditedItem);
+ selectionChanged(m_pLastEditedItem);
+ }
+}
+
+void KviEventEditor::commit()
+{
+ if(!m_bOneTimeSetupDone)return; // nothing to commit
+
+ saveLastEditedItem();
+ KviKvsEventManager::instance()->removeAllScriptAppHandlers();
+ for(KviTalListViewItem * it = m_pListView->firstChild();it;it = it->nextSibling())
+ {
+ if(it->firstChild())
+ {
+ QString szContext;
+
+ for(KviTalListViewItem * ch = it->firstChild();ch;ch = ch->nextSibling())
+ {
+ KviQString::sprintf(szContext,"%Q::%Q",&(((KviEventListViewItem *)it)->m_szName),&(((KviEventHandlerListViewItem *)ch)->m_szName));
+
+ KviKvsScriptEventHandler * s = KviKvsScriptEventHandler::createInstance( // msvc workaround
+ ((KviEventHandlerListViewItem *)ch)->m_szName,
+ szContext,
+ ((KviEventHandlerListViewItem *)ch)->m_szBuffer,
+ ((KviEventHandlerListViewItem *)ch)->m_bEnabled
+ );
+
+ KviKvsEventManager::instance()->addAppHandler(((KviEventListViewItem *)it)->m_uEventIdx,s);
+ }
+ }
+ }
+
+ g_pApp->saveAppEvents();
+}
+
+void KviEventEditor::saveLastEditedItem()
+{
+ __range_valid(m_bOneTimeSetupDone);
+ if(!m_pLastEditedItem)return;
+
+ QString buffer = m_pNameEditor->text();
+ if(!KviQString::equalCI(buffer,m_pLastEditedItem->m_szName))
+ {
+ getUniqueHandlerName((KviEventListViewItem *)(m_pLastEditedItem->parent()),buffer);
+ }
+
+ m_pLastEditedItem->m_szName = buffer;
+ QString tmp;
+ m_pEditor->getText(tmp);
+
+ m_pLastEditedItem->m_szBuffer = tmp;
+}
+
+void KviEventEditor::selectionChanged(KviTalListViewItem * it)
+{
+ __range_valid(m_bOneTimeSetupDone);
+ saveLastEditedItem();
+ if(it->parent())
+ {
+ m_pLastEditedItem = (KviEventHandlerListViewItem *)it;
+ m_pNameEditor->setEnabled(true);
+ m_pNameEditor->setText(it->text(0));
+ m_pEditor->setEnabled(true);
+ m_pEditor->setText(((KviEventHandlerListViewItem *)it)->m_szBuffer);
+ } else {
+ m_pLastEditedItem = 0;
+ m_pNameEditor->setEnabled(false);
+ m_pNameEditor->setText("");
+ m_pEditor->setEnabled(false);
+ QString parms = ((KviEventListViewItem *)it)->m_szParams;
+ if(parms.isEmpty())parms = __tr2qs("none");
+ KviCommandFormatter::indent(parms);
+ KviCommandFormatter::indent(parms);
+ QString tmp;
+ KviQString::sprintf(tmp,__tr2qs("\n\n Event:\n %s\n\n Parameters:\n%s"),
+ ((KviEventListViewItem *)it)->m_szName.utf8().data(),parms.utf8().data());
+ m_pEditor->setText(tmp);
+ }
+}
+
+void KviEventEditor::showEvent(QShowEvent *e)
+{
+ oneTimeSetup();
+ QWidget::showEvent(e);
+}
+
+
+void KviEventEditor::getExportEventBuffer(QString &buffer,KviEventHandlerListViewItem * it)
+{
+ if(!it->parent())return;
+
+ QString szBuf = it->m_szBuffer;
+
+ KviCommandFormatter::blockFromBuffer(szBuf);
+
+ buffer = "event(";
+ buffer += ((KviEventListViewItem *)(it->parent()))->m_szName;
+ buffer += ",";
+ buffer += it->m_szName;
+ buffer += ")\n";
+ buffer += szBuf;
+ buffer += "\n";
+
+ if(!it->m_bEnabled)
+ {
+ buffer += "\n";
+ buffer += "eventctl -d ";
+ buffer += ((KviEventListViewItem *)(it->parent()))->m_szName;
+ buffer += " ";
+ buffer += it->m_szName;
+ }
+}
+
+void KviEventEditor::exportCurrentHandler()
+{
+ if(!m_pLastEditedItem)return;
+ saveLastEditedItem();
+ if(!m_pLastEditedItem)return;
+
+ QString szName = QDir::homeDirPath();
+ if(!szName.endsWith(QString(KVI_PATH_SEPARATOR)))szName += KVI_PATH_SEPARATOR;
+ szName += ((KviEventListViewItem *)(m_pLastEditedItem->parent()))->m_szName;
+ szName += ".";
+ szName += m_pLastEditedItem->m_szName;
+ szName += ".kvs";
+
+ QString szFile;
+
+ if(!KviFileDialog::askForSaveFileName(szFile,__tr2qs("Choose a Filename - KVIrc"),szName,"*.kvs",true,true,true))return;
+
+ QString szOut;
+ getExportEventBuffer(szOut,m_pLastEditedItem);
+
+ if(!KviFileUtils::writeFile(szFile,szOut))
+ {
+ QMessageBox::warning(this,__tr2qs("Write Failed - KVIrc"),__tr2qs("Unable to write to the event file."),__tr2qs("&OK"));
+ }
+}
+
+void KviEventEditor::exportAllEvents()
+{
+ saveLastEditedItem();
+
+ KviEventListViewItem * it = (KviEventListViewItem *)m_pListView->firstChild();
+
+ QString out;
+
+ while(it)
+ {
+ KviEventHandlerListViewItem * item = (KviEventHandlerListViewItem *)it->firstChild();
+ while(item)
+ {
+ QString tmp;
+ getExportEventBuffer(tmp,item);
+ out += tmp;
+ out += "\n";
+ item = (KviEventHandlerListViewItem *)item->nextSibling();
+ }
+ it = (KviEventListViewItem *)it->nextSibling();
+ }
+
+ QString szName = QDir::homeDirPath();
+ if(!szName.endsWith(QString(KVI_PATH_SEPARATOR)))szName += KVI_PATH_SEPARATOR;
+ szName += "events.kvs";
+
+ QString szFile;
+
+ if(!KviFileDialog::askForSaveFileName(szFile,__tr2qs("Choose a Filename - KVIrc"),szName,QString::null,true,true))return;
+
+ if(!KviFileUtils::writeFile(szFile,out))
+ {
+ QMessageBox::warning(this,__tr2qs("Write Failed - KVIrc"),__tr2qs("Unable to write to the events file."),__tr2qs("Ok"));
+ }
+}
+
+
+
+
+KviEventEditorWindow::KviEventEditorWindow(KviFrame * lpFrm)
+: KviWindow(KVI_WINDOW_TYPE_SCRIPTEDITOR,lpFrm,"eventeditor",0)
+{
+ g_pEventEditorWindow = this;
+
+ m_pEditor = new KviEventEditor(this);
+
+ m_pBase = new QWidget(this);
+ QGridLayout * g = new QGridLayout(m_pBase,1,4,4,4);
+
+ QPushButton * btn = new QPushButton(__tr2qs("&OK"),m_pBase);
+ connect(btn,SIGNAL(clicked()),this,SLOT(okClicked()));
+ btn->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ACCEPT)));
+ g->addWidget(btn,0,1);
+
+ btn = new QPushButton(__tr2qs("&Apply"),m_pBase);
+ connect(btn,SIGNAL(clicked()),this,SLOT(applyClicked()));
+ btn->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ACCEPT)));
+ g->addWidget(btn,0,2);
+
+ btn = new QPushButton(__tr2qs("Cancel"),m_pBase);
+ connect(btn,SIGNAL(clicked()),this,SLOT(cancelClicked()));
+ btn->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DISCARD)));
+ g->addWidget(btn,0,3);
+
+ g->setColStretch(0,1);
+}
+
+KviEventEditorWindow::~KviEventEditorWindow()
+{
+ g_pEventEditorWindow = 0;
+}
+
+void KviEventEditorWindow::okClicked()
+{
+ m_pEditor->commit();
+ close();
+}
+
+void KviEventEditorWindow::applyClicked()
+{
+ m_pEditor->commit();
+}
+
+void KviEventEditorWindow::cancelClicked()
+{
+ close();
+}
+
+
+QPixmap * KviEventEditorWindow::myIconPtr()
+{
+ return g_pIconManager->getSmallIcon(KVI_SMALLICON_EVENT);
+}
+
+void KviEventEditorWindow::resizeEvent(QResizeEvent *e)
+{
+ int hght = m_pBase->sizeHint().height();
+ m_pEditor->setGeometry(0,0,width(),height()- hght);
+ m_pBase->setGeometry(0,height() - hght,width(),hght);
+}
+
+void KviEventEditorWindow::fillCaptionBuffers()
+{
+ m_szPlainTextCaption = __tr2qs("Event Editor");
+
+ static QString p1("<nobr><font color=\"");
+ static QString p2("\"><b>");
+ static QString p3("</b></font></nobr>");
+
+ m_szHtmlActiveCaption = p1;
+ m_szHtmlActiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name();
+ m_szHtmlActiveCaption += p2;
+ m_szHtmlActiveCaption += m_szPlainTextCaption;
+ m_szHtmlActiveCaption += p3;
+
+ m_szHtmlInactiveCaption = p1;
+ m_szHtmlInactiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name();
+ m_szHtmlInactiveCaption += p2;
+ m_szHtmlInactiveCaption += m_szPlainTextCaption;
+ m_szHtmlInactiveCaption += p3;
+}
+
+
+void KviEventEditorWindow::getConfigGroupName(KviStr &szName)
+{
+ szName = "eventeditor";
+}
+
+
+void KviEventEditorWindow::saveProperties(KviConfig *cfg)
+{
+/*
+#ifdef COMPILE_SCRIPTTOOLBAR
+ cfg->writeEntry("Sizes",m_pEditor->sizes());
+ cfg->writeEntry("LastEvent",m_pEditor->lastEditedEvent().ptr());
+ //debug("LAST EDITED=%s",m_pEditor->lastEditedEvent().ptr());
+#endif // COMPILE_SCRIPTTOOLBAR
+*/
+}
+
+void KviEventEditorWindow::loadProperties(KviConfig *cfg)
+{
+/*
+#ifdef COMPILE_SCRIPTTOOLBAR
+ QValueList<int> def;
+ def.append(20);
+ def.append(80);
+ m_pEditor->setSizes(cfg->readIntListEntry("Sizes",def));
+ KviStr tmp = cfg->readEntry("LastEvent","");
+ m_pEditor->editEvent(tmp);
+ //debug("LAST EDITED WAS %s",tmp.ptr());
+#endif // COMPILE_SCRIPTTOOLBAR
+*/
+}
diff --git a/src/modules/eventeditor/eventeditor.h b/src/modules/eventeditor/eventeditor.h
new file mode 100644
index 00000000..d94a07cc
--- /dev/null
+++ b/src/modules/eventeditor/eventeditor.h
@@ -0,0 +1,120 @@
+#ifndef _EVENTEDITOR_H_
+#define _EVENTEDITOR_H_
+//
+// File : eventeditor.h
+// Creation date : Mon Dec 23 2002 20:24:55 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the linkss of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_window.h"
+#include "kvi_string.h"
+
+#include <qwidget.h>
+#include "kvi_tal_listview.h"
+#include <qlineedit.h>
+
+class KviScriptEditor;
+
+class KviEventListViewItem : public KviTalListViewItem
+{
+public:
+ unsigned int m_uEventIdx;
+ QString m_szName;
+ QString m_szParams;
+public:
+ KviEventListViewItem(KviTalListView * par,unsigned int uEvIdx,const QString &name,const QString &params)
+ : KviTalListViewItem(par), m_uEventIdx(uEvIdx), m_szName(name), m_szParams(params) {};
+ ~KviEventListViewItem() {};
+public:
+ virtual QString text(int col) const { return m_szName; };
+ virtual const QPixmap * pixmap(int col) const;
+};
+
+class KviEventHandlerListViewItem : public KviTalListViewItem
+{
+public:
+ QString m_szName;
+ QString m_szBuffer;
+ bool m_bEnabled;
+public:
+ KviEventHandlerListViewItem(KviTalListViewItem * par,const QString &name,const QString &buffer,bool bEnabled)
+ : KviTalListViewItem(par), m_szName(name) , m_szBuffer(buffer) , m_bEnabled(bEnabled) {};
+ ~KviEventHandlerListViewItem() {};
+public:
+ virtual QString text(int col) const { return m_szName; };
+ virtual const QPixmap * pixmap(int col) const;
+};
+
+class KviTalPopupMenu;
+
+class KviEventEditor : public QWidget
+{
+ Q_OBJECT
+public:
+ KviEventEditor(QWidget * par);
+ ~KviEventEditor();
+public:
+ KviScriptEditor * m_pEditor;
+ KviTalListView * m_pListView;
+ QLineEdit * m_pNameEditor;
+ KviTalPopupMenu * m_pContextPopup;
+ KviEventHandlerListViewItem * m_pLastEditedItem;
+ bool m_bOneTimeSetupDone;
+public:
+ void commit();
+ void saveLastEditedItem();
+ void getUniqueHandlerName(KviEventListViewItem *it,QString &buffer);
+ void getExportEventBuffer(QString &szBuffer,KviEventHandlerListViewItem * it);
+protected slots:
+ void selectionChanged(KviTalListViewItem *it);
+ void itemPressed(KviTalListViewItem *it,const QPoint &pnt,int col);
+ void toggleCurrentHandlerEnabled();
+ void removeCurrentHandler();
+ void addHandlerForCurrentEvent();
+ void exportAllEvents();
+ void exportCurrentHandler();
+protected:
+ void showEvent(QShowEvent *e);
+private:
+ void oneTimeSetup();
+};
+
+class KviEventEditorWindow : public KviWindow
+{
+ Q_OBJECT
+public:
+ KviEventEditorWindow(KviFrame * lpFrm);
+ ~KviEventEditorWindow();
+protected:
+ KviEventEditor * m_pEditor;
+ QWidget * m_pBase;
+protected:
+ virtual QPixmap * myIconPtr();
+ virtual void fillCaptionBuffers();
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual void getConfigGroupName(KviStr &szName);
+ virtual void saveProperties(KviConfig *);
+ virtual void loadProperties(KviConfig *);
+protected slots:
+ void cancelClicked();
+ void okClicked();
+ void applyClicked();
+};
+
+#endif //_EVENTEDITOR_H_
diff --git a/src/modules/eventeditor/libkvieventeditor.cpp b/src/modules/eventeditor/libkvieventeditor.cpp
new file mode 100644
index 00000000..62111cad
--- /dev/null
+++ b/src/modules/eventeditor/libkvieventeditor.cpp
@@ -0,0 +1,88 @@
+//
+// File : libkvieventeditor.cpp
+// Creation date : Mon 23 Dec 2002 20:23:59 2002 GMT by Szymon Stefanek
+//
+// This toolbar is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_module.h"
+#include "kvi_locale.h"
+#include "kvi_frame.h"
+
+#include "eventeditor.h"
+
+KviEventEditorWindow * g_pEventEditorWindow = 0;
+
+
+/*
+ @doc: eventeditor.open
+ @type:
+ command
+ @title:
+ eventeditor.open
+ @short:
+ Shows the event editor
+ @syntax:
+ toolbareditor.open
+ @description:
+ Opens the script event editor dialog.
+*/
+
+static bool eventeditor_kvs_cmd_open(KviKvsModuleCommandCall * c)
+{
+ if(!g_pEventEditorWindow)
+ {
+ g_pEventEditorWindow = new KviEventEditorWindow(c->window()->frame());
+ c->window()->frame()->addWindow(g_pEventEditorWindow);
+ }
+
+ g_pEventEditorWindow->setFocus();
+ return true;
+}
+
+static bool eventeditor_module_init(KviModule * m)
+{
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"open",eventeditor_kvs_cmd_open);
+
+ g_pEventEditorWindow = 0;
+ return true;
+}
+
+static bool eventeditor_module_can_unload(KviModule * m)
+{
+ return (g_pEventEditorWindow == 0);
+}
+
+static bool eventeditor_module_cleanup(KviModule *m)
+{
+ if(g_pEventEditorWindow)delete g_pEventEditorWindow;
+ g_pEventEditorWindow = 0;
+ return true;
+}
+
+KVIRC_MODULE(
+ "EventEditor", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "Editor for the script events",
+ eventeditor_module_init,
+ eventeditor_module_can_unload,
+ 0,
+ eventeditor_module_cleanup
+)
diff --git a/src/modules/file/Makefile.am b/src/modules/file/Makefile.am
new file mode 100644
index 00000000..1545a63a
--- /dev/null
+++ b/src/modules/file/Makefile.am
@@ -0,0 +1,18 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvifile.la
+
+libkvifile_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvifile_la_SOURCES = libkvifile.cpp
+libkvifile_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+# noinst_HEADERS=
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/file/libkvifile.cpp b/src/modules/file/libkvifile.cpp
new file mode 100644
index 00000000..8b8dd9ec
--- /dev/null
+++ b/src/modules/file/libkvifile.cpp
@@ -0,0 +1,1260 @@
+//=============================================================================
+//
+// File : libkvifile.cpp
+// Creation date : Fri Nov 9 03:27:59 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_module.h"
+#include "kvi_fileutils.h"
+#include "kvi_locale.h"
+#include "kvi_malloc.h"
+#include "kvi_app.h"
+#include "kvi_options.h"
+#include "kvi_qcstring.h"
+
+#include "kvi_kvs_arraycast.h"
+
+#include <qfileinfo.h>
+#include "kvi_file.h"
+#include <qdir.h>
+#include <qtextstream.h>
+
+/*
+ @doc: file.copy
+ @type:
+ command
+ @title:
+ file.copy
+ @keyterms:
+ copying files
+ @short:
+ Makes a copy of a file
+ @syntax:
+ file.copy [-o] <source:string> <destination:string>
+ @switches:
+ !sw: -o | --overwrite
+ Overwrites the file even if it already exists.
+ @description:
+ Makes a copy of the <source> file as <destination>.[br]
+ If the [-o] switch is used , the <destination> file is overwritten , if already exists.[br]
+ With no [-o] switch , this command does not overwrite files.[br]
+ The destination path must be already existing: if you want to ensure this, use [fnc]$file.mkdir[/fnc] first.[br]
+ The paths (<source> and <destination>) are adjusted according to the system that KVIrc
+ is running on so you don't have to bother about portability: it *should* be automatically
+ guaranteed. Just use UNIX style paths for them.[br]
+ @seealso:
+ [cmd]file.rename[/cmd], [fnc]$file.exists[/fnc]
+*/
+
+static bool file_kvs_cmd_copy(KviKvsModuleCommandCall * c)
+{
+ QString szSrc,szDst;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("source",KVS_PT_NONEMPTYSTRING,0,szSrc)
+ KVSM_PARAMETER("destination",KVS_PT_NONEMPTYSTRING,0,szDst)
+ KVSM_PARAMETERS_END(c)
+ KviFileUtils::adjustFilePath(szSrc);
+ KviFileUtils::adjustFilePath(szDst);
+ if(KviFileUtils::fileExists(szDst) && !c->switches()->find('o',"overwrite"))
+ {
+ c->warning(__tr2qs("Destinaion file exists: no copy made"));
+ return true;
+ }
+ if(!KviFileUtils::copyFile(szSrc,szDst))
+ {
+ c->warning(__tr2qs("Failed to copy from %Q to %Q"),&szSrc,&szDst);
+ c->warning(__tr2qs("Either the source doesn't exist or the destination can not be created"));
+ }
+ return true;
+}
+
+
+/*
+ @doc: file.addimagepath
+ @type:
+ command
+ @title:
+ file.addimagepath
+ @short:
+ Adds an image search path
+ @syntax:
+ file.addimagepath <path:string>
+ @description:
+ Adds <path> to the image search path list.[br]
+ KVIrc will look for images files (also) in that path (when a relative image file name is used).[br]
+ Yes, this function is a bit misplaced...
+ @seealso:
+ [cmd]file.delimagepath[/cmd]
+*/
+
+static bool file_kvs_cmd_addimagepath(KviKvsModuleCommandCall * c)
+{
+ QString szDst;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("path",KVS_PT_NONEMPTYSTRING,0,szDst)
+ KVSM_PARAMETERS_END(c)
+ KviFileUtils::adjustFilePath(szDst);
+
+ QStringList::Iterator it = KVI_OPTION_STRINGLIST(KviOption_stringlistImageSearchPaths).find(szDst);
+ if(it == KVI_OPTION_STRINGLIST(KviOption_stringlistImageSearchPaths).end())
+ KVI_OPTION_STRINGLIST(KviOption_stringlistImageSearchPaths).append(szDst);
+ return true;
+}
+
+
+
+/*
+ @doc: file.delimagepath
+ @type:
+ command
+ @title:
+ file.delimagepath
+ @short:
+ Removes an image search path
+ @syntax:
+ file.delimagepath <path:string>
+ @description:
+ Removes <path> from the image search path list.[br]
+ Yes, this function is a bit misplaced...
+ @seealso:
+ [cmd]file.addimagepath[/cmd]
+*/
+
+static bool file_kvs_cmd_delimagepath(KviKvsModuleCommandCall * c)
+{
+ QString szDst;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("path",KVS_PT_NONEMPTYSTRING,0,szDst)
+ KVSM_PARAMETERS_END(c)
+ KviFileUtils::adjustFilePath(szDst);
+
+ QStringList::Iterator it = KVI_OPTION_STRINGLIST(KviOption_stringlistImageSearchPaths).find(szDst);
+ if(it == KVI_OPTION_STRINGLIST(KviOption_stringlistImageSearchPaths).end())
+ KVI_OPTION_STRINGLIST(KviOption_stringlistImageSearchPaths).remove(szDst);
+ return true;
+}
+
+
+/*
+ @doc: file.write
+ @type:
+ command
+ @title:
+ file.write
+ @keyterms:
+ writing data to files
+ @short:
+ Writes an ascii data string to a file
+ @syntax:
+ file.write [-a] [-l] <filename:string> <data:string>
+ @switches:
+ !sw: -a | --append
+ If the file already exists, append the data instead of overwriting the original contents.
+ !sw: -l | --local-8-bit
+ Causes the file to be written in the local 8 bit character set instead of the
+ default utf8.
+ @description:
+ Writes <data> (which is an ASCII string) to the file <filename>.[br]
+ It does NOT append a traling LF character: if you want it you must explicitly specify it in the <data> parameter.[br]
+ -a causes the command to append the <data> to the file instead of overwriting the entire file.[br]
+ The path is adjusted according to the system that KVIrc
+ is running on so you don't have to bother about portability: it *should* be automatically
+ guaranteed. Just use UNIX style paths for them.[br]
+ The file is saved in utf8 unless the -l switch is specified (in that case the local 8 bit encoding is used).
+ Please note that uf8 is the only character set that preserves ALL the possible characters.
+ @seealso:
+ [cmd]file.rename[/cmd], [fnc]$file.exists[/fnc]
+*/
+
+static bool file_kvs_cmd_write(KviKvsModuleCommandCall * c)
+{
+ QString szFileName,szData;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("filename",KVS_PT_NONEMPTYSTRING,0,szFileName)
+ KVSM_PARAMETER("data",KVS_PT_NONEMPTYSTRING,0,szData)
+ KVSM_PARAMETERS_END(c)
+ KviFileUtils::adjustFilePath(szFileName);
+
+ bool bRet;
+ if(c->switches()->find('l',"local-8-bit"))
+ bRet = KviFileUtils::writeFileLocal8Bit(szFileName,szData,c->switches()->find('a',"append"));
+ else
+ bRet = KviFileUtils::writeFile(szFileName,szData,c->switches()->find('a',"append"));
+
+ if(!bRet)
+ c->warning(__tr2qs("Failed to write to file %Q: the destination couldn't be opened"),&szFileName);
+
+ return true;
+}
+
+
+/*
+ @doc: file.rename
+ @type:
+ command
+ @title:
+ file.rename
+ @keyterms:
+ copying files
+ @short:
+ Makes a copy of a file
+ @syntax:
+ file.rename <oldname:string> <newname:string>
+ @description:
+ Renames a file from <oldname> to <newname>.[br]
+ This command can also rename directories.[br]
+ If the <newname> file already exists , this command fails.[br]
+ The paths (<oldname> and <newname>) are adjusted according to the system that KVIrc
+ is running on so you don't have to bother about portability: it *should* be automatically
+ guaranteed.Just use UNIX style paths for them.[br]
+ @seealso:
+ [cmd]file.copy[/cmd], [fnc]$file.exists[/fnc]
+*/
+
+static bool file_kvs_cmd_rename(KviKvsModuleCommandCall * c)
+{
+ QString szOld,szNew;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("oldname",KVS_PT_NONEMPTYSTRING,0,szOld)
+ KVSM_PARAMETER("newname",KVS_PT_NONEMPTYSTRING,0,szNew)
+ KVSM_PARAMETERS_END(c)
+
+ KviFileUtils::adjustFilePath(szOld);
+ KviFileUtils::adjustFilePath(szNew);
+
+ if(KviFileUtils::fileExists(szNew))
+ c->warning(__tr2qs("Destination file exists: file not renamed"));
+
+ if(!KviFileUtils::renameFile(szOld,szNew))
+ c->warning(__tr2qs("Failed to rename %Q to %Q"),&szOld,&szNew);
+ return true;
+}
+
+
+/*
+ @doc: file.mkdir
+ @type:
+ command
+ @title:
+ file.mkdir
+ @keyterms:
+ creating directories
+ @short:
+ Creates a directory
+ @syntax:
+ file.mkdir <directory:string>
+ @description:
+ Creates the <directory>.[br]
+ The path is adjusted according to the system that KVIrc
+ is running on so you don't have to bother about portability: it *should* be automatically
+ guaranteed. Just use an UNIX style path.[br]
+ @seealso:
+ [fnc]$file.exists[/fnc]
+*/
+
+static bool file_kvs_cmd_mkdir(KviKvsModuleCommandCall * c)
+{
+ QString szDir;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("directory",KVS_PT_NONEMPTYSTRING,0,szDir)
+ KVSM_PARAMETERS_END(c)
+ KviFileUtils::adjustFilePath(szDir);
+ if(!KviFileUtils::makeDir(szDir))
+ c->warning(__tr2qs("Failed to make the directory %Q"),&szDir);
+ return true;
+}
+
+
+
+/*
+ @doc: file.remove
+ @type:
+ command
+ @title:
+ file.remove
+ @keyterms:
+ removing files
+ @short:
+ Removes a file
+ @syntax:
+ file.remove [-q] <name:string>
+ @switches:
+ !sw: -q | --quiet
+ Suppresses any warning message
+ @description:
+ Removes the file <name>.[br]
+ -q suppresses any warning message (about non existing file , for example).[br]
+ The path is adjusted according to the system that KVIrc
+ is running on so you don't have to bother about portability: it *should* be automatically
+ guaranteed. Just use an UNIX style path.[br]
+ @seealso:
+ [fnc]$file.exists[/fnc]
+*/
+
+static bool file_kvs_cmd_remove(KviKvsModuleCommandCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("name",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSM_PARAMETERS_END(c)
+ KviFileUtils::adjustFilePath(szName);
+ if(!KviFileUtils::removeFile(szName))
+ {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("Failed to remove the file %Q"),&szName);
+ }
+ return true;
+}
+
+
+/*
+ @doc: file.rmdir
+ @type:
+ command
+ @title:
+ file.rmdir
+ @keyterms:
+ removing directories
+ @short:
+ Removes a directory
+ @syntax:
+ file.rmdir [-q] <name:string>
+ @switches:
+ !sw: -q | --quiet
+ Suppresses any warning message
+ @description:
+ Removes the directory <name>.[br]
+ The directory must be empty for this command to success.[br]
+ -q suppresses any warning message (about non existing directory , for example).[br]
+ The path is adjusted according to the system that KVIrc
+ is running on so you don't have to bother about portability: it *should* be automatically
+ guaranteed. Just use an UNIX style path.[br]
+ @seealso:
+ [fnc]$file.exists[/fnc]
+ [cmd]file.remove[/cmd]
+*/
+
+static bool file_kvs_cmd_rmdir(KviKvsModuleCommandCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("name",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSM_PARAMETERS_END(c)
+ KviFileUtils::adjustFilePath(szName);
+ if(!KviFileUtils::removeDir(szName))
+ {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("Failed to remove the directory %Q"),&szName);
+ }
+ return true;
+}
+
+
+/*
+ @doc: file.exists
+ @type:
+ function
+ @title:
+ $file.exists
+ @short:
+ Check if a file exists
+ @syntax:
+ <boolean> $file.exists(<filename:string>)
+ @description:
+ Returns true if the file <filename> exists (this is also valid for directories!).[br]
+ The <filename> should be an unix-style file path and is adjusted according to the system that KVIrc is running on.[br]
+*/
+
+static bool file_kvs_fnc_exists(KviKvsModuleFunctionCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("filename",KVS_PT_STRING,0,szName)
+ KVSM_PARAMETERS_END(c)
+ KviFileUtils::adjustFilePath(szName);
+ QFileInfo f(szName);
+ c->returnValue()->setBoolean(f.exists());
+ return true;
+}
+
+
+/*
+ @doc: file.type
+ @type:
+ function
+ @title:
+ $file.type
+ @short:
+ Checks the type of a path
+ @syntax:
+ <string> $file.type(<filename:string>)
+ @description:
+ Returns "f" if the <filename> points to a real file , "d" if <filename>
+ is the name of a directory or "l" if it is a symbolic link.[br]
+ The <filename> should be an unix-style file path and is adjusted according to the system that KVIrc is running on.[br]
+*/
+
+static bool file_kvs_fnc_type(KviKvsModuleFunctionCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("filename",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSM_PARAMETERS_END(c)
+ KviFileUtils::adjustFilePath(szName);
+ QFileInfo f(szName);
+ if(f.isFile())c->returnValue()->setString("f");
+ else if(f.isDir())c->returnValue()->setString("d");
+ else if(f.isSymLink())c->returnValue()->setString("l");
+ return true;
+}
+
+
+/*
+ @doc: file.size
+ @type:
+ function
+ @title:
+ $file.size
+ @short:
+ Returns the size of a file
+ @syntax:
+ <integer> $file.size(<filename:string>)
+ @description:
+ Returns the size of the file pointed by <filename>.[br]
+ If the file does not exist , this function returns 0.[br]
+ The <filename> should be an unix-style file path and is adjusted according to the system that KVIrc is running on.[br]
+*/
+
+static bool file_kvs_fnc_size(KviKvsModuleFunctionCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("filename",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSM_PARAMETERS_END(c)
+ KviFileUtils::adjustFilePath(szName);
+ QFileInfo f(szName);
+ c->returnValue()->setInteger(f.size());
+ return true;
+}
+/*
+ @doc: file.allSizese
+ @type:
+ function
+ @title:
+ $file.allSizes
+ @short:
+ Returns all sizes of a specified directory.
+ @syntax:
+ <array> $file.allSize(<dirname:string>)
+ @description:
+ Returns the size of every files of the specified directory as an array.[br]
+*/
+
+static bool file_kvs_fnc_allSizes(KviKvsModuleFunctionCall * c)
+{
+ QString szDir;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("directory",KVS_PT_NONEMPTYSTRING,0,szDir)
+ KVSM_PARAMETERS_END(c)
+ KviFileUtils::adjustFilePath(szDir);
+
+ QDir d(szDir);
+ if(!d.exists())
+ {
+ c->warning(__tr2qs("The specified directory does not exist '%Q'"),&szDir);
+ return true;
+ }
+
+ QStringList sl;
+ sl = d.entryList(QDir::Files);
+
+ KviKvsArray * a = new KviKvsArray();
+ QString szFile;
+ if(!sl.isEmpty())
+ {
+ int idx = 0;
+ for(QStringList::Iterator it = sl.begin();it != sl.end();++it)
+ {
+ szFile=szDir+(*it);
+ QFileInfo f(szFile);
+ a->set(idx,new KviKvsVariant((kvs_int_t)f.size()));
+ idx++;
+ }
+ }
+ c->returnValue()->setArray(a);
+
+
+
+
+ return true;
+}
+
+/*
+ @doc: file.fixpath
+ @type:
+ function
+ @title:
+ $file.fixpath
+ @short:
+ Converts file paths
+ @syntax:
+ <string> $file.fixpath(<filename:string>)
+ @description:
+ Returns the <filename> adjusted to match the current operating
+ system file path conventions.[br] This means that on UNIX , a path like "C:\folder\file.mp3"
+ will be returned as "/folder/file.mp3" and vice-versa.[br]
+ There is a minor problem with unix paths converted to the windows system: unix
+ has no "drive" concept thus the unix paths do not contain a drive. KVIrc will
+ always map the paths to the "default" C: drive.[br]
+ This is a good reason to avoid using absolute hard-coded paths :).[br]
+ Please note that you DON'T NEED to call this function on paths that you
+ pass to the other file.* functions: they are adjusted automatically.[br]
+ @seealso:
+ [fnc]$file.ps[/fnc]
+*/
+
+
+static bool file_kvs_fnc_fixpath(KviKvsModuleFunctionCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("filename",KVS_PT_STRING,0,szName)
+ KVSM_PARAMETERS_END(c)
+ KviFileUtils::adjustFilePath(szName);
+ c->returnValue()->setString(szName);
+ return true;
+}
+
+
+/*
+ @doc: file.ps
+ @type:
+ function
+ @title:
+ $file.ps
+ @short:
+ Returns the file path separator
+ @syntax:
+ <string> $file.ps()
+ @description:
+ Returns the file path separator for the current operating system.[br]
+ On windows , '\' is returned , on UNIX , '/'.[br]
+ @seealso:
+ [fnc]$file.fixpath[/fnc]
+*/
+
+static bool file_kvs_fnc_ps(KviKvsModuleFunctionCall * c)
+{
+ c->returnValue()->setString(QString(QChar(KVI_PATH_SEPARATOR_CHAR)));
+ return true;
+}
+
+
+/*
+ @doc: file.ls
+ @type:
+ function
+ @title:
+ $file.ls
+ @short:
+ Returns a directory listing
+ @syntax:
+ <array> $file.ls(<directory:string>,[<flags:string>[,<namefilter:string>]])
+ @description:
+ Returns the listing of the specified directory as an array.[br]
+ The <directory> should be an unix-style file path and is adjusted according to the system that KVIrc is running on.[br]
+ <flags> may be a combination of the following characters:[br]
+ d: list directories[br]
+ f: list files[br]
+ l: list symbolic links[br]
+ r: list readable files[br]
+ w: list writeable files[br]
+ x: list executable files[br]
+ h: list hidden files[br]
+ s: list system files[br]
+ n: sort files by name[br]
+ t: sort files by file time[br]
+ b: sort files by file size[br]
+ z: put the directories first, then the files[br]
+ k: invert sort order[br]
+ i: case insensitive sort[br]
+ If <flags> is empty then a default of 'dfrwxhs'.[br]
+ If none of r,w,x is set then KVIrc sets all of them by default.[br]
+ If <namefilter> is passed then it is interpreted as a wildcard string
+ that must match the entries to be returned.[br]
+ @example:
+ [example]
+ %dir[]=$file.ls(/,"d")
+ [cmd]foreach[/cmd](%f,%dir[])echo %f
+ %dir[]=$file.ls(/usr/include,"f","t*.h");
+ [cmd]foreach[/cmd](%f,%dir[])echo %f
+ %dir[]=$file.ls($file.homedir,"dfr");
+ [cmd]foreach[/cmd](%f,%dir[])echo %f
+ [/example]
+*/
+
+static bool file_kvs_fnc_ls(KviKvsModuleFunctionCall * c)
+{
+ QString szDir,szFlags,szFilter;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("directory",KVS_PT_NONEMPTYSTRING,0,szDir)
+ KVSM_PARAMETER("flags",KVS_PT_STRING,KVS_PF_OPTIONAL,szFlags)
+ KVSM_PARAMETER("filter",KVS_PT_STRING,KVS_PF_OPTIONAL,szFilter)
+ KVSM_PARAMETERS_END(c)
+
+ KviFileUtils::adjustFilePath(szDir);
+
+ QDir d(szDir);
+ if(!d.exists())
+ {
+ c->warning(__tr2qs("The specified directory does not exist '%Q'"),&szDir);
+ return true;
+ }
+
+#ifdef COMPILE_USE_QT4
+ QFlags<QDir::Filter> iFlags = 0;
+#else
+ int iFlags = 0;
+#endif
+ if(szFlags.isEmpty())iFlags = QDir::Dirs | QDir::Files | QDir::NoSymLinks | QDir::Readable | QDir::Writable | QDir::Executable | QDir::Hidden | QDir::System;
+ else {
+ if(szFlags.find('d',false) != -1)iFlags |= QDir::Dirs;
+ if(szFlags.find('f',false) != -1)iFlags |= QDir::Files;
+ if(szFlags.find('l',false) == -1)iFlags |= QDir::NoSymLinks;
+ if(szFlags.find('r',false) != -1)iFlags |= QDir::Readable;
+ if(szFlags.find('w',false) != -1)iFlags |= QDir::Writable;
+ if(szFlags.find('x',false) != -1)iFlags |= QDir::Executable;
+ if(szFlags.find('h',false) != -1)iFlags |= QDir::Hidden;
+ if(szFlags.find('s',false) != -1)iFlags |= QDir::System;
+ }
+#ifdef COMPILE_USE_QT4
+ QFlags<QDir::SortFlag> iSort = 0;
+#else
+ int iSort = 0;
+#endif
+ if(szFlags.isEmpty())iSort = QDir::Unsorted;
+ else {
+ if(szFlags.find('n',false) != -1)iSort |= QDir::Name;
+ if(szFlags.find('t',false) != -1)iSort |= QDir::Time;
+ if(szFlags.find('b',false) != -1)iSort |= QDir::Size;
+ if(szFlags.find('z',false) != -1)iSort |= QDir::DirsFirst;
+ if(szFlags.find('k',false) != -1)iSort |= QDir::Reversed;
+ if(szFlags.find('i',false) != -1)iSort |= QDir::IgnoreCase;
+ }
+
+ QStringList sl;
+ if(!szFilter.isEmpty())sl = d.entryList(szFilter,iFlags,iSort);
+ else sl = d.entryList(iFlags,iSort);
+
+ KviKvsArray * a = new KviKvsArray();
+ if(!sl.isEmpty())
+ {
+ int idx = 0;
+ for(QStringList::Iterator it = sl.begin();it != sl.end();++it)
+ {
+ a->set(idx,new KviKvsVariant(*it));
+ idx++;
+ }
+ }
+ c->returnValue()->setArray(a);
+
+ return true;
+}
+
+/*
+ @doc: file.read
+ @type:
+ function
+ @title:
+ $file.read
+ @short:
+ Reads a text file
+ @syntax:
+ <string> $file.read(<filename:string>[,<size:integer>[,<flags:string>]])
+ @description:
+ Reads at most <size> bytes of the file pointed by <filename>.[br]
+ <size> is an upper limit but may be not reached if the real file is smaller.[br]
+ The data read is returned as a string , so if the file contains binary data,
+ expect strange results.[br] If <size> is not specified, then KVIrc tries to read
+ the whole file up to the 1 MB limit (so if you want to read a file that is
+ bigger thatn 1 MB then you MUST specify the <size>).[br]
+ WARNING: always check the file size before attemting to read a whole file...
+ reading a CDROM iso image may sit down your system :) (and will prolly crash while
+ allocating memory , before attempting to read anything)[br]
+ An empty string is returned if a serious error occures.[br]
+ The <filename> is adjusted according to the system that KVIrc is running on.[br]
+ Flags are actually limited to the single letter 'l'. By default the file
+ is decoded from the ut8 characters set. If 'l' is present the the file
+ is decoded by using the local 8 bit character set instead.
+ @examples:
+ [example]
+ echo $file.read(/proc/cpuinfo)
+ [/example]
+ @seealso:
+ [fnc]$file.readbinary[/fnc]
+*/
+
+static bool file_kvs_fnc_read(KviKvsModuleFunctionCall * c)
+{
+ QString szNameZ;
+ kvs_uint_t uSize;
+ QString szFlags;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("filename",KVS_PT_NONEMPTYSTRING,0,szNameZ)
+ KVSM_PARAMETER("size",KVS_PT_UINT,KVS_PF_OPTIONAL,uSize)
+ KVSM_PARAMETER("flags",KVS_PT_STRING,KVS_PF_OPTIONAL,szFlags)
+ KVSM_PARAMETERS_END(c)
+ KviFileUtils::adjustFilePath(szNameZ);
+
+ QFile f(szNameZ);
+ if(!f.open(IO_ReadOnly))
+ {
+ c->warning(__tr2qs("Can't open the file \"%Q\" for reading"),&szNameZ);
+ return true;
+ }
+
+ if(c->params()->count() < 2)uSize = 1024 * 1024; // 1 meg file default
+
+ char * buf = (char *)kvi_malloc(sizeof(char) * (uSize + 1));
+ unsigned int uReaded = 0;
+ unsigned int uRetries = 0;
+
+ while((uReaded < uSize) && (!f.atEnd()))
+ {
+ int readedNow = f.readBlock(buf + uReaded,uSize - uReaded);
+ if(readedNow < 0)
+ {
+ kvi_free(buf);
+ c->warning(__tr2qs("Read error for file %Q"),&szNameZ);
+ return true;
+ } else readedNow += uReaded;
+ uRetries ++;
+ if(uRetries > 1000)
+ {
+ // ops
+ kvi_free(buf);
+ c->warning(__tr2qs("Read error for file %Q (have been unable to read the requested size in 1000 retries)"),&szNameZ);
+ return true;
+ }
+ uReaded += readedNow;
+ }
+
+ buf[uReaded] = '\0';
+
+ if(szFlags.find('l',false) == -1)
+ c->returnValue()->setString(QString::fromUtf8(buf));
+ else
+ c->returnValue()->setString(QString::fromLocal8Bit(buf));
+
+ kvi_free(buf);
+
+ return true;
+}
+
+
+/*
+ @doc: file.readLines
+ @type:
+ function
+ @title:
+ $file.readLines
+ @short:
+ Reads lines of a text file
+ @syntax:
+ <array> $file.readLines(<filename:string>[,<startline:integer>,[<count:integer>[,<flags:string>]]])
+ @description:
+ Reads lines from the specified file and returns them as an array of strings.
+ The lines are assumed to be separated by linefeed characters (which are NOT returned).
+ Eventual terminating carriage return characters at the end of the line are stripped.
+ If <startline> is specified, then all the lines with indexes lower that <startline> are
+ discarded. If <count> is specified then a maximum of <count> lines is returned.
+ If <count> is not specified then all the lines until the end are read.
+ The <filename> is adjusted according to the system that KVIrc is running on.[br]
+ Flags are actually limited to the single letter 'l'. By default the file
+ is decoded from the ut8 characters set. If 'l' is present the the file
+ is decoded by using the local 8 bit character set instead.
+ WARNING: Always check the size of the file you're going to read: it is not
+ a good idea attempting to read a 700 MB binary file with this function since
+ it will probably sit down your system and exhaust your virtual memory.
+ @examples:
+ [example]
+ echo $file.readLines(/proc/cpuinfo)
+ [/example]
+ @seealso:
+ [fnc]$file.read[/fnc], [cmd]file.writeLines[/cmd], [fnc]$lf[/fnc]
+*/
+
+
+
+static bool file_kvs_fnc_readLines(KviKvsModuleFunctionCall * c)
+{
+ QString szName;
+ QString szFlags;
+ kvs_int_t iStartLine;
+ kvs_int_t iCount;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("filename",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSM_PARAMETER("startline",KVS_PT_INT,KVS_PF_OPTIONAL,iStartLine)
+ KVSM_PARAMETER("count",KVS_PT_INT,KVS_PF_OPTIONAL,iCount)
+ KVSM_PARAMETER("flags",KVS_PT_STRING,KVS_PF_OPTIONAL,szFlags)
+ KVSM_PARAMETERS_END(c)
+ KviFileUtils::adjustFilePath(szName);
+
+ QFile f(szName);
+ if(!f.open(IO_ReadOnly))
+ {
+ c->warning(__tr2qs("Can't open the file \"%Q\" for reading"),&szName);
+ return true;
+ }
+
+ if(c->params()->count() < 2)iStartLine = 0;
+ if(c->params()->count() < 3)iCount = -1;
+
+ bool bLocal8Bit = szFlags.find('l',0,false) != -1;
+
+ KviKvsArray * a = new KviKvsArray();
+
+ int iIndex=0;
+
+ QTextStream stream( &f );
+
+ stream.setEncoding(bLocal8Bit ? QTextStream::Locale : QTextStream::UnicodeUTF8);
+ for(int i=0;i<iStartLine;i++)
+ stream.readLine();
+
+ if(iCount>0)
+ {
+ for(; (iCount>0 && !stream.atEnd()) ; iCount-- )
+ a->set(iIndex,new KviKvsVariant(stream.readLine()));
+ iIndex++;
+ } else {
+ while(!stream.atEnd()) {
+ a->set(iIndex,new KviKvsVariant(stream.readLine()));
+ iIndex++;
+ }
+ }
+
+ f.close();
+
+ c->returnValue()->setArray(a);
+
+ return true;
+}
+
+
+/*
+ @doc: file.writelines
+ @type:
+ command
+ @title:
+ file.writeLines
+ @short:
+ Writes an array of lines to a file
+ @syntax:
+ file.writeLines [-l] [-a] [-c] <filename:string> <lines:array>
+ @switches:
+ !sw: -l | --local-8-bit
+ Causes the lines to be saved in local 8 bit character set instead
+ of the default unicode encoding.
+ !sw: -a | --append
+ If the file already exists, then the lines are appended to the end
+ instead of overwriting the file.
+ !sw: -c | --crlf
+ The lines are separated by a carriage-return+line-feed character
+ combination, compatible with windows text mode files.
+ This is the only way to make the file readable in windows notepad, for example.
+ Please note that this is broken design: do NOT use it :)
+ !sw: -n | --no-separator
+ Do not separate the lines at all (either the separators are already
+ inside the lines array or no line separation is desired at all).
+ -n takes precedence over -c.
+ !sw: -q | --quiet
+ Don't complain if the file can't be opened: just fail silently
+ @description:
+ Writes the array of <lines> to the specified file.
+ The lines are separated by a single linefeed character (see also [fnc]$lf[/fnc])
+ unless the -c or -n switches are used. If the file already exists then it is
+ overwritten with the new data unless the -a switch is used.
+ The lines array is encoded in the ut8 character set unless the -l switch is used.
+ @seealso:
+ [fnc]$file.readLines[/fnc]
+*/
+
+
+
+static bool file_kvs_cmd_writeLines(KviKvsModuleCommandCall * c)
+{
+ QString szFile,szFlags;
+ KviKvsArrayCast a;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("filename",KVS_PT_NONEMPTYSTRING,0,szFile)
+ KVSM_PARAMETER("lines",KVS_PT_ARRAYCAST,0,a)
+ KVSM_PARAMETERS_END(c)
+
+ KviFileUtils::adjustFilePath(szFile);
+
+ KviFile f(szFile);
+ int iFlags = IO_WriteOnly;
+
+ if(!f.openForWriting(c->switches()->find('a',"append")))
+ {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("Can't open the file \"%Q\" for writing"),&szFile);
+ return true;
+ }
+
+ bool bLocal8Bit = c->switches()->find('l',"local-8-bit");
+ bool bNoSeparator = c->switches()->find('n',"no-separator");
+ bool bAddCR = c->switches()->find('c',"crlf");
+
+ unsigned int u = 0;
+ while(u < a.array()->size())
+ {
+ KviKvsVariant * v = a.array()->at(u);
+ KviQCString dat;
+ if(v)
+ {
+ QString szDat;
+ v->asString(szDat);
+ KviQCString dat = bLocal8Bit ? szDat.local8Bit() : szDat.utf8();
+ }
+ if(!bNoSeparator)
+ {
+ if(bAddCR)dat += "\r\n";
+ else dat += '\n';
+ }
+ f.writeBlock(dat.data(),dat.length());
+ u++;
+ }
+
+ f.close();
+
+ return true;
+}
+
+
+/*
+ @doc: file.localdir
+ @type:
+ function
+ @title:
+ $file.localdir
+ @short:
+ Get the KVIrc local directory
+ @syntax:
+ <string> $file.localdir([relative_path:string])
+ @description:
+ Returns the path to the KVIrc local data directory.[br]
+ The KVIrc local data directory is always writeable and contains
+ the various subdirectories that KVIrc uses internally: audio , avatars ,
+ config , help , incoming , log , modules , msgcolors and pics.[br]
+ If <relative_path> is passed , then it is appended at the end of the directory
+ to form a complete filepath.[br]
+ The path is adjusted to contain single separators suitable for the platform
+ that KVIrc is atually running on (thus you not need to care about path
+ separators in the <relative_path> , KVIrc will adjust them).[br]
+ @examples:
+ [example]
+ echo KVIrc looks for pictures in $file.localdir(pics)
+ echo panic.png would be translated to $file.localdir(pics/panic.png)
+ [/example]
+*/
+
+static bool file_kvs_fnc_localdir(KviKvsModuleFunctionCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("relative_path",KVS_PT_STRING,KVS_PF_OPTIONAL,szName)
+ KVSM_PARAMETERS_END(c)
+ if(szName.isEmpty())szName.append(KVI_PATH_SEPARATOR_CHAR);
+ QString szPath;
+ g_pApp->getLocalKvircDirectory(szPath,KviApp::None,szName);
+ KviFileUtils::adjustFilePath(szPath);
+ c->returnValue()->setString(szPath);
+ return true;
+}
+
+
+
+/*
+ @doc: file.homedir
+ @type:
+ function
+ @title:
+ $file.homedir
+ @short:
+ Get the user's HOME directory
+ @syntax:
+ <string> $file.homedir([relative_path:string])
+ @description:
+ Returns the user's HOME directory path.[br]
+ If <relative_path> is passed , then it is appended at the end of the directory
+ to form a complete filepath.[br]
+ The path is adjusted to contain single separators suitable for the platform
+ that KVIrc is atually running on (thus you not need to care about path
+ separators in the <relative_path> , KVIrc will adjust them).[br]
+*/
+
+static bool file_kvs_fnc_homedir(KviKvsModuleFunctionCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("relative_path",KVS_PT_STRING,KVS_PF_OPTIONAL,szName)
+ KVSM_PARAMETERS_END(c)
+ if(szName.isEmpty())szName.append(KVI_PATH_SEPARATOR_CHAR);
+ QString szPath = QDir::homeDirPath();
+ KviQString::ensureLastCharIs(szPath,KVI_PATH_SEPARATOR_CHAR);
+ szPath.append(szName);
+ KviFileUtils::adjustFilePath(szPath);
+ c->returnValue()->setString(szPath);
+ return true;
+}
+
+
+
+/*
+ @doc: file.rootdir
+ @type:
+ function
+ @title:
+ $file.rootdir
+ @short:
+ Get the system root directory
+ @syntax:
+ $file.rootdir(<relative_path>)
+ $file.rootdir
+ @description:
+ Returns the system's root directory (/ on UNIX and C:/ on Windows).[br]
+ If <relative_path> is passed , then it is appended at the end of the directory
+ to form a complete filepath.[br]
+ The path is adjusted to contain single separators suitable for the platform
+ that KVIrc is atually running on (thus you not need to care about path
+ separators in the <relative_path> , KVIrc will adjust them).[br]
+*/
+
+static bool file_kvs_fnc_rootdir(KviKvsModuleFunctionCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("relative_path",KVS_PT_STRING,KVS_PF_OPTIONAL,szName)
+ KVSM_PARAMETERS_END(c)
+ if(szName.isEmpty())szName.append(KVI_PATH_SEPARATOR_CHAR);
+ QString szPath = QDir::rootDirPath();
+ KviQString::ensureLastCharIs(szPath,KVI_PATH_SEPARATOR_CHAR);
+ szPath.append(szName);
+ KviFileUtils::adjustFilePath(szPath);
+ c->returnValue()->setString(szPath);
+ return true;
+}
+
+
+/*
+ @doc: file.cwd
+ @type:
+ function
+ @title:
+ $file.currentdir
+ @short:
+ Get the current directory
+ @syntax:
+ <string> $file.cwd([relative_path:string])
+ @description:
+ Returns the current working directory.[br]
+ If <relative_path> is passed , then it is appended at the end of the directory
+ to form a complete filepath.[br]
+ The path is adjusted to contain single separators suitable for the platform
+ that KVIrc is atually running on (thus you not need to care about path
+ separators in the <relative_path> , KVIrc will adjust them).[br]
+*/
+
+static bool file_kvs_fnc_cwd(KviKvsModuleFunctionCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("relative_path",KVS_PT_STRING,KVS_PF_OPTIONAL,szName)
+ KVSM_PARAMETERS_END(c)
+ if(szName.isEmpty())szName.append(KVI_PATH_SEPARATOR_CHAR);
+ QString szPath = QDir::currentDirPath();
+ KviQString::ensureLastCharIs(szPath,KVI_PATH_SEPARATOR_CHAR);
+ szPath.append(szName);
+ KviFileUtils::adjustFilePath(szPath);
+ c->returnValue()->setString(szPath);
+ return true;
+}
+
+
+/*
+ @doc: file.globaldir
+ @type:
+ function
+ @title:
+ $file.globaldir
+ @short:
+ Get the KVIrc global directory
+ @syntax:
+ $file.globaldir(<relative_path>)
+ $file.globaldir
+ @description:
+ Returns the path to the KVIrc global data directory.[br]
+ The KVIrc local data directory is always readable but usually not writeable and contains
+ the various subdirectories that KVIrc uses internally: audio , avatars ,
+ config , help , incoming , log , modules , msgcolors and pics.[br]
+ If <relative_path> is passed , then it is appended at the end of the directory
+ to form a complete filepath.[br]
+ The path is adjusted to contain single separators suitable for the platform
+ that KVIrc is atually running on (thus you not need to care about path
+ separators in the <relative_path> , KVIrc will adjust them).[br]
+ @examples:
+ [example]
+ echo KVIrc looks for pictures in $file.globaldir(pics)
+ echo panic.png would be translated to $file.globaldir(pics/panic.png)
+ [/example]
+*/
+
+static bool file_kvs_fnc_globaldir(KviKvsModuleFunctionCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("relative_path",KVS_PT_STRING,KVS_PF_OPTIONAL,szName)
+ KVSM_PARAMETERS_END(c)
+ if(szName.isEmpty())szName.append(KVI_PATH_SEPARATOR_CHAR);
+ QString szPath;
+ g_pApp->getGlobalKvircDirectory(szPath,KviApp::None,szName);
+ KviFileUtils::adjustFilePath(szPath);
+ c->returnValue()->setString(szPath);
+ return true;
+}
+
+/*
+ @doc: file.extractpath
+ @type:
+ function
+ @title:
+ $file.extractpath
+ @short:
+ Extract the path from a filename
+ @syntax:
+ <string> $file.extractpath(<filepath:string>)
+ @description:
+ Returns the path part of the <filepath> translated to match the current
+ platform filesystem conventions.[br]
+ The path will NOT contain a trailing path separator.[br]
+ For example, if <filepath> is /usr/arch/mp3/Carisma_SuonoDelSilenzio.mp3 then
+ this function will return /usr/arch/mp3 on UNIX and C:\usr\arch\mp3 on Windows.
+ @seealso:
+ [fnc]$file.extractFileName[/fnc]
+*/
+
+static bool file_kvs_fnc_extractpath(KviKvsModuleFunctionCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("filepath",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSM_PARAMETERS_END(c)
+ c->returnValue()->setString(QFileInfo(szName).dirPath(TRUE));
+ return true;
+}
+
+
+/*
+ @doc: file.extractfilename
+ @type:
+ function
+ @title:
+ $file.extractfilename
+ @short:
+ Extract the filename from a file path
+ @syntax:
+ <string> $file.extractpath(<filepath:string>)
+ @description:
+ Returns the filename part of the filepath translated to match the current
+ platform filesystem conventions.[br]
+ For example, if <filepath> is /usr/arch/mp3/Carisma_SuonoDelSilenzio.mp3 then
+ this function will return Carisma_SuonoDelSilenzio.mp3
+ @seealso:
+ [fnc]$file.extractPath[/fnc]
+*/
+
+static bool file_kvs_fnc_extractfilename(KviKvsModuleFunctionCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("filepath",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSM_PARAMETERS_END(c)
+ KviFileUtils::extractFileName(szName);
+ KviQString::cutToLast(szName,KVI_PATH_SEPARATOR_CHAR);
+ c->returnValue()->setString(szName);
+ return true;
+}
+
+
+
+static bool file_module_init(KviModule * m)
+{
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"copy",file_kvs_cmd_copy);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"rename",file_kvs_cmd_rename);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"mkdir",file_kvs_cmd_mkdir);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"write",file_kvs_cmd_write);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"remove",file_kvs_cmd_remove);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"rmdir",file_kvs_cmd_rmdir);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"addimagepath",file_kvs_cmd_addimagepath);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"delimagepath",file_kvs_cmd_delimagepath);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"writeLines",file_kvs_cmd_writeLines);
+
+ KVSM_REGISTER_FUNCTION(m,"exists",file_kvs_fnc_exists);
+ KVSM_REGISTER_FUNCTION(m,"type",file_kvs_fnc_type);
+ KVSM_REGISTER_FUNCTION(m,"size",file_kvs_fnc_size);
+
+ KVSM_REGISTER_FUNCTION(m,"allsizes",file_kvs_fnc_allSizes);
+
+ KVSM_REGISTER_FUNCTION(m,"fixpath",file_kvs_fnc_fixpath);
+ KVSM_REGISTER_FUNCTION(m,"ps",file_kvs_fnc_ps);
+ KVSM_REGISTER_FUNCTION(m,"read",file_kvs_fnc_read);
+ KVSM_REGISTER_FUNCTION(m,"localdir",file_kvs_fnc_localdir);
+ KVSM_REGISTER_FUNCTION(m,"homedir",file_kvs_fnc_homedir);
+ KVSM_REGISTER_FUNCTION(m,"rootdir",file_kvs_fnc_rootdir);
+ KVSM_REGISTER_FUNCTION(m,"cwd",file_kvs_fnc_cwd);
+ KVSM_REGISTER_FUNCTION(m,"globaldir",file_kvs_fnc_globaldir);
+ KVSM_REGISTER_FUNCTION(m,"extractpath",file_kvs_fnc_extractpath);
+ KVSM_REGISTER_FUNCTION(m,"extractfilename",file_kvs_fnc_extractfilename);
+ KVSM_REGISTER_FUNCTION(m,"ls",file_kvs_fnc_ls);
+ KVSM_REGISTER_FUNCTION(m,"readLines",file_kvs_fnc_readLines);
+
+
+ return true;
+}
+
+static bool file_module_cleanup(KviModule *m)
+{
+ return true;
+}
+
+KVIRC_MODULE(
+ "File", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "Interface to the file system",
+ file_module_init,
+ 0,
+ 0,
+ file_module_cleanup
+)
diff --git a/src/modules/filetransferwindow/Makefile.am b/src/modules/filetransferwindow/Makefile.am
new file mode 100644
index 00000000..910d86b4
--- /dev/null
+++ b/src/modules/filetransferwindow/Makefile.am
@@ -0,0 +1,22 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+SUBDIRS = caps
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvifiletransferwindow.la
+
+libkvifiletransferwindow_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvifiletransferwindow_la_SOURCES = libkvifiletransferwindow.cpp filetransferwindow.cpp
+libkvifiletransferwindow_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= filetransferwindow.h
+
+m_%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+filetransferwindow.cpp: m_filetransferwindow.moc
diff --git a/src/modules/filetransferwindow/caps/Makefile.am b/src/modules/filetransferwindow/caps/Makefile.am
new file mode 100644
index 00000000..c3e694b7
--- /dev/null
+++ b/src/modules/filetransferwindow/caps/Makefile.am
@@ -0,0 +1,9 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+tmpdir = $(pluglibdir)/caps/tool/
+
+tmp_DATA= filetransferwindow
+
+EXTRA_DIST = $(tmp_DATA)
diff --git a/src/modules/filetransferwindow/caps/filetransferwindow b/src/modules/filetransferwindow/caps/filetransferwindow
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src/modules/filetransferwindow/caps/filetransferwindow
diff --git a/src/modules/filetransferwindow/filetransferwindow.cpp b/src/modules/filetransferwindow/filetransferwindow.cpp
new file mode 100644
index 00000000..a3951a7c
--- /dev/null
+++ b/src/modules/filetransferwindow/filetransferwindow.cpp
@@ -0,0 +1,768 @@
+//==================================================================================
+//
+// File : filetransferwindow.cpp
+// Creation date : Mon Apr 21 2003 23:14:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the linkss of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//==================================================================================
+
+#include "filetransferwindow.h"
+
+#include "kvi_debug.h"
+#include "kvi_iconmanager.h"
+#include "kvi_ircview.h"
+#include "kvi_out.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_out.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_themedlabel.h"
+#include "kvi_input.h"
+#include "kvi_qstring.h"
+
+#include <qsplitter.h>
+#include <qtooltip.h>
+#include "kvi_tal_hbox.h"
+#ifdef COMPILE_USE_QT4
+ #include <q3header.h>
+#else
+ #include <qheader.h>
+#endif
+#include <qpainter.h>
+#include <qmessagebox.h>
+#include <qclipboard.h>
+#include <qfileinfo.h>
+#include <qfile.h>
+#include <qlabel.h>
+#include <qfontmetrics.h>
+#include <qevent.h>
+
+#ifdef COMPILE_KDE_SUPPORT
+ #include <kurl.h>
+ #include <krun.h>
+ #include <kuserprofile.h>
+ #include <kmimetype.h>
+#endif //COMPILE_KDE_SUPPORT
+
+extern KviFileTransferWindow * g_pFileTransferWindow;
+
+
+KviFileTransferItem::KviFileTransferItem(KviTalListView * v,KviFileTransfer * t)
+: KviTalListViewItem(v)
+{
+ m_pTransfer = t;
+ m_pTransfer->setDisplayItem(this);
+}
+
+KviFileTransferItem::~KviFileTransferItem()
+{
+ m_pTransfer->setDisplayItem(0);
+}
+
+QString KviFileTransferItem::key(int column,bool bAcending) const
+{
+ QString ret;
+ ret.setNum(m_pTransfer->id());
+ if(ret.length() == 1)ret.prepend("0000000");
+ else if(ret.length() == 2)ret.prepend("000000");
+ else if(ret.length() == 3)ret.prepend("00000");
+ else if(ret.length() == 4)ret.prepend("0000");
+ else if(ret.length() == 5)ret.prepend("000");
+ else if(ret.length() == 6)ret.prepend("00");
+ else if(ret.length() == 7)ret.prepend("0");
+ return ret;
+}
+
+void KviFileTransferItem::paintCell(QPainter * p,const QColorGroup &cg,int column,int width,int align)
+{
+ QPainter * newP;
+ QPixmap * pix = 0;
+ if(p->device() == listView()->viewport())
+ {
+ // ops.. there is no double buffering active ?
+ // we'll do it then
+ pix = g_pFileTransferWindow->memPixmap();
+ if((pix->width() < width) || (pix->height() < height()))
+ {
+ pix->resize(width,height());
+ } else {
+ if((pix->width() > 500) || (pix->height() > 110))
+ {
+ if((pix->width() * pix->height()) > (width * height() * 4))
+ {
+ // this is getting too big
+ pix->resize(width,height());
+ }
+ }
+ }
+ newP = new QPainter(pix);
+ } else {
+ newP = p;
+ }
+
+ p->setFont(listView()->font());
+
+ newP->setPen(isSelected() ? cg.highlight() : cg.base());
+ newP->drawRect(0,0,width,height());
+ newP->setPen(m_pTransfer->active() ? QColor(180,180,180) : QColor(200,200,200));
+ newP->drawRect(1,1,width - 2,height() - 2);
+ newP->fillRect(2,2,width - 4,height() - 4,m_pTransfer->active() ? QColor(240,240,240) : QColor(225,225,225));
+
+ m_pTransfer->displayPaint(newP,column,width,height());
+
+ if(newP != p)
+ {
+ p->drawPixmap(0,0,*pix,0,0,width,height());
+ delete newP;
+ }
+}
+
+void KviFileTransferItem::setHeight(int h)
+{
+ KviTalListViewItem::setHeight(m_pTransfer->displayHeight(g_pFileTransferWindow->lineSpacing()));
+}
+
+
+KviFileTransferWindow::KviFileTransferWindow(KviModuleExtensionDescriptor * d,KviFrame * lpFrm)
+: KviWindow(KVI_WINDOW_TYPE_TOOL,lpFrm,"file transfer window",0) , KviModuleExtension(d)
+{
+ g_pFileTransferWindow = this;
+
+ m_pContextPopup = 0;
+ m_pLocalFilePopup = 0;
+ m_pOpenFilePopup = 0;
+
+ m_pMemPixmap = new QPixmap(1,1);
+
+ m_pTimer = new QTimer(this);
+ connect(m_pTimer,SIGNAL(timeout()),this,SLOT(heartbeat()));
+
+ m_pInput = new KviInput(this,0);
+
+ m_pSplitter = new QSplitter(Qt::Horizontal,this,"splitter");
+ m_pVertSplitter = new QSplitter(Qt::Vertical,m_pSplitter,"vsplitter");
+
+ m_pListView = new KviTalListView(m_pVertSplitter);
+ //m_pListView->header()->hide();
+ m_pListView->setAllColumnsShowFocus(true);
+ m_pListView->addColumn(__tr2qs_ctx("Type","filetransferwindow"),56);
+ m_pListView->addColumn(__tr2qs_ctx("Information","filetransferwindow"),350);
+ m_pListView->addColumn(__tr2qs_ctx("Progress","filetransferwindow"),350);
+
+ KviDynamicToolTip * tp = new KviDynamicToolTip(m_pListView->viewport());
+ connect(tp,SIGNAL(tipRequest(KviDynamicToolTip *,const QPoint &)),this,SLOT(tipRequest(KviDynamicToolTip *,const QPoint &)));
+
+ //m_pListView->setFocusPolicy(NoFocus);
+ //m_pListView->viewport()->setFocusPolicy(NoFocus);
+
+ //connect(m_pListView,SIGNAL(rightButtonPressed(KviTalListViewItem *,const QPoint &,int)),
+ // this,SLOT(showHostPopup(KviTalListViewItem *,const QPoint &,int)));
+
+ QFontMetrics fm(font());
+ m_iLineSpacing = fm.lineSpacing();
+
+ m_pIrcView = new KviIrcView(m_pVertSplitter,lpFrm,this);
+
+ m_pListView->installEventFilter(this);
+ connect(m_pListView,SIGNAL(rightButtonPressed(KviTalListViewItem *,const QPoint &,int)),this,SLOT(rightButtonPressed(KviTalListViewItem *,const QPoint &,int)));
+ connect(m_pListView,SIGNAL(doubleClicked(KviTalListViewItem *,const QPoint &,int)),this,SLOT(doubleClicked(KviTalListViewItem *,const QPoint &,int)));
+ fillTransferView();
+
+ connect(KviFileTransferManager::instance(),SIGNAL(transferRegistered(KviFileTransfer *)),this,SLOT(transferRegistered(KviFileTransfer *)));
+ connect(KviFileTransferManager::instance(),SIGNAL(transferUnregistering(KviFileTransfer *)),this,SLOT(transferUnregistering(KviFileTransfer *)));
+
+ KviFileTransferManager::instance()->setTransferWindow(this);
+
+ //setFocusHandler(m_pInput,this);
+
+ m_pTimer->start(2000);
+}
+
+KviFileTransferWindow::~KviFileTransferWindow()
+{
+ KviFileTransferManager::instance()->setTransferWindow(0);
+ g_pFileTransferWindow = 0;
+ delete m_pMemPixmap;
+}
+
+bool KviFileTransferWindow::eventFilter( QObject *obj, QEvent *ev )
+{
+ if( (obj==m_pListView) && ( ev->type() == QEvent::KeyPress ) )
+ {
+ QKeyEvent *keyEvent = (QKeyEvent*)ev;
+ switch(keyEvent->key())
+ {
+ case Qt::Key_Delete:
+ if(m_pListView->currentItem())
+ {
+ delete m_pListView->currentItem();
+ return TRUE;
+ }
+ break;
+ }
+ }
+ return KviWindow::eventFilter( obj, ev );
+}
+
+void KviFileTransferWindow::fontChange(const QFont &oldFont)
+{
+ QFontMetrics fm(font());
+ m_iLineSpacing = fm.lineSpacing();
+ KviWindow::fontChange(oldFont);
+}
+
+
+void KviFileTransferWindow::tipRequest(KviDynamicToolTip * tip,const QPoint &pnt)
+{
+ KviFileTransferItem * it = (KviFileTransferItem *)m_pListView->itemAt(pnt);
+ if(!it)return;
+ QString txt = it->transfer()->tipText();
+ tip->tip(m_pListView->itemRect(it),txt);
+}
+
+void KviFileTransferWindow::fillTransferView()
+{
+ KviPointerList<KviFileTransfer> * l = KviFileTransferManager::instance()->transferList();
+ if(!l)return;
+ KviFileTransferItem * it;
+ for(KviFileTransfer * t = l->first();t;t = l->next())
+ {
+ it = new KviFileTransferItem(m_pListView,t);
+ t->setDisplayItem(it);
+ }
+}
+
+KviFileTransferItem * KviFileTransferWindow::findItem(KviFileTransfer * t)
+{
+ KviFileTransferItem * it = (KviFileTransferItem *)m_pListView->firstChild();
+ while(it)
+ {
+ if(it->transfer() == t)return it;
+ it = (KviFileTransferItem *)(it->nextSibling());
+ }
+ return 0;
+}
+
+void KviFileTransferWindow::transferRegistered(KviFileTransfer * t)
+{
+ KviFileTransferItem * it = new KviFileTransferItem(m_pListView,t);
+ //t->setDisplayItem(it);
+}
+
+void KviFileTransferWindow::transferUnregistering(KviFileTransfer * t)
+{
+ KviFileTransferItem * it = findItem(t);
+ //t->setDisplayItem(0);
+ if(it)delete it;
+ it = 0;
+}
+
+void KviFileTransferWindow::doubleClicked(KviTalListViewItem *it,const QPoint &pnt,int col)
+{
+ if(it)
+ openLocalFile();
+}
+
+void KviFileTransferWindow::rightButtonPressed(KviTalListViewItem *it,const QPoint &pnt,int col)
+{
+ if(!m_pContextPopup)m_pContextPopup = new KviTalPopupMenu(this);
+ if(!m_pLocalFilePopup)m_pLocalFilePopup = new KviTalPopupMenu(this);
+ if(!m_pOpenFilePopup)
+ {
+ m_pOpenFilePopup= new KviTalPopupMenu(this);
+ connect(m_pOpenFilePopup,SIGNAL(activated(int)),this,SLOT(openFilePopupActivated(int)));
+ }
+
+ m_pContextPopup->clear();
+
+ int id;
+
+
+ if(it)
+ {
+ KviFileTransferItem * i = (KviFileTransferItem *)it;
+ if(i->transfer())
+ {
+
+ QString szFile = i->transfer()->localFileName();
+ if(!szFile.isEmpty())
+ {
+ m_pLocalFilePopup->clear();
+
+ QString tmp = "<b>file:/";
+ tmp += szFile;
+ tmp += "</b><br>";
+
+ QFileInfo fi(szFile);
+ if(fi.exists())
+ {
+ tmp += "<nobr>";
+ tmp += __tr2qs_ctx("Size: %1","filetransferwindow").arg(KviQString::makeSizeReadable(fi.size()));
+ tmp += "</nobr><br>";
+ }
+
+#ifdef COMPILE_KDE_SUPPORT
+ tmp += "<nobr>Mime: ";
+ tmp += KMimeType::findByPath(szFile)->name();
+ tmp += "</nobr>";
+#endif //COMPILE_KDE_SUPPORT
+
+ QLabel * l = new QLabel(tmp,m_pLocalFilePopup);
+ l->setFrameStyle(QFrame::Raised | QFrame::Panel);
+ m_pLocalFilePopup->insertItem(l);
+
+#ifdef COMPILE_KDE_SUPPORT
+ QString mimetype = KMimeType::findByPath(szFile)->name();
+ KServiceTypeProfile::OfferList offers = KServiceTypeProfile::offers(mimetype,"Application");
+
+ id = m_pLocalFilePopup->insertItem(__tr2qs_ctx("&Open","filetransferwindow"),this,SLOT(openLocalFile()));
+ m_pLocalFilePopup->setItemParameter(id,-1);
+
+ m_pOpenFilePopup->clear();
+
+ int id;
+ int idx = 0;
+
+ for(KServiceTypeProfile::OfferList::Iterator itOffers = offers.begin();
+ itOffers != offers.end(); ++itOffers)
+ {
+ id = m_pOpenFilePopup->insertItem((*itOffers).service()->pixmap(KIcon::Small),(*itOffers).service()->name());
+ m_pOpenFilePopup->setItemParameter(id,idx);
+ idx++;
+ }
+
+ m_pOpenFilePopup->insertSeparator();
+
+ id = m_pOpenFilePopup->insertItem(__tr2qs_ctx("&Other...","filetransferwindow"),this,SLOT(openLocalFileWith()));
+ m_pOpenFilePopup->setItemParameter(id,-1);
+
+ m_pLocalFilePopup->insertItem(__tr2qs_ctx("Open &With","filetransferwindow"),m_pOpenFilePopup);
+ m_pLocalFilePopup->insertSeparator();
+ m_pLocalFilePopup->insertItem(__tr2qs_ctx("Open &Location","filetransferwindow"),this,SLOT(openLocalFileFolder()));
+ m_pLocalFilePopup->insertItem(__tr2qs_ctx("Terminal at Location","filetransferwindow"),this,SLOT(openLocalFileTerminal()));
+ m_pLocalFilePopup->insertSeparator();
+#endif //COMPILE_KDE_SUPPORT
+
+//-| Grifisx & Noldor |-
+#ifdef COMPILE_ON_WINDOWS
+ id = m_pLocalFilePopup->insertItem(__tr2qs_ctx("&Open","filetransferwindow"),this,SLOT(openLocalFile()));
+ m_pLocalFilePopup->setItemParameter(id,-1);
+ m_pOpenFilePopup->insertSeparator();
+ m_pLocalFilePopup->insertItem(__tr2qs_ctx("Open &With","filetransferwindow"),this,SLOT(openLocalFileWith()));
+ m_pLocalFilePopup->insertSeparator();
+ m_pLocalFilePopup->insertItem(__tr2qs_ctx("Open &Location","filetransferwindow"),this,SLOT(openLocalFileFolder()));
+ m_pLocalFilePopup->insertItem(__tr2qs_ctx("MS-DOS Prompt at Location","filetransferwindow"),this,SLOT(openLocalFileTerminal()));
+ m_pLocalFilePopup->insertSeparator();
+#endif //COMPILE_ON_WINDOWS
+// G&N end
+
+ m_pLocalFilePopup->insertItem(__tr2qs_ctx("&Copy Path to Clipboard","filetransferwindow"),this,SLOT(copyLocalFileToClipboard()));
+
+ id = m_pLocalFilePopup->insertItem(__tr2qs_ctx("&Delete file","filetransferwindow"),this,SLOT(deleteLocalFile()));
+ m_pLocalFilePopup->setItemEnabled(id,i->transfer()->terminated());
+ m_pContextPopup->insertItem(__tr2qs_ctx("Local &File","filetransferwindow"),m_pLocalFilePopup);
+
+
+ }
+
+ i->transfer()->fillContextPopup(m_pContextPopup,col);
+ m_pContextPopup->insertSeparator();
+ }
+ }
+
+
+ bool bHaveTerminated = false;
+ KviFileTransferItem * item = (KviFileTransferItem *)m_pListView->firstChild();
+ while(item)
+ {
+ if(item->transfer()->terminated())
+ {
+ bHaveTerminated = true;
+ break;
+ }
+ item = (KviFileTransferItem *)item->nextSibling();
+ }
+
+ id = m_pContextPopup->insertItem(__tr2qs_ctx("&Clear Terminated","filetransferwindow"),this,SLOT(clearTerminated()));
+ m_pContextPopup->setItemEnabled(id,bHaveTerminated);
+
+ bool bAreTransfersActive = false;
+ if(m_pListView->childCount() >= 1)
+ bAreTransfersActive = true;
+
+ id = m_pContextPopup->insertItem(__tr2qs_ctx("Clear &All","filetransferwindow"),this,SLOT(clearAll()));
+ m_pContextPopup->setItemEnabled(id,bAreTransfersActive);
+
+ m_pContextPopup->popup(pnt);
+}
+
+
+KviFileTransfer * KviFileTransferWindow::selectedTransfer()
+{
+ KviTalListViewItem * it = m_pListView->selectedItem();
+ if(!it)return 0;
+ KviFileTransferItem * i = (KviFileTransferItem *)it;
+ return i->transfer();
+}
+
+void KviFileTransferWindow::openFilePopupActivated(int id)
+{
+#ifdef COMPILE_KDE_SUPPORT
+ int ip = m_pOpenFilePopup->itemParameter(id);
+ if(ip < 0)return;
+ QString txt = m_pOpenFilePopup->text(id);
+
+ KviFileTransfer * t = selectedTransfer();
+ if(!t)return;
+ QString tmp = t->localFileName();
+ if(tmp.isEmpty())return;
+
+ QString mimetype = KMimeType::findByPath(tmp)->name();
+ KServiceTypeProfile::OfferList offers = KServiceTypeProfile::offers(mimetype,"Application");
+
+ for(KServiceTypeProfile::OfferList::Iterator itOffers = offers.begin();
+ itOffers != offers.end(); ++itOffers)
+ {
+ if(txt == (*itOffers).service()->name())
+ {
+ KURL::List lst;
+ KURL url;
+ url.setPath(tmp);
+ lst.append(url);
+ KRun::run(*((*itOffers).service()), lst);
+ break;
+ }
+ }
+#endif //COMPILE_KDE_SUPPORT
+}
+
+void KviFileTransferWindow::openLocalFileTerminal()
+{
+//-| Grifisx & Noldor |-
+#ifdef COMPILE_ON_WINDOWS
+ KviFileTransfer * t = selectedTransfer();
+ if(!t)return;
+ QString tmp = t->localFileName();
+ if(tmp.isEmpty())return;
+ int idx = tmp.findRev("/");
+ if(idx == -1)return;
+ tmp = tmp.left(idx);
+ tmp.append("\"");
+/*FIX ME " this is not a solution ...because if the drive isn't system's drive the command
+ 'cd' naturaly doesn't work"*/
+ tmp.prepend("cmd.exe /k cd \"");
+ system(tmp.local8Bit().data());
+#else //COMPILE_ON_WINDOWS
+// G&N end
+ #ifdef COMPILE_KDE_SUPPORT
+ KviFileTransfer * t = selectedTransfer();
+ if(!t)return;
+ QString tmp = t->localFileName();
+ if(tmp.isEmpty())return;
+
+ int idx = tmp.findRev("/");
+ if(idx == -1)return;
+ tmp = tmp.left(idx);
+
+ tmp.prepend("konsole --workdir=\"");
+ tmp.append("\"");
+
+ KRun::runCommand(tmp);
+ #endif //COMPILE_KDE_SUPPORT
+#endif //!COMPILE_ON_WINDOWS
+}
+
+void KviFileTransferWindow::deleteLocalFile()
+{
+ KviFileTransfer * t = selectedTransfer();
+ if(!t)return;
+
+ QString fName = t->localFileName();
+ QString tmp;
+
+ KviQString::sprintf(tmp,__tr2qs_ctx("Do you really want to delete the file %Q?","filetransferwindow"),&fName);
+
+ if(QMessageBox::warning(this,__tr2qs_ctx("Confirm delete","filetransferwindow"),
+ tmp,__tr2qs_ctx("Yes","filetransferwindow"),__tr2qs_ctx("No","filetransferwindow")) != 0)
+ return;
+
+ if(!QFile::remove(fName))
+ QMessageBox::warning(this,__tr2qs_ctx("Delete failed","filetransferwindow"),
+ __tr2qs_ctx("Failed to remove the file","filetransferwindow"),
+ __tr2qs_ctx("OK","filetransferwindow"));
+}
+
+
+void KviFileTransferWindow::openLocalFile()
+{
+//-| Grifisx & Noldor |-
+#ifdef COMPILE_ON_WINDOWS
+
+ KviFileTransfer * t = selectedTransfer();
+ if(!t)return;
+ QString tmp = t->localFileName();
+ if(tmp.isEmpty())return;
+ tmp.replace("/","\\");
+ ShellExecute(0,"open",tmp.local8Bit().data(),NULL,NULL,SW_SHOWNORMAL); //You have to link the shell32.lib
+#else //!COMPILE_ON_WINDOWS
+// G&N end
+ #ifdef COMPILE_KDE_SUPPORT
+ KviFileTransfer * t = selectedTransfer();
+ if(!t)return;
+ QString tmp = t->localFileName();
+ if(tmp.isEmpty())return;
+
+ QString mimetype = KMimeType::findByPath(tmp)->name(); //KMimeType
+ KService::Ptr offer = KServiceTypeProfile::preferredService(mimetype,"Application");
+ if(!offer)
+ {
+ openLocalFileWith();
+ return;
+ }
+
+ KURL::List lst;
+ KURL url;
+ url.setPath(tmp);
+ lst.append(url);
+ KRun::run(*offer, lst);
+ #endif //COMPILE_KDE_SUPPORT
+#endif //!COMPILE_ON_WINDOWS
+}
+
+void KviFileTransferWindow::openLocalFileWith()
+{
+//-| Grifisx & Noldor |-
+#ifdef COMPILE_ON_WINDOWS
+ KviFileTransfer * t = selectedTransfer();
+ if(!t)return;
+ QString tmp = t->localFileName();
+ if(tmp.isEmpty())return;
+ tmp.replace("/","\\");
+ tmp.prepend("rundll32.exe shell32.dll,OpenAs_RunDLL "); // this if to show the 'open with...' window
+ WinExec(tmp.local8Bit().data(),SW_SHOWNORMAL);
+#else //!COMPILE_ON_WINDOWS
+// G&N end
+ #ifdef COMPILE_KDE_SUPPORT
+ KviFileTransfer * t = selectedTransfer();
+ if(!t)return;
+ QString tmp = t->localFileName();
+ if(tmp.isEmpty())return;
+
+ KURL::List lst;
+ KURL url;
+ url.setPath(tmp);
+ lst.append(url);
+ KRun::displayOpenWithDialog(lst);
+ #endif //COMPILE_KDE_SUPPORT
+#endif //!COMPILE_ON_WINDOWS
+}
+
+void KviFileTransferWindow::copyLocalFileToClipboard()
+{
+ KviFileTransfer * t = selectedTransfer();
+ if(!t)return;
+ QString tmp = t->localFileName();
+ if(tmp.isEmpty())return;
+#ifdef COMPILE_USE_QT4
+ QApplication::clipboard()->setText(tmp);
+#else
+ QApplication::clipboard()->setSelectionMode(false);
+ QApplication::clipboard()->setText(tmp);
+ QApplication::clipboard()->setSelectionMode(true);
+ QApplication::clipboard()->setText(tmp);
+#endif
+}
+
+void KviFileTransferWindow::openLocalFileFolder()
+{
+//-| Grifisx & Noldor|-
+#ifdef COMPILE_ON_WINDOWS
+ KviFileTransfer * t = selectedTransfer();
+ if(!t)return;
+ QString tmp = t->localFileName();
+ if(tmp.isEmpty())return;
+ tmp=QFileInfo(tmp).dirPath(TRUE);
+ tmp.replace('/','\\');
+ tmp.prepend("explorer.exe ");
+ WinExec(tmp.local8Bit().data(), SW_MAXIMIZE);
+#else //!COMPILE_ON_WINDOWS
+// G&N end
+ #ifdef COMPILE_KDE_SUPPORT
+ KviFileTransfer * t = selectedTransfer();
+ if(!t)return;
+ QString tmp = t->localFileName();
+ if(tmp.isEmpty())return;
+
+ int idx = tmp.findRev("/");
+ if(idx == -1)return;
+ tmp = tmp.left(idx);
+
+ QString mimetype = KMimeType::findByPath(tmp)->name(); // inode/directory
+ KService::Ptr offer = KServiceTypeProfile::preferredService(mimetype,"Application");
+ if(!offer)return;
+
+ KURL::List lst;
+ KURL url;
+ url.setPath(tmp);
+ lst.append(url);
+ KRun::run(*offer, lst);
+ #endif //COMPILE_KDE_SUPPORT
+#endif //!COMPILE_ON_WINDOWS
+}
+
+
+void KviFileTransferWindow::heartbeat()
+{
+ if(m_pListView->childCount() < 1)return;
+
+ KviTalListViewItem * i1;
+ KviTalListViewItem * i2;
+
+ i1 = m_pListView->itemAt(QPoint(1,1));
+ if(!i1)
+ {
+ m_pListView->viewport()->update();
+ return;
+ }
+ i2 = m_pListView->itemAt(QPoint(1,m_pListView->viewport()->height() - 2));
+ if(i2)i2 = i2->nextSibling();
+
+ while(i1 && (i1 != i2))
+ {
+ if(((KviFileTransferItem *)i1)->transfer()->active())
+ {
+ m_pListView->repaintItem(i1);
+ }
+ i1 = i1->nextSibling();
+ }
+}
+
+void KviFileTransferWindow::clearAll()
+{
+ QString tmp;
+
+ bool bHaveAllTerminated = true;
+ KviFileTransferItem * item = (KviFileTransferItem *)m_pListView->firstChild();
+ while(item)
+ {
+ if(!item->transfer()->terminated())
+ {
+ bHaveAllTerminated = false;
+ break;
+ }
+ item = (KviFileTransferItem *)item->nextSibling();
+ }
+
+ KviQString::sprintf(tmp,__tr2qs_ctx("Clear all transfers, including any in progress?","filetransferwindow"));
+
+ // If any transfer is active asks for confirm
+ if(!bHaveAllTerminated)
+ if(QMessageBox::warning(this,__tr2qs_ctx("Clear All Transfers? - KVIrc","filetransferwindow"), tmp,__tr2qs_ctx("Yes","filetransferwindow"),__tr2qs_ctx("No","filetransferwindow")) != 0)
+ return;
+
+ KviFileTransferManager::instance()->killAllTransfers();
+}
+
+void KviFileTransferWindow::clearTerminated()
+{
+ KviFileTransferManager::instance()->killTerminatedTransfers();
+}
+
+void KviFileTransferWindow::getBaseLogFileName(KviStr &buffer)
+{
+ buffer.sprintf("FILETRANSFER");
+}
+
+QPixmap * KviFileTransferWindow::myIconPtr()
+{
+ return g_pIconManager->getSmallIcon(KVI_SMALLICON_FILETRANSFER);
+}
+
+void KviFileTransferWindow::resizeEvent(QResizeEvent *e)
+{
+ int h = m_pInput->heightHint();
+ m_pSplitter->setGeometry(0,0,width(),height() - h);
+ m_pInput->setGeometry(0,height() - h,width(),h);
+}
+
+QSize KviFileTransferWindow::sizeHint() const
+{
+ return m_pSplitter->sizeHint();
+}
+
+void KviFileTransferWindow::fillCaptionBuffers()
+{
+ m_szPlainTextCaption = __tr2qs_ctx("File Transfers","filetransferwindow");
+
+ m_szHtmlActiveCaption = "<nobr><font color=\"";
+ m_szHtmlActiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name();
+ m_szHtmlActiveCaption += "\"><b>";
+ m_szHtmlActiveCaption += m_szPlainTextCaption;
+ m_szHtmlActiveCaption += "</b></font></nobr>";
+
+ m_szHtmlInactiveCaption = "<nobr><font color=\"";
+ m_szHtmlInactiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name();
+ m_szHtmlInactiveCaption += "\"><b>";
+ m_szHtmlInactiveCaption += m_szPlainTextCaption;
+ m_szHtmlInactiveCaption += "</b></font></nobr>";
+}
+
+void KviFileTransferWindow::die()
+{
+ close();
+}
+
+
+
+//#warning "Load & save properties of this kind of window"
+
+//void KviFileTransferWindow::saveProperties()
+//{
+// KviWindowProperty p;
+// p.rect = externalGeometry();
+// p.isDocked = isAttacched();
+// QValueList<int> l(m_pSplitter->sizes());
+// if(l.count() >= 1)p.splitWidth1 = *(l.at(0));
+// if(l.count() >= 2)p.splitWidth2 = *(l.at(1));
+// p.timestamp = m_pView->timestamp();
+// p.imagesVisible = m_pView->imagesVisible();
+// p.isMaximized = isAttacched() && isMaximized();
+// p.topSplitWidth1 = 0;
+// p.topSplitWidth2 = 0;
+// p.topSplitWidth3 = 0;
+// g_pOptions->m_pWinPropertiesList->setProperty(caption(),&p);
+//}
+//
+//void KviFileTransferWindow::setProperties(KviWindowProperty *p)
+//{
+// QValueList<int> l;
+// l.append(p->splitWidth1);
+// l.append(p->splitWidth2);
+// m_pVertSplitter->setSizes(l);
+// m_pIrcView->setTimestamp(p->timestamp);
+// m_pIrcView->setShowImages(p->imagesVisible);
+//}
+
+void KviFileTransferWindow::applyOptions()
+{
+ m_pIrcView->applyOptions();
+ KviWindow::applyOptions();
+}
+
+#include "m_filetransferwindow.moc"
diff --git a/src/modules/filetransferwindow/filetransferwindow.h b/src/modules/filetransferwindow/filetransferwindow.h
new file mode 100644
index 00000000..423dc3a1
--- /dev/null
+++ b/src/modules/filetransferwindow/filetransferwindow.h
@@ -0,0 +1,111 @@
+#ifndef _FILETRANSFERWINDOW_H_
+#define _FILETRANSFERWINDOW_H_
+//==================================================================================
+//
+// File : filetransferwindow.h
+// Creation date : Mon Apr 21 2003 23:14:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the linkss of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//==================================================================================
+
+#include "kvi_window.h"
+#include "kvi_string.h"
+#include "kvi_ircsocket.h"
+#include "kvi_sparser.h"
+#include "kvi_console.h"
+#include "kvi_moduleextension.h"
+#include "kvi_filetransfer.h"
+#include "kvi_dynamictooltip.h"
+
+#include "kvi_tal_listview.h"
+#include "kvi_tal_popupmenu.h"
+#include <qtoolbutton.h>
+#include <qtimer.h>
+#include <qpixmap.h>
+
+
+
+class KviFileTransferItem : public KviTalListViewItem
+{
+public:
+ KviFileTransferItem(KviTalListView * v,KviFileTransfer * t);
+ ~KviFileTransferItem();
+protected:
+ KviFileTransfer * m_pTransfer;
+public:
+ KviFileTransfer * transfer(){ return m_pTransfer; };
+ virtual void paintCell(QPainter * p,const QColorGroup &cg,int column,int width,int align);
+ virtual void setHeight(int h);
+ virtual QString key(int column,bool bAcending) const;
+};
+
+
+class KviFileTransferWindow : public KviWindow , public KviModuleExtension
+{
+ friend class KviFileTransferItem;
+ Q_OBJECT
+public:
+ KviFileTransferWindow(KviModuleExtensionDescriptor * d,KviFrame * lpFrm);
+ ~KviFileTransferWindow();
+protected:
+ QSplitter * m_pVertSplitter;
+ KviTalListView * m_pListView;
+ KviTalPopupMenu * m_pContextPopup;
+ KviTalPopupMenu * m_pLocalFilePopup;
+ KviTalPopupMenu * m_pOpenFilePopup;
+ QTimer * m_pTimer;
+ QPixmap * m_pMemPixmap;
+ int m_iLineSpacing; // cached fm value
+public: // Methods
+ virtual void die();
+protected:
+ QPixmap * memPixmap(){ return m_pMemPixmap; };
+ virtual QPixmap * myIconPtr();
+ virtual void fillCaptionBuffers();
+ virtual void applyOptions();
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual void getBaseLogFileName(KviStr &buffer);
+ KviFileTransferItem * findItem(KviFileTransfer * t);
+ void fillTransferView();
+ KviFileTransfer * selectedTransfer();
+ virtual void fontChange(const QFont &oldFont);
+ bool eventFilter( QObject *obj, QEvent *ev );
+public:
+ virtual QSize sizeHint() const;
+ int lineSpacing(){ return m_iLineSpacing; };
+protected slots:
+ void transferRegistered(KviFileTransfer *t);
+ void transferUnregistering(KviFileTransfer *t);
+ void rightButtonPressed(KviTalListViewItem *it,const QPoint &pnt,int col);
+ void doubleClicked(KviTalListViewItem *it,const QPoint &pnt,int col);
+ void heartbeat();
+ void clearTerminated();
+ void clearAll();
+ void tipRequest(KviDynamicToolTip * tip,const QPoint &pnt);
+
+ void openLocalFile();
+ void openLocalFileWith();
+ void copyLocalFileToClipboard();
+ void openLocalFileFolder();
+ void openFilePopupActivated(int id);
+ void openLocalFileTerminal();
+ void deleteLocalFile();
+};
+
+#endif //_FILETRANSFERWINDOW_H_
diff --git a/src/modules/filetransferwindow/libkvifiletransferwindow.cpp b/src/modules/filetransferwindow/libkvifiletransferwindow.cpp
new file mode 100644
index 00000000..6427e5eb
--- /dev/null
+++ b/src/modules/filetransferwindow/libkvifiletransferwindow.cpp
@@ -0,0 +1,161 @@
+//==================================================================================
+//
+// File : libkvifiletransferwindow.cpp
+// Creation date : Mon Apr 21 2003 23:14:12 CEST by Szymon Stefanek
+//
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//==================================================================================
+
+#include "kvi_module.h"
+
+
+#include "filetransferwindow.h"
+
+#include "kvi_app.h"
+#include "kvi_frame.h"
+#include "kvi_window.h"
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+
+#include <qsplitter.h>
+
+KviFileTransferWindow * g_pFileTransferWindow = 0;
+
+static KviModuleExtension * filetransferwindow_extension_alloc(KviModuleExtensionAllocStruct * s)
+{
+ bool bCreateMinimized = false;
+ bool bNoRaise = false;
+
+ if(!g_pFileTransferWindow)
+ {
+ if(s->pParams)
+ {
+ if(QVariant * v = s->pParams->find("bCreateMinimized"))
+ {
+ if(v->isValid())
+ {
+ if(v->type() == QVariant::Bool)
+ {
+ bCreateMinimized = v->toBool();
+ }
+ }
+ }
+ }
+
+ g_pFileTransferWindow = new KviFileTransferWindow(s->pDescriptor,g_pFrame);
+ g_pFrame->addWindow(g_pFileTransferWindow,!bCreateMinimized);
+ if(bCreateMinimized)g_pFileTransferWindow->minimize();
+ return g_pFileTransferWindow;
+ }
+
+ if(s->pParams)
+ {
+ if(QVariant * v = s->pParams->find("bNoRaise"))
+ {
+ if(v)
+ {
+ if(v->isValid() && v->type() == QVariant::Bool)
+ bNoRaise = v->toBool();
+ }
+ }
+ }
+
+ if(!bNoRaise)g_pFileTransferWindow->delayedAutoRaise();
+ return g_pFileTransferWindow;
+}
+
+
+/*
+ @doc: filetransferwindow.open
+ @type:
+ command
+ @title:
+ filetransferwindow.open
+ @short:
+ Opens the file transfer window
+ @syntax:
+ filetransferwindow.open [-m] [-n]
+ @switches:
+ !sw: -m
+ Causes the window to be created as minimized
+ !sw: -n
+ Causes the window to be not raised if already open
+ @description:
+ Opens the file transfer window
+*/
+
+static bool filetransferwindow_kvs_cmd_open(KviKvsModuleCommandCall * c)
+{
+ KviModuleExtensionDescriptor * d = c->module()->findExtensionDescriptor("tool",KVI_FILE_TRANSFER_WINDOW_EXTENSION_NAME);
+
+ if(d)
+ {
+ KviPointerHashTable<QString,QVariant> dict(17,true);
+ dict.setAutoDelete(true);
+ QString dummy;
+ dict.replace("bCreateMinimized",new QVariant(c->hasSwitch('m',dummy)));
+ dict.replace("bNoRaise",new QVariant(c->hasSwitch('n',dummy)));
+
+ d->allocate(c->window(),&dict,0);
+ } else {
+ c->warning(__tr("Ops.. internal error"));
+ }
+ return true;
+}
+
+static bool filetransferwindow_module_init(KviModule * m)
+{
+ KviModuleExtensionDescriptor * d = m->registerExtension("tool",
+ KVI_FILE_TRANSFER_WINDOW_EXTENSION_NAME,
+ __tr2qs("Manage File &Transfers"),
+ filetransferwindow_extension_alloc);
+
+ if(d)d->setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_FILETRANSFER)));
+
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"open",filetransferwindow_kvs_cmd_open);
+
+
+ return true;
+}
+
+static bool filetransferwindow_module_cleanup(KviModule *m)
+{
+ if(g_pFileTransferWindow)
+ {
+ delete g_pFileTransferWindow;
+ g_pFileTransferWindow = 0;
+ }
+ return true;
+}
+
+static bool filetransferwindow_module_can_unload(KviModule *m)
+{
+ return (!g_pFileTransferWindow);
+}
+
+KVIRC_MODULE(
+ "FileTransferWindow",
+ "1.0.0",
+ "Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)",
+ "Links window extension",
+ filetransferwindow_module_init,
+ filetransferwindow_module_can_unload,
+ 0,
+ filetransferwindow_module_cleanup
+)
diff --git a/src/modules/help/Makefile.am b/src/modules/help/Makefile.am
new file mode 100644
index 00000000..fe6f03f6
--- /dev/null
+++ b/src/modules/help/Makefile.am
@@ -0,0 +1,22 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvihelp.la
+
+libkvihelp_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvihelp_la_SOURCES = libkvihelp.cpp helpwidget.cpp helpwindow.cpp index.cpp index.moc
+libkvihelp_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= helpwidget.h helpwindow.h index.h
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+helpwidget.cpp: helpwidget.moc
+helpwindow.cpp: helpwindow.moc
+index.cpp: index.moc
diff --git a/src/modules/help/helpwidget.cpp b/src/modules/help/helpwidget.cpp
new file mode 100644
index 00000000..4036a0dd
--- /dev/null
+++ b/src/modules/help/helpwidget.cpp
@@ -0,0 +1,154 @@
+//
+// File : helpwidget.cpp
+// Creation date : Thu Aug 10 2000 17:42:12 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "helpwidget.h"
+
+#include "kvi_frame.h"
+#include "kvi_iconmanager.h"
+#include "kvi_locale.h"
+#include "kvi_app.h"
+#include "kvi_msgbox.h"
+#include "kvi_module.h"
+#include "kvi_styled_controls.h"
+#include "helpwindow.h"
+#include "kvi_fileutils.h"
+
+#include <qtoolbutton.h>
+#include <qlineedit.h>
+#include <qtooltip.h>
+#include <qtimer.h>
+#include <qclipboard.h>
+
+extern Index * g_pDocIndex;
+extern KviPointerList<KviHelpWindow> * g_pHelpWindowList;
+extern KviPointerList<KviHelpWidget> * g_pHelpWidgetList;
+
+KviHelpWidget::KviHelpWidget(QWidget * par,KviFrame * lpFrm,bool bIsStandalone)
+: QWidget(par,"help_widget")
+{
+
+ if(bIsStandalone)g_pHelpWidgetList->append(this);
+ m_bIsStandalone = bIsStandalone;
+
+//#warning "Re enable this when using Qt 3.0 : QProcess "
+ m_pTextBrowser = new QTextBrowser(this,"text_browser");
+ m_pTextBrowser->setFrameStyle(QFrame::StyledPanel|QFrame::Sunken);
+#ifndef COMPILE_USE_QT4
+ m_pTextBrowser->setFocusPolicy(QWidget::NoFocus);
+#endif
+ m_pToolBar = new KviTalHBox(this);
+
+ m_pBtnIndex = new KviStyledToolButton(m_pToolBar);
+ m_pBtnIndex->setIconSet(*g_pIconManager->getBigIcon(KVI_BIGICON_HELPINDEX));
+ connect(m_pBtnIndex,SIGNAL(clicked()),this,SLOT(showIndex()));
+ //m_pBtnIndex->setUsesBigPixmap(true);
+
+ m_pBtnBackward = new KviStyledToolButton(m_pToolBar);
+ m_pBtnBackward->setIconSet(*g_pIconManager->getBigIcon(KVI_BIGICON_HELPBACK));
+ connect(m_pBtnBackward,SIGNAL(clicked()),m_pTextBrowser,SLOT(backward()));
+ m_pBtnBackward->setEnabled(false);
+ //m_pBtnBackward->setUsesBigPixmap(true);
+
+ m_pBtnForward = new KviStyledToolButton(m_pToolBar);
+ m_pBtnForward->setIconSet(*g_pIconManager->getBigIcon(KVI_BIGICON_HELPFORWARD));
+ connect(m_pBtnForward,SIGNAL(clicked()),m_pTextBrowser,SLOT(forward()));
+ m_pBtnForward->setEnabled(false);
+ //m_pBtnForward->setUsesBigPixmap(true);
+
+ QWidget* pSpacer=new QWidget(m_pToolBar);
+
+ if(bIsStandalone)
+ {
+ QToolButton * b = new KviStyledToolButton(m_pToolBar);
+ b->setIconSet(*g_pIconManager->getBigIcon(KVI_BIGICON_HELPCLOSE));
+ connect(b,SIGNAL(clicked()),this,SLOT(doClose()));
+ //b->setUsesBigPixmap(true);
+ }
+
+ m_pToolBar->setStretchFactor(pSpacer,1);
+ connect(m_pTextBrowser,SIGNAL(backwardAvailable(bool)),m_pBtnBackward,SLOT(setEnabled(bool)));
+ connect(m_pTextBrowser,SIGNAL(forwardAvailable(bool)),m_pBtnForward,SLOT(setEnabled(bool)));
+
+ m_pTextBrowser->viewport()->installEventFilter(this);
+
+}
+
+KviHelpWidget::~KviHelpWidget()
+{
+ if(m_bIsStandalone)g_pHelpWidgetList->removeRef(this);
+}
+
+void KviHelpWidget::showIndex()
+{
+#ifdef COMPILE_USE_QT4
+ m_pTextBrowser->setSource(QUrl("index.html"));
+#else
+ m_pTextBrowser->setSource("index.html");
+#endif
+}
+
+void KviHelpWidget::resizeEvent(QResizeEvent *e)
+{
+ int hght = m_pToolBar->sizeHint().height();
+ if(hght < 40)hght = 40;
+ m_pToolBar->setGeometry(0,0,width(),hght);
+ m_pTextBrowser->setGeometry(0,hght,width(),height() - hght);
+}
+
+void KviHelpWidget::doClose()
+{
+ // hack needed to workaround "QToolBar::emulateButtonClicked()"
+ // that refers to the "this" pointer after this slot has been
+ // called (from the "too-small-toolbar-for-all-items-popup")
+ QTimer::singleShot(0,this,SLOT(suicide()));
+}
+
+void KviHelpWidget::suicide()
+{
+ // goodbye cruel wolrd
+ delete this;
+}
+
+QSize KviHelpWidget::sizeHint() const
+{
+ int wdth = m_pTextBrowser->sizeHint().width();
+ if(m_pToolBar->sizeHint().width() > wdth)wdth = m_pToolBar->sizeHint().width();
+ QSize s(wdth,m_pTextBrowser->sizeHint().height() + m_pToolBar->sizeHint().height());
+ return s;
+}
+
+bool KviHelpWidget::eventFilter(QObject * o, QEvent *e)
+{
+ QClipboard *cb = QApplication::clipboard();
+
+ if(e->type() == QEvent::MouseButtonRelease) {
+ if(m_pTextBrowser->hasSelectedText()) {
+ cb->setText(m_pTextBrowser->selectedText());
+ }
+ }
+
+ return QWidget::eventFilter(o,e);
+}
+
+
+
+#include "helpwidget.moc"
diff --git a/src/modules/help/helpwidget.h b/src/modules/help/helpwidget.h
new file mode 100644
index 00000000..e00f8bcf
--- /dev/null
+++ b/src/modules/help/helpwidget.h
@@ -0,0 +1,61 @@
+#ifndef _HELPWIDGET_H_
+#define _HELPWIDGET_H_
+//
+// File : helpwidget.h
+// Creation date : Thu Aug 10 2000 17:26:20 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_tal_hbox.h"
+#include <qtextbrowser.h>
+#include "index.h"
+#include <qprogressbar.h>
+
+class KviFrame;
+class QToolButton;
+class QLineEdit;
+//class KviProcess;
+
+class KviHelpWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ KviHelpWidget(QWidget *par,KviFrame * lpFrm,bool bIsStandalone = false);
+ ~KviHelpWidget();
+private:
+ QToolButton * m_pBtnIndex;
+ QToolButton * m_pBtnBackward;
+ QToolButton * m_pBtnForward;
+ KviTalHBox * m_pToolBar;
+ QTextBrowser * m_pTextBrowser;
+ bool m_bIsStandalone;
+protected:
+ virtual void resizeEvent(QResizeEvent *e);
+ bool eventFilter(QObject *, QEvent *);
+protected slots:
+ void doClose();
+ void showIndex();
+ void suicide();
+public:
+ virtual QSize sizeHint() const;
+ QTextBrowser * textBrowser() { return m_pTextBrowser; }
+};
+
+
+#endif //_HELPWIDGET_H_
diff --git a/src/modules/help/helpwindow.cpp b/src/modules/help/helpwindow.cpp
new file mode 100644
index 00000000..9fc11427
--- /dev/null
+++ b/src/modules/help/helpwindow.cpp
@@ -0,0 +1,329 @@
+//
+// File : helpwindow.cpp
+// Creation date : Tue Aug 11 2000 18:08:22 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the m_terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "helpwindow.h"
+#include "helpwidget.h"
+#include "kvi_app.h"
+
+#include "kvi_iconmanager.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_module.h"
+#include "kvi_config.h"
+#include "kvi_styled_controls.h"
+
+#include <qfileinfo.h>
+#include <qsplitter.h>
+#include <qlineedit.h>
+#include <qmessagebox.h>
+#include <qregexp.h>
+#include <qtooltip.h>
+#include "kvi_valuelist.h"
+
+#include "kvi_sourcesdate.h"
+
+extern Index * g_pDocIndex;
+extern KviPointerList<KviHelpWindow> * g_pHelpWindowList;
+extern KviPointerList<KviHelpWidget> * g_pHelpWidgetList;
+
+bool g_bIndexingDone = FALSE;
+KviHelpWindow::KviHelpWindow(KviFrame * lpFrm,const char * name)
+: KviWindow(KVI_WINDOW_TYPE_HELP,lpFrm,name)
+{
+
+ if(!g_bIndexingDone)
+ {
+ QString szDoclist,szDict;
+
+ g_pApp->getLocalKvircDirectory(szDoclist,KviApp::Help,"help.doclist." KVI_SOURCES_DATE);
+ g_pApp->getLocalKvircDirectory(szDict,KviApp::Help,"help.dict." KVI_SOURCES_DATE);
+
+ if ( QFileInfo( szDoclist ).exists() && QFileInfo( szDict ).exists() ) {
+ g_pDocIndex->readDict();
+ } else {
+#ifdef COMPILE_USE_QT4
+ QProgressDialog* pProgressDialog = new QProgressDialog( __tr2qs("Indexing help files"), __tr2qs("Cancel"), 0,100 );
+#else
+ QProgressDialog* pProgressDialog = new QProgressDialog( __tr2qs("Indexing help files"), __tr2qs("Cancel"), 100 );
+#endif
+ connect(g_pDocIndex,SIGNAL(indexingProgress(int)), pProgressDialog, SLOT(setProgress(int)) );
+ g_pDocIndex->makeIndex();
+ g_pDocIndex->writeDict();
+ g_pDocIndex->writeDocumentList();
+ delete pProgressDialog;
+ }
+ g_bIndexingDone=TRUE;
+ }
+
+ g_pHelpWindowList->append(this);
+ m_pSplitter = new QSplitter(Qt::Horizontal,this,"main_splitter");
+ m_pHelpWidget = new KviHelpWidget(m_pSplitter,lpFrm);
+
+ m_pToolBar=new KviTalVBox(m_pSplitter);
+
+ m_pTabWidget = new QTabWidget(m_pToolBar);
+
+ m_pIndexTab = new KviTalVBox(m_pTabWidget);
+ m_pTabWidget->insertTab(m_pIndexTab,__tr2qs("Index"));
+
+ KviTalHBox* pSearchBox = new KviTalHBox(m_pIndexTab);
+ m_pIndexSearch = new QLineEdit(pSearchBox);
+ connect( m_pIndexSearch, SIGNAL( textChanged(const QString&) ),
+ this, SLOT( searchInIndex(const QString&) ) );
+ connect( m_pIndexSearch, SIGNAL( returnPressed() ),
+ this, SLOT( showIndexTopic() ) );
+
+ KviStyledToolButton* pBtnRefreshIndex = new KviStyledToolButton(pSearchBox);
+ pBtnRefreshIndex->setIconSet(*g_pIconManager->getBigIcon(KVI_REFRESH_IMAGE_NAME));
+ connect(pBtnRefreshIndex,SIGNAL(clicked()),this,SLOT(refreshIndex()));
+ QToolTip::add( pBtnRefreshIndex, __tr2qs("Refresh index") );
+
+ m_pIndexListBox = new KviTalListBox(m_pIndexTab);
+ QStringList docList=g_pDocIndex->titlesList();
+ m_pIndexListBox->insertStringList(docList);
+ connect(m_pIndexListBox,SIGNAL(selected(int)),this,SLOT(indexSelected ( int )));
+ m_pIndexListBox->sort();
+
+ m_pSearchTab = new KviTalVBox(m_pTabWidget);
+ m_pTabWidget->insertTab(m_pSearchTab,__tr2qs("Search"));
+
+ m_pTermsEdit = new QLineEdit(m_pSearchTab);
+/* connect( m_pTermsEdit, SIGNAL( textChanged(const QString&) ),
+ this, SLOT( searchInIndex(const QString&) ) );*/
+ connect( m_pTermsEdit, SIGNAL( returnPressed() ),
+ this, SLOT( startSearch() ) );
+
+ m_pResultBox = new KviTalListBox(m_pSearchTab);
+ connect(m_pResultBox,SIGNAL(selected(int)),this,SLOT(searchSelected ( int )));
+
+ KviValueList<int> li;
+ li.append(width()-80);
+ li.append(80);
+ m_pSplitter->setSizes(li);
+
+}
+
+KviHelpWindow::~KviHelpWindow()
+{
+ g_pHelpWindowList->removeRef(this);
+}
+
+void KviHelpWindow::saveProperties(KviConfig *cfg)
+{
+ KviWindow::saveProperties(cfg);
+ cfg->writeEntry("Splitter",m_pSplitter->sizes());
+}
+
+void KviHelpWindow::loadProperties(KviConfig *cfg)
+{
+ KviValueList<int> def;
+ int w = width();
+ def.append((w * 82) / 100);
+ def.append((w * 18) / 100);
+ m_pSplitter->setSizes(cfg->readIntListEntry("Splitter",def));
+ KviWindow::loadProperties(cfg);
+}
+
+
+void KviHelpWindow::refreshIndex()
+{
+ m_pIndexListBox->clear();
+#ifdef COMPILE_USE_QT4
+ QProgressDialog* pProgressDialog = new QProgressDialog( __tr2qs("Indexing help files"), __tr2qs("Cancel"), 0,100 );
+#else
+ QProgressDialog* pProgressDialog = new QProgressDialog( __tr2qs("Indexing help files"), __tr2qs("Cancel"), 100 );
+#endif
+ connect(g_pDocIndex,SIGNAL(indexingProgress(int)), pProgressDialog, SLOT(setProgress(int)) );
+ g_pDocIndex->makeIndex();
+ g_pDocIndex->writeDict();
+ g_pDocIndex->writeDocumentList();
+ delete pProgressDialog;
+ g_bIndexingDone=TRUE;
+ QStringList docList=g_pDocIndex->titlesList();
+ m_pIndexListBox->insertStringList(docList);
+ m_pIndexListBox->sort();
+}
+
+void KviHelpWindow::startSearch()
+{
+
+ QString str = m_pTermsEdit->text();
+ str = str.replace( "\'", "\"" );
+ str = str.replace( "`", "\"" );
+ QString buf = str;
+ str = str.replace( "-", " " );
+ str = str.replace( QRegExp( "\\s[\\S]?\\s" ), " " );
+ m_terms = QStringList::split( " ", str );
+ QStringList termSeq;
+ QStringList seqWords;
+ QStringList::iterator it = m_terms.begin();
+ for ( ; it != m_terms.end(); ++it ) {
+ (*it) = (*it).simplifyWhiteSpace();
+ (*it) = (*it).lower();
+ (*it) = (*it).replace( "\"", "" );
+ }
+ if ( str.contains( '\"' ) ) {
+#ifdef COMPILE_USE_QT4
+ if ( (str.count( '\"' ))%2 == 0 ) {
+#else
+ if ( (str.contains( '\"' ))%2 == 0 ) {
+#endif
+ int beg = 0;
+ int end = 0;
+ QString s;
+ beg = str.find( '\"', beg );
+ while ( beg != -1 ) {
+ beg++;
+ end = str.find( '\"', beg );
+ s = str.mid( beg, end - beg );
+ s = s.lower();
+ s = s.simplifyWhiteSpace();
+ if ( s.contains( '*' ) ) {
+ QMessageBox::warning( this, tr( "Full Text Search" ),
+ tr( "Using a wildcard within phrases is not allowed." ) );
+ return;
+ }
+ seqWords += QStringList::split( ' ', s );
+ termSeq << s;
+ beg = str.find( '\"', end + 1);
+ }
+ } else {
+ QMessageBox::warning( this, tr( "Full Text Search" ),
+ tr( "The closing quotation mark is missing." ) );
+ return;
+ }
+ }
+#ifdef COMPILE_USE_QT4
+ setCursor( Qt::WaitCursor );
+#else
+ setCursor( waitCursor );
+#endif
+ m_foundDocs.clear();
+ m_foundDocs = g_pDocIndex->query( m_terms, termSeq, seqWords );
+
+ m_pResultBox->clear();
+ for ( it = m_foundDocs.begin(); it != m_foundDocs.end(); ++it )
+ m_pResultBox->insertItem( g_pDocIndex->getDocumentTitle( *it ) );
+
+ m_terms.clear();
+ bool isPhrase = FALSE;
+ QString s = "";
+ for ( int i = 0; i < (int)buf.length(); ++i ) {
+ if ( buf[i] == '\"' ) {
+ isPhrase = !isPhrase;
+ s = s.simplifyWhiteSpace();
+ if ( !s.isEmpty() )
+ m_terms << s;
+ s = "";
+ } else if ( buf[i] == ' ' && !isPhrase ) {
+ s = s.simplifyWhiteSpace();
+ if ( !s.isEmpty() )
+ m_terms << s;
+ s = "";
+ } else
+ s += buf[i];
+ }
+ if ( !s.isEmpty() )
+ m_terms << s;
+
+#ifdef COMPILE_USE_QT4
+ setCursor( Qt::ArrowCursor );
+#else
+ setCursor( arrowCursor );
+#endif
+}
+
+QTextBrowser * KviHelpWindow::textBrowser()
+{
+ return m_pHelpWidget->textBrowser();
+}
+
+void KviHelpWindow::showIndexTopic()
+{
+ if (m_pIndexSearch->text().isEmpty()|| !m_pIndexListBox->selectedItem()) return;
+ int i=g_pDocIndex->titlesList().findIndex(m_pIndexListBox->selectedItem()->text());
+ textBrowser()->setSource(g_pDocIndex->documentList()[ i ]);
+}
+
+void KviHelpWindow::searchInIndex( const QString &s )
+{
+ KviTalListBoxItem *i = m_pIndexListBox->firstItem();
+ QString sl = s.lower();
+ while ( i ) {
+ QString t = i->text();
+ if ( t.length() >= sl.length() &&
+ i->text().left(s.length()).lower() == sl ) {
+ m_pIndexListBox->setCurrentItem( i );
+ m_pIndexListBox->setTopItem(m_pIndexListBox->index(i));
+ break;
+ }
+ i = i->next();
+ }
+}
+
+void KviHelpWindow::indexSelected ( int index )
+{
+ int i=g_pDocIndex->titlesList().findIndex(m_pIndexListBox->text(index));
+ textBrowser()->setSource(g_pDocIndex->documentList()[ i ]);
+}
+
+void KviHelpWindow::searchSelected ( int index )
+{
+ int i=g_pDocIndex->titlesList().findIndex(m_pResultBox->text(index));
+ textBrowser()->setSource(g_pDocIndex->documentList()[ i ]);
+}
+
+QPixmap * KviHelpWindow::myIconPtr()
+{
+ return g_pIconManager->getSmallIcon(KVI_SMALLICON_MDIHELP);
+}
+
+void KviHelpWindow::resizeEvent(QResizeEvent *e)
+{
+ m_pSplitter->setGeometry(0,0,width(),height());
+}
+
+QSize KviHelpWindow::sizeHint() const
+{
+ return m_pHelpWidget->sizeHint();
+}
+void KviHelpWindow::fillCaptionBuffers()
+{
+ m_szPlainTextCaption = __tr2qs("Help Browser");
+
+ m_szHtmlActiveCaption = "<nobr><font color=\"";
+ m_szHtmlActiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name();
+ m_szHtmlActiveCaption += "\"><b>";
+ m_szHtmlActiveCaption += m_szPlainTextCaption;
+ m_szHtmlActiveCaption += "</b></font></nobr>";
+
+
+ m_szHtmlInactiveCaption = "<nobr><font color=\"";
+ m_szHtmlInactiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name();
+ m_szHtmlInactiveCaption += "\"><b>";
+ m_szHtmlInactiveCaption += m_szPlainTextCaption;
+ m_szHtmlInactiveCaption += "</b></font></nobr>";
+}
+
+
+#include "helpwindow.moc"
diff --git a/src/modules/help/helpwindow.h b/src/modules/help/helpwindow.h
new file mode 100644
index 00000000..70f27af6
--- /dev/null
+++ b/src/modules/help/helpwindow.h
@@ -0,0 +1,75 @@
+#ifndef _HELPWINDOW_H_
+#define _HELPWINDOW_H_
+//
+// File : helpwindow.h
+// Creation date : Fri Aug 11 2000 18:05:59 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_window.h"
+#include "kvi_string.h"
+#include "kvi_tal_vbox.h"
+#include <qtabwidget.h>
+#include "kvi_tal_listbox.h"
+#include <qlineedit.h>
+#include <qprogressdialog.h>
+
+class KviHelpWidget;
+class QTextBrowser;
+
+class KviHelpWindow : public KviWindow
+{
+ Q_OBJECT
+public:
+ KviHelpWindow(KviFrame * lpFrm,const char * name);
+ ~KviHelpWindow();
+protected:
+ KviHelpWidget * m_pHelpWidget;
+ KviTalVBox * m_pToolBar;
+ QTabWidget * m_pTabWidget;
+ KviTalVBox * m_pIndexTab;
+ KviTalVBox * m_pSearchTab;
+
+ KviTalListBox * m_pIndexListBox;
+ QLineEdit * m_pIndexSearch;
+ QStringList m_foundDocs;
+ QStringList m_terms;
+ KviTalListBox * m_pResultBox;
+ QLineEdit * m_pTermsEdit;
+public:
+ KviHelpWidget * helpWidget(){ return m_pHelpWidget; };
+protected:
+ virtual QPixmap * myIconPtr();
+ virtual void fillCaptionBuffers();
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual void saveProperties(KviConfig * cfg);
+ virtual void loadProperties(KviConfig * cfg);
+public:
+ virtual QSize sizeHint() const;
+ QTextBrowser * textBrowser();
+public slots:
+ void indexSelected ( int );
+ void searchInIndex( const QString &s );
+ void showIndexTopic();
+ void startSearch();
+ void searchSelected ( int index );
+ void refreshIndex();
+};
+
+#endif //_KVI_HELPWINDOW_H_
diff --git a/src/modules/help/index.cpp b/src/modules/help/index.cpp
new file mode 100755
index 00000000..659ff44c
--- /dev/null
+++ b/src/modules/help/index.cpp
@@ -0,0 +1,854 @@
+#include "index.h"
+
+#include "kvi_file.h"
+#include <qdir.h>
+#include <qstringlist.h>
+#include "kvi_pointerhashtable.h"
+#include <qapplication.h>
+#include <qtextstream.h>
+#include <ctype.h>
+
+
+int kvi_compare(const Term * p1,const Term * p2)
+{
+ if(p1->frequency == p2->frequency)
+ return 0;
+ if(p1->frequency < p2->frequency)
+ return -1;
+ return 1;
+}
+
+QDataStream &operator>>( QDataStream &s, Document &l )
+{
+ s >> l.docNumber;
+ s >> l.frequency;
+ return s;
+}
+
+QDataStream &operator<<( QDataStream &s, const Document &l )
+{
+ s << (Q_INT16)l.docNumber;
+ s << (Q_INT16)l.frequency;
+ return s;
+}
+
+Index::Index( const QString &dp, const QString &hp )
+
+ : QObject( 0, 0 ), dict( 8999 ), docPath( dp )
+
+{
+ alreadyHaveDocList = FALSE;
+ lastWindowClosed = FALSE;
+ connect( qApp, SIGNAL( lastWindowClosed() ),
+ this, SLOT( setLastWinClosed() ) );
+}
+
+
+
+Index::Index( const QStringList &dl, const QString &hp )
+
+ : QObject( 0, 0 ), dict( 8999 )
+
+{
+ docList = dl;
+ alreadyHaveDocList = TRUE;
+ lastWindowClosed = FALSE;
+ connect( qApp, SIGNAL( lastWindowClosed() ),
+ this, SLOT( setLastWinClosed() ) );
+}
+
+
+
+void Index::setLastWinClosed()
+
+{
+
+ lastWindowClosed = TRUE;
+
+}
+
+
+
+void Index::setDictionaryFile( const QString &f )
+
+{
+
+ dictFile = f;
+
+}
+
+
+
+void Index::setDocListFile( const QString &f )
+{
+ docListFile = f;
+}
+
+
+
+int Index::makeIndex()
+{
+ if ( !alreadyHaveDocList )
+ setupDocumentList();
+ if ( docList.isEmpty() )
+ return 1;
+ dict.clear();
+ QStringList::Iterator it = docList.begin();
+ int steps = docList.count() / 100;
+ if ( !steps )
+ steps++;
+ int prog = 0;
+ for ( int i = 0; it != docList.end(); ++it, ++i ) {
+ if ( lastWindowClosed ) {
+ return -1;
+ }
+ parseDocument( *it, i );
+ if ( i%steps == 0 ) {
+ prog++;
+ emit indexingProgress( prog );
+ }
+ }
+ return 0;
+}
+
+
+
+void Index::setupDocumentList()
+
+{
+ docList.clear();
+ titleList.clear();
+ QDir d( docPath );
+ QString szCur;
+ QStringList lst = d.entryList( "*.html" );
+ QStringList::ConstIterator it = lst.begin();
+ for ( ; it != lst.end(); ++it )
+ {
+ szCur=docPath + "/" + *it;
+ docList.append( szCur );
+ titleList.append(getDocumentTitle( szCur ));
+ }
+}
+
+
+
+void Index::insertInDict( const QString &str, int docNum )
+{
+ if ( strcmp( str, "amp" ) == 0 || strcmp( str, "nbsp" ) == 0 )
+ return;
+ Entry *e = 0;
+ if ( dict.count() )
+ e = dict[ str ];
+
+ if ( e ) {
+ if ( e->documents.first().docNumber != docNum )
+ e->documents.prepend( Document( docNum, 1 ) );
+ else
+ e->documents.first().frequency++;
+ } else {
+ dict.insert( str, new Entry( docNum ) );
+ }
+}
+
+
+
+void Index::parseDocument( const QString &filename, int docNum )
+{
+ KviFile file( filename );
+ if ( !file.openForReading() ) {
+ qWarning( "can not open file " + filename );
+ return;
+ }
+ QTextStream s( &file );
+ QString text = s.read();
+ if (text.isNull())
+ return;
+ bool valid = TRUE;
+ const QChar *buf = text.unicode();
+ QChar str[64];
+ QChar c = buf[0];
+ int j = 0;
+ int i = 0;
+ while ( (uint)j < text.length() ) {
+ if ( c == '<' || c == '&' ) {
+ valid = FALSE;
+ if ( i > 1 )
+ insertInDict( QString(str,i), docNum );
+ i = 0;
+ c = buf[++j];
+ continue;
+ }
+ if ( ( c == '>' || c == ';' ) && !valid ) {
+ valid = TRUE;
+ c = buf[++j];
+ continue;
+ }
+
+ if ( !valid ) {
+
+ c = buf[++j];
+
+ continue;
+
+ }
+
+ if ( ( c.isLetterOrNumber() || c == '_' ) && i < 63 ) {
+
+ str[i] = c.lower();
+
+ ++i;
+
+ } else {
+
+ if ( i > 1 )
+
+ insertInDict( QString(str,i), docNum );
+
+ i = 0;
+
+ }
+
+ c = buf[++j];
+
+ }
+
+ if ( i > 1 )
+
+ insertInDict( QString(str,i), docNum );
+
+ file.close();
+
+}
+
+
+
+void Index::writeDict()
+
+{
+
+ KviPointerHashTableIterator<QString,Entry> it( dict );
+
+ KviFile f( dictFile );
+
+ if ( !f.openForWriting() )
+
+ return;
+
+ QDataStream s( &f );
+
+ for( ; it.current(); ++it ) {
+
+ Entry *e = it.current();
+
+ s << it.currentKey();
+
+ s << e->documents;
+
+ }
+
+ f.close();
+
+ writeDocumentList();
+
+}
+
+
+
+void Index::writeDocumentList()
+
+{
+ KviFile f( docListFile );
+ if ( !f.openForWriting() )
+ return;
+ QTextStream s( &f );
+ QString docs = docList.join("[#item#]");
+ s << docs;
+
+ KviFile f1( docListFile+".titles" );
+ if ( !f1.openForWriting() )
+ return;
+ QTextStream s1( &f1 );
+ docs = titleList.join("[#item#]");
+ s1 << docs;
+}
+
+
+
+void Index::readDict()
+
+{
+ KviFile f( dictFile );
+ if ( !f.openForReading() )
+ return;
+ dict.clear();
+ QDataStream s( &f );
+ QString key;
+ KviValueList<Document> docs;
+ while ( !s.atEnd() ) {
+ s >> key;
+ s >> docs;
+ dict.insert( key, new Entry( docs ) );
+ }
+ f.close();
+ readDocumentList();
+}
+
+
+
+void Index::readDocumentList()
+{
+ //reading docs
+ KviFile f( docListFile );
+ if ( !f.openForReading() )
+ return;
+ QTextStream s( &f );
+ docList = QStringList::split("[#item#]",s.read());
+
+ //reading titles
+ KviFile f1( docListFile+".titles" );
+ if ( !f1.openForReading() )
+ return;
+ QTextStream s1( &f1 );
+ titleList = QStringList::split("[#item#]",s1.read());
+// debug(titleList);
+}
+
+
+
+QStringList Index::query( const QStringList &terms, const QStringList &termSeq, const QStringList &seqWords )
+
+{
+
+ TermList termList;
+
+
+
+ QStringList::ConstIterator it = terms.begin();
+
+ for ( it = terms.begin(); it != terms.end(); ++it ) {
+
+ Entry *e = 0;
+
+ if ( (*it).contains( '*' ) ) {
+
+ KviValueList<Document> wcts = setupDummyTerm( getWildcardTerms( *it ) );
+
+ termList.append( new Term( "dummy", wcts.count(), wcts ) );
+
+ } else if ( dict[ *it ] ) {
+
+ e = dict[ *it ];
+
+ termList.append( new Term( *it, e->documents.count(), e->documents ) );
+
+ } else {
+
+ return QStringList();
+
+ }
+
+ }
+
+ termList.sort();
+
+
+
+ Term *minTerm = termList.first();
+
+ if ( !termList.count() )
+
+ return QStringList();
+
+ termList.removeFirst();
+
+
+
+ KviValueList<Document> minDocs = minTerm->documents;
+
+ KviValueList<Document>::iterator C;
+
+ KviValueList<Document>::ConstIterator It;
+
+ Term *t = termList.first();
+
+ for ( ; t; t = termList.next() ) {
+
+ KviValueList<Document> docs = t->documents;
+
+ C = minDocs.begin();
+
+ while ( C != minDocs.end() ) {
+
+ bool found = FALSE;
+
+ for ( It = docs.begin(); It != docs.end(); ++It ) {
+
+ if ( (*C).docNumber == (*It).docNumber ) {
+
+ (*C).frequency += (*It).frequency;
+
+ found = TRUE;
+
+ break;
+
+ }
+
+ }
+
+ if ( !found )
+
+ C = minDocs.remove( C );
+
+ else
+
+ ++C;
+
+ }
+
+ }
+
+
+
+ QStringList results;
+
+#ifndef COMPILE_USE_QT4
+ qHeapSort( minDocs );
+#endif
+ if ( termSeq.isEmpty() ) {
+
+ for ( C = minDocs.begin(); C != minDocs.end(); ++C )
+
+ results << docList[ (int)(*C).docNumber ];
+
+ return results;
+
+ }
+
+
+
+ QString fileName;
+
+ for ( C = minDocs.begin(); C != minDocs.end(); ++C ) {
+
+ fileName = docList[ (int)(*C).docNumber ];
+
+ if ( searchForPattern( termSeq, seqWords, fileName ) )
+
+ results << fileName;
+
+ }
+
+ return results;
+
+}
+
+
+
+QString Index::getDocumentTitle( const QString &fileName )
+
+{
+
+ KviFile file( fileName );
+
+ if ( !file.openForReading() ) {
+
+ qWarning( "cannot open file " + fileName );
+
+ return fileName;
+
+ }
+
+ QTextStream s( &file );
+
+ QString text = s.read();
+
+
+
+ int start = text.find( "<title>", 0, FALSE ) + 7;
+
+ int end = text.find( "</title>", 0, FALSE );
+
+
+
+ QString title = ( end - start <= 0 ? tr("Untitled") : text.mid( start, end - start ) );
+
+ return title;
+
+}
+
+
+
+QStringList Index::getWildcardTerms( const QString &term )
+
+{
+
+ QStringList lst;
+
+ QStringList terms = split( term );
+
+#ifdef COMPILE_USE_QT4
+ QStringList::Iterator iter;
+#else
+ KviValueList<QString>::iterator iter;
+#endif
+
+
+ KviPointerHashTableIterator<QString,Entry> it( dict );
+
+ for( ; it.current(); ++it ) {
+
+ int index = 0;
+
+ bool found = FALSE;
+
+ QString text( it.currentKey() );
+
+ for ( iter = terms.begin(); iter != terms.end(); ++iter ) {
+
+ if ( *iter == "*" ) {
+
+ found = TRUE;
+
+ continue;
+
+ }
+
+ if ( iter == terms.begin() && (*iter)[0] != text[0] ) {
+
+ found = FALSE;
+
+ break;
+
+ }
+
+ index = text.find( *iter, index );
+
+ if ( *iter == terms.last() && index != (int)text.length()-1 ) {
+
+ index = text.findRev( *iter );
+
+ if ( index != (int)text.length() - (int)(*iter).length() ) {
+
+ found = FALSE;
+
+ break;
+
+ }
+
+ }
+
+ if ( index != -1 ) {
+
+ found = TRUE;
+
+ index += (*iter).length();
+
+ continue;
+
+ } else {
+
+ found = FALSE;
+
+ break;
+
+ }
+
+ }
+
+ if ( found )
+
+ lst << text;
+
+ }
+
+
+
+ return lst;
+
+}
+
+
+
+QStringList Index::split( const QString &str )
+
+{
+
+ QStringList lst;
+
+ int j = 0;
+
+ int i = str.find( '*', j );
+
+
+
+ while ( i != -1 ) {
+
+ if ( i > j && i <= (int)str.length() ) {
+
+ lst << str.mid( j, i - j );
+
+ lst << "*";
+
+ }
+
+ j = i + 1;
+
+ i = str.find( '*', j );
+
+ }
+
+
+
+ int l = str.length() - 1;
+
+ if ( str.mid( j, l - j + 1 ).length() > 0 )
+
+ lst << str.mid( j, l - j + 1 );
+
+
+
+ return lst;
+
+}
+
+
+
+KviValueList<Document> Index::setupDummyTerm( const QStringList &terms )
+
+{
+
+ TermList termList;
+
+ QStringList::ConstIterator it = terms.begin();
+
+ for ( ; it != terms.end(); ++it ) {
+
+ Entry *e = 0;
+
+ if ( dict[ *it ] ) {
+
+ e = dict[ *it ];
+
+ termList.append( new Term( *it, e->documents.count(), e->documents ) );
+
+ }
+
+ }
+
+ termList.sort();
+
+
+
+ KviValueList<Document> maxList;
+
+
+
+ if ( !termList.count() )
+
+ return maxList;
+
+ maxList = termList.last()->documents;
+
+ termList.removeLast();
+
+
+
+ KviValueList<Document>::iterator docIt;
+
+ Term *t = termList.first();
+
+ while ( t ) {
+
+ KviValueList<Document> docs = t->documents;
+
+ for ( docIt = docs.begin(); docIt != docs.end(); ++docIt ) {
+
+ if ( maxList.findIndex( *docIt ) == -1 )
+
+ maxList.append( *docIt );
+
+ }
+
+ t = termList.next();
+
+ }
+
+ return maxList;
+
+}
+
+
+
+void Index::buildMiniDict( const QString &str )
+
+{
+
+ if ( miniDict[ str ] )
+
+ miniDict[ str ]->positions.append( wordNum );
+
+ ++wordNum;
+
+}
+
+
+
+bool Index::searchForPattern( const QStringList &patterns, const QStringList &words, const QString &fileName )
+
+{
+
+ KviFile file( fileName );
+
+ if ( !file.openForReading() ) {
+
+ qWarning( "cannot open file " + fileName );
+
+ return FALSE;
+
+ }
+
+
+
+ wordNum = 3;
+
+ miniDict.clear();
+
+ QStringList::ConstIterator cIt = words.begin();
+
+ for ( ; cIt != words.end(); ++cIt )
+
+ miniDict.insert( *cIt, new PosEntry( 0 ) );
+
+
+
+ QTextStream s( &file );
+
+ QString text = s.read();
+
+ bool valid = TRUE;
+
+ const QChar *buf = text.unicode();
+
+ QChar str[64];
+
+ QChar c = buf[0];
+
+ int j = 0;
+
+ int i = 0;
+
+ while ( (uint)j < text.length() ) {
+
+ if ( c == '<' || c == '&' ) {
+
+ valid = FALSE;
+
+ if ( i > 1 )
+
+ buildMiniDict( QString(str,i) );
+
+ i = 0;
+
+ c = buf[++j];
+
+ continue;
+
+ }
+
+ if ( ( c == '>' || c == ';' ) && !valid ) {
+
+ valid = TRUE;
+
+ c = buf[++j];
+
+ continue;
+
+ }
+
+ if ( !valid ) {
+
+ c = buf[++j];
+
+ continue;
+
+ }
+
+ if ( ( c.isLetterOrNumber() || c == '_' ) && i < 63 ) {
+
+ str[i] = c.lower();
+
+ ++i;
+
+ } else {
+
+ if ( i > 1 )
+
+ buildMiniDict( QString(str,i) );
+
+ i = 0;
+
+ }
+
+ c = buf[++j];
+
+ }
+
+ if ( i > 1 )
+
+ buildMiniDict( QString(str,i) );
+
+ file.close();
+
+
+
+ QStringList::ConstIterator patIt = patterns.begin();
+
+ QStringList wordLst;
+
+ KviValueList<uint> a, b;
+
+ KviValueList<uint>::iterator aIt;
+
+ for ( ; patIt != patterns.end(); ++patIt ) {
+
+ wordLst = QStringList::split( ' ', *patIt );
+
+ a = miniDict[ wordLst[0] ]->positions;
+
+ for ( int j = 1; j < (int)wordLst.count(); ++j ) {
+
+ b = miniDict[ wordLst[j] ]->positions;
+
+ aIt = a.begin();
+
+ while ( aIt != a.end() ) {
+
+ if ( b.find( *aIt + 1 ) != b.end() ) {
+
+ (*aIt)++;
+
+ ++aIt;
+
+ } else {
+
+ aIt = a.remove( aIt );
+
+ }
+
+ }
+
+ }
+
+ }
+
+ if ( a.count() )
+
+ return TRUE;
+
+ return FALSE;
+
+}
+
+
+
+#include "index.moc" \ No newline at end of file
diff --git a/src/modules/help/index.h b/src/modules/help/index.h
new file mode 100755
index 00000000..9debcb3e
--- /dev/null
+++ b/src/modules/help/index.h
@@ -0,0 +1,124 @@
+/**********************************************************************
+** Copyright (C) 2000-2003 Trolltech AS. All rights reserved.
+**
+** This file is part of the Qt Assistant.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
+** licenses may use this file in accordance with the Qt Commercial License
+** Agreement provided with the Software.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+** See http://www.trolltech.com/pricing.html or email [email protected] for
+** information about Qt Commercial License Agreements.
+**
+** Contact [email protected] if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+
+
+#ifndef INDEX_H
+#define INDEX_H
+
+#include <qstringlist.h>
+#include "kvi_pointerhashtable.h"
+#include "kvi_pointerlist.h"
+#include "kvi_valuelist.h"
+#include <qdatastream.h>
+#include <qobject.h>
+
+struct Document {
+ Document( int d, int f ) : docNumber( d ), frequency( f ) {}
+ Document() : docNumber( -1 ), frequency( 0 ) {}
+ bool operator==( const Document &doc ) const {
+ return docNumber == doc.docNumber;
+ }
+ bool operator<( const Document &doc ) const {
+ return frequency > doc.frequency;
+ }
+ bool operator<=( const Document &doc ) const {
+ return frequency >= doc.frequency;
+ }
+ bool operator>( const Document &doc ) const {
+ return frequency < doc.frequency;
+ }
+ Q_INT16 docNumber;
+ Q_INT16 frequency;
+};
+
+QDataStream &operator>>( QDataStream &s, Document &l );
+QDataStream &operator<<( QDataStream &s, const Document &l );
+
+class Index : public QObject
+{
+ Q_OBJECT
+public:
+ struct Entry {
+ Entry( int d ) { documents.append( Document( d, 1 ) ); }
+ Entry( KviValueList<Document> l ) : documents( l ) {}
+ KviValueList<Document> documents;
+ };
+ struct PosEntry {
+ PosEntry( int p ) { positions.append( p ); }
+ KviValueList<uint> positions;
+ };
+ Index( const QString &dp, const QString &hp );
+ Index( const QStringList &dl, const QString &hp );
+ void writeDict();
+ void readDict();
+ int makeIndex();
+ QStringList query( const QStringList&, const QStringList&, const QStringList& );
+ QString getDocumentTitle( const QString& );
+ void setDictionaryFile( const QString& );
+ void setDocListFile( const QString& );
+ void writeDocumentList();
+ void readDocumentList();
+ void setupDocumentList();
+ const QStringList& documentList() { return docList; };
+ const QStringList& titlesList() { return titleList; };
+signals:
+ void indexingProgress( int );
+private slots:
+ void setLastWinClosed();
+private:
+ void parseDocument( const QString&, int );
+ void insertInDict( const QString&, int );
+ QStringList getWildcardTerms( const QString& );
+ QStringList split( const QString& );
+ KviValueList<Document> setupDummyTerm( const QStringList& );
+ bool searchForPattern( const QStringList&, const QStringList&, const QString& );
+ void buildMiniDict( const QString& );
+ QStringList docList;
+ QStringList titleList;
+ KviPointerHashTable<QString,Entry> dict;
+ KviPointerHashTable<QString,PosEntry> miniDict;
+ uint wordNum;
+ QString docPath;
+ QString dictFile, docListFile;
+ bool alreadyHaveDocList;
+ bool lastWindowClosed;
+};
+
+struct Term {
+ Term( const QString &t, int f, KviValueList<Document> l )
+ : term( t ), frequency( f ), documents( l ) {}
+ QString term;
+ int frequency;
+ KviValueList<Document>documents;
+};
+
+
+
+#define TermList KviPointerList<Term>
+
+#endif
+
diff --git a/src/modules/help/libkvihelp.cpp b/src/modules/help/libkvihelp.cpp
new file mode 100644
index 00000000..c8da3c33
--- /dev/null
+++ b/src/modules/help/libkvihelp.cpp
@@ -0,0 +1,236 @@
+//
+// File : libkvihelp.cpp
+// Creation date : Sun Aug 13 2000 03:00:00 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+//#include "libkvihelp.h"
+
+#include "kvi_module.h"
+
+#include "kvi_sourcesdate.h"
+
+#include "helpwidget.h"
+#include "helpwindow.h"
+#include "index.h"
+#include "kvi_app.h"
+
+#include "kvi_frame.h"
+
+#ifdef COMPILE_USE_QT4
+ #include <q3mimefactory.h>
+#endif
+
+
+#include <qsplitter.h>
+Index * g_pDocIndex = 0;
+KviPointerList<KviHelpWidget> * g_pHelpWidgetList = 0;
+KviPointerList<KviHelpWindow> * g_pHelpWindowList = 0;
+
+/*
+ @doc: help.search
+ @type:
+ command
+ @title:
+ help.search
+ @short:
+ Searches the documentation
+ @syntax:
+ help.search [-n] [-m] <key terms>
+ @description:
+ Finds the first available help browser in the current frame
+ then searches the documentation for the specified <key terms>.
+ If no help browser is available it creates one first:
+ if the -m switch is present, the created browser is a MDI window,
+ otherwise it is a static window.
+ If the -n switch is present, the window creation is forced even
+ if there are other help browsers already open.[br]
+ The <key terms> are [b]space separated words[/b]
+ to be matched inside the document body (logical AND).[br]
+ This command is exported by the "help" module.
+*/
+
+/*tatic bool help_module_cmd_search(KviModule *m,KviCommand *c)
+{
+ ENTER_STACK_FRAME(c,"help_module_cmd_search");
+
+ KviStr keys;
+ if(!g_pZZZZZZUserParser->parseCmdFinalPart(c,keys))return false;
+
+ if(keys.isEmpty())keys = "kvirc";
+
+ if(!c->hasSwitch('n'))
+ {
+ // look for an already open help widget in this frame
+ KviHelpWidget * w = (KviHelpWidget *)c->window()->frame()->child(
+ "help_widget","KviHelpWidget");
+
+ if(w)
+ {
+ w->doExactSearchFor(keys.ptr());
+ return c->leaveStackFrame();
+ }
+ }
+
+ if(c->hasSwitch('m'))
+ {
+ KviHelpWindow *w = new KviHelpWindow(c->window()->frame(),"Help browser");
+ w->helpWidget()->doExactSearchFor(keys.ptr());
+ c->window()->frame()->addWindow(w);
+ } else {
+ KviHelpWidget *w = new KviHelpWidget(c->window()->frame()->splitter(),
+ c->window()->frame(),true);
+ w->doExactSearchFor(keys.ptr());
+ w->show();
+ }
+
+ return c->leaveStackFrame();
+}*/
+/*
+#ifdef COMPILE_NEW_KVS
+static bool help_kvs_cmd_search(KviKvsModuleCommandCall * c)
+{
+}
+#endif
+*/
+/*
+ @doc: help.open
+ @type:
+ command
+ @title:
+ help.open
+ @short:
+ Shows a help document
+ @syntax:
+ help.open [-n] [-m] [document: string]
+ @description:
+ Finds the first available help browser in the current frame
+ then opens the specified [document].
+ If no [document] is specified it the documentation index is shown.
+ If no help browser is available , a new one is created.
+ [document] can be an absolute path or a relative one: in this case
+ the document is searched in the KVIrc documentation directory.[br]
+ The help browser has limited html browsing capabilities: you can
+ use it to view simple html files on your filesystem.[br]
+ This command is exported by the "help" module.
+ @switches:
+ !sw: -m | --mdi
+ The created browser is a MDI window,
+ otherwise it is a static window.
+ !sw: -n | --new
+ The window creation is forced even
+ if there are other help browsers already open.[br]
+*/
+
+
+static bool help_kvs_cmd_open(KviKvsModuleCommandCall * c)
+{
+ QString doc;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("document",KVS_PT_STRING,KVS_PF_OPTIONAL,doc)
+ KVSM_PARAMETERS_END(c)
+ if(doc.isEmpty())doc = "index.html";
+#ifdef COMPILE_USE_QT4
+ Q3MimeSourceFactory * f = Q3MimeSourceFactory::defaultFactory();
+#else
+ QMimeSourceFactory * f = QMimeSourceFactory::defaultFactory();
+#endif
+ if(f)
+ {
+ if(!f->data(doc))
+ doc = "nohelpavailable.html";
+ }
+
+ if(!c->switches()->find('n',"new"))
+ {
+ KviHelpWidget * w = (KviHelpWidget *)c->window()->frame()->child("help_widget","KviHelpWidget");
+ if(w)
+ {
+ w->textBrowser()->setSource(doc);
+ return true;
+ }
+ }
+ if(c->switches()->find('m',"mdi"))
+ {
+ KviHelpWindow *w = new KviHelpWindow(c->window()->frame(),"Help browser");
+ w->textBrowser()->setSource(doc);
+ c->window()->frame()->addWindow(w);
+ } else {
+ KviHelpWidget *w = new KviHelpWidget(c->window()->frame()->splitter(),
+ c->window()->frame(),true);
+ w->textBrowser()->setSource(doc);
+ w->show();
+ //debug ("mostro");
+ }
+ return true;
+}
+
+
+
+static bool help_module_init(KviModule * m)
+{
+ QString szHelpDir,szDocList;
+
+ g_pApp->getLocalKvircDirectory(szDocList,KviApp::Help,"help.doclist." KVI_SOURCES_DATE);
+ g_pApp->getGlobalKvircDirectory(szHelpDir,KviApp::Help);
+
+ g_pDocIndex = new Index(szHelpDir,szDocList);
+ g_pDocIndex->setDocListFile(szDocList);
+
+ g_pApp->getLocalKvircDirectory(szHelpDir,KviApp::Help,"help.dict." KVI_SOURCES_DATE);
+ g_pDocIndex->setDictionaryFile(szHelpDir);
+
+ g_pHelpWidgetList = new KviPointerList<KviHelpWidget>;
+ g_pHelpWidgetList->setAutoDelete(false);
+ g_pHelpWindowList = new KviPointerList<KviHelpWindow>;
+ g_pHelpWindowList->setAutoDelete(false);
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"open",help_kvs_cmd_open);
+
+
+ return true;
+}
+
+static bool help_module_cleanup(KviModule *m)
+{
+ if(g_pDocIndex) delete g_pDocIndex;
+ while(g_pHelpWidgetList->first())delete g_pHelpWidgetList->first();
+ delete g_pHelpWidgetList;
+ g_pHelpWidgetList = 0;
+ while(g_pHelpWindowList->first())g_pHelpWindowList->first()->close();
+ delete g_pHelpWindowList;
+ g_pHelpWindowList = 0;
+ return true;
+}
+
+static bool help_module_can_unload(KviModule *m)
+{
+ return (g_pHelpWidgetList->isEmpty() && g_pHelpWindowList->isEmpty());
+}
+
+KVIRC_MODULE(
+ "Help", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2000 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "Help browser extension",
+ help_module_init,
+ help_module_can_unload,
+ 0,
+ help_module_cleanup
+)
diff --git a/src/modules/http/Makefile.am b/src/modules/http/Makefile.am
new file mode 100644
index 00000000..ab7fe3b2
--- /dev/null
+++ b/src/modules/http/Makefile.am
@@ -0,0 +1,26 @@
+###############################################################################
+# KVirc IRC client Makefile - 31.01.2002 Szymon Stefanek <[email protected]>
+###############################################################################
+
+tmpdir=$(picsdir)
+
+tmp_DATA=kvi_httpicons.png
+
+EXTRA_DIST=kvi_httpicons.png
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvihttp.la
+
+libkvihttp_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvihttp_la_SOURCES = libkvihttp.cpp httpfiletransfer.cpp
+libkvihttp_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= httpfiletransfer.h
+
+m_%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+httpfiletransfer.cpp: m_httpfiletransfer.moc
diff --git a/src/modules/http/httpfiletransfer.cpp b/src/modules/http/httpfiletransfer.cpp
new file mode 100644
index 00000000..09c3b1f9
--- /dev/null
+++ b/src/modules/http/httpfiletransfer.cpp
@@ -0,0 +1,489 @@
+//==================================================================================
+//
+// File : httpfiletransfer.h
+// Creation date : Tue Apr 22 2003 02:00:12 GMT by Szymon Stefanek
+//
+// This config is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//==================================================================================
+#include "httpfiletransfer.h"
+
+#include "kvi_app.h"
+#include "kvi_out.h"
+#include "kvi_locale.h"
+#include "kvi_window.h"
+#include "kvi_iconmanager.h"
+#include "kvi_netutils.h"
+#include "kvi_kvs_eventtriggers.h"
+#include "kvi_console.h"
+
+#include "kvi_kvs_script.h"
+
+#include "kvi_tal_popupmenu.h"
+#include <qpainter.h>
+
+static KviPointerList<KviHttpFileTransfer> * g_pHttpFileTransfers = 0;
+static QPixmap * g_pHttpIcon = 0;
+
+
+KviHttpFileTransfer::KviHttpFileTransfer()
+: KviFileTransfer()
+{
+ init(); // ensure we're initialized
+ g_pHttpFileTransfers->append(this);
+
+ m_tStartTime = kvi_unixTime();
+ m_tTransferStartTime = 0;
+ m_tTransferEndTime = 0;
+
+ m_bNotifyCompletion = true;
+ m_bAutoClean = false;
+ m_pAutoCleanTimer = 0;
+ m_bNoOutput = false;
+
+ m_pHttpRequest = new KviHttpRequest();
+
+ connect(m_pHttpRequest,SIGNAL(status(const QString &)),this,SLOT(statusMessage(const QString &)));
+ connect(m_pHttpRequest,SIGNAL(terminated(bool)),this,SLOT(transferTerminated(bool)));
+ connect(m_pHttpRequest,SIGNAL(header(KviPointerHashTable<const char *,KviStr> *)),this,SLOT(headersReceived(KviPointerHashTable<const char *,KviStr> *)));
+ connect(m_pHttpRequest,SIGNAL(resolvingHost(const QString &)),this,SLOT(resolvingHost(const QString &)));
+ connect(m_pHttpRequest,SIGNAL(requestSent(const QStringList &)),this,SLOT(requestSent(const QStringList &)));
+ connect(m_pHttpRequest,SIGNAL(contactingHost(const QString &)),this,SLOT(contactingHost(const QString &)));
+ connect(m_pHttpRequest,SIGNAL(receivedResponse(const QString &)),this,SLOT(receivedResponse(const QString &)));
+ connect(m_pHttpRequest,SIGNAL(connectionEstabilished()),this,SLOT(connectionEstabilished()));
+
+ m_eGeneralStatus = Initializing;
+ m_szStatusString = __tr2qs_ctx("Initializing","http");
+}
+
+KviHttpFileTransfer::~KviHttpFileTransfer()
+{
+ g_pHttpFileTransfers->removeRef(this);
+ delete m_pHttpRequest;
+ if(m_pAutoCleanTimer)
+ {
+ m_pAutoCleanTimer->stop();
+ delete m_pAutoCleanTimer;
+ }
+}
+
+void KviHttpFileTransfer::autoClean()
+{
+ die();
+}
+
+void KviHttpFileTransfer::die()
+{
+ delete this;
+}
+
+QString KviHttpFileTransfer::localFileName()
+{
+ return m_pHttpRequest->fileName();
+}
+
+void KviHttpFileTransfer::abort()
+{
+ m_pHttpRequest->abort();
+}
+
+void KviHttpFileTransfer::fillContextPopup(KviTalPopupMenu * m,int column)
+{
+ int id = m->insertItem(__tr2qs_ctx("Abort","http"),this,SLOT(abort()));
+ if(!active())m->setItemEnabled(id,false);
+}
+
+bool KviHttpFileTransfer::active()
+{
+ return ((m_eGeneralStatus == Connecting) || (m_eGeneralStatus == Downloading));
+}
+
+void KviHttpFileTransfer::displayPaint(QPainter * p,int column,int width,int height)
+{
+ QString txt;
+ bool bIsTerminated = ((m_eGeneralStatus == Success) || (m_eGeneralStatus == Failure));
+
+ switch(column)
+ {
+ case COLUMN_TRANSFERTYPE:
+ {
+ int offset = 0;
+ switch(m_eGeneralStatus)
+ {
+ case Initializing: offset = 0; break;
+ case Connecting: offset = 0; break;
+ case Downloading: offset = 48; break;
+ case Success: offset = 96; break;
+ case Failure: offset = 144; break;
+ }
+ p->drawPixmap(3,3,*g_pHttpIcon,offset,0,48,64);
+ }
+ break;
+ case COLUMN_FILEINFO:
+ {
+ QFontMetrics fm(p->font());
+
+ QString szFrom = __tr2qs_ctx("From: ","http");
+ QString szTo = __tr2qs_ctx("To: ","http");
+
+ int daW1 = fm.width(szFrom);
+ int daW2 = fm.width(szTo);
+ if(daW1 < daW2)daW1 = daW2;
+ int iLineSpacing = fm.lineSpacing();
+
+ p->setPen(Qt::black);
+
+ int iY = 4;
+
+ p->drawText(4 + daW1,iY,width - (8 + daW1),height - 8,Qt::AlignTop | Qt::AlignLeft,m_pHttpRequest->url().url().ptr());
+ iY += iLineSpacing;
+ if(!(m_pHttpRequest->fileName().isEmpty()))
+ {
+ p->drawText(4 + daW1,iY,width - (8 + daW1),height - 8,Qt::AlignTop | Qt::AlignLeft,m_pHttpRequest->fileName());
+ }
+ iY += iLineSpacing;
+
+
+ p->setPen(Qt::darkGray);
+
+ p->drawText(4,4,width - 8,height - 8,Qt::AlignTop | Qt::AlignLeft,szFrom);
+ p->drawText(4,4 + iLineSpacing,width - 8,height - 8,Qt::AlignTop | Qt::AlignLeft,szTo);
+
+ p->setPen(QColor(180,180,200));
+
+ iLineSpacing += 2;
+
+ p->drawRect(4,height - (iLineSpacing + 4),width - 8,iLineSpacing);
+ p->fillRect(5,height - (iLineSpacing + 3),width - 10,iLineSpacing - 2,bIsTerminated ? QColor(210,210,210) : QColor(190,190,240));
+ p->setPen(Qt::black);
+ p->drawText(7,height - (iLineSpacing + 4),width - 14,iLineSpacing,Qt::AlignVCenter | Qt::AlignLeft,m_szStatusString);
+ }
+ break;
+ case COLUMN_PROGRESS:
+ {
+ QFontMetrics fm(p->font());
+
+ unsigned int uTotal = m_pHttpRequest->totalSize();
+ unsigned int uRecvd = m_pHttpRequest->receivedSize();
+ int iW = width - 8;
+
+ p->setPen(bIsTerminated ? Qt::lightGray : QColor(210,210,240));
+ p->drawRect(4,4,iW,12);
+
+ int iAvgSpeed = -1;
+ int iEta = -1;
+
+ if(m_tTransferStartTime > 0)
+ {
+ int tSpan = kvi_timeSpan(m_tTransferEndTime > 0 ? m_tTransferEndTime : kvi_unixTime(),m_tTransferStartTime);
+ if(tSpan > 0)
+ {
+ //debug("SPAN: %d (%d - %d)",tSpan,m_tTransferEndTime > 0 ? m_tTransferEndTime : kvi_unixTime(),m_tTransferStartTime);
+ iAvgSpeed = uRecvd / tSpan;
+ if(!bIsTerminated && (uTotal >= uRecvd))
+ {
+ unsigned int uRemaining = uTotal - uRecvd;
+ iEta = uRemaining / iAvgSpeed;
+ }
+ }
+ }
+
+ if(uTotal > 0)
+ {
+ double dPerc = (double)(((double)uRecvd) * 100.0) / (double)uTotal;
+ iW -= 2;
+ int iL = (int) ((((double)iW) * dPerc) / 100.0);
+ //iR = iW - iL;
+ p->fillRect(5,5,iL,10,bIsTerminated ? QColor(140,110,110) : QColor(200,100,100));
+
+ txt = QString(__tr2qs_ctx("%1 of %2 (%3 %)","http")).arg(KviQString::makeSizeReadable(uRecvd))
+ .arg(KviQString::makeSizeReadable(uTotal)).arg(dPerc,0,'f',2);
+ } else {
+ txt = KviQString::makeSizeReadable(m_pHttpRequest->receivedSize());
+ }
+
+ p->setPen(Qt::black);
+
+ p->drawText(4,19,width - 8,height - 8,Qt::AlignTop | Qt::AlignLeft,txt);
+
+ int iLeftHalf = (iW - 2) / 2;
+ int iRightHalf = iW - (iLeftHalf + 1);
+ int iLineSpacing = fm.lineSpacing() + 2;
+
+ /*
+ txt = __tr2qs_ctx("Spd:","dcc");
+ txt += " ";
+ if(iInstantSpeed >= 0)
+ {
+ QString tmpisp;
+ KviNetUtils::formatNetworkBandwidthString(tmpisp,iAvgSpeed);
+ txt += tmpisp;
+ } else {
+ txt += "? B/s";
+ }
+ */
+
+ txt = __tr2qs_ctx("Avg:","dcc");
+ txt += " ";
+ if(iAvgSpeed >= 0)
+ {
+ QString tmpspd;
+ KviNetUtils::formatNetworkBandwidthString(tmpspd,iAvgSpeed);
+ txt += tmpspd;
+ } else {
+ txt += "? B/s";
+ }
+
+
+
+ int iDaH = height - (iLineSpacing + 4);
+
+ p->setPen(QColor(180,180,200));
+ p->drawRect(4,iDaH,iLeftHalf,iLineSpacing);
+ p->fillRect(5,iDaH + 1,iLeftHalf - 2,iLineSpacing - 2,bIsTerminated ? QColor(210,210,210) : QColor(190,190,240));
+ p->setPen(bIsTerminated ? Qt::darkGray : Qt::black);
+ p->drawText(6,iDaH,iLeftHalf - 4,iLineSpacing,Qt::AlignLeft | Qt::AlignVCenter,txt);
+
+ unsigned int uD,uH,uM,uS;
+
+ if(bIsTerminated)
+ {
+ KviTimeUtils::secondsToDaysHoursMinsSecs(kvi_timeSpan(m_tTransferEndTime,m_tTransferStartTime),&uD,&uH,&uM,&uS);
+ txt = "TOT: ";
+ if(uD > 0)txt += QString(__tr2qs_ctx("%1d %2h %3m %4s","http")).arg(uD).arg(uH).arg(uM).arg(uS);
+ else if(uH > 0)txt += QString(__tr2qs_ctx("%2h %3m %4s","http")).arg(uH).arg(uM).arg(uS);
+ else txt += QString(__tr2qs_ctx("%3m %4s","http")).arg(uM).arg(uS);
+ } else {
+ if(iEta >= 0)
+ {
+ KviTimeUtils::secondsToDaysHoursMinsSecs(iEta,&uD,&uH,&uM,&uS);
+ txt = "ETA: ";
+ if(uD > 0)txt += QString(__tr2qs_ctx("%1d %2h %3m %4s","http")).arg(uD).arg(uH).arg(uM).arg(uS);
+ else if(uH > 0)txt += QString(__tr2qs_ctx("%2h %3m %4s","http")).arg(uH).arg(uM).arg(uS);
+ else txt += QString(__tr2qs_ctx("%3m %4s","http")).arg(uM).arg(uS);
+ } else {
+ txt = "ETA: Unknown";
+ }
+ }
+
+ p->setPen(QColor(180,180,200));
+ p->drawRect(width - (4 + iRightHalf),iDaH,iRightHalf,iLineSpacing);
+ p->fillRect(width - (3 + iRightHalf),iDaH + 1,iRightHalf - 2,iLineSpacing - 2,bIsTerminated ? QColor(210,210,210) : QColor(190,190,240));
+ p->setPen(bIsTerminated ? Qt::darkGray : Qt::black);
+ p->drawText(width - (2 + iRightHalf),iDaH,iRightHalf - 4,iLineSpacing,Qt::AlignLeft | Qt::AlignVCenter,txt);
+
+ }
+ break;
+ }
+}
+
+int KviHttpFileTransfer::displayHeight(int iLineSpacing)
+{
+ int iH = (iLineSpacing * 3) + 10;
+ return iH >= 70 ? iH : 70;
+}
+
+QString KviHttpFileTransfer::tipText()
+{
+ QString s;
+ s = QString("<table><tr><td bgcolor=\"#000000\"><font color=\"#FFFFFF\"><b>HTTP Transfer (ID %1)</b></font></td></tr>").arg(id());
+
+ if(m_lRequest.count() > 0)
+ {
+ s += "<tr><td bgcolor=\"#404040\"><font color=\"#FFFFFF\">Request Headers</font></td></tr>";
+ s += "<tr><td bgcolor=\"#C0C0C0\">";
+ for(QStringList::ConstIterator it = m_lRequest.begin();it != m_lRequest.end();++it)
+ {
+ s += "&nbsp; &nbsp;";
+ s += *it;
+ s += "<br>";
+ }
+ s += "</td></tr>";
+ }
+
+ if(m_lHeaders.count() > 0)
+ {
+ s += "<tr><td bgcolor=\"#404040\"><font color=\"#FFFFFF\">Response Headers</font></td></tr>";
+ s += "<tr><td bgcolor=\"#C0C0C0\">";
+ for(QStringList::ConstIterator it = m_lHeaders.begin();it != m_lHeaders.end();++it)
+ {
+ s += "&nbsp; &nbsp;";
+ s += *it;
+ s += "<br>";
+ }
+ s += "</td></tr>";
+ }
+
+ s += "<table>";
+
+ return s;
+}
+
+void KviHttpFileTransfer::init()
+{
+ if(g_pHttpFileTransfers)return;
+ g_pHttpFileTransfers = new KviPointerList<KviHttpFileTransfer>;
+ g_pHttpFileTransfers->setAutoDelete(false);
+
+ QPixmap * pix = g_pIconManager->getImage("kvi_httpicons.png");
+ if(pix)g_pHttpIcon = new QPixmap(*pix);
+ else g_pHttpIcon = new QPixmap(192,48);
+}
+
+void KviHttpFileTransfer::done()
+{
+ if(!g_pHttpFileTransfers)return;
+ while(KviHttpFileTransfer * t = g_pHttpFileTransfers->first())
+ delete t;
+ delete g_pHttpFileTransfers;
+ g_pHttpFileTransfers = 0;
+ delete g_pHttpIcon;
+ g_pHttpIcon = 0;
+}
+
+unsigned int KviHttpFileTransfer::runningTransfers()
+{
+ if(!g_pHttpFileTransfers)return 0;
+ return g_pHttpFileTransfers->count();
+}
+
+void KviHttpFileTransfer::requestSent(const QStringList &requestHeaders)
+{
+ m_szStatusString = __tr2qs_ctx("Request sent, waiting for reply...","http");
+ displayUpdate();
+
+ KviWindow * out = transferWindow();
+ if(!out)return;
+
+ if(!m_bNoOutput)
+ out->output(KVI_OUT_GENERICSTATUS,__tr2qs_ctx("[HTTP %d]: Request data sent:","http"),id());
+
+ for(QStringList::ConstIterator it = requestHeaders.begin();it != requestHeaders.end();++it)
+ {
+ if(!m_bNoOutput)
+ out->output(KVI_OUT_GENERICSTATUS,"[HTTP %d]: %s",id(),(*it).utf8().data());
+ }
+
+ m_lRequest = requestHeaders;
+}
+
+void KviHttpFileTransfer::connectionEstabilished()
+{
+ m_szStatusString = __tr2qs_ctx("Connection established, sending request","http");
+ displayUpdate();
+}
+
+void KviHttpFileTransfer::resolvingHost(const QString &hostname)
+{
+ m_szStatusString = __tr2qs_ctx("Resolving host %1","http").arg(hostname);
+ displayUpdate();
+}
+
+void KviHttpFileTransfer::contactingHost(const QString &ipandport)
+{
+ m_szStatusString = __tr2qs_ctx("Contacting host %1","http").arg(ipandport);
+ displayUpdate();
+}
+
+void KviHttpFileTransfer::receivedResponse(const QString &response)
+{
+ m_lHeaders.clear();
+ m_lHeaders.append(response);
+ m_szStatusString = __tr2qs_ctx("Transferring data (%1)","http").arg(response);
+ m_tTransferStartTime = kvi_unixTime();
+ m_eGeneralStatus = Downloading;
+ displayUpdate();
+}
+
+void KviHttpFileTransfer::statusMessage(const QString &txt)
+{
+ KviWindow * out = transferWindow();
+ if(out && (!m_bNoOutput))
+ out->output(KVI_OUT_GENERICSTATUS,"[HTTP %d]: %Q",id(),&txt);
+}
+
+void KviHttpFileTransfer::transferTerminated(bool bSuccess)
+{
+ KviWindow * out = transferWindow();
+
+ m_tTransferEndTime = kvi_unixTime();
+
+ KviKvsVariantList vParams;
+ vParams.append(new KviKvsVariant(bSuccess));
+ vParams.append(new KviKvsVariant(m_pHttpRequest->url().url()));
+ vParams.append(new KviKvsVariant(m_pHttpRequest->fileName()));
+ vParams.append(new KviKvsVariant(m_vMagicIdentifier));
+
+ if(m_szCompletionCallback.isNull())
+ {
+ KVS_TRIGGER_EVENT(KviEvent_OnHTTPGetTerminated,out ? out : (KviWindow *)(g_pApp->activeConsole()),&vParams)
+ } else {
+ KviKvsScript::run(m_szCompletionCallback,out ? out : (KviWindow *)(g_pApp->activeConsole()),&vParams);
+ }
+
+ if(bSuccess)
+ {
+ m_szStatusString = __tr2qs_ctx("Transfer completed","http");
+ m_eGeneralStatus = Success;
+ displayUpdate();
+ if(out && (!m_bNoOutput))out->output(KVI_OUT_GENERICSUCCESS,__tr2qs_ctx("[HTTP %d]: Transfer completed","http"),id());
+ g_pApp->fileDownloadTerminated(true,m_pHttpRequest->url().url().ptr(),m_pHttpRequest->fileName(),QString::null,QString::null,!m_bNotifyCompletion);
+ } else {
+ m_szStatusString = __tr2qs_ctx("Transfer failed","http");
+ m_szStatusString += ": ";
+ m_szStatusString += m_pHttpRequest->lastError();
+ m_eGeneralStatus = Failure;
+ displayUpdate();
+ if(out && (!m_bNoOutput))out->output(KVI_OUT_GENERICERROR,__tr2qs_ctx("[HTTP %d]: Transfer failed: %Q","http"),id(),&(m_pHttpRequest->lastError()));
+ g_pApp->fileDownloadTerminated(false,m_pHttpRequest->url().url().ptr(),m_pHttpRequest->fileName(),QString::null,m_pHttpRequest->lastError(),!m_bNotifyCompletion);
+ }
+
+ if(m_bAutoClean)
+ {
+ if(m_pAutoCleanTimer)delete m_pAutoCleanTimer;
+ m_pAutoCleanTimer = new QTimer();
+ connect(m_pAutoCleanTimer,SIGNAL(timeout()),this,SLOT(autoClean()));
+ m_pAutoCleanTimer->start(100,true);
+ }
+}
+
+void KviHttpFileTransfer::headersReceived(KviPointerHashTable<const char *,KviStr> *h)
+{
+ if(!h)return;
+ KviWindow * out = transferWindow();
+
+ if(out && (!m_bNoOutput))out->output(KVI_OUT_GENERICSTATUS,__tr2qs_ctx("[HTTP %d]: Response headers:","http"),id());
+ KviPointerHashTableIterator<const char *,KviStr> it(*h);
+ while(KviStr * s = it.current())
+ {
+ QString szHeader = it.currentKey();
+ szHeader += ": ";
+ szHeader += s->ptr();
+ m_lHeaders.append(szHeader);
+ if(out && (!m_bNoOutput))out->output(KVI_OUT_GENERICSTATUS,"[HTTP %d]: %s: %s",id(),it.currentKey(),s->ptr());
+ ++it;
+ }
+}
+
+bool KviHttpFileTransfer::startDownload()
+{
+ m_eGeneralStatus = Connecting;
+ return m_pHttpRequest->start();
+}
+
+#include "m_httpfiletransfer.moc"
diff --git a/src/modules/http/httpfiletransfer.h b/src/modules/http/httpfiletransfer.h
new file mode 100644
index 00000000..e6c5006e
--- /dev/null
+++ b/src/modules/http/httpfiletransfer.h
@@ -0,0 +1,104 @@
+#ifndef _HTTPFILETRANSFER_H_
+#define _HTTPFILETRANSFER_H_
+//==================================================================================
+//
+// File : httpfiletransfer.h
+// Creation date : Tue Apr 22 2003 02:00:12 GMT by Szymon Stefanek
+//
+// This config is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//==================================================================================
+
+#include "kvi_filetransfer.h"
+#include "kvi_http.h"
+#include "kvi_time.h"
+
+#include "kvi_kvs_variant.h"
+
+#include <qstringlist.h>
+#include <qtimer.h>
+
+class QPainter;
+class KviTalPopupMenu;
+
+class KviHttpFileTransfer : public KviFileTransfer
+{
+ enum GeneralStatus { Initializing, Connecting, Downloading, Success, Failure };
+ Q_OBJECT
+public:
+ KviHttpFileTransfer();
+ ~KviHttpFileTransfer();
+private:
+ KviHttpRequest * m_pHttpRequest;
+ GeneralStatus m_eGeneralStatus;
+ QString m_szStatusString;
+
+ QStringList m_lHeaders;
+ QStringList m_lRequest;
+
+ kvi_time_t m_tStartTime;
+ kvi_time_t m_tTransferStartTime;
+ kvi_time_t m_tTransferEndTime;
+
+ KviKvsVariant m_vMagicIdentifier;
+ bool m_bNotifyCompletion;
+ bool m_bAutoClean;
+ bool m_bNoOutput;
+
+ QTimer * m_pAutoCleanTimer;
+
+ QString m_szCompletionCallback;
+public:
+ KviHttpRequest * request(){ return m_pHttpRequest; };
+ static unsigned int runningTransfers();
+ static void init();
+ static void done();
+
+ virtual bool startDownload();
+
+ void setCompletionCallback(const QString &szCallback){ m_szCompletionCallback = szCallback; };
+ void setMagicIdentifier(const KviKvsVariant &vIdentifier){ m_vMagicIdentifier = vIdentifier; };
+ void setNotifyCompletion(bool bNotify){ m_bNotifyCompletion = bNotify; };
+ void setAutoClean(bool bAutoClean){ m_bAutoClean = bAutoClean; };
+ void setNoOutput(bool bNoOutput){ m_bNoOutput = bNoOutput; };
+
+ virtual void displayPaint(QPainter * p,int column,int width,int height);
+ virtual int displayHeight(int iLineSpacing);
+ virtual void fillContextPopup(KviTalPopupMenu * m,int column);
+ virtual bool active();
+ virtual void die();
+ virtual QString tipText();
+ virtual QString localFileName();
+protected slots:
+ void statusMessage(const QString &txt);
+ void transferTerminated(bool bSuccess);
+ void headersReceived(KviPointerHashTable<const char *,KviStr> *h);
+ void requestSent(const QStringList &sl);
+
+ void resolvingHost(const QString &hostname);
+ void contactingHost(const QString &ipandport);
+ void receivedResponse(const QString &response);
+ void connectionEstabilished();
+
+ void abort();
+
+ void autoClean();
+};
+
+
+#endif //!_HTTPFILETRANSFER_H_
diff --git a/src/modules/http/kvi_httpicons.png b/src/modules/http/kvi_httpicons.png
new file mode 100644
index 00000000..30776c0f
--- /dev/null
+++ b/src/modules/http/kvi_httpicons.png
Binary files differ
diff --git a/src/modules/http/libkvihttp.cpp b/src/modules/http/libkvihttp.cpp
new file mode 100644
index 00000000..eb6f28fb
--- /dev/null
+++ b/src/modules/http/libkvihttp.cpp
@@ -0,0 +1,324 @@
+//==================================================================================
+//
+// File : libkvihttp.cpp
+// Creation date : Tue Apr 22 2003 02:00:12 GMT by Szymon Stefanek
+//
+// This config is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//==================================================================================
+
+#include "kvi_module.h"
+#include "kvi_string.h"
+
+
+#include "kvi_app.h"
+#include "kvi_locale.h"
+#include "kvi_filedialog.h"
+#include "kvi_window.h"
+#include "kvi_error.h"
+#include "kvi_cmdformatter.h"
+
+#include "httpfiletransfer.h"
+
+
+static bool http_kvs_complete_get(KviKvsModuleCommandCall * c,QString &szUrl,QString &szFileName,const QString &szCallback)
+{
+ if(szUrl.isEmpty())
+ {
+ c->warning(__tr2qs_ctx("No url specified","http"));
+ return true;
+ }
+
+ KviUrl url(szUrl);
+
+ QString tmp;
+
+ if(szFileName.isEmpty())
+ {
+ if(c->switches()->find('a',"auto-file-name"))
+ {
+ tmp = szUrl;
+ tmp.replace('/',"_");
+ tmp.replace(':',"_");
+ tmp.replace('@',"_");
+ tmp.replace('?',"_");
+ // http____path_path2_path3_filename.ext
+ g_pApp->getLocalKvircDirectory(szFileName,KviApp::Incoming,tmp);
+ } else {
+ if(!KviFileDialog::askForSaveFileName(szFileName,__tr2qs_ctx("Choose a save file name","http")))
+ return true;
+ if(szFileName.isEmpty())return true;
+ }
+ }
+
+ KviHttpFileTransfer * hft = new KviHttpFileTransfer();
+
+ bool bHead = c->switches()->find('h',"head");
+
+ if(c->switches()->getAsStringIfExisting('p',"post-data",tmp))
+ {
+ if(bHead)
+ {
+ c->warning(__tr2qs_ctx("The switch -p is incompatible with -h: -p takes precedence","http"));
+ bHead = false;
+ }
+ hft->request()->setPostData(tmp);
+ }
+
+ hft->request()->setUrl(url);
+ hft->request()->setProcessingType(bHead ? KviHttpRequest::HeadersOnly : KviHttpRequest::StoreToFile);
+ hft->request()->setFileName(szFileName);
+
+ if(c->switches()->getAsStringIfExisting('e',"existing-file-action",tmp))
+ {
+ if(KviQString::equalCI(tmp,"e"))
+ hft->request()->setExistingFileAction(KviHttpRequest::RenameExisting);
+ else if(KviQString::equalCI(tmp,"i"))
+ hft->request()->setExistingFileAction(KviHttpRequest::RenameIncoming);
+ else if(KviQString::equalCI(tmp,"o"))
+ hft->request()->setExistingFileAction(KviHttpRequest::Overwrite);
+ else if(KviQString::equalCI(tmp,"r"))
+ hft->request()->setExistingFileAction(KviHttpRequest::Resume);
+ }
+
+ // FIXME: this should be numeric
+ if(c->switches()->getAsStringIfExisting('m',"max-len",tmp))
+ {
+ bool bOk;
+ unsigned int uContentLength = tmp.toUInt(&bOk);
+ if(bOk)hft->request()->setMaxContentLength(uContentLength);
+ }
+
+ // FIXME: this should be numeric
+ if(c->switches()->getAsStringIfExisting('o',"offset",tmp))
+ {
+ bool bOk;
+ unsigned int uContentOffset = tmp.toUInt(&bOk);
+ if(bOk)hft->request()->setContentOffset(uContentOffset);
+ }
+
+ if(c->switches()->getAsStringIfExisting('w',"winctrl",tmp))
+ {
+ if(!tmp.contains('h'))hft->invokeTransferWindow(c->window(),tmp.contains('m'),tmp.contains('n'));
+ } else {
+ hft->invokeTransferWindow(c->window(),false,false);
+ }
+
+ KviKvsVariant * v = c->switches()->find('i',"identifier");
+ if(v)
+ hft->setMagicIdentifier(*v);
+
+ if(c->switches()->find('q',"quiet"))
+ hft->setNotifyCompletion(false);
+
+ if(c->switches()->find('y',"no-output"))
+ hft->setNoOutput(true);
+
+ if(!szCallback.isEmpty())
+ hft->setCompletionCallback(szCallback);
+
+ if(c->switches()->find('c',"clear"))
+ hft->setAutoClean(true);
+
+ if(!hft->startDownload())
+ {
+ tmp = hft->request()->lastError();
+ c->warning(__tr2qs_ctx("Failed to start the get request: %Q","http"),&tmp);
+ delete hft;
+ }
+
+ return true;
+}
+
+
+/*
+ @doc: http.get
+ @type:
+ command
+ @title:
+ http.get
+ @keyterms:
+ HTTP extension
+ @short:
+ Retrieves a file via HTTP GET
+ @syntax:
+ http.get [switches] <http_url> [save_file_name]
+ @description:
+ Attempts to download the file at <http_url> by using the HTTP GET or POST protocol.[br]
+ If [save_file_name] is specified, then is is used as save file name, otherwise
+ a save file dialog is displayed (unless -a is used).[br]
+ The event OnHTTPGetTerminated is triggered upon the download completion (both
+ in case of success or failure). If you want a callback command to be triggered
+ instead please use [cmd]http.asyncGet[/cmd].
+ If the url contains a https:// prefix then a SSL connection will be used.
+ @switches:
+ !sw: -a=<auto_file_name> | --auto-file-name=<auto_file_name>
+ Don't show the savefile dialog but determine automatically a file name.
+ The file is put in the KVIrc incoming directory and the file name
+ is the processed url.[br]
+
+ !sw: -e=<existing_file_action> | --existing-file-action=<existing_file_action>
+ Specifies the action to be taken when the local file already exists.[br]
+ The action can be one of "i","e","o" or "r".[br]
+ "i" causes the incoming file to be automatically renamed by appending a
+ non colliding suffix. "e" causes the existing file to be renamed
+ by appending a non colliding suffix (the incoming file will then have its name preserved).
+ "o" causes the existing file to be overwritten and "r" will attempt to resume
+ a interrupted transfer.[br]
+ The default is to rename the incoming file.[br]
+
+ !sw: -m=<max_content_length> | --max-len=<max_content_length>
+ Causes content longer than <max_content_length> to be discarded.[br]
+ This is mainly to prevent you from automatically downloading 300 MB files
+ and to prevent DOS attacks from malicious servers that do not report the Content-length header.[br]
+ If the Content-length header is reported by the server then the transfer is aborted
+ if the length exceedes <max_content_length>.[br]
+ If the Content-length header is missing then the transfer is interrupted when
+ the received data length exceeds <max_content_length>.[br]
+ -m=0 means "accept any content length" (which is the default).[br]
+
+ !sw: -o=<content_offset> | --offset=<content_offset>
+ Causes the download to start from position <content offset>.[br]
+ This can be used to download only a part of the file starting at byte <content_offset>.[br]
+ <content_offset> is used regardless if the file is resumed or not.
+ Please note that you don't need to specify the content offset when using
+ -e=r : the offset is automatically calculated. If you specify both -o=<content_offset>
+ and -e=r then the file will be resumed, the transfer will start at the specified offset
+ and the received stream will be appended to the existing file.(avoid it unless you know what you're doing:
+ it's easy to download broken files).[br]
+
+ !sw: -h | --head
+ Causes the connection to use the HTTP HEAD method that effectively
+ does not transfer real data. The server sends only the response headers.
+ This might be used in conjunction with the -v option to print the headers to the
+ active window.[br]
+
+ !sw: -w=<flags> | --winctrl
+ This switch controls the creation and visualization of the transfer window.
+ <flags> can be any combination of 'm','n' and 'h'.
+ The flag 'h' causes the window to not be created. The transfer will simply run in background.
+ Note that with 'h' the user has no possibility to interact with the transfer.
+ The flag 'm' causes the transfer window to be created as "minimized". 'm' does nothing
+ if the window alread exists. The flag 'n' causes the window to be NOT activated (brought to top).
+
+ !sw: -i=<magic identifier> | --identifier=<magic identifier>
+ This identifier is passed as $3 parameter to the [event]OnHTTPGetTerminated[/event]
+ when this transfer terminates. If this switch is not present then an empty string is used.
+ With [cmd]http.asyngGet[/cmd] this parameter is passed to the callback command instead.
+
+ !sw: -p=<post data> | --post-data=<post data>
+ The request is sent in form of a POST request. <post data> is the urlencoded payload of
+ the request. -p is incompatible with -h.
+
+ !sw: -q | --quiet
+ Do not notify download completion in the notifier window nor in the console.
+
+ !sw: -y | --no-output
+ Supress any output in the file transfer window. This will effectively disable
+ the file transfer window highlighting (so the user will not be alerted by a failed
+ download unless he's really watching the window). This is useful when you're notifying
+ failures in some other way...
+
+ !sw: -c | --clear
+ Automatically remove the transfer from the transfer list when terminated
+ @seealso:
+ [cmd]http.asyncGet[/cmd]
+*/
+
+static bool http_kvs_cmd_get(KviKvsModuleCommandCall * c)
+{
+ QString szUrl,szFileName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("url",KVS_PT_NONEMPTYSTRING,0,szUrl)
+ KVSM_PARAMETER("filename",KVS_PT_STRING,KVS_PF_OPTIONAL,szFileName)
+ KVSM_PARAMETERS_END(c)
+
+ return http_kvs_complete_get(c,szUrl,szFileName,QString::null);
+}
+/*
+ @doc: http.asyncGet
+ @type:
+ command
+ @title:
+ http.asyncGet
+ @keyterms:
+ HTTP extension
+ @short:
+ Retrieves a file via HTTP GET and triggers a callback
+ @syntax:
+ http.asyncGet [switches] (<http_url> [,save_file_name])
+ {
+ <callback command>
+ }
+ @description:
+ Attempts to download the file at <http_url> by using the HTTP GET or POST protocol.[br]
+ If [save_file_name] is specified, then is is used as save file name, otherwise
+ a save file dialog is displayed (unless -a is used).[br]
+ This command is really similar to [cmd]http.get[/cmd]: it has exactly the same
+ parameters and switches (so also refer to its documentation).
+ The only difference is that asyncGet triggers the <callback command> upon completion
+ instead of the global OnHTTPGetTerminated event.
+ The parameters passed to the callback are exactly the same.
+ If the url contains a https:// prefix then a SSL connection will be used.
+ @seealso:
+ [cmd]http.get[/cmd]
+*/
+
+static bool http_kvs_cmd_asyncGet(KviKvsModuleCallbackCommandCall * c)
+{
+ QString szUrl,szFileName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("url",KVS_PT_NONEMPTYSTRING,0,szUrl)
+ KVSM_PARAMETER("filename",KVS_PT_STRING,KVS_PF_OPTIONAL,szFileName)
+ KVSM_PARAMETERS_END(c)
+
+ return http_kvs_complete_get(c,szUrl,szFileName,c->callback()->code());
+}
+
+
+static bool http_module_init(KviModule * m)
+{
+ KviHttpFileTransfer::init();
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"get",http_kvs_cmd_get);
+ KVSM_REGISTER_CALLBACK_COMMAND(m,"asyncGet",http_kvs_cmd_asyncGet);
+
+ return true;
+}
+
+static bool http_module_cleanup(KviModule *m)
+{
+ KviHttpFileTransfer::done();
+ return true;
+}
+
+static bool http_module_can_unload(KviModule *m)
+{
+ return (KviHttpFileTransfer::runningTransfers() == 0);
+}
+
+KVIRC_MODULE(
+ "Http", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "HTTP interface for KVIrc",
+ http_module_init,
+ http_module_can_unload,
+ 0,
+ http_module_cleanup
+)
diff --git a/src/modules/ident/Makefile.am b/src/modules/ident/Makefile.am
new file mode 100644
index 00000000..c02c0b47
--- /dev/null
+++ b/src/modules/ident/Makefile.am
@@ -0,0 +1,20 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkviident.la
+
+libkviident_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkviident_la_SOURCES = libkviident.cpp
+libkviident_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= libkviident.h
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+libkviident.cpp: libkviident.moc
diff --git a/src/modules/ident/libkviident.cpp b/src/modules/ident/libkviident.cpp
new file mode 100644
index 00000000..c8f4f194
--- /dev/null
+++ b/src/modules/ident/libkviident.cpp
@@ -0,0 +1,615 @@
+//
+// File : libkviident.cpp
+// Creation date : Tue Oct 2 18:22:04 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_module.h"
+
+#include "libkviident.h"
+
+#include "kvi_socket.h"
+#include "kvi_app.h"
+#include "kvi_out.h"
+#include "kvi_netutils.h"
+#include "kvi_locale.h"
+#include "kvi_window.h"
+
+#include "kvi_options.h"
+#include "kvi_defaults.h"
+
+#define KVI_IDENT_THREAD_EVENT_EXITING KVI_THREAD_USER_EVENT_BASE + 111
+#define KVI_IDENT_THREAD_EVENT_EXITING_ON_REQUEST KVI_THREAD_USER_EVENT_BASE + 112
+
+
+// FIXME: Should have a timeout on the requests!!!
+
+static KviIdentDaemon * g_pIdentDaemon = 0;
+static KviIdentSentinel * g_pIdentSentinel = 0;
+
+extern KVIRC_API int g_iIdentDaemonRunningUsers;
+
+void startIdentService()
+{
+// debug("Stargin");
+ if(!g_pIdentDaemon)g_pIdentDaemon = new KviIdentDaemon();
+ if(!g_pIdentDaemon->isRunning())g_pIdentDaemon->start();
+ while(g_pIdentDaemon->isStartingUp())
+ {
+#ifdef COMPILE_ON_WINDOWS
+ Sleep(10);
+#else
+ usleep(100);
+#endif
+ }
+// debug("Service started");
+}
+
+void stopIdentService()
+{
+// debug("Stopping");
+ if(g_pIdentDaemon)delete g_pIdentDaemon;
+ g_pIdentDaemon = 0;
+// debug("Stopped");
+}
+
+KviIdentSentinel::KviIdentSentinel()
+: QObject(0)
+{
+}
+
+KviIdentSentinel::~KviIdentSentinel()
+{
+ KviThreadManager::killPendingEvents(this);
+}
+
+bool KviIdentSentinel::event(QEvent *e)
+{
+ if(KVI_OPTION_UINT(KviOption_uintIdentdOutputMode)==KviIdentdOutputMode::Quiet || !g_pActiveWindow)
+ return QObject::event(e);
+
+ KviWindow * pTarget = KVI_OPTION_UINT(KviOption_uintIdentdOutputMode)==KviIdentdOutputMode::ToActiveWindow ?
+ (KviWindow *)g_pActiveWindow : (KviWindow *)g_pApp->activeConsole();
+
+ if(e->type() == KVI_THREAD_EVENT)
+ {
+ if(((KviThreadEvent *)e)->id() == KVI_THREAD_EVENT_DATA)
+ {
+ KviIdentMessageData * d = ((KviThreadDataEvent<KviIdentMessageData> *)e)->getData();
+ if(pTarget)
+ {
+ if(d->szHost.hasData())
+ {
+ if(d->szAux.hasData())
+ {
+ if(_OUTPUT_PARANOIC)
+ pTarget->output(KVI_OUT_IDENT,__tr("%s (%s) (%s:%u)"),d->szMessage.ptr(),d->szAux.ptr(),d->szHost.ptr(),d->uPort);
+ else
+ pTarget->output(KVI_OUT_IDENT,__tr("%s (%s)"),d->szMessage.ptr(),d->szAux.ptr());
+ } else {
+ if(_OUTPUT_PARANOIC)
+ pTarget->output(KVI_OUT_IDENT,__tr("%s (%s:%u)"),d->szMessage.ptr(),d->szHost.ptr(),d->uPort);
+ else
+ pTarget->output(KVI_OUT_IDENT,__tr("%s"),d->szMessage.ptr());
+ }
+ } else {
+ pTarget->output(KVI_OUT_IDENT,__tr("[IDENT]: %s"),d->szMessage.ptr());
+ }
+ }
+ delete d;
+ } else if(((KviThreadEvent *)e)->id() == KVI_IDENT_THREAD_EVENT_EXITING)
+ {
+ if(_OUTPUT_VERBOSE)
+ if(pTarget)pTarget->outputNoFmt(KVI_OUT_IDENT,__tr("Shutting down identd service (spontaneous action)"));
+ stopIdentService();
+ } else if(((KviThreadEvent *)e)->id() == KVI_IDENT_THREAD_EVENT_EXITING_ON_REQUEST)
+ {
+ if(_OUTPUT_VERBOSE)
+ if(pTarget)pTarget->outputNoFmt(KVI_OUT_IDENT,__tr("Shutting down identd service (requested action)"));
+ }
+
+ return true;
+ }
+
+ return QObject::event(e);
+}
+
+
+KviIdentRequest::KviIdentRequest(kvi_socket_t sock,const char * host,kvi_u32_t uPort)
+{
+ m_sock = sock;
+ m_szHost = host;
+ m_uPort = uPort;
+ m_tStart = time(0);
+}
+
+KviIdentRequest::~KviIdentRequest()
+{
+ kvi_socket_close(m_sock);
+}
+
+
+
+KviIdentDaemon::KviIdentDaemon()
+: KviSensitiveThread()
+{
+// debug("Thread constructor");
+ m_szUser = KVI_OPTION_STRING(KviOption_stringIdentdUser);
+ if(m_szUser.isEmpty())m_szUser = "kvirc";
+ m_uPort = KVI_OPTION_UINT(KviOption_uintIdentdPort);
+#ifdef COMPILE_IPV6_SUPPORT
+ m_bEnableIpV6 = KVI_OPTION_BOOL(KviOption_boolIdentdEnableIpV6);
+#else
+ m_bEnableIpV6 = false;
+#endif
+ m_bIpV6ContainsIpV4 = KVI_OPTION_BOOL(KviOption_boolIdentdIpV6ContainsIpV4);
+// debug("Thread constructor done");
+}
+
+KviIdentDaemon::~KviIdentDaemon()
+{
+// debug("Thread destructor");
+ terminate();
+ g_iIdentDaemonRunningUsers = 0;
+
+ g_pIdentDaemon = 0;
+// debug("Destructor gone");
+}
+
+void KviIdentDaemon::postMessage(const char * message,KviIdentRequest * r,const char * szAux)
+{
+ KviThreadDataEvent<KviIdentMessageData> * e = new KviThreadDataEvent<KviIdentMessageData>(KVI_THREAD_EVENT_DATA);
+
+ KviIdentMessageData * d = new KviIdentMessageData;
+
+ d->szMessage = message;
+ if(szAux)d->szAux = szAux;
+
+ if(r)
+ {
+ d->szHost = r->m_szHost;
+ d->uPort = r->m_uPort;
+ }
+
+ e->setData(d);
+ postEvent(g_pIdentSentinel,e);
+}
+
+void KviIdentDaemon::run()
+{
+// debug("RUN STARTED");
+ m_sock = KVI_INVALID_SOCKET;
+ m_sock6 = KVI_INVALID_SOCKET;
+ bool bEventPosted = false;
+
+ m_pRequestList = new KviPointerList<KviIdentRequest>;
+ m_pRequestList->setAutoDelete(true);
+
+ KviPointerList<KviIdentRequest> dying;
+ dying.setAutoDelete(false);
+
+#ifdef COMPILE_IPV6_SUPPORT
+ // If we have enabled ipv6 and we have to use a single socket: this one is IPV6
+ // otherwise this one is IPV4
+ KviSockaddr sa(m_uPort,m_bEnableIpV6 && m_bIpV6ContainsIpV4);
+#else
+ KviSockaddr sa(m_uPort,false);
+#endif
+
+ KviIdentRequest * r;
+
+#ifdef COMPILE_IPV6_SUPPORT
+ m_sock = kvi_socket_create((m_bEnableIpV6 && m_bIpV6ContainsIpV4) ? KVI_SOCKET_PF_INET6 : KVI_SOCKET_PF_INET,KVI_SOCKET_TYPE_STREAM,KVI_SOCKET_PROTO_TCP);
+#else
+ m_sock = kvi_socket_create(KVI_SOCKET_PF_INET,KVI_SOCKET_TYPE_STREAM,KVI_SOCKET_PROTO_TCP);
+#endif
+
+ if(m_sock == KVI_INVALID_SOCKET)
+ {
+ postMessage(__tr("Can't start the ident service : socket() failed"),0);
+ goto exit_thread;
+ }
+
+ if(!kvi_socket_setNonBlocking(m_sock))
+ {
+ postMessage(__tr("Can't start the ident service : async setting failed"),0);
+ goto exit_thread;
+ }
+
+ if(!sa.socketAddress())
+ {
+ postMessage(__tr("Can't enable the ident service : can't setup the listen address"),0);
+ goto exit_thread;
+ }
+
+ if(!kvi_socket_bind(m_sock,sa.socketAddress(),((int)(sa.addressLength()))))
+ {
+ postMessage(__tr("Can't start the ident service : bind() failed"),0);
+ goto exit_thread;
+ }
+
+ if(!kvi_socket_listen(m_sock,128))
+ {
+ postMessage(__tr("Can't start the ident service : listen() failed"),0);
+ goto exit_thread;
+ }
+
+
+#ifdef COMPILE_IPV6_SUPPORT
+ if(m_bEnableIpV6 && (!m_bIpV6ContainsIpV4))
+ {
+ // Need to start the IPV6 socket too
+ KviSockaddr sa6(m_uPort,true);
+ m_sock6 = kvi_socket_create(KVI_SOCKET_PF_INET6,KVI_SOCKET_TYPE_STREAM,KVI_SOCKET_PROTO_TCP);
+
+ if(m_sock6 == KVI_INVALID_SOCKET)
+ {
+ postMessage(__tr("Can't start the ident service on IpV6 : socket() failed"),0);
+ goto ipv6_failure;
+ }
+
+ if(!kvi_socket_setNonBlocking(m_sock6))
+ {
+ postMessage(__tr("Can't start the ident service on IpV6 : async setting failed"),0);
+ kvi_socket_close(m_sock6);
+ m_sock6 = KVI_INVALID_SOCKET;
+ goto ipv6_failure;
+ }
+
+ if(!sa6.socketAddress())
+ {
+ postMessage(__tr("Can't enable the ident service on IpV6 : can't setup the listen address"),0);
+ kvi_socket_close(m_sock6);
+ m_sock6 = KVI_INVALID_SOCKET;
+ goto ipv6_failure;
+ }
+
+ if(!kvi_socket_bind(m_sock6,sa6.socketAddress(),((int)(sa6.addressLength()))))
+ {
+ postMessage(__tr("Can't start the ident service on IpV6 : bind() failed"),0);
+ kvi_socket_close(m_sock6);
+ m_sock6 = KVI_INVALID_SOCKET;
+ goto ipv6_failure;
+
+ }
+
+ if(!kvi_socket_listen(m_sock6,128))
+ {
+ postMessage(__tr("Can't start the ident service on IpV6 : listen() failed"),0);
+ kvi_socket_close(m_sock6);
+ m_sock6 = KVI_INVALID_SOCKET;
+ goto ipv6_failure;
+ }
+
+ }
+#endif
+
+ipv6_failure:
+
+#ifdef COMPILE_IPV6_SUPPORT
+ if(m_bEnableIpV6)
+ {
+ if(m_sock6 != KVI_INVALID_SOCKET) {
+ if(_OUTPUT_PARANOIC)
+ postMessage(__tr("Starting identd service (IpV4/V6 on separate namespaces)"),0);
+ } else {
+ if(_OUTPUT_PARANOIC)
+ postMessage(__tr("Starting identd service (IpV4/V6 in IpV6 namespace)"),0);
+ }
+
+ } else {
+ if(_OUTPUT_PARANOIC)
+ postMessage(__tr("Starting identd service (IpV4)"),0);
+ }
+#else //!COMPILE_IPV6_SUPPORT
+ if(_OUTPUT_PARANOIC)
+ postMessage(__tr("Service startup (IpV4)"),0);
+#endif //!COMPILE_IPV6_SUPPORT
+
+
+ for(;;)
+ {
+
+ if(KviThreadEvent * e = dequeueEvent())
+ {
+ // This can be ONLY a terminate event
+ delete e;
+ goto exit_on_request;
+ }
+
+ struct timeval t;
+ t.tv_sec = 0;
+ t.tv_usec = 10000;
+
+ int nmax = 0;
+
+ fd_set rs;
+ FD_ZERO(&rs);
+
+ if(m_sock != KVI_INVALID_SOCKET)
+ {
+ FD_SET(m_sock,&rs);
+ if(((unsigned int)m_sock) > ((unsigned int)nmax))nmax = m_sock;
+ }
+#ifdef COMPILE_IPV6_SUPPORT
+ if(m_sock6 != KVI_INVALID_SOCKET)
+ {
+ FD_SET(m_sock6,&rs);
+ if(((unsigned int)m_sock6) > ((unsigned int)nmax))nmax = m_sock6;
+ }
+#endif
+
+ for(r = m_pRequestList->first();r;r = m_pRequestList->next())
+ {
+ FD_SET(r->m_sock,&rs);
+ if(((unsigned int)r->m_sock) > ((unsigned int)nmax))nmax = r->m_sock;
+ }
+
+ // FIXME: SO_REUSEADDR ?
+
+
+ int ret = kvi_socket_select(nmax + 1,&rs,0,0,&t);
+
+
+ if(ret == 0)msleep(100);
+ else {
+
+
+ if(m_sock != KVI_INVALID_SOCKET)
+ {
+ if(FD_ISSET(m_sock,&rs))
+ {
+#ifdef COMPILE_IPV6_SUPPORT
+ KviSockaddr satmp(0,m_bEnableIpV6 && m_bIpV6ContainsIpV4);
+#else
+ KviSockaddr satmp(0,false);
+#endif
+ int salen = (int)satmp.addressLength();
+
+ kvi_socket_t t = kvi_socket_accept(m_sock,satmp.socketAddress(),&salen);
+ if(t != KVI_INVALID_SOCKET)
+ {
+ QString szHost;
+ if(!satmp.getStringAddress(szHost))szHost = "unknown";
+ KviIdentRequest * r = new KviIdentRequest(t,szHost.utf8().data(),satmp.port());
+ m_pRequestList->append(r);
+ postMessage(__tr("Identd accepting connection"),r);
+ }
+ }
+ }
+
+#ifdef COMPILE_IPV6_SUPPORT
+ if(m_sock6 != KVI_INVALID_SOCKET)
+ {
+ if(FD_ISSET(m_sock6,&rs))
+ {
+ KviSockaddr satmp(0,true);
+ int salen = (int)satmp.addressLength();
+
+ kvi_socket_t t = kvi_socket_accept(m_sock6,satmp.socketAddress(),&salen);
+ if(t != KVI_INVALID_SOCKET)
+ {
+ QString szHost;
+ if(!satmp.getStringAddress(szHost))szHost = "unknown";
+ KviIdentRequest * r = new KviIdentRequest(t,szHost.utf8().data(),satmp.port());
+ m_pRequestList->append(r);
+ postMessage(__tr("Identd accepting connection"),r);
+ }
+ }
+ }
+#endif
+
+ for(r = m_pRequestList->first();r;r = m_pRequestList->next())
+ {
+ if(FD_ISSET(r->m_sock,&rs))
+ {
+ char buffer[1025];
+ int readed = kvi_socket_recv(r->m_sock,buffer,1024);
+ if(readed > 0)
+ {
+ buffer[readed] = '\0';
+ r->m_szData.append(buffer);
+ } else {
+ // error ?
+ if(readed < 0)
+ {
+ int err = kvi_socket_error();
+ if(!kvi_socket_recoverableConnectError(err))
+ {
+ postMessage(__tr("Identd socket error : dropping connection"),r);
+ dying.append(r);
+ }
+ } else {
+ // connection closed
+ postMessage(__tr("Identd connection closed by remote host"),r);
+ dying.append(r);
+ }
+ }
+ }
+ }
+
+ for(r = m_pRequestList->first();r;r = m_pRequestList->next())
+ {
+
+ int idx = r->m_szData.findFirstIdx('\n');
+
+ if(idx != -1)
+ {
+ // Ok...parse the request
+ KviStr szReq = r->m_szData.left(idx);
+ r->m_szData.cutLeft(idx + 1);
+ szReq.stripWhiteSpace();
+
+ if(szReq.hasData())
+ {
+ postMessage(__tr("Identd processing request"),r,szReq.ptr());
+
+ if(kvi_strEqualCI("VERSION",szReq.ptr()))
+ {
+ KviStr reply("Quad-Echelon 7.12-r-244");
+ kvi_socket_write(r->m_sock,reply.ptr(),reply.len());
+ } else {
+ KviStr reply(KviStr::Format,"%s : USERID : UNIX : %s\r\n",szReq.ptr(),m_szUser.ptr());
+ kvi_socket_write(r->m_sock,reply.ptr(),reply.len());
+ }
+
+ dying.append(r);
+
+ } else {
+
+ postMessage(__tr("Empty request (EOT ?)"),r,szReq.ptr());
+
+ dying.append(r);
+ }
+
+ } else {
+ // debug("Data is : (%s)",r->m_szData.ptr());
+ if(r->m_szData.len() > 1024)
+ {
+ // request too long...kill it
+ dying.append(r);
+ postMessage(__tr("Dropping connection (request too long)"),r);
+ }
+ }
+
+ }
+ }
+
+ time_t curTime = time(0);
+
+ for(r = m_pRequestList->first();r;r = m_pRequestList->next())
+ {
+ if((unsigned int)(curTime - r->m_tStart) > 30)
+ {
+ postMessage(__tr("Timed out while waiting for the request : dropping connection"),r);
+ dying.append(r);
+ }
+ }
+
+ for(KviIdentRequest * ir = dying.first();ir;ir = dying.next())
+ m_pRequestList->removeRef(ir);
+
+ dying.clear();
+
+ }
+
+
+
+exit_on_request:
+
+ postEvent(g_pIdentSentinel,new KviThreadEvent(KVI_IDENT_THREAD_EVENT_EXITING_ON_REQUEST));
+ bEventPosted = true;
+
+exit_thread:
+
+ if(!bEventPosted)
+ postEvent(g_pIdentSentinel,new KviThreadEvent(KVI_IDENT_THREAD_EVENT_EXITING));
+
+
+ if(m_sock != KVI_INVALID_SOCKET)kvi_socket_close(m_sock);
+ if(m_sock6 != KVI_INVALID_SOCKET)kvi_socket_close(m_sock6);
+ delete m_pRequestList;
+ m_pRequestList = 0;
+
+// debug("RUN EXITING");
+}
+
+
+/*
+ @doc: ident.start
+ @type:
+ command
+ @title:
+ ident.start
+ @short:
+ Starts the builtin ident service
+ @syntax:
+ ident.start
+ @description:
+ Starts the builtin ident service.[br]
+ WARNING: the kvirc ident service is just a partial implementation
+ of the RFC specifications. You should use is ONLY if you can't get
+ any other ident daemon running on your machine.[br]
+*/
+
+static bool ident_kvs_cmd_start(KviKvsModuleCommandCall * c)
+{
+ if(!g_iIdentDaemonRunningUsers)
+ startIdentService();
+ g_iIdentDaemonRunningUsers++;
+ return true;
+}
+
+/*
+ @doc: ident.stop
+ @type:
+ command
+ @title:
+ ident.stop
+ @short:
+ Stops the ident service
+ @syntax:
+ ident.stop
+ @description:
+ Stops the ident service
+ @seealso:
+ [cmd]ident.start[/cmd]
+*/
+
+static bool ident_kvs_cmd_stop(KviKvsModuleCommandCall * c)
+{
+ if(g_iIdentDaemonRunningUsers) g_iIdentDaemonRunningUsers--;
+ if(!g_iIdentDaemonRunningUsers) stopIdentService();
+ return true;
+}
+
+static bool ident_module_init(KviModule *m)
+{
+ g_pIdentSentinel = new KviIdentSentinel();
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"start",ident_kvs_cmd_start);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"stop",ident_kvs_cmd_stop);
+ return true;
+}
+
+static bool ident_module_cleanup(KviModule *m)
+{
+ stopIdentService();
+ delete g_pIdentSentinel;
+ g_pIdentSentinel = 0;
+
+ return true;
+}
+
+static bool ident_module_can_unload(KviModule *m)
+{
+ return !g_pIdentDaemon;
+}
+
+KVIRC_MODULE(
+ "Ident", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "Ident service",
+ ident_module_init,
+ ident_module_can_unload,
+ 0,
+ ident_module_cleanup
+)
+
+#include "libkviident.moc"
diff --git a/src/modules/ident/libkviident.h b/src/modules/ident/libkviident.h
new file mode 100644
index 00000000..c6d3d390
--- /dev/null
+++ b/src/modules/ident/libkviident.h
@@ -0,0 +1,86 @@
+#ifndef _LIBKVIIDENT_H_
+#define _LIBKVIIDENT_H_
+//
+// File : libkviident.h
+// Creation date : Tue Oct 2 18:22:05 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_thread.h"
+#include "kvi_sockettype.h"
+#include "kvi_string.h"
+#include "kvi_time.h"
+#include "kvi_settings.h"
+
+#include "kvi_pointerlist.h"
+#include <qobject.h>
+
+class KviIdentRequest
+{
+public:
+ KviIdentRequest(kvi_socket_t sock,const char * host,kvi_u32_t uPort);
+ ~KviIdentRequest();
+public:
+ kvi_socket_t m_sock;
+ KviStr m_szData;
+ KviStr m_szHost;
+ kvi_u32_t m_uPort;
+ time_t m_tStart;
+};
+
+typedef struct _KviIdentMessageData
+{
+ KviStr szMessage;
+ KviStr szHost;
+ KviStr szAux;
+ unsigned int uPort;
+} KviIdentMessageData;
+
+class KviIdentSentinel : public QObject
+{
+ Q_OBJECT
+public:
+ KviIdentSentinel();
+ ~KviIdentSentinel();
+protected:
+ virtual bool event(QEvent * e);
+};
+
+
+class KviIdentDaemon : public KviSensitiveThread
+{
+public:
+ KviIdentDaemon();
+ ~KviIdentDaemon();
+private:
+ KviStr m_szUser;
+ kvi_u32_t m_uPort;
+ bool m_bEnableIpV6;
+ bool m_bIpV6ContainsIpV4;
+ kvi_socket_t m_sock;
+ kvi_socket_t m_sock6;
+ KviPointerList<KviIdentRequest> * m_pRequestList;
+public:
+ virtual void run();
+protected:
+ void postMessage(const char * message,KviIdentRequest * r,const char * szAux = 0);
+};
+
+
+#endif //_LIBKVIIDENT_H_
diff --git a/src/modules/iograph/Makefile.am b/src/modules/iograph/Makefile.am
new file mode 100644
index 00000000..a9ea3928
--- /dev/null
+++ b/src/modules/iograph/Makefile.am
@@ -0,0 +1,20 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkviiograph.la
+
+libkviiograph_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkviiograph_la_SOURCES = libkviiograph.cpp
+libkviiograph_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= libkviiograph.h
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+libkviiograph.cpp: libkviiograph.moc
diff --git a/src/modules/iograph/libkviiograph.cpp b/src/modules/iograph/libkviiograph.cpp
new file mode 100644
index 00000000..ab9aa4f1
--- /dev/null
+++ b/src/modules/iograph/libkviiograph.cpp
@@ -0,0 +1,297 @@
+//
+// File : kvi_iograph.cpp
+// Creation date : Tue Oct 31 2000 00:14:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "libkviiograph.h"
+#include "kvi_module.h"
+
+#if 0
+
+
+#include "kvi_console.h"
+#include "kvi_options.h"
+#include "kvi_ircsocket.h"
+#include "kvi_frame.h"
+#include "kvi_locale.h"
+
+#include "kvi_pointerlist.h"
+#include <qtooltip.h>
+#include <qpointarray.h>
+#include <qpainter.h>
+
+
+extern QPixmap * g_pIccMemBuffer;
+
+
+static KviPointerList<KviIOGraphDisplay> * g_pIOGraphWidgetList;
+
+KviIOGraphDisplay::KviIOGraphDisplay(KviIrcContextController * pController,bool sentGraph,bool recvGraph)
+: KviIrcContextGraphicalApplet(pController,"iograph_display")
+{
+ g_pIOGraphWidgetList->append(this);
+ for(int i=0;i < KVI_IOGRAPH_NUMBER_POINTS;i++)
+ {
+ m_sendRates[i] = 0;
+ m_recvRates[i] = 0;
+ }
+ m_iNextPoint = 1;
+ m_uLastSentBytes = pController->console()->socket()->sentBytes();
+ m_uLastRecvBytes = pController->console()->socket()->readBytes();
+ m_bShowSentGraph = sentGraph;
+ m_bShowRecvGraph = recvGraph;
+
+ KviStr tip;
+ if(sentGraph)tip = __tr("Outgoing traffic");
+ if(recvGraph)
+ {
+ if(tip.hasData())tip.append("\n");
+ tip.append(__tr("Incoming traffic"));
+ }
+
+ QToolTip::add(this,tip.ptr());
+
+ startTimer(1000);
+}
+
+KviIOGraphDisplay::~KviIOGraphDisplay()
+{
+ g_pIOGraphWidgetList->removeRef(this);
+}
+
+void KviIOGraphDisplay::timerEvent(QTimerEvent *e)
+{
+ unsigned int sB = console()->socket()->sentBytes();
+ unsigned int rB = console()->socket()->readBytes();
+ int sDiff = (sB - m_uLastSentBytes) / 8;
+ int rDiff = (rB - m_uLastRecvBytes) / 32;
+// debug("s:%d,r:%d",sDiff,rDiff);
+ if(sDiff < 0)sDiff = 0;
+ else if(sDiff > 30)sDiff = 30;
+ if(rDiff < 0)rDiff = 0;
+ else if(rDiff > 30)rDiff = 30;
+ m_uLastSentBytes = sB;
+ m_uLastRecvBytes = rB;
+ m_sendRates[m_iNextPoint] = sDiff;
+ m_recvRates[m_iNextPoint] = rDiff;
+ m_iNextPoint++;
+ if(m_iNextPoint >= KVI_IOGRAPH_NUMBER_POINTS)m_iNextPoint = 0;
+ update();
+}
+
+static QCOORD horizSegments[6 * 4]=
+{
+ 5 , 3 , KVI_IRCTOOLBARAPPLET_MAXIMUM_WIDTH - 4 , 3 ,
+ 5 , 8 , KVI_IRCTOOLBARAPPLET_MAXIMUM_WIDTH - 4 , 8 ,
+ 5 , 13 , KVI_IRCTOOLBARAPPLET_MAXIMUM_WIDTH - 4 , 13 ,
+ 5 , 18 , KVI_IRCTOOLBARAPPLET_MAXIMUM_WIDTH - 4 , 18 ,
+ 5 , 23 , KVI_IRCTOOLBARAPPLET_MAXIMUM_WIDTH - 4 , 23 ,
+ 5 , 28 , KVI_IRCTOOLBARAPPLET_MAXIMUM_WIDTH - 4 , 28
+};
+
+static QCOORD vertSegments[29 * 4]=
+{
+ 9 , 4 , 9 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 14 , 4 , 14 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 19 , 4 , 19 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 24 , 4 , 24 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 29 , 4 , 29 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 34 , 4 , 34 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 39 , 4 , 39 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 44 , 4 , 44 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 49 , 4 , 49 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 54 , 4 , 54 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 59 , 4 , 59 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 64 , 4 , 64 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 69 , 4 , 69 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 74 , 4 , 74 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 79 , 4 , 79 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 84 , 4 , 84 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 89 , 4 , 89 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 94 , 4 , 94 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 99 , 4 , 99 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 104 , 4 , 104 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 109 , 4 , 109 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 114 , 4 , 114 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 119 , 4 , 119 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 124 , 4 , 124 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 129 , 4 , 129 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 134 , 4 , 134 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 139 , 4 , 139 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 144 , 4 , 144 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 149 , 4 , 149 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5
+};
+
+void KviIOGraphDisplay::drawContents(QPainter * p)
+{
+ static QPointArray hp(6 * 4,horizSegments);
+ static QPointArray vp(29 * 4,vertSegments);
+
+ p->setPen(KVI_OPTION_COLOR(KviOption_colorIrcToolBarAppletForegroundLowContrast));
+ p->drawLineSegments(hp,0,6);
+ p->drawLineSegments(vp,0,29);
+ p->setPen(KVI_OPTION_COLOR(KviOption_colorIrcToolBarAppletForegroundMidContrast));
+
+ p->drawLine(4,33,KVI_IRCTOOLBARAPPLET_MAXIMUM_WIDTH - 4,33);
+ p->drawLine(4,3,4,KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5);
+
+ p->setPen(isActiveContext() ?
+ KVI_OPTION_COLOR(KviOption_colorIrcToolBarAppletForegroundHighContrastActive1) :
+ KVI_OPTION_COLOR(KviOption_colorIrcToolBarAppletForegroundHighContrastInactive1));
+
+ // the first point to draw is "m_iNextPoint"
+ // it will be drawn at X = 4
+
+ int leftPart = KVI_IOGRAPH_NUMBER_POINTS - m_iNextPoint;
+
+ int i;
+
+ if(m_bShowSentGraph)
+ {
+ for(i = 1;i < leftPart;i++)
+ {
+ p->drawLine(3 + i,33 - m_sendRates[m_iNextPoint + i - 1],4 + i,33 - m_sendRates[m_iNextPoint + i]);
+ }
+
+ p->drawLine(3 + i,33 - m_sendRates[m_iNextPoint + i - 1],4 + i,33 - m_sendRates[0]);
+
+ for(i = 1;i < m_iNextPoint;i++)
+ {
+ p->drawLine(leftPart + 3 + i,33 - m_sendRates[i - 1],leftPart + 4 + i,33 - m_sendRates[i]);
+ }
+ }
+
+ if(m_bShowRecvGraph)
+ {
+ p->setPen(isActiveContext() ?
+ KVI_OPTION_COLOR(KviOption_colorIrcToolBarAppletForegroundHighContrastActive2) :
+ KVI_OPTION_COLOR(KviOption_colorIrcToolBarAppletForegroundHighContrastInactive2));
+
+ for(i = 1;i < leftPart;i++)
+ {
+ p->drawLine(3 + i,33 - m_recvRates[m_iNextPoint + i - 1],4 + i,33 - m_recvRates[m_iNextPoint + i]);
+ }
+
+ p->drawLine(3 + i,33 - m_recvRates[m_iNextPoint + i - 1],4 + i,33 - m_recvRates[0]);
+
+ for(i = 1;i < m_iNextPoint;i++)
+ {
+ p->drawLine(leftPart + 3 + i,33 - m_recvRates[i - 1],leftPart + 4 + i,33 - m_recvRates[i]);
+ }
+ }
+}
+
+QSize KviIOGraphDisplay::sizeHint() const
+{
+ return QSize(KVI_IRCTOOLBARAPPLET_MAXIMUM_WIDTH,KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT);
+}
+
+
+/*
+ @doc: iograph.add
+ @type:
+ command
+ @title:
+ iograph.add
+ @short:
+ Adds an IOGraph applet
+ @syntax:
+ iograph.add [-i] [-o]
+ @description:
+ Adds an IOGraph applet to the current irc-context toolbar. It will
+ monitor the Incoming and Outgoing socket traffic.[br]
+ Since both graphs often are somewhat unreadable,
+ the -i switch will cause the IOGraph applet to show only
+ the incoming traffic, and the -o switch will cause it to show
+ only the outgoing traffic.[br]
+ Well...I agree...this is an amazing misuse of resources :)
+*/
+
+
+
+static bool iograph_module_cmd_add(KviModule *m,KviCommand *c)
+{
+ ENTER_STACK_FRAME(c,"iograph_module_cmd_add");
+
+ KviStr dummy;
+ if(!g_pUserParser->parseCmdFinalPart(c,dummy))return false;
+
+ if(!c->window()->console())return c->noIrcContext();
+
+ bool bSentGraph = !(c->hasSwitch('i'));
+ bool bRecvGraph = !(c->hasSwitch('o'));
+
+ if(!(bSentGraph || bRecvGraph))bRecvGraph = true;
+
+ KviIOGraphDisplay * dpy = new KviIOGraphDisplay(c->window()->console()->icController(),bSentGraph,bRecvGraph);
+ c->window()->console()->icController()->addApplet(dpy);
+ dpy->show();
+
+ return c->leaveStackFrame();
+}
+#endif
+
+static bool iograph_module_init(KviModule *m)
+{
+#if 0
+ g_pIOGraphWidgetList = new KviPointerList<KviIOGraphDisplay>;
+ g_pIOGraphWidgetList->setAutoDelete(false);
+ m->registerCommand("add",iograph_module_cmd_add);
+#endif
+ return true;
+}
+
+static bool iograph_module_cleanup(KviModule *m)
+{
+#if 0
+ while(g_pIOGraphWidgetList->first())
+ {
+ KviIOGraphDisplay * dpy = g_pIOGraphWidgetList->first();
+ dpy->controller()->removeApplet(dpy); // deleted path
+ }
+ delete g_pIOGraphWidgetList;
+#endif
+ return true;
+}
+
+static bool iograph_module_can_unload(KviModule *m)
+{
+#if 0
+ return g_pIOGraphWidgetList->isEmpty();
+#else
+ return true;
+#endif
+}
+
+KVIRC_MODULE(
+ "IOGraph", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2000 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "IRC socket traffic monitor",
+ iograph_module_init,
+ iograph_module_can_unload,
+ 0,
+ iograph_module_cleanup
+)
+
+#if 0
+#include "libkviiograph.moc"
+#endif
diff --git a/src/modules/iograph/libkviiograph.h b/src/modules/iograph/libkviiograph.h
new file mode 100644
index 00000000..9b134615
--- /dev/null
+++ b/src/modules/iograph/libkviiograph.h
@@ -0,0 +1,55 @@
+#ifndef _LIBKVIIOGRAPH_H_
+#define _LIBKVIIOGRAPH_H_
+
+//
+// File : kvi_iograph.cpp
+// Creation date : Tue Oct 31 2000 00:14:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#if 0
+
+#include "kvi_irctoolbar.h"
+
+
+#define KVI_IOGRAPH_NUMBER_POINTS 148
+
+class KviIOGraphDisplay : public KviIrcContextGraphicalApplet
+{
+ Q_OBJECT
+public:
+ KviIOGraphDisplay(KviIrcContextController * pController,bool sentGraph,bool recvGraph);
+ ~KviIOGraphDisplay();
+protected:
+ unsigned int m_sendRates[KVI_IOGRAPH_NUMBER_POINTS];
+ unsigned int m_recvRates[KVI_IOGRAPH_NUMBER_POINTS];
+ int m_iNextPoint;
+ unsigned int m_uLastSentBytes;
+ unsigned int m_uLastRecvBytes;
+ bool m_bShowSentGraph;
+ bool m_bShowRecvGraph;
+protected:
+ virtual void drawContents(QPainter *p);
+ virtual QSize sizeHint() const;
+ virtual void timerEvent(QTimerEvent *e);
+};
+
+#endif
+
+#endif
diff --git a/src/modules/lamerizer/Makefile.am b/src/modules/lamerizer/Makefile.am
new file mode 100644
index 00000000..ce798e5c
--- /dev/null
+++ b/src/modules/lamerizer/Makefile.am
@@ -0,0 +1,27 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvilamerizer.la
+
+libkvilamerizer_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvilamerizer_la_SOURCES = libkvilamerizer.cpp
+libkvilamerizer_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= libkvilamerizer.h
+
+tmpdir = $(pluglibdir)/caps/crypt/
+
+tmp_DATA= lamerizer
+
+EXTRA_DIST = $(tmp_DATA)
+
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+libkvilamerizer.cpp: libkvilamerizer.moc
diff --git a/src/modules/lamerizer/lamerizer b/src/modules/lamerizer/lamerizer
new file mode 100644
index 00000000..9788f702
--- /dev/null
+++ b/src/modules/lamerizer/lamerizer
@@ -0,0 +1 @@
+timestamp
diff --git a/src/modules/lamerizer/libkvilamerizer.cpp b/src/modules/lamerizer/libkvilamerizer.cpp
new file mode 100644
index 00000000..adb7a194
--- /dev/null
+++ b/src/modules/lamerizer/libkvilamerizer.cpp
@@ -0,0 +1,279 @@
+//=============================================================================
+//
+// File : libkvilamerizer.cpp
+// Creation date : Sat Jan 20 2002 17:06:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "libkvilamerizer.h"
+
+#include "kvi_module.h"
+#include "kvi_debug.h"
+#include "kvi_locale.h"
+
+
+
+/*
+ @doc: lamerizer
+ @type:
+ module
+ @short:
+ The Lamerizer text transformation engine
+ @title:
+ The lamerizer module
+ @body:
+ This is an example of what you should NOT do with a text transformation
+ engine. Do NOT use it! :D
+*/
+
+
+
+#ifdef COMPILE_CRYPT_SUPPORT
+
+ #include "kvi_memmove.h"
+ #include "kvi_malloc.h"
+
+ #include "kvi_pointerlist.h"
+
+ static KviPointerList<KviCryptEngine> * g_pEngineList = 0;
+
+ KviLamerizerEngine::KviLamerizerEngine(bool bLight)
+ : KviCryptEngine()
+ {
+ m_bLight = bLight;
+ g_pEngineList->append(this);
+ }
+
+ KviLamerizerEngine::~KviLamerizerEngine()
+ {
+ g_pEngineList->removeRef(this);
+ }
+
+ bool KviLamerizerEngine::init(const char *,int,const char *,int)
+ {
+ return true;
+ }
+
+ static char subst_table[256] =
+ {
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 007
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 015
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 023
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 031
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 039 : '
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 047 : /
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 055 : 7
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 063 : ?
+ 0 , '4' , '8' , 'C' , 'D' , '3' , 'F' , 'G' , // 071 : G
+ 'H' , '|' , 'J' , 'K' , 'L' , 'm' , 'N' , 'O' , // 079 : O
+ 'P' , 'q' , 'R' , '5' , '7' , 'U' , 'V' , 'W' , // 087 : W
+ 'x' , 'Y' , '2' , 0 , 0 , 0 , 0 , 0 , // 095 : _
+ 0 , '4' , 'b' , 'c' , 'd' , '3' , 'f' , '9' , // 103 : g
+ 'h' , '|' , 'j' , 'k' , '1' , 'm' , 'n' , '0' ,
+ 'p' , 'q' , 'r' , '5' , '7' , 'u' , 'v' , 'w' , // 119 : w
+ 'x' , 'y' , '2' , 0 , 0 , 0 , 0 , 0 , // 127 :
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 135 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 143 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 151 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 159 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 167 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 175 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 183 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 191 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 199 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 215 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 223 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 231 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 239 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 247 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
+ };
+
+ static char subst_table_light[256] =
+ {
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 007
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 015
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 023
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 031
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 039 : '
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 047 : /
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 055 : 7
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 063 : ?
+ 0 , '4' , 'B' , 'C' , 'D' , '3' , 'F' , 'G' , // 071 : G
+ 'H' , '|' , 'J' , 'K' , 'L' , 'm' , 'N' , 'O' , // 079 : O
+ 'P' , 'q' , 'R' , '5' , '7' , 'U' , 'V' , 'W' , // 087 : W
+ 'x' , 'Y' , 'Z' , 0 , 0 , 0 , 0 , 0 , // 095 : _
+ 0 , '4' , 'b' , 'c' , 'd' , '3' , 'f' , 'G' , // 103 : g
+ 'h' , '|' , 'j' , 'k' , '1' , 'm' , 'n' , '0' ,
+ 'p' , 'q' , 'r' , '5' , '7' , 'u' , 'v' , 'w' , // 119 : w
+ 'x' , 'y' , 'z' , 0 , 0 , 0 , 0 , 0 , // 127 :
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 135 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 143 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 151 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 159 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 167 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 175 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 183 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 191 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 199 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 215 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 223 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 231 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 239 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // 247 : �
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
+ };
+
+
+ KviCryptEngine::EncryptResult KviLamerizerEngine::encrypt(const char * plainText,KviStr &outBuffer)
+ {
+ outBuffer = plainText;
+ unsigned char * aux = (unsigned char *)outBuffer.ptr();
+ if(m_bLight)
+ {
+ while(*aux)
+ {
+ if(subst_table_light[*aux])
+ {
+ *aux = subst_table_light[*aux];
+ }
+ aux++;
+ }
+ } else {
+ while(*aux)
+ {
+ if(subst_table[*aux])
+ {
+ *aux = subst_table[*aux];
+ }
+ aux++;
+ }
+ }
+
+ if(!m_bLight)
+ {
+ outBuffer.replaceAll("F","Ph");
+ outBuffer.replaceAll("V","\\/");
+ }
+
+ return KviCryptEngine::Encoded;
+ }
+
+ KviCryptEngine::DecryptResult KviLamerizerEngine::decrypt(const char * inBuffer,KviStr &plainText)
+ {
+ plainText = inBuffer;
+ return KviCryptEngine::DecryptOkWasPlainText;
+ }
+
+ static KviCryptEngine * allocLamerizerEngine()
+ {
+ return new KviLamerizerEngine(false);
+ }
+
+ static KviCryptEngine * allocLightLamerizerEngine()
+ {
+ return new KviLamerizerEngine(true);
+ }
+
+ static void deallocLamerizerEngine(KviCryptEngine * e)
+ {
+ delete e;
+ }
+
+#endif
+
+
+// =======================================
+// module routines
+// =======================================
+static bool lamerizer_module_init(KviModule * m)
+{
+#ifdef COMPILE_CRYPT_SUPPORT
+ g_pEngineList = new KviPointerList<KviCryptEngine>;
+ g_pEngineList->setAutoDelete(false);
+
+ // FIXME: Maybe convert this repeated code to a function eh ?
+
+ KviCryptEngineDescription * d = new KviCryptEngineDescription;
+ d->szName = "Lamerizer";
+ d->szAuthor = "Szymon Stefanek and Jan Wagner";
+ d->szDescription = __tr2qs("A really lame text transformation engine :D");
+ d->iFlags = KVI_CRYPTENGINE_CAN_ENCRYPT;
+ d->allocFunc = allocLamerizerEngine;
+ d->deallocFunc = deallocLamerizerEngine;
+ m->registerCryptEngine(d);
+
+
+ d = new KviCryptEngineDescription;
+ d->szName = "LamerizerLight";
+ d->szAuthor = "Szymon Stefanek and Jan Wagner";
+ d->szDescription = __tr2qs("A really lame text transformation engine: Light Version.");
+ d->iFlags = KVI_CRYPTENGINE_CAN_ENCRYPT;
+ d->allocFunc = allocLightLamerizerEngine;
+ d->deallocFunc = deallocLamerizerEngine;
+ m->registerCryptEngine(d);
+
+ return true;
+#else
+ return false;
+#endif
+}
+
+static bool lamerizer_module_cleanup(KviModule *m)
+{
+#ifdef COMPILE_CRYPT_SUPPORT
+ while(g_pEngineList->first())delete g_pEngineList->first();
+ delete g_pEngineList;
+ g_pEngineList = 0;
+ m->unregisterCryptEngines();
+ return true;
+#else
+ return false;
+#endif
+}
+
+static bool lamerizer_module_can_unload(KviModule *)
+{
+#ifdef COMPILE_CRYPT_SUPPORT
+ return g_pEngineList->isEmpty();
+#else
+ return true;
+#endif
+}
+
+// =======================================
+// plugin definition structure
+// =======================================
+KVIRC_MODULE(
+ "Lamerizer crypt engine",
+ "1.0.1",
+ "Szymon Stefanek <pragma at kvirc dot net> \n Jan Wagner <[email protected]>" ,
+ "Exports the lamerizer text transformation engine",
+ lamerizer_module_init ,
+ lamerizer_module_can_unload,
+ 0,
+ lamerizer_module_cleanup
+)
+
+#ifdef COMPILE_CRYPT_SUPPORT
+ #include "libkvilamerizer.moc"
+#endif
diff --git a/src/modules/lamerizer/libkvilamerizer.h b/src/modules/lamerizer/libkvilamerizer.h
new file mode 100644
index 00000000..e0b78bd7
--- /dev/null
+++ b/src/modules/lamerizer/libkvilamerizer.h
@@ -0,0 +1,47 @@
+#ifndef _LIBKVILAMERIZER_H_
+#define _LIBKVILAMERIZER_H_
+//
+// File : libkvilamerizer.h
+// Creation date : Sat Now 4 2000 15:41:41 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Till Bush ([email protected])
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_CRYPT_SUPPORT
+
+ #include "kvi_crypt.h"
+
+ class KviLamerizerEngine : public KviCryptEngine
+ {
+ Q_OBJECT
+ public:
+ KviLamerizerEngine(bool bLight);
+ ~KviLamerizerEngine();
+ protected:
+ bool m_bLight;
+ public:
+ virtual bool init(const char *encKey,int encKeyLen,const char *decKey,int decKeyLen);
+ virtual KviCryptEngine::EncryptResult encrypt(const char * plainText,KviStr &outBuffer);
+ virtual KviCryptEngine::DecryptResult decrypt(const char * inBuffer,KviStr &plainText);
+ };
+
+#endif // COMPILE_CRYPT_SUPPORT
+
+#endif // _LIBKVILAMERIZER_H_
diff --git a/src/modules/links/Makefile.am b/src/modules/links/Makefile.am
new file mode 100644
index 00000000..51eea094
--- /dev/null
+++ b/src/modules/links/Makefile.am
@@ -0,0 +1,20 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvilinks.la
+
+libkvilinks_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvilinks_la_SOURCES = libkvilinks.cpp linkswindow.cpp
+libkvilinks_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= linkswindow.h
+
+m_%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+linkswindow.cpp: m_linkswindow.moc
diff --git a/src/modules/links/libkvilinks.cpp b/src/modules/links/libkvilinks.cpp
new file mode 100644
index 00000000..6486b985
--- /dev/null
+++ b/src/modules/links/libkvilinks.cpp
@@ -0,0 +1,116 @@
+//
+// File : libkvilinks.cpp
+// Creation date : Thu Dec 21 2000 12:39:12 CEST by Szymon Stefanek
+//
+// Copyright (C) 1999-2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "kvi_module.h"
+
+
+#include "linkswindow.h"
+
+#include "kvi_frame.h"
+#include "kvi_window.h"
+#include "kvi_locale.h"
+
+#include <qsplitter.h>
+
+KviPointerList<KviLinksWindow> * g_pLinksWindowList = 0;
+
+
+/*
+ @doc: links.open
+ @type:
+ command
+ @title:
+ links.open
+ @short:
+ Opens a Links window
+ @syntax:
+ links.open
+ @description:
+ Opens a "links" window attacched to the current irc context.[br]
+ The links window handles the RPL_LINKS server replies and shows
+ them in a Tree-View form: this is useful in vizualizing the
+ current network connections.[br]
+ Please note that the total number of links received (and the
+ total count of servers displayed when all the links have been received)
+ may actually be less than the real number of irc servers in the network.
+ Servers that contain a wildcard in their name often act as gateways (hubs)
+ for a "local irc network"; if you're requesting links from a server that is
+ external to the gateway, the servers internal to the network "behind the gateway"
+ will not be shown; in the extreme case you will see the gateway as leaf node (and it isn't).
+ To see the internal network server tree you might request LINKS from the gateway server.[br]
+*/
+
+
+static bool links_kvs_cmd_open(KviKvsModuleCommandCall * c)
+{
+
+ // FIND ME
+ if(!c->window()->console())return c->context()->errorNoIrcContext();
+
+ if(!(c->window()->console()->ircContext()->linksWindow()))
+ {
+ KviLinksWindow *w = new KviLinksWindow(c->window()->frame(),c->window()->console());
+ c->window()->frame()->addWindow(w);
+ } else {
+ c->warning(__tr2qs("Links window alread open for this IRC context"));
+ }
+
+ return true;
+}
+
+
+
+
+static bool links_module_init(KviModule * m)
+{
+ g_pLinksWindowList = new KviPointerList<KviLinksWindow>;
+ g_pLinksWindowList->setAutoDelete(false);
+
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"open",links_kvs_cmd_open);
+
+ return true;
+}
+
+static bool links_module_cleanup(KviModule *m)
+{
+ while(g_pLinksWindowList->first())g_pLinksWindowList->first()->die();
+ delete g_pLinksWindowList;
+ g_pLinksWindowList = 0;
+ return true;
+}
+
+static bool links_module_can_unload(KviModule *m)
+{
+ return (g_pLinksWindowList->isEmpty());
+}
+
+KVIRC_MODULE(
+ "Links", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2000-2001 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "Links window extension",
+ links_module_init,
+ links_module_can_unload,
+ 0,
+ links_module_cleanup
+)
diff --git a/src/modules/links/linkswindow.cpp b/src/modules/links/linkswindow.cpp
new file mode 100644
index 00000000..1dd567f5
--- /dev/null
+++ b/src/modules/links/linkswindow.cpp
@@ -0,0 +1,472 @@
+//
+// File : linkswindow.cpp
+// Creation date : Thu Dec 21 2001 12:41:18 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include "linkswindow.h"
+
+#include "kvi_debug.h"
+#include "kvi_iconmanager.h"
+#include "kvi_ircview.h"
+#include "kvi_out.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_out.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_themedlabel.h"
+#include "kvi_irccontext.h"
+#include "kvi_ircconnection.h"
+
+#include <qsplitter.h>
+#include <qtooltip.h>
+#include "kvi_tal_hbox.h"
+#include <qlabel.h>
+
+extern KviPointerList<KviLinksWindow> * g_pLinksWindowList;
+
+KviLinksWindow::KviLinksWindow(KviFrame * lpFrm,KviConsole * lpConsole)
+: KviWindow(KVI_WINDOW_TYPE_LINKS,lpFrm,"links",lpConsole) , KviExternalServerDataParser()
+{
+ g_pLinksWindowList->append(this);
+
+ m_pTopSplitter = new QSplitter(Qt::Horizontal,this,"top_splitter");
+
+ // The button box on the left
+ KviTalHBox * box = new KviTalHBox(m_pTopSplitter);
+
+ m_pRequestButton = new QToolButton(box,"request_button");
+ m_pRequestButton->setUsesBigPixmap(false);
+ m_pRequestButton->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_LINKS)));
+ connect(m_pRequestButton,SIGNAL(clicked()),this,SLOT(requestLinks()));
+ QToolTip::add(m_pRequestButton,__tr2qs("Request Links"));
+
+ QLabel * l = new QLabel(box,"");
+ box->setStretchFactor(l,1);
+ m_pInfoLabel = new KviThemedLabel(m_pTopSplitter,"info_label");
+
+ connect(lpConsole->context(),SIGNAL(stateChanged()),
+ this,SLOT(connectionStateChange()));
+
+ m_pSplitter = new QSplitter(Qt::Horizontal,this,"splitter");
+ m_pVertSplitter = new QSplitter(Qt::Vertical,m_pSplitter,"vsplitter");
+
+ m_pListView = new KviTalListView(m_pVertSplitter);
+ m_pListView->addColumn(__tr2qs("Link"));
+ m_pListView->addColumn(__tr2qs("Hops"));
+ m_pListView->addColumn(__tr2qs("Description"));
+ m_pListView->setRootIsDecorated(true);
+ m_pListView->setAllColumnsShowFocus(true);
+ connect(m_pListView,SIGNAL(rightButtonPressed(KviTalListViewItem *,const QPoint &,int)),
+ this,SLOT(showHostPopup(KviTalListViewItem *,const QPoint &,int)));
+
+ m_pIrcView = new KviIrcView(m_pVertSplitter,lpFrm,this);
+
+ m_pLinkList = new KviPointerList<KviLink>;
+ m_pLinkList->setAutoDelete(true);
+
+ m_pHostPopup = new KviTalPopupMenu();
+ connect(m_pHostPopup,SIGNAL(activated(int)),this,SLOT(hostPopupClicked(int)));
+
+ connectionStateChange();
+
+ m_pConsole->ircContext()->setLinksWindowPointer(this);
+
+ m_szRootServer = __tr2qs("(None)");
+}
+
+KviLinksWindow::~KviLinksWindow()
+{
+ g_pLinksWindowList->removeRef(this);
+ m_pConsole->ircContext()->setLinksWindowPointer(0);
+ delete m_pLinkList;
+ delete m_pHostPopup;
+}
+
+void KviLinksWindow::getBaseLogFileName(KviStr &buffer)
+{
+ buffer.sprintf("LINKS_%d",console()->ircContextId());
+}
+
+
+void KviLinksWindow::requestLinks()
+{
+ if(m_pConsole->isConnected())
+ {
+ m_pConsole->connection()->sendFmtData("links");
+ outputNoFmt(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Sent links request, waiting for reply..."));
+ m_pRequestButton->setEnabled(false);
+ } else {
+ outputNoFmt(KVI_OUT_SYSTEMERROR,__tr2qs("Cannot request links: No active connection"));
+ }
+}
+
+void KviLinksWindow::connectionStateChange()
+{
+ KviIrcContext::State st = m_pConsole->context()->state();
+ m_pRequestButton->setEnabled(st == KviIrcContext::Connected);
+ if(st == KviIrcContext::Connected)
+ {
+ KviStr tmp(KviStr::Format,__tr2qs("Connected to %s (%s)"),m_pConsole->connection()->currentServerName().utf8().data(),m_pConsole->currentNetworkName().utf8().data());
+ m_pInfoLabel->setText(tmp.ptr());
+ } else {
+ m_pInfoLabel->setText(__tr2qs("Links cannot be requested: Not connected to a server"));
+ }
+}
+
+QPixmap * KviLinksWindow::myIconPtr()
+{
+ return g_pIconManager->getSmallIcon(KVI_SMALLICON_LINKS);
+}
+
+void KviLinksWindow::resizeEvent(QResizeEvent *e)
+{
+ int hght2 = m_pTopSplitter->sizeHint().height();
+ m_pTopSplitter->setGeometry(0,0,width(),hght2);
+ m_pSplitter->setGeometry(0,hght2,width(),height() - hght2);
+}
+
+QSize KviLinksWindow::sizeHint() const
+{
+ QSize ret(m_pSplitter->sizeHint().width(),
+ m_pSplitter->sizeHint().height() + m_pTopSplitter->sizeHint().height());
+ return ret;
+}
+
+void KviLinksWindow::fillCaptionBuffers()
+{
+ KviQString::sprintf(m_szPlainTextCaption,__tr2qs("Links for %Q [IRC Context %u]"),&m_szRootServer,m_pConsole->ircContextId());
+
+ KviQString::sprintf(m_szHtmlActiveCaption,
+ __tr2qs("<nobr><font color=\"%s\"><b>Links for %Q</b></font> " \
+ "<font color=\"%s\">[IRC Context %u]</font></nobr>"),
+ KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name().ascii(),
+ &m_szRootServer,
+ KVI_OPTION_COLOR(KviOption_colorCaptionTextActive2).name().ascii(),
+ m_pConsole->ircContextId());
+
+ KviQString::sprintf(m_szHtmlInactiveCaption,
+ __tr2qs("<nobr><font color=\"%s\"><b>Links for %Q</b></font> " \
+ "<font color=\"%s\">[IRC Context %u]</font></nobr>"),
+ KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name().ascii(),
+ &m_szRootServer,
+ KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive2).name().ascii(),
+ m_pConsole->ircContextId());
+}
+
+void KviLinksWindow::die()
+{
+ close();
+}
+
+void KviLinksWindow::control(int message)
+{
+ switch(message)
+ {
+ case EXTERNAL_SERVER_DATA_PARSER_CONTROL_RESET: reset(); break;
+ case EXTERNAL_SERVER_DATA_PARSER_CONTROL_ENDOFDATA: endOfLinks(); break;
+ }
+}
+
+void KviLinksWindow::endOfLinks()
+{
+ m_pRequestButton->setEnabled(true);
+
+ m_pListView->clear();
+ m_pListView->setSorting(-1);
+
+ outputNoFmt(KVI_OUT_SYSTEMMESSAGE,"======================");
+ outputNoFmt(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Received end of links."));
+ outputNoFmt(KVI_OUT_SYSTEMMESSAGE,"======================");
+
+ KviTalListViewItem * it = 0;
+ KviTalListViewItem * root = 0;
+
+ int totalHosts = 0;
+ int totalHops = 0;
+ int maxHops = 0;
+ int avgHops = 0;
+ int directLinks = 0;
+ int nearLinks = 0;
+ int brokenLinks = 0;
+ int maxLinks = 0;
+ int farLinks = 0;
+ int wildServers = 0;
+
+ KviStr szMaxHop,szMaxLinks;
+
+ m_pListView->setUpdatesEnabled(false);
+ for(KviLink *l=m_pLinkList->first();l;l=m_pLinkList->next()){
+ totalHosts++;
+ if(l->hops == 0)root = new KviTalListViewItem(m_pListView,QString(l->host.ptr()),"0",QString(l->description.ptr()));
+ else {
+ totalHops += l->hops;
+ if(l->hops < 4){
+ nearLinks++;
+ if(l->hops == 1)directLinks++;
+ } else {
+ if(l->hops >= 7)farLinks++;
+ }
+ if(l->hops == maxHops){
+ szMaxHop.append(',');
+ szMaxHop.append(l->host);
+ } else if(l->hops > maxHops){
+ maxHops = l->hops;
+ szMaxHop = l->host;
+ }
+ if(l->host.contains('*'))wildServers++;
+ it = insertLink(l);
+ if(!it){
+ output(KVI_OUT_SYSTEMERROR,__tr2qs("Broken link: Missing parent (%s) for %s (%d hops): %s (used /LINKS <mask> ?)"),
+ l->parent.ptr(),l->host.ptr(),l->hops,l->description.ptr());
+ brokenLinks++;
+ KviStr tmp(KviStr::Format,__tr2qs("%s: Parent link %s"),l->description.ptr(),l->parent.ptr());
+ KviStr tmp2(KviStr::Format,"%d",l->hops);
+ if(root)it = new KviTalListViewItem(m_pListView,root,QString(l->host.ptr()),QString(tmp2.ptr()),QString(tmp.ptr()));
+ else {
+ outputNoFmt(KVI_OUT_SYSTEMERROR,__tr2qs("Warning: No root link was sent by the server, the stats may be invalid."));
+ it = new KviTalListViewItem(m_pListView,QString(l->host.ptr()),QString(tmp2.ptr()),QString(tmp.ptr()));
+ }
+ } else {
+ it = it->parent();
+ if(it)
+ {
+ int links = it->childCount() + 1;
+ if(links == maxLinks)
+ {
+ szMaxLinks.append(',');
+ szMaxLinks.append(it->text(0));
+ } else if(links > maxLinks)
+ {
+ maxLinks = links;
+ szMaxLinks = it->text(0);
+ }
+ }
+ }
+ }
+ }
+
+ avgHops = ((totalHosts > 0) ? ((totalHops * 100) / totalHosts) : 0 );
+ int nearProcent = ((totalHosts > 0) ? ((nearLinks * 10000) / totalHosts) : 0);
+ int directProcent = ((totalHosts > 0) ? ((directLinks * 10000) / totalHosts) : 0);
+ int midLinks = totalHosts - (farLinks + nearLinks + 1 + brokenLinks);
+ if(midLinks < 0)midLinks = 0;
+ int midProcent = ((totalHosts > 0) ? ((midLinks * 10000) / totalHosts) : 0);
+ int farProcent = ((totalHosts > 0) ? ((farLinks * 10000) / totalHosts) : 0);
+
+ outputNoFmt(KVI_OUT_LINKS,"======================");
+
+// if(!root)root = m_pListView->firstChild();
+ if(root)
+ {
+ m_szRootServer = root->text(0);
+ output(KVI_OUT_LINKS,__tr2qs("%c%cLinks for %Q"),KVI_TEXT_BOLD,KVI_TEXT_UNDERLINE,&m_szRootServer);
+ outputNoFmt(KVI_OUT_LINKS,"======================");
+ QString tmpo = wildServers ? __tr2qs("Total hosts listed") : __tr2qs("Total hosts in the network");
+ output(KVI_OUT_LINKS,"%Q: %d",&tmpo,totalHosts);
+ if(wildServers)output(KVI_OUT_LINKS,__tr2qs("Wildcard servers (hubs?): %d"),wildServers);
+ output(KVI_OUT_LINKS,__tr2qs("Direct links: %d (~%d.%d %)"),directLinks,directProcent / 100, directProcent % 100);
+ output(KVI_OUT_LINKS,__tr2qs("Close links (1 <= hops <= 3): %d (~%d.%d %)"),nearLinks,nearProcent / 100,nearProcent % 100);
+ output(KVI_OUT_LINKS,__tr2qs("Mid-range links (4 <= hops <= 6): %d (~%d.%d %)"),midLinks,midProcent / 100,midProcent % 100);
+ output(KVI_OUT_LINKS,__tr2qs("Distant links (7 <= hops): %d (~%d.%d %)"),farLinks,farProcent / 100,farProcent % 100);
+ output(KVI_OUT_LINKS,__tr2qs("Broken (unknown) links: %d"),brokenLinks);
+ output(KVI_OUT_LINKS,__tr2qs("Maximum links per host: %d [%s]"),maxLinks,szMaxLinks.ptr());
+ output(KVI_OUT_LINKS,__tr2qs("Total links: %d"),totalHops);
+ output(KVI_OUT_LINKS,__tr2qs("Maximum hops: %d [%s]"),maxHops,szMaxHop.ptr());
+ output(KVI_OUT_LINKS,__tr2qs("Average hops: ~%d.%d"),avgHops / 100,avgHops % 100);
+ } else {
+ m_szRootServer = __tr2qs("(Unknown)");
+ outputNoFmt(KVI_OUT_LINKS,__tr2qs("Incomplete LINKS result, no stats available"));
+ }
+ outputNoFmt(KVI_OUT_LINKS,"======================");
+
+ updateCaption();
+
+
+ while(!m_pLinkList->isEmpty())m_pLinkList->removeFirst();
+
+ m_pListView->setUpdatesEnabled(true);
+ m_pListView->repaint();
+}
+
+KviTalListViewItem * KviLinksWindow::insertLink(KviLink *l)
+{
+ __range_valid(l->hops > 0);
+ KviTalListViewItem * i = getItemByHost(l->parent.ptr(),0);
+ KviTalListViewItem * it = 0;
+ if(!i)return 0;
+ else {
+ KviStr hops(KviStr::Format,"%d",l->hops);
+ it = new KviTalListViewItem(i,QString(l->host.ptr()),QString(hops.ptr()),QString(l->description.ptr()));
+ i->setOpen(true);
+ }
+ return it;
+}
+
+KviTalListViewItem * KviLinksWindow::getItemByHost(const char *host,KviTalListViewItem * par)
+{
+ KviTalListViewItem * i = (par ? par->firstChild() : m_pListView->firstChild());
+ if(!i)return 0;
+ while(i){
+ KviStr tmp = i->text(0);
+ if(kvi_strEqualCI(tmp.ptr(),host))return i;
+ KviTalListViewItem * ch = getItemByHost(host,i);
+ if(ch)return ch;
+ i = i->nextSibling();
+ }
+ return 0;
+}
+
+void KviLinksWindow::showHostPopup(KviTalListViewItem *i,const QPoint &p,int)
+{
+ if(!i)return;
+ KviStr host=i->text(0);
+ if(host.isEmpty())return;
+ m_pHostPopup->clear();
+ KviStr tmp(KviStr::Format,"LINKS %s *",host.ptr());
+ m_pHostPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_LINKS)),tmp.ptr());
+ m_pHostPopup->insertSeparator();
+ tmp.sprintf("TIME %s",host.ptr());
+ m_pHostPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TIME)),tmp.ptr());
+ tmp.sprintf("ADMIN %s",host.ptr());
+ m_pHostPopup->insertItem(tmp.ptr());
+ tmp.sprintf("INFO %s",host.ptr());
+ m_pHostPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SERVERINFO)),tmp.ptr());
+ tmp.sprintf("MOTD %s",host.ptr());
+ m_pHostPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_MOTD)),tmp.ptr());
+ tmp.sprintf("VERSION %s",host.ptr());
+ m_pHostPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_KVIRC)),tmp.ptr());
+ tmp.sprintf("TRACE %s",host.ptr());
+ m_pHostPopup->insertItem(tmp.ptr());
+ tmp.sprintf("USERS %s",host.ptr());
+ m_pHostPopup->insertItem(tmp.ptr());
+ m_pHostPopup->insertSeparator();
+ tmp.sprintf("STATS c %s",host.ptr());
+ m_pHostPopup->insertItem(tmp.ptr());
+ tmp.sprintf("STATS d %s",host.ptr());
+ m_pHostPopup->insertItem(tmp.ptr());
+ tmp.sprintf("STATS h %s",host.ptr());
+ m_pHostPopup->insertItem(tmp.ptr());
+ tmp.sprintf("STATS i %s",host.ptr());
+ m_pHostPopup->insertItem(tmp.ptr());
+ tmp.sprintf("STATS k %s",host.ptr());
+ m_pHostPopup->insertItem(tmp.ptr());
+ tmp.sprintf("STATS l %s",host.ptr());
+ m_pHostPopup->insertItem(tmp.ptr());
+ tmp.sprintf("STATS m %s",host.ptr());
+ m_pHostPopup->insertItem(tmp.ptr());
+ tmp.sprintf("STATS o %s",host.ptr());
+ m_pHostPopup->insertItem(tmp.ptr());
+ tmp.sprintf("STATS t %s",host.ptr());
+ m_pHostPopup->insertItem(tmp.ptr());
+ tmp.sprintf("STATS u %s",host.ptr());
+ m_pHostPopup->insertItem(tmp.ptr());
+ tmp.sprintf("STATS y %s",host.ptr());
+ m_pHostPopup->insertItem(tmp.ptr());
+ tmp.sprintf("STATS z %s",host.ptr());
+ m_pHostPopup->insertItem(tmp.ptr());
+ m_pHostPopup->popup(p);
+}
+
+void KviLinksWindow::hostPopupClicked(int id)
+{
+ KviStr tmp = m_pHostPopup->text(id);
+ if(tmp.hasData())
+ {
+ if(!connection())output(KVI_OUT_SYSTEMERROR,__tr2qs("You're not connected to a server"));
+ m_pConsole->connection()->sendData(tmp.ptr());
+ }
+}
+
+void KviLinksWindow::reset()
+{
+ outputNoFmt(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Reset"));
+ while(!m_pLinkList->isEmpty())m_pLinkList->removeFirst();
+}
+
+void KviLinksWindow::processData(KviIrcMessage *msg)
+{
+ output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Processing link: %s"),msg->allParams());
+ KviLink * l = new KviLink;
+
+ l->host = msg->safeParam(1);
+ l->parent = msg->safeParam(2);
+
+ const char * tr = msg->safeTrailing();
+
+ if(isdigit(*tr))
+ {
+ const char *aux = tr;
+ while(*tr && (isdigit(*tr)))tr++;
+ KviStr tmp(aux,tr - aux);
+ l->hops = tmp.toInt();
+ } else {
+ outputNoFmt(KVI_OUT_SYSTEMERROR,__tr2qs("Broken message syntax, can't extract hops number, assuming 0"));
+ l->hops = 0;
+ }
+ while(*tr && (*tr == ' '))tr++;
+ l->description = tr;
+ uint idx=0;
+ for(KviLink *m=m_pLinkList->first();m;m=m_pLinkList->next())
+ {
+ if(m->hops >= l->hops)
+ {
+ m_pLinkList->insert(idx,l);
+ return;
+ }
+ idx++;
+ }
+ m_pLinkList->append(l);
+}
+
+//#warning "Load & save properties of this kind of window"
+
+//void KviLinksWindow::saveProperties()
+//{
+// KviWindowProperty p;
+// p.rect = externalGeometry();
+// p.isDocked = isAttacched();
+// QValueList<int> l(m_pSplitter->sizes());
+// if(l.count() >= 1)p.splitWidth1 = *(l.at(0));
+// if(l.count() >= 2)p.splitWidth2 = *(l.at(1));
+// p.timestamp = m_pView->timestamp();
+// p.imagesVisible = m_pView->imagesVisible();
+// p.isMaximized = isAttacched() && isMaximized();
+// p.topSplitWidth1 = 0;
+// p.topSplitWidth2 = 0;
+// p.topSplitWidth3 = 0;
+// g_pOptions->m_pWinPropertiesList->setProperty(caption(),&p);
+//}
+//
+//void KviLinksWindow::setProperties(KviWindowProperty *p)
+//{
+// QValueList<int> l;
+// l.append(p->splitWidth1);
+// l.append(p->splitWidth2);
+// m_pVertSplitter->setSizes(l);
+// m_pIrcView->setTimestamp(p->timestamp);
+// m_pIrcView->setShowImages(p->imagesVisible);
+//}
+
+void KviLinksWindow::applyOptions()
+{
+ m_pIrcView->applyOptions();
+ KviWindow::applyOptions();
+}
+
+#include "m_linkswindow.moc"
diff --git a/src/modules/links/linkswindow.h b/src/modules/links/linkswindow.h
new file mode 100644
index 00000000..b9cba76e
--- /dev/null
+++ b/src/modules/links/linkswindow.h
@@ -0,0 +1,89 @@
+#ifndef _LINKSWINDOW_H_
+#define _LINKSWINDOW_H_
+//
+// File : linkswindow.h
+// Creation date : Thu Dec 21 2000 12:42:55 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the linkss of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_window.h"
+#include "kvi_string.h"
+#include "kvi_ircsocket.h"
+#include "kvi_sparser.h"
+#include "kvi_console.h"
+#include "kvi_irccontext.h"
+
+#include "kvi_tal_listview.h"
+#include "kvi_tal_popupmenu.h"
+#include <qtoolbutton.h>
+
+class KviThemedLabel;
+
+
+typedef struct _KviLink
+{
+ KviStr host;
+ KviStr parent;
+ int hops;
+ KviStr description;
+} KviLink;
+
+
+class KviLinksWindow : public KviWindow, public KviExternalServerDataParser
+{
+ Q_OBJECT
+public:
+ KviLinksWindow(KviFrame * lpFrm,KviConsole * lpConsole);
+ ~KviLinksWindow();
+protected:
+ QSplitter * m_pVertSplitter;
+ QSplitter * m_pTopSplitter;
+ KviTalListView * m_pListView;
+ KviPointerList<KviLink> * m_pLinkList;
+ KviTalPopupMenu * m_pHostPopup;
+ QString m_szRootServer;
+ QToolButton * m_pRequestButton;
+ KviThemedLabel * m_pInfoLabel;
+public: // Methods
+ virtual void control(int msg);
+ virtual void processData(KviIrcMessage * msg);
+ virtual void die();
+protected:
+ virtual QPixmap * myIconPtr();
+ virtual void fillCaptionBuffers();
+ virtual void applyOptions();
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual void getBaseLogFileName(KviStr &buffer);
+// virtual void setProperties(KviWindowProperty *p);
+// virtual void saveProperties();
+protected slots:
+ void showHostPopup(KviTalListViewItem *i,const QPoint &p,int c);
+ void hostPopupClicked(int id);
+ void requestLinks();
+ void connectionStateChange();
+public:
+ virtual QSize sizeHint() const;
+private:
+ void reset();
+ void endOfLinks();
+ KviTalListViewItem * insertLink(KviLink * l);
+ KviTalListViewItem * getItemByHost(const char *host,KviTalListViewItem * par);
+};
+
+#endif //_KVI_LINKSWINDOW_H_
diff --git a/src/modules/list/Makefile.am b/src/modules/list/Makefile.am
new file mode 100644
index 00000000..52290210
--- /dev/null
+++ b/src/modules/list/Makefile.am
@@ -0,0 +1,20 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvilist.la
+
+libkvilist_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvilist_la_SOURCES = libkvilist.cpp listwindow.cpp
+libkvilist_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= listwindow.h
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+listwindow.cpp: listwindow.moc
diff --git a/src/modules/list/libkvilist.cpp b/src/modules/list/libkvilist.cpp
new file mode 100644
index 00000000..7920934d
--- /dev/null
+++ b/src/modules/list/libkvilist.cpp
@@ -0,0 +1,101 @@
+//
+// File : libkvilist.cpp
+// Creation date : Sun Oct 21 2001 13:29:12 CEST by Szymon Stefanek
+//
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "kvi_module.h"
+
+
+#include "listwindow.h"
+
+#include "kvi_frame.h"
+#include "kvi_window.h"
+#include "kvi_locale.h"
+
+#include <qsplitter.h>
+
+KviPointerList<KviListWindow> * g_pListWindowList = 0;
+
+
+/*
+ @doc: list.open
+ @type:
+ command
+ @title:
+ list.open
+ @short:
+ Opens a List window
+ @syntax:
+ list.open
+ @description:
+ Opens the channel list window attacched to the current irc context.[br]
+ The channel list window is opened automatically when a channel list
+ is requested from the server.
+*/
+
+static bool list_kvs_cmd_open(KviKvsModuleCommandCall * c)
+{
+
+ if(!c->window()->console())return c->context()->errorNoIrcContext();
+
+ if(!(c->window()->console()->ircContext()->listWindow()))
+ {
+ KviListWindow *w = new KviListWindow(c->window()->frame(),c->window()->console());
+ c->window()->frame()->addWindow(w);
+ } else {
+ c->warning(__tr2qs("List window alread open for this IRC context"));
+ }
+ return true;
+}
+
+
+
+static bool list_module_init(KviModule * m)
+{
+ g_pListWindowList = new KviPointerList<KviListWindow>;
+ g_pListWindowList->setAutoDelete(false);
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"open",list_kvs_cmd_open);
+ return true;
+}
+
+static bool list_module_cleanup(KviModule *m)
+{
+ while(g_pListWindowList->first())g_pListWindowList->first()->die();
+ delete g_pListWindowList;
+ g_pListWindowList = 0;
+ return true;
+}
+
+static bool list_module_can_unload(KviModule *m)
+{
+ return (g_pListWindowList->isEmpty());
+}
+
+KVIRC_MODULE(
+ "List", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2000-2001 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "List window extension",
+ list_module_init,
+ list_module_can_unload,
+ 0,
+ list_module_cleanup
+)
diff --git a/src/modules/list/listwindow.cpp b/src/modules/list/listwindow.cpp
new file mode 100644
index 00000000..2e1c5401
--- /dev/null
+++ b/src/modules/list/listwindow.cpp
@@ -0,0 +1,535 @@
+//=============================================================================
+//
+// File : listwindow.cpp
+// Creation date : Thu Oct 7 2001 13:27:55 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the lists of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "listwindow.h"
+
+#include "kvi_debug.h"
+#include "kvi_iconmanager.h"
+#include "kvi_ircview.h"
+#include "kvi_out.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_out.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_themedlabel.h"
+#include "kvi_options.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnection.h"
+#include "kvi_qstring.h"
+#include "kvi_qcstring.h"
+#include "kvi_topicw.h"
+#include "kvi_config.h"
+#include "kvi_filedialog.h"
+
+#include "kvi_styled_controls.h"
+#include <qtimer.h>
+#include <qpainter.h>
+#include <qfontmetrics.h>
+#include <qsplitter.h>
+#include <qtooltip.h>
+#include <qdatetime.h>
+#include "kvi_tal_hbox.h"
+#include "kvi_msgbox.h"
+
+extern KviPointerList<KviListWindow> * g_pListWindowList;
+
+// kvi_ircview.cpp
+//extern KVIRC_API const char * getColorBytes(const char *data_ptr,unsigned char *byte_1,unsigned char *byte_2);
+
+
+KviChannelListViewItemData::KviChannelListViewItemData(const QString &szChan,const QString &szUsers,const QString &szTopic)
+{
+ m_szChan = szChan;
+ m_szUsers = szUsers;
+ m_szTopic = szTopic;
+ m_szUsersKey = szUsers;
+ //setText(0,szChan.upper());
+ while(m_szUsersKey.length() < 6)m_szUsersKey.prepend("0");
+}
+
+KviChannelListViewItemData::~KviChannelListViewItemData()
+{
+}
+
+
+
+KviChannelListViewItem::KviChannelListViewItem(KviTalListView * v,KviChannelListViewItemData * pData)
+: KviTalListViewItem(v)
+{
+ m_pData = pData;
+}
+
+
+KviChannelListViewItem::~KviChannelListViewItem()
+{
+ delete m_pData;
+}
+#ifdef COMPILE_USE_QT4
+int KviChannelListViewItem::width ( const QFontMetrics & fm, const KviTalListView * lv, int column ) const
+#else
+int KviChannelListViewItem::width ( const QFontMetrics & fm, const QListView * lv, int column ) const
+#endif
+{
+ debug("width request");
+ QString szText;
+
+ switch(column)
+ {
+ case 0: szText = m_pData->m_szChan; break;
+ case 1: szText = m_pData->m_szUsers; break;
+ default: szText = m_pData->m_szTopic; break;
+ }
+ if(column==2) return fm.width(KviMircCntrl::stripControlBytes(szText));
+ else return fm.width(szText);
+}
+
+#define KVI_LABEL_DEF_BACK 100
+#define KVI_LABEL_DEF_FORE 101
+
+void KviChannelListViewItem::paintCell(QPainter * p,const QColorGroup &cg,int column,int width,int align)
+{
+ QString szText;
+
+ switch(column)
+ {
+ case 0: szText = m_pData->m_szChan; break;
+ case 1: szText = m_pData->m_szUsers; break;
+ default: szText = m_pData->m_szTopic; break;
+ }
+
+ KviTalListView* lv = (KviTalListView *)listView();
+ int marg = lv->itemMargin();
+ int r = marg;
+
+#ifdef COMPILE_USE_QT4
+
+ p->fillRect( 0, 0, width, height(), cg.brush(lv->viewport()->backgroundRole()) );
+#else
+ const QColorGroup::ColorRole crole = QPalette::backgroundRoleFromMode(lv->viewport()->backgroundMode());
+
+ p->fillRect( 0, 0, width, height(), cg.brush( crole ) );
+#endif
+
+ if ( isSelected() &&
+ (column == 0 || lv->allColumnsShowFocus()) ) {
+ p->fillRect( r - marg, 0, width - r + marg, height(),
+ cg.brush( QColorGroup::Highlight ) );
+
+ if ( isEnabled() || !lv )
+ p->setPen( cg.highlightedText() );
+ else if ( !isEnabled() && lv)
+ p->setPen( lv->palette().disabled().highlightedText() );
+ } else {
+ if ( isEnabled() || !lv )
+ p->setPen( cg.text() );
+ else if ( !isEnabled() && lv)
+ p->setPen( lv->palette().disabled().text() );
+ }
+
+ KviTopicWidget::paintColoredText(p,szText,cg,height(),width);
+}
+
+QString KviChannelListViewItem::key(int col,bool) const
+{
+ switch(col)
+ {
+ case 0:
+ return m_pData->m_szChan;
+ break;
+ case 1:
+ return m_pData->m_szUsersKey;
+ break;
+ case 2:
+ return m_pData->m_szTopic;
+ break;
+ }
+ QString ret;
+ return ret;
+}
+
+
+
+KviListWindow::KviListWindow(KviFrame * lpFrm,KviConsole * lpConsole)
+: KviWindow(KVI_WINDOW_TYPE_LIST,lpFrm,"list",lpConsole) , KviExternalServerDataParser()
+{
+ g_pListWindowList->append(this);
+
+ m_pFlushTimer = 0;
+
+ m_pItemList = new KviPointerList<KviChannelListViewItemData>;
+ m_pItemList->setAutoDelete(false);
+
+ m_pSplitter = new QSplitter(Qt::Horizontal,this,"splitter");
+ m_pTopSplitter = new QSplitter(Qt::Horizontal,this,"top_splitter");
+ m_pVertSplitter = new QSplitter(Qt::Vertical,m_pSplitter,"vsplitter");
+
+ KviTalHBox * box = new KviTalHBox(m_pTopSplitter);
+ m_pOpenButton = new KviStyledToolButton(box);
+ m_pOpenButton->setPixmap(*(g_pIconManager->getBigIcon(KVI_BIGICON_OPEN)));
+ connect(m_pOpenButton,SIGNAL(clicked()),this,SLOT(importList()));
+
+ m_pSaveButton = new KviStyledToolButton(box);
+ m_pSaveButton->setPixmap(*(g_pIconManager->getBigIcon(KVI_BIGICON_SAVE)));
+ connect(m_pSaveButton,SIGNAL(clicked()),this,SLOT(exportList()));
+
+ m_pRequestButton = new KviStyledToolButton(box,"request_button");
+ m_pRequestButton->setUsesBigPixmap(false);
+ m_pRequestButton->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_LIST)));
+ connect(m_pRequestButton,SIGNAL(clicked()),this,SLOT(requestList()));
+ QToolTip::add(m_pRequestButton,__tr2qs("Request List"));
+
+ m_pStopListDownloadButton = new KviStyledToolButton(box,"stoplistdownload_button");
+ m_pStopListDownloadButton->setUsesBigPixmap(false);
+ m_pStopListDownloadButton->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_NICKNAMEPROBLEM)));
+ connect(m_pStopListDownloadButton,SIGNAL(clicked()),this,SLOT(stoplistdownload()));
+ QToolTip::add(m_pStopListDownloadButton,__tr2qs("Stop list download"));
+
+ m_pParamsEdit = new QLineEdit(box);
+ box->setStretchFactor(m_pParamsEdit,1);
+ QToolTip::add(m_pParamsEdit,__tr2qs("<center><b>/LIST command parameters:</b><br>Many servers accept special parameters that " \
+ "allow you to filter the returned entries.<br>" \
+ "Commonly, masked channel names (*kvirc*) are accepted as parameters, as well as strings " \
+ "like <b>c&lt;n</b> or <b>c&gt;n</b> where <b>n</b> is the minimum or maximum of users on the channel.</center>"));
+
+ m_pInfoLabel = new KviThemedLabel(m_pTopSplitter,"info_label");
+
+ m_pListView = new KviTalListView(m_pVertSplitter);
+ m_pListView->addColumn(__tr2qs("Channel"));
+ m_pListView->addColumn(__tr2qs("Users"));
+ m_pListView->addColumn(__tr2qs("Topic"));
+ m_pListView->setAllColumnsShowFocus(TRUE);
+ m_pListView->setColumnWidthMode(2,KviTalListView::Maximum);
+ m_pListView->setColumnWidthMode(3,KviTalListView::Maximum);
+ m_pListView->setSorting(100);
+
+ connect(m_pListView,SIGNAL(doubleClicked(KviTalListViewItem *)),this,SLOT(itemDoubleClicked(KviTalListViewItem *)));
+
+ m_pIrcView = new KviIrcView(m_pVertSplitter,lpFrm,this);
+
+ m_pConsole->ircContext()->setListWindowPointer(this);
+
+ connect(m_pConsole->context(),SIGNAL(stateChanged()),
+ this,SLOT(connectionStateChange()));
+
+ connectionStateChange();
+
+}
+
+KviListWindow::~KviListWindow()
+{
+ g_pListWindowList->removeRef(this);
+ m_pConsole->ircContext()->setListWindowPointer(0);
+ if(m_pFlushTimer)delete m_pFlushTimer;
+ m_pItemList->setAutoDelete(true);
+ delete m_pItemList;
+}
+
+void KviListWindow::getBaseLogFileName(KviStr &buffer)
+{
+ buffer.sprintf("LIST_%d",console()->ircContextId());
+}
+
+
+void KviListWindow::requestList()
+{
+ if(m_pConsole->isConnected())
+ {
+ KviStr parms = m_pParamsEdit->text();
+ if(parms.isEmpty())m_pConsole->connection()->sendFmtData("list");
+ else m_pConsole->connection()->sendFmtData("list %s",m_pConsole->connection()->encodeText(parms.ptr()).data());
+ outputNoFmt(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Sent list request, waiting for reply..."));
+ m_pRequestButton->setEnabled(false);
+ } else {
+ outputNoFmt(KVI_OUT_SYSTEMERROR,__tr2qs("Cannot request list: No active connection"));
+ }
+}
+
+void KviListWindow::stoplistdownload()
+{
+ if(m_pConsole->isConnected())
+ {
+ m_pConsole->connection()->sendFmtData("list stoplistdownloadnow");
+ outputNoFmt(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Stopping the list download...")); //G&N mar 2005
+ } else {
+ outputNoFmt(KVI_OUT_SYSTEMERROR,__tr2qs("Cannot stop list download, no active connection."));
+ }
+}
+
+void KviListWindow::connectionStateChange()
+{
+ KviIrcContext::State st = m_pConsole->context()->state();
+ m_pRequestButton->setEnabled(st == KviIrcContext::Connected);
+ if(st == KviIrcContext::Connected)
+ {
+ QString tmp;
+ KviQString::sprintf(tmp,
+ __tr2qs("Connected to %s (%s)"),
+ m_pConsole->connection()->currentServerName().utf8().data(),
+ m_pConsole->currentNetworkName().utf8().data());
+ m_pInfoLabel->setText(tmp);
+ } else {
+ m_pInfoLabel->setText(__tr2qs("List cannot be requested: Not connected to a server"));
+ }
+}
+
+QPixmap * KviListWindow::myIconPtr()
+{
+ return g_pIconManager->getSmallIcon(KVI_SMALLICON_LIST);
+}
+
+void KviListWindow::resizeEvent(QResizeEvent *e)
+{
+ int hght = m_pTopSplitter->sizeHint().height();
+ m_pTopSplitter->setGeometry(0,0,width(),hght);
+ m_pSplitter->setGeometry(0,hght,width(),height() - hght);
+}
+
+QSize KviListWindow::sizeHint() const
+{
+ return m_pSplitter->sizeHint();
+}
+
+void KviListWindow::fillCaptionBuffers()
+{
+ KviQString::sprintf(m_szPlainTextCaption,__tr2qs("Channel List [IRC Context %u]"),m_pConsole->ircContextId());
+
+ KviQString::sprintf(m_szHtmlActiveCaption,
+ __tr2qs("<nobr><font color=\"%s\"><b>Channel List</b></font> " \
+ "<font color=\"%s\">[IRC Context %u]</font></nobr>"),
+ KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name().ascii(),
+ KVI_OPTION_COLOR(KviOption_colorCaptionTextActive2).name().ascii(),
+ m_pConsole->ircContextId());
+
+ KviQString::sprintf(m_szHtmlInactiveCaption,
+ __tr2qs("<nobr><font color=\"%s\"><b>Channel list</b></font> " \
+ "<font color=\"%s\">[IRC Context %u]</font></nobr>"),
+ KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name().ascii(),
+ KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive2).name().ascii(),
+ m_pConsole->ircContextId());
+}
+
+void KviListWindow::die()
+{
+ close();
+}
+
+void KviListWindow::exportList()
+{
+ if(!m_pListView->firstChild())
+ {
+ KviMessageBox::warning(__tr2qs("You cannot export an empty list"));
+ return;
+ }
+
+ QString szFile;
+ if(connection())
+ {
+ QString szDate = QDateTime::currentDateTime().toString("d MMM yyyy hh-mm");
+ KviQString::sprintf(szFile,__tr2qs("Channel list for %Q - %Q"),
+ &(connection()->networkName()),&(szDate));
+ } else {
+ szFile = __tr2qs("Channel list");
+ }
+ if(KviFileDialog::askForSaveFileName(szFile,__tr2qs("Choose filename"),szFile,
+ __tr2qs("Configuration files (*.kvc)"),false,
+ false,true,this))
+ {
+ if(QFileInfo(szFile).extension()!="kvc")
+ szFile.append(".kvc");
+ KviConfig cfg(szFile,KviConfig::Write);
+ cfg.clear();
+ KviTalListViewItemIterator it(m_pListView);
+
+ while(it.current())
+ {
+ KviChannelListViewItemData* pData= ((KviChannelListViewItem*) ( it.current() ))->m_pData;
+ cfg.setGroup(pData->m_szChan);
+ // Write properties
+ cfg.writeEntry("topic",pData->m_szTopic);
+ cfg.writeEntry("users",pData->m_szUsers);
+// cfg.writeEntry("usersKey",pData->m_szUsersKey);
+ ++it;
+ }
+ }
+}
+
+void KviListWindow::importList()
+{
+
+ QString szFile;
+ if(KviFileDialog::askForOpenFileName(szFile,__tr2qs("Choose filename"),QString::null,
+ __tr2qs("Configuration files (*.kvc)"),false,
+ false,this))
+ {
+ if(m_pConsole->isConnected())
+ {
+ m_pConsole->connection()->sendFmtData("list stoplistdownloadnow");
+ outputNoFmt(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Stopping the list download...")); //G&N mar 2005
+ }
+
+ m_pItemList->clear();
+
+ KviConfig cfg(szFile,KviConfig::Read);
+ KviConfigIterator it(*cfg.dict());
+ while(it.current())
+ {
+ cfg.setGroup(it.currentKey());
+ m_pItemList->append(
+ new KviChannelListViewItemData(
+ it.currentKey(),
+ cfg.readQStringEntry("users","0"),
+ cfg.readQStringEntry("topic","")
+ )
+ );
+ ++it;
+ }
+ flush();
+ }
+}
+
+void KviListWindow::control(int message)
+{
+ switch(message)
+ {
+ case EXTERNAL_SERVER_DATA_PARSER_CONTROL_RESET: reset(); break;
+ case EXTERNAL_SERVER_DATA_PARSER_CONTROL_STARTOFDATA: startOfList(); break;
+ case EXTERNAL_SERVER_DATA_PARSER_CONTROL_ENDOFDATA: endOfList(); break;
+ }
+}
+
+void KviListWindow::reset()
+{
+ outputNoFmt(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Reset"));
+}
+
+void KviListWindow::endOfList()
+{
+ if(m_pFlushTimer)
+ {
+ delete m_pFlushTimer;
+ m_pFlushTimer = 0;
+ }
+ m_pRequestButton->setEnabled(true);
+ outputNoFmt(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Channels list download finished"));
+ flush(); // give it the last kick
+}
+
+void KviListWindow::startOfList()
+{
+ m_pItemList->setAutoDelete(true);
+ m_pItemList->clear();
+ m_pItemList->setAutoDelete(false);
+
+ m_pListView->clear();
+
+ m_pRequestButton->setEnabled(false);
+}
+
+void KviListWindow::processData(KviIrcMessage *msg)
+{
+ if(!m_pFlushTimer)
+ {
+ m_pFlushTimer = new QTimer(this);
+ connect(m_pFlushTimer,SIGNAL(timeout()),this,SLOT(flush()));
+ m_pFlushTimer->start(1000);
+ m_pRequestButton->setEnabled(false);
+ }
+
+ QString sz2 = msg->connection()->decodeText(msg->safeParam(2));
+
+ m_pItemList->append(
+ new KviChannelListViewItemData(
+ msg->connection()->decodeText(msg->safeParam(1)),
+ msg->connection()->decodeText(msg->safeParam(2)),
+ msg->connection()->decodeText(msg->safeTrailing()))
+ );
+
+ if(_OUTPUT_VERBOSE)
+ {
+ QString zzz = msg->connection()->decodeText(msg->allParams());
+ output(KVI_OUT_LIST,__tr2qs("Processing list: %Q"),&zzz);
+ }
+}
+
+void KviListWindow::flush()
+{
+ m_pListView->setUpdatesEnabled(true); /* for v_scroolbar */
+ while(KviChannelListViewItemData * d = m_pItemList->first())
+ {
+ (void)new KviChannelListViewItem(m_pListView,d);
+ m_pItemList->removeFirst();
+ }
+ m_pListView->setUpdatesEnabled(true);
+ m_pListView->viewport()->update();
+}
+
+void KviListWindow::itemDoubleClicked(KviTalListViewItem *it)
+{
+ QString sz = ((KviChannelListViewItem *)it)->channel();
+ if(sz.isEmpty())return;
+ if(!connection())return;
+ KviQCString dat = connection()->encodeText(sz);
+ if(!dat.data())return;
+ m_pConsole->connection()->sendFmtData("join %s",dat.data());
+}
+
+
+//
+//#warning "Load & save properties of this kind of window"
+
+//void KviListWindow::saveProperties()
+//{
+// KviWindowProperty p;
+// p.rect = externalGeometry();
+// p.isDocked = isAttacched();
+// QValueList<int> l(m_pSplitter->sizes());
+// if(l.count() >= 1)p.splitWidth1 = *(l.at(0));
+// if(l.count() >= 2)p.splitWidth2 = *(l.at(1));
+// p.timestamp = m_pView->timestamp();
+// p.imagesVisible = m_pView->imagesVisible();
+// p.isMaximized = isAttacched() && isMaximized();
+// p.topSplitWidth1 = 0;
+// p.topSplitWidth2 = 0;
+// p.topSplitWidth3 = 0;
+// g_pOptions->m_pWinPropertiesList->setProperty(caption(),&p);
+//}
+//
+//void KviListWindow::setProperties(KviWindowProperty *p)
+//{
+// QValueList<int> l;
+// l.append(p->splitWidth1);
+// l.append(p->splitWidth2);
+// m_pVertSplitter->setSizes(l);
+// m_pIrcView->setTimestamp(p->timestamp);
+// m_pIrcView->setShowImages(p->imagesVisible);
+//}
+
+void KviListWindow::applyOptions()
+{
+ m_pIrcView->applyOptions();
+ KviWindow::applyOptions();
+}
+
+#include "listwindow.moc"
diff --git a/src/modules/list/listwindow.h b/src/modules/list/listwindow.h
new file mode 100644
index 00000000..8e7d510e
--- /dev/null
+++ b/src/modules/list/listwindow.h
@@ -0,0 +1,122 @@
+#ifndef _LISTWINDOW_H_
+#define _LISTWINDOW_H_
+//=============================================================================
+//
+// File : listwindow.h
+// Creation date : Thu Oct 7 2001 13:27:55 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the lists of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_window.h"
+#include "kvi_string.h"
+#include "kvi_ircsocket.h"
+#include "kvi_pointerlist.h"
+#include "kvi_sparser.h"
+#include "kvi_console.h"
+#include "kvi_irccontext.h"
+
+#include "kvi_tal_listview.h"
+#include "kvi_tal_popupmenu.h"
+#include <qtoolbutton.h>
+#include <qlineedit.h>
+
+class KviThemedLabel;
+
+class KviChannelListViewItemData
+{
+ friend class KviChannelListViewItem;
+ friend class KviListWindow;
+public:
+ KviChannelListViewItemData(const QString &szChan,const QString &szUsers,const QString &szTopic);
+ ~KviChannelListViewItemData();
+protected:
+ QString m_szChan;
+ QString m_szUsers;
+ QString m_szTopic;
+ QString m_szUsersKey;
+};
+
+class KviChannelListViewItem : public KviTalListViewItem
+{
+ friend class KviListWindow;
+public:
+ KviChannelListViewItem(KviTalListView * v,KviChannelListViewItemData * pData);
+ ~KviChannelListViewItem();
+protected:
+ KviChannelListViewItemData * m_pData;
+public:
+ const QString & channel(){ return m_pData->m_szChan; };
+#ifdef COMPILE_USE_QT4
+ int width ( const QFontMetrics & fm, const KviTalListView * lv, int column ) const;
+#else
+ int width ( const QFontMetrics & fm, const QListView * lv, int column ) const;
+#endif
+protected:
+ virtual void paintCell(QPainter * p,const QColorGroup &cg,int col,int wdth,int align);
+ virtual QString key(int col,bool) const;
+};
+
+
+
+class KviListWindow : public KviWindow, public KviExternalServerDataParser
+{
+ Q_OBJECT
+public:
+ KviListWindow(KviFrame * lpFrm,KviConsole * lpConsole);
+ ~KviListWindow();
+protected:
+ QSplitter * m_pVertSplitter;
+ QSplitter * m_pTopSplitter;
+ KviTalListView * m_pListView;
+ QLineEdit * m_pParamsEdit;
+ QToolButton * m_pRequestButton;
+ QToolButton * m_pStopListDownloadButton;
+ QToolButton * m_pOpenButton;
+ QToolButton * m_pSaveButton;
+ KviThemedLabel * m_pInfoLabel;
+ QTimer * m_pFlushTimer;
+ KviPointerList<KviChannelListViewItemData> * m_pItemList;
+public: // Methods
+ virtual void control(int msg);
+ virtual void processData(KviIrcMessage * msg);
+ virtual void die();
+protected:
+ virtual QPixmap * myIconPtr();
+ virtual void fillCaptionBuffers();
+ virtual void applyOptions();
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual void getBaseLogFileName(KviStr &buffer);
+protected slots:
+ void flush();
+ void itemDoubleClicked(KviTalListViewItem *it);
+ void requestList();
+ void stoplistdownload();
+ void connectionStateChange();
+ void exportList();
+ void importList();
+public:
+ virtual QSize sizeHint() const;
+private:
+ void reset();
+ void endOfList();
+ void startOfList();
+};
+
+#endif //_KVI_LISTWINDOW_H_
diff --git a/src/modules/log/Makefile.am b/src/modules/log/Makefile.am
new file mode 100644
index 00000000..e2bfe1e9
--- /dev/null
+++ b/src/modules/log/Makefile.am
@@ -0,0 +1,18 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvilog.la
+
+libkvilog_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvilog_la_SOURCES = libkvilog.cpp
+libkvilog_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+# noinst_HEADERS=
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/log/libkvilog.cpp b/src/modules/log/libkvilog.cpp
new file mode 100644
index 00000000..5e29e30d
--- /dev/null
+++ b/src/modules/log/libkvilog.cpp
@@ -0,0 +1,309 @@
+//==============================================================================
+//
+// File : libkvilog.cpp
+// Creation date : Sat Jan 06 2001 13:28:02 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//==============================================================================
+
+#include "kvi_module.h"
+#include "kvi_window.h"
+#include "kvi_app.h"
+#include "kvi_locale.h"
+#include "kvi_ircview.h"
+
+
+//#warning "log.stats"
+//#warning "log.compress (gzip -r the log directory)"
+
+/*
+ @doc: log
+ @title:
+ The log interface module
+ @short:
+ Interface to the KVirc log subsystem
+ @type:
+ module
+ @keyterms:
+ logging
+ @body:
+ The log module is an interface to the KVIrc logging subsystem.[br]
+ It provides commands and functions that allow the management of
+ logging in the KVIrc windows:[br]
+ [cmd]log.start[/cmd], [cmd]log.stop[/cmd], [cmd]log.flush[/cmd],
+ [fnc]$log.file[/fnc]().[br]
+ NOTE:[br]
+ If you want to AUTOENABLE logging in certain types of windows
+ you have to use the [cmd]option[/cmd] command.[br]
+ For example, [b]option boolAutoLogQueries 1[/b] enables logging in all the newly created
+ query windows.
+*/
+
+/*
+ @doc: log.start
+ @type:
+ command
+ @title:
+ log.start
+ @keyterms:
+ logging
+ @short:
+ Starts logging in a specified window
+ @syntax:
+ log.start [-w = <window_id>] [-p] [filename]
+ @description:
+ Starts logging in the current window or in the window specified by the -w switch.[br]
+ If a logging session is already running in the specified window, it is stopped first.[br]
+ If [filename] is specified, this filename is used as log file, otherwise a default
+ filename is used.[br]
+ If the -p switch is used, all the already existing contents of the window are
+ stored to the log file before starting the log action.[br]
+ Please note that some windows do not have logging capabilities...this command
+ will print a warning in that case.[br]
+ @seealso:
+ [fnc]$window[/fnc],
+ [cmd]log.stop[/cmd],
+ [fnc]$log.file[/fnc],
+ [doc:window_naming_conventions]window naming conventions documentation[/doc]
+*/
+
+
+static bool log_kvs_cmd_start(KviKvsModuleCommandCall * c)
+{
+ QString szFile;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("filename",KVS_PT_STRING,KVS_PF_OPTIONAL,szFile)
+ KVSM_PARAMETERS_END(c)
+
+ KviWindow * pWnd = c->window();
+ if(c->hasSwitch('w',"window"))
+ {
+ QString szWindow;
+ if(c->switches()->getAsStringIfExisting('w',"window",szWindow))
+ {
+ pWnd = g_pApp->findWindow(szWindow);
+ if(!pWnd)
+ {
+ c->warning(__tr2qs("Window %Q not found"),&szWindow);
+ return true;
+ }
+
+ } else {
+ c->warning(__tr2qs("Missing window id after the 'w' switch"));
+ return true;
+ }
+ }
+
+ if(pWnd->view())
+ {
+
+ if(szFile.isEmpty())
+ {
+ pWnd->getDefaultLogFileName(szFile);
+ }
+ if(!pWnd->view()->startLogging(szFile,c->hasSwitch('p',"log-buffer")))
+ c->warning(__tr2qs("Can't log to file %Q"),&szFile);
+ } else {
+ c->warning(__tr2qs("This window has no logging capabilities"));
+ return true;
+ }
+ return true;
+}
+
+/*
+ @doc: log.stop
+ @type:
+ command
+ @title:
+ log.stop
+ @keyterms:
+ logging
+ @short:
+ Stops logging in a specified window
+ @syntax:
+ log.stop [-w = <window_id>]
+ @description:
+ Stops logging in the current window or in the window specified by the -w switch.[br]
+ If logging is not enabled in the specified window, this command does nothing.[br]
+ @seealso:
+ [fnc]$window[/fnc],
+ [cmd]log.start[/cmd],
+ [doc:window_naming_conventions]window naming conventions documentation[/doc]
+*/
+
+static bool log_kvs_cmd_stop(KviKvsModuleCommandCall * c)
+{
+
+ KviWindow * pWnd = c->window();
+ if(c->hasSwitch('w',"window"))
+ {
+ QString szWindow;
+ if(c->switches()->getAsStringIfExisting('w',"window",szWindow))
+ {
+ pWnd = g_pApp->findWindow(szWindow);
+ if(!pWnd)
+ {
+ c->warning(__tr2qs("Window %Q not found"),&szWindow);
+ return true;
+ }
+
+ } else {
+ c->warning(__tr2qs("Missing window id after the 'w' switch"));
+ return true;
+ }
+ }
+
+ if(pWnd->view())
+ pWnd->view()->stopLogging();
+ return true;
+}
+
+/*
+ @doc: log.flush
+ @type:
+ command
+ @title:
+ log.flush
+ @keyterms:
+ logging
+ @short:
+ Flushes the log file for a specified window
+ @syntax:
+ log.flush [-w = <window_id>]
+ @description:
+ Flushes the log file the current window or in the window specified by the -w switch.[br]
+ If logging is not enabled in the specified window, this command does nothing.[br]
+ If this command is never used, the log file is flushed at regulear file-size intervals,
+ depending on the underlying IO subsystem. This is usually 4KB.[br]
+ The "block flushing" is used to achieve a fast I/O on files, but may cause
+ the last data block to be lost in case of a program crash.[br]
+ @seealso:
+ [fnc]$window[/fnc],
+ [cmd]log.start[/cmd],
+ [cmd]log.stop[/cmd],
+ [doc:window_naming_conventions]window naming conventions documentation[/doc]
+*/
+
+static bool log_kvs_cmd_flush(KviKvsModuleCommandCall * c)
+{
+
+ KviWindow * pWnd = c->window();
+ if(c->hasSwitch('w',"window"))
+ {
+ QString szWindow;
+ if(c->switches()->getAsStringIfExisting('w',"window",szWindow))
+ {
+ pWnd = g_pApp->findWindow(szWindow);
+ if(!pWnd)
+ {
+ c->warning(__tr2qs("Window %Q not found"),&szWindow);
+ return true;
+ }
+
+ } else {
+ c->warning(__tr2qs("Missing window id after the 'w' switch"));
+ return true;
+ }
+ }
+
+ if(pWnd->view())
+ pWnd->view()->flushLog();
+ return true;
+}
+
+/*
+ @doc: log.file
+ @type:
+ function
+ @title:
+ $log.file
+ @short:
+ Returns the current log filename
+ @syntax:
+ $log.file
+ $log.file(<window id>)
+ @description:
+ The form with the <window id> parameter returns the log file name
+ of the window that has the specified id. If logging is not enabled
+ in the specified window, this function returns an empty string.[br]
+ The form without parameters returns the log file name of the current window,
+ thus it is equivalent to calling $log.file([fnc]$window[/fnc])
+ @examples:
+ [example]
+ [cmd]log[/cmd] mylogfilename.log
+ [cmd]echo[/cmd] $log
+ [cmd]echo[/cmd] $log([fnc]$console[/fnc])
+ [/example]
+ @seealso:
+ [fnc]$window[/fnc],
+ [cmd]log.start[/cmd],
+ [cmd]log.stop[/cmd],
+ [doc:window_naming_conventions]window naming conventions documentation[/doc]
+*/
+
+static bool log_kvs_fnc_file(KviKvsModuleFunctionCall * c)
+{
+ QString szWindow;
+ QString buffer;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window id",KVS_PT_STRING,KVS_PF_OPTIONAL,szWindow)
+ KVSM_PARAMETERS_END(c)
+
+ KviWindow * wnd = c->window();
+
+ if(!szWindow.isEmpty())
+ {
+ wnd = g_pApp->findWindow(szWindow);
+ if(!wnd)
+ {
+ c->warning(__tr2qs("Window with id '%Q' not found, returning empty string"),&szWindow);
+ return true;
+ }
+ }
+
+ if(wnd->view())wnd->view()->getLogFileName(buffer);
+ c->returnValue()->setString(buffer);
+ return true;
+}
+
+static bool log_module_init(KviModule * m)
+{
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"start",log_kvs_cmd_start);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"stop",log_kvs_cmd_stop);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"flush",log_kvs_cmd_flush);
+
+ KVSM_REGISTER_FUNCTION(m,"file",log_kvs_fnc_file);
+ return true;
+}
+
+static bool log_module_cleanup(KviModule *m)
+{
+ return true;
+}
+
+KVIRC_MODULE(
+ "Log", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "User interface to the logging system for KVIrc",
+ log_module_init,
+ 0,
+ 0,
+ log_module_cleanup
+)
diff --git a/src/modules/logview/Makefile.am b/src/modules/logview/Makefile.am
new file mode 100644
index 00000000..03a1b07e
--- /dev/null
+++ b/src/modules/logview/Makefile.am
@@ -0,0 +1,23 @@
+###############################################################################
+# KVirc IRC client Makefile - 3.23.2002 Juanjo �lvarez <[email protected]>
+###############################################################################
+
+SUBDIRS = caps
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvilogview.la
+
+libkvilogview_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvilogview_la_SOURCES = libkvilogview.cpp logviewwidget.cpp logviewmdiwindow.cpp
+libkvilogview_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= logviewwidget.h logviewmdiwindow.h
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+logviewwidget.cpp: logviewwidget.moc
+logviewmdiwindow.cpp: logviewmdiwindow.moc
diff --git a/src/modules/logview/caps/Makefile.am b/src/modules/logview/caps/Makefile.am
new file mode 100644
index 00000000..13c80350
--- /dev/null
+++ b/src/modules/logview/caps/Makefile.am
@@ -0,0 +1,9 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+tmpdir = $(pluglibdir)/caps/tool/
+
+tmp_DATA= logview
+
+EXTRA_DIST = $(tmp_DATA)
diff --git a/src/modules/logview/caps/logview b/src/modules/logview/caps/logview
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src/modules/logview/caps/logview
diff --git a/src/modules/logview/libkvilogview.cpp b/src/modules/logview/libkvilogview.cpp
new file mode 100644
index 00000000..2aa56a66
--- /dev/null
+++ b/src/modules/logview/libkvilogview.cpp
@@ -0,0 +1,170 @@
+//
+// File : libkvilogview.cpp
+// Creation date : Sun Feb 10 2000 23:25:10 CEST by Juanjo �varez
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "logviewwidget.h"
+#include "logviewmdiwindow.h"
+
+#include "kvi_config.h"
+
+#include "kvi_module.h"
+
+#include "kvi_frame.h"
+#include "kvi_iconmanager.h"
+#include "kvi_locale.h"
+#include "kvi_app.h"
+
+static QRect g_rectLogViewGeometry;
+KviLogViewMDIWindow * g_pLogViewWindow = 0;
+
+#define LOGVIEW_MODULE_EXTENSION_NAME "Log viewer extension"
+
+/*
+ @doc: logview.open
+ @type:
+ command
+ @title:
+ logview.open
+ @short:
+ Opens the log viewer window
+ @syntax:
+ logview.open [-m] [-n]
+ @switches:
+ !sw: -m
+ Causes the window to be created as minimized
+ !sw: -n
+ Causes the window to be not raised if already open
+ @description:
+ Opens a window that allows visual browsing of the logs
+ stored on disk.
+*/
+
+// ============================================
+// Module stuff
+// ============================================
+
+static bool logview_kvs_cmd_open(KviKvsModuleCommandCall * c)
+{
+ KviModuleExtensionDescriptor * d = c->module()->findExtensionDescriptor("tool",LOGVIEW_MODULE_EXTENSION_NAME);
+ if(d)
+ {
+ KviPointerHashTable<QString,QVariant> dict(17,true);
+ dict.setAutoDelete(true);
+ QString dummy;
+ dict.replace("bCreateMinimized",new QVariant(c->hasSwitch('m',dummy)));
+ dict.replace("bNoRaise",new QVariant(c->hasSwitch('n',dummy)));
+
+ d->allocate(c->window(),&dict,0);
+ } else {
+ c->warning("Ops.. internal error");
+ }
+ return true;
+}
+
+static KviModuleExtension * logview_extension_alloc(KviModuleExtensionAllocStruct * s)
+{
+ bool bCreateMinimized = false;
+ bool bNoRaise = false;
+
+ if(!g_pLogViewWindow)
+ {
+ if(s->pParams)
+ {
+ if(QVariant * v = s->pParams->find("bCreateMinimized"))
+ {
+ if(v->isValid())
+ {
+ if(v->type() == QVariant::Bool)
+ {
+ bCreateMinimized = v->toBool();
+ }
+ }
+ }
+ }
+
+ g_pLogViewWindow = new KviLogViewMDIWindow(s->pDescriptor,g_pFrame);
+ g_pFrame->addWindow(g_pLogViewWindow,!bCreateMinimized);
+ if(bCreateMinimized)g_pLogViewWindow->minimize();
+ return g_pLogViewWindow;
+ }
+
+ if(s->pParams)
+ {
+ if(QVariant * v = s->pParams->find("bNoRaise"))
+ {
+ if(v)
+ {
+ if(v->isValid() && v->type() == QVariant::Bool)
+ bNoRaise = v->toBool();
+ }
+ }
+ }
+
+ if(!bNoRaise)g_pLogViewWindow->delayedAutoRaise();
+ return g_pLogViewWindow;
+}
+
+
+static bool logview_module_init(KviModule * m)
+{
+ g_pLogViewWindow = 0;
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"open",logview_kvs_cmd_open);
+
+
+
+ KviModuleExtensionDescriptor * d = m->registerExtension("tool",
+ LOGVIEW_MODULE_EXTENSION_NAME,
+ __tr2qs_ctx("Browse &Log Files","logview"),
+ logview_extension_alloc);
+
+ if(d)d->setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_LOG)));
+
+ return true;
+}
+
+static bool logview_module_cleanup(KviModule * m)
+{
+ if(g_pLogViewWindow)delete g_pLogViewWindow;
+ g_pLogViewWindow = 0;
+ return true;
+}
+
+static bool logview_module_can_unload(KviModule *m)
+{
+ return (!g_pLogViewWindow);
+}
+
+
+// ============================================
+// module definition structure
+// ============================================
+
+KVIRC_MODULE(
+ "KVIrc Log Viewer Widget",
+ "1.0.0",
+ "Juanjo Alvarez <[email protected]>",
+ "An structured log file viewer",
+ logview_module_init,
+ logview_module_can_unload,
+ 0,
+ logview_module_cleanup
+)
diff --git a/src/modules/logview/logviewmdiwindow.cpp b/src/modules/logview/logviewmdiwindow.cpp
new file mode 100644
index 00000000..20a2a232
--- /dev/null
+++ b/src/modules/logview/logviewmdiwindow.cpp
@@ -0,0 +1,477 @@
+//
+// File : logviewmdiwindow.cpp
+// Creation date : Tue Apr 23 2002 18:08:22 by Juanjo �varez
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "logviewmdiwindow.h"
+#include "logviewwidget.h"
+#include "kvi_iconmanager.h"
+#include "kvi_locale.h"
+#include "kvi_module.h"
+#include "kvi_options.h"
+#include "kvi_frame.h"
+#include "kvi_ircview.h"
+#include "kvi_qstring.h"
+#include "kvi_qcstring.h"
+#include "kvi_app.h"
+#include "kvi_fileutils.h"
+#ifdef COMPILE_USE_QT4
+ #include <q3progressdialog.h>
+#else
+ #include <qprogressdialog.h>
+#endif
+#include "kvi_valuelist.h"
+#include "kvi_accel.h"
+#include <qpixmap.h>
+#include <qsplitter.h>
+#include <qtoolbutton.h>
+#include "kvi_tal_listview.h"
+#include <qfileinfo.h>
+#include <qdir.h>
+#include "kvi_tal_popupmenu.h"
+#include <qcursor.h>
+#include <qlayout.h>
+#include <qpushbutton.h>
+
+
+
+#ifdef COMPILE_ZLIB_SUPPORT
+ #include <zlib.h>
+#endif
+#include <qtextcodec.h>
+#include "kvi_styled_controls.h"
+#include <qdatetimeedit.h>
+#include <qlineedit.h>
+#include <qlabel.h>
+
+extern KviLogViewMDIWindow * g_pLogViewWindow;
+
+KviLogViewMDIWindow::KviLogViewMDIWindow(KviModuleExtensionDescriptor * d,KviFrame * lpFrm)
+: KviWindow(KVI_WINDOW_TYPE_LOGVIEW,lpFrm,"logview"), KviModuleExtension(d)
+{
+ g_pLogViewWindow = this;
+// m_pLogViewWidget = new KviLogViewWidget(this);
+ #ifdef COMPILE_USE_QT4
+ m_pSplitter = new QSplitter(Qt::Horizontal,this,"main_splitter");
+#else
+ m_pSplitter = new QSplitter(QSplitter::Horizontal,this,"main_splitter");
+#endif
+ m_pTabWidget = new QTabWidget(m_pSplitter);
+
+ m_pIndexTab = new KviTalVBox(m_pTabWidget);
+ m_pTabWidget->insertTab(m_pIndexTab,__tr2qs_ctx("Index","logview"));
+ m_pListView = new KviTalListView(m_pIndexTab);
+ m_pListView->addColumn(__tr2qs_ctx("Log File","logview"),135);
+ m_pListView->setColumnWidthMode(0,KviTalListView::Maximum);
+ m_pListView->setAllColumnsShowFocus(true);
+ m_pListView->setMultiSelection(false);
+ m_pListView->setShowSortIndicator(true);
+ m_pListView->setRootIsDecorated(true);
+ connect(m_pListView,SIGNAL(selectionChanged(KviTalListViewItem *)),this,SLOT(itemSelected(KviTalListViewItem *)));
+ connect(m_pListView,SIGNAL(rightButtonClicked ( KviTalListViewItem * , const QPoint &, int )),this,SLOT(rightButtonClicked ( KviTalListViewItem * , const QPoint &, int )));
+
+ m_pSearchTab = new QWidget(m_pTabWidget);
+ m_pTabWidget->insertTab(m_pSearchTab,__tr2qs_ctx("Filter","logview"));
+
+ QGridLayout *layout = new QGridLayout(m_pSearchTab,10,2,3,5);
+
+ m_pShowChannelsCheck = new KviStyledCheckBox(__tr2qs_ctx("Show channel logs","logview"),m_pSearchTab);
+ m_pShowChannelsCheck->setChecked(true);
+ layout->addMultiCellWidget(m_pShowChannelsCheck,0,0,0,1);
+
+ m_pShowQueryesCheck = new KviStyledCheckBox(__tr2qs_ctx("Show query logs","logview"),m_pSearchTab);
+ m_pShowQueryesCheck->setChecked(true);
+ layout->addMultiCellWidget(m_pShowQueryesCheck,1,1,0,1);
+
+ m_pShowConsolesCheck = new KviStyledCheckBox(__tr2qs_ctx("Show console logs","logview"),m_pSearchTab);
+ m_pShowConsolesCheck->setChecked(true);
+ layout->addMultiCellWidget(m_pShowConsolesCheck,2,2,0,1);
+
+ m_pShowDccChatCheck = new KviStyledCheckBox(__tr2qs_ctx("Show DCC chat logs","logview"),m_pSearchTab);
+ m_pShowDccChatCheck->setChecked(true);
+ layout->addMultiCellWidget(m_pShowDccChatCheck,3,3,0,1);
+
+ m_pShowOtherCheck = new KviStyledCheckBox(__tr2qs_ctx("Show other logs","logview"),m_pSearchTab);
+ m_pShowOtherCheck->setChecked(true);
+ layout->addMultiCellWidget(m_pShowOtherCheck,4,4,0,1);
+
+ QLabel *l;
+ l = new QLabel(__tr2qs_ctx("Contents filter","logview"),m_pSearchTab);
+ layout->addMultiCellWidget(l,5,5,0,1);
+
+ l = new QLabel(__tr2qs_ctx("Log name mask:","logview"),m_pSearchTab);
+ m_pFileNameMask = new QLineEdit(m_pSearchTab);
+ connect(m_pFileNameMask,SIGNAL(returnPressed()),this,SLOT(applyFilter()));
+ layout->addWidget(l,6,0);
+ layout->addWidget(m_pFileNameMask,6,1);
+
+ l = new QLabel(__tr2qs_ctx("Log contents mask:","logview"),m_pSearchTab);
+ m_pContentsMask = new QLineEdit(m_pSearchTab);
+ connect(m_pContentsMask,SIGNAL(returnPressed()),this,SLOT(applyFilter()));
+ layout->addWidget(l,7,0);
+ layout->addWidget(m_pContentsMask,7,1);
+
+ m_pEnableFromFilter = new KviStyledCheckBox(__tr2qs_ctx("Only older than","logview"),m_pSearchTab);
+ m_pFromDateEdit = new QDateEdit(m_pSearchTab);
+ m_pFromDateEdit->setDate(QDate::currentDate());
+ layout->addWidget(m_pEnableFromFilter,8,0);
+ layout->addWidget(m_pFromDateEdit,8,1);
+ connect(m_pEnableFromFilter,SIGNAL(toggled(bool)),m_pFromDateEdit,SLOT(setEnabled(bool)));
+ m_pFromDateEdit->setEnabled(false);
+
+ m_pEnableToFilter = new KviStyledCheckBox(__tr2qs_ctx("Only newier than","logview"),m_pSearchTab);
+ m_pToDateEdit = new QDateEdit(m_pSearchTab);
+ m_pToDateEdit->setDate(QDate::currentDate());
+ layout->addWidget(m_pEnableToFilter,9,0);
+ layout->addWidget(m_pToDateEdit,9,1);
+ connect(m_pEnableToFilter,SIGNAL(toggled(bool)),m_pToDateEdit,SLOT(setEnabled(bool)));
+ m_pToDateEdit->setEnabled(false);
+
+ QPushButton *pb = new QPushButton(__tr2qs_ctx("Apply filter","logview"),m_pSearchTab);
+ connect(pb,SIGNAL(clicked()),this,SLOT(applyFilter()));
+ layout->addWidget(pb,10,1);
+
+ QWidget *w = new QWidget(m_pSearchTab);
+ w->setSizePolicy(QSizePolicy::Ignored,QSizePolicy::Ignored);
+ layout->addWidget(w,11,1);
+
+ m_pIrcView = new KviIrcView(m_pSplitter,g_pFrame,this);
+#ifdef COMPILE_USE_QT4
+ m_pIrcView->setFocusPolicy(Qt::ClickFocus);
+#else
+ m_pIrcView->setFocusPolicy(QWidget::ClickFocus);
+#endif
+ KviValueList<int> li;
+ li.append(110);
+ li.append(width()-110);
+ m_pSplitter->setSizes(li);
+
+ g_pApp->getLocalKvircDirectory(m_szLogDirectory,KviApp::Log);
+ KviQString::ensureLastCharIs(m_szLogDirectory,'/'); // Does this work on Windows?
+
+ cacheFileList();
+ setupItemList();
+ KviAccel *a = new KviAccel( this );
+ a->connectItem( a->insertItem(Qt::Key_F+Qt::CTRL),
+ m_pIrcView,
+ SLOT(toggleToolWidget()) );
+}
+
+
+
+KviLogViewMDIWindow::~KviLogViewMDIWindow()
+{
+ g_pLogViewWindow = 0;
+}
+
+void KviLogViewMDIWindow::applyFilter()
+{
+ setupItemList();
+}
+
+
+QPixmap * KviLogViewMDIWindow::myIconPtr()
+{
+ return g_pIconManager->getSmallIcon(KVI_SMALLICON_LOG);
+}
+
+
+void KviLogViewMDIWindow::resizeEvent(QResizeEvent *e)
+{
+ m_pSplitter->setGeometry(0,0,width(),height());
+}
+
+void KviLogViewMDIWindow::fillCaptionBuffers()
+{
+ m_szPlainTextCaption = __tr2qs_ctx("Log Viewer","logview");
+
+ m_szHtmlActiveCaption = QString("<nobr><font color=\"%1\"><b>").arg(KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name().ascii());
+ m_szHtmlActiveCaption.append(m_szPlainTextCaption);
+ m_szHtmlActiveCaption.append("</b></font></nobr>");
+
+ m_szHtmlInactiveCaption = QString("<nobr><font color=\"%1\"><b>").arg(KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name().ascii());
+ m_szHtmlInactiveCaption.append(m_szPlainTextCaption);
+ m_szHtmlInactiveCaption.append("</b></font></nobr>");
+}
+
+void KviLogViewMDIWindow::die()
+{
+ close();
+}
+
+QSize KviLogViewMDIWindow::sizeHint() const
+{
+ QSize ret(m_pSplitter->sizeHint().width(),m_pIrcView->sizeHint().height());
+ return ret;
+}
+
+void KviLogViewMDIWindow::setupItemList()
+{
+ m_pListView->clear();
+ KviLogFile *pFile;
+ //m_logList.begin();
+ KviLogListViewItem *pLastCategory=0;
+ KviLogListViewItemFolder *pLastGroupItem;
+ QString szLastGroup;
+ QString szCurGroup;
+ const bool bShowChannel=m_pShowChannelsCheck->isChecked();
+ const bool bShowQuery=m_pShowQueryesCheck->isChecked();
+ const bool bShowConsole=m_pShowConsolesCheck->isChecked();
+ const bool bShowOther=m_pShowOtherCheck->isChecked();
+ const bool bShowDccChat=m_pShowDccChatCheck->isChecked();
+
+ const bool filterFromDate=m_pEnableFromFilter->isChecked();
+ const bool filterToDate=m_pEnableToFilter->isChecked();
+
+ const QString nameFilterText = m_pFileNameMask->text();
+ const bool enableNameFilter = !nameFilterText.isEmpty();
+
+ const QString contentFilterText = m_pContentsMask->text();
+ const bool enableContentFilter = !contentFilterText.isEmpty();
+
+ QDate fromDate = m_pFromDateEdit->date();
+ QDate toDate = m_pToDateEdit->date();
+
+ QString textBuffer;
+#ifdef COMPILE_USE_QT4
+ Q3ProgressDialog progress( __tr2qs_ctx("Filtering files...","logview"),
+ __tr2qs_ctx("Abort filtering","logview"), m_logList.count(),
+ this, "progress", TRUE );
+#else
+ QProgressDialog progress( __tr2qs_ctx("Filtering files...","logview"),
+ __tr2qs_ctx("Abort filtering","logview"), m_logList.count(),
+ this, "progress", TRUE );
+#endif
+
+
+ int i=0;
+ for(pFile=m_logList.first();pFile;pFile=m_logList.next())
+ {
+ progress.setProgress( i );
+ i++;
+ g_pApp->processEvents();
+
+ if ( progress.wasCanceled() )
+ break;
+
+ if(pFile->type()==KviLogFile::Channel && !bShowChannel)
+ continue;
+ if(pFile->type()==KviLogFile::Console && !bShowConsole)
+ continue;
+ if(pFile->type()==KviLogFile::DccChat && !bShowDccChat)
+ continue;
+ if(pFile->type()==KviLogFile::Other && !bShowOther)
+ continue;
+ if(pFile->type()==KviLogFile::Query && !bShowQuery)
+ continue;
+
+ if(filterFromDate)
+ if(pFile->date()<fromDate)
+ continue;
+
+ if(filterToDate)
+ if(pFile->date()>toDate)
+ continue;
+
+ if(enableNameFilter)
+ if(!KviQString::matchStringCI(nameFilterText,pFile->name()))
+ continue;
+
+ if(enableContentFilter)
+ {
+ pFile->getText(textBuffer,m_szLogDirectory);
+ if(!KviQString::matchStringCI(contentFilterText,textBuffer))
+ continue;
+ }
+
+ if(pLastCategory)
+ {
+ if(pLastCategory->m_type!=pFile->type())
+ pLastCategory = new KviLogListViewItemType(m_pListView,pFile->type());
+ } else {
+ pLastCategory = new KviLogListViewItemType(m_pListView,pFile->type());
+ }
+
+ KviQString::sprintf(szCurGroup,__tr2qs_ctx("%Q on %Q","logview"),&(pFile->name()),
+ &(pFile->network())
+ );
+
+ if(szLastGroup!=szCurGroup) {
+ szLastGroup=szCurGroup;
+ pLastGroupItem=new KviLogListViewItemFolder(pLastCategory,szLastGroup);
+ }
+ new KviLogListViewLog(pLastGroupItem,pFile->type(),pFile);
+ }
+ progress.setProgress( m_logList.count() );
+}
+
+void KviLogViewMDIWindow::cacheFileList()
+{
+ QStringList m_pFileNames = getFileNames();
+ m_pFileNames.sort();
+ QString szFname;
+
+ for(QStringList::Iterator it = m_pFileNames.begin(); it != m_pFileNames.end(); ++it)
+ {
+ szFname=(*it);
+ QFileInfo fi(szFname);
+ if(fi.extension(false)=="gz" || fi.extension(false)=="log")
+ m_logList.append(new KviLogFile(szFname));
+ }
+}
+
+void KviLogViewMDIWindow::itemSelected(KviTalListViewItem * it)
+{
+ bool bCompressed=0;
+ //A parent node
+ m_pIrcView->clearBuffer();
+ if(!it || !it->parent() || !(((KviLogListViewItem *)it)->m_pFileData) )
+ {
+ return;
+ }
+
+ QString text;
+ ((KviLogListViewItem *)it)->m_pFileData->getText(text,m_szLogDirectory);
+
+ QStringList lines=QStringList::split('\n',text);
+ bool bOk;
+ int iMsgType;
+ for ( QStringList::Iterator it = lines.begin(); it != lines.end(); ++it ) {
+ QString num=(*it).section(' ',0,0);
+ iMsgType=num.toInt(&bOk);
+ if(bOk)
+ outputNoFmt(iMsgType,(*it).section(' ',1),KviIrcView::NoRepaint | KviIrcView::NoTimestamp);
+ else
+ outputNoFmt(0,*it,KviIrcView::NoRepaint | KviIrcView::NoTimestamp);
+ }
+ m_pIrcView->repaint(false);
+}
+
+QStringList KviLogViewMDIWindow::getFileNames()
+{
+ QString logPath;
+ g_pApp->getLocalKvircDirectory(logPath,KviApp::Log);
+ QString qPath(logPath);
+ QDir logDir(qPath);
+ return logDir.entryList();
+}
+
+void KviLogViewMDIWindow::rightButtonClicked ( KviTalListViewItem * it, const QPoint &, int )
+{
+ if(!it) return;
+ if(((KviLogListViewItem *)it)->fileName(0).isEmpty()) return;
+ KviTalPopupMenu* popup = new KviTalPopupMenu(this);
+ popup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_QUIT)),__tr2qs_ctx("Remove file","logview"),this,SLOT(deleteCurrent()));
+ popup->exec( QCursor::pos() );
+}
+
+void KviLogViewMDIWindow::deleteCurrent()
+{
+ KviLogListViewItem* pItem = (KviLogListViewItem *)(m_pListView->currentItem());
+ if(pItem)
+ {
+ if(!pItem->fileName(0).isNull())
+ {
+ QString szFname;
+ g_pApp->getLocalKvircDirectory(szFname,KviApp::Log,pItem->m_pFileData->fileName());
+ KviFileUtils::removeFile(szFname);
+ delete pItem;
+ m_pIrcView->clearBuffer();
+ }
+ }
+}
+
+KviLogFile::KviLogFile(const QString& name)
+{
+ m_szFilename=name;
+ QFileInfo fi(m_szFilename);
+ m_bCompressed=(fi.extension(false)=="gz");
+ QString typeToken = m_szFilename.section('_',0,0);
+ // Ignore non-logs files, this includes '.' and '..'
+ if( KviQString::equalCI(typeToken,"channel") )
+ m_type = Channel;
+ else if( KviQString::equalCI(typeToken,"console") )
+ m_type = Console;
+ else if( KviQString::equalCI(typeToken,"dccchat") )
+ m_type = DccChat;
+ else if( KviQString::equalCI(typeToken,"query") )
+ m_type = Query;
+ else
+ m_type = Other;
+
+ KviStr undecoded = m_szFilename.section('.',0,0);
+ undecoded.cutToFirst('_');
+ m_szName = undecoded.hexDecode(undecoded.ptr()).ptr();
+
+ undecoded = m_szFilename.section('.',1,1).section('_',0,0);
+ m_szNetwork = undecoded.hexDecode(undecoded.ptr()).ptr();
+
+ QString szDate = m_szFilename.section('.',1,3).section('_',1,1);
+ int iYear = szDate.section('.',0,0).toInt();
+ int iMonth = szDate.section('.',1,1).toInt();
+ int iDay = szDate.section('.',2,2).toInt();
+ m_date.setYMD(iYear,iMonth,iDay);
+
+ //debug("type=%i, name=%s, net=%s, date=%i %i %i",m_type,m_szName.ascii(),m_szNetwork.ascii(),iYear,iMonth,iDay);
+}
+
+void KviLogFile::getText(QString & text,const QString& logDir){
+ QString logName = logDir;
+ QFile logFile;
+ logName.append(fileName());
+#ifdef COMPILE_ZLIB_SUPPORT
+ if(m_bCompressed)
+ {
+ gzFile file=gzopen(logName.local8Bit().data(),"rb");
+ if(file)
+ {
+ char buff[1025];
+ int len;
+ KviQCString data;
+ //QCString data;
+ len=gzread(file,buff,1024);
+ while(len>0)
+ {
+ buff[len]=0;
+ data.append(buff);
+ len=gzread(file,buff,1024);
+ }
+ gzclose(file);
+ text = QString::fromUtf8(data);
+ } else {
+ debug("Cannot open compressed file %s",logName.local8Bit().data());
+ }
+ } else {
+#endif
+ logFile.setName(logName);
+
+ if(!logFile.open(IO_ReadOnly))
+ return;
+
+ QByteArray bytes;
+ bytes=logFile.readAll();
+ text = QString::fromUtf8(bytes.data(), bytes.size());
+ logFile.close();
+#ifdef COMPILE_ZLIB_SUPPORT
+ }
+#endif
+}
+
+#include "logviewmdiwindow.moc"
diff --git a/src/modules/logview/logviewmdiwindow.h b/src/modules/logview/logviewmdiwindow.h
new file mode 100644
index 00000000..df4bb245
--- /dev/null
+++ b/src/modules/logview/logviewmdiwindow.h
@@ -0,0 +1,125 @@
+#ifndef _LOGVIEWMDIWINDOW_H_
+#define _LOGVIEWMDIWINDOW_H_
+//
+// File : logviewmdiwindow.h
+// Creation date : Tue Apr 23 2002 18:05:59 by Juanjo �varez
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+#include "kvi_window.h"
+#include "kvi_moduleextension.h"
+
+#include "kvi_tal_vbox.h"
+#include "kvi_tal_listview.h"
+#include "kvi_pointerlist.h"
+#include <qtabwidget.h>
+#include <qdatetime.h>
+
+class KviTalListView;
+class QStringList;
+class KviLogViewWidget;
+class QCheckBox;
+class QLineEdit;
+class QDateEdit;
+
+class KviLogFile {
+
+public:
+
+ enum KviLogTypes {
+ Channel,
+ Console,
+ Query,
+ DccChat,
+ Other
+ };
+
+ KviLogFile(const QString& name);
+
+ const QString & fileName() { return m_szFilename; };
+ const QString & name() { return m_szName; };
+ const QString & network() { return m_szNetwork; };
+ const QDate & date() { return m_date; };
+
+ void getText(QString & text,const QString& logDir);
+
+ KviLogTypes type() { return m_type; };
+private:
+ KviLogTypes m_type;
+ QString m_szFilename;
+ bool m_bCompressed;
+ QString m_szName;
+ QString m_szNetwork;
+ QDate m_date;
+};
+
+class KviLogViewMDIWindow : public KviWindow , public KviModuleExtension
+{
+ Q_OBJECT
+public:
+ KviLogViewMDIWindow(KviModuleExtensionDescriptor * d,KviFrame * lpFrm);
+ ~KviLogViewMDIWindow();
+protected:
+ KviPointerList<KviLogFile> m_logList;
+
+ KviTalListView * m_pListView;
+
+ // Type filter
+ QCheckBox * m_pShowChannelsCheck;
+ QCheckBox * m_pShowQueryesCheck;
+ QCheckBox * m_pShowConsolesCheck;
+ QCheckBox * m_pShowOtherCheck;
+ QCheckBox * m_pShowDccChatCheck;
+
+ // Content filter
+ QLineEdit * m_pFileNameMask;
+ QLineEdit * m_pContentsMask;
+
+ // Date/time mask
+ QCheckBox * m_pEnableFromFilter;
+ QCheckBox * m_pEnableToFilter;
+ QDateEdit * m_pFromDateEdit;
+ QDateEdit * m_pToDateEdit;
+
+ QStringList * m_pFileNames;
+ QString m_szLogDirectory;
+ QTabWidget * m_pTabWidget;
+ KviTalVBox * m_pIndexTab;
+ QWidget * m_pSearchTab;
+protected:
+ QStringList getFileNames();
+
+ void setupItemList();
+ void cacheFileList();
+
+ virtual QPixmap * myIconPtr();
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual void fillCaptionBuffers();
+ virtual void die();
+ virtual QSize sizeHint() const;
+protected slots:
+ void rightButtonClicked ( KviTalListViewItem *, const QPoint &, int );
+ void itemSelected(KviTalListViewItem * it);
+ void deleteCurrent();
+ void applyFilter();
+};
+
+#endif //_LOGVIEWMDIWINDOW_H_
+
diff --git a/src/modules/logview/logviewwidget.cpp b/src/modules/logview/logviewwidget.cpp
new file mode 100644
index 00000000..fc5c8abc
--- /dev/null
+++ b/src/modules/logview/logviewwidget.cpp
@@ -0,0 +1,76 @@
+//
+// File : logviewwidget.cpp
+// Creation date : Thu Apr 23 2002 17:42:12 by Juanjo �varez
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "logviewwidget.h"
+
+#include <qsplitter.h>
+#include <qlayout.h>
+#include <qdir.h>
+
+//#include "kvi_debug.h"
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+#include "kvi_app.h"
+
+#include "kvi_qstring.h"
+#ifdef COMPILE_ZLIB_SUPPORT
+ #include <zlib.h>
+#endif
+#include <qtextcodec.h>
+
+const QPixmap * KviLogListViewItemType::pixmap(int col) const
+{
+
+ switch(m_type)
+ {
+ case KviLogFile::Channel:
+ return g_pIconManager->getSmallIcon(KVI_SMALLICON_CHANNEL);
+ case KviLogFile::Query:
+ return g_pIconManager->getSmallIcon(KVI_SMALLICON_QUERY);
+ case KviLogFile::DccChat:
+ return g_pIconManager->getSmallIcon(KVI_SMALLICON_DCCMSG);
+ case KviLogFile::Console:
+ return g_pIconManager->getSmallIcon(KVI_SMALLICON_CONSOLE);
+ default:
+ return g_pIconManager->getSmallIcon(KVI_SMALLICON_HELP);
+ }
+}
+
+QString KviLogListViewItemType::text(int col) const
+{
+ switch(m_type)
+ {
+ case KviLogFile::Channel:
+ return __tr2qs_ctx("Channel","logview");
+ case KviLogFile::Query:
+ return __tr2qs_ctx("Query","logview");
+ case KviLogFile::DccChat:
+ return __tr2qs_ctx("DCC Chat","logview");
+ case KviLogFile::Console:
+ return __tr2qs_ctx("Console","logview");
+ default:
+ return __tr2qs_ctx("Other","logview");
+ }
+};
+
+
+#include "logviewwidget.moc"
diff --git a/src/modules/logview/logviewwidget.h b/src/modules/logview/logviewwidget.h
new file mode 100644
index 00000000..1b5eff97
--- /dev/null
+++ b/src/modules/logview/logviewwidget.h
@@ -0,0 +1,86 @@
+#ifndef _LOGVIEWWIDGET_H_
+#define _LOGVIEWWIDGET_H_
+
+//
+// File : logviewwidget.h
+// Creation date : Thue Apr 23 2002 03:01:53 CET by Juanjo �varez
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002-2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_window.h"
+#include "kvi_scripteditor.h"
+#include "logviewmdiwindow.h"
+
+#include "kvi_tal_listview.h"
+
+
+class KviScriptEditor;
+
+class KviLogListViewItem : public KviTalListViewItem
+{
+public:
+ KviLogListViewItem(KviTalListViewItem * par, KviLogFile::KviLogTypes type, KviLogFile * fileData)
+ : KviTalListViewItem(par), m_type(type), m_pFileData(fileData) {};
+ KviLogListViewItem(KviTalListView * par, KviLogFile::KviLogTypes type, KviLogFile * fileData)
+ : KviTalListViewItem(par), m_type(type), m_pFileData(fileData) {};
+ ~KviLogListViewItem() {};
+public:
+ KviLogFile::KviLogTypes m_type;
+ KviLogFile* m_pFileData;
+
+ virtual QString fileName(int col) const { return m_pFileData ? m_pFileData->name() : QString::null; };
+ virtual QString text(int col) const { return m_pFileData ? m_pFileData->name() : QString::null; };
+};
+
+class KviLogListViewItemFolder : public KviLogListViewItem
+{
+public:
+ KviLogListViewItemFolder(KviTalListViewItem * par, const QString& label)
+ : KviLogListViewItem(par,KviLogFile::Other,0),m_szLabel(label) {};
+ ~KviLogListViewItemFolder() {};
+public:
+ QString m_szLabel;
+ virtual QString text(int col) const { return m_szLabel; };
+};
+
+class KviLogListViewItemType : public KviLogListViewItem
+{
+public:
+ KviLogListViewItemType(KviTalListView * par, KviLogFile::KviLogTypes type)
+ : KviLogListViewItem(par,type,0) {};
+ ~KviLogListViewItemType() {};
+public:
+ virtual const QPixmap * pixmap(int col) const;
+ virtual QString text(int col) const;
+};
+
+
+class KviLogListViewLog : public KviLogListViewItem
+{
+public:
+ KviLogListViewLog(KviTalListViewItem * par, KviLogFile::KviLogTypes type, KviLogFile * fileData)
+ : KviLogListViewItem(par,type,fileData){};
+ ~KviLogListViewLog() {};
+ virtual QString key ( int column, bool ascending ) const { return m_pFileData->date().toString("yyyy.MM.dd"); };
+ virtual QString text(int col) const { return m_pFileData->date().toString("dd.MM.yyyy"); };
+};
+
+
+#endif
+
diff --git a/src/modules/mask/Makefile.am b/src/modules/mask/Makefile.am
new file mode 100644
index 00000000..0ca529fe
--- /dev/null
+++ b/src/modules/mask/Makefile.am
@@ -0,0 +1,18 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvimask.la
+
+libkvimask_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvimask_la_SOURCES = libkvimask.cpp
+libkvimask_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+# noinst_HEADERS=
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/mask/libkvimask.cpp b/src/modules/mask/libkvimask.cpp
new file mode 100644
index 00000000..3f8be4b2
--- /dev/null
+++ b/src/modules/mask/libkvimask.cpp
@@ -0,0 +1,201 @@
+//
+// File : libkvistr.cpp
+// Creation date : Thu Dec 27 2001 17:13:12 GMT by Szymon Stefanek
+//
+// This str is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "kvi_module.h"
+
+#include "kvi_locale.h"
+#include "kvi_string.h"
+#include "kvi_ircmask.h"
+
+ /*
+ @doc: mask.match
+ @type:
+ function
+ @title:
+ $mask.match
+ @short:
+ Matches a mask agains a wildcarded one
+ @syntax:
+ <boolean> $mask.match(<wildcard_mask:string>,<fixed_mask:string>)
+ @description:
+ Returns 1 if the <wildcard_mask> matches <fixed_mask> and 0 otherwise.
+ <wildcard_mask> can obviously contain wildcards ('*' and '?').
+ @example:
+ [example]
+ [cmd]if[/cmd]($mask.match(*!*@*.linux.it,$0))
+ [cmd]op[/cmd] [fnc]$mask.nick[/fnc]($0)
+ [/example]
+ */
+
+static bool mask_kvs_fnc_match(KviKvsModuleFunctionCall * c)
+{
+
+ QString wildmask,fixedmask;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("wildcard mask",KVS_PT_STRING,0,wildmask)
+ KVSM_PARAMETER("fixed mask",KVS_PT_STRING,0,fixedmask)
+ KVSM_PARAMETERS_END(c)
+ KviIrcMask mk1(wildmask);
+ KviIrcMask mk2(fixedmask);
+ c->returnValue()->setBoolean(mk1.matchesFixed(mk2.nick(),mk2.user(),mk2.host()));
+ return true;
+}
+
+ /*
+ @doc: mask.nick
+ @type:
+ function
+ @title:
+ $mask.nick
+ @short:
+ Returns the nick part of an IRC mask
+ @syntax:
+ <string> $mask.nick(<mask:string>)
+ @description:
+ Returns the nickname part of an IRC mask.
+ */
+
+static bool mask_kvs_fnc_nick(KviKvsModuleFunctionCall * c)
+{
+
+ QString mask;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("mask",KVS_PT_STRING,0,mask)
+ KVSM_PARAMETERS_END(c)
+ KviIrcMask mk(mask);
+ c->returnValue()->setString(mk.nick());
+ return true;
+}
+
+ /*
+ @doc: mask.user
+ @type:
+ function
+ @title:
+ $mask.user
+ @short:
+ Returns the username part of an IRC mask
+ @syntax:
+ <string> $mask.user(<mask:string>)
+ @description:
+ Returns the username part of an IRC mask.
+ */
+
+static bool mask_kvs_fnc_user(KviKvsModuleFunctionCall * c)
+{
+
+ QString mask;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("mask",KVS_PT_STRING,0,mask)
+ KVSM_PARAMETERS_END(c)
+ KviIrcMask mk(mask);
+ c->returnValue()->setString(mk.user());
+ return true;
+}
+
+
+ /*
+ @doc: mask.host
+ @type:
+ function
+ @title:
+ $mask.host
+ @short:
+ Returns the hostname part of an IRC mask
+ @syntax:
+ <string> $mask.host(<mask:string>)
+ @description:
+ Returns the hostname part of an IRC mask.
+ */
+
+static bool mask_kvs_fnc_host(KviKvsModuleFunctionCall * c)
+{
+ QString mask;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("mask",KVS_PT_STRING,0,mask)
+ KVSM_PARAMETERS_END(c)
+ KviIrcMask mk(mask);
+ c->returnValue()->setString(mk.host());
+ return true;
+}
+
+
+ /*
+ @doc: mask.hasnumerichost
+ @type:
+ function
+ @title:
+ $mask.hasNumericHost
+ @short:
+ Checks if a host part of a mask is numeric
+ @syntax:
+ <boolean> $mask.hasNumericHost(<mask: string>)
+ @description:
+ Returns 1 if the hostname part of the mask is numeric (e.g : unresolved IPV4 or IPV6 address)
+ */
+
+
+static bool mask_kvs_fnc_hasnumerichost(KviKvsModuleFunctionCall * c)
+{
+ QString mask;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("mask",KVS_PT_STRING,0,mask)
+ KVSM_PARAMETERS_END(c)
+ KviIrcMask mk(mask);
+ c->returnValue()->setBoolean(mk.hasNumericHost());
+ return true;
+}
+
+
+/*********************************************************************/
+// Module stuff
+/********************************************************************/
+
+
+
+static bool mask_module_init(KviModule * m)
+{
+ KVSM_REGISTER_FUNCTION(m,"match",mask_kvs_fnc_match);
+ KVSM_REGISTER_FUNCTION(m,"nick",mask_kvs_fnc_nick);
+ KVSM_REGISTER_FUNCTION(m,"user",mask_kvs_fnc_user);
+ KVSM_REGISTER_FUNCTION(m,"host",mask_kvs_fnc_host);
+ KVSM_REGISTER_FUNCTION(m,"hasnumerichost",mask_kvs_fnc_hasnumerichost);
+
+ return true;
+}
+
+static bool mask_module_cleanup(KviModule *m)
+{
+ return true;
+}
+
+KVIRC_MODULE(
+ "File", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)",
+ "Mask manipulation functions",
+ mask_module_init,
+ 0,
+ 0,
+ mask_module_cleanup
+)
diff --git a/src/modules/math/Makefile.am b/src/modules/math/Makefile.am
new file mode 100644
index 00000000..001bef24
--- /dev/null
+++ b/src/modules/math/Makefile.am
@@ -0,0 +1,18 @@
+###############################################################################
+# KVirc IRC client Makemath - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvimath.la
+
+libkvimath_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvimath_la_SOURCES = libkvimath.cpp
+libkvimath_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+# noinst_HEADERS=
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/math/libkvimath.cpp b/src/modules/math/libkvimath.cpp
new file mode 100644
index 00000000..63a29787
--- /dev/null
+++ b/src/modules/math/libkvimath.cpp
@@ -0,0 +1,475 @@
+//=============================================================================
+//
+// File : libkvimath.cpp
+// Creation date : Sat Jan 13 14:00:12 2006 GMT by Szymon Stefanek
+//
+// This math is part of the KVirc irc client distribution
+// Copyright (C) 2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_module.h"
+#include "kvi_string.h"
+
+#include <math.h>
+
+// Workaround for lost isnan and isinf definitions after
+// inclusion of iostream.h on some MacOS X systems
+#ifdef Q_OS_MACX
+ #ifndef isnan
+ extern "C" int isnan (double);
+ #endif
+ #ifndef isinf
+ extern "C" int isinf (double);
+ #endif
+#endif
+
+#define MATH_KVS_1PARAM_FUNCTION(__fncname,__paramname,__mathcallname) \
+static bool __fncname(KviKvsModuleFunctionCall * c) \
+{ \
+ kvs_real_t dReal; \
+ KVSM_PARAMETERS_BEGIN(c) \
+ KVSM_PARAMETER(__paramname,KVS_PT_REAL,0,dReal) \
+ KVSM_PARAMETERS_END(c) \
+ c->returnValue()->setReal(__mathcallname(dReal)); \
+ return true; \
+}
+
+#ifdef COMPILE_ON_WINDOWS
+// dobbiamo testare meglio, i risultati.
+static double cbrt(double x)
+{
+ if (x > 0.0) return pow(x, 1.0/3.0);
+ else return -pow(-x, 1.0/3.0);
+}
+
+static int isinf (double d) {
+ int expon = 0;
+ double val = frexp (d, &expon);
+ if (expon == 1025) {
+ if (val == 0.5) return 1;
+ else if (val == -0.5) return -1;
+ else return 0;
+ } else {
+ return 0;
+ }
+}
+static int isnan (double d) {
+ int expon = 0;
+ double val = frexp (d, &expon);
+ if (expon == 1025) {
+ if (val == 0.5) return 0;
+ else if (val == -0.5) return 0;
+ else return 1;
+ } else {
+ return 0;
+ }
+}
+#endif
+/*
+ @doc: math.sin
+ @type:
+ function
+ @title:
+ $math.sin
+ @short:
+ Returns the sinus of the specified angle in radiants
+ @syntax:
+ <real> $math.sin(<angle:real>)
+ @description:
+ Returns the sinus of the specified angle in radiants
+*/
+MATH_KVS_1PARAM_FUNCTION(math_kvs_fnc_sin,"angle",sin)
+
+/*
+ @doc: math.cos
+ @type:
+ function
+ @title:
+ $math.cos
+ @short:
+ Returns the cosinus of the specified angle in radiants
+ @syntax:
+ <real> $math.cos(<angle:real>)
+ @description:
+ Returns the cosinus of the specified angle in radiants
+*/
+MATH_KVS_1PARAM_FUNCTION(math_kvs_fnc_cos,"angle",cos)
+
+/*
+ @doc: math.tan
+ @type:
+ function
+ @title:
+ $math.tan
+ @short:
+ Returns the tangent of the specified angle in radiants
+ @syntax:
+ <real> $math.tan(<angle:real>)
+ @description:
+ Returns the tangent of the specified angle in radiants
+*/
+MATH_KVS_1PARAM_FUNCTION(math_kvs_fnc_tan,"angle",tan)
+
+/*
+ @doc: math.asin
+ @type:
+ function
+ @title:
+ $math.asin
+ @short:
+ Returns the angle in radiants that has the specified sinus value.
+ @syntax:
+ <real> $math.asin(<sinus:real>)
+ @description:
+ Returns the angle in radiants that has the specified sinus value.
+*/
+MATH_KVS_1PARAM_FUNCTION(math_kvs_fnc_asin,"sinus",asin)
+
+/*
+ @doc: math.acos
+ @type:
+ function
+ @title:
+ $math.acos
+ @short:
+ Returns the angle in radiants that has the specified cosinus value.
+ @syntax:
+ <real> $math.acos(<cosinus:real>)
+ @description:
+ Returns the angle in radiants that has the specified cosinus value.
+*/
+MATH_KVS_1PARAM_FUNCTION(math_kvs_fnc_acos,"cosinus",acos)
+
+
+/*
+ @doc: math.atan
+ @type:
+ function
+ @title:
+ $math.atan
+ @short:
+ Returns the angle in radiants that has the specified tangent value.
+ @syntax:
+ <real> $math.atan(<tangent:real>)
+ @description:
+ Returns the angle in radiants that has the specified tangent value.
+*/
+MATH_KVS_1PARAM_FUNCTION(math_kvs_fnc_atan,"tangent",atan)
+
+/*
+ @doc: math.sqrt
+ @type:
+ function
+ @title:
+ $math.sqrt
+ @short:
+ Returns the square root of a number
+ @syntax:
+ <real> $math.sqrt(<number:real>)
+ @description:
+ Returns the square root of the specified number
+*/
+MATH_KVS_1PARAM_FUNCTION(math_kvs_fnc_sqrt,"number",sqrt)
+
+/*
+ @doc: math.cbrt
+ @type:
+ function
+ @title:
+ $math.cbrt
+ @short:
+ Returns the cube root of a number
+ @syntax:
+ <real> $math.cbrt(<number:real>)
+ @description:
+ Returns the cube root of the specified number
+*/
+MATH_KVS_1PARAM_FUNCTION(math_kvs_fnc_cbrt,"number",cbrt)
+
+/*
+ @doc: math.abs
+ @type:
+ function
+ @title:
+ $math.abs
+ @short:
+ Returns the absolute value of a number
+ @syntax:
+ <real> $math.abs(<number:real>)
+ @description:
+ Returns the absolute value of the specified number
+*/
+MATH_KVS_1PARAM_FUNCTION(math_kvs_fnc_abs,"number",fabs)
+
+/*
+ @doc: math.floor
+ @type:
+ function
+ @title:
+ $math.floor
+ @short:
+ Rounds down to the nearest integer
+ @syntax:
+ <real> $math.floor(<number:real>)
+ @description:
+ Rounds down number to the nearest integer
+*/
+MATH_KVS_1PARAM_FUNCTION(math_kvs_fnc_floor,"number",floor)
+
+/*
+ @doc: math.ceil
+ @type:
+ function
+ @title:
+ $math.ceil
+ @short:
+ Rounds up to the nearest integer
+ @syntax:
+ <real> $math.ceil(<number:real>)
+ @description:
+ Rounds up number to the nearest integer
+*/
+MATH_KVS_1PARAM_FUNCTION(math_kvs_fnc_ceil,"number",ceil)
+
+/*
+ @doc: math.exp
+ @type:
+ function
+ @title:
+ $math.exp
+ @short:
+ Returns the exponential of the specified number
+ @syntax:
+ <real> $math.exp(<number:real>)
+ @description:
+ Returns the exponential of the specified number
+*/
+MATH_KVS_1PARAM_FUNCTION(math_kvs_fnc_exp,"number",exp)
+
+/*
+ @doc: math.log
+ @type:
+ function
+ @title:
+ $math.log
+ @short:
+ Returns the natural logarithm of the specified number
+ @syntax:
+ <real> $math.log(<number:real>)
+ @description:
+ Returns the natural (base e) logarithm of the specified number
+*/
+
+MATH_KVS_1PARAM_FUNCTION(math_kvs_fnc_log,"number",log)
+
+
+/*
+ @doc: math.log10
+ @type:
+ function
+ @title:
+ $math.log10
+ @short:
+ Returns the base 10 logarithm of the specified number
+ @syntax:
+ <real> $math.log10(<number:real>)
+ @description:
+ Returns the base 10 logarithm of the specified number
+*/
+MATH_KVS_1PARAM_FUNCTION(math_kvs_fnc_log10,"number",log10)
+
+/*
+ @doc: math.isnan
+ @type:
+ function
+ @title:
+ $math.isnan
+ @short:
+ Checks if the value is not a number
+ @syntax:
+ <boolean> $math.isnan(<value:real>)
+ @description:
+ Checks if the specified value is a valid number
+ or NaN (Not a Number). NaN is returned by several
+ math functions when the result would be undefined.
+*/
+static bool math_kvs_fnc_isnan(KviKvsModuleFunctionCall * c)
+{
+ kvs_real_t dReal;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("value",KVS_PT_REAL,0,dReal)
+ KVSM_PARAMETERS_END(c)
+ c->returnValue()->setBoolean(isnan(dReal));
+ return true;
+}
+
+/*
+ @doc: math.isinf
+ @type:
+ function
+ @title:
+ $math.isinf
+ @short:
+ Checks if the value is the infinity
+ @syntax:
+ <boolean> $math.isinf(<value:real>)
+ @description:
+ Checks if the specified value is the infinity.
+*/
+#ifdef COMPILE_ON_WINDOWS
+static bool math_kvs_fnc_isinf(KviKvsModuleFunctionCall * c)
+{
+ kvs_real_t dReal;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("value",KVS_PT_REAL,0,dReal)
+ KVSM_PARAMETERS_END(c)
+ c->returnValue()->setBoolean(sinf(dReal));
+ return true;
+}
+#else
+static bool math_kvs_fnc_isinf(KviKvsModuleFunctionCall * c)
+{
+ kvs_real_t dReal;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("value",KVS_PT_REAL,0,dReal)
+ KVSM_PARAMETERS_END(c)
+ c->returnValue()->setBoolean(isinf(dReal));
+ return true;
+}
+#endif //COMPILE_ON_WINDOWS
+/*
+ @doc: math.pow
+ @type:
+ function
+ @title:
+ $math.pow
+ @short:
+ Returns a to the power of b
+ @syntax:
+ <real> $math.pow(<a:real>,<b:real>)
+ @description:
+ Returns a to the power of b
+*/
+static bool math_kvs_fnc_pow(KviKvsModuleFunctionCall * c)
+{
+ kvs_real_t dA,dB;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("a",KVS_PT_REAL,0,dA)
+ KVSM_PARAMETER("b",KVS_PT_REAL,0,dB)
+ KVSM_PARAMETERS_END(c)
+ c->returnValue()->setReal(pow(dA,dB));
+ return true;
+}
+
+/*
+ @doc: math.pi
+ @type:
+ function
+ @title:
+ $math.pi
+ @short:
+ Returns the value of pi
+ @syntax:
+ <real> $math.pi()
+ @description:
+ Returns the value of pi
+*/
+#ifdef COMPILE_ON_WINDOWS
+static bool math_kvs_fnc_pi(KviKvsModuleFunctionCall * c)
+{
+ c->returnValue()->setReal(3.141592653589793238462643383279502884197169399375);
+ return true;
+}
+#else
+static bool math_kvs_fnc_pi(KviKvsModuleFunctionCall * c)
+{
+ c->returnValue()->setReal(M_PI);
+ return true;
+}
+#endif
+/*
+ @doc: math.e
+ @type:
+ function
+ @title:
+ $math.e
+ @short:
+ Returns the value of e
+ @syntax:
+ <real> $math.e()
+ @description:
+ Returns the value of the euler constant e
+*/
+
+
+#ifdef COMPILE_ON_WINDOWS
+static bool math_kvs_fnc_e(KviKvsModuleFunctionCall * c)
+{
+ c->returnValue()->setReal(1.56903485);
+ return true;
+}
+#else
+static bool math_kvs_fnc_e(KviKvsModuleFunctionCall * c)
+{
+ c->returnValue()->setReal(M_E);
+ return true;
+}
+#endif
+static bool math_module_init(KviModule * m)
+{
+ KVSM_REGISTER_FUNCTION(m,"sin",math_kvs_fnc_sin);
+ KVSM_REGISTER_FUNCTION(m,"cos",math_kvs_fnc_cos);
+ KVSM_REGISTER_FUNCTION(m,"tan",math_kvs_fnc_tan);
+ KVSM_REGISTER_FUNCTION(m,"asin",math_kvs_fnc_asin);
+ KVSM_REGISTER_FUNCTION(m,"acos",math_kvs_fnc_acos);
+ KVSM_REGISTER_FUNCTION(m,"atan",math_kvs_fnc_atan);
+ KVSM_REGISTER_FUNCTION(m,"sqrt",math_kvs_fnc_sqrt);
+ KVSM_REGISTER_FUNCTION(m,"cbrt",math_kvs_fnc_cbrt);
+ KVSM_REGISTER_FUNCTION(m,"abs",math_kvs_fnc_abs);
+ KVSM_REGISTER_FUNCTION(m,"floor",math_kvs_fnc_floor);
+ KVSM_REGISTER_FUNCTION(m,"ceil",math_kvs_fnc_ceil);
+ KVSM_REGISTER_FUNCTION(m,"pow",math_kvs_fnc_pow);
+ KVSM_REGISTER_FUNCTION(m,"exp",math_kvs_fnc_exp);
+ KVSM_REGISTER_FUNCTION(m,"log",math_kvs_fnc_log);
+ KVSM_REGISTER_FUNCTION(m,"log10",math_kvs_fnc_log10);
+ KVSM_REGISTER_FUNCTION(m,"pi",math_kvs_fnc_pi);
+ KVSM_REGISTER_FUNCTION(m,"e",math_kvs_fnc_e);
+ KVSM_REGISTER_FUNCTION(m,"isnan",math_kvs_fnc_isnan);
+ KVSM_REGISTER_FUNCTION(m,"isinf",math_kvs_fnc_isinf);
+ return true;
+}
+
+
+static bool math_module_cleanup(KviModule *m)
+{
+ return true;
+}
+
+KVIRC_MODULE(
+ "Math", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2006 Szymon Stefanek (pragma at kvirc dot net),"\
+ "Tonino Imbesi (grifisx at barmes dot org)," \
+ "Alessandro Carbone (noldor at barmes dot org)",
+ "Mathematical function module",
+ math_module_init,
+ 0,
+ 0,
+ math_module_cleanup
+)
diff --git a/src/modules/mediaplayer/Makefile.am b/src/modules/mediaplayer/Makefile.am
new file mode 100644
index 00000000..af5caa60
--- /dev/null
+++ b/src/modules/mediaplayer/Makefile.am
@@ -0,0 +1,36 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvimediaplayer.la
+
+#%.moc: %.h
+# $(SS_QT_MOC) $< -o $@
+
+libkvimediaplayer_la_LDFLAGS = -avoid-version -module
+
+libkvimediaplayer_la_SOURCES = libkvimediaplayer.cpp \
+ mp_amarokinterface.cpp \
+ mp_amipinterface.cpp \
+ mp_dcopinterface.cpp \
+ mp_interface.cpp \
+ mp_jukinterface.cpp \
+ mp_mp3.cpp \
+ mp_winampinterface.cpp \
+ mp_xmmsinterface.cpp
+
+libkvimediaplayer_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS = mp_amarokinterface.h \
+ mp_amipinterface.h \
+ mp_dcopinterface.h \
+ mp_interface.h \
+ mp_jukinterface.h \
+ mp_mp3.h \
+ mp_winampinterface.h \
+ mp_xmmsinterface.h
+
+
diff --git a/src/modules/mediaplayer/libkvimediaplayer.cpp b/src/modules/mediaplayer/libkvimediaplayer.cpp
new file mode 100644
index 00000000..bd8a144f
--- /dev/null
+++ b/src/modules/mediaplayer/libkvimediaplayer.cpp
@@ -0,0 +1,1751 @@
+//=============================================================================
+//
+// File : libkvimediaplayer.cpp
+// Creation date : Sat Nov 3 19:28:25 2001 GMT by Szymon Stefanek
+// Renamed to file : libkvimediaplayer.cpp on Fri Mar 25 2005
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "mp_interface.h"
+#include "mp_xmmsinterface.h"
+#include "mp_amarokinterface.h"
+#include "mp_winampinterface.h"
+#include "mp_amipinterface.h"
+#include "mp_jukinterface.h"
+
+#include "kvi_module.h"
+#include "kvi_options.h"
+
+
+#include "kvi_locale.h"
+#include "kvi_out.h"
+
+static KviPointerList<KviMediaPlayerInterfaceDescriptor> * g_pDescriptorList = 0;
+
+static KviMediaPlayerInterface * g_pMPInterface = 0;
+
+static KviMediaPlayerInterface * auto_detect_player(KviWindow * pOut = 0)
+{
+ int iBest = 0;
+ KviMediaPlayerInterface * pBest = 0;
+ KviMediaPlayerInterfaceDescriptor * d;
+ KviMediaPlayerInterfaceDescriptor * pDBest = 0;
+ for(d = g_pDescriptorList->first();d;d = g_pDescriptorList->next())
+ {
+ KviMediaPlayerInterface * i = d->instance();
+ if(i)
+ {
+ int iScore = i->detect(false);
+ if(iScore > iBest)
+ {
+ iBest = iScore;
+ pBest = i;
+ pDBest = d;
+ }
+ if(pOut)
+ {
+ QString szOut;
+ QString szNam = d->name();
+ KviQString::sprintf(szOut,__tr2qs_ctx("Trying media player interface \"%Q\": score %d","mediaplayer"),&(szNam),iScore);
+ pOut->output(KVI_OUT_MULTIMEDIA,szOut);
+ }
+ }
+ }
+ if(iBest < 90)
+ {
+ if(pOut)
+ pOut->outputNoFmt(KVI_OUT_MULTIMEDIA,__tr2qs_ctx("Not sure about the results, trying a second, more agressive detection pass","mediaplayer"));
+ // no sure player found... try again with a destructive test
+ for(d = g_pDescriptorList->first();d;d = g_pDescriptorList->next())
+ {
+ KviMediaPlayerInterface * i = d->instance();
+ if(i)
+ {
+ int iScore = i->detect(true);
+ if(iScore > iBest)
+ {
+ iBest = iScore;
+ pBest = i;
+ pDBest = d;
+ }
+ if(pOut)
+ {
+ QString szOut;
+ QString szNam = d->name();
+ KviQString::sprintf(szOut,__tr2qs_ctx("Trying media player interface \"%Q\": score %d","mediaplayer"),&(szNam),iScore);
+ pOut->output(KVI_OUT_MULTIMEDIA,szOut);
+ }
+ }
+ }
+ }
+ if(pDBest)
+ {
+ KVI_OPTION_STRING(KviOption_stringPreferredMediaPlayer) = pDBest->name();
+ if(pOut)
+ pOut->output(KVI_OUT_MULTIMEDIA,__tr2qs_ctx("Choosing media player interface \"%Q\"","mediaplayer"),&(KVI_OPTION_STRING(KviOption_stringPreferredMediaPlayer)));
+ } else {
+ if(pOut)
+ pOut->outputNoFmt(KVI_OUT_MULTIMEDIA,__tr2qs_ctx("Seems that there is no usable media player on this machine","mediaplayer"));
+ }
+ return pBest;
+}
+
+
+
+ #define MP_KVS_FAIL_ON_NO_INTERFACE \
+ if(!g_pMPInterface) \
+ { \
+ c->warning(__tr2qs_ctx("No mediaplayer interface selected. Try /mediaplayer.detect","mediaplayer")); \
+ return true; \
+ } \
+
+ #define MP_KVS_COMMAND(__name) static bool mediaplayer_kvs_cmd_ ## __name (KviKvsModuleCommandCall * c)
+ #define MP_KVS_FUNCTION(__name) static bool mediaplayer_kvs_fnc_ ## __name (KviKvsModuleFunctionCall * c)
+
+ #define MP_KVS_SIMPLE_COMMAND(__name,__ifacecommand) \
+ MP_KVS_COMMAND(__name) \
+ { \
+ KVSM_PARAMETERS_BEGIN(c) \
+ KVSM_PARAMETERS_END(c) \
+ \
+ MP_KVS_FAIL_ON_NO_INTERFACE \
+ \
+ if(!g_pMPInterface->__ifacecommand()) \
+ { \
+ if(!c->hasSwitch('q',"quiet")) \
+ { \
+ c->warning(__tr2qs_ctx("The selected media player interface failed to execute the requested function","mediaplayer")); \
+ QString tmp = __tr2qs_ctx("Last interface error: ","mediaplayer"); \
+ tmp += g_pMPInterface->lastError(); \
+ c->warning(tmp); \
+ } \
+ }\
+ return true; \
+ }
+
+ #define MP_KVS_SIMPLE_STRING_FUNCTION(__name,__ifacecommand) \
+ MP_KVS_FUNCTION(__name) \
+ { \
+ MP_KVS_FAIL_ON_NO_INTERFACE \
+ QString szRet = g_pMPInterface->__ifacecommand(); \
+ c->returnValue()->setString(szRet); \
+ return true; \
+ }
+
+ #define MP_KVS_SIMPLE_INT_FUNCTION(__name,__ifacecommand) \
+ MP_KVS_FUNCTION(__name) \
+ { \
+ MP_KVS_FAIL_ON_NO_INTERFACE \
+ int iRet = g_pMPInterface->__ifacecommand(); \
+ c->returnValue()->setInteger(iRet); \
+ return true; \
+ }
+ // FINDME!
+ #define MP_KVS_SIMPLE_BOOL_FUNCTION(__name,__ifacecommand) \
+ MP_KVS_FUNCTION(__name) \
+ { \
+ MP_KVS_FAIL_ON_NO_INTERFACE \
+ bool bRet = g_pMPInterface->__ifacecommand(); \
+ c->returnValue()->setBoolean(bRet); \
+ return true; \
+ }
+
+
+/*
+ @doc: mediaplayer.play
+ @type:
+ command
+ @title:
+ mediaplayer.play
+ @short:
+ Starts media playback in the selected media player
+ @syntax:
+ mediaplayer.play [-q]
+ @description:
+ Starts playback in the remote instance of the currently selected media player.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [cmd]mediaplayer.stop[/cmd],
+ [cmd]mediaplayer.pause[/cmd],
+ [cmd]mediaplayer.prev[/cmd],
+ [cmd]mediaplayer.next[/cmd],
+ [fnc]$mediaplayer.nowPlaying[/fnc],
+ [fnc]$mediaplayer.status[/fnc]
+*/
+
+MP_KVS_SIMPLE_COMMAND(play,play)
+
+/*
+ @doc: mediaplayer.hide
+ @type:
+ command
+ @title:
+ mediaplayer.hide
+ @short:
+ Hide the mediaplayer [-q]
+ @syntax:
+ mediaplayer.hide
+ @description:
+ Hide the player interface.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [cmd]mediaplayer.quit[/cmd],
+ [cmd]mediaplayer.show[/cmd],
+ [cmd]mediaplayer.minimize[/cmd]
+*/
+
+MP_KVS_SIMPLE_COMMAND(hide,hide)
+
+/*
+ @doc: mediaplayer.show
+ @type:
+ command
+ @title:
+ mediaplayer.show
+ @short:
+ Show the mediaplayer.
+ @syntax:
+ mediaplayer.show [-q]
+ @description:
+ Show the player interface.[br]
+ When you use this function in your script, remember to reshow mediaplayer's window [br]
+ or quit the mediplayerwindow to the exit.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [cmd]mediaplayer.quit[/cmd],
+ [cmd]mediaplayer.hide[/cmd],
+ [cmd]mediaplayer.minimize[/cmd]
+*/
+
+MP_KVS_SIMPLE_COMMAND(show,show)
+
+/*
+ @doc: mediaplayer.minimize
+ @type:
+ command
+ @title:
+ mediaplayer.minimize
+ @short:
+ Minimize the mediaplayer.
+ @syntax:
+ mediaplayer.minimize [-q]
+ @description:
+ Minimize the player interface.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [cmd]mediaplayer.quit[/cmd],
+ [cmd]mediaplayer.hide[/cmd],
+ [cmd]mediaplayer.show[/cmd]
+*/
+
+MP_KVS_SIMPLE_COMMAND(minimize,minimize)
+
+/*
+ @doc: mediaplayer.stop
+ @type:
+ command
+ @title:
+ mediaplayer.stop
+ @short:
+ Stops media playback in the selected media player
+ @syntax:
+ mediaplayer.stop [-q]
+ @description:
+ Stops playback in the remote instance of the currently selected media player.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [cmd]mediaplayer.play[/cmd],
+ [cmd]mediaplayer.pause[/cmd],
+ [cmd]mediaplayer.prev[/cmd],
+ [cmd]mediaplayer.next[/cmd],
+ [fnc]$mediaplayer.nowPlaying[/fnc],
+ [fnc]$mediaplayer.status[/fnc]
+*/
+
+MP_KVS_SIMPLE_COMMAND(stop,stop)
+
+/*
+ @doc: mediaplayer.next
+ @type:
+ command
+ @title:
+ mediaplayer.next
+ @short:
+ Starts playback of the next song (mediaplayer interface module)
+ @syntax:
+ mediaplayer.next [-q]
+ @description:
+ Starts playback of the next song in the remote instance of the slave media player.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module]
+ [cmd]mediaplayer.stop[/cmd],
+ [cmd]mediaplayer.pause[/cmd],
+ [cmd]mediaplayer.prev[/cmd],
+ [cmd]mediaplayer.play[/cmd],
+ [fnc]$mediaplayer.nowPlaying[/fnc],
+ [fnc]$mediaplayer.status[/fnc]
+*/
+
+MP_KVS_SIMPLE_COMMAND(next,next)
+
+/*
+ @doc: mediaplayer.prev
+ @type:
+ command
+ @title:
+ mediaplayer.prev
+ @short:
+ Starts playback of the previous song (mediaplayer interface module)
+ @syntax:
+ mediaplayer.prev [-q]
+ @description:
+ Starts playback of the previous song in the remote instance of the slave media player.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module]
+ [cmd]mediaplayer.stop[/cmd],
+ [cmd]mediaplayer.pause[/cmd],
+ [cmd]mediaplayer.play[/cmd],
+ [cmd]mediaplayer.next[/cmd],
+ [fnc]$mediaplayer.nowPlaying[/fnc],
+ [fnc]$mediaplayer.status[/fnc]
+*/
+
+MP_KVS_SIMPLE_COMMAND(prev,prev)
+
+/*
+ @doc: mediaplayer.quit
+ @type:
+ command
+ @title:
+ mediaplayer.quit
+ @short:
+ Quits the remote media player (mediaplayer interface module)
+ @syntax:
+ mediaplayer.quit [-q]
+ @description:
+ Quits the remote instance of the slave media player.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module]
+ [cmd]mediaplayer.stop[/cmd],
+ [cmd]mediaplayer.pause[/cmd],
+ [cmd]mediaplayer.prev[/cmd],
+ [cmd]mediaplayer.next[/cmd],
+ [fnc]$mediaplayer.nowPlaying[/fnc],
+ [fnc]$mediaplayer.status[/fnc]
+*/
+
+MP_KVS_SIMPLE_COMMAND(quit,quit)
+
+/*
+ @doc: mediaplayer.pause
+ @type:
+ command
+ @title:
+ mediaplayer.pause
+ @short:
+ Pauses playback (mediaplayer interface module)
+ @syntax:
+ mediaplayer.pause [-q]
+ @description:
+ Pauses playback in the remote instance of the slave media player.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module]
+ [cmd]mediaplayer.stop[/cmd],
+ [cmd]mediaplayer.pause[/cmd],
+ [cmd]mediaplayer.prev[/cmd],
+ [cmd]mediaplayer.next[/cmd],
+ [fnc]$mediaplayer.nowPlaying[/fnc],
+ [fnc]$mediaplayer.status[/fnc]
+*/
+
+MP_KVS_SIMPLE_COMMAND(pause,pause)
+
+/*
+ @doc: mediaplayer.detect
+ @type:
+ command
+ @title:
+ mediaplayer.detect
+ @short:
+ Detects the media player interface to use
+ @syntax:
+ mediaplayer.detect [-q]
+ @description:
+ Attempts to detect the best media player interface
+ for the current system. The -q switch causes the detection
+ algorithm to run quietly. This function may attempt to start
+ the media players in order to verify their presence on the system.
+ You can guide the function by starting the media player you
+ prefer before running it: if a running media player is found, it takes
+ precedence over the others.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module]
+ [cmd]mediaplayer.stop[/cmd], [cmd]mediaplayer.pause[/cmd],
+ [cmd]mediaplayer.prev[/cmd],
+ [cmd]mediaplayer.next[/cmd],
+ [fnc]$mediaplayer.nowPlaying[/fnc],
+ [fnc]$mediaplayer.status[/fnc],
+ [cmd]mediaplayer.setPlayer[/cmd],
+ [fnc]$mediaplayer.player[/fnc]
+*/
+
+MP_KVS_COMMAND(detect)
+{
+ g_pMPInterface = auto_detect_player(c->hasSwitch('q',"quiet") ? 0 : c->window());
+ return true;
+}
+
+/*
+ @doc: mediaplayer.setPlayer
+ @type:
+ command
+ @title:
+ mediaplayer.setPlayer
+ @short:
+ Sets the media player interface
+ @syntax:
+ mediaplayer.setPlayer <player_name>
+ @description:
+ Sets the media player interface to be used by the
+ mediaplayer module. <interface_name> must be one
+ of the player names returned by [fnc]$mediaplayer.playerList()[/fnc]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [cmd]mediaplayer.detect[/cmd], [fnc]$mediaplayer.player[/fnc]
+*/
+
+MP_KVS_COMMAND(setPlayer)
+{
+ QString szPlayer;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("player",KVS_PT_STRING,0,szPlayer)
+ KVSM_PARAMETERS_END(c)
+
+ for(KviMediaPlayerInterfaceDescriptor * d = g_pDescriptorList->first();d;d = g_pDescriptorList->next())
+ {
+ if(d->name() == szPlayer)
+ {
+ g_pMPInterface = d->instance();
+ KVI_OPTION_STRING(KviOption_stringPreferredMediaPlayer) = szPlayer;
+ return true;
+ }
+ }
+
+ return true;
+}
+
+/*
+ @doc: mediaplayer.player
+ @type:
+ function
+ @title:
+ $mediaplayer.player
+ @short:
+ Returns the currently set media player interface
+ @syntax:
+ $mediaplayer.player()
+ @description:
+ Returns the currently set media player interface.
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [cmd]mediaplayer.detect[/cmd], [cmd]mediaplayer.setPlayer[/cmd]
+*/
+
+MP_KVS_FUNCTION(player)
+{
+ c->returnValue()->setString(KVI_OPTION_STRING(KviOption_stringPreferredMediaPlayer));
+ return true;
+}
+
+/*
+ @doc: mediaplayer.playerList
+ @type:
+ function
+ @title:
+ $mediaplayer.playerList
+ @short:
+ Returns a the list of the supported media player interfaces
+ @syntax:
+ $mediaplayer.playerList()
+ @description:
+ Returns an array containing the supported media player interfaces.
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module]
+ [cmd]mediaplayer.detect[/cmd], [cmd]mediaplayer.setPlayer[/cmd],
+ [fnc]$mediaplayer.player[/fnc]
+*/
+
+MP_KVS_FUNCTION(playerList)
+{
+ KviKvsArray* pArray = new KviKvsArray();
+ int id=0;
+
+ for(KviMediaPlayerInterfaceDescriptor * d = g_pDescriptorList->first();d;d = g_pDescriptorList->next())
+ {
+ pArray->set(id++,new KviKvsVariant(d->name()));
+ }
+ c->returnValue()->setArray(pArray);
+ return true;
+}
+/*
+ @doc: mediaplayer.playmrl
+ @type:
+ command
+ @title:
+ mediaplayer.playMrl
+ @short:
+ Plays the specified media on the selected media player
+ @syntax:
+ mediaplayer.playMrl <mrl>
+ @description:
+ Plays the media specified by the <mrl> on the currently
+ selected media player interface. <mrl> is a standard Media Resource
+ Locator. Examples of such locators are: 'file:///home/myfile.mp3' ,
+ 'http://streaming.server.top:123', 'dvd:// or dvb://channelname'.
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [fnc]$mediaplayer.mrl[/fnc],
+ [fnc]$mediaplayer.localFile[/fnc],
+ [cmd]mediaplayer.play[/cmd]
+*/
+
+MP_KVS_COMMAND(playMrl)
+{
+ QString szMrl;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("player",KVS_PT_STRING,0,szMrl)
+ KVSM_PARAMETERS_END(c)
+
+ MP_KVS_FAIL_ON_NO_INTERFACE
+ if(!g_pMPInterface->playMrl(szMrl))
+ {
+ if(!c->hasSwitch('q',"quiet"))
+ {
+ c->warning(__tr2qs_ctx("The selected media player interface failed to execute the requested function","mediaplayer"));
+ QString tmp = __tr2qs_ctx("Last interface error: ","mediaplayer");
+ tmp += g_pMPInterface->lastError();
+ c->warning(tmp);
+ }
+ }
+
+ return true;
+}
+
+MP_KVS_COMMAND(amipExec)
+{
+ QString szMrl;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("player",KVS_PT_STRING,0,szMrl)
+ KVSM_PARAMETERS_END(c)
+
+ MP_KVS_FAIL_ON_NO_INTERFACE
+ if(!g_pMPInterface->amipExec(szMrl))
+ {
+ if(!c->hasSwitch('q',"quiet"))
+ {
+ c->warning(__tr2qs_ctx("The selected media player interface failed to execute the requested function","mediaplayer"));
+ QString tmp = __tr2qs_ctx("Last interface error: ","mediaplayer");
+ tmp += g_pMPInterface->lastError();
+ c->warning(tmp);
+ }
+ }
+
+ return true;
+}
+
+
+/*
+ @doc: mediaplayer.jumpTo
+ @type:
+ command
+ @title:
+ mediaplayer.jumpTo
+ @short:
+ Sets the position in seconds of the current song.
+ @syntax:
+ mediaplayer.jumpTo [-q] <pos>
+ @description:
+ Sets the position in seconds of the current song .
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [fnc]$mediaplayer.position[/fnc],
+ [fnc]$mediaplayer.lenght[/fnc],
+*/
+
+MP_KVS_COMMAND(jumpTo)
+{
+ int iPos;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("position",KVS_PT_INT,0,iPos)
+ KVSM_PARAMETERS_END(c)
+
+ MP_KVS_FAIL_ON_NO_INTERFACE
+ if(!g_pMPInterface->jumpTo(iPos))
+ {
+ if(!c->hasSwitch('q',"quiet"))
+ {
+ c->warning(__tr2qs_ctx("The selected media player interface failed to execute the requested function","mediaplayer"));
+ QString tmp = __tr2qs_ctx("Last interface error: ","mediaplayer");
+ tmp += g_pMPInterface->lastError();
+ c->warning(tmp);
+ }
+ }
+ return true;
+}
+
+/*
+ @doc: mediaplayer.setVol
+ @type:
+ command
+ @title:
+ mediaplayer.setVol
+ @short:
+ Set the media player volume to <vol> (from 0-255)
+ @syntax:
+ mediaplayer.setVol [-q] <vol>
+ @description:
+ Set the media player volume to <vol> (the valid range is from 0 to ....)
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [fnc]$mediaplayer.getVol[/fnc]
+*/
+
+MP_KVS_COMMAND(setVol)
+{
+ kvs_int_t iVol;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("volume",KVS_PT_INT,0,iVol)
+ KVSM_PARAMETERS_END(c)
+
+ MP_KVS_FAIL_ON_NO_INTERFACE
+ if(!g_pMPInterface->setVol(iVol))
+ {
+ if(!c->hasSwitch('q',"quiet"))
+ {
+ c->warning(__tr2qs_ctx("The selected media player interface failed to execute the requested function","mediaplayer"));
+ QString tmp = __tr2qs_ctx("Last interface error: ","mediaplayer");
+ tmp += g_pMPInterface->lastError();
+ c->warning(tmp);
+ }
+ }
+ return true;
+}
+
+/*
+ @doc: mediaplayer.getVol
+ @type:
+ function
+ @title:
+ $mediaplayer.getVol
+ @short:
+ Returns the current volume of the media player
+ @syntax:
+ $mediaplayer.getVol()
+ @description:
+ Returns the current volume of the media player within 0 to 255.
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [cmd]mediaplayer.setVol[/cmd]
+*/
+
+MP_KVS_SIMPLE_INT_FUNCTION(getVol,getVol)
+
+/*
+ @doc: mediaplayer.mute
+ @type:
+ command
+ @title:
+ mediaplayer.mute
+ @short:
+ Mute the volume selected media player
+ @syntax:
+ mediaplayer.mute
+ @description:
+ Mutes the volume selected media player.[br]
+ If already muted, it restores the volume.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [cmd]mediaplayer.play[/cmd], [cmd]mediaplayer.pause[/cmd],
+ [cmd]mediaplayer.prev[/cmd],
+ [cmd]mediaplayer.next[/cmd],
+ [fnc]$mediaplayer.nowPlaying[/fnc],
+ [fnc]$mediaplayer.status[/fnc]
+*/
+
+MP_KVS_SIMPLE_COMMAND(mute,mute)
+
+
+/*
+ @doc: mediaplayer.mrl
+ @type:
+ function
+ @title:
+ $mediaplayer.mrl
+ @short:
+ Returns the mrl of the currently played media
+ @syntax:
+ $mediaplayer.mrl()
+ @description:
+ Returns the mrl of the media currently played by the selected media player interface.
+ The mrl is a standard Media Resource Locator.
+ Examples of such locators are: 'file:///home/myfile.mp3' ,
+ 'http://streaming.server.top:123', 'dvd:// or dvb://channelname'.
+ This means that the returned string may NOT refer to a local file:
+ it refers to the local file only if the 'file://' prefix is found ([fnc]$mediaplayer.localFile()[/fnc]
+ checks that for you).
+ The returned string is empty if the player isn't currently playing.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [cmd]mediaplayer.playMrl[/cmd],
+ [fnc]$mediaplayer.localFile[/fnc]
+*/
+
+MP_KVS_SIMPLE_STRING_FUNCTION(mrl,mrl)
+
+/*
+ @doc: mediaplayer.nowPlaying
+ @type:
+ function
+ @title:
+ $mediaplayer.nowPlaying
+ @short:
+ Returns a descripting of the currently played media
+ @syntax:
+ $mediaplayer.nowPlaying()
+ @description:
+ Returns a description fo the media currently played
+ by the selected media player interface. The description
+ will usually contain the title of the media and eventually
+ some additional information like the artist name or album.
+ This function is granted to be implemented by all the media
+ player interfaces and return an empty string only
+ if the player is not currently playing or there is a communication
+ error.
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [fnc]$mediaplayer.mrl[/fnc], [cmd]mediaplayer.playMrl[/cmd],
+ [cmd]mediaplayer.play[/cmd], [fnc]$mediaplayer.title[/fnc],
+ [fnc]$mediaplayer.artist[/fnc], [fnc]$mediaplayer.genre[/fnc],
+ [fnc]$mediaplayer.year[/fnc], [fnc]$mediaplayer.comment[/fnc],
+ [fnc]$mediaplayer.mediaType[/fnc],
+ [fnc]$mediaplayer.bitRate[/fnc],
+ [fnc]$mediaplayer.sampleRate[/fnc],
+ [fnc]$mediaplayer.length[/fnc],
+ [fnc]$mediaplayer.position[/fnc]
+*/
+
+MP_KVS_SIMPLE_STRING_FUNCTION(nowPlaying,nowPlaying)
+
+/*
+ @doc: mediaplayer.title
+ @type:
+ function
+ @title:
+ $mediaplayer.title
+ @short:
+ Returns the title of the current media
+ @syntax:
+ $mediaplayer.title()
+ @description:
+ Returns the title of the multimedia file being played by the
+ remote instance of the media player. This function is not granted
+ to work with all the player interfaces and all the media types:
+ if you want to write portable code you should use [fnc]$mediaplayer.nowPlaying[/fnc]
+ instead.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [fnc]$mediaplayer.mrl[/fnc], [cmd]mediaplayer.playMrl[/cmd],
+ [cmd]mediaplayer.play[/cmd], [fnc]$mediaplayer.nowPlaying[/fnc],
+ [fnc]$mediaplayer.artist[/fnc], [fnc]$mediaplayer.genre[/fnc],
+ [fnc]$mediaplayer.year[/fnc], [fnc]$mediaplayer.comment[/fnc],
+ [fnc]$mediaplayer.mediaType[/fnc]
+*/
+
+MP_KVS_SIMPLE_STRING_FUNCTION(title,title)
+
+/*
+ @doc: mediaplayer.artist
+ @type:
+ function
+ @title:
+ $mediaplayer.artist
+ @short:
+ Returns the artist of the media player
+ @syntax:
+ $mediaplayer.artist()
+ @description:
+ Returns the artist property of the media currently played by
+ the selected media player interface. This function is not granted
+ to work with all the player interfaces and all the media types:
+ if you want to write portable code you should use [fnc]$mediaplayer.nowPlaying[/fnc]
+ instead.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [fnc]$mediaplayer.mrl[/fnc], [cmd]mediaplayer.playMrl[/cmd],
+ [cmd]mediaplayer.play[/cmd], [fnc]$mediaplayer.nowPlaying[/fnc],
+ [fnc]$mediaplayer.title[/fnc], [fnc]$mediaplayer.genre[/fnc],
+ [fnc]$mediaplayer.year[/fnc], [fnc]$mediaplayer.comment[/fnc],
+ [fnc]$mediaplayer.mediaType[/fnc],
+ [fnc]$mediaplayer.album[/fnc],
+ [fnc]$mediaplayer.length[/fnc],
+ [fnc]$mediaplayer.position[/fnc]
+*/
+
+MP_KVS_SIMPLE_STRING_FUNCTION(artist,artist)
+
+/*
+ @doc: mediaplayer.genre
+ @type:
+ function
+ @title:
+ $mediaplayer.genre
+ @short:
+ Returns the genre of the media player
+ @syntax:
+ $mediaplayer.genre()
+ @description:
+ Returns the genre property of the media currently played by
+ the selected media player interface. This function is not granted
+ to work with all the player interfaces and all the media types:
+ if you want to write portable code you should use [fnc]$mediaplayer.nowPlaying[/fnc]
+ instead.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [fnc]$mediaplayer.mrl[/fnc], [cmd]mediaplayer.playMrl[/cmd],
+ [cmd]mediaplayer.play[/cmd], [fnc]$mediaplayer.nowPlaying[/fnc],
+ [fnc]$mediaplayer.artist[/fnc], [fnc]$mediaplayer.artist[/fnc],
+ [fnc]$mediaplayer.year[/fnc], [fnc]$mediaplayer.comment[/fnc],
+ [fnc]$mediaplayer.mediaType[/fnc], [fnc]$mediaplayer.album[/fnc],
+ [fnc]$mediaplayer.length[/fnc], [fnc]$mediaplayer.position[/fnc]
+*/
+
+MP_KVS_SIMPLE_STRING_FUNCTION(genre,genre)
+
+/*
+ @doc: mediaplayer.year
+ @type:
+ function
+ @title:
+ $mediaplayer.year
+ @short:
+ Returns the year of the media player
+ @syntax:
+ $mediaplayer.year()
+ @description:
+ Returns the year property of the media currently played by
+ the selected media player interface. This function is not granted
+ to work with all the player interfaces and all the media types:
+ if you want to write portable code you should use [fnc]$mediaplayer.nowPlaying[/fnc]
+ instead.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [fnc]$mediaplayer.mrl[/fnc], [cmd]mediaplayer.playMrl[/cmd],
+ [cmd]mediaplayer.play[/cmd], [fnc]$mediaplayer.nowPlaying[/fnc],
+ [fnc]$mediaplayer.artist[/fnc], [fnc]$mediaplayer.artist[/fnc],
+ [fnc]$mediaplayer.genre[/fnc], [fnc]$mediaplayer.comment[/fnc],
+ [fnc]$mediaplayer.mediaType[/fnc], [fnc]$mediaplayer.album[/fnc],
+ [fnc]$mediaplayer.length[/fnc], [fnc]$mediaplayer.position[/fnc]
+*/
+
+MP_KVS_SIMPLE_STRING_FUNCTION(year,year)
+
+/*
+ @doc: mediaplayer.comment
+ @type:
+ function
+ @title:
+ $mediaplayer.comment
+ @short:
+ Returns the comment of the media player
+ @syntax:
+ $mediaplayer.comment()
+ @description:
+ Returns the comment property of the media currently played by
+ the selected media player interface. This function is not granted
+ to work with all the player interfaces and all the media types:
+ if you want to write portable code you should use [fnc]$mediaplayer.nowPlaying[/fnc]
+ instead.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [fnc]$mediaplayer.mrl[/fnc], [cmd]mediaplayer.playMrl[/cmd],
+ [cmd]mediaplayer.play[/cmd], [fnc]$mediaplayer.nowPlaying[/fnc],
+ [fnc]$mediaplayer.artist[/fnc], [fnc]$mediaplayer.artist[/fnc],
+ [fnc]$mediaplayer.year[/fnc], [fnc]$mediaplayer.year[/fnc],
+ [fnc]$mediaplayer.mediaType[/fnc], [fnc]$mediaplayer.album[/fnc],
+ [fnc]$mediaplayer.length[/fnc], [fnc]$mediaplayer.position[/fnc]
+*/
+
+MP_KVS_SIMPLE_STRING_FUNCTION(comment,comment)
+
+/*
+ @doc: mediaplayer.album
+ @type:
+ function
+ @title:
+ $mediaplayer.album
+ @short:
+ Returns the album of the media player
+ @syntax:
+ $mediaplayer.album()
+ @description:
+ Returns the album property of the media currently played by
+ the selected media player interface. This function is not granted
+ to work with all the player interfaces and all the media types:
+ if you want to write portable code you should use [fnc]$mediaplayer.nowPlaying[/fnc]
+ instead.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [fnc]$mediaplayer.mrl[/fnc], [cmd]mediaplayer.playMrl[/cmd],
+ [cmd]mediaplayer.play[/cmd], [fnc]$mediaplayer.nowPlaying[/fnc],
+ [fnc]$mediaplayer.artist[/fnc], [fnc]$mediaplayer.artist[/fnc],
+ [fnc]$mediaplayer.year[/fnc], [fnc]$mediaplayer.comment[/fnc],
+ [fnc]$mediaplayer.mediaType[/fnc],
+ [fnc]$mediaplayer.bitRate[/fnc],
+ [fnc]$mediaplayer.sampleRate[/fnc],
+ [fnc]$mediaplayer.length[/fnc],
+ [fnc]$mediaplayer.position[/fnc]
+*/
+
+MP_KVS_SIMPLE_STRING_FUNCTION(album,album)
+
+/*
+ @doc: mediaplayer.mediaType
+ @type:
+ function
+ @title:
+ $mediaplayer.mediaType
+ @short:
+ Returns the currently played media type
+ @syntax:
+ $mediaplayer.medyaType()
+ @description:
+ Returns a string describing the media type currently played
+ by the selected media player interface. This function is not granted
+ to work with all the player interfaces and all the media types.
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module]
+ [fnc]$mediaplayer.mrl[/fnc], [cmd]mediaplayer.playMrl[/cmd],
+ [cmd]mediaplayer.play[/cmd], [fnc]$mediaplayer.nowPlaying[/fnc],
+ [fnc]$mediaplayer.artist[/fnc],
+ [fnc]$mediaplayer.artist[/fnc],
+ [fnc]$mediaplayer.year[/fnc], [fnc]$mediaplayer.comment[/fnc]
+*/
+
+MP_KVS_SIMPLE_STRING_FUNCTION(mediaType,mediaType)
+
+/*
+ @doc: mediaplayer.bitRate
+ @type:
+ function
+ @title:
+ $mediaplayer.bitRate
+ @short:
+ Returns the bit rate of the current song
+ @syntax:
+ $mediaplayer.bitRate
+ @description:
+ Returns the bit rate (in bits/sec) of the multimedia file being played by the
+ remote instance of the media player.This function is not granted
+ to work with all the player interfaces and all the media types so
+ you may get -1 or 0 in return sometimes.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module]
+ [fnc]$mediaplayer.mrl[/fnc], [cmd]mediaplayer.playMrl[/cmd],
+ [cmd]mediaplayer.play[/cmd], [fnc]$mediaplayer.nowPlaying[/fnc],
+ [fnc]$mediaplayer.artist[/fnc], [fnc]$mediaplayer.artist[/fnc],
+ [fnc]$mediaplayer.year[/fnc], [fnc]$mediaplayer.comment[/fnc],
+ [fnc]$mediaplayer.sampleRate[/fnc],
+ [fnc]$mediaplayer.length[/fnc],
+ [fnc]$mediaplayer.position[/fnc]
+*/
+
+MP_KVS_SIMPLE_INT_FUNCTION(bitRate,bitRate)
+
+
+/*
+ @doc: mediaplayer.sampleRate
+ @type:
+ function
+ @title:
+ $mediaplayer.sampleRate
+ @short:
+ Returns the sample rate of the current song
+ @syntax:
+ $mediaplayer.sampleRate
+ @description:
+ Returns the sample rate (in Hz) of the multimedia file being played by the
+ remote instance of the media player.This function is not granted
+ to work with all the player interfaces and all the media types so
+ you may get -1 or 0 in return sometimes.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module]
+ [fnc]$mediaplayer.mrl[/fnc], [cmd]mediaplayer.playMrl[/cmd],
+ [cmd]mediaplayer.play[/cmd], [fnc]$mediaplayer.nowPlaying[/fnc],
+ [fnc]$mediaplayer.artist[/fnc], [fnc]$mediaplayer.artist[/fnc],
+ [fnc]$mediaplayer.year[/fnc], [fnc]$mediaplayer.comment[/fnc],
+ [fnc]$mediaplayer.bitRate[/fnc], [fnc]$mediaplayer.length[/fnc],
+ [fnc]$mediaplayer.position[/fnc], [fnc]$mediaplayer.channels[/fnc]
+*/
+
+MP_KVS_SIMPLE_INT_FUNCTION(sampleRate,sampleRate)
+
+
+/*
+ @doc: mediaplayer.length
+ @type:
+ function
+ @title:
+ $mediaplayer.length
+ @short:
+ Returns the length of the current media
+ @syntax:
+ $mediaplayer.length()
+ @description:
+ Returns the length in milliseconds of the multimedia file being played by the
+ remote instance of the media player.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [fnc]$mediaplayer.mrl[/fnc], [cmd]mediaplayer.playMrl[/cmd],
+ [cmd]mediaplayer.play[/cmd], [fnc]$mediaplayer.nowPlaying[/fnc],
+ [fnc]$mediaplayer.artist[/fnc],
+ [fnc]$mediaplayer.artist[/fnc],
+ [fnc]$mediaplayer.year[/fnc], [fnc]$mediaplayer.comment[/fnc],
+ [fnc]$mediaplayer.sampleRate[/fnc],
+ [fnc]$mediaplayer.bitRate[/fnc],
+ [fnc]$mediaplayer.position[/fnc]
+*/
+
+MP_KVS_SIMPLE_INT_FUNCTION(length,length)
+
+/*
+ @doc: mediaplayer.position
+ @type:
+ function
+ @title:
+ $mediaplayer.position
+ @short:
+ Returns the position of the current media
+ @syntax:
+ $mediaplayer.position()
+ @description:
+ Returns the currently elapsed time of the multimedia file being played by the
+ remote instance of the media player.
+ The time is expressed in milliseconds.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module]
+ [fnc]$mediaplayer.mrl[/fnc], [cmd]mediaplayer.playMrl[/cmd],
+ [cmd]mediaplayer.play[/cmd], [fnc]$mediaplayer.nowPlaying[/fnc],
+ [fnc]$mediaplayer.artist[/fnc], [fnc]$mediaplayer.artist[/fnc],
+ [fnc]$mediaplayer.year[/fnc], [fnc]$mediaplayer.comment[/fnc],
+ [fnc]$mediaplayer.sampleRate[/fnc],
+ [fnc]$mediaplayer.length[/fnc],
+ [fnc]$mediaplayer.bitRate[/fnc], [fnc]$mediaplayer.channels[/fnc]
+*/
+
+MP_KVS_SIMPLE_INT_FUNCTION(position,position)
+
+/*
+ @doc: mediaplayer.channels
+ @type:
+ function
+ @title:
+ $mediaplayer.channels
+ @short:
+ Returns the number of channels of the current song
+ @syntax:
+ $mediaplayer.channels()
+ @description:
+ Returns the number of channels of the multimedia file being played by the
+ remote instance of the media player.This function is not granted
+ to work with all the player interfaces and all the media types so
+ you may get -1 or 0 in return sometimes.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module]
+*/
+
+MP_KVS_SIMPLE_INT_FUNCTION(channels,channels)
+
+
+/*
+ @doc: mediaplayer.setPlayListPos
+ @type:
+ command
+ @title:
+ mediaplayer.setPlayListPos
+ @short:
+ Set the position for the current song.
+ @syntax:
+ mediaplayer.setPlayListPos [-q] <pos:integer>
+ @description:
+ Set the position in the player list for the current song to <pos>.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [fnc]$mediaplayer.getPlayListPos[/fnc]
+*/
+
+MP_KVS_COMMAND(setPlayListPos)
+{
+ int iPos;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("position",KVS_PT_INT,0,iPos)
+ KVSM_PARAMETERS_END(c)
+
+ MP_KVS_FAIL_ON_NO_INTERFACE
+ if(!g_pMPInterface->setPlayListPos(iPos))
+ {
+ if(!c->hasSwitch('q',"quiet"))
+ {
+ c->warning(__tr2qs_ctx("The selected media player interface failed to execute the requested function","mediaplayer"));
+ QString tmp = __tr2qs_ctx("Last interface error: ","mediaplayer");
+ tmp += g_pMPInterface->lastError();
+ c->warning(tmp);
+ }
+ }
+ return true;
+}
+
+/*
+ @doc: mediaplayer.getPlayListPos
+ @type:
+ function
+ @title:
+ $mediaplayer.getPlayListPos
+ @short:
+ Get the position for the current song.
+ @syntax:
+ $mediaplayer.getPlayListPos()
+ @description:
+ Get the song's position in the player list.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [cmd]mediaplayer.getPlayListPos[/cmd]
+*/
+
+MP_KVS_SIMPLE_INT_FUNCTION(getPlayListPos,getPlayListPos)
+
+/*
+ @doc: mediaplayer.getListLength
+ @type:
+ function
+ @title:
+ $mediaplayer.getListLength
+ @short:
+ Return the play list length.
+ @syntax:
+ $mediaplayer.getListLength()
+ @description:
+ Return the player list length.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+*/
+
+MP_KVS_SIMPLE_INT_FUNCTION(getListLength,getListLength)
+
+
+/*
+ @doc: mediaplayer.getRepeat
+ @type:
+ function
+ @title:
+ $mediaplayer.getRepeat
+ @short:
+ Return if "Repeat" is on.
+ @syntax:
+ $mediaplayer.getRepeat()
+ @description:
+ Return the value of the Repeat flag for the current track (1 for ON, 0 for OFF.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [cmd]mediaplayer.setRepeat[/cmd], [cmd]mediaplayer.setShuffle[/cmd],
+ [fnc]$mediaplayer.getShuffle[/fnc]
+*/
+
+MP_KVS_SIMPLE_INT_FUNCTION(getRepeat,getRepeat)
+
+
+/*
+ @doc: mediaplayer.getShuffle
+ @type:
+ function
+ @title:
+ $mediaplayer.getShuffle
+ @short:
+ Return if "Shuffle" is on.
+ @syntax:
+ $mediaplayer.getShuffle()
+ @description:
+ Return the value of the Shuffle flag (1 for ON, 0 for OFF.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [cmd]mediaplayer.setShuffle[/cmd], [cmd]mediaplayer.setRepeat[/cmd],
+ [fnc]$mediaplayer.getRepeat[/fnc]
+*/
+
+MP_KVS_SIMPLE_BOOL_FUNCTION(getShuffle,getShuffle)
+
+/*
+ @doc: mediaplayer.getEqData
+ @type:
+ function
+ @title:
+ $mediaplayer.getEqData
+ @short:
+ Return the Equalizer Value.
+ @syntax:
+ $mediaplayer.getEqData(<item:integer>,<options:string>)
+ @description:
+ Return the value of the Eq <item>.[br]
+ if 'q' is given as an option, it runs in quiet mode.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [cmd]mediaplayer.setShuffle[/cmd], [cmd]mediaplayer.setRepeat[/cmd],
+ [fnc]$mediaplayer.getRepeat[/fnc]
+
+*/
+
+MP_KVS_FUNCTION(getEqData)
+{
+ int iValue;
+ QString szOptions;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("item",KVS_PT_INT,0,iValue)
+ KVSM_PARAMETER("options",KVS_PT_STRING,KVS_PF_OPTIONAL,szOptions)
+ KVSM_PARAMETERS_END(c)
+
+ MP_KVS_FAIL_ON_NO_INTERFACE
+
+ bool bQuiet = szOptions.find('q',false) != -1;
+
+ int ret = g_pMPInterface->getEqData(iValue);
+
+ if(!ret && !bQuiet)
+ {
+ c->warning(__tr2qs_ctx("The selected media player interface failed to execute the requested function","mediaplayer"));
+ QString tmp = __tr2qs_ctx("Last interface error: ","mediaplayer");
+ tmp += g_pMPInterface->lastError();
+ c->warning(tmp);
+ }
+
+ c->returnValue()->setInteger(ret);
+ return true;
+}
+
+/*
+ @doc: mediaplayer.setEqData
+ @type:
+ command
+ @title:
+ mediaplayer.setEqData
+ @short:
+ Return the Equalizer Value.
+ @syntax:
+ mediaplayer.setEqData [-q] <item:integer> <value:integer>
+ @description:
+ Set the value of the Eq <item> to <value>.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [fnc]$mediaplayer.getEqData[/fnc]
+*/
+
+MP_KVS_COMMAND(setEqData)
+{
+ int iPos;
+ int iValue;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("item",KVS_PT_INT,0,iPos)
+ KVSM_PARAMETER("value",KVS_PT_INT,0,iValue)
+ KVSM_PARAMETERS_END(c)
+
+ MP_KVS_FAIL_ON_NO_INTERFACE
+ if(!g_pMPInterface->setEqData(iPos,iValue))
+ {
+ if(!c->hasSwitch('q',"quiet"))
+ {
+ c->warning(__tr2qs_ctx("The selected media player interface failed to execute the requested function","mediaplayer"));
+ QString tmp = __tr2qs_ctx("Last interface error: ","mediaplayer");
+ tmp += g_pMPInterface->lastError();
+ c->warning(tmp);
+ }
+ }
+ return true;
+}
+
+/*
+ @doc: mediaplayer.localFile
+ @type:
+ function
+ @title:
+ $mediaplayer.localFile
+ @short:
+ Returns the name of the local file played by the media player
+ @syntax:
+ $mediaplayer.localFile()
+ @description:
+ Returns the name of the local file played by the currently
+ selected media player interface. This function returns
+ an empty string if the player is not playing, there is a communication
+ error or the media played is not a local file (e.g. a stream or another
+ kind of media).[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [fnc]$mediaplayer.mrl[/fnc], [cmd]mediaplayer.play[/cmd]
+*/
+
+MP_KVS_FUNCTION(localFile)
+{
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETERS_END(c)
+
+ MP_KVS_FAIL_ON_NO_INTERFACE
+ QString szRet = g_pMPInterface->mrl();
+ if(szRet.isEmpty())return true;
+ if(szRet.startsWith("file://",false))
+ {
+ szRet.remove(0,7);
+ c->returnValue()->setString(szRet);
+ }
+ return true;
+}
+
+MP_KVS_FUNCTION(amipEval)
+{
+ QString szMrl;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("player",KVS_PT_STRING,0,szMrl)
+ KVSM_PARAMETERS_END(c)
+
+ MP_KVS_FAIL_ON_NO_INTERFACE
+ QString szRet = g_pMPInterface->amipEval(szMrl);
+ if(szRet.isEmpty())return true;
+
+ c->returnValue()->setString(szRet);
+
+ return true;
+}
+
+/*
+ @doc: mediaplayer.status
+ @type:
+ function
+ @title:
+ $mediaplayer.status
+ @short:
+ Returns the status of the media player
+ @syntax:
+ $mediaplayer.status()
+ @description:
+ Returns the status if the currently selected media player: "playing",
+ "stopped", "paused" or "unknown".
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [cmd]mediaplayer.play[/cmd]
+*/
+
+MP_KVS_FUNCTION(status)
+{
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETERS_END(c)
+
+ MP_KVS_FAIL_ON_NO_INTERFACE
+ KviMediaPlayerInterface::PlayerStatus eStat = g_pMPInterface->status();
+ switch(eStat)
+ {
+ case KviMediaPlayerInterface::Stopped:
+ c->returnValue()->setString("stopped");
+ break;
+ case KviMediaPlayerInterface::Playing:
+ c->returnValue()->setString("playing");
+ break;
+ case KviMediaPlayerInterface::Paused:
+ c->returnValue()->setString("paused");
+ break;
+ default:
+ c->returnValue()->setString("unknown");
+ break;
+ }
+ return true;
+}
+
+
+/*
+ @doc: mediaplayer
+ @type:
+ module
+ @short:
+ Interface to various media players
+ @title:
+ The mediaplayer interface module
+ @body:
+ The mediaplayer module is an interface to various popular media players.
+ It allows controlling them remotely to a certain degree and retrieving
+ the informations about the currently played media (in order to implement the nice /playing
+ scripts). The module has replaced the old mediaplayer module which after
+ years of development had developed some design flaws and needed a complete rewrite.
+ At the moment of writing the supported players are: xmms (unix), audacious (unix), winamp (windows),
+ amarok (kde) and juk (kde). You choose the player interface by either setting
+ the option in the settings dialog, by manually setting [cmd]option[/cmd] stringPreferredMediaPlayer
+ or by running [cmd]mediaplayer.detect[/cmd] that will guess the media player interface for you.[br]
+ If you're going to use the Winamp media player then you must install the "gen_kvirc.dll" plugin
+ (included in the kvirc distribution) as a "general" winamp plugin.
+ This is achieved by simpy copying the file gen_kvirc.dll
+ to the winamp plugins directory and restarting winamp.[br]
+ [br]
+ The commands and functions exported by this module serve mainly for two
+ purposes: control the playback and get informations about the currently played media.
+ Playback control is achieved by the means of [cmd]mediaplayer.play[/cmd],
+ [cmd]mediaplayer.stop[/cmd], [cmd]mediaplayer.pause[/cmd], [cmd]mediaplayer.next[/cmd],
+ [cmd]mediaplayer.prev[/cmd] and [fnc]$mediaplayer.status()[/fnc]. The
+ informations about the currently played media can be retrieved with
+ [fnc]$mediaplayer.nowplaying()[/fnc] and [fnc]$mediaplayer.mrl()[/fnc].
+ Several other informative function are available as well but they are not
+ granted to work with all the supported media players or media types (e.g.
+ with winamp you can play video files that probably have no album, genre
+ or sampleRate information...).[br]
+ If you intend to write portable code, you should check the return value
+ of the functions like [fnc]$mediaplayer.artist()[/fnc], [fnc]$mediaplayer.title()[/fnc]
+ or [fnc]$mediaplayer.channels()[/fnc] and be ready to discard it when it
+ does not appear to be meaningful. The functions that are granted
+ to work are [fnc]$mediaplayer.nowplaying()[/fnc], [fnc]$mediaplayer.mrl()[/fnc]
+ and [fnc]$mediaplayer.localFile()[/fnc].
+*/
+
+/*
+ @doc: mediaplayer.setRepeat
+ @type:
+ command
+ @title:
+ $mediaplayer.setRepeat
+ @short:
+ Set the repeat flag.
+ @syntax:
+ mediaplayer.getRepeat [-q] <repeat:bool>
+ @description:
+ Set the Repeat flag to "repeat" (1 for ON, 0 for OFF.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [fnc]$mediaplayer.getRepeat[/fnc], [cmd]mediaplayer.setShuffle[/cmd],
+ [fnc]$mediaplayer.getShuffle[/fnc]
+*/
+
+MP_KVS_COMMAND(setRepeat)
+{
+ bool bVal;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("repeat",KVS_PT_BOOL,0,bVal)
+ KVSM_PARAMETERS_END(c)
+
+ MP_KVS_FAIL_ON_NO_INTERFACE
+ if(!g_pMPInterface->setRepeat(bVal))
+ {
+ if(!c->hasSwitch('q',"quiet"))
+ {
+ c->warning(__tr2qs_ctx("The selected media player interface failed to execute the requested function","mediaplayer"));
+ QString tmp = __tr2qs_ctx("Last interface error: ","mediaplayer");
+ tmp += g_pMPInterface->lastError();
+ c->warning(tmp);
+ }
+ }
+ return true;
+}
+
+
+/*
+ @doc: mediaplayer.setShuffle
+ @type:
+ command
+ @title:
+ $mediaplayer.setShuffle
+ @short:
+ Set the repeat flag.
+ @syntax:
+ mediaplayer.getShuffle [-q] <shuffle:bool>
+ @description:
+ Set the Shuffle flag to "shuffle" (1 for ON, 0 for OFF.[br]
+ Take a look at the [module:mediaplayer]mediaplayer module documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:mediaplayer]media player module documentation[/module],
+ [fnc]$mediaplayer.getShuffle[/fnc], [cmd]mediaplayer.setRepeat[/cmd],
+ [fnc]$mediaplayer.getRepeat[/fnc]
+*/
+
+MP_KVS_COMMAND(setShuffle)
+{
+ bool bVal;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("shuffle",KVS_PT_BOOL,0,bVal)
+ KVSM_PARAMETERS_END(c)
+
+ MP_KVS_FAIL_ON_NO_INTERFACE
+ if(!g_pMPInterface->setShuffle(bVal))
+ {
+ if(!c->hasSwitch('q',"quiet"))
+ {
+ c->warning(__tr2qs_ctx("The selected media player interface failed to execute the requested function","mediaplayer"));
+ QString tmp = __tr2qs_ctx("Last interface error: ","mediaplayer");
+ tmp += g_pMPInterface->lastError();
+ c->warning(tmp);
+ }
+ }
+ return true;
+}
+
+static bool mediaplayer_module_init( KviModule * m )
+{
+ g_pDescriptorList = new KviPointerList<KviMediaPlayerInterfaceDescriptor>;
+ g_pDescriptorList->setAutoDelete(true);
+
+#ifndef COMPILE_ON_WINDOWS
+ g_pDescriptorList->append(MP_CREATE_DESCRIPTOR(KviXmmsInterface));
+ g_pDescriptorList->append(MP_CREATE_DESCRIPTOR(KviAudaciousInterface));
+#endif
+
+#ifdef COMPILE_ON_WINDOWS
+ g_pDescriptorList->append(MP_CREATE_DESCRIPTOR(KviAmipInterface));
+ g_pDescriptorList->append(MP_CREATE_DESCRIPTOR(KviWinampInterface));
+#endif
+
+#ifdef COMPILE_KDE_SUPPORT
+ g_pDescriptorList->append(MP_CREATE_DESCRIPTOR(KviAmarokInterface));
+ g_pDescriptorList->append(MP_CREATE_DESCRIPTOR(KviJukInterface));
+#endif
+
+ g_pMPInterface = 0;
+
+ if(KVI_OPTION_STRING(KviOption_stringPreferredMediaPlayer) == "auto")
+ {
+ g_pMPInterface = auto_detect_player();
+ } else {
+ for(KviMediaPlayerInterfaceDescriptor * d = g_pDescriptorList->first();d;d = g_pDescriptorList->next())
+ {
+ if(d->name() == KVI_OPTION_STRING(KviOption_stringPreferredMediaPlayer))
+ {
+ g_pMPInterface = d->instance();
+ }
+ }
+ }
+
+ // check for "auto" interface too!
+
+
+ #define MP_KVS_REGCMD(__name,__stringname) KVSM_REGISTER_SIMPLE_COMMAND(m,__stringname,mediaplayer_kvs_cmd_ ## __name)
+ #define MP_KVS_REGFNC(__name,__stringname) KVSM_REGISTER_FUNCTION(m,__stringname,mediaplayer_kvs_fnc_ ## __name)
+
+ MP_KVS_REGCMD(play,"play");
+ MP_KVS_REGCMD(stop,"stop");
+ MP_KVS_REGCMD(next,"next");
+ MP_KVS_REGCMD(prev,"prev");
+ MP_KVS_REGCMD(quit,"quit");
+ MP_KVS_REGCMD(pause,"pause");
+ MP_KVS_REGCMD(detect,"detect");
+ MP_KVS_REGCMD(playMrl,"playMrl");
+ MP_KVS_REGCMD(amipExec,"amipExec");
+ MP_KVS_REGCMD(hide,"hide");
+ MP_KVS_REGCMD(show,"show");
+ MP_KVS_REGCMD(minimize,"minimize");
+ MP_KVS_REGCMD(jumpTo,"jumpTo");
+ MP_KVS_REGCMD(setPlayer,"setPlayer");
+ MP_KVS_REGCMD(setVol,"setVol");
+ MP_KVS_REGCMD(mute,"mute");
+ MP_KVS_REGCMD(setRepeat,"setRepeat");
+ MP_KVS_REGCMD(setShuffle,"setShuffle");
+ MP_KVS_REGCMD(setPlayListPos,"setPlayListPos");
+ MP_KVS_REGCMD(setEqData,"setEqData");
+
+ MP_KVS_REGFNC(nowPlaying,"nowPlaying");
+ MP_KVS_REGFNC(mrl,"mrl");
+ MP_KVS_REGFNC(title,"title");
+ MP_KVS_REGFNC(artist,"artist");
+ MP_KVS_REGFNC(genre,"genre");
+ MP_KVS_REGFNC(year,"year");
+ MP_KVS_REGFNC(comment,"comment");
+ MP_KVS_REGFNC(album,"album");
+ MP_KVS_REGFNC(mediaType,"mediaType");
+ MP_KVS_REGFNC(bitRate,"bitRate");
+ MP_KVS_REGFNC(sampleRate,"sampleRate");
+ MP_KVS_REGFNC(length,"length");
+ MP_KVS_REGFNC(position,"position");
+ MP_KVS_REGFNC(status,"status");
+ MP_KVS_REGFNC(player,"player");
+ MP_KVS_REGFNC(playerList,"playerList");
+ MP_KVS_REGFNC(localFile,"localFile");
+ MP_KVS_REGFNC(amipEval,"amipEval");
+ MP_KVS_REGFNC(channels,"channels");
+ MP_KVS_REGFNC(getListLength,"getListLength");
+ MP_KVS_REGFNC(getPlayListPos,"getPlayListPos");
+ MP_KVS_REGFNC(getEqData,"getEqData");
+ MP_KVS_REGFNC(getRepeat,"getRepeat");
+ MP_KVS_REGFNC(getShuffle,"getShuffle");
+ MP_KVS_REGFNC(getVol,"getVol");
+/*
+ // Crissi
+ m->registerFunction( "getmp3tag_date", mediaplayer_fnc_getmp3tag_date );
+ m->registerFunction( "getmp3tag_version", mediaplayer_fnc_getmp3tag_version );
+ m->registerFunction( "getmp3tag_layer", mediaplayer_fnc_getmp3tag_layer );
+ m->registerFunction( "getmp3tag_crc", mediaplayer_fnc_getmp3tag_crc );
+ m->registerFunction( "getmp3tag_copyright", mediaplayer_fnc_getmp3tag_copyright );
+ m->registerFunction( "getmp3tag_original", mediaplayer_fnc_getmp3tag_original );
+ m->registerFunction( "getmp3tag_emphasis", mediaplayer_fnc_getmp3tag_emphasis );
+ m->registerFunction( "getmp3tag_tracknumber", mediaplayer_fnc_getmp3tag_tracknumber );
+*/
+ return true;
+}
+
+static bool mediaplayer_module_cleanup( KviModule * m )
+{
+ delete g_pDescriptorList;
+ return true;
+}
+
+static bool mediaplayer_module_can_unload( KviModule * m )
+{
+ return true;
+}
+
+static bool mediaplayer_module_ctrl(KviModule * m,const char * operation,void * param)
+{
+ if(kvi_strEqualCI(operation,"getAvailableMediaPlayers"))
+ {
+ // we expect param to be a pointer to QStringList
+ QStringList * l = (QStringList *)param;
+ for(KviMediaPlayerInterfaceDescriptor * d = g_pDescriptorList->first();d;d = g_pDescriptorList->next())
+ {
+ l->append(d->name());
+ }
+ return true;
+ }
+ if(kvi_strEqualCI(operation,"detectMediaPlayer"))
+ {
+ auto_detect_player(0);
+ return true;
+ }
+ return false;
+}
+
+
+
+KVIRC_MODULE(
+ "mediaplayer",
+ "1.1.0",
+ "Copyright (C) 2001-2007 Szymon Stefanek (pragma at kvirc dot net), " \
+ "Christoph Thielecke (crissi99 at gmx dot de)," \
+ "Tonino Imbesi (grifisx at barmes dot org)," \
+ "Alessandro Carbone (noldor at barmes dot org)," \
+ "Alexey Uzhva (wizard at opendoor dot ru), " \
+ "Serge Baranov (sbaranov at gmail dot com)",
+ "Interface to various media players",
+ mediaplayer_module_init,
+ mediaplayer_module_can_unload,
+ mediaplayer_module_ctrl,
+ mediaplayer_module_cleanup
+)
diff --git a/src/modules/mediaplayer/mp_amarokinterface.cpp b/src/modules/mediaplayer/mp_amarokinterface.cpp
new file mode 100644
index 00000000..5c941d4f
--- /dev/null
+++ b/src/modules/mediaplayer/mp_amarokinterface.cpp
@@ -0,0 +1,189 @@
+//=============================================================================
+//
+// File : mp_amarokinterface.cpp
+// Created on Sun 27 Mar 2005 16:55:09 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "mp_amarokinterface.h"
+
+#ifdef COMPILE_KDE_SUPPORT
+
+#include "kvi_app.h"
+
+#include "dcopclient.h"
+#include "kurl.h"
+
+#include <qdatastream.h>
+#include <qvaluelist.h>
+
+#include "kvi_locale.h"
+
+MP_IMPLEMENT_DESCRIPTOR(
+ KviAmarokInterface,
+ "amarok",
+ __tr2qs_ctx(
+ "An interface to the AmaroK KDE media player."
+ ,
+ "mediaplayer"
+ )
+)
+
+
+KviAmarokInterface::KviAmarokInterface()
+ : KviDCOPHelper(true, "amarok")
+{
+}
+
+KviAmarokInterface::~KviAmarokInterface()
+{
+}
+
+int KviAmarokInterface::detect(bool bStart){ return detectApp("amarok",bStart,95,99); }
+
+bool KviAmarokInterface::prev(){ return voidRetVoidDCOPCall("player","prev()"); }
+bool KviAmarokInterface::next(){ return voidRetVoidDCOPCall("player","next()"); }
+bool KviAmarokInterface::play(){ return voidRetVoidDCOPCall("player","play()"); }
+bool KviAmarokInterface::stop(){ return voidRetVoidDCOPCall("player","stop()"); }
+bool KviAmarokInterface::pause(){ return voidRetVoidDCOPCall("player","pause()"); }
+bool KviAmarokInterface::mute(){ return voidRetVoidDCOPCall("player","mute()"); }
+bool KviAmarokInterface::quit(){ return voidRetVoidDCOPCall("MainApplication-Interface","quit()"); }
+
+bool KviAmarokInterface::jumpTo(kvs_int_t &iPos)
+{
+ return voidRetIntDCOPCall("player","seek(int)",iPos/1000);
+}
+bool KviAmarokInterface::setVol(kvs_int_t &iVol)
+{
+ return voidRetIntDCOPCall("player","setVolume(int)",100*iVol/255);
+}
+
+#define MP_DCOP_STRING_CALL(_fncname,_iface,_fnc) \
+QString KviAmarokInterface::_fncname() \
+{ \
+ QString ret; \
+ if(!stringRetVoidDCOPCall(_iface,_fnc,ret))return false; \
+ return ret; \
+}
+
+MP_DCOP_STRING_CALL(nowPlaying,"player","nowPlaying()")
+MP_DCOP_STRING_CALL(artist,"player","artist()")
+MP_DCOP_STRING_CALL(title,"player","title()")
+MP_DCOP_STRING_CALL(genre,"player","genre()")
+MP_DCOP_STRING_CALL(year,"player","year()")
+MP_DCOP_STRING_CALL(comment,"player","comment()")
+MP_DCOP_STRING_CALL(album,"player","album()")
+
+int KviAmarokInterface::getVol()
+{
+ int ret;
+ if(!intRetVoidDCOPCall("player","getVolume()",ret))return false;
+ return ret * 255 / 100;
+}
+
+int KviAmarokInterface::sampleRate()
+{
+ int ret;
+ if(!intRetVoidDCOPCall("player","sampleRate()",ret))return false;
+ return ret;
+}
+
+int KviAmarokInterface::length()
+{
+ int ret;
+ if(!intRetVoidDCOPCall("player","trackTotalTime()",ret))return false;
+ return ret * 1000;
+}
+
+int KviAmarokInterface::position()
+{
+ int ret;
+ if(!intRetVoidDCOPCall("player","trackCurrentTime()",ret))return false;
+ return ret * 1000;
+}
+
+bool KviAmarokInterface::getRepeat()
+{
+ bool ret;
+ if(!boolRetVoidDCOPCall("player","repeatTrackStatus()",ret))return false;
+ return ret;
+}
+
+bool KviAmarokInterface::getShuffle()
+{
+ bool ret;
+ if(!boolRetVoidDCOPCall("player","randomModeStatus()",ret))return false;
+ return ret;
+}
+
+bool KviAmarokInterface::setRepeat(bool &bVal)
+{
+ return voidRetBoolDCOPCall("player","enableRepeatTrack(bool)",bVal);
+}
+
+bool KviAmarokInterface::setShuffle(bool &bVal)
+{
+ return voidRetBoolDCOPCall("player","enableRandomMode(bool)",bVal);
+}
+
+KviMediaPlayerInterface::PlayerStatus KviAmarokInterface::status()
+{
+ int ret;
+ if(!intRetVoidDCOPCall("player","status()",ret))return KviMediaPlayerInterface::Unknown;
+ switch(ret)
+ {
+ case 0:
+ return KviMediaPlayerInterface::Stopped;
+ break;
+ case 1:
+ return KviMediaPlayerInterface::Paused;
+ break;
+ case 2:
+ return KviMediaPlayerInterface::Playing;
+ break;
+ default:
+ return KviMediaPlayerInterface::Unknown;
+ break;
+ }
+ return KviMediaPlayerInterface::Unknown;
+}
+
+QString KviAmarokInterface::mrl()
+{
+ QString ret;
+ if(!stringRetVoidDCOPCall("player","encodedURL()",ret))return false;
+ KURL url(ret);
+ return url.prettyURL();
+}
+
+bool KviAmarokInterface::playMrl(const QString &mrl)
+{
+ QString title;
+ QByteArray data, replyData;
+ KviQCString replyType;
+ QDataStream arg(data,IO_WriteOnly);
+ arg << KURL(mrl);
+ if(!g_pApp->dcopClient()->call(m_szAppId,"playlist","playMedia(KURL)",data,replyType,replyData))
+ return false;
+ return true;
+}
+
+
+#endif //COMPILE_KDE_SUPPORT
diff --git a/src/modules/mediaplayer/mp_amarokinterface.h b/src/modules/mediaplayer/mp_amarokinterface.h
new file mode 100644
index 00000000..ac856219
--- /dev/null
+++ b/src/modules/mediaplayer/mp_amarokinterface.h
@@ -0,0 +1,76 @@
+#ifndef _MP_AMAROKINTERFACE_H_
+#define _MP_AMAROKINTERFACE_H_
+//=============================================================================
+//
+// File : mp_amarokinterface.h
+// Created on Sun 27 Mar 2005 16:55:09 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+
+#ifdef COMPILE_KDE_SUPPORT
+
+ #include "kvi_dcophelper.h"
+ #include "mp_interface.h"
+
+ class KviAmarokInterface : public KviMediaPlayerInterface, private KviDCOPHelper
+ {
+ public:
+ KviAmarokInterface();
+ ~KviAmarokInterface();
+ public:
+ virtual int detect(bool bStart);
+ virtual bool prev();
+ virtual bool next();
+ virtual bool play();
+ virtual bool stop();
+ virtual bool pause();
+ virtual bool jumpTo(kvs_int_t &iPos);
+ virtual bool setVol(kvs_int_t &iVol);
+ virtual bool mute();
+ virtual int getVol();
+ virtual bool quit();
+ virtual QString nowPlaying();
+ virtual QString mrl();
+ virtual QString title();
+ virtual QString artist();
+ virtual QString genre();
+ virtual QString comment();
+ virtual QString year();
+ virtual QString album();
+ virtual int position();
+ virtual int length();
+ //virtual int bitRate(); unsupported
+ virtual int sampleRate();
+ virtual bool playMrl(const QString &mrl);
+ virtual KviMediaPlayerInterface::PlayerStatus status();
+ virtual bool getRepeat();
+ virtual bool getShuffle();
+ virtual bool setRepeat(bool &bVal);
+ virtual bool setShuffle(bool &bVal);
+ };
+
+ MP_DECLARE_DESCRIPTOR(KviAmarokInterface)
+
+#endif //COMPILE_KDE_SUPPORT
+
+#endif //!_MP_AMAROKINTERFACE_H_
diff --git a/src/modules/mediaplayer/mp_amipinterface.cpp b/src/modules/mediaplayer/mp_amipinterface.cpp
new file mode 100644
index 00000000..3a7094bc
--- /dev/null
+++ b/src/modules/mediaplayer/mp_amipinterface.cpp
@@ -0,0 +1,400 @@
+#include "mp_amipinterface.h"
+#include "kvi_options.h"
+
+#ifdef COMPILE_ON_WINDOWS
+
+#include <qtextcodec.h>
+
+#include "kvi_locale.h"
+#include "kvi_module.h"
+
+#include <windows.h>
+
+enum ac_StartMode
+{
+ AC_START_ALL = 0,
+ AC_START_CLIENT,
+ AC_START_SERVER,
+ AC_START_NONE
+};
+
+enum ac_ErrorCode
+{
+ AC_ERR_NOERROR = 0,
+ AC_ERR_CLIENTISNULL,
+ AC_ERR_EXCEPTION,
+ AC_ERR_CONNECTIONFAILED,
+ AC_ERR_SERVERNOTRUNNING
+};
+
+#define AC_BUFFER_SIZE 2048
+
+static HINSTANCE amip_dll = NULL;
+
+#define MP_AC_DYNPTR(__rettype,__func,__args) \
+ typedef __rettype (CALLBACK* lp_##__func)(__args); \
+ lp_##__func __func
+
+#define MP_AC_FUNC(__func) \
+ __func = (lp_##__func)GetProcAddress(amip_dll,#__func); \
+ if(!__func) { \
+ FreeLibrary(amip_dll); \
+ return false; \
+ }
+
+#define COMMA() ,
+
+MP_AC_DYNPTR(void, ac_init, int mode);
+MP_AC_DYNPTR(void, ac_uninit, void);
+MP_AC_DYNPTR(void, ac_getDestHost, char *out);
+MP_AC_DYNPTR(int, ac_getDestPort, void);
+MP_AC_DYNPTR(bool, ac_pingServer, const char *host COMMA() int port COMMA() int timeout);
+MP_AC_DYNPTR(int, ac_exec, const char *cmd);
+MP_AC_DYNPTR(int, ac_eval, const char *cmd COMMA() char *result);
+
+
+static bool loadAmipDll()
+{
+ amip_dll = LoadLibrary("ac.dll");
+ if (!amip_dll) return false;
+
+ MP_AC_FUNC(ac_init);
+ MP_AC_FUNC(ac_uninit);
+ MP_AC_FUNC(ac_getDestHost);
+ MP_AC_FUNC(ac_getDestPort);
+ MP_AC_FUNC(ac_pingServer);
+ MP_AC_FUNC(ac_eval);
+ MP_AC_FUNC(ac_exec);
+
+ return true;
+};
+
+static QTextCodec * mediaplayer_get_codec()
+{
+ QTextCodec * c= QTextCodec::codecForName(KVI_OPTION_STRING(KviOption_stringWinampTextEncoding));
+ if(!c)c = QTextCodec::codecForLocale();
+ return c;
+}
+
+MP_IMPLEMENT_DESCRIPTOR(
+ KviAmipInterface,
+ "amip",
+ __tr2qs_ctx(
+ "An interface to the AMIP plug-in.\n" \
+ "You can download it from http://amip.tools-for.net.\n" \
+ "To use this interface you must " \
+ "install AMIP plug-in for your player."
+ ,
+ "mediaplayer"
+ )
+)
+
+
+
+KviAmipInterface::KviAmipInterface()
+: KviMediaPlayerInterface()
+{
+ if(!amip_dll) {
+ bool res = loadAmipDll();
+ if(!res) {
+ amip_dll = NULL;
+ return;
+ }
+ ac_init(AC_START_CLIENT);
+ }
+}
+
+KviAmipInterface::~KviAmipInterface()
+{
+ if(!amip_dll) return;
+ ac_uninit();
+ FreeLibrary(amip_dll);
+ amip_dll = NULL;
+}
+
+
+int KviAmipInterface::detect(bool bStart)
+{
+ if(!amip_dll) return 0;
+ char host[AC_BUFFER_SIZE];
+ ac_getDestHost(host);
+ if(ac_pingServer(host, ac_getDestPort(), 5000)) return 99;
+ return 1;
+}
+
+#define MP_AMIP_COMMAND(__cmdname,__acmd) \
+ bool KviAmipInterface::__cmdname() \
+ { \
+ return (ac_exec(__acmd) == AC_ERR_NOERROR); \
+ }
+
+MP_AMIP_COMMAND(play,"control play")
+MP_AMIP_COMMAND(stop,"control stop")
+MP_AMIP_COMMAND(next,"control >")
+MP_AMIP_COMMAND(prev,"control <")
+MP_AMIP_COMMAND(pause,"control pause")
+MP_AMIP_COMMAND(quit,"control exit")
+
+// helper function for evaluating variables returning integers
+int eval_int(const char *var)
+{
+ if(!amip_dll) return -1;
+ char buff[AC_BUFFER_SIZE];
+ int res = -1;
+ if (AC_ERR_NOERROR == ac_eval(var, buff)) {
+ res = atoi(buff);
+ }
+ return res;
+}
+
+QString eval_str(const char *var)
+{
+ QString res;
+ if(!amip_dll) return res;
+ char buff[AC_BUFFER_SIZE];
+ if (AC_ERR_NOERROR == ac_eval(var, buff)) {
+ res.append(buff);
+ }
+ return res;
+}
+
+int KviAmipInterface::length()
+{
+ return eval_int("var_sl") * 1000;
+}
+
+int KviAmipInterface::position()
+{
+ return eval_int("var_psec") * 1000;
+}
+
+int KviAmipInterface::bitRate()
+{
+ return eval_int("var_br");
+}
+
+int KviAmipInterface::sampleRate()
+{
+ return eval_int("var_sr");
+}
+
+int KviAmipInterface::channels()
+{
+ int ret = -1;
+ if(eval_str("var_typ").startsWith("Stereo")) {
+ ret = 2;
+ } else if(eval_str("var_typ").startsWith("Mono")) {
+ ret = 1;
+ }
+ return ret;
+}
+
+KviMediaPlayerInterface::PlayerStatus KviAmipInterface::status()
+{
+ int ret = eval_int("var_stat");
+ switch(ret)
+ {
+ case 0:
+ return KviMediaPlayerInterface::Stopped;
+ break;
+ case 3:
+ return KviMediaPlayerInterface::Paused;
+ break;
+ case 1:
+ return KviMediaPlayerInterface::Playing;
+ break;
+ default:
+ return KviMediaPlayerInterface::Unknown;
+ break;
+ }
+ return KviMediaPlayerInterface::Unknown;
+}
+
+QString KviAmipInterface::mrl()
+{
+ QString ret;
+ QString fn = eval_str("var_fn");
+ QTextCodec *c=mediaplayer_get_codec();
+ if (c) ret = c->toUnicode(fn);
+ else ret=fn;
+ if(!ret.startsWith("http://",false))
+ ret.prepend("file://");
+
+ return ret;
+}
+
+QString getAmipString(const char * var) {
+ QString ret;
+ QString s = eval_str(var);
+ QTextCodec *c=mediaplayer_get_codec();
+ if (c) ret = c->toUnicode(s);
+ else ret=s;
+ return ret;
+}
+
+QString KviAmipInterface::nowPlaying()
+{
+ return getAmipString("var_s");
+}
+
+QString KviAmipInterface::artist()
+{
+ return getAmipString("var_1");
+}
+
+QString KviAmipInterface::title()
+{
+ return getAmipString("var_2");
+}
+
+QString KviAmipInterface::album()
+{
+ return getAmipString("var_4");
+}
+
+QString KviAmipInterface::year()
+{
+ return getAmipString("var_5");
+}
+
+QString KviAmipInterface::comment()
+{
+ return getAmipString("var_6");
+}
+
+QString KviAmipInterface::genre()
+{
+ return getAmipString("var_7");
+}
+
+bool KviAmipInterface::setVol(kvs_int_t &iVol)
+{
+ if(!amip_dll) return false;
+ char volcmd[AC_BUFFER_SIZE];
+ sprintf(volcmd, "control vol %d", iVol);
+ return (ac_exec(volcmd) == AC_ERR_NOERROR);
+}
+
+int KviAmipInterface::getVol()
+{
+ return eval_int("var_vol");
+}
+
+bool KviAmipInterface::jumpTo(kvs_int_t &iPos)
+{
+ if(!amip_dll) return false;
+ char jmpcmd[AC_BUFFER_SIZE];
+ sprintf(jmpcmd, "jumptotime %d", iPos/1000);
+ return (ac_exec(jmpcmd) == AC_ERR_NOERROR);
+}
+bool KviAmipInterface::hide()
+{
+ HWND hWinamp = (HWND)eval_int("var_phwnd");
+ if(hWinamp && hWinamp != (HWND)-1)
+ {
+ ShowWindow(hWinamp, SW_HIDE);
+ return true;
+ }
+ return false;
+}
+
+bool KviAmipInterface::show()
+{
+ HWND hWinamp = (HWND)eval_int("var_phwnd");
+ if(hWinamp && hWinamp != (HWND)-1)
+ {
+ ShowWindow(hWinamp, SW_SHOW);
+ return true;
+ }
+ return false;
+}
+
+bool KviAmipInterface::minimize()
+{
+ if(!amip_dll) return false;
+ return (ac_exec("control mimimize") == AC_ERR_NOERROR);
+}
+
+bool KviAmipInterface::setPlayListPos(kvs_int_t &iPos)
+{
+ if(!amip_dll) return false;
+ char jmpcmd[AC_BUFFER_SIZE];
+ sprintf(jmpcmd, "setplpos %d", iPos + 1);
+ return (ac_exec(jmpcmd) == AC_ERR_NOERROR);
+}
+
+int KviAmipInterface::getPlayListPos()
+{
+ return eval_int("var_pos");
+}
+
+int KviAmipInterface::getListLength()
+{
+ return eval_int("var_ll");
+}
+
+bool KviAmipInterface::getRepeat()
+{
+ return eval_str("var_repeat").startsWith("on");
+}
+
+bool KviAmipInterface::getShuffle()
+{
+ return eval_str("var_shuffle").startsWith("on");
+}
+
+bool KviAmipInterface::setShuffle(bool &bVal)
+{
+ if(!amip_dll) return false;
+ bool res;
+ if (bVal)
+ {
+ res = (ac_exec("setshuffle on") == AC_ERR_NOERROR);
+ }
+ else
+ {
+ res = (ac_exec("setshuffle off") == AC_ERR_NOERROR);
+ }
+ return res;
+}
+
+bool KviAmipInterface::setRepeat(bool &bVal)
+{
+ if(!amip_dll) return false;
+ bool res;
+ if (bVal)
+ {
+ res = (ac_exec("setrepeat on") == AC_ERR_NOERROR);
+ }
+ else
+ {
+ res = (ac_exec("setrepeat off") == AC_ERR_NOERROR);
+ }
+ return res;
+}
+
+bool KviAmipInterface::amipExec(const QString &cmd)
+{
+ if(!amip_dll) return false;
+ QTextCodec *c=mediaplayer_get_codec();
+ KviStr szCmd = c ? c->fromUnicode(cmd) : cmd.utf8();
+ return (ac_exec(szCmd) == AC_ERR_NOERROR);
+}
+
+QString KviAmipInterface::amipEval(const QString &cmd)
+{
+ QString ret;
+ if(!amip_dll) return ret;
+ QTextCodec *c=mediaplayer_get_codec();
+ KviStr szCmd = c ? c->fromUnicode(cmd) : cmd.utf8();
+ char buff[AC_BUFFER_SIZE];
+ if((ac_eval(szCmd, buff) == AC_ERR_NOERROR)) {
+ QString s = buff;
+ QTextCodec *c=mediaplayer_get_codec();
+ if (c) ret = c->toUnicode(s);
+ else ret=s;
+ }
+ return ret;
+}
+
+#endif //COMPILE_ON_WINDOWS
diff --git a/src/modules/mediaplayer/mp_amipinterface.h b/src/modules/mediaplayer/mp_amipinterface.h
new file mode 100644
index 00000000..22bbf9d5
--- /dev/null
+++ b/src/modules/mediaplayer/mp_amipinterface.h
@@ -0,0 +1,58 @@
+#ifndef _MP_AMIPINTERFACE_H_
+#define _MP_AMIPINTERFACE_H_
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_ON_WINDOWS
+
+ #include "mp_interface.h"
+
+ class KviAmipInterface : public KviMediaPlayerInterface
+ {
+ public:
+ KviAmipInterface();
+ ~KviAmipInterface();
+ public:
+ virtual int detect(bool bStart);
+ virtual bool prev();
+ virtual bool next();
+ virtual bool play();
+ virtual bool stop();
+ virtual bool pause();
+ virtual bool quit();
+ virtual QString nowPlaying();
+ virtual QString artist();
+ virtual QString title();
+ virtual QString genre();
+ virtual QString comment();
+ virtual QString album();
+ virtual QString year();
+ virtual QString mrl();
+ virtual int position();
+ virtual int length();
+ virtual bool setVol(kvs_int_t &iVol);
+ virtual int getVol();
+ virtual bool jumpTo(kvs_int_t &iPos);
+ virtual int sampleRate();
+ virtual int bitRate();
+ virtual int channels();
+ virtual bool hide();
+ virtual bool show();
+ virtual bool minimize();
+ virtual int getPlayListPos();
+ virtual bool setPlayListPos(kvs_int_t &iPos);
+ virtual int getListLength();
+ virtual bool getRepeat();
+ virtual bool getShuffle();
+ virtual bool setRepeat(bool &bVal);
+ virtual bool setShuffle(bool &bVal);
+ virtual bool amipExec(const QString &cmd);
+ virtual QString amipEval(const QString &cmd);
+ virtual KviMediaPlayerInterface::PlayerStatus status();
+ };
+
+ MP_DECLARE_DESCRIPTOR(KviAmipInterface)
+
+#endif //COMPILE_ON_WINDOWS
+
+#endif //!_MP_AMIPINTERFACE_H_
diff --git a/src/modules/mediaplayer/mp_dcopinterface.cpp b/src/modules/mediaplayer/mp_dcopinterface.cpp
new file mode 100644
index 00000000..7c86e420
--- /dev/null
+++ b/src/modules/mediaplayer/mp_dcopinterface.cpp
@@ -0,0 +1,224 @@
+//=============================================================================
+//
+// File : mp_dcopinterface.cpp
+// Created on Sun 27 Mar 2005 16:56:21 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "mp_dcopinterface.h"
+
+#ifdef COMPILE_KDE_SUPPORT
+
+#include "dcopclient.h"
+
+#include <qdatastream.h>
+#include <qvaluelist.h>
+
+#include "kvi_app.h"
+#include "kvi_thread.h"
+
+KviMediaPlayerDCOPInterface::KviMediaPlayerDCOPInterface(const KviQCString &szAppId)
+: KviMediaPlayerInterface()
+{
+ m_szAppId = szAppId;
+}
+
+KviMediaPlayerDCOPInterface::~KviMediaPlayerDCOPInterface()
+{
+}
+
+bool KviMediaPlayerDCOPInterface::ensureAppRunning(const QString &szApp)
+{
+ if(findRunningApp(m_szAppId))return true;
+ return startApp(m_szAppId,400);
+}
+
+
+bool KviMediaPlayerDCOPInterface::simpleDCOPCall(const KviQCString &szObj,const KviQCString &szFunc)
+{
+ if(!ensureAppRunning(m_szAppId))return false;
+ QByteArray data;
+ return g_pApp->dcopClient()->send(m_szAppId,szObj,szFunc,data);
+}
+
+bool KviMediaPlayerDCOPInterface::boolDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,bool bVal)
+{
+ if(!ensureAppRunning(m_szAppId))return false;
+ QByteArray data;
+ QDataStream arg(data, IO_WriteOnly);
+ arg << bVal;
+ return g_pApp->dcopClient()->send(m_szAppId,szObj,szFunc,data);
+}
+
+bool KviMediaPlayerDCOPInterface::intDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,int iVal)
+{
+ if(!ensureAppRunning(m_szAppId))return false;
+ QByteArray data;
+ QDataStream arg(data, IO_WriteOnly);
+ arg << iVal;
+ return g_pApp->dcopClient()->send(m_szAppId,szObj,szFunc,data);
+}
+
+bool KviMediaPlayerDCOPInterface::floatDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,float fVal)
+{
+ if(!ensureAppRunning(m_szAppId))return false;
+ QByteArray data;
+ QDataStream arg(data, IO_WriteOnly);
+ arg << fVal;
+ return g_pApp->dcopClient()->send(m_szAppId,szObj,szFunc,data);
+}
+
+bool KviMediaPlayerDCOPInterface::stringDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,QString szVal)
+{
+ if(!ensureAppRunning(m_szAppId))return false;
+ QByteArray data;
+ QDataStream arg(data, IO_WriteOnly);
+ arg << szVal;
+ return g_pApp->dcopClient()->send(m_szAppId,szObj,szFunc,data);
+}
+
+bool KviMediaPlayerDCOPInterface::stringRetDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,QString &ret)
+{
+ if(!ensureAppRunning(m_szAppId))return false;
+ QString title;
+ QByteArray data, replyData;
+ KviQCString replyType;
+ if(!g_pApp->dcopClient()->call(m_szAppId,szObj,szFunc,data,replyType,replyData))
+ return false;
+ QDataStream reply( replyData, IO_ReadOnly );
+ if(replyType == "QString")
+ {
+ reply >> ret;
+ return true;
+ }
+ return false;
+}
+
+bool KviMediaPlayerDCOPInterface::intRetDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,int &ret)
+{
+ if(!ensureAppRunning(m_szAppId))return false;
+ QString title;
+ QByteArray data, replyData;
+ KviQCString replyType;
+ if(!g_pApp->dcopClient()->call(m_szAppId,szObj,szFunc,data,replyType,replyData))
+ return false;
+ QDataStream reply( replyData, IO_ReadOnly );
+ if(replyType == "int")
+ {
+ reply >> ret;
+ return true;
+ }
+ return false;
+}
+
+bool KviMediaPlayerDCOPInterface::boolRetDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,bool &ret)
+{
+ if(!ensureAppRunning(m_szAppId))return false;
+ QString title;
+ QByteArray data, replyData;
+ KviQCString replyType;
+ if(!g_pApp->dcopClient()->call(m_szAppId,szObj,szFunc,data,replyType,replyData))
+ return false;
+ QDataStream reply( replyData, IO_ReadOnly );
+ if(replyType == "bool")
+ {
+ reply >> ret;
+ return true;
+ }
+ return false;
+}
+
+
+bool KviMediaPlayerDCOPInterface::findRunningApp(const QString &szApp)
+{
+ QValueList<KviQCString> allApps = g_pApp->dcopClient() ->registeredApplications();
+ QValueList<KviQCString>::iterator iterator;
+ KviQCString sz = szApp.local8Bit();
+ for(iterator = allApps.begin();iterator != allApps.end();iterator++)
+ {
+ if(*iterator == sz)return true;
+ }
+ return false;
+}
+
+int KviMediaPlayerDCOPInterface::detectApp(const QString &szApp,bool bStart,int iScoreWhenFound,int iScoreWhenStarted)
+{
+ // lookup the amarok interface
+ if(!g_pApp->dcopClient())return 0;
+ if(findRunningApp(szApp))return 95; // found a running amarok, no need to run further
+
+ // no amarok app found
+ if(bStart)
+ {
+ // try to start it
+ if(!startApp(szApp,5000))return 10; // very low possibility
+ return findRunningApp(szApp) ? 99 : 0; // try to find it again
+ }
+
+ return 30; // it still might be installed on the system but we're just unable to start it...
+}
+
+
+bool KviMediaPlayerDCOPInterface::startApp(const QString &szApp,int iWaitMSecs)
+{
+ // we could use KApplication::startServiceByDesktopName here
+ // but we want to be able to wait a defined amount of time
+ QStringList tmp;
+ QByteArray data, replyData;
+ KviQCString replyType;
+ QDataStream arg(data, IO_WriteOnly);
+ arg << szApp << tmp;
+ if(!g_pApp->dcopClient()->call(
+ "klauncher",
+ "klauncher",
+ "start_service_by_desktop_name(QString,QStringList)",
+ data,
+ replyType,
+ replyData))
+ {
+ return false;
+ } else {
+ QDataStream reply(replyData, IO_ReadOnly);
+ if(replyType != "serviceResult")return false;
+ int result;
+ KviQCString dcopName;
+ QString error;
+ reply >> result >> dcopName >> error;
+ if(result != 0)return false;
+ }
+ // ok , we seem to have started it.. but it might take some seconds
+ // for the app to get registered
+ // we wait up to five seconds
+ if(iWaitMSecs > 0)
+ {
+ int i = 0;
+ while(i < iWaitMSecs)
+ {
+ if(findRunningApp(szApp))return true;
+ KviThread::msleep(100);
+ i += 100;
+ }
+ return findRunningApp(szApp);
+ }
+ return true;
+}
+
+
+#endif //COMPILE_KDE_SUPPORT
diff --git a/src/modules/mediaplayer/mp_dcopinterface.h b/src/modules/mediaplayer/mp_dcopinterface.h
new file mode 100644
index 00000000..6ce8594d
--- /dev/null
+++ b/src/modules/mediaplayer/mp_dcopinterface.h
@@ -0,0 +1,57 @@
+#ifndef _MP_DCOPINTERFACE_H_
+#define _MP_DCOPINTERFACE_H_
+//=============================================================================
+//
+// File : mp_dcopinterface.h
+// Created on Sun 27 Mar 2005 16:56:21 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_KDE_SUPPORT
+
+#include "mp_interface.h"
+
+class KviMediaPlayerDCOPInterface : public KviMediaPlayerInterface
+{
+public:
+ KviMediaPlayerDCOPInterface(const KviQCString &szAppId);
+ ~KviMediaPlayerDCOPInterface();
+protected:
+ KviQCString m_szAppId;
+protected:
+ bool ensureAppRunning(const QString &szApp);
+ bool findRunningApp(const QString &szApp);
+ bool startApp(const QString &szApp,int iWaitMSecs = 0);
+ int detectApp(const QString &szApp,bool bStart,int iScoreWhenFound,int iScoreWhenStarted);
+ bool simpleDCOPCall(const KviQCString &szObj,const KviQCString &szFunc);
+ bool intDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,int iVal);
+ bool boolDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,bool bVal);
+ bool stringDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,QString szVal);
+ bool floatDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,float fVal);
+ bool stringRetDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,QString &ret);
+ bool intRetDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,int &ret);
+ bool boolRetDCOPCall(const KviQCString &szObj,const KviQCString &szFunc,bool &ret);
+};
+
+#endif //COMPILE_KDE_SUPPORT
+
+#endif //!_MP_DCOPINTERFACE_H_
diff --git a/src/modules/mediaplayer/mp_interface.cpp b/src/modules/mediaplayer/mp_interface.cpp
new file mode 100644
index 00000000..0894de05
--- /dev/null
+++ b/src/modules/mediaplayer/mp_interface.cpp
@@ -0,0 +1,277 @@
+//=============================================================================
+//
+// File : mp_interface.cpp
+// Creation date : Fri Mar 25 20:01:25 2005 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "mp_interface.h"
+#include "mp_mp3.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include <qtextcodec.h>
+
+static QTextCodec * mediaplayer_get_codec()
+{
+ QTextCodec * c= QTextCodec::codecForName(KVI_OPTION_STRING(KviOption_stringWinampTextEncoding));
+ if(!c)c = QTextCodec::codecForLocale();
+ return c;
+
+}
+
+void KviMediaPlayerInterface::notImplemented()
+{
+ setLastError(__tr2qs_ctx("Function not implemented","mediaplayer"));
+}
+
+
+int KviMediaPlayerInterface::position()
+{
+ notImplemented();
+ return -1;
+}
+
+int KviMediaPlayerInterface::length()
+{
+ notImplemented();
+ return -1;
+}
+
+bool KviMediaPlayerInterface::quit()
+{
+ notImplemented();
+ return false;
+}
+
+bool KviMediaPlayerInterface::hide()
+{
+ notImplemented();
+ return false;
+}
+
+bool KviMediaPlayerInterface::show()
+{
+ notImplemented();
+ return false;
+}
+
+bool KviMediaPlayerInterface::minimize()
+{
+ notImplemented();
+ return false;
+}
+
+QString KviMediaPlayerInterface::getLocalFile()
+{
+ QString ret = mrl();
+ if(ret.isEmpty())return ret;
+ if(ret.startsWith("file://",false))
+ {
+ ret.remove(0,7);
+ return ret;
+ }
+ return QString::null;
+}
+
+QString KviMediaPlayerInterface::amipEval(const QString &cmd)
+{
+ return QString::null;
+}
+
+#define SCAN_MP3_FILE \
+ QString f = getLocalFile(); \
+ if(f.isEmpty())return QString::null; \
+ mp3info mp3; \
+ if(!scan_mp3_file(f,&mp3))return QString::null; \
+ QTextCodec *pCodec; \
+ pCodec=mediaplayer_get_codec();
+
+#define SCAN_MP3_FILE_RET_INT \
+ QString f = getLocalFile(); \
+ if(f.isEmpty())return -1; \
+ mp3info mp3; \
+ if(!scan_mp3_file(f,&mp3))return -1;
+
+
+QString KviMediaPlayerInterface::artist()
+{
+ SCAN_MP3_FILE
+ return pCodec->toUnicode(KviQCString(mp3.id3.artist));
+}
+
+QString KviMediaPlayerInterface::title()
+{
+ SCAN_MP3_FILE
+ return pCodec->toUnicode(KviQCString(mp3.id3.title));
+}
+
+
+QString KviMediaPlayerInterface::genre()
+{
+ SCAN_MP3_FILE
+ return pCodec->toUnicode(KviQCString(get_typegenre(mp3.id3.genre[0])));
+}
+
+QString KviMediaPlayerInterface::comment()
+{
+ SCAN_MP3_FILE
+ return pCodec->toUnicode(KviQCString(mp3.id3.comment));
+}
+
+QString KviMediaPlayerInterface::year()
+{
+ SCAN_MP3_FILE
+ return QString(mp3.id3.year);
+}
+
+QString KviMediaPlayerInterface::album()
+{
+ SCAN_MP3_FILE
+ return pCodec->toUnicode(KviQCString(mp3.id3.album));
+}
+
+bool KviMediaPlayerInterface::playMrl(const QString &mrl)
+{
+ notImplemented();
+ return false;
+}
+
+bool KviMediaPlayerInterface::amipExec(const QString &cmd)
+{
+ notImplemented();
+ return false;
+}
+
+bool KviMediaPlayerInterface::setVol(kvs_int_t &iVol)
+{
+ notImplemented();
+ return false;
+}
+
+int KviMediaPlayerInterface::getVol()
+{
+ notImplemented();
+ return -1;
+}
+
+bool KviMediaPlayerInterface::mute()
+{
+ notImplemented();
+ return false;
+}
+
+bool KviMediaPlayerInterface::jumpTo(int &iPos)
+{
+ notImplemented();
+ return false;
+}
+
+KviMediaPlayerInterface::PlayerStatus KviMediaPlayerInterface::status()
+{
+ notImplemented();
+ return KviMediaPlayerInterface::Unknown;
+}
+
+int KviMediaPlayerInterface::bitRate()
+{
+ SCAN_MP3_FILE_RET_INT
+ return header_bitrate(&(mp3.header));
+}
+
+int KviMediaPlayerInterface::sampleRate()
+{
+ SCAN_MP3_FILE_RET_INT
+ return header_frequency(&(mp3.header));
+}
+
+int KviMediaPlayerInterface::channels()
+{
+ SCAN_MP3_FILE_RET_INT
+ return header_channels(&(mp3.header));
+}
+
+int KviMediaPlayerInterface::getPlayListPos()
+{
+ notImplemented();
+ return -1;
+}
+
+bool KviMediaPlayerInterface::setPlayListPos(int &iPos)
+{
+ notImplemented();
+ return false;
+}
+
+int KviMediaPlayerInterface::getListLength()
+{
+ notImplemented();
+ return -1;
+}
+
+
+int KviMediaPlayerInterface::getEqData(int &ival)
+{
+ notImplemented();
+ return -1;
+}
+
+bool KviMediaPlayerInterface::setEqData(int &iPos, int &iVal)
+{
+ notImplemented();
+ return false;
+}
+
+bool KviMediaPlayerInterface::getRepeat()
+{
+ notImplemented();
+ return false;
+}
+
+bool KviMediaPlayerInterface::getShuffle()
+{
+ notImplemented();
+ return false;
+}
+
+bool KviMediaPlayerInterface::setRepeat(bool &bVal)
+{
+ notImplemented();
+ return false;
+}
+
+bool KviMediaPlayerInterface::setShuffle(bool &bVal)
+{
+ notImplemented();
+ return false;
+}
+
+QString KviMediaPlayerInterface::mediaType()
+{
+ QString ret = mrl();
+ if(ret.endsWith(".mp3",false))ret = "MPEG Layer 3";
+ else if(ret.endsWith(".ogg",false))ret = "OGG Vorbis";
+ else if(ret.endsWith(".avi",false))ret = "Audio Video Interleave";
+ else if(ret.endsWith(".mpeg",false))ret = "MPEG Video";
+ else if(ret.endsWith(".mpg",false))ret = "MPEG Video";
+ else if(ret.startsWith("http://",false))ret = "HTTP Audio Stream";
+ else ret = QString::null;
+ return ret;
+}
+
diff --git a/src/modules/mediaplayer/mp_interface.h b/src/modules/mediaplayer/mp_interface.h
new file mode 100644
index 00000000..44667309
--- /dev/null
+++ b/src/modules/mediaplayer/mp_interface.h
@@ -0,0 +1,238 @@
+#ifndef _MP_INTERFACE_H_
+#define _MP_INTERFACE_H_
+//=============================================================================
+//
+// File : mp_interface.h
+// Creation date : Fri Mar 25 20:01:25 2005 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_types.h"
+
+class KviMediaPlayerInterface
+{
+public:
+ // don't do any initialization in the constructor
+ // implement lazy initialization in each function instead
+ KviMediaPlayerInterface(){};
+ virtual ~KviMediaPlayerInterface(){};
+protected:
+ QString m_szLastError;
+public:
+ const QString & lastError(){ return m_szLastError; };
+
+ //
+ // mandatory interface
+ //
+
+ // This should attempt to detect if the player is available on the user's system
+ // and returning a score from 0 to 100 depending on how likely the player will work
+ // and how many of its functions are available. 100 means that the interface
+ // is absolutely sure that the player will start and play stuff.
+ // If bStart is true then the function is allowed to explicitly start the player,
+ // otherwise a startup attempt should not be made and different methods should be used.
+ // This function is used for auto-detection and is called twice: the first time
+ // with bStart set to false to determine the players that potentially could run.
+ // If no player returns a reasonably high value by just guessing, then
+ // a second loop may be attempted with the "bStart" parameter set to true.
+ // A level of 0 is considered total failure: in this case detect() should
+ // also set the last error to a descriptive string.
+ virtual int detect(bool bStart) = 0;
+
+ // play previous media, return false only on communication failure
+ virtual bool prev() = 0;
+ // play next media, return false only on communication failure
+ virtual bool next() = 0;
+ // start playback now, return false only on communication failure (i.e. return true when already playing)
+ virtual bool play() = 0;
+ // stop playback now, return false only on communication failure (i.e. return true when already stopped)
+ virtual bool stop() = 0;
+ // pause playback now (do NOT toggle pause, just pause), return false only on communication failure
+ virtual bool pause() = 0;
+
+ // current media related
+
+ // currently played media: it should include AT least the title
+ // but may also include other informations.
+ // this string MUST be non-empty when the player is playing something.
+ // If it is empty then either the player is not playing or there are
+ // communication errors.
+ virtual QString nowPlaying() = 0;
+ // currently played media resource locator
+ // file://<filepath> for local files, dvb:// for dvb media , dvd:// for dvd's
+ // http:// for audio streams etc...
+ // empty if player is not playing (or in the tragic case that the player
+ // can't determine the url).
+ virtual QString mrl() = 0;
+
+ // optional interface
+
+ // this should play the specified mrl
+ // the mrl may be (or may be not) added to the player's playlist
+ // the function should return false if the player doesn't support
+ // this function or there is a communication error
+ virtual bool playMrl(const QString &mrl);
+ // what is this ? :D
+ virtual bool amipExec(const QString &cmd);
+ virtual QString amipEval(const QString &cmd);
+ // this is functions to hide,show and minimize the player interface
+ virtual bool hide();
+ virtual bool show();
+ virtual bool minimize();
+ // set the volume of mediaplayer (0-255)
+ virtual bool setVol(kvs_int_t &iVol);
+ // get the pvolume value(0-255)
+ virtual int getVol();
+ //mute the volume
+ virtual bool mute();
+ // should quit the player if it's running
+ // return false only on communication failure
+ virtual bool quit();
+ // return the current player status
+ enum PlayerStatus { Unknown, Stopped, Playing, Paused };
+ virtual KviMediaPlayerInterface::PlayerStatus status();
+ // current position in the media (msecs)
+ // 0 if the player isn't playing anything and -1 if unknown
+ virtual int position();
+ // total length of the media (msecs)
+ // 0 if the player isn't playing anyting and -1 if unknown (e.g. a stream)
+ virtual int length();
+ // jump to position
+ virtual bool jumpTo(int &iPos);
+ // interface with a default implementation for certain types of media (read for mp3)
+ // reimplement only if the player knows better
+
+ // currently played media title (it's player choice if the title
+ // is to be derived from the media file name or from the informations
+ // stored inside the file like the ID3 tag...)
+ // If the player is not playing, the returned string should be empty
+ virtual QString title();
+ // currently played media artist's name
+ // If the player is not playing, the returned string should be empty
+ // If the player can't guess the artist it should return the string "unknown"
+ virtual QString artist();
+ // currently plaued media genre
+ // If the player is not playing, the returned string should be empty
+ // If the player can't guess the genre it should return the string "unknown"
+ virtual QString genre();
+ // currently played media comment.
+ // Empty string if the player isn't playing anything or there is no comment
+ virtual QString comment();
+ // currently played media year
+ // Empty string if the player isn't playing anything or the year is unknown
+ virtual QString year();
+ // currently played media album
+ // Empty string if the player isn't playing anything
+ // If the player can't guess the album/collection then this string should be "unknown"
+ virtual QString album();
+ // bit rate in bits/sec, 0 if unknown
+ virtual int bitRate();
+ // sample rate in samples/sec (Hz), 0 if unknown
+ virtual int sampleRate();
+ // number of channels
+ virtual int channels();
+ // frequency
+ // the type of the media (MPEG Layer 3, MPEG Layer 4, OGG Vorbis, AVI Stream etc..)
+ virtual QString mediaType();
+ // get the position in the playlist
+ virtual int getPlayListPos();
+ // set the position in the playlist
+ virtual bool setPlayListPos(int &iPos);
+ // return the list's length
+ virtual int getListLength();
+ // return the Eq(number) value
+ virtual int getEqData(int &i_val);
+ // set the Eq(iPos) to Eq(iVal) value
+ virtual bool setEqData(int &iPos, int &iVal);
+ // get the Repeat bool value
+ virtual bool getRepeat();
+ // get the shuffle bool value
+ virtual bool getShuffle();
+ // set the Repeat bool value
+ virtual bool setRepeat(bool &bVal);
+ // set the shuffle bool value
+ virtual bool setShuffle(bool &bVal);
+ void setLastError(const QString &szLastError){ m_szLastError = szLastError; };
+protected:
+ void notImplemented();
+ QString getLocalFile();
+};
+
+
+class KviMediaPlayerInterfaceDescriptor
+{
+public:
+ KviMediaPlayerInterfaceDescriptor(){};
+ virtual ~KviMediaPlayerInterfaceDescriptor(){};
+public:
+ virtual const QString & name() = 0;
+ virtual const QString & description() = 0;
+ virtual KviMediaPlayerInterface * instance() = 0;
+};
+
+
+#define MP_DECLARE_DESCRIPTOR(_interfaceclass) \
+ class _interfaceclass ## Descriptor : public KviMediaPlayerInterfaceDescriptor \
+ { \
+ public: \
+ _interfaceclass ## Descriptor(); \
+ virtual ~_interfaceclass ## Descriptor(); \
+ protected: \
+ _interfaceclass * m_pInstance; \
+ QString m_szName; \
+ QString m_szDescription; \
+ public: \
+ virtual const QString & name(); \
+ virtual const QString & description(); \
+ virtual KviMediaPlayerInterface * instance(); \
+ };
+
+#define MP_IMPLEMENT_DESCRIPTOR(_interfaceclass,_name,_description) \
+ _interfaceclass ## Descriptor::_interfaceclass ## Descriptor() \
+ : KviMediaPlayerInterfaceDescriptor() \
+ { \
+ m_pInstance = 0; \
+ m_szName = _name; \
+ m_szDescription = _description; \
+ } \
+ _interfaceclass ## Descriptor::~_interfaceclass ## Descriptor() \
+ { \
+ if(m_pInstance)delete m_pInstance; \
+ } \
+ const QString & _interfaceclass ## Descriptor::name() \
+ { \
+ return m_szName; \
+ } \
+ const QString & _interfaceclass ## Descriptor::description() \
+ { \
+ return m_szDescription; \
+ } \
+ KviMediaPlayerInterface * _interfaceclass ## Descriptor::instance() \
+ { \
+ if(!m_pInstance)m_pInstance = new _interfaceclass(); \
+ return m_pInstance; \
+ }
+
+#define MP_CREATE_DESCRIPTOR(_interfaceclass) \
+ new _interfaceclass ## Descriptor()
+
+#endif //!_MP_INTERFACE_H_
diff --git a/src/modules/mediaplayer/mp_jukinterface.cpp b/src/modules/mediaplayer/mp_jukinterface.cpp
new file mode 100644
index 00000000..d5a69a77
--- /dev/null
+++ b/src/modules/mediaplayer/mp_jukinterface.cpp
@@ -0,0 +1,185 @@
+//=============================================================================
+//
+// File : mp_jukinterface.cpp
+// Created on Tue 29 Mar 2005 01:38:34 by Szymon Stfeanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stfeanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "mp_jukinterface.h"
+
+#ifdef COMPILE_KDE_SUPPORT
+
+#include "kvi_app.h"
+
+#include "dcopclient.h"
+#include "kurl.h"
+
+#include <qdatastream.h>
+#include <qvaluelist.h>
+
+#include "kvi_locale.h"
+
+// the dcop interface of this player is incomplete :(
+
+MP_IMPLEMENT_DESCRIPTOR(
+ KviJukInterface,
+ "juk",
+ __tr2qs_ctx(
+ "An interface to the Juk KDE media player."
+ ,
+ "mediaplayer"
+ )
+)
+
+
+KviJukInterface::KviJukInterface()
+ : KviDCOPHelper(true, "amarok")
+{
+}
+
+KviJukInterface::~KviJukInterface()
+{
+}
+
+int KviJukInterface::detect(bool bStart){ return detectApp("juk",bStart,90,96); }
+
+bool KviJukInterface::prev(){ return voidRetVoidDCOPCall("Player","forward()"); }
+bool KviJukInterface::next(){ return voidRetVoidDCOPCall("Player","back()"); }
+bool KviJukInterface::play(){ return voidRetVoidDCOPCall("Player","play()"); }
+bool KviJukInterface::stop(){ return voidRetVoidDCOPCall("Player","stop()"); }
+bool KviJukInterface::pause(){ return voidRetVoidDCOPCall("Player","pause()"); }
+bool KviJukInterface::quit(){ return voidRetVoidDCOPCall("MainApplication-Interface","quit()"); }
+
+bool KviJukInterface::setVol(kvs_int_t &iVol)
+{
+ return voidRetFloatDCOPCall("player","setVolume(float)",(float)(iVol)/255.);
+}
+
+bool KviJukInterface::jumpTo(kvs_int_t &iPos)
+{
+ return voidRetIntDCOPCall("player","seek(int)",iPos/1000);
+}
+
+bool KviJukInterface::getShuffle()
+{
+ QString szMode;
+ if(!stringRetVoidDCOPCall("player","randomPlayMode()",szMode))return false;
+ return (szMode != "NoRandom");
+}
+
+bool KviJukInterface::setShuffle(bool &bVal)
+{
+ QString szMode;
+ if(bVal)
+ {
+ szMode = "Random";
+ } else {
+ szMode = "NoRandom";
+ }
+ if(!voidRetStringDCOPCall("player","setRandomPlayMode(QString)",szMode))return false;
+ return true;
+}
+
+
+#define MP_DCOP_STRING_CALL(_fncname,_iface,_fnc) \
+QString KviJukInterface::_fncname() \
+{ \
+ QString ret; \
+ if(!stringRetVoidDCOPCall(_iface,_fnc,ret))return false; \
+ return ret; \
+}
+
+MP_DCOP_STRING_CALL(nowPlaying,"Player","playingString()")
+
+/*
+ FIXME: there is trackProperty(propertyName) for these...
+MP_DCOP_STRING_CALL(artist,"player","artist()")
+MP_DCOP_STRING_CALL(title,"player","title()")
+MP_DCOP_STRING_CALL(genre,"player","genre()")
+MP_DCOP_STRING_CALL(year,"player","year()")
+MP_DCOP_STRING_CALL(comment,"player","comment()")
+MP_DCOP_STRING_CALL(album,"player","album()")
+
+
+int KviJukInterface::sampleRate()
+{
+ int ret;
+ if(!intRetVoidDCOPCall("player","sampleRate()",ret))return false;
+ return ret;
+}
+*/
+
+int KviJukInterface::length()
+{
+ int ret;
+ if(!intRetVoidDCOPCall("player","totalTime()",ret))return false;
+ return ret * 1000;
+}
+
+int KviJukInterface::position()
+{
+ int ret;
+ if(!intRetVoidDCOPCall("player","currentTime()",ret))return false;
+ return ret * 1000;
+}
+
+KviMediaPlayerInterface::PlayerStatus KviJukInterface::status()
+{
+ int ret;
+ if(!intRetVoidDCOPCall("player","status()",ret))return KviMediaPlayerInterface::Unknown;
+ switch(ret)
+ {
+ case 0:
+ return KviMediaPlayerInterface::Stopped;
+ break;
+ case 1:
+ return KviMediaPlayerInterface::Paused;
+ break;
+ case 2:
+ return KviMediaPlayerInterface::Playing;
+ break;
+ default:
+ return KviMediaPlayerInterface::Unknown;
+ break;
+ }
+ return KviMediaPlayerInterface::Unknown;
+}
+
+QString KviJukInterface::mrl()
+{
+ // ugh :/
+ QString ret;
+ return ret;
+}
+
+bool KviJukInterface::playMrl(const QString &mrl)
+{
+ QString title;
+ QByteArray data, replyData;
+ KviQCString replyType;
+ QDataStream arg(data,IO_WriteOnly);
+ arg << mrl;
+ if(!g_pApp->dcopClient()->call(m_szAppId,"playlist","play(QString)",data,replyType,replyData))
+ return false;
+ return true;
+}
+
+
+#endif //COMPILE_KDE_SUPPORT
diff --git a/src/modules/mediaplayer/mp_jukinterface.h b/src/modules/mediaplayer/mp_jukinterface.h
new file mode 100644
index 00000000..478a3c16
--- /dev/null
+++ b/src/modules/mediaplayer/mp_jukinterface.h
@@ -0,0 +1,77 @@
+#ifndef _MP_JUKINTERFACE_H_
+#define _MP_JUKINTERFACE_H_
+//=============================================================================
+//
+// File : mp_jukinterface.h
+// Created on Tue 29 Mar 2005 01:38:34 by Szymon Stfeanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stfeanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_KDE_SUPPORT
+
+ #include "kvi_dcophelper.h"
+ #include "mp_interface.h"
+
+ class KviJukInterface : public KviMediaPlayerInterface, private KviDCOPHelper
+ {
+ public:
+ KviJukInterface();
+ ~KviJukInterface();
+ public:
+ virtual int detect(bool bStart);
+ virtual bool prev();
+ virtual bool next();
+ virtual bool play();
+ virtual bool stop();
+ virtual bool pause();
+ virtual bool quit();
+ virtual bool jumpTo(kvs_int_t &iPos);
+ virtual bool setVol(kvs_int_t &iVol);
+ virtual QString nowPlaying();
+ virtual QString mrl();
+ /*
+ virtual QString title();
+ virtual QString artist();
+ virtual QString genre();
+ virtual QString comment();
+ virtual QString year();
+ virtual QString album();
+ */
+ virtual int position();
+ virtual int length();
+ /*
+ virtual int bitRate();
+ virtual int sampleRate();
+ */
+ virtual bool getShuffle();
+ virtual bool setShuffle(bool &bVal);
+
+ virtual bool playMrl(const QString &mrl);
+ virtual KviMediaPlayerInterface::PlayerStatus status();
+ };
+
+ MP_DECLARE_DESCRIPTOR(KviJukInterface)
+
+#endif //COMPILE_KDE_SUPPORT
+
+#endif //!_MP_JUKINTERFACE_H_
diff --git a/src/modules/mediaplayer/mp_mp3.cpp b/src/modules/mediaplayer/mp_mp3.cpp
new file mode 100644
index 00000000..6e27fa5f
--- /dev/null
+++ b/src/modules/mediaplayer/mp_mp3.cpp
@@ -0,0 +1,468 @@
+//=============================================================================
+//
+// File : mp_mp3.cpp
+// Creation date : Fri Mar 25 20:01:25 2005 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This file is based on the mp3tech.c. It is released under the original
+// license and the original copyright notice follows.
+//
+// mp3tech.c
+//
+// Copyright (C) 2000 Cedric Tefft <[email protected]>
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+//
+// This file is based in part on:
+//
+// * MP3Info 0.5 by Ricardo Cerqueira <[email protected]>
+// * MP3Stat 0.9 by Ed Sweetman <[email protected]> and
+// Johannes Overmann <[email protected]>
+//
+// There has been also a remarkable work by Cristopher Tieckle (Crissi)
+//
+//=============================================================================
+
+#include "mp_mp3.h"
+#include "kvi_options.h"
+
+#include <qfileinfo.h>
+#include <qtextcodec.h>
+
+#define MAXGENRE 147
+#define GENREROWS 50
+
+/*
+ The Information is stored in the last 128 bytes of an MP3. The Tag
+ has got the following fields, and the offsets given here, are from
+ 0-127.
+
+ Field Length Offsets
+ Tag 3 0-2
+ Songname 30 3-32
+ Artist 30 33-62
+ Album 30 63-92
+ Year 4 93-96
+ Comment 30 97-126
+ Genre 1 127
+
+
+ The string-fields contain ASCII-data, coded in ISO-Latin 1 codepage.
+ Strings which are smaller than the field length are padded with zero-
+ bytes.
+
+ Tag: The tag is valid if this field contains the string "TAG". This
+ has to be uppercase!
+
+ Songname: This field contains the title of the MP3 (string as
+ above).
+
+ Artist: This field contains the artist of the MP3 (string as above).
+
+ Album: this field contains the album where the MP3 comes from
+ (string as above).
+
+ Year: this field contains the year when this song has originally
+ been released (string as above).
+
+ Comment: this field contains a comment for the MP3 (string as
+ above). Revision to this field has been made in ID3v1.1. See
+ A.4.
+
+ Genre: this byte contains the offset of a genre in a predefined
+ list the byte is treated as an unsigned byte. The offset is
+ starting from 0. See A.3.
+*/
+
+
+const char *typegenre [MAXGENRE+2] =
+{
+ "Blues","Classic Rock","Country","Dance","Disco","Funk","Grunge",
+ "Hip-Hop","Jazz","Metal","New Age","Oldies","Other","Pop","R&B",
+ "Rap","Reggae","Rock","Techno","Industrial","Alternative","Ska",
+ "Death Metal","Pranks","Soundtrack","Euro-Techno","Ambient",
+ "Trip-Hop","Vocal","Jazz+Funk","Fusion","Trance","Classical",
+ "Instrumental","Acid","House","Game","Sound Clip","Gospel","Noise",
+ "Alt. Rock","Bass","Soul","Punk","Space","Meditative",
+ "Instrumental Pop","Instrumental Rock","Ethnic","Gothic",
+ "Darkwave","Techno-Industrial","Electronic","Pop-Folk","Eurodance",
+ "Dream","Southern Rock","Comedy","Cult","Gangsta Rap","Top 40",
+ "Christian Rap","Pop/Funk","Jungle","Native American","Cabaret",
+ "New Wave","Psychedelic","Rave","Showtunes","Trailer","Lo-Fi",
+ "Tribal","Acid Punk","Acid Jazz","Polka","Retro","Musical",
+ "Rock & Roll","Hard Rock","Folk","Folk/Rock","National Folk",
+ "Swing","Fast-Fusion","Bebob","Latin","Revival","Celtic",
+ "Bluegrass","Avantgarde","Gothic Rock","Progressive Rock",
+ "Psychedelic Rock","Symphonic Rock","Slow Rock","Big Band",
+ "Chorus","Easy Listening","Acoustic","Humour","Speech","Chanson",
+ "Opera","Chamber Music","Sonata","Symphony","Booty Bass","Primus",
+ "Porn Groove","Satire","Slow Jam","Club","Tango","Samba",
+ "Folklore","Ballad","Power Ballad","Rhythmic Soul","Freestyle",
+ "Duet","Punk Rock","Drum Solo","A Cappella","Euro-House",
+ "Dance Hall","Goa","Drum & Bass","Club-House","Hardcore","Terror",
+ "Indie","BritPop","Negerpunk","Polsk Punk","Beat",
+ "Christian Gangsta Rap","Heavy Metal","Black Metal","Crossover",
+ "Contemporary Christian","Christian Rock","Merengue","Salsa",
+ "Thrash Metal","Anime","JPop","Synthpop",""
+};
+
+const char * get_typegenre(int idx)
+{
+ if(idx > MAXGENRE)return typegenre[12];
+ return typegenre[idx];
+}
+
+int galphagenreindex[MAXGENRE+2] =
+{
+ 148,123,74,73,34,99,40,20,26,145,90,
+ 116,41,135,85,96,138,89,0,107,132,65,88,
+ 104,102,97,136,61,141,1,32,128,112,57,140,
+ 2,139,58,125,3,50,22,4,55,127,122,120,
+ 98,52,48,124,25,54,84,81,115,80,119,5,
+ 30,36,59,126,38,91,49,6,79,129,137,7,
+ 35,100,131,19,46,47,33,146,29,8,63,86,
+ 71,45,142,9,77,82,64,133,10,66,39,11,
+ 103,12,75,134,53,62,13,109,117,23,108,92,
+ 93,67,121,43,14,15,68,16,76,87,118,78,
+ 17,143,114,110,69,21,111,95,105,42,37,24,
+ 56,44,101,83,94,106,147,113,51,18,130,144,
+ 60,70,31,72,27,28
+};
+
+int *alphagenreindex=&(galphagenreindex[1]);
+
+
+int layer_tab[4]= {0, 3, 2, 1};
+
+int frequencies[3][4] =
+{
+ {22050,24000,16000,50000}, /* MPEG 2.0 */
+ {44100,48000,32000,50000}, /* MPEG 1.0 */
+ {11025,12000,8000,50000} /* MPEG 2.5 */
+};
+
+int bitrate[2][3][14] =
+{
+ { /* MPEG 2.0 */
+ {32,48,56,64,80,96,112,128,144,160,176,192,224,256}, /* layer 1 */
+ {8,16,24,32,40,48,56,64,80,96,112,128,144,160}, /* layer 2 */
+ {8,16,24,32,40,48,56,64,80,96,112,128,144,160} /* layer 3 */
+ },
+ { /* MPEG 1.0 */
+ {32,64,96,128,160,192,224,256,288,320,352,384,416,448}, /* layer 1 */
+ {32,48,56,64,80,96,112,128,160,192,224,256,320,384}, /* layer 2 */
+ {32,40,48,56,64,80,96,112,128,160,192,224,256,320} /* layer 3 */
+ }
+};
+
+int frame_size_index[] = {24000, 72000, 72000};
+
+const char *mode_text[] =
+{
+ "Stereo", "Joint Stereo", "Dual Channel", "Mono"
+};
+
+const char *emphasis_text[] =
+{
+ "None", "50/15 Microseconds", "Reserved", "CCITT J 17"
+};
+void resetmp3infoStruct(mp3info *i)
+{
+ i->file=0;
+ i->datasize=0;
+ i->header_isvalid=0;
+ memset(&i->header,0,sizeof(i->header));
+ i->id3_isvalid=0;
+ memset(&i->id3,0,sizeof(i->id3));
+ i->vbr=0;
+ i->vbr_average=0;
+ i->seconds=0;
+ i->frames=0;
+ i->badframes=0;
+}
+
+int get_mp3_info(mp3info *mp3)
+{
+ int frame_type[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+ float seconds=0,total_rate=0;
+ int frames=0,frame_types=0,frames_so_far=0;
+ int l,vbr_median=-1;
+ int bitrate,lastrate;
+ int counter=0;
+// mp3header header;
+
+ int sample_pos,data_start=0;
+
+ QFile fi(mp3->filename);
+ mp3->datasize=fi.size();//filestat.st_size;
+
+ get_id3(mp3);
+
+ if(get_first_header(mp3,0L))
+ {
+ data_start=ftell(mp3->file);
+ lastrate=15-mp3->header.bitrate;
+ while((counter < NUM_SAMPLES) && lastrate)
+ {
+ sample_pos=(counter*(mp3->datasize/NUM_SAMPLES+1))+data_start;
+ if(get_first_header(mp3,sample_pos))
+ {
+ bitrate=15-mp3->header.bitrate;
+ } else {
+ bitrate=-1;
+ }
+
+ if(bitrate != lastrate)
+ {
+ mp3->vbr=1;
+ }
+ lastrate=bitrate;
+ counter++;
+
+ }
+ mp3->frames=(mp3->datasize-data_start)/(l=frame_length(&mp3->header));
+ mp3->seconds = (int)((float)(frame_length(&mp3->header)*mp3->frames)/
+ (float)(header_bitrate(&mp3->header)*125)+0.5);
+ mp3->vbr_average = (float)header_bitrate(&mp3->header);
+ }
+
+ return 0;
+}
+
+
+int get_first_header(mp3info *mp3, long startpos)
+{
+ int k, l=0,c;
+ mp3header h, h2;
+ long valid_start=0;
+
+ fseek(mp3->file,startpos,SEEK_SET);
+ while(1)
+ {
+ while((c=fgetc(mp3->file)) != 255 && (c != EOF));
+ if(c == 255)
+ {
+ ungetc(c,mp3->file);
+ valid_start=ftell(mp3->file);
+ if((l=get_header(mp3->file,&h)))
+ {
+ fseek(mp3->file,l-FRAME_HEADER_SIZE,SEEK_CUR);
+ for(k=1; (k < MIN_CONSEC_GOOD_FRAMES) && (mp3->datasize-ftell(mp3->file) >= FRAME_HEADER_SIZE); k++)
+ {
+ if(!(l=get_header(mp3->file,&h2))) break;
+ if(!sameConstant(&h,&h2)) break;
+ fseek(mp3->file,l-FRAME_HEADER_SIZE,SEEK_CUR);
+ }
+ if(k == MIN_CONSEC_GOOD_FRAMES)
+ {
+ fseek(mp3->file,valid_start,SEEK_SET);
+ memcpy(&(mp3->header), &h2, sizeof(mp3header));
+ mp3->header_isvalid = 1;
+ return 1;
+ }
+ }
+ } else {
+ return 0;
+ }
+ }
+ return 0;
+}
+
+
+// Get next MP3 frame header.
+// Return codes:
+// positive value = Frame Length of this header
+// 0 = No, we did not retrieve a valid frame header
+
+int get_header(FILE *file,mp3header *header)
+{
+ unsigned char buffer[FRAME_HEADER_SIZE];
+ int fl;
+
+ if(fread(&buffer,FRAME_HEADER_SIZE,1,file)<1)
+ {
+ header->sync=0;
+ return 0;
+ }
+ header->sync=(((int)buffer[0]<<4) | ((int)(buffer[1]&0xE0)>>4));
+ if(buffer[1] & 0x10) header->version=(buffer[1] >> 3) & 1;
+ else header->version=2;
+ header->layer=(buffer[1] >> 1) & 3;
+ if((header->sync != 0xFFE) || (header->layer != 1))
+ {
+ header->sync=0;
+ return 0;
+ }
+ header->crc=buffer[1] & 1;
+ header->bitrate=(buffer[2] >> 4) & 0x0F;
+ header->freq=(buffer[2] >> 2) & 0x3;
+ header->padding=(buffer[2] >>1) & 0x1;
+ header->extension=(buffer[2]) & 0x1;
+ header->mode=(buffer[3] >> 6) & 0x3;
+ header->mode_extension=(buffer[3] >> 4) & 0x3;
+ header->copyright=(buffer[3] >> 3) & 0x1;
+ header->original=(buffer[3] >> 2) & 0x1;
+ header->emphasis=(buffer[3]) & 0x3;
+
+ return ((fl=frame_length(header)) >= MIN_FRAME_SIZE ? fl : 0);
+}
+
+int frame_length(mp3header *header)
+{
+ return header->sync == 0xFFE ?
+ (frame_size_index[3-header->layer]*((header->version&1)+1)*
+ header_bitrate(header)/header_frequency(header))+
+ header->padding : 1;
+}
+
+int header_layer(mp3header *h)
+{
+ return layer_tab[h->layer];
+}
+
+int header_bitrate(mp3header *h)
+{
+ if(h->bitrate > 0)
+ return bitrate[h->version & 1][3-h->layer][h->bitrate-1];
+ else
+ return -1; // unknown
+}
+
+int header_frequency(mp3header *h)
+{
+ return frequencies[h->version][h->freq];
+}
+
+const char *header_emphasis(mp3header *h)
+{
+ return emphasis_text[h->emphasis];
+}
+
+const char *header_mode(mp3header *h)
+{
+ return mode_text[h->mode];
+}
+
+int header_channels(mp3header * h)
+{
+ return h->mode == 3 ? 1 : 2;
+}
+
+int header_crc(mp3header *h)
+{
+ return (!h->crc);
+}
+
+int sameConstant(mp3header *h1, mp3header *h2)
+{
+ if((*(uint*)h1) == (*(uint*)h2)) return 1;
+
+ if((h1->version == h2->version ) &&
+ (h1->layer == h2->layer ) &&
+ (h1->crc == h2->crc ) &&
+ (h1->freq == h2->freq ) &&
+ (h1->mode == h2->mode ) &&
+ (h1->copyright == h2->copyright ) &&
+ (h1->original == h2->original ) &&
+ (h1->emphasis == h2->emphasis ))
+ return 1;
+ else return 0;
+}
+
+
+int get_id3(mp3info *mp3)
+{
+ // this will read ID3v1 tags
+ int retcode=0;
+ char fbuf[4];
+
+ if(mp3->datasize >= 128)
+ {
+ if(fseek(mp3->file, -128, SEEK_END ))
+ {
+ retcode |= 4;
+ } else {
+ fread(fbuf,1,3,mp3->file); fbuf[3] = '\0';
+ mp3->id3.genre[0]=255;
+
+ if(!strcmp((const char *)"TAG",(const char *)fbuf))
+ {
+ mp3->id3_isvalid=1;
+ mp3->datasize -= 128;
+ fseek(mp3->file, -125, SEEK_END);
+ fread(mp3->id3.title,1,30,mp3->file); mp3->id3.title[30] = '\0';
+ fread(mp3->id3.artist,1,30,mp3->file); mp3->id3.artist[30] = '\0';
+ fread(mp3->id3.album,1,30,mp3->file); mp3->id3.album[30] = '\0';
+ fread(mp3->id3.year,1,4,mp3->file); mp3->id3.year[4] = '\0';
+ fread(mp3->id3.comment,1,30,mp3->file); mp3->id3.comment[30] = '\0';
+ if(mp3->id3.comment[28] == '\0')
+ {
+ mp3->id3.track[0] = mp3->id3.comment[29];
+ }
+ fread(mp3->id3.genre,1,1,mp3->file);
+ unpad(mp3->id3.title);
+ unpad(mp3->id3.artist);
+ unpad(mp3->id3.album);
+ unpad(mp3->id3.year);
+ unpad(mp3->id3.comment);
+ }
+ }
+ }
+ return retcode;
+}
+
+char *pad(char *string, int length)
+{
+ int l;
+
+ l=strlen(string);
+ while(l<length)
+ {
+ string[l] = ' ';
+ l++;
+ }
+
+ string[l]='\0';
+ return string;
+}
+
+// Remove trailing whitespace from the end of a string
+
+char *unpad(char *string)
+{
+ char *pos=string+strlen(string)-1;
+ while(isspace(pos[0])) (pos--)[0]=0;
+ return string;
+}
+
+bool scan_mp3_file(QString& szFileName,mp3info * i)
+{
+ //memset(i,0,sizeof(mp3info));
+ resetmp3infoStruct(i);
+
+
+ i->filename = "text";
+ i->file = fopen(QTextCodec::codecForLocale()->fromUnicode(i->filename).data(),"rb");
+ if(!i->file)return false;
+
+ get_mp3_info(i);
+
+ fclose(i->file);
+
+ return (i->id3_isvalid);
+}
+
diff --git a/src/modules/mediaplayer/mp_mp3.h b/src/modules/mediaplayer/mp_mp3.h
new file mode 100644
index 00000000..d42c5ef7
--- /dev/null
+++ b/src/modules/mediaplayer/mp_mp3.h
@@ -0,0 +1,137 @@
+//=============================================================================
+//
+// File : mp_mp3.h
+// Creation date : Fri Mar 25 20:01:25 2005 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This file is based on the mp3tech.h. It is released under the original
+// license and the original copyright notice follows.
+//
+// mp3tech.h
+//
+// Copyright (C) 2000 Cedric Tefft <[email protected]>
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+//
+// This file is based in part on:
+//
+// * MP3Info 0.5 by Ricardo Cerqueira <[email protected]>
+// * MP3Stat 0.9 by Ed Sweetman <[email protected]> and
+// Johannes Overmann <[email protected]>
+//
+// There has been also a remarkable work by Cristopher Tieckle (Crissi)
+//
+//=============================================================================
+
+// MIN_CONSEC_GOOD_FRAMES defines how many consecutive valid MP3 frames
+// we need to see before we decide we are looking at a real MP3 file
+#define MIN_CONSEC_GOOD_FRAMES 4
+#define FRAME_HEADER_SIZE 4
+#define MIN_FRAME_SIZE 21
+#define NUM_SAMPLES 4
+#define TEXT_FIELD_LEN 30
+#define INT_FIELD_LEN 4
+
+
+#include "kvi_settings.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <qstring.h>
+
+#ifdef COMPILE_ON_WINDOWS
+ #include <windows.h>
+#else
+ #include <unistd.h>
+ #include <sys/stat.h>
+ #include <ctype.h>
+ #include <string.h>
+#endif
+
+
+enum VBR_REPORT { VBR_VARIABLE, VBR_AVERAGE, VBR_MEDIAN };
+
+typedef struct {
+ unsigned int sync;
+ unsigned int version;
+ unsigned int layer;
+ unsigned int crc;
+ unsigned int bitrate;
+ unsigned int freq;
+ unsigned int padding;
+ unsigned int extension;
+ unsigned int mode;
+ unsigned int mode_extension;
+ unsigned int copyright;
+ unsigned int original;
+ unsigned int emphasis;
+} mp3header;
+
+typedef struct {
+ char title[31];
+ char artist[31];
+ char album[31];
+ char year[5];
+ char comment[31];
+ unsigned char track[1];
+ unsigned char genre[1];
+} id3tag;
+
+typedef struct {
+ QString filename;
+ FILE *file;
+ unsigned int datasize;
+ int header_isvalid;
+ mp3header header;
+ int id3_isvalid;
+ id3tag id3;
+ int vbr;
+ float vbr_average;
+ int seconds;
+ int frames;
+ int badframes;
+} mp3info;
+
+// mode field:
+// 00 - Stereo
+// 01 - Joint stereo (Stereo)
+// 10 - Dual channel (2 mono channels)
+// 11 - Single channel (Mono)
+
+bool scan_mp3_file(QString& szFileName,mp3info * i);
+
+void resetmp3infoStruct(mp3info *i);
+
+int header_channels(mp3header *h);
+int header_frequency(mp3header *h);
+const char *header_emphasis(mp3header *h);
+const char *header_mode(mp3header *h);
+int header_layer(mp3header *h);
+int header_bitrate(mp3header *h);
+double header_version(mp3header *h);
+int header_crc(mp3header *h);
+int get_header(FILE *file,mp3header *header);
+int frame_length(mp3header *header);
+int sameConstant(mp3header *h1, mp3header *h2);
+int get_mp3_info(mp3info *mp3);
+int get_id3(mp3info *mp3);
+char *pad(char *string, int length);
+char *unpad(char *string);
+int get_first_header(mp3info *mp3,long startpos);
+//void tagedit_curs(char *filename, int filenum, int fileoutof, id3tag *tag);
+const char * get_typegenre(int idx);
+
diff --git a/src/modules/mediaplayer/mp_winampinterface.cpp b/src/modules/mediaplayer/mp_winampinterface.cpp
new file mode 100644
index 00000000..ae157782
--- /dev/null
+++ b/src/modules/mediaplayer/mp_winampinterface.cpp
@@ -0,0 +1,566 @@
+//=============================================================================
+//
+// File : mp_winampinterface.cpp
+// Created on Mon 28 Mar 2005 23:41:50 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "mp_winampinterface.h"
+#include "kvi_options.h"
+
+#ifdef COMPILE_ON_WINDOWS
+
+#include <qtextcodec.h>
+
+#include "kvi_locale.h"
+#include "kvi_module.h"
+
+#include <windows.h>
+
+#define IPC_STARTPLAY 102
+#define IPC_ISPLAYING 104
+
+#define IPC_GETOUTPUTTIME 105
+// ** int res = SendMessage(hwnd_winamp,WM_WA_IPC,mode,IPC_GETOUTPUTTIME);
+// **
+// ** IPC_GETOUTPUTTIME returns the position in milliseconds of the
+// ** current song (mode = 0), or the song length, in seconds (mode = 1).
+// ** Returns -1 if not playing or error.
+
+#define IPC_JUMPTOTIME 106
+// ** SendMessage(hwnd_winamp,WM_WA_IPC,ms,IPC_JUMPTOTIME);
+// ** IPC_JUMPTOTIME sets the position in milliseconds of the
+// ** current song (approximately).
+
+#define IPC_SETPLAYLISTPOS 121
+// ** SendMessage(hwnd_winamp,WM_WA_IPC,position,IPC_SETPLAYLISTPOS)
+// ** IPC_SETPLAYLISTPOS sets the playlsit position to 'position'.
+
+#define IPC_SETVOLUME 122
+// ** SendMessage(hwnd_winamp,WM_WA_IPC,volume,IPC_SETVOLUME);
+// ** IPC_SETVOLUME sets the volume of Winamp (from 0-255).
+
+#define IPC_GETLISTLENGTH 124
+// ** int length = SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GETLISTLENGTH);
+// ** IPC_GETLISTLENGTH returns the length of the current playlist, in
+// ** tracks.
+
+#define IPC_GETEQDATA 127
+// ** int data=SendMessage(hwnd_winamp,WM_WA_IPC,pos,IPC_GETEQDATA);
+// ** IPC_GETEQDATA queries the status of the EQ.
+// ** The value returned depends on what 'pos' is set to:
+// ** Value Meaning
+// ** ------------------
+// ** 0-9 The 10 bands of EQ data. 0-63 (+20db - -20db)
+// ** 10 The preamp value. 0-63 (+20db - -20db)
+// ** 11 Enabled. zero if disabled, nonzero if enabled.
+// ** 12 Autoload. zero if disabled, nonzero if enabled.
+
+#define IPC_SETEQDATA 128
+// ** SendMessage(hwnd_winamp,WM_WA_IPC,pos,IPC_GETEQDATA);
+// ** SendMessage(hwnd_winamp,WM_WA_IPC,value,IPC_SETEQDATA);
+// ** IPC_SETEQDATA sets the value of the last position retrieved
+// ** by IPC_GETEQDATA. This is pretty lame, and we should provide
+// ** an extended version that lets you do a MAKELPARAM(pos,value).
+// ** someday...
+
+#define IPC_GETPLAYLISTFILE 211
+// ** (requires Winamp 2.04+, only usable from plug-ins (not external apps))
+// ** char *name=SendMessage(hwnd_winamp,WM_WA_IPC,index,IPC_GETPLAYLISTFILE);
+// ** IPC_GETPLAYLISTFILE gets the filename of the playlist entry [index].
+// ** returns a pointer to it. returns NULL on error.
+
+#define IPC_GETPLAYLISTTITLE 212
+// * (requires Winamp 2.04+, only usable from plug-ins (not external apps))
+// ** char *name=SendMessage(hwnd_winamp,WM_WA_IPC,index,IPC_GETPLAYLISTTITLE);
+// ** IPC_GETPLAYLISTTITLE gets the title of the playlist entry [index].
+// ** returns a pointer to it. returns NULL on error.
+
+#define IPC_GET_SHUFFLE 250
+// ** val=SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GET_SHUFFLE);
+// **
+// ** IPC_GET_SHUFFLE returns the status of the Shuffle option (1 if set)
+
+#define IPC_GET_REPEAT 251
+// ** val=SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GET_REPEAT);
+// **
+// ** IPC_GET_REPEAT returns the status of the Repeat option (1 if set)
+
+#define IPC_SET_SHUFFLE 252
+// ** SendMessage(hwnd_winamp,WM_WA_IPC,value,IPC_SET_SHUFFLE);
+// **
+// ** IPC_SET_SHUFFLE sets the status of the Shuffle option (1 to turn it on)
+
+#define IPC_SET_REPEAT 253
+// ** SendMessage(hwnd_winamp,WM_WA_IPC,value,IPC_SET_REPEAT);
+// **
+// ** IPC_SET_REPEAT sets the status of the Repeat option (1 to turn it on)
+
+#define IPC_GETLISTPOS 125
+// ** int pos=SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GETLISTPOS);
+// ** IPC_GETLISTPOS returns the playlist position. A lot like IPC_WRITEPLAYLIST
+// ** only faster since it doesn't have to write out the list. Heh, silly me.
+
+#define IPC_GETINFO 126
+// ** int inf=SendMessage(hwnd_winamp,WM_WA_IPC,mode,IPC_GETINFO);
+// ** IPC_GETINFO returns info about the current playing song. The value
+// ** it returns depends on the value of 'mode'.
+// ** Mode Meaning
+// ** ------------------
+// ** 0 Samplerate (i.e. 44100)
+// ** 1 Bitrate (i.e. 128)
+// ** 2 Channels (i.e. 2)
+
+#define IPC_PLAYFILE 100
+// ** COPYDATASTRUCT cds;
+// ** cds.dwData = IPC_PLAYFILE;
+// ** cds.lpData = (void *) "file.mp3";
+// ** cds.cbData = strlen((char *) cds.lpData)+1; // include space for null char
+// ** SendMessage(hwnd_winamp,WM_COPYDATA,(WPARAM)NULL,(LPARAM)&cds);
+// **
+// ** This will play the file "file.mp3".
+
+#define IPC_ISPLAYING 104
+// ** int res = SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_ISPLAYING);
+// ** IPC_ISPLAYING returns the status of playback.
+// ** If it returns 1, it is playing. if it returns 3, it is paused,
+// ** if it returns 0, it is not playing.
+
+// The following stuff needs PostMessage(hwnd_winamp,WM_COMMAND,id,0);
+#define WINAMP_BUTTON1 40044
+#define WINAMP_BUTTON2 40045
+#define WINAMP_BUTTON3 40046
+#define WINAMP_BUTTON4 40047
+#define WINAMP_BUTTON5 40048
+
+#define WINAMP_CMD_PREV WINAMP_BUTTON1
+#define WINAMP_CMD_PLAY WINAMP_BUTTON2
+#define WINAMP_CMD_PAUSE WINAMP_BUTTON3
+#define WINAMP_CMD_STOP WINAMP_BUTTON4
+#define WINAMP_CMD_NEXT WINAMP_BUTTON5
+
+#define WINAMP_CMD_QUIT 40001
+
+#define KVIRC_WM_USER 63112
+
+#define KVIRC_WM_USER_CHECK 13123
+#define KVIRC_WM_USER_CHECK_REPLY 13124
+#define KVIRC_WM_USER_GETTITLE 5000
+#define KVIRC_WM_USER_GETFILE 10000
+#define KVIRC_WM_USER_TRANSFER 15000
+
+
+static QTextCodec * mediaplayer_get_codec()
+{
+ QTextCodec * c= QTextCodec::codecForName(KVI_OPTION_STRING(KviOption_stringWinampTextEncoding));
+ if(!c)c = QTextCodec::codecForLocale();
+ return c;
+
+}
+
+static HWND find_winamp(KviWinampInterface * i)
+{
+ HWND hWnd = FindWindow("Winamp v1.x",NULL);
+ if(!hWnd)
+ {
+ // try to start the process ?
+ i->setLastError(__tr2qs_ctx("Can't find a running winamp window","mediaplayer"));
+ }
+ return hWnd;
+}
+
+
+MP_IMPLEMENT_DESCRIPTOR(
+ KviWinampInterface,
+ "winamp",
+ __tr2qs_ctx(
+ "An interface to the popupar Winamp media player.\n" \
+ "You can download it from http://www.winamp.com.\n" \
+ "To use all the features of this interface you must " \
+ "copy the gen_kvirc.dll plugin found in the KVIrc " \
+ "distribution directory to the Winamp plugins folder " \
+ "and restart winamp."
+ ,
+ "mediaplayer"
+ )
+)
+
+
+KviWinampInterface::KviWinampInterface()
+: KviMediaPlayerInterface()
+{
+}
+
+KviWinampInterface::~KviWinampInterface()
+{
+}
+
+
+int KviWinampInterface::detect(bool bStart)
+{
+ if(find_winamp(this))return 80;
+ // FIXME : check for Programs Folder\Winamp\Winamp.exe ?
+ // FIXME : if bStart try to start winamp.exe ?
+ return 50;
+}
+
+#define MP_WINAMP_SENDMESSAGE(__cmdname,__wmmsg,__lparam,__wparam) \
+ bool KviWinampInterface::__cmdname() \
+ { \
+ HWND hWinamp = find_winamp(this); \
+ if(hWinamp)SendMessage(hWinamp,__wmmsg,__lparam,__wparam); \
+ return hWinamp != 0; \
+ }
+
+#define MP_WINAMP_WM_USER(__cmdname,_ipcmsg) MP_WINAMP_SENDMESSAGE(__cmdname,WM_USER,0,_ipcmsg)
+#define MP_WINAMP_WM_COMMAND(__cmdname,_cmdmsg) MP_WINAMP_SENDMESSAGE(__cmdname,WM_COMMAND,_cmdmsg,0)
+
+MP_WINAMP_WM_USER(play,IPC_STARTPLAY)
+MP_WINAMP_WM_COMMAND(stop,WINAMP_CMD_STOP)
+MP_WINAMP_WM_COMMAND(next,WINAMP_CMD_NEXT)
+MP_WINAMP_WM_COMMAND(prev,WINAMP_CMD_PREV)
+MP_WINAMP_WM_COMMAND(pause,WINAMP_CMD_PAUSE)
+MP_WINAMP_WM_COMMAND(quit,WINAMP_CMD_QUIT)
+
+
+int KviWinampInterface::length()
+{
+ int leninsecs = -1;
+ HWND hWinamp = find_winamp(this);
+ if(hWinamp)leninsecs = SendMessage(hWinamp,WM_USER,1,IPC_GETOUTPUTTIME);
+ return leninsecs * 1000;
+}
+
+int KviWinampInterface::position()
+{
+ int leninmsecs = -1;
+ HWND hWinamp = find_winamp(this);
+ if(hWinamp)leninmsecs = SendMessage(hWinamp,WM_USER,0,IPC_GETOUTPUTTIME);
+ return leninmsecs;
+}
+
+int KviWinampInterface::bitRate()
+{
+ int ret = -1;
+ HWND hWinamp = find_winamp(this);
+ if(hWinamp)ret = SendMessage(hWinamp,WM_USER,1,IPC_GETINFO);
+ return ret;
+}
+
+int KviWinampInterface::sampleRate()
+{
+ int ret = -1;
+ HWND hWinamp = find_winamp(this);
+ if(hWinamp)ret = SendMessage(hWinamp,WM_USER,0,IPC_GETINFO);
+ return ret;
+}
+
+int KviWinampInterface::channels()
+{
+ int ret = -1;
+ HWND hWinamp = find_winamp(this);
+ if(hWinamp)ret = SendMessage(hWinamp,WM_USER,2,IPC_GETINFO);
+ return ret;
+}
+
+KviMediaPlayerInterface::PlayerStatus KviWinampInterface::status()
+{
+ HWND hWinamp = find_winamp(this);
+ int ret = 1000;
+ if(hWinamp)ret = SendMessage(hWinamp,WM_USER,0,IPC_ISPLAYING);
+ switch(ret)
+ {
+ case 0:
+ return KviMediaPlayerInterface::Stopped;
+ break;
+ case 3:
+ return KviMediaPlayerInterface::Paused;
+ break;
+ case 1:
+ return KviMediaPlayerInterface::Playing;
+ break;
+ default:
+ return KviMediaPlayerInterface::Unknown;
+ break;
+ }
+ return KviMediaPlayerInterface::Unknown;
+}
+
+QString KviWinampInterface::mrl()
+{
+ QString ret;
+ HWND hWinamp = find_winamp(this);
+ if(hWinamp)
+ {
+ int ret2 = SendMessage(hWinamp,WM_USER,KVIRC_WM_USER,KVIRC_WM_USER_CHECK);
+
+ if(ret2 =! KVIRC_WM_USER_CHECK_REPLY)
+ {
+ setLastError(__tr2qs_ctx("The winamp plugin has not been installed properly. Check /help mediaplayer.nowplaying","mediaplayer"));
+ return ret;
+ }
+
+ int len = SendMessage(hWinamp,WM_USER,KVIRC_WM_USER,KVIRC_WM_USER_GETFILE);
+
+ if(len < 4096)
+ {
+ char szBuffer[4096];
+
+ for(int i = 0;i < len;i++)
+ {
+ szBuffer[i] = SendMessage(hWinamp,WM_USER,KVIRC_WM_USER,KVIRC_WM_USER_TRANSFER + i);
+ }
+ szBuffer[len] = '\0';
+ QTextCodec *c=mediaplayer_get_codec();
+ if (c) ret = c->toUnicode(szBuffer);
+ else ret=szBuffer;
+ if(!ret.startsWith("http://",false))
+ ret.prepend("file://");
+ }
+ }
+ return ret;
+}
+
+QString KviWinampInterface::nowPlaying()
+{
+ QString ret;
+ HWND hWinamp = find_winamp(this);
+ if(hWinamp)
+ {
+ int retpippo = SendMessage(hWinamp,WM_USER,KVIRC_WM_USER,KVIRC_WM_USER_CHECK);
+ if(retpippo =! KVIRC_WM_USER_CHECK_REPLY)
+ {
+ setLastError(__tr2qs_ctx("The winamp plugin has not been installed properly. Check /help mediaplayer.nowplaying","mediaplayer") );
+ return ret;
+ }
+
+ int len = SendMessage(hWinamp,WM_USER,KVIRC_WM_USER,KVIRC_WM_USER_GETTITLE);
+
+ if(len < 4096)
+ {
+ char szBuffer[4096];
+
+ for(int i = 0;i < len;i++)
+ {
+ szBuffer[i] = SendMessage(hWinamp,WM_USER,KVIRC_WM_USER,KVIRC_WM_USER_TRANSFER + i);
+ }
+ szBuffer[ len ] = '\0';
+
+ QTextCodec *c=mediaplayer_get_codec();
+ if (c) ret = c->toUnicode(szBuffer);
+ else ret=szBuffer;
+ }
+ }
+ return ret;
+}
+
+bool KviWinampInterface::playMrl(const QString &mrl)
+{
+ HWND hWinamp = find_winamp(this);
+ if(hWinamp)
+ {
+ QTextCodec *c=mediaplayer_get_codec();
+ KviStr szMrl = c ? c->fromUnicode(mrl) : mrl.utf8();
+ COPYDATASTRUCT cds;
+ cds.dwData = IPC_PLAYFILE;
+ cds.lpData = (void *)szMrl.ptr();
+ cds.cbData = szMrl.len() + 1; // include space for null char
+ SendMessage(hWinamp,WM_COPYDATA,(WPARAM)NULL,(LPARAM) &cds);
+ return true;
+ }
+ return false;
+}
+
+bool KviWinampInterface::setVol(kvs_int_t &iVol)
+{
+ HWND hWinamp = find_winamp(this);
+ if(hWinamp)
+ {
+ SendMessage(hWinamp,WM_USER,iVol,IPC_SETVOLUME);
+ return true;
+ }
+ return false;
+}
+
+int KviWinampInterface::getVol()
+{
+ int ret = -1;
+ HWND hWinamp = find_winamp(this);
+ if(hWinamp)ret = SendMessage(hWinamp,WM_USER,-666,IPC_SETVOLUME);
+ return ret;
+}
+
+bool KviWinampInterface::jumpTo(kvs_int_t &iPos)
+{
+ HWND hWinamp = find_winamp(this);
+ if(hWinamp)
+ {
+ SendMessage(hWinamp,WM_USER,iPos,IPC_JUMPTOTIME);
+ return true;
+ }
+ return false;
+}
+bool KviWinampInterface::hide()
+{
+ HWND hWinamp = find_winamp(this);
+ HWND hWinampPE = FindWindow("Winamp PE",NULL); /*Playlist*/
+ HWND hWinampEQ = FindWindow("Winamp EQ",NULL); /*Equalizer*/
+ HWND hWinampMB = FindWindow("Winamp MB",NULL); /*MiniBrowser*/
+ HWND hWinampGen = FindWindow("Winamp Gen",NULL); /*Library*/
+ HWND hWinampVideo = FindWindow("Winamp Video",NULL); /*Video*/
+ if(hWinamp)
+ {
+ ShowWindow(hWinamp, SW_HIDE);
+ if(hWinampPE || hWinampEQ || hWinampMB || hWinampGen || hWinampVideo )
+ {
+ if(hWinampPE)
+ ShowWindow(hWinampPE, SW_HIDE);
+ if(hWinampEQ)
+ ShowWindow(hWinampEQ, SW_HIDE);
+ if(hWinampMB)
+ ShowWindow(hWinampMB, SW_HIDE);
+ if(hWinampGen)
+ ShowWindow(hWinampGen, SW_HIDE);
+ if(hWinampVideo)
+ ShowWindow(hWinampVideo, SW_HIDE);
+ return true;
+ }
+ return true;
+ }
+ return false;
+}
+
+bool KviWinampInterface::show()
+{
+ HWND hWinamp = find_winamp(this);
+ if(hWinamp)
+ {
+ ShowWindow(hWinamp, SW_SHOW);
+ return true;
+ }
+ return false;
+}
+
+bool KviWinampInterface::minimize()
+{
+ HWND hWinamp = find_winamp(this);
+ if(hWinamp)
+ {
+ ShowWindow(hWinamp, SW_SHOWMINIMIZED);
+ return true;
+ }
+ return false;
+}
+
+bool KviWinampInterface::setPlayListPos(int &iPos)
+{
+ HWND hWinamp = find_winamp(this);
+ if(hWinamp)
+ {
+ SendMessage(hWinamp,WM_USER,iPos,IPC_SETPLAYLISTPOS);
+ return true;
+ }
+ return false;
+}
+
+int KviWinampInterface::getPlayListPos()
+{
+ int ret = -1;
+ HWND hWinamp = find_winamp(this);
+ if(hWinamp)ret = SendMessage(hWinamp,WM_USER,2,IPC_GETLISTPOS);
+ return ret;
+}
+
+int KviWinampInterface::getListLength()
+{
+ int ret = -1;
+ HWND hWinamp = find_winamp(this);
+ if(hWinamp)ret = SendMessage(hWinamp,WM_USER,2,IPC_GETLISTLENGTH);
+ return ret;
+}
+
+bool KviWinampInterface::setEqData(int &iPos, int &iVal)
+{
+ HWND hWinamp = find_winamp(this);
+ if(hWinamp)
+ {
+ SendMessage(hWinamp,WM_USER,iPos,IPC_GETEQDATA);
+ SendMessage(hWinamp,WM_USER,iVal,IPC_SETEQDATA);
+ return true;
+ }
+ return false;
+}
+
+int KviWinampInterface::getEqData(int &ival)
+{
+ HWND hWinamp = find_winamp(this);
+ int ret = -1;
+ if(hWinamp)
+ {
+ ret = SendMessage(hWinamp,WM_USER,ival,IPC_GETEQDATA);
+ return ret;
+ }
+ return ret;
+}
+
+bool KviWinampInterface::getRepeat()
+{
+ HWND hWinamp = find_winamp(this);
+ if(hWinamp)
+ {
+ bool bRepeat = SendMessage(hWinamp,WM_USER,0,IPC_GET_REPEAT);
+ return bRepeat;
+ }
+ return false;
+}
+
+bool KviWinampInterface::getShuffle()
+{
+ HWND hWinamp = find_winamp(this);
+ if(hWinamp)
+ {
+ bool bShuffle = SendMessage(hWinamp,WM_USER,0,IPC_GET_SHUFFLE);
+ return bShuffle;
+ }
+ return false;
+}
+
+bool KviWinampInterface::setShuffle(bool &bVal)
+{
+ HWND hWinamp = find_winamp(this);
+ if(hWinamp)
+ {
+ bool bRepeat = SendMessage(hWinamp,WM_USER,bVal,IPC_SET_SHUFFLE);
+ return bRepeat;
+ }
+ return false;
+}
+
+bool KviWinampInterface::setRepeat(bool &bVal)
+{
+ HWND hWinamp = find_winamp(this);
+ if(hWinamp)
+ {
+ bool bShuffle = SendMessage(hWinamp,WM_USER,bVal,IPC_SET_REPEAT);
+ return bShuffle;
+ }
+ return false;
+}
+#endif //COMPILE_ON_WINDOWS
diff --git a/src/modules/mediaplayer/mp_winampinterface.h b/src/modules/mediaplayer/mp_winampinterface.h
new file mode 100644
index 00000000..ed2068db
--- /dev/null
+++ b/src/modules/mediaplayer/mp_winampinterface.h
@@ -0,0 +1,76 @@
+#ifndef _MP_WINAMPINTERFACE_H_
+#define _MP_WINAMPINTERFACE_H_
+//=============================================================================
+//
+// File : mp_winampinterface.h
+// Created on Mon 28 Mar 2005 23:41:50 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_ON_WINDOWS
+
+ #include "mp_interface.h"
+
+ class KviWinampInterface : public KviMediaPlayerInterface
+ {
+ public:
+ KviWinampInterface();
+ ~KviWinampInterface();
+ public:
+ virtual int detect(bool bStart);
+ virtual bool prev();
+ virtual bool next();
+ virtual bool play();
+ virtual bool stop();
+ virtual bool pause();
+ virtual bool quit();
+ virtual QString nowPlaying();
+ virtual QString mrl();
+ virtual int position();
+ virtual int length();
+ virtual bool playMrl(const QString &mrl);
+ virtual bool setVol(kvs_int_t &iVol);
+ virtual int getVol();
+ virtual bool jumpTo(kvs_int_t &iPos);
+ virtual int sampleRate();
+ virtual int bitRate();
+ virtual int channels();
+ virtual bool hide();
+ virtual bool show();
+ virtual bool minimize();
+ virtual int getPlayListPos();
+ virtual bool setPlayListPos(int &iPos);
+ virtual int getListLength();
+ virtual int getEqData(int &ival);
+ virtual bool setEqData(int &iPos, int &iVal);
+ virtual bool getRepeat();
+ virtual bool getShuffle();
+ virtual bool setRepeat(bool &bVal);
+ virtual bool setShuffle(bool &bVal);
+ virtual KviMediaPlayerInterface::PlayerStatus status();
+ };
+
+ MP_DECLARE_DESCRIPTOR(KviWinampInterface)
+
+#endif //COMPILE_ON_WINDOWS
+
+#endif //!_MP_WINAMPINTERFACE_H_
diff --git a/src/modules/mediaplayer/mp_xmmsinterface.cpp b/src/modules/mediaplayer/mp_xmmsinterface.cpp
new file mode 100644
index 00000000..532327af
--- /dev/null
+++ b/src/modules/mediaplayer/mp_xmmsinterface.cpp
@@ -0,0 +1,355 @@
+//=============================================================================
+//
+// File : mp_xmmsinterface.cpp
+// Created on Fri 25 Mar 2005 20:04:54 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005-2007 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+// Thnx to Alexander Stillich <torque at pltn dot org> for Audacious
+// media player interface hints :)
+//
+//=============================================================================
+
+#include "mp_xmmsinterface.h"
+
+#ifndef COMPILE_ON_WINDOWS
+
+#include "kvi_locale.h"
+
+MP_IMPLEMENT_DESCRIPTOR(
+ KviXmmsInterface,
+ "xmms",
+ __tr2qs_ctx(
+ "An interface to the popular UNIX xmms media player.\n" \
+ "Download it from http://www.xmms.org\n"
+ ,
+ "mediaplayer"
+ )
+)
+
+MP_IMPLEMENT_DESCRIPTOR(
+ KviAudaciousInterface,
+ "audacious",
+ __tr2qs_ctx(
+ "An interface to the popular UNIX audacious media player.\n" \
+ "Download it from http://audacious-media-player.org\n"
+ ,
+ "mediaplayer"
+ )
+)
+
+static const char *xmms_lib_names[] =
+{
+ "libxmms.so",
+ "libxmms.so.1",
+ "/usr/lib/libxmms.so",
+ "/usr/lib/libxmms.so.1",
+ "/usr/local/lib/libxmms.so",
+ "/usr/local/lib/libxmms.so.1",
+ 0
+};
+
+static const char *audacious_lib_names[] =
+{
+ "libaudacious.so",
+ "libaudacious.so.4",
+ "/usr/lib/libaudacious.so",
+ "/usr/lib/libaudacious.so.4",
+ "/usr/local/lib/libaudacious.so",
+ "/usr/local/lib/libaudacious.so.4",
+ 0
+};
+
+
+
+KviXmmsInterface::KviXmmsInterface()
+: KviMediaPlayerInterface()
+{
+ m_hPlayerLibrary = 0;
+ m_szPlayerLibraryName = "libxmms.so";
+ m_pLibraryPaths = xmms_lib_names;
+}
+
+KviXmmsInterface::~KviXmmsInterface()
+{
+ if(m_hPlayerLibrary)
+ {
+ kvi_library_close(m_hPlayerLibrary);
+ m_hPlayerLibrary = 0;
+ }
+}
+
+KviAudaciousInterface::KviAudaciousInterface()
+: KviXmmsInterface()
+{
+ m_szPlayerLibraryName = "libaudacious.so";
+ m_pLibraryPaths = audacious_lib_names;
+}
+
+KviAudaciousInterface::~KviAudaciousInterface()
+{
+}
+
+bool KviXmmsInterface::loadPlayerLibrary()
+{
+ if(m_hPlayerLibrary)return true;
+
+ const char **lib_name = m_pLibraryPaths;
+ while(*lib_name)
+ {
+ m_hPlayerLibrary = kvi_library_load(*lib_name);
+ if(m_hPlayerLibrary)
+ {
+ m_szPlayerLibraryName = *lib_name;
+ break;
+ }
+ lib_name++;
+ }
+ return true;
+}
+
+void * KviXmmsInterface::lookupSymbol(const char * szSymbolName)
+{
+ if(!m_hPlayerLibrary)
+ {
+ if(!loadPlayerLibrary())
+ {
+ QString tmp;
+ KviQString::sprintf(tmp,__tr2qs_ctx("Can't load the player library (%Q)","mediaplayer"),&m_szPlayerLibraryName);
+ setLastError(tmp);
+ return 0;
+ }
+ }
+ void * symptr = kvi_library_symbol(m_hPlayerLibrary,szSymbolName);
+ if(!symptr)
+ {
+ QString tmp;
+ KviQString::sprintf(tmp,__tr2qs_ctx("Can't find symbol %s in %Q","mediaplayer"),szSymbolName,&m_szPlayerLibraryName);
+ setLastError(tmp);
+ }
+ return symptr;
+}
+
+
+int KviXmmsInterface::detect(bool bStart)
+{
+ void * sym = lookupSymbol("xmms_remote_play");
+ return sym ? 80 : 0;
+}
+
+#define XMMS_SIMPLE_CALL(__symname) \
+ void (*sym)(int) = (void (*)(int))lookupSymbol(__symname); \
+ if(!sym)return false; \
+ sym(0); \
+ return true;
+
+bool KviXmmsInterface::prev()
+{
+ XMMS_SIMPLE_CALL("xmms_remote_playlist_prev")
+}
+
+bool KviXmmsInterface::next()
+{
+ XMMS_SIMPLE_CALL("xmms_remote_playlist_next")
+}
+
+bool KviXmmsInterface::play()
+{
+ XMMS_SIMPLE_CALL("xmms_remote_play")
+}
+
+bool KviXmmsInterface::stop()
+{
+ XMMS_SIMPLE_CALL("xmms_remote_stop")
+}
+
+bool KviXmmsInterface::pause()
+{
+ XMMS_SIMPLE_CALL("xmms_remote_pause")
+}
+
+bool KviXmmsInterface::quit()
+{
+ XMMS_SIMPLE_CALL("xmms_remote_quit")
+}
+
+bool KviXmmsInterface::jumpTo(kvs_int_t &iPos)
+{
+ void (*sym)(int,int) = (void (*)(int,int))lookupSymbol("xmms_remote_jump_to_time");
+ if(!sym)return false;
+ sym(0,iPos);
+ return true;
+}
+
+bool KviXmmsInterface::setVol(kvs_int_t &iVol)
+{
+ void (*sym)(int,int) = (void (*)(int,int))lookupSymbol("xmms_remote_set_main_volume");
+ if(!sym)return false;
+ sym(0,100*iVol/255);
+ return true;
+}
+
+int KviXmmsInterface::getVol()
+{
+ int (*sym)(int) = (int (*)(int))lookupSymbol("xmms_remote_get_main_volume");
+ if(!sym)return -1;
+ int iVol = sym(0);
+ return iVol * 255 /100;
+}
+
+bool KviXmmsInterface::getRepeat()
+{
+ bool (*sym)(int) = (bool (*)(int))lookupSymbol("xmms_remote_is_repeat");
+ if(!sym)return false;
+ bool ret = sym(0);
+ return ret;
+}
+
+bool KviXmmsInterface::setRepeat(bool &bVal)
+{
+ bool (*sym1)(int) = (bool (*)(int))lookupSymbol("xmms_remote_is_repeat");
+ if(!sym1)return false;
+ bool bNow = sym1(0);
+ if(bNow != bVal)
+ {
+ void (*sym2)(int) = (void (*)(int))lookupSymbol("xmms_remote_toggle_repeat");
+ if(!sym2)return false;
+ sym2(0);
+ }
+ return true;
+}
+
+bool KviXmmsInterface::getShuffle()
+{
+ bool (*sym)(int) = (bool (*)(int))lookupSymbol("xmms_remote_is_shuffle");
+ if(!sym)return false;
+ bool ret = sym(0);
+ return ret;
+}
+
+bool KviXmmsInterface::setShuffle(bool &bVal)
+{
+ bool (*sym1)(int) = (bool (*)(int))lookupSymbol("xmms_remote_is_shuffle");
+ if(!sym1)return false;
+ bool bNow = sym1(0);
+ if(bNow != bVal)
+ {
+ void (*sym2)(int) = (void (*)(int))lookupSymbol("xmms_remote_toggle_shuffle");
+ if(!sym2)return false;
+ sym2(0);
+ }
+ return true;
+}
+
+KviMediaPlayerInterface::PlayerStatus KviXmmsInterface::status()
+{
+ bool (*sym1)(int) = (bool (*)(int))lookupSymbol("xmms_remote_is_paused");
+ if(sym1)
+ {
+ if(sym1(0))return KviMediaPlayerInterface::Paused;
+ bool (*sym2)(int) = (bool (*)(int))lookupSymbol("xmms_remote_is_playing");
+ if(sym2)
+ {
+ if(sym2(0))return KviMediaPlayerInterface::Playing;
+ else return KviMediaPlayerInterface::Stopped;
+ }
+ }
+
+ return KviMediaPlayerInterface::Unknown;
+}
+
+bool KviXmmsInterface::playMrl(const QString &mrl)
+{
+ void (*sym)(int,char *) = (void (*)(int,char *))lookupSymbol("xmms_remote_playlist_add_url_string");
+ KviQCString tmp = mrl.local8Bit();
+ if(!tmp.isEmpty())
+ {
+ if(sym)
+ {
+ sym(0,tmp.data());
+ int (*sym1)(int) = (int (*)(int))lookupSymbol("xmms_remote_get_playlist_length");
+ if(sym1)
+ {
+ int len = sym1(0);
+ if(len > 0)
+ {
+ void (*sym2)(int,int) = (void (*)(int,int))lookupSymbol("xmms_remote_set_playlist_pos");
+ if(sym2)
+ {
+ sym2(0,len - 1);
+ } else return false;
+ } else return false;
+ } else return false;
+ } else return false;
+ }
+ return true;
+}
+
+QString KviXmmsInterface::nowPlaying()
+{
+ int (*sym)(int) = (int (*)(int))lookupSymbol("xmms_remote_get_playlist_pos");
+ if(!sym)return QString::null;
+ int pos = sym(0);
+ char * (*sym2)(int,int) = (char * (*)(int,int))lookupSymbol("xmms_remote_get_playlist_title");
+ if(!sym2)return QString::null;
+ return QString::fromLocal8Bit(sym2(0,pos));
+}
+
+QString KviXmmsInterface::mrl()
+{
+ int (*sym)(int) = (int (*)(int))lookupSymbol("xmms_remote_get_playlist_pos");
+ if(!sym)return QString::null;
+ int pos = sym(0);
+ char * (*sym2)(int,int) = (char * (*)(int,int))lookupSymbol("xmms_remote_get_playlist_file");
+ if(!sym2)return QString::null;
+ QString ret = QString::fromLocal8Bit(sym2(0,pos));
+ if(ret.length() > 1)
+ if(ret[0] == '/')ret.prepend("file://");
+ return ret;
+}
+
+int KviXmmsInterface::position()
+{
+ int (*sym)(int) = (int (*)(int))lookupSymbol("xmms_remote_get_playlist_pos");
+ if(!sym)return -1;
+ int pos = sym(0);
+ int (*sym2)(int,int) = (int (*)(int,int))lookupSymbol("xmms_remote_get_output_time");
+ if(!sym2)return -1;
+ return sym2(0,pos);
+}
+
+int KviXmmsInterface::length()
+{
+ int (*sym)(int) = (int (*)(int))lookupSymbol("xmms_remote_get_playlist_pos");
+ if(!sym)return -1;
+ int pos = sym(0);
+ int (*sym2)(int,int) = (int (*)(int,int))lookupSymbol("xmms_remote_get_playlist_time");
+ if(!sym2)return -1;
+ return sym2(0,pos);
+}
+
+int KviXmmsInterface::getPlayListPos()
+{
+ int (*sym)(int) = (int (*)(int))lookupSymbol("xmms_remote_get_playlist_pos");
+ if(!sym)return -1;
+ return sym(0);
+}
+
+
+
+#endif //!COMPILE_ON_WINDOWS
diff --git a/src/modules/mediaplayer/mp_xmmsinterface.h b/src/modules/mediaplayer/mp_xmmsinterface.h
new file mode 100644
index 00000000..15f81811
--- /dev/null
+++ b/src/modules/mediaplayer/mp_xmmsinterface.h
@@ -0,0 +1,84 @@
+#ifndef _MP_XMMSINTERFACE_H_
+#define _MP_XMMSINTERFACE_H_
+//=============================================================================
+//
+// File : mp_xmmsinterface.h
+// Created on Fri 25 Mar 2005 20:04:54 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2005-2007 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+// Thnx to Alexander Stillich <torque at pltn dot org> for Audacious
+// media player interface hints :)
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "mp_interface.h"
+#include "kvi_library.h"
+
+#ifndef COMPILE_ON_WINDOWS
+ class KviXmmsInterface : public KviMediaPlayerInterface
+ {
+ public:
+ KviXmmsInterface();
+ virtual ~KviXmmsInterface();
+ protected:
+ kvi_library_t m_hPlayerLibrary;
+ QString m_szPlayerLibraryName;
+ const char ** m_pLibraryPaths;
+ public:
+ virtual int detect(bool bStart);
+ virtual bool prev();
+ virtual bool next();
+ virtual bool play();
+ virtual bool stop();
+ virtual bool pause();
+ virtual bool quit();
+ virtual bool jumpTo(kvs_int_t &iPos);
+ virtual bool setVol(kvs_int_t &iVol);
+ virtual int getVol();
+ virtual KviMediaPlayerInterface::PlayerStatus status();
+ virtual QString nowPlaying();
+ virtual bool playMrl(const QString &mrl);
+ virtual QString mrl();
+ virtual int getPlayListPos();
+ virtual int position();
+ virtual int length();
+ virtual bool getRepeat();
+ virtual bool getShuffle();
+ virtual bool setRepeat(bool &bVal);
+ virtual bool setShuffle(bool &bVal);
+ protected:
+ bool loadPlayerLibrary();
+ void * lookupSymbol(const char * szSymbolName);
+ };
+
+ MP_DECLARE_DESCRIPTOR(KviXmmsInterface)
+
+ class KviAudaciousInterface : public KviXmmsInterface
+ {
+ public:
+ KviAudaciousInterface();
+ virtual ~KviAudaciousInterface();
+ };
+
+ MP_DECLARE_DESCRIPTOR(KviAudaciousInterface)
+
+#endif //!COMPILE_ON_WINDOWS
+
+#endif //!_MP_XMMSINTERFACE_H_
diff --git a/src/modules/mircimport/Makefile.am b/src/modules/mircimport/Makefile.am
new file mode 100644
index 00000000..d47e88c7
--- /dev/null
+++ b/src/modules/mircimport/Makefile.am
@@ -0,0 +1,22 @@
+###############################################################################
+# KVirc IRC client Makefile- 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+SUBDIRS = caps pics
+
+pluglib_LTLIBRARIES = libkvimircimport.la
+
+libkvimircimport_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvimircimport_la_SOURCES = libkvimircimport.cpp
+libkvimircimport_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= libkvimircimport.h
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+libkvimircimport.cpp: libkvimircimport.moc
diff --git a/src/modules/mircimport/caps/Makefile.am b/src/modules/mircimport/caps/Makefile.am
new file mode 100644
index 00000000..151a1e0a
--- /dev/null
+++ b/src/modules/mircimport/caps/Makefile.am
@@ -0,0 +1,9 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+tmpdir = $(pluglibdir)/caps/serverimport/
+
+tmp_DATA= mircimport
+
+EXTRA_DIST = $(tmp_DATA)
diff --git a/src/modules/mircimport/caps/mircimport b/src/modules/mircimport/caps/mircimport
new file mode 100644
index 00000000..9788f702
--- /dev/null
+++ b/src/modules/mircimport/caps/mircimport
@@ -0,0 +1 @@
+timestamp
diff --git a/src/modules/mircimport/libkvimircimport.cpp b/src/modules/mircimport/libkvimircimport.cpp
new file mode 100644
index 00000000..4f3ac568
--- /dev/null
+++ b/src/modules/mircimport/libkvimircimport.cpp
@@ -0,0 +1,385 @@
+//
+// File : libkvimircimport.cpp
+// Creation date : Tue Aug 27 01:20:35 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "libkvimircimport.h"
+#include "kvi_module.h"
+
+#include "kvi_filedialog.h"
+#include "kvi_fileutils.h"
+#include "kvi_locale.h"
+#include "kvi_config.h"
+#include "kvi_app.h"
+#include "kvi_qstring.h"
+
+
+#include <qmessagebox.h>
+#include <qdir.h>
+#include <qpushbutton.h>
+#include "kvi_tal_vbox.h"
+
+KviMircServersIniImport * g_pMircServersIniImport = 0;
+KviRemoteMircServersIniImport * g_pRemoteMircServersIniImport = 0;
+
+
+KviMircServersIniImport::KviMircServersIniImport(KviModuleExtensionDescriptor * d)
+: KviMexServerImport(d)
+{
+}
+
+KviMircServersIniImport::~KviMircServersIniImport()
+{
+ g_pMircServersIniImport = 0;
+}
+
+int KviMircServersIniImport::doImport(const QString& filename)
+{
+ KviConfig cfg(filename,KviConfig::Read,true);
+ int iCount = 0;
+ if(cfg.hasGroup("servers"))
+ {
+ cfg.setGroup("servers");
+ int i = 0;
+ QString key;
+ QString entry;
+ do {
+ KviQString::sprintf(key,"n%d",i);
+ entry = cfg.readEntry(key,"");
+ if(!entry.isEmpty())
+ {
+ QString description;
+ QString serv;
+ QString port;
+ kvi_u32_t uPort = 0;
+ // <description>SERVER:<server:port>GROUP:<network>
+ int idx = KviQString::find(entry,"SERVER:");
+ if(idx != -1)
+ {
+ description = entry.left(idx);
+ entry.remove(0,idx + 7);
+ idx = KviQString::find(entry,"GROUP:");
+ if(idx != -1)
+ {
+ port = entry.left(idx);
+ entry.remove(0,idx + 6);
+ }
+ idx = KviQString::find(port,':');
+ if(idx != -1)
+ {
+ serv = port.left(idx);
+ port.remove(0,idx + 1);
+ bool bOk;
+ uPort = port.toUInt(&bOk);
+ if(!bOk)uPort = 6667;
+ } else {
+ serv = port;
+ uPort = 6667;
+ }
+ }
+ if(entry.isEmpty())entry = __tr("Standalone Servers");
+ if(!serv.isEmpty())
+ {
+ KviIrcServer s;
+ s.m_szHostname = serv;
+ s.m_szDescription = description;
+ s.m_uPort = uPort;
+ iCount++;
+ emit server(s,entry);
+ }
+ ++i;
+ }
+ } while(!entry.isEmpty());
+ } else {
+ QString tmp;
+ KviQString::sprintf(tmp,__tr2qs("%Q doesn't look like a servers.ini file.\nImport failed."),&filename);
+ QMessageBox::warning(0,__tr2qs("Warning - KVIrc"),tmp);
+ }
+ return iCount;
+}
+
+void KviMircServersIniImport::start()
+{
+ //KviStr buffer;
+ QString buffer;
+ if(!KviFileDialog::askForOpenFileName(buffer,__tr("Choose a servers.ini file"),0,"*.ini",false,true))return;
+
+ doImport(buffer);
+ delete this;
+}
+
+void KviMircServersIniImport::die()
+{
+ delete this;
+}
+
+
+
+
+
+
+
+#define KVI_WWWMIRCCOUK_SERVERSINI "http://www.mirc.co.uk/servers.ini"
+
+
+
+KviRemoteMircServerImportWizard::KviRemoteMircServerImportWizard(KviRemoteMircServersIniImport * f)
+: KviTalWizard(0)
+{
+ QString capt = __tr2qs("Remote mIRC servers.ini Import Wizard");
+ setCaption(capt);
+
+
+ m_pRequest = 0;
+ m_pFilter = f;
+
+ QLabel * l = new QLabel(this);
+ l->setText(__tr2qs("<center><b>Welcome!</b><br><br>This wizard will guide you in the process of " \
+ "downloading a list of IRC servers. Please click \"<b>Next</b>\" to begin the operation.</center>"));
+ addPage(l,capt);
+
+
+ KviTalVBox * vb = new KviTalVBox(this);
+ l = new QLabel(vb);
+ l->setText(__tr2qs("<center>Here you can modify the URL that the list will be downloaded from. In most cases the default URL is acceptable.</center>"));
+
+ vb->setStretchFactor(l,1);
+
+ m_pUrlEdit = new QLineEdit(vb);
+
+ m_pUrlEdit->setText(KVI_WWWMIRCCOUK_SERVERSINI);
+
+ addPage(vb,__tr2qs("URL Selection"));
+
+ vb = new KviTalVBox(this);
+
+ l = new QLabel(__tr2qs("Please wait while the list is being downloaded"),vb);
+ vb->setStretchFactor(l,1);
+
+ m_pOutput = new QLabel(vb);
+ m_pOutput->setFrameStyle(QFrame::WinPanel | QFrame::Sunken);
+
+ addPage(vb,__tr2qs("List Download"));
+
+ setBackEnabled(vb,false);
+ setNextEnabled(vb,false);
+ setFinishEnabled(vb,true);
+
+ connect(this,SIGNAL(selected(const QString &)),this,SLOT(pageSelected(const QString &)));
+}
+
+KviRemoteMircServerImportWizard::~KviRemoteMircServerImportWizard()
+{
+ if(m_pRequest)delete m_pRequest;
+}
+
+void KviRemoteMircServerImportWizard::pageSelected(const QString &title)
+{
+ if(title == __tr2qs("List Download"))
+ {
+ start();
+ }
+}
+
+void KviRemoteMircServerImportWizard::closeEvent(QCloseEvent *)
+{
+ m_pFilter->die();
+}
+
+void KviRemoteMircServerImportWizard::done(int r)
+{
+ m_pFilter->die();
+}
+
+
+void KviRemoteMircServerImportWizard::start()
+{
+ QString url = m_pUrlEdit->text();
+ if(url.isEmpty())url = KVI_WWWMIRCCOUK_SERVERSINI;
+
+ finishButton()->setEnabled(false);
+ if(m_pRequest)delete m_pRequest;
+
+ m_pRequest = new KviHttpRequest();
+ connect(m_pRequest,SIGNAL(terminated(bool)),this,SLOT(getListTerminated(bool)));
+ connect(m_pRequest,SIGNAL(status(const QString &)),this,SLOT(getListMessage(const QString &)));
+
+ g_pApp->getTmpFileName(m_szTmpFileName,"servers.ini");
+ if(!m_pRequest->get(KviUrl(url),KviHttpRequest::StoreToFile,m_szTmpFileName))
+ {
+ delete m_pRequest;
+ m_pRequest = 0;
+ m_pOutput->setText(__tr2qs("Failed to start the server list transfer :("));
+ finishButton()->setEnabled(true);
+ }
+}
+
+void KviRemoteMircServerImportWizard::getListMessage(const QString &message)
+{
+ if(!message.isEmpty())m_pOutput->setText(message);
+}
+
+
+void KviRemoteMircServerImportWizard::getListTerminated(bool bSuccess)
+{
+ if(!m_pRequest)return;
+ if(bSuccess)
+ {
+ m_pOutput->setText(__tr2qs("File downloaded: processing ..."));
+ m_pOutput->repaint();
+#ifndef COMPILE_ON_WINDOWS
+ g_pApp->syncX();
+#endif //!COMPILE_ON_WINDOWS
+
+ int iCount = m_pFilter->doImport(m_szTmpFileName);
+
+ QString tmp;
+ if(iCount > 0)
+ tmp = __tr2qs("%1 servers imported succesfully").arg(iCount);
+ else
+ tmp = __tr2qs("No servers imported");
+ m_pOutput->setText(tmp);
+
+ QDir d;
+ d.remove(m_szTmpFileName);
+ } else m_pOutput->setText(m_pRequest->lastError());
+
+ delete m_pRequest;
+ m_pRequest = 0;
+ cancelButton()->setEnabled(false);
+ finishButton()->setEnabled(true);
+}
+
+
+KviRemoteMircServersIniImport::KviRemoteMircServersIniImport(KviModuleExtensionDescriptor * d)
+: KviMircServersIniImport(d)
+{
+ m_pWizard = 0;
+}
+
+KviRemoteMircServersIniImport::~KviRemoteMircServersIniImport()
+{
+ if(m_pWizard)delete m_pWizard;
+ g_pRemoteMircServersIniImport = 0;
+}
+
+void KviRemoteMircServersIniImport::start()
+{
+ if(m_pWizard)delete m_pWizard;
+ m_pWizard = new KviRemoteMircServerImportWizard(this);
+ m_pWizard->show();
+}
+
+void KviRemoteMircServersIniImport::die()
+{
+ delete this;
+}
+
+
+static KviModuleExtension * mircimport_local_filter_alloc(KviModuleExtensionAllocStruct * s)
+{
+ if(g_pMircServersIniImport)delete g_pMircServersIniImport;
+ g_pMircServersIniImport = new KviMircServersIniImport(s->pDescriptor);
+ return g_pMircServersIniImport;
+}
+
+static KviModuleExtension * mircimport_remote_filter_alloc(KviModuleExtensionAllocStruct * s)
+{
+ if(g_pRemoteMircServersIniImport)delete g_pRemoteMircServersIniImport;
+ g_pRemoteMircServersIniImport = new KviRemoteMircServersIniImport(s->pDescriptor);
+ return g_pRemoteMircServersIniImport;
+}
+
+static bool mircimport_module_init(KviModule * m)
+{
+ QString szPath;
+ QPixmap * pix = 0;
+ if(g_pApp->findImage(szPath,"kvi_mircimport.png"))
+ {
+ pix = new QPixmap(szPath);
+ if(pix->isNull())
+ {
+ delete pix;
+ pix = 0;
+ }
+ }
+
+ KviModuleExtensionDescriptor * d = m->registerExtension("serverimport",
+ "mIRC servers.ini import filter",
+ __tr("Import from servers.ini"),
+ mircimport_local_filter_alloc);
+
+ if(d && pix)d->setIcon(*pix);
+
+ d = m->registerExtension("serverimport",
+ "Remote mIRC servers.ini import filter",
+ __tr("Import from http://www.mirc.co.uk/servers.ini"),
+ mircimport_remote_filter_alloc);
+
+ if(d && pix)d->setIcon(*pix);
+
+ if(pix)delete pix;
+ return true;
+}
+
+static bool mircimport_module_cleanup(KviModule *m)
+{
+ if(g_pMircServersIniImport)delete g_pMircServersIniImport;
+ if(g_pRemoteMircServersIniImport)delete g_pRemoteMircServersIniImport;
+ g_pMircServersIniImport = 0;
+ g_pRemoteMircServersIniImport = 0;
+
+ return true;
+}
+
+static bool mircimport_module_can_unload(KviModule * m)
+{
+ return ((!g_pMircServersIniImport) && (!g_pRemoteMircServersIniImport));
+}
+
+/*
+KVIMODULEEXPORTFUNC KviIrcServerImport * mircimport_module_createIrcServerImport(const char *filterName)
+{
+ if(kvi_strEqualCI(filterName,__tr("Import from servers.ini")))
+ {
+ if(!g_pMircServersIniImport)g_pMircServersIniImport = new KviMircServersIniImport();
+ return g_pMircServersIniImport;
+ } else {
+ if(!g_pRemoteMircServersIniImport)g_pRemoteMircServersIniImport = new KviRemoteMircServersIniImport("http://www.mirc.co.uk/servers.ini");
+ return g_pRemoteMircServersIniImport;
+ }
+ return 0;
+}
+*/
+
+
+
+KVIRC_MODULE(
+ "File", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "mIRC servers.ini importer",
+ mircimport_module_init,
+ mircimport_module_can_unload,
+ 0,
+ mircimport_module_cleanup
+)
+
+#include "libkvimircimport.moc"
diff --git a/src/modules/mircimport/libkvimircimport.h b/src/modules/mircimport/libkvimircimport.h
new file mode 100644
index 00000000..360e8346
--- /dev/null
+++ b/src/modules/mircimport/libkvimircimport.h
@@ -0,0 +1,82 @@
+#ifndef _LIBKVIMIRCIMPORT_H_
+#define _LIBKVIMIRCIMPORT_H_
+//
+// File : libkvimircimport.h
+// Creation date : Tue Aug 27 01:28:02 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_mexserverimport.h"
+#include "kvi_string.h"
+#include "kvi_http.h"
+
+#include <kvi_tal_wizard.h>
+#include <qlineedit.h>
+#include <qlabel.h>
+
+class KviMircServersIniImport : public KviMexServerImport
+{
+ Q_OBJECT
+public:
+ KviMircServersIniImport(KviModuleExtensionDescriptor * d);
+ ~KviMircServersIniImport();
+public:
+ int doImport(const QString& filename);
+ virtual void start();
+ virtual void die();
+};
+
+class KviRemoteMircServerImportWizard;
+
+class KviRemoteMircServersIniImport : public KviMircServersIniImport
+{
+ Q_OBJECT
+public:
+ KviRemoteMircServersIniImport(KviModuleExtensionDescriptor * d);
+ ~KviRemoteMircServersIniImport();
+protected:
+ KviRemoteMircServerImportWizard * m_pWizard;
+public:
+ virtual void start();
+ virtual void die();
+};
+
+class KviRemoteMircServerImportWizard : public KviTalWizard
+{
+ Q_OBJECT
+public:
+ KviRemoteMircServerImportWizard(KviRemoteMircServersIniImport * f);
+ ~KviRemoteMircServerImportWizard();
+protected:
+ QLineEdit * m_pUrlEdit;
+ QLabel * m_pOutput;
+ KviRemoteMircServersIniImport * m_pFilter;
+ KviHttpRequest * m_pRequest;
+ QString m_szTmpFileName;
+protected:
+ virtual void closeEvent(QCloseEvent *e);
+ virtual void done(int r);
+ void start();
+protected slots:
+ void getListMessage(const QString &message);
+ void getListTerminated(bool bSuccess);
+ void pageSelected(const QString &title);
+};
+
+#endif //_LIBKVIMIRCIMPORT_H_
diff --git a/src/modules/mircimport/pics/Makefile.am b/src/modules/mircimport/pics/Makefile.am
new file mode 100644
index 00000000..839e9668
--- /dev/null
+++ b/src/modules/mircimport/pics/Makefile.am
@@ -0,0 +1,9 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+tmpdir = $(picsdir)
+
+tmp_DATA= kvi_mircimport.png
+
+EXTRA_DIST = $(tmp_DATA)
diff --git a/src/modules/mircimport/pics/kvi_mircimport.png b/src/modules/mircimport/pics/kvi_mircimport.png
new file mode 100644
index 00000000..e671256f
--- /dev/null
+++ b/src/modules/mircimport/pics/kvi_mircimport.png
Binary files differ
diff --git a/src/modules/my/Makefile.am b/src/modules/my/Makefile.am
new file mode 100644
index 00000000..4c179e48
--- /dev/null
+++ b/src/modules/my/Makefile.am
@@ -0,0 +1,20 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvimy.la
+
+libkvimy_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvimy_la_SOURCES = libkvimy.cpp idle_x11.cpp idle_mac.cpp idle.cpp
+libkvimy_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= idle.h
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+idle.cpp: idle.moc
diff --git a/src/modules/my/idle.cpp b/src/modules/my/idle.cpp
new file mode 100644
index 00000000..56720c77
--- /dev/null
+++ b/src/modules/my/idle.cpp
@@ -0,0 +1,133 @@
+/*
+ * idle.cpp - detect desktop idle time
+ * Copyright (C) 2003 Justin Karneges
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#include"idle.h"
+
+#include<qcursor.h>
+#include<qdatetime.h>
+#include<qtimer.h>
+
+static IdlePlatform *platform = 0;
+static int platform_ref = 0;
+
+
+Idle::Idle()
+{
+ d = new Private;
+ d->active = false;
+ d->idleTime = 0;
+
+ // try to use platform idle
+ if(!platform) {
+ IdlePlatform *p = new IdlePlatform;
+ if(p->init())
+ platform = p;
+ else
+ delete p;
+ }
+ if(platform)
+ ++platform_ref;
+
+ connect(&d->checkTimer, SIGNAL(timeout()), SLOT(doCheck()));
+}
+
+Idle::~Idle()
+{
+ if(platform) {
+ --platform_ref;
+ if(platform_ref == 0) {
+ delete platform;
+ platform = 0;
+ }
+ }
+ delete d;
+}
+
+bool Idle::isActive() const
+{
+ return d->active;
+}
+
+bool Idle::usingPlatform() const
+{
+ return (platform ? true: false);
+}
+
+void Idle::start()
+{
+ d->startTime = QDateTime::currentDateTime();
+
+ if(!platform) {
+ // generic idle
+ d->lastMousePos = QCursor::pos();
+ d->idleSince = QDateTime::currentDateTime();
+ }
+
+ // poll every second (use a lower value if you need more accuracy)
+ d->checkTimer.start(1000);
+}
+
+void Idle::stop()
+{
+ d->checkTimer.stop();
+}
+
+int Idle::secondsIdle()
+{
+ int i;
+ if(platform)
+ i = platform->secondsIdle();
+ else {
+ QPoint curMousePos = QCursor::pos();
+ QDateTime curDateTime = QDateTime::currentDateTime();
+ if(d->lastMousePos != curMousePos) {
+ d->lastMousePos = curMousePos;
+ d->idleSince = curDateTime;
+ }
+ i = d->idleSince.secsTo(curDateTime);
+ }
+
+ // set 'beginIdle' to the beginning of the idle time (by backtracking 'i' seconds from now)
+ QDateTime beginIdle = QDateTime::currentDateTime().addSecs(-i);
+
+ // set 't' to hold the number of seconds between 'beginIdle' and 'startTime'
+ int t = beginIdle.secsTo(d->startTime);
+
+ // beginIdle later than (or equal to) startTime?
+ if(t <= 0) {
+ // scoot ourselves up to the new idle start
+ d->startTime = beginIdle;
+ }
+ // beginIdle earlier than startTime?
+ else if(t > 0) {
+ // do nothing
+ }
+
+ // how long have we been idle?
+ int idleTime = d->startTime.secsTo(QDateTime::currentDateTime());
+ return idleTime;
+}
+
+void Idle::doCheck()
+{
+ secondsIdle(secondsIdle());
+}
+
+#include "idle.moc"
diff --git a/src/modules/my/idle.h b/src/modules/my/idle.h
new file mode 100644
index 00000000..647b2691
--- /dev/null
+++ b/src/modules/my/idle.h
@@ -0,0 +1,84 @@
+/*
+ * idle.h - detect desktop idle time
+ * Copyright (C) 2003 Justin Karneges
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#ifndef IDLE_H
+#define IDLE_H
+
+#include "kvi_settings.h"
+#include<qobject.h>
+#include<qcursor.h>
+#include<qdatetime.h>
+#include<qtimer.h>
+
+class IdlePlatform;
+
+class Idle : public QObject
+{
+ Q_OBJECT
+public:
+ Idle();
+ ~Idle();
+
+ bool isActive() const;
+ bool usingPlatform() const;
+ void start();
+ void stop();
+ int secondsIdle();
+
+signals:
+ void secondsIdle(int);
+
+private slots:
+ void doCheck();
+
+private:
+ class Private;
+ Private *d;
+};
+
+class IdlePlatform
+{
+public:
+ IdlePlatform();
+ ~IdlePlatform();
+
+ bool init();
+ int secondsIdle();
+
+private:
+ class Private;
+ Private *d;
+};
+
+class Idle::Private
+{
+public:
+ Private() {}
+
+ QPoint lastMousePos;
+ QDateTime idleSince;
+
+ bool active;
+ int idleTime;
+ QDateTime startTime;
+ QTimer checkTimer;
+};
+
+#endif
diff --git a/src/modules/my/idle_mac.cpp b/src/modules/my/idle_mac.cpp
new file mode 100644
index 00000000..92de564d
--- /dev/null
+++ b/src/modules/my/idle_mac.cpp
@@ -0,0 +1,162 @@
+/*
+ * idle_mac.cpp - detect desktop idle time
+ * Copyright (C) 2003 Tarkvara Design Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#ifdef Q_OS_MACX
+
+#include"idle.h"
+#include <Carbon/Carbon.h>
+
+// Why does Apple have to make this so complicated?
+static OSStatus LoadFrameworkBundle(CFStringRef framework, CFBundleRef *bundlePtr) {
+ OSStatus err;
+ FSRef frameworksFolderRef;
+ CFURLRef baseURL;
+ CFURLRef bundleURL;
+
+ if ( bundlePtr == nil ) return( -1 );
+
+ *bundlePtr = nil;
+
+ baseURL = nil;
+ bundleURL = nil;
+
+ err = FSFindFolder(kOnAppropriateDisk, kFrameworksFolderType, true, &frameworksFolderRef);
+ if (err == noErr) {
+ baseURL = CFURLCreateFromFSRef(kCFAllocatorSystemDefault, &frameworksFolderRef);
+ if (baseURL == nil) {
+ err = coreFoundationUnknownErr;
+ }
+ }
+ if (err == noErr) {
+ bundleURL = CFURLCreateCopyAppendingPathComponent(kCFAllocatorSystemDefault, baseURL, framework, false);
+ if (bundleURL == nil) {
+ err = coreFoundationUnknownErr;
+ }
+ }
+ if (err == noErr) {
+ *bundlePtr = CFBundleCreate(kCFAllocatorSystemDefault, bundleURL);
+ if (*bundlePtr == nil) {
+ err = coreFoundationUnknownErr;
+ }
+ }
+ if (err == noErr) {
+ if ( ! CFBundleLoadExecutable( *bundlePtr ) ) {
+ err = coreFoundationUnknownErr;
+ }
+ }
+
+ // Clean up.
+ if (err != noErr && *bundlePtr != nil) {
+ CFRelease(*bundlePtr);
+ *bundlePtr = nil;
+ }
+ if (bundleURL != nil) {
+ CFRelease(bundleURL);
+ }
+ if (baseURL != nil) {
+ CFRelease(baseURL);
+ }
+
+ return err;
+}
+
+
+class IdlePlatform::Private {
+public:
+ EventLoopTimerRef mTimerRef;
+ int mSecondsIdle;
+
+ Private() : mTimerRef(0), mSecondsIdle(0) {}
+
+ static pascal void IdleTimerAction(EventLoopTimerRef, EventLoopIdleTimerMessage inState, void* inUserData);
+
+};
+
+
+pascal void IdlePlatform::Private::IdleTimerAction(EventLoopTimerRef, EventLoopIdleTimerMessage inState, void* inUserData) {
+ switch (inState) {
+ case kEventLoopIdleTimerStarted:
+ case kEventLoopIdleTimerStopped:
+ // Get invoked with this constant at the start of the idle period,
+ // or whenever user activity cancels the idle.
+ ((IdlePlatform::Private*)inUserData)->mSecondsIdle = 0;
+ break;
+ case kEventLoopIdleTimerIdling:
+ // Called every time the timer fires (i.e. every second).
+ ((IdlePlatform::Private*)inUserData)->mSecondsIdle++;
+ break;
+ }
+}
+
+
+IdlePlatform::IdlePlatform() {
+ d = new Private();
+}
+
+IdlePlatform::~IdlePlatform() {
+ RemoveEventLoopTimer(d->mTimerRef);
+ delete d;
+}
+
+
+// Typedef for the function we're getting back from CFBundleGetFunctionPointerForName.
+typedef OSStatus (*InstallEventLoopIdleTimerPtr)(EventLoopRef inEventLoop,
+ EventTimerInterval inFireDelay,
+ EventTimerInterval inInterval,
+ EventLoopIdleTimerUPP inTimerProc,
+ void * inTimerData,
+ EventLoopTimerRef * outTimer);
+
+
+bool IdlePlatform::init() {
+ // May already be init'ed.
+ if (d->mTimerRef) {
+ return true;
+ }
+
+ // According to the docs, InstallEventLoopIdleTimer is new in 10.2.
+ // According to the headers, it has been around since 10.0.
+ // One of them is lying. We'll play it safe and weak-link the function.
+
+ // Load the "Carbon.framework" bundle.
+ CFBundleRef carbonBundle;
+ if (LoadFrameworkBundle( CFSTR("Carbon.framework"), &carbonBundle ) != noErr) {
+ return false;
+ }
+
+ // Load the Mach-O function pointers for the routine we will be using.
+ InstallEventLoopIdleTimerPtr myInstallEventLoopIdleTimer = (InstallEventLoopIdleTimerPtr)CFBundleGetFunctionPointerForName(carbonBundle, CFSTR("InstallEventLoopIdleTimer"));
+ if (myInstallEventLoopIdleTimer == 0) {
+ return false;
+ }
+
+ EventLoopIdleTimerUPP timerUPP = NewEventLoopIdleTimerUPP(Private::IdleTimerAction);
+ if ((*myInstallEventLoopIdleTimer)(GetMainEventLoop(), kEventDurationSecond, kEventDurationSecond, timerUPP, 0, &d->mTimerRef)) {
+ return true;
+ }
+
+ return false;
+}
+
+
+int IdlePlatform::secondsIdle() {
+ return d->mSecondsIdle;
+}
+#endif \ No newline at end of file
diff --git a/src/modules/my/idle_x11.cpp b/src/modules/my/idle_x11.cpp
new file mode 100644
index 00000000..fa2f1f15
--- /dev/null
+++ b/src/modules/my/idle_x11.cpp
@@ -0,0 +1,113 @@
+/*
+ * idle_x11.cpp - detect desktop idle time
+ * Copyright (C) 2003 Justin Karneges
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+#ifndef Q_OS_MACX
+#ifndef COMPILE_ON_WINDOWS
+
+#include"idle.h"
+
+#ifndef COMPILE_XSS_SUPPORT
+
+IdlePlatform::IdlePlatform() {}
+IdlePlatform::~IdlePlatform() {}
+bool IdlePlatform::init() { return false; }
+int IdlePlatform::secondsIdle() { return 0; }
+
+#else
+
+#include<qapplication.h>
+
+#include<X11/Xlib.h>
+#include<X11/Xutil.h>
+#include<X11/extensions/scrnsaver.h>
+
+#ifdef COMPILE_USE_QT4
+ #include <qdesktopwidget.h>
+#endif
+
+static XErrorHandler old_handler = 0;
+extern "C" int xerrhandler(Display* dpy, XErrorEvent* err)
+{
+ if(err->error_code == BadDrawable)
+ return 0;
+
+ return (*old_handler)(dpy, err);
+}
+
+class IdlePlatform::Private
+{
+public:
+ Private() {}
+
+ XScreenSaverInfo *ss_info;
+};
+
+IdlePlatform::IdlePlatform()
+{
+ d = new Private;
+ d->ss_info = 0;
+}
+
+IdlePlatform::~IdlePlatform()
+{
+ if(d->ss_info)
+ XFree(d->ss_info);
+ if(old_handler) {
+ XSetErrorHandler(old_handler);
+ old_handler = 0;
+ }
+ delete d;
+}
+
+bool IdlePlatform::init()
+{
+ if(d->ss_info)
+ return true;
+
+ old_handler = XSetErrorHandler(xerrhandler);
+
+ int event_base, error_base;
+ if(XScreenSaverQueryExtension(QApplication::desktop()->screen()->x11Display(), &event_base, &error_base)) {
+ d->ss_info = XScreenSaverAllocInfo();
+ return true;
+ }
+ return false;
+}
+
+#ifdef COMPILE_USE_QT4
+ #include <qx11info_x11.h>
+#endif
+
+int IdlePlatform::secondsIdle()
+{
+ if(!d->ss_info)
+ return 0;
+#ifdef COMPILE_USE_QT4
+ if(!XScreenSaverQueryInfo(QApplication::desktop()->screen()->x11Display(), QX11Info::appRootWindow(), d->ss_info))
+#else
+ if(!XScreenSaverQueryInfo(QApplication::desktop()->screen()->x11Display(), qt_xrootwin(), d->ss_info))
+#endif
+ return 0;
+ return d->ss_info->idle / 1000;
+}
+
+#endif
+
+#endif
+#endif
diff --git a/src/modules/my/libkvimy.cpp b/src/modules/my/libkvimy.cpp
new file mode 100644
index 00000000..d98d44af
--- /dev/null
+++ b/src/modules/my/libkvimy.cpp
@@ -0,0 +1,430 @@
+//
+// File : libkvimy.cpp
+// Creation date : Mon Jul 1 02:46:49 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_module.h"
+
+#include "kvi_console.h"
+
+#include "kvi_app.h"
+#include "kvi_locale.h"
+#include "kvi_ircconnection.h"
+#include "kvi_ircconnectionuserinfo.h"
+#include "kvi_ircconnectionserverinfo.h"
+#include "kvi_ircserver.h"
+#include "idle.h"
+Idle* g_pIdle;
+#ifdef COMPILE_NEW_KVS
+#define GET_KVS_CONSOLE \
+ kvs_uint_t uiWnd; \
+ KviConsole *wnd =0; \
+ KVSM_PARAMETERS_BEGIN(c) \
+ KVSM_PARAMETER("context_id",KVS_PT_UINT,KVS_PF_OPTIONAL,uiWnd) \
+ KVSM_PARAMETERS_END(c) \
+ if(!c->parameterList()->count()) \
+ { \
+ if(c->window()->console()) wnd = c->window()->console(); \
+ else c->warning(__tr2qs("This window has no associated irc context")); \
+ } \
+ else \
+ { \
+ wnd = g_pApp->findConsole(uiWnd); \
+ if(!wnd)c->warning(__tr2qs("No such irc context (%d)"),uiWnd); \
+ }
+#endif
+/*
+ @doc: my.nick
+ @type:
+ function
+ @title:
+ $my.nick
+ @short:
+ Returns the current nickname
+ @syntax:
+ <string> $my.nick([irc_context_id:uint])
+ @description:
+ Returns the nickname of the current irc context.[br]
+ If the irc context is not connected then an empty string is returned.[br]
+ If <irc_context_id> is specified this function returns acts as it was called
+ in that irc_context.[br]
+ Note that this function is different from [fnc]$me[/fnc] that will work also in a DCC CHAT.[br]
+*/
+
+
+static bool my_kvs_fnc_nick(KviKvsModuleFunctionCall * c)
+{
+ GET_KVS_CONSOLE
+ if(wnd)
+ {
+ if(wnd->connection())
+ c->returnValue()->setString(wnd->connection()->userInfo()->nickName());
+ }
+ return true;
+}
+
+/*
+ @doc: my.startIdleTimer
+ @type:
+ command
+ @title:
+ my.startIdleTimer
+ @short:
+ Starts a global idle hook
+ @syntax:
+ my.startIdleTimer()
+ @description:
+ Starts a global idle hook. Allows to detect a global user idle time
+*/
+
+static bool my_kvs_cmd_startIdleTimer(KviKvsModuleCommandCall * c)
+{
+ if(!g_pIdle)
+ g_pIdle = new Idle();
+ g_pIdle->start();
+ return true;
+}
+
+/*
+ @doc: my.stopIdleTimer
+ @type:
+ command
+ @title:
+ my.stopIdleTimer
+ @short:
+ Stops a global idle hook
+ @syntax:
+ my.stopIdleTimer()
+ @description:
+ Stops a global idle hook. Allows to detect a global user idle time
+*/
+
+static bool my_kvs_cmd_stopIdleTimer(KviKvsModuleCommandCall * c)
+{
+ if(!g_pIdle) return true;
+ g_pIdle->stop();
+ //delete g_pIdle;
+ return true;
+}
+
+/*
+ @doc: my.globalIdle
+ @type:
+ function
+ @title:
+ $my.globalIdle
+ @short:
+ Returns the current user global idle time
+ @syntax:
+ <int> $my.globalIdle()
+ @description:
+ Returns the current user global idle time
+*/
+
+static bool my_kvs_fnc_globalIdle(KviKvsModuleFunctionCall * c)
+{
+ if(g_pIdle)
+ {
+ c->returnValue()->setInteger(g_pIdle->secondsIdle());
+ } else {
+ c->error(__tr2qs("Global idle timer must be started before using $my.globalIdle function"));
+ }
+ return true;
+}
+
+/*
+ @doc: my.umode
+ @type:
+ function
+ @title:
+ $my.umode
+ @short:
+ Returns the current user mode flags
+ @syntax:
+ <string> $my.umode([irc_context_id:uint])
+ @description:
+ Returns the user mode flags of the current irc context.[br]
+ If the irc context is not connected then an empty string is returned.[br]
+ If <irc_context_id> is specified this function returns acts as it was called
+ in that irc_context.[br]
+*/
+
+static bool my_kvs_fnc_umode(KviKvsModuleFunctionCall * c)
+{
+ GET_KVS_CONSOLE
+ if(wnd)
+ {
+ if(wnd->connection())
+ c->returnValue()->setString(wnd->connection()->userInfo()->userMode());
+ }
+ return true;
+}
+
+/*
+ @doc: my.user
+ @type:
+ function
+ @title:
+ $my.user
+ @short:
+ Returns the current username
+ @syntax:
+ <string> $my.user([irc_context_id:uint])
+ @description:
+ Returns the username of the current irc context.[br]
+ If the irc context is not connected then an empty string is returned.[br]
+ If <irc_context_id> is specified this function returns acts as it was called
+ in that irc_context.[br]
+*/
+
+static bool my_kvs_fnc_user(KviKvsModuleFunctionCall * c)
+{
+ GET_KVS_CONSOLE
+ if(wnd)
+ {
+ if(wnd->connection())
+ c->returnValue()->setString(wnd->connection()->userInfo()->userName());
+ }
+ return true;
+}
+
+/*
+ @doc: my.host
+ @type:
+ function
+ @title:
+ $my.host
+ @short:
+ Returns the current hostname
+ @syntax:
+ <string> $my.host([irc_context_id:uint])
+ @description:
+ Returns the hostname of the current irc context as known by the IRC server.[br]
+ If the irc context is not connected then an empty string is returned.[br]
+ If <irc_context_id> is specified this function returns acts as it was called
+ in that irc_context.[br]
+*/
+
+
+static bool my_kvs_fnc_host(KviKvsModuleFunctionCall * c)
+{
+ GET_KVS_CONSOLE
+ if(wnd)
+ {
+ if(wnd->connection())
+ c->returnValue()->setString(wnd->connection()->userInfo()->hostName());
+ }
+ return true;
+}
+
+/*
+ @doc: my.ip
+ @type:
+ function
+ @title:
+ $my.ip
+ @short:
+ Returns the current ip address
+ @syntax:
+ <string> $my.ip([irc_context_id:uint])
+ @description:
+ Returns the ip address of the current irc context as known by the IRC server.[br]
+ The ip address is resolved as soon as the hostname is received from the server.
+ If the hostname is masked or there is an error in the DNS lookup then
+ you may get the real local host ip address as determined at connection startup.[br]
+ If the irc context is not connected then an empty string is returned.[br]
+ If <irc_context_id> is specified this function returns acts as it was called
+ in that irc_context.[br]
+*/
+
+
+static bool my_kvs_fnc_ip(KviKvsModuleFunctionCall * c)
+{
+ GET_KVS_CONSOLE
+ if(wnd)
+ {
+ if(wnd->connection())
+ c->returnValue()->setString(wnd->connection()->userInfo()->hostIp());
+ }
+ return true;
+}
+
+/*
+ @doc: my.serverIsIPV6
+ @type:
+ function
+ @title:
+ $my.serverIsSSL
+ @short:
+ Returns 1 if the current server connection use IPV6.
+ @syntax:
+ <boolean> $my.serverIsIPV6([irc_context_id:uint])
+ @description:
+ Returns 1 if the server connection use IPV6.[br]
+ If the irc context is not connected then an empty string is returned.[br]
+ If <irc_context_id> is specified this function returns acts as it was called
+ in that irc_context.[br]
+*/
+
+static bool my_kvs_fnc_serverIsIPV6(KviKvsModuleFunctionCall * c)
+{
+
+ GET_KVS_CONSOLE
+ if(wnd)
+ {
+ if(wnd->connection())
+ c->returnValue()->setBoolean(wnd->connection()->server()->isIpV6());
+ }
+ return true;
+}
+
+
+/*
+ @doc: my.serverIsSSL
+ @type:
+ function
+ @title:
+ $my.serverIsSSL
+ @short:
+ Returns 1 if the current server connection use SSL.
+ @syntax:
+ <boolean> $my.serverIsSSL([irc_context_id:uint])
+ @description:
+ Returns 1 if the server connection use SSL.[br]
+ If the irc context is not connected then an empty string is returned.[br]
+ If <irc_context_id> is specified this function returns acts as it was called
+ in that irc_context.[br]
+*/
+
+static bool my_kvs_fnc_serverIsSSL(KviKvsModuleFunctionCall * c)
+{
+
+ GET_KVS_CONSOLE
+ if(wnd)
+ {
+ if(wnd->connection())
+ c->returnValue()->setBoolean(wnd->connection()->socket()->usingSSL());
+ }
+ return true;
+}
+
+/*
+ @doc: my.server
+ @type:
+ function
+ @title:
+ $my.server
+ @short:
+ Returns the current server name
+ @syntax:
+ <string> $my.server([irc_context_id:uint])
+ @description:
+ Returns the server name of the current irc context.[br]
+ If the irc context is not connected then an empty string is returned.[br]
+ If <irc_context_id> is specified this function returns acts as it was called
+ in that irc_context.[br]
+ Please note that this function returns the name of the server as reported
+ by the server itself. Some servers report a bogus value for this field.
+ You should take a look at $context.serverIpAddress or $context.serverHostName
+ if you want a value that can be used to really reconnect to this server.
+*/
+
+static bool my_kvs_fnc_server(KviKvsModuleFunctionCall * c)
+{
+ GET_KVS_CONSOLE
+ if(wnd)
+ {
+ if(wnd->connection())
+ c->returnValue()->setString(wnd->connection()->serverInfo()->name());
+ }
+ return true;
+}
+
+/*
+ @doc: my.network
+ @type:
+ function
+ @title:
+ $my.network
+ @short:
+ Returns the current network name
+ @syntax:
+ <string> $my.network([irc_context_id:uint])
+ @description:
+ Returns the network name of the current irc context.[br]
+ If the irc context is not connected then an empty string is returned.[br]
+ If <irc_context_id> is specified this function returns acts as it was called
+ in that irc_context.[br]
+*/
+
+static bool my_kvs_fnc_network(KviKvsModuleFunctionCall * c)
+{
+ GET_KVS_CONSOLE
+ if(wnd)
+ {
+ if(wnd->connection())
+ c->returnValue()->setString(wnd->currentNetworkName().utf8().data());
+ }
+ return true;
+}
+
+static bool my_module_init(KviModule * m)
+{
+ g_pIdle = 0;
+ KVSM_REGISTER_FUNCTION(m,"nick",my_kvs_fnc_nick);
+ KVSM_REGISTER_FUNCTION(m,"user",my_kvs_fnc_user);
+ KVSM_REGISTER_FUNCTION(m,"host",my_kvs_fnc_host);
+ KVSM_REGISTER_FUNCTION(m,"ip",my_kvs_fnc_ip);
+ KVSM_REGISTER_FUNCTION(m,"server",my_kvs_fnc_server);
+ KVSM_REGISTER_FUNCTION(m,"network",my_kvs_fnc_network);
+ KVSM_REGISTER_FUNCTION(m,"umode",my_kvs_fnc_umode);
+ KVSM_REGISTER_FUNCTION(m,"serverIsSSL",my_kvs_fnc_serverIsSSL);
+ KVSM_REGISTER_FUNCTION(m,"serverIsIPV6",my_kvs_fnc_serverIsIPV6);
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"stopIdleTimer",my_kvs_cmd_stopIdleTimer);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"startIdleTimer",my_kvs_cmd_startIdleTimer);
+ return true;
+}
+
+static bool my_module_cleanup(KviModule *m)
+{
+ if(g_pIdle)
+ delete g_pIdle;
+ g_pIdle = 0;
+ return true;
+}
+
+static bool my_module_can_unload(KviModule *)
+{
+ return !g_pIdle;
+}
+
+KVIRC_MODULE(
+ "My", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)" \
+ " (C) 2005 Tonino Imbesi (grifisx at barmes dot net)" \
+ " (C) 2005 Alessandro Carbone (noldor at barmes dot net)", // author & (C)
+ "Scripting irc-context related functions",
+ my_module_init,
+ my_module_can_unload,
+ 0,
+ my_module_cleanup
+)
diff --git a/src/modules/notifier/Makefile.am b/src/modules/notifier/Makefile.am
new file mode 100644
index 00000000..59639aca
--- /dev/null
+++ b/src/modules/notifier/Makefile.am
@@ -0,0 +1,44 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+SUBDIRS = pics
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvinotifier.la
+
+libkvinotifier_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvinotifier_la_SOURCES = libkvinotifier.cpp \
+ notifierwindow.cpp \
+ notifiermessage.cpp \
+ notifierwindowtabs.cpp \
+ notifierwindowbody.cpp \
+ notifierwindowborder.cpp \
+ notifierwindowprogressbar.cpp
+
+libkvinotifier_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= \
+ notifiersettings.h \
+ notifierwindow.h \
+ notifiermessage.h \
+ notifierwindowtabs.h \
+ notifierwindowbody.h \
+ notifierwindowborder.h \
+ notifierwindowprogressbar.h
+
+confdir = $(configmodulesdir)
+
+conf_DATA = libkvinotifier.kvc
+
+EXTRA_DIST = $(conf_DATA)
+
+m_%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+notifierwindow.cpp: m_notifierwindow.moc
+notifierwindowtabs.cpp: m_notifierwindowtabs.moc
+
diff --git a/src/modules/notifier/libkvinotifier.cpp b/src/modules/notifier/libkvinotifier.cpp
new file mode 100644
index 00000000..edc27f0f
--- /dev/null
+++ b/src/modules/notifier/libkvinotifier.cpp
@@ -0,0 +1,323 @@
+//==================================================================================
+//
+// File : libkvinotifier.cpp
+// Creation date : Tue Jul 7 2004 20:21:12 CEST by Szymon Stefanek
+//
+// Copyright (C) 2005 Iacopo Palazzi < iakko(at)siena(dot)linux(dot)it >
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//==================================================================================
+
+#include "kvi_module.h"
+
+
+#include "notifierwindow.h"
+#include "notifiermessage.h"
+
+#include "kvi_kvs_variant.h"
+#include "kvi_app.h"
+#include "kvi_frame.h"
+#include "kvi_window.h"
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+#include "kvi_time.h"
+#include "kvi_options.h"
+
+#include <qsplitter.h>
+
+KviNotifierWindow * g_pNotifierWindow = 0;
+kvi_time_t g_tNotifierDisabledUntil = 0;
+
+/*
+ @doc: notifier.message
+ @type:
+ command
+ @title:
+ notifier.message
+ @short:
+ Adds a message to the notifier window
+ @syntax:
+ notifier.message [-q|quiet] [-n|noanim] [-w[=<window_id:string>]!] [-i=<image_id:string>] [-t=<timeout:integer>] <messag:string>
+ @description:
+ Adds a message to the notifier window.
+ The notifier window is shown (if not already visible)
+ unless the -q switch is present.
+ The new message becomes the current message of the notifier
+ unless the user is already typing in the input window
+ and the typed message would be directed to a different window.
+ In that case the message is appended at the end of the
+ message queue and the user will be able to scroll to it
+ by using the proper notifier buttons.[br]
+ The &lt;message&gt; text can contain simple html tags: basically you are
+ allowed to use &lt;b&gt; and &lt;i&gt;. The usage of other
+ tags is possible but is discouraged since it tends to
+ mess up the message display. In particular you should avoid
+ any color and/or font specification since the notifier is
+ skinnable and you don't know which color will result in a visible text.
+ [b]Please note that the user can forcibly disable the notifier
+ for a limited period of time (a sort of "don't bug me" option).[/b]
+ @switches:
+ !sw: -n | --noanim
+ Do not animate
+ !sw: -w | --windowid
+ Causes the message gets attacched to the specified window and
+ the user is able to type commands in that window after
+ showing up the notifier input. If the "=&lt;window_id&gt;" part
+ is omitted then the current window is used.[br]
+ !sw: -i | --icon
+ If the -i=&lt;image_id&gt; switch is present then the
+ message has the specified image displayed.
+ See the [doc:image_id]documentation on the image identifier[/doc]
+ for more informations about the image_id parameter.[br]
+ !sw: -q | --quiet
+ If you use -q then you must explicitly call [cmd]notifier.show[/cmd] to
+ show the notifier. If the -n switch is present then
+ the show action will not be animated (the notifier
+ will be shown immediately instead of fading in).
+ Obviously -n has no meaning if -q is used.[br]
+ !sw: -t | --timeout
+ Set the message lifetime to <timeout>
+ Obviously this option has no meaning if the window is not going to be shown.
+ The timeout may be overriddent by new messages but only in the future.
+ If the timeout expires and is not overridden by any new message
+ then the window will be automatically hidden.
+ A zero timeout disables auto-hiding.
+ @seealso:
+ [cmd]notifier.show[/cmd] [cmd]notifier.hide[/cmd] [fnc]$notifier.isEnabled[/fnc]()
+ @examples:
+ [example]
+ notifier.message Hello world!
+ [cmd]notifier.hide[/cmd]
+ notifier.message -q This is a hidden message!
+ notifier.message -q -i=14 This is a second hidden message with an icon
+ [cmd]notifier.show[/cmd]
+ notifier.message -w This message has the current window associated
+ notifier.message -w=[fnc]$window[/fnc] This is equivalent to the above
+ notifier.message &lt;b&gt;Bold text&lt;/b&gt; and normal text
+ [cmd]notifier.hide[/cmd]
+ notifier.message -t=10 This message will be shown only for 10 seconds
+ [/example]
+*/
+
+static bool notifier_kvs_cmd_message(KviKvsModuleCommandCall * c)
+{
+ QString szMessage;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("message",KVS_PT_STRING,0,szMessage)
+ KVSM_PARAMETERS_END(c)
+
+ if(!g_pNotifierWindow)
+ g_pNotifierWindow = new KviNotifierWindow();
+
+ QString szIco="";
+ QString szWnd="";
+
+ KviWindow * pWnd = c->window();
+
+ if(c->hasSwitch('w',"window_id"))
+ {
+ c->switches()->getAsStringIfExisting('w',"window_id",szWnd);
+ if(!szWnd.isEmpty())
+ {
+ pWnd=g_pApp->findWindow(szWnd);
+ if(!pWnd)
+ c->warning(__tr2qs_ctx("The specified window does not exist","notifier"));
+ }
+ }
+ c->switches()->getAsStringIfExisting('i',"icon",szIco);
+ kvs_int_t uTime=0;
+ if(c->hasSwitch('t',"timeout"))
+ {
+ KviKvsVariant *time=c->getSwitch('t',"timeout");
+ if(time)
+ {
+ bool bOk=time->asInteger(uTime);
+ if(!bOk)
+ {
+ uTime = 0;
+ c->warning(__tr2qs_ctx("The specified timeout is not valid, assuming 0","notifier"));
+ }
+ } else {
+ c->warning(__tr2qs_ctx("The -t switch expects a timeout in seconds","notifier"));
+ }
+ }
+
+ g_pNotifierWindow->addMessage(pWnd,szIco,szMessage,uTime);
+
+ if(!c->hasSwitch('q',"quiet"))
+ g_pNotifierWindow->doShow(!(c->hasSwitch('n',"new")));
+ return true;
+}
+
+/*
+ @doc: notifier.hide
+ @type:
+ command
+ @title:
+ notifier.hide
+ @short:
+ Hides the notifier window
+ @syntax:
+ notifier.hide [-n|--noanim]
+ @switches:
+ !sw: -n
+ Causes the hide operation is not animated.
+ @description:
+ Hide the notifier window
+ [b]Please note that the user can forcibly disable the notifier
+ for a limited period of time (a sort of "don't bug me" option).[/b]
+ @seealso:
+ [cmd]notifier.show[/cmd] [cmd]notifier.message[/cmd] [fnc]$notifier.isEnabled[/fnc]
+*/
+
+static bool notifier_kvs_cmd_hide(KviKvsModuleCommandCall * c)
+{
+ if(g_pNotifierWindow) g_pNotifierWindow->doHide(!(c->hasSwitch('n',"notanimated")));
+ return true;
+}
+
+/*
+ @doc: notifier.show
+ @type:
+ command
+ @title:
+ notifier.show
+ @short:
+ Shows the notifier window
+ @syntax:
+ notifier.show [-n|--noanim]
+ @switches:
+ !sw: -n
+ Disables the animation
+ @description:
+ Shows the notifier window if it is not already visible
+ If the -n switch is present then the show operation is
+ not animated.[br]
+ The notifier is shown ONLY if it contains some messages.
+ [b]Please note that the user can forcibly disable the notifier
+ for a limited period of time (a sort of "don't bug me" option).[/b]
+ @seealso:
+ [cmd]notifier.hide[/cmd] [cmd]notifier.message[/cmd] [fnc]$notifier.isEnabled[/fnc]
+*/
+
+static bool notifier_kvs_cmd_show(KviKvsModuleCommandCall * c)
+{
+ if(!g_pNotifierWindow)return true;
+ if(!g_pNotifierWindow->countTabs())return true;
+
+ g_pNotifierWindow->setDisableHideOnMainWindowGotAttention(true);
+ g_pNotifierWindow->doShow(!(c->hasSwitch('n',"noanim")));
+
+ return true;
+}
+/*
+ @doc: notifier.isEnabled
+ @type:
+ function
+ @title:
+ $notifier.isEnabled
+ @short:
+ Returns 1 if the notifier window is enabled
+ @syntax:
+ <boolean> $notifier.isEnabled
+ @description:
+ Returns 1 if the notifier window is enabled and 0 otherwise.
+ The user can forcibly disable the notifier as a sort of "don't bug me"
+ feature for a limited period of time. When the notifier
+ is disabled the messages sent to it will not be shown.[br]
+ The only method that you (scripter) can use to forcibly
+ re-enable the notifier is to unload the module and
+ reload it...but [b]DON'T do it[/b] :)[br]
+ There is also a global option that allows forcibly disabling
+ the notifier forever, this option could be overridden with [cmd]option[/cmd]
+ instead.. but again [b]DON'T do it[/b] :)[br]
+
+*/
+
+static bool notifier_kvs_fnc_isEnabled(KviKvsModuleFunctionCall * c)
+{
+ bool bCheck;
+ if(KVI_OPTION_BOOL(KviOption_boolForciblyDisableNotifier))
+ bCheck=false;
+ else
+ bCheck=g_tNotifierDisabledUntil < kvi_unixTime();
+ c->returnValue()->setBoolean(bCheck);
+ return true;
+}
+
+static bool notifier_module_init(KviModule * m)
+{
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"message",notifier_kvs_cmd_message);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"show",notifier_kvs_cmd_show);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"hide",notifier_kvs_cmd_hide);
+ KVSM_REGISTER_FUNCTION(m,"isEnabled",notifier_kvs_fnc_isEnabled);
+
+ return true;
+}
+
+static bool notifier_module_cleanup(KviModule *m)
+{
+ if(g_pNotifierWindow)
+ {
+ delete g_pNotifierWindow;
+ g_pNotifierWindow = 0;
+ }
+ return true;
+}
+
+static bool notifier_module_can_unload(KviModule *m)
+{
+ return (!g_pNotifierWindow);
+}
+
+typedef struct _NotifierMessageSupaDupaParameterStruct
+{
+ KviWindow * pWindow;
+ QString szIcon;
+ QString szMessage;
+ unsigned int uMessageLifetime; // 0 means no hide
+} NotifierMessageSupaDupaParameterStruct;
+
+static bool notifier_module_ctrl(KviModule *,const char *operation,void *param)
+{
+ if(kvi_strEqualCI("notifier::message",operation))
+ {
+ NotifierMessageSupaDupaParameterStruct * p = (NotifierMessageSupaDupaParameterStruct *)param;
+ if(!p)return false;
+
+ if(!g_pNotifierWindow)
+ g_pNotifierWindow = new KviNotifierWindow();
+
+ g_pNotifierWindow->addMessage(p->pWindow,p->szIcon,p->szMessage,p->uMessageLifetime);
+ g_pNotifierWindow->doShow(KVI_OPTION_BOOL(KviOption_boolDisableNotifierFadein)?false:true);
+
+ return true;
+ }
+ return false;
+}
+
+KVIRC_MODULE(
+ "Notifier",
+ "2.0.0",
+ "Copyright (C) 2005:\n" \
+ " Iacopo Palazzi (iakko at siena dot linux dot it)",
+ "KVIrc Client - Taskbar Notifier",
+ notifier_module_init,
+ notifier_module_can_unload,
+ notifier_module_ctrl,
+ notifier_module_cleanup
+)
diff --git a/src/modules/notifier/libkvinotifier.kvc b/src/modules/notifier/libkvinotifier.kvc
new file mode 100644
index 00000000..4625fe3b
--- /dev/null
+++ b/src/modules/notifier/libkvinotifier.kvc
@@ -0,0 +1,28 @@
+[NotifierSkin]
+CloseX=233
+CloseY=5
+PrevX=233
+PrevY=26
+NextX=233
+NextY=82
+WriteX=233
+WriteY=103
+TextRect=6,22,223,97
+TitleRect=6,5,223,20
+TextFontFamily=Arial
+TextFontSize=9
+TitleFontFamily=Arial
+TitleFontSize=9
+CurTextColor=45,0,0
+OldTextColor1=40,20,20
+OldTextColor2=40,40,40
+OldTextColor3=60,60,60
+OldTextColor4=85,85,85
+OldTextColor5=90,90,90
+OldTextColor6=95,95,95
+HistoricTextColor=125,125,125
+TitleColor=120,70,70
+InputFontFamily=Arial
+InputFontSize=9
+InputHeight=19
+BlinkTimeout=650
diff --git a/src/modules/notifier/notifiermessage.cpp b/src/modules/notifier/notifiermessage.cpp
new file mode 100644
index 00000000..1e91b5de
--- /dev/null
+++ b/src/modules/notifier/notifiermessage.cpp
@@ -0,0 +1,107 @@
+//=============================================================================
+//
+// File : notifiermessage.cpp
+// Created on mar 02 nov 2004 02:41:18 by Iacopo
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2004 Iacopo <[email protected]>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "notifiermessage.h"
+#include "notifierwindow.h"
+
+#include "kvi_iconmanager.h"
+#include "kvi_config.h"
+#include "kvi_app.h"
+#include "kvi_window.h"
+
+#include "kvi_locale.h"
+#include "kvi_frame.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_options.h"
+
+/*
+#ifdef COMPILE_ON_WINDOWS
+ #include <windows.h>
+#endif
+
+#ifdef COMPILE_KDE_SUPPORT
+ #include <netwm.h>
+#endif
+*/
+
+#include <qapplication.h>
+#include <qpainter.h>
+#include <qimage.h>
+#include <qdesktopwidget.h>
+#include <qtooltip.h>
+
+#ifdef COMPILE_USE_QT4
+ #define QPopupMenu Q3PopupMenu
+ #include <q3popupmenu.h>
+#else
+ #include <qpopupmenu.h>
+#endif
+
+extern kvi_time_t g_tNotifierDisabledUntil;
+
+KviNotifierMessage::KviNotifierMessage(KviNotifierWindow * pNotifierWindow, QPixmap * pImage, const QString &szText)
+{
+ m_pText = new QSimpleRichText(KviMircCntrl::stripControlBytes(szText),pNotifierWindow->defaultFont());
+ m_pText->setWidth(pNotifierWindow->textWidth());
+ m_pImage = pImage;
+ m_bHistoric = false;
+}
+
+KviNotifierMessage::~KviNotifierMessage()
+{
+ delete m_pText;
+ if(m_pImage)delete m_pImage;
+}
+
+static void increase_transparency(QImage &buffer,QImage &srcimg,int iDivisor)
+{
+ buffer.create(srcimg.width(),srcimg.height(),32);
+ buffer.setAlphaBuffer(true);
+
+ for(int y = 0;y < buffer.height();y++)
+ {
+ QRgb * dst = (QRgb *)buffer.scanLine(y);
+ QRgb * end = dst + buffer.width();
+ QRgb * src = (QRgb *)srcimg.scanLine(y);
+
+ while(dst < end)
+ {
+ *dst = qRgba(qRed(*src),qGreen(*src),qBlue(*src),qAlpha(*src) / iDivisor);
+ dst++;
+ src++;
+ }
+ }
+}
+
+void KviNotifierMessage::setHistoric()
+{
+ m_bHistoric = true;
+ if(!m_pImage)return;
+ if(!m_pImage->hasAlphaChannel())return;
+ QImage tmp;
+ QImage out = m_pImage->convertToImage();
+ increase_transparency(tmp,out,2);
+ m_pImage->convertFromImage(tmp);
+}
+
diff --git a/src/modules/notifier/notifiermessage.h b/src/modules/notifier/notifiermessage.h
new file mode 100644
index 00000000..da4a6df2
--- /dev/null
+++ b/src/modules/notifier/notifiermessage.h
@@ -0,0 +1,97 @@
+#ifndef _NOTIFIERMESSAGE_H_
+#define _NOTIFIERMESSAGE_H_
+//=============================================================================
+//
+// File : notifiermessage.h
+// Created on mar 02 nov 2004 02:41:18 by
+// Iacopo Palazzi < iakko(at)siena(dot)linux(dot)it >
+//
+// This file is part of the KVIrc distribution
+// Copyright (C) 2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "kvi_settings.h"
+
+#include <qwidget.h>
+#include <qrect.h>
+#include <qtimer.h>
+#include <qpixmap.h>
+#include <qimage.h>
+#include <qfont.h>
+#include <qcolor.h>
+#include <qlineedit.h>
+
+#include "kvi_qstring.h"
+#include "kvi_pointerlist.h"
+#include "kvi_time.h"
+
+#ifdef COMPILE_USE_QT4
+ #define QSimpleRichText Q3SimpleRichText
+ #define QPopupMenu Q3PopupMenu
+ #include <q3popupmenu.h>
+ #include <q3simplerichtext.h>
+#else
+ #include <qsimplerichtext.h>
+#endif
+
+class KviWindow;
+class KviNotifierWindow;
+
+class QPopupMenu;
+
+class KviNotifierMessage
+{
+ friend class KviNotifierWindow;
+public:
+ KviNotifierMessage(KviNotifierWindow * pNotifierWindow, QPixmap * pImage, const QString &szText);
+ ~KviNotifierMessage();
+
+// ================================
+// Put members declaration below...
+// ================================
+private:
+
+public:
+
+protected:
+ KviWindow * m_pWindow;
+ QPixmap * m_pImage;
+ QSimpleRichText * m_pText;
+ bool m_bHistoric;
+
+// ================================
+// Put methods declaration below...
+// ================================
+private:
+
+public:
+ bool historic(){ return m_bHistoric; };
+ void setHistoric();
+ void setWindow(KviWindow * pWnd){ m_pWindow = pWnd; };
+ QPixmap * image(){ return m_pImage; };
+ QSimpleRichText * text(){ return m_pText; };
+
+protected:
+
+
+};
+
+#define NUM_OLD_COLORS 6
+
+#endif //!_NOTIFIERMESSAGE_H_
diff --git a/src/modules/notifier/notifiersettings.h b/src/modules/notifier/notifiersettings.h
new file mode 100644
index 00000000..b694dc59
--- /dev/null
+++ b/src/modules/notifier/notifiersettings.h
@@ -0,0 +1,66 @@
+#ifndef _NOTIFIER_SETTINGS_H_
+#define _NOTIFIER_SETTINGS_H_
+//=============================================================================
+//
+// File : kvinotifierwindowcaption.h
+// Created on gio 30 dic 2004 21:21:33 by Iacopo Palazzi
+//
+// This file is part of the Notifier - KVIrc Distribution distribution
+// Copyright (C) 2004 Iacopo Palazzi < iakko(at)siena(dot)linux(dot)it >
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+// Global settings for KviNotifier
+
+
+
+#define WDG_MIN_WIDTH 370
+#define WDG_MIN_HEIGHT 150
+#define WDG_BORDER_THICKNESS 5
+#define SPACING 2
+
+#define WDG_ICON_OUT 0
+#define WDG_ICON_OVER 1
+#define WDG_ICON_CLICKED 2
+#define WDG_ICON_ON 3
+#define WDG_ICON_OFF 4
+
+#define NTF_TABS_FONT_BASELINE 8
+
+#define MAX_MESSAGES_IN_WINDOW 20
+// keep hidden messages for 600 seconds : 10 min
+#define MAX_MESSAGE_LIFETIME 600
+
+#define OPACITY_STEP 0.07
+
+#define NUM_OLD_COLORS 6
+
+#define WDG_UPSX 1
+#define WDG_UP 2
+#define WDG_UPDX 3
+#define WDG_DWNSX 4
+#define WDG_DWN 5
+#define WDG_DWNDX 6
+#define WDG_SX 7
+#define WDG_DX 8
+
+#define m_mac_bkgColor QColor(236,233,216) // Light-brown color of notifier background widget
+
+enum State { Hidden, Showing, Visible, Hiding , FocusingOff, FocusingOn };
+enum TabState { Normal, Highlighted, Changed };
+
+#endif //_NOTIFIER_SETTINGS_H_
diff --git a/src/modules/notifier/notifierwindow.cpp b/src/modules/notifier/notifierwindow.cpp
new file mode 100644
index 00000000..d275be23
--- /dev/null
+++ b/src/modules/notifier/notifierwindow.cpp
@@ -0,0 +1,1427 @@
+//==================================================================================
+//
+// File : notifierwindow.cpp
+// Creation date : Tue Jul 6 2004 20:25:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2004 Iacopo Palazzi < iakko(at)siena.linux.it >
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the linkss of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//==================================================================================
+#include "kvi_settings.h"
+
+#ifdef COMPILE_USE_QT4
+ #define QPopupMenu Q3PopupMenu
+ #define QSimpleRichText Q3SimpleRichText
+
+ #include <q3popupmenu.h>
+ #include <q3simplerichtext.h>
+#else
+ #include <qpopupmenu.h>
+ #include <qsimplerichtext.h>
+#endif
+
+ #include <qpainter.h>
+
+#include "notifiermessage.h"
+#include "notifierwindow.h"
+
+#include "kvi_iconmanager.h"
+#include "kvi_config.h"
+#include "kvi_app.h"
+#include "kvi_window.h"
+
+#include "kvi_locale.h"
+#include "kvi_frame.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_options.h"
+#include "kvi_userinput.h"
+
+#include <qapplication.h>
+#include <qimage.h>
+#include <qdesktopwidget.h>
+#include <qtooltip.h>
+#include <qevent.h>
+#include <qpen.h>
+#include <qfontmetrics.h>
+#include <qregexp.h>
+
+#include "notifierwindowbody.h"
+#include "notifierwindowborder.h"
+#include "notifierwindowprogressbar.h"
+#include "notifierwindowtabs.h"
+
+extern KviNotifierWindow * g_pNotifierWindow;
+
+KviNotifierWindow::KviNotifierWindow()
+: QWidget(0,"kvirc_notifier_window",
+#ifdef COMPILE_ON_WINDOWS
+ Qt::WStyle_Customize |
+ Qt::WStyle_NoBorder |
+ Qt::WStyle_Tool |
+ Qt::WStyle_StaysOnTop)
+#else
+ Qt::WStyle_Customize |
+ Qt::WStyle_NoBorder |
+#ifndef Q_OS_MACX
+ Qt::WStyle_Tool |
+ Qt::WX11BypassWM |
+#endif
+ Qt::WStyle_StaysOnTop)
+#endif
+{
+
+ g_pNotifierWindow = this;
+
+ m_eState = Hidden;
+ m_dOpacity = 0.0;
+ m_pShowHideTimer = 0;
+ m_pBlinkTimer = 0;
+ m_tAutoHideAt = 0;
+ m_tStartedAt=0;
+ m_pAutoHideTimer = 0;
+ m_pProgressTimer = 0;
+
+ m_pWndBorder = new KviNotifierWindowBorder();
+
+ reloadImages();
+
+ KviStr buffer;
+ g_pApp->getReadOnlyConfigPath(buffer,"libkvinotifier.kvc",KviApp::ConfigPlugins,true);
+
+ KviConfig cfg(buffer.ptr(),KviConfig::Read);
+
+ cfg.setGroup("NotifierSkin");
+
+ QString szFamily = cfg.readEntry("TextFontFamily","Arial");
+ m_pDefaultFont = new QFont(szFamily,cfg.readIntEntry("TextFontSize",9));
+ szFamily = cfg.readEntry("TitleFontFamily","Arial");
+ m_pTitleFont = new QFont(szFamily,cfg.readIntEntry("TitleFontSize",9));
+
+ m_clrCurText = cfg.readColorEntry("CurTextColor",QColor(40,0,0));
+ m_clrHistoricText = cfg.readColorEntry("HistoricTextColor",QColor(125,125,125));
+ m_clrTitle = QColor(255,255,255); //cfg.readColorEntry("TitleColor",QColor(0,0,0));
+ for(int i=0;i<NUM_OLD_COLORS;i++)
+ {
+ KviStr szKey;
+ szKey.sprintf("OldTextColor%d",i + 1);
+ m_clrOldText[i] = cfg.readColorEntry(szKey.ptr(),QColor(90,90,90));
+ }
+
+ m_iBlinkTimeout = cfg.readIntEntry("BlinkTimeout",650);
+ if(m_iBlinkTimeout < 100)m_iBlinkTimeout = 100;
+ m_iInputHeight = cfg.readIntEntry("InputHeight",20);
+ if(m_iInputHeight < 10)m_iInputHeight = 10;
+
+ setBackgroundMode(Qt::NoBackground);
+#ifdef COMPILE_USE_QT4
+ setFocusPolicy(Qt::NoFocus);
+#else
+ setFocusPolicy(QWidget::NoFocus);
+#endif
+ setMouseTracking(true);
+ //setCursor(m_cursor);
+
+ hide();
+ m_pLineEdit = new QLineEdit(this);
+ m_pLineEdit->setGeometry(0,0,0,0);
+ m_pLineEdit->hide();
+ m_pLineEdit->installEventFilter(this);
+ connect(m_pLineEdit,SIGNAL(returnPressed()),this,SLOT(returnPressed()));
+
+ szFamily = cfg.readEntry("InputFontFamily","Arial");
+ m_pLineEdit->setFont(QFont(szFamily,cfg.readIntEntry("InputFontSize",9)));
+
+ m_bBlinkOn = false;
+
+ m_bCloseDown = false;
+ m_bPrevDown = false;
+ m_bNextDown = false;
+ m_bWriteDown = false;
+
+ m_bKeyShiftPressed = false;
+
+ m_bLeftButtonIsPressed = false;
+ m_bDiagonalResizing = false;
+ m_bResizing = false;
+
+ m_pContextPopup = 0;
+ m_pDisablePopup = 0;
+
+ m_bDragging = false;
+
+ m_bDisableHideOnMainWindowGotAttention = false;
+
+ // Positioning the notifier bottom-right
+ int iWidth = m_pixBackground.width();
+ int iHeight = m_pixBackground.height();
+ QDesktopWidget * w = QApplication::desktop();
+ QRect r = w->availableGeometry(w->primaryScreen()); //w->screenGeometry(w->primaryScreen());
+
+ /*debug("r.x(),r.y(): %d,%d",r.x(),r.y());
+ debug("r.width(),r.height(): %d,%d",r.width(),r.height());*/
+
+ m_wndRect.setRect( r.x() + r.width() - (iWidth + SPACING), r.y() + r.height() - (iHeight + SPACING), iWidth, iHeight );
+
+ //m_pWndBorder = new KviNotifierWindowBorder();
+ m_pWndTabs = new KviNotifierWindowTabs(m_pWndBorder->tabsRect());
+ m_pWndBody = new KviNotifierWindowBody(m_pWndBorder->bodyRect());
+
+ m_pProgressBar = new KviNotifierWindowProgressBar(m_pWndBorder->progressRect());
+
+ // FIXME: Ugly global-font initialization..
+ QFontMetrics titleFontMetrics(*m_pTitleFont);
+ m_pWndBorder->centerTitle(titleFontMetrics.height());
+
+ connect(g_pApp,SIGNAL(reloadImages()),this,SLOT(reloadImages()));
+}
+
+KviNotifierWindow::~KviNotifierWindow()
+{
+ stopShowHideTimer();
+ stopBlinkTimer();
+ stopAutoHideTimer();
+ delete m_pDefaultFont;
+ delete m_pTitleFont;
+ delete m_pWndBorder;
+ delete m_pWndTabs;
+ delete m_pWndBody;
+}
+
+int KviNotifierWindow::countTabs() {
+ return m_pWndTabs->count();
+}
+
+void KviNotifierWindow::reloadImages()
+{
+ m_pixBackground.resize(WDG_MIN_WIDTH,WDG_MIN_HEIGHT);
+ m_pixBackground.fill();
+ m_pixBackgroundHighlighted.resize(m_pixBackground.size());
+ m_pixBackgroundHighlighted.fill();
+
+ m_pWndBorder->resize(m_pixBackground.size());
+}
+
+
+void KviNotifierWindow::addMessage(KviWindow * pWnd,const QString &szImageId,const QString &szText,unsigned int uMessageTime)
+{
+ QPixmap * pIcon;
+ QString szMessage=szText;
+ szMessage.replace( QRegExp("\r([^\r])*\r([^\r])+\r"), "\\2" );
+ if(szImageId.isEmpty())pIcon = 0;
+ else pIcon = g_pIconManager->getImage(szImageId);
+
+ KviNotifierMessage * m = new KviNotifierMessage(this,pIcon ? new QPixmap(*pIcon) : 0,szMessage);
+
+ m_pWndTabs->addMessage(pWnd, m); // Adds a tab about the sender pWnd
+
+ if(!isActiveWindow())
+ startBlinking();
+
+ if(uMessageTime > 0)
+ {
+ kvi_time_t tAutoHide = kvi_unixTime() + uMessageTime;
+ if(m_tAutoHideAt < tAutoHide)
+ {
+ m_tAutoHideAt = tAutoHide;
+ if(m_eState == Visible)startAutoHideTimer();
+ }
+ } else {
+ // never hide
+ stopAutoHideTimer();
+ m_tAutoHideAt = 0;
+ }
+
+ if(pWnd)
+ {
+ if(pWnd->hasAttention())m_bDisableHideOnMainWindowGotAttention = true;
+ }
+
+ //m_pWndTabs->setCurrentMessage(m);
+ if(isVisible())update();
+ // else the line edit was hidden
+}
+
+
+int KviNotifierWindow::textWidth() {
+ return m_pWndBody->textRect().width() - 20;
+};
+
+void KviNotifierWindow::stopShowHideTimer()
+{
+ if(!m_pShowHideTimer)return;
+ delete m_pShowHideTimer;
+ m_pShowHideTimer = 0;
+}
+
+void KviNotifierWindow::stopBlinkTimer()
+{
+ if(!m_pBlinkTimer)return;
+ delete m_pBlinkTimer;
+ m_pBlinkTimer = 0;
+}
+
+void KviNotifierWindow::stopAutoHideTimer()
+{
+ if(m_pProgressTimer) delete m_pProgressTimer;
+ m_pProgressTimer = 0;
+
+ if(!m_pAutoHideTimer)return;
+ delete m_pAutoHideTimer;
+ m_pAutoHideTimer = 0;
+ m_pProgressBar->setProgress(0);
+}
+
+void KviNotifierWindow::computeRect()
+{
+ int iWidth = m_pixBackground.width();
+ int iHeight = m_pixBackground.height();
+ m_pWndBorder->setGeometry(QPoint(x(),y()), QSize(iWidth,iHeight));
+ update();
+}
+
+void KviNotifierWindow::doShow(bool bDoAnimate)
+{
+ if(KVI_OPTION_BOOL(KviOption_boolForciblyDisableNotifier))return;
+
+ kvi_time_t tNow = kvi_unixTime();
+ if(g_tNotifierDisabledUntil > tNow)return;
+ g_tNotifierDisabledUntil = 0;
+
+ switch(m_eState)
+ {
+ case Showing:
+ // already showing up
+ return;
+ break;
+ case Visible:
+ // already visible
+ return;
+ break;
+ case Hiding:
+ // ops.. hiding!
+ m_eState = Showing;
+ break;
+ case Hidden:
+ stopShowHideTimer();
+ stopBlinkTimer();
+
+ m_bDragging = false;
+ m_bCloseDown = false;
+ m_bPrevDown = false;
+ m_bNextDown = false;
+ m_bWriteDown = false;
+ m_bBlinkOn = false;
+ #if (!defined COMPILE_USE_QT4) || !(defined(COMPILE_USE_QT4) && (defined(COMPILE_ON_WINDOWS) || defined(Q_OS_MACX)))
+ m_imgDesktop = QPixmap::grabWindow(
+ QApplication::desktop()->winId(),
+ m_wndRect.x(),
+ m_wndRect.y(),
+ m_wndRect.width(),
+ m_wndRect.height()).convertToImage();
+ #endif
+ // QPixmap tmp = QPixmap::grabWindow( QApplication::desktop()->winId(),m_wndRect.x(), m_wndRect.y(), m_wndRect.width(), m_wndRect.height());
+ // tmp.save("/root/pix.png","PNG");
+ m_pixForeground.resize(m_pixBackground.size());
+ m_imgBuffer.create(m_pixBackground.width(),m_pixBackground.height(),32);
+ if(bDoAnimate)
+ {
+ m_pShowHideTimer = new QTimer();
+ connect(m_pShowHideTimer,SIGNAL(timeout()),this,SLOT(heartbeat()));
+ m_dOpacity = OPACITY_STEP;
+ m_eState = Showing;
+ m_bCrashShowWorkAround=true;
+ #if defined(COMPILE_USE_QT4) && (defined(COMPILE_ON_WINDOWS) || defined(Q_OS_MACX))
+ setWindowOpacity(m_dOpacity);
+ #endif
+ show();
+ #if defined(COMPILE_USE_QT4) && (defined(COMPILE_ON_WINDOWS) || defined(Q_OS_MACX))
+ m_pShowHideTimer->start(40);
+ #else
+ m_pShowHideTimer->start(100);
+ #endif
+ computeRect();
+ m_bCrashShowWorkAround=false;
+ //show();
+
+ } else {
+ m_dOpacity = 1.0;
+ m_eState = Visible;
+ show();
+ startBlinking();
+ startAutoHideTimer();
+ }
+ break;
+ }
+}
+
+bool KviNotifierWindow::shouldHideIfMainWindowGotAttention()
+{
+ if(m_bDisableHideOnMainWindowGotAttention)return false;
+ KviNotifierWindowTab * t = m_pWndTabs->currentTab();
+ if(!t)return false;
+ if(!t->window())return false;
+ return t->window()->hasAttention();
+}
+
+
+void KviNotifierWindow::heartbeat()
+
+{
+ bool bIncreasing;
+ double targetOpacity = 0; //qt4
+ switch(m_eState)
+ {
+ case Hidden:
+ hideNow();
+ break;
+ case Visible:
+ stopShowHideTimer();
+ m_dOpacity = 1.0;
+ if(!isVisible())show(); //!!!
+ break;
+ case Showing:
+ // if the main window got attention while
+ // showing up then just hide now
+ if(shouldHideIfMainWindowGotAttention())
+ {
+ m_eState = Hiding;
+ } else {
+ m_dOpacity += OPACITY_STEP;
+#ifdef COMPILE_USE_QT4
+ targetOpacity = isActiveWindow() ? KVI_OPTION_UINT(KviOption_uintNotifierActiveTransparency) : KVI_OPTION_UINT(KviOption_uintNotifierInactiveTransparency);
+
+ targetOpacity/=100;
+ if(m_dOpacity >= targetOpacity)
+ {
+ m_dOpacity = targetOpacity;
+#else
+ if(m_dOpacity >= 1.0)
+ {
+ m_dOpacity = 1.0;
+#endif
+ m_eState = Visible;
+ stopShowHideTimer();
+ startBlinking();
+ startAutoHideTimer();
+ }
+
+ if(!isVisible())show(); //!!!
+ if(m_pLineEdit->isVisible())m_pLineEdit->hide();
+ #if defined(COMPILE_USE_QT4) && (defined(COMPILE_ON_WINDOWS) || defined(Q_OS_MACX))
+ setWindowOpacity(m_dOpacity);
+ #endif
+ update();
+
+ }
+ break;
+#ifdef COMPILE_USE_QT4
+ case FocusingOn:
+ targetOpacity = KVI_OPTION_UINT(KviOption_uintNotifierActiveTransparency);
+ targetOpacity/=100;
+ bIncreasing = targetOpacity>m_dOpacity;
+ m_dOpacity += bIncreasing?
+ OPACITY_STEP : -(OPACITY_STEP);
+ if( (bIncreasing && (m_dOpacity >= targetOpacity) ) ||
+ (!bIncreasing && (m_dOpacity <= targetOpacity) )
+ )
+ {
+ m_dOpacity = targetOpacity;
+ m_eState = Visible;
+ stopShowHideTimer();
+ }
+
+ setWindowOpacity(m_dOpacity);
+ break;
+ case FocusingOff:
+ targetOpacity = KVI_OPTION_UINT(KviOption_uintNotifierInactiveTransparency);
+ targetOpacity/=100;
+ bIncreasing = targetOpacity>m_dOpacity;
+ m_dOpacity += bIncreasing ? OPACITY_STEP : -(OPACITY_STEP);
+ //debug("%f %f %i %i",m_dOpacity,targetOpacity,bIncreasing,(m_dOpacity >= targetOpacity));
+ if( (bIncreasing && (m_dOpacity >= targetOpacity) ) ||
+ (!bIncreasing && (m_dOpacity <= targetOpacity) )
+ )
+ {
+ m_dOpacity = targetOpacity;
+ m_eState = Visible;
+ stopShowHideTimer();
+ }
+
+ setWindowOpacity(m_dOpacity);
+ break;
+#endif
+ case Hiding:
+ m_dOpacity -= OPACITY_STEP;
+ #if defined(COMPILE_USE_QT4) && (defined(COMPILE_ON_WINDOWS) || defined(Q_OS_MACX))
+ setWindowOpacity(m_dOpacity);
+ #endif
+ if(m_pLineEdit->isVisible())m_pLineEdit->hide();
+ if(m_dOpacity <= 0.0)hideNow();
+ else update();
+ break;
+ }
+}
+
+void KviNotifierWindow::hideNow()
+{
+ stopBlinkTimer();
+ stopShowHideTimer();
+ stopAutoHideTimer();
+ m_eState = Hidden;
+ m_dOpacity = 0.0;
+ m_tAutoHideAt = 0;
+
+ if(m_pLineEdit->isVisible())m_pLineEdit->hide();
+ hide();//if(isVisible())hide();
+}
+
+void KviNotifierWindow::doHide(bool bDoAnimate)
+{
+ stopAutoHideTimer();
+ switch(m_eState)
+ {
+ case Hiding:
+ // already hiding up
+ if(!bDoAnimate)hideNow();
+ return;
+ break;
+ case Hidden:
+ // already hidden
+ if(isVisible())hideNow(); // !!!
+ return;
+ break;
+ case Showing:
+ // ops.. hiding!
+ if(!bDoAnimate)hideNow();
+ else {
+ // continue animating, but hide
+ m_eState = Hiding;
+ }
+ break;
+ case Visible:
+ stopBlinkTimer();
+ stopShowHideTimer();
+ if(m_pLineEdit->isVisible())m_pLineEdit->hide();
+ if((!bDoAnimate) || (x() != m_pWndBorder->x()) || (y() != m_pWndBorder->y()))
+ {
+
+ //debug ("just hide quickly with notifier x() %d and notifier y() % - WBorderx() %d and WBordery() %d and bDoanimate %d",x(),y(),m_pWndBorder->x(),m_pWndBorder->y(),bDoAnimate);
+ // the user asked to not animate or
+ // the window has been moved and the animation would suck anyway
+ // just hide quickly
+ hideNow();
+ } else {
+ //debug ("starting hide animation notifier x() %d and notifier y() % - WBorderx() %d and WBordery() %d and bDoanimate %d",x(),y(),m_pWndBorder->x(),m_pWndBorder->y(),bDoAnimate);
+ m_pShowHideTimer = new QTimer();
+ connect(m_pShowHideTimer,SIGNAL(timeout()),this,SLOT(heartbeat()));
+ m_dOpacity = 1.0 - OPACITY_STEP;
+ m_eState = Hiding;
+ #if defined(COMPILE_USE_QT4) && (defined(COMPILE_ON_WINDOWS) || defined(Q_OS_MACX))
+ setWindowOpacity(m_dOpacity);
+ update();
+ m_pShowHideTimer->start(40);
+ #else
+ update();
+ m_pShowHideTimer->start(100);
+ #endif
+
+
+ }
+ break;
+ }
+}
+
+void KviNotifierWindow::showEvent(QShowEvent *e)
+{
+ computeRect();
+ setGeometry(m_wndRect); // w_win = w_wndRect
+
+}
+
+void KviNotifierWindow::hideEvent(QHideEvent * e)
+{
+ if (m_bCrashShowWorkAround) return;
+ stopBlinkTimer();
+ stopShowHideTimer();
+ stopAutoHideTimer();
+ m_eState = Hidden; // make sure it's true
+ m_tAutoHideAt = 0; // make sure it's true
+ markAllMessagesAsHistoric();
+ m_bDisableHideOnMainWindowGotAttention = false;
+}
+
+void KviNotifierWindow::startBlinking()
+{
+ stopBlinkTimer();
+ m_bBlinkOn = false;
+
+
+ if(!KVI_OPTION_BOOL(KviOption_boolDisableNotifierFlashing))
+ {
+ m_pBlinkTimer = new QTimer();
+ connect(m_pBlinkTimer,SIGNAL(timeout()),this,SLOT(blink()));
+ m_iBlinkCount = 0;
+ m_pBlinkTimer->start(m_iBlinkTimeout);
+ }
+}
+
+void KviNotifierWindow::startAutoHideTimer()
+{
+ stopAutoHideTimer();
+ m_tStartedAt = kvi_unixTime();
+ m_qtStartedAt.start();
+ if(m_tAutoHideAt <= m_tStartedAt)return;
+
+ int nSecs = m_tAutoHideAt - m_tStartedAt;
+ if(nSecs < 5)nSecs = 5;
+ m_pAutoHideTimer = new QTimer();
+ connect(m_pAutoHideTimer,SIGNAL(timeout()),this,SLOT(autoHide()));
+ m_pAutoHideTimer->start(nSecs * 1000);
+
+ m_pProgressTimer= new QTimer();
+ connect(m_pProgressTimer,SIGNAL(timeout()),this,SLOT(progressUpdate()));
+ m_pProgressTimer->start(60);
+}
+
+void KviNotifierWindow::autoHide()
+{
+ m_tAutoHideAt = 0;
+ stopAutoHideTimer();
+ doHide(true);
+}
+
+void KviNotifierWindow::blink()
+{
+ m_iBlinkCount++;
+ m_bBlinkOn = !m_bBlinkOn;
+
+ if(m_iBlinkCount > 100)
+ {
+ // stop blinking at a certain point and remain highlighted
+ m_bBlinkOn = true;
+ stopBlinkTimer();
+ } else {
+ // if the main window got attention while
+ // showing up then just hide now
+ if(shouldHideIfMainWindowGotAttention())
+ {
+ doHide(false); // don't animate: the background has almost surely changed
+ return;
+ }
+ }
+ update();
+}
+
+void KviNotifierWindow::markAllMessagesAsHistoric()
+{
+ if (!m_pWndTabs) return;
+ m_pWndTabs->markAllMessagesAsHistoric();
+}
+
+
+static void blend_images(QImage &buffer,QImage &background,QImage &foreground,double dValue)
+{
+ for(int y = 0;y < buffer.height();y++)
+ {
+ QRgb * dst = (QRgb *)buffer.scanLine(y);
+ QRgb * end = dst + buffer.width();
+ QRgb * bkg = (QRgb *)background.scanLine(y);
+ QRgb * fgn = (QRgb *)foreground.scanLine(y);
+
+ double dRemaining = 1.0 - dValue;
+
+ while(dst < end)
+ {
+ *dst = qRgb(
+ (int)((qRed(*bkg) * dRemaining) + (qRed(*fgn) * dValue)),
+ (int)((qGreen(*bkg) * dRemaining) + (qGreen(*fgn) * dValue)),
+ (int)((qBlue(*bkg) * dRemaining) + (qBlue(*fgn) * dValue))
+ );
+ dst++;
+ bkg++;
+ fgn++;
+ }
+
+ }
+}
+
+void KviNotifierWindow::paintEvent(QPaintEvent * e)
+{
+
+/*
+ if(m_bBlinkOn)
+ bitBlt(&m_pixForeground,QPoint(0,0),&m_pixBackgroundHighlighted);
+ else
+ bitBlt(&m_pixForeground,QPoint(0,0),&m_pixBackground);
+
+ QPainter p(&m_pixForeground);
+*/
+ redrawWindow();
+ redrawText();
+ if(m_dOpacity < 1.0)
+ {
+ QPainter px(this);
+
+ #if defined(COMPILE_USE_QT4) && (defined(COMPILE_ON_WINDOWS) || defined(Q_OS_MACX))
+ px.drawPixmap(0,0,m_pixForeground);
+ #else
+ QImage temp_image = m_pixForeground.convertToImage();
+ blend_images(m_imgBuffer,m_imgDesktop,temp_image,m_dOpacity);
+ px.drawImage(0,0,m_imgBuffer);
+ #endif
+ px.end();
+ } else {
+#ifdef COMPILE_USE_QT4
+ QPainter px(this);
+ px.drawPixmap(0,0,m_pixForeground);
+#else
+ bitBlt(this,QPoint(0,0),&m_pixForeground);
+#endif
+ }
+}
+
+void KviNotifierWindow::redrawText()
+{
+ QPainter p(&m_pixForeground);
+
+ // the current tab
+ KviNotifierWindowTab * tab = m_pWndTabs->currentTab();
+ if(!tab)return;
+
+ // it's message list
+ KviPointerList<KviNotifierMessage> * l = tab->messageList();
+ if(!l)return;
+ if(l->isEmpty())return;
+
+ // the current message
+ KviNotifierMessage * cur = tab->currentMessage();
+ if(!cur)cur = l->last();
+
+ // this is useful in several places
+ KviNotifierMessage * last = l->last();
+
+ // make sure that we can loop
+ int iIdx = l->findRef(cur);
+ if(iIdx == -1)
+ {
+ tab->setCurrentMessage(last);
+ cur = last;
+ iIdx = l->findRef(cur);
+ }
+
+ int y = m_pWndBody->textRect().y() + m_pWndBody->textRect().height();
+
+ if(m_pLineEdit->isVisible())y -= (m_pLineEdit->height() + 4);
+
+ QColorGroup grp = colorGroup();
+
+ int idx = iIdx;
+ KviNotifierMessage * m = cur;
+ while(m && (y > m_pWndBody->textRect().y()))
+ {
+ int iHeight = m->text()->height();
+ if(iHeight < 18)iHeight = 18;
+ y -= iHeight;
+ if(m->historic())
+ {
+ grp.setColor(QColorGroup::Text,m_clrHistoricText);
+ } else {
+ if(m == last)
+ grp.setColor(QColorGroup::Text,m_clrCurText);
+ else {
+ int iClrIdx = l->count() - (idx + 2);
+ if(iClrIdx < 0)iClrIdx = 0;
+ else if(iClrIdx >= NUM_OLD_COLORS)iClrIdx = (NUM_OLD_COLORS - 1);
+ grp.setColor(QColorGroup::Text,m_clrOldText[iClrIdx]);
+ }
+ }
+ int iMaxY = y > m_pWndBody->textRect().y() ? y : m_pWndBody->textRect().y();
+ QRect clip(m_pWndBody->textRect().x() + 20,iMaxY,m_pWndBody->textRect().width() - 20,iHeight);
+
+ m->text()->draw(&p,m_pWndBody->textRect().x() + 20,y,clip,grp); //
+ if(y > m_pWndBody->textRect().y())
+ {
+ if(m->image())
+ p.drawPixmap(m_pWndBody->textRect().x() + 1,y + 1,*(m->image()),0,0,16,16);
+ }
+ m = l->prev();
+ idx--;
+ }
+
+ p.setPen(QPen(m_clrTitle));
+ p.setFont(*m_pTitleFont);
+ QString title;
+ KviQString::sprintf(title,"[%d/%d]",iIdx + 1,l->count());
+
+ if(tab->window())
+ {
+ title += " ";
+ title += tab->window()->plainTextCaption();
+ }
+ p.drawText(m_pWndBorder->titleRect(),Qt::AlignLeft | Qt::SingleLine,title);
+ p.end();
+}
+
+void KviNotifierWindow::mouseMoveEvent(QMouseEvent * e)
+{
+
+ //debug ("move on x,y: %d,%d", e->pos().x(), e->pos().y());
+
+ if (!m_bLeftButtonIsPressed) {
+
+ if(checkResizing(e->pos())) goto sartelo;
+
+ /* ### MOUSE-MOVE-EVENT -> m_pWndBorder ### */
+ if (m_pWndBorder->captionRect().contains(e->pos())) {
+ if (m_pWndBorder->closeRect().contains(e->pos())) {
+ m_pWndBorder->setCloseIcon(WDG_ICON_OVER);
+ } else {
+ m_pWndBorder->setCloseIcon(WDG_ICON_OUT);
+ }
+ goto sartelo;
+ }
+
+ if(m_pWndTabs->currentTab())
+ {
+ /* ### MOUSE-MOVE-EVENT -> m_pWndTabs ### */
+ if (m_pWndTabs->rect().contains(e->pos())) {
+ m_pWndTabs->mouseMoveEvent(e);
+ goto sartelo;
+ }
+
+ /* ### MOUSE-MOVE-EVENT -> m_pWndBody ### */
+ if (m_pWndBody->rect().contains(e->pos())) {
+ if (m_pWndBody->rctWriteIcon().contains(e->pos())) {
+ m_pWndBody->setWriteIcon(WDG_ICON_ON);
+ } else {
+ m_pWndBody->setWriteIcon(WDG_ICON_OFF);
+ }
+ goto sartelo;
+ }
+ }
+ /* ### END ### */
+
+sartelo:
+
+ update();
+
+ }
+
+ if(m_bDragging) {
+ setCursor(Qt::SizeAllCursor);
+
+ int w = m_wndRect.width();
+ int h = m_wndRect.height();
+
+ m_wndRect.setX( m_pntPos.x() + cursor().pos().x() - m_pntDrag.x() );
+ m_wndRect.setY( m_pntPos.y() + cursor().pos().y() - m_pntDrag.y() );
+
+ m_wndRect.setWidth(w);
+ m_wndRect.setHeight(h);
+
+ setGeometry(m_wndRect);
+
+ return;
+ } else if (m_bResizing) {
+ resize(e->pos());
+ }
+
+}
+
+void KviNotifierWindow::mousePressEvent(QMouseEvent * e)
+{
+
+ // stop blinking first of all :)
+ bool bWasBlinkOn = m_bBlinkOn;
+ m_bBlinkOn = false;
+ stopBlinkTimer();
+ m_tAutoHideAt = 0;
+ stopAutoHideTimer();
+
+ setActiveWindow();
+ setFocus();
+
+ m_pntClick = e->pos();
+
+ if(e->button() == Qt::RightButton)
+ {
+ contextPopup(mapToGlobal(e->pos()));
+ return;
+ } else if(e->button() == Qt::LeftButton) {
+ m_bLeftButtonIsPressed = true;
+ }
+
+ if(checkResizing(m_pntClick)) goto sartelo;
+
+ if(m_pWndTabs->rect().contains(e->pos()))
+ {
+ m_pWndTabs->mousePressEvent(e);
+ goto sartelo;
+ }
+
+ if(m_pWndBorder->captionRect().contains(e->pos())) {
+ //debug ("Clicked on m_pWndBorder->rect()");
+ if(m_pWndBorder->closeRect().contains(e->pos())) {
+ //debug ("\tClicked on m_pWndBorder->closeRect()");
+ m_bCloseDown = true;
+ m_pWndBorder->setCloseIcon(WDG_ICON_CLICKED);
+ goto sartelo;
+ }
+
+ if( !m_bResizing) {
+ m_bDragging = true;
+ m_pntDrag = cursor().pos();
+ m_pntPos = pos();
+ goto sartelo;
+ }
+ }
+
+ //debug ("x,y: %d,%d - width,height: %d,%d", m_pWndBorder->rect().x(),m_pWndBorder->rect().y(),m_pWndBorder->rect().width(),m_pWndBorder->rect().height());
+
+ if (m_pWndBorder->rect().contains(e->pos())) {
+ if(m_pWndTabs->currentTab())
+ {
+ //debug ("Clicked on m_pWndBody->textRect()");
+ if(m_pWndBody->rctWriteIcon().contains(e->pos()))
+ {
+ m_pWndBody->setWriteIcon(WDG_ICON_CLICKED);
+ showLineEdit(!(m_pLineEdit->isVisible()));
+ }
+
+ if(m_pWndBody->rctPrevIcon().contains(e->pos()) && m_pWndBody->prevIconState()!=WDG_ICON_OFF)
+ {
+ m_bPrevDown = true;
+ m_pWndBody->setPrevIcon(WDG_ICON_CLICKED);
+ prevButtonClicked();
+ }
+
+ if(m_pWndBody->rctNextIcon().contains(e->pos()) && m_pWndBody->nextIconState()!=WDG_ICON_OFF)
+ {
+ m_bNextDown = true;
+ m_pWndBody->setNextIcon(WDG_ICON_CLICKED);
+ nextButtonClicked();
+ }
+ }
+ goto sartelo;
+ }
+
+ if(bWasBlinkOn) goto sartelo; else return;
+
+sartelo:
+ update();
+
+}
+
+void KviNotifierWindow::mouseReleaseEvent(QMouseEvent * e)
+{
+ m_bWriteDown = false;
+ m_bNextDown = false;
+ m_bPrevDown = false;
+ m_bCloseDown = false;
+ m_bLeftButtonIsPressed = false;
+ m_bResizing = false;
+
+ //m_pWndBody->setWriteIcon(WDG_ICON_ON);
+ m_pWndBody->setNextIcon(WDG_ICON_ON);
+ m_pWndBody->setPrevIcon(WDG_ICON_ON);
+ m_pWndTabs->setCloseTabIcon(WDG_ICON_OFF);
+
+ if(m_bDragging)
+ {
+ m_bDragging = false;
+ if(QApplication::overrideCursor()) QApplication::restoreOverrideCursor();
+ return;
+ }
+
+ if(m_pWndBorder->captionRect().contains(e->pos())) {
+
+ if(m_pWndBorder->closeRect().contains(e->pos())) {
+ //debug ("hide now from release event");
+ hideNow();
+ } else {
+ update();
+ }
+
+ }
+
+ if(m_pWndTabs->rect().contains(e->pos()))
+ {
+ m_pWndTabs->mouseReleaseEvent(e);
+ }
+
+ setCursor(-1);
+
+}
+
+void KviNotifierWindow::mouseDoubleClickEvent(QMouseEvent * e)
+{
+ if(!m_pWndBody->textRect().contains(e->pos()))
+ {
+ QWidget::mouseDoubleClickEvent(e);
+ return;
+ }
+
+ KviNotifierWindowTab * tab = m_pWndTabs->currentTab();
+ if(!tab)return;
+
+ if(!tab->window())return;
+
+ hideNow();
+ delayedRaise(tab->window());
+}
+
+void KviNotifierWindow::keyPressEvent(QKeyEvent * e)
+{
+ if (e->key()==Qt::Key_Shift) {
+ m_bKeyShiftPressed = true;
+ return;
+ }
+
+ if (e->key()==Qt::Key_Left && m_bKeyShiftPressed) {
+ m_pWndTabs->prev();
+ return;
+ }
+ if (e->key()==Qt::Key_Right && m_bKeyShiftPressed) {
+ m_pWndTabs->next();
+ return;
+ }
+
+ if (e->key()==Qt::Key_Escape) {
+ hideNow();
+ return;
+ }
+}
+
+void KviNotifierWindow::keyReleaseEvent(QKeyEvent * e)
+{
+ if (e->key()==Qt::Key_Shift) {
+ m_bKeyShiftPressed = false;
+ }
+}
+
+void KviNotifierWindow::delayedRaise(KviWindow * pWnd)
+{
+ m_pWindowToRaise = pWnd;
+ QTimer::singleShot(0,this,SLOT(delayedRaiseSlot()));
+}
+
+void KviNotifierWindow::delayedRaiseSlot()
+{
+ if(!m_pWindowToRaise)return;
+ if(!g_pApp->windowExists(m_pWindowToRaise))return;
+
+ if(m_pWindowToRaise->mdiParent())
+ {
+ if(!m_pWindowToRaise->frame()->isVisible())
+ m_pWindowToRaise->frame()->show();
+
+ m_pWindowToRaise->frame()->raise();
+ //((QWidget *)(m_pWindowToRaise->frame()))->setActiveWindow();
+ m_pWindowToRaise->frame()->setFocus();
+ }
+
+ m_pWindowToRaise->delayedAutoRaise();
+}
+
+bool KviNotifierWindow::checkResizing(QPoint e)
+{
+ if (e.y()<WDG_BORDER_THICKNESS) {
+ if (e.x()<WDG_BORDER_THICKNESS) {
+ //// UP LEFT CORNER ////
+ setCursor(Qt::SizeFDiagCursor);
+ if (m_bLeftButtonIsPressed) {
+ m_bResizing = true;
+ m_whereResizing = WDG_UPSX;
+ }
+ } else if (e.x() > (size().width()-WDG_BORDER_THICKNESS)) {
+ //// UP RIGHT CORNER ////
+ setCursor(Qt::SizeBDiagCursor);
+ if (m_bLeftButtonIsPressed) {
+ m_bResizing = true;
+ m_whereResizing = WDG_UPDX;
+ }
+ } else {
+ //// UP SIDE ////
+ setCursor(Qt::SizeVerCursor);
+ if (m_bLeftButtonIsPressed) {
+ m_bResizing = true;
+ m_whereResizing = WDG_UP;
+ } }
+ } else if (e.y() > (size().height()-WDG_BORDER_THICKNESS)) {
+ if (e.x()<WDG_BORDER_THICKNESS) {
+ //// DOWN LEFT CORNER ////
+ setCursor(Qt::SizeBDiagCursor);
+ if (m_bLeftButtonIsPressed) {
+ m_bResizing = true;
+ m_whereResizing = WDG_DWNSX;
+ }
+ } else if (e.x() > (size().width()-WDG_BORDER_THICKNESS)) {
+ //// DOWN RIGHT CORNER ////
+ setCursor(Qt::SizeFDiagCursor);
+ if (m_bLeftButtonIsPressed) {
+ m_bResizing = true;
+ m_whereResizing = WDG_DWNDX;
+ }
+ } else {
+ //// DOWN SIDE ////
+ setCursor(Qt::SizeVerCursor);
+ if (m_bLeftButtonIsPressed) {
+ m_bResizing = true;
+ m_whereResizing = WDG_DWN;
+ }
+ }
+ } else {
+ if (e.x()<WDG_BORDER_THICKNESS) {
+ //// LEFT SIZE ////
+ setCursor(Qt::SizeHorCursor);
+ if (m_bLeftButtonIsPressed) {
+ m_bResizing = true;
+ m_whereResizing = WDG_SX;
+ }
+ } else if (e.x() > (size().width()-WDG_BORDER_THICKNESS)) {
+ //// RIGHT SIZE ////
+ setCursor(Qt::SizeHorCursor);
+ if (m_bLeftButtonIsPressed) {
+ m_bResizing = true;
+ m_whereResizing = WDG_DX;
+ }
+ } else {
+ //// ELSEWHERE ////
+ m_whereResizing = 0;
+ m_bResizing = false;
+ setCursor(-1);
+ }
+ }
+ return m_bResizing;
+};
+
+
+
+void KviNotifierWindow::resize(QPoint p, bool up)
+{
+ //QPoint aux = mapToGlobal(p);
+
+ if (m_whereResizing==WDG_UPSX || m_whereResizing==WDG_SX || m_whereResizing==WDG_DWNSX) {
+ if ((x() + width() - cursor().pos().x()) < WDG_MIN_WIDTH)
+ m_wndRect.setLeft(x() + width() - WDG_MIN_WIDTH);
+ else
+ m_wndRect.setLeft(cursor().pos().x());
+ }
+
+ if (m_whereResizing == WDG_UPSX || m_whereResizing == WDG_UP || m_whereResizing == WDG_UPDX) {
+ if (y()+height()-cursor().pos().y() < WDG_MIN_HEIGHT)
+ m_wndRect.setTop(y() + height() - WDG_MIN_HEIGHT);
+ else
+ m_wndRect.setTop(cursor().pos().y());
+ }
+
+ if (m_whereResizing == WDG_DX || m_whereResizing == WDG_UPDX || m_whereResizing == WDG_DWNDX) {
+ if ((cursor().pos().x() - x()) > WDG_MIN_WIDTH)
+ m_wndRect.setRight(cursor().pos().x());
+ else
+ m_wndRect.setRight(x() + WDG_MIN_WIDTH);
+ }
+
+ if (m_whereResizing == WDG_DWN || m_whereResizing == WDG_DWNDX || m_whereResizing == WDG_DWNSX) {
+ if ((cursor().pos().y() - y()) > WDG_MIN_HEIGHT)
+ m_wndRect.setBottom(cursor().pos().y());
+ else
+ m_wndRect.setBottom(y() + WDG_MIN_HEIGHT);
+ }
+
+ showLineEdit(m_pLineEdit->isVisible());
+ setGeometry(m_wndRect);
+}
+
+void KviNotifierWindow::redrawWindow()
+{
+ if(m_pixBackground.size()!=m_wndRect.size())
+ {
+ // Redraw only if size was modified..
+ m_pixBackground.resize(m_wndRect.size());
+ m_pixForeground.resize(m_wndRect.size());
+ m_pixBackgroundHighlighted.resize(m_wndRect.size());
+
+ m_pWndBorder->resize( m_wndRect.size() );
+ m_pWndTabs->setWidth( m_pWndBorder->tabsRect().width() );
+ m_pWndBody->resize( m_pWndBorder->bodyRect() );
+ m_pProgressBar->setHeight(m_pWndBorder->bodyRect().height() + m_pWndBorder->tabsRect().height());
+ }
+
+ QPainter paint;
+ if(m_bBlinkOn)
+ {
+ m_pWndBorder->touch();
+ m_pWndTabs->touch();
+ m_pWndBody->touch();
+ paint.begin(&m_pixBackgroundHighlighted);
+ m_pWndBorder->draw(&paint,true);
+ m_pWndTabs->draw(&paint);
+ m_pWndBody->draw(&paint);
+ m_pProgressBar->draw(&paint);
+ paint.end();
+ bitBlt(&m_pixForeground, 0,0, &m_pixBackgroundHighlighted);
+ m_pWndBorder->touch();
+ m_pWndTabs->touch();
+ m_pWndBody->touch();
+ } else {
+ paint.begin(&m_pixBackground);
+ m_pWndBorder->draw(&paint);
+ m_pWndTabs->draw(&paint);
+ m_pWndBody->draw(&paint);
+ m_pProgressBar->draw(&paint);
+ paint.end();
+ bitBlt(&m_pixForeground, 0,0, &m_pixBackground);
+ }
+
+}
+
+inline void KviNotifierWindow::setCursor(int cur) {
+ if (m_cursor.shape() != cur) {
+ if(QApplication::overrideCursor()) QApplication::restoreOverrideCursor();
+ m_cursor.setShape((Qt::CursorShape)cur);
+ QApplication::setOverrideCursor(m_cursor);
+ } else if (cur==-1)
+ if(QApplication::overrideCursor()) QApplication::restoreOverrideCursor();
+}
+
+void KviNotifierWindow::enterEvent(QEvent * e)
+{
+#ifdef COMPILE_USE_QT4
+ if(!m_pShowHideTimer) {
+ m_pShowHideTimer = new QTimer();
+ connect(m_pShowHideTimer,SIGNAL(timeout()),this,SLOT(heartbeat()));
+ }
+ m_eState = FocusingOn;
+ m_pShowHideTimer->start(40);
+#endif
+}
+
+void KviNotifierWindow::leaveEvent(QEvent * e)
+{
+ // Leaving the widget area, restore default cursor
+ m_pWndBorder->resetIcons();
+ m_pWndTabs->resetIcons();
+ if (!m_bResizing)
+ setCursor(-1);
+#ifdef COMPILE_USE_QT4
+ if(!m_pShowHideTimer) {
+ m_pShowHideTimer = new QTimer();
+ connect(m_pShowHideTimer,SIGNAL(timeout()),this,SLOT(heartbeat()));
+ }
+ m_eState = FocusingOff;
+ m_pShowHideTimer->start(40);
+#endif
+}
+
+void KviNotifierWindow::contextPopup(const QPoint &pos)
+{
+ if(!m_pContextPopup)
+ {
+ m_pContextPopup = new QPopupMenu(this);
+ connect(m_pContextPopup,SIGNAL(aboutToShow()),this,SLOT(fillContextPopup()));
+ m_pDisablePopup = new QPopupMenu(this);
+ }
+
+ m_pContextPopup->popup(pos);
+}
+
+void KviNotifierWindow::fillContextPopup()
+{
+ m_pContextPopup->clear();
+
+ m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CLOSE)),__tr2qs_ctx("Hide","notifier"),this,SLOT(hideNow()));
+ m_pContextPopup->insertSeparator();
+ m_pDisablePopup->clear();
+ m_pDisablePopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TIME)),__tr2qs_ctx("1 Minute","notifier"),this,SLOT(disableFor1Minute()));
+ m_pDisablePopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TIME)),__tr2qs_ctx("5 Minutes","notifier"),this,SLOT(disableFor5Minutes()));
+ m_pDisablePopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TIME)),__tr2qs_ctx("15 Minutes","notifier"),this,SLOT(disableFor15Minutes()));
+ m_pDisablePopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TIME)),__tr2qs_ctx("30 Minutes","notifier"),this,SLOT(disableFor30Minutes()));
+ m_pDisablePopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TIME)),__tr2qs_ctx("1 Hour","notifier"),this,SLOT(disableFor60Minutes()));
+ m_pDisablePopup->insertSeparator();
+ m_pDisablePopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_QUIT)),__tr2qs_ctx("Until KVIrc is Restarted","notifier"),this,SLOT(disableUntilKVIrcRestarted()));
+ m_pDisablePopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_QUIT)),__tr2qs_ctx("Permanently (Until Explicitly Enabled)","notifier"),this,SLOT(disablePermanently()));
+
+ m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_QUIT)),__tr2qs_ctx("Disable","notifier"),m_pDisablePopup);
+}
+
+void KviNotifierWindow::disableFor15Minutes()
+{
+ kvi_time_t tNow = kvi_unixTime();
+ g_tNotifierDisabledUntil = tNow + (60 * 15);
+
+ hideNow();
+}
+
+void KviNotifierWindow::disableFor5Minutes()
+{
+ kvi_time_t tNow = kvi_unixTime();
+ g_tNotifierDisabledUntil = tNow + (60 * 5);
+
+ hideNow();
+}
+
+
+void KviNotifierWindow::disableFor1Minute()
+{
+ kvi_time_t tNow = kvi_unixTime();
+ g_tNotifierDisabledUntil = tNow + 60;
+
+ hideNow();
+}
+
+void KviNotifierWindow::disableFor30Minutes()
+{
+ kvi_time_t tNow = kvi_unixTime();
+ g_tNotifierDisabledUntil = tNow + (60 * 30);
+
+ hideNow();
+}
+
+void KviNotifierWindow::disableFor60Minutes()
+{
+ kvi_time_t tNow = kvi_unixTime();
+ g_tNotifierDisabledUntil = tNow + (60 * 60);
+
+ hideNow();
+}
+
+void KviNotifierWindow::disableUntilKVIrcRestarted()
+{
+ kvi_time_t tNow = kvi_unixTime();
+ // in fact we just disable for one year
+ g_tNotifierDisabledUntil = tNow + (3600 * 24 * 360); // one year :D
+ // this will NOT work if the module is forcibly unloaded with /notifier.unload
+ // but the user should never do it :D
+ hideNow();
+}
+
+void KviNotifierWindow::disablePermanently()
+{
+ KVI_OPTION_BOOL(KviOption_boolForciblyDisableNotifier) = true;
+ hideNow();
+}
+
+void KviNotifierWindow::wheelEvent(QWheelEvent * e)
+{
+ if(e->delta() > 0)prevButtonClicked();
+ else nextButtonClicked();
+}
+
+
+void KviNotifierWindow::prevButtonClicked()
+{
+ KviNotifierWindowTab * tab = m_pWndTabs->currentTab();
+ if(!tab)return;
+ tab->setPrevMessageAsCurrent();
+ update();
+}
+
+void KviNotifierWindow::nextButtonClicked()
+{
+ KviNotifierWindowTab * tab = m_pWndTabs->currentTab();
+ if(!tab)return;
+ tab->setNextMessageAsCurrent();
+ update();
+}
+
+void KviNotifierWindow::showLineEdit(bool bShow)
+{
+ if(bShow)
+ {
+ //if(m_pLineEdit->isVisible())return;
+ if(!m_pWndTabs->currentMessage())return;
+ if(!m_pWndTabs->currentTab()->window())return;
+ QToolTip::remove(m_pLineEdit);
+ QString tip = __tr2qs_ctx("Write text or commands to window","notifier");
+ tip += " \"";
+ tip += m_pWndTabs->currentTab()->window()->plainTextCaption();
+ tip += "\"";
+ QToolTip::add(m_pLineEdit,tip);
+ m_pLineEdit->setGeometry(m_pWndBody->textRect().x(),m_pWndBody->textRect().y() + m_pWndBody->textRect().height() - m_iInputHeight,m_pWndBody->textRect().width(),m_iInputHeight);
+ m_pLineEdit->show();
+ m_pLineEdit->setFocus();
+ redrawWindow();
+ setActiveWindow();
+ } else {
+ if(!m_pLineEdit->isVisible())return;
+ m_pLineEdit->hide();
+ setFocus();
+ KviNotifierWindowTab * tab = m_pWndTabs->currentTab();
+ if(tab)tab->setLastMessageAsCurrent();
+ update();
+ }
+}
+
+bool KviNotifierWindow::eventFilter(QObject * pEdit,QEvent * e)
+{
+ if(pEdit != (QObject *)m_pLineEdit)return false; // huh ?
+ if(!m_pLineEdit->isVisible())return false;
+ if(e->type() == QEvent::MouseButtonPress)
+ {
+ bool bWasBlinkOn = m_bBlinkOn;
+ m_bBlinkOn = false;
+ m_tAutoHideAt = 0;
+ stopAutoHideTimer();
+ stopBlinkTimer();
+ setActiveWindow();
+ m_pLineEdit->setFocus();
+ if(bWasBlinkOn)update();
+ return true;
+ }
+ if(e->type() == QEvent::KeyPress)
+ {
+ if(((QKeyEvent *)e)->key() == Qt::Key_Escape)
+ {
+ hideNow();
+ return true;
+ }
+ }
+ return false;
+}
+
+void KviNotifierWindow::returnPressed()
+{
+ if(!m_pLineEdit->isVisible())return;
+
+ KviNotifierWindowTab * tab = m_pWndTabs->currentTab();
+ if(!tab)return;
+ if(!tab->currentMessage())return;
+ if(!tab->window())return;
+
+ QString txt = m_pLineEdit->text();
+ if(txt.isEmpty())return;
+ QString html = txt;
+ html.replace("<","&lt;");
+ html.replace(">","&gt;");
+ KviStr tmp(KviStr::Format,"%d",KVI_SMALLICON_OWNPRIVMSG);
+
+ addMessage(tab->window(),tmp.ptr(),html,0); //m_pCurrentFocusedWindowTab on place of m_pCurrentMessage->window()
+ m_pLineEdit->setText("");
+ KviUserInput::parse(txt,tab->window(),QString::null,1);
+}
+
+void KviNotifierWindow::progressUpdate()
+{
+ double dProgress = m_qtStartedAt.elapsed()/(m_tAutoHideAt - m_tStartedAt);
+ dProgress/=1000;
+ m_pProgressBar->setProgress(dProgress);
+ QPainter p(this);
+ m_pProgressBar->draw(&p);
+}
+#include "m_notifierwindow.moc"
+
diff --git a/src/modules/notifier/notifierwindow.h b/src/modules/notifier/notifierwindow.h
new file mode 100644
index 00000000..be5e3b6e
--- /dev/null
+++ b/src/modules/notifier/notifierwindow.h
@@ -0,0 +1,194 @@
+#ifndef _NOTIFIERWINDOW_H_
+#define _NOTIFIERWINDOW_H_
+//==================================================================================
+//
+// File : notifierwindow.h
+// Creation date : Tue Jul 6 2004 20:25:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2005 Iacopo Palazzi < iakko(at)siena(dot)linux(dot)it >
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the linkss of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//==================================================================================
+
+#include "kvi_settings.h"
+
+#include <qbitmap.h>
+#include <qcolor.h>
+#include <qcursor.h>
+#include <qdatetime.h>
+#include <qfont.h>
+#include <qimage.h>
+#include <qlineedit.h>
+#include <qpixmap.h>
+#include <qrect.h>
+#include <qtimer.h>
+#include <qwidget.h>
+
+#include "kvi_qstring.h"
+#include "kvi_pointerlist.h"
+#include "kvi_time.h"
+
+#include "notifiersettings.h"
+
+class KviWindow;
+class KviNotifierMessage;
+
+class KviNotifierWindowBody;
+class KviNotifierWindowBorder;
+class KviNotifierWindowProgressBar;
+class KviNotifierWindowTabs;
+
+class QPainter;
+class QPopupMenu;
+
+extern kvi_time_t g_tNotifierDisabledUntil;
+
+class KviNotifierWindow : public QWidget
+{
+ Q_OBJECT
+public:
+ KviNotifierWindow();
+ ~KviNotifierWindow();
+protected:
+ QTimer * m_pShowHideTimer;
+ QTimer * m_pProgressTimer;
+ QTimer * m_pBlinkTimer;
+ QTimer * m_pAutoHideTimer;
+ State m_eState;
+ bool m_bBlinkOn;
+ double m_dOpacity;
+ QImage m_imgDesktop; // the desktop screenshot
+ QPixmap m_pixBackground; // our background image
+ QPixmap m_pixBackgroundHighlighted;
+ QPixmap m_pixForeground; // we paint the stuff HERE
+
+ // Notifier graphic layout
+ QPixmap m_pixBckgrnd;
+
+ QImage m_imgBuffer; // here we merge the two images
+
+ bool m_bCloseDown;
+ bool m_bPrevDown;
+ bool m_bNextDown;
+ bool m_bWriteDown;
+ bool m_bCrashShowWorkAround;
+
+ bool m_bKeyShiftPressed;
+
+ QFont * m_pDefaultFont;
+ QFont * m_pTitleFont;
+
+ QRect m_wndRect;
+
+ QColor m_clrCurText;
+ QColor m_clrOldText[NUM_OLD_COLORS];
+ QColor m_clrHistoricText;
+ QColor m_clrTitle;
+
+ KviNotifierMessage * m_pCurrentMessage;
+ QLineEdit * m_pLineEdit;
+
+ bool m_bDragging;
+ bool m_bLeftButtonIsPressed;
+ bool m_bDiagonalResizing;
+ bool m_bResizing;
+
+ int m_whereResizing;
+
+ QPoint m_pntDrag;
+ QPoint m_pntPos;
+ QPoint m_pntClick;
+ int m_iInputHeight;
+ int m_iBlinkTimeout;
+ int m_iBlinkCount;
+ QPopupMenu * m_pContextPopup;
+ QPopupMenu * m_pDisablePopup;
+ KviWindow * m_pWindowToRaise;
+ kvi_time_t m_tAutoHideAt;
+ kvi_time_t m_tStartedAt;
+ QTime m_qtStartedAt;
+ bool m_bDisableHideOnMainWindowGotAttention;
+ //bool m_bForceShowing;
+
+ QCursor m_cursor;
+
+ KviNotifierWindowTabs * m_pWndTabs;
+ KviNotifierWindowProgressBar * m_pProgressBar;
+ KviNotifierWindowBody * m_pWndBody;
+ KviNotifierWindowBorder * m_pWndBorder;
+public:
+ void doShow(bool bDoAnimate);
+ void doHide(bool bDoAnimate);
+ const QFont & defaultFont(){ return *m_pDefaultFont; };
+ int textWidth();
+ void addMessage(KviWindow * pWnd,const QString &szImageId,const QString &szText,unsigned int uMessageTime);
+ State state() { return m_eState; };
+ void setDisableHideOnMainWindowGotAttention(bool b){ m_bDisableHideOnMainWindowGotAttention = b; };
+ int countTabs();
+ void showLineEdit(bool bShow);
+protected:
+ virtual void showEvent(QShowEvent *e);
+ virtual void hideEvent(QHideEvent * e);
+ virtual void paintEvent(QPaintEvent * e);
+ virtual void mousePressEvent(QMouseEvent * e);
+ virtual void mouseReleaseEvent(QMouseEvent * e);
+ virtual void mouseMoveEvent(QMouseEvent * e);
+ virtual void leaveEvent(QEvent * e);
+ virtual void enterEvent(QEvent * e);
+ virtual void mouseDoubleClickEvent(QMouseEvent * e);
+ virtual void wheelEvent(QWheelEvent * e);
+ virtual bool eventFilter(QObject * pEdit,QEvent * e);
+ virtual void keyPressEvent ( QKeyEvent * e );
+ virtual void keyReleaseEvent ( QKeyEvent * e );
+protected slots:
+ void blink();
+ void heartbeat();
+ void returnPressed();
+ void reloadImages();
+ void fillContextPopup();
+ void hideNow();
+ void disableFor1Minute();
+ void disableFor5Minutes();
+ void disableFor15Minutes();
+ void disableFor30Minutes();
+ void disableFor60Minutes();
+ void disableUntilKVIrcRestarted();
+ void disablePermanently();
+ void delayedRaiseSlot();
+ void autoHide();
+ void progressUpdate();
+private:
+ void contextPopup(const QPoint &pos);
+ void startBlinking();
+ void markAllMessagesAsHistoric();
+ void computeRect();
+ void stopShowHideTimer();
+ void stopBlinkTimer();
+ void stopAutoHideTimer();
+ void startAutoHideTimer();
+ void delayedRaise(KviWindow * pWnd);
+ void prevButtonClicked();
+ void nextButtonClicked();
+ bool shouldHideIfMainWindowGotAttention();
+ void setCursor(int);
+ void resize(QPoint p, bool = true);
+ void redrawWindow();
+ void redrawText();
+ bool checkResizing(QPoint);
+};
+
+#endif //_NOTIFIERWINDOW_H_
diff --git a/src/modules/notifier/notifierwindowbody.cpp b/src/modules/notifier/notifierwindowbody.cpp
new file mode 100644
index 00000000..7449aa9e
--- /dev/null
+++ b/src/modules/notifier/notifierwindowbody.cpp
@@ -0,0 +1,232 @@
+//=============================================================================
+//
+// File : kvinotifierwindowbody.cpp
+// Created on dom 02 gen 2005 17:53:29 by Iacopo Palazzi
+//
+// This file is part of the KVIrc distribution
+// Copyright (C) 2005 Iacopo Palazzi < iakko(at)siena(dot)linux(dot)it >
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "notifierwindowbody.h"
+
+#include "kvi_iconmanager.h"
+
+#include <qbrush.h>
+#include <qcolor.h>
+#include <qpainter.h>
+
+/*
+#ifdef QT3_SUPPORT
+ #include <Q3Painter>
+#else
+ #include <qpainter.h>
+#endif
+*/
+
+KviNotifierWindowBody::KviNotifierWindowBody(QRect r)
+{
+ loadImages();
+ setHeight(r.height());
+ setWidth(r.width());
+ m_pnt.setX(r.x());
+ m_pnt.setY(r.y());
+ recalculatePositions();
+}
+
+KviNotifierWindowBody::~KviNotifierWindowBody()
+{
+}
+
+
+void KviNotifierWindowBody::loadImages()
+{
+ QPixmap * p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_body_dx.png")))
+ m_pixDX = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_body_sx.png")))
+ m_pixSX = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_body_dwnsx.png")))
+ m_pixDWNSX = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_body_dwndx.png")))
+ m_pixDWNDX = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_body_dwn.png")))
+ m_pixDWN = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_body_kvirc_sx.png")))
+ m_pixKVIrcSX = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_body_kvirc_dwn.png")))
+ m_pixKVIrcDWN = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_body_kvirc.png")))
+ m_pixKVIrc = *p;
+
+ if((p = g_pIconManager->getPixmap("notifier_icon_body_prev_off.png")))
+ m_pixIconPrev_off = *p;
+ if((p = g_pIconManager->getPixmap("notifier_icon_body_prev_on.png")))
+ m_pixIconPrev_on = *p;
+ if((p = g_pIconManager->getPixmap("notifier_icon_body_prev_clicked.png")))
+ m_pixIconPrev_clicked = *p;
+
+ m_pixIconPrev = m_pixIconPrev_off;
+
+ if((p = g_pIconManager->getPixmap("notifier_icon_body_next_off.png")))
+ m_pixIconNext_off = *p;
+ if((p = g_pIconManager->getPixmap("notifier_icon_body_next_on.png")))
+ m_pixIconNext_on = *p;
+ if((p = g_pIconManager->getPixmap("notifier_icon_body_next_clicked.png")))
+ m_pixIconNext_clicked = *p;
+
+ m_pixIconNext = m_pixIconNext_off;
+
+ if((p = g_pIconManager->getPixmap("notifier_icon_body_write_off.png")))
+ m_pixIconWrite_off = *p;
+ if((p = g_pIconManager->getPixmap("notifier_icon_body_write_on.png")))
+ m_pixIconWrite_on = *p;
+ if((p = g_pIconManager->getPixmap("notifier_icon_body_write_clicked.png")))
+ m_pixIconWrite_clicked = *p;
+
+ m_pixIconWrite = m_pixIconWrite_off;
+
+ needToRedraw();
+
+ m_prevIconState = WDG_ICON_OFF;
+ m_nextIconState = WDG_ICON_OFF;
+ m_writeIconState = WDG_ICON_OFF;
+
+}
+
+void KviNotifierWindowBody::setWidth(int w)
+{
+ m_rct.setWidth(w);
+ recalculatePositions();
+}
+
+void KviNotifierWindowBody::setHeight(int h)
+{
+ m_rct.setHeight(h);
+ recalculatePositions();
+}
+
+void KviNotifierWindowBody::recalculatePositions()
+{
+ m_textRect.setX(m_pnt.x()+m_pixSX.width());
+ m_textRect.setY(m_pnt.y());
+ m_textRect.setWidth(m_rct.width()-m_pixSX.width()-m_pixDX.width()-m_pixIconPrev.width());
+ m_textRect.setHeight(m_rct.height()-m_pixDWN.height());
+
+ m_rctWriteIcon.setX(m_textRect.x()+m_textRect.width());
+ m_rctWriteIcon.setY(m_pnt.y()+m_textRect.height()-m_pixIconWrite.height());
+ m_rctWriteIcon.setWidth(m_pixIconWrite.width());
+ m_rctWriteIcon.setHeight(m_pixIconWrite.height());
+
+ m_rctPrevIcon.setX(m_textRect.x()+m_textRect.width());
+ m_rctPrevIcon.setY(m_pnt.y()+2); //FIXME: Maybe the spacing should be calculated?
+ m_rctPrevIcon.setWidth(m_pixIconPrev.width());
+ m_rctPrevIcon.setHeight(m_pixIconPrev.height());
+
+ m_rctNextIcon.setX(m_textRect.x()+m_textRect.width());
+ m_rctNextIcon.setY(m_pnt.y()+m_textRect.height()-m_pixIconNext.height()-m_pixIconWrite.height());
+ m_rctNextIcon.setWidth(m_pixIconNext.width());
+ m_rctNextIcon.setHeight(m_pixIconNext.height());
+
+ needToRedraw();
+}
+
+void KviNotifierWindowBody::setPrevIcon(int state)
+{
+ //if (m_prevIconState==WDG_ICON_OFF && state!=WDG_ICON_OFF)
+ if (m_prevIconState!=state) {
+ switch (state) {
+ case WDG_ICON_ON: m_pixIconPrev = m_pixIconPrev_on; break;
+ case WDG_ICON_OFF: m_pixIconPrev = m_pixIconPrev_off; break;
+ case WDG_ICON_CLICKED: m_pixIconPrev = m_pixIconPrev_clicked; break;
+ };
+
+ m_prevIconState=state;
+ needToRedraw();
+ }
+};
+
+void KviNotifierWindowBody::setNextIcon(int state) {
+
+ //if (m_nextIconState==WDG_ICON_OFF && state!=WDG_ICON_OFF)
+ if (m_nextIconState!=state) {
+ switch (state) {
+ case WDG_ICON_ON: m_pixIconNext = m_pixIconNext_on; break;
+ case WDG_ICON_OFF: m_pixIconNext = m_pixIconNext_off; break;
+ case WDG_ICON_CLICKED: m_pixIconNext = m_pixIconNext_clicked; break;
+ };
+
+ needToRedraw();
+ m_nextIconState=state;
+ }
+};
+
+void KviNotifierWindowBody::setWriteIcon(int state) {
+
+ //if (m_writeIconState==WDG_ICON_OFF && state!=WDG_ICON_OFF)
+ if (m_writeIconState!=state) {
+ switch (state) {
+ case WDG_ICON_ON: m_pixIconWrite = m_pixIconWrite_on; break;
+ case WDG_ICON_OFF: m_pixIconWrite = m_pixIconWrite_off; break;
+ case WDG_ICON_CLICKED: m_pixIconWrite = m_pixIconWrite_clicked; break;};
+
+ needToRedraw();
+ m_writeIconState=state;
+ }
+};
+
+void KviNotifierWindowBody::draw(QPainter * p) {
+
+ if (m_bNeedToRedraw) {
+
+ p->fillRect(QRect(m_pnt,m_rct.size()),m_mac_bkgColor);
+
+ // Autotiled borders
+ p->drawTiledPixmap(m_pnt.x(), m_pnt.y(), m_pixSX.width(), m_rct.height() - m_pixDWNSX.height() - m_pixKVIrcSX.height(), m_pixSX);
+ p->drawTiledPixmap(m_pnt.x() + m_rct.width() - m_pixDX.width(), m_pnt.y(),m_pixDX.width(), m_rct.height() - m_pixDWNDX.height(), m_pixDX);
+ p->drawTiledPixmap(m_pnt.x() + m_pixKVIrcDWN.width() + m_pixDWNSX.width(), m_pnt.y() + m_rct.height() - m_pixDWN.height(), m_rct.width() - m_pixKVIrcDWN.width() - m_pixDWNSX.width() - m_pixDWNDX.width(), m_pixDWN.height(), m_pixDWN);
+
+ // Bottom corners
+ p->drawPixmap(m_pnt.x(), m_pnt.y() + m_rct.height() - m_pixDWNSX.height(), m_pixDWNSX);
+ p->drawPixmap(m_pnt.x() + m_rct.width() - m_pixDWNSX.width(), m_pnt.y() + m_rct.height() - m_pixDWNDX.height(), m_pixDWNDX);
+
+ // KVIrc image
+ p->drawPixmap(m_pnt.x(), m_pnt.y() + m_rct.height() - m_pixKVIrcSX.height() - m_pixDWNSX.height(), m_pixKVIrcSX);
+ p->drawPixmap(m_pnt.x() + m_pixKVIrcSX.width(), m_pnt.y() + m_rct.height() - m_pixKVIrcDWN.height(), m_pixKVIrcDWN);
+ p->drawPixmap(m_pnt.x() + m_pixKVIrcSX.width(), m_pnt.y() + m_rct.height() - m_pixKVIrc.height() - m_pixKVIrcDWN.height(), m_pixKVIrc, 0, 0, m_pixKVIrc.width(), m_pixKVIrc.height());
+
+ // Draw Icons
+ p->drawPixmap(m_rctPrevIcon.x(), m_rctPrevIcon.y(), m_pixIconPrev);
+ p->drawPixmap(m_rctNextIcon.x(), m_rctNextIcon.y(), m_pixIconNext);
+ p->drawPixmap(m_rctWriteIcon.x(), m_rctWriteIcon.y(), m_pixIconWrite);
+
+ m_bNeedToRedraw = false;
+
+ }
+}
+
+void KviNotifierWindowBody::mouseMoveEvent(QMouseEvent * e) {
+
+}
+
+void KviNotifierWindowBody::mousePressEvent(QMouseEvent * e) {
+
+}
+
+void KviNotifierWindowBody::mouseReleaseEvent(QMouseEvent * e) {
+
+}
diff --git a/src/modules/notifier/notifierwindowbody.h b/src/modules/notifier/notifierwindowbody.h
new file mode 100644
index 00000000..e59df9f9
--- /dev/null
+++ b/src/modules/notifier/notifierwindowbody.h
@@ -0,0 +1,147 @@
+#ifndef _KVINOTIFIERWINDOWBODY_H_
+#define _KVINOTIFIERWINDOWBODY_H_
+//=============================================================================
+//
+// File : kvinotifierwindowbody.h
+// Created on dom 02 gen 2005 17:53:29 by Iacopo Palazzi
+//
+// This file is part of the KVIrc distribution
+// Copyright (C) 2005 Iacopo Palazzi < iakko(at)siena(dot)linux(dot)it >
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include <qevent.h>
+#include <qrect.h>
+#include <qpoint.h>
+#include <qpixmap.h>
+
+#include "notifiersettings.h"
+
+/*
+#ifdef QT3_SUPPORT
+ #define QPainter Q3Painter
+#endif
+*/
+
+class QPainter;
+
+class KviNotifierWindowBody
+{
+public:
+ KviNotifierWindowBody(QRect r);
+ ~KviNotifierWindowBody();
+
+// ================================
+// Put members declaration below...
+// ================================
+private:
+ QRect m_rct;
+ QPoint m_pnt;
+
+ QRect m_textRect;
+
+ QRect m_rctWriteIcon;
+ QRect m_rctPrevIcon;
+ QRect m_rctNextIcon;
+ QRect m_rctCloseTabIcon;
+
+ // Pictures
+ QPixmap m_pixDX;
+ QPixmap m_pixSX;
+ QPixmap m_pixDWNSX;
+ QPixmap m_pixDWNDX;
+ QPixmap m_pixDWN;
+ QPixmap m_pixKVIrcSX;
+ QPixmap m_pixKVIrcDWN;
+ QPixmap m_pixKVIrc;
+
+ QPixmap m_pixIconPrev;
+ QPixmap m_pixIconPrev_off;
+ QPixmap m_pixIconPrev_on;
+ QPixmap m_pixIconPrev_clicked;
+
+ QPixmap m_pixIconNext;
+ QPixmap m_pixIconNext_off;
+ QPixmap m_pixIconNext_on;
+ QPixmap m_pixIconNext_clicked;
+
+ QPixmap m_pixIconWrite;
+ QPixmap m_pixIconWrite_off;
+ QPixmap m_pixIconWrite_on;
+ QPixmap m_pixIconWrite_clicked;
+
+ bool m_bNeedToRedraw;
+
+ int m_prevIconState;
+ int m_nextIconState;
+ int m_writeIconState;
+
+public:
+
+protected:
+
+
+// ================================
+// Put methods declaration below...
+// ================================
+private:
+ void loadImages();
+
+public:
+ void setWidth(int w);
+ void setHeight(int h);
+ void resize(int w, int h) { setWidth(w); setHeight(h); };
+ void resize(QRect r) { setWidth(r.width()); setHeight(r.height()); };
+ void setPoint(int x, int y) { m_pnt.setX(x); m_pnt.setY(y); };
+
+ void setPrevIcon(int state);
+ void setNextIcon(int state);
+ void setWriteIcon(int state);
+
+ int nextIconState() { return m_nextIconState; };
+ int prevIconState() { return m_prevIconState; };
+ int writeIconState() { return m_writeIconState; };
+
+ int x() { return m_pnt.x(); };
+ int y() { return m_pnt.y(); };
+ int width() { return m_rct.width(); };
+ int height() { return m_rct.height(); };
+ int baseLine() { return (y()+height()); };
+
+ QRect rect() { return m_rct; };
+ QRect textRect() { return m_textRect; };
+ QRect rctPrevIcon() { return m_rctPrevIcon; };
+ QRect rctNextIcon() { return m_rctNextIcon; };
+ QRect rctWriteIcon() { return m_rctWriteIcon; };
+
+ void needToRedraw() { m_bNeedToRedraw = true; };
+
+ void recalculatePositions();
+ void touch() { m_bNeedToRedraw = true; };
+ void draw(QPainter *);
+
+ void mouseMoveEvent(QMouseEvent * e);
+ void mousePressEvent(QMouseEvent * e);
+ void mouseReleaseEvent(QMouseEvent * e);
+
+
+
+protected:
+
+};
+
+#endif //!_KVINOTIFIERWINDOWBODY_H_
diff --git a/src/modules/notifier/notifierwindowborder.cpp b/src/modules/notifier/notifierwindowborder.cpp
new file mode 100644
index 00000000..efd9ec0d
--- /dev/null
+++ b/src/modules/notifier/notifierwindowborder.cpp
@@ -0,0 +1,220 @@
+//=============================================================================
+//
+// File : kvinotifierwindowborder.cpp
+// Created on lun 03 gen 2005 02:27:22 by Iacopo Palazzi
+//
+// This file is part of the KVIrc distribution
+// Copyright (C) 2005 Iacopo Palazzi < iakko(at)siena(dot)linux(dot)it >
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "notifierwindowborder.h"
+#include "notifierwindowtabs.h"
+#include "kvi_iconmanager.h"
+
+#include <qpainter.h>
+
+KviNotifierWindowBorder::KviNotifierWindowBorder(QSize s)
+{
+ loadImages();
+ resize(s);
+}
+
+KviNotifierWindowBorder::~KviNotifierWindowBorder()
+{
+}
+
+void KviNotifierWindowBorder::loadImages() {
+
+ // Normal Border
+
+ QPixmap * p;
+
+ if((p = g_pIconManager->getPixmap("notifier_pix_wnd_sx.png")))
+ m_pixSX_N = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_wnd_dx.png")))
+ m_pixDX_N = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_wnd_dwn.png")))
+ m_pixDWN_N = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_wnd_dwndx.png")))
+ m_pixDWNDX_N = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_wnd_dwnsx.png")))
+ m_pixDWNSX_N = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_caption_sx.png")))
+ m_pixCaptionSX_N = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_caption_dx.png")))
+ m_pixCaptionDX_N = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_caption_bkg.png")))
+ m_pixCaptionBKG_N = *p;
+
+ if((p = g_pIconManager->getPixmap("notifier_icon_close_out.png")))
+ m_pixIconClose_out_N = *p;
+ if((p = g_pIconManager->getPixmap("notifier_icon_close_over.png")))
+ m_pixIconClose_over_N = *p;
+ if((p = g_pIconManager->getPixmap("notifier_icon_close_clicked.png")))
+ m_pixIconClose_clicked_N = *p;
+
+ // Highlighted Border
+
+ if((p = g_pIconManager->getPixmap("notifier_pix_wnd_sx_hl.png")))
+ m_pixSX_HL = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_wnd_dx_hl.png")))
+ m_pixDX_HL = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_wnd_dwn_hl.png")))
+ m_pixDWN_HL = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_wnd_dwndx_hl.png")))
+ m_pixDWNDX_HL = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_wnd_dwnsx_hl.png")))
+ m_pixDWNSX_HL = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_caption_sx_hl.png")))
+ m_pixCaptionSX_HL = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_caption_dx_hl.png")))
+ m_pixCaptionDX_HL = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_caption_bkg_hl.png")))
+ m_pixCaptionBKG_HL = *p;
+
+ if((p = g_pIconManager->getPixmap("notifier_icon_close_out_hl.png")))
+ m_pixIconClose_out_HL = *p;
+ if((p = g_pIconManager->getPixmap("notifier_icon_close_over_hl.png")))
+ m_pixIconClose_over_HL = *p;
+ if((p = g_pIconManager->getPixmap("notifier_icon_close_clicked_hl.png")))
+ m_pixIconClose_clicked_HL = *p;
+
+ setPics();
+ setCloseIcon(WDG_ICON_OUT);
+
+ if ( m_pixCaptionDX->height()==m_pixCaptionSX->height() && m_pixCaptionDX->height()==m_pixCaptionBKG->height()) // just to be sure that the height is fitting
+ m_captionRect.setHeight(m_pixCaptionDX->height());
+
+ // We want to see the tabs height to calculate the appropriate rect..
+ if((p = g_pIconManager->getPixmap("notifier_pix_tab_sx.png")))
+ m_iTabsHeight = p->height();
+ else
+ m_iTabsHeight = 10;
+
+ m_bNeedToRedraw = true;
+
+}
+
+void KviNotifierWindowBorder::setPics(bool b)
+{
+ if (b) {
+ m_pixSX = &m_pixSX_HL;
+ m_pixDX = &m_pixDX_HL;
+ m_pixDWN = &m_pixDWN_HL;
+ m_pixDWNSX = &m_pixDWNSX_HL;
+ m_pixDWNDX = &m_pixDWNDX_HL;
+ m_pixCaptionSX = &m_pixCaptionSX_HL;
+ m_pixCaptionDX = &m_pixCaptionDX_HL;
+ m_pixCaptionBKG = &m_pixCaptionBKG_HL;
+ m_pixIconClose_out = &m_pixIconClose_out_HL;
+ m_pixIconClose_over = &m_pixIconClose_over_HL;
+ m_pixIconClose_clicked = &m_pixIconClose_clicked_HL;
+ } else {
+ m_pixSX = &m_pixSX_N;
+ m_pixDX = &m_pixDX_N;
+ m_pixDWN = &m_pixDWN_N;
+ m_pixDWNSX = &m_pixDWNSX_N;
+ m_pixDWNDX = &m_pixDWNDX_N;
+ m_pixCaptionSX = &m_pixCaptionSX_N;
+ m_pixCaptionDX = &m_pixCaptionDX_N;
+ m_pixCaptionBKG = &m_pixCaptionBKG_N;
+ m_pixIconClose_out = &m_pixIconClose_out_N;
+ m_pixIconClose_over = &m_pixIconClose_over_N;
+ m_pixIconClose_clicked = &m_pixIconClose_clicked_N;
+ }
+}
+
+void KviNotifierWindowBorder::setWidth(int w) {
+ m_iRctWidth = w;
+ recalculatePositions();
+}
+
+void KviNotifierWindowBorder::setHeight(int h) {
+ m_iRctHeight = h;
+ recalculatePositions();
+}
+
+void KviNotifierWindowBorder::recalculatePositions()
+{
+ m_rct.setHeight(m_iRctHeight);
+ m_rct.setWidth(m_iRctWidth);
+ m_rct.setTopLeft(QPoint(0,0));
+
+ m_closeIconRect.setX(m_rct.width()-m_pixCaptionDX->width()-m_pixIconClose->width());
+ m_closeIconRect.setY(2);
+ m_closeIconRect.setWidth(m_pixIconClose->width());
+ m_closeIconRect.setHeight(m_pixIconClose->height());
+
+ m_captionRect.setTopLeft( m_rct.topLeft() );
+ m_captionRect.setSize( QSize(m_rct.width(),m_pixCaptionDX->height()) );
+
+ m_tabsRect.setTopLeft( QPoint(m_pixCaptionDX->width()+7,m_captionRect.height()) );
+ m_tabsRect.setSize( QSize(m_captionRect.width()-(2*m_pixCaptionDX->width())-7,m_iTabsHeight) );
+
+ m_bodyRect.setTopLeft( QPoint(m_pixCaptionDX->width()+7,m_captionRect.height()+m_tabsRect.height()) );
+ m_bodyRect.setSize( QSize(m_captionRect.width()-(2*m_pixCaptionDX->width())-7,m_rct.height()-m_captionRect.height()-m_pixDWN->height()-m_tabsRect.height()) );
+
+ m_titleRect.setTopLeft( QPoint(m_pixCaptionSX->width(), (m_captionRect.height()-m_iTitleFontHeight)/2 ) );
+ m_titleRect.setSize( QSize(m_rct.width()-m_pixCaptionSX->width()-m_pixCaptionDX->width(),m_iTitleFontHeight) );
+
+ m_progressRect.setTopLeft( QPoint(m_pixCaptionDX->width(),m_pixCaptionDX->height()));
+ m_progressRect.setSize( QSize(6,m_iRctHeight-m_pixCaptionDX->height()-m_pixDWN->height()));
+
+ m_bNeedToRedraw = true;
+}
+
+void KviNotifierWindowBorder::setCloseIcon(int state) {
+ m_bNeedToRedraw = true; m_eIconState = state;
+ switch (m_eIconState) {
+ case WDG_ICON_OUT: m_pixIconClose = m_pixIconClose_out; break;
+ case WDG_ICON_OVER: m_pixIconClose = m_pixIconClose_over; break;
+ case WDG_ICON_CLICKED: m_pixIconClose = m_pixIconClose_clicked; break;
+ };
+}
+
+void KviNotifierWindowBorder::resetIcons() {
+ setCloseIcon(WDG_ICON_OUT);
+}
+
+void KviNotifierWindowBorder::draw(QPainter * p, bool b) {
+
+ if (m_bNeedToRedraw) {
+ setPics(b);
+ setCloseIcon(m_eIconState);
+
+ // Draw the caption
+ p->drawPixmap(m_captionRect.x(), m_captionRect.y(), *m_pixCaptionSX);
+ p->drawTiledPixmap(m_pixCaptionSX->width(), 0, m_captionRect.width() - (m_pixCaptionSX->width() + m_pixCaptionDX->width()), m_captionRect.height(), *m_pixCaptionBKG);
+ p->drawPixmap(m_captionRect.width() - m_pixCaptionDX->width(), 0, *m_pixCaptionDX);
+
+ // Draw the tiled borders
+ p->drawTiledPixmap(0, m_captionRect.height(), m_pixSX->width(), m_bodyRect.height() + m_iTabsHeight, *m_pixSX);
+ p->drawTiledPixmap(m_bodyRect.width() + m_bodyRect.x(), m_captionRect.height(), m_pixDX->width(), m_bodyRect.height() + m_iTabsHeight, *m_pixDX);
+ p->drawTiledPixmap(m_pixDWNSX->width(), m_captionRect.height() + m_bodyRect.height() + m_iTabsHeight, m_bodyRect.width() + m_progressRect.width() + 1, m_pixDWN->height(), *m_pixDWN);
+
+ // Draw down corners
+ p->drawPixmap(0, m_captionRect.height() + m_bodyRect.height() + m_iTabsHeight, *m_pixDWNSX);
+ p->drawPixmap(m_bodyRect.width() + m_bodyRect.x(), m_captionRect.height() + m_bodyRect.height() + m_iTabsHeight, *m_pixDWNDX);
+
+ //Drawing icons
+ p->drawPixmap(m_closeIconRect.x(), m_closeIconRect.y(), *m_pixIconClose);
+
+ m_bNeedToRedraw = false;
+ }
+
+}
diff --git a/src/modules/notifier/notifierwindowborder.h b/src/modules/notifier/notifierwindowborder.h
new file mode 100644
index 00000000..5c36827b
--- /dev/null
+++ b/src/modules/notifier/notifierwindowborder.h
@@ -0,0 +1,154 @@
+#ifndef _KVINOTIFIERWINDOWBORDER_H_
+#define _KVINOTIFIERWINDOWBORDER_H_
+//=============================================================================
+//
+// File : kvinotifierwindowborder.h
+// Created on lun 03 gen 2005 02:27:22 by Iacopo Palazzi
+//
+// This file is part of the KVIrc distribution
+// Copyright (C) 2005 Iacopo Palazzi < iakko(at)siena(dot)linux(dot)it >
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "notifiersettings.h"
+
+#include <qsize.h>
+#include <qrect.h>
+#include <qpixmap.h>
+
+class QPainter;
+
+class KviNotifierWindowBorder
+{
+public:
+ KviNotifierWindowBorder(QSize = QSize(WDG_MIN_WIDTH,WDG_MIN_HEIGHT));
+ ~KviNotifierWindowBorder();
+
+// ================================
+// Put members declaration below...
+// ================================
+private:
+ QRect m_rct;
+ QPoint m_pnt;
+
+ QRect m_closeIconRect;
+
+ QRect m_captionRect;
+ QRect m_bodyRect;
+ QRect m_tabsRect;
+ QRect m_titleRect;
+
+ QRect m_progressRect;
+
+ // Pictures
+ QPixmap * m_pixSX;
+ QPixmap * m_pixDX;
+ QPixmap * m_pixDWN;
+ QPixmap * m_pixDWNSX;
+ QPixmap * m_pixDWNDX;
+ QPixmap * m_pixCaptionSX;
+ QPixmap * m_pixCaptionDX;
+ QPixmap * m_pixCaptionBKG;
+ QPixmap * m_pixIconClose_out;
+ QPixmap * m_pixIconClose_over;
+ QPixmap * m_pixIconClose_clicked;
+ QPixmap * m_pixIconClose;
+
+ QPixmap m_pixSX_N;
+ QPixmap m_pixDX_N;
+ QPixmap m_pixDWN_N;
+ QPixmap m_pixDWNSX_N;
+ QPixmap m_pixDWNDX_N;
+ QPixmap m_pixCaptionSX_N;
+ QPixmap m_pixCaptionDX_N;
+ QPixmap m_pixCaptionBKG_N;
+ QPixmap m_pixIconClose_out_N;
+ QPixmap m_pixIconClose_over_N;
+ QPixmap m_pixIconClose_clicked_N;
+
+ QPixmap m_pixSX_HL;
+ QPixmap m_pixDX_HL;
+ QPixmap m_pixDWN_HL;
+ QPixmap m_pixDWNSX_HL;
+ QPixmap m_pixDWNDX_HL;
+ QPixmap m_pixCaptionSX_HL;
+ QPixmap m_pixCaptionDX_HL;
+ QPixmap m_pixCaptionBKG_HL;
+ QPixmap m_pixIconClose_out_HL;
+ QPixmap m_pixIconClose_over_HL;
+ QPixmap m_pixIconClose_clicked_HL;
+
+ int m_iTabsHeight;
+ int m_iTitleFontHeight;
+ int m_eIconState;
+ int m_iRctWidth;
+ int m_iRctHeight;
+
+ bool m_bNeedToRedraw;
+
+public:
+protected:
+
+
+// ================================
+// Put methods declaration below...
+// ================================
+private:
+ void loadImages();
+ void recalculatePositions();
+
+public:
+ // reading methods...
+ void setWidth(int w);
+ void setHeight(int h);
+ void resize(int w, int h) { setWidth(w); setHeight(h); };
+ void resize(QSize r) { setWidth(r.width()); setHeight(r.height()); };
+ void setGeometry(QRect r) { r.topLeft(); r.size(); /*debug("x,y: %d,%d", r.x(), r.y()); debug("w,h: %d,%d", r.width(), r.height());*/ };
+ void setGeometry(QPoint p, QSize s) { setPoint (p.x(), p.y()); setWidth (s.width()); setHeight (s.height()); };
+
+ void setPoint(int x, int y) { m_pnt.setX(x); m_pnt.setY(y); m_rct.setX(x); m_rct.setY(y); };
+
+ void setCloseIcon(int state);
+ void resetIcons();
+
+ // writing methods...
+ int x() { return m_pnt.x(); };
+ int y() { return m_pnt.y(); };
+ int width() { return m_rct.width(); };
+ int height() { return m_rct.height(); };
+ int baseLine() { return (y()+height()); };
+
+ QRect bodyRect() { return m_bodyRect; };
+ QRect tabsRect() { return m_tabsRect; };
+ QRect captionRect() { return m_captionRect; };
+ QRect rect() { return m_rct; };
+ QRect closeRect() { return m_closeIconRect; };
+ QRect titleRect() { return m_titleRect; };
+ QRect progressRect() { return m_progressRect; };
+
+ void centerTitle(int h) { m_iTitleFontHeight = h; };
+
+ void touch() { m_bNeedToRedraw = true; };
+
+ void draw(QPainter *, bool b = false);
+ void setPics(bool b = false);
+
+protected:
+
+};
+
+#endif //!_KVINOTIFIERWINDOWBORDER_H_
diff --git a/src/modules/notifier/notifierwindowprogressbar.cpp b/src/modules/notifier/notifierwindowprogressbar.cpp
new file mode 100644
index 00000000..72bbdecf
--- /dev/null
+++ b/src/modules/notifier/notifierwindowprogressbar.cpp
@@ -0,0 +1,51 @@
+//=============================================================================
+//
+// File : notifierwindowprogressbar.cpp
+// Created on Tue 17 Apr 2007 10:24:01 by Iacopo Palazzi
+//
+// This file is part of the KVIrc distribution
+// Copyright (C) 2007 Iacopo Palazzi < iakko(at)siena.linux.it >
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "notifierwindowprogressbar.h"
+
+KviNotifierWindowProgressBar::KviNotifierWindowProgressBar(QRect r)
+: m_rect(r)
+{
+
+}
+
+KviNotifierWindowProgressBar::~KviNotifierWindowProgressBar()
+{
+ m_dProgress = 0;
+}
+
+void KviNotifierWindowProgressBar::draw(QPainter *p)
+{
+ p->fillRect(m_rect, QColor(236, 233, 216));
+ p->fillRect(
+ QRect(
+ m_rect.x()+1,
+ m_rect.y()+1 + m_rect.height() * (1 - m_dProgress),
+ m_rect.width() - 2,
+ (m_rect.height() - 2) * m_dProgress
+ ),
+ QColor(175, 28, 95)
+ );
+ p->drawRect(m_rect);
+}
diff --git a/src/modules/notifier/notifierwindowprogressbar.h b/src/modules/notifier/notifierwindowprogressbar.h
new file mode 100644
index 00000000..ec527d2e
--- /dev/null
+++ b/src/modules/notifier/notifierwindowprogressbar.h
@@ -0,0 +1,67 @@
+#ifndef _NOTIFIERWINDOWPROGRESSBAR_H_
+#define _NOTIFIERWINDOWPROGRESSBAR_H_
+//=============================================================================
+//
+// File : notifierwindowprogressbar.h
+// Created on Tue 17 Apr 2007 10:24:01 by Iacopo Palazzi
+//
+// This file is part of the KVIrc distribution
+// Copyright (C) 2007 Iacopo Palazzi < iakko(at)siena.linux.it >
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include <qrect.h>
+#include <qpainter.h>
+
+class KviNotifierWindowProgressBar
+{
+public:
+ KviNotifierWindowProgressBar(QRect r);
+ ~KviNotifierWindowProgressBar();
+
+// ================================
+// Put members declaration below...
+// ================================
+private:
+
+public:
+
+protected:
+ QRect m_rect;
+ double m_dProgress;
+
+// ================================
+// Put methods declaration below...
+// ================================
+private:
+
+public:
+ int x() { return m_rect.x(); };
+ int y() { return m_rect.y(); };
+ int width() { return m_rect.width(); };
+ int height() { return m_rect.height(); };
+
+ void setHeight(int p_iHeight) { m_rect.setHeight(p_iHeight); };
+ void setProgress(double progress) { m_dProgress=progress; };
+ void draw(QPainter *);
+
+protected:
+
+
+};
+
+#endif //!_NOTIFIERWINDOWPROGRESSBAR_H_
diff --git a/src/modules/notifier/notifierwindowtabs.cpp b/src/modules/notifier/notifierwindowtabs.cpp
new file mode 100644
index 00000000..9eaa2f12
--- /dev/null
+++ b/src/modules/notifier/notifierwindowtabs.cpp
@@ -0,0 +1,705 @@
+//=============================================================================
+//
+// File : kvinotifierwindowtabs.cpp
+// Created on dom 02 gen 2005 15:30:50 by Iacopo Palazzi
+//
+// This file is part of the KVIrc irc client distribution
+// Copyright (C) 2005 Iacopo Palazzi < iakko(at)siena(dot)linux(dot)it >
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_app.h"
+#include "kvi_config.h"
+#include "kvi_qstring.h"
+#include "kvi_iconmanager.h"
+#include "kvi_locale.h"
+#include "kvi_options.h"
+#include "kvi_window.h"
+
+#include <qevent.h>
+#include <qpainter.h>
+#include <qbrush.h>
+#include <qcolor.h>
+#include <qfontmetrics.h>
+
+#include "notifiermessage.h"
+#include "notifierwindowtabs.h"
+
+extern KviNotifierWindow * g_pNotifierWindow;
+KviNotifierWindowTabs * g_pTabs;
+
+
+// --- tab object definition class
+
+KviNotifierWindowTab::KviNotifierWindowTab(KviWindow * pWnd, QString label)
+{
+ m_pWnd = pWnd;
+ m_label = label;
+ m_pMessageList = new KviPointerList<KviNotifierMessage>;
+ m_pMessageList->setAutoDelete(true);
+ m_bFocused = false;
+ m_pCurrentMessage = 0;
+
+ KviStr buffer;
+ g_pApp->getReadOnlyConfigPath(buffer,"libkvinotifier.kvc",KviApp::ConfigPlugins,true);
+ KviConfig cfg(buffer.ptr(),KviConfig::Read);
+ cfg.setGroup("NotifierSkin");
+ m_clrHighlightedLabel = cfg.readColorEntry("HighlightedTabLablerColor",QColor(200,0,0));
+ m_clrNormalLabel = cfg.readColorEntry("NormalTabLablerColor",QColor(0,0,0));
+ m_clrChangedLabel = cfg.readColorEntry("ChangedTabLablerColor",QColor(0,0,100));
+
+ if(pWnd)
+ {
+ connect(pWnd,SIGNAL(windowNameChanged()),this,SLOT(labelChanged()));
+ connect(pWnd,SIGNAL(destroyed()),this,SLOT(closeMe()));
+ }
+}
+
+KviNotifierWindowTab::~KviNotifierWindowTab()
+{
+ delete m_pMessageList;
+}
+
+void KviNotifierWindowTab::setNextMessageAsCurrent()
+{
+ if(!m_pCurrentMessage)return;
+ if(m_pMessageList->findRef(m_pCurrentMessage) == -1)return;
+ m_pCurrentMessage = m_pMessageList->next();
+ if(!m_pCurrentMessage)m_pCurrentMessage = m_pMessageList->last();
+}
+
+void KviNotifierWindowTab::setPrevMessageAsCurrent()
+{
+ if(!m_pCurrentMessage)return;
+ if(!m_pMessageList->findRef(m_pCurrentMessage) == -1)return;
+ m_pCurrentMessage = m_pMessageList->prev();
+ if(!m_pCurrentMessage)m_pCurrentMessage = m_pMessageList->first();
+}
+
+void KviNotifierWindowTab::setLastMessageAsCurrent()
+{
+ m_pCurrentMessage = m_pMessageList->last();
+}
+
+void KviNotifierWindowTab::appendMessage(KviNotifierMessage * m)
+{
+ if(m_pCurrentMessage == m_pMessageList->last())m_pCurrentMessage = m;
+ m_pMessageList->append(m);
+ // avoid having too much messages floating around
+ while(m_pMessageList->count() > MAX_MESSAGES_IN_WINDOW)
+ {
+ m = m_pMessageList->first();
+ m_pMessageList->removeFirst();
+ if(m == m_pCurrentMessage)
+ m_pCurrentMessage = m_pMessageList->first();
+ }
+ if(focused())setState(Normal);
+ else setState(Highlighted);
+}
+
+void KviNotifierWindowTab::labelChanged()
+{
+ if(!m_pWnd)return;
+ m_label = m_pWnd->windowName();
+ setState(Changed);
+ g_pTabs->needToRedraw();
+ g_pNotifierWindow->update();
+}
+
+void KviNotifierWindowTab::closeMe()
+{
+ g_pTabs->closeTab(this);
+}
+
+void KviNotifierWindowTab::setFocused(bool b)
+{
+ m_bFocused = b;
+ if(m_bFocused)setState(Normal);
+}
+
+void KviNotifierWindowTab::setState(TabState state)
+{
+ m_eState=state;
+ switch (m_eState) {
+ case Normal:
+ m_cLabel = m_clrNormalLabel;
+ break;
+ case Highlighted:
+ m_cLabel = m_clrHighlightedLabel;
+ break;
+ case Changed:
+ m_cLabel = m_clrChangedLabel;
+ break;
+ }
+};
+
+int KviNotifierWindowTab::width(bool b) {
+ int width = 0;
+ QFont * font;
+
+ QPixmap * sx;
+ QPixmap * dx;
+
+ if (focused()) {
+ font = g_pTabs->fontFocused();
+ sx = g_pTabs->tabFocusedPixSx();
+ dx = g_pTabs->tabFocusedPixSx();
+ } else {
+ sx = g_pTabs->tabUnfocusedPixSx();
+ dx = g_pTabs->tabUnfocusedPixSx();
+ font = g_pTabs->fontUnfocused();
+ }
+
+ QFontMetrics fm(*font);
+ width = fm.width(label())+2;
+ if (!b) width += sx->width() + dx->width();
+
+ return width;
+}
+
+// ##################################################################################à
+// ### end of tab object definition class
+// ##################################################################################à
+
+
+KviNotifierWindowTabs::KviNotifierWindowTabs(QRect r)
+{
+ g_pTabs = this;
+ m_pPixmap = new QPixmap();
+ m_pPainter = new QPainter();
+ m_pTabFocused = 0;
+ m_pWndTabFocused = 0;
+ m_iTabToStartFrom = 0;
+
+ m_tabPtrList.setAutoDelete(false); // FIXME: should take a closer look at this
+ m_lastVisitedTabPtrList.setAutoDelete(false);
+
+ loadImages();
+ initConfig();
+ resize(r);
+}
+
+KviNotifierWindowTabs::~KviNotifierWindowTabs()
+{
+ QMap<KviWindow *, KviNotifierWindowTab *>::Iterator tab;
+ for(tab = m_tabMap.begin(); tab != m_tabMap.end(); tab++ )
+ delete tab.data();
+ m_tabMap.clear();
+ delete m_pFocusedFont;
+ delete m_pUnfocusedFont;
+ delete m_pPainter;
+ delete m_pPixmap;
+}
+
+void KviNotifierWindowTabs::initConfig()
+{
+ KviStr buffer;
+ g_pApp->getReadOnlyConfigPath(buffer,"libkvinotifier.kvc",KviApp::ConfigPlugins,true);
+
+ KviConfig cfg(buffer.ptr(),KviConfig::Read);
+
+ cfg.setGroup("NotifierSkin");
+
+ QString szFamily = cfg.readEntry("TextFontFocusedTab","Arial");
+ m_pFocusedFont = new QFont(szFamily,cfg.readIntEntry("TextFocusedFontSize",10));
+ m_pFocusedFont->setBold(true);
+ szFamily = cfg.readEntry("TextFontUnfocusedTab","Arial");
+ m_pUnfocusedFont = new QFont(szFamily,cfg.readIntEntry("TextUnfocusedFontSize",9));
+}
+
+void KviNotifierWindowTabs::loadImages()
+{
+ QPixmap * p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_tab_dx.png")))
+ m_pixDX = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_tab_sx.png")))
+ m_pixSX = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_tab_bkg.png")))
+ m_pixBKG = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_tab_focused_sx.png")))
+ m_pixSXFocused = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_tab_focused_dx.png")))
+ m_pixDXFocused = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_tab_focused_bkg.png")))
+ m_pixBKGFocused = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_tab_unfocused_sx.png")))
+ m_pixSXUnfocused = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_tab_unfocused_dx.png")))
+ m_pixDXUnfocused = *p;
+ if((p = g_pIconManager->getPixmap("notifier_pix_tab_unfocused_bkg.png")))
+ m_pixBKGUnfocused = *p;
+
+ if((p = g_pIconManager->getPixmap("notifier_icon_tab_next_out.png")))
+ m_pixIconTabNext_out = *p;
+ if((p = g_pIconManager->getPixmap("notifier_icon_tab_next_over.png")))
+ m_pixIconTabNext_over = *p;
+ if((p = g_pIconManager->getPixmap("notifier_icon_tab_next_clicked.png")))
+ m_pixIconTabNext_clicked = *p;
+
+ m_pixIconTabNext = m_pixIconTabNext_out;
+
+ if((p = g_pIconManager->getPixmap("notifier_icon_tab_prev_out.png")))
+ m_pixIconTabPrev_out = *p;
+ if((p = g_pIconManager->getPixmap("notifier_icon_tab_prev_over.png")))
+ m_pixIconTabPrev_over = *p;
+ if((p = g_pIconManager->getPixmap("notifier_icon_tab_prev_clicked.png")))
+ m_pixIconTabPrev_clicked = *p;
+
+ m_pixIconTabPrev = m_pixIconTabPrev_out;
+
+ if((p = g_pIconManager->getPixmap("notifier_icon_tab_close_off.png")))
+ m_pixIconCloseTab_off = *p;
+ if((p = g_pIconManager->getPixmap("notifier_icon_tab_close_on.png")))
+ m_pixIconCloseTab_on = *p;
+ if((p = g_pIconManager->getPixmap("notifier_icon_tab_close_clicked.png")))
+ m_pixIconCloseTab_clicked = *p;
+
+ m_pixIconCloseTab = m_pixIconCloseTab_off;
+
+ m_closeTabIconState = WDG_ICON_OFF;
+
+}
+
+
+
+void KviNotifierWindowTabs::addMessage(KviWindow * pWnd, KviNotifierMessage * message)
+{
+ QString sender = pWnd ? pWnd->windowName() : "----";
+
+ // Qui servirebbe anche una lista... perche' quando si inserisce
+ // un tab lui lo piazza dove gli pare nell'ordine
+ // e quindi iterando i tab nuovi possono trovarsi PRIMA dei tab vecchi
+ // il che' confonde un po
+ KviNotifierWindowTab * tab;
+ if (!m_tabMap.contains(pWnd)) {
+ m_tabMap.insert(pWnd, tab = new KviNotifierWindowTab(pWnd, sender));
+ m_tabPtrList.append(tab);
+ } else {
+ tab = m_tabMap[pWnd];
+ }
+
+ tab->appendMessage(message);
+
+ if((g_pNotifierWindow->state()==Hidden) || (!m_pTabFocused))
+ {
+ setFocusOn(tab);
+ } else {
+ needToRedraw();
+ }
+}
+
+void KviNotifierWindowTabs::resize(QRect r)
+{
+ m_rct.setX(r.x());
+ m_rct.setY(r.y());
+ m_rct.setHeight(r.height());
+ setWidth(r.width());
+
+ recalculatePositions();
+}
+
+void KviNotifierWindowTabs::setWidth(int w) {
+ m_rct.setWidth(w);
+ recalculatePositions();
+}
+
+void KviNotifierWindowTabs::recalculatePositions()
+{
+ m_rctCloseTabIcon.setX(m_rct.x()+m_rct.width()-m_pixIconCloseTab.width());
+ m_rctCloseTabIcon.setY(m_rct.y());
+ m_rctCloseTabIcon.setWidth(m_pixIconCloseTab.width());
+ m_rctCloseTabIcon.setHeight(m_pixIconCloseTab.height());
+ // The sensible area for the Close Icon
+ m_rctCloseTabIconHotArea.setX(m_rctCloseTabIcon.x()+6);
+ m_rctCloseTabIconHotArea.setY(m_rctCloseTabIcon.y()+3);
+ m_rctCloseTabIconHotArea.setWidth(16);
+ m_rctCloseTabIconHotArea.setHeight(16);
+
+ if (m_bIsOverRightBound) {
+ m_rctNextIcon.setX(m_rct.x() + m_rct.width() - m_rctCloseTabIcon.width() - m_pixIconTabNext.width());
+ m_rctNextIcon.setY(m_rct.y());
+ m_rctNextIcon.setWidth(m_pixIconTabNext.width());
+ m_rctNextIcon.setHeight(m_pixIconTabNext.height());
+ }
+
+ if (m_bIsOverLeftBound) {
+ m_rctPrevIcon.setX(m_rct.x());
+ m_rctPrevIcon.setY(m_rct.y());
+ m_rctPrevIcon.setWidth(m_pixIconTabPrev.width());
+ m_rctPrevIcon.setHeight(m_pixIconTabPrev.height());
+ }
+
+ int tmpX, tmpWidth;
+
+ tmpWidth = m_rctCloseTabIcon.x() - m_rct.x();
+
+ if (m_bIsOverRightBound) {
+ tmpWidth -= m_rctNextIcon.width();
+ }
+
+ if (m_bIsOverLeftBound) {
+ tmpWidth -= m_rctPrevIcon.width();
+ tmpX = m_rct.x() + m_rctPrevIcon.width();
+ } else {
+ tmpX = m_rct.x();
+ }
+
+ m_rctTabs.setX(tmpX);
+ m_rctTabs.setY(m_rct.y());
+
+ m_rctTabs.setWidth(tmpWidth);
+ m_rctTabs.setHeight(m_rct.height());
+
+ needToRedraw();
+}
+
+void KviNotifierWindowTabs::prev()
+{
+ if(!m_pTabFocused)return;
+
+ KviNotifierWindowTab * tab;
+ KviPointerListIterator<KviNotifierWindowTab> tabIterator (m_tabPtrList);
+
+ tab = m_tabMap[m_pTabFocused->wnd()];
+
+ tabIterator.moveFirst();
+
+ while ((tabIterator.current()) != tab) {
+ ++tabIterator;
+ }
+
+ if (!tabIterator.moveFirst()) {
+ --tabIterator;
+ tab = tabIterator.current();
+ setFocusOn(tab);
+ }
+
+}
+
+void KviNotifierWindowTabs::next()
+{
+ if(!m_pTabFocused)return;
+
+ KviNotifierWindowTab * tab;
+ KviPointerListIterator<KviNotifierWindowTab> tabIterator (m_tabPtrList);
+
+ tab = m_tabMap[m_pTabFocused->wnd()];
+ tabIterator.moveFirst();
+ while ((tabIterator.current()) != tab) {
+ ++tabIterator;
+ }
+
+ if (!tabIterator.moveLast()) {
+ ++tabIterator;
+ tab = tabIterator.current();
+ setFocusOn(tab);
+ }
+
+}
+
+void KviNotifierWindowTabs::mousePressEvent(QMouseEvent * e) {
+
+ if (m_bIsOverRightBound && m_rctNextIcon.contains(e->pos())) {
+ return;
+ }
+
+ if (m_bIsOverLeftBound && m_rctPrevIcon.contains(e->pos())) {
+ return;
+ }
+
+ if(m_rctTabs.contains(e->pos()))
+ {
+ QMap<KviWindow *, KviNotifierWindowTab *>::Iterator tab;
+ for (tab = m_tabMap.begin(); tab != m_tabMap.end(); tab++ ) {
+ if (tab.data()->rect().contains(e->pos())) {
+ setFocusOn(tab.data());
+ return;
+ }
+ }
+ }
+
+ if (m_rctCloseTabIconHotArea.contains(e->pos())) {
+ setCloseTabIcon(WDG_ICON_CLICKED);
+ return;
+ }
+
+}
+
+void KviNotifierWindowTabs::mouseMoveEvent(QMouseEvent * e)
+{
+ if (m_rctCloseTabIconHotArea.contains(e->pos()))
+ {
+ setCloseTabIcon(WDG_ICON_ON);
+ } else {
+ if (closeTabIconState()!=WDG_ICON_OFF)
+ setCloseTabIcon(WDG_ICON_OFF);
+ }
+}
+
+void KviNotifierWindowTabs::mouseReleaseEvent(QMouseEvent * e)
+{
+
+ if (m_bIsOverRightBound && m_rctNextIcon.contains(e->pos())) {
+ scrollTabsLeft();
+ return;
+ }
+
+ if (m_bIsOverLeftBound && m_rctPrevIcon.contains(e->pos())) {
+ scrollTabsRight();
+ return;
+ }
+
+ if(currentTab())
+ {
+ if (rctCloseTabIconHotArea().contains(e->pos()))
+ {
+ closeCurrentTab();
+ g_pNotifierWindow->update();
+ }
+ }
+
+}
+
+void KviNotifierWindowTabs::scrollTabsLeft() {
+ if (m_bIsOverRightBound) {
+ m_iTabToStartFrom++;
+ }
+ needToRedraw();
+ g_pNotifierWindow->update();
+};
+
+void KviNotifierWindowTabs::scrollTabsRight() {
+ if (m_bIsOverLeftBound) {
+ m_iTabToStartFrom--;
+ }
+ needToRedraw();
+ g_pNotifierWindow->update();
+};
+
+void KviNotifierWindowTabs::setCloseTabIcon(int state) {
+
+ //if (m_writeIconState==WDG_ICON_OFF && state!=WDG_ICON_OFF)
+ if (m_closeTabIconState!=state) {
+ switch (state) {
+ case WDG_ICON_ON: m_pixIconCloseTab = m_pixIconCloseTab_on; break;
+ case WDG_ICON_OFF: m_pixIconCloseTab = m_pixIconCloseTab_off; break;
+ case WDG_ICON_CLICKED: m_pixIconCloseTab = m_pixIconCloseTab_clicked; break;
+ }
+ needToRedraw();
+ m_closeTabIconState = state;
+ }
+}
+
+void KviNotifierWindowTabs::resetIcons()
+{
+ setCloseTabIcon(WDG_ICON_OFF);
+}
+
+void KviNotifierWindowTabs::setFocusOn(KviNotifierWindowTab * tab)
+{
+ if(m_pTabFocused)m_pTabFocused->setFocused(false);
+ m_pTabFocused = tab;
+ if(m_pTabFocused)m_pTabFocused->setFocused();
+
+ m_lastVisitedTabPtrList.removeRef(tab);
+
+ m_lastVisitedTabPtrList.insert(0, tab);
+
+ needToRedraw();
+
+ g_pNotifierWindow->update();
+}
+
+void KviNotifierWindowTabs::draw(QPainter * p)
+{
+ if(!m_bNeedToRedraw)return;
+
+ m_pPixmap->resize(m_rct.width(), m_rct.height());
+
+ m_pPainter->begin(m_pPixmap);
+
+ QFont tmpFont;
+ tmpFont = p->font();
+
+ m_pPainter->setFont(tmpFont);
+
+ QString str;
+
+ bool isBigger = false;
+
+ int offset = 0;
+
+ int closeIcon_X = m_rct.width() - m_rctCloseTabIcon.width();
+ int nextIcon_X = closeIcon_X - m_pixIconTabNext_out.width();
+ int prevIcon_X = m_rct.x();
+
+ int tmpTabsWidth = 0;
+
+ m_pPainter->drawPixmap(0,0,m_pixSX);
+ m_pPainter->drawPixmap(m_rct.width()-m_pixDX.width(),0,m_pixDX);
+ m_pPainter->drawTiledPixmap(m_pixSX.width(),0,m_rct.width()-m_pixSX.width()-m_pixDX.width(),m_rct.height(),m_pixBKG);
+
+ KviPointerListIterator<KviNotifierWindowTab> tabIterator (m_tabPtrList);
+
+ //m_tabPtrList.findRef(m_tabMap[m_pTabFocused->wnd()]);
+
+// QMap<KviWindow *, KviNotifierWindowTab *>::Iterator tab;
+ KviNotifierWindowTab * tab;
+ //for (tab = m_tabMap.begin(); tab != m_tabMap.end() && !isBigger; tab++ )
+ tabIterator.moveFirst();
+
+ int i = 0;
+ while(m_iTabToStartFrom!=i) {
+ i++;
+ ++tabIterator;
+ }
+
+ while ( ((tab = tabIterator.current()) != 0) && !isBigger)
+ {
+ ++tabIterator;
+
+ if (tab->focused()) {
+
+ m_pPainter->setFont(*m_pFocusedFont);
+
+ tab->setRect(m_rct.x() + offset, m_rctTabs.y(), tab->width(), m_rctTabs.height());
+
+ m_pPainter->drawPixmap(offset,0,m_pixSXFocused);
+ m_pPainter->drawTiledPixmap(offset+m_pixSXFocused.width(),0,tab->width(true),m_rctTabs.height(),m_pixBKGFocused);
+ m_pPainter->drawPixmap(offset+m_pixSXFocused.width()+tab->width(true),0,m_pixDXFocused);
+ QPen tmpP = m_pPainter->pen(); m_pPainter->setPen(tab->labelColor());
+ m_pPainter->drawText(offset+m_pixSXFocused.width()+1,m_rctTabs.height()-NTF_TABS_FONT_BASELINE,tab->label());
+ m_pPainter->setPen(tmpP);
+
+ offset += tab->width();
+
+ } else {
+
+ m_pPainter->setFont(*m_pUnfocusedFont);
+
+ tab->setRect(m_rct.x() + offset, m_rctTabs.y(), tab->width(), m_rctTabs.height());
+
+ m_pPainter->drawPixmap(offset, 0, m_pixSXUnfocused);
+ m_pPainter->drawTiledPixmap(offset+m_pixSXUnfocused.width(), 0, tab->width(true), m_rctTabs.height(), m_pixBKGUnfocused);
+ m_pPainter->drawPixmap(offset+m_pixSXUnfocused.width()+tab->width(true), 0, m_pixDXUnfocused);
+ QPen tmpP = m_pPainter->pen(); m_pPainter->setPen(tab->labelColor());
+ m_pPainter->drawText(offset+m_pixSXUnfocused.width()+1,m_rctTabs.height()-NTF_TABS_FONT_BASELINE+1,tab->label());
+ m_pPainter->setPen(tmpP);
+ offset += tab->width();
+ }
+
+ if (offset > m_rctTabs.width()) isBigger = true; else isBigger = false;
+ }
+
+ if (m_iTabToStartFrom) {
+ // Draw the left arrow for more tabs
+ m_bIsOverLeftBound = true;
+ m_pPainter->drawPixmap(0, 0, m_pixIconTabPrev);
+ } else {
+ m_bIsOverLeftBound = false;
+ }
+
+ if (isBigger) {
+ // Draw the right arrow for more tabs
+ m_bIsOverRightBound = true;
+ m_pPainter->drawPixmap(nextIcon_X, 0, m_pixIconTabNext);
+ } else {
+ m_bIsOverRightBound = false;
+ }
+
+ m_pPainter->drawPixmap(closeIcon_X, 0, m_pixIconCloseTab);
+
+ m_pPainter->end();
+
+ p->drawPixmap(m_rct.x(), m_rct.y(), *m_pPixmap, 0, 0, m_pPixmap->width(), m_pPixmap->height());
+
+ m_bNeedToRedraw = false;
+
+}
+
+void KviNotifierWindowTabs::markAllMessagesAsHistoric()
+{
+/*
+ QMap<KviWindow *, KviNotifierWindowTab *>::Iterator tab;
+ // Iterating every tab
+ for (tab = m_tabMap.begin(); tab != m_tabMap.end(); ++tab) {
+
+ if (!tab.value()) break;
+
+ KviPointerList<KviNotifierMessage> * tmpMessageList = tab.value()->messageList();
+
+ if (!tmpMessageList) break;
+
+ for(KviNotifierMessage * m = tmpMessageList->last(); m; m = tmpMessageList->prev()) {
+ if(m->historic()) break;;
+ m->setHistoric();
+ }
+ }
+*/
+}
+
+void KviNotifierWindowTabs::closeTab(KviWindow * pWnd)
+{
+ KviNotifierWindowTab * pTab = m_tabMap.find(pWnd).data();
+ closeTab(pWnd, pTab);
+}
+
+void KviNotifierWindowTabs::closeTab(KviNotifierWindowTab * pTab)
+{
+ KviWindow * pWnd = pTab->wnd();
+ closeTab(pWnd, pTab);
+}
+
+void KviNotifierWindowTabs::closeCurrentTab()
+{
+ // Paranoic checks...
+ if (!m_pTabFocused) return; // The current tab is null? Please, kill me...
+ KviNotifierWindowTab * pTab = m_pTabFocused;
+ if (m_tabMap.isEmpty()) return; // Empty??? The World is ending...
+ KviWindow * pWnd = pTab->wnd();
+ if (!m_tabMap.contains(pWnd)) return; // The current tab is not on the map??? Call 911!!
+ // End paranoic stuff, go back to sanity...
+
+ closeTab(pWnd, pTab);
+}
+
+void KviNotifierWindowTabs::closeTab(KviWindow * pWnd, KviNotifierWindowTab * pTab)
+{
+ // Ok, we should be sure to delete the right tab...
+ m_tabPtrList.removeRef(pTab);
+ m_lastVisitedTabPtrList.removeRef(pTab);
+ m_tabMap.remove(pWnd);
+ delete pTab;
+
+ if(m_tabMap.empty())
+ {
+ m_pTabFocused = 0;
+ g_pNotifierWindow->showLineEdit(false);
+ g_pNotifierWindow->doHide(false);
+ } else {
+
+ if (m_lastVisitedTabPtrList.count()) {
+ m_pTabFocused = m_lastVisitedTabPtrList.first();
+ } else {
+ m_pTabFocused = m_tabPtrList.last();
+ }
+
+ m_pTabFocused->setFocused(true);
+ }
+}
+
+#include "m_notifierwindowtabs.moc"
diff --git a/src/modules/notifier/notifierwindowtabs.h b/src/modules/notifier/notifierwindowtabs.h
new file mode 100644
index 00000000..555906b8
--- /dev/null
+++ b/src/modules/notifier/notifierwindowtabs.h
@@ -0,0 +1,263 @@
+#ifndef _KVINOTIFIERWINDOWTABS_H_
+#define _KVINOTIFIERWINDOWTABS_H_
+//=============================================================================
+//
+// File : kvinotifierwindowtabs.h
+// Created on dom 02 gen 2005 15:30:50 by Iacopo Palazzi
+//
+// This file is part of the KVIrc distribution
+// Copyright (C) 2005 Iacopo Palazzi < iakko(at)siena.linux.it >
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include <qfont.h>
+#include <qmap.h>
+#include <qobject.h>
+#include <qpixmap.h>
+#include <qpoint.h>
+#include <qrect.h>
+#include "kvi_settings.h"
+#include "kvi_pointerlist.h"
+#include "notifiersettings.h"
+#include "notifierwindow.h"
+
+#include "notifiermessage.h"
+
+
+class QPainter;
+class KviWindow;
+class KviNotifierWindowTab;
+
+typedef struct wndTabPair_s {
+ KviNotifierWindowTab * pTab;
+ KviWindow * pWnd;
+} wndTabPair;
+
+class KviNotifierWindowTab : public QObject // this class defines an object for every single tab about the tabs area
+{
+ Q_OBJECT
+public:
+ KviNotifierWindowTab(KviWindow *, QString);
+ ~KviNotifierWindowTab();
+
+// ================================
+// Put members declaration below...
+// ================================
+private:
+ bool m_bFocused;
+
+ QColor m_cLabel;
+ QColor m_clrHighlightedLabel;
+ QColor m_clrNormalLabel;
+ QColor m_clrChangedLabel;
+
+ QRect m_rect;
+
+ QString m_label;
+
+ KviPointerList<KviNotifierMessage> * m_pMessageList;
+ KviWindow * m_pWnd;
+ KviNotifierMessage * m_pCurrentMessage;
+
+ TabState m_eState;
+
+public:
+
+protected:
+
+
+// ================================
+// Put methods declaration below...
+// ================================
+private:
+
+private slots:
+ void labelChanged();
+ void closeMe();
+
+public:
+ bool focused() { return m_bFocused; };
+
+ int countMessage() { return m_pMessageList->count(); };
+ int width(bool b = false);
+
+ void appendMessage(KviNotifierMessage * m);
+ void setCurrentMessage(KviNotifierMessage * m) { m_pCurrentMessage = m; };
+ void setFocused(bool b = true);
+ void setLastMessageAsCurrent();
+ void setNextMessageAsCurrent();
+ void setPrevMessageAsCurrent();
+ void setState(TabState state);
+ void setRect(int x, int y, int w, int h) { m_rect.setX(x); m_rect.setY(y); m_rect.setWidth(w); m_rect.setHeight(h); };
+
+ QColor labelColor() {return m_cLabel; }
+ QRect rect() { return m_rect; };
+ QString label() { return m_label; };
+
+ KviNotifierMessage * currentMessage() { return m_pCurrentMessage; };
+ KviPointerList<KviNotifierMessage> * messageList() { return m_pMessageList; };
+ KviWindow * window() { return m_pWnd; };
+ KviWindow * wnd() {return m_pWnd; };
+
+ TabState state() { return m_eState; };
+
+protected:
+
+
+
+};
+
+
+//####################################################################################################
+//## Tabs Manager
+//####################################################################################################
+
+
+class KviNotifierWindowTabs // this class defines the tabs area
+{
+public:
+ KviNotifierWindowTabs(QRect r);
+ ~KviNotifierWindowTabs();
+
+// ================================
+// Put members declaration below...
+// ================================
+private:
+ QRect m_rct;
+ QPoint m_pnt;
+
+ QMap<KviWindow *, KviNotifierWindowTab *> m_tabMap;
+ KviPointerList<KviNotifierWindowTab> m_tabPtrList;
+ KviPointerList<KviNotifierWindowTab> m_lastVisitedTabPtrList;
+
+ QFont * m_pFocusedFont;
+ QFont * m_pUnfocusedFont;
+
+ KviNotifierWindowTab * m_pTabFocused;
+ KviWindow * m_pWndTabFocused;
+
+ QRect m_rctNextIcon;
+ QRect m_rctPrevIcon;
+ QRect m_rctCloseTabIcon;
+ QRect m_rctCloseTabIconHotArea;
+ QRect m_rctTabs;
+
+ QPainter * m_pPainter;
+ QPixmap * m_pPixmap;
+
+ QPixmap m_pixDX;
+ QPixmap m_pixSX;
+ QPixmap m_pixBKG;
+ QPixmap m_pixSXFocused;
+ QPixmap m_pixDXFocused;
+ QPixmap m_pixBKGFocused;
+ QPixmap m_pixSXUnfocused;
+ QPixmap m_pixDXUnfocused;
+ QPixmap m_pixBKGUnfocused;
+
+ QPixmap m_pixIconTabPrev;
+ QPixmap m_pixIconTabPrev_out;
+ QPixmap m_pixIconTabPrev_over;
+ QPixmap m_pixIconTabPrev_clicked;
+
+ QPixmap m_pixIconTabNext;
+ QPixmap m_pixIconTabNext_out;
+ QPixmap m_pixIconTabNext_over;
+ QPixmap m_pixIconTabNext_clicked;
+
+ QPixmap m_pixIconCloseTab;
+ QPixmap m_pixIconCloseTab_off;
+ QPixmap m_pixIconCloseTab_on;
+ QPixmap m_pixIconCloseTab_clicked;
+
+ int m_closeTabIconState;
+ int m_iTabToStartFrom;
+
+ bool m_bIsOverLeftBound;
+ bool m_bIsOverRightBound;
+ bool m_bNeedToRedraw;
+
+public:
+
+protected:
+
+
+// ================================
+// Put methods declaration below...
+// ================================
+private:
+ void initConfig();
+ void loadImages();
+
+public:
+ void addMessage(KviWindow *, KviNotifierMessage *);
+ void closeCurrentTab();
+ void closeTab(KviWindow * pWnd); // referes to void closeTab(KviWindow * pWnd, KviNotifierWindowTab * pTab);
+ void closeTab(KviNotifierWindowTab * pTab); // referes to void closeTab(KviWindow * pWnd, KviNotifierWindowTab * pTab);
+ void closeTab(KviWindow * pWnd, KviNotifierWindowTab * pTab);
+ void draw(QPainter *);
+ void needToRedraw() { m_bNeedToRedraw = true; };
+ void markAllMessagesAsHistoric();
+ void mouseMoveEvent(QMouseEvent * e);
+ void mousePressEvent(QMouseEvent * e);
+ void mouseReleaseEvent(QMouseEvent * e);
+ void next();
+ void prev();
+ void recalculatePositions();
+ void resetIcons();
+ void resize(QRect);
+ void scrollTabsLeft();
+ void scrollTabsRight();
+ void setCloseTabIcon(int state);
+ void setCurrentMessage(KviNotifierMessage * m) { if(m_pTabFocused)m_pTabFocused->setCurrentMessage(m); };
+ void setFocusOn(KviNotifierWindowTab *);
+ void setPoint(int x, int y) { m_pnt.setX(x); m_pnt.setY(y); };
+ void setWidth(int w);
+ void touch() { m_bNeedToRedraw = true; };
+
+ int baseLine() { return (y()+height()); };
+ int closeTabIconState() { return m_closeTabIconState; };
+ int count() { return (int)m_tabMap.count(); };
+ int height() { return m_rct.height(); };
+ int width() { return m_rct.width(); };
+ int x() { return m_pnt.x(); };
+ int y() { return m_pnt.y(); };
+
+ QFont * fontFocused() { return m_pFocusedFont; };
+ QFont * fontUnfocused() { return m_pUnfocusedFont; };
+
+ QPixmap * tabFocusedPixSx() {return &m_pixSXFocused; };
+ QPixmap * tabFocusedPixDx() {return &m_pixDXFocused; };
+ QPixmap * tabUnfocusedPixSx() {return &m_pixSXUnfocused; };
+ QPixmap * tabUnfocusedPixDx() {return &m_pixDXUnfocused; };
+
+ QRect rect() {return m_rct;};
+ QRect rctCloseTabIconHotArea() {return m_rctCloseTabIconHotArea; };
+
+ KviNotifierWindowTab * currentTab() { return m_pTabFocused; };
+
+ KviNotifierMessage * currentMessage() { return m_pTabFocused ? m_pTabFocused->currentMessage() : 0; };
+
+ KviWindow * window() { return m_pTabFocused->wnd(); };
+
+
+
+protected:
+
+};
+
+#endif //!_KVINOTIFIERWINDOWTABS_H_
diff --git a/src/modules/notifier/pics/Makefile.am b/src/modules/notifier/pics/Makefile.am
new file mode 100755
index 00000000..26f8bf9b
--- /dev/null
+++ b/src/modules/notifier/pics/Makefile.am
@@ -0,0 +1,9 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+tmpdir = $(picsdir)
+
+tmp_DATA= *.png
+
+EXTRA_DIST = $(tmp_DATA)
diff --git a/src/modules/notifier/pics/notifier_background.png b/src/modules/notifier/pics/notifier_background.png
new file mode 100755
index 00000000..2787f64c
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_background.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_close.png b/src/modules/notifier/pics/notifier_close.png
new file mode 100644
index 00000000..95ce3d8b
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_close.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_down.png b/src/modules/notifier/pics/notifier_down.png
new file mode 100644
index 00000000..01e11383
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_down.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_icon_body_next_clicked.png b/src/modules/notifier/pics/notifier_icon_body_next_clicked.png
new file mode 100644
index 00000000..2cab5af8
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_icon_body_next_clicked.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_icon_body_next_off.png b/src/modules/notifier/pics/notifier_icon_body_next_off.png
new file mode 100644
index 00000000..6a93e780
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_icon_body_next_off.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_icon_body_next_on.png b/src/modules/notifier/pics/notifier_icon_body_next_on.png
new file mode 100644
index 00000000..86dfe01e
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_icon_body_next_on.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_icon_body_prev_clicked.png b/src/modules/notifier/pics/notifier_icon_body_prev_clicked.png
new file mode 100644
index 00000000..ab8a9af3
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_icon_body_prev_clicked.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_icon_body_prev_off.png b/src/modules/notifier/pics/notifier_icon_body_prev_off.png
new file mode 100644
index 00000000..af9e5307
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_icon_body_prev_off.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_icon_body_prev_on.png b/src/modules/notifier/pics/notifier_icon_body_prev_on.png
new file mode 100644
index 00000000..10cc8f18
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_icon_body_prev_on.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_icon_body_write_clicked.png b/src/modules/notifier/pics/notifier_icon_body_write_clicked.png
new file mode 100644
index 00000000..1dc06165
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_icon_body_write_clicked.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_icon_body_write_off.png b/src/modules/notifier/pics/notifier_icon_body_write_off.png
new file mode 100644
index 00000000..1096b7a8
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_icon_body_write_off.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_icon_body_write_on.png b/src/modules/notifier/pics/notifier_icon_body_write_on.png
new file mode 100644
index 00000000..55fe9d9e
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_icon_body_write_on.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_icon_close_clicked.png b/src/modules/notifier/pics/notifier_icon_close_clicked.png
new file mode 100644
index 00000000..f68f16f0
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_icon_close_clicked.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_icon_close_clicked_hl.png b/src/modules/notifier/pics/notifier_icon_close_clicked_hl.png
new file mode 100644
index 00000000..d7bcc291
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_icon_close_clicked_hl.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_icon_close_out.png b/src/modules/notifier/pics/notifier_icon_close_out.png
new file mode 100644
index 00000000..ccec0bdb
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_icon_close_out.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_icon_close_out_hl.png b/src/modules/notifier/pics/notifier_icon_close_out_hl.png
new file mode 100644
index 00000000..89917dae
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_icon_close_out_hl.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_icon_close_over.png b/src/modules/notifier/pics/notifier_icon_close_over.png
new file mode 100644
index 00000000..e3cffc0f
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_icon_close_over.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_icon_close_over_hl.png b/src/modules/notifier/pics/notifier_icon_close_over_hl.png
new file mode 100644
index 00000000..6a7f1bc0
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_icon_close_over_hl.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_icon_tab_close_clicked.png b/src/modules/notifier/pics/notifier_icon_tab_close_clicked.png
new file mode 100644
index 00000000..ac647250
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_icon_tab_close_clicked.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_icon_tab_close_off.png b/src/modules/notifier/pics/notifier_icon_tab_close_off.png
new file mode 100644
index 00000000..105c728b
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_icon_tab_close_off.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_icon_tab_close_on.png b/src/modules/notifier/pics/notifier_icon_tab_close_on.png
new file mode 100644
index 00000000..dfd87ffe
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_icon_tab_close_on.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_icon_tab_next_clicked.png b/src/modules/notifier/pics/notifier_icon_tab_next_clicked.png
new file mode 100644
index 00000000..b6d98d3e
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_icon_tab_next_clicked.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_icon_tab_next_out.png b/src/modules/notifier/pics/notifier_icon_tab_next_out.png
new file mode 100644
index 00000000..4e4cf075
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_icon_tab_next_out.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_icon_tab_next_over.png b/src/modules/notifier/pics/notifier_icon_tab_next_over.png
new file mode 100644
index 00000000..9f1f8f90
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_icon_tab_next_over.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_icon_tab_prev_clicked.png b/src/modules/notifier/pics/notifier_icon_tab_prev_clicked.png
new file mode 100644
index 00000000..a24139b5
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_icon_tab_prev_clicked.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_icon_tab_prev_out.png b/src/modules/notifier/pics/notifier_icon_tab_prev_out.png
new file mode 100644
index 00000000..20e4a06f
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_icon_tab_prev_out.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_icon_tab_prev_over.png b/src/modules/notifier/pics/notifier_icon_tab_prev_over.png
new file mode 100644
index 00000000..68b390f7
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_icon_tab_prev_over.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_left.png b/src/modules/notifier/pics/notifier_left.png
new file mode 100644
index 00000000..b0887a7f
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_left.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pen.png b/src/modules/notifier/pics/notifier_pen.png
new file mode 100644
index 00000000..31978d1b
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pen.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_body_dwn.png b/src/modules/notifier/pics/notifier_pix_body_dwn.png
new file mode 100644
index 00000000..4a96de08
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_body_dwn.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_body_dwndx.png b/src/modules/notifier/pics/notifier_pix_body_dwndx.png
new file mode 100644
index 00000000..5b8ca523
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_body_dwndx.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_body_dwnsx.png b/src/modules/notifier/pics/notifier_pix_body_dwnsx.png
new file mode 100644
index 00000000..ffa3c980
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_body_dwnsx.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_body_dx.png b/src/modules/notifier/pics/notifier_pix_body_dx.png
new file mode 100644
index 00000000..c2ca5ce0
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_body_dx.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_body_kvirc.png b/src/modules/notifier/pics/notifier_pix_body_kvirc.png
new file mode 100644
index 00000000..1a304b0a
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_body_kvirc.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_body_kvirc_dwn.png b/src/modules/notifier/pics/notifier_pix_body_kvirc_dwn.png
new file mode 100644
index 00000000..37168c57
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_body_kvirc_dwn.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_body_kvirc_sx.png b/src/modules/notifier/pics/notifier_pix_body_kvirc_sx.png
new file mode 100644
index 00000000..acd39ab5
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_body_kvirc_sx.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_body_sx.png b/src/modules/notifier/pics/notifier_pix_body_sx.png
new file mode 100644
index 00000000..c1a5315a
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_body_sx.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_caption_bkg.png b/src/modules/notifier/pics/notifier_pix_caption_bkg.png
new file mode 100644
index 00000000..96b691df
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_caption_bkg.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_caption_bkg_hl.png b/src/modules/notifier/pics/notifier_pix_caption_bkg_hl.png
new file mode 100644
index 00000000..0c5f155c
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_caption_bkg_hl.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_caption_dx.png b/src/modules/notifier/pics/notifier_pix_caption_dx.png
new file mode 100644
index 00000000..76a37a61
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_caption_dx.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_caption_dx_hl.png b/src/modules/notifier/pics/notifier_pix_caption_dx_hl.png
new file mode 100644
index 00000000..ceca1a1d
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_caption_dx_hl.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_caption_sx.png b/src/modules/notifier/pics/notifier_pix_caption_sx.png
new file mode 100644
index 00000000..2939f96b
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_caption_sx.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_caption_sx_hl.png b/src/modules/notifier/pics/notifier_pix_caption_sx_hl.png
new file mode 100644
index 00000000..78be4e71
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_caption_sx_hl.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_tab_bkg.png b/src/modules/notifier/pics/notifier_pix_tab_bkg.png
new file mode 100644
index 00000000..3918b044
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_tab_bkg.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_tab_dx.png b/src/modules/notifier/pics/notifier_pix_tab_dx.png
new file mode 100644
index 00000000..112d9604
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_tab_dx.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_tab_focused_bkg.png b/src/modules/notifier/pics/notifier_pix_tab_focused_bkg.png
new file mode 100644
index 00000000..ef42ef68
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_tab_focused_bkg.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_tab_focused_dx.png b/src/modules/notifier/pics/notifier_pix_tab_focused_dx.png
new file mode 100644
index 00000000..e8dee6b9
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_tab_focused_dx.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_tab_focused_sx.png b/src/modules/notifier/pics/notifier_pix_tab_focused_sx.png
new file mode 100644
index 00000000..f94cbb55
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_tab_focused_sx.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_tab_sx.png b/src/modules/notifier/pics/notifier_pix_tab_sx.png
new file mode 100644
index 00000000..0f693bdd
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_tab_sx.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_tab_unfocused_bkg.png b/src/modules/notifier/pics/notifier_pix_tab_unfocused_bkg.png
new file mode 100644
index 00000000..36a5f22e
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_tab_unfocused_bkg.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_tab_unfocused_dx.png b/src/modules/notifier/pics/notifier_pix_tab_unfocused_dx.png
new file mode 100644
index 00000000..f7ba1ee1
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_tab_unfocused_dx.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_tab_unfocused_sx.png b/src/modules/notifier/pics/notifier_pix_tab_unfocused_sx.png
new file mode 100644
index 00000000..aa01c4c6
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_tab_unfocused_sx.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_wnd_dwn.png b/src/modules/notifier/pics/notifier_pix_wnd_dwn.png
new file mode 100644
index 00000000..7f94fef4
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_wnd_dwn.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_wnd_dwn_hl.png b/src/modules/notifier/pics/notifier_pix_wnd_dwn_hl.png
new file mode 100644
index 00000000..6090316b
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_wnd_dwn_hl.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_wnd_dwndx.png b/src/modules/notifier/pics/notifier_pix_wnd_dwndx.png
new file mode 100644
index 00000000..429fa4a0
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_wnd_dwndx.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_wnd_dwndx_hl.png b/src/modules/notifier/pics/notifier_pix_wnd_dwndx_hl.png
new file mode 100644
index 00000000..2c392742
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_wnd_dwndx_hl.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_wnd_dwnsx.png b/src/modules/notifier/pics/notifier_pix_wnd_dwnsx.png
new file mode 100644
index 00000000..3fb987ef
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_wnd_dwnsx.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_wnd_dwnsx_hl.png b/src/modules/notifier/pics/notifier_pix_wnd_dwnsx_hl.png
new file mode 100644
index 00000000..eb51c09a
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_wnd_dwnsx_hl.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_wnd_dx.png b/src/modules/notifier/pics/notifier_pix_wnd_dx.png
new file mode 100644
index 00000000..0a1c4f4b
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_wnd_dx.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_wnd_dx_hl.png b/src/modules/notifier/pics/notifier_pix_wnd_dx_hl.png
new file mode 100644
index 00000000..24d1cde6
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_wnd_dx_hl.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_wnd_sx.png b/src/modules/notifier/pics/notifier_pix_wnd_sx.png
new file mode 100644
index 00000000..01fb63fd
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_wnd_sx.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_pix_wnd_sx_hl.png b/src/modules/notifier/pics/notifier_pix_wnd_sx_hl.png
new file mode 100644
index 00000000..9a18f058
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_pix_wnd_sx_hl.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_right.png b/src/modules/notifier/pics/notifier_right.png
new file mode 100644
index 00000000..85819102
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_right.png
Binary files differ
diff --git a/src/modules/notifier/pics/notifier_up.png b/src/modules/notifier/pics/notifier_up.png
new file mode 100644
index 00000000..f846b624
--- /dev/null
+++ b/src/modules/notifier/pics/notifier_up.png
Binary files differ
diff --git a/src/modules/objects/Makefile.am b/src/modules/objects/Makefile.am
new file mode 100644
index 00000000..c4574582
--- /dev/null
+++ b/src/modules/objects/Makefile.am
@@ -0,0 +1,143 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkviobjects.la
+
+libkviobjects_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkviobjects_la_SOURCES = libkviobjects.cpp \
+ class_button.cpp \
+ class_buttongroup.cpp \
+ class_checkbox.cpp \
+ class_combobox.cpp \
+ class_dialog.cpp \
+ class_dockwindow.cpp \
+ class_file.cpp \
+ class_groupbox.cpp \
+ class_label.cpp \
+ class_layout.cpp \
+ class_lcd.cpp \
+ class_lineedit.cpp \
+ class_list.cpp \
+ class_listbox.cpp \
+ class_listview.cpp \
+ class_listviewitem.cpp \
+ class_mainwindow.cpp \
+ class_menubar.cpp \
+ class_multilineedit.cpp \
+ class_popupmenu.cpp \
+ class_process.cpp \
+ class_progressbar.cpp \
+ class_radiobutton.cpp \
+ class_slider.cpp \
+ class_socket.cpp \
+ class_spinbox.cpp \
+ class_tabwidget.cpp \
+ class_toolbar.cpp \
+ class_toolbutton.cpp \
+ class_painter.cpp \
+ class_pixmap.cpp \
+ class_tbrowser.cpp \
+ class_widget.cpp \
+ class_window.cpp \
+ class_wizard.cpp \
+ class_workspace.cpp \
+ class_wrapper.cpp \
+ class_urllabel.cpp \
+ class_xmlreader.cpp \
+ class_vbox.cpp \
+ class_hbox.cpp
+
+
+libkviobjects_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= class_button.h \
+ class_buttongroup.h \
+ class_checkbox.h \
+ class_combobox.h \
+ class_dialog.h \
+ class_dockwindow.h \
+ class_file.h \
+ class_groupbox.h \
+ class_label.h \
+ class_layout.h \
+ class_lcd.h \
+ class_lineedit.h \
+ class_list.h \
+ class_listbox.h \
+ class_listview.h \
+ class_listviewitem.h \
+ class_mainwindow.h \
+ class_menubar.h \
+ class_multilineedit.h \
+ class_painter.h \
+ class_pixmap.h \
+ class_popupmenu.h \
+ class_process.h \
+ class_progressbar.h \
+ class_radiobutton.h \
+ class_slider.h \
+ class_socket.h \
+ class_spinbox.h \
+ class_tabwidget.h \
+ class_tbrowser.h \
+ class_toolbar.h \
+ class_toolbutton.h \
+ class_urllabel.h \
+ class_widget.h \
+ class_window.h \
+ class_wizard.h \
+ class_workspace.h \
+ class_wrapper.h \
+ class_xmlreader.h \
+ class_vbox.h \
+ class_hbox.h \
+ object_macros.h
+
+m_%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+class_checkbox.cpp: m_class_checkbox.moc
+class_combobox.cpp: m_class_combobox.moc
+class_button.cpp: m_class_button.moc
+class_dialog.cpp: m_class_dialog.moc
+class_dockwindow.cpp: m_class_dockwindow.moc
+class_file.cpp: m_class_file.moc
+class_groupbox.cpp: m_class_groupbox.moc
+class_label.cpp: m_class_label.moc
+class_layout.cpp: m_class_layout.moc
+class_lcd.cpp: m_class_lcd.moc
+class_lineedit.cpp: m_class_lineedit.moc
+class_list.cpp: m_class_list.moc
+class_listbox.cpp: m_class_listbox.moc
+class_listview.cpp: m_class_listview.moc
+class_listviewitem.cpp: m_class_listviewitem.moc
+class_listbox.cpp: m_class_listbox.moc
+class_mainwindow.cpp: m_class_mainwindow.moc
+class_menubar.cpp: m_class_menubar.moc
+class_multilineedit.cpp: m_class_multilineedit.moc
+class_painter.cpp: m_class_painter.moc
+class_pixmap.cpp: m_class_pixmap.moc
+class_popupmenu.cpp: m_class_popupmenu.moc
+class_process.cpp: m_class_process.moc
+class_progressbar.cpp: m_class_progressbar.moc
+class_radiobutton.cpp: m_class_radiobutton.moc
+class_slider.cpp: m_class_slider.moc
+class_socket.cpp: m_class_socket.moc
+class_spinbox.cpp: m_class_spinbox.moc
+class_tabwidget.cpp: m_class_tabwidget.moc
+class_tbrowser.cpp: m_class_tbrowser.moc
+class_toolbar.cpp: m_class_toolbar.moc
+class_toolbutton.cpp: m_class_toolbutton.moc
+class_urllabel.cpp: m_class_urllabel.moc
+class_widget.cpp: m_class_widget.moc
+class_window.cpp: m_class_window.moc
+class_wizard.cpp: m_class_wizard.moc
+class_workspace.cpp: m_class_workspace.moc
+class_wrapper.cpp: m_class_wrapper.moc
+class_xmlreader.cpp: m_class_xmlreader.moc
+
diff --git a/src/modules/objects/class_button.cpp b/src/modules/objects/class_button.cpp
new file mode 100644
index 00000000..54d1525a
--- /dev/null
+++ b/src/modules/objects/class_button.cpp
@@ -0,0 +1,178 @@
+//
+// File : class_button.cpp
+// Creation date : Wed 13 Sep 2000 02:42:05 CEST by Krzysztof Godlewski
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_debug.h"
+
+
+#include "kvi_error.h"
+#include <qiconset.h>
+#include "kvi_iconmanager.h"
+
+#include "class_button.h"
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_button,"button","widget")
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_button,"setText", functionSetText)
+ KVSO_REGISTER_HANDLER(KviKvsObject_button,"text", functionText)
+ KVSO_REGISTER_HANDLER(KviKvsObject_button,"setAutoDefault", functionSetAutoDefault)
+ KVSO_REGISTER_HANDLER(KviKvsObject_button,"setToggleButton", functionSetToggleButton)
+ KVSO_REGISTER_HANDLER(KviKvsObject_button,"setOn", functionSetOn)
+ KVSO_REGISTER_HANDLER(KviKvsObject_button,"isOn", functionIsOn)
+ KVSO_REGISTER_HANDLER(KviKvsObject_button,"toggle", functionToggle)
+ KVSO_REGISTER_HANDLER(KviKvsObject_button,"setIsMenuButton", functionSetIsMenuButton)
+ KVSO_REGISTER_HANDLER(KviKvsObject_button,"isMenuButton", functionIsMenuButton)
+ KVSO_REGISTER_HANDLER(KviKvsObject_button,"clickEvent", functionclickEvent)
+ KVSO_REGISTER_HANDLER(KviKvsObject_button,"setImage", functionSetImage)
+
+
+KVSO_END_REGISTERCLASS(KviKvsObject_button)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_button,KviKvsObject_widget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_button)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_button)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_button)
+
+bool KviKvsObject_button::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ setObject(new QPushButton(parentScriptWidget(),name()),true);
+ connect(widget(),SIGNAL(clicked()),this,SLOT(slotClicked()));
+ return true;
+}
+
+bool KviKvsObject_button::functionText(KviKvsObjectFunctionCall *c)
+{
+ if(widget()) c->returnValue()->setString(((QPushButton *)widget())->text());
+ return true;
+}
+
+bool KviKvsObject_button::functionSetText(KviKvsObjectFunctionCall *c)
+{
+ QString szText;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szText)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((QPushButton *)widget())->setText(szText);
+ return true;
+}
+bool KviKvsObject_button::functionSetAutoDefault(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((QPushButton *)widget())->setAutoDefault(bEnabled);
+ return true;
+}
+bool KviKvsObject_button::functionSetToggleButton(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((QPushButton *)widget())->setToggleButton(bEnabled);
+ return true;
+}
+bool KviKvsObject_button::functionSetOn(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((QPushButton *)widget())->setOn(bEnabled);
+ return true;
+}
+// FIX ME
+bool KviKvsObject_button::functionSetIsMenuButton(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ /*if(widget())
+ ((QPushButton *)widget())->setIsMenuButton(bEnabled);
+ */
+
+ return true;
+}
+bool KviKvsObject_button::functionIsMenuButton(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setBoolean(((QPushButton *)widget())->isMenuButton());
+ return true;
+}
+//
+bool KviKvsObject_button::functionIsOn(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setBoolean(((QPushButton *)widget())->isOn());
+ return true;
+}
+bool KviKvsObject_button::functionToggle(KviKvsObjectFunctionCall *c)
+{
+ if(widget()) ((QPushButton *)widget())->toggle();
+ return true;
+}
+// FIX ME
+bool KviKvsObject_button::functionSetImage(KviKvsObjectFunctionCall *c)
+{
+ QString icon;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("icon",KVS_PT_STRING,0,icon)
+ KVSO_PARAMETERS_END(c)
+ if (!widget()) return true;
+ QPixmap * pix = g_pIconManager->getImage(icon);
+ if(pix){
+ #ifdef COMPILE_USE_QT4
+ ((QPushButton *)widget())->setIconSet(*pix);
+ #else
+ ((QPushButton *)widget())->setIconSet(QIconSet(*pix,QIconSet::Small));
+ #endif
+ }
+ else{
+ #ifdef COMPILE_USE_QT4
+ ((QPushButton *)widget())->setIcon(QIconSet());
+ #else
+ ((QPushButton *)widget())->setIconSet(QIconSet());
+ #endif
+ }
+ return true;
+}
+bool KviKvsObject_button::functionclickEvent(KviKvsObjectFunctionCall *c)
+{
+ emitSignal("clicked",c);
+ return true;
+}
+
+void KviKvsObject_button::slotClicked()
+{
+ KviKvsVariantList *params=0;
+ callFunction(this,"clickEvent",params);
+}
+
+
+#include "m_class_button.moc"
diff --git a/src/modules/objects/class_button.h b/src/modules/objects/class_button.h
new file mode 100644
index 00000000..5c752e48
--- /dev/null
+++ b/src/modules/objects/class_button.h
@@ -0,0 +1,58 @@
+#ifndef _CLASS_BUTTON_H_
+#define _CLASS_BUTTON_H_
+//
+// File : class_button.h
+// Creation date : Wed 13 Sep 2000 02:42:05 CEST by Krzysztof Godlewski
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+
+#include <qpushbutton.h>
+#include "class_widget.h"
+#include "object_macros.h"
+
+class KviKvsObject_button : public KviKvsObject_widget
+{
+ Q_OBJECT
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_button)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+ bool functionSetText(KviKvsObjectFunctionCall *c);
+ bool functionIsChecked(KviKvsObjectFunctionCall *c);
+ bool functionText(KviKvsObjectFunctionCall *c);
+ bool functionSetAutoDefault(KviKvsObjectFunctionCall *c);
+ bool functionSetToggleButton(KviKvsObjectFunctionCall *c);
+ bool functionSetOn(KviKvsObjectFunctionCall *c);
+ bool functionIsOn(KviKvsObjectFunctionCall *c);
+ bool functionToggle(KviKvsObjectFunctionCall *c);
+ bool functionSetIsMenuButton(KviKvsObjectFunctionCall *c);
+ bool functionIsMenuButton(KviKvsObjectFunctionCall *c);
+ bool functionSetImage(KviKvsObjectFunctionCall *c);
+ bool functionclickEvent(KviKvsObjectFunctionCall *c);
+
+protected slots:
+ void slotClicked();
+};
+
+#endif // !_CLASS_BUTTON_H_
diff --git a/src/modules/objects/class_buttongroup.cpp b/src/modules/objects/class_buttongroup.cpp
new file mode 100644
index 00000000..5f9f1756
--- /dev/null
+++ b/src/modules/objects/class_buttongroup.cpp
@@ -0,0 +1,87 @@
+//
+// File : class_buttongroup.cpp
+// Creation date : Fri Jan 28 14:21:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include <qbuttongroup.h>
+#include "class_buttongroup.h"
+#include <qradiobutton.h>
+#include "kvi_error.h"
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+
+
+/*
+ @doc: buttongroup
+ @keyterms:
+ buttongroup object class,
+ @title:
+ buttongroup class
+ @type:
+ class
+ @short:
+ Provides a buttongroup bar.
+ @inherits:
+ [class]groupbox[/class]
+ [class]object[/class]
+ [class]widget[/class]
+ @description:
+ This widget organizes buttons in a group.
+ It will be usually a parent for other child controls.
+ You can either use a child layout to manage the children geometries
+ or use $setColumnLayout function to manage the layout automatically.
+ The class ineriths groupbox.
+
+ @functions:
+
+*/
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_buttongroup,"buttongroup","groupbox")
+
+KVSO_END_REGISTERCLASS(KviKvsObject_buttongroup)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_buttongroup,KviKvsObject_groupbox)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_buttongroup)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_buttongroup)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_buttongroup)
+
+// CHECK ME
+bool KviKvsObject_buttongroup::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ #ifdef COMPILE_USE_QT4
+ QButtonGroup *group=new QButtonGroup(parentScriptWidget());
+ group->setObjectName(name());
+ setObject(group,true);
+ #else
+ setObject(new QButtonGroup(name(),parentScriptWidget()), true);
+ #endif
+
+
+ return true;
+}
+
+
diff --git a/src/modules/objects/class_buttongroup.h b/src/modules/objects/class_buttongroup.h
new file mode 100644
index 00000000..472051ec
--- /dev/null
+++ b/src/modules/objects/class_buttongroup.h
@@ -0,0 +1,44 @@
+#ifndef _CLASS_BUTTONGROUP_H_
+#define _CLASS_BUTTONGROUP_H_
+//
+// File : class_buttongroup.h
+// Creation date : Jan 23 CEST 2007
+// by Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+
+#include <qbuttongroup.h>
+#include "class_groupbox.h"
+#include "object_macros.h"
+
+class KviKvsObject_buttongroup : public KviKvsObject_groupbox
+{
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_buttongroup)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+
+};
+#endif //!_CLASS_GROUPBOX_H_
+
diff --git a/src/modules/objects/class_checkbox.cpp b/src/modules/objects/class_checkbox.cpp
new file mode 100644
index 00000000..a651adb8
--- /dev/null
+++ b/src/modules/objects/class_checkbox.cpp
@@ -0,0 +1,128 @@
+//vim: ts=8
+// File : class_checkbox.cpp
+// Creation date : Wed Sep 20 23:01:47 CEST 2000 by Krzysztof Godlewski
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "kvi_error.h"
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+#include "kvi_styled_controls.h"
+
+#include "class_checkbox.h"
+
+/*
+ @doc: checkbox
+ @title:
+ checkbox class
+ @type:
+ class
+ @short:
+ Check box with a text description
+ @inherits:
+ [class]object[/class]
+ [class]button[/class]
+ @description:
+ This widget provides a check box - it is a kind of a toggle
+ button. It can have two states: on (checked) and off
+ (unchecked).
+ @functions:
+ !fn: <bool> $isChecked()
+ Returns '1' if the check box is checked, '0' otherwise.[br]
+ See also [classfnc]$setChecked[/classfnc]().
+ !fn: $setChecked([<bChecked:bool>])
+ Sets the check box 'checked state' to <bool>.
+ !fn: $setText([<text:string>])
+ Sets the check box 'checked state' to <bool>.[br]
+ See also [classfnc]$isChecked[/classfnc]().
+ !fn: $toggleEvent(<bToggled:bool>)
+ Called by KVIrc when the checkbox state is toggled.
+ The default implementation emits the toggled(<bool>) signal.
+*/
+
+//---------------------------------------------------------------------------------
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_checkbox,"checkbox","button")
+ // appearance
+ KVSO_REGISTER_HANDLER(KviKvsObject_checkbox,"setChecked",function_setChecked)
+ KVSO_REGISTER_HANDLER(KviKvsObject_checkbox,"isChecked",function_isChecked)
+ KVSO_REGISTER_HANDLER(KviKvsObject_checkbox,"toggleEvent",function_toggleEvent)
+ KVSO_REGISTER_HANDLER(KviKvsObject_checkbox,"setText",function_setText)
+KVSO_END_REGISTERCLASS(KviKvsObject_checkbox)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_checkbox,KviKvsObject_button)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_checkbox)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_checkbox)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_checkbox)
+
+bool KviKvsObject_checkbox::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ KviStyledCheckBox * cb = new KviStyledCheckBox(parentScriptWidget(), name());
+ setObject(cb, true);
+ connect(cb,SIGNAL(toggled(bool)),this,SLOT(toggled(bool)));
+ connect(widget(),SIGNAL(clicked()),this,SLOT(slotClicked()));
+ return true;
+}
+
+bool KviKvsObject_checkbox::function_isChecked(KviKvsObjectFunctionCall *c)
+{
+ if(widget()) c->returnValue()->setBoolean(((KviStyledCheckBox *)widget())->isChecked());
+ return true;
+}
+
+bool KviKvsObject_checkbox::function_setChecked(KviKvsObjectFunctionCall *c)
+{
+ bool bChecked;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bChecked",KVS_PT_BOOL,KVS_PF_OPTIONAL,bChecked)
+ KVSO_PARAMETERS_END(c)
+ if(widget()) ((KviStyledCheckBox *)widget())->setChecked(bChecked);
+ return true;
+}
+
+bool KviKvsObject_checkbox::function_setText(KviKvsObjectFunctionCall *c)
+{
+ QString szText;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szText)
+ KVSO_PARAMETERS_END(c)
+ if(widget()) ((KviStyledCheckBox *)widget())->setText(szText);
+ return true;
+}
+
+bool KviKvsObject_checkbox::function_toggleEvent(KviKvsObjectFunctionCall *c)
+{
+ emitSignal("toggled",c,c->params());
+ return true;
+}
+
+void KviKvsObject_checkbox::toggled(bool b)
+{
+ KviKvsVariantList params(new KviKvsVariant(b));
+ callFunction(this,"toggleEvent",&params);
+}
+
+
+#include "m_class_checkbox.moc"
diff --git a/src/modules/objects/class_checkbox.h b/src/modules/objects/class_checkbox.h
new file mode 100644
index 00000000..1d19a432
--- /dev/null
+++ b/src/modules/objects/class_checkbox.h
@@ -0,0 +1,48 @@
+#ifndef _CLASS_CHECKBOX_H_
+#define _CLASS_CHECKBOX_H_
+
+//vim: ts=8
+// File : class_checkbox.h
+// Creation date : Wed Sep 20 23:02:11 CEST 2000 by Krzysztof Godlewski
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+
+#include <qcheckbox.h>
+#include "class_button.h"
+#include "object_macros.h"
+
+class KviKvsObject_checkbox : public KviKvsObject_button
+{
+ Q_OBJECT
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_checkbox)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+ bool function_setChecked(KviKvsObjectFunctionCall *c);
+ bool function_isChecked(KviKvsObjectFunctionCall *c);
+ bool function_toggleEvent(KviKvsObjectFunctionCall *c);
+ bool function_setText(KviKvsObjectFunctionCall *c);
+protected slots:
+ void toggled(bool b);
+};
+#endif // !_CLASS_CHECKBOX_H_
diff --git a/src/modules/objects/class_combobox.cpp b/src/modules/objects/class_combobox.cpp
new file mode 100644
index 00000000..9c8ffadf
--- /dev/null
+++ b/src/modules/objects/class_combobox.cpp
@@ -0,0 +1,368 @@
+//vim: ts=8
+// File : class_combobox.cpp
+// Creation date : Thu Mar 22 20:57:45 CET 2001 by Krzysztof Godlewski
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "kvi_error.h"
+#include "kvi_locale.h"
+#include "kvi_debug.h"
+
+
+#include "class_list.h"
+#include "class_combobox.h"
+#include <qlineedit.h>
+#include <qstring.h>
+
+/*
+ @doc: combobox
+ @keyterms:
+ combobox object class, selection
+ @title:
+ combobox class
+ @type:
+ class
+ @short:
+ Combined button and popup list
+ @inherits:
+ [class]object[/class]
+ [class]widget[/class]
+ @description:
+ @functions:
+ !fn: $insertItem(<text:string>, <index:int>)
+ Inserts a text item at position <index>. If index is negative or
+ not specified the item is appended.
+ !fn: $changeItem(<text:string>, <index:uint>)
+ Changes text of item at <index> to <text>.
+ !fn: $removeItem(<index:uint>)
+ Removes item at given index.
+ !fn: $setMaxCount(<num:uint>)
+ Sets the maximum number of items the combo box can hold to
+ <num>. If <num> is smaller than the current number of items,
+ the list is truncated at the end. There is no limit by default.
+ !fn: <integer> $maxCount()
+ Returns the current maximum number of items in the combo box.
+ !fn: <integer> $count()
+ Returns number of items in the widget.
+ !fn: <string> $current()
+ Returns currently selected item.
+ !fn: <integer> $currentItem()
+ Returns index of currently selected item.
+ !fn: $setEditable(<bflag:boolean>)
+ Make the input field editable, if <bflag>. Otherwise the
+ user may only choose one of the items in the combo box.[br]
+ If the parameter is ommited, it is assumed to be false.
+ !fn: <boolean> $editable()
+ Returns whether the combobox is editable or not.
+ !fn: $setEditText(<text:string>,[<quiet:bool>])
+ Sets the text in the embedded line edit to newText without
+ changing the combo's contents. Does nothing if the combo
+ isn't editable. If the optional quiet parameter is true no warning will be print if text will be empty.
+ !fn: $clear()
+ Removes all the items from the combo box
+ !fn: $textAt(<index:uint>)
+ Returns item at given index.
+ !fn: $setCurrentItem(<index:uint>)
+ Sets the current combobox item. This is the item to be
+ displayed on the combobox button.
+ !fn: $activatedEvent(<index:integer>)
+ This function is called by the framework when a new item has activated. The index value is the position of the new item.[br]
+ The default implementation emits the [classfnc]$activated[/classfnc]() signal,
+ !fn: $textChangedEvent(<text:string>)
+ This function is called when the text in an editable combobox has changed.[br]
+ The function return the new text in its argument.[br]
+ The default implementation emits the [classfnc]$textChanged[/classfnc]() signal.
+ @signals:
+ !sg: $textChanged()
+ This signal is emitted by the default implementation of [classfnc]$textChangedEvent[/classfnc]().
+ !sg: $activated()
+ This signal is emitted by the default implementation of [classfnc]$activatedEvent[/classfnc]().
+
+*/
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_combobox,"combobox","widget")
+ KVSO_REGISTER_HANDLER(KviKvsObject_combobox,"insertItem", functioninsertItem)
+ KVSO_REGISTER_HANDLER(KviKvsObject_combobox,"changeItem", functionchangeItem)
+ KVSO_REGISTER_HANDLER(KviKvsObject_combobox,"removeItem", functionremoveItem)
+ KVSO_REGISTER_HANDLER(KviKvsObject_combobox,"clear", functionclear)
+ KVSO_REGISTER_HANDLER(KviKvsObject_combobox,"setMaxCount", functionsetMaxCount)
+ KVSO_REGISTER_HANDLER(KviKvsObject_combobox,"maxCount", functionmaxCount)
+ KVSO_REGISTER_HANDLER(KviKvsObject_combobox,"count", functioncount)
+ KVSO_REGISTER_HANDLER(KviKvsObject_combobox,"current", functioncurrent)
+ KVSO_REGISTER_HANDLER(KviKvsObject_combobox,"currentItem", functioncurrentItem)
+ KVSO_REGISTER_HANDLER(KviKvsObject_combobox,"setEditable", functionsetEditable);
+ KVSO_REGISTER_HANDLER(KviKvsObject_combobox,"editable", functioneditable)
+ KVSO_REGISTER_HANDLER(KviKvsObject_combobox,"setEditText", functionsetEditText)
+ KVSO_REGISTER_HANDLER(KviKvsObject_combobox,"textAt", functiontextAt)
+ KVSO_REGISTER_HANDLER(KviKvsObject_combobox,"textLineEdit", functiontextLineEdit)
+ KVSO_REGISTER_HANDLER(KviKvsObject_combobox,"setTextLineEdit", functionsetTextLineEdit)
+ KVSO_REGISTER_HANDLER(KviKvsObject_combobox,"setCurrentItem", functionsetCurrentItem)
+ KVSO_REGISTER_HANDLER(KviKvsObject_combobox,"popup", functionpopup)
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_combobox,"setInsertionPolicy", functionsetInsertionPolicy)
+ KVSO_REGISTER_HANDLER(KviKvsObject_combobox,"textChangedEvent", functiontextChangedEvent)
+ KVSO_REGISTER_HANDLER(KviKvsObject_combobox,"activatedEvent", functionactivatedEvent)
+
+KVSO_END_REGISTERCLASS(KviKvsObject_combobox)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_combobox,KviKvsObject_widget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_combobox)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_combobox)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_combobox)
+
+bool KviKvsObject_combobox::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ setObject(new QComboBox(parentScriptWidget(), name()), true);
+ connect (((QComboBox *)widget()),SIGNAL(activated( int )),this,SLOT(slotActivated( int )));
+ return true;
+}
+
+bool KviKvsObject_combobox::functioninsertItem(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iIndex;
+ QString szItem;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("item",KVS_PT_STRING,0,szItem)
+ KVSO_PARAMETER("index",KVS_PT_INT,KVS_PF_OPTIONAL,iIndex)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ if(c->paramCount()==1)
+ ((QComboBox *)widget())->insertItem(szItem);
+ else
+ ((QComboBox *)widget())->insertItem(szItem, iIndex);
+ return true;
+}
+bool KviKvsObject_combobox::functionclear(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) ((QComboBox *)widget())->clear();
+ return true;
+}
+bool KviKvsObject_combobox::functionchangeItem(KviKvsObjectFunctionCall *c)
+{
+
+ kvs_uint_t uIndex,cnt;
+ QString szText;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szText)
+ KVSO_PARAMETER("index",KVS_PT_UNSIGNEDINTEGER,0,uIndex)
+ KVSO_PARAMETERS_END(c)
+ if(!widget()) return true;
+ if (szText.isEmpty()) c->warning(__tr2qs("No string parameter given - using empty string"));
+ if(uIndex >= (cnt = ((QComboBox *)widget())->count()))
+ {
+ c->warning(__tr2qs("Item index [%d] is too big - defaulting to " \
+ "$count() - 1 [%d]"), uIndex, cnt);
+ uIndex = cnt - 1;
+ }
+
+ ((QComboBox *)widget())->changeItem(szText, uIndex);
+
+ return true;
+
+}
+bool KviKvsObject_combobox::functionremoveItem(KviKvsObjectFunctionCall *c)
+{
+
+ kvs_uint_t uIndex,cnt;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("index",KVS_PT_UNSIGNEDINTEGER,0,uIndex)
+ KVSO_PARAMETERS_END(c)
+ if(!widget()) return true;
+ if(uIndex >= (cnt = ((QComboBox *)widget())->count()))
+ {
+ c->warning(__tr2qs("Item index [%d] is too big - defaulting to " \
+ "$count() - 1 [%d]"), uIndex, cnt);
+ uIndex = cnt - 1;
+ }
+
+ ((QComboBox *)widget())->removeItem(uIndex);
+
+ return true;
+
+}
+bool KviKvsObject_combobox::functionsetMaxCount(KviKvsObjectFunctionCall *c)
+{
+
+ kvs_uint_t iMax;
+ QString szText;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("count",KVS_PT_UNSIGNEDINTEGER,0,iMax)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((QComboBox *)widget())->setMaxCount(iMax);
+ return true;
+}
+bool KviKvsObject_combobox::functionmaxCount(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setInteger(((QComboBox *)widget())->maxCount());
+ return true;
+}
+bool KviKvsObject_combobox::functioncount(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setInteger(((QComboBox *)widget())->count());
+ return true;
+}
+bool KviKvsObject_combobox::functioncurrent(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setString(((QComboBox *)widget())->currentText().local8Bit().data());
+ return true;
+}
+bool KviKvsObject_combobox::functioncurrentItem(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setInteger(((QComboBox *)widget())->currentItem());
+ return true;
+}
+bool KviKvsObject_combobox::functiontextLineEdit(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setString(((QComboBox *)widget())->lineEdit()->text());
+ return true;
+}
+
+bool KviKvsObject_combobox::functionsetEditable(KviKvsObjectFunctionCall *c)
+{
+ bool bFlag;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bflag",KVS_PT_BOOLEAN,0,bFlag)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ {
+ ((QComboBox *)widget())->setEditable(bFlag);
+ if (bFlag) connect (((QComboBox *)widget())->lineEdit(),SIGNAL(textChanged(const QString & )),this,SLOT(slottextChanged(const QString & )));
+ else
+ disconnect (((QComboBox *)widget())->lineEdit(),SIGNAL(textChanged(const QString & )),this,SLOT(slottextChanged(const QString & )));
+ }
+
+ return true;
+}
+bool KviKvsObject_combobox::functionsetTextLineEdit(KviKvsObjectFunctionCall *c)
+{
+ QString szText;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szText)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((QComboBox *)widget())->lineEdit()->setText(szText);
+ return true;
+}
+
+bool KviKvsObject_combobox::functioneditable(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ c->returnValue()->setBoolean(((QComboBox *)widget())->editable());
+ return true;
+}
+bool KviKvsObject_combobox::functionsetEditText(KviKvsObjectFunctionCall *c)
+{
+ QString szText;
+ bool bQuiet=false;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szText)
+ KVSO_PARAMETER("quiet",KVS_PT_BOOLEAN,KVS_PF_OPTIONAL,bQuiet)
+ KVSO_PARAMETERS_END(c)
+ if(!widget()) return true;
+ if (szText.isEmpty() && !bQuiet) c->warning("No string parameter given - using empty string");
+ ((QComboBox *)widget())->setEditText(szText);
+ return true;
+}
+bool KviKvsObject_combobox::functiontextAt(KviKvsObjectFunctionCall *c)
+{
+
+ kvs_uint_t uIndex;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("index",KVS_PT_UNSIGNEDINTEGER,0,uIndex)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ c->returnValue()->setString(((QComboBox *)widget())->text(uIndex));
+ return true;
+}
+bool KviKvsObject_combobox::functionsetCurrentItem(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uIndex;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("index",KVS_PT_UNSIGNEDINTEGER,0,uIndex)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((QComboBox *)widget())->setCurrentItem(uIndex);
+ return true;
+}
+bool KviKvsObject_combobox::functionpopup(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ ((QComboBox *)widget())->popup();
+ return true;
+}
+bool KviKvsObject_combobox::functionsetInsertionPolicy(KviKvsObjectFunctionCall *c)
+{
+ QString szPolicy;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("policy",KVS_PT_STRING,0,szPolicy)
+ KVSO_PARAMETERS_END(c)
+ if(!widget()) return true;
+ if(KviQString::equalCI(szPolicy,"NoInsertion"))
+ ((QComboBox *)widget())->setInsertionPolicy(QComboBox::NoInsertion);
+ else if(KviQString::equalCI(szPolicy,"AtTop"))
+ ((QComboBox *)widget())->setInsertionPolicy(QComboBox::AtTop);
+ else if(KviQString::equalCI(szPolicy,"AtBotton"))
+ ((QComboBox *)widget())->setInsertionPolicy(QComboBox::AtBottom);
+ else if(KviQString::equalCI(szPolicy,"AtCurrent"))
+ ((QComboBox *)widget())->setInsertionPolicy(QComboBox::AtCurrent);
+ else if(KviQString::equalCI(szPolicy,"AfterCurrent"))
+ ((QComboBox *)widget())->setInsertionPolicy(QComboBox::AfterCurrent);
+ else if(KviQString::equalCI(szPolicy,"BeforeCurrent"))
+ ((QComboBox *)widget())->setInsertionPolicy(QComboBox::BeforeCurrent);
+ else c->warning(__tr2qs("Invalid insertion Policy %Q"),&szPolicy);
+ return true;
+}
+
+
+
+bool KviKvsObject_combobox::functiontextChangedEvent(KviKvsObjectFunctionCall *c)
+{
+
+ emitSignal("textChanged",c,c->params());
+ return true;
+
+}
+
+void KviKvsObject_combobox::slottextChanged(const QString &text)
+{
+ KviKvsVariantList params(new KviKvsVariant(text));
+ callFunction(this,"textChangedEvent",&params);
+}
+
+bool KviKvsObject_combobox::functionactivatedEvent(KviKvsObjectFunctionCall *c)
+{
+
+ emitSignal("activated",c,c->params());
+ return true;
+
+}
+
+void KviKvsObject_combobox::slotActivated(int i)
+{
+ KviKvsVariantList params(new KviKvsVariant((kvs_int_t)i));
+ callFunction(this,"activatedEvent",&params);
+}
+
+
+#include "m_class_combobox.moc"
diff --git a/src/modules/objects/class_combobox.h b/src/modules/objects/class_combobox.h
new file mode 100644
index 00000000..d4da7c6b
--- /dev/null
+++ b/src/modules/objects/class_combobox.h
@@ -0,0 +1,71 @@
+#ifndef _CLASS_COMBOBOX_H_
+#define _CLASS_COMBOBOX_H_
+
+//vim: ts=8
+// File : class_combobox.h
+// Creation date : Thu Mar 22 20:57:28 CET 2001 by Krzysztof Godlewski
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include <qcombobox.h>
+#include "class_widget.h"
+#include "object_macros.h"
+
+class KviKvsObject_combobox : public KviKvsObject_widget
+{
+ Q_OBJECT
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_combobox)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+ bool functioninsertItem(KviKvsObjectFunctionCall *c);
+ bool functionchangeItem(KviKvsObjectFunctionCall *c);
+ bool functionremoveItem(KviKvsObjectFunctionCall *c);
+ bool functionclear(KviKvsObjectFunctionCall *c);
+//#warning "$insertPixItem"
+//#warning "$changePixItem"
+
+ bool functioncount(KviKvsObjectFunctionCall *c);
+ bool functionsetMaxCount(KviKvsObjectFunctionCall *c);
+ bool functionmaxCount(KviKvsObjectFunctionCall *c);
+ bool functioncurrent(KviKvsObjectFunctionCall *c);
+ bool functioncurrentItem(KviKvsObjectFunctionCall *c);
+ bool functionsetEditable(KviKvsObjectFunctionCall *c);
+ bool functioneditable(KviKvsObjectFunctionCall *c);
+ bool functionsetEditText(KviKvsObjectFunctionCall *c);
+ bool functiontextAt(KviKvsObjectFunctionCall *c);
+ bool functiontextLineEdit(KviKvsObjectFunctionCall *c);
+ bool functionsetTextLineEdit(KviKvsObjectFunctionCall *c);
+
+ bool functionsetInsertionPolicy(KviKvsObjectFunctionCall *c);
+
+ bool functionsetCurrentItem(KviKvsObjectFunctionCall *c);
+ bool functionpopup(KviKvsObjectFunctionCall *c);
+ bool functiontextChangedEvent(KviKvsObjectFunctionCall *c);
+ bool functionactivatedEvent(KviKvsObjectFunctionCall *c);
+protected slots:
+ void slottextChanged(const QString &);
+ void slotActivated(int);
+};
+
+#endif // !_CLASS_COMBOBOX_H_
diff --git a/src/modules/objects/class_dialog.cpp b/src/modules/objects/class_dialog.cpp
new file mode 100644
index 00000000..f062f004
--- /dev/null
+++ b/src/modules/objects/class_dialog.cpp
@@ -0,0 +1,89 @@
+//
+// File : class_dialog.cpp
+// Creation date : Sun Apr 10 22:51:48 CEST 2002 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "class_dialog.h"
+
+#include "kvi_error.h"
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+#include "kvi_frame.h"
+#include "kvi_app.h"
+
+#include <qdialog.h>
+
+
+/*
+ @doc: dialog
+ @title:
+ dialog class
+ @type:
+ class
+ @short:
+ A toplevel dialog object
+ @inherits:
+ [class]object[/class]
+ [class]widget[/class]
+ @description:
+ Rappresents a dialog object. The class is really
+ similar to the widget class, it has only a couple of minor differences.
+ A dialog is always a top-level widget, but if it has a parent, its default
+ location is centered on top of the parent. It will also share the parent's taskbar entry.
+ If you call $setModal(1) then the dialog will have non-blocking modal behaviour:
+ it will appear above its parent widget and block its input until it's closed.
+ @functions:
+*/
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_dialog,"dialog","widget")
+ KVSO_REGISTER_HANDLER(KviKvsObject_dialog,"setModal",functionSetModal)
+KVSO_END_REGISTERCLASS(KviKvsObject_dialog)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_dialog,KviKvsObject_widget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_dialog)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_dialog)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_dialog)
+
+bool KviKvsObject_dialog::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ QWidget * w = g_pApp->activeModalWidget();
+ if(!w)w = g_pFrame;
+ QDialog * d = new QDialog(parentScriptWidget() ? parentScriptWidget() : w,name());
+ //d->setModal(true);
+ setObject(d);
+ return true;
+}
+bool KviKvsObject_dialog::functionSetModal(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((QDialog *)widget())->setModal(bEnabled);
+ return true;
+}
+
+
diff --git a/src/modules/objects/class_dialog.h b/src/modules/objects/class_dialog.h
new file mode 100644
index 00000000..b284baf3
--- /dev/null
+++ b/src/modules/objects/class_dialog.h
@@ -0,0 +1,44 @@
+#ifndef _CLASS_DIALOG_H_
+#define _CLASS_DIALOG_H_
+//
+// File : class_dialog.h
+// Creation date : Sun Apr 10 22:51:48 CEST 2002 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "class_widget.h"
+
+class QDialog;
+
+#include "object_macros.h"
+
+class KviKvsObject_dialog : public KviKvsObject_widget
+{
+
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_dialog)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+ bool functionSetModal(KviKvsObjectFunctionCall *c);
+};
+
+#endif // !_CLASS_DIALOG_H_
+
diff --git a/src/modules/objects/class_dockwindow.cpp b/src/modules/objects/class_dockwindow.cpp
new file mode 100644
index 00000000..fc439b23
--- /dev/null
+++ b/src/modules/objects/class_dockwindow.cpp
@@ -0,0 +1,276 @@
+//=============================================================================
+//
+// File : class_dockwindow.cpp
+// Created on Thu 29 Dec 2005 23:45:11 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "class_dockwindow.h"
+
+#include "kvi_frame.h"
+#include "kvi_locale.h"
+#include "kvi_qstring.h"
+#ifdef COMPILE_USE_QT4
+ #include <QDockWidget>
+ #define QT_DOCK_WINDOW QDockWidget
+#else
+ #include <qdockwindow.h>
+ #define QT_DOCK_WINDOW QDockWindow
+#endif
+#include <qlayout.h>
+
+/*
+ @doc: dockwindow
+ @title:
+ dockwindow class
+ @type:
+ class
+ @short:
+ A window dockable to the KVIrc main frame
+ @inherits:
+ [class]object[/class]
+ [class]widget[/class]
+ @description:
+ A window dockable to the KVIrc main frame borders (like a toolbar).
+ The window has an implicit layout that will automatically manage
+ the children depending on the dock window's orientation.
+ @functions:
+ !fn: $addWidget(<widget:hobject>)
+ Adds <widget> to the internal layout of this dock window.[br]
+ The widget must be a child of this dock window (otherwise strange things may happen).
+ !fn: <string> $orientation()
+ Returns the string "vertical" or "horizontal" depending on the orientation of this dock window.
+ !fn: $setOrientation(<orientation:string>)
+ Forces the orentation of this dock window. <ordientation> must be either "horizontal" or "vertical".[br]
+ Please note that KVIrc sets the orientation automatically when it is moved between the main frame docks by the user.
+ !fn: <bool> $resizeEnabled()
+ Returns $true if resizing of this window is enabled and false otherwise.
+ !fn: $setResizeEnabled(<bEnabled:bool>)
+ Enabled or disabled resizing of this window.
+ !fn: $setAllowedDockAreas(<docks:string>)
+ Sets the allowed main window dock areas for this dock window.[br]
+ <docks> must be a combination of "l","r","t","b","f" and "m".[br]
+ "l" stands for left dock area, "r" stands for right dock area, "t" stands for the top dock areas, "b" stands for the bottom dock area, "f" stands for "floating" and "m" for "minimized".[br]
+ If a flag is present then the related block area is enabled,otherwise it is disabled.
+ !fn: $dock(<dockarea:string>)
+ Docks this dock window to the specified dockarea of the main KVIrc window which can be one of "l" (left dock area), "t" (top dock area), "r" (right dock area), "b" (bottom dock area), "f" (floating) and "m" (minimized).
+*/
+
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_dockwindow,"dockwindow","widget")
+ KVSO_REGISTER_HANDLER(KviKvsObject_dockwindow,"addWidget",function_addWidget)
+ KVSO_REGISTER_HANDLER(KviKvsObject_dockwindow,"orientation",function_orientation)
+ KVSO_REGISTER_HANDLER(KviKvsObject_dockwindow,"setOrientation",function_setOrientation)
+ KVSO_REGISTER_HANDLER(KviKvsObject_dockwindow,"resizeEnabled",function_resizeEnabled)
+ KVSO_REGISTER_HANDLER(KviKvsObject_dockwindow,"setResizeEnabled",function_setResizeEnabled)
+ KVSO_REGISTER_HANDLER(KviKvsObject_dockwindow,"setAllowedDockAreas",function_setAllowedDockAreas)
+ KVSO_REGISTER_HANDLER(KviKvsObject_dockwindow,"dock",function_dock)
+KVSO_END_REGISTERCLASS(KviKvsObject_dockwindow)
+
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_dockwindow,KviKvsObject_widget)
+KVSO_END_CONSTRUCTOR(KviKvsObject_dockwindow)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_dockwindow)
+KVSO_END_DESTRUCTOR(KviKvsObject_dockwindow)
+
+#define _pDockWindow ((QT_DOCK_WINDOW *)widget())
+
+bool KviKvsObject_dockwindow::init(KviKvsRunTimeContext * pContext,KviKvsVariantList * pParams)
+{
+#ifdef COMPILE_USE_QT4
+ QDockWidget * pWidget = new QDockWidget(g_pFrame);
+ pWidget->setObjectName(getName());
+ setObject(pWidget);
+#else //!COMPILE_USE_QT4
+ setObject(new QT_DOCK_WINDOW(g_pFrame,getName()),true);
+#endif //!COMPILE_USE_QT4
+ return true;
+}
+
+bool KviKvsObject_dockwindow::function_addWidget(KviKvsObjectFunctionCall *c)
+{
+ kvs_hobject_t hWidget;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("widget",KVS_PT_HOBJECT,0,hWidget)
+ KVSO_PARAMETERS_END(c)
+
+ if(!widget())return true; // hum ? dead ?
+
+ if(hWidget == (kvs_hobject_t)0)
+ {
+ // null widget ?
+ c->warning(__tr2qs("Can't add a null object"));
+ return true;
+ }
+
+ KviKvsObject * pWidget = KviKvsKernel::instance()->objectController()->lookupObject(hWidget);
+ if(!pWidget)
+ {
+ c->warning(__tr2qs("Invalid object handle passed as parameter (the object is no longer existing ?)"));
+ return true;
+ }
+
+ if(!pWidget->object())
+ {
+ c->warning(__tr2qs("Object in invalid state"));
+ return true;
+ }
+
+ if(!pWidget->object()->isWidgetType())
+ {
+ c->warning(__tr2qs("Can't set a non-widget object to be the main widget of a dock window"));
+ return true;
+ }
+
+ if(((QWidget *)(pWidget->object()))->parent() != (QObject *)_pDockWindow)
+ {
+ c->warning(__tr2qs("The added widget is not a child of this dock window"));
+ }
+
+#ifdef COMPILE_USE_QT4
+ _pDockWindow->setWidget((QWidget *)(pWidget->object()));
+#else //!COMPILE_USE_QT4
+ _pDockWindow->boxLayout()->addWidget((QWidget *)(pWidget->object()));
+ ((QWidget *)(pWidget->object()))->show();
+#endif //!COMPILE_USE_QT4
+ return true;
+}
+
+bool KviKvsObject_dockwindow::function_orientation(KviKvsObjectFunctionCall * c)
+{
+ if(!widget())return true; // hum ? dead ?
+#ifdef COMPILE_USE_QT4
+ c->returnValue()->setString(QString("horizontal"));
+#else //!COMPILE_USE_QT4
+ c->returnValue()->setString(_pDockWindow->orientation() == Qt::Horizontal ? QString("horizontal") : QString("vertical"));
+#endif //!COMPILE_USE_QT4
+ return true;
+}
+
+bool KviKvsObject_dockwindow::function_setOrientation(KviKvsObjectFunctionCall * c)
+{
+ QString szOrientation;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("orientation",KVS_PT_NONEMPTYSTRING,0,szOrientation)
+ KVSO_PARAMETERS_END(c)
+
+ if(!widget())return true; // hum ? dead ?
+#ifndef COMPILE_USE_QT4
+ _pDockWindow->setOrientation(KviQString::equalCI(szOrientation,"vertical") ? Qt::Vertical : Qt::Horizontal);
+#endif //!COMPILE_USE_QT4
+ return true;
+}
+
+bool KviKvsObject_dockwindow::function_resizeEnabled(KviKvsObjectFunctionCall * c)
+{
+ if(!widget())return true; // hum ? dead ?
+#ifdef COMPILE_USE_QT4
+ c->returnValue()->setBoolean(false);
+#else //!COMPILE_USE_QT4
+ c->returnValue()->setBoolean(_pDockWindow->isResizeEnabled());
+#endif //!COMPILE_USE_QT4
+ return true;
+}
+
+bool KviKvsObject_dockwindow::function_setResizeEnabled(KviKvsObjectFunctionCall * c)
+{
+ bool bResizeEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bResizeEnabled)
+ KVSO_PARAMETERS_END(c)
+
+ if(!widget())return true; // hum ? dead ?
+
+#ifndef COMPILE_USE_QT4
+ _pDockWindow->setResizeEnabled(bResizeEnabled);
+#endif //!COMPILE_USE_QT4
+ return true;
+}
+
+bool KviKvsObject_dockwindow::function_setAllowedDockAreas(KviKvsObjectFunctionCall * c)
+{
+ QString szFlags;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("docks",KVS_PT_STRING,0,szFlags)
+ KVSO_PARAMETERS_END(c)
+
+ if(!widget())return true; // hum ? dead ?
+
+#ifdef COMPILE_USE_QT4
+ Qt::DockWidgetAreas fAreas = Qt::NoDockWidgetArea;
+ if(szFlags.find('t',false))fAreas |= Qt::TopDockWidgetArea;
+ if(szFlags.find('l',false))fAreas |= Qt::LeftDockWidgetArea;
+ if(szFlags.find('r',false))fAreas |= Qt::RightDockWidgetArea;
+ if(szFlags.find('b',false))fAreas |= Qt::BottomDockWidgetArea;
+ _pDockWindow->setAllowedAreas(fAreas);
+ QDockWidget::DockWidgetFeatures fFeatures = _pDockWindow->features();
+ if(szFlags.find('f',false))
+ fFeatures |= QDockWidget::DockWidgetFloatable;
+ else
+ fFeatures &= ~QDockWidget::DockWidgetFloatable;
+ // no support for minimized dock widgets
+ _pDockWindow->setFeatures(fFeatures);
+#else //!COMPILE_USE_QT4
+ g_pFrame->setDockEnabled(_pDockWindow,Qt::DockTop,szFlags.find('t',false) != -1);
+ g_pFrame->setDockEnabled(_pDockWindow,Qt::DockLeft,szFlags.find('l',false) != -1);
+ g_pFrame->setDockEnabled(_pDockWindow,Qt::DockRight,szFlags.find('r',false) != -1);
+ g_pFrame->setDockEnabled(_pDockWindow,Qt::DockBottom,szFlags.find('b',false) != -1);
+ g_pFrame->setDockEnabled(_pDockWindow,Qt::DockTornOff,szFlags.find('f',false) != -1);
+ g_pFrame->setDockEnabled(_pDockWindow,Qt::DockMinimized,szFlags.find('m',false) != -1);
+#endif //!COMPILE_USE_QT4
+
+ return true;
+}
+
+
+bool KviKvsObject_dockwindow::function_dock(KviKvsObjectFunctionCall * c)
+{
+ QString szDock;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("dock",KVS_PT_STRING,0,szDock)
+ KVSO_PARAMETERS_END(c)
+
+ if(!widget())return true; // hum ? dead ?
+#ifdef COMPILE_USE_QT4
+ g_pFrame->removeDockWidget(_pDockWindow);
+ if(szDock.find('m',false) == -1)_pDockWindow->setFloating(false);
+ if(szDock.find('t',false) != -1)g_pFrame->addDockWidget(Qt::TopDockWidgetArea,_pDockWindow);
+ else if(szDock.find('l',false) != -1)g_pFrame->addDockWidget(Qt::LeftDockWidgetArea,_pDockWindow);
+ else if(szDock.find('r',false) != -1)g_pFrame->addDockWidget(Qt::RightDockWidgetArea,_pDockWindow);
+ else if(szDock.find('b',false) != -1)g_pFrame->addDockWidget(Qt::BottomDockWidgetArea,_pDockWindow);
+ else if(szDock.find('f',false) != -1)_pDockWindow->setFloating(true);
+ else if(szDock.find('m',false) != -1)qDebug("Sorry: no support for minimized dock widgets in Qt4");
+ else c->warning(__tr2qs("Invalid dock area specified"));
+
+#else //!COMPILE_USE_QT4
+ if(szDock.find('t',false) != -1)g_pFrame->moveDockWindow(_pDockWindow,Qt::DockTop,false,100);
+ else if(szDock.find('l',false) != -1)g_pFrame->moveDockWindow(_pDockWindow,Qt::DockLeft,false,100);
+ else if(szDock.find('r',false) != -1)g_pFrame->moveDockWindow(_pDockWindow,Qt::DockRight,false,100);
+ else if(szDock.find('b',false) != -1)g_pFrame->moveDockWindow(_pDockWindow,Qt::DockBottom,false,100);
+ else if(szDock.find('f',false) != -1)g_pFrame->moveDockWindow(_pDockWindow,Qt::DockTornOff,false,100);
+ else if(szDock.find('m',false) != -1)g_pFrame->moveDockWindow(_pDockWindow,Qt::DockMinimized,false,100);
+ else c->warning(__tr2qs("Invalid dock area specified"));
+#endif //!COMPILE_USE_QT4
+ return true;
+}
+
+#include "m_class_dockwindow.moc"
diff --git a/src/modules/objects/class_dockwindow.h b/src/modules/objects/class_dockwindow.h
new file mode 100644
index 00000000..4576a43d
--- /dev/null
+++ b/src/modules/objects/class_dockwindow.h
@@ -0,0 +1,49 @@
+#ifndef _CLASS_DOCKWINDOW_H_
+#define _CLASS_DOCKWINDOW_H_
+//=============================================================================
+//
+// File : class_dockwindow.h
+// Created on Thu 29 Dec 2005 23:45:11 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "object_macros.h"
+
+#include "class_widget.h"
+
+class KviKvsObject_dockwindow : public KviKvsObject_widget
+{
+ Q_OBJECT
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_dockwindow)
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+ bool function_addWidget(KviKvsObjectFunctionCall *c);
+ bool function_orientation(KviKvsObjectFunctionCall *c);
+ bool function_setOrientation(KviKvsObjectFunctionCall *c);
+ bool function_resizeEnabled(KviKvsObjectFunctionCall *c);
+ bool function_setResizeEnabled(KviKvsObjectFunctionCall * c);
+ bool function_setAllowedDockAreas(KviKvsObjectFunctionCall * c);
+ bool function_dock(KviKvsObjectFunctionCall * c);
+};
+
+#endif //!_CLASS_DOCKWINDOW_H_
diff --git a/src/modules/objects/class_file.cpp b/src/modules/objects/class_file.cpp
new file mode 100644
index 00000000..3429278e
--- /dev/null
+++ b/src/modules/objects/class_file.cpp
@@ -0,0 +1,488 @@
+//vim: ts=8
+// File : class_file.cpp
+// Creation date : Thu Sep 21 04:42:16 CEST 2000 by Krzysztof Godlewski
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+//#warning "Add QFILEINFO to this stuff ?"
+
+#include "class_file.h"
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+#include "kvi_error.h"
+#include "kvi_fileutils.h"
+#include <qstringlist.h>
+
+
+// needed for $open()
+const char * const mod_tbl[] = {
+ "Raw",
+ "ReadOnly",
+ "WriteOnly",
+ "ReadWrite",
+ "Append",
+ "Truncate"
+ };
+#ifdef COMPILE_USE_QT4
+#define IO_RAW QIODevice::Unbuffered
+#define IO_READONLY QIODevice::ReadOnly
+#define IO_WRITEONLY QIODevice::WriteOnly
+#define IO_READWRITE QIODevice::ReadWrite
+#define IO_APPEND QIODevice::Append
+#define IO_TRUNCATE QIODevice::Truncate
+//#define IO_TRANSLATE QIODevice::Text
+#else
+#define IO_RAW IO_Raw
+#define IO_READONLY IO_ReadOnly
+#define IO_WRITEONLY IO_WriteOnly
+#define IO_READWRITE IO_ReadWrite
+#define IO_APPEND IO_Append
+#define IO_TRUNCATE IO_Truncate
+#endif
+#ifdef COMPILE_USE_QT4
+const QIODevice::OpenMode mod_cod[] = {
+#else
+const int mod_cod[] = {
+#endif
+ IO_RAW,
+ IO_READONLY,
+ IO_WRITEONLY,
+ IO_READWRITE,
+ IO_APPEND,
+ IO_TRUNCATE
+ };
+
+#define mod_num (sizeof(mod_tbl) / sizeof(mod_tbl[0]))
+
+/*
+ @doc: file
+ @keyterms:
+ file object class, creating files
+ @title:
+ file class
+ @type:
+ class
+ @short:
+ I/O device that operates on files
+ @inherits:
+ [class]object[/class]
+ @description:
+ This object class provides access to files - basic I/O
+ operations, copying, removing etc...
+ @functions:
+ !fn: $setName(<file_name:string>)
+ Sets the file name to <file_name>. It does [b]not move[/b] the file,
+ it just changes the file the object is "pointing to". You can
+ not change names of already open files.[br]
+ See also: [classfnc]$open[/classfnc](),
+ [classfnc]$name[/classfnc]().
+ !fn: <string> $name()
+ Returns name set by [classfnc]$setName[/classfnc]().[br]
+ See also: [classfnc]$setName[/classfnc]().
+ !fn: $open(<mode1:string>, <mode2:string>)
+ Attempts to open the file in specified mode or modes "sum".
+ Valid modes are:[br]
+ [pre]
+ Raw - raw, non-buffered access[br]
+ ReadOnly - opens the file read-only[br]
+ WriteOnly - opens the file write-only[br]
+ ReadWrite - opens the file in read-write mode[br]
+ Append - opens the file in append mode. The file index is set to the end of the file.[br]
+ Truncate - truncates the file[br]
+ [/pre]
+ If you call this function without any parameters, the file is
+ opened in ReadOnly mode.[br]
+ When working with buffered files, data is not written directly
+ to the file at once. You must call [classfnc]$flush[/classfnc]() to force it.[br]
+ See also: [classfnc]$close[/classfnc](),
+ [classfnc]$flush[/classfnc]().
+ !fn: <boolean> $isOpen()
+ Returns '1' if the file is open, '0' otherwise.
+ !fn: $close()
+ Closes the file, flushing the buffers first.[br]
+ See also: [classfnc]$flush[/classfnc]().
+ !fn: $flush()
+ Flushes the file buffer to disk. Calling this after opening the
+ file in 'Raw' mode doesn't make much sense.[br]
+ See also: [classfnc]$open[/classfnc](),
+ [classfnc]$close[/classfnc]().
+ !fn: <integer> $size()
+ Returns current file size.
+ !fn: <boolean> $atEnd()
+ Returns '1' if you have reached end of the file, '0' otherwise.
+ [br]See also: [classfnc]$seek[/classfnc](),
+ [classfnc]$where[/classfnc]().
+ !fn: <integer> $where()
+ Returns current position in the file (file index).[br]
+ See also: [classfnc]$seek[/classfnc]().
+ !fn: $seek(<index:integer>)
+ Sets the file index to <index>.[br]
+ See also: [classfnc]$where[/classfnc](),
+ [classfnc]$atEnd[/classfnc]().
+ !fn: $putch(<char>)
+ Writes character <char> to the file and increments file
+ index.[br]
+ See also: [classfnc]$getch[/classfnc](),
+ [classfnc]$ungetch[/classfnc]().
+ !fn: <char> $getch()
+ Reads a character from the file and increments file index.[br]
+ See also: [classfnc]$putch[/classfnc](),
+ [classfnc]$ungetch[/classfnc]().
+ !fn: $ungetch(<char>)
+ Puts the character <char> back to the file and
+ decrements the file index. This is usually called to undo a
+ $getch() call.[br]
+ See also: [classfnc]$getch[/classfnc],
+ [classfnc]$putch[/classfnc]().
+ !fn: $readLine(<text_line:string>)
+ Reads a line of text from the file and increments file index.
+ !fn: $writeLine(<text_line:string>)
+ Appends a line of text to the end of the file.
+ $readBlock()
+ $writeBlock()
+ $writeHex()
+ $readHex()
+*/
+
+
+//---------------------------------------------------------------------------------
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_file,"file","object")
+ KVSO_REGISTER_HANDLER(KviKvsObject_file,"setName", functionsetName)
+ KVSO_REGISTER_HANDLER(KviKvsObject_file,"name", functionname)
+ KVSO_REGISTER_HANDLER(KviKvsObject_file,"open", functionopen)
+ KVSO_REGISTER_HANDLER(KviKvsObject_file,"isOpen", functionisOpen)
+ KVSO_REGISTER_HANDLER(KviKvsObject_file,"close", functionclose)
+ KVSO_REGISTER_HANDLER(KviKvsObject_file,"flush", functionflush)
+ KVSO_REGISTER_HANDLER(KviKvsObject_file,"size", functionsize)
+ KVSO_REGISTER_HANDLER(KviKvsObject_file,"atEnd", functionatEnd)
+ KVSO_REGISTER_HANDLER(KviKvsObject_file,"where", functionwhere)
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_file,"seek", functionseek)
+ KVSO_REGISTER_HANDLER(KviKvsObject_file,"putch", functionputch)
+ KVSO_REGISTER_HANDLER(KviKvsObject_file,"getch", functiongetch)
+ KVSO_REGISTER_HANDLER(KviKvsObject_file,"ungetch", functionunGetch)
+ KVSO_REGISTER_HANDLER(KviKvsObject_file,"readBlock", functionreadBlock)
+ KVSO_REGISTER_HANDLER(KviKvsObject_file,"writeBlock", functionwriteBlock)
+ KVSO_REGISTER_HANDLER(KviKvsObject_file,"readLine", functionreadLine)
+ KVSO_REGISTER_HANDLER(KviKvsObject_file,"writeLine", functionwriteLine)
+/* KVSO_REGISTER_HANDLER(KviKvsObject_file,"hexWrite", functionHexWrite)
+ KVSO_REGISTER_HANDLER(KviKvsObject_file,"hexRead", functionHexRead)
+*/
+ KVSO_END_REGISTERCLASS(KviKvsObject_file)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_file,KviKvsObject)
+ m_pFile = new QFile();
+KVSO_END_CONSTRUCTOR(KviKvsObject_file)
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_file)
+if (m_pFile) delete m_pFile;
+m_pFile=0;
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_file)
+
+
+bool KviKvsObject_file::functionsetName(KviKvsObjectFunctionCall *c)
+{
+ QString szName;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("file_name",KVS_PT_STRING,0,szName)
+ KVSO_PARAMETERS_END(c)
+ if (m_pFile) m_pFile->setName(szName);
+ return true;
+}
+bool KviKvsObject_file::functionname(KviKvsObjectFunctionCall *c)
+{
+ if (m_pFile) c->returnValue()->setString(m_pFile->name());
+ return true;
+}
+
+bool KviKvsObject_file::functionopen(KviKvsObjectFunctionCall *c)
+{
+ QStringList modes;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("file_mode",KVS_PT_STRINGLIST,KVS_PF_OPTIONAL,modes)
+ KVSO_PARAMETERS_END(c)
+ if (!m_pFile) return true;
+ if(m_pFile->name().isEmpty())
+ {
+ c->warning(__tr2qs("Empty filename string"));
+ return true;
+ }
+ #ifdef COMPILE_USE_QT4
+ QIODevice::OpenMode mod,sum;
+ if (modes.empty()) sum = IO_READONLY; // if no parameters given, default to ReadWrite | Append
+ else
+ {
+ for ( int idx=0;idx<modes.count();idx++)
+ {
+ mod = IO_ReadOnly;
+ for(unsigned int j = 0; j < mod_num; j++)
+ {
+ if(KviQString::equalCI(modes.at(idx), mod_tbl[j]))
+ {
+ mod=mod_cod[j];
+ break;
+ }
+ }
+ if(mod!=IO_ReadOnly)
+ sum = sum | mod;
+ else
+ c->warning(__tr2qs("No such open mode: '%Q'"),&modes.at(idx));
+ }
+ }
+#else
+ int mod,sum=0;
+if (!modes.first()) sum = IO_READONLY; // if no parameters given, default to ReadWrite | Append
+ else
+ {
+ for ( QStringList::Iterator it = modes.begin(); it != modes.end(); ++it )
+ {
+
+ mod = 0;
+ for(unsigned int j = 0; j < mod_num; j++)
+ {
+ if(KviQString::equalCI((*it), mod_tbl[j]))
+ {
+ mod=mod_cod[j];
+ break;
+ }
+ }
+ if(mod)
+ sum = sum | mod;
+ else
+ c->warning(__tr2qs("No such open mode: '%Q'"),&(*it));
+ }
+ }
+#endif
+ m_pFile->open(sum);
+ return true;
+}
+
+bool KviKvsObject_file::functionisOpen(KviKvsObjectFunctionCall *c)
+{
+ if (m_pFile) c->returnValue()->setBoolean(m_pFile->isOpen());
+ return true;
+}
+
+bool KviKvsObject_file::functionclose(KviKvsObjectFunctionCall *c)
+{
+ if (!m_pFile->isOpen()) c->warning(__tr2qs("File is not open!"));
+ else m_pFile->close();
+ return true;
+}
+bool KviKvsObject_file::functionflush(KviKvsObjectFunctionCall *c)
+{
+ if (!m_pFile->isOpen()) c->warning(__tr2qs("File is not open!"));
+ else m_pFile->flush();
+ return true;
+}
+
+bool KviKvsObject_file::functionsize(KviKvsObjectFunctionCall *c)
+{
+ if (m_pFile) c->returnValue()->setInteger((kvs_int_t)(m_pFile->size()));
+ return true;
+}
+bool KviKvsObject_file::functionatEnd(KviKvsObjectFunctionCall *c)
+{
+ if (m_pFile) c->returnValue()->setInteger((kvs_int_t)(m_pFile->size()));
+ return true;
+}
+
+
+bool KviKvsObject_file::functionwhere(KviKvsObjectFunctionCall *c)
+{
+ if (!m_pFile->isOpen()) c->warning(__tr2qs("File is not open!"));
+ else c->returnValue()->setInteger((kvs_int_t)(m_pFile->at()));
+ return true;
+}
+bool KviKvsObject_file::functionseek(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uIndex;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("index",KVS_PT_UNSIGNEDINTEGER,0,uIndex)
+ KVSO_PARAMETERS_END(c)
+ if (!m_pFile) return true;
+ if(!m_pFile->isOpen())
+ c->warning(__tr("File is not open !"));
+ else m_pFile->at(uIndex);
+ return true;
+}
+
+bool KviKvsObject_file::functionputch(KviKvsObjectFunctionCall *c)
+{
+ QString szChar;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("char",KVS_PT_STRING,KVS_PF_OPTIONAL,szChar)
+ KVSO_PARAMETERS_END(c)
+ if (m_pFile)
+ {
+ if (szChar.length()>1)c->warning(__tr2qs("Argument to long, using only first char"));
+ const char *ch=szChar;
+ if (m_pFile->putch(ch[0])<0) c->warning(__tr2qs("Write error occured !"));
+ }
+
+ return true;
+}
+bool KviKvsObject_file::functiongetch(KviKvsObjectFunctionCall *c)
+{
+ if (!m_pFile) return true;
+ if(!m_pFile->isOpen())
+ c->warning(__tr("File is not open !"));
+ else
+ {
+ int chInt=m_pFile->getch();
+ if (chInt<0) c->warning(__tr("Read error occured !")); // c->error ?
+ QString szChar = QChar(chInt);
+ c->returnValue()->setString(szChar);
+ }
+ return true;
+}
+bool KviKvsObject_file::functionunGetch(KviKvsObjectFunctionCall *c)
+{
+ QString szChar;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("char",KVS_PT_STRING,0,szChar)
+ KVSO_PARAMETERS_END(c)
+ if (!m_pFile) return true;
+ if(!m_pFile->isOpen())
+ c->warning(__tr("File is not open !"));
+ else
+ {
+ if (szChar.length()>1) c->warning(__tr2qs("Argument to long, using only first char"));
+ const char *ch=szChar;
+ if (m_pFile->ungetch(ch[0])<0) c->warning(__tr2qs("An error occured !"));// c->error ?
+ }
+ return true;
+}
+bool KviKvsObject_file::functionreadBlock(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uLen;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("lenght",KVS_PT_UNSIGNEDINTEGER,0,uLen)
+ KVSO_PARAMETERS_END(c)
+ if (!m_pFile) return true;
+ if(!m_pFile->isOpen())
+ c->warning(__tr("File is not open !"));
+ else
+ {
+ char * buff = new char[uLen + 1];
+ m_pFile->flush(); // advice from QFile man page (to avoid trash)
+ int rlen = m_pFile->readBlock(buff, uLen);
+ buff[rlen] = '\0';
+ QString szBlock(buff);
+ c->returnValue()->setString(szBlock);
+ }
+ return true;
+}
+
+bool KviKvsObject_file::functionwriteBlock(KviKvsObjectFunctionCall *c)
+{
+ QString szBlock;
+ kvs_uint_t uLen;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("lenght",KVS_PT_UNSIGNEDINTEGER,0,uLen)
+ KVSO_PARAMETER("text_block",KVS_PT_STRING,0,szBlock)
+ KVSO_PARAMETERS_END(c)
+ if (!m_pFile) return true;
+ if(!m_pFile->isOpen())
+ c->warning(__tr("File is not open !"));
+ const char *block=szBlock;
+ int rlen = m_pFile->writeBlock(block, uLen);
+ c->returnValue()->setInteger(rlen);
+ m_pFile->flush();
+ return true;
+}
+bool KviKvsObject_file::functionreadLine(KviKvsObjectFunctionCall *c)
+{
+ if (!m_pFile) return true;
+ if(!m_pFile->isOpen())
+ c->warning(__tr("File is not open !"));
+ else
+ {
+ QString buffer;
+ KviFileUtils::readLine(m_pFile,buffer);
+ c->returnValue()->setString(buffer);
+ }
+ return true;
+}
+bool KviKvsObject_file::functionwriteLine(KviKvsObjectFunctionCall *c)
+{
+ QString szLine;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text_line",KVS_PT_STRING,0,szLine)
+ KVSO_PARAMETERS_END(c)
+ if (!m_pFile) return true;
+ if(!m_pFile->isOpen())
+ c->warning(__tr("File is not open !"));
+ else
+ {
+ QTextStream ts(m_pFile);
+ ts << szLine;
+ }
+ return true;
+}
+// fixme
+/*
+
+bool KviScriptFileObject::functionHexWrite(KviCommand * c, KviParameterList * p,
+ KviStr & b)
+{
+ ENTER_STACK_FRAME(c, "file::hexWrite");
+ if(!p->count())
+ return c->error(KviError_notEnoughParameters);
+
+ char * val = 0;
+ int len = p->first()->hexToBuffer(&val,false);
+
+ if(len < 1)
+ {
+ c->warning(__tr("Nothing to write"));
+ return c->leaveStackFrame();
+ }
+
+ if(!m_pFile->isOpen())
+ c->warning(__tr("File is not open !"));
+
+ if(m_pFile->putch(*val) < 0)
+ c->warning(__tr("Write error occured !")); // c->error ?
+
+ KviStr::freeBuffer(val);
+
+ return c->leaveStackFrame();
+}
+
+bool KviScriptFileObject::functionHexRead(KviCommand * c, KviParameterList * p,
+ KviStr & b)
+{
+ if(!m_pFile->isOpen())
+ c->warning(__tr("File is not open !"));
+
+ char ch = m_pFile->getch();
+
+ KviStr tmp;
+ tmp.bufferToHex(&ch, 1);
+ b.append(tmp);
+
+ return true;
+}
+
+*/
+#include "m_class_file.moc"
diff --git a/src/modules/objects/class_file.h b/src/modules/objects/class_file.h
new file mode 100644
index 00000000..01a54d19
--- /dev/null
+++ b/src/modules/objects/class_file.h
@@ -0,0 +1,113 @@
+#ifndef _CLASS_FILE_H_
+#define _CLASS_FILE_H_
+//vim: ts=8
+// File : class_file.h
+// Creation date : Thu Sep 21 04:43:01 CEST 2000 by Krzysztof Godlewski
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+
+#include <qfile.h>
+#include <qtextstream.h>
+#include "kvi_string.h"
+
+
+/*
+//class KviCommand;
+class KviParameterList;
+
+class KviScriptFileObject : public KviScriptObject
+{
+ Q_OBJECT
+public:
+ KviScriptFileObject(KviScriptObjectClass *, KviScriptObject *, const char *);
+ virtual ~KviScriptFileObject();
+
+ static void registerSelf();
+ static void unregisterSelf();
+
+protected:
+ bool functionSetName(KviCommand *, KviParameterList *, KviStr &);
+ bool functionName(KviCommand *, KviParameterList *, KviStr &);
+ bool functionOpen(KviCommand *, KviParameterList *, KviStr &);
+ bool functionIsOpen(KviCommand *, KviParameterList *, KviStr &);
+ bool functionClose(KviCommand *, KviParameterList *, KviStr &);
+ bool functionFlush(KviCommand *, KviParameterList *, KviStr &);
+ bool functionSize(KviCommand *, KviParameterList *, KviStr &);
+
+ bool functionAtEnd(KviCommand *, KviParameterList *, KviStr &);
+ // int QFile at() const
+ bool functionWhere(KviCommand *, KviParameterList *, KviStr &);
+ // void QFile at(int)
+ bool functionSeek(KviCommand *, KviParameterList *, KviStr &);
+ bool functionPutch(KviCommand *, KviParameterList *, KviStr &);
+ bool functionGetch(KviCommand *, KviParameterList *, KviStr &);
+ bool functionUngetch(KviCommand *, KviParameterList *, KviStr &);
+
+ bool functionReadBlock(KviCommand *, KviParameterList *, KviStr &);
+ bool functionWriteBlock(KviCommand *, KviParameterList *, KviStr &);
+
+ bool functionReadLine(KviCommand *, KviParameterList *, KviStr &);
+ bool functionWriteLine(KviCommand *, KviParameterList *, KviStr &);
+ bool functionHexWrite(KviCommand *, KviParameterList *, KviStr &);
+ bool functionHexRead(KviCommand *, KviParameterList *, KviStr &);
+
+protected:
+ QFile * m_pFile;
+};
+
+*/
+
+#include "object_macros.h"
+
+class KviKvsObject_file : public KviKvsObject
+{
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_file)
+protected:
+ bool functionsetName(KviKvsObjectFunctionCall *c);
+ bool functionname(KviKvsObjectFunctionCall *c);
+ bool functionopen(KviKvsObjectFunctionCall *c);
+ bool functionisOpen(KviKvsObjectFunctionCall *c);
+ bool functionclose(KviKvsObjectFunctionCall *c);
+ bool functionflush(KviKvsObjectFunctionCall *c);
+ bool functionsize(KviKvsObjectFunctionCall *c);
+
+ bool functionatEnd(KviKvsObjectFunctionCall *c);
+ // int QFile at() const
+ bool functionwhere(KviKvsObjectFunctionCall *c);
+ // void QFile at(int)
+ bool functionseek(KviKvsObjectFunctionCall *c);
+ bool functionputch(KviKvsObjectFunctionCall *c);
+ bool functiongetch(KviKvsObjectFunctionCall *c);
+ bool functionunGetch(KviKvsObjectFunctionCall *c);
+
+ bool functionreadBlock(KviKvsObjectFunctionCall *c);
+ bool functionwriteBlock(KviKvsObjectFunctionCall *c);
+
+ bool functionreadLine(KviKvsObjectFunctionCall *c);
+ bool functionwriteLine(KviKvsObjectFunctionCall *c);
+/* bool functionHexWrite(KviKvsObjectFunctionCall *c);
+ bool functionHexRead(KviKvsObjectFunctionCall *c);
+*/
+protected:
+ QFile * m_pFile;
+};
+#endif // !_CLASS_FILE_H_
diff --git a/src/modules/objects/class_groupbox.cpp b/src/modules/objects/class_groupbox.cpp
new file mode 100644
index 00000000..14e640d1
--- /dev/null
+++ b/src/modules/objects/class_groupbox.cpp
@@ -0,0 +1,376 @@
+//
+// File : class_groupbox.cpp
+// Creation date : Fri Jan 28 14:21:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include <kvi_tal_groupbox.h>
+#include "class_groupbox.h"
+#include "kvi_error.h"
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+
+// Tables used in $setAlignment , $alignment and in $setOrientation & $orientation
+
+const char * const align_tbl[] = {
+ "Left",
+ "Right",
+ "HCenter"
+ };
+const int align_cod[] = {
+ Qt::AlignLeft,
+ Qt::AlignRight,
+ Qt::AlignHCenter
+ };
+#define align_num (sizeof(align_tbl) / sizeof(align_tbl[0]))
+
+
+/*
+ @doc: groupbox
+ @keyterms:
+ groupbox object class,
+ @title:
+ groupbox class
+ @type:
+ class
+ @short:
+ Provides a groupbox bar.
+ @inherits:
+ [class]object[/class]
+ [class]widget[/class]
+ @description:
+ This widget can be used to display a groupbox.
+ It will be usually a parent for other child controls.
+ You can either use a child layout to manage the children geometries
+ or use $setColumnLayout to manage the layout automatically.
+ @functions:
+ !fn: $setTitle(<text:String>)
+ Sets the group box title to <text>.
+ !fn: <string> $title()
+ Returns the group box title text.
+ !fn: $setFlat(<bflag:boolean>)
+ Sets whether the group box is painted flat. Valid Values are 1 or 0.
+ !fn: <boolean> $isFlat()
+ Returns 1 (TRUE) if the group box is painted flat; otherwise returns 0 (FALSE).
+ !fn: <boolean> $isCheckable()
+ Returns 1 (TRUE) if the group box has a checkbox in its title; otherwise returns 0 (FALSE).
+ !fn: $setCheckable(<bflag:boolean>)
+ Sets whether the group box has a checkbox in its title: Valid values are 1 or 0.
+ !fn: $setInsideMargin(<margin:uint>)
+ Sets the the width of the inside margin to m pixels.
+ !fn: <integer> $insideMargin()
+ Returns the width of the empty space between the items in the group and margin of groupbox.
+ !fn: $setInsideSpacing(<spacing:uint>)
+ Sets the width of the empty space between each of the items in the group to m pixels.
+ !fn: <integer> $insideSpacing()
+ Returns the width of the empty space between each of the items in the group.
+ !fn: $setColumns(<columns:uint>)
+ Sets the number of columns or rows (depending of the orientation) in the group box.
+ !fn: <integer> $columns()
+ Returns the number of columns or rows in the groupbox.
+ !fn: $addSpace()
+ Adds an empty cell at the next free position.
+ !fn: <string> $alignment()
+ Returns the alignment of the group box title.
+ !fn: $setAlignment(<alignment:string>)
+ Set the alignment of the groupbox; Valid values are Left,Right,HCenter.
+ !fn: $setOrientation<orientation:string>
+ Sets the group box's orientation. Valid values are: Horizontal, Vertical.
+ !fn: $setColumnLayout(<columns:integer>,<orientation:string>)
+ Enables the automatic layout management. The children are arranged in n columns with the specified orientation.[br]
+ Valid values for <orientation> are: Horizontal, Vertical.
+ @examples:
+ [example]
+ |-Start:[br]
+ #Let's start.[br]
+ #first we'll create the main widget.[br]
+ %widget=$new(widget)[br]
+ [br]
+ #then the groupbox [br]
+ %gb=$new(groupbox,%widget)[br]
+ %gb->$setTitle(Login)[br]
+ %gb->$setAlignment("Left")[br]
+ [br]
+ #now we create the labels and lineedits.[br]
+ %labeluser=$new(label,%gb)[br]
+ %labeluser->$settext(User: )[br]
+ %labelpass=$new(label,%gb)[br]
+ %labelpass->$settext(Pass: )[br]
+ %inputuser=$new(lineedit,%gb)[br]
+ %inputpass=$new(lineedit,%gb)[br]
+ %inputpass->$setechomode("password")[br]
+ [br]
+ #now lets' layouting the groupbox's element's.[br]
+ %layoutgb=$new(layout,%gb)[br]
+ %layoutgb->$setmargin(20)[br]
+ %layoutgb->$addwidget(%labeluser,0,0)[br]
+ %layoutgb->$addwidget(%labelpass,1,0)[br]
+ %layoutgb->$addwidget(%inputuser,0,1)[br]
+ %layoutgb->$addwidget(%inputpass,1,1)[br]
+ [br]
+ # now we create a fake widget and managing the two buttons layout.[br]
+ %fakewidget=$new(widget,%widget)[br]
+ %layoutbtn=$new(layout,%fakewidget)[br]
+ %btnok=$new(button,%fakewidget)[br]
+ %btnok->$settext("OK")[br]
+ %btncancel=$new(button,%fakewidget)[br]
+ %btncancel->$settext("Cancel")[br]
+ %layoutbtn->$addwidget(%btnok,0,0)[br]
+ %layoutbtn->$addwidget(%btncancel,0,1)[br]
+ [br]
+ #And finally we create a main layout with the groupbox (and its "children")[br]
+ #and fakewiget (with its buttons children).
+ %mainlayout=$new(layout,%widget)[br]
+ %mainlayout->$setspacing(10)[br]
+ %mainlayout->$setmargin(10)[br]
+ %mainlayout->$addwidget(%gb,0,0)[br]
+ %mainlayout->$addwidget(%fakewidget,1,0)[br]
+ [br]
+ #Let's show our nice login request =D ! [br]
+ %widget->$show()[br]
+ [/example]
+
+*/
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_groupbox,"groupbox","widget")
+ KVSO_REGISTER_HANDLER(KviKvsObject_groupbox,"setTitle", functionSetTitle)
+ KVSO_REGISTER_HANDLER(KviKvsObject_groupbox,"title", functionTitle)
+ KVSO_REGISTER_HANDLER(KviKvsObject_groupbox,"setFlat", functionSetFlat)
+ KVSO_REGISTER_HANDLER(KviKvsObject_groupbox,"isFlat", functionIsFlat)
+ KVSO_REGISTER_HANDLER(KviKvsObject_groupbox,"setCheckable", functionSetCheckable)
+ KVSO_REGISTER_HANDLER(KviKvsObject_groupbox,"isCheckable", functionIsCheckable)
+ KVSO_REGISTER_HANDLER(KviKvsObject_groupbox,"setInsideMargin", functionSetInsideMargin)
+ KVSO_REGISTER_HANDLER(KviKvsObject_groupbox,"insideMargin", functionInsideMargin)
+ KVSO_REGISTER_HANDLER(KviKvsObject_groupbox,"setInsideSpacing", functionSetInsideSpacing)
+ KVSO_REGISTER_HANDLER(KviKvsObject_groupbox,"insideSpacing", functionInsideSpacing)
+ KVSO_REGISTER_HANDLER(KviKvsObject_groupbox,"setColumns", functionSetColumns)
+ KVSO_REGISTER_HANDLER(KviKvsObject_groupbox,"columns", functionColumns)
+ KVSO_REGISTER_HANDLER(KviKvsObject_groupbox,"addSpace", functionAddSpace)
+ KVSO_REGISTER_HANDLER(KviKvsObject_groupbox,"alignment", functionAlignment)
+ KVSO_REGISTER_HANDLER(KviKvsObject_groupbox,"setAlignment", functionSetAlignment)
+ KVSO_REGISTER_HANDLER(KviKvsObject_groupbox,"setOrientation", functionSetOrientation)
+ KVSO_REGISTER_HANDLER(KviKvsObject_groupbox,"isChecked", functionIsChecked)
+ KVSO_REGISTER_HANDLER(KviKvsObject_groupbox,"setChecked", functionSetChecked)
+ KVSO_REGISTER_HANDLER(KviKvsObject_groupbox,"setColumnLayout",functionSetColumnLayout)
+KVSO_END_REGISTERCLASS(KviKvsObject_groupbox)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_groupbox,KviKvsObject_widget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_groupbox)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_groupbox)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_groupbox)
+
+bool KviKvsObject_groupbox::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+#ifdef COMPILE_USE_QT4
+ KviTalGroupBox *groupbox=new KviTalGroupBox(name(),parentScriptWidget());
+ groupbox->setObjectName(name());
+ setObject(groupbox,true);
+#else
+ setObject(new KviTalGroupBox(name(),parentScriptWidget()), true);
+#endif
+ return true;
+}
+
+bool KviKvsObject_groupbox::functionSetTitle(KviKvsObjectFunctionCall *c)
+{
+ QString szTitle;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("title",KVS_PT_STRING,0,szTitle)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((KviTalGroupBox *)widget())->setTitle(szTitle);
+ return true;
+}
+bool KviKvsObject_groupbox::functionTitle(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setString(((KviTalGroupBox *)widget())->title());
+ return true;
+}
+bool KviKvsObject_groupbox::functionSetFlat(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bFlag",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((KviTalGroupBox *)widget())->setFlat(bEnabled);
+ return true;
+}
+bool KviKvsObject_groupbox::functionIsFlat(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setBoolean(((KviTalGroupBox *)widget())->isFlat());
+ return true;
+}
+bool KviKvsObject_groupbox::functionSetCheckable(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bFlag",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((KviTalGroupBox *)widget())->setCheckable(bEnabled);
+ return true;
+}
+bool KviKvsObject_groupbox::functionIsCheckable(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setBoolean(((KviTalGroupBox *)widget())->isCheckable());
+ return true;
+}
+bool KviKvsObject_groupbox::functionSetChecked(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bFlag",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((KviTalGroupBox *)widget())->setChecked(bEnabled);
+ return true;
+}
+bool KviKvsObject_groupbox::functionIsChecked(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setBoolean(((KviTalGroupBox *)widget())->isChecked());
+ return true;
+}
+bool KviKvsObject_groupbox::functionSetInsideMargin(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uMargin;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("margin",KVS_PT_UNSIGNEDINTEGER,0,uMargin)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((KviTalGroupBox *)widget())->setInsideMargin(uMargin);
+ return true;
+}
+bool KviKvsObject_groupbox::functionInsideMargin(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setInteger(((KviTalGroupBox *)widget())->insideMargin());
+ return true;
+}
+bool KviKvsObject_groupbox::functionSetInsideSpacing(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uSpacing;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("spacing",KVS_PT_UNSIGNEDINTEGER,0,uSpacing)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((KviTalGroupBox *)widget())->setInsideSpacing(uSpacing);
+ return true;
+}
+bool KviKvsObject_groupbox::functionInsideSpacing(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setInteger(((KviTalGroupBox *)widget())->insideSpacing());
+ return true;
+}
+bool KviKvsObject_groupbox::functionSetColumns(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uColums;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("colums",KVS_PT_UNSIGNEDINTEGER,0,uColums)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((KviTalGroupBox *)widget())->setColumns(uColums);
+ return true;
+}
+bool KviKvsObject_groupbox::functionColumns(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setInteger(((KviTalGroupBox *)widget())->columns());
+ return true;
+}
+bool KviKvsObject_groupbox::functionAddSpace(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t iSpace;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("colums",KVS_PT_UNSIGNEDINTEGER,0,iSpace)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) (((KviTalGroupBox *)widget())->addSpace(iSpace));
+ return true;
+}
+
+bool KviKvsObject_groupbox::functionSetAlignment(KviKvsObjectFunctionCall *c)
+{
+ QString szAlign;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("alignment",KVS_PT_STRING,0,szAlign)
+ KVSO_PARAMETERS_END(c)
+ if (!widget()) return true;
+ for(unsigned int i = 0; i < align_num; i++)
+ {
+ if(KviQString::equalCI(szAlign, align_tbl[i]))
+ {
+ ((KviTalGroupBox *)widget())->setAlignment(align_cod[i]);
+ return true;
+ }
+ }
+ c->warning(__tr2qs("Unknown alignment"));
+ return true;
+}
+bool KviKvsObject_groupbox::functionAlignment(KviKvsObjectFunctionCall *c)
+{
+ int mode = ((KviTalGroupBox *)widget())->alignment();
+ QString szAlignment="";
+ for(unsigned int i = 0; i < align_num; i++)
+ {
+ if(mode == align_cod[i])
+ {
+ szAlignment=align_tbl[i];
+ break;
+ }
+ }
+ c->returnValue()->setString(szAlignment);
+ return true;
+}
+
+bool KviKvsObject_groupbox::functionSetOrientation(KviKvsObjectFunctionCall *c)
+{
+ QString szMode;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("orientation",KVS_PT_STRING,0,szMode)
+ KVSO_PARAMETERS_END(c)
+ if(!widget())return true;
+ if(KviQString::equalCI(szMode, "Horizontal"))
+ ((KviTalGroupBox *)widget())->setOrientation(Qt::Horizontal);
+ else
+ if(KviQString::equalCI(szMode, "Vertical"))
+ ((KviTalGroupBox *)widget())->setOrientation(Qt::Vertical);
+ else c->warning( __tr2qs("Unknown orientation: "));
+ return true;
+}
+
+bool KviKvsObject_groupbox::functionSetColumnLayout(KviKvsObjectFunctionCall *c)
+{
+ QString szMode;
+ kvs_uint_t uCol;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("columns",KVS_PT_UNSIGNEDINTEGER,0,uCol)
+ KVSO_PARAMETER("orientation",KVS_PT_STRING,0,szMode)
+ KVSO_PARAMETERS_END(c)
+ if(!widget())return true;
+ if(szMode=="Horizontal")
+ ((KviTalGroupBox *)widget())->setColumnLayout(uCol,Qt::Horizontal);
+ else
+ if(szMode=="Vertical")
+ ((KviTalGroupBox *)widget())->setColumnLayout(uCol,Qt::Vertical);
+ else c->warning( __tr2qs("Unknown orientation: "));
+ return true;
+}
+
diff --git a/src/modules/objects/class_groupbox.h b/src/modules/objects/class_groupbox.h
new file mode 100644
index 00000000..c63bb46b
--- /dev/null
+++ b/src/modules/objects/class_groupbox.h
@@ -0,0 +1,64 @@
+#ifndef _CLASS_GROUPBOX_H_
+#define _CLASS_GROUPBOX_H_
+//
+// File : class_groupbox.h
+// Creation date : Fri Jan 28 14:21:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+
+#include <kvi_tal_groupbox.h>
+#include "class_widget.h"
+#include "object_macros.h"
+
+class KviKvsObject_groupbox : public KviKvsObject_widget
+{
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_groupbox)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+
+ bool functionSetTitle(KviKvsObjectFunctionCall *c);
+ bool functionTitle(KviKvsObjectFunctionCall *c);
+ bool functionSetFlat(KviKvsObjectFunctionCall *c);
+ bool functionIsFlat(KviKvsObjectFunctionCall *c);
+ bool functionSetCheckable(KviKvsObjectFunctionCall *c);
+ bool functionIsCheckable(KviKvsObjectFunctionCall *c);
+ bool functionSetInsideMargin(KviKvsObjectFunctionCall *c);
+ bool functionInsideMargin(KviKvsObjectFunctionCall *c);
+ bool functionSetInsideSpacing(KviKvsObjectFunctionCall *c);
+ bool functionInsideSpacing(KviKvsObjectFunctionCall *c);
+ bool functionSetColumns(KviKvsObjectFunctionCall *c);
+ bool functionColumns(KviKvsObjectFunctionCall *c);
+ bool functionAddSpace(KviKvsObjectFunctionCall *c);
+ bool functionAlignment(KviKvsObjectFunctionCall *c);
+ bool functionSetAlignment(KviKvsObjectFunctionCall *c);
+ bool functionSetOrientation(KviKvsObjectFunctionCall *c);
+ bool functionIsChecked(KviKvsObjectFunctionCall *c);
+ bool functionSetChecked(KviKvsObjectFunctionCall *c);
+ bool functionSetColumnLayout(KviKvsObjectFunctionCall *c);
+
+};
+#endif //!_CLASS_GROUPBOX_H_
+
diff --git a/src/modules/objects/class_hbox.cpp b/src/modules/objects/class_hbox.cpp
new file mode 100644
index 00000000..48174312
--- /dev/null
+++ b/src/modules/objects/class_hbox.cpp
@@ -0,0 +1,128 @@
+//
+// File : class_hbox.cpp
+// Creation date : Wed Mar 01 2005 23:00:01 by Alessandro Carbone & Tonino Imbesi
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#define _KVI_DEBUG_CHECK_RANGE_
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+
+#include "class_hbox.h"
+
+/*
+ @doc: hbox
+ @keyterms:
+ hbox object class, child widgets
+ @title:
+ hbox class
+ @type:
+ class
+ @short:
+ Manages child widget horizontal geometry
+ @inherits:
+ [class]object[/class]
+ @description:
+ The hbox class widget provides horizontal geometry management for its child widgets.
+ @functions:
+ !fn: $setSpacing(<spacing:uint>)
+ Sets the default spacing of the widgets in pixels
+ !fn: $setMargin(<margin:uint>)
+ Sets the dimension of the layout margin : the distance from the border to the outermost child widget edges.
+ !fn: $setStretchFactor(<widget:hobject>,<stretch:uint>)
+ Sets the stretch factor of widget to stretch.
+*/
+
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_hbox,"hbox","widget")
+ KVSO_REGISTER_HANDLER(KviKvsObject_hbox,"setMargin", functionsetMargin)
+ KVSO_REGISTER_HANDLER(KviKvsObject_hbox,"setSpacing", functionsetSpacing)
+ KVSO_REGISTER_HANDLER(KviKvsObject_hbox,"setStretchFactor", functionsetStretchFactor )
+KVSO_END_REGISTERCLASS(KviKvsObject_hbox)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_hbox,KviKvsObject_widget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_hbox)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_hbox)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_hbox)
+
+bool KviKvsObject_hbox::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+
+ setObject(new KviTalHBox(parentScriptWidget()), true);
+ return true;
+}
+bool KviKvsObject_hbox::functionsetMargin(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uMargin;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("margin",KVS_PT_UNSIGNEDINTEGER,0,uMargin)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((KviTalHBox *)widget())->setMargin(uMargin);
+ return true;
+}
+
+bool KviKvsObject_hbox::functionsetSpacing(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uSpacing;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("spacing",KVS_PT_UNSIGNEDINTEGER,0,uSpacing)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((KviTalHBox *)widget())->setSpacing(uSpacing);
+ return true;
+}
+bool KviKvsObject_hbox::functionsetStretchFactor(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject * pObject;
+ kvs_hobject_t hObject;
+ kvs_uint_t uStretch;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETER("stretch",KVS_PT_UNSIGNEDINTEGER,0,uStretch)
+ KVSO_PARAMETERS_END(c)
+ pObject=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if(!widget())return true;
+ if (!pObject)
+ {
+ c->warning(__tr2qs("Widget parameter is not an object"));
+ return true;
+ }
+ if (!pObject->object())
+ {
+ c->warning(__tr2qs("Widget parameter is not a valid object"));
+ return true;
+ }
+ if(!pObject->object()->isWidgetType())
+ {
+ c->warning(__tr2qs("Can't add a non-widget object"));
+ return true;
+ }
+ if(((KviKvsObject_widget *)pObject)->widget()->parentWidget() != widget())
+ {
+ c->warning(__tr2qs("The widget must be a child of this hbox"));
+ return true;
+ }
+ ((KviTalHBox *)widget())->setStretchFactor(((QWidget *)(pObject->object())),uStretch);
+ return true;
+}
+
+
diff --git a/src/modules/objects/class_hbox.h b/src/modules/objects/class_hbox.h
new file mode 100644
index 00000000..c0489f28
--- /dev/null
+++ b/src/modules/objects/class_hbox.h
@@ -0,0 +1,47 @@
+#ifndef _CLASS_HBOX_H_
+#define _CLASS_HBOX_H_
+//
+// File : class_hbox.h
+// Creation date : Wed Mar 01 2005 23:00:01 by Alessandro Carbone & Tonino Imbesi
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include "kvi_string.h"
+
+#include "kvi_tal_hbox.h"
+#include "object_macros.h"
+#include "class_widget.h"
+
+class KviKvsObject_hbox : public KviKvsObject_widget
+{
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_hbox)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+ bool functionsetMargin(KviKvsObjectFunctionCall *c);
+ bool functionsetSpacing(KviKvsObjectFunctionCall *c);
+ bool functionsetStretchFactor(KviKvsObjectFunctionCall *c);
+
+
+};
+
+
+#endif //_CLASS_HBOX_H_
diff --git a/src/modules/objects/class_label.cpp b/src/modules/objects/class_label.cpp
new file mode 100644
index 00000000..9c629818
--- /dev/null
+++ b/src/modules/objects/class_label.cpp
@@ -0,0 +1,409 @@
+//vim: ts=8
+// File : class_label.cpp
+// Creation date : Mon Sep 18 14:21:48 CEST 2000 by Krzysztof Godlewski
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Krzysztof Godlewski
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include <qfont.h>
+#include <qpixmap.h>
+#include <qmessagebox.h>
+#include "class_label.h"
+//#include "kvi_fileutils.h"
+#include "kvi_error.h"
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+
+
+
+// Tables used in $setAlignment & $alignment
+const char * const align_tbl[] = {
+ "Left",
+ "Right",
+ "HCenter",
+ "VCenter",
+ "Center",
+ "Top",
+ "Bottom",
+ "WordBreak"
+ };
+#ifdef COMPILE_USE_QT4
+ #define QT_LABEL_ALIGNLEFT Qt::AlignLeft
+ #define QT_LABEL_ALIGNRIGHT Qt::AlignRight
+ #define QT_LABEL_ALIGNHCENTER Qt::AlignHCenter
+ #define QT_LABEL_ALIGNVCENTER Qt::AlignVCenter
+ #define QT_LABEL_ALIGNCENTER Qt::AlignCenter
+ #define QT_LABEL_ALIGNTOP Qt::AlignTop
+ #define QT_LABEL_ALIGNBOTTOM Qt::AlignBottom
+ #define QT_LABEL_JUSTIFY Qt::AlignJustify
+#else
+ #define QT_LABEL_ALIGNLEFT QLabel::AlignLeft
+ #define QT_LABEL_ALIGNRIGHT QLabel::AlignRight
+ #define QT_LABEL_ALIGNHCENTER QLabel::AlignHCenter
+ #define QT_LABEL_ALIGNVCENTER QLabel::AlignVCenter
+ #define QT_LABEL_ALIGNCENTER QLabel::AlignCenter
+ #define QT_LABEL_ALIGNTOP QLabel::AlignTop
+ #define QT_LABEL_ALIGNBOTTOM QLabel::AlignBottom
+ #define QT_LABEL_JUSTIFY QLabel::WordBreak
+#endif
+
+const int align_cod[] = {
+ QT_LABEL_ALIGNLEFT,
+ QT_LABEL_ALIGNRIGHT,
+ QT_LABEL_ALIGNHCENTER,
+ QT_LABEL_ALIGNVCENTER,
+ QT_LABEL_ALIGNCENTER,
+ QT_LABEL_ALIGNTOP,
+ QT_LABEL_ALIGNBOTTOM,
+ QT_LABEL_JUSTIFY,
+ };
+
+#define align_num (sizeof(align_tbl) / sizeof(align_tbl[0]))
+
+// used in $frameStyle & $setFrameStyle
+const char * const frame_tbl[] = {
+ "NoFrame",
+ "Box",
+ "Panel",
+ "WinPanel",
+ "Hline",
+ // shadow styles
+ "Plain",
+ "Raised",
+ "Sunken"
+ };
+
+const int frame_cod[] = {
+ QFrame::NoFrame,
+ QFrame::Box,
+ QFrame::Panel,
+ QFrame::WinPanel,
+ QFrame::HLine,
+ QFrame::Plain,
+ QFrame::Raised,
+ QFrame::Sunken
+ };
+
+#define frame_num (sizeof(frame_tbl) / sizeof(frame_tbl[0]))
+
+
+/*
+ @doc: label
+ @keyterms:
+ label object class, show image
+ @title:
+ label class
+ @type:
+ class
+ @short:
+ Displays text or an image
+ @inherits:
+ [class]object[/class]
+ [class]widget[/class]
+ @description:
+ This widget can be used to display a text or an image. It can
+ have different frame styles and text/image alignment.
+ @functions:
+ !fn: $setText(<text:string>)
+ Sets the text to be displayed by the label.
+ The text can contain limited html tags.
+ See also [classfnc]$text[/classfnc]().
+ !fn: <string> $text()
+ Returns the text currently displayed by the label.
+ See also [classfnc]$setText[/classfnc]().
+ !fn: <integer> $margin()
+ Returns current value of margin for this label (default is 0).
+ See also [classfnc]$setMargin[/classfnc]().
+ !fn: $setMargin(<margin:uint>)
+ Sets margin width / height to <margin>.
+ See also [classfnc]$margin[/classfnc]().
+ !fn: <boolean> $autoResize()
+ Returns 1, if auto-resize ability of the label is enabled.
+ See also [classfnc]$setAutoResize[/classfnc]().
+ !fn: $setAutoResize(<benabled:boolean>)
+ Sets auto-resize ability to enabled (if <benabled> is 1) or disabled
+ (if <benabled> is 0). If auto-resize is enabled, the label will
+ automagically resize itself accordingly to the 'size' of the
+ text it contains.
+ See also [classfnc]$autoResize[/classfnc]().
+ !fn: <string> $alignment()
+ Returns a string containing alignment flags that are set for
+ this label. The flags are separated by commas. An example output
+ could look like this:[br]
+ [pre]Bottom, Right[/pre][br]
+ See [classfnc]$setAlignment[/classfnc]() for explanation of all
+ alignment flags.
+ !fn: $setAlignment(<flag1:string>, <flag2:string>, ...)
+ This function sets alignment flags, given as parameters, for
+ this label. Valid flags are:
+ [pre]
+ Right - Text is aligned to right border[br]
+ Left - Text is aligned to left border[br]
+ Top - Text is aligned to the top border[br]
+ Bottom - Text is aligned to the bottom border[br]
+ HCenter - Text is horizontally centered[br]
+ VCenter - Text is vertically centered[br]
+ Center - Equals HCenter + VCenter[br]
+ WordBreak - Enables automatic word breaking[br]
+ [/pre]
+ It is obvious that you can not set for example [i]Right[/i]
+ and [i]Left[/i] simoultaneously - this will [b]NOT[/b]
+ result in an error message - this will simply not work :)
+ !fn: $clear()
+ Clears the label. Equal to calling
+ [classfnc]$setText[/classfnc]("")
+ !fn: $frameStyle()
+ Returns a string containing this label's frame-style flags,
+ separated with commas. Output from this function could look like
+ this:
+ [pre]Panel, Raised[/pre]
+ See [classfnc]$setFrameStyle[/classfnc]() for a list of all
+ frame-style flags and their explenation.
+ !fn: $setFrameStyle(<flag1>, <flag2>, ...)
+ Sets the frame-style flags to the ones passed as arguments.
+ The flags can either decide of the shape or shadow of the
+ label's frame. Valid shape flags are:[br]
+ [pre]
+ NoFrame - draw no frame. You shouldn't specify a shadow when
+ using this.[br]
+ Box - draws a rectangular box. Its borders can be
+ [i]Raised[/i] or [i]Sunken[/i][br]
+ Panel - draws a rectangular panel which can be
+ [i]Raised[/i] or [i]Sunken[/i][br]
+ WinPanel - similar to [i]Panel[/i], but is more in Win95
+ style[br]
+ Hline - draws a horizontal line that frames nothing (useful as separator)
+ [/pre]
+ Valid shadow flags are:[br]
+ [pre]
+ Plain - no 3D effect (draws using foreground color)[br]
+ Raised - makes the label look like it was raised above the
+ parent widget[br]
+ Sunken - makes the label look like it was "pushed" inside
+ the parent widget[br]
+ [/pre]
+ !fn: $setImage(<image_id>)
+ Sets the image to be displayed on this label.
+ Giving empty argument clears the pixmap[br]
+ See the [doc:image_id]image identifier[/doc] documentation for
+ the explaination of the <image_id> parameter.
+
+*/
+
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_label,"label","widget")
+ KVSO_REGISTER_HANDLER(KviKvsObject_label,"setText",functionSetText)
+ KVSO_REGISTER_HANDLER(KviKvsObject_label,"text", functionText)
+ KVSO_REGISTER_HANDLER(KviKvsObject_label,"margin", functionMargin)
+ KVSO_REGISTER_HANDLER(KviKvsObject_label,"setMargin", functionSetMargin)
+ KVSO_REGISTER_HANDLER(KviKvsObject_label,"autoResize", functionAutoResize)
+ KVSO_REGISTER_HANDLER(KviKvsObject_label,"setAutoResize", functionSetAutoResize)
+ KVSO_REGISTER_HANDLER(KviKvsObject_label,"alignment", functionAlignment)
+ KVSO_REGISTER_HANDLER(KviKvsObject_label,"setAlignment", functionSetAlignment)
+ KVSO_REGISTER_HANDLER(KviKvsObject_label,"clear", functionClear)
+ KVSO_REGISTER_HANDLER(KviKvsObject_label,"frameStyle", functionFrameStyle)
+ KVSO_REGISTER_HANDLER(KviKvsObject_label,"setFrameStyle", functionSetFrameStyle)
+ KVSO_REGISTER_HANDLER(KviKvsObject_label,"setImage", functionSetImage)
+KVSO_END_REGISTERCLASS(KviKvsObject_label)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_label,KviKvsObject_widget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_label)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_label)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_label)
+
+bool KviKvsObject_label::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ setObject(new QLabel(parentScriptWidget(), name()), true);
+ return true;
+}
+
+bool KviKvsObject_label::functionSetText(KviKvsObjectFunctionCall *c)
+{
+ QString szText;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szText)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((QLabel *)widget())->setText(szText);
+ return true;
+}
+bool KviKvsObject_label::functionText(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setString(((QLabel *)widget())->text());
+ return true;
+}
+
+bool KviKvsObject_label::functionSetMargin(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t iMargin;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("margin",KVS_PT_UNSIGNEDINTEGER,0,iMargin)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((QLabel *)widget())->setMargin(iMargin);
+ return true;
+}
+bool KviKvsObject_label::functionMargin(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setInteger(((QLabel *)widget())->margin());
+ return true;
+}
+
+// FIX ME
+bool KviKvsObject_label::functionSetAutoResize(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ #ifdef COMPILE_USE_QT4
+ return true;
+ #else
+ if(widget())
+ ((QLabel *)widget())->setAutoResize(bEnabled);
+ return true;
+ #endif
+}
+bool KviKvsObject_label::functionAutoResize(KviKvsObjectFunctionCall *c)
+{
+ #ifdef COMPILE_USE_QT4
+ if (widget()) c->returnValue()->setBoolean(true);
+ #else
+ if (widget()) c->returnValue()->setBoolean(((QLabel *)widget())->autoResize());
+ #endif
+ return true;
+}
+//
+bool KviKvsObject_label::functionSetAlignment(KviKvsObjectFunctionCall *c)
+{
+ QStringList alignment;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("alignment",KVS_PT_STRINGLIST,KVS_PF_OPTIONAL,alignment)
+ KVSO_PARAMETERS_END(c)
+ if (!widget()) return true;
+ int align,sum=0;
+ for ( QStringList::Iterator it = alignment.begin(); it != alignment.end(); ++it )
+ {
+
+ align = 0;
+ for(unsigned int j = 0; j < align_num; j++)
+ {
+ if(KviQString::equalCI((*it), align_tbl[j]))
+ {
+ align=align_cod[j];
+ break;
+ }
+ }
+ if(align)
+ sum = sum | align;
+ else
+ c->warning(__tr2qs("Unknown alignment: '%Q'"),&(*it));
+
+ }
+ ((QLabel *)widget())->setAlignment(sum);
+ return true;
+}
+bool KviKvsObject_label::functionAlignment(KviKvsObjectFunctionCall *c)
+{
+ int mode = ((QLabel *)widget())->alignment();
+ QString szAlignment="";
+ for(unsigned int i = 0; i < align_num; i++)
+ {
+ if(mode == align_cod[i])
+ {
+ szAlignment=align_tbl[i];
+ break;
+ }
+ }
+ c->returnValue()->setString(szAlignment);
+ return true;
+}
+bool KviKvsObject_label::functionClear(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ ((QLabel *)widget())->clear();
+ return true;
+}
+
+
+bool KviKvsObject_label::functionSetFrameStyle(KviKvsObjectFunctionCall *c)
+{
+
+ QStringList style;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("style",KVS_PT_STRINGLIST,KVS_PF_OPTIONAL,style)
+ KVSO_PARAMETERS_END(c)
+ if (!widget()) return true;
+ int framestyle,sum=0;
+ for ( QStringList::Iterator it = style.begin(); it != style.end(); ++it )
+ {
+ framestyle = 0;
+ for(unsigned int j = 0; j < align_num; j++)
+ {
+ if(KviQString::equalCI((*it), frame_tbl[j]))
+ {
+ framestyle=frame_cod[j];
+ break;
+ }
+ }
+ if(framestyle)
+ sum = sum | framestyle;
+ else
+ c->warning(__tr2qs("Unknown style: '%Q'"),&(*it));
+
+ }
+ ((QLabel *)widget())->setFrameStyle(sum);
+ return true;
+
+
+
+
+}
+bool KviKvsObject_label::functionFrameStyle(KviKvsObjectFunctionCall *c)
+{
+ int mode = ((QLabel *)widget())->frameStyle();
+ QString szStyle="";
+ for(unsigned int i = 0; i < frame_num; i++)
+ {
+ if(mode == frame_cod[i])
+ {
+ szStyle=frame_tbl[i];
+ break;
+ }
+ }
+ c->returnValue()->setString(szStyle);
+ return true;
+}
+bool KviKvsObject_label::functionSetImage(KviKvsObjectFunctionCall *c)
+{
+
+ QString icon;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("icon",KVS_PT_STRING,0,icon)
+ KVSO_PARAMETERS_END(c)
+ if(!widget())return true;
+ QPixmap * pix = g_pIconManager->getImage(icon);
+ if(pix) ((QLabel *)widget())->setPixmap(*pix);
+ return true;
+}
diff --git a/src/modules/objects/class_label.h b/src/modules/objects/class_label.h
new file mode 100644
index 00000000..38fa58a3
--- /dev/null
+++ b/src/modules/objects/class_label.h
@@ -0,0 +1,54 @@
+#ifndef _CLASS_LABEL_H_
+#define _CLASS_LABEL_H_
+//vim: ts=8
+// File : class_label.h
+// Creation date : Mon Sep 18 14:21:48 CEST 2000 by Krzysztof Godlewski
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+
+#include <qlabel.h>
+#include "class_widget.h"
+#include "object_macros.h"
+
+class KviKvsObject_label : public KviKvsObject_widget
+{
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_label)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+ bool functionSetTitle(KviKvsObjectFunctionCall *c);
+ bool functionSetText(KviKvsObjectFunctionCall *c);
+ bool functionText(KviKvsObjectFunctionCall *c);
+ bool functionMargin(KviKvsObjectFunctionCall *c);
+ bool functionSetMargin(KviKvsObjectFunctionCall *c);
+ bool functionAutoResize(KviKvsObjectFunctionCall *c);
+ bool functionSetAutoResize(KviKvsObjectFunctionCall *c);
+ bool functionAlignment(KviKvsObjectFunctionCall *c);
+ bool functionSetAlignment(KviKvsObjectFunctionCall *c);
+ bool functionClear(KviKvsObjectFunctionCall *c);
+ bool functionFrameStyle(KviKvsObjectFunctionCall *c);
+ bool functionSetFrameStyle(KviKvsObjectFunctionCall *c);
+ bool functionSetImage(KviKvsObjectFunctionCall *c);
+};
+#endif // !_CLASS_LABEL_H_
diff --git a/src/modules/objects/class_layout.cpp b/src/modules/objects/class_layout.cpp
new file mode 100644
index 00000000..900b9856
--- /dev/null
+++ b/src/modules/objects/class_layout.cpp
@@ -0,0 +1,274 @@
+//
+// File : class_layout.cpp
+// Creation date : Fri Now 22 2002 00:50:01 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#define _KVI_DEBUG_CHECK_RANGE_
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+
+#include "class_layout.h"
+
+#ifdef COMPILE_USE_QT4
+#define QLAYOUT_AUTO_CONSTRAINT QLayout::SetDefaultConstraint
+#define QLAYOUT_FIXED QLayout::SetFixedSize
+#define QLAYOUT_FREE_RESIZE QLayout::SetNoConstraint
+#define QLAYOUT_MINIMUM QLayout::SetMinimumSize
+#else
+#define QLAYOUT_AUTO_CONSTRAINT QLayout::Auto
+#define QLAYOUT_FIXED QLayout::Fixed
+#define QLAYOUT_FREE_RESIZE QLayout::FreeResize
+#define QLAYOUT_MINIMUM QLayout::Minimum
+#endif
+
+
+/*
+ @doc: layout
+ @keyterms:
+ layout object class, child widgets
+ @title:
+ layout class
+ @type:
+ class
+ @short:
+ Manages child widget geometry
+ @inherits:
+ [class]object[/class]
+ @description:
+ The layout is a geometry management tool for child widgets.
+ You create a layout , give it some widgets to manage and it will layout them
+ automatically.[br]
+ The parent of the layout must be the widget for which child widget geometries have to be managed.
+ A layout is a grid of NxM cells in which you insert child widgets with [classfnc:layout]$addWidget[/classfnc]().[br]
+ Widgets that must span multiple cells can be added to the layout with [classfnc:layout]$addMultiCellWidget[/classfnc]().[br]
+ @functions:
+ !fn: $addWidget(<widget:object widget>,<row:uint>,<column:uint>)
+ Adds a widget to this layout placing it at position <row>,<column> in the grid
+ !fn: $addMultiCellWidget(<widget:object widget>,<start_row:uint>,<end_row:uint>,<start_col:uint>,<end_col:uint>)
+ Adds a widget to this layout spanning multiple grid cells
+ !fn: $setRowStretch(<row:uint>,<stretch:uint>)
+ Sets the stretch value for a particular row of this layout. The <stretch_value>
+ must be a positive integer. The rows with bigger stretch values will take more space
+ in the layout.
+ !fn: $setColStretch(<column:uint>,<stretch:uint>)
+ Sets the stretch value for a particular column in this layout. The <stretch_value>
+ must be a positive integer. The rows with bigger stretch values will take more space
+ in the layout.
+ !fn: $addRowSpacing(<row:uint>,<spacing:uint>)
+ Sets the minimum height of the specified <row> to <spacing> which must be a positive integer
+ !fn: $addColSpacing(<column:uint>,<spacing:uint>)
+ Sets the minimum width of the specigfied <column> to <spacing> which must be a positive integer
+ !fn: $setSpacing(<spacing:uint>)
+ Sets the default spacing of the widgets in pixels
+ !fn: $setMargin(<margin:uint>)
+ Sets the dimension of the layout margin : the distance from the border to the outermost child widget edges.
+ !fn: $setResizeMode(<resize_mode:string>)
+ Sets the resize mode of the parent widget in relation to this layout.
+ <mode> can be one of:[br]
+ -Auto: this is the default[br]
+ -Fixed: the parent widget of this layout is resized to the "sizeHint" value and it cannot be resized by the user.[br]
+ -Minimum: the minimum size of the parent widget of this layout is set to minimumSize() and it cannot be smaller[br]
+ -FreeResize: the parent widget of this layout is not constrained at all[br]
+*/
+
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_layout,"layout","object")
+ KVSO_REGISTER_HANDLER(KviKvsObject_layout,"addWidget", functionAddWidget)
+ KVSO_REGISTER_HANDLER(KviKvsObject_layout,"addMultiCellWidget", functionAddMultiCellWidget)
+ KVSO_REGISTER_HANDLER(KviKvsObject_layout,"setRowStretch", functionSetRowStretch)
+ KVSO_REGISTER_HANDLER(KviKvsObject_layout,"setColStretch", functionSetColStretch)
+ KVSO_REGISTER_HANDLER(KviKvsObject_layout,"addRowSpacing", functionAddRowSpacing)
+ KVSO_REGISTER_HANDLER(KviKvsObject_layout,"addColSpacing", functionAddColSpacing)
+ KVSO_REGISTER_HANDLER(KviKvsObject_layout,"setMargin", functionSetMargin)
+ KVSO_REGISTER_HANDLER(KviKvsObject_layout,"setSpacing", functionSetSpacing)
+ KVSO_REGISTER_HANDLER(KviKvsObject_layout,"setResizeMode", functionSetResizeMode)
+KVSO_END_REGISTERCLASS(KviKvsObject_layout)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_layout,KviKvsObject)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_layout)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_layout)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_layout)
+
+bool KviKvsObject_layout::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ QWidget * w = parentScriptWidget();
+
+ if(!w)
+ {
+ pContext->warning(__tr2qs("The parent of a layout must be a widget!"));
+ return false;
+ }
+ setObject(new QGridLayout(w));
+ return true;
+}
+
+bool KviKvsObject_layout::functionAddWidget(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject * pObject;
+ kvs_hobject_t hObject;
+ kvs_uint_t uCol,uRow;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETER("row",KVS_PT_UNSIGNEDINTEGER,0,uRow)
+ KVSO_PARAMETER("col",KVS_PT_UNSIGNEDINTEGER,0,uCol)
+ KVSO_PARAMETERS_END(c)
+ pObject=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if(!widget())return true;
+ if (!pObject)
+ {
+ c->warning(__tr2qs("Widget parameter is not an object"));
+ return true;
+ }
+ if (!pObject->object())
+ {
+ c->warning(__tr2qs("Widget parameter is not a valid object"));
+ return true;
+ }
+ if(!pObject->object()->isWidgetType())
+ {
+ c->warning(__tr2qs("Can't add a non-widget object"));
+ return true;
+ }
+ ((QGridLayout *)object())->addWidget(((QWidget *)(pObject->object())),uRow,uCol);
+ return true;
+}
+bool KviKvsObject_layout::functionAddMultiCellWidget(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject * pObject;
+ kvs_hobject_t hObject;
+ kvs_uint_t uStartCol,uStartRow,uEndCol,uEndRow;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETER("start_row",KVS_PT_UNSIGNEDINTEGER,0,uStartRow)
+ KVSO_PARAMETER("end_row",KVS_PT_UNSIGNEDINTEGER,0,uEndRow)
+ KVSO_PARAMETER("start_column",KVS_PT_UNSIGNEDINTEGER,0,uStartCol)
+ KVSO_PARAMETER("end_column",KVS_PT_UNSIGNEDINTEGER,0,uEndCol)
+ KVSO_PARAMETERS_END(c)
+ pObject=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if(!widget())return true;
+ if (!pObject)
+ {
+ c->warning(__tr2qs("Widget parameter is not an object"));
+ return true;
+ }
+ if (!pObject->object())
+ {
+ c->warning(__tr2qs("Widget parameter is not a valid object"));
+ return true;
+ }
+ if(!pObject->object()->isWidgetType())
+ {
+ c->warning(__tr2qs("Can't add a non-widget object"));
+ return true;
+ }
+ ((QGridLayout *)object())->addMultiCellWidget(((QWidget *)(pObject->object())),uStartRow,uEndRow,uStartCol,uEndCol);
+ return true;
+}
+bool KviKvsObject_layout::functionSetRowStretch(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uRow,uStretch;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("row",KVS_PT_UNSIGNEDINTEGER,0,uRow)
+ KVSO_PARAMETER("stretch",KVS_PT_UNSIGNEDINTEGER,0,uStretch)
+ KVSO_PARAMETERS_END(c)
+ if(!widget())return true;
+ ((QGridLayout *)object())->setRowStretch(uRow,uStretch);
+ return true;
+}
+bool KviKvsObject_layout::functionSetColStretch(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uCol,uStretch;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("column",KVS_PT_UNSIGNEDINTEGER,0,uCol)
+ KVSO_PARAMETER("stretch",KVS_PT_UNSIGNEDINTEGER,0,uStretch)
+ KVSO_PARAMETERS_END(c)
+ if(!widget())return true;
+ ((QGridLayout *)object())->setColStretch(uCol,uStretch);
+ return true;
+}
+
+bool KviKvsObject_layout::functionSetMargin(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uMargin;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("margin",KVS_PT_UNSIGNEDINTEGER,0,uMargin)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((QGridLayout *)object())->setMargin(uMargin);
+ return true;
+}
+
+bool KviKvsObject_layout::functionSetSpacing(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uSpacing;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("spacing",KVS_PT_UNSIGNEDINTEGER,0,uSpacing)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((QGridLayout *)object())->setSpacing(uSpacing);
+ return true;
+}
+
+
+bool KviKvsObject_layout::functionAddRowSpacing(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uSpacing,uRow;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("row",KVS_PT_UNSIGNEDINTEGER,0,uRow)
+ KVSO_PARAMETER("spacing",KVS_PT_UNSIGNEDINTEGER,0,uSpacing)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((QGridLayout *)object())->addRowSpacing(uRow,uSpacing);
+ return true;
+}
+
+bool KviKvsObject_layout::functionAddColSpacing(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uSpacing,uCol;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("column",KVS_PT_UNSIGNEDINTEGER,0,uCol)
+ KVSO_PARAMETER("spacing",KVS_PT_UNSIGNEDINTEGER,0,uSpacing)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((QGridLayout *)object())->addColSpacing(uCol,uSpacing);
+ return true;
+}
+
+bool KviKvsObject_layout::functionSetResizeMode(KviKvsObjectFunctionCall *c)
+{
+ QString szMode;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("resize_mode",KVS_PT_STRING,0,szMode)
+ KVSO_PARAMETERS_END(c)
+ if(!widget())return true;
+#ifdef COMPILE_USE_QT4
+ QLayout::SizeConstraint r = QLAYOUT_AUTO_CONSTRAINT;
+#else
+ QLayout::ResizeMode r = QLAYOUT_AUTO_CONSTRAINT;
+#endif
+ if(KviQString::equalCI(szMode,"FreeResize")) r = QLAYOUT_FREE_RESIZE;
+ else if(KviQString::equalCI(szMode,"Minimum")) r = QLAYOUT_MINIMUM;
+ else if(KviQString::equalCI(szMode,"Fixed"))r = QLAYOUT_FIXED;
+ else c->warning(__tr2qs("Invalid resize mode defaulting to Auto"));
+ ((QGridLayout *)object())->setResizeMode(r);
+ return true;
+
+}
+
diff --git a/src/modules/objects/class_layout.h b/src/modules/objects/class_layout.h
new file mode 100644
index 00000000..e821316a
--- /dev/null
+++ b/src/modules/objects/class_layout.h
@@ -0,0 +1,52 @@
+#ifndef _CLASS_LAYOUT_H_
+#define _CLASS_LAYOUT_H_
+//
+// File : class_layout.h
+// Creation date : Fri Now 22 2002 00:50:01 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include "kvi_string.h"
+
+#include <qlayout.h>
+#include "object_macros.h"
+
+class KviKvsObject_layout : public KviKvsObject
+{
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_layout)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+ bool functionAddWidget(KviKvsObjectFunctionCall *c);
+ bool functionAddMultiCellWidget(KviKvsObjectFunctionCall *c);
+ bool functionSetRowStretch(KviKvsObjectFunctionCall *c);
+ bool functionSetColStretch(KviKvsObjectFunctionCall *c);
+ bool functionSetMargin(KviKvsObjectFunctionCall *c);
+ bool functionSetSpacing(KviKvsObjectFunctionCall *c);
+ bool functionAddRowSpacing(KviKvsObjectFunctionCall *c);
+ bool functionAddColSpacing(KviKvsObjectFunctionCall *c);
+ bool functionSetResizeMode(KviKvsObjectFunctionCall *c);
+
+
+};
+
+
+#endif //_CLASS_LAYOUT_H_
diff --git a/src/modules/objects/class_lcd.cpp b/src/modules/objects/class_lcd.cpp
new file mode 100644
index 00000000..0f0ba49a
--- /dev/null
+++ b/src/modules/objects/class_lcd.cpp
@@ -0,0 +1,180 @@
+//
+// File : class_lcd.cpp
+// Creation date : Mon Gen 27 14:30:48 CEST 2005 by Tonino Imbesi(Grifisx)
+// and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "class_lcd.h"
+#include "kvi_error.h"
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+
+/*
+ @doc: lcdnumber
+ @keyterms:
+ lcdnumber object class, lcd
+ @title:
+ lcdnumber class
+ @type:
+ class
+ @short:
+ The lcdNumber widget displays a number with LCD-like digits.
+ @inherits:
+
+ @description:
+ It can display a number in just about any size. It can display decimal,
+ hexadecimal, octal or binary numbers.
+ @functions:
+ !fn: $setDisplayStr(<number:string>)
+ Displays the number represented by the string s.
+ !fn: $setDisplayInt(<number:integer>)
+ Sets the displayed value rounded to the nearest integer to number.
+ !fn: $setDisplayDouble(<number:double>)
+ Sets the displayed value to number (double).
+ !fn: $setMode(<mode:string>)
+ Sets the current display mode (number base): valid mode are HEX,BIN,OCT,DEC.
+ !fn: $setSegmentStyles(<style:string>)
+ Sets the style of the lcdnumber, valid styles are: Outline,Filled,Flat.
+ !fn: $setNumDigits(<number:integer>)
+ Sets the lcd number value.
+ !fn: <boolean> $checkOverflow()
+ Returns TRUE if num is too big to be displayed in its entirety;
+ otherwise returns FALSE.
+ !fn: $setSmallDecimalPoint(<bflag:boolean>)
+ Sets the the decimal point style, valid bool values are 1 or 0.
+ !fn: <boolean> $checkOverflow(<number:integer>)
+ Returns 1 (TRUE) if num is too big to be displayed in its entirety; otherwise returns 0 (FALSE).
+*/
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_lcd,"lcdnumber","widget")
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_lcd,"setDisplayStr", functiondisplayStr)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lcd,"setDisplayInt", functiondisplayInt)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lcd,"setDisplayDouble", functiondisplayDouble)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lcd,"setMode", functionsetMode)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lcd,"setSegmentStyle", functionsetSegmentStyle)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lcd,"setNumDigits", functionsetNumDigits)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lcd,"setSmallDecimalPoint",functionsetSmallDecimalPoint)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lcd,"checkOverflow", functioncheckOverflow)
+KVSO_END_REGISTERCLASS(KviKvsObject_lcd)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_lcd,KviKvsObject_widget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_lcd)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_lcd)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_lcd)
+
+bool KviKvsObject_lcd::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ setObject(new QLCDNumber(parentScriptWidget(), name()), true);
+ return true;
+}
+
+bool KviKvsObject_lcd::functiondisplayInt(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iDigit;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("number",KVS_PT_INT,0,iDigit)
+ KVSO_PARAMETERS_END(c)
+ if(widget())((QLCDNumber *)widget())->display((int)iDigit);
+ return true;
+}
+
+bool KviKvsObject_lcd::functiondisplayStr(KviKvsObjectFunctionCall *c)
+{
+ QString szText;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("number",KVS_PT_STRING,0,szText)
+ KVSO_PARAMETERS_END(c)
+ if(widget()) ((QLCDNumber *)widget())->display(szText);
+ return true;
+}
+
+bool KviKvsObject_lcd::functiondisplayDouble(KviKvsObjectFunctionCall *c)
+{
+ kvs_real_t dDigit;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("number",KVS_PT_DOUBLE,0,dDigit)
+ KVSO_PARAMETERS_END(c)
+ if(widget()) ((QLCDNumber *)widget())->display(dDigit);
+ return true;
+}
+bool KviKvsObject_lcd::functionsetMode(KviKvsObjectFunctionCall *c)
+{
+ QString szMode;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("mode",KVS_PT_STRING,0,szMode)
+ KVSO_PARAMETERS_END(c)
+ if(!widget())return true;
+ if(KviQString::equalCI(szMode, "HEX")) ((QLCDNumber *)widget())->setHexMode();
+ else if(KviQString::equalCI(szMode, "DEC")) ((QLCDNumber *)widget())->setDecMode();
+ else if(KviQString::equalCI(szMode, "BIN")) ((QLCDNumber *)widget())->setBinMode();
+ else if(KviQString::equalCI(szMode, "OCT")) ((QLCDNumber *)widget())->setOctMode();
+ else c->warning( __tr2qs("Unknown mode "));
+ return true;
+}
+bool KviKvsObject_lcd::functionsetSegmentStyle(KviKvsObjectFunctionCall *c)
+{
+ QString szStyle;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("style",KVS_PT_STRING,0,szStyle)
+ KVSO_PARAMETERS_END(c)
+ if(!widget())return true;
+ if(KviQString::equalCI(szStyle, "Outline")) ((QLCDNumber *)widget())->setSegmentStyle(QLCDNumber::Outline);
+ else if(KviQString::equalCI(szStyle, "Filled")) ((QLCDNumber *)widget())->setSegmentStyle(QLCDNumber::Filled);
+ else if(KviQString::equalCI(szStyle, "Flat")) ((QLCDNumber *)widget())->setSegmentStyle(QLCDNumber::Flat);
+ else c->warning( __tr2qs("Unknown segment style "));
+ return true;
+}
+bool KviKvsObject_lcd::functionsetNumDigits(KviKvsObjectFunctionCall *c)
+{
+ kvs_real_t digit;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("digit",KVS_PT_DOUBLE,0,digit)
+ KVSO_PARAMETERS_END(c)
+ if(widget()) ((QLCDNumber *)widget())->setNumDigits(digit);
+ return true;
+}
+bool KviKvsObject_lcd::functionsetSmallDecimalPoint(KviKvsObjectFunctionCall *c)
+{
+ bool bFlag;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bflag",KVS_PT_BOOLEAN,0,bFlag)
+ KVSO_PARAMETERS_END(c)
+ if(widget()) ((QLCDNumber *)widget())->setSmallDecimalPoint(bFlag);
+ return true;
+}
+bool KviKvsObject_lcd::functioncheckOverflow(KviKvsObjectFunctionCall *c)
+{
+ kvs_real_t iDigit;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("digit",KVS_PT_DOUBLE,0,iDigit)
+ KVSO_PARAMETERS_END(c)
+ if(widget())c->returnValue()->setBoolean(((QLCDNumber *)widget())->checkOverflow(iDigit));
+ return true;
+}
+
+
diff --git a/src/modules/objects/class_lcd.h b/src/modules/objects/class_lcd.h
new file mode 100644
index 00000000..4976850a
--- /dev/null
+++ b/src/modules/objects/class_lcd.h
@@ -0,0 +1,51 @@
+#ifndef _CLASS_LCD_H_
+#define _CLASS_LCD_H_
+
+// File : class_lcd.h
+// Creation date : Mon Gen 27 14:30:48 CEST 2005 by Tonino Imbesi(Grifisx)
+// and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+
+#include <qlcdnumber.h>
+#include "class_widget.h"
+
+
+class KviKvsObject_lcd : public KviKvsObject_widget
+{
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_lcd)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+ bool functiondisplayStr(KviKvsObjectFunctionCall *c);
+ bool functionsetMode(KviKvsObjectFunctionCall *c);
+ bool functionsetSegmentStyle(KviKvsObjectFunctionCall *c);
+ bool functionsetNumDigits(KviKvsObjectFunctionCall *c);
+ bool functionsetSmallDecimalPoint(KviKvsObjectFunctionCall *c);
+ bool functioncheckOverflow(KviKvsObjectFunctionCall *c);
+ bool functiondisplayInt(KviKvsObjectFunctionCall *c);
+ bool functiondisplayDouble(KviKvsObjectFunctionCall *c);
+};
+
+#endif // !_CLASS_LCD_H_
diff --git a/src/modules/objects/class_lineedit.cpp b/src/modules/objects/class_lineedit.cpp
new file mode 100644
index 00000000..c8ba58ff
--- /dev/null
+++ b/src/modules/objects/class_lineedit.cpp
@@ -0,0 +1,461 @@
+//vim: ts=8
+// File : class_lineedit.cpp
+// Creation date : Wed 20 Sep 2000 04:34:40 CEST by Krzysztof Godlewski
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "kvi_error.h"
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+
+#include "class_lineedit.h"
+
+static const char * mode_tbl[] = {
+ "Normal",
+ "NoEcho",
+ "Password"
+ };
+
+static const int mode_cod[] = {
+ QLineEdit::Normal,
+ QLineEdit::NoEcho,
+ QLineEdit::Password
+ };
+
+#define mode_num (sizeof(mode_tbl) / sizeof(mode_tbl[0]))
+
+
+/*
+ @doc: lineedit
+ @keyterms:
+ lineedit object class, line editor, input
+ @title:
+ lineedit class
+ @type:
+ class
+ @short:
+ Simple line editor for inputting short text
+ @inherits:
+ [class]object[/class]
+ [class]widget[/class]
+ @description:
+ This is a simple, one-line editor usually used for inputting
+ short text like names, phone numbers etc. It can display text
+ in three echo modes (see [classfnc]$setEchoMode[/classfnc]()
+ for details).
+ @functions:
+ !fn: <string> $text()
+ Returns text contained by the widget.[br]
+ See also [classfnc]$setText[/classfnc]().
+ !fn: $setText(<text:string>)
+ Sets editor text to <text>.[br]
+ See also [classfnc]$text[/classfnc]().
+ !fn: $setEchoMode(<echo_mode:string>)
+ Sets the line edit's echo mode. Possible value are:[br]
+ -Normal: display chars as they entered[br]
+ -Noecho : do not display anything[br]
+ -Password : display asterisks instead of the characters actually entered[br]
+ See also [classfnc]$echoMode[/classfnc]().
+ !fn: <string> $echoMode()
+ Return the line edit's echo mode.
+ See also [classfnc]$setEchoMode[/classfnc]().
+ !fn: <integer> $maxLength()
+ Returns the current maximum length of the text that can be typed
+ in the editor.[br]
+ See also [classfnc]$setMaxLength[/classfnc]().
+ !fn: $setMaxLength(<max_lenght:integer>)
+ Sets maximum length of the text that can be typed in the
+ editor.[br]
+ See also [classfnc]$maxLength[/classfnc]().
+ !fn: <boolean> $frame()
+ Returns '1' if the editor is drawn inside a frame, which is 2
+ pixels wide, '0' otherwise.[br]
+ See also [classfnc]$setFrame[/classfnc]().
+ !fn: $setFrame(<bframe:boolean>)
+ Sets editor frame drawing to <bool>.[br]
+ See also [classfnc]$frame[/classfnc]().
+ !fn: <integer> $cursorPosition()
+ Returns current cursor position in the editor.[br]
+ See also [classfnc]$setCursorPosition[/classfnc]().
+ !fn: $setCursorPosition(<index:integer>)
+ Moves the cursor to place pointed by <index>.[br]
+ See also [classfnc]$cursorPosition[/classfnc]().
+ !fn: $selectAll()
+ Selects whole text inside the editor.[br]
+ See also [classfnc]$setSelection[/classfnc](),
+ [classfnc]$cut[/classfnc](), [classfnc]$copy[/classfnc](),
+ [classfnc]$paste[/classfnc]().
+ !fn: $setSelection(<start:integer>, <length:integer>)
+ Selects <length> characters in the editor starting at position
+ <start>.[br]
+ See also [classfnc]$selectAll[/classfnc](),
+ [classfnc]$cut[/classfnc](), [classfnc]$copy[/classfnc](),
+ [classfnc]$paste[/classfnc]().
+ !fn: $copy()
+ Copies selected text in the editor to the clipboard.[br]
+ See also [classfnc]$setSelection[/classfnc](),
+ [classfnc]$cut[/classfnc](), [classfnc]$paste[/classfnc]().
+ !fn: $cut()
+ Cuts selected text from the editor to the clipboard.[br]
+ See also [classfnc]$setSelection[/classfnc](),
+ [classfnc]$copy[/classfnc](), [classfnc]$paste[/classfnc]().
+ !fn: $paste()
+ Pastes text from the clipboard into the editor. The pasted text
+ will start at cursor position.[br]
+ See also [classfnc]$setSelection[/classfnc](),
+ [classfnc]$copy[/classfnc](), [classfnc]$cut[/classfnc]().
+ !fn: $clear()
+ Deletes all text from the editor. Equal to calling [classfnc]$setText[/classfnc]("").
+ !fn: $setDragEnabled(<bEnabled:bool>)
+ With this property user can drag text in the lineedit.
+ !fn: $setReadOnly(<bReadonly:boolean>)
+ Sets the lineedit to read only mode.
+ !fn: $setInputMask(<mask:string>)
+ Sets the validation input mask to inputMask.[br]
+ Example:[br]
+ [br]
+ %esempio->$setInputMask( "+99 99 99 99 99;_" );[br]
+ %esempio->$setInputMask( "000.000.000.000;_" );[br]
+ %esempio->Ip Number Mask.[br]
+ %esempio->setInputMask( ">AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#" );[br]
+ [br]
+ The mask format understands these mask characters:[br]
+ Character Meaning[br]
+ A ASCII alphabetic character required. A-Z, a-z.[br]
+ a ASCII alphabetic character permitted but not required.[br]
+ N ASCII alphanumeric character required. A-Z, a-z, 0-9.[br]
+ n ASCII alphanumeric character permitted but not required.[br]
+ X Any character required.[br]
+ x Any character permitted but not required.[br]
+ 9 ASCII digit required. 0-9.[br]
+ 0 ASCII digit permitted but not required.[br]
+ D ASCII digit required. 1-9.[br]
+ d ASCII digit permitted but not required.[br]
+ # ASCII digit or plus/minus sign permitted but not required.[br]
+ > All following alphabetic characters are uppercased.[br]
+ < All following alphabetic characters are lowercased.[br]
+ ! Switch off case conversion.[br]
+ \ Use \ to escape the special characters listed above to use them as separators.[br]
+ [br]
+ The mask consists of a string of mask characters and separators, optionally[br]
+ followed by a semi-colon and the character used for blanks: the blank characters [br]
+ are always removed from the text after editing. The default blank character is space. [br]
+ !fn: $returnPressedEvent()
+ This function is called by the framework when the enter key is pressed.
+ !fn: $lostFocusEvent()
+ Called when the lineedit lost focus.
+ !fn: $textChangedEvent(<new text:string>)
+ This event is called when the text changed, In $0 there is the new text.
+ @signals:
+ !sg: $returnPressed()
+ This signal is emitted by the default implementation of [classfnc]$returnPressedEvent[/classfnc]().
+ !sg: $lostFocus()
+ This signal is emitted by the default implementation of [classfnc]$lostFocusEvent[/classfnc]().
+ !sg: $textChanged()
+ This signal is emitted by the default implementation of [classfnc]$textChangedEvent[/classfnc]().
+
+*/
+
+
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_lineedit,"lineedit","widget")
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_lineedit,"text", functionText)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lineedit,"setText", functionSetText)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lineedit,"maxLength", functionMaxLength)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lineedit,"setMaxLength", functionSetMaxLength)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lineedit,"frame", functionFrame)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lineedit,"setCursorPosition", functionSetCursorPosition)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lineedit,"cursorPosition", functionCursorPosition)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lineedit,"setFrame", functionSetFrame)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lineedit,"selectAll" , functionSelectAll)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lineedit,"setSelection", functionSetSelection)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lineedit,"copy", functionCopy)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lineedit,"cut", functionCut)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lineedit,"paste", functionPaste)
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_lineedit,"echoMode", functionEchoMode)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lineedit,"setEchoMode", functionSetEchoMode)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lineedit,"clear", functionClear)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lineedit,"setDragEnabled", functionDragAndDrop)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lineedit,"setInputMask", functionSetInputMask)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lineedit,"setReadOnly", functionSetReadOnly)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lineedit,"returnPressedEvent", functionreturnPressedEvent)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lineedit,"lostFocusEvent", functionlostFocusEvent)
+ KVSO_REGISTER_HANDLER(KviKvsObject_lineedit,"textChangedEvent", functiontextChangedEvent)
+
+
+KVSO_END_REGISTERCLASS(KviKvsObject_lineedit)
+
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_lineedit,KviKvsObject_widget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_lineedit)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_lineedit)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_lineedit)
+
+
+bool KviKvsObject_lineedit::init(KviKvsRunTimeContext * pContext,KviKvsVariantList * pParams)
+{
+ setObject(new QLineEdit(parentScriptWidget(),getName()),true);
+ connect(widget(),SIGNAL(returnPressed()),this,SLOT(slotreturnPressed()));
+ connect(widget(),SIGNAL(lostFocus()),this,SLOT(slotlostFocus()));
+ connect(widget(),SIGNAL(textChanged(const QString & )),this,SLOT(slottextChanged(const QString & )));
+ return true;
+}
+
+bool KviKvsObject_lineedit::functionText(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ c->returnValue()->setString(((QLineEdit *)widget())->text());
+ return true;
+}
+
+bool KviKvsObject_lineedit::functionSetText(KviKvsObjectFunctionCall *c)
+{
+ QString szText;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szText)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((QLineEdit *)widget())->setText(szText);
+ return true;
+}
+
+bool KviKvsObject_lineedit::functionMaxLength(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ c->returnValue()->setInteger(((QLineEdit *)widget())->maxLength());
+ return true;
+}
+
+bool KviKvsObject_lineedit::functionSetMaxLength(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t iMaxlen;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("maxlen",KVS_PT_UNSIGNEDINTEGER,0,iMaxlen)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((QLineEdit *)widget())->setMaxLength(iMaxlen);
+ return true;
+}
+
+bool KviKvsObject_lineedit::functionFrame(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ c->returnValue()->setBoolean(((QLineEdit *)widget())->frame());
+ return true;
+}
+
+bool KviKvsObject_lineedit::functionSetFrame(KviKvsObjectFunctionCall *c)
+{
+ bool bFrame;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bframe",KVS_PT_BOOL,0,bFrame)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((QLineEdit *)widget())->setFrame(bFrame);
+ return true;
+}
+
+bool KviKvsObject_lineedit::functionCursorPosition(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ c->returnValue()->setInteger(((QLineEdit *)widget())->cursorPosition());
+ return true;
+}
+
+bool KviKvsObject_lineedit::functionSetCursorPosition(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t iPos;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("position",KVS_PT_UNSIGNEDINTEGER,0,iPos)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((QLineEdit *)widget())->setCursorPosition(iPos);
+ return true;
+}
+
+bool KviKvsObject_lineedit::functionSelectAll(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ ((QLineEdit *)widget())->selectAll();
+ return true;
+}
+
+bool KviKvsObject_lineedit::functionSetSelection(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uStart,uLen;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("start",KVS_PT_UNSIGNEDINTEGER,0,uStart)
+ KVSO_PARAMETER("len",KVS_PT_UNSIGNEDINTEGER,0,uLen)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((QLineEdit *)widget())->setSelection(uStart, uLen);
+ return true;
+}
+
+bool KviKvsObject_lineedit::functionCopy(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ ((QLineEdit *)widget())->copy();
+ return true;
+}
+
+bool KviKvsObject_lineedit::functionCut(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ ((QLineEdit *)widget())->cut();
+ return true;
+}
+
+bool KviKvsObject_lineedit::functionPaste(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ ((QLineEdit *)widget())->paste();
+ return true;
+}
+
+bool KviKvsObject_lineedit::functionEchoMode(KviKvsObjectFunctionCall *c)
+{
+ int mode = ((QLineEdit *)widget())->echoMode();
+ QString szEchomode="";
+ for(unsigned int i = 0; i < mode_num; i++)
+ {
+ if(mode == mode_cod[i])
+ {
+ szEchomode=mode_tbl[i];
+ break;
+ }
+ }
+ c->returnValue()->setString(szEchomode);
+ return true;
+}
+
+bool KviKvsObject_lineedit::functionSetEchoMode(KviKvsObjectFunctionCall *c)
+{
+ QString szMode;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("mode",KVS_PT_STRING,0,szMode)
+ KVSO_PARAMETERS_END(c)
+ if (!widget()) return true;
+ for(unsigned int i = 0; i < mode_num; i++)
+ {
+ if(KviQString::equalCI(szMode, mode_tbl[i]))
+ {
+ ((QLineEdit *)widget())->setEchoMode( \
+ ((QLineEdit::EchoMode)mode_cod[i]));
+ return true;
+ }
+ }
+ c->warning(__tr2qs("Unknown echo mode %Q"),&szMode);
+ return true;
+}
+
+bool KviKvsObject_lineedit::functionClear(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ ((QLineEdit *)widget())->clear();
+ return true;
+}
+
+//-| Grifisx & Noldor |-Start:
+bool KviKvsObject_lineedit::functionDragAndDrop(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((QLineEdit *)widget())->setDragEnabled(bEnabled);
+ return true;
+}
+
+bool KviKvsObject_lineedit::functionSetReadOnly(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bReadonly",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((QLineEdit *)widget())->setReadOnly(bEnabled);
+ return true;
+}
+
+bool KviKvsObject_lineedit::functionSetInputMask(KviKvsObjectFunctionCall *c)
+{
+ QString szMask;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("mask",KVS_PT_STRING,0,szMask)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((QLineEdit *)widget())->setInputMask(szMask);
+ return true;
+}
+
+bool KviKvsObject_lineedit::functionreturnPressedEvent(KviKvsObjectFunctionCall *c)
+{
+
+ emitSignal("returnPressed",c);
+ return true;
+
+}
+
+void KviKvsObject_lineedit::slotreturnPressed()
+{
+ KviKvsVariantList * params = 0;
+ callFunction(this,"returnPressedEvent",params);
+
+}
+// FIND ME
+bool KviKvsObject_lineedit::functionlostFocusEvent(KviKvsObjectFunctionCall *c)
+{
+
+
+ emitSignal("lostFocus",c);
+ return true;
+
+}
+
+void KviKvsObject_lineedit::slotlostFocus()
+{
+ KviKvsVariantList * params = 0;
+ callFunction(this,"lostFocusEvent",params);
+}
+/////
+bool KviKvsObject_lineedit::functiontextChangedEvent(KviKvsObjectFunctionCall *c)
+{
+ emitSignal("textChanged",c,c->params());
+ return true;
+
+}
+
+void KviKvsObject_lineedit::slottextChanged(const QString &text)
+{
+ KviKvsVariantList params(new KviKvsVariant(text));
+ callFunction(this,"textChangedEvent",&params);
+}
+
+
+#include "m_class_lineedit.moc"
diff --git a/src/modules/objects/class_lineedit.h b/src/modules/objects/class_lineedit.h
new file mode 100644
index 00000000..d7036824
--- /dev/null
+++ b/src/modules/objects/class_lineedit.h
@@ -0,0 +1,81 @@
+#ifndef _CLASS_LINEEDIT_H_
+#define _CLASS_LINEEDIT_H_
+//vim: ts=8
+// File : class_lineedit.h
+// Creation date : Wed 20 Sep 2000 04:34:22 CEST by Krzysztof Godlewski
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+
+#include <qlineedit.h>
+#include "class_widget.h"
+
+//#warning "Signals !"
+
+#include "object_macros.h"
+
+class KviKvsObject_lineedit : public KviKvsObject_widget
+{
+ Q_OBJECT
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_lineedit)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+
+
+ bool functionText(KviKvsObjectFunctionCall *c);
+ bool functionSetText(KviKvsObjectFunctionCall *c);
+ bool functionMaxLength(KviKvsObjectFunctionCall *c);
+ bool functionSetMaxLength(KviKvsObjectFunctionCall *c);
+ bool functionFrame(KviKvsObjectFunctionCall *c);
+ bool functionSetCursorPosition(KviKvsObjectFunctionCall *c);
+ bool functionCursorPosition(KviKvsObjectFunctionCall *c);
+ bool functionSetFrame(KviKvsObjectFunctionCall *c);
+ bool functionSelectAll(KviKvsObjectFunctionCall *c);
+ bool functionSetSelection(KviKvsObjectFunctionCall *c);
+ bool functionCopy(KviKvsObjectFunctionCall *c);
+ bool functionCut(KviKvsObjectFunctionCall *c);
+
+ bool functionPaste(KviKvsObjectFunctionCall *c);
+ bool functionEchoMode(KviKvsObjectFunctionCall *c);
+ bool functionSetEchoMode(KviKvsObjectFunctionCall *c);
+ bool functionClear(KviKvsObjectFunctionCall *c);
+ bool functionDragAndDrop(KviKvsObjectFunctionCall *c);
+ bool functionSetInputMask(KviKvsObjectFunctionCall *c);
+ bool functionSetReadOnly(KviKvsObjectFunctionCall *c);
+
+ bool functionreturnPressedEvent(KviKvsObjectFunctionCall *c);
+
+ bool functionlostFocusEvent(KviKvsObjectFunctionCall *c);
+
+ bool functiontextChangedEvent(KviKvsObjectFunctionCall *c);
+
+protected slots:
+ void slotreturnPressed();
+ void slotlostFocus();
+ void slottextChanged(const QString &);
+
+};
+
+
+#endif // ! _CLASS_LINEEDIT_H_
diff --git a/src/modules/objects/class_list.cpp b/src/modules/objects/class_list.cpp
new file mode 100644
index 00000000..2d6c9e84
--- /dev/null
+++ b/src/modules/objects/class_list.cpp
@@ -0,0 +1,392 @@
+//=============================================================================
+//
+// File : class_list.cpp
+// Creation date : Wed Sep 09 2000 21:07:55 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//============================================================================
+
+#include "kvi_debug.h"
+
+#include "kvi_malloc.h"
+#include "kvi_locale.h"
+
+#include "class_list.h"
+
+#include <stdlib.h>
+
+
+/*
+ @doc: list
+ @keyterms:
+ list object class, sorted list
+ @title:
+ list class
+ @type:
+ class
+ @short:
+ Abstracts a double linked list of strings
+ @inherits:
+ [class]object[/class]
+ @description:
+
+
+ This object class abstracts a double linked list of strings.
+ You can insert/remove items by zero based position, at the end (tail) or at the
+ beginning (head). The list incorporates an efficient iteration
+ method by using the [classfnc:list]$moveFirst[/classfnc](),[classfnc:list]$moveLast[/classfnc](),
+ [classfnc:list]$moveNext[/classfnc](),[classfnc:list]$movePrev[/classfnc](),
+ [classfnc:list]$current[/classfnc]() and [classfnc:list]$eof[/classfnc]() functions.
+ @functions:
+ !fn: <integer> $count()
+ Returns the number of items in the list
+
+ !fn: <boolean> $isEmpty()
+ Returns $true if the list is empty, $false otherwise.
+
+ !fn: $clear()
+ Removes all the items from the list.This is the same as
+ [classfnc:list]$removeAll[/classfnc]().
+
+ !fn: $removeAll()
+ Removes all the items from the list. This is the same as
+ [classfnc:list]$clear[/classfnc]().
+
+ !fn: $append(<item:variant>)
+ Inserts the <item> at the end (tail) of the list.
+
+ !fn: $prepend(<item:variant>)
+ Inserts the <item> at the beginning (head) of the list.
+
+ !fn: $insert(<index:uint>,<item:variant>)
+ Inserts the <item> at zero-based position <index> in the list.
+ If <index> is greater or equal to [classfnc:list]$count[/classfnc]()
+ then the item is simply appended to the end of the list.
+
+ !fn: $add(<index:uint>,<item:variant>)
+ This is exactly the same as [classfnc:list]$insert[/classfnc]().
+
+ !fn: <variant> $item(<index:uint>)
+ Returns the item at zero-based <index>. If <index> is greater
+ or equal to [classfnc:list]$count[/classfnc]() (beyond the end of the list)
+ then [fnc]$nothing[/fnc] is returned.
+
+ !fn: <boolean> $remove(<index:uint>)
+ Removes the item at zero-based <index>. Returns $true
+ if the item was succesfully removed and $false otherwise (i.e. <index>
+ pointed beyond the end of the list).
+
+ !fn: <boolean> $removeFirst()
+ Removes the first item from the list. Returns $true
+ if the item was succesfully removed (the list was not empty)
+ and $false otherwise.
+
+ !fn: <boolean> $removeLast()
+ Removes the last item from the list. Returns $true
+ if the item was succesfully removed (the list was not empty)
+ and $false otherwise.
+
+ !fn: <boolean> $removeCurrent()
+ Removes the current item from the list. Returns $true
+ if the item was succesfully removed or $false otherwise.
+ Invalidates any iteration operation.
+
+ !fn: <boolean> $moveFirst()
+ Moves the iterator to the first item in the list and returns
+ $true if the move was succesfull (i.e., the list is not empty)
+ and $false otherwise.
+
+ !fn: <boolean> $moveLast()
+ Moves the iterator to the last item in the list and returns
+ $true if the move was succesfull (i.e., the list is not empty)
+ and $false otherwise.
+
+ !fn: <boolean> $movePrev()
+ Moves the iterator to the previous item and returns $true
+ if the move was succesfull (i.e., there IS a previous item)
+ and $false otherwise.
+
+ !fn: <boolean> $moveNext()
+ Moves the iterator to the next item and returns $true
+ if the move was succesfull (i.e., there IS a next item)
+ and $false otherwise.
+
+ !fn: <boolean> $eof()
+ Returns $true if the iterator points to a valid
+ item in the list (and thus [classfnc:list]$current[/classfnc]()
+ would return a valid value) and $false otherwise.
+
+ !fn: <boolean> $current()
+ Returns the item pointed by the current iterator
+ or [fnc]$nothing[/fnc] is the iterator is not valid (points
+ beyond the end of the list).
+*/
+
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_list,"list","object")
+ KVSO_REGISTER_HANDLER(KviKvsObject_list,"count",function_count)
+ KVSO_REGISTER_HANDLER(KviKvsObject_list,"isEmpty",function_isEmpty)
+ KVSO_REGISTER_HANDLER(KviKvsObject_list,"clear",function_clear)
+ KVSO_REGISTER_HANDLER(KviKvsObject_list,"removeAll",function_clear)
+ KVSO_REGISTER_HANDLER(KviKvsObject_list,"append",function_append)
+ KVSO_REGISTER_HANDLER(KviKvsObject_list,"prepend",function_prepend)
+ KVSO_REGISTER_HANDLER(KviKvsObject_list,"insert",function_insert)
+ KVSO_REGISTER_HANDLER(KviKvsObject_list,"add",function_insert)
+ KVSO_REGISTER_HANDLER(KviKvsObject_list,"at",function_at)
+ KVSO_REGISTER_HANDLER(KviKvsObject_list,"item",function_at)
+ KVSO_REGISTER_HANDLER(KviKvsObject_list,"remove",function_remove)
+ KVSO_REGISTER_HANDLER(KviKvsObject_list,"removeFirst",function_removeFirst)
+ KVSO_REGISTER_HANDLER(KviKvsObject_list,"removeLast",function_removeLast)
+ KVSO_REGISTER_HANDLER(KviKvsObject_list,"removeCurrent",function_removeCurrent)
+ KVSO_REGISTER_HANDLER(KviKvsObject_list,"moveFirst",function_moveFirst)
+ KVSO_REGISTER_HANDLER(KviKvsObject_list,"moveNext",function_moveNext)
+ KVSO_REGISTER_HANDLER(KviKvsObject_list,"movePrev",function_movePrev)
+ KVSO_REGISTER_HANDLER(KviKvsObject_list,"moveLast",function_moveLast)
+ KVSO_REGISTER_HANDLER(KviKvsObject_list,"sort",function_sort)
+ KVSO_REGISTER_HANDLER(KviKvsObject_list,"eof",function_eof)
+ KVSO_REGISTER_HANDLER(KviKvsObject_list,"current",function_current)
+KVSO_END_REGISTERCLASS(KviKvsObject_list)
+
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_list,KviKvsObject)
+ m_pDataList = new KviPointerList<KviKvsVariant>;
+ m_pDataList->setAutoDelete(true);
+KVSO_END_CONSTRUCTOR(KviKvsObject_list)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_list)
+ delete m_pDataList;
+ m_pDataList = 0;
+KVSO_END_CONSTRUCTOR(KviKvsObject_list)
+
+bool KviKvsObject_list::function_current(KviKvsObjectFunctionCall *c)
+{
+ if(!m_pDataList)
+ {
+ c->returnValue()->setNothing();
+ return true;
+ }
+ KviKvsVariant * v = m_pDataList->current();
+ if(v)c->returnValue()->copyFrom(*v);
+ else c->returnValue()->setNothing();
+ return true;
+}
+
+bool KviKvsObject_list::function_eof(KviKvsObjectFunctionCall *c)
+{
+ if(!m_pDataList)
+ {
+ c->returnValue()->setBoolean(true);
+ return true;
+ }
+ c->returnValue()->setBoolean(m_pDataList->current() != 0);
+ return true;
+}
+
+bool KviKvsObject_list::function_moveLast(KviKvsObjectFunctionCall *c)
+{
+ if(!m_pDataList)
+ {
+ c->returnValue()->setBoolean(false);
+ return true;
+ }
+ c->returnValue()->setBoolean(m_pDataList->last() != 0);
+ return true;
+}
+
+bool KviKvsObject_list::function_movePrev(KviKvsObjectFunctionCall *c)
+{
+ if(!m_pDataList)
+ {
+ c->returnValue()->setBoolean(false);
+ return true;
+ }
+ c->returnValue()->setBoolean(m_pDataList->prev() != 0);
+ return true;
+}
+
+bool KviKvsObject_list::function_moveNext(KviKvsObjectFunctionCall *c)
+{
+ if(!m_pDataList)
+ {
+ c->returnValue()->setBoolean(false);
+ return true;
+ }
+ c->returnValue()->setBoolean(m_pDataList->next() != 0);
+ return true;
+}
+
+bool KviKvsObject_list::function_moveFirst(KviKvsObjectFunctionCall *c)
+{
+ if(!m_pDataList)
+ {
+ c->returnValue()->setBoolean(false);
+ return true;
+ }
+ c->returnValue()->setBoolean(m_pDataList->first() != 0);
+ return true;
+}
+
+bool KviKvsObject_list::function_removeLast(KviKvsObjectFunctionCall *c)
+{
+ if(!m_pDataList)
+ {
+ c->returnValue()->setBoolean(false);
+ return true;
+ }
+ c->returnValue()->setBoolean(m_pDataList->removeLast());
+ return true;
+}
+
+bool KviKvsObject_list::function_removeCurrent(KviKvsObjectFunctionCall *c)
+{
+ if(!m_pDataList)
+ {
+ c->returnValue()->setBoolean(false);
+ return true;
+ }
+ if(m_pDataList->current())
+ {
+ m_pDataList->removeCurrent();
+ c->returnValue()->setBoolean(true);
+ } else {
+ c->returnValue()->setBoolean(false);
+ }
+ return true;
+}
+
+bool KviKvsObject_list::function_removeFirst(KviKvsObjectFunctionCall *c)
+{
+ if(!m_pDataList)
+ {
+ c->returnValue()->setBoolean(false);
+ return true;
+ }
+ c->returnValue()->setBoolean(m_pDataList->removeFirst());
+ return true;
+}
+
+bool KviKvsObject_list::function_remove(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uIndex;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("index",KVS_PT_UINT,0,uIndex)
+ KVSO_PARAMETERS_END(c)
+ if(!m_pDataList)
+ {
+ c->returnValue()->setBoolean(false);
+ return true;
+ }
+ c->returnValue()->setBoolean(m_pDataList->remove(uIndex));
+ return true;
+}
+
+bool KviKvsObject_list::function_at(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uIndex;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("index",KVS_PT_UINT,0,uIndex)
+ KVSO_PARAMETERS_END(c)
+ if(!m_pDataList)
+ {
+ c->returnValue()->setNothing();
+ return true;
+ }
+ KviKvsVariant * v = m_pDataList->at(uIndex);
+ if(v)c->returnValue()->copyFrom(*v);
+ else c->returnValue()->setNothing();
+ return true;
+}
+
+bool KviKvsObject_list::function_insert(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uIndex;
+ KviKvsVariant * pVar;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("index",KVS_PT_UINT,0,uIndex)
+ KVSO_PARAMETER("item",KVS_PT_VARIANT,0,pVar)
+ KVSO_PARAMETERS_END(c)
+ if(!m_pDataList)return true;
+ m_pDataList->insert(uIndex,new KviKvsVariant(*pVar));
+ return true;
+}
+
+bool KviKvsObject_list::function_prepend(KviKvsObjectFunctionCall *c)
+{
+ KviKvsVariant * pVar;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("item",KVS_PT_VARIANT,0,pVar)
+ KVSO_PARAMETERS_END(c)
+ if(!m_pDataList)return true;
+ m_pDataList->prepend(new KviKvsVariant(*pVar));
+ return true;
+}
+
+bool KviKvsObject_list::function_append(KviKvsObjectFunctionCall *c)
+{
+ KviKvsVariant * pVar;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("item",KVS_PT_VARIANT,0,pVar)
+ KVSO_PARAMETERS_END(c)
+ if(!m_pDataList)return true;
+ m_pDataList->append(new KviKvsVariant(*pVar));
+ return true;
+}
+
+bool KviKvsObject_list::function_clear(KviKvsObjectFunctionCall *c)
+{
+ if(!m_pDataList)return true;
+ m_pDataList->clear();
+ return true;
+}
+
+inline int kvi_compare(const KviKvsVariant * p1,const KviKvsVariant * p2)
+{
+ return p1->compare(p2);
+}
+
+bool KviKvsObject_list::function_sort(KviKvsObjectFunctionCall *c)
+{
+ if(!m_pDataList)return true;
+ m_pDataList->sort();
+ return true;
+}
+
+bool KviKvsObject_list::function_isEmpty(KviKvsObjectFunctionCall *c)
+{
+ if(!m_pDataList)
+ {
+ c->returnValue()->setBoolean(true);
+ return true;
+ }
+ c->returnValue()->setBoolean(m_pDataList->isEmpty());
+ return true;
+}
+
+bool KviKvsObject_list::function_count(KviKvsObjectFunctionCall *c)
+{
+ if(!m_pDataList)
+ {
+ c->returnValue()->setInteger(0);
+ return true;
+ }
+ c->returnValue()->setInteger(m_pDataList->count());
+ return true;
+}
+
diff --git a/src/modules/objects/class_list.h b/src/modules/objects/class_list.h
new file mode 100644
index 00000000..41d2816e
--- /dev/null
+++ b/src/modules/objects/class_list.h
@@ -0,0 +1,64 @@
+#ifndef _CLASS_LIST_H_
+#define _CLASS_LIST_H_
+//=========================================================================================
+//
+// File : class_list.h
+// Creation date : Wed Sep 09 2000 21:07:01 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=========================================================================================
+
+#include "kvi_settings.h"
+#include "kvi_string.h"
+#include "kvi_pointerlist.h"
+#include "kvi_kvs_variant.h"
+#include "object_macros.h"
+
+
+class KviKvsObject_list : public KviKvsObject
+{
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_list)
+protected:
+ KviPointerList<KviKvsVariant> * m_pDataList;
+protected:
+ KviPointerList<KviKvsVariant> * dataList() const { return m_pDataList; };
+public:
+ bool function_count(KviKvsObjectFunctionCall *c);
+ bool function_isEmpty(KviKvsObjectFunctionCall *c);
+ bool function_clear(KviKvsObjectFunctionCall *c);
+ bool function_append(KviKvsObjectFunctionCall *c);
+ bool function_prepend(KviKvsObjectFunctionCall *c);
+ bool function_insert(KviKvsObjectFunctionCall *c);
+ bool function_at(KviKvsObjectFunctionCall *c);
+ bool function_remove(KviKvsObjectFunctionCall *c);
+ bool function_removeFirst(KviKvsObjectFunctionCall *c);
+ bool function_removeLast(KviKvsObjectFunctionCall *c);
+ bool function_removeCurrent(KviKvsObjectFunctionCall *c);
+ bool function_moveFirst(KviKvsObjectFunctionCall *c);
+ bool function_moveNext(KviKvsObjectFunctionCall *c);
+ bool function_movePrev(KviKvsObjectFunctionCall *c);
+ bool function_moveLast(KviKvsObjectFunctionCall *c);
+ bool function_eof(KviKvsObjectFunctionCall *c);
+ bool function_current(KviKvsObjectFunctionCall *c);
+ bool function_sort(KviKvsObjectFunctionCall *c);
+};
+
+
+#endif //_CLASS_LIST_H_
diff --git a/src/modules/objects/class_listbox.cpp b/src/modules/objects/class_listbox.cpp
new file mode 100644
index 00000000..111f7952
--- /dev/null
+++ b/src/modules/objects/class_listbox.cpp
@@ -0,0 +1,390 @@
+//vim: ts=8
+// File : class_listbox.cpp
+// Creation date : Sat Oct 2 03:40:28 CET 2004 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "kvi_error.h"
+#include "kvi_locale.h"
+#include "kvi_debug.h"
+
+
+#include "kvi_tal_listbox.h"
+
+#include "class_list.h"
+#include "class_listbox.h"
+
+/*
+ @doc: listbox
+ @keyterms:
+ listbox object class
+ @title:
+ listbox class
+ @type:
+ class
+ @short:
+ A widget displaying a list of items
+ @inherits:
+ [class]object[/class]
+ [class]widget[/class]
+ @description:
+ The listbox class is a widget displaying a list of string items.[br]
+ The listbox can operate in four selection modes: single, multi, extended
+ and none. In the "single" mode only one item can be selected at a time
+ and that item is also the current one. In the "multi" mode multiple
+ items can be selected and unselected and the current item may or may not
+ be one of the selected items. In the "extended" mode multiple items
+ can be selected but they must be selected in a single mouse action
+ or by keeping the shift button pressed while clicking on the item.
+ In this mode the current item is always one of the selected items.[br]
+ In the "none" mode no items can be selected and the current item
+ may be any item in the list.[br]
+ In most situations you will operate the listbox in "single" mode
+ (and this is the default mode set at widget creation).
+ @functions:
+ !fn: $setSelectionMode(<selection_mode:string>)
+ Sets the current selection mode specified by the parameter <mode>
+ that can be one of the following string:[br]
+ "single" : only one item can be selected at a time[br]
+ "multi" : multiple items can be selected at a time[br]
+ "extended" : multiple items can be selected but only in a single mouse interaction[br]
+ "none" : no items can be selected[br]
+ The default mode is "single"
+ !fn: <string> $selectionMode()
+ Returns the current selection mode
+ !fn: $insertItem(<text:string>, <index:uint>)
+ Inserts a text item at position <index>. If index is negative or
+ not specified the item is appended.
+ !fn: $changeItem(<text:string>, <index:uint>)
+ Changes text of item at <index> to <text>.
+ !fn: $removeItem(<index:uindex>)
+ Removes item at given index.
+ !fn: $count()
+ Returns number of items in the widget.
+ !fn: <string> $currentText()
+ Returns the text of the currently selected item.
+ !fn: <integer> $currentItem()
+ Returns index of current item or -1 if no item is current.
+ !fn: $textAt(<index:integer>)
+ Returns item at given index.
+ !fn: $setCurrentItem(<index:integer>)
+ Sets the current listbox item.
+ !fn: $clear()
+ Removes all the items
+ !fn: <boolean> $isSelected(<index:integer>)
+ Returns 1 if the item at <index> is selected and 0 otherwise
+ !fn: $setSelected(<index:integer>,<bSelected:boolean>)
+ Changes the selection status of the item at <index> to the value
+ specified by <bSelected>. If <bSelected> is 1 the item is selected,
+ if <bSelected> is 0 the item is unselected.
+ !fn: $selectionChangeEvent()
+ This function is called by KVIrc when the selection in the listbox changes.
+ !fn: $currentItemChangeEvent()
+ This function is called by KVIrc when the current item changes.
+ !fn: <index:integer> $onItemEvent()
+ This function is called by KVIrc when the current item pointed by the mouse changes and gives in $0 the item index.
+ !fn: <array:x,y,width,height> $itemRect(<item:index>)
+ Returns the rectangle on the screen that item occupies, or an invalid rectangle if item is 0 or is not currently visible.
+
+ @signals:
+ !sg: <string> $currentItemChange()
+ This signal is emitted by the default implementation of [classfnc]$currentItemChangeEvent[/classfnc]().[br]
+ !sg: <string> $onItem()
+ This signal is emitted by the default implementation of [classfnc]$onItemEvent[/classfnc]().[br]
+
+ */
+
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_listbox,"listbox","widget")
+ KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"insertItem", functioninsertItem)
+ KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"changeItem", functionchangeItem)
+ KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"removeItem", functionremoveItem)
+ KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"clear", functionclear)
+ KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"count", functioncount)
+ KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"currentText", functioncurrentText)
+ KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"currentItem", functioncurrentItem)
+ KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"textAt", functiontextAt);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"itemAt", functionitemAt);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"itemRect", functionitemRect);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"setCurrentItem", functionsetCurrentItem);
+
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"setSelectionMode",functionsetSelectionMode);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"selectionMode",functionselectionMode);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"setSelected",functionsetSelected);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"isSelected",functionisSelected);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"currentItemChangeEvent",functioncurrentItemChangeEvent);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"onItemEvent",functiononItemEvent);
+
+
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_listbox,"selectionChangeEvent")
+
+
+KVSO_END_REGISTERCLASS(KviKvsObject_listbox)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_listbox,KviKvsObject_widget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_listbox)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_listbox)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_listbox)
+
+bool KviKvsObject_listbox::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ KviTalListBox * b = new KviTalListBox(parentScriptWidget());
+ b->setSelectionMode(KviTalListBox::Single);
+ connect(b,SIGNAL(selectionChanged()),this,SLOT(selectionChanged()));
+ connect(b,SIGNAL(currentChanged(KviTalListBoxItem *)),this,SLOT(currentItemChanged(KviTalListBoxItem *)));
+
+ connect(b,SIGNAL(onItem(KviTalListBoxItem *)),this,SLOT(onItem(KviTalListBoxItem *)));
+
+ setObject(b,true);;
+ return true;
+}
+
+bool KviKvsObject_listbox::functioninsertItem(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iIndex;
+ QString szItem;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szItem)
+ KVSO_PARAMETER("index",KVS_PT_INT,KVS_PF_OPTIONAL,iIndex)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((KviTalListBox *)widget())->insertItem(szItem, iIndex);
+ return true;
+}
+bool KviKvsObject_listbox::functionclear(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) ((KviTalListBox *)widget())->clear();
+ return true;
+}
+bool KviKvsObject_listbox::functionchangeItem(KviKvsObjectFunctionCall *c)
+{
+
+ kvs_uint_t uIndex,cnt;
+ QString szText;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szText)
+ KVSO_PARAMETER("index",KVS_PT_UNSIGNEDINTEGER,0,uIndex)
+ KVSO_PARAMETERS_END(c)
+ if(!widget()) return true;
+ if (szText.isEmpty()) c->warning(__tr2qs("No string parameter given - using empty string"));
+ if(uIndex >= (cnt = ((KviTalListBox *)widget())->count()))
+ {
+ c->warning(__tr2qs("Item index [%d] is too big - defaulting to " \
+ "$count() - 1 [%d]"), uIndex, cnt);
+ uIndex = cnt - 1;
+ }
+
+ ((KviTalListBox *)widget())->changeItem(szText, uIndex);
+
+ return true;
+
+}
+bool KviKvsObject_listbox::functionremoveItem(KviKvsObjectFunctionCall *c)
+{
+
+ kvs_uint_t uIndex,cnt;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("index",KVS_PT_UNSIGNEDINTEGER,0,uIndex)
+ KVSO_PARAMETERS_END(c)
+ if(!widget()) return true;
+ if(uIndex >= (cnt = ((KviTalListBox *)widget())->count()))
+ {
+ c->warning(__tr2qs("Item index [%d] is too big - defaulting to " \
+ "$count() - 1 [%d]"), uIndex, cnt);
+ uIndex = cnt - 1;
+ }
+
+ ((KviTalListBox *)widget())->removeItem(uIndex);
+
+ return true;
+
+}
+
+bool KviKvsObject_listbox::functioncount(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setInteger(((KviTalListBox *)widget())->count());
+ return true;
+}
+bool KviKvsObject_listbox::functioncurrentText(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setString(((KviTalListBox *)widget())->currentText().local8Bit().data());
+ return true;
+}
+bool KviKvsObject_listbox::functioncurrentItem(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setInteger(((KviTalListBox *)widget())->currentItem());
+ return true;
+}
+
+bool KviKvsObject_listbox::functiontextAt(KviKvsObjectFunctionCall *c)
+{
+
+ kvs_uint_t uIndex;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("index",KVS_PT_UNSIGNEDINTEGER,0,uIndex)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ c->returnValue()->setString(((KviTalListBox *)widget())->text(uIndex));
+ return true;
+}
+bool KviKvsObject_listbox::functionsetCurrentItem(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uIndex;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("index",KVS_PT_UNSIGNEDINTEGER,0,uIndex)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((KviTalListBox *)widget())->setCurrentItem(uIndex);
+ return true;
+}
+bool KviKvsObject_listbox::functionsetSelectionMode(KviKvsObjectFunctionCall *c)
+{
+ QString szMode;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("selection_mode",KVS_PT_STRING,0,szMode)
+ KVSO_PARAMETERS_END(c)
+ if(!widget()) return true;
+ KviTalListBox::SelectionMode iMode = KviTalListBox::Single;
+
+ if(KviQString::equalCI(szMode,"single")) iMode = KviTalListBox::Single;
+
+ else if(KviQString::equalCI(szMode,"multi")) iMode = KviTalListBox::Multi;
+
+ else if(KviQString::equalCI(szMode,"extended")) iMode = KviTalListBox::Extended;
+
+ else if(KviQString::equalCI(szMode,"none")) iMode = KviTalListBox::NoSelection;
+
+ else c->warning(__tr2qs("Invalid selection mode '%Q' assuming single"),&szMode);
+ ((KviTalListBox *)widget())->setSelectionMode(iMode);
+
+ return true;
+}
+bool KviKvsObject_listbox::functionselectionMode(KviKvsObjectFunctionCall *c)
+{
+
+ if(!widget()) return true;
+ switch(((KviTalListBox *)widget())->selectionMode())
+ {
+ case KviTalListBox::Single: c->returnValue()->setString("single"); break;
+ case KviTalListBox::Multi: c->returnValue()->setString("multi"); break;
+ case KviTalListBox::Extended: c->returnValue()->setString("extended"); break;
+ case KviTalListBox::NoSelection: c->returnValue()->setString("none"); break;
+ default: c->returnValue()->setString("single"); break;
+ }
+ return true;
+}
+
+bool KviKvsObject_listbox::functionisSelected(KviKvsObjectFunctionCall *c)
+{
+
+ kvs_uint_t uIndex;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("index",KVS_PT_UNSIGNEDINTEGER,0,uIndex)
+ KVSO_PARAMETERS_END(c)
+ if(widget())c->returnValue()->setBoolean(((KviTalListBox *)widget())->isSelected(uIndex));
+ return true;
+}
+bool KviKvsObject_listbox::functionsetSelected(KviKvsObjectFunctionCall *c)
+{
+ bool bSel;
+ kvs_uint_t uIndex;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("index",KVS_PT_UNSIGNEDINTEGER,0,uIndex)
+ KVSO_PARAMETER("benabled",KVS_PT_BOOLEAN,0,bSel)
+ KVSO_PARAMETERS_END(c)
+ if(widget()) ((KviTalListBox *)widget())->setSelected(uIndex,bSel);
+ return true;
+}
+bool KviKvsObject_listbox::functionitemAt(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uX,uY;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("uX",KVS_PT_UNSIGNEDINTEGER,0,uX)
+ KVSO_PARAMETER("uY",KVS_PT_UNSIGNEDINTEGER,0,uY)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ c->returnValue()->setInteger(((KviTalListBox *)widget())->index(((KviTalListBox *)widget())->itemAt(QPoint(uX,uY))));
+ return true;
+}
+
+bool KviKvsObject_listbox::functioncurrentItemChangeEvent(KviKvsObjectFunctionCall *c)
+{
+ emitSignal("currentItemChange",c,c->params());
+
+ return true;
+}
+
+void KviKvsObject_listbox::selectionChanged()
+{
+ KviKvsVariantList *params=0;
+ callFunction(this,"selectionChangeEvent",0,0);
+}
+
+void KviKvsObject_listbox::currentItemChanged(KviTalListBoxItem *item)
+{
+ if (!item) callFunction(this,"currentItemChangeEvent",0,0);
+ else
+ {
+ KviKvsVariantList params(new KviKvsVariant(item->text()));
+ callFunction(this,"currentItemChangeEvent",0,&params);
+ }
+
+}
+bool KviKvsObject_listbox::functiononItemEvent(KviKvsObjectFunctionCall *c)
+{
+ emitSignal("onItem",c,c->params());
+
+ return true;
+}
+
+void KviKvsObject_listbox::onItem(KviTalListBoxItem *item)
+{
+ KviTalListBox *lbx = (KviTalListBox *)(item->listBox());
+ KviKvsVariantList params(new KviKvsVariant((kvs_int_t)lbx->index(item)));
+ callFunction(this,"onItemEvent",0,&params);
+}
+
+
+bool KviKvsObject_listbox::functionitemRect(KviKvsObjectFunctionCall *c)
+{
+kvs_uint_t uIndex;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("uIndex",KVS_PT_UNSIGNEDINTEGER,0,uIndex)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ {
+ QRect rect=((KviTalListBox *)widget())->itemRect(((KviTalListBox *)widget())->item(uIndex));
+ KviKvsArray * a = new KviKvsArray();
+ a->set(0,new KviKvsVariant((kvs_int_t)rect.left()));
+ a->set(1,new KviKvsVariant((kvs_int_t)rect.top()));
+ a->set(2,new KviKvsVariant((kvs_int_t)rect.width()));
+ a->set(3,new KviKvsVariant((kvs_int_t)rect.height()));
+ c->returnValue()->setArray(a);
+ }
+ return true;
+}
+
+
+#include "m_class_listbox.moc"
diff --git a/src/modules/objects/class_listbox.h b/src/modules/objects/class_listbox.h
new file mode 100644
index 00000000..471337fd
--- /dev/null
+++ b/src/modules/objects/class_listbox.h
@@ -0,0 +1,70 @@
+#ifndef _CLASS_LISTBOX_H_
+#define _CLASS_LISTBOX_H_
+
+//vim: ts=8
+// File : class_listbox.h
+// Creation date : Sat Oct 2 03:40:28 CET 2004 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "class_widget.h"
+
+class KviTalListBox;
+class KviTalListBoxItem;
+
+#include "object_macros.h"
+
+class KviKvsObject_listbox: public KviKvsObject_widget
+{
+ Q_OBJECT
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_listbox)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+
+ bool functioninsertItem(KviKvsObjectFunctionCall *c);
+ bool functionchangeItem(KviKvsObjectFunctionCall *c);
+ bool functionremoveItem(KviKvsObjectFunctionCall *c);
+ bool functioncount(KviKvsObjectFunctionCall *c);
+ bool functioncurrentText(KviKvsObjectFunctionCall *c);
+ bool functioncurrentItem(KviKvsObjectFunctionCall *c);
+ bool functiontextAt(KviKvsObjectFunctionCall *c);
+ bool functionsetCurrentItem(KviKvsObjectFunctionCall *c);
+ bool functionclear(KviKvsObjectFunctionCall *c);
+ bool functionsetSelectionMode(KviKvsObjectFunctionCall *c);
+ bool functionselectionMode(KviKvsObjectFunctionCall *c);
+ bool functionsetSelected(KviKvsObjectFunctionCall *c);
+ bool functionisSelected(KviKvsObjectFunctionCall *c);
+ bool functioncurrentItemChangeEvent(KviKvsObjectFunctionCall *c);
+ bool functiononItemEvent(KviKvsObjectFunctionCall *c);
+
+ bool functionitemAt(KviKvsObjectFunctionCall *c);
+ bool functionitemRect(KviKvsObjectFunctionCall *c);
+protected slots:
+ void selectionChanged();
+ void currentItemChanged(KviTalListBoxItem *);
+ void onItem(KviTalListBoxItem *);
+};
+
+
+#endif // !_CLASS_COMBOBOX_H_
diff --git a/src/modules/objects/class_listview.cpp b/src/modules/objects/class_listview.cpp
new file mode 100644
index 00000000..f571788c
--- /dev/null
+++ b/src/modules/objects/class_listview.cpp
@@ -0,0 +1,557 @@
+//=================================================================================
+//
+// File : class_listview.cpp
+// Creation date : Fri Jan 28 14:21:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2006 Szymon Stefanek (pragma at kvirc dot net)
+// Copyright (C) 2005-2006 Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=================================================================================
+
+
+#include "kvi_tal_listview.h"
+#ifdef COMPILE_USE_QT4
+#include <q3header.h>
+#include <qevent.h>
+#else
+#include <qheader.h>
+#endif
+#include "class_listview.h"
+#include "kvi_error.h"
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+
+
+
+/*
+ @doc: listview
+ @keyterms:
+ listview widget class
+ @title:
+ listview class
+ @type:
+ class
+ @short:
+ A listview class
+ @inherits:
+ [class]widget[/class]
+ @description:
+ It can display and control a hierarchy of multi-column items, and provides the ability to add new items at any time.
+ The items are added by creating children [class]listviewitem[/class] objects: simply allocating them with $new
+ will add the items to the listview and simply deleting them will remove them.
+ Allocating a [class]listviewitem[/class] item2 as a child of item1 will insert it to the same listview creating
+ a subtree of items spannig from item1. The subtree can be opened or closed by a simple click either
+ on the parent item or on the little plus sign on the side of it (when [classfnc:listview]$setRootIsDecorated[/classfnc]
+ is set to $true. The listview can be in Single, Multi, Extended or NoSelection selection mode.
+ In single selection mode there can be only one selected item at a time and the selected item is also
+ the current item (this mode is the default). In Multi and Extended selection mode there can be multiple selected items
+ and the current item is one of them. The difference between Multi and Extended is in the way
+ that items can be selected by the mouse actions: experiment with the two modes :).
+ The NoSelection mode has obviously no selection at all.
+ @functions:
+ !fn: $addColumn(<text_label:string> <width:unsigned integer>)
+ Adds a width pixels wide column with the column header label to the list view.
+
+ !fn: $setSorting(<column:integer>,<bAscending:boolean>)
+ Sets the list view to be sorted by column column in ascending order if ascending is 1 or descending order if it is FALSE.
+ If column is -1, sorting is disabled and the user cannot sort columns by clicking on the column headers
+
+ !fn: $hideListViewHeader()
+ Hide the listview column header.
+
+ !fn: $showListViewHeader()
+ Show the listview column header.
+
+ !fn: <boolean> $isListViewHeaderVisible()
+ Returns '1' if the listview header is currently visible. Otherwise this function returns '0'.
+
+ !fn: $setAllColumnsShowFocus(<bAllColumnsShowFocus:boolean>)
+ When the argument is $true, causes the listview to display the focus and selection
+ by highlighting all the columns of the item. When the argument is $false then
+ only the first column is selected/highlighted.
+
+ !fn: $setSelectionMode(<mode:string>)
+ Sets the selection mode for this listview. <mode> can be one of "Single","NoSelection","Multi" or "Extended".
+
+ !fn: <listviewitem> $selectedItem()
+ Returns the currently selected [class]listviewitem[/class] or $null if no items are selected.
+ This function works only if the list view is in single selection mode.
+
+ !fn: <listviewitem> $currentItem()
+ Returns the current [class]listviewitem[/class] or $null if no item is current at the moment.
+
+ !fn: <listviewitem> $firstChild()
+ Returns the first child [class]listviewitem[/class] of this listview or $null if there are no items at all.
+
+ !fn: $clickEvent(<item:object>)
+ This function is called when the user clicks in the list view.
+ In its argument the [class]listviewitem[/class] object clicked or 0 if the user didn't click on an item.[br]
+ The default implementation emits the [classfnc]$clicked[/classfnc]() signal.
+
+ !fn: $selectionChangedEvent(<item:object>)
+ This event handle whenever the set of selected items has changed.
+ The argument is the newly selected item if the listview is in single selection mode.[br]
+ When the listview is in Multi or Extended selection mode then item is always $null.[br]
+ The default implementation emits the [classfnc]$selectionChanged[/classfnc]() signal.
+
+ !fn: $currentChangedEvent(<item:object>)
+ This event are called whenever the current item has changed.
+ In its argument is the newly selected item or 0 if the change made no item current.[br]
+ The default implementation emits the [classfnc]$currentChanged[/classfnc]() signal.
+
+ !fn: $returnPressedEvent(<item:object>)
+ This function is called by the framework when the enter key is pressed.[br]
+ In its arument the currrent item.[br]
+ The default implementation emits the [classfnc]$returnPressed[/classfnc]() signal.
+
+ !fn: $spacePressedEvent(<item:object>)
+ This function is called by the framework when the space key is pressed.[br]
+ In its arument the currrent item.[br]
+ The default implementation emits the [classfnc]$spacePressed[/classfnc]() signal.
+
+ !fn: $onItemEvent(<item:object)
+ This event is called by framwork when the user moves the mouse cursor onto item.
+ The default implementation emits the [classfnc]$onItem[/classfnc]() signal.
+
+ !fn: $itemExpandedEvent(<item:object>)
+ This event is called when an item has been expanded, i.e. when the children of item are shown.
+ The default implementation emits the [classfnc]$expanded[/classfnc]() signal.
+
+ !fn: $itemCollapsedEvent(<item:object>)
+ This event is called when an item has been collapsed, i.e. when the children of item are hidden.
+ The default implementation emits the [classfnc]$collapsed[/classfnc]() signal.
+
+ !fn: $itemRenamedEvent(<item:object>,<col:integer>,<text:string>)
+ This event is called when the item has been renamed in text, e.g. by in in-place renaming, in column col.[br]
+ The default implementation emits the [classfnc]$itemRenamed[/classfnc]() signal.
+
+ !fn: $rightButtonClickEvent(<item:object>,<x:integer>,>y:integer>)
+ This signal is emitted when the right button is clicked.[br]
+ The arguments are the relevant item (may be 0), the point in global coordinates and the relevant column (or -1 if the click was outside the list).
+ The default implementation emits the [classfnc]$rightButtonClicked[/classfnc]() signal.
+ @signals:
+ !sg: $clicked()
+ This signal is emitted by the default implementation of [classfnc]$clickEvent[/classfnc]().
+ !sg: $selectionChanged()
+ This signal is emitted by the default implementation of [classfnc]$selectionChangedEvent[/classfnc]().
+ !sg: $currentChanged()
+ This signal is emitted by the default implementation of [classfnc]$currentChangedEvent[/classfnc]().
+ !sg: $returnPressed()
+ This signal is emitted by the default implementation of [classfnc]$returnPressedEvent[/classfnc]().
+ !sg: $spacePressed()
+ This signal is emitted by the default implementation of [classfnc]$spacePredssedEvent[/classfnc]().
+ !sg: $onItem()
+ This signal is emitted by the default implementation of [classfnc]$onItemEvent[/classfnc]().
+ !sg: $itemExpanded()
+ This signal is emitted by the default implementation of [classfnc]$itemExpandedEvent[/classfnc]().
+ !sg: $itemCollapsed()
+ This signal is emitted by the default implementation of [classfnc]$itemCollapsedEvent[/classfnc]().
+ !sg: $itemRenamed()
+ This signal is emitted by the default implementation of [classfnc]$itemRenamedEvent[/classfnc]().
+ !sg: $rightButtonClicked()
+ This signal is emitted by the default implementation of [classfnc]$rightButtonClickedEvent[/classfnc]().
+
+
+*/
+
+//---------------------------------------------------------------------------------
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_listview,"listview","widget")
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_listview,"addColumn",function_addColumn)
+ KVSO_REGISTER_HANDLER(KviKvsObject_listview,"setColumnText",function_setColumnText)
+ KVSO_REGISTER_HANDLER(KviKvsObject_listview,"setSorting",function_setSorting)
+ KVSO_REGISTER_HANDLER(KviKvsObject_listview,"setRootIsDecorated",function_setRootIsDecorated)
+ KVSO_REGISTER_HANDLER(KviKvsObject_listview,"setAllColumnsShowFocus",function_setAllColumnsShowFocus)
+ KVSO_REGISTER_HANDLER(KviKvsObject_listview,"clear",function_clear)
+ KVSO_REGISTER_HANDLER(KviKvsObject_listview,"selectedItem",function_selectedItem)
+ KVSO_REGISTER_HANDLER(KviKvsObject_listview,"currentItem",function_currentItem)
+ KVSO_REGISTER_HANDLER(KviKvsObject_listview,"setSelectionMode",function_setSelectionMode)
+ KVSO_REGISTER_HANDLER(KviKvsObject_listview,"listViewHeaderIsVisible",function_listViewHeaderIsVisible)
+
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_listview,"hideListViewHeader",function_hideListViewHeader)
+ KVSO_REGISTER_HANDLER(KviKvsObject_listview,"showListViewHeader",function_showListViewHeader)
+ KVSO_REGISTER_HANDLER(KviKvsObject_listview,"firstChild",function_firstChild)
+ KVSO_REGISTER_HANDLER(KviKvsObject_listview,"selectionChangedEvent",function_selectionChangedEvent);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listview,"currentChangedEvent",function_currentChangedEvent);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listview,"returnPressedEvent",function_returnPressedEvent);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listview,"spacePressedEvent",function_spacePressedEvent);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listview,"onItemEvent",function_onItemEvent);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listview,"itemClickedEvent",function_itemClickedEvent);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listview,"itemExpandedEvent",function_itemExpandedEvent);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listview,"itemCollapsedEvent",function_itemCollapsedEvent);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listview,"itemRenamedEvent",function_itemRenamedEvent);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listview,"rightButtonClickedEvent",function_rightButtonClickedEvent);
+
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_listview,"fileDroppedEvent")
+
+KVSO_END_REGISTERCLASS(KviKvsObject_listview)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_listview,KviKvsObject_widget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_listview)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_listview)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_listview)
+
+bool KviKvsObject_listview::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ setObject(new KviKvsMdmListView(parentScriptWidget(),name(),this),true);
+ connect(widget(),SIGNAL(clicked(KviTalListViewItem *)),this,SLOT(slotClicked(KviTalListViewItem *)));
+ connect(widget(),SIGNAL(selectionChanged(KviTalListViewItem *)),this,SLOT(slotSelectionChanged(KviTalListViewItem *)));
+ connect(widget(),SIGNAL(selectionChanged()),this,SLOT(slotMultipleSelectionChanged()));
+ connect(widget(),SIGNAL(currentChanged(KviTalListViewItem *)),this,SLOT(slotCurrentChanged(KviTalListViewItem *)));
+ connect(widget(),SIGNAL(returnPressed(KviTalListViewItem *)),this,SLOT(slotReturnPressed(KviTalListViewItem *)));
+ connect(widget(),SIGNAL(spacePressed(KviTalListViewItem *)),this,SLOT(slotSpacePressed(KviTalListViewItem *)));
+ connect(widget(),SIGNAL(onItem(KviTalListViewItem *)),this,SLOT(slotOnItem(KviTalListViewItem *)));
+ connect(widget(),SIGNAL(expanded(KviTalListViewItem *)),this,SLOT(slotItemExpanded(KviTalListViewItem *)));
+ connect(widget(),SIGNAL(collapsed(KviTalListViewItem *)),this,SLOT(slotItemCollapsed(KviTalListViewItem *)));
+ connect(widget(),SIGNAL(rightButtonClicked(KviTalListViewItem *,const QPoint &,int)),this,SLOT(slotRightButtonClicked(KviTalListViewItem *,const QPoint &,int)));
+ connect(widget(),SIGNAL(itemRenamed(KviTalListViewItem *,int,const QString &)),this,SLOT(slotItemRenamed(KviTalListViewItem *,int,const QString &)));
+ return true;
+}
+
+bool KviKvsObject_listview::function_addColumn(KviKvsObjectFunctionCall *c)
+{
+ QString szLabel;
+ kvs_int_t iW;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("label",KVS_PT_STRING,0,szLabel)
+ KVSO_PARAMETER("width",KVS_PT_INT,0,iW)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((KviTalListView *)object())->addColumn(szLabel,iW);
+ return true;
+}
+/*
+bool KviKvsObject_listview::function_setAcceptDrops(KviKvsObjectFunctionCall *c)
+{
+ bool bEnable;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnable",KVS_PT_BOOLEAN,0,bEnable)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((KviTalListView *)object())->setAcceptDrops(bEnable);
+ return true;
+}
+*/
+bool KviKvsObject_listview::function_clear(KviKvsObjectFunctionCall *c)
+{
+ if (widget())
+ ((KviTalListView *)object())->clear();
+ return true;
+}
+
+bool KviKvsObject_listview::function_selectedItem(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ c->returnValue()->setHObject(KviKvsObject_listviewitem::itemToHandle(((KviTalListView *)widget())->selectedItem()));
+ else
+ c->returnValue()->setHObject((kvs_hobject_t)0);
+ return true;
+}
+
+bool KviKvsObject_listview::function_firstChild(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ c->returnValue()->setHObject(KviKvsObject_listviewitem::itemToHandle(((KviTalListView *)widget())->firstChild()));
+ else
+ c->returnValue()->setHObject((kvs_hobject_t)0);
+ return true;
+}
+
+bool KviKvsObject_listview::function_currentItem(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ c->returnValue()->setHObject(KviKvsObject_listviewitem::itemToHandle(((KviTalListView *)widget())->currentItem()));
+ else
+ c->returnValue()->setHObject((kvs_hobject_t)0);
+ return true;
+}
+
+bool KviKvsObject_listview::function_setColumnText(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t uCol;
+ QString szText;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("column",KVS_PT_UNSIGNEDINTEGER,0,uCol)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szText)
+ KVSO_PARAMETERS_END(c)
+ if (widget())((KviTalListView *)widget())->setColumnText(uCol,szText);
+ return true;
+}
+
+bool KviKvsObject_listview::function_setSelectionMode(KviKvsObjectFunctionCall *c)
+{
+ QString szMode;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("mode",KVS_PT_NONEMPTYSTRING,0,szMode)
+ KVSO_PARAMETERS_END(c)
+ if(!widget())return true;
+ if(KviQString::equalCI(szMode,"NoSelection"))
+ ((KviTalListView *)widget())->setSelectionMode(KviTalListView::NoSelection);
+ else if(KviQString::equalCI(szMode,"Multi"))
+ ((KviTalListView *)widget())->setSelectionMode(KviTalListView::Multi);
+ else if(KviQString::equalCI(szMode,"Extended"))
+ ((KviTalListView *)widget())->setSelectionMode(KviTalListView::Extended);
+ else if(KviQString::equalCI(szMode,"Single"))
+ ((KviTalListView *)widget())->setSelectionMode(KviTalListView::Single);
+ else c->warning(__tr2qs("Invalid selection mode '%Q'"),&szMode);
+ return true;
+}
+
+bool KviKvsObject_listview::function_setSorting(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iCol;
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("column",KVS_PT_INT,0,iCol)
+ KVSO_PARAMETER("benabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((KviTalListView *)widget())->setSorting(iCol,bEnabled);
+ return true;
+}
+
+
+bool KviKvsObject_listview::function_setRootIsDecorated(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((KviTalListView *)widget())->setRootIsDecorated(bEnabled);
+ return true;
+}
+
+bool KviKvsObject_listview::function_setAllColumnsShowFocus(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bAllColumnsShowFocus",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if (widget())((KviTalListView *)widget())->setAllColumnsShowFocus(bEnabled);
+ return true;
+}
+
+bool KviKvsObject_listview::function_hideListViewHeader(KviKvsObjectFunctionCall *c)
+{
+// ((KviTalListView *)widget())->header()->hide();
+ return true;
+}
+bool KviKvsObject_listview::function_showListViewHeader(KviKvsObjectFunctionCall *c)
+{
+// ((KviTalListView *)widget())->header()->show();
+ return true;
+}
+bool KviKvsObject_listview::function_listViewHeaderIsVisible(KviKvsObjectFunctionCall *c)
+{
+ c->returnValue()->setBoolean(((KviTalListView *)widget())->header()->isVisible());
+ return true;
+}
+
+bool KviKvsObject_listview::function_itemClickedEvent(KviKvsObjectFunctionCall *c)
+{
+ emitSignal("itemClicked",c,c->params());
+ return true;
+}
+
+void KviKvsObject_listview::slotClicked(KviTalListViewItem * i)
+{
+ KviKvsVariantList params(new KviKvsVariant(KviKvsObject_listviewitem::itemToHandle(i)));
+ callFunction(this,"itemClickedEvent",0,&params);
+}
+
+bool KviKvsObject_listview::function_selectionChangedEvent(KviKvsObjectFunctionCall *c)
+{
+ emitSignal("selectionChanged",c,c->params());
+ return true;
+}
+
+void KviKvsObject_listview::slotSelectionChanged(KviTalListViewItem * i)
+{
+ KviKvsVariantList params(new KviKvsVariant(KviKvsObject_listviewitem::itemToHandle(i)));
+ callFunction(this,"selectionChangedEvent",0,&params);
+}
+
+void KviKvsObject_listview::slotMultipleSelectionChanged()
+{
+ KviKvsVariantList params(new KviKvsVariant((kvs_hobject_t)0));
+ callFunction(this,"selectionChangedEvent",0,&params);
+}
+
+
+bool KviKvsObject_listview::function_currentChangedEvent(KviKvsObjectFunctionCall *c)
+{
+ emitSignal("currentChanged",c,c->params());
+ return true;
+}
+
+void KviKvsObject_listview::slotCurrentChanged(KviTalListViewItem * i)
+{
+ KviKvsVariantList params(new KviKvsVariant(KviKvsObject_listviewitem::itemToHandle(i)));
+ callFunction(this,"currentChangedEvent",0,&params);
+}
+
+
+bool KviKvsObject_listview::function_returnPressedEvent(KviKvsObjectFunctionCall *c)
+{
+ emitSignal("returnPressed",c,c->params());
+ return true;
+}
+
+void KviKvsObject_listview::slotReturnPressed(KviTalListViewItem * i)
+{
+ KviKvsVariantList params(new KviKvsVariant(KviKvsObject_listviewitem::itemToHandle(i)));
+ callFunction(this,"returnPressedEvent",0,&params);
+}
+
+bool KviKvsObject_listview::function_spacePressedEvent(KviKvsObjectFunctionCall *c)
+{
+ emitSignal("spacePressed",c,c->params());
+ return true;
+}
+
+void KviKvsObject_listview::slotSpacePressed(KviTalListViewItem * i)
+{
+ KviKvsVariantList params(new KviKvsVariant(KviKvsObject_listviewitem::itemToHandle(i)));
+ callFunction(this,"spacePressedEvent",0,&params);
+}
+
+bool KviKvsObject_listview::function_onItemEvent(KviKvsObjectFunctionCall *c)
+{
+ emitSignal("onItem",c,c->params());
+ return true;
+}
+
+void KviKvsObject_listview::slotOnItem(KviTalListViewItem * i)
+{
+ KviKvsVariantList params(new KviKvsVariant(KviKvsObject_listviewitem::itemToHandle(i)));
+ callFunction(this,"onItemEvent",0,&params);
+}
+
+
+bool KviKvsObject_listview::function_itemExpandedEvent(KviKvsObjectFunctionCall *c)
+{
+ emitSignal("itemExpanded",c,c->params());
+ return true;
+}
+
+void KviKvsObject_listview::slotItemExpanded(KviTalListViewItem * i)
+{
+ KviKvsVariantList params(new KviKvsVariant(KviKvsObject_listviewitem::itemToHandle(i)));
+ callFunction(this,"itemExpandedEvent",0,&params);
+}
+
+bool KviKvsObject_listview::function_itemCollapsedEvent(KviKvsObjectFunctionCall *c)
+{
+ emitSignal("itemCollapsed",c,c->params());
+ return true;
+}
+
+void KviKvsObject_listview::slotItemCollapsed(KviTalListViewItem * i)
+{
+ KviKvsVariantList params(new KviKvsVariant(KviKvsObject_listviewitem::itemToHandle(i)));
+ callFunction(this,"itemCollapsedEvent",0,&params);
+}
+
+bool KviKvsObject_listview::function_rightButtonClickedEvent(KviKvsObjectFunctionCall *c)
+{
+ emitSignal("rightButtonClicked",c,c->params());
+ return true;
+}
+
+void KviKvsObject_listview::slotRightButtonClicked(KviTalListViewItem * i,const QPoint &coor, int col)
+{
+ KviKvsVariant *xpos=new KviKvsVariant((kvs_int_t)coor.x());
+ KviKvsVariant *ypos=new KviKvsVariant((kvs_int_t)coor.y());
+ KviKvsVariant *column=new KviKvsVariant((kvs_int_t)col);
+ KviKvsVariantList params(new KviKvsVariant(KviKvsObject_listviewitem::itemToHandle(i)),xpos,ypos,column);
+ callFunction(this,"rightButtonClickedEvent",0,&params);
+}
+
+bool KviKvsObject_listview::function_itemRenamedEvent(KviKvsObjectFunctionCall *c)
+{
+ emitSignal("itemRenamed",c,c->params());
+ return true;
+}
+
+void KviKvsObject_listview::slotItemRenamed(KviTalListViewItem *item,int col,const QString & szText)
+{
+ KviKvsVariant *column=new KviKvsVariant((kvs_int_t)col);
+ KviKvsVariant *txt=new KviKvsVariant(szText);
+ KviKvsVariantList params(new KviKvsVariant(KviKvsObject_listviewitem::itemToHandle(item)),column,txt);
+ callFunction(this,"itemRenamedEvent",0,&params);
+}
+void KviKvsObject_listview::fileDropped(QString &szFile,KviTalListViewItem *item)
+{
+ KviKvsVariant *file=new KviKvsVariant(szFile);
+ KviKvsVariantList params(new KviKvsVariant(KviKvsObject_listviewitem::itemToHandle(item)),file);
+ callFunction(this,"fileDroppedEvent",0,&params);
+}
+
+KviKvsMdmListView::KviKvsMdmListView(QWidget * par,const char * name,KviKvsObject_listview *parent)
+:KviTalListView(par)
+{
+ m_pParentScript=parent;
+ setAcceptDrops(true);
+ viewport()->setAcceptDrops( TRUE );
+
+}
+KviKvsMdmListView::~KviKvsMdmListView()
+{
+}
+
+void KviKvsMdmListView::contentsDragEnterEvent( QDragEnterEvent *e )
+{
+ if ( !KviUriDrag::canDecode(e))
+ {
+ e->ignore();
+ return;
+ }
+
+}
+
+
+void KviKvsMdmListView::contentsDropEvent(QDropEvent *e)
+{
+ QStringList list;
+ if(KviUriDrag::decodeLocalFiles(e,list))
+ {
+ if(!list.isEmpty())
+ {
+ QStringList::ConstIterator it = list.begin(); //kewl ! :)
+ for( ; it != list.end(); ++it )
+ {
+ QString tmp = *it; //wow :)
+ #ifndef COMPILE_ON_WINDOWS
+ if(tmp[0] != '/')tmp.prepend("/"); //HACK HACK HACK for Qt bug (?!?)
+ #endif
+ KviTalListViewItem *i = itemAt( contentsToViewport(e->pos()) );
+ m_pParentScript->fileDropped(tmp,i);
+ }
+ }
+ }
+
+}
+#include "m_class_listview.moc"
diff --git a/src/modules/objects/class_listview.h b/src/modules/objects/class_listview.h
new file mode 100644
index 00000000..7849f36c
--- /dev/null
+++ b/src/modules/objects/class_listview.h
@@ -0,0 +1,102 @@
+#ifndef _CLASS_LISTVIEW_H_
+#define _CLASS_LISTVIEW_H_
+//=================================================================================
+//
+// File : class_listview.h
+// Creation date : Fri Jan 28 14:21:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2006 Szymon Stefanek (pragma at kvirc dot net)
+// Copyright (C) 2005-2006 Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=================================================================================
+
+#include "kvi_tal_listview.h"
+#include "kvi_draganddrop.h"
+#include "class_widget.h"
+#include "class_listviewitem.h"
+
+#include "object_macros.h"
+
+class KviKvsObject_listview : public KviKvsObject_widget
+{
+ Q_OBJECT
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_listview)
+
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+ void fileDropped(QString &,KviTalListViewItem *);
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+ bool function_addColumn(KviKvsObjectFunctionCall *c);
+ bool function_setColumnText(KviKvsObjectFunctionCall *c);
+ bool function_takeItem(KviKvsObjectFunctionCall *c);
+ bool function_setSorting(KviKvsObjectFunctionCall *c);
+ bool function_setRootIsDecorated(KviKvsObjectFunctionCall *c);
+ bool function_clear(KviKvsObjectFunctionCall *c);
+ bool function_setAllColumnsShowFocus(KviKvsObjectFunctionCall *c);
+ bool function_itemClickedEvent(KviKvsObjectFunctionCall *c);
+ bool function_selectionChangedEvent(KviKvsObjectFunctionCall *c);
+ bool function_currentChangedEvent(KviKvsObjectFunctionCall *c);
+ bool function_returnPressedEvent(KviKvsObjectFunctionCall *c);
+ bool function_spacePressedEvent(KviKvsObjectFunctionCall *c);
+ bool function_onItemEvent(KviKvsObjectFunctionCall *c);
+ bool function_itemExpandedEvent(KviKvsObjectFunctionCall *c);
+ bool function_itemCollapsedEvent(KviKvsObjectFunctionCall *c);
+ bool function_itemRenamedEvent(KviKvsObjectFunctionCall *c);
+ bool function_rightButtonClickedEvent(KviKvsObjectFunctionCall *c);
+ bool function_selectedItem(KviKvsObjectFunctionCall *c);
+ bool function_currentItem(KviKvsObjectFunctionCall *c);
+ bool function_setSelectionMode(KviKvsObjectFunctionCall *c);
+ bool function_firstChild(KviKvsObjectFunctionCall *c);
+ bool function_listViewHeaderIsVisible(KviKvsObjectFunctionCall *c);
+ bool function_showListViewHeader(KviKvsObjectFunctionCall *c);
+ bool function_hideListViewHeader(KviKvsObjectFunctionCall *c);
+
+ bool function_setAcceptDrops(KviKvsObjectFunctionCall *c);
+
+protected slots:
+ void slotClicked(KviTalListViewItem *);
+ void slotSelectionChanged(KviTalListViewItem *);
+ void slotMultipleSelectionChanged();
+ void slotCurrentChanged(KviTalListViewItem *);
+ void slotReturnPressed(KviTalListViewItem *);
+ void slotSpacePressed(KviTalListViewItem *);
+ void slotOnItem(KviTalListViewItem *);
+ void slotItemExpanded(KviTalListViewItem *);
+ void slotItemCollapsed(KviTalListViewItem *);
+ void slotItemRenamed(KviTalListViewItem *,int,const QString &);
+ void slotRightButtonClicked(KviTalListViewItem * i,const QPoint &coor, int col);
+};
+
+class KviKvsMdmListView : public KviTalListView
+{
+ Q_OBJECT
+public:
+ KviKvsMdmListView(QWidget * par,const char * name,KviKvsObject_listview *);
+
+ virtual ~KviKvsMdmListView();
+protected:
+ KviKvsObject_listview *m_pParentScript;
+ void contentsDropEvent(QDropEvent *e);
+ void contentsDragEnterEvent( QDragEnterEvent *e );
+
+};
+#endif //!_CLASS_LISTVIEW_H_
diff --git a/src/modules/objects/class_listviewitem.cpp b/src/modules/objects/class_listviewitem.cpp
new file mode 100644
index 00000000..31df9020
--- /dev/null
+++ b/src/modules/objects/class_listviewitem.cpp
@@ -0,0 +1,421 @@
+//mdm:
+// File : class_ListViewItem.h
+// Creation date : Thu Feb 1 14:39:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+
+#include "class_listviewitem.h"
+#include "class_pixmap.h"
+#include "kvi_error.h"
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+
+
+
+/*
+ @doc: listviewitem
+ @keyterms:
+ listview listviewitem class
+ @title:
+ listviewitem class
+ @type:
+ class
+ @short:
+ A listviewitem class
+ @inherits:
+ [class]listviewitem[/class]
+ @description:
+ The listviewitem class implements a list view item.
+ A list view item is a multi-column object capable of displaying itself in a [class]listview[/class].
+ To use this class you must instantiate it with another listviewitem or a [class]listview[/class]
+ as parent. The item will be automatically displayed.
+ You can set the text and a pixmap in each column and you can make it checkable
+ with [classfnc:listviewitem]$setCheckable[/classfnc]().
+ A checkable listviewitem will display a small check mark in the first column.
+ @functions:
+ !fn: $setText(<column:integer>,<text:string>)
+ Sets the text in column column to text, if column is a valid column number and text is different from the existing text.
+
+ !fn: <string> $text(<column:integer>)
+ Returs the text of the specified column.
+
+ !fn: $setPixmap(<column:integer>,<pixmap:hobject or imageID>)
+ Sets the pixmap in column column to pm, if pm is non-null and different from the current pixmap, and if column is non-negative.
+ Pixmap can be a Kvirc imageid, an image file or a [class]pixmap[/class] object.
+
+ !fn: $setRenameEnabled(<col:integer>,<bEnabled:boolean>)
+ If b is TRUE (1), this item can be in-place renamed in the column col by the user; otherwise it cannot be renamed in-place.
+
+ !fn: $setEnabled(<bEnabled:boolean>)
+ Enables or disables the item
+
+ !fn: $isEnabled()
+ Returns $true if this item is enabled and $false otherwise
+
+ !fn: $setOpen(<bOpen:boolean>)
+ Opens or closes the item to show its children items
+
+ !fn: $isOpen()
+ Returns the open state of this item
+
+ !fn: $setCheckable(<bCheckable:boolean>)
+ Makes this item checkable or not. This function should be called immediately
+ after the item creation: changing this property later at runtime may have
+ strange results (like the item being moved inside the list, text disappearing,
+ hidden children etc... don't do it :D ).
+
+ !fn: $isCheckable()
+ Returns $true if this item is checkable and $false otherwise
+
+ !fn: $setChecked(<bChecked:boolean>)
+ Sets this item to be checked or not. [classfnc:listviewitem]$setCheckable[/classfnc]() must
+ have been previously called.
+
+ !fn: $isChecked()
+ Returns the check status of this item. [classfnc:listviewitem]$setCheckable[/classfnc]() must
+ have been previously called.
+
+ !fn: <listviewitem> $firstChild()
+ Returns the first child item of this listviewitem or $null if this item has no children.
+
+ !fn: <listviewitem> $nextSibling()
+ Returns the next sibling item of this listviewitem or $null if there are no sibling items.
+ Next sibling stands for the item at the same tree level coming just after :)
+*/
+
+
+//===========================================================================================
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_listviewitem,"listviewitem","object")
+ KVSO_REGISTER_HANDLER(KviKvsObject_listviewitem,"setText",function_setText)
+ KVSO_REGISTER_HANDLER(KviKvsObject_listviewitem,"text",function_text)
+ KVSO_REGISTER_HANDLER(KviKvsObject_listviewitem,"setPixmap",function_setPixmap);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listviewitem,"setRenameEnabled",function_setRenameEnabled);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listviewitem,"setEnabled",function_setEnabled);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listviewitem,"isEnabled",function_isEnabled);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listviewitem,"setOpen",function_setOpen);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listviewitem,"isOpen",function_isOpen);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listviewitem,"setCheckable",function_setCheckable);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listviewitem,"isCheckable",function_isCheckable);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listviewitem,"setChecked",function_setChecked);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listviewitem,"isChecked",function_isChecked);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listviewitem,"firstChild",function_firstChild);
+ KVSO_REGISTER_HANDLER(KviKvsObject_listviewitem,"nextSibling",function_nextSibling);
+KVSO_END_REGISTERCLASS(KviKvsObject_listviewitem)
+
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_listviewitem,KviKvsObject)
+
+ m_pListViewItem = 0;
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_listviewitem)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_listviewitem)
+
+ if(m_pListViewItem)delete m_pListViewItem;
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_listviewitem)
+
+bool KviKvsObject_listviewitem::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ if (!parentObject())
+ {
+ pContext->error(__tr2qs("The listviewitem cannot be parentless"));
+ return false;
+ }
+ if(parentObject()->inherits("KviKvsObject_listviewitem"))
+ {
+ m_pListViewItem = new KviKvsMdmStandardListViewItem(this,((KviKvsObject_listviewitem *)parentObject())->m_pListViewItem);
+ } else {
+ if(parentObject()->inherits("KviKvsObject_listview"))
+ m_pListViewItem = new KviKvsMdmStandardListViewItem(this,((KviTalListView *)parentScriptWidget()));
+ else {
+ pContext->error(__tr2qs("The parent of the listviewitem must be either another listviewitem or a listview"));
+ return false;
+ }
+ }
+ return true;
+}
+
+void KviKvsObject_listviewitem::childDestroyed()
+{
+ if(m_pListViewItem == 0)return;
+ m_pListViewItem = 0;
+ die();
+}
+
+KviKvsMdmStandardListViewItem::KviKvsMdmStandardListViewItem(KviKvsObject_listviewitem * ob,KviTalListView * par)
+:KviTalListViewItem(par), m_pMasterObject(ob)
+{
+}
+
+KviKvsMdmStandardListViewItem::KviKvsMdmStandardListViewItem(KviKvsObject_listviewitem * ob,KviTalListViewItem * par)
+:KviTalListViewItem(par), m_pMasterObject(ob)
+{
+}
+
+KviKvsMdmStandardListViewItem::~KviKvsMdmStandardListViewItem()
+{
+ if(m_pMasterObject)m_pMasterObject->childDestroyed();
+}
+
+
+
+KviKvsMdmCheckListViewItem::KviKvsMdmCheckListViewItem(KviKvsObject_listviewitem * ob,KviTalListView * par)
+:KviTalCheckListItem(par,QString::null,KviTalCheckListItem::CheckBox), m_pMasterObject(ob)
+{
+}
+
+KviKvsMdmCheckListViewItem::KviKvsMdmCheckListViewItem(KviKvsObject_listviewitem * ob,KviTalListViewItem * par)
+:KviTalCheckListItem(par,QString::null,KviTalCheckListItem::CheckBox), m_pMasterObject(ob)
+{
+}
+
+KviKvsMdmCheckListViewItem::~KviKvsMdmCheckListViewItem()
+{
+ if(m_pMasterObject)m_pMasterObject->childDestroyed();
+}
+
+
+kvs_hobject_t KviKvsObject_listviewitem::itemToHandle(KviTalListViewItem * it)
+{
+ if(!it)return (kvs_hobject_t)0;
+ KviKvsObject_listviewitem * pObject;
+ if(it->rtti() == 1)pObject = ((KviKvsMdmCheckListViewItem *)it)->masterObject();
+ else pObject = ((KviKvsMdmStandardListViewItem *)it)->masterObject();
+ if(!pObject)return (kvs_hobject_t)0;
+ return pObject->handle();
+}
+
+
+bool KviKvsObject_listviewitem::function_setText(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uCol;
+ QString szText;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("column",KVS_PT_UNSIGNEDINTEGER,0,uCol)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szText)
+ KVSO_PARAMETERS_END(c)
+ if(m_pListViewItem)
+ m_pListViewItem->setText(uCol,szText);
+ return true;
+}
+
+bool KviKvsObject_listviewitem::function_firstChild(KviKvsObjectFunctionCall *c)
+{
+ if(m_pListViewItem)
+ c->returnValue()->setHObject(itemToHandle(m_pListViewItem->firstChild()));
+ else
+ c->returnValue()->setHObject((kvs_hobject_t)0);
+ return true;
+}
+
+bool KviKvsObject_listviewitem::function_nextSibling(KviKvsObjectFunctionCall *c)
+{
+ if(m_pListViewItem)
+ c->returnValue()->setHObject(itemToHandle(m_pListViewItem->nextSibling()));
+ else
+ c->returnValue()->setHObject((kvs_hobject_t)0);
+ return true;
+}
+
+
+bool KviKvsObject_listviewitem::function_setRenameEnabled(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uCol;
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("column",KVS_PT_UNSIGNEDINTEGER,0,uCol)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if(m_pListViewItem)
+ m_pListViewItem->setRenameEnabled(uCol,bEnabled);
+ return true;
+}
+
+bool KviKvsObject_listviewitem::function_setEnabled(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if(m_pListViewItem)
+ m_pListViewItem->setEnabled(bEnabled);
+ return true;
+}
+
+bool KviKvsObject_listviewitem::function_isEnabled(KviKvsObjectFunctionCall *c)
+{
+ if(!m_pListViewItem)
+ {
+ c->returnValue()->setBoolean(false);
+ return true;
+ }
+ c->returnValue()->setBoolean(m_pListViewItem->isEnabled());
+ return true;
+}
+
+bool KviKvsObject_listviewitem::function_setOpen(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if(m_pListViewItem)
+ m_pListViewItem->setOpen(bEnabled);
+ return true;
+}
+
+bool KviKvsObject_listviewitem::function_isOpen(KviKvsObjectFunctionCall *c)
+{
+ if(!m_pListViewItem)
+ {
+ c->returnValue()->setBoolean(false);
+ return true;
+ }
+ c->returnValue()->setBoolean(m_pListViewItem->isOpen());
+ return true;
+}
+
+
+bool KviKvsObject_listviewitem::function_setChecked(KviKvsObjectFunctionCall *c)
+{
+ bool bChecked;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bChecked",KVS_PT_BOOL,0,bChecked)
+ KVSO_PARAMETERS_END(c)
+ if(!m_pListViewItem)return true;
+ if(m_pListViewItem->rtti() != 1)return true; // not a QCheckListItem
+ ((KviKvsMdmCheckListViewItem *)m_pListViewItem)->setOn(bChecked);
+ return true;
+}
+
+bool KviKvsObject_listviewitem::function_isChecked(KviKvsObjectFunctionCall *c)
+{
+ if(!m_pListViewItem)
+ {
+ c->returnValue()->setBoolean(false);
+ return true;
+ }
+ if(m_pListViewItem->rtti() != 1)
+ {
+ c->returnValue()->setBoolean(false);
+ return true;
+ }
+ c->returnValue()->setBoolean(((KviKvsMdmCheckListViewItem *)m_pListViewItem)->isOn());
+ return true;
+}
+
+bool KviKvsObject_listviewitem::function_setCheckable(KviKvsObjectFunctionCall *c)
+{
+ bool bCheckable;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bCheckable",KVS_PT_BOOL,0,bCheckable)
+ KVSO_PARAMETERS_END(c)
+ if(!m_pListViewItem)return true;
+ if(bCheckable)
+ {
+ if(m_pListViewItem->rtti() == 1)return true; // a QCheckListItem already
+ KviTalListViewItem * pParent = m_pListViewItem->parent();
+ KviTalListView * pLV = (KviTalListView *)m_pListViewItem->listView();
+ // swap the items, so we don't die now
+ KviTalListViewItem * pThis = m_pListViewItem;
+ m_pListViewItem = 0;
+ delete pThis;
+ if(pParent)
+ m_pListViewItem = new KviKvsMdmCheckListViewItem(this,pParent);
+ else
+ m_pListViewItem = new KviKvsMdmCheckListViewItem(this,pLV);
+ } else {
+ if(m_pListViewItem->rtti() != 1)return true; // not a QCheckListItem yet
+ KviTalListViewItem * pParent = m_pListViewItem->parent();
+ KviTalListView * pLV = (KviTalListView *)m_pListViewItem->listView();
+ // swap the items, so we don't die now
+ KviTalListViewItem * pThis = m_pListViewItem;
+ m_pListViewItem = 0;
+ delete pThis;
+ if(pParent)
+ m_pListViewItem = new KviKvsMdmStandardListViewItem(this,pParent);
+ else
+ m_pListViewItem = new KviKvsMdmStandardListViewItem(this,pLV);
+ }
+ return true;
+}
+
+bool KviKvsObject_listviewitem::function_isCheckable(KviKvsObjectFunctionCall *c)
+{
+ if(!m_pListViewItem)
+ {
+ c->returnValue()->setBoolean(false);
+ return true;
+ }
+ c->returnValue()->setBoolean(m_pListViewItem->rtti() == 1);
+ return true;
+}
+
+bool KviKvsObject_listviewitem::function_text(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uCol;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("column",KVS_PT_UNSIGNEDINTEGER,0,uCol)
+ KVSO_PARAMETERS_END(c)
+ if(m_pListViewItem)
+ c->returnValue()->setString(m_pListViewItem->text(uCol));
+ return true;
+}
+
+bool KviKvsObject_listviewitem::function_setPixmap(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uCol;
+ KviKvsObject *obPixmap;
+ kvs_hobject_t obHpixmap;
+ KviKvsVariant * vPixmap;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("column",KVS_PT_UNSIGNEDINTEGER,0,uCol)
+ KVSO_PARAMETER("pixmap",KVS_PT_VARIANT,0,vPixmap)
+ KVSO_PARAMETERS_END(c)
+ QPixmap *pix = 0;
+ if(vPixmap->isHObject())
+ {
+ vPixmap->asHObject(obHpixmap);
+ obPixmap=KviKvsKernel::instance()->objectController()->lookupObject(obHpixmap);
+ if (!obPixmap->inherits("KviKvsObject_pixmap"))
+ {
+ c->warning(__tr2qs("Pixmap object or image Id required"));
+ return true;
+ }
+ pix=((KviKvsObject_pixmap *)obPixmap)->getPixmap();
+ } else {
+ QString szPix;
+ vPixmap->asString(szPix);
+ pix=g_pIconManager->getImage(szPix);
+ if(!pix)
+ {
+ c->warning(__tr2qs("Error occured: the suitable file '%Q' is not of the correct format or it is not a valid icon number."),&szPix);
+ return true;
+ }
+ }
+ m_pListViewItem->setPixmap(uCol,*pix);
+ return true;
+}
+
+#include "m_class_listviewitem.moc"
diff --git a/src/modules/objects/class_listviewitem.h b/src/modules/objects/class_listviewitem.h
new file mode 100644
index 00000000..eb806324
--- /dev/null
+++ b/src/modules/objects/class_listviewitem.h
@@ -0,0 +1,88 @@
+#ifndef _CLASS_LISTVIEWITEM_H_
+#define _CLASS_LISTVIEWITEM_H_
+//mdm:
+// File : class_ListViewItem.h
+// Creation date : Thu Feb 1 14:39:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+
+#include "kvi_tal_listview.h"
+#include "class_widget.h"
+
+
+
+#include "object_macros.h"
+
+class KviKvsObject_listviewitem : public KviKvsObject
+{
+ Q_OBJECT
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_listviewitem)
+ void childDestroyed();
+protected:
+ KviTalListViewItem * m_pListViewItem;
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+protected:
+ bool function_setText(KviKvsObjectFunctionCall *c);
+ bool function_insertItem(KviKvsObjectFunctionCall *c);
+ bool function_setPixmap(KviKvsObjectFunctionCall *c);
+ bool function_setRenameEnabled(KviKvsObjectFunctionCall *c);
+ bool function_setEnabled(KviKvsObjectFunctionCall *c);
+ bool function_isEnabled(KviKvsObjectFunctionCall *c);
+ bool function_setOpen(KviKvsObjectFunctionCall *c);
+ bool function_isOpen(KviKvsObjectFunctionCall *c);
+ bool function_text(KviKvsObjectFunctionCall *c);
+ bool function_setCheckable(KviKvsObjectFunctionCall *c);
+ bool function_isCheckable(KviKvsObjectFunctionCall *c);
+ bool function_setChecked(KviKvsObjectFunctionCall *c);
+ bool function_isChecked(KviKvsObjectFunctionCall *c);
+ bool function_firstChild(KviKvsObjectFunctionCall *c);
+ bool function_nextSibling(KviKvsObjectFunctionCall *c);
+public:
+ static kvs_hobject_t itemToHandle(KviTalListViewItem * it);
+};
+
+
+
+class KviKvsMdmStandardListViewItem : public KviTalListViewItem
+{
+public:
+ KviKvsMdmStandardListViewItem(KviKvsObject_listviewitem * ob,KviTalListView * par);
+ KviKvsMdmStandardListViewItem(KviKvsObject_listviewitem * ob,KviTalListViewItem * par);
+ virtual ~KviKvsMdmStandardListViewItem();
+protected:
+ KviKvsObject_listviewitem * m_pMasterObject;
+public:
+ KviKvsObject_listviewitem * masterObject(){ return m_pMasterObject; }
+};
+
+class KviKvsMdmCheckListViewItem : public KviTalCheckListItem
+{
+public:
+ KviKvsMdmCheckListViewItem(KviKvsObject_listviewitem * ob,KviTalListView * par);
+ KviKvsMdmCheckListViewItem(KviKvsObject_listviewitem * ob,KviTalListViewItem * par);
+ virtual ~KviKvsMdmCheckListViewItem();
+protected:
+ KviKvsObject_listviewitem * m_pMasterObject;
+public:
+ KviKvsObject_listviewitem * masterObject(){ return m_pMasterObject; }
+};
+
+#endif // !_CLASS_LISTVIEWITEM_H_
diff --git a/src/modules/objects/class_mainwindow.cpp b/src/modules/objects/class_mainwindow.cpp
new file mode 100644
index 00000000..e30f480b
--- /dev/null
+++ b/src/modules/objects/class_mainwindow.cpp
@@ -0,0 +1,158 @@
+//mdm:
+// File : class_mainwindow.cpp
+// Creation date : Mon Feb 28 14:21:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_tal_mainwindow.h"
+#include "class_mainwindow.h"
+#include "kvi_error.h"
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+
+
+/*
+ @doc: mainwindow
+ @keyterms:
+ mainwindow object class,
+ @title:
+ mainwindow class
+ @type:
+ class
+ @short:
+ Provides a mainwindow.
+ @inherits:
+ [class]object[/class]
+ [class]widget[/class]
+ @description:
+ The mainwindow class provides a main application window, with menubar, toolbars.
+ @functions:
+ !fn: $setCentralWidget(<widget:object>)
+ Sets the central widget for the main window to <wid>.
+*/
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_mainwindow,"mainwindow","widget")
+ KVSO_REGISTER_HANDLER(KviKvsObject_mainwindow,"setCentralWidget",functionsetCentralWidget)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mainwindow,"setDockEnabled",functionsetDockEnabled)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mainwindow,"isDockEnabled",functionisDockEnabled)
+
+KVSO_END_REGISTERCLASS(KviKvsObject_mainwindow)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_mainwindow,KviKvsObject_widget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_mainwindow)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_mainwindow)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_mainwindow)
+
+bool KviKvsObject_mainwindow::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ setObject(new KviTalMainWindow(parentScriptWidget(), name()), true);
+ return true;
+}
+
+bool KviKvsObject_mainwindow::functionsetCentralWidget(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject * pObject;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETERS_END(c)
+ pObject=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if (!pObject)
+ {
+ c->warning(__tr2qs("Widget parameter is not an object"));
+ return true;
+ }
+ if (!pObject->object())
+ {
+ c->warning(__tr2qs("Widget parameter is not a valid object"));
+ return true;
+ }
+ if(!pObject->object()->inherits("KviKvsObject_widget"))
+ {
+ c->warning(__tr2qs("Widget object required"));
+ return TRUE;
+ }
+ if(widget()) ((KviTalMainWindow *)widget())->setCentralWidget(((QWidget *)(pObject->object())));
+ return true;
+}
+bool KviKvsObject_mainwindow::functionsetDockEnabled(KviKvsObjectFunctionCall *c)
+{
+ QString szDockarea;
+ bool bFlag;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("dock area",KVS_PT_STRING,0,szDockarea)
+ KVSO_PARAMETER("bool enabled",KVS_PT_BOOL,0,bFlag)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ {
+#ifndef COMPILE_USE_QT4
+ if(KviQString::equalCI(szDockarea,"Top"))
+ ((KviTalMainWindow *)widget())->setDockEnabled(Qt::DockTop,bFlag);
+ else if(KviQString::equalCI(szDockarea,"Left"))
+ ((KviTalMainWindow *)widget())->setDockEnabled(Qt::DockLeft,bFlag);
+ else if(KviQString::equalCI(szDockarea,"Right"))
+ ((KviTalMainWindow *)widget())->setDockEnabled(Qt::DockRight,bFlag);
+ else if(KviQString::equalCI(szDockarea,"Bottom"))
+ ((KviTalMainWindow *)widget())->setDockEnabled(Qt::DockBottom,bFlag);
+ else if(KviQString::equalCI(szDockarea,"Minimized"))
+ ((KviTalMainWindow *)widget())->setDockEnabled(Qt::DockMinimized,bFlag);
+ else if(KviQString::equalCI(szDockarea,"TornOff"))
+ ((KviTalMainWindow *)widget())->setDockEnabled(Qt::DockTornOff,bFlag);
+ else if(KviQString::equalCI(szDockarea,"Unmanaged"))
+ ((KviTalMainWindow *)widget())->setDockEnabled(Qt::DockUnmanaged,bFlag);
+ else c->warning(__tr2qs("Unknown dock area '%Q'"),&szDockarea);
+#endif
+ }
+ return true;
+
+}
+bool KviKvsObject_mainwindow::functionisDockEnabled(KviKvsObjectFunctionCall *c)
+{
+
+ QString szDockarea;
+ bool bFlag = false;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("dock_area",KVS_PT_STRING,0,szDockarea)
+ KVSO_PARAMETERS_END(c)
+ if(!widget()) return true;
+#ifndef COMPILE_USE_QT4
+ if(KviQString::equalCI(szDockarea,"Top")) bFlag=((KviTalMainWindow *)widget())->isDockEnabled(Qt::DockTop);
+ else if(KviQString::equalCI(szDockarea,"Left")) bFlag=((KviTalMainWindow *)widget())->isDockEnabled(Qt::DockLeft);
+ else if(KviQString::equalCI(szDockarea,"Right")) bFlag=((KviTalMainWindow *)widget())->isDockEnabled(Qt::DockRight);
+ else if(KviQString::equalCI(szDockarea,"Bottom"))bFlag=((KviTalMainWindow *)widget())->isDockEnabled(Qt::DockBottom);
+ else if(KviQString::equalCI(szDockarea,"Minimized")) bFlag=((KviTalMainWindow *)widget())->isDockEnabled(Qt::DockMinimized);
+ else if(KviQString::equalCI(szDockarea,"TornOff")) bFlag=((KviTalMainWindow *)widget())->isDockEnabled(Qt::DockTornOff);
+ else if(KviQString::equalCI(szDockarea,"Unmanaged")) bFlag=((KviTalMainWindow *)widget())->isDockEnabled(Qt::DockUnmanaged);
+ else
+ {
+ c->warning(__tr2qs("Unknown dock area '%Q'"),&szDockarea);
+ return true;
+ }
+#endif
+ c->returnValue()->setBoolean(bFlag);
+ return true;
+
+}
diff --git a/src/modules/objects/class_mainwindow.h b/src/modules/objects/class_mainwindow.h
new file mode 100644
index 00000000..7afddf8c
--- /dev/null
+++ b/src/modules/objects/class_mainwindow.h
@@ -0,0 +1,47 @@
+#ifndef _CLASS_MAINWINDOW_H_
+#define _CLASS_MAINWINDOW_H_
+//
+// File : class_mainwindow.h
+// Creation date : Fri Jan 28 14:21:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+//#include <qmainwindow.h>
+#include "class_widget.h"
+#include "object_macros.h"
+
+class KviKvsObject_mainwindow : public KviKvsObject_widget
+{
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_mainwindow)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+ bool functionsetCentralWidget(KviKvsObjectFunctionCall *c);
+ bool functionsetDockEnabled(KviKvsObjectFunctionCall *c);
+ bool functionisDockEnabled(KviKvsObjectFunctionCall *c);
+
+};
+
+
+#endif //!_CLASS_MAINWINDOW_H_
+
diff --git a/src/modules/objects/class_menubar.cpp b/src/modules/objects/class_menubar.cpp
new file mode 100644
index 00000000..90ad0e7d
--- /dev/null
+++ b/src/modules/objects/class_menubar.cpp
@@ -0,0 +1,76 @@
+//
+// File : class_menubar.cpp
+// Creation date : Tue Now 26 13:16:59 CEST 2002 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+
+#include "class_menubar.h"
+#include "kvi_error.h"
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+
+/*
+ @doc: menubar
+ @title:
+ menubar class
+ @type:
+ class
+ @short:
+ A menu bar object implementation
+ @inherits:
+ [class]object[/class]
+ [class]widget[/class]
+ @description:
+
+ @functions:
+ !fn: <integer> $insertItem(<text:string>)
+ Returns an integer that identifies the inserted item.
+*/
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_menubar,"menubar","widget")
+ KVSO_REGISTER_HANDLER(KviKvsObject_menubar,"inserItem",functionInsertItem)
+KVSO_END_REGISTERCLASS(KviKvsObject_menubar)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_menubar,KviKvsObject_widget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_menubar)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_menubar)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_menubar)
+
+bool KviKvsObject_menubar::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ setObject(new QMenuBar(parentScriptWidget(), name()));
+ return true;
+}
+
+bool KviKvsObject_menubar::functionInsertItem(KviKvsObjectFunctionCall *c)
+{
+ QString szItem;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("item",KVS_PT_STRING,0,szItem)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((QMenuBar *)widget())->insertItem(szItem);
+ return true;
+}
diff --git a/src/modules/objects/class_menubar.h b/src/modules/objects/class_menubar.h
new file mode 100644
index 00000000..c959d272
--- /dev/null
+++ b/src/modules/objects/class_menubar.h
@@ -0,0 +1,40 @@
+#ifndef _CLASS_MENUBAR_H_
+#define _CLASS_MENUBAR_H_
+//
+// File : class_menubar.h
+// Creation date : Tue Now 26 13:15:48 CEST 2002 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include <qmenubar.h>
+#include "class_widget.h"
+#include "object_macros.h"
+
+class KviKvsObject_menubar : public KviKvsObject_widget
+{
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_menubar)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+ bool functionInsertItem(KviKvsObjectFunctionCall *c);
+};
+#endif // !_CLASS_MENUBAR_H_
diff --git a/src/modules/objects/class_multilineedit.cpp b/src/modules/objects/class_multilineedit.cpp
new file mode 100644
index 00000000..6b2f8af9
--- /dev/null
+++ b/src/modules/objects/class_multilineedit.cpp
@@ -0,0 +1,1217 @@
+//vim: ts=8
+// File : class_multilineedit.cpp
+// Creation date : Mon Feb 19 00:45:34 CET by Krzysztof Godlewski
+//
+// Modification date: Thu 15 Feb 2005 22:00 :00
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "kvi_error.h"
+#include "kvi_debug.h"
+#include "kvi_locale.h"
+#include "kvi_malloc.h"
+#include <qfile.h>
+#ifdef COMPILE_USE_QT4
+ #include <q3multilineedit.h>
+#include <QTextStream>
+
+#include <q3stylesheet.h>
+#define KviTalMultiLineEdit Q3MultiLineEdit
+#define QTEXTEDIT_AUTO_ALL Q3TextEdit::AutoAll
+#define QTEXTEDIT_AUTO_NONE Q3TextEdit::AutoNone
+#define QTEXTEDIT_AUTO_BULLET_LIST Q3TextEdit::AutoBulletList
+
+#else
+ #include <qtextstream.h>
+
+ #include <qmultilineedit.h>
+ #define KviTalMultiLineEdit QMultiLineEdit
+ #define QTEXTEDIT_AUTO_ALL QTextEdit::AutoAll
+ #define QTEXTEDIT_AUTO_NONE QTextEdit::AutoNone
+ #define QTEXTEDIT_AUTO_BULLET_LIST QTextEdit::AutoBulletList
+
+#endif
+
+
+#include "class_multilineedit.h"
+
+
+//->Tables for Text Format
+static char * const mod_tbl[] = {
+ "PlainText",
+ "RichText",
+ "AutoText",
+ "LogText"
+ };
+
+static int mod_cod[] = {
+ Qt::PlainText,
+ Qt::RichText,
+ Qt::AutoText,
+ Qt::LogText
+ };
+
+#define mod_num (sizeof(mod_tbl) / sizeof(mod_tbl[0]))
+
+
+
+/*
+ @doc: multilineedit
+ @keyterms:
+ multilineedit object class, line editor, input
+ @title:
+ multilineedit class
+ @type:
+ class
+ @short:
+ An editor for inputting larger portions of text
+ @inherits:
+ [class]object[/class]
+ [class]widget[/class]
+ @description:
+ This is class an editor for inputting larger portions of text.
+ Besides that, it has unfinished docs.
+ @functions:
+ !fn: <string> $textLine(<line:integer>)
+ Returns the string at line <line>. Note that it can be an empty
+ string.
+ !fn: $insertLine(<text:string>, <line:integer>)
+ Inserts <text> at line number <line>. If line is less than
+ zero, or larger than the number of rows, the new text is
+ put at the end. If txt contains newline characters, several
+ lines are inserted. The <line> parameter is optional. If it is
+ ommited, the line is put at end.
+ !fn: $removeLine(<line:integer>)
+ Removes line number <line>.
+ !fn: $insertAt(<txt:string>, <line:uinteger>, <col:uinteger>)
+ Inserts txt at line number line, after character number col in
+ the line. If txt contains newline characters, new lines are
+ inserted.
+ !fn: <integer> $numLines()
+ Returns number of lines in the widget.
+ !fn: $setCursorPosition(<line:integer>, <col:uinteger>, <mark:boolean>)
+ Sets the cursor position to character number col in line
+ number line. The parameters are adjusted to lie within the
+ legal range.[br]
+ If mark is 1, the selection is cleared. otherwise it
+ is extended
+ !fn: <line,col:integer> $cursorPosition()
+ Returns current cursor position in "<line:uinteger>, <col:uinteger>" format.
+ !fn: $setReadOnly(<bReadOnly:boolean>)
+ Sets the editor to be read-only if bReadOnly is 1 or
+ removes the read-only status is ReadOnly is 0
+ !fn: <boolean> $atBeginning()
+ Returns 1(TRUE) if the cursor is placed at the beginning of the text; otherwise returns 0(FALSE).
+ !fn: <boolean> $atEnd()
+ Returns 1(TRUE) if the cursor is placed at the end of the text; otherwise returns 0(FALSE).
+ !fn: $setWordWrap(<wrap_mode:string>)
+ Sets the word wrap mode to mode. Valid Values are:[br]
+ - NoWrap - Do not wrap the text.[br]
+ - WidgetWidth - Wrap the text at the current width of the widget.[br]
+ - FixedPixelWidth - Wrap the text at a fixed number of pixels from the widget's left side.[br]
+ - FixedColumnWidth - Wrap the text at a fixed number of character columns from the widget's left side.
+ !fn: <string> $wordWrap()
+ Returns the word wrap mode. NoWrap, WidgetWidth, FixedPixelWidth, FixedColumnWidth.
+ !fn: <string> $text()
+ Returns the multiline edit's text.
+ !fn: <integer> $length()
+ Returns the number of characters in the text This function ignores newlines.
+ !fn: $setMaxLines(<mac_lines:integer>)
+ Sets the max number of the lines to <a>
+ !fn: <integer> $maxLines()
+ Returns the max number of the lines in the multiline edit.
+ !fn: $insert(<text:string>)
+ Inserts text at the current cursor position.
+ !fn: $append(<text:string>)
+ Appends a new paragraph with text to the end of the multiline edit.
+ !fn: $copy()
+ Copies any selected text from selection to the clipboard.
+ !fn: $cut()
+ Copies the selected text from selection to the clipboard and deletes it from the multiline edit.
+ !fn: $paste()
+ Pastes the text from the clipboard into the multiline edit at the current cursor position.
+ !fn: $setFamily(<font_family:string>)
+ Sets the font family of the current format to fontFamily.
+ !fn: $setItalic(<bItalic:boolean>)
+ If the bool value is 1 sets the current format to italic; otherwise, if it's 0 sets the current format to no-italic.
+ !fn: $setBold(<bBold:boolean>)
+ If the bool value is 1 sets the current format to bold; otherwise, if it's 0 sets the current format to no-bold.
+ !fn: $setUnderline(<bUnderline:boolean>)
+ If the bool value is 1 sets the current format to underline; otherwise, if it's 0 sets the current format to no-underline.
+ !fn: <boolean> $italic()
+ Returns 1(TRUE) if the current format is italic; otherwise returns 0(FALSE).
+ !fn: <boolean> $bold()
+ Returns 1(TRUE) if the current format is bold; otherwise returns 0(FALSE).
+ !fn: <boolean> $underline()
+ Returns 1(TRUE) if the current format is underline; otherwise returns 0(FALSE).
+ !fn: $zoomIn(<zoom_range:integer>)
+ Zooms in on the text by making the base font size range points larger.
+ !fn: $zoomOut(<zoom_range:integer>)
+ Zooms out on the text by making the base font size range points smaller.
+ !fn: $zoomTo(<zoom_size:integer>)
+ Zooms the text by making the base font size <size> points.
+ !fn: $undo()
+ Undoes the last operation.
+ !fn: $redo()
+ Redoes the last operation.
+ !fn: $clear()
+ Deletes all the text in the multiline edit.
+ !fn: $setUndoRedoEnabled(<bUndoRedo:boolean>)
+ Sets whether undo/redo is enabled to the bool value.
+ !fn: $setUndoDepth(<undo_depth:integer>)
+ Sets the depth of the undo history to x.
+ !fn: <boolean> $isUndoRedoEnabled()
+ Returns 1 (TRUE) if undo/redo is enabled; otherwise returns 0 (FALSE).
+ !fn: <integer> $undoDepth()
+ Returns the depth of the undo history.
+ !fn: $indent()
+ Re-indents the current paragraph.
+ !fn: $setText(<txt:string>)
+ Sets the text edit's text to txt.
+ !fn: $setPointSize(<point_size:integer))
+ Sets the point size of the font.
+ // findme
+ !fn: $setColor(<rgb_value>)
+ Sets the foreground color of this widget to <rgb_value>:valid values are:
+ - hex string: must be a string with 6 hexadecimal digits (like the ones used to
+ specify colors in html pages). The first two digits specify
+ the RED component, the third and fourth digit specify the GREEN component
+ and the last two specify the BLUE component.
+ For example "FFFF00" means full red, full green and no blue that gives
+ a yellow color, "808000" designates a brown color (dark yellow),
+ "A000A0" is a kind of violet.
+ - array(red:integer,green:integer,blue:integer)
+ - red:integer,green:integer,blue:integer.
+ !fn: $setModified(<bModified:boolean>)
+ Sets whether the document has been modified by the user. Valid Values are 1(TRUE) or 0(FALSE)
+ !fn: $insertParagraph(<text:string>,<paragraph:integer>)
+ Inserts text as a new paragraph at position <paragraph>.
+ !fn: $removeParagraph(<paragraph:integer>)
+ Removes the paragraph <paragraph>.
+ !fn: $setLinkUnderline(<bLinkUnderline:boolean>)
+ Sets to 1 if you want that hypertext links will be underlined; otherwise sets to 0.
+ !fn: $setOverwriteMode(<bOverwrite:boolean>)
+ Sets the Multilineedit edit's overwrite mode to b (1=Enabled or 0=Disabled) .
+ !fn: $setTextFormat(<textformat:string>)
+ Sets the text format. Correct values are RichText, PlainText, LogText or AutoText.
+ !fn: <string> $textFormat()
+ Returns the text format: rich text, plain text, log text or auto text.
+ // findme
+ !fn: $setParagraphBackgroundColor(<paragraph:integer>,<exadecimal color value>)
+ Sets the background color of the paragraph <paragraph> to color value specified.[br]
+ Example: %mymultiline->$setParagraphBackgroundColor(2,0C686F)
+ !fn: $clearParagraphBackground(<paragraph:integer>)
+ Clear the background color of the paragraph <paragraph>.
+ !fn: $loadFile(<path:string>)
+ Load the file specified in the <path>, also html files.
+ !fn: <boolean> $isUndoAvailable ()
+ Returns 1(TRUE) if undo is available; otherwise returns 0(FALSE).
+ !fn: <boolean> $isRedoAvailable ()
+ Returns 1(TRUE) if redo is available; otherwise returns 0(FALSE).
+ !fn: $setAlignment(<alignment:string>)
+ Sets the alignment of the current paragraph to <alignment>. Valid values are:[br]
+ - AlignAuto - Aligns according to the language.[br]
+ - Qt::AlignLeft - Aligns with the left edge.[br]
+ - Qt::AlignRight - Aligns with the right edge.[br]
+ - Qt::AlignCenter - Centers in both dimensions.
+ !fn: $setVerticalAlignment(<vertical_alignment:string>)
+ Sets the vertical alignment of the current format to <Valignemnt>. Valid Values are:[br]
+ - AlignNormal - Normal alignment.[br]
+ - AlignSuperScript - Superscript.[br]
+ - AlignSubScript - Subscript.
+ !fn: $setAutoFormatting(<afvalue:string>)
+ Sets the enabled set of auto formatting features to afvalue. Valid values are: [br]
+ - AutoNone - Do not perform any automatic formatting[br]
+ - AutoBulletList - Only automatically format bulletted lists[br]
+ - AutoAll - Apply all available autoformatting
+ !fn: $setWrapPolicy(<wraph_policy:string>)
+ Sets the word wrap policy, at <wrpl>. Valid values are:[br]
+ - AtWhiteSpace - Don't use this deprecated value (it is a synonym for AtWordBoundary which you should use instead).[br]
+ - Anywhere - Break anywhere, including within words.[br]
+ - AtWordBoundary - Break lines at word boundaries, e.g. spaces or newlines[br]
+ - AtWordOrDocumentBoundary - Break lines at whitespace, e.g. spaces or newlines if possible. Break it anywhere otherwise.[br]
+ !fn: <integer> $paragraphs()
+ Returns the number of paragraphs in the text.
+ !fn: <integer> $lines()
+ Returns the number of lines in the multilineedit.
+ !fn: <integer> $linesOfParagraph(<paragraph:integer>)
+ Returns the number of lines in paragraph <paragraph>, or -1 if there is no paragraph with index <paragraph>.
+ !fn: <integer> $lineOfChar(<paragraph:integer>,<index:integer>)
+ Returns the line number of the line in paragraph par in which the character at position index appears.[br]
+ If there is no such paragraph or no such character at the index position -1 is returned.
+ !fn: <integer> $paragraphLenght(<paragraph:integer>)
+ Returns the length of the paragraph par, or -1 if there is no paragraph with index par.
+
+*/
+
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_mledit,"multilineedit","widget")
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"textLine", functionTextLine)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"insertLine", functionInsertLine)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"removeLine", functionRemoveLine)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"insertAt", functionInsertAt)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"numLines", functionNumLines)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"setCursorPosition", functionSetCursorPosition)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"cursorPosition", functionCursorPosition)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"atBeginning", functionAtBeginning)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"atEnd", functionAtEnd)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"setWordWrap", functionSetWordWrap)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"wordWrap", functionWordWrap)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"text", functionText)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"length", functionLength);
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"setMaxLines", functionSetMaxLines)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"maxLines", functionMaxLines)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"insert", functionInsert)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"append", functionAppend)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"copy", functionCopy)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"cut", functionCut)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"paste", functionPaste)
+
+//->Set Style
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"setFamily" , functionsetFamily)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"setItalic", functionsetItalic)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"setBold", functionsetBold)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"setUnderline", functionsetUnderline)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"italic", functionitalic)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"bold", functionbold)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"underline", functionunderline)
+//->Zoom In, Out, To
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"zoomIn", functionzoomIn)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"zoomOut", functionzoomOut)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"zoomTo", functionzoomTo)
+//->Undo & Redo
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"undo", functionundo)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"redo", functionredo)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"del", functiondel)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"clear", functionclear)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"setUndoRedoEnabled", functionsetUndoRedoEnabled)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"setUndoDepth", functionsetUndoDepth)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"isUndoRedoEnabled", functionsetUndoRedoEnabled)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"undoDepth", functionundoDepth)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"indent", functionundoDepth)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"isUndoAvailable", functionisUndoAvailable)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"isUndoRedoAvailable", functionisRedoAvailable)
+//->Text color & others
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"setText", functionsetText)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"setPointSize", functionsetPointSize)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"setColor", functionsetColor)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"setModified" , functionsetModified)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"setLinkUnderline" , functionsetLinkUnderline)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"setOverwriteMode" , functionsetOverwriteMode)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"setReadOnly",functionSetReadOnly)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"setTextFormat" , functionsetTextFormat)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"textFormat" , functiontextFormat)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"setParagraphBackgroundColor", functionsetParagraphBackgroundColor)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"clearParagraphBackgroundColor", functionsetParagraphBackgroundColor)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"loadFile" , functionloadFile); // let's fantasy
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"setAlignment" , functionsetAlignment)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"setAutoFormatting" , functionsetAutoFormatting)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"setVerticalAlignment" , functionsetVerticalAlignment)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"setWrapPolicy" , functionsetWrapPolicy)
+//->Paragraph & line
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"paragraphs" , functionparagraphs)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"paragraphLength" , functionparagraphLength)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"insertParagraph" , functioninsertParagraph)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"removeParagraph" , functionremoveParagraph)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"lines" , functionlines)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"lineOfChar" , functionlineOfChar)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"linesOfParagraph" , functionlinesOfParagraph)
+ KVSO_REGISTER_HANDLER(KviKvsObject_mledit,"selectAll" , functionselectAll)
+
+
+KVSO_END_REGISTERCLASS(KviKvsObject_mledit)
+
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_mledit,KviKvsObject_widget)
+
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_mledit)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_mledit)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_mledit)
+
+bool KviKvsObject_mledit::init(KviKvsRunTimeContext * pContext,KviKvsVariantList * pParams)
+{
+ setObject(new KviTalMultiLineEdit(parentScriptWidget(),getName()),true);
+ return true;
+}
+
+
+bool KviKvsObject_mledit::functionSetReadOnly(KviKvsObjectFunctionCall *c)
+
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((KviTalMultiLineEdit *)widget())->setReadOnly(bEnabled);
+ return true;
+}
+
+
+bool KviKvsObject_mledit::functionTextLine(KviKvsObjectFunctionCall *c)
+
+{
+ kvs_int_t iLine;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("line",KVS_PT_INT,0,iLine)
+ KVSO_PARAMETERS_END(c)
+ if(!widget())return true;
+ if(iLine > ((KviTalMultiLineEdit *)widget())->numLines() || iLine < 0) c->warning(__tr2qs("No such line number"));
+ else
+ c->returnValue()->setString(((KviTalMultiLineEdit *)widget())->textLine(iLine));
+ return true;
+}
+
+bool KviKvsObject_mledit::functionInsertLine(KviKvsObjectFunctionCall *c)
+
+{
+ kvs_int_t iLine;
+ QString szInsert;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szInsert)
+ KVSO_PARAMETER("line",KVS_PT_INT,KVS_PF_OPTIONAL,iLine)
+ KVSO_PARAMETERS_END(c)
+ if(!widget())return true;
+ ((KviTalMultiLineEdit *)widget())->insertLine(szInsert,iLine);
+ return true;
+}
+
+bool KviKvsObject_mledit::functionRemoveLine(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iLine;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("line",KVS_PT_INT,0,iLine)
+ KVSO_PARAMETERS_END(c)
+ if(!widget())return true;
+ if(iLine > ((KviTalMultiLineEdit *)widget())->numLines() || iLine < 0)
+ c->warning("No such line number");
+ else ((KviTalMultiLineEdit *)widget())->removeLine(iLine);
+ return true;
+}
+
+bool KviKvsObject_mledit::functionInsertAt(KviKvsObjectFunctionCall *c)
+
+{
+ kvs_uint_t iLine,iCol;
+ QString szInsert;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szInsert)
+ KVSO_PARAMETER("line",KVS_PT_UNSIGNEDINTEGER,0,iLine)
+ KVSO_PARAMETER("col",KVS_PT_UNSIGNEDINTEGER,0,iCol)
+ KVSO_PARAMETERS_END(c)
+ if(!widget())return true;
+ if(iLine < 0 || iCol < 0 || iLine > ((KviTalMultiLineEdit *)widget())->numLines())
+ c->warning("No such line number");
+ else
+ ((KviTalMultiLineEdit *)widget())->insertAt(szInsert,iLine,iCol);
+ return true;
+}
+
+bool KviKvsObject_mledit::functionNumLines(KviKvsObjectFunctionCall *c)
+
+{
+ if(widget()) c->returnValue()->setInteger(((KviTalMultiLineEdit *)widget())->numLines());
+ return true;
+}
+
+bool KviKvsObject_mledit::functionSetCursorPosition(KviKvsObjectFunctionCall *c)
+{
+
+ bool bFlag;
+ kvs_uint_t iLine,iCol;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("line",KVS_PT_UNSIGNEDINTEGER,0,iLine)
+ KVSO_PARAMETER("col",KVS_PT_UNSIGNEDINTEGER,0,iCol)
+ KVSO_PARAMETER("mark",KVS_PT_BOOL,0,bFlag)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((KviTalMultiLineEdit *)widget())->setCursorPosition(iLine, iCol, bFlag);
+ return true;
+}
+
+bool KviKvsObject_mledit::functionCursorPosition(KviKvsObjectFunctionCall *c)
+{
+ if(!widget()) return true;
+ int line, col;
+ #if QT_VERSION >= 300
+ ((KviTalMultiLineEdit *)widget())->getCursorPosition(&line, &col);
+ #else
+ ((KviTalMultiLineEdit *)widget())->cursorPosition(&line, &col);
+ #endif
+ KviKvsArray * a = new KviKvsArray();
+ a->set(0,new KviKvsVariant((kvs_int_t)line));
+ a->set(1,new KviKvsVariant((kvs_int_t)col));
+ c->returnValue()->setArray(a);
+ return true;
+}
+
+bool KviKvsObject_mledit::functionAtBeginning(KviKvsObjectFunctionCall *c)
+{
+ if(!widget()) return true;
+ c->returnValue()->setBoolean(((KviTalMultiLineEdit *)widget())->atBeginning());
+ return true;
+}
+
+bool KviKvsObject_mledit::functionAtEnd(KviKvsObjectFunctionCall *c)
+{
+ if(!widget()) return true;
+ c->returnValue()->setBoolean(((KviTalMultiLineEdit *)widget())->atEnd());
+ return true;
+}
+
+bool KviKvsObject_mledit::functionSetWordWrap(KviKvsObjectFunctionCall *c)
+{
+ if(!widget())return true;
+ QString szWrap;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("word_wrap",KVS_PT_STRING,0,szWrap)
+ KVSO_PARAMETERS_END(c)
+ if(KviQString::equalCI(szWrap,"NoWrap"))
+ ((KviTalMultiLineEdit *)widget())->setWordWrap(KviTalMultiLineEdit::NoWrap);
+ else if(KviQString::equalCI(szWrap,"WidgetWidth"))
+ ((KviTalMultiLineEdit *)widget())->setWordWrap(KviTalMultiLineEdit::WidgetWidth);
+ else if(KviQString::equalCI(szWrap,"FixedPixelWidth"))
+ ((KviTalMultiLineEdit *)widget())->setWordWrap(KviTalMultiLineEdit::FixedPixelWidth);
+ else if(KviQString::equalCI(szWrap,"FixedColumnWidth"))
+ ((KviTalMultiLineEdit *)widget())->setWordWrap(KviTalMultiLineEdit::FixedColumnWidth);
+ else c->warning(__tr2qs("Unknown word wrap '%Q'"),&szWrap);
+ return true;
+}
+
+bool KviKvsObject_mledit::functionsetWrapPolicy(KviKvsObjectFunctionCall *c)
+{
+ if(!widget())return true;
+ QString szPolicy;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("wrap_policy",KVS_PT_STRING,0,szPolicy)
+ KVSO_PARAMETERS_END(c)
+ if(KviQString::equalCI(szPolicy,"AtWhiteSpace)"))
+ ((KviTalMultiLineEdit *)widget())->setWrapPolicy(KviTalMultiLineEdit::AtWhiteSpace);
+ else if(KviQString::equalCI(szPolicy,"Anywhere"))
+ ((KviTalMultiLineEdit *)widget())->setWrapPolicy(KviTalMultiLineEdit::Anywhere);
+ else if(KviQString::equalCI(szPolicy,"AtWordBoundary"))
+ ((KviTalMultiLineEdit *)widget())->setWrapPolicy(KviTalMultiLineEdit::AtWordBoundary);
+ else if(KviQString::equalCI(szPolicy,"AtWordOrDocumentBoundary"))
+ ((KviTalMultiLineEdit *)widget())->setWrapPolicy(KviTalMultiLineEdit::AtWordOrDocumentBoundary);
+ else c->warning(__tr2qs("Unknown wrap policy'%Q'"),&szPolicy);
+ return true;
+}
+
+bool KviKvsObject_mledit::functionWordWrap(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ c->returnValue()->setBoolean(((KviTalMultiLineEdit *)widget())->wordWrap() & KviTalMultiLineEdit::WidgetWidth);
+ return true;
+}
+
+bool KviKvsObject_mledit::functionText(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ c->returnValue()->setString(((KviTalMultiLineEdit *)widget())->text());
+ return true;
+}
+
+bool KviKvsObject_mledit::functionLength(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ c->returnValue()->setInteger(((KviTalMultiLineEdit *)widget())->length());
+ return true;
+}
+
+bool KviKvsObject_mledit::functionSetMaxLines(KviKvsObjectFunctionCall *c)
+{
+
+ kvs_uint_t imaxLines;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("max_lines",KVS_PT_UNSIGNEDINTEGER,0,imaxLines)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((KviTalMultiLineEdit *)widget())->setMaxLines(imaxLines);
+ return true;
+}
+
+bool KviKvsObject_mledit::functionMaxLines(KviKvsObjectFunctionCall *c)
+
+{
+ if(widget())
+ c->returnValue()->setInteger(((KviTalMultiLineEdit *)widget())->maxLines());
+ return true;
+}
+
+bool KviKvsObject_mledit::functionInsert(KviKvsObjectFunctionCall *c)
+
+{
+ QString szInsert;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szInsert)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((KviTalMultiLineEdit *)widget())->insert(szInsert);
+ return true;
+}
+
+bool KviKvsObject_mledit::functionAppend(KviKvsObjectFunctionCall *c)
+
+{
+ QString szAppend;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szAppend)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((KviTalMultiLineEdit *)widget())->append(szAppend);
+ return true;
+}
+
+bool KviKvsObject_mledit::functionCopy(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ ((KviTalMultiLineEdit *)widget())->copy();
+ return true;
+}
+
+bool KviKvsObject_mledit::functionCut(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ ((KviTalMultiLineEdit *)widget())->cut();
+ return true;
+}
+
+bool KviKvsObject_mledit::functionPaste(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ ((KviTalMultiLineEdit *)widget())->paste();
+ return true;
+}
+//->Set Bold, Italic, Underline
+bool KviKvsObject_mledit::functionsetBold(KviKvsObjectFunctionCall *c)
+{
+ bool bFlag;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bBold",KVS_PT_BOOL,0,bFlag)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((KviTalMultiLineEdit *)widget())->setBold(bFlag);
+ return true;
+}
+bool KviKvsObject_mledit::functionsetUnderline(KviKvsObjectFunctionCall *c)
+{
+ bool bFlag;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bUnderline",KVS_PT_BOOL,0,bFlag)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((KviTalMultiLineEdit *)widget())->setUnderline(bFlag);
+ return true;
+}
+
+bool KviKvsObject_mledit::functionsetItalic(KviKvsObjectFunctionCall *c)
+{
+ bool bFlag;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bItalic",KVS_PT_BOOL,0,bFlag)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((KviTalMultiLineEdit *)widget())->setItalic(bFlag);
+ return true;
+}
+
+
+//-->Returns Italic , Bold, Underline.
+bool KviKvsObject_mledit::functionbold(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ c->returnValue()->setBoolean(((KviTalMultiLineEdit *)widget())->bold());
+ return true;
+}
+bool KviKvsObject_mledit::functionitalic(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ c->returnValue()->setBoolean(((KviTalMultiLineEdit *)widget())->italic());
+ return true;
+}
+bool KviKvsObject_mledit::functionunderline(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ c->returnValue()->setBoolean(((KviTalMultiLineEdit *)widget())->underline());
+ return true;
+}
+//->Zoom In, out at
+bool KviKvsObject_mledit::functionzoomIn(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iZoom;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("zoom_value",KVS_PT_INT,KVS_PF_OPTIONAL,iZoom)
+ KVSO_PARAMETERS_END(c)
+ if (!widget()) return true;
+ if (!iZoom)
+ ((KviTalMultiLineEdit *)object())->zoomIn();
+ else
+ ((KviTalMultiLineEdit *)object())->zoomIn(iZoom);
+ return true;
+}
+
+bool KviKvsObject_mledit::functionzoomOut(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iZoom;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("zoom_value",KVS_PT_INT,KVS_PF_OPTIONAL,iZoom)
+ KVSO_PARAMETERS_END(c)
+ if (!widget()) return true;
+ if (!iZoom)
+ ((KviTalMultiLineEdit *)object())->zoomOut();
+ else
+ ((KviTalMultiLineEdit *)object())->zoomOut(iZoom);
+ return true;
+}
+bool KviKvsObject_mledit::functionzoomTo(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iZoom;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("zoom_size",KVS_PT_INT,0,iZoom)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((KviTalMultiLineEdit *)object())->zoomTo(iZoom);
+ return true;
+}
+//-> Undo & Redo functions
+
+bool KviKvsObject_mledit::functionundo(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ ((KviTalMultiLineEdit *)widget())->undo();
+ return true;
+}
+bool KviKvsObject_mledit::functionredo(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ ((KviTalMultiLineEdit *)widget())->redo();
+ return true;
+}
+bool KviKvsObject_mledit::functionclear(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ ((KviTalMultiLineEdit *)widget())->clear();
+ return true;
+}
+bool KviKvsObject_mledit::functiondel(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ ((KviTalMultiLineEdit *)widget())->del();
+ return true;
+}
+bool KviKvsObject_mledit::functionindent(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ ((KviTalMultiLineEdit *)widget())->indent();
+ return true;
+}
+
+bool KviKvsObject_mledit::functionsetUndoRedoEnabled(KviKvsObjectFunctionCall *c)
+{
+ bool bFlag;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bUndoredo",KVS_PT_BOOL,0,bFlag)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((KviTalMultiLineEdit *)widget())->setUndoRedoEnabled(bFlag);
+ return true;
+}
+
+bool KviKvsObject_mledit::functionisUndoRedoEnabled(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ c->returnValue()->setBoolean(((KviTalMultiLineEdit *)widget())->isUndoRedoEnabled());
+ return true;
+}
+bool KviKvsObject_mledit::functionisUndoAvailable(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ c->returnValue()->setBoolean(((KviTalMultiLineEdit *)widget())->isUndoAvailable());
+ return true;
+}
+bool KviKvsObject_mledit::functionisRedoAvailable(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ c->returnValue()->setBoolean(((KviTalMultiLineEdit *)widget())->isRedoAvailable());
+ return true;
+}
+bool KviKvsObject_mledit::functionsetUndoDepth(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iDepth;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("undo_depth",KVS_PT_UNSIGNEDINTEGER,0,iDepth)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((KviTalMultiLineEdit *)object())->setUndoDepth(iDepth);
+ return true;
+
+}
+bool KviKvsObject_mledit::functionundoDepth(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ c->returnValue()->setInteger(((KviTalMultiLineEdit *)widget())->undoDepth());
+ return true;
+}
+
+//-->Text & Color & Family
+// Findme
+bool KviKvsObject_mledit::functionsetText(KviKvsObjectFunctionCall *c)
+{
+ QString szText;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szText)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((KviTalMultiLineEdit *)widget())->setText(szText);
+ return true;
+}
+bool KviKvsObject_mledit::functionsetColor(KviKvsObjectFunctionCall *c)
+{
+ KviKvsVariant * pColArray;
+ kvs_int_t iColR,iColG,iColB;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("red_or_array",KVS_PT_VARIANT,0,pColArray)
+ KVSO_PARAMETER("green",KVS_PT_INT,KVS_PF_OPTIONAL,iColG)
+ KVSO_PARAMETER("blue",KVS_PT_INT,KVS_PF_OPTIONAL,iColB)
+ KVSO_PARAMETERS_END(c)
+ if(pColArray->isArray())
+ {
+ if(pColArray->array()->size() < 3)
+ {
+ c->error(__tr2qs("The array passed as parameter must contain at least 3 elements"));
+ return false;
+ }
+ KviKvsVariant * pColR = pColArray->array()->at(0);
+ KviKvsVariant * pColG = pColArray->array()->at(1);
+ KviKvsVariant * pColB = pColArray->array()->at(2);
+
+ if(!(pColR && pColG && pColB))
+ {
+ c->error(__tr2qs("One of the colors array parameters is empty"));
+ return false;
+ }
+ if(!(pColR->asInteger(iColR) && pColG->asInteger(iColG) && pColB->asInteger(iColB)))
+ {
+ c->error(__tr2qs("One of the colors array parameters didn't evaluate to an integer"));
+ return false;
+ }
+
+ } else {
+ if (c->params()->count()==1)
+ {
+ bool bOk,bOk1,bOk2;
+ QString value;
+ pColArray->asString(value);
+ int i=0;
+ if (value.length()!=6)
+ {
+ c->warning(__tr2qs("A string of 6 digits hex is required"));
+ return true;
+ }
+ QString buffer(value.mid(0,2));
+ iColR=buffer.toInt(&bOk,16);
+ buffer=value.mid(2,2);
+ iColG=buffer.toInt(&bOk1,16);
+ buffer=value.mid(4,2);
+ iColB=buffer.toInt(&bOk2,16);
+ if (!bOk || !bOk1 || !bOk2)
+ {
+ c->warning(__tr2qs("Not an hex digits"));
+ return true;
+ }
+ if (widget()) ((KviTalMultiLineEdit *)widget())->setColor(QColor(iColR,iColG,iColB));
+ return true;
+ }
+ if(c->params()->count() < 3)
+ {
+ c->error(__tr2qs("$setColor requires either an array as first parameter or three integers"));
+ return false;
+ }
+ if(!pColArray->asInteger(iColR))
+ {
+ c->error(__tr2qs("The first parameter didn't evaluate to an array nor an integer"));
+ return false;
+ }
+ }
+ if (widget()) ((KviTalMultiLineEdit *)widget())->setColor(QColor(iColR,iColG,iColB));
+ return true;
+}
+
+bool KviKvsObject_mledit::functionsetPointSize(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uPointSize;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("point_size",KVS_PT_UNSIGNEDINTEGER,0,uPointSize)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((KviTalMultiLineEdit *)widget())->setPointSize(uPointSize);
+ return true;
+}
+
+bool KviKvsObject_mledit::functionsetLinkUnderline(KviKvsObjectFunctionCall *c)
+{
+ bool bFlag;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bLinkunderline",KVS_PT_BOOL,0,bFlag)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((KviTalMultiLineEdit *)widget())->setLinkUnderline(bFlag);
+ return true;
+}
+
+bool KviKvsObject_mledit::functionsetFamily(KviKvsObjectFunctionCall *c)
+{
+ QString szFamily;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("family",KVS_PT_STRING,0,szFamily)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((KviTalMultiLineEdit *)widget())->setFamily(szFamily);
+ return true;
+}
+
+bool KviKvsObject_mledit::functionsetModified(KviKvsObjectFunctionCall *c)
+{
+ bool bFlag;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bModified",KVS_PT_BOOL,0,bFlag)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((KviTalMultiLineEdit *)widget())->setModified(bFlag);
+ return true;
+}
+
+bool KviKvsObject_mledit::functioninsertParagraph(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iParagraph;
+ QString szText;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szText)
+ KVSO_PARAMETER("paragraph",KVS_PT_INT,0,iParagraph)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((KviTalMultiLineEdit *)widget())->insertParagraph(szText,iParagraph);
+ return true;
+}
+
+bool KviKvsObject_mledit::functionremoveParagraph(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iParagraph;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("paragraph",KVS_PT_INT,0,iParagraph)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((KviTalMultiLineEdit*)widget())->removeParagraph(iParagraph);
+ return true;
+}
+
+bool KviKvsObject_mledit::functionsetOverwriteMode(KviKvsObjectFunctionCall *c)
+{
+ bool bFlag;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bOverwritemode",KVS_PT_BOOL,0,bFlag)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((KviTalMultiLineEdit *)widget())->setOverwriteMode(bFlag);
+ return true;
+}
+
+bool KviKvsObject_mledit::functiontextFormat(KviKvsObjectFunctionCall *c)
+
+{
+ if(!widget())return true;
+ int fstyle = ((KviTalMultiLineEdit *)widget())->textFormat();
+ QString format="";
+ for(unsigned int i = 0; i < mod_num; i++)
+ {
+ if(fstyle & mod_cod[i])
+ {
+ format=mod_tbl[i];
+ }
+ }
+ c->returnValue()->setString(format);
+ return true;
+
+}
+bool KviKvsObject_mledit::functionsetTextFormat(KviKvsObjectFunctionCall *c)
+
+{
+ QString szFormat;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("textformat",KVS_PT_STRING,0,szFormat)
+ KVSO_PARAMETERS_END(c)
+ if(!widget()) return true;
+ if(KviQString::equalCI(szFormat,"PlainText"))
+ ((KviTalMultiLineEdit *)widget())->setTextFormat(Qt::PlainText);
+ else if(KviQString::equalCI(szFormat,"RichText"))
+ ((KviTalMultiLineEdit *)widget())->setTextFormat(Qt::RichText);
+ else if(KviQString::equalCI(szFormat,"LogText"))
+ ((KviTalMultiLineEdit *)widget())->setTextFormat(Qt::LogText);
+ else if(KviQString::equalCI(szFormat,"AutoText"))
+ ((KviTalMultiLineEdit *)widget())->setTextFormat(Qt::AutoText);
+ else c->warning(__tr2qs("Unknown text format '%Q'"),&szFormat);
+ return true;
+}
+// findme
+bool KviKvsObject_mledit::functionsetParagraphBackgroundColor(KviKvsObjectFunctionCall *c)
+{
+ KviKvsVariant * pColArray;
+ kvs_int_t iParagraph,iColR,iColG,iColB;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("paragraph",KVS_PT_INT,0,iParagraph)
+ KVSO_PARAMETER("red_or_array",KVS_PT_VARIANT,0,pColArray)
+ KVSO_PARAMETER("green",KVS_PT_INT,KVS_PF_OPTIONAL,iColG)
+ KVSO_PARAMETER("blue",KVS_PT_INT,KVS_PF_OPTIONAL,iColB)
+ KVSO_PARAMETERS_END(c)
+ if(pColArray->isArray())
+ {
+ if(pColArray->array()->size() < 3)
+ {
+ c->error(__tr2qs("The array passed as parameter must contain at least 3 elements"));
+ return false;
+ }
+ KviKvsVariant * pColR = pColArray->array()->at(0);
+ KviKvsVariant * pColG = pColArray->array()->at(1);
+ KviKvsVariant * pColB = pColArray->array()->at(2);
+
+ if(!(pColR && pColG && pColB))
+ {
+ c->error(__tr2qs("One of the colors array parameters is empty"));
+ return false;
+ }
+ if(!(pColR->asInteger(iColR) && pColG->asInteger(iColG) && pColB->asInteger(iColB)))
+ {
+ c->error(__tr2qs("One of the colors array parameters didn't evaluate to an integer"));
+ return false;
+ }
+
+ } else {
+ if (c->params()->count()==1)
+ {
+ bool bOk,bOk1,bOk2;
+ QString value;
+ pColArray->asString(value);
+ int i=0;
+ if (value.length()!=6)
+ {
+ c->warning(__tr2qs("A string of 6 digits hex is required"));
+ return true;
+ }
+ QString buffer(value.mid(0,2));
+ iColR=buffer.toInt(&bOk,16);
+ buffer=value.mid(2,2);
+ iColG=buffer.toInt(&bOk1,16);
+ buffer=value.mid(4,2);
+ iColB=buffer.toInt(&bOk2,16);
+ if (!bOk || !bOk1 || !bOk2)
+ {
+ c->warning(__tr2qs("Not an hex digits"));
+ return true;
+ }
+ if (widget()) ((KviTalMultiLineEdit *)widget())->setParagraphBackgroundColor(iParagraph,QColor(iColR,iColG,iColB));
+ return true;
+ }
+ if(c->params()->count() < 3)
+ {
+ c->error(__tr2qs("$setColor requires either an array as first parameter or three integers"));
+ return false;
+ }
+ if(!pColArray->asInteger(iColR))
+ {
+ c->error(__tr2qs("The first parameter didn't evaluate to an array nor an integer"));
+ return false;
+ }
+ }
+ if (widget()) ((KviTalMultiLineEdit *)widget())->setParagraphBackgroundColor(iParagraph,QColor(iColR,iColG,iColB));
+ return true;
+}
+
+bool KviKvsObject_mledit::functionclearParagraphBackground(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iParagraph;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("paragraph",KVS_PT_INT,0,iParagraph)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((KviTalMultiLineEdit*)widget())->clearParagraphBackground(iParagraph);
+ return true;
+}
+
+bool KviKvsObject_mledit::functionloadFile(KviKvsObjectFunctionCall *c)
+{
+ QString szFile;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("file_name",KVS_PT_STRING,0,szFile)
+ KVSO_PARAMETERS_END(c)
+ if ( !QFile::exists(szFile))
+ {
+ c->warning(__tr2qs(" I can't find the specified file '%Q'."),&szFile);
+ return true;
+ }
+
+ QFile file( szFile );
+ if ( !file.open( IO_ReadOnly ) )
+ {
+ c->warning(__tr2qs(" I cannot read the file %Q'."),&szFile);
+ return true;
+ }
+
+ QTextStream ts( &file );
+ QString txt = ts.read();
+#ifdef COMPILE_USE_QT4
+ if ( !Q3StyleSheet::mightBeRichText( txt ) )
+ txt = Q3StyleSheet::convertFromPlainText( txt, Q3StyleSheetItem::WhiteSpacePre );
+#else
+ if ( !QStyleSheet::mightBeRichText( txt ) )
+ txt = QStyleSheet::convertFromPlainText( txt, QStyleSheetItem::WhiteSpacePre );
+#endif
+ ((KviTalMultiLineEdit *)widget())->setText( txt );
+
+ file.close();
+ return true;
+}
+
+bool KviKvsObject_mledit::functionsetAlignment(KviKvsObjectFunctionCall *c)
+
+{
+ QString szAlignment;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("alignment",KVS_PT_STRING,0,szAlignment)
+ KVSO_PARAMETERS_END(c)
+ if(!widget()) return true;
+ if(KviQString::equalCI(szAlignment,"Left"))
+ ((KviTalMultiLineEdit *)widget())->setAlignment(Qt::AlignLeft);
+ else if(KviQString::equalCI(szAlignment,"Right"))
+ ((KviTalMultiLineEdit *)widget())->setAlignment(Qt::AlignRight);
+ else if(KviQString::equalCI(szAlignment,"Center"))
+ ((KviTalMultiLineEdit *)widget())->setAlignment(Qt::AlignCenter);
+ else if(KviQString::equalCI(szAlignment,"Justify"))
+ ((KviTalMultiLineEdit *)widget())->setAlignment(Qt::AlignJustify);
+ else c->warning(__tr2qs("Unknown alignment '%Q'"),&szAlignment);
+ return true;
+}
+
+bool KviKvsObject_mledit::functionsetAutoFormatting(KviKvsObjectFunctionCall *c)
+
+{
+ QString szAutoformatting;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("autoformatting",KVS_PT_STRING,0,szAutoformatting)
+ KVSO_PARAMETERS_END(c)
+ if(!widget()) return true;
+ if(KviQString::equalCI(szAutoformatting,"AutoNone"))
+ ((KviTalMultiLineEdit *)widget())->setAutoFormatting(QTEXTEDIT_AUTO_NONE);
+ else if(KviQString::equalCI(szAutoformatting,"BulletList"))
+ ((KviTalMultiLineEdit *)widget())->setAutoFormatting(QTEXTEDIT_AUTO_BULLET_LIST);
+ else if(KviQString::equalCI(szAutoformatting,"AutoAll"))
+ ((KviTalMultiLineEdit *)widget())->setAutoFormatting(QTEXTEDIT_AUTO_ALL);
+ else c->warning(__tr2qs("Unknown auto formatting mode '%Q'"),&szAutoformatting);
+ return true;
+}
+
+bool KviKvsObject_mledit::functionsetVerticalAlignment(KviKvsObjectFunctionCall *c)
+
+{
+ QString szValignment;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("alignment",KVS_PT_STRING,0,szValignment)
+ KVSO_PARAMETERS_END(c)
+ if(!widget()) return true;
+ if(KviQString::equalCI(szValignment,"Normal"))
+ ((KviTalMultiLineEdit *)widget())->setVerticalAlignment(KviTalMultiLineEdit::AlignNormal);
+ else if(KviQString::equalCI(szValignment,"SuperScript"))
+ ((KviTalMultiLineEdit *)widget())->setVerticalAlignment(KviTalMultiLineEdit::AlignSuperScript);
+ else if(KviQString::equalCI(szValignment,"SubScript"))
+ ((KviTalMultiLineEdit *)widget())->setVerticalAlignment(KviTalMultiLineEdit::AlignSubScript);
+ else c->warning(__tr2qs("Unknown vertical alignment '%Q'"),&szValignment);
+ return true;
+}
+
+bool KviKvsObject_mledit::functionparagraphs(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ c->returnValue()->setInteger(((KviTalMultiLineEdit *)widget())->paragraphs());
+ return true;
+
+}
+
+bool KviKvsObject_mledit::functionlines(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ c->returnValue()->setInteger(((KviTalMultiLineEdit *)widget())->lines());
+ return true;
+}
+
+bool KviKvsObject_mledit::functionlineOfChar(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iPara,iIndex;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("paragraph",KVS_PT_INT,0,iPara)
+ KVSO_PARAMETER("index",KVS_PT_INT,0,iIndex)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ c->returnValue()->setInteger(((KviTalMultiLineEdit *)widget())->lineOfChar(iPara,iIndex));
+ return true;
+}
+
+bool KviKvsObject_mledit::functionlinesOfParagraph(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iLine;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("paragraph",KVS_PT_INT,0,iLine)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ c->returnValue()->setInteger(((KviTalMultiLineEdit *)widget())->linesOfParagraph(iLine));
+ return true;
+}
+
+
+bool KviKvsObject_mledit::functionparagraphLength(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iParagraph;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("paragraph",KVS_PT_INT,0,iParagraph)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ c->returnValue()->setInteger(((KviTalMultiLineEdit *)widget())->paragraphLength(iParagraph));
+ return true;
+
+}
+
+bool KviKvsObject_mledit::functionselectAll(KviKvsObjectFunctionCall *c)
+{
+ bool bFlag;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bSelectall",KVS_PT_BOOL,0,bFlag)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((KviTalMultiLineEdit *)widget())->selectAll(bFlag);
+ return true;
+}
+
+
+
+#include "m_class_multilineedit.moc"
diff --git a/src/modules/objects/class_multilineedit.h b/src/modules/objects/class_multilineedit.h
new file mode 100644
index 00000000..8639266e
--- /dev/null
+++ b/src/modules/objects/class_multilineedit.h
@@ -0,0 +1,110 @@
+#ifndef _CLASS_MULTILINEEDIT_H_
+#define _CLASS_MULTILINEEDIT_H_
+//vim: ts=8
+// File : class_multilineedit.cpp
+// Creation date : Mon Feb 19 00:45:34 CET by Krzysztof Godlewski
+//
+// Modification date: Thu 15 Feb 2005 22:00 :00
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "class_widget.h"
+#include "object_macros.h"
+
+class KviKvsObject_mledit : public KviKvsObject_widget
+{
+ Q_OBJECT
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_mledit)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+ bool functionTextLine(KviKvsObjectFunctionCall *c);
+ bool functionInsertLine(KviKvsObjectFunctionCall *c);
+ bool functionRemoveLine(KviKvsObjectFunctionCall *c);
+ bool functionInsertAt(KviKvsObjectFunctionCall *c);
+ bool functionNumLines(KviKvsObjectFunctionCall *c);
+ bool functionSetCursorPosition(KviKvsObjectFunctionCall *c);
+ bool functionAtBeginning(KviKvsObjectFunctionCall *c);
+ bool functionAtEnd(KviKvsObjectFunctionCall *c);
+ bool functionSetWordWrap(KviKvsObjectFunctionCall *c);
+ bool functionWordWrap(KviKvsObjectFunctionCall *c);
+ bool functionCursorPosition(KviKvsObjectFunctionCall *c);
+ bool functionText(KviKvsObjectFunctionCall *c);
+ bool functionLength(KviKvsObjectFunctionCall *c);
+ bool functionSetMaxLines(KviKvsObjectFunctionCall *c);
+ bool functionMaxLines(KviKvsObjectFunctionCall *c);
+ bool functionSetReadOnly(KviKvsObjectFunctionCall *c);
+ bool functionInsert(KviKvsObjectFunctionCall *c);
+ bool functionAppend(KviKvsObjectFunctionCall *c);
+ bool functionCopy(KviKvsObjectFunctionCall *c);
+ bool functionPaste(KviKvsObjectFunctionCall *c);
+ bool functionCut(KviKvsObjectFunctionCall *c);
+// |-G&N add-|
+ bool functionsetItalic(KviKvsObjectFunctionCall *c);
+ bool functionitalic(KviKvsObjectFunctionCall *c);
+ bool functionsetBold(KviKvsObjectFunctionCall *c);
+ bool functionbold(KviKvsObjectFunctionCall *c);
+ bool functionsetUnderline(KviKvsObjectFunctionCall *c);
+ bool functionunderline(KviKvsObjectFunctionCall *c);
+ bool functionzoomIn(KviKvsObjectFunctionCall *c);
+ bool functionzoomOut(KviKvsObjectFunctionCall *c);
+ bool functionzoomTo(KviKvsObjectFunctionCall *c);
+ bool functionundo(KviKvsObjectFunctionCall *c);
+ bool functionredo(KviKvsObjectFunctionCall *c);
+ bool functiondel(KviKvsObjectFunctionCall *c);
+ bool functionclear(KviKvsObjectFunctionCall *c);
+ bool functionindent(KviKvsObjectFunctionCall *c);
+ bool functionsetUndoRedoEnabled(KviKvsObjectFunctionCall *c);
+ bool functionsetUndoDepth(KviKvsObjectFunctionCall *c);
+ bool functionisUndoRedoEnabled(KviKvsObjectFunctionCall *c);
+ bool functionundoDepth(KviKvsObjectFunctionCall *c);
+ bool functionsetText(KviKvsObjectFunctionCall *c);
+ bool functionsetPointSize(KviKvsObjectFunctionCall *c);
+ bool functionsetColor(KviKvsObjectFunctionCall *c);
+ bool functionisUndoAvailable(KviKvsObjectFunctionCall *c);
+ bool functionisRedoAvailable(KviKvsObjectFunctionCall *c);
+ bool functionsetLinkUnderline(KviKvsObjectFunctionCall *c);
+ bool functionsetFamily(KviKvsObjectFunctionCall *c);
+ bool functionsetModified(KviKvsObjectFunctionCall *c);
+ bool functioninsertParagraph(KviKvsObjectFunctionCall *c);
+ bool functionremoveParagraph(KviKvsObjectFunctionCall *c);
+ bool functionsetOverwriteMode(KviKvsObjectFunctionCall *c);
+ bool functionsetTextFormat(KviKvsObjectFunctionCall *c);
+ bool functiontextFormat(KviKvsObjectFunctionCall *c);
+ bool functionsetParagraphBackgroundColor(KviKvsObjectFunctionCall *c);
+ bool functionclearParagraphBackground(KviKvsObjectFunctionCall *c);
+ bool functionloadFile(KviKvsObjectFunctionCall *c);
+ bool functionsetAlignment(KviKvsObjectFunctionCall *c);
+ bool functionsetAutoFormatting(KviKvsObjectFunctionCall *c);
+ bool functionsetVerticalAlignment(KviKvsObjectFunctionCall *c);
+ bool functionsetWrapPolicy(KviKvsObjectFunctionCall *c);
+ bool functionparagraphs(KviKvsObjectFunctionCall *c);
+ bool functionparagraphLength(KviKvsObjectFunctionCall *c);
+ bool functionlines(KviKvsObjectFunctionCall *c);
+ bool functionlineOfChar(KviKvsObjectFunctionCall *c);
+ bool functionlinesOfParagraph(KviKvsObjectFunctionCall *c);
+ bool functionselectAll(KviKvsObjectFunctionCall *c);
+
+};
+
+#endif //!_CLASS_MULTILINEEDIT_H_
diff --git a/src/modules/objects/class_painter.cpp b/src/modules/objects/class_painter.cpp
new file mode 100644
index 00000000..b27a24a3
--- /dev/null
+++ b/src/modules/objects/class_painter.cpp
@@ -0,0 +1,1007 @@
+//mdm:
+// Painter : class_painter.cpp
+// Creation date : Fri Mar 18 14:30:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+// Lucia Papini (^ashura^) English Translation.
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "class_painter.h"
+#include "class_pixmap.h"
+#include "class_widget.h"
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+#include "kvi_error.h"
+#include "kvi_iconmanager.h"
+#include "kvi_malloc.h"
+
+
+/*
+ @doc: painter
+ @keyterms:
+ painter object class, line editor, input
+ @title:
+ painter class
+ @type:
+ class
+ @short:
+ This class provide a painter to paint line and shapes.
+ @inherits:
+ [class]object[/class]
+ [class]widget[/class]
+ @description:
+ With this class you can draw many graphics objects from simple lines to complex shapes like pies and chords.[br]
+ It can also draw aligned text and pixmaps. Normally, it draws in a "natural" coordinate system, but it can also do view and world transformation.[br]
+ The class need to be implemented into a [classfnc]$paintEvent[/classfnc]();
+ @functions:
+ !fn: $drawLine(<x1:integer>,<y1_integer>,<x2:integer>,<y2:integer>)
+ Draws a line from (x1, y1) to (x2, y2) and sets the current pen position to (x2, y2).
+ !fn: $begin(<paint_device:object>)
+ Begins painting the paint device <paint_device>: the parameter MUST be a widget or a pixmap.[br]
+ Warning: A paint device can only be painted by one painter at a time.
+ !fn: $end()
+ Ends painting. Any resources used while painting are released.
+ !fn: $setPen(<rgb or hsv array value or [<red>,<green>,<blue>][<hue>,<saturation>,<value>],[system color:RGB or HSV)
+ The pen defines the lines or text, color. You can set it with Red,Green,Blue, or H,S,V value[br]
+ All parameters are in integer form.
+ The HSV system, like RGB, has three components:[br]
+ * H, for hue, is either 0-359 if the color is chromatic (not gray), or meaningless if it is gray.[br]
+ It represents degrees on the color wheel familiar to most people. Red is 0 (degrees), green is 120 and blue is 240.[br]
+ * S, for saturation, is 0-255, and the bigger it is, the stronger the color is. Grayish colors have saturation near 0; very strong colors have saturation near 255.[br]
+ * V, for value, is 0-255 and represents lightness or brightness of the color. 0 is black; 255 is as far from black as possible.[br]
+ Examples: RED is H=0, S=255, V=255.[br]
+ Light RED could have H about 0, S about 50-100, and S=255.
+ ES: $setPen(00,00,00) for black;[br]
+ Default color mode is RGB;
+ !fn: $setBrush(<rgb or hsv array value or [<red>,<green>,<blue>][<hue>,<saturation>,<value>],[system color:RGB or HSV)
+ Sets the painter's brush to have the specified color.[br]
+ Example:[br]
+ class (wdg,widget)[br]
+ {[br]
+ paintevent()[br]
+ {[br]
+ %b=$new(painter)[br]
+ %b->$setBackgroundMode(Opaque)[br]
+ %b->$setBrush(0,250,250)[br]
+ %b->$begin($$)[br]
+ %b->$drawEllipse(50,50,100,50)[br]
+ }[br]
+ }[br]
+ %aa=$new(wdg)[br]
+ %aa->$show()[br]
+ !fn: $drawRect(<x:integer>,<y:integer>,<w:unsigned integer>,<h:unsigned integer>)
+ Draws a rectangle with upper left corner at (x, y) and with width w and height h.
+ !fn: $drawWinFocusRect(<x:integer>,<y:integer>,<w:unsigned integer>,<h:unsigned integer>)
+ Draws a Windows focus rectangle with upper left corner at (x, y) and with width w and height h.[br]
+ This function draws nothing if the coordinate system has been rotated or sheared.
+ !fn: $drawRoundRect(<x:integer>,<y:integer>,<w:unsigned integer>,<h:unsigned integer>,<xCor:integer>,<yCor:integer>)
+ Draws a rectangle with rounded corners at (x, y), with width w and height h.[rb]
+ The xCor and yCor arguments specify how rounded the corners should be (range is 0->99).
+ !fn: $drawPie(<x:integer>,<y:integer>,<w:unsigned integer>,<h:unsigned integer>,<angle:integer>,<alen:integer>)
+ Draws a pie defined by the rectangle (x, y, w, h), the start angle a and the arc length alen.[br]
+ The angles <angle> and <alen> are 1/16th of a degree, i.e. a full circle equals 5760 (16*360).
+ !fn: $drawArc(<x:integer>,<y:integer>,<w:unsigned integer>,<h:unsigned integer>,<angle:integer>,<alen:integer>)
+ Draws an arc defined by the rectangle (x, y, w, h), the start angle a and the arc length alen.[br]
+ The angles <angle> and <alen> are 1/16th of a degree, i.e. a full circle equals 5760 (16*360).
+ !fn: $drawPoint(<x:integer>,<y:integer>)
+ Draws a point at x and y coordinates.
+ !fn: $drawEllipse(<x:integer>,<y:integer>,<sizew:unsigned integer>,<sizeh:unsigned integer>)
+ Draws an ellipse with center at (x + w/2, y + h/2) and size (w, h).
+ !fn: $drawChord(<x:integer>,<y:integer>,<w:unsigned integer>,<h:unsigned integer>,<angle:integer>,<alen:integer>)
+ Draws a chord defined by the rectangle (x, y, w, h), the start angle a and the arc length alen.[br]
+ The angles <angle> and <alen> are 1/16th of a degree, i.e. a full circle equals 5760 (16*360).
+ !fn: $drawText(<x:integer>,<y:integer>,<text:string>,<nr chars:integer>,<dir:enum>)
+ Draws the given <text> at position <x>, <y>.[br]
+ If <len> is -1 (the default) all the text is drawn, otherwise the first <len> characters are drawn.
+ The text's direction is given by <dir>, valid flag are:[br]
+ [pre]
+ Auto [br]
+ RTL (right to left) [br]
+ LTR (left to right) [br]
+ [/pre]
+ !fn: $drawPixmap(<x:integer>,<y:integer>,<pixmap:hobject>,<sx:integer>,<sy:integer>,<ex:integer>,<ey:integer>)
+ Draws a pixmap at x,y coordinates[br]
+ !fn: $setFont(<size:unsigned integer>,<family:string>,<style:enum>)[br]
+ Set the font's size, family and stile, valid flag for style are:[br]
+ [pre]
+ italic [br]
+ bold [br]
+ underline [br]
+ overline [br]
+ strikeout [br]
+ fixedpitch [br]
+ [/pre]
+ !fn: $setFontSize(<size:unsigned integer>)[br]
+ Set the current painter font's size.[br]
+ !fn: <integer>$fontAscent()
+ Return the distance from the baseline to the highest position characters extend to.
+ !fn: <integer>$fontDescent()
+ Return the distance from the baseline to the lowest point characters extend to.
+ !fn: <integer>$fontMetricsWidth(<text:string>)
+ Returns the font metrics width for the painter's current font.
+ !fn: <integer>$fontMetricsHeight()
+ Returns the font metrics height for the painter's current font.
+ !fn: $rotate(<angle:real>)
+ Rotates the coordinate system a degrees counterclockwise.
+ !fn: $translate(<dx:real>,<dy:real>)
+ Translates the coordinate system by <dx>, <dy>.
+ !fn: $shear(<dh:real>,<dv:real>)
+ Shears the coordinate system by <dh>, <dv>.
+ !fn: $scale(<dh:real>,<dw:real>)
+ Scales the coordinate system by <dh>, <dv>.
+ !fn: $setBackgroundMode(<bgMode:enum>)
+ Sets the background mode of the painter to <bgMode>: valid values are:[br]
+ - Transparent (that is the default value);[br]
+ - Opaque.[br]
+ !fn: $setOpacity(<opacity_factor:real>) [QT4 ONLY]
+ Sets the painter opacity that affects all painter operations (drawpixmap, drawtext...). Valid values range are from 0 (total transparency) to 1 (total opacity)[br]
+ You must invoke the [classfnc]$begin[/classfnc] before using it.
+ !fn: $setTextAntialiasing(<boolean>) [QT4 ONLY]
+ Enable/disable antialias in text if possible.
+ You must call the [classfnc]$begin[/classfnc] before using it.
+ !fn: $setAntialiasing(<boolean>) [QT4 ONLY]
+ Enable/disable antialias in edges of primitives if possible.
+ You must call the [classfnc]$begin[/classfnc] before using it.
+ !fn: $setSmoothPixmapTransform(<boolean>) [QT4 ONLY]
+ Enable/disable smooth bilinear pixmap transformation algorithm (such as bilinear).
+ You must call the [classfnc]$begin[/classfnc] before using it.
+ Example:[br]
+ [br]
+ class (hello,widget)[br]
+ {[br]
+ constructor()[br]
+ {[br]
+ $$->%sintbl[]= $array( 0, 38, 71, 92, 100, 92, 71, 38,0, -38, -71, -92, -100, -92, -71, -38);[br]
+ $$->%index=0[br]
+ $$->$starttimer( 30 );[br]
+ $$->$resize(800,600 );[br]
+ $$->%string=$0[br]
+ $$->%waitfor=1;[br]
+ $$->%nextanim=0[br]
+ [br]
+ #zoom and rotation anim[br]
+ $$->%Zoomindex=11[br]
+ $$->%degree=0[br]
+ $$->%Noanim=0[br]
+ $$->%scrollright=-450[br]
+ [br]
+ #anim effect init[br]
+ $$->%xoffset=4[br]
+ $$->%yoffset=3[br]
+ $$->%xstart=270[br]
+ $$->%ystart=200[br]
+ $$->%b=0[br]
+ $$->%yoffs=400[br]
+ [br]
+ #parallax parameter[br]
+ $$->%Off=400[br]
+ $$->%roll=1[br]
+ }[br]
+ timerevent()[br]
+ {[br]
+ $$->%b = $(($$->%b + 1) & 15);[br]
+ if ($$->%nextanim == 1) $$->$repaint(1);[br]
+ $$->$repaint(0);[br]
+ }[br]
+ drawAnim()[br]
+ {[br]
+ %P->$setFont(32,"times",bold);[br]
+ %w=$(%P->$fontMetricsWidth($$->%string[$$->%index]) + 20);[br]
+ %h=$(%P->$fontMetricsHeight * 2);[br]
+ %pmx = $(($$->$width/2) -%w/2);[br]
+ %pmy = $(($$->$height()/2) - %h/2);[br]
+ %x = 10;[br]
+ %y= $((%h/2) + $$->$fontDescent());[br]
+ %i=0[br]
+ while ( $str.mid("Grifisx/Noldor",%i,1) != "") [br]
+ {[br]
+ %i16 = $(($$->%b+%i) & 15);[br]
+ %char=$str.mid("Grifisx/Noldor",%i,1)[br]
+ %P->$setPen($((15-%i16)*16),$((15-%i16)*16),$((15-%i16)*16) );[br]
+ %P->$drawText( $(%x+$$->%xstart),$($$->%ystart+%y-$$->%sintbl[%i16]*%h/800),%char,1,Auto);[br]
+ %x += %P->$fontMetricsWidth(%char);[br]
+ %i++;[br]
+ }[br]
+ }[br]
+ matrixeffect()[br]
+ {[br]
+ if (($$->%Zoomindex == 99) && ($$->%degree==360)) return %P->$drawPixmap($(400-32),$(300-32),"kvirc.png",0,0,-1,-1)[br]
+ %P->$scale(0.$$->%Zoomindex,0.$$->%Zoomindex)[br]
+ if ($$->%Zoomindex != 99) $$->%Zoomindex++;[br]
+ %P->$rotate($$->%degree)[br]
+ %P->$translate(400,300)[br]
+ %P->$drawPixmap(-32,-32,"kvirc.png",0,0,-1,-1)[br]
+ %P->$setFont(28,"times",bold);[br]
+ %P->$reset()[br]
+ if ($$->%scrollright >= 550) return[br]
+ %P->$scale(0.$$->%Zoomindex,0.$$->%Zoomindex)[br]
+ %P->$translate(400,350)[br]
+ %P->$drawText($$->%scrollright,10,"Another cool class brought to you by...",-1,Auto) [br]
+ $$->%scrollright += 3;[br]
+ %P->$reset()[br]
+ }[br]
+ nextanim()[br]
+ {[br]
+ %p=$new(painter)[br]
+ %p->$setBackgroundMode(Opaque)[br]
+ %p->$setBrush($rand(255),$rand(255),$rand(255))[br]
+ %p->$begin($$)[br]
+ %rand=$rand(5)[br]
+ %p->$drawrect($rand(800),$rand(400),120,200)[br]
+ %p->$drawArc($rand(800),$rand(400),120,200,20,$(16*20))[br]
+ %p->$drawPie($rand(800),$rand(400),120,200,20,$(16*20))[br]
+ %p->$drawChord($rand(800),$rand(400),120,200,20,$(16*20))[br]
+ %p->$drawEllipse($rand(800),$rand(400),100,30)[br]
+ %p->$end()[br]
+ delete %p[br]
+ }[br]
+ paintEvent()[br]
+ {[br]
+ if ($$->%nextanim ==1) return $$->$nextanim()[br]
+ # pixmap creation: every effect will be painted on it then copied on widget[br]
+ %pixmap=$new(pixmap)[br]
+ %pixmap->$resize($$->$width(),$$->$height())[br]
+ [br]
+ # painter creation [br]
+ %P=$new(painter);[br]
+ %P->$begin(%pixmap);[br]
+ $$->$drawanim[br]
+ $$->$matrixeffect[br]
+ %i=0[br]
+ while (%i != 100)[br]
+ {[br]
+ %i16 = $(($$->%b+%i) & 15);[br]
+ %P->$setPen($((15-%i16)*16),$((15-%i16)*16),$((15-%i16)*16) );[br]
+ %P->$drawpoint($rand(800),$rand(600))[br]
+ %i++[br]
+ }[br]
+ [br]
+ # sets the animations order to manage the parallax effect[br]
+ %P->$end[br]
+ objects.bitBlt $$ 0 0 %pixmap[br]
+ delete %pixmap[br]
+ delete %P[br]
+ if (%Pauseflag == 1) return[br]
+ [br]
+ # manage the animations parameters[br]
+ if (($$->%Off<=60) && ($$->%roll<182)) $$->%roll += 2;[br]
+ if ($$->%roll>182) $$->%waitfor=0[br]
+ if ($$->%Noanim != 1) $$->%degree += 16;[br]
+ if ($$->%degree >= 360)[br]
+ {[br]
+ $$->%degree=0;[br]
+ if ($$->%Zoomindex == 99) $$->%Noanim=1[br]
+ } [br]
+ if ($$->%Noanim != 1) return[br]
+ [br]
+ #sinusoid animation[br]
+ if (($$->%xstart <1) && ($$->%xoffset == -4)) $$->%xoffset=4;[br]
+ if (($$->%xstart >$($$->$width()-%P->$fontMetricsWidth("Grifisx/Noldor"))) && ($$->%xoffset == 4)) $$->%xoffset=-4;[br]
+ if (($$->%ystart <1) && ($$->%yoffset == -3)) $$->%yoffset=3;[br]
+ if (($$->%ystart >$($$->$height()-60)) && ($$->%yoffset == 3)) $$->%yoffset=-3;[br]
+ $$->%xstart += $$->%xoffset;[br]
+ $$->%ystart += $$->%yoffset;[br]
+ }[br]
+ }[br]
+ [br]
+ %Hello=$new(hello)[br]
+ %Hello->$setcaption("Painter effects" );[br]
+ %Hello->$setFont(28,"times",bold);[br]
+ %Btn=$new(button,%Hello)[br]
+ %Btn->$setmaximumwidth(80)[br]
+ %Btn->$setmaximumheight(30)[br]
+ %Btn->$setFont(8,"times",bold);[br]
+ %Btn->$settext(Next)[br]
+ [br]
+ privateimpl(%Btn,mousepressevent)[br]
+ {[br]
+ if ($$->$parent->%nextanim==0) [br]
+ {[br]
+ $$->$parent->%nextanim=1[br]
+ $$->$settext(Prev)[br]
+ } [br]
+ else[br]
+ {[br]
+ $$->$parent->%nextanim=0[br]
+ $$->$settext(Next)[br]
+ }[br]
+ }[br]
+ [br]
+ %lay=$new(layout,%Hello)[br]
+ %lay->$addwidget(%Btn,4,0)[br]
+ %Hello->$setBackgroundColor("000000");[br]
+ %Hello->$setmaximumwidth(800)[br]
+ %Hello->$setminimumwidth(780)[br]
+ %Hello->$setmaximumheight(600)[br]
+ %Hello->$setminimumheight(600)[br]
+ %Hello->$move(10,10)[br]
+ %Hello->$show();[br] [br]
+
+*/
+
+// ========================================================================
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_painter,"painter","object")
+
+ // Fonts
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"setFont",functionSetFont)
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"setFontSize",functionSetFontSize)
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"setBrush",functionsetBrush)
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"setPen",functionsetPen)
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"fontAscent",functionfontAscent)
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"fontDescent",functionfontDescent)
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"fontMetricsHeight",functionfontMetricsHeight)
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"fontMetricsWidth",functionfontMetricsWidth)
+ // Draws
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"setBackGroundMode",functionsetBackGroundMode)
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"drawRect",functiondrawRect)
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"drawLine",functiondrawLine)
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"drawRoundRect",functiondrawRoundRect)
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"drawWinFocusRect",functiondrawWinFocusRect)
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"drawPoint",functiondrawPoint)
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"drawArc",functiondrawArc)
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"drawEllipse",functiondrawEllipse)
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"drawPie",functiondrawPie)
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"drawChord",functiondrawChord)
+ // Text & Pixmap
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"drawText",functiondrawText)
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"drawPixmap",functiondrawPixmap)
+
+
+ // MAtrix Operation
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"rotate",functionrotateMatrix)
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"shear",functionshearMatrix)
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"scale",functionscaleMatrix)
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"translate",functiontranslateMatrix)
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"reset",functionresetMatrix)
+
+#ifdef COMPILE_USE_QT4
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"setOpacity",functionsetOpacity)
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"setTextAntialiasing",functionsetTextAntialiasing)
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"setAntialiasing",functionsetAntialiasing)
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"setSmoothPixmapTransform",functionsetSmoothPixmapTransform)
+#endif
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"begin",functionbegin)
+ KVSO_REGISTER_HANDLER(KviKvsObject_painter,"end",functionend)
+
+
+KVSO_END_REGISTERCLASS(KviKvsObject_painter)
+
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_painter,KviKvsObject)
+
+ m_pPainter = new QPainter();
+
+ m_pDeviceObject=0;
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_painter)
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_painter)
+
+ if (m_pPainter) delete m_pPainter;
+ m_pPainter = 0;
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_painter)
+
+#define KVSO_PARAMETERS_PAINTER(__pXOrArray,__iY,__iW,__iH)\
+if(__pXOrArray->isArray())\
+ {\
+ if(__pXOrArray->array()->size() < 4)\
+ {\
+ c->error(__tr2qs("The array passed as parameter must contain at least 4 elements"));\
+ return false;\
+ }\
+ KviKvsVariant * pX = __pXOrArray->array()->at(0);\
+ KviKvsVariant * pY = __pXOrArray->array()->at(1);\
+ KviKvsVariant * pW = __pXOrArray->array()->at(2);\
+ KviKvsVariant * pH = __pXOrArray->array()->at(3);\
+ if(!(pX && pY && pW && pH))\
+ {\
+ c->error(__tr2qs("One of the geometry array parameters is empty"));\
+ return false;\
+ }\
+ if(!(pX->asInteger(iX) && pY->asInteger(__iY) && pW->asInteger(__iW) && pH->asInteger(__iH)))\
+ {\
+ c->error(__tr2qs("One of the geometry array parameters didn't evaluate to an integer"));\
+ return false;\
+ }\
+ } else {\
+ if(c->params()->count() < 4)\
+ {\
+ QString error=function+" requires either an array as first parameter or four integers";\
+ c->error(__tr2qs(error));\
+ return false;\
+ }\
+ if(!__pXOrArray->asInteger(iX))\
+ {\
+ c->error(__tr2qs("The first parameter didn't evaluate to an array nor an integer"));\
+ return false;\
+ }\
+ }\
+
+#define KVSO_2ARRAYPARAMETERS(__pXOrArray,__iY)\
+if(__pXOrArray->isArray())\
+ {\
+ if(__pXOrArray->array()->size() < 2)\
+ {\
+ c->error(__tr2qs("The array passed as parameter must contain at least 2 elements"));\
+ return false;\
+ }\
+ KviKvsVariant * pX = __pXOrArray->array()->at(0);\
+ KviKvsVariant * pY = __pXOrArray->array()->at(1);\
+ if(!(pX && pY ))\
+ {\
+ c->error(__tr2qs("One of the array parameters is empty"));\
+ return false;\
+ }\
+ if(!(pX->asInteger(iX) && pY->asInteger(__iY)))\
+ {\
+ c->error(__tr2qs("One of the array parameters didn't evaluate to an integer"));\
+ return false;\
+ }\
+ } else {\
+ if(c->params()->count() < 2)\
+ {\
+ QString error=function+" requires either an array as first parameter or two integers";\
+ c->error(__tr2qs(error));\
+ return false;\
+ }\
+ if(!__pXOrArray->asInteger(iX))\
+ {\
+ c->error(__tr2qs("The first parameter didn't evaluate to an array nor an integer"));\
+ return false;\
+ }\
+ }\
+
+#define KVSO_3ARRAYPARAMETERS(__pCol1OrArray,__iCol2,__iCol3)\
+if(__pCol1OrArray->isArray())\
+ {\
+ if(__pCol1OrArray->array()->size() < 3)\
+ {\
+ c->error(__tr2qs("The array passed as parameter must contain at least 3 elements"));\
+ return false;\
+ }\
+ KviKvsVariant * c1 = __pCol1OrArray->array()->at(0);\
+ KviKvsVariant * c2 = __pCol1OrArray->array()->at(1);\
+ KviKvsVariant * c3 = __pCol1OrArray->array()->at(2);\
+ if(!(c1 && c2 && c3))\
+ {\
+ c->error(__tr2qs("One of the array parameters is empty"));\
+ return false;\
+ }\
+ if(!(c1->asInteger(iCol1) && c2->asInteger(__iCol2) && c3->asInteger(__iCol3)))\
+ {\
+ c->error(__tr2qs("One of the array parameters didn't evaluate to an integer"));\
+ return false;\
+ }\
+ } else {\
+ if(c->params()->count() < 3)\
+ {\
+ QString error=function+" requires either an array as first parameter or 3 integers";\
+ c->error(__tr2qs(error));\
+ return false;\
+ }\
+ if(!__pCol1OrArray->asInteger(iCol1))\
+ {\
+ c->error(__tr2qs("The first parameter didn't evaluate to an array nor an integer"));\
+ return false;\
+ }\
+ }\
+
+bool KviKvsObject_painter::functionSetFont(KviKvsObjectFunctionCall *c)
+{
+ QString szFamily,szStyle;
+ kvs_int_t uSize;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("size",KVS_PT_UNSIGNEDINTEGER,0,uSize)
+ KVSO_PARAMETER("family",KVS_PT_STRING,0,szFamily)
+ KVSO_PARAMETER("style",KVS_PT_STRING,0,szStyle)
+ KVSO_PARAMETERS_END(c)
+ if(!m_pPainter)return true;
+ QFont font=m_pPainter->font();
+ font.setFamily(szFamily);
+ font.setPointSize(uSize);
+ if(KviQString::equalCI(szStyle,"italic")) font.setItalic(TRUE);
+ if(KviQString::equalCI(szStyle,"bold")) font.setBold(TRUE);
+ if(KviQString::equalCI(szStyle,"underline"))font.setUnderline(TRUE);
+ if(KviQString::equalCI(szStyle,"overline")) font.setOverline(TRUE);
+ if(KviQString::equalCI(szStyle,"strikeout"))font.setStrikeOut(TRUE);
+ if(KviQString::equalCI(szStyle,"fixedpitch")) font.setFixedPitch(TRUE);
+ m_pPainter->setFont(font);
+ return true;
+}
+bool KviKvsObject_painter::functionSetFontSize(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uSize;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("size",KVS_PT_UNSIGNEDINTEGER,0,uSize)
+ KVSO_PARAMETERS_END(c)
+ if(!m_pPainter)return true;
+ QFont font=m_pPainter->font();
+ font.setPointSize(uSize);
+ m_pPainter->setFont(font);
+ return true;
+}
+bool KviKvsObject_painter::functionsetBackGroundMode(KviKvsObjectFunctionCall *c)
+{
+ QString szMode;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("background mode",KVS_PT_STRING,0,szMode)
+ KVSO_PARAMETERS_END(c)
+ if(!m_pPainter)return true;
+ if(KviQString::equalCI(szMode,"Transparent")) m_pPainter->setBackgroundMode(Qt::TransparentMode);
+ else if(KviQString::equalCI(szMode,"Opaque")) m_pPainter->setBackgroundMode(Qt::OpaqueMode);
+ else c->warning( __tr2qs("Unknown orientation"));
+ return true;
+
+}
+
+bool KviKvsObject_painter::functiondrawLine(KviKvsObjectFunctionCall *c)
+{
+ KviKvsVariant * pXOrArray;
+ kvs_int_t iX,iY,iW,iH;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("x_or_array",KVS_PT_VARIANT,0,pXOrArray)
+ KVSO_PARAMETER("y",KVS_PT_INT,KVS_PF_OPTIONAL,iY)
+ KVSO_PARAMETER("w",KVS_PT_INT,KVS_PF_OPTIONAL,iW)
+ KVSO_PARAMETER("h",KVS_PT_INT,KVS_PF_OPTIONAL,iH)
+ KVSO_PARAMETERS_END(c)
+ QString function="$drawLine";
+ KVSO_PARAMETERS_PAINTER(pXOrArray,iY,iW,iH)
+ if(m_pPainter) m_pPainter->drawLine(iX,iY,iW,iH);
+ return true;
+}
+bool KviKvsObject_painter::functiondrawRect(KviKvsObjectFunctionCall *c)
+{
+ KviKvsVariant * pXOrArray;
+ kvs_int_t iX,iY,iW,iH;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("x_or_array",KVS_PT_VARIANT,0,pXOrArray)
+ KVSO_PARAMETER("y",KVS_PT_INT,KVS_PF_OPTIONAL,iY)
+ KVSO_PARAMETER("w",KVS_PT_INT,KVS_PF_OPTIONAL,iW)
+ KVSO_PARAMETER("h",KVS_PT_INT,KVS_PF_OPTIONAL,iH)
+ KVSO_PARAMETERS_END(c)
+ QString function="$drawRect";
+ KVSO_PARAMETERS_PAINTER(pXOrArray,iY,iW,iH)
+ if(m_pPainter) m_pPainter->drawRect(iX,iY,iW,iH);
+ return true;
+}
+// FIX ME: REMOVE functiondrawWinFocusRect
+bool KviKvsObject_painter::functiondrawWinFocusRect(KviKvsObjectFunctionCall *c)
+{
+ KviKvsVariant * pXOrArray;
+ kvs_int_t iX,iY,iW,iH;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("x_or_array",KVS_PT_VARIANT,0,pXOrArray)
+ KVSO_PARAMETER("y",KVS_PT_INT,KVS_PF_OPTIONAL,iY)
+ KVSO_PARAMETER("w",KVS_PT_INT,KVS_PF_OPTIONAL,iW)
+ KVSO_PARAMETER("h",KVS_PT_INT,KVS_PF_OPTIONAL,iH)
+ KVSO_PARAMETERS_END(c)
+ QString function="$drawWinFocusRect";
+ KVSO_PARAMETERS_PAINTER(pXOrArray,iY,iW,iH)
+#ifndef COMPILE_USE_QT4
+ if(m_pPainter) m_pPainter->drawWinFocusRect(iX,iY,iW,iH);
+#endif
+ return true;
+}
+bool KviKvsObject_painter::functiondrawEllipse(KviKvsObjectFunctionCall *c)
+{
+ KviKvsVariant * pXOrArray;
+ kvs_int_t iX,iY,iW,iH;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("x_or_array",KVS_PT_VARIANT,0,pXOrArray)
+ KVSO_PARAMETER("y",KVS_PT_INT,KVS_PF_OPTIONAL,iY)
+ KVSO_PARAMETER("w",KVS_PT_INT,KVS_PF_OPTIONAL,iW)
+ KVSO_PARAMETER("h",KVS_PT_INT,KVS_PF_OPTIONAL,iH)
+ KVSO_PARAMETERS_END(c)
+ QString function="$drawEllipse";
+ KVSO_PARAMETERS_PAINTER(pXOrArray,iY,iW,iH)
+ if(m_pPainter) m_pPainter->drawEllipse(iX,iY,iW,iH);
+ return true;
+}
+bool KviKvsObject_painter::functiondrawRoundRect(KviKvsObjectFunctionCall *c)
+{
+ KviKvsVariant * pXOrArray;
+ kvs_int_t iXrnd,iYrnd,iX,iY,iW,iH;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("x_round",KVS_PT_INT,0,iXrnd)
+ KVSO_PARAMETER("y_round",KVS_PT_INT,0,iYrnd)
+ KVSO_PARAMETER("x_or_array",KVS_PT_VARIANT,0,pXOrArray)
+ KVSO_PARAMETER("y",KVS_PT_INT,KVS_PF_OPTIONAL,iY)
+ KVSO_PARAMETER("w",KVS_PT_INT,KVS_PF_OPTIONAL,iW)
+ KVSO_PARAMETER("h",KVS_PT_INT,KVS_PF_OPTIONAL,iH)
+ KVSO_PARAMETERS_END(c)
+ QString function="$drawRoundRect";
+ KVSO_PARAMETERS_PAINTER(pXOrArray,iY,iW,iH)
+ if(m_pPainter)
+ m_pPainter->drawRoundRect(iX,iY,iW,iH,iXrnd,iYrnd);
+ return true;
+}
+bool KviKvsObject_painter::functiondrawArc(KviKvsObjectFunctionCall *c)
+{
+ KviKvsVariant * pXOrArray;
+ kvs_int_t iSangle,iLena,iX,iY,iW,iH;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("start_angle",KVS_PT_INT,0,iSangle)
+ KVSO_PARAMETER("a_lenght",KVS_PT_INT,0,iLena)
+ KVSO_PARAMETER("x_or_array",KVS_PT_VARIANT,0,pXOrArray)
+ KVSO_PARAMETER("y",KVS_PT_INT,KVS_PF_OPTIONAL,iY)
+ KVSO_PARAMETER("w",KVS_PT_INT,KVS_PF_OPTIONAL,iW)
+ KVSO_PARAMETER("h",KVS_PT_INT,KVS_PF_OPTIONAL,iH)
+ KVSO_PARAMETERS_END(c)
+ QString function="$drawArc";
+ KVSO_PARAMETERS_PAINTER(pXOrArray,iY,iW,iH)
+ if(m_pPainter)
+ m_pPainter->drawArc(iX,iY,iW,iH,iSangle,iLena);
+ return true;
+}
+bool KviKvsObject_painter::functiondrawChord(KviKvsObjectFunctionCall *c)
+{
+ KviKvsVariant * pXOrArray;
+ kvs_int_t iSangle,iLena,iX,iY,iW,iH;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("start_angle",KVS_PT_INT,0,iSangle)
+ KVSO_PARAMETER("a_lenght",KVS_PT_INT,0,iLena)
+ KVSO_PARAMETER("x_or_array",KVS_PT_VARIANT,0,pXOrArray)
+ KVSO_PARAMETER("y",KVS_PT_INT,KVS_PF_OPTIONAL,iY)
+ KVSO_PARAMETER("w",KVS_PT_INT,KVS_PF_OPTIONAL,iW)
+ KVSO_PARAMETER("h",KVS_PT_INT,KVS_PF_OPTIONAL,iH)
+ KVSO_PARAMETERS_END(c)
+ QString function="$drawChord";
+ KVSO_PARAMETERS_PAINTER(pXOrArray,iY,iW,iH)
+ if(m_pPainter)
+ m_pPainter->drawChord(iX,iY,iW,iH,iSangle,iLena);
+ return true;
+}
+bool KviKvsObject_painter::functionsetBrush(KviKvsObjectFunctionCall *c)
+{
+ KviKvsVariant * pCol1OrArray;
+ kvs_int_t iCol1,iCol2,iCol3;
+ QString szColorMode;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("Col1_or_array",KVS_PT_VARIANT,0,pCol1OrArray)
+ KVSO_PARAMETER("Color_2",KVS_PT_INT,KVS_PF_OPTIONAL,iCol2)
+ KVSO_PARAMETER("Colo3_3",KVS_PT_INT,KVS_PF_OPTIONAL,iCol3)
+ KVSO_PARAMETER("color_mode",KVS_PT_STRING,KVS_PF_OPTIONAL,szColorMode)
+ KVSO_PARAMETERS_END(c)
+ QString function="$drawChord";
+ KVSO_3ARRAYPARAMETERS(pCol1OrArray,iCol2,iCol3)
+ if(!m_pPainter) return true;
+ if(KviQString::equalCI(szColorMode, "HSV"))
+ m_pPainter->setBrush(QColor(iCol1,iCol2,iCol3,QColor::Hsv));
+ else
+ m_pPainter->setBrush(QColor(iCol1,iCol2,iCol3,QColor::Rgb));
+ return true;
+}
+bool KviKvsObject_painter::functionsetPen(KviKvsObjectFunctionCall *c)
+{
+ KviKvsVariant * pCol1OrArray;
+ kvs_int_t iCol1,iCol2,iCol3;
+ QString szColorMode;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("Col1_or_array",KVS_PT_VARIANT,0,pCol1OrArray)
+ KVSO_PARAMETER("Color_2",KVS_PT_INT,KVS_PF_OPTIONAL,iCol2)
+ KVSO_PARAMETER("Colo3_3",KVS_PT_INT,KVS_PF_OPTIONAL,iCol3)
+ KVSO_PARAMETER("color_mode",KVS_PT_STRING,KVS_PF_OPTIONAL,szColorMode)
+ KVSO_PARAMETERS_END(c)
+ QString function="$setPen";
+ KVSO_3ARRAYPARAMETERS(pCol1OrArray,iCol2,iCol3)
+ if(!m_pPainter) return true;
+ if(KviQString::equalCI(szColorMode, "HSV"))
+ m_pPainter->setPen(QColor(iCol1,iCol2,iCol3,QColor::Hsv));
+ else
+ m_pPainter->setPen(QColor(iCol1,iCol2,iCol3,QColor::Rgb));
+
+ return true;
+}
+bool KviKvsObject_painter::functiondrawPie(KviKvsObjectFunctionCall *c)
+{
+ KviKvsVariant * pXOrArray;
+ kvs_int_t iSangle,iLena,iX,iY,iW,iH;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("start_angle",KVS_PT_INT,0,iSangle)
+ KVSO_PARAMETER("a_lenght",KVS_PT_INT,0,iLena)
+ KVSO_PARAMETER("x_or_array",KVS_PT_VARIANT,0,pXOrArray)
+ KVSO_PARAMETER("y",KVS_PT_INT,KVS_PF_OPTIONAL,iY)
+ KVSO_PARAMETER("w",KVS_PT_INT,KVS_PF_OPTIONAL,iW)
+ KVSO_PARAMETER("h",KVS_PT_INT,KVS_PF_OPTIONAL,iH)
+ KVSO_PARAMETERS_END(c)
+ QString function="$drawPie";
+ KVSO_PARAMETERS_PAINTER(pXOrArray,iY,iW,iH)
+ if(m_pPainter)
+ m_pPainter->drawPie(iX,iY,iW,iH,iSangle,iLena);
+ return true;
+}
+bool KviKvsObject_painter::functiondrawPoint(KviKvsObjectFunctionCall *c)
+{
+ KviKvsVariant * pXOrArray;
+ kvs_int_t iX,iY;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("x_or_array",KVS_PT_VARIANT,0,pXOrArray)
+ KVSO_PARAMETER("y",KVS_PT_INT,KVS_PF_OPTIONAL,iY)
+ KVSO_PARAMETERS_END(c)
+ QString function="$drawPoint";
+ KVSO_2ARRAYPARAMETERS(pXOrArray,iY)
+ if(m_pPainter)
+ m_pPainter->drawPoint(iX,iY);
+ return true;
+}
+bool KviKvsObject_painter::functionfontDescent(KviKvsObjectFunctionCall * c)
+{
+ if(m_pPainter)
+ c->returnValue()->setInteger(m_pPainter->fontMetrics().descent());
+ return true;
+}
+
+bool KviKvsObject_painter::functionfontAscent(KviKvsObjectFunctionCall * c)
+{
+ if(m_pPainter)
+ c->returnValue()->setInteger(m_pPainter->fontMetrics().ascent());
+ return true;
+
+}
+
+bool KviKvsObject_painter::functionfontMetricsWidth(KviKvsObjectFunctionCall * c)
+{
+ QString szText;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szText)
+ KVSO_PARAMETERS_END(c)
+ if(m_pPainter)
+ c->returnValue()->setInteger(m_pPainter->fontMetrics().width(szText));
+ return true;
+}
+
+bool KviKvsObject_painter::functionfontMetricsHeight(KviKvsObjectFunctionCall * c)
+{
+ if(m_pPainter)
+ c->returnValue()->setInteger(m_pPainter->fontMetrics().height());
+ return true;
+}
+bool KviKvsObject_painter::functionbegin(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject * pObject;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("paint_device",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETERS_END(c)
+ pObject=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if(!m_pPainter)return true;
+ if (!pObject)
+ {
+ c->warning(__tr2qs("Pixmap or Widget parameter is not an object"));
+ return true;
+ }
+
+ QPaintDevice * pd = 0;
+ if(pObject->inherits("KviKvsObject_pixmap"))pd =((KviKvsObject_pixmap *)pObject)->getPixmap();
+ else if (pObject->inherits("KviKvsObject_widget")) pd=((KviKvsObject_widget *)pObject)->widget();
+
+ if (!pd)
+ c->warning(__tr2qs("Widget or Pixmap required "));
+ else {
+ attachDevice(pObject,pd);
+ // m_pPainter->setOpacity(0.4);
+ if (pObject->inherits("KviKvsObject_pixmap")) ((KviKvsObject_pixmap *)pObject)->pixmapChanged();
+ }
+ return true;
+}
+void KviKvsObject_painter::attachDevice(KviKvsObject * o,QPaintDevice * p)
+{
+ if(!m_pPainter)return;
+ if(m_pDeviceObject)detachDevice();
+ m_pDeviceObject = o;
+ // KviKvsObject_pixmap and KviKvsObject_widget object have this signal
+ // it is emitted BEFORE the real QPaintDevice is deleted, so we can eventually
+ // call m_pPainter->end() in time
+
+ QObject::connect(m_pDeviceObject,SIGNAL(aboutToDie()),this,SLOT(detachDevice()));
+ m_pPainter->begin(p);
+}
+
+void KviKvsObject_painter::detachDevice()
+{
+ if(!m_pDeviceObject)return;
+ if(!m_pPainter)return;
+ disconnect(m_pDeviceObject,SIGNAL(aboutToDie()),this,SLOT(detachDevice()));
+ m_pPainter->end();
+ m_pDeviceObject = 0;
+}
+
+bool KviKvsObject_painter::functionend(KviKvsObjectFunctionCall *c)
+{
+ detachDevice();
+ return true;
+}
+
+bool KviKvsObject_painter::functiondrawText(KviKvsObjectFunctionCall *c)
+{
+ QString szText,szMode;
+ kvs_int_t iX,iY,iLen;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("x",KVS_PT_INT,0,iX)
+ KVSO_PARAMETER("y",KVS_PT_INT,0,iY)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szText)
+ KVSO_PARAMETER("length",KVS_PT_INT,0,iLen)
+ KVSO_PARAMETER("mode",KVS_PT_STRING,KVS_PF_OPTIONAL,szMode)
+ KVSO_PARAMETERS_END(c)
+ if(!m_pPainter)return true;
+#ifdef COMPILE_USE_QT4
+ if (!szMode.isEmpty()){
+ if(KviQString::equalCI(szMode,"RTL"))m_pPainter->setLayoutDirection(Qt::RightToLeft);
+ else if(KviQString::equalCI(szMode,"LTR"))m_pPainter->setLayoutDirection(Qt::LeftToRight);
+ else
+ {
+ c->warning(__tr2qs("Invalid mode '%Q'"),&szMode);
+ return true;
+ }
+ }
+
+ m_pPainter->drawText(iX,iY,szText);
+#else
+ if(KviQString::equalCI(szMode,"Auto")) m_pPainter->drawText(iX,iY,szText,iLen,QPainter::Auto);
+ else if(KviQString::equalCI(szMode,"RTL")) m_pPainter->drawText(iX,iY,szText,iLen,QPainter::RTL);
+ else if(KviQString::equalCI(szMode,"LTR"))m_pPainter->drawText(iX,iY,szText,iLen,QPainter::LTR);
+ else c->warning(__tr2qs("Invalid mode '%Q'"),&szMode);
+
+#endif
+ return true;
+}
+
+bool KviKvsObject_painter::functiondrawPixmap(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iX,iY,iStartx,iStarty,iEndx,iEndy;
+ KviKvsObject *obj;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("x",KVS_PT_INT,0,iX)
+ KVSO_PARAMETER("y",KVS_PT_INT,0,iY)
+ KVSO_PARAMETER("pixmap",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETER("start_x",KVS_PT_INT,0,iStartx)
+ KVSO_PARAMETER("start_y",KVS_PT_INT,0,iStarty)
+ KVSO_PARAMETER("end_x",KVS_PT_INT,0,iEndx)
+ KVSO_PARAMETER("end_y",KVS_PT_INT,0,iEndy)
+ KVSO_PARAMETERS_END(c)
+ obj=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if(!m_pPainter)return true;
+ if (!obj)
+ {
+ c->warning(__tr2qs("Pixmap parameter is not an object"));
+ return true;
+ }
+ if (!obj->inherits("KviKvsObject_pixmap"))
+ {
+ c->warning(__tr2qs("Pixmap object required"));
+ return true;
+ }
+ QPixmap * pm=((KviKvsObject_pixmap *)obj)->getPixmap();
+ m_pPainter->drawPixmap(iX,iY,*((KviKvsObject_pixmap *)obj)->getPixmap(),iStartx,iStarty,iEndx,iEndy);
+ return true;
+}
+
+bool KviKvsObject_painter::functionrotateMatrix(KviKvsObjectFunctionCall *c)
+{
+ kvs_real_t dAngle;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("angle",KVS_PT_DOUBLE,0,dAngle)
+ KVSO_PARAMETERS_END(c)
+ if(!m_pPainter)return true;
+ m_pMatrix.rotate(dAngle);
+ m_pPainter->setWorldMatrix( m_pMatrix,false );
+ return true;
+}
+bool KviKvsObject_painter::functiontranslateMatrix(KviKvsObjectFunctionCall *c)
+{
+ kvs_real_t dXtrasl,dYtrasl;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("trasl_x",KVS_PT_DOUBLE,0,dXtrasl)
+ KVSO_PARAMETER("trasl_y",KVS_PT_DOUBLE,0,dYtrasl)
+ KVSO_PARAMETERS_END(c)
+ if(!m_pPainter)return true;
+ QWMatrix tmpMatrix;
+ tmpMatrix.translate(dXtrasl,dYtrasl);
+ tmpMatrix = m_pMatrix * tmpMatrix;
+ m_pPainter->setWorldMatrix( tmpMatrix );
+ m_pMatrix=tmpMatrix;
+ return true;
+}
+bool KviKvsObject_painter::functionshearMatrix(KviKvsObjectFunctionCall *c)
+{
+ kvs_real_t dShearh,dShearv;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("shear_h",KVS_PT_DOUBLE,0,dShearh)
+ KVSO_PARAMETER("shear_v",KVS_PT_DOUBLE,0,dShearv)
+ KVSO_PARAMETERS_END(c)
+ if(!m_pPainter)return true;
+ m_pMatrix.shear(dShearh,dShearv);
+ m_pPainter->setWorldMatrix(m_pMatrix);
+ return true;
+}
+bool KviKvsObject_painter::functionscaleMatrix(KviKvsObjectFunctionCall *c)
+{
+ kvs_real_t dScalex,dScaley;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("scale_x",KVS_PT_DOUBLE,0,dScalex)
+ KVSO_PARAMETER("scale_y",KVS_PT_DOUBLE,0,dScaley)
+ KVSO_PARAMETERS_END(c)
+ if(!m_pPainter)return true;
+ m_pMatrix.scale(dScalex,dScaley);
+ m_pPainter->setWorldMatrix(m_pMatrix);
+ return true;
+}
+bool KviKvsObject_painter::functionresetMatrix(KviKvsObjectFunctionCall *c)
+
+{
+ if(!m_pPainter)return true;
+ m_pMatrix.reset();
+ m_pPainter->setWorldMatrix( m_pMatrix );
+ return true;
+}
+
+#ifdef COMPILE_USE_QT4
+bool KviKvsObject_painter::functionsetOpacity(KviKvsObjectFunctionCall *c)
+{
+ if(!m_pPainter)return true;
+ kvs_real_t dOpacity;
+
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("opacity_factor",KVS_PT_DOUBLE,0,dOpacity)
+ KVSO_PARAMETERS_END(c)
+ m_pPainter->setOpacity(dOpacity);
+ return true;
+}
+bool KviKvsObject_painter::functionsetTextAntialiasing(KviKvsObjectFunctionCall *c)
+{
+ if(!m_pPainter)return true;
+
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ m_pPainter->setRenderHint(QPainter::TextAntialiasing,bEnabled);
+ return true;
+}
+bool KviKvsObject_painter::functionsetAntialiasing(KviKvsObjectFunctionCall *c)
+{
+ if(!m_pPainter)return true;
+
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ m_pPainter->setRenderHint(QPainter::Antialiasing,bEnabled);
+ return true;
+}
+bool KviKvsObject_painter::functionsetSmoothPixmapTransform(KviKvsObjectFunctionCall *c)
+{
+ if(!m_pPainter)return true;
+
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ m_pPainter->setRenderHint(QPainter::SmoothPixmapTransform,bEnabled);
+ return true;
+}
+#endif
+
+
+
+#include "m_class_painter.moc"
diff --git a/src/modules/objects/class_painter.h b/src/modules/objects/class_painter.h
new file mode 100644
index 00000000..2ee8a5bb
--- /dev/null
+++ b/src/modules/objects/class_painter.h
@@ -0,0 +1,96 @@
+#ifndef _CLASS_PAINTER_H_
+#define _CLASS_PAINTER_H_
+//mdm:
+// Painter : class_painter.h
+// Creation date : Fri Mar 18 14:30:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include <qpainter.h>
+#include <qpaintdevice.h>
+#include "kvi_string.h"
+
+
+#include "object_macros.h"
+
+
+class KviKvsObject_painter : public KviKvsObject
+{
+ Q_OBJECT
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_painter)
+protected:
+ QPainter * m_pPainter;
+ QWMatrix m_pMatrix;
+public:
+ bool functionSetFont(KviKvsObjectFunctionCall *c);
+ bool functionSetFontSize(KviKvsObjectFunctionCall *c);
+
+ bool functionfontAscent(KviKvsObjectFunctionCall *c);
+ bool functionfontDescent(KviKvsObjectFunctionCall *c);
+ bool functionfontMetricsWidth(KviKvsObjectFunctionCall *c);
+ bool functionfontMetricsHeight(KviKvsObjectFunctionCall *c);
+ bool functionsetBrush(KviKvsObjectFunctionCall *c);
+ bool functionsetPen(KviKvsObjectFunctionCall *c);
+ bool functionsetBackGroundMode(KviKvsObjectFunctionCall *c);
+
+ bool functiondrawRect(KviKvsObjectFunctionCall *c);
+ bool functiondrawWinFocusRect(KviKvsObjectFunctionCall *c);
+ bool functiondrawLine(KviKvsObjectFunctionCall *c);
+ bool functiondrawRoundRect(KviKvsObjectFunctionCall *c);
+ bool functiondrawPoint(KviKvsObjectFunctionCall *c);
+ bool functiondrawArc(KviKvsObjectFunctionCall *c);
+ bool functiondrawChord(KviKvsObjectFunctionCall *c);
+ bool functiondrawPie(KviKvsObjectFunctionCall *c);
+ bool functiondrawEllipse(KviKvsObjectFunctionCall *c);
+
+ bool functiondrawText(KviKvsObjectFunctionCall *c);
+ bool functiondrawPixmap(KviKvsObjectFunctionCall *c);
+
+
+ bool functionbegin(KviKvsObjectFunctionCall *c);
+ bool functionend(KviKvsObjectFunctionCall *c);
+
+ bool functionscaleMatrix(KviKvsObjectFunctionCall *c);
+ bool functionshearMatrix(KviKvsObjectFunctionCall *c);
+ bool functionrotateMatrix(KviKvsObjectFunctionCall *c);
+ bool functionresetMatrix(KviKvsObjectFunctionCall *c);
+ bool functiontranslateMatrix(KviKvsObjectFunctionCall *c);
+
+#ifdef COMPILE_USE_QT4
+ bool functionsetOpacity(KviKvsObjectFunctionCall *c);
+ bool functionsetSmoothPixmapTransform(KviKvsObjectFunctionCall *c);
+ bool functionsetTextAntialiasing(KviKvsObjectFunctionCall *c);
+ bool functionsetAntialiasing(KviKvsObjectFunctionCall *c);
+#endif
+
+
+
+protected:
+ void attachDevice(KviKvsObject * o,QPaintDevice * p);
+protected slots:
+ void detachDevice();
+private:
+ KviKvsObject * m_pDeviceObject;
+};
+#endif // !_CLASS_PAINTER_H_
+
+
+
diff --git a/src/modules/objects/class_pixmap.cpp b/src/modules/objects/class_pixmap.cpp
new file mode 100644
index 00000000..48aeb1e8
--- /dev/null
+++ b/src/modules/objects/class_pixmap.cpp
@@ -0,0 +1,317 @@
+//mdm:
+// Painter : class_pixmap.h
+// Creation date : Fri Mar 18 14:30:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+// Lucia Papini (^ashura^) English Translation.
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "class_pixmap.h"
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+#include <qfile.h>
+
+/*
+ @doc: pixmap
+ @keyterms:
+ pixmap object class
+ @title:
+ pixmap class
+ @type:
+ class
+ @short:
+ This class provide a pixmap.
+ @inherits:
+ [class]object[/class]
+ [class]widget[/class]
+ @description:
+ The pixmap class is an off-screen, pixel-based paint device.
+ @functions:
+ !fn: $fill(<widget:object>,<x_offset:integer>,<y:offset>)
+ Fills the pixmap with the widget's background color or pixmap.[br]
+ Note that x_offset, y_offest are offsets in the widget.
+ !fn: $resize(<width:integer>,<height:integer>)
+ Resizes the pixmap to w width and h height. Set wh or hg to 0, to have a null pixmap.
+ !fn: $scale(<sx:real>,<sy:real>)
+ Scales the pixmap by sx horizontally and sy vertically.
+ !fn: $rotate(<a:real>)
+ Rotates the pixmap by a degrees.
+ !fn: $load(<file_name:string>)
+ Load a pixmap from the <file>.
+ !fn: <integer> $height()
+ Return the height of the pixmap.
+ !fn: <integer> $width()
+ Return the width of the pixmap.
+
+*/
+
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_pixmap,"pixmap","object")
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_pixmap,"fill",functionfill)
+ KVSO_REGISTER_HANDLER(KviKvsObject_pixmap,"resize",functionresize)
+ KVSO_REGISTER_HANDLER(KviKvsObject_pixmap,"load",functionload)
+ KVSO_REGISTER_HANDLER(KviKvsObject_pixmap,"height",functionheight)
+ KVSO_REGISTER_HANDLER(KviKvsObject_pixmap,"width",functionwidth)
+ KVSO_REGISTER_HANDLER(KviKvsObject_pixmap,"setOpacity",functionsetOpacity)
+ KVSO_REGISTER_HANDLER(KviKvsObject_pixmap,"scale",functionscale)
+ KVSO_REGISTER_HANDLER(KviKvsObject_pixmap,"rotate",functionrotate)
+
+KVSO_END_REGISTERCLASS(KviKvsObject_pixmap)
+
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_pixmap,KviKvsObject)
+ m_pPixmap=new QPixmap();
+ m_pImage=new QImage();
+ bPixmapModified=false;
+ bImageModified=false;
+KVSO_END_CONSTRUCTOR(KviKvsObject_pixmap)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_pixmap)
+
+ emit aboutToDie();
+ delete m_pPixmap;
+ if (m_pImage) delete m_pImage;
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_pixmap)
+
+
+bool KviKvsObject_pixmap::functionfill(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject *ob;
+ kvs_int_t iXoffset,iYoffset;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETER("x_offset",KVS_PT_INT,0,iXoffset)
+ KVSO_PARAMETER("y_offset",KVS_PT_INT,0,iYoffset)
+ KVSO_PARAMETERS_END(c)
+
+ ob=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if (!ob)
+ {
+ c->warning(__tr2qs("Widget parameter is not an object"));
+ return true;
+ }
+ if(!ob->object()->isWidgetType())
+ {
+ c->warning(__tr2qs("Widget object required"));
+ return true;
+ }
+ bPixmapModified=true;
+ m_pPixmap->fill(((QWidget *)(ob->object())),iXoffset,iYoffset);
+ return true;
+}
+
+bool KviKvsObject_pixmap::functionscale(KviKvsObjectFunctionCall *c)
+{
+ kvs_real_t uScaleX,uScaleY;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("sx",KVS_PT_REAL,0,uScaleX)
+ KVSO_PARAMETER("sy",KVS_PT_REAL,0,uScaleY)
+ KVSO_PARAMETERS_END(c)
+ #ifdef COMPILE_USE_QT4
+ *m_pPixmap = m_pPixmap->scaled((m_pPixmap->width() * uScaleX), (m_pPixmap->height() * uScaleX));
+ #else
+ QWMatrix wm;
+ wm.scale(uScaleX, uScaleY);
+ *m_pPixmap = m_pPixmap->xForm(wm);
+ #endif
+ bPixmapModified=true;
+ return true;
+}
+
+bool KviKvsObject_pixmap::functionrotate(KviKvsObjectFunctionCall *c)
+{
+ kvs_real_t uDegrees;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("a",KVS_PT_REAL,0,uDegrees)
+ KVSO_PARAMETERS_END(c)
+ #ifdef COMPILE_USE_QT4
+ QMatrix m;
+ m.rotate(uDegrees);
+ *m_pPixmap = m_pPixmap->transformed(m);
+ #else
+ QWMatrix wm;
+ wm.rotate(uDegrees);
+ *m_pPixmap = m_pPixmap->xForm(wm);
+ #endif
+ bPixmapModified=true;
+ return true;
+}
+
+bool KviKvsObject_pixmap::functionresize(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t uWidth,uHeight;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("width",KVS_PT_UNSIGNEDINTEGER,0,uWidth)
+ KVSO_PARAMETER("height",KVS_PT_UNSIGNEDINTEGER,0,uHeight)
+ KVSO_PARAMETERS_END(c)
+ m_pPixmap->resize(uWidth,uHeight);
+ bPixmapModified=true;
+ return true;
+}
+
+
+bool KviKvsObject_pixmap::functionload(KviKvsObjectFunctionCall *c)
+{
+ QString szFile;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("file",KVS_PT_STRING,0,szFile)
+ KVSO_PARAMETERS_END(c)
+
+ if(!QFile::exists(szFile))
+ {
+ c->warning(__tr2qs("I can't find the specified file %Q."),&szFile);
+ return true;
+ }
+ m_pPixmap->load(szFile);
+ bPixmapModified=true;
+ return true;
+}
+bool KviKvsObject_pixmap::functionheight(KviKvsObjectFunctionCall *c)
+{
+ c->returnValue()->setInteger(m_pPixmap->height());
+ return true;
+}
+bool KviKvsObject_pixmap::functionwidth(KviKvsObjectFunctionCall *c)
+{
+ c->returnValue()->setInteger(m_pPixmap->width());
+ return true;
+}
+bool KviKvsObject_pixmap::functionsetOpacity(KviKvsObjectFunctionCall *c)
+{
+ if(!m_pPixmap)return true;
+ kvs_real_t dOpacity;
+ kvs_uint_t uXoffset,uYoffset;
+ kvs_uint_t uWidth,uHeight;
+
+ KviKvsObject * pObDest;
+ kvs_hobject_t hObject;
+
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("opacity_factor",KVS_PT_DOUBLE,0,dOpacity)
+ KVSO_PARAMETER("destination",KVS_PT_HOBJECT,0,hObject)
+
+ KVSO_PARAMETER("x_offset",KVS_PT_UNSIGNEDINTEGER,KVS_PF_OPTIONAL,uXoffset)
+ KVSO_PARAMETER("y_offset",KVS_PT_UNSIGNEDINTEGER,KVS_PF_OPTIONAL,uYoffset)
+ KVSO_PARAMETER("width",KVS_PT_UNSIGNEDINTEGER,KVS_PF_OPTIONAL,uWidth)
+ KVSO_PARAMETER("height",KVS_PT_UNSIGNEDINTEGER,KVS_PF_OPTIONAL,uHeight)
+ KVSO_PARAMETERS_END(c)
+ pObDest=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+
+ if (!pObDest)
+ {
+ c->warning(__tr2qs("Destination parameter is not an object"));
+ return true;
+ }
+
+ if(!pObDest->inherits("KviKvsObject_pixmap"))
+ {
+ c->warning(__tr2qs("Destination must be a pixmap object"));
+ return true;
+ }
+ QImage *buffer=((KviKvsObject_pixmap *)pObDest)->getImage();
+ ((KviKvsObject_pixmap *)pObDest)->imageChanged();
+ if (bPixmapModified) {
+ *m_pImage=m_pPixmap->convertToImage();
+ }
+ if (uWidth>buffer->width() || uHeight>buffer->height())
+ {
+ c->warning(__tr2qs("Area dimensions are out of destination size "));
+ return true;
+ }
+ if (!uWidth){
+ if(m_pImage->width()>buffer->width())
+ {
+ c->warning(__tr2qs("Pixmap dimensions are out of destination size "));
+ return true;
+ }
+ }
+
+ if (!uHeight)
+ {
+ if(m_pImage->height()>buffer->height())
+ {
+ c->warning(__tr2qs("Pixmap dimensions are out of destination size "));
+ return true;
+ }
+ }
+
+
+if(uXoffset+uWidth>m_pImage->width())
+ {
+ c->warning(__tr2qs("Offset width area is out of pixmap size "));
+ return true;
+ }
+ if( uYoffset+uHeight>m_pImage->height())
+ {
+ c->warning(__tr2qs("Offset height area is out of pixmap size "));
+ return true;
+ }
+
+ buffer->setAlphaBuffer(true);
+ int iHedge=uHeight?uHeight:m_pImage->height();
+ int iWedge=uWidth?uWidth:m_pImage->width();
+
+ for(int y = uYoffset;y<iHedge;y++)
+ {
+ QRgb * dst = (QRgb *)buffer->scanLine(y);
+ QRgb * src = (QRgb *)m_pImage->scanLine(y);
+ src += uXoffset;
+ QRgb * end;
+ end = src + iWedge;
+ while(src < end)
+ {
+ *dst = qRgba(
+ (int)(qRed(*src)),
+ (int)(qGreen(*src)),
+ (int)(qBlue(*src)),
+ (int)(qAlpha(*src)*dOpacity)
+ );
+ src++;
+ dst++;
+ }
+ }
+ return true;
+}
+
+
+QPixmap * KviKvsObject_pixmap::getPixmap()
+{
+ if (bImageModified) {
+ m_pPixmap->convertFromImage(*m_pImage);
+ bImageModified=false;
+ }
+ return m_pPixmap;
+}
+QImage * KviKvsObject_pixmap::getImage()
+{
+ if (bPixmapModified) {
+ *m_pImage=m_pPixmap->convertToImage();
+ //debug ("image info2 %d and %d",test.width(),test.height());
+
+ bPixmapModified=false;
+ }
+
+ return m_pImage;
+}
+
+#include "m_class_pixmap.moc"
diff --git a/src/modules/objects/class_pixmap.h b/src/modules/objects/class_pixmap.h
new file mode 100644
index 00000000..22d1b95d
--- /dev/null
+++ b/src/modules/objects/class_pixmap.h
@@ -0,0 +1,72 @@
+#ifndef _CLASS_PIXMAP_H_
+#define _CLASS_PIXMAP_H_
+//vim: ts=8
+// Pixmap : class_pixmap.h
+// Creation date : Thu Sep 21 04:43:01 CEST 2000 by Krzysztof Godlewski
+//
+// This pixmap is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+
+#include <qpixmap.h>
+#include <qimage.h>
+#ifdef COMPILE_USE_QT4
+ #include <QMatrix>
+#else
+ #include <qwmatrix.h>
+#endif
+#include "kvi_string.h"
+
+
+#include "object_macros.h"
+
+
+class KviKvsObject_pixmap : public KviKvsObject
+{
+ Q_OBJECT
+// Q_PROPERTY(QPixmap pixmap READ getPixmap)
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_pixmap);
+ QPixmap * getPixmap();
+ QImage * getImage();
+ void pixmapChanged(){bPixmapModified=true;}
+ void imageChanged(){bImageModified=true;}
+
+ QPixmap * pixmap(){ return m_pPixmap; }
+protected:
+ QPixmap * m_pPixmap;
+ QImage * m_pImage;
+ bool bImageModified;
+ bool bPixmapModified;
+signals:
+ void aboutToDie();
+
+protected:
+ bool functionfill(KviKvsObjectFunctionCall *c);
+ bool functionresize(KviKvsObjectFunctionCall *c);
+ bool functionscale(KviKvsObjectFunctionCall *c);
+ bool functionrotate(KviKvsObjectFunctionCall *c);
+ bool functionload(KviKvsObjectFunctionCall *c);
+ bool functionheight(KviKvsObjectFunctionCall *c);
+ bool functionwidth(KviKvsObjectFunctionCall *c);
+ bool functionsetOpacity(KviKvsObjectFunctionCall *c);
+
+ };
+
+#endif // !_CLASS_PIXMAP_H_
diff --git a/src/modules/objects/class_popupmenu.cpp b/src/modules/objects/class_popupmenu.cpp
new file mode 100644
index 00000000..a3db5339
--- /dev/null
+++ b/src/modules/objects/class_popupmenu.cpp
@@ -0,0 +1,361 @@
+//mdm :
+// File : class_popupmenu.cpp
+// Creation date : Mon Feb 01 21:30:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+// Lucia Papini (^ashura^) English Translation.
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "class_popupmenu.h"
+#include "kvi_error.h"
+
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+
+
+/*
+ @doc: popupmenu
+ @keyterms:
+ popupmenu object class,
+ @title:
+ popupmenu class
+ @type:
+ class
+ @short:
+ Provides a popup menu.
+ @inherits:
+ [class]object[/class]
+ [class]widget[/class]
+ @description:
+ This widget can be used to display a popup menu.Technically, a popup menu consists of a list of menu items.[br]
+ You add items with insertItem(). An item is either a string. In addition, items can have an optional icon drawn on the very left side.[br]
+ @functions:
+ !fn: $insertItem(<text:string>,[icon_id:string])
+ Inserts menu items into a popup menu with optional icon and return the popup identifier.
+ !fn: $insertWidget(<widget:object>)[br]
+ Inserts widget items int a popup menu and return the popup identifier.[br]
+ The widget is treats as a separator; this means that the item is not selectable and you can, for example, simply insert a label if you need a popup menu with a title.
+ !fn: $insertHandle(<text_label:string>,<popupmenu:object>,[icon])
+ Inserts a submenu with optional icon into the popup menu.
+ !fn: $exec([<widget:objects>,<x:uinteger>,<y:integer>])
+ If called without paramaters show the popup menu at the current pointer position.[br]
+ With the optional parameters show the popup menu at the coordinate x,y widget parameter relative.
+ !fn: $removeItem(<popup_id:Uinteger>)
+ Removes the menu item that has the identifier id.
+ !fn: $removeItemAt(<index:uinteger>)
+ Removes the menu item at position index.
+ !fn: $insertSeparator(<index:uinteger>)
+ Inserts a separator at position index.[br]
+ If the index is negative the separator becomes the last menu item.
+ !fn: $activatedEvent(<popup_id:uinteger>)
+ This function is called when a menu item and return the the item id.[br]
+ The default implementation emits the [classfnc]$activated[/classfnc]() signal.
+ !fn: $highligthtedEvent(<popup_id:uinteger>)
+ This function is called when a menu item is highlighted and return the item id.[br]
+ The default implementation emits the [classfnc]$highlighted[/classfnc]() signal.
+ @signals:
+ !sg: $activated()
+ This signal is emitted by the default implementation of [classfnc]$activatedEvent[/classfnc]().
+ !sg: $highlighted()
+ This signal is emitted by the default implementation of [classfnc]$highlightedEvent[/classfnc]().
+ [br]
+ |-EXAMPLE POPUP MENU-|[br]
+ |--Start:
+ # First of all we create an array wich will be used to create random colors.[br]
+ %Hex[]=$array(0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)[br]
+ [br]
+ class (ws,widget)[br]
+ {[br]
+ #In the constructor we create everything that belong to the single widget.[br]
+ constructor[br]
+ {[br]
+ #Geometry of the widget and setting-up of popupmenu [br]
+ $$->$setGeometry(%X,%Y,100,100)[br]
+ $$->%lay=$new(layout,$$)[br]
+ #Here we generate a cicle to create our labels inside the widget.[br]
+ %i=0[br]
+ while (%i<10)[br]
+ {[br]
+ $$->%label=$new(label,$$)[br]
+ $$->%label->$settext("Another class by N\&G")[br]
+ #We set our foreground's coulor using the hex arrey in random way.[br]
+ %color=%Hex[$rand(14)]%Hex[$rand(14)]%Hex[$rand(14)]%Hex[$rand(14)]%Hex[$rand(14)]%Hex[$rand(14)][br]
+ $$->%label->$setforegroundcolor(%color)[br]
+ $$->%label->$setautoresize(1)[br]
+ #We add the label to the widget's popupmenu.[br]
+ $$->%lay->$addwidget($$->%label,%i,0)[br]
+ %i++;[br]
+ }[br]
+ #We make the popupmenu relative to this widget: this is merely demonstrative.[br]
+ #because it creates 25 identical popups.[br]
+ $$->%Popupmenu=$new(popupmenu,$$)[br]
+ #we create the label widget wich will be used as popup's title[br]
+ $$->%Popuptitle=$new(label)[br]
+ $$->%Popuptitle->$settext(<B><U>"Windows Options"</B></U>)[br]
+ $$->%Popuptitle->$setAlignment(Center)[br]
+ #and we add it.[br]
+ %A=$$->%Popuptitle[br]
+ $$->%Popupmenu->$insertwidget(%A)[br]
+ #Here we keep the various IDs in the arrays[br]
+ %Tile[%I]=$$->%Popupmenu->$insertItem("Tile",118)[br]
+ %Cascade[%I]=$$->%Popupmenu->$insertItem("Cascade",115)[br]
+ $$->%Popupmenu->$insertSeparator(3)[br]
+ %Closeactw[%I]=$$->%Popupmenu->$insertItem("Close Active Window",08)[br]
+ %Closeallw[%I]=$$->%Popupmenu->$insertItem("Close All Window",58)[br]
+ $$->$show()[br]
+ privateimpl($$->%Popupmenu,activatedEvent)[br]
+ {[br]
+ %id=$0[br]
+ %i = 0[br]
+ #with this cicle we control wich of the items has been called comparing the id given back by the event with our arrays created before;[br]
+ while (%i<20)[br]
+ {[br]
+ if (%id == %Tile[%i]) return %Workspace->$tile()[br]
+ if (%id == %Cascade[%i]) return %Workspace->$cascade()[br]
+ if (%id == %Closeactw[%i]) return %Workspace->$closeactivewindow()[br]
+ if (%id == %Closeallw[%i]) return %Workspace->$closeallwindows()[br]
+ %i ++[br]
+ }[br]
+ }[br]
+ }[br]
+ #we activate the popup pushing the right mouse button on the widget[br]
+ mousepressevent[br]
+ {[br]
+ if ($0 == 1) $$->%Popupmenu->$exec()[br]
+ }[br]
+ }[br]
+ %Workspace=$new(workspace)[br]
+ %Workspace->$resize(640,480)[br]
+ %I=0[br]
+ %Cicle=1[br]
+ while (%I<20)[br]
+ {[br]
+ %X=$rand(500)[br]
+ %Y=$rand(480)[br]
+ %Widget=$new(ws,%Workspace)[br]
+ %I++[br]
+ }[br]
+ #Let's show!
+ %Workspace->$show[br]
+ |--End.[br][br]
+*/
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_popupmenu,"popupmenu","widget")
+ KVSO_REGISTER_HANDLER(KviKvsObject_popupmenu,"insertItem", functioninsertItem)
+ KVSO_REGISTER_HANDLER(KviKvsObject_popupmenu,"insertWidget", functioninsertWidget)
+ KVSO_REGISTER_HANDLER(KviKvsObject_popupmenu,"insertHandle", functioninsertHandle)
+ KVSO_REGISTER_HANDLER(KviKvsObject_popupmenu,"exec", functionexec)
+ KVSO_REGISTER_HANDLER(KviKvsObject_popupmenu,"insertSeparator", functioninsertSeparator)
+ KVSO_REGISTER_HANDLER(KviKvsObject_popupmenu,"removeItem", functionremoveItem)
+ KVSO_REGISTER_HANDLER(KviKvsObject_popupmenu,"removeItemAt", functionremoveItemAt)
+
+ // events
+ KVSO_REGISTER_HANDLER(KviKvsObject_popupmenu,"highlightedEvent", functionhighlightedEvent)
+ KVSO_REGISTER_HANDLER(KviKvsObject_popupmenu,"activatedEvent", functionactivatedEvent)
+
+KVSO_END_REGISTERCLASS(KviKvsObject_popupmenu)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_popupmenu,KviKvsObject_widget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_popupmenu)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_popupmenu)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_popupmenu)
+
+bool KviKvsObject_popupmenu::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ setObject(new KviTalPopupMenu(parentScriptWidget(), name()), true);
+ connect(widget(),SIGNAL(activated(int)),this,SLOT(slotactivated(int)));
+ connect(widget(),SIGNAL(highlighted(int)),this,SLOT(slothighlighted(int)));
+ return true;
+}
+
+bool KviKvsObject_popupmenu::functioninsertItem(KviKvsObjectFunctionCall *c)
+{
+ QString szItem,szIcon;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szItem)
+ KVSO_PARAMETER("icon_id",KVS_PT_STRING,KVS_PF_OPTIONAL,szIcon)
+ KVSO_PARAMETERS_END(c)
+ if(!widget())return true;
+ QPixmap *pix = 0;
+ int id=0;
+ if(!szIcon.isEmpty())
+ {
+ pix = g_pIconManager->getImage(szIcon);
+ if (pix) id=((KviTalPopupMenu *)widget())->insertItem(*pix,szItem);
+ else c->warning(__tr2qs("pix '%Q' doesn't exists"),&szIcon);
+
+ }
+ else
+ id=((KviTalPopupMenu *)widget())->insertItem(szItem);
+ c->returnValue()->setInteger(id);
+ return true;
+}
+bool KviKvsObject_popupmenu::functioninsertWidget(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject *pObject;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETERS_END(c)
+ pObject=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if (!pObject)
+ {
+ c->warning(__tr2qs("Widget parameter is not an object"));
+ return true;
+ }
+ if (!pObject->object())
+ {
+ c->warning(__tr2qs("Widget parameter is not a valid object"));
+ return true;
+ }
+ if(!pObject->object()->isWidgetType())
+ {
+ c->warning(__tr2qs("Can't add a non-widget object"));
+ return TRUE;
+ }
+ if (widget()) ((KviTalPopupMenu *)widget())->insertItem(((KviTalPopupMenu *)(pObject->object())));
+ return true;
+}
+bool KviKvsObject_popupmenu::functioninsertHandle(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject *ob;
+ QString szLabel,szIcon;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text_label",KVS_PT_STRING,0,szLabel)
+ KVSO_PARAMETER("widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETER("icon_id",KVS_PT_STRING,KVS_PF_OPTIONAL,szIcon)
+ KVSO_PARAMETERS_END(c)
+ ob=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if(!ob->object()->inherits("KviKvsObject_popupmenu"))
+ {
+ c->warning(__tr2qs("Can't add a non - popupmenu object"));
+ return TRUE;
+ }
+ if(!widget())return true;
+ QPixmap *pix = 0;
+ int id=0;
+ if(!szIcon.isEmpty())
+ {
+ pix = g_pIconManager->getImage(szIcon);
+ if (pix) id=((KviTalPopupMenu *)widget())->insertItem(*pix,szLabel,((KviTalPopupMenu *)(ob->object())));
+ else c->warning(__tr2qs("pix '%Q' doesn't exists"),&szIcon);
+
+ }
+ else
+ id=((KviTalPopupMenu *)widget())->insertItem(szLabel,((KviTalPopupMenu *)(ob->object())));
+ c->returnValue()->setInteger(id);
+ return true;
+}
+bool KviKvsObject_popupmenu::functionexec(KviKvsObjectFunctionCall *c)
+{
+ if(!c->params()->count())
+ {
+ ((KviTalPopupMenu *)widget())->exec(QCursor::pos());
+ return true;
+ }
+
+ KviKvsObject *pObject;
+ kvs_uint_t iX,iY;
+ QString szLabel,szIcon;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETER("x",KVS_PT_UNSIGNEDINTEGER,0,iX)
+ KVSO_PARAMETER("y",KVS_PT_UNSIGNEDINTEGER,0,iY)
+ KVSO_PARAMETERS_END(c)
+ pObject=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if (!pObject)
+ {
+ c->warning(__tr2qs("Widget parameter is not an object"));
+ return true;
+ }
+ if (!pObject->object())
+ {
+ c->warning(__tr2qs("Widget parameter is not a valid object"));
+ return true;
+ }
+ if(!pObject->object()->isWidgetType())
+ {
+ c->warning(__tr2qs("Doesn't a widget object"));
+ return true;
+ }
+
+ ((KviTalPopupMenu *)widget())->exec(((QWidget *)(pObject->object()))->mapToGlobal(QPoint(iX,iY)) );
+
+ return true;
+}
+bool KviKvsObject_popupmenu::functionremoveItem(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uItem;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("item_id",KVS_PT_UNSIGNEDINTEGER,0,uItem)
+ KVSO_PARAMETERS_END(c)
+ if(widget()) ((KviTalPopupMenu *)widget())->removeItem(uItem);
+ return true;
+}
+bool KviKvsObject_popupmenu::functionremoveItemAt(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uIndex;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("index",KVS_PT_UNSIGNEDINTEGER,0,uIndex)
+ KVSO_PARAMETERS_END(c)
+ if(widget())((KviTalPopupMenu *)widget())->removeItemAt(uIndex);
+ return true;
+}
+
+bool KviKvsObject_popupmenu::functioninsertSeparator(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uIndex;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("index",KVS_PT_UNSIGNEDINTEGER,0,uIndex)
+ KVSO_PARAMETERS_END(c)
+ if(widget())((KviTalPopupMenu *)widget())->insertSeparator(uIndex);
+ return true;
+}
+
+void KviKvsObject_popupmenu::slothighlighted(int i)
+{
+ KviKvsVariantList params(new KviKvsVariant((kvs_int_t)i));
+ callFunction(this,"highlightedEvent",&params);
+}
+bool KviKvsObject_popupmenu::functionhighlightedEvent(KviKvsObjectFunctionCall *c)
+{
+ emitSignal("highlighted",c,c->params());
+ return true;
+}
+void KviKvsObject_popupmenu::slotactivated(int i)
+{
+ KviKvsVariantList params(new KviKvsVariant((kvs_int_t)i));
+ callFunction(this,"activatedEvent",&params);
+}
+bool KviKvsObject_popupmenu::functionactivatedEvent(KviKvsObjectFunctionCall *c)
+{
+ emitSignal("activated",c,c->params());
+ return true;
+}
+
+
+#include "m_class_popupmenu.moc"
diff --git a/src/modules/objects/class_popupmenu.h b/src/modules/objects/class_popupmenu.h
new file mode 100644
index 00000000..e5960119
--- /dev/null
+++ b/src/modules/objects/class_popupmenu.h
@@ -0,0 +1,58 @@
+#ifndef _CLASS_POPUPMENU_H_
+#define _CLASS_POPUPMENU_H_
+//mdm:
+// File : class_popupMenu.h
+// Creation date : Mon Gen 27 14:30:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "kvi_tal_popupmenu.h"
+#include <qcursor.h>
+#include "class_widget.h"
+#include "object_macros.h"
+
+class KviKvsObject_popupmenu : public KviKvsObject_widget
+{
+ Q_OBJECT
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_popupmenu)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+ bool functioninsertItem(KviKvsObjectFunctionCall *c);
+ bool functioninsertWidget(KviKvsObjectFunctionCall *c);
+ bool functioninsertHandle(KviKvsObjectFunctionCall *c);
+ bool functionexec(KviKvsObjectFunctionCall *c);
+ bool functionremoveItem(KviKvsObjectFunctionCall *c);
+ bool functionremoveItemAt(KviKvsObjectFunctionCall *c);
+ bool functioninsertSeparator(KviKvsObjectFunctionCall *c);
+ bool functionactivatedEvent(KviKvsObjectFunctionCall *c);
+ bool functionhighlightedEvent(KviKvsObjectFunctionCall *c);
+
+protected slots:
+ void slotactivated(int);
+ void slothighlighted(int);
+};
+
+#endif // !_CLASS_POPUPMENU_H_
+
diff --git a/src/modules/objects/class_process.cpp b/src/modules/objects/class_process.cpp
new file mode 100644
index 00000000..81efaae4
--- /dev/null
+++ b/src/modules/objects/class_process.cpp
@@ -0,0 +1,317 @@
+//mdm:
+// File : class_process.h
+// Creation date : Thu Feb 1 14:39:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+
+#include "class_process.h"
+#include "kvi_error.h"
+#include "kvi_debug.h"
+#include "kvi_settings.h"
+#include "kvi_locale.h"
+#include <qtimer.h>
+#ifdef COMPILE_USE_QT4
+#include <q3process.h>
+#else
+#include <qprocess.h>
+#endif
+
+/*
+ @doc: process
+ @keyterms:
+ process object class, process
+ @title:
+ process class
+ @type:
+ class
+ @short:
+ A class to manage process.
+ @inherits:
+ [class]object[/class]
+ @description:
+ The Process class is used to start external programs and to communicate with them.[br]
+ !WARNING AT LAST YOU HAVE TO CLOSE THE PROCESS!
+ @functions:
+ !fn: $addArg(<process-name:string>)
+ With this command you give the process name (or more arguments) for comunication.
+ Es: see the next example.
+ !fn: $start()
+ Tries to run the process.[br]
+ Es: [br]
+ %process=$new(process);[br]
+ %process->$addArg("cmd.exe");[br]
+ %process->$start();[br]
+ !fn: <string> $readStdout()
+ Reads the data that the process has written to standard output.
+ !fn: <string> $readStderr()
+ Reads the data that the process has written to standard error.
+ Es:[br]
+ -------------------Start:[br]
+ class (test,object)[br]
+ {[br]
+ slotReadStdout()[br]
+ {[br]
+ %stdo = %Process->$readStdout()[br]
+ #%Aoutput->$append(%stdo);// coming soon in the new texteditor class[br]
+ %Aoutput->$settext(%stdo);[br]
+ }[br]
+ slotReadStderr()[br]
+ {[br]
+ %stderr= %Process->$readStderr()[br]
+ #%Aoutput->$append(%stderr);// coming soon in the new texteditor class[br]
+ %Aoutput->$settext(%stderr);[br]
+ }[br]
+ }[br]
+
+ %tt=$new(test)[br]
+ %A=$new(widget)[br]
+ %A->$setGeometry(100,100,400,300)[br]
+ %layoutA=$new(layout,%A)[br]
+ %Ainput=$new(lineedit,%A)[br]
+ #%Aoutput=$new(textedit,%A)// coming soon in the new texteditor class[br]
+ %Aoutput=$new(label,%A)[br]
+ %bclosekill=$new(button,%A)[br]
+ %bclosekill->$settext("&CloseKill ")[br]
+ %bkill=$new(button,%A)[br]
+ %bkill->$settext("&Kill ")[br]
+ %bterminate=$new(button,%A)[br]
+ %bterminate->$settext("&Ask to Terminate ")[br]
+ %layoutA->$addwidget(%Ainput,0,0)[br]
+ %layoutA->$addwidget(%Aoutput,1,0)[br]
+ %layoutA->$addwidget(%bclosekill,3,0)[br]
+ %layoutA->$addwidget(%bkill,4,0,)[br]
+ %layoutA->$addwidget(%bterminate,5,0)[br]
+
+ %Process=$new(process)[br]
+ %Process->$addArg("cmd.exe")[br]
+ %Process->$start();[br]
+
+ connect %Process readyReadStdout %tt slotReadStdout[br]
+ connect %Process readyReadStderr %tt slotReadStderr[br]
+ privateimpl(%Ainput,returnPressedEvent)[br]
+ {
+ %command=%Ainput->$text() "\r\n"[br]
+ %Process->$writeToStdin(%command);[br]
+ %Ainput->$setText("");[br]
+ }[br]
+
+ privateimpl(%bclosekill,mousepressevent)[br]
+ {[br]
+ %Process->$closekill();[br]
+ delete %A;[br]
+ }[br]
+ privateimpl(%bkill,mousepressevent)[br]
+ {[br]
+ %Process->$kill();[br]
+ delete %A;[br]
+ }[br]
+ privateimpl(%bterminate,mousepressevent)[br]
+ {[br]
+ %Process->$tryTerminate();[br]
+ delete %A;[br]
+ }[br]
+ %A->$show();[br]
+ --------------------End.[br]
+ !fn: $writeToStdin(<command:string>)
+ Whit this command you send a command to the process:
+ !fn: $closekill()
+ This tries to terminate the process the nice way.[br]
+ If the process is still running after 5 seconds, it terminates the process the hard way.[br]
+ (I think that this is the better way.)[br]
+ Es:
+ %Process->close_kill();
+ !fn: $kill()
+ Kill the process in hard way.(Bad Idea)
+ !fn: $tryTerminate()
+ Tries to terminate the process.(It could be well but...)
+ !fn: $closeStdin()
+ Close the standard Input.
+ !fn: <boolean> $isRunning()
+ Return 1 if the process is running, else return 0.
+ !fn: <boolean> $normalExit()
+ Returns TRUE if the process has exited normally; otherwise returns FALSE.
+ !fn: $readyReadStdoutEvent()
+ This function is invoched by the process when there are new datas.[br]
+ The default implementation emits the [classfnc]$readyReadStdout[/classfnc]() signal.
+ !fn: $readyReadStderrEvent()
+ This function is invoched by the process when there are new error messages.[br]
+ The default implementation emits the [classfnc]$readyReadStderr[/classfnc]() signal.
+
+ @signals:
+ !sg: $readyReadStdout()
+ This signal is emitted by the default implementation of [classfnc]$readyReadStdoutEvent[/classfnc]().[br]
+ If you reimplement that function you will have to emit the signal manually (if you still need it).
+ !sg: $readyReadStderr()
+ This signal is emitted by the default implementation of [classfnc]$readyReadStderrEvent[/classfnc]().
+*/
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_process,"process","object")
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_process,"addArg", functionaddArgument);
+ KVSO_REGISTER_HANDLER(KviKvsObject_process,"start", functionstartProcess);
+ KVSO_REGISTER_HANDLER(KviKvsObject_process,"readStdout", functionreadStdout);
+ KVSO_REGISTER_HANDLER(KviKvsObject_process,"readStderr", functionreadStderr);
+ KVSO_REGISTER_HANDLER(KviKvsObject_process,"writeToStdin", functionwriteToStdin);
+ KVSO_REGISTER_HANDLER(KviKvsObject_process,"closekill", functionclosekill);
+ KVSO_REGISTER_HANDLER(KviKvsObject_process,"kill", functionkill);
+ KVSO_REGISTER_HANDLER(KviKvsObject_process,"tryTerminate", functiontryTerminate);
+ KVSO_REGISTER_HANDLER(KviKvsObject_process,"closeStdin", functioncloseStdin);
+ KVSO_REGISTER_HANDLER(KviKvsObject_process,"isRunning",functionisRunning);
+ KVSO_REGISTER_HANDLER(KviKvsObject_process,"normalExit",functionnormalExit);
+
+ // Events
+ KVSO_REGISTER_HANDLER(KviKvsObject_process,"readyReadStdoutEvent",functionreadyReadStdoutEvent);
+ KVSO_REGISTER_HANDLER(KviKvsObject_process,"readyReadStderrEvent",functionreadyReadStderrEvent);
+
+ KVSO_END_REGISTERCLASS(KviKvsObject_process)
+
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_process,KviKvsObject)
+
+#ifdef COMPILE_USE_QT4
+ m_pProcess = new Q3Process();
+#else
+ m_pProcess = new QProcess();
+#endif
+ connect(m_pProcess,SIGNAL(readyReadStdout()),this,SLOT(slotReadStdout()));
+ connect(m_pProcess,SIGNAL(readyReadStderr()),this,SLOT(slotReadStderr()));
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_process)
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_process)
+
+ delete m_pProcess;
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_process)
+
+
+
+bool KviKvsObject_process::functionaddArgument(KviKvsObjectFunctionCall *c)
+{
+
+ QString szArgument;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("argument",KVS_PT_NONEMPTYSTRING,0,szArgument)
+ KVSO_PARAMETERS_END(c)
+ if (m_pProcess) m_pProcess->addArgument(szArgument);
+ return true;
+}
+
+//->Start the process.
+bool KviKvsObject_process::functionstartProcess(KviKvsObjectFunctionCall *c)
+{
+
+ if(!(m_pProcess->start()))
+ c->warning( __tr2qs("Process could not be starded."));
+ return true;
+}
+//-->Read the standard output.
+bool KviKvsObject_process::functionreadStderr(KviKvsObjectFunctionCall *c)
+{
+ QString ng_Process =m_pProcess->readStderr();
+ c->returnValue()->setString(ng_Process);
+ return true;
+}
+
+//-->Read the standard error.
+bool KviKvsObject_process::functionreadStdout(KviKvsObjectFunctionCall *c)
+{
+ QString ng_Process =m_pProcess->readStdout();
+ c->returnValue()->setString(ng_Process);
+ return true;
+}
+//-->Signals and slot to manage reading output and error from the process.
+bool KviKvsObject_process::functionreadyReadStdoutEvent(KviKvsObjectFunctionCall *c)
+{
+
+ emitSignal("readyReadStdout",c);
+ return true;
+
+}
+
+bool KviKvsObject_process::functionreadyReadStderrEvent(KviKvsObjectFunctionCall *c)
+{
+
+ emitSignal("readyReadStderr",c);
+ return true;
+
+}
+bool KviKvsObject_process::functionwriteToStdin(KviKvsObjectFunctionCall *c)
+{
+
+ QString szCommand;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("command",KVS_PT_STRING,0,szCommand)
+ KVSO_PARAMETERS_END(c)
+ if (m_pProcess) m_pProcess->writeToStdin(szCommand);
+
+ return true;
+}
+//-->The 3 Closing process functions
+bool KviKvsObject_process::functionclosekill(KviKvsObjectFunctionCall *c)
+{
+ //I try to to terminate the process the nice way....
+ m_pProcess->tryTerminate();
+ //If the process is still running after 5 seconds, I'll terminate the process in the hard way.
+ QTimer::singleShot( 5000, m_pProcess, SLOT( kill() ) );
+ return true;
+}
+bool KviKvsObject_process::functionkill(KviKvsObjectFunctionCall *c)
+{
+ m_pProcess->kill();
+ return true;
+}
+bool KviKvsObject_process::functiontryTerminate(KviKvsObjectFunctionCall *c)
+{
+ m_pProcess->tryTerminate();
+ return true;
+}
+//-->Close the standard input.
+bool KviKvsObject_process::functioncloseStdin(KviKvsObjectFunctionCall *c)
+{
+
+ m_pProcess->closeStdin();
+ return true;
+}
+//->Returns if the process still runnig
+bool KviKvsObject_process::functionisRunning(KviKvsObjectFunctionCall *c)
+{
+ c->returnValue()->setBoolean(m_pProcess->isRunning());
+ return true;
+}
+//->Returns if the process exited.
+bool KviKvsObject_process::functionnormalExit(KviKvsObjectFunctionCall *c)
+{
+ c->returnValue()->setBoolean(m_pProcess->normalExit());
+ return true;
+}
+
+void KviKvsObject_process::slotReadStdout()
+{
+ KviKvsVariantList *params=0;
+ callFunction(this,"readyReadStdoutEvent",params);
+}
+
+void KviKvsObject_process::slotReadStderr()
+{
+ KviKvsVariantList *params=0;
+ callFunction(this,"readyReadStderrEvent",params);
+}
+
+#include "m_class_process.moc"
diff --git a/src/modules/objects/class_process.h b/src/modules/objects/class_process.h
new file mode 100644
index 00000000..70842950
--- /dev/null
+++ b/src/modules/objects/class_process.h
@@ -0,0 +1,74 @@
+#ifndef _CLASS_PROCESS_H_
+#define _CLASS_PROCESS_H_
+//mdm:
+// File : class_process.h
+// Creation date : Thu Feb 1 14:39:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+
+
+#include <qtimer.h>
+#include "class_widget.h"
+
+
+#include "object_macros.h"
+#ifdef COMPILE_USE_QT4
+#include <q3process.h>
+#else
+#include <qprocess.h>
+#endif
+
+
+class KviKvsObject_process : public KviKvsObject
+{
+ Q_OBJECT
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_process)
+protected:
+
+#ifdef COMPILE_USE_QT4
+ Q3Process * m_pProcess;
+#else
+ QProcess * m_pProcess;
+#endif
+
+public:
+
+ bool functionaddArgument(KviKvsObjectFunctionCall *c);
+ bool functionstartProcess(KviKvsObjectFunctionCall *c);
+ bool functionreadStdout(KviKvsObjectFunctionCall *c);
+ bool functionreadStderr(KviKvsObjectFunctionCall *c);
+ bool functionwriteToStdin(KviKvsObjectFunctionCall *c);
+ bool functionclosekill(KviKvsObjectFunctionCall *c);
+ bool functioncloseStdin(KviKvsObjectFunctionCall *c);
+ bool functionkill(KviKvsObjectFunctionCall *c);
+ bool functiontryTerminate(KviKvsObjectFunctionCall *c);
+ bool functionnormalExit(KviKvsObjectFunctionCall *c);
+ bool functionisRunning(KviKvsObjectFunctionCall *c);
+
+ bool functionreadyReadStdoutEvent(KviKvsObjectFunctionCall *c);
+ bool functionreadyReadStderrEvent(KviKvsObjectFunctionCall *c);
+
+protected slots:
+ void slotReadStdout();
+ void slotReadStderr();
+};
+
+
+#endif // !_CLASS_PROCESS_H_
diff --git a/src/modules/objects/class_progressbar.cpp b/src/modules/objects/class_progressbar.cpp
new file mode 100644
index 00000000..12fc5b39
--- /dev/null
+++ b/src/modules/objects/class_progressbar.cpp
@@ -0,0 +1,162 @@
+//
+// File : class_progressbar.cpp
+// Creation date : Fri Jan 28 14:21:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "class_progressbar.h"
+#include "kvi_error.h"
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+#ifdef COMPILE_USE_QT4
+#include <q3progressbar.h>
+#define KVI_PROGRESS_BAR Q3ProgressBar
+#else
+#include <qprogressbar.h>
+#define KVI_PROGRESS_BAR QProgressBar
+#endif
+
+/*
+ @doc: progressbar
+ @keyterms:
+ progressbar object class,
+ @title:
+ progressbar class
+ @type:
+ class
+ @short:
+ Provides a horizontal progress bar.
+ @inherits:
+ [class]object[/class]
+ [class]widget[/class]
+ @description:
+ This widget can be used to display a horizontal progress bar.
+ @functions:
+ !fn: $setProgress(<steps_value:uinteger>)
+ Set the amount of steps completed.
+ See also [classfnc]$settotalSteps[/classfnc]()
+ !fn: $settotalSteps(<total_steps:uinteger>)
+ The progress bar uses the concept of steps; you give it the total number of steps
+ and the number of steps completed so far and it will display the percentage of steps that have been completed.
+ See also [classfnc]$setProgress[/classfnc]()
+ !fn: $reset()
+ Reset the progress bar.
+ !fn: $setCenterIndicator(<bEnabled:boolean>)
+ Sets whether the indicator string should be centered to on.
+ See also [classfnc]$isCenterIndicator[/classfnc]()
+ !fn: <boolean> $isCenterIndicator()
+ This property holds whether the indicator string should be centered.
+ See also [classfnc]$setCenterIndicator[/classfnc]()
+ !fn: $setPercentageVisible(<bVisible,boolean>)
+ Sets whether the current progress value is displayed.
+ See also [classfnc]$isPercentageVisible[/classfnc]()
+ !fn: <boolean> $ispercentageVisible()
+ This property holds whether the current progress value is displayed.
+ See also [classfnc]$setPercentageVisible[/classfnc]()
+*/
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_progressbar,"progressbar","widget")
+ KVSO_REGISTER_HANDLER(KviKvsObject_progressbar,"setProgress", functionSetProgress)
+ KVSO_REGISTER_HANDLER(KviKvsObject_progressbar,"setTotalSteps", functionSetTotalSteps)
+ KVSO_REGISTER_HANDLER(KviKvsObject_progressbar,"reset", functionReset)
+ KVSO_REGISTER_HANDLER(KviKvsObject_progressbar,"setCenterIndicator", functionSetCenterIndicator)
+ KVSO_REGISTER_HANDLER(KviKvsObject_progressbar,"setPercentageVisible", functionSetPercentageVisible)
+ KVSO_REGISTER_HANDLER(KviKvsObject_progressbar,"isCenterIndicator", functionCenterIndicator)
+ KVSO_REGISTER_HANDLER(KviKvsObject_progressbar,"isPercentageVisible", functionPercentageVisible)
+KVSO_END_REGISTERCLASS(KviKvsObject_progressbar)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_progressbar,KviKvsObject_widget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_progressbar)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_progressbar)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_progressbar)
+
+bool KviKvsObject_progressbar::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ #ifdef COMPILE_USE_QT4
+ Q3ProgressBar *pbar=new Q3ProgressBar(parentScriptWidget());
+ pbar->setObjectName(name());
+ setObject(pbar,true);
+ #else
+ setObject(new QProgressBar(parentScriptWidget(), name()), true);
+ #endif
+return true;
+}
+
+bool KviKvsObject_progressbar::functionSetProgress(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t iProgress;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("step_value",KVS_PT_UNSIGNEDINTEGER,0,iProgress)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((KVI_PROGRESS_BAR *)widget())->setProgress(iProgress);
+ return true;
+}
+bool KviKvsObject_progressbar::functionSetTotalSteps(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t iSteps;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("total_steps",KVS_PT_UNSIGNEDINTEGER,0,iSteps)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((KVI_PROGRESS_BAR *)widget())->setTotalSteps(iSteps);
+ return true;
+}
+
+bool KviKvsObject_progressbar::functionReset(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) ((KVI_PROGRESS_BAR *)widget())->reset();
+ return true;
+}
+
+bool KviKvsObject_progressbar::functionSetCenterIndicator(KviKvsObjectFunctionCall *c)
+{
+ bool bFlag;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bFlag)
+ KVSO_PARAMETERS_END(c)
+ if(widget()) ((KVI_PROGRESS_BAR *)widget())->setCenterIndicator(bFlag);
+ return true;
+}
+bool KviKvsObject_progressbar::functionCenterIndicator(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setBoolean(((KVI_PROGRESS_BAR *)widget())->centerIndicator());
+ return true;
+}
+
+bool KviKvsObject_progressbar::functionSetPercentageVisible(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((KVI_PROGRESS_BAR *)widget())->setPercentageVisible(bEnabled);
+ return true;
+}
+bool KviKvsObject_progressbar::functionPercentageVisible(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setBoolean(((KVI_PROGRESS_BAR *)widget())->percentageVisible());
+ return true;
+}
diff --git a/src/modules/objects/class_progressbar.h b/src/modules/objects/class_progressbar.h
new file mode 100644
index 00000000..44c4eac8
--- /dev/null
+++ b/src/modules/objects/class_progressbar.h
@@ -0,0 +1,51 @@
+#ifndef _CLASS_PROGRESSBAR_H_
+
+#define _CLASS_PROGRESSBAR_H_
+//
+// File : class_progressbar.h
+// Creation date : Fri Jan 28 14:21:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+//#include <qprogressbar.h>
+#include "class_widget.h"
+#include "object_macros.h"
+
+class KviKvsObject_progressbar : public KviKvsObject_widget
+{
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_progressbar)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+ bool functionSetProgress(KviKvsObjectFunctionCall *c);
+ bool functionSetTotalSteps(KviKvsObjectFunctionCall *c);
+ bool functionReset(KviKvsObjectFunctionCall *c);
+ bool functionSetPercentageVisible(KviKvsObjectFunctionCall *c);
+ bool functionSetCenterIndicator(KviKvsObjectFunctionCall *c);
+ bool functionCenterIndicator(KviKvsObjectFunctionCall *c);
+ bool functionPercentageVisible(KviKvsObjectFunctionCall *c);
+};
+
+
+#endif //!_CLASS_PROGRESSBAR_H_
+
diff --git a/src/modules/objects/class_radiobutton.cpp b/src/modules/objects/class_radiobutton.cpp
new file mode 100644
index 00000000..08211e12
--- /dev/null
+++ b/src/modules/objects/class_radiobutton.cpp
@@ -0,0 +1,138 @@
+//
+// File : class_radiobutton.cpp
+// Creation date : Thu Feb 08 14:21:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include "class_radiobutton.h"
+#include "kvi_error.h"
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+
+/*
+ @doc: radiobutton
+ @keyterms:
+ radiobutton widget class
+ @title:
+ radiobutton class
+ @type:
+ class
+ @short:
+ A radiobutton class
+ @inherits:
+ [class]widget[/class]
+ @description:
+ The RadioButton widget provides a radio button with a text or pixmap label.
+ @functions:
+ !fn: $settext(<text:string>)
+ Sets the text that will appear in the radiobutton.
+ !fn: <boolean> $isChecked()
+ Returns 1 (TRUE) if the radio button is checked; otherwise returns 0 (FALSE).
+ !fn: $setChecked(<bChecked:boolean>)
+ Sets whether the radio button is checked to check.
+ !fn: $setPixmap(<image_id>)
+ Sets the pixmap shown on the radiobutton..See the [doc:image_id]image identifier[/doc] documentation for the explaination
+ of the <image_id> parameter.
+ !fn: <bool>$toggleEvent()
+ Called by KVIrc when the radibutton state is toggled.
+ The default implementation emits the toggled(<bool>) signal.
+ !sg: $toggled()
+ This signal is emitted by the default implementation of [classfnc]$toggleEvent[/classfnc]().[br]
+
+
+*/
+
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_radiobutton,"radiobutton","widget")
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_radiobutton,"setText", functionSetText)
+ KVSO_REGISTER_HANDLER(KviKvsObject_radiobutton,"setChecked", functionSetChecked)
+ KVSO_REGISTER_HANDLER(KviKvsObject_radiobutton,"isChecked", functionIsChecked)
+ KVSO_REGISTER_HANDLER(KviKvsObject_radiobutton,"setImage", functionSetImage)
+ KVSO_REGISTER_HANDLER(KviKvsObject_radiobutton,"toggleEvent",function_toggleEvent)
+
+KVSO_END_REGISTERCLASS(KviKvsObject_radiobutton)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_radiobutton,KviKvsObject_widget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_radiobutton)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_radiobutton)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_radiobutton)
+
+bool KviKvsObject_radiobutton::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ setObject(new QRadioButton(parentScriptWidget(),name()),true);
+ connect(widget(),SIGNAL(toggled(bool)),this,SLOT(toggled(bool)));
+ return true;
+}
+bool KviKvsObject_radiobutton::functionSetText(KviKvsObjectFunctionCall *c)
+{
+ QString szText;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szText)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((QRadioButton *)widget())->setText(szText);
+ return true;
+}
+bool KviKvsObject_radiobutton::functionIsChecked(KviKvsObjectFunctionCall *c)
+{
+ if(widget()) c->returnValue()->setBoolean(((QRadioButton *)widget())->isChecked());
+ return true;
+}
+
+bool KviKvsObject_radiobutton::functionSetChecked(KviKvsObjectFunctionCall *c)
+{
+ bool bChecked;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bChecked",KVS_PT_BOOL,0,bChecked)
+ KVSO_PARAMETERS_END(c)
+ if(widget()) ((QRadioButton *)widget())->setChecked(bChecked);
+ return true;
+}
+bool KviKvsObject_radiobutton::functionSetImage(KviKvsObjectFunctionCall *c)
+{
+ QString icon;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("icon_id",KVS_PT_STRING,0,icon)
+ KVSO_PARAMETERS_END(c)
+ if (!widget()) return true;
+ QPixmap * pix = g_pIconManager->getImage(icon);
+ if(pix)widget()->setIcon(*pix);
+ return true;
+}
+bool KviKvsObject_radiobutton::function_toggleEvent(KviKvsObjectFunctionCall *c)
+{
+ emitSignal("toggled",c,c->params());
+ return true;
+}
+
+void KviKvsObject_radiobutton::toggled(bool b)
+{
+ KviKvsVariantList params(new KviKvsVariant(b));
+ callFunction(this,"toggleEvent",&params);
+}
+
+
+#include "m_class_radiobutton.moc"
diff --git a/src/modules/objects/class_radiobutton.h b/src/modules/objects/class_radiobutton.h
new file mode 100644
index 00000000..127af8cd
--- /dev/null
+++ b/src/modules/objects/class_radiobutton.h
@@ -0,0 +1,51 @@
+#ifndef _CLASS_RADIOBUTTON_H_
+#define _CLASS_RADIOBUTTON_H_
+//mdm:
+// File : class_radiobutton.h
+// Creation date :Thu Feb 08 14:21:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include <qradiobutton.h>
+#include "class_widget.h"
+
+
+#include "object_macros.h"
+
+class KviKvsObject_radiobutton : public KviKvsObject_widget
+{
+ Q_OBJECT
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_radiobutton)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+ bool functionSetText(KviKvsObjectFunctionCall *c);
+ bool functionIsChecked(KviKvsObjectFunctionCall *c);
+ bool functionSetChecked(KviKvsObjectFunctionCall *c);
+ bool functionSetImage(KviKvsObjectFunctionCall *c);
+ bool function_toggleEvent(KviKvsObjectFunctionCall *c);
+protected slots:
+ void toggled(bool b);
+
+};
+
+#endif //!_CLASS_RADIOBUTTON_H_
diff --git a/src/modules/objects/class_slider.cpp b/src/modules/objects/class_slider.cpp
new file mode 100644
index 00000000..603e4c9a
--- /dev/null
+++ b/src/modules/objects/class_slider.cpp
@@ -0,0 +1,287 @@
+//mdm :
+// File : class_Slider.cpp
+// Creation date : Mon Gen 27 21:30:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include "class_slider.h"
+#include "kvi_error.h"
+
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+
+
+/*
+@doc: slider
+ @keyterms:
+ slider object class
+ @title:
+ slider class
+ @type:
+ class
+ @short:
+ The slider widget provides a vertical or horizontal slider.
+ @inherits:
+ [class]object[/class]
+ [class]widget[/class]
+ @description:
+ The slider is the classic widget for controlling a bounded value.[br]
+ It lets the user move a slider along a horizontal or vertical groove [br]
+ and translates the slider's position into an integer value within the legal range.[/classfnc]()
+ @functions:
+ !fn: $setOrientation(<orientation:string>)
+ Sets the slider's orientation.[br]
+ Orientation value can be "Horizontal" or "Vertical".
+ !fn: $setTracking(<bTracking:boolean>)
+ Sets whether slider tracking is enabled to enable.[br]
+ Value can be 1 or 0.
+ !fn: $setMaxValue(<value:integer>)
+ Sets maximum value for slider's range.
+ !fn: $setMinValue(<minv_value:integer>)
+ Sets minimum value for slider's range.
+ !fn: $setLineStep(<line_step:integer>)
+ Sets the line step to <line_step>.
+ !fn: $setPageStep(<page_step:integer>)
+ Sets the page step to <page_step>.
+ !fn: $setTickmarks(<tick_marks:string>)
+ Sets the tickmark settings for this slider.[br]
+ Values are:[br]
+ NoMarks - do not draw any tickmarks.[br]
+ Both - draw tickmarks on both sides of the groove.[br]
+ Above - draw tickmarks above the (horizontal) slider[br]
+ Below - draw tickmarks below the (horizontal) slider[br]
+ Left - draw tickmarks to the left of the (vertical) slider[br]
+ Right - draw tickmarks to the right of the (vertical) slider
+ !fn: $setTickInterval(<value>)
+ Sets the interval between tickmarks.
+ !fn: <integer> $value()
+ Returns slider value.
+ !fn: <integer> $minValue()
+ Returns slider minValue.
+ !fn: <integer> $maxValue()
+ Returns slider maxValue.
+ !fn: <integer> $lineStep()
+ Returns slider lineStep value.
+ !fn: <integer>$pageStep()
+ Returns slider pageStep value.
+ !fn: $valueChangedEvent(<new slider value:integer>)
+ This function is called by the framework when the slider value is changed and return the new slider value as its argument.[br]
+ The default implementation emits the [classfnc]$valueChanged[/classfnc]() signal,
+ so it is easy to handle the values from many sliders without reimplementing
+ the [classfnc]$valueChangedEvent[/classfnc]() for every one.[br]
+ Note: If you reimplement this function to catch the slider value, you will have to emit the signal by yourself (if you still need it, obviously).
+ @signals:
+ !sg: $valueChanged()
+ This signal is emitted by the default implementation of [classfnc]valueChangedEvent[/classfnc]().[br]
+ If you reimplement that function you will have to emit the signal manually (if you still need it).
+
+*/
+
+
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_slider,"slider","widget")
+
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_slider,"setTracking", functionsetTracking);
+ KVSO_REGISTER_HANDLER(KviKvsObject_slider,"setValue", functionsetValue);
+ KVSO_REGISTER_HANDLER(KviKvsObject_slider,"setMinValue", functionsetMinValue);
+ KVSO_REGISTER_HANDLER(KviKvsObject_slider,"setMaxValue", functionsetMaxValue);
+ KVSO_REGISTER_HANDLER(KviKvsObject_slider,"setLineStep", functionsetLineStep);
+ KVSO_REGISTER_HANDLER(KviKvsObject_slider,"setPageStep", functionsetPageStep);
+ KVSO_REGISTER_HANDLER(KviKvsObject_slider,"setTickInterval", functionsetTickInterval);
+ KVSO_REGISTER_HANDLER(KviKvsObject_slider,"value",functionvalue);
+ KVSO_REGISTER_HANDLER(KviKvsObject_slider,"minValue", functionminValue);
+ KVSO_REGISTER_HANDLER(KviKvsObject_slider,"maxValue", functionmaxValue);
+ KVSO_REGISTER_HANDLER(KviKvsObject_slider,"lineStep", functionlineStep);
+ KVSO_REGISTER_HANDLER(KviKvsObject_slider,"pageStep", functionpageStep);
+ KVSO_REGISTER_HANDLER(KviKvsObject_slider,"setTickmarks", functionsetTickmarks);
+ KVSO_REGISTER_HANDLER(KviKvsObject_slider,"setOrientation", functionsetOrientation);
+
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_slider,"valueChangedEvent", functionvalueChangedEvent);
+KVSO_END_REGISTERCLASS(KviKvsObject_slider)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_slider,KviKvsObject_widget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_slider)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_slider)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_slider)
+
+bool KviKvsObject_slider::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ setObject(new QSlider(parentScriptWidget(), name()), true);
+ connect(widget(),SIGNAL(valueChanged(int)),this,SLOT(valueChanged(int)));
+ return true;
+}
+
+bool KviKvsObject_slider::functionsetTracking(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((QSlider *)widget())->setTracking(bEnabled);
+ return true;
+}
+
+
+bool KviKvsObject_slider::functionsetValue(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iValue;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("value",KVS_PT_INT,0,iValue)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((QSlider *)widget())->setValue(iValue);
+ return true;
+}
+bool KviKvsObject_slider::functionsetMinValue(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iMinvalue;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("minimum_value",KVS_PT_INT,0,iMinvalue)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((QSlider *)widget())->setMinValue(iMinvalue);
+ return true;
+}
+bool KviKvsObject_slider::functionsetMaxValue(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iMaxvalue;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("max_value",KVS_PT_INT,0,iMaxvalue)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((QSlider *)widget())->setMaxValue(iMaxvalue);
+ return true;
+}
+
+bool KviKvsObject_slider::functionsetLineStep(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iLinestep;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("line_step",KVS_PT_INT,0,iLinestep)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((QSlider *)widget())->setLineStep(iLinestep);
+ return true;
+}
+bool KviKvsObject_slider::functionsetPageStep(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iPagestep;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("page_step",KVS_PT_INT,0,iPagestep)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((QSlider *)widget())->setPageStep(iPagestep);
+ return true;
+}
+
+bool KviKvsObject_slider::functionsetTickInterval(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iInterval;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("tick_interval",KVS_PT_INT,0,iInterval)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((QSlider *)widget())->setTickInterval(iInterval);
+ return true;
+}
+
+bool KviKvsObject_slider::functionvalue(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setInteger(((QSlider *)widget())->value());
+ return true;
+}
+
+bool KviKvsObject_slider::functionminValue(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setInteger(((QSlider *)widget())->minValue());
+ return true;
+}
+bool KviKvsObject_slider::functionmaxValue(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setInteger(((QSlider *)widget())->maxValue());
+ return true;
+}
+bool KviKvsObject_slider::functionlineStep(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setInteger(((QSlider *)widget())->lineStep());
+ return true;
+}
+
+bool KviKvsObject_slider::functionpageStep(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setInteger(((QSlider *)widget())->pageStep());
+ return true;
+}
+
+
+bool KviKvsObject_slider::functionsetTickmarks(KviKvsObjectFunctionCall *c)
+{
+
+ QString szTick;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("tick_marks",KVS_PT_STRING,0,szTick)
+ KVSO_PARAMETERS_END(c)
+ if(!widget())return true;
+ if(KviQString::equalCI(szTick,"NoMarks"))
+ ((QSlider *)widget())->setTickmarks(QSlider::NoMarks);
+ else if(KviQString::equalCI(szTick,"Both"))
+ ((QSlider *)widget())->setTickmarks(QSlider::Both);
+ else if(KviQString::equalCI(szTick,"Above"))
+ ((QSlider *)widget())->setTickmarks(QSlider::Above);
+ else if(KviQString::equalCI(szTick,"Below"))
+ ((QSlider *)widget())->setTickmarks(QSlider::Below);
+ else if(KviQString::equalCI(szTick,"Left"))
+ ((QSlider *)widget())->setTickmarks(QSlider::Left);
+ else if(KviQString::equalCI(szTick,"Right"))
+ ((QSlider *)widget())->setTickmarks(QSlider::Right);
+ else c->warning( __tr2qs("Unknown tickmark '%Q'"),&szTick);
+ return true;
+}
+bool KviKvsObject_slider::functionsetOrientation(KviKvsObjectFunctionCall *c)
+{
+
+ QString szOrientation;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("orientation",KVS_PT_STRING,0,szOrientation)
+ KVSO_PARAMETERS_END(c)
+ if(!widget())return true;
+ if(KviQString::equalCI(szOrientation,"Horizontal"))
+ ((QSlider *)widget())->setOrientation(Qt::Horizontal);
+ else if(KviQString::equalCI(szOrientation,"Vertical"))
+ ((QSlider *)widget())->setOrientation(Qt::Vertical);
+ else c->warning( __tr2qs("Unknown orientation '%Q'"),&szOrientation);
+ return true;
+}
+bool KviKvsObject_slider::functionvalueChangedEvent(KviKvsObjectFunctionCall *c)
+{
+ emitSignal("valueChanged",c,c->params());
+ return true;
+}
+
+void KviKvsObject_slider::valueChanged(int value)
+{
+ KviKvsVariantList params(new KviKvsVariant((kvs_int_t)value));
+ callFunction(this,"valueChangedEvent",&params);
+}
+
+
+#include "m_class_slider.moc"
diff --git a/src/modules/objects/class_slider.h b/src/modules/objects/class_slider.h
new file mode 100644
index 00000000..e2c8c397
--- /dev/null
+++ b/src/modules/objects/class_slider.h
@@ -0,0 +1,64 @@
+#ifndef _CLASS_SLIDER_H_
+#define _CLASS_SLIDER_H_
+//mdm:
+// File : class_Slider.h
+// Creation date : Mon Gen 27 14:30:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include <qslider.h>
+#include "class_widget.h"
+
+
+#include "object_macros.h"
+
+class KviKvsObject_slider : public KviKvsObject_widget
+{
+ Q_OBJECT
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_slider)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+ bool functionsetTracking(KviKvsObjectFunctionCall *c);
+ bool functionsetValue(KviKvsObjectFunctionCall *c);
+ bool functionsetMinValue(KviKvsObjectFunctionCall *c);
+ bool functionsetMaxValue(KviKvsObjectFunctionCall *c);
+ bool functionsetLineStep(KviKvsObjectFunctionCall *c);
+ bool functionsetPageStep(KviKvsObjectFunctionCall *c);
+ bool functionsetTickInterval(KviKvsObjectFunctionCall *c);
+ bool functionvalue(KviKvsObjectFunctionCall *c);
+ bool functionminValue(KviKvsObjectFunctionCall *c);
+ bool functionmaxValue(KviKvsObjectFunctionCall *c);
+ bool functionlineStep(KviKvsObjectFunctionCall *c);
+ bool functionpageStep(KviKvsObjectFunctionCall *c);
+ bool functionsetTickmarks(KviKvsObjectFunctionCall *c);
+ bool functionsetOrientation(KviKvsObjectFunctionCall *c);
+ bool functionvalueChangedEvent(KviKvsObjectFunctionCall *c);
+
+protected slots:
+ void valueChanged(int);
+};
+
+
+
+#endif // !_CLASS_SLIDER_H_
+
diff --git a/src/modules/objects/class_socket.cpp b/src/modules/objects/class_socket.cpp
new file mode 100644
index 00000000..f0afe3a5
--- /dev/null
+++ b/src/modules/objects/class_socket.cpp
@@ -0,0 +1,1331 @@
+//
+// File : class_socket.cpp
+// Creation date : Sun Nov 11 03:13:45 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+
+#define _KVI_DEBUG_CHECK_RANGE_
+#include "kvi_debug.h"
+
+
+#include "kvi_locale.h"
+#include "kvi_error.h"
+#include "kvi_netutils.h"
+#include "kvi_dns.h"
+#include "kvi_error.h"
+#include "kvi_socket.h"
+#include "kvi_malloc.h"
+#include "kvi_memmove.h"
+#include "kvi_databuffer.h"
+#include "kvi_qcstring.h"
+
+#include "class_socket.h"
+
+//#include <stdlib.h>
+
+#define KVI_IN_BUFFER_ALLOC_CHUNK 4096
+#define KVI_READ_CHUNK 1024
+/*
+static KviScriptObjectClass * g_pSocketClass = 0;
+
+static KviScriptObject * socketClassCreateInstance(KviScriptObjectClass * cls,KviScriptObject *par,const char * nam)
+{
+ return new KviScriptSocketObject(cls,par,nam);
+}
+
+KviScriptSocketObject::KviScriptSocketObject(KviScriptObjectClass * cla,KviScriptObject * par,const char * nam)
+: KviScriptObject(cla,par,nam)
+{
+ m_uConnectionId = 0;
+ m_sock = KVI_INVALID_SOCKET;
+ m_iStatus = KVI_SCRIPT_SOCKET_STATUS_DISCONNECTED;
+ m_uRemotePort = 0;
+ m_uSecondaryPort = 0;
+ m_pSn = 0;
+ m_pDns = 0;
+ m_pDelayTimer = 0;
+ m_uConnectTimeout = 60000;
+ m_pInBuffer = 0;
+ m_uInBufferLen = 0;
+ m_uInDataLen = 0;
+ m_pOutBuffer = new KviDataBuffer();
+ m_pFlushTimer = new QTimer();
+ m_bIpV6 = false;
+ m_uLocalPort = 0;
+ m_secondarySock = KVI_INVALID_SOCKET;
+ connect(m_pFlushTimer,SIGNAL(timeout()),this,SLOT(tryFlush()));
+}
+
+KviScriptSocketObject::~KviScriptSocketObject()
+{
+ delete m_pOutBuffer;
+ delete m_pFlushTimer;
+
+ if(m_pInBuffer)kvi_free(m_pInBuffer);
+ if(m_pDelayTimer)delete m_pDelayTimer;
+ if(m_pDns)delete m_pDns;
+ if(m_pSn)delete m_pSn;
+ if(m_sock != KVI_INVALID_SOCKET)kvi_socket_close(m_sock);
+ if(m_secondarySock != KVI_INVALID_SOCKET)kvi_socket_close(m_secondarySock);
+}
+
+void KviScriptSocketObject::reset()
+{
+ m_uConnectionId++; // this is the only place where this is incremented!
+ if(m_pDelayTimer)
+ {
+ delete m_pDelayTimer;
+ m_pDelayTimer = 0;
+ }
+ if(m_pDns)
+ {
+ delete m_pDns;
+ m_pDns = 0;
+ }
+ if(m_pSn)
+ {
+ delete m_pSn;
+ m_pSn = 0;
+ }
+ if(m_sock != KVI_INVALID_SOCKET)
+ {
+ kvi_socket_close(m_sock);
+ m_sock = KVI_INVALID_SOCKET;
+ }
+ if(m_pInBuffer)
+ {
+ kvi_free(m_pInBuffer);
+ m_pInBuffer = 0;
+ }
+ if(m_secondarySock)
+ {
+ kvi_socket_close(m_secondarySock);
+ m_secondarySock = KVI_INVALID_SOCKET;
+ }
+ m_uSecondaryPort = 0;
+ m_szSecondaryIp.clear();
+ delete m_pOutBuffer;
+ if(m_pFlushTimer->isActive())m_pFlushTimer->stop();
+ m_pOutBuffer = new KviDataBuffer();
+ m_uInBufferLen = 0;
+ m_uInDataLen = 0;
+ m_iStatus = KVI_SCRIPT_SOCKET_STATUS_DISCONNECTED;
+ m_uRemotePort = 0;
+ m_szRemoteIp.clear();
+ m_uLocalPort = 0;
+ m_szLocalIp.clear();
+ m_bIpV6 = false;
+}
+
+/*
+ @doc: socket
+ @keyterms:
+ socket object class
+ @title:
+ socket class
+ @type:
+ class
+ @short:
+ A Ipv4/Ipv6 TCP socket
+ @inherits:
+ [class]object[/class]
+ @description:
+ This class provides a standard TCP/IP socket functionality.[br]
+ It can be used either for connecting to a remote host or to listening for incoming connections.[br]
+ If the KVIrc executable has been compiled with the IPV6 protocol support , this socket also supports it.[br]
+ @functions:
+ !fn: $status()
+ Returns the status of the socket :[br]
+ 4=connected[br]
+ 3=listening[br]
+ 2=connecting[br]
+ 1=in dns call[br]
+ 0=disconnected
+
+ !fn: $connectTimeout()
+ Returns the value of the connect attempt timeout in milliseconds.[br]
+ This is the timeout after that a connection attempt will be considered as failed if the remote
+ host is not responding. You can set it with [classfnc:socket]$setConnectTimeout[/classfnc]().
+
+ !fn: $setConnectTimeout(<timeout>)
+ Sets the connect timeout for this socket. <timeout> must be a positive value in milliseconds.[br]
+ The default timeout is 60000.
+
+ !fn: $connect(<host>,<port>)
+ Attempts a connection to <host> on port <port>.[br]
+ <host> can be a numeric internet address (either Ipv4 or Ipv6 (if supported)) or a hostname.[br]
+ If a hostname is used, a DNS lookup is performed (the socket enters the "dns call" state).[br]
+ This function returns 1 if the connect attempt can be succesfully initiated,
+ 0 otherwise.[br] In fact , this function returns 0 only if the supplied <port> parameter
+ is invalid or the socket is in an incoherent state (already connected or listening):
+ for a newly created socket and with a valid <port> number you can safely ignore
+ the return value.[br]
+ Please note that the connection is asynchronous: when this function returns
+ the socket is NOT connected: it has just initiated the connect attempt
+ and you will be notified of the attempt result by an asynchronous event call:
+ in case of failure , $connectFailedEvent() will be called , in case of
+ succes , $connectEvent() will be called.
+
+ !fn: $listen([<port>[,<interface>[,<force_ipv6>]]])
+ Attempts to listen on the specified <port> and <interface>.[br]
+ If <port> is not passed it is assumed to be 0 , if <interface> is not passed , it is assumed to be
+ "any interface" (INADDR_ANY).[br] Port 0 means that the kernel should choose a "random" port to listen on.[br]
+ If the <interface> is recognized as IPV6 address , and IPV6 is supported , the socket listens
+ in IPV6 mode. If <interface> is an empty string and <force_ipv6> is 1 the socket listens
+ on "any ipv6 interface".[br]
+ This function returns '1' in case of success and '0' in case of failure.[br]
+ On some systems listening in the IPV6 namespace allows to accept also IPV4 connections (this includes
+ linux but not windows afaik).[br]
+ When an incoming connection will arrive , $incomingConnectionEvent() will be called.
+
+ !fn: $accept(<socketId>)
+ This function can be called only from inside $incomingConnectionEvent().[br]
+ <socketId> must be a newly created socket sub-class instance object.[br]
+ The passed object will be set up to handle the incoming connection and this object
+ will remain in listening state (unless you explicitly close it).[br]
+ This function returns '1' in case of success and '0' in case of failure.
+
+ !fn: $connectEvent()
+ This function is called when a connection attempt has been succesfully completed.
+ The socket is actually connected to [classfnc:socket]$remoteIp[/classfnc]() on
+ [classfnc:socket]$remotePort[/classfnc](). You can start
+ writing data and you may expect [classfnc:socket]$dataAvailableEvent[/classfnc]() to be
+ triggered.
+
+ !fn: $incomingConnectionEvent()
+ This function is called when an incoming connection arrives over a socket in listening state.[br]
+ You must call [classfnc:socket]$accept[/classfnc]() passing a newly created socket object
+ to accept and handle the connection.[br] If you don't call [classfnc:socket]$accept[/classfnc]()
+ the incoming connection will be automatically terminated.
+
+ !fn: $connectFailedEvent(<reason>)
+ This function is called when a connection attempt fails for some reason. <reason> contains
+ the error string.[br]
+ This function may be called only between a call to [classfnc:socket]$connect[/classfnc]() and
+ the [classfnc:socket]$connectEvent[/classfnc]().
+
+ !fn: $disconnectEvent([error])
+ This function is called when a connection is terminated either cleanly or because of an error.[br]
+ [error] is an empty string in case of a "clean" termination (connection closed by the remote host)
+ or is a message describing the socket error that caused the connection to be interrupted.
+
+ !fn: $dataAvailableEvent(<data_length>)
+ This function is called when some data is available to be read: the <data_length> parameter specifies
+ the length of the available data in bytes.[br]
+ You can use one of the $read* functions to obtain the data.
+
+ !fn: $read(<length>)
+ Reads at most <length> bytes of data from the socket. If <length> is anything "outside" the
+ available data range (<length> < 0 or <length> > available_data_length), this function
+ returns all the available data.[br]
+ Please note that this function can't deal withi binary data: NULL characters are transformed to
+ ASCII characters 255.
+
+ !fn: $readHex(<length>)
+ Reads at most <length> bytes of data from the socket. If <length> is anything "outside" the
+ available data range (<length> < 0 or <length> > available_data_length), this function
+ returns all the available data.[br]
+ Returns the data encoded as hexadecimal digit string: this function can deal with binary data too.
+
+ !fn: $write(<data>)
+ Writes <data> to the socket.[br]
+ This function can't deal with binary data (you can't send a NULL character)[br]
+ Please note that when this function finishes it does not mean that the data has reached the remote end.[br]
+ Basically it does not even mean that the data has been sent to the remote host.[br]
+ The data is enqueued for sending and will be sent as soon as possible.[br]
+ If you're going to [cmd]delete[/cmd] this object just after the $write call, you should
+ call [classfnc:socket]$close[/classfnc]() just before [cmd]delete[/cmd] to ensure the data delivery.
+
+ !fn: $writeHex(<hex_data>)
+ Writes <data> to the socket.[br]
+ <data> is expected to be a hexadecimal rappresentation of the bytes to be sent (two HEX characters
+ for each byte). This means that the length of <hex_data> string must be a multiple of 2.[br]
+ Returns the length of the actually decoded and sent data in bytes or -1 in case of error (the string
+ was not a valid hexadecimla rappresentation).[br]
+ Please note that when this function finishes it does not mean that the data has reached the remote end.[br]
+ Basically it does not even mean that the data has been sent to the remote host.[br]
+ The data is enqueued for sending and will be sent as soon as possible.[br]
+ If you're going to [cmd]delete[/cmd] this object just after the $writeHex call, you should
+ call [classfnc:socket]$close[/classfnc]() just before [cmd]delete[/cmd] to ensure the data delivery.
+
+ !fn: $close()
+ Resets this socket state: kills any pending or active connection. After a close() call
+ the socket may be used for a new connection.[br]
+ If there is an active connection, there is a last attempt to flush the pending outgoing data.[br]
+ You don't need to call $close() if you [cmd]delete[/cmd] the socket: KVIrc will
+ reset the socket state automatically and free the memory. But if you want to ensure data delivery
+ after a $write call sequece and just before a [cmd]delete[/cmd], $close() is the only chance to do it.
+
+ !fn: $remoteIp()
+ Returns the IP address of the remote end of this socket.[br]
+ The return value is meaningful only if the socket is in connected or connecting state.
+
+ !fn: $setProtocol(<protocol>)
+ Let KVIrc use TCP jr UDP protocol
+
+ !fn: $remotePort()
+ Returns the port of the remote end of this socket.[br]
+ The return value is meaningful only if the socket is in connected or connecting state.
+
+ !fn: $localIp()
+ Returns the IP address of the local end of this socket.[br]
+ The return value is meaningful only if the socket is in connected , listening or connecting state.
+
+ !fn: $localPort()
+ Returns the port of the local end of this socket.[br]
+ The return value is meaningful only if the socket is in connected , listening or connecting state.
+
+@examples:
+ [example]
+ #Server socket: listen 80 port and answer to requests (multi-threaded)[br]
+[br]
+ class (webserver,socket) {[br]
+ constructor () {[br]
+ $$->$listen(80, "127.0.0.1")[br]
+ }[br]
+ incomingConnectionEvent()[br]
+ {[br]
+ %tmp = $new(socket)[br]
+ $$->$accept(%tmp)[br]
+ echo "Webserver incoming Conection from: %tmp->$remoteIp : %tmp->$remotePort"[br]
+ %tmp->$write("HTTP/1.1 200 OK\n\n<html><head></head><body><h1>KVIrc Webserver</h1></body></html>\n")[br]
+ %tmp->$close()[br]
+ delete %tmp[br]
+ }[br]
+ }[br]
+ [br]
+ #finally start webserver[br]
+ %WebS = $new(webserver)[br]
+ [br]
+ [/example]
+ [example]
+ #Client socket - go to google and grab request header[br]
+ class (httprequest,socket) {[br]
+ constructor () [br]
+ {[br]
+ # connect to the server[br]
+ $$->$connect("www.google.de",80)[br]
+ }[br]
+ destructor()[br]
+ {[br]
+ # if the socket is still open close it[br]
+ if($$->$status() == 4) $$->$close()[br]
+ }[br]
+ connectFailedEvent() [br]
+ {[br]
+ # the connection to the server failed[br]
+ echo "Connection failed: "$0[br]
+ delete $$[br]
+ }[br]
+ connectEvent() [br]
+ {[br]
+ # connection is complete[br]
+ # send a request to receive the headers only from http://www.google.de/[br]
+ $$->$write("HEAD / HTTP/1.1\r\nHost: www.google.de\r\nConnction: Close\r\nUser-Agent: KVIrc socket\r\n\r\n");[br]
+ }[br]
+ dataAvailableEvent() [br]
+ {[br]
+ # reading the received data[br]
+ %newdata = $$->$read($0)[br]
+ echo %newdata[br]
+ #close and delete the socket[br]
+ $$->$close()[br]
+ delete $$[br]
+ }[br]
+ disconnectEvent() [br]
+ {[br]
+ # connection has been closed[br]
+ echo "Connection closed"[br]
+ delete $$[br]
+ }[br]
+}[br]
+
+#Creating the socket[br]
+%Temp = $new(httprequest)[br]
+ [/example]
+*/
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_socket,"socket","object")
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_socket,"status",functionStatus)
+ KVSO_REGISTER_HANDLER(KviKvsObject_socket,"remotePort",functionRemotePort)
+ KVSO_REGISTER_HANDLER(KviKvsObject_socket,"remoteIp",functionRemoteIp)
+ KVSO_REGISTER_HANDLER(KviKvsObject_socket,"localIp",functionLocalIp)
+ KVSO_REGISTER_HANDLER(KviKvsObject_socket,"localPort",functionLocalPort)
+ KVSO_REGISTER_HANDLER(KviKvsObject_socket,"connect",functionConnect)
+ KVSO_REGISTER_HANDLER(KviKvsObject_socket,"connectTimeout",functionConnectTimeout)
+ KVSO_REGISTER_HANDLER(KviKvsObject_socket,"setConnectTimeout",functionSetConnectTimeout)
+ KVSO_REGISTER_HANDLER(KviKvsObject_socket,"close",functionClose)
+ KVSO_REGISTER_HANDLER(KviKvsObject_socket,"read",functionRead)
+ KVSO_REGISTER_HANDLER(KviKvsObject_socket,"readHex",functionReadHex)
+ KVSO_REGISTER_HANDLER(KviKvsObject_socket,"write",functionWrite)
+ KVSO_REGISTER_HANDLER(KviKvsObject_socket,"writeHex",functionWriteHex)
+ KVSO_REGISTER_HANDLER(KviKvsObject_socket,"setProtocol",functionSetProtocol)
+ KVSO_REGISTER_HANDLER(KviKvsObject_socket,"listen",functionListen)
+ KVSO_REGISTER_HANDLER(KviKvsObject_socket,"accept",functionAccept)
+
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_socket,"connectEvent")
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_socket,"connectFailedEvent")
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_socket,"disconnectEvent")
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_socket,"dataAvailableEvent")
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_socket,"incomingConnectionEvent")
+
+KVSO_END_REGISTERCLASS(KviKvsObject_socket)
+
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_socket,KviKvsObject)
+
+
+ m_bUdp = false;
+ m_uConnectionId = 0;
+ m_sock = KVI_INVALID_SOCKET;
+ m_iStatus = KVI_SCRIPT_SOCKET_STATUS_DISCONNECTED;
+ m_uRemotePort = 0;
+ m_uSecondaryPort = 0;
+ m_pSn = 0;
+ m_pDns = 0;
+ m_pDelayTimer = 0;
+ m_uConnectTimeout = 60000;
+ m_pInBuffer = 0;
+ m_uInBufferLen = 0;
+ m_uInDataLen = 0;
+ m_pOutBuffer = new KviDataBuffer();
+ m_pFlushTimer = new QTimer();
+ m_bIpV6 = false;
+ m_uLocalPort = 0;
+ m_secondarySock = KVI_INVALID_SOCKET;
+ connect(m_pFlushTimer,SIGNAL(timeout()),this,SLOT(tryFlush()));
+KVSO_END_CONSTRUCTOR(KviKvsObject_socket)
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_socket)
+ delete m_pOutBuffer;
+ delete m_pFlushTimer;
+
+ if(m_pInBuffer)kvi_free(m_pInBuffer);
+ if(m_pDelayTimer)delete m_pDelayTimer;
+ if(m_pDns)delete m_pDns;
+ if(m_pSn)delete m_pSn;
+ if(m_sock != KVI_INVALID_SOCKET)kvi_socket_close(m_sock);
+ if(m_secondarySock != KVI_INVALID_SOCKET)kvi_socket_close(m_secondarySock);
+KVSO_END_DESTRUCTOR(KviKvsObject_socket)
+//----------------------
+
+
+bool KviKvsObject_socket::functionStatus(KviKvsObjectFunctionCall *c)
+{
+ c->returnValue()->setInteger(m_iStatus);
+ return true;
+}
+
+bool KviKvsObject_socket::functionClose(KviKvsObjectFunctionCall *c)
+{
+ if((m_pOutBuffer->size() != 0) && (m_iStatus == KVI_SCRIPT_SOCKET_STATUS_CONNECTED))
+ tryFlush();
+
+ reset();
+ return true;
+}
+
+bool KviKvsObject_socket::functionConnectTimeout(KviKvsObjectFunctionCall *c)
+{
+ c->returnValue()->setInteger(m_uConnectTimeout);
+ return true;
+}
+
+bool KviKvsObject_socket::functionSetConnectTimeout(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uTimeout;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("time_out",KVS_PT_UNSIGNEDINTEGER,0,uTimeout)
+ KVSO_PARAMETERS_END(c)
+ m_uConnectTimeout = uTimeout;
+ return true;
+}
+
+bool KviKvsObject_socket::functionRemotePort(KviKvsObjectFunctionCall *c)
+{
+ c->returnValue()->setInteger(m_uRemotePort);
+ return true;
+}
+
+bool KviKvsObject_socket::functionRemoteIp(KviKvsObjectFunctionCall *c)
+{
+ c->returnValue()->setString(m_szRemoteIp);
+ return true;
+}
+
+bool KviKvsObject_socket::functionLocalPort(KviKvsObjectFunctionCall *c)
+{
+ c->returnValue()->setInteger(m_uLocalPort);
+ return true;
+}
+
+bool KviKvsObject_socket::functionLocalIp(KviKvsObjectFunctionCall *c)
+{
+ c->returnValue()->setString(m_szLocalIp);
+ return true;
+}
+
+bool KviKvsObject_socket::functionAccept(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject * pObject;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("object_socket",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETERS_END(c)
+
+ pObject = KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+
+ if(!pObject)
+ {
+ c->warning(__tr2qs("No socket object specified"));
+ return true;
+ }
+
+ if(!pObject->inherits("KviKvsObject_socket"))
+ {
+ c->warning(__tr2qs("Invalid socket object specified (it doesn't inherit from socket)"));
+ return true;
+ }
+
+ if(m_secondarySock != KVI_INVALID_SOCKET)
+ {
+ ((KviKvsObject_socket *)pObject)->acceptConnection(m_secondarySock,m_uSecondaryPort,m_szSecondaryIp);
+
+ m_secondarySock = KVI_INVALID_SOCKET;
+ m_uSecondaryPort = 0;
+ m_szSecondaryIp="";
+ } else {
+ c->warning(__tr2qs("There is no connection to accept!"));
+ }
+ return true;
+}
+
+
+bool KviKvsObject_socket::functionSetProtocol(KviKvsObjectFunctionCall *c)
+{
+ QString m_szHex;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("hex_string",KVS_PT_STRING,0,m_szHex)
+ KVSO_PARAMETERS_END(c)
+
+ m_bUdp=KviQString::equalCI(m_szHex,"udp");
+ return false;
+}
+
+bool KviKvsObject_socket::functionWriteHex(KviKvsObjectFunctionCall *c)
+{
+ QString m_szHex;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("hex_string",KVS_PT_STRING,0,m_szHex)
+ KVSO_PARAMETERS_END(c)
+
+ if(m_szHex.length() > 0)
+ {
+ bool bOk;
+ QString szTmp;
+ szTmp=m_szHex.setNum(m_szHex.toInt(&bOk,16),16);
+ if(szTmp.length()>0)
+ {
+ KviQCString szData8 = szTmp.utf8();
+ m_pOutBuffer->append((const unsigned char *)(szData8.data()),szData8.length());
+ delayedFlush(0);
+ c->returnValue()->setInteger(szData8.length());
+ }
+ }
+
+ /*
+ if(pszData)
+ {
+ if(pszData->len() > 0)
+ {
+ char * ptr;
+ len = pszData->hexToBuffer(&ptr);
+ if(len > 0)
+ {
+ m_pOutBuffer->append((const unsigned char *)(ptr),len);
+ delayedFlush(0);
+ KviStr::freeBuffer(ptr);
+ }
+ }
+ }
+ buffer.append(KviStr::Format,"%d",len);
+*/
+ return true;
+}
+
+
+
+
+
+bool KviKvsObject_socket::functionConnect(KviKvsObjectFunctionCall *c)
+{
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("remote_ip",KVS_PT_STRING,0,m_szRemoteIp)
+ KVSO_PARAMETER("remote_port",KVS_PT_UNSIGNEDINTEGER,0,m_uRemotePort)
+ KVSO_PARAMETERS_END(c)
+ debug ("Function connect");
+
+
+ if (m_uRemotePort>65535)
+ {
+ c->warning(__tr2qs("Value %d for port is out of range (values allowed are from 0 to 65535"),m_uRemotePort);
+ return true;
+ }
+ if((m_sock != KVI_INVALID_SOCKET) || (m_iStatus != KVI_SCRIPT_SOCKET_STATUS_DISCONNECTED))
+ {
+ c->warning(__tr2qs("Another connection in progress"));
+ c->returnValue()->setBoolean(true);
+ return true;
+ }
+
+
+#ifdef COMPILE_IPV6_SUPPORT
+ if(kvi_isValidStringIp(m_szRemoteIp) || kvi_isValidStringIp_V6(m_szRemoteIp))
+#else
+ if(kvi_isValidStringIp(m_szRemoteIp))
+#endif
+ {
+ debug ("ok connecting");
+ debug ("connectinhg on ip %s ",m_szRemoteIp.latin1());
+ debug ("non so ip");
+ m_iStatus = KVI_SCRIPT_SOCKET_STATUS_CONNECTING;
+ delayedConnect();
+ } else {
+ debug ("connectinhg on ip %s port %d",m_szRemoteIp.latin1(),m_uRemotePort);
+ m_iStatus = KVI_SCRIPT_SOCKET_STATUS_DNS;
+ delayedLookupRemoteIp();
+ }
+ c->returnValue()->setBoolean(true);
+ return true;
+}
+
+
+
+
+
+
+bool KviKvsObject_socket::functionListen(KviKvsObjectFunctionCall *c)
+{
+ if((m_sock != KVI_INVALID_SOCKET) || (m_iStatus != KVI_SCRIPT_SOCKET_STATUS_DISCONNECTED))
+ {
+ c->warning(__tr2qs("Another connection in progress"));
+ c->returnValue()->setBoolean(false);
+ return true;
+ }
+ kvs_uint_t uLocalPort;
+ QString m_szLocalIp;
+ bool m_bIpV6;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("local_port",KVS_PT_UNSIGNEDINTEGER,0,uLocalPort)
+ KVSO_PARAMETER("local_ip",KVS_PT_STRING,KVS_PF_OPTIONAL,m_szLocalIp)
+ KVSO_PARAMETER("bool_ipV6",KVS_PT_BOOLEAN,KVS_PF_OPTIONAL,m_bIpV6)
+ KVSO_PARAMETERS_END(c)
+ m_uLocalPort=uLocalPort;
+
+#ifndef COMPILE_IPV6_SUPPORT
+ if(m_bIpV6)
+ {
+ c->warning(__tr2qs("No IPV6 support in this executable"));
+ c->returnValue()->setBoolean(false);
+ reset();
+ return true;
+ }
+#endif
+
+ bool bGotIp = false;
+
+ if(!m_szLocalIp.isEmpty())
+ {
+
+ // Check the address type
+ if(kvi_isValidStringIp(m_szLocalIp))bGotIp = true;
+ else {
+#ifdef COMPILE_IPV6_SUPPORT
+ if(kvi_isValidStringIp_V6(m_szLocalIp))
+ {
+ bGotIp = true;
+ m_bIpV6 = true;
+ } else {
+#else
+ c->warning(__tr2qs("Invalid IP address specified ('%Q')"),&m_szLocalIp);
+ c->returnValue()->setBoolean(false);
+ reset();
+ return true;
+#endif
+#ifdef COMPILE_IPV6_SUPPORT
+ }
+#endif
+ }
+ }
+
+
+#ifdef COMPILE_IPV6_SUPPORT
+ m_sock = kvi_socket_create(m_bIpV6 ? KVI_SOCKET_PF_INET6 : KVI_SOCKET_PF_INET,
+ m_bUdp ? KVI_SOCKET_TYPE_DGRAM : KVI_SOCKET_TYPE_STREAM,KVI_SOCKET_PROTO_TCP);
+#else
+ m_sock = kvi_socket_create(KVI_SOCKET_PF_INET,m_bUdp ? KVI_SOCKET_TYPE_DGRAM : KVI_SOCKET_TYPE_STREAM,KVI_SOCKET_PROTO_TCP);
+#endif
+
+ if(m_sock == KVI_INVALID_SOCKET)
+ {
+ c->warning(__tr2qs("Socket creation failed"));
+ c->returnValue()->setBoolean(false);
+ reset();
+ return true;
+ }
+
+ if(!m_szLocalIp.isEmpty())
+ {
+#ifdef COMPILE_IPV6_SUPPORT
+ KviSockaddr sa(m_szLocalIp,m_uLocalPort,m_bIpV6,m_bUdp);
+#else
+ KviSockaddr sa(m_szLocalIp,m_uLocalPort,false,m_bUdp);
+#endif
+ if(!sa.socketAddress())
+ {
+ c->warning(__tr2qs("Invalid socket address"));
+ reset();
+ c->returnValue()->setBoolean(false);
+ return true;
+ }
+
+ if(!kvi_socket_bind(m_sock,sa.socketAddress(),((int)(sa.addressLength()))))
+ {
+ c->warning(__tr2qs("Bind failure"));
+ reset();
+ c->returnValue()->setBoolean(false);
+ return true;
+ }
+ } else {
+#ifdef COMPILE_IPV6_SUPPORT
+ KviSockaddr sa(m_uLocalPort,m_bIpV6,m_bUdp);
+#else
+ KviSockaddr sa(m_uLocalPort,false,m_bUdp);
+#endif
+ if(!sa.socketAddress())
+ {
+ c->warning(__tr2qs("Invalid socket address"));
+ reset();
+ c->returnValue()->setBoolean(false);
+ return true;
+ }
+
+ if(!kvi_socket_bind(m_sock,sa.socketAddress(),((int)(sa.addressLength()))))
+ {
+ c->warning(__tr2qs("Bind failure"));
+ reset();
+ c->returnValue()->setBoolean(false);
+ return true;
+ }
+ }
+
+
+ if(!kvi_socket_listen(m_sock,5))
+ {
+ c->warning(__tr2qs("Listen failure"));
+ reset();
+ c->returnValue()->setBoolean(false);
+ return true;
+ }
+
+
+ // Reread the port in case we're binding to a random one (0)
+
+#ifdef COMPILE_IPV6_SUPPORT
+ KviSockaddr sareal(0,m_bIpV6,m_bUdp);
+#else
+ KviSockaddr sareal(0,false,m_bUdp);
+#endif
+
+ int size = (int)sareal.addressLength();
+
+ if(kvi_socket_getsockname(m_sock,sareal.socketAddress(),&size))
+ {
+ m_uLocalPort = sareal.port();
+ sareal.getStringAddress(m_szLocalIp);
+ }
+
+ // and setup the READ notifier...
+ m_pSn = new QSocketNotifier(m_sock,QSocketNotifier::Read);
+ QObject::connect(m_pSn,SIGNAL(activated(int)),this,SLOT(incomingConnection(int)));
+ m_pSn->setEnabled(true);
+
+ m_iStatus = KVI_SCRIPT_SOCKET_STATUS_LISTENING;
+
+ c->returnValue()->setBoolean(true);
+ return true;
+}
+
+void KviKvsObject_socket::incomingConnection(int)
+{
+#ifdef COMPILE_IPV6_SUPPORT
+ struct sockaddr_in6 hostSockAddr6;
+#endif
+ struct sockaddr_in hostSockAddr;
+
+ int size = sizeof(hostSockAddr);
+ struct sockaddr * addr = (struct sockaddr *)&hostSockAddr;
+
+#ifdef COMPILE_IPV6_SUPPORT
+ if(m_bIpV6)
+ {
+ addr = (struct sockaddr *)&hostSockAddr6;
+ size = sizeof(hostSockAddr6);
+ }
+#endif
+
+ // Incoming connection
+ m_secondarySock = kvi_socket_accept(m_sock,addr,&size);
+ if(m_secondarySock != KVI_INVALID_SOCKET)
+ {
+ // Connected
+#ifdef COMPILE_IPV6_SUPPORT
+ if(m_bIpV6)
+ {
+ m_uSecondaryPort = ntohs(((struct sockaddr_in6 *)addr)->sin6_port);
+ if(!kvi_binaryIpToStringIp_V6(((struct sockaddr_in6 *)addr)->sin6_addr,m_szSecondaryIp))
+ m_szSecondaryIp = __tr("unknown");
+ } else {
+#endif
+ m_uSecondaryPort = ntohs(((struct sockaddr_in *)addr)->sin_port);
+ if(!kvi_binaryIpToStringIp(((struct sockaddr_in *)addr)->sin_addr,m_szSecondaryIp))
+ m_szSecondaryIp = __tr("unknown");
+#ifdef COMPILE_IPV6_SUPPORT
+ }
+#endif
+ KviKvsVariantList *params=0;
+ callFunction(this,"incomingConnectionEvent",params);
+ if(m_secondarySock != KVI_INVALID_SOCKET)
+ {
+ kvi_socket_close(m_secondarySock);
+ m_secondarySock = KVI_INVALID_SOCKET;
+ m_uSecondaryPort = 0;
+ m_szSecondaryIp="";
+ }
+
+ } // else..huh ?... wait for the next notifier call
+}
+
+void KviKvsObject_socket::acceptConnection(kvi_socket_t s,kvi_u32_t uPort,const char * szIp)
+{
+ reset();
+ m_sock = s;
+ m_uRemotePort = uPort;
+ m_szRemoteIp = szIp;
+#ifdef COMPILE_IPV6_SUPPORT
+ KviSockaddr sareal(0,m_bIpV6,m_bUdp);
+#else
+ KviSockaddr sareal(0,false,m_bUdp);
+#endif
+
+ int size = (int)sareal.addressLength();
+
+ if(kvi_socket_getsockname(m_sock,sareal.socketAddress(),&size))
+ {
+ m_uLocalPort = sareal.port();
+ sareal.getStringAddress(m_szLocalIp);
+ }
+
+ m_iStatus = KVI_SCRIPT_SOCKET_STATUS_CONNECTED;
+
+ m_pSn = new QSocketNotifier((int)m_sock,QSocketNotifier::Read);
+ QObject::connect(m_pSn,SIGNAL(activated(int)),this,SLOT(readNotifierFired(int)));
+ m_pSn->setEnabled(true);
+}
+
+void KviKvsObject_socket::delayedConnect()
+{
+ if(m_pDelayTimer)delete m_pDelayTimer;
+ m_pDelayTimer = new QTimer();
+ connect(m_pDelayTimer,SIGNAL(timeout()),this,SLOT(doConnect()));
+ m_pDelayTimer->start(0,true);
+}
+
+void KviKvsObject_socket::doConnect()
+{
+ debug ("doConnect function");
+ if(m_pDelayTimer)delete m_pDelayTimer;
+ m_pDelayTimer = 0;
+
+
+ KviSockaddr sa(m_szRemoteIp,m_uRemotePort,!kvi_isValidStringIp(m_szRemoteIp),m_bUdp);
+
+ if(!sa.socketAddress())
+ {
+ unsigned int uOldConnectionId = m_uConnectionId;
+ QString ipAddressError=__tr2qs("Invalid ip address ");
+
+ ipAddressError.append(m_szRemoteIp);
+
+ KviKvsVariantList params;
+ QString tmp;
+ KviQString::sprintf(tmp,__tr2qs("Invalid ip address (%Q)"),&m_szRemoteIp);
+ params.append(new KviKvsVariant(tmp));
+ callFunction(this,"connectFailedEvent",&params);
+ /* callEventFunction("connectFailedEvent",0,new KviParameterList(
+ new KviStr(KviStr::Format,__tr("Invalid ip address (%s)"),m_szRemoteIp.ptr())));
+ */ if(m_uConnectionId == uOldConnectionId)reset();
+ // else it has already been called!
+ return;
+ }
+debug ("Socket created");
+
+ // create the socket
+#ifdef COMPILE_IPV6_SUPPORT
+ m_bIpV6 = sa.isIpV6();
+ m_sock = kvi_socket_create(sa.isIpV6() ? KVI_SOCKET_PF_INET6 : KVI_SOCKET_PF_INET,m_bUdp ? KVI_SOCKET_TYPE_DGRAM : KVI_SOCKET_TYPE_STREAM,KVI_SOCKET_PROTO_TCP);
+#else
+ m_bIpV6 = false;
+ m_sock = kvi_socket_create(KVI_SOCKET_PF_INET,m_bUdp ? KVI_SOCKET_TYPE_DGRAM : KVI_SOCKET_TYPE_STREAM,KVI_SOCKET_PROTO_TCP);
+#endif
+
+ if(m_sock == KVI_INVALID_SOCKET)
+ {
+ unsigned int uOldConnectionId = m_uConnectionId;
+ callFunction(this,"connectFailedEvent",new KviKvsVariantList(
+ new KviKvsVariant(__tr2qs("Failed to create the socket"))));
+ if(m_uConnectionId == uOldConnectionId)reset();
+ // else it has already been called!
+ return;
+ }
+ debug ("Valid socket");
+
+ if(!kvi_socket_setNonBlocking(m_sock))
+ {
+ unsigned int uOldConnectionId = m_uConnectionId;
+
+ callFunction(this,"connectFailedEvent",new KviKvsVariantList(
+ new KviKvsVariant(__tr2qs("Failed to setup a nonblocking socket"))));
+ if(m_uConnectionId == uOldConnectionId)reset();
+ // else it has already been called!
+ return;
+ }
+
+ if(!kvi_socket_connect(m_sock,sa.socketAddress(),((int)(sa.addressLength()))))
+ {
+ int err = kvi_socket_error();
+ if(!kvi_socket_recoverableConnectError(err))
+ {
+ // Ops...
+ int sockError=err;
+ if(sockError==0)
+ {
+ // Zero error ?...let's look closer
+ int iSize=sizeof(int);
+ if(!kvi_socket_getsockopt(m_sock,SOL_SOCKET,SO_ERROR,
+ (void *)&sockError,&iSize))sockError=0;
+ }
+ unsigned int uOldConnectionId = m_uConnectionId;
+ QString callBackError=__tr2qs("Connect failure: ");
+
+ callBackError.append((KviError::getDescription(KviError::translateSystemError(sockError)).utf8().data()));
+ callFunction(this,"connectFailedEvent",new KviKvsVariantList(
+ new KviKvsVariant(callBackError)));
+
+/* callEventFunction("connectFailedEvent",0,new KviParameterList(
+ new KviStr(KviStr::Format,__tr("Connect failure: %s"),KviError::getDescription(KviError::translateSystemError(sockError)).utf8().data())));
+*/ if(m_uConnectionId == uOldConnectionId)reset();
+ // else it has already been called!
+ return;
+ }
+ }
+ debug ("Socket connected");
+ m_pDelayTimer = new QTimer();
+ connect(m_pDelayTimer,SIGNAL(timeout()),this,SLOT(connectTimeout()));
+ m_pDelayTimer->start(m_uConnectTimeout,true);
+
+ m_pSn = new QSocketNotifier((int)m_sock,QSocketNotifier::Write);
+ QObject::connect(m_pSn,SIGNAL(activated(int)),this,SLOT(writeNotifierFired(int)));
+ m_pSn->setEnabled(true);
+}
+
+void KviKvsObject_socket::connectTimeout()
+{
+ unsigned int uOldConnectionId = m_uConnectionId;
+
+ callFunction(this,"connectFailedEvent",new KviKvsVariantList(
+ new KviKvsVariant(__tr2qs("Connect attempt timed out"))));
+ if(m_uConnectionId == uOldConnectionId)reset();
+ // else it has already been called!
+}
+
+void KviKvsObject_socket::delayedLookupRemoteIp()
+{
+ if(m_pDelayTimer)delete m_pDelayTimer;
+ m_pDelayTimer = new QTimer();
+ connect(m_pDelayTimer,SIGNAL(timeout()),this,SLOT(lookupRemoteIp()));
+ m_pDelayTimer->start(0,true);
+}
+
+void KviKvsObject_socket::lookupRemoteIp()
+{
+ debug ("Resolve dns");
+ if(m_pDelayTimer)delete m_pDelayTimer;
+ m_pDelayTimer = 0;
+ if(m_pDns)delete m_pDns;
+ m_pDns = new KviDns();
+ connect(m_pDns,SIGNAL(lookupDone(KviDns *)),this,SLOT(lookupDone(KviDns *)));
+ if(!m_pDns->lookup(m_szRemoteIp,KviDns::Any))
+ {
+ unsigned int uOldConnectionId = m_uConnectionId;
+
+ callFunction(this,"connectFailedEvent",new KviKvsVariantList(
+ new KviKvsVariant(__tr2qs("Can't start the DNS thread"))));
+ if(m_uConnectionId == uOldConnectionId)reset();
+ // else it has already been called!
+ }
+}
+
+void KviKvsObject_socket::lookupDone(KviDns *pDns)
+{
+
+ if(pDns->state() != KviDns::Success)
+ {
+ unsigned int uOldConnectionId = m_uConnectionId;
+
+ callFunction(this,"connectFailedEvent",new KviKvsVariantList(
+ new KviKvsVariant(KviError::getDescription(pDns->error()))));
+
+ if(m_uConnectionId == uOldConnectionId)reset();
+ // else it has already been called!
+ return;
+ }
+ m_szRemoteIp = pDns->firstIpAddress();
+ debug ("Dns resolved in %s",m_szRemoteIp.latin1());
+
+ delete m_pDns;
+ m_pDns = 0;
+ doConnect();
+}
+
+void KviKvsObject_socket::writeNotifierFired(int)
+{
+ debug ("Here in the writeNotifierFired");
+ if(m_pSn)
+ {
+ delete m_pSn;
+ m_pSn = 0;
+ }
+ if(m_pDelayTimer)
+ {
+ delete m_pDelayTimer;
+ m_pDelayTimer = 0;
+ }
+
+ // Check for errors...
+ int sockError;
+ int iSize=sizeof(int);
+ if(!kvi_socket_getsockopt(m_sock,SOL_SOCKET,SO_ERROR,(void *)&sockError,&iSize))sockError = -1;
+ //sockError = 0;
+ if(sockError != 0)
+ {
+ //debug("Failed here %d",sockError);
+ //failed
+ if(sockError > 0)sockError = KviError::translateSystemError(sockError);
+ else sockError = KviError_unknownError; //Error 0 ?
+ unsigned int uOldConnectionId = m_uConnectionId;
+ callFunction(this,"connectFailedEvent",new KviKvsVariantList(
+ new KviKvsVariant(KviError::getDescription(sockError))));
+ if(m_uConnectionId == uOldConnectionId)reset();
+ // else it has already been called!
+ } else {
+ // Succesfully connected
+ // create the correct read notifier now...
+ m_pSn = new QSocketNotifier((int)m_sock,QSocketNotifier::Read);
+ QObject::connect(m_pSn,SIGNAL(activated(int)),this,SLOT(readNotifierFired(int)));
+ m_pSn->setEnabled(true);
+
+#ifdef COMPILE_IPV6_SUPPORT
+ KviSockaddr sareal(0,m_bIpV6,m_bUdp);
+#else
+ KviSockaddr sareal(0,false,m_bUdp);
+#endif
+ int size = (int)sareal.addressLength();
+ if(kvi_socket_getsockname(m_sock,sareal.socketAddress(),&size))
+ {
+ m_uLocalPort = sareal.port();
+ sareal.getStringAddress(m_szLocalIp);
+ }
+ unsigned int uOldConnectionId = m_uConnectionId;
+ KviKvsVariantList *params=0;
+ callFunction(this,"connectEvent",params);
+ if(m_uConnectionId == uOldConnectionId)
+ m_iStatus = KVI_SCRIPT_SOCKET_STATUS_CONNECTED;
+ // else the connection has been already changed!
+ }
+}
+
+void KviKvsObject_socket::readNotifierFired(int)
+{
+ debug ("here in the readNotifierFired");
+ //read data
+ if((m_uInBufferLen - m_uInDataLen) < KVI_READ_CHUNK)
+ {
+ m_uInBufferLen += KVI_IN_BUFFER_ALLOC_CHUNK;
+ m_pInBuffer = (char *)kvi_realloc(m_pInBuffer,m_uInBufferLen);
+ }
+
+ int readLength = kvi_socket_recv(m_sock,m_pInBuffer + m_uInDataLen,KVI_READ_CHUNK);
+
+ if(readLength <= 0)
+ {
+ if(readLength==0)
+ {
+ unsigned int uOldConnectionId = m_uConnectionId;
+ KviKvsVariantList *params=0;
+ callFunction(this,"disconnectEvent",params);
+ if(m_uConnectionId == uOldConnectionId)reset();
+ // else it has already been called!
+ return;
+ } else {
+ //check for transmission errors
+ int err = kvi_socket_error();
+#ifdef COMPILE_ON_WINDOWS
+ if((err != EAGAIN) && (err != EINTR) && (err != WSAEWOULDBLOCK))
+#else
+ if((err != EAGAIN) && (err != EINTR))
+#endif
+ {
+ unsigned int uOldConnectionId = m_uConnectionId;
+ if(err > 0)
+
+ {
+ // QString error=KviError::translateSystemError(err);
+ callFunction(this,"disconnectEvent",new KviKvsVariantList(
+ new KviKvsVariant((kvs_int_t)KviError::translateSystemError(err))));
+ } else {
+ callFunction(this,"disconnectEvent",new KviKvsVariantList(
+ new KviKvsVariant(KviError::getDescription(KviError_remoteEndClosedConnection))));
+
+ }
+ if(m_uConnectionId == uOldConnectionId)reset();
+ // else it has already been called!
+ return;
+ } //else transient error...wait again...
+ }
+ return; // can do nothing
+ }
+ // readLength > 0
+ m_uInDataLen += readLength;
+
+ //KviStr * s = new KviStr();
+ QString s;
+ s.setNum(m_uInDataLen);
+
+
+ unsigned int uOldConnectionId = m_uConnectionId;
+ callFunction(this,"dataAvailableEvent",new KviKvsVariantList(new KviKvsVariant(s)));
+ if(m_uConnectionId == uOldConnectionId)
+ {
+ if(m_uInDataLen > (4096 * 1024)) // too much data in buffer (not reading)
+ {
+ callFunction(this,"disconnectEvent",new KviKvsVariantList(
+ new KviKvsVariant(__tr2qs("Too much unprocessed incoming data (you've left this socket unmanaged ?)"))));
+ reset();
+ }
+ }
+}
+
+void KviKvsObject_socket::eatInData(unsigned int uLen)
+{
+ if(uLen > m_uInDataLen)uLen = m_uInDataLen;
+
+ m_uInDataLen -= uLen;
+
+ if(m_uInDataLen > 0)
+ {
+ kvi_memmove(m_pInBuffer,m_pInBuffer + uLen,m_uInDataLen);
+ }
+
+ unsigned int uSpace = m_uInBufferLen - m_uInDataLen;
+
+ if(uSpace > KVI_IN_BUFFER_ALLOC_CHUNK)
+ {
+ m_uInBufferLen -= KVI_IN_BUFFER_ALLOC_CHUNK;
+ m_pInBuffer = (char *)kvi_realloc(m_pInBuffer,m_uInBufferLen);
+ }
+}
+
+void KviKvsObject_socket::delayedFlush(unsigned int uTimeout)
+{
+ if(m_pFlushTimer->isActive())m_pFlushTimer->stop();
+ m_pFlushTimer->start(uTimeout);
+}
+
+void KviKvsObject_socket::tryFlush()
+{
+ if(m_pFlushTimer->isActive())m_pFlushTimer->stop();
+
+ if(m_pOutBuffer->size() == 0)
+ {
+ return;
+ }
+
+ int result = kvi_socket_send(m_sock,m_pOutBuffer->data(),m_pOutBuffer->size());
+
+ if(result >= 0)
+ {
+ if(result == m_pOutBuffer->size())
+ {
+ m_pOutBuffer->clear();
+ } else {
+ if(result > 0)m_pOutBuffer->remove(result);
+ delayedFlush(500);
+ }
+ } else {
+ // Oops...error ?
+ int err = kvi_socket_error();
+#ifdef COMPILE_ON_WINDOWS
+ if((err == EAGAIN) || (err == EINTR) || (err = WSAEWOULDBLOCK))
+#else
+ if((err == EAGAIN)||(err == EINTR))
+#endif
+ {
+ // Transient error...partial send as before...
+ // Async continue...
+ delayedFlush(500);
+ return;
+ } else {
+ // Disconnected... :(
+ unsigned int uOldConnectionId = m_uConnectionId;
+ callFunction(this,"disconnectEvent",0,new KviKvsVariantList(
+ new KviKvsVariant(KviError::getDescription(KviError::translateSystemError(err)))));
+ if(m_uConnectionId == uOldConnectionId)reset();
+ // else it has already been called!
+ return;
+ }
+ }
+}
+void KviKvsObject_socket::reset()
+{
+ m_uConnectionId++; // this is the only place where this is incremented!
+ if(m_pDelayTimer)
+ {
+ delete m_pDelayTimer;
+ m_pDelayTimer = 0;
+ }
+ if(m_pDns)
+ {
+ delete m_pDns;
+ m_pDns = 0;
+ }
+ if(m_pSn)
+ {
+ delete m_pSn;
+ m_pSn = 0;
+ }
+ if(m_sock != KVI_INVALID_SOCKET)
+ {
+ kvi_socket_close(m_sock);
+ m_sock = KVI_INVALID_SOCKET;
+ }
+ if(m_pInBuffer)
+ {
+ kvi_free(m_pInBuffer);
+ m_pInBuffer = 0;
+ }
+ if(m_secondarySock)
+ {
+ kvi_socket_close(m_secondarySock);
+ m_secondarySock = KVI_INVALID_SOCKET;
+ }
+ m_uSecondaryPort = 0;
+ m_szSecondaryIp="";
+ delete m_pOutBuffer;
+ if(m_pFlushTimer->isActive())m_pFlushTimer->stop();
+ m_pOutBuffer = new KviDataBuffer();
+ m_uInBufferLen = 0;
+ m_uInDataLen = 0;
+ m_iStatus = KVI_SCRIPT_SOCKET_STATUS_DISCONNECTED;
+ m_uRemotePort = 0;
+ m_szRemoteIp="";
+ m_uLocalPort = 0;
+ m_szLocalIp="";
+ m_bIpV6 = false;
+}
+unsigned int KviKvsObject_socket::readGetLength(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uLen;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("length",KVS_PT_UNSIGNEDINTEGER,KVS_PF_OPTIONAL,uLen)
+ KVSO_PARAMETERS_END(c)
+ if (uLen>m_uInDataLen || !uLen) return m_uInDataLen;
+ else return uLen;
+ }
+
+bool KviKvsObject_socket::functionRead(KviKvsObjectFunctionCall *c)
+{
+ unsigned int uLen = readGetLength(c);
+
+ if(uLen > 0)
+ {
+ // convert NULLS to char 255
+ for(unsigned int i = 0;i < uLen;i++)
+ {
+ if(!m_pInBuffer[i])m_pInBuffer[i] = (char)(255);
+ }
+ QString tmpBuffer = QString::fromUtf8(m_pInBuffer,uLen);
+ c->returnValue()->setString(tmpBuffer);
+
+ eatInData(uLen);
+ }
+ return true;
+}
+
+bool KviKvsObject_socket::functionReadHex(KviKvsObjectFunctionCall *c)
+{
+ //??? funzioner�
+ unsigned int uLen = readGetLength(c);
+ bool bOk;
+ if(uLen > 0)
+ {
+ QString szTmp;
+ szTmp =m_pInBuffer;
+ szTmp.toInt(&bOk,16);
+ c->returnValue()->setString(szTmp);
+ eatInData(uLen);
+ }
+ return true;
+}
+
+bool KviKvsObject_socket::functionWrite(KviKvsObjectFunctionCall *c)
+{
+ QString szData;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("szData",KVS_PT_STRING,0,szData)
+ KVSO_PARAMETERS_END(c)
+
+KviQCString szData8 = szData.utf8();
+ if(szData8.length() > 0)
+ {
+ m_pOutBuffer->append((const unsigned char*)szData8.data(),szData8.length());
+ delayedFlush(0);
+ }
+ return true;
+}
+
+
+
+//--------------
+
+#include "m_class_socket.moc"
diff --git a/src/modules/objects/class_socket.h b/src/modules/objects/class_socket.h
new file mode 100644
index 00000000..7ed2e421
--- /dev/null
+++ b/src/modules/objects/class_socket.h
@@ -0,0 +1,185 @@
+#ifndef _CLASS_SOCKET_H_
+#define _CLASS_SOCKET_H_
+//
+// File : class_socket.h
+// Creation date : Sun Nov 11 03:13:46 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include "kvi_socket.h"
+
+
+
+#include "kvi_pointerlist.h"
+#include <qsocketnotifier.h>
+#include <qtimer.h>
+
+#define KVI_SCRIPT_SOCKET_STATUS_DISCONNECTED 0
+#define KVI_SCRIPT_SOCKET_STATUS_DNS 1
+#define KVI_SCRIPT_SOCKET_STATUS_CONNECTING 2
+#define KVI_SCRIPT_SOCKET_STATUS_LISTENING 3
+#define KVI_SCRIPT_SOCKET_STATUS_CONNECTED 4
+
+class KviDns;
+class KviDataBuffer;
+/*
+class KviScriptSocketObject : public KviScriptObject
+{
+ Q_OBJECT
+public:
+ KviScriptSocketObject(KviScriptObjectClass * cla,KviScriptObject * par,const char * nam);
+ virtual ~KviScriptSocketObject();
+protected:
+ kvi_socket_t m_sock;
+ int m_iStatus;
+ KviStr m_szRemoteIp;
+ unsigned short int m_uRemotePort;
+ KviStr m_szLocalIp;
+ unsigned short int m_uLocalPort;
+ unsigned int m_uConnectTimeout;
+ QSocketNotifier * m_pSn;
+ KviDns * m_pDns;
+ QTimer * m_pDelayTimer;
+ char * m_pInBuffer;
+ unsigned int m_uInBufferLen;
+ unsigned int m_uInDataLen;
+ bool m_bIpV6;
+ unsigned int m_uConnectionId;
+
+ KviDataBuffer * m_pOutBuffer;
+ QTimer * m_pFlushTimer;
+
+ kvi_socket_t m_secondarySock;
+ unsigned short int m_uSecondaryPort;
+ KviStr m_szSecondaryIp;
+protected:
+ bool functionStatus(KviCommand *c,KviParameterList * params,KviStr &buffer);
+ bool functionRemotePort(KviCommand *c,KviParameterList * params,KviStr &buffer);
+ bool functionRemoteIp(KviCommand *c,KviParameterList * params,KviStr &buffer);
+ bool functionLocalPort(KviCommand *c,KviParameterList * params,KviStr &buffer);
+ bool functionLocalIp(KviCommand *c,KviParameterList * params,KviStr &buffer);
+ bool functionConnect(KviCommand *c,KviParameterList * params,KviStr &buffer);
+ bool functionSetConnectTimeout(KviCommand *c,KviParameterList * params,KviStr &buffer);
+ bool functionConnectTimeout(KviCommand *c,KviParameterList * params,KviStr &buffer);
+ bool functionClose(KviCommand *c,KviParameterList * params,KviStr &buffer);
+ bool functionRead(KviCommand *c,KviParameterList * params,KviStr &buffer);
+ bool functionReadHex(KviCommand *c,KviParameterList * params,KviStr &buffer);
+ bool functionWrite(KviCommand *c,KviParameterList * params,KviStr &buffer);
+ bool functionWriteHex(KviCommand *c,KviParameterList * params,KviStr &buffer);
+ bool functionListen(KviCommand *c,KviParameterList * params,KviStr &buffer);
+ bool functionAccept(KviCommand *c,KviParameterList * params,KviStr &buffer);
+
+ void delayedConnect();
+ void delayedLookupRemoteIp();
+ void delayedFlush(unsigned int uTimeout);
+
+ void eatInData(unsigned int uLen);
+ unsigned int readGetLength(KviParameterList * params);
+
+ void acceptConnection(kvi_socket_t s,unsigned short int uPort,const char * szIp);
+
+ void reset();
+protected slots:
+ void doConnect();
+ void lookupRemoteIp();
+ void lookupDone(KviDns * pDns);
+ void connectTimeout();
+ void writeNotifierFired(int);
+ void readNotifierFired(int);
+ void tryFlush();
+ void incomingConnection(int);
+public:
+ static void registerSelf();
+ static void unregisterSelf();
+};
+*/
+//===============================================================
+#include "object_macros.h"
+
+
+class KviKvsObject_socket : public KviKvsObject
+{
+ Q_OBJECT
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_socket)
+protected:
+ bool m_bUdp;
+ kvi_socket_t m_sock;
+ int m_iStatus;
+ QString m_szRemoteIp;
+// unsigned short int m_uRemotePort;
+ QString m_szLocalIp;
+ kvi_u32_t m_uLocalPort;
+ unsigned int m_uConnectTimeout;
+ QSocketNotifier * m_pSn;
+ KviDns * m_pDns;
+ QTimer * m_pDelayTimer;
+ char * m_pInBuffer;
+ unsigned int m_uInBufferLen;
+ unsigned int m_uInDataLen;
+ bool m_bIpV6;
+ unsigned int m_uConnectionId;
+ kvs_uint_t m_uRemotePort;
+ KviDataBuffer * m_pOutBuffer;
+ QTimer * m_pFlushTimer;
+
+ kvi_socket_t m_secondarySock;
+ kvi_u32_t m_uSecondaryPort;
+ QString m_szSecondaryIp;
+protected:
+ bool functionStatus(KviKvsObjectFunctionCall *c);
+ bool functionRemotePort(KviKvsObjectFunctionCall *c);
+ bool functionRemoteIp(KviKvsObjectFunctionCall *c);
+ bool functionLocalPort(KviKvsObjectFunctionCall *c);
+ bool functionLocalIp(KviKvsObjectFunctionCall *c);
+ bool functionConnect(KviKvsObjectFunctionCall *c);
+ bool functionSetConnectTimeout(KviKvsObjectFunctionCall *c);
+ bool functionConnectTimeout(KviKvsObjectFunctionCall *c);
+
+ bool functionClose(KviKvsObjectFunctionCall *c);
+ bool functionRead(KviKvsObjectFunctionCall *c);
+ bool functionReadHex(KviKvsObjectFunctionCall *c);
+ bool functionWrite(KviKvsObjectFunctionCall *c);
+ bool functionWriteHex(KviKvsObjectFunctionCall *c);
+
+ bool functionSetProtocol(KviKvsObjectFunctionCall *c);
+
+ bool functionListen(KviKvsObjectFunctionCall *c);
+ bool functionAccept(KviKvsObjectFunctionCall *c);
+
+ void delayedConnect();
+ void delayedLookupRemoteIp();
+ void delayedFlush(unsigned int uTimeout);
+
+ void eatInData(unsigned int uLen);
+ unsigned int readGetLength(KviKvsObjectFunctionCall * params);
+
+ void acceptConnection(kvi_socket_t s,kvi_u32_t uPort,const char * szIp);
+
+ void reset();
+protected slots:
+ void doConnect();
+ void lookupRemoteIp();
+ void lookupDone(KviDns * pDns);
+ void connectTimeout();
+ void writeNotifierFired(int);
+ void readNotifierFired(int);
+ void tryFlush();
+ void incomingConnection(int);
+};
+#endif //_CLASS_SOCKET_H_
diff --git a/src/modules/objects/class_spinbox.cpp b/src/modules/objects/class_spinbox.cpp
new file mode 100644
index 00000000..f87a3a51
--- /dev/null
+++ b/src/modules/objects/class_spinbox.cpp
@@ -0,0 +1,265 @@
+//
+// File : class_progressbar.cpp
+// Creation date : Fri Jan 30 14:21:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include <qspinbox.h>
+#include "class_spinbox.h"
+#include "kvi_error.h"
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+
+/*
+ @doc: spinbox
+ @keyterms:
+ spinbox object class,
+ @title:
+ spinbox class
+ @type:
+ class
+ @short:
+ Provides a simple spin button.
+ @inherits:
+ [class]object[/class]
+ [class]widget[/class]
+ @description:
+ This widget allows the user to choose a value either by clicking the up/down buttons
+ to increase/decrease the value currently displayed or by typing the value directly into the spin box.
+ @functions:
+ !fn: $setValue(<value:integer>)
+ Sets the value of the spin box.[br]
+ See also [classfnc]$value[/classfnc]()
+ !fn: $setMinValue(<min_value:integer>)
+ Sets the minimum value of the spin box.
+ See also [classfnc]$MinValue[/classfnc]()
+ !fn: $setMaxValue(<max_value:integer>)
+ Sets the maximum value of the spin box.[br]
+ See also [classfnc]$maxValue[/classfnc]()
+ !fn: $setLineStep(<line_step:integer>)
+ Sets the line step: when the user uses the arrows to change the spin box's value the value will be
+ incremented/decremented by the amount of the line step.
+ See also [classfnc]$lineStep[/classfnc]()
+ !fn: $setSpecialValueText(<text:string>)
+ Sets the special-value text.
+ If set, the spin box will display this text instead of a numeric value whenever the current value is equal to [classfnc]$minValue[/classfnc]().
+ See also [classfnc]$setSpecialValueText[/classfnc]()
+ !fn: $setPrefix(<text:string>)
+ This property holds the spin box's prefix.[br]
+ The prefix is prepended to the start of the displayed value.[br]
+ Typical use is to display a unit of measurement or a currency symbol.
+ See also [classfnc]$setSuffix[/classfnc]()
+ !fn: $setSuffix(<text:string>);
+ This property holds the suffix of the spin box.[br]
+ The suffix is appended to the end of the displayed value.[br]
+ See also [classfnc]$setPrefix[/classfnc]()
+ !fn: <integer> $value()
+ Returns the value of the spin box.
+ See also [classfnc]$setValue[/classfnc]()
+ !fn: <integer> $minValue
+ Returns the minimum value of the spin box.
+ See also [classfnc]$setMinValue[/classfnc]()
+ !fn: <integer> $maxValue
+ Returns the maximum value of the spin box.
+ See also [classfnc]$setMaxValue[/classfnc]()
+ !fn: <integer> $lineStep()
+ Return the linestep.
+ !fn: <string> $specialValueText()
+ Returns the special-value text.
+ See also [classfnc]$setSpecialValueText[/classfnc]()
+ !fn: $valueChangedEvent(<new value:integer>)
+ This function is called by the framework when the spinbox value is changed and return the new slider value as its argument.[br]
+ The default implementation emits the [classfnc]$valueChanged[/classfnc]() signal,
+ so it is easy to handle the values from many spinboxes without reimplementing
+ the [classfnc]$valueChangedEvent[/classfnc]() for every one.[br]
+ Note: If you reimplement this function to catch the spinbox value, you will have to emit the signal by yourself (if you still need it, obviously).
+ @signals:
+ !sg: $valueChanged()
+ This signal is emitted by the default implementation of [classfnc]valueChangedEvent[/classfnc]().[br]
+ If you reimplement that function you will have to emit the signal manually (if you still need it).
+*/
+
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_spinbox,"spinbox","widget")
+
+
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_spinbox,"setValue", functionsetValue);
+ KVSO_REGISTER_HANDLER(KviKvsObject_spinbox,"setMinValue", functionsetMinValue);
+ KVSO_REGISTER_HANDLER(KviKvsObject_spinbox,"setMaxValue", functionsetMaxValue);
+ KVSO_REGISTER_HANDLER(KviKvsObject_spinbox,"setLineStep", functionsetLineStep);
+ KVSO_REGISTER_HANDLER(KviKvsObject_spinbox,"setSpecialValueText", functionsetSpecialValueText);
+ KVSO_REGISTER_HANDLER(KviKvsObject_spinbox,"value",functionvalue);
+ KVSO_REGISTER_HANDLER(KviKvsObject_spinbox,"minValue", functionminValue);
+ KVSO_REGISTER_HANDLER(KviKvsObject_spinbox,"maxValue", functionmaxValue);
+ KVSO_REGISTER_HANDLER(KviKvsObject_spinbox,"lineStep", functionlineStep);
+ KVSO_REGISTER_HANDLER(KviKvsObject_spinbox,"specialValueText", functionspecialValueText);
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_spinbox,"setPrefix", functionsetPrefix);
+ KVSO_REGISTER_HANDLER(KviKvsObject_spinbox,"setSuffix", functionsetSuffix);
+
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_spinbox,"valueChangedEvent", functionvalueChangedEvent);
+KVSO_END_REGISTERCLASS(KviKvsObject_spinbox)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_spinbox,KviKvsObject_widget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_spinbox)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_spinbox)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_spinbox)
+
+bool KviKvsObject_spinbox::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ setObject(new QSpinBox(parentScriptWidget(), name()), true);
+ connect(widget(),SIGNAL(valueChanged(int)),this,SLOT(valueChanged(int)));
+ return true;
+}
+
+
+
+bool KviKvsObject_spinbox::functionsetValue(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iValue;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("value",KVS_PT_INT,0,iValue)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((QSpinBox *)widget())->setValue(iValue);
+ return true;
+}
+bool KviKvsObject_spinbox::functionsetMinValue(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iMinvalue;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("min_value",KVS_PT_INT,0,iMinvalue)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((QSpinBox *)widget())->setMinValue(iMinvalue);
+ return true;
+}
+bool KviKvsObject_spinbox::functionsetMaxValue(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iMaxvalue;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("max_value",KVS_PT_INT,0,iMaxvalue)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((QSpinBox *)widget())->setMaxValue(iMaxvalue);
+ return true;
+}
+
+bool KviKvsObject_spinbox::functionsetLineStep(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iLinestep;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("line_step",KVS_PT_INT,0,iLinestep)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((QSpinBox *)widget())->setLineStep(iLinestep);
+ return true;
+}
+
+
+bool KviKvsObject_spinbox::functionvalue(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setInteger(((QSpinBox *)widget())->value());
+ return true;
+}
+
+bool KviKvsObject_spinbox::functionminValue(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setInteger(((QSpinBox *)widget())->minValue());
+ return true;
+}
+bool KviKvsObject_spinbox::functionmaxValue(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setInteger(((QSpinBox *)widget())->maxValue());
+ return true;
+}
+bool KviKvsObject_spinbox::functionlineStep(KviKvsObjectFunctionCall *c)
+{
+ if (widget())
+ {
+ #ifdef COMPILE_USE_QT4
+ c->returnValue()->setInteger(((QSpinBox *)widget())->singleStep());
+ #else
+ c->returnValue()->setInteger(((QSpinBox *)widget())->lineStep());
+ #endif
+ }
+
+ return true;
+}
+
+
+bool KviKvsObject_spinbox::functionspecialValueText(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setString(((QSpinBox *)widget())->specialValueText());
+ return true;
+}
+
+
+bool KviKvsObject_spinbox::functionsetSpecialValueText(KviKvsObjectFunctionCall *c)
+{
+
+ QString szText;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szText)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((QSpinBox *)widget())->setSpecialValueText(szText);
+ return true;
+}
+bool KviKvsObject_spinbox::functionsetPrefix(KviKvsObjectFunctionCall *c)
+{
+
+ QString szPrefix;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szPrefix)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((QSpinBox *)widget())->setPrefix(szPrefix);
+ return true;
+}
+bool KviKvsObject_spinbox::functionsetSuffix(KviKvsObjectFunctionCall *c)
+{
+
+ QString szSuffix;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szSuffix)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((QSpinBox *)widget())->setSuffix(szSuffix);
+ return true;
+}
+
+bool KviKvsObject_spinbox::functionvalueChangedEvent(KviKvsObjectFunctionCall *c)
+{
+ emitSignal("valueChanged",c,c->params());
+ return true;
+}
+
+void KviKvsObject_spinbox::valueChanged(int value)
+{
+ KviKvsVariantList params(new KviKvsVariant((kvs_int_t)value));
+ callFunction(this,"valueChangedEvent",&params);
+}
+
+#include "m_class_spinbox.moc"
diff --git a/src/modules/objects/class_spinbox.h b/src/modules/objects/class_spinbox.h
new file mode 100644
index 00000000..d5a6ee94
--- /dev/null
+++ b/src/modules/objects/class_spinbox.h
@@ -0,0 +1,64 @@
+#ifndef _CLASS_SPINBOX_H_
+#define _CLASS_SPINBOX_H_
+//
+// File : class_progressbar.h
+// Creation date : Fri Jan 30 14:21:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+
+#include <qspinbox.h>
+#include "class_widget.h"
+
+#include "object_macros.h"
+
+class KviKvsObject_spinbox : public KviKvsObject_widget
+{
+ Q_OBJECT
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_spinbox)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+ bool functionsetTracking(KviKvsObjectFunctionCall *c);
+
+ bool functionsetValue(KviKvsObjectFunctionCall *c);
+ bool functionsetMinValue(KviKvsObjectFunctionCall *c);
+ bool functionsetMaxValue(KviKvsObjectFunctionCall *c);
+ bool functionsetLineStep(KviKvsObjectFunctionCall *c);
+ bool functionsetPrefix(KviKvsObjectFunctionCall *c);
+ bool functionsetSuffix(KviKvsObjectFunctionCall *c);
+ bool functionvalue(KviKvsObjectFunctionCall *c);
+ bool functionminValue(KviKvsObjectFunctionCall *c);
+ bool functionmaxValue(KviKvsObjectFunctionCall *c);
+ bool functionlineStep(KviKvsObjectFunctionCall *c);
+ bool functionsetSpecialValueText(KviKvsObjectFunctionCall *c);
+ bool functionspecialValueText(KviKvsObjectFunctionCall *c);
+
+ bool functionvalueChangedEvent(KviKvsObjectFunctionCall *c);
+
+protected slots:
+ void valueChanged(int);
+};
+
+#endif //!_CLASS_SPINBOX_H_
diff --git a/src/modules/objects/class_tabwidget.cpp b/src/modules/objects/class_tabwidget.cpp
new file mode 100644
index 00000000..c5e97b60
--- /dev/null
+++ b/src/modules/objects/class_tabwidget.cpp
@@ -0,0 +1,541 @@
+//mdm:
+// File : class_tabwidget.cpp
+// Creation date : Fri Feb 11 10:21:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include "class_tabwidget.h"
+#include "kvi_error.h"
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+
+/*
+ @doc: tabwidget
+ @keyterms:
+ tabwidget object class,
+ @title:
+ tabwidget class
+ @type:
+ class
+ @short:
+ Provides a Tab Widget.
+ @inherits:
+ [class]object[/class]
+ [class]widget[/class]
+ @description:
+ The tabwidget class provides a stack of tabbed widgets.[br]
+ Each tab is associated with a different widget (called a `page').[br]
+ Only the current tab's page is shown in the page area; all the others tabs pages are hidden.[br]
+ The user can show a different page by clicking on its tab.[br]
+ @functions:
+ !fn: $addTab(<widget:object>,<text_label:string>,[<icon_id>])
+ Adds another page to the tab view with the text label and optional icon.
+ !fn: $insertTab(<widget:object>,<tex_label:string>,<index:uinteger>)
+ Inserts another tab and page to the tab view with name and label-text specified.[br]
+ If index is not specified, the tab is simply appended.[br]
+ Otherwise the new tab is inserted at the specified position.
+ !fn: $setTabToolTip(<tab_widget:object>,<tooltip:string>)
+ Sets the tab tool tip for the tabwidget to <tooltip>.
+ !fn: $removeTabToolTip(<tab_widget:object>)
+ Removes the tab tool tip for the tab. If the page does not have a tip, nothing happens.
+ !fn: $setTabLabel(<tab_widget>, <label:string>)
+ Sets the tab label for <tab_widget> to label.
+ !fn: $changeTab(<tab_widget:object>,<label:text>,[<icon_id>])
+ Defines a new label, and optional icon, for the tab .
+ !fn: $setCurrentPage(<index:uinteger>)
+ Sets the index position of the current tab page to <index>.
+ !fn: <integer> $currentPageIndex()
+ Returns the current page index.
+ !fn: <string> $label(<index:uinteger>)
+ Retunrs the label to the <index>.
+ !fn: <string> $currentTabLabel()
+ Returns the label of the current tab.
+ !fn: $setMargin(<margin:integer>)
+ Sets the margin in this tab widget to <margin>.
+ !fn: <integer> $margin()
+ Returns the margin in this tab widget.
+ !fn: $removePage(<tab_widget:object>)
+ Remove the page <tab_widget>.
+ !fn: $setTabPosition(<tab_position:string>)
+ Sets TabPosition. Valid parameters are : Top, Bottom.
+ !fn: <integer> $count()
+ This property holds the number of tabs in the tab bar.
+ !fn: $currentChangedEvent()
+ This function is invoched when the current tab was changed.[br]
+ The default implementation emits the [classfnc]$currentChange[/classfnc]() signal.
+ @examples:
+ [example]
+ # First we'll create the main tabwidget.
+ %Tabwidget=$new(tabwidget)
+ %Tabwidget->$setToolTip("Example of TabWidget class")
+ %Tabwidget->$setMargin(30)
+ %Tabwidget->$setTabPosition(Top)
+
+ # Now we'll create the new widgets and put they in to the main tabwidget.
+ %firsttab=$new(widget,%Tabwidget)
+ %secondtab=$new(widget,%Tabwidget)
+
+ # Now we'll create the item to put in to tab's pages.
+ %layoutfirsttab=$new(layout,%firsttab)
+ %labelbt=$new(label,%firsttab)
+ %labelbt->$settext(Botton Tab)
+ %labeltt=$new(label,%firsttab)
+ %labeltt->$settext(Top Tab)
+ %buttontb=$new(button,%firsttab)
+ %buttontb->$settext("To &Botton")
+ %buttontt=$new(button,%firsttab)
+ %buttontt->$settext("To &Top")
+
+ # Now we'll give a layout to all items.
+ # This also allows to use privateimpl without making buttons global variables
+ %layoutfirsttab->$addwidget(%labelbt,0,0)
+ %layoutfirsttab->$addwidget(%labeltt,0,1)
+ %layoutfirsttab->$addwidget(%buttontb,1,0)
+ %layoutfirsttab->$addwidget(%buttontt,1,1)
+
+ # Add the page to the main tab.
+ %Tabwidget->$addTab(%firsttab,Top&Button,33)
+
+ # Implementing the action to do when the user click the buttons.
+ privateimpl(%buttontb,mousepressevent)
+ {
+ %Tabwidget->$setTabPosition(Bottom)
+ }
+ privateimpl(%buttontt,mousepressevent)
+ {
+ %Tabwidget->$setTabPosition(Top)
+ }
+
+ # We do the same work with the second tab's page.
+ %layoutsecondtab=$new(layout,%secondtab)
+ %labelwp=$new(label,%secondtab)
+ %labelwp->$settext("Enjoy the new Class provided by")
+ %layoutsecondtab->$addwidget(%labelwp,0,0)
+ %labelwp->$setalignment("Center")
+ %labelgen=$new(label,%secondtab)
+ %labelgen->$settext(Grifisx \& Noldor)
+ %labelgen->$setalignment("Center")
+ %layoutsecondtab->$addwidget(%labelgen,1,0)
+ %Tabwidget->$addTab(%secondtab,&About,50)
+
+ # Let's show our example.
+ %Tabwidget->$show()
+ [/example]
+ @signals:
+ !sg: $currentChange()
+ This signal is emitted by the default implementation of [classfnc]$currentChangedEvent[/classfnc]().[br]
+ If you reimplement that function you will have to emit the signal manually (if you still need it).[br]
+*/
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_tabwidget,"tabwidget","widget")
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_tabwidget,"addTab", functionaddTab)
+ KVSO_REGISTER_HANDLER(KviKvsObject_tabwidget,"insertTab", functioninsertTab)
+ KVSO_REGISTER_HANDLER(KviKvsObject_tabwidget,"setTabToolTip", functionsetTabToolTip)
+ KVSO_REGISTER_HANDLER(KviKvsObject_tabwidget,"removeTabToolTip", functionremoveTabToolTip)
+ KVSO_REGISTER_HANDLER(KviKvsObject_tabwidget,"setTabLabel", functionsetTabLabel)
+ KVSO_REGISTER_HANDLER(KviKvsObject_tabwidget,"changeTab", functionchangeTab)
+ KVSO_REGISTER_HANDLER(KviKvsObject_tabwidget,"setCurrentPage", functionsetCurrentPage)
+ KVSO_REGISTER_HANDLER(KviKvsObject_tabwidget,"currentPageIndex", functioncurrentPageIndex)
+ KVSO_REGISTER_HANDLER(KviKvsObject_tabwidget,"label", functiontabLabel)
+ KVSO_REGISTER_HANDLER(KviKvsObject_tabwidget,"currentTabLabel", functioncurrentTabLabel)
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_tabwidget,"setMargin", functionsetMargin);
+ KVSO_REGISTER_HANDLER(KviKvsObject_tabwidget,"margin", functionmargin)
+ KVSO_REGISTER_HANDLER(KviKvsObject_tabwidget,"count", functioncount)
+ KVSO_REGISTER_HANDLER(KviKvsObject_tabwidget,"removePage", functionremovePage)
+ KVSO_REGISTER_HANDLER(KviKvsObject_tabwidget,"setTabPosition", functionsetTabPosition)
+
+ // events
+ KVSO_REGISTER_HANDLER(KviKvsObject_tabwidget,"currentChangedEvent", functionCurrentChangedEvent)
+
+
+
+KVSO_END_REGISTERCLASS(KviKvsObject_tabwidget)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_tabwidget,KviKvsObject_widget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_tabwidget)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_tabwidget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_tabwidget)
+
+bool KviKvsObject_tabwidget::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ setObject(new QTabWidget(parentScriptWidget(), name()), true);
+ connect(widget(),SIGNAL(currentChanged(int)),this,SLOT(slotcurrentChanged(int)));
+ return true;
+}
+bool KviKvsObject_tabwidget::functionaddTab(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject *ob;
+ QString szLabel,szIcon;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETER("label",KVS_PT_STRING,0,szLabel)
+ KVSO_PARAMETER("icon_id",KVS_PT_STRING,KVS_PF_OPTIONAL,szIcon)
+ KVSO_PARAMETERS_END(c)
+ ob=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if(!widget())return true;
+ if (!ob)
+ {
+ c->warning(__tr2qs("Widget parameter is not an object"));
+ return true;
+ }
+ if (!ob->object())
+ {
+ c->warning(__tr2qs("Widget parameter is not a valid object"));
+ return true;
+ }
+ if(!ob->object()->isWidgetType())
+ {
+ c->warning(__tr2qs("Can't add a non-widget object"));
+ return true;
+ }
+ QPixmap * pix = g_pIconManager->getImage(szIcon);
+
+ if(pix){
+#ifdef COMPILE_USE_QT4
+ ((QTabWidget *)widget())->addTab(((QWidget *)(ob->object())),QIconSet(*pix),szLabel);
+#else
+ ((QTabWidget *)widget())->addTab(((QWidget *)(ob->object())),QIconSet(*pix,QIconSet::Small),szLabel);
+#endif
+ }
+ else((QTabWidget *)widget())->addTab(((QWidget *)(ob->object())),szLabel);
+ return true;
+}
+
+bool KviKvsObject_tabwidget::functioninsertTab(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject *ob;
+ QString szLabel,szIcon;
+ kvs_uint_t uIndex;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("tab_widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETER("label",KVS_PT_STRING,0,szLabel)
+ KVSO_PARAMETER("index",KVS_PT_UNSIGNEDINTEGER,0,uIndex)
+ KVSO_PARAMETER("icon_id",KVS_PT_STRING,KVS_PF_OPTIONAL,szIcon)
+ KVSO_PARAMETERS_END(c)
+ ob=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if(!widget())return true;
+ if (!ob)
+ {
+ c->warning(__tr2qs("Widget parameter is not an object"));
+ return true;
+ }
+ if (!ob->object())
+ {
+ c->warning(__tr2qs("Widget parameter is not a valid object"));
+ return true;
+ }
+ if(!ob->object()->isWidgetType())
+ {
+ c->warning(__tr2qs("Can't add a non-widget object"));
+ return true;
+ }
+ QPixmap * pix = g_pIconManager->getImage(szIcon);
+ if(pix){
+ #ifdef COMPILE_USE_QT4
+ ((QTabWidget *)widget())->insertTab( ((QWidget *)(ob->object())),QIconSet(*pix),szLabel,uIndex);
+ #else
+ ((QTabWidget *)widget())->insertTab(((QWidget *)(ob->object())),QIconSet(*pix,QIconSet::Small),szLabel,uIndex);
+ #endif
+ }
+ else ((QTabWidget *)widget())->insertTab(((QWidget *)(ob->object())),szLabel,uIndex);
+ return true;
+}
+
+bool KviKvsObject_tabwidget::functionsetCurrentPage(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uIndex;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("index",KVS_PT_UNSIGNEDINTEGER,0,uIndex)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((QTabWidget *)widget())->setCurrentPage(uIndex);
+ return true;
+}
+bool KviKvsObject_tabwidget::functionsetTabToolTip(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject *ob;
+ QString szTooltip;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("tab_widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETER("tooltip",KVS_PT_STRING,0,szTooltip)
+ KVSO_PARAMETERS_END(c)
+ ob=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if(!widget())return true;
+ if (!ob)
+ {
+ c->warning(__tr2qs("Widget parameter is not an object"));
+ return true;
+ }
+ if (!ob->object())
+ {
+ c->warning(__tr2qs("Widget parameter is not a valid object"));
+ return true;
+ }
+ if(!ob->object()->isWidgetType())
+ {
+ c->warning(__tr2qs("Not a widget object"));
+ return true;
+ }
+ int ctrl = ((QTabWidget *)widget())->indexOf (((QWidget *)(ob->object())));
+ if (ctrl == -1)
+ {
+ c->warning(__tr2qs("Can't find the tab "));
+ return true;
+ }
+ ((QTabWidget *)widget())->setTabToolTip(((QWidget *)(ob->object())),szTooltip);
+ return true;
+}
+bool KviKvsObject_tabwidget::functionremoveTabToolTip(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject *ob;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("tab_widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETERS_END(c)
+ ob=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if (!ob)
+ {
+ c->warning(__tr2qs("Widget parameter is not an object"));
+ return true;
+ }
+ if (!ob->object())
+ {
+ c->warning(__tr2qs("Widget parameter is not a valid object"));
+ return true;
+ }
+ if(!widget()) return true;
+ if(!ob->object()->isWidgetType())
+ {
+ c->warning(__tr2qs("Not a widget object"));
+ return true;
+ }
+ if (((QTabWidget *)widget())->indexOf (((QWidget *)(ob->object()))) == -1)
+ {
+ c->warning(__tr2qs("Can't find the tab "));
+ return true;
+ }
+ ((QTabWidget *)widget())->removeTabToolTip(((QWidget *)(ob->object())));
+ return true;
+}
+
+bool KviKvsObject_tabwidget::functionsetTabLabel(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject *ob;
+ QString szLabel;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("tab_widget",KVS_PT_HOBJECT,0, hObject)
+ KVSO_PARAMETER("tooltip",KVS_PT_STRING,0,szLabel)
+ KVSO_PARAMETERS_END(c)
+ ob=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if (!ob)
+ {
+ c->warning(__tr2qs("Widget parameter is not an object"));
+ return true;
+ }
+ if (!ob->object())
+ {
+ c->warning(__tr2qs("Widget parameter is not a valid object"));
+ return true;
+ }
+ if(!widget())return true;
+ if(!ob->object()->isWidgetType())
+ {
+ c->warning(__tr2qs("Not a widget object"));
+ return true;
+ }
+ int ctrl = ((QTabWidget *)widget())->indexOf (((QWidget *)(ob->object())));
+ if (ctrl == -1)
+ {
+ c->warning(__tr2qs("Can't find the tab "));
+ return true;
+ }
+ ((QTabWidget *)widget())->setTabLabel(((QWidget *)(ob->object())),szLabel);
+ return true;
+}
+bool KviKvsObject_tabwidget::functioncurrentPageIndex(KviKvsObjectFunctionCall *c)
+{
+ int index=((QTabWidget *)widget())->currentPageIndex();
+ if (widget()) c->returnValue()->setInteger(index);
+ return true;
+}
+bool KviKvsObject_tabwidget::functiontabLabel(KviKvsObjectFunctionCall *c)
+{
+ kvs_uint_t uIndex;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("index",KVS_PT_INT,0,uIndex)
+ KVSO_PARAMETERS_END(c)
+ if (!widget()) return true;
+ QString label=((QTabWidget *)widget())->label(uIndex);
+ c->returnValue()->setString(label);
+ return true;
+}
+bool KviKvsObject_tabwidget::functionsetMargin(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iMargin;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("margin",KVS_PT_INT,0,iMargin)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((QTabWidget *)widget())->setMargin(iMargin);
+ return true;
+}
+bool KviKvsObject_tabwidget::functionmargin(KviKvsObjectFunctionCall *c)
+{
+
+ if (widget()) c->returnValue()->setInteger(((QTabWidget *)widget())->margin());
+ return true;
+}
+
+bool KviKvsObject_tabwidget::functioncount(KviKvsObjectFunctionCall *c)
+{
+ if (!widget()) return true;
+ int count = ((QTabWidget *)widget())->count();
+ c->returnValue()->setInteger(count);
+ return true;
+}
+
+bool KviKvsObject_tabwidget::functioncurrentTabLabel(KviKvsObjectFunctionCall *c)
+{
+ if (widget())
+ {
+ int i= ((QTabWidget *)widget())->currentPageIndex();
+ QString label=((QTabWidget *)widget())->label(i);
+ c->returnValue()->setString(label);
+ }
+ return true;
+}
+bool KviKvsObject_tabwidget::functionremovePage(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject *ob;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("tab_widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETERS_END(c)
+ ob=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if(!widget())return true;
+ if (!ob)
+ {
+ c->warning(__tr2qs("Widget parameter is not an object"));
+ return true;
+ }
+ if (!ob->object())
+ {
+ c->warning(__tr2qs("Widget parameter is not a valid object"));
+ return true;
+ }
+ if(!ob->object()->isWidgetType())
+ {
+ c->warning(__tr2qs("Not a widget object"));
+ return true;
+ }
+ int ctrl = ((QTabWidget *)widget())->indexOf (((QWidget *)(ob->object())));
+ if (ctrl == -1)
+ {
+ c->warning(__tr2qs("Can't find the tab "));
+ return true;
+ }
+ ((QTabWidget *)widget())->removePage(((QWidget *)(ob->object())));
+ return true;
+}
+
+bool KviKvsObject_tabwidget::functionchangeTab(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject *ob;
+ QString szLabel,szIcon;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("tab_widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETER("label",KVS_PT_STRING,0,szLabel)
+ KVSO_PARAMETER("icon_id",KVS_PT_STRING,KVS_PF_OPTIONAL,szIcon)
+ KVSO_PARAMETERS_END(c)
+ ob=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if (!ob)
+ {
+ c->warning(__tr2qs("Widget parameter is not an object"));
+ return true;
+ }
+ if (!ob->object())
+ {
+ c->warning(__tr2qs("Widget parameter is not a valid object"));
+ return true;
+ }
+ if(!widget())return true;
+ if(!ob->object()->isWidgetType())
+ {
+ c->warning(__tr2qs("Not a widget object"));
+ return true;
+ }
+ int ctrl = ((QTabWidget *)widget())->indexOf (((QWidget *)(ob->object())));
+ if (ctrl == -1)
+ {
+ c->warning(__tr2qs("Can't find the tab "));
+ return true;
+ }
+ QPixmap * pix = g_pIconManager->getImage(szIcon);
+ if(pix){
+ #ifdef COMPILE_USE_QT4
+ ((QTabWidget *)widget())->changeTab(((QWidget *)(ob->object())),QIconSet(*pix),szLabel);
+ #else
+ ((QTabWidget *)widget())->changeTab(((QWidget *)(ob->object())),QIconSet(*pix,QIconSet::Small),szLabel);
+ #endif
+ }
+ else ((QTabWidget *)widget())->changeTab(((QWidget *)(ob->object())),szLabel);
+ return true;
+}
+bool KviKvsObject_tabwidget::functionsetTabPosition(KviKvsObjectFunctionCall *c)
+{
+ QString szPos;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("tab_position",KVS_PT_STRING,0,szPos)
+ KVSO_PARAMETERS_END(c)
+ if(!widget())return true;
+ if(KviQString::equalCI(szPos,"Top"))
+ ((QTabWidget *)widget())->setTabPosition(QTabWidget::Top);
+ else if(KviQString::equalCI(szPos,"Bottom"))
+ ((QTabWidget *)widget())->setTabPosition(QTabWidget::Bottom);
+ else c->warning( __tr2qs("Unknown position 'Q%'"),&szPos);
+ return true;
+}
+
+
+
+bool KviKvsObject_tabwidget::functionCurrentChangedEvent(KviKvsObjectFunctionCall *c)
+{
+
+ emitSignal("valueChanged",c,c->params());
+ return true;
+}
+
+void KviKvsObject_tabwidget::slotCurrentChanged(int value)
+{
+ KviKvsVariantList params(new KviKvsVariant((kvs_int_t)value));
+ callFunction(this,"currentChangedEvent",&params);
+}
+
+#include "m_class_tabwidget.moc"
diff --git a/src/modules/objects/class_tabwidget.h b/src/modules/objects/class_tabwidget.h
new file mode 100644
index 00000000..acc76d36
--- /dev/null
+++ b/src/modules/objects/class_tabwidget.h
@@ -0,0 +1,61 @@
+#ifndef _CLASS_TABWIDGET_H_
+#define _CLASS_TABWIDGET_H_
+//mdm:
+// File : class_tabwidget.h
+// Creation date : Fri Feb 11 10:21:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include <qtabwidget.h>
+#include "class_widget.h"
+
+#include "object_macros.h"
+
+class KviKvsObject_tabwidget : public KviKvsObject_widget
+{
+ Q_OBJECT
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_tabwidget)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+ bool functionaddTab(KviKvsObjectFunctionCall *c);
+ bool functioninsertTab(KviKvsObjectFunctionCall *c);
+ bool functionsetTabToolTip(KviKvsObjectFunctionCall *c);
+ bool functionremoveTabToolTip(KviKvsObjectFunctionCall *c);
+ bool functionsetTabLabel(KviKvsObjectFunctionCall *c);
+ bool functionsetCurrentPage(KviKvsObjectFunctionCall *c);
+ bool functioncurrentPageIndex(KviKvsObjectFunctionCall *c);
+ bool functiontabLabel(KviKvsObjectFunctionCall *c);
+ bool functioncurrentTabLabel(KviKvsObjectFunctionCall *c);
+ bool functionsetMargin(KviKvsObjectFunctionCall *c);
+ bool functionmargin(KviKvsObjectFunctionCall *c);
+ bool functioncount(KviKvsObjectFunctionCall *c);
+ bool functionchangeTab(KviKvsObjectFunctionCall *c);
+ bool functionCurrentChangedEvent(KviKvsObjectFunctionCall *c);
+ bool functionremovePage(KviKvsObjectFunctionCall *c);
+ bool functionsetTabPosition(KviKvsObjectFunctionCall *c);
+
+protected slots:
+ void slotCurrentChanged(int);
+};
+
+#endif //!_CLASS_TABWIDGET_H_
diff --git a/src/modules/objects/class_tbrowser.cpp b/src/modules/objects/class_tbrowser.cpp
new file mode 100644
index 00000000..67dce8cb
--- /dev/null
+++ b/src/modules/objects/class_tbrowser.cpp
@@ -0,0 +1,143 @@
+//mdm:
+// File : class_tbrowser.cpp
+// Creation date : Fri Jan 28 14:21:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include <qtextbrowser.h>
+#include "class_tbrowser.h"
+#include "kvi_error.h"
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+
+/*
+ @doc: textbrowser
+ @keyterms:
+ textbrowser browser widget class,
+ @title:
+ textbrowser class
+ @type:
+ class
+ @short:
+ Provides a class that can display html pages.
+ @inherits:
+ [class]widget[/class]
+ @description:
+ Provides a class that can display html pages with hypertext navigation.
+ @functions:
+ !fn: $setSource(<file_name:string>)
+ With this you can display the page at szFile location (szFile include the path).
+ !fn: $backward()
+ Changes the document displayed to the previous document in the list of documents built by navigating links.
+ !fn: $forward()
+ Changes the document displayed to the next document in the list of documents built by navigating links.
+ !fn: $home()
+ Changes the document displayed to be the first document the browser displayed.
+ !fn: $reload()
+ Reloads the current set source.
+ !fn: $linkClickedEvent(<link_href:string>)
+ Triggered when a link is clicked by the user. The default implementation of this function
+ emits the "linkClicked" signal.
+ @signals:
+ !sg: $linkClicked(<link_href:string>)
+ This signal is emitted by the default implementation of the [classfnc]$linkClickedEvent[/classfnc]() function.
+*/
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_textbrowser,"textbrowser","multilineedit")
+ KVSO_REGISTER_HANDLER(KviKvsObject_textbrowser,"setSource",function_setSource)
+ KVSO_REGISTER_HANDLER(KviKvsObject_textbrowser,"forward",function_forward)
+ KVSO_REGISTER_HANDLER(KviKvsObject_textbrowser,"backward",function_backward)
+ KVSO_REGISTER_HANDLER(KviKvsObject_textbrowser,"home",function_home)
+ KVSO_REGISTER_HANDLER(KviKvsObject_textbrowser,"reload",function_reload)
+ KVSO_REGISTER_HANDLER(KviKvsObject_textbrowser,"linkClickedEvent",function_linkClickedEvent)
+KVSO_END_REGISTERCLASS(KviKvsObject_textbrowser)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_textbrowser,KviKvsObject_mledit)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_textbrowser)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_textbrowser)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_textbrowser)
+
+bool KviKvsObject_textbrowser::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ QTextBrowser * tb = new QTextBrowser(parentScriptWidget(), name());
+ setObject(tb, true);
+ connect(tb,SIGNAL(anchorClicked(const QString &,const QString &)),this,SLOT(anchorClicked(const QString &,const QString &)));
+ return true;
+}
+
+bool KviKvsObject_textbrowser::function_setSource(KviKvsObjectFunctionCall *c)
+{
+ QString szFile;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("file_name",KVS_PT_STRING,0,szFile)
+ KVSO_PARAMETERS_END(c)
+ if(!QFile::exists(szFile))
+ {
+ c->warning(__tr2qs("I can't find the specified file '%Q'."),&szFile);
+ return true;
+ }
+
+ if (widget()) ((QTextBrowser *)widget())->setSource(szFile);
+ return true;
+}
+
+bool KviKvsObject_textbrowser::function_forward(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) ((QTextBrowser *)widget())->forward();
+ return true;
+}
+
+bool KviKvsObject_textbrowser::function_backward(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) ((QTextBrowser *)widget())->backward();
+ return true;
+}
+
+bool KviKvsObject_textbrowser::function_home(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) ((QTextBrowser *)widget())->home();
+ return true;
+}
+
+bool KviKvsObject_textbrowser::function_reload(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) ((QTextBrowser *)widget())->reload();
+ return true;
+}
+
+void KviKvsObject_textbrowser::anchorClicked(const QString &szName,const QString &szLink)
+{
+ KviKvsVariantList parms(new KviKvsVariant(szLink));
+ callFunction(this,"linkClickedEvent",0,&parms);
+}
+
+bool KviKvsObject_textbrowser::function_linkClickedEvent(KviKvsObjectFunctionCall *c)
+{
+ emitSignal("linkClicked",c,c->params());
+ return true;
+}
+
+#include "m_class_tbrowser.moc"
diff --git a/src/modules/objects/class_tbrowser.h b/src/modules/objects/class_tbrowser.h
new file mode 100644
index 00000000..980bdc28
--- /dev/null
+++ b/src/modules/objects/class_tbrowser.h
@@ -0,0 +1,52 @@
+#ifndef _CLASS_TBROWSER_H_
+#define _CLASS_TBROWSER_H_
+//mdm:
+// File : class_tbrowser.h
+// Creation date : Fri Feb 28 14:21:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include <qtextbrowser.h>
+#include "class_widget.h"
+#include <qfile.h>
+#include "class_multilineedit.h"
+#include "object_macros.h"
+
+class KviKvsObject_textbrowser : public KviKvsObject_mledit
+{
+ Q_OBJECT
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_textbrowser)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+ bool function_setSource(KviKvsObjectFunctionCall *c);
+ bool function_forward(KviKvsObjectFunctionCall *c);
+ bool function_backward(KviKvsObjectFunctionCall *c);
+ bool function_home(KviKvsObjectFunctionCall *c);
+ bool function_reload(KviKvsObjectFunctionCall *c);
+ bool function_linkClickedEvent(KviKvsObjectFunctionCall *c);
+protected slots:
+ void anchorClicked(const QString &szName,const QString &szLink);
+};
+
+#endif //!_CLASS_TBROWSER_H_
diff --git a/src/modules/objects/class_toolbar.cpp b/src/modules/objects/class_toolbar.cpp
new file mode 100644
index 00000000..ed280bd0
--- /dev/null
+++ b/src/modules/objects/class_toolbar.cpp
@@ -0,0 +1,156 @@
+//mdm:
+// File : class_toolbar.cpp
+// Creation date : Tue Feb 22 22:12:55 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "class_toolbar.h"
+#include "kvi_error.h"
+#include "kvi_debug.h"
+#include "kvi_tal_toolbar.h"
+#include "kvi_tal_mainwindow.h"
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+#include "class_mainwindow.h"
+
+/*
+ @doc: toolbar
+ @keyterms:
+ toolbar object class,
+ @title:
+ toolbar class
+ @type:
+ class
+ @short:
+ Provides a toolbar for mainwindow widget.
+ @inherits:
+ [class]object[/class]
+ [class]widget[/class]
+ @description:
+ The toolbar class provides a movable panel containing widgets such as tool buttons.
+ @functions:
+ !fn: $addSeparator()
+ Adds a separator to the right/bottom of the toolbar.
+ !fn: $setLabel(<text:string>)
+ Sets the toolbar's label.
+ !fn: <string> $label()
+ Returns the toolbar's label.
+ !fn: $setStretchableWidget(<widget:object>)
+ Sets the <widget> to be expanded.
+ !fn: $clear()
+ Deletes all the toolbar's child widgets.
+
+*/
+
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_toolbar,"toolbar","object")
+ KVSO_REGISTER_HANDLER(KviKvsObject_toolbar,"addSeparator", functionaddSeparator)
+ KVSO_REGISTER_HANDLER(KviKvsObject_toolbar,"setLabel", functionsetLabel)
+ KVSO_REGISTER_HANDLER(KviKvsObject_toolbar,"label", functionlabel)
+ KVSO_REGISTER_HANDLER(KviKvsObject_toolbar,"setStretchableWidget", functionsetStretchableWidget)
+ KVSO_REGISTER_HANDLER(KviKvsObject_toolbar,"clear", functionclear)
+KVSO_END_REGISTERCLASS(KviKvsObject_toolbar)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_toolbar,KviKvsObject_widget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_toolbar)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_toolbar)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_toolbar)
+
+bool KviKvsObject_toolbar::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ if (!parentObject())
+ {
+ pContext->warning(__tr2qs("the toolbar cannot be a parent-widget!"));
+ return true;
+ }
+ if(parentObject()->inherits("KviKvsObject_mainwindow"))
+ {
+ setObject(new KviTalToolBar(name(), ((KviTalMainWindow *)parentScriptWidget())), true);
+ }
+ else
+ {
+ pContext->warning(__tr2qs("The parent-widget isn't a MainWindow."));
+ }
+
+ return true;
+}
+
+bool KviKvsObject_toolbar::functionaddSeparator(KviKvsObjectFunctionCall *c)
+{
+ if(widget()) ((KviTalToolBar *)widget())->addSeparator();
+ return true;
+}
+bool KviKvsObject_toolbar::functionsetLabel(KviKvsObjectFunctionCall *c)
+{
+ QString szLabel;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("label",KVS_PT_STRING,0,szLabel)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((KviTalToolBar *)widget())->setLabel(szLabel);
+ return true;
+}
+bool KviKvsObject_toolbar::functionlabel(KviKvsObjectFunctionCall *c)
+{
+ if (widget()) c->returnValue()->setString(((KviTalToolBar *)widget())->label());
+ return true;
+}
+bool KviKvsObject_toolbar::functionsetStretchableWidget(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject *ob;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETERS_END(c)
+ ob=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if (!widget()) return true;
+ if (!ob)
+ {
+ c->warning(__tr2qs("Widget parameter is not an object"));
+ return true;
+ }
+ if (!ob->object())
+ {
+ c->warning(__tr2qs("Widget parameter is not a valid object"));
+ return true;
+ }
+ if(!ob->object()->inherits("KviKvsObject_widget"))
+ {
+ c->warning(__tr2qs("Widget object required"));
+ return TRUE;
+ }
+#ifndef COMPILE_USE_QT4
+ // FIXME: no support for this in Qt4 ?
+ if(widget()) ((KviTalToolBar *)widget())->setStretchableWidget(((QWidget *)(ob->object())));
+#endif //!COMPILE_USE_QT4
+ return true;
+}
+bool KviKvsObject_toolbar::functionclear(KviKvsObjectFunctionCall *c)
+{
+ if (widget())
+ ((KviTalToolBar *)object())->clear();
+ return true;
+}
+
+#include "m_class_toolbar.moc"
+
diff --git a/src/modules/objects/class_toolbar.h b/src/modules/objects/class_toolbar.h
new file mode 100644
index 00000000..1912e639
--- /dev/null
+++ b/src/modules/objects/class_toolbar.h
@@ -0,0 +1,50 @@
+#ifndef _CLASS_TOOLBAR_H_
+#define _CLASS_TOOLBAR_H_
+//mdm:
+// File : class_toolbar.h
+// Creation date : Tue Feb 22 22:12:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+
+
+#include "class_widget.h"
+#include "object_macros.h"
+
+class KviKvsObject_toolbar : public KviKvsObject_widget
+{
+ Q_OBJECT
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_toolbar)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+ bool functionaddSeparator(KviKvsObjectFunctionCall *c);
+ bool functionsetLabel(KviKvsObjectFunctionCall *c);
+ bool functionlabel(KviKvsObjectFunctionCall *c);
+ bool functionsetStretchableWidget(KviKvsObjectFunctionCall *c);
+ bool functionclear(KviKvsObjectFunctionCall *c);
+};
+
+
+#endif //!_CLASS_TOOLBAR_H_
diff --git a/src/modules/objects/class_toolbutton.cpp b/src/modules/objects/class_toolbutton.cpp
new file mode 100644
index 00000000..032b0c60
--- /dev/null
+++ b/src/modules/objects/class_toolbutton.cpp
@@ -0,0 +1,341 @@
+//mdm:
+// File : class_toolbutton.cpp
+// Creation date : Wed Feb 23 16:39:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "class_toolbutton.h"
+#include "kvi_error.h"
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+#include "kvi_tal_popupmenu.h"
+/*
+ @doc: toolbutton
+ @keyterms:
+ toolbutton object class,
+ @title:
+ toolbutton class
+ @type:
+ class
+ @short:
+ Provides a toolbutton for toolbar widget.
+ @inherits:
+ [class]object[/class]
+ [class]widget[/class]
+ @description:
+ The toolbutton class provides a quick-access button to commands or options, usually used inside a ToolBar.
+ @functions:
+ !fn:$setImage(<icon_id:string>)
+ Sets the image for this button.
+ !fn:$setUsesBigPixmap(<bEnabled:boolean>)
+ Sets whether this toolbutton uses big pixmaps to enable.
+ !fn:$usesBigPixmap(<bEnabled:boolean>)
+ This property holds whether this toolbutton uses big pixmaps.
+ !fn:setUsesTextLabel(<bEnabled:boolean>)
+ Sets whether the toolbutton show a texlabel below the pixmap of the button.
+ !fn:$usesTextLabel()
+ Return 1 if the setUsesTextLabel is enabled, otherwise return 0.
+ !fn:$setTextLabel(<text:String>,[tooltip:string])
+ Sets the label of this button to <text> and automatically sets it as a tool tip if <tip> is TRUE.
+ !fn:<string> $textLabel()
+ Returns the label of tthe button.
+ !fn:$setAutoRaise(<bAutoraise:boolean>)
+ Sets whether auto-raising is enabled.
+ !fn:<boolean> $autoRaise()
+ Returns 1 if autoRaise is enabled, otherwise returns 0.
+ !fn:$setToggleButton(<bToggle:boolean>)
+ Sets whether the tool button is a toggle button 1 enable, 0 disable.
+ !fn:<boolean> $toggle()
+ Toggles the state of the tool button.
+ !fn:$setOn(<bEnabled:boolean>)
+ Sets whether the tool button is on to the bool value: 1 enable, 0 disable.
+ // findme
+ !fn:$setPopup (<toolbutton:object>)
+ !fn:$setPopupDelay (<int delay>)
+ Sets the time delay between pressing the button and the appearance of the associated popup menu in milliseconds to delay.[br]
+ A good value is 100.
+ !fn:<integer> $pupupDelay()
+ Returns the time delay between pressing the button and the appearance of the associated popup menu in milliseconds.
+ !fn:$openPopup()
+ Opens the associated popup menu. If there is no such menu, this function does nothing.
+ !fn:setTextPosition(<text_position:string>)
+ Sets the position of the tool button's textLabel in relation to the tool button's icon.[br]
+ Valid texpos values are:[br]
+ - BesideIcon : The text appears beside the icon.[br]
+ - BelowIcon : The text appears below the icon.
+ !fn:<string> $textPosition()
+ Returns the position of the text label of this button.
+ !fn: $clickEvent()
+ This function is called when the toolbutton is clicked.[br]
+ You can reimplement it to handle the user click events.[br]
+ The default implementation emits the [classfnc]$clicked[/classfnc]() signal.
+ @signals:
+ !sg: $clicked()
+ This signal is emitted by the default implementation of [classfnc]$clickEvent[/classfnc]().[br]
+*/
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_toolbutton,"toolbutton","widget")
+ KVSO_REGISTER_HANDLER(KviKvsObject_toolbutton,"setImage", functionsetImage)
+ KVSO_REGISTER_HANDLER(KviKvsObject_toolbutton,"setUsesBigPixmap", functionsetUsesBigPixmap)
+ KVSO_REGISTER_HANDLER(KviKvsObject_toolbutton,"usesBigPixmap", functionusesBigPixmap)
+ KVSO_REGISTER_HANDLER(KviKvsObject_toolbutton,"setUsesTextLabel", functionsetUsesTextLabel)
+ KVSO_REGISTER_HANDLER(KviKvsObject_toolbutton,"usesTextLabel", functionusesTextLabel)
+ KVSO_REGISTER_HANDLER(KviKvsObject_toolbutton,"setAutoRaise", function_setAutoRaise)
+ KVSO_REGISTER_HANDLER(KviKvsObject_toolbutton,"autoRaise", function_autoRaise)
+ KVSO_REGISTER_HANDLER(KviKvsObject_toolbutton,"setTextLabel", functionsetTextLabel)
+ KVSO_REGISTER_HANDLER(KviKvsObject_toolbutton,"textLabel", functiontextLabel)
+ KVSO_REGISTER_HANDLER(KviKvsObject_toolbutton,"setPopup", functionsetPopup)
+ KVSO_REGISTER_HANDLER(KviKvsObject_toolbutton,"openPopup", functionopenPopup)
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_toolbutton,"setToggleButton", functionsetToggleButton)
+ KVSO_REGISTER_HANDLER(KviKvsObject_toolbutton,"toggle", functiontoggle)
+ KVSO_REGISTER_HANDLER(KviKvsObject_toolbutton,"setOn", functionsetOn)
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_toolbutton,"setPopupDelay", functionsetPopupDelay)
+ KVSO_REGISTER_HANDLER(KviKvsObject_toolbutton,"popupDelay", functionpopupDelay)
+ KVSO_REGISTER_HANDLER(KviKvsObject_toolbutton,"setTextPosition", functionsetTextPosition)
+ KVSO_REGISTER_HANDLER(KviKvsObject_toolbutton,"textPosition", functiontextPosition)
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_toolbutton,"clickEvent",function_clickEvent)
+KVSO_END_REGISTERCLASS(KviKvsObject_toolbutton)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_toolbutton,KviKvsObject_widget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_toolbutton)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_toolbutton)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_toolbutton)
+
+bool KviKvsObject_toolbutton::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ setObject(new QToolButton(parentScriptWidget(), name()), true);
+ connect(widget(),SIGNAL(clicked()),this,SLOT(slotClicked()));
+ return true;
+}
+
+bool KviKvsObject_toolbutton::functionsetImage(KviKvsObjectFunctionCall *c)
+{
+ QString icon;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("icon_id",KVS_PT_STRING,0,icon)
+ KVSO_PARAMETERS_END(c)
+ if (!widget()) return true;
+ QPixmap * pix = g_pIconManager->getImage(icon);
+ if(pix){
+ #ifdef COMPILE_USE_QT4
+ ((QToolButton *)widget())->setIconSet(QIconSet(*pix));
+ #else
+ ((QToolButton *)widget())->setIconSet(QIconSet(*pix,QIconSet::Small));
+ #endif
+ }
+ else
+ ((QToolButton *)widget())->setIconSet(QIconSet());
+ return true;
+}
+bool KviKvsObject_toolbutton::functionsetUsesBigPixmap(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((QToolButton *)widget())->setUsesBigPixmap(bEnabled);
+ return true;
+}
+bool KviKvsObject_toolbutton::functionusesBigPixmap(KviKvsObjectFunctionCall *c)
+{
+ if (widget())
+ c->returnValue()->setBoolean(((QToolButton *)widget())->usesBigPixmap());
+ return true;
+}
+bool KviKvsObject_toolbutton::functionsetUsesTextLabel(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((QToolButton *)widget())->setUsesTextLabel(bEnabled);
+ return true;
+}
+bool KviKvsObject_toolbutton::functionusesTextLabel(KviKvsObjectFunctionCall *c)
+{
+ if (widget())
+ c->returnValue()->setBoolean(((QToolButton *)widget())->usesTextLabel());
+ return true;
+}
+bool KviKvsObject_toolbutton::function_setAutoRaise(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((QToolButton *)widget())->setAutoRaise(bEnabled);
+ return true;
+}
+bool KviKvsObject_toolbutton::function_autoRaise(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ c->returnValue()->setBoolean(((QToolButton *)widget())->autoRaise());
+ return true;
+}
+bool KviKvsObject_toolbutton::functionsetOn(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((QToolButton *)widget())->setOn(bEnabled);
+ return true;
+}
+
+bool KviKvsObject_toolbutton::functionsetToggleButton(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((QToolButton *)widget())->setToggleButton(bEnabled);
+ return true;
+}
+bool KviKvsObject_toolbutton::functiontoggle(KviKvsObjectFunctionCall *c)
+{
+ if (widget())
+ ((QToolButton *)widget())->toggle();
+ return true;
+}
+
+bool KviKvsObject_toolbutton::functionsetTextLabel(KviKvsObjectFunctionCall *c)
+{
+ QString szLabel,szTip;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("label",KVS_PT_STRING,0,szLabel)
+ KVSO_PARAMETER("tooltip",KVS_PT_STRING,KVS_PF_OPTIONAL,szTip)
+ KVSO_PARAMETERS_END(c)
+ if(!widget()) return true;
+
+ #ifdef COMPILE_USE_QT4
+ ((QToolButton *)widget())->setText(szLabel);
+ if (!szTip.isEmpty()) ((QToolButton *)widget())->setToolTip(szTip);
+ #else
+ if (szTip.isEmpty()) ((QToolButton *)widget())->setTextLabel(szLabel);
+ else ((QToolButton *)widget())->setTextLabel(szLabel,szTip);
+ #endif
+ return true;
+}
+bool KviKvsObject_toolbutton::functiontextLabel(KviKvsObjectFunctionCall *c)
+{
+ if (widget())
+ c->returnValue()->setString(((QToolButton *)widget())->textLabel());
+ return true;
+}
+bool KviKvsObject_toolbutton::functionsetPopup(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject *ob;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETERS_END(c)
+ ob=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if (!ob)
+ {
+ c->warning(__tr2qs("Widget parameter is not an object"));
+ return true;
+ }
+ if (!ob->object())
+ {
+ c->warning(__tr2qs("Widget parameter is not a valid object"));
+ return true;
+ }
+ if(!ob->object()->inherits("KviKvsObject_popupmenu"))
+ {
+ c->warning(__tr2qs("Can't add a non - popupmenu object"));
+ return TRUE;
+ }
+ if(widget())
+ ((QToolButton *)widget())->setPopup(((KviTalPopupMenu *)(ob->object())));
+ return true;
+}
+bool KviKvsObject_toolbutton::functionopenPopup(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ ((QToolButton *)widget())->openPopup();
+ return true;
+}
+bool KviKvsObject_toolbutton::functionsetPopupDelay(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t uDelay;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("delay",KVS_PT_UNSIGNEDINTEGER,0,uDelay)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((QToolButton *)widget())->setPopupDelay(uDelay);
+ return true;
+}
+bool KviKvsObject_toolbutton::functionpopupDelay(KviKvsObjectFunctionCall *c)
+{
+ if (widget())
+ c->returnValue()->setInteger(((QToolButton *)widget())->popupDelay());
+ return true;
+}
+bool KviKvsObject_toolbutton::functionsetTextPosition(KviKvsObjectFunctionCall *c)
+{
+ QString szPos;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("position",KVS_PT_STRING,0,szPos)
+ KVSO_PARAMETERS_END(c)
+ if(!widget())return true;
+ if(KviQString::equalCI(szPos,"BesideIcon"))
+ ((QToolButton *)widget())->setTextPosition(QToolButton::BesideIcon);
+ else if(KviQString::equalCI(szPos,"BelowIcon"))
+ ((QToolButton *)widget())->setTextPosition(QToolButton::BelowIcon);
+ else c->warning(__tr2qs("Unknown text position '%Q'"),&szPos);
+ return true;
+}
+bool KviKvsObject_toolbutton::functiontextPosition(KviKvsObjectFunctionCall *c)
+{
+ if(!widget()) return true;
+ QString szPos="BelowIcon";
+ if ((((QToolButton *)widget())->textPosition())==(QToolButton::BesideIcon))
+ szPos="BesideIcon";
+ c->returnValue()->setString(szPos);
+ return true;
+}
+bool KviKvsObject_toolbutton::function_clickEvent(KviKvsObjectFunctionCall *c)
+{
+ emitSignal("clicked",c);
+ return true;
+}
+
+void KviKvsObject_toolbutton::slotClicked()
+{
+ KviKvsVariantList *params=0;
+ callFunction(this,"clickEvent",params);
+}
+
+#include "m_class_toolbutton.moc"
+
diff --git a/src/modules/objects/class_toolbutton.h b/src/modules/objects/class_toolbutton.h
new file mode 100644
index 00000000..2cd4dfec
--- /dev/null
+++ b/src/modules/objects/class_toolbutton.h
@@ -0,0 +1,69 @@
+#ifndef _CLASS_TOOLBUTTON_H_
+#define _CLASS_TOOLBUTTON_H_
+
+//mdm:
+// File : class_toolbutton.h
+// Creation date : Wed Feb 23 16:39:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include <qtoolbutton.h>
+#include "class_widget.h"
+#include "object_macros.h"
+
+class KviKvsObject_toolbutton : public KviKvsObject_widget
+{
+ Q_OBJECT
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_toolbutton)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+ bool functionsetImage(KviKvsObjectFunctionCall *c);
+ bool functionsetUsesBigPixmap(KviKvsObjectFunctionCall *c);
+ bool functionusesBigPixmap(KviKvsObjectFunctionCall *c);
+ bool functionsetUsesTextLabel(KviKvsObjectFunctionCall *c);
+ bool functionusesTextLabel(KviKvsObjectFunctionCall *c);
+ bool functionsetTextLabel(KviKvsObjectFunctionCall *c);
+ bool functiontextLabel(KviKvsObjectFunctionCall *c);
+ bool functionsetPopup(KviKvsObjectFunctionCall *c);
+ bool functionopenPopup(KviKvsObjectFunctionCall *c);
+ bool functionsetOn(KviKvsObjectFunctionCall *c);
+ bool functionsetToggleButton(KviKvsObjectFunctionCall *c);
+ bool functiontoggle(KviKvsObjectFunctionCall *c);
+ bool functionsetPopupDelay(KviKvsObjectFunctionCall *c);
+ bool functionpopupDelay(KviKvsObjectFunctionCall *c);
+ bool functionsetTextPosition(KviKvsObjectFunctionCall *c);
+ bool functiontextPosition(KviKvsObjectFunctionCall *c);
+
+ bool function_setAutoRaise(KviKvsObjectFunctionCall *c);
+ bool function_autoRaise(KviKvsObjectFunctionCall *c);
+ bool function_clickEvent(KviKvsObjectFunctionCall *c);
+signals:
+ void clicked();
+protected slots:
+ void slotClicked();
+};
+
+
+#endif //!_CLASS_TOOLBUTTON_H_
diff --git a/src/modules/objects/class_urllabel.cpp b/src/modules/objects/class_urllabel.cpp
new file mode 100644
index 00000000..544153c2
--- /dev/null
+++ b/src/modules/objects/class_urllabel.cpp
@@ -0,0 +1,330 @@
+//vim: ts=8
+// File : class_urllabel.cpp
+// Creation date : Thu Feb 18 1:27:44 CEST 2001 by Krzysztof Godlewski
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Krzysztof Godlewski
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "class_urllabel.h"
+
+#include "kvi_debug.h"
+#include "kvi_locale.h"
+#include "kvi_error.h"
+
+#include "kvi_app.h"
+
+#include "kvi_window.h"
+#include "kvi_kvs_script.h"
+#ifdef COMPILE_USE_QT4
+#include <QMouseEvent>
+#define QT_LEFT_BUTTON Qt::LeftButton
+#else
+#define QT_LEFT_BUTTON QEvent::LeftButton
+#endif
+//#warning "Functions to change colors for different states"
+//#warning "$setUnderline(), $underline()"
+
+//extern KviApp * g_pApp;
+/*static KviScriptObjectClass * g_pUrlLabelClass = 0;
+
+static KviScriptObject * urlLabelClassCreateInstance(KviScriptObjectClass * c,
+ KviScriptObject * p, const char * n)
+{
+ return new KviScriptUrlLabelObject(c, p, n);
+}
+
+KviScriptUrlLabelObject::KviScriptUrlLabelObject(KviScriptObjectClass * c, \
+KviScriptObject * p, const char *n) : KviScriptLabelObject(c, p, n)
+{
+ m_normalClr = QColor("black");
+ m_enterClr = QColor("blue");
+ m_activeClr = QColor("red");
+ m_useSingleClick = true;
+// ((QLabel *)widget())->setAutoResize(true);
+ //widget()->setCursor(Qt::pointingHandCursor);
+ //((KviScriptWidgetObject: * )p)->widget()->setCursor(Qt::pointingHandCursor);
+}
+
+KviScriptUrlLabelObject::~KviScriptUrlLabelObject()
+{
+}
+
+bool KviScriptUrlLabelObject::eventFilter(QObject * o, QEvent * e)
+{
+ QPalette pal = ((QLabel *)widget())->palette();
+
+ switch(e->type())
+ {
+ case QEvent::Enter:
+ pal.setColor(QColorGroup::Foreground, m_enterClr);
+ break;
+ case QEvent::Leave:
+ // this doesn't work...
+ if(((QMouseEvent *)e)->state() & QEvent::LeftButton)
+ pal.setColor(QColorGroup::Foreground, \
+ m_activeClr);
+ else
+ pal.setColor(QColorGroup::Foreground, \
+ m_normalClr);
+ break;
+ case QEvent::MouseButtonRelease:
+ pal.setColor(QColorGroup::Foreground, m_enterClr);
+ // perform actions here
+ if(!m_lastClickWasDbl && !m_useSingleClick)
+ break;
+ if(!m_action.isEmpty())
+ {
+
+ }
+ break;
+ case QEvent::MouseButtonPress:
+ m_lastClickWasDbl = false;
+ if(!((QMouseEvent * )e)->button() & \
+ QEvent::LeftButton || !m_useSingleClick)
+ break;
+ pal.setColor(QColorGroup::Foreground, m_activeClr);
+ break;
+ case QEvent::MouseButtonDblClick:
+ m_lastClickWasDbl = true;
+ if(m_useSingleClick)
+ break;
+ pal.setColor(QColorGroup::Foreground, m_activeClr);
+ break;
+ default: // make gcc happy
+ break;
+ }
+
+ ((QLabel *)widget())->setPalette(pal);
+
+ return false;
+}
+*/
+//#warning "Docs for urllabel"
+
+/*
+ @doc: urllabel
+ @keyterms:
+ display url, link
+ @title:
+ urllabel class
+ @type:
+ class
+ @short:
+ Displays an URI allowing to perform actions on click
+ @inherits:
+ [class]object[/class]
+ [class]widget[/class]
+ [class]label[/class]
+ @description:
+ This widget allows you to bind specific action on click. It can
+ open an url, or execute any KVI++ code. The text color reacts on
+ cursor movements and clicks.
+ @functions:
+ !fn: $setUrl(<text:string>)
+ Sets the url to be opened when the links is activated. The way
+ the label opens the url is defined in KVirc config dialog.
+ !fn: <string> $url()
+ Returns the currently set url.
+ !fn: $setAction(<text:string>)
+ Sets the action to be performed when the link is triggered. It
+ can be any valid KVI++ code. Note that all KVirc commands must
+ be prefixed with a '/', just as if you typed them in the input
+ widget.
+ !fn: <string> $action()
+ Returns currently set action string.
+ !fn: $setText(<text>)
+ Sets the label's text. Reimplemented from internal reasons.
+ !fn: $setCursorChange(<bEnabled:boolean>)
+ Tells the label wheather to change or not the shape of cursor,
+ when it is above the widget. Default is false.
+ !fn: <boolean> $cursorChange()
+ Returns true if the cursor changes over the label, false if not.
+ !fn: $setUseSingleClick(<bEnabled:boolean>)
+ If <bEnabled> is true, the label will react on single clicks,
+ otherwise only double clicks will trigger the link.
+ !fn: <boolean> $useSingleClick()
+ Returns true if the label reacts on single clicks, false if it
+ reacts only on double clicks.
+*/
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_urlabel,"urllabel","label")
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_urlabel,"setUrl",functionsetUrl)
+ KVSO_REGISTER_HANDLER(KviKvsObject_urlabel,"url",functionurl)
+ KVSO_REGISTER_HANDLER(KviKvsObject_urlabel,"setAction",functionsetAction)
+ KVSO_REGISTER_HANDLER(KviKvsObject_urlabel,"action",functionaction)
+ KVSO_REGISTER_HANDLER(KviKvsObject_urlabel,"setText",functionsetText)
+ KVSO_REGISTER_HANDLER(KviKvsObject_urlabel,"setCursorChange",functionsetCursorChange)
+ KVSO_REGISTER_HANDLER(KviKvsObject_urlabel,"cursorChange",functioncursorChange)
+ KVSO_REGISTER_HANDLER(KviKvsObject_urlabel,"setUseSingleClick",functionsetUseSingleClick)
+ KVSO_REGISTER_HANDLER(KviKvsObject_urlabel,"useSingleClick",functionuseSingleClick)
+
+KVSO_END_REGISTERCLASS(KviKvsObject_urlabel)
+
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_urlabel,KviKvsObject_label)
+
+ m_normalClr = QColor("black");
+ m_enterClr = QColor("blue");
+ m_activeClr = QColor("red");
+ m_useSingleClick = true;
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_urlabel)
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_urlabel)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_urlabel)
+
+bool KviKvsObject_urlabel::eventFilter(QObject * o, QEvent * e)
+{
+ QPalette pal = ((QLabel *)widget())->palette();
+
+ switch(e->type())
+ {
+ case QEvent::Enter:
+ pal.setColor(QColorGroup::Foreground, m_enterClr);
+ break;
+ case QEvent::Leave:
+ // this doesn't work...
+ if(((QMouseEvent *)e)->state() & QT_LEFT_BUTTON)
+ pal.setColor(QColorGroup::Foreground, \
+ m_activeClr);
+ else
+ pal.setColor(QColorGroup::Foreground, \
+ m_normalClr);
+ break;
+ case QEvent::MouseButtonRelease:
+ pal.setColor(QColorGroup::Foreground, m_enterClr);
+ // perform actions here
+ if(!m_lastClickWasDbl && !m_useSingleClick)
+ break;
+ if(!m_action.isEmpty())
+ {
+ KviKvsScript kvs("commandline",m_action);
+ kvs.run(g_pActiveWindow,0,0/*,KviKvsScript::AssumeLocals*/);
+
+ } else if(!m_url.isEmpty()) {
+ KviKvsScript kvs("commandline","openurl "+m_url);
+ kvs.run(g_pActiveWindow,0,0/*,KviKvsScript::AssumeLocals*/);
+ }
+ break;
+ case QEvent::MouseButtonPress:
+ m_lastClickWasDbl = false;
+ if(!((QMouseEvent * )e)->button() & \
+ QT_LEFT_BUTTON || !m_useSingleClick)
+ break;
+ pal.setColor(QColorGroup::Foreground, m_activeClr);
+ break;
+ case QEvent::MouseButtonDblClick:
+ m_lastClickWasDbl = true;
+ if(m_useSingleClick)
+ break;
+ pal.setColor(QColorGroup::Foreground, m_activeClr);
+ break;
+ default: // make gcc happy
+ break;
+ }
+
+ ((QLabel *)widget())->setPalette(pal);
+
+ return false;
+}
+bool KviKvsObject_urlabel::functionsetUrl(KviKvsObjectFunctionCall *c)
+{
+ QString szUrl;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("url",KVS_PT_STRING,0,szUrl)
+ KVSO_PARAMETERS_END(c)
+ if(!widget()) return true;
+ if(szUrl.isEmpty()){
+ c->error(__tr2qs("Not Enough Parameters"));
+ return false;
+ }
+ m_url = szUrl;
+ return true;
+}
+bool KviKvsObject_urlabel::functionurl(KviKvsObjectFunctionCall *c)
+{
+ c->returnValue()->setString(m_url);
+ return true;
+}
+bool KviKvsObject_urlabel::functionsetAction(KviKvsObjectFunctionCall *c)
+{
+ QString szAction;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("action",KVS_PT_STRING,0,szAction)
+ KVSO_PARAMETERS_END(c)
+ if(!widget()) return true;
+ if(szAction.isEmpty()){
+ c->error(__tr2qs("Not Enough Parameters"));
+ return false;
+ }
+ m_action = szAction;
+ return true;
+}
+bool KviKvsObject_urlabel::functionsetText(KviKvsObjectFunctionCall *c)
+{
+ QString szText;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szText)
+ KVSO_PARAMETERS_END(c)
+ if(!widget()) return true;
+ ((QLabel *)widget())->setText(szText);
+ ((QLabel *)widget())->setFixedSize(((QLabel *)widget())->sizeHint());
+ return true;
+}
+bool KviKvsObject_urlabel::functionaction(KviKvsObjectFunctionCall *c)
+{
+ c->returnValue()->setString(m_action);
+ return true;
+}
+bool KviKvsObject_urlabel::functionsetCursorChange(KviKvsObjectFunctionCall *c)
+{
+ bool bFlag;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOLEAN,0,bFlag)
+ KVSO_PARAMETERS_END(c)
+ if(!widget())
+ return true;
+ if(m_changeCursor = bFlag)
+ widget()->setCursor(Qt::pointingHandCursor);
+ else
+ widget()->setCursor(Qt::arrowCursor);
+ return true;
+}
+bool KviKvsObject_urlabel::functionsetUseSingleClick(KviKvsObjectFunctionCall *c)
+{
+ bool bFlag;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOLEAN,0,bFlag)
+ KVSO_PARAMETERS_END(c)
+ m_useSingleClick = bFlag;
+ return true;
+}
+bool KviKvsObject_urlabel::functionuseSingleClick(KviKvsObjectFunctionCall *c)
+{
+ c->returnValue()->setBoolean(m_useSingleClick);
+ return true;
+}
+bool KviKvsObject_urlabel::functioncursorChange(KviKvsObjectFunctionCall *c)
+{
+ c->returnValue()->setBoolean(m_changeCursor);
+ return true;
+}
diff --git a/src/modules/objects/class_urllabel.h b/src/modules/objects/class_urllabel.h
new file mode 100644
index 00000000..b9ee35d6
--- /dev/null
+++ b/src/modules/objects/class_urllabel.h
@@ -0,0 +1,64 @@
+#ifndef _CLASS_URLLABEL_H_
+#define _CLASS_URLLABEL_H_
+//vim: ts=8
+// File : class_urllabel.h
+// Creation date : Thu Feb 18 1:28:23 CEST 2001 by Krzysztof Godlewski
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Krzysztof Godlewski
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+
+#include "class_label.h"
+#include "object_macros.h"
+
+class KviKvsObject_urlabel : public KviKvsObject_label
+{
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_urlabel)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool eventFilter(QObject *, QEvent *);
+
+ bool functionsetUrl(KviKvsObjectFunctionCall *c);
+ bool functionsetAction(KviKvsObjectFunctionCall *c);
+ bool functionurl(KviKvsObjectFunctionCall *c);
+ bool functionaction(KviKvsObjectFunctionCall *c);
+ bool functionsetText(KviKvsObjectFunctionCall *c);
+ bool functionsetCursorChange(KviKvsObjectFunctionCall *c);
+ bool functioncursorChange(KviKvsObjectFunctionCall *c);
+ bool functionsetUseSingleClick(KviKvsObjectFunctionCall *c);
+ bool functionuseSingleClick(KviKvsObjectFunctionCall *c);
+
+ QString m_url;
+ QString m_action;
+
+ QColor m_normalClr;
+ QColor m_enterClr;
+ QColor m_activeClr;
+
+ bool m_changeCursor;
+ bool m_useSingleClick;
+
+ bool m_lastClickWasDbl;
+
+};
+
+#endif // !_CLASS_URLLABEL_H_
diff --git a/src/modules/objects/class_vbox.cpp b/src/modules/objects/class_vbox.cpp
new file mode 100644
index 00000000..477a5b69
--- /dev/null
+++ b/src/modules/objects/class_vbox.cpp
@@ -0,0 +1,128 @@
+//
+// File : class_vbox.cpp
+// Creation date : Wed Mar 01 2005 23:00:01 by Alessandro Carbone & Tonino Imbesi
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#define _KVI_DEBUG_CHECK_RANGE_
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+
+#include "class_vbox.h"
+
+/*
+ @doc: vbox
+ @keyterms:
+ vbox object class, child widgets
+ @title:
+ vbox class
+ @type:
+ class
+ @short:
+ Manages child widget vertical geometry
+ @inherits:
+ [class]object[/class]
+ @description:
+ The vbox class widget provides vertical geometry management for its child widgets.
+ @functions:
+ !fn: $setSpacing(<spacing:int>)
+ Sets the default spacing of the widgets in pixels
+ !fn: $setMargin(<margin:int>)
+ Sets the dimension of the layout margin : the distance from the border to the outermost child widget edges.
+ !fn: $setStretchFactor(<widget:hobject>,<stretch:uint>)
+ Sets the stretch factor of widget to stretch.
+*/
+
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_vbox,"vbox","widget")
+ KVSO_REGISTER_HANDLER(KviKvsObject_vbox,"setMargin", functionsetMargin)
+ KVSO_REGISTER_HANDLER(KviKvsObject_vbox,"setSpacing", functionsetSpacing)
+ KVSO_REGISTER_HANDLER(KviKvsObject_vbox,"setStretchFactor", functionsetStretchFactor )
+KVSO_END_REGISTERCLASS(KviKvsObject_vbox)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_vbox,KviKvsObject_widget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_vbox)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_vbox)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_vbox)
+
+bool KviKvsObject_vbox::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ setObject(new KviTalVBox(parentScriptWidget()), true);
+ return true;
+}
+
+bool KviKvsObject_vbox::functionsetMargin(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iMargin;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("margin",KVS_PT_INT,0,iMargin)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((KviTalVBox *)widget())->setMargin(iMargin);
+ return true;
+}
+
+bool KviKvsObject_vbox::functionsetSpacing(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iSpacing;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("spacing",KVS_PT_INT,0,iSpacing)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) ((KviTalVBox *)widget())->setSpacing(iSpacing);
+ return true;
+}
+
+bool KviKvsObject_vbox::functionsetStretchFactor(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject * pObject;
+ kvs_hobject_t hObject;
+ kvs_uint_t uStretch;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETER("stretch",KVS_PT_UNSIGNEDINTEGER,0,uStretch)
+ KVSO_PARAMETERS_END(c)
+ pObject=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if(!widget())return true;
+ if (!pObject)
+ {
+ c->warning(__tr2qs("Widget parameter is not an object"));
+ return true;
+ }
+ if (!pObject->object())
+ {
+ c->warning(__tr2qs("Widget parameter is not a valid object"));
+ return true;
+ }
+ if(!pObject->object()->isWidgetType())
+ {
+ c->warning(__tr2qs("Can't add a non-widget object"));
+ return true;
+ }
+
+ if(((KviKvsObject_widget *)pObject)->widget()->parentWidget() != widget())
+ {
+ c->warning(__tr2qs("The widget must be a child of this vbox"));
+ return true;
+ }
+ ((KviTalVBox *)widget())->setStretchFactor(((QWidget *)(pObject->object())),uStretch);
+ return true;
+} \ No newline at end of file
diff --git a/src/modules/objects/class_vbox.h b/src/modules/objects/class_vbox.h
new file mode 100644
index 00000000..d6b9d1cf
--- /dev/null
+++ b/src/modules/objects/class_vbox.h
@@ -0,0 +1,45 @@
+#ifndef _CLASS_VBOX_H_
+#define _CLASS_VBOX_H_
+//
+// File : class_vbox.h
+// Creation date : Wed Mar 01 2005 23:00:01 by Alessandro Carbone & Tonino Imbesi
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include "kvi_string.h"
+
+#include "class_widget.h"
+#include "kvi_tal_vbox.h"
+#include "object_macros.h"
+
+class KviKvsObject_vbox : public KviKvsObject_widget
+{
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_vbox)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+ bool functionsetMargin(KviKvsObjectFunctionCall *c);
+ bool functionsetSpacing(KviKvsObjectFunctionCall *c);
+ bool functionsetStretchFactor(KviKvsObjectFunctionCall *c);
+
+};
+
+
+#endif //_CLASS_HBOX_H_
diff --git a/src/modules/objects/class_widget.cpp b/src/modules/objects/class_widget.cpp
new file mode 100644
index 00000000..d248c98b
--- /dev/null
+++ b/src/modules/objects/class_widget.cpp
@@ -0,0 +1,1745 @@
+//=============================================================================
+//
+// File : class_widget.cpp
+// Creation date : Mon Sep 11 16:35:32 CET 2000 by Krzysztof Godlewski
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_malloc.h"
+#include "kvi_debug.h"
+
+#include "kvi_error.h"
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+#include "kvi_window.h"
+#include "kvi_out.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_app.h"
+#include "kvi_string.h"
+#include <qcursor.h>
+#include <qiconset.h>
+#include <qcolor.h>
+#include <qlayout.h>
+#include <qbitmap.h>
+#include <qmetaobject.h>
+#include "class_widget.h"
+#include "class_pixmap.h"
+
+#ifdef COMPILE_USE_QT4
+ #include <QKeyEvent>
+ #include <QDesktopWidget>
+#else
+ #include <qwidgetlist.h>
+#endif
+
+#include <qwidget.h>
+#include <qtooltip.h>
+#include <qfont.h>
+#include <qvariant.h>
+
+// FIX ME: WFLAGS
+const char * const widgettypes_tbl[] = {
+ "TopLevel",
+ "Dialog",
+ "Popup",
+ "Desktop",
+ "Customize",
+ "Title",
+ "StaysOnTop",
+ "SysMenu",
+ "Minimize",
+ "Maximize",
+ "NoAutoErase"
+ };
+#ifdef COMPILE_USE_QT4
+const Qt::WidgetAttribute widgetattributes_cod[]= {
+ Qt::WA_OpaquePaintEvent,
+ Qt::WA_NoSystemBackground,
+ Qt::WA_PaintOnScreen,
+ Qt::WA_NoMousePropagation,
+};
+
+const char * const widgetattributes_tbl[] = {
+ "opaquePaintEvent",
+ "noSystemBackground",
+ "paintOnScreen",
+ "noMousePropagation",
+};
+#define widgetattributes_num (sizeof(widgetattributes_tbl) / sizeof(widgetattributes_tbl[0]))
+
+
+const Qt::WindowType widgettypes_cod[] = {
+#else
+const int widgettypes_cod[] = {
+#endif
+ Qt::WType_TopLevel,
+ Qt::WType_Dialog,
+ Qt::WType_Popup,
+ Qt::WType_Desktop,
+ Qt::WStyle_Customize,
+ Qt::WStyle_Title,
+ Qt::WStyle_StaysOnTop,
+ Qt::WStyle_SysMenu,
+ Qt::WStyle_Minimize,
+ Qt::WStyle_Maximize,
+ Qt::WNoAutoErase
+};
+
+
+#ifdef COMPILE_USE_QT4
+
+ #define QT_WIDGET_TABFOCUS Qt::TabFocus
+ #define QT_WIDGET_CLICKFOCUS Qt::ClickFocus
+ #define QT_WIDGET_STRONGFOCUS Qt::StrongFocus
+ #define QT_WIDGET_NOFOCUS Qt::NoFocus
+
+#else
+ #define QT_WIDGET_TABFOCUS QWidget::TabFocus
+ #define QT_WIDGET_CLICKFOCUS QWidget::ClickFocus
+ #define QT_WIDGET_STRONGFOCUS QWidget::StrongFocus
+ #define QT_WIDGET_NOFOCUS QWidget::NoFocus
+#endif
+
+
+#define widgettypes_num (sizeof(widgettypes_tbl) / sizeof(widgettypes_tbl[0]))
+
+/*
+ @doc: widget
+ @keyterms:
+ widget object class
+ @title:
+ widget class
+ @type:
+ class
+ @short:
+ Base class for all widgets
+ @inherits:
+ [class]object[/class]
+ @description:
+ This object class is the rappresentation of a widget.
+ All the other widget-type classes inherit from this one.
+ @functions:
+ !fn: $show()
+ Shows this widget and the children.
+ See also [classfnc]$hide[/classfnc]() and [classfnc]$isVisible[/classfnc].
+ !fn: $hide()
+ Hides this widget (and conseguently all the children).
+ See also [classfnc]$show[/classfnc]() and [classfnc]$isVisible[/classfnc].
+ !fn: $repaint(<bool erase>)
+ Repaints the widget directly by calling [classfnc]$paintEvent[/classfnc]() immediately.[br]
+ If erase is TRUE, erases the widget before the $paintEvent() call.
+ !fn: $x()
+ Returns the x coordinate of the upper-left corner
+ of this widget relative to the parent widget,
+ or to the desktop if this widget is a toplevel one.
+ !fn: $y()
+ Returns the y coordinate of the uspper-left corner
+ of this widget relative to the parent widget,
+ or to the desktop if this widget is a toplevel one.
+ !fn: $width()
+ Returns the width of this widget in pixels.
+ !fn: $height()
+ Returns the height of this widget in pixels.
+ !fn: $geometry()
+ Returns the widget geometry in this form:[br]
+ x, y, width, height.
+ !fn: $setGeometry(<x_or_array>,[<y>,<width>,<heigth>])
+ Sets the geometry of this widget. <x> and <y> are relative
+ to the parent widget or to the desktop (if this widget is
+ a toplevel one). All the parameters are in pixels.
+ !fn: $setMinimumWidth(<value>)
+ Sets the minimum width of this widget to <value>.
+ The user will not be able to resize the widget to a smaller
+ value. This value is also used by the [class:layout]layout class[/class].
+ !fn: $setMinimumHeight(<value>)
+ Sets the minimum height of this widget to <value>.
+ The user will not be able to resize the widget to a smaller
+ value. This value is also used by the [class:layout]layout class[/class].
+ !fn: $setMaximumWidth(<value>)
+ Sets the maximum width of this widget to <value>.
+ The user will not be able to resize the widget to a bigger
+ value. This value is also used by the [class:layout]layout class[/class].
+ !fn: $setMaximumHeight(<value>)
+ Sets the maximum height of this widget to <value>.
+ The user will not be able to resize the widget to a bigger
+ value. This value is also used by the [class:layout]layout class[/class].
+ !fn: $move(<x_or_array>[,<y>])
+ Moves this widget to the coordinate <x> and <y> relative to its
+ parent widget (or the desktop if this widget is a toplevel one).
+ This is equivalent to [classfnc]$setGeometry[/classfnc](<x>,<y>,
+ [classfnc]$width[/classfnc](),[classfnc]$height[/classfnc]()).
+ !fn: $resize(<w_or_array>,[height])
+ Changes the widget's width to <width> and height to <height>.
+ See also [classfnc]$setGeometry[/classfnc]().
+ !fn: $isEnabled()
+ Returns '1' if the widget is enabled , '0' otherwise.
+ See also [classfnc:widget]$setEnabled[/classfnc]().
+ !fn: $setEnabled(<bool>)
+ Sets the widget state to enabled or disabled if <bool> is 1 or 0 respectively.
+ A disabled widget does not receive keyboard nor mouse input.
+ !fn: $setCaption(<text>)
+ Sets the caption of this widget to <text>.
+ This is meaningful for toplevel widgets only.
+ !fn: $setToolTip(<tooltip_text>)
+ Set the tooltip of this widget; the text can contain HTML formatting.
+ !fn: $window.caption()
+ Returns the caption text of this widget.
+ !fn: $isTopLevel()
+ Returns '1' if this widget is a toplevel (parentless) one,
+ '0' otherwise.
+ !fn: $isVisible()
+ Returns '1' if this widget is currently visible (read: is managed
+ by the window manager and displayed by the X server; the widget
+ may be hidden behind other widgets). If the widget is not visible
+ this function returns '0'.
+ See also [classfnc]$show[/classfnc]() and [classfnc]$hide[/classfnc]().
+ !fn: $raise()
+ Moves this widget to the top of the stack of the widgets relative
+ to its parent. See also [classfnc]$lower[/classfnc].
+ !fn: $lower()
+ Moves this widget to the bottom of the stack of the widgets relative
+ to its parent. See also [classfnc]$raise[/classfnc]
+ !fn: $hasFocus()
+ Returns '1' if this widget has the keyboard focus.
+ See also [classfnc]$setFocus[/classfnc].
+ !fn: $setFocus()
+ Sets this widget to be the one that receives keyboard events.
+ See also [classfnc]$hasFocus[/classfnc]
+ !fn: $parentWidget()
+ Returns the object id of the parent widget, or '0' if this
+ widget is a toplevel one.
+ !fn: $backgroundColor()
+ Returns the background color of this widget in hexadecimal
+ html-like format. For example , for a black bacground you will get
+ the string "000000" , for a red one , "FF0000", for a white one
+ "FFFFFF". See also [classfnc]$setBackgroundColor[/classfnc]()
+ !fn: $setBackgroundColor(<rgb(hex string)_array(red:integer,green:integer,blue_integer)_or_red>,[geen:integer],[blue:integer])
+ Sets the background color of this widget to <rgb_value>:valid values are:
+ - hex string: must be a string with 6 hexadecimal digits (like the ones used to
+ specify colors in html pages). The first two digits specify
+ the RED component, the third and fourth digit specify the GREEN component
+ and the last two specify the BLUE component.
+ For example "FFFF00" means full red, full green and no blue that gives
+ a yellow color, "808000" designates a brown color (dark yellow),
+ "A000A0" is a kind of violet.
+ - array(red:integer,green:integer,blue:integer)
+ - red:integer,green:integer,blue:integer.
+ See also [classfnc]$foregroundColor[/classfnc].
+ !fn: $setForegroundColor(<rgb(hex string)_array(red:integer,green:integer,blue_integer)_or_red>,[geen:integer],[blue:integer])
+ Sets the foreground color of this widget to <rgb_value>:valid values are:
+ - hex string: must be a string with 6 hexadecimal digits (like the ones used to
+ specify colors in html pages). The first two digits specify
+ the RED component, the third and fourth digit specify the GREEN component
+ and the last two specify the BLUE component.
+ For example "FFFF00" means full red, full green and no blue that gives
+ a yellow color, "808000" designates a brown color (dark yellow),
+ "A000A0" is a kind of violet.
+ - array(red:integer,green:integer,blue:integer)
+ - red:integer,green:integer,blue:integer.
+ See also [classfnc]$foregroundColor[/classfnc].
+ !fn: $foregroundColor()
+ Returns the foreground color of this widget in hexadecimal
+ html-like format.
+ See also [classfnc]$setForegroundColor[/classfnc].
+ !fn: $setMouseTracking(<bool>)
+ Enables or disables the mouse tracking if <bool> is '1' or '0' respectively.
+ When mouse tracking is enabled you will receive mouse move events
+ even if no button is pressed, otherwise you will receive it only
+ when a mouse button is being pressed (so after a mousePressEvent).
+ !fn: $mousePressEvent(<button>,<x>,<y>)
+ This function is called when a mouse button is pressed while
+ the cursor is in this widget. <button> is 0 if the pressed button
+ is the left one, 1 if the button is the right one and 2 if it is the middle one.
+ The <x> and <y> coordinates are relative to this widget upper-left corner
+ and are expressed in pixels.
+ If you call "[cmd]setreturn[/cmd] 1" you will stop the internal processing
+ of this event. The default implementation does nothing.
+ !fn: $mouseReleaseEvent(<button>,<x>,<y>)
+ This function is called when a mouse button is released while
+ the cursor is in this widget. <button> is 0 if the released button
+ is the left one, 1 if the button is the right one and 2 if it is the middle one.
+ The <x> and <y> coordinates are relative to this widget upper-left corner
+ and are expressed in pixels.
+ If you call "[cmd]setreturn[/cmd] 1" you will stop the internal processing
+ of this event. The default implementation does nothing.
+ !fn: $mouseDoubleClickEvent(<button>,<x>,<y>)
+ This function is called when a mouse button is double clicked while
+ the cursor is in this widget. <button> is 0 if the double clicked button
+ is the left one, 1 if the button is the right one and 2 if it is the middle one.
+ The <x> and <y> coordinates are relative to this widget upper-left corner
+ and are expressed in pixels.
+ If you call "[cmd]setreturn[/cmd] 1" you will stop the internal processing
+ of this event. The default implementation does nothing.
+ !fn: $mouseMoveEvent(<button>,<x>,<y>)
+ This function is called when the mouse cursor moves inside this widget.
+ <button> is 0 if the pressed button
+ is the left one, 1 if the button is the right one and 2 if it is the middle one.
+ The special value of -1 indicates that no button is being pressed.
+ The <x> and <y> coordinates are relative to this widget upper-left corner
+ and are expressed in pixels.
+ Normally you will receive this event only if a mouse button is being pressed
+ while moving. If you want to receive it also when the mouse buttons are not
+ pressed, call [classfnc]$setMouseTracking[/classfnc]().
+ If you call "[cmd]return[/cmd]$true" you will stop the internal processing
+ of this event. The default implementation does nothing.
+ !fn: $focusInEvent()
+ This function is called when this widget gains keyboard focus.
+ If you call "[cmd]return[/cmd] $true" you will stop the internal processing
+ of this event. The default implementation does nothing.
+ !fn: $focusOutEvent()
+ This function is called when this widget looses keyboard focus.
+ If you call "[cmd]return[/cmd] $true" you will stop the internal processing
+ of this event. The default implementation does nothing.
+ !fn: $mouseLeaveEvent()
+ This function is called when the mouse leaves this widget.
+ If you call "[cmd]return[/cmd] $true" you will stop the internal processing
+ of this event. The default implementation does nothing.
+ !fn: $mouseEnterEvent()
+ This function is called when the mouse enters this widget.
+ If you call "[cmd]return[/cmd] $true" you will stop the internal processing
+ of this event. The default implementation does nothing.
+ !fn: $showEvent()
+ This function is called when this widget is being shown.
+ If you call "[cmd]return[/cmd] $true" you will stop the internal processing
+ of this event. The default implementation does nothing.
+ !fn: $hideEvent()
+ This function is called when this widget is being hidden.
+ If you call "[cmd]return[/cmd] $true" you will stop the internal processing
+ of this event. The default implementation does nothing.
+ !fn: $closeEvent()
+ This function is called when this widget is going to be closed.
+ If you call "[cmd]return[/cmd] $true" you will ignore the close event.
+ The default implementation does nothing.
+ !fn: $resizeEvent()
+ This function is called immediately after this widget has been resized.
+ If you call "[cmd]return[/cmd] $true" you will stop the internal processing
+ of this event. The default implementation does nothing.
+ !fn: $moveEvent()
+ This function is called immediately after this widget has been moved.
+ If you call "[cmd]return[/cmd] $true" you will stop the internal processing
+ of this event. The default implementation does nothing.
+ !fn: <tip:string> $maybeTipEvent(<x_tip_pos:integer>,<y_tip_pos:integer>)[QT4 only]
+ This event handler is called when a eventualy tip is going to be show.
+ You can be reimplement this event and set a dynamic tool tip by using "[cmd]return[/cmd] <tooltip_string>".
+ If a tooltip has setted with [classfnc]$setTooltip[/classfnc] the dynamic tooltip will be ignored.
+ The default implementation does nothing.
+ !fn: $paintEvent()
+ This event handler can be reimplemented to repaint all or part of the widget.
+ It's needed by the Painter class.
+ It's very useful for drawing flicker free animations or low level special graphic effects.
+ If you call "[cmd]return[/cmd] $true" you will stop the internal processing
+ of this event.
+ The default implementation does nothing.
+ !fn: $setIcon(<image_id>)
+ Sets the icon for this widget. This is meaningful only for toplevel widgets.
+ See the [doc:image_id]image identifier[/doc] documentation for the explaination
+ of the <image_id> parameter.
+ !fn: $setBackgroundImage(<image_id>)
+ Sets the background image for this widget.
+ See the [doc:image_id]image identifier[/doc] documentation for the explaination
+ of the <image_id> parameter.
+ For some kind of widgets, setting a background pixmap may have no effect or
+ have strange results. Experiment with it.
+ To unset the background image call [classfnc]$setBackgroundColor[/classfnc]
+ !fn: $setFont(<size>,<family>,<style>)[br]
+ Set the font's size, family and stile, valid flag for style are:[br]
+ [pre]
+ italic [br]
+ bold [br]
+ underline [br]
+ overline [br]
+ strikeout [br]
+ fixedpitch [br]
+ [/pre]
+ !fn: $setWFlags(<flag1>, <flag2>, ...)
+ This function sets widget flags, given as parameters.
+ Valid flags are:
+ [pre]
+ TopLevel - indicates that this widget is a top-level widget[br]
+ Dialog - indicates that this widget is a top-level window that should be decorated as a dialog[br]
+ Desktop - indicates that this widget is the desktop[br]
+ Popup - indicates that this widget is a popup top-level window[br]
+ NoAutoErase - indicates that this widget paints all its pixels. Updating, resizing, scrolling and focus changes should therefore not erase the widget.
+ Customize - let's the user to customize the style of the widget.[br]
+ [br]
+ Valid parameter for a customized widget are:[br]
+ Title - gives the window a title bar[br]
+ StaysOnTop - window stays on top [br]
+ SysMenu - add a windows system menu[br]
+ Minimize - add a minimize button for the sysmenu style[br]
+ Maximize - add a maximixe button for the sysmenu style[br]
+ [/pre]
+ !fn: $centerToScreen()
+ Centers the window on the screen (useful only for toplevel widgets).[br]
+ The best place to call this function is in $showEvent()
+ !fn: $setFocusPolicy(<key focus>)
+ Sets the way the widget accepts keyboard focus.[br]
+ Valid parameters are:
+ [pre]
+ - TabFocus; (widget accepts keyboard focus by tabbing)[br]
+ - ClickFocus; (widget accepts keyboard focus by clicking)[br]
+ - StrongFocus; (widget accepts both tabbing/clicking)[br]
+ - No Focus; (widget does not accept focus at all; this is the default value)[br]
+ [/pre]
+ !fn: $keyPressEvent(<key>)
+ If widget accepts keyboard focus (see [classfnc]$setFocusPolicy[/classfnc] ) this function handles for keys;
+ In its argument the key pressed.[br]
+ Special keys are:
+ [pre]
+ - Return [br]
+ - Enter [br]
+ - Down (cursor arrow down) [br]
+ - Up (cursor arrow up) [br]
+ - Left (cursor arrow left) [br]
+ - Right (cursor arrow right) [br]
+ - Shift [br]
+ - Ctrl [br]
+ - Alt [br]
+ - CapsLock [br]
+ - Backspace [br]
+ - Del [br]
+ - Esc [br]
+ - 0 [br]
+ - 1 [br]
+ - 2 [br]
+ - 3 [br]
+ - 4 [br]
+ - 5 [br]
+ - 6 [br]
+ - 7 [br]
+ - 8 [br]
+ - 9 [br]
+ - + [br]
+ - - [br]
+ - * [br]
+ - / [br]
+ - ( [br]
+ - ) [br]
+ - = [br]
+ - . [br]
+ - ^ [br]
+
+ [/pre]
+ !fn: $mapFromGlobal(<x>,<y>)
+ Translates the global screen coordinate pos to widget coordinates.
+ !fn: $mapToGlobal(<x>,<y>)
+ Translates widget coordinates into the global screen coordinate pos.
+ !fn: integer $globalCursorX()
+ Return the x coordinate of mouse pointer global position.
+ !fn: integer $globalCursorY()
+ Return the y coordinate of the mo>use pointer global position.
+ @examples:
+ [example]
+ %Widget = $new(widget)
+ # This is the main container for other elements.
+
+ %Widget->$setCaption("This is the widget title")
+
+ %Widget->$setGeometry(100,200,170,290)
+ # 100 and 200 are distance (pixel) from the left and the top of father widget (in this case the KVIrc window)
+ # 300 and 400 are the weight and the height of the widget
+
+ %Widget->%label = $new(label,%Widget)
+ %Widget->%label->$setText("This is a text label")
+ %Widget->%label->$setGeometry(10,10,150,20)
+
+ %Widget->%lineedit = $new(lineedit,%Widget)
+ %Widget->%lineedit->$setText("This is a lineedit")
+ %Widget->%lineedit->$setGeometry(10,40,150,20)
+
+ %Widget->%multilineedit = $new(multilineedit,%Widget)
+ %Widget->%multilineedit->$setText("This is a multilineedit")
+ %Widget->%multilineedit->$setGeometry(10,70,150,40)
+
+ %Widget->%checkbox = $new(checkbox,%Widget)
+ %Widget->%checkbox->$setText("This is a checkbox")
+ %Widget->%checkbox->$setGeometry(10,120,150,20)
+
+ %Widget->%combobox = $new(combobox,%Widget)
+ %Widget->%combobox->$setGeometry(10,150,150,20)
+ %Widget->%combobox->$insertItem("This is a combobox")
+ %Widget->%combobox->$insertItem("This is a combobox's item")
+
+ %Widget->%listbox = $new(listbox,%Widget)
+ %Widget->%listbox->$setGeometry(10,180,150,40)
+ %Widget->%listbox->$insertItem("This is another item")
+ %Widget->%listbox->$insertItem("This is a listbox's item")
+ %Widget->%listbox->$insertItem("This is a listbox")
+
+ %Widget->%radiobutton = $new(radiobutton,%Widget)
+ %Widget->%radiobutton->$setGeometry(10,230,150,20)
+ %Widget->%radiobutton->$setText("This is a radiobutton")
+
+ %Widget->%button = $new(button, %Widget)
+ %Widget->%button->$setText("Close me")
+ %Widget->%button->$setGeometry(10,260,150,20)
+
+ %Widget->$show()
+ # This shows the widget
+
+ privateimpl(%Widget->%button, mousePressEvent) {
+ delete %Widget
+ # This closes the widget automatically
+ }
+ # privateimpl is triggered when user press the button.
+ # To do that, widget must be a global variable.
+ [/example]
+
+*/
+
+
+
+
+//
+// If you never call c->error() , c->warning() (your function never fails)
+// and never call a function that can call c->error() or c->warning()
+// you can avoid ENTER_STACK_FRAME and c->leaveStackFrame()
+// Just return true.
+// c->error() should be called only in really critical situations
+// (we have to define better "critical situation")
+// if possible , leave the things go after just a c->warning()
+//
+
+ // widget() will be never 0 in THIS class
+ // but in derived classes WILL be
+ // ... now that I think about it , it
+ // may happen that widget() will be zero here too:
+ // If the Qt "physical" widget gets destroyed
+ // by some external factor (for example when children
+ // of a wrapper widget destroyed by KVIrc).
+ //
+ // as a convention:
+ // if widget() can be 0 in a class
+ // the user must have a function to check it
+ // (sth as object::$hasObject() could do the trick)
+ // obviously this will happen only in well defined cases
+ // as in a qtwrapper not yet wrapped or failed to wrap (so
+ // qtwrapper::$wrap() returned '0' for example)
+ // or after the widget has been destroyed...
+ // if widget() is 0 , the functions perform no actions
+ // return no errors and results that have to be assumed
+ // as invalid (this allows the minimum overhead: if widget()
+
+//=============================================================================================================
+
+
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_widget,"widget","object")
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"reparent",function_reparent)
+ // apparence
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"show",function_show)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"hide",function_hide)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"repaint",function_repaint)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"isTopLevel",function_isTopLevel)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"isVisible",function_isVisible)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"raise",function_raise)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"lower",function_lower)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"setEnabled",function_setEnabled)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"isEnabled",function_isEnabled)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"setMouseTracking",function_setMouseTracking)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"setCaption",function_setCaption)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"caption",function_caption)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"hasFocus",function_hasFocus)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"setFocus",function_setFocus)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"setToolTip",function_setToolTip)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"setWFlags",function_setWFlags)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"setIcon",function_setIcon)
+ // fonts
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"fontDescent",function_fontDescent)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"fontAscent",function_fontAscent)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"fontMetricsWidth",function_fontMetricsWidth)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"fontMetricsHeight",function_fontMetricsHeight)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"setFont",function_setFont)
+ // geometry
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"screenResolution",function_screenResolution)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"centerToScreen",function_centerToScreen)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"geometry",function_geometry)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"setGeometry",function_setGeometry)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"mapToGlobal",function_mapToGlobal)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"mapFromGlobal",function_mapFromGlobal)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"y",function_y)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"x",function_x)
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"globalCursorX",function_globalCursorX)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"globalCursorY",function_globalCursorY)
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"width",function_width)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"height",function_height)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"setMinimumWidth",function_setMinimumWidth)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"setMinimumHeight",function_setMinimumHeight)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"setMaximumWidth",function_setMaximumWidth)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"setMaximumHeight",function_setMaximumHeight)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"move",function_move)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"sizeHint",function_sizeHint)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"resize",function_resize)
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"setFocusPolicy",function_setFocusPolicy)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"addWidgetToWrappedLayout",function_addWidgetToWrappedLayout)
+
+ // colors and image
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"setForegroundColor",function_setPaletteForeground)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"setBackgroundColor",function_setBackgroundColor)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"setBackgroundImage",function_setBackgroundImage)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"backgroundColor",function_backgroundColor)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"foregroundColor",function_foregroundColor)
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"setMask",function_setMask)
+
+ // QT4 only
+#ifdef COMPILE_USE_QT4
+ KVSO_REGISTER_HANDLER(KviKvsObject_widget,"setAttribute",function_setAttribute)
+#endif
+
+ // events
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_widget,"mousePressEvent")
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_widget,"mouseReleaseEvent")
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_widget,"mouseDoubleClickEvent")
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_widget,"mouseMoveEvent")
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_widget,"focusInEvent")
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_widget,"focusOutEvent")
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_widget,"mouseLeaveEvent")
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_widget,"mouseEnterEvent")
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_widget,"showEvent")
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_widget,"hideEvent")
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_widget,"closeEvent")
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_widget,"resizeEvent")
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_widget,"moveEvent")
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_widget,"paintEvent")
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_widget,"keyPressEvent")
+#ifdef COMPILE_USE_QT4
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_widget,"maybeTipEvent")
+#endif
+
+
+KVSO_END_REGISTERCLASS(KviKvsObject_widget)
+
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_widget,KviKvsObject)
+KVSO_END_CONSTRUCTOR(KviKvsObject_widget)
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_widget)
+ emit aboutToDie();
+KVSO_END_CONSTRUCTOR(KviKvsObject_widget)
+
+bool KviKvsObject_widget::init(KviKvsRunTimeContext * pContext,KviKvsVariantList * pParams)
+{
+ setObject(new QWidget(parentScriptWidget(),getName()),true);
+ return true;
+}
+
+bool KviKvsObject_widget::eventFilter(QObject *o,QEvent *e)
+{
+ if(o == object())
+ {
+ bool ret=false;
+ int aparam;
+ bool brokenhandler=false;
+ KviKvsVariant *retv=new KviKvsVariant(ret);
+
+ switch(e->type())
+ {
+ #ifdef COMPILE_USE_QT4
+ case QEvent::ToolTip:
+ {
+ QHelpEvent *helpEvent = static_cast<QHelpEvent *>(e);
+ QPoint point=helpEvent->pos();
+ QString szTooltip;
+ KviKvsVariant *tipret=new KviKvsVariant(szTooltip);
+ KviKvsVariantList params(new KviKvsVariant((kvs_int_t)point.x()),new KviKvsVariant((kvs_int_t)point.y()));
+ callFunction(this,"maybeTipEvent",tipret,&params);
+ tipret->asString(szTooltip);
+ QToolTip::showText(helpEvent->globalPos(),szTooltip);
+ break;
+ }
+ #endif
+ case QEvent::Paint:
+ {
+ QRect rect=((QPaintEvent *)e)->rect();
+ KviKvsVariantList params(new KviKvsVariant((kvs_int_t)rect.x()),new KviKvsVariant((kvs_int_t)rect.y()),new KviKvsVariant((kvs_int_t)rect.width()),new KviKvsVariant((kvs_int_t)rect.height()));
+ callFunction(this,"paintEvent",retv,&params);
+ break;
+ }
+
+ case QEvent::KeyPress:
+ {
+ QString tmp="";
+ switch(((QKeyEvent *)e)->key())
+ {
+ case Qt::Key_Return:
+ tmp="Return";
+ break;
+ case Qt::Key_Down:
+ tmp="Down";
+ break;
+ case Qt::Key_Up:
+ tmp="Up";
+ break;
+ case Qt::Key_Left:
+ tmp="Left";
+ break;
+ case Qt::Key_Right:
+ tmp="Right";
+ break;
+ case Qt::Key_Shift:
+ tmp="Shift";
+ break;
+ case Qt::Key_Control:
+ tmp="Ctrl";
+ break;
+ case Qt::Key_Alt:
+ tmp="Alt";
+ break;
+ case Qt::Key_CapsLock:
+ tmp="CapsLock";
+ break;
+ case Qt::Key_Backspace:
+ tmp="Backspace";
+ break;
+ case Qt::Key_Delete:
+ tmp="Del";
+ break;
+
+ case Qt::Key_Enter:
+ tmp="Enter";
+ break;
+ case Qt::Key_Escape:
+ tmp="Esc";
+ break;
+ case Qt::Key_0:
+ tmp="0";
+ case Qt::Key_1:
+ tmp="1";
+ break;
+ case Qt::Key_2:
+ tmp="2";
+ break;
+ case Qt::Key_3:
+ tmp="3";
+ break;
+ case Qt::Key_4:
+ tmp="4";
+ break;
+ case Qt::Key_5:
+ tmp="5";
+ break;
+ case Qt::Key_6:
+ tmp="6";
+ break;
+ case Qt::Key_7:
+ tmp="7";
+ break;
+ case Qt::Key_8:
+ tmp="8";
+ break;
+ case Qt::Key_9:
+ tmp="9";
+ break;
+ case Qt::Key_Plus:
+ tmp="+";
+ break;
+ case Qt::Key_Minus:
+ tmp="-";
+ break;
+ case Qt::Key_Slash:
+ tmp="/";
+ break;
+ case Qt::Key_Asterisk:
+ tmp="*";
+ break;
+ case Qt::Key_Period:
+ tmp=".";
+ break;
+ case Qt::Key_ParenLeft:
+ tmp="(";
+ break;
+ case Qt::Key_ParenRight:
+ tmp=")";
+ break;
+ case Qt::Key_Equal:
+ tmp="=";
+ break;
+ case Qt::Key_AsciiCircum:
+ tmp="^";
+ break;
+ default:
+ if (!((QKeyEvent *)e)->text().isEmpty()) tmp = ((QKeyEvent *)e)->text();
+ }
+
+ KviKvsVariantList params(new KviKvsVariant(tmp));
+ callFunction(this,"keyPressEvent",0,&params);
+ }
+ break;
+ case QEvent::MouseButtonPress:
+ if(((QMouseEvent *)e)->button() & Qt::LeftButton)aparam = 0;
+ else {
+ if(((QMouseEvent *)e)->button() & Qt::RightButton)aparam = 1;
+ else aparam = 2;
+ }
+ if(!callFunction(this,"mousePressEvent",retv,new KviKvsVariantList(new KviKvsVariant((kvs_int_t)aparam),new KviKvsVariant((kvs_int_t)((QMouseEvent *)e)->pos().x()),new KviKvsVariant((kvs_int_t)((QMouseEvent *)e)->pos().y())
+ ))) brokenhandler = true; // ignore results of a broken event handler
+ break;
+ case QEvent::MouseButtonRelease:
+ if(((QMouseEvent *)e)->button() & Qt::LeftButton)aparam = 0;
+ else {
+ if(((QMouseEvent *)e)->button() & Qt::RightButton)aparam = 1;
+ else aparam = 2;
+ }
+ if(!callFunction(this,"mouseReleaseEvent",retv,new KviKvsVariantList(new KviKvsVariant((kvs_int_t)aparam),new KviKvsVariant((kvs_int_t)((QMouseEvent *)e)->pos().x()),new KviKvsVariant((kvs_int_t)((QMouseEvent *)e)->pos().y())
+ ))) brokenhandler = true; // ignore results of a broken event handler
+ break;
+ case QEvent::MouseButtonDblClick:
+ if(( (QMouseEvent *)e)->button() & Qt::LeftButton)aparam = 0;
+ else {
+ if(((QMouseEvent *)e)->button() & Qt::RightButton)aparam = 1;
+ else aparam = 2;
+ }
+ if(!callFunction(this,"mouseDoubleClickEvent",retv,new KviKvsVariantList(new KviKvsVariant((kvs_int_t)aparam),new KviKvsVariant((kvs_int_t)((QMouseEvent *)e)->pos().x()),new KviKvsVariant((kvs_int_t)((QMouseEvent *)e)->pos().y())
+ ))) brokenhandler = true; // ignore results of a broken event handler
+
+ break;
+ case QEvent::MouseMove:
+ if( (((QMouseEvent *)e)->state()) & Qt::LeftButton) aparam = 0;
+ else
+ {
+ if(((QMouseEvent *)e)->state() & Qt::RightButton)aparam = 1;
+ else
+ {
+ if(((QMouseEvent *)e)->state() & Qt::MidButton)aparam = 2;
+ else aparam = -1;
+ }
+ }
+ if(!callFunction(this,"mouseMoveEvent",retv,new KviKvsVariantList(new KviKvsVariant((kvs_int_t)aparam),new KviKvsVariant((kvs_int_t)((QMouseEvent *)e)->pos().x()),new KviKvsVariant((kvs_int_t)((QMouseEvent *)e)->pos().y())
+ ))) brokenhandler = true; // ignore results of a broken event handler
+ break;
+ case QEvent::FocusIn:
+ if(!callFunction(this,"focusInEvent",retv,0))brokenhandler = true;
+ break;
+ case QEvent::FocusOut:
+ if(!callFunction(this,"focusOutEvent",retv,0))brokenhandler = true;
+ break;
+ case QEvent::Resize:
+ if(!callFunction(this,"resizeEvent",retv,0))brokenhandler = true;
+ break;
+ case QEvent::Move:
+ if(!callFunction(this,"moveEvent",retv,0))brokenhandler = true;
+ break;
+ case QEvent::Close:
+ if(!callFunction(this,"closeEvent",retv,0))brokenhandler = true;
+ break;
+ case QEvent::Enter:
+ if(!callFunction(this,"mouseEnterEvent",retv,0))brokenhandler = true;
+ break;
+ case QEvent::Leave:
+ if(!callFunction(this,"mouseLeaveEvent",retv,0))brokenhandler = true;
+ break;
+ case QEvent::Show:
+ if(!callFunction(this,"showEvent",retv,0))brokenhandler = true;
+ break;
+ case QEvent::Hide:
+ if(!callFunction(this,"hideEvent",retv,0))ret =false;
+ break;
+ default:
+ return KviKvsObject::eventFilter(o,e);
+ break;
+
+ }
+ if (!brokenhandler) ret=retv->asBoolean();
+ delete retv;
+ return ret;
+ /*
+ if(ret.length() == 1)
+ {
+ if(KviQString::equalCI("1",ret))return true;
+ }
+ */
+ }
+
+ return KviKvsObject::eventFilter(o,e);
+}
+
+
+bool KviKvsObject_widget::function_show(KviKvsObjectFunctionCall *c)
+{
+ if(!widget())return true; // should we warn here ?
+ widget()->show();
+ return true;
+}
+
+bool KviKvsObject_widget::function_setEnabled(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if(!widget())return true;
+ widget()->setEnabled(bEnabled);
+ return true;
+}
+bool KviKvsObject_widget::function_isEnabled(KviKvsObjectFunctionCall *c)
+{
+ if(!widget()) return true;
+ c->returnValue()->setBoolean(widget()->isEnabled());
+ return true;
+}
+bool KviKvsObject_widget::function_fontDescent(KviKvsObjectFunctionCall * c)
+{
+ if(!widget()) return true;
+ QFontMetrics fm = widget()->fontMetrics();
+ int d = fm.descent();
+ c->returnValue()->setInteger(d);
+ return true;
+}
+
+bool KviKvsObject_widget::function_fontAscent(KviKvsObjectFunctionCall * c)
+{
+ if(!widget()) return true;
+ QFontMetrics fm = widget()->fontMetrics();
+ int d = fm.ascent();
+ c->returnValue()->setInteger(d);
+ return true;
+
+}
+
+bool KviKvsObject_widget::function_repaint(KviKvsObjectFunctionCall * c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if(!widget()) return true;
+ widget()->repaint(bEnabled);
+ return true;
+}
+
+bool KviKvsObject_widget::function_fontMetricsWidth(KviKvsObjectFunctionCall * c)
+{
+ QString m_szStr;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("string",KVS_PT_STRING,0,m_szStr)
+ KVSO_PARAMETERS_END(c)
+ if(!widget()) return true;
+// int fm = widget()->fontMetrics().width(m_szStr);
+ c->returnValue()->setInteger(widget()->fontMetrics().width(m_szStr));
+ return true;
+}
+
+bool KviKvsObject_widget::function_fontMetricsHeight(KviKvsObjectFunctionCall * c)
+{
+ if(!widget())return true;
+ int fm = widget()->fontMetrics().height();
+ c->returnValue()->setInteger(fm);
+ return true;
+}
+bool KviKvsObject_widget::function_screenResolution(KviKvsObjectFunctionCall * c)
+{
+ KviKvsArray * a = new KviKvsArray();
+ a->set(0,new KviKvsVariant((kvs_int_t)g_pApp->desktop()->width()));
+ a->set(1,new KviKvsVariant((kvs_int_t)g_pApp->desktop()->height()));
+ c->returnValue()->setArray(a);
+ return true;
+}
+
+bool KviKvsObject_widget::function_geometry(KviKvsObjectFunctionCall *c)
+{
+ QRect r = widget() ? widget()->geometry() : QRect(0,0,0,0);
+ KviKvsArray * a = new KviKvsArray();
+ a->set(0,new KviKvsVariant((kvs_int_t)r.x()));
+ a->set(1,new KviKvsVariant((kvs_int_t)r.y()));
+ a->set(2,new KviKvsVariant((kvs_int_t)r.width()));
+ a->set(3,new KviKvsVariant((kvs_int_t)r.height()));
+ c->returnValue()->setArray(a);
+ return true;
+}
+
+bool KviKvsObject_widget::function_setGeometry(KviKvsObjectFunctionCall *c)
+{
+ KviKvsVariant * pXOrArray;
+ kvs_int_t iX,iY,iW,iH;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("x_or_array",KVS_PT_VARIANT,0,pXOrArray)
+ KVSO_PARAMETER("y",KVS_PT_INT,KVS_PF_OPTIONAL,iY)
+ KVSO_PARAMETER("w",KVS_PT_INT,KVS_PF_OPTIONAL,iW)
+ KVSO_PARAMETER("h",KVS_PT_INT,KVS_PF_OPTIONAL,iH)
+ KVSO_PARAMETERS_END(c)
+
+ // this is a little bit tricky: we accept two syntax versions
+ // (this is something like a C++ overload)
+ // $setGeometry(x,y,w,h) OR $setGeometry($array(x,y,w,h))
+
+ // For this purpose we ask the parameter processing engine
+ // to return the first parameter as variant and we manually check its data typoe
+ // We also set the following three parameters as optional
+ // so the user can either pass one or four parameters.
+
+ // Because of this trick, we must check the parameter consistency
+ // manually.
+
+ if(pXOrArray->isArray())
+ {
+ // the user has passed a complete geometry array as first parameter
+ // make sure it has at least 4 elements
+ if(pXOrArray->array()->size() < 4)
+ {
+ c->error(__tr2qs("The array passed as parameter must contain at least 4 elements"));
+ return false;
+ }
+ // we must also manually extract the data from the array
+ KviKvsVariant * pX = pXOrArray->array()->at(0);
+ KviKvsVariant * pY = pXOrArray->array()->at(1);
+ KviKvsVariant * pW = pXOrArray->array()->at(2);
+ KviKvsVariant * pH = pXOrArray->array()->at(3);
+ // note that some of the array elements may be empty in fact
+ // a null value returned by KviKvsArray::at() means that
+ // no parameter was set in that place
+ if(!(pX && pY && pW && pH))
+ {
+ c->error(__tr2qs("One of the geometry array parameters is empty"));
+ return false;
+ }
+ if(!(pX->asInteger(iX) && pY->asInteger(iY) && pW->asInteger(iW) && pH->asInteger(iH)))
+ {
+ c->error(__tr2qs("One of the geometry array parameters didn't evaluate to an integer"));
+ return false;
+ }
+ // ok: the params are correct
+ } else {
+ // The user passed something else as first parameter
+ // make sure that it is an integer.
+ // Also make sure that we really have 4 parameters
+ if(c->params()->count() < 4)
+ {
+ c->error(__tr2qs("$setGeometry() requires either an array as first parameter or four integers"));
+ return false;
+ }
+ if(!pXOrArray->asInteger(iX))
+ {
+ c->error(__tr2qs("The first parameter didn't evaluate to an array nor an integer"));
+ return false;
+ }
+ // ok: the params are correct
+ }
+
+ if(widget())
+ widget()->setGeometry(iX,iY,iW,iH);
+
+ return true;
+}
+bool KviKvsObject_widget::function_mapToGlobal(KviKvsObjectFunctionCall *c)
+
+{
+ if(!widget())return true;
+ kvs_int_t iX,iY;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("x",KVS_PT_INT,0,iX)
+ KVSO_PARAMETER("y",KVS_PT_INT,0,iY)
+ KVSO_PARAMETERS_END(c)
+ QPoint point=widget()->mapToGlobal(QPoint(iX,iY));
+ KviKvsArray * a = new KviKvsArray();
+ a->set(0,new KviKvsVariant((kvs_int_t)point.x()));
+ a->set(1,new KviKvsVariant((kvs_int_t)point.y()));
+ c->returnValue()->setArray(a);
+ return true;
+}
+
+bool KviKvsObject_widget::function_mapFromGlobal(KviKvsObjectFunctionCall *c)
+
+{
+ if(!widget())return true;
+ kvs_int_t iX,iY;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("x",KVS_PT_INT,0,iX)
+ KVSO_PARAMETER("y",KVS_PT_INT,0,iY)
+ KVSO_PARAMETERS_END(c)
+ QPoint point=widget()->mapFromGlobal(QPoint(iX,iY));
+ KviKvsArray * a = new KviKvsArray();
+ a->set(0,new KviKvsVariant((kvs_int_t)point.x()));
+ a->set(1,new KviKvsVariant((kvs_int_t)point.y()));
+ c->returnValue()->setArray(a);
+ return true;
+}
+bool KviKvsObject_widget::function_centerToScreen(KviKvsObjectFunctionCall *c)
+{
+ if(widget()) widget()->move((g_pApp->desktop()->width() - widget()->width())/2,(g_pApp->desktop()->height() - widget()->height())/2);
+ return true;
+}
+
+bool KviKvsObject_widget::function_setPaletteForeground(KviKvsObjectFunctionCall *c)
+{
+ KviKvsVariant * pColArray;
+ kvs_int_t iColR,iColG,iColB;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("hex_rgb_array_or_red",KVS_PT_VARIANT,0,pColArray)
+ KVSO_PARAMETER("green",KVS_PT_INT,KVS_PF_OPTIONAL,iColG)
+ KVSO_PARAMETER("blue",KVS_PT_INT,KVS_PF_OPTIONAL,iColB)
+ KVSO_PARAMETERS_END(c)
+
+ if(pColArray->isArray())
+ {
+ if(pColArray->array()->size() < 3)
+ {
+ c->error(__tr2qs("The array passed as parameter must contain at least 3 elements"));
+ return false;
+ }
+ KviKvsVariant * pColR = pColArray->array()->at(0);
+ KviKvsVariant * pColG = pColArray->array()->at(1);
+ KviKvsVariant * pColB = pColArray->array()->at(2);
+
+ if(!(pColR && pColG && pColB))
+ {
+ c->error(__tr2qs("One of the colors array parameters is empty"));
+ return false;
+ }
+ if(!(pColR->asInteger(iColR) && pColG->asInteger(iColG) && pColB->asInteger(iColB)))
+ {
+ c->error(__tr2qs("One of the colors array parameters didn't evaluate to an integer"));
+ return false;
+ }
+
+ } else {
+ if (c->params()->count()==1)
+ {
+ bool bOk,bOk1,bOk2;
+ QString value;
+ pColArray->asString(value);
+ int i=0;
+ if (value.length()!=6)
+ {
+ c->warning(__tr2qs("A string of 6 digits hex is required"));
+ return true;
+ }
+ QString buffer(value.mid(0,2));
+ iColR=buffer.toInt(&bOk,16);
+ buffer=value.mid(2,2);
+ iColG=buffer.toInt(&bOk1,16);
+ buffer=value.mid(4,2);
+ iColB=buffer.toInt(&bOk2,16);
+ if (!bOk || !bOk1 || !bOk2)
+ {
+ c->warning(__tr2qs("Not an hex digits"));
+ return true;
+ }
+ if (widget()) widget()->setPaletteForegroundColor(QColor(iColR,iColG,iColB));
+ return true;
+ }
+
+ if(c->params()->count() < 3)
+ {
+
+ c->error(__tr2qs("$setForegroundColor requires either an array as first parameter, one hex string or three integers"));
+ return false;
+ }
+ if(!pColArray->asInteger(iColR))
+ {
+ c->error(__tr2qs("The first parameter didn't evaluate to an array nor an integer"));
+ return false;
+ }
+ }
+ if (widget()) widget()->setPaletteForegroundColor(QColor(iColR,iColG,iColB));
+ return true;
+}
+
+bool KviKvsObject_widget::function_setBackgroundColor(KviKvsObjectFunctionCall *c)
+{
+ KviKvsVariant * pColArray;
+ kvs_int_t iColR,iColG,iColB;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("hex_rgb_array_or_red",KVS_PT_VARIANT,0,pColArray)
+ KVSO_PARAMETER("green",KVS_PT_INT,KVS_PF_OPTIONAL,iColG)
+ KVSO_PARAMETER("blue",KVS_PT_INT,KVS_PF_OPTIONAL,iColB)
+ KVSO_PARAMETERS_END(c)
+
+ if(pColArray->isArray())
+ {
+ if(pColArray->array()->size() < 3)
+ {
+ c->error(__tr2qs("The array passed as parameter must contain at least 3 elements"));
+ return false;
+ }
+ KviKvsVariant * pColR = pColArray->array()->at(0);
+ KviKvsVariant * pColG = pColArray->array()->at(1);
+ KviKvsVariant * pColB = pColArray->array()->at(2);
+
+ if(!(pColR && pColG && pColB))
+ {
+ c->error(__tr2qs("One of the colors array parameters is empty"));
+ return false;
+ }
+ if(!(pColR->asInteger(iColR) && pColG->asInteger(iColG) && pColB->asInteger(iColB)))
+ {
+ c->error(__tr2qs("One of the colors array parameters didn't evaluate to an integer"));
+ return false;
+ }
+
+ } else {
+ if (c->params()->count()==1)
+ {
+ bool bOk,bOk1,bOk2;
+ QString value;
+ pColArray->asString(value);
+ int i=0;
+ if (value.length()!=6)
+ {
+ c->warning(__tr2qs("A string of 6 digits hex is required"));
+ return true;
+ }
+ QString buffer(value.mid(0,2));
+ iColR=buffer.toInt(&bOk,16);
+ buffer=value.mid(2,2);
+ iColG=buffer.toInt(&bOk1,16);
+ buffer=value.mid(4,2);
+ iColB=buffer.toInt(&bOk2,16);
+ if (!bOk || !bOk1 || !bOk2)
+ {
+ c->warning(__tr2qs("Not an hex digits"));
+ return true;
+ }
+ if (widget()) widget()->setBackgroundColor(QColor(iColR,iColG,iColB));
+ return true;
+ }
+
+ if(c->params()->count() < 3)
+ {
+
+ c->error(__tr2qs("$setBackgroundColor requires either an array as first parameter, one hex string or three integers"));
+ return false;
+ }
+ if(!pColArray->asInteger(iColR))
+ {
+ c->error(__tr2qs("The first parameter didn't evaluate to an array nor an integer"));
+ return false;
+ }
+ }
+ if (widget()) widget()->setBackgroundColor(QColor(iColR,iColG,iColB));
+ return true;
+}
+
+bool KviKvsObject_widget::function_backgroundColor(KviKvsObjectFunctionCall *c)
+{
+ if(!widget())return true;
+ QColor col = widget()->backgroundColor();
+ KviKvsArray * a = new KviKvsArray();
+ a->set(0,new KviKvsVariant((kvs_int_t)col.red()));
+ a->set(1,new KviKvsVariant((kvs_int_t)col.green()));
+ a->set(2,new KviKvsVariant((kvs_int_t)col.blue()));
+ c->returnValue()->setArray(a);
+ return true;
+}
+
+bool KviKvsObject_widget::function_foregroundColor(KviKvsObjectFunctionCall *c)
+{
+ if(!widget())return true;
+ QColor col = widget()->foregroundColor();
+ KviKvsArray * a = new KviKvsArray();
+ a->set(0,new KviKvsVariant((kvs_int_t)col.red()));
+ a->set(1,new KviKvsVariant((kvs_int_t)col.green()));
+ a->set(2,new KviKvsVariant((kvs_int_t)col.blue()));
+ c->returnValue()->setArray(a);
+ return true;
+}
+
+bool KviKvsObject_widget::function_parentWidget(KviKvsObjectFunctionCall *c)
+{
+ if(!widget())return true;
+ if(parentScriptWidget()) c->returnValue()->setHObject(parentObject()->handle());
+ else
+ c->returnValue()->setHObject((kvs_hobject_t)0);
+ return true;
+
+}
+bool KviKvsObject_widget::function_setMouseTracking(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if(widget()) widget()->setMouseTracking(bEnabled);
+ return true;
+}
+
+bool KviKvsObject_widget::function_setCaption(KviKvsObjectFunctionCall *c)
+{
+ QString szCaption;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("caption",KVS_PT_STRING,0,szCaption)
+ KVSO_PARAMETERS_END(c)
+ if(widget()) widget()->setCaption(szCaption);
+ return true;
+}
+
+bool KviKvsObject_widget::function_caption(KviKvsObjectFunctionCall *c)
+{
+ if(widget()) c->returnValue()->setString(widget()->caption().utf8().data());
+ return true;
+}
+
+bool KviKvsObject_widget::function_isTopLevel(KviKvsObjectFunctionCall *c)
+{
+ if(widget()) c->returnValue()->setBoolean(widget()->isTopLevel());
+ return true;
+}
+
+bool KviKvsObject_widget::function_isVisible(KviKvsObjectFunctionCall *c)
+{
+ if(widget()) c->returnValue()->setBoolean(widget()->isVisible());
+ return true;
+}
+
+bool KviKvsObject_widget::function_raise(KviKvsObjectFunctionCall *)
+{
+ if(widget()) widget()->raise();
+ return true;
+}
+
+bool KviKvsObject_widget::function_lower(KviKvsObjectFunctionCall *)
+{
+ if(widget())widget()->lower();
+ return true;
+}
+
+bool KviKvsObject_widget::function_hasFocus(KviKvsObjectFunctionCall *c)
+{
+ if(widget()) c->returnValue()->setBoolean(widget()->hasFocus());
+ return true;
+}
+
+bool KviKvsObject_widget::function_setFocus(KviKvsObjectFunctionCall *c)
+{
+ if (widget())widget()->setFocus();
+ return true;
+}
+bool KviKvsObject_widget::function_hide(KviKvsObjectFunctionCall *)
+{
+ if(widget())widget()->hide();
+ return true;
+}
+
+bool KviKvsObject_widget::function_setToolTip(KviKvsObjectFunctionCall *c)
+{
+ QString szTooltip;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("tooltip",KVS_PT_STRING,0,szTooltip)
+ KVSO_PARAMETERS_END(c)
+ if(widget())QToolTip::add( widget(), szTooltip );
+ return true;
+}
+
+bool KviKvsObject_widget::function_x(KviKvsObjectFunctionCall *c)
+{
+ if(widget()) c->returnValue()->setInteger(widget()->x());
+ return true;
+}
+
+bool KviKvsObject_widget::function_y(KviKvsObjectFunctionCall *c)
+{
+ if(widget())c->returnValue()->setInteger(widget()->y());
+ return true;
+}
+
+bool KviKvsObject_widget::function_width(KviKvsObjectFunctionCall *c)
+{
+ if(widget())c->returnValue()->setInteger(widget()->width());
+ return true;
+}
+
+bool KviKvsObject_widget::function_height(KviKvsObjectFunctionCall *c)
+{
+ if(widget())c->returnValue()->setInteger(widget()->height());
+ return true;
+}
+
+bool KviKvsObject_widget::function_setMinimumWidth(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iW;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("w",KVS_PT_INT,0,iW)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) widget()->setMinimumWidth(iW);
+ return true;
+}
+
+bool KviKvsObject_widget::function_setMinimumHeight(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iH;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("h",KVS_PT_INT,0,iH)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) widget()->setMinimumHeight(iH);
+ return true;
+}
+
+bool KviKvsObject_widget::function_setMaximumWidth(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iW;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("w",KVS_PT_INT,0,iW)
+ KVSO_PARAMETERS_END(c)
+ if (widget()) widget()->setMaximumWidth(iW);
+ return true;
+}
+
+bool KviKvsObject_widget::function_setMaximumHeight(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iH;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("h",KVS_PT_INT,0,iH)
+ KVSO_PARAMETERS_END(c)
+ if(widget()) widget()->setMaximumHeight(iH);
+ return true;
+}
+
+bool KviKvsObject_widget::function_move(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t iX,iY;
+
+ KviKvsVariant * pXOrArray;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("x_or_array",KVS_PT_VARIANT,0,pXOrArray)
+ KVSO_PARAMETER("y",KVS_PT_INT,KVS_PF_OPTIONAL,iY)
+ KVSO_PARAMETERS_END(c)
+ if(pXOrArray->isArray())
+ {
+ if(pXOrArray->array()->size() < 2)
+ {
+ c->error(__tr2qs("The array passed as parameter must contain at least 2 elements"));
+ return false;
+ }
+ KviKvsVariant * pX = pXOrArray->array()->at(0);
+ KviKvsVariant * pY = pXOrArray->array()->at(1);
+ if(!(pX && pY))
+ {
+ c->error(__tr2qs("One of the move array parameters is empty"));
+ return false;
+ }
+ if(!(pX->asInteger(iX) && pY->asInteger(iY)))
+ {
+ c->error(__tr2qs("One of the move array parameters didn't evaluate to an integer"));
+ return false;
+ }
+ // ok: the params are correct
+ } else {
+ if(c->params()->count() < 2)
+ {
+ c->error(__tr2qs("$move() requires either an array as first parameter or two integers"));
+ return false;
+ }
+ if(!pXOrArray->asInteger(iX))
+ {
+ c->error(__tr2qs("The first parameter didn't evaluate to an array nor an integer"));
+ return false;
+ }
+ // ok: the params are correct
+ }
+
+ if(!widget())return true;
+ widget()->move(QPoint(iX,iY));
+ return true;
+}
+bool KviKvsObject_widget::function_sizeHint(KviKvsObjectFunctionCall *c)
+{
+ if(!widget())return true;
+ QSize sizehint = widget()->sizeHint();
+ KviKvsArray * a = new KviKvsArray();
+ a->set(0,new KviKvsVariant((kvs_int_t)sizehint.width()));
+ a->set(1,new KviKvsVariant((kvs_int_t)sizehint.height()));
+ c->returnValue()->setArray(a);
+ return true;
+}
+
+bool KviKvsObject_widget::function_resize(KviKvsObjectFunctionCall *c)
+{
+ KviKvsVariant * pWOrArray;
+ kvs_int_t iW,iH;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("width_or_array",KVS_PT_VARIANT,0,pWOrArray)
+ KVSO_PARAMETER("height",KVS_PT_INT,KVS_PF_OPTIONAL,iH)
+ KVSO_PARAMETERS_END(c)
+ if(pWOrArray->isArray())
+ {
+ if(pWOrArray->array()->size() < 2)
+ {
+ c->error(__tr2qs("The array passed as parameter must contain at least 2 elements"));
+ return false;
+ }
+ KviKvsVariant * pW = pWOrArray->array()->at(0);
+ KviKvsVariant * pH = pWOrArray->array()->at(1);
+ if(!(pW && pH))
+ {
+ c->error(__tr2qs("One of the resize array parameters is empty"));
+ return false;
+ }
+ if(!(pW->asInteger(iW) && pH->asInteger(iH)))
+ {
+ c->error(__tr2qs("One of the resize array parameters didn't evaluate to an integer"));
+ return false;
+ }
+ // ok: the params are correct
+ } else {
+ if(c->params()->count() < 2)
+ {
+ c->error(__tr2qs("$resize() requires either an array as first parameter or two integers"));
+ return false;
+ }
+ if(!pWOrArray->asInteger(iW))
+ {
+ c->error(__tr2qs("The first parameter didn't evaluate to an array nor an integer"));
+ return false;
+ }
+ // ok: the params are correct
+ }
+
+ if(!widget())return true;
+ widget()->resize(QSize(iW,iH));
+ return true;
+}
+bool KviKvsObject_widget::function_setFocusPolicy(KviKvsObjectFunctionCall *c)
+{
+ QString szMode;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("focus",KVS_PT_STRING,0,szMode)
+ KVSO_PARAMETERS_END(c)
+ if(!widget())return true;
+ if(KviQString::equalCI(szMode, "TabFocus"))
+ widget()->setFocusPolicy(QT_WIDGET_TABFOCUS);
+ else
+ if(KviQString::equalCI(szMode, "ClickFocus"))
+ widget()->setFocusPolicy(QT_WIDGET_CLICKFOCUS);
+ else
+ if(KviQString::equalCI(szMode, "StrongFocus"))
+ widget()->setFocusPolicy(QT_WIDGET_STRONGFOCUS);
+ else
+ if(KviQString::equalCI(szMode, "NoFocus"))
+ widget()->setFocusPolicy(QT_WIDGET_NOFOCUS);
+ else c->warning(__tr2qs("Invalid parameters"));
+ return true;
+}
+
+bool KviKvsObject_widget::function_setWFlags(KviKvsObjectFunctionCall *c)
+{
+ QStringList wflags;
+ //Qt::WindowType sum;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("widget_flags",KVS_PT_STRINGLIST,KVS_PF_OPTIONAL,wflags)
+ KVSO_PARAMETERS_END(c)
+ if (!widget()) return true;
+ #ifdef COMPILE_USE_QT4
+ Qt::WindowFlags flag,sum=0;
+ #else
+ int flag,sum=0;
+ #endif
+ for ( QStringList::Iterator it = wflags.begin(); it != wflags.end(); ++it )
+ {
+
+ flag=0;
+ for(unsigned int j = 0; j < widgettypes_num; j++)
+ {
+ if(KviQString::equalCI((*it), widgettypes_tbl[j]))
+ {
+ flag=widgettypes_cod[j];
+ break;
+ }
+ }
+ if(flag)
+ sum = sum | flag;
+ else
+ c->warning(__tr2qs("Unknown widget flag '%Q'"),&(*it));
+
+ }
+
+#ifdef COMPILE_USE_QT4
+ widget()->setWindowFlags(sum);
+#else
+ widget()->reparent(widget()->parentWidget(),sum,QPoint(widget()->x(),widget()->y()));
+#endif
+ return true;
+}
+
+bool KviKvsObject_widget::function_setFont(KviKvsObjectFunctionCall *c)
+{
+
+ QString szFamily,szStyle;
+ kvs_int_t uSize;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("size",KVS_PT_UNSIGNEDINTEGER,0,uSize)
+ KVSO_PARAMETER("family",KVS_PT_STRING,0,szFamily)
+ KVSO_PARAMETER("style",KVS_PT_STRING,0,szStyle)
+ KVSO_PARAMETERS_END(c)
+ if(!widget())return true;
+ QFont font=widget()->font();
+ font.setFamily(szFamily);
+ font.setPointSize(uSize);
+ if(KviQString::equalCI(szStyle,"italic")) font.setItalic(TRUE);
+ else if(KviQString::equalCI(szStyle,"bold")) font.setBold(TRUE);
+ else if(KviQString::equalCI(szStyle,"underline"))font.setUnderline(TRUE);
+ else if(KviQString::equalCI(szStyle,"overline")) font.setOverline(TRUE);
+ else if(KviQString::equalCI(szStyle,"strikeout"))font.setStrikeOut(TRUE);
+ else if(KviQString::equalCI(szStyle,"fixedpitch")) font.setFixedPitch(TRUE);
+ else c->warning(__tr2qs("Unknown style '%Q'"),&szStyle);
+ widget()->setFont(font);
+ return true;
+}
+
+bool KviKvsObject_widget::function_addWidgetToWrappedLayout(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject *ob;
+ kvs_int_t uCol,uRow;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETER("col",KVS_PT_UNSIGNEDINTEGER,0,uCol)
+ KVSO_PARAMETER("row",KVS_PT_UNSIGNEDINTEGER,0,uRow)
+ KVSO_PARAMETERS_END(c)
+ ob=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if(!widget())return true;
+ if (!ob)
+ {
+ c->warning(__tr2qs("Widget parameter is not an object"));
+ return true;
+ }
+ if (!ob->object())
+ {
+ c->warning(__tr2qs("Widget parameter is not a valid object"));
+ return true;
+ }
+ QLayout *lay=widget()->layout();
+ if (!lay)
+ {
+ c->warning(__tr2qs("No Layout associated to the widget "));
+ return true;
+ }
+ if(!ob->object()->isWidgetType())
+ {
+ c->warning(__tr2qs("Can't add a non-widget object"));
+ return true;
+ }
+ lay->add(((QWidget *)(ob->object())));
+ return true;
+}
+bool KviKvsObject_widget::function_reparent(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject *ob;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("widget",KVS_PT_HOBJECT,KVS_PF_OPTIONAL,hObject)
+ KVSO_PARAMETERS_END(c)
+ ob=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if(!widget()) return true;
+ if(!ob)
+ {
+ widget()->reparent(0,QPoint(widget()->x(),widget()->y()));
+ return true;
+ }
+ else
+ if(!ob->object()->isWidgetType())
+ {
+ c->warning(__tr("Parent must be a widget object"));
+ return true;
+ }
+ widget()->reparent(((QWidget *)(ob->object())),QPoint(((QWidget *)(ob->object()))->x(),((QWidget *)(ob->object()))->y()));
+ return true;
+}
+bool KviKvsObject_widget::function_setIcon(KviKvsObjectFunctionCall *c)
+{
+
+ QString icon;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("icon",KVS_PT_STRING,0,icon)
+ KVSO_PARAMETERS_END(c)
+ if(!widget())return true;
+ QPixmap * pix = g_pIconManager->getImage(icon);
+ if(pix)widget()->setIcon(*pix);
+ return true;
+}
+
+bool KviKvsObject_widget::function_setBackgroundImage(KviKvsObjectFunctionCall *c)
+{
+ QString image;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("image",KVS_PT_STRING,0,image)
+ KVSO_PARAMETERS_END(c)
+ if(!widget())return true;
+ QPixmap * pix = g_pIconManager->getImage(image);
+ if(pix)widget()->setPaletteBackgroundPixmap(*pix);
+ return true;
+}
+bool KviKvsObject_widget::function_globalCursorX(KviKvsObjectFunctionCall *c)
+{
+ if(widget())c->returnValue()->setInteger(QCursor::pos().x());
+ return true;
+}
+bool KviKvsObject_widget::function_globalCursorY(KviKvsObjectFunctionCall *c)
+{
+ if(widget())c->returnValue()->setInteger(QCursor::pos().y());
+ return true;
+}
+bool KviKvsObject_widget::function_setMask(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject *obj;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("pixmap",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETERS_END(c)
+ obj=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if(!widget())return true;
+ if (!obj)
+ {
+ c->warning(__tr2qs("Pixmap parameter is not an object"));
+ return true;
+ }
+ if (!obj->inherits("KviKvsObject_pixmap"))
+ {
+ c->warning(__tr2qs("Pixmap object required"));
+ return true;
+ }
+ QPixmap * pm=((KviKvsObject_pixmap *)obj)->getPixmap();
+#ifdef COMPILE_USE_QT4
+ QBitmap mask(pm->mask());
+#else
+ QBitmap mask(*pm->mask());
+#endif
+ if (mask.isNull()) c->warning(__tr2qs("Null mask"));
+ widget()->setMask(mask);
+ return true;
+}
+#ifdef COMPILE_USE_QT4
+bool KviKvsObject_widget::function_setAttribute(KviKvsObjectFunctionCall *c)
+{
+ QString attribute;
+ bool bFlag;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("widget_atribute",KVS_PT_STRING,0,attribute)
+ KVSO_PARAMETER("bool_flag",KVS_PT_BOOLEAN,0,bFlag)
+ KVSO_PARAMETERS_END(c)
+ if (!widget()) return true;
+ bool found=false;
+ unsigned int j = 0;
+ for(; j < widgetattributes_num; j++)
+ {
+ if(KviQString::equalCI(attribute, widgetattributes_tbl[j]))
+ {
+ found=true;
+ break;
+ }
+ }
+ if(found)widget()->setAttribute(widgetattributes_cod[j],bFlag);
+ else c->warning(__tr2qs("Unknown widget attribute '%Q'"),&attribute);
+ return true;
+}
+#endif
+
+#include "m_class_widget.moc"
diff --git a/src/modules/objects/class_widget.h b/src/modules/objects/class_widget.h
new file mode 100644
index 00000000..ecd87bba
--- /dev/null
+++ b/src/modules/objects/class_widget.h
@@ -0,0 +1,113 @@
+#ifndef _CLASS_WIDGET_H_
+#define _CLASS_WIDGET_H_
+//vim: ts=8
+// File : class_widget.h
+// Creation date : Mon 11 Sep 16:34:36 CET 2000 by Krzysztof Godlewski
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include <kvi_tal_tooltip.h>
+#include "kvi_string.h"
+#include "qtooltip.h"
+#include "object_macros.h"
+
+
+class KviKvsObject_widget : public KviKvsObject
+{
+ Q_OBJECT
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_widget)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+ virtual bool eventFilter(QObject *o,QEvent *e);
+
+ // ok, it is clear that we're messing with the naming conventions for the
+ // object classes :D
+ // let's try to use this one:
+ // function_isEnabled
+ // function_setEnabled..
+ // ... etc
+ // so the name of the C++ function matches exactly the name of the KVS function at this point
+
+ // let's also try to keep alphabetic order for the functions here.. so one can find them quickly
+
+ bool function_addWidgetToWrappedLayout(KviKvsObjectFunctionCall *c);
+ bool function_backgroundColor(KviKvsObjectFunctionCall *c);
+ bool function_caption(KviKvsObjectFunctionCall *c);
+ bool function_centerToScreen(KviKvsObjectFunctionCall *c);
+ bool function_fontAscent(KviKvsObjectFunctionCall * c);
+ bool function_fontDescent(KviKvsObjectFunctionCall * c);
+ bool function_fontMetricsHeight(KviKvsObjectFunctionCall * c);
+ bool function_fontMetricsWidth(KviKvsObjectFunctionCall * c);
+ bool function_foregroundColor(KviKvsObjectFunctionCall *c);
+ bool function_geometry(KviKvsObjectFunctionCall *c);
+ bool function_globalCursorX(KviKvsObjectFunctionCall *c);
+ bool function_globalCursorY(KviKvsObjectFunctionCall *c);
+ bool function_hasFocus(KviKvsObjectFunctionCall *c);
+ bool function_height(KviKvsObjectFunctionCall *);
+ bool function_hide(KviKvsObjectFunctionCall *);
+ bool function_isEnabled(KviKvsObjectFunctionCall *c);
+ bool function_isTopLevel(KviKvsObjectFunctionCall *c);
+ bool function_isVisible(KviKvsObjectFunctionCall *c);
+ bool function_lower(KviKvsObjectFunctionCall *);
+ bool function_mapFromGlobal(KviKvsObjectFunctionCall *c);
+ bool function_mapToGlobal(KviKvsObjectFunctionCall *c);
+ bool function_move(KviKvsObjectFunctionCall *c);
+ bool function_parentWidget(KviKvsObjectFunctionCall *c);
+ bool function_raise(KviKvsObjectFunctionCall *);
+ bool function_repaint(KviKvsObjectFunctionCall *c);
+ bool function_reparent(KviKvsObjectFunctionCall *c);
+ bool function_resize(KviKvsObjectFunctionCall *c);
+ bool function_screenResolution(KviKvsObjectFunctionCall * c);
+ bool function_setBackgroundColor(KviKvsObjectFunctionCall *c);
+ bool function_setBackgroundImage(KviKvsObjectFunctionCall *c);
+ bool function_setCaption(KviKvsObjectFunctionCall *c);
+ bool function_setEnabled(KviKvsObjectFunctionCall *c);
+ bool function_setFocus(KviKvsObjectFunctionCall *c);
+ bool function_setFocusPolicy(KviKvsObjectFunctionCall *c);
+ bool function_setFont(KviKvsObjectFunctionCall *c);
+ bool function_setIcon(KviKvsObjectFunctionCall *c);
+ bool function_setMaximumWidth(KviKvsObjectFunctionCall *c);
+ bool function_setMaximumHeight(KviKvsObjectFunctionCall *c);
+ bool function_setMinimumWidth(KviKvsObjectFunctionCall *c);
+ bool function_setMinimumHeight(KviKvsObjectFunctionCall *c);
+ bool function_setMouseTracking(KviKvsObjectFunctionCall *c);
+ bool function_setPaletteForeground(KviKvsObjectFunctionCall *c);
+ bool function_setToolTip(KviKvsObjectFunctionCall *);
+ bool function_setGeometry(KviKvsObjectFunctionCall *c);
+ bool function_setWFlags(KviKvsObjectFunctionCall *c);
+ bool function_show(KviKvsObjectFunctionCall *c);
+ bool function_sizeHint(KviKvsObjectFunctionCall *c);
+ bool function_width(KviKvsObjectFunctionCall *);
+ bool function_x(KviKvsObjectFunctionCall *);
+ bool function_y(KviKvsObjectFunctionCall *);
+ bool function_setMask(KviKvsObjectFunctionCall *c);
+
+
+#ifdef COMPILE_USE_QT4
+bool function_setAttribute(KviKvsObjectFunctionCall *c);
+#endif
+
+signals:
+ void aboutToDie();
+};
+
+#endif // !_CLASS_WIDGET_H_
diff --git a/src/modules/objects/class_window.cpp b/src/modules/objects/class_window.cpp
new file mode 100644
index 00000000..9218cb8f
--- /dev/null
+++ b/src/modules/objects/class_window.cpp
@@ -0,0 +1,158 @@
+//
+// File : class_window.cpp
+// Creation date : Tue Now 26 21:39:59 CEST 2002 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+
+#include "class_window.h"
+
+#include "kvi_error.h"
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+#include "kvi_frame.h"
+
+
+
+KviKvsScriptWindowWindow::KviKvsScriptWindowWindow(KviFrame * pParent,const QString &szName)
+: KviWindow(KVI_WINDOW_TYPE_SCRIPTOBJECT,pParent,szName)
+{
+ m_pCentralWidget = 0;
+ #ifdef COMPILE_USE_QT4
+ setBackgroundMode(Qt::NoBackground);
+ #else
+ setBackgroundMode(QWidget::NoBackground);
+ #endif
+}
+
+KviKvsScriptWindowWindow::~KviKvsScriptWindowWindow()
+{
+}
+
+void KviKvsScriptWindowWindow::setCentralWidget(KviKvsObject_widget *o,QWidget * w)
+{
+ m_pCentralWidgetObject = o;
+ m_pCentralWidget = w;
+}
+
+void KviKvsScriptWindowWindow::resizeEvent(QResizeEvent *e)
+{
+ if(m_pCentralWidget)
+ m_pCentralWidget->setGeometry(0,0,width(),height());
+}
+
+void KviKvsScriptWindowWindow::centralWidgetObjectDestroyed()
+{
+ m_pCentralWidget = 0;
+ m_pCentralWidgetObject = 0;
+}
+
+void KviKvsScriptWindowWindow::centralWidgetDestroyed()
+{
+ m_pCentralWidget = 0;
+ m_pCentralWidgetObject = 0;
+}
+
+
+
+
+/*
+ @doc: window
+ @title:
+ window class
+ @type:
+ class
+ @short:
+ A MDI window object
+ @inherits:
+ [class]object[/class]
+ [class]widget[/class]
+ @description:
+ This class rappresents a MDI window in a KVIrc frame.
+ Regardless of the parent object passed, the window will be always
+ a "physical" child of the frame window: you can't embed a window object
+ inside a widget or another window. The parent object will just "own" this
+ window object and eventually destroy it when it dies.
+ This class can manage only a single central child widget that must
+ be set with $setCentralWidget().
+ The central widget MUST be set before you initially call show()
+ @functions:
+*/
+
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_window,"window","widget")
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_window,"setCaption", functionsetCaption)
+ KVSO_REGISTER_HANDLER(KviKvsObject_window,"setCentralWidget", functionsetCentralWidget)
+// KVSO_REGISTER_HANDLER(KviKvsObject_window,"setIcon", functionsetIcon)
+KVSO_END_REGISTERCLASS(KviKvsObject_window)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_window,KviKvsObject_widget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_window)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_window)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_window)
+
+bool KviKvsObject_window::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ KviWindow * w = new KviKvsScriptWindowWindow(pContext->window()->frame(),name());
+ setObject(w);
+ pContext->window()->frame()->addWindow(w,false);
+ w->minimize(); // must be minimized before children are added, otherwise the focus handling goes nuts...
+
+ return true;
+}
+bool KviKvsObject_window::functionsetCaption(KviKvsObjectFunctionCall *c)
+{
+ QString szCaption;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("caption",KVS_PT_STRING,0,szCaption)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((KviKvsScriptWindowWindow *)widget())->setCaptionString(szCaption);
+ return true;
+}
+bool KviKvsObject_window::functionsetCentralWidget(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject *ob;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETERS_END(c)
+ ob=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if(!widget())return true;
+ if(!ob->object()->isWidgetType())
+ {
+ c->warning(__tr2qs("Can't add a non-widget object"));
+ return true;
+ }
+ if(!ob->inherits("KviKvsObject_widget"))
+ {
+ c->warning(__tr2qs("Can't add a non-widget object"));
+ return true;
+ }
+ ((KviKvsScriptWindowWindow *)widget())->setCentralWidget((KviKvsObject_widget *)ob,((KviKvsObject_widget *)ob)->widget());
+ return true;
+}
+#include "m_class_window.moc"
diff --git a/src/modules/objects/class_window.h b/src/modules/objects/class_window.h
new file mode 100644
index 00000000..1f2ae482
--- /dev/null
+++ b/src/modules/objects/class_window.h
@@ -0,0 +1,64 @@
+#ifndef _CLASS_WINDOW_H_
+#define _CLASS_WINDOW_H_
+//
+// File : class_window.h
+// Creation date : Tue Nov 26 21:37:48 CEST 2002 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "class_widget.h"
+#include "kvi_window.h"
+
+#include "object_macros.h"
+
+class KviKvsObject_window : public KviKvsObject_widget
+{
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_window)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+ bool functionsetCaption(KviKvsObjectFunctionCall *c);
+ bool functionsetCentralWidget(KviKvsObjectFunctionCall *c);
+
+};
+
+
+class KviKvsScriptWindowWindow : public KviWindow
+{
+ Q_OBJECT
+public:
+ KviKvsScriptWindowWindow(KviFrame * pParent,const QString &szName);
+ ~KviKvsScriptWindowWindow();
+protected:
+ KviKvsObject_widget * m_pCentralWidgetObject;
+ QWidget * m_pCentralWidget;
+public:
+ void setCentralWidget(KviKvsObject_widget *o,QWidget * w);
+ void setCaptionString(const QString &s){ setFixedCaption(s); };
+ virtual void resizeEvent(QResizeEvent *e);
+protected slots:
+ void centralWidgetObjectDestroyed();
+ void centralWidgetDestroyed();
+};
+
+#endif // !_CLASS_WINDOW_H_
diff --git a/src/modules/objects/class_wizard.cpp b/src/modules/objects/class_wizard.cpp
new file mode 100644
index 00000000..091b3065
--- /dev/null
+++ b/src/modules/objects/class_wizard.cpp
@@ -0,0 +1,371 @@
+//mdm:
+// File : class_wizard.cpp
+// Creation date : Mon Apr 10 19:21:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include <kvi_tal_wizard.h>
+#include <qpushbutton.h>
+#include "class_wizard.h"
+#include "kvi_error.h"
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+
+
+
+/*
+ @doc: wizard
+ @keyterms:
+ wizard object class,
+ @title:
+ wizard class
+ @type:
+ class
+ @short:
+ The wizard class provides a framework for wizard dialogs.
+ @inherits:
+ [class]object[/class]
+ [class]widget[/class]
+ @description:
+ A wizard is an input dialog that consists of a sequence of dialog pages.It walks the user through a process step by step.[br]
+ @functions:
+ !fn: $addPage(<page_widget:object>,<title:string>)
+ Add a page with title.<page_widget> must be a widget's object.
+ !fn: $insertPage(<page_widget>,<title:string>,<index:integer>)
+ Inserts a page at the position <index>. If index is -1, page will appended to the end of the wizard's page sequenze.
+ !fn: $setTitle(<page>,<title:string>)
+ Sets the title for page page to title text.
+ !fn: $setBackEnabled(<page_widget>,<bEnabled:boolean>)
+ If enable is set to 1, page page has a Back button; otherwise page has no Back button.[br]
+ By default all pages have this button.
+ !fn: $setNextEnabled(<page_widget>,<bEnabled:boolean>)
+ If enable is set to 1, page page has a Next button; otherwise the Next button on page is disabled.[br]
+ By default all pages have this button.
+ !fn: $setFinishEnabled(<page_widget>,<bEnabled:boolean>)
+ If enable is set to 1, page page has a Finish button; otherwise the Finish button on page is disabled.[br]
+ By default NO pages have this button.
+ !fn: $setHelpEnabled(<page_widget>,<bEnabled:boolean>)
+ If enable is set to 1, page page has a Help button; otherwise the Help button on page is disabled.[br]
+ By default all pages have this button.
+ !fn: $setNextBtnText(<text:string>)
+ Set the text for button Next.
+ !fn: $setBackBtnText(<text:string>)
+ Set the text for button Back.
+ !fn: $setFinishBtnText(<text:string>)
+ Set the text for button Finish.
+ !fn: $setHelpBtnText(<text:string>)
+ Set the text for button Help.
+ !fn: $acceptEvent()
+ This function is called when the user click on the Finish button.
+ !fn: $rejectEvent()
+ This function is called when thie user click on the Reject button.
+ !fn: $nextClickedEvent()
+ This function is called when the user click on the Next button.
+ !fn: $backClickedEvent()
+ This function is called when thie user click on the Back button.
+ @signals:
+ !sg: $nextClicked()
+ This signal is emitted by the default implementation of [classfnc]$nextClickedEvent[/classfnc]().
+ !sg: $backClicked()
+ This signal is emitted by the default implementation of [classfnc]$backClickedEvent[/classfnc]().
+
+*/
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_wizard,"wizard","widget")
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_wizard,"addPage", functionaddPage)
+ KVSO_REGISTER_HANDLER(KviKvsObject_wizard,"insertPage", functioninsertPage)
+ KVSO_REGISTER_HANDLER(KviKvsObject_wizard,"setTitle", functionsetTitle)
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_wizard,"setBackEnabled", functionsetBackEnabled);
+ KVSO_REGISTER_HANDLER(KviKvsObject_wizard,"setNextEnabled", functionsetNextEnabled);
+ KVSO_REGISTER_HANDLER(KviKvsObject_wizard,"setFinishEnabled", functionsetFinishEnabled);
+ KVSO_REGISTER_HANDLER(KviKvsObject_wizard,"setHelpEnabled", functionsetHelpEnabled);
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_wizard,"setBackBtnText", functionsetBackBtnText);
+ KVSO_REGISTER_HANDLER(KviKvsObject_wizard,"setNextBtnText", functionsetNextBtnText);
+ KVSO_REGISTER_HANDLER(KviKvsObject_wizard,"setFinishBtnText", functionsetFinishBtnText);
+ KVSO_REGISTER_HANDLER(KviKvsObject_wizard,"setHelpBtnText", functionsetHelpBtnText);
+ KVSO_REGISTER_HANDLER(KviKvsObject_wizard,"nextClickedEvent", functionnextClickedEvent);
+ KVSO_REGISTER_HANDLER(KviKvsObject_wizard,"backClickedEvent", functionbackClickedEvent);
+
+
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_wizard,"acceptEvent")
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_wizard,"rejectEvent")
+
+KVSO_END_REGISTERCLASS(KviKvsObject_wizard)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_wizard,KviKvsObject_widget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_wizard)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_wizard)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_wizard)
+
+bool KviKvsObject_wizard::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ setObject(new KviKvsMdmWizard(parentScriptWidget(), name(),this), true);
+
+ return true;
+}
+bool KviKvsObject_wizard::functionaddPage(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject *ob;
+ QString szLabel;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("page_widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETER("label",KVS_PT_STRING,0,szLabel)
+ KVSO_PARAMETERS_END(c)
+ ob=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if(!widget())return true;
+ if(!ob->object()->isWidgetType())
+ {
+ c->warning(__tr2qs("Can't add a non-widget object"));
+ return true;
+ }
+ ((KviTalWizard *)widget())->addPage(((QWidget *)(ob->object())),szLabel);
+ return true;
+}
+bool KviKvsObject_wizard::functioninsertPage(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject *ob;
+ QString szLabel;
+ kvs_int_t uIndex;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("page_widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETER("label",KVS_PT_STRING,0,szLabel)
+ KVSO_PARAMETER("index",KVS_PT_UNSIGNEDINTEGER,0,uIndex)
+ KVSO_PARAMETERS_END(c)
+ ob=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if(!widget())return true;
+ if(!ob->object()->isWidgetType())
+ {
+ c->warning(__tr2qs("Can't add a non-widget object"));
+ return true;
+ }
+ ((KviTalWizard *)widget())->insertPage(((QWidget *)(ob->object())),szLabel,uIndex);
+ return true;
+}
+
+
+bool KviKvsObject_wizard::functionsetTitle(KviKvsObjectFunctionCall *c)
+{
+ KviKvsObject *ob;
+ QString szTitle;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("page_widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETER("title",KVS_PT_STRING,0,szTitle)
+ KVSO_PARAMETERS_END(c)
+ ob=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if(!widget())return true;
+ if(!ob->object()->isWidgetType())
+ {
+ c->warning(__tr2qs("Widget object required"));
+ return true;
+ }
+ ((KviTalWizard *)widget())->setPageTitle(((QWidget *)(ob->object())),szTitle);
+ return true;
+}
+bool KviKvsObject_wizard::functionsetBackEnabled(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KviKvsObject *ob;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("page_widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ ob=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if(!widget())return true;
+ if(!ob->object()->isWidgetType())
+ {
+ c->warning(__tr2qs("Widget object required"));
+ return true;
+ }
+ ((KviTalWizard *)widget())->setBackEnabled(((QWidget *)(ob->object())),bEnabled);
+ return true;
+}
+
+bool KviKvsObject_wizard::functionsetNextEnabled(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KviKvsObject *ob;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("page_widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ ob=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if(!widget())return true;
+ if(!ob->object()->isWidgetType())
+ {
+ c->warning(__tr2qs("Widget object required"));
+ return true;
+ }
+ ((KviTalWizard *)widget())->setNextEnabled(((QWidget *)(ob->object())),bEnabled);
+ return true;
+}
+bool KviKvsObject_wizard::functionsetFinishEnabled(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KviKvsObject *ob;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("page_widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ ob=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if(!widget())return true;
+ if(!ob->object()->isWidgetType())
+ {
+ c->warning(__tr2qs("Widget object required"));
+ return true;
+ }
+ ((KviTalWizard *)widget())->setFinishEnabled(((QWidget *)(ob->object())),bEnabled);
+ return true;
+}
+bool KviKvsObject_wizard::functionsetHelpEnabled(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KviKvsObject *ob;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("page_widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ ob=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if(!widget())return true;
+ if(!ob->object()->isWidgetType())
+ {
+ c->warning(__tr2qs("Widget object required"));
+ return true;
+ }
+ ((KviTalWizard *)widget())->setHelpEnabled(((QWidget *)(ob->object())),bEnabled);
+ return true;
+}
+bool KviKvsObject_wizard::functionsetBackBtnText(KviKvsObjectFunctionCall *c)
+{
+ QString szText;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szText)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((KviTalWizard *)widget())->KviTalWizard::backButton()->setText(szText);
+ return true;
+}
+bool KviKvsObject_wizard::functionsetNextBtnText(KviKvsObjectFunctionCall *c)
+{
+ QString szText;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szText)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((KviTalWizard *)widget())->KviTalWizard::nextButton()->setText(szText);
+ return true;
+}
+bool KviKvsObject_wizard::functionsetHelpBtnText(KviKvsObjectFunctionCall *c)
+{
+ QString szText;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szText)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((KviTalWizard *)widget())->KviTalWizard::helpButton()->setText(szText);
+ return true;
+}
+bool KviKvsObject_wizard::functionsetFinishBtnText(KviKvsObjectFunctionCall *c)
+{
+ QString szText;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("text",KVS_PT_STRING,0,szText)
+ KVSO_PARAMETERS_END(c)
+ if (widget())
+ ((KviTalWizard *)widget())->KviTalWizard::finishButton()->setText(szText);
+ return true;
+}
+bool KviKvsObject_wizard::accept()
+{
+ KviKvsVariantList * pParams = 0;
+ callFunction(this,"acceptEvent",0,pParams);
+ return true;
+}
+bool KviKvsObject_wizard::reject()
+{
+ KviKvsVariantList * pParams = 0;
+ callFunction(this,"rejectEvent",0,pParams);
+ return true;
+}
+bool KviKvsObject_wizard::functionnextClickedEvent(KviKvsObjectFunctionCall *c)
+{
+ emitSignal("nextClicked",c);
+ return true;
+}
+
+void KviKvsObject_wizard::nextClicked()
+{
+ KviKvsVariantList *params=0;
+ callFunction(this,"nextClickedEvent",params);
+}
+bool KviKvsObject_wizard::functionbackClickedEvent(KviKvsObjectFunctionCall *c)
+{
+ emitSignal("backClicked",c);
+ return true;
+}
+
+void KviKvsObject_wizard::backClicked()
+{
+ KviKvsVariantList *params=0;
+ callFunction(this,"backClickedEvent",params);
+}
+KviKvsMdmWizard::KviKvsMdmWizard(QWidget * par,const char * name,KviKvsObject_wizard * parent)
+:KviTalWizard(par)
+{
+ m_pParentScript=parent;
+ connect (this->backButton(),SIGNAL(clicked()),this,SLOT(slotBackClicked()));
+ connect (this->nextButton(),SIGNAL(clicked()),this,SLOT(slotNextClicked()));
+}
+void KviKvsMdmWizard::accept()
+{
+ if(m_pParentScript->accept())KviTalWizard::accept();
+
+}
+void KviKvsMdmWizard::reject()
+{
+ if(m_pParentScript->reject())KviTalWizard::reject();
+
+}
+void KviKvsMdmWizard::slotNextClicked()
+{
+ m_pParentScript->nextClicked();
+}
+void KviKvsMdmWizard::slotBackClicked()
+{
+ m_pParentScript->backClicked();
+}
+KviKvsMdmWizard::~KviKvsMdmWizard()
+{
+}
+#include "m_class_wizard.moc"
diff --git a/src/modules/objects/class_wizard.h b/src/modules/objects/class_wizard.h
new file mode 100644
index 00000000..0c605efe
--- /dev/null
+++ b/src/modules/objects/class_wizard.h
@@ -0,0 +1,79 @@
+#ifndef _CLASS_WIZARD_H_
+#define _CLASS_WIZARD_H_
+//
+// File : class_wizard.h
+// Creation date : Fri Jan 28 14:21:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include <kvi_tal_wizard.h>
+#include "class_widget.h"
+
+
+#include "object_macros.h"
+
+class KviKvsObject_wizard : public KviKvsObject_widget
+{
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_wizard)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+ bool accept();
+ bool reject();
+ void nextClicked();
+ void backClicked();
+
+
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+ bool functionaddPage(KviKvsObjectFunctionCall *c);
+ bool functioninsertPage(KviKvsObjectFunctionCall *c);
+ bool functionremovePage(KviKvsObjectFunctionCall *c);
+ bool functionsetTitle(KviKvsObjectFunctionCall *c);
+ bool functionsetBackEnabled(KviKvsObjectFunctionCall *c);
+ bool functionsetNextEnabled(KviKvsObjectFunctionCall *c);
+ bool functionsetFinishEnabled(KviKvsObjectFunctionCall *c);
+ bool functionsetHelpEnabled(KviKvsObjectFunctionCall *c);
+
+ bool functionsetBackBtnText(KviKvsObjectFunctionCall *c);
+ bool functionsetNextBtnText(KviKvsObjectFunctionCall *c);
+ bool functionsetFinishBtnText(KviKvsObjectFunctionCall *c);
+ bool functionsetHelpBtnText(KviKvsObjectFunctionCall *c);
+
+ bool functionnextClickedEvent(KviKvsObjectFunctionCall *c);
+ bool functionbackClickedEvent(KviKvsObjectFunctionCall *c);
+
+};
+class KviKvsMdmWizard : public KviTalWizard
+
+{
+ Q_OBJECT
+public:
+ KviKvsMdmWizard(QWidget * par,const char * name,KviKvsObject_wizard *);
+ void accept();
+ void reject();
+ virtual ~KviKvsMdmWizard();
+protected:
+ KviKvsObject_wizard *m_pParentScript;
+protected slots:
+ void slotNextClicked();
+ void slotBackClicked();
+};
+#endif //!_CLASS_WIZARD_H_
diff --git a/src/modules/objects/class_workspace.cpp b/src/modules/objects/class_workspace.cpp
new file mode 100644
index 00000000..1f6d8a3e
--- /dev/null
+++ b/src/modules/objects/class_workspace.cpp
@@ -0,0 +1,262 @@
+//mdm:
+// File : class_workspace.cpp
+// Creation date : Sat Feb 12 23:01:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor).
+// Thanks to Lucia Papini (^ashura^) for English help.
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+
+#include <qworkspace.h>
+#include "class_workspace.h"
+#include "kvi_error.h"
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+
+/*
+ @doc: workspace
+ @keyterms:
+ workspace object class,
+ @title:
+ workspace class
+ @type:
+ class
+ @short:
+ Provides a MDI workspace object
+ @inherits:
+ [class]object[/class]
+ [class]widget[/class]
+ @description:
+ This widget provides a workspace window that can contain decorated window.
+ @functions:
+ !fn: <object> $activeWindow()
+ Returns the active window, or 0 if no window is active.
+ !fn: <boolean> $scrollBarsEnabled()
+ Returns TRUE if the workspace provides scrollbars; otherwise returns FALSE.
+ !fn: $setscrollBarsEnabled(<bEnabled:boolean>)
+ Sets whether the workspace provides scrollbars to enable. (bEnabled 1 or 0)
+ !fn: $cascade()
+ Arranges all the child windows in a cascade pattern.
+ !fn: $tile()
+ Arranges all child windows in a tile pattern.
+ !fn: $closeActiveWindow()
+ Closes the child window that is currently active.
+ !fn: $closeAllWindows()
+ Closes all child windows.
+ !fn: $activateNextWindow()
+ Activates the next window in the child window chain.
+ !fn: $activatePrevWindow()
+ Activates the prev window in the child window chain.[br]
+
+ |----CLASS EXAMPLE----|[br]
+ |-Start:[br]
+ #Let's start.[br]
+ #We start the main class creation, in the constructor we do the[br]
+ #widget's showing, to give a particular pop-up[br]
+ #creation appearance.[br]
+ class (ws,widget)[br]
+ {[br]
+ constructor[br]
+ {[br]
+ $$->$setGeometry(%X,%Y,100,100)[br]
+ $$->%label=$new(label,$$)[br]
+ $$->%label->$settext("Another class by N\&G")[br]
+ $$->%label->$setautoresize(1)[br]
+ $$->$show()[br]
+ }[br]
+ }[br]
+ #We create the new workspace, and we set a 640x480 size with widget $resize[br]
+ #command.[br]
+ %Workspace=$new(workspace)[br]
+ %Workspace->$resize(640,480)[br]
+ #Now we make a cycling costruction of the widgets(look at the class),[br]
+ #and give to the widgets a random X and Y coordinates.[br]
+ #It takes few seconds to show the effects, be patient.[br]
+ %I=0[br]
+ while (%I<100)[br]
+ {[br]
+ %X=$rand(500)[br]
+ %Y=$rand(480)[br]
+ %Widget=$new(ws,%Workspace)[br]
+ %I++[br]
+ }[br]
+ #Let's show the fireworks! EnJoY![br]
+ %Workspace->$show()[br]
+ |-Start:[br]
+ |-|EXAMPLE n2:[br]
+ #This is like the first example but it has a particular animation effect.[br]
+ %Hex[]=$array(0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)[br]
+ class (ws,widget)[br]
+ {[br]
+ constructor[br]
+ {[br]
+ $$->$setGeometry(%X,%Y,100,100)[br]
+ $$->%lay=$new(layout,$$)[br]
+ %i=0[br]
+ while (%i<10)[br]
+ {[br]
+ $$->%label=$new(label,$$)[br]
+ $$->%label->$settext("Another class by N\&G")[br]
+ %color=%Hex[$rand(15)]%Hex[$rand(15)]%Hex[$rand(15)]%Hex[$rand(15)]%Hex[$rand(15)]%Hex[$rand(15)][br]
+ $$->%label->$setforegroundcolor(%color)[br]
+ $$->%label->$setautoresize(1)[br]
+ $$->%lay->$addwidget($$->%label,%i,0)[br]
+ %i++;[br]
+ }[br]
+ $$->$show()[br]
+ }[br]
+ mousepressevent[br]
+ {[br]
+ if ($istimer(cycle) == 1) killtimer cycle[br]
+ }[br]
+ }[br]
+ %Workspace=$new(workspace)[br]
+ %Workspace->$resize(640,480)[br]
+ %Workspace->$setCaption("Hit the mouse to stop cycling windows....")[br]
+ %I=0[br]
+ %Cicle=1[br]
+ while (%I<20)[br]
+ {[br]
+ %X=$rand(500)[br]
+ %Y=$rand(480)[br]
+ %Widget=$new(ws,%Workspace)[br]
+ %I++[br]
+ }[br]
+ %Workspace->$show[br]
+ timer (cycle,3000)[br]
+ {[br]
+ if (%Cicle==1) %Workspace->$tile()[br]
+ if (%Cicle==2)[br]
+ {[br]
+ %Workspace->$cascade()[br]
+ %Cicle=1[br]
+ return[br]
+ }[br]
+ %Cicle++[br]
+ }[br]
+ privateimpl(%Workspace,mousepressevent)[br]
+ {[br]
+ if ($istimer(cycle) == 1) killtimer cycle[br]
+ }[br]
+ #-|End.[br]
+
+*/
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_workspace,"workspace","widget")
+ KVSO_REGISTER_HANDLER(KviKvsObject_workspace,"activeWindow", functionactiveWindow);
+ KVSO_REGISTER_HANDLER(KviKvsObject_workspace,"scrollBarsEnabled", functionscrollBarsEnabled);
+ KVSO_REGISTER_HANDLER(KviKvsObject_workspace,"setscrollBarsEnabled", functionsetscrollBarsEnabled);
+ KVSO_REGISTER_HANDLER(KviKvsObject_workspace,"cascade", functioncascade);
+ KVSO_REGISTER_HANDLER(KviKvsObject_workspace,"tile", functiontile);
+ KVSO_REGISTER_HANDLER(KviKvsObject_workspace,"closeActiveWindow", functioncloseActiveWindow);
+ KVSO_REGISTER_HANDLER(KviKvsObject_workspace,"closeAllWindows", functioncloseAllWindows);
+ KVSO_REGISTER_HANDLER(KviKvsObject_workspace,"activateNextWindow", functionactivateNextWindow);
+ KVSO_REGISTER_HANDLER(KviKvsObject_workspace,"activatePrevWindow", functionactivatePrevWindow);
+KVSO_END_REGISTERCLASS(KviKvsObject_workspace)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_workspace,KviKvsObject_widget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_workspace)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_workspace)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_workspace)
+
+bool KviKvsObject_workspace::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ setObject(new QWorkspace(parentScriptWidget(), name()), true);
+ return true;
+}
+
+bool KviKvsObject_workspace::functionactiveWindow(KviKvsObjectFunctionCall *c)
+{
+ //if(widget()) c->returnValue()->setHObject((unsigned long)(((QWorkspace *)widget())->activeWindow()));
+ // FIXME!
+ c->returnValue()->setHObject(0);
+ return true; //?pFIX ME?
+}
+
+bool KviKvsObject_workspace::functionscrollBarsEnabled(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ c->returnValue()->setBoolean(((QWorkspace *)widget())->scrollBarsEnabled());
+ return true;
+}
+
+bool KviKvsObject_workspace::functionsetscrollBarsEnabled(KviKvsObjectFunctionCall *c)
+{
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if(widget())
+ ((QWorkspace *)widget())->setScrollBarsEnabled(bEnabled);
+ return true;
+}
+
+bool KviKvsObject_workspace::functioncascade(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ ((QWorkspace *)widget())->cascade();
+ return true;
+}
+
+bool KviKvsObject_workspace::functiontile(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ ((QWorkspace *)widget())->tile();
+ return true;
+}
+
+bool KviKvsObject_workspace::functioncloseActiveWindow(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ ((QWorkspace *)widget())->closeActiveWindow();
+ return true;
+}
+
+bool KviKvsObject_workspace::functioncloseAllWindows(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ ((QWorkspace *)widget())->closeAllWindows();
+ return true;
+}
+
+bool KviKvsObject_workspace::functionactivateNextWindow(KviKvsObjectFunctionCall *c)
+{
+ if(widget())
+ ((QWorkspace *)widget())->activateNextWindow();
+ return true;
+}
+
+bool KviKvsObject_workspace::functionactivatePrevWindow(KviKvsObjectFunctionCall *c)
+{
+ if(widget()){
+ #ifdef COMPILE_USE_QT4
+ ((QWorkspace *)widget())->activatePreviousWindow();
+ #else
+ ((QWorkspace *)widget())->activatePrevWindow();
+ #endif
+ }
+ return true;
+}
diff --git a/src/modules/objects/class_workspace.h b/src/modules/objects/class_workspace.h
new file mode 100644
index 00000000..c18264df
--- /dev/null
+++ b/src/modules/objects/class_workspace.h
@@ -0,0 +1,53 @@
+#ifndef _CLASS_WORKSPACE_H_
+#define _CLASS_WORKSPACE_H_
+//mdm:
+// File : class_workspace.h
+// Creation date : Sat Feb 12 23:05:58 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+
+
+#include <qworkspace.h>
+#include "class_widget.h"
+
+class KviKvsObject_workspace : public KviKvsObject_widget
+{
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_workspace)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+
+ bool functionactiveWindow(KviKvsObjectFunctionCall *c);
+ bool functionscrollBarsEnabled(KviKvsObjectFunctionCall *c);
+ bool functionsetscrollBarsEnabled(KviKvsObjectFunctionCall *c);
+ bool functioncascade(KviKvsObjectFunctionCall *c);
+ bool functiontile(KviKvsObjectFunctionCall *c);
+ bool functioncloseActiveWindow(KviKvsObjectFunctionCall *c);
+ bool functioncloseAllWindows(KviKvsObjectFunctionCall *c);
+ bool functionactivateNextWindow(KviKvsObjectFunctionCall *c);
+ bool functionactivatePrevWindow(KviKvsObjectFunctionCall *c);
+};
+
+#endif //!_CLASS_WORKSPACE_H_
diff --git a/src/modules/objects/class_wrapper.cpp b/src/modules/objects/class_wrapper.cpp
new file mode 100644
index 00000000..02ff632c
--- /dev/null
+++ b/src/modules/objects/class_wrapper.cpp
@@ -0,0 +1,269 @@
+//mdm:
+// File : class_wrapper.cpp
+// Creation date : Fri Jan 28 14:21:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "class_wrapper.h"
+#include "kvi_error.h"
+#include "kvi_debug.h"
+
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+
+#include "class_widget.h"
+#include <qwidget.h>
+#ifndef COMPILE_USE_QT4
+ #include <qobjectlist.h>
+ #include <qwidgetlist.h>
+#endif
+#include "kvi_app.h"
+#include "kvi_frame.h"
+
+
+/*
+ @doc: wrapper
+ @keyterms:
+ wrapper object class,
+ @title:
+ wrapper class
+ @type:
+ class
+ @short:
+ Provides a wrapper class that hooks to an existing Qt graphic object modifying it.
+ @inherits:
+ [class]object[/class]
+ [class]widget[/class]
+ @description:
+ This is a class for advanced KVIrc scripting.[br]
+ It can wrap any existing KVIrc widget.[br]
+ This class allows some unbelievable changes to the whole graphic environment of the kvirc,[br]
+ in fact, could hook every widget, you can modify the property or you can be inserted other widget as child of this...[br]
+ in short you have absolute liberty. [br]
+ The power of this class is fantastic, because it allows the change at "run time" of almost all the elements of the Kvirc.[br]
+ But to use this class in optimal way and to exploit its power, you have to know the Qt.... so you won't have limits [br]
+ The KVIrc Qt widgets are arranged in trees (just as the objects).[br]
+ The difference is that there are more toplevel widgets (and so more than one tree).[br]
+ You can use [fnc]$objects.dump()[/fnc] to take a look at the KVIrc Qt objects tree.[br]
+ Here is a part of the tree:[br][br]
+ Ptr 14332520: top level object: kvirc_frame, class KviFrame, visible, rect = -4, -4, 1024, 708
+ Ptr 17296024: object: qt_top_dock, class QDockArea
+ Ptr 14882136: object: qt_custom_toolbar, class KviCustomToolBar
+ Ptr 18143368: object: qt_dockwidget_internal, class QDockWindowTitleBar
+ [br][br]
+ Every listed widget has a "name", a "class" and a set of properties.[br]
+ The first entry in this example is a KVIrc server window, class "KviFrame" and name "kvirc_frame":
+ it is a toplevel widget.[br]
+ The "qt_top_dock", "qt_custom_toolbar" and the "qt_dockwidget_internal" are
+ direct children of that widget.[br]
+ To indicate a specific widget we will use the "class::name" form.[br]
+ So to indicate the main KVIrc frame you will use "KviFrame::kvirc_main_frame".
+ Look at this example:[br]
+ %A=$new(wrapper,0,test,KviFrame::kvirc_frame,KviStatusBar::unnamed)[br]
+ %A->$setBackGroundColor(FFFFFF)[br]
+ For first thing we create an object type wrapper,then we flow the tree that there from the command /object.dump and we will have:[br]
+ . [br]
+ . [br]
+ Ptr 14196288: top level object: kvirc_frame, class KviFrame, visible, rect = -4, -4, 1024, 712 [br]
+. [br]
+ Ptr 17197360: object: unnamed, class KviStatusBar [br]
+ . [br]
+ . [br]
+ in this way we can follow the order, father->child from the top-level widget(KviFrame::kvirc_frame)[br]
+ to reach the child that interests us (KviStatusBar::unnamed)[br]
+ Then, following the syntax we will have:
+ %A=$new(wrapper,0,test,KviFrame::kvirc_frame,KviStatusBar::unnamed)
+ Now %A. will be point to the wrapped object, therefore we could modify its property or to consider it as if it were an object created by us in scripting. [br]
+ Obviously, deleting the created object (for example %A) you don't will delete the object of Kvirc (in this case the statusbar). [br]
+ Another example could be this:[br]
+ %A=$new(wrapper,0,test,KviFrame::kvirc_frame,QToolButton::kvirc.identityoptions)[br]
+ %A->$setProperty(usesBigPixmap,0)[br]
+ In this fool example with the function $setProperty, we has setted the property usesBigPixmap to False, making to become the small icons of the ToolBar.[br]
+ [br]
+ The wrapping object search can optionally start with a window
+ identifier with the following syntax: WinId::<window_id>.
+
+*/
+
+
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_wrapper,"wrapper","widget")
+
+KVSO_END_REGISTERCLASS(KviKvsObject_wrapper)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_wrapper,KviKvsObject_widget)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_wrapper)
+
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_wrapper)
+
+KVSO_END_CONSTRUCTOR(KviKvsObject_wrapper)
+
+bool KviKvsObject_wrapper::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+{
+ if( !pParams ) return false;
+
+ debug ("ci sono i parametri");
+ QWidget *pWidget = 0;
+ int i=0;
+ while(i!=pParams->count())
+ {
+ QString szClass;
+ QString szName;
+ QString s=0;
+ pParams->at(i)->asString(s);
+ if (!s.isEmpty())
+ {
+ int idx = s.find("::");
+ if( idx != -1 ) {
+ szClass = s.left(idx);
+ szName = s.right(s.length() - idx - 2);
+ } else {
+ szClass = s;
+ szName = "";
+ }
+ debug ("szClass %s",szClass.latin1());
+ debug ("szName %s",szName.latin1());
+ debug ("s %s",s.latin1());
+
+ if(KviQString::equalCI(szClass,"WinId"))
+ {
+ if(pWidget)
+ {
+ pContext->warning(__tr2qs("The window identifier preceeded by WinId must be the first object in the search path"));
+ return false;
+ } else {
+ pWidget = g_pApp->findWindow(szName);
+ }
+ } else {
+ if(pWidget) {
+ pWidget = findWidgetToWrap(
+ !szClass.isEmpty() ? szClass : KviQString::empty, !szName.isEmpty() ? szName : KviQString::empty, pWidget
+ );
+ } else {
+ pWidget = findTopLevelWidgetToWrap(szClass.isEmpty() ? szClass : KviQString::empty, !szName.isEmpty() ? szName : KviQString::empty);
+ }
+ }
+ if( !pWidget )
+ {
+ pContext->warning(__tr2qs("Failed to find one of the wrap path widgets (%Q::%Q)"),&szClass,&szName);
+ return false;
+ }
+ }
+ i++;
+
+ }
+ if( !pWidget )
+ {
+ pContext->warning(__tr2qs("Failed to find the widget to wrap"));
+ return false;
+ }
+ setObject(pWidget,false);
+
+ return true;
+}
+QWidget *KviKvsObject_wrapper::findTopLevelWidgetToWrap(const QString szClass, const QString szName)
+{
+#ifdef COMPILE_USE_QT4
+ QWidgetList list = g_pApp->topLevelWidgets();
+ if( !list.count() ) return 0;
+ for(int idx=0;idx<list.count();idx++)
+ {
+ bool bNameMatch = false;
+ bool bClassMatch = false;
+ if( !szName.isEmpty() )
+ bNameMatch = KviQString::equalCI(list.at(idx)->name(), szName);
+ else
+ bNameMatch = true;
+ if( !szClass.isEmpty())
+ bClassMatch = KviQString::equalCI(list.at(idx)->className(), szClass);
+ else
+ bClassMatch = true;
+ if( bNameMatch && bClassMatch ) {
+ QWidget *w = list.at(idx);
+ return w;
+ }
+ }
+ return 0;
+#else
+
+ QWidgetList *list = g_pApp->topLevelWidgets();
+ if( !list ) return 0;
+
+ QWidgetListIt it(*list);
+ while( it.current() ) {
+ bool bNameMatch = false;
+ bool bClassMatch = false;
+ if( szName )
+ bNameMatch = KviQString::equalCI(it.current()->name(), szName);
+ else
+ bNameMatch = true;
+ if( szClass )
+ bClassMatch = KviQString::equalCI(it.current()->className(), szClass);
+ else
+ bClassMatch = true;
+ if( bNameMatch && bClassMatch ) {
+ QWidget *w = it.current();
+ delete list;
+ return w;
+ }
+ ++it;
+ }
+ delete list;
+
+ return 0;
+#endif
+}
+
+QWidget *KviKvsObject_wrapper::findWidgetToWrap(const char *szClass, const char *szName, QWidget *childOf)
+{
+#ifdef COMPILE_USE_QT4
+ QObjectList list = childOf->queryList(szClass ? szClass : 0, szName ? szName : 0, false, true);
+ if( !list.count() ) return 0;
+ for(int idx=0;idx<list.count();idx++)
+ {
+ if( list.at(idx)->isWidgetType() ) {
+ QWidget *w = (QWidget *)list.at(idx);
+ return w;
+ }
+
+ }
+ return 0;
+#else
+
+ QObjectList *list = childOf->queryList(szClass ? szClass : 0, szName ? szName : 0, false, true);
+ if( !list ) return 0;
+
+ QObjectListIt it(*list);
+ while( it.current() ) {
+ if( it.current()->isWidgetType() ) {
+ QWidget *w = (QWidget *) it.current();
+ delete list;
+ return w;
+ }
+ ++it;
+ }
+ delete list;
+ return 0;
+#endif
+}
+
+#include "m_class_wrapper.moc"
diff --git a/src/modules/objects/class_wrapper.h b/src/modules/objects/class_wrapper.h
new file mode 100644
index 00000000..900b0672
--- /dev/null
+++ b/src/modules/objects/class_wrapper.h
@@ -0,0 +1,53 @@
+#ifndef _CLASS_WRAPPER_H_
+#define _CLASS_WRAPPER_H_
+//
+// File : class_wrapper.h
+// Creation date : Fri Jan 28 14:21:48 CEST 2005
+// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+
+
+#include "class_widget.h"
+#include "qlistview.h"
+
+
+
+
+#include "object_macros.h"
+
+class KviKvsObject_wrapper : public KviKvsObject_widget
+{
+ Q_OBJECT
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_wrapper)
+public:
+ QWidget * widget() { return (QWidget *)object(); };
+protected:
+ virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
+ QWidget * findTopLevelWidgetToWrap(const QString szClass, const QString szName);
+ QWidget * findWidgetToWrap(const char *szClass, const char *szName, QWidget *childOf);
+
+};
+
+
+
+#endif //!_CLASS_WRAPPER_H_
diff --git a/src/modules/objects/class_xmlreader.cpp b/src/modules/objects/class_xmlreader.cpp
new file mode 100644
index 00000000..f4bccc8f
--- /dev/null
+++ b/src/modules/objects/class_xmlreader.cpp
@@ -0,0 +1,343 @@
+//=============================================================================
+//
+// File : class_xmlreader.cpp
+// Created on Tue 27 Dec 2005 00:14:09 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "class_xmlreader.h"
+
+#include "kvi_locale.h"
+
+#include "kvi_kvs_variantlist.h"
+#include "kvi_kvs_hash.h"
+
+#include "kvi_qstring.h"
+
+
+/*
+ @doc: xmlreader
+ @keyterms:
+ xml
+ @title:
+ xmlreader class
+ @type:
+ class
+ @short:
+ A simple xml document parser
+ @inherits:
+ [class]object[/class]
+ @description:
+ This class implements a really simple xml document parser.
+ You will usually derive your own class from this one and reimplement
+ some of the events that it triggers.
+ You will typically reimplement [classfnc:xmlparser]onElementStart[/classfnc]()
+ and [classfnc:xmlparser]onElementEnd[/classfnc]() that will be called
+ during the execution of [classfnc:xmlparser]$parse[/classfnc]() in an order
+ reflecting the order of elements in the parsed document.
+ @functions:
+ !fn: <boolean> $parse(<xml_data:string>)
+ Call this function to parse a string that contains an XML document.
+ A typical call for this method will look like:
+ [example]
+ %x = [fnc]$new[/fnc](xmlparser)
+ %x->$parse([fnc]$file.read[/fnc]("/home/somefile.xml"))
+ [/example]
+ During the call the <xml_data> string will be parsed and the
+ relevant on* events (see below) will be triggered.
+ $parse will return $true when the parsing terminates succesfully
+ or $false if it aborts for some reason (unrecoverable error
+ in the document, user abort etc...).
+ If this function return $false then you can call $lastError() to
+ obtain a descriptive error message.
+
+ !fn: <string> $lastError()
+ Returns the last error occured inside the parser.
+ You will typically call this function when $parse() above returns $false.
+
+ !fn: <boolean> $onDocumentStart()
+ This function is called when the document parsing starts.
+ You can reimplement it in order to handle this notification.
+ You should return $true if you want document parsing to continue
+ and $false if you want it to be aborted.
+ The default implementation does nothing besides returning $true.
+
+ !fn: <boolean> $onDocumentEnd()
+ This function is called when the document parsing terminates succesfully.
+ You can reimplement it in order to handle this notification.
+ You should return $true if you want document parsing to continue
+ and $false if you want it to be aborted.
+ The default implementation does nothing besides returning $true.
+
+ !fn: <boolean> $onElementStart(<qualified_name:string>,<attributes:hash>,<namespace:string>,<local_name:string>)
+ This function is called when an element opening tag is encountered.
+ The <qualified_name> of the tag is passed as the first parameter.
+ The <attributes> are passed in the form of a hash with attribute
+ values indexed by their names.
+ When the <qualified_name> contains a namespace then it is also reported
+ in the splitted <namespace> <local_name> pair.
+ You should return $true if you want document parsing to continue
+ and $false if you want it to be aborted.
+ The default implementation does nothing besides returning $true.
+
+ !fn: <boolean> $onElementEnd(<qualified_name:string>,<namespace:string>,<local_name:string>)
+ This function is called when an element closing tag is encountered.
+ The <qualified_name> of the tag is passed as the first parameter.
+ When the <qualified_name> contains a namespace then it is also reported
+ in the splitted <namespace> <local_name> pair.
+ You should return $true if you want document parsing to continue
+ and $false if you want it to be aborted.
+ The default implementation does nothing besides returning $true.
+
+ !fn: <boolean> $onText($0 = <text:string>)
+ This function is called when a chunk of text is encountered inside the document.
+ The parsed <text> chunk is passed as the first parameter.
+ You should return $true if you want document parsing to continue
+ and $false if you want it to be aborted.
+ The default implementation does nothing besides returning $true.
+
+ !fn: <boolean> $onWarning(<message:string>)
+ This function is called when the parser generates a recoverable error.
+ The error <message> is passed as the first parameter.
+ You should return $true if you want document parsing to continue
+ and $false if you want it to be aborted.
+ The default implementation does nothing besides returning $true.
+
+ !fn: <boolean> $onError(<message:string>)
+ This function is called when the parser generates an unrecoverable error.
+ The error <message> is passed as the first parameter.
+ The document parsing can't continue.
+ The default implementation does nothing besides returning $true.
+*/
+
+
+#ifndef QT_NO_XML
+
+#include <qxml.h>
+
+class KviXmlHandler : public QXmlDefaultHandler
+{
+protected:
+ KviKvsObject_xmlreader * m_pReader;
+ QString m_szErrorString;
+public:
+ KviXmlHandler(KviKvsObject_xmlreader * pReader)
+ {
+ m_pReader = pReader;
+ }
+ ~KviXmlHandler()
+ {
+ }
+private:
+ bool kvsCodeFailure()
+ {
+ m_szErrorString = __tr2qs("Error in KVS class implementation: processing aborted");
+ return false;
+ }
+ bool kvsCodeAbort()
+ {
+ m_szErrorString = __tr2qs("Processing aborted");
+ return false;
+ }
+ void decodeException(QString &szMsg,bool bError,const QXmlParseException &exception)
+ {
+ if(bError)
+ KviQString::sprintf(szMsg,__tr2qs("Error near line %d, column %d"),exception.lineNumber(),exception.columnNumber());
+ else
+ KviQString::sprintf(szMsg,__tr2qs("Warning near line %d, column %d"),exception.lineNumber(),exception.columnNumber());
+ szMsg += ": ";
+ szMsg += exception.message();
+ }
+ bool handleKvsCallReturnValue(KviKvsVariant * pRetVal)
+ {
+ if(!pRetVal->asBoolean())return kvsCodeAbort();
+ return true;
+ }
+public:
+ virtual bool startDocument()
+ {
+ KviKvsVariant ret;
+ if(!m_pReader->callFunction(m_pReader,"onDocumentStart",&ret))
+ return kvsCodeFailure();
+ return handleKvsCallReturnValue(&ret);
+ }
+
+ virtual bool endDocument()
+ {
+ KviKvsVariant ret;
+ if(!m_pReader->callFunction(m_pReader,"onDocumentEnd",&ret))
+ return kvsCodeFailure();
+ return handleKvsCallReturnValue(&ret);
+ }
+
+ virtual bool startElement(const QString &szNamespaceUri,const QString &szLocalName,const QString &szQualifiedName,const QXmlAttributes &attrs)
+ {
+ KviKvsVariant ret;
+ KviKvsVariantList par;
+ par.setAutoDelete(true);
+ par.append(new KviKvsVariant(szQualifiedName));
+ KviKvsHash * pHash = new KviKvsHash();
+ par.append(new KviKvsVariant(pHash));
+ par.append(new KviKvsVariant(szNamespaceUri));
+ par.append(new KviKvsVariant(szLocalName));
+ int c = attrs.count();
+ for(int i=0;i<c;i++)
+ pHash->set(attrs.qName(i),new KviKvsVariant(attrs.value(i)));
+ if(!m_pReader->callFunction(m_pReader,"onElementStart",&ret,&par))
+ return kvsCodeFailure();
+ return handleKvsCallReturnValue(&ret);
+ }
+
+ virtual bool endElement(const QString &szNamespaceUri,const QString &szLocalName,const QString &szQualifiedName)
+ {
+ KviKvsVariant ret;
+ KviKvsVariantList par;
+ par.setAutoDelete(true);
+ par.append(new KviKvsVariant(szQualifiedName));
+ par.append(new KviKvsVariant(szNamespaceUri));
+ par.append(new KviKvsVariant(szLocalName));
+ if(!m_pReader->callFunction(m_pReader,"onElementEnd",&ret,&par))
+ return kvsCodeFailure();
+ return handleKvsCallReturnValue(&ret);
+ }
+
+ virtual bool characters(const QString &szChars)
+ {
+ KviKvsVariant ret;
+ KviKvsVariantList par;
+ par.setAutoDelete(true);
+ par.append(new KviKvsVariant(szChars));
+ if(!m_pReader->callFunction(m_pReader,"onText",&ret,&par))
+ return kvsCodeFailure();
+ return handleKvsCallReturnValue(&ret);
+ }
+
+ virtual bool warning(const QXmlParseException &exception)
+ {
+ // recoverable
+ QString szMsg;
+ decodeException(szMsg,false,exception);
+
+ KviKvsVariant ret;
+ KviKvsVariantList par;
+ par.setAutoDelete(true);
+ par.append(new KviKvsVariant(szMsg));
+ if(!m_pReader->callFunction(m_pReader,"onWarning",&ret,&par))
+ return kvsCodeFailure();
+ return handleKvsCallReturnValue(&ret);
+ }
+
+ virtual bool error(const QXmlParseException &exception)
+ {
+ // recoverable
+ QString szMsg;
+ decodeException(szMsg,false,exception);
+
+ KviKvsVariant ret;
+ KviKvsVariantList par;
+ par.setAutoDelete(true);
+ par.append(new KviKvsVariant(szMsg));
+ if(!m_pReader->callFunction(m_pReader,"onWarning",&ret,&par))
+ return kvsCodeFailure();
+ return handleKvsCallReturnValue(&ret);
+ }
+
+ virtual bool fatalError(const QXmlParseException &exception)
+ {
+ QString szMsg;
+ decodeException(szMsg,true,exception);
+ m_pReader->fatalError(szMsg);
+ return true;
+ }
+
+ virtual QString errorString()
+ {
+ return m_szErrorString;
+ }
+};
+
+#endif // !QT_NO_XML
+
+
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_xmlreader,"xmlreader","object")
+ KVSO_REGISTER_HANDLER(KviKvsObject_xmlreader,"lastError",function_lastError)
+ KVSO_REGISTER_HANDLER(KviKvsObject_xmlreader,"parse",function_parse)
+
+ KVSO_REGISTER_STANDARD_TRUERETURN_HANDLER(KviKvsObject_xmlreader,"onDocumentStart")
+ KVSO_REGISTER_STANDARD_TRUERETURN_HANDLER(KviKvsObject_xmlreader,"onDocumentEnd")
+ KVSO_REGISTER_STANDARD_TRUERETURN_HANDLER(KviKvsObject_xmlreader,"onElementStart")
+ KVSO_REGISTER_STANDARD_TRUERETURN_HANDLER(KviKvsObject_xmlreader,"onElementEnd")
+ KVSO_REGISTER_STANDARD_TRUERETURN_HANDLER(KviKvsObject_xmlreader,"onText")
+ KVSO_REGISTER_STANDARD_TRUERETURN_HANDLER(KviKvsObject_xmlreader,"onWarning")
+ KVSO_REGISTER_STANDARD_TRUERETURN_HANDLER(KviKvsObject_xmlreader,"onError")
+KVSO_END_REGISTERCLASS(KviKvsObject_xmlreader)
+
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_xmlreader,KviKvsObject)
+KVSO_END_CONSTRUCTOR(KviKvsObject_xmlreader)
+
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_xmlreader)
+KVSO_END_DESTRUCTOR(KviKvsObject_xmlreader)
+
+void KviKvsObject_xmlreader::fatalError(const QString &szError)
+{
+ m_szLastError = szError;
+
+ KviKvsVariantList vArgs;
+ vArgs.append(new KviKvsVariant(m_szLastError));
+ callFunction(this,"onError",&vArgs);
+}
+
+bool KviKvsObject_xmlreader::function_parse(KviKvsObjectFunctionCall *c)
+{
+ QString szString;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("string",KVS_PT_STRING,0,szString)
+ KVSO_PARAMETERS_END(c)
+
+#ifdef QT_NO_XML
+ fatalError(__tr2qs("XML support not available in the Qt library"));
+ c->returnValue()->setBoolean(false);
+#else
+ m_szLastError = "";
+ KviXmlHandler handler(this);
+ QXmlInputSource source;
+ // We have a problem here.. most kvirc functions already interpret the data
+ // read from files. We should have binary data handling features to get this to work correctly.
+ // The following snippet of code tries to provide a best-effort workaround.
+ KviQCString utf8data = KviQString::toUtf8(szString);
+ QByteArray data = utf8data;
+ data.truncate(utf8data.length()); // don't include the null terminator in data
+ source.setData(data);
+ //debug("PARSING(%s) LEN(%d)",szString.utf8().data(),szString.utf8().length());
+ QXmlSimpleReader reader;
+ reader.setContentHandler(&handler);
+ reader.setErrorHandler(&handler);
+ c->returnValue()->setBoolean(reader.parse(source));
+#endif
+ return true;
+}
+
+bool KviKvsObject_xmlreader::function_lastError(KviKvsObjectFunctionCall *c)
+{
+ c->returnValue()->setString(m_szLastError);
+ return true;
+}
+
+#include "m_class_xmlreader.moc"
diff --git a/src/modules/objects/class_xmlreader.h b/src/modules/objects/class_xmlreader.h
new file mode 100644
index 00000000..dca69333
--- /dev/null
+++ b/src/modules/objects/class_xmlreader.h
@@ -0,0 +1,46 @@
+#ifndef _CLASS_XMLREADER_H_
+#define _CLASS_XMLREADER_H_
+//=============================================================================
+//
+// File : class_xmlreader.h
+// Created on Tue 27 Dec 2005 00:14:09 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+
+#include "object_macros.h"
+
+class KviKvsObject_xmlreader : public KviKvsObject
+{
+ Q_OBJECT
+public:
+ KVSO_DECLARE_OBJECT(KviKvsObject_xmlreader)
+public:
+ bool function_parse(KviKvsObjectFunctionCall *c);
+ bool function_lastError(KviKvsObjectFunctionCall *c);
+
+ void fatalError(const QString &szError);
+protected:
+ QString m_szLastError;
+};
+
+#endif //!_CLASS_XMLREADER_H_
diff --git a/src/modules/objects/libkviobjects.cpp b/src/modules/objects/libkviobjects.cpp
new file mode 100644
index 00000000..73eacace
--- /dev/null
+++ b/src/modules/objects/libkviobjects.cpp
@@ -0,0 +1,1066 @@
+//=============================================================================
+//
+// File : libkviobjects.cpp
+// Creation date : Wed Sep 09 2000 20:59:01 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_tal_listview.h"
+#include <qimage.h>
+#include "kvi_iconmanager.h"
+#include "kvi_window.h"
+#include "kvi_out.h"
+#include "kvi_mirccntrl.h"
+
+#include "kvi_app.h"
+
+#include "kvi_module.h"
+
+#include "kvi_locale.h"
+#include "kvi_error.h"
+#include "kvi_cmdformatter.h"
+#include "kvi_out.h"
+#include "kvi_app.h"
+#include "kvi_fileutils.h"
+#ifndef COMPILE_USE_QT4
+ #include <qwidgetlist.h>
+ #include <qobjectlist.h>
+#endif
+
+#include <qdir.h>
+
+#include "class_button.h"
+#include "class_checkbox.h"
+#include "class_urllabel.h"
+#include "class_lineedit.h"
+#include "class_multilineedit.h"
+#include "class_combobox.h"
+#include "class_widget.h"
+#include "class_list.h"
+#include "class_file.h"
+#include "class_socket.h"
+#include "class_layout.h"
+#include "class_menubar.h"
+#include "class_window.h"
+#include "class_listbox.h"
+#include "class_progressbar.h"
+#include "class_slider.h"
+#include "class_spinbox.h"
+#include "class_lcd.h"
+#include "class_radiobutton.h"
+#include "class_process.h"
+#include "class_groupbox.h"
+#include "class_buttongroup.h"
+#include "class_tabwidget.h"
+#include "class_workspace.h"
+#include "class_popupmenu.h"
+#include "class_listview.h"
+#include "class_listviewitem.h"
+#include "class_toolbar.h"
+#include "class_mainwindow.h"
+#include "class_toolbutton.h"
+#include "class_wizard.h"
+#include "class_tbrowser.h"
+#include "class_painter.h"
+#include "class_pixmap.h"
+#include "class_wrapper.h"
+#include "class_dialog.h"
+#include "class_xmlreader.h"
+#include "class_dockwindow.h"
+#include "class_vbox.h"
+#include "class_hbox.h"
+static void dumpChildObjects(KviWindow *pWnd, QObject *parent, const char *spacing, bool bWidgetsOnly, KviKvsArray *n, int &idx);
+
+static bool objects_module_cleanup(KviModule *m)
+{
+ KviKvsObject_process::unregisterSelf();
+ KviKvsObject_socket::unregisterSelf();
+ KviKvsObject_xmlreader::unregisterSelf();
+ KviKvsObject_wrapper::unregisterSelf();
+ KviKvsObject_file::unregisterSelf();
+ KviKvsObject_progressbar::unregisterSelf();
+ KviKvsObject_dockwindow::unregisterSelf();
+ KviKvsObject_wizard::unregisterSelf();
+ KviKvsObject_window::unregisterSelf();
+ KviKvsObject_urlabel::unregisterSelf();
+ KviKvsObject_toolbutton::unregisterSelf();
+ KviKvsObject_toolbar::unregisterSelf();
+ KviKvsObject_tabwidget::unregisterSelf();
+ KviKvsObject_spinbox::unregisterSelf();
+ KviKvsObject_slider::unregisterSelf();
+ KviKvsObject_radiobutton::unregisterSelf();
+ KviKvsObject_popupmenu::unregisterSelf();
+ KviKvsObject_pixmap::unregisterSelf();
+ KviKvsObject_painter::unregisterSelf();
+ KviKvsObject_mainwindow::unregisterSelf();
+ KviKvsObject_listviewitem::unregisterSelf();
+ KviKvsObject_listview::unregisterSelf();
+ KviKvsObject_listbox::unregisterSelf();
+ KviKvsObject_combobox::unregisterSelf();
+ KviKvsObject_workspace::unregisterSelf();
+ KviKvsObject_menubar::unregisterSelf();
+ KviKvsObject_lineedit::unregisterSelf();
+ KviKvsObject_lcd::unregisterSelf();
+ KviKvsObject_layout::unregisterSelf();
+ KviKvsObject_hbox::unregisterSelf();
+ KviKvsObject_vbox::unregisterSelf();
+ KviKvsObject_label::unregisterSelf();
+ KviKvsObject_buttongroup::unregisterSelf();
+ KviKvsObject_groupbox::unregisterSelf();
+ KviKvsObject_dialog::unregisterSelf();
+ KviKvsObject_checkbox::unregisterSelf();
+ KviKvsObject_textbrowser::unregisterSelf();
+ KviKvsObject_mledit::unregisterSelf();
+ KviKvsObject_button::unregisterSelf();
+ KviKvsObject_widget::unregisterSelf();
+ KviKvsObject_list::unregisterSelf();
+
+ return true;
+}
+
+
+static bool objects_kvs_cmd_killClass(KviKvsModuleCommandCall * c)
+{
+ /*
+ @doc: objects.killclass
+ @title:
+ objects.killclass
+ @type:
+ command
+ @short:
+ Removes a class definition
+ @syntax:
+ objects.killclass [-q] <classname:string>
+ @switches:
+ !sw: -q | --quiet
+ Suppresses any warning message
+ @description:
+ Removes the definition of the class <class_name>.[br]
+ All the instances of the class are killed (thus children objects are killed too).[br]
+ All the derived class definitions are removed as well.[br]
+ Builtin class definitions cannot be removed and this commands
+ kills only all the instances of that class (derived class definitions
+ and instances in this case are NOT killed).[br]
+ @seealso:
+ [cmd]class[/cmd], [cmd]objects.clear[/cmd], [fnc]$classDefined[/fnc](),
+ [doc:objects]Objects documentation[/doc]
+ */
+
+
+ QString szClass;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("class",KVS_PT_NONEMPTYSTRING,0,szClass)
+ KVSM_PARAMETERS_END(c)
+ KviKvsObjectClass * pClass=KviKvsKernel::instance()->objectController()->lookupClass(szClass);
+ if(pClass)
+ {
+ if(pClass->isBuiltin())
+ {
+ KviKvsKernel::instance()->objectController()->killAllObjectsWithClass(pClass);
+ } else {
+ KviKvsKernel::instance()->objectController()->deleteClass(pClass); //Yahoo!!
+ }
+ }
+ else if(!c->hasSwitch('q',"quiet"))c->warning(__tr2qs("Class '%Q' is not definited"),&szClass);
+ return true;
+}
+
+
+static bool objects_kvs_cmd_clearObjects(KviKvsModuleCommandCall * c)
+{
+ /*
+ @doc: objects.clear
+ @title:
+ objects.clear
+ @type:
+ command
+ @short:
+ Removes all the user class definitions
+ @syntax:
+ objects.clear [-i]
+ @description:
+ Removes the definition of all the user classes and kill all the object
+ instances (also instances of the builtin classes).[br]
+ If the -i switch is used, only the object instances are cleared
+ but the class definitions are left unchanged.[br]
+ This command should be used only for debugging & testing purposes
+ and in particular should be NEVER used from inside an object
+ function handler (leads to SIGSEGV :).[br]
+ @seealso:
+ [cmd]class[/cmd], [cmd]objects.killclass[/cmd],
+ [doc:objects]Objects documentation[/doc]
+ */
+
+ KviKvsKernel::instance()->objectController()->clearInstances();
+ if(!c->switches()->find('i',"ii")) KviKvsKernel::instance()->objectController()->clearUserClasses();
+ return true;
+}
+
+
+static bool objects_kvs_cmd_connect(KviKvsModuleCommandCall * c)
+{
+
+ /*
+ @doc: objects.connect
+ @title:
+ objects.connect
+ @type:
+ command
+ @short:
+ Connects a signal to a slot
+ @syntax:
+ objects.connect <source_object:hobject> <signal_name:string> <target_object:hobject> <slot_name:string>
+ @description:
+ Connects the <source_object>'s signal <signal_name> to the
+ <target_object>'s slot <slot_name>.
+ When one of the two objects is destroyed, the signal/slot
+ connection is automatically removed.[br]
+ WARNING: This command name collides with the [doc:rfc2812]RFC2812[/doc]
+ CONNECT IRC Op command: this IRC command is available to operators only
+ and is rather rarely used: you can use it by the means of [doc:raw]raw[/doc].
+ @seealso:
+ [cmd]class[/cmd], [cmd]object.disconnect[/cmd], [doc:objects]objects documentation[/doc]
+ */
+
+
+ KviKvsObject *obSrc;
+ KviKvsObject *obTrg;
+ QString szSignal,szSlot;
+ kvs_hobject_t hSrc,hTrg;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("object source",KVS_PT_HOBJECT,0,hSrc)
+ KVSM_PARAMETER("signal name",KVS_PT_NONEMPTYSTRING,0,szSignal)
+ KVSO_PARAMETER("object target",KVS_PT_HOBJECT,0,hTrg)
+ KVSM_PARAMETER("slot",KVS_PT_NONEMPTYSTRING,0,szSlot)
+ KVSM_PARAMETERS_END(c)
+ obTrg=KviKvsKernel::instance()->objectController()->lookupObject(hTrg);
+ obSrc=KviKvsKernel::instance()->objectController()->lookupObject(hSrc);
+ if(!obTrg)
+ {
+ c->warning(__tr2qs("Inexisting target object for objects.connect"));
+ return true;
+ }
+ if(!obSrc)
+ {
+ c->warning(__tr2qs("Inexisting source object for objects.connect"));
+ return true;
+ }
+ obSrc->connectSignal(szSignal,obTrg,szSlot);
+ return true;
+}
+
+
+static bool objects_kvs_fnc_exists(KviKvsModuleFunctionCall * c)
+{
+ /*
+ @doc: objects.exists
+ @title:
+ objects.exists
+ @type:
+ command
+ @short:
+ Check if an object exists.
+ @syntax:
+ <boolean> $object.exists(<obejct id:hobject>)
+ @description:
+ Check if an objects exists and return a boolean value.
+ @seealso:
+ [doc:objects]objects documentation[/doc]
+ */
+
+
+ kvs_hobject_t hObj;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("object",KVS_PT_HOBJECT,0,hObj)
+ KVSM_PARAMETERS_END(c)
+ KviKvsObject *ob=KviKvsKernel::instance()->objectController()->lookupObject(hObj);
+ c->returnValue()->setBoolean(ob ? true : false);
+ return true;
+}
+
+static bool objects_kvs_fnc_instances(KviKvsModuleFunctionCall * c)
+{
+ /*
+ @doc: objects.instances
+ @title:
+ objects.instances
+ @type:
+ command
+ @short:
+ List object instances
+ @syntax:
+ <array> $object.instances(<class name:string>[,<flags:string>])
+ @description:
+ Returns an array with the instance handles of
+ of objects of the specified class. <flags> is a
+ string containing modifiers for the function behaviour.[br]
+ If <flags> contains the letter "s" then
+ only unsubclassed instances of the specified
+ class are returned. This means that if B is
+ a subclass of A then when asked for instances
+ of A without the flag "s" this function will return
+ both instances of A and B, and with the flag "s"
+ this function will return only instances of A (and not B).
+ If the class name does not define a valid class
+ then an empty array is returned and a warning is
+ printed unless the "q" flag is used.
+ @examples:
+ [example]
+ foreach(%x,$objects.instances(object))
+ {
+ echo "OBJECT WITH CLASS" %x->$className() "AND NAME \""%x->$name()"\""
+ }
+ [/example]
+ @seealso:
+ [doc:objects]objects documentation[/doc]
+ */
+
+ QString szClassName;
+ QString szFlags;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("class name",KVS_PT_NONEMPTYSTRING,0,szClassName)
+ KVSO_PARAMETER("flags",KVS_PT_STRING,KVS_PF_OPTIONAL,szFlags)
+ KVSM_PARAMETERS_END(c)
+
+ KviKvsArray * pArry = new KviKvsArray();
+ c->returnValue()->setArray(pArry);
+
+ KviKvsObjectClass * pClass = KviKvsKernel::instance()->objectController()->lookupClass(szClassName);
+ if(!pClass)
+ {
+ if(!szFlags.contains(QChar('q')))
+ c->warning(__tr2qs("The class '%Q' does not exist"),&szClassName);
+ return true;
+ }
+ KviPointerHashTable<void *,KviKvsObject> * od = KviKvsKernel::instance()->objectController()->objectDict();
+
+ KviPointerHashTableIterator<void *,KviKvsObject> it(*od);
+ kvs_uint_t uIdx = 0;
+ if(szFlags.contains(QChar('s')))
+ {
+ while(KviKvsObject * ob = it.current())
+ {
+ if(ob->getExactClass() == pClass)
+ {
+ pArry->set(uIdx,new KviKvsVariant(ob->handle()));
+ uIdx++;
+ }
+ ++it;
+ }
+ } else {
+ while(KviKvsObject * ob = it.current())
+ {
+ if(ob->inheritsClass(pClass))
+ {
+ pArry->set(uIdx,new KviKvsVariant(ob->handle()));
+ uIdx++;
+ }
+ ++it;
+ }
+ }
+ return true;
+}
+/*
+ @doc: objects.variables
+ @title:
+ objects.variables
+ @type:
+ command
+ @short:
+ List object's variables.
+ @syntax:
+ <hash> objects.variables(<hobject>)
+ @description:
+ Returns an hash with the object's variables(useful only for debugging).
+ @seealso:
+ [doc:objects]objects documentation[/doc]
+ */
+static bool objects_kvs_fnc_variables(KviKvsModuleFunctionCall * c)
+{
+ kvs_hobject_t hObj;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("object",KVS_PT_HOBJECT,0,hObj)
+ KVSM_PARAMETERS_END(c)
+ KviKvsObject *ob=KviKvsKernel::instance()->objectController()->lookupObject(hObj);
+ if (!ob)
+ {
+ c->warning(__tr2qs("Object does not exists"));
+ return true;
+ }
+ KviPointerHashTableIterator<QString,KviKvsVariant> it(* ob->dataContainer()->dict());
+ KviKvsHash* pHash = new KviKvsHash();
+ c->returnValue()->setHash(pHash);
+ while(KviKvsVariant * t = it.current())
+ {
+ pHash->set(it.currentKey(),new KviKvsVariant(*t));
+ ++it;
+ }
+ return true;
+
+
+
+}
+/*
+ @doc: objects.classAllHandlers
+ @title:
+ objects.classAllHandlers
+ @type:
+ function
+ @short:
+ List all the functions .
+ @syntax:
+ <hash> objects.classAllHandlers(<class name:string>)
+ @description:
+ Returns an hash with the class's functions(useful only for debugging).
+ @seealso:
+ [doc:objects]objects documentation[/doc]
+ */
+static bool objects_kvs_fnc_classAllHandlers(KviKvsModuleFunctionCall * c)
+{
+ QString szClassName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("class name",KVS_PT_NONEMPTYSTRING,0,szClassName)
+ KVSM_PARAMETERS_END(c)
+ KviKvsObjectClass * pClass = KviKvsKernel::instance()->objectController()->lookupClass(szClassName);
+ if(!pClass)
+ {
+ c->warning(__tr2qs("The class '%Q' does not exist"),&szClassName);
+ return true;
+ }
+
+ KviPointerHashTableIterator<QString,KviKvsObjectFunctionHandler> it(* pClass->getHandlers());
+ KviKvsHash* pHash = new KviKvsHash();
+ c->returnValue()->setHash(pHash);
+ while(KviKvsObjectFunctionHandler * t = it.current())
+ {
+ QString szCode;
+ KviKvsObjectFunctionHandler *handler=pClass->lookupFunctionHandler(it.currentKey());
+ pClass->getFunctionCode(szCode,*handler);
+ pHash->set(it.currentKey(),new KviKvsVariant(szCode));
+ ++it;
+ }
+
+ return true;
+}
+static bool objects_kvs_fnc_classes(KviKvsModuleFunctionCall * c)
+{
+
+ /*
+ @doc: objects.classes
+ @title:
+ objects.classes
+ @type:
+ command
+ @short:
+ List user defined classes
+ @syntax:
+ <array> $object.classes()
+ @description:
+ Returns an array with the user defined classes.
+ @seealso:
+ [doc:objects]objects documentation[/doc]
+ */
+
+ KviKvsArray * pArry = new KviKvsArray();
+ c->returnValue()->setArray(pArry);
+ int uIdx=0;
+ KviPointerHashTableIterator<QString,KviKvsObjectClass> it(*KviKvsKernel::instance()->objectController()->classDict());
+ KviPointerHashTable<QString,bool> *classdict=new KviPointerHashTable<QString,bool>;
+ classdict->setAutoDelete(false);
+ bool bFake=true;
+ while(KviKvsObjectClass * pClass=it.current())
+ {
+ if (!pClass->isBuiltin())classdict->insert(it.currentKey(),&bFake);
+ ++it;
+ }
+ QString szPath;
+ g_pApp->getLocalKvircDirectory(szPath,KviApp::Classes);
+ QDir d(szPath);
+ QStringList sl;
+ sl = d.entryList(QDir::Files);
+ for(QStringList::Iterator it2 = sl.begin();it2 != sl.end();++it2)
+ {
+ QString szName=*it2;
+ szName.replace("--","::");
+ if (szName!=".." && szName!=".") classdict->insert(szName.left(szName.length()-4),&bFake);
+ }
+ KviKvsArray* pArray = new KviKvsArray();
+ c->returnValue()->setArray(pArray);
+ int idx=0;
+ KviPointerHashTableIterator<QString,bool> strIt(*classdict);
+ while(strIt.current())
+ {
+ pArray->set(idx,new KviKvsVariant(strIt.currentKey()));
+ idx++;
+ ++strIt;
+ }
+ delete classdict;
+ return true;
+
+}
+
+static bool objects_kvs_cmd_disconnect(KviKvsModuleCommandCall * c)
+{
+ /*
+ @doc: objects.disconnect
+ @title:
+ objects.disconnect
+ @type:
+ command
+ @short:
+ Disconnects a signal from a slot
+ @syntax:
+ disconnect <source_object:hobject> <signal_name:string> <target_object:hobject> <slot_name:string>
+ @description:
+ Disconnects the <source_object>'s signal <signal_name> from the
+ <target_object>'s slot <slot_name>.
+ When one of the two objects is destroyed, the signal/slot
+ connection is automatically removed.
+ @seealso:
+ [cmd]class[/cmd], [cmd]objects.connect[/cmd], [doc:objects]objects documentation[/doc]
+ */
+
+
+
+
+ KviKvsObject *obSrc;
+ KviKvsObject *obTrg;
+ QString szSignal,szSlot;
+ kvs_hobject_t hSrc,hTrg;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("object source",KVS_PT_HOBJECT,0,hSrc)
+ KVSM_PARAMETER("signal name",KVS_PT_NONEMPTYSTRING,0,szSignal)
+ KVSO_PARAMETER("object target",KVS_PT_HOBJECT,0,hTrg)
+ KVSM_PARAMETER("slot",KVS_PT_NONEMPTYSTRING,0,szSlot)
+ KVSM_PARAMETERS_END(c)
+ obTrg=KviKvsKernel::instance()->objectController()->lookupObject(hTrg);
+ obSrc=KviKvsKernel::instance()->objectController()->lookupObject(hSrc);
+ if(!obTrg)
+ {
+ c->warning(__tr2qs("Inexisting target object for objects.disconnect"));
+ return true;
+ }
+ if(!obSrc)
+ {
+ c->warning(__tr2qs("Inexisting source object for objects.disconnect"));
+ return true;
+ }
+ obSrc->disconnectSignal(szSignal,obTrg,szSlot);
+ return true;
+}
+
+
+
+static bool objects_kvs_cmd_bitBlt(KviKvsModuleCommandCall * c)
+{
+ /*
+ @doc: objects.bitblt
+ @type:
+ command
+ @title:
+ objects.bitblt
+ @keyterms:
+ widget pixmap painter
+ @short:
+ Copies a block of pixels from a source to a destination.
+ @syntax:
+ objects.bitblt <source> <x> <y> <destination>
+ @description:
+ Copies a block of pixels from <source> to <destination> at the coordinates <x>,<y> .[br]
+ Source and destination must be a widget or pixmap.[br]
+
+ */
+
+ KviKvsObject *obSrc;
+ KviKvsObject *obDst;
+ kvs_int_t iXdst,iYdst,iXsrc,iYsrc,uW,uH;
+ kvs_hobject_t hDst,hSrc;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("destination",KVS_PT_HOBJECT,0,hDst)
+ KVSO_PARAMETER("x offset dest",KVS_PT_INT,0,iXdst)
+ KVSO_PARAMETER("y offset dest",KVS_PT_INT,0,iYdst)
+ KVSO_PARAMETER("source",KVS_PT_HOBJECT,0,hSrc)
+ KVSO_PARAMETER("x offset source",KVS_PT_INT,0,iXsrc)
+ KVSO_PARAMETER("y offset source",KVS_PT_INT,0,iYsrc)
+ KVSO_PARAMETER("width",KVS_PT_UNSIGNEDINTEGER,0,uW)
+ KVSO_PARAMETER("height",KVS_PT_UNSIGNEDINTEGER,0,uH)
+ KVSO_PARAMETERS_END(c)
+ obSrc=KviKvsKernel::instance()->objectController()->lookupObject(hSrc);
+ if (!obSrc)
+ {
+ c->warning(__tr2qs("Source is not an object"));
+ return true;
+ }
+ obDst=KviKvsKernel::instance()->objectController()->lookupObject(hDst);
+ if (!obDst)
+ {
+ c->warning(__tr2qs("Destination is not an object"));
+ return true;
+ }
+
+ QImage * imgSource=0;
+ QPaintDevice * pdSource = 0;
+
+ if(obSrc->inherits("KviKvsObject_pixmap")) pdSource =((KviKvsObject_pixmap *)obSrc)->getPixmap();
+ else if (obSrc->inherits("KviKvsObject_widget")) pdSource=((KviKvsObject_widget *)obSrc)->widget();
+ if (!pdSource)
+ {
+ c->warning(__tr2qs("Widget, Image or Pixmap required "));
+ return true;
+ }
+ QPaintDevice * pdDest = 0;
+ if(obDst->inherits("KviKvsObject_pixmap")){
+ pdDest= ((KviKvsObject_pixmap *)obDst)->getPixmap();
+ }
+ else if (obDst->inherits("KviKvsObject_widget")) pdDest=((KviKvsObject_widget *)obDst)->widget();
+ if (!pdDest)
+ {
+ c->warning(__tr2qs("Widget or Pixmap required"));
+ return true;
+ }
+ if(obDst->inherits("KviKvsObject_pixmap")){
+ ((KviKvsObject_pixmap *)obDst)->pixmapChanged();
+ }
+#ifdef COMPILE_USE_QT4
+ /*QPainter p(pdDest);
+ QRect rectdest(iXdst,iYdst,uW,uH);
+ QRect rectsrc(iXsrc,iYsrc,uW,uH);
+
+ p.drawPixmap(rectdest,pdSource,rectsrc);
+*/
+ #else
+ bitBlt(pdDest,iXdst,iYdst,pdSource,iXsrc,iYsrc,uW,uH);
+#endif
+ return true;
+}
+ /*
+ @doc: objects.blend
+ @type:
+ command
+ @title:
+ objects.blend
+ @keyterms:
+ widget pixmap image
+ @short:
+ Blends two images to a destination.
+ @syntax:
+ objects.blend <background: image hobject> <x_offset_bkg:unsigned integer> <y_offset_bkg:unsigned integer>
+ <foreground: image hobject> <x_offset_fgr:unsigned integer> <y_offset_fgr:unsigned integer>
+ <destination: image, pixmap. widget hobject> <x_offset_dest:unsigned integer> <y_offset_dest:unsigned integer> <width:unsigned integer> <height:unsigned integer> <blend_factor>
+ @description:
+ Blends two images <background> and <foreground> and copy the result to <destination> at the coordinates <x_offset>,<y_offset> with a <blend_factor> value .[br]
+ Destination must be a widget or pixmap.[br]
+
+ */
+
+static bool objects_kvs_cmd_blend(KviKvsModuleCommandCall * c)
+{
+
+ KviKvsObject *obFor;
+ KviKvsObject *obBck;
+ KviKvsObject *obDest;
+
+ kvs_int_t iBkX,iBkY;
+ kvs_int_t iFoX,iFoY;
+ kvs_int_t iDesX,iDesY,uW,uH;
+ kvs_real_t dBlend;
+
+ kvs_hobject_t hBk,hFo,hDest;
+
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("destination",KVS_PT_HOBJECT,0,hDest)
+ KVSO_PARAMETER("x_offset_dest",KVS_PT_INT,0,iDesX)
+ KVSO_PARAMETER("y_offset_dest",KVS_PT_INT,0,iDesY)
+
+ KVSO_PARAMETER("image_background",KVS_PT_HOBJECT,0,hBk)
+ KVSO_PARAMETER("x_offset_background",KVS_PT_UNSIGNEDINTEGER,0,iBkX)
+ KVSO_PARAMETER("y_offset_background",KVS_PT_UNSIGNEDINTEGER,0,iBkY)
+ KVSO_PARAMETER("image_foreground",KVS_PT_HOBJECT,0,hFo)
+ KVSO_PARAMETER("x_offset_foreground",KVS_PT_UNSIGNEDINTEGER,0,iFoX)
+ KVSO_PARAMETER("y_offset_foreground",KVS_PT_UNSIGNEDINTEGER,0,iFoY)
+ KVSO_PARAMETER("width",KVS_PT_UNSIGNEDINTEGER,0,uW)
+ KVSO_PARAMETER("height",KVS_PT_UNSIGNEDINTEGER,0,uH)
+
+ KVSO_PARAMETER("blend_value",KVS_PT_REAL,0,dBlend)
+
+
+
+ KVSO_PARAMETERS_END(c)
+
+ obFor=KviKvsKernel::instance()->objectController()->lookupObject(hFo);
+
+
+ obBck=KviKvsKernel::instance()->objectController()->lookupObject(hBk);
+ obDest=KviKvsKernel::instance()->objectController()->lookupObject(hDest);
+ if (!obFor || !obBck || !obDest)
+ {
+ c->warning(__tr2qs("One o more of background, foreground or destination aren't objects"));
+ return true;
+ }
+
+ if (!obBck->inherits("KviKvsObject_pixmap") || !obFor->inherits("KviKvsObject_pixmap"))
+ {
+ c->warning(__tr2qs("Pixmap objects required"));
+ return true;
+ }
+
+ QPaintDevice * pdDest = 0;
+ if(obDest->inherits("KviKvsObject_pixmap")) pdDest = ((KviKvsObject_pixmap *)obDest)->getPixmap();
+ else if (obDest->inherits("KviKvsObject_widget")) pdDest=((KviKvsObject_widget *)obDest)->widget();
+
+ if (!pdDest)
+ {
+ c->warning(__tr2qs("Widget or Pixmap required "));
+ return true;
+ }
+
+ if(obDest->inherits("KviKvsObject_pixmap")) ((KviKvsObject_pixmap *)obDest)->pixmapChanged();
+
+
+ QImage *img_back=((KviKvsObject_pixmap *)obBck)->getImage();
+ QImage *img_fore=((KviKvsObject_pixmap *)obFor)->getImage();
+
+ // check size
+ if ((iBkX+uW>img_back->width())||(iBkY+uH>img_back->height()))
+ {
+ c->warning(__tr2qs("Values for background are out of image size "));
+ return true;
+ }
+ if ((iFoX+uW>img_fore->width())||(iFoY+uH>img_fore->height()))
+ {
+ c->warning(__tr2qs("Values for foreground are out of image size "));
+ return true;
+ }
+ QImage buffer;
+ buffer.create(uW,uH,32);
+ buffer.setAlphaBuffer(true);
+ for(int y = 0;y < buffer.height();y++)
+ {
+ QRgb * dst = (QRgb *)buffer.scanLine(y);
+ QRgb * end = dst + buffer.width();
+ QRgb * bkg = (QRgb *)img_back->scanLine(y+iBkY);
+ bkg += iBkX;
+ QRgb * fgn = (QRgb *)img_fore->scanLine(y+iFoY);
+ fgn += iFoX;
+ double dRemaining = 1.0 - dBlend;
+ int a=0;
+ while(dst < end)
+ {
+
+
+ *dst = qRgba(
+ (int)((qRed(*bkg) * dRemaining) + (qRed(*fgn) * dBlend)),
+ (int)((qGreen(*bkg) * dRemaining) + (qGreen(*fgn) * dBlend)),
+ (int)((qBlue(*bkg) * dRemaining) + (qBlue(*fgn) * dBlend)),
+ (int)((qAlpha(*bkg) * dRemaining) + (qAlpha(*fgn) * dBlend))
+ );
+
+ dst++;
+ bkg++;
+ fgn++;
+ }
+
+
+ }
+#ifdef COMPILE_USE_QT4
+ QPainter p(pdDest);
+ QRect rect(iDesX,iDesY,buffer.width(),buffer.height());
+ p.drawImage(rect,buffer);
+#else
+ bitBlt(pdDest,iDesX,iDesY,&buffer,0,0,buffer.width(),buffer.height());
+#endif
+ return true;
+
+}
+
+// ASSASSINI! LA DOVETE INDENTARE PER BENE :D
+
+
+static bool objects_kvs_fnc_listObjects(KviKvsModuleFunctionCall * cmd)
+{
+/*
+ @doc: objects.dump
+ @type:
+ function
+ @title:
+ $objects.dump
+ @keyterms:
+ dump objects
+ @short:
+ Dump the kvirc widgets.
+ @syntax:
+ $objects.dump(<flag b>)
+ @description:
+ This function returns the tree of the widgets of the kvirc, if the flag <b> is planned to 1,[br]
+ will return it on the currente window, if it' is planned to 0 instead it will return it as a string.[br]
+ ES:
+ %A[]=$str.split("\|",$objects.dump(0))
+ %i=0
+ while (%i != %A[]#)
+ {
+ echo %A[%i]
+ %i++
+ }
+*/
+
+
+ bool bFlag;
+ KVSO_PARAMETERS_BEGIN(cmd)
+ KVSO_PARAMETER("flag on video",KVS_PT_BOOL,0,bFlag)
+ KVSO_PARAMETERS_END(cmd)
+ if (bFlag) cmd->window()->output(80, "Objects dump:");
+ #ifdef COMPILE_USE_QT4
+ QWidgetList list = g_pApp->topLevelWidgets();
+
+ KviStr spacing = ">";
+ QString szTemp;
+ KviKvsArray * n = new KviKvsArray();
+ int idx=0;
+ for(int i=0;i<list.count();i++)
+ {
+ if( list.at(i)->isWidgetType())
+ {
+ if (bFlag)
+ {
+ cmd->window()->output(80, "Ptr %u: top level object: %c%s%c, class %s, %s, rect = %d, %d, %d, %d",
+ list.at(i),
+ KVI_TEXT_BOLD, list.at(i)->name(), KVI_TEXT_BOLD,
+ list.at(i)->className(),
+ list.at(i)->isVisible() ? "visible" : "hidden",
+ list.at(i)->x(), list.at(i)->y(), list.at(i)->width(), list.at(i)->height());
+ }
+ QString szClass=list.at(i)->className();
+ QString szObj=list.at(i)->name();
+ QString szTemp;
+ szTemp = szClass + "::" + szObj;
+ KviKvsVariant v;
+ v.setString(szTemp);
+ n->set(idx,new KviKvsVariant(v));
+ debug ("string %s",szTemp.latin1());
+ debug ("class %s",szClass.latin1());
+ debug ("Obj %s",szObj.latin1());
+
+ idx++;
+
+ dumpChildObjects(cmd->window(), list.at(i), spacing.ptr(), bFlag,n,idx);
+ }
+ //++it;
+ }
+
+#else
+ QWidgetList *l = g_pApp->topLevelWidgets();
+ l->setAutoDelete(false);
+ QWidgetListIt it(*l);
+ KviStr spacing = ">";
+ QString szTemp;
+ KviKvsArray * n = new KviKvsArray();
+ int idx=0;
+ while( it.current() )
+ {
+ if( it.current()->isWidgetType())
+ {
+ if (bFlag)
+ {
+ cmd->window()->output(80, "Ptr %u: top level object: %c%s%c, class %s, %s, rect = %d, %d, %d, %d",
+ it.current(),
+ KVI_TEXT_BOLD, it.current()->name(), KVI_TEXT_BOLD,
+ it.current()->className(),
+ it.current()->isVisible() ? "visible" : "hidden",
+ it.current()->x(), it.current()->y(), it.current()->width(), it.current()->height());
+ }
+ QString szClass=it.current()->className();
+ QString szObj=it.current()->name();
+ QString szTemp;
+ szTemp = szClass + "::" + szObj;
+ KviKvsVariant v;
+ v.setString(szTemp);
+ n->set(idx,new KviKvsVariant(v));
+ debug ("string %s",szTemp.latin1());
+ debug ("class %s",szClass.latin1());
+ debug ("Obj %s",szObj.latin1());
+
+ idx++;
+
+ dumpChildObjects(cmd->window(), it.current(), spacing.ptr(), bFlag,n,idx);
+
+
+ }
+ ++it;
+ }
+
+#endif
+ cmd->returnValue()->setArray(n);
+ return true;
+}
+
+static void dumpChildObjects(KviWindow *pWnd, QObject *parent, const char *spacing, bool bFlag, KviKvsArray *n, int &idx)
+{
+#ifdef COMPILE_USE_QT4
+ const QObjectList list = parent->children();
+ if( !list.count() ) return;
+ QString sp(spacing);
+ sp.append(">");
+ for(int i=0;i<list.count();i++)
+ {
+ if( list.at(i)->isWidgetType() )
+ {
+ if (bFlag)
+ {
+ pWnd->output(80, "%sPtr %u: object: %c%s%c, class %s",
+ spacing, list.at(i), KVI_TEXT_BOLD,
+ list.at(i)->name(), KVI_TEXT_BOLD, list.at(i)->className()
+ );
+ }
+ QString szClass=list.at(i)->className();
+ QString szObj=list.at(i)->name();
+ QString szTemp;
+ szTemp=spacing+szClass+"::"+szObj;
+ KviKvsVariant v;
+ v.setString(szTemp);
+ n->set(idx,new KviKvsVariant(v));
+ debug ("string %s",szTemp.latin1());
+ idx++;
+ dumpChildObjects(pWnd, list.at(i), sp, bFlag, n, idx );
+ }
+ }
+
+#else
+ const QObjectList *l = parent->children();
+ if( !l ) return;
+ if( l->isEmpty() ) return;
+ QObjectListIt it(*l);
+ QString sp(spacing);
+ sp.append(">");
+ while( it.current() )
+ {
+ if( it.current()->isWidgetType() )
+ {
+ if (bFlag)
+ {
+ pWnd->output(80, "%sPtr %u: object: %c%s%c, class %s",
+ spacing, it.current(), KVI_TEXT_BOLD,
+ it.current()->name(), KVI_TEXT_BOLD, it.current()->className()
+ );
+ }
+ QString szClass=it.current()->className();
+ QString szObj=it.current()->name();
+ QString szTemp;
+ szTemp=spacing+szClass+"::"+szObj;
+ KviKvsVariant v;
+ v.setString(szTemp);
+ n->set(idx,new KviKvsVariant(v));
+ debug ("string %s",szTemp.latin1());
+ idx++;
+ dumpChildObjects(pWnd, it.current(), sp, bFlag, n, idx );
+ }
+ ++it;
+ }
+#endif
+}
+
+static bool objects_module_can_unload(KviModule *m)
+{
+ // Actually this object remains locked in memory
+ // FIXME: unlock when no more instances & derived classes!
+ return false;
+}
+static bool objects_module_init(KviModule * m)
+{
+ // functions
+ KVSM_REGISTER_FUNCTION(m,"exists",objects_kvs_fnc_exists);
+ KVSM_REGISTER_FUNCTION(m,"instances",objects_kvs_fnc_instances);
+ KVSM_REGISTER_FUNCTION(m,"classes",objects_kvs_fnc_classes);
+ KVSM_REGISTER_FUNCTION(m,"dump",objects_kvs_fnc_listObjects);
+ KVSM_REGISTER_FUNCTION(m,"variables",objects_kvs_fnc_variables);
+ KVSM_REGISTER_FUNCTION(m,"classAllHandlers",objects_kvs_fnc_classAllHandlers);
+
+ // commands
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"connect",objects_kvs_cmd_connect);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"disconnect",objects_kvs_cmd_disconnect);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"killClass",objects_kvs_cmd_killClass);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"bitblt",objects_kvs_cmd_bitBlt);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"blend",objects_kvs_cmd_blend);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"clearObjects",objects_kvs_cmd_clearObjects);
+
+ KviKvsObject_list::registerSelf();
+
+ KviKvsObject_widget::registerSelf();
+ KviKvsObject_button::registerSelf();
+ KviKvsObject_mledit::registerSelf();
+
+ KviKvsObject_textbrowser::registerSelf();
+ KviKvsObject_checkbox::registerSelf();
+ KviKvsObject_dialog::registerSelf();
+ KviKvsObject_groupbox::registerSelf();
+ KviKvsObject_buttongroup::registerSelf();
+ KviKvsObject_label::registerSelf();
+ KviKvsObject_vbox::registerSelf();
+ KviKvsObject_hbox::registerSelf();
+ KviKvsObject_layout::registerSelf();
+ KviKvsObject_lcd::registerSelf();
+ KviKvsObject_lineedit::registerSelf();
+ KviKvsObject_menubar::registerSelf();
+ KviKvsObject_workspace::registerSelf();
+
+
+
+ KviKvsObject_combobox::registerSelf();
+ KviKvsObject_listbox::registerSelf();
+ KviKvsObject_listview::registerSelf();
+ KviKvsObject_listviewitem::registerSelf();
+ KviKvsObject_mainwindow::registerSelf();
+ KviKvsObject_painter::registerSelf();
+ KviKvsObject_pixmap::registerSelf();
+ KviKvsObject_popupmenu::registerSelf();
+ KviKvsObject_radiobutton::registerSelf();
+ KviKvsObject_slider::registerSelf();
+ KviKvsObject_spinbox::registerSelf();
+ KviKvsObject_tabwidget::registerSelf();
+ KviKvsObject_toolbar::registerSelf();
+ KviKvsObject_toolbutton::registerSelf();
+ KviKvsObject_urlabel::registerSelf();
+ KviKvsObject_window::registerSelf();
+ KviKvsObject_wizard::registerSelf();
+ KviKvsObject_dockwindow::registerSelf();
+ KviKvsObject_progressbar::registerSelf();
+ KviKvsObject_file::registerSelf();
+ KviKvsObject_wrapper::registerSelf();
+ KviKvsObject_xmlreader::registerSelf();
+ KviKvsObject_socket::registerSelf();
+ KviKvsObject_process::registerSelf();
+
+
+ return true;
+}
+
+KVIRC_MODULE(
+ "Objects",
+ "2.0.0",
+ "Copyright (C) 2000-2006:\n" \
+ " Szymon Stefanek (pragma at kvirc dot net)\n" \
+ " Krzysztof Godlewski (kristoff at poczta dot wprost dot pl)\n" \
+ " Tonino Imbesi (grifisx at barmes dot org)\n" \
+ " Alessandro Carbone (noldor at barmes dot org)",
+ "Object classes for KVIrc scripting language\n",
+ objects_module_init,
+ objects_module_can_unload,
+ 0,
+ objects_module_cleanup
+)
diff --git a/src/modules/objects/object_macros.h b/src/modules/objects/object_macros.h
new file mode 100644
index 00000000..9c0360b2
--- /dev/null
+++ b/src/modules/objects/object_macros.h
@@ -0,0 +1,90 @@
+#ifndef _OBJECT_MACROS_H_
+#define _OBJECT_MACROS_H_
+//=========================================================================================
+//
+// File : object_macros.h
+// Creation date : Sat Jun 18 2005 15:32:01 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=========================================================================================
+
+#include "kvi_kvs_object.h"
+#include "kvi_kvs_object_class.h"
+#include "kvi_kvs_kernel.h"
+#include "kvi_kvs_object_controller.h"
+#include "kvi_kvs_object_functioncall.h"
+
+#define KVSO_DECLARE_OBJECT(__className) \
+ __className(KviKvsObjectClass * pClass,KviKvsObject * pParent,const QString &szName); \
+ ~__className(); \
+ static void registerSelf(); \
+ static void unregisterSelf();
+
+
+#define KVSO_REGISTER_HANDLER(__className,__szName,__proc) \
+ g_pKvs##__className##Class->registerFunctionHandler(__szName,(KviKvsObjectFunctionHandlerProc)(KVI_PTR2MEMBER(__className::__proc)));
+
+#define KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(__className,__szName) \
+ g_pKvs##__className##Class->registerStandardNothingReturnFunctionHandler(__szName);
+
+#define KVSO_REGISTER_STANDARD_TRUERETURN_HANDLER(__className,__szName) \
+ g_pKvs##__className##Class->registerStandardTrueReturnFunctionHandler(__szName);
+
+#define KVSO_REGISTER_STANDARD_FALSERETURN_HANDLER(__className,__szName) \
+ g_pKvs##__className##Class->registerStandardFalseReturnFunctionHandler(__szName);
+
+#define KVSO_BEGIN_REGISTERCLASS(__className,__stringName,__baseClass) \
+ static KviKvsObjectClass * g_pKvs##__className##Class = 0; \
+ static KviKvsObject * kvs_##__className##_createInstance(KviKvsObjectClass * pClass,KviKvsObject * pParent,const QString &szName) \
+ { \
+ return new __className(pClass,pParent,szName); \
+ } \
+ void __className::unregisterSelf() \
+ { \
+ delete g_pKvs##__className##Class; \
+ g_pKvs##__className##Class = 0; \
+ } \
+ void __className::registerSelf() \
+ { \
+ KviKvsObjectClass * base = KviKvsKernel::instance()->objectController()->lookupClass(__baseClass); \
+ g_pKvs##__className##Class = new KviKvsObjectClass(base,__stringName,kvs_##__className##_createInstance,true);
+
+
+
+#define KVSO_END_REGISTERCLASS(__className) \
+ }
+
+
+#define KVSO_BEGIN_CONSTRUCTOR(__className,__baseClass) \
+ __className::__className(KviKvsObjectClass * pClass,KviKvsObject * pParent,const QString &szName) \
+ : __baseClass(pClass,pParent,szName) \
+ {
+
+#define KVSO_END_CONSTRUCTOR(__className) \
+ }
+
+#define KVSO_BEGIN_DESTRUCTOR(__className) \
+ __className::~__className() \
+ {
+
+#define KVSO_END_DESTRUCTOR(__className) \
+ }
+
+
+#endif
diff --git a/src/modules/options/Makefile.am b/src/modules/options/Makefile.am
new file mode 100644
index 00000000..53c0988c
--- /dev/null
+++ b/src/modules/options/Makefile.am
@@ -0,0 +1,157 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+EXTRA_DIST = mkcreateinstanceproc.sh
+
+pluglib_LTLIBRARIES = libkvioptions.la
+
+libkvioptions_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvioptions_la_SOURCES = libkvioptions.cpp \
+ container.cpp \
+ dialog.cpp \
+ instances.cpp \
+ optw_antispam.cpp \
+ optw_avatar.cpp \
+ optw_connection.cpp \
+ optw_ctcp.cpp \
+ optw_ctcpfloodprotection.cpp \
+ optw_dcc.cpp \
+ optw_generalopt.cpp \
+ optw_highlighting.cpp \
+ optw_ident.cpp \
+ optw_identity.cpp \
+ optw_ignore.cpp \
+ optw_input.cpp \
+ optw_interfacefeatures.cpp \
+ optw_interfacelookglobal.cpp \
+ optw_irc.cpp \
+ optw_ircoutput.cpp \
+ optw_ircview.cpp \
+ optw_lag.cpp \
+ optw_logging.cpp \
+ optw_mediatypes.cpp \
+ optw_messages.cpp \
+ optw_nickserv.cpp \
+ optw_notify.cpp \
+ optw_protection.cpp \
+ optw_proxy.cpp \
+ optw_query.cpp \
+ optw_servers.cpp \
+ optw_sound.cpp \
+ optw_ssl.cpp \
+ optw_taskbar.cpp \
+ optw_textencoding.cpp \
+ optw_texticons.cpp \
+ optw_theme.cpp \
+ optw_tools.cpp \
+ optw_transport.cpp \
+ optw_topiclabel.cpp \
+ optw_away.cpp \
+ optw_uparser.cpp \
+ optw_urlhandlers.cpp \
+ optw_userlist.cpp \
+ optw_tray.cpp
+
+libkvioptions_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= container.h \
+ dialog.h \
+ instances.h \
+ optw_antispam.h \
+ optw_avatar.h \
+ optw_connection.h \
+ optw_ctcp.h \
+ optw_ctcpfloodprotection.h \
+ optw_dcc.h \
+ optw_generalopt.h \
+ optw_highlighting.h \
+ optw_ident.h \
+ optw_identity.h \
+ optw_ignore.h \
+ optw_input.h \
+ optw_interfacefeatures.h \
+ optw_interfacelookglobal.h \
+ optw_irc.h \
+ optw_ircoutput.h \
+ optw_ircview.h \
+ optw_lag.h \
+ optw_logging.h \
+ optw_mediatypes.h \
+ optw_messages.h \
+ optw_nickserv.h \
+ optw_notify.h \
+ optw_protection.h \
+ optw_proxy.h \
+ optw_query.h \
+ optw_servers.h \
+ optw_sound.h \
+ optw_ssl.h \
+ optw_taskbar.h \
+ optw_textencoding.h \
+ optw_texticons.h \
+ optw_theme.h \
+ optw_tools.h \
+ optw_transport.h \
+ optw_topiclabel.h \
+ optw_away.h \
+ optw_uparser.h \
+ optw_urlhandlers.h \
+ optw_userlist.h \
+ optw_tray.h
+
+instances.h: optw_*.h mkcreateinstanceproc.sh
+ ./mkcreateinstanceproc.sh
+
+m_%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+container.cpp: m_container.moc
+dialog.cpp: m_dialog.moc
+instances.cpp: m_instances.moc
+optw_antispam.cpp: m_optw_antispam.moc
+optw_avatar.cpp: m_optw_avatar.moc
+optw_away.cpp: m_optw_away.moc
+optw_connection.cpp: m_optw_connection.moc
+optw_ctcp.cpp: m_optw_ctcp.moc
+optw_ctcpfloodprotection.cpp: m_optw_ctcpfloodprotection.moc
+optw_dcc.cpp: m_optw_dcc.moc
+optw_generalopt.cpp: m_optw_generalopt.moc
+optw_highlighting.cpp: m_optw_highlighting.moc
+optw_ident.cpp: m_optw_ident.moc
+optw_identity.cpp: m_optw_identity.moc
+optw_ignore.cpp: m_optw_ignore.moc
+optw_input.cpp: m_optw_input.moc
+optw_interfacefeatures.cpp: m_optw_interfacefeatures.moc
+optw_interfacelookglobal.cpp: m_optw_interfacelookglobal.moc
+optw_irc.cpp: m_optw_irc.moc
+optw_ircoutput.cpp: m_optw_ircoutput.moc
+optw_ircview.cpp: m_optw_ircview.moc
+optw_lag.cpp: m_optw_lag.moc
+optw_logging.cpp: m_optw_logging.moc
+optw_look.cpp: m_optw_look.moc
+optw_mediatypes.cpp: m_optw_mediatypes.moc
+optw_messages.cpp: m_optw_messages.moc
+optw_nickserv.cpp: m_optw_nickserv.moc
+optw_notify.cpp: m_optw_notify.moc
+optw_protection.cpp: m_optw_protection.moc
+optw_proxy.cpp: m_optw_proxy.moc
+optw_query.cpp: m_optw_query.moc
+optw_servers.cpp: m_optw_servers.moc
+optw_sound.cpp: m_optw_sound.moc
+optw_ssl.cpp: m_optw_ssl.moc
+optw_taskbar.cpp: m_optw_taskbar.moc
+optw_textencoding.cpp: m_optw_textencoding.moc
+optw_texticons.cpp: m_optw_texticons.moc
+optw_transport.cpp: m_optw_transport.moc
+optw_theme.cpp: m_optw_theme.moc
+optw_topiclabel.cpp: m_optw_topiclabel.moc
+optw_tools.cpp: m_optw_tools.moc
+optw_uparser.cpp: m_optw_uparser.moc
+optw_urlhandlers.cpp: m_optw_urlhandlers.moc
+optw_userlist.cpp: m_optw_userlist.moc
+optw_tray.cpp : m_optw_tray.moc
diff --git a/src/modules/options/container.cpp b/src/modules/options/container.cpp
new file mode 100644
index 00000000..7e2272c1
--- /dev/null
+++ b/src/modules/options/container.cpp
@@ -0,0 +1,123 @@
+//
+// File : container.cpp
+// Creation date : Wed Nov 21 17:09:49 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "container.h"
+#include "instances.h"
+
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+#include "kvi_app.h"
+
+#include <qlayout.h>
+#include <qpushbutton.h>
+#include "kvi_tal_tooltip.h"
+#include <qevent.h>
+
+#ifdef COMPILE_USE_QT4
+ #include <qdesktopwidget.h>
+#endif
+
+extern KviOptionsInstanceManager * g_pOptionsInstanceManager;
+
+KviOptionsWidgetContainer::KviOptionsWidgetContainer(QWidget * par,bool bModal)
+: QDialog(par,"container","options")
+{
+ m_pOptionsWidget = 0;
+ setModal(bModal);
+}
+
+KviOptionsWidgetContainer::~KviOptionsWidgetContainer()
+{
+ if(m_pOptionsWidget)delete m_pOptionsWidget;
+}
+
+void KviOptionsWidgetContainer::setup(KviOptionsWidget * w)
+{
+ QGridLayout * g = new QGridLayout(this,2,3,4,8);
+
+ g->addMultiCellWidget(w,0,0,0,2);
+
+
+ QPushButton * b = new QPushButton(__tr2qs_ctx("&OK","options"),this);
+ KviTalToolTip::add(b,__tr2qs_ctx("Close this dialog, accepting all changes.","options"));
+ //b->setMinimumWidth(m_pCancel->sizeHint().width());
+ g->addWidget(b,1,1);
+ b->setDefault(true);
+ connect(b,SIGNAL(clicked()),this,SLOT(okClicked()));
+ b->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ACCEPT)));
+
+ m_pCancel = new QPushButton(__tr2qs_ctx("Cancel","options"),this);
+ KviTalToolTip::add(m_pCancel,__tr2qs_ctx("Close this dialog, discarding all changes.","options"));
+ g->addWidget(m_pCancel,1,2);
+ connect(m_pCancel,SIGNAL(clicked()),this,SLOT(cancelClicked()));
+ m_pCancel->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DISCARD)));
+
+
+ g->setRowStretch(0,1);
+ g->setColStretch(0,1);
+
+ KviOptionsWidgetInstanceEntry * e = g_pOptionsInstanceManager->findInstanceEntry(w->className());
+ if(e)
+ {
+ //KviStr caption(KviStr::Format,"%s - KVIrc",e->szName);
+ setIcon(*(g_pIconManager->getSmallIcon(e->iIcon)));
+ setCaption(e->szName);
+ }
+ m_pOptionsWidget = w;
+
+}
+
+void KviOptionsWidgetContainer::closeEvent(QCloseEvent *e)
+{
+ e->ignore();
+ cancelClicked();
+}
+
+void KviOptionsWidgetContainer::showEvent(QShowEvent *e)
+{
+ if(parent() == 0)
+ {
+ move((g_pApp->desktop()->width() - width()) / 2,
+ (g_pApp->desktop()->height() - height()) / 2);
+ }
+ QWidget::showEvent(e);
+ m_pCancel->setFocus();
+}
+
+void KviOptionsWidgetContainer::reject()
+{
+ cancelClicked();
+}
+
+void KviOptionsWidgetContainer::okClicked()
+{
+ if(m_pOptionsWidget)m_pOptionsWidget->commit();
+ g_pApp->saveOptions();
+ delete this;
+}
+
+void KviOptionsWidgetContainer::cancelClicked()
+{
+ deleteLater();
+}
+
+#include "m_container.moc"
diff --git a/src/modules/options/container.h b/src/modules/options/container.h
new file mode 100644
index 00000000..10ae69de
--- /dev/null
+++ b/src/modules/options/container.h
@@ -0,0 +1,53 @@
+#ifndef _CONTAINER_H_
+#define _CONTAINER_H_
+//
+// File : container.h
+// Creation date : Wed Nov 21 17:09:50 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "kvi_optionswidget.h"
+#include <qdialog.h>
+
+class QPushButton;
+
+class KviOptionsWidgetContainer : public QDialog
+{
+ Q_OBJECT
+public:
+ KviOptionsWidgetContainer(QWidget * par,bool bModal = false);
+ ~KviOptionsWidgetContainer();
+protected:
+ KviOptionsWidget * m_pOptionsWidget;
+ QPushButton * m_pCancel;
+public:
+ void setup(KviOptionsWidget * w);
+protected:
+ virtual void closeEvent(QCloseEvent *e);
+ virtual void showEvent(QShowEvent *e);
+ virtual void reject();
+protected slots:
+ void okClicked();
+ void cancelClicked();
+};
+
+
+
+#endif //_CONTAINER_H_
diff --git a/src/modules/options/dialog.cpp b/src/modules/options/dialog.cpp
new file mode 100644
index 00000000..bebcae3e
--- /dev/null
+++ b/src/modules/options/dialog.cpp
@@ -0,0 +1,675 @@
+//=============================================================================
+//
+// File : dialog.cpp
+// Created on Fri 10 Feb 2006 18:52:18 by Szymon Stefanek
+// Based on dlg_options.cpp: Tue Jun 11 2000 02:39:12 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2000-2006 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "dialog.h"
+
+#include "kvi_app.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+#include "kvi_module.h"
+#include "kvi_styled_controls.h"
+#include "kvi_pointerhashtable.h"
+#include <qlayout.h>
+#include "kvi_accel.h"
+#include <qlabel.h>
+#include "kvi_tal_vbox.h"
+#include <qsplitter.h>
+#include "kvi_tal_widgetstack.h"
+#include <qpushbutton.h>
+#include "kvi_tal_tooltip.h"
+
+#ifdef COMPILE_USE_QT4
+ #include <q3header.h>
+#else
+ #include <qheader.h>
+ #include <qobjectlist.h>
+#endif
+#include "kvi_tal_popupmenu.h"
+#include <qtoolbutton.h>
+#include <qcheckbox.h>
+#include <kvi_tal_groupbox.h>
+#include <qpainter.h>
+#include <qfont.h>
+#include <qevent.h>
+
+//extern KviModule * g_pOptionsModule;
+extern KviPointerHashTable<QString,KviOptionsDialog> * g_pOptionsDialogDict;
+
+extern KVIRC_API KviApp * g_pApp;
+extern KviOptionsInstanceManager * g_pOptionsInstanceManager;
+
+KviGeneralOptionsFrontWidget::KviGeneralOptionsFrontWidget(QWidget *parent,const QString &szText)
+:KviOptionsWidget(parent,"general_options_front_widget")
+{
+ createLayout(1,1);
+ QLabel * l = new QLabel(szText,this);
+#ifdef COMPILE_USE_QT4
+ l->setWordWrap(true);
+#endif
+ l->setAlignment(Qt::AlignTop);
+ layout()->addWidget(l,0,0);
+}
+
+KviGeneralOptionsFrontWidget::~KviGeneralOptionsFrontWidget()
+{
+}
+
+
+
+
+KviOptionsListViewItem::KviOptionsListViewItem(KviTalListView *parent,KviOptionsWidgetInstanceEntry * e)
+:KviTalListViewItem(parent,e->szName)
+{
+ m_pInstanceEntry = e;
+ m_pOptionsWidget = 0;
+ m_bHighlighted = false;
+ setPixmap(0,*(g_pIconManager->getSmallIcon(e->iIcon)));
+}
+
+KviOptionsListViewItem::KviOptionsListViewItem(KviTalListViewItem *parent,KviOptionsWidgetInstanceEntry * e)
+:KviTalListViewItem(parent,e->szName)
+{
+ m_pInstanceEntry = e;
+ m_pOptionsWidget = 0;
+ m_bHighlighted = false;
+ setPixmap(0,*(g_pIconManager->getSmallIcon(e->iIcon)));
+}
+
+KviOptionsListViewItem::~KviOptionsListViewItem()
+{
+}
+
+void KviOptionsListViewItem::paintCell(QPainter * p,const QColorGroup & cg,int column,int width,int align)
+{
+ if(m_bHighlighted)
+ {
+ QColorGroup tmp(cg);
+ tmp.setColor(QColorGroup::Base,Qt::red);
+ tmp.setColor(QColorGroup::Background,Qt::red);
+ tmp.setColor(QColorGroup::Text,Qt::yellow);
+ KviTalListViewItem::paintCell(p,tmp,column,width,align);
+ } else {
+ KviTalListViewItem::paintCell(p,cg,column,width,align);
+ }
+}
+
+
+KviOptionsDialog::KviOptionsDialog(QWidget * par,const QString &szGroup)
+: QDialog(par,"general_options_dialog")
+{
+ setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_KVIRC)));
+
+ m_szGroup = szGroup;
+
+ QString szDialogTitle;
+
+ if(szGroup.isEmpty() || KviQString::equalCI(szGroup,"general"))
+ {
+ szDialogTitle = __tr2qs_ctx("General Preferences","options");
+ } else if(KviQString::equalCI(szGroup,"theme"))
+ {
+ szDialogTitle = __tr2qs_ctx("Theme Preferences","options");
+ } else {
+ szDialogTitle = __tr2qs_ctx("KVIrc Preferences","options");
+ }
+
+ QString szDialog = __tr2qs_ctx("This dialog contains a set of KVIrc settings.<br> Use the icons " \
+ "on the left to navigate through the option pages. The text box in the " \
+ "bottom left corner is a small search engine. It will highlight the " \
+ "pages that contain options related to the search term you have entered.","options");
+
+
+ QString szInfoTips;
+#ifdef COMPILE_INFO_TIPS
+ szInfoTips = __tr2qs_ctx("Many settings have tooltips that can be shown by holding " \
+ "the cursor over their label for a few seconds.","options");
+#else
+ szInfoTips = "";
+#endif
+ QString szOkCancelButtons = __tr2qs_ctx("When you have finished, click \"<b>OK</b>\" to accept your changes " \
+ "or \"<b>Cancel</b>\" to discard them. Clicking \"<b>Apply</b>\" will commit your " \
+ "changes without closing the window.","options");
+
+
+ QString szFrontText = QString(
+ "<table width=\"100%\" height=\"100%\" valign=\"top\" align=\"center\" cellpadding=\"4\">" \
+ "<tr>" \
+ "<td bgcolor=\"#303030\" valign=\"top\">" \
+ "<center><h1><font color=\"#FFFFFF\">%1</font></h1></center>" \
+ "</td>" \
+ "</tr>" \
+ "<tr>" \
+ "<td valign=\"bottom\">" \
+ "<br>" \
+ "<br>" \
+ "<p>" \
+ "%2" \
+ "</p>" \
+ "<br>" \
+ "<p>" \
+ "%3" \
+ "</p>" \
+ "<br>" \
+ "<p>" \
+ "%4" \
+ "</p>" \
+ "</td>" \
+ "</tr>" \
+ "</table>"
+ ).arg(szDialogTitle).arg(szDialog).arg(szInfoTips).arg(szOkCancelButtons);
+
+ QString szCaption = szDialogTitle + " - KVIrc";
+ setCaption(szCaption);
+
+ QGridLayout * g1 = new QGridLayout(this,2,5,8,8);
+ QSplitter * spl = new QSplitter(Qt::Horizontal,this);
+
+ g1->addMultiCellWidget(spl,0,0,0,4);
+
+ KviTalVBox * vbox = new KviTalVBox(spl);
+ vbox->setSpacing(2);
+ vbox->setMargin(0);
+
+ // Controlling list view
+ m_pListView = new KviTalListView(vbox);
+ m_pListView->addColumn("");
+ m_pListView->header()->hide();
+ m_pListView->setRootIsDecorated(true);
+ m_pListView->setSorting(-1);
+ connect(m_pListView,SIGNAL(selectionChanged(KviTalListViewItem *)),this,SLOT(listViewItemSelectionChanged(KviTalListViewItem *)));
+
+ KviTalHBox * hbox = new KviTalHBox(vbox);
+ vbox->setSpacing(2);
+ vbox->setMargin(0);
+
+ m_pSearchLineEdit = new QLineEdit(hbox);
+ connect(m_pSearchLineEdit,SIGNAL(returnPressed()),this,SLOT(searchClicked()));
+ m_pSearchButton = new KviStyledToolButton(hbox);
+ m_pSearchButton->setUsesBigPixmap(false);
+ m_pSearchButton->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SEARCH)));
+ connect(m_pSearchButton,SIGNAL(clicked()),this,SLOT(searchClicked()));
+ connect(m_pSearchLineEdit,SIGNAL(textChanged(const QString &)),this,SLOT(searchLineEditTextChanged(const QString &)));
+
+#ifdef COMPILE_INFO_TIPS
+ QString szTip = __tr2qs_ctx("<p>This is the search tool for this options dialog.</p>" \
+ "<p>You can enter a search term either in your native " \
+ "language or in english and press the button on the right. " \
+ "The pages that contain some options related to the " \
+ "search term will be highlighted and you will be able " \
+ "to quickly find them.</p><p>Try \"nickname\" for example.</p>","options");
+ KviTalToolTip::add(m_pSearchLineEdit,szTip);
+ KviTalToolTip::add(m_pSearchButton,szTip);
+#endif
+
+ vbox = new KviTalVBox(spl);
+ vbox->setSpacing(2);
+ vbox->setMargin(0);
+
+ m_pCategoryLabel = new QLabel("<b>&nbsp;</b>",vbox,"labgeneraloptions");
+ //m_pCategoryLabel->setMargin(3);
+
+ QFrame * f = new QFrame(vbox);
+ f->setFrameStyle(QFrame::HLine | QFrame::Sunken);
+
+ // Widget stack
+ m_pWidgetStack = new KviTalWidgetStack(vbox);
+ vbox->setStretchFactor(m_pWidgetStack,1);
+
+ // First widget visible
+ m_pFrontWidget = new KviGeneralOptionsFrontWidget(m_pWidgetStack,szFrontText);
+ m_pWidgetStack->addWidget(m_pFrontWidget,0);
+ m_pWidgetStack->raiseWidget(m_pFrontWidget);
+
+// Ok,Cancel,Help
+
+ QPushButton * b = new QPushButton(__tr2qs_ctx("&OK","options"),this,"btnok");
+ KviTalToolTip::add(b,__tr2qs_ctx("Close this dialog, accepting all changes.","options"));
+ connect(b,SIGNAL(clicked()),this,SLOT(okClicked()));
+ //b->setMinimumWidth(whatIsThisWidth);
+ b->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ACCEPT)));
+ g1->addWidget(b,1,2);
+
+ b = new QPushButton(__tr2qs_ctx("&Apply","options"),this,"btnapply");
+ KviTalToolTip::add(b,__tr2qs_ctx("Commit all changes immediately.","options"));
+ connect(b,SIGNAL(clicked()),this,SLOT(applyClicked()));
+ b->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ACCEPT)));
+ g1->addWidget(b,1,3);
+
+ b = new QPushButton(__tr2qs_ctx("Cancel","options"),this,"btncancel");
+ KviTalToolTip::add(b,__tr2qs_ctx("Close this dialog, discarding all changes.","options"));
+ b->setDefault(true);
+ //b->setMinimumWidth(whatIsThisWidth);
+ connect(b,SIGNAL(clicked()),this,SLOT(cancelClicked()));
+ b->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DISCARD)));
+ g1->addWidget(b,1,4);
+
+ g1->setRowStretch(0,1);
+ g1->setColStretch(1,1);
+
+
+ fillListView(0,g_pOptionsInstanceManager->instanceEntryTree(),szGroup);
+
+ if(!parent())
+ {
+
+ if(KVI_OPTION_RECT(KviOption_rectGeneralOptionsDialogGeometry).y() < 5)
+ {
+ KVI_OPTION_RECT(KviOption_rectGeneralOptionsDialogGeometry).setY(5);
+ }
+ //setGeometry(KVI_OPTION_RECT(KviOption_rectGeneralOptionsDialogGeometry));
+ resize(KVI_OPTION_RECT(KviOption_rectGeneralOptionsDialogGeometry).width(),
+ KVI_OPTION_RECT(KviOption_rectGeneralOptionsDialogGeometry).height());
+ move(KVI_OPTION_RECT(KviOption_rectGeneralOptionsDialogGeometry).x(),
+ KVI_OPTION_RECT(KviOption_rectGeneralOptionsDialogGeometry).y());
+ }
+
+ KviAccel *a = new KviAccel( this );
+ a->connectItem( a->insertItem(Qt::Key_Escape), this,SLOT(close()) );
+
+}
+
+KviOptionsDialog::~KviOptionsDialog()
+{
+ if(!parent())KVI_OPTION_RECT(KviOption_rectGeneralOptionsDialogGeometry) = QRect(pos().x(),pos().y(),
+ size().width(),size().height());
+ if(g_pOptionsDialogDict)
+ g_pOptionsDialogDict->remove(m_szGroup);
+}
+
+
+void KviOptionsDialog::searchLineEditTextChanged(const QString &)
+{
+ QString txt = m_pSearchLineEdit->text().stripWhiteSpace();
+ m_pSearchButton->setEnabled(txt.length() > 0);
+}
+
+bool KviOptionsDialog::recursiveSearch(KviOptionsListViewItem * pItem,const QStringList &lKeywords)
+{
+ //debug("recursive search:");
+ if(!pItem)return false;
+
+ if(!pItem->m_pOptionsWidget)
+ {
+ pItem->m_pOptionsWidget = g_pOptionsInstanceManager->getInstance(pItem->m_pInstanceEntry,m_pWidgetStack);
+ m_pWidgetStack->addWidget(pItem->m_pOptionsWidget,0);
+ }
+
+ bool bFoundSomethingHere = false;
+ KviPointerHashTable<void *,bool> lOptionWidgetsToMark;
+ lOptionWidgetsToMark.setAutoDelete(true);
+ QTabWidget * pTabWidgetToMark = 0;
+
+ QObject * o;
+#ifdef COMPILE_USE_QT4
+ QObjectList ol = pItem->m_pOptionsWidget->queryList();
+ if(ol.count() > 0)
+ {
+ for(QObjectList::Iterator it = ol.begin();it != ol.end();++it)
+ {
+ o = *it;
+#else
+ QObjectList * ol = pItem->m_pOptionsWidget->queryList();
+ if(ol)
+ {
+ QObjectListIt it(*ol);
+ while((o = it.current())/* && (!bFoundSomethingHere)*/)
+ {
+#endif
+ QString szText;
+ if(o->inherits("QLabel"))szText = ((QLabel *)o)->text();
+ else if(o->inherits("QCheckBox"))szText = ((QCheckBox *)o)->text();
+ else if(o->inherits("KviTalGroupBox"))szText = ((KviTalGroupBox *)o)->title();
+#ifdef COMPILE_INFO_TIPS
+ if(o->inherits("QWidget"))
+#ifdef COMPILE_USE_QT4
+ szText.append(((QWidget *)o)->toolTip());
+#else
+ szText.append(QToolTip::textFor((QWidget*)o));
+#endif
+#endif
+ if(!szText.isEmpty())
+ {
+ bool bOk = true;
+ for(int j=0;j<lKeywords.count();j++)
+ {
+#ifdef COMPILE_USE_QT4
+ if(szText.find(lKeywords.at(j),0,false) == -1)
+#else
+ if(szText.find(*(lKeywords.at(j)),0,false) == -1)
+#endif
+ {
+ bOk = false;
+ break;
+ }
+ }
+ if(bOk)
+ {
+ bFoundSomethingHere = true;
+ }
+
+ if(o->inherits("QWidget"))
+ {
+ QWidget* pWidget=(QWidget*)o;
+ QFont font = pWidget->font();
+ font.setBold(bOk);
+ font.setUnderline(bOk);
+ pWidget->setFont(font);
+
+ // if there is a QTabWidget in the parent chain, signal it in the tab text
+ QObject * pParent = pWidget->parent();
+ while(pParent)
+ {
+ if(pParent->inherits("QTabWidget"))
+ {
+ pTabWidgetToMark = (QTabWidget *)pParent;
+ break;
+ }
+ pParent = pParent->parent();
+ }
+
+ if(pTabWidgetToMark)
+ {
+ // lookup the KviOptionsWidget parent
+ pParent = pWidget->parent();
+ while(pParent)
+ {
+ if(pParent->inherits("KviOptionsWidget"))
+ {
+ bool * pExistingBool = lOptionWidgetsToMark.find(pParent);
+ if(pExistingBool)
+ {
+ if(bOk)
+ *pExistingBool = true;
+ } else {
+ lOptionWidgetsToMark.insert(pParent,new bool(bOk));
+ }
+ break;
+ }
+ pParent = pParent->parent();
+ }
+ }
+ }
+ }
+
+#ifndef COMPILE_USE_QT4
+ ++it;
+#endif
+ }
+#ifndef COMPILE_USE_QT4
+ delete ol;
+#endif
+ }
+
+ if(pTabWidgetToMark)
+ {
+ KviPointerHashTableIterator<void *,bool> it(lOptionWidgetsToMark);
+ while(bool * pBool = it.current())
+ {
+ KviOptionsWidget * pOptionsWidget = (KviOptionsWidget *)it.currentKey();
+ QString szTxt = pTabWidgetToMark->tabLabel(pOptionsWidget);
+ if(KviQString::equalCIN(szTxt,">>> ",4))
+ {
+ szTxt.replace(">>> ","");
+ szTxt.replace(" <<<","");
+ }
+ if(*pBool)
+ {
+ szTxt.insert(0,">>> ");
+ szTxt += QString(" <<<");
+ }
+ pTabWidgetToMark->setTabLabel(pOptionsWidget,szTxt);
+ ++it;
+ }
+ }
+
+ pItem->setHighlighted(bFoundSomethingHere);
+
+ KviOptionsListViewItem * pChild = (KviOptionsListViewItem *)pItem->firstChild();
+ bool bFoundSomethingInside = false;
+ while(pChild)
+ {
+ bool bRet = recursiveSearch(pChild,lKeywords);
+ if(bRet)bFoundSomethingInside = true;
+ pChild = (KviOptionsListViewItem *)(pChild->nextSibling());
+ }
+ pItem->setSelected(false);
+ m_pListView->setOpen(pItem,bFoundSomethingInside);
+ return (bFoundSomethingInside || bFoundSomethingHere);
+}
+
+void KviOptionsDialog::search(const QStringList &lKeywords)
+{
+ m_pListView->setUpdatesEnabled(false);
+
+ KviOptionsListViewItem * pChild = (KviOptionsListViewItem *)(m_pListView->firstChild());
+ bool bFoundSomethingInside = false;
+ while(pChild)
+ {
+ bFoundSomethingInside = recursiveSearch(pChild,lKeywords);
+ pChild = (KviOptionsListViewItem *)(pChild->nextSibling());
+ }
+ m_pListView->setUpdatesEnabled(true);
+ m_pListView->triggerUpdate();
+}
+
+void KviOptionsDialog::search(const QString &szKeywords)
+{
+ QStringList lKeywords = QStringList::split(" ",szKeywords,false);
+ search(lKeywords);
+}
+
+void KviOptionsDialog::searchClicked()
+{
+ QString szTxt = m_pSearchLineEdit->text().stripWhiteSpace();
+ if(!szTxt.isEmpty())
+ search(szTxt);
+}
+
+void KviOptionsDialog::fillListView(KviTalListViewItem * p,KviPointerList<KviOptionsWidgetInstanceEntry> * l,const QString &szGroup,bool bNotContainedOnly)
+{
+ if(!l)return;
+
+ KviOptionsListViewItem * it;
+ KviOptionsWidgetInstanceEntry * e;
+
+ KviPointerList<KviOptionsWidgetInstanceEntry> tmp;
+ tmp.setAutoDelete(false);
+
+
+ for(e = l->first();e;e = l->next())
+ {
+ // must be in the correct group
+ // if we want only containers then well.. must be one
+ e->bDoInsert = KviQString::equalCI(szGroup,e->szGroup) && ((!bNotContainedOnly) || e->bIsContainer || e->bIsNotContained);
+ KviOptionsWidgetInstanceEntry * ee = tmp.first();
+ int idx = 0;
+ while(ee)
+ {
+ if(ee->iPriority >= e->iPriority)break;
+ idx++;
+ ee = tmp.next();
+ }
+ tmp.insert(idx,e);
+ }
+
+ for(e = tmp.first();e;e = tmp.next())
+ {
+ if(e->bDoInsert)
+ {
+ if(p)it = new KviOptionsListViewItem(p,e);
+ else it = new KviOptionsListViewItem(m_pListView,e);
+ if(!it->m_pOptionsWidget)
+ {
+ it->m_pOptionsWidget = g_pOptionsInstanceManager->getInstance(it->m_pInstanceEntry,m_pWidgetStack);
+ m_pWidgetStack->addWidget(it->m_pOptionsWidget,0);
+ }
+ } else {
+ it = (KviOptionsListViewItem *)p;
+ }
+
+ if(e->pChildList)
+ {
+ if(e->bIsContainer)
+ {
+ // it's a container: add only eventual not contained children (containers or explicitly marked as not contained)
+ fillListView(it,e->pChildList,szGroup,true);
+ } else {
+ // it's not a container, add any children
+ fillListView(it,e->pChildList,szGroup,false);
+ }
+ }
+ }
+}
+
+void KviOptionsDialog::listViewItemSelectionChanged(KviTalListViewItem *it)
+{
+ if(it)
+ {
+ QString str = it->text(0);
+ KviTalListViewItem * par = it->parent();
+
+ while(par)
+ {
+ str.prepend(" :: ");
+ str.prepend(par->text(0));
+ par = par->parent();
+ }
+ str.prepend("<b>");
+ str += "</b>";
+
+ KviOptionsListViewItem *i = (KviOptionsListViewItem *)it;
+ if(!i->m_pOptionsWidget)
+ {
+ i->m_pOptionsWidget = g_pOptionsInstanceManager->getInstance(i->m_pInstanceEntry,m_pWidgetStack);
+ m_pWidgetStack->addWidget(i->m_pOptionsWidget,0);
+ }
+
+ m_pWidgetStack->raiseWidget(i->m_pOptionsWidget);
+ m_pCategoryLabel->setText(str);
+ }
+}
+
+KviOptionsListViewItem * KviOptionsDialog::findItemByPage(KviOptionsListViewItem *it,KviOptionsWidget * pPage)
+{
+ if(!it)return 0;
+ if(it->m_pOptionsWidget == pPage)return it;
+
+ KviOptionsListViewItem *i;
+ // run through the children
+ i = (KviOptionsListViewItem *)(it->firstChild());
+ if(i)
+ {
+ i = findItemByPage(i,pPage);
+ if(i)return i;
+ }
+
+ // not found in the children tree.. look in the next sibling
+ i = (KviOptionsListViewItem *)(it->nextSibling());
+ if(i)
+ {
+ i = findItemByPage(i,pPage);
+ if(i)return i;
+ }
+ return 0;
+}
+
+
+void KviOptionsDialog::pageWantsToSwitchToAdvancedPage(KviOptionsWidget * pPage)
+{
+ // unused
+}
+
+void KviOptionsDialog::applyClicked()
+{
+ apply(false);
+}
+
+void KviOptionsDialog::apply(bool bDialogAboutToClose)
+{
+
+ KviOptionsListViewItem *it = (KviOptionsListViewItem *)m_pListView->firstChild();
+ while(it)
+ {
+ recursiveCommit(it);
+ it = (KviOptionsListViewItem *)it->nextSibling();
+ }
+
+ if(!bDialogAboutToClose)
+ {
+ // bring up the current widget again!
+ it = (KviOptionsListViewItem *)m_pListView->currentItem();
+ if(it)listViewItemSelectionChanged(it);
+ }
+
+ g_pApp->saveConfiguration();
+
+}
+
+void KviOptionsDialog::okClicked()
+{
+ apply(true);
+ delete this;
+}
+
+void KviOptionsDialog::cancelClicked()
+{
+ delete this;
+}
+
+void KviOptionsDialog::closeEvent(QCloseEvent *e)
+{
+ e->ignore();
+ delete this;
+}
+
+void KviOptionsDialog::recursiveCommit(KviOptionsListViewItem *it)
+{
+ // First commit the children
+ if(!it) return;
+ KviOptionsListViewItem *it2 = (KviOptionsListViewItem *)it->firstChild();
+ while(it2)
+ {
+ recursiveCommit(it2);
+ it2 = (KviOptionsListViewItem *)it2->nextSibling();
+ }
+ // then the parents
+ if(it->m_pOptionsWidget)
+ {
+ it->m_pOptionsWidget->commit();
+ delete it->m_pOptionsWidget;
+ it->m_pOptionsWidget = 0;
+ }
+ //refreshListView(); // <-- this tends to jump into infinite recursion
+}
+void KviOptionsDialog::keyPressEvent( QKeyEvent * e )
+{
+ if(e->key()==Qt::Key_Return)
+ e->accept();
+ else
+ e->ignore();
+}
+
+#include "m_dialog.moc"
diff --git a/src/modules/options/dialog.h b/src/modules/options/dialog.h
new file mode 100644
index 00000000..b342ca51
--- /dev/null
+++ b/src/modules/options/dialog.h
@@ -0,0 +1,104 @@
+#ifndef _DIALOG_H_
+#define _DIALOG_H_
+//=============================================================================
+//
+// File : dialog.h
+// Created on Fri 10 Feb 2006 18:52:18 by Szymon Stefanek
+// Based on dlg_options.h: Tue Jun 11 2000 02:39:12 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2000-2006 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include <qdialog.h>
+#include "kvi_tal_listview.h"
+#include <qstringlist.h>
+#include "kvi_optionswidget.h"
+
+#include "instances.h"
+
+class QLabel;
+class KviTalWidgetStack;
+class QPushButton;
+class QLineEdit;
+class QToolButton;
+
+class KviGeneralOptionsFrontWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviGeneralOptionsFrontWidget(QWidget *parent,const QString &szText);
+ ~KviGeneralOptionsFrontWidget();
+};
+
+class KviOptionsListViewItem : public KviTalListViewItem
+{
+public:
+ KviOptionsListViewItem(KviTalListView *parent,KviOptionsWidgetInstanceEntry * e);
+ KviOptionsListViewItem(KviTalListViewItem *parent,KviOptionsWidgetInstanceEntry * e);
+ ~KviOptionsListViewItem();
+public:
+ KviOptionsWidgetInstanceEntry * m_pInstanceEntry;
+ KviOptionsWidget * m_pOptionsWidget;
+ bool m_bHighlighted;
+public:
+ void setHighlighted(bool b){ m_bHighlighted = b; };
+protected:
+ virtual void paintCell(QPainter * p,const QColorGroup & cg,int column,int width,int align);
+};
+
+class KviOptionsDialog : public QDialog
+{
+ Q_OBJECT
+public:
+ KviOptionsDialog(QWidget * par,const QString &szGroup);
+ ~KviOptionsDialog();
+private:
+ KviTalListView * m_pListView;
+ QLabel * m_pCategoryLabel;
+ KviTalWidgetStack * m_pWidgetStack;
+ KviGeneralOptionsFrontWidget* m_pFrontWidget;
+ QString m_szGroup;
+ QLineEdit * m_pSearchLineEdit;
+ QToolButton * m_pSearchButton;
+private:
+ void recursiveCommit(KviOptionsListViewItem *it);
+ void fillListView(KviTalListViewItem * p,KviPointerList<KviOptionsWidgetInstanceEntry> * l,const QString &szGroup,bool bNotContainedOnly = false);
+ //KviOptionsListViewItem * showHiddenChildren(KviTalListViewItem * p,KviPointerList<KviOptionsWidgetInstanceEntry> * l);
+ KviOptionsListViewItem * findItemByPage(KviOptionsListViewItem *it,KviOptionsWidget * pPage);
+private slots:
+ void listViewItemSelectionChanged(KviTalListViewItem *it);
+ void applyClicked();
+ void okClicked();
+ void cancelClicked();
+ void pageWantsToSwitchToAdvancedPage(KviOptionsWidget * pPage);
+ void searchClicked();
+ void searchLineEditTextChanged(const QString &);
+protected:
+ void apply(bool bDialogAboutToClose);
+ virtual void closeEvent(QCloseEvent *e);
+ virtual void keyPressEvent( QKeyEvent * e );
+ bool recursiveSearch(KviOptionsListViewItem * pItem,const QStringList &lKeywords);
+public:
+ void search(const QString &szKeywords);
+ void search(const QStringList &lKeywords);
+};
+
+
+#endif //!_DIALOG_H_
diff --git a/src/modules/options/instances.cpp b/src/modules/options/instances.cpp
new file mode 100644
index 00000000..aa23e7be
--- /dev/null
+++ b/src/modules/options/instances.cpp
@@ -0,0 +1,3590 @@
+
+
+//
+// File : instances.cpp
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek ([email protected])
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+//
+// Instance creation routines for the KVIrc options module
+// DO NOT EDIT THIS FILE!! ALL CHANGES WILL BE LOST!!
+// This file is automatically generated by mkcreateinstanceproc.sh
+// so any change should go in that script
+//
+
+#include "optw_antispam.h"
+#include "optw_avatar.h"
+#include "optw_away.h"
+#include "optw_connection.h"
+#include "optw_ctcp.h"
+#include "optw_ctcpfloodprotection.h"
+#include "optw_dcc.h"
+#include "optw_generalopt.h"
+#include "optw_highlighting.h"
+#include "optw_ident.h"
+#include "optw_identity.h"
+#include "optw_ignore.h"
+#include "optw_input.h"
+#include "optw_interfacefeatures.h"
+#include "optw_interfacelookglobal.h"
+#include "optw_irc.h"
+#include "optw_ircoutput.h"
+#include "optw_ircview.h"
+#include "optw_lag.h"
+#include "optw_logging.h"
+#include "optw_mediatypes.h"
+#include "optw_messages.h"
+#include "optw_nickserv.h"
+#include "optw_notify.h"
+#include "optw_protection.h"
+#include "optw_proxy.h"
+#include "optw_query.h"
+#include "optw_servers.h"
+#include "optw_sound.h"
+#include "optw_ssl.h"
+#include "optw_taskbar.h"
+#include "optw_textencoding.h"
+#include "optw_texticons.h"
+#include "optw_theme.h"
+#include "optw_tools.h"
+#include "optw_topiclabel.h"
+#include "optw_transport.h"
+#include "optw_tray.h"
+#include "optw_uparser.h"
+#include "optw_urlhandlers.h"
+#include "optw_userlist.h"
+
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+#include "instances.h"
+
+int g_iOptionWidgetInstances = 0;
+
+KviOptionsWidget * classKviAntispamOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviAntispamOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviAvatarAdvancedOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviAvatarAdvancedOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviAwayOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviAwayOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviConnectionOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviConnectionOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviConnectionAdvancedOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviConnectionAdvancedOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviSSLOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviSSLOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviTransportOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviTransportOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviIdentOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviIdentOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviCtcpOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviCtcpOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviCtcpFloodProtectionOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviCtcpFloodProtectionOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviDccOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviDccOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviDccGeneralOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviDccGeneralOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviDccAdvancedOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviDccAdvancedOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviDccSendOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviDccSendOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviDccSendGeneralOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviDccSendGeneralOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviDccSendAdvancedOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviDccSendAdvancedOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviDccChatOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviDccChatOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviDccVoiceOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviDccVoiceOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviGeneralOptOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviGeneralOptOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviAlertHighlightingOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviAlertHighlightingOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviHighlightingOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviHighlightingOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviAlertOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviAlertOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviIdentityOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviIdentityOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviIdentityGeneralOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviIdentityGeneralOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviIdentityAvatarOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviIdentityAvatarOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviIdentityAdvancedOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviIdentityAdvancedOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviIgnoreOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviIgnoreOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviInputLookOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviInputLookOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviInputFeaturesOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviInputFeaturesOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviInterfaceFeaturesOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviInterfaceFeaturesOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviThemeGeneralOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviThemeGeneralOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviThemeTransparencyOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviThemeTransparencyOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviThemeMdiCaptionsOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviThemeMdiCaptionsOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviThemeMdiAreaOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviThemeMdiAreaOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviThemeToolBarAppletsOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviThemeToolBarAppletsOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviIrcOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviIrcOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviIrcGeneralOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviIrcGeneralOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviIrcAdvancedOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviIrcAdvancedOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviChannelOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviChannelOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviChannelGeneralOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviChannelGeneralOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviChannelAdvancedOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviChannelAdvancedOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviIrcOutputOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviIrcOutputOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviIrcViewThemeOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviIrcViewThemeOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviIrcViewLookOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviIrcViewLookOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviIrcViewFeaturesOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviIrcViewFeaturesOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviLagOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviLagOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviLoggingOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviLoggingOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviMediaTypesOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviMediaTypesOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviMessageOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviMessageOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviPrivmsgOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviPrivmsgOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviTimestampOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviTimestampOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviMessageColorsOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviMessageColorsOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviStandardColorsOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviStandardColorsOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviNickServOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviNickServOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviNotifyOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviNotifyOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviNotifierOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviNotifierOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviProtectionOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviProtectionOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviProxyOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviProxyOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviQueryOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviQueryOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviServerOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviServerOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviSoundOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviSoundOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviSoundGeneralOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviSoundGeneralOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviSoundsOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviSoundsOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviTaskBarOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviTaskBarOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviTreeTaskBarOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviTreeTaskBarOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviTreeTaskBarForegroundOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviTreeTaskBarForegroundOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviTreeTaskBarBackgroundOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviTreeTaskBarBackgroundOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviTreeTaskBarFeaturesOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviTreeTaskBarFeaturesOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviClassicTaskBarOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviClassicTaskBarOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviTextEncodingOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviTextEncodingOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviTextIconsOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviTextIconsOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviToolsOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviToolsOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviTopicLabelLookOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviTopicLabelLookOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviTrayOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviTrayOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviUParserOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviUParserOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviUrlHandlersOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviUrlHandlersOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviUserListLookOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviUserListLookOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviUserListLookBackgroundOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviUserListLookBackgroundOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviUserListLookForegroundOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviUserListLookForegroundOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviUserListGridOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviUserListGridOptionsWidget(parent);
+}
+
+KviOptionsWidget * classKviUserListFeaturesOptionsWidget_createInstanceProc(QWidget * parent)
+{
+ return new KviUserListFeaturesOptionsWidget(parent);
+}
+
+
+
+static const char * g_szName_KviAntispamOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviAntispamOptionsWidget;
+static const char * g_szClassName_KviAntispamOptionsWidget = "KviAntispamOptionsWidget";
+static const char * g_szName_KviAvatarAdvancedOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviAvatarAdvancedOptionsWidget;
+static const char * g_szClassName_KviAvatarAdvancedOptionsWidget = "KviAvatarAdvancedOptionsWidget";
+static const char * g_szName_KviAwayOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviAwayOptionsWidget;
+static const char * g_szClassName_KviAwayOptionsWidget = "KviAwayOptionsWidget";
+static const char * g_szName_KviConnectionOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviConnectionOptionsWidget;
+static const char * g_szClassName_KviConnectionOptionsWidget = "KviConnectionOptionsWidget";
+static const char * g_szName_KviConnectionAdvancedOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviConnectionAdvancedOptionsWidget;
+static const char * g_szClassName_KviConnectionAdvancedOptionsWidget = "KviConnectionAdvancedOptionsWidget";
+static const char * g_szName_KviSSLOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviSSLOptionsWidget;
+static const char * g_szClassName_KviSSLOptionsWidget = "KviSSLOptionsWidget";
+static const char * g_szName_KviTransportOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviTransportOptionsWidget;
+static const char * g_szClassName_KviTransportOptionsWidget = "KviTransportOptionsWidget";
+static const char * g_szName_KviIdentOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviIdentOptionsWidget;
+static const char * g_szClassName_KviIdentOptionsWidget = "KviIdentOptionsWidget";
+static const char * g_szName_KviCtcpOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviCtcpOptionsWidget;
+static const char * g_szClassName_KviCtcpOptionsWidget = "KviCtcpOptionsWidget";
+static const char * g_szName_KviCtcpFloodProtectionOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviCtcpFloodProtectionOptionsWidget;
+static const char * g_szClassName_KviCtcpFloodProtectionOptionsWidget = "KviCtcpFloodProtectionOptionsWidget";
+static const char * g_szName_KviDccOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviDccOptionsWidget;
+static const char * g_szClassName_KviDccOptionsWidget = "KviDccOptionsWidget";
+static const char * g_szName_KviDccGeneralOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviDccGeneralOptionsWidget;
+static const char * g_szClassName_KviDccGeneralOptionsWidget = "KviDccGeneralOptionsWidget";
+static const char * g_szName_KviDccAdvancedOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviDccAdvancedOptionsWidget;
+static const char * g_szClassName_KviDccAdvancedOptionsWidget = "KviDccAdvancedOptionsWidget";
+static const char * g_szName_KviDccSendOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviDccSendOptionsWidget;
+static const char * g_szClassName_KviDccSendOptionsWidget = "KviDccSendOptionsWidget";
+static const char * g_szName_KviDccSendGeneralOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviDccSendGeneralOptionsWidget;
+static const char * g_szClassName_KviDccSendGeneralOptionsWidget = "KviDccSendGeneralOptionsWidget";
+static const char * g_szName_KviDccSendAdvancedOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviDccSendAdvancedOptionsWidget;
+static const char * g_szClassName_KviDccSendAdvancedOptionsWidget = "KviDccSendAdvancedOptionsWidget";
+static const char * g_szName_KviDccChatOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviDccChatOptionsWidget;
+static const char * g_szClassName_KviDccChatOptionsWidget = "KviDccChatOptionsWidget";
+static const char * g_szName_KviDccVoiceOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviDccVoiceOptionsWidget;
+static const char * g_szClassName_KviDccVoiceOptionsWidget = "KviDccVoiceOptionsWidget";
+static const char * g_szName_KviGeneralOptOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviGeneralOptOptionsWidget;
+static const char * g_szClassName_KviGeneralOptOptionsWidget = "KviGeneralOptOptionsWidget";
+static const char * g_szName_KviAlertHighlightingOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviAlertHighlightingOptionsWidget;
+static const char * g_szClassName_KviAlertHighlightingOptionsWidget = "KviAlertHighlightingOptionsWidget";
+static const char * g_szName_KviHighlightingOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviHighlightingOptionsWidget;
+static const char * g_szClassName_KviHighlightingOptionsWidget = "KviHighlightingOptionsWidget";
+static const char * g_szName_KviAlertOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviAlertOptionsWidget;
+static const char * g_szClassName_KviAlertOptionsWidget = "KviAlertOptionsWidget";
+static const char * g_szName_KviIdentityOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviIdentityOptionsWidget;
+static const char * g_szClassName_KviIdentityOptionsWidget = "KviIdentityOptionsWidget";
+static const char * g_szName_KviIdentityGeneralOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviIdentityGeneralOptionsWidget;
+static const char * g_szClassName_KviIdentityGeneralOptionsWidget = "KviIdentityGeneralOptionsWidget";
+static const char * g_szName_KviIdentityAvatarOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviIdentityAvatarOptionsWidget;
+static const char * g_szClassName_KviIdentityAvatarOptionsWidget = "KviIdentityAvatarOptionsWidget";
+static const char * g_szName_KviIdentityAdvancedOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviIdentityAdvancedOptionsWidget;
+static const char * g_szClassName_KviIdentityAdvancedOptionsWidget = "KviIdentityAdvancedOptionsWidget";
+static const char * g_szName_KviIgnoreOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviIgnoreOptionsWidget;
+static const char * g_szClassName_KviIgnoreOptionsWidget = "KviIgnoreOptionsWidget";
+static const char * g_szName_KviInputLookOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviInputLookOptionsWidget;
+static const char * g_szClassName_KviInputLookOptionsWidget = "KviInputLookOptionsWidget";
+static const char * g_szName_KviInputFeaturesOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviInputFeaturesOptionsWidget;
+static const char * g_szClassName_KviInputFeaturesOptionsWidget = "KviInputFeaturesOptionsWidget";
+static const char * g_szName_KviInterfaceFeaturesOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviInterfaceFeaturesOptionsWidget;
+static const char * g_szClassName_KviInterfaceFeaturesOptionsWidget = "KviInterfaceFeaturesOptionsWidget";
+static const char * g_szName_KviThemeGeneralOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviThemeGeneralOptionsWidget;
+static const char * g_szClassName_KviThemeGeneralOptionsWidget = "KviThemeGeneralOptionsWidget";
+static const char * g_szName_KviThemeTransparencyOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviThemeTransparencyOptionsWidget;
+static const char * g_szClassName_KviThemeTransparencyOptionsWidget = "KviThemeTransparencyOptionsWidget";
+static const char * g_szName_KviThemeMdiCaptionsOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviThemeMdiCaptionsOptionsWidget;
+static const char * g_szClassName_KviThemeMdiCaptionsOptionsWidget = "KviThemeMdiCaptionsOptionsWidget";
+static const char * g_szName_KviThemeMdiAreaOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviThemeMdiAreaOptionsWidget;
+static const char * g_szClassName_KviThemeMdiAreaOptionsWidget = "KviThemeMdiAreaOptionsWidget";
+static const char * g_szName_KviThemeToolBarAppletsOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviThemeToolBarAppletsOptionsWidget;
+static const char * g_szClassName_KviThemeToolBarAppletsOptionsWidget = "KviThemeToolBarAppletsOptionsWidget";
+static const char * g_szName_KviIrcOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviIrcOptionsWidget;
+static const char * g_szClassName_KviIrcOptionsWidget = "KviIrcOptionsWidget";
+static const char * g_szName_KviIrcGeneralOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviIrcGeneralOptionsWidget;
+static const char * g_szClassName_KviIrcGeneralOptionsWidget = "KviIrcGeneralOptionsWidget";
+static const char * g_szName_KviIrcAdvancedOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviIrcAdvancedOptionsWidget;
+static const char * g_szClassName_KviIrcAdvancedOptionsWidget = "KviIrcAdvancedOptionsWidget";
+static const char * g_szName_KviChannelOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviChannelOptionsWidget;
+static const char * g_szClassName_KviChannelOptionsWidget = "KviChannelOptionsWidget";
+static const char * g_szName_KviChannelGeneralOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviChannelGeneralOptionsWidget;
+static const char * g_szClassName_KviChannelGeneralOptionsWidget = "KviChannelGeneralOptionsWidget";
+static const char * g_szName_KviChannelAdvancedOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviChannelAdvancedOptionsWidget;
+static const char * g_szClassName_KviChannelAdvancedOptionsWidget = "KviChannelAdvancedOptionsWidget";
+static const char * g_szName_KviIrcOutputOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviIrcOutputOptionsWidget;
+static const char * g_szClassName_KviIrcOutputOptionsWidget = "KviIrcOutputOptionsWidget";
+static const char * g_szName_KviIrcViewThemeOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviIrcViewThemeOptionsWidget;
+static const char * g_szClassName_KviIrcViewThemeOptionsWidget = "KviIrcViewThemeOptionsWidget";
+static const char * g_szName_KviIrcViewLookOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviIrcViewLookOptionsWidget;
+static const char * g_szClassName_KviIrcViewLookOptionsWidget = "KviIrcViewLookOptionsWidget";
+static const char * g_szName_KviIrcViewFeaturesOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviIrcViewFeaturesOptionsWidget;
+static const char * g_szClassName_KviIrcViewFeaturesOptionsWidget = "KviIrcViewFeaturesOptionsWidget";
+static const char * g_szName_KviLagOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviLagOptionsWidget;
+static const char * g_szClassName_KviLagOptionsWidget = "KviLagOptionsWidget";
+static const char * g_szName_KviLoggingOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviLoggingOptionsWidget;
+static const char * g_szClassName_KviLoggingOptionsWidget = "KviLoggingOptionsWidget";
+static const char * g_szName_KviMediaTypesOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviMediaTypesOptionsWidget;
+static const char * g_szClassName_KviMediaTypesOptionsWidget = "KviMediaTypesOptionsWidget";
+static const char * g_szName_KviMessageOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviMessageOptionsWidget;
+static const char * g_szClassName_KviMessageOptionsWidget = "KviMessageOptionsWidget";
+static const char * g_szName_KviPrivmsgOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviPrivmsgOptionsWidget;
+static const char * g_szClassName_KviPrivmsgOptionsWidget = "KviPrivmsgOptionsWidget";
+static const char * g_szName_KviTimestampOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviTimestampOptionsWidget;
+static const char * g_szClassName_KviTimestampOptionsWidget = "KviTimestampOptionsWidget";
+static const char * g_szName_KviMessageColorsOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviMessageColorsOptionsWidget;
+static const char * g_szClassName_KviMessageColorsOptionsWidget = "KviMessageColorsOptionsWidget";
+static const char * g_szName_KviStandardColorsOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviStandardColorsOptionsWidget;
+static const char * g_szClassName_KviStandardColorsOptionsWidget = "KviStandardColorsOptionsWidget";
+static const char * g_szName_KviNickServOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviNickServOptionsWidget;
+static const char * g_szClassName_KviNickServOptionsWidget = "KviNickServOptionsWidget";
+static const char * g_szName_KviNotifyOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviNotifyOptionsWidget;
+static const char * g_szClassName_KviNotifyOptionsWidget = "KviNotifyOptionsWidget";
+static const char * g_szName_KviNotifierOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviNotifierOptionsWidget;
+static const char * g_szClassName_KviNotifierOptionsWidget = "KviNotifierOptionsWidget";
+static const char * g_szName_KviProtectionOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviProtectionOptionsWidget;
+static const char * g_szClassName_KviProtectionOptionsWidget = "KviProtectionOptionsWidget";
+static const char * g_szName_KviProxyOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviProxyOptionsWidget;
+static const char * g_szClassName_KviProxyOptionsWidget = "KviProxyOptionsWidget";
+static const char * g_szName_KviQueryOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviQueryOptionsWidget;
+static const char * g_szClassName_KviQueryOptionsWidget = "KviQueryOptionsWidget";
+static const char * g_szName_KviServerOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviServerOptionsWidget;
+static const char * g_szClassName_KviServerOptionsWidget = "KviServerOptionsWidget";
+static const char * g_szName_KviSoundOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviSoundOptionsWidget;
+static const char * g_szClassName_KviSoundOptionsWidget = "KviSoundOptionsWidget";
+static const char * g_szName_KviSoundGeneralOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviSoundGeneralOptionsWidget;
+static const char * g_szClassName_KviSoundGeneralOptionsWidget = "KviSoundGeneralOptionsWidget";
+static const char * g_szName_KviSoundsOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviSoundsOptionsWidget;
+static const char * g_szClassName_KviSoundsOptionsWidget = "KviSoundsOptionsWidget";
+static const char * g_szName_KviTaskBarOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviTaskBarOptionsWidget;
+static const char * g_szClassName_KviTaskBarOptionsWidget = "KviTaskBarOptionsWidget";
+static const char * g_szName_KviTreeTaskBarOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviTreeTaskBarOptionsWidget;
+static const char * g_szClassName_KviTreeTaskBarOptionsWidget = "KviTreeTaskBarOptionsWidget";
+static const char * g_szName_KviTreeTaskBarForegroundOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviTreeTaskBarForegroundOptionsWidget;
+static const char * g_szClassName_KviTreeTaskBarForegroundOptionsWidget = "KviTreeTaskBarForegroundOptionsWidget";
+static const char * g_szName_KviTreeTaskBarBackgroundOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviTreeTaskBarBackgroundOptionsWidget;
+static const char * g_szClassName_KviTreeTaskBarBackgroundOptionsWidget = "KviTreeTaskBarBackgroundOptionsWidget";
+static const char * g_szName_KviTreeTaskBarFeaturesOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviTreeTaskBarFeaturesOptionsWidget;
+static const char * g_szClassName_KviTreeTaskBarFeaturesOptionsWidget = "KviTreeTaskBarFeaturesOptionsWidget";
+static const char * g_szName_KviClassicTaskBarOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviClassicTaskBarOptionsWidget;
+static const char * g_szClassName_KviClassicTaskBarOptionsWidget = "KviClassicTaskBarOptionsWidget";
+static const char * g_szName_KviTextEncodingOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviTextEncodingOptionsWidget;
+static const char * g_szClassName_KviTextEncodingOptionsWidget = "KviTextEncodingOptionsWidget";
+static const char * g_szName_KviTextIconsOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviTextIconsOptionsWidget;
+static const char * g_szClassName_KviTextIconsOptionsWidget = "KviTextIconsOptionsWidget";
+static const char * g_szName_KviToolsOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviToolsOptionsWidget;
+static const char * g_szClassName_KviToolsOptionsWidget = "KviToolsOptionsWidget";
+static const char * g_szName_KviTopicLabelLookOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviTopicLabelLookOptionsWidget;
+static const char * g_szClassName_KviTopicLabelLookOptionsWidget = "KviTopicLabelLookOptionsWidget";
+static const char * g_szName_KviTrayOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviTrayOptionsWidget;
+static const char * g_szClassName_KviTrayOptionsWidget = "KviTrayOptionsWidget";
+static const char * g_szName_KviUParserOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviUParserOptionsWidget;
+static const char * g_szClassName_KviUParserOptionsWidget = "KviUParserOptionsWidget";
+static const char * g_szName_KviUrlHandlersOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviUrlHandlersOptionsWidget;
+static const char * g_szClassName_KviUrlHandlersOptionsWidget = "KviUrlHandlersOptionsWidget";
+static const char * g_szName_KviUserListLookOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviUserListLookOptionsWidget;
+static const char * g_szClassName_KviUserListLookOptionsWidget = "KviUserListLookOptionsWidget";
+static const char * g_szName_KviUserListLookBackgroundOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviUserListLookBackgroundOptionsWidget;
+static const char * g_szClassName_KviUserListLookBackgroundOptionsWidget = "KviUserListLookBackgroundOptionsWidget";
+static const char * g_szName_KviUserListLookForegroundOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviUserListLookForegroundOptionsWidget;
+static const char * g_szClassName_KviUserListLookForegroundOptionsWidget = "KviUserListLookForegroundOptionsWidget";
+static const char * g_szName_KviUserListGridOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviUserListGridOptionsWidget;
+static const char * g_szClassName_KviUserListGridOptionsWidget = "KviUserListGridOptionsWidget";
+static const char * g_szName_KviUserListFeaturesOptionsWidget = KVI_OPTIONS_WIDGET_NAME_KviUserListFeaturesOptionsWidget;
+static const char * g_szClassName_KviUserListFeaturesOptionsWidget = "KviUserListFeaturesOptionsWidget";
+
+KviOptionsInstanceManager::KviOptionsInstanceManager()
+: QObject(0)
+{
+
+ //debug("Instantiating");
+ // Create the global widget dict : case sensitive , do not copy keys
+ m_pInstanceTree = new KviPointerList<KviOptionsWidgetInstanceEntry>;
+ m_pInstanceTree->setAutoDelete(true);
+
+
+ KviOptionsWidgetInstanceEntry * e0;
+ e0 = new KviOptionsWidgetInstanceEntry;
+ e0->createProc = &classKviConnectionOptionsWidget_createInstanceProc;
+ e0->pWidget = 0;
+ e0->szClassName = g_szClassName_KviConnectionOptionsWidget;
+ e0->iIcon = KVI_OPTIONS_WIDGET_ICON_KviConnectionOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviConnectionOptionsWidget
+ e0->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviConnectionOptionsWidget;
+ #else
+ e0->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviConnectionOptionsWidget
+ e0->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviConnectionOptionsWidget;
+ e0->szKeywords = __tr2qs_ctx_no_xgettext(e0->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviConnectionOptionsWidget
+ e0->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviConnectionOptionsWidget;
+ #else
+ e0->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviConnectionOptionsWidget
+ e0->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviConnectionOptionsWidget;
+ #else
+ e0->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviConnectionOptionsWidget
+ e0->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviConnectionOptionsWidget;
+ #else
+ e0->bIsNotContained = false;
+ #endif
+ e0->szNameNoLocale = g_szName_KviConnectionOptionsWidget;
+ e0->szName = __tr2qs_ctx_no_xgettext(g_szName_KviConnectionOptionsWidget,"options");
+ m_pInstanceTree->append(e0);
+
+ e0->pChildList = new KviPointerList<KviOptionsWidgetInstanceEntry>;
+ e0->pChildList->setAutoDelete(true);
+
+ KviOptionsWidgetInstanceEntry * e1;
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviConnectionAdvancedOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviConnectionAdvancedOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviConnectionAdvancedOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviConnectionAdvancedOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviConnectionAdvancedOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviConnectionAdvancedOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviConnectionAdvancedOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviConnectionAdvancedOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviConnectionAdvancedOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviConnectionAdvancedOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviConnectionAdvancedOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviConnectionAdvancedOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviConnectionAdvancedOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviConnectionAdvancedOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviConnectionAdvancedOptionsWidget,"options");
+ e0->pChildList->append(e1);
+
+ e1->pChildList = new KviPointerList<KviOptionsWidgetInstanceEntry>;
+ e1->pChildList->setAutoDelete(true);
+
+ KviOptionsWidgetInstanceEntry * e2;
+ e2 = new KviOptionsWidgetInstanceEntry;
+ e2->createProc = &classKviSSLOptionsWidget_createInstanceProc;
+ e2->pWidget = 0;
+ e2->szClassName = g_szClassName_KviSSLOptionsWidget;
+ e2->iIcon = KVI_OPTIONS_WIDGET_ICON_KviSSLOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviSSLOptionsWidget
+ e2->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviSSLOptionsWidget;
+ #else
+ e2->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviSSLOptionsWidget
+ e2->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviSSLOptionsWidget;
+ e2->szKeywords = __tr2qs_ctx_no_xgettext(e2->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviSSLOptionsWidget
+ e2->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviSSLOptionsWidget;
+ #else
+ e2->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviSSLOptionsWidget
+ e2->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviSSLOptionsWidget;
+ #else
+ e2->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviSSLOptionsWidget
+ e2->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviSSLOptionsWidget;
+ #else
+ e2->bIsNotContained = false;
+ #endif
+ e2->szNameNoLocale = g_szName_KviSSLOptionsWidget;
+ e2->szName = __tr2qs_ctx_no_xgettext(g_szName_KviSSLOptionsWidget,"options");
+ e1->pChildList->append(e2);
+ e2->pChildList = 0;
+
+ e2 = new KviOptionsWidgetInstanceEntry;
+ e2->createProc = &classKviTransportOptionsWidget_createInstanceProc;
+ e2->pWidget = 0;
+ e2->szClassName = g_szClassName_KviTransportOptionsWidget;
+ e2->iIcon = KVI_OPTIONS_WIDGET_ICON_KviTransportOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviTransportOptionsWidget
+ e2->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviTransportOptionsWidget;
+ #else
+ e2->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviTransportOptionsWidget
+ e2->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviTransportOptionsWidget;
+ e2->szKeywords = __tr2qs_ctx_no_xgettext(e2->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviTransportOptionsWidget
+ e2->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviTransportOptionsWidget;
+ #else
+ e2->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviTransportOptionsWidget
+ e2->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviTransportOptionsWidget;
+ #else
+ e2->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviTransportOptionsWidget
+ e2->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviTransportOptionsWidget;
+ #else
+ e2->bIsNotContained = false;
+ #endif
+ e2->szNameNoLocale = g_szName_KviTransportOptionsWidget;
+ e2->szName = __tr2qs_ctx_no_xgettext(g_szName_KviTransportOptionsWidget,"options");
+ e1->pChildList->append(e2);
+ e2->pChildList = 0;
+
+ e2 = new KviOptionsWidgetInstanceEntry;
+ e2->createProc = &classKviIdentOptionsWidget_createInstanceProc;
+ e2->pWidget = 0;
+ e2->szClassName = g_szClassName_KviIdentOptionsWidget;
+ e2->iIcon = KVI_OPTIONS_WIDGET_ICON_KviIdentOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviIdentOptionsWidget
+ e2->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviIdentOptionsWidget;
+ #else
+ e2->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviIdentOptionsWidget
+ e2->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviIdentOptionsWidget;
+ e2->szKeywords = __tr2qs_ctx_no_xgettext(e2->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviIdentOptionsWidget
+ e2->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviIdentOptionsWidget;
+ #else
+ e2->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviIdentOptionsWidget
+ e2->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviIdentOptionsWidget;
+ #else
+ e2->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIdentOptionsWidget
+ e2->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIdentOptionsWidget;
+ #else
+ e2->bIsNotContained = false;
+ #endif
+ e2->szNameNoLocale = g_szName_KviIdentOptionsWidget;
+ e2->szName = __tr2qs_ctx_no_xgettext(g_szName_KviIdentOptionsWidget,"options");
+ e1->pChildList->append(e2);
+ e2->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviProxyOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviProxyOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviProxyOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviProxyOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviProxyOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviProxyOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviProxyOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviProxyOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviProxyOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviProxyOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviProxyOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviProxyOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviProxyOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviProxyOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviProxyOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e0 = new KviOptionsWidgetInstanceEntry;
+ e0->createProc = &classKviDccOptionsWidget_createInstanceProc;
+ e0->pWidget = 0;
+ e0->szClassName = g_szClassName_KviDccOptionsWidget;
+ e0->iIcon = KVI_OPTIONS_WIDGET_ICON_KviDccOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviDccOptionsWidget
+ e0->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviDccOptionsWidget;
+ #else
+ e0->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviDccOptionsWidget
+ e0->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviDccOptionsWidget;
+ e0->szKeywords = __tr2qs_ctx_no_xgettext(e0->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviDccOptionsWidget
+ e0->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviDccOptionsWidget;
+ #else
+ e0->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviDccOptionsWidget
+ e0->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviDccOptionsWidget;
+ #else
+ e0->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviDccOptionsWidget
+ e0->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviDccOptionsWidget;
+ #else
+ e0->bIsNotContained = false;
+ #endif
+ e0->szNameNoLocale = g_szName_KviDccOptionsWidget;
+ e0->szName = __tr2qs_ctx_no_xgettext(g_szName_KviDccOptionsWidget,"options");
+ m_pInstanceTree->append(e0);
+
+ e0->pChildList = new KviPointerList<KviOptionsWidgetInstanceEntry>;
+ e0->pChildList->setAutoDelete(true);
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviDccGeneralOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviDccGeneralOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviDccGeneralOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviDccGeneralOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviDccGeneralOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviDccGeneralOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviDccGeneralOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviDccGeneralOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviDccGeneralOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviDccGeneralOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviDccGeneralOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviDccGeneralOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviDccGeneralOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviDccGeneralOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviDccGeneralOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviDccAdvancedOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviDccAdvancedOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviDccAdvancedOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviDccAdvancedOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviDccAdvancedOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviDccAdvancedOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviDccAdvancedOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviDccAdvancedOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviDccAdvancedOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviDccAdvancedOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviDccAdvancedOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviDccAdvancedOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviDccAdvancedOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviDccAdvancedOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviDccAdvancedOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviDccSendOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviDccSendOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviDccSendOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviDccSendOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviDccSendOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviDccSendOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviDccSendOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviDccSendOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviDccSendOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviDccSendOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviDccSendOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviDccSendOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviDccSendOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviDccSendOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviDccSendOptionsWidget,"options");
+ e0->pChildList->append(e1);
+
+ e1->pChildList = new KviPointerList<KviOptionsWidgetInstanceEntry>;
+ e1->pChildList->setAutoDelete(true);
+
+ e2 = new KviOptionsWidgetInstanceEntry;
+ e2->createProc = &classKviDccSendGeneralOptionsWidget_createInstanceProc;
+ e2->pWidget = 0;
+ e2->szClassName = g_szClassName_KviDccSendGeneralOptionsWidget;
+ e2->iIcon = KVI_OPTIONS_WIDGET_ICON_KviDccSendGeneralOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviDccSendGeneralOptionsWidget
+ e2->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviDccSendGeneralOptionsWidget;
+ #else
+ e2->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviDccSendGeneralOptionsWidget
+ e2->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviDccSendGeneralOptionsWidget;
+ e2->szKeywords = __tr2qs_ctx_no_xgettext(e2->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviDccSendGeneralOptionsWidget
+ e2->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviDccSendGeneralOptionsWidget;
+ #else
+ e2->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviDccSendGeneralOptionsWidget
+ e2->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviDccSendGeneralOptionsWidget;
+ #else
+ e2->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviDccSendGeneralOptionsWidget
+ e2->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviDccSendGeneralOptionsWidget;
+ #else
+ e2->bIsNotContained = false;
+ #endif
+ e2->szNameNoLocale = g_szName_KviDccSendGeneralOptionsWidget;
+ e2->szName = __tr2qs_ctx_no_xgettext(g_szName_KviDccSendGeneralOptionsWidget,"options");
+ e1->pChildList->append(e2);
+ e2->pChildList = 0;
+
+ e2 = new KviOptionsWidgetInstanceEntry;
+ e2->createProc = &classKviDccSendAdvancedOptionsWidget_createInstanceProc;
+ e2->pWidget = 0;
+ e2->szClassName = g_szClassName_KviDccSendAdvancedOptionsWidget;
+ e2->iIcon = KVI_OPTIONS_WIDGET_ICON_KviDccSendAdvancedOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviDccSendAdvancedOptionsWidget
+ e2->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviDccSendAdvancedOptionsWidget;
+ #else
+ e2->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviDccSendAdvancedOptionsWidget
+ e2->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviDccSendAdvancedOptionsWidget;
+ e2->szKeywords = __tr2qs_ctx_no_xgettext(e2->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviDccSendAdvancedOptionsWidget
+ e2->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviDccSendAdvancedOptionsWidget;
+ #else
+ e2->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviDccSendAdvancedOptionsWidget
+ e2->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviDccSendAdvancedOptionsWidget;
+ #else
+ e2->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviDccSendAdvancedOptionsWidget
+ e2->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviDccSendAdvancedOptionsWidget;
+ #else
+ e2->bIsNotContained = false;
+ #endif
+ e2->szNameNoLocale = g_szName_KviDccSendAdvancedOptionsWidget;
+ e2->szName = __tr2qs_ctx_no_xgettext(g_szName_KviDccSendAdvancedOptionsWidget,"options");
+ e1->pChildList->append(e2);
+ e2->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviDccChatOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviDccChatOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviDccChatOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviDccChatOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviDccChatOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviDccChatOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviDccChatOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviDccChatOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviDccChatOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviDccChatOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviDccChatOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviDccChatOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviDccChatOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviDccChatOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviDccChatOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviDccVoiceOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviDccVoiceOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviDccVoiceOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviDccVoiceOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviDccVoiceOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviDccVoiceOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviDccVoiceOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviDccVoiceOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviDccVoiceOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviDccVoiceOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviDccVoiceOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviDccVoiceOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviDccVoiceOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviDccVoiceOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviDccVoiceOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e0 = new KviOptionsWidgetInstanceEntry;
+ e0->createProc = &classKviGeneralOptOptionsWidget_createInstanceProc;
+ e0->pWidget = 0;
+ e0->szClassName = g_szClassName_KviGeneralOptOptionsWidget;
+ e0->iIcon = KVI_OPTIONS_WIDGET_ICON_KviGeneralOptOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviGeneralOptOptionsWidget
+ e0->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviGeneralOptOptionsWidget;
+ #else
+ e0->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviGeneralOptOptionsWidget
+ e0->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviGeneralOptOptionsWidget;
+ e0->szKeywords = __tr2qs_ctx_no_xgettext(e0->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviGeneralOptOptionsWidget
+ e0->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviGeneralOptOptionsWidget;
+ #else
+ e0->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviGeneralOptOptionsWidget
+ e0->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviGeneralOptOptionsWidget;
+ #else
+ e0->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviGeneralOptOptionsWidget
+ e0->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviGeneralOptOptionsWidget;
+ #else
+ e0->bIsNotContained = false;
+ #endif
+ e0->szNameNoLocale = g_szName_KviGeneralOptOptionsWidget;
+ e0->szName = __tr2qs_ctx_no_xgettext(g_szName_KviGeneralOptOptionsWidget,"options");
+ m_pInstanceTree->append(e0);
+
+ e0->pChildList = new KviPointerList<KviOptionsWidgetInstanceEntry>;
+ e0->pChildList->setAutoDelete(true);
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviMediaTypesOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviMediaTypesOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviMediaTypesOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviMediaTypesOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviMediaTypesOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviMediaTypesOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviMediaTypesOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviMediaTypesOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviMediaTypesOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviMediaTypesOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviMediaTypesOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviMediaTypesOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviMediaTypesOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviMediaTypesOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviMediaTypesOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviSoundOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviSoundOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviSoundOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviSoundOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviSoundOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviSoundOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviSoundOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviSoundOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviSoundOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviSoundOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviSoundOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviSoundOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviSoundOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviSoundOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviSoundOptionsWidget,"options");
+ e0->pChildList->append(e1);
+
+ e1->pChildList = new KviPointerList<KviOptionsWidgetInstanceEntry>;
+ e1->pChildList->setAutoDelete(true);
+
+ e2 = new KviOptionsWidgetInstanceEntry;
+ e2->createProc = &classKviSoundGeneralOptionsWidget_createInstanceProc;
+ e2->pWidget = 0;
+ e2->szClassName = g_szClassName_KviSoundGeneralOptionsWidget;
+ e2->iIcon = KVI_OPTIONS_WIDGET_ICON_KviSoundGeneralOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviSoundGeneralOptionsWidget
+ e2->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviSoundGeneralOptionsWidget;
+ #else
+ e2->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviSoundGeneralOptionsWidget
+ e2->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviSoundGeneralOptionsWidget;
+ e2->szKeywords = __tr2qs_ctx_no_xgettext(e2->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviSoundGeneralOptionsWidget
+ e2->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviSoundGeneralOptionsWidget;
+ #else
+ e2->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviSoundGeneralOptionsWidget
+ e2->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviSoundGeneralOptionsWidget;
+ #else
+ e2->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviSoundGeneralOptionsWidget
+ e2->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviSoundGeneralOptionsWidget;
+ #else
+ e2->bIsNotContained = false;
+ #endif
+ e2->szNameNoLocale = g_szName_KviSoundGeneralOptionsWidget;
+ e2->szName = __tr2qs_ctx_no_xgettext(g_szName_KviSoundGeneralOptionsWidget,"options");
+ e1->pChildList->append(e2);
+ e2->pChildList = 0;
+
+ e2 = new KviOptionsWidgetInstanceEntry;
+ e2->createProc = &classKviSoundsOptionsWidget_createInstanceProc;
+ e2->pWidget = 0;
+ e2->szClassName = g_szClassName_KviSoundsOptionsWidget;
+ e2->iIcon = KVI_OPTIONS_WIDGET_ICON_KviSoundsOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviSoundsOptionsWidget
+ e2->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviSoundsOptionsWidget;
+ #else
+ e2->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviSoundsOptionsWidget
+ e2->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviSoundsOptionsWidget;
+ e2->szKeywords = __tr2qs_ctx_no_xgettext(e2->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviSoundsOptionsWidget
+ e2->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviSoundsOptionsWidget;
+ #else
+ e2->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviSoundsOptionsWidget
+ e2->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviSoundsOptionsWidget;
+ #else
+ e2->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviSoundsOptionsWidget
+ e2->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviSoundsOptionsWidget;
+ #else
+ e2->bIsNotContained = false;
+ #endif
+ e2->szNameNoLocale = g_szName_KviSoundsOptionsWidget;
+ e2->szName = __tr2qs_ctx_no_xgettext(g_szName_KviSoundsOptionsWidget,"options");
+ e1->pChildList->append(e2);
+ e2->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviTextEncodingOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviTextEncodingOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviTextEncodingOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviTextEncodingOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviTextEncodingOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviTextEncodingOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviTextEncodingOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviTextEncodingOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviTextEncodingOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviTextEncodingOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviTextEncodingOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviTextEncodingOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviTextEncodingOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviTextEncodingOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviTextEncodingOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviUParserOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviUParserOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviUParserOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviUParserOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviUParserOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviUParserOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviUParserOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviUParserOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviUParserOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviUParserOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviUParserOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviUParserOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviUParserOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviUParserOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviUParserOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviUrlHandlersOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviUrlHandlersOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviUrlHandlersOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviUrlHandlersOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviUrlHandlersOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviUrlHandlersOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviUrlHandlersOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviUrlHandlersOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviUrlHandlersOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviUrlHandlersOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviUrlHandlersOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviUrlHandlersOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviUrlHandlersOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviUrlHandlersOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviUrlHandlersOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e0 = new KviOptionsWidgetInstanceEntry;
+ e0->createProc = &classKviIdentityOptionsWidget_createInstanceProc;
+ e0->pWidget = 0;
+ e0->szClassName = g_szClassName_KviIdentityOptionsWidget;
+ e0->iIcon = KVI_OPTIONS_WIDGET_ICON_KviIdentityOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviIdentityOptionsWidget
+ e0->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviIdentityOptionsWidget;
+ #else
+ e0->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviIdentityOptionsWidget
+ e0->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviIdentityOptionsWidget;
+ e0->szKeywords = __tr2qs_ctx_no_xgettext(e0->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviIdentityOptionsWidget
+ e0->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviIdentityOptionsWidget;
+ #else
+ e0->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviIdentityOptionsWidget
+ e0->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviIdentityOptionsWidget;
+ #else
+ e0->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIdentityOptionsWidget
+ e0->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIdentityOptionsWidget;
+ #else
+ e0->bIsNotContained = false;
+ #endif
+ e0->szNameNoLocale = g_szName_KviIdentityOptionsWidget;
+ e0->szName = __tr2qs_ctx_no_xgettext(g_szName_KviIdentityOptionsWidget,"options");
+ m_pInstanceTree->append(e0);
+
+ e0->pChildList = new KviPointerList<KviOptionsWidgetInstanceEntry>;
+ e0->pChildList->setAutoDelete(true);
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviIdentityGeneralOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviIdentityGeneralOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviIdentityGeneralOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviIdentityGeneralOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviIdentityGeneralOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviIdentityGeneralOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviIdentityGeneralOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviIdentityGeneralOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviIdentityGeneralOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviIdentityGeneralOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviIdentityGeneralOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIdentityGeneralOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIdentityGeneralOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviIdentityGeneralOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviIdentityGeneralOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviIdentityAvatarOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviIdentityAvatarOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviIdentityAvatarOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviIdentityAvatarOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviIdentityAvatarOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviIdentityAvatarOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviIdentityAvatarOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviIdentityAvatarOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviIdentityAvatarOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviIdentityAvatarOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviIdentityAvatarOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIdentityAvatarOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIdentityAvatarOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviIdentityAvatarOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviIdentityAvatarOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviIdentityAdvancedOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviIdentityAdvancedOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviIdentityAdvancedOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviIdentityAdvancedOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviIdentityAdvancedOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviIdentityAdvancedOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviIdentityAdvancedOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviIdentityAdvancedOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviIdentityAdvancedOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviIdentityAdvancedOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviIdentityAdvancedOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIdentityAdvancedOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIdentityAdvancedOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviIdentityAdvancedOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviIdentityAdvancedOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e0 = new KviOptionsWidgetInstanceEntry;
+ e0->createProc = &classKviInputLookOptionsWidget_createInstanceProc;
+ e0->pWidget = 0;
+ e0->szClassName = g_szClassName_KviInputLookOptionsWidget;
+ e0->iIcon = KVI_OPTIONS_WIDGET_ICON_KviInputLookOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviInputLookOptionsWidget
+ e0->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviInputLookOptionsWidget;
+ #else
+ e0->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviInputLookOptionsWidget
+ e0->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviInputLookOptionsWidget;
+ e0->szKeywords = __tr2qs_ctx_no_xgettext(e0->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviInputLookOptionsWidget
+ e0->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviInputLookOptionsWidget;
+ #else
+ e0->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviInputLookOptionsWidget
+ e0->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviInputLookOptionsWidget;
+ #else
+ e0->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviInputLookOptionsWidget
+ e0->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviInputLookOptionsWidget;
+ #else
+ e0->bIsNotContained = false;
+ #endif
+ e0->szNameNoLocale = g_szName_KviInputLookOptionsWidget;
+ e0->szName = __tr2qs_ctx_no_xgettext(g_szName_KviInputLookOptionsWidget,"options");
+ m_pInstanceTree->append(e0);
+ e0->pChildList = 0;
+
+ e0 = new KviOptionsWidgetInstanceEntry;
+ e0->createProc = &classKviInterfaceFeaturesOptionsWidget_createInstanceProc;
+ e0->pWidget = 0;
+ e0->szClassName = g_szClassName_KviInterfaceFeaturesOptionsWidget;
+ e0->iIcon = KVI_OPTIONS_WIDGET_ICON_KviInterfaceFeaturesOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviInterfaceFeaturesOptionsWidget
+ e0->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviInterfaceFeaturesOptionsWidget;
+ #else
+ e0->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviInterfaceFeaturesOptionsWidget
+ e0->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviInterfaceFeaturesOptionsWidget;
+ e0->szKeywords = __tr2qs_ctx_no_xgettext(e0->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviInterfaceFeaturesOptionsWidget
+ e0->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviInterfaceFeaturesOptionsWidget;
+ #else
+ e0->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviInterfaceFeaturesOptionsWidget
+ e0->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviInterfaceFeaturesOptionsWidget;
+ #else
+ e0->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviInterfaceFeaturesOptionsWidget
+ e0->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviInterfaceFeaturesOptionsWidget;
+ #else
+ e0->bIsNotContained = false;
+ #endif
+ e0->szNameNoLocale = g_szName_KviInterfaceFeaturesOptionsWidget;
+ e0->szName = __tr2qs_ctx_no_xgettext(g_szName_KviInterfaceFeaturesOptionsWidget,"options");
+ m_pInstanceTree->append(e0);
+
+ e0->pChildList = new KviPointerList<KviOptionsWidgetInstanceEntry>;
+ e0->pChildList->setAutoDelete(true);
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviInputFeaturesOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviInputFeaturesOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviInputFeaturesOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviInputFeaturesOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviInputFeaturesOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviInputFeaturesOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviInputFeaturesOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviInputFeaturesOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviInputFeaturesOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviInputFeaturesOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviInputFeaturesOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviInputFeaturesOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviInputFeaturesOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviInputFeaturesOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviInputFeaturesOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviNotifierOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviNotifierOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviNotifierOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviNotifierOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviNotifierOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviNotifierOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviNotifierOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviNotifierOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviNotifierOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviNotifierOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviNotifierOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviNotifierOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviNotifierOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviNotifierOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviNotifierOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviTrayOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviTrayOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviTrayOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviTrayOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviTrayOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviTrayOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviTrayOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviTrayOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviTrayOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviTrayOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviTrayOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviTrayOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviTrayOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviTrayOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviTrayOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e0 = new KviOptionsWidgetInstanceEntry;
+ e0->createProc = &classKviThemeGeneralOptionsWidget_createInstanceProc;
+ e0->pWidget = 0;
+ e0->szClassName = g_szClassName_KviThemeGeneralOptionsWidget;
+ e0->iIcon = KVI_OPTIONS_WIDGET_ICON_KviThemeGeneralOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviThemeGeneralOptionsWidget
+ e0->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviThemeGeneralOptionsWidget;
+ #else
+ e0->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviThemeGeneralOptionsWidget
+ e0->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviThemeGeneralOptionsWidget;
+ e0->szKeywords = __tr2qs_ctx_no_xgettext(e0->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviThemeGeneralOptionsWidget
+ e0->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviThemeGeneralOptionsWidget;
+ #else
+ e0->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviThemeGeneralOptionsWidget
+ e0->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviThemeGeneralOptionsWidget;
+ #else
+ e0->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviThemeGeneralOptionsWidget
+ e0->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviThemeGeneralOptionsWidget;
+ #else
+ e0->bIsNotContained = false;
+ #endif
+ e0->szNameNoLocale = g_szName_KviThemeGeneralOptionsWidget;
+ e0->szName = __tr2qs_ctx_no_xgettext(g_szName_KviThemeGeneralOptionsWidget,"options");
+ m_pInstanceTree->append(e0);
+ e0->pChildList = 0;
+
+ e0 = new KviOptionsWidgetInstanceEntry;
+ e0->createProc = &classKviThemeTransparencyOptionsWidget_createInstanceProc;
+ e0->pWidget = 0;
+ e0->szClassName = g_szClassName_KviThemeTransparencyOptionsWidget;
+ e0->iIcon = KVI_OPTIONS_WIDGET_ICON_KviThemeTransparencyOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviThemeTransparencyOptionsWidget
+ e0->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviThemeTransparencyOptionsWidget;
+ #else
+ e0->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviThemeTransparencyOptionsWidget
+ e0->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviThemeTransparencyOptionsWidget;
+ e0->szKeywords = __tr2qs_ctx_no_xgettext(e0->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviThemeTransparencyOptionsWidget
+ e0->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviThemeTransparencyOptionsWidget;
+ #else
+ e0->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviThemeTransparencyOptionsWidget
+ e0->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviThemeTransparencyOptionsWidget;
+ #else
+ e0->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviThemeTransparencyOptionsWidget
+ e0->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviThemeTransparencyOptionsWidget;
+ #else
+ e0->bIsNotContained = false;
+ #endif
+ e0->szNameNoLocale = g_szName_KviThemeTransparencyOptionsWidget;
+ e0->szName = __tr2qs_ctx_no_xgettext(g_szName_KviThemeTransparencyOptionsWidget,"options");
+ m_pInstanceTree->append(e0);
+ e0->pChildList = 0;
+
+ e0 = new KviOptionsWidgetInstanceEntry;
+ e0->createProc = &classKviThemeMdiCaptionsOptionsWidget_createInstanceProc;
+ e0->pWidget = 0;
+ e0->szClassName = g_szClassName_KviThemeMdiCaptionsOptionsWidget;
+ e0->iIcon = KVI_OPTIONS_WIDGET_ICON_KviThemeMdiCaptionsOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviThemeMdiCaptionsOptionsWidget
+ e0->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviThemeMdiCaptionsOptionsWidget;
+ #else
+ e0->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviThemeMdiCaptionsOptionsWidget
+ e0->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviThemeMdiCaptionsOptionsWidget;
+ e0->szKeywords = __tr2qs_ctx_no_xgettext(e0->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviThemeMdiCaptionsOptionsWidget
+ e0->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviThemeMdiCaptionsOptionsWidget;
+ #else
+ e0->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviThemeMdiCaptionsOptionsWidget
+ e0->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviThemeMdiCaptionsOptionsWidget;
+ #else
+ e0->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviThemeMdiCaptionsOptionsWidget
+ e0->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviThemeMdiCaptionsOptionsWidget;
+ #else
+ e0->bIsNotContained = false;
+ #endif
+ e0->szNameNoLocale = g_szName_KviThemeMdiCaptionsOptionsWidget;
+ e0->szName = __tr2qs_ctx_no_xgettext(g_szName_KviThemeMdiCaptionsOptionsWidget,"options");
+ m_pInstanceTree->append(e0);
+ e0->pChildList = 0;
+
+ e0 = new KviOptionsWidgetInstanceEntry;
+ e0->createProc = &classKviThemeMdiAreaOptionsWidget_createInstanceProc;
+ e0->pWidget = 0;
+ e0->szClassName = g_szClassName_KviThemeMdiAreaOptionsWidget;
+ e0->iIcon = KVI_OPTIONS_WIDGET_ICON_KviThemeMdiAreaOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviThemeMdiAreaOptionsWidget
+ e0->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviThemeMdiAreaOptionsWidget;
+ #else
+ e0->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviThemeMdiAreaOptionsWidget
+ e0->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviThemeMdiAreaOptionsWidget;
+ e0->szKeywords = __tr2qs_ctx_no_xgettext(e0->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviThemeMdiAreaOptionsWidget
+ e0->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviThemeMdiAreaOptionsWidget;
+ #else
+ e0->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviThemeMdiAreaOptionsWidget
+ e0->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviThemeMdiAreaOptionsWidget;
+ #else
+ e0->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviThemeMdiAreaOptionsWidget
+ e0->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviThemeMdiAreaOptionsWidget;
+ #else
+ e0->bIsNotContained = false;
+ #endif
+ e0->szNameNoLocale = g_szName_KviThemeMdiAreaOptionsWidget;
+ e0->szName = __tr2qs_ctx_no_xgettext(g_szName_KviThemeMdiAreaOptionsWidget,"options");
+ m_pInstanceTree->append(e0);
+ e0->pChildList = 0;
+
+ e0 = new KviOptionsWidgetInstanceEntry;
+ e0->createProc = &classKviThemeToolBarAppletsOptionsWidget_createInstanceProc;
+ e0->pWidget = 0;
+ e0->szClassName = g_szClassName_KviThemeToolBarAppletsOptionsWidget;
+ e0->iIcon = KVI_OPTIONS_WIDGET_ICON_KviThemeToolBarAppletsOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviThemeToolBarAppletsOptionsWidget
+ e0->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviThemeToolBarAppletsOptionsWidget;
+ #else
+ e0->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviThemeToolBarAppletsOptionsWidget
+ e0->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviThemeToolBarAppletsOptionsWidget;
+ e0->szKeywords = __tr2qs_ctx_no_xgettext(e0->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviThemeToolBarAppletsOptionsWidget
+ e0->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviThemeToolBarAppletsOptionsWidget;
+ #else
+ e0->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviThemeToolBarAppletsOptionsWidget
+ e0->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviThemeToolBarAppletsOptionsWidget;
+ #else
+ e0->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviThemeToolBarAppletsOptionsWidget
+ e0->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviThemeToolBarAppletsOptionsWidget;
+ #else
+ e0->bIsNotContained = false;
+ #endif
+ e0->szNameNoLocale = g_szName_KviThemeToolBarAppletsOptionsWidget;
+ e0->szName = __tr2qs_ctx_no_xgettext(g_szName_KviThemeToolBarAppletsOptionsWidget,"options");
+ m_pInstanceTree->append(e0);
+ e0->pChildList = 0;
+
+ e0 = new KviOptionsWidgetInstanceEntry;
+ e0->createProc = &classKviIrcOptionsWidget_createInstanceProc;
+ e0->pWidget = 0;
+ e0->szClassName = g_szClassName_KviIrcOptionsWidget;
+ e0->iIcon = KVI_OPTIONS_WIDGET_ICON_KviIrcOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviIrcOptionsWidget
+ e0->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviIrcOptionsWidget;
+ #else
+ e0->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviIrcOptionsWidget
+ e0->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviIrcOptionsWidget;
+ e0->szKeywords = __tr2qs_ctx_no_xgettext(e0->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviIrcOptionsWidget
+ e0->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviIrcOptionsWidget;
+ #else
+ e0->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviIrcOptionsWidget
+ e0->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviIrcOptionsWidget;
+ #else
+ e0->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIrcOptionsWidget
+ e0->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIrcOptionsWidget;
+ #else
+ e0->bIsNotContained = false;
+ #endif
+ e0->szNameNoLocale = g_szName_KviIrcOptionsWidget;
+ e0->szName = __tr2qs_ctx_no_xgettext(g_szName_KviIrcOptionsWidget,"options");
+ m_pInstanceTree->append(e0);
+
+ e0->pChildList = new KviPointerList<KviOptionsWidgetInstanceEntry>;
+ e0->pChildList->setAutoDelete(true);
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviIrcGeneralOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviIrcGeneralOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviIrcGeneralOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviIrcGeneralOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviIrcGeneralOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviIrcGeneralOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviIrcGeneralOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviIrcGeneralOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviIrcGeneralOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviIrcGeneralOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviIrcGeneralOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIrcGeneralOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIrcGeneralOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviIrcGeneralOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviIrcGeneralOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviIrcAdvancedOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviIrcAdvancedOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviIrcAdvancedOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviIrcAdvancedOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviIrcAdvancedOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviIrcAdvancedOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviIrcAdvancedOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviIrcAdvancedOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviIrcAdvancedOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviIrcAdvancedOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviIrcAdvancedOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIrcAdvancedOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIrcAdvancedOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviIrcAdvancedOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviIrcAdvancedOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviChannelOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviChannelOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviChannelOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviChannelOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviChannelOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviChannelOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviChannelOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviChannelOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviChannelOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviChannelOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviChannelOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviChannelOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviChannelOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviChannelOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviChannelOptionsWidget,"options");
+ e0->pChildList->append(e1);
+
+ e1->pChildList = new KviPointerList<KviOptionsWidgetInstanceEntry>;
+ e1->pChildList->setAutoDelete(true);
+
+ e2 = new KviOptionsWidgetInstanceEntry;
+ e2->createProc = &classKviChannelGeneralOptionsWidget_createInstanceProc;
+ e2->pWidget = 0;
+ e2->szClassName = g_szClassName_KviChannelGeneralOptionsWidget;
+ e2->iIcon = KVI_OPTIONS_WIDGET_ICON_KviChannelGeneralOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviChannelGeneralOptionsWidget
+ e2->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviChannelGeneralOptionsWidget;
+ #else
+ e2->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviChannelGeneralOptionsWidget
+ e2->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviChannelGeneralOptionsWidget;
+ e2->szKeywords = __tr2qs_ctx_no_xgettext(e2->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviChannelGeneralOptionsWidget
+ e2->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviChannelGeneralOptionsWidget;
+ #else
+ e2->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviChannelGeneralOptionsWidget
+ e2->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviChannelGeneralOptionsWidget;
+ #else
+ e2->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviChannelGeneralOptionsWidget
+ e2->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviChannelGeneralOptionsWidget;
+ #else
+ e2->bIsNotContained = false;
+ #endif
+ e2->szNameNoLocale = g_szName_KviChannelGeneralOptionsWidget;
+ e2->szName = __tr2qs_ctx_no_xgettext(g_szName_KviChannelGeneralOptionsWidget,"options");
+ e1->pChildList->append(e2);
+ e2->pChildList = 0;
+
+ e2 = new KviOptionsWidgetInstanceEntry;
+ e2->createProc = &classKviChannelAdvancedOptionsWidget_createInstanceProc;
+ e2->pWidget = 0;
+ e2->szClassName = g_szClassName_KviChannelAdvancedOptionsWidget;
+ e2->iIcon = KVI_OPTIONS_WIDGET_ICON_KviChannelAdvancedOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviChannelAdvancedOptionsWidget
+ e2->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviChannelAdvancedOptionsWidget;
+ #else
+ e2->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviChannelAdvancedOptionsWidget
+ e2->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviChannelAdvancedOptionsWidget;
+ e2->szKeywords = __tr2qs_ctx_no_xgettext(e2->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviChannelAdvancedOptionsWidget
+ e2->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviChannelAdvancedOptionsWidget;
+ #else
+ e2->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviChannelAdvancedOptionsWidget
+ e2->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviChannelAdvancedOptionsWidget;
+ #else
+ e2->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviChannelAdvancedOptionsWidget
+ e2->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviChannelAdvancedOptionsWidget;
+ #else
+ e2->bIsNotContained = false;
+ #endif
+ e2->szNameNoLocale = g_szName_KviChannelAdvancedOptionsWidget;
+ e2->szName = __tr2qs_ctx_no_xgettext(g_szName_KviChannelAdvancedOptionsWidget,"options");
+ e1->pChildList->append(e2);
+ e2->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviIrcOutputOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviIrcOutputOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviIrcOutputOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviIrcOutputOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviIrcOutputOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviIrcOutputOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviIrcOutputOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviIrcOutputOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviIrcOutputOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviIrcOutputOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviIrcOutputOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIrcOutputOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIrcOutputOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviIrcOutputOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviIrcOutputOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviProtectionOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviProtectionOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviProtectionOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviProtectionOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviProtectionOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviProtectionOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviProtectionOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviProtectionOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviProtectionOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviProtectionOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviProtectionOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviProtectionOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviProtectionOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviProtectionOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviProtectionOptionsWidget,"options");
+ e0->pChildList->append(e1);
+
+ e1->pChildList = new KviPointerList<KviOptionsWidgetInstanceEntry>;
+ e1->pChildList->setAutoDelete(true);
+
+ e2 = new KviOptionsWidgetInstanceEntry;
+ e2->createProc = &classKviAntispamOptionsWidget_createInstanceProc;
+ e2->pWidget = 0;
+ e2->szClassName = g_szClassName_KviAntispamOptionsWidget;
+ e2->iIcon = KVI_OPTIONS_WIDGET_ICON_KviAntispamOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviAntispamOptionsWidget
+ e2->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviAntispamOptionsWidget;
+ #else
+ e2->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviAntispamOptionsWidget
+ e2->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviAntispamOptionsWidget;
+ e2->szKeywords = __tr2qs_ctx_no_xgettext(e2->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviAntispamOptionsWidget
+ e2->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviAntispamOptionsWidget;
+ #else
+ e2->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviAntispamOptionsWidget
+ e2->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviAntispamOptionsWidget;
+ #else
+ e2->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviAntispamOptionsWidget
+ e2->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviAntispamOptionsWidget;
+ #else
+ e2->bIsNotContained = false;
+ #endif
+ e2->szNameNoLocale = g_szName_KviAntispamOptionsWidget;
+ e2->szName = __tr2qs_ctx_no_xgettext(g_szName_KviAntispamOptionsWidget,"options");
+ e1->pChildList->append(e2);
+ e2->pChildList = 0;
+
+ e2 = new KviOptionsWidgetInstanceEntry;
+ e2->createProc = &classKviCtcpFloodProtectionOptionsWidget_createInstanceProc;
+ e2->pWidget = 0;
+ e2->szClassName = g_szClassName_KviCtcpFloodProtectionOptionsWidget;
+ e2->iIcon = KVI_OPTIONS_WIDGET_ICON_KviCtcpFloodProtectionOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviCtcpFloodProtectionOptionsWidget
+ e2->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviCtcpFloodProtectionOptionsWidget;
+ #else
+ e2->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviCtcpFloodProtectionOptionsWidget
+ e2->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviCtcpFloodProtectionOptionsWidget;
+ e2->szKeywords = __tr2qs_ctx_no_xgettext(e2->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviCtcpFloodProtectionOptionsWidget
+ e2->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviCtcpFloodProtectionOptionsWidget;
+ #else
+ e2->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviCtcpFloodProtectionOptionsWidget
+ e2->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviCtcpFloodProtectionOptionsWidget;
+ #else
+ e2->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviCtcpFloodProtectionOptionsWidget
+ e2->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviCtcpFloodProtectionOptionsWidget;
+ #else
+ e2->bIsNotContained = false;
+ #endif
+ e2->szNameNoLocale = g_szName_KviCtcpFloodProtectionOptionsWidget;
+ e2->szName = __tr2qs_ctx_no_xgettext(g_szName_KviCtcpFloodProtectionOptionsWidget,"options");
+ e1->pChildList->append(e2);
+ e2->pChildList = 0;
+
+ e2 = new KviOptionsWidgetInstanceEntry;
+ e2->createProc = &classKviIgnoreOptionsWidget_createInstanceProc;
+ e2->pWidget = 0;
+ e2->szClassName = g_szClassName_KviIgnoreOptionsWidget;
+ e2->iIcon = KVI_OPTIONS_WIDGET_ICON_KviIgnoreOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviIgnoreOptionsWidget
+ e2->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviIgnoreOptionsWidget;
+ #else
+ e2->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviIgnoreOptionsWidget
+ e2->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviIgnoreOptionsWidget;
+ e2->szKeywords = __tr2qs_ctx_no_xgettext(e2->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviIgnoreOptionsWidget
+ e2->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviIgnoreOptionsWidget;
+ #else
+ e2->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviIgnoreOptionsWidget
+ e2->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviIgnoreOptionsWidget;
+ #else
+ e2->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIgnoreOptionsWidget
+ e2->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIgnoreOptionsWidget;
+ #else
+ e2->bIsNotContained = false;
+ #endif
+ e2->szNameNoLocale = g_szName_KviIgnoreOptionsWidget;
+ e2->szName = __tr2qs_ctx_no_xgettext(g_szName_KviIgnoreOptionsWidget,"options");
+ e1->pChildList->append(e2);
+ e2->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviQueryOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviQueryOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviQueryOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviQueryOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviQueryOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviQueryOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviQueryOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviQueryOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviQueryOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviQueryOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviQueryOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviQueryOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviQueryOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviQueryOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviQueryOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviToolsOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviToolsOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviToolsOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviToolsOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviToolsOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviToolsOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviToolsOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviToolsOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviToolsOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviToolsOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviToolsOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviToolsOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviToolsOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviToolsOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviToolsOptionsWidget,"options");
+ e0->pChildList->append(e1);
+
+ e1->pChildList = new KviPointerList<KviOptionsWidgetInstanceEntry>;
+ e1->pChildList->setAutoDelete(true);
+
+ e2 = new KviOptionsWidgetInstanceEntry;
+ e2->createProc = &classKviAvatarAdvancedOptionsWidget_createInstanceProc;
+ e2->pWidget = 0;
+ e2->szClassName = g_szClassName_KviAvatarAdvancedOptionsWidget;
+ e2->iIcon = KVI_OPTIONS_WIDGET_ICON_KviAvatarAdvancedOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviAvatarAdvancedOptionsWidget
+ e2->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviAvatarAdvancedOptionsWidget;
+ #else
+ e2->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviAvatarAdvancedOptionsWidget
+ e2->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviAvatarAdvancedOptionsWidget;
+ e2->szKeywords = __tr2qs_ctx_no_xgettext(e2->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviAvatarAdvancedOptionsWidget
+ e2->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviAvatarAdvancedOptionsWidget;
+ #else
+ e2->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviAvatarAdvancedOptionsWidget
+ e2->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviAvatarAdvancedOptionsWidget;
+ #else
+ e2->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviAvatarAdvancedOptionsWidget
+ e2->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviAvatarAdvancedOptionsWidget;
+ #else
+ e2->bIsNotContained = false;
+ #endif
+ e2->szNameNoLocale = g_szName_KviAvatarAdvancedOptionsWidget;
+ e2->szName = __tr2qs_ctx_no_xgettext(g_szName_KviAvatarAdvancedOptionsWidget,"options");
+ e1->pChildList->append(e2);
+ e2->pChildList = 0;
+
+ e2 = new KviOptionsWidgetInstanceEntry;
+ e2->createProc = &classKviAwayOptionsWidget_createInstanceProc;
+ e2->pWidget = 0;
+ e2->szClassName = g_szClassName_KviAwayOptionsWidget;
+ e2->iIcon = KVI_OPTIONS_WIDGET_ICON_KviAwayOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviAwayOptionsWidget
+ e2->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviAwayOptionsWidget;
+ #else
+ e2->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviAwayOptionsWidget
+ e2->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviAwayOptionsWidget;
+ e2->szKeywords = __tr2qs_ctx_no_xgettext(e2->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviAwayOptionsWidget
+ e2->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviAwayOptionsWidget;
+ #else
+ e2->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviAwayOptionsWidget
+ e2->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviAwayOptionsWidget;
+ #else
+ e2->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviAwayOptionsWidget
+ e2->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviAwayOptionsWidget;
+ #else
+ e2->bIsNotContained = false;
+ #endif
+ e2->szNameNoLocale = g_szName_KviAwayOptionsWidget;
+ e2->szName = __tr2qs_ctx_no_xgettext(g_szName_KviAwayOptionsWidget,"options");
+ e1->pChildList->append(e2);
+ e2->pChildList = 0;
+
+ e2 = new KviOptionsWidgetInstanceEntry;
+ e2->createProc = &classKviCtcpOptionsWidget_createInstanceProc;
+ e2->pWidget = 0;
+ e2->szClassName = g_szClassName_KviCtcpOptionsWidget;
+ e2->iIcon = KVI_OPTIONS_WIDGET_ICON_KviCtcpOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviCtcpOptionsWidget
+ e2->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviCtcpOptionsWidget;
+ #else
+ e2->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviCtcpOptionsWidget
+ e2->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviCtcpOptionsWidget;
+ e2->szKeywords = __tr2qs_ctx_no_xgettext(e2->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviCtcpOptionsWidget
+ e2->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviCtcpOptionsWidget;
+ #else
+ e2->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviCtcpOptionsWidget
+ e2->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviCtcpOptionsWidget;
+ #else
+ e2->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviCtcpOptionsWidget
+ e2->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviCtcpOptionsWidget;
+ #else
+ e2->bIsNotContained = false;
+ #endif
+ e2->szNameNoLocale = g_szName_KviCtcpOptionsWidget;
+ e2->szName = __tr2qs_ctx_no_xgettext(g_szName_KviCtcpOptionsWidget,"options");
+ e1->pChildList->append(e2);
+ e2->pChildList = 0;
+
+ e2 = new KviOptionsWidgetInstanceEntry;
+ e2->createProc = &classKviAlertHighlightingOptionsWidget_createInstanceProc;
+ e2->pWidget = 0;
+ e2->szClassName = g_szClassName_KviAlertHighlightingOptionsWidget;
+ e2->iIcon = KVI_OPTIONS_WIDGET_ICON_KviAlertHighlightingOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviAlertHighlightingOptionsWidget
+ e2->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviAlertHighlightingOptionsWidget;
+ #else
+ e2->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviAlertHighlightingOptionsWidget
+ e2->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviAlertHighlightingOptionsWidget;
+ e2->szKeywords = __tr2qs_ctx_no_xgettext(e2->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviAlertHighlightingOptionsWidget
+ e2->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviAlertHighlightingOptionsWidget;
+ #else
+ e2->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviAlertHighlightingOptionsWidget
+ e2->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviAlertHighlightingOptionsWidget;
+ #else
+ e2->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviAlertHighlightingOptionsWidget
+ e2->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviAlertHighlightingOptionsWidget;
+ #else
+ e2->bIsNotContained = false;
+ #endif
+ e2->szNameNoLocale = g_szName_KviAlertHighlightingOptionsWidget;
+ e2->szName = __tr2qs_ctx_no_xgettext(g_szName_KviAlertHighlightingOptionsWidget,"options");
+ e1->pChildList->append(e2);
+
+ e2->pChildList = new KviPointerList<KviOptionsWidgetInstanceEntry>;
+ e2->pChildList->setAutoDelete(true);
+
+ KviOptionsWidgetInstanceEntry * e3;
+ e3 = new KviOptionsWidgetInstanceEntry;
+ e3->createProc = &classKviHighlightingOptionsWidget_createInstanceProc;
+ e3->pWidget = 0;
+ e3->szClassName = g_szClassName_KviHighlightingOptionsWidget;
+ e3->iIcon = KVI_OPTIONS_WIDGET_ICON_KviHighlightingOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviHighlightingOptionsWidget
+ e3->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviHighlightingOptionsWidget;
+ #else
+ e3->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviHighlightingOptionsWidget
+ e3->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviHighlightingOptionsWidget;
+ e3->szKeywords = __tr2qs_ctx_no_xgettext(e3->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviHighlightingOptionsWidget
+ e3->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviHighlightingOptionsWidget;
+ #else
+ e3->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviHighlightingOptionsWidget
+ e3->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviHighlightingOptionsWidget;
+ #else
+ e3->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviHighlightingOptionsWidget
+ e3->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviHighlightingOptionsWidget;
+ #else
+ e3->bIsNotContained = false;
+ #endif
+ e3->szNameNoLocale = g_szName_KviHighlightingOptionsWidget;
+ e3->szName = __tr2qs_ctx_no_xgettext(g_szName_KviHighlightingOptionsWidget,"options");
+ e2->pChildList->append(e3);
+ e3->pChildList = 0;
+
+ e3 = new KviOptionsWidgetInstanceEntry;
+ e3->createProc = &classKviAlertOptionsWidget_createInstanceProc;
+ e3->pWidget = 0;
+ e3->szClassName = g_szClassName_KviAlertOptionsWidget;
+ e3->iIcon = KVI_OPTIONS_WIDGET_ICON_KviAlertOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviAlertOptionsWidget
+ e3->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviAlertOptionsWidget;
+ #else
+ e3->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviAlertOptionsWidget
+ e3->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviAlertOptionsWidget;
+ e3->szKeywords = __tr2qs_ctx_no_xgettext(e3->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviAlertOptionsWidget
+ e3->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviAlertOptionsWidget;
+ #else
+ e3->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviAlertOptionsWidget
+ e3->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviAlertOptionsWidget;
+ #else
+ e3->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviAlertOptionsWidget
+ e3->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviAlertOptionsWidget;
+ #else
+ e3->bIsNotContained = false;
+ #endif
+ e3->szNameNoLocale = g_szName_KviAlertOptionsWidget;
+ e3->szName = __tr2qs_ctx_no_xgettext(g_szName_KviAlertOptionsWidget,"options");
+ e2->pChildList->append(e3);
+ e3->pChildList = 0;
+
+ e2 = new KviOptionsWidgetInstanceEntry;
+ e2->createProc = &classKviLagOptionsWidget_createInstanceProc;
+ e2->pWidget = 0;
+ e2->szClassName = g_szClassName_KviLagOptionsWidget;
+ e2->iIcon = KVI_OPTIONS_WIDGET_ICON_KviLagOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviLagOptionsWidget
+ e2->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviLagOptionsWidget;
+ #else
+ e2->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviLagOptionsWidget
+ e2->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviLagOptionsWidget;
+ e2->szKeywords = __tr2qs_ctx_no_xgettext(e2->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviLagOptionsWidget
+ e2->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviLagOptionsWidget;
+ #else
+ e2->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviLagOptionsWidget
+ e2->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviLagOptionsWidget;
+ #else
+ e2->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviLagOptionsWidget
+ e2->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviLagOptionsWidget;
+ #else
+ e2->bIsNotContained = false;
+ #endif
+ e2->szNameNoLocale = g_szName_KviLagOptionsWidget;
+ e2->szName = __tr2qs_ctx_no_xgettext(g_szName_KviLagOptionsWidget,"options");
+ e1->pChildList->append(e2);
+ e2->pChildList = 0;
+
+ e2 = new KviOptionsWidgetInstanceEntry;
+ e2->createProc = &classKviLoggingOptionsWidget_createInstanceProc;
+ e2->pWidget = 0;
+ e2->szClassName = g_szClassName_KviLoggingOptionsWidget;
+ e2->iIcon = KVI_OPTIONS_WIDGET_ICON_KviLoggingOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviLoggingOptionsWidget
+ e2->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviLoggingOptionsWidget;
+ #else
+ e2->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviLoggingOptionsWidget
+ e2->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviLoggingOptionsWidget;
+ e2->szKeywords = __tr2qs_ctx_no_xgettext(e2->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviLoggingOptionsWidget
+ e2->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviLoggingOptionsWidget;
+ #else
+ e2->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviLoggingOptionsWidget
+ e2->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviLoggingOptionsWidget;
+ #else
+ e2->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviLoggingOptionsWidget
+ e2->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviLoggingOptionsWidget;
+ #else
+ e2->bIsNotContained = false;
+ #endif
+ e2->szNameNoLocale = g_szName_KviLoggingOptionsWidget;
+ e2->szName = __tr2qs_ctx_no_xgettext(g_szName_KviLoggingOptionsWidget,"options");
+ e1->pChildList->append(e2);
+ e2->pChildList = 0;
+
+ e2 = new KviOptionsWidgetInstanceEntry;
+ e2->createProc = &classKviNickServOptionsWidget_createInstanceProc;
+ e2->pWidget = 0;
+ e2->szClassName = g_szClassName_KviNickServOptionsWidget;
+ e2->iIcon = KVI_OPTIONS_WIDGET_ICON_KviNickServOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviNickServOptionsWidget
+ e2->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviNickServOptionsWidget;
+ #else
+ e2->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviNickServOptionsWidget
+ e2->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviNickServOptionsWidget;
+ e2->szKeywords = __tr2qs_ctx_no_xgettext(e2->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviNickServOptionsWidget
+ e2->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviNickServOptionsWidget;
+ #else
+ e2->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviNickServOptionsWidget
+ e2->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviNickServOptionsWidget;
+ #else
+ e2->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviNickServOptionsWidget
+ e2->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviNickServOptionsWidget;
+ #else
+ e2->bIsNotContained = false;
+ #endif
+ e2->szNameNoLocale = g_szName_KviNickServOptionsWidget;
+ e2->szName = __tr2qs_ctx_no_xgettext(g_szName_KviNickServOptionsWidget,"options");
+ e1->pChildList->append(e2);
+ e2->pChildList = 0;
+
+ e2 = new KviOptionsWidgetInstanceEntry;
+ e2->createProc = &classKviNotifyOptionsWidget_createInstanceProc;
+ e2->pWidget = 0;
+ e2->szClassName = g_szClassName_KviNotifyOptionsWidget;
+ e2->iIcon = KVI_OPTIONS_WIDGET_ICON_KviNotifyOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviNotifyOptionsWidget
+ e2->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviNotifyOptionsWidget;
+ #else
+ e2->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviNotifyOptionsWidget
+ e2->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviNotifyOptionsWidget;
+ e2->szKeywords = __tr2qs_ctx_no_xgettext(e2->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviNotifyOptionsWidget
+ e2->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviNotifyOptionsWidget;
+ #else
+ e2->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviNotifyOptionsWidget
+ e2->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviNotifyOptionsWidget;
+ #else
+ e2->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviNotifyOptionsWidget
+ e2->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviNotifyOptionsWidget;
+ #else
+ e2->bIsNotContained = false;
+ #endif
+ e2->szNameNoLocale = g_szName_KviNotifyOptionsWidget;
+ e2->szName = __tr2qs_ctx_no_xgettext(g_szName_KviNotifyOptionsWidget,"options");
+ e1->pChildList->append(e2);
+ e2->pChildList = 0;
+
+ e2 = new KviOptionsWidgetInstanceEntry;
+ e2->createProc = &classKviTextIconsOptionsWidget_createInstanceProc;
+ e2->pWidget = 0;
+ e2->szClassName = g_szClassName_KviTextIconsOptionsWidget;
+ e2->iIcon = KVI_OPTIONS_WIDGET_ICON_KviTextIconsOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviTextIconsOptionsWidget
+ e2->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviTextIconsOptionsWidget;
+ #else
+ e2->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviTextIconsOptionsWidget
+ e2->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviTextIconsOptionsWidget;
+ e2->szKeywords = __tr2qs_ctx_no_xgettext(e2->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviTextIconsOptionsWidget
+ e2->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviTextIconsOptionsWidget;
+ #else
+ e2->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviTextIconsOptionsWidget
+ e2->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviTextIconsOptionsWidget;
+ #else
+ e2->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviTextIconsOptionsWidget
+ e2->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviTextIconsOptionsWidget;
+ #else
+ e2->bIsNotContained = false;
+ #endif
+ e2->szNameNoLocale = g_szName_KviTextIconsOptionsWidget;
+ e2->szName = __tr2qs_ctx_no_xgettext(g_szName_KviTextIconsOptionsWidget,"options");
+ e1->pChildList->append(e2);
+ e2->pChildList = 0;
+
+ e0 = new KviOptionsWidgetInstanceEntry;
+ e0->createProc = &classKviIrcViewThemeOptionsWidget_createInstanceProc;
+ e0->pWidget = 0;
+ e0->szClassName = g_szClassName_KviIrcViewThemeOptionsWidget;
+ e0->iIcon = KVI_OPTIONS_WIDGET_ICON_KviIrcViewThemeOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviIrcViewThemeOptionsWidget
+ e0->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviIrcViewThemeOptionsWidget;
+ #else
+ e0->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviIrcViewThemeOptionsWidget
+ e0->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviIrcViewThemeOptionsWidget;
+ e0->szKeywords = __tr2qs_ctx_no_xgettext(e0->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviIrcViewThemeOptionsWidget
+ e0->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviIrcViewThemeOptionsWidget;
+ #else
+ e0->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviIrcViewThemeOptionsWidget
+ e0->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviIrcViewThemeOptionsWidget;
+ #else
+ e0->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIrcViewThemeOptionsWidget
+ e0->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIrcViewThemeOptionsWidget;
+ #else
+ e0->bIsNotContained = false;
+ #endif
+ e0->szNameNoLocale = g_szName_KviIrcViewThemeOptionsWidget;
+ e0->szName = __tr2qs_ctx_no_xgettext(g_szName_KviIrcViewThemeOptionsWidget,"options");
+ m_pInstanceTree->append(e0);
+
+ e0->pChildList = new KviPointerList<KviOptionsWidgetInstanceEntry>;
+ e0->pChildList->setAutoDelete(true);
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviIrcViewLookOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviIrcViewLookOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviIrcViewLookOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviIrcViewLookOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviIrcViewLookOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviIrcViewLookOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviIrcViewLookOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviIrcViewLookOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviIrcViewLookOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviIrcViewLookOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviIrcViewLookOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIrcViewLookOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIrcViewLookOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviIrcViewLookOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviIrcViewLookOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviIrcViewFeaturesOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviIrcViewFeaturesOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviIrcViewFeaturesOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviIrcViewFeaturesOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviIrcViewFeaturesOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviIrcViewFeaturesOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviIrcViewFeaturesOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviIrcViewFeaturesOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviIrcViewFeaturesOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviIrcViewFeaturesOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviIrcViewFeaturesOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIrcViewFeaturesOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviIrcViewFeaturesOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviIrcViewFeaturesOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviIrcViewFeaturesOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e0 = new KviOptionsWidgetInstanceEntry;
+ e0->createProc = &classKviMessageOptionsWidget_createInstanceProc;
+ e0->pWidget = 0;
+ e0->szClassName = g_szClassName_KviMessageOptionsWidget;
+ e0->iIcon = KVI_OPTIONS_WIDGET_ICON_KviMessageOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviMessageOptionsWidget
+ e0->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviMessageOptionsWidget;
+ #else
+ e0->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviMessageOptionsWidget
+ e0->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviMessageOptionsWidget;
+ e0->szKeywords = __tr2qs_ctx_no_xgettext(e0->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviMessageOptionsWidget
+ e0->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviMessageOptionsWidget;
+ #else
+ e0->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviMessageOptionsWidget
+ e0->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviMessageOptionsWidget;
+ #else
+ e0->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviMessageOptionsWidget
+ e0->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviMessageOptionsWidget;
+ #else
+ e0->bIsNotContained = false;
+ #endif
+ e0->szNameNoLocale = g_szName_KviMessageOptionsWidget;
+ e0->szName = __tr2qs_ctx_no_xgettext(g_szName_KviMessageOptionsWidget,"options");
+ m_pInstanceTree->append(e0);
+
+ e0->pChildList = new KviPointerList<KviOptionsWidgetInstanceEntry>;
+ e0->pChildList->setAutoDelete(true);
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviPrivmsgOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviPrivmsgOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviPrivmsgOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviPrivmsgOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviPrivmsgOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviPrivmsgOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviPrivmsgOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviPrivmsgOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviPrivmsgOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviPrivmsgOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviPrivmsgOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviPrivmsgOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviPrivmsgOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviPrivmsgOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviPrivmsgOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviTimestampOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviTimestampOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviTimestampOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviTimestampOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviTimestampOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviTimestampOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviTimestampOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviTimestampOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviTimestampOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviTimestampOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviTimestampOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviTimestampOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviTimestampOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviTimestampOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviTimestampOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviMessageColorsOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviMessageColorsOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviMessageColorsOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviMessageColorsOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviMessageColorsOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviMessageColorsOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviMessageColorsOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviMessageColorsOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviMessageColorsOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviMessageColorsOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviMessageColorsOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviMessageColorsOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviMessageColorsOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviMessageColorsOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviMessageColorsOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviStandardColorsOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviStandardColorsOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviStandardColorsOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviStandardColorsOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviStandardColorsOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviStandardColorsOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviStandardColorsOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviStandardColorsOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviStandardColorsOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviStandardColorsOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviStandardColorsOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviStandardColorsOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviStandardColorsOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviStandardColorsOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviStandardColorsOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e0 = new KviOptionsWidgetInstanceEntry;
+ e0->createProc = &classKviServerOptionsWidget_createInstanceProc;
+ e0->pWidget = 0;
+ e0->szClassName = g_szClassName_KviServerOptionsWidget;
+ e0->iIcon = KVI_OPTIONS_WIDGET_ICON_KviServerOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviServerOptionsWidget
+ e0->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviServerOptionsWidget;
+ #else
+ e0->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviServerOptionsWidget
+ e0->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviServerOptionsWidget;
+ e0->szKeywords = __tr2qs_ctx_no_xgettext(e0->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviServerOptionsWidget
+ e0->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviServerOptionsWidget;
+ #else
+ e0->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviServerOptionsWidget
+ e0->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviServerOptionsWidget;
+ #else
+ e0->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviServerOptionsWidget
+ e0->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviServerOptionsWidget;
+ #else
+ e0->bIsNotContained = false;
+ #endif
+ e0->szNameNoLocale = g_szName_KviServerOptionsWidget;
+ e0->szName = __tr2qs_ctx_no_xgettext(g_szName_KviServerOptionsWidget,"options");
+ m_pInstanceTree->append(e0);
+ e0->pChildList = 0;
+
+ e0 = new KviOptionsWidgetInstanceEntry;
+ e0->createProc = &classKviTaskBarOptionsWidget_createInstanceProc;
+ e0->pWidget = 0;
+ e0->szClassName = g_szClassName_KviTaskBarOptionsWidget;
+ e0->iIcon = KVI_OPTIONS_WIDGET_ICON_KviTaskBarOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviTaskBarOptionsWidget
+ e0->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviTaskBarOptionsWidget;
+ #else
+ e0->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviTaskBarOptionsWidget
+ e0->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviTaskBarOptionsWidget;
+ e0->szKeywords = __tr2qs_ctx_no_xgettext(e0->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviTaskBarOptionsWidget
+ e0->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviTaskBarOptionsWidget;
+ #else
+ e0->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviTaskBarOptionsWidget
+ e0->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviTaskBarOptionsWidget;
+ #else
+ e0->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviTaskBarOptionsWidget
+ e0->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviTaskBarOptionsWidget;
+ #else
+ e0->bIsNotContained = false;
+ #endif
+ e0->szNameNoLocale = g_szName_KviTaskBarOptionsWidget;
+ e0->szName = __tr2qs_ctx_no_xgettext(g_szName_KviTaskBarOptionsWidget,"options");
+ m_pInstanceTree->append(e0);
+
+ e0->pChildList = new KviPointerList<KviOptionsWidgetInstanceEntry>;
+ e0->pChildList->setAutoDelete(true);
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviTreeTaskBarOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviTreeTaskBarOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviTreeTaskBarOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviTreeTaskBarOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviTreeTaskBarOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviTreeTaskBarOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviTreeTaskBarOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviTreeTaskBarOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviTreeTaskBarOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviTreeTaskBarOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviTreeTaskBarOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviTreeTaskBarOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviTreeTaskBarOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviTreeTaskBarOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviTreeTaskBarOptionsWidget,"options");
+ e0->pChildList->append(e1);
+
+ e1->pChildList = new KviPointerList<KviOptionsWidgetInstanceEntry>;
+ e1->pChildList->setAutoDelete(true);
+
+ e2 = new KviOptionsWidgetInstanceEntry;
+ e2->createProc = &classKviTreeTaskBarForegroundOptionsWidget_createInstanceProc;
+ e2->pWidget = 0;
+ e2->szClassName = g_szClassName_KviTreeTaskBarForegroundOptionsWidget;
+ e2->iIcon = KVI_OPTIONS_WIDGET_ICON_KviTreeTaskBarForegroundOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviTreeTaskBarForegroundOptionsWidget
+ e2->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviTreeTaskBarForegroundOptionsWidget;
+ #else
+ e2->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviTreeTaskBarForegroundOptionsWidget
+ e2->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviTreeTaskBarForegroundOptionsWidget;
+ e2->szKeywords = __tr2qs_ctx_no_xgettext(e2->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviTreeTaskBarForegroundOptionsWidget
+ e2->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviTreeTaskBarForegroundOptionsWidget;
+ #else
+ e2->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviTreeTaskBarForegroundOptionsWidget
+ e2->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviTreeTaskBarForegroundOptionsWidget;
+ #else
+ e2->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviTreeTaskBarForegroundOptionsWidget
+ e2->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviTreeTaskBarForegroundOptionsWidget;
+ #else
+ e2->bIsNotContained = false;
+ #endif
+ e2->szNameNoLocale = g_szName_KviTreeTaskBarForegroundOptionsWidget;
+ e2->szName = __tr2qs_ctx_no_xgettext(g_szName_KviTreeTaskBarForegroundOptionsWidget,"options");
+ e1->pChildList->append(e2);
+ e2->pChildList = 0;
+
+ e2 = new KviOptionsWidgetInstanceEntry;
+ e2->createProc = &classKviTreeTaskBarBackgroundOptionsWidget_createInstanceProc;
+ e2->pWidget = 0;
+ e2->szClassName = g_szClassName_KviTreeTaskBarBackgroundOptionsWidget;
+ e2->iIcon = KVI_OPTIONS_WIDGET_ICON_KviTreeTaskBarBackgroundOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviTreeTaskBarBackgroundOptionsWidget
+ e2->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviTreeTaskBarBackgroundOptionsWidget;
+ #else
+ e2->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviTreeTaskBarBackgroundOptionsWidget
+ e2->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviTreeTaskBarBackgroundOptionsWidget;
+ e2->szKeywords = __tr2qs_ctx_no_xgettext(e2->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviTreeTaskBarBackgroundOptionsWidget
+ e2->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviTreeTaskBarBackgroundOptionsWidget;
+ #else
+ e2->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviTreeTaskBarBackgroundOptionsWidget
+ e2->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviTreeTaskBarBackgroundOptionsWidget;
+ #else
+ e2->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviTreeTaskBarBackgroundOptionsWidget
+ e2->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviTreeTaskBarBackgroundOptionsWidget;
+ #else
+ e2->bIsNotContained = false;
+ #endif
+ e2->szNameNoLocale = g_szName_KviTreeTaskBarBackgroundOptionsWidget;
+ e2->szName = __tr2qs_ctx_no_xgettext(g_szName_KviTreeTaskBarBackgroundOptionsWidget,"options");
+ e1->pChildList->append(e2);
+ e2->pChildList = 0;
+
+ e2 = new KviOptionsWidgetInstanceEntry;
+ e2->createProc = &classKviTreeTaskBarFeaturesOptionsWidget_createInstanceProc;
+ e2->pWidget = 0;
+ e2->szClassName = g_szClassName_KviTreeTaskBarFeaturesOptionsWidget;
+ e2->iIcon = KVI_OPTIONS_WIDGET_ICON_KviTreeTaskBarFeaturesOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviTreeTaskBarFeaturesOptionsWidget
+ e2->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviTreeTaskBarFeaturesOptionsWidget;
+ #else
+ e2->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviTreeTaskBarFeaturesOptionsWidget
+ e2->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviTreeTaskBarFeaturesOptionsWidget;
+ e2->szKeywords = __tr2qs_ctx_no_xgettext(e2->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviTreeTaskBarFeaturesOptionsWidget
+ e2->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviTreeTaskBarFeaturesOptionsWidget;
+ #else
+ e2->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviTreeTaskBarFeaturesOptionsWidget
+ e2->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviTreeTaskBarFeaturesOptionsWidget;
+ #else
+ e2->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviTreeTaskBarFeaturesOptionsWidget
+ e2->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviTreeTaskBarFeaturesOptionsWidget;
+ #else
+ e2->bIsNotContained = false;
+ #endif
+ e2->szNameNoLocale = g_szName_KviTreeTaskBarFeaturesOptionsWidget;
+ e2->szName = __tr2qs_ctx_no_xgettext(g_szName_KviTreeTaskBarFeaturesOptionsWidget,"options");
+ e1->pChildList->append(e2);
+ e2->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviClassicTaskBarOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviClassicTaskBarOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviClassicTaskBarOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviClassicTaskBarOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviClassicTaskBarOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviClassicTaskBarOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviClassicTaskBarOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviClassicTaskBarOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviClassicTaskBarOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviClassicTaskBarOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviClassicTaskBarOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviClassicTaskBarOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviClassicTaskBarOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviClassicTaskBarOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviClassicTaskBarOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e0 = new KviOptionsWidgetInstanceEntry;
+ e0->createProc = &classKviTopicLabelLookOptionsWidget_createInstanceProc;
+ e0->pWidget = 0;
+ e0->szClassName = g_szClassName_KviTopicLabelLookOptionsWidget;
+ e0->iIcon = KVI_OPTIONS_WIDGET_ICON_KviTopicLabelLookOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviTopicLabelLookOptionsWidget
+ e0->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviTopicLabelLookOptionsWidget;
+ #else
+ e0->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviTopicLabelLookOptionsWidget
+ e0->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviTopicLabelLookOptionsWidget;
+ e0->szKeywords = __tr2qs_ctx_no_xgettext(e0->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviTopicLabelLookOptionsWidget
+ e0->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviTopicLabelLookOptionsWidget;
+ #else
+ e0->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviTopicLabelLookOptionsWidget
+ e0->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviTopicLabelLookOptionsWidget;
+ #else
+ e0->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviTopicLabelLookOptionsWidget
+ e0->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviTopicLabelLookOptionsWidget;
+ #else
+ e0->bIsNotContained = false;
+ #endif
+ e0->szNameNoLocale = g_szName_KviTopicLabelLookOptionsWidget;
+ e0->szName = __tr2qs_ctx_no_xgettext(g_szName_KviTopicLabelLookOptionsWidget,"options");
+ m_pInstanceTree->append(e0);
+ e0->pChildList = 0;
+
+ e0 = new KviOptionsWidgetInstanceEntry;
+ e0->createProc = &classKviUserListLookOptionsWidget_createInstanceProc;
+ e0->pWidget = 0;
+ e0->szClassName = g_szClassName_KviUserListLookOptionsWidget;
+ e0->iIcon = KVI_OPTIONS_WIDGET_ICON_KviUserListLookOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviUserListLookOptionsWidget
+ e0->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviUserListLookOptionsWidget;
+ #else
+ e0->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviUserListLookOptionsWidget
+ e0->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviUserListLookOptionsWidget;
+ e0->szKeywords = __tr2qs_ctx_no_xgettext(e0->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviUserListLookOptionsWidget
+ e0->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviUserListLookOptionsWidget;
+ #else
+ e0->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviUserListLookOptionsWidget
+ e0->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviUserListLookOptionsWidget;
+ #else
+ e0->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviUserListLookOptionsWidget
+ e0->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviUserListLookOptionsWidget;
+ #else
+ e0->bIsNotContained = false;
+ #endif
+ e0->szNameNoLocale = g_szName_KviUserListLookOptionsWidget;
+ e0->szName = __tr2qs_ctx_no_xgettext(g_szName_KviUserListLookOptionsWidget,"options");
+ m_pInstanceTree->append(e0);
+
+ e0->pChildList = new KviPointerList<KviOptionsWidgetInstanceEntry>;
+ e0->pChildList->setAutoDelete(true);
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviUserListLookBackgroundOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviUserListLookBackgroundOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviUserListLookBackgroundOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviUserListLookBackgroundOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviUserListLookBackgroundOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviUserListLookBackgroundOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviUserListLookBackgroundOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviUserListLookBackgroundOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviUserListLookBackgroundOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviUserListLookBackgroundOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviUserListLookBackgroundOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviUserListLookBackgroundOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviUserListLookBackgroundOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviUserListLookBackgroundOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviUserListLookBackgroundOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviUserListLookForegroundOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviUserListLookForegroundOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviUserListLookForegroundOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviUserListLookForegroundOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviUserListLookForegroundOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviUserListLookForegroundOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviUserListLookForegroundOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviUserListLookForegroundOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviUserListLookForegroundOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviUserListLookForegroundOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviUserListLookForegroundOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviUserListLookForegroundOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviUserListLookForegroundOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviUserListLookForegroundOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviUserListLookForegroundOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviUserListGridOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviUserListGridOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviUserListGridOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviUserListGridOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviUserListGridOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviUserListGridOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviUserListGridOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviUserListGridOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviUserListGridOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviUserListGridOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviUserListGridOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviUserListGridOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviUserListGridOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviUserListGridOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviUserListGridOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+ e1 = new KviOptionsWidgetInstanceEntry;
+ e1->createProc = &classKviUserListFeaturesOptionsWidget_createInstanceProc;
+ e1->pWidget = 0;
+ e1->szClassName = g_szClassName_KviUserListFeaturesOptionsWidget;
+ e1->iIcon = KVI_OPTIONS_WIDGET_ICON_KviUserListFeaturesOptionsWidget;
+ #ifdef KVI_OPTIONS_WIDGET_PRIORITY_KviUserListFeaturesOptionsWidget
+ e1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_KviUserListFeaturesOptionsWidget;
+ #else
+ e1->iPriority = 0;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_KviUserListFeaturesOptionsWidget
+ e1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_KviUserListFeaturesOptionsWidget;
+ e1->szKeywords = __tr2qs_ctx_no_xgettext(e1->szKeywordsNoLocale,"options");;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_GROUP_KviUserListFeaturesOptionsWidget
+ e1->szGroup = KVI_OPTIONS_WIDGET_GROUP_KviUserListFeaturesOptionsWidget;
+ #else
+ e1->szGroup = "general";
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_CONTAINER_KviUserListFeaturesOptionsWidget
+ e1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_KviUserListFeaturesOptionsWidget;
+ #else
+ e1->bIsContainer = false;
+ #endif
+ #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_KviUserListFeaturesOptionsWidget
+ e1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_KviUserListFeaturesOptionsWidget;
+ #else
+ e1->bIsNotContained = false;
+ #endif
+ e1->szNameNoLocale = g_szName_KviUserListFeaturesOptionsWidget;
+ e1->szName = __tr2qs_ctx_no_xgettext(g_szName_KviUserListFeaturesOptionsWidget,"options");
+ e0->pChildList->append(e1);
+ e1->pChildList = 0;
+
+}
+
+void KviOptionsInstanceManager::deleteInstanceTree(KviPointerList<KviOptionsWidgetInstanceEntry> * l)
+{
+ if(l)
+ {
+ for(KviOptionsWidgetInstanceEntry * e = l->first();e;e = l->next())
+ {
+ if(e->pWidget)
+ {
+ if(e->pWidget->parent()->inherits("KviOptionsWidgetContainer"))
+ {
+ disconnect(e->pWidget,SIGNAL(destroyed()),this,SLOT(widgetDestroyed()));
+ delete e->pWidget->parent();
+ e->pWidget = 0;
+ } else {
+ debug("Ops...i have deleted the options dialog ?");
+ }
+ } //else debug("Clas %s has no widget",e->szName);
+ if(e->pChildList)deleteInstanceTree(e->pChildList);
+ }
+ delete l;
+ }
+}
+
+
+KviOptionsInstanceManager::~KviOptionsInstanceManager()
+{
+ if(m_pInstanceTree)debug("Ops...KviOptionsInstanceManager::cleanup() not called ?");
+}
+
+void KviOptionsInstanceManager::cleanup(KviModule * m)
+{
+ deleteInstanceTree(m_pInstanceTree);
+ m_pInstanceTree = 0;
+}
+
+void KviOptionsInstanceManager::widgetDestroyed()
+{
+ KviOptionsWidgetInstanceEntry * e = findInstanceEntry(sender(),m_pInstanceTree);
+ if(e)e->pWidget = 0;
+ if(g_iOptionWidgetInstances > 0)g_iOptionWidgetInstances--;
+
+}
+
+KviOptionsWidget * KviOptionsInstanceManager::getInstance(KviOptionsWidgetInstanceEntry * e,QWidget * par)
+{
+ if(!e)return 0;
+ if(!(e->pWidget))
+ {
+ e->pWidget = e->createProc(par);
+ g_iOptionWidgetInstances++;
+ connect(e->pWidget,SIGNAL(destroyed()),this,SLOT(widgetDestroyed()));
+ }
+ if(e->pWidget->parent() != par)
+ {
+ QWidget * oldPar = (QWidget *)e->pWidget->parent();
+ e->pWidget->reparent(par,QPoint(0,0));
+ delete oldPar;
+ }
+ if(e->bIsContainer)
+ {
+ // need to create the container structure!
+ e->pWidget->createTabbedPage();
+ if(e->pChildList)
+ {
+ KviPointerList<KviOptionsWidgetInstanceEntry> tmp;
+ tmp.setAutoDelete(false);
+
+ for(KviOptionsWidgetInstanceEntry * e2 = e->pChildList->first();e2;e2 = e->pChildList->next())
+ {
+ // add only non containers and widgets not explicitly marked as noncontained
+ if((!e2->bIsContainer) && (!e2->bIsNotContained))
+ {
+ KviOptionsWidgetInstanceEntry * ee = tmp.first();
+ int idx = 0;
+ while(ee)
+ {
+ if(ee->iPriority >= e2->iPriority)break;
+ idx++;
+ ee = tmp.next();
+ }
+ tmp.insert(idx,e2);
+ }
+ }
+
+ for(KviOptionsWidgetInstanceEntry * e3 = tmp.last();e3;e3 = tmp.prev())
+ {
+ KviOptionsWidget * ow = getInstance(e3,e->pWidget->tabWidget());
+ e->pWidget->addOptionsWidget(e3->szName,*(g_pIconManager->getSmallIcon(e3->iIcon)),ow);
+ }
+ }
+ }
+ return e->pWidget;
+}
+
+KviOptionsWidgetInstanceEntry * KviOptionsInstanceManager::findInstanceEntry(const QObject * ptr,KviPointerList<KviOptionsWidgetInstanceEntry> * l)
+{
+ if(l)
+ {
+ for(KviOptionsWidgetInstanceEntry * e = l->first();e;e = l->next())
+ {
+ if(ptr == e->pWidget)return e;
+ if(e->pChildList)
+ {
+ KviOptionsWidgetInstanceEntry * e2 = findInstanceEntry(ptr,e->pChildList);
+ if(e2)return e2;
+ }
+ }
+ }
+ return 0;
+}
+
+KviOptionsWidgetInstanceEntry * KviOptionsInstanceManager::findInstanceEntry(const char * clName,KviPointerList<KviOptionsWidgetInstanceEntry> * l)
+{
+ if(l)
+ {
+ for(KviOptionsWidgetInstanceEntry * e = l->first();e;e = l->next())
+ {
+ if(kvi_strEqualCI(e->szClassName,clName))return e;
+ if(e->pChildList)
+ {
+ KviOptionsWidgetInstanceEntry * e2 = findInstanceEntry(clName,e->pChildList);
+ if(e2)return e2;
+ }
+ }
+ }
+ return 0;
+}
+
+KviOptionsWidgetInstanceEntry * KviOptionsInstanceManager::findInstanceEntry(const char * clName)
+{
+ return findInstanceEntry(clName,m_pInstanceTree);
+}
+
+
+#include "m_instances.moc"
+
diff --git a/src/modules/options/instances.h b/src/modules/options/instances.h
new file mode 100644
index 00000000..fc8674cc
--- /dev/null
+++ b/src/modules/options/instances.h
@@ -0,0 +1,83 @@
+
+
+#ifndef __OPTIONS_INSTANCES_H__
+#define __OPTIONS_INSTANCES_H__
+
+//
+// File : instances.h
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+//
+// Instance creation routines for the KVIrc options module
+// DO NOT EDIT THIS FILE!! ALL CHANGES WILL BE LOST!!
+// This file is automatically generated by mkcreateinstanceproc.sh
+// so any change should go in that script
+//
+
+#include "kvi_optionswidget.h"
+#include "kvi_module.h"
+#include "kvi_pointerlist.h"
+#include "kvi_qstring.h"
+
+typedef struct _KviOptionsWidgetInstanceEntry KviOptionsWidgetInstanceEntry;
+
+
+typedef struct _KviOptionsWidgetInstanceEntry
+{
+ KviOptionsWidget * (*createProc)(QWidget *);
+ KviOptionsWidget * pWidget; // singleton
+ int iIcon;
+ QString szName;
+ QString szNameNoLocale;
+ const char * szClassName;
+ int iPriority;
+ QString szKeywords;
+ QString szKeywordsNoLocale;
+ QString szGroup;
+ bool bIsContainer;
+ bool bIsNotContained;
+ KviPointerList<KviOptionsWidgetInstanceEntry> * pChildList;
+ bool bDoInsert; // a helper for KviOptionsDialog::fillListView()
+} KviOptionsWidgetInstanceEntry;
+
+
+class KviOptionsInstanceManager : public QObject
+{
+ Q_OBJECT
+public:
+ KviOptionsInstanceManager();
+ virtual ~KviOptionsInstanceManager();
+protected:
+ KviPointerList<KviOptionsWidgetInstanceEntry> * m_pInstanceTree;
+public:
+ KviPointerList<KviOptionsWidgetInstanceEntry> * instanceEntryTree(){ return m_pInstanceTree; };
+ KviOptionsWidget * getInstance(KviOptionsWidgetInstanceEntry * e,QWidget * par);
+ KviOptionsWidgetInstanceEntry * findInstanceEntry(const char * clName);
+ void cleanup(KviModule * m);
+protected:
+ KviOptionsWidgetInstanceEntry * findInstanceEntry(const char * clName,KviPointerList<KviOptionsWidgetInstanceEntry> * l);
+ KviOptionsWidgetInstanceEntry * findInstanceEntry(const QObject * ptr,KviPointerList<KviOptionsWidgetInstanceEntry> * l);
+ void deleteInstanceTree(KviPointerList<KviOptionsWidgetInstanceEntry> * l);
+protected slots:
+ void widgetDestroyed();
+};
+
+#endif //__OPTIONS_INSTANCES_H__
+
diff --git a/src/modules/options/libkvioptions.cpp b/src/modules/options/libkvioptions.cpp
new file mode 100644
index 00000000..175b61ff
--- /dev/null
+++ b/src/modules/options/libkvioptions.cpp
@@ -0,0 +1,324 @@
+//============================================================================================
+//
+// File : libkvioptions.cpp
+// Creation date : Fri Aug 18 2000 15:04:09 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//============================================================================================
+
+#include "kvi_module.h"
+#include "kvi_options.h"
+#include "kvi_app.h"
+#include "kvi_frame.h"
+#include "kvi_window.h"
+#include "kvi_locale.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_out.h"
+#include "kvi_splash.h"
+
+#include "container.h"
+#include "instances.h"
+
+#include "dialog.h"
+
+#include <qsplitter.h>
+#include "kvi_pointerhashtable.h"
+
+
+KviPointerHashTable<QString,KviOptionsDialog> * g_pOptionsDialogDict = 0;
+
+KviOptionsInstanceManager * g_pOptionsInstanceManager = 0;
+
+extern int g_iOptionWidgetInstances;
+
+/*
+ @doc: options.save
+ @type:
+ command
+ @title:
+ options.save
+ @short:
+ Saves the options to disk
+ @syntax:
+ options.save
+ @description:
+ Saves the options to disk; this includes aliases , popups ,
+ events and user preferences.
+*/
+
+static bool options_kvs_cmd_save(KviKvsModuleCommandCall * c)
+{
+ g_pApp->saveOptions();
+ return true;
+}
+
+
+/*
+ @doc: options.dialog
+ @type:
+ command
+ @title:
+ options.dialog
+ @short:
+ Shows the "options dialog"
+ @syntax:
+ options.dialog [-t] [options_group]
+ @description:
+ Shows the KVIrc options dialog for the specified options group.
+ If the [-t] switch is used , the dialog is opened as toplevel window,
+ otherwise it is opened as part of the current frame window.[br]
+ Valid values for [options_group] are "general" and "theme".
+ If [options_group] is omitted, the option group "general" is assumed.
+ This command is exported by the "options" module.
+ @seealso:
+ [fnc]$options.isDialog[/fnc]
+*/
+
+
+static bool options_kvs_cmd_dialog(KviKvsModuleCommandCall * c)
+{
+ QString szGroup;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("options_group",KVS_PT_STRING,KVS_PF_OPTIONAL,szGroup)
+ KVSM_PARAMETERS_END(c)
+ if(szGroup.isEmpty())szGroup = "general";
+ KviOptionsDialog * d = g_pOptionsDialogDict->find(szGroup);
+ if(d)
+ {
+ if(c->hasSwitch('t',"toplevel"))
+ {
+ if(d->parent())
+ {
+ d->reparent(0,QPoint(0,0),true);
+ }
+ } else {
+ if(d->parent() != c->window()->frame()->splitter())
+ {
+ d->reparent(c->window()->frame()->splitter(),QPoint(0,0),true);
+ }
+ }
+ } else {
+ if(c->hasSwitch('t',"toplevel"))
+ {
+ d = new KviOptionsDialog(0,szGroup);
+ } else {
+ d = new KviOptionsDialog(c->window()->frame()->splitter(),szGroup);
+ }
+ g_pOptionsDialogDict->insert(szGroup,d);
+ }
+ d->raise();
+ d->show();
+ d->setFocus();
+ return true;
+}
+
+/*
+ @doc: options.pages
+ @type:
+ command
+ @title:
+ options.pages
+ @short:
+ Lists the option pages
+ @syntax:
+ options.pages
+ @description:
+ Lists the option pages available for editing by the means of [cmd]options.edit[/cmd].
+ @seealso:
+*/
+
+
+static void options_kvs_module_print_pages(KviKvsModuleCommandCall * c,KviOptionsWidgetInstanceEntry * e,const char * prefix)
+{
+ c->window()->output(KVI_OUT_SYSTEMMESSAGE,"%s%c%s%c (%Q)",prefix,KVI_TEXT_BOLD,e->szClassName,KVI_TEXT_BOLD,&(e->szName));
+ KviStr szPre = prefix;
+ szPre.append(" ");
+ if(e->pChildList)
+ {
+ for(KviOptionsWidgetInstanceEntry * ex = e->pChildList->first();ex;ex = e->pChildList->next())
+ {
+ options_kvs_module_print_pages(c,ex,szPre.ptr());
+ }
+ }
+}
+static bool options_kvs_cmd_pages(KviKvsModuleCommandCall * c)
+{
+ KviPointerList<KviOptionsWidgetInstanceEntry> * l = g_pOptionsInstanceManager->instanceEntryTree();
+
+ for(KviOptionsWidgetInstanceEntry * e = l->first();e;e = l->next())
+ {
+ options_kvs_module_print_pages(c,e,"");
+ }
+
+ return true;
+}
+
+/*
+ @doc: options.edit
+ @type:
+ command
+ @title:
+ options.edit [-m]
+ @short:
+ Shows a single options page
+ @syntax:
+ options.edit <"options page class name">
+ @description:
+ Shows an options page as toplevel dialog.
+ The available option pages can be listed by using [cmd]options.pages[/cmd].
+ If the -m switch is used, the dialog will appear as modal, blocking input
+ to the main frame until it's closed.
+ @seealso:
+*/
+
+static bool options_kvs_cmd_edit(KviKvsModuleCommandCall * c)
+{
+ QString szOption;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("option",KVS_PT_STRING,0,szOption)
+ KVSM_PARAMETERS_END(c)
+ KviOptionsWidgetInstanceEntry * e = g_pOptionsInstanceManager->findInstanceEntry(szOption);
+ if(!e)
+ {
+ c->warning(__tr2qs_ctx("No such options page class name %Q","options"),&szOption);
+ return true;
+ }
+
+ if(e->pWidget)
+ {
+ //c->warning(__tr("The editor page is already open","options"));
+ e->pWidget->raise();
+ e->pWidget->setActiveWindow();
+ e->pWidget->setFocus();
+ return true;
+ }
+
+ QWidget * w;
+
+ if(c->hasSwitch('m',"modal"))
+ {
+ w = g_pApp->activeModalWidget();
+ if(!w)w = g_pFrame;
+ } else {
+ w = g_pFrame;
+ }
+
+ KviOptionsWidgetContainer * wc = new KviOptionsWidgetContainer(w,c->hasSwitch('m',"modal"));
+
+ wc->setup(g_pOptionsInstanceManager->getInstance(e,wc));
+
+ // a trick for the dialog covering the splash screen before the time (this is prolly a WM or Qt bug)
+ if(g_pSplashScreen)
+ {
+ if(g_pSplashScreen->isVisible()) // another bug: this ALWAYS RETURNS TRUE, even if the splash was hidden by a mouse click...
+ {
+ QObject::connect(g_pSplashScreen,SIGNAL(destroyed()),wc,SLOT(show()));
+ return true;
+ }
+ }
+
+ wc->show();
+ wc->raise();
+ return true;
+}
+
+/*
+ @doc: options.isdialog
+ @type:
+ function
+ @title:
+ $options.isdialog
+ @short:
+ Returns the options dialog state
+ @syntax:
+ <boolean> $options.isdialog([options_group:string])
+ @description:
+ Returns '1' if the options dialog for the specified options_group is open, '0' otherwise.[br]
+ If [options_group] is omitted then the group "general" is assumed.
+ At the moment of writing the valid [options_group] values are "general" and "theme".
+ This command is exported by the "options" module.
+ @seealso:
+ [cmd]options.dialog[/cmd]
+*/
+
+static bool options_kvs_fnc_isdialog(KviKvsModuleFunctionCall * c)
+{
+ QString szGroup;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("options_group",KVS_PT_STRING,KVS_PF_OPTIONAL,szGroup)
+ KVSM_PARAMETERS_END(c)
+ if(szGroup.isEmpty())szGroup = "general";
+ c->returnValue()->setBoolean(g_pOptionsDialogDict->find(szGroup));
+ return true;
+}
+
+
+static bool options_module_init(KviModule * m)
+{
+ g_pOptionsInstanceManager = new KviOptionsInstanceManager();
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"dialog",options_kvs_cmd_dialog);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"save",options_kvs_cmd_save);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"pages",options_kvs_cmd_pages);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"edit",options_kvs_cmd_edit);
+ KVSM_REGISTER_FUNCTION(m,"isDialog",options_kvs_fnc_isdialog);
+
+ g_pOptionsDialogDict = new KviPointerHashTable<QString,KviOptionsDialog>;
+ g_pOptionsDialogDict->setAutoDelete(false);
+
+ return true;
+}
+
+static bool options_module_cleanup(KviModule *m)
+{
+ KviPointerHashTableIterator<QString,KviOptionsDialog> it(*g_pOptionsDialogDict);
+ KviPointerList<KviOptionsDialog> l;
+ l.setAutoDelete(false);
+ KviOptionsDialog * d;
+ while(d = it.current())
+ {
+ l.append(d);
+ ++it;
+ }
+ for(d = l.first();d;d = l.next())delete d;
+ delete g_pOptionsDialogDict;
+ g_pOptionsDialogDict = 0;
+
+ g_pOptionsInstanceManager->cleanup(m);
+ delete g_pOptionsInstanceManager;
+ g_pOptionsInstanceManager = 0;
+
+ return true;
+}
+
+static bool options_module_can_unload(KviModule *m)
+{
+ return ((g_pOptionsDialogDict->isEmpty()) && (g_iOptionWidgetInstances == 0));
+}
+
+KVIRC_MODULE(
+ "Options", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2000 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "Options Dialog",
+ options_module_init,
+ options_module_can_unload,
+ 0,
+ options_module_cleanup
+)
diff --git a/src/modules/options/mkcreateinstanceproc.sh b/src/modules/options/mkcreateinstanceproc.sh
new file mode 100755
index 00000000..97be80b5
--- /dev/null
+++ b/src/modules/options/mkcreateinstanceproc.sh
@@ -0,0 +1,441 @@
+#!/bin/sh
+
+#####################################################################################################
+#
+# Generator for instances.h and instances.cpp
+#
+# This file is part of the KVirc irc client distribution
+# Copyright (C) 2001-2006 Szymon Stefanek (pragma at kvirc dot net)
+#
+#####################################################################################################
+
+
+echo "" > instances.h
+
+######################################################################################################
+cat >> instances.h <<EOF
+
+#ifndef __OPTIONS_INSTANCES_H__
+#define __OPTIONS_INSTANCES_H__
+
+//
+// File : instances.h
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+//
+// Instance creation routines for the KVIrc options module
+// DO NOT EDIT THIS FILE!! ALL CHANGES WILL BE LOST!!
+// This file is automatically generated by mkcreateinstanceproc.sh
+// so any change should go in that script
+//
+
+#include "kvi_optionswidget.h"
+#include "kvi_module.h"
+#include "kvi_pointerlist.h"
+#include "kvi_qstring.h"
+
+typedef struct _KviOptionsWidgetInstanceEntry KviOptionsWidgetInstanceEntry;
+
+
+typedef struct _KviOptionsWidgetInstanceEntry
+{
+ KviOptionsWidget * (*createProc)(QWidget *);
+ KviOptionsWidget * pWidget; // singleton
+ int iIcon;
+ QString szName;
+ QString szNameNoLocale;
+ const char * szClassName;
+ int iPriority;
+ QString szKeywords;
+ QString szKeywordsNoLocale;
+ QString szGroup;
+ bool bIsContainer;
+ bool bIsNotContained;
+ KviPointerList<KviOptionsWidgetInstanceEntry> * pChildList;
+ bool bDoInsert; // a helper for KviOptionsDialog::fillListView()
+} KviOptionsWidgetInstanceEntry;
+
+
+class KviOptionsInstanceManager : public QObject
+{
+ Q_OBJECT
+public:
+ KviOptionsInstanceManager();
+ virtual ~KviOptionsInstanceManager();
+protected:
+ KviPointerList<KviOptionsWidgetInstanceEntry> * m_pInstanceTree;
+public:
+ KviPointerList<KviOptionsWidgetInstanceEntry> * instanceEntryTree(){ return m_pInstanceTree; };
+ KviOptionsWidget * getInstance(KviOptionsWidgetInstanceEntry * e,QWidget * par);
+ KviOptionsWidgetInstanceEntry * findInstanceEntry(const char * clName);
+ void cleanup(KviModule * m);
+protected:
+ KviOptionsWidgetInstanceEntry * findInstanceEntry(const char * clName,KviPointerList<KviOptionsWidgetInstanceEntry> * l);
+ KviOptionsWidgetInstanceEntry * findInstanceEntry(const QObject * ptr,KviPointerList<KviOptionsWidgetInstanceEntry> * l);
+ void deleteInstanceTree(KviPointerList<KviOptionsWidgetInstanceEntry> * l);
+protected slots:
+ void widgetDestroyed();
+};
+
+#endif //__OPTIONS_INSTANCES_H__
+
+EOF
+######################################################################################################
+
+CLASS_LIST=`grep -h "[ ]*\:[ ]*public[ ]*KviOptionsWidget" optw_*.h | sed -e 's/[ ]*\:[ ]*public[ ]*KviOptionsWidget'//g | sed -e 's/[ ]*class[ ]*//g'`
+
+
+TARGET="instances.cpp"
+
+echo "" > $TARGET
+
+######################################################################################################
+cat >> instances.cpp <<EOF
+
+//
+// File : instances.cpp
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek ([email protected])
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+//
+// Instance creation routines for the KVIrc options module
+// DO NOT EDIT THIS FILE!! ALL CHANGES WILL BE LOST!!
+// This file is automatically generated by mkcreateinstanceproc.sh
+// so any change should go in that script
+//
+
+EOF
+######################################################################################################
+
+
+for afile in optw_*.h; do
+ echo "#include \"$afile\"" >> $TARGET
+done
+
+######################################################################################################
+cat >> instances.cpp <<EOF
+
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+#include "instances.h"
+
+int g_iOptionWidgetInstances = 0;
+
+EOF
+######################################################################################################
+
+
+for aclass in $CLASS_LIST; do
+ echo -n "KviOptionsWidget * class$aclass" >> $TARGET
+ echo "_createInstanceProc(QWidget * parent)" >> $TARGET
+ echo "{" >> $TARGET
+ echo " return new $aclass(parent);" >> $TARGET
+ echo "}" >> $TARGET
+ echo "" >> $TARGET
+done
+
+######################################################################################################
+cat >> instances.cpp <<EOF
+
+
+EOF
+######################################################################################################
+
+for aclass in $CLASS_LIST; do
+ echo "static const char * g_szName_$aclass = KVI_OPTIONS_WIDGET_NAME_$aclass;" >> $TARGET
+ echo "static const char * g_szClassName_$aclass = \"$aclass\";" >> $TARGET
+done
+
+######################################################################################################
+cat >> instances.cpp <<EOF
+
+KviOptionsInstanceManager::KviOptionsInstanceManager()
+: QObject(0)
+{
+
+ //debug("Instantiating");
+ // Create the global widget dict : case sensitive , do not copy keys
+ m_pInstanceTree = new KviPointerList<KviOptionsWidgetInstanceEntry>;
+ m_pInstanceTree->setAutoDelete(true);
+
+EOF
+######################################################################################################
+
+CLASSDIR=".classtmp"
+
+mkdir -p $CLASSDIR
+
+rm -f $CLASSDIR/*
+
+for aclass in $CLASS_LIST; do
+ PARENT=`grep -h "KVI_OPTIONS_WIDGET_PARENT_$aclass" optw_*.h | sed -e 's/#define//g' | sed -e s/KVI_OPTIONS_WIDGET_PARENT_$aclass//g | sed -e 's/[ ]*//g'`
+ if [ -z "$PARENT" ]; then
+ PARENT="NOPARENT"
+ fi
+ echo $aclass >> $CLASSDIR/$PARENT
+done
+
+SPACES=""
+
+printclass()
+{
+ echo "" >> $TARGET
+ found=
+ for anum in $DECLARED; do
+ if [ "$anum" = "$1" ]; then
+ found="yes"
+ break
+ fi
+ done
+ if [ -z "$found" ]; then
+ echo "$3 KviOptionsWidgetInstanceEntry * e$1;" >> $TARGET
+ DECLARED="$DECLARED $1"
+ fi
+ echo "$3 e$1 = new KviOptionsWidgetInstanceEntry;" >> $TARGET
+ echo -n "$3 e$1->createProc = &class$2" >> $TARGET
+ echo "_createInstanceProc;" >> $TARGET
+ echo "$3 e$1->pWidget = 0;" >> $TARGET
+ echo "$3 e$1->szClassName = g_szClassName_$2;" >> $TARGET
+ echo "$3 e$1->iIcon = KVI_OPTIONS_WIDGET_ICON_$2;" >> $TARGET
+
+ echo "$3 #ifdef KVI_OPTIONS_WIDGET_PRIORITY_$2" >> $TARGET
+ echo "$3 e$1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_$2;" >> $TARGET
+ echo "$3 #else" >> $TARGET
+ echo "$3 e$1->iPriority = 0;" >> $TARGET
+ echo "$3 #endif" >> $TARGET
+
+ echo "$3 #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_$2" >> $TARGET
+ echo "$3 e$1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_$2;" >> $TARGET
+ echo "$3 e$1->szKeywords = __tr2qs_ctx_no_xgettext(e$1->szKeywordsNoLocale,\"options\");;" >> $TARGET
+ echo "$3 #endif" >> $TARGET
+
+ echo "$3 #ifdef KVI_OPTIONS_WIDGET_GROUP_$2" >> $TARGET
+ echo "$3 e$1->szGroup = KVI_OPTIONS_WIDGET_GROUP_$2;" >> $TARGET
+ echo "$3 #else" >> $TARGET
+ echo "$3 e$1->szGroup = \"general\";" >> $TARGET
+ echo "$3 #endif" >> $TARGET
+
+ echo "$3 #ifdef KVI_OPTIONS_WIDGET_CONTAINER_$2" >> $TARGET
+ echo "$3 e$1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_$2;" >> $TARGET
+ echo "$3 #else" >> $TARGET
+ echo "$3 e$1->bIsContainer = false;" >> $TARGET
+ echo "$3 #endif" >> $TARGET
+
+ echo "$3 #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_$2" >> $TARGET
+ echo "$3 e$1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_$2;" >> $TARGET
+ echo "$3 #else" >> $TARGET
+ echo "$3 e$1->bIsNotContained = false;" >> $TARGET
+ echo "$3 #endif" >> $TARGET
+
+ echo "$3 e$1->szNameNoLocale = g_szName_$2;" >> $TARGET
+ echo "$3 e$1->szName = __tr2qs_ctx_no_xgettext(g_szName_$2,\"options\");" >> $TARGET
+
+ if [ "$1" = "0" ]; then
+ echo "$3 m_pInstanceTree->append(e$1);" >> $TARGET
+ else
+ VAL=`expr $1 - 1`
+ echo "$3 e$VAL->pChildList->append(e$1);" >> $TARGET
+ fi
+}
+
+addchildren()
+{
+ if [ -f "$CLASSDIR/$2" ]; then
+ LEVEL=`cat $CLASSDIR/$2`
+ for achild in $LEVEL; do
+ printclass $1 $achild "$3"
+ if [ -f "$CLASSDIR/$achild" ]; then
+ echo "" >> $TARGET
+ echo "$3 e$1->pChildList = new KviPointerList<KviOptionsWidgetInstanceEntry>;" >> $TARGET
+ echo "$3 e$1->pChildList->setAutoDelete(true);" >> $TARGET
+ NEXTLEVEL=`expr $1 + 1`
+ addchildren $NEXTLEVEL $achild "$3 "
+ else
+ echo "$3 e$1->pChildList = 0;" >> $TARGET
+ fi
+ done
+ fi
+}
+
+addchildren 0 NOPARENT ""
+
+
+rm -fr $CLASSDIR
+
+######################################################################################################
+cat >> $TARGET <<EOF
+
+}
+
+void KviOptionsInstanceManager::deleteInstanceTree(KviPointerList<KviOptionsWidgetInstanceEntry> * l)
+{
+ if(l)
+ {
+ for(KviOptionsWidgetInstanceEntry * e = l->first();e;e = l->next())
+ {
+ if(e->pWidget)
+ {
+ if(e->pWidget->parent()->inherits("KviOptionsWidgetContainer"))
+ {
+ disconnect(e->pWidget,SIGNAL(destroyed()),this,SLOT(widgetDestroyed()));
+ delete e->pWidget->parent();
+ e->pWidget = 0;
+ } else {
+ debug("Ops...i have deleted the options dialog ?");
+ }
+ } //else debug("Clas %s has no widget",e->szName);
+ if(e->pChildList)deleteInstanceTree(e->pChildList);
+ }
+ delete l;
+ }
+}
+
+
+KviOptionsInstanceManager::~KviOptionsInstanceManager()
+{
+ if(m_pInstanceTree)debug("Ops...KviOptionsInstanceManager::cleanup() not called ?");
+}
+
+void KviOptionsInstanceManager::cleanup(KviModule * m)
+{
+ deleteInstanceTree(m_pInstanceTree);
+ m_pInstanceTree = 0;
+}
+
+void KviOptionsInstanceManager::widgetDestroyed()
+{
+ KviOptionsWidgetInstanceEntry * e = findInstanceEntry(sender(),m_pInstanceTree);
+ if(e)e->pWidget = 0;
+ if(g_iOptionWidgetInstances > 0)g_iOptionWidgetInstances--;
+
+}
+
+KviOptionsWidget * KviOptionsInstanceManager::getInstance(KviOptionsWidgetInstanceEntry * e,QWidget * par)
+{
+ if(!e)return 0;
+ if(!(e->pWidget))
+ {
+ e->pWidget = e->createProc(par);
+ g_iOptionWidgetInstances++;
+ connect(e->pWidget,SIGNAL(destroyed()),this,SLOT(widgetDestroyed()));
+ }
+ if(e->pWidget->parent() != par)
+ {
+ QWidget * oldPar = (QWidget *)e->pWidget->parent();
+ e->pWidget->reparent(par,QPoint(0,0));
+ delete oldPar;
+ }
+ if(e->bIsContainer)
+ {
+ // need to create the container structure!
+ e->pWidget->createTabbedPage();
+ if(e->pChildList)
+ {
+ KviPointerList<KviOptionsWidgetInstanceEntry> tmp;
+ tmp.setAutoDelete(false);
+
+ for(KviOptionsWidgetInstanceEntry * e2 = e->pChildList->first();e2;e2 = e->pChildList->next())
+ {
+ // add only non containers and widgets not explicitly marked as noncontained
+ if((!e2->bIsContainer) && (!e2->bIsNotContained))
+ {
+ KviOptionsWidgetInstanceEntry * ee = tmp.first();
+ int idx = 0;
+ while(ee)
+ {
+ if(ee->iPriority >= e2->iPriority)break;
+ idx++;
+ ee = tmp.next();
+ }
+ tmp.insert(idx,e2);
+ }
+ }
+
+ for(KviOptionsWidgetInstanceEntry * e3 = tmp.last();e3;e3 = tmp.prev())
+ {
+ KviOptionsWidget * ow = getInstance(e3,e->pWidget->tabWidget());
+ e->pWidget->addOptionsWidget(e3->szName,*(g_pIconManager->getSmallIcon(e3->iIcon)),ow);
+ }
+ }
+ }
+ return e->pWidget;
+}
+
+KviOptionsWidgetInstanceEntry * KviOptionsInstanceManager::findInstanceEntry(const QObject * ptr,KviPointerList<KviOptionsWidgetInstanceEntry> * l)
+{
+ if(l)
+ {
+ for(KviOptionsWidgetInstanceEntry * e = l->first();e;e = l->next())
+ {
+ if(ptr == e->pWidget)return e;
+ if(e->pChildList)
+ {
+ KviOptionsWidgetInstanceEntry * e2 = findInstanceEntry(ptr,e->pChildList);
+ if(e2)return e2;
+ }
+ }
+ }
+ return 0;
+}
+
+KviOptionsWidgetInstanceEntry * KviOptionsInstanceManager::findInstanceEntry(const char * clName,KviPointerList<KviOptionsWidgetInstanceEntry> * l)
+{
+ if(l)
+ {
+ for(KviOptionsWidgetInstanceEntry * e = l->first();e;e = l->next())
+ {
+ if(kvi_strEqualCI(e->szClassName,clName))return e;
+ if(e->pChildList)
+ {
+ KviOptionsWidgetInstanceEntry * e2 = findInstanceEntry(clName,e->pChildList);
+ if(e2)return e2;
+ }
+ }
+ }
+ return 0;
+}
+
+KviOptionsWidgetInstanceEntry * KviOptionsInstanceManager::findInstanceEntry(const char * clName)
+{
+ return findInstanceEntry(clName,m_pInstanceTree);
+}
+
+
+#include "m_instances.moc"
+
+EOF
+######################################################################################################
+
diff --git a/src/modules/options/optw_antispam.cpp b/src/modules/options/optw_antispam.cpp
new file mode 100644
index 00000000..ba8180e6
--- /dev/null
+++ b/src/modules/options/optw_antispam.cpp
@@ -0,0 +1,64 @@
+//
+// File : optw_antispam.cpp
+// Creation date : Tue Oct 16 15:47:02 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "optw_antispam.h"
+
+#include <qlayout.h>
+
+#include "kvi_options.h"
+#include "kvi_locale.h"
+
+#include <qlabel.h>
+
+
+
+KviAntispamOptionsWidget::KviAntispamOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"antispam_options_widget")
+{
+ createLayout(3,1);
+
+ KviTalGroupBox *g = addGroupBox(0,0,0,0,1,Qt::Horizontal,__tr2qs_ctx("Enable Anti-spam For","options"));
+ m_b1 = addBoolSelector(g,__tr2qs_ctx("Private messages","options"),KviOption_boolUseAntiSpamOnPrivmsg);
+ connect(m_b1,SIGNAL(toggled(bool)),this,SLOT(reenableStuff(bool)));
+ m_b2 = addBoolSelector(g,__tr2qs_ctx("Private notices","options"),KviOption_boolUseAntiSpamOnNotice);
+ connect(m_b2,SIGNAL(toggled(bool)),this,SLOT(reenableStuff(bool)));
+
+ m_b3 = addBoolSelector(0,1,0,1,__tr2qs_ctx("Silent anti-spam (no warnings)","options"),KviOption_boolSilentAntiSpam);
+ m_sl = addStringListSelector(0,2,0,2,__tr2qs_ctx("Words considered spam:","options"),KviOption_stringlistSpamWords);
+
+ reenableStuff(true);
+
+ layout()->setRowStretch(2,1);
+}
+
+KviAntispamOptionsWidget::~KviAntispamOptionsWidget()
+{
+}
+
+void KviAntispamOptionsWidget::reenableStuff(bool)
+{
+ m_b3->setEnabled(m_b1->isChecked() || m_b2->isChecked());
+ m_sl->setEnabled(m_b1->isChecked() || m_b2->isChecked());
+}
+
+
+#include "m_optw_antispam.moc"
diff --git a/src/modules/options/optw_antispam.h b/src/modules/options/optw_antispam.h
new file mode 100644
index 00000000..28e51b41
--- /dev/null
+++ b/src/modules/options/optw_antispam.h
@@ -0,0 +1,47 @@
+#ifndef _OPTW_ANTISPAM_H_
+#define _OPTW_ANTISPAM_H_
+//
+// File : optw_antispam.h
+// Creation date : Tue Oct 16 15:47:03 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+
+#define KVI_OPTIONS_WIDGET_ICON_KviAntispamOptionsWidget KVI_SMALLICON_SPAM
+#define KVI_OPTIONS_WIDGET_NAME_KviAntispamOptionsWidget __tr2qs_no_lookup("Anti-spam")
+#define KVI_OPTIONS_WIDGET_PARENT_KviAntispamOptionsWidget KviProtectionOptionsWidget
+
+class KviAntispamOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviAntispamOptionsWidget(QWidget * parent);
+ ~KviAntispamOptionsWidget();
+protected:
+ KviBoolSelector * m_b1;
+ KviBoolSelector * m_b2;
+ KviBoolSelector * m_b3;
+ KviStringListSelector * m_sl;
+protected slots:
+ void reenableStuff(bool);
+};
+
+
+#endif //_OPTW_ANTISPAM_H_
diff --git a/src/modules/options/optw_avatar.cpp b/src/modules/options/optw_avatar.cpp
new file mode 100644
index 00000000..f93631fd
--- /dev/null
+++ b/src/modules/options/optw_avatar.cpp
@@ -0,0 +1,131 @@
+//=============================================================================
+//
+// File : optw_avatar.cpp
+// Creation date : Wed Nov 19 09:25:16 2005 GMT by Grifisx & Noldor
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "optw_avatar.h"
+
+#include "kvi_locale.h"
+#include "kvi_selectors.h"
+#include "kvi_options.h"
+
+#include "kvi_tal_tooltip.h"
+
+KviAvatarAdvancedOptionsWidget::KviAvatarAdvancedOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"avatar_advanced_options_widget")
+{
+ createLayout(4,1);
+ // AVATAR
+
+ // 1st Box
+ KviTalGroupBox *g = addGroupBox(0,0,0,0,1,Qt::Horizontal,__tr2qs_ctx("Scaling in userlist","options"));
+ KviBoolSelector *b = addBoolSelector(g,__tr2qs_ctx("Scale avatar images in userlist (recommended)","options"),KviOption_boolScaleAvatars);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(b,__tr2qs_ctx("<center>This option will force KVIrc to scale avatars" \
+ " shown in the userlist.<br>" \
+ "Avatars will be scaled to fit the " \
+ "constraints set below. Better keep this option on. :)</center>","options"));
+#endif
+ addBoolSelector(g,__tr2qs_ctx("Do not scale avatar if it is less than required size","options"),KviOption_boolDoNotStretchAvatars);
+
+ KviUIntSelector *u = addUIntSelector(g,__tr2qs_ctx("Image width:","options"),KviOption_uintAvatarScaleWidth,0,512,80,KVI_OPTION_BOOL(KviOption_boolScaleAvatars));
+ connect(b,SIGNAL(toggled(bool)),u,SLOT(setEnabled(bool)));
+ u = addUIntSelector(g,__tr2qs_ctx("Image height:","options"),KviOption_uintAvatarScaleHeight,0,512,80,KVI_OPTION_BOOL(KviOption_boolScaleAvatars));
+ connect(b,SIGNAL(toggled(bool)),u,SLOT(setEnabled(bool)));
+
+ //2nd
+ g = addGroupBox(0,1,0,1,1,Qt::Horizontal,__tr2qs_ctx("Scaling on load (and in user tooltips)","options"));
+ b = addBoolSelector(g,__tr2qs_ctx("Scale avatar images on image load","options"),KviOption_boolScaleAvatarsOnLoad);
+
+ u = addUIntSelector(g,__tr2qs_ctx("Image width:","options"),KviOption_uintScaleAvatarsOnLoadWidth,0,1280,80,KVI_OPTION_BOOL(KviOption_boolScaleAvatarsOnLoad));
+ connect(b,SIGNAL(toggled(bool)),u,SLOT(setEnabled(bool)));
+ u = addUIntSelector(g,__tr2qs_ctx("Image height:","options"),KviOption_uintScaleAvatarsOnLoadHeight,0,1280,80,KVI_OPTION_BOOL(KviOption_boolScaleAvatarsOnLoad));
+ connect(b,SIGNAL(toggled(bool)),u,SLOT(setEnabled(bool)));
+
+ // 2st Box
+ KviTalGroupBox *gs = addGroupBox(0,2,0,2,1,Qt::Horizontal,__tr2qs_ctx("Request CTCP","options"));
+ KviBoolSelector * bs = addBoolSelector(g,__tr2qs_ctx("Request missing avatars","options"),KviOption_boolRequestMissingAvatars);
+ KviUIntSelector * us = addUIntSelector(g,__tr2qs_ctx("Maximum requested file size:","options"),KviOption_uintMaximumRequestedAvatarSize,0,1048576,102400,KVI_OPTION_BOOL(KviOption_boolRequestMissingAvatars));
+
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(bs,
+ __tr2qs_ctx("<center>This option will cause KVIrc to send a DCC GET request " \
+ "when someone sets an avatar and there is no cached copy available.</center>","options"));
+#endif
+ us->setSuffix(__tr2qs_ctx(" bytes","options"));
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(us,
+ __tr2qs_ctx("<center>This is the maximum size for avatar images that " \
+ "will be automatically requested.<br>" \
+ "A reasonable value might be 102400 bytes (100 K).</center>","options"));
+#endif
+ connect(bs,SIGNAL(toggled(bool)),us,SLOT(setEnabled(bool)));
+
+ bs = addBoolSelector(gs,__tr2qs_ctx("Automatically accept incoming avatars","options"),KviOption_boolAutoAcceptIncomingAvatars);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(
+ bs,
+ __tr2qs_ctx("<center>This option will cause KVIrc to auto-accept " \
+ "DCC SEND requests for incoming avatars.<br>" \
+ "If you're using the \"Request missing avatars\" option " \
+ "above, enabling this may by useful.<br>" \
+ "Avatars will be saved in the local KVIrc directory.</center>","options"));
+#endif
+
+ bs = addBoolSelector(gs,__tr2qs_ctx("Remember avatars for registered users","options"),KviOption_boolSetLastAvatarAsDefaultForRegisteredUsers);
+
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(
+ bs,
+ __tr2qs_ctx("<center>Use a user's last known avatar by default " \
+ "(only for users that are registered).</center>","options"));
+#endif
+
+ us = addUIntSelector(gs,__tr2qs_ctx("Avatar offer timeout:","options"),KviOption_uintAvatarOfferTimeoutInSecs,1,99999,60);
+ us->setSuffix(__tr2qs_ctx(" sec","options"));
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(us,
+ __tr2qs_ctx("<center>This is the amount of time to make an avatar available for transfer when requested.<br>" \
+ "When someone sends a CTCP AVATAR request, " \
+ "KVIrc will reply with a CTCP AVATAR message containing the name and size " \
+ "of your avatar image.<br>" \
+ "A time-limited file offer is added for the image file " \
+ "to the requesting user.</center>","options"));
+#endif
+
+ bs = addBoolSelector(gs,__tr2qs_ctx("Ignore requests if no avatar is set","options"),KviOption_boolIgnoreChannelAvatarRequestsWhenNoAvatarSet);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(bs,
+ __tr2qs_ctx("This option will cause KVIrc to ignore channel CTCP AVATAR requests " \
+ "when you have no avatar set. This is usually a good practice since " \
+ "it helps in reducing traffic by not sending a reply that would be empty.","options"));
+#endif
+
+ addRowSpacer(0,3,0,3);
+}
+
+KviAvatarAdvancedOptionsWidget::~KviAvatarAdvancedOptionsWidget()
+{
+}
+
+
+#include "m_optw_avatar.moc"
diff --git a/src/modules/options/optw_avatar.h b/src/modules/options/optw_avatar.h
new file mode 100644
index 00000000..2235a659
--- /dev/null
+++ b/src/modules/options/optw_avatar.h
@@ -0,0 +1,45 @@
+#ifndef _OPTW_AVATAR_H_
+#define _OPTW_AVATAR_H_
+
+//=============================================================================
+//
+// File : optw_avatar.cpp
+// Creation date : Wed Nov 19 09:25:16 2005 GMT by Grifisx & Noldor
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_optionswidget.h"
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviAvatarAdvancedOptionsWidget KVI_SMALLICON_AVATAR
+#define KVI_OPTIONS_WIDGET_NAME_KviAvatarAdvancedOptionsWidget __tr2qs_no_lookup("Avatars")
+#define KVI_OPTIONS_WIDGET_PARENT_KviAvatarAdvancedOptionsWidget KviToolsOptionsWidget
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviAvatarAdvancedOptionsWidget 9
+#define KVI_OPTIONS_WIDGET_MINIMAL_USER_EXPERIENCE_LEVEL_KviAvatarAdvancedOptionsWidget 2
+
+class KviAvatarAdvancedOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviAvatarAdvancedOptionsWidget(QWidget * parent);
+ ~KviAvatarAdvancedOptionsWidget();
+};
+
+#endif //!_OPTW_AVATAR_H_
diff --git a/src/modules/options/optw_away.cpp b/src/modules/options/optw_away.cpp
new file mode 100644
index 00000000..151b8446
--- /dev/null
+++ b/src/modules/options/optw_away.cpp
@@ -0,0 +1,71 @@
+//
+// File : optw_away.cpp
+// Creation date : Mon Oct 29 15:37:16 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "optw_away.h"
+
+#include <qlayout.h>
+
+#include "kvi_options.h"
+#include "kvi_locale.h"
+
+//#warning "Info tips"
+
+
+KviAwayOptionsWidget::KviAwayOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"away_options_widget")
+{
+ createLayout(4,1);
+
+ addStringSelector(0,0,0,0, __tr2qs_ctx("Default away message:","options"), KviOption_stringAwayMessage);
+
+ addBoolSelector(0,1,0,1, __tr2qs_ctx("User input exits away mode","options"), KviOption_boolExitAwayOnInput);
+
+ KviTalGroupBox *g = addGroupBox(0,2,0,2,1,Qt::Horizontal,__tr2qs_ctx("Away Nickname","options"));
+ m_pEnableAwayNick = addBoolSelector(g,__tr2qs_ctx("Change nickname on away","options"),KviOption_boolChangeNickAway);
+ connect(m_pEnableAwayNick,SIGNAL(toggled(bool)),this,SLOT(enableCustomAwayText(bool)));
+
+ m_pEnableCustomAwayNick = addBoolSelector(g,__tr2qs_ctx("Use automatic nickname ([5 letters]AWAY)","options"),KviOption_boolAutoGeneratedAwayNick,KVI_OPTION_BOOL(KviOption_boolChangeNickAway));
+ connect(m_pEnableAwayNick,SIGNAL(toggled(bool)),m_pEnableCustomAwayNick,SLOT(setEnabled(bool)));
+ connect(m_pEnableCustomAwayNick,SIGNAL(toggled(bool)),this,SLOT(enableCustomAwayText(bool)));
+
+ // m_p <-- stands for pointer
+ // m_sz <-- stands for a string :)
+// m_szCustomAwayNick = addStringSelector(0,4,0,4,__tr2qs_ctx("Custom away nick","options"),KviOption_stringCustomAwayNick,KVI_OPTION_BOOL(KviOption_boolChangeNickAway) && !(KVI_OPTION_BOOL(KviOption_boolAutoGeneratedAwayNick)));
+
+ m_pCustomAwayNick = addStringSelector(g,__tr2qs_ctx("Custom nickname (%%nick%% means a current nick):","options"),KviOption_stringCustomAwayNick,KVI_OPTION_BOOL(KviOption_boolChangeNickAway) && !(KVI_OPTION_BOOL(KviOption_boolAutoGeneratedAwayNick)));
+
+ addRowSpacer(0,3,0,3);
+}
+
+KviAwayOptionsWidget::~KviAwayOptionsWidget()
+{
+}
+
+void KviAwayOptionsWidget::enableCustomAwayText(bool)
+{
+ m_pCustomAwayNick->setEnabled(m_pEnableAwayNick->isChecked() && !(m_pEnableCustomAwayNick->isChecked()));
+
+}
+
+
+#include "m_optw_away.moc"
diff --git a/src/modules/options/optw_away.h b/src/modules/options/optw_away.h
new file mode 100644
index 00000000..e8892faa
--- /dev/null
+++ b/src/modules/options/optw_away.h
@@ -0,0 +1,46 @@
+#ifndef _OPTW_AWAY_H_
+#define _OPTW_AWAY_H_
+//
+// File : optw_away.h
+// Creation date : Mon Oct 29 15:37:18 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+
+#define KVI_OPTIONS_WIDGET_ICON_KviAwayOptionsWidget KVI_SMALLICON_AWAY
+#define KVI_OPTIONS_WIDGET_NAME_KviAwayOptionsWidget __tr2qs_no_lookup("Away")
+#define KVI_OPTIONS_WIDGET_PARENT_KviAwayOptionsWidget KviToolsOptionsWidget
+
+class KviAwayOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviAwayOptionsWidget(QWidget * parent);
+ ~KviAwayOptionsWidget();
+protected:
+ KviBoolSelector * m_pEnableAwayNick;
+ KviBoolSelector * m_pEnableCustomAwayNick;
+ KviStringSelector * m_pCustomAwayNick;
+public slots:
+ void enableCustomAwayText(bool);
+
+};
+
+#endif //_OPTW_AWAY_H_
diff --git a/src/modules/options/optw_connection.cpp b/src/modules/options/optw_connection.cpp
new file mode 100644
index 00000000..608b47bd
--- /dev/null
+++ b/src/modules/options/optw_connection.cpp
@@ -0,0 +1,321 @@
+//=============================================================================
+//
+// File : optw_connection.cpp
+// Creation date : Sat Nov 24 04:25:16 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "optw_connection.h"
+
+#include "kvi_settings.h"
+#include "kvi_locale.h"
+#include "kvi_options.h"
+#include "kvi_iconmanager.h"
+#include <qradiobutton.h>
+
+
+KviConnectionOptionsWidget::KviConnectionOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"connection_options_widget")
+{
+
+ createLayout(2,1);
+ KviTalGroupBox *gbox = addGroupBox(0,0,0,0,1,Qt::Horizontal,__tr2qs_ctx("On Disconnect","options"));
+
+
+ KviBoolSelector *b1 = addBoolSelector(gbox,__tr2qs_ctx("Keep channels open","options"),KviOption_boolKeepChannelsOpenOnDisconnect,true);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b1,__tr2qs_ctx("<center>This option will cause KVIrc to keep channels open after disconnect.</center>","options"));
+#endif
+
+ b1 = addBoolSelector(gbox,__tr2qs_ctx("Keep queries open","options"),KviOption_boolKeepQueriesOpenOnDisconnect,true);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b1,__tr2qs_ctx("<center>This option will cause KVIrc to keep queries open after disconnect.</center>","options"));
+#endif
+
+ gbox = addGroupBox(0,1,0,1,1,Qt::Horizontal,__tr2qs_ctx("On Unexpected Disconnect","options"));
+
+
+ b1 = addBoolSelector(gbox,__tr2qs_ctx("Keep channels open","options"),KviOption_boolKeepChannelsOpenOnUnexpectedDisconnect,true);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b1,__tr2qs_ctx("<center>This option will cause KVIrc to keep channels open after an unexpected disconnect.</center>","options"));
+#endif
+
+ b1 = addBoolSelector(gbox,__tr2qs_ctx("Keep queries open","options"),KviOption_boolKeepQueriesOpenOnUnexpectedDisconnect,true);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b1,__tr2qs_ctx("<center>This option will cause KVIrc to keep queries open after an unexpected disconnect.</center>","options"));
+#endif
+
+ b1 = addBoolSelector(gbox,__tr2qs_ctx("Rejoin channels after reconnect","options"),KviOption_boolRejoinChannelsAfterReconnect,KVI_OPTION_BOOL(KviOption_boolAutoReconnectOnUnexpectedDisconnect));
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b1,__tr2qs_ctx("<center>This option will cause KVIrc to rejoin channels after a successful reconnect attempt.</center>","options"));
+#endif
+ b1 = addBoolSelector(gbox,__tr2qs_ctx("Reopen queries after reconnect","options"),KviOption_boolReopenQueriesAfterReconnect,KVI_OPTION_BOOL(KviOption_boolAutoReconnectOnUnexpectedDisconnect));
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b1,__tr2qs_ctx("<center>This option will cause KVIrc to reopen query windows after a successful reconnect attempt.</center>","options"));
+#endif
+
+// gbox = addGroupBox(0,1,0,1,1,Qt::Horizontal,__tr2qs_ctx("On Unexpected Disconnect","options"));
+ KviBoolSelector * b = addBoolSelector(gbox,__tr2qs_ctx("Automatically reconnect","options"),KviOption_boolAutoReconnectOnUnexpectedDisconnect);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,__tr2qs_ctx("<center>This option will enable auto-reconnecting after an unexpected disconnect. " \
+ "An unexpected disconnect is the <b>termination</b> of a <b>fully connected IRC session</b> " \
+ "that was <b>not requested by the user</b> by the means of the QUIT message." \
+ "<p><b>Warning:</b> If you use /RAW to send a QUIT message to the server, " \
+ "this option will not behave correctly, since does not detect the outgoing " \
+ "QUIT message and will attempt to reconnect after the server has closed the connection. " \
+ "For this reason, always use the /QUIT command to close your connections. " \
+ "This option may also behave incorrectly with bouncers that support " \
+ "detaching, in this case a solution could be to prepare an alias that sends the " \
+ "bouncer \"detach\" command immediately before the \"quit\" command.<br>" \
+ "<tt>alias(bncdetach){ raw bouncer detach; quit; }</tt></p></center>","options"));
+#endif
+ KviUIntSelector * u = addUIntSelector(gbox,__tr2qs_ctx("Maximum attempts (0: unlimited):","options"),
+ KviOption_uintMaxAutoReconnectAttempts,0,100,5,
+ KVI_OPTION_BOOL(KviOption_boolAutoReconnectOnUnexpectedDisconnect));
+ connect(b,SIGNAL(toggled(bool)),u,SLOT(setEnabled(bool)));
+
+ u = addUIntSelector(gbox,__tr2qs_ctx("Delay between attempts:","options"),
+ KviOption_uintAutoReconnectDelay,0,86400,5,
+ KVI_OPTION_BOOL(KviOption_boolAutoReconnectOnUnexpectedDisconnect));
+ u->setSuffix(__tr2qs_ctx(" sec","options"));
+ connect(b,SIGNAL(toggled(bool)),u,SLOT(setEnabled(bool)));
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(u,__tr2qs_ctx("<center>Minimum value: <b>0 sec</b><br>Maximum value: <b>86400 sec</b></center>","options"));
+#endif
+
+
+
+
+ addRowSpacer(0,2,4,2);
+}
+
+
+KviConnectionOptionsWidget::~KviConnectionOptionsWidget()
+{
+}
+
+
+
+
+KviSSLOptionsWidget::KviSSLOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"ssl_options_widget")
+{
+#ifdef COMPILE_SSL_SUPPORT
+ createLayout(3,1);
+
+ KviTalGroupBox * gbox = addGroupBox(0,0,0,0,1,Qt::Horizontal,__tr2qs_ctx("Certificate","options"));
+
+ KviBoolSelector * b = addBoolSelector(gbox,__tr2qs_ctx("Use SSL certificate (PEM format only)","options"),
+ &(KVI_OPTION_BOOL(KviOption_boolUseSSLCertificate)),true);
+ KviFileSelector * f = addFileSelector(gbox,__tr2qs_ctx("Certificate location:","options"),
+ &(KVI_OPTION_STRING(KviOption_stringSSLCertificatePath)),KVI_OPTION_BOOL(KviOption_boolUseSSLCertificate));
+ connect(b,SIGNAL(toggled(bool)),f,SLOT(setEnabled(bool)));
+ KviPasswordSelector * p = new KviPasswordSelector(gbox,__tr2qs_ctx("Certificate password:","options"),
+ &(KVI_OPTION_STRING(KviOption_stringSSLCertificatePass)),KVI_OPTION_BOOL(KviOption_boolUseSSLCertificate));
+ connect(b,SIGNAL(toggled(bool)),p,SLOT(setEnabled(bool)));
+
+ gbox = addGroupBox(0,1,0,1,1,Qt::Horizontal,__tr2qs_ctx("Private Key","options"));
+ b = addBoolSelector(gbox,__tr2qs_ctx("Use SSL private key","options"),
+ &(KVI_OPTION_BOOL(KviOption_boolUseSSLPrivateKey)),true);
+ f = addFileSelector(gbox,__tr2qs_ctx("Private key location:","options"),
+ &(KVI_OPTION_STRING(KviOption_stringSSLPrivateKeyPath)),KVI_OPTION_BOOL(KviOption_boolUseSSLPrivateKey));
+ connect(b,SIGNAL(toggled(bool)),f,SLOT(setEnabled(bool)));
+ p = addPasswordSelector(gbox,__tr2qs_ctx("Private key password:","options"),
+ &(KVI_OPTION_STRING(KviOption_stringSSLPrivateKeyPass)),KVI_OPTION_BOOL(KviOption_boolUseSSLPrivateKey));
+ connect(b,SIGNAL(toggled(bool)),p,SLOT(setEnabled(bool)));
+ addRowSpacer(0,2,0,2);
+#else
+ createLayout(1,1);
+ addLabel(0,0,0,0,__tr2qs_ctx("This executable has no SSL support.","options"));
+#endif
+}
+
+KviSSLOptionsWidget::~KviSSLOptionsWidget()
+{
+}
+
+
+
+
+
+
+KviTransportOptionsWidget::KviTransportOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"transport_options_widget")
+{
+ createLayout(5,1);
+ KviUIntSelector * u;
+
+ KviTalGroupBox * g = addGroupBox(0,0,0,0,1,Qt::Horizontal,__tr2qs_ctx("Timeout Values","options"),this);
+ u = addUIntSelector(g,__tr2qs_ctx("Connect timeout:","options"),KviOption_uintIrcSocketTimeout,5,6000,60);
+ u->setSuffix(__tr2qs_ctx(" sec","options"));
+ u = addUIntSelector(g,__tr2qs_ctx("Outgoing data queue flush timeout:","options"),KviOption_uintSocketQueueFlushTimeout,100,2000,500);
+ u->setSuffix(__tr2qs_ctx(" msec","options"));
+ KviBoolSelector * b = addBoolSelector(0,1,0,1,__tr2qs_ctx("Limit outgoing traffic","options"),KviOption_boolLimitOutgoingTraffic);
+ u = addUIntSelector(0,2,0,2,__tr2qs_ctx("Limit to 1 message every:","options"),
+ KviOption_uintOutgoingTrafficLimitUSeconds,10000,2000000,10000000,KVI_OPTION_BOOL(KviOption_boolLimitOutgoingTraffic));
+ u->setSuffix(__tr2qs_ctx(" usec","options"));
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(u,__tr2qs_ctx("<center>Minimum value: <b>10000 usec</b><br>Maximum value: <b>10000000 usec</b></center>","options"));
+#endif
+ connect(b,SIGNAL(toggled(bool)),u,SLOT(setEnabled(bool)));
+
+ g = addGroupBox(0,3,0,3,2,Qt::Horizontal,__tr2qs_ctx("Network Interfaces","options"));
+
+ b = addBoolSelector(g,__tr2qs_ctx("Bind IPv4 connections to:","options"),KviOption_boolBindIrcIpV4ConnectionsToSpecifiedAddress);
+ KviStringSelector * s = addStringSelector(g,"",KviOption_stringIpV4ConnectionBindAddress,KVI_OPTION_BOOL(KviOption_boolBindIrcIpV4ConnectionsToSpecifiedAddress));
+ connect(b,SIGNAL(toggled(bool)),s,SLOT(setEnabled(bool)));
+#ifdef COMPILE_IPV6_SUPPORT
+ b = addBoolSelector(g,__tr2qs_ctx("Bind IPv6 connections to:","options"),KviOption_boolBindIrcIpV6ConnectionsToSpecifiedAddress);
+ s = addStringSelector(g,"",KviOption_stringIpV6ConnectionBindAddress,KVI_OPTION_BOOL(KviOption_boolBindIrcIpV6ConnectionsToSpecifiedAddress));
+ connect(b,SIGNAL(toggled(bool)),s,SLOT(setEnabled(bool)));
+#endif //!COMPILE_IPV6_SUPPORT
+
+ addRowSpacer(0,4,0,4);
+}
+
+KviTransportOptionsWidget::~KviTransportOptionsWidget()
+{
+}
+
+
+
+
+
+
+
+
+
+KviIdentOptionsWidget::KviIdentOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"ident_options_widget")
+{
+ createLayout(6,1);
+
+ m_pEnableIdent = addBoolSelector(0,0,0,0,__tr2qs_ctx("Enable ident service (bad practice on UNIX!)","options"),KviOption_boolUseIdentService);
+ connect(m_pEnableIdent,SIGNAL(toggled(bool)),this,SLOT(enableIpv4InIpv6(bool)));
+
+ KviTalGroupBox * gbox = addGroupBox(0,1,0,1,1,Qt::Horizontal,__tr2qs_ctx("Output verbosity","options"),KVI_OPTION_BOOL(KviOption_boolUseIdentService));
+ connect(m_pEnableIdent,SIGNAL(toggled(bool)),gbox,SLOT(setEnabled(bool)));
+
+ addLabel(gbox,__tr2qs_ctx("Output identd messages to:","options"));
+
+ m_pActiveRadio = new QRadioButton(__tr2qs_ctx("Active window","options"),gbox);
+ m_pConsoleRadio = new QRadioButton(__tr2qs_ctx("Console","options"),gbox);
+ m_pQuietRadio = new QRadioButton(__tr2qs_ctx("Do not show any identd messages","options"),gbox);
+
+ switch(KVI_OPTION_UINT(KviOption_uintIdentdOutputMode))
+ {
+ case KviIdentdOutputMode::Quiet :
+ m_pQuietRadio->setChecked(true);
+ break;
+ case KviIdentdOutputMode::ToConsole :
+ m_pConsoleRadio->setChecked(true);
+ break;
+ case KviIdentdOutputMode::ToActiveWindow :
+ m_pActiveRadio->setChecked(true);
+ break;
+ }
+
+ gbox = addGroupBox(0,2,0,2,1,Qt::Horizontal,__tr2qs_ctx("Configuration","options"),KVI_OPTION_BOOL(KviOption_boolUseIdentService));
+
+ KviBoolSelector *b = addBoolSelector(gbox,__tr2qs_ctx("Enable ident service only while connecting to server","options"),KviOption_boolUseIdentServiceOnlyOnConnect);
+ connect(m_pEnableIdent,SIGNAL(toggled(bool)),b,SLOT(setEnabled(bool)));
+
+ KviStringSelector * s = addStringSelector(gbox,__tr2qs_ctx("Ident username:","options"),
+ KviOption_stringIdentdUser,KVI_OPTION_BOOL(KviOption_boolUseIdentService));
+
+ KviUIntSelector * u = addUIntSelector(gbox,__tr2qs_ctx("Service port:","options"),
+ KviOption_uintIdentdPort,0,65535,113,KVI_OPTION_BOOL(KviOption_boolUseIdentService));
+ connect(m_pEnableIdent,SIGNAL(toggled(bool)),u,SLOT(setEnabled(bool)));
+ connect(m_pEnableIdent,SIGNAL(toggled(bool)),gbox,SLOT(setEnabled(bool)));
+
+ gbox = addGroupBox(0,3,0,3,1,Qt::Horizontal,__tr2qs_ctx("IPv6 Settings","options"),KVI_OPTION_BOOL(KviOption_boolUseIdentService));
+ m_pEnableIpv6 = addBoolSelector(gbox,__tr2qs_ctx("Enable service for IPv6","options"),
+ KviOption_boolIdentdEnableIpV6,
+ KVI_OPTION_BOOL(KviOption_boolUseIdentService));
+#ifdef COMPILE_IPV6_SUPPORT
+ connect(m_pEnableIdent,SIGNAL(toggled(bool)),m_pEnableIpv6,SLOT(setEnabled(bool)));
+ connect(m_pEnableIpv6,SIGNAL(toggled(bool)),this,SLOT(enableIpv4InIpv6(bool)));
+#else
+ m_pEnableIpv6->setEnabled(false);
+#endif
+ m_pIpv4InIpv6 = addBoolSelector(gbox,__tr2qs_ctx("IP stack treats IPv4 as part of IPv6 namespace","options"),
+ KviOption_boolIdentdIpV6ContainsIpV4,
+ KVI_OPTION_BOOL(KviOption_boolUseIdentService) && KVI_OPTION_BOOL(KviOption_boolIdentdEnableIpV6));
+ connect(m_pEnableIdent,SIGNAL(toggled(bool)),gbox,SLOT(setEnabled(bool)));
+
+ addLabel(0,4,0,4,
+#ifdef COMPILE_ON_WINDOWS
+ __tr2qs_ctx("<p><b>Warning:</b><br>" \
+ "This is a <b>non RFC 1413 compliant</b> ident daemon that implements " \
+ "only a limited subset of the Identification Protocol specifications. If it is possible, install a " \
+ "real ident daemon.</p>","options")
+#else
+ __tr2qs_ctx("<p><b>Warning:</b><br>" \
+ "This is a <b>non RFC 1413 compliant</b> ident daemon that implements " \
+ "only a limited subset of the Identification Protocol specifications.<br>" \
+ "On UNIX, you may also need root privileges to bind to the auth port (113).<br>" \
+ "It is <b>highly recommended</b> that a <b>real</b> system-wide ident daemon be used instead, "\
+ "or none at all if ident is not required.</p>","options")
+#endif
+ );
+
+ addRowSpacer(0,5,0,5);
+}
+
+KviIdentOptionsWidget::~KviIdentOptionsWidget()
+{
+}
+
+void KviIdentOptionsWidget::commit()
+{
+ KviOptionsWidget::commit();
+ if(m_pConsoleRadio->isOn())
+ KVI_OPTION_UINT(KviOption_uintIdentdOutputMode)=KviIdentdOutputMode::ToConsole;
+ if(m_pActiveRadio->isOn())
+ KVI_OPTION_UINT(KviOption_uintIdentdOutputMode)=KviIdentdOutputMode::ToActiveWindow;
+ if(m_pQuietRadio->isOn())
+ KVI_OPTION_UINT(KviOption_uintIdentdOutputMode)=KviIdentdOutputMode::Quiet;
+}
+
+void KviIdentOptionsWidget::enableIpv4InIpv6(bool)
+{
+#ifdef COMPILE_IPV6_SUPPORT
+ m_pIpv4InIpv6->setEnabled(m_pEnableIdent->isChecked() && m_pEnableIpv6->isChecked());
+#endif
+}
+
+
+
+
+
+
+
+KviConnectionAdvancedOptionsWidget::KviConnectionAdvancedOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"connection_advanced_options_widget")
+{
+
+}
+
+KviConnectionAdvancedOptionsWidget::~KviConnectionAdvancedOptionsWidget()
+{
+
+}
+
+#include "m_optw_connection.moc"
diff --git a/src/modules/options/optw_connection.h b/src/modules/options/optw_connection.h
new file mode 100644
index 00000000..189ee4a0
--- /dev/null
+++ b/src/modules/options/optw_connection.h
@@ -0,0 +1,116 @@
+#ifndef _OPTW_CONNECTION_H_
+#define _OPTW_CONNECTION_H_
+//
+// File : optw_connection.h
+// Creation date : Sat Nov 24 04:25:12 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+
+#define KVI_OPTIONS_WIDGET_ICON_KviConnectionOptionsWidget KVI_SMALLICON_WORLD
+#define KVI_OPTIONS_WIDGET_NAME_KviConnectionOptionsWidget __tr2qs_no_lookup("Connection")
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviConnectionOptionsWidget 98000
+
+class KviConnectionOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviConnectionOptionsWidget(QWidget * parent);
+ ~KviConnectionOptionsWidget();
+};
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviConnectionAdvancedOptionsWidget KVI_SMALLICON_WORLD
+#define KVI_OPTIONS_WIDGET_NAME_KviConnectionAdvancedOptionsWidget __tr2qs_no_lookup("Advanced")
+#define KVI_OPTIONS_WIDGET_PARENT_KviConnectionAdvancedOptionsWidget KviConnectionOptionsWidget
+#define KVI_OPTIONS_WIDGET_CONTAINER_KviConnectionAdvancedOptionsWidget true
+
+class KviConnectionAdvancedOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviConnectionAdvancedOptionsWidget(QWidget * parent);
+ ~KviConnectionAdvancedOptionsWidget();
+};
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviSSLOptionsWidget KVI_SMALLICON_SSL
+#define KVI_OPTIONS_WIDGET_NAME_KviSSLOptionsWidget __tr2qs_no_lookup("SSL")
+#define KVI_OPTIONS_WIDGET_PARENT_KviSSLOptionsWidget KviConnectionAdvancedOptionsWidget
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviSSLOptionsWidget 30
+
+
+
+class KviSSLOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviSSLOptionsWidget(QWidget * parent);
+ ~KviSSLOptionsWidget();
+};
+
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviTransportOptionsWidget KVI_SMALLICON_SOCKETERROR
+#define KVI_OPTIONS_WIDGET_NAME_KviTransportOptionsWidget __tr2qs_no_lookup("Socket")
+#define KVI_OPTIONS_WIDGET_PARENT_KviTransportOptionsWidget KviConnectionAdvancedOptionsWidget
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviTransportOptionsWidget 20
+
+
+class KviTransportOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviTransportOptionsWidget(QWidget * parent);
+ ~KviTransportOptionsWidget();
+};
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviIdentOptionsWidget KVI_SMALLICON_IDENT
+#define KVI_OPTIONS_WIDGET_NAME_KviIdentOptionsWidget __tr2qs_no_lookup("Ident Service")
+#define KVI_OPTIONS_WIDGET_PARENT_KviIdentOptionsWidget KviConnectionAdvancedOptionsWidget
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviIdentOptionsWidget 10
+
+class QRadioButton;
+
+class KviIdentOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviIdentOptionsWidget(QWidget * parent);
+ ~KviIdentOptionsWidget();
+
+ virtual void commit();
+protected:
+ KviBoolSelector * m_pEnableIdent;
+ KviBoolSelector * m_pEnableIpv6;
+ KviBoolSelector * m_pIpv4InIpv6;
+
+ QRadioButton *m_pConsoleRadio;
+ QRadioButton *m_pActiveRadio;
+ QRadioButton *m_pQuietRadio;
+public slots:
+ void enableIpv4InIpv6(bool);
+};
+
+
+
+
+#endif //_OPTW_CONNECTION_H_
diff --git a/src/modules/options/optw_ctcp.cpp b/src/modules/options/optw_ctcp.cpp
new file mode 100644
index 00000000..3913751e
--- /dev/null
+++ b/src/modules/options/optw_ctcp.cpp
@@ -0,0 +1,90 @@
+//
+// File : optw_ctcp.cpp
+// Creation date : Sun Dec 2 20:40:43 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "optw_ctcp.h"
+
+#include "kvi_settings.h"
+#include "kvi_locale.h"
+#include "kvi_options.h"
+
+//#ifdef COMPILE_INFO_TIPS
+// #include "kvi_tal_tooltip.h"
+//#endif
+
+KviCtcpOptionsWidget::KviCtcpOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"ctcp_options_widget")
+{
+
+ createLayout(4,1);
+
+ QLabel * l;
+ l = addLabel(0,0,0,0,__tr2qs_ctx("<center><b>Settings for CTCP.</b></center>"\
+ "<p>The <b>Client-To-Client Protocol</b> (CTCP) " \
+ "is used to transmit special control messages over an IRC connection. " \
+ "These messages can request information from clients or negotiate file transfers." \
+ "<br><br></p>","options"));
+
+
+ KviTalGroupBox *gs = addGroupBox(0,1,0,1,1,Qt::Horizontal,__tr2qs_ctx("CTCP Replies","options"));
+ KviStringSelector * s = addStringSelector(gs, __tr2qs_ctx("Append to VERSION reply:","options"),KviOption_stringCtcpVersionPostfix);
+
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(s,
+ __tr2qs_ctx("<center>This text will be appended to the CTCP VERSION reply.<br>For example, you can place a script name here.</center>","options"));
+#endif
+
+ s = addStringSelector(gs, __tr2qs_ctx("Append to SOURCE reply:","options"),KviOption_stringCtcpSourcePostfix);
+
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(s,
+ __tr2qs_ctx("<center>This text will be appended to the CTCP SOURCE reply.<br>For example, you can place the source URL for a script here.</center>","options"));
+#endif
+
+// s = addStringSelector(gs, __tr2qs_ctx("USERINFO reply:","options"),KviOption_stringCtcpUserinfoReply);
+
+//#ifdef COMPILE_INFO_TIPS
+// mergeTip(s,
+// __tr2qs_ctx("<center>This is the CTCP USERINFO reply.<br>It can contain some information about yourself.</center>","options"));
+//#endif
+
+ s = addStringSelector(gs, __tr2qs_ctx("PAGE reply:","options"),KviOption_stringCtcpPageReply);
+
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(s,
+ __tr2qs_ctx("<center>This is the CTCP PAGE reply.<br>It should contain some sort of acknowledgement for CTCP PAGE messages.</center>","options"));
+#endif
+
+ addBoolSelector(gs,__tr2qs_ctx("Show the CTCP replies in the active window","options"),KviOption_boolCtcpRepliesToActiveWindow);
+
+ addBoolSelector(gs,__tr2qs_ctx("Show dialog for CTCP page requests","options"),KviOption_boolShowDialogOnCtcpPage);
+
+ addRowSpacer(0,3,0,3);
+
+}
+
+
+KviCtcpOptionsWidget::~KviCtcpOptionsWidget()
+{
+}
+
+
+#include "m_optw_ctcp.moc"
diff --git a/src/modules/options/optw_ctcp.h b/src/modules/options/optw_ctcp.h
new file mode 100644
index 00000000..55bdb238
--- /dev/null
+++ b/src/modules/options/optw_ctcp.h
@@ -0,0 +1,41 @@
+#ifndef _OPTW_CTCP_H_
+#define _OPTW_CTCP_H_
+//
+// File : optw_ctcp.h
+// Creation date : Sun Dec 2 20:40:43 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+
+#define KVI_OPTIONS_WIDGET_ICON_KviCtcpOptionsWidget KVI_SMALLICON_CTCPREQUESTREPLIED
+#define KVI_OPTIONS_WIDGET_NAME_KviCtcpOptionsWidget __tr2qs_no_lookup("CTCP")
+#define KVI_OPTIONS_WIDGET_PARENT_KviCtcpOptionsWidget KviToolsOptionsWidget
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviCtcpOptionsWidget 70000
+
+class KviCtcpOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviCtcpOptionsWidget(QWidget * parent);
+ ~KviCtcpOptionsWidget();
+};
+
+
+#endif //_OPTW_CTCP_H_
diff --git a/src/modules/options/optw_ctcpfloodprotection.cpp b/src/modules/options/optw_ctcpfloodprotection.cpp
new file mode 100644
index 00000000..f814858e
--- /dev/null
+++ b/src/modules/options/optw_ctcpfloodprotection.cpp
@@ -0,0 +1,116 @@
+//
+// File : optw_ctcpfloodprotection.cpp
+// Creation date : Sun Jan 21 2001 14:35:06 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "optw_ctcpfloodprotection.h"
+
+#include <qlayout.h>
+
+#include "kvi_options.h"
+#include "kvi_locale.h"
+
+#include <qlabel.h>
+
+/*
+ @doc: ctcpfloodprotectionoptions
+ @type:
+ widget
+ @title:
+ CTCP flood protection options
+ @short:
+ Protection against CTCP flooding
+ @keyterms:
+ ctcp flood
+ @body:
+ Here, you can configure the CTCP flood protection system.[br]
+ The CTCP engine in IRC clients may be subject to an attack, called "CTCP flooding".[br]
+ Basically, the attackers (usually there is more than one offending client) sends a stream
+ of CTCP requests to the victim's client, and the client attempts to respond to all requests
+ by sending a stream of replies to the server, which causes the server to disconnect the user
+ due to "excess flood" for sending too many messages before the server can process them.[br]
+ Many user defined scripts choose to completely ignore all the CTCP requests in order to prevent such attacks.[br]
+ KVIrc offers an alternative method that allows you to take advantage of the CTCP protocol
+ and at the same time prevent the flood attacks.[br]
+ The method is really simple: The client will only respond to a limited number of CTCP requests within a
+ specified time interval.[br]
+ The "Use flood protection" option enables this protection method.[br]
+ In the "Allowed up to" field you should enter the maximum number of CTCP requests that KVIrc should
+ respond to within the interval of time defined in the second field.[br]
+ A strong protection against floods would be replying to 4 requests every 20 seconds.[br]
+ The minimum effective setting is about 3 messages every 6 seconds.[br]
+ Please note that 3 messages every 6 seconds is NOT the same as 10 messages every 20 seconds;
+ the first setting would allow 3 requests within one second, but the client would
+ ignore all the requests for the next 5 seconds, the second setting would allow 10 messages within one second
+ and ignore everything for the next 19 seconds. Therefore, 3/6 is a safer setting.[br]
+ The maximum protection you can set is 0 messages within any number of seconds; in that case any
+ CTCP request will be considered a flood and ignored.[br]
+ [br][br]
+ You can also decide to ignore specific CTCP requests. For example, if you don't want to reply to PING
+ requests, just select "PING" under the "Ignored Requests" section.[br]
+ [br][br]
+ Some specific protection options can be set also in other CTCP options sections:
+ see the [widget:ctcpavatarprotooptions]CTCP AVATAR protocol options[/widget] and [widget:ctcpdccprotooptions]CTCP DCC protocol options[/widget].[br]
+*/
+
+
+KviCtcpFloodProtectionOptionsWidget::KviCtcpFloodProtectionOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"ctcpfloodprotection_options_widget")
+{
+ createLayout(4,2);
+
+ KviBoolSelector * b = addBoolSelector(0,0,1,0,__tr2qs_ctx("Use flood protection (recommended)","options"),KviOption_boolUseCtcpFloodProtection);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,__tr2qs_ctx("<center>This option makes KVIrc only respond to a limited number of CTCP requests within a specified time interval, to prevent \"flooding\" CTCP messages.</center>","options"));
+#endif
+ KviUIntSelector * u = addUIntSelector(0,1,0,1,__tr2qs_ctx("Allow up to:","options"),KviOption_uintMaxCtcpRequests,0,10000,3,KVI_OPTION_BOOL(KviOption_boolUseCtcpFloodProtection));
+ u->setSuffix(__tr2qs_ctx(" requests","options"));
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(u,__tr2qs_ctx("<center>Minimum value: <b>0 requests</b><br>Maximum value: <b>10000 requests</b></center>","options"));
+#endif
+ connect(b,SIGNAL(toggled(bool)),u,SLOT(setEnabled(bool)));
+ u = addUIntSelector(1,1,1,1,__tr2qs_ctx("within:","options"),KviOption_uintCtcpFloodCheckInterval,1,3600,6,KVI_OPTION_BOOL(KviOption_boolUseCtcpFloodProtection));
+ u->setSuffix(__tr2qs_ctx(" sec","options"));
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(u,__tr2qs_ctx("<center>Minimum value: <b>1 sec</b><br>Maximum value: <b>3600 sec</b></center>","options"));
+#endif
+ connect(b,SIGNAL(toggled(bool)),u,SLOT(setEnabled(bool)));
+
+ KviTalGroupBox * g = addGroupBox(0,2,1,2,2,Qt::Horizontal,__tr2qs_ctx("Ignored Requests","options"));
+ addBoolSelector(g,__tr2qs_ctx("PING","options"),KviOption_boolIgnoreCtcpPing);
+ addBoolSelector(g,__tr2qs_ctx("FINGER","options"),KviOption_boolIgnoreCtcpFinger);
+ addBoolSelector(g,__tr2qs_ctx("CLIENTINFO","options"),KviOption_boolIgnoreCtcpClientinfo);
+ addBoolSelector(g,__tr2qs_ctx("USERINFO","options"),KviOption_boolIgnoreCtcpUserinfo);
+ addBoolSelector(g,__tr2qs_ctx("VERSION","options"),KviOption_boolIgnoreCtcpVersion);
+ addBoolSelector(g,__tr2qs_ctx("SOURCE","options"),KviOption_boolIgnoreCtcpSource);
+ addBoolSelector(g,__tr2qs_ctx("TIME","options"),KviOption_boolIgnoreCtcpTime);
+ addBoolSelector(g,__tr2qs_ctx("PAGE","options"),KviOption_boolIgnoreCtcpPage);
+ addBoolSelector(g,__tr2qs_ctx("AVATAR","options"),KviOption_boolIgnoreCtcpAvatar);
+ addBoolSelector(g,__tr2qs_ctx("DCC/TDCC","options"),KviOption_boolIgnoreCtcpDcc);
+
+ addRowSpacer(0,3,1,3);
+}
+
+KviCtcpFloodProtectionOptionsWidget::~KviCtcpFloodProtectionOptionsWidget()
+{
+}
+
+
+#include "m_optw_ctcpfloodprotection.moc"
diff --git a/src/modules/options/optw_ctcpfloodprotection.h b/src/modules/options/optw_ctcpfloodprotection.h
new file mode 100644
index 00000000..43f28fbe
--- /dev/null
+++ b/src/modules/options/optw_ctcpfloodprotection.h
@@ -0,0 +1,41 @@
+#ifndef _OPTW_CTCPFLOODPROTECTION_H_
+#define _OPTW_CTCPFLOODPROTECTION_H_
+
+//
+// File : optw_ctcpfloodprotection.h
+// Creation date : Sun Jan 21 2000 14:34:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+
+#define KVI_OPTIONS_WIDGET_ICON_KviCtcpFloodProtectionOptionsWidget KVI_SMALLICON_CTCPREQUESTFLOOD
+#define KVI_OPTIONS_WIDGET_NAME_KviCtcpFloodProtectionOptionsWidget __tr2qs_no_lookup("Flood Protection")
+#define KVI_OPTIONS_WIDGET_PARENT_KviCtcpFloodProtectionOptionsWidget KviProtectionOptionsWidget
+
+class KviCtcpFloodProtectionOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+// Q_CLASSINFO("help","ctcpfloodprotectionoptions")
+public:
+ KviCtcpFloodProtectionOptionsWidget(QWidget * parent);
+ ~KviCtcpFloodProtectionOptionsWidget();
+};
+
+#endif //!_OPTW_CTCPFLOODPROTECTION_H_
diff --git a/src/modules/options/optw_dcc.cpp b/src/modules/options/optw_dcc.cpp
new file mode 100644
index 00000000..1b792da3
--- /dev/null
+++ b/src/modules/options/optw_dcc.cpp
@@ -0,0 +1,393 @@
+//=============================================================================
+//
+// File : optw_dcc.cpp
+// Creation date : Fri Aug 17 22:08:09 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "optw_dcc.h"
+
+#include <qlayout.h>
+
+#include "kvi_options.h"
+#include "kvi_locale.h"
+
+//#warning "Info tips"
+
+KviDccOptionsWidget::KviDccOptionsWidget(QWidget * pParent)
+: KviOptionsWidget(pParent)
+{
+}
+
+KviDccOptionsWidget::~KviDccOptionsWidget()
+{
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviDccGeneralOptionsWidget::KviDccGeneralOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"dccgeneral_options_widget")
+{
+ createLayout(2,1);
+
+ KviBoolSelector * b = addBoolSelector(0,0,0,0,__tr2qs_ctx("Use workaround for firewall","options"),KviOption_boolCantAcceptIncomingDccConnections);
+
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,__tr2qs_ctx("<center>Enable this option if you can't accept incoming connections.<br>" \
+ "KVIrc will try to use different methods to send and receive files.<br>" \
+ "Please note that these methods may NOT work when communicating with a non-KVIrc client.</center>","options"));
+#endif
+
+ addRowSpacer(0,1,0,1);
+}
+
+KviDccGeneralOptionsWidget::~KviDccGeneralOptionsWidget()
+{
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+KviDccAdvancedOptionsWidget::KviDccAdvancedOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"dccgeneral_options_widget")
+{
+ createLayout(5,1);
+
+ KviTalGroupBox * g = addGroupBox(0,0,0,0,1,Qt::Horizontal,__tr2qs_ctx("Network Properties","options"));
+
+ KviBoolSelector * b = addBoolSelector(g,__tr2qs_ctx("Use user-defined address or network interface","options"),KviOption_boolDccListenOnSpecifiedInterfaceByDefault);
+
+
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,__tr2qs_ctx("<center>Enable this option if you are on a multihost machine and want " \
+ "to force one of the available IP addresses to be used for outgoing DCCs.<br>This is especially useful " \
+ "when you use IPv6 and IPv4 addresses.<br>You can force KVIrc to always choose the IPv4 interface.</center>","options"));
+#endif
+
+ KviStringSelector * s = addStringSelector(g,__tr2qs_ctx("Listen on address/interface:","options"),KviOption_stringDccListenDefaultInterface,KVI_OPTION_BOOL(KviOption_boolDccListenOnSpecifiedInterfaceByDefault));
+
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(s,__tr2qs_ctx("<center>This is the IP address or name of the interface to use by default for outgoing DCC transfers.<br>" \
+ "On UNIX systems that support it, you can also specify IPv4 interface names (such as <b>ppp0</b>).<br>" \
+ "If you set it to <b>0.0.0.0</b>, KVIrc will try to use the first available IPv4 interface</center>","options"));
+#endif
+
+ connect(b,SIGNAL(toggled(bool)),s,SLOT(setEnabled(bool)));
+
+ b = addBoolSelector(g,__tr2qs_ctx("Use user-defined port range","options"),KviOption_boolUserDefinedPortRange);
+
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,__tr2qs_ctx("<center>Enable this option if you want specify a local port range for DCC.</center>","options"));
+#endif
+
+ KviTalHBox * hb = new KviTalHBox(g);
+ hb->setSpacing(4);
+ KviUIntSelector * u = addUIntSelector(hb,__tr2qs_ctx("Lowest port:","options"),KviOption_uintDccMinPort,1,65535,5000,KVI_OPTION_BOOL(KviOption_boolUserDefinedPortRange));
+ connect(b,SIGNAL(toggled(bool)),u,SLOT(setEnabled(bool)));
+
+ u = addUIntSelector(hb,__tr2qs_ctx("Highest port:","options"),KviOption_uintDccMaxPort,1,65535,30000,KVI_OPTION_BOOL(KviOption_boolUserDefinedPortRange));
+ connect(b,SIGNAL(toggled(bool)),u,SLOT(setEnabled(bool)));
+
+ b = addBoolSelector(g,__tr2qs_ctx("Send a fixed address in requests","options"),KviOption_boolDccSendFakeAddressByDefault);
+
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,__tr2qs_ctx("<center>Enable this option if you want to always send a fake IP address in your DCC requests.<br>" \
+ "This might be useful if you're behind a router with a static address that does network address translation (NAT) and forwards all or a range of ports.</center>","options"));
+#endif
+
+ s = addStringSelector(g,__tr2qs_ctx("Send address/interface:","options"),KviOption_stringDefaultDccFakeAddress,KVI_OPTION_BOOL(KviOption_boolDccSendFakeAddressByDefault));
+ connect(b,SIGNAL(toggled(bool)),s,SLOT(setEnabled(bool)));
+
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(s,__tr2qs_ctx("<center>This is the fixed address that will be sent with all DCC requests if you enable the option above.</center>","options"));
+#endif
+
+ KviBoolSelector * b2;
+ b2 = addBoolSelector(g,__tr2qs_ctx("Guess address from IRC server if unroutable","options"),
+ KviOption_boolDccGuessIpFromServerWhenLocalIsUnroutable,!KVI_OPTION_BOOL(KviOption_boolDccSendFakeAddressByDefault));
+ connect(b,SIGNAL(toggled(bool)),b2,SLOT(setNotEnabled(bool)));
+
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b2,__tr2qs_ctx("<center>You can enable this option if you are behind a router that forwards all or a range of ports.<br>" \
+ "KVIrc will try to guess the IP address to use for DCC by looking up the local hostname as seen " \
+ "by the IRC server you're connected to.<br>This method is an exclusive alternative to the \"fixed address\" above.<br>" \
+ "It might guess the correct address automatically if certain conditions are met (e.g. the IRC server does not mask hostnames).</center>","options"));
+#endif
+
+ b = addBoolSelector(g,__tr2qs_ctx("Use \"broken bouncer hack\" to detect address","options"),
+ KviOption_boolDccBrokenBouncerHack,KVI_OPTION_BOOL(KviOption_boolDccGuessIpFromServerWhenLocalIsUnroutable));
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,__tr2qs_ctx("<center>When you're behind a dialup router and also tunneling through a psyBNC bouncer, " \
+ "you can use a bug in the bouncer to force KVIrc to bind the DCC connections to the dialup router's address.<br>" \
+ "It's an ugly hack - use it only if nothing else works.</center>","options"));
+#endif
+
+ connect(b2,SIGNAL(toggled(bool)),b,SLOT(setEnabled(bool)));
+
+ b = addBoolSelector(0,1,1,1,__tr2qs_ctx("Notify failed DCC handshakes to the remote end","options"),
+ KviOption_boolNotifyFailedDccHandshakes);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,__tr2qs_ctx("<center>If you enable this option, when a DCC request from a remote " \
+ "user can't be satisfied KVIrc will notify him by a CTCP ERRMSG. This is " \
+ "a nice feature so it is a good idea to leave it on unless for some reason " \
+ "you have deactivated the antiflood system: in this case turning off this option " \
+ "might help if you often get attacked by CTCP floods.</center>","options"));
+#endif
+
+ u = addUIntSelector(0,2,1,2,__tr2qs_ctx("Maximum number of DCC sessions","options"),KviOption_uintMaxDccSlots,0,1000,64);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(u,__tr2qs_ctx("<center>This is the maximum number of concurrent DCC sessions " \
+ "and it includes all the DCC types (send,chat,recv...). " \
+ "KVIrc will refuse the requests when this limit is reached.</center>","options"));
+#endif
+
+ addUIntSelector(0,3,1,3,__tr2qs_ctx("DCC socket timeout:","options"),KviOption_uintDccSocketTimeout,10,65536,180);
+ u->setSuffix(__tr2qs_ctx(" sec","options"));
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(u,__tr2qs_ctx("<center>This is the amount of time that KVIrc will wait for a response before assuming that a DCC has failed " \
+ "because the remote client was unable to connect to our listening socket.</center>","options"));
+#endif
+
+ addRowSpacer(0,4,1,4);
+}
+
+KviDccAdvancedOptionsWidget::~KviDccAdvancedOptionsWidget()
+{
+}
+
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviDccSendOptionsWidget::KviDccSendOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"dccsend_options_widget")
+{
+}
+
+KviDccSendOptionsWidget::~KviDccSendOptionsWidget()
+{
+}
+
+
+
+KviDccSendGeneralOptionsWidget::KviDccSendGeneralOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"dccsend_options_widget")
+{
+ createLayout(5,1);
+
+ KviBoolSelector * b;
+
+ KviTalGroupBox * g = addGroupBox(0,0,0,0,1,Qt::Horizontal,__tr2qs_ctx("On Incoming File","options"));
+ KviBoolSelector * b2 = addBoolSelector(g,__tr2qs_ctx("Automatically accept","options"),KviOption_boolAutoAcceptDccSend);
+ KviBoolSelector * b3 = addBoolSelector(g,__tr2qs_ctx("Open transfer window as minimized when auto-accepted","options"),KviOption_boolCreateMinimizedDccSendWhenAutoAccepted,!KVI_OPTION_BOOL(KviOption_boolCreateMinimizedDccSend));
+ KviBoolSelector * b4 = addBoolSelector(g,__tr2qs_ctx("Automatically resume when auto-accepted","options"),KviOption_boolAutoResumeDccSendWhenAutoAccepted,KVI_OPTION_BOOL(KviOption_boolAutoAcceptDccSend));
+
+ g = addGroupBox(0,1,0,1,1,Qt::Horizontal,__tr2qs_ctx("Save Location","options"));
+ addDirectorySelector(g,__tr2qs_ctx("Download folder:","options"),KviOption_stringIncomingPath);
+ addBoolSelector(g,__tr2qs_ctx("Sort saved files by nicknames (create subfolders)","options"),KviOption_boolSortReceivedByDccFilesByNicks);
+ addBoolSelector(g,__tr2qs_ctx("Guess save path from media type","options"),KviOption_boolUseIncomingDccMediaTypeSavePath);
+
+
+ g = addGroupBox(0,2,0,2,1,Qt::Horizontal,__tr2qs_ctx("On Download Completion","options"));
+ addBoolSelector(g,__tr2qs_ctx("Notify completion in console","options"),KviOption_boolNotifyDccSendSuccessInConsole);
+ addBoolSelector(g,__tr2qs_ctx("Notify completion in notifier","options"),KviOption_boolNotifyDccSendSuccessInNotifier);
+ b = addBoolSelector(g,__tr2qs_ctx("Automatically clear transfer","options"),KviOption_boolAutoCloseDccSendOnSuccess);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,
+ __tr2qs_ctx("<center>This option will cause succesfully terminated transfers " \
+ "to be automatically removed from the transfer window.</center>","options"));
+#endif //COMPILE_INFO_TIPS
+
+
+ KviBoolSelector * b1 = addBoolSelector(0,3,0,3,__tr2qs_ctx("Always open transfer window as minimized","options"),KviOption_boolCreateMinimizedDccSend);
+
+ connect(b1,SIGNAL(toggled(bool)),b3,SLOT(setNotEnabled(bool)));
+ connect(b2,SIGNAL(toggled(bool)),b4,SLOT(setEnabled(bool)));
+
+ addRowSpacer(0,4,0,4);
+}
+
+KviDccSendGeneralOptionsWidget::~KviDccSendGeneralOptionsWidget()
+{
+}
+
+
+KviDccSendAdvancedOptionsWidget::KviDccSendAdvancedOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"dccsend_advanced_options_widget")
+{
+ createLayout(4,1);
+
+ KviTalGroupBox * g = addGroupBox(0,0,0,0,1,Qt::Horizontal,__tr2qs_ctx("Bug Compatibility","options"));
+ KviBoolSelector * b = addBoolSelector(g,__tr2qs_ctx("Send ACK for byte 0","options"),KviOption_boolSendZeroAckInDccRecv);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,
+ __tr2qs_ctx("<center>This option causes KVIrc to send a zero-byte acknowledge to kick-start " \
+ "the DCC transfer with some buggy IRC clients.<br>" \
+ "Use it only if your DCC transfers stall just after establishing a connection without sending any data.</center>","options"));
+#endif //COMPILE_INFO_TIPS
+
+ b = addBoolSelector(g,__tr2qs_ctx("Accept broken RESUME (mIRC file.ext)","options"),KviOption_boolAcceptBrokenFileNameDccResumeRequests);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,
+ __tr2qs_ctx("<center>This option causes KVIrc to accept RESUME requests with invalid filenames.<br>" \
+ "Use it if KVIrc fails to accept RESUME requests from other clients (e.g. some versions of mIRC).</center>","options"));
+#endif //COMPILE_INFO_TIPS
+
+ b = addBoolSelector(g,__tr2qs_ctx("Replace spaces with underscores in outgoing filenames","options"),KviOption_boolDCCFileTransferReplaceOutgoingSpacesWithUnderscores);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,
+ __tr2qs_ctx("<center>This option causes KVIrc to replace spaces with underscores in filenames " \
+ "for all the outgoing file transfers. This will fix filename handling with some buggy clients (e.g. some versions of mIRC).","options"));
+#endif //COMPILE_INFO_TIPS
+
+
+ g = addGroupBox(0,1,0,1,1,Qt::Horizontal,__tr2qs_ctx("Limits","options"));
+
+ KviTalHBox * hb = new KviTalHBox(g);
+ b = addBoolSelector(hb,__tr2qs_ctx("Limit upload bandwidth to","options"),KviOption_boolLimitDccSendSpeed);
+ KviUIntSelector * u = addUIntSelector(hb,"",KviOption_uintMaxDccSendSpeed,0,0xffffff1,1024,KVI_OPTION_BOOL(KviOption_boolLimitDccSendSpeed));
+ u->setSuffix(" " + __tr2qs_ctx("bytes/sec","options"));
+ connect(b,SIGNAL(toggled(bool)),u,SLOT(setEnabled(bool)));
+
+ hb = new KviTalHBox(g);
+ b = addBoolSelector(hb,__tr2qs_ctx("Limit download bandwidth to","options"),KviOption_boolLimitDccRecvSpeed);
+ u = addUIntSelector(hb,"",KviOption_uintMaxDccRecvSpeed,0,0xffffff1,1024,KVI_OPTION_BOOL(KviOption_boolLimitDccRecvSpeed));
+ u->setSuffix(" " + __tr2qs_ctx("bytes/sec","options"));
+ connect(b,SIGNAL(toggled(bool)),u,SLOT(setEnabled(bool)));
+
+
+ u = addUIntSelector(g,__tr2qs_ctx("Maximum number of DCC transfers","options"),KviOption_uintMaxDccSendTransfers,0,1000,10);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(u,__tr2qs_ctx("<center>This is the maximum number of concurrent DCC transfers. " \
+ "KVIrc will refuse the requests when this limit is reached.</center>","options"));
+#endif
+
+ g = addGroupBox(0,2,0,2,1,Qt::Horizontal,__tr2qs_ctx("Tweaks","options"));
+
+ b = addBoolSelector(g,__tr2qs_ctx("Use fast send (send ahead)","options"),KviOption_boolUseFastDccSend);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,
+ __tr2qs_ctx("<center>The \"send ahead\" DCC method allows data to be sent faster by breaking " \
+ "some of the rules of the original DCC SEND protocol specification.<br>" \
+ "Most clients can handle this kind of optimisation so disable it only if you have problems.</center>","options"));
+#endif //COMPILE_INFO_TIPS
+
+ hb = new KviTalHBox(g);
+
+ b = addBoolSelector(hb,__tr2qs_ctx("Force idle step","options"),KviOption_boolDccSendForceIdleStep);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,
+ __tr2qs_ctx("<center>Enable this option when the dcc file transfers " \
+ "tend to block your computer by consuming too much CPU time. " \
+ "When this option is enabled the idle interval below will be " \
+ "forcibly inserted between each sent/received data packet.</center>","options"));
+#endif // COMPILE_INFO_TIPS
+
+ u = addUIntSelector(hb,__tr2qs_ctx("","options"),KviOption_uintDccSendIdleStepInMSec,1,65536,30,KVI_OPTION_BOOL(KviOption_boolDccSendForceIdleStep));
+ connect(b,SIGNAL(toggled(bool)),u,SLOT(setEnabled(bool)));
+ u->setSuffix(__tr2qs_ctx(" msec","options"));
+
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(u,
+ __tr2qs_ctx("<center>This parameter controls the average delay between two packets sent or received.<br>" \
+ "A smaller interval will cause you to send data faster but will also " \
+ "add load to your CPU, disk and network interface.<br>" \
+ "Reasonable values are from 5 to 50 milliseconds.</center>","options"));
+#endif //COMPILE_INFO_TIPS
+
+ u = addUIntSelector(g,__tr2qs_ctx("Packet size:","options"),KviOption_uintDccSendPacketSize,16,65536,1024);
+ u->setSuffix(__tr2qs_ctx(" bytes","options"));
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(u,
+ __tr2qs_ctx("<center>This parameter controls the packet size used for DCC SEND.<br>" \
+ "With bigger packets you will be probably send data faster, but " \
+ "you will also saturate your bandwidth and in some cases " \
+ "cause more disk activity.<br>" \
+ "Reasonable values are from 512 to 4096 bytes.</center>","options"));
+#endif //COMPILE_INFO_TIPS
+
+
+ addRowSpacer(0,3,0,3);
+
+}
+
+KviDccSendAdvancedOptionsWidget::~KviDccSendAdvancedOptionsWidget()
+{
+
+}
+
+
+//KviDccSendOptionsWidget::enableStuff(bool)
+//{
+// m_pOpenMinimizedAutoAccept->setEnabled(m_pAutoAccept->isChecked() && !m_pOpenMinimized->isChecked());
+//}
+
+
+KviDccChatOptionsWidget::KviDccChatOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"dccchat_options_widget")
+{
+ createLayout(3,1);
+
+ KviTalGroupBox * g = addGroupBox(0,0,0,0,1,Qt::Horizontal,__tr2qs_ctx("On Chat Request","options"));
+ KviBoolSelector * b = addBoolSelector(g,__tr2qs_ctx("Automatically accept","options"),KviOption_boolAutoAcceptDccChat);
+ b = addBoolSelector(g,__tr2qs_ctx("Open minimized when auto-accepted","options"),KviOption_boolCreateMinimizedDccChatWhenAutoAccepted,!KVI_OPTION_BOOL(KviOption_boolCreateMinimizedDccChat));
+
+ KviBoolSelector * b1 = addBoolSelector(0,1,0,1,__tr2qs_ctx("Always open as minimized","options"),KviOption_boolCreateMinimizedDccChat);
+
+ connect(b1,SIGNAL(toggled(bool)),b,SLOT(setNotEnabled(bool)));
+
+ addRowSpacer(0,2,0,2);
+}
+
+KviDccChatOptionsWidget::~KviDccChatOptionsWidget()
+{
+}
+
+
+KviDccVoiceOptionsWidget::KviDccVoiceOptionsWidget(QWidget *p):KviOptionsWidget(p)
+{
+ createLayout(8, 1);
+
+ KviBoolSelector * b1 = addBoolSelector(0,0,0,0,__tr2qs_ctx("Open all minimized","options"),KviOption_boolCreateMinimizedDccVoice);
+ KviTalGroupBox * g = addGroupBox(0,1,0,1,1,Qt::Horizontal,__tr2qs_ctx("On Voice Request","options"));
+ KviBoolSelector * b = addBoolSelector(g,__tr2qs_ctx("Automatically accept","options"),KviOption_boolAutoAcceptDccVoice);
+
+ b = addBoolSelector(g,__tr2qs_ctx("Open minimized when auto-accepted","options"),KviOption_boolCreateMinimizedDccVoiceWhenAutoAccepted,!KVI_OPTION_BOOL(KviOption_boolCreateMinimizedDccVoice));
+ connect(b1,SIGNAL(toggled(bool)),b,SLOT(setNotEnabled(bool)));
+
+ addBoolSelector(0,2,0,2,__tr2qs_ctx("Force half-duplex mode on sound device","options"), KviOption_boolDccVoiceForceHalfDuplex);
+ addBoolSelector(0,3,0,3,__tr2qs_ctx("Volume slider controls PCM, not Master","options"), KviOption_boolDccVoiceVolumeSliderControlsPCM);
+
+ addStringSelector(0,4,0,4,__tr2qs_ctx("Sound device:","options"), KviOption_stringDccVoiceSoundDevice);
+ addStringSelector(0,5,0,5,__tr2qs_ctx("Mixer device:","options"), KviOption_stringDccVoiceMixerDevice);
+
+ KviUIntSelector * u = addUIntSelector(0,6,0,6,__tr2qs_ctx("Pre-buffer size:","options"), KviOption_uintDccVoicePreBufferSize, 2048, 65536, 32000);
+ u->setSuffix(" bytes");
+
+
+ addRowSpacer(0,7,0,7);
+}
+
+KviDccVoiceOptionsWidget::~KviDccVoiceOptionsWidget()
+{
+}
+
+#include "m_optw_dcc.moc"
diff --git a/src/modules/options/optw_dcc.h b/src/modules/options/optw_dcc.h
new file mode 100644
index 00000000..5dc67424
--- /dev/null
+++ b/src/modules/options/optw_dcc.h
@@ -0,0 +1,139 @@
+#ifndef _OPTW_DCC_H_
+#define _OPTW_DCC_H_
+//
+// File : optw_dcc.h
+// Creation date : Fri Aug 17 22:08:08 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+
+#define KVI_OPTIONS_WIDGET_ICON_KviDccOptionsWidget KVI_SMALLICON_DCCERROR
+#define KVI_OPTIONS_WIDGET_NAME_KviDccOptionsWidget __tr2qs_no_lookup("DCC")
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviDccOptionsWidget 70000
+#define KVI_OPTIONS_WIDGET_CONTAINER_KviDccOptionsWidget true
+
+class KviDccOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviDccOptionsWidget(QWidget * parent);
+ ~KviDccOptionsWidget();
+};
+
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviDccGeneralOptionsWidget KVI_SMALLICON_DCCERROR
+#define KVI_OPTIONS_WIDGET_NAME_KviDccGeneralOptionsWidget __tr2qs_no_lookup("General")
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviDccGeneralOptionsWidget 70000
+#define KVI_OPTIONS_WIDGET_PARENT_KviDccGeneralOptionsWidget KviDccOptionsWidget
+
+class KviDccGeneralOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviDccGeneralOptionsWidget(QWidget * parent);
+ ~KviDccGeneralOptionsWidget();
+};
+
+#define KVI_OPTIONS_WIDGET_ICON_KviDccAdvancedOptionsWidget KVI_SMALLICON_DCCERROR
+#define KVI_OPTIONS_WIDGET_NAME_KviDccAdvancedOptionsWidget __tr2qs_no_lookup("Advanced")
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviDccAdvancedOptionsWidget 70000
+#define KVI_OPTIONS_WIDGET_PARENT_KviDccAdvancedOptionsWidget KviDccOptionsWidget
+
+class KviDccAdvancedOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviDccAdvancedOptionsWidget(QWidget * parent);
+ ~KviDccAdvancedOptionsWidget();
+};
+
+
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviDccSendOptionsWidget KVI_SMALLICON_DCCMSG
+#define KVI_OPTIONS_WIDGET_NAME_KviDccSendOptionsWidget __tr2qs_no_lookup("File Transfer")
+#define KVI_OPTIONS_WIDGET_PARENT_KviDccSendOptionsWidget KviDccOptionsWidget
+#define KVI_OPTIONS_WIDGET_CONTAINER_KviDccSendOptionsWidget true
+
+
+class KviDccSendOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviDccSendOptionsWidget(QWidget * parent);
+ ~KviDccSendOptionsWidget();
+};
+
+#define KVI_OPTIONS_WIDGET_ICON_KviDccSendGeneralOptionsWidget KVI_SMALLICON_DCCMSG
+#define KVI_OPTIONS_WIDGET_NAME_KviDccSendGeneralOptionsWidget __tr2qs_no_lookup("General")
+#define KVI_OPTIONS_WIDGET_PARENT_KviDccSendGeneralOptionsWidget KviDccSendOptionsWidget
+
+
+class KviDccSendGeneralOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviDccSendGeneralOptionsWidget(QWidget * parent);
+ ~KviDccSendGeneralOptionsWidget();
+};
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviDccSendAdvancedOptionsWidget KVI_SMALLICON_DCCMSG
+#define KVI_OPTIONS_WIDGET_NAME_KviDccSendAdvancedOptionsWidget __tr2qs_no_lookup("Advanced")
+#define KVI_OPTIONS_WIDGET_PARENT_KviDccSendAdvancedOptionsWidget KviDccSendOptionsWidget
+
+class KviDccSendAdvancedOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviDccSendAdvancedOptionsWidget(QWidget * parent);
+ ~KviDccSendAdvancedOptionsWidget();
+};
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviDccChatOptionsWidget KVI_SMALLICON_DCCREQUEST
+#define KVI_OPTIONS_WIDGET_NAME_KviDccChatOptionsWidget __tr2qs_no_lookup("Chat")
+#define KVI_OPTIONS_WIDGET_PARENT_KviDccChatOptionsWidget KviDccOptionsWidget
+#define KVI_OPTIONS_WIDGET_NOTCONTAINED_KviDccChatOptionsWidget true
+
+class KviDccChatOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviDccChatOptionsWidget(QWidget * parent);
+ ~KviDccChatOptionsWidget();
+};
+
+#define KVI_OPTIONS_WIDGET_ICON_KviDccVoiceOptionsWidget KVI_SMALLICON_DCCVOICE
+#define KVI_OPTIONS_WIDGET_NAME_KviDccVoiceOptionsWidget __tr2qs_no_lookup("Voice")
+#define KVI_OPTIONS_WIDGET_PARENT_KviDccVoiceOptionsWidget KviDccOptionsWidget
+#define KVI_OPTIONS_WIDGET_NOTCONTAINED_KviDccVoiceOptionsWidget true
+
+class KviDccVoiceOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviDccVoiceOptionsWidget(QWidget *);
+ ~KviDccVoiceOptionsWidget();
+};
+
+
+#endif //_OPTW_DCC_H_
diff --git a/src/modules/options/optw_generalopt.cpp b/src/modules/options/optw_generalopt.cpp
new file mode 100644
index 00000000..18f86902
--- /dev/null
+++ b/src/modules/options/optw_generalopt.cpp
@@ -0,0 +1,51 @@
+//=============================================================================
+//
+// File : optw_generalopt.cpp
+// Creation date : Wed Nov 19 09:25:16 2005 GMT by Grifisx & Noldor
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2005 Grifisx & Noldor
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "optw_generalopt.h"
+
+#include "kvi_settings.h"
+#include "kvi_locale.h"
+#include "kvi_options.h"
+
+
+KviGeneralOptOptionsWidget::KviGeneralOptOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"generalopt_options_widget")
+{
+
+ createLayout(1,4);
+
+ QLabel * l;
+ l = addLabel(0,0,4,0,__tr2qs_ctx("This section contains the general client options<br>"\
+ "<p>like<b> sound, mediafiles, URL handler </b> etc... " \
+ "</p>","options"));
+ addAdvancedButton(4,1,4,1);
+}
+
+
+KviGeneralOptOptionsWidget::~KviGeneralOptOptionsWidget()
+{
+}
+
+
+#include "m_optw_generalopt.moc"
diff --git a/src/modules/options/optw_generalopt.h b/src/modules/options/optw_generalopt.h
new file mode 100644
index 00000000..fbaaf192
--- /dev/null
+++ b/src/modules/options/optw_generalopt.h
@@ -0,0 +1,39 @@
+#ifndef _OPTW_GENERALOPT_H_
+#define _OPTW_GENERALOPT_H_
+//
+// File : optw_generalopt.h
+// Creation date : Wed Nov 19 09:25:16 2005 GMT by Grifisx & Noldor
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2005 Grifisx & Noldor
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+
+#define KVI_OPTIONS_WIDGET_ICON_KviGeneralOptOptionsWidget KVI_SMALLICON_OPTIONS
+#define KVI_OPTIONS_WIDGET_NAME_KviGeneralOptOptionsWidget __tr2qs_no_lookup("General options")
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviGeneralOptOptionsWidget 40000
+
+class KviGeneralOptOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviGeneralOptOptionsWidget(QWidget * parent);
+ ~KviGeneralOptOptionsWidget();
+};
+
+#endif //_OPTW_CONNECTION_H_
diff --git a/src/modules/options/optw_highlighting.cpp b/src/modules/options/optw_highlighting.cpp
new file mode 100644
index 00000000..ef0f5442
--- /dev/null
+++ b/src/modules/options/optw_highlighting.cpp
@@ -0,0 +1,128 @@
+#ifndef _OPTW_HIGHLIGHTING_CPP_
+#define _OPTW_HIGHLIGHTING_CPP_
+//
+// File : optw_highlighting.cpp
+// Creation date : Sat Nov 3 18:09:35 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "optw_highlighting.h"
+
+#include <qlayout.h>
+
+#include "kvi_options.h"
+#include "kvi_locale.h"
+
+#include <qlabel.h>
+
+KviAlertHighlightingOptionsWidget::KviAlertHighlightingOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"highlighting_options_widget")
+{
+}
+
+KviAlertHighlightingOptionsWidget::~KviAlertHighlightingOptionsWidget()
+{
+}
+
+
+
+KviHighlightingOptionsWidget::KviHighlightingOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"highlighting_options_widget")
+{
+ createLayout(7,1);
+
+ KviBoolSelector * b;
+
+ connect(
+ addBoolSelector(0,0,0,0,__tr2qs_ctx("Enable word highlighting","options"),KviOption_boolUseWordHighlighting),
+ SIGNAL(toggled(bool)),
+ addStringListSelector(0,1,0,1,__tr2qs_ctx("Words to highlight:","options"),KviOption_stringlistHighlightWords,KVI_OPTION_BOOL(KviOption_boolUseWordHighlighting)),
+ SLOT(setEnabled(bool)));
+ addStringSelector(0,2,0,2,__tr2qs_ctx("Word splitters:","options"),KviOption_stringWordSplitters);
+ // This can be used even without Word highlighting
+ b = addBoolSelector(0,3,0,3,__tr2qs_ctx("Highlight messages containing my nickname","options"),KviOption_boolAlwaysHighlightNick);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,__tr2qs_ctx("<center>If this option is enabled, KVIrc will highlight any user message containing your current nickname</center>","options"));
+#endif
+ b = addBoolSelector(0,4,0,4,__tr2qs_ctx("Flash the system taskbar entry on highlighted messages","options"),KviOption_boolFlashWindowOnHighlightedMessages);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,__tr2qs_ctx("<center>If this option is enabled, KVIrc will (attempt to) flash the system taskbar entry when a highlighted message is printed and KVIrc is not the active window</center>","options"));
+#endif
+ b = addBoolSelector(0,5,0,5,__tr2qs_ctx("Popup the notifier window on highlighted messages","options"),KviOption_boolPopupNotifierOnHighlightedMessages);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,__tr2qs_ctx("<center>If this option is enabled, KVIrc will popup a little notifier window in the low right corner of your desktop when a highlighted message is printed and KVIrc is not the active window</center>","options"));
+#endif
+
+ addRowSpacer(0,6,0,6);
+}
+
+KviHighlightingOptionsWidget::~KviHighlightingOptionsWidget()
+{
+}
+
+
+
+
+
+
+KviAlertOptionsWidget::KviAlertOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"highlighting_options_widget")
+{
+ createLayout(2,1);
+
+ KviBoolSelector * b;
+
+ KviTalGroupBox * g = addGroupBox(0,0,0,0,1,Qt::Horizontal,__tr2qs_ctx("Alert Restrictions","options"));
+ KviBoolSelector * b3 = addBoolSelector(g,__tr2qs_ctx("Restrict alert","options"),KviOption_boolHighlightOnlyNormalMsg);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b3, __tr2qs_ctx("<center>If this option is enabled, KVIrc will alert in the taskbar only if a normal message is received in a channel.<br>Actions like joins, parts and mode changes will be ignored.<br> This is useful if you are in channels with a high rate of traffic and only want to be alerted for messages that are interesting to you.</center>","options"));
+#endif
+ KviBoolSelector * b4 = addBoolSelector(g,__tr2qs_ctx("Alert for highlighted words","options"),KviOption_boolHighlightOnlyNormalMsgHighlightInChanToo,KVI_OPTION_BOOL(KviOption_boolHighlightOnlyNormalMsg));
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b4, __tr2qs_ctx("<center>If this option is enabled, the taskbar will also alert for messages which contain a word from the highlighted words list above.</center>","options"));
+#endif
+ KviBoolSelector * b5 = addBoolSelector(g,__tr2qs_ctx("Alert for query messages","options"),KviOption_boolHighlightOnlyNormalMsgQueryToo,KVI_OPTION_BOOL(KviOption_boolHighlightOnlyNormalMsg));
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b5, __tr2qs_ctx("<center>If this option is enabled, the taskbar will also alert for messages which are shown in queries.</center>","options"));
+#endif
+ connect(b3,SIGNAL(toggled(bool)),b4,SLOT(setEnabled(bool)));
+ connect(b3,SIGNAL(toggled(bool)),b5,SLOT(setEnabled(bool)));
+
+ KviBoolSelector * b6 = addBoolSelector(g,__tr2qs_ctx("Use custom alert level","options"),KviOption_boolHighlightOnlyAtCostumHighlightLevel);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b6, __tr2qs_ctx("<center>If this option is enabled, KVIrc will alert in the taskbar only if the specified alert level is reached.</center>","options"));
+#endif
+ KviUIntSelector * b7 = addUIntSelector(g,__tr2qs_ctx("Minimum alert level:","options"),KviOption_uintMinHighlightLevel,1,KVI_MSGTYPE_MAXLEVEL,KVI_MSGTYPE_MAXLEVEL,KVI_OPTION_UINT(KviOption_boolHighlightOnlyAtCostumHighlightLevel));
+ b7->setEnabled(KVI_OPTION_BOOL(KviOption_boolHighlightOnlyAtCostumHighlightLevel));
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b6, __tr2qs_ctx("<center>This option sets the minimum alert level for the taskbar.</center>","options"));
+#endif
+ connect(b6,SIGNAL(toggled(bool)),b7,SLOT(setEnabled(bool)));
+
+ addRowSpacer(0,1,0,1);
+}
+
+KviAlertOptionsWidget::~KviAlertOptionsWidget()
+{
+}
+
+
+#include "m_optw_highlighting.moc"
+
+#endif //_OPTW_HIGHLIGHTING_CPP_
diff --git a/src/modules/options/optw_highlighting.h b/src/modules/options/optw_highlighting.h
new file mode 100644
index 00000000..f222412e
--- /dev/null
+++ b/src/modules/options/optw_highlighting.h
@@ -0,0 +1,67 @@
+#ifndef _OPTW_HIGHLIGHTING_H_
+#define _OPTW_HIGHLIGHTING_H_
+//
+// File : optw_highlighting.h
+// Creation date : Sat Nov 3 18:09:37 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+
+#define KVI_OPTIONS_WIDGET_ICON_KviAlertHighlightingOptionsWidget KVI_SMALLICON_RAW
+#define KVI_OPTIONS_WIDGET_NAME_KviAlertHighlightingOptionsWidget __tr2qs_no_lookup("Alert/Highlight")
+#define KVI_OPTIONS_WIDGET_PARENT_KviAlertHighlightingOptionsWidget KviToolsOptionsWidget
+#define KVI_OPTIONS_WIDGET_CONTAINER_KviAlertHighlightingOptionsWidget true
+
+class KviAlertHighlightingOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviAlertHighlightingOptionsWidget(QWidget * parent);
+ ~KviAlertHighlightingOptionsWidget();
+};
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviHighlightingOptionsWidget KVI_SMALLICON_RAW
+#define KVI_OPTIONS_WIDGET_NAME_KviHighlightingOptionsWidget __tr2qs_no_lookup("Highlight")
+#define KVI_OPTIONS_WIDGET_PARENT_KviHighlightingOptionsWidget KviAlertHighlightingOptionsWidget
+
+class KviHighlightingOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviHighlightingOptionsWidget(QWidget * parent);
+ ~KviHighlightingOptionsWidget();
+};
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviAlertOptionsWidget KVI_SMALLICON_RAW
+#define KVI_OPTIONS_WIDGET_NAME_KviAlertOptionsWidget __tr2qs_no_lookup("Taskbar Alert")
+#define KVI_OPTIONS_WIDGET_PARENT_KviAlertOptionsWidget KviAlertHighlightingOptionsWidget
+
+class KviAlertOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviAlertOptionsWidget(QWidget * parent);
+ ~KviAlertOptionsWidget();
+};
+
+
+#endif //_OPTW_HIGHLIGHTING_H_
diff --git a/src/modules/options/optw_ident.cpp b/src/modules/options/optw_ident.cpp
new file mode 100644
index 00000000..7dafdd52
--- /dev/null
+++ b/src/modules/options/optw_ident.cpp
@@ -0,0 +1,37 @@
+//================================================================================
+//
+// File : optw_ident.cpp
+// Creation date : Mon Oct 29 15:48:42 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//================================================================================
+
+#include "optw_ident.h"
+
+#include <kvi_tal_groupbox.h>
+
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_settings.h"
+
+//#warning "Info tips"
+
+
+
+#include "m_optw_ident.moc"
diff --git a/src/modules/options/optw_ident.h b/src/modules/options/optw_ident.h
new file mode 100644
index 00000000..89ea8975
--- /dev/null
+++ b/src/modules/options/optw_ident.h
@@ -0,0 +1,28 @@
+#ifndef _OPTW_IDENT_H_
+#define _OPTW_IDENT_H_
+//
+// File : optw_ident.h
+// Creation date : Mon Oct 29 15:48:40 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+
+
+#endif //_OPTW_IDENT_H_
diff --git a/src/modules/options/optw_identity.cpp b/src/modules/options/optw_identity.cpp
new file mode 100644
index 00000000..998ca5a4
--- /dev/null
+++ b/src/modules/options/optw_identity.cpp
@@ -0,0 +1,729 @@
+//============================================================================
+//
+// File : optw_identity.cpp
+// Creation date : Tue Nov 14 2000 23:06:53 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//============================================================================
+
+#include "optw_identity.h"
+
+#include <qlineedit.h>
+#include <qcheckbox.h>
+#include <qpushbutton.h>
+#include <qlayout.h>
+#include "kvi_tal_tooltip.h"
+#include <qtabwidget.h>
+#include <qcombobox.h>
+#include <qmessagebox.h>
+#include <qtimer.h>
+#include <qvalidator.h>
+
+#include "kvi_defaults.h"
+#include "kvi_settings.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_app.h"
+#include "kvi_window.h"
+#include "kvi_console.h"
+#include "kvi_optionswidget.h"
+#include "kvi_filedialog.h"
+#include "kvi_iconmanager.h"
+#include "kvi_http.h"
+
+
+//#warning "Info tips"
+
+
+KviNickAlternativesDialog::KviNickAlternativesDialog(QWidget * par,const QString &n1,const QString &n2,const QString &n3)
+: QDialog(par)
+{
+ QGridLayout * g = new QGridLayout(this,5,3,4,12);
+
+ setCaption(__tr2qs_ctx("Nickname alternatives","options"));
+
+ QLabel * l = new QLabel(this);
+ l->setText(__tr2qs_ctx("<center>Here you can choose up to three nicknames " \
+ "alternative to the primary one. KVIrc will use the alternatives " \
+ "if the primary nick is already used by someone else on a particular " \
+ "IRC network.</center>","options"));
+ g->addMultiCellWidget(l,0,0,0,2);
+
+ l = new QLabel(this);
+ l->setText(__tr2qs_ctx("Alt. Nickname 1:","options"));
+ g->addWidget(l,1,0);
+ m_pNickEdit1 = new QLineEdit(this);
+ g->addMultiCellWidget(m_pNickEdit1,1,1,1,2);
+ m_pNickEdit1->setText(n1);
+
+ l = new QLabel(this);
+ l->setText(__tr2qs_ctx("Alt. Nickname 2:","options"));
+ g->addWidget(l,2,0);
+ m_pNickEdit2 = new QLineEdit(this);
+ g->addMultiCellWidget(m_pNickEdit2,2,2,1,2);
+ m_pNickEdit2->setText(n2);
+
+ l = new QLabel(this);
+ l->setText(__tr2qs_ctx("Alt. Nickname 3:","options"));
+ g->addWidget(l,3,0);
+ m_pNickEdit3 = new QLineEdit(this);
+ g->addMultiCellWidget(m_pNickEdit3,3,3,1,2);
+ m_pNickEdit3->setText(n3);
+ KviTalHBox * h = new KviTalHBox(this);
+ h->setSpacing(8);
+ g->addWidget(h,4,2);
+
+ QPushButton * pb = new QPushButton(__tr2qs_ctx("Cancel","options"),h);
+ //g->addWidget(pb,4,2);
+ connect(pb,SIGNAL(clicked()),this,SLOT(reject()));
+
+ pb = new QPushButton(__tr2qs_ctx("Ok","options"),h);
+ pb->setDefault(true);
+ connect(pb,SIGNAL(clicked()),this,SLOT(accept()));
+
+ g->setColStretch(0,1);
+
+ //setMinimumSize(250,120);
+}
+
+KviNickAlternativesDialog::~KviNickAlternativesDialog()
+{
+}
+
+void KviNickAlternativesDialog::fill(QString &n1,QString &n2,QString &n3)
+{
+ n1 = m_pNickEdit1->text();
+ n2 = m_pNickEdit2->text();
+ n3 = m_pNickEdit3->text();
+}
+
+
+
+
+
+
+
+
+
+
+
+
+KviAvatarDownloadDialog::KviAvatarDownloadDialog(QWidget * par,const QString &szUrl)
+: QDialog(par)
+{
+ setCaption(__tr2qs_ctx("Avatar Download - KVIrc","options"));
+
+ m_szUrl = szUrl;
+
+ QGridLayout * g = new QGridLayout(this,2,2,4,8);
+
+ m_pOutput = new QLabel(__tr2qs_ctx("<center>Please wait while the avatar is being downloaded</center>","options"),this);
+ g->addMultiCellWidget(m_pOutput,0,0,0,1);
+
+ QPushButton * b = new QPushButton(__tr2qs_ctx("Abort","options"),this);
+ g->addWidget(b,1,1);
+ connect(b,SIGNAL(clicked()),this,SLOT(cancelClicked()));
+
+ m_pRequest = new KviHttpRequest();
+
+ QTimer::singleShot(0,this,SLOT(startDownload()));
+
+ g->setRowStretch(0,1);
+ g->setColStretch(0,1);
+
+ setMinimumSize(250,120);
+}
+
+KviAvatarDownloadDialog::~KviAvatarDownloadDialog()
+{
+ delete m_pRequest;
+}
+
+void KviAvatarDownloadDialog::startDownload()
+{
+ connect(m_pRequest,SIGNAL(terminated(bool)),this,SLOT(downloadTerminated(bool)));
+ connect(m_pRequest,SIGNAL(status(const char *)),this,SLOT(downloadMessage(const char *)));
+
+ QString tmp = m_szUrl;
+ g_pIconManager->urlToCachedFileName(tmp);
+ g_pApp->getLocalKvircDirectory(m_szLocalFileName,KviApp::Avatars,tmp);
+
+ m_pRequest->setExistingFileAction(KviHttpRequest::RenameExisting);
+ if(!m_pRequest->get(KviUrl(m_szUrl),KviHttpRequest::StoreToFile,m_szLocalFileName.utf8().data()))
+ {
+ m_szErrorMessage = __tr2qs_ctx("Failed to start the download","options");
+ reject();
+ }
+}
+
+void KviAvatarDownloadDialog::closeEvent(QCloseEvent * e)
+{
+ m_szErrorMessage = __tr2qs_ctx("Download aborted by user","options");
+ e->ignore();
+ reject();
+}
+
+void KviAvatarDownloadDialog::cancelClicked()
+{
+ m_szErrorMessage = __tr2qs_ctx("Download aborted by user","options");
+ reject();
+}
+
+void KviAvatarDownloadDialog::downloadMessage(const char * message)
+{
+ if(message)
+ {
+ QString txt = "<center>";
+ txt += message;
+ txt += "</center>";
+ m_pOutput->setText(message);
+ }
+}
+
+void KviAvatarDownloadDialog::downloadTerminated(bool bSuccess)
+{
+ if(bSuccess)
+ {
+ accept();
+ } else {
+ m_szErrorMessage = m_pRequest->lastError();
+ reject();
+ }
+}
+
+KviAvatarSelectionDialog::KviAvatarSelectionDialog(QWidget * par,const QString &szInitialPath)
+: QDialog(par)
+{
+ setCaption(__tr2qs_ctx("Choose Avatar - KVIrc","options"));
+
+ QGridLayout * g = new QGridLayout(this,3,3,4,8);
+
+
+ QString msg = "<center>";
+ msg += __tr2qs_ctx("Please select an avatar image. " \
+ "The full path to a local file or an image on the Web can be used.<br>" \
+ "If you wish to use a local image file, click the \"<b>Browse</b>\"" \
+ "button to browse local folders.<br>" \
+ "The full URL for an image (including <b>http://</b>) can be entered manually.","options");
+ msg += "</center><br>";
+
+ QLabel * l = new QLabel(msg,this);
+ l->setMinimumWidth(250);
+
+ g->addMultiCellWidget(l,0,0,0,2);
+
+ m_pLineEdit = new QLineEdit(this);
+ m_pLineEdit->setText(szInitialPath);
+ m_pLineEdit->setMinimumWidth(180);
+
+ g->addMultiCellWidget(m_pLineEdit,1,1,0,1);
+
+ QPushButton * b = new QPushButton(__tr2qs_ctx("&Browse...","options"),this);
+ connect(b,SIGNAL(clicked()),this,SLOT(chooseFileClicked()));
+ g->addWidget(b,1,2);
+ KviTalHBox * h = new KviTalHBox(this);h->setSpacing(8);g->addMultiCellWidget(h,2,2,1,2);
+ b = new QPushButton(__tr2qs_ctx("&OK","options"),h);
+ b->setMinimumWidth(80);
+ b->setDefault(true);
+ connect(b,SIGNAL(clicked()),this,SLOT(okClicked()));
+ //g->addWidget(b,2,1);
+
+ b = new QPushButton(__tr2qs_ctx("Cancel","options"),h);
+ b->setMinimumWidth(80);
+ connect(b,SIGNAL(clicked()),this,SLOT(cancelClicked()));
+ //g->addWidget(b,2,2);
+
+ g->setRowStretch(0,1);
+ g->setColStretch(0,1);
+ //setMinimumSize(250,120);
+}
+
+KviAvatarSelectionDialog::~KviAvatarSelectionDialog()
+{
+}
+
+void KviAvatarSelectionDialog::okClicked()
+{
+ m_szAvatarName = m_pLineEdit->text();
+ accept();
+}
+
+void KviAvatarSelectionDialog::cancelClicked()
+{
+ reject();
+}
+
+void KviAvatarSelectionDialog::chooseFileClicked()
+{
+ QString tmp;
+ if(KviFileDialog::askForOpenFileName(tmp,__tr2qs_ctx("Choose an Image File - KVIrc","options"),
+ QString::null,QString::null,false,true,this))
+ {
+ m_pLineEdit->setText(tmp);
+ }
+}
+
+void KviAvatarSelectionDialog::closeEvent(QCloseEvent * e)
+{
+ e->ignore();
+ reject();
+}
+
+
+
+
+
+
+KviIdentityOptionsWidget::KviIdentityOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent)
+{
+}
+
+KviIdentityOptionsWidget::~KviIdentityOptionsWidget()
+{
+}
+
+
+
+
+KviIdentityGeneralOptionsWidget::KviIdentityGeneralOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent)
+{
+ m_szAltNicknames[0] = KVI_OPTION_STRING(KviOption_stringNickname2);
+ m_szAltNicknames[1] = KVI_OPTION_STRING(KviOption_stringNickname3);
+ m_szAltNicknames[2] = KVI_OPTION_STRING(KviOption_stringNickname4);
+
+
+ createLayout(3,1);
+ layout()->setMargin(10);
+
+ KviTalGroupBox * gbox = addGroupBox(0,0,0,0,1,Qt::Horizontal,__tr2qs_ctx("Basic Properties","options"));
+ KviTalHBox * hb = new KviTalHBox(gbox);
+ hb->setSpacing(3);
+
+ KviStringSelector * sel = addStringSelector(hb,__tr2qs_ctx("Nickname:","options"),KviOption_stringNickname1);
+ sel->setMinimumLabelWidth(120);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(sel,__tr2qs_ctx("<center>Your <b>nickname</b> is your primary form of identification on IRC.<br>" \
+ "Since servers cannot accept multiple users sharing the same nickname " \
+ "(case insensitive), you can provide alternative nicknames to be used in case"\
+ "the server refuses to accept the default one.</center>","options"));
+#endif
+ QValidator * v = new QRegExpValidator(QRegExp("[^-0-9 ][^ ]*"),hb);
+ sel->setValidator(v);
+
+ QPushButton * pb = new QPushButton(__tr2qs_ctx("Alternatives...","options"),hb);
+ connect(pb,SIGNAL(clicked()),this,SLOT(setNickAlternatives()));
+
+ sel = addStringSelector(gbox,__tr2qs_ctx("Username:","options"),KviOption_stringUsername);
+ sel->setMinimumLabelWidth(120);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(sel,__tr2qs_ctx("<center>This is the <b>username</b> that you will use to connect to the server.<br>" \
+ "In the past, it was used as a form of authentication, but it normally has no special use now.<br>" \
+ "In addition to your nickname, you are identified on IRC by your <b>username@hostname</b>.</br>" \
+ "Basically, you can enter any word you like here. :D</center>","options"));
+#endif
+ sel = addStringSelector(gbox,__tr2qs_ctx("Real name:","options"),KviOption_stringRealname);
+ sel->setMinimumLabelWidth(120);
+
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(sel,__tr2qs_ctx("<center>This text will appear when someone does a /WHOIS on you.<br>" \
+ "It is intended to be your real name, but people tend to put random quotes and phrases here too.</center>","options"));
+#endif
+
+
+ QString szOptionalCtcpUserInfo = __tr2qs_ctx("This field is optional and will appear as part of the CTCP USERINFO reply.","options");
+ QString szCenterBegin("<center>");
+ QString szCenterEnd("</center>");
+ QString szTrailing = "<br><br>" + szOptionalCtcpUserInfo + szCenterEnd;
+
+ gbox = addGroupBox(0,1,0,1,1,Qt::Horizontal,__tr2qs_ctx("Profile","options"));
+
+ hb = new KviTalHBox(gbox);
+ hb->setSpacing(4);
+
+ QLabel * l = new QLabel(__tr2qs_ctx("Age:","options"),hb);
+ l->setMinimumWidth(120);
+
+ m_pAgeCombo = new QComboBox(hb);
+#ifdef COMPILE_INFO_TIPS
+ QString szTip1 = szCenterBegin + __tr2qs_ctx("Here you can specify your age.","options") + szTrailing;
+ KviTalToolTip::add(l,szTip1);
+ KviTalToolTip::add(m_pAgeCombo,szTip1);
+#endif
+ m_pAgeCombo->insertItem(__tr2qs_ctx("Unspecified","options"));
+ unsigned int i;
+ for(i=1;i<120;i++)
+ {
+ QString tmp;
+ tmp.setNum(i);
+ m_pAgeCombo->insertItem(tmp);
+ }
+
+ bool bOk;
+ i = KVI_OPTION_STRING(KviOption_stringCtcpUserInfoAge).toUInt(&bOk);
+ if(!bOk)i = 0;
+ if(i > 120)i = 120;
+ m_pAgeCombo->setCurrentItem(i);
+
+ hb->setStretchFactor(m_pAgeCombo,1);
+
+
+ hb = new KviTalHBox(gbox);
+ hb->setSpacing(4);
+
+ l = new QLabel(__tr2qs_ctx("Gender:","options"),hb);
+ l->setMinimumWidth(120);
+
+ m_pGenderCombo = new QComboBox(hb);
+#ifdef COMPILE_INFO_TIPS
+ QString szTip2 = szCenterBegin + __tr2qs_ctx("Here you can specify your gender.","options") + szTrailing;
+ KviTalToolTip::add(l,szTip2);
+ KviTalToolTip::add(m_pGenderCombo,szTip2);
+#endif
+
+ m_pGenderCombo->insertItem(__tr2qs_ctx("Unspecified","options"));
+ m_pGenderCombo->insertItem(__tr2qs_ctx("Female","options"));
+ m_pGenderCombo->insertItem(__tr2qs_ctx("Male","options"));
+
+ if(KviQString::equalCI(KVI_OPTION_STRING(KviOption_stringCtcpUserInfoGender),"Male"))
+ m_pGenderCombo->setCurrentItem(2);
+ else if(KviQString::equalCI(KVI_OPTION_STRING(KviOption_stringCtcpUserInfoGender),"Female"))
+ m_pGenderCombo->setCurrentItem(1);
+ else
+ m_pGenderCombo->setCurrentItem(0);
+
+ hb->setStretchFactor(m_pGenderCombo,1);
+
+ sel = addStringSelector(gbox,__tr2qs_ctx("Location:","options"),KviOption_stringCtcpUserInfoLocation);
+ sel->setMinimumLabelWidth(120);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(sel,szCenterBegin + __tr2qs_ctx("You can describe here your approximate physical location. " \
+ "Something like \"Region, Country\" will be ok. Please note that this information will be viewable " \
+ "by anyone so putting more data (like the exact address), generally, <b>is not a good idea</b>.","options") + szTrailing);
+#endif
+
+ sel = addStringSelector(gbox,__tr2qs_ctx("Languages:","options"),KviOption_stringCtcpUserInfoLanguages);
+ sel->setMinimumLabelWidth(120);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(sel,szCenterBegin + __tr2qs_ctx("You can put here the short names of the languages you can speak. " \
+ "An example might be \"EN,IT\" that would mean that you speak both Italian and English.","options") + szTrailing);
+#endif
+
+ sel = addStringSelector(gbox,__tr2qs_ctx("Other:","options"),KviOption_stringCtcpUserInfoOther);
+ sel->setMinimumLabelWidth(120);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(sel,szCenterBegin + __tr2qs_ctx("You can put here some additional personal data. " \
+ "It might be a funny quote or your homepage url... " \
+ "Please note that this information will be viewable " \
+ "by anyone so <b>don't put any sensible data</b> (passwords, telephone or credit card numbers).","options") + szTrailing);
+#endif
+
+ addRowSpacer(0,2,0,2);
+}
+
+KviIdentityGeneralOptionsWidget::~KviIdentityGeneralOptionsWidget()
+{
+}
+
+void KviIdentityGeneralOptionsWidget::setNickAlternatives()
+{
+ KviNickAlternativesDialog * dlg = new KviNickAlternativesDialog(this,m_szAltNicknames[0],m_szAltNicknames[1],m_szAltNicknames[2]);
+ if(dlg->exec() != QDialog::Accepted)return;
+ dlg->fill(m_szAltNicknames[0],m_szAltNicknames[1],m_szAltNicknames[2]);
+ delete dlg;
+}
+
+
+void KviIdentityGeneralOptionsWidget::commit()
+{
+ KviOptionsWidget::commit();
+
+ if(KVI_OPTION_STRING(KviOption_stringRealname).isEmpty()) KVI_OPTION_STRING(KviOption_stringUsername)=KVI_DEFAULT_REALNAME;
+ if(KVI_OPTION_STRING(KviOption_stringUsername).isEmpty()) KVI_OPTION_STRING(KviOption_stringUsername)=KVI_DEFAULT_USERNAME;
+
+ KVI_OPTION_STRING(KviOption_stringNickname2) = m_szAltNicknames[0];
+ KVI_OPTION_STRING(KviOption_stringNickname3) = m_szAltNicknames[1];
+ KVI_OPTION_STRING(KviOption_stringNickname4) = m_szAltNicknames[2];
+
+
+ int i = m_pAgeCombo->currentItem();
+ if(i < 0)i = 0;
+ if(i > 120)i = 120;
+ if(i <= 0)KVI_OPTION_STRING(KviOption_stringCtcpUserInfoAge) = "";
+ else KVI_OPTION_STRING(KviOption_stringCtcpUserInfoAge).setNum(i);
+
+ switch(m_pGenderCombo->currentItem())
+ {
+ case 1:
+ // this should be in english
+ KVI_OPTION_STRING(KviOption_stringCtcpUserInfoGender) = "Female";
+ break;
+ case 2:
+ // this should be in english
+ KVI_OPTION_STRING(KviOption_stringCtcpUserInfoGender) = "Male";
+ break;
+ default:
+ KVI_OPTION_STRING(KviOption_stringCtcpUserInfoGender) = "";
+ break;
+ }
+
+
+}
+
+
+KviIdentityAvatarOptionsWidget::KviIdentityAvatarOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent)
+{
+ createLayout(4,1);
+ layout()->setMargin(10);
+
+ m_pLocalAvatar = new KviPixmap(KVI_OPTION_PIXMAP(KviOption_pixmapMyAvatar));
+
+ bool bHaveAvatar = (!KVI_OPTION_STRING(KviOption_stringMyAvatar).isEmpty()) && m_pLocalAvatar->pixmap();
+
+#ifdef COMPILE_INFO_TIPS
+ QString szTip = __tr2qs_ctx("Here you can choose your avatar image. It will be visible<br>" \
+ "by other people that request it. Choose a nice image of yourself,<br>" \
+ "possibly avoiding obscenity and offending images. It is a good idea<br>" \
+ "to choose a relatively small file (say 150 Kb max) because<br>" \
+ "most clients have a limit on the size of avatars being downloaded.<br>" \
+ "The image also should be smaller than 800x600 pixels since<br>" \
+ "it will have to be viewable in everyone's monitor.","options");
+#endif
+
+ m_pUseAvatarCheck = new KviStyledCheckBox(__tr2qs_ctx("Use avatar","options"),this);
+ addWidgetToLayout(m_pUseAvatarCheck,0,0,0,0);
+ m_pUseAvatarCheck->setChecked(bHaveAvatar);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(m_pUseAvatarCheck,szTip);
+#endif
+
+ m_pAvatarPreview = new KviPixmapPreview(this);
+ addWidgetToLayout(m_pAvatarPreview,0,1,0,1);
+ m_pAvatarPreview->setPixmap(m_pLocalAvatar);
+ m_pAvatarPreview->setEnabled(bHaveAvatar);
+ connect(m_pUseAvatarCheck,SIGNAL(toggled(bool)),m_pAvatarPreview,SLOT(setEnabled(bool)));
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(m_pAvatarPreview,szTip);
+#endif
+
+ KviTalHBox * hb = new KviTalHBox(this);
+ hb->setSpacing(4);
+ addWidgetToLayout(hb,0,2,0,2);
+
+ m_pAvatarNameEdit = new QLineEdit(hb);
+ m_pAvatarNameEdit->setReadOnly(true);
+ m_pAvatarNameEdit->setEnabled(bHaveAvatar);
+ m_pAvatarNameEdit->setText(KVI_OPTION_STRING(KviOption_stringMyAvatar));
+ connect(m_pUseAvatarCheck,SIGNAL(toggled(bool)),m_pAvatarNameEdit,SLOT(setEnabled(bool)));
+
+ m_pChooseAvatarButton = new QPushButton(__tr2qs_ctx("Choose...","options"),hb);
+ m_pChooseAvatarButton->setEnabled(bHaveAvatar);
+ connect(m_pUseAvatarCheck,SIGNAL(toggled(bool)),m_pChooseAvatarButton,SLOT(setEnabled(bool)));
+
+ connect(m_pChooseAvatarButton,SIGNAL(clicked()),this,SLOT(chooseAvatar()));
+
+ layout()->setRowStretch(1,2);
+}
+
+KviIdentityAvatarOptionsWidget::~KviIdentityAvatarOptionsWidget()
+{
+ delete m_pLocalAvatar;
+}
+
+
+void KviIdentityAvatarOptionsWidget::commit(void)
+{
+ KviOptionsWidget::commit();
+
+ QString szAvatarName = m_pAvatarNameEdit->text();
+
+ if(m_pUseAvatarCheck->isChecked() && m_pLocalAvatar->pixmap() && (!szAvatarName.isEmpty()))
+ {
+ KVI_OPTION_STRING(KviOption_stringMyAvatar) = szAvatarName;
+ KVI_OPTION_PIXMAP(KviOption_pixmapMyAvatar) = *m_pLocalAvatar;
+ g_pApp->setAvatarFromOptions();
+ } else {
+ KVI_OPTION_STRING(KviOption_stringMyAvatar) = "";
+ KVI_OPTION_PIXMAP(KviOption_pixmapMyAvatar) = KviPixmap();
+ }
+
+}
+
+
+void KviIdentityAvatarOptionsWidget::chooseAvatar()
+{
+ QString szCurrent = m_pAvatarNameEdit->text();
+
+ KviAvatarSelectionDialog dlg(this,szCurrent);
+ if(dlg.exec() != QDialog::Accepted)return;
+
+ szCurrent = dlg.avatarName();
+ szCurrent.stripWhiteSpace();
+
+ if(KviQString::equalCIN(szCurrent,"http://",7))
+ {
+ // this is an url
+ // first check if we have it in the cache
+ KviAvatar * a = g_pIconManager->getAvatar(QString::null,szCurrent);
+ if(!a)
+ {
+ // no cache... try downloading
+ KviAvatarDownloadDialog dlg(this,szCurrent);
+ if(dlg.exec() == QDialog::Accepted)
+ {
+ // downloaded!
+ // try to load it
+ if(!m_pLocalAvatar->load(dlg.localFileName()))
+ {
+ // unloadable
+ szCurrent = "";
+ QMessageBox::warning(this,__tr2qs_ctx("Failed to Load Avatar - KVIrc","options"),
+ __tr2qs_ctx("Failed to load the avatar image.<br>" \
+ "It may be an unaccessible file or an " \
+ "unsupported image format.","options"),QMessageBox::Ok,QMessageBox::NoButton);
+ } // else loaded!
+ } else {
+ // unloadable
+ QString tmp;
+ KviQString::sprintf(tmp,__tr2qs_ctx("Failed to download the avatar image.<br>" \
+ "<b>%Q</b>","options"),&(dlg.errorMessage()));
+ QMessageBox::warning(this,__tr2qs_ctx("Avatar Download Failed - KVIrc","options"),tmp,QMessageBox::Ok,QMessageBox::NoButton);
+ szCurrent = "";
+ m_pLocalAvatar->setNull();
+ }
+ } else {
+ // else OK.. got it in the cache
+ m_pLocalAvatar->set(*(a->pixmap()),a->localPath());
+ delete a;
+ }
+ } else {
+ // this is a local path
+ if(m_pLocalAvatar->load(szCurrent))
+ {
+ // local path, loaded
+ QString tmp = szCurrent;
+ int idx = tmp.findRev("/");
+ if(idx != -1)
+ {
+ szCurrent = tmp.right(tmp.length() - (idx + 1));
+ tmp = szCurrent;
+ }
+ idx = tmp.findRev("\\");
+ if(idx != -1)
+ {
+ szCurrent = tmp.right(tmp.length() - (idx + 1));
+ tmp = szCurrent;
+ }
+ } else {
+ // unloadable
+ QMessageBox::warning(this,__tr2qs_ctx("Failed to Load Avatar - KVIrc","options"),
+ __tr2qs_ctx("Failed to load the avatar image.<br>" \
+ "It may be an unaccessible file or an " \
+ "unsupported image format.","options"),QMessageBox::Ok,QMessageBox::NoButton);
+ szCurrent = "";
+ }
+ }
+
+ if(m_pLocalAvatar->pixmap())
+ {
+ if((m_pLocalAvatar->pixmap()->width() > 1024) || (m_pLocalAvatar->pixmap()->height() > 768))
+ {
+ QMessageBox::warning(this,__tr2qs_ctx("Avatar Might Be Too Big - KVIrc","options"),
+ __tr2qs_ctx("The avatar you have choosen is bigger than 1024x768 pixels.<br>" \
+ "Such a big image will not be seen on all the user monitors<br>" \
+ "and will probably be scaled by the remote clients with poor quality<br>" \
+ "algorithms to improve performance. You *should* scale it manually<br>" \
+ "to a sane size (like 800x600) or choose a different image.","options"));
+ }
+ }
+
+ m_pAvatarNameEdit->setText(szCurrent);
+ m_pAvatarPreview->setPixmap(m_pLocalAvatar);
+}
+
+
+
+
+
+
+KviIdentityAdvancedOptionsWidget::KviIdentityAdvancedOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent)
+{
+ m_pISelector=0;
+ m_pWSelector=0;
+ m_pSSelector=0;
+
+ m_sModeStr = KVI_OPTION_STRING(KviOption_stringDefaultUserMode);
+ m_bI = m_sModeStr.contains('i');
+ m_bW = m_sModeStr.contains('w');
+ m_bS = m_sModeStr.contains('s');
+
+
+ createLayout(2,1);
+ layout()->setMargin(10);
+
+ KviTalGroupBox * gbox = addGroupBox(0,0,0,0,1,Qt::Horizontal,__tr2qs_ctx("User Mode","options"));
+ m_pISelector = addBoolSelector(gbox,__tr2qs_ctx("Invisible (+i)","options"),&m_bI);
+ m_pSSelector = addBoolSelector(gbox,__tr2qs_ctx("Server notices (+s)","options"),&m_bS);
+ m_pWSelector = addBoolSelector(gbox,__tr2qs_ctx("Wallops (+w)","options"),&m_bW);
+
+ gbox = addGroupBox(0,1,0,1,1,Qt::Horizontal,__tr2qs_ctx("Default Messages","options"));
+
+
+ KviStringSelector * sel = addStringSelector(gbox, __tr2qs_ctx("Part message:","options"),KviOption_stringPartMessage);
+ sel->setMinimumLabelWidth(120);
+
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(sel,__tr2qs_ctx("<center>This is the default part message that will be used when you<br>" \
+ "leave a channel by closing a channel window.</center>","options"));
+#endif
+
+ sel = addStringSelector(gbox, __tr2qs_ctx("Quit message:","options"),KviOption_stringQuitMessage);
+ sel->setMinimumLabelWidth(120);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(sel,__tr2qs_ctx("<center>This is the default quit message that will be used when you<br>" \
+ "quit your IRC session by closing the console window or disconnecting by pressing the disconnect button.</center>","options"));
+#endif
+
+ addRowSpacer(0,2,0,2);
+}
+
+KviIdentityAdvancedOptionsWidget::~KviIdentityAdvancedOptionsWidget()
+{
+}
+
+void KviIdentityAdvancedOptionsWidget::commit()
+{
+ KviOptionsWidget::commit();
+
+ m_sModeStr = m_bI ? "i" : "";
+ if(m_bS)m_sModeStr += "s";
+ if(m_bW)m_sModeStr += "w";
+
+ KVI_OPTION_STRING(KviOption_stringDefaultUserMode) = m_sModeStr.ptr();
+}
+
+
+
+
+
+
+#include "m_optw_identity.moc"
diff --git a/src/modules/options/optw_identity.h b/src/modules/options/optw_identity.h
new file mode 100644
index 00000000..479614c4
--- /dev/null
+++ b/src/modules/options/optw_identity.h
@@ -0,0 +1,192 @@
+#ifndef _OPTW_IDENTITY_H_
+#define _OPTW_IDENTITY_H_
+
+//=============================================================================
+//
+// File : optw_identity.h
+// Creation date : Tue Nov 14 2000 23:06:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "kvi_optionswidget.h"
+#include "kvi_settings.h"
+#include "kvi_selectors.h"
+
+#include <qdialog.h>
+#include "kvi_pixmap.h"
+
+
+class QLineEdit;
+class QCheckBox;
+class QPushButton;
+class QComboBox;
+
+class KviNickAlternativesDialog : public QDialog
+{
+ friend class KviIdentityGeneralOptionsWidget;
+ Q_OBJECT
+protected:
+ KviNickAlternativesDialog(QWidget * par,const QString &n1,const QString &n2,const QString &n3);
+ ~KviNickAlternativesDialog();
+protected:
+ QLineEdit * m_pNickEdit1;
+ QLineEdit * m_pNickEdit2;
+ QLineEdit * m_pNickEdit3;
+protected:
+ void fill(QString &n1,QString &n2,QString &n3);
+};
+
+class KviAvatarSelectionDialog : public QDialog
+{
+ friend class KviIdentityAvatarOptionsWidget;
+ Q_OBJECT
+public:
+ KviAvatarSelectionDialog(QWidget * par,const QString &szInitialPath);
+ ~KviAvatarSelectionDialog();
+protected:
+ QLineEdit * m_pLineEdit;
+ QString m_szAvatarName;
+protected:
+ virtual void closeEvent(QCloseEvent * e);
+ const QString &avatarName(){ return m_szAvatarName; };
+protected slots:
+ void okClicked();
+ void cancelClicked();
+ void chooseFileClicked();
+};
+
+class KviHttpRequest;
+
+class KviAvatarDownloadDialog : public QDialog
+{
+ friend class KviIdentityAvatarOptionsWidget;
+ Q_OBJECT
+public:
+ KviAvatarDownloadDialog(QWidget * par,const QString &szUrl);
+ ~KviAvatarDownloadDialog();
+protected:
+ KviHttpRequest * m_pRequest;
+ QLabel * m_pOutput;
+ QString m_szErrorMessage;
+ QString m_szLocalFileName;
+ QString m_szUrl;
+protected:
+ virtual void closeEvent(QCloseEvent * e);
+ const QString & localFileName(){ return m_szLocalFileName; };
+ const QString & errorMessage(){ return m_szErrorMessage; };
+protected slots:
+ void startDownload();
+ void cancelClicked();
+ void downloadTerminated(bool bSuccess);
+ void downloadMessage(const char * msg);
+};
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviIdentityOptionsWidget KVI_SMALLICON_WHO
+#define KVI_OPTIONS_WIDGET_NAME_KviIdentityOptionsWidget __tr2qs_no_lookup("Identity")
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviIdentityOptionsWidget 99998
+#define KVI_OPTIONS_WIDGET_CONTAINER_KviIdentityOptionsWidget true
+
+
+class KviIdentityOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviIdentityOptionsWidget(QWidget * parent);
+ ~KviIdentityOptionsWidget();
+};
+
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviIdentityGeneralOptionsWidget KVI_SMALLICON_WHO
+#define KVI_OPTIONS_WIDGET_NAME_KviIdentityGeneralOptionsWidget __tr2qs_no_lookup("General")
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviIdentityGeneralOptionsWidget 90000
+#define KVI_OPTIONS_WIDGET_PARENT_KviIdentityGeneralOptionsWidget KviIdentityOptionsWidget
+
+
+class KviIdentityGeneralOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviIdentityGeneralOptionsWidget(QWidget * pParent);
+ ~KviIdentityGeneralOptionsWidget();
+protected:
+ QString m_szAltNicknames[3];
+
+ QComboBox * m_pAgeCombo;
+ QComboBox * m_pGenderCombo;
+protected slots:
+ void setNickAlternatives();
+protected:
+ virtual void commit(void);
+};
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviIdentityAvatarOptionsWidget KVI_SMALLICON_AVATAR
+#define KVI_OPTIONS_WIDGET_NAME_KviIdentityAvatarOptionsWidget __tr2qs_no_lookup("Avatar")
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviIdentityAvatarOptionsWidget 80000
+#define KVI_OPTIONS_WIDGET_PARENT_KviIdentityAvatarOptionsWidget KviIdentityOptionsWidget
+
+
+class KviIdentityAvatarOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviIdentityAvatarOptionsWidget(QWidget * pParent);
+ ~KviIdentityAvatarOptionsWidget();
+protected:
+ QCheckBox * m_pUseAvatarCheck;
+ QLineEdit * m_pAvatarNameEdit;
+ QPushButton * m_pChooseAvatarButton;
+ KviPixmap * m_pLocalAvatar;
+ KviPixmapPreview * m_pAvatarPreview;
+protected slots:
+ void chooseAvatar();
+protected:
+ virtual void commit(void);
+};
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviIdentityAdvancedOptionsWidget KVI_SMALLICON_SPY
+#define KVI_OPTIONS_WIDGET_NAME_KviIdentityAdvancedOptionsWidget __tr2qs_no_lookup("Advanced")
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviIdentityAdvancedOptionsWidget 70000
+#define KVI_OPTIONS_WIDGET_PARENT_KviIdentityAdvancedOptionsWidget KviIdentityOptionsWidget
+
+
+class KviIdentityAdvancedOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviIdentityAdvancedOptionsWidget(QWidget * pParent);
+ ~KviIdentityAdvancedOptionsWidget();
+protected:
+ bool m_bI;
+ bool m_bW;
+ bool m_bS;
+ KviStr m_sModeStr;
+ KviBoolSelector * m_pISelector;
+ KviBoolSelector * m_pWSelector;
+ KviBoolSelector * m_pSSelector;
+protected:
+ virtual void commit(void);
+};
+
+#endif //!_OPTW_IDENTITY_H_
diff --git a/src/modules/options/optw_ignore.cpp b/src/modules/options/optw_ignore.cpp
new file mode 100644
index 00000000..26e4c0d9
--- /dev/null
+++ b/src/modules/options/optw_ignore.cpp
@@ -0,0 +1,62 @@
+//
+// File : optw_ignore.h
+// Creation date : Thu Feb 12 15:11:29 2002 GMT by Juanjo �lvarez
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "optw_ignore.h"
+
+#include <qlayout.h>
+
+#include "kvi_options.h"
+#include "kvi_locale.h"
+
+//#warning "Info tips"
+
+
+KviIgnoreOptionsWidget::KviIgnoreOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"ignore_options_widget")
+{
+ createLayout(3,1);
+
+ KviTalGroupBox *g = addGroupBox(0,0,0,0,1,Qt::Horizontal,__tr2qs_ctx("Enable Ignore For","options"));
+ m_pIgnorePrivmsg = addBoolSelector(g,__tr2qs_ctx("Private/channel messages","options"),KviOption_boolEnableIgnoreOnPrivMsg);
+ m_pIgnoreNotice = addBoolSelector(g,__tr2qs_ctx("Private/channel notices","options"),KviOption_boolEnableIgnoreOnNotice);
+
+ connect(m_pIgnorePrivmsg,SIGNAL(toggled(bool)),this,SLOT(enableVerbose(bool)));
+
+ m_pVerboseIgnore = addBoolSelector(0,1,0,1,__tr2qs_ctx("Use verbose ignore (show messages in console)","options"),
+ KviOption_boolVerboseIgnore,
+ KVI_OPTION_BOOL(KviOption_boolEnableIgnoreOnPrivMsg) || KVI_OPTION_BOOL(KviOption_boolEnableIgnoreOnNotice));
+
+ addRowSpacer(0,2,0,2);
+}
+
+KviIgnoreOptionsWidget::~KviIgnoreOptionsWidget()
+{
+}
+
+void KviIgnoreOptionsWidget::enableVerbose(bool)
+{
+ m_pVerboseIgnore->setEnabled(m_pIgnorePrivmsg->isChecked() || m_pIgnoreNotice->isChecked());
+}
+
+
+
+#include "m_optw_ignore.moc"
diff --git a/src/modules/options/optw_ignore.h b/src/modules/options/optw_ignore.h
new file mode 100644
index 00000000..cb7203f5
--- /dev/null
+++ b/src/modules/options/optw_ignore.h
@@ -0,0 +1,47 @@
+#ifndef _OPTW_IGNORE_H_
+#define _OPTW_IGNORE_H_
+//
+// File : optw_ignore.h
+// Creation date : Thu Feb 12 15:11:30 2002 GMT by Juanjo �lvarez
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+#include "kvi_selectors.h"
+
+#define KVI_OPTIONS_WIDGET_ICON_KviIgnoreOptionsWidget KVI_SMALLICON_IGNORE
+#define KVI_OPTIONS_WIDGET_NAME_KviIgnoreOptionsWidget __tr2qs_no_lookup("Ignore")
+#define KVI_OPTIONS_WIDGET_PARENT_KviIgnoreOptionsWidget KviProtectionOptionsWidget
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviIgnoreOptionsWidget __tr2qs_no_lookup("protection")
+
+class KviIgnoreOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviIgnoreOptionsWidget(QWidget * parent);
+ ~KviIgnoreOptionsWidget();
+public:
+ KviBoolSelector * m_pIgnorePrivmsg;
+ KviBoolSelector * m_pIgnoreNotice;
+ KviBoolSelector * m_pVerboseIgnore;
+protected slots:
+ void enableVerbose(bool);
+};
+
+#endif //_OPTW_IGNORE_H_
diff --git a/src/modules/options/optw_input.cpp b/src/modules/options/optw_input.cpp
new file mode 100644
index 00000000..4dd73987
--- /dev/null
+++ b/src/modules/options/optw_input.cpp
@@ -0,0 +1,156 @@
+//
+// File : optw_input.cpp
+// Creation date : Sat Aug 11 2001 04:25:52 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include "optw_input.h"
+
+#include <qlayout.h>
+
+#include "kvi_options.h"
+#include "kvi_locale.h"
+
+//#warning "Info tips"
+
+KviInputLookOptionsWidget::KviInputLookOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"ircviewlook_options_widget")
+{
+ createLayout(10,2);
+
+ addFontSelector(0,0,1,0,__tr2qs_ctx("Font","options"),KviOption_fontInput);
+ addColorSelector(0,1,1,1,__tr2qs_ctx("Background color","options"),KviOption_colorInputBackground);
+ addColorSelector(0,2,1,2,__tr2qs_ctx("Foreground color","options"),KviOption_colorInputForeground);
+ addColorSelector(0,3,1,3,__tr2qs_ctx("Selection background color","options"),KviOption_colorInputSelectionBackground);
+ addColorSelector(0,4,1,4,__tr2qs_ctx("Selection foreground color","options"),KviOption_colorInputSelectionForeground);
+ addColorSelector(0,5,1,5,__tr2qs_ctx("Control char color","options"),KviOption_colorInputControl);
+ addColorSelector(0,6,1,6,__tr2qs_ctx("Cursor color","options"),KviOption_colorInputCursor);
+
+ addPixmapSelector(0,7,1,7,__tr2qs_ctx("Background image","options"),KviOption_pixmapInputBackground);
+
+ addLabel(0,8,0,8,__tr2qs_ctx("Horizontal align:","options"));
+ m_pHorizontalAlign=new QComboBox(this);
+ addWidgetToLayout(m_pHorizontalAlign,1,8,1,8);
+
+ addLabel(0,9,0,9,__tr2qs_ctx("Vertical align:","options"));
+ m_pVerticalAlign=new QComboBox(this);
+ addWidgetToLayout(m_pVerticalAlign,1,9,1,9);
+
+ m_pHorizontalAlign->insertItem(__tr2qs_ctx("Tile","options"));
+ m_pHorizontalAlign->insertItem(__tr2qs_ctx("Left","options"));
+ m_pHorizontalAlign->insertItem(__tr2qs_ctx("Right","options"));
+ m_pHorizontalAlign->insertItem(__tr2qs_ctx("Center","options"));
+
+ m_pVerticalAlign->insertItem(__tr2qs_ctx("Tile","options"));
+ m_pVerticalAlign->insertItem(__tr2qs_ctx("Top","options"));
+ m_pVerticalAlign->insertItem(__tr2qs_ctx("Bottom","options"));
+ m_pVerticalAlign->insertItem(__tr2qs_ctx("Center","options"));
+
+ switch( KVI_OPTION_UINT(KviOption_uintInputPixmapAlign) & Qt::AlignHorizontal_Mask)
+ {
+ case Qt::AlignLeft:
+ m_pHorizontalAlign->setCurrentItem(1);
+ break;
+ case Qt::AlignRight:
+ m_pHorizontalAlign->setCurrentItem(2);
+ break;
+ case Qt::AlignHCenter:
+ m_pHorizontalAlign->setCurrentItem(3);
+ break;
+ default:
+ m_pHorizontalAlign->setCurrentItem(0);
+ }
+
+ switch( KVI_OPTION_UINT(KviOption_uintInputPixmapAlign) & Qt::AlignVertical_Mask)
+ {
+ case Qt::AlignTop:
+ m_pVerticalAlign->setCurrentItem(1);
+ break;
+ case Qt::AlignBottom:
+ m_pVerticalAlign->setCurrentItem(2);
+ break;
+ case Qt::AlignVCenter:
+ m_pVerticalAlign->setCurrentItem(3);
+ break;
+ default:
+ m_pVerticalAlign->setCurrentItem(0);
+ }
+
+
+ layout()->setRowStretch(7,1);
+}
+
+KviInputLookOptionsWidget::~KviInputLookOptionsWidget()
+{
+}
+
+void KviInputLookOptionsWidget::commit()
+{
+ int iFlags=0;
+ switch(m_pHorizontalAlign->currentItem())
+ {
+ case 1:
+ iFlags|=Qt::AlignLeft;
+ break;
+ case 2:
+ iFlags|=Qt::AlignRight;
+ break;
+ case 3:
+ iFlags|=Qt::AlignHCenter;
+ break;
+ }
+ switch(m_pVerticalAlign->currentItem())
+ {
+ case 1:
+ iFlags|=Qt::AlignTop;
+ break;
+ case 2:
+ iFlags|=Qt::AlignBottom;
+ break;
+ case 3:
+ iFlags|=Qt::AlignVCenter;
+ break;
+ }
+
+ KVI_OPTION_UINT(KviOption_uintInputPixmapAlign)=iFlags;
+ KviOptionsWidget::commit();
+}
+
+
+
+KviInputFeaturesOptionsWidget::KviInputFeaturesOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"ircviewfeatures_options_widget")
+{
+ createLayout(6,1);
+
+ addBoolSelector(0,0,0,0,__tr2qs_ctx("Warp cursor at the end of line when browsing history","options"),KviOption_boolInputHistoryCursorAtEnd);
+ addBoolSelector(0,1,0,1,__tr2qs_ctx("Disable the input history window and it's log memory.","options"),KviOption_boolDisableInputHistory); //G&N 2005
+ addBoolSelector(0,2,0,2,__tr2qs_ctx("Hide input toolbuttons by default","options"),KviOption_boolHideInputToolButtons);
+ KviTalGroupBox * g = addGroupBox(0,3,0,3,1,Qt::Horizontal,__tr2qs_ctx("Nick completion","options"));
+ addBoolSelector(g,__tr2qs_ctx("Use bash-like nick completion","options"),KviOption_boolBashLikeNickCompletion);
+ addStringSelector(g,__tr2qs_ctx("Nick completion postfix string","options"),KviOption_stringNickCompletionPostfix);
+ addBoolSelector(g,__tr2qs_ctx("Use the completion postfix string for the first word only","options"),KviOption_boolUseNickCompletionPostfixForFirstWordOnly);
+ addBoolSelector(0,4,0,4,__tr2qs_ctx("Commandline in user-friendly mode by default","options"),KviOption_boolCommandlineInUserFriendlyModeByDefault);
+ addRowSpacer(0,5,0,5);
+}
+
+KviInputFeaturesOptionsWidget::~KviInputFeaturesOptionsWidget()
+{
+}
+
+#include "m_optw_input.moc"
diff --git a/src/modules/options/optw_input.h b/src/modules/options/optw_input.h
new file mode 100644
index 00000000..eb088460
--- /dev/null
+++ b/src/modules/options/optw_input.h
@@ -0,0 +1,61 @@
+#ifndef _OPTW_INPUT_H_
+#define _OPTW_INPUT_H_
+
+//==================================================================================
+//
+// File : optw_input.h
+// Creation date : Sat Aug 11 2001 04:25:01 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//==================================================================================
+
+#include "kvi_optionswidget.h"
+#include <qcombobox.h>
+
+#define KVI_OPTIONS_WIDGET_ICON_KviInputLookOptionsWidget KVI_SMALLICON_INPUT
+#define KVI_OPTIONS_WIDGET_NAME_KviInputLookOptionsWidget __tr2qs_no_lookup("Input")
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviInputLookOptionsWidget __tr2qs_no_lookup("theme,colors,text")
+#define KVI_OPTIONS_WIDGET_GROUP_KviInputLookOptionsWidget "theme"
+
+class KviInputLookOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+private:
+ QComboBox* m_pHorizontalAlign;
+ QComboBox* m_pVerticalAlign;
+public:
+ KviInputLookOptionsWidget(QWidget * parent);
+ ~KviInputLookOptionsWidget();
+
+ virtual void commit();
+};
+
+#define KVI_OPTIONS_WIDGET_ICON_KviInputFeaturesOptionsWidget KVI_SMALLICON_INPUT
+#define KVI_OPTIONS_WIDGET_NAME_KviInputFeaturesOptionsWidget __tr2qs_no_lookup("Input")
+#define KVI_OPTIONS_WIDGET_PARENT_KviInputFeaturesOptionsWidget KviInterfaceFeaturesOptionsWidget
+
+class KviInputFeaturesOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviInputFeaturesOptionsWidget(QWidget * parent);
+ ~KviInputFeaturesOptionsWidget();
+};
+
+#endif //!_OPTW_INPUT_H_
diff --git a/src/modules/options/optw_interfacefeatures.cpp b/src/modules/options/optw_interfacefeatures.cpp
new file mode 100644
index 00000000..3cae7662
--- /dev/null
+++ b/src/modules/options/optw_interfacefeatures.cpp
@@ -0,0 +1,88 @@
+//=============================================================================
+//
+// File : optw_interfacefeatures.cpp
+// Creation date : Sat Jun 2 2001 14:52:53 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "optw_interfacefeatures.h"
+
+#include <qlayout.h>
+#include <qlabel.h>
+#include <string.h>
+
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_app.h"
+#include "kvi_fileutils.h"
+
+KviInterfaceFeaturesOptionsWidget::KviInterfaceFeaturesOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"interfacefeatures_options_widget")
+{
+ createLayout(8,1);
+
+
+
+ addBoolSelector(0,0,0,0,__tr2qs_ctx("Minimize on startup","options"),KviOption_boolStartupMinimized);
+ addBoolSelector(0,1,0,1,__tr2qs_ctx("Confirm quit with active connections","options"),KviOption_boolConfirmCloseWhenThereAreConnections);
+ addBoolSelector(0,2,0,2,__tr2qs_ctx("Remember window properties","options"),KviOption_boolWindowsRememberProperties);
+
+ QString szSplashDisableFile;
+ g_pApp->getLocalKvircDirectory(szSplashDisableFile,KviApp::Pics,"disable-splash." KVI_VERSION);
+ bool bDisableSplash = KviFileUtils::fileExists(szSplashDisableFile);
+ m_pDisableSplash = new KviStyledCheckBox(__tr2qs_ctx("Disable splash screen","options"),this);
+ addWidgetToLayout(m_pDisableSplash,0,3,0,3);
+ m_pDisableSplash->setChecked(bDisableSplash);
+
+ addBoolSelector(0,4,0,4,__tr2qs_ctx("Enable visual effects","options"),KviOption_boolEnableVisualEffects);
+ addBoolSelector(0,5,0,5,__tr2qs_ctx("Hide Channel window tool buttons by default","options"),KviOption_boolHideWindowToolButtons);
+
+ KviTalGroupBox * g = addGroupBox(0,6,0,6,1,Qt::Horizontal,__tr2qs_ctx("Open Dialog Window For","options"));
+ addBoolSelector(g,__tr2qs_ctx("Preferences","options"),KviOption_boolShowGeneralOptionsDialogAsToplevel);
+ addBoolSelector(g,__tr2qs_ctx("Registered Users","options"),KviOption_boolShowRegisteredUsersDialogAsToplevel);
+ addBoolSelector(g,__tr2qs_ctx("Identity","options"),KviOption_boolShowIdentityDialogAsToplevel);
+ addBoolSelector(g,__tr2qs_ctx("Servers","options"),KviOption_boolShowServersConnectDialogAsToplevel);
+ addBoolSelector(g,__tr2qs_ctx("Join Channels","options"),KviOption_boolShowChannelsJoinDialogAsToplevel);
+ addRowSpacer(0,7,0,7);
+}
+
+KviInterfaceFeaturesOptionsWidget::~KviInterfaceFeaturesOptionsWidget()
+{
+}
+
+void KviInterfaceFeaturesOptionsWidget::commit()
+{
+ KviOptionsWidget::commit();
+
+ QString szSplashDisableFile;
+ g_pApp->getLocalKvircDirectory(szSplashDisableFile,KviApp::Pics,"disable-splash." KVI_VERSION);
+
+ if(m_pDisableSplash->isChecked())
+ {
+ if(!KviFileUtils::fileExists(szSplashDisableFile))
+ KviFileUtils::writeFile(szSplashDisableFile,"");
+ } else {
+ if(KviFileUtils::fileExists(szSplashDisableFile))
+ KviFileUtils::removeFile(szSplashDisableFile);
+ }
+
+}
+
+#include "m_optw_interfacefeatures.moc"
diff --git a/src/modules/options/optw_interfacefeatures.h b/src/modules/options/optw_interfacefeatures.h
new file mode 100644
index 00000000..f85dfb9e
--- /dev/null
+++ b/src/modules/options/optw_interfacefeatures.h
@@ -0,0 +1,48 @@
+#ifndef _OPTW_INTERFACEFEATURES_H_
+#define _OPTW_INTERFACEFEATURES_H_
+
+//=============================================================================
+//
+// File : optw_interfacefeatures.h
+// Creation date : Sat Jun 2 2001 14:50:01 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_optionswidget.h"
+
+#define KVI_OPTIONS_WIDGET_ICON_KviInterfaceFeaturesOptionsWidget KVI_SMALLICON_IDEA
+#define KVI_OPTIONS_WIDGET_NAME_KviInterfaceFeaturesOptionsWidget __tr2qs_no_lookup("Interface")
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviInterfaceFeaturesOptionsWidget 50000
+
+class QCheckBox;
+
+class KviInterfaceFeaturesOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviInterfaceFeaturesOptionsWidget(QWidget * parent);
+ ~KviInterfaceFeaturesOptionsWidget();
+protected:
+ QCheckBox * m_pDisableSplash;
+public:
+ virtual void commit();
+};
+
+#endif //!_OPTW_INTERFACEFEATURES_H_
diff --git a/src/modules/options/optw_interfacelookglobal.cpp b/src/modules/options/optw_interfacelookglobal.cpp
new file mode 100644
index 00000000..50cf845f
--- /dev/null
+++ b/src/modules/options/optw_interfacelookglobal.cpp
@@ -0,0 +1,215 @@
+//
+// File : optw_interfacelookglobal.cpp
+// Creation date : Sun Jun 3 2001 20:50:13 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "optw_interfacelookglobal.h"
+
+#include <qlayout.h>
+
+#include "kvi_settings.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+KviThemeGeneralOptionsWidget::KviThemeGeneralOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent)
+{
+ createLayout(4,2);
+
+ KviBoolSelector * b = addBoolSelector(0,1,1,1,__tr2qs_ctx("Use global application font","options"),KviOption_boolUseGlobalApplicationFont);
+ KviBoolSelector * g = addBoolSelector(0,0,1,0,__tr2qs_ctx("Hide icons in Popup","options"),KviOption_boolDisablePopupIcons);
+ KviFontSelector * f = addFontSelector(0,2,1,2,__tr2qs_ctx("Global application font:","options"),KviOption_fontApplication,
+ KVI_OPTION_BOOL(KviOption_boolUseGlobalApplicationFont));
+
+ connect(b,SIGNAL(toggled(bool)),f,SLOT(setEnabled(bool)));
+
+ addRowSpacer(0,3,1,3);
+}
+
+KviThemeGeneralOptionsWidget::~KviThemeGeneralOptionsWidget()
+{
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviThemeTransparencyOptionsWidget::KviThemeTransparencyOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent)
+{
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+
+ #ifdef COMPILE_KDE_SUPPORT
+ createLayout(7,2);
+ #else
+ createLayout(5,2);
+ #endif
+
+ m_pUseTransparencyBoolSelector = addBoolSelector(0,0,1,0,__tr2qs_ctx("Enable fake transparency","options"),KviOption_boolUseGlobalPseudoTransparency);
+#ifdef COMPILE_INFO_TIPS
+ #ifdef COMPILE_KDE_SUPPORT
+ mergeTip(m_pUseTransparencyBoolSelector,
+ __tr2qs_ctx("<center>This option makes all KVIrc windows look " \
+ "transparent.<br>You must choose a blending " \
+ "background image to below or check the " \
+ "\"Use KDE desktop for transparency\" option.</center>","options"));
+ #else
+ mergeTip(m_pUseTransparencyBoolSelector,
+ __tr2qs_ctx("<center>This option makes all KVIrc windows look " \
+ "like transparent.<br>You must choose a blending " \
+ "background image to below.</center>","options"));
+ #endif
+#endif
+
+ KviUIntSelector * u = addUIntSelector(0,1,1,1,__tr2qs_ctx("Child window opacity:","options"),KviOption_uintGlobalTransparencyChildFadeFactor,
+ 0,100,35,KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency));
+ connect(m_pUseTransparencyBoolSelector,SIGNAL(toggled(bool)),u,SLOT(setEnabled(bool)));
+
+ u = addUIntSelector(0,2,1,2,__tr2qs_ctx("Parent window opacity:","options"),KviOption_uintGlobalTransparencyParentFadeFactor,
+ 0,100,10,KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency));
+ connect(m_pUseTransparencyBoolSelector,SIGNAL(toggled(bool)),u,SLOT(setEnabled(bool)));
+
+ KviColorSelector * c = addColorSelector(0,3,1,3,__tr2qs_ctx("Blend color:","options"),KviOption_colorGlobalTransparencyFade,
+ KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency));
+ connect(m_pUseTransparencyBoolSelector,SIGNAL(toggled(bool)),c,SLOT(setEnabled(bool)));
+
+// addRowSpacer(0,13,0,13);
+#ifdef COMPILE_KDE_SUPPORT
+ m_pObtainBackgroundFromKdeBoolSelector = addBoolSelector(0,4,1,4,__tr2qs_ctx("Use KDE desktop for transparency","options"),KviOption_boolObtainGlobalBackgroundFromKde,
+ KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency));
+ connect(m_pUseTransparencyBoolSelector,SIGNAL(toggled(bool)),m_pObtainBackgroundFromKdeBoolSelector,SLOT(setEnabled(bool)));
+ connect(m_pObtainBackgroundFromKdeBoolSelector,SIGNAL(toggled(bool)),this,SLOT(enableUpdateKdeBackgroundBoolSelector(bool)));
+
+ m_pUpdateKdeBackgroundOnChangeBoolSelector = addBoolSelector(0,5,1,5,__tr2qs_ctx("Keep in sync with KDE background changes","options"),KviOption_boolUpdateKdeBackgroundOnChange,
+ KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency) && KVI_OPTION_BOOL(KviOption_boolObtainGlobalBackgroundFromKde));
+
+ m_pGlobalBackgroundPixmapSelector = addPixmapSelector(0,6,1,6,__tr2qs_ctx("Transparency blend image:","options"),KviOption_pixmapGlobalTransparencyBackground,
+ KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency) && !KVI_OPTION_BOOL(KviOption_boolObtainGlobalBackgroundFromKde));
+ layout()->setRowStretch(6,1);
+ connect(m_pObtainBackgroundFromKdeBoolSelector,SIGNAL(toggled(bool)),this,SLOT(enableGlobalBackgroundPixmapSelector(bool)));
+
+#else //!COMPILE_KDE_SUPPORT
+ m_pGlobalBackgroundPixmapSelector = addPixmapSelector(0,4,1,4,__tr2qs_ctx("Transparency blend image:","options"),KviOption_pixmapGlobalTransparencyBackground,
+ KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency));
+ layout()->setRowStretch(4,1);
+#endif //!COMPILE_KDE_SUPPORT
+ connect(m_pUseTransparencyBoolSelector,SIGNAL(toggled(bool)),this,SLOT(enableGlobalBackgroundPixmapSelector(bool)));
+ connect(m_pUseTransparencyBoolSelector,SIGNAL(toggled(bool)),this,SLOT(enableUpdateKdeBackgroundBoolSelector(bool)));
+#else
+ createLayout(1,1);
+ addRowSpacer(0,0,0,0);
+#endif
+}
+
+KviThemeTransparencyOptionsWidget::~KviThemeTransparencyOptionsWidget()
+{
+}
+
+void KviThemeTransparencyOptionsWidget::enableGlobalBackgroundPixmapSelector(bool)
+{
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ #ifdef COMPILE_KDE_SUPPORT
+ m_pGlobalBackgroundPixmapSelector->setEnabled(m_pUseTransparencyBoolSelector->isChecked() && !(m_pObtainBackgroundFromKdeBoolSelector->isChecked()));
+ #else
+ m_pGlobalBackgroundPixmapSelector->setEnabled(m_pUseTransparencyBoolSelector->isChecked());
+ #endif
+#endif
+}
+
+void KviThemeTransparencyOptionsWidget::enableUpdateKdeBackgroundBoolSelector(bool)
+{
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ #ifdef COMPILE_KDE_SUPPORT
+ m_pUpdateKdeBackgroundOnChangeBoolSelector->setEnabled(m_pUseTransparencyBoolSelector->isChecked() && m_pObtainBackgroundFromKdeBoolSelector->isChecked());
+ #endif
+#endif
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviThemeMdiCaptionsOptionsWidget::KviThemeMdiCaptionsOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent)
+{
+ createLayout(7,1);
+
+ addColorSelector(0,0,0,0,__tr2qs_ctx("Active Background","options"),KviOption_colorMdiCaptionActive);
+ addColorSelector(0,1,0,1,__tr2qs_ctx("Inactive Background","options"),KviOption_colorMdiCaptionInactive);
+ addColorSelector(0,2,0,2,__tr2qs_ctx("Active Text (Primary)","options"),KviOption_colorCaptionTextActive);
+ addColorSelector(0,3,0,3,__tr2qs_ctx("Active Text (Secondary)","options"),KviOption_colorCaptionTextActive2);
+ addColorSelector(0,4,0,4,__tr2qs_ctx("Inactive Text (Primary)","options"),KviOption_colorCaptionTextInactive);
+ addColorSelector(0,5,0,5,__tr2qs_ctx("Inactive Text (Secondary)","options"),KviOption_colorCaptionTextInactive2);
+
+ addRowSpacer(0,6,0,6);
+}
+
+KviThemeMdiCaptionsOptionsWidget::~KviThemeMdiCaptionsOptionsWidget()
+{
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviThemeMdiAreaOptionsWidget::KviThemeMdiAreaOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent)
+{
+ createLayout(2,1);
+
+ addColorSelector(0,0,0,0,__tr2qs_ctx("Background","options"),KviOption_colorMdiBackground);
+ addPixmapSelector(0,1,0,1,__tr2qs_ctx("Background Image","options"),KviOption_pixmapMdiBackground);
+
+ layout()->setRowStretch(1,1);
+}
+
+KviThemeMdiAreaOptionsWidget::~KviThemeMdiAreaOptionsWidget()
+{
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviThemeToolBarAppletsOptionsWidget::KviThemeToolBarAppletsOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent)
+{
+ createLayout(9,1);
+
+ addFontSelector(0,0,0,0,__tr2qs_ctx("Font","options"),KviOption_fontIrcToolBarApplet);
+
+ addColorSelector(0,1,0,1,__tr2qs_ctx("Background","options"),KviOption_colorIrcToolBarAppletBackground);
+ addColorSelector(0,2,0,2,__tr2qs_ctx("Low-Contrast Foreground","options"),KviOption_colorIrcToolBarAppletForegroundLowContrast);
+ addColorSelector(0,3,0,3,__tr2qs_ctx("Mid-Contrast Foreground","options"),KviOption_colorIrcToolBarAppletForegroundMidContrast);
+ addColorSelector(0,4,0,4,__tr2qs_ctx("Active High-Contrast Foreground (Primary)","options"),KviOption_colorIrcToolBarAppletForegroundHighContrastActive1);
+ addColorSelector(0,5,0,5,__tr2qs_ctx("Active High-Contrast Foreground (Secondary)","options"),KviOption_colorIrcToolBarAppletForegroundHighContrastActive2);
+ addColorSelector(0,6,0,6,__tr2qs_ctx("Inactive High-Contrast Foreground (Primary)","options"),KviOption_colorIrcToolBarAppletForegroundHighContrastInactive1);
+ addColorSelector(0,7,0,7,__tr2qs_ctx("Inactive High-Contrast Foreground (Secondary)","options"),KviOption_colorIrcToolBarAppletForegroundHighContrastInactive2);
+
+ addPixmapSelector(0,8,0,8,__tr2qs_ctx("Background Image","options"),KviOption_pixmapIrcToolBarAppletBackground);
+
+ layout()->setRowStretch(8,1);
+}
+
+KviThemeToolBarAppletsOptionsWidget::~KviThemeToolBarAppletsOptionsWidget()
+{
+}
+
+
+#include "m_optw_interfacelookglobal.moc"
diff --git a/src/modules/options/optw_interfacelookglobal.h b/src/modules/options/optw_interfacelookglobal.h
new file mode 100644
index 00000000..ac4153b1
--- /dev/null
+++ b/src/modules/options/optw_interfacelookglobal.h
@@ -0,0 +1,113 @@
+#ifndef _OPTW_INTERFACELOOKGLOBAL_H_
+#define _OPTW_INTERFACELOOKGLOBAL_H_
+
+//
+// File : optw_interfacelookglobal.h
+// Creation date : Sun Jun 3 2001 20:49:02 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+#include "kvi_optionswidget.h"
+#include "kvi_selectors.h"
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviThemeGeneralOptionsWidget KVI_SMALLICON_GUI
+#define KVI_OPTIONS_WIDGET_NAME_KviThemeGeneralOptionsWidget __tr2qs_no_lookup("General")
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviThemeGeneralOptionsWidget __tr2qs_no_lookup("theme")
+#define KVI_OPTIONS_WIDGET_GROUP_KviThemeGeneralOptionsWidget "theme"
+
+
+class KviThemeGeneralOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviThemeGeneralOptionsWidget(QWidget * parent);
+ ~KviThemeGeneralOptionsWidget();
+};
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviThemeTransparencyOptionsWidget KVI_SMALLICON_TRANSPARENT
+#define KVI_OPTIONS_WIDGET_NAME_KviThemeTransparencyOptionsWidget __tr2qs_no_lookup("Transparency")
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviThemeTransparencyOptionsWidget __tr2qs_no_lookup("theme,background")
+#define KVI_OPTIONS_WIDGET_GROUP_KviThemeTransparencyOptionsWidget "theme"
+
+
+class KviThemeTransparencyOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviThemeTransparencyOptionsWidget(QWidget * parent);
+ ~KviThemeTransparencyOptionsWidget();
+protected:
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ KviPixmapSelector * m_pGlobalBackgroundPixmapSelector;
+ KviBoolSelector * m_pUseTransparencyBoolSelector;
+ #ifdef COMPILE_KDE_SUPPORT
+ KviBoolSelector * m_pObtainBackgroundFromKdeBoolSelector;
+ KviBoolSelector * m_pUpdateKdeBackgroundOnChangeBoolSelector;
+ #endif
+#endif
+protected slots:
+ void enableGlobalBackgroundPixmapSelector(bool);
+ void enableUpdateKdeBackgroundBoolSelector(bool);
+};
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviThemeMdiCaptionsOptionsWidget KVI_SMALLICON_CAPTION
+#define KVI_OPTIONS_WIDGET_NAME_KviThemeMdiCaptionsOptionsWidget __tr2qs_no_lookup("Window Captions")
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviThemeMdiCaptionsOptionsWidget __tr2qs_no_lookup("theme,mdi")
+#define KVI_OPTIONS_WIDGET_GROUP_KviThemeMdiCaptionsOptionsWidget "theme"
+
+class KviThemeMdiCaptionsOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviThemeMdiCaptionsOptionsWidget(QWidget * parent);
+ ~KviThemeMdiCaptionsOptionsWidget();
+};
+
+#define KVI_OPTIONS_WIDGET_ICON_KviThemeMdiAreaOptionsWidget KVI_SMALLICON_APPLET
+#define KVI_OPTIONS_WIDGET_NAME_KviThemeMdiAreaOptionsWidget __tr2qs_no_lookup("Workspace")
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviThemeMdiAreaOptionsWidget __tr2qs_no_lookup("theme,mdi")
+#define KVI_OPTIONS_WIDGET_GROUP_KviThemeMdiAreaOptionsWidget "theme"
+
+class KviThemeMdiAreaOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviThemeMdiAreaOptionsWidget(QWidget * parent);
+ ~KviThemeMdiAreaOptionsWidget();
+};
+
+#define KVI_OPTIONS_WIDGET_ICON_KviThemeToolBarAppletsOptionsWidget KVI_SMALLICON_APPLET
+#define KVI_OPTIONS_WIDGET_NAME_KviThemeToolBarAppletsOptionsWidget __tr2qs_no_lookup("ToolBar Applets")
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviThemeToolBarAppletsOptionsWidget __tr2qs_no_lookup("theme,toolbar")
+#define KVI_OPTIONS_WIDGET_GROUP_KviThemeToolBarAppletsOptionsWidget "theme"
+
+
+class KviThemeToolBarAppletsOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviThemeToolBarAppletsOptionsWidget(QWidget * parent);
+ ~KviThemeToolBarAppletsOptionsWidget();
+};
+
+#endif //!_OPTW_INTERFACELOOKGLOBAL_H_
diff --git a/src/modules/options/optw_irc.cpp b/src/modules/options/optw_irc.cpp
new file mode 100644
index 00000000..537fde9a
--- /dev/null
+++ b/src/modules/options/optw_irc.cpp
@@ -0,0 +1,220 @@
+//
+// File : optw_irc.cpp
+// Creation date : Sun Dec 2 18:59:48 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "optw_irc.h"
+
+#include "kvi_settings.h"
+#include "kvi_locale.h"
+#include "kvi_options.h"
+#include "kvi_ircmask.h"
+
+#include <qcombobox.h>
+
+
+KviIrcOptionsWidget::KviIrcOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"irc_options_widget")
+{
+}
+
+
+KviIrcOptionsWidget::~KviIrcOptionsWidget()
+{
+}
+
+
+KviIrcGeneralOptionsWidget::KviIrcGeneralOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"irc_options_widget")
+{
+ createLayout(3,1);
+ KviBoolSelector *b = addBoolSelector(0,0,0,0,__tr2qs_ctx("Minimize console after successful login","options"),KviOption_boolMinimizeConsoleAfterConnect);
+
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,__tr2qs_ctx("<center>This option will cause KVIrc to minimize the console window after successfully logging into a server.</center>","options"));
+#endif
+
+ b = addBoolSelector(0,1,0,1,__tr2qs_ctx("Show network name in console taskbar entry","options"),KviOption_boolShowNetworkNameForConsoleTaskBarEntry);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,__tr2qs_ctx("<center>This option will cause KVIrc to show the network name as the console taskbar entry instead of the server name. This is nice to keep on unless your servers are not organized in networks or you often connect to two servers of the same network.</center>","options"));
+#endif
+
+
+ addRowSpacer(0,2,0,2);
+}
+
+
+KviIrcGeneralOptionsWidget::~KviIrcGeneralOptionsWidget()
+{
+}
+
+
+
+KviIrcAdvancedOptionsWidget::KviIrcAdvancedOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"irc_advanced_options_widget")
+{
+ createLayout(3,1);
+ KviBoolSelector *b = addBoolSelector(0,0,0,0,__tr2qs_ctx("Force immediate quit","options"),KviOption_boolForceBrutalQuit);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,
+ __tr2qs_ctx("<center>This option causes KVIrc to close " \
+ "the connection immediately after sending the QUIT message.<br>" \
+ "When this option is disabled, KVIrc will wait for the server " \
+ "to close the connection.<br>" \
+ "Note that if you use this, your QUIT message may be not displayed.</center>","options"));
+#endif
+ addBoolSelector(0,1,0,1,__tr2qs_ctx("Prepend gender info to realname","options"),KviOption_boolPrependGenderInfoToRealname);
+}
+
+KviIrcAdvancedOptionsWidget::~KviIrcAdvancedOptionsWidget()
+{
+}
+
+
+
+
+
+KviChannelOptionsWidget::KviChannelOptionsWidget(QWidget * pParent)
+: KviOptionsWidget(pParent)
+{
+}
+
+KviChannelOptionsWidget::~KviChannelOptionsWidget()
+{
+}
+
+
+KviChannelGeneralOptionsWidget::KviChannelGeneralOptionsWidget(QWidget * pParent)
+: KviOptionsWidget(pParent)
+{
+ createLayout(5,1);
+
+ KviTalGroupBox * g = addGroupBox(0,0,0,0,1,Qt::Horizontal,__tr2qs_ctx("On Channel Kick","options"));
+
+ KviBoolSelector *b = addBoolSelector(g,__tr2qs_ctx("Rejoin channel","options"),KviOption_boolRejoinChannelOnKick);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,
+ __tr2qs_ctx("<center>This option will cause KVIrc to attempt " \
+ "to rejoin a channel after being kicked.</center>","options"));
+#endif
+ b = addBoolSelector(g,__tr2qs_ctx("Keep channel open","options"),KviOption_boolKeepChannelOpenOnKick);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,
+ __tr2qs_ctx("<center>This option will cause KVIrc to keep " \
+ "the channel window open after being kicked.<br>" \
+ "It might be a good idea to also enable the " \
+ "\"Rejoin channel\" option.</center>","options"));
+#endif
+
+ g = addGroupBox(0,1,0,1,1,Qt::Horizontal,__tr2qs_ctx("On Channel Part","options"));
+
+ b = addBoolSelector(g,__tr2qs_ctx("Keep channel open","options"),KviOption_boolKeepChannelOpenOnPart);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,
+ __tr2qs_ctx("<center>This option will cause KVIrc to keep " \
+ "the channel window open after leaving it.</center>","options"));
+#endif
+
+ b = addBoolSelector(0,2,0,2,__tr2qs_ctx("Automatically join channel on invite","options"),KviOption_boolAutoJoinOnInvite);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,
+ __tr2qs_ctx("<center>This option will cause KVIrc to automatically " \
+ "join a channel when an INVITE message for that channel is received.<br>" \
+ "<b>Warning:</b> This may help spammers harass you. :)</center>","options"));
+#endif
+
+ b = addBoolSelector(0,3,0,3, __tr2qs_ctx("Always open channels as minimized","options"),KviOption_boolCreateMinimizedChannels);
+
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,
+ __tr2qs_ctx("<center>This option causes newly created " \
+ "channel windows to be immediately minimized.<br>" \
+ "Enable this if you don't like channels " \
+ "popping up while you're typing something in a channel. :D</center>","options"));
+#endif
+
+
+ addRowSpacer(0,4,0,4);
+}
+
+KviChannelGeneralOptionsWidget::~KviChannelGeneralOptionsWidget()
+{
+}
+
+
+KviChannelAdvancedOptionsWidget::KviChannelAdvancedOptionsWidget(QWidget * pParent)
+: KviOptionsWidget(pParent)
+{
+ createLayout(6,4);
+
+ KviBoolSelector * b = addBoolSelector(0,0,4,0,__tr2qs_ctx("Log joined channels history","options"),KviOption_boolLogChannelHistory);
+
+ addLabel(0,1,0,1,__tr2qs_ctx("Default ban mask:","options"));
+
+ m_pBanTypeCombo=new QComboBox(this);
+ addWidgetToLayout(m_pBanTypeCombo,1,1,4,1);
+
+ KviIrcMask hostmask("[email protected]");
+ KviIrcMask ipmask("[email protected]");
+ QString tmp1;
+ QString tmp2;
+ for(int i=0;i<=26;i++)
+ {
+
+ hostmask.mask(tmp1,(KviIrcMask::MaskType)i);
+ ipmask.mask(tmp2,(KviIrcMask::MaskType)i);
+ m_pBanTypeCombo->insertItem(QString("%1 (%2)").arg(tmp1).arg(tmp2));
+ }
+ m_pBanTypeCombo->setCurrentItem(KVI_OPTION_UINT(KviOption_uintDefaultBanType));
+
+ KviTalGroupBox * g = addGroupBox(0,2,4,2,1,Qt::Horizontal,__tr2qs_ctx("On Channel Join","options"));
+ addBoolSelector(g,__tr2qs_ctx("Do not send /WHO request","options"),KviOption_boolDisableWhoRequestOnJoin);
+ addBoolSelector(g,__tr2qs_ctx("Do not request ban list","options"),KviOption_boolDisableBanListRequestOnJoin);
+ addBoolSelector(g,__tr2qs_ctx("Do not request ban exception list","options"),KviOption_boolDisableBanExceptionListRequestOnJoin);
+ addBoolSelector(g,__tr2qs_ctx("Do not request invite list","options"),KviOption_boolDisableInviteListRequestOnJoin);
+
+ b = addBoolSelector(0,3,4,3,__tr2qs_ctx("Do not update the away list","options"),KviOption_boolDisableAwayListUpdates);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,
+ __tr2qs_ctx("<center>KVIrc sends out a channel /WHO message every now and then to keep " \
+ "the channel away list in sync. Use this option to disable this feature (and to save " \
+ "your IRC bandwidth.</center>","options"));
+#endif
+
+ g = addGroupBox(0,4,4,4,1,Qt::Horizontal,__tr2qs_ctx("On Channel Join","options"));
+ addBoolSelector(g,__tr2qs_ctx("Echo channel topic","options"),KviOption_boolEchoNumericTopic);
+ addBoolSelector(g,__tr2qs_ctx("Show channel sync time","options"),KviOption_boolShowChannelSyncTime);
+
+ addRowSpacer(0,5,4,5);
+}
+
+KviChannelAdvancedOptionsWidget::~KviChannelAdvancedOptionsWidget()
+{
+}
+
+void KviChannelAdvancedOptionsWidget::commit()
+{
+ KVI_OPTION_UINT(KviOption_uintDefaultBanType)=m_pBanTypeCombo->currentItem();
+ if((KVI_OPTION_UINT(KviOption_uintDefaultBanType)<0 )|| (KVI_OPTION_UINT(KviOption_uintDefaultBanType)>26)) KVI_OPTION_UINT(KviOption_uintDefaultBanType)=7;
+ KviOptionsWidget::commit();
+}
+
+#include "m_optw_irc.moc"
diff --git a/src/modules/options/optw_irc.h b/src/modules/options/optw_irc.h
new file mode 100644
index 00000000..cc33d284
--- /dev/null
+++ b/src/modules/options/optw_irc.h
@@ -0,0 +1,116 @@
+#ifndef _OPTW_IRC_H_
+#define _OPTW_IRC_H_
+//=============================================================================
+//
+// File : optw_irc.h
+// Creation date : Sun Dec 2 18:59:49 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_optionswidget.h"
+
+class QComboBox;
+
+#define KVI_OPTIONS_WIDGET_ICON_KviIrcOptionsWidget KVI_SMALLICON_IRC
+#define KVI_OPTIONS_WIDGET_NAME_KviIrcOptionsWidget __tr2qs_no_lookup("IRC")
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviIrcOptionsWidget 80000
+#define KVI_OPTIONS_WIDGET_CONTAINER_KviIrcOptionsWidget true
+
+class KviIrcOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviIrcOptionsWidget(QWidget * parent);
+ ~KviIrcOptionsWidget();
+};
+
+#define KVI_OPTIONS_WIDGET_ICON_KviIrcGeneralOptionsWidget KVI_SMALLICON_IRC
+#define KVI_OPTIONS_WIDGET_NAME_KviIrcGeneralOptionsWidget __tr2qs_no_lookup("General")
+#define KVI_OPTIONS_WIDGET_PARENT_KviIrcGeneralOptionsWidget KviIrcOptionsWidget
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviIrcGeneralOptionsWidget 80000
+
+class KviIrcGeneralOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviIrcGeneralOptionsWidget(QWidget * parent);
+ ~KviIrcGeneralOptionsWidget();
+};
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviIrcAdvancedOptionsWidget KVI_SMALLICON_IRC
+#define KVI_OPTIONS_WIDGET_NAME_KviIrcAdvancedOptionsWidget __tr2qs_no_lookup("Advanced")
+#define KVI_OPTIONS_WIDGET_PARENT_KviIrcAdvancedOptionsWidget KviIrcOptionsWidget
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviIrcAdvancedOptionsWidget 50000
+
+class KviIrcAdvancedOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviIrcAdvancedOptionsWidget(QWidget * parent);
+ ~KviIrcAdvancedOptionsWidget();
+};
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviChannelOptionsWidget KVI_SMALLICON_CHANNEL
+#define KVI_OPTIONS_WIDGET_NAME_KviChannelOptionsWidget __tr2qs_no_lookup("Channel")
+#define KVI_OPTIONS_WIDGET_PARENT_KviChannelOptionsWidget KviIrcOptionsWidget
+#define KVI_OPTIONS_WIDGET_CONTAINER_KviChannelOptionsWidget true
+#define KVI_OPTIONS_WIDGET_NOTCONTAINED_KviChannelOptionsWidget true
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviChannelOptionsWidget 90000
+
+class KviChannelOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviChannelOptionsWidget(QWidget * parent);
+ ~KviChannelOptionsWidget();
+};
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviChannelGeneralOptionsWidget KVI_SMALLICON_CHANNEL
+#define KVI_OPTIONS_WIDGET_NAME_KviChannelGeneralOptionsWidget __tr2qs_no_lookup("General")
+#define KVI_OPTIONS_WIDGET_PARENT_KviChannelGeneralOptionsWidget KviChannelOptionsWidget
+
+class KviChannelGeneralOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviChannelGeneralOptionsWidget(QWidget * parent);
+ ~KviChannelGeneralOptionsWidget();
+};
+
+#define KVI_OPTIONS_WIDGET_ICON_KviChannelAdvancedOptionsWidget KVI_SMALLICON_CHANNEL
+#define KVI_OPTIONS_WIDGET_NAME_KviChannelAdvancedOptionsWidget __tr2qs_no_lookup("Advanced")
+#define KVI_OPTIONS_WIDGET_PARENT_KviChannelAdvancedOptionsWidget KviChannelOptionsWidget
+
+class KviChannelAdvancedOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviChannelAdvancedOptionsWidget(QWidget * parent);
+ ~KviChannelAdvancedOptionsWidget();
+public:
+ virtual void commit();
+protected:
+ QComboBox * m_pBanTypeCombo;
+};
+
+#endif //_OPTW_IRC_H_
diff --git a/src/modules/options/optw_ircoutput.cpp b/src/modules/options/optw_ircoutput.cpp
new file mode 100644
index 00000000..cfa28456
--- /dev/null
+++ b/src/modules/options/optw_ircoutput.cpp
@@ -0,0 +1,94 @@
+//
+// File : optw_ircoutput.cpp
+// Creation date : Wed Nov 15 2000 11:45:06 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "optw_ircoutput.h"
+
+#include <qlayout.h>
+
+#include "kvi_settings.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+
+#include <qcombobox.h>
+#include <qlabel.h>
+
+#ifdef COMPILE_INFO_TIPS
+ #include "kvi_tal_tooltip.h"
+#endif
+
+KviIrcOutputOptionsWidget::KviIrcOutputOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"ircoutput_options_widget")
+{
+ createLayout(7,2);
+
+ QLabel * l =new QLabel(__tr2qs_ctx("Output verbosity","options"),this);
+ addWidgetToLayout(l,0,0,0,0);
+
+ m_pVerbosityCombo = new QComboBox(false,this);
+ addWidgetToLayout(m_pVerbosityCombo,1,0,1,0);
+
+ m_pVerbosityCombo->insertItem(__tr2qs_ctx("Mute","options"));
+ m_pVerbosityCombo->insertItem(__tr2qs_ctx("Quiet","options"));
+ m_pVerbosityCombo->insertItem(__tr2qs_ctx("Normal","options"));
+ m_pVerbosityCombo->insertItem(__tr2qs_ctx("Verbose","options"));
+ m_pVerbosityCombo->insertItem(__tr2qs_ctx("Paranoic","options"));
+
+ if(KVI_OPTION_UINT(KviOption_uintOutputVerbosityLevel) > KVI_VERBOSITY_LEVEL_PARANOIC)
+ KVI_OPTION_UINT(KviOption_uintOutputVerbosityLevel) = KVI_VERBOSITY_LEVEL_NORMAL;
+ m_pVerbosityCombo->setCurrentItem(KVI_OPTION_UINT(KviOption_uintOutputVerbosityLevel));
+
+ KviTalGroupBox * g = addGroupBox(0,1,1,1,1,Qt::Horizontal,__tr2qs_ctx("Show in active window","options"));
+ addBoolSelector(g,__tr2qs_ctx("External messages","options"),KviOption_boolExternalMessagesToActiveWindow);
+ addBoolSelector(g,__tr2qs_ctx("External CTCP replies","options"),KviOption_boolCtcpRepliesToActiveWindow);
+ addBoolSelector(g,__tr2qs_ctx("Whois replies","options"),KviOption_boolWhoisRepliesToActiveWindow);
+ addBoolSelector(g,__tr2qs_ctx("ChanServ and NickServ notices","options"),KviOption_boolServicesNoticesToActiveWindow);
+ addBoolSelector(g,__tr2qs_ctx("Invite messages","options"),KviOption_boolInvitesToActiveWindow);
+ addBoolSelector(g,__tr2qs_ctx("Server replies","options"),KviOption_boolServerRepliesToActiveWindow);
+ addBoolSelector(g,__tr2qs_ctx("Server notices","options"),KviOption_boolServerNoticesToActiveWindow);
+ addBoolSelector(g,__tr2qs_ctx("Broadcast and WALLOPS messages","options"),KviOption_boolOperatorMessagesToActiveWindow);
+// if(KVI_OPTION_UINT(KviOption_uintUserExperienceLevel)>=2)
+// {
+ addBoolSelector(0,2,1,2,__tr2qs_ctx("Show extended server information","options"),KviOption_boolShowExtendedServerInfo);
+ addBoolSelector(0,3,1,3,__tr2qs_ctx("Show server pings","options"),KviOption_boolShowPingPong);
+ addBoolSelector(0,4,1,4,__tr2qs_ctx("Show own parts in the console","options"),KviOption_boolShowOwnParts);
+ addBoolSelector(0,5,1,5,__tr2qs_ctx("Show compact mode changes","options"),KviOption_boolShowCompactModeChanges);
+
+ addRowSpacer(0,6,1,6);
+// } else {
+// addRowSpacer(0,2,1,2);
+// }
+}
+
+KviIrcOutputOptionsWidget::~KviIrcOutputOptionsWidget()
+{
+}
+
+void KviIrcOutputOptionsWidget::commit()
+{
+ KviOptionsWidget::commit();
+
+ int i = m_pVerbosityCombo->currentItem();
+ if((i < 0) || (i > KVI_VERBOSITY_LEVEL_PARANOIC))i = KVI_VERBOSITY_LEVEL_NORMAL;
+ KVI_OPTION_UINT(KviOption_uintOutputVerbosityLevel) = i;
+}
+
+#include "m_optw_ircoutput.moc"
diff --git a/src/modules/options/optw_ircoutput.h b/src/modules/options/optw_ircoutput.h
new file mode 100644
index 00000000..27e5c4c8
--- /dev/null
+++ b/src/modules/options/optw_ircoutput.h
@@ -0,0 +1,49 @@
+#ifndef _OPTW_IRCOUTPUT_H_
+#define _OPTW_IRCOUTPUT_H_
+
+//
+// File : optw_ircoutput.h
+// Creation date : Wed Nov 15 2000 11:47:51 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+#include "kvi_tal_listview.h"
+
+class QComboBox;
+
+#define KVI_OPTIONS_WIDGET_ICON_KviIrcOutputOptionsWidget KVI_SMALLICON_RAW
+#define KVI_OPTIONS_WIDGET_NAME_KviIrcOutputOptionsWidget __tr2qs_no_lookup("Verbosity And Output")
+#define KVI_OPTIONS_WIDGET_PARENT_KviIrcOutputOptionsWidget KviIrcOptionsWidget
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviIrcOutputOptionsWidget __tr2qs_no_lookup("debug")
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviIrcOutputOptionsWidget 75000
+
+class KviIrcOutputOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviIrcOutputOptionsWidget(QWidget * parent);
+ ~KviIrcOutputOptionsWidget();
+protected:
+ QComboBox * m_pVerbosityCombo;
+protected:
+ virtual void commit();
+};
+
+#endif //!_OPTW_IRCOUTPUT_H_
diff --git a/src/modules/options/optw_ircview.cpp b/src/modules/options/optw_ircview.cpp
new file mode 100644
index 00000000..860f80c5
--- /dev/null
+++ b/src/modules/options/optw_ircview.cpp
@@ -0,0 +1,168 @@
+//
+// File : optw_ircview.cpp
+// Creation date : Sat Aug 11 2001 03:29:52 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include "optw_ircview.h"
+
+#include <qlayout.h>
+#include "kvi_options.h"
+#include "kvi_locale.h"
+
+//#warning "Info tips"
+
+KviIrcViewThemeOptionsWidget::KviIrcViewThemeOptionsWidget(QWidget * pParent)
+: KviOptionsWidget(pParent)
+{
+}
+
+KviIrcViewThemeOptionsWidget::~KviIrcViewThemeOptionsWidget()
+{
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+KviIrcViewLookOptionsWidget::KviIrcViewLookOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"ircviewlook_options_widget")
+{
+ createLayout(6,2);
+
+ addFontSelector(0,0,1,0,__tr2qs_ctx("Font:","options"),KviOption_fontIrcView);
+ addColorSelector(0,1,1,1,__tr2qs_ctx("Background color:","options"),KviOption_colorIrcViewBackground);
+
+ addPixmapSelector(0,2,1,2,__tr2qs_ctx("Background image:","options"),KviOption_pixmapIrcViewBackground);
+
+ addLabel(0,3,0,3,__tr2qs_ctx("Horizontal align:","options"));
+ m_pHorizontalAlign=new QComboBox(this);
+ addWidgetToLayout(m_pHorizontalAlign,1,3,1,3);
+
+ addLabel(0,4,0,4,__tr2qs_ctx("Vertical align:","options"));
+ m_pVerticalAlign=new QComboBox(this);
+ addWidgetToLayout(m_pVerticalAlign,1,4,1,4);
+
+ addColorSelector(0,5,1,5,__tr2qs_ctx("Mark Line:","options"),KviOption_colorIrcViewMarkLine);
+
+ m_pHorizontalAlign->insertItem(__tr2qs_ctx("Tile","options"));
+ m_pHorizontalAlign->insertItem(__tr2qs_ctx("Left","options"));
+ m_pHorizontalAlign->insertItem(__tr2qs_ctx("Right","options"));
+ m_pHorizontalAlign->insertItem(__tr2qs_ctx("Center","options"));
+
+ m_pVerticalAlign->insertItem(__tr2qs_ctx("Tile","options"));
+ m_pVerticalAlign->insertItem(__tr2qs_ctx("Top","options"));
+ m_pVerticalAlign->insertItem(__tr2qs_ctx("Bottom","options"));
+ m_pVerticalAlign->insertItem(__tr2qs_ctx("Center","options"));
+
+ switch( KVI_OPTION_UINT(KviOption_uintIrcViewPixmapAlign) & Qt::AlignHorizontal_Mask)
+ {
+ case Qt::AlignLeft:
+ m_pHorizontalAlign->setCurrentItem(1);
+ break;
+ case Qt::AlignRight:
+ m_pHorizontalAlign->setCurrentItem(2);
+ break;
+ case Qt::AlignHCenter:
+ m_pHorizontalAlign->setCurrentItem(3);
+ break;
+ default:
+ m_pHorizontalAlign->setCurrentItem(0);
+ }
+
+ switch( KVI_OPTION_UINT(KviOption_uintIrcViewPixmapAlign) & Qt::AlignVertical_Mask)
+ {
+ case Qt::AlignTop:
+ m_pVerticalAlign->setCurrentItem(1);
+ break;
+ case Qt::AlignBottom:
+ m_pVerticalAlign->setCurrentItem(2);
+ break;
+ case Qt::AlignVCenter:
+ m_pVerticalAlign->setCurrentItem(3);
+ break;
+ default:
+ m_pVerticalAlign->setCurrentItem(0);
+ }
+
+ layout()->setRowStretch(2,1);
+}
+
+KviIrcViewLookOptionsWidget::~KviIrcViewLookOptionsWidget()
+{
+}
+
+void KviIrcViewLookOptionsWidget::commit()
+{
+ int iFlags=0;
+ switch(m_pHorizontalAlign->currentItem())
+ {
+ case 1:
+ iFlags|=Qt::AlignLeft;
+ break;
+ case 2:
+ iFlags|=Qt::AlignRight;
+ break;
+ case 3:
+ iFlags|=Qt::AlignHCenter;
+ break;
+ }
+ switch(m_pVerticalAlign->currentItem())
+ {
+ case 1:
+ iFlags|=Qt::AlignTop;
+ break;
+ case 2:
+ iFlags|=Qt::AlignBottom;
+ break;
+ case 3:
+ iFlags|=Qt::AlignVCenter;
+ break;
+ }
+
+ KVI_OPTION_UINT(KviOption_uintIrcViewPixmapAlign)=iFlags;
+ KviOptionsWidget::commit();
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+KviIrcViewFeaturesOptionsWidget::KviIrcViewFeaturesOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"ircviewfeatures_options_widget")
+{
+ createLayout(14,1);
+
+
+
+ addBoolSelector(0,7,0,7,__tr2qs_ctx("Enable URL highlighting","options"),KviOption_boolIrcViewUrlHighlighting);
+ addBoolSelector(0,8,0,8,__tr2qs_ctx("Use line wrap margin","options"),KviOption_boolIrcViewWrapMargin);
+ KviUIntSelector * s = addUIntSelector(0,9,0,9,__tr2qs_ctx("Maximum buffer size:","options"),KviOption_uintIrcViewMaxBufferSize,32,32767,2048);
+ s->setSuffix(__tr2qs_ctx(" lines","options"));
+ s = addUIntSelector(0,10,0,10,__tr2qs_ctx("Link tooltip show delay:","options"),KviOption_uintIrcViewToolTipTimeoutInMsec,256,10000,1800);
+ s->setSuffix(__tr2qs_ctx(" msec","options"));
+ s = addUIntSelector(0,11,0,11,__tr2qs_ctx("Link tooltip hide delay:","options"),KviOption_uintIrcViewToolTipHideTimeoutInMsec,256,10000,12000);
+ s->setSuffix(__tr2qs_ctx(" msec","options"));
+ addBoolSelector(0,12,0,12,__tr2qs_ctx("Track last read text line","options"),KviOption_boolTrackLastReadTextViewLine);
+ addRowSpacer(0,13,0,13);
+
+}
+
+KviIrcViewFeaturesOptionsWidget::~KviIrcViewFeaturesOptionsWidget()
+{
+}
+
+
+
+#include "m_optw_ircview.moc"
diff --git a/src/modules/options/optw_ircview.h b/src/modules/options/optw_ircview.h
new file mode 100644
index 00000000..3da03a5a
--- /dev/null
+++ b/src/modules/options/optw_ircview.h
@@ -0,0 +1,83 @@
+#ifndef _OPTW_IRCVIEW_H_
+#define _OPTW_IRCVIEW_H_
+
+//=============================================================================
+//
+// File : optw_ircview.h
+// Creation date : Sat Aug 11 2001 03:28:19 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "kvi_optionswidget.h"
+#include <qcombobox.h>
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviIrcViewThemeOptionsWidget KVI_SMALLICON_IRCVIEW
+#define KVI_OPTIONS_WIDGET_NAME_KviIrcViewThemeOptionsWidget __tr2qs_no_lookup("Output")
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviIrcViewThemeOptionsWidget __tr2qs_no_lookup("theme,colors,output")
+#define KVI_OPTIONS_WIDGET_GROUP_KviIrcViewThemeOptionsWidget "theme"
+#define KVI_OPTIONS_WIDGET_CONTAINER_KviIrcViewThemeOptionsWidget true
+
+class KviIrcViewThemeOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviIrcViewThemeOptionsWidget(QWidget * pParent);
+ ~KviIrcViewThemeOptionsWidget();
+};
+
+#define KVI_OPTIONS_WIDGET_ICON_KviIrcViewLookOptionsWidget KVI_SMALLICON_IRCVIEW
+#define KVI_OPTIONS_WIDGET_NAME_KviIrcViewLookOptionsWidget __tr2qs_no_lookup("Look")
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviIrcViewLookOptionsWidget __tr2qs_no_lookup("theme,colors,output")
+#define KVI_OPTIONS_WIDGET_GROUP_KviIrcViewLookOptionsWidget "theme"
+#define KVI_OPTIONS_WIDGET_PARENT_KviIrcViewLookOptionsWidget KviIrcViewThemeOptionsWidget
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviIrcViewLookOptionsWidget 30
+
+class KviIrcViewLookOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+private:
+ QComboBox* m_pHorizontalAlign;
+ QComboBox* m_pVerticalAlign;
+public:
+ KviIrcViewLookOptionsWidget(QWidget * parent);
+ ~KviIrcViewLookOptionsWidget();
+public:
+ virtual void commit();
+};
+
+#define KVI_OPTIONS_WIDGET_ICON_KviIrcViewFeaturesOptionsWidget KVI_SMALLICON_IRCVIEW
+#define KVI_OPTIONS_WIDGET_NAME_KviIrcViewFeaturesOptionsWidget __tr2qs_no_lookup("Features")
+#define KVI_OPTIONS_WIDGET_GROUP_KviIrcViewFeaturesOptionsWidget "theme"
+#define KVI_OPTIONS_WIDGET_PARENT_KviIrcViewFeaturesOptionsWidget KviIrcViewThemeOptionsWidget
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviIrcViewFeaturesOptionsWidget 20
+
+class KviIrcViewFeaturesOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviIrcViewFeaturesOptionsWidget(QWidget * parent);
+ ~KviIrcViewFeaturesOptionsWidget();
+};
+
+
+
+#endif //!_OPTW_IRCVIEW_H_
diff --git a/src/modules/options/optw_lag.cpp b/src/modules/options/optw_lag.cpp
new file mode 100644
index 00000000..8c9cf201
--- /dev/null
+++ b/src/modules/options/optw_lag.cpp
@@ -0,0 +1,85 @@
+//
+// File : optw_lag.cpp
+// Creation date : Wed Cct 16 10:45:54 CEST 2002 by Juanjo �lvarez ([email protected])
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "optw_lag.h"
+
+#include <qlayout.h>
+#include "kvi_tal_tooltip.h"
+
+#include "kvi_options.h"
+#include "kvi_locale.h"
+
+//#warning "Info tips"
+
+
+KviLagOptionsWidget::KviLagOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"lag_options_widget")
+{
+ createLayout(3,1);
+
+ KviBoolSelector * pUse = addBoolSelector(0,0,0,0, __tr2qs_ctx("Enable lag meter","options"), KviOption_boolUseLagMeterEngine);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(pUse,__tr2qs_ctx("<center>This enables the lag meter engine, which checks at regular intervals how much lag (latency) the server has.</center>","options"));
+#endif
+ KviTalGroupBox *g = addGroupBox(0,1,0,1,1,Qt::Horizontal,__tr2qs_ctx("Configuration","options"),KVI_OPTION_BOOL(KviOption_boolUseLagMeterEngine));
+ KviUIntSelector * pInterval = addUIntSelector(g, __tr2qs_ctx("Lag meter heartbeat:","options"),KviOption_uintLagMeterHeartbeat,2000,10000,5000,KVI_OPTION_BOOL(KviOption_boolUseLagMeterEngine));
+ pInterval->setSuffix(__tr2qs_ctx(" msec","options"));
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(pInterval,
+ __tr2qs_ctx("<center>This option allows you to set the lag meter heartbeat interval.<br>" \
+ "The lower the heartbeat interval the higher will be the accuracy of the lag check " \
+ "but also higher cpu usage and data traffic to the server.<br>" \
+ "Please note that this is NOT the interval between pings sent to the server: " \
+ "the pings (if any) will be sent really less often. " \
+ "5000 is a reasonable value.</center>","options"));
+#endif
+ connect(pUse,SIGNAL(toggled(bool)),pInterval,SLOT(setEnabled(bool)));
+
+ KviUIntSelector * pAlarm = addUIntSelector(g, __tr2qs_ctx("Trigger event if lag exceeds:","options"), KviOption_uintLagAlarmTime,5000,1000000,30000, KVI_OPTION_BOOL(KviOption_boolUseLagMeterEngine));
+ pAlarm->setSuffix(__tr2qs_ctx(" msec","options"));
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(pAlarm,__tr2qs_ctx("<center>This option controls the threshold for the " \
+ "OnLagAlarmTimeUp and OnLagAlarmTimeDown events. When the lag goes above " \
+ "the threshold OnLagAlarmTimeUp will be triggered and when the lag falls " \
+ "back below the threshold then OnLagAlarmTimeDown will be triggered</center>","options"));
+#endif
+ connect(pUse,SIGNAL(toggled(bool)),pAlarm,SLOT(setEnabled(bool)));
+
+ KviBoolSelector * pShow = addBoolSelector(g, __tr2qs_ctx("Show lag in IRC context display","options"), KviOption_boolShowLagOnContextDisplay, KVI_OPTION_BOOL(KviOption_boolUseLagMeterEngine));
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(pShow,__tr2qs_ctx("<center>This makes the IRC context display applet show the current lag after the user's nickname (in seconds)</center>","options"));
+#endif
+
+ connect(pUse,SIGNAL(toggled(bool)),pShow,SLOT(setEnabled(bool)));
+ connect(pUse,SIGNAL(toggled(bool)),g,SLOT(setEnabled(bool)));
+
+ addRowSpacer(0,2,0,2);
+
+}
+
+KviLagOptionsWidget::~KviLagOptionsWidget()
+{
+}
+
+
+#include "m_optw_lag.moc"
diff --git a/src/modules/options/optw_lag.h b/src/modules/options/optw_lag.h
new file mode 100644
index 00000000..7e49cafd
--- /dev/null
+++ b/src/modules/options/optw_lag.h
@@ -0,0 +1,40 @@
+#ifndef _OPTW_LAG_H_
+#define _OPTW_LAG_H_
+//
+// File : optw_lag.h
+// Creation date : wed oct 16 10:45:14 CEST 2002 by Juanjo �varez
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+
+#define KVI_OPTIONS_WIDGET_ICON_KviLagOptionsWidget KVI_SMALLICON_STATS
+#define KVI_OPTIONS_WIDGET_NAME_KviLagOptionsWidget __tr2qs_no_lookup("Lag")
+#define KVI_OPTIONS_WIDGET_PARENT_KviLagOptionsWidget KviToolsOptionsWidget
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviLagOptionsWidget __tr2qs_no_lookup("time,ping")
+
+class KviLagOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviLagOptionsWidget(QWidget * parent);
+ ~KviLagOptionsWidget();
+};
+
+#endif //_OPTW_LAG_H_
diff --git a/src/modules/options/optw_logging.cpp b/src/modules/options/optw_logging.cpp
new file mode 100644
index 00000000..9d77836d
--- /dev/null
+++ b/src/modules/options/optw_logging.cpp
@@ -0,0 +1,64 @@
+//
+// File : optw_logging.cpp
+// Creation date : Mon Oct 29 15:37:16 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "optw_logging.h"
+
+#include <qlayout.h>
+
+#include "kvi_options.h"
+#include "kvi_locale.h"
+
+//#warning "Info tips"
+
+
+KviLoggingOptionsWidget::KviLoggingOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"logging_options_widget")
+{
+ createLayout(4,1);
+
+ KviTalGroupBox * g = addGroupBox(0,0,0,0,1,Qt::Horizontal,__tr2qs_ctx("Automatically Log","options"));
+ addBoolSelector(g,__tr2qs_ctx("Query windows","options"),KviOption_boolAutoLogQueries);
+ addBoolSelector(g,__tr2qs_ctx("Channel windows","options"),KviOption_boolAutoLogChannels);
+ addBoolSelector(g,__tr2qs_ctx("DCC Chat windows","options"),KviOption_boolAutoLogDccChat);
+ addBoolSelector(g,__tr2qs_ctx("Console windows","options"),KviOption_boolAutoLogConsole);
+#ifdef COMPILE_ZLIB_SUPPORT
+ addBoolSelector(0,1,0,1,__tr2qs_ctx("Gzip logs","options"),KviOption_boolGzipLogs);
+#endif
+ addBoolSelector(0,2,0,2,__tr2qs_ctx("Strip colors in logs","options"),KviOption_boolStripControlCodesInLogs);
+ KviUIntSelector* us = addUIntSelector(0,3,0,3,__tr2qs_ctx("Auto flush logs every","options"),KviOption_uintAutoFlushLogs,0,99999,0);
+ us->setSuffix(__tr2qs_ctx(" min","options"));
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(us,
+ __tr2qs_ctx("<center>Save logs with the current interval<br>" \
+ "Set to 0 to disable this feature</center>","options"));
+#endif
+ addRowSpacer(0,4,0,4);
+}
+
+KviLoggingOptionsWidget::~KviLoggingOptionsWidget()
+{
+}
+
+
+
+#include "m_optw_logging.moc"
diff --git a/src/modules/options/optw_logging.h b/src/modules/options/optw_logging.h
new file mode 100644
index 00000000..f3f3e1c4
--- /dev/null
+++ b/src/modules/options/optw_logging.h
@@ -0,0 +1,42 @@
+#ifndef _OPTW_LOGGING_H_
+#define _OPTW_LOGGING_H_
+//
+// File : optw_logging.h
+// Creation date : Mon Oct 29 15:37:18 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+
+#define KVI_OPTIONS_WIDGET_ICON_KviLoggingOptionsWidget KVI_SMALLICON_LOG
+#define KVI_OPTIONS_WIDGET_NAME_KviLoggingOptionsWidget __tr2qs_no_lookup("Logging")
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviLoggingOptionsWidget __tr2qs_no_lookup("save,output")
+#define KVI_OPTIONS_WIDGET_PARENT_KviLoggingOptionsWidget KviToolsOptionsWidget
+
+//noway #define KVI_OPTIONS_WIDGET_NO_PARENT_KviLoggingOptionsWidget KviIrcOptionsWidget
+
+class KviLoggingOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviLoggingOptionsWidget(QWidget * parent);
+ ~KviLoggingOptionsWidget();
+};
+
+#endif //_OPTW_LOGGING_H_
diff --git a/src/modules/options/optw_mediatypes.cpp b/src/modules/options/optw_mediatypes.cpp
new file mode 100644
index 00000000..c798a4eb
--- /dev/null
+++ b/src/modules/options/optw_mediatypes.cpp
@@ -0,0 +1,262 @@
+//
+// File : optw_mediatypes.cpp
+// Creation date : Sat Jan 20 2001 16:14:53 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "optw_mediatypes.h"
+
+#include <qlayout.h>
+#include <qlabel.h>
+#include "kvi_tal_tooltip.h"
+
+#include "kvi_options.h"
+#include "kvi_locale.h"
+
+// kvi_app.cpp
+extern KVIRC_API KviMediaManager * g_pMediaManager;
+
+static void copyMediaType(KviMediaType * dst,const KviMediaType * src)
+{
+ dst->szFileMask = src->szFileMask;
+ dst->szIanaType = src->szIanaType;
+ dst->szDescription = src->szDescription;
+ dst->szMagicBytes = src->szMagicBytes;
+ dst->szSavePath = src->szSavePath;
+ dst->szCommandline = src->szCommandline;
+ dst->szRemoteExecCommandline = src->szRemoteExecCommandline;
+ dst->szIcon = src->szIcon;
+}
+
+KviMediaTypeListViewItem::KviMediaTypeListViewItem(KviTalListView * w,KviMediaType * t)
+: KviTalListViewItem(w)
+{
+ copyData(t);
+}
+
+KviMediaTypeListViewItem::~KviMediaTypeListViewItem()
+{
+}
+
+void KviMediaTypeListViewItem::copyData(KviMediaType * t)
+{
+ copyMediaType(&m_data,t);
+ setText(0,m_data.szFileMask.ptr());
+ setText(1,m_data.szIanaType.ptr());
+ setText(2,m_data.szDescription.ptr());
+}
+
+KviMediaTypesOptionsWidget::KviMediaTypesOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"mediatypes_options_widget")
+{
+ createLayout(11,3);
+
+ m_pListView = new KviTalListView(this);
+ m_pListView->addColumn(__tr2qs_ctx("Pattern","options"));
+ m_pListView->addColumn(__tr2qs_ctx("MIME Type","options"));
+ m_pListView->addColumn(__tr2qs_ctx("Description","options"));
+ m_pListView->setAllColumnsShowFocus(true);
+
+
+
+ connect(m_pListView,SIGNAL(currentChanged(KviTalListViewItem *)),this,SLOT(currentItemChanged(KviTalListViewItem *)));
+
+ layout()->addMultiCellWidget(m_pListView,0,0,0,2);
+
+ QLabel * l = new QLabel(__tr2qs_ctx("Description:","options"),this);
+ layout()->addWidget(l,1,0);
+ m_pDescription = new QLineEdit(this);
+ layout()->addMultiCellWidget(m_pDescription,1,1,1,2);
+
+ l = new QLabel(__tr2qs_ctx("MIME type:","options"),this);
+ layout()->addWidget(l,2,0);
+ m_pIanaType = new QLineEdit(this);
+ layout()->addMultiCellWidget(m_pIanaType,2,2,1,2);
+
+ l = new QLabel(__tr2qs_ctx("File pattern:","options"),this);
+ layout()->addWidget(l,3,0);
+ m_pFileMask = new QLineEdit(this);
+ layout()->addMultiCellWidget(m_pFileMask,3,3,1,2);
+
+ l = new QLabel(__tr2qs_ctx("Magic bytes:","options"),this);
+ layout()->addWidget(l,4,0);
+ m_pMagicBytes = new QLineEdit(this);
+ layout()->addMultiCellWidget(m_pMagicBytes,4,4,1,2);
+
+ l = new QLabel(__tr2qs_ctx("Save path:","options"),this);
+ layout()->addWidget(l,5,0);
+ m_pSavePath = new QLineEdit(this);
+ layout()->addMultiCellWidget(m_pSavePath,5,5,1,2);
+
+ l = new QLabel(__tr2qs_ctx("Local open command:","options"),this);
+ layout()->addWidget(l,6,0);
+ m_pCommandline = new QLineEdit(this);
+ layout()->addMultiCellWidget(m_pCommandline,6,6,1,2);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(m_pCommandline,__tr2qs_ctx("<center>This field contains the command to execute to open a local file.<br>" \
+ "<tt>$0</tt> is used in place of the filename</center>","options"));
+#endif
+
+ l = new QLabel(__tr2qs_ctx("Remote open command:","options"),this);
+ layout()->addWidget(l,7,0);
+ m_pRemoteExecCommandline = new QLineEdit(this);
+ layout()->addMultiCellWidget(m_pRemoteExecCommandline,7,7,1,2);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(m_pRemoteExecCommandline,__tr2qs_ctx("<center>This field contains the command to execute when automatically opening a received file.<br>" \
+ "<tt>$0</tt> is used in place of the filename</center>","options"));
+#endif
+
+ l = new QLabel(__tr2qs_ctx("Icon","options"),this);
+ layout()->addWidget(l,8,0);
+ m_pIcon = new QLineEdit(this);
+ layout()->addMultiCellWidget(m_pIcon,8,8,1,2);
+
+ QFrame * f = new QFrame(this);
+ f->setFrameStyle(QFrame::Sunken | QFrame::HLine);
+ layout()->addMultiCellWidget(f,9,9,0,2);
+
+ QPushButton * b = new QPushButton(__tr2qs_ctx("&New","options"),this);
+ connect(b,SIGNAL(clicked()),this,SLOT(newMediaType()));
+ layout()->addWidget(b,10,1);
+
+ m_pDelete = new QPushButton(__tr2qs_ctx("Re&move","options"),this);
+ connect(m_pDelete,SIGNAL(clicked()),this,SLOT(delMediaType()));
+ layout()->addWidget(m_pDelete,10,2);
+
+
+ layout()->setColStretch(1,1);
+ layout()->setColStretch(2,1);
+ layout()->setRowStretch(0,1);
+
+ m_pLastItem = 0;
+
+ fillListView();
+}
+
+KviMediaTypesOptionsWidget::~KviMediaTypesOptionsWidget()
+{
+}
+
+void KviMediaTypesOptionsWidget::fillListView()
+{
+ m_pListView->clear();
+ g_pMediaManager->lock();
+ KviPointerList<KviMediaType> * l = g_pMediaManager->mediaTypeList();
+ KviMediaTypeListViewItem * it;
+ for(KviMediaType * t = l->first();t;t = l->next())
+ {
+ it = new KviMediaTypeListViewItem(m_pListView,t);
+ }
+ g_pMediaManager->unlock();
+ enableOrDisable();
+}
+
+void KviMediaTypesOptionsWidget::saveLastItem()
+{
+ if(m_pLastItem)
+ {
+ KviMediaType t;
+ t.szDescription = m_pDescription->text();
+ t.szIanaType = m_pIanaType->text();
+ t.szFileMask = m_pFileMask->text();
+ t.szSavePath = m_pSavePath->text();
+ t.szCommandline = m_pCommandline->text();
+ t.szMagicBytes = m_pMagicBytes->text();
+ t.szRemoteExecCommandline = m_pRemoteExecCommandline->text();
+ t.szIcon = m_pIcon->text();
+
+ if(t.szDescription.isEmpty())t.szDescription = __tr2qs_ctx("[Unknown Media Type]","options");
+
+ m_pLastItem->copyData(&t);
+ }
+}
+
+void KviMediaTypesOptionsWidget::enableOrDisable()
+{
+ m_pDescription->setEnabled(m_pLastItem);
+ m_pIanaType->setEnabled(m_pLastItem);
+ m_pFileMask->setEnabled(m_pLastItem);
+ m_pSavePath->setEnabled(m_pLastItem);
+ m_pCommandline->setEnabled(m_pLastItem);
+ m_pMagicBytes->setEnabled(m_pLastItem);
+ m_pRemoteExecCommandline->setEnabled(m_pLastItem);
+ m_pDelete->setEnabled(m_pLastItem);
+ m_pIcon->setEnabled(m_pLastItem);
+}
+
+void KviMediaTypesOptionsWidget::setLineEdits()
+{
+ m_pDescription->setText(m_pLastItem ? m_pLastItem->data()->szDescription.ptr() : "");
+ m_pIanaType->setText(m_pLastItem ? m_pLastItem->data()->szIanaType.ptr() : "");
+ m_pFileMask->setText(m_pLastItem ? m_pLastItem->data()->szFileMask.ptr() : "");
+ m_pSavePath->setText(m_pLastItem ? m_pLastItem->data()->szSavePath.ptr() : "");
+ m_pCommandline->setText(m_pLastItem ? m_pLastItem->data()->szCommandline.ptr() : "");
+ m_pMagicBytes->setText(m_pLastItem ? m_pLastItem->data()->szMagicBytes.ptr() : "");
+ m_pRemoteExecCommandline->setText(m_pLastItem ? m_pLastItem->data()->szRemoteExecCommandline.ptr() : "");
+ m_pIcon->setText(m_pLastItem ? m_pLastItem->data()->szIcon.ptr() : "");
+}
+
+void KviMediaTypesOptionsWidget::currentItemChanged(KviTalListViewItem *it)
+{
+ saveLastItem();
+ m_pLastItem = (KviMediaTypeListViewItem *)it;
+ if(it)
+ {
+ if(!it->isSelected())m_pListView->setSelected(it,true);
+ }
+ setLineEdits();
+ enableOrDisable();
+}
+
+void KviMediaTypesOptionsWidget::newMediaType()
+{
+ KviMediaType empty;
+ empty.szDescription = __tr2qs_ctx("New Media Type","options");
+ KviMediaTypeListViewItem * it = new KviMediaTypeListViewItem(m_pListView,&empty);
+ m_pListView->setCurrentItem(it);
+ m_pListView->setSelected(it,true);
+}
+
+void KviMediaTypesOptionsWidget::delMediaType()
+{
+ if(m_pLastItem)
+ {
+ KviMediaTypeListViewItem * it = m_pLastItem;
+ m_pLastItem = 0;
+ delete it;
+ }
+}
+
+void KviMediaTypesOptionsWidget::commit()
+{
+ saveLastItem();
+ KviMediaTypeListViewItem * it = (KviMediaTypeListViewItem *)m_pListView->firstChild();
+ g_pMediaManager->lock();
+ g_pMediaManager->clear();
+ while(it)
+ {
+ KviMediaType * t = new KviMediaType;
+ copyMediaType(t,it->data());
+ g_pMediaManager->insertMediaType(t);
+ it = (KviMediaTypeListViewItem *)it->nextSibling();
+ }
+ g_pMediaManager->unlock();
+}
+
+#include "m_optw_mediatypes.moc"
diff --git a/src/modules/options/optw_mediatypes.h b/src/modules/options/optw_mediatypes.h
new file mode 100644
index 00000000..22fab930
--- /dev/null
+++ b/src/modules/options/optw_mediatypes.h
@@ -0,0 +1,83 @@
+#ifndef _OPTW_MEDIATYPES_H_
+#define _OPTW_MEDIATYPES_H_
+
+//
+// File : optw_mediatypes.h
+// Creation date : Sat Jan 20 2001 16:12:10 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+#include "kvi_tal_listview.h"
+#include <qlineedit.h>
+#include <qpushbutton.h>
+
+#include "kvi_mediatype.h"
+
+class KviMediaTypeListViewItem : public KviTalListViewItem
+{
+public:
+ KviMediaTypeListViewItem(KviTalListView * w,KviMediaType * t);
+ ~KviMediaTypeListViewItem();
+private:
+ KviMediaType m_data;
+public:
+ void copyData(KviMediaType * t);
+ const KviMediaType * data(){ return &m_data; };
+};
+
+#define KVI_OPTIONS_WIDGET_ICON_KviMediaTypesOptionsWidget KVI_SMALLICON_FILE
+#define KVI_OPTIONS_WIDGET_NAME_KviMediaTypesOptionsWidget __tr2qs_no_lookup("Media Types")
+#define KVI_OPTIONS_WIDGET_PARENT_KviMediaTypesOptionsWidget KviGeneralOptOptionsWidget
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviMediaTypesOptionsWidget __tr2qs_no_lookup("file,audio,video,programs")
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviMediaTypesOptionsWidget 60000
+//#define KVI_OPTIONS_WIDGET_HIDDEN_KviMediaTypesOptionsWidget true
+
+class KviMediaTypesOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviMediaTypesOptionsWidget(QWidget * parent);
+ ~KviMediaTypesOptionsWidget();
+private:
+ KviTalListView * m_pListView;
+ QLineEdit * m_pDescription;
+ QLineEdit * m_pIanaType;
+ QLineEdit * m_pFileMask;
+ QLineEdit * m_pSavePath;
+ QLineEdit * m_pCommandline;
+ QLineEdit * m_pMagicBytes;
+ QLineEdit * m_pRemoteExecCommandline;
+ QLineEdit * m_pIcon;
+ QPushButton * m_pDelete;
+ KviMediaTypeListViewItem * m_pLastItem;
+private:
+ void fillListView();
+ void saveLastItem();
+ void enableOrDisable();
+ void setLineEdits();
+private slots:
+ void currentItemChanged(KviTalListViewItem *it);
+ void newMediaType();
+ void delMediaType();
+public:
+ virtual void commit();
+};
+
+#endif //!_OPTW_IDENTITY_H_
diff --git a/src/modules/options/optw_messages.cpp b/src/modules/options/optw_messages.cpp
new file mode 100644
index 00000000..54b4629a
--- /dev/null
+++ b/src/modules/options/optw_messages.cpp
@@ -0,0 +1,693 @@
+//=============================================================================
+//
+// File : optw_messages.cpp
+// Creation date : Sat Aug 11 2001 18:12:00 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define _WANT_OPTION_FLAGS_
+
+#include "optw_messages.h"
+
+#include <qlayout.h>
+#include <qpushbutton.h>
+#include "kvi_tal_vbox.h"
+#include <qcursor.h>
+#include <qpainter.h>
+#include "kvi_styled_controls.h"
+
+#include "kvi_settings.h"
+
+#ifndef COMPILE_ON_WINDOWS
+ #include <unistd.h> // symlink()
+#endif
+
+#include "kvi_options.h"
+#include "kvi_app.h"
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_config.h"
+#include "kvi_filedialog.h"
+
+//#warning "Info tips"
+
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ extern KVIRC_API QPixmap * g_pShadedChildGlobalDesktopBackground;
+#endif
+
+
+KviMessageOptionsWidget::KviMessageOptionsWidget(QWidget * pParent)
+: KviOptionsWidget(pParent)
+{
+}
+
+KviMessageOptionsWidget::~KviMessageOptionsWidget()
+{
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+KviPrivmsgOptionsWidget::KviPrivmsgOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"privmsg_options_widget")
+{
+ createLayout(4,1);
+
+ KviBoolSelector * b1;
+ KviBoolSelector * b2;
+
+ KviTalGroupBox * g = addGroupBox(0,0,0,0,1,Qt::Horizontal,__tr2qs_ctx("General","options"));
+
+ addBoolSelector(g,__tr2qs_ctx("Show message icons","options"),KviOption_boolIrcViewShowImages);
+ addBoolSelector(g,__tr2qs_ctx("Draw some emoticons (smileys) as pictures","options"),KviOption_boolDrawEmoticons);
+ addBoolSelector(g,__tr2qs_ctx("Don't show colors in user messages","options"),KviOption_boolStripMircColorsInUserMessages);
+
+
+
+
+ g = addGroupBox(0,1,0,1,1,Qt::Horizontal,__tr2qs_ctx("Nicknames","options"));
+
+ b1 = addBoolSelector(g,__tr2qs_ctx("\"Smart\" nickname colors","options"),KviOption_boolColorNicks);
+ b2 = addBoolSelector(g,__tr2qs_ctx("Use same colors as in the userlist","options"),KviOption_boolUseUserListColorsAsNickColors,!KVI_OPTION_BOOL(KviOption_boolColorNicks));
+ connect(b1,SIGNAL(toggled(bool)),b2,SLOT(setNotEnabled(bool)));
+ addBoolSelector(g,__tr2qs_ctx("Show nicknames in bold","options"),KviOption_boolBoldedNicks);
+ addBoolSelector(g,__tr2qs_ctx("Show user and host","options"),KviOption_boolShowUserAndHostInPrivmsgView);
+ addBoolSelector(g,__tr2qs_ctx("Show channel mode prefix","options"),KviOption_boolShowChannelUserFlagInPrivmsgView);
+ KviBoolSelector * b = addBoolSelector(g,__tr2qs_ctx("User-defined prefix and postfix","options"),KviOption_boolUseExtendedPrivmsgView);
+
+ QLabel * l = addLabel(g,__tr2qs_ctx("[PREFIX]nickname[!user@host][POSTFIX] message","options"));
+
+ l->setEnabled(KVI_OPTION_BOOL(KviOption_boolUseExtendedPrivmsgView));
+ connect(b,
+ SIGNAL(toggled(bool)),
+ l,
+ SLOT(setEnabled(bool)));
+
+ KviTalVBox * vb = new KviTalVBox(g);
+ vb->setSpacing(5);
+
+ connect(
+ b,
+ SIGNAL(toggled(bool)),
+ addStringSelector(vb,__tr2qs_ctx("Prefix:","options"),KviOption_stringExtendedPrivmsgPrefix,KVI_OPTION_BOOL(KviOption_boolUseExtendedPrivmsgView)),
+ SLOT(setEnabled(bool)));
+ connect(
+ b,
+ SIGNAL(toggled(bool)),
+ addStringSelector(vb,__tr2qs_ctx("Postfix:","options"),KviOption_stringExtendedPrivmsgPostfix,KVI_OPTION_BOOL(KviOption_boolUseExtendedPrivmsgView)),
+ SLOT(setEnabled(bool)));
+ addRowSpacer(0,3,0,3);
+}
+
+KviPrivmsgOptionsWidget::~KviPrivmsgOptionsWidget()
+{
+
+}
+
+KviTimestampOptionsWidget::KviTimestampOptionsWidget(QWidget * pParent)
+: KviOptionsWidget(pParent)
+{
+ createLayout(5,1);
+ m_pUseTimestampSelector = addBoolSelector(0,0,0,0,__tr2qs_ctx("Show timestamp","options"),KviOption_boolIrcViewTimestamp);
+
+ connect(m_pUseTimestampSelector,SIGNAL(toggled(bool)),this,SLOT(enableDisableTimestampSelector(bool)));
+ KviBoolSelector* b = addBoolSelector(0,1,0,1,__tr2qs_ctx("Use UTC time for timestamp","options"),KviOption_boolIrcViewTimestampUTC,KVI_OPTION_BOOL(KviOption_boolIrcViewTimestamp));
+
+ connect(m_pUseTimestampSelector,SIGNAL(toggled(bool)),b,SLOT(setEnabled(bool)));
+
+ KviTalHBox *hb = new KviTalHBox(this);
+ addWidgetToLayout(hb,0,2,0,2);
+
+ m_pSpecialTimestampColorSelector = addBoolSelector(hb,__tr2qs_ctx("Use special color for timestamps","options"),KviOption_boolUseSpecialColorForTimestamp,KVI_OPTION_BOOL(KviOption_boolIrcViewTimestamp));
+ connect(m_pSpecialTimestampColorSelector,SIGNAL(toggled(bool)),this,SLOT(enableDisableTimestampSelector(bool)));
+ connect(m_pUseTimestampSelector,SIGNAL(toggled(bool)),m_pSpecialTimestampColorSelector,SLOT(setEnabled(bool)));
+
+ m_pTimestampColorSelector = addMircTextColorSelector(hb,"",KviOption_uintTimeStampForeground,KviOption_uintTimeStampBackground,KVI_OPTION_BOOL(KviOption_boolIrcViewTimestamp) && KVI_OPTION_BOOL(KviOption_boolUseSpecialColorForTimestamp));
+
+ KviStringSelector * st=addStringSelector(0,3,0,3,__tr2qs_ctx("Timestamp format:","options"),KviOption_stringIrcViewTimestampFormat);
+ connect(m_pUseTimestampSelector,SIGNAL(toggled(bool)),st,SLOT(setEnabled(bool)));
+
+ connect(m_pUseTimestampSelector,SIGNAL(toggled(bool)),m_pSpecialTimestampColorSelector,SLOT(setEnabled(bool)));
+ addRowSpacer(0,4,0,4);
+}
+
+KviTimestampOptionsWidget::~KviTimestampOptionsWidget()
+{
+}
+
+void KviTimestampOptionsWidget::enableDisableTimestampSelector(bool)
+{
+ m_pTimestampColorSelector->setEnabled(m_pUseTimestampSelector->isChecked() && m_pSpecialTimestampColorSelector->isChecked());
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+KviStandardColorsOptionsWidget::KviStandardColorsOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"stdcolors")
+{
+ createLayout(5,4);
+
+ addColorSelector(0,0,0,0,"0:",&(KVI_OPTION_MIRCCOLOR(0)));
+ addColorSelector(1,0,1,0,"1:",&(KVI_OPTION_MIRCCOLOR(1)));
+ addColorSelector(2,0,2,0,"2:",&(KVI_OPTION_MIRCCOLOR(2)));
+ addColorSelector(3,0,3,0,"3:",&(KVI_OPTION_MIRCCOLOR(3)));
+ addColorSelector(0,1,0,1,"4:",&(KVI_OPTION_MIRCCOLOR(4)));
+ addColorSelector(1,1,1,1,"5:",&(KVI_OPTION_MIRCCOLOR(5)));
+ addColorSelector(2,1,2,1,"6:",&(KVI_OPTION_MIRCCOLOR(6)));
+ addColorSelector(3,1,3,1,"7:",&(KVI_OPTION_MIRCCOLOR(7)));
+ addColorSelector(0,2,0,2,"8:",&(KVI_OPTION_MIRCCOLOR(8)));
+ addColorSelector(1,2,1,2,"9:",&(KVI_OPTION_MIRCCOLOR(9)));
+ addColorSelector(2,2,2,2,"10:",&(KVI_OPTION_MIRCCOLOR(10)));
+ addColorSelector(3,2,3,2,"11:",&(KVI_OPTION_MIRCCOLOR(11)));
+ addColorSelector(0,3,0,3,"12:",&(KVI_OPTION_MIRCCOLOR(12)));
+ addColorSelector(1,3,1,3,"13:",&(KVI_OPTION_MIRCCOLOR(13)));
+ addColorSelector(2,3,2,3,"14:",&(KVI_OPTION_MIRCCOLOR(14)));
+ addColorSelector(3,3,3,3,"15:",&(KVI_OPTION_MIRCCOLOR(15)));
+
+ addRowSpacer(0,4,3,4);
+
+ layout()->setRowStretch(4,1);
+}
+
+KviStandardColorsOptionsWidget::~KviStandardColorsOptionsWidget()
+{
+}
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviMessageListView::KviMessageListView(QWidget * par)
+: KviTalListView(par)
+{
+ setItemMargin(2);
+}
+
+KviMessageListView::~KviMessageListView()
+{
+}
+
+
+void KviMessageListView::paintEmptyAreaInternal(QPainter * p,const QRect &viewportRect,const QRect &painterRect)
+{
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ if(g_pShadedChildGlobalDesktopBackground)
+ {
+ QPoint pnt = viewport()->mapToGlobal(viewportRect.topLeft());
+ p->drawTiledPixmap(painterRect.x(),painterRect.y(),painterRect.width(),painterRect.height(),*g_pShadedChildGlobalDesktopBackground,pnt.x(),pnt.y());
+ } else {
+#endif
+ QPixmap * pix = KVI_OPTION_PIXMAP(KviOption_pixmapIrcViewBackground).pixmap();
+ if(pix)
+ {
+ QPoint pnt = viewportToContents(viewportRect.topLeft());
+ p->fillRect(painterRect.x(),painterRect.y(),painterRect.width(),painterRect.height(),KVI_OPTION_COLOR(KviOption_colorIrcViewBackground));
+ p->drawTiledPixmap(painterRect.x(),painterRect.y(),painterRect.width(),painterRect.height(),*pix,pnt.x(),pnt.y());
+ } else {
+ p->fillRect(painterRect.x(),painterRect.y(),painterRect.width(),painterRect.height(),KVI_OPTION_COLOR(KviOption_colorIrcViewBackground));
+ }
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ }
+#endif
+}
+
+void KviMessageListView::paintEmptyArea(QPainter * p,const QRect &rct)
+{
+ paintEmptyAreaInternal(p,rct,rct);
+ KviTalListView::paintEmptyArea(p,rct);
+}
+
+
+
+
+
+
+KviMessageListViewItem::KviMessageListViewItem(KviTalListView * l,int optId)
+: KviTalListViewItem(l)
+{
+ m_iOptId = optId;
+ setText(0,"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW");
+ m_pMsgType = new KviMsgType(KVI_OPTION_MSGTYPE(optId));
+ setPixmap(0,*(g_pIconManager->getSmallIcon(0))); // just a dummy one to ensure that the size of the item is at least 20 pixels (16 + 2 * margin)
+}
+
+KviMessageListViewItem::~KviMessageListViewItem()
+{
+ delete m_pMsgType;
+}
+
+void KviMessageListViewItem::paintCell(QPainter * p,const QColorGroup &,int,int w,int)
+{
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ if(g_pShadedChildGlobalDesktopBackground)
+ {
+ QPoint pnt = listView()->viewport()->mapToGlobal(QPoint(int(p->worldMatrix().dx()),int(p->worldMatrix().dy())));
+ p->drawTiledPixmap(0,0,w,height(),*g_pShadedChildGlobalDesktopBackground,pnt.x(),pnt.y());
+ } else {
+#endif
+ QPixmap * pix = KVI_OPTION_PIXMAP(KviOption_pixmapIrcViewBackground).pixmap();
+ if(pix)
+ {
+ QPoint pnt = listView()->viewportToContents(QPoint(int(p->worldMatrix().dx()),int(p->worldMatrix().dy())));
+ p->fillRect(0,0,w,height(),KVI_OPTION_COLOR(KviOption_colorIrcViewBackground));
+ p->drawTiledPixmap(0,0,w,height(),*pix,pnt.x(),pnt.y());
+ } else {
+ p->fillRect(0,0,w,height(),KVI_OPTION_COLOR(KviOption_colorIrcViewBackground));
+ }
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ }
+#endif
+
+
+ p->drawPixmap(listView()->itemMargin(),(height() - 16) / 2,*(g_pIconManager->getSmallIcon(m_pMsgType->pixId())));
+ // draw the background
+ if(m_pMsgType->back() < 16)
+ {
+ QColor bColor = KVI_OPTION_MIRCCOLOR(m_pMsgType->back());
+ p->fillRect(22,listView()->itemMargin(),w - 24,height() - (listView()->itemMargin() * 2),bColor);
+ }
+ unsigned char ucFore = m_pMsgType->fore();
+ if(ucFore > 15)ucFore = 0;
+ p->setPen(QPen(KVI_OPTION_MIRCCOLOR(ucFore)));
+ // skip the msgtype prefix
+ QString txt = (g_msgtypeOptionsTable[m_iOptId].name + 7);
+ txt += " (";
+ txt += __tr2qs_no_xgettext(QString::fromUtf8(m_pMsgType->type()));
+ txt += ")";
+ p->drawText(24,listView()->itemMargin(),w - 24,height() - (listView()->itemMargin() * 2),Qt::AlignLeft | Qt::AlignVCenter,txt);
+ if(isSelected())
+ {
+#ifdef COMPILE_USE_QT4
+ QPen pen(KVI_OPTION_COLOR(KviOption_colorIrcViewBackground));
+ pen.setStyle(Qt::DashLine);
+ p->setPen( pen);
+ p->drawRect(0,0,w,height());
+ p->drawRect(1,1,w - 2,height() - 2);
+#else
+
+ p->drawWinFocusRect(0,0,w,height(),KVI_OPTION_COLOR(KviOption_colorIrcViewBackground));
+ p->drawWinFocusRect(1,1,w - 2,height() - 2,KVI_OPTION_COLOR(KviOption_colorIrcViewBackground));
+#endif
+ }
+}
+
+
+KviMessageColorListBoxItem::KviMessageColorListBoxItem(KviTalListBox * b,const QColor &clr,int idx)
+: KviTalListBoxText(b,QString::null)
+{
+ m_clr = clr;
+ m_iClrIdx = idx;
+ if((idx < 0) || (idx > 15))setText(__tr2qs_ctx("Transparent","options"));
+}
+
+KviMessageColorListBoxItem::~KviMessageColorListBoxItem()
+{
+}
+
+void KviMessageColorListBoxItem::paint(QPainter * p)
+{
+ QColor clr;
+
+ const KviTalListBox * lb = (const KviTalListBox *)listBox();
+
+ if((m_iClrIdx >= 0) && (m_iClrIdx <= 15))
+ {
+ clr = lb->isEnabled() ? KVI_OPTION_MIRCCOLOR(m_iClrIdx) : Qt::gray;
+ p->fillRect(0,0,width(lb),height(lb),clr);
+ } else {
+ clr = listBox()->colorGroup().background();
+ KviTalListBoxText::paint(p);
+ }
+#if QT_VERSION >= 300
+ if(isSelected())
+#else
+ if(selected())
+#endif
+ {
+#ifdef COMPILE_USE_QT4
+ QPen pen(clr);
+ pen.setStyle(Qt::DashLine);
+ p->setPen( pen);
+ p->drawRect(0,0,width(lb),height(lb));
+ p->drawRect(1,1,width(lb) - 2,height(lb) - 2);
+ p->drawRect(2,2,width(lb) - 4,height(lb) - 4);
+#else
+ p->drawWinFocusRect(0,0,width(lb),height(lb),clr);
+ p->drawWinFocusRect(1,1,width(lb) - 2,height(lb) - 2,clr);
+ p->drawWinFocusRect(2,2,width(lb) - 4,height(lb) - 4,clr);
+#endif
+ }
+}
+/*
+int KviMessageColorListBoxItem::width(const KviTalListBox * lb) const
+{
+ int w = lb->width();
+ if(w < 30)w = 30;
+ if(w > 150)w = 150;
+ return w;
+}
+
+int KviMessageColorListBoxItem::height(const KviTalListBox *) const
+{
+ return 30;
+}
+*/
+
+/*
+KviIrcColorsOptionsWidget::KviIrcColorsOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"irccolors","options")
+{
+ createLayout(5,4);
+
+ addRowSpacer(0,4,3,4);
+}
+
+KviIrcColorsOptionsWidget::~KviIrcColorsOptionsWidget()
+{
+}
+*/
+
+KviMessageColorsOptionsWidget::KviMessageColorsOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"messages")
+{
+ int i;
+
+ createLayout(2,4);
+
+ m_pLastItem = 0;
+
+
+ m_pListView = new KviMessageListView(this);
+ m_pListView->addColumn(__tr2qs_ctx("Message Type","options"));
+ m_pListView->setAllColumnsShowFocus(true);
+ m_pListView->setSelectionMode(KviTalListView::Single);
+ m_pListView->setFont(KVI_OPTION_FONT(KviOption_fontIrcView));
+ m_pListView->setStaticBackground(true);
+#ifdef COMPILE_USE_QT4
+ m_pListView->viewport()->setBackgroundMode(Qt::NoBackground);
+#else
+ m_pListView->viewport()->setBackgroundMode(QWidget::NoBackground);
+#endif
+
+ addWidgetToLayout(m_pListView,0,0,2,0);
+
+ KviTalVBox * box = new KviTalVBox(this);
+ addWidgetToLayout(box,3,0,3,0);
+
+ QLabel * l = new QLabel(__tr2qs_ctx("Background:","options"),box);
+
+ m_pBackListBox = new KviTalListBox(box);
+ m_pBackItems[16] = new KviMessageColorListBoxItem(m_pBackListBox,Qt::gray,KVI_TRANSPARENT);
+ for(i=0;i<16;i++)
+ {
+ m_pBackItems[i] = new KviMessageColorListBoxItem(m_pBackListBox,KVI_OPTION_MIRCCOLOR(i),i);
+ }
+
+ l = new QLabel(__tr2qs_ctx("Foreground:","options"),box);
+
+ m_pForeListBox = new KviTalListBox(box);
+ for(i=0;i<16;i++)
+ {
+ m_pForeItems[i] = new KviMessageColorListBoxItem(m_pForeListBox,KVI_OPTION_MIRCCOLOR(i),i);
+ }
+
+ l = new QLabel(__tr2qs_ctx("Alert level:","options"),box);
+
+ m_pLevelListBox = new KviTalListBox(box);
+ KviTalListBoxText * lbt;
+ for(i=0;i<6;i++)
+ {
+ QString tmpn;
+ tmpn.setNum(i);
+ lbt = new KviTalListBoxText(m_pLevelListBox,tmpn);
+ }
+
+ m_pIconButton = new KviStyledToolButton(box);
+ connect(m_pIconButton,SIGNAL(clicked()),this,SLOT(iconButtonClicked()));
+
+ m_pIconPopup = new KviTalPopupMenu(this);
+ KviIconWidget * iw = new KviIconWidget(m_pIconPopup);
+ connect(iw,SIGNAL(selected(int)),this,SLOT(newIconSelected(int)));
+ m_pIconPopup->insertItem(iw);
+
+
+ m_pEnableLogging = new KviStyledCheckBox(__tr2qs_ctx("Log this","options"),box);
+
+ KviTalHBox * h = new KviTalHBox(this);
+ addWidgetToLayout(h,0,1,3,1);
+ QPushButton * b = new QPushButton(__tr2qs_ctx("Load From...","options"),h);
+ connect(b,SIGNAL(clicked()),this,SLOT(load()));
+ b = new QPushButton(__tr2qs_ctx("Save As...","options"),h);
+ connect(b,SIGNAL(clicked()),this,SLOT(save()));
+
+
+ KviMessageListViewItem * it;
+
+ for(i=0;i<KVI_NUM_MSGTYPE_OPTIONS;i++)
+ {
+ it = new KviMessageListViewItem(m_pListView,i);
+ }
+
+ layout()->setRowStretch(0,1);
+ layout()->setColStretch(0,1);
+
+ connect(m_pListView,SIGNAL(selectionChanged(KviTalListViewItem *)),this,SLOT(itemChanged(KviTalListViewItem *)));
+ connect(m_pForeListBox,SIGNAL(selectionChanged(KviTalListBoxItem *)),this,SLOT(colorChanged(KviTalListBoxItem *)));
+ connect(m_pBackListBox,SIGNAL(selectionChanged(KviTalListBoxItem *)),this,SLOT(colorChanged(KviTalListBoxItem *)));
+
+ itemChanged(0);
+}
+
+KviMessageColorsOptionsWidget::~KviMessageColorsOptionsWidget()
+{
+}
+
+void KviMessageColorsOptionsWidget::newIconSelected(int iconId)
+{
+ if(!m_pLastItem)return;
+ if(iconId >= KVI_NUM_SMALL_ICONS)return;
+ m_pLastItem->msgType()->setPixId(iconId);
+ m_pIconButton->setIconSet(*(g_pIconManager->getSmallIcon(iconId)));
+ m_pListView->repaintItem(m_pLastItem);
+}
+
+void KviMessageColorsOptionsWidget::saveLastItem()
+{
+ if(!m_pLastItem)return;
+
+ int curIt = m_pForeListBox->currentItem();
+ if(curIt != -1)
+ {
+ //debug("Setting fore %d",curIt);
+ KviMessageColorListBoxItem * fore = (KviMessageColorListBoxItem *)m_pForeListBox->item(curIt);
+ //debug("And is %d",fore);
+ if(fore)m_pLastItem->msgType()->setFore(fore->m_iClrIdx);
+ }
+ curIt = m_pBackListBox->currentItem();
+ if(curIt != -1)
+ {
+ KviMessageColorListBoxItem * back = (KviMessageColorListBoxItem *)m_pBackListBox->item(curIt);
+ if(back)m_pLastItem->msgType()->setBack(back->m_iClrIdx);
+ }
+ m_pLastItem->msgType()->enableLogging(m_pEnableLogging->isChecked());
+ //debug("Updating","options");
+ curIt = m_pLevelListBox->currentItem();
+ if(curIt < 0 || curIt > 5)curIt = 1;
+ m_pLastItem->msgType()->setLevel(curIt);
+ m_pListView->repaintItem(m_pLastItem);
+}
+
+void KviMessageColorsOptionsWidget::itemChanged(KviTalListViewItem * it)
+{
+ //debug("Item changed","options");
+ if(m_pLastItem)saveLastItem();
+
+ m_pLastItem = 0; // do NOT save in this routine
+
+ m_pForeListBox->setEnabled(it);
+ m_pBackListBox->setEnabled(it);
+ m_pEnableLogging->setEnabled(it);
+ m_pIconButton->setEnabled(it);
+ m_pLevelListBox->setEnabled(it);
+
+ if(it)
+ {
+ int back = ((KviMessageListViewItem *)it)->msgType()->back();
+ int fore = ((KviMessageListViewItem *)it)->msgType()->fore();
+ if(fore >= 0 && fore <= 15)
+ {
+ m_pForeListBox->setCurrentItem(m_pForeItems[fore]);
+ }
+ if(back >= 0 && back <= 15)
+ {
+ m_pBackListBox->setCurrentItem(m_pBackItems[back]);
+ } else {
+ m_pBackListBox->setCurrentItem(m_pBackItems[16]);
+ }
+ m_pLevelListBox->setCurrentItem(((KviMessageListViewItem *)it)->msgType()->level());
+ m_pEnableLogging->setChecked(((KviMessageListViewItem *)it)->msgType()->logEnabled());
+ m_pIconButton->setIconSet(*(g_pIconManager->getSmallIcon(((KviMessageListViewItem *)it)->msgType()->pixId())));
+ }
+
+ // Ok...can save from now on
+ m_pLastItem = (KviMessageListViewItem *)it;
+
+}
+
+void KviMessageColorsOptionsWidget::colorChanged(KviTalListBoxItem *)
+{
+ if(m_pLastItem)saveLastItem();
+}
+
+void KviMessageColorsOptionsWidget::iconButtonClicked()
+{
+ m_pIconPopup->popup(QCursor::pos());
+}
+
+void KviMessageColorsOptionsWidget::commit()
+{
+ saveLastItem();
+
+ mergeResetFlag(KviOption_resetUpdateGui);
+
+ KviMessageListViewItem * it = (KviMessageListViewItem *)m_pListView->firstChild();
+ while(it)
+ {
+ KVI_OPTION_MSGTYPE(it->optionId()) = *(it->msgType());
+ it = (KviMessageListViewItem *)(it->nextSibling());
+ }
+
+ KviOptionsWidget::commit();
+}
+
+void KviMessageColorsOptionsWidget::save()
+{
+ QString szName;
+ QString szInit;
+ g_pApp->getLocalKvircDirectory(szInit,KviApp::MsgColors);
+
+ if(KviFileDialog::askForSaveFileName(szName,__tr2qs_ctx("Choose a Filename - KVIrc","options"),szInit))
+ {
+ if(m_pLastItem)saveLastItem();
+
+ KviConfig cfg(szName,KviConfig::Write);
+
+ cfg.setGroup("Messages");
+
+ KviStr tmp;
+
+
+ KviMessageListViewItem * it = (KviMessageListViewItem *)m_pListView->firstChild();
+
+ while(it)
+ {
+ tmp.sprintf("Fore%d",it->optionId());
+ cfg.writeEntry(tmp.ptr(),it->msgType()->fore());
+ tmp.sprintf("Back%d",it->optionId());
+ cfg.writeEntry(tmp.ptr(),it->msgType()->back());
+ tmp.sprintf("Icon%d",it->optionId());
+ cfg.writeEntry(tmp.ptr(),it->msgType()->pixId());
+ tmp.sprintf("Log%d",it->optionId());
+ cfg.writeEntry(tmp.ptr(),it->msgType()->logEnabled());
+ tmp.sprintf("Level%d",it->optionId());
+ cfg.writeEntry(tmp.ptr(),it->msgType()->level());
+ it = (KviMessageListViewItem *)(it->nextSibling());
+ }
+
+ }
+}
+
+//#include <errno.h>
+
+void KviMessageColorsOptionsWidget::load()
+{
+
+ //KviStr szName;
+ QString szName;
+ //KviStr szInit;
+ QString szInit;
+ g_pApp->getLocalKvircDirectory(szInit,KviApp::MsgColors);
+
+#ifndef COMPILE_ON_WINDOWS
+ // symlink local to global
+ //KviStr szGlobal;
+ QString szGlobal;
+ g_pApp->getGlobalKvircDirectory(szGlobal,KviApp::MsgColors);
+ //KviStr szLocal;
+ QString szLocal;
+ g_pApp->getLocalKvircDirectory(szLocal,KviApp::MsgColors,"presets");
+ //debug("SYMLINKING %s to %s",szGlobal.ptr(),szLocal.ptr());
+ //debug("SYMLINK RETURNS %d (%d)",::symlink(szGlobal.ptr(),szLocal.ptr()));
+ //debug("ERRNO (%d)",errno);
+ symlink(szGlobal,szLocal);
+ // FIXME: Do it also on windows...
+#endif
+
+ if(KviFileDialog::askForOpenFileName(szName,__tr2qs_ctx("Choose a Filename - KVIrc ","options"),szInit))
+ {
+
+ itemChanged(0);
+
+
+ KviConfig cfg(szName,KviConfig::Read);
+
+ cfg.setGroup("Messages");
+
+ //KviStr tmp;
+ QString tmp;
+ KviMessageListViewItem * it = (KviMessageListViewItem *)m_pListView->firstChild();
+
+ while(it)
+ {
+ tmp.sprintf("Fore%d",it->optionId());
+ int fore = cfg.readIntEntry(tmp,it->msgType()->fore());
+ if(fore < 0 || fore > 15)fore = 0;
+ it->msgType()->setFore(fore);
+
+ tmp.sprintf("Back%d",it->optionId());
+ int back = cfg.readIntEntry(tmp,it->msgType()->back());
+ if(back < 0 || back > 15)back = KVI_TRANSPARENT;
+ it->msgType()->setBack(back);
+
+ tmp.sprintf("Icon%d",it->optionId());
+ int ico = cfg.readIntEntry(tmp,it->msgType()->pixId());
+ if(ico < 0 || ico >= KVI_NUM_SMALL_ICONS)ico = 0;
+ it->msgType()->setPixId(ico);
+
+ tmp.sprintf("Log%d",it->optionId());
+ bool bLog = cfg.readBoolEntry(tmp,it->msgType()->logEnabled());
+ it->msgType()->enableLogging(bLog);
+
+ tmp.sprintf("Level%d",it->optionId());
+ int iLevel = cfg.readIntEntry(tmp,it->msgType()->level());
+ it->msgType()->setLevel(iLevel);
+
+ m_pListView->repaintItem(it);
+
+ it = (KviMessageListViewItem *)(it->nextSibling());
+ }
+
+ }
+}
+
+#include "m_optw_messages.moc"
diff --git a/src/modules/options/optw_messages.h b/src/modules/options/optw_messages.h
new file mode 100644
index 00000000..7f82a145
--- /dev/null
+++ b/src/modules/options/optw_messages.h
@@ -0,0 +1,186 @@
+#ifndef _OPTW_MESSAGES_H_
+#define _OPTW_MESSAGES_H_
+
+//
+// File : optw_messages.h
+// Creation date : Sat Aug 11 2001 18:11:21 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+
+#include "kvi_msgtype.h"
+
+#include "kvi_tal_listview.h"
+#include "kvi_tal_listbox.h"
+#include <qcheckbox.h>
+#include <qtoolbutton.h>
+#include "kvi_tal_popupmenu.h"
+
+#define KVI_OPTIONS_WIDGET_ICON_KviMessageOptionsWidget KVI_SMALLICON_MESSAGES
+#define KVI_OPTIONS_WIDGET_NAME_KviMessageOptionsWidget __tr2qs_no_lookup("Text")
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviMessageOptionsWidget __tr2qs_no_lookup("theme,colors,output")
+#define KVI_OPTIONS_WIDGET_GROUP_KviMessageOptionsWidget "theme"
+#define KVI_OPTIONS_WIDGET_CONTAINER_KviMessageOptionsWidget true
+
+class KviMessageOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviMessageOptionsWidget(QWidget * pParent);
+ ~KviMessageOptionsWidget();
+};
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviPrivmsgOptionsWidget KVI_SMALLICON_RAW
+#define KVI_OPTIONS_WIDGET_NAME_KviPrivmsgOptionsWidget __tr2qs_no_lookup("Message Style")
+#define KVI_OPTIONS_WIDGET_PARENT_KviPrivmsgOptionsWidget KviMessageOptionsWidget
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviPrivmsgOptionsWidget 40
+#define KVI_OPTIONS_WIDGET_GROUP_KviPrivmsgOptionsWidget "theme"
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviPrivmsgOptionsWidget __tr2qs_no_lookup("theme,privmsg,output,format")
+
+class KviPrivmsgOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviPrivmsgOptionsWidget(QWidget * parent);
+ ~KviPrivmsgOptionsWidget();
+};
+
+#define KVI_OPTIONS_WIDGET_ICON_KviTimestampOptionsWidget KVI_SMALLICON_TIME
+#define KVI_OPTIONS_WIDGET_NAME_KviTimestampOptionsWidget __tr2qs_no_lookup("Timestamp")
+#define KVI_OPTIONS_WIDGET_PARENT_KviTimestampOptionsWidget KviMessageOptionsWidget
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviTimestampOptionsWidget 20
+#define KVI_OPTIONS_WIDGET_GROUP_KviTimestampOptionsWidget "theme"
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviTimestampOptionsWidget __tr2qs_no_lookup("time,timestamp")
+
+class KviTimestampOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviTimestampOptionsWidget(QWidget * parent);
+ ~KviTimestampOptionsWidget();
+public:
+ KviBoolSelector * m_pUseTimestampSelector;
+ KviBoolSelector * m_pSpecialTimestampColorSelector;
+ KviMircTextColorSelector * m_pTimestampColorSelector;
+protected slots:
+ void enableDisableTimestampSelector(bool);
+};
+
+#define KVI_OPTIONS_WIDGET_ICON_KviMessageColorsOptionsWidget KVI_SMALLICON_MESSAGES
+#define KVI_OPTIONS_WIDGET_NAME_KviMessageColorsOptionsWidget __tr2qs_no_lookup("Message Colors")
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviMessageColorsOptionsWidget __tr2qs_no_lookup("theme,colors,messages,output")
+#define KVI_OPTIONS_WIDGET_GROUP_KviMessageColorsOptionsWidget "theme"
+#define KVI_OPTIONS_WIDGET_PARENT_KviMessageColorsOptionsWidget KviMessageOptionsWidget
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviMessageColorsOptionsWidget 30
+
+class KviMessageListView : public KviTalListView
+{
+ Q_OBJECT
+public:
+ KviMessageListView(QWidget * par);
+ ~KviMessageListView();
+protected:
+ void paintEmptyAreaInternal(QPainter * p,const QRect &viewportRect,const QRect &painterRect);
+public:
+ void paintEmptyArea(QPainter * p,const QRect &rct);
+};
+
+
+class KviMessageListViewItem : public KviTalListViewItem
+{
+public:
+ KviMessageListViewItem(KviTalListView * l,int optId);
+ ~KviMessageListViewItem();
+private:
+ int m_iOptId;
+ KviMsgType * m_pMsgType;
+public:
+ int optionId(){ return m_iOptId; };
+ KviMsgType * msgType(){ return m_pMsgType; };
+ virtual void paintCell(QPainter * p,const QColorGroup &,int,int,int);
+};
+
+
+class KviMessageColorListBoxItem : public KviTalListBoxText
+{
+public:
+ KviMessageColorListBoxItem(KviTalListBox * b,const QColor & clr,int idx);
+ ~KviMessageColorListBoxItem();
+public:
+ int m_iClrIdx;
+ QColor m_clr;
+public:
+ virtual void paint(QPainter * p);
+ virtual int width(const KviTalListBox * lv) const { return 120; };
+};
+
+
+
+
+class KviMessageColorsOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviMessageColorsOptionsWidget(QWidget * parent);
+ ~KviMessageColorsOptionsWidget();
+public:
+ KviMessageListView * m_pListView;
+ KviTalListBox * m_pForeListBox;
+ KviTalListBox * m_pBackListBox;
+ KviTalListBox * m_pLevelListBox;
+ KviMessageColorListBoxItem * m_pForeItems[16];
+ KviMessageColorListBoxItem * m_pBackItems[17];
+ KviMessageListViewItem * m_pLastItem;
+ QCheckBox * m_pEnableLogging;
+ QToolButton * m_pIconButton;
+ KviTalPopupMenu * m_pIconPopup;
+public:
+ void saveLastItem();
+protected slots:
+ void itemChanged(KviTalListViewItem * it);
+ void colorChanged(KviTalListBoxItem *);
+ void iconButtonClicked();
+ void newIconSelected(int iconId);
+ virtual void commit();
+ virtual void save();
+ virtual void load();
+};
+
+#define KVI_OPTIONS_WIDGET_ICON_KviStandardColorsOptionsWidget KVI_SMALLICON_COLORS
+#define KVI_OPTIONS_WIDGET_NAME_KviStandardColorsOptionsWidget __tr2qs_no_lookup("Color Set")
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviStandardColorsOptionsWidget __tr2qs_no_lookup("theme,colors,messages,output")
+#define KVI_OPTIONS_WIDGET_GROUP_KviStandardColorsOptionsWidget "theme"
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviStandardColorsOptionsWidget 20
+#define KVI_OPTIONS_WIDGET_PARENT_KviStandardColorsOptionsWidget KviMessageOptionsWidget
+
+class KviStandardColorsOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviStandardColorsOptionsWidget(QWidget * par);
+ ~KviStandardColorsOptionsWidget();
+
+};
+
+
+
+
+#endif //!_OPTW_MESSAGES_H_
diff --git a/src/modules/options/optw_nickserv.cpp b/src/modules/options/optw_nickserv.cpp
new file mode 100644
index 00000000..f182dc32
--- /dev/null
+++ b/src/modules/options/optw_nickserv.cpp
@@ -0,0 +1,368 @@
+//=============================================================================
+//
+// File : optw_nickserv.cpp
+// Creation date : Fri Aug 10 2001 03:38:10 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "optw_nickserv.h"
+
+#include <qlayout.h>
+#include "kvi_tal_tooltip.h"
+#include "kvi_tal_listview.h"
+#include <qlineedit.h>
+#include <qpushbutton.h>
+#include <qcheckbox.h>
+#include <qmessagebox.h>
+
+#include "kvi_qstring.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_nickserv.h"
+#include "kvi_ircmask.h"
+
+// kvi_app.cpp
+extern KVIRC_API KviNickServRuleSet * g_pNickServRuleSet;
+
+
+KviNickServRuleEditor::KviNickServRuleEditor(QWidget * par,bool bUseServerMaskField)
+: QDialog(par)
+{
+ setCaption(__tr2qs_ctx("NickServ Authentication Rule","options"));
+
+ QString html_center_begin = "<center>";
+ QString html_center_end = "</center>";
+
+ QGridLayout * gl = new QGridLayout(this,bUseServerMaskField ? 7 : 6,4,10,5);
+
+ QLabel * l = new QLabel(__tr2qs_ctx("Registered NickName","options"),this);
+ gl->addWidget(l,0,0);
+
+ m_pRegisteredNickEdit = new QLineEdit(this);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pRegisteredNickEdit,html_center_begin + __tr2qs_ctx("Put here the nickname that you have registered with NickServ","options") + html_center_end);
+#endif
+ gl->addMultiCellWidget(m_pRegisteredNickEdit,0,0,1,3);
+
+ l = new QLabel(__tr2qs_ctx("NickServ Mask","options"),this);
+ gl->addWidget(l,1,0);
+
+ m_pNickServMaskEdit = new QLineEdit(this);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pNickServMaskEdit,
+ html_center_begin + __tr2qs_ctx("This is the mask that NickServ must match to be correctly identified as the NickServ service. " \
+ "This usually will be something like <b>[email protected]</b>.<br>" \
+ "You can use wildcards for this field, but generally it is a security flaw. " \
+ "If you're 100%% sure that NO user on the network can use the nickname \"NickServ\", " \
+ "the mask <b>NickServ!*@*</b> may be safe to use in this field.","options") + html_center_end);
+#endif
+ gl->addMultiCellWidget(m_pNickServMaskEdit,1,1,1,3);
+
+ l = new QLabel(__tr2qs_ctx("Message Regexp","options"),this);
+ gl->addWidget(l,2,0);
+
+ m_pMessageRegexpEdit = new QLineEdit(this);
+ gl->addMultiCellWidget(m_pMessageRegexpEdit,2,2,1,3);
+
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pMessageRegexpEdit,
+ html_center_begin + __tr2qs_ctx("This is the simple regular expression that the identification request message " \
+ "from NickServ must match in order to be correctly recognized.<br>" \
+ "The message is usually something like \"To identify yourself please use /ns IDENTIFY password\" " \
+ "and it is sent when the NickServ wants you to authenticate yourself. " \
+ "You can use the * and ? wildcards.","options") + html_center_end);
+#endif
+ l = new QLabel(__tr2qs_ctx("Identify Command","options"),this);
+ gl->addWidget(l,3,0);
+
+ m_pIdentifyCommandEdit = new QLineEdit(this);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pIdentifyCommandEdit,
+ html_center_begin + __tr2qs_ctx("This is the command that will be executed when NickServ requests authentication " \
+ "for the nickname described in this rule (if the both server and NickServ mask are matched). " \
+ "This usually will be something like <b>msg NickServ identify &lt;yourpassword&gt;</b>.<br>" \
+ "You can use <b>msg -q</b> if you don't want the password echoed on the screen. " \
+ "Please note that there is no leading slash in this command.","options") + html_center_end);
+#endif
+ gl->addMultiCellWidget(m_pIdentifyCommandEdit,3,3,1,3);
+
+
+ int iNextLine = 4;
+
+ if(bUseServerMaskField)
+ {
+ l = new QLabel(__tr2qs_ctx("Server mask","options"),this);
+ gl->addWidget(l,4,0);
+
+ m_pServerMaskEdit = new QLineEdit(this);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pServerMaskEdit,
+ html_center_begin + __tr2qs_ctx("This is the mask that the current server must match in order " \
+ "for this rule to apply. It can contain * and ? wildcards.<br>Do NOT use simply \"*\" here...","options") + html_center_end);
+#endif
+ gl->addMultiCellWidget(m_pServerMaskEdit,4,4,1,3);
+ iNextLine++;
+ } else {
+ m_pServerMaskEdit = 0;
+ }
+
+
+#ifdef COMPILE_INFO_TIPS
+ l = new QLabel(html_center_begin + __tr2qs_ctx("Hint: Move the mouse cursor over the fields to get help","options") + html_center_end,this);
+#else
+ l = new QLabel("",this);
+#endif
+ l->setMargin(10);
+ gl->addMultiCellWidget(l,iNextLine,iNextLine,0,3);
+
+ iNextLine++;
+
+ QPushButton * p = new QPushButton(__tr2qs_ctx("Cancel","options"),this);
+ p->setMinimumWidth(100);
+ connect(p,SIGNAL(clicked()),this,SLOT(reject()));
+ gl->addWidget(p,iNextLine,2);
+
+ m_pOkButton = new QPushButton(__tr2qs_ctx("OK","options"),this);
+ m_pOkButton->setMinimumWidth(100);
+ m_pOkButton->setDefault(true);
+ connect(m_pOkButton,SIGNAL(clicked()),this,SLOT(okPressed()));
+ gl->addWidget(m_pOkButton,iNextLine,3);
+
+ gl->setColStretch(1,1);
+ gl->setRowStretch(bUseServerMaskField ? 5 : 4,1);
+
+ setMinimumWidth(250);
+}
+
+KviNickServRuleEditor::~KviNickServRuleEditor()
+{
+}
+
+
+
+bool KviNickServRuleEditor::validate()
+{
+ QString s = m_pRegisteredNickEdit->text();
+
+ QString m = __tr2qs_ctx("Invalid NickServ Rule","options");
+ QString o = __tr2qs_ctx("OK","options");
+
+ if(s.isEmpty())
+ {
+ QMessageBox::warning(this,m,__tr2qs_ctx("The Nickname field can't be empty!","options"),o);
+ return false;
+ }
+
+ if(s.find(QChar(' ')) != -1)
+ {
+ QMessageBox::warning(this,m,__tr2qs_ctx("The Nickname field can't contain spaces!","options"),o);
+ return false;
+ }
+
+ s = m_pNickServMaskEdit->text();
+
+ if(s.isEmpty())
+ {
+ QMessageBox::warning(this,m,__tr2qs_ctx("The NickServ mask can't be empty!<br>You must put at least * there.","options"),o);
+ return false;
+ }
+
+ s = m_pMessageRegexpEdit->text();
+
+ if(s.isEmpty())
+ {
+ QMessageBox::warning(this,m,__tr2qs_ctx("The Message Regexp can't be empty!<br>You must put at least * there.","options"),o);
+ return false;
+ }
+
+ s = m_pIdentifyCommandEdit->text();
+
+ if(s.isEmpty())
+ {
+ QMessageBox::warning(this,m,__tr2qs_ctx("The Identify Command can't be empty!","options"),o);
+ return false;
+ }
+
+ return true;
+}
+
+void KviNickServRuleEditor::okPressed()
+{
+ if(!validate())return;
+ accept();
+}
+
+
+bool KviNickServRuleEditor::editRule(KviNickServRule * r)
+{
+ m_pRegisteredNickEdit->setText(r->registeredNick().isEmpty() ? QString("MyNick") : r->registeredNick());
+ m_pNickServMaskEdit->setText(r->nickServMask().isEmpty() ? QString("NickServ!*@*") : r->nickServMask());
+ m_pMessageRegexpEdit->setText(r->messageRegexp().isEmpty() ? QString("*IDENTIFY*") : r->messageRegexp());
+ m_pIdentifyCommandEdit->setText(r->identifyCommand().isEmpty() ? QString("msg -q NickServ IDENTIFY <password>") : r->identifyCommand());
+ if(m_pServerMaskEdit)
+ m_pServerMaskEdit->setText(r->serverMask().isEmpty() ? QString("irc.yourserver.org") : r->serverMask());
+ m_pRegisteredNickEdit->selectAll();
+ if(exec() != QDialog::Accepted)return false;
+ r->setRegisteredNick(m_pRegisteredNickEdit->text());
+ r->setNickServMask(m_pNickServMaskEdit->text());
+ r->setMessageRegexp(m_pMessageRegexpEdit->text());
+ r->setIdentifyCommand(m_pIdentifyCommandEdit->text());
+ if(m_pServerMaskEdit)
+ r->setServerMask(m_pServerMaskEdit->text());
+ return true;
+}
+
+
+
+KviNickServOptionsWidget::KviNickServOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"nickserv_options_widget")
+{
+ createLayout(3,3);
+
+ QGridLayout * gl = layout();
+
+ KviNickServRuleSet * rs = g_pNickServRuleSet;
+ bool bNickServEnabled = rs ? (rs->isEnabled() && !rs->isEmpty()) : false;
+
+ m_pNickServCheck = new KviStyledCheckBox(__tr2qs_ctx("Enable NickServ Identification","options"),this);
+ gl->addMultiCellWidget(m_pNickServCheck,0,0,0,2);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pNickServCheck,
+ __tr2qs_ctx("This check enables the automatic identification with NickServ","options"));
+#endif
+ m_pNickServCheck->setChecked(bNickServEnabled);
+
+ m_pNickServListView = new KviTalListView(this);
+ m_pNickServListView->setSelectionMode(KviTalListView::Single);
+ m_pNickServListView->setAllColumnsShowFocus(true);
+ m_pNickServListView->addColumn(__tr2qs_ctx("Nickname","options"));
+ m_pNickServListView->addColumn(__tr2qs_ctx("Server mask","options"));
+ m_pNickServListView->addColumn(__tr2qs_ctx("NickServ Mask","options"));
+ m_pNickServListView->addColumn(__tr2qs_ctx("NickServ Request Mask","options"));
+ m_pNickServListView->addColumn(__tr2qs_ctx("Identify Command","options"));
+ connect(m_pNickServListView,SIGNAL(selectionChanged()),this,SLOT(enableDisableNickServControls()));
+
+ gl->addMultiCellWidget(m_pNickServListView,1,1,0,2);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pNickServListView,
+ __tr2qs_ctx("<center>This is a list of NickServ identification rules. " \
+ "KVIrc will use them to model its automatic interaction with NickServ on all the networks.<br>" \
+ "Please be aware that this feature can cause your NickServ passwords to be stolen " \
+ "if used improperly. Make sure that you fully understand the NickServ authentication protocol.<br>" \
+ "In other words, be sure to know what you're doing.<br>" \
+ "Also note that the password that you provide is stored as <b>PLAIN TEXT</b>.<br>" \
+ "KVIrc supports also per-network NickServ authentication rules that can be " \
+ "created in the \"Advanced...\" network options (accessible from the servers dialog)."
+ "</center>","options"));
+#endif
+
+ m_pAddRuleButton = new QPushButton(__tr2qs_ctx("Add Rule","options"),this);
+ connect(m_pAddRuleButton,SIGNAL(clicked()),this,SLOT(addNickServRule()));
+ gl->addWidget(m_pAddRuleButton,2,0);
+
+ m_pEditRuleButton = new QPushButton(__tr2qs_ctx("Edit Rule","options"),this);
+ connect(m_pEditRuleButton,SIGNAL(clicked()),this,SLOT(editNickServRule()));
+ gl->addWidget(m_pEditRuleButton,2,1);
+
+ m_pDelRuleButton = new QPushButton(__tr2qs_ctx("Delete Rule","options"),this);
+ connect(m_pDelRuleButton,SIGNAL(clicked()),this,SLOT(delNickServRule()));
+ gl->addWidget(m_pDelRuleButton,2,2);
+
+ connect(m_pNickServCheck,SIGNAL(toggled(bool)),this,SLOT(enableDisableNickServControls()));
+
+ if(rs && rs->rules())
+ {
+ KviPointerList<KviNickServRule> * ll = rs->rules();
+ for(KviNickServRule * rule = ll->first();rule;rule = ll->next())
+ {
+ (void)new KviTalListViewItem(m_pNickServListView,rule->registeredNick(),rule->serverMask(),rule->nickServMask(),rule->messageRegexp(),rule->identifyCommand());
+ }
+ }
+
+ enableDisableNickServControls();
+
+ gl->setRowStretch(1,1);
+
+
+}
+
+KviNickServOptionsWidget::~KviNickServOptionsWidget()
+{
+}
+
+void KviNickServOptionsWidget::editNickServRule()
+{
+ KviTalListViewItem * it = m_pNickServListView->currentItem();
+ if(!it)return;
+ KviNickServRule r(it->text(0),it->text(2),it->text(3),it->text(4),it->text(1));
+ KviNickServRuleEditor ed(this,true);
+ if(ed.editRule(&r))
+ {
+ it->setText(0,r.registeredNick());
+ it->setText(1,r.serverMask());
+ it->setText(2,r.nickServMask());
+ it->setText(3,r.messageRegexp());
+ it->setText(4,r.identifyCommand());
+ }
+}
+
+void KviNickServOptionsWidget::addNickServRule()
+{
+ KviNickServRule r;
+ KviNickServRuleEditor ed(this,true);
+ if(ed.editRule(&r))
+ (void)new KviTalListViewItem(m_pNickServListView,r.registeredNick(),r.serverMask(),r.nickServMask(),r.messageRegexp(),r.identifyCommand());
+}
+
+void KviNickServOptionsWidget::delNickServRule()
+{
+ KviTalListViewItem * it = m_pNickServListView->currentItem();
+ if(!it)return;
+ delete it;
+ enableDisableNickServControls();
+}
+
+void KviNickServOptionsWidget::enableDisableNickServControls()
+{
+ bool bEnabled = m_pNickServCheck->isChecked();
+ m_pNickServListView->setEnabled(bEnabled);
+ m_pAddRuleButton->setEnabled(bEnabled);
+ bEnabled = bEnabled && (m_pNickServListView->childCount() > 0) && m_pNickServListView->currentItem();
+ m_pDelRuleButton->setEnabled(bEnabled);
+ m_pEditRuleButton->setEnabled(bEnabled);
+}
+
+void KviNickServOptionsWidget::commit()
+{
+ g_pNickServRuleSet->clear();
+ if(m_pNickServListView->childCount() > 0)
+ {
+ g_pNickServRuleSet->setEnabled(m_pNickServCheck->isChecked());
+ KviTalListViewItem * it = m_pNickServListView->firstChild();
+ while(it)
+ {
+ g_pNickServRuleSet->addRule(KviNickServRule::createInstance(it->text(0),it->text(2),it->text(3),it->text(4),it->text(1)));
+ it = it->nextSibling();
+ }
+ }
+ KviOptionsWidget::commit();
+}
+
+#include "m_optw_nickserv.moc"
diff --git a/src/modules/options/optw_nickserv.h b/src/modules/options/optw_nickserv.h
new file mode 100644
index 00000000..b9e41e90
--- /dev/null
+++ b/src/modules/options/optw_nickserv.h
@@ -0,0 +1,89 @@
+#ifndef _OPTW_NICKSERV_H_
+#define _OPTW_NICKSERV_H_
+
+//=============================================================================
+//
+// File : optw_nickserv.h
+// Creation date : Fri Aug 10 2001 03:37:21 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "kvi_settings.h"
+#include "kvi_optionswidget.h"
+
+#include <qdialog.h>
+
+#define KVI_OPTIONS_WIDGET_ICON_KviNickServOptionsWidget KVI_SMALLICON_NICKSERV
+#define KVI_OPTIONS_WIDGET_NAME_KviNickServOptionsWidget __tr2qs_no_lookup("NickServ")
+#define KVI_OPTIONS_WIDGET_PARENT_KviNickServOptionsWidget KviToolsOptionsWidget
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviNickServOptionsWidget __tr2qs_no_lookup("authentication,identify")
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviNickServOptionsWidget 10000
+//#define KVI_OPTIONS_WIDGET_HIDDEN_KviNickServOptionsWidget true
+
+class QLineEdit;
+class QPushButton;
+class KviNickServRule;
+class KviTalListView;
+class QCheckBox;
+
+class KviNickServRuleEditor : public QDialog
+{
+ Q_OBJECT
+public:
+ KviNickServRuleEditor(QWidget * par,bool bUseServerMaskField = false);
+ ~KviNickServRuleEditor();
+protected:
+ QLineEdit * m_pRegisteredNickEdit;
+ QLineEdit * m_pNickServMaskEdit;
+ QLineEdit * m_pMessageRegexpEdit;
+ QLineEdit * m_pIdentifyCommandEdit;
+ QLineEdit * m_pServerMaskEdit;
+ QPushButton * m_pOkButton;
+public:
+ bool editRule(KviNickServRule * r);
+protected:
+ bool validate();
+protected slots:
+ void okPressed();
+};
+
+class KviNickServOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviNickServOptionsWidget(QWidget * parent);
+ ~KviNickServOptionsWidget();
+protected:
+ KviTalListView * m_pNickServListView;
+ QCheckBox * m_pNickServCheck;
+ QPushButton * m_pAddRuleButton;
+ QPushButton * m_pDelRuleButton;
+ QPushButton * m_pEditRuleButton;
+protected slots:
+ void enableDisableNickServControls();
+ void addNickServRule();
+ void delNickServRule();
+ void editNickServRule();
+public:
+ virtual void commit();
+};
+
+#endif //!_OPTW_NICKSERV_H_
diff --git a/src/modules/options/optw_notify.cpp b/src/modules/options/optw_notify.cpp
new file mode 100644
index 00000000..6ee5dc05
--- /dev/null
+++ b/src/modules/options/optw_notify.cpp
@@ -0,0 +1,134 @@
+//
+// File : optw_notify.cpp
+// Creation date : Sun Oct 28 15:11:29 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "optw_notify.h"
+
+#include <qlayout.h>
+#include "kvi_settings.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+
+
+//#warning "Info tips"
+
+
+KviNotifyOptionsWidget::KviNotifyOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"notify_options_widget")
+{
+ createLayout(5,1);
+
+ KviBoolSelector * b = addBoolSelector(0,0,0,0,__tr2qs_ctx("Use online notify list","options"),KviOption_boolUseNotifyList);
+ KviTalGroupBox *g = addGroupBox(0,1,0,1,1,Qt::Horizontal,__tr2qs_ctx("Configuration","options"));
+ connect(b,SIGNAL(toggled(bool)),g,SLOT(setEnabled(bool)));
+
+ connect(b,
+ SIGNAL(toggled(bool)),
+ addBoolSelector(g,__tr2qs_ctx("Show notifications in active window","options"),
+ KviOption_boolNotifyListChangesToActiveWindow,KVI_OPTION_BOOL(KviOption_boolUseNotifyList)),
+ SLOT(setEnabled(bool)));
+ connect(b,
+ SIGNAL(toggled(bool)),
+ addBoolSelector(g,__tr2qs_ctx("Flash window when users are going online","options"),
+ KviOption_boolFlashWindowOnNotifyOnLine,KVI_OPTION_BOOL(KviOption_boolUseNotifyList)),
+ SLOT(setEnabled(bool)));
+ connect(b,
+ SIGNAL(toggled(bool)),
+ addBoolSelector(g,__tr2qs_ctx("Popup notifier when users are going online","options"),
+ KviOption_boolPopupNotifierOnNotifyOnLine,KVI_OPTION_BOOL(KviOption_boolUseNotifyList)),
+ SLOT(setEnabled(bool)));
+
+ g = addGroupBox(0,2,0,2,1,Qt::Horizontal,__tr2qs_ctx("Advanced configuration","options"));
+ connect(b,SIGNAL(toggled(bool)),g,SLOT(setEnabled(bool)));
+
+ connect(b,
+ SIGNAL(toggled(bool)),
+ addBoolSelector(g,__tr2qs_ctx("Check USERHOST for online users","options"),
+ KviOption_boolNotifyListSendUserhostForOnlineUsers,KVI_OPTION_BOOL(KviOption_boolUseNotifyList)),
+ SLOT(setEnabled(bool)));
+ connect(b,
+ SIGNAL(toggled(bool)),
+ addBoolSelector(g,__tr2qs_ctx("Use \"smart\" notify list manager","options"),
+ KviOption_boolUseIntelligentNotifyListManager,KVI_OPTION_BOOL(KviOption_boolUseNotifyList)),
+ SLOT(setEnabled(bool)));
+ connect(b,
+ SIGNAL(toggled(bool)),
+ addBoolSelector(g,__tr2qs_ctx("Use the WATCH method if available","options"),
+ KviOption_boolUseWatchListIfAvailable,KVI_OPTION_BOOL(KviOption_boolUseNotifyList)),
+ SLOT(setEnabled(bool)));
+ connect(b,
+ SIGNAL(toggled(bool)),
+ addUIntSelector(g,__tr2qs_ctx("Check interval (in seconds)","options"),
+ KviOption_uintNotifyListCheckTimeInSecs,
+ 5,3600,180,KVI_OPTION_BOOL(KviOption_boolUseNotifyList)),
+ SLOT(setEnabled(bool)));
+ connect(b,
+ SIGNAL(toggled(bool)),
+ addUIntSelector(g,__tr2qs_ctx("ISON delay (in seconds)","options"),
+ KviOption_uintNotifyListIsOnDelayTimeInSecs,
+ 5,180,6,KVI_OPTION_BOOL(KviOption_boolUseNotifyList)),
+ SLOT(setEnabled(bool)));
+ connect(b,
+ SIGNAL(toggled(bool)),
+ addUIntSelector(g,__tr2qs_ctx("USERHOST delay (in seconds)","options"),
+ KviOption_uintNotifyListUserhostDelayTimeInSecs,
+ 5,180,6,KVI_OPTION_BOOL(KviOption_boolUseNotifyList)),
+ SLOT(setEnabled(bool)));
+
+ addLabel(0,3,0,3,__tr2qs_ctx("<p><b>Note:</b><br>The notify list is managed using the \"Registered Users\" settings.</p>","options"));
+ addRowSpacer(0,4,0,4);
+}
+
+KviNotifyOptionsWidget::~KviNotifyOptionsWidget()
+{
+}
+
+
+
+
+KviNotifierOptionsWidget::KviNotifierOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"notifier_options_widget")
+{
+ createLayout(3,1);
+
+ KviBoolSelector * b = addBoolSelector(0,0,0,0,__tr2qs_ctx("Forcibly and completely disable the notifier","options"),KviOption_boolForciblyDisableNotifier);
+#ifdef COMPILE_INFO_TIPS
+ QString tip = "<center>";
+ tip += __tr2qs_ctx("This is an option for the impatient: it allows to forcibly and permanently disable " \
+ "the notifier window. Please note that if this option is activated then " \
+ "the notifier will NOT popup even if all the other options around specify " \
+ "to use it in response to particular events. Also note that this option " \
+ "will make all the /notifier.* commands fail silently.","options");
+ tip += "</center>";
+ mergeTip(b,tip);
+#endif
+ addBoolSelector(0,1,0,1,__tr2qs_ctx("Disable notifier window flashing","options"),KviOption_boolDisableNotifierFlashing);
+ addBoolSelector(0,2,0,2,__tr2qs_ctx("Disable notifier window fade effect","options"),KviOption_boolDisableNotifierFadein);
+
+ addRowSpacer(0,3,0,3);
+}
+
+KviNotifierOptionsWidget::~KviNotifierOptionsWidget()
+{
+}
+
+
+#include "m_optw_notify.moc"
diff --git a/src/modules/options/optw_notify.h b/src/modules/options/optw_notify.h
new file mode 100644
index 00000000..374ddc21
--- /dev/null
+++ b/src/modules/options/optw_notify.h
@@ -0,0 +1,54 @@
+#ifndef _OPTW_NOTIFY_H_
+#define _OPTW_NOTIFY_H_
+//
+// File : optw_notify.h
+// Creation date : Sun Oct 28 15:11:30 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+
+#define KVI_OPTIONS_WIDGET_ICON_KviNotifyOptionsWidget KVI_SMALLICON_REGUSERS
+#define KVI_OPTIONS_WIDGET_NAME_KviNotifyOptionsWidget __tr2qs_no_lookup("Contacts")
+#define KVI_OPTIONS_WIDGET_PARENT_KviNotifyOptionsWidget KviToolsOptionsWidget
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviNotifyOptionsWidget __tr2qs_no_lookup("notify,buddy,buddies,friends")
+#define KVI_OPTIONS_WIDGET_MINIMAL_USER_EXPERIENCE_LEVEL_KviNotifyOptionsWidget 2
+
+class KviNotifyOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviNotifyOptionsWidget(QWidget * parent);
+ ~KviNotifyOptionsWidget();
+};
+
+#define KVI_OPTIONS_WIDGET_ICON_KviNotifierOptionsWidget KVI_SMALLICON_ALERT
+#define KVI_OPTIONS_WIDGET_NAME_KviNotifierOptionsWidget __tr2qs_no_lookup("Notifier")
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviNotifierOptionsWidget __tr2qs_no_lookup("popup")
+#define KVI_OPTIONS_WIDGET_PARENT_KviNotifierOptionsWidget KviInterfaceFeaturesOptionsWidget
+
+class KviNotifierOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviNotifierOptionsWidget(QWidget * parent);
+ ~KviNotifierOptionsWidget();
+};
+
+#endif //_OPTW_NOTIFY_H_
diff --git a/src/modules/options/optw_protection.cpp b/src/modules/options/optw_protection.cpp
new file mode 100644
index 00000000..27a0f4b1
--- /dev/null
+++ b/src/modules/options/optw_protection.cpp
@@ -0,0 +1,50 @@
+//=============================================================================
+//
+// File : optw_protection.cpp
+// Creation date : Wed Ott 19 16:15:16 2005 GMT by Grifisx & Noldor
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2005 Grifisx & Noldor
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "optw_protection.h"
+
+#include <qlayout.h>
+
+#include "kvi_settings.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+
+KviProtectionOptionsWidget::KviProtectionOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"protection_options_widget")
+{
+
+ createLayout(1,1);
+
+ QLabel * l;
+ l = addLabel(0,0,0,0,__tr2qs_ctx("This section contains irc protection tools<br>"\
+ "<p>like<b> flood, ignore, antispam. </b> " \
+ "</p>","options"));
+
+}
+
+KviProtectionOptionsWidget::~KviProtectionOptionsWidget()
+{
+}
+
+#include "m_optw_protection.moc"
diff --git a/src/modules/options/optw_protection.h b/src/modules/options/optw_protection.h
new file mode 100644
index 00000000..5ac37e43
--- /dev/null
+++ b/src/modules/options/optw_protection.h
@@ -0,0 +1,48 @@
+#ifndef _OPTW_PROTECTION_H_
+#define _OPTW_PROTECTION_H_
+
+//=============================================================================
+//
+// File : optw_protection.h
+//
+// This file is part of the KVirc irc client distribution
+// Creation date : Wed Ott 19 16:15:16 2005 GMT by Grifisx & Noldor
+//
+// Copyright (C) 2005 Grifisx & Noldor
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_optionswidget.h"
+#include "kvi_selectors.h"
+
+#define KVI_OPTIONS_WIDGET_ICON_KviProtectionOptionsWidget KVI_SMALLICON_SPY
+#define KVI_OPTIONS_WIDGET_NAME_KviProtectionOptionsWidget __tr2qs_no_lookup("Protection")
+#define KVI_OPTIONS_WIDGET_PARENT_KviProtectionOptionsWidget KviIrcOptionsWidget
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviProtectionOptionsWidget 60000
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviProtectionOptionsWidget __tr2qs_no_lookup("ctcp,flood")
+#define KVI_OPTIONS_WIDGET_CONTAINER_KviProtectionOptionsWidget true
+#define KVI_OPTIONS_WIDGET_NOTCONTAINED_KviProtectionOptionsWidget true
+
+class KviProtectionOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviProtectionOptionsWidget(QWidget * parent);
+ ~KviProtectionOptionsWidget();
+};
+
+#endif //!_OPTW_PROTECTION_H_
diff --git a/src/modules/options/optw_proxy.cpp b/src/modules/options/optw_proxy.cpp
new file mode 100644
index 00000000..523d3c79
--- /dev/null
+++ b/src/modules/options/optw_proxy.cpp
@@ -0,0 +1,367 @@
+//
+// File : optw_proxy.cpp
+// Creation date : Mon Jun 24 2000 22:02:11 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "optw_proxy.h"
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+#include "kvi_proxydb.h"
+#include "kvi_ipeditor.h"
+#include "kvi_netutils.h"
+#include "kvi_settings.h"
+#include "kvi_options.h"
+#include "kvi_styled_controls.h"
+
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qcombobox.h>
+#include <qcheckbox.h>
+#include <kvi_tal_groupbox.h>
+#include "kvi_tal_popupmenu.h"
+#include <qcursor.h>
+#include "kvi_tal_tooltip.h"
+#include <qtoolbutton.h>
+
+
+KviProxyOptionsListViewItem::KviProxyOptionsListViewItem(KviTalListView *parent,const QPixmap &pm,KviProxy * prx)
+: KviTalListViewItem(parent,prx->m_szHostname.ptr())
+{
+ setPixmap(0,pm);
+ m_pProxyData = new KviProxy(*prx);
+}
+
+KviProxyOptionsListViewItem::~KviProxyOptionsListViewItem()
+{
+ delete m_pProxyData;
+}
+
+KviProxyOptionsWidget::KviProxyOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"proxy_options_widget")
+{
+ createLayout(3,2);
+
+ addBoolSelector(0,0,1,0,__tr2qs_ctx("Use proxy","options"),KviOption_boolUseProxyHost);
+
+ m_pListView = new KviTalListView(this);
+ addWidgetToLayout(m_pListView,0,1,0,1);
+ m_pListView->addColumn(__tr2qs_ctx("Proxy","options"));
+ m_pListView->setRootIsDecorated(true);
+ m_pListView->setAllColumnsShowFocus(true);
+ m_pListView->setSelectionMode(KviTalListView::Single);
+
+ connect(m_pListView,SIGNAL(selectionChanged(KviTalListViewItem *)),
+ this,SLOT(listViewItemSelectionChanged(KviTalListViewItem *)));
+ connect(m_pListView,SIGNAL(rightButtonPressed(KviTalListViewItem *,const QPoint &,int)),
+ this,SLOT(listViewRightButtonPressed(KviTalListViewItem *,const QPoint &,int)));
+
+#ifdef COMPILE_INFO_TIPS
+ QString tiptxt = __tr2qs_ctx("<center>This is the list of available proxy servers.<br>" \
+ "Right-click on the list to add or remove proxies.</center>","options");
+ mergeTip(m_pListView,tiptxt);
+ mergeTip(m_pListView->viewport(),tiptxt);
+#endif
+
+ KviTalVBox * vbox = new KviTalVBox(this);
+ addWidgetToLayout(vbox,1,1,1,1);
+
+ QToolButton * tb = new KviStyledToolButton(vbox);
+ tb->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_PROXY)));
+ tb->setAutoRaise(true);
+ connect(tb,SIGNAL(clicked()),this,SLOT(newProxy()));
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(tb,__tr2qs_ctx("New Proxy","options"));
+#endif
+
+ tb = new KviStyledToolButton(vbox);
+ tb->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CUT)));
+ //tb->setEnabled(false);
+ tb->setAutoRaise(true);
+ connect(tb,SIGNAL(clicked()),this,SLOT(removeCurrent()));
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(tb,__tr2qs_ctx("Remove Proxy","options"));
+#endif
+
+ QFrame * lll = new QFrame(vbox);
+ vbox->setStretchFactor(lll,100);
+
+
+ KviTalGroupBox * gbox = addGroupBox(0,2,1,2,2,Qt::Horizontal,__tr2qs_ctx("Configuration","options"),this);
+ //QGridLayout * gl = new QGridLayout(gbox->layout());
+ //gl->setMargin(2);
+ //gl->setSpacing(4);
+
+ m_pProxyLabel = new QLabel(__tr2qs_ctx("Proxy:","options"),gbox);
+
+ m_pProxyEdit = new QLineEdit(gbox);
+
+ m_pPortLabel = new QLabel(__tr2qs_ctx("Port:","options"),gbox);
+
+ m_pPortEdit = new QLineEdit(gbox);
+
+ m_pIpLabel = new QLabel(__tr2qs_ctx("IP address:","options"),gbox);
+
+ m_pIpEditor = new KviIpEditor(gbox,KviIpEditor::IpV4);
+
+ m_pUserLabel = new QLabel(__tr2qs_ctx("Username:","options"),gbox);
+
+ m_pUserEdit = new QLineEdit(gbox);
+
+ m_pPassLabel = new QLabel(__tr2qs_ctx("Password:","options"),gbox);
+
+ m_pPassEdit = new QLineEdit(gbox);
+
+ m_pProtocolLabel = new QLabel(__tr2qs_ctx("Protocol:","options"),gbox);
+
+ m_pProtocolBox = new QComboBox(false,gbox);
+
+ QStringList l;
+ KviProxy::getSupportedProtocolNames(l);
+
+ m_pProtocolBox->insertStringList(l);
+
+ m_pIpV6Check = new KviStyledCheckBox(__tr2qs_ctx("Use IPv6 protocol","options"),gbox);
+ connect(m_pIpV6Check,SIGNAL(toggled(bool)),this,SLOT(ipV6CheckToggled(bool)));
+#ifndef COMPILE_IPV6_SUPPORT
+ m_pIpV6Check->setEnabled(false);
+#endif
+
+ m_pLastEditedItem = 0;
+
+ fillProxyList();
+
+ layout()->setRowStretch(0,1);
+ layout()->setColStretch(0,1);
+
+ m_pContextPopup = new KviTalPopupMenu(this);
+
+
+}
+
+KviProxyOptionsWidget::~KviProxyOptionsWidget()
+{
+}
+
+
+void KviProxyOptionsWidget::ipV6CheckToggled(bool bEnabled)
+{
+ m_pIpEditor->setAddressType(bEnabled ? KviIpEditor::IpV6 : KviIpEditor::IpV4);
+}
+
+void KviProxyOptionsWidget::fillProxyList()
+{
+ KviProxyOptionsListViewItem * prx;
+
+ KviPointerList<KviProxy> * l = g_pProxyDataBase->proxyList();
+
+ for(KviProxy * p = l->first();p;p = l->next())
+ {
+ prx = new KviProxyOptionsListViewItem(m_pListView,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_PROXY)),p);
+ if(p == g_pProxyDataBase->currentProxy())
+ {
+ m_pListView->setSelected(prx,true);
+ m_pListView->ensureItemVisible(prx);
+ }
+ }
+ if(!(g_pProxyDataBase->currentProxy()))listViewItemSelectionChanged(0);
+}
+
+void KviProxyOptionsWidget::listViewItemSelectionChanged(KviTalListViewItem *it)
+{
+ if(m_pLastEditedItem)saveLastItem();
+ m_pLastEditedItem = (KviProxyOptionsListViewItem *)it;
+
+ m_pProxyLabel->setEnabled(m_pLastEditedItem);
+ m_pProxyEdit->setEnabled(m_pLastEditedItem);
+ m_pIpLabel->setEnabled(m_pLastEditedItem);
+ m_pIpEditor->setEnabled(m_pLastEditedItem);
+ m_pUserLabel->setEnabled(m_pLastEditedItem);
+ m_pUserEdit->setEnabled(m_pLastEditedItem);
+ m_pPassLabel->setEnabled(m_pLastEditedItem);
+ m_pPassEdit->setEnabled(m_pLastEditedItem);
+ m_pProtocolLabel->setEnabled(m_pLastEditedItem);
+ m_pProtocolBox->setEnabled(m_pLastEditedItem);
+ m_pPortLabel->setEnabled(m_pLastEditedItem);
+ m_pPortEdit->setEnabled(m_pLastEditedItem);
+
+#ifdef COMPILE_IPV6_SUPPORT
+ m_pIpV6Check->setEnabled(m_pLastEditedItem);
+#else
+ m_pIpV6Check->setEnabled(false);
+#endif
+ if(m_pLastEditedItem)
+ {
+ m_pProxyEdit->setText(m_pLastEditedItem->m_pProxyData->m_szHostname.ptr());
+
+ for(int i=0;i<m_pProtocolBox->count();i++)
+ {
+ KviStr txt = m_pProtocolBox->text(i);
+ if(kvi_strEqualCI(m_pLastEditedItem->m_pProxyData->protocolName(),txt.ptr()))
+ {
+ m_pProtocolBox->setCurrentItem(i);
+ break;
+ }
+ }
+
+#ifdef COMPILE_IPV6_SUPPORT
+ m_pIpV6Check->setChecked(m_pLastEditedItem->m_pProxyData->isIpV6());
+ m_pIpEditor->setAddressType(m_pLastEditedItem->m_pProxyData->isIpV6() ? KviIpEditor::IpV6 : KviIpEditor::IpV4);
+#else
+ m_pIpV6Check->setChecked(false);
+ m_pIpEditor->setAddressType(KviIpEditor::IpV4);
+#endif
+
+
+ if(!m_pIpEditor->setAddress(m_pLastEditedItem->m_pProxyData->m_szIp.ptr()))
+ {
+#ifdef COMPILE_IPV6_SUPPORT
+ m_pIpEditor->setAddress(m_pLastEditedItem->m_pProxyData->isIpV6() ? "0:0:0:0:0:0:0:0" : "0.0.0.0");
+#else
+ m_pIpEditor->setAddress("0.0.0.0");
+#endif
+ }
+
+ m_pUserEdit->setText(m_pLastEditedItem->m_pProxyData->m_szUser.ptr());
+ m_pPassEdit->setText(m_pLastEditedItem->m_pProxyData->m_szPass.ptr());
+ KviStr tmp(KviStr::Format,"%u",m_pLastEditedItem->m_pProxyData->m_uPort);
+ m_pPortEdit->setText(tmp.ptr());
+ } else {
+ m_pProxyEdit->setText("");
+ m_pUserEdit->setText("");
+ m_pPassEdit->setText("");
+ m_pPortEdit->setText("");
+ m_pIpEditor->setAddress("0.0.0.0");
+ m_pIpV6Check->setEnabled(false);
+ }
+}
+
+
+void KviProxyOptionsWidget::saveLastItem()
+{
+ if(m_pLastEditedItem)
+ {
+ KviStr tmp = m_pProxyEdit->text();
+ if(tmp.isEmpty())tmp = "irc.unknown.net";
+ m_pLastEditedItem->setText(0,tmp.ptr());
+ m_pLastEditedItem->m_pProxyData->m_szHostname = tmp;
+#ifdef COMPILE_IPV6_SUPPORT
+ m_pLastEditedItem->m_pProxyData->m_bIsIpV6 = m_pIpV6Check->isChecked();
+#else
+ m_pLastEditedItem->m_pProxyData->m_bIsIpV6 = false;
+#endif
+ m_pLastEditedItem->m_pProxyData->m_szIp = "";
+ KviStr tmpAddr = m_pIpEditor->address();
+
+ if(!m_pIpEditor->hasEmptyFields())
+ {
+#ifdef COMPILE_IPV6_SUPPORT
+ if(m_pIpV6Check->isChecked())
+ {
+ if((!kvi_strEqualCI(tmpAddr.ptr(),"0:0:0:0:0:0:0:0")) &&
+ kvi_isValidStringIp_V6(tmpAddr.ptr()))
+ {
+ m_pLastEditedItem->m_pProxyData->m_szIp = tmpAddr;
+ }
+ } else {
+#endif
+ if((!kvi_strEqualCI(tmpAddr.ptr(),"0.0.0.0")) &&
+ kvi_isValidStringIp(tmpAddr.ptr()))
+ {
+ m_pLastEditedItem->m_pProxyData->m_szIp = tmpAddr;
+ }
+#ifdef COMPILE_IPV6_SUPPORT
+ }
+#endif
+ }
+
+ m_pLastEditedItem->m_pProxyData->m_szPass = m_pPassEdit->text();
+ m_pLastEditedItem->m_pProxyData->m_szUser = m_pUserEdit->text();
+ tmp = m_pPortEdit->text();
+ bool bOk;
+ kvi_u32_t uPort = tmp.toUInt(&bOk);
+ if(!bOk)uPort = 1080;
+ m_pLastEditedItem->m_pProxyData->m_uPort = uPort;
+// m_pLastEditedItem->m_pProxyData->m_bSocksV5 = m_pSocks5Check->isChecked();
+ tmp = m_pProtocolBox->currentText();
+ m_pLastEditedItem->m_pProxyData->setNamedProtocol(tmp.ptr());
+ }
+}
+
+void KviProxyOptionsWidget::commit()
+{
+ saveLastItem();
+ g_pProxyDataBase->clear();
+ KviProxyOptionsListViewItem * it = (KviProxyOptionsListViewItem *)m_pListView->firstChild();
+ while(it)
+ {
+ KviStr tmp = it->text(0);
+ if(tmp.hasData())
+ {
+ KviProxy * prx = new KviProxy(*(((KviProxyOptionsListViewItem *)it)->m_pProxyData));
+ g_pProxyDataBase->insertProxy(prx);
+
+ if(it == m_pLastEditedItem)g_pProxyDataBase->setCurrentProxy(prx);
+ }
+ it = (KviProxyOptionsListViewItem *)it->nextSibling();
+ }
+
+ if(g_pProxyDataBase->currentProxy() == 0)
+ {
+ g_pProxyDataBase->setCurrentProxy(g_pProxyDataBase->proxyList()->first());
+ }
+
+ KviOptionsWidget::commit();
+}
+
+void KviProxyOptionsWidget::listViewRightButtonPressed(KviTalListViewItem *it,const QPoint &pnt,int col)
+{
+ m_pContextPopup->clear();
+ m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_PROXY)),__tr2qs_ctx("&New Proxy","options"),this,SLOT(newProxy()));
+ m_pContextPopup->setItemEnabled(m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CUT)),__tr2qs_ctx("Re&move Proxy","options"),this,SLOT(removeCurrent())),it);
+ m_pContextPopup->popup(QCursor::pos());
+}
+
+void KviProxyOptionsWidget::newProxy()
+{
+ KviProxy prx;
+ KviProxyOptionsListViewItem * it = new KviProxyOptionsListViewItem(m_pListView,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_PROXY)),&prx);
+ m_pListView->setSelected(it,true);
+ m_pListView->ensureItemVisible(it);
+}
+
+
+void KviProxyOptionsWidget::removeCurrent()
+{
+ if(m_pLastEditedItem)
+ {
+ delete m_pLastEditedItem;
+ m_pLastEditedItem = 0;
+ KviTalListViewItem * it = m_pListView->firstChild();
+ if(it)
+ {
+ m_pListView->setSelected(it,true);
+ m_pListView->ensureItemVisible(it);
+ } else {
+ listViewItemSelectionChanged(0);
+ }
+ }
+}
+
+#include "m_optw_proxy.moc"
diff --git a/src/modules/options/optw_proxy.h b/src/modules/options/optw_proxy.h
new file mode 100644
index 00000000..a6f18ada
--- /dev/null
+++ b/src/modules/options/optw_proxy.h
@@ -0,0 +1,94 @@
+#ifndef _OPTW_PROXY_H_
+#define _OPTW_PROXY_H_
+
+//
+// File : optw_proxy.h
+// Creation date : Mon Jun 24 2000 21:58:25 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+#include "kvi_tal_listview.h"
+
+
+class KviProxy;
+class KviProxyDataBase;
+
+extern KVIRC_API KviProxyDataBase * g_pProxyDataBase;
+
+class KviProxyOptionsListViewItem : public KviTalListViewItem
+{
+public:
+ KviProxyOptionsListViewItem(KviTalListView *parent,const QPixmap &pm,KviProxy * prx);
+ ~KviProxyOptionsListViewItem();
+public:
+ KviProxy * m_pProxyData;
+};
+
+class QLabel;
+class QLineEdit;
+class KviIpEditor;
+class QCheckBox;
+class KviTalPopupMenu;
+class QComboBox;
+
+#define KVI_OPTIONS_WIDGET_ICON_KviProxyOptionsWidget KVI_SMALLICON_PROXY
+#define KVI_OPTIONS_WIDGET_NAME_KviProxyOptionsWidget __tr2qs_no_lookup("Proxy Hosts")
+#define KVI_OPTIONS_WIDGET_PARENT_KviProxyOptionsWidget KviConnectionOptionsWidget
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviProxyOptionsWidget __tr2qs_no_lookup("connection,servers")
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviProxyOptionsWidget 70000
+
+class KviProxyOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviProxyOptionsWidget(QWidget * parent);
+ ~KviProxyOptionsWidget();
+protected:
+ KviTalListView * m_pListView;
+ QLabel * m_pProxyLabel;
+ QLineEdit * m_pProxyEdit;
+ QLabel * m_pIpLabel;
+ KviIpEditor * m_pIpEditor;
+ QLabel * m_pUserLabel;
+ QLineEdit * m_pUserEdit;
+ QLabel * m_pPassLabel;
+ QLineEdit * m_pPassEdit;
+ QLabel * m_pPortLabel;
+ QLineEdit * m_pPortEdit;
+ QLabel * m_pProtocolLabel;
+ QComboBox * m_pProtocolBox;
+ KviTalPopupMenu * m_pContextPopup;
+ QCheckBox * m_pIpV6Check;
+ KviProxyOptionsListViewItem * m_pLastEditedItem;
+private:
+
+ void fillProxyList();
+ void saveLastItem();
+protected slots:
+ void listViewItemSelectionChanged(KviTalListViewItem *it);
+ void listViewRightButtonPressed(KviTalListViewItem *it,const QPoint &pnt,int col);
+ void newProxy();
+ void removeCurrent();
+ void ipV6CheckToggled(bool bEnabled);
+public:
+ virtual void commit();
+};
+
+#endif //!_OPTW_PROXY_H_
diff --git a/src/modules/options/optw_query.cpp b/src/modules/options/optw_query.cpp
new file mode 100644
index 00000000..d0026c6e
--- /dev/null
+++ b/src/modules/options/optw_query.cpp
@@ -0,0 +1,115 @@
+//
+// File : optw_query.cpp
+// Creation date : Mon Oct 29 15:37:16 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "optw_query.h"
+
+#include <qlayout.h>
+
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_settings.h"
+
+
+#ifdef COMPILE_KDE_SUPPORT
+ #include <kdeversion.h>
+#endif
+
+KviQueryOptionsWidget::KviQueryOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"query_options_widget")
+{
+ createLayout(8,1);
+
+ KviTalGroupBox *g = addGroupBox(0,0,0,0,1,Qt::Horizontal,__tr2qs_ctx("Open Query For","options"));
+ KviBoolSelector *b = addBoolSelector(g, __tr2qs_ctx("Private messages","options"),KviOption_boolCreateQueryOnPrivmsg);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,
+ __tr2qs_ctx("<center>This option enables query window creation " \
+ "when a private message (PRIVMSG) is received.<br>" \
+ "If you disable this, private messages will " \
+ "be shown in the active window or a common channel.</center>","options"));
+#endif
+
+ b = addBoolSelector(g, __tr2qs_ctx("Private notices","options"),KviOption_boolCreateQueryOnNotice);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,
+ __tr2qs_ctx("<center>This option enables query window creation " \
+ "when a private notice (NOTICE) is received.<br>" \
+ "If you disable this, private notices will " \
+ "be shown in the active window or a common channel.</center>","options"));
+#endif
+
+
+ b = addBoolSelector(0,1,0,1,__tr2qs_ctx("Always open queries as minimized","options"),KviOption_boolCreateMinimizedQuery);
+
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,
+ __tr2qs_ctx("<center>This option causes newly created " \
+ "query windows to be immediately minimized.<br>" \
+ "Enable this if you don't like queries " \
+ "popping up while you're typing something in a channel. :D</center>","options"));
+#endif
+
+
+
+ b = addBoolSelector(0,2,0,2, __tr2qs_ctx("Enable target user tracking","options"),KviOption_boolEnableQueryTracing);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,
+ __tr2qs_ctx("<center>This option will enable target user tracking.<br>" \
+ "Some actions of the target user (e.g. joins and parts) " \
+ "will be displayed in the window.<br></center>","options"));
+#endif
+
+#if defined(COMPILE_ON_WINDOWS) || (defined(COMPILE_KDE_SUPPORT) && (KDE_VERSION_MAJOR >= 3) && (KDE_VERSION_MINOR >= 2))
+ b = addBoolSelector(0,3,0,3,__tr2qs_ctx("Flash system taskbar on new query message","options"),KviOption_boolFlashQueryWindowOnNewMessages);
+ #ifdef COMPILE_INFO_TIPS
+ mergeTip(b,
+ __tr2qs_ctx("<center>This option causes the system taskbar entry for KVIrc to flash when a new query message " \
+ "is received and the KVIrc window is not the active.</center>","options"));
+ #endif
+#endif
+
+ b = addBoolSelector(0,4,0,4, __tr2qs_ctx("Popup notifier on new query message","options"),KviOption_boolPopupNotifierOnNewQueryMessages);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,
+ __tr2qs_ctx("<center>This option causes a small notifier window to pop up " \
+ "in the low right corner of the screen when a new message is received " \
+ "and the KVIrc window is not active.</center>","options"));
+#endif
+ b = addBoolSelector(0,5,0,5, __tr2qs_ctx("Show information about query target at the top of the query","options"),KviOption_boolShowExtendedInfoInQueryLabel);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,
+ __tr2qs_ctx("<center>This option enables query window information " \
+ "label. It can show you known information about query target at the top of the window.<br>" \
+ "Uncheck if you think,that it wastes your query space/" \
+ "</center>","options"));
+#endif
+
+ addRowSpacer(0,6,0,6);
+}
+
+KviQueryOptionsWidget::~KviQueryOptionsWidget()
+{
+}
+
+
+#include "m_optw_query.moc"
diff --git a/src/modules/options/optw_query.h b/src/modules/options/optw_query.h
new file mode 100644
index 00000000..bae1c7bc
--- /dev/null
+++ b/src/modules/options/optw_query.h
@@ -0,0 +1,43 @@
+#ifndef _OPTW_QUERY_H_
+#define _OPTW_QUERY_H_
+//
+// File : optw_query.h
+// Creation date : Tue Mar 05 22:31:18 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek ([email protected])
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+
+#define KVI_OPTIONS_WIDGET_ICON_KviQueryOptionsWidget KVI_SMALLICON_QUERY
+#define KVI_OPTIONS_WIDGET_NAME_KviQueryOptionsWidget __tr2qs_no_lookup("Query")
+#define KVI_OPTIONS_WIDGET_PARENT_KviQueryOptionsWidget KviIrcOptionsWidget
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviQueryOptionsWidget __tr2qs_no_lookup("chat")
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviQueryOptionsWidget 80000
+#define KVI_OPTIONS_WIDGET_NOTCONTAINED_KviQueryOptionsWidget true
+
+class KviQueryOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviQueryOptionsWidget(QWidget * parent);
+ ~KviQueryOptionsWidget();
+protected:
+};
+
+#endif //_OPTW_away_H_
diff --git a/src/modules/options/optw_servers.cpp b/src/modules/options/optw_servers.cpp
new file mode 100644
index 00000000..0b50bc78
--- /dev/null
+++ b/src/modules/options/optw_servers.cpp
@@ -0,0 +1,1712 @@
+//=============================================================================
+//
+// File : optw_servers.cpp
+// Creation date : Wed Jun 12 2000 03:29:51 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "optw_servers.h"
+#include "optw_proxy.h"
+#include "kvi_query.h"
+#include "kvi_channel.h"
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+#include "kvi_ircserverdb.h"
+#include "kvi_ipeditor.h"
+#include "kvi_netutils.h"
+#include "kvi_settings.h"
+#include "kvi_filedialog.h"
+#include "kvi_config.h"
+#include "kvi_scripteditor.h"
+#include "kvi_options.h"
+
+#include "kvi_app.h"
+#include "kvi_console.h"
+#include "kvi_ircurl.h"
+#include "kvi_module.h"
+#include "kvi_modulemanager.h"
+#include "kvi_moduleextension.h"
+#include "kvi_msgbox.h"
+#include "kvi_mexserverimport.h"
+#include "kvi_nickserv.h"
+#include "optw_nickserv.h" // for the NickServ rule editor
+#include "kvi_proxydb.h"
+#include "kvi_kvs_script.h"
+#include "kvi_styled_controls.h"
+
+#include <qtoolbutton.h>
+#include <qlineedit.h>
+#include <qcheckbox.h>
+#include "kvi_tal_popupmenu.h"
+#include <qcursor.h>
+#include "kvi_tal_tooltip.h"
+#include <qvalidator.h>
+#include <qmessagebox.h>
+#include "kvi_pointerhashtable.h"
+#include <qcombobox.h>
+#include <qbuttongroup.h>
+#include <qmessagebox.h>
+#include <qinputdialog.h>
+#include <qmessagebox.h>
+
+
+KviNetworkDetailsWidget::KviNetworkDetailsWidget(QWidget * par,KviIrcNetwork * n)
+ : QDialog(par,"network_details",true)
+{
+ m_pOnConnectEditor=0;
+ m_pOnLoginEditor=0;
+
+ m_pUserEditor=0;
+ m_pPassEditor=0;
+ m_pNickEditor=0;
+ m_pRealEditor=0;
+ m_pDescEditor=0;
+
+ m_pEncodingEditor=0;
+
+ m_pAutoConnectCheck=0;
+
+ m_pNickServListView=0;
+ m_pNickServCheck=0;
+ m_pAddRuleButton=0;
+ m_pDelRuleButton=0;
+ m_pEditRuleButton=0;
+
+ m_pChannelListSelector=0;
+
+ QGridLayout * g = new QGridLayout(this,4,4,10,4);
+
+ setCaption(__tr2qs_ctx("Network Details","options"));
+ setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_WORLD)));
+
+ QString szTmp = "<font size=\"+1\"><b>";
+ szTmp += n->name();
+ szTmp += "</b></font>";
+
+ QLabel * l = new QLabel(szTmp,this);
+ l->setFrameStyle(QFrame::Raised | QFrame::StyledPanel);
+ l->setAlignment(Qt::AlignCenter);
+ l->setMargin(10);
+ g->addMultiCellWidget(l,0,0,0,3);
+ l->setMinimumWidth(200);
+
+ l = new QLabel(__tr2qs_ctx("Description:","options"),this);
+ g->addWidget(l,1,0);
+ m_pDescEditor = new QLineEdit(this);
+ g->addMultiCellWidget(m_pDescEditor,1,1,1,3);
+ m_pDescEditor->setText(n->description());
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pDescEditor,__tr2qs_ctx("<center>Put here a brief description of the network.</center>","options"));
+#endif
+
+ // Identity tab
+
+ QTabWidget * tw = new QTabWidget(this);
+ g->addMultiCellWidget(tw,2,2,0,3);
+
+ QWidget * tab = new QWidget(tw);
+ QGridLayout * gl = new QGridLayout(tab,4,2,10,4);
+
+ KviTalGroupBox *gbox = new KviTalGroupBox(2,Qt::Horizontal,__tr2qs_ctx("Properties","options"),tab);
+ gl->addMultiCellWidget(gbox,0,0,0,1);
+
+ l = new QLabel(__tr2qs_ctx("Username:","options"),gbox);
+ m_pUserEditor = new QLineEdit(gbox);
+ m_pUserEditor->setText(n->userName());
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pUserEditor,__tr2qs_ctx("<center>This is the <b>username</b> that KVIrc will use to login to servers on this network.\n" \
+ "If this field is left empty (most common case), KVIrc will use the default username " \
+ "specified in the \"Identity\" options tab.</center>","options"));
+#endif
+
+ l = new QLabel(__tr2qs_ctx("Nickname:","options"),gbox);
+ m_pNickEditor = new QLineEdit(gbox);
+ QValidator * v = new QRegExpValidator(QRegExp("[^-0-9 ][^ ]*","options"),gbox);
+ m_pNickEditor->setValidator(v);
+ m_pNickEditor->setText(n->nickName());
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pNickEditor,__tr2qs_ctx("<center>You can specify a \"special\" <b>nickname</b> that will be used to log in to the servers on this network.<br>" \
+ "If this field is left empty (most common case), the default nickname (specified in the \"Identity\" settings) will be used.</center>","options"));
+#endif
+
+ l = new QLabel(__tr2qs_ctx("Real name:","options"),gbox);
+ m_pRealEditor = new QLineEdit(gbox);
+ m_pRealEditor->setText(n->realName());
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pRealEditor,__tr2qs_ctx("<center>You can specify a \"special\" <b>real name</b> that will be used to login with the servers on this network.<br>" \
+ "If you leave this field empty (most common case), the default \"real name\" (specified in the \"Identity\" settings) will be used.</center>","options"));
+#endif
+
+
+ l = new QLabel(__tr2qs_ctx("Encoding:","options"),tab);
+ gl->addWidget(l,1,0);
+ m_pEncodingEditor = new QComboBox(false,tab);
+ m_pEncodingEditor->setDuplicatesEnabled(false);
+ gl->addWidget(m_pEncodingEditor,1,1);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pEncodingEditor,__tr2qs_ctx("<center>This box allows you to choose the preferred encoding for the servers in this network. " \
+ "If you choose \"Use System Encoding\" then the encoding will be set to the systemwide " \
+ "value that you choose in the \"Encoding\" page of the options dialog.</center>","options"));
+#endif
+
+ int i = 0;
+ int current = 0;
+ KviLocale::EncodingDescription * d = KviLocale::encodingDescription(i);
+ QString tmp;
+ m_pEncodingEditor->insertItem(__tr2qs_ctx("Use System Encoding","options"));
+ while(d->szName)
+ {
+ KviQString::sprintf(tmp,"%s (%s)",d->szName,d->szDescription);
+ m_pEncodingEditor->insertItem(tmp);
+ if(KviQString::equalCI(d->szName,n->encoding()))current = i + 1;
+ i = i + 1;
+ d = KviLocale::encodingDescription(i);
+ }
+
+ m_pEncodingEditor->setCurrentItem(current);
+
+ m_pAutoConnectCheck = new KviStyledCheckBox(__tr2qs_ctx("Connect to this network at startup","options"),tab);
+ m_pAutoConnectCheck->setChecked(n->autoConnect());
+ gl->addMultiCellWidget(m_pAutoConnectCheck,2,2,0,1);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pAutoConnectCheck,__tr2qs_ctx("<center>This option will cause KVIrc to automatically connect to this network at startup</center>","options"));
+#endif
+
+
+ l = new QLabel("",tab);
+ gl->addWidget(l,3,0);
+
+ gl->setRowStretch(3,1);
+ gl->setColStretch(1,1);
+
+ tw->addTab(tab,__tr2qs_ctx("General","options"));
+
+ // after login join channels
+ tab = new QWidget(tw);
+
+ gl = new QGridLayout(tab,1,1,10,4);
+
+ if(n->autoJoinChannelList())
+ m_lstChannels = *(n->autoJoinChannelList());
+ m_pChannelListSelector = new KviCahnnelListSelector(tab,
+ __tr2qs_ctx("Channels to join automatically upon connect:","options"),&m_lstChannels,true);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pChannelListSelector,__tr2qs_ctx("<center>Here you can set a list of channels to be joined automatically " \
+ "after a connection to a server in this network has been established. To add a channel, type its name in the " \
+ "text input below and click \"<b>Add</b>\".</center>","options"));
+#endif
+ gl->addWidget(m_pChannelListSelector,0,0);
+
+ tw->addTab(tab,__tr2qs_ctx("Join Channels","options"));
+
+ // after connect execute
+ tab = new QWidget(tw);
+ gl = new QGridLayout(tab,1,1,10,4);
+
+ m_pOnConnectEditor = KviScriptEditor::createInstance(tab);
+ gl->addWidget(m_pOnConnectEditor,0,0);
+ m_pOnConnectEditor->setText(n->onConnectCommand());
+ m_pOnConnectEditor->setMinimumHeight(150);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pOnConnectEditor,__tr2qs_ctx("<center>The following commands will be executed after a connection to a server in this network has been established.<br>" \
+ "<b>Important:</b> Enter commands <b>without</b> a preceding slash (e.g. <tt>quote pass secret</tt> instead of <tt>/quote pass secret</tt>).<br>"\
+ "KVIrc will first send the USER command, then eventually PASS and NICK and then execute this " \
+ "command sequence.</center>","options"));
+#endif
+
+ tw->addTab(tab,__tr2qs_ctx("On Connect","options"));
+
+
+ // after login execute
+ tab = new QWidget(tw);
+ gl = new QGridLayout(tab,1,1,10,4);
+
+ m_pOnLoginEditor = KviScriptEditor::createInstance(tab);
+ gl->addWidget(m_pOnLoginEditor,0,0);
+ m_pOnLoginEditor->setText(n->onLoginCommand());
+
+ m_pOnLoginEditor->setMinimumHeight(150);
+
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pOnLoginEditor,
+ __tr2qs_ctx("<center>The following commands will be executed after a successful login to a server in this network.<br>" \
+ "<b>Important:</b> Enter commands <b>without</b> a preceding slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote privatelog</tt>).<br>"
+ "This is useful for automatically opening queries, setting variables, etc.</center>","options"));
+#endif
+
+ tw->addTab(tab,__tr2qs_ctx("On Login","options"));
+
+
+ // nick serv rules
+
+ tab = new QWidget(tw);
+ gl = new QGridLayout(tab,3,3,10,5);
+
+ KviNickServRuleSet * rs = n->nickServRuleSet();
+ bool bNickServEnabled = rs ? (rs->isEnabled() && !rs->isEmpty()) : false;
+
+ m_pNickServCheck = new KviStyledCheckBox(__tr2qs_ctx("Enable NickServ Identification","options"),tab);
+ gl->addMultiCellWidget(m_pNickServCheck,0,0,0,2);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pNickServCheck,
+ __tr2qs_ctx("This check enables the automatic identification with NickServ","options"));
+#endif
+ m_pNickServCheck->setChecked(bNickServEnabled);
+
+ m_pNickServListView = new KviTalListView(tab);
+ m_pNickServListView->setSelectionMode(KviTalListView::Single);
+ m_pNickServListView->setAllColumnsShowFocus(true);
+ m_pNickServListView->addColumn(__tr2qs_ctx("Nickname","options"));
+ m_pNickServListView->addColumn(__tr2qs_ctx("NickServ Mask","options"));
+ m_pNickServListView->addColumn(__tr2qs_ctx("NickServ Request Mask","options"));
+ m_pNickServListView->addColumn(__tr2qs_ctx("Identify Command","options"));
+ connect(m_pNickServListView,SIGNAL(selectionChanged()),this,SLOT(enableDisableNickServControls()));
+
+ gl->addMultiCellWidget(m_pNickServListView,1,1,0,2);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pNickServListView,
+ __tr2qs_ctx("<center>This is a list of NickServ identification rules. " \
+ "KVIrc will use them to model its automatic interaction with NickServ on this network.<br>" \
+ "Please be aware that this feature can cause your NickServ passwords to be stolen " \
+ "if used improperly. Make sure that you fully understand the NickServ authentication protocol.<br>" \
+ "In other words, be sure to know what you're doing.<br>" \
+ "Also note that the password that you provide is stored as <b>PLAIN TEXT</b>.</center>","options"));
+#endif
+
+ m_pAddRuleButton = new QPushButton(__tr2qs_ctx("Add Rule","options"),tab);
+ connect(m_pAddRuleButton,SIGNAL(clicked()),this,SLOT(addNickServRule()));
+ gl->addWidget(m_pAddRuleButton,2,0);
+
+
+ m_pEditRuleButton = new QPushButton(__tr2qs_ctx("Edit Rule","options"),tab);
+ connect(m_pEditRuleButton,SIGNAL(clicked()),this,SLOT(editNickServRule()));
+ gl->addWidget(m_pEditRuleButton,2,1);
+
+ m_pDelRuleButton = new QPushButton(__tr2qs_ctx("Delete Rule","options"),tab);
+ connect(m_pDelRuleButton,SIGNAL(clicked()),this,SLOT(delNickServRule()));
+ gl->addWidget(m_pDelRuleButton,2,2);
+
+ connect(m_pNickServCheck,SIGNAL(toggled(bool)),this,SLOT(enableDisableNickServControls()));
+
+ if(rs && rs->rules())
+ {
+ KviPointerList<KviNickServRule> * ll = rs->rules();
+ for(KviNickServRule * rule = ll->first();rule;rule = ll->next())
+ {
+ (void)new KviTalListViewItem(m_pNickServListView,rule->registeredNick(),rule->nickServMask(),rule->messageRegexp(),rule->identifyCommand());
+ }
+ }
+
+ enableDisableNickServControls();
+
+ gl->setRowStretch(1,1);
+
+ tw->addTab(tab,__tr2qs_ctx("NickServ","options"));
+
+ QPushButton * b = new QPushButton(__tr2qs_ctx("&OK","options"),this);
+ b->setMinimumWidth(80);
+ g->addWidget(b,3,2);
+ b->setDefault(true);
+ connect(b,SIGNAL(clicked()),this,SLOT(accept()));
+
+ b = new QPushButton(__tr2qs_ctx("Cancel","options"),this);
+ g->addWidget(b,3,3);
+ b->setMinimumWidth(80);
+ connect(b,SIGNAL(clicked()),this,SLOT(reject()));
+
+
+ g->setRowStretch(2,1);
+ g->setColStretch(1,1);
+
+ tw->setMinimumWidth(375);
+}
+
+
+
+KviNetworkDetailsWidget::~KviNetworkDetailsWidget()
+{
+ if(m_pOnConnectEditor) KviScriptEditor::destroyInstance(m_pOnConnectEditor);
+ if(m_pOnLoginEditor) KviScriptEditor::destroyInstance(m_pOnLoginEditor);
+}
+
+void KviNetworkDetailsWidget::editNickServRule()
+{
+ KviTalListViewItem * it = m_pNickServListView->currentItem();
+ if(!it)return;
+ KviNickServRule r(it->text(0),it->text(1),it->text(2),it->text(3));
+ KviNickServRuleEditor ed(this,false);
+ if(ed.editRule(&r))
+ {
+ it->setText(0,r.registeredNick());
+ it->setText(1,r.nickServMask());
+ it->setText(2,r.messageRegexp());
+ it->setText(3,r.identifyCommand());
+ }
+}
+
+void KviNetworkDetailsWidget::addNickServRule()
+{
+ KviNickServRule r;
+ KviNickServRuleEditor ed(this,false);
+ if(ed.editRule(&r))
+ (void)new KviTalListViewItem(m_pNickServListView,r.registeredNick(),r.nickServMask(),r.messageRegexp(),r.identifyCommand());
+}
+
+void KviNetworkDetailsWidget::delNickServRule()
+{
+ KviTalListViewItem * it = m_pNickServListView->currentItem();
+ if(!it)return;
+ delete it;
+ enableDisableNickServControls();
+}
+
+void KviNetworkDetailsWidget::enableDisableNickServControls()
+{
+ bool bEnabled = m_pNickServCheck->isChecked();
+ m_pNickServListView->setEnabled(bEnabled);
+ m_pAddRuleButton->setEnabled(bEnabled);
+ bEnabled = bEnabled && (m_pNickServListView->childCount() > 0) && m_pNickServListView->currentItem();
+ m_pDelRuleButton->setEnabled(bEnabled);
+ m_pEditRuleButton->setEnabled(bEnabled);
+}
+
+void KviNetworkDetailsWidget::fillData(KviIrcNetwork * n)
+{
+ n->setUserName(m_pUserEditor->text());
+ n->setNickName(m_pNickEditor->text());
+ n->setRealName(m_pRealEditor->text());
+ n->setDescription(m_pDescEditor->text());
+ if(m_pAutoConnectCheck)
+ n->setAutoConnect(m_pAutoConnectCheck->isChecked());
+ if(m_pEncodingEditor)
+ if(m_pEncodingEditor->currentItem() <= 0)n->setEncoding(QString::null);
+ else {
+ KviLocale::EncodingDescription * d = KviLocale::encodingDescription(m_pEncodingEditor->currentItem() - 1);
+ n->setEncoding(d->szName);
+ }
+ if(m_pChannelListSelector)
+ m_pChannelListSelector->commit();
+ if(m_lstChannels.isEmpty())n->setAutoJoinChannelList(0);
+ else n->setAutoJoinChannelList(new QStringList(m_lstChannels));
+ if(m_pNickServListView)
+ {
+ if(m_pNickServListView->childCount() > 0)
+ {
+ KviNickServRuleSet * rs = KviNickServRuleSet::createInstance();
+ rs->setEnabled(m_pNickServCheck->isChecked());
+ KviTalListViewItem * it = m_pNickServListView->firstChild();
+ while(it)
+ {
+ rs->addRule(KviNickServRule::createInstance(it->text(0),it->text(1),it->text(2),it->text(3)));
+ it = it->nextSibling();
+ }
+ n->setNickServRuleSet(rs);
+ } else n->setNickServRuleSet(0);
+ }
+ if(m_pOnConnectEditor)
+ {
+ QString tmp;
+ m_pOnConnectEditor->getText(tmp);
+ n->setOnConnectCommand(tmp);
+ }
+ if(m_pOnLoginEditor)
+ {
+ QString tmp;
+ m_pOnLoginEditor->getText(tmp);
+ n->setOnLoginCommand(tmp);
+ }
+}
+
+
+
+
+
+
+
+KviServerDetailsWidget::KviServerDetailsWidget(QWidget * par,KviIrcServer * s)
+ : QDialog(par,"server_details",true)
+{
+ m_szHostname = s->hostName();
+ QGridLayout * g = new QGridLayout(this,4,4,10,4);
+
+ setCaption(__tr2qs_ctx("Server Details","options"));
+ setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SERVER)));
+
+ m_pHeaderLabel = new QLabel("",this); // the text will be set later
+ m_pHeaderLabel->setFrameStyle(QFrame::Raised | QFrame::StyledPanel);
+ m_pHeaderLabel->setAlignment(Qt::AlignCenter);
+ m_pHeaderLabel->setMargin(10);
+ g->addMultiCellWidget(m_pHeaderLabel,0,0,0,3);
+ m_pHeaderLabel->setMinimumWidth(200);
+
+ QLabel * l = new QLabel(__tr2qs_ctx("Description:","options"),this);
+ g->addWidget(l,1,0);
+ m_pDescEditor = new QLineEdit(this);
+ g->addMultiCellWidget(m_pDescEditor,1,1,1,3);
+ m_pDescEditor->setText(s->description());
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pDescEditor,__tr2qs_ctx("<center>This is a brief description of this server. " \
+ "This field has no restrictions but many server lists use it to describe the server's physical location</center>","options"));
+#endif
+
+ // Identity tab
+
+ QTabWidget * tw = new QTabWidget(this);
+ g->addMultiCellWidget(tw,2,2,0,3);
+
+ QWidget * tab = new QWidget(tw);
+ QGridLayout * gl = new QGridLayout(tab,3,1,10,4);
+
+ KviTalGroupBox *gbox = new KviTalGroupBox(2,Qt::Horizontal,__tr2qs_ctx("Properties","options"),tab);
+ gl->addWidget(gbox,0,0);
+
+ l = new QLabel(__tr2qs_ctx("Username:","options"),gbox);
+ m_pUserEditor = new QLineEdit(gbox);
+ m_pUserEditor->setText(s->userName());
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pUserEditor,__tr2qs_ctx("<center>This is the <b>username</b> that KVIrc will use to login to this server.\n" \
+ "If this field is left empty (most common case), KVIrc will first look if an username is specified " \
+ "for the network that this server belongs to, and if that is empty then KVIrc will use the default username " \
+ "specified in the \"Identity\" options tab.</center>","options"));
+#endif
+
+ l = new QLabel(__tr2qs_ctx("Password:","options"),gbox);
+ m_pPassEditor = new QLineEdit(gbox);
+ m_pPassEditor->setEchoMode(QLineEdit::Password);
+ m_pPassEditor->setText(s->password());
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pPassEditor,__tr2qs_ctx("<center>If this server requires a password, put it in this field, otherwise leave it empty.</center>","options"));
+#endif
+
+ l = new QLabel(__tr2qs_ctx("Nickname:","options"),gbox);
+ m_pNickEditor = new QLineEdit(gbox);
+ QValidator * v = new QRegExpValidator(QRegExp("[^-0-9 ][^ ]*"),gbox);
+ m_pNickEditor->setValidator(v);
+ m_pNickEditor->setText(s->nickName());
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pNickEditor,__tr2qs_ctx("<center>You can specify a \"special\" <b>nickname</b> that will be used to log in to this server.<br>" \
+ "If this field is left empty (most common case), KVIrc will first look if a nickname is specified " \
+ "for the network that this server belongs to, and if that is empty then the default nickname (specified in the \"Identity\" settings) will be used.</center>","options"));
+#endif
+
+ l = new QLabel(__tr2qs_ctx("Real name:","options"),gbox);
+ m_pRealEditor = new QLineEdit(gbox);
+ m_pRealEditor->setText(s->realName());
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pRealEditor,__tr2qs_ctx("<center>You can specify a \"special\" <b>real name</b> that will be used to login with this server.<br>" \
+ "If you leave this field empty (most common case), KVIrc will first look if a real name is specified " \
+ "for the network that this server belongs to, and if that is empty the default \"real name\" (specified in the \"Identity\" settings) will be used.</center>","options"));
+#endif
+ gbox = new KviTalGroupBox(1,Qt::Horizontal,__tr2qs_ctx("User Mode","options"),tab);
+ gl->addWidget(gbox,1,0);
+
+ m_pUseDefaultInitUMode = new KviStyledCheckBox(__tr2qs_ctx("Use default user mode","options"),gbox);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pUseDefaultInitUMode,__tr2qs_ctx("<center>If this is enabled, the global initial <b>user mode</b> (configured from"\
+ " the identity dialog) will be used. If disabled, you can configure an initial user mode for this server","options"));
+#endif
+ bool bHasUmode = !(s->initUMode().isEmpty());
+ KviStr szDefUMode = KVI_OPTION_STRING(KviOption_stringDefaultUserMode);
+ m_pUseDefaultInitUMode->setChecked(!bHasUmode);
+ connect(m_pUseDefaultInitUMode,SIGNAL(toggled(bool)),this,SLOT(useDefaultInitUModeToggled(bool)));
+
+ m_pIMode = new KviStyledCheckBox(__tr2qs_ctx("Invisible (+i)","options"),gbox);
+ m_pIMode->setEnabled(bHasUmode);
+ m_pIMode->setChecked(bHasUmode ? s->initUMode().contains('i',false) : szDefUMode.contains('i',false));
+
+ m_pSMode = new KviStyledCheckBox(__tr2qs_ctx("Server notices (+s)","options"),gbox);
+ m_pSMode->setEnabled(bHasUmode);
+ m_pSMode->setChecked(bHasUmode ? s->initUMode().contains('s',false) : szDefUMode.contains('s',false));
+
+ m_pWMode = new KviStyledCheckBox(__tr2qs_ctx("Wallops (+w)","options"),gbox);
+ m_pWMode->setEnabled(bHasUmode);
+ m_pWMode->setChecked(bHasUmode ? s->initUMode().contains('w',false) : szDefUMode.contains('w',false));
+
+ l = new QLabel("",tab);
+ gl->addWidget(l,2,0);
+
+ gl->setRowStretch(2,1);
+ //gl->setColStretch(1,1);
+
+ tw->addTab(tab,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_WHO)),__tr2qs_ctx("Identity","options"));
+
+ // Connection tab
+
+ tab = new QWidget(tw);
+ gl = new QGridLayout(tab,11,1,10,4);
+
+ l = new QLabel(__tr2qs_ctx("Port:","options"),tab);
+ gl->addWidget(l,0,0);
+
+
+ m_pPortEditor = new QLineEdit(tab);
+ gl->addWidget(m_pPortEditor,0,1);
+ QString tmpz;
+ tmpz.setNum(s->port());
+ m_pPortEditor->setText(tmpz);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pPortEditor,__tr2qs_ctx("<center>This is the default <b>port</b> that this server will be contacted on.<br>Usually <b>6667</b> is OK.</center>","options"));
+#endif
+ connect(m_pPortEditor,SIGNAL(textChanged(const QString &)),this,SLOT(portEditorTextChanged(const QString &)));
+
+
+
+ l = new QLabel(__tr2qs_ctx("IP address:","options"),tab);
+ gl->addWidget(l,1,0);
+ m_pIpEditor = new KviIpEditor(tab,KviIpEditor::IpV4);
+ gl->addWidget(m_pIpEditor,1,1);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pIpEditor,__tr2qs_ctx("<center>This is the <b>IP address</b> of this server, it is here for caching purposes.<br>" \
+ "If you leave this field empty, KVIrc will fill it in the first time it connects to the server. " \
+ "If you enable the \"cache IP address\" option below, KVIrc will use it as a \"cached result\" " \
+ "and avoid looking it up again.</center>","options"));
+#endif
+#ifdef COMPILE_IPV6_SUPPORT
+ m_pIpEditor->setAddressType(s->isIpV6() ? KviIpEditor::IpV6 : KviIpEditor::IpV4);
+#else
+ m_pIpEditor->setAddressType(KviIpEditor::IpV4);
+#endif
+
+ if(!m_pIpEditor->setAddress(s->m_szIp))
+ {
+#ifdef COMPILE_IPV6_SUPPORT
+ m_pIpEditor->setAddress(s->isIpV6() ? "0:0:0:0:0:0:0:0" : "0.0.0.0");
+#else
+ m_pIpEditor->setAddress("0.0.0.0");
+#endif
+ }
+
+ m_pCacheIpCheck = new KviStyledCheckBox(__tr2qs_ctx("Cache IP address","options"),tab);
+ gl->addMultiCellWidget(m_pCacheIpCheck,2,2,0,1);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pCacheIpCheck,__tr2qs_ctx("<center>This check will enable <b>IP address caching</b> for this server:<br>" \
+ "DNS lookups can be time-consuming and might be blocking on some platforms; " \
+ "this option will cause KVIrc to look up the server hostname only once.<br><br> " \
+ "Advanced: you can also use this option to force a certain server name to resolve " \
+ "to a fixed ip address when either the dns for that server is temporairly " \
+ "unreachable or you want to avoid the round-robin lookups.</center>","options"));
+#endif
+ m_pCacheIpCheck->setChecked(s->cacheIp());
+
+
+ m_pUseIPV6Check = new KviStyledCheckBox(__tr2qs_ctx("Use IPv6 protocol","options"),tab);
+ gl->addMultiCellWidget(m_pUseIPV6Check,3,3,0,1);
+#ifdef COMPILE_IPV6_SUPPORT
+ m_pUseIPV6Check->setChecked(s->isIpV6());
+#else
+ m_pUseIPV6Check->setEnabled(false);
+#endif
+ connect(m_pUseIPV6Check,SIGNAL(toggled(bool)),this,SLOT(useIPV6CheckToggled(bool)));
+
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pUseIPV6Check,__tr2qs_ctx("<center>This check identifies IPv6 servers.<br>If enabled, KVIrc will attempt to use the IPv6 protocol " \
+ "(thus your OS <b>must</b> have a working IPv6 stack and you <b>must</b> have an IPv6 connection).</center>","options"));
+#endif
+
+
+ m_pUseSSLCheck = new KviStyledCheckBox(__tr2qs_ctx("Use SSL protocol","options"),tab);
+ gl->addMultiCellWidget(m_pUseSSLCheck,4,4,0,1);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pUseSSLCheck,__tr2qs_ctx("<center>This check will cause the connection to use the <b>Secure Socket Layer</b> " \
+ "encryption support. Obviously, this server must have support for this, too. :)</center>","options"));
+#endif
+#ifndef COMPILE_SSL_SUPPORT
+ m_pUseSSLCheck->setEnabled(false);
+#endif
+ m_pUseSSLCheck->setChecked(s->useSSL());
+
+
+ m_pUseAutoConnect = new KviStyledCheckBox(__tr2qs_ctx("Connect to this server at startup","options"),tab);
+ m_pUseAutoConnect->setChecked(s->autoConnect());
+
+ gl->addMultiCellWidget(m_pUseAutoConnect,5,5,0,1);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pUseAutoConnect,__tr2qs_ctx("<center>This option will cause KVIrc to connect to the IRC server when it is started.</center>","options"));
+#endif
+
+ l = new QLabel(__tr2qs_ctx("Encoding:","options"),tab);
+ gl->addWidget(l,6,0);
+ m_pEncodingEditor = new QComboBox(false,tab);
+ m_pEncodingEditor->setDuplicatesEnabled(false);
+ gl->addWidget(m_pEncodingEditor,6,1);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pEncodingEditor,__tr2qs_ctx("<center>This box allows you to choose the preferred encoding for this sever. " \
+ "If you choose \"Use Network Encoding\" then the encoding will be inherited from the " \
+ "network that this server belongs to.</center>","options"));
+#endif
+
+ int i = 0;
+ int current = 0;
+ KviLocale::EncodingDescription * d = KviLocale::encodingDescription(i);
+ QString tmp;
+ m_pEncodingEditor->insertItem(__tr2qs_ctx("Use Network Encoding","options"));
+ while(d->szName)
+ {
+ KviQString::sprintf(tmp,"%s (%s)",d->szName,d->szDescription);
+ m_pEncodingEditor->insertItem(tmp);
+ if(KviQString::equalCI(d->szName,s->encoding()))current = i + 1;
+ i = i + 1;
+ d = KviLocale::encodingDescription(i);
+ }
+
+ m_pEncodingEditor->setCurrentItem(current);
+
+
+ l = new QLabel(__tr2qs_ctx("Link filter:","options"),tab);
+ gl->addWidget(l,7,0);
+ m_pLinkFilterEditor = new QComboBox(true,tab);
+ m_pLinkFilterEditor->setDuplicatesEnabled(false);
+ gl->addWidget(m_pLinkFilterEditor,7,1);
+
+ m_pLinkFilterEditor->insertItem("");
+
+ g_pModuleManager->loadModulesByCaps("linkfilter");
+ KviModuleExtensionDescriptorList * mexl = KviModuleExtensionManager::instance()->getExtensionList("linkfilter");
+
+
+
+ if(mexl)
+ {
+ for(KviModuleExtensionDescriptor * d = mexl->first();d;d = mexl->next())
+ m_pLinkFilterEditor->insertItem(d->name().ptr());
+ } else {
+ if(!s->linkFilter().isEmpty())
+ m_pLinkFilterEditor->insertItem(s->linkFilter());
+ }
+
+ if(!s->linkFilter().isEmpty())
+ m_pLinkFilterEditor->setCurrentText(s->linkFilter());
+ else
+ m_pLinkFilterEditor->setCurrentText("");
+
+
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pLinkFilterEditor,__tr2qs_ctx("<center>This field specifies the name of a module that exports a link filter for this type of server.<br>" \
+ "For plain IRC connections, you don't need any link filters; this is used for incompatible protocols.</center>","options"));
+#endif
+
+ l = new QLabel(__tr2qs_ctx("Id:","options"),tab);
+ gl->addWidget(l,8,0);
+ m_pIdEditor = new QLineEdit(tab);
+ if(s->id().isEmpty())s->generateUniqueId();
+ m_pIdEditor->setText(s->id());
+ gl->addWidget(m_pIdEditor,8,1);
+
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pIdEditor,__tr2qs_ctx("<center>This field allows you to specify a really unique id for this server. " \
+ "You will then be able to use /server -x &lt;this_id&gt; to make the connection. This is especially " \
+ "useful when you have multiple server entries with the same hostname and port in different networks (bouncers?)</center>","options"));
+#endif
+
+
+ l = new QLabel(__tr2qs_ctx("Proxy server:","options"),tab);
+ gl->addWidget(l,9,0);
+ m_pProxyEditor = new QComboBox(tab);
+ gl->addWidget(m_pProxyEditor,9,1);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pProxyEditor,__tr2qs_ctx("<center>This is the <b>proxy</b> that KVIrc will use to connect to thos server.\n" \
+ "If this field is set in \"Default\" KVirc will use global proxy settings, if it is set in \"Direct connection\" " \
+ "KVirc will connect to this server without proxy. You can define new proxy server in global options' \"Proxy servers\" menu.</center>","options"));
+#endif
+
+ m_pProxyEditor->insertItem(__tr2qs_ctx("Default","options"));
+ m_pProxyEditor->insertItem(__tr2qs_ctx("Direct connection","options"));
+
+ KviPointerList<KviProxy> * proxylist = g_pProxyDataBase->proxyList();
+ for(KviProxy * p = proxylist->first();p;p = proxylist->next())
+ {
+ m_pProxyEditor->insertItem(QString("%1:%2").arg(p->hostname()).arg(p->port()));
+ }
+ if(m_pProxyEditor->count() > (s->proxy()+2))
+ m_pProxyEditor->setCurrentItem(s->proxy()+2);
+
+
+ l = new QLabel("",tab);
+ gl->addMultiCellWidget(l,10,10,0,1);
+
+ gl->setRowStretch(10,1);
+
+ tw->addTab(tab,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SOCKETWARNING)),__tr2qs_ctx("Connection","options"));
+
+ // after login join channels
+ tab = new QWidget(tw);
+
+ gl = new QGridLayout(tab,1,1,10,4);
+
+ if(s->autoJoinChannelList())
+ m_lstChannels = *(s->autoJoinChannelList());
+ m_pChannelListSelector = new KviCahnnelListSelector(tab,
+ __tr2qs_ctx("Channels to join automatically upon connect:","options"),&m_lstChannels,true);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pChannelListSelector,__tr2qs_ctx("<center>Here you can set a list of channels to be joined automatically " \
+ "after a connection to this server has been established. To add a channel, type its name in the " \
+ "text input below and click \"<b>Add</b>\".</center>","options"));
+#endif
+ gl->addWidget(m_pChannelListSelector,0,0);
+
+ tw->addTab(tab,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CHANNEL)),__tr2qs_ctx("Join Channels","options"));
+
+ // after connect execute
+ tab = new QWidget(tw);
+ gl = new QGridLayout(tab,1,1,10,4);
+
+
+ m_pOnConnectEditor = KviScriptEditor::createInstance(tab);
+ gl->addWidget(m_pOnConnectEditor,0,0);
+ m_pOnConnectEditor->setText(s->onConnectCommand());
+ m_pOnConnectEditor->setMinimumHeight(150);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pOnConnectEditor,__tr2qs_ctx("<center>The following commands will be executed after a connection has been established.<br>" \
+ "<b>Important:</b> Enter commands <b>without</b> a preceding slash (e.g. <tt>quote pass secret</tt> instead of <tt>/quote pass secret</tt>).<br>"\
+ "KVIrc will first send the USER command, then eventually PASS and NICK and then execute this " \
+ "command sequence.<br>This is particularly useful for IRC bouncers that require login commands.</center>","options"));
+#endif
+
+ tw->addTab(tab,__tr2qs_ctx("On Connect","options"));
+ // after login execute
+
+ tab = new QWidget(tw);
+ gl = new QGridLayout(tab,1,1,10,4);
+
+ m_pOnLoginEditor = KviScriptEditor::createInstance(tab);
+ gl->addWidget(m_pOnLoginEditor,0,0);
+ m_pOnLoginEditor->setText(s->onLoginCommand());
+
+ m_pOnLoginEditor->setMinimumHeight(150);
+
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pOnLoginEditor,
+ __tr2qs_ctx("<center>The following commands will be executed after a successful login to this server.<br>" \
+ "<b>Important:</b> Enter commands <b>without</b> a preceding slash (e.g. <tt>quote privatelog</tt> instead of <tt>/quote privatelog</tt>).<br>"
+ "This is useful for automatically opening queries, setting variables, etc.</center>","options"));
+#endif
+
+ tw->addTab(tab,__tr2qs_ctx("On Login","options"));
+
+ QPushButton * b = new QPushButton(__tr2qs_ctx("OK","options"),this);
+ b->setMinimumWidth(80);
+ g->addWidget(b,3,2);
+ b->setDefault(true);
+ connect(b,SIGNAL(clicked()),this,SLOT(accept()));
+
+ b = new QPushButton(__tr2qs_ctx("Cancel","options"),this);
+ g->addWidget(b,3,3);
+ b->setMinimumWidth(80);
+ connect(b,SIGNAL(clicked()),this,SLOT(reject()));
+
+ g->setRowStretch(2,1);
+ g->setColStretch(1,1);
+
+ tw->setMinimumWidth(390);
+
+ setHeaderLabelText();
+}
+
+KviServerDetailsWidget::~KviServerDetailsWidget()
+{
+ if(m_pOnConnectEditor) KviScriptEditor::destroyInstance(m_pOnConnectEditor);
+ if(m_pOnLoginEditor) KviScriptEditor::destroyInstance(m_pOnLoginEditor);
+}
+
+void KviServerDetailsWidget::useIPV6CheckToggled(bool)
+{
+#ifdef COMPILE_IPV6_SUPPORT
+ m_pIpEditor->setAddressType(m_pUseIPV6Check->isChecked() ? KviIpEditor::IpV6 : KviIpEditor::IpV4);
+#else
+ m_pIpEditor->setAddressType(KviIpEditor::IpV4);
+#endif
+ setHeaderLabelText();
+}
+
+void KviServerDetailsWidget::portEditorTextChanged(const QString &)
+{
+ setHeaderLabelText();
+}
+
+void KviServerDetailsWidget::setHeaderLabelText()
+{
+ QString szTmp = "<font size=\"+1\"><b>irc";
+ if(m_pUseIPV6Check->isChecked())szTmp += "6";
+ szTmp += "://";
+ szTmp += m_szHostname;
+ szTmp += ":";
+
+ bool bOk;
+
+ QString num = m_pPortEditor->text();
+ unsigned int uPort = num.toUInt(&bOk);
+ if(!bOk)uPort = 6667;
+ num.setNum(uPort);
+ szTmp += num;
+ szTmp += "</b></font>";
+
+ m_pHeaderLabel->setText(szTmp);
+}
+
+void KviServerDetailsWidget::fillData(KviIrcServer * s)
+{
+ s->setUserName(m_pUserEditor->text());
+ s->setPassword(m_pPassEditor->text());
+ s->setNickName(m_pNickEditor->text());
+ s->setRealName(m_pRealEditor->text());
+ if(m_pDescEditor)
+ s->setDescription(m_pDescEditor->text());
+ if(m_pLinkFilterEditor)
+ s->setLinkFilter(m_pLinkFilterEditor->lineEdit()->text());
+ if(m_pEncodingEditor)
+ if(m_pEncodingEditor->currentItem() <= 0)s->m_szEncoding = "";
+ else {
+ KviLocale::EncodingDescription * d = KviLocale::encodingDescription(m_pEncodingEditor->currentItem() - 1);
+ s->m_szEncoding = d->szName;
+ }
+ s->setIpAddress("");
+ if(m_pCacheIpCheck)
+ s->setCacheIp(m_pCacheIpCheck->isChecked());
+ if(m_pUseSSLCheck)
+ s->setUseSSL(m_pUseSSLCheck->isChecked());
+ if(m_pIdEditor)
+ s->setId(m_pIdEditor->text());
+ if(s->id().isEmpty())s->generateUniqueId();
+
+ if(m_pUseDefaultInitUMode)
+ {
+ KviStr szUMode;
+ if(!m_pUseDefaultInitUMode->isChecked())
+ {
+ if(m_pIMode->isChecked())szUMode.append('i');
+ if(m_pWMode->isChecked())szUMode.append('w');
+ if(m_pSMode->isChecked())szUMode.append('s');
+ }
+ s->setInitUMode(szUMode.ptr());
+ }
+
+ QString tmp = m_pPortEditor->text();
+ bool bOk;
+ kvi_u32_t uPort = tmp.toUInt(&bOk);
+ if(!bOk)uPort = 6667;
+ s->m_uPort = uPort;
+#ifdef COMPILE_IPV6_SUPPORT
+ s->setIpV6(m_pUseIPV6Check->isChecked());
+#else
+ s->setIpV6(false);
+#endif
+
+ if(m_pIpEditor)
+ {
+ KviStr tmpAddr = m_pIpEditor->address();
+
+ if(!m_pIpEditor->hasEmptyFields())
+ {
+#ifdef COMPILE_IPV6_SUPPORT
+ if(s->isIpV6())
+ {
+ if((!kvi_strEqualCI(tmpAddr.ptr(),"0:0:0:0:0:0:0:0")) && kvi_isValidStringIp_V6(tmpAddr.ptr()))
+ {
+ s->setIpAddress(tmpAddr.ptr());
+ } else {
+ s->setCacheIp(false);
+ s->setIpAddress("");
+ }
+ } else {
+#endif
+ if((!kvi_strEqualCI(tmpAddr.ptr(),"0.0.0.0")) && kvi_isValidStringIp(tmpAddr.ptr()))
+ {
+ s->setIpAddress(tmpAddr.ptr());
+ } else {
+ s->setCacheIp(false);
+ s->setIpAddress("");
+ }
+#ifdef COMPILE_IPV6_SUPPORT
+ }
+#endif
+ } else {
+ s->setCacheIp(false);
+ s->setIpAddress("");
+ }
+ }
+ if(m_pOnConnectEditor)
+ {
+ QString tmp;
+ m_pOnConnectEditor->getText(tmp);
+ s->setOnConnectCommand(tmp);
+ }
+ if(m_pOnLoginEditor)
+ {
+ QString tmp;
+ m_pOnLoginEditor->getText(tmp);
+ s->setOnLoginCommand(tmp);
+ }
+ if(m_pChannelListSelector)
+ m_pChannelListSelector->commit();
+ if(m_lstChannels.isEmpty())s->setAutoJoinChannelList(0);
+ else s->setAutoJoinChannelList(new QStringList(m_lstChannels));
+ if(m_pUseAutoConnect)
+ s->setAutoConnect(m_pUseAutoConnect->isChecked());
+ if(m_pProxyEditor)
+ s->setProxy(m_pProxyEditor->currentItem()-2);
+}
+
+void KviServerDetailsWidget::useDefaultInitUModeToggled(bool b)
+{
+ m_pIMode->setEnabled(!b);
+ m_pWMode->setEnabled(!b);
+ m_pSMode->setEnabled(!b);
+}
+
+// kvi_app.cpp
+extern KVIRC_API KviIrcServerDataBase * g_pIrcServerDataBase;
+
+KviServerOptionsListViewItem::KviServerOptionsListViewItem(KviTalListView *parent,const QPixmap &pm,const KviIrcNetwork *n)
+ : KviTalListViewItem(parent)
+{
+ setPixmap(0,pm);
+ m_pServerData = 0;
+ m_pNetworkData = new KviIrcNetwork(*n);
+ setText(0,n->name());
+ setText(1,n->description());
+}
+
+KviServerOptionsListViewItem::KviServerOptionsListViewItem(KviTalListViewItem *parent,const QPixmap &pm,const KviIrcServer *s)
+ : KviTalListViewItem(parent)
+{
+ setPixmap(0,pm);
+ m_pServerData = new KviIrcServer(*s);
+ setText(0,s->hostName());
+ setText(1,s->description());
+ m_pNetworkData = 0;
+}
+
+KviServerOptionsListViewItem::~KviServerOptionsListViewItem()
+{
+ if(m_pServerData)delete m_pServerData;
+ if(m_pNetworkData)delete m_pNetworkData;
+}
+
+void KviServerOptionsListViewItem::updateVisibleStrings()
+{
+ if(m_pNetworkData)
+ {
+ setText(0,m_pNetworkData->name());
+ setText(1,m_pNetworkData->description());
+ return;
+ }
+ if(m_pServerData)
+ {
+ setText(0,m_pServerData->hostName());
+ setText(1,m_pServerData->description());
+ }
+}
+
+
+
+
+
+
+
+
+KviServerOptionsWidget::KviServerOptionsWidget(QWidget * parent)
+ : KviOptionsWidget(parent,"server_options_widget")
+{
+ createLayout(4,2);
+
+ m_pContextPopup = new KviTalPopupMenu(this);
+ m_pImportPopup = new KviTalPopupMenu(this);
+
+ connect(m_pImportPopup,SIGNAL(aboutToShow()),this,SLOT(importPopupAboutToShow()));
+ connect(m_pImportPopup,SIGNAL(activated(int)),this,SLOT(importPopupActivated(int)));
+
+ m_pServerDetailsDialog = 0;
+ m_pNetworkDetailsDialog = 0;
+ m_pImportFilter = 0;
+
+ m_pListView = new KviTalListView(this);
+ addWidgetToLayout(m_pListView,0,0,0,0);
+ m_pListView->addColumn(__tr2qs_ctx("Server","options"));
+ m_pListView->addColumn(__tr2qs_ctx("Description","options"));
+ m_pListView->setRootIsDecorated(true);
+ m_pListView->setAllColumnsShowFocus(true);
+ m_pListView->setSelectionMode(KviTalListView::Single);
+ connect(m_pListView,SIGNAL(selectionChanged(KviTalListViewItem *)),
+ this,SLOT(listViewItemSelectionChanged(KviTalListViewItem *)));
+ connect(m_pListView,SIGNAL(rightButtonPressed(KviTalListViewItem *,const QPoint &,int)),
+ this,SLOT(listViewRightButtonPressed(KviTalListViewItem *,const QPoint &,int)));
+ connect(m_pListView,SIGNAL(doubleClicked(KviTalListViewItem*, const QPoint&, int )),
+ this,SLOT(detailsClicked()));
+
+#ifdef COMPILE_INFO_TIPS
+ QString tiptxt = __tr2qs_ctx("<center>This is the list of available IRC servers.<br>" \
+ "Right-click on the list to add or remove servers and perform other actions.<br>"\
+ "Double-click on a item for advanced options.</center>","options");
+ KviTalToolTip::add(m_pListView,tiptxt);
+ KviTalToolTip::add(m_pListView->viewport(),tiptxt);
+#endif
+
+ KviTalVBox * vbox = new KviTalVBox(this);
+ addWidgetToLayout(vbox,1,0,1,0);
+
+ m_pNewNetworkButton = new KviStyledToolButton(vbox);
+ m_pNewNetworkButton->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_WORLD)));
+ m_pNewNetworkButton->setAutoRaise(true);
+ connect(m_pNewNetworkButton,SIGNAL(clicked()),this,SLOT(newNetwork()));
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pNewNetworkButton,__tr2qs_ctx("New Network","options"));
+#endif
+
+ m_pNewServerButton = new KviStyledToolButton(vbox);
+ m_pNewServerButton->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SERVER)));
+ m_pNewServerButton->setAutoRaise(true);
+ connect(m_pNewServerButton,SIGNAL(clicked()),this,SLOT(newServer()));
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pNewServerButton,__tr2qs_ctx("New Server","options"));
+#endif
+
+ m_pRemoveButton = new KviStyledToolButton(vbox);
+ m_pRemoveButton->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CUT)));
+ m_pRemoveButton->setEnabled(false);
+ m_pRemoveButton->setAutoRaise(true);
+ connect(m_pRemoveButton,SIGNAL(clicked()),this,SLOT(removeCurrent()));
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pRemoveButton,__tr2qs_ctx("Remove Network/Server","options"));
+#endif
+
+ QFrame * f = new QFrame(vbox);
+ f->setFrameStyle(QFrame::Sunken | QFrame::HLine);
+
+ m_pCopyServerButton = new KviStyledToolButton(vbox);
+ m_pCopyServerButton->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_COPY)));
+ m_pCopyServerButton->setEnabled(false);
+ m_pCopyServerButton->setAutoRaise(true);
+ connect(m_pCopyServerButton,SIGNAL(clicked()),this,SLOT(copyServer()));
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pCopyServerButton,__tr2qs_ctx("Copy Server","options"));
+#endif
+
+ m_pPasteServerButton = new KviStyledToolButton(vbox);
+ m_pPasteServerButton->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_PASTE)));
+ m_pPasteServerButton->setEnabled(false);
+ m_pPasteServerButton->setAutoRaise(true);
+ connect(m_pPasteServerButton,SIGNAL(clicked()),this,SLOT(pasteServer()));
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pPasteServerButton,__tr2qs_ctx("Paste Server","options"));
+#endif
+
+ f = new QFrame(vbox);
+ f->setFrameStyle(QFrame::Sunken | QFrame::HLine);
+
+ m_pImportButton = new KviStyledToolButton(vbox);
+ m_pImportButton->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_FOLDER)));
+ m_pImportButton->setAutoRaise(true);
+ m_pImportButton->setPopup(m_pImportPopup);
+ m_pImportButton->setPopupDelay(1);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pImportButton,__tr2qs_ctx("Import List","options"));
+#endif
+
+ QFrame * lll = new QFrame(vbox);
+ vbox->setStretchFactor(lll,100);
+
+ KviTalGroupBox *gbox = addGroupBox(0,1,1,1,3,Qt::Horizontal,__tr2qs_ctx("Active Configuration","options"));
+ m_pSrvNetLabel = new QLabel(__tr2qs_ctx("Server:","options"),gbox);
+
+ m_pSrvNetEdit = new QLineEdit(gbox);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pSrvNetEdit,__tr2qs_ctx("<center>This is the name of the currently selected server or network</center>","options"));
+#endif
+
+/*
+ m_pIpV6Check = new KviStyledCheckBox(__tr2qs_ctx("Use IPv6 protocol","options"),gbox);
+
+#ifndef COMPILE_IPV6_SUPPORT
+ m_pIpV6Check->setEnabled(false);
+#endif
+
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pIpV6Check,__tr2qs_ctx("<center>This check identifies IPv6 servers.<br>If enabled, KVIrc will attempt to use the IPv6 protocol " \
+ "(thus your OS <b>must</b> have a working IPv6 stack and you <b>must</b> have an IPv6 connection).</center>","options"));
+#endif
+
+ m_pPortLabel = new QLabel(__tr2qs_ctx("Port:","options"),gbox);
+
+ m_pPortEdit = new QLineEdit(gbox);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pPortEdit,__tr2qs_ctx("<center>This is the default <b>port</b> that this server will be contacted on.<br>Usually <b>6667</b> is OK.</center>","options"));
+#endif
+*/
+
+ m_pDetailsButton = new QPushButton(__tr2qs_ctx("Advanced...","options"),gbox);
+ connect(m_pDetailsButton,SIGNAL(clicked()),this,SLOT(detailsClicked()));
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pDetailsButton,__tr2qs_ctx("<center>Click here to edit advanced options for this entry</center>","options"));
+#endif
+
+ m_pConnectCurrent = new QPushButton(__tr2qs_ctx("Connect &Now","options"),this);
+ addWidgetToLayout(m_pConnectCurrent,0,2,0,2);
+ connect(m_pConnectCurrent,SIGNAL(clicked()),this,SLOT(connectCurrentClicked()));
+
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(m_pConnectCurrent,__tr2qs_ctx("<center>Hit this button to connect to the currently selected server.</center>","options"));
+#endif
+
+ m_pRecentPopup = new KviTalPopupMenu(this);
+ connect(m_pRecentPopup,SIGNAL(aboutToShow()),this,SLOT(recentServersPopupAboutToShow()));
+ connect(m_pRecentPopup,SIGNAL(activated(int)),this,SLOT(recentServersPopupClicked(int)));
+
+ QToolButton * tb = new KviStyledToolButton(this);
+ addWidgetToLayout(tb,1,2,1,2);
+ tb->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TIME)));
+ tb->setPopup(m_pRecentPopup);
+ tb->setPopupDelay(1);
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(tb,__tr2qs_ctx("<center>This button shows a list of recently used servers. It allows you to quickly find them in the list.</center>","options"));
+#endif
+
+
+ KviBoolSelector * b = addBoolSelector(0,3,1,3,__tr2qs_ctx("Show this dialog at startup","options"),KviOption_boolShowServersConnectDialogOnStart);
+
+#ifdef COMPILE_INFO_TIPS
+ KviTalToolTip::add(b,__tr2qs_ctx("<center>If this option is enabled, the Servers dialog will appear every time you start KVIrc</center>","options"));
+#endif
+
+ // KviBoolSelector * c = addBoolSelector(0,6,2,6,__tr("Close after connection","options"),KviOption_boolCloseServerWidgetAfterConnect);
+
+ m_pLastEditedItem = 0;
+
+ m_pClipboard = 0;
+
+ fillServerList();
+
+ layout()->setRowStretch(0,1);
+ //layout()->setColStretch(1,5);
+ //layout()->setColStretch(2,2);
+ layout()->setColStretch(0,1);
+ setMinimumWidth(320);
+}
+
+KviServerOptionsWidget::~KviServerOptionsWidget()
+{
+ if(m_pImportFilter)
+ {
+ disconnect(m_pImportFilter,0,this,0);
+ m_pImportFilter->die();
+ m_pImportFilter = 0;
+ }
+
+ if(m_pClipboard)delete m_pClipboard;
+ if(m_pServerDetailsDialog)delete m_pServerDetailsDialog;
+ if(m_pNetworkDetailsDialog)delete m_pNetworkDetailsDialog;
+}
+
+void KviServerOptionsWidget::recentServersPopupAboutToShow()
+{
+ g_pApp->fillRecentServersPopup(m_pRecentPopup);
+}
+
+void KviServerOptionsWidget::recentServersPopupClicked(int id)
+{
+ KviStr data = m_pRecentPopup->text(id);
+ data.cutToFirst('/');
+ while(data.firstCharIs('/'))data.cutLeft(1);
+ data.cutFromLast(':');
+ data.replaceAll("/","");
+ // we should have a full server name now , with no port
+
+ KviStr port = m_pRecentPopup->text(id);
+ port.cutToLast(':');
+ bool bOk;
+ kvi_u32_t uPort = port.toUInt(&bOk);
+ // we have the port too
+
+ KviTalListViewItem * pFoundNet = 0;
+ KviTalListViewItem * pFoundSrv = 0;
+
+ for(KviTalListViewItem * net = m_pListView->firstChild();net;net = net->nextSibling())
+ {
+ for(KviTalListViewItem * srv = net->firstChild();srv;srv = srv->nextSibling())
+ {
+ KviStr tmp = ((KviServerOptionsListViewItem *)srv)->m_pServerData->hostName();
+ if(kvi_strEqualCI(tmp.ptr(),data.ptr()))
+ {
+ if(((KviServerOptionsListViewItem *)srv)->m_pServerData->port() == uPort)
+ {
+ net->setOpen(true);
+ m_pListView->setCurrentItem(srv);
+ m_pListView->ensureItemVisible(srv);
+ return;
+ } else {
+ if(!pFoundNet)
+ {
+ // the port doesn't match.. check for
+ // another entry with the correct port
+ // but keep track of this entry in case we don't find it
+ pFoundNet = srv;
+ pFoundSrv = net;
+ }
+ }
+ }
+ }
+ }
+
+ // fallback to the server with the wrong port
+ if(pFoundNet)
+ {
+ pFoundNet->setOpen(true);
+ m_pListView->setCurrentItem(pFoundSrv);
+ m_pListView->ensureItemVisible(pFoundSrv);
+ }
+}
+
+
+void KviServerOptionsWidget::connectCurrentClicked()
+{
+ saveLastItem();
+ commit();
+ KviStr szServer = m_pSrvNetEdit->text();
+ if(szServer.isEmpty())return;
+ KviKvsScript::run("server -u",g_pApp->activeConsole());
+}
+
+
+void KviServerOptionsWidget::fillServerList()
+{
+ KviServerOptionsListViewItem * net;
+ KviServerOptionsListViewItem * srv;
+ KviServerOptionsListViewItem * cur = 0;
+
+ KviPointerHashTableIterator<QString,KviIrcServerDataBaseRecord> it(*(g_pIrcServerDataBase->recordDict()));
+
+ while(KviIrcServerDataBaseRecord * r = it.current())
+ {
+ net = new KviServerOptionsListViewItem(m_pListView,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_WORLD)),r->network());
+ KviPointerList<KviIrcServer> * sl = r->serverList();
+ bool bCurrent = r->network()->name() == g_pIrcServerDataBase->currentNetworkName().utf8().data();
+ net->setOpen(bCurrent);
+ for(KviIrcServer * s = sl->first();s;s = sl->next())
+ {
+ srv = new KviServerOptionsListViewItem(net,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SERVER)),s);
+
+ if((s == r->currentServer()) && bCurrent)
+ {
+ m_pListView->setSelected(srv,true);
+ cur = srv;
+ }
+ }
+ ++it;
+ }
+ if(cur)m_pListView->ensureItemVisible(cur);
+}
+
+void KviServerOptionsWidget::listViewItemSelectionChanged(KviTalListViewItem *it)
+{
+ saveLastItem();
+ m_pLastEditedItem = (KviServerOptionsListViewItem *)it;
+
+ if(m_pLastEditedItem)
+ {
+ m_pSrvNetLabel->setEnabled(true);
+ m_pSrvNetEdit->setEnabled(true);
+ m_pDetailsButton->setEnabled(true);
+ m_pConnectCurrent->setEnabled(m_pLastEditedItem->m_pServerData);
+
+ m_pRemoveButton->setEnabled(true);
+ m_pCopyServerButton->setEnabled(m_pLastEditedItem->m_pServerData);
+
+ if(m_pLastEditedItem->m_pServerData)
+ {
+ m_pSrvNetLabel->setText(__tr2qs_ctx("Server:","options"));
+ m_pSrvNetEdit->setText(m_pLastEditedItem->m_pServerData->m_szHostname);
+ } else {
+ m_pSrvNetLabel->setText(__tr2qs_ctx("Network:","options"));
+ m_pSrvNetEdit->setText(it->text(0));
+ }
+ } else {
+ m_pRemoveButton->setEnabled(false);
+ m_pCopyServerButton->setEnabled(true);
+
+ m_pConnectCurrent->setEnabled(false);
+ m_pSrvNetLabel->setEnabled(false);
+ m_pSrvNetEdit->setEnabled(false);
+ m_pSrvNetEdit->setText(__tr2qs_ctx("No selection","options"));
+ m_pDetailsButton->setEnabled(false);
+ }
+}
+
+
+
+void KviServerOptionsWidget::saveLastItem()
+{
+ if(!m_pLastEditedItem)return;
+ if(m_pLastEditedItem->m_pServerData)
+ {
+ KviStr tmp = m_pSrvNetEdit->text();
+ if(tmp.isEmpty())tmp = "irc.unknown.net";
+ m_pLastEditedItem->m_pServerData->m_szHostname = tmp;
+ m_pLastEditedItem->updateVisibleStrings();
+ } else if(m_pLastEditedItem->m_pNetworkData)
+ {
+ QString tmp = m_pSrvNetEdit->text();
+ if(tmp.isEmpty())tmp = __tr2qs_ctx("UnknownNet","options");
+ m_pLastEditedItem->m_pNetworkData->setName(tmp);
+ m_pLastEditedItem->updateVisibleStrings();
+ }
+}
+
+void KviServerOptionsWidget::commit()
+{
+ saveLastItem();
+ g_pIrcServerDataBase->clear();
+ KviServerOptionsListViewItem * it = (KviServerOptionsListViewItem *)m_pListView->firstChild();
+ while(it)
+ {
+ QString tmp = it->m_pNetworkData ? it->m_pNetworkData->name() : QString::null;
+ if(!tmp.isEmpty())
+ {
+ KviIrcNetwork * net = 0;
+ KviIrcServerDataBaseRecord * r = g_pIrcServerDataBase->findRecord(tmp);
+ if(r)
+ {
+ net = r->network();
+ net->copyFrom(*(it->m_pNetworkData));
+ } else {
+ net = new KviIrcNetwork(tmp);
+ net->copyFrom(*(it->m_pNetworkData));
+ r = g_pIrcServerDataBase->insertNetwork(net);
+ }
+ if(it == m_pLastEditedItem)g_pIrcServerDataBase->setCurrentNetwork(net->name());
+
+ KviServerOptionsListViewItem * ch = (KviServerOptionsListViewItem *)it->firstChild();
+ KviIrcServer *srv;
+
+ while(ch)
+ {
+ if(ch->m_pServerData)
+ {
+ if(!ch->m_pServerData->m_szHostname.isEmpty())
+ {
+ srv = r->findServer(ch->m_pServerData);
+ if(!srv)
+ {
+ srv = new KviIrcServer(*(ch->m_pServerData));
+ r->insertServer(srv);
+ } else *srv = *(ch->m_pServerData);
+ if(srv->id().isEmpty())srv->generateUniqueId();
+ if(ch == m_pLastEditedItem)
+ {
+ g_pIrcServerDataBase->setCurrentNetwork(net->name());
+ r->setCurrentServer(srv);
+ }
+ }
+ }
+ ch = (KviServerOptionsListViewItem *)ch->nextSibling();
+ }
+ }
+ it = (KviServerOptionsListViewItem *)it->nextSibling();
+ }
+
+ KviOptionsWidget::commit();
+}
+
+void KviServerOptionsWidget::listViewRightButtonPressed(KviTalListViewItem *it,const QPoint &pnt,int col)
+{
+ int id;
+ bool bServer = (it && ((KviServerOptionsListViewItem *)it)->m_pServerData);
+ m_pContextPopup->clear();
+ m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_WORLD)),__tr2qs_ctx("New Network","options"),this,SLOT(newNetwork()));
+ id = m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CUT)),__tr2qs_ctx("Remove Network","options"),this,SLOT(removeCurrent()));
+ m_pContextPopup->setItemEnabled(id,!bServer);
+ m_pContextPopup->insertSeparator();
+ id = m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SERVER)),__tr2qs_ctx("&New Server","options"),this,SLOT(newServer()));
+ id = m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CUT)),__tr2qs_ctx("Re&move Server","options"),this,SLOT(removeCurrent()));
+ m_pContextPopup->setItemEnabled(id,bServer);
+ id = m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_COPY)),__tr2qs_ctx("&Copy Server","options"),this,SLOT(copyServer()));
+ m_pContextPopup->setItemEnabled(id,bServer);
+ id = m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_PASTE)),__tr2qs_ctx("&Paste Server","options"),this,SLOT(pasteServer()));
+ m_pContextPopup->setItemEnabled(id,m_pClipboard);
+
+ m_pContextPopup->insertSeparator();
+ // m_pContextPopup->insertItem(__c2q(__tr("Merge list from server.ini","options")),this,SLOT(importFromIni()));
+ m_pContextPopup->insertItem(__tr2qs_ctx("Clear List","options"),this,SLOT(clearList()));
+ m_pContextPopup->insertSeparator();
+ m_pContextPopup->insertItem(__tr2qs_ctx("Import List","options"),m_pImportPopup);
+ m_pContextPopup->popup(QCursor::pos());
+}
+
+void KviServerOptionsWidget::importPopupAboutToShow()
+{
+ g_pModuleManager->loadModulesByCaps("serverimport");
+ m_pImportPopup->clear();
+
+ KviModuleExtensionDescriptorList * l = KviModuleExtensionManager::instance()->getExtensionList("serverimport");
+
+ if(!l)return;
+
+ int id;
+
+ for(KviModuleExtensionDescriptor * d = l->first();d;d = l->next())
+ {
+ if(d->icon())
+ id = m_pImportPopup->insertItem(*(d->icon()),d->visibleName());
+ else
+ id = m_pImportPopup->insertItem(d->visibleName());
+ m_pImportPopup->setItemParameter(id,d->id());
+ }
+}
+
+void KviServerOptionsWidget::importPopupActivated(int id)
+{
+ // ensure that we have all the modules : they could have been unloaded while the popup was displayed
+ g_pModuleManager->loadModulesByCaps("serverimport");
+
+ KviModuleExtensionDescriptorList * l = KviModuleExtensionManager::instance()->getExtensionList("serverimport");
+
+ if(!l)
+ {
+ // ops.. internal error: I thought to have a module capable of importing servers
+ // but actually it's not the case.. something weird happened (in the best case
+ // the user has just unloaded the module and removed it from disk ?)
+ KviMessageBox::warning(__tr2qs_ctx("Oops... something weird happened:<br>Can't find any module capable of importing servers.","options"));
+ return;
+ }
+
+ if(m_pImportFilter)
+ {
+ disconnect(m_pImportFilter,0,this,0);
+ m_pImportFilter->die();
+ m_pImportFilter = 0;
+ }
+
+ id = m_pImportPopup->itemParameter(id);
+
+ m_pImportFilter = (KviMexServerImport *)KviModuleExtensionManager::instance()->allocateExtension("serverimport",id,0);
+
+ if(!m_pImportFilter)
+ {
+ KviMessageBox::warning(__tr2qs_ctx("Oops... something weird happened:<br>Can't find the module that was capable of this import action. :(","options"));
+ return;
+ }
+
+ connect(m_pImportFilter,SIGNAL(server(const KviIrcServer &,const char *)),this,SLOT(importServer(const KviIrcServer &,const char *)));
+ connect(m_pImportFilter,SIGNAL(destroyed()),this,SLOT(importerDead()));
+
+ m_pImportFilter->start();
+}
+
+void KviServerOptionsWidget::importerDead()
+{
+ m_pImportFilter = 0;
+}
+
+void KviServerOptionsWidget::importServer(const KviIrcServer &s,const char * network)
+{
+ KviServerOptionsListViewItem * net = findNetItem(network);
+ if(!net)
+ {
+ KviIrcNetwork d(network);
+ net = new KviServerOptionsListViewItem(m_pListView,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_WORLD)),&d);
+ net->setOpen(true);
+ }
+
+ for(KviServerOptionsListViewItem * srv = (KviServerOptionsListViewItem *)net->firstChild();srv;srv = (KviServerOptionsListViewItem *)srv->nextSibling())
+ {
+ if((srv)->m_pServerData->useSSL() == s.useSSL())
+ {
+ if(srv->m_pServerData->isIpV6() == s.isIpV6())
+ {
+ if(KviQString::equalCI(srv->m_pServerData->hostName(),s.hostName()))
+ {
+ // update the port
+ srv->m_pServerData->setPort(s.port());
+ if(!s.ipAddress().isEmpty())srv->m_pServerData->setIpAddress(s.ipAddress());
+ if(!s.password().isEmpty())srv->m_pServerData->setPassword(s.password());
+ if(!s.nickName().isEmpty())srv->m_pServerData->setNickName(s.nickName());
+ m_pListView->setCurrentItem(srv);
+ m_pListView->ensureItemVisible(srv);
+ return;
+ }
+ }
+ }
+ }
+
+ // not found : add it!
+ KviServerOptionsListViewItem * newServer = new KviServerOptionsListViewItem(net,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SERVER)),&s);
+ m_pListView->setCurrentItem(newServer);
+ m_pListView->ensureItemVisible(newServer);
+}
+
+void KviServerOptionsWidget::newNetwork()
+{
+ KviIrcNetwork d(__tr2qs_ctx("New Network","options"));
+ KviServerOptionsListViewItem * it = new KviServerOptionsListViewItem(m_pListView,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_WORLD)),&d);
+ it->setOpen(true);
+ m_pListView->setSelected(it,true);
+ m_pListView->ensureItemVisible(it);
+}
+
+void KviServerOptionsWidget::newServer()
+{
+ if(m_pLastEditedItem)
+ {
+ KviServerOptionsListViewItem * net;
+ if(m_pLastEditedItem->m_pServerData)
+ {
+ net = (KviServerOptionsListViewItem *)m_pLastEditedItem->parent();
+ if(!net)return;
+ }
+ else net = m_pLastEditedItem;
+
+ KviIrcServer tmp;
+ tmp.m_szHostname = __tr2qs_ctx("irc.unknown.net","options");
+ tmp.setCacheIp(false);
+ tmp.generateUniqueId();
+
+ KviServerOptionsListViewItem * it = new KviServerOptionsListViewItem(net,
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_SERVER)),&tmp);
+
+ net->setOpen(true);
+
+ m_pListView->setSelected(it,true);
+ m_pListView->ensureItemVisible(it);
+ }
+}
+
+void KviServerOptionsWidget::copyServer()
+{
+ if(m_pLastEditedItem)
+ {
+ if(m_pLastEditedItem->m_pServerData)
+ {
+ if(!m_pClipboard)m_pClipboard = new KviIrcServer();
+ *m_pClipboard = *(m_pLastEditedItem->m_pServerData);
+ m_pPasteServerButton->setEnabled(true);
+ }
+ }
+}
+
+void KviServerOptionsWidget::pasteServer()
+{
+ if(m_pClipboard)
+ {
+ if(m_pLastEditedItem)
+ {
+ KviServerOptionsListViewItem * net;
+ if(m_pLastEditedItem->m_pServerData)
+ {
+ net = (KviServerOptionsListViewItem *)m_pLastEditedItem->parent();
+ if(!net)return;
+ }
+ else net = m_pLastEditedItem;
+
+ KviServerOptionsListViewItem * it = new KviServerOptionsListViewItem(net,
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_SERVER)),m_pClipboard);
+
+ net->setOpen(true);
+
+ m_pListView->setSelected(it,true);
+ m_pListView->ensureItemVisible(it);
+ }
+ }
+}
+
+void KviServerOptionsWidget::removeCurrent()
+{
+ if(m_pLastEditedItem)
+ {
+ KviTalListViewItem * it = m_pLastEditedItem->itemAbove();
+ if(!it)it = m_pLastEditedItem->firstChild() ? m_pLastEditedItem->nextSibling() : m_pLastEditedItem->itemBelow();
+ delete m_pLastEditedItem;
+ m_pLastEditedItem = 0;
+ if(!it)it = m_pListView->firstChild();
+ if(it)
+ {
+ m_pListView->setSelected(it,true);
+ m_pListView->ensureItemVisible(it);
+ }
+ }
+}
+
+KviServerOptionsListViewItem * KviServerOptionsWidget::findNetItem(const char * netname)
+{
+ KviServerOptionsListViewItem * it = (KviServerOptionsListViewItem *)m_pListView->firstChild();
+ while(it)
+ {
+ KviStr szNetName = it->text(0);
+ if(kvi_strEqualCI(szNetName.ptr(),netname))return it;
+ it = (KviServerOptionsListViewItem *)it->nextSibling();
+ }
+ return 0;
+}
+
+void KviServerOptionsWidget::clearList()
+{
+ m_pListView->clear();
+ m_pLastEditedItem = 0;
+ listViewItemSelectionChanged(0);
+}
+
+void KviServerOptionsWidget::detailsClicked()
+{
+ if(!m_pLastEditedItem)return;
+ if(m_pLastEditedItem->m_pServerData)
+ {
+ saveLastItem();
+
+ m_pServerDetailsDialog = new KviServerDetailsWidget(this,m_pLastEditedItem->m_pServerData);
+
+ int retCode = m_pServerDetailsDialog->exec();
+ if(retCode == QDialog::Accepted)
+ {
+ if(m_pLastEditedItem)
+ {
+ if(m_pLastEditedItem->m_pServerData)
+ {
+ m_pServerDetailsDialog->fillData(m_pLastEditedItem->m_pServerData);
+ saveLastItem();
+ }
+ }
+ }
+
+ delete m_pServerDetailsDialog;
+ m_pServerDetailsDialog = 0;
+ return;
+ }
+ if(m_pLastEditedItem->m_pNetworkData)
+ {
+ saveLastItem();
+
+ m_pNetworkDetailsDialog = new KviNetworkDetailsWidget(this,m_pLastEditedItem->m_pNetworkData);
+
+ int retCode = m_pNetworkDetailsDialog->exec();
+ if(retCode == QDialog::Accepted)
+ {
+ if(m_pLastEditedItem)
+ {
+ if(m_pLastEditedItem->m_pNetworkData)
+ {
+ m_pNetworkDetailsDialog->fillData(m_pLastEditedItem->m_pNetworkData);
+ saveLastItem();
+ }
+ }
+ }
+
+ delete m_pNetworkDetailsDialog;
+ m_pNetworkDetailsDialog = 0;
+ }
+}
+
+#include "m_optw_servers.moc"
diff --git a/src/modules/options/optw_servers.h b/src/modules/options/optw_servers.h
new file mode 100644
index 00000000..ea71c6d3
--- /dev/null
+++ b/src/modules/options/optw_servers.h
@@ -0,0 +1,210 @@
+#ifndef _OPTW_SERVERS_H_
+#define _OPTW_SERVERS_H_
+
+//=============================================================================
+//
+// File : optw_servers.h
+// Creation date : Wed Jun 12 2000 03:29:01 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_optionswidget.h"
+#include "kvi_tal_listview.h"
+#include <qdialog.h>
+#include <qbuttongroup.h>
+#include <qtabwidget.h>
+
+class KviIrcServer;
+class KviIrcNetwork;
+class KviIrcNetworkData;
+class KviMexServerImport;
+
+
+
+class KviServerOptionsListViewItem : public KviTalListViewItem
+{
+public:
+ KviServerOptionsListViewItem(KviTalListView *parent,const QPixmap &pm,const KviIrcNetwork *n);
+ KviServerOptionsListViewItem(KviTalListViewItem *parent,const QPixmap &pm,const KviIrcServer *s);
+ ~KviServerOptionsListViewItem();
+public:
+ KviIrcServer * m_pServerData;
+ KviIrcNetwork * m_pNetworkData;
+public:
+ void updateVisibleStrings();
+};
+
+class QLabel;
+class QLineEdit;
+class KviIpEditor;
+class KviIrcServer;
+class QCheckBox;
+class KviTalPopupMenu;
+class KviScriptEditor;
+class QComboBox;
+class QPushButton;
+class QToolButton;
+class KviNickServRule;
+class KviNickServRuleEditor;
+
+
+class KviNetworkDetailsWidget : public QDialog
+{
+ Q_OBJECT
+public:
+ KviNetworkDetailsWidget(QWidget * par,KviIrcNetwork * d);
+ ~KviNetworkDetailsWidget();
+protected:
+ KviScriptEditor * m_pOnConnectEditor;
+ KviScriptEditor * m_pOnLoginEditor;
+
+ QLineEdit * m_pUserEditor;
+ QLineEdit * m_pPassEditor;
+ QLineEdit * m_pNickEditor;
+ QLineEdit * m_pRealEditor;
+ QLineEdit * m_pDescEditor;
+
+ QComboBox * m_pEncodingEditor;
+
+ QCheckBox * m_pAutoConnectCheck;
+
+ KviTalListView * m_pNickServListView;
+ QCheckBox * m_pNickServCheck;
+ QPushButton * m_pAddRuleButton;
+ QPushButton * m_pDelRuleButton;
+ QPushButton * m_pEditRuleButton;
+
+ QStringList m_lstChannels;
+ KviCahnnelListSelector * m_pChannelListSelector;
+public:
+ void fillData(KviIrcNetwork * d);
+protected slots:
+ void enableDisableNickServControls();
+ void addNickServRule();
+ void delNickServRule();
+ void editNickServRule();
+};
+
+class KviServerDetailsWidget : public QDialog
+{
+ Q_OBJECT
+public:
+ KviServerDetailsWidget(QWidget * par,KviIrcServer * s);
+ ~KviServerDetailsWidget();
+protected:
+ QString m_szHostname;
+ QLabel * m_pHeaderLabel;
+ KviScriptEditor * m_pOnConnectEditor;
+ KviScriptEditor * m_pOnLoginEditor;
+ QLineEdit * m_pUserEditor;
+ QLineEdit * m_pPassEditor;
+ QLineEdit * m_pNickEditor;
+ QLineEdit * m_pRealEditor;
+ QLineEdit * m_pDescEditor;
+ QLineEdit * m_pIdEditor;
+ QComboBox * m_pLinkFilterEditor;
+ QComboBox * m_pEncodingEditor;
+ KviIpEditor * m_pIpEditor;
+ QCheckBox * m_pCacheIpCheck;
+ QCheckBox * m_pUseSSLCheck;
+ QCheckBox * m_pUseDefaultInitUMode;
+ QCheckBox * m_pIMode;
+ QCheckBox * m_pWMode;
+ QCheckBox * m_pSMode;
+ QCheckBox * m_pUseAutoConnect;
+ QCheckBox * m_pUseIPV6Check;
+ QLineEdit * m_pPortEditor;
+ QStringList m_lstChannels;
+ KviCahnnelListSelector * m_pChannelListSelector;
+
+ QComboBox * m_pProxyEditor;
+protected slots:
+ void useDefaultInitUModeToggled(bool);
+ void portEditorTextChanged(const QString &);
+ void useIPV6CheckToggled(bool);
+public:
+ void setHeaderLabelText();
+ void fillData(KviIrcServer *s);
+};
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviServerOptionsWidget KVI_SMALLICON_SERVER
+#define KVI_OPTIONS_WIDGET_NAME_KviServerOptionsWidget __tr2qs_no_lookup("Servers")
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviServerOptionsWidget __tr2qs_no_lookup("connection")
+//#define KVI_OPTIONS_WIDGET_NOPARENT_KviServerOptionsWidget KviConnectionOptionsWidget
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviServerOptionsWidget 99000
+
+class KviServerOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviServerOptionsWidget(QWidget * parent);
+ ~KviServerOptionsWidget();
+protected:
+ KviTalListView * m_pListView;
+ QLabel * m_pSrvNetLabel;
+ QLineEdit * m_pSrvNetEdit;
+ //QLabel * m_pPortLabel;
+ //QLineEdit * m_pPortEdit;
+ QPushButton * m_pDetailsButton;
+ KviTalPopupMenu * m_pRecentPopup;
+ KviTalPopupMenu * m_pContextPopup;
+ KviTalPopupMenu * m_pImportPopup;
+ KviIrcServer * m_pClipboard;
+ //QCheckBox * m_pIpV6Check;
+ QPushButton * m_pConnectCurrent;
+ QPushButton * m_pConnectNew;
+ KviServerOptionsListViewItem * m_pLastEditedItem;
+ KviServerDetailsWidget * m_pServerDetailsDialog;
+ KviNetworkDetailsWidget * m_pNetworkDetailsDialog;
+ KviMexServerImport * m_pImportFilter;
+
+ QToolButton * m_pNewServerButton;
+ QToolButton * m_pNewNetworkButton;
+ QToolButton * m_pRemoveButton;
+ QToolButton * m_pCopyServerButton;
+ QToolButton * m_pPasteServerButton;
+ QToolButton * m_pImportButton;
+private:
+ void fillServerList();
+ void saveLastItem();
+ KviServerOptionsListViewItem * findNetItem(const char * netname);
+protected slots:
+ void importerDead();
+ void importServer(const KviIrcServer & s,const char * network);
+ void importPopupAboutToShow();
+ void listViewItemSelectionChanged(KviTalListViewItem *it);
+ void listViewRightButtonPressed(KviTalListViewItem *it,const QPoint &pnt,int col);
+ void newNetwork();
+ void removeCurrent();
+ void newServer();
+ void copyServer();
+ void pasteServer();
+ void clearList();
+ void detailsClicked();
+ void connectCurrentClicked();
+ void recentServersPopupAboutToShow();
+ void recentServersPopupClicked(int id);
+ void importPopupActivated(int id);
+public:
+ virtual void commit();
+};
+
+#endif //!_OPTW_SERVERS_H_
diff --git a/src/modules/options/optw_sound.cpp b/src/modules/options/optw_sound.cpp
new file mode 100644
index 00000000..9fec0a0c
--- /dev/null
+++ b/src/modules/options/optw_sound.cpp
@@ -0,0 +1,310 @@
+//=============================================================================
+//
+// File : optw_sound.cpp
+// Creation date : Fri Sep 6 02:18:23 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVsound sound client distribution
+// Copyright (C) 2002-2006 Szymon Stefanek (pragma at kvsound dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "optw_sound.h"
+
+#include "kvi_settings.h"
+#include "kvi_locale.h"
+#include "kvi_options.h"
+#include "kvi_modulemanager.h"
+#include "kvi_pointerlist.h"
+#include "kvi_string.h"
+
+#include <qlabel.h>
+#include <qpushbutton.h>
+#include "kvi_tal_hbox.h"
+
+#ifdef COMPILE_INFO_TIPS
+ #include "kvi_tal_tooltip.h"
+#endif
+
+// FIXME: This module doesn't Cancel properly when auto-detection is performed!
+
+
+
+KviSoundOptionsWidget::KviSoundOptionsWidget(QWidget * pParent)
+: KviOptionsWidget(pParent)
+{
+}
+
+KviSoundOptionsWidget::~KviSoundOptionsWidget()
+{
+}
+
+
+KviSoundGeneralOptionsWidget::KviSoundGeneralOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"sound_system_options_widget")
+{
+#ifdef COMPILE_ON_WINDOWS
+ createLayout(4,1);
+#else
+ createLayout(3,1);
+#endif
+ KviTalGroupBox * g = addGroupBox(0,0,0,0,1,Qt::Horizontal,__tr2qs_ctx("Sound System","options"),true);
+
+ KviTalToolTip::add(g,__tr2qs_ctx("This allows you to select the sound system to be used with KVIrc.","options"));
+
+ KviTalHBox * h = new KviTalHBox(g);
+
+ m_pSoundSystemBox = new QComboBox(false,h);
+
+ m_pSoundAutoDetectButton = new QPushButton(__tr2qs_ctx("Auto-detect","options"),h);
+ connect(m_pSoundAutoDetectButton,SIGNAL(clicked()),this,SLOT(soundAutoDetect()));
+
+ m_pSoundTestButton = new QPushButton(__tr2qs_ctx("Test","options"),h);
+ connect(m_pSoundTestButton,SIGNAL(clicked()),this,SLOT(soundTest()));
+
+
+ g = addGroupBox(0,1,0,1,1,Qt::Horizontal,__tr2qs_ctx("Media Player","options"),true);
+
+ KviTalToolTip::add(g,__tr2qs_ctx("This allows you to select the preferred media player to be used with " \
+ "the mediaplayer.* module commands and functions.","options"));
+
+ h = new KviTalHBox(g);
+
+ m_pMediaPlayerBox = new QComboBox(false,h);
+
+ m_pMediaAutoDetectButton = new QPushButton(__tr2qs_ctx("Auto-detect","options"),h);
+ connect(m_pMediaAutoDetectButton,SIGNAL(clicked()),this,SLOT(mediaAutoDetect()));
+
+ m_pMediaTestButton = new QPushButton(__tr2qs_ctx("Test","options"),h);
+ connect(m_pMediaTestButton,SIGNAL(clicked()),this,SLOT(mediaTest()));
+
+ addRowSpacer(0,2,0,2);
+
+ soundFillBox();
+ mediaFillBox();
+ // FIXME!
+ m_pSoundTestButton->setEnabled(false);
+ m_pMediaTestButton->setEnabled(false);
+
+ g = addGroupBox(0,2,0,2,1,Qt::Horizontal,__tr2qs_ctx("ID3 tags' encoding","options"),true);
+
+ KviTalToolTip::add(g,__tr2qs_ctx("This allows you to select encoding of mp3 tags.","options"));
+
+ h = new KviTalHBox(g);
+
+ m_pTagsEncodingCombo = new QComboBox(false,h);
+ m_pTagsEncodingCombo->insertItem(__tr2qs_ctx("Use Language Encoding","options"));
+
+ int i = 0;
+ int iMatch = 0;
+
+ KviLocale::EncodingDescription * d = KviLocale::encodingDescription(i);
+ while(d->szName)
+ {
+ if(KviQString::equalCI(d->szName,KVI_OPTION_STRING(KviOption_stringMp3TagsEncoding)))iMatch = i + 1;
+ m_pTagsEncodingCombo->insertItem(d->szName);
+ i++;
+ d = KviLocale::encodingDescription(i);
+ }
+ m_pTagsEncodingCombo->setCurrentItem(iMatch);
+
+#ifdef COMPILE_ON_WINDOWS
+ g = addGroupBox(0,3,0,3,1,Qt::Horizontal,__tr2qs_ctx("Winamp messages ecoding","options"),true);
+
+ KviTalToolTip::add(g,__tr2qs_ctx("This allows you to select encoding of winamp messages.","options"));
+
+ h = new KviTalHBox(g);
+
+ m_pWinampEncodingCombo = new QComboBox(false,h);
+
+ m_pWinampEncodingCombo->insertItem(__tr2qs_ctx("Use Language Encoding","options"));
+ i = 0;
+ iMatch = 0;
+
+ d = KviLocale::encodingDescription(i);
+ while(d->szName)
+ {
+ if(KviQString::equalCI(d->szName,KVI_OPTION_STRING(KviOption_stringWinampTextEncoding)))iMatch = i + 1;
+ m_pWinampEncodingCombo->insertItem(d->szName);
+ i++;
+ d = KviLocale::encodingDescription(i);
+ }
+ m_pWinampEncodingCombo->setCurrentItem(iMatch);
+#endif
+}
+
+
+KviSoundGeneralOptionsWidget::~KviSoundGeneralOptionsWidget()
+{
+}
+
+void KviSoundGeneralOptionsWidget::soundTest()
+{
+}
+
+void KviSoundGeneralOptionsWidget::mediaTest()
+{
+}
+
+
+void KviSoundGeneralOptionsWidget::soundAutoDetect()
+{
+ KviModule * m = g_pModuleManager->getModule("snd");
+ if(!m)return;
+ m->ctrl("detectSoundSystem",0);
+ soundFillBox();
+}
+
+void KviSoundGeneralOptionsWidget::mediaAutoDetect()
+{
+ KviModule * m = g_pModuleManager->getModule("mediaplayer");
+ if(!m)return;
+ m->ctrl("detectMediaPlayer",0);
+ mediaFillBox();
+}
+
+
+void KviSoundGeneralOptionsWidget::soundFillBox()
+{
+
+ QStringList l;
+ QStringList::Iterator it;
+ int cnt;
+ int i;
+ KviModule * m = g_pModuleManager->getModule("snd");
+
+
+ if(!m)goto disable;
+
+
+ if(!m->ctrl("getAvailableSoundSystems",&l))goto disable;
+
+ m_pSoundSystemBox->clear();
+
+ for ( it = l.begin(); it != l.end(); ++it )
+ {
+ m_pSoundSystemBox->insertItem(*it);
+ }
+
+ cnt = m_pSoundSystemBox->count();
+
+ for(i=0;i<cnt;i++)
+ {
+ QString t = m_pSoundSystemBox->text(i);
+ if(KviQString::equalCI(t,KVI_OPTION_STRING(KviOption_stringSoundSystem)))
+ {
+ m_pSoundSystemBox->setCurrentItem(i);
+ break;
+ }
+ }
+
+ return;
+disable:
+ m_pSoundSystemBox->clear();
+ m_pSoundSystemBox->setEnabled(false);
+ m_pSoundTestButton->setEnabled(false);
+ m_pSoundAutoDetectButton->setEnabled(false);
+}
+
+void KviSoundGeneralOptionsWidget::mediaFillBox()
+{
+ QStringList l;
+ QStringList::Iterator it;
+ int cnt;
+ int i;
+ KviModule * m = g_pModuleManager->getModule("mediaplayer");
+
+ if(!m)goto disable;
+ if(!m->ctrl("getAvailableMediaPlayers",&l))goto disable;
+ m_pMediaPlayerBox->clear();
+ for ( it = l.begin(); it != l.end(); ++it )
+ {
+ m_pMediaPlayerBox->insertItem(*it);
+ }
+ cnt = m_pMediaPlayerBox->count();
+
+ for(i=0;i<cnt;i++)
+ {
+ QString t = m_pMediaPlayerBox->text(i);
+ if(KviQString::equalCI(t,KVI_OPTION_STRING(KviOption_stringPreferredMediaPlayer)))
+ {
+ m_pMediaPlayerBox->setCurrentItem(i);
+ break;
+ }
+ }
+
+ return;
+disable:
+ m_pMediaPlayerBox->clear();
+ m_pMediaPlayerBox->setEnabled(false);
+ m_pMediaTestButton->setEnabled(false);
+ m_pMediaAutoDetectButton->setEnabled(false);
+}
+
+
+void KviSoundGeneralOptionsWidget::commit()
+{
+ KviOptionsWidget::commit();
+ KVI_OPTION_STRING(KviOption_stringSoundSystem) = m_pSoundSystemBox->currentText();
+ KVI_OPTION_STRING(KviOption_stringPreferredMediaPlayer) = m_pMediaPlayerBox->currentText();
+
+ int idx = m_pTagsEncodingCombo->currentItem();
+ if(idx <= 0)
+ {
+ // guess from locale
+ KVI_OPTION_STRING(KviOption_stringMp3TagsEncoding) = "";
+ } else {
+ KVI_OPTION_STRING(KviOption_stringMp3TagsEncoding) = m_pTagsEncodingCombo->text(idx);
+ }
+
+
+#ifdef COMPILE_ON_WINDOWS
+ idx = m_pWinampEncodingCombo->currentItem();
+ if(idx <= 0)
+ {
+ // guess from locale
+ KVI_OPTION_STRING(KviOption_stringWinampTextEncoding) = "";
+ } else {
+ KVI_OPTION_STRING(KviOption_stringWinampTextEncoding) = m_pWinampEncodingCombo->text(idx);
+ }
+#endif
+}
+
+KviSoundsOptionsWidget::KviSoundsOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"sound_options_widget")
+{
+ createLayout(5,2);
+ addLabel(0,0,0,0,__tr2qs_ctx("New Query opened","options"));
+ addSoundSelector(1,0,1,0,"",KviOption_stringOnNewQueryOpenedSound);
+
+ addLabel(0,1,0,1,__tr2qs_ctx("New message in inactive query","options"));
+ addSoundSelector(1,1,1,1,"",KviOption_stringOnQueryMessageSound);
+
+ addLabel(0,2,0,2,__tr2qs_ctx("Highlighted message in inactive window","options"));
+ addSoundSelector(1,2,1,2,"",KviOption_stringOnHighlightedMessageSound);
+
+ addLabel(0,3,0,3,__tr2qs_ctx("Me have been kicked","options"));
+ addSoundSelector(1,3,1,3,"",KviOption_stringOnMeKickedSound);
+
+ addRowSpacer(0,4,1,4);
+
+}
+
+KviSoundsOptionsWidget::~KviSoundsOptionsWidget()
+{
+}
+
+#include "m_optw_sound.moc"
diff --git a/src/modules/options/optw_sound.h b/src/modules/options/optw_sound.h
new file mode 100644
index 00000000..37b3c0ed
--- /dev/null
+++ b/src/modules/options/optw_sound.h
@@ -0,0 +1,94 @@
+#ifndef _OPTW_SOUND_H_
+#define _OPTW_SOUND_H_
+//=============================================================================
+//
+// File : optw_sound.h
+// Creation date : Fri Sep 6 02:18:21 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_optionswidget.h"
+#include <qcombobox.h>
+#include <qpushbutton.h>
+
+#define KVI_OPTIONS_WIDGET_ICON_KviSoundOptionsWidget KVI_SMALLICON_SOUND
+#define KVI_OPTIONS_WIDGET_NAME_KviSoundOptionsWidget __tr2qs_no_lookup("Sound")
+#define KVI_OPTIONS_WIDGET_PARENT_KviSoundOptionsWidget KviGeneralOptOptionsWidget
+#define KVI_OPTIONS_WIDGET_CONTAINER_KviSoundOptionsWidget true
+
+
+class KviSoundOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviSoundOptionsWidget(QWidget * parent);
+ ~KviSoundOptionsWidget();
+};
+
+#define KVI_OPTIONS_WIDGET_ICON_KviSoundGeneralOptionsWidget KVI_SMALLICON_SOUND
+#define KVI_OPTIONS_WIDGET_NAME_KviSoundGeneralOptionsWidget __tr2qs_no_lookup("Sound System")
+#define KVI_OPTIONS_WIDGET_PARENT_KviSoundGeneralOptionsWidget KviSoundOptionsWidget
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviSoundGeneralOptionsWidget __tr2qs_no_lookup("sound,xmms,audio,play,amarok")
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviSoundGeneralOptionsWidget 70000
+
+class KviSoundGeneralOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviSoundGeneralOptionsWidget(QWidget * parent);
+ ~KviSoundGeneralOptionsWidget();
+protected:
+ QComboBox * m_pSoundSystemBox;
+ QPushButton * m_pSoundTestButton;
+ QPushButton * m_pSoundAutoDetectButton;
+ QComboBox * m_pMediaPlayerBox;
+ QPushButton * m_pMediaTestButton;
+ QPushButton * m_pMediaAutoDetectButton;
+
+#ifdef COMPILE_ON_WINDOWS
+ QComboBox * m_pWinampEncodingCombo;
+#endif
+ QComboBox * m_pTagsEncodingCombo;
+protected:
+ void soundFillBox();
+ void mediaFillBox();
+ virtual void commit();
+protected slots:
+ void soundTest();
+ void soundAutoDetect();
+ void mediaTest();
+ void mediaAutoDetect();
+};
+
+#define KVI_OPTIONS_WIDGET_ICON_KviSoundsOptionsWidget KVI_SMALLICON_SOUND
+#define KVI_OPTIONS_WIDGET_NAME_KviSoundsOptionsWidget __tr2qs_no_lookup("Sounds")
+#define KVI_OPTIONS_WIDGET_PARENT_KviSoundsOptionsWidget KviSoundOptionsWidget
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviSoundsOptionsWidget __tr2qs_no_lookup("sound,events")
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviSoundsOptionsWidget 80000
+
+class KviSoundsOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviSoundsOptionsWidget(QWidget * parent);
+ ~KviSoundsOptionsWidget();
+};
+
+#endif //_OPTW_SOUND_H_
diff --git a/src/modules/options/optw_ssl.cpp b/src/modules/options/optw_ssl.cpp
new file mode 100644
index 00000000..bf3ef46a
--- /dev/null
+++ b/src/modules/options/optw_ssl.cpp
@@ -0,0 +1,35 @@
+//
+// File : optw_ssl.cpp
+// Creation date : Thu Jul 20 20:52:30 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "optw_ssl.h"
+
+#include <qlayout.h>
+#include <kvi_tal_groupbox.h>
+
+#include "kvi_options.h"
+#include "kvi_locale.h"
+
+//#warning "Info tips"
+
+
+
+#include "m_optw_ssl.moc"
diff --git a/src/modules/options/optw_ssl.h b/src/modules/options/optw_ssl.h
new file mode 100644
index 00000000..9b7db6de
--- /dev/null
+++ b/src/modules/options/optw_ssl.h
@@ -0,0 +1,29 @@
+#ifndef _OPTW_SSL_H_
+#define _OPTW_SSL_H_
+//
+// File : optw_ssl.h
+// Creation date : Thu Jul 20 20:52:30 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+
+
+
+#endif //_OPTW_SSL_H_
diff --git a/src/modules/options/optw_taskbar.cpp b/src/modules/options/optw_taskbar.cpp
new file mode 100644
index 00000000..1b146d39
--- /dev/null
+++ b/src/modules/options/optw_taskbar.cpp
@@ -0,0 +1,255 @@
+//
+// File : optw_taskbar.cpp
+// Creation date : Wed Jan 16 04:30:39 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "optw_taskbar.h"
+
+#include "kvi_settings.h"
+#include "kvi_locale.h"
+#include "kvi_options.h"
+
+
+KviTaskBarOptionsWidget::KviTaskBarOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"taskbar_options_widget")
+{
+
+ createLayout(7,1);
+
+ addBoolSelector(0,0,0,0,__tr2qs_ctx("Use tree taskbar","options"),KviOption_boolUseTreeWindowListTaskBar);
+ addBoolSelector(0,1,0,1,__tr2qs_ctx("Sort windows by name","options"),KviOption_boolSortTaskBarItemsByName);
+ addBoolSelector(0,2,0,2,__tr2qs_ctx("Show window icons in taskbar","options"),KviOption_boolUseTaskBarIcons);
+ KviBoolSelector * b = addBoolSelector(0,3,0,3,__tr2qs_ctx("Show activity meter in taskbar","options"),KviOption_boolUseTaskBarActivityMeter);
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(b,__tr2qs_ctx("<center>This option enables the usage of the taskbar activity meter. " \
+ "Each window entry will have a small indicator of the activity that is going on in that window. " \
+ "The indicator is a small square that changes colors, dark colors mean low activity, " \
+ "while bright colors signal high activity. KVIrc also uses some heuristics to determine " \
+ "whether the activity is somewhat \"human\" or it is generated by automated entities (such as bots " \
+ "or IRC servers). \"Human\" activity causes the indicator to be shaded red while automated " \
+ "activity causes the indicator to be shaded blue.</center>","options"));
+#endif
+ addBoolSelector(0,4,0,4,__tr2qs_ctx("Show IRC context indicator in taskbar","options"),KviOption_boolUseTaskBarIrcContextIndicator);
+ addBoolSelector(0,5,0,5,__tr2qs_ctx("Enable window tooltips","options"),KviOption_boolShowTaskBarToolTips);
+ addRowSpacer(0,6,0,6);
+}
+
+
+KviTaskBarOptionsWidget::~KviTaskBarOptionsWidget()
+{
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviTreeTaskBarOptionsWidget::KviTreeTaskBarOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"treetaskbar_options_widget")
+{
+}
+
+KviTreeTaskBarOptionsWidget::~KviTreeTaskBarOptionsWidget()
+{
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviTreeTaskBarForegroundOptionsWidget::KviTreeTaskBarForegroundOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"treetaskbar_options_widget")
+{
+ createLayout(3,1);
+
+ KviTalGroupBox *g = addGroupBox(0,0,0,0,2,Qt::Horizontal,__tr2qs_ctx("Text/Alert Colors","options"));
+
+ addColorSelector(g,__tr2qs_ctx("Normal:","options"),KviOption_colorTreeTaskBarForeground);
+ addColorSelector(g,__tr2qs_ctx("Selected:","options"),KviOption_colorTreeTaskBarActiveForeground);
+ addColorSelector(g,__tr2qs_ctx("Alert Level 1:","options"),KviOption_colorTreeTaskBarHighlight1Foreground);
+ addColorSelector(g,__tr2qs_ctx("Alert Level 2:","options"),KviOption_colorTreeTaskBarHighlight2Foreground);
+ addColorSelector(g,__tr2qs_ctx("Alert Level 3:","options"),KviOption_colorTreeTaskBarHighlight3Foreground);
+ addColorSelector(g,__tr2qs_ctx("Alert Level 4:","options"),KviOption_colorTreeTaskBarHighlight4Foreground);
+ addColorSelector(g,__tr2qs_ctx("Alert Level 5:","options"),KviOption_colorTreeTaskBarHighlight5Foreground);
+
+ addColorSelector(0,1,0,1,__tr2qs_ctx("Progress bar color:","options"),KviOption_colorTreeTaskBarProgress);
+
+ addRowSpacer(0,2,0,2);
+}
+
+
+KviTreeTaskBarForegroundOptionsWidget::~KviTreeTaskBarForegroundOptionsWidget()
+{
+}
+
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviTreeTaskBarBackgroundOptionsWidget::KviTreeTaskBarBackgroundOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"treetaskbar_options_widget")
+{
+ createLayout(4,2);
+
+ KviTalGroupBox * g = addGroupBox(0,0,1,0,2,Qt::Horizontal,__tr2qs_ctx("Background Colors","options"));
+ addColorSelector(g,__tr2qs_ctx("Normal:","options"),KviOption_colorTreeTaskBarBackground);
+ addColorSelector(g,__tr2qs_ctx("Selected:","options"),KviOption_colorTreeTaskBarActiveBackground);
+
+ addPixmapSelector(0,1,1,1,__tr2qs_ctx("Background image:","options"),KviOption_pixmapTreeTaskBarBackground);
+
+ addLabel(0,2,0,2,__tr2qs_ctx("Horizontal align:","options"));
+ m_pHorizontalAlign=new QComboBox(this);
+ addWidgetToLayout(m_pHorizontalAlign,1,2,1,2);
+
+ addLabel(0,3,0,3,__tr2qs_ctx("Vertical align:","options"));
+ m_pVerticalAlign=new QComboBox(this);
+ addWidgetToLayout(m_pVerticalAlign,1,3,1,3);
+
+ m_pHorizontalAlign->insertItem(__tr2qs_ctx("Tile","options"));
+ m_pHorizontalAlign->insertItem(__tr2qs_ctx("Left","options"));
+ m_pHorizontalAlign->insertItem(__tr2qs_ctx("Right","options"));
+ m_pHorizontalAlign->insertItem(__tr2qs_ctx("Center","options"));
+
+ m_pVerticalAlign->insertItem(__tr2qs_ctx("Tile","options"));
+ m_pVerticalAlign->insertItem(__tr2qs_ctx("Top","options"));
+ m_pVerticalAlign->insertItem(__tr2qs_ctx("Bottom","options"));
+ m_pVerticalAlign->insertItem(__tr2qs_ctx("Center","options"));
+
+ switch( KVI_OPTION_UINT(KviOption_uintTreeTaskBarPixmapAlign) & Qt::AlignHorizontal_Mask)
+ {
+ case Qt::AlignLeft:
+ m_pHorizontalAlign->setCurrentItem(1);
+ break;
+ case Qt::AlignRight:
+ m_pHorizontalAlign->setCurrentItem(2);
+ break;
+ case Qt::AlignHCenter:
+ m_pHorizontalAlign->setCurrentItem(3);
+ break;
+ default:
+ m_pHorizontalAlign->setCurrentItem(0);
+ }
+
+ switch( KVI_OPTION_UINT(KviOption_uintTreeTaskBarPixmapAlign) & Qt::AlignVertical_Mask)
+ {
+ case Qt::AlignTop:
+ m_pVerticalAlign->setCurrentItem(1);
+ break;
+ case Qt::AlignBottom:
+ m_pVerticalAlign->setCurrentItem(2);
+ break;
+ case Qt::AlignVCenter:
+ m_pVerticalAlign->setCurrentItem(3);
+ break;
+ default:
+ m_pVerticalAlign->setCurrentItem(0);
+ }
+
+ layout()->setRowStretch(1,1);
+}
+
+
+KviTreeTaskBarBackgroundOptionsWidget::~KviTreeTaskBarBackgroundOptionsWidget()
+{
+}
+
+void KviTreeTaskBarBackgroundOptionsWidget::commit()
+{
+ KviOptionsWidget::commit();
+
+ int iFlags=0;
+ switch(m_pHorizontalAlign->currentItem())
+ {
+ case 1:
+ iFlags|=Qt::AlignLeft;
+ break;
+ case 2:
+ iFlags|=Qt::AlignRight;
+ break;
+ case 3:
+ iFlags|=Qt::AlignHCenter;
+ break;
+ }
+ switch(m_pVerticalAlign->currentItem())
+ {
+ case 1:
+ iFlags|=Qt::AlignTop;
+ break;
+ case 2:
+ iFlags|=Qt::AlignBottom;
+ break;
+ case 3:
+ iFlags|=Qt::AlignVCenter;
+ break;
+ }
+
+ KVI_OPTION_UINT(KviOption_uintTreeTaskBarPixmapAlign)=iFlags;
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+KviTreeTaskBarFeaturesOptionsWidget::KviTreeTaskBarFeaturesOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"treetaskbar_options_widget")
+{
+ createLayout(4,1);
+
+ addBoolSelector(0,0,1,0,__tr2qs_ctx("Show header","options"),KviOption_boolShowTreeTaskbarHeader);
+
+ addUIntSelector(0,1,0,1,__tr2qs_ctx("Minimum width:","options"),KviOption_uintTreeTaskBarMinimumWidth,24,1024,125);
+ addUIntSelector(0,2,0,2,__tr2qs_ctx("Maximum width:","options"),KviOption_uintTreeTaskBarMaximumWidth,24,9999,125);
+
+ addRowSpacer(0,3,0,3);
+}
+
+
+KviTreeTaskBarFeaturesOptionsWidget::~KviTreeTaskBarFeaturesOptionsWidget()
+{
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviClassicTaskBarOptionsWidget::KviClassicTaskBarOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"classictaskbar_options_widget")
+{
+ createLayout(8,1);
+ addFontSelector(0,0,0,0,__tr2qs_ctx("Font:","options"),KviOption_fontTaskbar);
+ KviTalGroupBox *g = addGroupBox(0,1,0,1,2,Qt::Horizontal,__tr2qs_ctx("Text/Alert Colors","options"));
+ addColorSelector(g,__tr2qs_ctx("Normal:","options"),KviOption_colorTaskBarNormalText);
+ addColorSelector(g,__tr2qs_ctx("Minimized:","options"), KviOption_colorTaskBarMinimizedText);
+ addColorSelector(g,__tr2qs_ctx("Alert Level 1:","options"),KviOption_colorTaskBarHighlight1Text);
+ addColorSelector(g,__tr2qs_ctx("Alert Level 2:","options"),KviOption_colorTaskBarHighlight2Text);
+ addColorSelector(g,__tr2qs_ctx("Alert Level 3:","options"),KviOption_colorTaskBarHighlight3Text);
+ addColorSelector(g,__tr2qs_ctx("Alert Level 4:","options"),KviOption_colorTaskBarHighlight4Text);
+ addColorSelector(g,__tr2qs_ctx("Alert Level 5:","options"),KviOption_colorTaskBarHighlight5Text);
+ addColorSelector(0,2,0,2,__tr2qs_ctx("Progress bar color:","options"),KviOption_colorTaskBarProgressBar);
+ addUIntSelector(0,3,0,3,__tr2qs_ctx("Minimum width of buttons:","options"),KviOption_uintTaskBarButtonMinWidth,24,9999,100);
+ //addUIntSelector(0,4,0,4,__tr2qs_ctx("Maximum number of rows:","options"),KviOption_uintTaskBarMaximumRows,1,16,2);
+ addBoolSelector(0,4,0,4,__tr2qs_ctx("Set maximum button width","options"),KviOption_boolClassicTaskBarSetMaximumButtonWidth);
+ addUIntSelector(0,5,0,5,__tr2qs_ctx("Maximum width of buttons:","options"),KviOption_uintClassicTaskBarMaximumButtonWidth,24,9999,100);
+ addBoolSelector(0,6,0,6,__tr2qs_ctx("Use flat buttons","options"),KviOption_boolUseFlatClassicTaskbarButtons);
+ addRowSpacer(0,7,0,7);
+}
+
+
+KviClassicTaskBarOptionsWidget::~KviClassicTaskBarOptionsWidget()
+{
+}
+
+#include "m_optw_taskbar.moc"
diff --git a/src/modules/options/optw_taskbar.h b/src/modules/options/optw_taskbar.h
new file mode 100644
index 00000000..66990c26
--- /dev/null
+++ b/src/modules/options/optw_taskbar.h
@@ -0,0 +1,125 @@
+#ifndef _OPTW_TASKBAR_H_
+#define _OPTW_TASKBAR_H_
+
+//===============================================================================
+//
+// File : optw_taskbar.h
+// Creation date : Wed Jan 16 04:30:41 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//===============================================================================
+
+
+#include "kvi_optionswidget.h"
+#include <qcombobox.h>
+
+#define KVI_OPTIONS_WIDGET_ICON_KviTaskBarOptionsWidget KVI_SMALLICON_CLASSICTASKBAR
+#define KVI_OPTIONS_WIDGET_NAME_KviTaskBarOptionsWidget __tr2qs_no_lookup("Taskbar")
+#define KVI_OPTIONS_WIDGET_MINIMAL_USER_EXPERIENCE_LEVEL_KviTaskBarOptionsWidget 2
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviTaskBarOptionsWidget __tr2qs_no_lookup("theme")
+#define KVI_OPTIONS_WIDGET_GROUP_KviTaskBarOptionsWidget "theme"
+
+class KviTaskBarOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviTaskBarOptionsWidget(QWidget * parent);
+ ~KviTaskBarOptionsWidget();
+};
+
+#define KVI_OPTIONS_WIDGET_ICON_KviTreeTaskBarOptionsWidget KVI_SMALLICON_TREETASKBAR
+#define KVI_OPTIONS_WIDGET_NAME_KviTreeTaskBarOptionsWidget __tr2qs_no_lookup("Tree Taskbar")
+#define KVI_OPTIONS_WIDGET_PARENT_KviTreeTaskBarOptionsWidget KviTaskBarOptionsWidget
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviTreeTaskBarOptionsWidget __tr2qs_no_lookup("theme")
+#define KVI_OPTIONS_WIDGET_GROUP_KviTreeTaskBarOptionsWidget "theme"
+#define KVI_OPTIONS_WIDGET_CONTAINER_KviTreeTaskBarOptionsWidget true
+
+class KviTreeTaskBarOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviTreeTaskBarOptionsWidget(QWidget * pParent);
+ ~KviTreeTaskBarOptionsWidget();
+};
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviTreeTaskBarForegroundOptionsWidget KVI_SMALLICON_TREETASKBAR
+#define KVI_OPTIONS_WIDGET_NAME_KviTreeTaskBarForegroundOptionsWidget __tr2qs_no_lookup("Foreground")
+#define KVI_OPTIONS_WIDGET_PARENT_KviTreeTaskBarForegroundOptionsWidget KviTreeTaskBarOptionsWidget
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviTreeTaskForegroundBarOptionsWidget __tr2qs_no_lookup("theme")
+#define KVI_OPTIONS_WIDGET_GROUP_KviTreeTaskBarForegroundOptionsWidget "theme"
+
+class KviTreeTaskBarForegroundOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviTreeTaskBarForegroundOptionsWidget(QWidget * parent);
+ ~KviTreeTaskBarForegroundOptionsWidget();
+};
+
+
+#define KVI_OPTIONS_WIDGET_ICON_KviTreeTaskBarBackgroundOptionsWidget KVI_SMALLICON_TREETASKBAR
+#define KVI_OPTIONS_WIDGET_NAME_KviTreeTaskBarBackgroundOptionsWidget __tr2qs_no_lookup("Background")
+#define KVI_OPTIONS_WIDGET_PARENT_KviTreeTaskBarBackgroundOptionsWidget KviTreeTaskBarOptionsWidget
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviTreeTaskBackgroundBarOptionsWidget __tr2qs_no_lookup("theme")
+#define KVI_OPTIONS_WIDGET_GROUP_KviTreeTaskBarBackgroundOptionsWidget "theme"
+
+class KviTreeTaskBarBackgroundOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+private:
+ QComboBox* m_pHorizontalAlign;
+ QComboBox* m_pVerticalAlign;
+public:
+ KviTreeTaskBarBackgroundOptionsWidget(QWidget * parent);
+ ~KviTreeTaskBarBackgroundOptionsWidget();
+
+ virtual void commit();
+};
+
+#define KVI_OPTIONS_WIDGET_ICON_KviTreeTaskBarFeaturesOptionsWidget KVI_SMALLICON_TREETASKBAR
+#define KVI_OPTIONS_WIDGET_NAME_KviTreeTaskBarFeaturesOptionsWidget __tr2qs_no_lookup("Features")
+#define KVI_OPTIONS_WIDGET_PARENT_KviTreeTaskBarFeaturesOptionsWidget KviTreeTaskBarOptionsWidget
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviTreeTaskFeaturesBarOptionsWidget __tr2qs_no_lookup("theme")
+#define KVI_OPTIONS_WIDGET_GROUP_KviTreeTaskBarFeaturesOptionsWidget "theme"
+
+class KviTreeTaskBarFeaturesOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviTreeTaskBarFeaturesOptionsWidget(QWidget * parent);
+ ~KviTreeTaskBarFeaturesOptionsWidget();
+};
+
+#define KVI_OPTIONS_WIDGET_ICON_KviClassicTaskBarOptionsWidget KVI_SMALLICON_CLASSICTASKBAR
+#define KVI_OPTIONS_WIDGET_NAME_KviClassicTaskBarOptionsWidget __tr2qs_no_lookup("Classic Taskbar")
+#define KVI_OPTIONS_WIDGET_PARENT_KviClassicTaskBarOptionsWidget KviTaskBarOptionsWidget
+#define KVI_OPTIONS_WIDGET_MINIMAL_USER_EXPERIENCE_LEVEL_KviClassicTaskBarOptionsWidget 2
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviClassicTaskBarOptionsWidget __tr2qs_no_lookup("theme")
+#define KVI_OPTIONS_WIDGET_GROUP_KviClassicTaskBarOptionsWidget "theme"
+
+class KviClassicTaskBarOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviClassicTaskBarOptionsWidget(QWidget * parent);
+ ~KviClassicTaskBarOptionsWidget();
+};
+
+#endif //_OPTW_TASKBAR_H_
diff --git a/src/modules/options/optw_textencoding.cpp b/src/modules/options/optw_textencoding.cpp
new file mode 100644
index 00000000..431cdad0
--- /dev/null
+++ b/src/modules/options/optw_textencoding.cpp
@@ -0,0 +1,139 @@
+//
+// File : optw_textencoding.cpp
+// Creation date : Sat Aug 11 2001 03:29:52 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include "optw_textencoding.h"
+
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_qstring.h"
+#include "kvi_app.h"
+#include "kvi_fileutils.h"
+
+#include <qdir.h>
+#include <qmessagebox.h>
+
+QString g_szPrevSettedLocale;
+
+KviTextEncodingOptionsWidget::KviTextEncodingOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"textencoding_options_widget")
+{
+ createLayout(5,2);
+
+ addLabel(0,0,0,0,__tr2qs_ctx("Default text encoding:","options"));
+
+ m_pTextEncodingCombo = new QComboBox(this);
+ addWidgetToLayout(m_pTextEncodingCombo,1,0,1,0);
+
+ m_pTextEncodingCombo->insertItem(__tr2qs_ctx("Use Language Encoding","options"));
+ int i = 0;
+ int iMatch = 0;
+ KviLocale::EncodingDescription * d = KviLocale::encodingDescription(i);
+ while(d->szName)
+ {
+ if(KviQString::equalCI(d->szName,KVI_OPTION_STRING(KviOption_stringDefaultTextEncoding)))iMatch = i + 1;
+ m_pTextEncodingCombo->insertItem(d->szName);
+ i++;
+ d = KviLocale::encodingDescription(i);
+ }
+
+ m_pTextEncodingCombo->setCurrentItem(iMatch);
+
+ addLabel(0,1,0,1,__tr2qs_ctx("Force language:","options"));
+
+ m_pForcedLocaleCombo = new QComboBox(this);
+
+ addWidgetToLayout(m_pForcedLocaleCombo,1,1,1,1);
+
+ QLabel * l = new QLabel(__tr2qs_ctx("<b>Note:</b> You need to restart KVirc to apply a language changing","options"),this);
+ addWidgetToLayout(l,0,2,1,2);
+
+ m_pForcedLocaleCombo->insertItem(__tr2qs_ctx("Automatic detection","options"));
+ m_pForcedLocaleCombo->insertItem(__tr2qs_ctx("en","options"));
+
+ QString szLangFile=QString("%1/.kvirc_force_locale").arg(QDir::homeDirPath());
+
+ bool bIsDefaultLocale = !KviFileUtils::fileExists(szLangFile);
+ //We Have setted locale, but not restarted kvirc
+ if(!g_szPrevSettedLocale.isEmpty())
+ {
+ m_szLanguage=g_szPrevSettedLocale;
+ } else {
+ m_szLanguage=KviLocale::localeName();
+ }
+
+ QString szLocaleDir;
+ g_pApp->getGlobalKvircDirectory(szLocaleDir,KviApp::Locale);
+
+ QStringList list=QDir(szLocaleDir).entryList("kvirc_*.mo",QDir::Files);
+
+ i = 0;
+ iMatch = 0;
+
+ for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) {
+ QString szTmp=*it;
+ szTmp.replace("kvirc_","");
+ szTmp.replace(".mo","");
+ m_pForcedLocaleCombo->insertItem(szTmp);
+ if(KviQString::equalCI(szTmp,m_szLanguage))
+ iMatch = i + 2;
+ i++;
+ }
+ if(bIsDefaultLocale)
+ m_pForcedLocaleCombo->setCurrentItem(0);
+ else if(KviQString::equalCI(m_szLanguage,"en"))
+ m_pForcedLocaleCombo->setCurrentItem(1);
+ else
+ m_pForcedLocaleCombo->setCurrentItem(iMatch);
+ addRowSpacer(0,3,1,3);
+}
+
+KviTextEncodingOptionsWidget::~KviTextEncodingOptionsWidget()
+{
+}
+
+void KviTextEncodingOptionsWidget::commit()
+{
+ int idx = m_pTextEncodingCombo->currentItem();
+ if(idx <= 0)
+ {
+ // guess from locale
+ KVI_OPTION_STRING(KviOption_stringDefaultTextEncoding) = "";
+ } else {
+ KVI_OPTION_STRING(KviOption_stringDefaultTextEncoding) = m_pTextEncodingCombo->text(idx);
+ }
+
+ idx=m_pForcedLocaleCombo->currentItem();
+ QString szLangFile=QString("%1/.kvirc_force_locale").arg(QDir::homeDirPath());
+ if(idx==0) {
+ if(KviFileUtils::fileExists(szLangFile))
+ KviFileUtils::removeFile(szLangFile);
+ } else {
+ g_szPrevSettedLocale=m_pForcedLocaleCombo->text(idx);
+ if(!KviFileUtils::writeFile(szLangFile,m_pForcedLocaleCombo->text(idx)))
+ {
+ QMessageBox::critical(this,"KVIrc",__tr2qs_ctx("Unable to write language information to","options")+"\n"+szLangFile,__tr2qs_ctx("Ok","options"));
+ }
+ }
+/* if(!KviQString::equalCI(m_pForcedLocaleCombo->text(idx),m_szLanguage))
+ QMessageBox::information(0,"KVIrc",__tr2qs_ctx("You need to restart KVirc to apply a language changing","options"),QMessageBox::Ok);*/
+}
+
+#include "m_optw_textencoding.moc"
diff --git a/src/modules/options/optw_textencoding.h b/src/modules/options/optw_textencoding.h
new file mode 100644
index 00000000..75bdeb75
--- /dev/null
+++ b/src/modules/options/optw_textencoding.h
@@ -0,0 +1,50 @@
+#ifndef _OPTW_TEXTENCODING_H_
+#define _OPTW_TEXTENCODING_H_
+
+//
+// File : optw_textencoding.h
+// Creation date : Sat Mar 02 2002 12:09:19 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+
+#include <qcombobox.h>
+
+#define KVI_OPTIONS_WIDGET_ICON_KviTextEncodingOptionsWidget KVI_SMALLICON_TEXTENCODING
+#define KVI_OPTIONS_WIDGET_NAME_KviTextEncodingOptionsWidget __tr2qs_no_lookup("Language")
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviTextEncodingOptionsWidget 50000
+#define KVI_OPTIONS_WIDGET_PARENT_KviTextEncodingOptionsWidget KviGeneralOptOptionsWidget
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviTextEncodingOptionsWidget __tr2qs_no_lookup("language,encoding,charset,codepage")
+
+class KviTextEncodingOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviTextEncodingOptionsWidget(QWidget * parent);
+ ~KviTextEncodingOptionsWidget();
+protected:
+ QString m_szLanguage;
+ QComboBox * m_pTextEncodingCombo;
+ QComboBox * m_pForcedLocaleCombo;
+public:
+ virtual void commit();
+};
+
+#endif //!_OPTW_TEXTENCODING_H_
diff --git a/src/modules/options/optw_texticons.cpp b/src/modules/options/optw_texticons.cpp
new file mode 100644
index 00000000..d1752c0f
--- /dev/null
+++ b/src/modules/options/optw_texticons.cpp
@@ -0,0 +1,244 @@
+//
+// File : optw_texticons.cpp
+// Creation date : Fri May 24 2002 00:16:13 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "optw_texticons.h"
+
+#include "kvi_iconmanager.h"
+#include "kvi_texticonmanager.h"
+#include "kvi_locale.h"
+#include "kvi_filedialog.h"
+
+#include <qlayout.h>
+#include <qcursor.h>
+#include "kvi_tal_hbox.h"
+
+
+KviTextIconEditor::KviTextIconEditor(QWidget * par,KviTextIcon * icon,KviTextIconTableItem* item)
+: KviTalHBox(par),m_pTableItem(item)
+{
+ m_pIconButton=new QToolButton(this);
+ m_pBrowseButton=new QToolButton(this);
+ m_pBrowseButton->setSizePolicy(QSizePolicy(QSizePolicy::Maximum,QSizePolicy::Maximum));
+ m_pBrowseButton->setText("...");
+ m_pIcon = icon;
+ m_pPopup = 0;
+ updateIcon();
+ connect(m_pIconButton,SIGNAL(clicked()),this,SLOT(doPopup()));
+ connect(m_pBrowseButton,SIGNAL(clicked()),this,SLOT(chooseFromFile()));
+}
+
+
+KviTextIconEditor::~KviTextIconEditor()
+{
+
+}
+
+void KviTextIconEditor::doPopup()
+{
+ if(!m_pPopup)
+ {
+ m_pPopup = new KviTalPopupMenu(this);
+ KviIconWidget * iw = new KviIconWidget(m_pPopup);
+ connect(iw,SIGNAL(selected(int)),this,SLOT(iconSelected(int)));
+ m_pPopup->insertItem(iw);
+ }
+ m_pPopup->popup(QCursor::pos());
+}
+
+void KviTextIconEditor::iconSelected(int id)
+{
+ m_pIcon->setId(id);
+ updateIcon();
+}
+
+void KviTextIconEditor::chooseFromFile()
+{
+ QString szFile;
+ KviFileDialog::askForOpenFileName(szFile,"Choose icon filename",QString::null,"*.png","options");
+ if(!szFile.isEmpty())
+ {
+ if(g_pIconManager->getPixmap(szFile))
+ {
+ m_pIcon->setFilename(szFile);
+// debug("%s %s %i |%s| %p",__FILE__,__FUNCTION__,__LINE__,m_pIcon->filename().utf8().data(),m_pIcon);
+ updateIcon();
+ }
+ }
+}
+
+void KviTextIconEditor::updateIcon()
+{
+ if(m_pIcon)
+ {
+ QPixmap* pix=m_pIcon->pixmap();
+ if(pix)
+ m_pIconButton->setPixmap(*pix);
+ }
+}
+
+KviTextIconTableItem::KviTextIconTableItem(KviTalTable * t,KviTextIcon * icon)
+: KviTalTableItem(t,KviTalTableItem::WhenCurrent,QString::null)
+{
+ if(icon)
+ m_pIcon=icon;
+ else
+ m_pIcon=new KviTextIcon(0);
+ QPixmap* pix=m_pIcon->pixmap();
+ if(pix)
+ setPixmap(*pix);
+}
+
+KviTextIconTableItem::~KviTextIconTableItem()
+{
+ delete m_pIcon;
+}
+
+void KviTextIconTableItem::setId(int id)
+{
+ m_pIcon->setId(id);
+ QPixmap* pix=m_pIcon->pixmap();
+ if(pix)
+ setPixmap(*pix);
+}
+
+QWidget * KviTextIconTableItem::createEditor() const
+{
+ return new KviTextIconEditor(table()->viewport(),m_pIcon,(KviTextIconTableItem*)this);
+}
+
+
+void KviTextIconTableItem::setContentFromEditor(QWidget * w)
+{
+ if(w->inherits("KviTextIconEditor"))
+ {
+ QPixmap* pix=m_pIcon->pixmap();
+ if(pix)
+ setPixmap(*pix);
+ }
+}
+
+KviTextIconsOptionsWidget::KviTextIconsOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"texticons_options_widget")
+{
+ createLayout(2,2);
+
+ KviPointerHashTableIterator<QString,KviTextIcon> it(*(g_pTextIconManager->textIconDict()));
+
+ m_pTable = new KviTalTable(g_pTextIconManager->textIconDict()->count(),2,this);
+
+#ifdef COMPILE_INFO_TIPS
+ mergeTip(m_pTable->viewport(),__tr2qs_ctx("This table contains the text icon associations.<br>" \
+ "KVirc will use them to display the CTRL+I escape sequences and eventually the " \
+ "emoticons.","options"));
+#endif
+
+ int idx = 0;
+ while(KviTextIcon * i = it.current())
+ {
+ m_pTable->setText(idx,0,it.currentKey());
+ m_pTable->setItem(idx,1,new KviTextIconTableItem(m_pTable,new KviTextIcon(i)));
+ ++idx;
+ ++it;
+ }
+
+ layout()->addMultiCellWidget(m_pTable,0,0,0,1);
+
+ m_pAdd = new QPushButton(__tr2qs_ctx("Add","options"),this);
+ layout()->addWidget(m_pAdd,1,0);
+ connect(m_pAdd,SIGNAL(clicked()),this,SLOT(addClicked()));
+
+ m_pDel = new QPushButton(__tr2qs_ctx("Delete","options"),this);
+ layout()->addWidget(m_pDel,1,1);
+ connect(m_pDel,SIGNAL(clicked()),this,SLOT(delClicked()));
+
+ m_pDel->setEnabled(false);
+
+ connect(m_pTable,SIGNAL(selectionChanged()),this,SLOT(selectionChanged()));
+}
+
+KviTextIconsOptionsWidget::~KviTextIconsOptionsWidget()
+{
+}
+
+void KviTextIconsOptionsWidget::selectionChanged()
+{
+ int i = m_pTable->currentRow();
+ m_pDel->setEnabled(i >= 0 && i < m_pTable->numRows());
+}
+
+void KviTextIconsOptionsWidget::addClicked()
+{
+ m_pTable->setNumRows(m_pTable->numRows() + 1);
+ m_pTable->setText(m_pTable->numRows() - 1,0,__tr2qs_ctx("unnamed","options"));
+ m_pTable->setItem(m_pTable->numRows() - 1,1,new KviTextIconTableItem(m_pTable,0));
+ m_pDel->setEnabled(true);
+}
+
+void KviTextIconsOptionsWidget::delClicked()
+{
+ int i = m_pTable->currentRow();
+
+ if((i > -1) && (i < m_pTable->numRows()))
+ {
+ // remove row i
+ m_pTable->clearCell(i,0);
+ m_pTable->clearCell(i,1);
+ m_pTable->clearCell(i,2);
+
+ for(;i < (m_pTable->numRows() - 1);i++)
+ {
+ m_pTable->swapRows(i,i+1);
+ }
+
+ m_pTable->setNumRows(m_pTable->numRows() - 1);
+ if(m_pTable->numRows() == 0)m_pDel->setEnabled(false);
+ }
+}
+
+void KviTextIconsOptionsWidget::commit()
+{
+
+ KviOptionsWidget::commit();
+ g_pTextIconManager->clear();
+ int n = m_pTable->numRows();
+ for(int i=0;i < n;i++)
+ {
+ QString szVal = m_pTable->text(i,0);
+ if(!szVal.isEmpty())
+ {
+ KviTextIconTableItem * it = (KviTextIconTableItem *)m_pTable->item(i,1);
+ if(it)
+ {
+ g_pTextIconManager->insert(szVal,*(it->icon()));
+ }
+ }
+ }
+ g_pTextIconManager->checkDefaultAssociations();
+
+ for(int i=0; i<n; i++)
+ for (int j=0; j<m_pTable->numCols(); j++)
+ if (m_pTable->item(i,j))
+ m_pTable->clearCell(i,j);
+
+}
+
+#include "m_optw_texticons.moc"
diff --git a/src/modules/options/optw_texticons.h b/src/modules/options/optw_texticons.h
new file mode 100644
index 00000000..652c7da9
--- /dev/null
+++ b/src/modules/options/optw_texticons.h
@@ -0,0 +1,105 @@
+#ifndef _OPTW_TEXTICONS_H_
+#define _OPTW_TEXTICONS_H_
+
+//
+// File : optw_texticons.h
+// Creation date : Fri May 24 2002 00:14:02 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+#include "kvi_texticonmanager.h"
+#define KVI_OPTIONS_WIDGET_ICON_KviTextIconsOptionsWidget KVI_SMALLICON_BIGGRIN
+#define KVI_OPTIONS_WIDGET_NAME_KviTextIconsOptionsWidget __tr2qs_no_lookup("Text icons")
+#define KVI_OPTIONS_WIDGET_PARENT_KviTextIconsOptionsWidget KviToolsOptionsWidget
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviTextIconsOptionsWidget __tr2qs_no_lookup("smileys,emoticons")
+
+
+
+#include <qtoolbutton.h>
+#include "kvi_tal_popupmenu.h"
+#include "kvi_tal_hbox.h"
+
+#ifdef COMPILE_USE_QT4
+#include <q3table.h>
+#define KviTalTable Q3Table
+#define KviTalTableItem Q3TableItem
+#else
+#include <qtable.h>
+#define KviTalTable QTable
+#define KviTalTableItem QTableItem
+#endif
+
+class KviTextIconTableItem;
+
+class KviTextIconEditor : public KviTalHBox
+{
+ Q_OBJECT
+public:
+ KviTextIconEditor(QWidget * par,KviTextIcon * icon,KviTextIconTableItem* item);
+ ~KviTextIconEditor();
+protected:
+ KviTextIconTableItem *m_pTableItem;
+ KviTextIcon *m_pIcon;
+ KviTalPopupMenu *m_pPopup;
+ QToolButton *m_pIconButton;
+ QToolButton *m_pBrowseButton;
+public:
+ void updateIcon();
+ KviTextIcon* icon() { return m_pIcon; };
+protected slots:
+ void iconSelected(int);
+ void doPopup();
+ void chooseFromFile();
+};
+
+class KviTextIconTableItem : public KviTalTableItem
+{
+ friend class KviTextIconsOptionsWidget;
+public:
+ KviTextIconTableItem(KviTalTable * t,KviTextIcon * icon);
+ ~KviTextIconTableItem();
+protected:
+ KviTextIcon * m_pIcon;
+public:
+ KviTextIcon * icon() { return m_pIcon; };
+ void setId(int id);
+ virtual QWidget * createEditor() const;
+ virtual void setContentFromEditor(QWidget * w);
+};
+
+class KviTextIconsOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviTextIconsOptionsWidget(QWidget * parent);
+ ~KviTextIconsOptionsWidget();
+protected:
+ KviTalTable * m_pTable;
+ QPushButton * m_pAdd;
+ QPushButton * m_pDel;
+public:
+ virtual void commit();
+protected slots:
+ void selectionChanged();
+ void addClicked();
+ void delClicked();
+};
+
+#endif //!_OPTW_TEXTICONS_H_
diff --git a/src/modules/options/optw_theme.cpp b/src/modules/options/optw_theme.cpp
new file mode 100644
index 00000000..e3afeba4
--- /dev/null
+++ b/src/modules/options/optw_theme.cpp
@@ -0,0 +1,26 @@
+//=============================================================================
+//
+// File : optw_theme.cpp
+// Creation date : Sun May 25 2003 18:00:00 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "m_optw_theme.moc"
diff --git a/src/modules/options/optw_theme.h b/src/modules/options/optw_theme.h
new file mode 100644
index 00000000..ee8945c2
--- /dev/null
+++ b/src/modules/options/optw_theme.h
@@ -0,0 +1,30 @@
+#ifndef _OPTW_THEME_H_
+#define _OPTW_THEME_H_
+
+//=============================================================================
+//
+// File : optw_theme.h
+// Creation date : Sun May 25 2003 18:03:11 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+
+#endif //!_OPTW_THEME_H_
diff --git a/src/modules/options/optw_tools.cpp b/src/modules/options/optw_tools.cpp
new file mode 100644
index 00000000..b46b9a01
--- /dev/null
+++ b/src/modules/options/optw_tools.cpp
@@ -0,0 +1,50 @@
+//=============================================================================
+//
+// File : optw_tools.cpp
+// Creation date : Wed Ott 19 16:15:16 2005 GMT by Grifisx & Noldor
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2005 Grifisx & Noldor
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "optw_tools.h"
+
+#include <qlayout.h>
+
+#include "kvi_settings.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+
+KviToolsOptionsWidget::KviToolsOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"tools_options_widget")
+{
+
+ createLayout(1,1);
+
+ QLabel * l;
+ l = addLabel(0,0,0,0,__tr2qs_ctx("This section contains irc tools<br>"\
+ "<p>like<b> away, lag and logging system. </b> " \
+ "</p>","options"));
+
+}
+
+KviToolsOptionsWidget::~KviToolsOptionsWidget()
+{
+}
+
+#include "m_optw_tools.moc"
diff --git a/src/modules/options/optw_tools.h b/src/modules/options/optw_tools.h
new file mode 100644
index 00000000..9ebf35e8
--- /dev/null
+++ b/src/modules/options/optw_tools.h
@@ -0,0 +1,46 @@
+#ifndef _OPTW_TOOLS_H_
+#define _OPTW_TOOLS_H_
+
+//=============================================================================
+//
+// File : optw_tools.h
+//
+// This file is part of the KVirc irc client distribution
+// Creation date : Wed Ott 19 16:15:16 2005 GMT by Grifisx & Noldor
+//
+// Copyright (C) 2005 Grifisx & Noldor
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_optionswidget.h"
+#include "kvi_selectors.h"
+
+#define KVI_OPTIONS_WIDGET_ICON_KviToolsOptionsWidget KVI_SMALLICON_ADDONS
+#define KVI_OPTIONS_WIDGET_NAME_KviToolsOptionsWidget __tr2qs_no_lookup("Tools")
+#define KVI_OPTIONS_WIDGET_PARENT_KviToolsOptionsWidget KviIrcOptionsWidget
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviToolsOptionsWidget 50000
+#define KVI_OPTIONS_WIDGET_NOTCONTAINED_KviToolsOptionsWidget true
+
+class KviToolsOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviToolsOptionsWidget(QWidget * parent);
+ ~KviToolsOptionsWidget();
+};
+
+#endif //!_OPTW_FOLDERS_H_
diff --git a/src/modules/options/optw_topiclabel.cpp b/src/modules/options/optw_topiclabel.cpp
new file mode 100644
index 00000000..71bc2b64
--- /dev/null
+++ b/src/modules/options/optw_topiclabel.cpp
@@ -0,0 +1,43 @@
+//
+// File : optw_topiclabel.cpp
+// Creation date : Mon Sep 24 02:44:55 CEST 2001 by Krzysztof Godlewski
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "optw_topiclabel.h"
+
+KviTopicLabelLookOptionsWidget::KviTopicLabelLookOptionsWidget(QWidget *p):KviOptionsWidget(p, "topic_label_look_options_widget")
+{
+ createLayout(4, 1);
+
+ addFontSelector(0, 0, 0, 0, __tr2qs_ctx("Font","options"), KviOption_fontLabel);
+ addColorSelector(0, 1, 0, 1, __tr2qs_ctx("Foreground color","options"), KviOption_colorLabelForeground);
+ addColorSelector(0, 2, 0, 2, __tr2qs_ctx("Background color","options"), KviOption_colorLabelBackground);
+ addPixmapSelector(0, 3, 0, 3, __tr2qs_ctx("Background image","options"), KviOption_pixmapLabelBackground);
+
+ layout()->setRowStretch(3, 1);
+}
+
+KviTopicLabelLookOptionsWidget::~KviTopicLabelLookOptionsWidget()
+{
+}
+
+#include "m_optw_topiclabel.moc"
diff --git a/src/modules/options/optw_topiclabel.h b/src/modules/options/optw_topiclabel.h
new file mode 100644
index 00000000..1185fae6
--- /dev/null
+++ b/src/modules/options/optw_topiclabel.h
@@ -0,0 +1,41 @@
+//
+// File : optw_topiclabel.cpp
+// Creation date : Mon Sep 24 02:44:55 CEST 2001 by Krzysztof Godlewski
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#ifndef OPTW_TOPICLABEL_H
+#define OPTW_TOPICLABEL_H
+
+#include "kvi_optionswidget.h"
+
+#define KVI_OPTIONS_WIDGET_ICON_KviTopicLabelLookOptionsWidget KVI_SMALLICON_TOPIC
+#define KVI_OPTIONS_WIDGET_NAME_KviTopicLabelLookOptionsWidget __tr2qs_no_lookup("Labels")
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviTopicLabelLookOptionsWidget __tr2qs_no_lookup("theme,topic")
+#define KVI_OPTIONS_WIDGET_GROUP_KviTopicLabelLookOptionsWidget "theme"
+
+class KviTopicLabelLookOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviTopicLabelLookOptionsWidget(QWidget *);
+ ~KviTopicLabelLookOptionsWidget();
+};
+
+#endif /* !OPTW_TOPICLABEL_H */
diff --git a/src/modules/options/optw_transport.cpp b/src/modules/options/optw_transport.cpp
new file mode 100644
index 00000000..d7cf3971
--- /dev/null
+++ b/src/modules/options/optw_transport.cpp
@@ -0,0 +1,33 @@
+//
+// File : optw_transport.cpp
+// Creation date : Mon Nov 13 2000 14:14:22 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "optw_transport.h"
+
+#include <kvi_tal_groupbox.h>
+
+#include "kvi_options.h"
+#include "kvi_locale.h"
+
+
+
+
+#include "m_optw_transport.moc"
diff --git a/src/modules/options/optw_transport.h b/src/modules/options/optw_transport.h
new file mode 100644
index 00000000..971c215f
--- /dev/null
+++ b/src/modules/options/optw_transport.h
@@ -0,0 +1,29 @@
+#ifndef _OPTW_TRANSPORT_H_
+#define _OPTW_TRANSPORT_H_
+
+//
+// File : optw_transport.h
+// Creation date : Mon Nov 13 2000 14:13:11 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+#include "kvi_tal_listview.h"
+
+#endif //!_OPTW_TRANSPORT_H_
diff --git a/src/modules/options/optw_tray.cpp b/src/modules/options/optw_tray.cpp
new file mode 100644
index 00000000..e988ba54
--- /dev/null
+++ b/src/modules/options/optw_tray.cpp
@@ -0,0 +1,91 @@
+//
+// File : optw_tray.cpp
+// Creation date : Mon 14 Aug 2006 by Alexey Uzhva
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "optw_tray.h"
+
+#include <qlayout.h>
+#include "kvi_tal_tooltip.h"
+
+#include "kvi_options.h"
+#include "kvi_locale.h"
+
+//#warning "Info tips"
+
+
+KviTrayOptionsWidget::KviTrayOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"tray_options_widget")
+{
+ createLayout(7,1);
+
+ m_pEnable = addBoolSelector(0,0,0,0, __tr2qs_ctx("Enable tray icon","options"), KviOption_boolShowDockExtension);
+ m_pCloseInTray = addBoolSelector(0,1,0,1,__tr2qs_ctx("Close in tray","options"),KviOption_boolCloseInTray);
+ m_pMinimizeInTray = addBoolSelector(0,2,0,2,__tr2qs_ctx("Minimize in tray","options"),KviOption_boolMinimizeInTray);
+
+ m_pEnableFlashing = addBoolSelector(0,3,0,3,__tr2qs_ctx("Enable tray icon flashing","options"),KviOption_boolEnableTrayIconFlashing);
+ m_pLevelBasedNotify = addBoolSelector(0,4,0,4,__tr2qs_ctx("Enable level-based message notification (not a message-type based)","options"),KviOption_boolUseLevelBasedTrayNotification);
+
+ m_pLevelsGroup = addGroupBox(0,5,0,5,1,Qt::Horizontal,__tr2qs_ctx("Select message levels to notify","options"));
+
+ addUIntSelector(m_pLevelsGroup,__tr2qs_ctx("Minimum level for low-priority messages","options"),
+ KviOption_uintMinTrayLowLevelMessage,
+ 1,5,1,true);
+
+ addUIntSelector(m_pLevelsGroup,__tr2qs_ctx("Minimum level for high-priority message","options"),
+ KviOption_uintMinTrayHighLevelMessage,
+ 1,5,4,true);
+
+ addRowSpacer(0,6,0,6);
+
+ connect(m_pEnable,SIGNAL(toggled(bool)),this,SLOT(setEnabled(bool)));
+ connect(m_pLevelBasedNotify,SIGNAL(toggled(bool)),this,SLOT(setEnabled(bool)));
+ setEnabled(true);
+}
+
+KviTrayOptionsWidget::~KviTrayOptionsWidget()
+{
+}
+
+void KviTrayOptionsWidget::setEnabled(bool bEnabled)
+{
+ if(m_pEnable->isChecked())
+ {
+ m_pEnableFlashing->setEnabled(true);
+ m_pLevelBasedNotify->setEnabled(true);
+ m_pCloseInTray->setEnabled(true);
+ m_pMinimizeInTray->setEnabled(true);
+ if(m_pLevelBasedNotify->isChecked())
+ m_pLevelsGroup->setEnabled(true);
+ else
+ m_pLevelsGroup->setEnabled(false);
+
+ } else {
+ m_pCloseInTray->setEnabled(false);
+ m_pMinimizeInTray->setEnabled(false);
+ m_pEnableFlashing->setEnabled(false);
+ m_pLevelBasedNotify->setEnabled(false);
+ m_pLevelsGroup->setEnabled(false);
+ }
+}
+
+
+#include "m_optw_tray.moc"
diff --git a/src/modules/options/optw_tray.h b/src/modules/options/optw_tray.h
new file mode 100644
index 00000000..5be68f36
--- /dev/null
+++ b/src/modules/options/optw_tray.h
@@ -0,0 +1,50 @@
+#ifndef _OPTW_TRAY_H_
+#define _OPTW_TRAY_H_
+//
+// File : optw_tray.h
+// Creation date : Mon 14 Aug 2006 by Alexey Uzhva
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+#include <qcombobox.h>
+
+#define KVI_OPTIONS_WIDGET_ICON_KviTrayOptionsWidget KVI_SMALLICON_DOCKWIDGET
+#define KVI_OPTIONS_WIDGET_NAME_KviTrayOptionsWidget __tr2qs_no_lookup("Tray icon")
+#define KVI_OPTIONS_WIDGET_PARENT_KviTrayOptionsWidget KviInterfaceFeaturesOptionsWidget
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviTrayOptionsWidget __tr2qs_no_lookup("tray,dockwidget")
+
+class KviTrayOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviTrayOptionsWidget(QWidget * parent);
+ ~KviTrayOptionsWidget();
+protected:
+ KviBoolSelector * m_pEnable;
+ KviBoolSelector * m_pEnableFlashing;
+ KviBoolSelector * m_pLevelBasedNotify;
+ KviBoolSelector * m_pMinimizeInTray;
+ KviBoolSelector * m_pCloseInTray;
+ KviTalGroupBox * m_pLevelsGroup;
+protected slots:
+ void setEnabled(bool);
+};
+
+#endif //_OPTW_TRAY_H_
diff --git a/src/modules/options/optw_uparser.cpp b/src/modules/options/optw_uparser.cpp
new file mode 100644
index 00000000..01036fb6
--- /dev/null
+++ b/src/modules/options/optw_uparser.cpp
@@ -0,0 +1,62 @@
+//
+// File : optw_uparser.cpp
+// Creation date : Sat Oct 27 16:32:26 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "optw_uparser.h"
+
+#include <qlayout.h>
+
+#include "kvi_options.h"
+#include "kvi_locale.h"
+
+#include <qlabel.h>
+
+
+KviUParserOptionsWidget::KviUParserOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"uparser_options_widget")
+{
+ createLayout(11,1);
+
+ addBoolSelector(0,0,0,0,__tr2qs_ctx("Disable parser warnings","options"),KviOption_boolAvoidParserWarnings);
+ addBoolSelector(0,1,0,1,__tr2qs_ctx("Disable broken event handlers","options"),KviOption_boolDisableBrokenEventHandlers);
+ addBoolSelector(0,2,0,2,__tr2qs_ctx("Kill broken timers","options"),KviOption_boolKillBrokenTimers);
+ addBoolSelector(0,3,0,3,__tr2qs_ctx("Send unknown commands as /RAW","options"),KviOption_boolSendUnknownCommandsAsRaw);
+
+ addSeparator(0,4,0,4);
+
+ addBoolSelector(0,5,0,5,__tr2qs_ctx("Automatically unload unused modules","options"),KviOption_boolCleanupUnusedModules);
+ addBoolSelector(0,6,0,6,__tr2qs_ctx("Ignore module versions (dangerous)","options"),KviOption_boolIgnoreModuleVersions);
+
+ addSeparator(0,7,0,7);
+
+ addBoolSelector(0,8,0,8,__tr2qs_ctx("Relay errors and warnings to debug window","options"),KviOption_boolScriptErrorsToDebugWindow);
+ addBoolSelector(0,9,0,9,__tr2qs_ctx("Create minimized debug window","options"),KviOption_boolShowMinimizedDebugWindow);
+
+ addRowSpacer(0,10,0,10);
+}
+
+KviUParserOptionsWidget::~KviUParserOptionsWidget()
+{
+}
+
+
+#include "m_optw_uparser.moc"
diff --git a/src/modules/options/optw_uparser.h b/src/modules/options/optw_uparser.h
new file mode 100644
index 00000000..1e35fe92
--- /dev/null
+++ b/src/modules/options/optw_uparser.h
@@ -0,0 +1,40 @@
+#ifndef _OPTW_UPARSER_H_
+#define _OPTW_UPARSER_H_
+//
+// File : optw_uparser.h
+// Creation date : Sat Oct 27 16:32:27 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+
+#define KVI_OPTIONS_WIDGET_ICON_KviUParserOptionsWidget KVI_SMALLICON_PARSERWARNING
+#define KVI_OPTIONS_WIDGET_NAME_KviUParserOptionsWidget __tr2qs_no_lookup("Scripting Engine")
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviUParserOptionsWidget __tr2qs_no_lookup("scripting,kvs,debug")
+#define KVI_OPTIONS_WIDGET_PARENT_KviUParserOptionsWidget KviGeneralOptOptionsWidget
+
+class KviUParserOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviUParserOptionsWidget(QWidget * parent);
+ ~KviUParserOptionsWidget();
+};
+
+#endif //_OPTW_UPARSER_H_
diff --git a/src/modules/options/optw_urlhandlers.cpp b/src/modules/options/optw_urlhandlers.cpp
new file mode 100644
index 00000000..48ea2297
--- /dev/null
+++ b/src/modules/options/optw_urlhandlers.cpp
@@ -0,0 +1,127 @@
+#ifndef _OPTW_URLHANDLERS_CPP_
+#define _OPTW_URLHANDLERS_CPP_
+//
+// File : optw_urlhandlers.cpp
+// Creation date : Fri Aug 23 02:57:40 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "optw_urlhandlers.h"
+
+#include <qlayout.h>
+
+#include "kvi_options.h"
+#include "kvi_locale.h"
+
+#include <qlabel.h>
+
+
+KviUrlHandlersOptionsWidget::KviUrlHandlersOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"urlhandlers_options_widget")
+{
+#ifdef COMPILE_ON_WINDOWS
+ #define START_ROW 1
+#else
+ #define START_ROW 0
+#endif
+
+ createLayout(START_ROW+7,1);
+
+#ifdef COMPILE_ON_WINDOWS
+ KviBoolSelector *b = addBoolSelector(0,0,0,0,__tr2qs_ctx("Use system URL handlers","options"),KviOption_boolUseSystemUrlHandlers);
+#endif
+
+ m_pHttpHandler=addStringSelector(0,START_ROW+0,0,START_ROW+0,__tr2qs_ctx("<b>http://</b> handler command:","options"),KviOption_stringUrlHttpCommand);
+ m_pHttpsHandler=addStringSelector(0,START_ROW+1,0,START_ROW+1,__tr2qs_ctx("<b>https://</b> handler command:","options"),KviOption_stringUrlHttpsCommand);
+ m_pFtpHandler=addStringSelector(0,START_ROW+2,0,START_ROW+2,__tr2qs_ctx("<b>ftp://</b> handler command:","options"),KviOption_stringUrlFtpCommand);
+ m_pMailtoHandler=addStringSelector(0,START_ROW+3,0,START_ROW+3,__tr2qs_ctx("<b>mailto:</b> handler command:","options"),KviOption_stringUrlMailtoCommand);
+ m_pFileHandler=addStringSelector(0,START_ROW+4,0,START_ROW+4,__tr2qs_ctx("<b>file://</b> handler command:","options"),KviOption_stringUrlFileCommand);
+ m_pOtherHandler=addStringSelector(0,START_ROW+5,0,START_ROW+5,__tr2qs_ctx("Unknown protocol handler command:","options"),KviOption_stringUrlUnknownCommand);
+
+#ifdef COMPILE_ON_WINDOWS
+ m_pHttpHandler->setEnabled(!KVI_OPTION_BOOL(KviOption_boolUseSystemUrlHandlers));
+ m_pHttpsHandler->setEnabled(!KVI_OPTION_BOOL(KviOption_boolUseSystemUrlHandlers));
+ m_pFtpHandler->setEnabled(!KVI_OPTION_BOOL(KviOption_boolUseSystemUrlHandlers));
+ m_pFileHandler->setEnabled(!KVI_OPTION_BOOL(KviOption_boolUseSystemUrlHandlers));
+ m_pMailtoHandler->setEnabled(!KVI_OPTION_BOOL(KviOption_boolUseSystemUrlHandlers));
+ m_pOtherHandler->setEnabled(!KVI_OPTION_BOOL(KviOption_boolUseSystemUrlHandlers));
+
+ connect(b,SIGNAL(toggled(bool)),this,SLOT(toggleEditors(bool)));
+
+#endif
+
+ addRowSpacer(0,START_ROW+6,0,START_ROW+6);
+}
+
+KviUrlHandlersOptionsWidget::~KviUrlHandlersOptionsWidget()
+{
+}
+
+void KviUrlHandlersOptionsWidget::toggleEditors(bool bToggled)
+{
+ m_pHttpHandler->setEnabled(!bToggled);
+ m_pHttpsHandler->setEnabled(!bToggled);
+ m_pFtpHandler->setEnabled(!bToggled);
+ m_pFileHandler->setEnabled(!bToggled);
+ m_pMailtoHandler->setEnabled(!bToggled);
+ m_pOtherHandler->setEnabled(!bToggled);
+}
+
+void KviUrlHandlersOptionsWidget::commit()
+{
+ KviOptionsWidget::commit();
+
+#ifdef COMPILE_ON_WINDOWS
+ KVI_OPTION_STRING(KviOption_stringUrlHttpCommand).replace("\\\\","@MAGIC@","options");
+ KVI_OPTION_STRING(KviOption_stringUrlHttpCommand).replace("\\","\\\\","options");
+ KVI_OPTION_STRING(KviOption_stringUrlHttpCommand).replace("@MAGIC@","\\\\","options");
+
+ KVI_OPTION_STRING(KviOption_stringUrlHttpsCommand).replace("\\\\","@MAGIC@","options");
+ KVI_OPTION_STRING(KviOption_stringUrlHttpsCommand).replace("\\","\\\\","options");
+ KVI_OPTION_STRING(KviOption_stringUrlHttpsCommand).replace("@MAGIC@","\\\\","options");
+
+ KVI_OPTION_STRING(KviOption_stringUrlFtpCommand).replace("\\\\","@MAGIC@","options");
+ KVI_OPTION_STRING(KviOption_stringUrlFtpCommand).replace("\\","\\\\","options");
+ KVI_OPTION_STRING(KviOption_stringUrlFtpCommand).replace("@MAGIC@","\\\\","options");
+
+ KVI_OPTION_STRING(KviOption_stringUrlMailtoCommand).replace("\\\\","@MAGIC@","options");
+ KVI_OPTION_STRING(KviOption_stringUrlMailtoCommand).replace("\\","\\\\","options");
+ KVI_OPTION_STRING(KviOption_stringUrlMailtoCommand).replace("@MAGIC@","\\\\","options");
+
+ KVI_OPTION_STRING(KviOption_stringUrlFileCommand).replace("\\\\","@MAGIC@","options");
+ KVI_OPTION_STRING(KviOption_stringUrlFileCommand).replace("\\","\\\\","options");
+ KVI_OPTION_STRING(KviOption_stringUrlFileCommand).replace("@MAGIC@","\\\\","options");
+
+ KVI_OPTION_STRING(KviOption_stringUrlUnknownCommand).replace("\\\\","@MAGIC@","options");
+ KVI_OPTION_STRING(KviOption_stringUrlUnknownCommand).replace("\\","\\\\","options");
+ KVI_OPTION_STRING(KviOption_stringUrlUnknownCommand).replace("@MAGIC@","\\\\","options");
+
+ //Check for escaped " in url handler ( \" )
+ KVI_OPTION_STRING(KviOption_stringUrlHttpCommand).replace("\\\\\"","\\\"","options");
+ KVI_OPTION_STRING(KviOption_stringUrlHttpsCommand).replace("\\\\\"","\\\"","options");
+ KVI_OPTION_STRING(KviOption_stringUrlFtpCommand).replace("\\\\\"","\\\"","options");
+ KVI_OPTION_STRING(KviOption_stringUrlMailtoCommand).replace("\\\\\"","\\\"","options");
+ KVI_OPTION_STRING(KviOption_stringUrlFileCommand).replace("\\\\\"","\\\"","options");
+ KVI_OPTION_STRING(KviOption_stringUrlUnknownCommand).replace("\\\\\"","\\\"","options");
+#endif
+}
+
+#include "m_optw_urlhandlers.moc"
+
+#endif //_OPTW_URLHANDLERS_CPP_
diff --git a/src/modules/options/optw_urlhandlers.h b/src/modules/options/optw_urlhandlers.h
new file mode 100644
index 00000000..9ed6c188
--- /dev/null
+++ b/src/modules/options/optw_urlhandlers.h
@@ -0,0 +1,52 @@
+#ifndef _OPTW_URLHANDLERS_H_
+#define _OPTW_URLHANDLERS_H_
+//
+// File : optw_urlhandlers.h
+// Creation date : Fri Aug 23 02:57:41 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+
+#define KVI_OPTIONS_WIDGET_ICON_KviUrlHandlersOptionsWidget KVI_SMALLICON_WORLD
+#define KVI_OPTIONS_WIDGET_NAME_KviUrlHandlersOptionsWidget __tr2qs_no_lookup("URL handlers")
+#define KVI_OPTIONS_WIDGET_PARENT_KviUrlHandlersOptionsWidget KviGeneralOptOptionsWidget
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviUrlHandlersOptionsWidget 70000
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviUrlHandlersOptionsWidget __tr2qs_no_lookup("url,programs")
+
+class KviUrlHandlersOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviUrlHandlersOptionsWidget(QWidget * parent);
+ ~KviUrlHandlersOptionsWidget();
+private:
+ KviStringSelector* m_pHttpHandler;
+ KviStringSelector* m_pHttpsHandler;
+ KviStringSelector* m_pFtpHandler;
+ KviStringSelector* m_pMailtoHandler;
+ KviStringSelector* m_pFileHandler;
+ KviStringSelector* m_pOtherHandler;
+public:
+ virtual void commit();
+public slots:
+ void toggleEditors(bool);
+};
+
+#endif //_OPTW_URLHANDLERS_H_
diff --git a/src/modules/options/optw_userlist.cpp b/src/modules/options/optw_userlist.cpp
new file mode 100644
index 00000000..07b39d0d
--- /dev/null
+++ b/src/modules/options/optw_userlist.cpp
@@ -0,0 +1,245 @@
+//
+// File : optw_userlist.cpp
+// Creation date : Sat Aug 11 2001 03:29:52 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include "optw_userlist.h"
+
+#include <qlayout.h>
+
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_userlistview.h"
+
+//#warning "Info tips"
+
+KviUserListLookOptionsWidget::KviUserListLookOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"userlistlook_options_widget")
+{
+}
+
+KviUserListLookOptionsWidget::~KviUserListLookOptionsWidget()
+{
+}
+
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviUserListLookForegroundOptionsWidget::KviUserListLookForegroundOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"userlistlook_foreground_options_widget")
+{
+ createLayout(2,2);
+
+ addFontSelector(0,0,1,0,__tr2qs_ctx("Font:","options"),KviOption_fontUserListView);
+
+ KviTalGroupBox * g = addGroupBox(0,1,1,1,1,Qt::Horizontal,__tr2qs_ctx("Nickname Colors","options"));
+ addColorSelector(g,__tr2qs_ctx("Normal:","options"),KviOption_colorUserListViewNormalForeground);
+ addColorSelector(g,__tr2qs_ctx("Selected:","options"),KviOption_colorUserListViewSelectionForeground);
+ addColorSelector(g,__tr2qs_ctx("Channel owner:","options"),KviOption_colorUserListViewChanOwnerForeground);
+ addColorSelector(g,__tr2qs_ctx("Channel admin:","options"),KviOption_colorUserListViewChanAdminForeground);
+ addColorSelector(g,__tr2qs_ctx("Op:","options"),KviOption_colorUserListViewOpForeground);
+ addColorSelector(g,__tr2qs_ctx("Half-op:","options"),KviOption_colorUserListViewHalfOpForeground);
+ addColorSelector(g,__tr2qs_ctx("Voice:","options"),KviOption_colorUserListViewVoiceForeground);
+ addColorSelector(g,__tr2qs_ctx("User-op:","options"),KviOption_colorUserListViewUserOpForeground);
+ addColorSelector(g,__tr2qs_ctx("Away:","options"),KviOption_colorUserListViewAwayForeground);
+
+ KviTalHBox * hb = new KviTalHBox(g);
+ hb->setSpacing(4);
+ KviBoolSelector * b = addBoolSelector(hb,__tr2qs_ctx("Use different color for own nick:","options"),KviOption_boolUseDifferentColorForOwnNick);
+ KviColorSelector * s = addColorSelector(hb,"",KviOption_colorUserListViewOwnForeground,KVI_OPTION_BOOL(KviOption_boolUseDifferentColorForOwnNick));
+ connect(b,SIGNAL(toggled(bool)),s,SLOT(setEnabled(bool)));
+
+ addRowSpacer(0,3,0,3);
+}
+
+KviUserListLookForegroundOptionsWidget::~KviUserListLookForegroundOptionsWidget()
+{
+}
+
+KviUserListGridOptionsWidget::KviUserListGridOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent)
+{
+ createLayout(5,1);
+ KviBoolSelector* b = addBoolSelector(0,0,0,0,__tr2qs_ctx("Draw nickname grid","options"),KviOption_boolUserListViewDrawGrid);
+
+ KviColorSelector* s = addColorSelector(0,1,0,1,__tr2qs_ctx("Grid color:","options"),KviOption_colorUserListViewGrid,KVI_OPTION_BOOL(KviOption_boolUserListViewDrawGrid));
+ connect(b,SIGNAL(toggled(bool)),s,SLOT(setEnabled(bool)));
+
+ KviTalHBox* hb = new KviTalHBox(this);
+ addWidgetToLayout(hb,0,2,0,2);
+ hb->setSpacing(4);
+
+ QLabel * l = new QLabel(__tr2qs_ctx("Grid type:","options"),hb);
+ l->setEnabled(KVI_OPTION_BOOL(KviOption_boolUserListViewDrawGrid));
+ connect(b,SIGNAL(toggled(bool)),l,SLOT(setEnabled(bool)));
+ m_pGridTypeCombo = new QComboBox(false,hb);
+ m_pGridTypeCombo->insertItem(__tr2qs_ctx("3D Grid","options"));
+ m_pGridTypeCombo->insertItem(__tr2qs_ctx("3D Buttons","options"));
+ m_pGridTypeCombo->insertItem(__tr2qs_ctx("Plain Grid","options"));
+ m_pGridTypeCombo->insertItem(__tr2qs_ctx("Dotted Grid","options"));
+ m_pGridTypeCombo->setCurrentItem(KVI_OPTION_UINT(KviOption_uintUserListViewGridType));
+ m_pGridTypeCombo->setEnabled(KVI_OPTION_BOOL(KviOption_boolUserListViewDrawGrid));
+ connect(b,SIGNAL(toggled(bool)),m_pGridTypeCombo,SLOT(setEnabled(bool)));
+ addRowSpacer(0,3,0,3);
+}
+
+KviUserListGridOptionsWidget::~KviUserListGridOptionsWidget()
+{
+}
+
+void KviUserListGridOptionsWidget::commit()
+{
+ KviOptionsWidget::commit();
+ KVI_OPTION_UINT(KviOption_uintUserListViewGridType) = m_pGridTypeCombo->currentItem();
+ if(KVI_OPTION_UINT(KviOption_uintUserListViewGridType) > KVI_USERLISTVIEW_GRIDTYPE_MAXIMUM)
+ KVI_OPTION_UINT(KviOption_uintUserListViewGridType) = KVI_USERLISTVIEW_GRIDTYPE_DEFAULT;
+
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////
+
+KviUserListLookBackgroundOptionsWidget::KviUserListLookBackgroundOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"userlistlook_background_options_widget")
+{
+ createLayout(3,2);
+
+ KviTalGroupBox * g = addGroupBox(0,0,1,0,1,Qt::Horizontal,__tr2qs_ctx("Background Colors","options"));
+ addColorSelector(g,__tr2qs_ctx("Normal:","options"),KviOption_colorUserListViewBackground);
+ addColorSelector(g,__tr2qs_ctx("Selected:","options"),KviOption_colorUserListViewSelectionBackground);
+
+
+ addPixmapSelector(0,1,1,1,__tr2qs_ctx("Background image:","options"),KviOption_pixmapUserListViewBackground);
+
+ addLabel(0,2,0,2,__tr2qs_ctx("Horizontal Alignment:","options"));
+ m_pHorizontalAlign=new QComboBox(this);
+ addWidgetToLayout(m_pHorizontalAlign,1,2,1,2);
+
+ addLabel(0,3,0,3,__tr2qs_ctx("Vertical Alignment:","options"));
+ m_pVerticalAlign=new QComboBox(this);
+ addWidgetToLayout(m_pVerticalAlign,1,3,1,3);
+
+ m_pHorizontalAlign->insertItem(__tr2qs_ctx("Tile","options"));
+ m_pHorizontalAlign->insertItem(__tr2qs_ctx("Left","options"));
+ m_pHorizontalAlign->insertItem(__tr2qs_ctx("Right","options"));
+ m_pHorizontalAlign->insertItem(__tr2qs_ctx("Center","options"));
+
+ m_pVerticalAlign->insertItem(__tr2qs_ctx("Tile","options"));
+ m_pVerticalAlign->insertItem(__tr2qs_ctx("Top","options"));
+ m_pVerticalAlign->insertItem(__tr2qs_ctx("Bottom","options"));
+ m_pVerticalAlign->insertItem(__tr2qs_ctx("Center","options"));
+
+ switch( KVI_OPTION_UINT(KviOption_uintUserListPixmapAlign) & Qt::AlignHorizontal_Mask)
+ {
+ case Qt::AlignLeft:
+ m_pHorizontalAlign->setCurrentItem(1);
+ break;
+ case Qt::AlignRight:
+ m_pHorizontalAlign->setCurrentItem(2);
+ break;
+ case Qt::AlignHCenter:
+ m_pHorizontalAlign->setCurrentItem(3);
+ break;
+ default:
+ m_pHorizontalAlign->setCurrentItem(0);
+ }
+
+ switch( KVI_OPTION_UINT(KviOption_uintUserListPixmapAlign) & Qt::AlignVertical_Mask)
+ {
+ case Qt::AlignTop:
+ m_pVerticalAlign->setCurrentItem(1);
+ break;
+ case Qt::AlignBottom:
+ m_pVerticalAlign->setCurrentItem(2);
+ break;
+ case Qt::AlignVCenter:
+ m_pVerticalAlign->setCurrentItem(3);
+ break;
+ default:
+ m_pVerticalAlign->setCurrentItem(0);
+ }
+
+
+
+ //layout()->setColStretch(0,1);
+ layout()->setRowStretch(1,1);
+}
+
+KviUserListLookBackgroundOptionsWidget::~KviUserListLookBackgroundOptionsWidget()
+{
+}
+
+
+void KviUserListLookBackgroundOptionsWidget::commit()
+{
+ KviOptionsWidget::commit();
+
+ int iFlags=0;
+ switch(m_pHorizontalAlign->currentItem())
+ {
+ case 1:
+ iFlags|=Qt::AlignLeft;
+ break;
+ case 2:
+ iFlags|=Qt::AlignRight;
+ break;
+ case 3:
+ iFlags|=Qt::AlignHCenter;
+ break;
+ }
+ switch(m_pVerticalAlign->currentItem())
+ {
+ case 1:
+ iFlags|=Qt::AlignTop;
+ break;
+ case 2:
+ iFlags|=Qt::AlignBottom;
+ break;
+ case 3:
+ iFlags|=Qt::AlignVCenter;
+ break;
+ }
+
+ KVI_OPTION_UINT(KviOption_uintUserListPixmapAlign)=iFlags;
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+KviUserListFeaturesOptionsWidget::KviUserListFeaturesOptionsWidget(QWidget * parent)
+: KviOptionsWidget(parent,"userlistfeatures_options_widget")
+{
+ createLayout(7,1);
+
+ KviBoolSelector *b = addBoolSelector(0,0,0,0,__tr2qs_ctx("Show gender icons","options"),KviOption_boolDrawGenderIcons);
+ b = addBoolSelector(0,1,0,1,__tr2qs_ctx("Show user channel icons","options"),KviOption_boolShowUserChannelIcons);
+ b = addBoolSelector(0,2,0,2,__tr2qs_ctx("Show user channel activity indicator","options"),KviOption_boolShowUserChannelState);
+ b = addBoolSelector(0,3,0,3,__tr2qs_ctx("Hide users label","options"),KviOption_boolDisableUserListLabel);
+ b = addBoolSelector(0,4,0,4,__tr2qs_ctx("Enable user tooltips","options"),KviOption_boolShowUserListViewToolTips);
+ b = addBoolSelector(0,5,0,5,__tr2qs_ctx("Hide avatars","options"),KviOption_boolDisableAvatars);
+
+ addRowSpacer(0,6,0,6);
+}
+
+KviUserListFeaturesOptionsWidget::~KviUserListFeaturesOptionsWidget()
+{
+}
+
+#include "m_optw_userlist.moc"
diff --git a/src/modules/options/optw_userlist.h b/src/modules/options/optw_userlist.h
new file mode 100644
index 00000000..d5fd4c12
--- /dev/null
+++ b/src/modules/options/optw_userlist.h
@@ -0,0 +1,114 @@
+#ifndef _OPTW_USERLIST_H_
+#define _OPTW_USERLIST_H_
+
+//
+// File : optw_userlist.h
+// Creation date : Sat Mar 02 2002 12:09:19 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002-2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_optionswidget.h"
+#include <qcombobox.h>
+
+#define KVI_OPTIONS_WIDGET_ICON_KviUserListLookOptionsWidget KVI_SMALLICON_USERLIST
+#define KVI_OPTIONS_WIDGET_NAME_KviUserListLookOptionsWidget __tr2qs_no_lookup("Userlist")
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviUserListLookOptionsWidget __tr2qs_no_lookup("theme,userlist,channel")
+#define KVI_OPTIONS_WIDGET_GROUP_KviUserListLookOptionsWidget "theme"
+#define KVI_OPTIONS_WIDGET_CONTAINER_KviUserListLookOptionsWidget true
+
+class KviUserListLookOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviUserListLookOptionsWidget(QWidget * parent);
+ ~KviUserListLookOptionsWidget();
+};
+
+#define KVI_OPTIONS_WIDGET_ICON_KviUserListLookBackgroundOptionsWidget KVI_SMALLICON_TRANSPARENT
+#define KVI_OPTIONS_WIDGET_NAME_KviUserListLookBackgroundOptionsWidget __tr2qs_no_lookup("Background")
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviUserListLookBackgroundOptionsWidget __tr2qs_no_lookup("theme,userlist,channel,background")
+#define KVI_OPTIONS_WIDGET_GROUP_KviUserListLookBackgroundOptionsWidget "theme"
+#define KVI_OPTIONS_WIDGET_PARENT_KviUserListLookBackgroundOptionsWidget KviUserListLookOptionsWidget
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviUserListLookBackgroundOptionsWidget 30
+
+
+class KviUserListLookBackgroundOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviUserListLookBackgroundOptionsWidget(QWidget * parent);
+ ~KviUserListLookBackgroundOptionsWidget();
+protected:
+ QComboBox* m_pHorizontalAlign;
+ QComboBox* m_pVerticalAlign;
+public:
+ virtual void commit();
+};
+
+#define KVI_OPTIONS_WIDGET_ICON_KviUserListLookForegroundOptionsWidget KVI_SMALLICON_USERLIST
+#define KVI_OPTIONS_WIDGET_NAME_KviUserListLookForegroundOptionsWidget __tr2qs_no_lookup("Foreground")
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviUserListLookForegroundOptionsWidget __tr2qs_no_lookup("theme,userlist,channel,colors")
+#define KVI_OPTIONS_WIDGET_GROUP_KviUserListLookForegroundOptionsWidget "theme"
+#define KVI_OPTIONS_WIDGET_PARENT_KviUserListLookForegroundOptionsWidget KviUserListLookOptionsWidget
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviUserListLookForegroundOptionsWidget 20
+
+
+class KviUserListLookForegroundOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviUserListLookForegroundOptionsWidget(QWidget * parent);
+ ~KviUserListLookForegroundOptionsWidget();
+};
+
+#define KVI_OPTIONS_WIDGET_ICON_KviUserListGridOptionsWidget KVI_SMALLICON_GUI
+#define KVI_OPTIONS_WIDGET_NAME_KviUserListGridOptionsWidget __tr2qs_no_lookup("Nickname Grid")
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviUserListGridOptionsWidget __tr2qs_no_lookup("theme,userlist,channel,grid")
+#define KVI_OPTIONS_WIDGET_GROUP_KviUserListGridOptionsWidget "theme"
+#define KVI_OPTIONS_WIDGET_PARENT_KviUserListGridOptionsWidget KviUserListLookOptionsWidget
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviUserListGridOptionsWidget 30
+
+
+class KviUserListGridOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviUserListGridOptionsWidget(QWidget * parent);
+ ~KviUserListGridOptionsWidget();
+protected:
+ QComboBox * m_pGridTypeCombo;
+public:
+ virtual void commit();
+};
+
+#define KVI_OPTIONS_WIDGET_ICON_KviUserListFeaturesOptionsWidget KVI_SMALLICON_GUI
+#define KVI_OPTIONS_WIDGET_NAME_KviUserListFeaturesOptionsWidget __tr2qs_no_lookup("Features")
+#define KVI_OPTIONS_WIDGET_KEYWORDS_KviUserListFeaturesOptionsWidget __tr2qs_no_lookup("userlist,channel")
+#define KVI_OPTIONS_WIDGET_PARENT_KviUserListFeaturesOptionsWidget KviUserListLookOptionsWidget
+#define KVI_OPTIONS_WIDGET_PRIORITY_KviUserListFeaturesOptionsWidget 10
+
+class KviUserListFeaturesOptionsWidget : public KviOptionsWidget
+{
+ Q_OBJECT
+public:
+ KviUserListFeaturesOptionsWidget(QWidget * parent);
+ ~KviUserListFeaturesOptionsWidget();
+};
+
+#endif //!_OPTW_USERLIST_H_
diff --git a/src/modules/perl/Makefile.am b/src/modules/perl/Makefile.am
new file mode 100644
index 00000000..ea5e4a5b
--- /dev/null
+++ b/src/modules/perl/Makefile.am
@@ -0,0 +1,18 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkviperl.la
+
+libkviperl_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkviperl_la_SOURCES = libkviperl.cpp
+libkviperl_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+# noinst_HEADERS=
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/perl/libkviperl.cpp b/src/modules/perl/libkviperl.cpp
new file mode 100644
index 00000000..a898e43a
--- /dev/null
+++ b/src/modules/perl/libkviperl.cpp
@@ -0,0 +1,600 @@
+//=============================================================================
+//
+// File : libkviperl.cpp
+// Creation date : Tue Jul 13 13:03:31 2004 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2004-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_module.h"
+
+#include "kvi_fileutils.h"
+#include "kvi_locale.h"
+#include "kvi_app.h"
+#include "kvi_options.h"
+#include "kvi_modulemanager.h"
+#include "kvi_out.h"
+
+#ifdef COMPILE_PERL_SUPPORT
+ #include "../perlcore/perlcoreinterface.h"
+
+ static KviModule * g_pPerlCoreModule = 0;
+#endif // COMPILE_PERL_SUPPORT
+
+#ifdef COMPILE_PERL_SUPPORT
+ #define KVS_CHECK_PERLCORE(_m,_c) \
+ g_pPerlCoreModule = g_pModuleManager->getModule("perlcore"); \
+ if(!g_pPerlCoreModule) \
+ { \
+ if(!_c->switches()->find('q',"quiet")) \
+ { \
+ _c->warning(__tr2qs_ctx("The perlcore module can't be loaded: perl support not available","perl")); \
+ _c->warning(__tr2qs_ctx("To see more details about loading failure try /perlcore.load","perl")); \
+ return true; \
+ } \
+ }
+#else // !COMPILE_PERL_SUPPORT
+ #define KVS_CHECK_PERLCORE(_m,_c)
+#endif // !COMPILE_PERL_SUPPORT
+
+#ifdef COMPILE_PERL_SUPPORT
+ #define KVS_CHECK_MODULE_STATE(_m,_c) KVS_CHECK_PERLCORE(_m,_c)
+#else // !COMPILE_PERL_SUPPORT
+ #define KVS_CHECK_MODULE_STATE(_m,_c) \
+ if(!_c->switches()->find('q',"quiet")) \
+ _c->warning(__tr2qs_ctx("This KVIrc executable has been compiled without perl scripting support","perl")); \
+ return true;
+#endif // !COMPILE_PERL_SUPPORT
+
+/*
+ @doc: perl_and_kvs
+ @type:
+ language
+ @title:
+ Using perl from KVS and vice-versa.
+ @short:
+ How to use perl from KVS and KVS from perl.
+ @body:
+ [big]Introduction[/big][br]
+ Starting from version 3.0.2 you can include perl code snippets
+ in KVS code and you can use KVS commands from within perl.
+ This feature is present only if a working perl installation
+ has been found at ./configure time.[br]
+ [br]
+
+ [big]Using perl from KVS[/big][br]
+ Using perl from KVIrc is really easy: just enclose
+ your perl code snippet inside [cmd]perl.begin[/cmd] and [cmd]perl.end[/cmd].
+ [example]
+ [cmd]perl.begin[/cmd]
+ &lt;perl code goes here&gt;
+ [cmd]perl.end[/cmd]
+ [/example]
+ For example:[br]
+ [example]
+ [cmd]perl.begin[/cmd]
+ open(MYFILE,'>>myfile.txt') or die "Can't open myfile.txt!";
+ print MYFILE "foo!\n";
+ close(MYFILE);
+ [cmd]perl.end[/cmd]
+ [/example]
+ A perl code snippet can appear anywhere a KVS code snippet can
+ with the only restriction that i must be enclosed in [cmd]perl.begin[/cmd]
+ and [cmd]perl.end[/cmd]. This means that you can write perl code
+ in the commandline, in the aliases, the event handlers, popups...anywhere.[br]
+ If you have already encountered the KVIrc's [cmd]eval[/cmd] command
+ that you probably also know how to execute a perl code snippet from a file :)[br]
+ [br]
+
+ [big]Using KVS from perl[/big][br]
+ KVIrc exports several commands to the perl namespace
+ that allow you to invoke KVIrc's functions from inside the perl code snippet.[br]
+ The nicest example is KVIrc::echo():
+ [example]
+ [cmd]perl.begin[/cmd]
+ KVIrc::echo("Hello KVIrc world from perl!");
+ [cmd]perl.end[/cmd]
+ [/example]
+ KVIrc::echo() is the counterpart of the [cmd]echo[/cmd].
+ The exact syntax is:[br]
+ &nbsp; &nbsp; [b]KVIrc::echo(&lt;text&gt;[,&lt;colorset&gt;[,&lt;windowid&gt;]])[/b][br]
+ &lt;text&gt; is obviously the text to be printed. &lt;colorset&gt; is
+ the equivalent of the [cmd]echo[/cmd] -i option and &lt;windowid&gt;
+ is the equivalent of the -w option. Both &lt;colorset&gt; and &lt;windowid&gt;
+ can be omitted (in this case KVIrc will use a default colorset and the current window).[br]
+ [br]
+
+ [big]Perl execution contexts[/big][br]
+ The perl code snippets are executed by the means of a perl interpreter.
+ Each perl interpreter has its own context and thus it's own variables,
+ own function namespace etc.[br]
+ [br]
+ In the example above KVIrc creates an interpreter when [cmd]perl.begin[/cmd]
+ is invoked and destroys it at [cmd]perl.end[/cmd] parsing time.
+ In fact, KVIrc can mantain multiple persistent interpreters that will
+ allow you to preserve your context across [cmd]perl.begin[/cmd] invocations.[br]
+ You can invoke a specific perl context by passing it as parameter to the [cmd]perl.begin[/cmd]
+ command.[br]
+ [example]
+ [cmd]perl.begin("mycontext")[/cmd]
+ $myvariable = "mycontext";
+ KVIrc::echo("This perl code is executed from ".$myvariable);
+ [cmd]perl.end[/cmd]
+ [/example]
+ The nice thing is that at a later time you can invoke this context again
+ and discover that $mycontext has preserved its value:[br]
+ [example]
+ [cmd]perl.begin("mycontext")[/cmd]
+ KVIrc::echo("myvariable is still equal to ".$myvariable);
+ [cmd]perl.end[/cmd]
+ [/example]
+ The first time you invoke a named perl context it gets automatically created and
+ it persists until KVIrc terminates or the perl context is explicitly destroyed
+ by the means of [cmd]perl.destroy[/cmd].[br]
+ [br]
+ In fact there is a third possibility to destroy a context: it's when the
+ perlcore module is forcibly unloaded (by the means of /perlcore.unload) but
+ this is really a rare case and should be threated just like a KVIrc restart (the
+ user probably WANTS the contexts to be reinitialized).[br]
+ [br]
+ The nice thing is that not only your variables will get preserved
+ but also any perl function or class you declare in a context will persist.
+ It's just like executing a long perl script file with pauses inside.[br]
+ [br]
+ If you omit the perl context name in the [cmd]perl.begin[/cmd] command
+ (or if you use an empty string in it's place)
+ then KVIrc will create a temporary context for the snippet execution
+ and will destroy it immediately after [cmd]perl.end[/cmd] has been called.[br]
+ [br]
+ The major side effect of keeping persistent perl contexts is that
+ the perl's symbol table will grow and if not used carefully the interpreter
+ may become a memory hog. So if you're going to use persistent contexts
+ either try to keep the symbol table clean or explicitly call [cmd]perl.destroy[/cmd]
+ once in a while to recreate the interpreter.[br]
+ If you just execute occasional perl code snippets and don't need to keep persistent variables
+ then just use the nameless temporary context provided by [cmd]perl.begin[/cmd]("").[br]
+ [br]
+
+ [big]Passing parameters to the perl script[/big][br]
+ The easiest way to pass parameters to the perl code snippet
+ is to put them as [cmd]perl.begin[/cmd] arguments.
+ In fact the complete syntax of [cmd]perl.begin[/cmd] is:[br]
+ [b]perl.begin(&lt;perl context&gt;,&lt;arg0&gt;,&lt;arg1&gt;,...)[/b][br]
+ Where the &lt;arg0&gt;,&lt;arg1&gt;...&lt;argN&gt; parameters
+ are passed to the perl context as elements of the $_[] array.[br]
+ [example]
+ [cmd]perl.begin[/cmd]("","Hello world!","Now I CAN",1,2,3)
+ for($i=0;$i<5;$i++)
+ KVIrc::echo($_[i],40);
+ [cmd]perl.end[/cmd]
+ [/example]
+ [br]
+
+ [big]Accessing the KVIrc scripting context from perl[/big][br]
+ KVIrc exposes the following functions that manipulate the
+ variables of the KVIrc's current KVS execution context.[br]
+ &nbsp; &nbsp; [b]KVIrc::getLocal(&lt;x&gt;)[/b][br]
+ Returns the value of the KVIrc's local variable %x.[br]
+ &nbsp; &nbsp; [b]KVIrc::getGlobal(&lt;Y&gt;)[/b][br]
+ Returns the value of the KVIrc's global variable %Y.[br]
+ &nbsp; &nbsp; [b]KVIrc::setLocal(&lt;x&gt;,&lt;value&gt;)[/b][br]
+ Sets the KVIrc's global variable %x to &lt;value&gt;[br]
+ &nbsp; &nbsp; [b]KVIrc::setGlobal(&lt;Y&gt;,&lt;value&gt;)[/b][br]
+ Sets the KVIrc's global variable %Y to &lt;value&gt;[br]
+ The local variables interested belong to the current KVS exection context
+ while the global variables are visible everywhere.[br]
+ [example]
+ %pippo = test
+ %Pluto = 12345
+ [cmd]perl.begin[/cmd]
+ $mypippo = KVIrc::getLocal("pippo");
+ $mypippo =~ s/^pi/ze/g;
+ $mypluto = KVIrc::getGlobal("Pluto");
+ $mypluto =~ s/23/xx/g;
+ KVIrc::setLocal("pippo",$mypluto);
+ KVIrc::setGlobal("Pluto",$mypippo);
+ [cmd]perl.end[/cmd]
+ [cmd]echo[/cmd] "\%pippo is" %pippo
+ [cmd]echo[/cmd] "\%Pluto is" %Pluto
+ [/example]
+ [br]
+
+ [big]Executing arbitrary KVIrc commands from perl[/big][br]
+ You can execute arbitrary KVS commands from perl by the means of:[br]
+ &nbsp; &nbsp; [b]KVIrc::eval(&lt;code&gt;)[/b][br]
+ This function behaves exactly like the ${ &lt;code&gt; } KVS construct:
+ it executes &lt;code&gt; in a child context and returns it's evaluation retult.[br]
+ The following two code snippets have equivalent visible effects:[br]
+ [example]
+ [cmd]echo[/cmd] ${ return "Yeah!"; }
+ [/example]
+ [example]
+ [cmd]perl.begin[/cmd]
+ KVIrc::echo(KVIrc::eval("return \"Yeah!\""));
+ [cmd]perl.end[/cmd]
+ [/example]
+ You can "eval" composite command sequences and variable ones.[br]
+ Remember that the perl code snippet is evaluated in a child KVS context
+ and thus the local variables are NOT visible!.
+ The following code snippets may easily fool you:[br]
+ [example]
+ %x = 10
+ [cmd]perl.begin[/cmd]
+ KVIrc::eval("echo \"The value is %x\"");
+ [cmd]perl.end[/cmd]
+ [/example]
+ This will print "The value is " since %x is not accessible from the eval's context.
+ If you have tried to write something like this then you probably need to rewrite it as:[br]
+ [example]
+ %x = 10
+ [cmd]perl.begin[/cmd]
+ $x = KVIrc::getLocal("x");
+ KVIrc::eval("echo \"The value is ".$x."\"");
+ [cmd]perl.end[/cmd]
+ [/example]
+ [br]
+ Note also that you must either escape the $ at the beginning of the KVIrc identifiers
+ or use the single quotes to prevent perl from catching the $ as the beginning of
+ a variable.
+ [example]
+ [comment]# This will not work as expected[/comment]
+ [cmd]perl.begin[/cmd]
+ KVIrc::echo(KVIrc::eval("return $window.caption"));
+ [cmd]perl.end[/cmd]
+ [comment]# But these will do[/comment]
+ [cmd]perl.begin[/cmd]
+ KVIrc::echo(KVIrc::eval("return \$window.caption"));
+ KVIrc::echo(KVIrc::eval('return $window.caption'));
+ [cmd]perl.end[/cmd]
+ [/example]
+
+ [big]A shortcut for KVIrc::eval("/say...")[/big][br]
+ Since KVIrc::eval("/say...") is a common calling pattern then say
+ has been added to the KVIrc perl namespace. You can now call
+ [example]
+ KVIrc::say("Hi all!");
+ [/example]
+ and that will mimic the behaviour of
+ [example]
+ /[cmd]say[/cmd] Hi all!
+ [/example]
+ The complete syntax for KVIrc::say() is:[br]
+ &nbsp; &nbsp; [b]KVIrc::say(&lt;text&gt;[,&lt;windowid&gt;])[/b][br]
+ and the semantics are obvious (see also /[cmd]say[/cmd]).
+ [br]
+
+ [big]The perl script return values[/big][br]
+ The [cmd]perl.begin[/cmd] command propagates the perl code return
+ value to the KVIrc context (just like a setreturn() would do).[br]
+ In fact the perl snippet return value is the last "thing" that
+ the interpreter evaluates.[br]
+ In this way you can write perl aliases that return values
+ without doing any variable passing equilibrism.[br]
+ [br]
+
+ [big]Executing perl scripts from files[/big][br]
+ [example]
+ [cmd]alias[/cmd](perlexec)
+ {
+ %tmp = "perl.begin(\"\",$1,$2,$3,$4,$5)";
+ %tmp .= $file.read($0);
+ %tmp .= "perl.end";
+ eval %tmp;
+ }
+ perlexec "/home/pragma/myperlscript.pl" "param1" "param2" "param3"
+ [comment]# or even[/comment]
+ [cmd]echo[/cmd] $perlexec("/home/pragma/computeprimelargerthan.pl","10000")
+ [/example]
+ [br]
+
+ [big]Other tricks[/big][br]
+ An interesting feature of the persistent perl contexts is
+ that you can prepare a context for a later fast execution.[br]
+ The idea is to declare perl functions in a single perl code snippet
+ and to call the single functions when a fast execution is needed.[br]
+ For example you might parse the following snippet at KVIrc's startup:[br]
+ [example]
+ [cmd]perl.begin[/cmd]("persistent")
+ sub handler_for_event_1
+ {
+ do_complex_perl_stuff_here
+ }
+ sub handler_for_event_2
+ {
+ do_complex_perl_stuff_here
+ }
+ [cmd]perl.end[/cmd]
+ [/example]
+ and later simply call:
+ [example]
+ [cmd]perl.begin[/cmd]("persistent",param1,param2)
+ handler_for_event_1($_[0],$_[1])
+ [cmd]perl.end[/cmd]
+ [/example]
+ [br]
+
+ [big]Curiosity[/big][br]
+ The perl support in KVIrc is implemented as a master-slave module pair.
+ The perl.* module is the master while perlcore is the slave.
+ When the perl support isn't compiled in, the perl.* commands
+ print some warnings and exit gracefully while the perlcore module
+ refuses to be loaded. When perl support is compiled in but
+ for some reason the libperl.so can't be found or loaded
+ then perlcore fails the dynamic loading stage but perl.* still fails
+ gracefully with just some warning messages. This trick allows
+ the scripters to check for perl support with [fnc]perl.isAvailable[/fnc]
+ and to embed perl code snippets in KVS even if the support is missing.
+ The snippets will be just skipped.[br]
+ [br]
+ Happy perl hacking :)[br]
+*/
+
+/*
+ @doc: perl.begin
+ @type:
+ command
+ @title:
+ perl.begin
+ @keyterms:
+ Including perl code snippets in KVS
+ @short:
+ Starts a perl code snippet
+ @syntax:
+ perl.begin [-n] [-q] [(<perl_context>[,<arg0>[,<arg1>[...]]])]
+ <perl code>
+ perl.end
+ @switches:
+ !sw: -q | --quiet
+ Prevents the command from printing any warnings.
+ !sw: -n | --no-return
+ Prevents the perl script return value to be propagated
+ to the current context.
+ !sw: -f | --fail-on-error
+ Treat perl errors as KVS errors and abort execution of the
+ current script. Incompatible with -q
+ @description:
+ Indicates the beginning of a snipped of perl code.
+ The whole code part between perl.begin and perl.end
+ is executed in a perl interpreter.
+ If perl.end is omitted then it is implicitly assumed
+ that the code from perl.begin to the end of the command
+ buffer is perl.[br]
+ Each perl code execution is bound to a
+ perl context (that is in fact a particular instance
+ of a perl interpreter). If <perl_context> is not specified
+ or it is an empty string then temporary perl interpreter is created
+ and destroyed just after the code snippet has terminated execution.
+ If <perl_context> is specified then a perl interpreter
+ keyed to that context is used: if it was already existing
+ then it is reused otherwise it is created.
+ Any <perl_context> is persistent: it mantains the function
+ declarations and perl variable states until explicitly
+ destroyed with [cmd]perl.destroy[/cmd] (or the perlcore
+ module is forcibly unloaded).[br]
+ The <arg0>,<arg1>,... arguments, if present, are passed
+ to the perl code snippet in the @_ array (accessible as $_[0],$_[1]...).[br]
+ The return value of the perl code is propagated to the current
+ context (just like [cmd]setreturn[/cmd] was called on it) unless
+ the -n switch is used.[br]
+ The -q switch prevents from the command from printing any
+ warning.[br]
+ See the [doc:perl_and_kvs]perl scripting documentation[/doc]
+ for more information.
+ @examples:
+ [example]
+ perl.begin
+ KVIrc::eval("echo \"Hello World from perl!\"");
+ perl.end
+ [/example]
+ @seealso:
+*/
+
+/*
+ @doc: perl.end
+ @type:
+ command
+ @title:
+ perl.end
+ @short:
+ Ends a perl code snippet
+ @syntax:
+ perl.begin[(<perl_context>)]
+ <perl code>
+ perl.end
+ @description:
+ Ends a perl code snippet. See [cmd]perl.begin[/cmd].
+ @seealso:
+ [cmd]perl.begin[/cmd]
+*/
+
+static bool perl_kvs_cmd_begin(KviKvsModuleCommandCall * c)
+{
+ // This command is somewhat special in the fact that has a dedicated
+ // parsing routine in the KVS core parser.
+ // The parser sets the perl code as the first parameter of our call,
+ // the remaining params are the context name and the arguments
+
+ QString szCode,szContext;
+ KviKvsVariantList vList;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("code",KVS_PT_STRING,0,szCode)
+ KVSM_PARAMETER("context",KVS_PT_STRING,KVS_PF_OPTIONAL,szContext)
+ KVSM_PARAMETER("args",KVS_PT_VARIANTLIST,KVS_PF_OPTIONAL,vList)
+ KVSM_PARAMETERS_END(c)
+
+ KVS_CHECK_MODULE_STATE(m,c)
+
+#ifdef COMPILE_PERL_SUPPORT
+
+ KviPerlCoreCtrlCommand_execute ex;
+ ex.uSize = sizeof(KviPerlCoreCtrlCommand_execute);
+ ex.pKvsContext = c->context();
+ ex.szContext = szContext;
+ ex.szCode = szCode;
+ for(KviKvsVariant * v = vList.first();v;v = vList.next())
+ {
+ QString tmp;
+ v->asString(tmp);
+ ex.lArgs.append(tmp);
+ }
+ ex.bQuiet = c->switches()->find('q',"quiet");
+
+ if(!g_pPerlCoreModule->ctrl(KVI_PERLCORECTRLCOMMAND_EXECUTE,&ex))
+ {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs_ctx("The perlcore module failed to execute the code: something is wrong with the perl support","perl"));
+ return true;
+ }
+
+ if(!ex.lWarnings.isEmpty())
+ {
+ for(QStringList::Iterator it = ex.lWarnings.begin();it != ex.lWarnings.end();++it)
+ c->warning(*it);
+ }
+
+ if(!ex.bExitOk)
+ {
+ if(!c->switches()->find('q',"quiet"))
+ {
+
+ if(c->switches()->find('f',"fail-on-error"))
+ {
+ c->warning(__tr2qs_ctx("Perl execution error:","perl"));
+ c->warning(ex.szError);
+ return false;
+ } else {
+ c->warning(__tr2qs_ctx("Perl execution error:","perl"));
+ c->error(ex.szError);
+ }
+ }
+ }
+
+ if(!c->switches()->find('n',"no-return"))
+ c->context()->returnValue()->setString(ex.szRetVal);
+
+#endif //COMPILE_PERL_SUPPORT
+
+ return true;
+}
+
+/*
+ @doc: perl.destroy
+ @type:
+ command
+ @title:
+ perl.destroy
+ @short:
+ Destroys a perl execution context
+ @syntax:
+ perl.destroy [-q] <context_name:string>
+ @description:
+ Destroys the perl execution context <context_name>.
+ If the context is not existing then a warning is printed unless the
+ -q switch is used.[br]
+ The destruction will clear any state associated to the context
+ including the stored functions, classes and variable symbols.
+ You may want to destroy a context to re-initialize its state
+ or to simply clear it's memory when it's no longer needed.
+ @seealso:
+ [cmd]perl.begin[/cmd]
+*/
+
+static bool perl_kvs_cmd_destroy(KviKvsModuleCommandCall * c)
+{
+ QString szContext;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("context",KVS_PT_NONEMPTYSTRING,0,szContext)
+ KVSM_PARAMETERS_END(c)
+
+ KVS_CHECK_MODULE_STATE(m,c)
+
+#ifdef COMPILE_PERL_SUPPORT
+ KviPerlCoreCtrlCommand_destroy ex;
+ ex.uSize = sizeof(KviPerlCoreCtrlCommand_destroy);
+ ex.szContext = szContext;
+
+ if(!g_pPerlCoreModule->ctrl(KVI_PERLCORECTRLCOMMAND_DESTROY,&ex))
+ {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs_ctx("The perlcore module failed to execute the code: something is wrong with the perl support","perl"));
+ }
+#endif //COMPILE_PERL_SUPPORT
+
+ return true;
+}
+
+
+/*
+ @doc: perl.isAvailable
+ @type:
+ function
+ @title:
+ $perl.isAvailable
+ @short:
+ Check if perl scripting support is available
+ @syntax:
+ $perl.isAvailable
+ @description:
+ Returns 1 if the perl scripting support is available and 0 otherwise.
+*/
+
+static bool perl_kvs_fnc_isAvailable(KviKvsModuleFunctionCall * c)
+{
+#ifdef COMPILE_PERL_SUPPORT
+ g_pPerlCoreModule = g_pModuleManager->getModule("perlcore");
+ c->returnValue()->setBoolean(g_pPerlCoreModule ? true : false);
+#else //!COMPILE_PERL_SUPPORT
+ c->returnValue()->setBoolean(false);
+#endif //!COMPILE_PERL_SUPPORT
+ return true;
+}
+
+static bool perl_module_init(KviModule * m)
+{
+ // register the command anyway
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"begin",perl_kvs_cmd_begin);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"destroy",perl_kvs_cmd_destroy);
+
+ KVSM_REGISTER_FUNCTION(m,"isAvailable",perl_kvs_fnc_isAvailable);
+
+ // FIXME: perl.isSupported()
+#ifdef COMPILE_PERL_SUPPORT
+ g_pPerlCoreModule = g_pModuleManager->getModule("perlcore");
+#endif // COMPILE_PERL_SUPPORT
+ return true;
+}
+
+static bool perl_module_cleanup(KviModule *m)
+{
+#ifdef COMPILE_PERL_SUPPORT
+#endif // COMPILE_PERL_SUPPORT
+ return true;
+}
+
+KVIRC_MODULE(
+ "Perl", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2004 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "Perl scripting engine",
+ perl_module_init,
+ 0,
+ 0,
+ perl_module_cleanup
+)
diff --git a/src/modules/perlcore/KVIrc.xs b/src/modules/perlcore/KVIrc.xs
new file mode 100644
index 00000000..37b040cf
--- /dev/null
+++ b/src/modules/perlcore/KVIrc.xs
@@ -0,0 +1,139 @@
+MODULE = KVIrc PACKAGE = KVIrc
+
+void echo(text,colorset = 0,windowid = 0)
+ char * text
+ int colorset
+ char * windowid
+ CODE:
+ if(g_pCurrentKvsContext && text)
+ {
+ KviWindow * pWnd;
+ if(windowid)
+ {
+ pWnd = g_pApp->findWindow(windowid);
+ if(!pWnd)pWnd = g_pCurrentKvsContext->window();
+ } else {
+ pWnd = g_pCurrentKvsContext->window();
+ }
+ pWnd->outputNoFmt(colorset,QString::fromUtf8(text));
+ }
+
+void say(text,windowid = 0)
+ char * text
+ char * windowid
+ CODE:
+ if(g_pCurrentKvsContext && text)
+ {
+ KviWindow * pWnd;
+ if(windowid)
+ {
+ pWnd = g_pApp->findWindow(windowid);
+ if(!pWnd)pWnd = g_pCurrentKvsContext->window();
+ } else {
+ pWnd = g_pCurrentKvsContext->window();
+ }
+ QString tmp = QString::fromUtf8(text);
+ KviUserInput::parse(tmp,pWnd);
+ }
+
+void warning(text)
+ char * text
+ CODE:
+ if((!g_bExecuteQuiet) && g_pCurrentKvsContext)
+ g_pCurrentKvsContext->warning(text);
+
+void internalWarning(text)
+ char * text
+ CODE:
+ if(!g_bExecuteQuiet)
+ g_lWarningList.append(QString(text));
+
+
+char * getLocal(varname)
+ char * varname
+ CODE:
+ QString tmp;
+ KviStr hack;
+ if(g_pCurrentKvsContext)
+ {
+ KviKvsVariant * pVar = g_pCurrentKvsContext->localVariables()->find(varname);
+ if(pVar)
+ {
+ pVar->asString(tmp);
+ hack = tmp;
+ RETVAL = hack.ptr();
+ } else RETVAL = "";
+ }
+ OUTPUT:
+ RETVAL
+
+void setLocal(varname,value)
+ char * varname
+ char * value
+ CODE:
+ if(g_pCurrentKvsContext)
+ {
+ if(value && *value)
+ {
+ KviKvsVariant * pVar = g_pCurrentKvsContext->localVariables()->get(varname);
+ pVar->setString(value);
+ } else {
+ g_pCurrentKvsContext->localVariables()->unset(varname);
+ }
+ }
+
+char * getGlobal(varname)
+ char * varname
+ CODE:
+ QString tmp;
+ KviStr hack;
+ if(g_pCurrentKvsContext)
+ {
+ KviKvsVariant * pVar = g_pCurrentKvsContext->globalVariables()->find(varname);
+ if(pVar)
+ {
+ pVar->asString(tmp);
+ hack = tmp;
+ RETVAL = hack.ptr();
+ } else RETVAL = "";
+ }
+ OUTPUT:
+ RETVAL
+
+void setGlobal(varname,value)
+ char * varname
+ char * value
+ CODE:
+ if(g_pCurrentKvsContext)
+ {
+ if(value && *value)
+ {
+ KviKvsVariant * pVar = g_pCurrentKvsContext->globalVariables()->get(varname);
+ pVar->setString(value);
+ } else {
+ g_pCurrentKvsContext->localVariables()->unset(varname);
+ }
+ }
+
+
+char * eval(code)
+ char * code
+ CODE:
+ if(g_pCurrentKvsContext && code)
+ {
+ KviKvsVariant ret;
+ if(KviKvsScript::run(QString::fromUtf8(code),g_pCurrentKvsContext->window(),0,&ret))
+ {
+ QString tmp;
+ ret.asString(tmp);
+ g_szLastReturnValue = tmp;
+ } else {
+ g_szLastReturnValue = "";
+ }
+ RETVAL = g_szLastReturnValue.ptr();
+ } else {
+ RETVAL = "";
+ }
+ OUTPUT:
+ RETVAL
+
diff --git a/src/modules/perlcore/Makefile.am b/src/modules/perlcore/Makefile.am
new file mode 100644
index 00000000..a153262c
--- /dev/null
+++ b/src/modules/perlcore/Makefile.am
@@ -0,0 +1,23 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\" $(SS_PERL_CCFLAGS)
+
+pluglib_LTLIBRARIES = libkviperlcore.la
+
+libkviperlcore_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS) $(SS_PERL_LDFLAGS)
+
+libkviperlcore_la_SOURCES = libkviperlcore.cpp
+libkviperlcore_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS = perlcoreinterface.h
+
+EXTRA_DIST = KVIrc.xs ppport.h xs.inc typemap
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+xs:
+ xsubpp -noversioncheck -C++ -noprototypes KVIrc.xs > xs.inc
diff --git a/src/modules/perlcore/libkviperlcore.cpp b/src/modules/perlcore/libkviperlcore.cpp
new file mode 100644
index 00000000..a9196219
--- /dev/null
+++ b/src/modules/perlcore/libkviperlcore.cpp
@@ -0,0 +1,414 @@
+//=============================================================================
+//
+// File : libkviperlcore.cpp
+// Creation date : Tue Jul 13 13:03:31 2004 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_module.h"
+#include "kvi_settings.h"
+#include "kvi_locale.h"
+#include "kvi_out.h"
+#include "kvi_window.h"
+#include "kvi_app.h"
+
+#include "kvi_kvs_script.h"
+#include "kvi_kvs_variant.h"
+#include "kvi_userinput.h"
+#include "kvi_qcstring.h"
+#include "kvi_pointerhashtable.h"
+
+#ifdef DEBUG
+ #undef DEBUG
+#endif
+
+// I MUST say that the perl embedding process is somewhat ugly :(
+// First of all the man pages are somewhat unreadable even
+// for a non-novice perl user. The writer of each page assumed
+// that you have already read each other page...
+// Also browsing the pages with "man" is obviously out of mind
+// but this can be solved by looking up some html docs on the net.
+// Embedding multiple interpreters isn't that hard (after you
+// have read perlembed) but to start passing parameters
+// around you have to read at least perlembed, perlguts, perlxs,..
+// take a look at the perlinternals and have a good trip
+// around the web to find some examples for the functions
+// that aren't explained enough in the pages.
+// It gets even more weird when you attempt to include
+// some XS functions... (what the heck is boot_DynaLoader ?).
+
+// ... and I'm still convinced that I'm leaking memory with
+// the perl values, but well ...
+
+// anyway, once you struggled for a couple of days with all that
+// stuff then you start getting things done... and it rox :)
+
+#ifdef COMPILE_PERL_SUPPORT
+ #include <EXTERN.h>
+ #include <perl.h>
+ #include <XSUB.h>
+
+ #include "ppport.h"
+
+ #include "kvi_kvs_runtimecontext.h"
+
+ static KviKvsRunTimeContext * g_pCurrentKvsContext = 0;
+ static bool g_bExecuteQuiet = false;
+ static KviStr g_szLastReturnValue("");
+ static QStringList g_lWarningList;
+
+ #include "xs.inc"
+#endif // COMPILE_PERL_SUPPORT
+
+// perl redefines bool :///
+#ifdef bool
+ #undef bool
+#endif
+
+#ifdef COMPILE_PERL_SUPPORT
+
+#include "perlcoreinterface.h"
+
+// people ... are you mad ? ... what the heck is "my_perl" ?
+#define my_perl m_pInterpreter
+
+class KviPerlInterpreter
+{
+public:
+ KviPerlInterpreter(const QString &szContextName);
+ ~KviPerlInterpreter();
+protected:
+ QString m_szContextName;
+ PerlInterpreter * m_pInterpreter;
+public:
+ bool init(); // if this fails then well.. :D
+ void done();
+ bool execute(const QString &szCode,QStringList &args,QString &szRetVal,QString &szError,QStringList &lWarnings);
+ const QString & contextName(){ return m_szContextName; };
+protected:
+ QString svToQString(SV * sv);
+};
+
+KviPerlInterpreter::KviPerlInterpreter(const QString &szContextName)
+{
+ m_szContextName = szContextName;
+ m_pInterpreter = 0;
+}
+
+KviPerlInterpreter::~KviPerlInterpreter()
+{
+ done();
+}
+
+// this kinda sux :(
+// It SHOULD be mentioned somewhere that
+// this function is in DynaLoader.a in the perl
+// distribution and you MUST link it statically.
+extern "C" void boot_DynaLoader(pTHX_ CV* cv);
+
+extern "C" void xs_init(pTHX)
+{
+ char *file = __FILE__;
+ // boot up the DynaLoader
+ newXS("DynaLoader::boot_DynaLoader",boot_DynaLoader,file);
+ // now bootstrap the KVIrc module
+ // This stuff is simply cutted and pasted from xs.inc
+ // since I don't really know if it's safe to call
+ // something like
+ // CV * dummy;
+ // boot_KVIrc(aTHX,dummy);
+ // ...
+ newXS("KVIrc::echo", XS_KVIrc_echo, file);
+ newXS("KVIrc::say", XS_KVIrc_say, file);
+ newXS("KVIrc::warning", XS_KVIrc_warning, file);
+ newXS("KVIrc::getLocal", XS_KVIrc_getLocal, file);
+ newXS("KVIrc::setLocal", XS_KVIrc_setLocal, file);
+ newXS("KVIrc::getGlobal", XS_KVIrc_getGlobal, file);
+ newXS("KVIrc::setGlobal", XS_KVIrc_setGlobal, file);
+ newXS("KVIrc::eval", XS_KVIrc_eval, file);
+ newXS("KVIrc::internalWarning", XS_KVIrc_internalWarning, file);
+}
+
+bool KviPerlInterpreter::init()
+{
+ if(m_pInterpreter)done();
+ m_pInterpreter = perl_alloc();
+ if(!m_pInterpreter)return false;
+ PERL_SET_CONTEXT(m_pInterpreter);
+ PL_perl_destruct_level = 1;
+ perl_construct(m_pInterpreter);
+ char * daArgs[] = { "yo", "-e", "0", "-w" };
+ perl_parse(m_pInterpreter,xs_init,4,daArgs,NULL);
+ QString szInitCode;
+
+ // this part of the code seems to be unnecessary
+ // even if it is created by the perl make process...
+ // "our %EXPORT_TAGS = ('all' => [qw(echo)]);\n"
+ // "our @EXPORT_OK = (qw(echo));\n"
+ // "our @EXPORT = qw();\n"
+ // This is probably needed only if perl has to load
+ // the XS through XSLoader ?
+ // Maybe also the remaining part of the package
+ // declaration could be dropped as well...
+ // I just haven't tried :D
+
+ KviQString::sprintf(
+ szInitCode,
+ "{\n" \
+ "package KVIrc;\n" \
+ "require Exporter;\n" \
+ "our @ISA = qw(Exporter);\n" \
+ "1;\n" \
+ "}\n" \
+ "$g_szContext = \"%Q\";\n" \
+ "$g_bExecuteQuiet = 0;\n" \
+ "$SIG{__WARN__} = sub\n" \
+ "{\n" \
+ " my($p,$f,$l,$x);\n" \
+ " ($p,$f,$l) = caller;\n" \
+ " KVIrc::internalWarning(\"At line \".$l.\" of perl code: \");\n" \
+ " KVIrc::internalWarning(join(' ',@_));\n" \
+ "}\n",
+ &m_szContextName);
+
+ eval_pv(szInitCode.utf8().data(),false);
+ return true;
+}
+
+void KviPerlInterpreter::done()
+{
+ if(!m_pInterpreter)return;
+ PERL_SET_CONTEXT(m_pInterpreter);
+ PL_perl_destruct_level = 1;
+ perl_destruct(m_pInterpreter);
+ perl_free(m_pInterpreter);
+ m_pInterpreter = 0;
+}
+
+QString KviPerlInterpreter::svToQString(SV * sv)
+{
+ QString ret = "";
+ if(!sv)return ret;
+ STRLEN len;
+ char * ptr = SvPV(sv,len);
+ if(ptr)ret = ptr;
+ return ret;
+}
+
+bool KviPerlInterpreter::execute(
+ const QString &szCode,
+ QStringList &args,
+ QString &szRetVal,
+ QString &szError,
+ QStringList &lWarnings)
+{
+ if(!m_pInterpreter)
+ {
+ szError = __tr2qs_ctx("Internal error: perl interpreter not initialized","perlcore");
+ return false;
+ }
+
+ g_lWarningList.clear();
+
+ KviQCString szUtf8 = szCode.utf8();
+ PERL_SET_CONTEXT(m_pInterpreter);
+
+ // clear the _ array
+ AV * pArgs = get_av("_",1);
+ SV * pArg = av_shift(pArgs);
+ while(SvOK(pArg))
+ {
+ SvREFCNT_dec(pArg);
+ pArg = av_shift(pArgs);
+ }
+
+ if(args.count() > 0)
+ {
+ // set the args in the _ arry
+ av_unshift(pArgs,(I32)args.count());
+ int idx = 0;
+ for(QStringList::Iterator it = args.begin();it != args.end();++it)
+ {
+ QString tmp = *it;
+ const char * val = tmp.utf8().data();
+ if(val)
+ {
+ pArg = newSVpv(val,tmp.length());
+ if(!av_store(pArgs,idx,pArg))
+ SvREFCNT_dec(pArg);
+ }
+ idx++;
+ }
+ }
+
+ // call the code
+ SV * pRet = eval_pv(szUtf8.data(),false);
+
+ // clear the _ array again
+ pArgs = get_av("_",1);
+ pArg = av_shift(pArgs);
+ while(SvOK(pArg))
+ {
+ SvREFCNT_dec(pArg);
+ pArg = av_shift(pArgs);
+ }
+ av_undef(pArgs);
+
+ // get the ret value
+ if(pRet)
+ {
+ if(SvOK(pRet))
+ szRetVal = svToQString(pRet);
+ }
+
+ if(!g_lWarningList.isEmpty())
+ lWarnings = g_lWarningList;
+
+ // and the eventual error string
+ pRet = get_sv("@",false);
+ if(pRet)
+ {
+ if(SvOK(pRet))
+ {
+ szError = svToQString(pRet);
+ if(!szError.isEmpty())return false;
+ }
+ }
+
+ return true;
+}
+
+static KviPointerHashTable<QString,KviPerlInterpreter> * g_pInterpreters = 0;
+
+static KviPerlInterpreter * perlcore_get_interpreter(const QString &szContextName)
+{
+ KviPerlInterpreter * i = g_pInterpreters->find(szContextName);
+ if(i)return i;
+ i = new KviPerlInterpreter(szContextName);
+ if(!i->init())
+ {
+ delete i;
+ return 0;
+ }
+ g_pInterpreters->replace(szContextName,i);
+ return i;
+}
+
+static void perlcore_destroy_interpreter(const QString &szContextName)
+{
+ KviPerlInterpreter * i = g_pInterpreters->find(szContextName);
+ if(!i)return;
+ g_pInterpreters->remove(szContextName);
+ i->done();
+ delete i;
+}
+
+static void perlcore_destroy_all_interpreters()
+{
+ KviPointerHashTableIterator<QString,KviPerlInterpreter> it(*g_pInterpreters);
+
+ while(it.current())
+ {
+ KviPerlInterpreter * i = it.current();
+ i->done();
+ delete i;
+ ++it;
+ }
+ g_pInterpreters->clear();
+}
+
+#endif // COMPILE_PERL_SUPPORT
+
+static bool perlcore_module_ctrl(KviModule * m,const char * cmd,void * param)
+{
+#ifdef COMPILE_PERL_SUPPORT
+ if(kvi_strEqualCS(cmd,KVI_PERLCORECTRLCOMMAND_EXECUTE))
+ {
+ KviPerlCoreCtrlCommand_execute * ex = (KviPerlCoreCtrlCommand_execute *)param;
+ if(ex->uSize != sizeof(KviPerlCoreCtrlCommand_execute))return false;
+ g_pCurrentKvsContext = ex->pKvsContext;
+ g_bExecuteQuiet = ex->bQuiet;
+ if(ex->szContext.isEmpty())
+ {
+ KviPerlInterpreter * m = new KviPerlInterpreter("temporary");
+ if(!m->init())
+ {
+ delete m;
+ return false;
+ }
+ ex->bExitOk = m->execute(ex->szCode,ex->lArgs,ex->szRetVal,ex->szError,ex->lWarnings);
+ m->done();
+ delete m;
+ } else {
+ KviPerlInterpreter * m = perlcore_get_interpreter(ex->szContext);
+ ex->bExitOk = m->execute(ex->szCode,ex->lArgs,ex->szRetVal,ex->szError,ex->lWarnings);
+ }
+ return true;
+ }
+ if(kvi_strEqualCS(cmd,KVI_PERLCORECTRLCOMMAND_DESTROY))
+ {
+ KviPerlCoreCtrlCommand_destroy * de = (KviPerlCoreCtrlCommand_destroy *)param;
+ if(de->uSize != sizeof(KviPerlCoreCtrlCommand_destroy))return false;
+ perlcore_destroy_interpreter(de->szContext);
+ return true;
+ }
+#endif // COMPILE_PERL_SUPPORT
+ return false;
+}
+
+static bool perlcore_module_init(KviModule * m)
+{
+#ifdef COMPILE_PERL_SUPPORT
+ g_pInterpreters = new KviPointerHashTable<QString,KviPerlInterpreter>(17,false);
+ g_pInterpreters->setAutoDelete(false);
+ return true;
+#else // !COMPILE_PERL_SUPPORT
+ return false;
+#endif // !COMPILE_PERL_SUPPORT
+}
+
+static bool perlcore_module_cleanup(KviModule *m)
+{
+#ifdef COMPILE_PERL_SUPPORT
+ perlcore_destroy_all_interpreters();
+ delete g_pInterpreters;
+ g_pInterpreters = 0;
+#endif // COMPILE_PERL_SUPPORT
+ return true;
+}
+
+static bool perlcore_module_can_unload(KviModule *m)
+{
+#ifdef COMPILE_PERL_SUPPORT
+ return (g_pInterpreters->count() == 0);
+#endif // COMPILE_PERL_SUPPORT
+ return true;
+}
+
+KVIRC_MODULE(
+ "Perl", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2004 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "Perl scripting engine core",
+ perlcore_module_init,
+ perlcore_module_can_unload,
+ perlcore_module_ctrl,
+ perlcore_module_cleanup
+)
diff --git a/src/modules/perlcore/perlcoreinterface.h b/src/modules/perlcore/perlcoreinterface.h
new file mode 100644
index 00000000..a7ceb1fc
--- /dev/null
+++ b/src/modules/perlcore/perlcoreinterface.h
@@ -0,0 +1,59 @@
+#ifndef _PERLCOREINTERFACE_H_
+#define _PERLCOREINTERFACE_H_
+
+//=============================================================================
+//
+// File : perlcoreinterface.h
+// Creation date : Tue Jul 13 13:03:31 2004 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_kvs_runtimecontext.h"
+
+#include <qstringlist.h>
+
+
+#define KVI_PERLCORECTRLCOMMAND_EXECUTE "execute"
+
+typedef struct _KviPerlCoreCtrlCommand_execute
+{
+ unsigned int uSize;
+ KviKvsRunTimeContext * pKvsContext;
+ QString szContext;
+ QString szCode;
+ bool bExitOk;
+ QString szRetVal;
+ QString szError;
+ QStringList lWarnings;
+ QStringList lArgs;
+ bool bQuiet;
+} KviPerlCoreCtrlCommand_execute;
+
+#define KVI_PERLCORECTRLCOMMAND_DESTROY "destroy"
+
+typedef struct _KviPerlCoreCtrlCommand_destroy
+{
+ unsigned int uSize;
+ QString szContext;
+} KviPerlCoreCtrlCommand_destroy;
+
+#endif // !_PERLCOREINTERFACE_H_
diff --git a/src/modules/perlcore/ppport.h b/src/modules/perlcore/ppport.h
new file mode 100644
index 00000000..2a802132
--- /dev/null
+++ b/src/modules/perlcore/ppport.h
@@ -0,0 +1,540 @@
+
+/* ppport.h -- Perl/Pollution/Portability Version 2.0002
+ *
+ * Automatically Created by Devel::PPPort on Tue Jul 13 13:16:39 2004
+ *
+ * Do NOT edit this file directly! -- Edit PPPort.pm instead.
+ *
+ * Version 2.x, Copyright (C) 2001, Paul Marquess.
+ * Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
+ * This code may be used and distributed under the same license as any
+ * version of Perl.
+ *
+ * This version of ppport.h is designed to support operation with Perl
+ * installations back to 5.004, and has been tested up to 5.8.0.
+ *
+ * If this version of ppport.h is failing during the compilation of this
+ * module, please check if a newer version of Devel::PPPort is available
+ * on CPAN before sending a bug report.
+ *
+ * If you are using the latest version of Devel::PPPort and it is failing
+ * during compilation of this module, please send a report to [email protected]
+ *
+ * Include all following information:
+ *
+ * 1. The complete output from running "perl -V"
+ *
+ * 2. This file.
+ *
+ * 3. The name & version of the module you were trying to build.
+ *
+ * 4. A full log of the build that failed.
+ *
+ * 5. Any other information that you think could be relevant.
+ *
+ *
+ * For the latest version of this code, please retreive the Devel::PPPort
+ * module from CPAN.
+ *
+ */
+
+/*
+ * In order for a Perl extension module to be as portable as possible
+ * across differing versions of Perl itself, certain steps need to be taken.
+ * Including this header is the first major one, then using dTHR is all the
+ * appropriate places and using a PL_ prefix to refer to global Perl
+ * variables is the second.
+ *
+ */
+
+
+/* If you use one of a few functions that were not present in earlier
+ * versions of Perl, please add a define before the inclusion of ppport.h
+ * for a static include, or use the GLOBAL request in a single module to
+ * produce a global definition that can be referenced from the other
+ * modules.
+ *
+ * Function: Static define: Extern define:
+ * newCONSTSUB() NEED_newCONSTSUB NEED_newCONSTSUB_GLOBAL
+ *
+ */
+
+
+/* To verify whether ppport.h is needed for your module, and whether any
+ * special defines should be used, ppport.h can be run through Perl to check
+ * your source code. Simply say:
+ *
+ * perl -x ppport.h *.c *.h *.xs foo/bar*.c [etc]
+ *
+ * The result will be a list of patches suggesting changes that should at
+ * least be acceptable, if not necessarily the most efficient solution, or a
+ * fix for all possible problems. It won't catch where dTHR is needed, and
+ * doesn't attempt to account for global macro or function definitions,
+ * nested includes, typemaps, etc.
+ *
+ * In order to test for the need of dTHR, please try your module under a
+ * recent version of Perl that has threading compiled-in.
+ *
+ */
+
+
+/*
+#!/usr/bin/perl
+@ARGV = ("*.xs") if !@ARGV;
+%badmacros = %funcs = %macros = (); $replace = 0;
+foreach (<DATA>) {
+ $funcs{$1} = 1 if /Provide:\s+(\S+)/;
+ $macros{$1} = 1 if /^#\s*define\s+([a-zA-Z0-9_]+)/;
+ $replace = $1 if /Replace:\s+(\d+)/;
+ $badmacros{$2}=$1 if $replace and /^#\s*define\s+([a-zA-Z0-9_]+).*?\s+([a-zA-Z0-9_]+)/;
+ $badmacros{$1}=$2 if /Replace (\S+) with (\S+)/;
+}
+foreach $filename (map(glob($_),@ARGV)) {
+ unless (open(IN, "<$filename")) {
+ warn "Unable to read from $file: $!\n";
+ next;
+ }
+ print "Scanning $filename...\n";
+ $c = ""; while (<IN>) { $c .= $_; } close(IN);
+ $need_include = 0; %add_func = (); $changes = 0;
+ $has_include = ($c =~ /#.*include.*ppport/m);
+
+ foreach $func (keys %funcs) {
+ if ($c =~ /#.*define.*\bNEED_$func(_GLOBAL)?\b/m) {
+ if ($c !~ /\b$func\b/m) {
+ print "If $func isn't needed, you don't need to request it.\n" if
+ $changes += ($c =~ s/^.*#.*define.*\bNEED_$func\b.*\n//m);
+ } else {
+ print "Uses $func\n";
+ $need_include = 1;
+ }
+ } else {
+ if ($c =~ /\b$func\b/m) {
+ $add_func{$func} =1 ;
+ print "Uses $func\n";
+ $need_include = 1;
+ }
+ }
+ }
+
+ if (not $need_include) {
+ foreach $macro (keys %macros) {
+ if ($c =~ /\b$macro\b/m) {
+ print "Uses $macro\n";
+ $need_include = 1;
+ }
+ }
+ }
+
+ foreach $badmacro (keys %badmacros) {
+ if ($c =~ /\b$badmacro\b/m) {
+ $changes += ($c =~ s/\b$badmacro\b/$badmacros{$badmacro}/gm);
+ print "Uses $badmacros{$badmacro} (instead of $badmacro)\n";
+ $need_include = 1;
+ }
+ }
+
+ if (scalar(keys %add_func) or $need_include != $has_include) {
+ if (!$has_include) {
+ $inc = join('',map("#define NEED_$_\n", sort keys %add_func)).
+ "#include \"ppport.h\"\n";
+ $c = "$inc$c" unless $c =~ s/#.*include.*XSUB.*\n/$&$inc/m;
+ } elsif (keys %add_func) {
+ $inc = join('',map("#define NEED_$_\n", sort keys %add_func));
+ $c = "$inc$c" unless $c =~ s/^.*#.*include.*ppport.*$/$inc$&/m;
+ }
+ if (!$need_include) {
+ print "Doesn't seem to need ppport.h.\n";
+ $c =~ s/^.*#.*include.*ppport.*\n//m;
+ }
+ $changes++;
+ }
+
+ if ($changes) {
+ open(OUT,">/tmp/ppport.h.$$");
+ print OUT $c;
+ close(OUT);
+ open(DIFF, "diff -u $filename /tmp/ppport.h.$$|");
+ while (<DIFF>) { s!/tmp/ppport\.h\.$$!$filename.patched!; print STDOUT; }
+ close(DIFF);
+ unlink("/tmp/ppport.h.$$");
+ } else {
+ print "Looks OK\n";
+ }
+}
+__DATA__
+*/
+
+#ifndef _P_P_PORTABILITY_H_
+#define _P_P_PORTABILITY_H_
+
+#ifndef PERL_REVISION
+# ifndef __PATCHLEVEL_H_INCLUDED__
+# include "patchlevel.h"
+# endif
+# ifndef PERL_REVISION
+# define PERL_REVISION (5)
+ /* Replace: 1 */
+# define PERL_VERSION PATCHLEVEL
+# define PERL_SUBVERSION SUBVERSION
+ /* Replace PERL_PATCHLEVEL with PERL_VERSION */
+ /* Replace: 0 */
+# endif
+#endif
+
+#define PERL_BCDVERSION ((PERL_REVISION * 0x1000000L) + (PERL_VERSION * 0x1000L) + PERL_SUBVERSION)
+
+/* It is very unlikely that anyone will try to use this with Perl 6
+ (or greater), but who knows.
+ */
+#if PERL_REVISION != 5
+# error ppport.h only works with Perl version 5
+#endif /* PERL_REVISION != 5 */
+
+#ifndef ERRSV
+# define ERRSV perl_get_sv("@",FALSE)
+#endif
+
+#if (PERL_VERSION < 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION <= 5))
+/* Replace: 1 */
+# define PL_Sv Sv
+# define PL_compiling compiling
+# define PL_copline copline
+# define PL_curcop curcop
+# define PL_curstash curstash
+# define PL_defgv defgv
+# define PL_dirty dirty
+# define PL_dowarn dowarn
+# define PL_hints hints
+# define PL_na na
+# define PL_perldb perldb
+# define PL_rsfp_filters rsfp_filters
+# define PL_rsfpv rsfp
+# define PL_stdingv stdingv
+# define PL_sv_no sv_no
+# define PL_sv_undef sv_undef
+# define PL_sv_yes sv_yes
+/* Replace: 0 */
+#endif
+
+#ifdef HASATTRIBUTE
+# if defined(__GNUC__) && defined(__cplusplus)
+# define PERL_UNUSED_DECL
+# else
+# define PERL_UNUSED_DECL __attribute__((unused))
+# endif
+#else
+# define PERL_UNUSED_DECL
+#endif
+
+#ifndef dNOOP
+# define NOOP (void)0
+# define dNOOP extern int Perl___notused PERL_UNUSED_DECL
+#endif
+
+#ifndef dTHR
+# define dTHR dNOOP
+#endif
+
+#ifndef dTHX
+# define dTHX dNOOP
+# define dTHXa(x) dNOOP
+# define dTHXoa(x) dNOOP
+#endif
+
+#ifndef pTHX
+# define pTHX void
+# define pTHX_
+# define aTHX
+# define aTHX_
+#endif
+
+#ifndef UVSIZE
+# define UVSIZE IVSIZE
+#endif
+
+#ifndef NVTYPE
+# if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
+# define NVTYPE long double
+# else
+# define NVTYPE double
+# endif
+typedef NVTYPE NV;
+#endif
+
+#ifndef INT2PTR
+
+#if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE)
+# define PTRV UV
+# define INT2PTR(any,d) (any)(d)
+#else
+# if PTRSIZE == LONGSIZE
+# define PTRV unsigned long
+# else
+# define PTRV unsigned
+# endif
+# define INT2PTR(any,d) (any)(PTRV)(d)
+#endif
+#define NUM2PTR(any,d) (any)(PTRV)(d)
+#define PTR2IV(p) INT2PTR(IV,p)
+#define PTR2UV(p) INT2PTR(UV,p)
+#define PTR2NV(p) NUM2PTR(NV,p)
+#if PTRSIZE == LONGSIZE
+# define PTR2ul(p) (unsigned long)(p)
+#else
+# define PTR2ul(p) INT2PTR(unsigned long,p)
+#endif
+
+#endif /* !INT2PTR */
+
+#ifndef boolSV
+# define boolSV(b) ((b) ? &PL_sv_yes : &PL_sv_no)
+#endif
+
+#ifndef gv_stashpvn
+# define gv_stashpvn(str,len,flags) gv_stashpv(str,flags)
+#endif
+
+#ifndef newSVpvn
+# define newSVpvn(data,len) ((len) ? newSVpv ((data), (len)) : newSVpv ("", 0))
+#endif
+
+#ifndef newRV_inc
+/* Replace: 1 */
+# define newRV_inc(sv) newRV(sv)
+/* Replace: 0 */
+#endif
+
+/* DEFSV appears first in 5.004_56 */
+#ifndef DEFSV
+# define DEFSV GvSV(PL_defgv)
+#endif
+
+#ifndef SAVE_DEFSV
+# define SAVE_DEFSV SAVESPTR(GvSV(PL_defgv))
+#endif
+
+#ifndef newRV_noinc
+# ifdef __GNUC__
+# define newRV_noinc(sv) \
+ ({ \
+ SV *nsv = (SV*)newRV(sv); \
+ SvREFCNT_dec(sv); \
+ nsv; \
+ })
+# else
+# if defined(USE_THREADS)
+static SV * newRV_noinc (SV * sv)
+{
+ SV *nsv = (SV*)newRV(sv);
+ SvREFCNT_dec(sv);
+ return nsv;
+}
+# else
+# define newRV_noinc(sv) \
+ (PL_Sv=(SV*)newRV(sv), SvREFCNT_dec(sv), (SV*)PL_Sv)
+# endif
+# endif
+#endif
+
+/* Provide: newCONSTSUB */
+
+/* newCONSTSUB from IO.xs is in the core starting with 5.004_63 */
+#if (PERL_VERSION < 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION < 63))
+
+#if defined(NEED_newCONSTSUB)
+static
+#else
+extern void newCONSTSUB(HV * stash, char * name, SV *sv);
+#endif
+
+#if defined(NEED_newCONSTSUB) || defined(NEED_newCONSTSUB_GLOBAL)
+void
+newCONSTSUB(stash,name,sv)
+HV *stash;
+char *name;
+SV *sv;
+{
+ U32 oldhints = PL_hints;
+ HV *old_cop_stash = PL_curcop->cop_stash;
+ HV *old_curstash = PL_curstash;
+ line_t oldline = PL_curcop->cop_line;
+ PL_curcop->cop_line = PL_copline;
+
+ PL_hints &= ~HINT_BLOCK_SCOPE;
+ if (stash)
+ PL_curstash = PL_curcop->cop_stash = stash;
+
+ newSUB(
+
+#if (PERL_VERSION < 3) || ((PERL_VERSION == 3) && (PERL_SUBVERSION < 22))
+ /* before 5.003_22 */
+ start_subparse(),
+#else
+# if (PERL_VERSION == 3) && (PERL_SUBVERSION == 22)
+ /* 5.003_22 */
+ start_subparse(0),
+# else
+ /* 5.003_23 onwards */
+ start_subparse(FALSE, 0),
+# endif
+#endif
+
+ newSVOP(OP_CONST, 0, newSVpv(name,0)),
+ newSVOP(OP_CONST, 0, &PL_sv_no), /* SvPV(&PL_sv_no) == "" -- GMB */
+ newSTATEOP(0, Nullch, newSVOP(OP_CONST, 0, sv))
+ );
+
+ PL_hints = oldhints;
+ PL_curcop->cop_stash = old_cop_stash;
+ PL_curstash = old_curstash;
+ PL_curcop->cop_line = oldline;
+}
+#endif
+
+#endif /* newCONSTSUB */
+
+#ifndef START_MY_CXT
+
+/*
+ * Boilerplate macros for initializing and accessing interpreter-local
+ * data from C. All statics in extensions should be reworked to use
+ * this, if you want to make the extension thread-safe. See ext/re/re.xs
+ * for an example of the use of these macros.
+ *
+ * Code that uses these macros is responsible for the following:
+ * 1. #define MY_CXT_KEY to a unique string, e.g. "DynaLoader_guts"
+ * 2. Declare a typedef named my_cxt_t that is a structure that contains
+ * all the data that needs to be interpreter-local.
+ * 3. Use the START_MY_CXT macro after the declaration of my_cxt_t.
+ * 4. Use the MY_CXT_INIT macro such that it is called exactly once
+ * (typically put in the BOOT: section).
+ * 5. Use the members of the my_cxt_t structure everywhere as
+ * MY_CXT.member.
+ * 6. Use the dMY_CXT macro (a declaration) in all the functions that
+ * access MY_CXT.
+ */
+
+#if defined(MULTIPLICITY) || defined(PERL_OBJECT) || \
+ defined(PERL_CAPI) || defined(PERL_IMPLICIT_CONTEXT)
+
+/* This must appear in all extensions that define a my_cxt_t structure,
+ * right after the definition (i.e. at file scope). The non-threads
+ * case below uses it to declare the data as static. */
+#define START_MY_CXT
+
+#if (PERL_VERSION < 4 || (PERL_VERSION == 4 && PERL_SUBVERSION < 68 ))
+/* Fetches the SV that keeps the per-interpreter data. */
+#define dMY_CXT_SV \
+ SV *my_cxt_sv = perl_get_sv(MY_CXT_KEY, FALSE)
+#else /* >= perl5.004_68 */
+#define dMY_CXT_SV \
+ SV *my_cxt_sv = *hv_fetch(PL_modglobal, MY_CXT_KEY, \
+ sizeof(MY_CXT_KEY)-1, TRUE)
+#endif /* < perl5.004_68 */
+
+/* This declaration should be used within all functions that use the
+ * interpreter-local data. */
+#define dMY_CXT \
+ dMY_CXT_SV; \
+ my_cxt_t *my_cxtp = INT2PTR(my_cxt_t*,SvUV(my_cxt_sv))
+
+/* Creates and zeroes the per-interpreter data.
+ * (We allocate my_cxtp in a Perl SV so that it will be released when
+ * the interpreter goes away.) */
+#define MY_CXT_INIT \
+ dMY_CXT_SV; \
+ /* newSV() allocates one more than needed */ \
+ my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\
+ Zero(my_cxtp, 1, my_cxt_t); \
+ sv_setuv(my_cxt_sv, PTR2UV(my_cxtp))
+
+/* This macro must be used to access members of the my_cxt_t structure.
+ * e.g. MYCXT.some_data */
+#define MY_CXT (*my_cxtp)
+
+/* Judicious use of these macros can reduce the number of times dMY_CXT
+ * is used. Use is similar to pTHX, aTHX etc. */
+#define pMY_CXT my_cxt_t *my_cxtp
+#define pMY_CXT_ pMY_CXT,
+#define _pMY_CXT ,pMY_CXT
+#define aMY_CXT my_cxtp
+#define aMY_CXT_ aMY_CXT,
+#define _aMY_CXT ,aMY_CXT
+
+#else /* single interpreter */
+
+
+#define START_MY_CXT static my_cxt_t my_cxt;
+#define dMY_CXT_SV dNOOP
+#define dMY_CXT dNOOP
+#define MY_CXT_INIT NOOP
+#define MY_CXT my_cxt
+
+#define pMY_CXT void
+#define pMY_CXT_
+#define _pMY_CXT
+#define aMY_CXT
+#define aMY_CXT_
+#define _aMY_CXT
+
+#endif
+
+#endif /* START_MY_CXT */
+
+#ifndef IVdf
+# if IVSIZE == LONGSIZE
+# define IVdf "ld"
+# define UVuf "lu"
+# define UVof "lo"
+# define UVxf "lx"
+# define UVXf "lX"
+# else
+# if IVSIZE == INTSIZE
+# define IVdf "d"
+# define UVuf "u"
+# define UVof "o"
+# define UVxf "x"
+# define UVXf "X"
+# endif
+# endif
+#endif
+
+#ifndef NVef
+# if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && \
+ defined(PERL_PRIfldbl) /* Not very likely, but let's try anyway. */
+# define NVef PERL_PRIeldbl
+# define NVff PERL_PRIfldbl
+# define NVgf PERL_PRIgldbl
+# else
+# define NVef "e"
+# define NVff "f"
+# define NVgf "g"
+# endif
+#endif
+
+#ifndef AvFILLp /* Older perls (<=5.003) lack AvFILLp */
+# define AvFILLp AvFILL
+#endif
+
+#ifdef SvPVbyte
+# if PERL_REVISION == 5 && PERL_VERSION < 7
+ /* SvPVbyte does not work in perl-5.6.1, borrowed version for 5.7.3 */
+# undef SvPVbyte
+# define SvPVbyte(sv, lp) \
+ ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8)) == (SVf_POK) \
+ ? ((lp = SvCUR(sv)), SvPVX(sv)) : my_sv_2pvbyte(aTHX_ sv, &lp))
+ static char *
+ my_sv_2pvbyte(pTHX_ register SV *sv, STRLEN *lp)
+ {
+ sv_utf8_downgrade(sv,0);
+ return SvPV(sv,*lp);
+ }
+# endif
+#else
+# define SvPVbyte SvPV
+#endif
+
+#endif /* _P_P_PORTABILITY_H_ */
+
+/* End of File ppport.h */
diff --git a/src/modules/perlcore/typemap b/src/modules/perlcore/typemap
new file mode 100644
index 00000000..1124eb64
--- /dev/null
+++ b/src/modules/perlcore/typemap
@@ -0,0 +1,313 @@
+# basic C types
+int T_IV
+unsigned T_UV
+unsigned int T_UV
+long T_IV
+unsigned long T_UV
+short T_IV
+unsigned short T_UV
+char T_CHAR
+unsigned char T_U_CHAR
+char * T_PV
+unsigned char * T_PV
+const char * T_PV
+caddr_t T_PV
+wchar_t * T_PV
+wchar_t T_IV
+bool_t T_IV
+size_t T_UV
+ssize_t T_IV
+time_t T_NV
+unsigned long * T_OPAQUEPTR
+char ** T_PACKEDARRAY
+void * T_PTR
+Time_t * T_PV
+SV * T_SV
+SVREF T_SVREF
+AV * T_AVREF
+HV * T_HVREF
+CV * T_CVREF
+
+IV T_IV
+UV T_UV
+NV T_NV
+I32 T_IV
+I16 T_IV
+I8 T_IV
+STRLEN T_UV
+U32 T_U_LONG
+U16 T_U_SHORT
+U8 T_UV
+Result T_U_CHAR
+Boolean T_BOOL
+float T_FLOAT
+double T_DOUBLE
+SysRet T_SYSRET
+SysRetLong T_SYSRET
+FILE * T_STDIO
+PerlIO * T_INOUT
+FileHandle T_PTROBJ
+InputStream T_IN
+InOutStream T_INOUT
+OutputStream T_OUT
+bool T_BOOL
+
+#############################################################################
+INPUT
+T_SV
+ $var = $arg
+T_SVREF
+ if (SvROK($arg))
+ $var = (SV*)SvRV($arg);
+ else
+ Perl_croak(aTHX_ \"$var is not a reference\")
+T_AVREF
+ if (SvROK($arg) && SvTYPE(SvRV($arg))==SVt_PVAV)
+ $var = (AV*)SvRV($arg);
+ else
+ Perl_croak(aTHX_ \"$var is not an array reference\")
+T_HVREF
+ if (SvROK($arg) && SvTYPE(SvRV($arg))==SVt_PVHV)
+ $var = (HV*)SvRV($arg);
+ else
+ Perl_croak(aTHX_ \"$var is not a hash reference\")
+T_CVREF
+ if (SvROK($arg) && SvTYPE(SvRV($arg))==SVt_PVCV)
+ $var = (CV*)SvRV($arg);
+ else
+ Perl_croak(aTHX_ \"$var is not a code reference\")
+T_SYSRET
+ $var NOT IMPLEMENTED
+T_UV
+ $var = ($type)SvUV($arg)
+T_IV
+ $var = ($type)SvIV($arg)
+T_INT
+ $var = (int)SvIV($arg)
+T_ENUM
+ $var = ($type)SvIV($arg)
+T_BOOL
+ $var = (bool)SvTRUE($arg)
+T_U_INT
+ $var = (unsigned int)SvUV($arg)
+T_SHORT
+ $var = (short)SvIV($arg)
+T_U_SHORT
+ $var = (unsigned short)SvUV($arg)
+T_LONG
+ $var = (long)SvIV($arg)
+T_U_LONG
+ $var = (unsigned long)SvUV($arg)
+T_CHAR
+ $var = (char)*SvPV_nolen($arg)
+T_U_CHAR
+ $var = (unsigned char)SvUV($arg)
+T_FLOAT
+ $var = (float)SvNV($arg)
+T_NV
+ $var = ($type)SvNV($arg)
+T_DOUBLE
+ $var = (double)SvNV($arg)
+T_PV
+ $var = ($type)SvPV_nolen($arg)
+T_PTR
+ $var = INT2PTR($type,SvIV($arg))
+T_PTRREF
+ if (SvROK($arg)) {
+ IV tmp = SvIV((SV*)SvRV($arg));
+ $var = INT2PTR($type,tmp);
+ }
+ else
+ Perl_croak(aTHX_ \"$var is not a reference\")
+T_REF_IV_REF
+ if (sv_isa($arg, \"${ntype}\")) {
+ IV tmp = SvIV((SV*)SvRV($arg));
+ $var = *INT2PTR($type *, tmp);
+ }
+ else
+ Perl_croak(aTHX_ \"$var is not of type ${ntype}\")
+T_REF_IV_PTR
+ if (sv_isa($arg, \"${ntype}\")) {
+ IV tmp = SvIV((SV*)SvRV($arg));
+ $var = INT2PTR($type, tmp);
+ }
+ else
+ Perl_croak(aTHX_ \"$var is not of type ${ntype}\")
+T_PTROBJ
+ if (sv_derived_from($arg, \"${ntype}\")) {
+ IV tmp = SvIV((SV*)SvRV($arg));
+ $var = INT2PTR($type,tmp);
+ }
+ else
+ Perl_croak(aTHX_ \"$var is not of type ${ntype}\")
+T_PTRDESC
+ if (sv_isa($arg, \"${ntype}\")) {
+ IV tmp = SvIV((SV*)SvRV($arg));
+ ${type}_desc = (\U${type}_DESC\E*) tmp;
+ $var = ${type}_desc->ptr;
+ }
+ else
+ Perl_croak(aTHX_ \"$var is not of type ${ntype}\")
+T_REFREF
+ if (SvROK($arg)) {
+ IV tmp = SvIV((SV*)SvRV($arg));
+ $var = *INT2PTR($type,tmp);
+ }
+ else
+ Perl_croak(aTHX_ \"$var is not a reference\")
+T_REFOBJ
+ if (sv_isa($arg, \"${ntype}\")) {
+ IV tmp = SvIV((SV*)SvRV($arg));
+ $var = *INT2PTR($type,tmp);
+ }
+ else
+ Perl_croak(aTHX_ \"$var is not of type ${ntype}\")
+T_OPAQUE
+ $var = *($type *)SvPV_nolen($arg)
+T_OPAQUEPTR
+ $var = ($type)SvPV_nolen($arg)
+T_PACKED
+ $var = XS_unpack_$ntype($arg)
+T_PACKEDARRAY
+ $var = XS_unpack_$ntype($arg)
+T_CALLBACK
+ $var = make_perl_cb_$type($arg)
+T_ARRAY
+ U32 ix_$var = $argoff;
+ $var = $ntype(items -= $argoff);
+ while (items--) {
+ DO_ARRAY_ELEM;
+ ix_$var++;
+ }
+ /* this is the number of elements in the array */
+ ix_$var -= $argoff
+T_STDIO
+ $var = PerlIO_findFILE(IoIFP(sv_2io($arg)))
+T_IN
+ $var = IoIFP(sv_2io($arg))
+T_INOUT
+ $var = IoIFP(sv_2io($arg))
+T_OUT
+ $var = IoOFP(sv_2io($arg))
+#############################################################################
+OUTPUT
+T_SV
+ $arg = $var;
+T_SVREF
+ $arg = newRV((SV*)$var);
+T_AVREF
+ $arg = newRV((SV*)$var);
+T_HVREF
+ $arg = newRV((SV*)$var);
+T_CVREF
+ $arg = newRV((SV*)$var);
+T_IV
+ sv_setiv($arg, (IV)$var);
+T_UV
+ sv_setuv($arg, (UV)$var);
+T_INT
+ sv_setiv($arg, (IV)$var);
+T_SYSRET
+ if ($var != -1) {
+ if ($var == 0)
+ sv_setpvn($arg, "0 but true", 10);
+ else
+ sv_setiv($arg, (IV)$var);
+ }
+T_ENUM
+ sv_setiv($arg, (IV)$var);
+T_BOOL
+ $arg = boolSV($var);
+T_U_INT
+ sv_setuv($arg, (UV)$var);
+T_SHORT
+ sv_setiv($arg, (IV)$var);
+T_U_SHORT
+ sv_setuv($arg, (UV)$var);
+T_LONG
+ sv_setiv($arg, (IV)$var);
+T_U_LONG
+ sv_setuv($arg, (UV)$var);
+T_CHAR
+ sv_setpvn($arg, (char *)&$var, 1);
+T_U_CHAR
+ sv_setuv($arg, (UV)$var);
+T_FLOAT
+ sv_setnv($arg, (double)$var);
+T_NV
+ sv_setnv($arg, (NV)$var);
+T_DOUBLE
+ sv_setnv($arg, (double)$var);
+T_PV
+ sv_setpv((SV*)$arg, $var);
+T_PTR
+ sv_setiv($arg, PTR2IV($var));
+T_PTRREF
+ sv_setref_pv($arg, Nullch, (void*)$var);
+T_REF_IV_REF
+ sv_setref_pv($arg, \"${ntype}\", (void*)new $ntype($var));
+T_REF_IV_PTR
+ sv_setref_pv($arg, \"${ntype}\", (void*)$var);
+T_PTROBJ
+ sv_setref_pv($arg, \"${ntype}\", (void*)$var);
+T_PTRDESC
+ sv_setref_pv($arg, \"${ntype}\", (void*)new\U${type}_DESC\E($var));
+T_REFREF
+ NOT_IMPLEMENTED
+T_REFOBJ
+ NOT IMPLEMENTED
+T_OPAQUE
+ sv_setpvn($arg, (char *)&$var, sizeof($var));
+T_OPAQUEPTR
+ sv_setpvn($arg, (char *)$var, sizeof(*$var));
+T_PACKED
+ XS_pack_$ntype($arg, $var);
+T_PACKEDARRAY
+ XS_pack_$ntype($arg, $var, count_$ntype);
+T_DATAUNIT
+ sv_setpvn($arg, $var.chp(), $var.size());
+T_CALLBACK
+ sv_setpvn($arg, $var.context.value().chp(),
+ $var.context.value().size());
+T_ARRAY
+ {
+ U32 ix_$var;
+ EXTEND(SP,size_$var);
+ for (ix_$var = 0; ix_$var < size_$var; ix_$var++) {
+ ST(ix_$var) = sv_newmortal();
+ DO_ARRAY_ELEM
+ }
+ }
+T_STDIO
+ {
+ GV *gv = newGVgen("$Package");
+ PerlIO *fp = PerlIO_importFILE($var,0);
+ if ( fp && do_open(gv, "+<&", 3, FALSE, 0, 0, fp) )
+ sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
+ else
+ $arg = &PL_sv_undef;
+ }
+T_IN
+ {
+ GV *gv = newGVgen("$Package");
+ if ( do_open(gv, "<&", 2, FALSE, 0, 0, $var) )
+ sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
+ else
+ $arg = &PL_sv_undef;
+ }
+T_INOUT
+ {
+ GV *gv = newGVgen("$Package");
+ if ( do_open(gv, "+<&", 3, FALSE, 0, 0, $var) )
+ sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
+ else
+ $arg = &PL_sv_undef;
+ }
+T_OUT
+ {
+ GV *gv = newGVgen("$Package");
+ if ( do_open(gv, "+>&", 3, FALSE, 0, 0, $var) )
+ sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
+ else
+ $arg = &PL_sv_undef;
+ }
diff --git a/src/modules/perlcore/xs.inc b/src/modules/perlcore/xs.inc
new file mode 100644
index 00000000..5c31cb19
--- /dev/null
+++ b/src/modules/perlcore/xs.inc
@@ -0,0 +1,277 @@
+/*
+ * This file was generated automatically by xsubpp version 1.9508 from the
+ * contents of KVIrc.xs. Do not edit this file, edit KVIrc.xs instead.
+ *
+ * ANY CHANGES MADE HERE WILL BE LOST!
+ *
+ */
+
+#line 1 "KVIrc.xs"
+#line 11 "KVIrc.c"
+XS(XS_KVIrc_echo); /* prototype to pass -Wmissing-prototypes */
+XS(XS_KVIrc_echo)
+{
+ dXSARGS;
+ if (items < 1 || items > 3)
+ Perl_croak(aTHX_ "Usage: KVIrc::echo(text, colorset = 0, windowid = 0)");
+ {
+ char * text = (char *)SvPV_nolen(ST(0));
+ int colorset;
+ char * windowid;
+
+ if (items < 2)
+ colorset = 0;
+ else {
+ colorset = (int)SvIV(ST(1));
+ }
+
+ if (items < 3)
+ windowid = 0;
+ else {
+ windowid = (char *)SvPV_nolen(ST(2));
+ }
+#line 8 "KVIrc.xs"
+ if(g_pCurrentKvsContext && text)
+ {
+ KviWindow * pWnd;
+ if(windowid)
+ {
+ pWnd = g_pApp->findWindow(windowid);
+ if(!pWnd)pWnd = g_pCurrentKvsContext->window();
+ } else {
+ pWnd = g_pCurrentKvsContext->window();
+ }
+ pWnd->outputNoFmt(colorset,QString::fromUtf8(text));
+ }
+#line 47 "KVIrc.c"
+ }
+ XSRETURN_EMPTY;
+}
+
+XS(XS_KVIrc_say); /* prototype to pass -Wmissing-prototypes */
+XS(XS_KVIrc_say)
+{
+ dXSARGS;
+ if (items < 1 || items > 2)
+ Perl_croak(aTHX_ "Usage: KVIrc::say(text, windowid = 0)");
+ {
+ char * text = (char *)SvPV_nolen(ST(0));
+ char * windowid;
+
+ if (items < 2)
+ windowid = 0;
+ else {
+ windowid = (char *)SvPV_nolen(ST(1));
+ }
+#line 25 "KVIrc.xs"
+ if(g_pCurrentKvsContext && text)
+ {
+ KviWindow * pWnd;
+ if(windowid)
+ {
+ pWnd = g_pApp->findWindow(windowid);
+ if(!pWnd)pWnd = g_pCurrentKvsContext->window();
+ } else {
+ pWnd = g_pCurrentKvsContext->window();
+ }
+ QString tmp = QString::fromUtf8(text);
+ KviUserInput::parse(tmp,pWnd);
+ }
+#line 81 "KVIrc.c"
+ }
+ XSRETURN_EMPTY;
+}
+
+XS(XS_KVIrc_warning); /* prototype to pass -Wmissing-prototypes */
+XS(XS_KVIrc_warning)
+{
+ dXSARGS;
+ if (items != 1)
+ Perl_croak(aTHX_ "Usage: KVIrc::warning(text)");
+ {
+ char * text = (char *)SvPV_nolen(ST(0));
+#line 42 "KVIrc.xs"
+ if((!g_bExecuteQuiet) && g_pCurrentKvsContext)
+ g_pCurrentKvsContext->warning(text);
+#line 97 "KVIrc.c"
+ }
+ XSRETURN_EMPTY;
+}
+
+XS(XS_KVIrc_internalWarning); /* prototype to pass -Wmissing-prototypes */
+XS(XS_KVIrc_internalWarning)
+{
+ dXSARGS;
+ if (items != 1)
+ Perl_croak(aTHX_ "Usage: KVIrc::internalWarning(text)");
+ {
+ char * text = (char *)SvPV_nolen(ST(0));
+#line 48 "KVIrc.xs"
+ if(!g_bExecuteQuiet)
+ g_lWarningList.append(QString(text));
+#line 113 "KVIrc.c"
+ }
+ XSRETURN_EMPTY;
+}
+
+XS(XS_KVIrc_getLocal); /* prototype to pass -Wmissing-prototypes */
+XS(XS_KVIrc_getLocal)
+{
+ dXSARGS;
+ if (items != 1)
+ Perl_croak(aTHX_ "Usage: KVIrc::getLocal(varname)");
+ {
+ char * varname = (char *)SvPV_nolen(ST(0));
+ char * RETVAL;
+ dXSTARG;
+#line 55 "KVIrc.xs"
+ QString tmp;
+ KviStr hack;
+ if(g_pCurrentKvsContext)
+ {
+ KviKvsVariant * pVar = g_pCurrentKvsContext->localVariables()->find(varname);
+ if(pVar)
+ {
+ pVar->asString(tmp);
+ hack = tmp;
+ RETVAL = hack.ptr();
+ } else RETVAL = "";
+ }
+#line 141 "KVIrc.c"
+ sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
+ }
+ XSRETURN(1);
+}
+
+XS(XS_KVIrc_setLocal); /* prototype to pass -Wmissing-prototypes */
+XS(XS_KVIrc_setLocal)
+{
+ dXSARGS;
+ if (items != 2)
+ Perl_croak(aTHX_ "Usage: KVIrc::setLocal(varname, value)");
+ {
+ char * varname = (char *)SvPV_nolen(ST(0));
+ char * value = (char *)SvPV_nolen(ST(1));
+#line 74 "KVIrc.xs"
+ if(g_pCurrentKvsContext)
+ {
+ if(value && *value)
+ {
+ KviKvsVariant * pVar = g_pCurrentKvsContext->localVariables()->get(varname);
+ pVar->setString(value);
+ } else {
+ g_pCurrentKvsContext->localVariables()->unset(varname);
+ }
+ }
+#line 167 "KVIrc.c"
+ }
+ XSRETURN_EMPTY;
+}
+
+XS(XS_KVIrc_getGlobal); /* prototype to pass -Wmissing-prototypes */
+XS(XS_KVIrc_getGlobal)
+{
+ dXSARGS;
+ if (items != 1)
+ Perl_croak(aTHX_ "Usage: KVIrc::getGlobal(varname)");
+ {
+ char * varname = (char *)SvPV_nolen(ST(0));
+ char * RETVAL;
+ dXSTARG;
+#line 88 "KVIrc.xs"
+ QString tmp;
+ KviStr hack;
+ if(g_pCurrentKvsContext)
+ {
+ KviKvsVariant * pVar = g_pCurrentKvsContext->globalVariables()->find(varname);
+ if(pVar)
+ {
+ pVar->asString(tmp);
+ hack = tmp;
+ RETVAL = hack.ptr();
+ } else RETVAL = "";
+ }
+#line 195 "KVIrc.c"
+ sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
+ }
+ XSRETURN(1);
+}
+
+XS(XS_KVIrc_setGlobal); /* prototype to pass -Wmissing-prototypes */
+XS(XS_KVIrc_setGlobal)
+{
+ dXSARGS;
+ if (items != 2)
+ Perl_croak(aTHX_ "Usage: KVIrc::setGlobal(varname, value)");
+ {
+ char * varname = (char *)SvPV_nolen(ST(0));
+ char * value = (char *)SvPV_nolen(ST(1));
+#line 107 "KVIrc.xs"
+ if(g_pCurrentKvsContext)
+ {
+ if(value && *value)
+ {
+ KviKvsVariant * pVar = g_pCurrentKvsContext->globalVariables()->get(varname);
+ pVar->setString(value);
+ } else {
+ g_pCurrentKvsContext->localVariables()->unset(varname);
+ }
+ }
+#line 221 "KVIrc.c"
+ }
+ XSRETURN_EMPTY;
+}
+
+XS(XS_KVIrc_eval); /* prototype to pass -Wmissing-prototypes */
+XS(XS_KVIrc_eval)
+{
+ dXSARGS;
+ if (items != 1)
+ Perl_croak(aTHX_ "Usage: KVIrc::eval(code)");
+ {
+ char * code = (char *)SvPV_nolen(ST(0));
+ char * RETVAL;
+ dXSTARG;
+#line 122 "KVIrc.xs"
+ if(g_pCurrentKvsContext && code)
+ {
+ KviKvsVariant ret;
+ if(KviKvsScript::run(QString::fromUtf8(code),g_pCurrentKvsContext->window(),0,&ret))
+ {
+ QString tmp;
+ ret.asString(tmp);
+ g_szLastReturnValue = tmp;
+ } else {
+ g_szLastReturnValue = "";
+ }
+ RETVAL = g_szLastReturnValue.ptr();
+ } else {
+ RETVAL = "";
+ }
+#line 252 "KVIrc.c"
+ sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
+ }
+ XSRETURN(1);
+}
+
+#ifdef __cplusplus
+extern "C"
+#endif
+XS(boot_KVIrc); /* prototype to pass -Wmissing-prototypes */
+XS(boot_KVIrc)
+{
+ dXSARGS;
+ char* file = __FILE__;
+
+ newXS("KVIrc::echo", XS_KVIrc_echo, file);
+ newXS("KVIrc::say", XS_KVIrc_say, file);
+ newXS("KVIrc::warning", XS_KVIrc_warning, file);
+ newXS("KVIrc::internalWarning", XS_KVIrc_internalWarning, file);
+ newXS("KVIrc::getLocal", XS_KVIrc_getLocal, file);
+ newXS("KVIrc::setLocal", XS_KVIrc_setLocal, file);
+ newXS("KVIrc::getGlobal", XS_KVIrc_getGlobal, file);
+ newXS("KVIrc::setGlobal", XS_KVIrc_setGlobal, file);
+ newXS("KVIrc::eval", XS_KVIrc_eval, file);
+ XSRETURN_YES;
+}
+
diff --git a/src/modules/popupeditor/Makefile.am b/src/modules/popupeditor/Makefile.am
new file mode 100644
index 00000000..a9e2f1d7
--- /dev/null
+++ b/src/modules/popupeditor/Makefile.am
@@ -0,0 +1,17 @@
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvipopupeditor.la
+
+libkvipopupeditor_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvipopupeditor_la_SOURCES = libkvipopupeditor.cpp popupeditor.cpp
+nodist_libkvipopupeditor_la_SOURCES = moc_popupeditor.cpp
+
+noinst_HEADERS = popupeditor.h
+libkvipopupeditor_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+# noinst_HEADERS=
+
+moc_popupeditor.cpp: popupeditor.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/popupeditor/libkvipopupeditor.cpp b/src/modules/popupeditor/libkvipopupeditor.cpp
new file mode 100644
index 00000000..a223a1e7
--- /dev/null
+++ b/src/modules/popupeditor/libkvipopupeditor.cpp
@@ -0,0 +1,88 @@
+//
+// File : libkvipopupeditor.cpp
+// Creation date : Mon 23 Dec 2002 20:23:59 2002 GMT by Szymon Stefanek
+//
+// This toolbar is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_module.h"
+
+#include "kvi_locale.h"
+
+#include "kvi_frame.h"
+
+#include "popupeditor.h"
+
+KviPopupEditorWindow * g_pPopupEditorWindow = 0;
+
+
+/*
+ @doc: popupeditor.open
+ @type:
+ command
+ @title:
+ popupeditor.open
+ @short:
+ Shows the popup editor
+ @syntax:
+ toolbareditor.open
+ @description:
+ Opens the script popup editor dialog.
+*/
+
+static bool popupeditor_kvs_cmd_open(KviKvsModuleCommandCall * c)
+{
+ if(!g_pPopupEditorWindow)
+ {
+ g_pPopupEditorWindow = new KviPopupEditorWindow(c->window()->frame());
+ c->window()->frame()->addWindow(g_pPopupEditorWindow);
+ }
+
+ g_pPopupEditorWindow->setFocus();
+ return true;
+}
+
+static bool popupeditor_module_init(KviModule * m)
+{
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"open",popupeditor_kvs_cmd_open);
+ g_pPopupEditorWindow = 0;
+ return true;
+}
+
+static bool popupeditor_module_can_unload(KviModule * m)
+{
+ return (g_pPopupEditorWindow == 0);
+}
+
+static bool popupeditor_module_cleanup(KviModule *m)
+{
+ if(g_pPopupEditorWindow)delete g_pPopupEditorWindow;
+ g_pPopupEditorWindow = 0;
+ return true;
+}
+
+KVIRC_MODULE(
+ "PopupEditor", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "Editor for the script popups",
+ popupeditor_module_init,
+ popupeditor_module_can_unload,
+ 0,
+ popupeditor_module_cleanup
+)
diff --git a/src/modules/popupeditor/popupeditor.cpp b/src/modules/popupeditor/popupeditor.cpp
new file mode 100644
index 00000000..942b5b2f
--- /dev/null
+++ b/src/modules/popupeditor/popupeditor.cpp
@@ -0,0 +1,1433 @@
+//=============================================================================
+//
+// File : popupeditor.cpp
+// Creation date : Mon Dec 23 2002 20:28:18 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the linkss of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "popupeditor.h"
+
+#include "kvi_iconmanager.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_imagedialog.h"
+#include "kvi_config.h"
+#include "kvi_filedialog.h"
+#include "kvi_fileutils.h"
+#include "kvi_scripteditor.h"
+#include "kvi_debug.h"
+#include "kvi_locale.h"
+#include "kvi_app.h"
+#include "kvi_kvs_popupmanager.h"
+#include "kvi_kvs_popupmenu.h"
+#include "kvi_kvs_variantlist.h"
+//#include "kvi_parameterlist.h"
+
+#include <qmessagebox.h>
+#include <qdir.h>
+#include <qsplitter.h>
+#include <qlayout.h>
+#include <qlabel.h>
+#include <qtooltip.h>
+#include "kvi_pointerhashtable.h"
+#include <qpushbutton.h>
+#include "kvi_tal_vbox.h"
+
+extern KviPopupEditorWindow * g_pPopupEditorWindow;
+
+
+
+//KviPopupEntryItem
+KviPopupListViewItem::KviPopupListViewItem(KviTalListView * pListView,KviPopupListViewItem * after,Type t)
+: KviTalListViewItem(pListView,after)
+{
+ m_type = t;
+ init();
+}
+
+KviPopupListViewItem::KviPopupListViewItem(KviPopupListViewItem * parent,KviPopupListViewItem * after,Type t)
+: KviTalListViewItem(parent,after)
+{
+ m_type = t;
+ init();
+}
+
+void KviPopupListViewItem::init()
+{
+ switch(m_type)
+ {
+ case Item:
+ setText(1,__tr2qs("Item"));
+ break;
+ case Menu:
+ setText(1,__tr2qs("Submenu"));
+ break;
+ case ExtMenu:
+ setText(1,__tr2qs("External Menu"));
+ break;
+ case Separator:
+ setText(0,"-----------------------");
+ setText(1,__tr2qs("Separator"));
+ break;
+ case Label:
+ setText(1,__tr2qs("Label"));
+ break;
+ case Epilogue:
+ setText(0,__tr2qs("### Epilogue ###"));
+ setText(1,__tr2qs("Epilogue"));
+ break;
+ case Prologue:
+ setText(0,__tr2qs("### Prologue ###"));
+ setText(1,__tr2qs("Prologue"));
+ break;
+ default:
+ break;
+ }
+}
+
+void KviPopupListViewItem::setItemText(const QString & szText)
+{
+ switch(m_type)
+ {
+ case Item:
+ case Menu:
+ case Label:
+ case ExtMenu:
+ m_szText = szText;
+ setText(0,szText);
+ break;
+ default:
+ break;
+ }
+}
+
+void KviPopupListViewItem::setCondition(const QString & szCondition)
+{
+ switch(m_type)
+ {
+ case Item:
+ case Menu:
+ case Label:
+ case ExtMenu:
+ m_szCondition = szCondition;
+ break;
+ default:
+ break;
+ }
+}
+
+void KviPopupListViewItem::setCode(const QString & szCode)
+{
+ switch(m_type)
+ {
+ case Item:
+ case Epilogue:
+ case Prologue:
+ case ExtMenu:
+ m_szCode = szCode;
+ break;
+ default:
+ break;
+ }
+}
+
+void KviPopupListViewItem::setId(const QString & szId)
+{
+ m_szId = szId;
+}
+
+void KviPopupListViewItem::setIcon(const QString & szIcon)
+{
+ switch(m_type)
+ {
+ case Item:
+ case Menu:
+ case Label:
+ case ExtMenu:
+ m_szIcon = szIcon;
+ {
+ QPixmap * pix = g_pIconManager->getImage(szIcon);
+ if(pix)setPixmap(0,*pix);
+ else setPixmap(0,QPixmap());
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+KviSinglePopupEditor::KviSinglePopupEditor(QWidget * par)
+: QWidget(par)
+{
+ m_pLastSelectedItem = 0;
+ m_pContextPopup = new KviTalPopupMenu(this);
+ m_pClipboard = 0;
+ m_pTestPopup = 0;
+
+ QGridLayout * g = new QGridLayout(this,7,3,2,2);
+
+ m_pNameEditor = new QLineEdit(this);
+ QToolTip::add(m_pNameEditor,__tr2qs("Popup name"));
+
+ g->addMultiCellWidget(m_pNameEditor,0,0,0,1);
+
+ m_pMenuButton = new QPushButton(__tr2qs("Test"),this);
+ g->addWidget(m_pMenuButton,0,2);
+ connect(m_pMenuButton,SIGNAL(clicked()),this,SLOT(testPopup()));
+#ifdef COMPILE_USE_QT4
+ QSplitter * spl = new QSplitter(Qt::Vertical,this,"popupeditor");
+ spl->setOpaqueResize(false);
+#else
+ QSplitter * spl = new QSplitter(QSplitter::Vertical,this);
+#endif
+
+ m_pListView = new KviTalListView(spl);
+ m_pListView->addColumn(__tr2qs("Item"));
+ m_pListView->addColumn(__tr2qs("Type"));
+ m_pListView->setMultiSelection(false);
+ m_pListView->setAllColumnsShowFocus(true);
+ m_pListView->setRootIsDecorated(true);
+ m_pListView->setShowSortIndicator(false);
+ m_pListView->setSorting(-1);
+
+
+ connect(m_pListView,SIGNAL(selectionChanged(KviTalListViewItem *)),this,SLOT(selectionChanged(KviTalListViewItem *)));
+ connect(m_pListView,SIGNAL(rightButtonPressed(KviTalListViewItem *,const QPoint &,int)),
+ this,SLOT(itemPressed(KviTalListViewItem *,const QPoint &,int)));
+
+ m_pEditor = KviScriptEditor::createInstance(spl);
+
+ g->addMultiCellWidget(spl,1,1,0,2);
+
+ QLabel * l = new QLabel(__tr2qs("Text:"),this);
+ l->setMargin(2);
+ g->addWidget(l,2,0);
+
+ m_pTextEditor = new QLineEdit(this);
+ QToolTip::add(m_pTextEditor,
+ __tr2qs("<center><b>Visible text</b><br>May contain identifiers that will be evaluated at popup call time.<br>For labels, this text can contain also limited HTML tags.</center>"));
+ g->addMultiCellWidget(m_pTextEditor,2,2,1,2);
+
+ l = new QLabel(__tr2qs("Condition:"),this);
+ l->setMargin(2);
+ g->addWidget(l,3,0);
+
+ m_pConditionEditor = new QLineEdit(this);
+ QToolTip::add(m_pConditionEditor,
+ __tr2qs("<center><b>Boolean condition</b><br>Will be evaluated at popup call time in order to decide if this entry has to be shown.<br>An empty condition evaluates to true.</center>"));
+ g->addMultiCellWidget(m_pConditionEditor,3,3,1,2);
+
+ l = new QLabel(__tr2qs("Icon:"),this);
+ l->setMargin(2);
+ g->addWidget(l,4,0);
+
+ m_pIconEditor = new QLineEdit(this);
+ QToolTip::add(m_pIconEditor,
+ __tr2qs("<center><b>Icon identifier</b><br>May be an internal icon ID, an absolute path or a relative path.<br>Portable scripts should never use absolute paths.</center>"));
+ g->addMultiCellWidget(m_pIconEditor,4,4,1,2);
+
+ l = new QLabel(__tr2qs("External menu:"),this);
+ l->setMargin(2);
+ g->addWidget(l,5,0);
+
+ m_pExtNameEditor = new QLineEdit(this);
+ QToolTip::add(m_pExtNameEditor,
+ __tr2qs("<center><b>External menu name</b><br>This allows to nest externally defined popup menus. The popup menu with the specified name will be looked up at menu setup time.</center>"));
+ g->addMultiCellWidget(m_pExtNameEditor,5,5,1,2);
+
+ l = new QLabel(__tr2qs("Item Id:"),this);
+ l->setMargin(2);
+ g->addWidget(l,6,0);
+
+
+ m_pIdEditor = new QLineEdit(this);
+ QToolTip::add(m_pIdEditor,
+ __tr2qs("<center><b>Item id</b><br>This will allow you to use delpopupitem later.</center>"));
+ g->addMultiCellWidget(m_pIdEditor,6,6,1,2);
+
+
+ g->setColStretch(1,1);
+ g->setRowStretch(1,1);
+
+}
+
+KviSinglePopupEditor::~KviSinglePopupEditor()
+{
+ if(m_pClipboard)delete m_pClipboard;
+ if(m_pTestPopup)delete m_pTestPopup;
+ KviScriptEditor::destroyInstance(m_pEditor);
+}
+
+void KviSinglePopupEditor::testPopup()
+{
+
+ if(m_pTestPopup)delete m_pTestPopup;
+ m_pTestPopup = getMenu();
+ if(!m_pTestPopup)return;
+ connect(m_pTestPopup,SIGNAL(testModeItemClicked(KviKvsPopupMenuItem *)),this,SLOT(testModeMenuItemClicked(KviKvsPopupMenuItem *)));
+ QPoint pnt = m_pMenuButton->mapToGlobal(QPoint(0,m_pMenuButton->height()));
+ KviKvsVariantList * parms = new KviKvsVariantList();
+ parms->append(new KviKvsVariant(QString("test1")));
+ parms->append(new KviKvsVariant(QString("test2")));
+ parms->append(new KviKvsVariant(QString("test3")));
+ parms->append(new KviKvsVariant(QString("test4")));
+ m_pTestPopup->doPopup(pnt,g_pActiveWindow,parms,true);
+}
+
+KviPopupListViewItem * KviSinglePopupEditor::findMatchingItem(KviKvsPopupMenuItem * it,KviPopupListViewItem * item)
+{
+
+ if(it->type() != KviKvsPopupMenuItem::Item)goto not_this_one;
+ if(item->m_type != KviPopupListViewItem::Item)goto not_this_one;
+ if(it->name() != item->m_szId)goto not_this_one;
+ if(it->kvsText())
+ {
+ if(it->kvsText()->code() != item->m_szText)goto not_this_one;
+ } else {
+ if(!item->m_szText.isEmpty())goto not_this_one;
+ }
+ if(it->kvsCode())
+ {
+ if(it->kvsCode()->code() != item->m_szCode)goto not_this_one;
+ } else {
+ if(!item->m_szCode.isEmpty())goto not_this_one;
+ }
+ if(it->kvsIcon())
+ {
+ if(it->kvsIcon()->code() != item->m_szIcon)goto not_this_one;
+ } else {
+ if(!item->m_szIcon.isEmpty())goto not_this_one;
+ }
+ if(it->kvsCondition())
+ {
+ if(it->kvsCondition()->code() != item->m_szCondition)goto not_this_one;
+ } else {
+ if(!item->m_szCondition.isEmpty())goto not_this_one;
+ }
+
+ return item;
+
+not_this_one:
+ item = (KviPopupListViewItem *)item->firstChild();
+ while(item)
+ {
+ KviPopupListViewItem * found = findMatchingItem(it,item);
+ if(found)return found;
+ item = (KviPopupListViewItem *)item->nextSibling();
+ }
+
+ return 0;
+}
+
+void KviSinglePopupEditor::testModeMenuItemClicked(KviKvsPopupMenuItem * it)
+{
+
+ saveLastSelectedItem(); // that's the first thingie
+ // find the matching item and set it as current
+ KviPopupListViewItem * item = (KviPopupListViewItem *)m_pListView->firstChild();
+ while(item)
+ {
+ KviPopupListViewItem * found = findMatchingItem(it,item);
+ if(found)
+ {
+ // set the item as current
+ m_pListView->ensureItemVisible(found);
+ m_pListView->setCurrentItem(found);
+ selectionChanged(found);
+ return;
+ }
+ item = (KviPopupListViewItem *)item->nextSibling();
+ }
+
+}
+
+
+void KviSinglePopupEditor::itemPressed(KviTalListViewItem *it,const QPoint &pnt,int col)
+{
+ m_pContextPopup->clear();
+
+ KviPopupListViewItem * parentMenu = 0;
+ bool bIsMenu = false;
+
+ if(it)
+ {
+ parentMenu = (KviPopupListViewItem *) (((KviPopupListViewItem *)it)->parent());
+ bIsMenu = ((KviPopupListViewItem *)it)->m_type == KviPopupListViewItem::Menu;
+ }
+
+ m_pContextPopup->insertItem(__tr2qs("New Separator Below"),this,SLOT(contextNewSeparatorBelow()));
+ m_pContextPopup->setItemEnabled(
+ m_pContextPopup->insertItem(__tr2qs("New Separator Above"),this,SLOT(contextNewSeparatorAbove())),
+ it);
+ m_pContextPopup->setItemEnabled(
+ m_pContextPopup->insertItem(__tr2qs("New Separator Inside"),this,SLOT(contextNewSeparatorInside())),
+ it && bIsMenu);
+
+ m_pContextPopup->insertSeparator();
+
+ m_pContextPopup->insertItem(__tr2qs("New Label Below"),this,SLOT(contextNewLabelBelow()));
+ m_pContextPopup->setItemEnabled(
+ m_pContextPopup->insertItem(__tr2qs("New Label Above"),this,SLOT(contextNewLabelAbove())),
+ it);
+ m_pContextPopup->setItemEnabled(
+ m_pContextPopup->insertItem(__tr2qs("New Label Inside"),this,SLOT(contextNewLabelInside())),
+ it && bIsMenu);
+
+ m_pContextPopup->insertSeparator();
+
+ m_pContextPopup->insertItem(__tr2qs("New Item Below"),this,SLOT(contextNewItemBelow()));
+ m_pContextPopup->setItemEnabled(
+ m_pContextPopup->insertItem(__tr2qs("New Item Above"),this,SLOT(contextNewItemAbove())),
+ it);
+ m_pContextPopup->setItemEnabled(
+ m_pContextPopup->insertItem(__tr2qs("New Item Inside"),this,SLOT(contextNewItemInside())),
+ it && bIsMenu);
+
+ m_pContextPopup->insertSeparator();
+
+ m_pContextPopup->insertItem(__tr2qs("New Menu Below"),this,SLOT(contextNewMenuBelow()));
+ m_pContextPopup->setItemEnabled(
+ m_pContextPopup->insertItem(__tr2qs("New Menu Above"),this,SLOT(contextNewMenuAbove())),
+ it);
+ m_pContextPopup->setItemEnabled(
+ m_pContextPopup->insertItem(__tr2qs("New Menu Inside"),this,SLOT(contextNewMenuInside())),
+ it && bIsMenu);
+
+ m_pContextPopup->insertSeparator();
+
+ m_pContextPopup->insertItem(__tr2qs("New External Menu Below"),this,SLOT(contextNewExtMenuBelow()));
+ m_pContextPopup->setItemEnabled(
+ m_pContextPopup->insertItem(__tr2qs("New External Menu Above"),this,SLOT(contextNewExtMenuAbove())),
+ it);
+ m_pContextPopup->setItemEnabled(
+ m_pContextPopup->insertItem(__tr2qs("New External Menu Inside"),this,SLOT(contextNewExtMenuInside())),
+ it && bIsMenu);
+
+ m_pContextPopup->insertSeparator();
+
+ m_pContextPopup->setItemEnabled(
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_CUT)),
+ __tr2qs("Cu&t"),
+ this,SLOT(contextCut())),
+ it);
+ m_pContextPopup->setItemEnabled(
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_COPY)),
+ __tr2qs("&Copy"),
+ this,SLOT(contextCopy())),
+ it);
+ m_pContextPopup->setItemEnabled(
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_PASTE)),
+ __tr2qs("&Paste Below"),this,SLOT(contextPasteBelow())),
+ m_pClipboard);
+ m_pContextPopup->setItemEnabled(
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_PASTE)),
+ __tr2qs("Paste Above"),this,SLOT(contextPasteAbove())),
+ it && m_pClipboard);
+ m_pContextPopup->setItemEnabled(
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_PASTE)),
+ __tr2qs("Paste Inside"),this,SLOT(contextPasteInside())),
+ it && bIsMenu && m_pClipboard);
+
+
+ bool bSeparatorInserted = false;
+
+// if(!findPrologue(parentMenu))
+// {
+ m_pContextPopup->insertSeparator();
+ bSeparatorInserted = true;
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_PROLOGUE)),
+ __tr2qs("New Menu Prologue"),this,SLOT(contextNewPrologue()));
+// }
+
+// if(!findEpilogue(parentMenu))
+// {
+ if(!bSeparatorInserted)m_pContextPopup->insertSeparator();
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_EPILOGUE)),
+ __tr2qs("New Menu Epilogue"),this,SLOT(contextNewEpilogue()));
+// }
+
+ m_pContextPopup->popup(pnt);
+}
+
+void KviSinglePopupEditor::createNewItemAboveLastSelected(KviPopupListViewItem::Type t)
+{
+ m_pListView->setCurrentItem(newItemAbove(m_pLastSelectedItem,t));
+}
+
+void KviSinglePopupEditor::createNewItemBelowLastSelected(KviPopupListViewItem::Type t)
+{
+ m_pListView->setCurrentItem(newItemBelow(m_pLastSelectedItem,t));
+}
+
+void KviSinglePopupEditor::createNewItemInsideLastSelected(KviPopupListViewItem::Type t)
+{
+ if(m_pLastSelectedItem)m_pLastSelectedItem->setOpen(true);
+ m_pListView->setCurrentItem(newItemInside(m_pLastSelectedItem,t));
+}
+
+void KviSinglePopupEditor::contextNewSeparatorAbove()
+{
+ createNewItemAboveLastSelected(KviPopupListViewItem::Separator);
+}
+
+void KviSinglePopupEditor::contextNewSeparatorBelow()
+{
+ createNewItemBelowLastSelected(KviPopupListViewItem::Separator);
+}
+
+void KviSinglePopupEditor::contextNewSeparatorInside()
+{
+ createNewItemInsideLastSelected(KviPopupListViewItem::Separator);
+}
+
+void KviSinglePopupEditor::contextNewItemBelow()
+{
+ createNewItemBelowLastSelected(KviPopupListViewItem::Item);
+}
+
+void KviSinglePopupEditor::contextNewItemAbove()
+{
+ createNewItemAboveLastSelected(KviPopupListViewItem::Item);
+}
+
+void KviSinglePopupEditor::contextNewItemInside()
+{
+ createNewItemInsideLastSelected(KviPopupListViewItem::Item);
+}
+
+void KviSinglePopupEditor::contextNewMenuBelow()
+{
+ createNewItemBelowLastSelected(KviPopupListViewItem::Menu);
+}
+
+void KviSinglePopupEditor::contextNewMenuAbove()
+{
+ createNewItemAboveLastSelected(KviPopupListViewItem::Menu);
+}
+
+void KviSinglePopupEditor::contextNewMenuInside()
+{
+ createNewItemInsideLastSelected(KviPopupListViewItem::Menu);
+}
+
+void KviSinglePopupEditor::contextNewExtMenuBelow()
+{
+ createNewItemBelowLastSelected(KviPopupListViewItem::ExtMenu);
+}
+
+void KviSinglePopupEditor::contextNewExtMenuAbove()
+{
+ createNewItemAboveLastSelected(KviPopupListViewItem::ExtMenu);
+}
+void KviSinglePopupEditor::contextNewExtMenuInside()
+{
+ createNewItemInsideLastSelected(KviPopupListViewItem::ExtMenu);
+}
+
+
+void KviSinglePopupEditor::contextNewLabelBelow()
+{
+ createNewItemBelowLastSelected(KviPopupListViewItem::Label);
+}
+
+void KviSinglePopupEditor::contextNewLabelAbove()
+{
+ createNewItemAboveLastSelected(KviPopupListViewItem::Label);
+}
+
+void KviSinglePopupEditor::contextNewLabelInside()
+{
+ createNewItemInsideLastSelected(KviPopupListViewItem::Label);
+}
+
+KviPopupListViewItem * KviSinglePopupEditor::newItem(KviPopupListViewItem * par,KviPopupListViewItem * after,KviPopupListViewItem::Type t)
+{
+ if(par)return new KviPopupListViewItem(par,after,t);
+ return new KviPopupListViewItem(m_pListView,after,t);
+}
+
+KviPopupListViewItem * KviSinglePopupEditor::newItemBelow(KviPopupListViewItem * it,KviPopupListViewItem::Type t)
+{
+ if(!it)return newItem(0,0,t);
+ return newItem((KviPopupListViewItem *)it->parent(),it,t);
+}
+
+KviPopupListViewItem * KviSinglePopupEditor::newItemAbove(KviPopupListViewItem * it,KviPopupListViewItem::Type t)
+{
+ if(!it)return newItem(0,0,t);
+ return newItem((KviPopupListViewItem *)it->parent(),(KviPopupListViewItem *)it->itemAbove(),t);
+}
+
+KviPopupListViewItem * KviSinglePopupEditor::newItemInside(KviPopupListViewItem * it,KviPopupListViewItem::Type t)
+{
+ if(it)
+ {
+ if(it->m_type != KviPopupListViewItem::Menu)
+ {
+ return newItemBelow(it,t);
+ }
+ }
+ return newItem(it,it,t);
+}
+
+void KviSinglePopupEditor::contextNewPrologue()
+{
+ KviPopupListViewItem * it = m_pLastSelectedItem ? (KviPopupListViewItem *)m_pLastSelectedItem->parent() : 0;
+// if(!findPrologue(it))
+// {
+ m_pListView->setCurrentItem(newItem(it,it,KviPopupListViewItem::Prologue));
+// }
+}
+
+void KviSinglePopupEditor::contextNewEpilogue()
+{
+ KviPopupListViewItem * it = m_pLastSelectedItem ? (KviPopupListViewItem *)m_pLastSelectedItem->parent() : 0;
+// if(!findEpilogue(it))
+// {
+ KviPopupListViewItem * after = it ? (KviPopupListViewItem *)it->firstChild() : (KviPopupListViewItem *)m_pListView->firstChild();
+ if(after)
+ {
+ while(after->nextSibling())after = (KviPopupListViewItem *)after->nextSibling();
+ } else {
+ after = it;
+ }
+ m_pListView->setCurrentItem(newItem(it,after,KviPopupListViewItem::Epilogue));
+// }
+}
+
+void KviSinglePopupEditor::contextCopy()
+{
+ if(!m_pLastSelectedItem)return;
+ if(m_pClipboard)delete m_pClipboard;
+ m_pClipboard = new KviKvsPopupMenu("clipboard");
+ addItemToMenu(m_pClipboard,m_pLastSelectedItem);
+}
+
+void KviSinglePopupEditor::contextCut()
+{
+ if(!m_pLastSelectedItem)return;
+ contextCopy();
+
+ KviPopupListViewItem * it = m_pLastSelectedItem;
+ m_pLastSelectedItem = 0;
+ delete it;
+ if(!m_pLastSelectedItem)selectionChanged(0);
+}
+
+
+void KviSinglePopupEditor::contextPasteBelow()
+{
+ if(!m_pClipboard)return;
+ KviPopupListViewItem * par = m_pLastSelectedItem ? (KviPopupListViewItem *)m_pLastSelectedItem->parent() : 0;
+ populateMenu(m_pClipboard,par,m_pLastSelectedItem);
+}
+
+void KviSinglePopupEditor::contextPasteAbove()
+{
+ if(!m_pClipboard)return;
+ KviPopupListViewItem * par = m_pLastSelectedItem ? (KviPopupListViewItem *)m_pLastSelectedItem->parent() : 0;
+ KviPopupListViewItem * above = m_pLastSelectedItem ? (KviPopupListViewItem *)m_pLastSelectedItem->itemAbove() : 0;
+ populateMenu(m_pClipboard,par,above);
+
+}
+
+void KviSinglePopupEditor::contextPasteInside()
+{
+ if(!m_pClipboard)return;
+ if(m_pLastSelectedItem)
+ {
+ if(m_pLastSelectedItem->m_type != KviPopupListViewItem::Menu)
+ {
+ contextPasteBelow();
+ return;
+ }
+ m_pLastSelectedItem->setOpen(true);
+ }
+ populateMenu(m_pClipboard,m_pLastSelectedItem,0);
+}
+
+void KviSinglePopupEditor::saveLastSelectedItem()
+{
+ if(!m_pLastSelectedItem)return;
+
+ QString tmp;
+
+ switch(m_pLastSelectedItem->m_type)
+ {
+ case KviPopupListViewItem::Prologue:
+ case KviPopupListViewItem::Epilogue:
+ case KviPopupListViewItem::Item:
+ {
+ QString tmpx;
+ m_pEditor->getText(tmpx);
+ m_pLastSelectedItem->setCode(tmpx);
+ }
+ break;
+ default:
+ break;
+ }
+
+ m_pLastSelectedItem->setId(m_pIdEditor->text());
+
+ switch(m_pLastSelectedItem->m_type)
+ {
+ case KviPopupListViewItem::Menu:
+ case KviPopupListViewItem::ExtMenu:
+ case KviPopupListViewItem::Item:
+ m_pLastSelectedItem->setIcon(m_pIconEditor->text());
+ break;
+ default:
+ break;
+ }
+
+ switch(m_pLastSelectedItem->m_type)
+ {
+ case KviPopupListViewItem::Menu:
+ case KviPopupListViewItem::Item:
+ case KviPopupListViewItem::Label:
+ case KviPopupListViewItem::ExtMenu:
+ m_pLastSelectedItem->setItemText(m_pTextEditor->text());
+ m_pLastSelectedItem->setCondition(m_pConditionEditor->text());
+ break;
+ default:
+ break;
+ }
+
+ if(m_pLastSelectedItem->m_type == KviPopupListViewItem::ExtMenu)
+ {
+ m_pLastSelectedItem->setCode(m_pExtNameEditor->text());
+ }
+}
+
+void KviSinglePopupEditor::addItemToMenu(KviKvsPopupMenu * p,KviPopupListViewItem *it)
+{
+ it->m_szId.stripWhiteSpace();
+ switch(it->m_type)
+ {
+ case KviPopupListViewItem::Prologue:
+ it->m_szCode.stripWhiteSpace();
+ p->addPrologue(it->m_szId,it->m_szCode);
+ break;
+ case KviPopupListViewItem::Epilogue:
+ it->m_szCode.stripWhiteSpace();
+ p->addEpilogue(it->m_szId,it->m_szCode);
+ break;
+ case KviPopupListViewItem::Separator:
+ it->m_szCondition.stripWhiteSpace();
+ p->addSeparator(it->m_szId,it->m_szCondition);
+ break;
+ case KviPopupListViewItem::Label:
+ it->m_szText.stripWhiteSpace();
+ it->m_szCondition.stripWhiteSpace();
+ it->m_szIcon.stripWhiteSpace();
+ p->addLabel(it->m_szId,it->m_szText,it->m_szIcon,it->m_szCondition);
+ break;
+ case KviPopupListViewItem::Item:
+ it->m_szText.stripWhiteSpace();
+ it->m_szIcon.stripWhiteSpace();
+ it->m_szCondition.stripWhiteSpace();
+ it->m_szCode.stripWhiteSpace();
+ p->addItem(it->m_szId,it->m_szCode,it->m_szText,it->m_szIcon,it->m_szCondition);
+ break;
+ case KviPopupListViewItem::ExtMenu:
+ it->m_szText.stripWhiteSpace();
+ it->m_szIcon.stripWhiteSpace();
+ it->m_szCondition.stripWhiteSpace();
+ it->m_szCode.stripWhiteSpace();// <-- this is the ext name in fact
+ p->addExtPopup(it->m_szId,it->m_szCode,it->m_szText,it->m_szIcon,it->m_szCondition);
+ break;
+ case KviPopupListViewItem::Menu:
+ {
+ it->m_szText.stripWhiteSpace();
+ it->m_szIcon.stripWhiteSpace();
+ it->m_szCondition.stripWhiteSpace();
+ KviKvsPopupMenu * menu = p->addPopup(it->m_szId,it->m_szText,it->m_szIcon,it->m_szCondition);
+ for(KviPopupListViewItem * item = (KviPopupListViewItem *)it->firstChild();item;item = (KviPopupListViewItem *)item->nextSibling())
+ {
+ addItemToMenu(menu,item);
+ }
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+KviKvsPopupMenu * KviSinglePopupEditor::getMenu()
+{
+ saveLastSelectedItem();
+
+ QString tmp = m_pNameEditor->text();
+ tmp.stripWhiteSpace();
+
+ KviKvsPopupMenu * p = new KviKvsPopupMenu(tmp);
+ for(KviPopupListViewItem * it = (KviPopupListViewItem *)m_pListView->firstChild();it;it = (KviPopupListViewItem *)it->nextSibling())
+ {
+ addItemToMenu(p,it);
+ }
+ return p;
+}
+
+void KviSinglePopupEditor::selectionChanged(KviTalListViewItem * it)
+{
+ saveLastSelectedItem();
+
+ bool bEditorEnabled = false;
+ bool bIconEditorEnabled = false;
+ bool bConditionEditorEnabled = false;
+ bool bTextEditorEnabled = false;
+ bool bNameEditorEnabled = false;
+
+ if(it)
+ {
+ m_pIdEditor->setText(((KviPopupListViewItem *)it)->m_szId);
+
+ switch(((KviPopupListViewItem *)it)->m_type)
+ {
+ case KviPopupListViewItem::Prologue:
+ case KviPopupListViewItem::Epilogue:
+ case KviPopupListViewItem::Item:
+ m_pEditor->setText(((KviPopupListViewItem *)it)->m_szCode);
+ bEditorEnabled = true;
+ break;
+ default:
+ break;
+ }
+
+ switch(((KviPopupListViewItem *)it)->m_type)
+ {
+ case KviPopupListViewItem::Menu:
+ case KviPopupListViewItem::Item:
+ case KviPopupListViewItem::Label:
+ case KviPopupListViewItem::ExtMenu:
+ m_pIconEditor->setText(((KviPopupListViewItem *)it)->m_szIcon);
+ bIconEditorEnabled = true;
+ break;
+ default:
+ break; }
+
+ switch(((KviPopupListViewItem *)it)->m_type)
+ {
+ case KviPopupListViewItem::Menu:
+ case KviPopupListViewItem::Item:
+ case KviPopupListViewItem::Label:
+ case KviPopupListViewItem::ExtMenu:
+ m_pConditionEditor->setText(((KviPopupListViewItem *)it)->m_szCondition);
+ bConditionEditorEnabled = true;
+ m_pTextEditor->setText(((KviPopupListViewItem *)it)->m_szText);
+ bTextEditorEnabled = true;
+ break;
+ default:
+ break;
+ }
+
+ if(((KviPopupListViewItem *)it)->m_type == KviPopupListViewItem::ExtMenu)
+ {
+ m_pExtNameEditor->setText(((KviPopupListViewItem *)it)->m_szCode);
+ bNameEditorEnabled =true;
+ }
+ }
+
+ m_pLastSelectedItem = (KviPopupListViewItem *)it;
+
+ if(!bEditorEnabled)m_pEditor->setText("");
+ m_pEditor->setEnabled(bEditorEnabled);
+ if(!bIconEditorEnabled)m_pIconEditor->setText("");
+ m_pIconEditor->setEnabled(bIconEditorEnabled);
+ if(!bConditionEditorEnabled)m_pConditionEditor->setText("");
+ m_pConditionEditor->setEnabled(bConditionEditorEnabled);
+ if(!bTextEditorEnabled)m_pTextEditor->setText("");
+ m_pTextEditor->setEnabled(bTextEditorEnabled);
+ m_pExtNameEditor->setEnabled(bNameEditorEnabled);
+ if(!bNameEditorEnabled)m_pExtNameEditor->setText("");
+ if(!it)m_pIdEditor->setText("");
+ m_pIdEditor->setEnabled(it);
+}
+
+void KviSinglePopupEditor::populateMenu(KviKvsPopupMenu * pop,KviPopupListViewItem * par,KviPopupListViewItem * theItem)
+{
+ if(!pop)return;
+
+ for(KviKvsScript * sp = pop->prologues()->first();sp;sp = pop->prologues()->next())
+ {
+ if(par)theItem = new KviPopupListViewItem(par,theItem,KviPopupListViewItem::Prologue);
+ else theItem = new KviPopupListViewItem(m_pListView,theItem,KviPopupListViewItem::Prologue);
+ theItem->setCode(sp->code());
+ theItem->setId(sp->name());
+ }
+
+ for(KviKvsPopupMenuItem * item = pop->m_pItemList->first();item;item = pop->m_pItemList->next())
+ {
+ switch(item->type())
+ {
+ case KviKvsPopupMenuItem::Item:
+ if(par)theItem = new KviPopupListViewItem(par,theItem,KviPopupListViewItem::Item);
+ else theItem = new KviPopupListViewItem(m_pListView,theItem,KviPopupListViewItem::Item);
+ theItem->setIcon(item->kvsIcon() ? item->kvsIcon()->code() : QString::null);
+ theItem->setItemText(item->kvsText() ? item->kvsText()->code() : QString::null);
+ theItem->setCondition(item->kvsCondition() ? item->kvsCondition()->code() : QString::null);
+ theItem->setCode(item->kvsCode() ? item->kvsCode()->code() : QString::null);
+ theItem->setId(item->name());
+ break;
+ case KviKvsPopupMenuItem::ExtMenu:
+ if(par)theItem = new KviPopupListViewItem(par,theItem,KviPopupListViewItem::ExtMenu);
+ else theItem = new KviPopupListViewItem(m_pListView,theItem,KviPopupListViewItem::ExtMenu);
+ theItem->setIcon(item->kvsIcon() ? item->kvsIcon()->code() : QString::null);
+ theItem->setItemText(item->kvsText() ? item->kvsText()->code() : QString::null);
+ theItem->setCondition(item->kvsCondition() ? item->kvsCondition()->code() : QString::null);
+ theItem->setCode(((KviKvsPopupMenuItemExtMenu *)item)->extName());
+ theItem->setId(item->name());
+ break;
+ case KviKvsPopupMenuItem::Label:
+ if(par)theItem = new KviPopupListViewItem(par,theItem,KviPopupListViewItem::Label);
+ else theItem = new KviPopupListViewItem(m_pListView,theItem,KviPopupListViewItem::Label);
+ theItem->setIcon(item->kvsIcon() ? item->kvsIcon()->code() : QString::null);
+ theItem->setItemText(item->kvsText() ? item->kvsText()->code() : QString::null);
+ theItem->setCondition(item->kvsCondition() ? item->kvsCondition()->code() : QString::null);
+ theItem->setId(item->name());
+ break;
+ case KviKvsPopupMenuItem::Separator:
+ if(par)theItem = new KviPopupListViewItem(par,theItem,KviPopupListViewItem::Separator);
+ else theItem = new KviPopupListViewItem(m_pListView,theItem,KviPopupListViewItem::Separator);
+ theItem->setId(item->name());
+ break;
+ case KviKvsPopupMenuItem::Menu:
+ if(par)theItem = new KviPopupListViewItem(par,theItem,KviPopupListViewItem::Menu);
+ else theItem = new KviPopupListViewItem(m_pListView,theItem,KviPopupListViewItem::Menu);
+ theItem->setIcon(item->kvsIcon() ? item->kvsIcon()->code() : QString::null);
+ theItem->setItemText(item->kvsText() ? item->kvsText()->code() : QString::null);
+ theItem->setCondition(item->kvsCondition() ? item->kvsCondition()->code() : QString::null);
+ theItem->setId(item->name());
+ populateMenu(((KviKvsPopupMenuItemMenu *)item)->menu(),theItem,0);
+ break;
+ default:
+ break;
+ }
+ }
+
+ for(KviKvsScript * se = pop->epilogues()->first();se;se = pop->epilogues()->next())
+ {
+ if(par)theItem = new KviPopupListViewItem(par,theItem,KviPopupListViewItem::Epilogue);
+ else theItem = new KviPopupListViewItem(m_pListView,theItem,KviPopupListViewItem::Epilogue);
+ theItem->setCode(se->code());
+ theItem->setId(se->name());
+ }
+}
+
+
+
+void KviSinglePopupEditor::edit(KviMenuListViewItem * it)
+{
+ saveLastSelectedItem();
+
+ m_pLastSelectedItem = 0;
+
+ m_pListView->clear();
+
+ selectionChanged(0);
+
+ if(it)
+ {
+ m_pNameEditor->setText(it->m_pPopup->popupName());
+
+ populateMenu(it->m_pPopup,0,0);
+
+ } else {
+ m_pIconEditor->setText("");
+ m_pIconEditor->setEnabled(false);
+ m_pIdEditor->setText("");
+ m_pIdEditor->setEnabled(false);
+ m_pConditionEditor->setText("");
+ m_pConditionEditor->setEnabled(false);
+ m_pTextEditor->setText("");
+ m_pTextEditor->setEnabled(false);
+ m_pEditor->setText("");
+ m_pEditor->setEnabled(false);
+ m_pNameEditor->setText("");
+ m_pExtNameEditor->setText("");
+ m_pExtNameEditor->setEnabled(false);
+ }
+ m_pListView->setEnabled(it);
+ m_pNameEditor->setEnabled(it);
+ m_pMenuButton->setEnabled(it);
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+KviMenuListViewItem::KviMenuListViewItem(KviTalListView * par,KviKvsPopupMenu * popup)
+: KviTalListViewItem(par)
+{
+ setPixmap(0,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_POPUP)));
+ setText(0,popup->name());
+ m_pPopup = popup;
+}
+
+KviMenuListViewItem::~KviMenuListViewItem()
+{
+ delete m_pPopup;
+}
+
+void KviMenuListViewItem::replacePopup(KviKvsPopupMenu * popup)
+{
+ delete m_pPopup;
+ m_pPopup = popup;
+}
+
+
+KviPopupEditor::KviPopupEditor(QWidget * par)
+: QWidget(par)
+{
+ QGridLayout * l = new QGridLayout(this,1,1,0,2);
+#ifdef COMPILE_USE_QT4
+ QSplitter * spl = new QSplitter(Qt::Horizontal,this,"popupeditor");
+ spl->setOpaqueResize(false);
+#else
+ QSplitter * spl = new QSplitter(QSplitter::Horizontal,this);
+#endif
+ l->addWidget(spl,0,0);
+
+ KviTalVBox * box = new KviTalVBox(spl);
+
+ m_pListView = new KviTalListView(box);
+ m_pListView->addColumn(__tr2qs("Popup"));
+ m_pListView->setSelectionMode(KviTalListView::Extended);
+ m_pListView->setShowSortIndicator(true);
+
+ QPushButton * pb = new QPushButton(__tr2qs("&Export All To..."),box);
+ connect(pb,SIGNAL(clicked()),this,SLOT(exportAll()));
+ QPushButton * gn = new QPushButton(__tr2qs("&Export selected To..."),box);
+ connect(gn,SIGNAL(clicked()),this,SLOT(exportSelected()));
+
+ m_pEditor = new KviSinglePopupEditor(spl);
+
+ m_bOneTimeSetupDone = false;
+ m_pLastEditedItem = 0;
+
+ m_pContextPopup = new KviTalPopupMenu(this);
+
+ currentItemChanged(0);
+}
+
+KviPopupEditor::~KviPopupEditor()
+{
+}
+
+void KviPopupEditor::oneTimeSetup()
+{
+ if(m_bOneTimeSetupDone)return;
+ m_bOneTimeSetupDone = true;
+
+ const KviPointerHashTable<QString,KviKvsPopupMenu> * a = KviKvsPopupManager::instance()->popupDict();
+ if(!a)return;
+
+ KviPointerHashTableIterator<QString,KviKvsPopupMenu> it(*a);
+
+ KviMenuListViewItem * item;
+
+ while(it.current())
+ {
+ KviKvsPopupMenu * popup = it.current();
+ KviKvsPopupMenu * copy = new KviKvsPopupMenu(popup->popupName());
+ copy->copyFrom(popup);
+ item = new KviMenuListViewItem(m_pListView,copy);
+ ++it;
+ }
+
+ connect(m_pListView,SIGNAL(currentChanged(KviTalListViewItem *)),this,SLOT(currentItemChanged(KviTalListViewItem *)));
+ connect(m_pListView,SIGNAL(rightButtonPressed(KviTalListViewItem *,const QPoint &,int)),
+ this,SLOT(itemPressed(KviTalListViewItem *,const QPoint &,int)));
+
+}
+
+void KviPopupEditor::itemPressed(KviTalListViewItem *it,const QPoint &pnt,int col)
+{
+ __range_valid(m_bOneTimeSetupDone);
+ m_pContextPopup->clear();
+
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_POPUP)),
+ __tr2qs("&New Popup"),
+ this,SLOT(newPopup()));
+
+ m_pContextPopup->setItemEnabled(
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_QUIT)),
+ __tr2qs("Re&move Popup"),
+ this,SLOT(removeCurrentPopup())),
+ it);
+
+ m_pContextPopup->setItemEnabled(
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_FOLDER)),
+ __tr2qs("&Export Popup To..."),
+ this,SLOT(exportCurrentPopup())),
+ it);
+
+ m_pContextPopup->popup(pnt);
+}
+
+
+void KviPopupEditor::exportCurrentPopup()
+{
+ if(!m_pLastEditedItem)return;
+ saveLastEditedItem();
+ if(!m_pLastEditedItem)return;
+
+ QString szName = QDir::homeDirPath();
+ if(!szName.endsWith(QString(KVI_PATH_SEPARATOR)))szName += KVI_PATH_SEPARATOR;
+ szName += m_pLastEditedItem->popup()->name();
+ szName += ".kvs";
+
+ QString szFile;
+
+ if(!KviFileDialog::askForSaveFileName(szFile,__tr2qs("Choose a Filename - KVIrc"),szName,"*.kvs",true,true,true))return;
+
+ QString szOut;
+ m_pLastEditedItem->popup()->generateDefPopup(szOut);
+
+ if(!KviFileUtils::writeFile(szFile,szOut))
+ {
+ QMessageBox::warning(this,__tr2qs("Write Failed - KVIrc"),__tr2qs("Unable to write to the popup file."),__tr2qs("Ok"));
+ }
+}
+
+void KviPopupEditor::exportAll()
+{
+ bool bSelectedOnly=true;
+ exportPopups(bSelectedOnly);
+}
+
+void KviPopupEditor::exportSelected()
+{
+ bool bSelectedOnly=false;
+ exportPopups(bSelectedOnly);
+}
+
+void KviPopupEditor::exportPopups(bool bSelectedOnly)
+{
+ saveLastEditedItem();
+
+ KviMenuListViewItem * it = (KviMenuListViewItem *)m_pListView->firstChild();
+
+ QString out;
+
+ int count=0;
+ KviTalListViewItemIterator itv( m_pListView );
+ while( itv.current() )
+ {
+ if ( (itv.current()->isSelected()) || (bSelectedOnly == true) )
+ {
+ count ++;
+ QString tmp;
+ it->popup()->generateDefPopup(tmp);
+ out += tmp;
+ out += "\n";
+ }
+ it = (KviMenuListViewItem *)it->nextSibling();
+ ++itv;
+ }
+ if (!count && bSelectedOnly==false) return;
+
+ QString szName = QDir::homeDirPath();
+ if(!szName.endsWith(QString(KVI_PATH_SEPARATOR)))szName += KVI_PATH_SEPARATOR;
+ szName += "popups.kvs";
+
+ QString szFile;
+
+ if(!KviFileDialog::askForSaveFileName(szFile,__tr2qs("Choose a Filename - KVIrc"),szName,"*.kvs",true,true,true))return;
+
+ if(!KviFileUtils::writeFile(szFile,out))
+ {
+ QMessageBox::warning(this,__tr2qs("Write Failed - KVIrc"),__tr2qs("Unable to write to the alias file."),__tr2qs("Ok"));
+ }
+}
+
+
+void KviPopupEditor::removeCurrentPopup()
+{
+ if(m_pLastEditedItem)
+ {
+ KviMenuListViewItem * it = m_pLastEditedItem;
+ m_pLastEditedItem = 0;
+ delete it;
+ if(!m_pLastEditedItem)currentItemChanged(0);
+ }
+}
+
+void KviPopupEditor::newPopup()
+{
+ QString newName;
+ getUniquePopupName(0,newName);
+ KviMenuListViewItem * it = new KviMenuListViewItem(m_pListView,new KviKvsPopupMenu(newName));
+ m_pListView->setCurrentItem(it);
+}
+
+void KviPopupEditor::saveLastEditedItem()
+{
+ if(m_pLastEditedItem == 0)return;
+
+ KviKvsPopupMenu * m = m_pEditor->getMenu();
+ QString tmp = m->popupName();
+ QString old = m_pLastEditedItem->m_pPopup->popupName();
+ if(!KviQString::equalCI(tmp,old))
+ {
+ getUniquePopupName(m_pLastEditedItem,tmp);
+ m->setPopupName(tmp);
+ }
+
+ m_pLastEditedItem->replacePopup(m);
+ m_pLastEditedItem->setText(0,m->popupName());
+}
+
+void KviPopupEditor::currentItemChanged(KviTalListViewItem *it)
+{
+ saveLastEditedItem();
+
+ m_pLastEditedItem = (KviMenuListViewItem *)it;
+
+ m_pEditor->edit(m_pLastEditedItem);
+}
+
+void KviPopupEditor::showEvent(QShowEvent *e)
+{
+ oneTimeSetup();
+ QWidget::showEvent(e);
+}
+
+void KviPopupEditor::commit()
+{
+ if(!m_bOneTimeSetupDone)return;
+
+ saveLastEditedItem();
+
+ //KviKvsPopupManager::instance()->clear();
+
+ KviMenuListViewItem * it = (KviMenuListViewItem *)m_pListView->firstChild();
+
+ // Copy the original popup dict
+ KviPointerHashTable<QString,KviKvsPopupMenu> copy(*(KviKvsPopupManager::instance()->popupDict()));
+ copy.setAutoDelete(false);
+
+ while(it)
+ {
+ KviKvsPopupMenu * p = KviKvsPopupManager::instance()->get(it->m_pPopup->popupName());
+ p->doClear();
+ p->copyFrom(it->m_pPopup);
+ it = (KviMenuListViewItem *)it->nextSibling();
+ // remove it from the original copy
+ copy.remove(p->popupName());
+ }
+
+ // the remaining elements in the copy need to be removed from
+ // the "new" dictionary (they are no longer used)
+ KviPointerHashTableIterator<QString,KviKvsPopupMenu> iter(copy);
+
+ while(iter.current())
+ {
+ KviKvsPopupManager::instance()->remove(iter.currentKey());
+ ++iter;
+ }
+
+
+ g_pApp->savePopups();
+}
+
+
+void KviPopupEditor::getUniquePopupName(KviMenuListViewItem *item,QString &buffer)
+{
+ __range_valid(m_bOneTimeSetupDone);
+
+ if(buffer.isEmpty())buffer = __tr2qs("unnamed");
+ QString newName = buffer;
+
+ bool bFound = true;
+ int idx = 1;
+
+ while(bFound)
+ {
+ bFound = false;
+
+ for(KviMenuListViewItem * ch = (KviMenuListViewItem *)(m_pListView->firstChild());ch;ch = (KviMenuListViewItem *)ch->nextSibling())
+ {
+ if(KviQString::equalCI(newName,ch->m_pPopup->popupName()) && (ch != item))
+ {
+ bFound = true;
+ KviQString::sprintf(newName,"%Q.%d",&buffer,idx);
+ idx++;
+ break;
+ }
+ }
+
+ }
+
+ buffer = newName;
+}
+
+
+
+KviPopupEditorWindow::KviPopupEditorWindow(KviFrame * lpFrm)
+: KviWindow(KVI_WINDOW_TYPE_SCRIPTEDITOR,lpFrm,"popupeditor",0)
+{
+ g_pPopupEditorWindow = this;
+
+ m_pEditor = new KviPopupEditor(this);
+
+ m_pBase = new QWidget(this);
+ QGridLayout * g = new QGridLayout(m_pBase,1,4,4,4);
+
+ QPushButton * btn = new QPushButton(__tr2qs("&OK"),m_pBase);
+ connect(btn,SIGNAL(clicked()),this,SLOT(okClicked()));
+ btn->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ACCEPT)));
+ g->addWidget(btn,0,1);
+
+ btn = new QPushButton(__tr2qs("&Apply"),m_pBase);
+ connect(btn,SIGNAL(clicked()),this,SLOT(applyClicked()));
+ btn->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ACCEPT)));
+ g->addWidget(btn,0,2);
+
+ btn = new QPushButton(__tr2qs("Cancel"),m_pBase);
+ connect(btn,SIGNAL(clicked()),this,SLOT(cancelClicked()));
+ btn->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DISCARD)));
+ g->addWidget(btn,0,3);
+
+ g->setColStretch(0,1);
+}
+
+KviPopupEditorWindow::~KviPopupEditorWindow()
+{
+ g_pPopupEditorWindow = 0;
+}
+
+void KviPopupEditorWindow::okClicked()
+{
+ m_pEditor->commit();
+ close();
+}
+
+void KviPopupEditorWindow::applyClicked()
+{
+ m_pEditor->commit();
+}
+
+void KviPopupEditorWindow::cancelClicked()
+{
+ close();
+}
+
+
+QPixmap * KviPopupEditorWindow::myIconPtr()
+{
+ return g_pIconManager->getSmallIcon(KVI_SMALLICON_POPUP);
+}
+
+void KviPopupEditorWindow::resizeEvent(QResizeEvent *e)
+{
+ int hght = m_pBase->sizeHint().height();
+ m_pEditor->setGeometry(0,0,width(),height()- hght);
+ m_pBase->setGeometry(0,height() - hght,width(),hght);
+}
+
+void KviPopupEditorWindow::fillCaptionBuffers()
+{
+ m_szPlainTextCaption = __tr2qs("Popup Editor");
+
+ static QString p1("<nobr><font color=\"");
+ static QString p2("\"><b>");
+ static QString p3("</b></font></nobr>");
+
+ m_szHtmlActiveCaption = p1;
+ m_szHtmlActiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name();
+ m_szHtmlActiveCaption += p2;
+ m_szHtmlActiveCaption += m_szPlainTextCaption;
+ m_szHtmlActiveCaption += p3;
+
+ m_szHtmlInactiveCaption = p1;
+ m_szHtmlInactiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name();
+ m_szHtmlInactiveCaption += p2;
+ m_szHtmlInactiveCaption += m_szPlainTextCaption;
+ m_szHtmlInactiveCaption += p3;
+
+}
+
+
+void KviPopupEditorWindow::getConfigGroupName(KviStr &szName)
+{
+ szName = "popupeditor";
+}
+
+
+void KviPopupEditorWindow::saveProperties(KviConfig *cfg)
+{
+/*
+#ifdef COMPILE_SCRIPTTOOLBAR
+ cfg->writeEntry("Sizes",m_pEditor->sizes());
+ cfg->writeEntry("LastPopup",m_pEditor->lastEditedPopup().ptr());
+ //debug("LAST EDITED=%s",m_pEditor->lastEditedPopup().ptr());
+#endif // COMPILE_SCRIPTTOOLBAR
+*/
+}
+
+void KviPopupEditorWindow::loadProperties(KviConfig *cfg)
+{
+/*
+#ifdef COMPILE_SCRIPTTOOLBAR
+ QValueList<int> def;
+ def.append(20);
+ def.append(80);
+ m_pEditor->setSizes(cfg->readIntListEntry("Sizes",def));
+ KviStr tmp = cfg->readEntry("LastPopup","");
+ m_pEditor->editPopup(tmp);
+ //debug("LAST EDITED WAS %s",tmp.ptr());
+#endif // COMPILE_SCRIPTTOOLBAR
+*/
+}
diff --git a/src/modules/popupeditor/popupeditor.h b/src/modules/popupeditor/popupeditor.h
new file mode 100644
index 00000000..3560ffa7
--- /dev/null
+++ b/src/modules/popupeditor/popupeditor.h
@@ -0,0 +1,206 @@
+#ifndef _POPUPEDITOR_H_
+#define _POPUPEDITOR_H_
+//
+// File : popupeditor.h
+// Creation date : Mon Dec 23 2002 20:24:55 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the linkss of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_window.h"
+#include "kvi_string.h"
+
+
+#include <qwidget.h>
+#include "kvi_tal_listview.h"
+#include <qlineedit.h>
+#include "kvi_tal_popupmenu.h"
+#include <qpushbutton.h>
+
+class KviKvsPopupMenu;
+class KviKvsPopupMenuItem;
+
+// KviPopupListViewItem
+class KviPopupListViewItem : public KviTalListViewItem
+{
+public:
+ enum Type { Item , Menu , Separator , Label , Epilogue , Prologue , ExtMenu };
+public:
+ KviPopupListViewItem(KviTalListView * pListView,KviPopupListViewItem * after,Type t);
+ KviPopupListViewItem(KviPopupListViewItem * parent,KviPopupListViewItem * after,Type t);
+public:
+ Type m_type;
+ QString m_szText;
+ QString m_szCondition;
+ QString m_szIcon;
+ QString m_szCode;
+ QString m_szId;
+private:
+ void init();
+public:
+ void setItemText(const QString & szText);
+ void setCondition(const QString & szCondition);
+ void setIcon(const QString & szIcon);
+ void setCode(const QString & szCode);
+ void setId(const QString & szId);
+};
+
+
+
+class KviScriptEditor;
+
+class KviMenuListViewItem;
+
+class KviSinglePopupEditor : public QWidget
+{
+ Q_OBJECT
+public:
+ KviSinglePopupEditor(QWidget * par);
+ ~KviSinglePopupEditor();
+protected:
+ QPushButton * m_pMenuButton;
+ KviKvsPopupMenu * m_pClipboard;
+ KviKvsPopupMenu * m_pTestPopup;
+ KviPopupListViewItem * m_pLastSelectedItem;
+ KviTalListView * m_pListView;
+ QLineEdit * m_pNameEditor;
+ KviScriptEditor * m_pEditor;
+ QLineEdit * m_pTextEditor;
+ QLineEdit * m_pIdEditor;
+ QLineEdit * m_pIconEditor;
+ QLineEdit * m_pConditionEditor;
+ QLineEdit * m_pExtNameEditor;
+ KviTalPopupMenu * m_pContextPopup;
+public:
+ void edit(KviMenuListViewItem * it);
+ KviKvsPopupMenu * getMenu();
+protected:
+ // theItem is the item above the first item that has to be inserted
+ void populateMenu(KviKvsPopupMenu * pop,KviPopupListViewItem * par,KviPopupListViewItem * theItem = 0);
+ void saveLastSelectedItem();
+ void addItemToMenu(KviKvsPopupMenu * pop,KviPopupListViewItem * par);
+ KviPopupListViewItem * newItem(KviPopupListViewItem * par,KviPopupListViewItem * after,KviPopupListViewItem::Type t);
+ KviPopupListViewItem * newItemBelow(KviPopupListViewItem * it,KviPopupListViewItem::Type t);
+ KviPopupListViewItem * newItemAbove(KviPopupListViewItem * it,KviPopupListViewItem::Type t);
+ KviPopupListViewItem * newItemInside(KviPopupListViewItem * it,KviPopupListViewItem::Type t);
+ void createNewItemAboveLastSelected(KviPopupListViewItem::Type t);
+ void createNewItemBelowLastSelected(KviPopupListViewItem::Type t);
+ void createNewItemInsideLastSelected(KviPopupListViewItem::Type t);
+ KviPopupListViewItem * findMatchingItem(KviKvsPopupMenuItem * it,KviPopupListViewItem * item);
+protected slots:
+ void contextCut();
+ void contextCopy();
+ void contextPasteBelow();
+ void contextPasteAbove();
+ void contextPasteInside();
+ void contextNewSeparatorBelow();
+ void contextNewSeparatorAbove();
+ void contextNewSeparatorInside();
+ void contextNewItemBelow();
+ void contextNewItemAbove();
+ void contextNewItemInside();
+ void contextNewMenuBelow();
+ void contextNewMenuAbove();
+ void contextNewMenuInside();
+ void contextNewExtMenuBelow();
+ void contextNewExtMenuAbove();
+ void contextNewExtMenuInside();
+ void contextNewLabelBelow();
+ void contextNewLabelAbove();
+ void contextNewLabelInside();
+ void contextNewPrologue();
+ void contextNewEpilogue();
+ void selectionChanged(KviTalListViewItem * it);
+ void itemPressed(KviTalListViewItem *it,const QPoint &pnt,int col);
+ void testPopup();
+ void testModeMenuItemClicked(KviKvsPopupMenuItem * it);
+};
+
+
+
+class KviMenuListViewItem : public KviTalListViewItem
+{
+public:
+ KviMenuListViewItem(KviTalListView * par,KviKvsPopupMenu * popup);
+ ~KviMenuListViewItem();
+public:
+ KviKvsPopupMenu * m_pPopup;
+public:
+ KviKvsPopupMenu * popup(){ return m_pPopup; };
+public:
+ void replacePopup(KviKvsPopupMenu * popup);
+};
+
+
+class KviPopupEditor : public QWidget
+{
+ Q_OBJECT
+public:
+ KviPopupEditor(QWidget * par);
+ ~KviPopupEditor();
+public:
+ KviSinglePopupEditor * m_pEditor;
+ KviTalListView * m_pListView;
+ KviMenuListViewItem * m_pLastEditedItem;
+ bool m_bOneTimeSetupDone;
+ KviTalPopupMenu * m_pContextPopup;
+public:
+ void commit();
+ void exportPopups(bool);
+protected slots:
+ void currentItemChanged(KviTalListViewItem *it);
+ void newPopup();
+ void exportAll();
+ void exportSelected();
+ void exportCurrentPopup();
+ void removeCurrentPopup();
+ void itemPressed(KviTalListViewItem *it,const QPoint &pnt,int col);
+protected:
+ void showEvent(QShowEvent *e);
+ void getExportPopupBuffer(QString &buffer,KviMenuListViewItem * it);
+private:
+ void oneTimeSetup();
+ void saveLastEditedItem();
+ void getUniquePopupName(KviMenuListViewItem * it,QString &buffer);
+};
+
+
+
+class KviPopupEditorWindow : public KviWindow
+{
+ Q_OBJECT
+public:
+ KviPopupEditorWindow(KviFrame * lpFrm);
+ ~KviPopupEditorWindow();
+protected:
+ KviPopupEditor * m_pEditor;
+ QWidget * m_pBase;
+protected:
+ virtual QPixmap * myIconPtr();
+ virtual void fillCaptionBuffers();
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual void getConfigGroupName(KviStr &szName);
+ virtual void saveProperties(KviConfig *);
+ virtual void loadProperties(KviConfig *);
+protected slots:
+ void cancelClicked();
+ void okClicked();
+ void applyClicked();
+};
+
+#endif //_POPUPEDITOR_H_
diff --git a/src/modules/raweditor/Makefile.am b/src/modules/raweditor/Makefile.am
new file mode 100644
index 00000000..74c64e9b
--- /dev/null
+++ b/src/modules/raweditor/Makefile.am
@@ -0,0 +1,17 @@
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkviraweditor.la
+
+libkviraweditor_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkviraweditor_la_SOURCES = libkviraweditor.cpp raweditor.cpp
+nodist_libkviraweditor_la_SOURCES = moc_raweditor.cpp
+
+noinst_HEADERS = raweditor.h
+libkviraweditor_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+# noinst_HEADERS=
+
+moc_raweditor.cpp: raweditor.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/raweditor/libkviraweditor.cpp b/src/modules/raweditor/libkviraweditor.cpp
new file mode 100644
index 00000000..9f6975f5
--- /dev/null
+++ b/src/modules/raweditor/libkviraweditor.cpp
@@ -0,0 +1,87 @@
+//
+// File : libkviraweditor.cpp
+// Creation date : Mon 23 Dec 2002 20:23:59 2002 GMT by Szymon Stefanek
+//
+// This toolbar is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_module.h"
+#include "kvi_locale.h"
+#include "kvi_frame.h"
+
+#include "raweditor.h"
+
+KviRawEditorWindow * g_pRawEditorWindow = 0;
+
+
+/*
+ @doc: raweditor.open
+ @type:
+ command
+ @title:
+ raweditor.open
+ @short:
+ Shows the raw events editor
+ @syntax:
+ toolbareditor.open
+ @description:
+ Opens the script raw events editor dialog.
+*/
+
+static bool raweditor_kvs_cmd_open(KviKvsModuleCommandCall * c)
+{
+ if(!g_pRawEditorWindow)
+ {
+ g_pRawEditorWindow = new KviRawEditorWindow(c->window()->frame());
+ c->window()->frame()->addWindow(g_pRawEditorWindow);
+ }
+ g_pRawEditorWindow->setFocus();
+ return true;
+}
+
+
+static bool raweditor_module_init(KviModule * m)
+{
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"open",raweditor_kvs_cmd_open);
+ g_pRawEditorWindow = 0;
+ return true;
+}
+
+static bool raweditor_module_can_unload(KviModule * m)
+{
+ return (g_pRawEditorWindow == 0);
+}
+
+static bool raweditor_module_cleanup(KviModule *m)
+{
+ if(g_pRawEditorWindow)delete g_pRawEditorWindow;
+ g_pRawEditorWindow = 0;
+ return true;
+}
+
+KVIRC_MODULE(
+ "RawEditor", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "Editor for the script raw events",
+ raweditor_module_init,
+ raweditor_module_can_unload,
+ 0,
+ raweditor_module_cleanup
+)
diff --git a/src/modules/raweditor/raweditor.cpp b/src/modules/raweditor/raweditor.cpp
new file mode 100644
index 00000000..72b3888b
--- /dev/null
+++ b/src/modules/raweditor/raweditor.cpp
@@ -0,0 +1,563 @@
+//
+// File : raweditor.cpp
+// Creation date : Mon Dec 23 2002 20:28:18 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the linkss of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include "raweditor.h"
+
+#include "kvi_iconmanager.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_imagedialog.h"
+#include "kvi_config.h"
+#include "kvi_filedialog.h"
+#include "kvi_fileutils.h"
+#include "kvi_scripteditor.h"
+#include "kvi_debug.h"
+//#include "kvi_event.h"
+#include "kvi_app.h"
+#include "kvi_cmdformatter.h"
+#include "kvi_kvs_eventmanager.h"
+#include "kvi_kvs_eventhandler.h"
+
+#include <qmessagebox.h>
+#include <qsplitter.h>
+#include <qlayout.h>
+#include "kvi_tal_vbox.h"
+#include "kvi_tal_popupmenu.h"
+#include <qtooltip.h>
+#include <qinputdialog.h>
+#include <qpushbutton.h>
+
+extern KviRawEditorWindow * g_pRawEditorWindow;
+
+
+
+KviRawListViewItem::KviRawListViewItem(KviTalListView *par,int idx)
+: KviTalListViewItem(par)
+{
+ m_iIdx = idx;
+ m_szName.setNum(idx);
+ if(idx < 100)m_szName.prepend('0');
+ if(idx < 10)m_szName.prepend('0');
+};
+
+const QPixmap * KviRawListViewItem::pixmap(int col) const
+{
+ return g_pIconManager->getSmallIcon(firstChild() ? KVI_SMALLICON_RAWEVENT : KVI_SMALLICON_RAWEVENTNOHANDLERS);
+}
+
+const QPixmap * KviRawHandlerListViewItem::pixmap(int col) const
+{
+ return g_pIconManager->getSmallIcon(m_bEnabled ? KVI_SMALLICON_HANDLER : KVI_SMALLICON_HANDLERDISABLED);
+}
+
+
+
+KviRawEditor::KviRawEditor(QWidget * par)
+: QWidget(par,"raw_event_editor")
+{
+ QGridLayout * l = new QGridLayout(this,1,1,2,2);
+#ifdef COMPILE_USE_QT4
+ QSplitter * spl = new QSplitter(Qt::Horizontal,this,"raweditorv");
+ spl->setOpaqueResize(false);
+#else
+ QSplitter * spl = new QSplitter(QSplitter::Horizontal,this);
+#endif
+ l->addWidget(spl,0,0);
+
+ KviTalVBox * boxi = new KviTalVBox(spl);
+ m_pListView = new KviTalListView(boxi);
+ m_pListView->addColumn(__tr2qs("Raw Event"));
+ m_pListView->setMultiSelection(false);
+ m_pListView->setShowSortIndicator(true);
+ m_pListView->setRootIsDecorated(true);
+
+ QPushButton * pb = new QPushButton(__tr2qs("&Export All To..."),boxi);
+ connect(pb,SIGNAL(clicked()),this,SLOT(exportAllEvents()));
+
+ KviTalVBox * box = new KviTalVBox(spl);
+ m_pNameEditor = new QLineEdit(box);
+ QToolTip::add(m_pNameEditor,__tr2qs("Edit the raw event handler name."));
+ m_pEditor = KviScriptEditor::createInstance(box);
+
+ m_bOneTimeSetupDone = false;
+ m_pLastEditedItem = 0;
+}
+
+KviRawEditor::~KviRawEditor()
+{
+ KviScriptEditor::destroyInstance(m_pEditor);
+}
+
+void KviRawEditor::oneTimeSetup()
+{
+ if(m_bOneTimeSetupDone)return;
+ m_bOneTimeSetupDone = true;
+
+ KviRawListViewItem * it;
+ KviRawHandlerListViewItem * ch;
+
+ for(unsigned int i = 0;i < 999;i++)
+ {
+ KviPointerList<KviKvsEventHandler> * l = KviKvsEventManager::instance()->rawHandlers(i);
+ if(l)
+ {
+ it = new KviRawListViewItem(m_pListView,i);
+ for(KviKvsEventHandler * s = l->first();s;s = l->next())
+ {
+ if(s->type() == KviKvsEventHandler::Script)
+ {
+ ch = new KviRawHandlerListViewItem(it,((KviKvsScriptEventHandler *)s)->name(),
+ ((KviKvsScriptEventHandler *)s)->code(),((KviKvsScriptEventHandler *)s)->isEnabled());
+ }
+ }
+ it->setOpen(true);
+ }
+ }
+
+
+ m_pContextPopup = new KviTalPopupMenu(this);
+
+ connect(m_pListView,SIGNAL(selectionChanged(KviTalListViewItem *)),this,SLOT(selectionChanged(KviTalListViewItem *)));
+ connect(m_pListView,SIGNAL(rightButtonPressed(KviTalListViewItem *,const QPoint &,int)),
+ this,SLOT(itemPressed(KviTalListViewItem *,const QPoint &,int)));
+}
+
+void KviRawEditor::itemPressed(KviTalListViewItem *it,const QPoint &pnt,int col)
+{
+ __range_valid(m_bOneTimeSetupDone);
+ m_pContextPopup->clear();
+ if(it)
+ {
+ if(it->parent())
+ {
+ if(!(((KviRawHandlerListViewItem *)it)->m_bEnabled))
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_HANDLER)),
+ __tr2qs("&Enable Handler"),this,SLOT(toggleCurrentHandlerEnabled()));
+ else
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_HANDLERDISABLED)),
+ __tr2qs("&Disable Handler"),this,SLOT(toggleCurrentHandlerEnabled()));
+
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_QUIT)),
+ __tr2qs("Re&move Handler"),
+ this,SLOT(removeCurrentHandler()));
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_FOLDER)),
+ __tr2qs("&Export Handler To..."),
+ this,SLOT(exportCurrentHandler()));
+ } else {
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_HANDLER)),
+ __tr2qs("&New Handler"),
+ this,SLOT(addHandlerForCurrentRaw()));
+ }
+ }
+
+ m_pContextPopup->insertSeparator();
+ m_pContextPopup->insertItem(
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_RAWEVENT)),
+ __tr2qs("&Add Raw Event..."),
+ this,SLOT(addRaw()));
+
+ m_pContextPopup->popup(pnt);
+}
+
+void KviRawEditor::getUniqueHandlerName(KviRawListViewItem *it,QString &buffer)
+{
+ __range_valid(m_bOneTimeSetupDone);
+
+ QString newName = buffer;
+ if(newName.isEmpty())newName = __tr2qs("unnamed");
+
+ bool bFound = true;
+ int idx = 1;
+
+ while(bFound)
+ {
+ bFound = false;
+
+ for(KviRawHandlerListViewItem * ch = (KviRawHandlerListViewItem *)(it->firstChild());ch;ch = (KviRawHandlerListViewItem *)ch->nextSibling())
+ {
+ if(KviQString::equalCI(newName,ch->m_szName))
+ {
+ bFound = true;
+ KviQString::sprintf(newName,"%Q_%d",&buffer,idx);
+ idx++;
+ break;
+ }
+ }
+
+ }
+
+ buffer = newName;
+}
+
+void KviRawEditor::addRaw()
+{
+ bool bOk = false;
+
+ int iIdx = QInputDialog::getInteger(__tr2qs("New Raw Event"),__tr2qs("Enter the numeric code of the message (0-999)"),0,0,999,1,&bOk,this);
+
+ if(!bOk)return;
+
+ KviRawListViewItem * it;
+ for(it = (KviRawListViewItem *)m_pListView->firstChild();it;it = (KviRawListViewItem *)it->nextSibling())
+ {
+ if(it->m_iIdx == iIdx)
+ {
+ m_pListView->setSelected(it,true);
+ goto add_handler;
+ }
+ }
+
+ it = new KviRawListViewItem(m_pListView,iIdx);
+ m_pListView->setSelected(it,true);
+
+add_handler:
+ addHandlerForCurrentRaw();
+
+}
+
+void KviRawEditor::addHandlerForCurrentRaw()
+{
+ __range_valid(m_pOneTimeSetupDone);
+
+ KviTalListViewItem * it = m_pListView->selectedItem();
+ if(it)
+ {
+ if(it->parent() == 0)
+ {
+ QString buffer = __tr2qs("default");
+ getUniqueHandlerName((KviRawListViewItem *)it,buffer);
+ KviTalListViewItem * ch = new KviRawHandlerListViewItem(it,buffer,"",true);
+ it->setOpen(true);
+ m_pListView->setSelected(ch,true);
+ }
+ }
+}
+
+void KviRawEditor::removeCurrentHandler()
+{
+ __range_valid(m_pOneTimeSetupDone);
+ if(m_pLastEditedItem)
+ {
+ KviTalListViewItem * it = m_pLastEditedItem;
+ m_pLastEditedItem = 0;
+ delete it;
+ m_pEditor->setEnabled(false);
+ m_pNameEditor->setEnabled(false);
+ }
+}
+
+void KviRawEditor::toggleCurrentHandlerEnabled()
+{
+ __range_valid(m_pOneTimeSetupDone);
+ if(m_pLastEditedItem)
+ {
+ m_pLastEditedItem->m_bEnabled = !(m_pLastEditedItem->m_bEnabled);
+ m_pListView->repaintItem(m_pLastEditedItem);
+ selectionChanged(m_pLastEditedItem);
+ }
+}
+
+void KviRawEditor::commit()
+{
+ if(!m_bOneTimeSetupDone)return; // nothing to commit
+
+ saveLastEditedItem();
+ KviKvsEventManager::instance()->removeAllScriptRawHandlers();
+ for(KviTalListViewItem * it = m_pListView->firstChild();it;it = it->nextSibling())
+ {
+ if(it->firstChild())
+ {
+ QString szContext;
+ for(KviTalListViewItem * ch = it->firstChild();ch;ch = ch->nextSibling())
+ {
+
+ KviQString::sprintf(szContext,"RawEvent%d::%Q",&(((KviRawListViewItem *)it)->m_iIdx),&(((KviRawHandlerListViewItem *)ch)->m_szName));
+ KviKvsScriptEventHandler * s = new KviKvsScriptEventHandler(
+ ((KviRawHandlerListViewItem *)ch)->m_szName,
+ szContext,
+ ((KviRawHandlerListViewItem *)ch)->m_szBuffer,
+ ((KviRawHandlerListViewItem *)ch)->m_bEnabled
+ );
+
+ KviKvsEventManager::instance()->addRawHandler(((KviRawListViewItem *)it)->m_iIdx,s);
+ }
+ }
+ }
+
+ g_pApp->saveRawEvents(); // otherwise this page has never been shown
+}
+
+void KviRawEditor::saveLastEditedItem()
+{
+ __range_valid(m_bOneTimeSetupDone);
+ if(!m_pLastEditedItem)return;
+
+ QString buffer = m_pNameEditor->text();
+ if(!KviQString::equalCI(buffer,m_pLastEditedItem->m_szName))
+ {
+ getUniqueHandlerName((KviRawListViewItem *)(m_pLastEditedItem->parent()),buffer);
+ }
+
+ m_pLastEditedItem->m_szName = buffer;
+ QString tmp;
+ m_pEditor->getText(tmp);
+
+ m_pLastEditedItem->m_szBuffer = tmp;
+}
+
+void KviRawEditor::selectionChanged(KviTalListViewItem * it)
+{
+ __range_valid(m_bOneTimeSetupDone);
+ saveLastEditedItem();
+ if(it->parent())
+ {
+ m_pLastEditedItem = (KviRawHandlerListViewItem *)it;
+ m_pNameEditor->setEnabled(true);
+ m_pNameEditor->setText(it->text(0));
+ m_pEditor->setEnabled(true);
+ m_pEditor->setText(((KviRawHandlerListViewItem *)it)->m_szBuffer);
+ } else {
+ m_pLastEditedItem = 0;
+ m_pNameEditor->setEnabled(false);
+ m_pNameEditor->setText("");
+ m_pEditor->setEnabled(false);
+ }
+}
+
+void KviRawEditor::showEvent(QShowEvent *e)
+{
+ oneTimeSetup();
+ QWidget::showEvent(e);
+}
+
+void KviRawEditor::getExportEventBuffer(QString &buffer,KviRawHandlerListViewItem * it)
+{
+ if(!it->parent())return;
+
+ QString szBuf = it->m_szBuffer;
+
+ KviCommandFormatter::blockFromBuffer(szBuf);
+
+ buffer = "event(";
+ buffer += ((KviRawListViewItem *)(it->parent()))->m_szName;
+ buffer += ",";
+ buffer += it->m_szName;
+ buffer += ")\n";
+ buffer += szBuf;
+ buffer += "\n";
+
+ if(!it->m_bEnabled)
+ {
+ buffer += "\n";
+ buffer += "eventctl -d ";
+ buffer += ((KviRawListViewItem *)(it->parent()))->m_szName;
+ buffer += " ";
+ buffer += it->m_szName;
+ }
+}
+
+void KviRawEditor::exportCurrentHandler()
+{
+ if(!m_pLastEditedItem)return;
+ saveLastEditedItem();
+ if(!m_pLastEditedItem)return;
+
+ QString szName = QDir::homeDirPath();
+ if(!szName.endsWith(QString(KVI_PATH_SEPARATOR)))szName += KVI_PATH_SEPARATOR;
+ szName += "raw";
+ szName += ((KviRawListViewItem *)(m_pLastEditedItem->parent()))->m_szName;
+ szName += ".";
+ szName += m_pLastEditedItem->m_szName;
+ szName += ".kvs";
+
+ QString szFile;
+
+ if(!KviFileDialog::askForSaveFileName(szFile,__tr2qs("Choose a Filename - KVIrc"),szName,"*.kvs",true,true,true))return;
+
+ QString szOut;
+ getExportEventBuffer(szOut,m_pLastEditedItem);
+
+ if(!KviFileUtils::writeFile(szFile,szOut))
+ {
+ QMessageBox::warning(this,__tr2qs("Write Failed - KVIrc"),__tr2qs("Unable to write to the raw event file."),__tr2qs("&OK"));
+ }
+}
+
+void KviRawEditor::exportAllEvents()
+{
+ saveLastEditedItem();
+
+ KviRawListViewItem * it = (KviRawListViewItem *)m_pListView->firstChild();
+
+ QString out;
+
+ while(it)
+ {
+ KviRawHandlerListViewItem * item = (KviRawHandlerListViewItem *)it->firstChild();
+ while(item)
+ {
+ QString tmp;
+ getExportEventBuffer(tmp,item);
+ out += tmp;
+ out += "\n";
+ item = (KviRawHandlerListViewItem *)item->nextSibling();
+ }
+ it = (KviRawListViewItem *)it->nextSibling();
+ }
+
+ QString szName = QDir::homeDirPath();
+ if(!szName.endsWith(QString(KVI_PATH_SEPARATOR)))szName += KVI_PATH_SEPARATOR;
+ szName += "rawevents.kvs";
+
+ QString szFile;
+
+ if(!KviFileDialog::askForSaveFileName(szFile,__tr2qs("Choose a Filename - KVIrc"),szName,"*.kvs",true,true,true))return;
+
+ if(!KviFileUtils::writeFile(szFile,out))
+ {
+ QMessageBox::warning(this,__tr2qs("Write Failed - KVIrc"),__tr2qs("Unable to write to the raw events file."),__tr2qs("Ok"));
+ }
+}
+
+
+
+
+KviRawEditorWindow::KviRawEditorWindow(KviFrame * lpFrm)
+: KviWindow(KVI_WINDOW_TYPE_SCRIPTEDITOR,lpFrm,"raweditor",0)
+{
+ g_pRawEditorWindow = this;
+
+ m_pEditor = new KviRawEditor(this);
+
+ m_pBase = new QWidget(this);
+ QGridLayout * g = new QGridLayout(m_pBase,1,4,4,4);
+
+ QPushButton * btn = new QPushButton(__tr2qs("&OK"),m_pBase);
+ connect(btn,SIGNAL(clicked()),this,SLOT(okClicked()));
+ btn->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ACCEPT)));
+ g->addWidget(btn,0,1);
+
+ btn = new QPushButton(__tr2qs("&Apply"),m_pBase);
+ connect(btn,SIGNAL(clicked()),this,SLOT(applyClicked()));
+ btn->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ACCEPT)));
+ g->addWidget(btn,0,2);
+
+ btn = new QPushButton(__tr2qs("Cancel"),m_pBase);
+ connect(btn,SIGNAL(clicked()),this,SLOT(cancelClicked()));
+ btn->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DISCARD)));
+ g->addWidget(btn,0,3);
+
+ g->setColStretch(0,1);
+}
+
+KviRawEditorWindow::~KviRawEditorWindow()
+{
+ g_pRawEditorWindow = 0;
+}
+
+void KviRawEditorWindow::okClicked()
+{
+ m_pEditor->commit();
+ close();
+}
+
+void KviRawEditorWindow::applyClicked()
+{
+ m_pEditor->commit();
+}
+
+void KviRawEditorWindow::cancelClicked()
+{
+ close();
+}
+
+
+QPixmap * KviRawEditorWindow::myIconPtr()
+{
+ return g_pIconManager->getSmallIcon(KVI_SMALLICON_RAWEVENT);
+}
+
+void KviRawEditorWindow::resizeEvent(QResizeEvent *e)
+{
+ int hght = m_pBase->sizeHint().height();
+ m_pEditor->setGeometry(0,0,width(),height()- hght);
+ m_pBase->setGeometry(0,height() - hght,width(),hght);
+}
+
+void KviRawEditorWindow::fillCaptionBuffers()
+{
+ m_szPlainTextCaption = __tr2qs("Raw Editor");
+
+ static QString p1("<nobr><font color=\"");
+ static QString p2("\"><b>");
+ static QString p3("</b></font></nobr>");
+
+ m_szHtmlActiveCaption = p1;
+ m_szHtmlActiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name();
+ m_szHtmlActiveCaption += p2;
+ m_szHtmlActiveCaption += m_szPlainTextCaption;
+ m_szHtmlActiveCaption += p3;
+
+ m_szHtmlInactiveCaption = p1;
+ m_szHtmlInactiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name();
+ m_szHtmlInactiveCaption += p2;
+ m_szHtmlInactiveCaption += m_szPlainTextCaption;
+ m_szHtmlInactiveCaption += p3;
+
+}
+
+
+void KviRawEditorWindow::getConfigGroupName(KviStr &szName)
+{
+ szName = "raweditor";
+}
+
+
+void KviRawEditorWindow::saveProperties(KviConfig *cfg)
+{
+/*
+#ifdef COMPILE_SCRIPTTOOLBAR
+ cfg->writeEntry("Sizes",m_pEditor->sizes());
+ cfg->writeEntry("LastRaw",m_pEditor->lastEditedRaw().ptr());
+ //debug("LAST EDITED=%s",m_pEditor->lastEditedRaw().ptr());
+#endif // COMPILE_SCRIPTTOOLBAR
+*/
+}
+
+void KviRawEditorWindow::loadProperties(KviConfig *cfg)
+{
+/*
+#ifdef COMPILE_SCRIPTTOOLBAR
+ QValueList<int> def;
+ def.append(20);
+ def.append(80);
+ m_pEditor->setSizes(cfg->readIntListEntry("Sizes",def));
+ KviStr tmp = cfg->readEntry("LastRaw","");
+ m_pEditor->editRaw(tmp);
+ //debug("LAST EDITED WAS %s",tmp.ptr());
+#endif // COMPILE_SCRIPTTOOLBAR
+*/
+}
diff --git a/src/modules/raweditor/raweditor.h b/src/modules/raweditor/raweditor.h
new file mode 100644
index 00000000..7adf2213
--- /dev/null
+++ b/src/modules/raweditor/raweditor.h
@@ -0,0 +1,118 @@
+#ifndef _RAWEDITOR_H_
+#define _RAWEDITOR_H_
+//
+// File : eventeditor.h
+// Creation date : Mon Dec 23 2002 20:24:55 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the linkss of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_window.h"
+#include "kvi_qstring.h"
+
+#include <qwidget.h>
+#include "kvi_tal_listview.h"
+#include <qlineedit.h>
+
+class KviScriptEditor;
+
+class KviRawListViewItem : public KviTalListViewItem
+{
+public:
+ int m_iIdx;
+ QString m_szName;
+public:
+ KviRawListViewItem(KviTalListView * par,int idx);
+ ~KviRawListViewItem() {};
+public:
+ virtual QString text(int col) const { return m_szName; };
+ virtual const QPixmap * pixmap(int col) const;
+};
+
+class KviRawHandlerListViewItem : public KviTalListViewItem
+{
+public:
+ KviRawHandlerListViewItem(KviTalListViewItem * par,const QString & name,const QString & buffer,bool bEnabled)
+ : KviTalListViewItem(par), m_szName(name) , m_szBuffer(buffer) , m_bEnabled(bEnabled) {};
+ ~KviRawHandlerListViewItem() {};
+public:
+ QString m_szName;
+ QString m_szBuffer;
+ bool m_bEnabled;
+ virtual QString text(int col) const { return m_szName; };
+ virtual const QPixmap * pixmap(int col) const;
+};
+
+class KviTalPopupMenu;
+
+class KviRawEditor : public QWidget
+{
+ Q_OBJECT
+public:
+ KviRawEditor(QWidget * par);
+ ~KviRawEditor();
+public:
+ KviScriptEditor * m_pEditor;
+ KviTalListView * m_pListView;
+ QLineEdit * m_pNameEditor;
+ KviTalPopupMenu * m_pContextPopup;
+ KviRawHandlerListViewItem * m_pLastEditedItem;
+ bool m_bOneTimeSetupDone;
+public:
+ void commit();
+ void saveLastEditedItem();
+ void getUniqueHandlerName(KviRawListViewItem *it,QString &buffer);
+ void getExportEventBuffer(QString &szBuffer,KviRawHandlerListViewItem * it);
+protected slots:
+ void selectionChanged(KviTalListViewItem *it);
+ void itemPressed(KviTalListViewItem *it,const QPoint &pnt,int col);
+ void toggleCurrentHandlerEnabled();
+ void removeCurrentHandler();
+ void addHandlerForCurrentRaw();
+ void addRaw();
+ void exportAllEvents();
+ void exportCurrentHandler();
+protected:
+ void showEvent(QShowEvent *e);
+private:
+ void oneTimeSetup();
+};
+
+class KviRawEditorWindow : public KviWindow
+{
+ Q_OBJECT
+public:
+ KviRawEditorWindow(KviFrame * lpFrm);
+ ~KviRawEditorWindow();
+protected:
+ KviRawEditor * m_pEditor;
+ QWidget * m_pBase;
+protected:
+ virtual QPixmap * myIconPtr();
+ virtual void fillCaptionBuffers();
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual void getConfigGroupName(KviStr &szName);
+ virtual void saveProperties(KviConfig *);
+ virtual void loadProperties(KviConfig *);
+protected slots:
+ void cancelClicked();
+ void okClicked();
+ void applyClicked();
+};
+
+#endif //_RAWEDITOR_H_
diff --git a/src/modules/regchan/Makefile.am b/src/modules/regchan/Makefile.am
new file mode 100644
index 00000000..c46f64aa
--- /dev/null
+++ b/src/modules/regchan/Makefile.am
@@ -0,0 +1,18 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkviregchan.la
+
+libkviregchan_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkviregchan_la_SOURCES = libkviregchan.cpp
+libkviregchan_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+#noinst_HEADERS= edituser.h
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/regchan/libkviregchan.cpp b/src/modules/regchan/libkviregchan.cpp
new file mode 100644
index 00000000..eaa53268
--- /dev/null
+++ b/src/modules/regchan/libkviregchan.cpp
@@ -0,0 +1,426 @@
+//======================================================================================
+//
+// File : libkviregchan.cpp
+// Creation date : Sat Jun 29 02:55:18 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//======================================================================================
+// incomplete
+#include "kvi_module.h"
+
+
+#include "kvi_regchan.h"
+#include "kvi_locale.h"
+#include "kvi_out.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_window.h"
+
+
+// kvi_app.cpp
+extern KVIRC_API KviRegisteredChannelDataBase * g_pRegisteredChannelDataBase;
+
+/*
+ @doc: regchan.add
+ @type:
+ command
+ @title:
+ regchan.add
+ @keyterms:
+ registering channels
+ @short:
+ Registers a channel
+ @syntax:
+ regchan.add <channel:string> [netmask:string]
+ @description:
+ Registers the <channel> with the specified [netmask].
+ [netmask] can be a full network name or a wildcard string
+ tht will be matched against network names.
+ For example, if you want to register #kvirc on IRCNet
+ you can use regchan.add #kvirc IRCNet.
+ If you want to handle #kvirc on all the IRC networks then
+ you can use regchan.add #kvirc *[br]
+ Obviously if you register both #kvirc/IRCNet and #kvirc/*
+ then #kvirc/IRCNet will be looked first.
+ If netmask is not passed a netmask of * is assumed.[br]
+ @examples:
+ [example]
+ regchan.add #kvirc openprojects
+ [/example]
+ @seealso:
+*/
+
+static bool regchan_kvs_cmd_add(KviKvsModuleCommandCall * c)
+{
+ QString szChan,szNetmask;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("channel name",KVS_PT_NONEMPTYSTRING,0,szChan)
+ KVSM_PARAMETER("netmask",KVS_PT_STRING,KVS_PF_OPTIONAL,szNetmask)
+ KVSM_PARAMETERS_END(c)
+ if(szNetmask.isEmpty())szNetmask="*";
+ g_pRegisteredChannelDataBase->add(new KviRegisteredChannel(szChan,szNetmask));
+ return true;
+}
+
+/*
+ @doc: regchan.remove
+ @type:
+ command
+ @title:
+ regchan.remove
+ @keyterms:
+ unregistering channels
+ @short:
+ Unregisters a channel
+ @syntax:
+ regchan.remove [-q|--quiet] [-e|--exactly] <channel:string> <network:string>
+ @description:
+ Unregisters the channel named <channel> that best matches <network>
+ with its netmask.[br]
+ If no match for <channel>/<network> is found in the database then
+ a warning is printed unless -q is used.[br]
+ If -e is specified then <network> is not matched against the
+ netmasks in the database but is compared directly. This means
+ that <network> must be exactly the netmask used to register a channel.
+ @examples:
+ [example]
+ regchan.remove #kvirc openprojects
+ [/example]
+ @seealso:
+ [cmd]regchan.add[/cmd]
+*/
+static bool regchan_kvs_cmd_remove(KviKvsModuleCommandCall * c)
+{
+ QString szChan,szNetwork;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("channel name",KVS_PT_NONEMPTYSTRING,0,szChan)
+ KVSM_PARAMETER("network",KVS_PT_NONEMPTYSTRING,0,szNetwork)
+ KVSM_PARAMETERS_END(c)
+ KviRegisteredChannel * ch;
+ if(c->hasSwitch('e',"exactly"))ch = g_pRegisteredChannelDataBase->findExact(szChan,szNetwork);
+ else ch = g_pRegisteredChannelDataBase->find(szChan,szNetwork);
+ if(ch)
+ {
+ g_pRegisteredChannelDataBase->remove(ch);
+ } else {
+ if(!c->hasSwitch('q',"quiet"))c->warning(__tr2qs("No such channel/netmask entry in the database"));
+ }
+ return true;
+}
+
+/*
+ @doc: regchan.setproperty
+ @type:
+ command
+ @title:
+ regchan.setproperty
+ @short:
+ Sets a property for a registered channel
+ @syntax:
+ regchan.setproperty [-e|--exactly] [-q|--quiet] <channel:string> <network:string> <property:string> <value:string>
+ @description:
+ Sets the <property> for the registered <channel> that best
+ matches <network> to <value>.[br]
+ If <value> is an empty string the <property> is removed.[br]
+ If no match for <channel>/<network> is found in the database then
+ a warning is printed unless -q is used.[br]
+ @switches:
+ !fn: -q|--quiet
+ No warning on screen.
+ !fn: -e|--exactly
+ If -e is specified then <network> is not matched against the
+ netmasks in the database but is compared directly. This means
+ that <network> must be exactly the netmask used to register a channel.
+ @examples:
+ [example]
+ regchan.setproperty #kvirc openprojects autojoin true
+ [/example]
+ @seealso:
+ [cmd]regchan.add[/cmd]
+*/
+
+static bool regchan_kvs_cmd_setProperty(KviKvsModuleCommandCall * c)
+{
+ QString szChan,szNetwork,szProperty,szValue;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("channel name",KVS_PT_NONEMPTYSTRING,0,szChan)
+ KVSM_PARAMETER("network",KVS_PT_NONEMPTYSTRING,0,szNetwork)
+ KVSM_PARAMETER("property name",KVS_PT_NONEMPTYSTRING,0,szProperty)
+ KVSM_PARAMETER("value",KVS_PT_STRING,0,szValue)
+ KVSM_PARAMETERS_END(c)
+ KviRegisteredChannel * ch;
+ if(c->hasSwitch('e',"exactly"))ch = g_pRegisteredChannelDataBase->findExact(szChan,szNetwork);
+ else ch = g_pRegisteredChannelDataBase->find(szChan,szNetwork);
+ if(ch)
+ {
+ if(!szValue.isEmpty())
+ {
+ ch->setProperty(szProperty.utf8().data(),new KviStr(szValue));
+ } else {
+ ch->removeProperty(szProperty);
+ }
+ } else {
+ if(!c->hasSwitch('q',"quiet")) c->warning(__tr2qs("No such channel/netmask entry in the database"));
+ }
+ return true;
+}
+/*
+ @doc: regchan.showlist
+ @type:
+ command
+ @title:
+ regchan.showlist
+ @short:
+ Lists the registered channels
+ @syntax:
+ regchan.showlist
+ @description:
+ Lists the registered channels with their description
+*/
+
+static bool regchan_kvs_cmd_showlist(KviKvsModuleCommandCall * c)
+{
+ c->window()->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Registered channel list:"));
+
+ int tot = 0;
+
+ KviPointerHashTableIterator<const char *,KviRegisteredChannelList> it(*(g_pRegisteredChannelDataBase->channelDict()));
+ while(KviRegisteredChannelList * l = it.current())
+ {
+ for(KviRegisteredChannel * ch = l->first();ch;ch = l->next())
+ {
+ tot++;
+ c->window()->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Channel: %c%s@%s"),
+ KVI_TEXT_BOLD,ch->name().ptr(),ch->netMask().ptr());
+ KviPointerHashTableIterator<const char *,KviStr> pit(*(ch->propertyDict()));
+ while(KviStr * s = pit.current())
+ {
+ c->window()->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs(" Property: %s=%s"),pit.currentKey(),s->ptr());
+ ++pit;
+ }
+ }
+ ++it;
+ }
+
+ c->window()->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Total %d channels"),tot);
+ return true;
+}
+
+/*
+ @doc: regchan.list
+ @type:
+ function
+ @title:
+ $regchan.list
+ @short:
+ Get a list of registered channels
+ @syntax:
+ <array> $regchan.list([<channel_mask:string>],[<network_mask:string>])
+ @description:
+ Returns an array of the channel@netmask entries in the registered
+ channels database.[br]
+ Please note that <network_mask> is a wildcard string that will match
+ wildcard strings.[br]
+ @examples:
+ [example]
+ echo $regchan.list(#kvirc*,[fnc]$my.network[/fnc])
+ [/example]
+*/
+
+static bool regchan_kvs_fnc_list(KviKvsModuleFunctionCall * c)
+{
+ QString szChan,szNetmask;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("channel name",KVS_PT_STRING,KVS_PF_OPTIONAL,szChan)
+ KVSM_PARAMETER("netmask",KVS_PT_STRING,KVS_PF_OPTIONAL,szNetmask)
+ KVSM_PARAMETERS_END(c)
+
+ KviKvsArray* pArray = new KviKvsArray();
+// KviKvsArray* pArrayCN = new KviKvsArray();
+// pArrayCN->set(0,new KviKvsVariant(QString("")));
+// pArrayCN->set(1,new KviKvsVariant(QString("")));
+ int aid=0;
+
+ if(szChan.isEmpty())szChan="*";
+ if(szNetmask.isEmpty())szNetmask="*";
+
+ KviPointerHashTable<const char *,KviRegisteredChannelList> * d = g_pRegisteredChannelDataBase->channelDict();
+ KviPointerHashTableIterator<const char *,KviRegisteredChannelList> it(*d);
+
+ while(KviRegisteredChannelList * l = it.current())
+ {
+ for(KviRegisteredChannel * ch = l->first();ch;ch = l->next())
+ if(KviQString::matchWildExpressionsCI(ch->name().ptr(),szChan) &&
+ KviQString::matchWildExpressionsCI(ch->netMask().ptr(),szNetmask))
+ {
+// FIXME: WE NEED TO RETURN AN ARRAY OF 2-ELEMENT ARRAYS (chan name, netmask)
+ pArray->set(aid,new KviKvsVariant(QString(ch->name()+"@"+ch->netMask())));
+// pArray->set(aid,new KviKvsVariant(QString(ch->name()));
+// pArrayCN->set(0,new KviKvsVariant(QString(ch->name())));
+// pArrayCN->set(1,new KviKvsVariant(QString(ch->netMask())));
+// pArray->set(aid,new KviKvsVariant(pArrayCN));
+ aid++;
+ }
+ ++it;
+ }
+ c->returnValue()->setArray(pArray);
+ return true;
+}
+
+/*
+ @doc: regchan.property
+ @type:
+ function
+ @title:
+ $regchan.property
+ @short:
+ Returns a property of an entry in the registered channels database
+ @syntax:
+ <string> $regchan.property(<channel_name:string>,<network:string>,<property_name:string>)
+ @description:
+ Returns the value of the property identified by <property_name> and
+ bound to the channel identified by <channel_name> and best
+ matched by <network>.[br]
+ If the property is not set or if there is no matching channel entry an empty string is returned.[br]
+ @examples:
+ [example]
+ echo $regchan.property(#kvirc,[fnc]$my.network[/fnc],autojoin)
+ [/example]
+*/
+
+static bool regchan_kvs_fnc_property(KviKvsModuleFunctionCall * c)
+{
+ QString szChan,szNetwork,szPropertyName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("channel name",KVS_PT_STRING,0,szChan)
+ KVSM_PARAMETER("network",KVS_PT_STRING,0,szNetwork)
+ KVSM_PARAMETER("property name",KVS_PT_NONEMPTYSTRING,0,szPropertyName)
+ KVSM_PARAMETERS_END(c)
+ KviRegisteredChannel * ch = g_pRegisteredChannelDataBase->find(szChan,szNetwork);
+ if(ch)
+ {
+ KviStr * p = ch->property(szPropertyName);
+ if(p)c->returnValue()->setString(p->ptr());
+ } //else c->warning(__tr("User %s not found"),parms->safeFirstParam());
+ return true;
+}
+/*
+ @doc: regchan.match
+ @type:
+ function
+ @title:
+ $regchan.match
+ @short:
+ Checks if a channel is registered
+ @syntax:
+ <boolean> $regchan.match(<channel_name:string>,<network:string>)
+ @description:
+ Returns 1 if <channel_name> and <network> match a registered channel entry
+ and 0 otherwise.
+ @examples:
+ [example]
+ echo $regchan.match(#kvirc,IRCNet)
+ echo $regchan.match(#kvirc,$my.network)
+ [/example]
+ @seealso:
+ [fnc]$regchan.find[/fnc]
+*/
+
+
+static bool regchan_kvs_fnc_match(KviKvsModuleFunctionCall * c)
+{
+ QString szChan,szNetwork;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("channel name",KVS_PT_STRING,0,szChan)
+ KVSM_PARAMETER("network",KVS_PT_STRING,0,szNetwork)
+ KVSM_PARAMETERS_END(c)
+ KviRegisteredChannel * ch = g_pRegisteredChannelDataBase->find(szChan,szNetwork);
+ c->returnValue()->setBoolean(ch);
+ return true;
+}
+
+/*
+ @doc: regchan.find
+ @type:
+ function
+ @title:
+ $regchan.find
+ @short:
+ Checks if a channel is registered
+ @syntax:
+ <boolean> $regchan.find(<channel_name:string>,<netmask:string>)
+ @description:
+ Returns 1 if the channel identified by <channel_name> and <netmask>
+ is registered and 0 otherwise. This function is similar to $regchan.match
+ but for $regchan.find the second parameter is the exact netmask
+ of the registered channel entry.
+ @examples:
+ [example]
+ echo $regchan.find(#kvirc,IRCNet)
+ echo $regchan.find(#kvirc,*)
+ [/example]
+ @seealso:
+ [fnc]$regchan.match[/fnc]
+*/
+
+static bool regchan_kvs_fnc_find(KviKvsModuleFunctionCall * c)
+{
+ QString szChan,szNetmask;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("channel name",KVS_PT_STRING,0,szChan)
+ KVSM_PARAMETER("netmask",KVS_PT_STRING,0,szNetmask)
+ KVSM_PARAMETERS_END(c)
+ KviRegisteredChannel * ch = g_pRegisteredChannelDataBase->find(szChan,szNetmask);
+ c->returnValue()->setBoolean(ch);
+ return true;
+}
+
+static bool regchan_module_init(KviModule * m)
+{
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"add",regchan_kvs_cmd_add);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"showlist",regchan_kvs_cmd_showlist);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"remove",regchan_kvs_cmd_remove);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"setProperty",regchan_kvs_cmd_setProperty);
+ KVSM_REGISTER_FUNCTION(m,"property",regchan_kvs_fnc_property);
+ KVSM_REGISTER_FUNCTION(m,"match",regchan_kvs_fnc_match);
+ KVSM_REGISTER_FUNCTION(m,"find",regchan_kvs_fnc_find);
+ KVSM_REGISTER_FUNCTION(m,"list",regchan_kvs_fnc_list);
+
+ return true;
+}
+
+static bool regchan_module_cleanup(KviModule *m)
+{
+ return true;
+}
+
+static bool regchan_module_can_unload(KviModule *)
+{
+ return true;
+}
+
+KVIRC_MODULE(
+ "RegChan", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "Script interface to the registered channels database",
+ regchan_module_init,
+ regchan_module_can_unload,
+ 0,
+ regchan_module_cleanup
+)
diff --git a/src/modules/reguser/Makefile.am b/src/modules/reguser/Makefile.am
new file mode 100644
index 00000000..93aea872
--- /dev/null
+++ b/src/modules/reguser/Makefile.am
@@ -0,0 +1,25 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvireguser.la
+
+libkvireguser_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvireguser_la_SOURCES = libkvireguser.cpp edituser.cpp wizard.cpp dialog.cpp
+libkvireguser_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= edituser.h wizard.h dialog.h
+nodist_libkvireguser_la_SOURCES = moc_dialog.cpp
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+moc_dialog.cpp: dialog.h
+ $(SS_QT_MOC) $< -o $@
+
+edituser.cpp: edituser.moc
+wizard.cpp: wizard.moc
diff --git a/src/modules/reguser/dialog.cpp b/src/modules/reguser/dialog.cpp
new file mode 100644
index 00000000..b8d02fe2
--- /dev/null
+++ b/src/modules/reguser/dialog.cpp
@@ -0,0 +1,903 @@
+//=============================================================================
+//
+// File : edituser.cpp
+// Creation date : Tue Dec 26 2000 12:24:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+#define _WANT_OPTION_FLAGS_
+
+#include "edituser.h"
+#include "kvi_regusersdb.h"
+
+#include "kvi_locale.h"
+#include "kvi_ircmask.h"
+#include "kvi_debug.h"
+#include "kvi_iconmanager.h"
+#include "kvi_app.h"
+#include "kvi_options.h"
+#include "kvi_file.h"
+#include "kvi_filedialog.h"
+#include "kvi_msgbox.h"
+#include "kvi_fileutils.h"
+#include "kvi_settings.h"
+#include "kvi_stringconversion.h"
+#include "kvi_options.h"
+
+#include <qlayout.h>
+#include <qlabel.h>
+#ifdef COMPILE_USE_QT4
+#include <q3header.h>
+#include <qevent.h>
+#include <QImageWriter>
+#include <QImageReader>
+
+#else
+#include <qheader.h>
+#endif
+#include "kvi_pointerhashtable.h"
+#include <qimage.h>
+#include <qstring.h>
+#include <qcombobox.h>
+
+
+#include <qstyle.h>
+#include <qpainter.h>
+#include "kvi_tal_hbox.h"
+#include "kvi_tal_vbox.h"
+#include <qinputdialog.h>
+
+#include "wizard.h"
+#include "dialog.h"
+
+
+#ifdef COMPILE_INFO_TIPS
+ #include <qtooltip.h>
+#endif // COMPILE_INFO_TIPS
+
+
+#define LVI_ICON_SIZE 32
+#define LVI_BORDER 4
+#define LVI_SPACING 8
+#define LVI_MINIMUM_TEXT_WIDTH 300
+#define LVI_MINIMUM_CELL_WIDTH (LVI_MINIMUM_TEXT_WIDTH + LVI_BORDER + LVI_ICON_SIZE + LVI_SPACING + LVI_BORDER)
+
+
+extern KviRegisteredUsersDialog * g_pRegisteredUsersDialog;
+
+KviRegisteredUsersDialogItem::KviRegisteredUsersDialogItem(KviTalListViewItem * par,KviRegisteredUser * u)
+: KviRegisteredUsersDialogItemBase(User,par), m_pUser(u)
+{
+ QString szTmp;
+ QString t = "<nobr><b>";
+ t += u->name();
+ t += "</b> [";
+ szTmp = m_pUser->getProperty("notify");
+ if(szTmp.isEmpty())
+ {
+ t += __tr2qs("Notify disabled");
+ } else {
+ t += __tr2qs("Notify as: ");
+ t += szTmp;
+
+ }
+ t += "]</nobr>";
+ t += "<br><nobr><font size=\"-1\">";
+ szTmp = m_pUser->getProperty("comment");
+ if(szTmp.isEmpty())
+ {
+ t += __tr2qs("No comment set");
+ } else {
+ t += __tr2qs("Comment: ");
+ t += m_pUser->getProperty("comment");
+ }
+ t += "</font></nobr>";
+ m_pText = new QSimpleRichText(t,listView()->font());
+
+ //setText(0,u->name());
+}
+
+KviRegisteredUsersDialogItem::~KviRegisteredUsersDialogItem()
+{
+ delete m_pText;
+}
+
+QString KviRegisteredUsersDialogItem::key(int,bool) const
+{
+ return m_pUser->name();
+}
+
+void KviRegisteredUsersDialogItem::paintCell(QPainter * p,const QColorGroup &cg,int column,int width,int align)
+{
+ KviTalListViewItem::paintCell(p,cg,column,width,align);
+ if(column==0)
+ {
+ p->drawPixmap(LVI_BORDER,LVI_BORDER, *(g_pIconManager->getBigIcon(QString(KVI_BIGICON_REGUSERS))) );
+ int afterIcon = LVI_BORDER + LVI_ICON_SIZE + LVI_SPACING;
+ int www = listView()->visibleWidth() - (afterIcon + LVI_BORDER);
+ m_pText->setWidth(www);
+ if(isSelected())
+ {
+ QColorGroup cg2(cg);
+ cg2.setColor(QColorGroup::HighlightedText,cg.text());
+ m_pText->draw(p,afterIcon,LVI_BORDER,QRect(afterIcon,LVI_BORDER,www,height() - (LVI_BORDER * 2)),cg2);
+ } else {
+ m_pText->draw(p,afterIcon,LVI_BORDER,QRect(afterIcon,LVI_BORDER,www,height() - (LVI_BORDER * 2)),cg);
+ }
+ } else {
+ if(m_pUser)
+ {
+ if(!m_pUser->getProperty("notify").isEmpty())
+ p->drawPixmap(LVI_BORDER,LVI_BORDER,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_NOTIFYONLINE)));
+ if(m_pUser->ignoreEnagled())
+ p->drawPixmap(LVI_BORDER,2*LVI_BORDER+16,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_IGNORE)));
+ }
+ }
+}
+
+void KviRegisteredUsersDialogItem::setup()
+{
+ KviTalListViewItem::setup();
+ int iWidth = listView()->visibleWidth();
+ if(iWidth < LVI_MINIMUM_CELL_WIDTH)iWidth = LVI_MINIMUM_CELL_WIDTH;
+ iWidth -= LVI_BORDER + LVI_ICON_SIZE + LVI_SPACING + LVI_BORDER;
+ m_pText->setWidth(iWidth);
+ int iHeight = m_pText->height() + (2 * LVI_BORDER);
+ if(iHeight < (LVI_ICON_SIZE + (2 * LVI_BORDER)))iHeight = LVI_ICON_SIZE + (2 * LVI_BORDER);
+ setHeight(iHeight);
+}
+
+
+KviRegisteredUsersDialog::KviRegisteredUsersDialog(QWidget * par)
+: QWidget(par)
+{
+ g_pRegisteredUsersDialog = this;
+
+ g_pLocalRegisteredUserDataBase = new KviRegisteredUserDataBase();
+ g_pLocalRegisteredUserDataBase->copyFrom(g_pRegisteredUserDataBase);
+
+ setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_REGUSERS)));
+ setCaption(__tr2qs("Registered Users - KVIrc"));
+
+ QGridLayout * g = new QGridLayout(this,4,3,4,4);
+
+
+ m_pListView = new KviTalListView(this);
+
+ m_pListView->addColumn(__tr2qs("Name"),200);
+ m_pListView->addColumn(__tr2qs("Flags"),20);
+
+ m_pListView->setAllColumnsShowFocus(true);
+
+ m_pListView->setSelectionMode(KviTalListView::Extended);
+ m_pListView->setRootIsDecorated(TRUE);
+
+#ifdef COMPILE_INFO_TIPS
+ QToolTip::add(m_pListView,__tr2qs("<center>This is the list of registered users. " \
+ "KVIrc can automatically recognize and associate properties to them.<br>" \
+ "Use the buttons on the right to add, edit and remove entries. " \
+ "The \"notify\" column allows you to quickly add users to the notify list. " \
+ "Notify list fine-tuning can be performed by editing the entry properties.</center>"));
+#endif // COMPILE_INFO_TIPS
+
+ connect(m_pListView,SIGNAL(pressed(KviTalListViewItem *,const QPoint &,int)),this,SLOT(itemPressed(KviTalListViewItem *,const QPoint &,int)));
+ connect(m_pListView,SIGNAL(doubleClicked(KviTalListViewItem *)),this,SLOT(itemDoubleClicked(KviTalListViewItem *)));
+
+ g->addMultiCellWidget(m_pListView,0,1,0,1);
+
+ KviTalVBox * vbox = new KviTalVBox(this);
+ vbox->setSpacing(4);
+ g->addWidget(vbox,0,2);
+
+ m_pWizardAddButton = new QPushButton(__tr2qs("Add (Wizard)..."),vbox);
+ connect(m_pWizardAddButton,SIGNAL(clicked()),this,SLOT(addWizardClicked()));
+#ifdef COMPILE_INFO_TIPS
+ QToolTip::add(m_pWizardAddButton,__tr2qs("Add a registered user by means of a user-friendly wizard."));
+#endif // COMPILE_INFO_TIPS
+ m_pWizardAddButton->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_NEWITEMBYWIZARD)));
+
+
+ m_pAddButton = new QPushButton(__tr2qs("&Add..."),vbox);
+ connect(m_pAddButton,SIGNAL(clicked()),this,SLOT(addClicked()));
+#ifdef COMPILE_INFO_TIPS
+ QToolTip::add(m_pAddButton,__tr2qs("Open the edit dialog to create a new user entry."));
+#endif // COMPILE_INFO_TIPS
+ m_pAddButton->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_NEWITEM)));
+
+ m_pAddGroupButton = new QPushButton(__tr2qs("&Add Group..."),vbox);
+ connect(m_pAddGroupButton,SIGNAL(clicked()),this,SLOT(addGroupClicked()));
+#ifdef COMPILE_INFO_TIPS
+ QToolTip::add(m_pAddGroupButton,__tr2qs("Adds a new group"));
+#endif // COMPILE_INFO_TIPS
+ m_pAddGroupButton->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_NEWITEM)));
+
+ m_pRemoveButton = new QPushButton(__tr2qs("Re&move"),vbox);
+ connect(m_pRemoveButton,SIGNAL(clicked()),this,SLOT(removeClicked()));
+ m_pRemoveButton->setEnabled(false);
+#ifdef COMPILE_INFO_TIPS
+ QToolTip::add(m_pRemoveButton,__tr2qs("Remove the currently selected entries."));
+#endif // COMPILE_INFO_TIPS
+ m_pRemoveButton->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DELETEITEM)));
+
+
+ m_pEditButton = new QPushButton(__tr2qs("&Edit..."),vbox);
+ connect(m_pEditButton,SIGNAL(clicked()),this,SLOT(editClicked()));
+ m_pEditButton->setEnabled(false);
+#ifdef COMPILE_INFO_TIPS
+ QToolTip::add(m_pEditButton,__tr2qs("Edit the first selected entry."));
+#endif // COMPILE_INFO_TIPS
+ m_pEditButton->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_EDITITEM)));
+
+ QFrame * f = new QFrame(vbox);
+ f->setFrameStyle(QFrame::HLine | QFrame::Sunken);
+
+ m_pExportButton = new QPushButton(__tr("Export To..."),vbox);
+ m_pExportButton->setEnabled(false);
+ connect(m_pExportButton,SIGNAL(clicked()),this,SLOT(exportClicked()));
+#ifdef COMPILE_INFO_TIPS
+ QToolTip::add(m_pExportButton,__tr2qs("Export the selected entries to a file.<br>All the data associated with the selected registered users will be exported.<br>You (or anyone else) can later import the entries by using the \"Import\" button."));
+#endif // COMPILE_INFO_TIPS
+ m_pExportButton->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_FLOPPY)));
+
+
+ m_pImportButton = new QPushButton(__tr("Import From..."),vbox);
+ connect(m_pImportButton,SIGNAL(clicked()),this,SLOT(importClicked()));
+#ifdef COMPILE_INFO_TIPS
+ QToolTip::add(m_pImportButton,__tr2qs("Import entries from a file exported earlier by the \"export\" function of this dialog."));
+#endif // COMPILE_INFO_TIPS
+ m_pImportButton->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_FOLDER)));
+
+
+ KviTalHBox * hbox = new KviTalHBox(this);
+ hbox->setSpacing(4);
+ g->addMultiCellWidget(hbox,3,3,1,2);
+
+ QPushButton * b;
+
+
+ b = new QPushButton(__tr2qs("&OK"),hbox);
+ connect(b,SIGNAL(clicked()),this,SLOT(okClicked()));
+ b->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ACCEPT)));
+ //b->setMinimumWidth(120);
+
+ b = new QPushButton(__tr2qs("Cancel"),hbox);
+ connect(b,SIGNAL(clicked()),this,SLOT(cancelClicked()));
+ b->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DISCARD)));
+ //b->setMinimumWidth(120);
+
+
+ g->addRowSpacing(2,15);
+
+ g->setColStretch(0,1);
+ g->setRowStretch(1,1);
+
+ connect(m_pListView,SIGNAL(selectionChanged()),this,SLOT(selectionChanged()));
+ connect(m_pListView,SIGNAL(rightButtonClicked ( KviTalListViewItem *, const QPoint &, int ) ),this,SLOT(listViewRightButtonClicked ( KviTalListViewItem *, const QPoint &, int )));
+
+ fillList();
+
+ if(!parent())
+ {
+ if(KVI_OPTION_RECT(KviOption_rectRegisteredUsersDialogGeometry).y() < 5)
+ {
+ KVI_OPTION_RECT(KviOption_rectRegisteredUsersDialogGeometry).setY(5);
+ }
+ //setGeometry(KVI_OPTION_RECT(KviOption_rectRegisteredUsersDialogGeometry));
+ resize(KVI_OPTION_RECT(KviOption_rectRegisteredUsersDialogGeometry).width(),
+ KVI_OPTION_RECT(KviOption_rectRegisteredUsersDialogGeometry).height());
+ move(KVI_OPTION_RECT(KviOption_rectRegisteredUsersDialogGeometry).x(),
+ KVI_OPTION_RECT(KviOption_rectRegisteredUsersDialogGeometry).y());
+ }
+}
+
+KviRegisteredUsersDialog::~KviRegisteredUsersDialog()
+{
+#ifndef Q_OS_MACX
+ if(!parent())KVI_OPTION_RECT(KviOption_rectRegisteredUsersDialogGeometry) = QRect(pos().x(),pos().y(),
+ size().width(),size().height());
+#else
+ if(!parent())KVI_OPTION_RECT(KviOption_rectRegisteredUsersDialogGeometry) = geometry();
+#endif
+
+ g_pRegisteredUsersDialog = 0;
+
+ delete g_pLocalRegisteredUserDataBase;
+ g_pLocalRegisteredUserDataBase = 0;
+}
+
+void KviRegisteredUsersDialog::itemPressed(KviTalListViewItem *it,const QPoint &pnt,int c)
+{
+ if(!it)return;
+ KviRegisteredUsersDialogItemBase* b=(KviRegisteredUsersDialogItemBase*)it;
+ if(b->type()==KviRegisteredUsersDialogItemBase::User)
+ {
+ KviRegisteredUsersDialogItem *i = (KviRegisteredUsersDialogItem *)it;
+
+ QRect r = m_pListView->itemRect(i);
+ int daw = m_pListView->columnWidth(0);
+
+ QPoint ppp = m_pListView->mapFromGlobal(pnt);
+
+ if((c == 1) && (ppp.x() < (r.height() + 5 + daw)))
+ {
+ // notify list toggle
+ if(i->user()->getProperty("notify").isEmpty())
+ {
+ i->user()->setProperty("notify",""); // kill that
+ } else {
+ // try to find the nicknames to be notified
+ QString szMask;
+
+ for(KviIrcMask * m = i->user()->maskList()->first();m;m = i->user()->maskList()->next())
+ {
+ QString tmp = m->nick();
+ if((tmp.find('*') == -1) && (tmp.find('?') == -1) && (!tmp.isEmpty()))
+ {
+ if(!szMask.isEmpty())szMask.append(' ');
+ szMask.append(tmp);
+ }
+ }
+ // if the nickname list is still empty , build a dummy nick to notify
+ szMask = i->user()->name();
+ szMask.replace(" ","");
+ szMask.replace("'","");
+ szMask.replace("&","");
+ szMask.replace(",","");
+
+ i->user()->setProperty("notify",szMask);
+ }
+ m_pListView->update();
+ }
+ }
+}
+
+void KviRegisteredUsersDialog::itemDoubleClicked(KviTalListViewItem *it)
+{
+ if(!it)return;
+ KviRegisteredUsersDialogItemBase* b=(KviRegisteredUsersDialogItemBase*)it;
+ if(b->type()==KviRegisteredUsersDialogItemBase::User)
+ {
+ editItem((KviRegisteredUsersDialogItem *)it);
+ } else {
+ KviRegisteredUsersGroupItem *i = (KviRegisteredUsersGroupItem *)b;
+ editGroup(i->group());
+ }
+}
+
+void KviRegisteredUsersDialog::addGroupClicked()
+{
+ bool ok;
+ QString text = QInputDialog::getText(
+ "KVIrc", __tr("Group name:"), QLineEdit::Normal,
+ QString::null, &ok, this );
+ if ( ok && !text.isEmpty() ) {
+ g_pLocalRegisteredUserDataBase->addGroup(text);
+ fillList();
+ }
+}
+void KviRegisteredUsersDialog::editGroup(KviRegisteredUserGroup* group)
+{
+ bool ok;
+
+ QString text = QInputDialog::getText(
+ "KVIrc", __tr("Group name:"), QLineEdit::Normal,
+ group->name(), &ok, this );
+ if ( ok && !text.isEmpty() ) {
+ QString szOldGroup=group->name();
+ g_pLocalRegisteredUserDataBase->groupDict()->setAutoDelete(0);
+ g_pLocalRegisteredUserDataBase->groupDict()->remove(szOldGroup);
+ g_pLocalRegisteredUserDataBase->groupDict()->setAutoDelete(1);
+ group->setName(text);
+ g_pLocalRegisteredUserDataBase->groupDict()->insert(text,group);
+
+ KviPointerHashTable<QString,KviRegisteredUser> * d = g_pLocalRegisteredUserDataBase->userDict();
+
+ for(KviRegisteredUser * u = d->first();u;u = d->next())
+ {
+ if(u->group()==szOldGroup)
+ u->setGroup(text);
+ }
+
+
+ fillList();
+ }
+}
+
+void KviRegisteredUsersDialog::listViewRightButtonClicked ( KviTalListViewItem * pItem, const QPoint & point, int )
+{
+ if(pItem)
+ {
+ KviRegisteredUsersDialogItemBase* b=(KviRegisteredUsersDialogItemBase*)pItem;
+ if(b->type()==KviRegisteredUsersDialogItemBase::User)
+ {
+ KviTalPopupMenu *groups = new KviTalPopupMenu;
+
+ KviPointerHashTable<QString,KviRegisteredUserGroup> * pGroups = g_pLocalRegisteredUserDataBase->groupDict();
+ m_TmpDict.clear();
+ for(KviPointerHashTableEntry<QString,KviRegisteredUserGroup> * g = pGroups->firstEntry();g;g = pGroups->nextEntry())
+ {
+ int id=groups->insertItem(g->key());
+ m_TmpDict.replace(id,g->data());
+ }
+
+ connect(groups,SIGNAL(activated ( int )),this,SLOT(moveToGroupMenuClicked(int)));
+
+ KviTalPopupMenu *mainPopup = new KviTalPopupMenu;
+ mainPopup->insertItem(__tr("Move to group"),groups);
+ mainPopup->exec(point);
+ }
+ }
+}
+
+void KviRegisteredUsersDialog::moveToGroupMenuClicked(int id)
+{
+ QString szGroup=m_TmpDict.find(id)->name();
+ KviTalListViewItemIterator it( m_pListView, KviTalListViewItemIterator::Selected );
+ while ( it.current() ) {
+ KviRegisteredUsersDialogItemBase* b=(KviRegisteredUsersDialogItemBase*)(it.current());
+ if(b->type()==KviRegisteredUsersDialogItemBase::User)
+ {
+ ((KviRegisteredUsersDialogItem *)(it.current()))->user()->setGroup(szGroup);
+ }
+ ++it;
+ }
+ fillList();
+}
+
+void KviRegisteredUsersDialog::fillList()
+{
+ m_pListView->clear();
+ KviPointerHashTable<QString,KviRegisteredUsersGroupItem> groupItems(5,false);
+ groupItems.setAutoDelete(false);
+
+ KviPointerHashTable<QString,KviRegisteredUserGroup> * pGroups = g_pLocalRegisteredUserDataBase->groupDict();
+ for(KviRegisteredUserGroup * g = pGroups->first();g;g = pGroups->next())
+ {
+ KviRegisteredUsersGroupItem* pCur = new KviRegisteredUsersGroupItem(m_pListView,g);
+ groupItems.insert(g->name(),pCur);
+ pCur->setOpen(TRUE);
+ }
+
+ KviPointerHashTable<QString,KviRegisteredUser> * d = g_pLocalRegisteredUserDataBase->userDict();
+ KviRegisteredUsersDialogItem * item;
+
+ for(KviRegisteredUser * u = d->first();u;u = d->next())
+ {
+ if(u->group().isEmpty())
+ u->setGroup(__tr("Default"));
+ if(groupItems.find(u->group()))
+ item = new KviRegisteredUsersDialogItem(groupItems.find(u->group()),u);
+ else if(groupItems.find(__tr("Default")))
+ item = new KviRegisteredUsersDialogItem(groupItems.find(__tr("Default")),u);
+ else { //should never be called
+ KviRegisteredUserGroup* pGroup = g_pLocalRegisteredUserDataBase->addGroup(__tr("Default"));
+ KviRegisteredUsersGroupItem* pCur = new KviRegisteredUsersGroupItem(m_pListView,pGroup);
+ groupItems.insert(__tr("Default"),pCur);
+ item = new KviRegisteredUsersDialogItem(pCur,u);
+ }
+ }
+ if(m_pListView->firstChild())
+ {
+ m_pListView->setSelected(m_pListView->firstChild(),true);
+ m_pListView->setCurrentItem(m_pListView->firstChild());
+ }
+}
+
+void KviRegisteredUsersDialog::closeEvent(QCloseEvent *e)
+{
+ m_pListView->clear();
+ e->accept();
+ okClicked();
+ //delete this;
+}
+
+void KviRegisteredUsersDialog::okClicked()
+{
+ m_pListView->clear();
+ g_pRegisteredUserDataBase->copyFrom(g_pLocalRegisteredUserDataBase);
+ g_pApp->restartNotifyLists();
+ delete this;
+}
+
+void KviRegisteredUsersDialog::cancelClicked()
+{
+ m_pListView->clear();
+ delete this;
+}
+
+void KviRegisteredUsersDialog::addClicked()
+{
+ KviRegisteredUserEntryDialog * dlg = new KviRegisteredUserEntryDialog(this,0);
+ int ret = dlg->exec();
+ delete dlg;
+
+ if(!g_pRegisteredUsersDialog)return; // we have been deleted!
+
+ if(ret == QDialog::Accepted)
+ {
+ fillList();
+ }
+}
+
+void KviRegisteredUsersDialog::addWizardClicked()
+{
+ KviRegistrationWizard * w = new KviRegistrationWizard("",g_pLocalRegisteredUserDataBase,this,true);
+ int ret = w->exec();
+ delete w;
+ if(!g_pRegisteredUsersDialog)return; // we have been deleted!
+ if(ret == QDialog::Accepted)
+ {
+ fillList();
+ }
+}
+
+void KviRegisteredUsersDialog::removeClicked()
+{
+ KviTalListViewItemIterator it( m_pListView, KviTalListViewItemIterator::Selected );
+ while ( it.current() ) {
+ KviRegisteredUsersDialogItemBase* b=(KviRegisteredUsersDialogItemBase*)(it.current());
+ if(b->type()==KviRegisteredUsersDialogItemBase::User)
+ {
+ g_pLocalRegisteredUserDataBase->removeUser(((KviRegisteredUsersDialogItem *)(it.current()))->user()->name());
+ } else {
+ g_pLocalRegisteredUserDataBase->removeGroup(((KviRegisteredUsersGroupItem *)(it.current()))->group()->name());
+ }
+ ++it;
+ }
+ fillList();
+// KviRegisteredUsersDialogItem *it = (KviRegisteredUsersDialogItem *)m_pListView->firstChild();
+// KviRegisteredUsersDialogItemBase* b=(KviRegisteredUsersDialogItemBase*)it;
+// if(b->type()==KviRegisteredUsersDialogItemBase::User)
+// {
+// KviPointerList<KviRegisteredUsersDialogItem> l;
+// l.setAutoDelete(false);
+// while(it)
+// {
+// if(it->isSelected())l.append(it);
+// it = (KviRegisteredUsersDialogItem *)it->nextSibling();
+// }
+//
+// for(KviRegisteredUsersDialogItem * i = l.first();i;i = l.next())
+// {
+// //g_pLocalRegisteredUserDataBase->removeUser(i->user()->name());
+// delete i;
+// }
+// } else {
+//
+// }
+}
+
+void KviRegisteredUsersDialog::editClicked()
+{
+ KviRegisteredUsersDialogItemBase* b=(KviRegisteredUsersDialogItemBase*)(m_pListView->currentItem());
+ if(!b)return;
+ if(b->type()==KviRegisteredUsersDialogItemBase::User)
+ {
+ KviRegisteredUsersDialogItem *i = (KviRegisteredUsersDialogItem *)b;
+ editItem(i);
+ } else {
+ KviRegisteredUsersGroupItem *i = (KviRegisteredUsersGroupItem *)b;
+ editGroup(i->group());
+ }
+}
+
+void KviRegisteredUsersDialog::editItem(KviRegisteredUsersDialogItem * i)
+{
+ KviRegisteredUser * u = i->user();
+
+ i->setUser(0);
+
+ QString szName = u->name();
+
+ KviRegisteredUserEntryDialog * dlg = new KviRegisteredUserEntryDialog(this,u);
+ int res = dlg->exec();
+ delete dlg;
+
+ if(!g_pRegisteredUsersDialog)return; // we have been deleted!
+
+ if(res == QDialog::Accepted)
+ {
+ fillList();
+
+ // select the last edited item
+ KviTalListViewItem * i = m_pListView->firstChild();
+ while(i)
+ {
+ QString szTmp = i->text(0);
+ if(KviQString::equalCI(szTmp,szName))
+ {
+ m_pListView->setSelected(i,true);
+ m_pListView->setCurrentItem(i);
+ break;
+ }
+ i = i->nextSibling();
+ }
+
+ return;
+ }
+
+ i->setUser(u);
+ m_pListView->update();
+}
+
+
+void KviRegisteredUsersDialog::selectionChanged()
+{
+ bool bHaveSelected = !m_pListView->selectedItem();
+
+ m_pEditButton->setEnabled(bHaveSelected);
+ m_pRemoveButton->setEnabled(bHaveSelected);
+ m_pExportButton->setEnabled(bHaveSelected);
+}
+
+
+#define KVI_REGUSER_DB_FILE_MAGIC 0x5334DBDB
+#define KVI_REGUSER_DB_FILE_VERSION 1
+
+typedef struct _KviReguserDbFileHeader
+{
+ unsigned int magic;
+ unsigned int version;
+ unsigned int nentries;
+} KviReguserDbFileHeader;
+
+void KviRegisteredUsersDialog::exportClicked()
+{
+ unsigned int nEntries = 0;
+
+ KviTalListViewItemIterator it( m_pListView, KviTalListViewItemIterator::Selected );
+ KviTalListViewItemIterator cit( m_pListView, KviTalListViewItemIterator::Selected );
+ while ( cit.current() ) {
+ if(((KviRegisteredUsersDialogItemBase *)(cit.current()))->type() == KviRegisteredUsersDialogItemBase::User)
+ nEntries++;
+ ++cit;
+ }
+
+ if(nEntries < 1)
+ {
+ KviMessageBox::warning(__tr("No entries selected."));
+ return;
+ }
+
+ QString buffer;
+
+ if(!KviFileDialog::askForSaveFileName(buffer,__tr("Choose a Filename - KVIrc"),0,0,true,true))return;
+
+ if(!g_pRegisteredUsersDialog)return; // we have been deleted!
+
+ KviFile f(buffer);
+ if(!f.open(IO_WriteOnly | IO_Truncate))
+ {
+ KviMessageBox::warning(__tr("Can't open file %Q for writing."),&buffer);
+ return;
+ }
+
+ KviReguserDbFileHeader hf;
+ hf.magic = KVI_REGUSER_DB_FILE_MAGIC;
+ hf.version = KVI_REGUSER_DB_FILE_VERSION;
+ hf.nentries = nEntries;
+
+ if(f.writeBlock((const char *)&hf,sizeof(KviReguserDbFileHeader)) != sizeof(KviReguserDbFileHeader))goto write_error;
+
+ while ( it.current() ) {
+ KviRegisteredUsersDialogItemBase *pBase = (KviRegisteredUsersDialogItemBase *)(it.current());
+ if(pBase->type()!=KviRegisteredUsersDialogItemBase::User) continue;
+ QString szName = it.current()->text(0);
+ KviRegisteredUser * u = ((KviRegisteredUsersDialogItem *)(it.current()))->user();
+ if(u)
+ {
+ if(!f.save(szName))goto write_error;
+ KviPointerHashTable<QString,QString> * pd = u->propertyDict();
+ if(pd)
+ {
+ if(!f.save(pd->count()))goto write_error;
+ for(KviPointerHashTableEntry<QString,QString> * pCur = pd->firstEntry();pCur;pCur = pd->nextEntry())
+ {
+ QString key = pCur->key();
+ if(!f.save(key))goto write_error;
+ if(!f.save(*(pCur->data())))goto write_error;
+ }
+ } else {
+ if(!f.save(0))goto write_error;
+ }
+
+ KviPointerList<KviIrcMask> * ml = u->maskList();
+ if(ml)
+ {
+ if(!f.save(ml->count()))goto write_error;
+ for(KviIrcMask * m = ml->first();m;m = ml->next())
+ {
+ QString fullMask;
+ m->mask(fullMask,KviIrcMask::NickUserHost);
+ if(!f.save(fullMask))goto write_error;
+ }
+ } else {
+ if(!f.save(0))goto write_error;
+ }
+
+ QString avatar;
+ if(u->getProperty("avatar",avatar))
+ {
+ KviAvatar * av = g_pIconManager->getAvatar(QString::null,avatar);
+ if(av)
+ {
+ if(!av->pixmap()->isNull())
+ {
+ if(!f.save(1))goto write_error;
+#ifdef COMPILE_USE_QT4
+ QImageWriter io;
+ io.setDevice(&f);
+ io.setFormat("PNG");
+ if(!io.write(av->pixmap()->convertToImage()))goto write_error;
+#else
+ QImageIO io;
+ io.setImage(av->pixmap()->convertToImage());
+ io.setIODevice(&f);
+ io.setFormat("PNG");
+ if(!io.write())goto write_error;
+#endif
+ } else {
+ if(!f.save(0))goto write_error;
+ }
+ } else {
+ if(!f.save(0))goto write_error;
+ }
+ } else {
+ if(!f.save(0))goto write_error;
+ }
+ }
+ ++it;
+ }
+
+ goto succesfull_export;
+
+
+write_error:
+ KviMessageBox::warning(__tr("Can't export the registered users database: Write error."));
+ f.close();
+ return;
+
+succesfull_export:
+
+ f.close();
+}
+
+void KviRegisteredUsersDialog::importClicked()
+{
+ //KviStr buffer;
+ QString buffer;
+
+ if(!KviFileDialog::askForOpenFileName(buffer,__tr("Choose a Filename - KVIrc")))return;
+
+ if(!g_pRegisteredUsersDialog)return; // we have been deleted!
+
+ KviFile f(buffer);
+ if(!f.open(IO_ReadOnly))
+ {
+ KviMessageBox::warning(__tr2qs("Can't open file %s for reading."),&buffer);
+ return;
+ }
+
+ KviReguserDbFileHeader hf;
+ unsigned int idx;
+
+ if(f.readBlock((char *)&hf,sizeof(KviReguserDbFileHeader)) != sizeof(KviReguserDbFileHeader))goto read_error;
+
+ if(hf.magic != KVI_REGUSER_DB_FILE_MAGIC)
+ {
+ KviMessageBox::warning(__tr2qs("The file %s doesn't appear to be a valid registered users database."),&buffer);
+ f.close();
+ return;
+ }
+
+ if(hf.version != KVI_REGUSER_DB_FILE_VERSION)
+ {
+ KviMessageBox::warning(__tr2qs("The file %s contains an invalid registered users database version."),&buffer);
+ f.close();
+ return;
+ }
+
+
+
+ for(idx = 0;idx < hf.nentries;idx++)
+ {
+ QString szName;
+ if(!f.load(szName))goto read_error;
+ KviRegisteredUser * u = g_pLocalRegisteredUserDataBase->getUser(szName);
+ unsigned int count = 0;
+ if(!f.load(count))goto read_error;
+ for(unsigned int up = 0;up < count;up++)
+ {
+ QString szKey,szValue;
+ if(!f.load(szKey))goto read_error;
+ if(!f.load(szValue))goto read_error;
+ u->setProperty(szKey,szValue);
+ }
+ if(!f.load(count))goto read_error;
+ for(unsigned int um = 0;um < count;um++)
+ {
+ QString szMask;
+ if(!f.load(szMask))goto read_error;
+ if(!szMask.isEmpty())
+ {
+ KviIrcMask * m = new KviIrcMask(szMask);
+ g_pLocalRegisteredUserDataBase->addMask(u,m);
+ }
+ }
+ if(!f.load(count))goto read_error;
+ if(count)
+ {
+ // there is an avatar
+ QImage img;
+#ifdef COMPILE_USE_QT4
+ QImageReader io;
+ io.setDevice(&f);
+ io.setFormat("PNG");
+ img=io.read();
+// if(io.read())goto read_error;
+
+#else
+ QImageIO io;
+ io.setImage(img);
+ io.setIODevice(&f);
+ io.setFormat("PNG");
+
+ if(!io.read())goto read_error;
+
+ img = io.image();
+#endif
+ if(img.isNull())debug("Ops.. readed a null image ?");
+
+ KviStr fName = u->name();
+ kvi_encodeFileName(fName);
+
+ KviStr fPath;
+ int rnm = 0 ;
+ do
+ {
+ g_pApp->getLocalKvircDirectory(fPath,KviApp::Avatars,fName.ptr());
+ fPath.append(KviStr::Format,"%d.png",rnm);
+ rnm++;
+ } while(KviFileUtils::fileExists(fPath.ptr()));
+
+ if(!img.save(fPath.ptr(),"PNG"))
+ {
+ debug("Can't save image %s",fPath.ptr());
+ } else {
+ u->setProperty("avatar",fPath.ptr());
+ }
+ }
+ }
+
+ goto succesfull_import;
+
+
+read_error:
+ KviMessageBox::warning(__tr("Can't import the registered users database: Read error."));
+ f.close();
+ return;
+
+succesfull_import:
+
+ f.close();
+ fillList();
+}
+#if defined(COMPILE_USE_QT4) && defined(COMPILE_ON_WINDOWS)
+#include "dialog.moc"
+#endif
diff --git a/src/modules/reguser/dialog.h b/src/modules/reguser/dialog.h
new file mode 100644
index 00000000..c292adc4
--- /dev/null
+++ b/src/modules/reguser/dialog.h
@@ -0,0 +1,148 @@
+#ifndef _DIALOG_H_
+#define _DIALOG_H_
+//=============================================================================
+//
+// File : edituser.h
+// Creation date : Sun Dec 24 2000 15:16:17 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+#include "kvi_string.h"
+#include "kvi_regusersdb.h"
+#include "kvi_selectors.h"
+
+#include <qwidget.h>
+#include <qlineedit.h>
+#include <qpushbutton.h>
+#include "kvi_tal_listview.h"
+#include "kvi_tal_listbox.h"
+#include "kvi_pointerhashtable.h"
+#include "kvi_tal_popupmenu.h"
+#ifdef COMPILE_USE_QT4
+ #include <q3intdict.h>
+ #include <q3simplerichtext.h>
+ #define QSimpleRichText Q3SimpleRichText
+#else
+ #include <qsimplerichtext.h>
+ #include <qintdict.h>
+
+
+#endif
+
+class KviRegisteredUsersDialogItemBase : public KviTalListViewItem
+{
+public:
+ enum Types { User,Group };
+protected:
+ KviRegisteredUsersDialogItemBase(Types type,KviTalListView * par)
+ :KviTalListViewItem(par),m_iType(type)
+ {
+ };
+ KviRegisteredUsersDialogItemBase(Types type,KviTalListViewItem * par)
+ :KviTalListViewItem(par),m_iType(type)
+ {
+ };
+ ~KviRegisteredUsersDialogItemBase()
+ {
+ };
+
+private:
+ KviRegisteredUsersDialogItemBase::Types m_iType;
+public:
+ KviRegisteredUsersDialogItemBase::Types type() { return m_iType; };
+};
+
+class KviRegisteredUsersGroupItem : public KviRegisteredUsersDialogItemBase
+{
+protected:
+ KviRegisteredUserGroup * m_pGroup;
+public:
+ KviRegisteredUsersGroupItem(KviTalListView * par,KviRegisteredUserGroup * g)
+ :KviRegisteredUsersDialogItemBase(Group,par), m_pGroup(g)
+ {
+ setText(0,m_pGroup->name());
+ }
+ ~KviRegisteredUsersGroupItem()
+ {
+ }
+ KviRegisteredUserGroup * group() { return m_pGroup; };
+};
+
+class KviRegisteredUsersDialogItem : public KviRegisteredUsersDialogItemBase
+{
+protected:
+ KviRegisteredUser * m_pUser;
+ QSimpleRichText * m_pText;
+public:
+ KviRegisteredUsersDialogItem(KviTalListViewItem * par,KviRegisteredUser * u);
+ ~KviRegisteredUsersDialogItem();
+public:
+ KviRegisteredUser * user(){ return m_pUser; };
+ void setUser(KviRegisteredUser * u){ m_pUser = u; };
+ virtual void paintCell(QPainter * p,const QColorGroup &cg,int column,int width,int align);
+ virtual void setup();
+ virtual QString key(int,bool) const;
+};
+
+class KviRegisteredUsersDialog : public QWidget
+{
+ Q_OBJECT
+public:
+ KviRegisteredUsersDialog(QWidget * par = 0);
+ ~KviRegisteredUsersDialog();
+public:
+ KviTalListView * m_pListView;
+ QPushButton * m_pAddButton;
+ QPushButton * m_pWizardAddButton;
+ QPushButton * m_pRemoveButton;
+ QPushButton * m_pEditButton;
+ QPushButton * m_pImportButton;
+ QPushButton * m_pExportButton;
+ QPushButton * m_pAddGroupButton;
+#ifdef COMPILE_USE_QT4
+ Q3IntDict<KviRegisteredUserGroup> m_TmpDict;
+#else
+ QIntDict<KviRegisteredUserGroup> m_TmpDict;
+#endif
+
+ protected slots:
+ void itemPressed(KviTalListViewItem *it,const QPoint &pnt,int c);
+ void itemDoubleClicked(KviTalListViewItem *it);
+protected:
+ void fillList();
+protected:
+ virtual void closeEvent(QCloseEvent *);
+ void editItem(KviRegisteredUsersDialogItem * i);
+ void editGroup(KviRegisteredUserGroup* group);
+protected slots:
+ void cancelClicked();
+ void okClicked();
+ void addClicked();
+ void removeClicked();
+ void editClicked();
+ void selectionChanged();
+ void importClicked();
+ void exportClicked();
+ void addWizardClicked();
+ void addGroupClicked();
+ void listViewRightButtonClicked ( KviTalListViewItem *, const QPoint &, int );
+ void moveToGroupMenuClicked(int);
+};
+
+#endif
diff --git a/src/modules/reguser/edituser.cpp b/src/modules/reguser/edituser.cpp
new file mode 100644
index 00000000..f0d6d6b9
--- /dev/null
+++ b/src/modules/reguser/edituser.cpp
@@ -0,0 +1,781 @@
+//=============================================================================
+//
+// File : edituser.cpp
+// Creation date : Tue Dec 26 2000 12:24:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+#define _WANT_OPTION_FLAGS_
+#define _EDITUSER_CPP_
+
+#include "edituser.h"
+#include "kvi_regusersdb.h"
+
+#include "kvi_locale.h"
+#include "kvi_ircmask.h"
+#include "kvi_debug.h"
+#include "kvi_iconmanager.h"
+#include "kvi_app.h"
+#include "kvi_options.h"
+#include "kvi_file.h"
+#include "kvi_filedialog.h"
+#include "kvi_msgbox.h"
+#include "kvi_fileutils.h"
+#include "kvi_settings.h"
+#include "kvi_stringconversion.h"
+#include "kvi_options.h"
+
+#include <qlayout.h>
+#include <qlabel.h>
+#include <qgroupbox.h>
+#ifdef COMPILE_USE_QT4
+#include <qevent.h>
+#include <q3header.h>
+#include <q3vbox.h>
+#else
+#include <qheader.h>
+#endif
+#include "kvi_pointerhashtable.h"
+#include <qimage.h>
+#include <qstring.h>
+#include <qcombobox.h>
+
+
+#include <qstyle.h>
+#include <qpainter.h>
+#include "kvi_tal_hbox.h"
+#include "kvi_tal_vbox.h"
+#include <qinputdialog.h>
+
+#include "wizard.h"
+#include "dialog.h"
+
+
+#ifdef COMPILE_INFO_TIPS
+ #include <qtooltip.h>
+#endif // COMPILE_INFO_TIPS
+
+// kvi_app.cpp
+extern KviRegisteredUsersDialog * g_pRegisteredUsersDialog;
+
+KviRegisteredUserDataBase * g_pLocalRegisteredUserDataBase; // local copy!
+
+
+
+KviReguserPropertiesDialog::KviReguserPropertiesDialog(QWidget * p,KviPointerHashTable<QString,QString> * dict)
+: QDialog(p,"property_editor",true)
+{
+ m_pPropertyDict = dict;
+
+ setCaption(__tr2qs("Property Editor"));
+ setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_LINUX)));
+
+ QGridLayout * g = new QGridLayout(this,3,3,4,4);
+
+#ifdef COMPILE_USE_QT4
+ m_pTable = new Q3Table(this);
+#else
+ m_pTable = new QTable(this);
+#endif
+ g->addMultiCellWidget(m_pTable,0,1,0,1);
+
+ m_pTable->setNumCols(2);
+ m_pTable->setSelectionMode(Kvi_Tal_Table::NoSelection);
+
+ m_pTable->horizontalHeader()->setLabel(0,__tr2qs("Property"));
+ m_pTable->horizontalHeader()->setLabel(1,__tr2qs("Value"));
+
+ m_pTable->setMinimumSize(250,250);
+ //connect(m_pTable,SIGNAL(valueChanged(int,int)),this,SLOT(propertyValueChanged(int,int)));
+
+ KviTalVBox * vb = new KviTalVBox(this);
+ vb->setSpacing(4);
+ g->addWidget(vb,0,2);
+
+ m_pAddButton = new QPushButton(__tr2qs("&New"),vb);
+ connect(m_pAddButton,SIGNAL(clicked()),this,SLOT(addClicked()));
+ m_pAddButton->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_NEWITEM)));
+
+ m_pDelButton = new QPushButton(__tr2qs("&Remove"),vb);
+ connect(m_pDelButton,SIGNAL(clicked()),this,SLOT(delClicked()));
+ m_pDelButton->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DELETEITEM)));
+
+ KviTalHBox * b = new KviTalHBox(this);
+ b->setSpacing(4);
+ g->addMultiCellWidget(b,2,2,1,2);
+
+ QPushButton * pb = new QPushButton(__tr2qs("&OK"),b);
+ connect(pb,SIGNAL(clicked()),this,SLOT(okClicked()));
+ pb->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ACCEPT)));
+
+
+ pb = new QPushButton(__tr2qs("Cancel"),b);
+ connect(pb,SIGNAL(clicked()),this,SLOT(reject()));
+ pb->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DISCARD)));
+
+ g->setRowStretch(1,1);
+ g->setColStretch(0,1);
+
+ fillData();
+}
+
+KviReguserPropertiesDialog::~KviReguserPropertiesDialog()
+{
+}
+
+void KviReguserPropertiesDialog::closeEvent(QCloseEvent *e)
+{
+ e->accept();
+ //delete this;
+}
+
+void KviReguserPropertiesDialog::fillData()
+{
+ m_pTable->setNumRows(m_pPropertyDict->count());
+ KviPointerHashTableIterator<QString,QString> it(*m_pPropertyDict);
+ int row = 0;
+ while(it.current())
+ {
+ m_pTable->setItem(row,0,new Kvi_Tal_TableItem(m_pTable,Kvi_Tal_TableItem::OnTyping,it.currentKey()));
+ m_pTable->setItem(row,1,new Kvi_Tal_TableItem(m_pTable,Kvi_Tal_TableItem::OnTyping,*(it.current())));
+ ++row;
+ ++it;
+ }
+ if(m_pTable->numRows() == 0)m_pDelButton->setEnabled(false);
+}
+
+void KviReguserPropertiesDialog::okClicked()
+{
+ m_pPropertyDict->clear();
+
+ int n = m_pTable->numRows();
+ for(int i=0;i<n;i++)
+ {
+ QString szName = m_pTable->text(i,0);
+ QString szValue = m_pTable->text(i,1);
+ if((!szName.isEmpty()) && (!szValue.isEmpty()))
+ {
+ m_pPropertyDict->replace(szName,new QString(szValue));
+ }
+ }
+
+ accept();
+}
+
+
+void KviReguserPropertiesDialog::addClicked()
+{
+ m_pTable->setNumRows(m_pTable->numRows() + 1);
+ m_pTable->setItem(m_pTable->numRows() - 1,0,new Kvi_Tal_TableItem(m_pTable,Kvi_Tal_TableItem::OnTyping,""));
+ m_pTable->setItem(m_pTable->numRows() - 1,1,new Kvi_Tal_TableItem(m_pTable,Kvi_Tal_TableItem::OnTyping,""));
+ m_pDelButton->setEnabled(true);
+}
+
+void KviReguserPropertiesDialog::delClicked()
+{
+ int i = m_pTable->currentRow();
+
+ if((i > -1) && (i < m_pTable->numRows()))
+ {
+ // remove row i
+ m_pTable->clearCell(i,0);
+ m_pTable->clearCell(i,1);
+
+ for(;i < (m_pTable->numRows() - 1);i++)
+ {
+ m_pTable->swapRows(i,i+1);
+ }
+ m_pTable->setNumRows(m_pTable->numRows() - 1);
+ if(m_pTable->numRows() == 0)m_pDelButton->setEnabled(false);
+ }
+}
+
+
+KviReguserMaskDialog::KviReguserMaskDialog(QWidget * p,KviIrcMask * m)
+: QDialog(p,"reguser_mask_editor",true)
+{
+ m_pMask = m;
+
+ setCaption(__tr2qs("Mask Editor"));
+
+ QGridLayout * g = new QGridLayout(this,3,2,4,4);
+
+ QLabel * l = new QLabel(__tr2qs("Insert a mask for this user.<br>It can contain the wildcard characters '*' and '?'."),this);
+ //l->setAlignment(Qt::AlignCenter);
+ g->addMultiCellWidget(l,0,0,0,1);
+
+ KviTalHBox * b = new KviTalHBox(this);
+ g->addMultiCellWidget(b,1,1,0,1);
+
+ m_pNickEdit = new QLineEdit(b);
+ //m_pNickEdit->setMinimumWidth(120);
+ m_pNickEdit->setAlignment(Qt::AlignRight);
+#ifdef COMPILE_INFO_TIPS
+ QToolTip::add(m_pNickEdit,__tr2qs("<center>This the <b>nickname</b> that will match this user, default value is the registered name.</center>"));
+#endif
+
+ l = new QLabel("<center><b>!</b></center>",b);
+ l->setAlignment(Qt::AlignCenter);
+ //l->setMinimumWidth(40);
+
+ m_pUserEdit = new QLineEdit(b);
+ //m_pUserEdit->setMinimumWidth(120);
+ m_pUserEdit->setAlignment(Qt::AlignCenter);
+#ifdef COMPILE_INFO_TIPS
+ QToolTip::add(m_pUserEdit,__tr2qs("<center>This the <b>username</b> that will match this user. <b>*</b> will match any username.</center>"));
+#endif
+
+ l = new QLabel("<center><b>@</b></center>",b);
+ l->setAlignment(Qt::AlignCenter);
+ //l->setMinimumWidth(40);
+
+ m_pHostEdit = new QLineEdit(b);
+ //m_pHostEdit->setMinimumWidth(120);
+ m_pHostEdit->setAlignment(Qt::AlignLeft);
+#ifdef COMPILE_INFO_TIPS
+ QToolTip::add(m_pHostEdit,__tr2qs("<center>This the <b>hostname</b> that will match this user. <b>*</b> will match any hostname.</center>"));
+#endif
+
+ // just a spacer
+// l = new QLabel("<nobr>&nbsp;<nobr>",this);
+// g->addMultiCellWidget(l,2,2,0,1);
+
+// QFrame * f = new QFrame(this);
+// f->setFrameStyle(QFrame::HLine | QFrame::Sunken);
+// g->addMultiCellWidget(f,3,3,0,1);
+
+ b = new KviTalHBox(this);
+ b->setSpacing(4);
+ g->addWidget(b,2,1);
+
+ QPushButton * pb = new QPushButton(__tr2qs("&OK"),b);
+ connect(pb,SIGNAL(clicked()),this,SLOT(okClicked()));
+ //pb->setMinimumWidth(120);
+
+ pb = new QPushButton(__tr2qs("Cancel"),b);
+ connect(pb,SIGNAL(clicked()),this,SLOT(reject()));
+ //pb->setMinimumWidth(120);
+
+
+
+ g->setColStretch(0,1);
+ g->setRowStretch(0,1);
+
+ m_pNickEdit->setText(m->nick());
+ m_pUserEdit->setText(m->user());
+ m_pHostEdit->setText(m->host());
+}
+
+KviReguserMaskDialog::~KviReguserMaskDialog()
+{
+}
+
+void KviReguserMaskDialog::closeEvent(QCloseEvent *e)
+{
+ e->accept();
+ //delete this;
+}
+
+void KviReguserMaskDialog::okClicked()
+{
+ KviStr szTmp = m_pNickEdit->text();
+ if(szTmp.isEmpty())szTmp = "*";
+ m_pMask->setNick(szTmp.ptr());
+
+ szTmp = m_pUserEdit->text();
+ if(szTmp.isEmpty())szTmp = "*";
+ m_pMask->setUsername(szTmp.ptr());
+
+ szTmp = m_pHostEdit->text();
+ if(szTmp.isEmpty())szTmp = "*";
+ m_pMask->setHost(szTmp.ptr());
+
+ accept();
+}
+
+
+
+
+KviRegisteredUserEntryDialog::KviRegisteredUserEntryDialog(QWidget *p,KviRegisteredUser * r,bool bModal)
+: KviTalTabDialog(p,"reguser_entry_editor",bModal)
+{
+ m_pUser = r;
+ m_pCustomColor = new QColor();
+
+ if(r)
+ {
+ QString col=r->getProperty("customColor");
+ KviStringConversion::fromString(col,(*m_pCustomColor));
+ }
+
+ m_pPropertyDict = new KviPointerHashTable<QString,QString>(17,false);
+ m_pPropertyDict->setAutoDelete(true);
+
+ //setMinimumSize(400,450);
+
+ setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_LINUX)));
+ setCaption(__tr2qs("Registered User Entry"));
+
+ QWidget * p1 = new QWidget(this);
+
+ QGridLayout * g = new QGridLayout(p1,6,2,4,4);
+
+ QLabel * l = new QLabel(__tr2qs("Name:"),p1);
+ g->addWidget(l,0,0);
+
+ m_pNameEdit = new QLineEdit(p1);
+ g->addWidget(m_pNameEdit,0,1);
+
+ l = new QLabel(__tr2qs("Comment:"),p1);
+ g->addWidget(l,1,0);
+
+ m_pCommentEdit = new QLineEdit(p1);
+ g->addWidget(m_pCommentEdit,1,1);
+
+ QFrame * f = new QFrame(p1);
+ g->addMultiCellWidget(f,2,2,0,1);
+ f->setFrameStyle(QFrame::HLine | QFrame::Sunken);
+
+ l = new QLabel(__tr2qs("Masks:"),p1);
+ g->addMultiCellWidget(l,3,3,0,1);
+
+ m_pMaskListBox = new KviTalListBox(p1);
+ connect(m_pMaskListBox,SIGNAL(currentChanged(KviTalListBoxItem *)),this,SLOT(maskCurrentChanged(KviTalListBoxItem *)));
+ m_pMaskListBox->setMinimumSize(300,200);
+
+ g->addMultiCellWidget(m_pMaskListBox,4,4,0,1);
+
+ KviTalHBox * b = new KviTalHBox(p1);
+ g->addMultiCellWidget(b,5,5,0,1);
+ b->setSpacing(4);
+
+ m_pAddMaskButton = new QPushButton(__tr2qs("&Add..."),b);
+ connect(m_pAddMaskButton,SIGNAL(clicked()),this,SLOT(addMaskClicked()));
+ m_pAddMaskButton->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_NEWITEM)));
+
+ m_pDelMaskButton = new QPushButton(__tr2qs("Re&move"),b);
+ m_pDelMaskButton->setEnabled(false);
+ connect(m_pDelMaskButton,SIGNAL(clicked()),this,SLOT(delMaskClicked()));
+ m_pDelMaskButton->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DELETEITEM)));
+
+ m_pEditMaskButton = new QPushButton(__tr2qs("&Edit"),b);
+ m_pEditMaskButton->setEnabled(false);
+ connect(m_pEditMaskButton,SIGNAL(clicked()),this,SLOT(editMaskClicked()));
+ m_pEditMaskButton->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_EDITITEM)));
+
+ g->setRowStretch(4,1);
+ g->setColStretch(1,1);
+
+ addTab(p1,__tr2qs("Identity"));
+
+
+
+ QWidget * p2 = new QWidget(this);
+
+ g = new QGridLayout(p2,6,3,5,2);
+
+ m_pNotifyCheck = new KviStyledCheckBox(__tr2qs("Notify when user is online"),p2);
+ g->addMultiCellWidget(m_pNotifyCheck,0,0,0,2);
+
+ l = new QLabel(__tr2qs("Notify nicknames:"),p2);
+ l->setEnabled(m_pNotifyCheck->isChecked());
+ g->addWidget(l,1,0);
+ connect(m_pNotifyCheck,SIGNAL(toggled(bool)),l,SLOT(setEnabled(bool)));
+#ifdef COMPILE_INFO_TIPS
+ QToolTip::add(m_pNotifyCheck,__tr2qs("<center>You can enter a space separated list of nicknames.</center>"));
+#endif
+
+
+ m_pNotifyNick = new QLineEdit(p2);
+ m_pNotifyNick->setEnabled(false);
+ g->addMultiCellWidget(m_pNotifyNick,1,1,1,2);
+ connect(m_pNotifyCheck,SIGNAL(toggled(bool)),m_pNotifyNick,SLOT(setEnabled(bool)));
+
+
+ f = new QFrame(p2);
+ f->setFrameStyle(QFrame::HLine | QFrame::Sunken);
+ g->addMultiCellWidget(f,2,2,0,2);
+
+ m_pAvatar = 0;
+ if(r)
+ {
+ const char * av = r->getProperty("avatar");
+ if(av)
+ {
+ m_pAvatar = new KviPixmap(av);
+ }
+ }
+ if(!m_pAvatar)m_pAvatar = new KviPixmap();
+
+ m_pAvatarSelector = new KviPixmapSelector(p2,__tr2qs("Avatar"),m_pAvatar,true);
+ g->addMultiCellWidget(m_pAvatarSelector,3,3,0,2);
+
+ f = new QFrame(p2);
+ f->setFrameStyle(QFrame::HLine | QFrame::Sunken);
+ g->addMultiCellWidget(f,4,4,0,2);
+
+ m_pCustomColorCheck = new KviStyledCheckBox(__tr2qs("Use custom color in userlist"),p2);
+ if(r)
+ m_pCustomColorCheck->setChecked(r->getBoolProperty("useCustomColor"));
+ g->addMultiCellWidget(m_pCustomColorCheck,5,5,0,1);
+
+ m_pCustomColorSelector = new KviColorSelector(p2,QString::null,m_pCustomColor,1);
+ g->addWidget(m_pCustomColorSelector,5,2);
+
+ QPushButton * pb = new QPushButton(__tr2qs("All Properties..."),p2);
+ connect(pb,SIGNAL(clicked()),this,SLOT(editAllPropertiesClicked()));
+ g->addWidget(pb,6,2);
+
+ g->setColStretch(1,1);
+ g->setRowStretch(3,1);
+
+ addTab(p2,__tr2qs("Properties"));
+
+ // Ignore TAB
+#ifdef COMPILE_USE_QT4
+ Q3VBox * vb = new Q3VBox(this);
+#else
+ QVBox * vb = new QVBox(this);
+#endif
+ vb->setMargin(10);
+
+ m_pIgnoreEnabled = new KviStyledCheckBox(__tr2qs("Enable ignore for this user"),vb);
+
+ QGroupBox * gb = new QGroupBox(__tr2qs("Ignore features"),vb);
+ connect(m_pIgnoreEnabled,SIGNAL(toggled(bool)),gb,SLOT(setEnabled(bool)));
+
+ QVBoxLayout * layout = new QVBoxLayout(gb,20,3);
+
+ m_pIgnoreQuery = new KviStyledCheckBox(__tr2qs("Ignore query-messages"),gb);
+ layout->addWidget(m_pIgnoreQuery);
+
+ m_pIgnoreChannel = new KviStyledCheckBox(__tr2qs("Ignore channel-messages"),gb);
+ layout->addWidget(m_pIgnoreChannel);
+
+ m_pIgnoreNotice = new KviStyledCheckBox(__tr2qs("Ignore notice-messages"),gb);
+ layout->addWidget(m_pIgnoreNotice);
+
+ m_pIgnoreCtcp = new KviStyledCheckBox(__tr2qs("Ignore ctcp-messages"),gb);
+ layout->addWidget(m_pIgnoreCtcp);
+
+ m_pIgnoreInvite = new KviStyledCheckBox(__tr2qs("Ignore invites"),gb);
+ layout->addWidget(m_pIgnoreInvite);
+
+ m_pIgnoreDcc = new KviStyledCheckBox(__tr2qs("Ignore DCCs"),gb);
+ layout->addWidget(m_pIgnoreDcc);
+
+ QWidget *w = new QWidget(vb);
+ w->setSizePolicy(QSizePolicy::Ignored,QSizePolicy::Ignored);
+
+ addTab(vb,__tr2qs("Ignore"));
+
+ setCancelButton(__tr2qs("Cancel"));
+ setOkButton(__tr2qs("&OK"));
+ connect(this,SIGNAL(applyButtonPressed()),this,SLOT(okClicked()));
+ connect(this,SIGNAL(cancelButtonPressed()),this,SLOT(reject()));
+
+ if(r)
+ {
+ m_pNameEdit->setText(r->name());
+ m_pCommentEdit->setText(r->getProperty("comment"));
+ for(KviIrcMask * m = r->maskList()->first();m;m = r->maskList()->next())
+ {
+ QString mk = m->nick();
+ mk += QChar('!');
+ mk += m->user();
+ mk += QChar('@');
+ mk += m->host();
+ m_pMaskListBox->insertItem(mk);
+ }
+
+ QString szNotifyNicks = r->getProperty("notify");
+ if(!szNotifyNicks.isEmpty())
+ {
+ m_pNotifyCheck->setChecked(true);
+ m_pNotifyNick->setText(szNotifyNicks);
+ m_pNotifyNick->setEnabled(true);
+ }
+
+ if(r->propertyDict())
+ {
+ KviPointerHashTableIterator<QString,QString> it(*(r->propertyDict()));
+ while(QString *s = it.current())
+ {
+ m_pPropertyDict->insert(it.currentKey(),new QString(*s));
+ ++it;
+ }
+ }
+
+ m_pIgnoreEnabled->setChecked(r->ignoreEnagled());
+
+ gb->setEnabled(r->ignoreEnagled());
+
+ m_pIgnoreQuery->setChecked(r->ignoreFlags() & KviRegisteredUser::Query);
+ m_pIgnoreChannel->setChecked(r->ignoreFlags() & KviRegisteredUser::Channel);
+ m_pIgnoreNotice->setChecked(r->ignoreFlags() & KviRegisteredUser::Notice);
+ m_pIgnoreCtcp->setChecked(r->ignoreFlags() & KviRegisteredUser::Ctcp);
+ m_pIgnoreInvite->setChecked(r->ignoreFlags() & KviRegisteredUser::Invite);
+ m_pIgnoreDcc->setChecked(r->ignoreFlags() & KviRegisteredUser::Dcc);
+ } else {
+ // default values
+ if(!m_pIgnoreEnabled->isChecked())
+ {
+ gb->setEnabled(false);
+ }
+ }
+}
+
+void KviRegisteredUserEntryDialog::closeEvent(QCloseEvent *e)
+{
+ e->accept();
+ okClicked();
+ //delete this;
+}
+
+KviRegisteredUserEntryDialog::~KviRegisteredUserEntryDialog()
+{
+ delete m_pAvatar;
+ delete m_pPropertyDict;
+ delete m_pCustomColor;
+}
+
+void KviRegisteredUserEntryDialog::maskCurrentChanged(KviTalListBoxItem *it)
+{
+ m_pDelMaskButton->setEnabled(it);
+ m_pEditMaskButton->setEnabled(it);
+}
+
+void KviRegisteredUserEntryDialog::okClicked()
+{
+ QString szGroup;
+ if(m_pUser)
+ {
+ szGroup=m_pUser->group();
+ g_pLocalRegisteredUserDataBase->removeUser(m_pUser->name());
+ }
+
+ QString name = m_pNameEdit->text();
+
+ if(name.isEmpty())name = "user";
+
+ KviRegisteredUser * u;
+
+ QString szNameOk = name;
+
+ int idx = 1;
+
+ do {
+ u = g_pLocalRegisteredUserDataBase->findUserByName(szNameOk);
+ if(u)
+ {
+ KviQString::sprintf(szNameOk,"%Q%d",&name,idx);
+ idx++;
+ }
+ } while(u);
+
+
+ u = g_pLocalRegisteredUserDataBase->addUser(szNameOk);
+ u->setGroup(szGroup);
+
+ if(!u)
+ {
+ // ops... no way
+ // FIXME: spit an error message ?
+ debug("Ops.. something wrong with the regusers db");
+ accept();
+ return;
+ }
+
+ int cnt = m_pMaskListBox->count();
+ idx = 0;
+ while(cnt > 0)
+ {
+ QString mask = m_pMaskListBox->text(idx);
+ KviIrcMask * mk = new KviIrcMask(mask);
+ g_pLocalRegisteredUserDataBase->removeMask(*mk);
+ g_pLocalRegisteredUserDataBase->addMask(u,mk);
+ cnt--;
+ idx++;
+ }
+ u->setProperty("comment",m_pCommentEdit->text());
+
+ m_pAvatarSelector->commit();
+
+ if(!m_pAvatar->isNull())
+ {
+ QString szPath = m_pAvatar->path();
+ u->setProperty("avatar",szPath);
+ }
+
+ if(m_pNotifyCheck->isChecked())
+ {
+ QString szNicks = m_pNotifyNick->text();
+
+ if(!szNicks.isEmpty())
+ {
+ u->setProperty("notify",szNicks);
+ }
+ }
+
+ m_pPropertyDict->remove("notify");
+ m_pPropertyDict->remove("avatar");
+
+ KviPointerHashTableIterator<QString,QString> it(*m_pPropertyDict);
+ while(QString *s = it.current())
+ {
+ u->setProperty(it.currentKey(),*s);
+ ++it;
+ }
+
+ u->setProperty("useCustomColor",m_pCustomColorCheck->isChecked());
+
+ QString col;
+ KviStringConversion::toString(m_pCustomColorSelector->getColor(),col);
+ u->setProperty("customColor",col);
+
+
+ int iIgnoreFlags=0;
+ u->setIgnoreEnabled(m_pIgnoreEnabled->isChecked());
+ if(m_pIgnoreQuery->isChecked())
+ iIgnoreFlags |= KviRegisteredUser::Query;
+ if(m_pIgnoreChannel->isChecked())
+ iIgnoreFlags |= KviRegisteredUser::Channel;
+ if(m_pIgnoreNotice->isChecked())
+ iIgnoreFlags |= KviRegisteredUser::Notice;
+ if(m_pIgnoreCtcp->isChecked())
+ iIgnoreFlags |= KviRegisteredUser::Ctcp;
+ if(m_pIgnoreInvite->isChecked())
+ iIgnoreFlags |= KviRegisteredUser::Invite;
+ if(m_pIgnoreDcc->isChecked())
+ iIgnoreFlags |= KviRegisteredUser::Dcc;
+
+ u->setIgnoreFlags(iIgnoreFlags);
+ accept();
+ g_pApp->optionResetUpdate(KviOption_resetUpdateGui);
+}
+
+
+void KviRegisteredUserEntryDialog::addMaskClicked()
+{
+ KviIrcMask mk;
+ KviReguserMaskDialog * dlg = new KviReguserMaskDialog(this,&mk);
+ if(dlg->exec() == QDialog::Accepted)
+ {
+ QString m = mk.nick();
+ m += QChar('!');
+ m += mk.user();
+ m += QChar('@');
+ m += mk.host();
+ m_pMaskListBox->insertItem(m);
+ }
+ delete dlg;
+}
+
+void KviRegisteredUserEntryDialog::delMaskClicked()
+{
+ int idx = m_pMaskListBox->currentItem();
+ if(idx == -1)return;
+ m_pMaskListBox->removeItem(idx);
+}
+
+void KviRegisteredUserEntryDialog::editMaskClicked()
+{
+ int idx = m_pMaskListBox->currentItem();
+ if(idx == -1)return;
+ KviStr szM = m_pMaskListBox->text(idx);
+ if(szM.isEmpty())return;
+
+ KviIrcMask mk(szM.ptr());
+ KviReguserMaskDialog * dlg = new KviReguserMaskDialog(this,&mk);
+ if(dlg->exec() == QDialog::Accepted)
+ {
+ QString m = mk.nick();
+ m += QChar('!');
+ m += mk.user();
+ m += QChar('@');
+ m += mk.host();
+ m_pMaskListBox->changeItem(m,idx);
+ }
+ delete dlg;
+}
+
+void KviRegisteredUserEntryDialog::editAllPropertiesClicked()
+{
+ m_pAvatarSelector->commit();
+
+ if(m_pAvatar->isNull())
+ {
+ m_pPropertyDict->remove("avatar");
+ } else {
+ KviStr szPath = m_pAvatar->path();
+ if(szPath.isEmpty())m_pPropertyDict->remove("avatar");
+ else m_pPropertyDict->replace("avatar",new QString(szPath));
+ }
+
+ if(m_pNotifyCheck->isChecked())
+ {
+ QString szNicks = m_pNotifyNick->text();
+
+ if(!szNicks.isEmpty())
+ {
+ m_pPropertyDict->replace("notify",new QString(szNicks));
+ } else {
+ m_pPropertyDict->remove("notify");
+ }
+ } else {
+ m_pPropertyDict->remove("notify");
+ }
+
+
+ KviReguserPropertiesDialog * dlg = new KviReguserPropertiesDialog(this,m_pPropertyDict);
+ if(dlg->exec() != QDialog::Accepted)
+ {
+ delete dlg;
+ return;
+ }
+ delete dlg;
+
+ QString * notify = m_pPropertyDict->find("notify");
+ bool bGotIt = false;
+ if(notify)
+ {
+ if(!notify->isEmpty())
+ {
+ bGotIt = true;
+ m_pNotifyNick->setText(*notify);
+ }
+ }
+ m_pNotifyCheck->setChecked(bGotIt);
+ m_pNotifyNick->setEnabled(bGotIt);
+ if(!bGotIt)m_pNotifyNick->setText("");
+
+ QString * avatar = m_pPropertyDict->find("avatar");
+ bGotIt = false;
+ if(avatar)
+ {
+ if(!avatar->isEmpty())
+ m_pAvatarSelector->setImagePath(*avatar);
+ }
+
+}
+
+
+
+
+#include "edituser.moc"
diff --git a/src/modules/reguser/edituser.h b/src/modules/reguser/edituser.h
new file mode 100644
index 00000000..fecbbf09
--- /dev/null
+++ b/src/modules/reguser/edituser.h
@@ -0,0 +1,152 @@
+#ifndef _EDITUSER_H_
+#define _EDITUSER_H_
+//=============================================================================
+//
+// File : edituser.h
+// Creation date : Sun Dec 24 2000 15:16:17 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_string.h"
+#include "kvi_regusersdb.h"
+#include "kvi_selectors.h"
+
+#include <qwidget.h>
+#include <qlineedit.h>
+#include <qpushbutton.h>
+#include "kvi_tal_listview.h"
+#include "kvi_tal_listbox.h"
+#include "kvi_pointerhashtable.h"
+#include <kvi_tal_tabdialog.h>
+#ifdef COMPILE_USE_QT4
+#include <q3table.h>
+#define Kvi_Tal_Table Q3Table
+#define Kvi_Tal_TableItem Q3TableItem
+
+#else
+#include <qtable.h>
+#define Kvi_Tal_Table QTable
+#define Kvi_Tal_TableItem QTableItem
+
+#endif
+#include "kvi_tal_popupmenu.h"
+
+#ifndef _EDITUSER_CPP_
+ extern KviRegisteredUserDataBase * g_pLocalRegisteredUserDataBase;
+#endif
+
+class KviRegisteredUser;
+
+class KviReguserPropertiesDialog : public QDialog
+{
+ Q_OBJECT
+public:
+ KviReguserPropertiesDialog(QWidget *p,KviPointerHashTable<QString,QString> * dict);
+ ~KviReguserPropertiesDialog();
+protected:
+#ifdef COMPILE_USE_QT4
+ Q3Table *m_pTable;
+#else
+ QTable * m_pTable;
+#endif
+ KviPointerHashTable<QString,QString> * m_pPropertyDict;
+ QPushButton * m_pDelButton;
+ QPushButton * m_pAddButton;
+protected:
+ void fillData();
+ virtual void closeEvent(QCloseEvent *);
+protected slots:
+ void okClicked();
+ void addClicked();
+ void delClicked();
+};
+
+
+class KviReguserMaskDialog : public QDialog
+{
+ Q_OBJECT
+public:
+ KviReguserMaskDialog(QWidget * p,KviIrcMask * m);
+ ~KviReguserMaskDialog();
+protected:
+ KviIrcMask * m_pMask;
+
+ QLineEdit * m_pNickEdit;
+ QLineEdit * m_pUserEdit;
+ QLineEdit * m_pHostEdit;
+
+ virtual void closeEvent(QCloseEvent *);
+protected slots:
+ void okClicked();
+};
+
+
+class KviRegisteredUserEntryDialog : public KviTalTabDialog
+{
+ Q_OBJECT
+public:
+ KviRegisteredUserEntryDialog(QWidget * p,KviRegisteredUser * r,bool bModal = true);
+ virtual ~KviRegisteredUserEntryDialog();
+protected:
+ KviRegisteredUser * m_pUser;
+
+ QLineEdit * m_pNameEdit;
+ QLineEdit * m_pCommentEdit;
+
+ KviTalListBox * m_pMaskListBox;
+
+ QPushButton * m_pDelMaskButton;
+ QPushButton * m_pEditMaskButton;
+ QPushButton * m_pAddMaskButton;
+
+ QCheckBox * m_pNotifyCheck;
+ QLineEdit * m_pNotifyNick;
+
+ KviPixmap * m_pAvatar;
+ KviPixmapSelector * m_pAvatarSelector;
+
+ KviPointerHashTable<QString,QString> * m_pPropertyDict;
+
+ QCheckBox * m_pCustomColorCheck;
+ QColor * m_pCustomColor;
+ KviColorSelector * m_pCustomColorSelector;
+
+ //Ignore TAB
+ QCheckBox * m_pIgnoreEnabled;
+ QCheckBox * m_pIgnoreQuery;
+ QCheckBox * m_pIgnoreChannel;
+ QCheckBox * m_pIgnoreNotice;
+ QCheckBox * m_pIgnoreCtcp;
+ QCheckBox * m_pIgnoreInvite;
+ QCheckBox * m_pIgnoreDcc;
+
+ virtual void closeEvent(QCloseEvent *);
+protected slots:
+ void okClicked();
+ void addMaskClicked();
+ void delMaskClicked();
+ void editMaskClicked();
+ void editAllPropertiesClicked();
+ void maskCurrentChanged(KviTalListBoxItem *it);
+};
+
+
+
+#endif //_EDITUSER_H_
diff --git a/src/modules/reguser/libkvireguser.cpp b/src/modules/reguser/libkvireguser.cpp
new file mode 100644
index 00000000..49e4a204
--- /dev/null
+++ b/src/modules/reguser/libkvireguser.cpp
@@ -0,0 +1,1239 @@
+//=============================================================================
+//
+// File : libkvireguser.cpp
+// Creation date : Fri Dec 01 2000 14:53:10 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_module.h"
+
+#include "kvi_regusersdb.h"
+#include "kvi_ircuserdb.h"
+#include "kvi_out.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_window.h"
+#include "kvi_locale.h"
+#include "kvi_app.h"
+#include "kvi_window.h"
+#include "kvi_frame.h"
+
+#include "edituser.h"
+#include "wizard.h"
+#include "kvi_ircconnection.h"
+#include "dialog.h"
+
+#include "kvi_pointerlist.h"
+#include <qsplitter.h> // FIXME: REmove this!
+
+//#warning "$reguser.matches..."
+//#warning "$reguser.clear"
+
+//#warning "THIS MODULE HAS TO BE REVISED (notify list consistency!!!)"
+
+// kvi_app.cpp
+
+
+extern KVIRC_API KviRegisteredUserDataBase * g_pRegisteredUserDataBase;
+
+KviPointerList<KviRegistrationWizard> * g_pRegistrationWizardList = 0;
+
+KviRegisteredUsersDialog * g_pRegisteredUsersDialog = 0;
+
+/*
+ @doc: reguser
+ @type:
+ module
+ @short:
+ Interface to the registered users database
+ @title:
+ The reguser module
+ @body:
+ The reguser module is the scripting interface to the [doc:registered_users]registered users database[/doc].[br]
+ It provides the following set of commands:[br]
+ [cmd]reguser.add[/cmd]: adds an user entry to the database[br]
+ [cmd]reguser.addmask[/cmd]: adds an user's mask to the database[br]
+ [cmd]reguser.remove[/cmd]: removes an user entry from the database[br]
+ [fnc]$reguser.list[/fnc]: lists the entries[br]
+ [cmd]reguser.setproperty[/cmd]: sets a property associated to an entry[br]
+ [cmd]reguser.edit[/cmd]: shows an editor for an user entry
+ [fnc]$reguser.match[/fnc](): finds an entry by matching masks[br]
+ [fnc]$reguser.exactMatch[/fnc](): finds an entry by comparing masks[br]
+ [fnc]$reguser.property[/fnc](): finds a property associated to an entry[br]
+ [fnc]$reguser.matchProperty[/fnc](): shortcut for [fnc]$reguser.property[/fnc]([fnc]$reguser.match[/fnc]())[br]
+ [fnc]$reguser.mask[/fnc](): returns the registration masks for an entry
+*/
+
+/*
+ @doc: reguser.edit
+ @type:
+ command
+ @title:
+ reguser.edit
+ @keyterms:
+ registering users
+ @short:
+ Opens the registeredusers dialog
+ @syntax:
+ reguser.edit [-t]
+ @switches:
+ !sw: -t | --toplevel
+ the editor is created as a toplevel window (dialog)
+ @description:
+ Shows the registered user database editor.[br]
+ If the [-t] switch is passed, the editor is created as a toplevel window (dialog), otherwise
+ it is created as part of the current main window.[br]
+ @examples:
+ @seealso:
+ [module:reguser]Registered users database interface[/module],
+ [doc:registered_users]Registered users database[/doc],
+ [cmd]reguser.add[/cmd],
+ [cmd]reguser.remove[/cmd],
+ [cmd]reguser.addmask[/cmd],
+ [fnc]$reguser.list[/fnc]
+*/
+
+static bool reguser_kvs_cmd_edit(KviKvsModuleCommandCall * c)
+{
+ if(g_pRegisteredUsersDialog)
+ {
+ if(c->hasSwitch('t',"toplevel"))
+ {
+ if(g_pRegisteredUsersDialog->parent())
+ {
+ g_pRegisteredUsersDialog->reparent(0,QPoint(0,0),true);
+ }
+ } else {
+ if(g_pRegisteredUsersDialog->parent() != c->window()->frame()->splitter())
+ {
+ g_pRegisteredUsersDialog->reparent(c->window()->frame()->splitter(),QPoint(0,0),true);
+ }
+ }
+ } else {
+ if(c->hasSwitch('t',"toplevel"))
+ {
+ g_pRegisteredUsersDialog = new KviRegisteredUsersDialog(0);
+ } else {
+ g_pRegisteredUsersDialog = new KviRegisteredUsersDialog(c->window()->frame()->splitter());
+ }
+ }
+ g_pRegisteredUsersDialog->show();
+ g_pRegisteredUsersDialog->raise();
+ g_pRegisteredUsersDialog->setFocus();
+ return true;
+}
+
+/*
+ @doc: reguser.add
+ @type:
+ command
+ @title:
+ reguser.add
+ @keyterms:
+ registering users
+ @short:
+ Registers an user
+ @syntax:
+ reguser.add [-r] [-f] [-q] [-g=group] <name> [mask]
+ @description:
+ Adds a new entry with the specified <name> to the database.[br]
+ If the database contains an entry with the same <name>, this command just prints
+ a warning and returns.[br]
+ If no [mask] is given the new entry has no registration masks: so it can't be "matched" yet. You have to add
+ at least one mask with [cmd]reguser.addmask[/cmd].
+ If [mask] is given, then it is added to the entry mask list.[br]
+ The <name> parameter may contain any character: even spaces are allowed (obviously you have to
+ use quotes in that case).[br]
+ If the '-r' switch is given , the new entry replaces any previous one with the same <name> (the old entry is removed).[br]
+ If the '-f' switch is given , and there is an existing entry with the same name , no warning is printed
+ and the old entry is treated just like it has been just added (thus the [mask] is eventually added to its mask list).[br]
+ The '-q' switch causes the command to run in "quiet" mode and print no warning.[br]
+ @examples:
+ [example]
+ reguser.add Pragma
+ [/example]
+ @seealso:
+ [module:reguser]Registered users database interface[/module],
+ [doc:registered_users]Registered users database[/doc],
+ [cmd]reguser.remove[/cmd],
+ [cmd]reguser.addmask[/cmd],
+ [fnc]$reguser.list[/fnc]
+*/
+
+static bool reguser_kvs_cmd_add(KviKvsModuleCommandCall * c)
+{
+ QString szName;
+ QString szMask;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("name",KVS_PT_STRING,0,szName)
+ KVSM_PARAMETER("mask",KVS_PT_STRING,0,szMask)
+ KVSM_PARAMETERS_END(c)
+ if(szName.isEmpty())
+ {
+ if(!c->hasSwitch('q',"quiet"))c->warning(__tr2qs("No name specified"));
+ return true;
+ }
+
+ if(c->hasSwitch('r',"replace"))g_pRegisteredUserDataBase->removeUser(szName);
+
+
+ KviRegisteredUser * u = g_pRegisteredUserDataBase->addUser(szName);
+ QString group;
+ if(c->hasSwitch('g',"group"))
+ {
+ c->switches()->getAsStringIfExisting('g',"group",group);
+ u->setGroup(group);
+ }
+ if(u == 0)
+ {
+ if(c->hasSwitch('f',"force"))
+ {
+ u = g_pRegisteredUserDataBase->findUserByName(szName);
+ } else {
+ if(!c->hasSwitch('q',"quiet"))c->warning(__tr2qs("User already registered: found exact name match"));
+ }
+ }
+
+
+ if(u)
+ {
+ if(!szMask.isEmpty())
+ {
+ KviIrcMask * m = new KviIrcMask(szMask);
+ u = g_pRegisteredUserDataBase->addMask(u,m);
+ if(u != 0)
+ {
+ if(!c->hasSwitch('q',"quiet"))c->warning(__tr2qs("Mask %Q is already used to identify user %s"),&szMask,u->name().utf8().data());
+ }
+ }
+ }
+ return true;
+}
+
+/*
+ @doc: reguser.remove
+ @type:
+ command
+ @title:
+ reguser.remove
+ @keyterms:
+ unregistering users
+ @short:
+ Removes an entry from the regusers database
+ @syntax:
+ reguser.remove [-q] [-n] <name>
+ @description:
+ Removes the regusers database entry with the specified <name>.[br]
+ If the -n switch is given, and there is a removed entry,
+ this command will restart all the running "notify lists".
+ If the -q switch is used , no warning is printed if the <name>
+ does not identify an existing entry.
+ @examples:
+ [example]
+ [cmd]reguser.add[/cmd] Pragma
+ reguser.remove Pragma
+ [example]
+ @seealso:
+ [module:reguser]Registered users database interface[/module],
+ [doc:registered_users]Registered users database[/doc],
+ [cmd]reguser.add[/cmd],
+ [cmd]reguser.addmask[/cmd],
+ [fnc]$reguser.list[/fnc]
+*/
+
+static bool reguser_kvs_cmd_remove(KviKvsModuleCommandCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("name",KVS_PT_STRING,0,szName)
+ KVSM_PARAMETERS_END(c)
+
+ if(szName.isEmpty())
+ {
+ if(!c->hasSwitch('q',"quiet"))c->warning(__tr2qs("No name specified"));
+ return true;
+ }
+
+ if(!(g_pRegisteredUserDataBase->removeUser(szName)))
+ {
+ c->warning(__tr2qs("User not found (%Q)"),&szName);
+ } else {
+ if(c->hasSwitch('n',"restartnotifylists"))g_pApp->restartNotifyLists();
+ }
+ return true;
+}
+
+/*
+ @doc: reguser.addmask
+ @type:
+ command
+ @title:
+ reguser.addmask
+ @keyterms:
+ registering users
+ @short:
+ Adds a mask to a registered user
+ @syntax:
+ reguser.addmask [-f] <name> <mask>
+ @description:
+ Adds a registration mask to the database entry with name <name>.[br]
+ The <mask> has the common [doc:irc_masks]irc mask[/doc] format.[br]
+ The only restriction on the <mask> is that it must be unique inside the
+ regusers database: you can't match two users with the same mask (it would
+ have rather undefined results).[br]
+ If -f is used , KVIrc ensures that the mask is unique in the database
+ and associates is to THIS registered user (breaking the previous associations).<br>
+ Once at least one mask has been added, the user can be "matched"
+ by using the [fnc]$reguser.match[/fnc]() function.[br]
+ Each database entry can have an unlimited number of masks.[br]
+ @examples:
+ [example]
+ [cmd]reguser.add[/cmd] "Szymon Stefanek"
+ reguser.addmask "Szymon Stefanek" Pragma!*@*.it
+ [/example]
+ @seealso:
+ [module:reguser]Registered users database interface[/module],
+ [doc:registered_users]Registered users database[/doc],
+ [cmd]reguser.add[cmd],
+ [cmd]reguser.remove[/cmd],
+ [cmd]reguser.delmask[/cmd],
+ [fnc]$reguser.list[/fnc],
+ [fnc]$reguser.match[/fnc],
+ [fnc]$reguser.exactMatch[/fnc]
+*/
+
+static bool reguser_kvs_cmd_addmask(KviKvsModuleCommandCall * c)
+{
+ QString szName;
+ QString szMask;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("name",KVS_PT_STRING,0,szName)
+ KVSM_PARAMETER("mask",KVS_PT_STRING,0,szMask)
+ KVSM_PARAMETERS_END(c)
+
+ if(szName.isEmpty())
+ {
+ c->warning(__tr2qs("No name specified"));
+ return true;
+ }
+
+ if(szMask.isEmpty())
+ {
+ c->warning(__tr2qs("No mask specified"));
+ return true;
+ }
+
+ KviRegisteredUser * u = g_pRegisteredUserDataBase->findUserByName(szName);
+ if(!u)
+ {
+ c->warning(__tr2qs("User %Q not found"),&szName);
+ return true;
+ }
+
+ KviIrcMask * mk = new KviIrcMask(szMask);
+
+ if(c->hasSwitch('f',"force"))g_pRegisteredUserDataBase->removeMask(*mk);
+
+ u = g_pRegisteredUserDataBase->addMask(u,mk);
+
+ if(u != 0)c->warning(__tr2qs("Mask %Q already used to identify user %Q"),&szMask,&(u->name()));
+ return true;
+}
+
+/*
+ @doc: reguser.delmask
+ @type:
+ command
+ @title:
+ reguser.delmask
+ @keyterms:
+ registering users
+ @short:
+ Removes a mask from the regusers database
+ @syntax:
+ reguser.delmask <mask>
+ @description:
+ Removes a mask from the regusers database.[br]
+ Since masks are unique in the database , you don't need to pass
+ an <user> parameter: if an <user> entry has the <mask>, removing that <mask>
+ will surely remove it from that <user> entry. (contorsions ?)[br]
+ @examples:
+ [example]
+ [cmd]reguser.add[/cmd] "Szymon Stefanek"
+ [cmd]reguser.addmask[/cmd] "Szymon Stefanek" Pragma!*@*.it
+ reguser.delmask Pragma!*@*.it
+ [fnc]$reguser.list[/fnc]
+ [/example]
+ @seealso:
+ [module:reguser]Registered users database interface[/module],
+ [doc:registered_users]Registered users database[/doc],
+ [cmd]reguser.add[/cmd],
+ [cmd]reguser.remove[/cmd],
+ [cmd]reguser.addmask[/cmd],
+ [fnc]$reguser.list[/fnc],
+ [fnc]$reguser.match[/fnc],
+ [fnc]$reguser.exactMatch[/fnc]
+*/
+
+static bool reguser_kvs_cmd_delmask(KviKvsModuleCommandCall * c)
+{
+ QString szMask;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("mask",KVS_PT_STRING,0,szMask)
+ KVSM_PARAMETERS_END(c)
+
+ if(szMask.isEmpty())
+ {
+ c->warning(__tr2qs("No mask specified"));
+ return true;
+ }
+
+ KviIrcMask mk(szMask);
+ if(!g_pRegisteredUserDataBase->removeMask(mk))
+ {
+ c->warning(__tr2qs("Mask %Q not found"),&szMask);
+ }
+
+ return true;
+}
+
+/*
+ @doc: reguser.setIgnoreEnabled
+ @type:
+ command
+ @title:
+ reguser.setIgnoreEnabled
+ @keyterms:
+ enable/disable ignoring of this user
+ @short:
+ Enable/disable ignoring of this user
+ @syntax:
+ reguser.setIgnoreEnabled [-q] <name:string> <isEnabled:bool>
+ @description:
+
+ @examples:
+ [example]
+ reguser.setproperty "Alexey" $true
+ [/example]
+ @seealso:
+ [module:reguser]Registered users database interface[/module],
+ [doc:registered_users]Registered users database[/doc],
+ [fnc]$reguser.matchProperty[/fnc],
+ [fnc]$reguser.property[/fnc]
+*/
+
+static bool reguser_kvs_cmd_setIgnoreEnabled(KviKvsModuleCommandCall * c)
+{
+ QString szName;
+ bool bEnabled;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("name",KVS_PT_STRING,0,szName)
+ KVSM_PARAMETER("isEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSM_PARAMETERS_END(c)
+
+ if(szName.isEmpty())
+ {
+ if(!c->hasSwitch('q',"quiet"))c->warning(__tr2qs("No name specified"));
+ return true;
+ }
+
+ KviRegisteredUser * u = g_pRegisteredUserDataBase->findUserByName(szName);
+ if(!u)
+ {
+ if(!c->hasSwitch('q',"quiet"))c->warning(__tr2qs("User %Q not found"),&szName);
+ } else {
+ u->setIgnoreEnabled(bEnabled);
+ }
+ return true;
+}
+
+
+/*
+ @doc: reguser.setIgnoreFlags
+ @type:
+ command
+ @title:
+ reguser.setIgnoreFlags
+ @keyterms:
+ Sets ignore flags for registered user
+ @short:
+ Sets ignore flags for registered user
+ @syntax:
+ reguser.setIgnoreFlags [-p|--query] [-c|--channel] [-n|--notice] [-t|--ctcp] [-i|--invite] [-d|--dcc] [-q] <name:string>
+ @switches:
+ !sw: -q | --quiet
+ Don't warn if the specified user doesn't exist. Just continue silently.
+ !sw: -p | --query
+ Sets ignore for query messages and actions
+ !sw: -c | --channel
+ Sets ignore for channel messages and actions
+ !sw: -n | --notice
+ Sets ignore for notices
+ !sw: -t | --ctcp
+ Sets ignore for CTCP's
+ !sw: -i | --invite
+ Sets ignore for invites
+ !sw: -d | --dcc
+ Sets ignore for DCC's
+
+ @description:
+ Sets ignore flags for registered user
+ @examples:
+ [example]
+ reguser.setproperty "Alexey" $true
+ [/example]
+ @seealso:
+ [module:reguser]Registered users database interface[/module],
+ [doc:registered_users]Registered users database[/doc],
+ [fnc]$reguser.matchProperty[/fnc],
+ [fnc]$reguser.property[/fnc]
+*/
+
+static bool reguser_kvs_cmd_setIgnoreFlags(KviKvsModuleCommandCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("name",KVS_PT_STRING,0,szName)
+ KVSM_PARAMETERS_END(c)
+
+ if(szName.isEmpty())
+ {
+ if(!c->hasSwitch('q',"quiet"))c->warning(__tr2qs("No name specified"));
+ return true;
+ }
+
+ KviRegisteredUser * u = g_pRegisteredUserDataBase->findUserByName(szName);
+ if(!u)
+ {
+ if(!c->hasSwitch('q',"quiet"))c->warning(__tr2qs("User %Q not found"),&szName);
+ } else {
+ int iIgnoreFlags=0;
+ if(c->hasSwitch('p',"query"))
+ iIgnoreFlags |= KviRegisteredUser::Query;
+ if(c->hasSwitch('c',"channel"))
+ iIgnoreFlags |= KviRegisteredUser::Channel;
+ if(c->hasSwitch('n',"notice"))
+ iIgnoreFlags |= KviRegisteredUser::Notice;
+ if(c->hasSwitch('t',"ctcp"))
+ iIgnoreFlags |= KviRegisteredUser::Ctcp;
+ if(c->hasSwitch('i',"invite"))
+ iIgnoreFlags |= KviRegisteredUser::Invite;
+ if(c->hasSwitch('d',"dcc"))
+ iIgnoreFlags |= KviRegisteredUser::Dcc;
+ u->setIgnoreFlags(iIgnoreFlags);
+ }
+ return true;
+}
+
+/*
+ @doc: reguser.getIgnoreFlags
+ @type:
+ function
+ @title:
+ $reguser.getIgnoreFlags
+ @short:
+ Returns ignore flags for registered user
+ @syntax:
+ $reguser.getIgnoreFlags(<name:string>)
+ @description:
+ Returns the ignore flags for registered user. Flags are string of letters:[br]
+ p - query ignore[br]
+ c - channel ignore[br]
+ t - ctcp ignore[br]
+ n - notice ignore[br]
+ d - dcc ignore[br]
+ i - invite ignore[br]
+ @seealso:
+ [module:reguser]Registered users database interface[/module],
+ [doc:registered_users]Registered users database[/doc],
+ [cmd]reguser.add[/cmd],
+ [cmd]reguser.remove[/cmd],
+ [cmd]reguser.addmask[/cmd],
+ [cmd]reguser.delmask[/cmd],
+ [fnc]$reguser.list[/fnc],
+ [fnc]$reguser.match[/fnc],
+ [fnc]$reguser.matchProperty[/fnc]
+*/
+
+static bool reguser_kvs_fnc_getIgnoreFlags(KviKvsModuleFunctionCall * c)
+{
+ QString szName;
+ QString szFlags;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("name",KVS_PT_STRING,0,szName)
+ KVSM_PARAMETERS_END(c)
+
+ KviKvsArray* pArray = new KviKvsArray();
+ int aid=0;
+ KviRegisteredUser * u = g_pRegisteredUserDataBase->findUserByName(szName);
+ if(u)
+ {
+ if(u->ignoreFlags() & KviRegisteredUser::Query)
+ szFlags+='q';
+ if(u->ignoreFlags() & KviRegisteredUser::Channel)
+ szFlags+='c';
+ if(u->ignoreFlags() & KviRegisteredUser::Notice)
+ szFlags+='n';
+ if(u->ignoreFlags() & KviRegisteredUser::Ctcp)
+ szFlags+='t';
+ if(u->ignoreFlags() & KviRegisteredUser::Invite)
+ szFlags+='i';
+ if(u->ignoreFlags() & KviRegisteredUser::Dcc)
+ szFlags+='d';
+ c->returnValue()->setString(szFlags);
+
+ }
+ return true;
+}
+
+/*
+ @doc: reguser.isIgnoreEnabled
+ @type:
+ function
+ @title:
+ $reguser.isIgnoreEnabled
+ @short:
+ Returns if ignore enabled registered user
+ @syntax:
+ $reguser.isIgnoreEnabled(<name:string>)
+ @description:
+ Returns if ignore enabled registered user
+ @seealso:
+ [module:reguser]Registered users database interface[/module],
+ [doc:registered_users]Registered users database[/doc],
+ [cmd]reguser.add[/cmd],
+ [cmd]reguser.remove[/cmd],
+ [cmd]reguser.addmask[/cmd],
+ [cmd]reguser.delmask[/cmd],
+ [fnc]$reguser.list[/fnc],
+ [fnc]$reguser.match[/fnc],
+ [fnc]$reguser.matchProperty[/fnc]
+*/
+
+static bool reguser_kvs_fnc_isIgnoreEnabled(KviKvsModuleFunctionCall * c)
+{
+ QString szName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("name",KVS_PT_STRING,0,szName)
+ KVSM_PARAMETERS_END(c)
+
+ KviKvsArray* pArray = new KviKvsArray();
+ int aid=0;
+ KviRegisteredUser * u = g_pRegisteredUserDataBase->findUserByName(szName);
+ if(u)
+ {
+ c->returnValue()->setBoolean(u->ignoreEnagled());
+
+ }
+ return true;
+}
+
+/*
+ @doc: reguser.setproperty
+ @type:
+ command
+ @title:
+ reguser.setproperty
+ @keyterms:
+ setting user properties
+ @short:
+ Sets a property of a registered user
+ @syntax:
+ reguser.setproperty [-n] [-a] [-q] <name> <property> [value]
+ @description:
+ Adds a property to the registered users database entry with name <name>.[br]
+ The property <property> is set to the specified <value> or is unset if <value>
+ is not given (or is an empty string).[br]
+ If the '-n' switch is used , and the user entry has been found in the database,
+ all the [doc:notify_list]notify lists[/doc] are restarted.[br]
+ If the '-a' switch is used , and there are users on IRC currently matched
+ by this reguser entry then their avatar is reset.
+ This is useful when you're changing someone's notify property.[br]
+ If the -q switch is used , the command runs in "quiet" mode and prints no warnings.[br]
+ @examples:
+ [example]
+ [cmd]reguser.add[/cmd] "Szymon Stefanek"
+ reguser.setproperty -n "Szymon Stefanek" notify Pragma
+ [fnc]$reguser.list[/fnc]
+ [/example]
+ @seealso:
+ [module:reguser]Registered users database interface[/module],
+ [doc:registered_users]Registered users database[/doc],
+ [fnc]$reguser.matchProperty[/fnc],
+ [fnc]$reguser.property[/fnc]
+*/
+
+static bool reguser_kvs_cmd_setproperty(KviKvsModuleCommandCall * c)
+{
+ QString szName;
+ QString szProperty;
+ QString szValue;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("mask",KVS_PT_STRING,0,szName)
+ KVSM_PARAMETER("property",KVS_PT_STRING,0,szProperty)
+ KVSM_PARAMETER("value",KVS_PT_STRING,KVS_PF_OPTIONAL,szValue)
+ KVSM_PARAMETERS_END(c)
+
+ if(szName.isEmpty())
+ {
+ if(!c->hasSwitch('q',"quiet"))c->warning(__tr2qs("No name specified"));
+ return true;
+ }
+
+ if(szProperty.isEmpty())
+ {
+ if(!c->hasSwitch('q',"quiet"))c->warning(__tr2qs("No property specified"));
+ return true;
+ }
+
+ KviRegisteredUser * u = g_pRegisteredUserDataBase->findUserByName(szName);
+ if(!u)
+ {
+ if(!c->hasSwitch('q',"quiet"))c->warning(__tr2qs("User %Q not found"),&szName);
+ } else {
+ u->setProperty(szProperty,szValue);
+ if(c->hasSwitch('n',"restartnotifylists"))g_pApp->restartNotifyLists();
+ if(c->hasSwitch('a',"resetavatar"))g_pApp->resetAvatarForMatchingUsers(u);
+ }
+ return true;
+}
+/*
+ @doc: reguser.list
+ @type:
+ function
+ @title:
+ $reguser.list
+ @short:
+ Get a list of registered user masks
+ @syntax:
+ $reguser.list([mask])
+ @description:
+ Returns an array of the entries in the registered users database.[br]
+ If <mask> is specified, only entries matching the <mask>
+ and the entries with no registration masks are listed.[br]
+ Please note that <mask> is a wildcard string that will match
+ wildcard strings... don't get messed with that :D[br]
+ @seealso:
+ [module:reguser]Registered users database interface[/module],
+ [doc:registered_users]Registered users database[/doc],
+ [cmd]reguser.add[/cmd],
+ [cmd]reguser.remove[/cmd],
+ [cmd]reguser.addmask[/cmd],
+ [fnc]$reguser.list[/fnc],
+ [fnc]$reguser.exactMatch[/fnc]
+*/
+
+static bool reguser_kvs_fnc_list(KviKvsModuleFunctionCall * c)
+{
+ QString szMask;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("user_mask",KVS_PT_STRING,KVS_PF_OPTIONAL,szMask)
+ KVSM_PARAMETERS_END(c)
+
+ KviIrcMask mask(szMask);
+ KviKvsArray* pArray = new KviKvsArray();
+ int aid=0;
+
+ int cnt = 0;
+
+ KviPointerHashTable<QString,KviRegisteredUser> * d = g_pRegisteredUserDataBase->userDict();
+ KviPointerHashTableIterator<QString,KviRegisteredUser> it(*d);
+
+ while(KviRegisteredUser * u = it.current())
+ {
+ KviPointerList<KviIrcMask> * ml = u->maskList();
+ if(u->matches(mask) || (ml->count() == 0))
+ {
+ pArray->set(aid,new KviKvsVariant(u->name()));
+ aid++;
+ }
+ ++it;
+ }
+ c->returnValue()->setArray(pArray);
+ return true;
+}
+
+/*
+ @doc: reguser.showlist
+ @type:
+ command
+ @title:
+ reguser.showlist
+ @keyterms:
+ registered users
+ @short:
+ Lists the registered users
+ @syntax:
+ reguser.showlist [mask]
+ @description:
+ Lists the entries in the registered users database.[br]
+ If <mask> is specified, only entries matching the <mask>
+ and the entries with no registration masks are listed.[br]
+ Please note that <mask> is a wildcard string that will match
+ wildcard strings... don't get messed with that :D[br]
+ @seealso:
+ [module:reguser]Registered users database interface[/module],
+ [doc:registered_users]Registered users database[/doc],
+ [cmd]reguser.add[/cmd],
+ [cmd]reguser.remove[/cmd],
+ [fnc]$reguser.match[/fnc],
+ [fnc]$reguser.exactMatch[/fnc]
+*/
+
+static bool reguser_kvs_cmd_showlist(KviKvsModuleCommandCall * c)
+{
+ QString szMask;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("mask",KVS_PT_STRING,KVS_PF_OPTIONAL,szMask)
+ KVSM_PARAMETERS_END(c)
+
+ KviIrcMask mask(szMask);
+ c->window()->outputNoFmt(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Registered users database dump:"));
+
+ int count = 0;
+
+ KviPointerHashTable<QString,KviRegisteredUser> * d = g_pRegisteredUserDataBase->userDict();
+ KviPointerHashTableIterator<QString,KviRegisteredUser> it(*d);
+ while(KviRegisteredUser * u = it.current())
+ {
+ KviPointerList<KviIrcMask> * ml = u->maskList();
+ if(u->matches(mask) || (ml->count() == 0))
+ {
+ c->window()->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs(" User: %c%Q"),KVI_TEXT_BOLD,&(u->name()));
+
+ if(ml->count() == 0)
+ {
+ c->window()->output(KVI_OUT_SYSTEMWARNING,__tr2qs(" Warning: this user has no registration masks"));
+ } else {
+ for(KviIrcMask * m = ml->first();m;m = ml->next())
+ {
+ c->window()->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs(" Mask: %Q!%Q@%Q"),&(m->nick()),&(m->user()),&(m->host()));
+ }
+ }
+
+ KviPointerHashTable<QString,QString> * pd = u->propertyDict();
+ if(pd)
+ {
+ KviPointerHashTableIterator<QString,QString> pdit(*pd);
+ while(pdit.current())
+ {
+ QString key = pdit.currentKey();
+ c->window()->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs(" Property: %Q=%Q"),&(key),pdit.current());
+ ++pdit;
+ }
+ } else c->window()->outputNoFmt(KVI_OUT_SYSTEMMESSAGE,__tr2qs(" No properties"));
+ count++;
+ }
+ ++it;
+ }
+
+ c->window()->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Total: %d matching users (of %d in the database)"),count,d->count());
+ return true;
+}
+
+
+
+/*
+ @doc: reguser.match
+ @type:
+ function
+ @title:
+ $reguser.match
+ @short:
+ Returns an entry in the registered user database
+ @syntax:
+ $reguser.match(<user_mask>)
+ @description:
+ Returns the name of the first entry matching <user_mask> in the registered user database.[br]
+ The <user_mask> has the common [doc:irc_masks]irc mask[/doc] format but can't contain wildcards.[br]
+ @seealso:
+ [module:reguser]Registered users database interface[/module],
+ [doc:registered_users]Registered users database[/doc],
+ [cmd]reguser.add[/cmd],
+ [cmd]reguser.remove[/cmd],
+ [cmd]reguser.addmask[/cmd],
+ [fnc]$reguser.list[/fnc],
+ [fnc]$reguser.exactMatch[/fnc]
+*/
+
+static bool reguser_kvs_fnc_match(KviKvsModuleFunctionCall * c)
+{
+ QString szMask;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("user_mask",KVS_PT_STRING,0,szMask)
+ KVSM_PARAMETERS_END(c)
+ KviIrcMask mask(szMask);
+//FIXME: it crashes kvirc KviRegisteredUser * u = c->context()->connection()->userDataBase()->registeredUser(mask.nick(),mask.user(),mask.host());
+ KviRegisteredUser * u = g_pRegisteredUserDataBase->findMatchingUser(mask.nick(),mask.user(),mask.host());
+ if(u) c->returnValue()->setString(u->name());
+ return true;
+}
+
+/*
+ @doc: reguser.exactmatch
+ @type:
+ function
+ @title:
+ $reguser.exactMatch
+ @short:
+ Returns an entry in the registered user database
+ @syntax:
+ $reguser.exactMatch(<user_mask>)
+ @description:
+ Returns the name of the registered user database entry that has <user_mask> in its registration mask list.[br]
+ The <user_mask> has the common [doc:irc_masks]wild irc mask[/doc] format and can contain wildcards.[br]
+ @seealso:
+ [module:reguser]Registered users database interface[/module],
+ [doc:registered_users]Registered users database[/doc],
+ [cmd]reguser.add[/cmd],
+ [cmd]reguser.remove[/cmd],
+ [cmd]reguser.addmask[/cmd],
+ [fnc]$reguser.list[/fnc],
+ [fnc]$reguser.match[/fnc]
+*/
+
+static bool reguser_kvs_fnc_exactMatch(KviKvsModuleFunctionCall * c)
+{
+ QString szMask;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("user_mask",KVS_PT_STRING,0,szMask)
+ KVSM_PARAMETERS_END(c)
+ KviIrcMask mask(szMask);
+ KviRegisteredUser * u = g_pRegisteredUserDataBase->findUserWithMask(mask);
+ if(u) c->returnValue()->setString(u->name());
+ return true;
+}
+
+///*
+// @doc: reguser.matches
+// @type:
+// function
+// @title:
+// $reguser.matches
+// @short:
+// Returns entries in the registered user database
+// @syntax:
+// $reguser.matches(<user_mask>)
+// @description:
+// Returns a comma separated list of registered user masks that match <user_mask>.[br]
+// User mask must be in the format <nick>!<user>@<host> , where <user> and
+// <host> may contain '*' wildcards.[br]
+// If no registered mask matches the <user_mask> an empty string is returned.[br]
+// @seealso:
+// [module:reguser]reguser module documentation[/module]
+//*/
+
+//static void search_reguser_list(KviRegisteredUserList * l,KviWindow * w,const char * mask,KviStr & buffer)
+//{
+// for(KviRegisteredUser * u = l->first();u;u = l->next())
+// {
+// if(u->matches(mask))
+// {
+// if(buffer.hasData())buffer.append(',');
+// buffer.append(u->mask());
+// }
+// }
+//}
+
+//static bool reguser_module_fnc_matches(KviModule *m,KviCommand *c,KviParameterList * parms,KviStr &buffer)
+//{
+// ENTER_STACK_FRAME(c,"reguser.matches");
+//
+// KviStr list;
+//
+// const KviPointerHashTable<const char *,KviRegisteredUserList> * d = g_pRegisteredUserDataBase->nickDict();
+// KviPointerHashTableIterator<const char *,KviRegisteredUserList> it(*d);
+// while(KviRegisteredUserList * l = it.current())
+// {
+// search_reguser_list(l,c->window(),parms->safeFirstParam(),list);
+// ++it;
+// }
+//
+// search_reguser_list(g_pRegisteredUserDataBase->wildList(),c->window(),parms->safeFirstParam(),list);
+//
+// buffer.append(list);
+//
+// return c->leaveStackFrame();
+//}
+
+
+/*
+ @doc: reguser.mask
+ @type:
+ function
+ @title:
+ $reguser.mask
+ @short:
+ Returns the registration masks for a db entry
+ @syntax:
+ $reguser.mask(<name>[,<N>])
+ @description:
+ Returns the <N>th registration mask for the registered user database record identified
+ by <name>. If <N> is not given , returns an array of registration masks for that entry.[br]
+ If <name> does not identify a valid entry an empty string is returned;
+ if <N> is out of range (or there are no masks at all) , an empty string is returned.[br]
+ <N> is a ZERO BASED index.[br]
+ @examples:
+ [example]
+ [cmd]reguser.add[/cmd] Pragma
+ [cmd]reguser.addmask[/cmd] Pragma Pragma!*@*.it
+ [cmd]echo[/cmd] $reguser.mask(Pragma,0)
+ [/example]
+ @seealso:
+ [module:reguser]Registered users database interface[/module],
+ [doc:registered_users]Registered users database[/doc],
+ [cmd]reguser.add[/cmd],
+ [cmd]reguser.remove[/cmd],
+ [cmd]reguser.addmask[/cmd],
+ [cmd]reguser.delmask[/cmd],
+ [fnc]$reguser.list[/fnc],
+ [fnc]$reguser.match[/fnc],
+ [fnc]$reguser.matchProperty[/fnc]
+*/
+
+static bool reguser_kvs_fnc_mask(KviKvsModuleFunctionCall * c)
+{
+ QString szName;
+ QString szN;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("name",KVS_PT_STRING,0,szName)
+ KVSM_PARAMETER("N",KVS_PT_STRING,KVS_PF_OPTIONAL,szN)
+ KVSM_PARAMETERS_END(c)
+
+ KviKvsArray* pArray = new KviKvsArray();
+ int aid=0;
+ KviRegisteredUser * u = g_pRegisteredUserDataBase->findUserByName(szName);
+ if(u)
+ {
+ KviStr n = szName;
+ if(n.hasData() && n.isUnsignedNum())
+ {
+ KviIrcMask * m = u->maskList()->at(n.toInt());
+ if(m) c->returnValue()->setString(m->nick()+"!"+m->user()+"@"+m->host());
+ } else {
+ int id=0;
+ for(KviIrcMask * m = u->maskList()->first();m;m = u->maskList()->next())
+ {
+ pArray->set(aid,new KviKvsVariant(QString(m->nick()+"!"+m->user()+"@"+m->host())));
+ aid++;
+ }
+ c->returnValue()->setArray(pArray);
+ }
+ }
+ return true;
+}
+/*
+ @doc: reguser.property
+ @type:
+ function
+ @title:
+ $reguser.property
+ @short:
+ Returns a property of an entry in the registered user database
+ @syntax:
+ $reguser.property(<user_name>,<property_name>)
+ @description:
+ Returns the value of the property identified by <property_name> and
+ bound to the entry identified by <user_name>.[br]
+ If the property is not set or if there is no entry with <user_name> an empty string is returned.[br]
+ @examples:
+ [example]
+ [cmd]reguser.add[/cmd] Pragma
+ [cmd]reguser.addmask[/cmd] Pragma Pragma!*@*.it
+ [cmd]reguser.setproperty[/cmd] Pragma isDev 1
+ [cmd]echo[/cmd] $reguser.property(Pragma,isDev)
+ [/example]
+ @seealso:
+ [module:reguser]Registered users database interface[/module],
+ [doc:registered_users]Registered users database[/doc],
+ [cmd]reguser.add[/cmd],
+ [cmd]reguser.remove[/cmd],
+ [cmd]reguser.addmask[/cmd],
+ [fnc]$reguser.list[/fnc],
+ [fnc]$reguser.match[/fnc],
+ [fnc]$reguser.matchProperty[/fnc]
+*/
+
+static bool reguser_kvs_fnc_property(KviKvsModuleFunctionCall * c)
+{
+ QString szName;
+ QString szProperty;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("user_name",KVS_PT_STRING,0,szName)
+ KVSM_PARAMETER("property_name",KVS_PT_STRING,KVS_PF_OPTIONAL,szProperty)
+ KVSM_PARAMETERS_END(c)
+
+ KviRegisteredUser * u = g_pRegisteredUserDataBase->findUserByName(szName);
+ if(u)
+ {
+ QString tmp;
+ u->getProperty(szProperty,tmp);
+ c->returnValue()->setString(tmp);
+ }
+ return true;
+}
+/*
+ @doc: reguser.matchproperty
+ @type:
+ function
+ @title:
+ $reguser.matchProperty
+ @short:
+ Returns a property of an entry in the registered user database
+ @syntax:
+ $reguser.matchProperty(<user_mask>,<property_name>)
+ @description:
+ Returns the value of the property identified by <property_name> and
+ bound to the first entry matched by by <user_mask>.[br]
+ If the property is not set, an empty string is returned.[br]
+ If no entry matches <user_mask> this function returns an empty string
+ and does not print any error.[br]
+ [example]
+ %property = $reguser.matchProperty(<user_mask>,<property_name>)
+ [/example]
+ Is actually a shortcut for:[br]
+ [example]
+ %tmp = [fnc]$reguser.match[/fnc](<user_mask>)
+ if("%tmp" != "")%property = $reguser.property(%tmp,<property_name>)
+ [/example]
+ @seealso:
+ [module:reguser]Registered users database interface[/module],
+ [doc:registered_users]Registered users database[/doc],
+ [cmd]reguser.add[/cmd],
+ [cmd]reguser.remove[/cmd],
+ [cmd]reguser.addmask[/cmd],
+ [fnc]$reguser.list[/fnc],
+ [fnc]$reguser.match[/fnc],
+ [fnc]$reguser.property[/fnc]
+*/
+
+static bool reguser_kvs_fnc_matchProperty(KviKvsModuleFunctionCall * c)
+{
+ QString szMask;
+ QString szProperty;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("user_mask",KVS_PT_STRING,0,szMask)
+ KVSM_PARAMETER("property_name",KVS_PT_STRING,KVS_PF_OPTIONAL,szProperty)
+ KVSM_PARAMETERS_END(c)
+
+ KviIrcMask mask(szMask);
+//FIXME: it crashes kvirc KviRegisteredUser * u = c->context()->connection()->userDataBase()->registeredUser(mask.nick(),mask.user(),mask.host());
+ KviRegisteredUser * u = g_pRegisteredUserDataBase->findMatchingUser(mask.nick(),mask.user(),mask.host());
+ if(u)
+ {
+ QString tmp;
+ u->getProperty(szProperty,tmp);
+ c->returnValue()->setString(tmp);
+ }
+ return true;
+}
+
+/*
+ @doc: reguser.wizard
+ @type:
+ command
+ @title:
+ reguser.wizard
+ @keyterms:
+ registering users, registration wizard
+ @short:
+ Shows a registration wizard dialog
+ @syntax:
+ reguser.wizard [mask]
+ @description:
+ Allows registering an user with an intuitive and easy to use interface.
+ If [mask] is specified , it is used as inital mask in the dialog.
+ @seealso:
+ [module:reguser]Registered users database interface[/module],
+ [doc:registered_users]Registered users database[/doc],
+ [cmd]reguser.add[/cmd],
+*/
+
+static bool reguser_kvs_cmd_wizard(KviKvsModuleCommandCall * c)
+{
+ QString szMask;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("mask",KVS_PT_STRING,KVS_PF_OPTIONAL,szMask)
+ KVSM_PARAMETERS_END(c)
+
+ KviRegistrationWizard * w = new KviRegistrationWizard(szMask);
+ w->show();
+ return true;
+}
+
+static bool reguser_module_init(KviModule * m)
+{
+ g_pLocalRegisteredUserDataBase = 0;
+ g_pRegistrationWizardList = new KviPointerList<KviRegistrationWizard>;
+ g_pRegistrationWizardList->setAutoDelete(true);
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"add",reguser_kvs_cmd_add);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"remove",reguser_kvs_cmd_remove);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"addmask",reguser_kvs_cmd_addmask);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"delmask",reguser_kvs_cmd_delmask);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"edit",reguser_kvs_cmd_edit);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"showlist",reguser_kvs_cmd_showlist);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"setproperty",reguser_kvs_cmd_setproperty);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"wizard",reguser_kvs_cmd_wizard);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"setIgnoreEnabled",reguser_kvs_cmd_setIgnoreEnabled);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"setIgnoreFlags",reguser_kvs_cmd_setIgnoreFlags);
+
+ KVSM_REGISTER_FUNCTION(m,"match",reguser_kvs_fnc_match);
+ KVSM_REGISTER_FUNCTION(m,"list",reguser_kvs_fnc_list);
+ KVSM_REGISTER_FUNCTION(m,"exactMatch",reguser_kvs_fnc_exactMatch);
+ KVSM_REGISTER_FUNCTION(m,"mask",reguser_kvs_fnc_mask);
+ KVSM_REGISTER_FUNCTION(m,"property",reguser_kvs_fnc_property);
+ KVSM_REGISTER_FUNCTION(m,"matchProperty",reguser_kvs_fnc_matchProperty);
+ KVSM_REGISTER_FUNCTION(m,"getIgnoreFlags",reguser_kvs_fnc_getIgnoreFlags);
+ KVSM_REGISTER_FUNCTION(m,"isIgnoreEnabled",reguser_kvs_fnc_isIgnoreEnabled);
+
+ return true;
+}
+
+static bool reguser_module_cleanup(KviModule *m)
+{
+ if(g_pRegisteredUsersDialog)delete g_pRegisteredUsersDialog;
+ g_pRegisteredUsersDialog = 0;
+
+ while(KviRegistrationWizard * w = g_pRegistrationWizardList->first())delete w;
+ delete g_pRegistrationWizardList;
+ g_pRegistrationWizardList = 0;
+
+ // FIXME: UNREGISTER THE METAOBJECTS
+ return true;
+}
+
+static bool reguser_module_can_unload(KviModule *)
+{
+ return ((g_pRegistrationWizardList->isEmpty()) && (g_pRegisteredUsersDialog == 0));
+}
+
+KVIRC_MODULE(
+ "Reguser", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "Script interface to the registered users database",
+ reguser_module_init,
+ reguser_module_can_unload,
+ 0,
+ reguser_module_cleanup
+)
diff --git a/src/modules/reguser/wizard.cpp b/src/modules/reguser/wizard.cpp
new file mode 100644
index 00000000..1777621d
--- /dev/null
+++ b/src/modules/reguser/wizard.cpp
@@ -0,0 +1,464 @@
+//
+// File : wizard.cpp
+// Creation date : Fri Jun 26 2002 21:21:21 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "wizard.h"
+
+#include "kvi_locale.h"
+#include "kvi_pointerlist.h"
+#include "kvi_app.h"
+#include "kvi_ircmask.h"
+#include "kvi_selectors.h"
+#include "kvi_pixmap.h"
+#include "kvi_regusersdb.h"
+#include "kvi_iconmanager.h"
+#ifdef COMPILE_USE_QT4
+#include <QDesktopWidget>
+#endif
+
+#include <qcheckbox.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qpushbutton.h>
+#include <qwidget.h>
+#include <qlayout.h>
+#include <qvariant.h>
+#include <qframe.h>
+
+
+extern KVIRC_API KviRegisteredUserDataBase * g_pRegisteredUserDataBase;
+extern KviPointerList<KviRegistrationWizard> * g_pRegistrationWizardList;
+
+KviRegistrationWizard::KviRegistrationWizard(const char * startMask,KviRegisteredUserDataBase * db,QWidget * par,bool bModal)
+: KviTalWizard(par)
+{
+ m_pDb = db;
+
+ setModal(bModal);
+
+ m_bModal = bModal;
+
+ KviIrcMask mask(startMask ? startMask : "*!*@*");
+
+ g_pRegistrationWizardList->append(this);
+
+ QGridLayout* m_pPage1Layout;
+ QGridLayout* m_pPage2Layout;
+ QGridLayout* m_pPage3Layout;
+ QGridLayout* m_pPage4Layout;
+ QGridLayout* m_pPage5Layout;
+
+ QLabel* TextLabel10_2;
+ QLabel* TextLabel10;
+ QLabel* TextLabel10_3;
+ QLabel* TextLabel10_3_2;
+
+ QFrame * f;
+
+// resize( 490, 456 );
+ setCaption(__tr2qs("User Registration Wizard - KVIrc"));
+ setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_LINUX)));
+
+ setSizeGripEnabled( TRUE );
+
+ m_pPage1 = new QWidget(this);
+ m_pPage1Layout = new QGridLayout(m_pPage1);
+ m_pPage1Layout->setSpacing(4);
+ m_pPage1Layout->setMargin(8);
+
+ m_pLabel1 = new QLabel(m_pPage1);
+ m_pLabel1->setText(__tr2qs("<p>Welcome to the user registration wizard.<br>This process allows you to add an IRC user to the database and set properties for that user. KVIrc will be (hopefully) able to recognize the user, add him to the notify list, and display the associated avatar.<br><br>First of all, you must insert an <b>entry name or real name</b> for the user you're going to register. The name will be used to identify the database entry and has no specific requirements, it can be a given name, nickname, or just some text to remind you of the real person.<br>Examples: \"George W Bush\", \"Dubya\".\n</p>" ));
+
+ m_pPage1Layout->addWidget(m_pLabel1, 0, 0);
+
+ m_pEditRealName = new QLineEdit(m_pPage1);
+ //m_pEditRealName->setAlignment(int(QLineEdit::AlignHCenter));
+
+ m_pPage1Layout->addWidget(m_pEditRealName,1,0);
+ addPage( m_pPage1,__tr2qs("Step 1: Entry Name"));
+
+ if(mask.nick() != "*")m_pEditRealName->setText(mask.nick());
+
+ connect(m_pEditRealName,SIGNAL(textChanged(const QString &)),this,SLOT(realNameChanged(const QString &)));
+
+ // PAGE 2
+
+
+ m_pPage2 = new QWidget(this);
+ m_pPage2Layout = new QGridLayout( m_pPage2 );
+ m_pPage2Layout->setSpacing( 4 );
+ m_pPage2Layout->setMargin( 8 );
+
+ m_pLabel2 = new QLabel( m_pPage2);
+ m_pLabel2->setText(__tr2qs("<p>A registered user is identified by one or more <b>IRC masks</b>.<br>A mask must be in the following form:<br><b>nickname!username@hostname</b><br>and can contain wildcard characters '*' and '?'. Be careful in choosing the masks, as they are the only way to verify the identity of a registered user.<br><br>You can enter at most two masks here, if you wish to add more masks, use the \"<b>Edit</b>\" button in the Registered Users dialog. You must enter at least one mask.</p>"));
+
+ m_pPage2Layout->addMultiCellWidget(m_pLabel2,0,0,0,4);
+
+ //KviStr szMask;
+
+ //mask.mask(szMask,11);
+
+ //KviIrcMask masktempl(szMask.ptr());
+
+ m_pNicknameEdit1 = new QLineEdit(m_pPage2);
+ m_pNicknameEdit1->setAlignment(Qt::AlignRight);
+ if(mask.nick() != "*")m_pNicknameEdit1->setText(mask.nick());
+ connect(m_pNicknameEdit1,SIGNAL(textChanged(const QString &)),this,SLOT(maskChanged(const QString &)));
+ m_pPage2Layout->addWidget( m_pNicknameEdit1, 1, 0 );
+
+ m_pUsernameEdit1 = new QLineEdit(m_pPage2);
+ m_pUsernameEdit1->setAlignment(Qt::AlignHCenter);
+ if(mask.hasUser())m_pUsernameEdit1->setText(mask.user());
+ connect(m_pUsernameEdit1,SIGNAL(textChanged(const QString &)),this,SLOT(maskChanged(const QString &)));
+ m_pPage2Layout->addWidget(m_pUsernameEdit1,1,2);
+
+ m_pHostEdit1 = new QLineEdit(m_pPage2);
+ if(mask.hasHost())m_pHostEdit1->setText(mask.host());
+ connect(m_pHostEdit1,SIGNAL(textChanged(const QString &)),this,SLOT(maskChanged(const QString &)));
+ m_pPage2Layout->addWidget(m_pHostEdit1,1,4);
+
+ m_pNicknameEdit2 = new QLineEdit(m_pPage2);
+ m_pNicknameEdit2->setAlignment(Qt::AlignRight);
+ m_pPage2Layout->addWidget(m_pNicknameEdit2,2,0);
+
+ m_pUsernameEdit2 = new QLineEdit(m_pPage2);
+ m_pUsernameEdit2->setAlignment(Qt::AlignHCenter);
+ m_pPage2Layout->addWidget(m_pUsernameEdit2,2,2);
+
+ m_pHostEdit2 = new QLineEdit(m_pPage2);
+ m_pPage2Layout->addWidget(m_pHostEdit2,2,4);
+
+ TextLabel10_2 = new QLabel(m_pPage2);
+ TextLabel10_2->setText("<center><b>!</b></center>");
+ TextLabel10_2->setAlignment(int(Qt::AlignCenter));
+ m_pPage2Layout->addWidget(TextLabel10_2,2,1);
+
+ TextLabel10 = new QLabel(m_pPage2);
+ TextLabel10->setText("<center><b>!</b></center>");
+ TextLabel10->setAlignment(int(Qt::AlignCenter));
+ m_pPage2Layout->addWidget(TextLabel10,1,1);
+
+ TextLabel10_3 = new QLabel(m_pPage2);
+ TextLabel10_3->setText("<center><b>@</b></center>");
+ TextLabel10_3->setAlignment(int(Qt::AlignCenter));
+ m_pPage2Layout->addWidget(TextLabel10_3,1,3);
+
+ TextLabel10_3_2 = new QLabel(m_pPage2);
+ TextLabel10_3_2->setText("<center><b>@</b></center>");
+ TextLabel10_3_2->setAlignment(int(Qt::AlignCenter));
+ m_pPage2Layout->addWidget(TextLabel10_3_2,2,3);
+
+ addPage(m_pPage2,__tr2qs("Step 2: Mask Selection"));
+
+
+
+
+
+ m_pPage3 = new QWidget(this);
+ m_pPage3Layout = new QGridLayout(m_pPage3);
+ m_pPage3Layout->setSpacing(4);
+ m_pPage3Layout->setMargin(8);
+
+ m_pLabel3 = new QLabel(m_pPage3);
+ m_pLabel3->setText(__tr2qs("<p>If you want to store an avatar image for this user, you can set it here. KVIrc will show the avatar in the userlist next to the user's nickname.<br>An avatar can be in any supported image format (PNG is recommended). Keep in mind that KVIrc stores avatars in memory and has to resize them to fit in the userlist, thus it's better to use small, low-resolution images.</p>"));
+ m_pPage3Layout->addWidget(m_pLabel3,0,0);
+
+ f = new QFrame(m_pPage3);
+ f->setFrameStyle(QFrame::HLine | QFrame::Sunken);
+ m_pPage3Layout->addWidget(f,1,0);
+
+ m_pAvatar = new KviPixmap();
+ m_pAvatarSelector = new KviPixmapSelector(m_pPage3,__tr2qs("Store an avatar for this user"),m_pAvatar,true);
+ m_pPage3Layout->addWidget(m_pAvatarSelector,2,0);
+
+ m_pPage3Layout->setRowStretch(0,1);
+
+ addPage(m_pPage3,__tr2qs( "Step 3: Avatar Selection"));
+
+
+
+
+ m_pPage4 = new QWidget(this);
+ m_pPage4Layout = new QGridLayout(m_pPage4);
+ m_pPage4Layout->setSpacing(4);
+ m_pPage4Layout->setMargin(8);
+
+ m_pLabel4 = new QLabel(m_pPage4);
+ m_pLabel4->setText(__tr2qs("<p>If you want to be notified when this user is online or goes offline, you must specify the list of nicknames that KVIrc will look for.<br><br>You can enter at most two nicknames here, if you wish to add more nicknames, use the \"<b>Edit</b>\" button in the Registered Users dialog.</p>"));
+ m_pPage4Layout->addMultiCellWidget(m_pLabel4,0,0,0,1);
+
+
+ f = new QFrame(m_pPage4);
+ f->setFrameStyle(QFrame::HLine | QFrame::Sunken);
+ m_pPage4Layout->addMultiCellWidget(f,1,1,0,1);
+
+ m_pNotifyCheck = new QCheckBox(m_pPage4);
+ m_pNotifyCheck->setText(__tr2qs("Add this user to the notify list"));
+ m_pNotifyCheck->setChecked(false);
+ connect(m_pNotifyCheck,SIGNAL(toggled(bool)),this,SLOT(notifyCheckToggled(bool)));
+ m_pPage4Layout->addMultiCellWidget(m_pNotifyCheck,2,2,0,1);
+
+ m_pNotifyNickLabel1 = new QLabel(m_pPage4);
+ m_pNotifyNickLabel1->setText(__tr2qs("Nickname:"));
+ m_pPage4Layout->addWidget(m_pNotifyNickLabel1,3,0);
+
+ m_pNotifyNickLabel2 = new QLabel(m_pPage4);
+ m_pNotifyNickLabel2->setText(__tr2qs("Nickname 2:"));
+ m_pPage4Layout->addWidget(m_pNotifyNickLabel2,4,0);
+
+ m_pNotifyNickEdit1 = new QLineEdit(m_pPage4);
+ if(mask.nick() != "*")m_pNotifyNickEdit1->setText(mask.nick());
+ connect(m_pNotifyNickEdit1,SIGNAL(textChanged(const QString &)),this,SLOT(notifyNickChanged(const QString &)));
+ m_pPage4Layout->addWidget(m_pNotifyNickEdit1,3,1);
+
+ m_pNotifyNickEdit2 = new QLineEdit(m_pPage4);
+ connect(m_pNotifyNickEdit2,SIGNAL(textChanged(const QString &)),this,SLOT(notifyNickChanged(const QString &)));
+ m_pPage4Layout->addWidget(m_pNotifyNickEdit2,4,1);
+
+ m_pPage4Layout->setRowStretch(0,1);
+
+ addPage(m_pPage4,__tr2qs("Step 4: Notify List"));
+
+
+
+
+
+ m_pPage5 = new QWidget(this);
+ m_pPage5Layout = new QGridLayout(m_pPage5);
+ m_pPage5Layout->setSpacing(4);
+ m_pPage5Layout->setMargin(8);
+
+ m_pTextLabel5 = new QLabel(m_pPage5);
+ m_pTextLabel5->setText(__tr2qs("<p>That's it. The user registration has been completed.<br><br>Click \"<b>Finish</b>\" to close this dialog.</p>"));
+ m_pPage5Layout->addWidget(m_pTextLabel5,0,0);
+
+ addPage(m_pPage5,__tr2qs("Registration Complete"));
+
+ setFinishEnabled(m_pPage5,true);
+ QString dummy;
+ maskChanged(dummy);
+ realNameChanged(dummy);
+ notifyCheckToggled(false);
+
+ setMinimumSize(QSize(350,420));
+
+ // signals and slots connections
+}
+
+KviRegistrationWizard::~KviRegistrationWizard()
+{
+ delete m_pAvatar;
+ g_pRegistrationWizardList->setAutoDelete(false);
+ g_pRegistrationWizardList->removeRef(this);
+ g_pRegistrationWizardList->setAutoDelete(true);
+}
+
+void KviRegistrationWizard::reject()
+{
+ KviTalWizard::reject();
+ if(!m_bModal)delete this;
+// hide();
+// g_pApp->collectGarbage(this);
+}
+
+void KviRegistrationWizard::accept()
+{
+ bool bLocalDb = true;
+ if(!m_pDb)
+ {
+ bLocalDb = false;
+ m_pDb = g_pRegisteredUserDataBase;
+ }
+
+ QString szName = m_pEditRealName->text();
+ KviRegisteredUser * u;
+
+
+ if(bLocalDb)
+ {
+ if(szName.isEmpty()) szName = "user";
+
+ QString szNameOk = szName;
+
+ int idx = 1;
+
+ do {
+ u = m_pDb->findUserByName(szNameOk);
+ if(u)
+ {
+ KviQString::sprintf(szNameOk,"%Q%d",&szNameOk,idx);
+ idx++;
+ }
+ } while(u);
+
+ u = m_pDb->addUser(szNameOk);
+
+ } else {
+ u = m_pDb->findUserByName(szName);
+ if(!u)u = m_pDb->addUser(szName);
+ }
+
+ if(!u)
+ {
+ // ops... no way
+ // FIXME: spit an error message ?
+ debug("Ops.. something wrong with the regusers db");
+ //delete this;
+ return;
+ }
+
+ QString m1 = m_pNicknameEdit1->text();
+ QString m2 = m_pUsernameEdit1->text();
+ QString m3 = m_pHostEdit1->text();
+ KviIrcMask * mk = new KviIrcMask(m1,m2,m3);
+ m_pDb->removeMask(*mk);
+ m_pDb->addMask(u,mk);
+
+
+ m1 = m_pNicknameEdit2->text();
+ m2 = m_pUsernameEdit2->text();
+ if(m2.isEmpty())m2 = "*";
+ if(m3.isEmpty())m3 = "*";
+ m3 = m_pHostEdit2->text();
+ mk = new KviIrcMask(m1,m2,m3);
+
+ m_pDb->removeMask(*mk);
+ m_pDb->addMask(u,mk);
+
+ m_pAvatarSelector->commit();
+
+ bool bSetAvatar = false;
+
+ if(!m_pAvatar->isNull())
+ {
+ QString szPath = m_pAvatar->path();
+ u->setProperty("avatar",szPath);
+ bSetAvatar = true;
+ }
+
+ if(m_pNotifyCheck->isChecked())
+ {
+ m1 = m_pNotifyNickEdit1->text();
+ m2 = m_pNotifyNickEdit2->text();
+ if(!m2.isEmpty())
+ {
+ if(!m1.isEmpty())
+ m1.append(' ');
+ m1.append(m2);
+ }
+
+ if(!m1.isEmpty())
+ {
+ u->setProperty("notify",m1);
+ if(!bLocalDb)g_pApp->restartNotifyLists();
+ }
+ }
+
+ if(bSetAvatar && !bLocalDb)
+ g_pApp->resetAvatarForMatchingUsers(u);
+
+ KviTalWizard::accept();
+
+// if(!m_bModal)delete this;
+// hide();
+// g_pApp->collectGarbage(this);
+}
+
+
+void KviRegistrationWizard::showEvent(QShowEvent *e)
+{
+ if(height() < 420)resize(width(),420);
+ move((g_pApp->desktop()->width() - width())/2,(g_pApp->desktop()->height() - height())/2);
+ KviTalWizard::showEvent(e);
+}
+
+void KviRegistrationWizard::maskChanged(const QString &)
+{
+ KviStr tmp1 = m_pNicknameEdit1->text();
+ KviStr tmp2 = m_pUsernameEdit1->text();
+ KviStr tmp3 = m_pHostEdit1->text();
+
+ if(tmp1.isEmpty())
+ {
+ setNextEnabled(m_pPage2,false);
+ return;
+ }
+
+ if(tmp2.isEmpty())
+ {
+ setNextEnabled(m_pPage2,false);
+ return;
+ }
+
+ if(tmp3.isEmpty())
+ {
+ setNextEnabled(m_pPage2,false);
+ return;
+ }
+
+ KviStr mask(KviStr::Format,"%s!%s@%s",tmp1.ptr(),tmp2.ptr(),tmp3.ptr());
+
+ //KviIrcMask m(mask.ptr());
+
+ setNextEnabled(m_pPage2,mask!="*!*@*");
+}
+
+void KviRegistrationWizard::realNameChanged(const QString &)
+{
+ QString tmp = m_pEditRealName->text();
+ setNextEnabled(m_pPage1,!(tmp.isEmpty() || tmp.isNull()));
+}
+
+void KviRegistrationWizard::notifyNickChanged(const QString &)
+{
+ bool bYes = !m_pNotifyCheck->isChecked();
+
+ if(!bYes)
+ {
+ // we need at least one nickname then :)
+ KviStr tmp = m_pNotifyNickEdit1->text();
+ if(tmp.hasData())
+ {
+ bYes = true;
+ } else {
+ tmp = m_pNotifyNickEdit2->text();
+ if(tmp.hasData())bYes = true;
+ }
+ }
+
+ setNextEnabled(m_pPage4,bYes);
+}
+
+void KviRegistrationWizard::notifyCheckToggled(bool)
+{
+ bool bYes = m_pNotifyCheck->isChecked();
+
+ m_pNotifyNickEdit1->setEnabled(bYes);
+ m_pNotifyNickEdit2->setEnabled(bYes);
+ m_pNotifyNickLabel1->setEnabled(bYes);
+ m_pNotifyNickLabel2->setEnabled(bYes);
+
+ QString dummy;
+ notifyNickChanged(dummy);
+}
+
+#include "wizard.moc"
diff --git a/src/modules/reguser/wizard.h b/src/modules/reguser/wizard.h
new file mode 100644
index 00000000..f1446ec6
--- /dev/null
+++ b/src/modules/reguser/wizard.h
@@ -0,0 +1,89 @@
+#ifndef _WIZARD_H_
+#define _WIZARD_H_
+//
+// File : wizard.h
+// Creation date : Fri Jun 26 2002 21:21:21 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_string.h"
+
+#include <kvi_tal_wizard.h>
+
+class KviPixmap;
+class KviPixmapSelector;
+class KviTalVBoxLayout;
+class KviTalHBoxLayout;
+class QGridLayout;
+class QCheckBox;
+class QLabel;
+class QLineEdit;
+class QWidget;
+class KviRegisteredUserDataBase;
+
+class KviRegistrationWizard : public KviTalWizard
+{
+ Q_OBJECT
+public:
+ KviRegistrationWizard(const char * startMask,KviRegisteredUserDataBase * db = 0,QWidget * par = 0,bool bModal = false);
+ ~KviRegistrationWizard();
+
+ KviRegisteredUserDataBase * m_pDb;
+
+ KviStr m_szStartMask;
+
+ bool m_bModal;
+
+ QWidget* m_pPage1;
+ QLabel* m_pLabel1;
+ QLineEdit* m_pEditRealName;
+ QWidget* m_pPage2;
+ QLabel* m_pLabel2;
+ QLineEdit* m_pNicknameEdit1;
+ QLineEdit* m_pNicknameEdit2;
+ QLineEdit* m_pHostEdit1;
+ QLineEdit* m_pHostEdit2;
+ QLineEdit* m_pUsernameEdit1;
+ QLineEdit* m_pUsernameEdit2;
+ QWidget* m_pPage3;
+ QLabel* m_pLabel3;
+ KviPixmapSelector * m_pAvatarSelector;
+ QWidget* m_pPage4;
+ QCheckBox* m_pNotifyCheck;
+ QLabel* m_pNotifyNickLabel1;
+ QLabel* m_pNotifyNickLabel2;
+ QLabel* m_pLabel4;
+ QLineEdit* m_pNotifyNickEdit1;
+ QLineEdit* m_pNotifyNickEdit2;
+ QWidget* m_pPage5;
+ QLabel* m_pTextLabel5;
+
+ KviPixmap * m_pAvatar;
+protected:
+ virtual void showEvent(QShowEvent *e);
+ virtual void accept();
+ virtual void reject();
+protected slots:
+ void realNameChanged(const QString &str);
+ void maskChanged(const QString &str);
+ void notifyNickChanged(const QString &);
+ void notifyCheckToggled(bool);
+};
+
+#endif // _WIZARD_H_
diff --git a/src/modules/rijndael/Makefile.am b/src/modules/rijndael/Makefile.am
new file mode 100644
index 00000000..69b2fe01
--- /dev/null
+++ b/src/modules/rijndael/Makefile.am
@@ -0,0 +1,23 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+SUBDIRS = caps
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvirijndael.la
+
+libkvirijndael_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvirijndael_la_SOURCES = libkvirijndael.cpp rijndael.cpp ablowfish.cpp
+libkvirijndael_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= libkvirijndael.h rijndael.h ablowfish.h
+
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+libkvirijndael.cpp: libkvirijndael.moc
diff --git a/src/modules/rijndael/ablowfish.cpp b/src/modules/rijndael/ablowfish.cpp
new file mode 100644
index 00000000..c56ff36a
--- /dev/null
+++ b/src/modules/rijndael/ablowfish.cpp
@@ -0,0 +1,632 @@
+//
+// File : ablowfish.cpp
+// Creation date : Wed Jan 13 2005 02:04:10 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "ablowfish.h"
+#include "kvi_memmove.h"
+
+#ifdef COMPILE_CRYPT_SUPPORT
+
+
+//Initialization with a fixed string which consists of the hexadecimal digits of PI (less the initial 3)
+//P-array, 18 32-bit subkeys
+const unsigned int BlowFish::scm_auiInitP[18] = {
+ 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,
+ 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89,
+ 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,
+ 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917,
+ 0x9216d5d9, 0x8979fb1b
+};
+
+//Four 32-bit S-boxes with 256 entries each
+const unsigned int BlowFish::scm_auiInitS[4][256] = {
+ //0
+ {0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7,
+ 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99,
+ 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,
+ 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e,
+ 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee,
+ 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,
+ 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef,
+ 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e,
+ 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,
+ 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440,
+ 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce,
+ 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,
+ 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e,
+ 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677,
+ 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,
+ 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032,
+ 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88,
+ 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,
+ 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e,
+ 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0,
+ 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,
+ 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98,
+ 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88,
+ 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,
+ 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6,
+ 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d,
+ 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,
+ 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7,
+ 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba,
+ 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,
+ 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f,
+ 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09,
+ 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,
+ 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb,
+ 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279,
+ 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,
+ 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab,
+ 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82,
+ 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,
+ 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573,
+ 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0,
+ 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,
+ 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790,
+ 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8,
+ 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,
+ 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0,
+ 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7,
+ 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,
+ 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad,
+ 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1,
+ 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,
+ 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9,
+ 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477,
+ 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,
+ 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49,
+ 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af,
+ 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,
+ 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5,
+ 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41,
+ 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,
+ 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400,
+ 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915,
+ 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,
+ 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a},
+
+ //1
+ {0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623,
+ 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266,
+ 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1,
+ 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e,
+ 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6,
+ 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,
+ 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e,
+ 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1,
+ 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737,
+ 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8,
+ 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,
+ 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd,
+ 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701,
+ 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7,
+ 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41,
+ 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331,
+ 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf,
+ 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af,
+ 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e,
+ 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87,
+ 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,
+ 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2,
+ 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16,
+ 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd,
+ 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b,
+ 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,
+ 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e,
+ 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3,
+ 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f,
+ 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a,
+ 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4,
+ 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960,
+ 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66,
+ 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28,
+ 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802,
+ 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,
+ 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510,
+ 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf,
+ 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14,
+ 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e,
+ 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,
+ 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7,
+ 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8,
+ 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281,
+ 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99,
+ 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696,
+ 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128,
+ 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73,
+ 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0,
+ 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0,
+ 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,
+ 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250,
+ 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3,
+ 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285,
+ 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00,
+ 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,
+ 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb,
+ 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e,
+ 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735,
+ 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc,
+ 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9,
+ 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340,
+ 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20,
+ 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7},
+
+ //2
+ {0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934,
+ 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068,
+ 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af,
+ 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840,
+ 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45,
+ 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504,
+ 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,
+ 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb,
+ 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee,
+ 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6,
+ 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42,
+ 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b,
+ 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2,
+ 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb,
+ 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527,
+ 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b,
+ 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33,
+ 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c,
+ 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3,
+ 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc,
+ 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17,
+ 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,
+ 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b,
+ 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115,
+ 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922,
+ 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728,
+ 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0,
+ 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e,
+ 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37,
+ 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d,
+ 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804,
+ 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b,
+ 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3,
+ 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb,
+ 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d,
+ 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c,
+ 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,
+ 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9,
+ 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a,
+ 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe,
+ 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d,
+ 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc,
+ 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f,
+ 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61,
+ 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2,
+ 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9,
+ 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2,
+ 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c,
+ 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e,
+ 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633,
+ 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10,
+ 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,
+ 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52,
+ 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027,
+ 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5,
+ 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62,
+ 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634,
+ 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76,
+ 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24,
+ 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc,
+ 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4,
+ 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c,
+ 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837,
+ 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0},
+
+ //3
+ {0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b,
+ 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe,
+ 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,
+ 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4,
+ 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8,
+ 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6,
+ 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304,
+ 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22,
+ 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,
+ 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6,
+ 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9,
+ 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,
+ 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593,
+ 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51,
+ 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28,
+ 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c,
+ 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b,
+ 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,
+ 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c,
+ 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd,
+ 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a,
+ 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319,
+ 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb,
+ 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,
+ 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991,
+ 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32,
+ 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,
+ 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166,
+ 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae,
+ 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb,
+ 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5,
+ 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47,
+ 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,
+ 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d,
+ 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84,
+ 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048,
+ 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8,
+ 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd,
+ 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,
+ 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7,
+ 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38,
+ 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f,
+ 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c,
+ 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525,
+ 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1,
+ 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442,
+ 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964,
+ 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,
+ 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8,
+ 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d,
+ 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f,
+ 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299,
+ 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02,
+ 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc,
+ 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614,
+ 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a,
+ 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,
+ 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b,
+ 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0,
+ 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060,
+ 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e,
+ 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9,
+ 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,
+ 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6}
+};
+
+//Constructor - Initialize the P and S boxes for a given Key
+BlowFish::BlowFish(unsigned char* ucKey, unsigned int keysize, const SBlock& roChain) : m_oChain0(roChain), m_oChain(roChain)
+{
+ if(keysize<1)
+ // throw exception("Incorrect key length");
+ return;
+
+
+ //Check the Key - the key length should be between 1 and 56 bytes
+ if(keysize>56)
+ keysize = 56;
+ unsigned char aucLocalKey[56];
+ unsigned int i, j;
+ kvi_fastmove(aucLocalKey, ucKey, keysize);
+ //Reflexive Initialization of the Blowfish.
+ //Generating the Subkeys from the Key flood P and S boxes with PI
+ kvi_fastmove(m_auiP, scm_auiInitP, sizeof(m_auiP));
+ kvi_fastmove(m_auiS, scm_auiInitS, sizeof(m_auiS));
+ //Load P boxes with key bytes
+ const unsigned char* p = aucLocalKey;
+ unsigned int x=0;
+ //Repeatedly cycle through the key bits until the entire P array has been XORed with key bits
+ int iCount = 0;
+ for(i=0; i<18; i++)
+ {
+ x=0;
+ for(int n=4; n--; )
+ {
+ x <<= 8;
+ x |= *(p++);
+ iCount++;
+ if(iCount == ((int)keysize))
+ {
+ //All bytes used, so recycle bytes
+ iCount = 0;
+ p = aucLocalKey;
+ }
+ }
+ m_auiP[i] ^= x;
+ }
+ //Reflect P and S boxes through the evolving Blowfish
+ SBlock block(0UL,0UL); //all-zero block
+ for(i=0; i<18; )
+ Encrypt(block), m_auiP[i++] = block.m_uil, m_auiP[i++] = block.m_uir;
+ for(j=0; j<4; j++)
+ for(int k=0; k<256; )
+ Encrypt(block), m_auiS[j][k++] = block.m_uil, m_auiS[j][k++] = block.m_uir;
+}
+
+//Sixteen Round Encipher of Block
+void BlowFish::Encrypt(SBlock& block)
+{
+ unsigned int uiLeft = block.m_uil;
+ unsigned int uiRight = block.m_uir;
+ uiLeft ^= m_auiP[0];
+ uiRight ^= F(uiLeft)^m_auiP[1]; uiLeft ^= F(uiRight)^m_auiP[2];
+ uiRight ^= F(uiLeft)^m_auiP[3]; uiLeft ^= F(uiRight)^m_auiP[4];
+ uiRight ^= F(uiLeft)^m_auiP[5]; uiLeft ^= F(uiRight)^m_auiP[6];
+ uiRight ^= F(uiLeft)^m_auiP[7]; uiLeft ^= F(uiRight)^m_auiP[8];
+ uiRight ^= F(uiLeft)^m_auiP[9]; uiLeft ^= F(uiRight)^m_auiP[10];
+ uiRight ^= F(uiLeft)^m_auiP[11]; uiLeft ^= F(uiRight)^m_auiP[12];
+ uiRight ^= F(uiLeft)^m_auiP[13]; uiLeft ^= F(uiRight)^m_auiP[14];
+ uiRight ^= F(uiLeft)^m_auiP[15]; uiLeft ^= F(uiRight)^m_auiP[16];
+ uiRight ^= m_auiP[17];
+ block.m_uil = uiRight;
+ block.m_uir = uiLeft;
+}
+
+//Sixteen Round Decipher of SBlock
+void BlowFish::Decrypt(SBlock& block)
+{
+ unsigned int uiLeft = block.m_uil;
+ unsigned int uiRight = block.m_uir;
+ uiLeft ^= m_auiP[17];
+ uiRight ^= F(uiLeft)^m_auiP[16]; uiLeft ^= F(uiRight)^m_auiP[15];
+ uiRight ^= F(uiLeft)^m_auiP[14]; uiLeft ^= F(uiRight)^m_auiP[13];
+ uiRight ^= F(uiLeft)^m_auiP[12]; uiLeft ^= F(uiRight)^m_auiP[11];
+ uiRight ^= F(uiLeft)^m_auiP[10]; uiLeft ^= F(uiRight)^m_auiP[9];
+ uiRight ^= F(uiLeft)^m_auiP[8]; uiLeft ^= F(uiRight)^m_auiP[7];
+ uiRight ^= F(uiLeft)^m_auiP[6]; uiLeft ^= F(uiRight)^m_auiP[5];
+ uiRight ^= F(uiLeft)^m_auiP[4]; uiLeft ^= F(uiRight)^m_auiP[3];
+ uiRight ^= F(uiLeft)^m_auiP[2]; uiLeft ^= F(uiRight)^m_auiP[1];
+ uiRight ^= m_auiP[0];
+ block.m_uil = uiRight;
+ block.m_uir = uiLeft;
+}
+
+//Semi-Portable Byte Shuffling
+inline void BytesToBlock(unsigned char const* p, SBlock& b)
+{
+ unsigned int y;
+ //Left
+ b.m_uil = 0;
+ y = *p++;
+ y <<= 24;
+ b.m_uil |= y;
+ y = *p++;
+ y <<= 16;
+ b.m_uil |= y;
+ y = *p++;
+ y <<= 8;
+ b.m_uil |= y;
+ y = *p++;
+ b.m_uil |= y;
+ //Right
+ b.m_uir = 0;
+ y = *p++;
+ y <<= 24;
+ b.m_uir |= y;
+ y = *p++;
+ y <<= 16;
+ b.m_uir |= y;
+ y = *p++;
+ y <<= 8;
+ b.m_uir |= y;
+ y = *p++;
+ b.m_uir |= y;
+}
+
+inline void BlockToBytes(SBlock const& b, unsigned char* p)
+{
+ unsigned int y;
+ //Right
+ y = b.m_uir;
+ *--p = Byte(y);
+ y = b.m_uir >> 8;
+ *--p = Byte(y);
+ y = b.m_uir >> 16;
+ *--p = Byte(y);
+ y = b.m_uir >> 24;
+ *--p = Byte(y);
+ //Left
+ y = b.m_uil;
+ *--p = Byte(y);
+ y = b.m_uil >> 8;
+ *--p = Byte(y);
+ y = b.m_uil >> 16;
+ *--p = Byte(y);
+ y = b.m_uil >> 24;
+ *--p = Byte(y);
+}
+
+//Encrypt Buffer in Place
+//Returns false if n is multiple of 8
+void BlowFish::Encrypt(unsigned char* buf, unsigned int n, int iMode)
+{
+ //Check the buffer's length - should be > 0 and multiple of 8
+ if((n==0)||(n%8!=0))
+ //throw exception("Incorrect buffer length");
+ return;
+
+ SBlock work;
+ if(iMode == CBC) //CBC mode, using the Chain
+ {
+ SBlock chain(m_oChain);
+ for(; n >= 8; n -= 8)
+ {
+ BytesToBlock(buf, work);
+ work ^= chain;
+ Encrypt(work);
+ chain = work;
+ BlockToBytes(work, buf+=8);
+ }
+ }
+ else if(iMode == CFB) //CFB mode, using the Chain
+ {
+ SBlock chain(m_oChain);
+ for(; n >= 8; n -= 8)
+ {
+ Encrypt(chain);
+ BytesToBlock(buf, work);
+ work ^= chain;
+ chain = work;
+ BlockToBytes(work, buf+=8);
+ }
+ }
+ else //ECB mode, not using the Chain
+ {
+ for(; n >= 8; n -= 8)
+ {
+ BytesToBlock(buf, work);
+ Encrypt(work);
+ BlockToBytes(work, buf+=8);
+ }
+ }
+}
+
+//Decrypt Buffer in Place
+//Returns false if n is multiple of 8
+void BlowFish::Decrypt(unsigned char* buf, unsigned int n, int iMode)
+{
+ //Check the buffer's length - should be > 0 and multiple of 8
+ if((n==0)||(n%8!=0))
+ //throw exception("Incorrect buffer length");
+ return;
+
+ SBlock work;
+ if(iMode == CBC) //CBC mode, using the Chain
+ {
+ SBlock crypt, chain(m_oChain);
+ for(; n >= 8; n -= 8)
+ {
+ BytesToBlock(buf, work);
+ crypt = work;
+ Decrypt(work);
+ work ^= chain;
+ chain = crypt;
+ BlockToBytes(work, buf+=8);
+ }
+ }
+ else if(iMode == CFB) //CFB mode, using the Chain, not using Decrypt()
+ {
+ SBlock crypt, chain(m_oChain);
+ for(; n >= 8; n -= 8)
+ {
+ BytesToBlock(buf, work);
+ Encrypt(chain);
+ crypt = work;
+ work ^= chain;
+ chain = crypt;
+ BlockToBytes(work, buf+=8);
+ }
+ }
+ else //ECB mode, not using the Chain
+ {
+ for(; n >= 8; n -= 8)
+ {
+ BytesToBlock(buf, work);
+ Decrypt(work);
+ BlockToBytes(work, buf+=8);
+ }
+ }
+}
+
+//Encrypt from Input Buffer to Output Buffer
+//Returns false if n is multiple of 8
+void BlowFish::Encrypt(const unsigned char* in, unsigned char* out, unsigned int n, int iMode)
+{
+ //Check the buffer's length - should be > 0 and multiple of 8
+ if((n==0)||(n%8!=0))
+ //throw exception("Incorrect buffer length");
+ return;
+
+ SBlock work;
+ if(iMode == CBC) //CBC mode, using the Chain
+ {
+ SBlock chain(m_oChain);
+ for(; n >= 8; n -= 8, in += 8)
+ {
+ BytesToBlock(in, work);
+ work ^= chain;
+ Encrypt(work);
+ chain = work;
+ BlockToBytes(work, out+=8);
+ }
+ }
+ else if(iMode == CFB) //CFB mode, using the Chain
+ {
+ SBlock chain(m_oChain);
+ for(; n >= 8; n -= 8, in += 8)
+ {
+ Encrypt(chain);
+ BytesToBlock(in, work);
+ work ^= chain;
+ chain = work;
+ BlockToBytes(work, out+=8);
+ }
+ }
+ else //ECB mode, not using the Chain
+ {
+ for(; n >= 8; n -= 8, in += 8)
+ {
+ BytesToBlock(in, work);
+ Encrypt(work);
+ BlockToBytes(work, out+=8);
+ }
+ }
+}
+
+//Decrypt from Input Buffer to Output Buffer
+//Returns false if n is multiple of 8
+void BlowFish::Decrypt(const unsigned char* in, unsigned char* out, unsigned int n, int iMode)
+{
+ //Check the buffer's length - should be > 0 and multiple of 8
+ if((n==0)||(n%8!=0))
+ //throw exception("Incorrect buffer length");
+ return;
+
+ SBlock work;
+ if(iMode == CBC) //CBC mode, using the Chain
+ {
+ SBlock crypt, chain(m_oChain);
+ for(; n >= 8; n -= 8, in += 8)
+ {
+ BytesToBlock(in, work);
+ crypt = work;
+ Decrypt(work);
+ work ^= chain;
+ chain = crypt;
+ BlockToBytes(work, out+=8);
+ }
+ }
+ else if(iMode == CFB) //CFB mode, using the Chain, not using Decrypt()
+ {
+ SBlock crypt, chain(m_oChain);
+ for(; n >= 8; n -= 8, in += 8)
+ {
+ BytesToBlock(in, work);
+ Encrypt(chain);
+ crypt = work;
+ work ^= chain;
+ chain = crypt;
+ BlockToBytes(work, out+=8);
+ }
+ }
+ else //ECB mode, not using the Chain
+ {
+ for(; n >= 8; n -= 8, in += 8)
+ {
+ BytesToBlock(in, work);
+ Decrypt(work);
+ BlockToBytes(work, out+=8);
+ }
+ }
+}
+
+#endif //COMPILE_CRYPT_SUPPORT
diff --git a/src/modules/rijndael/ablowfish.h b/src/modules/rijndael/ablowfish.h
new file mode 100644
index 00000000..862477dc
--- /dev/null
+++ b/src/modules/rijndael/ablowfish.h
@@ -0,0 +1,141 @@
+#ifndef _BLOWFISH_H_
+#define _BLOWFISH_H_
+//=============================================================================
+//
+// File : ablowfish.h
+// Creation date : Wed Jan 13 2005 02:04:10 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+//
+// This code is adapted from the MircCryption engine suite by Dark Raichu
+// Original comments follow.
+//
+
+//---------------------------------------------------------------------------
+// The implementation of blowfish for CBC mode is from
+// http://www.thecodeproject.com/cpp/blowfish.asp by George Anescu
+// I removed exception handling, so it is callers responsibility to insure
+// that strings are length multiples of 8 bytes
+// -mouser 1/08/05
+//---------------------------------------------------------------------------
+
+
+//
+// BLOWFISH ENCRYPTION ALGORITHM
+//
+// Implementation of Bruce Schneier's BLOWFISH algorithm from "Applied
+// Cryptography", Second Edition.
+//
+// Encryption and Decryption of Byte Strings using the Blowfish Encryption Algorithm.
+// Blowfish is a block cipher that encrypts data in 8-byte blocks. The algorithm consists
+// of two parts: a key-expansion part and a data-ancryption part. Key expansion converts a
+// variable key of at least 1 and at most 56 bytes into several subkey arrays totaling
+// 4168 bytes. Blowfish has 16 rounds. Each round consists of a key-dependent permutation,
+// and a key and data-dependent substitution. All operations are XORs and additions on 32-bit words.
+// The only additional operations are four indexed array data lookups per round.
+// Blowfish uses a large number of subkeys. These keys must be precomputed before any data
+// encryption or decryption. The P-array consists of 18 32-bit subkeys: P0, P1,...,P17.
+// There are also four 32-bit S-boxes with 256 entries each: S0,0, S0,1,...,S0,255;
+// S1,0, S1,1,...,S1,255; S2,0, S2,1,...,S2,255; S3,0, S3,1,...,S3,255;
+//
+// The Electronic Code Book (ECB), Cipher Block Chaining (CBC) and Cipher Feedback modes
+// are used:
+//
+// In ECB mode if the same block is encrypted twice with the same key, the resulting
+// ciphertext blocks are the same.
+//
+// In CBC Mode a ciphertext block is obtained by first xoring the
+// plaintext block with the previous ciphertext block, and encrypting the resulting value.
+//
+// In CFB mode a ciphertext block is obtained by encrypting the previous ciphertext block
+// and xoring the resulting value with the plaintext
+//
+// The previous ciphertext block is usually stored in an Initialization Vector (IV).
+// An Initialization Vector of zero is commonly used for the first block, though other
+// arrangements are also in use.
+//
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_CRYPT_SUPPORT
+
+
+//Block Structure
+struct SBlock
+{
+ //Constructors
+ SBlock(unsigned int l=0, unsigned int r=0) : m_uil(l), m_uir(r) {}
+ //Copy Constructor
+ SBlock(const SBlock& roBlock) : m_uil(roBlock.m_uil), m_uir(roBlock.m_uir) {}
+ SBlock& operator^=(SBlock& b) { m_uil ^= b.m_uil; m_uir ^= b.m_uir; return *this; }
+ unsigned int m_uil, m_uir;
+};
+
+class BlowFish
+{
+public:
+ enum { ECB=0, CBC=1, CFB=2 };
+
+ //Constructor - Initialize the P and S boxes for a given Key
+ BlowFish(unsigned char* ucKey, unsigned int n, const SBlock& roChain = SBlock(0UL,0UL));
+
+ //Resetting the chaining block
+ void ResetChain() { m_oChain = m_oChain0; }
+
+ // Encrypt/Decrypt Buffer in Place
+ void Encrypt(unsigned char* buf, unsigned int n, int iMode=ECB);
+ void Decrypt(unsigned char* buf, unsigned int n, int iMode=ECB);
+
+ // Encrypt/Decrypt from Input Buffer to Output Buffer
+ void Encrypt(const unsigned char* in, unsigned char* out, unsigned int n, int iMode=ECB);
+ void Decrypt(const unsigned char* in, unsigned char* out, unsigned int n, int iMode=ECB);
+
+//Private Functions
+private:
+ unsigned int F(unsigned int ui);
+ void Encrypt(SBlock&);
+ void Decrypt(SBlock&);
+
+private:
+ //The Initialization Vector, by default {0, 0}
+ SBlock m_oChain0;
+ SBlock m_oChain;
+ unsigned int m_auiP[18];
+ unsigned int m_auiS[4][256];
+ static const unsigned int scm_auiInitP[18];
+ static const unsigned int scm_auiInitS[4][256];
+};
+
+//Extract low order byte
+inline unsigned char Byte(unsigned int ui)
+{
+ return (unsigned char)(ui & 0xff);
+}
+
+//Function F
+inline unsigned int BlowFish::F(unsigned int ui)
+{
+ return ((m_auiS[0][Byte(ui>>24)] + m_auiS[1][Byte(ui>>16)]) ^ m_auiS[2][Byte(ui>>8)]) + m_auiS[3][Byte(ui)];
+}
+
+#endif //COMPILE_CRYPT_SUPPORT
+
+#endif //!_BLOWFISH_H_
diff --git a/src/modules/rijndael/caps/Makefile.am b/src/modules/rijndael/caps/Makefile.am
new file mode 100644
index 00000000..663f77a8
--- /dev/null
+++ b/src/modules/rijndael/caps/Makefile.am
@@ -0,0 +1,9 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+tmpdir = $(pluglibdir)/caps/crypt/
+
+tmp_DATA= rijndael
+
+EXTRA_DIST = $(tmp_DATA)
diff --git a/src/modules/rijndael/caps/rijndael b/src/modules/rijndael/caps/rijndael
new file mode 100644
index 00000000..9788f702
--- /dev/null
+++ b/src/modules/rijndael/caps/rijndael
@@ -0,0 +1 @@
+timestamp
diff --git a/src/modules/rijndael/libkvirijndael.cpp b/src/modules/rijndael/libkvirijndael.cpp
new file mode 100644
index 00000000..0a678437
--- /dev/null
+++ b/src/modules/rijndael/libkvirijndael.cpp
@@ -0,0 +1,853 @@
+//
+// File : libkvirijndael.cpp
+// Creation date : Sat Now 4 2000 15:33:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Till Bush ([email protected])
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "libkvirijndael.h"
+
+#include "rijndael.h"
+
+#include "kvi_module.h"
+#include "kvi_debug.h"
+#include "kvi_locale.h"
+
+#include "kvi_mirccntrl.h"
+#include "kvi_time.h"
+
+//#warning "Other engines: mircStrip koi2win colorizer lamerizer etc.."
+
+/*
+ @doc: rijndael
+ @type:
+ module
+ @short:
+ The Rijndael cryptographic engines
+ @title:
+ The rijndael module
+ @body:
+ The rijndael module exports six [doc:crypt_engines]cryptographic engines[/doc] based
+ on the Advanced Encryptiong Standard algorithm called Rijndael. Rijndael was
+ originally written by Joan Daemen and Vincent Rijmen. The original Rijndael
+ description is available at http://www.esat.kuleuven.ac.be/~rijmen/rijndael/.[br]
+ It is a private key block cipher that has been designed to replace
+ the widely used DES, and it should provide at leas a decent security agains
+ common attacks. Theoretically the best attack that one can perform on this cipher
+ is the "brute force" attack that requires a really massive parallel computation:
+ actually out of the possibilities of a common "hacker".[br]
+ My implementation allows the usage of 128, 192 and 256 bit keys
+ on 128 bit data blocks. The encrypted binary data buffer is then converted
+ into an ascii-string by using the base64 conversion or hex-digit-string rappresentation.
+ The six engines are the six possible combinations of the key lengths and ascii-string
+ conversions.
+*/
+
+
+
+#ifdef COMPILE_CRYPT_SUPPORT
+
+ #include "kvi_memmove.h"
+ #include "kvi_malloc.h"
+
+ #include "kvi_pointerlist.h"
+
+ static KviPointerList<KviCryptEngine> * g_pEngineList = 0;
+
+
+
+
+ KviRijndaelEngine::KviRijndaelEngine()
+ : KviCryptEngine()
+ {
+ g_pEngineList->append(this);
+ m_pEncryptCipher = 0;
+ m_pDecryptCipher = 0;
+ }
+
+ KviRijndaelEngine::~KviRijndaelEngine()
+ {
+ g_pEngineList->removeRef(this);
+ if(m_pEncryptCipher)delete m_pEncryptCipher;
+ if(m_pDecryptCipher)delete m_pDecryptCipher;
+ }
+
+ bool KviRijndaelEngine::init(const char *encKey,int encKeyLen,const char *decKey,int decKeyLen)
+ {
+ if(m_pEncryptCipher)
+ {
+ delete m_pEncryptCipher;
+ m_pEncryptCipher = 0;
+ }
+ if(m_pDecryptCipher)
+ {
+ delete m_pDecryptCipher;
+ m_pDecryptCipher = 0;
+ }
+
+ if(encKey && (encKeyLen > 0))
+ {
+ if(!(decKey && (decKeyLen > 0)))
+ {
+ decKey = encKey;
+ decKeyLen = encKeyLen;
+ } // else all
+ } else {
+ // no encrypt key specified...
+ if(decKey && decKeyLen)
+ {
+ encKey = decKey;
+ encKeyLen = decKeyLen;
+ } else {
+ // both keys missing
+ setLastError(__tr("Missing both encrypt and decrypt key: at least one is needed"));
+ return false;
+ }
+ }
+
+ int defLen = getKeyLen();
+
+ char * encryptKey = (char *)kvi_malloc(defLen);
+ char * decryptKey = (char *)kvi_malloc(defLen);
+
+ if(encKeyLen > defLen)encKeyLen = defLen;
+ kvi_memmove(encryptKey,encKey,encKeyLen);
+ if(encKeyLen < defLen)kvi_memset(encryptKey + encKeyLen,'0',defLen - encKeyLen);
+
+ if(decKeyLen > defLen)decKeyLen = defLen;
+ kvi_memmove(decryptKey,decKey,decKeyLen);
+ if(decKeyLen < defLen)kvi_memset(decryptKey + decKeyLen,'0',defLen - decKeyLen);
+
+ m_pEncryptCipher = new Rijndael();
+ int retVal = m_pEncryptCipher->init(Rijndael::CBC,Rijndael::Encrypt,(unsigned char *)encryptKey,getKeyLenId());
+ kvi_free(encryptKey);
+ if(retVal != RIJNDAEL_SUCCESS)
+ {
+ kvi_free(decryptKey);
+ delete m_pEncryptCipher;
+ m_pEncryptCipher = 0;
+ setLastErrorFromRijndaelErrorCode(retVal);
+ return false;
+ }
+
+ m_pDecryptCipher = new Rijndael();
+ retVal = m_pDecryptCipher->init(Rijndael::CBC,Rijndael::Decrypt,(unsigned char *)decryptKey,getKeyLenId());
+ kvi_free(decryptKey);
+ if(retVal != RIJNDAEL_SUCCESS)
+ {
+ delete m_pEncryptCipher;
+ m_pEncryptCipher = 0;
+ delete m_pDecryptCipher;
+ m_pDecryptCipher = 0;
+ setLastErrorFromRijndaelErrorCode(retVal);
+ return false;
+ }
+
+ return true;
+ }
+
+ void KviRijndaelEngine::setLastErrorFromRijndaelErrorCode(int errCode)
+ {
+ switch(errCode)
+ {
+ case RIJNDAEL_SUCCESS: setLastError(__tr("Error 0: Success ?")); break;
+ case RIJNDAEL_UNSUPPORTED_MODE: setLastError(__tr("Unsupported crypt mode")); break;
+ case RIJNDAEL_UNSUPPORTED_DIRECTION: setLastError(__tr("Unsupported direction")); break;
+ case RIJNDAEL_UNSUPPORTED_KEY_LENGTH: setLastError(__tr("Unsupported key length")); break;
+ case RIJNDAEL_BAD_KEY: setLastError(__tr("Bad key data")); break;
+ case RIJNDAEL_NOT_INITIALIZED: setLastError(__tr("Engine not initialized")); break;
+ case RIJNDAEL_BAD_DIRECTION: setLastError(__tr("Invalid direction for this engine")); break;
+ case RIJNDAEL_CORRUPTED_DATA: setLastError(__tr("Corrupted message data or invalid decrypt key")); break;
+ default: setLastError(__tr("Unknown error")); break;
+ }
+ }
+
+ KviCryptEngine::EncryptResult KviRijndaelEngine::encrypt(const char * plainText,KviStr &outBuffer)
+ {
+ if(!m_pEncryptCipher)
+ {
+ setLastError(__tr("Ops...encrypt cipher not initialized"));
+ return KviCryptEngine::EncryptError;
+ }
+ int len = (int)kvi_strLen(plainText);
+ char * buf = (char *)kvi_malloc(len + 16);
+
+ int retVal = m_pEncryptCipher->padEncrypt((const unsigned char *)plainText,len,(unsigned char *)buf);
+ if(retVal < 0)
+ {
+ kvi_free(buf);
+ setLastErrorFromRijndaelErrorCode(retVal);
+ return KviCryptEngine::EncryptError;
+ }
+
+ if(!binaryToAscii(buf,retVal,outBuffer))
+ {
+ kvi_free(buf);
+ return KviCryptEngine::EncryptError;
+ }
+ kvi_free(buf);
+
+ if(outBuffer.len() > maxEncryptLen())
+ {
+ if(maxEncryptLen() > 0)
+ {
+ setLastError(__tr("Data buffer too long"));
+ return KviCryptEngine::EncryptError;
+ }
+ }
+ outBuffer.prepend(KVI_TEXT_CRYPTESCAPE);
+ return KviCryptEngine::Encrypted;
+ }
+
+ KviCryptEngine::DecryptResult KviRijndaelEngine::decrypt(const char * inBuffer,KviStr &plainText)
+ {
+ if(!m_pDecryptCipher)
+ {
+ setLastError(__tr("Ops...decrypt cipher not initialized"));
+ return KviCryptEngine::DecryptError;
+ }
+
+ if(*inBuffer != KVI_TEXT_CRYPTESCAPE)
+ {
+ plainText = inBuffer;
+ return KviCryptEngine::DecryptOkWasPlainText;
+ }
+
+ inBuffer++;
+
+ if(!*inBuffer)
+ {
+ plainText = inBuffer;
+ return KviCryptEngine::DecryptOkWasPlainText; // empty buffer
+ }
+
+ int len;
+ char * binary;
+
+ if(!asciiToBinary(inBuffer,&len,&binary))return KviCryptEngine::DecryptError;
+
+ char * buf = (char *)kvi_malloc(len + 1);
+
+ int retVal = m_pDecryptCipher->padDecrypt((const unsigned char *)binary,len,(unsigned char *)buf);
+ kvi_free(binary);
+
+ if(retVal < 0)
+ {
+ kvi_free(buf);
+ setLastErrorFromRijndaelErrorCode(retVal);
+ return KviCryptEngine::DecryptError;
+ }
+
+ buf[retVal] = '\0';
+
+ plainText = buf;
+
+ kvi_free(buf);
+ return KviCryptEngine::DecryptOkWasEncrypted;
+ }
+
+ bool KviRijndaelHexEngine::binaryToAscii(const char * inBuffer,int len,KviStr &outBuffer)
+ {
+ outBuffer.bufferToHex(inBuffer,len);
+ return true;
+ }
+
+ bool KviRijndaelHexEngine::asciiToBinary(const char * inBuffer,int * len,char ** outBuffer)
+ {
+ KviStr hex(inBuffer);
+ char * tmpBuf;
+ *len = hex.hexToBuffer(&tmpBuf,false);
+ if(*len < 0)
+ {
+ setLastError(__tr("The message is not a hexadecimal string: this is not my stuff"));
+ return false;
+ } else {
+ if(len > 0)
+ {
+ *outBuffer = (char *)kvi_malloc(*len);
+ kvi_memmove(*outBuffer,tmpBuf,*len);
+ KviStr::freeBuffer(tmpBuf);
+ }
+ }
+ return true;
+ }
+
+ bool KviRijndaelBase64Engine::binaryToAscii(const char * inBuffer,int len,KviStr &outBuffer)
+ {
+ outBuffer.bufferToBase64(inBuffer,len);
+ return true;
+ }
+
+ bool KviRijndaelBase64Engine::asciiToBinary(const char * inBuffer,int * len,char ** outBuffer)
+ {
+ KviStr base64(inBuffer);
+ char * tmpBuf;
+ *len = base64.base64ToBuffer(&tmpBuf,false);
+ if(*len < 0)
+ {
+ setLastError(__tr("The message is not a base64 string: this is not my stuff"));
+ return false;
+ } else {
+ if(len > 0)
+ {
+ *outBuffer = (char *)kvi_malloc(*len);
+ kvi_memmove(*outBuffer,tmpBuf,*len);
+ KviStr::freeBuffer(tmpBuf);
+ }
+ }
+ return true;
+ }
+
+ static KviCryptEngine * allocRijndael128HexEngine()
+ {
+ return new KviRijndael128HexEngine();
+ }
+
+ static KviCryptEngine * allocRijndael192HexEngine()
+ {
+ return new KviRijndael192HexEngine();
+ }
+
+ static KviCryptEngine * allocRijndael256HexEngine()
+ {
+ return new KviRijndael256HexEngine();
+ }
+
+ static KviCryptEngine * allocRijndael128Base64Engine()
+ {
+ return new KviRijndael128Base64Engine();
+ }
+
+ static KviCryptEngine * allocRijndael192Base64Engine()
+ {
+ return new KviRijndael192Base64Engine();
+ }
+
+ static KviCryptEngine * allocRijndael256Base64Engine()
+ {
+ return new KviRijndael256Base64Engine();
+ }
+
+ static void deallocRijndaelCryptEngine(KviCryptEngine * e)
+ {
+ delete e;
+ }
+
+
+
+
+
+ // Mircryption stuff
+
+ #include "ablowfish.h"
+
+ KviMircryptionEngine::KviMircryptionEngine()
+ : KviCryptEngine()
+ {
+ g_pEngineList->append(this);
+ }
+
+ KviMircryptionEngine::~KviMircryptionEngine()
+ {
+ g_pEngineList->removeRef(this);
+ }
+
+ bool KviMircryptionEngine::init(const char * encKey,int encKeyLen,const char * decKey,int decKeyLen)
+ {
+ if(encKey && (encKeyLen > 0))
+ {
+ if(!(decKey && (decKeyLen > 0)))
+ {
+ decKey = encKey;
+ decKeyLen = encKeyLen;
+ } // else all
+ } else {
+ // no encrypt key specified...
+ if(decKey && decKeyLen)
+ {
+ encKey = decKey;
+ encKeyLen = decKeyLen;
+ } else {
+ // both keys missing
+ setLastError(__tr("Missing both encrypt and decrypt key: at least one is needed"));
+ return false;
+ }
+ }
+ m_szEncryptKey = KviStr(encKey,encKeyLen);
+ m_szDecryptKey = KviStr(decKey,decKeyLen);
+ if(kvi_strEqualCIN("cbc:",m_szEncryptKey.ptr(),4) && (m_szEncryptKey.len() > 4))
+ m_szEncryptKey.cutLeft(4);
+ else
+ m_bEncryptCBC = false;
+ if(kvi_strEqualCIN("cbc:",m_szDecryptKey.ptr(),4) && (m_szDecryptKey.len() > 4))
+ m_szDecryptKey.cutLeft(4);
+ else
+ m_bDecryptCBC = false;
+ return true;
+ }
+
+ KviCryptEngine::EncryptResult KviMircryptionEngine::encrypt(const char * plainText,KviStr &outBuffer)
+ {
+ KviStr szPlain = plainText;
+ outBuffer = "";
+ if(m_bEncryptCBC)
+ {
+ if(!doEncryptCBC(szPlain,outBuffer))return KviCryptEngine::EncryptError;
+ } else {
+ if(!doEncryptECB(szPlain,outBuffer))return KviCryptEngine::EncryptError;
+ }
+ outBuffer.prepend("+OK ");
+
+ if(outBuffer.len() > maxEncryptLen())
+ {
+ if(maxEncryptLen() > 0)
+ {
+ setLastError(__tr("Data buffer too long"));
+ return KviCryptEngine::EncryptError;
+ }
+ }
+
+ //outBuffer = MCPS2_STARTTAG;
+ //outBuffer += MCPS2_ENDTAG;
+ return KviCryptEngine::Encrypted;
+ }
+
+ KviCryptEngine::DecryptResult KviMircryptionEngine::decrypt(const char * inBuffer,KviStr &plainText)
+ {
+ plainText = "";
+ KviStr szIn = inBuffer;
+ // various old versions
+ if(kvi_strEqualCSN(inBuffer,"mcps ",5))
+ szIn.cutLeft(5);
+ else if(kvi_strEqualCSN(inBuffer,"+OK ",4))
+ szIn.cutLeft(4);
+ else {
+ plainText = szIn;
+ return KviCryptEngine::DecryptOkWasPlainText;
+ }
+
+ if(m_bDecryptCBC)return doDecryptCBC(szIn,plainText) ? KviCryptEngine::DecryptOkWasEncrypted : KviCryptEngine::DecryptError;
+ return doDecryptECB(szIn,plainText) ? KviCryptEngine::DecryptOkWasEncrypted : KviCryptEngine::DecryptError;
+
+ /*
+ int len1 = kvi_strLen(MCPS2_STARTTAG);
+ int len2 = kvi_strLen(MCPS2_ENDTAG);
+ while(szIn.len() > 0)
+ {
+ int idx = szIn.findFirstIdx(MCPS2_STARTTAG);
+ if(idx == -1)
+ {
+ // no more encrypted stuff
+ plainText += szIn;
+ return true;
+ }
+ if(idx > 0) // a non encrypted block
+ plainText += szIn.left(idx);
+ szIn.cutLeft(idx + len1);
+
+ idx = szIn.findFirstIdx(MCPS2_ENDTAG);
+ if(idx != -1)
+ {
+ KviStr toDecrypt = szIn.left(idx);
+ if(!doDecrypt(toDecrypt,plainText))return false;
+ }
+ szIn.cutLeft(idx + len2);
+ }
+ */
+ }
+
+ static unsigned char fake_base64[]="./0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
+
+ unsigned int fake_base64dec(unsigned char c)
+ {
+ static char base64unmap[255];
+ static bool didinit=false;
+ int i;
+
+ if(!didinit)
+ {
+ // initialize base64unmap
+ for (i=0;i<255;++i)base64unmap[i]=0;
+ for (i=0;i<64;++i)base64unmap[fake_base64[i]]=i;
+ didinit=true;
+ }
+
+ return base64unmap[c];
+ }
+
+ static void byteswap_buffer(unsigned char * p,int len)
+ {
+ while(len > 0)
+ {
+ unsigned char aux = p[0];
+ p[0] = p[3];
+ p[3] = aux;
+ aux = p[1];
+ p[1] = p[2];
+ p[2] = aux;
+ p += 4;
+ len -= 4;
+ }
+ }
+
+ bool KviMircryptionEngine::doEncryptECB(KviStr &plain,KviStr &encoded)
+ {
+ // make sure it is a multiple of 8 bytes (eventually pad with zeroes)
+ if(plain.len() % 8)
+ {
+ int oldL = plain.len();
+ plain.setLength(plain.len() + (8 - (plain.len() % 8)));
+ char * padB = plain.ptr() + oldL;
+ char * padE = plain.ptr() + plain.len();
+ while(padB < padE)*padB++ = 0;
+ }
+
+ //byteswap_buffer((unsigned char *)plain.ptr(),plain.len());
+
+ unsigned char * out =(unsigned char *)kvi_malloc(plain.len()); // we use this to avoid endiannes problems
+
+ BlowFish bf((unsigned char *)m_szEncryptKey.ptr(),m_szEncryptKey.len());
+ bf.ResetChain();
+ bf.Encrypt((unsigned char *)plain.ptr(),out,plain.len(),BlowFish::ECB);
+
+ // FIXME: this is probably needed only on LittleEndian machines!
+ byteswap_buffer((unsigned char *)out,plain.len());
+
+ // da uglybase64 encoding
+ unsigned char * outb = out;
+ unsigned char * oute = out + plain.len();
+
+ int ll = (plain.len() * 3) / 2;
+ encoded.setLength(ll);
+
+ unsigned char * p = (unsigned char *)encoded.ptr();
+ while(outb < oute)
+ {
+ Q_UINT32 * dd1 = (Q_UINT32 *)outb;
+ outb += 4;
+ Q_UINT32 * dd2 = (Q_UINT32 *)outb;
+ outb += 4;
+ *p++ = fake_base64[*dd2 & 0x3f]; *dd2 >>= 6;
+ *p++ = fake_base64[*dd2 & 0x3f]; *dd2 >>= 6;
+ *p++ = fake_base64[*dd2 & 0x3f]; *dd2 >>= 6;
+ *p++ = fake_base64[*dd2 & 0x3f]; *dd2 >>= 6;
+ *p++ = fake_base64[*dd2 & 0x3f]; *dd2 >>= 6;
+ *p++ = fake_base64[*dd2 & 0x3f];
+
+ *p++ = fake_base64[*dd1 & 0x3f]; *dd1 >>= 6;
+ *p++ = fake_base64[*dd1 & 0x3f]; *dd1 >>= 6;
+ *p++ = fake_base64[*dd1 & 0x3f]; *dd1 >>= 6;
+ *p++ = fake_base64[*dd1 & 0x3f]; *dd1 >>= 6;
+ *p++ = fake_base64[*dd1 & 0x3f]; *dd1 >>= 6;
+ *p++ = fake_base64[*dd1 & 0x3f];
+ }
+
+ kvi_free(out);
+ return true;
+ }
+
+ bool KviMircryptionEngine::doDecryptECB(KviStr &encoded,KviStr &plain)
+ {
+ // encoded is in this strange base64...
+ // make sure its length is multiple of 12 (eventually pad with zeroes)
+ if(encoded.len() % 12)
+ {
+ int oldL = encoded.len();
+ encoded.setLength(encoded.len() + (12 - (encoded.len() % 12)));
+ char * padB = encoded.ptr() + oldL;
+ char * padE = encoded.ptr() + encoded.len();
+ while(padB < padE)*padB++ = 0;
+ }
+
+ // a fake base64 decoding algo, use a different character set
+ // and stuff 6 bytes at a time into a 32 bit long...
+ int ll = (encoded.len() * 2) / 3;
+
+ unsigned char * buf = (unsigned char *)kvi_malloc(ll);
+ unsigned char * p = (unsigned char *)encoded.ptr();
+ unsigned char * e = p + encoded.len();
+ int i;
+ unsigned char * bufp = buf;
+ while(p < e)
+ {
+ Q_UINT32 * dw1 = (Q_UINT32 *)bufp;
+ bufp += 4;
+ Q_UINT32 * dw2 = (Q_UINT32 *)bufp;
+ bufp += 4;
+ *dw2 = 0;
+ for(i=0;i < 6;i++)*dw2 |= (fake_base64dec(*p++)) << (i * 6);
+ *dw1 = 0;
+ for(i=0;i < 6;i++)*dw1 |= (fake_base64dec(*p++)) << (i * 6);
+ }
+
+ // FIXME: this is probably needed only on LittleEndian machines!
+ byteswap_buffer((unsigned char *)buf,ll);
+
+ plain.setLength(ll);
+ BlowFish bf((unsigned char *)m_szDecryptKey.ptr(),m_szDecryptKey.len());
+ bf.ResetChain();
+ bf.Decrypt(buf,(unsigned char *)plain.ptr(),ll,BlowFish::ECB);
+
+ //byteswap_buffer((unsigned char *)plain.ptr(),ll);
+
+ kvi_free(buf);
+
+ return true;
+ }
+
+ bool KviMircryptionEngine::doEncryptCBC(KviStr &plain,KviStr &encoded)
+ {
+ // make sure it is a multiple of 8 bytes (eventually pad with zeroes)
+ if(plain.len() % 8)
+ {
+ int oldL = plain.len();
+ plain.setLength(plain.len() + (8 - (plain.len() % 8)));
+ char * padB = plain.ptr() + oldL;
+ char * padE = plain.ptr() + plain.len();
+ while(padB < padE)*padB++ = 0;
+ }
+
+ int ll = plain.len() + 8;
+ unsigned char * in = (unsigned char *)kvi_malloc(ll);
+
+ // choose an IV
+ static bool bDidInit = false;
+
+ int t = (int)kvi_unixTime();
+
+ if(!bDidInit)
+ {
+ srand(t);
+ bDidInit = true;
+ }
+
+ for(int i=0;i<8;i++)in[i] = (unsigned char)(rand() % 256);
+
+ kvi_fastmove(in+8,plain.ptr(),plain.len());
+
+ // encrypt
+ unsigned char * out = (unsigned char *)kvi_malloc(ll);
+ BlowFish bf((unsigned char *)m_szEncryptKey.ptr(),m_szEncryptKey.len());
+ bf.ResetChain();
+ bf.Encrypt(in,out,ll,BlowFish::CBC);
+ kvi_free(in);
+
+ encoded.bufferToBase64((const char *)out,ll);
+ kvi_free(out);
+
+ encoded.prepend('*'); // prepend the signature
+
+ return true;
+ }
+
+ bool KviMircryptionEngine::doDecryptCBC(KviStr &encoded,KviStr &plain)
+ {
+ if(*(encoded.ptr()) != '*')
+ {
+ debug("WARNING: Specified a CBC key but the incoming message doesn't seem to be a CBC one");
+ return doDecryptECB(encoded,plain);
+ }
+ encoded.cutLeft(1);
+
+ char * tmpBuf;
+ int len = encoded.base64ToBuffer(&tmpBuf,false);
+ if(len < 0)
+ {
+ setLastError(__tr("The message is not a base64 string: this is not my stuff"));
+ return false;
+ }
+ if((len < 8) || (len % 8))
+ {
+ setLastError(__tr("The message doesn't seem to be encoded with CBC Mircryption"));
+ if(len > 0)KviStr::freeBuffer(tmpBuf);
+ return false;
+ }
+
+ plain.setLength(len);
+ BlowFish bf((unsigned char *)m_szDecryptKey.ptr(),m_szDecryptKey.len());
+ bf.ResetChain();
+ bf.Decrypt((unsigned char *)tmpBuf,(unsigned char *)plain.ptr(),len,BlowFish::CBC);
+
+ // kill the first 8 bytes (random IV)
+ plain.cutLeft(8);
+
+ KviStr::freeBuffer(tmpBuf);
+
+ return true;
+ }
+
+
+ static KviCryptEngine * allocMircryptionEngine()
+ {
+ return new KviMircryptionEngine();
+ }
+
+#endif
+
+
+// =======================================
+// module routines
+// =======================================
+static bool rijndael_module_init(KviModule * m)
+{
+#ifdef COMPILE_CRYPT_SUPPORT
+ g_pEngineList = new KviPointerList<KviCryptEngine>;
+ g_pEngineList->setAutoDelete(false);
+
+ KviStr format = __tr("Cryptographic engine based on the\n" \
+ "Advanced Encryption Standard (AES)\n" \
+ "algorithm called Rijndael.\n" \
+ "The text is first encrypted with rijndael\n" \
+ "and then converted to %s notation.\n" \
+ "The keys used are %d bit long and will be padded\n" \
+ "with zeros if you provide shorter ones.\n" \
+ "If only one key is provided, this engine\n" \
+ "will use it for both encrypting and decrypting.\n" \
+ "See the rijndael module documentation\n" \
+ "for more info on the algorithm used.\n");
+
+ // FIXME: Maybe convert this repeated code to a function eh ?
+
+ KviCryptEngineDescription * d = new KviCryptEngineDescription;
+ d->szName = "Rijndael128Hex";
+ d->szAuthor = "Szymon Stefanek";
+ d->szDescription.sprintf(format.ptr(),__tr("hexadecimal"),128);
+ d->iFlags = KVI_CRYPTENGINE_CAN_ENCRYPT | KVI_CRYPTENGINE_CAN_DECRYPT |
+ KVI_CRYPTENGINE_WANT_ENCRYPT_KEY | KVI_CRYPTENGINE_WANT_DECRYPT_KEY;
+ d->allocFunc = allocRijndael128HexEngine;
+ d->deallocFunc = deallocRijndaelCryptEngine;
+ m->registerCryptEngine(d);
+
+ d = new KviCryptEngineDescription;
+ d->szName = "Rijndael192Hex";
+ d->szAuthor = "Szymon Stefanek";
+ d->szDescription.sprintf(format.ptr(),__tr("hexadecimal"),192);
+ d->iFlags = KVI_CRYPTENGINE_CAN_ENCRYPT | KVI_CRYPTENGINE_CAN_DECRYPT |
+ KVI_CRYPTENGINE_WANT_ENCRYPT_KEY | KVI_CRYPTENGINE_WANT_DECRYPT_KEY;
+ d->allocFunc = allocRijndael192HexEngine;
+ d->deallocFunc = deallocRijndaelCryptEngine;
+ m->registerCryptEngine(d);
+
+ d = new KviCryptEngineDescription;
+ d->szName = "Rijndael256Hex";
+ d->szAuthor = "Szymon Stefanek";
+ d->szDescription.sprintf(format.ptr(),__tr("hexadecimal"),256);
+ d->iFlags = KVI_CRYPTENGINE_CAN_ENCRYPT | KVI_CRYPTENGINE_CAN_DECRYPT |
+ KVI_CRYPTENGINE_WANT_ENCRYPT_KEY | KVI_CRYPTENGINE_WANT_DECRYPT_KEY;
+ d->allocFunc = allocRijndael256HexEngine;
+ d->deallocFunc = deallocRijndaelCryptEngine;
+ m->registerCryptEngine(d);
+
+ d = new KviCryptEngineDescription;
+ d->szName = "Rijndael128Base64";
+ d->szAuthor = "Szymon Stefanek";
+ d->szDescription.sprintf(format.ptr(),__tr("base64"),128);
+ d->iFlags = KVI_CRYPTENGINE_CAN_ENCRYPT | KVI_CRYPTENGINE_CAN_DECRYPT |
+ KVI_CRYPTENGINE_WANT_ENCRYPT_KEY | KVI_CRYPTENGINE_WANT_DECRYPT_KEY;
+ d->allocFunc = allocRijndael128Base64Engine;
+ d->deallocFunc = deallocRijndaelCryptEngine;
+ m->registerCryptEngine(d);
+
+ d = new KviCryptEngineDescription;
+ d->szName = "Rijndael192Base64";
+ d->szAuthor = "Szymon Stefanek";
+ d->szDescription.sprintf(format.ptr(),__tr("base64"),192);
+ d->iFlags = KVI_CRYPTENGINE_CAN_ENCRYPT | KVI_CRYPTENGINE_CAN_DECRYPT |
+ KVI_CRYPTENGINE_WANT_ENCRYPT_KEY | KVI_CRYPTENGINE_WANT_DECRYPT_KEY;
+ d->allocFunc = allocRijndael192Base64Engine;
+ d->deallocFunc = deallocRijndaelCryptEngine;
+ m->registerCryptEngine(d);
+
+ d = new KviCryptEngineDescription;
+ d->szName = "Rijndael256Base64";
+ d->szAuthor = "Szymon Stefanek";
+ d->szDescription.sprintf(format.ptr(),__tr("base64"),256);
+ d->iFlags = KVI_CRYPTENGINE_CAN_ENCRYPT | KVI_CRYPTENGINE_CAN_DECRYPT |
+ KVI_CRYPTENGINE_WANT_ENCRYPT_KEY | KVI_CRYPTENGINE_WANT_DECRYPT_KEY;
+ d->allocFunc = allocRijndael256Base64Engine;
+ d->deallocFunc = deallocRijndaelCryptEngine;
+ m->registerCryptEngine(d);
+
+
+ d = new KviCryptEngineDescription;
+ d->szName = "Mircryption";
+ d->szAuthor = "Szymon Stefanek";
+ d->szDescription = __tr("Popular cryptographic engine based on the\n" \
+ "old Blowfish encryption algorithm.\n" \
+ "The text is first encrypted with Blowfish \n" \
+ "and then converted to base64 notation.\n" \
+ "The keys used have variable length and\n" \
+ "are specified as character strings.\n" \
+ "You can specify keys long up to 56 bytes (448 bits).\n" \
+ "If only one key is provided, this engine\n" \
+ "will use it for both encrypting and decrypting.\n" \
+ "This engine works in ECB mode by default:\n" \
+ "if you want to use CBC mode you must prefix\n" \
+ "your key(s) with \"cbc:\".\n");
+ d->iFlags = KVI_CRYPTENGINE_CAN_ENCRYPT | KVI_CRYPTENGINE_CAN_DECRYPT |
+ KVI_CRYPTENGINE_WANT_ENCRYPT_KEY | KVI_CRYPTENGINE_WANT_DECRYPT_KEY;
+ d->allocFunc = allocMircryptionEngine;
+ d->deallocFunc = deallocRijndaelCryptEngine;
+ m->registerCryptEngine(d);
+
+
+ return true;
+#else
+ return false;
+#endif
+}
+
+static bool rijndael_module_cleanup(KviModule *m)
+{
+#ifdef COMPILE_CRYPT_SUPPORT
+ while(g_pEngineList->first())delete g_pEngineList->first();
+ delete g_pEngineList;
+ g_pEngineList = 0;
+ m->unregisterCryptEngines();
+ return true;
+#else
+ return false;
+#endif
+}
+
+static bool rijndael_module_can_unload(KviModule *)
+{
+#ifdef COMPILE_CRYPT_SUPPORT
+ return g_pEngineList->isEmpty();
+#else
+ return true;
+#endif
+}
+
+// =======================================
+// plugin definition structure
+// =======================================
+KVIRC_MODULE(
+ "Rijndael crypt engine",
+ "1.0.0",
+ "Szymon Stefanek <pragma at kvirc dot net>" ,
+ "Exports the rijndael crypt engine",
+ rijndael_module_init ,
+ rijndael_module_can_unload,
+ 0,
+ rijndael_module_cleanup
+)
+
+#ifdef COMPILE_CRYPT_SUPPORT
+ #include "libkvirijndael.moc"
+#endif
diff --git a/src/modules/rijndael/libkvirijndael.h b/src/modules/rijndael/libkvirijndael.h
new file mode 100644
index 00000000..900ff252
--- /dev/null
+++ b/src/modules/rijndael/libkvirijndael.h
@@ -0,0 +1,169 @@
+#ifndef _LIBKVIRIJNDAEL_H_
+#define _LIBKVIRIJNDAEL_H_
+//
+// File : libkvirijndael.h
+// Creation date : Sat Now 4 2000 15:41:41 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Till Bush ([email protected])
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_CRYPT_SUPPORT
+
+ #include "kvi_crypt.h"
+ #include "rijndael.h"
+
+ class KviRijndaelEngine : public KviCryptEngine
+ {
+ Q_OBJECT
+ public:
+ KviRijndaelEngine();
+ virtual ~KviRijndaelEngine();
+ private:
+ Rijndael * m_pEncryptCipher;
+ Rijndael * m_pDecryptCipher;
+ public:
+ virtual bool init(const char *encKey,int encKeyLen,const char *decKey,int decKeyLen);
+ virtual KviCryptEngine::EncryptResult encrypt(const char * plainText,KviStr &outBuffer);
+ virtual KviCryptEngine::DecryptResult decrypt(const char * inBuffer,KviStr &plainText);
+ protected:
+ virtual bool binaryToAscii(const char * inBuffer,int len,KviStr &outBuffer){ return false; };
+ virtual bool asciiToBinary(const char * inBuffer,int * len,char ** outBuffer){ return false; };
+ virtual int getKeyLen(){ return 32; };
+ virtual Rijndael::KeyLength getKeyLenId(){ return Rijndael::Key32Bytes; };
+ private:
+ void setLastErrorFromRijndaelErrorCode(int errCode);
+ };
+
+ class KviRijndaelHexEngine : public KviRijndaelEngine
+ {
+ Q_OBJECT
+ public:
+ KviRijndaelHexEngine() : KviRijndaelEngine() {};
+ virtual ~KviRijndaelHexEngine(){};
+ protected:
+ virtual bool binaryToAscii(const char * inBuffer,int len,KviStr &outBuffer);
+ virtual bool asciiToBinary(const char * inBuffer,int * len,char ** outBuffer);
+ };
+
+ class KviRijndael128HexEngine : public KviRijndaelHexEngine
+ {
+ Q_OBJECT
+ public:
+ KviRijndael128HexEngine() : KviRijndaelHexEngine() {};
+ virtual ~KviRijndael128HexEngine(){};
+ protected:
+ virtual int getKenLen(){ return 16; };
+ virtual Rijndael::KeyLength getKeyLenId(){ return Rijndael::Key16Bytes; };
+ };
+
+ class KviRijndael192HexEngine : public KviRijndaelHexEngine
+ {
+ Q_OBJECT
+ public:
+ KviRijndael192HexEngine() : KviRijndaelHexEngine() {};
+ virtual ~KviRijndael192HexEngine(){};
+ protected:
+ virtual int getKenLen(){ return 24; };
+ virtual Rijndael::KeyLength getKeyLenId(){ return Rijndael::Key24Bytes; };
+ };
+
+ class KviRijndael256HexEngine : public KviRijndaelHexEngine
+ {
+ Q_OBJECT
+ public:
+ KviRijndael256HexEngine() : KviRijndaelHexEngine() {};
+ virtual ~KviRijndael256HexEngine(){};
+ protected:
+ virtual int getKenLen(){ return 32; };
+ };
+
+ class KviRijndaelBase64Engine : public KviRijndaelEngine
+ {
+ Q_OBJECT
+ public:
+ KviRijndaelBase64Engine() : KviRijndaelEngine() {};
+ virtual ~KviRijndaelBase64Engine(){};
+ protected:
+ virtual bool binaryToAscii(const char * inBuffer,int len,KviStr &outBuffer);
+ virtual bool asciiToBinary(const char * inBuffer,int * len,char ** outBuffer);
+ };
+
+ class KviRijndael128Base64Engine : public KviRijndaelBase64Engine
+ {
+ Q_OBJECT
+ public:
+ KviRijndael128Base64Engine() : KviRijndaelBase64Engine() {};
+ virtual ~KviRijndael128Base64Engine(){};
+ protected:
+ virtual int getKenLen(){ return 16; };
+ virtual Rijndael::KeyLength getKeyLenId(){ return Rijndael::Key16Bytes; };
+ };
+
+ class KviRijndael192Base64Engine : public KviRijndaelBase64Engine
+ {
+ Q_OBJECT
+ public:
+ KviRijndael192Base64Engine() : KviRijndaelBase64Engine() {};
+ virtual ~KviRijndael192Base64Engine(){};
+ protected:
+ virtual int getKenLen(){ return 24; };
+ virtual Rijndael::KeyLength getKeyLenId(){ return Rijndael::Key24Bytes; };
+ };
+
+ class KviRijndael256Base64Engine : public KviRijndaelBase64Engine
+ {
+ Q_OBJECT
+ public:
+ KviRijndael256Base64Engine() : KviRijndaelBase64Engine() {};
+ virtual ~KviRijndael256Base64Engine(){};
+ protected:
+ virtual int getKenLen(){ return 32; };
+ };
+
+ // Mircyption stuff
+ #define MCPS2_STARTTAG "\xABm\xAB"
+ #define MCPS2_ENDTAG "\xBBm\xBB"
+
+ class KviMircryptionEngine : public KviCryptEngine
+ {
+ Q_OBJECT
+ public:
+ KviMircryptionEngine();
+ ~KviMircryptionEngine();
+ protected:
+ KviStr m_szEncryptKey;
+ bool m_bEncryptCBC;
+ KviStr m_szDecryptKey;
+ bool m_bDecryptCBC;
+ public:
+ virtual bool isCryptographicEngine(){ return false; }; // we need to return false since it doesn't use the Qt::CTRL+P escape
+ virtual bool init(const char *encKey,int encKeyLen,const char *decKey,int decKeyLen);
+ virtual KviCryptEngine::EncryptResult encrypt(const char * plainText,KviStr &outBuffer);
+ virtual KviCryptEngine::DecryptResult decrypt(const char * inBuffer,KviStr &plainText);
+ protected:
+ bool doDecryptECB(KviStr &encoded,KviStr &plain);
+ bool doDecryptCBC(KviStr &encoded,KviStr &plain);
+ bool doEncryptECB(KviStr &plain,KviStr &encoded);
+ bool doEncryptCBC(KviStr &plain,KviStr &encoded);
+ };
+
+#endif // COMPILE_CRYPT_SUPPORT
+
+#endif // _LIBKVIRIJNDAEL_H_
diff --git a/src/modules/rijndael/rijndael.cpp b/src/modules/rijndael/rijndael.cpp
new file mode 100644
index 00000000..8adbf926
--- /dev/null
+++ b/src/modules/rijndael/rijndael.cpp
@@ -0,0 +1,1626 @@
+//
+// File : rijndael.cpp
+// Creation date : Sun Nov 5 2000 03:22:10 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+//
+// Another implementation of the Rijndael cipher.
+// This is intended to be an easily usable library file.
+// Based on the Vincent Rijmen and K.U.Leuven implementation 2.4.
+//
+
+//
+// Original Copyright notice:
+//
+// rijndael-alg-fst.c v2.4 April '2000
+// rijndael-alg-fst.h
+// rijndael-api-fst.c
+// rijndael-api-fst.h
+//
+// Optimised ANSI C code
+//
+// authors: v1.0: Antoon Bosselaers
+// v2.0: Vincent Rijmen, K.U.Leuven
+// v2.3: Paulo Barreto
+// v2.4: Vincent Rijmen, K.U.Leuven
+//
+// This code is placed in the public domain.
+//
+
+//
+// This implementation works on 128 , 192 , 256 bit keys
+// and on 128 bit blocks
+//
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_CRYPT_SUPPORT
+
+#define _RIJNDAEL_CPP_
+
+#include "rijndael.h"
+
+#include "kvi_memmove.h"
+
+//#include <stdio.h>
+//#include <stdlib.h>
+
+static UINT8 S[256]=
+{
+ 99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118,
+ 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192,
+ 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21,
+ 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117,
+ 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132,
+ 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207,
+ 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168,
+ 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210,
+ 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115,
+ 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219,
+ 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121,
+ 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8,
+ 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138,
+ 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158,
+ 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223,
+ 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22
+};
+
+
+static UINT8 T1[256][4]=
+{
+ 0xc6,0x63,0x63,0xa5, 0xf8,0x7c,0x7c,0x84, 0xee,0x77,0x77,0x99, 0xf6,0x7b,0x7b,0x8d,
+ 0xff,0xf2,0xf2,0x0d, 0xd6,0x6b,0x6b,0xbd, 0xde,0x6f,0x6f,0xb1, 0x91,0xc5,0xc5,0x54,
+ 0x60,0x30,0x30,0x50, 0x02,0x01,0x01,0x03, 0xce,0x67,0x67,0xa9, 0x56,0x2b,0x2b,0x7d,
+ 0xe7,0xfe,0xfe,0x19, 0xb5,0xd7,0xd7,0x62, 0x4d,0xab,0xab,0xe6, 0xec,0x76,0x76,0x9a,
+ 0x8f,0xca,0xca,0x45, 0x1f,0x82,0x82,0x9d, 0x89,0xc9,0xc9,0x40, 0xfa,0x7d,0x7d,0x87,
+ 0xef,0xfa,0xfa,0x15, 0xb2,0x59,0x59,0xeb, 0x8e,0x47,0x47,0xc9, 0xfb,0xf0,0xf0,0x0b,
+ 0x41,0xad,0xad,0xec, 0xb3,0xd4,0xd4,0x67, 0x5f,0xa2,0xa2,0xfd, 0x45,0xaf,0xaf,0xea,
+ 0x23,0x9c,0x9c,0xbf, 0x53,0xa4,0xa4,0xf7, 0xe4,0x72,0x72,0x96, 0x9b,0xc0,0xc0,0x5b,
+ 0x75,0xb7,0xb7,0xc2, 0xe1,0xfd,0xfd,0x1c, 0x3d,0x93,0x93,0xae, 0x4c,0x26,0x26,0x6a,
+ 0x6c,0x36,0x36,0x5a, 0x7e,0x3f,0x3f,0x41, 0xf5,0xf7,0xf7,0x02, 0x83,0xcc,0xcc,0x4f,
+ 0x68,0x34,0x34,0x5c, 0x51,0xa5,0xa5,0xf4, 0xd1,0xe5,0xe5,0x34, 0xf9,0xf1,0xf1,0x08,
+ 0xe2,0x71,0x71,0x93, 0xab,0xd8,0xd8,0x73, 0x62,0x31,0x31,0x53, 0x2a,0x15,0x15,0x3f,
+ 0x08,0x04,0x04,0x0c, 0x95,0xc7,0xc7,0x52, 0x46,0x23,0x23,0x65, 0x9d,0xc3,0xc3,0x5e,
+ 0x30,0x18,0x18,0x28, 0x37,0x96,0x96,0xa1, 0x0a,0x05,0x05,0x0f, 0x2f,0x9a,0x9a,0xb5,
+ 0x0e,0x07,0x07,0x09, 0x24,0x12,0x12,0x36, 0x1b,0x80,0x80,0x9b, 0xdf,0xe2,0xe2,0x3d,
+ 0xcd,0xeb,0xeb,0x26, 0x4e,0x27,0x27,0x69, 0x7f,0xb2,0xb2,0xcd, 0xea,0x75,0x75,0x9f,
+ 0x12,0x09,0x09,0x1b, 0x1d,0x83,0x83,0x9e, 0x58,0x2c,0x2c,0x74, 0x34,0x1a,0x1a,0x2e,
+ 0x36,0x1b,0x1b,0x2d, 0xdc,0x6e,0x6e,0xb2, 0xb4,0x5a,0x5a,0xee, 0x5b,0xa0,0xa0,0xfb,
+ 0xa4,0x52,0x52,0xf6, 0x76,0x3b,0x3b,0x4d, 0xb7,0xd6,0xd6,0x61, 0x7d,0xb3,0xb3,0xce,
+ 0x52,0x29,0x29,0x7b, 0xdd,0xe3,0xe3,0x3e, 0x5e,0x2f,0x2f,0x71, 0x13,0x84,0x84,0x97,
+ 0xa6,0x53,0x53,0xf5, 0xb9,0xd1,0xd1,0x68, 0x00,0x00,0x00,0x00, 0xc1,0xed,0xed,0x2c,
+ 0x40,0x20,0x20,0x60, 0xe3,0xfc,0xfc,0x1f, 0x79,0xb1,0xb1,0xc8, 0xb6,0x5b,0x5b,0xed,
+ 0xd4,0x6a,0x6a,0xbe, 0x8d,0xcb,0xcb,0x46, 0x67,0xbe,0xbe,0xd9, 0x72,0x39,0x39,0x4b,
+ 0x94,0x4a,0x4a,0xde, 0x98,0x4c,0x4c,0xd4, 0xb0,0x58,0x58,0xe8, 0x85,0xcf,0xcf,0x4a,
+ 0xbb,0xd0,0xd0,0x6b, 0xc5,0xef,0xef,0x2a, 0x4f,0xaa,0xaa,0xe5, 0xed,0xfb,0xfb,0x16,
+ 0x86,0x43,0x43,0xc5, 0x9a,0x4d,0x4d,0xd7, 0x66,0x33,0x33,0x55, 0x11,0x85,0x85,0x94,
+ 0x8a,0x45,0x45,0xcf, 0xe9,0xf9,0xf9,0x10, 0x04,0x02,0x02,0x06, 0xfe,0x7f,0x7f,0x81,
+ 0xa0,0x50,0x50,0xf0, 0x78,0x3c,0x3c,0x44, 0x25,0x9f,0x9f,0xba, 0x4b,0xa8,0xa8,0xe3,
+ 0xa2,0x51,0x51,0xf3, 0x5d,0xa3,0xa3,0xfe, 0x80,0x40,0x40,0xc0, 0x05,0x8f,0x8f,0x8a,
+ 0x3f,0x92,0x92,0xad, 0x21,0x9d,0x9d,0xbc, 0x70,0x38,0x38,0x48, 0xf1,0xf5,0xf5,0x04,
+ 0x63,0xbc,0xbc,0xdf, 0x77,0xb6,0xb6,0xc1, 0xaf,0xda,0xda,0x75, 0x42,0x21,0x21,0x63,
+ 0x20,0x10,0x10,0x30, 0xe5,0xff,0xff,0x1a, 0xfd,0xf3,0xf3,0x0e, 0xbf,0xd2,0xd2,0x6d,
+ 0x81,0xcd,0xcd,0x4c, 0x18,0x0c,0x0c,0x14, 0x26,0x13,0x13,0x35, 0xc3,0xec,0xec,0x2f,
+ 0xbe,0x5f,0x5f,0xe1, 0x35,0x97,0x97,0xa2, 0x88,0x44,0x44,0xcc, 0x2e,0x17,0x17,0x39,
+ 0x93,0xc4,0xc4,0x57, 0x55,0xa7,0xa7,0xf2, 0xfc,0x7e,0x7e,0x82, 0x7a,0x3d,0x3d,0x47,
+ 0xc8,0x64,0x64,0xac, 0xba,0x5d,0x5d,0xe7, 0x32,0x19,0x19,0x2b, 0xe6,0x73,0x73,0x95,
+ 0xc0,0x60,0x60,0xa0, 0x19,0x81,0x81,0x98, 0x9e,0x4f,0x4f,0xd1, 0xa3,0xdc,0xdc,0x7f,
+ 0x44,0x22,0x22,0x66, 0x54,0x2a,0x2a,0x7e, 0x3b,0x90,0x90,0xab, 0x0b,0x88,0x88,0x83,
+ 0x8c,0x46,0x46,0xca, 0xc7,0xee,0xee,0x29, 0x6b,0xb8,0xb8,0xd3, 0x28,0x14,0x14,0x3c,
+ 0xa7,0xde,0xde,0x79, 0xbc,0x5e,0x5e,0xe2, 0x16,0x0b,0x0b,0x1d, 0xad,0xdb,0xdb,0x76,
+ 0xdb,0xe0,0xe0,0x3b, 0x64,0x32,0x32,0x56, 0x74,0x3a,0x3a,0x4e, 0x14,0x0a,0x0a,0x1e,
+ 0x92,0x49,0x49,0xdb, 0x0c,0x06,0x06,0x0a, 0x48,0x24,0x24,0x6c, 0xb8,0x5c,0x5c,0xe4,
+ 0x9f,0xc2,0xc2,0x5d, 0xbd,0xd3,0xd3,0x6e, 0x43,0xac,0xac,0xef, 0xc4,0x62,0x62,0xa6,
+ 0x39,0x91,0x91,0xa8, 0x31,0x95,0x95,0xa4, 0xd3,0xe4,0xe4,0x37, 0xf2,0x79,0x79,0x8b,
+ 0xd5,0xe7,0xe7,0x32, 0x8b,0xc8,0xc8,0x43, 0x6e,0x37,0x37,0x59, 0xda,0x6d,0x6d,0xb7,
+ 0x01,0x8d,0x8d,0x8c, 0xb1,0xd5,0xd5,0x64, 0x9c,0x4e,0x4e,0xd2, 0x49,0xa9,0xa9,0xe0,
+ 0xd8,0x6c,0x6c,0xb4, 0xac,0x56,0x56,0xfa, 0xf3,0xf4,0xf4,0x07, 0xcf,0xea,0xea,0x25,
+ 0xca,0x65,0x65,0xaf, 0xf4,0x7a,0x7a,0x8e, 0x47,0xae,0xae,0xe9, 0x10,0x08,0x08,0x18,
+ 0x6f,0xba,0xba,0xd5, 0xf0,0x78,0x78,0x88, 0x4a,0x25,0x25,0x6f, 0x5c,0x2e,0x2e,0x72,
+ 0x38,0x1c,0x1c,0x24, 0x57,0xa6,0xa6,0xf1, 0x73,0xb4,0xb4,0xc7, 0x97,0xc6,0xc6,0x51,
+ 0xcb,0xe8,0xe8,0x23, 0xa1,0xdd,0xdd,0x7c, 0xe8,0x74,0x74,0x9c, 0x3e,0x1f,0x1f,0x21,
+ 0x96,0x4b,0x4b,0xdd, 0x61,0xbd,0xbd,0xdc, 0x0d,0x8b,0x8b,0x86, 0x0f,0x8a,0x8a,0x85,
+ 0xe0,0x70,0x70,0x90, 0x7c,0x3e,0x3e,0x42, 0x71,0xb5,0xb5,0xc4, 0xcc,0x66,0x66,0xaa,
+ 0x90,0x48,0x48,0xd8, 0x06,0x03,0x03,0x05, 0xf7,0xf6,0xf6,0x01, 0x1c,0x0e,0x0e,0x12,
+ 0xc2,0x61,0x61,0xa3, 0x6a,0x35,0x35,0x5f, 0xae,0x57,0x57,0xf9, 0x69,0xb9,0xb9,0xd0,
+ 0x17,0x86,0x86,0x91, 0x99,0xc1,0xc1,0x58, 0x3a,0x1d,0x1d,0x27, 0x27,0x9e,0x9e,0xb9,
+ 0xd9,0xe1,0xe1,0x38, 0xeb,0xf8,0xf8,0x13, 0x2b,0x98,0x98,0xb3, 0x22,0x11,0x11,0x33,
+ 0xd2,0x69,0x69,0xbb, 0xa9,0xd9,0xd9,0x70, 0x07,0x8e,0x8e,0x89, 0x33,0x94,0x94,0xa7,
+ 0x2d,0x9b,0x9b,0xb6, 0x3c,0x1e,0x1e,0x22, 0x15,0x87,0x87,0x92, 0xc9,0xe9,0xe9,0x20,
+ 0x87,0xce,0xce,0x49, 0xaa,0x55,0x55,0xff, 0x50,0x28,0x28,0x78, 0xa5,0xdf,0xdf,0x7a,
+ 0x03,0x8c,0x8c,0x8f, 0x59,0xa1,0xa1,0xf8, 0x09,0x89,0x89,0x80, 0x1a,0x0d,0x0d,0x17,
+ 0x65,0xbf,0xbf,0xda, 0xd7,0xe6,0xe6,0x31, 0x84,0x42,0x42,0xc6, 0xd0,0x68,0x68,0xb8,
+ 0x82,0x41,0x41,0xc3, 0x29,0x99,0x99,0xb0, 0x5a,0x2d,0x2d,0x77, 0x1e,0x0f,0x0f,0x11,
+ 0x7b,0xb0,0xb0,0xcb, 0xa8,0x54,0x54,0xfc, 0x6d,0xbb,0xbb,0xd6, 0x2c,0x16,0x16,0x3a
+};
+
+static UINT8 T2[256][4]=
+{
+ 0xa5,0xc6,0x63,0x63, 0x84,0xf8,0x7c,0x7c, 0x99,0xee,0x77,0x77, 0x8d,0xf6,0x7b,0x7b,
+ 0x0d,0xff,0xf2,0xf2, 0xbd,0xd6,0x6b,0x6b, 0xb1,0xde,0x6f,0x6f, 0x54,0x91,0xc5,0xc5,
+ 0x50,0x60,0x30,0x30, 0x03,0x02,0x01,0x01, 0xa9,0xce,0x67,0x67, 0x7d,0x56,0x2b,0x2b,
+ 0x19,0xe7,0xfe,0xfe, 0x62,0xb5,0xd7,0xd7, 0xe6,0x4d,0xab,0xab, 0x9a,0xec,0x76,0x76,
+ 0x45,0x8f,0xca,0xca, 0x9d,0x1f,0x82,0x82, 0x40,0x89,0xc9,0xc9, 0x87,0xfa,0x7d,0x7d,
+ 0x15,0xef,0xfa,0xfa, 0xeb,0xb2,0x59,0x59, 0xc9,0x8e,0x47,0x47, 0x0b,0xfb,0xf0,0xf0,
+ 0xec,0x41,0xad,0xad, 0x67,0xb3,0xd4,0xd4, 0xfd,0x5f,0xa2,0xa2, 0xea,0x45,0xaf,0xaf,
+ 0xbf,0x23,0x9c,0x9c, 0xf7,0x53,0xa4,0xa4, 0x96,0xe4,0x72,0x72, 0x5b,0x9b,0xc0,0xc0,
+ 0xc2,0x75,0xb7,0xb7, 0x1c,0xe1,0xfd,0xfd, 0xae,0x3d,0x93,0x93, 0x6a,0x4c,0x26,0x26,
+ 0x5a,0x6c,0x36,0x36, 0x41,0x7e,0x3f,0x3f, 0x02,0xf5,0xf7,0xf7, 0x4f,0x83,0xcc,0xcc,
+ 0x5c,0x68,0x34,0x34, 0xf4,0x51,0xa5,0xa5, 0x34,0xd1,0xe5,0xe5, 0x08,0xf9,0xf1,0xf1,
+ 0x93,0xe2,0x71,0x71, 0x73,0xab,0xd8,0xd8, 0x53,0x62,0x31,0x31, 0x3f,0x2a,0x15,0x15,
+ 0x0c,0x08,0x04,0x04, 0x52,0x95,0xc7,0xc7, 0x65,0x46,0x23,0x23, 0x5e,0x9d,0xc3,0xc3,
+ 0x28,0x30,0x18,0x18, 0xa1,0x37,0x96,0x96, 0x0f,0x0a,0x05,0x05, 0xb5,0x2f,0x9a,0x9a,
+ 0x09,0x0e,0x07,0x07, 0x36,0x24,0x12,0x12, 0x9b,0x1b,0x80,0x80, 0x3d,0xdf,0xe2,0xe2,
+ 0x26,0xcd,0xeb,0xeb, 0x69,0x4e,0x27,0x27, 0xcd,0x7f,0xb2,0xb2, 0x9f,0xea,0x75,0x75,
+ 0x1b,0x12,0x09,0x09, 0x9e,0x1d,0x83,0x83, 0x74,0x58,0x2c,0x2c, 0x2e,0x34,0x1a,0x1a,
+ 0x2d,0x36,0x1b,0x1b, 0xb2,0xdc,0x6e,0x6e, 0xee,0xb4,0x5a,0x5a, 0xfb,0x5b,0xa0,0xa0,
+ 0xf6,0xa4,0x52,0x52, 0x4d,0x76,0x3b,0x3b, 0x61,0xb7,0xd6,0xd6, 0xce,0x7d,0xb3,0xb3,
+ 0x7b,0x52,0x29,0x29, 0x3e,0xdd,0xe3,0xe3, 0x71,0x5e,0x2f,0x2f, 0x97,0x13,0x84,0x84,
+ 0xf5,0xa6,0x53,0x53, 0x68,0xb9,0xd1,0xd1, 0x00,0x00,0x00,0x00, 0x2c,0xc1,0xed,0xed,
+ 0x60,0x40,0x20,0x20, 0x1f,0xe3,0xfc,0xfc, 0xc8,0x79,0xb1,0xb1, 0xed,0xb6,0x5b,0x5b,
+ 0xbe,0xd4,0x6a,0x6a, 0x46,0x8d,0xcb,0xcb, 0xd9,0x67,0xbe,0xbe, 0x4b,0x72,0x39,0x39,
+ 0xde,0x94,0x4a,0x4a, 0xd4,0x98,0x4c,0x4c, 0xe8,0xb0,0x58,0x58, 0x4a,0x85,0xcf,0xcf,
+ 0x6b,0xbb,0xd0,0xd0, 0x2a,0xc5,0xef,0xef, 0xe5,0x4f,0xaa,0xaa, 0x16,0xed,0xfb,0xfb,
+ 0xc5,0x86,0x43,0x43, 0xd7,0x9a,0x4d,0x4d, 0x55,0x66,0x33,0x33, 0x94,0x11,0x85,0x85,
+ 0xcf,0x8a,0x45,0x45, 0x10,0xe9,0xf9,0xf9, 0x06,0x04,0x02,0x02, 0x81,0xfe,0x7f,0x7f,
+ 0xf0,0xa0,0x50,0x50, 0x44,0x78,0x3c,0x3c, 0xba,0x25,0x9f,0x9f, 0xe3,0x4b,0xa8,0xa8,
+ 0xf3,0xa2,0x51,0x51, 0xfe,0x5d,0xa3,0xa3, 0xc0,0x80,0x40,0x40, 0x8a,0x05,0x8f,0x8f,
+ 0xad,0x3f,0x92,0x92, 0xbc,0x21,0x9d,0x9d, 0x48,0x70,0x38,0x38, 0x04,0xf1,0xf5,0xf5,
+ 0xdf,0x63,0xbc,0xbc, 0xc1,0x77,0xb6,0xb6, 0x75,0xaf,0xda,0xda, 0x63,0x42,0x21,0x21,
+ 0x30,0x20,0x10,0x10, 0x1a,0xe5,0xff,0xff, 0x0e,0xfd,0xf3,0xf3, 0x6d,0xbf,0xd2,0xd2,
+ 0x4c,0x81,0xcd,0xcd, 0x14,0x18,0x0c,0x0c, 0x35,0x26,0x13,0x13, 0x2f,0xc3,0xec,0xec,
+ 0xe1,0xbe,0x5f,0x5f, 0xa2,0x35,0x97,0x97, 0xcc,0x88,0x44,0x44, 0x39,0x2e,0x17,0x17,
+ 0x57,0x93,0xc4,0xc4, 0xf2,0x55,0xa7,0xa7, 0x82,0xfc,0x7e,0x7e, 0x47,0x7a,0x3d,0x3d,
+ 0xac,0xc8,0x64,0x64, 0xe7,0xba,0x5d,0x5d, 0x2b,0x32,0x19,0x19, 0x95,0xe6,0x73,0x73,
+ 0xa0,0xc0,0x60,0x60, 0x98,0x19,0x81,0x81, 0xd1,0x9e,0x4f,0x4f, 0x7f,0xa3,0xdc,0xdc,
+ 0x66,0x44,0x22,0x22, 0x7e,0x54,0x2a,0x2a, 0xab,0x3b,0x90,0x90, 0x83,0x0b,0x88,0x88,
+ 0xca,0x8c,0x46,0x46, 0x29,0xc7,0xee,0xee, 0xd3,0x6b,0xb8,0xb8, 0x3c,0x28,0x14,0x14,
+ 0x79,0xa7,0xde,0xde, 0xe2,0xbc,0x5e,0x5e, 0x1d,0x16,0x0b,0x0b, 0x76,0xad,0xdb,0xdb,
+ 0x3b,0xdb,0xe0,0xe0, 0x56,0x64,0x32,0x32, 0x4e,0x74,0x3a,0x3a, 0x1e,0x14,0x0a,0x0a,
+ 0xdb,0x92,0x49,0x49, 0x0a,0x0c,0x06,0x06, 0x6c,0x48,0x24,0x24, 0xe4,0xb8,0x5c,0x5c,
+ 0x5d,0x9f,0xc2,0xc2, 0x6e,0xbd,0xd3,0xd3, 0xef,0x43,0xac,0xac, 0xa6,0xc4,0x62,0x62,
+ 0xa8,0x39,0x91,0x91, 0xa4,0x31,0x95,0x95, 0x37,0xd3,0xe4,0xe4, 0x8b,0xf2,0x79,0x79,
+ 0x32,0xd5,0xe7,0xe7, 0x43,0x8b,0xc8,0xc8, 0x59,0x6e,0x37,0x37, 0xb7,0xda,0x6d,0x6d,
+ 0x8c,0x01,0x8d,0x8d, 0x64,0xb1,0xd5,0xd5, 0xd2,0x9c,0x4e,0x4e, 0xe0,0x49,0xa9,0xa9,
+ 0xb4,0xd8,0x6c,0x6c, 0xfa,0xac,0x56,0x56, 0x07,0xf3,0xf4,0xf4, 0x25,0xcf,0xea,0xea,
+ 0xaf,0xca,0x65,0x65, 0x8e,0xf4,0x7a,0x7a, 0xe9,0x47,0xae,0xae, 0x18,0x10,0x08,0x08,
+ 0xd5,0x6f,0xba,0xba, 0x88,0xf0,0x78,0x78, 0x6f,0x4a,0x25,0x25, 0x72,0x5c,0x2e,0x2e,
+ 0x24,0x38,0x1c,0x1c, 0xf1,0x57,0xa6,0xa6, 0xc7,0x73,0xb4,0xb4, 0x51,0x97,0xc6,0xc6,
+ 0x23,0xcb,0xe8,0xe8, 0x7c,0xa1,0xdd,0xdd, 0x9c,0xe8,0x74,0x74, 0x21,0x3e,0x1f,0x1f,
+ 0xdd,0x96,0x4b,0x4b, 0xdc,0x61,0xbd,0xbd, 0x86,0x0d,0x8b,0x8b, 0x85,0x0f,0x8a,0x8a,
+ 0x90,0xe0,0x70,0x70, 0x42,0x7c,0x3e,0x3e, 0xc4,0x71,0xb5,0xb5, 0xaa,0xcc,0x66,0x66,
+ 0xd8,0x90,0x48,0x48, 0x05,0x06,0x03,0x03, 0x01,0xf7,0xf6,0xf6, 0x12,0x1c,0x0e,0x0e,
+ 0xa3,0xc2,0x61,0x61, 0x5f,0x6a,0x35,0x35, 0xf9,0xae,0x57,0x57, 0xd0,0x69,0xb9,0xb9,
+ 0x91,0x17,0x86,0x86, 0x58,0x99,0xc1,0xc1, 0x27,0x3a,0x1d,0x1d, 0xb9,0x27,0x9e,0x9e,
+ 0x38,0xd9,0xe1,0xe1, 0x13,0xeb,0xf8,0xf8, 0xb3,0x2b,0x98,0x98, 0x33,0x22,0x11,0x11,
+ 0xbb,0xd2,0x69,0x69, 0x70,0xa9,0xd9,0xd9, 0x89,0x07,0x8e,0x8e, 0xa7,0x33,0x94,0x94,
+ 0xb6,0x2d,0x9b,0x9b, 0x22,0x3c,0x1e,0x1e, 0x92,0x15,0x87,0x87, 0x20,0xc9,0xe9,0xe9,
+ 0x49,0x87,0xce,0xce, 0xff,0xaa,0x55,0x55, 0x78,0x50,0x28,0x28, 0x7a,0xa5,0xdf,0xdf,
+ 0x8f,0x03,0x8c,0x8c, 0xf8,0x59,0xa1,0xa1, 0x80,0x09,0x89,0x89, 0x17,0x1a,0x0d,0x0d,
+ 0xda,0x65,0xbf,0xbf, 0x31,0xd7,0xe6,0xe6, 0xc6,0x84,0x42,0x42, 0xb8,0xd0,0x68,0x68,
+ 0xc3,0x82,0x41,0x41, 0xb0,0x29,0x99,0x99, 0x77,0x5a,0x2d,0x2d, 0x11,0x1e,0x0f,0x0f,
+ 0xcb,0x7b,0xb0,0xb0, 0xfc,0xa8,0x54,0x54, 0xd6,0x6d,0xbb,0xbb, 0x3a,0x2c,0x16,0x16
+};
+
+static UINT8 T3[256][4]=
+{
+ 0x63,0xa5,0xc6,0x63, 0x7c,0x84,0xf8,0x7c, 0x77,0x99,0xee,0x77, 0x7b,0x8d,0xf6,0x7b,
+ 0xf2,0x0d,0xff,0xf2, 0x6b,0xbd,0xd6,0x6b, 0x6f,0xb1,0xde,0x6f, 0xc5,0x54,0x91,0xc5,
+ 0x30,0x50,0x60,0x30, 0x01,0x03,0x02,0x01, 0x67,0xa9,0xce,0x67, 0x2b,0x7d,0x56,0x2b,
+ 0xfe,0x19,0xe7,0xfe, 0xd7,0x62,0xb5,0xd7, 0xab,0xe6,0x4d,0xab, 0x76,0x9a,0xec,0x76,
+ 0xca,0x45,0x8f,0xca, 0x82,0x9d,0x1f,0x82, 0xc9,0x40,0x89,0xc9, 0x7d,0x87,0xfa,0x7d,
+ 0xfa,0x15,0xef,0xfa, 0x59,0xeb,0xb2,0x59, 0x47,0xc9,0x8e,0x47, 0xf0,0x0b,0xfb,0xf0,
+ 0xad,0xec,0x41,0xad, 0xd4,0x67,0xb3,0xd4, 0xa2,0xfd,0x5f,0xa2, 0xaf,0xea,0x45,0xaf,
+ 0x9c,0xbf,0x23,0x9c, 0xa4,0xf7,0x53,0xa4, 0x72,0x96,0xe4,0x72, 0xc0,0x5b,0x9b,0xc0,
+ 0xb7,0xc2,0x75,0xb7, 0xfd,0x1c,0xe1,0xfd, 0x93,0xae,0x3d,0x93, 0x26,0x6a,0x4c,0x26,
+ 0x36,0x5a,0x6c,0x36, 0x3f,0x41,0x7e,0x3f, 0xf7,0x02,0xf5,0xf7, 0xcc,0x4f,0x83,0xcc,
+ 0x34,0x5c,0x68,0x34, 0xa5,0xf4,0x51,0xa5, 0xe5,0x34,0xd1,0xe5, 0xf1,0x08,0xf9,0xf1,
+ 0x71,0x93,0xe2,0x71, 0xd8,0x73,0xab,0xd8, 0x31,0x53,0x62,0x31, 0x15,0x3f,0x2a,0x15,
+ 0x04,0x0c,0x08,0x04, 0xc7,0x52,0x95,0xc7, 0x23,0x65,0x46,0x23, 0xc3,0x5e,0x9d,0xc3,
+ 0x18,0x28,0x30,0x18, 0x96,0xa1,0x37,0x96, 0x05,0x0f,0x0a,0x05, 0x9a,0xb5,0x2f,0x9a,
+ 0x07,0x09,0x0e,0x07, 0x12,0x36,0x24,0x12, 0x80,0x9b,0x1b,0x80, 0xe2,0x3d,0xdf,0xe2,
+ 0xeb,0x26,0xcd,0xeb, 0x27,0x69,0x4e,0x27, 0xb2,0xcd,0x7f,0xb2, 0x75,0x9f,0xea,0x75,
+ 0x09,0x1b,0x12,0x09, 0x83,0x9e,0x1d,0x83, 0x2c,0x74,0x58,0x2c, 0x1a,0x2e,0x34,0x1a,
+ 0x1b,0x2d,0x36,0x1b, 0x6e,0xb2,0xdc,0x6e, 0x5a,0xee,0xb4,0x5a, 0xa0,0xfb,0x5b,0xa0,
+ 0x52,0xf6,0xa4,0x52, 0x3b,0x4d,0x76,0x3b, 0xd6,0x61,0xb7,0xd6, 0xb3,0xce,0x7d,0xb3,
+ 0x29,0x7b,0x52,0x29, 0xe3,0x3e,0xdd,0xe3, 0x2f,0x71,0x5e,0x2f, 0x84,0x97,0x13,0x84,
+ 0x53,0xf5,0xa6,0x53, 0xd1,0x68,0xb9,0xd1, 0x00,0x00,0x00,0x00, 0xed,0x2c,0xc1,0xed,
+ 0x20,0x60,0x40,0x20, 0xfc,0x1f,0xe3,0xfc, 0xb1,0xc8,0x79,0xb1, 0x5b,0xed,0xb6,0x5b,
+ 0x6a,0xbe,0xd4,0x6a, 0xcb,0x46,0x8d,0xcb, 0xbe,0xd9,0x67,0xbe, 0x39,0x4b,0x72,0x39,
+ 0x4a,0xde,0x94,0x4a, 0x4c,0xd4,0x98,0x4c, 0x58,0xe8,0xb0,0x58, 0xcf,0x4a,0x85,0xcf,
+ 0xd0,0x6b,0xbb,0xd0, 0xef,0x2a,0xc5,0xef, 0xaa,0xe5,0x4f,0xaa, 0xfb,0x16,0xed,0xfb,
+ 0x43,0xc5,0x86,0x43, 0x4d,0xd7,0x9a,0x4d, 0x33,0x55,0x66,0x33, 0x85,0x94,0x11,0x85,
+ 0x45,0xcf,0x8a,0x45, 0xf9,0x10,0xe9,0xf9, 0x02,0x06,0x04,0x02, 0x7f,0x81,0xfe,0x7f,
+ 0x50,0xf0,0xa0,0x50, 0x3c,0x44,0x78,0x3c, 0x9f,0xba,0x25,0x9f, 0xa8,0xe3,0x4b,0xa8,
+ 0x51,0xf3,0xa2,0x51, 0xa3,0xfe,0x5d,0xa3, 0x40,0xc0,0x80,0x40, 0x8f,0x8a,0x05,0x8f,
+ 0x92,0xad,0x3f,0x92, 0x9d,0xbc,0x21,0x9d, 0x38,0x48,0x70,0x38, 0xf5,0x04,0xf1,0xf5,
+ 0xbc,0xdf,0x63,0xbc, 0xb6,0xc1,0x77,0xb6, 0xda,0x75,0xaf,0xda, 0x21,0x63,0x42,0x21,
+ 0x10,0x30,0x20,0x10, 0xff,0x1a,0xe5,0xff, 0xf3,0x0e,0xfd,0xf3, 0xd2,0x6d,0xbf,0xd2,
+ 0xcd,0x4c,0x81,0xcd, 0x0c,0x14,0x18,0x0c, 0x13,0x35,0x26,0x13, 0xec,0x2f,0xc3,0xec,
+ 0x5f,0xe1,0xbe,0x5f, 0x97,0xa2,0x35,0x97, 0x44,0xcc,0x88,0x44, 0x17,0x39,0x2e,0x17,
+ 0xc4,0x57,0x93,0xc4, 0xa7,0xf2,0x55,0xa7, 0x7e,0x82,0xfc,0x7e, 0x3d,0x47,0x7a,0x3d,
+ 0x64,0xac,0xc8,0x64, 0x5d,0xe7,0xba,0x5d, 0x19,0x2b,0x32,0x19, 0x73,0x95,0xe6,0x73,
+ 0x60,0xa0,0xc0,0x60, 0x81,0x98,0x19,0x81, 0x4f,0xd1,0x9e,0x4f, 0xdc,0x7f,0xa3,0xdc,
+ 0x22,0x66,0x44,0x22, 0x2a,0x7e,0x54,0x2a, 0x90,0xab,0x3b,0x90, 0x88,0x83,0x0b,0x88,
+ 0x46,0xca,0x8c,0x46, 0xee,0x29,0xc7,0xee, 0xb8,0xd3,0x6b,0xb8, 0x14,0x3c,0x28,0x14,
+ 0xde,0x79,0xa7,0xde, 0x5e,0xe2,0xbc,0x5e, 0x0b,0x1d,0x16,0x0b, 0xdb,0x76,0xad,0xdb,
+ 0xe0,0x3b,0xdb,0xe0, 0x32,0x56,0x64,0x32, 0x3a,0x4e,0x74,0x3a, 0x0a,0x1e,0x14,0x0a,
+ 0x49,0xdb,0x92,0x49, 0x06,0x0a,0x0c,0x06, 0x24,0x6c,0x48,0x24, 0x5c,0xe4,0xb8,0x5c,
+ 0xc2,0x5d,0x9f,0xc2, 0xd3,0x6e,0xbd,0xd3, 0xac,0xef,0x43,0xac, 0x62,0xa6,0xc4,0x62,
+ 0x91,0xa8,0x39,0x91, 0x95,0xa4,0x31,0x95, 0xe4,0x37,0xd3,0xe4, 0x79,0x8b,0xf2,0x79,
+ 0xe7,0x32,0xd5,0xe7, 0xc8,0x43,0x8b,0xc8, 0x37,0x59,0x6e,0x37, 0x6d,0xb7,0xda,0x6d,
+ 0x8d,0x8c,0x01,0x8d, 0xd5,0x64,0xb1,0xd5, 0x4e,0xd2,0x9c,0x4e, 0xa9,0xe0,0x49,0xa9,
+ 0x6c,0xb4,0xd8,0x6c, 0x56,0xfa,0xac,0x56, 0xf4,0x07,0xf3,0xf4, 0xea,0x25,0xcf,0xea,
+ 0x65,0xaf,0xca,0x65, 0x7a,0x8e,0xf4,0x7a, 0xae,0xe9,0x47,0xae, 0x08,0x18,0x10,0x08,
+ 0xba,0xd5,0x6f,0xba, 0x78,0x88,0xf0,0x78, 0x25,0x6f,0x4a,0x25, 0x2e,0x72,0x5c,0x2e,
+ 0x1c,0x24,0x38,0x1c, 0xa6,0xf1,0x57,0xa6, 0xb4,0xc7,0x73,0xb4, 0xc6,0x51,0x97,0xc6,
+ 0xe8,0x23,0xcb,0xe8, 0xdd,0x7c,0xa1,0xdd, 0x74,0x9c,0xe8,0x74, 0x1f,0x21,0x3e,0x1f,
+ 0x4b,0xdd,0x96,0x4b, 0xbd,0xdc,0x61,0xbd, 0x8b,0x86,0x0d,0x8b, 0x8a,0x85,0x0f,0x8a,
+ 0x70,0x90,0xe0,0x70, 0x3e,0x42,0x7c,0x3e, 0xb5,0xc4,0x71,0xb5, 0x66,0xaa,0xcc,0x66,
+ 0x48,0xd8,0x90,0x48, 0x03,0x05,0x06,0x03, 0xf6,0x01,0xf7,0xf6, 0x0e,0x12,0x1c,0x0e,
+ 0x61,0xa3,0xc2,0x61, 0x35,0x5f,0x6a,0x35, 0x57,0xf9,0xae,0x57, 0xb9,0xd0,0x69,0xb9,
+ 0x86,0x91,0x17,0x86, 0xc1,0x58,0x99,0xc1, 0x1d,0x27,0x3a,0x1d, 0x9e,0xb9,0x27,0x9e,
+ 0xe1,0x38,0xd9,0xe1, 0xf8,0x13,0xeb,0xf8, 0x98,0xb3,0x2b,0x98, 0x11,0x33,0x22,0x11,
+ 0x69,0xbb,0xd2,0x69, 0xd9,0x70,0xa9,0xd9, 0x8e,0x89,0x07,0x8e, 0x94,0xa7,0x33,0x94,
+ 0x9b,0xb6,0x2d,0x9b, 0x1e,0x22,0x3c,0x1e, 0x87,0x92,0x15,0x87, 0xe9,0x20,0xc9,0xe9,
+ 0xce,0x49,0x87,0xce, 0x55,0xff,0xaa,0x55, 0x28,0x78,0x50,0x28, 0xdf,0x7a,0xa5,0xdf,
+ 0x8c,0x8f,0x03,0x8c, 0xa1,0xf8,0x59,0xa1, 0x89,0x80,0x09,0x89, 0x0d,0x17,0x1a,0x0d,
+ 0xbf,0xda,0x65,0xbf, 0xe6,0x31,0xd7,0xe6, 0x42,0xc6,0x84,0x42, 0x68,0xb8,0xd0,0x68,
+ 0x41,0xc3,0x82,0x41, 0x99,0xb0,0x29,0x99, 0x2d,0x77,0x5a,0x2d, 0x0f,0x11,0x1e,0x0f,
+ 0xb0,0xcb,0x7b,0xb0, 0x54,0xfc,0xa8,0x54, 0xbb,0xd6,0x6d,0xbb, 0x16,0x3a,0x2c,0x16
+};
+
+static UINT8 T4[256][4]=
+{
+ 0x63,0x63,0xa5,0xc6, 0x7c,0x7c,0x84,0xf8, 0x77,0x77,0x99,0xee, 0x7b,0x7b,0x8d,0xf6,
+ 0xf2,0xf2,0x0d,0xff, 0x6b,0x6b,0xbd,0xd6, 0x6f,0x6f,0xb1,0xde, 0xc5,0xc5,0x54,0x91,
+ 0x30,0x30,0x50,0x60, 0x01,0x01,0x03,0x02, 0x67,0x67,0xa9,0xce, 0x2b,0x2b,0x7d,0x56,
+ 0xfe,0xfe,0x19,0xe7, 0xd7,0xd7,0x62,0xb5, 0xab,0xab,0xe6,0x4d, 0x76,0x76,0x9a,0xec,
+ 0xca,0xca,0x45,0x8f, 0x82,0x82,0x9d,0x1f, 0xc9,0xc9,0x40,0x89, 0x7d,0x7d,0x87,0xfa,
+ 0xfa,0xfa,0x15,0xef, 0x59,0x59,0xeb,0xb2, 0x47,0x47,0xc9,0x8e, 0xf0,0xf0,0x0b,0xfb,
+ 0xad,0xad,0xec,0x41, 0xd4,0xd4,0x67,0xb3, 0xa2,0xa2,0xfd,0x5f, 0xaf,0xaf,0xea,0x45,
+ 0x9c,0x9c,0xbf,0x23, 0xa4,0xa4,0xf7,0x53, 0x72,0x72,0x96,0xe4, 0xc0,0xc0,0x5b,0x9b,
+ 0xb7,0xb7,0xc2,0x75, 0xfd,0xfd,0x1c,0xe1, 0x93,0x93,0xae,0x3d, 0x26,0x26,0x6a,0x4c,
+ 0x36,0x36,0x5a,0x6c, 0x3f,0x3f,0x41,0x7e, 0xf7,0xf7,0x02,0xf5, 0xcc,0xcc,0x4f,0x83,
+ 0x34,0x34,0x5c,0x68, 0xa5,0xa5,0xf4,0x51, 0xe5,0xe5,0x34,0xd1, 0xf1,0xf1,0x08,0xf9,
+ 0x71,0x71,0x93,0xe2, 0xd8,0xd8,0x73,0xab, 0x31,0x31,0x53,0x62, 0x15,0x15,0x3f,0x2a,
+ 0x04,0x04,0x0c,0x08, 0xc7,0xc7,0x52,0x95, 0x23,0x23,0x65,0x46, 0xc3,0xc3,0x5e,0x9d,
+ 0x18,0x18,0x28,0x30, 0x96,0x96,0xa1,0x37, 0x05,0x05,0x0f,0x0a, 0x9a,0x9a,0xb5,0x2f,
+ 0x07,0x07,0x09,0x0e, 0x12,0x12,0x36,0x24, 0x80,0x80,0x9b,0x1b, 0xe2,0xe2,0x3d,0xdf,
+ 0xeb,0xeb,0x26,0xcd, 0x27,0x27,0x69,0x4e, 0xb2,0xb2,0xcd,0x7f, 0x75,0x75,0x9f,0xea,
+ 0x09,0x09,0x1b,0x12, 0x83,0x83,0x9e,0x1d, 0x2c,0x2c,0x74,0x58, 0x1a,0x1a,0x2e,0x34,
+ 0x1b,0x1b,0x2d,0x36, 0x6e,0x6e,0xb2,0xdc, 0x5a,0x5a,0xee,0xb4, 0xa0,0xa0,0xfb,0x5b,
+ 0x52,0x52,0xf6,0xa4, 0x3b,0x3b,0x4d,0x76, 0xd6,0xd6,0x61,0xb7, 0xb3,0xb3,0xce,0x7d,
+ 0x29,0x29,0x7b,0x52, 0xe3,0xe3,0x3e,0xdd, 0x2f,0x2f,0x71,0x5e, 0x84,0x84,0x97,0x13,
+ 0x53,0x53,0xf5,0xa6, 0xd1,0xd1,0x68,0xb9, 0x00,0x00,0x00,0x00, 0xed,0xed,0x2c,0xc1,
+ 0x20,0x20,0x60,0x40, 0xfc,0xfc,0x1f,0xe3, 0xb1,0xb1,0xc8,0x79, 0x5b,0x5b,0xed,0xb6,
+ 0x6a,0x6a,0xbe,0xd4, 0xcb,0xcb,0x46,0x8d, 0xbe,0xbe,0xd9,0x67, 0x39,0x39,0x4b,0x72,
+ 0x4a,0x4a,0xde,0x94, 0x4c,0x4c,0xd4,0x98, 0x58,0x58,0xe8,0xb0, 0xcf,0xcf,0x4a,0x85,
+ 0xd0,0xd0,0x6b,0xbb, 0xef,0xef,0x2a,0xc5, 0xaa,0xaa,0xe5,0x4f, 0xfb,0xfb,0x16,0xed,
+ 0x43,0x43,0xc5,0x86, 0x4d,0x4d,0xd7,0x9a, 0x33,0x33,0x55,0x66, 0x85,0x85,0x94,0x11,
+ 0x45,0x45,0xcf,0x8a, 0xf9,0xf9,0x10,0xe9, 0x02,0x02,0x06,0x04, 0x7f,0x7f,0x81,0xfe,
+ 0x50,0x50,0xf0,0xa0, 0x3c,0x3c,0x44,0x78, 0x9f,0x9f,0xba,0x25, 0xa8,0xa8,0xe3,0x4b,
+ 0x51,0x51,0xf3,0xa2, 0xa3,0xa3,0xfe,0x5d, 0x40,0x40,0xc0,0x80, 0x8f,0x8f,0x8a,0x05,
+ 0x92,0x92,0xad,0x3f, 0x9d,0x9d,0xbc,0x21, 0x38,0x38,0x48,0x70, 0xf5,0xf5,0x04,0xf1,
+ 0xbc,0xbc,0xdf,0x63, 0xb6,0xb6,0xc1,0x77, 0xda,0xda,0x75,0xaf, 0x21,0x21,0x63,0x42,
+ 0x10,0x10,0x30,0x20, 0xff,0xff,0x1a,0xe5, 0xf3,0xf3,0x0e,0xfd, 0xd2,0xd2,0x6d,0xbf,
+ 0xcd,0xcd,0x4c,0x81, 0x0c,0x0c,0x14,0x18, 0x13,0x13,0x35,0x26, 0xec,0xec,0x2f,0xc3,
+ 0x5f,0x5f,0xe1,0xbe, 0x97,0x97,0xa2,0x35, 0x44,0x44,0xcc,0x88, 0x17,0x17,0x39,0x2e,
+ 0xc4,0xc4,0x57,0x93, 0xa7,0xa7,0xf2,0x55, 0x7e,0x7e,0x82,0xfc, 0x3d,0x3d,0x47,0x7a,
+ 0x64,0x64,0xac,0xc8, 0x5d,0x5d,0xe7,0xba, 0x19,0x19,0x2b,0x32, 0x73,0x73,0x95,0xe6,
+ 0x60,0x60,0xa0,0xc0, 0x81,0x81,0x98,0x19, 0x4f,0x4f,0xd1,0x9e, 0xdc,0xdc,0x7f,0xa3,
+ 0x22,0x22,0x66,0x44, 0x2a,0x2a,0x7e,0x54, 0x90,0x90,0xab,0x3b, 0x88,0x88,0x83,0x0b,
+ 0x46,0x46,0xca,0x8c, 0xee,0xee,0x29,0xc7, 0xb8,0xb8,0xd3,0x6b, 0x14,0x14,0x3c,0x28,
+ 0xde,0xde,0x79,0xa7, 0x5e,0x5e,0xe2,0xbc, 0x0b,0x0b,0x1d,0x16, 0xdb,0xdb,0x76,0xad,
+ 0xe0,0xe0,0x3b,0xdb, 0x32,0x32,0x56,0x64, 0x3a,0x3a,0x4e,0x74, 0x0a,0x0a,0x1e,0x14,
+ 0x49,0x49,0xdb,0x92, 0x06,0x06,0x0a,0x0c, 0x24,0x24,0x6c,0x48, 0x5c,0x5c,0xe4,0xb8,
+ 0xc2,0xc2,0x5d,0x9f, 0xd3,0xd3,0x6e,0xbd, 0xac,0xac,0xef,0x43, 0x62,0x62,0xa6,0xc4,
+ 0x91,0x91,0xa8,0x39, 0x95,0x95,0xa4,0x31, 0xe4,0xe4,0x37,0xd3, 0x79,0x79,0x8b,0xf2,
+ 0xe7,0xe7,0x32,0xd5, 0xc8,0xc8,0x43,0x8b, 0x37,0x37,0x59,0x6e, 0x6d,0x6d,0xb7,0xda,
+ 0x8d,0x8d,0x8c,0x01, 0xd5,0xd5,0x64,0xb1, 0x4e,0x4e,0xd2,0x9c, 0xa9,0xa9,0xe0,0x49,
+ 0x6c,0x6c,0xb4,0xd8, 0x56,0x56,0xfa,0xac, 0xf4,0xf4,0x07,0xf3, 0xea,0xea,0x25,0xcf,
+ 0x65,0x65,0xaf,0xca, 0x7a,0x7a,0x8e,0xf4, 0xae,0xae,0xe9,0x47, 0x08,0x08,0x18,0x10,
+ 0xba,0xba,0xd5,0x6f, 0x78,0x78,0x88,0xf0, 0x25,0x25,0x6f,0x4a, 0x2e,0x2e,0x72,0x5c,
+ 0x1c,0x1c,0x24,0x38, 0xa6,0xa6,0xf1,0x57, 0xb4,0xb4,0xc7,0x73, 0xc6,0xc6,0x51,0x97,
+ 0xe8,0xe8,0x23,0xcb, 0xdd,0xdd,0x7c,0xa1, 0x74,0x74,0x9c,0xe8, 0x1f,0x1f,0x21,0x3e,
+ 0x4b,0x4b,0xdd,0x96, 0xbd,0xbd,0xdc,0x61, 0x8b,0x8b,0x86,0x0d, 0x8a,0x8a,0x85,0x0f,
+ 0x70,0x70,0x90,0xe0, 0x3e,0x3e,0x42,0x7c, 0xb5,0xb5,0xc4,0x71, 0x66,0x66,0xaa,0xcc,
+ 0x48,0x48,0xd8,0x90, 0x03,0x03,0x05,0x06, 0xf6,0xf6,0x01,0xf7, 0x0e,0x0e,0x12,0x1c,
+ 0x61,0x61,0xa3,0xc2, 0x35,0x35,0x5f,0x6a, 0x57,0x57,0xf9,0xae, 0xb9,0xb9,0xd0,0x69,
+ 0x86,0x86,0x91,0x17, 0xc1,0xc1,0x58,0x99, 0x1d,0x1d,0x27,0x3a, 0x9e,0x9e,0xb9,0x27,
+ 0xe1,0xe1,0x38,0xd9, 0xf8,0xf8,0x13,0xeb, 0x98,0x98,0xb3,0x2b, 0x11,0x11,0x33,0x22,
+ 0x69,0x69,0xbb,0xd2, 0xd9,0xd9,0x70,0xa9, 0x8e,0x8e,0x89,0x07, 0x94,0x94,0xa7,0x33,
+ 0x9b,0x9b,0xb6,0x2d, 0x1e,0x1e,0x22,0x3c, 0x87,0x87,0x92,0x15, 0xe9,0xe9,0x20,0xc9,
+ 0xce,0xce,0x49,0x87, 0x55,0x55,0xff,0xaa, 0x28,0x28,0x78,0x50, 0xdf,0xdf,0x7a,0xa5,
+ 0x8c,0x8c,0x8f,0x03, 0xa1,0xa1,0xf8,0x59, 0x89,0x89,0x80,0x09, 0x0d,0x0d,0x17,0x1a,
+ 0xbf,0xbf,0xda,0x65, 0xe6,0xe6,0x31,0xd7, 0x42,0x42,0xc6,0x84, 0x68,0x68,0xb8,0xd0,
+ 0x41,0x41,0xc3,0x82, 0x99,0x99,0xb0,0x29, 0x2d,0x2d,0x77,0x5a, 0x0f,0x0f,0x11,0x1e,
+ 0xb0,0xb0,0xcb,0x7b, 0x54,0x54,0xfc,0xa8, 0xbb,0xbb,0xd6,0x6d, 0x16,0x16,0x3a,0x2c
+};
+
+static UINT8 T5[256][4]=
+{
+ 0x51,0xf4,0xa7,0x50, 0x7e,0x41,0x65,0x53, 0x1a,0x17,0xa4,0xc3, 0x3a,0x27,0x5e,0x96,
+ 0x3b,0xab,0x6b,0xcb, 0x1f,0x9d,0x45,0xf1, 0xac,0xfa,0x58,0xab, 0x4b,0xe3,0x03,0x93,
+ 0x20,0x30,0xfa,0x55, 0xad,0x76,0x6d,0xf6, 0x88,0xcc,0x76,0x91, 0xf5,0x02,0x4c,0x25,
+ 0x4f,0xe5,0xd7,0xfc, 0xc5,0x2a,0xcb,0xd7, 0x26,0x35,0x44,0x80, 0xb5,0x62,0xa3,0x8f,
+ 0xde,0xb1,0x5a,0x49, 0x25,0xba,0x1b,0x67, 0x45,0xea,0x0e,0x98, 0x5d,0xfe,0xc0,0xe1,
+ 0xc3,0x2f,0x75,0x02, 0x81,0x4c,0xf0,0x12, 0x8d,0x46,0x97,0xa3, 0x6b,0xd3,0xf9,0xc6,
+ 0x03,0x8f,0x5f,0xe7, 0x15,0x92,0x9c,0x95, 0xbf,0x6d,0x7a,0xeb, 0x95,0x52,0x59,0xda,
+ 0xd4,0xbe,0x83,0x2d, 0x58,0x74,0x21,0xd3, 0x49,0xe0,0x69,0x29, 0x8e,0xc9,0xc8,0x44,
+ 0x75,0xc2,0x89,0x6a, 0xf4,0x8e,0x79,0x78, 0x99,0x58,0x3e,0x6b, 0x27,0xb9,0x71,0xdd,
+ 0xbe,0xe1,0x4f,0xb6, 0xf0,0x88,0xad,0x17, 0xc9,0x20,0xac,0x66, 0x7d,0xce,0x3a,0xb4,
+ 0x63,0xdf,0x4a,0x18, 0xe5,0x1a,0x31,0x82, 0x97,0x51,0x33,0x60, 0x62,0x53,0x7f,0x45,
+ 0xb1,0x64,0x77,0xe0, 0xbb,0x6b,0xae,0x84, 0xfe,0x81,0xa0,0x1c, 0xf9,0x08,0x2b,0x94,
+ 0x70,0x48,0x68,0x58, 0x8f,0x45,0xfd,0x19, 0x94,0xde,0x6c,0x87, 0x52,0x7b,0xf8,0xb7,
+ 0xab,0x73,0xd3,0x23, 0x72,0x4b,0x02,0xe2, 0xe3,0x1f,0x8f,0x57, 0x66,0x55,0xab,0x2a,
+ 0xb2,0xeb,0x28,0x07, 0x2f,0xb5,0xc2,0x03, 0x86,0xc5,0x7b,0x9a, 0xd3,0x37,0x08,0xa5,
+ 0x30,0x28,0x87,0xf2, 0x23,0xbf,0xa5,0xb2, 0x02,0x03,0x6a,0xba, 0xed,0x16,0x82,0x5c,
+ 0x8a,0xcf,0x1c,0x2b, 0xa7,0x79,0xb4,0x92, 0xf3,0x07,0xf2,0xf0, 0x4e,0x69,0xe2,0xa1,
+ 0x65,0xda,0xf4,0xcd, 0x06,0x05,0xbe,0xd5, 0xd1,0x34,0x62,0x1f, 0xc4,0xa6,0xfe,0x8a,
+ 0x34,0x2e,0x53,0x9d, 0xa2,0xf3,0x55,0xa0, 0x05,0x8a,0xe1,0x32, 0xa4,0xf6,0xeb,0x75,
+ 0x0b,0x83,0xec,0x39, 0x40,0x60,0xef,0xaa, 0x5e,0x71,0x9f,0x06, 0xbd,0x6e,0x10,0x51,
+ 0x3e,0x21,0x8a,0xf9, 0x96,0xdd,0x06,0x3d, 0xdd,0x3e,0x05,0xae, 0x4d,0xe6,0xbd,0x46,
+ 0x91,0x54,0x8d,0xb5, 0x71,0xc4,0x5d,0x05, 0x04,0x06,0xd4,0x6f, 0x60,0x50,0x15,0xff,
+ 0x19,0x98,0xfb,0x24, 0xd6,0xbd,0xe9,0x97, 0x89,0x40,0x43,0xcc, 0x67,0xd9,0x9e,0x77,
+ 0xb0,0xe8,0x42,0xbd, 0x07,0x89,0x8b,0x88, 0xe7,0x19,0x5b,0x38, 0x79,0xc8,0xee,0xdb,
+ 0xa1,0x7c,0x0a,0x47, 0x7c,0x42,0x0f,0xe9, 0xf8,0x84,0x1e,0xc9, 0x00,0x00,0x00,0x00,
+ 0x09,0x80,0x86,0x83, 0x32,0x2b,0xed,0x48, 0x1e,0x11,0x70,0xac, 0x6c,0x5a,0x72,0x4e,
+ 0xfd,0x0e,0xff,0xfb, 0x0f,0x85,0x38,0x56, 0x3d,0xae,0xd5,0x1e, 0x36,0x2d,0x39,0x27,
+ 0x0a,0x0f,0xd9,0x64, 0x68,0x5c,0xa6,0x21, 0x9b,0x5b,0x54,0xd1, 0x24,0x36,0x2e,0x3a,
+ 0x0c,0x0a,0x67,0xb1, 0x93,0x57,0xe7,0x0f, 0xb4,0xee,0x96,0xd2, 0x1b,0x9b,0x91,0x9e,
+ 0x80,0xc0,0xc5,0x4f, 0x61,0xdc,0x20,0xa2, 0x5a,0x77,0x4b,0x69, 0x1c,0x12,0x1a,0x16,
+ 0xe2,0x93,0xba,0x0a, 0xc0,0xa0,0x2a,0xe5, 0x3c,0x22,0xe0,0x43, 0x12,0x1b,0x17,0x1d,
+ 0x0e,0x09,0x0d,0x0b, 0xf2,0x8b,0xc7,0xad, 0x2d,0xb6,0xa8,0xb9, 0x14,0x1e,0xa9,0xc8,
+ 0x57,0xf1,0x19,0x85, 0xaf,0x75,0x07,0x4c, 0xee,0x99,0xdd,0xbb, 0xa3,0x7f,0x60,0xfd,
+ 0xf7,0x01,0x26,0x9f, 0x5c,0x72,0xf5,0xbc, 0x44,0x66,0x3b,0xc5, 0x5b,0xfb,0x7e,0x34,
+ 0x8b,0x43,0x29,0x76, 0xcb,0x23,0xc6,0xdc, 0xb6,0xed,0xfc,0x68, 0xb8,0xe4,0xf1,0x63,
+ 0xd7,0x31,0xdc,0xca, 0x42,0x63,0x85,0x10, 0x13,0x97,0x22,0x40, 0x84,0xc6,0x11,0x20,
+ 0x85,0x4a,0x24,0x7d, 0xd2,0xbb,0x3d,0xf8, 0xae,0xf9,0x32,0x11, 0xc7,0x29,0xa1,0x6d,
+ 0x1d,0x9e,0x2f,0x4b, 0xdc,0xb2,0x30,0xf3, 0x0d,0x86,0x52,0xec, 0x77,0xc1,0xe3,0xd0,
+ 0x2b,0xb3,0x16,0x6c, 0xa9,0x70,0xb9,0x99, 0x11,0x94,0x48,0xfa, 0x47,0xe9,0x64,0x22,
+ 0xa8,0xfc,0x8c,0xc4, 0xa0,0xf0,0x3f,0x1a, 0x56,0x7d,0x2c,0xd8, 0x22,0x33,0x90,0xef,
+ 0x87,0x49,0x4e,0xc7, 0xd9,0x38,0xd1,0xc1, 0x8c,0xca,0xa2,0xfe, 0x98,0xd4,0x0b,0x36,
+ 0xa6,0xf5,0x81,0xcf, 0xa5,0x7a,0xde,0x28, 0xda,0xb7,0x8e,0x26, 0x3f,0xad,0xbf,0xa4,
+ 0x2c,0x3a,0x9d,0xe4, 0x50,0x78,0x92,0x0d, 0x6a,0x5f,0xcc,0x9b, 0x54,0x7e,0x46,0x62,
+ 0xf6,0x8d,0x13,0xc2, 0x90,0xd8,0xb8,0xe8, 0x2e,0x39,0xf7,0x5e, 0x82,0xc3,0xaf,0xf5,
+ 0x9f,0x5d,0x80,0xbe, 0x69,0xd0,0x93,0x7c, 0x6f,0xd5,0x2d,0xa9, 0xcf,0x25,0x12,0xb3,
+ 0xc8,0xac,0x99,0x3b, 0x10,0x18,0x7d,0xa7, 0xe8,0x9c,0x63,0x6e, 0xdb,0x3b,0xbb,0x7b,
+ 0xcd,0x26,0x78,0x09, 0x6e,0x59,0x18,0xf4, 0xec,0x9a,0xb7,0x01, 0x83,0x4f,0x9a,0xa8,
+ 0xe6,0x95,0x6e,0x65, 0xaa,0xff,0xe6,0x7e, 0x21,0xbc,0xcf,0x08, 0xef,0x15,0xe8,0xe6,
+ 0xba,0xe7,0x9b,0xd9, 0x4a,0x6f,0x36,0xce, 0xea,0x9f,0x09,0xd4, 0x29,0xb0,0x7c,0xd6,
+ 0x31,0xa4,0xb2,0xaf, 0x2a,0x3f,0x23,0x31, 0xc6,0xa5,0x94,0x30, 0x35,0xa2,0x66,0xc0,
+ 0x74,0x4e,0xbc,0x37, 0xfc,0x82,0xca,0xa6, 0xe0,0x90,0xd0,0xb0, 0x33,0xa7,0xd8,0x15,
+ 0xf1,0x04,0x98,0x4a, 0x41,0xec,0xda,0xf7, 0x7f,0xcd,0x50,0x0e, 0x17,0x91,0xf6,0x2f,
+ 0x76,0x4d,0xd6,0x8d, 0x43,0xef,0xb0,0x4d, 0xcc,0xaa,0x4d,0x54, 0xe4,0x96,0x04,0xdf,
+ 0x9e,0xd1,0xb5,0xe3, 0x4c,0x6a,0x88,0x1b, 0xc1,0x2c,0x1f,0xb8, 0x46,0x65,0x51,0x7f,
+ 0x9d,0x5e,0xea,0x04, 0x01,0x8c,0x35,0x5d, 0xfa,0x87,0x74,0x73, 0xfb,0x0b,0x41,0x2e,
+ 0xb3,0x67,0x1d,0x5a, 0x92,0xdb,0xd2,0x52, 0xe9,0x10,0x56,0x33, 0x6d,0xd6,0x47,0x13,
+ 0x9a,0xd7,0x61,0x8c, 0x37,0xa1,0x0c,0x7a, 0x59,0xf8,0x14,0x8e, 0xeb,0x13,0x3c,0x89,
+ 0xce,0xa9,0x27,0xee, 0xb7,0x61,0xc9,0x35, 0xe1,0x1c,0xe5,0xed, 0x7a,0x47,0xb1,0x3c,
+ 0x9c,0xd2,0xdf,0x59, 0x55,0xf2,0x73,0x3f, 0x18,0x14,0xce,0x79, 0x73,0xc7,0x37,0xbf,
+ 0x53,0xf7,0xcd,0xea, 0x5f,0xfd,0xaa,0x5b, 0xdf,0x3d,0x6f,0x14, 0x78,0x44,0xdb,0x86,
+ 0xca,0xaf,0xf3,0x81, 0xb9,0x68,0xc4,0x3e, 0x38,0x24,0x34,0x2c, 0xc2,0xa3,0x40,0x5f,
+ 0x16,0x1d,0xc3,0x72, 0xbc,0xe2,0x25,0x0c, 0x28,0x3c,0x49,0x8b, 0xff,0x0d,0x95,0x41,
+ 0x39,0xa8,0x01,0x71, 0x08,0x0c,0xb3,0xde, 0xd8,0xb4,0xe4,0x9c, 0x64,0x56,0xc1,0x90,
+ 0x7b,0xcb,0x84,0x61, 0xd5,0x32,0xb6,0x70, 0x48,0x6c,0x5c,0x74, 0xd0,0xb8,0x57,0x42
+};
+
+static UINT8 T6[256][4]=
+{
+ 0x50,0x51,0xf4,0xa7, 0x53,0x7e,0x41,0x65, 0xc3,0x1a,0x17,0xa4, 0x96,0x3a,0x27,0x5e,
+ 0xcb,0x3b,0xab,0x6b, 0xf1,0x1f,0x9d,0x45, 0xab,0xac,0xfa,0x58, 0x93,0x4b,0xe3,0x03,
+ 0x55,0x20,0x30,0xfa, 0xf6,0xad,0x76,0x6d, 0x91,0x88,0xcc,0x76, 0x25,0xf5,0x02,0x4c,
+ 0xfc,0x4f,0xe5,0xd7, 0xd7,0xc5,0x2a,0xcb, 0x80,0x26,0x35,0x44, 0x8f,0xb5,0x62,0xa3,
+ 0x49,0xde,0xb1,0x5a, 0x67,0x25,0xba,0x1b, 0x98,0x45,0xea,0x0e, 0xe1,0x5d,0xfe,0xc0,
+ 0x02,0xc3,0x2f,0x75, 0x12,0x81,0x4c,0xf0, 0xa3,0x8d,0x46,0x97, 0xc6,0x6b,0xd3,0xf9,
+ 0xe7,0x03,0x8f,0x5f, 0x95,0x15,0x92,0x9c, 0xeb,0xbf,0x6d,0x7a, 0xda,0x95,0x52,0x59,
+ 0x2d,0xd4,0xbe,0x83, 0xd3,0x58,0x74,0x21, 0x29,0x49,0xe0,0x69, 0x44,0x8e,0xc9,0xc8,
+ 0x6a,0x75,0xc2,0x89, 0x78,0xf4,0x8e,0x79, 0x6b,0x99,0x58,0x3e, 0xdd,0x27,0xb9,0x71,
+ 0xb6,0xbe,0xe1,0x4f, 0x17,0xf0,0x88,0xad, 0x66,0xc9,0x20,0xac, 0xb4,0x7d,0xce,0x3a,
+ 0x18,0x63,0xdf,0x4a, 0x82,0xe5,0x1a,0x31, 0x60,0x97,0x51,0x33, 0x45,0x62,0x53,0x7f,
+ 0xe0,0xb1,0x64,0x77, 0x84,0xbb,0x6b,0xae, 0x1c,0xfe,0x81,0xa0, 0x94,0xf9,0x08,0x2b,
+ 0x58,0x70,0x48,0x68, 0x19,0x8f,0x45,0xfd, 0x87,0x94,0xde,0x6c, 0xb7,0x52,0x7b,0xf8,
+ 0x23,0xab,0x73,0xd3, 0xe2,0x72,0x4b,0x02, 0x57,0xe3,0x1f,0x8f, 0x2a,0x66,0x55,0xab,
+ 0x07,0xb2,0xeb,0x28, 0x03,0x2f,0xb5,0xc2, 0x9a,0x86,0xc5,0x7b, 0xa5,0xd3,0x37,0x08,
+ 0xf2,0x30,0x28,0x87, 0xb2,0x23,0xbf,0xa5, 0xba,0x02,0x03,0x6a, 0x5c,0xed,0x16,0x82,
+ 0x2b,0x8a,0xcf,0x1c, 0x92,0xa7,0x79,0xb4, 0xf0,0xf3,0x07,0xf2, 0xa1,0x4e,0x69,0xe2,
+ 0xcd,0x65,0xda,0xf4, 0xd5,0x06,0x05,0xbe, 0x1f,0xd1,0x34,0x62, 0x8a,0xc4,0xa6,0xfe,
+ 0x9d,0x34,0x2e,0x53, 0xa0,0xa2,0xf3,0x55, 0x32,0x05,0x8a,0xe1, 0x75,0xa4,0xf6,0xeb,
+ 0x39,0x0b,0x83,0xec, 0xaa,0x40,0x60,0xef, 0x06,0x5e,0x71,0x9f, 0x51,0xbd,0x6e,0x10,
+ 0xf9,0x3e,0x21,0x8a, 0x3d,0x96,0xdd,0x06, 0xae,0xdd,0x3e,0x05, 0x46,0x4d,0xe6,0xbd,
+ 0xb5,0x91,0x54,0x8d, 0x05,0x71,0xc4,0x5d, 0x6f,0x04,0x06,0xd4, 0xff,0x60,0x50,0x15,
+ 0x24,0x19,0x98,0xfb, 0x97,0xd6,0xbd,0xe9, 0xcc,0x89,0x40,0x43, 0x77,0x67,0xd9,0x9e,
+ 0xbd,0xb0,0xe8,0x42, 0x88,0x07,0x89,0x8b, 0x38,0xe7,0x19,0x5b, 0xdb,0x79,0xc8,0xee,
+ 0x47,0xa1,0x7c,0x0a, 0xe9,0x7c,0x42,0x0f, 0xc9,0xf8,0x84,0x1e, 0x00,0x00,0x00,0x00,
+ 0x83,0x09,0x80,0x86, 0x48,0x32,0x2b,0xed, 0xac,0x1e,0x11,0x70, 0x4e,0x6c,0x5a,0x72,
+ 0xfb,0xfd,0x0e,0xff, 0x56,0x0f,0x85,0x38, 0x1e,0x3d,0xae,0xd5, 0x27,0x36,0x2d,0x39,
+ 0x64,0x0a,0x0f,0xd9, 0x21,0x68,0x5c,0xa6, 0xd1,0x9b,0x5b,0x54, 0x3a,0x24,0x36,0x2e,
+ 0xb1,0x0c,0x0a,0x67, 0x0f,0x93,0x57,0xe7, 0xd2,0xb4,0xee,0x96, 0x9e,0x1b,0x9b,0x91,
+ 0x4f,0x80,0xc0,0xc5, 0xa2,0x61,0xdc,0x20, 0x69,0x5a,0x77,0x4b, 0x16,0x1c,0x12,0x1a,
+ 0x0a,0xe2,0x93,0xba, 0xe5,0xc0,0xa0,0x2a, 0x43,0x3c,0x22,0xe0, 0x1d,0x12,0x1b,0x17,
+ 0x0b,0x0e,0x09,0x0d, 0xad,0xf2,0x8b,0xc7, 0xb9,0x2d,0xb6,0xa8, 0xc8,0x14,0x1e,0xa9,
+ 0x85,0x57,0xf1,0x19, 0x4c,0xaf,0x75,0x07, 0xbb,0xee,0x99,0xdd, 0xfd,0xa3,0x7f,0x60,
+ 0x9f,0xf7,0x01,0x26, 0xbc,0x5c,0x72,0xf5, 0xc5,0x44,0x66,0x3b, 0x34,0x5b,0xfb,0x7e,
+ 0x76,0x8b,0x43,0x29, 0xdc,0xcb,0x23,0xc6, 0x68,0xb6,0xed,0xfc, 0x63,0xb8,0xe4,0xf1,
+ 0xca,0xd7,0x31,0xdc, 0x10,0x42,0x63,0x85, 0x40,0x13,0x97,0x22, 0x20,0x84,0xc6,0x11,
+ 0x7d,0x85,0x4a,0x24, 0xf8,0xd2,0xbb,0x3d, 0x11,0xae,0xf9,0x32, 0x6d,0xc7,0x29,0xa1,
+ 0x4b,0x1d,0x9e,0x2f, 0xf3,0xdc,0xb2,0x30, 0xec,0x0d,0x86,0x52, 0xd0,0x77,0xc1,0xe3,
+ 0x6c,0x2b,0xb3,0x16, 0x99,0xa9,0x70,0xb9, 0xfa,0x11,0x94,0x48, 0x22,0x47,0xe9,0x64,
+ 0xc4,0xa8,0xfc,0x8c, 0x1a,0xa0,0xf0,0x3f, 0xd8,0x56,0x7d,0x2c, 0xef,0x22,0x33,0x90,
+ 0xc7,0x87,0x49,0x4e, 0xc1,0xd9,0x38,0xd1, 0xfe,0x8c,0xca,0xa2, 0x36,0x98,0xd4,0x0b,
+ 0xcf,0xa6,0xf5,0x81, 0x28,0xa5,0x7a,0xde, 0x26,0xda,0xb7,0x8e, 0xa4,0x3f,0xad,0xbf,
+ 0xe4,0x2c,0x3a,0x9d, 0x0d,0x50,0x78,0x92, 0x9b,0x6a,0x5f,0xcc, 0x62,0x54,0x7e,0x46,
+ 0xc2,0xf6,0x8d,0x13, 0xe8,0x90,0xd8,0xb8, 0x5e,0x2e,0x39,0xf7, 0xf5,0x82,0xc3,0xaf,
+ 0xbe,0x9f,0x5d,0x80, 0x7c,0x69,0xd0,0x93, 0xa9,0x6f,0xd5,0x2d, 0xb3,0xcf,0x25,0x12,
+ 0x3b,0xc8,0xac,0x99, 0xa7,0x10,0x18,0x7d, 0x6e,0xe8,0x9c,0x63, 0x7b,0xdb,0x3b,0xbb,
+ 0x09,0xcd,0x26,0x78, 0xf4,0x6e,0x59,0x18, 0x01,0xec,0x9a,0xb7, 0xa8,0x83,0x4f,0x9a,
+ 0x65,0xe6,0x95,0x6e, 0x7e,0xaa,0xff,0xe6, 0x08,0x21,0xbc,0xcf, 0xe6,0xef,0x15,0xe8,
+ 0xd9,0xba,0xe7,0x9b, 0xce,0x4a,0x6f,0x36, 0xd4,0xea,0x9f,0x09, 0xd6,0x29,0xb0,0x7c,
+ 0xaf,0x31,0xa4,0xb2, 0x31,0x2a,0x3f,0x23, 0x30,0xc6,0xa5,0x94, 0xc0,0x35,0xa2,0x66,
+ 0x37,0x74,0x4e,0xbc, 0xa6,0xfc,0x82,0xca, 0xb0,0xe0,0x90,0xd0, 0x15,0x33,0xa7,0xd8,
+ 0x4a,0xf1,0x04,0x98, 0xf7,0x41,0xec,0xda, 0x0e,0x7f,0xcd,0x50, 0x2f,0x17,0x91,0xf6,
+ 0x8d,0x76,0x4d,0xd6, 0x4d,0x43,0xef,0xb0, 0x54,0xcc,0xaa,0x4d, 0xdf,0xe4,0x96,0x04,
+ 0xe3,0x9e,0xd1,0xb5, 0x1b,0x4c,0x6a,0x88, 0xb8,0xc1,0x2c,0x1f, 0x7f,0x46,0x65,0x51,
+ 0x04,0x9d,0x5e,0xea, 0x5d,0x01,0x8c,0x35, 0x73,0xfa,0x87,0x74, 0x2e,0xfb,0x0b,0x41,
+ 0x5a,0xb3,0x67,0x1d, 0x52,0x92,0xdb,0xd2, 0x33,0xe9,0x10,0x56, 0x13,0x6d,0xd6,0x47,
+ 0x8c,0x9a,0xd7,0x61, 0x7a,0x37,0xa1,0x0c, 0x8e,0x59,0xf8,0x14, 0x89,0xeb,0x13,0x3c,
+ 0xee,0xce,0xa9,0x27, 0x35,0xb7,0x61,0xc9, 0xed,0xe1,0x1c,0xe5, 0x3c,0x7a,0x47,0xb1,
+ 0x59,0x9c,0xd2,0xdf, 0x3f,0x55,0xf2,0x73, 0x79,0x18,0x14,0xce, 0xbf,0x73,0xc7,0x37,
+ 0xea,0x53,0xf7,0xcd, 0x5b,0x5f,0xfd,0xaa, 0x14,0xdf,0x3d,0x6f, 0x86,0x78,0x44,0xdb,
+ 0x81,0xca,0xaf,0xf3, 0x3e,0xb9,0x68,0xc4, 0x2c,0x38,0x24,0x34, 0x5f,0xc2,0xa3,0x40,
+ 0x72,0x16,0x1d,0xc3, 0x0c,0xbc,0xe2,0x25, 0x8b,0x28,0x3c,0x49, 0x41,0xff,0x0d,0x95,
+ 0x71,0x39,0xa8,0x01, 0xde,0x08,0x0c,0xb3, 0x9c,0xd8,0xb4,0xe4, 0x90,0x64,0x56,0xc1,
+ 0x61,0x7b,0xcb,0x84, 0x70,0xd5,0x32,0xb6, 0x74,0x48,0x6c,0x5c, 0x42,0xd0,0xb8,0x57
+};
+
+static UINT8 T7[256][4]=
+{
+ 0xa7,0x50,0x51,0xf4, 0x65,0x53,0x7e,0x41, 0xa4,0xc3,0x1a,0x17, 0x5e,0x96,0x3a,0x27,
+ 0x6b,0xcb,0x3b,0xab, 0x45,0xf1,0x1f,0x9d, 0x58,0xab,0xac,0xfa, 0x03,0x93,0x4b,0xe3,
+ 0xfa,0x55,0x20,0x30, 0x6d,0xf6,0xad,0x76, 0x76,0x91,0x88,0xcc, 0x4c,0x25,0xf5,0x02,
+ 0xd7,0xfc,0x4f,0xe5, 0xcb,0xd7,0xc5,0x2a, 0x44,0x80,0x26,0x35, 0xa3,0x8f,0xb5,0x62,
+ 0x5a,0x49,0xde,0xb1, 0x1b,0x67,0x25,0xba, 0x0e,0x98,0x45,0xea, 0xc0,0xe1,0x5d,0xfe,
+ 0x75,0x02,0xc3,0x2f, 0xf0,0x12,0x81,0x4c, 0x97,0xa3,0x8d,0x46, 0xf9,0xc6,0x6b,0xd3,
+ 0x5f,0xe7,0x03,0x8f, 0x9c,0x95,0x15,0x92, 0x7a,0xeb,0xbf,0x6d, 0x59,0xda,0x95,0x52,
+ 0x83,0x2d,0xd4,0xbe, 0x21,0xd3,0x58,0x74, 0x69,0x29,0x49,0xe0, 0xc8,0x44,0x8e,0xc9,
+ 0x89,0x6a,0x75,0xc2, 0x79,0x78,0xf4,0x8e, 0x3e,0x6b,0x99,0x58, 0x71,0xdd,0x27,0xb9,
+ 0x4f,0xb6,0xbe,0xe1, 0xad,0x17,0xf0,0x88, 0xac,0x66,0xc9,0x20, 0x3a,0xb4,0x7d,0xce,
+ 0x4a,0x18,0x63,0xdf, 0x31,0x82,0xe5,0x1a, 0x33,0x60,0x97,0x51, 0x7f,0x45,0x62,0x53,
+ 0x77,0xe0,0xb1,0x64, 0xae,0x84,0xbb,0x6b, 0xa0,0x1c,0xfe,0x81, 0x2b,0x94,0xf9,0x08,
+ 0x68,0x58,0x70,0x48, 0xfd,0x19,0x8f,0x45, 0x6c,0x87,0x94,0xde, 0xf8,0xb7,0x52,0x7b,
+ 0xd3,0x23,0xab,0x73, 0x02,0xe2,0x72,0x4b, 0x8f,0x57,0xe3,0x1f, 0xab,0x2a,0x66,0x55,
+ 0x28,0x07,0xb2,0xeb, 0xc2,0x03,0x2f,0xb5, 0x7b,0x9a,0x86,0xc5, 0x08,0xa5,0xd3,0x37,
+ 0x87,0xf2,0x30,0x28, 0xa5,0xb2,0x23,0xbf, 0x6a,0xba,0x02,0x03, 0x82,0x5c,0xed,0x16,
+ 0x1c,0x2b,0x8a,0xcf, 0xb4,0x92,0xa7,0x79, 0xf2,0xf0,0xf3,0x07, 0xe2,0xa1,0x4e,0x69,
+ 0xf4,0xcd,0x65,0xda, 0xbe,0xd5,0x06,0x05, 0x62,0x1f,0xd1,0x34, 0xfe,0x8a,0xc4,0xa6,
+ 0x53,0x9d,0x34,0x2e, 0x55,0xa0,0xa2,0xf3, 0xe1,0x32,0x05,0x8a, 0xeb,0x75,0xa4,0xf6,
+ 0xec,0x39,0x0b,0x83, 0xef,0xaa,0x40,0x60, 0x9f,0x06,0x5e,0x71, 0x10,0x51,0xbd,0x6e,
+ 0x8a,0xf9,0x3e,0x21, 0x06,0x3d,0x96,0xdd, 0x05,0xae,0xdd,0x3e, 0xbd,0x46,0x4d,0xe6,
+ 0x8d,0xb5,0x91,0x54, 0x5d,0x05,0x71,0xc4, 0xd4,0x6f,0x04,0x06, 0x15,0xff,0x60,0x50,
+ 0xfb,0x24,0x19,0x98, 0xe9,0x97,0xd6,0xbd, 0x43,0xcc,0x89,0x40, 0x9e,0x77,0x67,0xd9,
+ 0x42,0xbd,0xb0,0xe8, 0x8b,0x88,0x07,0x89, 0x5b,0x38,0xe7,0x19, 0xee,0xdb,0x79,0xc8,
+ 0x0a,0x47,0xa1,0x7c, 0x0f,0xe9,0x7c,0x42, 0x1e,0xc9,0xf8,0x84, 0x00,0x00,0x00,0x00,
+ 0x86,0x83,0x09,0x80, 0xed,0x48,0x32,0x2b, 0x70,0xac,0x1e,0x11, 0x72,0x4e,0x6c,0x5a,
+ 0xff,0xfb,0xfd,0x0e, 0x38,0x56,0x0f,0x85, 0xd5,0x1e,0x3d,0xae, 0x39,0x27,0x36,0x2d,
+ 0xd9,0x64,0x0a,0x0f, 0xa6,0x21,0x68,0x5c, 0x54,0xd1,0x9b,0x5b, 0x2e,0x3a,0x24,0x36,
+ 0x67,0xb1,0x0c,0x0a, 0xe7,0x0f,0x93,0x57, 0x96,0xd2,0xb4,0xee, 0x91,0x9e,0x1b,0x9b,
+ 0xc5,0x4f,0x80,0xc0, 0x20,0xa2,0x61,0xdc, 0x4b,0x69,0x5a,0x77, 0x1a,0x16,0x1c,0x12,
+ 0xba,0x0a,0xe2,0x93, 0x2a,0xe5,0xc0,0xa0, 0xe0,0x43,0x3c,0x22, 0x17,0x1d,0x12,0x1b,
+ 0x0d,0x0b,0x0e,0x09, 0xc7,0xad,0xf2,0x8b, 0xa8,0xb9,0x2d,0xb6, 0xa9,0xc8,0x14,0x1e,
+ 0x19,0x85,0x57,0xf1, 0x07,0x4c,0xaf,0x75, 0xdd,0xbb,0xee,0x99, 0x60,0xfd,0xa3,0x7f,
+ 0x26,0x9f,0xf7,0x01, 0xf5,0xbc,0x5c,0x72, 0x3b,0xc5,0x44,0x66, 0x7e,0x34,0x5b,0xfb,
+ 0x29,0x76,0x8b,0x43, 0xc6,0xdc,0xcb,0x23, 0xfc,0x68,0xb6,0xed, 0xf1,0x63,0xb8,0xe4,
+ 0xdc,0xca,0xd7,0x31, 0x85,0x10,0x42,0x63, 0x22,0x40,0x13,0x97, 0x11,0x20,0x84,0xc6,
+ 0x24,0x7d,0x85,0x4a, 0x3d,0xf8,0xd2,0xbb, 0x32,0x11,0xae,0xf9, 0xa1,0x6d,0xc7,0x29,
+ 0x2f,0x4b,0x1d,0x9e, 0x30,0xf3,0xdc,0xb2, 0x52,0xec,0x0d,0x86, 0xe3,0xd0,0x77,0xc1,
+ 0x16,0x6c,0x2b,0xb3, 0xb9,0x99,0xa9,0x70, 0x48,0xfa,0x11,0x94, 0x64,0x22,0x47,0xe9,
+ 0x8c,0xc4,0xa8,0xfc, 0x3f,0x1a,0xa0,0xf0, 0x2c,0xd8,0x56,0x7d, 0x90,0xef,0x22,0x33,
+ 0x4e,0xc7,0x87,0x49, 0xd1,0xc1,0xd9,0x38, 0xa2,0xfe,0x8c,0xca, 0x0b,0x36,0x98,0xd4,
+ 0x81,0xcf,0xa6,0xf5, 0xde,0x28,0xa5,0x7a, 0x8e,0x26,0xda,0xb7, 0xbf,0xa4,0x3f,0xad,
+ 0x9d,0xe4,0x2c,0x3a, 0x92,0x0d,0x50,0x78, 0xcc,0x9b,0x6a,0x5f, 0x46,0x62,0x54,0x7e,
+ 0x13,0xc2,0xf6,0x8d, 0xb8,0xe8,0x90,0xd8, 0xf7,0x5e,0x2e,0x39, 0xaf,0xf5,0x82,0xc3,
+ 0x80,0xbe,0x9f,0x5d, 0x93,0x7c,0x69,0xd0, 0x2d,0xa9,0x6f,0xd5, 0x12,0xb3,0xcf,0x25,
+ 0x99,0x3b,0xc8,0xac, 0x7d,0xa7,0x10,0x18, 0x63,0x6e,0xe8,0x9c, 0xbb,0x7b,0xdb,0x3b,
+ 0x78,0x09,0xcd,0x26, 0x18,0xf4,0x6e,0x59, 0xb7,0x01,0xec,0x9a, 0x9a,0xa8,0x83,0x4f,
+ 0x6e,0x65,0xe6,0x95, 0xe6,0x7e,0xaa,0xff, 0xcf,0x08,0x21,0xbc, 0xe8,0xe6,0xef,0x15,
+ 0x9b,0xd9,0xba,0xe7, 0x36,0xce,0x4a,0x6f, 0x09,0xd4,0xea,0x9f, 0x7c,0xd6,0x29,0xb0,
+ 0xb2,0xaf,0x31,0xa4, 0x23,0x31,0x2a,0x3f, 0x94,0x30,0xc6,0xa5, 0x66,0xc0,0x35,0xa2,
+ 0xbc,0x37,0x74,0x4e, 0xca,0xa6,0xfc,0x82, 0xd0,0xb0,0xe0,0x90, 0xd8,0x15,0x33,0xa7,
+ 0x98,0x4a,0xf1,0x04, 0xda,0xf7,0x41,0xec, 0x50,0x0e,0x7f,0xcd, 0xf6,0x2f,0x17,0x91,
+ 0xd6,0x8d,0x76,0x4d, 0xb0,0x4d,0x43,0xef, 0x4d,0x54,0xcc,0xaa, 0x04,0xdf,0xe4,0x96,
+ 0xb5,0xe3,0x9e,0xd1, 0x88,0x1b,0x4c,0x6a, 0x1f,0xb8,0xc1,0x2c, 0x51,0x7f,0x46,0x65,
+ 0xea,0x04,0x9d,0x5e, 0x35,0x5d,0x01,0x8c, 0x74,0x73,0xfa,0x87, 0x41,0x2e,0xfb,0x0b,
+ 0x1d,0x5a,0xb3,0x67, 0xd2,0x52,0x92,0xdb, 0x56,0x33,0xe9,0x10, 0x47,0x13,0x6d,0xd6,
+ 0x61,0x8c,0x9a,0xd7, 0x0c,0x7a,0x37,0xa1, 0x14,0x8e,0x59,0xf8, 0x3c,0x89,0xeb,0x13,
+ 0x27,0xee,0xce,0xa9, 0xc9,0x35,0xb7,0x61, 0xe5,0xed,0xe1,0x1c, 0xb1,0x3c,0x7a,0x47,
+ 0xdf,0x59,0x9c,0xd2, 0x73,0x3f,0x55,0xf2, 0xce,0x79,0x18,0x14, 0x37,0xbf,0x73,0xc7,
+ 0xcd,0xea,0x53,0xf7, 0xaa,0x5b,0x5f,0xfd, 0x6f,0x14,0xdf,0x3d, 0xdb,0x86,0x78,0x44,
+ 0xf3,0x81,0xca,0xaf, 0xc4,0x3e,0xb9,0x68, 0x34,0x2c,0x38,0x24, 0x40,0x5f,0xc2,0xa3,
+ 0xc3,0x72,0x16,0x1d, 0x25,0x0c,0xbc,0xe2, 0x49,0x8b,0x28,0x3c, 0x95,0x41,0xff,0x0d,
+ 0x01,0x71,0x39,0xa8, 0xb3,0xde,0x08,0x0c, 0xe4,0x9c,0xd8,0xb4, 0xc1,0x90,0x64,0x56,
+ 0x84,0x61,0x7b,0xcb, 0xb6,0x70,0xd5,0x32, 0x5c,0x74,0x48,0x6c, 0x57,0x42,0xd0,0xb8
+};
+
+static UINT8 T8[256][4]=
+{
+ 0xf4,0xa7,0x50,0x51, 0x41,0x65,0x53,0x7e, 0x17,0xa4,0xc3,0x1a, 0x27,0x5e,0x96,0x3a,
+ 0xab,0x6b,0xcb,0x3b, 0x9d,0x45,0xf1,0x1f, 0xfa,0x58,0xab,0xac, 0xe3,0x03,0x93,0x4b,
+ 0x30,0xfa,0x55,0x20, 0x76,0x6d,0xf6,0xad, 0xcc,0x76,0x91,0x88, 0x02,0x4c,0x25,0xf5,
+ 0xe5,0xd7,0xfc,0x4f, 0x2a,0xcb,0xd7,0xc5, 0x35,0x44,0x80,0x26, 0x62,0xa3,0x8f,0xb5,
+ 0xb1,0x5a,0x49,0xde, 0xba,0x1b,0x67,0x25, 0xea,0x0e,0x98,0x45, 0xfe,0xc0,0xe1,0x5d,
+ 0x2f,0x75,0x02,0xc3, 0x4c,0xf0,0x12,0x81, 0x46,0x97,0xa3,0x8d, 0xd3,0xf9,0xc6,0x6b,
+ 0x8f,0x5f,0xe7,0x03, 0x92,0x9c,0x95,0x15, 0x6d,0x7a,0xeb,0xbf, 0x52,0x59,0xda,0x95,
+ 0xbe,0x83,0x2d,0xd4, 0x74,0x21,0xd3,0x58, 0xe0,0x69,0x29,0x49, 0xc9,0xc8,0x44,0x8e,
+ 0xc2,0x89,0x6a,0x75, 0x8e,0x79,0x78,0xf4, 0x58,0x3e,0x6b,0x99, 0xb9,0x71,0xdd,0x27,
+ 0xe1,0x4f,0xb6,0xbe, 0x88,0xad,0x17,0xf0, 0x20,0xac,0x66,0xc9, 0xce,0x3a,0xb4,0x7d,
+ 0xdf,0x4a,0x18,0x63, 0x1a,0x31,0x82,0xe5, 0x51,0x33,0x60,0x97, 0x53,0x7f,0x45,0x62,
+ 0x64,0x77,0xe0,0xb1, 0x6b,0xae,0x84,0xbb, 0x81,0xa0,0x1c,0xfe, 0x08,0x2b,0x94,0xf9,
+ 0x48,0x68,0x58,0x70, 0x45,0xfd,0x19,0x8f, 0xde,0x6c,0x87,0x94, 0x7b,0xf8,0xb7,0x52,
+ 0x73,0xd3,0x23,0xab, 0x4b,0x02,0xe2,0x72, 0x1f,0x8f,0x57,0xe3, 0x55,0xab,0x2a,0x66,
+ 0xeb,0x28,0x07,0xb2, 0xb5,0xc2,0x03,0x2f, 0xc5,0x7b,0x9a,0x86, 0x37,0x08,0xa5,0xd3,
+ 0x28,0x87,0xf2,0x30, 0xbf,0xa5,0xb2,0x23, 0x03,0x6a,0xba,0x02, 0x16,0x82,0x5c,0xed,
+ 0xcf,0x1c,0x2b,0x8a, 0x79,0xb4,0x92,0xa7, 0x07,0xf2,0xf0,0xf3, 0x69,0xe2,0xa1,0x4e,
+ 0xda,0xf4,0xcd,0x65, 0x05,0xbe,0xd5,0x06, 0x34,0x62,0x1f,0xd1, 0xa6,0xfe,0x8a,0xc4,
+ 0x2e,0x53,0x9d,0x34, 0xf3,0x55,0xa0,0xa2, 0x8a,0xe1,0x32,0x05, 0xf6,0xeb,0x75,0xa4,
+ 0x83,0xec,0x39,0x0b, 0x60,0xef,0xaa,0x40, 0x71,0x9f,0x06,0x5e, 0x6e,0x10,0x51,0xbd,
+ 0x21,0x8a,0xf9,0x3e, 0xdd,0x06,0x3d,0x96, 0x3e,0x05,0xae,0xdd, 0xe6,0xbd,0x46,0x4d,
+ 0x54,0x8d,0xb5,0x91, 0xc4,0x5d,0x05,0x71, 0x06,0xd4,0x6f,0x04, 0x50,0x15,0xff,0x60,
+ 0x98,0xfb,0x24,0x19, 0xbd,0xe9,0x97,0xd6, 0x40,0x43,0xcc,0x89, 0xd9,0x9e,0x77,0x67,
+ 0xe8,0x42,0xbd,0xb0, 0x89,0x8b,0x88,0x07, 0x19,0x5b,0x38,0xe7, 0xc8,0xee,0xdb,0x79,
+ 0x7c,0x0a,0x47,0xa1, 0x42,0x0f,0xe9,0x7c, 0x84,0x1e,0xc9,0xf8, 0x00,0x00,0x00,0x00,
+ 0x80,0x86,0x83,0x09, 0x2b,0xed,0x48,0x32, 0x11,0x70,0xac,0x1e, 0x5a,0x72,0x4e,0x6c,
+ 0x0e,0xff,0xfb,0xfd, 0x85,0x38,0x56,0x0f, 0xae,0xd5,0x1e,0x3d, 0x2d,0x39,0x27,0x36,
+ 0x0f,0xd9,0x64,0x0a, 0x5c,0xa6,0x21,0x68, 0x5b,0x54,0xd1,0x9b, 0x36,0x2e,0x3a,0x24,
+ 0x0a,0x67,0xb1,0x0c, 0x57,0xe7,0x0f,0x93, 0xee,0x96,0xd2,0xb4, 0x9b,0x91,0x9e,0x1b,
+ 0xc0,0xc5,0x4f,0x80, 0xdc,0x20,0xa2,0x61, 0x77,0x4b,0x69,0x5a, 0x12,0x1a,0x16,0x1c,
+ 0x93,0xba,0x0a,0xe2, 0xa0,0x2a,0xe5,0xc0, 0x22,0xe0,0x43,0x3c, 0x1b,0x17,0x1d,0x12,
+ 0x09,0x0d,0x0b,0x0e, 0x8b,0xc7,0xad,0xf2, 0xb6,0xa8,0xb9,0x2d, 0x1e,0xa9,0xc8,0x14,
+ 0xf1,0x19,0x85,0x57, 0x75,0x07,0x4c,0xaf, 0x99,0xdd,0xbb,0xee, 0x7f,0x60,0xfd,0xa3,
+ 0x01,0x26,0x9f,0xf7, 0x72,0xf5,0xbc,0x5c, 0x66,0x3b,0xc5,0x44, 0xfb,0x7e,0x34,0x5b,
+ 0x43,0x29,0x76,0x8b, 0x23,0xc6,0xdc,0xcb, 0xed,0xfc,0x68,0xb6, 0xe4,0xf1,0x63,0xb8,
+ 0x31,0xdc,0xca,0xd7, 0x63,0x85,0x10,0x42, 0x97,0x22,0x40,0x13, 0xc6,0x11,0x20,0x84,
+ 0x4a,0x24,0x7d,0x85, 0xbb,0x3d,0xf8,0xd2, 0xf9,0x32,0x11,0xae, 0x29,0xa1,0x6d,0xc7,
+ 0x9e,0x2f,0x4b,0x1d, 0xb2,0x30,0xf3,0xdc, 0x86,0x52,0xec,0x0d, 0xc1,0xe3,0xd0,0x77,
+ 0xb3,0x16,0x6c,0x2b, 0x70,0xb9,0x99,0xa9, 0x94,0x48,0xfa,0x11, 0xe9,0x64,0x22,0x47,
+ 0xfc,0x8c,0xc4,0xa8, 0xf0,0x3f,0x1a,0xa0, 0x7d,0x2c,0xd8,0x56, 0x33,0x90,0xef,0x22,
+ 0x49,0x4e,0xc7,0x87, 0x38,0xd1,0xc1,0xd9, 0xca,0xa2,0xfe,0x8c, 0xd4,0x0b,0x36,0x98,
+ 0xf5,0x81,0xcf,0xa6, 0x7a,0xde,0x28,0xa5, 0xb7,0x8e,0x26,0xda, 0xad,0xbf,0xa4,0x3f,
+ 0x3a,0x9d,0xe4,0x2c, 0x78,0x92,0x0d,0x50, 0x5f,0xcc,0x9b,0x6a, 0x7e,0x46,0x62,0x54,
+ 0x8d,0x13,0xc2,0xf6, 0xd8,0xb8,0xe8,0x90, 0x39,0xf7,0x5e,0x2e, 0xc3,0xaf,0xf5,0x82,
+ 0x5d,0x80,0xbe,0x9f, 0xd0,0x93,0x7c,0x69, 0xd5,0x2d,0xa9,0x6f, 0x25,0x12,0xb3,0xcf,
+ 0xac,0x99,0x3b,0xc8, 0x18,0x7d,0xa7,0x10, 0x9c,0x63,0x6e,0xe8, 0x3b,0xbb,0x7b,0xdb,
+ 0x26,0x78,0x09,0xcd, 0x59,0x18,0xf4,0x6e, 0x9a,0xb7,0x01,0xec, 0x4f,0x9a,0xa8,0x83,
+ 0x95,0x6e,0x65,0xe6, 0xff,0xe6,0x7e,0xaa, 0xbc,0xcf,0x08,0x21, 0x15,0xe8,0xe6,0xef,
+ 0xe7,0x9b,0xd9,0xba, 0x6f,0x36,0xce,0x4a, 0x9f,0x09,0xd4,0xea, 0xb0,0x7c,0xd6,0x29,
+ 0xa4,0xb2,0xaf,0x31, 0x3f,0x23,0x31,0x2a, 0xa5,0x94,0x30,0xc6, 0xa2,0x66,0xc0,0x35,
+ 0x4e,0xbc,0x37,0x74, 0x82,0xca,0xa6,0xfc, 0x90,0xd0,0xb0,0xe0, 0xa7,0xd8,0x15,0x33,
+ 0x04,0x98,0x4a,0xf1, 0xec,0xda,0xf7,0x41, 0xcd,0x50,0x0e,0x7f, 0x91,0xf6,0x2f,0x17,
+ 0x4d,0xd6,0x8d,0x76, 0xef,0xb0,0x4d,0x43, 0xaa,0x4d,0x54,0xcc, 0x96,0x04,0xdf,0xe4,
+ 0xd1,0xb5,0xe3,0x9e, 0x6a,0x88,0x1b,0x4c, 0x2c,0x1f,0xb8,0xc1, 0x65,0x51,0x7f,0x46,
+ 0x5e,0xea,0x04,0x9d, 0x8c,0x35,0x5d,0x01, 0x87,0x74,0x73,0xfa, 0x0b,0x41,0x2e,0xfb,
+ 0x67,0x1d,0x5a,0xb3, 0xdb,0xd2,0x52,0x92, 0x10,0x56,0x33,0xe9, 0xd6,0x47,0x13,0x6d,
+ 0xd7,0x61,0x8c,0x9a, 0xa1,0x0c,0x7a,0x37, 0xf8,0x14,0x8e,0x59, 0x13,0x3c,0x89,0xeb,
+ 0xa9,0x27,0xee,0xce, 0x61,0xc9,0x35,0xb7, 0x1c,0xe5,0xed,0xe1, 0x47,0xb1,0x3c,0x7a,
+ 0xd2,0xdf,0x59,0x9c, 0xf2,0x73,0x3f,0x55, 0x14,0xce,0x79,0x18, 0xc7,0x37,0xbf,0x73,
+ 0xf7,0xcd,0xea,0x53, 0xfd,0xaa,0x5b,0x5f, 0x3d,0x6f,0x14,0xdf, 0x44,0xdb,0x86,0x78,
+ 0xaf,0xf3,0x81,0xca, 0x68,0xc4,0x3e,0xb9, 0x24,0x34,0x2c,0x38, 0xa3,0x40,0x5f,0xc2,
+ 0x1d,0xc3,0x72,0x16, 0xe2,0x25,0x0c,0xbc, 0x3c,0x49,0x8b,0x28, 0x0d,0x95,0x41,0xff,
+ 0xa8,0x01,0x71,0x39, 0x0c,0xb3,0xde,0x08, 0xb4,0xe4,0x9c,0xd8, 0x56,0xc1,0x90,0x64,
+ 0xcb,0x84,0x61,0x7b, 0x32,0xb6,0x70,0xd5, 0x6c,0x5c,0x74,0x48, 0xb8,0x57,0x42,0xd0
+};
+
+static UINT8 S5[256]=
+{
+ 0x52,0x09,0x6a,0xd5,
+ 0x30,0x36,0xa5,0x38,
+ 0xbf,0x40,0xa3,0x9e,
+ 0x81,0xf3,0xd7,0xfb,
+ 0x7c,0xe3,0x39,0x82,
+ 0x9b,0x2f,0xff,0x87,
+ 0x34,0x8e,0x43,0x44,
+ 0xc4,0xde,0xe9,0xcb,
+ 0x54,0x7b,0x94,0x32,
+ 0xa6,0xc2,0x23,0x3d,
+ 0xee,0x4c,0x95,0x0b,
+ 0x42,0xfa,0xc3,0x4e,
+ 0x08,0x2e,0xa1,0x66,
+ 0x28,0xd9,0x24,0xb2,
+ 0x76,0x5b,0xa2,0x49,
+ 0x6d,0x8b,0xd1,0x25,
+ 0x72,0xf8,0xf6,0x64,
+ 0x86,0x68,0x98,0x16,
+ 0xd4,0xa4,0x5c,0xcc,
+ 0x5d,0x65,0xb6,0x92,
+ 0x6c,0x70,0x48,0x50,
+ 0xfd,0xed,0xb9,0xda,
+ 0x5e,0x15,0x46,0x57,
+ 0xa7,0x8d,0x9d,0x84,
+ 0x90,0xd8,0xab,0x00,
+ 0x8c,0xbc,0xd3,0x0a,
+ 0xf7,0xe4,0x58,0x05,
+ 0xb8,0xb3,0x45,0x06,
+ 0xd0,0x2c,0x1e,0x8f,
+ 0xca,0x3f,0x0f,0x02,
+ 0xc1,0xaf,0xbd,0x03,
+ 0x01,0x13,0x8a,0x6b,
+ 0x3a,0x91,0x11,0x41,
+ 0x4f,0x67,0xdc,0xea,
+ 0x97,0xf2,0xcf,0xce,
+ 0xf0,0xb4,0xe6,0x73,
+ 0x96,0xac,0x74,0x22,
+ 0xe7,0xad,0x35,0x85,
+ 0xe2,0xf9,0x37,0xe8,
+ 0x1c,0x75,0xdf,0x6e,
+ 0x47,0xf1,0x1a,0x71,
+ 0x1d,0x29,0xc5,0x89,
+ 0x6f,0xb7,0x62,0x0e,
+ 0xaa,0x18,0xbe,0x1b,
+ 0xfc,0x56,0x3e,0x4b,
+ 0xc6,0xd2,0x79,0x20,
+ 0x9a,0xdb,0xc0,0xfe,
+ 0x78,0xcd,0x5a,0xf4,
+ 0x1f,0xdd,0xa8,0x33,
+ 0x88,0x07,0xc7,0x31,
+ 0xb1,0x12,0x10,0x59,
+ 0x27,0x80,0xec,0x5f,
+ 0x60,0x51,0x7f,0xa9,
+ 0x19,0xb5,0x4a,0x0d,
+ 0x2d,0xe5,0x7a,0x9f,
+ 0x93,0xc9,0x9c,0xef,
+ 0xa0,0xe0,0x3b,0x4d,
+ 0xae,0x2a,0xf5,0xb0,
+ 0xc8,0xeb,0xbb,0x3c,
+ 0x83,0x53,0x99,0x61,
+ 0x17,0x2b,0x04,0x7e,
+ 0xba,0x77,0xd6,0x26,
+ 0xe1,0x69,0x14,0x63,
+ 0x55,0x21,0x0c,0x7d
+};
+
+static UINT8 U1[256][4]=
+{
+ 0x00,0x00,0x00,0x00, 0x0e,0x09,0x0d,0x0b, 0x1c,0x12,0x1a,0x16, 0x12,0x1b,0x17,0x1d,
+ 0x38,0x24,0x34,0x2c, 0x36,0x2d,0x39,0x27, 0x24,0x36,0x2e,0x3a, 0x2a,0x3f,0x23,0x31,
+ 0x70,0x48,0x68,0x58, 0x7e,0x41,0x65,0x53, 0x6c,0x5a,0x72,0x4e, 0x62,0x53,0x7f,0x45,
+ 0x48,0x6c,0x5c,0x74, 0x46,0x65,0x51,0x7f, 0x54,0x7e,0x46,0x62, 0x5a,0x77,0x4b,0x69,
+ 0xe0,0x90,0xd0,0xb0, 0xee,0x99,0xdd,0xbb, 0xfc,0x82,0xca,0xa6, 0xf2,0x8b,0xc7,0xad,
+ 0xd8,0xb4,0xe4,0x9c, 0xd6,0xbd,0xe9,0x97, 0xc4,0xa6,0xfe,0x8a, 0xca,0xaf,0xf3,0x81,
+ 0x90,0xd8,0xb8,0xe8, 0x9e,0xd1,0xb5,0xe3, 0x8c,0xca,0xa2,0xfe, 0x82,0xc3,0xaf,0xf5,
+ 0xa8,0xfc,0x8c,0xc4, 0xa6,0xf5,0x81,0xcf, 0xb4,0xee,0x96,0xd2, 0xba,0xe7,0x9b,0xd9,
+ 0xdb,0x3b,0xbb,0x7b, 0xd5,0x32,0xb6,0x70, 0xc7,0x29,0xa1,0x6d, 0xc9,0x20,0xac,0x66,
+ 0xe3,0x1f,0x8f,0x57, 0xed,0x16,0x82,0x5c, 0xff,0x0d,0x95,0x41, 0xf1,0x04,0x98,0x4a,
+ 0xab,0x73,0xd3,0x23, 0xa5,0x7a,0xde,0x28, 0xb7,0x61,0xc9,0x35, 0xb9,0x68,0xc4,0x3e,
+ 0x93,0x57,0xe7,0x0f, 0x9d,0x5e,0xea,0x04, 0x8f,0x45,0xfd,0x19, 0x81,0x4c,0xf0,0x12,
+ 0x3b,0xab,0x6b,0xcb, 0x35,0xa2,0x66,0xc0, 0x27,0xb9,0x71,0xdd, 0x29,0xb0,0x7c,0xd6,
+ 0x03,0x8f,0x5f,0xe7, 0x0d,0x86,0x52,0xec, 0x1f,0x9d,0x45,0xf1, 0x11,0x94,0x48,0xfa,
+ 0x4b,0xe3,0x03,0x93, 0x45,0xea,0x0e,0x98, 0x57,0xf1,0x19,0x85, 0x59,0xf8,0x14,0x8e,
+ 0x73,0xc7,0x37,0xbf, 0x7d,0xce,0x3a,0xb4, 0x6f,0xd5,0x2d,0xa9, 0x61,0xdc,0x20,0xa2,
+ 0xad,0x76,0x6d,0xf6, 0xa3,0x7f,0x60,0xfd, 0xb1,0x64,0x77,0xe0, 0xbf,0x6d,0x7a,0xeb,
+ 0x95,0x52,0x59,0xda, 0x9b,0x5b,0x54,0xd1, 0x89,0x40,0x43,0xcc, 0x87,0x49,0x4e,0xc7,
+ 0xdd,0x3e,0x05,0xae, 0xd3,0x37,0x08,0xa5, 0xc1,0x2c,0x1f,0xb8, 0xcf,0x25,0x12,0xb3,
+ 0xe5,0x1a,0x31,0x82, 0xeb,0x13,0x3c,0x89, 0xf9,0x08,0x2b,0x94, 0xf7,0x01,0x26,0x9f,
+ 0x4d,0xe6,0xbd,0x46, 0x43,0xef,0xb0,0x4d, 0x51,0xf4,0xa7,0x50, 0x5f,0xfd,0xaa,0x5b,
+ 0x75,0xc2,0x89,0x6a, 0x7b,0xcb,0x84,0x61, 0x69,0xd0,0x93,0x7c, 0x67,0xd9,0x9e,0x77,
+ 0x3d,0xae,0xd5,0x1e, 0x33,0xa7,0xd8,0x15, 0x21,0xbc,0xcf,0x08, 0x2f,0xb5,0xc2,0x03,
+ 0x05,0x8a,0xe1,0x32, 0x0b,0x83,0xec,0x39, 0x19,0x98,0xfb,0x24, 0x17,0x91,0xf6,0x2f,
+ 0x76,0x4d,0xd6,0x8d, 0x78,0x44,0xdb,0x86, 0x6a,0x5f,0xcc,0x9b, 0x64,0x56,0xc1,0x90,
+ 0x4e,0x69,0xe2,0xa1, 0x40,0x60,0xef,0xaa, 0x52,0x7b,0xf8,0xb7, 0x5c,0x72,0xf5,0xbc,
+ 0x06,0x05,0xbe,0xd5, 0x08,0x0c,0xb3,0xde, 0x1a,0x17,0xa4,0xc3, 0x14,0x1e,0xa9,0xc8,
+ 0x3e,0x21,0x8a,0xf9, 0x30,0x28,0x87,0xf2, 0x22,0x33,0x90,0xef, 0x2c,0x3a,0x9d,0xe4,
+ 0x96,0xdd,0x06,0x3d, 0x98,0xd4,0x0b,0x36, 0x8a,0xcf,0x1c,0x2b, 0x84,0xc6,0x11,0x20,
+ 0xae,0xf9,0x32,0x11, 0xa0,0xf0,0x3f,0x1a, 0xb2,0xeb,0x28,0x07, 0xbc,0xe2,0x25,0x0c,
+ 0xe6,0x95,0x6e,0x65, 0xe8,0x9c,0x63,0x6e, 0xfa,0x87,0x74,0x73, 0xf4,0x8e,0x79,0x78,
+ 0xde,0xb1,0x5a,0x49, 0xd0,0xb8,0x57,0x42, 0xc2,0xa3,0x40,0x5f, 0xcc,0xaa,0x4d,0x54,
+ 0x41,0xec,0xda,0xf7, 0x4f,0xe5,0xd7,0xfc, 0x5d,0xfe,0xc0,0xe1, 0x53,0xf7,0xcd,0xea,
+ 0x79,0xc8,0xee,0xdb, 0x77,0xc1,0xe3,0xd0, 0x65,0xda,0xf4,0xcd, 0x6b,0xd3,0xf9,0xc6,
+ 0x31,0xa4,0xb2,0xaf, 0x3f,0xad,0xbf,0xa4, 0x2d,0xb6,0xa8,0xb9, 0x23,0xbf,0xa5,0xb2,
+ 0x09,0x80,0x86,0x83, 0x07,0x89,0x8b,0x88, 0x15,0x92,0x9c,0x95, 0x1b,0x9b,0x91,0x9e,
+ 0xa1,0x7c,0x0a,0x47, 0xaf,0x75,0x07,0x4c, 0xbd,0x6e,0x10,0x51, 0xb3,0x67,0x1d,0x5a,
+ 0x99,0x58,0x3e,0x6b, 0x97,0x51,0x33,0x60, 0x85,0x4a,0x24,0x7d, 0x8b,0x43,0x29,0x76,
+ 0xd1,0x34,0x62,0x1f, 0xdf,0x3d,0x6f,0x14, 0xcd,0x26,0x78,0x09, 0xc3,0x2f,0x75,0x02,
+ 0xe9,0x10,0x56,0x33, 0xe7,0x19,0x5b,0x38, 0xf5,0x02,0x4c,0x25, 0xfb,0x0b,0x41,0x2e,
+ 0x9a,0xd7,0x61,0x8c, 0x94,0xde,0x6c,0x87, 0x86,0xc5,0x7b,0x9a, 0x88,0xcc,0x76,0x91,
+ 0xa2,0xf3,0x55,0xa0, 0xac,0xfa,0x58,0xab, 0xbe,0xe1,0x4f,0xb6, 0xb0,0xe8,0x42,0xbd,
+ 0xea,0x9f,0x09,0xd4, 0xe4,0x96,0x04,0xdf, 0xf6,0x8d,0x13,0xc2, 0xf8,0x84,0x1e,0xc9,
+ 0xd2,0xbb,0x3d,0xf8, 0xdc,0xb2,0x30,0xf3, 0xce,0xa9,0x27,0xee, 0xc0,0xa0,0x2a,0xe5,
+ 0x7a,0x47,0xb1,0x3c, 0x74,0x4e,0xbc,0x37, 0x66,0x55,0xab,0x2a, 0x68,0x5c,0xa6,0x21,
+ 0x42,0x63,0x85,0x10, 0x4c,0x6a,0x88,0x1b, 0x5e,0x71,0x9f,0x06, 0x50,0x78,0x92,0x0d,
+ 0x0a,0x0f,0xd9,0x64, 0x04,0x06,0xd4,0x6f, 0x16,0x1d,0xc3,0x72, 0x18,0x14,0xce,0x79,
+ 0x32,0x2b,0xed,0x48, 0x3c,0x22,0xe0,0x43, 0x2e,0x39,0xf7,0x5e, 0x20,0x30,0xfa,0x55,
+ 0xec,0x9a,0xb7,0x01, 0xe2,0x93,0xba,0x0a, 0xf0,0x88,0xad,0x17, 0xfe,0x81,0xa0,0x1c,
+ 0xd4,0xbe,0x83,0x2d, 0xda,0xb7,0x8e,0x26, 0xc8,0xac,0x99,0x3b, 0xc6,0xa5,0x94,0x30,
+ 0x9c,0xd2,0xdf,0x59, 0x92,0xdb,0xd2,0x52, 0x80,0xc0,0xc5,0x4f, 0x8e,0xc9,0xc8,0x44,
+ 0xa4,0xf6,0xeb,0x75, 0xaa,0xff,0xe6,0x7e, 0xb8,0xe4,0xf1,0x63, 0xb6,0xed,0xfc,0x68,
+ 0x0c,0x0a,0x67,0xb1, 0x02,0x03,0x6a,0xba, 0x10,0x18,0x7d,0xa7, 0x1e,0x11,0x70,0xac,
+ 0x34,0x2e,0x53,0x9d, 0x3a,0x27,0x5e,0x96, 0x28,0x3c,0x49,0x8b, 0x26,0x35,0x44,0x80,
+ 0x7c,0x42,0x0f,0xe9, 0x72,0x4b,0x02,0xe2, 0x60,0x50,0x15,0xff, 0x6e,0x59,0x18,0xf4,
+ 0x44,0x66,0x3b,0xc5, 0x4a,0x6f,0x36,0xce, 0x58,0x74,0x21,0xd3, 0x56,0x7d,0x2c,0xd8,
+ 0x37,0xa1,0x0c,0x7a, 0x39,0xa8,0x01,0x71, 0x2b,0xb3,0x16,0x6c, 0x25,0xba,0x1b,0x67,
+ 0x0f,0x85,0x38,0x56, 0x01,0x8c,0x35,0x5d, 0x13,0x97,0x22,0x40, 0x1d,0x9e,0x2f,0x4b,
+ 0x47,0xe9,0x64,0x22, 0x49,0xe0,0x69,0x29, 0x5b,0xfb,0x7e,0x34, 0x55,0xf2,0x73,0x3f,
+ 0x7f,0xcd,0x50,0x0e, 0x71,0xc4,0x5d,0x05, 0x63,0xdf,0x4a,0x18, 0x6d,0xd6,0x47,0x13,
+ 0xd7,0x31,0xdc,0xca, 0xd9,0x38,0xd1,0xc1, 0xcb,0x23,0xc6,0xdc, 0xc5,0x2a,0xcb,0xd7,
+ 0xef,0x15,0xe8,0xe6, 0xe1,0x1c,0xe5,0xed, 0xf3,0x07,0xf2,0xf0, 0xfd,0x0e,0xff,0xfb,
+ 0xa7,0x79,0xb4,0x92, 0xa9,0x70,0xb9,0x99, 0xbb,0x6b,0xae,0x84, 0xb5,0x62,0xa3,0x8f,
+ 0x9f,0x5d,0x80,0xbe, 0x91,0x54,0x8d,0xb5, 0x83,0x4f,0x9a,0xa8, 0x8d,0x46,0x97,0xa3
+};
+
+static UINT8 U2[256][4]=
+{
+ 0x00,0x00,0x00,0x00, 0x0b,0x0e,0x09,0x0d, 0x16,0x1c,0x12,0x1a, 0x1d,0x12,0x1b,0x17,
+ 0x2c,0x38,0x24,0x34, 0x27,0x36,0x2d,0x39, 0x3a,0x24,0x36,0x2e, 0x31,0x2a,0x3f,0x23,
+ 0x58,0x70,0x48,0x68, 0x53,0x7e,0x41,0x65, 0x4e,0x6c,0x5a,0x72, 0x45,0x62,0x53,0x7f,
+ 0x74,0x48,0x6c,0x5c, 0x7f,0x46,0x65,0x51, 0x62,0x54,0x7e,0x46, 0x69,0x5a,0x77,0x4b,
+ 0xb0,0xe0,0x90,0xd0, 0xbb,0xee,0x99,0xdd, 0xa6,0xfc,0x82,0xca, 0xad,0xf2,0x8b,0xc7,
+ 0x9c,0xd8,0xb4,0xe4, 0x97,0xd6,0xbd,0xe9, 0x8a,0xc4,0xa6,0xfe, 0x81,0xca,0xaf,0xf3,
+ 0xe8,0x90,0xd8,0xb8, 0xe3,0x9e,0xd1,0xb5, 0xfe,0x8c,0xca,0xa2, 0xf5,0x82,0xc3,0xaf,
+ 0xc4,0xa8,0xfc,0x8c, 0xcf,0xa6,0xf5,0x81, 0xd2,0xb4,0xee,0x96, 0xd9,0xba,0xe7,0x9b,
+ 0x7b,0xdb,0x3b,0xbb, 0x70,0xd5,0x32,0xb6, 0x6d,0xc7,0x29,0xa1, 0x66,0xc9,0x20,0xac,
+ 0x57,0xe3,0x1f,0x8f, 0x5c,0xed,0x16,0x82, 0x41,0xff,0x0d,0x95, 0x4a,0xf1,0x04,0x98,
+ 0x23,0xab,0x73,0xd3, 0x28,0xa5,0x7a,0xde, 0x35,0xb7,0x61,0xc9, 0x3e,0xb9,0x68,0xc4,
+ 0x0f,0x93,0x57,0xe7, 0x04,0x9d,0x5e,0xea, 0x19,0x8f,0x45,0xfd, 0x12,0x81,0x4c,0xf0,
+ 0xcb,0x3b,0xab,0x6b, 0xc0,0x35,0xa2,0x66, 0xdd,0x27,0xb9,0x71, 0xd6,0x29,0xb0,0x7c,
+ 0xe7,0x03,0x8f,0x5f, 0xec,0x0d,0x86,0x52, 0xf1,0x1f,0x9d,0x45, 0xfa,0x11,0x94,0x48,
+ 0x93,0x4b,0xe3,0x03, 0x98,0x45,0xea,0x0e, 0x85,0x57,0xf1,0x19, 0x8e,0x59,0xf8,0x14,
+ 0xbf,0x73,0xc7,0x37, 0xb4,0x7d,0xce,0x3a, 0xa9,0x6f,0xd5,0x2d, 0xa2,0x61,0xdc,0x20,
+ 0xf6,0xad,0x76,0x6d, 0xfd,0xa3,0x7f,0x60, 0xe0,0xb1,0x64,0x77, 0xeb,0xbf,0x6d,0x7a,
+ 0xda,0x95,0x52,0x59, 0xd1,0x9b,0x5b,0x54, 0xcc,0x89,0x40,0x43, 0xc7,0x87,0x49,0x4e,
+ 0xae,0xdd,0x3e,0x05, 0xa5,0xd3,0x37,0x08, 0xb8,0xc1,0x2c,0x1f, 0xb3,0xcf,0x25,0x12,
+ 0x82,0xe5,0x1a,0x31, 0x89,0xeb,0x13,0x3c, 0x94,0xf9,0x08,0x2b, 0x9f,0xf7,0x01,0x26,
+ 0x46,0x4d,0xe6,0xbd, 0x4d,0x43,0xef,0xb0, 0x50,0x51,0xf4,0xa7, 0x5b,0x5f,0xfd,0xaa,
+ 0x6a,0x75,0xc2,0x89, 0x61,0x7b,0xcb,0x84, 0x7c,0x69,0xd0,0x93, 0x77,0x67,0xd9,0x9e,
+ 0x1e,0x3d,0xae,0xd5, 0x15,0x33,0xa7,0xd8, 0x08,0x21,0xbc,0xcf, 0x03,0x2f,0xb5,0xc2,
+ 0x32,0x05,0x8a,0xe1, 0x39,0x0b,0x83,0xec, 0x24,0x19,0x98,0xfb, 0x2f,0x17,0x91,0xf6,
+ 0x8d,0x76,0x4d,0xd6, 0x86,0x78,0x44,0xdb, 0x9b,0x6a,0x5f,0xcc, 0x90,0x64,0x56,0xc1,
+ 0xa1,0x4e,0x69,0xe2, 0xaa,0x40,0x60,0xef, 0xb7,0x52,0x7b,0xf8, 0xbc,0x5c,0x72,0xf5,
+ 0xd5,0x06,0x05,0xbe, 0xde,0x08,0x0c,0xb3, 0xc3,0x1a,0x17,0xa4, 0xc8,0x14,0x1e,0xa9,
+ 0xf9,0x3e,0x21,0x8a, 0xf2,0x30,0x28,0x87, 0xef,0x22,0x33,0x90, 0xe4,0x2c,0x3a,0x9d,
+ 0x3d,0x96,0xdd,0x06, 0x36,0x98,0xd4,0x0b, 0x2b,0x8a,0xcf,0x1c, 0x20,0x84,0xc6,0x11,
+ 0x11,0xae,0xf9,0x32, 0x1a,0xa0,0xf0,0x3f, 0x07,0xb2,0xeb,0x28, 0x0c,0xbc,0xe2,0x25,
+ 0x65,0xe6,0x95,0x6e, 0x6e,0xe8,0x9c,0x63, 0x73,0xfa,0x87,0x74, 0x78,0xf4,0x8e,0x79,
+ 0x49,0xde,0xb1,0x5a, 0x42,0xd0,0xb8,0x57, 0x5f,0xc2,0xa3,0x40, 0x54,0xcc,0xaa,0x4d,
+ 0xf7,0x41,0xec,0xda, 0xfc,0x4f,0xe5,0xd7, 0xe1,0x5d,0xfe,0xc0, 0xea,0x53,0xf7,0xcd,
+ 0xdb,0x79,0xc8,0xee, 0xd0,0x77,0xc1,0xe3, 0xcd,0x65,0xda,0xf4, 0xc6,0x6b,0xd3,0xf9,
+ 0xaf,0x31,0xa4,0xb2, 0xa4,0x3f,0xad,0xbf, 0xb9,0x2d,0xb6,0xa8, 0xb2,0x23,0xbf,0xa5,
+ 0x83,0x09,0x80,0x86, 0x88,0x07,0x89,0x8b, 0x95,0x15,0x92,0x9c, 0x9e,0x1b,0x9b,0x91,
+ 0x47,0xa1,0x7c,0x0a, 0x4c,0xaf,0x75,0x07, 0x51,0xbd,0x6e,0x10, 0x5a,0xb3,0x67,0x1d,
+ 0x6b,0x99,0x58,0x3e, 0x60,0x97,0x51,0x33, 0x7d,0x85,0x4a,0x24, 0x76,0x8b,0x43,0x29,
+ 0x1f,0xd1,0x34,0x62, 0x14,0xdf,0x3d,0x6f, 0x09,0xcd,0x26,0x78, 0x02,0xc3,0x2f,0x75,
+ 0x33,0xe9,0x10,0x56, 0x38,0xe7,0x19,0x5b, 0x25,0xf5,0x02,0x4c, 0x2e,0xfb,0x0b,0x41,
+ 0x8c,0x9a,0xd7,0x61, 0x87,0x94,0xde,0x6c, 0x9a,0x86,0xc5,0x7b, 0x91,0x88,0xcc,0x76,
+ 0xa0,0xa2,0xf3,0x55, 0xab,0xac,0xfa,0x58, 0xb6,0xbe,0xe1,0x4f, 0xbd,0xb0,0xe8,0x42,
+ 0xd4,0xea,0x9f,0x09, 0xdf,0xe4,0x96,0x04, 0xc2,0xf6,0x8d,0x13, 0xc9,0xf8,0x84,0x1e,
+ 0xf8,0xd2,0xbb,0x3d, 0xf3,0xdc,0xb2,0x30, 0xee,0xce,0xa9,0x27, 0xe5,0xc0,0xa0,0x2a,
+ 0x3c,0x7a,0x47,0xb1, 0x37,0x74,0x4e,0xbc, 0x2a,0x66,0x55,0xab, 0x21,0x68,0x5c,0xa6,
+ 0x10,0x42,0x63,0x85, 0x1b,0x4c,0x6a,0x88, 0x06,0x5e,0x71,0x9f, 0x0d,0x50,0x78,0x92,
+ 0x64,0x0a,0x0f,0xd9, 0x6f,0x04,0x06,0xd4, 0x72,0x16,0x1d,0xc3, 0x79,0x18,0x14,0xce,
+ 0x48,0x32,0x2b,0xed, 0x43,0x3c,0x22,0xe0, 0x5e,0x2e,0x39,0xf7, 0x55,0x20,0x30,0xfa,
+ 0x01,0xec,0x9a,0xb7, 0x0a,0xe2,0x93,0xba, 0x17,0xf0,0x88,0xad, 0x1c,0xfe,0x81,0xa0,
+ 0x2d,0xd4,0xbe,0x83, 0x26,0xda,0xb7,0x8e, 0x3b,0xc8,0xac,0x99, 0x30,0xc6,0xa5,0x94,
+ 0x59,0x9c,0xd2,0xdf, 0x52,0x92,0xdb,0xd2, 0x4f,0x80,0xc0,0xc5, 0x44,0x8e,0xc9,0xc8,
+ 0x75,0xa4,0xf6,0xeb, 0x7e,0xaa,0xff,0xe6, 0x63,0xb8,0xe4,0xf1, 0x68,0xb6,0xed,0xfc,
+ 0xb1,0x0c,0x0a,0x67, 0xba,0x02,0x03,0x6a, 0xa7,0x10,0x18,0x7d, 0xac,0x1e,0x11,0x70,
+ 0x9d,0x34,0x2e,0x53, 0x96,0x3a,0x27,0x5e, 0x8b,0x28,0x3c,0x49, 0x80,0x26,0x35,0x44,
+ 0xe9,0x7c,0x42,0x0f, 0xe2,0x72,0x4b,0x02, 0xff,0x60,0x50,0x15, 0xf4,0x6e,0x59,0x18,
+ 0xc5,0x44,0x66,0x3b, 0xce,0x4a,0x6f,0x36, 0xd3,0x58,0x74,0x21, 0xd8,0x56,0x7d,0x2c,
+ 0x7a,0x37,0xa1,0x0c, 0x71,0x39,0xa8,0x01, 0x6c,0x2b,0xb3,0x16, 0x67,0x25,0xba,0x1b,
+ 0x56,0x0f,0x85,0x38, 0x5d,0x01,0x8c,0x35, 0x40,0x13,0x97,0x22, 0x4b,0x1d,0x9e,0x2f,
+ 0x22,0x47,0xe9,0x64, 0x29,0x49,0xe0,0x69, 0x34,0x5b,0xfb,0x7e, 0x3f,0x55,0xf2,0x73,
+ 0x0e,0x7f,0xcd,0x50, 0x05,0x71,0xc4,0x5d, 0x18,0x63,0xdf,0x4a, 0x13,0x6d,0xd6,0x47,
+ 0xca,0xd7,0x31,0xdc, 0xc1,0xd9,0x38,0xd1, 0xdc,0xcb,0x23,0xc6, 0xd7,0xc5,0x2a,0xcb,
+ 0xe6,0xef,0x15,0xe8, 0xed,0xe1,0x1c,0xe5, 0xf0,0xf3,0x07,0xf2, 0xfb,0xfd,0x0e,0xff,
+ 0x92,0xa7,0x79,0xb4, 0x99,0xa9,0x70,0xb9, 0x84,0xbb,0x6b,0xae, 0x8f,0xb5,0x62,0xa3,
+ 0xbe,0x9f,0x5d,0x80, 0xb5,0x91,0x54,0x8d, 0xa8,0x83,0x4f,0x9a, 0xa3,0x8d,0x46,0x97
+};
+
+static UINT8 U3[256][4]=
+{
+ 0x00,0x00,0x00,0x00, 0x0d,0x0b,0x0e,0x09, 0x1a,0x16,0x1c,0x12, 0x17,0x1d,0x12,0x1b,
+ 0x34,0x2c,0x38,0x24, 0x39,0x27,0x36,0x2d, 0x2e,0x3a,0x24,0x36, 0x23,0x31,0x2a,0x3f,
+ 0x68,0x58,0x70,0x48, 0x65,0x53,0x7e,0x41, 0x72,0x4e,0x6c,0x5a, 0x7f,0x45,0x62,0x53,
+ 0x5c,0x74,0x48,0x6c, 0x51,0x7f,0x46,0x65, 0x46,0x62,0x54,0x7e, 0x4b,0x69,0x5a,0x77,
+ 0xd0,0xb0,0xe0,0x90, 0xdd,0xbb,0xee,0x99, 0xca,0xa6,0xfc,0x82, 0xc7,0xad,0xf2,0x8b,
+ 0xe4,0x9c,0xd8,0xb4, 0xe9,0x97,0xd6,0xbd, 0xfe,0x8a,0xc4,0xa6, 0xf3,0x81,0xca,0xaf,
+ 0xb8,0xe8,0x90,0xd8, 0xb5,0xe3,0x9e,0xd1, 0xa2,0xfe,0x8c,0xca, 0xaf,0xf5,0x82,0xc3,
+ 0x8c,0xc4,0xa8,0xfc, 0x81,0xcf,0xa6,0xf5, 0x96,0xd2,0xb4,0xee, 0x9b,0xd9,0xba,0xe7,
+ 0xbb,0x7b,0xdb,0x3b, 0xb6,0x70,0xd5,0x32, 0xa1,0x6d,0xc7,0x29, 0xac,0x66,0xc9,0x20,
+ 0x8f,0x57,0xe3,0x1f, 0x82,0x5c,0xed,0x16, 0x95,0x41,0xff,0x0d, 0x98,0x4a,0xf1,0x04,
+ 0xd3,0x23,0xab,0x73, 0xde,0x28,0xa5,0x7a, 0xc9,0x35,0xb7,0x61, 0xc4,0x3e,0xb9,0x68,
+ 0xe7,0x0f,0x93,0x57, 0xea,0x04,0x9d,0x5e, 0xfd,0x19,0x8f,0x45, 0xf0,0x12,0x81,0x4c,
+ 0x6b,0xcb,0x3b,0xab, 0x66,0xc0,0x35,0xa2, 0x71,0xdd,0x27,0xb9, 0x7c,0xd6,0x29,0xb0,
+ 0x5f,0xe7,0x03,0x8f, 0x52,0xec,0x0d,0x86, 0x45,0xf1,0x1f,0x9d, 0x48,0xfa,0x11,0x94,
+ 0x03,0x93,0x4b,0xe3, 0x0e,0x98,0x45,0xea, 0x19,0x85,0x57,0xf1, 0x14,0x8e,0x59,0xf8,
+ 0x37,0xbf,0x73,0xc7, 0x3a,0xb4,0x7d,0xce, 0x2d,0xa9,0x6f,0xd5, 0x20,0xa2,0x61,0xdc,
+ 0x6d,0xf6,0xad,0x76, 0x60,0xfd,0xa3,0x7f, 0x77,0xe0,0xb1,0x64, 0x7a,0xeb,0xbf,0x6d,
+ 0x59,0xda,0x95,0x52, 0x54,0xd1,0x9b,0x5b, 0x43,0xcc,0x89,0x40, 0x4e,0xc7,0x87,0x49,
+ 0x05,0xae,0xdd,0x3e, 0x08,0xa5,0xd3,0x37, 0x1f,0xb8,0xc1,0x2c, 0x12,0xb3,0xcf,0x25,
+ 0x31,0x82,0xe5,0x1a, 0x3c,0x89,0xeb,0x13, 0x2b,0x94,0xf9,0x08, 0x26,0x9f,0xf7,0x01,
+ 0xbd,0x46,0x4d,0xe6, 0xb0,0x4d,0x43,0xef, 0xa7,0x50,0x51,0xf4, 0xaa,0x5b,0x5f,0xfd,
+ 0x89,0x6a,0x75,0xc2, 0x84,0x61,0x7b,0xcb, 0x93,0x7c,0x69,0xd0, 0x9e,0x77,0x67,0xd9,
+ 0xd5,0x1e,0x3d,0xae, 0xd8,0x15,0x33,0xa7, 0xcf,0x08,0x21,0xbc, 0xc2,0x03,0x2f,0xb5,
+ 0xe1,0x32,0x05,0x8a, 0xec,0x39,0x0b,0x83, 0xfb,0x24,0x19,0x98, 0xf6,0x2f,0x17,0x91,
+ 0xd6,0x8d,0x76,0x4d, 0xdb,0x86,0x78,0x44, 0xcc,0x9b,0x6a,0x5f, 0xc1,0x90,0x64,0x56,
+ 0xe2,0xa1,0x4e,0x69, 0xef,0xaa,0x40,0x60, 0xf8,0xb7,0x52,0x7b, 0xf5,0xbc,0x5c,0x72,
+ 0xbe,0xd5,0x06,0x05, 0xb3,0xde,0x08,0x0c, 0xa4,0xc3,0x1a,0x17, 0xa9,0xc8,0x14,0x1e,
+ 0x8a,0xf9,0x3e,0x21, 0x87,0xf2,0x30,0x28, 0x90,0xef,0x22,0x33, 0x9d,0xe4,0x2c,0x3a,
+ 0x06,0x3d,0x96,0xdd, 0x0b,0x36,0x98,0xd4, 0x1c,0x2b,0x8a,0xcf, 0x11,0x20,0x84,0xc6,
+ 0x32,0x11,0xae,0xf9, 0x3f,0x1a,0xa0,0xf0, 0x28,0x07,0xb2,0xeb, 0x25,0x0c,0xbc,0xe2,
+ 0x6e,0x65,0xe6,0x95, 0x63,0x6e,0xe8,0x9c, 0x74,0x73,0xfa,0x87, 0x79,0x78,0xf4,0x8e,
+ 0x5a,0x49,0xde,0xb1, 0x57,0x42,0xd0,0xb8, 0x40,0x5f,0xc2,0xa3, 0x4d,0x54,0xcc,0xaa,
+ 0xda,0xf7,0x41,0xec, 0xd7,0xfc,0x4f,0xe5, 0xc0,0xe1,0x5d,0xfe, 0xcd,0xea,0x53,0xf7,
+ 0xee,0xdb,0x79,0xc8, 0xe3,0xd0,0x77,0xc1, 0xf4,0xcd,0x65,0xda, 0xf9,0xc6,0x6b,0xd3,
+ 0xb2,0xaf,0x31,0xa4, 0xbf,0xa4,0x3f,0xad, 0xa8,0xb9,0x2d,0xb6, 0xa5,0xb2,0x23,0xbf,
+ 0x86,0x83,0x09,0x80, 0x8b,0x88,0x07,0x89, 0x9c,0x95,0x15,0x92, 0x91,0x9e,0x1b,0x9b,
+ 0x0a,0x47,0xa1,0x7c, 0x07,0x4c,0xaf,0x75, 0x10,0x51,0xbd,0x6e, 0x1d,0x5a,0xb3,0x67,
+ 0x3e,0x6b,0x99,0x58, 0x33,0x60,0x97,0x51, 0x24,0x7d,0x85,0x4a, 0x29,0x76,0x8b,0x43,
+ 0x62,0x1f,0xd1,0x34, 0x6f,0x14,0xdf,0x3d, 0x78,0x09,0xcd,0x26, 0x75,0x02,0xc3,0x2f,
+ 0x56,0x33,0xe9,0x10, 0x5b,0x38,0xe7,0x19, 0x4c,0x25,0xf5,0x02, 0x41,0x2e,0xfb,0x0b,
+ 0x61,0x8c,0x9a,0xd7, 0x6c,0x87,0x94,0xde, 0x7b,0x9a,0x86,0xc5, 0x76,0x91,0x88,0xcc,
+ 0x55,0xa0,0xa2,0xf3, 0x58,0xab,0xac,0xfa, 0x4f,0xb6,0xbe,0xe1, 0x42,0xbd,0xb0,0xe8,
+ 0x09,0xd4,0xea,0x9f, 0x04,0xdf,0xe4,0x96, 0x13,0xc2,0xf6,0x8d, 0x1e,0xc9,0xf8,0x84,
+ 0x3d,0xf8,0xd2,0xbb, 0x30,0xf3,0xdc,0xb2, 0x27,0xee,0xce,0xa9, 0x2a,0xe5,0xc0,0xa0,
+ 0xb1,0x3c,0x7a,0x47, 0xbc,0x37,0x74,0x4e, 0xab,0x2a,0x66,0x55, 0xa6,0x21,0x68,0x5c,
+ 0x85,0x10,0x42,0x63, 0x88,0x1b,0x4c,0x6a, 0x9f,0x06,0x5e,0x71, 0x92,0x0d,0x50,0x78,
+ 0xd9,0x64,0x0a,0x0f, 0xd4,0x6f,0x04,0x06, 0xc3,0x72,0x16,0x1d, 0xce,0x79,0x18,0x14,
+ 0xed,0x48,0x32,0x2b, 0xe0,0x43,0x3c,0x22, 0xf7,0x5e,0x2e,0x39, 0xfa,0x55,0x20,0x30,
+ 0xb7,0x01,0xec,0x9a, 0xba,0x0a,0xe2,0x93, 0xad,0x17,0xf0,0x88, 0xa0,0x1c,0xfe,0x81,
+ 0x83,0x2d,0xd4,0xbe, 0x8e,0x26,0xda,0xb7, 0x99,0x3b,0xc8,0xac, 0x94,0x30,0xc6,0xa5,
+ 0xdf,0x59,0x9c,0xd2, 0xd2,0x52,0x92,0xdb, 0xc5,0x4f,0x80,0xc0, 0xc8,0x44,0x8e,0xc9,
+ 0xeb,0x75,0xa4,0xf6, 0xe6,0x7e,0xaa,0xff, 0xf1,0x63,0xb8,0xe4, 0xfc,0x68,0xb6,0xed,
+ 0x67,0xb1,0x0c,0x0a, 0x6a,0xba,0x02,0x03, 0x7d,0xa7,0x10,0x18, 0x70,0xac,0x1e,0x11,
+ 0x53,0x9d,0x34,0x2e, 0x5e,0x96,0x3a,0x27, 0x49,0x8b,0x28,0x3c, 0x44,0x80,0x26,0x35,
+ 0x0f,0xe9,0x7c,0x42, 0x02,0xe2,0x72,0x4b, 0x15,0xff,0x60,0x50, 0x18,0xf4,0x6e,0x59,
+ 0x3b,0xc5,0x44,0x66, 0x36,0xce,0x4a,0x6f, 0x21,0xd3,0x58,0x74, 0x2c,0xd8,0x56,0x7d,
+ 0x0c,0x7a,0x37,0xa1, 0x01,0x71,0x39,0xa8, 0x16,0x6c,0x2b,0xb3, 0x1b,0x67,0x25,0xba,
+ 0x38,0x56,0x0f,0x85, 0x35,0x5d,0x01,0x8c, 0x22,0x40,0x13,0x97, 0x2f,0x4b,0x1d,0x9e,
+ 0x64,0x22,0x47,0xe9, 0x69,0x29,0x49,0xe0, 0x7e,0x34,0x5b,0xfb, 0x73,0x3f,0x55,0xf2,
+ 0x50,0x0e,0x7f,0xcd, 0x5d,0x05,0x71,0xc4, 0x4a,0x18,0x63,0xdf, 0x47,0x13,0x6d,0xd6,
+ 0xdc,0xca,0xd7,0x31, 0xd1,0xc1,0xd9,0x38, 0xc6,0xdc,0xcb,0x23, 0xcb,0xd7,0xc5,0x2a,
+ 0xe8,0xe6,0xef,0x15, 0xe5,0xed,0xe1,0x1c, 0xf2,0xf0,0xf3,0x07, 0xff,0xfb,0xfd,0x0e,
+ 0xb4,0x92,0xa7,0x79, 0xb9,0x99,0xa9,0x70, 0xae,0x84,0xbb,0x6b, 0xa3,0x8f,0xb5,0x62,
+ 0x80,0xbe,0x9f,0x5d, 0x8d,0xb5,0x91,0x54, 0x9a,0xa8,0x83,0x4f, 0x97,0xa3,0x8d,0x46
+};
+
+static UINT8 U4[256][4]=
+{
+ 0x00,0x00,0x00,0x00, 0x09,0x0d,0x0b,0x0e, 0x12,0x1a,0x16,0x1c, 0x1b,0x17,0x1d,0x12,
+ 0x24,0x34,0x2c,0x38, 0x2d,0x39,0x27,0x36, 0x36,0x2e,0x3a,0x24, 0x3f,0x23,0x31,0x2a,
+ 0x48,0x68,0x58,0x70, 0x41,0x65,0x53,0x7e, 0x5a,0x72,0x4e,0x6c, 0x53,0x7f,0x45,0x62,
+ 0x6c,0x5c,0x74,0x48, 0x65,0x51,0x7f,0x46, 0x7e,0x46,0x62,0x54, 0x77,0x4b,0x69,0x5a,
+ 0x90,0xd0,0xb0,0xe0, 0x99,0xdd,0xbb,0xee, 0x82,0xca,0xa6,0xfc, 0x8b,0xc7,0xad,0xf2,
+ 0xb4,0xe4,0x9c,0xd8, 0xbd,0xe9,0x97,0xd6, 0xa6,0xfe,0x8a,0xc4, 0xaf,0xf3,0x81,0xca,
+ 0xd8,0xb8,0xe8,0x90, 0xd1,0xb5,0xe3,0x9e, 0xca,0xa2,0xfe,0x8c, 0xc3,0xaf,0xf5,0x82,
+ 0xfc,0x8c,0xc4,0xa8, 0xf5,0x81,0xcf,0xa6, 0xee,0x96,0xd2,0xb4, 0xe7,0x9b,0xd9,0xba,
+ 0x3b,0xbb,0x7b,0xdb, 0x32,0xb6,0x70,0xd5, 0x29,0xa1,0x6d,0xc7, 0x20,0xac,0x66,0xc9,
+ 0x1f,0x8f,0x57,0xe3, 0x16,0x82,0x5c,0xed, 0x0d,0x95,0x41,0xff, 0x04,0x98,0x4a,0xf1,
+ 0x73,0xd3,0x23,0xab, 0x7a,0xde,0x28,0xa5, 0x61,0xc9,0x35,0xb7, 0x68,0xc4,0x3e,0xb9,
+ 0x57,0xe7,0x0f,0x93, 0x5e,0xea,0x04,0x9d, 0x45,0xfd,0x19,0x8f, 0x4c,0xf0,0x12,0x81,
+ 0xab,0x6b,0xcb,0x3b, 0xa2,0x66,0xc0,0x35, 0xb9,0x71,0xdd,0x27, 0xb0,0x7c,0xd6,0x29,
+ 0x8f,0x5f,0xe7,0x03, 0x86,0x52,0xec,0x0d, 0x9d,0x45,0xf1,0x1f, 0x94,0x48,0xfa,0x11,
+ 0xe3,0x03,0x93,0x4b, 0xea,0x0e,0x98,0x45, 0xf1,0x19,0x85,0x57, 0xf8,0x14,0x8e,0x59,
+ 0xc7,0x37,0xbf,0x73, 0xce,0x3a,0xb4,0x7d, 0xd5,0x2d,0xa9,0x6f, 0xdc,0x20,0xa2,0x61,
+ 0x76,0x6d,0xf6,0xad, 0x7f,0x60,0xfd,0xa3, 0x64,0x77,0xe0,0xb1, 0x6d,0x7a,0xeb,0xbf,
+ 0x52,0x59,0xda,0x95, 0x5b,0x54,0xd1,0x9b, 0x40,0x43,0xcc,0x89, 0x49,0x4e,0xc7,0x87,
+ 0x3e,0x05,0xae,0xdd, 0x37,0x08,0xa5,0xd3, 0x2c,0x1f,0xb8,0xc1, 0x25,0x12,0xb3,0xcf,
+ 0x1a,0x31,0x82,0xe5, 0x13,0x3c,0x89,0xeb, 0x08,0x2b,0x94,0xf9, 0x01,0x26,0x9f,0xf7,
+ 0xe6,0xbd,0x46,0x4d, 0xef,0xb0,0x4d,0x43, 0xf4,0xa7,0x50,0x51, 0xfd,0xaa,0x5b,0x5f,
+ 0xc2,0x89,0x6a,0x75, 0xcb,0x84,0x61,0x7b, 0xd0,0x93,0x7c,0x69, 0xd9,0x9e,0x77,0x67,
+ 0xae,0xd5,0x1e,0x3d, 0xa7,0xd8,0x15,0x33, 0xbc,0xcf,0x08,0x21, 0xb5,0xc2,0x03,0x2f,
+ 0x8a,0xe1,0x32,0x05, 0x83,0xec,0x39,0x0b, 0x98,0xfb,0x24,0x19, 0x91,0xf6,0x2f,0x17,
+ 0x4d,0xd6,0x8d,0x76, 0x44,0xdb,0x86,0x78, 0x5f,0xcc,0x9b,0x6a, 0x56,0xc1,0x90,0x64,
+ 0x69,0xe2,0xa1,0x4e, 0x60,0xef,0xaa,0x40, 0x7b,0xf8,0xb7,0x52, 0x72,0xf5,0xbc,0x5c,
+ 0x05,0xbe,0xd5,0x06, 0x0c,0xb3,0xde,0x08, 0x17,0xa4,0xc3,0x1a, 0x1e,0xa9,0xc8,0x14,
+ 0x21,0x8a,0xf9,0x3e, 0x28,0x87,0xf2,0x30, 0x33,0x90,0xef,0x22, 0x3a,0x9d,0xe4,0x2c,
+ 0xdd,0x06,0x3d,0x96, 0xd4,0x0b,0x36,0x98, 0xcf,0x1c,0x2b,0x8a, 0xc6,0x11,0x20,0x84,
+ 0xf9,0x32,0x11,0xae, 0xf0,0x3f,0x1a,0xa0, 0xeb,0x28,0x07,0xb2, 0xe2,0x25,0x0c,0xbc,
+ 0x95,0x6e,0x65,0xe6, 0x9c,0x63,0x6e,0xe8, 0x87,0x74,0x73,0xfa, 0x8e,0x79,0x78,0xf4,
+ 0xb1,0x5a,0x49,0xde, 0xb8,0x57,0x42,0xd0, 0xa3,0x40,0x5f,0xc2, 0xaa,0x4d,0x54,0xcc,
+ 0xec,0xda,0xf7,0x41, 0xe5,0xd7,0xfc,0x4f, 0xfe,0xc0,0xe1,0x5d, 0xf7,0xcd,0xea,0x53,
+ 0xc8,0xee,0xdb,0x79, 0xc1,0xe3,0xd0,0x77, 0xda,0xf4,0xcd,0x65, 0xd3,0xf9,0xc6,0x6b,
+ 0xa4,0xb2,0xaf,0x31, 0xad,0xbf,0xa4,0x3f, 0xb6,0xa8,0xb9,0x2d, 0xbf,0xa5,0xb2,0x23,
+ 0x80,0x86,0x83,0x09, 0x89,0x8b,0x88,0x07, 0x92,0x9c,0x95,0x15, 0x9b,0x91,0x9e,0x1b,
+ 0x7c,0x0a,0x47,0xa1, 0x75,0x07,0x4c,0xaf, 0x6e,0x10,0x51,0xbd, 0x67,0x1d,0x5a,0xb3,
+ 0x58,0x3e,0x6b,0x99, 0x51,0x33,0x60,0x97, 0x4a,0x24,0x7d,0x85, 0x43,0x29,0x76,0x8b,
+ 0x34,0x62,0x1f,0xd1, 0x3d,0x6f,0x14,0xdf, 0x26,0x78,0x09,0xcd, 0x2f,0x75,0x02,0xc3,
+ 0x10,0x56,0x33,0xe9, 0x19,0x5b,0x38,0xe7, 0x02,0x4c,0x25,0xf5, 0x0b,0x41,0x2e,0xfb,
+ 0xd7,0x61,0x8c,0x9a, 0xde,0x6c,0x87,0x94, 0xc5,0x7b,0x9a,0x86, 0xcc,0x76,0x91,0x88,
+ 0xf3,0x55,0xa0,0xa2, 0xfa,0x58,0xab,0xac, 0xe1,0x4f,0xb6,0xbe, 0xe8,0x42,0xbd,0xb0,
+ 0x9f,0x09,0xd4,0xea, 0x96,0x04,0xdf,0xe4, 0x8d,0x13,0xc2,0xf6, 0x84,0x1e,0xc9,0xf8,
+ 0xbb,0x3d,0xf8,0xd2, 0xb2,0x30,0xf3,0xdc, 0xa9,0x27,0xee,0xce, 0xa0,0x2a,0xe5,0xc0,
+ 0x47,0xb1,0x3c,0x7a, 0x4e,0xbc,0x37,0x74, 0x55,0xab,0x2a,0x66, 0x5c,0xa6,0x21,0x68,
+ 0x63,0x85,0x10,0x42, 0x6a,0x88,0x1b,0x4c, 0x71,0x9f,0x06,0x5e, 0x78,0x92,0x0d,0x50,
+ 0x0f,0xd9,0x64,0x0a, 0x06,0xd4,0x6f,0x04, 0x1d,0xc3,0x72,0x16, 0x14,0xce,0x79,0x18,
+ 0x2b,0xed,0x48,0x32, 0x22,0xe0,0x43,0x3c, 0x39,0xf7,0x5e,0x2e, 0x30,0xfa,0x55,0x20,
+ 0x9a,0xb7,0x01,0xec, 0x93,0xba,0x0a,0xe2, 0x88,0xad,0x17,0xf0, 0x81,0xa0,0x1c,0xfe,
+ 0xbe,0x83,0x2d,0xd4, 0xb7,0x8e,0x26,0xda, 0xac,0x99,0x3b,0xc8, 0xa5,0x94,0x30,0xc6,
+ 0xd2,0xdf,0x59,0x9c, 0xdb,0xd2,0x52,0x92, 0xc0,0xc5,0x4f,0x80, 0xc9,0xc8,0x44,0x8e,
+ 0xf6,0xeb,0x75,0xa4, 0xff,0xe6,0x7e,0xaa, 0xe4,0xf1,0x63,0xb8, 0xed,0xfc,0x68,0xb6,
+ 0x0a,0x67,0xb1,0x0c, 0x03,0x6a,0xba,0x02, 0x18,0x7d,0xa7,0x10, 0x11,0x70,0xac,0x1e,
+ 0x2e,0x53,0x9d,0x34, 0x27,0x5e,0x96,0x3a, 0x3c,0x49,0x8b,0x28, 0x35,0x44,0x80,0x26,
+ 0x42,0x0f,0xe9,0x7c, 0x4b,0x02,0xe2,0x72, 0x50,0x15,0xff,0x60, 0x59,0x18,0xf4,0x6e,
+ 0x66,0x3b,0xc5,0x44, 0x6f,0x36,0xce,0x4a, 0x74,0x21,0xd3,0x58, 0x7d,0x2c,0xd8,0x56,
+ 0xa1,0x0c,0x7a,0x37, 0xa8,0x01,0x71,0x39, 0xb3,0x16,0x6c,0x2b, 0xba,0x1b,0x67,0x25,
+ 0x85,0x38,0x56,0x0f, 0x8c,0x35,0x5d,0x01, 0x97,0x22,0x40,0x13, 0x9e,0x2f,0x4b,0x1d,
+ 0xe9,0x64,0x22,0x47, 0xe0,0x69,0x29,0x49, 0xfb,0x7e,0x34,0x5b, 0xf2,0x73,0x3f,0x55,
+ 0xcd,0x50,0x0e,0x7f, 0xc4,0x5d,0x05,0x71, 0xdf,0x4a,0x18,0x63, 0xd6,0x47,0x13,0x6d,
+ 0x31,0xdc,0xca,0xd7, 0x38,0xd1,0xc1,0xd9, 0x23,0xc6,0xdc,0xcb, 0x2a,0xcb,0xd7,0xc5,
+ 0x15,0xe8,0xe6,0xef, 0x1c,0xe5,0xed,0xe1, 0x07,0xf2,0xf0,0xf3, 0x0e,0xff,0xfb,0xfd,
+ 0x79,0xb4,0x92,0xa7, 0x70,0xb9,0x99,0xa9, 0x6b,0xae,0x84,0xbb, 0x62,0xa3,0x8f,0xb5,
+ 0x5d,0x80,0xbe,0x9f, 0x54,0x8d,0xb5,0x91, 0x4f,0x9a,0xa8,0x83, 0x46,0x97,0xa3,0x8d
+};
+
+static UINT32 rcon[30]=
+{
+ 0x01, 0x02, 0x04, 0x08, 0x10, 0x20,
+ 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8,
+ 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc,
+ 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4,
+ 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91
+};
+
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// API
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+Rijndael::Rijndael()
+{
+ m_state = Invalid;
+}
+
+Rijndael::~Rijndael()
+{
+ // nothing here
+}
+
+int Rijndael::init(Mode mode,Direction dir,const UINT8 * key,KeyLength keyLen,UINT8 * initVector)
+{
+ // Not initialized yet
+ m_state = Invalid;
+
+ // Check the mode
+ if((mode != CBC) && (mode != ECB) && (mode != CFB1))return RIJNDAEL_UNSUPPORTED_MODE;
+ m_mode = mode;
+
+ // And the direction
+ if((dir != Encrypt) && (dir != Decrypt))return RIJNDAEL_UNSUPPORTED_DIRECTION;
+ m_direction = dir;
+
+ // Allow to set an init vector
+ if(initVector)
+ {
+ // specified init vector
+ for(int i = 0;i < MAX_IV_SIZE;i++)
+ {
+ m_initVector[i] = initVector[i];
+ }
+ } else {
+ // zero init vector
+ for(int i = 0;i < MAX_IV_SIZE;i++)
+ {
+ m_initVector[i] = 0;
+ }
+ }
+
+ UINT32 uKeyLenInBytes;
+
+ // And check the key length
+ switch(keyLen)
+ {
+ case Key16Bytes:
+ uKeyLenInBytes = 16;
+ m_uRounds = 10;
+ break;
+ case Key24Bytes:
+ uKeyLenInBytes = 24;
+ m_uRounds = 12;
+ break;
+ case Key32Bytes:
+ uKeyLenInBytes = 32;
+ m_uRounds = 14;
+ break;
+ default:
+ return RIJNDAEL_UNSUPPORTED_KEY_LENGTH;
+ break;
+ }
+ // The number of rounds is calculated as
+ // m_uRounds = (m_uKeyLenInBits / 32) + 6;
+
+ if(!key)return RIJNDAEL_BAD_KEY;
+
+ UINT8 keyMatrix[_MAX_KEY_COLUMNS][4];
+
+ for(UINT32 i = 0;i < uKeyLenInBytes;i++)keyMatrix[i >> 2][i & 3] = key[i];
+
+ keySched(keyMatrix);
+
+ if(m_direction == Decrypt)keyEncToDec();
+
+ m_state = Valid;
+
+ return RIJNDAEL_SUCCESS;
+}
+
+int Rijndael::blockEncrypt(const UINT8 *input,int inputLen,UINT8 *outBuffer)
+{
+ int i, k, numBlocks;
+ UINT8 block[16], iv[4][4];
+
+ if(m_state != Valid)return RIJNDAEL_NOT_INITIALIZED;
+ if(m_direction != Encrypt)return RIJNDAEL_BAD_DIRECTION;
+
+ if(input == 0 || inputLen <= 0)return 0;
+
+ numBlocks = inputLen/128;
+
+ switch(m_mode){
+ case ECB:
+ for(i = numBlocks;i > 0;i--)
+ {
+ encrypt(input,outBuffer);
+ input += 16;
+ outBuffer += 16;
+ }
+ break;
+ case CBC:
+ ((UINT32*)block)[0] = ((UINT32*)m_initVector)[0] ^ ((UINT32*)input)[0];
+ ((UINT32*)block)[1] = ((UINT32*)m_initVector)[1] ^ ((UINT32*)input)[1];
+ ((UINT32*)block)[2] = ((UINT32*)m_initVector)[2] ^ ((UINT32*)input)[2];
+ ((UINT32*)block)[3] = ((UINT32*)m_initVector)[3] ^ ((UINT32*)input)[3];
+ encrypt(block,outBuffer);
+ input += 16;
+ for(i = numBlocks - 1;i > 0;i--)
+ {
+ ((UINT32*)block)[0] = ((UINT32*)outBuffer)[0] ^ ((UINT32*)input)[0];
+ ((UINT32*)block)[1] = ((UINT32*)outBuffer)[1] ^ ((UINT32*)input)[1];
+ ((UINT32*)block)[2] = ((UINT32*)outBuffer)[2] ^ ((UINT32*)input)[2];
+ ((UINT32*)block)[3] = ((UINT32*)outBuffer)[3] ^ ((UINT32*)input)[3];
+ outBuffer += 16;
+ encrypt(block,outBuffer);
+ input += 16;
+ }
+ break;
+ case CFB1:
+#if STRICT_ALIGN
+ kvi_memmove(iv,m_initVector,16);
+#else /* !STRICT_ALIGN */
+ *((UINT32*)iv[0]) = *((UINT32*)(m_initVector ));
+ *((UINT32*)iv[1]) = *((UINT32*)(m_initVector + 4));
+ *((UINT32*)iv[2]) = *((UINT32*)(m_initVector + 8));
+ *((UINT32*)iv[3]) = *((UINT32*)(m_initVector +12));
+#endif /* ?STRICT_ALIGN */
+ for(i = numBlocks; i > 0; i--)
+ {
+ for(k = 0; k < 128; k++)
+ {
+ *((UINT32*) block ) = *((UINT32*)iv[0]);
+ *((UINT32*)(block+ 4)) = *((UINT32*)iv[1]);
+ *((UINT32*)(block+ 8)) = *((UINT32*)iv[2]);
+ *((UINT32*)(block+12)) = *((UINT32*)iv[3]);
+ encrypt(block,block);
+ outBuffer[k/8] ^= (block[0] & 0x80) >> (k & 7);
+ iv[0][0] = (iv[0][0] << 1) | (iv[0][1] >> 7);
+ iv[0][1] = (iv[0][1] << 1) | (iv[0][2] >> 7);
+ iv[0][2] = (iv[0][2] << 1) | (iv[0][3] >> 7);
+ iv[0][3] = (iv[0][3] << 1) | (iv[1][0] >> 7);
+ iv[1][0] = (iv[1][0] << 1) | (iv[1][1] >> 7);
+ iv[1][1] = (iv[1][1] << 1) | (iv[1][2] >> 7);
+ iv[1][2] = (iv[1][2] << 1) | (iv[1][3] >> 7);
+ iv[1][3] = (iv[1][3] << 1) | (iv[2][0] >> 7);
+ iv[2][0] = (iv[2][0] << 1) | (iv[2][1] >> 7);
+ iv[2][1] = (iv[2][1] << 1) | (iv[2][2] >> 7);
+ iv[2][2] = (iv[2][2] << 1) | (iv[2][3] >> 7);
+ iv[2][3] = (iv[2][3] << 1) | (iv[3][0] >> 7);
+ iv[3][0] = (iv[3][0] << 1) | (iv[3][1] >> 7);
+ iv[3][1] = (iv[3][1] << 1) | (iv[3][2] >> 7);
+ iv[3][2] = (iv[3][2] << 1) | (iv[3][3] >> 7);
+ iv[3][3] = (iv[3][3] << 1) | (outBuffer[k/8] >> (7-(k&7))) & 1;
+ }
+ }
+ break;
+ default:
+ return -1;
+ break;
+ }
+
+ return 128 * numBlocks;
+}
+
+int Rijndael::padEncrypt(const UINT8 *input, int inputOctets, UINT8 *outBuffer)
+{
+ int i, numBlocks, padLen;
+ UINT8 block[16], *iv;
+
+ if(m_state != Valid)return RIJNDAEL_NOT_INITIALIZED;
+ if(m_direction != Encrypt)return RIJNDAEL_NOT_INITIALIZED;
+
+ if(input == 0 || inputOctets <= 0)return 0;
+
+ numBlocks = inputOctets/16;
+
+ switch(m_mode)
+ {
+ case ECB:
+ for(i = numBlocks; i > 0; i--)
+ {
+ encrypt(input, outBuffer);
+ input += 16;
+ outBuffer += 16;
+ }
+ padLen = 16 - (inputOctets - 16*numBlocks);
+// assert(padLen > 0 && padLen <= 16);
+ kvi_memmove(block, input, 16 - padLen);
+ kvi_memset(block + 16 - padLen, padLen, padLen);
+ encrypt(block,outBuffer);
+ break;
+ case CBC:
+ iv = m_initVector;
+ for(i = numBlocks; i > 0; i--)
+ {
+ ((UINT32*)block)[0] = ((UINT32*)input)[0] ^ ((UINT32*)iv)[0];
+ ((UINT32*)block)[1] = ((UINT32*)input)[1] ^ ((UINT32*)iv)[1];
+ ((UINT32*)block)[2] = ((UINT32*)input)[2] ^ ((UINT32*)iv)[2];
+ ((UINT32*)block)[3] = ((UINT32*)input)[3] ^ ((UINT32*)iv)[3];
+ encrypt(block, outBuffer);
+ iv = outBuffer;
+ input += 16;
+ outBuffer += 16;
+ }
+ padLen = 16 - (inputOctets - 16*numBlocks);
+// assert(padLen > 0 && padLen <= 16); // DO SOMETHING HERE ?
+ for (i = 0; i < 16 - padLen; i++) {
+ block[i] = input[i] ^ iv[i];
+ }
+ for (i = 16 - padLen; i < 16; i++) {
+ block[i] = (UINT8)padLen ^ iv[i];
+ }
+ encrypt(block,outBuffer);
+ break;
+ default:
+ return -1;
+ break;
+ }
+
+ return 16*(numBlocks + 1);
+}
+
+int Rijndael::blockDecrypt(const UINT8 *input, int inputLen, UINT8 *outBuffer)
+{
+ int i, k, numBlocks;
+ UINT8 block[16], iv[4][4];
+
+ if(m_state != Valid)return RIJNDAEL_NOT_INITIALIZED;
+ if((m_mode != CFB1) && (m_direction == Encrypt))return RIJNDAEL_BAD_DIRECTION;
+
+ if (input == 0 || inputLen <= 0)return 0;
+
+ numBlocks = inputLen/128;
+
+ switch(m_mode)
+ {
+ case ECB:
+ for (i = numBlocks; i > 0; i--)
+ {
+ decrypt(input,outBuffer);
+ input += 16;
+ outBuffer += 16;
+ }
+ break;
+ case CBC:
+#if STRICT_ALIGN
+ kvi_memmove(iv,m_initVector,16);
+#else
+ *((UINT32*)iv[0]) = *((UINT32*)(m_initVector ));
+ *((UINT32*)iv[1]) = *((UINT32*)(m_initVector+ 4));
+ *((UINT32*)iv[2]) = *((UINT32*)(m_initVector+ 8));
+ *((UINT32*)iv[3]) = *((UINT32*)(m_initVector+12));
+#endif
+ for (i = numBlocks; i > 0; i--)
+ {
+ decrypt(input, block);
+ ((UINT32*)block)[0] ^= *((UINT32*)iv[0]);
+ ((UINT32*)block)[1] ^= *((UINT32*)iv[1]);
+ ((UINT32*)block)[2] ^= *((UINT32*)iv[2]);
+ ((UINT32*)block)[3] ^= *((UINT32*)iv[3]);
+#if STRICT_ALIGN
+ kvi_memmove(iv, input, 16);
+ kvi_memmove(outBuf, block, 16);
+#else
+ *((UINT32*)iv[0]) = ((UINT32*)input)[0]; ((UINT32*)outBuffer)[0] = ((UINT32*)block)[0];
+ *((UINT32*)iv[1]) = ((UINT32*)input)[1]; ((UINT32*)outBuffer)[1] = ((UINT32*)block)[1];
+ *((UINT32*)iv[2]) = ((UINT32*)input)[2]; ((UINT32*)outBuffer)[2] = ((UINT32*)block)[2];
+ *((UINT32*)iv[3]) = ((UINT32*)input)[3]; ((UINT32*)outBuffer)[3] = ((UINT32*)block)[3];
+#endif
+ input += 16;
+ outBuffer += 16;
+ }
+ break;
+ case CFB1:
+#if STRICT_ALIGN
+ kvi_memmove(iv, m_initVector, 16);
+#else
+ *((UINT32*)iv[0]) = *((UINT32*)(m_initVector));
+ *((UINT32*)iv[1]) = *((UINT32*)(m_initVector+ 4));
+ *((UINT32*)iv[2]) = *((UINT32*)(m_initVector+ 8));
+ *((UINT32*)iv[3]) = *((UINT32*)(m_initVector+12));
+#endif
+ for(i = numBlocks; i > 0; i--)
+ {
+ for(k = 0; k < 128; k++)
+ {
+ *((UINT32*) block ) = *((UINT32*)iv[0]);
+ *((UINT32*)(block+ 4)) = *((UINT32*)iv[1]);
+ *((UINT32*)(block+ 8)) = *((UINT32*)iv[2]);
+ *((UINT32*)(block+12)) = *((UINT32*)iv[3]);
+ encrypt(block, block);
+ iv[0][0] = (iv[0][0] << 1) | (iv[0][1] >> 7);
+ iv[0][1] = (iv[0][1] << 1) | (iv[0][2] >> 7);
+ iv[0][2] = (iv[0][2] << 1) | (iv[0][3] >> 7);
+ iv[0][3] = (iv[0][3] << 1) | (iv[1][0] >> 7);
+ iv[1][0] = (iv[1][0] << 1) | (iv[1][1] >> 7);
+ iv[1][1] = (iv[1][1] << 1) | (iv[1][2] >> 7);
+ iv[1][2] = (iv[1][2] << 1) | (iv[1][3] >> 7);
+ iv[1][3] = (iv[1][3] << 1) | (iv[2][0] >> 7);
+ iv[2][0] = (iv[2][0] << 1) | (iv[2][1] >> 7);
+ iv[2][1] = (iv[2][1] << 1) | (iv[2][2] >> 7);
+ iv[2][2] = (iv[2][2] << 1) | (iv[2][3] >> 7);
+ iv[2][3] = (iv[2][3] << 1) | (iv[3][0] >> 7);
+ iv[3][0] = (iv[3][0] << 1) | (iv[3][1] >> 7);
+ iv[3][1] = (iv[3][1] << 1) | (iv[3][2] >> 7);
+ iv[3][2] = (iv[3][2] << 1) | (iv[3][3] >> 7);
+ iv[3][3] = (iv[3][3] << 1) | (input[k/8] >> (7-(k&7))) & 1;
+ outBuffer[k/8] ^= (block[0] & 0x80) >> (k & 7);
+ }
+ }
+ break;
+ default:
+ return -1;
+ break;
+ }
+
+ return 128*numBlocks;
+}
+
+int Rijndael::padDecrypt(const UINT8 *input, int inputOctets, UINT8 *outBuffer)
+{
+ int i, numBlocks, padLen;
+ UINT8 block[16];
+ UINT32 iv[4];
+
+ if(m_state != Valid)return RIJNDAEL_NOT_INITIALIZED;
+ if(m_direction != Decrypt)return RIJNDAEL_BAD_DIRECTION;
+
+ if(input == 0 || inputOctets <= 0)return 0;
+
+ if((inputOctets % 16) != 0)return RIJNDAEL_CORRUPTED_DATA;
+
+ numBlocks = inputOctets/16;
+
+ switch(m_mode){
+ case ECB:
+ for (i = numBlocks - 1; i > 0; i--)
+ {
+ decrypt(input, outBuffer);
+ input += 16;
+ outBuffer += 16;
+ }
+
+ decrypt(input, block);
+ padLen = block[15];
+ if (padLen >= 16)return RIJNDAEL_CORRUPTED_DATA;
+ for(i = 16 - padLen; i < 16; i++)
+ {
+ if(block[i] != padLen)return RIJNDAEL_CORRUPTED_DATA;
+ }
+ kvi_memmove(outBuffer, block, 16 - padLen);
+ break;
+ case CBC:
+ kvi_memmove(iv, m_initVector, 16);
+ /* all blocks but last */
+ for (i = numBlocks - 1; i > 0; i--)
+ {
+ decrypt(input, block);
+ ((UINT32*)block)[0] ^= iv[0];
+ ((UINT32*)block)[1] ^= iv[1];
+ ((UINT32*)block)[2] ^= iv[2];
+ ((UINT32*)block)[3] ^= iv[3];
+ kvi_memmove(iv, input, 16);
+ kvi_memmove(outBuffer, block, 16);
+ input += 16;
+ outBuffer += 16;
+ }
+ /* last block */
+ decrypt(input, block);
+ ((UINT32*)block)[0] ^= iv[0];
+ ((UINT32*)block)[1] ^= iv[1];
+ ((UINT32*)block)[2] ^= iv[2];
+ ((UINT32*)block)[3] ^= iv[3];
+ padLen = block[15];
+ if(padLen <= 0 || padLen > 16)return RIJNDAEL_CORRUPTED_DATA;
+ for(i = 16 - padLen; i < 16; i++)
+ {
+ if(block[i] != padLen)return RIJNDAEL_CORRUPTED_DATA;
+ }
+ kvi_memmove(outBuffer, block, 16 - padLen);
+ break;
+
+ default:
+ return -1;
+ break;
+ }
+
+ return 16*numBlocks - padLen;
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// ALGORITHM
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+void Rijndael::keySched(UINT8 key[_MAX_KEY_COLUMNS][4])
+{
+ int j,rconpointer = 0;
+
+ // Calculate the necessary round keys
+ // The number of calculations depends on keyBits and blockBits
+ int uKeyColumns = m_uRounds - 6;
+
+ UINT8 tempKey[_MAX_KEY_COLUMNS][4];
+
+ // Copy the input key to the temporary key matrix
+
+ for(j = 0;j < uKeyColumns;j++)
+ {
+ *((UINT32*)(tempKey[j])) = *((UINT32*)(key[j]));
+ }
+
+ unsigned int r = 0;
+ int t = 0;
+
+ // copy values into round key array
+ for(j = 0;(j < uKeyColumns) && (r <= m_uRounds); )
+ {
+ for(;(j < uKeyColumns) && (t < 4); j++, t++)
+ {
+ *((UINT32*)m_expandedKey[r][t]) = *((UINT32*)tempKey[j]);
+ }
+
+
+ if(t == 4)
+ {
+ r++;
+ t = 0;
+ }
+ }
+
+ while(r <= m_uRounds)
+ {
+ tempKey[0][0] ^= S[tempKey[uKeyColumns-1][1]];
+ tempKey[0][1] ^= S[tempKey[uKeyColumns-1][2]];
+ tempKey[0][2] ^= S[tempKey[uKeyColumns-1][3]];
+ tempKey[0][3] ^= S[tempKey[uKeyColumns-1][0]];
+ tempKey[0][0] ^= rcon[rconpointer++];
+
+ if (uKeyColumns != 8)
+ {
+ for(j = 1; j < uKeyColumns; j++)
+ {
+ *((UINT32*)tempKey[j]) ^= *((UINT32*)tempKey[j-1]);
+ }
+ } else {
+ for(j = 1; j < uKeyColumns/2; j++)
+ {
+ *((UINT32*)tempKey[j]) ^= *((UINT32*)tempKey[j-1]);
+ }
+ tempKey[uKeyColumns/2][0] ^= S[tempKey[uKeyColumns/2 - 1][0]];
+ tempKey[uKeyColumns/2][1] ^= S[tempKey[uKeyColumns/2 - 1][1]];
+ tempKey[uKeyColumns/2][2] ^= S[tempKey[uKeyColumns/2 - 1][2]];
+ tempKey[uKeyColumns/2][3] ^= S[tempKey[uKeyColumns/2 - 1][3]];
+ for(j = uKeyColumns/2 + 1; j < uKeyColumns; j++)
+ {
+ *((UINT32*)tempKey[j]) ^= *((UINT32*)tempKey[j-1]);
+ }
+ }
+ for(j = 0; (j < uKeyColumns) && (r <= m_uRounds); )
+ {
+ for(; (j < uKeyColumns) && (t < 4); j++, t++)
+ {
+ *((UINT32*)m_expandedKey[r][t]) = *((UINT32*)tempKey[j]);
+ }
+ if(t == 4)
+ {
+ r++;
+ t = 0;
+ }
+ }
+ }
+}
+
+void Rijndael::keyEncToDec()
+{
+ UINT8 *w;
+
+ for(unsigned int r = 1; r < m_uRounds; r++)
+ {
+ w = m_expandedKey[r][0];
+ *((UINT32*)w) = *((UINT32*)U1[w[0]]) ^ *((UINT32*)U2[w[1]]) ^ *((UINT32*)U3[w[2]]) ^ *((UINT32*)U4[w[3]]);
+ w = m_expandedKey[r][1];
+ *((UINT32*)w) = *((UINT32*)U1[w[0]]) ^ *((UINT32*)U2[w[1]]) ^ *((UINT32*)U3[w[2]]) ^ *((UINT32*)U4[w[3]]);
+ w = m_expandedKey[r][2];
+ *((UINT32*)w) = *((UINT32*)U1[w[0]]) ^ *((UINT32*)U2[w[1]]) ^ *((UINT32*)U3[w[2]]) ^ *((UINT32*)U4[w[3]]);
+ w = m_expandedKey[r][3];
+ *((UINT32*)w) = *((UINT32*)U1[w[0]]) ^ *((UINT32*)U2[w[1]]) ^ *((UINT32*)U3[w[2]]) ^ *((UINT32*)U4[w[3]]);
+ }
+}
+
+void Rijndael::encrypt(const UINT8 a[16], UINT8 b[16])
+{
+ unsigned int r;
+ UINT8 temp[4][4];
+
+ *((UINT32*)temp[0]) = *((UINT32*)(a )) ^ *((UINT32*)m_expandedKey[0][0]);
+ *((UINT32*)temp[1]) = *((UINT32*)(a+ 4)) ^ *((UINT32*)m_expandedKey[0][1]);
+ *((UINT32*)temp[2]) = *((UINT32*)(a+ 8)) ^ *((UINT32*)m_expandedKey[0][2]);
+ *((UINT32*)temp[3]) = *((UINT32*)(a+12)) ^ *((UINT32*)m_expandedKey[0][3]);
+ *((UINT32*)(b )) = *((UINT32*)T1[temp[0][0]])
+ ^ *((UINT32*)T2[temp[1][1]])
+ ^ *((UINT32*)T3[temp[2][2]])
+ ^ *((UINT32*)T4[temp[3][3]]);
+ *((UINT32*)(b + 4)) = *((UINT32*)T1[temp[1][0]])
+ ^ *((UINT32*)T2[temp[2][1]])
+ ^ *((UINT32*)T3[temp[3][2]])
+ ^ *((UINT32*)T4[temp[0][3]]);
+ *((UINT32*)(b + 8)) = *((UINT32*)T1[temp[2][0]])
+ ^ *((UINT32*)T2[temp[3][1]])
+ ^ *((UINT32*)T3[temp[0][2]])
+ ^ *((UINT32*)T4[temp[1][3]]);
+ *((UINT32*)(b +12)) = *((UINT32*)T1[temp[3][0]])
+ ^ *((UINT32*)T2[temp[0][1]])
+ ^ *((UINT32*)T3[temp[1][2]])
+ ^ *((UINT32*)T4[temp[2][3]]);
+ for(r = 1; r < m_uRounds-1; r++)
+ {
+ *((UINT32*)temp[0]) = *((UINT32*)(b )) ^ *((UINT32*)m_expandedKey[r][0]);
+ *((UINT32*)temp[1]) = *((UINT32*)(b+ 4)) ^ *((UINT32*)m_expandedKey[r][1]);
+ *((UINT32*)temp[2]) = *((UINT32*)(b+ 8)) ^ *((UINT32*)m_expandedKey[r][2]);
+ *((UINT32*)temp[3]) = *((UINT32*)(b+12)) ^ *((UINT32*)m_expandedKey[r][3]);
+
+ *((UINT32*)(b )) = *((UINT32*)T1[temp[0][0]])
+ ^ *((UINT32*)T2[temp[1][1]])
+ ^ *((UINT32*)T3[temp[2][2]])
+ ^ *((UINT32*)T4[temp[3][3]]);
+ *((UINT32*)(b + 4)) = *((UINT32*)T1[temp[1][0]])
+ ^ *((UINT32*)T2[temp[2][1]])
+ ^ *((UINT32*)T3[temp[3][2]])
+ ^ *((UINT32*)T4[temp[0][3]]);
+ *((UINT32*)(b + 8)) = *((UINT32*)T1[temp[2][0]])
+ ^ *((UINT32*)T2[temp[3][1]])
+ ^ *((UINT32*)T3[temp[0][2]])
+ ^ *((UINT32*)T4[temp[1][3]]);
+ *((UINT32*)(b +12)) = *((UINT32*)T1[temp[3][0]])
+ ^ *((UINT32*)T2[temp[0][1]])
+ ^ *((UINT32*)T3[temp[1][2]])
+ ^ *((UINT32*)T4[temp[2][3]]);
+ }
+ *((UINT32*)temp[0]) = *((UINT32*)(b )) ^ *((UINT32*)m_expandedKey[m_uRounds-1][0]);
+ *((UINT32*)temp[1]) = *((UINT32*)(b+ 4)) ^ *((UINT32*)m_expandedKey[m_uRounds-1][1]);
+ *((UINT32*)temp[2]) = *((UINT32*)(b+ 8)) ^ *((UINT32*)m_expandedKey[m_uRounds-1][2]);
+ *((UINT32*)temp[3]) = *((UINT32*)(b+12)) ^ *((UINT32*)m_expandedKey[m_uRounds-1][3]);
+ b[ 0] = T1[temp[0][0]][1];
+ b[ 1] = T1[temp[1][1]][1];
+ b[ 2] = T1[temp[2][2]][1];
+ b[ 3] = T1[temp[3][3]][1];
+ b[ 4] = T1[temp[1][0]][1];
+ b[ 5] = T1[temp[2][1]][1];
+ b[ 6] = T1[temp[3][2]][1];
+ b[ 7] = T1[temp[0][3]][1];
+ b[ 8] = T1[temp[2][0]][1];
+ b[ 9] = T1[temp[3][1]][1];
+ b[10] = T1[temp[0][2]][1];
+ b[11] = T1[temp[1][3]][1];
+ b[12] = T1[temp[3][0]][1];
+ b[13] = T1[temp[0][1]][1];
+ b[14] = T1[temp[1][2]][1];
+ b[15] = T1[temp[2][3]][1];
+ *((UINT32*)(b )) ^= *((UINT32*)m_expandedKey[m_uRounds][0]);
+ *((UINT32*)(b+ 4)) ^= *((UINT32*)m_expandedKey[m_uRounds][1]);
+ *((UINT32*)(b+ 8)) ^= *((UINT32*)m_expandedKey[m_uRounds][2]);
+ *((UINT32*)(b+12)) ^= *((UINT32*)m_expandedKey[m_uRounds][3]);
+}
+
+void Rijndael::decrypt(const UINT8 a[16], UINT8 b[16])
+{
+ int r;
+ UINT8 temp[4][4];
+
+ *((UINT32*)temp[0]) = *((UINT32*)(a )) ^ *((UINT32*)m_expandedKey[m_uRounds][0]);
+ *((UINT32*)temp[1]) = *((UINT32*)(a+ 4)) ^ *((UINT32*)m_expandedKey[m_uRounds][1]);
+ *((UINT32*)temp[2]) = *((UINT32*)(a+ 8)) ^ *((UINT32*)m_expandedKey[m_uRounds][2]);
+ *((UINT32*)temp[3]) = *((UINT32*)(a+12)) ^ *((UINT32*)m_expandedKey[m_uRounds][3]);
+
+ *((UINT32*)(b )) = *((UINT32*)T5[temp[0][0]])
+ ^ *((UINT32*)T6[temp[3][1]])
+ ^ *((UINT32*)T7[temp[2][2]])
+ ^ *((UINT32*)T8[temp[1][3]]);
+ *((UINT32*)(b+ 4)) = *((UINT32*)T5[temp[1][0]])
+ ^ *((UINT32*)T6[temp[0][1]])
+ ^ *((UINT32*)T7[temp[3][2]])
+ ^ *((UINT32*)T8[temp[2][3]]);
+ *((UINT32*)(b+ 8)) = *((UINT32*)T5[temp[2][0]])
+ ^ *((UINT32*)T6[temp[1][1]])
+ ^ *((UINT32*)T7[temp[0][2]])
+ ^ *((UINT32*)T8[temp[3][3]]);
+ *((UINT32*)(b+12)) = *((UINT32*)T5[temp[3][0]])
+ ^ *((UINT32*)T6[temp[2][1]])
+ ^ *((UINT32*)T7[temp[1][2]])
+ ^ *((UINT32*)T8[temp[0][3]]);
+ for(r = m_uRounds-1; r > 1; r--)
+ {
+ *((UINT32*)temp[0]) = *((UINT32*)(b )) ^ *((UINT32*)m_expandedKey[r][0]);
+ *((UINT32*)temp[1]) = *((UINT32*)(b+ 4)) ^ *((UINT32*)m_expandedKey[r][1]);
+ *((UINT32*)temp[2]) = *((UINT32*)(b+ 8)) ^ *((UINT32*)m_expandedKey[r][2]);
+ *((UINT32*)temp[3]) = *((UINT32*)(b+12)) ^ *((UINT32*)m_expandedKey[r][3]);
+ *((UINT32*)(b )) = *((UINT32*)T5[temp[0][0]])
+ ^ *((UINT32*)T6[temp[3][1]])
+ ^ *((UINT32*)T7[temp[2][2]])
+ ^ *((UINT32*)T8[temp[1][3]]);
+ *((UINT32*)(b+ 4)) = *((UINT32*)T5[temp[1][0]])
+ ^ *((UINT32*)T6[temp[0][1]])
+ ^ *((UINT32*)T7[temp[3][2]])
+ ^ *((UINT32*)T8[temp[2][3]]);
+ *((UINT32*)(b+ 8)) = *((UINT32*)T5[temp[2][0]])
+ ^ *((UINT32*)T6[temp[1][1]])
+ ^ *((UINT32*)T7[temp[0][2]])
+ ^ *((UINT32*)T8[temp[3][3]]);
+ *((UINT32*)(b+12)) = *((UINT32*)T5[temp[3][0]])
+ ^ *((UINT32*)T6[temp[2][1]])
+ ^ *((UINT32*)T7[temp[1][2]])
+ ^ *((UINT32*)T8[temp[0][3]]);
+ }
+
+ *((UINT32*)temp[0]) = *((UINT32*)(b )) ^ *((UINT32*)m_expandedKey[1][0]);
+ *((UINT32*)temp[1]) = *((UINT32*)(b+ 4)) ^ *((UINT32*)m_expandedKey[1][1]);
+ *((UINT32*)temp[2]) = *((UINT32*)(b+ 8)) ^ *((UINT32*)m_expandedKey[1][2]);
+ *((UINT32*)temp[3]) = *((UINT32*)(b+12)) ^ *((UINT32*)m_expandedKey[1][3]);
+ b[ 0] = S5[temp[0][0]];
+ b[ 1] = S5[temp[3][1]];
+ b[ 2] = S5[temp[2][2]];
+ b[ 3] = S5[temp[1][3]];
+ b[ 4] = S5[temp[1][0]];
+ b[ 5] = S5[temp[0][1]];
+ b[ 6] = S5[temp[3][2]];
+ b[ 7] = S5[temp[2][3]];
+ b[ 8] = S5[temp[2][0]];
+ b[ 9] = S5[temp[1][1]];
+ b[10] = S5[temp[0][2]];
+ b[11] = S5[temp[3][3]];
+ b[12] = S5[temp[3][0]];
+ b[13] = S5[temp[2][1]];
+ b[14] = S5[temp[1][2]];
+ b[15] = S5[temp[0][3]];
+ *((UINT32*)(b )) ^= *((UINT32*)m_expandedKey[0][0]);
+ *((UINT32*)(b+ 4)) ^= *((UINT32*)m_expandedKey[0][1]);
+ *((UINT32*)(b+ 8)) ^= *((UINT32*)m_expandedKey[0][2]);
+ *((UINT32*)(b+12)) ^= *((UINT32*)m_expandedKey[0][3]);
+}
+
+#endif // COMPILE_CRYPT_SUPPORT
diff --git a/src/modules/rijndael/rijndael.h b/src/modules/rijndael/rijndael.h
new file mode 100644
index 00000000..e720df3e
--- /dev/null
+++ b/src/modules/rijndael/rijndael.h
@@ -0,0 +1,153 @@
+#ifndef _RIJNDAEL_H_
+#define _RIJNDAEL_H_
+
+//
+// File : rijndael.h
+// Creation date : Sun Nov 5 2000 15:42:14 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+//
+// Another implementation of the Rijndael cipher.
+// This is intended to be an easily usable library file.
+// Based on the Vincent Rijmen and K.U.Leuven implementation 2.4.
+//
+
+//
+// Original Copyright notice:
+//
+// rijndael-alg-fst.c v2.4 April '2000
+// rijndael-alg-fst.h
+// rijndael-api-fst.c
+// rijndael-api-fst.h
+//
+// Optimised ANSI C code
+//
+// authors: v1.0: Antoon Bosselaers
+// v2.0: Vincent Rijmen, K.U.Leuven
+// v2.3: Paulo Barreto
+// v2.4: Vincent Rijmen, K.U.Leuven
+//
+// This code is placed in the public domain.
+//
+
+//
+// This implementation works on 128 , 192 , 256 bit keys
+// and on 128 bit blocks
+//
+
+//
+// Example of usage:
+//
+// // Input data
+// unsigned char key[32]; // The key
+// initializeYour256BitKey(); // Obviously initialized with sth
+// const unsigned char * plainText = getYourPlainText(); // Your plain text
+// int plainTextLen = strlen(plainText); // Plain text length
+//
+// // Encrypting
+// Rijndael rin;
+// unsigned char output[plainTextLen + 16];
+//
+// rin.init(Rijndael::CBC,Rijndael::Encrypt,key,Rijndael::Key32Bytes);
+// // It is a good idea to check the error code
+// int len = rin.padEncrypt(plainText,len,output);
+// if(len >= 0)useYourEncryptedText();
+// else encryptError(len);
+//
+// // Decrypting: we can reuse the same object
+// unsigned char output2[len];
+// rin.init(Rijndael::ECB,Rijndael::Decrypt,keyMaterial,Rijndael::Key32Bytes));
+// len = rin.padDecrypt(output,len,output2);
+// if(len >= 0)useYourDecryptedText();
+// else decryptError(len);
+//
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_CRYPT_SUPPORT
+
+#define _MAX_KEY_COLUMNS (256/32)
+#define _MAX_ROUNDS 14
+//#define BITSPERBLOCK 128 /* Default number of bits in a cipher block */
+#define MAX_IV_SIZE 16
+
+// We assume that unsigned int is 32 bits long....
+typedef unsigned char UINT8;
+typedef unsigned int UINT32;
+typedef unsigned short UINT16;
+
+#define RIJNDAEL_SUCCESS 0
+#define RIJNDAEL_UNSUPPORTED_MODE -1
+#define RIJNDAEL_UNSUPPORTED_DIRECTION -2
+#define RIJNDAEL_UNSUPPORTED_KEY_LENGTH -3
+#define RIJNDAEL_BAD_KEY -4
+#define RIJNDAEL_NOT_INITIALIZED -5
+#define RIJNDAEL_BAD_DIRECTION -6
+#define RIJNDAEL_CORRUPTED_DATA -7
+
+class Rijndael
+{
+public:
+ enum Direction { Encrypt , Decrypt };
+ enum Mode { ECB , CBC , CFB1 };
+ enum KeyLength { Key16Bytes , Key24Bytes , Key32Bytes };
+
+ Rijndael();
+ ~Rijndael();
+protected:
+ enum State { Valid , Invalid };
+
+ State m_state;
+ Mode m_mode;
+ Direction m_direction;
+ UINT8 m_initVector[MAX_IV_SIZE];
+ UINT32 m_uRounds;
+ UINT8 m_expandedKey[_MAX_ROUNDS+1][4][4];
+public:
+ // Initializes the crypt session
+ // Returns RIJNDAEL_SUCCESS or an error code
+ int init(Mode mode,Direction dir,const UINT8 *key,KeyLength keyLen,UINT8 * initVector = 0);
+ // Input len is in BITS!
+ // Encrypts inputLen / 128 blocks of input and puts it in outBuffer
+ // outBuffer must be at least inputLen / 8 bytes long.
+ // Returns the encrypted buffer length in BITS or an error code < 0 in case of error
+ int blockEncrypt(const UINT8 *input, int inputLen, UINT8 *outBuffer);
+ // Input len is in BYTES!
+ // outBuffer must be at least inputLen + 16 bytes long
+ // Returns the encrypted buffer length in BYTES or an error code < 0 in case of error
+ int padEncrypt(const UINT8 *input, int inputOctets, UINT8 *outBuffer);
+ // Input len is in BITS!
+ // outBuffer must be at least inputLen / 8 bytes long
+ // Returns the decrypted buffer length in BITS and an error code < 0 in case of error
+ int blockDecrypt(const UINT8 *input, int inputLen, UINT8 *outBuffer);
+ // Input len is in BYTES!
+ // outBuffer must be at least inputLen bytes long
+ // Returns the decrypted buffer length in BYTES and an error code < 0 in case of error
+ int padDecrypt(const UINT8 *input, int inputOctets, UINT8 *outBuffer);
+protected:
+ void keySched(UINT8 key[_MAX_KEY_COLUMNS][4]);
+ void keyEncToDec();
+ void encrypt(const UINT8 a[16], UINT8 b[16]);
+ void decrypt(const UINT8 a[16], UINT8 b[16]);
+};
+
+#endif // COMPILE_CRYPT_SUPPORT
+
+#endif // _RIJNDAEL_H_
diff --git a/src/modules/setup/Makefile.am b/src/modules/setup/Makefile.am
new file mode 100644
index 00000000..73e3bcec
--- /dev/null
+++ b/src/modules/setup/Makefile.am
@@ -0,0 +1,26 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvisetup.la
+
+libkvisetup_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvisetup_la_SOURCES = libkvisetup.cpp setupwizard.cpp
+libkvisetup_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= setupwizard.h
+
+#datadir = $(picsdir)
+
+#data_DATA = kvi_dock.png
+
+#EXTRA_DIST = $(data_DATA)
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+setupwizard.cpp: setupwizard.moc
diff --git a/src/modules/setup/libkvisetup.cpp b/src/modules/setup/libkvisetup.cpp
new file mode 100644
index 00000000..7f5bad25
--- /dev/null
+++ b/src/modules/setup/libkvisetup.cpp
@@ -0,0 +1,158 @@
+//=============================================================================
+//
+// File : libkvisetup.cpp
+// Creation date : Sat Oct 6 02:08:24 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_module.h"
+
+#include "setupwizard.h"
+
+#include <qstring.h>
+#include <qfile.h>
+
+#include "kvi_options.h"
+#include "kvi_defaults.h"
+#include "kvi_app.h"
+#include "kvi_kvs_script.h"
+#include "kvi_kvs_variantlist.h"
+#include "kvi_window.h"
+#include "kvi_theme.h"
+#include "kvi_ircserverdb.h"
+
+// this will be choosen during the setup process
+QString g_szChoosenIncomingDirectory;
+//int g_iThemeToApply = THEME_APPLY_NONE;
+bool bNeedToApplyDefaults;
+unsigned int uPort;
+QString szHost;
+QString szUrl;
+QString szMircServers;
+QString szMircIni;
+
+
+
+
+// this is called by KviApp when no local kvirc directory has been found
+// we have nothing to rely on yet... (settings have not been loaded yet)
+KVIMODULEEXPORTFUNC bool setup_begin()
+{
+ // FIXME: try to guess the user's .kvirc directory
+ // and the preferred nickname from a previous installation
+
+ KviSetupWizard * w = new KviSetupWizard();
+ int retcode = w->exec();
+ delete w;
+ return (retcode == QDialog::Accepted);
+}
+
+
+// this is called just after the first startup
+// all the subsystems are up and running (we even have a nice console
+// to write on if needed).
+// all the options are loaded.
+KVIMODULEEXPORTFUNC void setup_finish()
+{
+ if(bNeedToApplyDefaults)
+ {
+ KVI_OPTION_STRING(KviOption_stringIncomingPath) = g_szChoosenIncomingDirectory;
+ // Reset the quit message and the real name... if they contain the KVIrc version
+ // then probably the user hasn't even edited them.
+ if(KVI_OPTION_STRING(KviOption_stringQuitMessage).find("KVIrc",0,false) != -1)
+ KVI_OPTION_STRING(KviOption_stringQuitMessage) = KVI_DEFAULT_QUIT_MESSAGE;
+ // We deserve to change the user's part message in something nice :)
+ KVI_OPTION_STRING(KviOption_stringPartMessage) = KVI_DEFAULT_PART_MESSAGE;
+
+ // FIXME: Should we also change these ?
+ // #define KVI_DEFAULT_CTCP_USERINFO_REPLY "I'm too lazy to edit this field."
+ // #define KVI_DEFAULT_AWAY_MESSAGE "I'm off to see the wizard."
+
+ // Apply the choosen default theme
+ QString szDir;
+/* switch(g_iThemeToApply)
+ {
+ case THEME_APPLY_HIRES:
+ g_pApp->getGlobalKvircDirectory(szDir,KviApp::Themes,"default.hires");
+ g_pApp->loadTheme(szDir);
+ break;
+ case THEME_APPLY_LORES:
+ g_pApp->getGlobalKvircDirectory(szDir,KviApp::Themes,"default.lores");
+ g_pApp->loadTheme(szDir);
+ break;
+ // default: no theme
+ }*/
+
+ g_pApp->getGlobalKvircDirectory(szDir,KviApp::Themes,"silverirc");
+ KviThemeInfo out;
+ KviTheme::load(szDir,out);
+
+ if(!szMircServers.isEmpty())
+ {
+ g_pIrcServerDataBase->loadFromMircIni(szMircServers,szMircIni,
+ KVI_OPTION_STRINGLIST(KviOption_stringlistRecentServers));
+ g_pApp->saveIrcServerDataBase();
+ }
+
+ g_pApp->loadDefaultScript();
+ if(!szUrl.isEmpty())
+ {
+ KviKvsVariantList * pParams = new KviKvsVariantList();
+ pParams->append(szUrl);
+ KviKvsScript::run("openurl $0",g_pActiveWindow,pParams);
+ delete pParams;
+ KVI_OPTION_BOOL(KviOption_boolShowServersConnectDialogOnStart) = TRUE;
+ } else if(!szHost.isEmpty()) {
+ KviKvsVariantList * pParams = new KviKvsVariantList();
+ pParams->append(szHost);
+ pParams->append((kvs_int_t)uPort);
+ KviKvsScript::run("server $0 $1",g_pActiveWindow,pParams);
+ delete pParams;
+ KVI_OPTION_BOOL(KviOption_boolShowServersConnectDialogOnStart) = TRUE;
+ }
+ }
+}
+
+static bool setup_module_init(KviModule *m)
+{
+ bNeedToApplyDefaults=true;
+ return true;
+}
+
+static bool setup_module_cleanup(KviModule *m)
+{
+ return true;
+}
+
+static bool setup_module_can_unload(KviModule *m)
+{
+ return true; // can be always unloaded...this module does basically nothing
+}
+
+KVIRC_MODULE(
+ "Setup wizard",
+ "1.0.0",
+ "Szymon Stefanek <pragma at kvirc dot net>" ,
+ "First-time-run setup wizard",
+ setup_module_init ,
+ setup_module_can_unload,
+ 0,
+ setup_module_cleanup
+)
diff --git a/src/modules/setup/setupwizard.cpp b/src/modules/setup/setupwizard.cpp
new file mode 100644
index 00000000..5b8c1ff7
--- /dev/null
+++ b/src/modules/setup/setupwizard.cpp
@@ -0,0 +1,1132 @@
+//===============================================================================
+//
+// File : setupwizard.cpp
+// Creation date : Sat Oct 6 02:06:53 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//==============================================================================
+
+bool g_bFoundMirc;
+
+#include "setupwizard.h"
+
+#include "kvi_app.h"
+#include "kvi_locale.h"
+#include "kvi_fileutils.h"
+#include "kvi_defaults.h"
+#include "kvi_msgbox.h"
+#include "kvi_tal_filedialog.h"
+#include "kvi_qstring.h"
+#include "kvi_env.h"
+#include "kvi_options.h"
+#include "kvi_config.h"
+
+#include <kvi_tal_textedit.h>
+#include <qmessagebox.h>
+#include <qdir.h>
+#include <qpushbutton.h>
+#include <qvalidator.h>
+#include <qtextcodec.h>
+#include <qlayout.h>
+#include "kvi_tal_hbox.h"
+
+#ifdef COMPILE_ON_WINDOWS
+ #include <windows.h>
+ #include <winnls.h> // for MultiByteToWideChar
+ #include <objbase.h> // CoCreateInstance , CoInitialize & CO.
+ #include <shlobj.h> // IShellLink IPersistFile & CO.
+#else
+ #include <unistd.h> // for symlink()
+#endif
+
+#ifdef COMPILE_USE_QT4
+ #include <QDesktopWidget>
+#endif
+
+// libkvisetup.cpp
+extern QString g_szChoosenIncomingDirectory;
+//extern int g_iThemeToApply;
+extern bool bNeedToApplyDefaults;
+extern unsigned int uPort;
+extern QString szHost;
+extern QString szUrl;
+extern QString szMircServers;
+extern QString szMircIni;
+
+#ifdef COMPILE_ON_WINDOWS
+ #define KVI_LOCAL_KVIRC_SUBDIRECTORY_NAME "KVIrc"
+#else
+ #define KVI_LOCAL_KVIRC_SUBDIRECTORY_NAME ".kvirc"
+#endif
+
+KviSetupPage::KviSetupPage(KviSetupWizard * w)
+: QWidget(w)
+{
+ QGridLayout * g = new QGridLayout(this);
+
+ //setBackgroundColor(QColor(255,0,0));
+
+ // we need this to set localized text on buttons (see QT doc/ KviTalWizard class)
+ w->KviTalWizard::backButton()->setText(__tr2qs("< &Back"));
+ w->KviTalWizard::nextButton()->setText(__tr2qs("&Next >"));
+ w->KviTalWizard::finishButton()->setText(__tr2qs("Finish"));
+ w->KviTalWizard::cancelButton()->setText(__tr2qs("Cancel"));
+ //w->KviTalWizard::helpButton()->setText(__tr2qs("Help"));
+
+ m_pPixmapLabel = new QLabel(this);
+ g->addWidget(m_pPixmapLabel,0,0);
+
+ m_pPixmapLabel->setPixmap(*(w->m_pLabelPixmap));
+ m_pPixmapLabel->setFixedSize(w->m_pLabelPixmap->size());
+ m_pPixmapLabel->setFrameStyle(QFrame::Sunken | QFrame::StyledPanel);
+ m_pPixmapLabel->setMargin(0);
+
+ g->setSpacing(8);
+ g->setMargin(0);
+
+ m_pVBox = new KviTalVBox(this);
+ m_pVBox->setSpacing(4);
+ m_pVBox->setMargin(0);
+ //m_pVBox->setSizePolicy(QSizePolicy(QSizePolicy::Expanding));
+ //m_pVBox->setBackgroundColor(QColor(0,80,0));
+ //m_pVBox->setMaximumHeight(450);
+ g->addWidget(m_pVBox,0,1);
+
+ g->setColStretch(1,1);
+
+ QLabel * l = new QLabel(m_pVBox);
+ l->setAlignment(Qt::AlignAuto | Qt::AlignTop);
+ /*
+ QString szHeader = "<table border=\"0\" cellpadding=\"4\" cellspacing=\"0\" style=\"margin:0px;padding:0px;\" width=\"100%\"><tr><td bgcolor=\"#303030\">" \
+ "<h1><font color=\"#FFFFFF\">KVIrc " KVI_VERSION "</font></h1>" \
+ "</td></tr></table>";
+ */
+ QString szHeader = "<h1><font color=\"#FFFFFF\">&nbsp;KVIrc " KVI_VERSION "</font></h1>";
+ l->setText(szHeader);
+ l->setFrameStyle(QFrame::Sunken | QFrame::StyledPanel);
+ l->setAlignment(Qt::AlignAuto | Qt::AlignVCenter);
+ l->setMargin(0);
+ l->setBackgroundColor(QColor(48,48,48));
+
+ m_pTextLabel = new QLabel(m_pVBox);
+#ifdef COMPILE_USE_QT4
+ m_pTextLabel->setWordWrap(true);
+#endif
+ m_pTextLabel->setAlignment(Qt::AlignJustify | Qt::AlignTop);
+ m_pVBox->setStretchFactor(m_pTextLabel,1);
+}
+
+KviSetupPage::~KviSetupPage()
+{
+}
+
+
+KviSetupWizard::KviSetupWizard()
+: KviTalWizard(0)
+{
+ setModal(true);
+
+ g_bFoundMirc = false;
+ QString szLabelText;
+
+ QString szImagePath;
+ g_pApp->getGlobalKvircDirectory(szImagePath,KviApp::Pics,"kvi_setup_label.png");
+
+ m_pLabelPixmap = new QPixmap(szImagePath);
+ if(m_pLabelPixmap->isNull())
+ {
+ delete m_pLabelPixmap;
+ m_pLabelPixmap = new QPixmap(250,450);
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // Welcome
+
+ m_pWelcome = new KviSetupPage(this);
+
+ // here we go...
+ QString szText = __tr2qs("<p>" \
+ "<h2>Welcome :)</h2>" \
+ "This is your first time running this version of KVIrc.<br>" \
+ "This wizard will guide you through the few steps " \
+ "required to complete the setup.<br><br>" \
+ "If you had a previous version of KVIrc installed, no worries. You will " \
+ "have a chance to preserve the old configuration." \
+ "</p>" \
+ "<p>Click \"<b>Next</b>\" to proceed.</p>");
+
+ m_pWelcome->m_pTextLabel->setText(szText);
+
+ addPage(m_pWelcome,__tr2qs("Welcome to KVIrc"));
+
+ setBackEnabled(m_pWelcome,false);
+ setHelpEnabled(m_pWelcome,false);
+
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // License
+#ifndef COMPILE_ON_WINDOWS //it have been already shown by installer
+ KviSetupPage * m_pLicense = new KviSetupPage(this);
+ m_pLicense->m_pTextLabel->setText(__tr2qs( \
+ "<p>All of the files in this distribution are covered by the GPL. " \
+ "In human terms this can be read as follows:<br>" \
+ "<ul>" \
+ "<li><b>KVIrc is free</b>, use it, have fun! <b>:)</b></li>" \
+ "<li>If you use <b>any</b> part of KVIrc in your own project, you <b>must</b> release that project under the same license.</li>" \
+ "</ul></p>" \
+ "<p>The \"legalese\" version of the license is shown in the box below.</p>"));
+
+ KviTalTextEdit * ed = new KviTalTextEdit(m_pLicense->m_pVBox);
+ ed->setReadOnly(true);
+ ed->setWordWrap(KviTalTextEdit::NoWrap);
+ QString szLicense;
+ QString szLicensePath;
+ g_pApp->getGlobalKvircDirectory(szLicensePath,KviApp::License,"EULA");
+ if(!KviFileUtils::loadFile(szLicensePath,szLicense))
+ {
+ szLicense = __tr("Oops... can't find the license file.\n" \
+ "It MUST be included in the distribution...\n" \
+ "Please report to <pragma at kvirc dot net>");
+ }
+ ed->setText(szLicense);
+
+ m_pLicense->m_pVBox->setStretchFactor(ed,1);
+
+ addPage(m_pLicense,__tr2qs("Dreaded License Agreement"));
+
+ setHelpEnabled(m_pLicense,false);
+
+ setCaption(__tr2qs("KVIrc Setup"));
+#else
+ m_pLicense = 0;
+#endif
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // Directories
+
+ m_pDirectory = new KviSetupPage(this);
+
+ m_pDirectory->m_pTextLabel->setText(__tr2qs("<p>Please choose a folder for " \
+ "KVIrc to store its settings and other data, and another for downloaded files. " \
+ "Make sure that you have permission to write to both folders.<br><br>" \
+ "The suggested locations are fine in most cases, so if you don't know what " \
+ "is this about, just click \"<b>Next</b>\".<br><br>" \
+ "If you had a previous version of KVIrc installed, you can choose " \
+ "the existing directory for the settings, and your configuration " \
+ "will be preserved." \
+ "</p>"));
+
+ addPage(m_pDirectory,__tr2qs("Application Folders"));
+
+ QString tmp;
+
+ m_pDirButtonGroup = new KviTalVButtonGroup(__tr2qs("Store configuration in folder"),m_pDirectory->m_pVBox);
+ m_pDirUsePrev = new QRadioButton(__tr2qs("Use settings folder from previous installation"),m_pDirButtonGroup);
+ connect(m_pDirUsePrev,SIGNAL(clicked()),this,SLOT(oldDirClicked()));
+
+ m_pOldPathBox = new KviTalHBox(m_pDirButtonGroup);
+ m_pOldDataPathEdit = new QLineEdit(m_pOldPathBox);
+ connect(m_pOldDataPathEdit,SIGNAL(textChanged ( const QString & )),this,SLOT(oldDataTextChanged ( const QString & )));
+
+ QPushButton * pb = new QPushButton(__tr2qs("&Browse..."),m_pOldPathBox);
+ connect(pb,SIGNAL(clicked()),this,SLOT(chooseOldDataPath()));
+ m_pOldPathBox->setSpacing(3);
+ m_pOldPathBox->setStretchFactor(m_pOldDataPathEdit,1);
+
+ m_pDirUseNew = new QRadioButton(__tr2qs("Use new settings folder"),m_pDirButtonGroup);
+ connect(m_pDirUseNew,SIGNAL(clicked()),this,SLOT(newDirClicked()));
+
+ QLabel* l = new QLabel(m_pDirButtonGroup);
+ l->setText(__tr2qs("Settings folder:"));
+
+ m_pNewPathBox = new KviTalHBox(m_pDirButtonGroup);
+ m_pDataPathEdit = new QLineEdit(m_pNewPathBox);
+
+ pb = new QPushButton(__tr2qs("&Browse..."),m_pNewPathBox);
+ connect(pb,SIGNAL(clicked()),this,SLOT(chooseDataPath()));
+
+ m_pNewPathBox->setSpacing(3);
+ m_pNewPathBox->setStretchFactor(m_pDataPathEdit,1);
+
+#ifdef COMPILE_ON_WINDOWS
+ tmp = QTextCodec::codecForLocale()->toUnicode(getenv( "APPDATA" ));
+ if(tmp.isEmpty())
+ tmp = QDir::homeDirPath();
+#else
+ tmp = QDir::homeDirPath();
+#endif //COMPILE_ON_WINDOWS
+ KviQString::ensureLastCharIs(tmp,KVI_PATH_SEPARATOR_CHAR);
+ tmp.append(KVI_LOCAL_KVIRC_SUBDIRECTORY_NAME);
+ KviFileUtils::adjustFilePath(tmp);
+ m_pDataPathEdit->setText(tmp);
+
+
+
+ l = new QLabel(m_pDirButtonGroup);
+ l->setText(__tr2qs("Download files to folder:"));
+
+
+ m_pNewIncomingBox = new KviTalHBox(m_pDirButtonGroup);
+
+ m_pIncomingPathEdit = new QLineEdit(m_pNewIncomingBox);
+
+ pb = new QPushButton(__tr2qs("&Browse..."),m_pNewIncomingBox);
+ connect(pb,SIGNAL(clicked()),this,SLOT(chooseIncomingPath()));
+
+ m_pNewIncomingBox->setSpacing(3);
+ m_pNewIncomingBox->setStretchFactor(m_pIncomingPathEdit,1);
+
+ tmp = QDir::homeDirPath();
+ KviQString::ensureLastCharIs(tmp,KVI_PATH_SEPARATOR_CHAR);
+ tmp.append(KVI_DEFAULT_INCOMING_SUBDIRECTORY_NAME);
+ KviFileUtils::adjustFilePath(tmp);
+ m_pIncomingPathEdit->setText(tmp);
+
+ m_pDirUseNew->toggle();
+ newDirClicked();
+
+#ifdef COMPILE_ON_WINDOWS
+ m_pDirMakePortable = new QRadioButton(__tr2qs("All settings in shared program folder (portable)")
+ ,m_pDirButtonGroup);
+#endif
+ // Pragma: Unused, takes only space.
+ //m_pDirRestore = new QRadioButton(__tr2qs("Restore from backup archive"),m_pDirButtonGroup);
+ //m_pDirRestore->setEnabled(FALSE);
+
+ //l = new QLabel(m_pDirectory->m_pVBox,"<b> </b>");
+
+ //m_pDirectory->m_pVBox->setStretchFactor(m_pDirectory->m_pTextLabel,1);
+
+ setHelpEnabled(m_pDirectory,false);
+
+ connect(m_pDataPathEdit,SIGNAL(textChanged ( const QString & )),this,SLOT(newDataTextChanged ( const QString & )));
+ connect(m_pIncomingPathEdit,SIGNAL(textChanged ( const QString & )),this,SLOT(newIncomingTextChanged ( const QString & )));
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // Identity
+
+ m_pIdentity = new KviSetupPage(this);
+
+ m_pIdentity->m_pTextLabel->setText(__tr2qs("Please choose a Nickname.<br><br>" \
+ "Your nickname is the name that other IRC users will know you by. " \
+ "It can't contain spaces or punctuation. Some IRC networks will shorten your nickname if it is more than 32 characters " \
+ "long.<br><br>"
+ "If in doubt, just enter the first nick that comes to mind. " \
+ "You will be able to change it later in the Identity properties, or with the /NICK command."));
+
+ QString nick;
+ char * nnn = kvi_getenv("USER");
+ if(nnn)nick = nnn;
+ else nick = "newbie";
+ if(nick.isEmpty())nick = "newbie";
+ if(nick == "root")nick = "newbie";
+//m_pIdentity->m_pVBox
+//__tr2qs("Basic Properties")
+ KviTalGroupBox * gbox = new KviTalGroupBox(1,Qt::Horizontal,QString(),m_pIdentity->m_pVBox);
+
+ m_pNickSelector = new KviStringSelector(gbox,__tr2qs("Nickname:"),&(KVI_OPTION_STRING(KviOption_stringNickname1)),true);
+ m_pNickSelector->setMinimumLabelWidth(120);
+
+ QValidator * v = new QRegExpValidator(QRegExp("[^-0-9 ][^ ]*"),gbox);
+ m_pNickSelector->setValidator(v);
+
+ QString szOptionalCtcpUserInfo = __tr2qs("This field is optional and will appear as part of the CTCP USERINFO reply.");
+ QString szCenterBegin("<center>");
+ QString szCenterEnd("</center>");
+ QString szTrailing = "<br><br>" + szOptionalCtcpUserInfo + szCenterEnd;
+
+ gbox = new KviTalGroupBox(1,Qt::Horizontal,__tr2qs("Profile"),m_pIdentity->m_pVBox);
+
+ m_pRealNameSelector = new KviStringSelector(gbox,__tr2qs("Real name:"),&(KVI_OPTION_STRING(KviOption_stringRealname)),true);
+ m_pRealNameSelector->setMinimumLabelWidth(120);
+
+ KviTalHBox* hb = new KviTalHBox(gbox);
+ hb->setSpacing(4);
+
+ l = new QLabel(__tr2qs("Age:"),hb);
+ l->setMinimumWidth(120);
+
+ m_pAgeCombo = new QComboBox(hb);
+
+ m_pAgeCombo->insertItem(__tr2qs("Unspecified"));
+ unsigned int i;
+ for(i=1;i<120;i++)
+ {
+ QString tmp;
+ tmp.setNum(i);
+ m_pAgeCombo->insertItem(tmp);
+ }
+
+ bool bOk;
+ i = KVI_OPTION_STRING(KviOption_stringCtcpUserInfoAge).toUInt(&bOk);
+ if(!bOk)i = 0;
+ if(i > 120)i = 120;
+ m_pAgeCombo->setCurrentItem(i);
+
+ hb->setStretchFactor(m_pAgeCombo,1);
+
+
+ hb = new KviTalHBox(gbox);
+ hb->setSpacing(4);
+
+ l = new QLabel(__tr2qs("Gender:"),hb);
+ l->setMinimumWidth(120);
+
+ m_pGenderCombo = new QComboBox(hb);
+
+ m_pGenderCombo->insertItem(__tr2qs("Unspecified"));
+ m_pGenderCombo->insertItem(__tr2qs("Female"));
+ m_pGenderCombo->insertItem(__tr2qs("Male"));
+
+ if(KviQString::equalCI(KVI_OPTION_STRING(KviOption_stringCtcpUserInfoGender),"Male"))
+ m_pGenderCombo->setCurrentItem(2);
+ else if(KviQString::equalCI(KVI_OPTION_STRING(KviOption_stringCtcpUserInfoGender),"Female"))
+ m_pGenderCombo->setCurrentItem(1);
+ else
+ m_pGenderCombo->setCurrentItem(0);
+
+ hb->setStretchFactor(m_pGenderCombo,1);
+
+ m_pLocationSelector = new KviStringSelector(gbox,__tr2qs("Location:"),&(KVI_OPTION_STRING(KviOption_stringCtcpUserInfoLocation)),true);
+ m_pLocationSelector->setMinimumLabelWidth(120);
+
+ m_pLanguagesSelector = new KviStringSelector(gbox,__tr2qs("Languages:"),&(KVI_OPTION_STRING(KviOption_stringCtcpUserInfoLanguages)),true);
+ m_pLanguagesSelector->setMinimumLabelWidth(120);
+
+ //m_pOtherInfoSelector = new KviStringSelector(gbox,__tr2qs("Other:"),&(KVI_OPTION_STRING(KviOption_stringCtcpUserInfoOther)),true);
+ //m_pOtherInfoSelector->setMinimumLabelWidth(120);
+
+ addPage(m_pIdentity,__tr2qs("Identity"));
+
+ //l = new QLabel(m_pIdentity->m_pVBox,"<b> </b>");
+
+ setHelpEnabled(m_pIdentity,false);
+
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // Default theme
+/* m_pTheme = new KviSetupPage(this);
+ m_pTheme->m_pTextLabel->setText(__tr2qs( \
+ "<p>Here you can choose the default appearance of KVIrc.<br><br>" \
+ "The Fancy Theme uses icons, a transparent background and a lot of colors. " \
+ "The Minimalist Theme is designed for low-color displays " \
+ "or for \"console\" extremists; it's more or less white text on a black background.<br><br>" \
+ "If you had a previous version of KVIrc installed, you can choose to not apply any theme " \
+ "in order to preserve your current visual settings.<br><br>" \
+ "If you don't know what to choose, just use the default.</p>"));
+
+ m_pThemeButtonGroup = new KviTalVButtonGroup(m_pTheme->m_pVBox);
+
+ KviTalHBox* pThemesHb = new KviTalHBox(m_pThemeButtonGroup);
+
+ KviTalVBox* pThemesVb = new KviTalVBox(pThemesHb);
+
+ QString szThemeImagePath;
+ g_pApp->getGlobalKvircDirectory(szThemeImagePath,KviApp::Pics,"kvi_setup_theme_hires.png");
+
+ QPixmap* pHiResPixmap = new QPixmap(szThemeImagePath);
+ if(pHiResPixmap->isNull())
+ {
+ delete pHiResPixmap;
+ pHiResPixmap= new QPixmap(250,200);
+ }
+
+ QLabel* pPixmapLabelHiRes = new QLabel(pThemesVb);
+
+ pPixmapLabelHiRes->setPixmap(*pHiResPixmap);
+ pPixmapLabelHiRes->setFixedSize(pHiResPixmap->size());
+ pPixmapLabelHiRes->setFrameStyle(QFrame::Sunken | QFrame::StyledPanel);
+ pPixmapLabelHiRes->setMargin(0);
+
+ m_pThemeHiRes = new QRadioButton(__tr2qs("&Fancy Theme"),pThemesVb);
+
+ pThemesVb = new KviTalVBox(pThemesHb);
+ g_pApp->getGlobalKvircDirectory(szThemeImagePath,KviApp::Pics,"kvi_setup_theme_lowres.png");
+ QPixmap* pLowResPixmap = new QPixmap(szThemeImagePath);
+ if(pLowResPixmap->isNull())
+ {
+ delete pLowResPixmap;
+ pLowResPixmap= new QPixmap(250,200);
+ }
+
+ QLabel* pPixmapLabelLowRes = new QLabel(pThemesVb);
+
+ pPixmapLabelLowRes->setPixmap(*pLowResPixmap);
+ pPixmapLabelLowRes->setFixedSize(pLowResPixmap->size());
+ pPixmapLabelLowRes->setFrameStyle(QFrame::Sunken | QFrame::StyledPanel);
+ pPixmapLabelLowRes->setMargin(0);
+
+ m_pThemeLoRes = new QRadioButton(__tr2qs("&Minimalist Theme"),pThemesVb);
+ m_pThemeNone = new QRadioButton(__tr2qs("&Don't apply any theme"),m_pThemeButtonGroup);
+ m_pThemeButtonGroup->insert(m_pThemeHiRes);
+ m_pThemeButtonGroup->insert(m_pThemeLoRes);
+
+ m_pThemeHiRes->setChecked(true);
+
+ addPage(m_pTheme,__tr2qs("Default Theme"));
+
+ setHelpEnabled(m_pTheme,false);*/
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // Desktop integration
+
+ m_pDesktopIntegration = new KviSetupPage(this);
+
+ szText = __tr2qs( \
+ "<p>" \
+ "Here you can choose how much KVIrc will integrate with " \
+ "your system." \
+ "<br><br>" \
+ "The default settings are fine for most users so if " \
+ "you're in doubt just click \"<b>Next</b>\" and go to the next screen." \
+ "</p>");
+
+ m_pDesktopIntegration->m_pTextLabel->setText(szText);
+
+ addPage(m_pDesktopIntegration,__tr2qs("Desktop Integration"));
+
+#ifdef COMPILE_ON_WINDOWS
+ m_pCreateUrlHandlers = new QCheckBox(__tr2qs("Make KVIrc default IRC client"),m_pDesktopIntegration->m_pVBox);
+ m_pCreateUrlHandlers->setChecked(true);
+#endif
+#ifdef COMPILE_KDE_SUPPORT
+ m_pCreateDesktopShortcut = new QCheckBox(__tr2qs("Create desktop shortcut"),m_pDesktopIntegration->m_pVBox);
+ m_pCreateDesktopShortcut->setChecked(true);
+#endif
+
+#ifdef COMPILE_ON_WINDOWS
+ m_pUseMircServerList = new QRadioButton(__tr2qs("Import server list from mIRC"),m_pDesktopIntegration->m_pVBox);
+ m_pUseMircServerList->setEnabled(false);
+#endif
+
+ setHelpEnabled(m_pDesktopIntegration,false);
+
+ /*
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // Server config
+ m_pServers = new KviSetupPage(this);
+
+ m_pServers->m_pTextLabel->setText(__tr2qs( \
+ "Now you should specify an IRC server, to be connected to it"));
+
+
+ m_pServersButtonGroup = new KviTalVButtonGroup(__tr2qs("Choose a server to connect"),m_pServers->m_pVBox);
+
+ m_pServersChooseFromList = new QRadioButton(__tr2qs("Choose from built-in server list"),m_pServersButtonGroup);
+
+ m_pServersSpecifyManually = new QRadioButton(__tr2qs("Specify server manually"),m_pServersButtonGroup);
+ hb = new KviTalHBox(m_pServersButtonGroup);
+
+ m_uServerPort=6667;
+ m_pServerHostSelector = new KviStringSelector(hb,__tr2qs("Server:"),&m_szServerHost,true);
+ m_pServerPortSelector = new KviUIntSelector(hb,__tr2qs("Port:"),&m_uServerPort,1,65536,6667,true,false);
+
+
+ m_pServersOpenIrcUrl = new QRadioButton(__tr2qs("Open irc:// or irc6:// URL"),m_pServersButtonGroup);
+ m_szServerUrl="irc://";
+ m_pServerUrlSelector = new KviStringSelector(m_pServersButtonGroup,__tr2qs("URL:"),&m_szServerUrl,true);
+
+ */
+/*
+ m_pServersLoadConfig = new QRadioButton(__tr2qs("Use server config"),m_pServersButtonGroup);
+ m_pServersLoadConfig->setEnabled(FALSE);
+ m_pServerConfigSelector = new KviFileSelector(m_pServersButtonGroup,__tr2qs("Config file:"),&m_szServerConfigFile,true);
+ m_pServerConfigSelector->setEnabled(FALSE);
+*/
+ /*
+ m_pServersChooseFromList->toggle();
+ addPage(m_pServers,__tr2qs("Choose a server to connect"));
+ */
+ setFinishEnabled(m_pDesktopIntegration,true);
+ setHelpEnabled(m_pDesktopIntegration,false);
+
+ // Preconfigured values
+#ifdef COMPILE_ON_WINDOWS
+ QString szTmp;
+ g_pApp->getGlobalKvircDirectory(szTmp,KviApp::Config,"preinstalled.kvc");
+ if(KviFileUtils::fileExists(szTmp))
+ {
+ KviConfig cfg(szTmp,KviConfig::Read);
+ cfg.setGroup("Setup");
+ if(cfg.readBoolEntry("hideServerList",FALSE))
+ {
+ //setPageEnabled(m_pServers,false);
+ //setFinishEnabled(m_pIdentity,true);
+ KVI_OPTION_BOOL(KviOption_boolShowChannelsJoinOnIrc) = false;
+ KVI_OPTION_BOOL(KviOption_boolShowServersConnectDialogOnStart) = false;
+ }
+ int iDir;
+ iDir=cfg.readIntEntry("settingsDir",-1);
+ if(iDir>0) {
+ switch(iDir)
+ {
+ case 1:
+ m_pDirUseNew->toggle();
+ setPageEnabled(m_pDirectory,false);
+ break;
+ case 2:
+ m_pDirMakePortable->toggle();
+ setPageEnabled(m_pDirectory,false);
+ break;
+ }
+ }
+ }
+
+ //mIRC import
+ #define QUERY_BUFFER 2048
+ char* buffer;
+ DWORD len = QUERY_BUFFER;
+ buffer = (char*)malloc(len*sizeof(char));
+ HKEY hKey;
+ QString szMircDir;
+
+ if(RegOpenKeyEx(HKEY_CLASSES_ROOT,"ChatFile\\DefaultIcon",0,KEY_READ,&hKey) == ERROR_SUCCESS )
+ {
+ if( RegQueryValueEx( hKey,0,0,0,(LPBYTE)buffer,&len) == ERROR_SUCCESS)
+ {
+ szMircDir = QString::fromLocal8Bit(buffer,len);
+
+ szMircDir.remove('"');
+ QString szMircFile = KviFileUtils::extractFileName(szMircDir);
+ szMircFile = szMircFile.left(szMircFile.length()-4); //cut off ".exe"
+ szMircDir = KviFileUtils::extractFilePath(szMircDir);
+
+ szMircIni = szMircDir + "/" + szMircFile + ".ini";
+
+ if(!KviFileUtils::fileExists(szMircIni))
+ szMircIni = szMircDir + "/mirc.ini";
+
+ if(!KviFileUtils::fileExists(szMircIni))
+ szMircIni = szMircDir + "/pirc.ini";
+
+ if(KviFileUtils::fileExists(szMircIni)){
+ KviConfig cfg(szMircIni,KviConfig::Read,true);
+ if(cfg.hasGroup("mirc"))
+ {
+ g_bFoundMirc = true;
+ cfg.setGroup("mirc");
+ m_pNickSelector->setText(cfg.readQStringEntry("nick",KVI_OPTION_STRING(KviOption_stringNickname1)));
+ m_pRealNameSelector->setText(cfg.readQStringEntry("user",KVI_OPTION_STRING(KviOption_stringRealname)));
+ KVI_OPTION_STRING(KviOption_stringNickname2) =
+ cfg.readQStringEntry("anick",KVI_OPTION_STRING(KviOption_stringNickname2));
+ KVI_OPTION_STRING(KviOption_stringUsername) =
+ cfg.readQStringEntry("email",KVI_OPTION_STRING(KviOption_stringUsername)).section('@',0,0);
+
+ if(cfg.hasGroup("files"))
+ {
+ m_szMircServerIniFile = cfg.readQStringEntry("servers","servers.ini");
+ m_szMircServerIniFile.prepend('/');
+ m_szMircServerIniFile.prepend(szMircDir);
+ if(KviFileUtils::fileExists(m_szMircServerIniFile))
+ {
+ m_pUseMircServerList->setEnabled(true);
+ m_pUseMircServerList->setChecked(true);
+ }
+ }
+ //KviMessageBox::information(__tr2qs("Setup found existing mIRC installation. It will try to import "
+ // "some of mIRC settings and serverlist. If you don't want to do it, unselect import in setup pages"));
+ }
+ }
+ }
+ }
+ free(buffer);
+
+#endif
+
+ //setMinimumSize(630,450);
+}
+
+
+KviSetupWizard::~KviSetupWizard()
+{
+ delete m_pLabelPixmap;
+}
+
+void KviSetupWizard::showEvent(QShowEvent *e)
+{
+ int w = QApplication::desktop()->width();
+ int h = QApplication::desktop()->height();
+
+ int ww = width();
+ int wh = height();
+
+ if(w < 800)
+ {
+ // 640x480
+ if(ww < 630)ww = 630;
+ } else {
+ if(ww < 770)ww = 770;
+ }
+
+ //wh = sizeHint().height();
+
+ setGeometry((w - ww) / 2,(h - wh) / 2,ww,wh);
+
+ KviTalWizard::showEvent(e);
+}
+
+void KviSetupWizard::oldDirClicked()
+{
+ m_pOldPathBox->setEnabled(true);
+ m_pNewPathBox->setEnabled(false);
+ m_pNewIncomingBox->setEnabled(false);
+
+ if(m_pIdentity) setPageEnabled(m_pIdentity,false);
+// if(m_pTheme) setPageEnabled(m_pTheme,false);
+ if(m_pServers) setPageEnabled(m_pServers,false);
+
+ if(m_pOldDataPathEdit->text().isEmpty()) setNextEnabled(m_pDirectory,false);
+ else setNextEnabled(m_pDirectory,true);
+}
+
+void KviSetupWizard::oldDataTextChanged ( const QString & str)
+{
+ setNextEnabled(m_pDirectory,!str.isEmpty());
+}
+
+void KviSetupWizard::newDataTextChanged ( const QString & str)
+{
+ setNextEnabled(m_pDirectory,!str.isEmpty() && !m_pIncomingPathEdit->text().isEmpty());
+}
+
+void KviSetupWizard::newIncomingTextChanged ( const QString & str)
+{
+ setNextEnabled(m_pDirectory,!str.isEmpty() && !m_pDataPathEdit->text().isEmpty());
+}
+
+void KviSetupWizard::newDirClicked()
+{
+ m_pOldPathBox->setEnabled(false);
+ m_pNewPathBox->setEnabled(true);
+ m_pNewIncomingBox->setEnabled(true);
+
+ if(m_pIdentity) setPageEnabled(m_pIdentity,true);
+// if(m_pTheme) setPageEnabled(m_pTheme,true);
+ if(m_pServers) setPageEnabled(m_pServers,true);
+
+ if(m_pDataPathEdit->text().isEmpty() || m_pIncomingPathEdit->text().isEmpty()) setNextEnabled(m_pDirectory,false);
+ else setNextEnabled(m_pDirectory,true);
+}
+void KviSetupWizard::chooseOldDataPath()
+{
+ QString szBuffer = KviTalFileDialog::getExistingDirectoryPath(m_pDataPathEdit->text(),__tr2qs("Choose an Old Configuration Folder - KVIrc Setup"),0);
+ if(!szBuffer.isEmpty())
+ {
+ KviQString::ensureLastCharIs(szBuffer,KVI_PATH_SEPARATOR_CHAR);
+ if(!g_pApp->checkLocalKvircDirectory(szBuffer))
+ {
+ if(
+ QMessageBox::question(
+ this,
+ __tr2qs("Do not overwrite folder? - KVIrc"),
+ tr("A folder %1 seems to be not a valid KVIrc settings folder."
+ "Do you want to use it anyway?")
+ .arg( szBuffer ),
+ __tr2qs("&Yes"), __tr2qs("&No"),
+ QString::null, 0, 1 ) == 0
+ ) {
+ m_pOldDataPathEdit->setText(szBuffer);
+ }
+ } else {
+ m_pOldDataPathEdit->setText(szBuffer);
+ }
+ }
+}
+
+void KviSetupWizard::chooseDataPath()
+{
+ QString szBuffer = KviTalFileDialog::getExistingDirectoryPath(m_pDataPathEdit->text(),__tr2qs("Choose a Configuration Folder - KVIrc Setup"),0);
+ if(!szBuffer.isEmpty())
+ {
+ KviQString::ensureLastCharIs(szBuffer,KVI_PATH_SEPARATOR_CHAR);
+ m_pDataPathEdit->setText(szBuffer);
+ }
+}
+
+void KviSetupWizard::chooseIncomingPath()
+{
+ //QString szBuffer = QFileDialog::getExistingDirectory(m_pIncomingPathEdit->text(),0,0,__tr2qs("Choose the download folder"));
+ QString szBuffer = KviTalFileDialog::getExistingDirectoryPath(m_pIncomingPathEdit->text(),__tr2qs("Choose a Download Folder - KVIrc Setup"),0);
+ if(!szBuffer.isEmpty())
+ {
+ m_pIncomingPathEdit->setText(szBuffer);
+ }
+}
+
+
+void KviSetupWizard::makeLink()
+{
+#ifdef COMPILE_ON_WINDOWS
+ // Let's make a link on the desktop :)
+ // You need this horrible snippet of code to create a shortcut!!!!
+ //
+ // you have to:
+ // - dig in the registry ,
+ // - trigger the entire COM subsystem
+ // - bring up a couple of OLE interfaces....
+ // - use some obscure functions like MultiByteToWideChar
+ // - and the finally drop the entire OLE+COM interface in the garbadge
+ // ...
+ // Isn't this horrible ? (compared to symlink()!)
+ //
+
+ // Well..let's go (please note that we don't handle most possible errors!
+ // otherwise there would be 150 lines for a stupid symlink!)
+
+ HKEY hCU;
+ DWORD lpType;
+ ULONG ulSize = MAX_PATH;
+ char szLink[MAX_PATH];
+
+ // Dig in the registry looking up the Desktop path
+ if(RegOpenKeyEx(HKEY_CURRENT_USER,
+ "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders",
+ 0,KEY_QUERY_VALUE,&hCU) == ERROR_SUCCESS)
+ {
+ RegQueryValueEx(hCU,"Desktop",NULL,&lpType,
+ (unsigned char *)&szLink,&ulSize);
+ RegCloseKey(hCU);
+ }
+
+ // Build our paths
+ QString szLinkTarget = szLink;
+ szLinkTarget.append("\\kvirc.lnk");
+
+ QString szKvircExec = g_pApp->m_szGlobalKvircDir;
+ szKvircExec.append("\\kvirc.exe");
+
+ // Trigger a horrible machinery
+ CoInitialize(NULL); // we need COM+OLE
+
+ // Fiddle with an obscure shell interface
+ IShellLink* psl;
+
+ // Get a pointer to the IShellLink interface: this is kinda ugly :)
+ if(CoCreateInstance(CLSID_ShellLink,NULL,CLSCTX_INPROC_SERVER,
+ IID_IShellLink,(void **)&psl) == S_OK)
+ {
+ // just for fun , lookup another shell interface
+
+ IPersistFile* ppf;
+
+ // Query IShellLink for the IPersistFile interface for
+ // saving the shell link in persistent storage.
+ if(psl->QueryInterface(IID_IPersistFile,(void **)&ppf) == S_OK)
+ {
+ WORD wsz[MAX_PATH];
+ // Set the path to the shell link target.
+ psl->SetPath(QTextCodec::codecForLocale()->fromUnicode(szKvircExec).data());
+ // Set the description of the shell link.
+ psl->SetDescription("kvirc");
+ // Ensure string is ANSI.
+ MultiByteToWideChar(CP_ACP,0,QTextCodec::codecForLocale()->fromUnicode(szLinkTarget).data(),-1,(LPWSTR)wsz,MAX_PATH);
+ // Save the link via the IPersistFile::Save method.
+ ppf->Save((LPCOLESTR)wsz,true);
+ ppf->Release();
+ }
+ psl->Release();
+ }
+ // And throw OLE & Co. in the garbadge
+ CoUninitialize();
+#endif //COMPILE_ON_WINDOWS
+
+#ifdef COMPILE_KDE_SUPPORT
+ QString tmp = QDir::homeDirPath();
+ KviQString::ensureLastCharIs(tmp,KVI_PATH_SEPARATOR_CHAR);
+ tmp.append("Desktop");
+ KviQString::ensureLastCharIs(tmp,KVI_PATH_SEPARATOR_CHAR);
+ tmp.append("kvirc.desktop");
+
+ QString contents = "[Desktop Entry]\n" \
+ "GenericName=IRC Client\n" \
+ "Comment=Connect to Internet Relay Chat\n" \
+ "Exec=kvirc -m %u\n" \
+ "Icon=kvirc\n" \
+ "MapNotify=true\n" \
+ "Name=KVIrc 3\n" \
+ "Terminal=false\n" \
+ "Type=Application\n" \
+ "X-KDE-SubstituteUID=false\n";
+
+ KviFileUtils::writeFile(tmp,contents,false);
+#endif //COMPILE_KDE_SUPPORT
+
+}
+
+void KviSetupWizard::setUrlHandlers()
+{
+#ifdef COMPILE_ON_WINDOWS
+ QString szReg = "REGEDIT4\r\n" \
+ "\r\n" \
+ "[HKEY_CLASSES_ROOT\\irc]\r\n" \
+ "@=\"URL:IRC Protocol\"\r\n" \
+ "\"IRC Protocol\"=\"http://www.kvirc.net/\"\r\n" \
+ "\"EditFlags\"=hex:02,00,00,00\r\n" \
+ "\"URL Protocol\"=""\r\n" \
+ "\r\n" \
+ "[HKEY_CLASSES_ROOT\\irc\\DefaultIcon]\r\n" \
+ "@=\"\\\"@KVIRCEXECUTABLE@\\\"\"\r\n" \
+ "\r\n" \
+ "[HKEY_CLASSES_ROOT\\irc\\shell]\r\n" \
+ "@=\"\"\r\n" \
+ "\r\n" \
+ "[HKEY_CLASSES_ROOT\\irc\\shell\\open]\r\n" \
+ "\"EditFlags\"=hex:01,00,00,00\r\n" \
+ "\r\n" \
+ "[HKEY_CLASSES_ROOT\\irc\\shell\\open\\command]\r\n" \
+ "@=\"\\\"@KVIRCEXECUTABLE@\\\" %1\"\r\n" \
+ "\r\n" \
+ "[HKEY_CLASSES_ROOT\\irc6]\r\n" \
+ "@=\"URL:IRC6 Protocol\"\r\n" \
+ "\"IRC6 Protocol\"=\"http://www.kvirc.net/\"\r\n" \
+ "\"EditFlags\"=hex:02,00,00,00\r\n" \
+ "\"URL Protocol\"=""\r\n" \
+ "\r\n" \
+ "[HKEY_CLASSES_ROOT\\irc6\\DefaultIcon]\r\n" \
+ "@=\"\\\"@KVIRCEXECUTABLE@\\\"\"\r\n" \
+ "\r\n" \
+ "[HKEY_CLASSES_ROOT\\irc6\\shell]\r\n" \
+ "@=\"\"\r\n" \
+ "\r\n" \
+ "[HKEY_CLASSES_ROOT\\irc6\\shell\\open]\r\n" \
+ "\"EditFlags\"=hex:01,00,00,00\r\n" \
+ "\r\n" \
+ "[HKEY_CLASSES_ROOT\\irc6\\shell\\open\\command]\r\n" \
+ "@=\"\\\"@KVIRCEXECUTABLE@\\\" %1\"\r\n";
+
+ QString szKvircExec = g_pApp->m_szGlobalKvircDir;
+ szKvircExec.append("\\kvirc.exe");
+ szKvircExec.replace("\\","\\\\");
+
+ szReg.replace("@KVIRCEXECUTABLE@",QTextCodec::codecForLocale()->fromUnicode(szKvircExec));
+
+ QString szRegFile = g_pApp->m_szGlobalKvircDir;
+ szRegFile.append("\\kvirc.reg");
+
+ KviFileUtils::writeFile(szRegFile,szReg,false);
+
+ QString szCmd = "regedit /S \"";
+ szCmd += szRegFile;
+ szCmd += "\"";
+
+ WinExec(QTextCodec::codecForLocale()->fromUnicode(szCmd).data(),SW_SHOW);
+#endif
+}
+
+void KviSetupWizard::reject()
+{
+ if(QMessageBox::warning(this,__tr2qs("Abort Setup - KVIrc Setup"),
+ __tr2qs("You have chosen to abort the setup.<br>KVIrc cannot run until you complete this procedure.<br><br>Do you really wish to abort?"),
+ QMessageBox::Yes,QMessageBox::No|QMessageBox::Default|QMessageBox::Escape) != QMessageBox::Yes)return;
+
+ KviTalWizard::reject();
+}
+
+void KviSetupWizard::accept()
+{
+ QString szDir;
+
+ if(m_pDirUsePrev->isOn())
+ {
+ bNeedToApplyDefaults=false;
+ g_pApp->m_szLocalKvircDir = m_pOldDataPathEdit->text();
+ } else {
+ bNeedToApplyDefaults=true;
+ if(m_pDirUseNew->isOn()) {
+ szDir = m_pDataPathEdit->text();
+ }
+#ifdef COMPILE_ON_WINDOWS
+ else { //portable
+ szDir = g_pApp->applicationDirPath()+KVI_PATH_SEPARATOR_CHAR+"Settings";
+ }
+#endif
+
+ KviFileUtils::adjustFilePath(szDir);
+ KviQString::ensureLastCharIs(szDir,KVI_PATH_SEPARATOR_CHAR);
+ if(!KviFileUtils::directoryExists(szDir))
+ {
+ if(!KviFileUtils::makeDir(szDir))
+ {
+ KviMessageBox::warning(__tr("Cannot create directory %s.\n" \
+ "You may not have write permission " \
+ "for that path. Please go back and choose another directory."));
+ setCurrentPage(m_pDirectory);
+ return;
+ }
+ } /*else {
+ kvi_infoBox(__tr("Kvirc setup"),
+ __tr("The directory '%s' already exists.\n" \
+ "(maybe from a previous Kvirc installation)\n"\
+ "If you experience any problems try deleting the old directory:\n" \
+ "the setup program will be started automatically again."),szDir.ptr());
+ }*/
+
+ g_pApp->m_szLocalKvircDir = szDir;
+ KviFileUtils::adjustFilePath(g_pApp->m_szLocalKvircDir);
+
+ if(m_pDirUseNew->isOn()) {
+ szDir = m_pIncomingPathEdit->text();
+ }
+#ifdef COMPILE_ON_WINDOWS
+ else { //portable
+ szDir = g_pApp->applicationDirPath()+KVI_PATH_SEPARATOR_CHAR+"Downloads";
+ }
+#endif
+
+ KviFileUtils::adjustFilePath(szDir);
+ if(!KviFileUtils::directoryExists(szDir))
+ {
+ if(!KviFileUtils::makeDir(szDir))
+ {
+ KviMessageBox::warning(__tr("Cannot create directory %s.\n" \
+ "You may not have write permission " \
+ "for that path. Please go back and choose another directory."));
+ setCurrentPage(m_pDirectory);
+ return;
+ }
+ }
+
+ g_szChoosenIncomingDirectory = szDir;
+
+#ifndef COMPILE_ON_WINDOWS
+ // Make local->global link
+ QString localPath = QString("%1/global").arg(g_pApp->m_szLocalKvircDir);
+ unlink(QTextCodec::codecForLocale()->fromUnicode(localPath).data());
+ symlink(QTextCodec::codecForLocale()->fromUnicode(g_pApp->m_szGlobalKvircDir).data(),QTextCodec::codecForLocale()->fromUnicode(localPath).data());
+#endif
+
+#ifdef COMPILE_KDE_SUPPORT
+ if(m_pCreateDesktopShortcut->isChecked())
+ makeLink();
+#endif
+
+#ifdef COMPILE_ON_WINDOWS
+ if(m_pCreateUrlHandlers->isChecked())
+ setUrlHandlers();
+#endif
+
+/* if(m_pTheme)
+ {
+ if(m_pThemeButtonGroup->selected() == m_pThemeHiRes)
+ {
+ g_iThemeToApply = THEME_APPLY_HIRES;
+ } else if(m_pThemeButtonGroup->selected() == m_pThemeLoRes)
+ {
+ g_iThemeToApply = THEME_APPLY_LORES;
+ } else {
+ g_iThemeToApply = THEME_APPLY_NONE;
+ }
+ }
+*/
+ if(m_pIdentity)
+ {
+ m_pNickSelector->commit();
+ m_pRealNameSelector->commit();
+ m_pLocationSelector->commit();
+ m_pLanguagesSelector->commit();
+ //m_pOtherInfoSelector->commit();
+
+ KVI_OPTION_STRING(KviOption_stringNickname1).stripWhiteSpace();
+ KVI_OPTION_STRING(KviOption_stringNickname1).replace(" ","");
+
+ if(KVI_OPTION_STRING(KviOption_stringNickname1).length() > 32)
+ {
+ QString tmp = KVI_OPTION_STRING(KviOption_stringNickname1).left(32);
+ KVI_OPTION_STRING(KviOption_stringNickname1) = tmp;
+ }
+
+ if(KVI_OPTION_STRING(KviOption_stringNickname1).isEmpty())KVI_OPTION_STRING(KviOption_stringNickname1) = "newbie";
+
+ QString szNickPart;
+ if(KVI_OPTION_STRING(KviOption_stringNickname1).length() < 31)
+ {
+ szNickPart = KVI_OPTION_STRING(KviOption_stringNickname1);
+ } else {
+ szNickPart = KVI_OPTION_STRING(KviOption_stringNickname1).left(30);
+ }
+
+ QString alt = szNickPart;
+ alt.prepend("|"); // <-- this is an erroneous nickname on IrcNet :/
+ alt.append("|");
+ if(!g_bFoundMirc)
+ KVI_OPTION_STRING(KviOption_stringNickname2) = alt;
+ alt = szNickPart;
+ alt.prepend("_");
+ alt.append("_");
+ KVI_OPTION_STRING(KviOption_stringNickname3) = alt;
+ alt = szNickPart;
+ alt.append("2");
+ KVI_OPTION_STRING(KviOption_stringNickname4) = alt;
+
+ int i = m_pAgeCombo->currentItem();
+ if(i < 0)i = 0;
+ if(i > 120)i = 120;
+ if(i <= 0)KVI_OPTION_STRING(KviOption_stringCtcpUserInfoAge) = "";
+ else KVI_OPTION_STRING(KviOption_stringCtcpUserInfoAge).setNum(i);
+
+ switch(m_pGenderCombo->currentItem())
+ {
+ case 1:
+ // this should be in english
+ KVI_OPTION_STRING(KviOption_stringCtcpUserInfoGender) = "Female";
+ break;
+ case 2:
+ // this should be in english
+ KVI_OPTION_STRING(KviOption_stringCtcpUserInfoGender) = "Male";
+ break;
+ default:
+ KVI_OPTION_STRING(KviOption_stringCtcpUserInfoGender) = "";
+ break;
+ }
+ /*
+ m_pServerHostSelector->commit();
+ m_pServerUrlSelector->commit();
+ //m_pServerConfigSelector->commit();
+ m_pServerPortSelector->commit();
+
+ if(m_pServersSpecifyManually->isOn())
+ {
+ KVI_OPTION_BOOL(KviOption_boolShowServersConnectDialogOnStart) = FALSE;
+ szHost = m_szServerHost;
+ uPort=m_uServerPort;
+ } else if(m_pServersOpenIrcUrl->isOn())
+ {
+ KVI_OPTION_BOOL(KviOption_boolShowServersConnectDialogOnStart) = FALSE;
+ szUrl=m_szServerUrl;
+ }
+ */
+#ifdef COMPILE_ON_WINDOWS
+ if(m_pUseMircServerList->isEnabled() && m_pUseMircServerList->isOn())
+ szMircServers = m_szMircServerIniFile;
+#endif
+ }
+ }
+#ifdef COMPILE_ON_WINDOWS
+ if(m_pDirMakePortable->isOn())
+ {
+ KviFileUtils::writeFile(g_pApp->applicationDirPath()+KVI_PATH_SEPARATOR_CHAR+"portable","true");
+ } else {
+#endif
+ g_pApp->saveKvircDirectory();
+#ifdef COMPILE_ON_WINDOWS
+ }
+#endif
+ KviTalWizard::accept();
+}
+
+#include "setupwizard.moc"
diff --git a/src/modules/setup/setupwizard.h b/src/modules/setup/setupwizard.h
new file mode 100644
index 00000000..2492007a
--- /dev/null
+++ b/src/modules/setup/setupwizard.h
@@ -0,0 +1,164 @@
+#ifndef _SETUPWIZARD_H_
+#define _SETUPWIZARD_H_
+//=============================================================================
+//
+// File : setupwizard.h
+// Creation date : Sat Oct 6 02:06:51 2001 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include <kvi_tal_wizard.h>
+#include "kvi_tal_vbox.h"
+#include "kvi_tal_hbox.h"
+#include "kvi_tal_groupbox.h"
+#include <qlabel.h>
+#include <qpixmap.h>
+#include <qlineedit.h>
+#ifdef COMPILE_USE_QT4
+#include <q3buttongroup.h>
+#define KviTalVButtonGroup Q3VButtonGroup
+#else
+ #include <qvbuttongroup.h>
+#define KviTalVButtonGroup QVButtonGroup
+#endif
+#include <qradiobutton.h>
+#include <qcombobox.h>
+#include <qcheckbox.h>
+
+#include "kvi_settings.h"
+#include "kvi_string.h"
+#include "kvi_selectors.h"
+
+class KviSetupWizard;
+
+class KviSetupPage : public QWidget
+{
+ Q_OBJECT
+public:
+ KviSetupPage(KviSetupWizard * w);
+ ~KviSetupPage();
+public:
+ KviTalVBox * m_pVBox;
+ QLabel * m_pPixmapLabel;
+ QLabel * m_pTextLabel;
+
+};
+
+
+#define THEME_APPLY_NONE 0
+#define THEME_APPLY_HIRES 1
+#define THEME_APPLY_LORES 2
+
+class KviSetupWizard : public KviTalWizard
+{
+ Q_OBJECT
+public:
+ KviSetupWizard();
+ ~KviSetupWizard();
+public:
+ QPixmap * m_pLabelPixmap;
+
+ KviSetupPage * m_pWelcome;
+ KviSetupPage * m_pLicense;
+ KviSetupPage * m_pDirectory;
+ KviSetupPage * m_pIdentity;
+// KviSetupPage * m_pTheme;
+ KviSetupPage * m_pDesktopIntegration;
+ KviSetupPage * m_pServers;
+
+ // Theme
+ KviTalVButtonGroup * m_pThemeButtonGroup;
+
+ QRadioButton * m_pThemeHiRes;
+ QRadioButton * m_pThemeLoRes;
+ QRadioButton * m_pThemeNone;
+
+ // Welcome
+ QCheckBox * m_pCreateUrlHandlers;
+ QCheckBox * m_pCreateDesktopShortcut;
+
+ //Dir
+ QLineEdit * m_pDataPathEdit;
+ QLineEdit * m_pIncomingPathEdit;
+ KviTalVButtonGroup * m_pDirButtonGroup;
+ QRadioButton * m_pDirUsePrev;
+ QRadioButton * m_pDirUseNew;
+#ifdef COMPILE_ON_WINDOWS
+ QRadioButton * m_pDirMakePortable;
+#endif
+ //QRadioButton * m_pDirRestore;
+ QLineEdit * m_pOldDataPathEdit;
+ KviTalHBox * m_pOldPathBox;
+ KviTalHBox * m_pNewPathBox;
+ KviTalHBox * m_pNewIncomingBox;
+
+ //Identify
+ QComboBox * m_pAgeCombo;
+ QComboBox * m_pGenderCombo;
+
+ KviStringSelector * m_pNickSelector;
+ KviStringSelector * m_pRealNameSelector;
+ KviStringSelector * m_pLocationSelector;
+ KviStringSelector * m_pLanguagesSelector;
+ //KviStringSelector * m_pOtherInfoSelector;
+
+ //Servers
+ //KviTalVButtonGroup * m_pServersButtonGroup;
+ //QRadioButton * m_pServersChooseFromList;
+ //QRadioButton * m_pServersSpecifyManually;
+ //QRadioButton * m_pServersOpenIrcUrl;
+ //QRadioButton * m_pServersLoadConfig;
+#ifdef COMPILE_ON_WINDOWS
+ QString m_szMircServerIniFile;
+ QRadioButton * m_pUseMircServerList;
+#endif
+
+ QString m_szServerConfigFile;
+ QString m_szServerUrl;
+ QString m_szServerHost;
+ unsigned int m_uServerPort;
+
+ KviStringSelector * m_pServerHostSelector;
+ KviStringSelector * m_pServerUrlSelector;
+ //KviFileSelector * m_pServerConfigSelector;
+ KviUIntSelector *m_pServerPortSelector;
+
+protected:
+ void makeLink();
+ void setUrlHandlers();
+ virtual void showEvent(QShowEvent *e);
+public slots:
+ void chooseOldDataPath();
+ void chooseDataPath();
+ void chooseIncomingPath();
+ virtual void accept();
+ virtual void reject();
+
+ void oldDirClicked();
+ void newDirClicked();
+
+ void oldDataTextChanged ( const QString & );
+ void newDataTextChanged ( const QString & );
+ void newIncomingTextChanged ( const QString & );
+};
+
+
+#endif //_SETUPWIZARD_H_
diff --git a/src/modules/sharedfile/Makefile.am b/src/modules/sharedfile/Makefile.am
new file mode 100644
index 00000000..5c4ace3b
--- /dev/null
+++ b/src/modules/sharedfile/Makefile.am
@@ -0,0 +1,18 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvisharedfile.la
+
+libkvisharedfile_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvisharedfile_la_SOURCES = libkvisharedfile.cpp
+libkvisharedfile_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+#noinst_HEADERS= sharedfilewindow.h
+
+m_%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/sharedfile/libkvisharedfile.cpp b/src/modules/sharedfile/libkvisharedfile.cpp
new file mode 100644
index 00000000..93959f77
--- /dev/null
+++ b/src/modules/sharedfile/libkvisharedfile.cpp
@@ -0,0 +1,281 @@
+//=============================================================================
+//
+// File : libkvisharedfile.cpp (orig : libkvioffer.cpp)
+// Creation date : Wed Sep 27 2000 20:59:02 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_module.h"
+
+#include "kvi_sharedfiles.h"
+#include "kvi_ircmask.h"
+#include "kvi_fileutils.h"
+#include "kvi_locale.h"
+
+#include "kvi_out.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_window.h"
+#include "kvi_frame.h"
+
+
+#include <time.h>
+#include "kvi_pointerhashtable.h"
+
+extern KVIRC_API KviSharedFilesManager * g_pSharedFilesManager;
+
+
+/*
+ @doc: sharedfile.add
+ @type:
+ command
+ @title:
+ sharedfile.add
+ @keyterms:
+ trading files by dcc
+ @short:
+ Adds a file sharedfile
+ @syntax:
+ sharedfile.add [-t=<timeout:integer>] [-n=<visible name>] <filename> [user_mask]
+ @switches:
+ !sw: -t=<timeout> | --timeout=<timeout>
+ Specified the timeout after that the share will be automatically removed
+ !sw: -n=<visible name> | --name=<visible name>
+ Explicitly specifies the visible name of the share
+ @description:
+ Adds <filename> to the list of the active shared files.
+ The users will be able to request the file via [cmd]dcc.get[/cmd].
+ If [user_mask] is specified , the access to the file is limited
+ to the users that match this mask, otherwise the mask will
+ be automatically set to '*!*@*'.[br]
+ If the 't' switch is used, the sharedfile will be removed after
+ <timeout> seconds. If the 'n' switch is used, the sharedfile
+ will be visible to the oter users as <visible name> instead
+ of the real <filename> (stripped of the leading path).
+ <filename> must be an absolute path.
+ @seealso:
+ [cmd]sharedfile.remove[/cmd], [cmd]sharedfile.list[/cmd],
+ [cmd]dcc.get[/cmd]
+*/
+
+static bool sharedfile_kvs_cmd_add(KviKvsModuleCommandCall * c)
+{
+ QString szFileName,szUserMask;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("filename",KVS_PT_NONEMPTYSTRING,0,szFileName)
+ KVSM_PARAMETER("user_mask",KVS_PT_NONEMPTYSTRING,KVS_PF_OPTIONAL,szUserMask)
+ KVSM_PARAMETERS_END(c)
+
+ if(!KviFileUtils::isReadable(szFileName))
+ {
+ c->warning(__tr2qs_ctx("The file '%Q' is not readable","sharedfile"),&szFileName);
+ return true;
+ }
+
+ if(szUserMask.isEmpty())szUserMask="*!*@*";
+ KviIrcMask u(szUserMask);
+
+ QString szm;
+ u.mask(szm);
+
+ kvs_int_t timeout = 0;
+
+ if(KviKvsVariant * v = c->switches()->find('t',"timeout"))
+ {
+ if(!v->asInteger(timeout))
+ {
+ c->warning(__tr2qs_ctx("Invalid timeout, ignoring","sharedfile"));
+ timeout = 0;
+ }
+ }
+
+ QString szVisibleName = szFileName;
+ KviQString::cutToLast(szVisibleName,'/');
+
+ if(KviKvsVariant * n = c->switches()->find('n',"name"))
+ {
+ QString tmp;
+ n->asString(tmp);
+ if(tmp.isEmpty())
+ {
+ c->warning(__tr2qs_ctx("Invalid visible name: using default","sharedfile"));
+ } else szVisibleName = tmp;
+ }
+
+ if(!g_pSharedFilesManager->addSharedFile(szVisibleName,szFileName,szUserMask,timeout))
+ {
+ c->warning(__tr2qs_ctx("Ops..failed to add the sharedfile...","sharedfile"));
+ }
+
+ return true;
+}
+
+
+/*
+ @doc: sharedfile.remove
+ @type:
+ command
+ @title:
+ sharedfile.remove
+ @keyterms:
+ trading files by dcc
+ @short:
+ Removes a shared file
+ @syntax:
+ sharedfile.remove <visible name:string> <user mask:string> [filesize:integer]
+ @description:
+ Removes the shared file that matches <visible name> and <user mask>.
+ If [filesize] is specified, then it must be matched by the entry
+ to be removed.
+ @seealso:
+ [cmd]sharedfile.add[/cmd], [cmd]sharedfile.list[/cmd], [cmd]sharedfile.clear[/cmd]
+*/
+
+static bool sharedfile_kvs_cmd_remove(KviKvsModuleCommandCall * c)
+{
+ QString szVisibleName,szUserMask;
+ kvs_uint_t uSize;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("visible_name",KVS_PT_NONEMPTYSTRING,0,szVisibleName)
+ KVSM_PARAMETER("user_mask",KVS_PT_NONEMPTYSTRING,0,szUserMask)
+ KVSM_PARAMETER("filesize",KVS_PT_UINT,KVS_PF_OPTIONAL,uSize)
+ KVSM_PARAMETERS_END(c)
+
+ if(!g_pSharedFilesManager->removeSharedFile(szVisibleName,szUserMask,uSize))
+ c->warning(__tr2qs_ctx("No sharedfile with visible name '%Q' and user mask '%Q'","sharedfile"),&szVisibleName,&szUserMask);
+
+ return true;
+}
+
+
+
+/*
+ @doc: sharedfile.clear
+ @type:
+ command
+ @title:
+ sharedfile.clear
+ @keyterms:
+ trading files by dcc, shared files
+ @short:
+ Clears the shared files list
+ @syntax:
+ sharedfile.clear
+ @description:
+ Clears the shared files list
+ @seealso:
+ [cmd]sharedfile.add[/cmd], [cmd]sharedfile.list[/cmd], [cmd]sharedfile.remove[/cmd]
+*/
+
+static bool sharedfile_kvs_cmd_clear(KviKvsModuleCommandCall * c)
+{
+ g_pSharedFilesManager->clear();
+ return true;
+}
+
+
+/*
+ @doc: sharedfile.list
+ @type:
+ command
+ @title:
+ sharedfile.list
+ @keyterms:
+ trading files by dcc
+ @short:
+ Lists the active file sharedfile
+ @syntax:
+ sharedfile.list
+ @description:
+ Lists the active file sharedfile.
+ @seealso:
+ [cmd]sharedfile.add[/cmd], [cmd]sharedfile.remove[/cmd]
+*/
+
+static bool sharedfile_kvs_cmd_list(KviKvsModuleCommandCall * c)
+{
+ KviPointerHashTableIterator<QString,KviSharedFileList> it(*(g_pSharedFilesManager->sharedFileListDict()));
+
+ int idx = 0;
+
+ while(KviSharedFileList * l = it.current())
+ {
+ for(KviSharedFile * o = l->first();o;o = l->next())
+ {
+ c->window()->output(KVI_OUT_NONE,"%c%d. %s",
+ KVI_TEXT_BOLD,idx + 1,it.currentKey().utf8().data());
+ c->window()->output(KVI_OUT_NONE,__tr2qs_ctx(" File: %s (%u bytes)","sharedfile"),
+ o->absFilePath().utf8().data(),o->fileSize());
+ c->window()->output(KVI_OUT_NONE,__tr2qs_ctx(" Mask: %s","sharedfile"),
+ o->userMask().utf8().data());
+ if(o->expireTime() > 0)
+ {
+ int secs = ((int)(o->expireTime())) - ((int)(time(0)));
+ int hour = secs / 3600;
+ secs = secs % 3600;
+ int mins = secs / 60;
+ secs = secs % 60;
+ c->window()->output(KVI_OUT_NONE,__tr2qs_ctx(" Expires in %d hours %d minutes %d seconds","sharedfile"),
+ hour,mins,secs);
+ }
+ ++idx;
+ }
+ ++it;
+ }
+
+//#warning "FIND A BETTER KVI_OUT_*"
+
+ if(idx == 0)c->window()->outputNoFmt(KVI_OUT_NONE,__tr2qs_ctx("No active file sharedfile","sharedfile"));
+ else c->window()->output(KVI_OUT_NONE,__tr2qs_ctx("Total: %d sharedfile","sharedfile"),idx);
+
+ return true;
+}
+
+
+static bool sharedfile_module_init(KviModule * m)
+{
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"add",sharedfile_kvs_cmd_add);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"remove",sharedfile_kvs_cmd_remove);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"list",sharedfile_kvs_cmd_list);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"clear",sharedfile_kvs_cmd_clear);
+
+ return true;
+}
+
+static bool sharedfile_module_can_unload(KviModule *m)
+{
+ return true;
+}
+
+static bool sharedfile_module_cleanup(KviModule *m)
+{
+ return true;
+}
+
+KVIRC_MODULE(
+ "Offer", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2000-2003 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "User interface to the file sharing system",
+ sharedfile_module_init,
+ sharedfile_module_can_unload,
+ 0,
+ sharedfile_module_cleanup
+)
diff --git a/src/modules/sharedfileswindow/Makefile.am b/src/modules/sharedfileswindow/Makefile.am
new file mode 100644
index 00000000..f43e1e67
--- /dev/null
+++ b/src/modules/sharedfileswindow/Makefile.am
@@ -0,0 +1,22 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+SUBDIRS = caps
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvisharedfileswindow.la
+
+libkvisharedfileswindow_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvisharedfileswindow_la_SOURCES = libkvisharedfileswindow.cpp sharedfileswindow.cpp
+libkvisharedfileswindow_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= sharedfileswindow.h
+
+m_%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+sharedfileswindow.cpp: m_sharedfileswindow.moc
diff --git a/src/modules/sharedfileswindow/caps/Makefile.am b/src/modules/sharedfileswindow/caps/Makefile.am
new file mode 100644
index 00000000..bc03ac24
--- /dev/null
+++ b/src/modules/sharedfileswindow/caps/Makefile.am
@@ -0,0 +1,9 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+tmpdir = $(pluglibdir)/caps/tool/
+
+tmp_DATA= sharedfileswindow
+
+EXTRA_DIST = $(tmp_DATA)
diff --git a/src/modules/sharedfileswindow/caps/sharedfileswindow b/src/modules/sharedfileswindow/caps/sharedfileswindow
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src/modules/sharedfileswindow/caps/sharedfileswindow
diff --git a/src/modules/sharedfileswindow/libkvisharedfileswindow.cpp b/src/modules/sharedfileswindow/libkvisharedfileswindow.cpp
new file mode 100644
index 00000000..a7cab111
--- /dev/null
+++ b/src/modules/sharedfileswindow/libkvisharedfileswindow.cpp
@@ -0,0 +1,158 @@
+//==================================================================================
+//
+// File : libkvisharedfileswindow.cpp
+// Creation date : Mon Apr 21 2003 23:14:12 CEST by Szymon Stefanek
+//
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//==================================================================================
+
+#include "kvi_module.h"
+
+
+#include "sharedfileswindow.h"
+
+#include "kvi_app.h"
+#include "kvi_frame.h"
+#include "kvi_window.h"
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+
+#include <qsplitter.h>
+
+#define KVI_SHARED_FILES_WINDOW_EXTENSION_NAME "Shared files window extension"
+
+KviSharedFilesWindow * g_pSharedFilesWindow = 0;
+
+static KviModuleExtension * sharedfileswindow_extension_alloc(KviModuleExtensionAllocStruct * s)
+{
+ bool bCreateMinimized = false;
+ bool bNoRaise = false;
+
+ if(!g_pSharedFilesWindow)
+ {
+ if(s->pParams)
+ {
+ if(QVariant * v = s->pParams->find("bCreateMinimized"))
+ {
+ if(v->isValid())
+ {
+ if(v->type() == QVariant::Bool)
+ {
+ bCreateMinimized = v->toBool();
+ }
+ }
+ }
+ }
+
+ g_pSharedFilesWindow = new KviSharedFilesWindow(s->pDescriptor,g_pFrame);
+ g_pFrame->addWindow(g_pSharedFilesWindow,!bCreateMinimized);
+ if(bCreateMinimized)g_pSharedFilesWindow->minimize();
+ return g_pSharedFilesWindow;
+ }
+
+ if(s->pParams)
+ {
+ if(QVariant * v = s->pParams->find("bNoRaise"))
+ {
+ if(v)
+ {
+ if(v->isValid() && v->type() == QVariant::Bool)
+ bNoRaise = v->toBool();
+ }
+ }
+ }
+
+ if(!bNoRaise)g_pSharedFilesWindow->delayedAutoRaise();
+ return g_pSharedFilesWindow;
+}
+
+
+/*
+ @doc: sharedfileswindow.open
+ @type:
+ command
+ @title:
+ sharedfileswindow.open
+ @short:
+ Opens the shared files window
+ @syntax:
+ sharedfileswindow.open [-m] [-n]
+ @switches:
+ !sw: -m
+ Causes the window to be created as minimized
+ !sw: -n
+ Causes the window to be not raised if already open
+ @description:
+ Opens the shared files window
+*/
+
+static bool sharedfileswindow_kvs_cmd_open(KviKvsModuleCommandCall * c)
+{
+ KviModuleExtensionDescriptor * d = c->module()->findExtensionDescriptor("tool",KVI_SHARED_FILES_WINDOW_EXTENSION_NAME);
+ if(d)
+ {
+ KviPointerHashTable<QString,QVariant> dict(17,true);
+ dict.setAutoDelete(true);
+ dict.replace("bCreateMinimized",new QVariant(c->hasSwitch('m',"minimized")));
+ dict.replace("bNoRaise",new QVariant(c->hasSwitch('n',"noraise")));
+
+ d->allocate(c->window(),&dict,0);
+ } else {
+ c->warning("Ops.. internal error");
+ }
+ return true;
+}
+
+static bool sharedfileswindow_module_init(KviModule * m)
+{
+ KviModuleExtensionDescriptor * d = m->registerExtension("tool",
+ KVI_SHARED_FILES_WINDOW_EXTENSION_NAME,
+ __tr2qs_ctx("Manage S&hared Files","sharedfileswindow"),
+ sharedfileswindow_extension_alloc);
+
+ if(d)d->setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SHAREDFILES)));
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"open",sharedfileswindow_kvs_cmd_open);
+ return true;
+}
+
+static bool sharedfileswindow_module_cleanup(KviModule *m)
+{
+ if(g_pSharedFilesWindow)
+ {
+ delete g_pSharedFilesWindow;
+ g_pSharedFilesWindow = 0;
+ }
+ return true;
+}
+
+static bool sharedfileswindow_module_can_unload(KviModule *m)
+{
+ return (!g_pSharedFilesWindow);
+}
+
+KVIRC_MODULE(
+ "SharedFilesWindow",
+ "1.0.0",
+ "Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)",
+ "Shared files window extension",
+ sharedfileswindow_module_init,
+ sharedfileswindow_module_can_unload,
+ 0,
+ sharedfileswindow_module_cleanup
+)
diff --git a/src/modules/sharedfileswindow/sharedfileswindow.cpp b/src/modules/sharedfileswindow/sharedfileswindow.cpp
new file mode 100644
index 00000000..aa851684
--- /dev/null
+++ b/src/modules/sharedfileswindow/sharedfileswindow.cpp
@@ -0,0 +1,742 @@
+//==================================================================================
+//
+// File : sharedfileswindow.cpp
+// Creation date : Mon Apr 21 2003 23:14:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the linkss of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//==================================================================================
+
+#include "sharedfileswindow.h"
+
+#include "kvi_debug.h"
+#include "kvi_iconmanager.h"
+#include "kvi_ircview.h"
+#include "kvi_out.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_out.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_themedlabel.h"
+#include "kvi_input.h"
+#include "kvi_filedialog.h"
+#include "kvi_styled_controls.h"
+
+#include <qdatetimeedit.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qpushbutton.h>
+#include <qsplitter.h>
+#include "kvi_tal_hbox.h"
+#include "kvi_tal_vbox.h"
+#include <qlayout.h>
+#include <qcheckbox.h>
+#include <qmessagebox.h>
+#include <qfileinfo.h>
+
+extern KviSharedFilesWindow * g_pSharedFilesWindow;
+extern KVIRC_API KviSharedFilesManager * g_pSharedFilesManager;
+
+KviSharedFileEditDialog::KviSharedFileEditDialog(QWidget * par,KviSharedFile * f)
+: QDialog(par,"shared_file_editor",true)
+{
+ QGridLayout * g = new QGridLayout(this,1,1,11,6);
+
+ setCaption(__tr2qs_ctx("Edit Shared File - KVIrc","sharedfileswindow"));
+
+ QLabel * l = new QLabel(__tr2qs_ctx("Share name:","sharedfileswindow"),this);
+ g->addWidget(l, 0, 0 );
+
+ m_pShareNameEdit = new QLineEdit(this);
+ g->addMultiCellWidget( m_pShareNameEdit, 0, 0, 1, 3 );
+
+ l = new QLabel(__tr2qs_ctx("File path:","sharedfileswindow"),this);
+ g->addWidget(l, 1, 0 );
+
+ m_pFilePathEdit = new QLineEdit(this);
+ g->addMultiCellWidget( m_pFilePathEdit, 1, 1, 1, 2 );
+
+ m_pBrowseButton = new QPushButton(__tr2qs_ctx("&Browse...","sharedfileswindow"),this);
+ g->addWidget( m_pBrowseButton, 1, 3 );
+ connect(m_pBrowseButton,SIGNAL(clicked()),this,SLOT(browse()));
+
+ l = new QLabel(__tr2qs_ctx("User mask:","sharedfileswindow"),this);
+ g->addWidget(l, 2, 0 );
+
+ m_pUserMaskEdit = new QLineEdit(this);
+ g->addMultiCellWidget( m_pUserMaskEdit, 2, 2, 1, 3 );
+
+ m_pExpireCheckBox = new KviStyledCheckBox(__tr2qs_ctx("Expire at:","sharedfileswindow"),this);
+ g->addWidget(m_pExpireCheckBox,3,0);
+
+ m_pExpireDateTimeEdit = new QDateTimeEdit(this);
+ g->addMultiCellWidget(m_pExpireDateTimeEdit, 3, 3, 1, 3 );
+
+ connect(m_pExpireCheckBox,SIGNAL(toggled(bool)),m_pExpireDateTimeEdit,SLOT(setEnabled(bool)));
+
+ QPushButton * pb;
+
+ pb = new QPushButton(__tr2qs_ctx("&OK","sharedfileswindow"),this);
+ connect(pb,SIGNAL(clicked()),this,SLOT(okClicked()));
+ pb->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ACCEPT)));
+ g->addWidget(pb,5,2);
+ pb = new QPushButton(__tr2qs_ctx("Cancel","sharedfileswindow"),this);
+ connect(pb,SIGNAL(clicked()),this,SLOT(reject()));
+ pb->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DISCARD)));
+ g->addWidget(pb,5,3);
+
+ g->setRowStretch(4,1);
+ g->setColStretch(0,1);
+
+ if(f)
+ {
+ m_pShareNameEdit->setText(f->name());
+ m_pFilePathEdit->setText(f->absFilePath());
+ m_pUserMaskEdit->setText(f->userMask());
+ QDateTime dt;
+ dt.setTime_t(f->expireTime());
+ m_pExpireDateTimeEdit->setDateTime(dt);
+ m_pExpireCheckBox->setChecked(f->expires());
+ m_pExpireDateTimeEdit->setEnabled(f->expires());
+ } else {
+ m_pExpireCheckBox->setChecked(false);
+ m_pExpireDateTimeEdit->setDateTime(QDateTime::currentDateTime());
+ m_pExpireDateTimeEdit->setEnabled(false);
+ }
+
+}
+
+KviSharedFileEditDialog::~KviSharedFileEditDialog()
+{
+
+}
+
+void KviSharedFileEditDialog::browse()
+{
+ QString szBuf;
+ QString szTxt = m_pFilePathEdit->text();
+ if(!KviFileDialog::askForOpenFileName(szBuf,__tr2qs("Choose the file to share"),szTxt))return;
+ m_pFilePathEdit->setText(szBuf);
+}
+
+KviSharedFile * KviSharedFileEditDialog::getResult()
+{
+ QString szName = m_pShareNameEdit->text();
+ QString szPath = m_pFilePathEdit->text();
+ QString szMask = m_pUserMaskEdit->text();
+ QDateTime dt = m_pExpireDateTimeEdit->dateTime();
+ bool bExpires = m_pExpireCheckBox->isChecked();
+ QFileInfo f(szPath);
+ return new KviSharedFile(szName,szPath,szMask,bExpires ? dt.toTime_t() : (time_t)0,f.size());
+}
+
+void KviSharedFileEditDialog::okClicked()
+{
+ QString szName = m_pShareNameEdit->text();
+ QString szPath = m_pFilePathEdit->text();
+ QDateTime dt = m_pExpireDateTimeEdit->dateTime();
+ bool bExpires = m_pExpireCheckBox->isChecked();
+ if(bExpires && (dt <= QDateTime::currentDateTime()))
+ {
+ QMessageBox::warning(this,__tr2qs_ctx("Invalid expire time","sharedfileswindow"),
+ __tr2qs_ctx("The expire date/time is in the past: please either remove the \"expires\"" \
+ "check mark or specify a expire date/time in the future","sharedfileswindow"),
+ __tr2qs_ctx("OK","sharedfileswindow"));
+ return;
+ }
+
+ if(szName.isEmpty())
+ {
+ QMessageBox::warning(this,__tr2qs_ctx("Invalid share name","sharedfileswindow"),
+ __tr2qs_ctx("The share name can't be empty, please correct it","sharedfileswindow"),
+ __tr2qs_ctx("OK","sharedfileswindow"));
+ return;
+ }
+
+ QFileInfo f(szPath);
+ if(!(f.exists() && f.isFile() && f.isReadable()))
+ {
+ QMessageBox::warning(this,__tr2qs_ctx("Can't open the file","sharedfileswindow"),
+ __tr2qs_ctx("The file doesn't exist or it is not readable, please check the path","sharedfileswindow"),
+ __tr2qs_ctx("OK","sharedfileswindow"));
+ return;
+ }
+
+ accept();
+}
+
+
+KviSharedFilesListViewItem::KviSharedFilesListViewItem(KviTalListView * lv,KviSharedFile * f)
+: KviTalListViewItem(lv,f->name())
+{
+ setText(1,f->absFilePath());
+ setText(2,f->userMask());
+ if(f->expires())
+ {
+ QDateTime dt;
+ dt.setTime_t(f->expireTime());
+ setText(3,dt.toString());
+ } else {
+ setText(3,__tr2qs_ctx("Never","sharedfileswindow"));
+ }
+ m_pSharedFilePointer = f;
+}
+
+KviSharedFilesListViewItem::~KviSharedFilesListViewItem()
+{
+}
+
+
+KviSharedFilesWindow::KviSharedFilesWindow(KviModuleExtensionDescriptor * d,KviFrame * lpFrm)
+: KviWindow(KVI_WINDOW_TYPE_TOOL,lpFrm,"shared files window",0) , KviModuleExtension(d)
+{
+ g_pSharedFilesWindow = this;
+#ifdef COMPILE_USE_QT4
+ m_pSplitter = new QSplitter(Qt::Horizontal,this,"splitter");
+#else
+ m_pSplitter = new QSplitter(QSplitter::Horizontal,this,"splitter");
+#endif
+
+ KviTalVBox * vbox = new KviTalVBox(m_pSplitter);
+
+ m_pListView = new KviTalListView(vbox);
+ //m_pListView->header()->hide();
+ m_pListView->setAllColumnsShowFocus(true);
+ m_pListView->addColumn(__tr2qs_ctx("Name","sharedfileswindow"),200);
+ m_pListView->addColumn(__tr2qs_ctx("Filename","sharedfileswindow"),300);
+ m_pListView->addColumn(__tr2qs_ctx("Mask","sharedfileswindow"),200);
+ m_pListView->addColumn(__tr2qs_ctx("Expires","sharedfileswindow"),200);
+ m_pListView->setSelectionMode(KviTalListView::Single);
+ connect(m_pListView,SIGNAL(selectionChanged()),this,SLOT(enableButtons()));
+
+ connect(g_pSharedFilesManager,SIGNAL(sharedFilesChanged()),this,SLOT(fillFileView()));
+ connect(g_pSharedFilesManager,SIGNAL(sharedFileAdded(KviSharedFile *)),this,SLOT(sharedFileAdded(KviSharedFile *)));
+ connect(g_pSharedFilesManager,SIGNAL(sharedFileRemoved(KviSharedFile *)),this,SLOT(sharedFileRemoved(KviSharedFile *)));
+
+ KviTalHBox * b = new KviTalHBox(vbox);
+
+ m_pAddButton = new QPushButton(__tr2qs_ctx("&Add...","sharedfileswindow"),b);
+ connect(m_pAddButton,SIGNAL(clicked()),this,SLOT(addClicked()));
+ m_pRemoveButton = new QPushButton(__tr2qs_ctx("Re&move","sharedfileswindow"),b);
+ connect(m_pRemoveButton,SIGNAL(clicked()),this,SLOT(removeClicked()));
+ m_pEditButton = new QPushButton(__tr2qs_ctx("&Edit","sharedfileswindow"),b);
+ connect(m_pEditButton,SIGNAL(clicked()),this,SLOT(editClicked()));
+
+ fillFileView();
+}
+
+KviSharedFilesWindow::~KviSharedFilesWindow()
+{
+ g_pSharedFilesWindow = 0;
+}
+
+void KviSharedFilesWindow::enableButtons()
+{
+ KviTalListViewItem * it = m_pListView->currentItem();
+ m_pEditButton->setEnabled(it);
+ m_pRemoveButton->setEnabled(it);
+}
+
+void KviSharedFilesWindow::removeClicked()
+{
+ KviSharedFilesListViewItem * it = (KviSharedFilesListViewItem *)m_pListView->currentItem();
+ if(!it)return;
+
+ g_pSharedFilesManager->removeSharedFile(it->readOnlySharedFilePointer()->name(),it->readOnlySharedFilePointer());
+}
+
+void KviSharedFilesWindow::addClicked()
+{
+ KviSharedFileEditDialog dlg(0);
+ if(dlg.exec() != QDialog::Accepted)return;
+
+ KviSharedFile * f = dlg.getResult();
+ if(!f)return;
+ g_pSharedFilesManager->addSharedFile(f);
+}
+
+void KviSharedFilesWindow::editClicked()
+{
+ KviSharedFilesListViewItem * it = (KviSharedFilesListViewItem *)m_pListView->currentItem();
+ if(!it)return;
+
+ KviSharedFileEditDialog dlg(0,it->readOnlySharedFilePointer());
+ if(dlg.exec() != QDialog::Accepted)return;
+
+ KviSharedFilesListViewItem * it2 = (KviSharedFilesListViewItem *)m_pListView->currentItem();
+ if(it2 != it)return; // ooops ?
+ KviSharedFile * f = dlg.getResult();
+ if(!f)return; // ooops 2 ?
+
+ g_pSharedFilesManager->removeSharedFile(it->readOnlySharedFilePointer()->name(),it->readOnlySharedFilePointer());
+ g_pSharedFilesManager->addSharedFile(f);
+}
+
+void KviSharedFilesWindow::fillFileView()
+{
+ m_pListView->clear();
+ KviPointerHashTableIterator<QString,KviSharedFileList> it(*(g_pSharedFilesManager->sharedFileListDict()));
+
+ KviSharedFilesListViewItem * itm;
+
+ while(KviSharedFileList * l = it.current())
+ {
+ for(KviSharedFile * o = l->first();o;o = l->next())
+ {
+ itm = new KviSharedFilesListViewItem(m_pListView,o);
+ }
+ ++it;
+ }
+ enableButtons();
+}
+
+void KviSharedFilesWindow::sharedFileAdded(KviSharedFile * f)
+{
+ KviSharedFilesListViewItem * it;
+ it = new KviSharedFilesListViewItem(m_pListView,f);
+ enableButtons();
+}
+
+void KviSharedFilesWindow::sharedFileRemoved(KviSharedFile * f)
+{
+ KviTalListViewItem * it = m_pListView->firstChild();
+ while(it)
+ {
+ if(((KviSharedFilesListViewItem *)it)->readOnlySharedFilePointer() == f)
+ {
+ delete ((KviSharedFilesListViewItem *)it);
+ return;
+ }
+ it = it->nextSibling();
+ }
+ enableButtons();
+}
+
+
+
+/*
+void KviSharedFilesWindow::tipRequest(KviDynamicToolTip * tip,const QPoint &pnt)
+{
+
+ KviSharedFilesItem * it = (KviSharedFilesItem *)m_pListView->itemAt(pnt);
+ if(!it)return;
+ QString txt = it->transfer()->tipText();
+ tip->tip(m_pListView->itemRect(it),txt);
+
+}
+*/
+/*
+void KviSharedFilesWindow::fillTransferView()
+{
+ KviPointerList<KviSharedFiles> * l = KviSharedFilesManager::instance()->transferList();
+ if(!l)return;
+ KviSharedFilesItem * it;
+ for(KviSharedFiles * t = l->first();t;t = l->next())
+ {
+ it = new KviSharedFilesItem(m_pListView,t);
+ t->setDisplayItem(it);
+ }
+}
+
+KviSharedFilesItem * KviSharedFilesWindow::findItem(KviSharedFiles * t)
+{
+ KviSharedFilesItem * it = (KviSharedFilesItem *)m_pListView->firstChild();
+ while(it)
+ {
+ if(it->transfer() == t)return it;
+ it = (KviSharedFilesItem *)(it->nextSibling());
+ }
+ return 0;
+}
+
+void KviSharedFilesWindow::transferRegistered(KviSharedFiles * t)
+{
+ KviSharedFilesItem * it = new KviSharedFilesItem(m_pListView,t);
+ //t->setDisplayItem(it);
+}
+
+void KviSharedFilesWindow::transferUnregistering(KviSharedFiles * t)
+{
+ KviSharedFilesItem * it = findItem(t);
+ //t->setDisplayItem(0);
+ if(it)delete it;
+}
+
+void KviSharedFilesWindow::rightButtonPressed(KviTalListViewItem *it,const QPoint &pnt,int col)
+{
+ if(!m_pContextPopup)m_pContextPopup = new KviTalPopupMenu(this);
+ if(!m_pLocalFilePopup)m_pLocalFilePopup = new KviTalPopupMenu(this);
+ if(!m_pOpenFilePopup)
+ {
+ m_pOpenFilePopup= new KviTalPopupMenu(this);
+ connect(m_pOpenFilePopup,SIGNAL(activated(int)),this,SLOT(openFilePopupActivated(int)));
+ }
+
+ m_pContextPopup->clear();
+
+ int id;
+
+
+ if(it)
+ {
+ KviSharedFilesItem * i = (KviSharedFilesItem *)it;
+ if(i->transfer())
+ {
+
+ QString szFile = i->transfer()->localFileName();
+ if(!szFile.isEmpty())
+ {
+ m_pLocalFilePopup->clear();
+
+ QString tmp = "<b>file:/";
+ tmp += szFile;
+ tmp += "</b><br>";
+
+ QFileInfo fi(szFile);
+ if(fi.exists())
+ {
+ tmp += "<nobr>";
+ tmp += __tr2qs_ctx("Size: %1 bytes","filetransferwindow").arg(fi.size());
+ tmp += "</nobr><br>";
+ }
+
+#ifdef COMPILE_KDE_SUPPORT
+ tmp += "<nobr>Mime: ";
+ tmp += KMimeType::findByPath(szFile)->name();
+ tmp += "</nobr>";
+#endif //COMPILE_KDE_SUPPORT
+
+ QLabel * l = new QLabel(tmp,m_pLocalFilePopup);
+ l->setFrameStyle(QFrame::Raised | QFrame::Panel);
+ m_pLocalFilePopup->insertItem(l);
+
+#ifdef COMPILE_KDE_SUPPORT
+ QString mimetype = KMimeType::findByPath(szFile)->name();
+ KServiceTypeProfile::OfferList offers = KServiceTypeProfile::offers(mimetype,"Application");
+
+ m_pOpenFilePopup->clear();
+
+ int id;
+ int idx = 0;
+
+ for(KServiceTypeProfile::OfferList::Iterator itOffers = offers.begin();
+ itOffers != offers.end(); ++itOffers)
+ {
+ id = m_pOpenFilePopup->insertItem((*itOffers).service()->pixmap(KIcon::Small),(*itOffers).service()->name());
+ m_pOpenFilePopup->setItemParameter(id,idx);
+ idx++;
+ }
+
+ m_pOpenFilePopup->insertSeparator();
+
+ id = m_pOpenFilePopup->insertItem(__tr2qs_ctx("Default application","filetransferwindow"),this,SLOT(openLocalFile()));
+ m_pOpenFilePopup->setItemParameter(id,-1);
+ id = m_pOpenFilePopup->insertItem(__tr2qs_ctx("&Other...","filetransferwindow"),this,SLOT(openLocalFileWith()));
+ m_pOpenFilePopup->setItemParameter(id,-1);
+
+ m_pLocalFilePopup->insertItem(__tr2qs_ctx("Open with","filetransferwindow"),m_pOpenFilePopup);
+ m_pLocalFilePopup->insertSeparator();
+ m_pLocalFilePopup->insertItem(__tr2qs_ctx("Open folder","filetransferwindow"),this,SLOT(openLocalFileFolder()));
+ m_pLocalFilePopup->insertItem(__tr2qs_ctx("Reach in terminal","filetransferwindow"),this,SLOT(openLocalFileTerminal()));
+ m_pLocalFilePopup->insertSeparator();
+#endif //COMPILE_KDE_SUPPORT
+ m_pLocalFilePopup->insertItem(__tr2qs_ctx("Copy path to clipboard","filetransferwindow"),this,SLOT(copyLocalFileToClipboard()));
+
+ m_pContextPopup->insertItem(__tr2qs_ctx("Local file","filetransferwindow"),m_pLocalFilePopup);
+ }
+
+ i->transfer()->fillContextPopup(m_pContextPopup,col);
+ m_pContextPopup->insertSeparator();
+ }
+ }
+
+
+ bool bHaveTerminated = false;
+ KviSharedFilesItem * item = (KviSharedFilesItem *)m_pListView->firstChild();
+ while(item)
+ {
+ if(item->transfer()->terminated())
+ {
+ bHaveTerminated = true;
+ break;
+ }
+ item = (KviSharedFilesItem *)item->nextSibling();
+ }
+
+ id = m_pContextPopup->insertItem(__tr2qs_ctx("Clear terminated","filetransferwindow"),this,SLOT(clearTerminated()));
+ m_pContextPopup->setItemEnabled(id,bHaveTerminated);
+
+ id = m_pContextPopup->insertItem(__tr2qs_ctx("Clear all","filetransferwindow"),this,SLOT(clearAll()));
+ m_pContextPopup->setItemEnabled(id,it);
+
+ m_pContextPopup->popup(pnt);
+}
+
+
+KviSharedFiles * KviSharedFilesWindow::selectedTransfer()
+{
+ KviTalListViewItem * it = m_pListView->selectedItem();
+ if(!it)return 0;
+ KviSharedFilesItem * i = (KviSharedFilesItem *)it;
+ return i->transfer();
+}
+
+void KviSharedFilesWindow::openFilePopupActivated(int id)
+{
+#ifdef COMPILE_KDE_SUPPORT
+ int ip = m_pOpenFilePopup->itemParameter(id);
+ if(ip < 0)return;
+ QString txt = m_pOpenFilePopup->text(id);
+
+ KviSharedFiles * t = selectedTransfer();
+ if(!t)return;
+ QString tmp = t->localFileName();
+ if(tmp.isEmpty())return;
+
+ QString mimetype = KMimeType::findByPath(tmp)->name();
+ KServiceTypeProfile::OfferList offers = KServiceTypeProfile::offers(mimetype,"Application");
+
+ for(KServiceTypeProfile::OfferList::Iterator itOffers = offers.begin();
+ itOffers != offers.end(); ++itOffers)
+ {
+ if(txt == (*itOffers).service()->name())
+ {
+ KURL::List lst;
+ KURL url;
+ url.setPath(tmp);
+ lst.append(url);
+ KRun::run(*((*itOffers).service()), lst);
+ break;
+ }
+ }
+#endif //COMPILE_KDE_SUPPORT
+}
+
+void KviSharedFilesWindow::openLocalFileTerminal()
+{
+#ifdef COMPILE_KDE_SUPPORT
+ KviSharedFiles * t = selectedTransfer();
+ if(!t)return;
+ QString tmp = t->localFileName();
+ if(tmp.isEmpty())return;
+
+ int idx = tmp.findRev("/");
+ if(idx == -1)return;
+ tmp = tmp.left(idx);
+
+ tmp.prepend("konsole --workdir=\"");
+ tmp.append("\"");
+
+ KRun::runCommand(tmp);
+#endif //COMPILE_KDE_SUPPORT
+}
+
+void KviSharedFilesWindow::openLocalFile()
+{
+#ifdef COMPILE_KDE_SUPPORT
+ KviSharedFiles * t = selectedTransfer();
+ if(!t)return;
+ QString tmp = t->localFileName();
+ if(tmp.isEmpty())return;
+
+ QString mimetype = KMimeType::findByPath(tmp)->name();
+ KService::Ptr offer = KServiceTypeProfile::preferredService(mimetype,"Application");
+ if(!offer)
+ {
+ openLocalFileWith();
+ return;
+ }
+
+ KURL::List lst;
+ KURL url;
+ url.setPath(tmp);
+ lst.append(url);
+ KRun::run(*offer, lst);
+#endif //COMPILE_KDE_SUPPORT
+}
+
+void KviSharedFilesWindow::openLocalFileWith()
+{
+#ifdef COMPILE_KDE_SUPPORT
+ KviSharedFiles * t = selectedTransfer();
+ if(!t)return;
+ QString tmp = t->localFileName();
+ if(tmp.isEmpty())return;
+
+ KURL::List lst;
+ KURL url;
+ url.setPath(tmp);
+ lst.append(url);
+ KRun::displayOpenWithDialog(lst);
+#endif //COMPILE_KDE_SUPPORT
+}
+
+void KviSharedFilesWindow::copyLocalFileToClipboard()
+{
+ KviSharedFiles * t = selectedTransfer();
+ if(!t)return;
+ QString tmp = t->localFileName();
+ if(tmp.isEmpty())return;
+ QApplication::clipboard()->setSelectionMode(false);
+ QApplication::clipboard()->setText(tmp);
+ QApplication::clipboard()->setSelectionMode(true);
+ QApplication::clipboard()->setText(tmp);
+}
+
+void KviSharedFilesWindow::openLocalFileFolder()
+{
+#ifdef COMPILE_KDE_SUPPORT
+ KviSharedFiles * t = selectedTransfer();
+ if(!t)return;
+ QString tmp = t->localFileName();
+ if(tmp.isEmpty())return;
+
+ int idx = tmp.findRev("/");
+ if(idx == -1)return;
+ tmp = tmp.left(idx);
+
+ QString mimetype = KMimeType::findByPath(tmp)->name(); // inode/directory
+ KService::Ptr offer = KServiceTypeProfile::preferredService(mimetype,"Application");
+ if(!offer)return;
+
+ KURL::List lst;
+ KURL url;
+ url.setPath(tmp);
+ lst.append(url);
+ KRun::run(*offer, lst);
+#endif //COMPILE_KDE_SUPPORT
+}
+
+void KviSharedFilesWindow::heartbeat()
+{
+ if(m_pListView->childCount() < 1)return;
+
+ KviTalListViewItem * i1;
+ KviTalListViewItem * i2;
+
+ i1 = m_pListView->itemAt(QPoint(1,1));
+ if(!i1)
+ {
+ m_pListView->viewport()->update();
+ return;
+ }
+ i2 = m_pListView->itemAt(QPoint(1,m_pListView->viewport()->height() - 2));
+ if(i2)i2 = i2->nextSibling();
+
+ while(i1 && (i1 != i2))
+ {
+ if(((KviSharedFilesItem *)i1)->transfer()->active())
+ {
+ m_pListView->repaintItem(i1);
+ }
+ i1 = i1->nextSibling();
+ }
+}
+
+void KviSharedFilesWindow::clearAll()
+{
+ if(QMessageBox::information(this,__tr2qs_ctx("Clear all transfers","filetransferwindow"),
+ __tr2qs_ctx("Remove all the transfers including the running ones ?","filetransferwindow"),
+ __tr2qs_ctx("Yes","filetransferwindow"),__tr2qs_ctx("No","filetransferwindow")) != 0)return;
+
+ KviSharedFilesManager::instance()->killAllTransfers();
+}
+
+void KviSharedFilesWindow::clearTerminated()
+{
+ KviSharedFilesManager::instance()->killTerminatedTransfers();
+}
+*/
+void KviSharedFilesWindow::getBaseLogFileName(KviStr &buffer)
+{
+ buffer.sprintf("SHAREDFILES");
+}
+
+QPixmap * KviSharedFilesWindow::myIconPtr()
+{
+ return g_pIconManager->getSmallIcon(KVI_SMALLICON_SHAREDFILES);
+}
+
+void KviSharedFilesWindow::resizeEvent(QResizeEvent *e)
+{
+ //int h = m_pInput->heightHint();
+ m_pSplitter->setGeometry(0,0,width(),height());
+ //m_pInput->setGeometry(0,height() - h,width(),h);
+}
+
+QSize KviSharedFilesWindow::sizeHint() const
+{
+ return m_pSplitter->sizeHint();
+}
+
+void KviSharedFilesWindow::fillCaptionBuffers()
+{
+ m_szPlainTextCaption = __tr2qs_ctx("Shared Files","sharedfileswindow");
+
+ m_szHtmlActiveCaption = "<nobr><font color=\"";
+ m_szHtmlActiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name();
+ m_szHtmlActiveCaption += "\"><b>";
+ m_szHtmlActiveCaption += m_szPlainTextCaption;
+ m_szHtmlActiveCaption += "</b></font></nobr>";
+
+ m_szHtmlInactiveCaption = "<nobr><font color=\"";
+ m_szHtmlInactiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name();
+ m_szHtmlInactiveCaption += "\"><b>";
+ m_szHtmlInactiveCaption += m_szPlainTextCaption;
+ m_szHtmlInactiveCaption += "</b></font></nobr>";
+
+}
+
+void KviSharedFilesWindow::die()
+{
+ close();
+}
+
+
+
+//#warning "Load & save properties of this kind of window"
+
+//void KviSharedFilesWindow::saveProperties()
+//{
+// KviWindowProperty p;
+// p.rect = externalGeometry();
+// p.isDocked = isAttacched();
+// QValueList<int> l(m_pSplitter->sizes());
+// if(l.count() >= 1)p.splitWidth1 = *(l.at(0));
+// if(l.count() >= 2)p.splitWidth2 = *(l.at(1));
+// p.timestamp = m_pView->timestamp();
+// p.imagesVisible = m_pView->imagesVisible();
+// p.isMaximized = isAttacched() && isMaximized();
+// p.topSplitWidth1 = 0;
+// p.topSplitWidth2 = 0;
+// p.topSplitWidth3 = 0;
+// g_pOptions->m_pWinPropertiesList->setProperty(caption(),&p);
+//}
+//
+//void KviSharedFilesWindow::setProperties(KviWindowProperty *p)
+//{
+// QValueList<int> l;
+// l.append(p->splitWidth1);
+// l.append(p->splitWidth2);
+// m_pVertSplitter->setSizes(l);
+// m_pIrcView->setTimestamp(p->timestamp);
+// m_pIrcView->setShowImages(p->imagesVisible);
+//}
+
+
+#include "m_sharedfileswindow.moc"
diff --git a/src/modules/sharedfileswindow/sharedfileswindow.h b/src/modules/sharedfileswindow/sharedfileswindow.h
new file mode 100644
index 00000000..f46bd6df
--- /dev/null
+++ b/src/modules/sharedfileswindow/sharedfileswindow.h
@@ -0,0 +1,114 @@
+#ifndef _SHAREDFILESWINDOW_H_
+#define _SHAREDFILESWINDOW_H_
+//==================================================================================
+//
+// File : sharedfileswindow.h
+// Creation date : Mon Apr 21 2003 23:14:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the linkss of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//==================================================================================
+
+#include "kvi_window.h"
+#include "kvi_string.h"
+#include "kvi_sparser.h"
+#include "kvi_console.h"
+#include "kvi_moduleextension.h"
+#include "kvi_sharedfiles.h"
+#include "kvi_styled_controls.h"
+
+#include "kvi_tal_listview.h"
+#include <qdialog.h>
+
+class QGridLayout;
+class QDateTimeEdit;
+class QLabel;
+class QLineEdit;
+class QPushButton;
+
+class KviSharedFilesListViewItem : public KviTalListViewItem
+{
+public:
+ KviSharedFilesListViewItem(KviTalListView * lv,KviSharedFile * f);
+ ~KviSharedFilesListViewItem();
+protected:
+ KviSharedFile * m_pSharedFilePointer; // THIS IS READ ONLY!
+public:
+ KviSharedFile * readOnlySharedFilePointer(){ return m_pSharedFilePointer; };
+};
+
+
+
+class KviSharedFileEditDialog : public QDialog
+{
+ Q_OBJECT
+public:
+ KviSharedFileEditDialog(QWidget* par,KviSharedFile * f = 0);
+ ~KviSharedFileEditDialog();
+
+ QDateTimeEdit * m_pExpireDateTimeEdit;
+ QLineEdit * m_pFilePathEdit;
+ QLineEdit * m_pUserMaskEdit;
+ QPushButton * m_pBrowseButton;
+ QLineEdit * m_pShareNameEdit;
+ KviStyledCheckBox * m_pExpireCheckBox;
+public:
+ KviSharedFile * getResult();
+protected slots:
+ void okClicked();
+ void browse();
+};
+
+
+
+
+class KviSharedFilesWindow : public KviWindow , public KviModuleExtension
+{
+ friend class KviSharedFilesItem;
+ Q_OBJECT
+public:
+ KviSharedFilesWindow(KviModuleExtensionDescriptor * d,KviFrame * lpFrm);
+ ~KviSharedFilesWindow();
+protected:
+ QSplitter * m_pVertSplitter;
+
+ KviTalListView * m_pListView;
+
+ QPushButton * m_pRemoveButton;
+ QPushButton * m_pEditButton;
+ QPushButton * m_pAddButton;
+public: // Methods
+ virtual void die();
+protected:
+ virtual QPixmap * myIconPtr();
+ virtual void fillCaptionBuffers();
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual void getBaseLogFileName(KviStr &buffer);
+public:
+ virtual QSize sizeHint() const;
+protected slots:
+ void fillFileView();
+ void sharedFileAdded(KviSharedFile * f);
+ void sharedFileRemoved(KviSharedFile * f);
+ void enableButtons();
+ void removeClicked();
+ void addClicked();
+ void editClicked();
+};
+
+#endif //_SHAREDFILESWINDOW_H_
diff --git a/src/modules/snd/Makefile.am b/src/modules/snd/Makefile.am
new file mode 100644
index 00000000..d5776010
--- /dev/null
+++ b/src/modules/snd/Makefile.am
@@ -0,0 +1,22 @@
+###############################################################################
+# KVirc IRC client Makestr - 10.03.2002 Juanjo �lvarez <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+-I/usr/include/kde/arts\
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvisnd.la
+
+libkvisnd_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvisnd_la_SOURCES = libkvisnd.cpp
+libkvisnd_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+
+noinst_HEADERS= libkvisnd.h
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+libkvisnd.cpp: libkvisnd.moc
diff --git a/src/modules/snd/libkvisnd.cpp b/src/modules/snd/libkvisnd.cpp
new file mode 100644
index 00000000..bf0d2eab
--- /dev/null
+++ b/src/modules/snd/libkvisnd.cpp
@@ -0,0 +1,744 @@
+//=============================================================================
+//
+// File : libkvisnd.cpp
+// Creation date : Thu Dec 27 2002 17:13:12 GMT by Juanjo �varez
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Juanjo �varez (juanjux at yahoo dot es)
+// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "libkvisnd.h"
+#include "kvi_module.h"
+#include "kvi_debug.h"
+
+#include "kvi_fileutils.h"
+#include "kvi_malloc.h"
+#include "kvi_window.h"
+#include "kvi_out.h"
+#include "kvi_locale.h"
+#include "kvi_qstring.h"
+
+#include <qsound.h>
+
+#ifdef COMPILE_ON_WINDOWS
+ #include <mmsystem.h>
+#else //!COMPILE_ON_WINDOWS
+
+ #include <qfile.h>
+ #include <unistd.h>
+ #include <errno.h>
+
+ #ifdef COMPILE_ESD_SUPPORT
+ #include <esd.h>
+ #endif //COMPILE_ESD_SUPPORT
+
+ #ifdef COMPILE_OSS_SUPPORT
+ #include <fcntl.h>
+ #include <sys/ioctl.h>
+ #ifdef HAVE_LINUX_SOUNDCARD_H
+ #include <linux/soundcard.h>
+ #else
+ // Hint by Andy Fawcett: Thnx :)
+ #ifdef HAVE_SYS_SOUNDCARD_H
+ #include <sys/soundcard.h>
+ #else
+ #warning "Ops.. have no soundcard.h ? ... we're going to fail here :/"
+ #endif
+ #endif
+ #ifdef COMPILE_AUDIOFILE_SUPPORT
+ #include <audiofile.h>
+ #endif //COMPILE_AUDIOFILE_SUPPORT
+ #endif //COMPILE_OSS_SUPPORT
+
+ #ifdef COMPILE_ARTS_SUPPORT
+ #include <arts/soundserver.h>
+
+ static Arts::Dispatcher * g_pArtsDispatcher = 0;
+
+ #endif //COMPILE_ARTS_SUPPORT
+
+#endif
+
+static KviSoundPlayer * g_pSoundPlayer = 0;
+
+KviSoundPlayer::KviSoundPlayer()
+: QObject()
+{
+ m_pThreadList = new KviPointerList<KviSoundThread>;
+ m_pThreadList->setAutoDelete(true);
+
+ m_pSoundSystemDict = new KviPointerHashTable<QString,SoundSystemRoutine>(17,false);
+ m_pSoundSystemDict->setAutoDelete(true);
+
+#ifdef COMPILE_ON_WINDOWS
+ m_pSoundSystemDict->insert("winmm",new SoundSystemRoutine(KVI_PTR2MEMBER(KviSoundPlayer::playWinmm)));
+#else //!COMPILE_ON_WINDOWS
+ #ifdef COMPILE_OSS_SUPPORT
+ #ifdef COMPILE_AUDIOFILE_SUPPORT
+ m_pSoundSystemDict->insert("oss+audiofile",new SoundSystemRoutine(KVI_PTR2MEMBER(KviSoundPlayer::playOssAudiofile)));
+ #endif //COMPILE_AUDIOFILE_SUPPORT
+ m_pSoundSystemDict->insert("oss",new SoundSystemRoutine(KVI_PTR2MEMBER(KviSoundPlayer::playOss)));
+ #endif //COMPILE_OSS_SUPPORT
+ #ifdef COMPILE_ESD_SUPPORT
+ m_pSoundSystemDict->insert("esd",new SoundSystemRoutine(KVI_PTR2MEMBER(KviSoundPlayer::playEsd)));
+ #endif //COMPILE_ESD_SUPPORT
+ #ifdef COMPILE_ARTS_SUPPORT
+ m_pSoundSystemDict->insert("arts",new SoundSystemRoutine(KVI_PTR2MEMBER(KviSoundPlayer::playArts)));
+ #endif //COMPILE_ARTS_SUPPORT
+#endif //!COMPILE_ON_WINDOWS
+
+#if QT_VERSION >= 0x030100
+ if(QSound::isAvailable())
+ m_pSoundSystemDict->insert("qt",new SoundSystemRoutine(KVI_PTR2MEMBER(KviSoundPlayer::playQt)));
+#else
+ if(QSound::available())
+ m_pSoundSystemDict->insert("qt",new SoundSystemRoutine(KVI_PTR2MEMBER(KviSoundPlayer::playQt)));
+#endif
+
+ m_pSoundSystemDict->insert("null",new SoundSystemRoutine(KVI_PTR2MEMBER(KviSoundPlayer::playNull)));
+
+}
+
+KviSoundPlayer::~KviSoundPlayer()
+{
+ m_pThreadList->setAutoDelete(false);
+ while(KviSoundThread * t = m_pThreadList->first())delete t;
+ delete m_pThreadList;
+ KviThreadManager::killPendingEvents(this);
+ delete m_pSoundSystemDict;
+
+#ifndef COMPILE_ON_WINDOWS
+ #ifdef COMPILE_ARTS_SUPPORT
+ if(g_pArtsDispatcher)delete g_pArtsDispatcher;
+ g_pArtsDispatcher = 0;
+ #endif
+#endif //!COMPILE_ON_WINDOWS
+ g_pSoundPlayer = 0;
+}
+
+void KviSoundPlayer::getAvailableSoundSystems(QStringList *l)
+{
+ KviPointerHashTableIterator<QString,SoundSystemRoutine> it(*m_pSoundSystemDict);
+ while(it.current())
+ {
+ l->append(it.currentKey());
+ ++it;
+ }
+}
+
+
+bool KviSoundPlayer::havePlayingSounds()
+{
+ return (m_pThreadList->count() > 0);
+}
+
+void KviSoundPlayer::registerSoundThread(KviSoundThread * t)
+{
+ m_pThreadList->append(t);
+}
+
+void KviSoundPlayer::unregisterSoundThread(KviSoundThread * t)
+{
+ m_pThreadList->removeRef(t);
+}
+
+bool KviSoundPlayer::event(QEvent * e)
+{
+ if(e->type() == KVI_THREAD_EVENT)
+ {
+ KviThread * t = ((KviThreadEvent *)e)->sender();
+ if(!t)return true; // huh ?
+ delete (KviSoundThread *)t;
+ return true;
+ }
+ return QObject::event(e);
+}
+
+
+void KviSoundPlayer::detectSoundSystem()
+{
+#ifdef COMPILE_ON_WINDOWS
+ KVI_OPTION_STRING(KviOption_stringSoundSystem) = "winmm";
+#else
+ #ifdef COMPILE_ARTS_SUPPORT
+ if(!g_pArtsDispatcher)g_pArtsDispatcher = new Arts::Dispatcher();
+
+ Arts::SimpleSoundServer *server = new Arts::SimpleSoundServer(Arts::Reference("global:Arts_SimpleSoundServer"));
+ if(!server->isNull())
+ {
+ //Don't change the order of those deletes!
+ KVI_OPTION_STRING(KviOption_stringSoundSystem) = "arts";
+ delete server;
+ return;
+ }
+ delete server;
+ #endif //COMPILE_ARTS_SUPPORT
+ #ifdef COMPILE_ESD_SUPPORT
+ esd_format_t format = ESD_BITS16 | ESD_STREAM | ESD_PLAY | ESD_MONO;
+ int esd_fd = esd_play_stream(format, 8012, NULL, "kvirc");
+ if(esd_fd >= 0)
+ {
+ KVI_OPTION_STRING(KviOption_stringSoundSystem) = "esd";
+ return;
+ }
+ #endif
+ #ifdef COMPILE_OSS_SUPPORT
+ #ifdef COMPILE_AUDIOFILE_SUPPORT
+ KVI_OPTION_STRING(KviOption_stringSoundSystem) = "oss+audiofile";
+ return;
+ #endif
+ KVI_OPTION_STRING(KviOption_stringSoundSystem) = "oss";
+ #endif
+
+#if QT_VERSION >= 0x030100
+ if(QSound::isAvailable())
+#else
+ if(QSound::available())
+#endif
+ {
+ KVI_OPTION_STRING(KviOption_stringSoundSystem) = "qt";
+ return;
+ }
+
+ KVI_OPTION_STRING(KviOption_stringSoundSystem) = "null";
+#endif
+}
+
+#ifdef COMPILE_ON_WINDOWS
+ bool KviSoundPlayer::playWinmm(const QString &szFileName)
+ {
+ if(isMuted()) return true;
+ sndPlaySound(szFileName.local8Bit().data(),SND_ASYNC | SND_NODEFAULT);
+ return true;
+ }
+#else //!COMPILE_ON_WINDOWS
+ #ifdef COMPILE_OSS_SUPPORT
+ #ifdef COMPILE_AUDIOFILE_SUPPORT
+ bool KviSoundPlayer::playOssAudiofile(const QString &szFileName)
+ {
+ if(isMuted()) return true;
+ KviOssAudiofileSoundThread * t = new KviOssAudiofileSoundThread(szFileName);
+ if(!t->start())
+ {
+ delete t;
+ return false;
+ }
+ return true;
+ }
+ #endif //COMPILE_AUDIOFILE_SUPPORT
+ bool KviSoundPlayer::playOss(const QString &szFileName)
+ {
+ if(isMuted()) return true;
+ KviOssSoundThread * t = new KviOssSoundThread(szFileName);
+ if(!t->start())
+ {
+ delete t;
+ return false;
+ }
+ return true;
+ }
+ #endif //COMPILE_OSS_SUPPORT
+ #ifdef COMPILE_ESD_SUPPORT
+ bool KviSoundPlayer::playEsd(const QString &szFileName)
+ {
+ if(isMuted()) return true;
+ KviEsdSoundThread * t = new KviEsdSoundThread(szFileName);
+ if(!t->start())
+ {
+ delete t;
+ return false;
+ }
+ return true;
+ }
+ #endif //COMPILE_ESD_SUPPORT
+ #ifdef COMPILE_ARTS_SUPPORT
+ bool KviSoundPlayer::playArts(const QString &szFileName)
+ {
+ if(isMuted()) return true;
+ KviArtsSoundThread * t = new KviArtsSoundThread(szFileName);
+ if(!t->start())
+ {
+ delete t;
+ return false;
+ }
+ return true;
+ }
+ #endif //COMPILE_ARTS_SUPPORT
+#endif //!COMPILE_ON_WINDOWS
+
+bool KviSoundPlayer::playQt(const QString &szFileName)
+{
+ if(isMuted()) return true;
+ QSound::play(szFileName);
+ return true;
+}
+
+bool KviSoundPlayer::playNull(const QString &szFileName)
+{
+ // null sound system
+ return true;
+}
+
+
+bool KviSoundPlayer::play(const QString &szFileName)
+{
+ if(isMuted()) return true;
+ SoundSystemRoutine * r = m_pSoundSystemDict->find(KVI_OPTION_STRING(KviOption_stringSoundSystem));
+
+ if(!r)
+ {
+ if(KviQString::equalCI(KVI_OPTION_STRING(KviOption_stringSoundSystem),"unknown"))
+ {
+ detectSoundSystem();
+ r = m_pSoundSystemDict->find(KVI_OPTION_STRING(KviOption_stringSoundSystem));
+ if(!r)return false;
+ } else {
+ return false;
+ }
+ }
+
+ return (this->*(*r))(szFileName);
+}
+
+
+
+
+KviSoundThread::KviSoundThread(const QString &szFileName)
+: KviThread()
+{
+ g_pSoundPlayer->registerSoundThread(this);
+ m_szFileName = szFileName;
+}
+
+KviSoundThread::~KviSoundThread()
+{
+ g_pSoundPlayer->unregisterSoundThread(this);
+}
+
+void KviSoundThread::play()
+{
+}
+
+void KviSoundThread::run()
+{
+ play();
+#ifndef COMPILE_ON_WINDOWS
+ postEvent(g_pSoundPlayer,new KviThreadEvent(KVI_THREAD_EVENT_SUCCESS));
+#endif
+}
+
+
+#ifndef COMPILE_ON_WINDOWS
+ #ifdef COMPILE_OSS_SUPPORT
+ #ifdef COMPILE_AUDIOFILE_SUPPORT
+ KviOssAudiofileSoundThread::KviOssAudiofileSoundThread(const QString &szFileName)
+ : KviSoundThread(szFileName)
+ {
+ }
+
+ KviOssAudiofileSoundThread::~KviOssAudiofileSoundThread()
+ {
+ }
+
+ void KviOssAudiofileSoundThread::play()
+ {
+ #define BUFFER_FRAMES 4096
+
+ AFfilehandle file;
+ AFframecount framesRead;
+ int sampleFormat, sampleWidth, channelCount, format, freq;
+ float frameSize;
+ void * buffer;
+
+ file = afOpenFile(m_szFileName.utf8().data(),"r",NULL);
+ afGetVirtualSampleFormat(file, AF_DEFAULT_TRACK, &sampleFormat, &sampleWidth);
+ frameSize = afGetVirtualFrameSize(file, AF_DEFAULT_TRACK, 1);
+ channelCount = afGetVirtualChannels(file, AF_DEFAULT_TRACK);
+ buffer = kvi_malloc(int(BUFFER_FRAMES * frameSize));
+
+ int audiofd_c = open("/dev/dsp", O_WRONLY | O_EXCL | O_NDELAY);
+ QFile audiofd;
+ audiofd.open(IO_WriteOnly,audiofd_c);
+
+ if(audiofd_c < 0)
+ {
+ debug("Could not open audio devive /dev/dsp! [OSS]");
+ debug("(the device is probably busy)");
+ goto exit_thread;
+ }
+
+ if (sampleWidth == 8) format = AFMT_U8;
+ else if (sampleWidth == 16)format = AFMT_S16_NE;
+
+ if (ioctl(audiofd.handle(),SNDCTL_DSP_SETFMT, &format) == -1)
+ {
+ debug("Could not set format width to DSP! [OSS]");
+ goto exit_thread;
+ }
+
+ if (ioctl(audiofd.handle(), SNDCTL_DSP_CHANNELS, &channelCount) == -1)
+ {
+ debug("Could not set DSP channels! [OSS]");
+ goto exit_thread;
+ }
+
+ freq = (int) afGetRate(file, AF_DEFAULT_TRACK);
+ if (ioctl(audiofd.handle(), SNDCTL_DSP_SPEED, &freq) == -1)
+ {
+ debug("Could not set DSP speed %d! [OSS]",freq);
+ goto exit_thread;
+ }
+
+ framesRead = afReadFrames(file, AF_DEFAULT_TRACK, buffer, BUFFER_FRAMES);
+
+ while(framesRead > 0)
+ {
+ audiofd.writeBlock((char *)buffer,(int)(framesRead * frameSize));
+ framesRead = afReadFrames(file, AF_DEFAULT_TRACK, buffer,BUFFER_FRAMES);
+ }
+
+ exit_thread:
+ audiofd.close();
+ if(audiofd_c >= 0)close(audiofd_c);
+ afCloseFile(file);
+ kvi_free(buffer);
+ }
+ #endif //COMPILE_AUDIOFILE_SUPPORT
+
+
+ KviOssSoundThread::KviOssSoundThread(const QString &szFileName)
+ : KviSoundThread(szFileName)
+ {
+ }
+
+ KviOssSoundThread::~KviOssSoundThread()
+ {
+ }
+
+ void KviOssSoundThread::play()
+ {
+ #define OSS_BUFFER_SIZE 16384
+
+ QFile f(m_szFileName);
+ int fd = -1;
+ char buf[OSS_BUFFER_SIZE];
+ int iDataLen = 0;
+ int iSize = 0;
+
+ if(!f.open(IO_ReadOnly))
+ {
+ debug("Could not open sound file %s! [OSS]",m_szFileName.utf8().data());
+ return;
+ }
+
+ iSize = f.size();
+
+ if(iSize < 24)
+ {
+ debug("Could not play sound, file %s too small! [OSS]",m_szFileName.utf8().data());
+ goto exit_thread;
+ }
+
+ if(f.readBlock(buf,24) < 24)
+ {
+ debug("Error while reading the sound file header (%s)! [OSS]",m_szFileName.utf8().data());
+ goto exit_thread;
+ }
+
+ iSize -= 24;
+
+ fd = open("/dev/audio", O_WRONLY | O_EXCL | O_NDELAY);
+ if(fd < 0)
+ {
+ debug("Could not open device file /dev/audio!");
+ debug("Maybe other program is using the device? Hint: fuser -uv /dev/audio");
+ goto exit_thread;
+ }
+
+
+ while(iSize > 0)
+ {
+ int iCanRead = OSS_BUFFER_SIZE - iDataLen;
+ if(iCanRead > 0)
+ {
+ int iToRead = iSize > iCanRead ? iCanRead : iSize;
+ int iReaded = f.readBlock(buf + iDataLen,iToRead);
+ if(iReaded < 1)
+ {
+ debug("Error while reading the file data (%s)! [OSS]",m_szFileName.utf8().data());
+ goto exit_thread;
+ }
+ iSize -= iReaded;
+ iDataLen += iReaded;
+ }
+ if(iDataLen > 0)
+ {
+ int iWritten = write(fd,buf,iDataLen);
+ if(iWritten < 0)
+ {
+ if((errno != EINTR) && (errno != EAGAIN))
+ {
+ debug("Error while writing the audio data (%s)! [OSS]",m_szFileName.utf8().data());
+ goto exit_thread;
+ }
+ }
+ iDataLen -= iWritten;
+ } else {
+ // nothing to write ????
+ goto exit_thread;
+ }
+ }
+
+ exit_thread:
+ f.close();
+ if(fd > 0)close(fd);
+ }
+
+
+ #endif //COMPILE_OSS_SUPPORT
+
+ #ifdef COMPILE_ESD_SUPPORT
+
+ KviEsdSoundThread::KviEsdSoundThread(const QString &szFileName)
+ : KviSoundThread(szFileName)
+ {
+ }
+
+ KviEsdSoundThread::~KviEsdSoundThread()
+ {
+ }
+
+ void KviEsdSoundThread::play()
+ {
+ // ESD has a really nice API
+ if(!esd_play_file(NULL,m_szFileName.utf8().data(),1))
+ debug("Could not play sound %s! [ESD]",m_szFileName.utf8().data());
+ }
+
+ #endif //COMPILE_ESD_SUPPORT
+
+ #ifdef COMPILE_ARTS_SUPPORT
+
+ KviArtsSoundThread::KviArtsSoundThread(const QString &szFileName)
+ : KviSoundThread(szFileName)
+ {
+ }
+
+ KviArtsSoundThread::~KviArtsSoundThread()
+ {
+ }
+
+ void KviArtsSoundThread::play()
+ {
+ if(!g_pArtsDispatcher)g_pArtsDispatcher = new Arts::Dispatcher;
+
+ Arts::SimpleSoundServer *server = new Arts::SimpleSoundServer(Arts::Reference("global:Arts_SimpleSoundServer"));
+ if(server->isNull())
+ {
+ debug("Can't connect to sound server to play file %s",m_szFileName.utf8().data());
+ } else {
+ server->play(m_szFileName);
+ }
+ delete server;
+ }
+ #endif
+
+
+#endif //!COMPILE_ON_WINDOWS
+
+
+/*
+ @doc: snd.play
+ @type:
+ command
+ @title:
+ snd.play
+ @short:
+ Play a sound file from the disk
+ @syntax:
+ snd.play [-q|quiet] <filename:string>
+ @description:
+ Play a file, using the sound system specified by the user in the options.[br]
+ The supported file formats vary from one sound system to another, but the best
+ bet could be Au Law (.au) files. Artsd, EsounD and Linux/OSS with audiofile support also
+ support other formats like .wav files but in OSS without audiofile only .au files are
+ supported.
+ On windows the supported file formats are determined by the drivers installed.
+ You should be able to play at least *.wav files.[br]
+ (This is a task where the Windows interface is really well done, I must say that :)
+ @switches:
+ !sw: -q | --quiet
+ Causes the command to run quietly (no complains about missing files, invalid formats...
+*/
+
+static bool snd_kvs_cmd_play(KviKvsModuleCommandCall * c)
+{
+ QString szFile;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("file name",KVS_PT_STRING,0,szFile)
+ KVSM_PARAMETERS_END(c)
+ if(szFile.isEmpty() || (!KviFileUtils::fileExists(szFile)))
+ {
+ if(!c->hasSwitch('q',"quiet"))c->warning(__tr2qs("Sound file '%Q' not found"),&szFile);
+ return true;
+ }
+
+ if(!g_pSoundPlayer->play(szFile))
+ {
+ if(!c->hasSwitch('q',"quiet"))c->warning(__tr2qs("Unable to play sound '%Q'"),&szFile);
+ }
+
+ return true;
+}
+
+static bool snd_kvs_cmd_autodetect(KviKvsModuleCommandCall * c)
+{
+ g_pSoundPlayer->detectSoundSystem();
+ if(KviQString::equalCI(KVI_OPTION_STRING(KviOption_stringSoundSystem),"null"))
+ {
+ c->window()->outputNoFmt(KVI_OUT_SYSTEMERROR,__tr2qs("Sorry , I can't find a sound system to use on this machine"));
+ } else {
+ c->window()->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Sound system detected to: %s"),KVI_OPTION_STRING(KviOption_stringSoundSystem).utf8().data());
+ }
+ return true;
+}
+
+
+/*
+ @doc: snd.mute
+ @type:
+ command
+ @title:
+ snd.mute
+ @short:
+ Mute all sounds
+ @syntax:
+ snd.mute
+ @description:
+ Mute all sounds
+*/
+
+static bool snd_kvs_cmd_mute(KviKvsModuleCommandCall * c)
+{
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETERS_END(c)
+ g_pSoundPlayer->setMuted(TRUE);
+ return true;
+}
+
+/*
+ @doc: snd.unmute
+ @type:
+ command
+ @title:
+ snd.unmute
+ @short:
+ UnMute all sounds
+ @syntax:
+ snd.mute
+ @description:
+ UnMute all sounds
+*/
+
+static bool snd_kvs_cmd_unmute(KviKvsModuleCommandCall * c)
+{
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETERS_END(c)
+ g_pSoundPlayer->setMuted(FALSE);
+ return true;
+}
+
+/*
+ @doc: snd.isMuted
+ @type:
+ function
+ @title:
+ $snd.isMuted
+ @short:
+ Returns if the sounds muted
+ @syntax:
+ <bool> $snd.isMuted()
+ @description:
+ Returns if the sounds muted
+*/
+
+
+static bool snd_kvs_fnc_ismuted(KviKvsModuleFunctionCall * c)
+{
+ c->returnValue()->setBoolean(g_pSoundPlayer->isMuted());
+ return true;
+}
+
+static bool snd_module_init(KviModule * m)
+{
+ g_pSoundPlayer = new KviSoundPlayer();
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"autodetect",snd_kvs_cmd_autodetect);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"play",snd_kvs_cmd_play);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"mute",snd_kvs_cmd_mute);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"unmute",snd_kvs_cmd_unmute);
+
+ KVSM_REGISTER_FUNCTION(m,"isMuted",snd_kvs_fnc_ismuted);
+
+ return true;
+}
+
+static bool snd_module_cleanup(KviModule *m)
+{
+ delete g_pSoundPlayer;
+ g_pSoundPlayer = 0;
+ return true;
+}
+
+static bool snd_module_can_unload(KviModule *m)
+{
+ return !(g_pSoundPlayer->havePlayingSounds());
+}
+
+static bool snd_module_ctrl(KviModule * m,const char * operation,void * param)
+{
+ if(kvi_strEqualCI(operation,"getAvailableSoundSystems"))
+ {
+ // we expect param to be a pointer to QStringList
+ QStringList *l=(QStringList *)param;
+ g_pSoundPlayer->getAvailableSoundSystems(l);
+ return true;
+ }
+ if(kvi_strEqualCI(operation,"detectSoundSystem"))
+ {
+ g_pSoundPlayer->detectSoundSystem();
+ return true;
+ }
+ return false;
+}
+
+
+KVIRC_MODULE(
+ "Sound", // module name
+ "1.0.0", // module version
+ "(C) 2002 Szymon Stefanek (pragma at kvirc dot net)," \
+ "Juanjo Alvarez (juanjux at yahoo dot es)", // author & (C)
+ "Sound playing commands",
+ snd_module_init,
+ snd_module_can_unload,
+ snd_module_ctrl,
+ snd_module_cleanup
+)
+
+#include "libkvisnd.moc"
diff --git a/src/modules/snd/libkvisnd.h b/src/modules/snd/libkvisnd.h
new file mode 100644
index 00000000..6becfa38
--- /dev/null
+++ b/src/modules/snd/libkvisnd.h
@@ -0,0 +1,213 @@
+#ifndef _LIBKVISND_H_
+#define _LIBKVISND_H_
+
+//
+// File : libkvisnd.h
+// Creation date : Apr 21 2002 12:30:25 CEST by Juan Jos��varez
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+
+#include <qobject.h>
+
+#include "kvi_thread.h"
+#include "kvi_string.h"
+
+#include "kvi_pointerlist.h"
+#include "kvi_pointerhashtable.h"
+#include "kvi_options.h"
+
+//class KviWavSoundFileReader
+//{
+//public:
+// KviWavSoundFileReader(QFile * f);
+// ~KviWavSoundFileReader();
+//protected:
+// QFile * m_pFile;
+//public:
+// static bool recognize(KviFile * f);
+// bool readHeader();
+//};
+
+
+//bool KviWavSoundFileReader::recognize(KviFile * f)
+//{
+// kvi_u32_t tag;
+// if(!f->load(tag))return false;
+//
+// f->at(0);
+//}
+
+//bool KviWavSoundFileReader::readHeader()
+//{
+//
+//
+// tag = get_le32(pb);
+//
+// if (tag != MKTAG('R', 'I', 'F', 'F'))
+// return -1;
+// get_le32(pb); /* file size */
+// tag = get_le32(pb);
+// if (tag != MKTAG('W', 'A', 'V', 'E'))
+// return -1;
+//
+// size = find_tag(pb, MKTAG('f', 'm', 't', ' '));
+// if (size < 0)
+// return -1;
+// id = get_le16(pb);
+// channels = get_le16(pb);
+// rate = get_le32(pb);
+// bit_rate = get_le32(pb) * 8;
+// get_le16(pb); /* block align */
+// get_le16(pb); /* bits per sample */
+// if (size >= 18) {
+// /* wav_extra_size */
+// extra_size = get_le16(pb);
+// /* skip unused data */
+// url_fseek(pb, size - 18, SEEK_CUR);
+// }
+//
+// size = find_tag(pb, MKTAG('d', 'a', 't', 'a'));
+// if (size < 0)
+// return -1;
+//
+// /* now we are ready: build format streams */
+// st = malloc(sizeof(AVStream));
+// if (!st)
+// return -1;
+// s->nb_streams = 1;
+// s->streams[0] = st;
+//
+// st->id = 0;
+//
+// st->codec.codec_type = CODEC_TYPE_AUDIO;
+// st->codec.codec_tag = id;
+// st->codec.codec_id = codec_get_id(codec_wav_tags, id);
+// st->codec.channels = channels;
+// st->codec.sample_rate = rate;
+//}
+
+class KviSoundThread : public KviThread
+{
+public:
+ KviSoundThread(const QString &szFileName);
+ virtual ~KviSoundThread();
+protected:
+ QString m_szFileName;
+protected:
+ virtual void play();
+ virtual void run();
+};
+
+#ifndef COMPILE_ON_WINDOWS
+ #ifdef COMPILE_OSS_SUPPORT
+ class KviOssSoundThread : public KviSoundThread
+ {
+ public:
+ KviOssSoundThread(const QString &szFileName);
+ virtual ~KviOssSoundThread();
+ protected:
+ virtual void play();
+ };
+
+ #ifdef COMPILE_AUDIOFILE_SUPPORT
+ class KviOssAudiofileSoundThread : public KviSoundThread
+ {
+ public:
+ KviOssAudiofileSoundThread(const QString &szFileName);
+ virtual ~KviOssAudiofileSoundThread();
+ protected:
+ virtual void play();
+ };
+ #endif //COMPILE_AUDIOFILE_SUPPORT
+ #endif //COMPILE_OSS_SUPPORT
+
+ #ifdef COMPILE_ESD_SUPPORT
+ class KviEsdSoundThread : public KviSoundThread
+ {
+ public:
+ KviEsdSoundThread(const QString &szFileName);
+ virtual ~KviEsdSoundThread();
+ protected:
+ virtual void play();
+ };
+ #endif //COMPILE_ESD_SUPPORT
+
+ #ifdef COMPILE_ARTS_SUPPORT
+ class KviArtsSoundThread : public KviSoundThread
+ {
+ public:
+ KviArtsSoundThread(const QString &szFileName);
+ virtual ~KviArtsSoundThread();
+ protected:
+ virtual void play();
+ };
+ #endif //COMPILE_ARTS_SUPPORT
+#endif //!COMPILE_ON_WINDOWS
+
+class KviSoundPlayer;
+
+typedef bool (KviSoundPlayer::*SoundSystemRoutine)(const QString &szFileName);
+
+class KviSoundPlayer : public QObject
+{
+ friend class KviSoundThread;
+ Q_OBJECT
+public:
+ KviSoundPlayer();
+ virtual ~KviSoundPlayer();
+public:
+ bool play(const QString &szFileName);
+ void detectSoundSystem();
+ bool havePlayingSounds();
+ //void getAvailableSoundSystems(KviPointerList<QString> * l);
+ void getAvailableSoundSystems(QStringList * l);
+ bool isMuted() {return KVI_OPTION_BOOL(KviOption_boolMuteAllSounds); };
+ void setMuted(bool muted) {KVI_OPTION_BOOL(KviOption_boolMuteAllSounds)=muted;};
+protected:
+ KviPointerList<KviSoundThread> * m_pThreadList;
+ KviPointerHashTable<QString,SoundSystemRoutine> * m_pSoundSystemDict;
+protected:
+ void registerSoundThread(KviSoundThread * t);
+ void unregisterSoundThread(KviSoundThread * t);
+ virtual bool event(QEvent *e);
+protected:
+#ifdef COMPILE_ON_WINDOWS
+ bool playWinmm(const QString &szFileName);
+#else //!COMPILE_ON_WINDOWS
+ #ifdef COMPILE_OSS_SUPPORT
+ bool playOss(const QString &szFileName);
+ #ifdef COMPILE_AUDIOFILE_SUPPORT
+ bool playOssAudiofile(const QString &szFileName);
+ #endif //COMPILE_AUDIOFILE_SUPPORT
+ #endif //COMPILE_OSS_SUPPORT
+ #ifdef COMPILE_ARTS_SUPPORT
+ bool playArts(const QString &szFileName);
+ #endif //COMPILE_ARTS_SUPPORT
+ #ifdef COMPILE_ESD_SUPPORT
+ bool playEsd(const QString &szFileName);
+ #endif //COMPILE_ESD_SUPPORT
+#endif //!COMPILE_ON_WINDOWS
+ bool playQt(const QString &szFileName);
+ bool playNull(const QString &szFileName);
+};
+
+
+#endif // _KVISND_H_
diff --git a/src/modules/socketspy/Makefile.am b/src/modules/socketspy/Makefile.am
new file mode 100644
index 00000000..7e0a4b6b
--- /dev/null
+++ b/src/modules/socketspy/Makefile.am
@@ -0,0 +1,20 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvisocketspy.la
+
+libkvisocketspy_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvisocketspy_la_SOURCES = libkvisocketspy.cpp socketspywindow.cpp
+libkvisocketspy_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= socketspywindow.h
+
+m_%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+socketspywindow.cpp: m_socketspywindow.moc
diff --git a/src/modules/socketspy/libkvisocketspy.cpp b/src/modules/socketspy/libkvisocketspy.cpp
new file mode 100644
index 00000000..c4076620
--- /dev/null
+++ b/src/modules/socketspy/libkvisocketspy.cpp
@@ -0,0 +1,92 @@
+//
+// File : libkvisocketspy.cpp
+// Creation date : Sun Nov 26 2000 13:05:00 CEST by Szymon Stefanek
+//
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "kvi_module.h"
+
+
+#include "socketspywindow.h"
+
+#include "kvi_frame.h"
+#include "kvi_window.h"
+#include "kvi_locale.h"
+
+#include <qsplitter.h>
+
+KviPointerList<KviSocketSpyWindow> * g_pSocketSpyWindowList = 0;
+
+
+/*
+ @doc: socketspy.open
+ @type:
+ command
+ @title:
+ socketspy.open
+ @short:
+ Opens a SocketSpy window
+ @syntax:
+ socketspy.open
+ @description:
+ Creates a new socketspy window. A SocketSpy window
+ monitors the incoming and outgoing raw data on the
+ irc socket of the current irc context.
+*/
+
+static bool socketspy_kvs_cmd_open(KviKvsModuleCommandCall * c)
+{
+ if(!c->window()->console())return c->context()->errorNoIrcContext();
+ KviSocketSpyWindow *w = new KviSocketSpyWindow(c->window()->frame(),c->window()->console());
+ c->window()->frame()->addWindow(w);
+ return true;
+}
+
+static bool socketspy_module_init(KviModule * m)
+{
+ g_pSocketSpyWindowList = new KviPointerList<KviSocketSpyWindow>;
+ g_pSocketSpyWindowList->setAutoDelete(false);
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"open",socketspy_kvs_cmd_open);
+ return true;
+}
+
+static bool socketspy_module_cleanup(KviModule *m)
+{
+ while(g_pSocketSpyWindowList->first())g_pSocketSpyWindowList->first()->die();
+ delete g_pSocketSpyWindowList;
+ g_pSocketSpyWindowList = 0;
+ return true;
+}
+
+static bool socketspy_module_can_unload(KviModule *m)
+{
+ return (g_pSocketSpyWindowList->isEmpty());
+}
+
+KVIRC_MODULE(
+ "SocketSpy", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2000 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "SocketSpy irc socket traffic monitor",
+ socketspy_module_init,
+ socketspy_module_can_unload,
+ 0,
+ socketspy_module_cleanup
+)
diff --git a/src/modules/socketspy/socketspywindow.cpp b/src/modules/socketspy/socketspywindow.cpp
new file mode 100644
index 00000000..4d59b5aa
--- /dev/null
+++ b/src/modules/socketspy/socketspywindow.cpp
@@ -0,0 +1,125 @@
+//
+// File : socketspywindow.cpp
+// Creation date : Thu Aug 31 2000 15:02:22 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the socketspys of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include "socketspywindow.h"
+
+#include "kvi_iconmanager.h"
+#include "kvi_ircview.h"
+#include "kvi_out.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_console.h"
+
+#include <qsplitter.h>
+//#include "kvi_module.h"
+
+extern KviPointerList<KviSocketSpyWindow> * g_pSocketSpyWindowList;
+
+KviSocketSpyWindow::KviSocketSpyWindow(KviFrame * lpFrm,KviConsole * lpConsole)
+: KviWindow(KVI_WINDOW_TYPE_SOCKETSPY,lpFrm,"socket_spy",lpConsole) , KviIrcDataStreamMonitor(lpConsole->context())
+{
+ g_pSocketSpyWindowList->append(this);
+ #ifdef COMPILE_USE_QT4
+ m_pSplitter = new QSplitter(Qt::Horizontal,this,"splitter");
+ #else
+ m_pSplitter = new QSplitter(QSplitter::Horizontal,this,"splitter");
+#endif
+ m_pIrcView = new KviIrcView(m_pSplitter,lpFrm,this);
+ // Ensure proper focusing
+ //setFocusHandler(m_pIrcView,this);
+}
+
+KviSocketSpyWindow::~KviSocketSpyWindow()
+{
+ g_pSocketSpyWindowList->removeRef(this);
+}
+
+void KviSocketSpyWindow::die()
+{
+ close();
+}
+
+QPixmap * KviSocketSpyWindow::myIconPtr()
+{
+ return g_pIconManager->getSmallIcon(KVI_SMALLICON_SPY);
+}
+
+void KviSocketSpyWindow::resizeEvent(QResizeEvent *e)
+{
+ m_pSplitter->setGeometry(0,0,width(),height());
+}
+
+QSize KviSocketSpyWindow::sizeHint() const
+{
+ return m_pIrcView->sizeHint();
+}
+
+void KviSocketSpyWindow::getBaseLogFileName(KviStr &buffer)
+{
+ buffer.sprintf("SOCKETSPY_%d",console()->ircContextId());
+}
+
+void KviSocketSpyWindow::fillCaptionBuffers()
+{
+ KviQString::sprintf(m_szPlainTextCaption,__tr2qs("Socket Spy [IRC Context %u]"),m_pConsole->ircContextId());
+
+ KviQString::sprintf(m_szHtmlActiveCaption,
+ __tr2qs("<nobr><font color=\"%s\"><b>Socket Spy</b></font> " \
+ "<font color=\"%s\">[IRC Context %u]</font></nobr>"),
+ KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name().ascii(),
+ KVI_OPTION_COLOR(KviOption_colorCaptionTextActive2).name().ascii(),
+ m_pConsole->ircContextId());
+
+ KviQString::sprintf(m_szHtmlInactiveCaption,
+ __tr2qs("<nobr><font color=\"%s\"><b>Socket Spy</b></font> " \
+ "<font color=\"%s\">[IRC Context %u]</font></nobr>"),
+ KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name().ascii(),
+ KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive2).name().ascii(),
+ m_pConsole->ircContextId());
+}
+
+void KviSocketSpyWindow::incomingMessage(const char * message)
+{
+ outputNoFmt(KVI_OUT_SOCKETMESSAGE,console()->decodeText(message));
+}
+
+void KviSocketSpyWindow::outgoingMessage(const char * message,int len)
+{
+ KviStr str(message,len);
+ outputNoFmt(KVI_OUT_RAW,console()->decodeText(str.ptr()));
+}
+
+void KviSocketSpyWindow::connectionInitiated()
+{
+ output(KVI_OUT_SOCKETWARNING,__tr2qs("Socket open"));
+}
+
+void KviSocketSpyWindow::connectionTerminated()
+{
+ output(KVI_OUT_SOCKETWARNING,__tr2qs("Socket closed"));
+}
+
+void KviSocketSpyWindow::applyOptions()
+{
+ m_pIrcView->applyOptions();
+ KviWindow::applyOptions();
+}
+#include "m_socketspywindow.moc"
diff --git a/src/modules/socketspy/socketspywindow.h b/src/modules/socketspy/socketspywindow.h
new file mode 100644
index 00000000..ab516d3e
--- /dev/null
+++ b/src/modules/socketspy/socketspywindow.h
@@ -0,0 +1,53 @@
+#ifndef _SOCKETSPYWINDOW_H_
+#define _SOCKETSPYWINDOW_H_
+//
+// File : socketspywindow.h
+// Creation date : Sun Nov 26 2000 13:13:00 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the socketspys of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_window.h"
+#include "kvi_string.h"
+#include "kvi_ircdatastreammonitor.h"
+
+class KviConsole;
+
+class KviSocketSpyWindow : public KviWindow, public KviIrcDataStreamMonitor
+{
+ Q_OBJECT
+public:
+ KviSocketSpyWindow(KviFrame * lpFrm,KviConsole * lpConsole);
+ ~KviSocketSpyWindow();
+protected:
+ virtual QPixmap * myIconPtr();
+ virtual void fillCaptionBuffers();
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual void getBaseLogFileName(KviStr &buffer);
+ virtual void applyOptions();
+public:
+ virtual QSize sizeHint() const;
+ virtual void incomingMessage(const char * message);
+ // message is NOT null terminated! For proxy connections it might spit out binary data!
+ virtual void outgoingMessage(const char * message,int len);
+ virtual void connectionInitiated();
+ virtual void connectionTerminated();
+ virtual void die();
+};
+
+#endif //_KVI_SOCKETSPYWINDOW_H_
diff --git a/src/modules/spaste/Makefile.am b/src/modules/spaste/Makefile.am
new file mode 100644
index 00000000..f1a6f719
--- /dev/null
+++ b/src/modules/spaste/Makefile.am
@@ -0,0 +1,24 @@
+###############################################################################
+# KVirc IRC client Makestr - 10.03.2002 Juanjo �lvarez <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+-I/usr/include/kde/arts\
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+#ARTS_LD_FLAGS = -DPIC -fPIC
+#ARTS_C_FLAGS = -L/usr/lib -ldl -lartsc -lpthread
+pluglib_LTLIBRARIES = libkvispaste.la
+
+libkvispaste_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvispaste_la_SOURCES = libkvispaste.cpp controller.cpp
+libkvispaste_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+
+noinst_HEADERS= controller.h libkvispaste.h
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+controller.cpp: controller.moc
diff --git a/src/modules/spaste/controller.cpp b/src/modules/spaste/controller.cpp
new file mode 100644
index 00000000..5a132dbd
--- /dev/null
+++ b/src/modules/spaste/controller.cpp
@@ -0,0 +1,121 @@
+// File : controller.cpp
+// Creation date : Thu Apr 30 2002 17:13:12 GMT by Juanjo �lvarez
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Juanjo �lvarez ([email protected])
+// Copyright (C) 2002 Szymon Stefanek ([email protected])
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+
+#include "controller.h"
+#include "kvi_window.h"
+#include "kvi_console.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_app.h"
+#include "kvi_options.h"
+
+#include <qtimer.h>
+#include <qstringlist.h>
+#include <qclipboard.h>
+
+extern KviPointerList<SPasteController> * g_pControllerList;
+
+SPasteController::SPasteController(KviWindow * w,int id)
+ : m_pClipBuff(NULL),m_pFile(NULL),m_pId(id),m_pWindow(w)
+{
+ g_pControllerList->append(this);
+ //m_pWindow = w;
+ m_pTimer = new QTimer(this);
+}
+
+SPasteController::~SPasteController()
+{
+ g_pControllerList->removeRef(this);
+ if(m_pFile)
+ {
+ m_pFile->close();
+ delete m_pFile;
+ }
+ if(m_pTimer)
+ {
+ m_pTimer->stop();
+ delete m_pTimer;
+ }
+ if(m_pClipBuff)
+ delete m_pClipBuff;
+}
+
+bool SPasteController::pasteFileInit(QString &fileName)
+{
+ if(m_pClipBuff)return false; // can't paste a file while pasting the clipboard
+ if(m_pFile)return false; // can't paste two files at a time
+ m_pFile = new QFile(fileName);
+ if(!m_pFile->open(IO_ReadOnly))return false;
+ connect(m_pTimer,SIGNAL(timeout()),this,SLOT(pasteFile()));
+ m_pTimer->start(KVI_OPTION_UINT(KviOption_uintPasteDelay));
+ return true;
+}
+
+bool SPasteController::pasteClipboardInit(void)
+{
+ if(m_pFile)return false; // can't paste clipboard while pasting a file
+ QString tmp(g_pApp->clipboard()->text());
+ if(m_pClipBuff)
+ {
+ (*m_pClipBuff) += QStringList::split("\n",tmp,true);
+ } else {
+ m_pClipBuff = new QStringList(QStringList::split("\n",tmp,true));
+ m_clipBuffIterator = m_pClipBuff->begin();
+ }
+ connect(m_pTimer,SIGNAL(timeout()),this,SLOT(pasteClipboard()));
+ m_pTimer->start(KVI_OPTION_UINT(KviOption_uintPasteDelay));
+ return true;
+}
+
+void SPasteController::pasteFile(void)
+{
+#ifndef COMPILE_USE_QT4
+ QString line;
+ if(m_pFile->readLine(line,999) != -1)
+ {
+ if(line.isEmpty())
+ line = QChar(KVI_TEXT_RESET);
+ if( (!g_pApp->windowExists(m_pWindow)) || m_pWindow->console()->isNotConnected() )
+ {
+ m_pFile->close();
+ delete this;
+ } else m_pWindow->ownMessage(line.ascii());
+ } else { //File finished
+ m_pFile->close();
+ delete this;
+ }
+#endif
+}
+
+void SPasteController::pasteClipboard(void)
+{
+ if(m_clipBuffIterator != m_pClipBuff->end())
+ {
+ if((!g_pApp->windowExists(m_pWindow)) || m_pWindow->console()->isNotConnected() )
+ delete this;
+ else {
+ if((*m_clipBuffIterator).isEmpty())(*m_clipBuffIterator) = QChar(KVI_TEXT_RESET);
+ m_pWindow->ownMessage((*m_clipBuffIterator).ascii()); // <-- not good :/
+ ++m_clipBuffIterator;
+ }
+ } else delete this;//Clipboard finished
+}
+
+#include "controller.moc"
diff --git a/src/modules/spaste/controller.h b/src/modules/spaste/controller.h
new file mode 100644
index 00000000..55aeeaab
--- /dev/null
+++ b/src/modules/spaste/controller.h
@@ -0,0 +1,59 @@
+// File : controller.h
+// Creation date : Thu Apr 30 2002 17:13:12 GMT by Juanjo �lvarez
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Juanjo �lvarez ([email protected])
+// Copyright (C) 2002 Szymon Stefanek ([email protected])
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+
+#ifndef SPASTE_CONTROLLER_H
+#define SPASTE_CONTROLLER_H
+
+#include "kvi_window.h"
+#include "kvi_string.h"
+
+#include <qobject.h>
+#include <qstringlist.h>
+#include <qfile.h>
+
+class SPasteController : public QObject
+{
+ Q_OBJECT
+public:
+ SPasteController(KviWindow * w,int id);
+ ~SPasteController();
+
+ //bool pasteFileInit(KviStr * fileName);
+ bool pasteFileInit(QString &fileName);
+ bool pasteClipboardInit(void);
+ int getId(void){return m_pId;};
+ KviWindow * window(void){return m_pWindow;};
+ //void stop(void);
+protected slots:
+ void pasteFile(void);
+ void pasteClipboard(void);
+
+private:
+ QStringList *m_pClipBuff;
+ QFile *m_pFile;
+ int m_pId;
+ KviWindow *m_pWindow;
+ QTimer *m_pTimer;
+ QStringList::Iterator m_clipBuffIterator;
+};
+
+#endif //SPASTE_CONTROLLER_H
+
diff --git a/src/modules/spaste/libkvispaste.cpp b/src/modules/spaste/libkvispaste.cpp
new file mode 100644
index 00000000..6b310324
--- /dev/null
+++ b/src/modules/spaste/libkvispaste.cpp
@@ -0,0 +1,346 @@
+// File : libkvispaste.cpp
+// Creation date : Thu Dec 27 2002 17:13:12 GMT by Juanjo �varez
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Juanjo �varez ([email protected])
+// Copyright (C) 2002 Szymon Stefanek ([email protected])
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "libkvispaste.h"
+#include "controller.h"
+
+#include "kvi_module.h"
+
+#include "kvi_fileutils.h"
+#include "kvi_app.h"
+#include "kvi_locale.h"
+
+#include "kvi_console.h"
+#include "kvi_options.h"
+#include "kvi_out.h"
+
+#include <qfile.h>
+#include <qclipboard.h>
+
+#ifndef COMPILE_ON_WINDOWS
+ #include <unistd.h>
+#endif
+
+KviPointerList<SPasteController> * g_pControllerList = 0;
+int ctrlId = 0;
+
+static SPasteController * spaste_find_controller(KviWindow * w)
+{
+ for(SPasteController * spc = g_pControllerList->first();spc;spc = g_pControllerList->next())
+ {
+ if(spc->window() == w)return spc;
+ }
+ return 0;
+}
+
+static KviWindow * spaste_kvs_find_window(QString &win, KviKvsModuleCommandCall * c)
+{
+ KviWindow * w;
+ if(!win.isEmpty())w = g_pApp->findWindow(win);
+ else w = c->window();
+ if(!w)
+ {
+ c->warning(__tr("Window with ID '%Q' not found"),&win);
+ return 0;
+ }
+ if((w->type() == KVI_WINDOW_TYPE_CHANNEL) || (w->type() == KVI_WINDOW_TYPE_QUERY) || (w->type() == KVI_WINDOW_TYPE_DCCCHAT))return w;
+ c->warning(__tr2qs("The specified window (%Q) is not a channel/query/DCC chat"),&win);
+ return 0;
+}
+//-------------------------------------------------
+/*
+ @doc: spaste.file
+ @type:
+ command
+ @title:
+ spaste.file
+ @short:
+ Sends the contents of a file to a window, with a delay between each line
+ @syntax:
+ spaste.file <filename:string> [window:string]
+ @description:
+ Sends the contents of a file to a conversation window doing a pause between each line. [br]
+ the optional window parameter must be a channel, query or DCC chat window, if [br]
+ no window is specified the text will be send to the current window.
+ @seealso:
+ [cmd]spaste.clipboard[/cmd],
+ [cmd]spaste.stop[/cmd],
+ [cmd]spaste.list[/cmd],
+ [cmd]spaste.setdelay[/cmd]
+*/
+//-------------------------------------------
+// spaste.file
+//-------------------------------------------
+
+static bool spaste_kvs_cmd_file(KviKvsModuleCommandCall * c)
+{
+ QString szFile,szWindow;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("file name",KVS_PT_STRING,0,szFile)
+ KVSM_PARAMETER("window",KVS_PT_STRING,KVS_PF_OPTIONAL,szWindow)
+ KVSM_PARAMETERS_END(c)
+
+ KviWindow * window = spaste_kvs_find_window(szWindow,c);
+ if( (!window) || window->console()->isNotConnected())return false;
+
+ if(szFile.isEmpty() || (!KviFileUtils::fileExists(szFile.ascii())))
+ {
+ c->warning(__tr2qs("File not found or empty"));
+ return false;
+ }
+
+ QFile tmp(szFile);
+ if(!tmp.open(IO_ReadOnly)) {
+ c->warning(__tr2qs("I can't open that file"));
+ return false;
+ }
+ tmp.close();
+
+ SPasteController * controller = spaste_find_controller(window);
+ if(!controller)controller = new SPasteController(window,++ctrlId);
+ if(!controller->pasteFileInit(szFile)) {
+ c->warning(__tr2qs("Could not paste file"));
+ return false;
+ }
+ return true;
+}
+
+
+/*
+ @doc: spaste.clipboard
+ @type:
+ command
+ @title:
+ spaste.clipboard
+ @short:
+ Sends the contents of the clipboard to a window, pausing between each line
+ @syntax:
+ spaste.clipboard [window:string]
+ @description:
+ Sends the contents of the clipboard to a conversation window, with a delay between each line. [br]
+ the optional window parameter must be a channel, query or DCC chat window. [br]
+ If no window is specified, the text will be sent to the current window.
+ @seealso:
+ [cmd]spaste.file[/cmd],
+ [cmd]spaste.stop[/cmd],
+ [cmd]spaste.list[/cmd],
+ [cmd]spaste.setdelay[/cmd]
+*/
+//-------------------------------------------------
+// spaste.clipboard
+//-------------------------------------------------
+
+static bool spaste_kvs_cmd_clipboard(KviKvsModuleCommandCall * c)
+{
+ QString szWindow;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window",KVS_PT_STRING,KVS_PF_OPTIONAL,szWindow)
+ KVSM_PARAMETERS_END(c)
+ KviWindow * window = spaste_kvs_find_window(szWindow,c);
+ if( (!window) || window->console()->isNotConnected())return false;
+
+ SPasteController * controller = spaste_find_controller(window);
+ if(!controller)controller = new SPasteController(window,++ctrlId);
+ controller->pasteClipboardInit();
+ return true;
+}
+
+/*
+ @doc: spaste.stop
+ @type:
+ command
+ @title:
+ spaste.stop
+ @short:
+ Stops one or more slow-paste process.
+ @syntax:
+ spaste.stop [-a] [id:integer]
+ @description:
+ This commands stop one or more slow-paste processes. It can operate in three ways. The first, [br]
+ without any parameter or switch, stops all slow-paste processes running in the same window [br]
+ as the command. The second, using the -a switch, stops all slow paste processes running [br]
+ on all windows. The third form, without the switch and specifying a numerical slow paste process ID [br]
+ (which you can obtain with the [cmd]spaste.list[/cmd] command), stops only that process ID.
+ @switches:
+ !sw: -a | --all
+ Stops all slow paste processes running
+ @seealso:
+ [cmd]spaste.clipboard[/cmd],
+ [cmd]spaste.file[/cmd],
+ [cmd]spaste.list[/cmd],
+ [cmd]spaste.setdelay[/cmd]
+
+*/
+//--------------------------------------------------
+// spaste.stop
+//--------------------------------------------------
+
+static bool spaste_kvs_cmd_stop(KviKvsModuleCommandCall * c)
+{
+ kvs_int_t iId=0;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("delay",KVS_PT_UNSIGNEDINTEGER,KVS_PF_OPTIONAL,iId)
+ KVSM_PARAMETERS_END(c)
+
+ if(c->hasSwitch('a',"all")) //Delete all spaste's
+ {
+ while(g_pControllerList->first()) delete g_pControllerList->first();
+ return true;
+ } else {
+ KviPointerListIterator<SPasteController> it(*g_pControllerList);
+ SPasteController *item;
+
+ if(!iId) //Delete all spaste's from the current window
+ {
+ if((c->window()->type() != KVI_WINDOW_TYPE_CHANNEL) && (c->window()->type() != KVI_WINDOW_TYPE_QUERY) && (c->window()->type() != KVI_WINDOW_TYPE_DCCCHAT))
+ {
+ QString szWinId = c->window()->id();
+ c->warning(__tr2qs("The specified window (%Q) is not a channel/query/dcc"),&szWinId);
+ return false;
+ } else {
+ while( (item = it.current()) != 0)
+ {
+ ++it;
+ if(kvi_strEqualCS(item->window()->id(),c->window()->id()))delete item;
+ }
+ }
+ } else //Delete the spaste with the given id
+ {
+ while( (item = it.current()) != 0)
+ {
+ ++it;
+ if(item->getId() == iId)delete item;
+ }
+ }
+ return true;
+ }
+}
+
+/*
+ @doc: spaste.list
+ @type:
+ command
+ @title:
+ spaste.list
+ @short:
+ Lists all the running spaste processes.
+ @syntax:
+ spaste.list
+ @description:
+ This command will list in the window where it is executed all the current slow-paste [br]
+ processes, their identification numbers, and the windows where they are running. [br]
+ @seealso:
+ [cmd]spaste.clipboard[/cmd],
+ [cmd]spaste.file[/cmd],
+ [cmd]spaste.stop[/cmd],
+ [cmd]spaste.setdelay[/cmd]
+*/
+//--------------------------------------------------
+// spaste.list
+//--------------------------------------------------
+
+static bool spaste_kvs_cmd_list(KviKvsModuleCommandCall * c)
+{
+ KviPointerListIterator<SPasteController> it(*g_pControllerList);
+ SPasteController *item;
+
+ while( (item = it.current()) != 0)
+ {
+ ++it;
+ QString szWinId = item->window()->id();
+ c->window()->output(KVI_OUT_NONE,__tr2qs("Slow-paste ID:%d Window:%Q"),item->getId(),&szWinId);
+ }
+ return true;
+}
+
+/*
+ @doc: spaste.setdelay
+ @type:
+ command
+ @title:
+ spaste.setdelay
+ @short:
+ Sets the delay time in miliseconds for the spaste module command delay
+ @syntax:
+ spaste.setdelay <time_in_msecs:integer>
+ @description:
+ Sets the delay time in milliseconds for the spaste module command delay.
+ @seealso:
+ [cmd]spaste.clipboard[/cmd],
+ [cmd]spaste.file[/cmd],
+ [cmd]spaste.stop[/cmd],
+ [cmd]spaste.list[/cmd]
+*/
+//-------------------------------------------------
+// spaste.setdelay
+//-------------------------------------------------
+
+
+static bool spaste_kvs_cmd_setdelay(KviKvsModuleCommandCall * c)
+{
+ kvs_int_t delay;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("delay",KVS_PT_INTEGER,0,delay)
+ KVSM_PARAMETERS_END(c)
+ KVI_OPTION_UINT(KviOption_uintPasteDelay) = delay;
+ return true;
+}
+
+//-------------------------------------------------
+static bool spaste_module_init(KviModule * m)
+{
+ g_pControllerList = new KviPointerList<SPasteController>;
+ g_pControllerList->setAutoDelete(false);
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"file",spaste_kvs_cmd_file);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"clipboard",spaste_kvs_cmd_clipboard);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"setdelay",spaste_kvs_cmd_setdelay);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"stop",spaste_kvs_cmd_stop);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"list",spaste_kvs_cmd_list);
+ return true;
+}
+//-------------------------------------------------
+static bool spaste_module_cleanup(KviModule *m)
+{
+ while(g_pControllerList->first()) delete g_pControllerList->first();
+ delete g_pControllerList;
+ g_pControllerList = 0;
+
+ return true;
+}
+//-------------------------------------------------
+static bool spaste_module_can_unload(KviModule *m)
+{
+ return (g_pControllerList->isEmpty());
+}
+//-------------------------------------------------
+KVIRC_MODULE(
+ "SPaste", // module name
+ "1.0.0", // module version
+ " (C) 2002 Juanjo Alvarez ([email protected])", // author & (C)
+ "Delayed paste commands",
+ spaste_module_init,
+ spaste_module_can_unload,
+ 0,
+ spaste_module_cleanup
+)
diff --git a/src/modules/spaste/libkvispaste.h b/src/modules/spaste/libkvispaste.h
new file mode 100644
index 00000000..53724c2d
--- /dev/null
+++ b/src/modules/spaste/libkvispaste.h
@@ -0,0 +1,13 @@
+#ifndef KVISPASTE_H
+#define KVISPASTE_H
+
+#include "kvi_window.h"
+
+typedef struct _SPasteThreadData {
+ QString * strData;
+ KviWindow * win;
+} SPasteThreadData;
+
+
+
+#endif
diff --git a/src/modules/str/Makefile.am b/src/modules/str/Makefile.am
new file mode 100644
index 00000000..7fe7e93a
--- /dev/null
+++ b/src/modules/str/Makefile.am
@@ -0,0 +1,18 @@
+###############################################################################
+# KVirc IRC client Makestr - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvistr.la
+
+libkvistr_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvistr_la_SOURCES = libkvistr.cpp
+libkvistr_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+# noinst_HEADERS=
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/str/libkvistr.cpp b/src/modules/str/libkvistr.cpp
new file mode 100644
index 00000000..58549f57
--- /dev/null
+++ b/src/modules/str/libkvistr.cpp
@@ -0,0 +1,2330 @@
+//=============================================================================
+//
+// File : libkvistr.cpp
+// Creation date : Thu Dec 27 2001 17:13:12 GMT by Szymon Stefanek
+//
+// This str is part of the KVirc irc client distribution
+// Copyright (C) 2001-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+//#warning: FIXME: Incomplete documentation ('seealso', 'example', etc)
+
+#include "kvi_module.h"
+
+#include "kvi_locale.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_qstring.h"
+#include "kvi_debug.h"
+#include "kvi_settings.h"
+#include "kvi_malloc.h"
+
+#include "kvi_kvs_arraycast.h"
+#include <qregexp.h>
+#include <qclipboard.h>
+
+#ifdef COMPILE_SSL_SUPPORT
+ #include <openssl/evp.h>
+#endif
+
+/*
+ @doc: str.section
+ @type:
+ function
+ @title:
+ $str.section
+ @short:
+ Returns a section of the string.
+ @syntax:
+ <string> $str.section(<string_to_split:string>,<separator:string>,<pos_from:int>,<pos_to:int>)
+ @description:
+ Returns a section of the string.
+ The <string_to_split> is treated as a sequence of fields separated by <separator>.[br]
+ The returned string consists of the fields from position start <pos_from> to position end <pos_to>.[br]
+ Fields are numbered 0, 1, 2, etc., counting from the left, and -1, -2, etc., counting from right to left.[br]
+ @examples:
+ [example]
+ %s = $str.section( "forename**middlename**surname**phone","**", 2, 2 );
+ %s is "surname".
+ [/example]
+*/
+
+static bool str_kvs_fnc_section(KviKvsModuleFunctionCall * c)
+{
+ QString szString, szSeparator,szSplittedString;
+ kvs_int_t iPosFrom, iPosTo;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("string_to_split",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("separator",KVS_PT_NONEMPTYSTRING,0,szSeparator)
+ KVSM_PARAMETER("pos_from",KVS_PT_INT,0,iPosFrom)
+ KVSM_PARAMETER("pos_to",KVS_PT_INT,0,iPosTo)
+ KVSM_PARAMETERS_END(c)
+ c->returnValue()->setString(szString.section(szSeparator,iPosFrom,iPosTo));
+ return true;
+}
+
+/*
+ @doc: str.fromClipboard
+ @type:
+ function
+ @title:
+ $str.fromClipboard
+ @short:
+ Returns a string from clipboard.
+ @syntax:
+ <string> $str.fromClipboard()
+ @description:
+ Returns clipboard's contents.
+ @examples:
+ [example]
+ %s = $str.fromClipboard();
+ [/example]
+ @seealso:
+ [cmd]str.toClipboard[/cmd]
+*/
+
+static bool str_kvs_fnc_fromclipboard(KviKvsModuleFunctionCall * c)
+{
+ QString szString;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETERS_END(c)
+ QClipboard *cb = QApplication::clipboard();
+ szString = cb->text(QClipboard::Clipboard);
+ c->returnValue()->setString(szString);
+ return true;
+}
+
+/*
+ @doc: system.toClipboard
+ @type:
+ command
+ @title:
+ system.toClipboard
+ @keyterms:
+ OS clipboard
+ @short:
+ Sets the OS clipboard contents
+ @syntax:
+ system.setenv <value:string>
+ @description:
+ Sets the OS clipboard contents
+ @seealso:
+ [fnc]$str.fromClipboard[/fnc]
+*/
+
+static bool str_kvs_cmd_toClipboard(KviKvsModuleCommandCall * c)
+{
+ QString szValue;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("value",KVS_PT_STRING,KVS_PF_OPTIONAL,szValue)
+ KVSM_PARAMETERS_END(c)
+ QClipboard *cb = QApplication::clipboard();
+ cb->setText(szValue, QClipboard::Clipboard );
+ return true;
+}
+
+/*
+ @doc: str.len
+ @type:
+ function
+ @title:
+ $str.len
+ @short:
+ Returns the lenght of the given string
+ @syntax:
+ <uint> $str.len(<data:string>)
+ @description:
+ Returns the lenght (that is, number of characters) of the given string.
+ This function is internally aliased to [fnc]$str.length[/fnc]() too.
+*/
+
+/*
+ @doc: str.length
+ @type:
+ function
+ @title:
+ $str.length
+ @short:
+ Returns the lenght of the given string
+ @syntax:
+ <uint> $str.length(<data:string>)
+ @description:
+ Returns the lenght (that is, number of characters) of the given string.
+ This function is internally aliased to [fnc]$str.len[/fnc]() too.
+*/
+
+static bool str_kvs_fnc_len(KviKvsModuleFunctionCall * c)
+{
+ QString szString;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("data",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETERS_END(c)
+ c->returnValue()->setInteger(szString.length());
+ return true;
+}
+
+/*
+ @doc: str.lowcase
+ @type:
+ function
+ @title:
+ $str.lowcase
+ @short:
+ Returns the given string with all characters turned to lower case
+ @syntax:
+ <string> $str.lowcase(<string_to_convert:string>)
+ @description:
+ Returns the <string_to_convert> with all characters turned to lower case.
+ Warning: this function uses ISO-8859-1 locale to make the case translation.
+ If you want to use a locale aware translation mapping then please
+ use localelowcase.
+*/
+
+static bool str_kvs_fnc_lowcase(KviKvsModuleFunctionCall * c)
+{
+ QString szString;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("string_to_convert",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETERS_END(c)
+ c->returnValue()->setString(KviQString::lowerISO88591(szString));
+ return true;
+}
+/*
+ @doc: str.upcase
+ @type:
+ function
+ @title:
+ $str.upcase
+ @short:
+ Returns the given string with all characters turned to upper case
+ @syntax:
+ <string> $str.upcase(<string_to_convert:string>)
+ @description:
+ Returns the given <string_to_convert> with all characters turned to lower case.
+ Warning: this function uses ISO-8859-1 locale to make the case translation.
+ If you want to use a locale aware translation mapping then please
+ use $str.localeupcase.
+*/
+
+static bool str_kvs_fnc_upcase(KviKvsModuleFunctionCall * c)
+{
+ QString szString;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("string_to_convert",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETERS_END(c)
+ c->returnValue()->setString(KviQString::upperISO88591(szString));
+ return true;
+}
+/*
+ @doc: str.localelowcase
+ @type:
+ function
+ @title:
+ $str.localelowcase
+ @short:
+ Returns the given string with all characters turned to lower case
+ @syntax:
+ <string> $str.localelowcase(<string_to_convert:string>)
+ @description:
+ Returns the given <string_to_convert> with all characters turned to lower case.
+ Warning: this function is locale aware and it may produce unexpected
+ results in locales that contain strange exceptions (like Turkish which maps
+ i to Y with an accent). For IRC interaction you might prefer using $str.lowcase
+*/
+
+static bool str_kvs_fnc_localelowcase(KviKvsModuleFunctionCall * c)
+{
+ QString szString;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("string_to_convert",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETERS_END(c)
+ c->returnValue()->setString(szString.lower());
+ return true;
+}
+
+/*
+ @doc: str.localeupcase
+ @type:
+ function
+ @title:
+ $str.localeupcase
+ @short:
+ Returns the given string with all characters turned to upper case
+ @syntax:
+ <string> $str.localeupcase(<string_to_convert:string>)
+ @description:
+ Returns the given <string_to_convert> with all characters turned to lower case.
+ Warning: this function is locale aware and it may produce unexpected
+ results in locales that contain strange exceptions (like Turkish which maps
+ i to Y with an accent). For IRC interaction you might prefer using $str.upcase
+*/
+
+static bool str_kvs_fnc_localeupcase(KviKvsModuleFunctionCall * c)
+{
+ QString szString;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("string_to_convert",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETERS_END(c)
+ c->returnValue()->setString(szString.upper());
+ return true;
+}
+
+/*
+ @doc: str.isnumber
+ @type:
+ function
+ @title:
+ $str.isnumber
+ @short:
+ Returns 1 if the given string represents a number
+ @syntax:
+ <bool> $str.isnumber(<givenstring:string>)
+ @description:
+ Returns 1 if the given string represents a number, 0 if not.
+*/
+
+static bool str_kvs_fnc_isnumber(KviKvsModuleFunctionCall * c)
+{
+ KviKvsVariant * v;
+ KviKvsNumber num;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("givenstring",KVS_PT_VARIANT,0,v)
+ KVSM_PARAMETERS_END(c)
+ c->returnValue()->setBoolean(v->asNumber(num));
+ return true;
+}
+
+
+/*
+ @doc: str.isunsignednumber
+ @type:
+ function
+ @title:
+ $str.isunsignednumber
+ @short:
+ Returns 1 if the given string represents an unsigned number
+ @syntax:
+ <bool> $str.isunsignednumber(<givenstring:string>)
+ @description:
+ Returns 1 if the given string represents an unsigned number, 0 if not.
+*/
+
+static bool str_kvs_fnc_isunsignednumber(KviKvsModuleFunctionCall * c)
+{
+ KviKvsVariant * v;
+ KviKvsNumber nNum;
+ bool bRet;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("givenstring",KVS_PT_VARIANT,0,v)
+ KVSM_PARAMETERS_END(c)
+ if(!v->asNumber(nNum)) bRet = false;
+ else
+ {
+ if(nNum.isInteger())
+ {
+ bRet = nNum.integer() >= 0;
+ }
+ else
+ {
+ bRet = nNum.real() >= 0.0;
+ }
+ }
+ c->returnValue()->setBoolean(bRet);
+ return true;
+}
+
+/*
+ @doc: str.isempty
+ @type:
+ function
+ @title:
+ $str.isempty
+ @short:
+ Returns 1 if the given string don't have any character.
+ @syntax:
+ <string> $str.isEmpty(<givenstring:string>)
+ @description:
+ Returns 1 if the given string don't have any character (that is, is empty).
+ This function is almost useless since it is equivalent to the
+ comparison with an empty string...
+*/
+
+static bool str_kvs_fnc_isempty(KviKvsModuleFunctionCall * c)
+{
+ QString v;
+ bool bRet;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("datastring",KVS_PT_STRING,0,v)
+ KVSM_PARAMETERS_END(c)
+ if(v.isEmpty()) bRet = true;
+ else bRet = false;
+ c->returnValue()->setBoolean(bRet);
+ return true;
+}
+
+/*
+ @doc: str.contains
+ @type:
+ function
+ @title:
+ $str.contains
+ @short:
+ Returns 1 if the first parameter contains the second
+ @syntax:
+ <bool> $str.contains(<container:string>,<tofind:string>)
+ @description:
+ Returns 1 if the first string parameter contains the second string parameter.
+ This function is case sensitive.
+ @seealso:
+ [fnc]$str.containsnocase[/fnc]()
+*/
+
+
+static bool str_kvs_fnc_contains(KviKvsModuleFunctionCall * c)
+{
+ QString szString,szSubString;
+ bool bIs;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("container",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("tofind",KVS_PT_STRING,0,szSubString)
+ KVSM_PARAMETERS_END(c)
+ bIs = szString.find(szSubString) != -1;
+ c->returnValue()->setBoolean(bIs);
+ return true;
+}
+
+/*
+ @doc: str.containsnocase
+ @type:
+ function
+ @title:
+ $str.containsnocase
+ @short:
+ Returns 1 if the first parameter contains the second, case insensitive
+ @syntax:
+ <bool> $str.containsnocase(<container:string>,<tofind:string>)
+ @description:
+ Returns 1 if the first string parameter contains the second string parameter
+ whithout taking in consideration the case of the characters in the string.
+ @seealso:
+ [fnc]$str.contains[/fnc]
+*/
+
+static bool str_kvs_fnc_containsnocase(KviKvsModuleFunctionCall * c)
+{
+ QString szString,szSubString;
+ bool bIs;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("container",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("tofind",KVS_PT_STRING,0,szSubString)
+ KVSM_PARAMETERS_END(c)
+ bIs = szString.find(szSubString,0,false) != -1;
+ c->returnValue()->setBoolean(bIs);
+ return true;
+}
+
+/*
+ @doc: str.equal
+ @type:
+ function
+ @title:
+ $str.equal
+ @short:
+ Returns 1 if the two string parameters are equal
+ @syntax:
+ <bool> $str.equal(<fromcompare:string>,<tocompare:string>)
+ @description:
+ Returns 1 if the two string parameters are equal. This function is case sensitive.
+ @seealso:
+ [fnc]$str.equalnocase[/fnc]()
+*/
+
+static bool str_kvs_fnc_equal(KviKvsModuleFunctionCall * c)
+{
+ QString szString,szString2;
+ bool bIs;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("fromcompare",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("tocompare",KVS_PT_STRING,0,szString2)
+ KVSM_PARAMETERS_END(c)
+ bIs = KviQString::equalCS(szString,szString2);
+ c->returnValue()->setBoolean(bIs);
+ return true;
+}
+/*
+ @doc: str.equalnocase
+ @type:
+ function
+ @title:
+ $str.equalnocase
+ @short:
+ Returns 1 if the two string parameters are equal, case insensitive
+ @syntax:
+ <bool> $str.equalnocase(<fromcompare:string>,<tocompare:string>)
+ @description:
+ Returns 1 if the two strngs parameters are equal, without taking the case of the
+ characters in consideration.
+ @seealso:
+ [fnc]$str.equal[/fnc]()
+*/
+
+static bool str_kvs_fnc_equalnocase(KviKvsModuleFunctionCall * c)
+{
+ QString szString,szString2;
+ bool bIs;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("fromcompare",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("tocompare",KVS_PT_STRING,0,szString2)
+ KVSM_PARAMETERS_END(c)
+ bIs = KviQString::equalCI(szString,szString2);
+ c->returnValue()->setBoolean(bIs);
+ return true;
+}
+
+/*
+ @doc: str.cmp
+ @type:
+ function
+ @title:
+ $str.cmp
+ @short:
+ Compare two strings alphabetically
+ @syntax:
+ <bool> $str.cmp(<fromcompare:string>,<tocompare:string>)
+ @description:
+ This function compares two strings alphabetically. If the first string is 'greater'
+ than the second, it will return a positive number, a negative number is the second is
+ greater and 0 if the two strings are equal.
+ @seealso:
+ [fnc]$str.cmpnocase[/fnc]()
+*/
+
+static bool str_kvs_fnc_cmp(KviKvsModuleFunctionCall * c)
+{
+ QString szString,szString2;
+ int iCmp;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("fromcompare",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("tocompare",KVS_PT_STRING,0,szString2)
+ KVSM_PARAMETERS_END(c)
+ iCmp = KviQString::cmpCS(szString,szString2);
+ c->returnValue()->setInteger(iCmp);
+ return true;
+}
+
+/*
+ @doc: str.cmpnocase
+ @type:
+ function
+ @title:
+ $str.cmpnocase
+ @short:
+ Compare two strings alphabetically, case insensitive.
+ @syntax:
+ <bool> $str.cmpnocase(<fromcompare:string>,<tocompare:string>)
+ @description:
+ This function compares two strings alphabetically. If the first string is 'greater'
+ than the second, it will return a positive number, a negative number is the second is
+ greater and 0 if the two strings are equal. This function is case insensitive.
+ @seealso:
+ [fnc]$str.cmp[/fnc]()
+*/
+static bool str_kvs_fnc_cmpnocase(KviKvsModuleFunctionCall * c)
+{
+ QString szString,szString2;
+ int iCmp;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("fromcompare",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("tocompare",KVS_PT_STRING,0,szString2)
+ KVSM_PARAMETERS_END(c)
+ iCmp = KviQString::cmpCI(szString,szString2);
+ c->returnValue()->setInteger(iCmp);
+ return true;
+}
+
+/*
+ @doc: str.find
+ @type:
+ function
+ @title:
+ $str.find
+ @short:
+ Find the index of the nth ocurrence of a substring in a string
+ @syntax:
+ <int> $str.find(<findIn:string>,<tofind:string>[,ocurrence:int])
+ @description:
+ This function search in the string given as the first parameter for the string
+ given as his second parameter, and will return the index where the nth ocurrence
+ given as the third parameter is found or -1 if it's not located. It starts
+ counting at 0. If occurence is not specified then the first occurence
+ is searched. WARNING: The occurente number starts from 1! (Yes, that's a bug, but
+ for backward compatibility it must remain as it is :( ).[br]
+ FIXME: The semantics of this function are totally broken :(
+*/
+
+static bool str_kvs_fnc_find(KviKvsModuleFunctionCall * c)
+{
+ QString szFindIn, szToFind;
+ kvs_int_t iOcurence;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("findIn",KVS_PT_STRING,0,szFindIn)
+ KVSM_PARAMETER("tofind",KVS_PT_STRING,0,szToFind)
+ KVSM_PARAMETER("ocurrence",KVS_PT_INTEGER,KVS_PF_OPTIONAL,iOcurence)
+ KVSM_PARAMETERS_END(c)
+ int pos = 1;
+ if(iOcurence!=0)
+ pos = iOcurence;
+ if(pos<1)
+ {
+ c->returnValue()->setInteger(-1);
+ return true;
+ }
+ if(szFindIn.isEmpty())
+ {
+ c->returnValue()->setInteger(-1);
+ return true;
+ }
+ if(szToFind.isEmpty())
+ {
+ c->returnValue()->setInteger(-1);
+ return true;
+ }
+ int cnt = 1;
+ int idx;
+ int totalIdx = 0;
+
+ while (cnt<=pos)
+ {
+ idx = szFindIn.right(szFindIn.length() - totalIdx).find(szToFind);
+ if(idx == -1)
+ {
+ c->returnValue()->setInteger(-1);
+ return true;
+ }
+ //Idx only gives the index until the pos _before_ the matched string so if this is
+ //not the match we want (cont != 0) we skip it
+ totalIdx += (idx + (cnt == pos ? 0 : szToFind.length()));
+ ++cnt;
+ }
+ c->returnValue()->setInteger(totalIdx);
+ return true;
+}
+/*
+ @doc: str.findfirst
+ @type:
+ function
+ @title:
+ $str.findfirst
+ @short:
+ Find the index of a substring in a string
+ @syntax:
+ <int> $str.findfirst(<findIn:string>,<toFind:string>)
+ @description:
+ This function search in the string given as the first parameter for the string
+ given as his second parameter, and will return the index where is first located or
+ -1 if it's not located. It starts counting at 0.
+*/
+
+static bool str_kvs_fnc_findfirst(KviKvsModuleFunctionCall * c)
+{
+ QString szString,szString2;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("findIn",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("toFind",KVS_PT_STRING,0,szString2)
+ KVSM_PARAMETERS_END(c)
+ c->returnValue()->setInteger(szString.find(szString2));
+ return true;
+}
+/*
+ @doc: str.findfirstnocase
+ @type:
+ function
+ @title:
+ $str.findfirstnocase
+ @short:
+ Find the index of a substring in a string, case insensitive
+ @syntax:
+ <int> $str.findfirstnocase(<findIn:string>,<toFind:string>)
+ @description:
+ This function search in the string given as the first parameter for the string
+ given as his second parameter, and will return the index where is first located or
+ -1 if it's not located. This function is case insensitive.
+*/
+
+static bool str_kvs_fnc_findfirstnocase(KviKvsModuleFunctionCall * c)
+{
+ QString szString,szString2;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("findIn",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("toFind",KVS_PT_STRING,0,szString2)
+ KVSM_PARAMETERS_END(c)
+ c->returnValue()->setInteger(szString.find(szString2,0,false));
+ return true;
+}
+/*
+ @doc: str.findlast
+ @type:
+ function
+ @title:
+ $str.findlast
+ @short:
+ Find the last index of a substring in a string
+ @syntax:
+ <int> $str.findlast(<findIn:string>,<toFind:string>)
+ @description:
+ This function search in the string given as the first parameter for the string
+ given as his second parameter, and will return the index where is last located or
+ -1 if it's not located.
+*/
+
+static bool str_kvs_fnc_findlast(KviKvsModuleFunctionCall * c)
+{
+ QString szString,szString2;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("findIn",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("toFind",KVS_PT_STRING,0,szString2)
+ KVSM_PARAMETERS_END(c)
+ c->returnValue()->setInteger(szString.findRev(szString2));
+ return true;
+}
+/*
+ @doc: str.findlastnocase
+ @type:
+ function
+ @title:
+ $str.findlastnocase
+ @short:
+ Find the last index of a substring in a string, case insensitive
+ @syntax:
+ <int> $str.findlastnocase(<findIn:string>,<toFind:string>)
+ @description:
+ This function search in the string given as the first parameter for the string
+ given as his second parameter, and will return the index where is last located or
+ -1 if it's not located. This function is case insensitive.
+*/
+
+static bool str_kvs_fnc_findlastnocase(KviKvsModuleFunctionCall * c)
+{
+ QString szString,szString2;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("findIn",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("toFind",KVS_PT_STRING,0,szString2)
+ KVSM_PARAMETERS_END(c)
+ c->returnValue()->setInteger(szString.findRev(szString2,-1,false));
+ return true;
+}
+/*
+ @doc: str.left
+ @type:
+ function
+ @title:
+ $str.left
+ @short:
+ Returns a substring starting from the left until the given index.
+ @syntax:
+ <string> $str.left(<data:string>,<index:int>)
+ @description:
+ This function returns a substring of the first string parameter which is the
+ string starting from the left until the index specified in the second parameter.
+*/
+
+static bool str_kvs_fnc_left(KviKvsModuleFunctionCall * c)
+{
+ QString szString;
+ kvs_int_t iIdx;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("data",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("index",KVS_PT_INTEGER,0,iIdx)
+ KVSM_PARAMETERS_END(c)
+ c->returnValue()->setString(szString.left(iIdx));
+ return true;
+}
+/*
+ @doc: str.right
+ @type:
+ function
+ @title:
+ $str.right
+ @short:
+ Returns a substring starting from the right until the given index.
+ @syntax:
+ <string> $str.right(<data:string>,<index:int>)
+ @description:
+ This function returns a substring of the first string parameter which is the
+ string starting from the right until the index specified in the second parameter.
+ The index start counting at the last character and increase until the first.
+*/
+
+static bool str_kvs_fnc_right(KviKvsModuleFunctionCall * c)
+{
+ QString szString;
+ kvs_int_t iIdx;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("data",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("index",KVS_PT_INTEGER,0,iIdx)
+ KVSM_PARAMETERS_END(c)
+ c->returnValue()->setString(szString.right(iIdx));
+ return true;
+}
+/*
+ @doc: str.mid
+ @type:
+ function
+ @title:
+ $str.mid
+ @short:
+ Returns a substring starting from a given index.
+ @syntax:
+ <string> $str.mid(<data:string>,<startidx:int>,<nchars:int>)
+ @description:
+ This function returns a substring of the first string parameter wich is the
+ string starting at the (numeric) index given with startidx and counting nchars
+ forward.
+*/
+
+static bool str_kvs_fnc_mid(KviKvsModuleFunctionCall * c)
+{
+ QString szString;
+ kvs_int_t iIdx,iNchars;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("data",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("startidx",KVS_PT_INTEGER,0,iIdx)
+ KVSM_PARAMETER("nchars",KVS_PT_INTEGER,0,iNchars)
+ KVSM_PARAMETERS_END(c)
+ c->returnValue()->setString(szString.mid(iIdx,iNchars));
+ return true;
+}
+/*
+ @doc: str.append
+ @type:
+ function
+ @title:
+ $str.append
+ @short:
+ Append one string to another.
+ @syntax:
+ <string> $str.append(<string:string>,<toappend:string>)
+ @description:
+ This function returns a string created appending the second string parameter
+ to the end of the first string parameter.
+*/
+
+static bool str_kvs_fnc_append(KviKvsModuleFunctionCall * c)
+{
+ QString szString,szString2;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("string",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("toappend",KVS_PT_STRING,0,szString2)
+ KVSM_PARAMETERS_END(c)
+ c->returnValue()->setString(szString.append(szString2));
+ return true;
+}
+/*
+ @doc: str.prepend
+ @type:
+ function
+ @title:
+ $str.prepend
+ @short:
+ Prepend one string to another.
+ @syntax:
+ <string> $str.prepend(<string:string>,<toprepend:string>)
+ @description:
+ This function returns a string created prepending the second string parameter
+ to the start of the first string parameter.
+*/
+
+static bool str_kvs_fnc_prepend(KviKvsModuleFunctionCall * c)
+{
+ QString szString,szString2;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("string",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("toprepend",KVS_PT_STRING,0,szString2)
+ KVSM_PARAMETERS_END(c)
+ c->returnValue()->setString(szString.prepend(szString2));
+ return true;
+}
+/*
+ @doc: str.insert
+ @type:
+ function
+ @title:
+ $str.insert
+ @short:
+ Inserts a substring in a string at a given index
+ @syntax:
+ <string> $str.insert(<string:string>,<substring:string>,<index:int>)
+ @description:
+ Inserts the substring given in the second parameter in the string given in the
+ first parameter at the index given in the third parameter, then returns the
+ resulting string.
+*/
+
+static bool str_kvs_fnc_insert(KviKvsModuleFunctionCall * c)
+{
+ QString szString,szString2;
+ kvs_int_t iIdx;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("string",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("substring",KVS_PT_STRING,0,szString2)
+ KVSM_PARAMETER("nchars",KVS_PT_INTEGER,0,iIdx)
+ KVSM_PARAMETERS_END(c)
+ c->returnValue()->setString(szString.insert(iIdx,szString2));
+ return true;
+}
+/*
+ @doc: str.strip
+ @type:
+ function
+ @title:
+ $str.strip
+ @short:
+ Returns a whitespace stripped string
+ @syntax:
+ <string> $str.strip(<string:string>)
+ @description:
+ Returns a left and right whitespace stripped version of the string given as the
+ first parameter.
+*/
+
+static bool str_kvs_fnc_strip(KviKvsModuleFunctionCall * c)
+{
+ QString szString;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("string",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETERS_END(c)
+ c->returnValue()->setString(szString.stripWhiteSpace());
+ return true;
+}
+/*
+ @doc: str.stripleft
+ @type:
+ function
+ @title:
+ $str.stripleft
+ @short:
+ Returns a left whitespace stripped string
+ @syntax:
+ <string> $str.stripleft(<string:string>)
+ @description:
+ Returns a left whitespace stripped version of the string given as the
+ first parameter.
+*/
+
+static bool str_kvs_fnc_stripleft(KviKvsModuleFunctionCall * c)
+{
+ QString szString;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("string",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETERS_END(c)
+ if(szString.length() > 0)
+ {
+ int idx = 0;
+ while(szString[idx].isSpace())idx++;
+ if(idx > 0)szString.remove(0,idx);
+ }
+ c->returnValue()->setString(szString);
+ return true;
+}
+/*
+ @doc: str.stripright
+ @type:
+ function
+ @title:
+ $str.stripright
+ @short:
+ Returns a right whitespace stripped string
+ @syntax:
+ <string> $str.stripright(<string:string>)
+ @description:
+ Returns a right whitespace stripped version of the string given as the
+ first parameter.
+*/
+
+static bool str_kvs_fnc_stripright(KviKvsModuleFunctionCall * c)
+{
+ QString szString;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("string",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETERS_END(c)
+ int iIdx = 0;
+ while(szString.at(szString.length() - (iIdx+1)).isSpace()) iIdx++;
+ if(iIdx > 0)szString.remove(szString.length() - iIdx,iIdx);
+ c->returnValue()->setString(szString);
+ return true;
+}
+
+/*
+ @doc: str.stripcolors
+ @type:
+ function
+ @title:
+ $str.stripcolors
+ @short:
+ Returns a mirc color codes stripped string
+ @syntax:
+ <string> $str.stripcolors(<string:string>)
+ @description:
+ Removes all mirc color codes from a string, including also bold, underline, reverse,
+ icon, crypting and ctcp control codes.
+*/
+
+static bool str_kvs_fnc_stripcolors(KviKvsModuleFunctionCall * c)
+{
+ QString szString;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("string",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETERS_END(c)
+ c->returnValue()->setString(KviMircCntrl::stripControlBytes(szString));
+ return true;
+}
+
+/*
+ @doc: str.replace
+ @type:
+ function
+ @title:
+ $str.replace
+ @short:
+ Replace substrings in a string
+ @syntax:
+ <string> $str.replace(<string:string>,<replacewith:string>,<toreplace:string>)
+ @description:
+ This function returns a string created replacing all ocurrences of the third parameter
+ ('toreplace') in the string given as the first parameter ('string') with the string
+ given as the second parameter ('replacewith').
+ The string replacement is case sensitive!.
+ FIXME: The order of the parameters in this function is illogical (and probably incompatible
+ with any other scripting language) :D
+ @examples:
+ [example]
+ echo $str.replace("I like big networks","neural","big")
+ [/example]
+*/
+
+static bool str_kvs_fnc_replace(KviKvsModuleFunctionCall * c)
+{
+ QString szString,szNewstr,szToreplace;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("string",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("newstr",KVS_PT_STRING,0,szNewstr)
+ KVSM_PARAMETER("toreplace",KVS_PT_STRING,0,szToreplace)
+ KVSM_PARAMETERS_END(c)
+ szString.replace(szToreplace,szNewstr);
+ c->returnValue()->setString(szString);
+ return true;
+}
+
+/*
+ @doc: str.replacenocase
+ @type:
+ function
+ @title:
+ $str.replacenocase
+ @short:
+ Replace substrings in a string ignoring case
+ @syntax:
+ <string> $str.replacenocase(<string:string>,<newstr:string>,<toreplace:string>)
+ @description:
+ This function returns a string created replacing all ocurrences of the third parameter
+ ('toreplace') in the string given as the first parameter ('string') with the string
+ given as the second parameter ('newstr').[br]
+ The replacement is case insensitive.[br]
+ FIXME: The order of the parameters in this function is illogical (and probably incompatible
+ with any other scripting language) :D
+*/
+
+static bool str_kvs_fnc_replacenocase(KviKvsModuleFunctionCall * c)
+{
+ QString szString,szNewstr,szToreplace;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("string",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("newstr",KVS_PT_STRING,0,szNewstr)
+ KVSM_PARAMETER("toreplace",KVS_PT_STRING,0,szToreplace)
+ KVSM_PARAMETERS_END(c)
+ szString.replace(szToreplace,szNewstr,false);
+ c->returnValue()->setString(szString);
+ return true;
+}
+
+/*
+ @doc: str.urlencode
+ @type:
+ function
+ @title:
+ $str.urlencode
+ @short:
+ Returns a browser formatted string
+ @syntax:
+ <string> $str.urlencode(<string:string>)
+ @description:
+ This function returns a string created replacing all ocurrences in the parameter ('string') with their respective html entities.[br]
+ The replacement is case insensitive.[br]
+ FIXME: This function use the same replace order as $str.replace so it incompatible
+ with any other scripting language) :D
+*/
+
+static bool str_kvs_fnc_urlencode(KviKvsModuleFunctionCall * c)
+{
+ QString szString,szNewstr;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("string",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETERS_END(c)
+
+ char * toReplace[]={" ", "#", "$", "&", "/", ":", "<", "=", ">", "?", "@", "[", "\\", "]", "^", "`", "{", "|", "}", "~"};
+ char * newStr[]={"%20", "%23", "%24", "&amp;", "%2F", "%3A", "&lt;", "%3D", "&gt;", "%3F", "%40", "%5B", "%5C", "%5D", "%5E", "%60", "%7B", "%7C", "%7D", "%7E"};
+
+ /*
+ for(int idx=0,idx<22,idx++)
+ szNewstr=szString.replace(toReplace[idx],newStr[idx],false);
+ */
+
+ int idx=0;
+ while(idx<20){
+ szNewstr=szString.replace(toReplace[idx],newStr[idx],false);
+ idx++;
+ }
+
+ c->returnValue()->setString(szNewstr);
+ return true;
+}
+
+/*
+ @doc: str.lefttofirst
+ @type:
+ function
+ @title:
+ $str.lefttofirst
+ @short:
+ Returns the left part of a string until a given substring
+ @syntax:
+ <string> $str.lefttofirst(<string:string>,<substring:string>)
+ @description:
+ This function returns the left part of the string given as the first parameter
+ from the start until the string given as the second parameter is found. It don't
+ include the substring of the second parameter in the returned value. If the second
+ parameter is not found, the entire string is returned.
+ The match is case insensitive.
+*/
+
+static bool str_kvs_fnc_lefttofirst(KviKvsModuleFunctionCall * c)
+{
+ QString szString,szNewstr;
+ int where;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("string",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("substring",KVS_PT_STRING,0,szNewstr)
+ KVSM_PARAMETERS_END(c)
+ where = szString.find(szNewstr,false);
+ if(where != -1) c->returnValue()->setString(szString.left(where));
+ else c->returnValue()->setString(szString);
+ return true;
+}
+/*
+ @doc: str.lefttolast
+ @type:
+ function
+ @title:
+ $str.lefttolast
+ @short:
+ Returns the left part of a string until the last ocurrence of a given substring
+ @syntax:
+ <string> $str.lefttolast(<string:string>,<substring:string>)
+ @description:
+ This function returns the left part of the string given as the first parameter
+ from the start until the last ocurrence of the string given as the second parameter
+ is found. It don't include the substring of the second parameter in the returned value.
+ If the second parameter is not found, the entire string is returned.
+ The match is case insensitive
+*/
+
+static bool str_kvs_fnc_lefttolast(KviKvsModuleFunctionCall * c)
+{
+ QString szString,szNewstr;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("string",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("substring",KVS_PT_STRING,0,szNewstr)
+ KVSM_PARAMETERS_END(c)
+ int where = szString.findRev(szNewstr,-1,false);
+ if(where != -1) c->returnValue()->setString(szString.left(where));
+ else c->returnValue()->setString(szString);
+ return true;
+}
+/*
+ @doc: str.rightfromfirst
+ @type:
+ function
+ @title:
+ $str.rightfromfirst
+ @short:
+ Returns the right part of a string from the first ocurrence of a given substring
+ @syntax:
+ <string> $str.rightfromfirst(<string:string>,<substring:string>)
+ @description:
+ This function returns the right part of the string given as the first parameter
+ from the position where the first ocurrence of the string given as the second parameter
+ is found. It don't include the substring of the second parameter in the returned value.
+ If the second parameter is not found, an empty string is returned..
+ The match is case insensitive
+*/
+
+static bool str_kvs_fnc_rightfromfirst(KviKvsModuleFunctionCall * c)
+{
+ QString szString,szNewstr;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("string",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("substring",KVS_PT_STRING,0,szNewstr)
+ KVSM_PARAMETERS_END(c)
+ int idx = szString.find(szNewstr,false);
+ if(idx != -1) c->returnValue()->setString(szString.right(szString.length()-(idx+szNewstr.length())));
+ else c->returnValue()->setString("");
+ return true;
+}
+/*
+ @doc: str.rightfromlast
+ @type:
+ function
+ @title:
+ $str.rightfromlast
+ @short:
+ Returns the right part of a string from the last ocurrence of a given substring
+ @syntax:
+ <string> $str.rightfromlast(<string:string>,<substring:string>)
+ @description:
+ This function returns the right part of the string given as the first parameter
+ from the position where the last ocurrence of the string given as the second parameter
+ is found. It don't include the substring of the second parameter in the returned value.
+ If the second parameter is not found, an empty string is returned..
+ The match is case insensitive.
+*/
+
+
+static bool str_kvs_fnc_rightfromlast(KviKvsModuleFunctionCall * c)
+{
+ QString szString,szNewstr;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("string",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("substring",KVS_PT_STRING,0,szNewstr)
+ KVSM_PARAMETERS_END(c)
+ int idx = szString.findRev(szNewstr,-1,false);
+ if(idx != -1) c->returnValue()->setString(szString.right(szString.length()-(idx+szNewstr.length())));
+ else c->returnValue()->setString("");
+ return true;
+}
+
+/*
+ @doc: str.match
+ @type:
+ function
+ @title:
+ $str.match
+ @short:
+ Matches a fixed string against a wildcard expression
+ @syntax:
+ <bool> $str.match(<expression:string>,<string:string>[,<flags:string>])
+ @description:
+ Returns 1 if the fixed <string> matches the <expression>, 0 otherwise.[br]
+ If <flags> contains the flag 'r' then <expression> is treated as a full
+ regular expression otherwise it is treated as a simple wildcard expression containing
+ the classic wildcards '*' and '?'.[br]
+ If <flags> contains the flag 'e' then only an exact match is considered (e.g. the full
+ <string> is exactly matched by <expression>), otherwise partial matches are allowed too (e.g.
+ <expression> is found inside <string>).[br]
+ The match is case sensitive.[br]
+ @examples:
+ [example]
+ %test = "Hello! My nickname is Pragma"
+ [cmd]if[/cmd]($str.match(Pragma*,%test))[cmd]echo[/cmd] "Matches Pragma*"
+ [cmd]if[/cmd]($str.match(*Pragma,%test))[cmd]echo[/cmd] "Matches *Pragma"
+ [cmd]if[/cmd]($str.match(H*y*i?k*a,%test))[cmd]echo[/cmd] "Matches H*y*i?k*a"
+ [cmd]if[/cmd]($str.match(H*y*i?K*a,%test))[cmd]echo[/cmd] "Matches H*y*i?K*a"
+ [/example]
+ @seealso:
+ [fnc]$str.matchnocase[/fnc]
+*/
+
+static bool str_kvs_fnc_match(KviKvsModuleFunctionCall * c)
+{
+ QString szWildcard,szString,szFlags;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("wildcard",KVS_PT_NONEMPTYSTRING,0,szWildcard)
+ KVSM_PARAMETER("string",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("flags",KVS_PT_STRING,KVS_PF_OPTIONAL,szFlags)
+ KVSM_PARAMETERS_END(c)
+ bool bRegExp = (szFlags.find(QChar('r')) != -1) || (szFlags.find(QChar('R')) != -1);
+ bool bExact = (szFlags.find(QChar('e')) != -1) || (szFlags.find(QChar('E')) != -1);
+ c->returnValue()->setBoolean(KviQString::matchStringCS(szWildcard,szString,bRegExp,bExact));
+ return true;
+}
+
+/*
+ @doc: str.matchnocase
+ @type:
+ function
+ @title:
+ $str.matchnocase
+ @short:
+ Matches a fixed string against a wildcard expression (case insensitive)
+ @syntax:
+ <bool> $str.matchnocase(<expression>,<string:string>[,<flags:string>])
+ @description:
+ Returns 1 if the fixed <string> matches the <expression>, 0 otherwise.[br]
+ If <flags> contains the flag 'r' then <expression> is treated as a full
+ regular expression otherwise it is treated as a simple wildcard expression containing
+ the classic wildcards '*' and '?'.[br]
+ If <flags> contains the flag 'e' then only an exact match is considered (e.g. the full
+ <string> is exactly matched by <expression>), otherwise partial matches are allowed too (e.g.
+ <expression> is found inside <string>).[br]
+ The match is case insensitive.[br]
+ @examples:
+ [example]
+ %test = "Hello! My nickname is Pragma"
+ [cmd]if[/cmd]($str.match(pragma*,%test))[cmd]echo[/cmd] "Matches pragma*"
+ [cmd]if[/cmd]($str.match(*pragma,%test))[cmd]echo[/cmd] "Matches *pragma"
+ [cmd]if[/cmd]($str.match(H*y*i?k*a,%test))[cmd]echo[/cmd] "Matches H*y*i?k*a"
+ [cmd]if[/cmd]($str.match(H*y*i?K*a,%test))[cmd]echo[/cmd] "Matches H*y*i?K*a"
+ [cmd]if[/cmd]($str.match(G*if?sx,%test))[cmd]echo[/cmd] "Matches G*if?sx"
+ [/example]
+ @seealso:
+ [fnc]$str.match[/fnc]
+*/
+
+static bool str_kvs_fnc_matchnocase(KviKvsModuleFunctionCall * c)
+{
+ QString szWildcard,szString,szFlags;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("wildcard",KVS_PT_NONEMPTYSTRING,0,szWildcard)
+ KVSM_PARAMETER("string",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("flags",KVS_PT_STRING,KVS_PF_OPTIONAL,szFlags)
+ KVSM_PARAMETERS_END(c)
+ bool bRegExp = (szFlags.find(QChar('r')) != -1) || (szFlags.find(QChar('R')) != -1);
+ bool bExact = (szFlags.find(QChar('e')) != -1) || (szFlags.find(QChar('E')) != -1);
+ c->returnValue()->setBoolean(KviQString::matchStringCI(szWildcard,szString,bRegExp,bExact));
+ return true;
+}
+
+/*
+
+ @doc: str.word
+ @type:
+ function
+ @title:
+ $str.word
+ @short:
+ Returns the nth word in a string
+ @syntax:
+ <string> $str.word(<n:int>,<string:string>)
+ @description:
+ Returns the nth word inside the <string> (with n starting from 0!)[br]
+ A word is a substring not containing spaces (ASCII chars 32, carriage returns , tabs etc...).[br]
+ If the string contains less than n+1 words then an empty string is returned.[br]
+ This function is faster than a call to [fnc]split[/fnc]() and array indexing
+ if you need a single word to be extracted from a complex string.[br]
+ If you need to manage more than one word from the string then the [fnc]split[/fnc]()
+ method is more efficient.[br]
+ This function is a special case of [fnc]$str.token[/fnc]() and it runs a bit faster.
+ @examples:
+ [example]
+ %test = "this is a string full of words"
+ [cmd]echo[/cmd] $str.word(4,%test)
+ [/example]
+ @seealso:
+ [fnc]$str.token[/fnc]
+*/
+
+static bool str_kvs_fnc_word(KviKvsModuleFunctionCall * c)
+{
+ QString szString;
+ kvs_int_t iOccurence;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("occurence",KVS_PT_INT,0,iOccurence)
+ KVSM_PARAMETER("string",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETERS_END(c)
+ int idx = 0;
+ int cnt = 0;
+ int begin;
+ int len = szString.length();
+ while (idx<len)
+ {
+ QChar szTmp = szString[idx].unicode();
+ while (szTmp.isSpace())
+ {
+ idx++;
+ szTmp = szString[idx].unicode();
+ }
+ begin = idx;
+ while (idx<len && !szTmp.isSpace())
+ {
+ idx++;
+ szTmp = szString[idx].unicode();
+ }
+ if (iOccurence == (kvs_int_t)cnt)
+ {
+ c->returnValue()->setString(szString.mid(begin,idx-begin));
+ return true;
+ }
+ cnt ++;
+ }
+ return true;
+
+}
+/*
+ @doc: str.token
+ @type:
+ function
+ @title:
+ $str.token
+ @short:
+ Returns the nth token in a string
+ @syntax:
+ <string> $str.token(<n:int>,<separator:string>,<string:string>)
+ @description:
+ Returns the nth token inside the <string> (with n starting from 0!)[br]
+ A token is a substring not containing the characters listed in <separators>.[br]
+ If the string contains less than n+1 tokens then an empty string is returned.[br]
+ [fnc]$str.word[/fnc]() is an optimized function dedicated to the special case
+ in that <separators> is a string containing all the whitespace characters.[br]
+ Please note that this function is SLOW. You might want to take a look at [fnc]$str.word[/fnc]()
+ or even better to [fnc]$str.split[/fnc]().[br]
+ This function is case sensitive: you need to specify both cases in the <separators> string
+ if you want to do a case insensitive tokenization.[br]
+ @examples:
+ [example]
+ %test = "21 hours 10 minutes 15 seconds"
+ [cmd]echo[/cmd] $str.token(1," hoursmintecd",%test)
+ [/example]
+ @seealso:
+ [fnc]$str.word[/fnc][br]
+ [fnc]$str.split[/fnc][br]
+*/
+
+static bool str_kvs_fnc_token(KviKvsModuleFunctionCall * c)
+{
+ QString szString,sep;
+ kvs_uint_t n;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("n",KVS_PT_UINT,0,n)
+ KVSM_PARAMETER("separator",KVS_PT_STRING,0,sep)
+ KVSM_PARAMETER("string",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETERS_END(c)
+ if(sep.isEmpty())
+ {
+ c->returnValue()->setString(szString);
+ return true;
+ }
+
+ int idx = 0;
+ int cnt = 0;
+ int begin;
+ int len = szString.length();
+ while (idx<len)
+ {
+ QChar szTmp = szString[idx].unicode();
+// while (szTmp==sep)
+ while (sep.contains(szTmp))
+ {
+ idx++;
+ szTmp = szString[idx].unicode();
+ }
+ begin = idx;
+ while (idx<len && !sep.contains(szTmp))
+ {
+ idx++;
+ szTmp = szString[idx].unicode();
+ }
+ if (n == cnt)
+ {
+ c->returnValue()->setString(szString.mid(begin,idx-begin));
+ return true;
+ }
+ cnt ++;
+ }
+ return true;
+}
+
+/*
+ @doc: str.charsum
+ @type:
+ function
+ @title:
+ $str.charsum
+ @short:
+ Returns the sum of the character codes of the string
+ @syntax:
+ <int> $str.charsum(<data:string>[,<bCaseInsensitive:boolean>])
+ @description:
+ Returns the sum of the character codes of the parameter <string>.
+ The sum is suitable for implementing a simple hashing algorithm.[br]
+ If <bCaseInsensitive> is specified and $true then the string
+ will be converted to lowercase first.
+*/
+
+
+static bool str_kvs_fnc_charsum(KviKvsModuleFunctionCall * c)
+{
+ QString szString;
+ bool bCaseInsensitive;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("data",KVS_PT_STRING,0,szString)
+ KVSM_PARAMETER("bCaseInsensitive",KVS_PT_BOOL,KVS_PF_OPTIONAL,bCaseInsensitive)
+ KVSM_PARAMETERS_END(c)
+ unsigned int sum = 0;
+ int idx = 0;
+ int len = szString.length();
+ if(bCaseInsensitive)
+ {
+ while(idx < len)
+ {
+ sum += szString[idx].lower().unicode();
+ idx++;
+ }
+ } else {
+ while(idx < len)
+ {
+ sum += szString[idx].unicode();
+ idx++;
+ }
+ }
+ c->returnValue()->setInteger(sum);
+ return true;
+}
+
+
+/*
+ @doc: str.digest
+ @type:
+ function
+ @title:
+ $str.digest
+ @short:
+ Returns the sum of the character codes of the string
+ @syntax:
+ <string> $str.digest(<data:string>[,<algorythm:string>])
+ @description:
+ Calculates digest for given string using algorithm passed as 2nd argument.
+ Currently supported: md5, md4, md2, sha1, mdc2, ripemd160, dss1
+ Default is md5. Requires OpenSSL support
+*/
+
+
+static bool str_kvs_fnc_digest(KviKvsModuleFunctionCall * c)
+{
+#ifdef COMPILE_SSL_SUPPORT
+ QString szString,szType,szResult;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("data",KVS_PT_NONEMPTYSTRING,0,szString)
+ KVSM_PARAMETER("algorythm",KVS_PT_NONEMPTYSTRING,KVS_PF_OPTIONAL,szType)
+ KVSM_PARAMETERS_END(c)
+
+ if(szType.isEmpty()) szType="md5";
+
+ EVP_MD_CTX mdctx;
+ const EVP_MD *md;
+ unsigned char md_value[EVP_MAX_MD_SIZE];
+ unsigned int md_len, i;
+ char buff[3];
+ OpenSSL_add_all_digests();
+
+ md = EVP_get_digestbyname(szType.utf8().data());
+ if(!md) {
+ c->warning(__tr2qs("%Q algorytm is not supported"),&szType);
+ return true;
+ }
+
+ EVP_MD_CTX_init(&mdctx);
+ EVP_DigestInit_ex(&mdctx, md, NULL);
+ EVP_DigestUpdate(&mdctx, szString.utf8().data(), szString.utf8().length());
+ EVP_DigestFinal_ex(&mdctx, md_value, &md_len);
+ EVP_MD_CTX_cleanup(&mdctx);
+
+ for(i = 0; i < md_len; i++)
+ {
+#ifdef COMPILE_ON_WINDOWS
+ _snprintf(buff,3,"%02x",md_value[i]);
+#else
+ snprintf(buff,3,"%02x",md_value[i]);
+#endif
+ szResult.append(buff);
+ }
+
+ c->returnValue()->setString(szResult);
+#else
+ c->warning(__tr2qs("KVIrc is compiled without OpenSSL support. $str.digest function disabled"));
+#endif
+
+ return true;
+}
+
+/*
+ @doc: str.join
+ @type:
+ function
+ @title:
+ $str.join
+ @short:
+ Returns a string joined from several strings
+ @syntax:
+ <string> $str.join(<separator:string>,<data:array>[,<flags:string>])
+ @description:
+ Joins all the string in the <data> array by using
+ the specified <separator> and returns the result.
+ If <flags> contains the character "n" then empty strings in teh <data>
+ array are skipped.
+
+*/
+
+
+static bool str_kvs_fnc_join(KviKvsModuleFunctionCall * c)
+{
+ QString szSep;
+ KviKvsArrayCast ac;
+ QString szFlags;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("separator",KVS_PT_STRING,0,szSep)
+ KVSM_PARAMETER("data",KVS_PT_ARRAYCAST,0,ac)
+ KVSM_PARAMETER("flags",KVS_PT_STRING,KVS_PF_OPTIONAL,szFlags)
+ KVSM_PARAMETERS_END(c)
+
+ QString szRet;
+ bool bSkipEmpty = szFlags.find('n',0,false) != -1;
+
+ bool bFirst = true;
+
+ if(KviKvsArray * a = ac.array())
+ {
+ kvs_uint_t uIdx = 0;
+ kvs_uint_t uSize = a->size();
+ while(uIdx < uSize)
+ {
+ KviKvsVariant * v = a->at(uIdx);
+ if(v)
+ {
+ QString tmp;
+ v->asString(tmp);
+ if(bFirst)
+ {
+ szRet = tmp;
+ bFirst = false;
+ } else {
+ szRet += szSep;
+ szRet += tmp;
+ }
+ } else {
+ if(!bSkipEmpty)
+ {
+ if(bFirst)
+ {
+ bFirst = false;
+ } else {
+ szRet += szSep;
+ }
+ }
+ }
+ uIdx++;
+ }
+ }
+
+ c->returnValue()->setString(szRet);
+ return true;
+}
+
+
+/*
+ @doc: str.grep
+ @type:
+ function
+ @title:
+ $str.grep
+ @short:
+ Emulates the GNU Regular Expression Parser
+ @syntax:
+ <array> $str.grep(<match:string>,<strings:array>[,<flags:string>])
+ @description:
+ Returns an array with the elements of <strings> which match the string <match>.
+ <flags> can be any combination of the characters 's','w' and 'r'.[br]
+ If the flag 'w' is specified then <match> is assumed to be a wildcard regular
+ expression (with * and ? wildcards). If the flag 'r' is specified
+ then <match> is assumed to be a standard regular expression. If none of
+ 'w' and 'r' is specified then <match> is treated as a simple string to be
+ searched in each element of the <strings> array. 'r' takes precedence over 'w'.
+ If the flag 's' is specified the matches are case sensitive.[br]
+ Note that since almost any other variable type can be automatically cast
+ to an array, then you can use this function also on scalars or hashes.
+ @examples:
+ [example]
+ [comment]# Find all the nicknames starting with the letter A or a[/comment]
+ [cmd]echo[/cmd] $str.grep("^a",[fnc]$chan.users[/fnc],"r")
+ [comment]# Find the current CPU speed (on UNIX like machines only)[/comment]
+ [cmd]echo[/cmd] $str.grep("MHz",[fnc]$str.split[/fnc]([fnc]$lf[/fnc],[fnc]$file.read[/fnc]("/proc/cpuinfo")))
+ [comment]# simply check if the specified string matches a regular expression[/comment]
+ [comment]# (this in fact is a little tricky, but you will probably not notice it :D)[/comment]
+ [cmd]if[/cmd]($str.grep("[st]+","test string","r"))[cmd]echo[/cmd] "Yeah, it matches!"
+ [/example]
+ @seealso:
+ [fnc]$array[/fnc]
+*/
+
+static bool str_kvs_fnc_grep(KviKvsModuleFunctionCall * c)
+{
+ KviKvsArrayCast ac;
+ QString szMatch,szFlags;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("match",KVS_PT_STRING,0,szMatch)
+ KVSM_PARAMETER("strings",KVS_PT_ARRAYCAST,0,ac)
+ KVSM_PARAMETER("flags",KVS_PT_STRING,KVS_PF_OPTIONAL,szFlags)
+ KVSM_PARAMETERS_END(c)
+
+ KviKvsArray * n = new KviKvsArray();
+ c->returnValue()->setArray(n);
+
+ KviKvsArray * a = ac.array();
+
+ bool bCaseSensitive = szFlags.find('s',0,false) != -1;
+ bool bRegexp = szFlags.find('r',0,false) != -1;
+ bool bWild = szFlags.find('w',0,false) != -1;
+ int idx = 0;
+ int cnt = a->size();
+
+ int i = 0;
+ if(bRegexp || bWild)
+ {
+ QRegExp re(szMatch,bCaseSensitive,bWild);
+ while(idx < cnt)
+ {
+ KviKvsVariant * v = a->at(idx);
+ if(v)
+ {
+ QString sz;
+ v->asString(sz);
+ if(re.search(sz) != -1)
+ {
+ n->set(i,new KviKvsVariant(sz));
+ i++;
+ }
+ }
+ idx++;
+ }
+ } else {
+ while(idx < cnt)
+ {
+ KviKvsVariant * v = a->at(idx);
+ if(v)
+ {
+ QString sz;
+ v->asString(sz);
+ if(sz.find(szMatch,0,bCaseSensitive) != -1)
+ {
+ n->set(i,new KviKvsVariant(sz));
+ i++;
+ }
+ }
+ idx++;
+ }
+ }
+
+ return true;
+}
+
+
+/*
+ @doc: str.split
+ @type:
+ function
+ @title:
+ $str.split
+ @short:
+ Splits a string to an array
+ @syntax:
+ <array> $str.split(<separator:string>,<data:string>[,<flags:string>[,<maxfields:integer>]])
+ @description:
+ Splits the <data> string by <separator> and returns an array of substrings.[br]
+ <flags> may be a combination of the characters 's', 'w', 'r' and 'n'.[br]
+ If s is specified, <separator> matching is case sensitive, otherwise is case insensitive.[br]
+ If w is specified, <separator> is treated as a wildcard-type regular expression
+ (with * and ? wildcars).[br]
+ If r is specified, <separator> is treated as a extended-type regular expression
+ (with character classes, special escapes etc..).[br]
+ If both w and r are specified w takes precedence.[br]
+ If none of w and r are specified <separator> is treated as a simple string to be matched.[br]
+ If 'n' is specified then eventual empty fields are discarded.[br]
+ If <maxfield> is specified then at most <maxfields> items are returned in the array (i.e. the last
+ item may be not splitted completly).
+ @examples:
+ [example]
+ [comment]# Split the fields[/comment]
+ %test[] = $str.split(!,"Field0!Field1!Field2!Field3!!Field5")
+ echo %test[]
+ %i = 0
+ [cmd]while[/cmd](%i < %test[]#)
+ {
+ [cmd]echo[/cmd] "Field %i: %test[%i]"
+ %i++;
+ }
+ [/example]
+ Regexp splitting:
+ [example]
+ %Test[] = $str.split("[ ]*[0-9][0-9]*-","AllOfThem: 1-Balboy 2-Pragma 3-Iakkolo 4-Crocodile",r)
+ echo %Test[]
+ %Test[] = $str.split("Y*H","hihiYeaHhohohoyeahYepYEAHhi",sw)
+ echo %Test[]
+ [/example]
+ If used in "non-array" context it returns just a comma separated list of substrings:[br]
+ [example]
+ [cmd]echo[/cmd] $str.split("[ ]*","Condense spaces and change &nbsp; &nbsp; all &nbsp; &nbsp; &nbsp; it in commas",r)
+ [/example]
+*/
+
+static bool str_kvs_fnc_split(KviKvsModuleFunctionCall * c)
+{
+ QString szSep,szStr,szFla;
+ kvs_int_t iMaxItems;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("separator",KVS_PT_STRING,0,szSep)
+ KVSM_PARAMETER("string",KVS_PT_STRING,0,szStr)
+ KVSM_PARAMETER("flags",KVS_PT_STRING,KVS_PF_OPTIONAL,szFla)
+ KVSM_PARAMETER("maxitems",KVS_PT_INTEGER,KVS_PF_OPTIONAL,iMaxItems)
+ KVSM_PARAMETERS_END(c)
+
+ if(c->params()->count() < 4)iMaxItems = -1;
+
+ KviKvsArray * a = new KviKvsArray();
+ c->returnValue()->setArray(a);
+
+ if(szSep.isEmpty())
+ {
+ a->set(0,new KviKvsVariant(szStr));
+ return true;
+ }
+
+ if(iMaxItems == 0)return true;
+
+ bool bWild = szFla.find('w',0,false) != -1;
+ bool bContainsR = szFla.find('r',0,false) != -1;
+ bool bCaseSensitive = szFla.find('s',0,false) != -1;
+ bool bNoEmpty = szFla.find('n',0,false) != -1;
+
+ int id = 0;
+
+ int iMatch = 0;
+ int iStrLen = szStr.length();
+ int iBegin = 0;
+
+ if(bContainsR || bWild)
+ {
+ QRegExp re(szSep,bCaseSensitive,bWild);
+
+ while((iMatch != -1) && (iMatch < iStrLen) && ((id < (iMaxItems-1)) || (iMaxItems < 0)))
+ {
+ iMatch = re.search(szStr,iBegin);
+ if(iMatch != -1)
+ {
+ int len = re.matchedLength();
+ if((len == 0) && (iBegin == iMatch))iMatch++; // safety measure for empty string matching
+
+ QString tmp = szStr.mid(iBegin,iMatch - iBegin);
+ if(bNoEmpty)
+ {
+ if(!tmp.isEmpty())
+ {
+ a->set(id,new KviKvsVariant(tmp));
+ id++;
+ }
+ } else {
+ a->set(id,new KviKvsVariant(tmp));
+ id++;
+ }
+
+ iMatch += len;
+ iBegin = iMatch;
+ }
+ }
+ } else {
+ while((iMatch != -1) && (iMatch < iStrLen) && ((id < (iMaxItems-1)) || (iMaxItems < 0)))
+ {
+ iMatch = szStr.find(szSep,iBegin,bCaseSensitive);
+ if(iMatch != -1)
+ {
+ QString tmp = szStr.mid(iBegin,iMatch - iBegin);
+ if(bNoEmpty)
+ {
+ if(!tmp.isEmpty())
+ {
+ a->set(id,new KviKvsVariant(tmp));
+ id++;
+ }
+ } else {
+ a->set(id,new KviKvsVariant(tmp));
+ id++;
+ }
+
+ iMatch += szSep.length();
+ iBegin = iMatch;
+ }
+ }
+ }
+
+ if(iBegin < iStrLen)
+ {
+ QString tmpx = szStr.right(iStrLen-iBegin);
+ if(bNoEmpty)
+ {
+ if(!tmpx.isEmpty())
+ a->set(id,new KviKvsVariant(tmpx));
+ } else {
+ a->set(id,new KviKvsVariant(tmpx));
+ }
+ } else {
+ if(!bNoEmpty)
+ a->set(id,new KviKvsVariant(QString::null)); // empty string at the end
+ }
+
+ return true;
+}
+
+/*
+ @doc: str.printf
+ @type:
+ function
+ @title:
+ $str.printf
+ @short:
+ Returns a formatted string in a C sprintf-like fashion.
+ @syntax:
+ <string> $str.printf(<format:string>[,<parameter:variant>[...]]);
+ @description:
+ This function acts like the C sprintf(): it returns
+ a string formatted by following the specification in <format>
+ and by using the following corresponding variadic parameters.
+ Since the percent sign is used as variable prefix in KVIrc,
+ this function uses the question mark '?' instead.[br]
+ The <format> string can contain the following escape sequences:[br]
+ [br]
+ [table]
+ [tr][td][b]?s[/b][/td][td]The next parameter is evaluated as a string and substituted in place of ?s[/td][/tr]
+ [tr][td][b]?d[/b][/td][td]The next parameter is evaluated as a signed integer and substituted in place of ?d[/td][/tr]
+ [tr][td][b]?i[/b][/td][td]Same as ?d[/td][/tr]
+ [tr][td][b]?u[/b][/td][td]The next parameter is evaluated as an unsigned signed integer and substituted in place of ?d[/td][/tr]
+ [tr][td][b]?x[/b][/td][td]The next parameter is evaluated as an unsigned integer and its hexadecimal rappresentation
+ is substituted in place of ?x[/td][/tr]
+ [tr][td][b]?h[/b][/td][td]Same as ?x[/td][/tr]
+ [tr][td][b]?X[/b][/td][td]Same as ?x but uppercase hexadecimal digits are used[/td][/tr]
+ [tr][td][b]?H[/b][/td][td]Same as ?X[/td][/tr]
+ [tr][td][b]??[/b][/td][td]A literal question mark[/td][/tr]
+ [tr][td][b]?[.N]f[/b][/td][td]The next parameter is evaluated as a real floating point value
+ and its rappresentation substituted in place of ?f. The optional [.N] modifier,
+ where N is an unsigned integer, rappresents the desired precision.[/td][/tr]
+ [tr][td][b]?[.N]e[/b][/td][td]The next parameter is evaluated as a real floating point value
+ and its scientific rappresentation substituted in place of ?e. The optional [.N] modifier,
+ where N is an unsigned integer, rappresents the desired precision.[/td][/tr]
+ [tr][td][b]?[.N]E[/b][/td][td]Same as ?e but an uppercase E is used as the exponent prefix[/td][/tr]
+ [/table]
+ @examples:
+ [example]
+ %val = $(1.0 / 3.0);
+ $str.printf("1/3 with a precision of 3 digits is ?.3f, while in scientific notation it's ?e",%val,%val)
+ [/example]
+*/
+
+
+static bool str_kvs_fnc_printf(KviKvsModuleFunctionCall * c)
+{
+ QString szFormat;
+ KviKvsVariantList vArgs;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("format",KVS_PT_STRING,0,szFormat)
+ KVSM_PARAMETER("vArgs",KVS_PT_VARIANTLIST,0,vArgs)
+ KVSM_PARAMETERS_END(c)
+
+ QString s;
+
+#define MEMINCREMENT 32
+
+ int reallen = 0;
+ int allocsize = MEMINCREMENT;
+
+ //s.setLength(allocsize);
+
+ const QChar * fmt = KviQString::nullTerminatedArray(szFormat);
+
+ if(fmt)
+ {
+ QChar * buffer = (QChar *)kvi_malloc(sizeof(QChar) * allocsize);
+ //QChar * p = (QChar *)s.unicode();
+
+ //9999999999999999999999999999999\0
+ char numberBuffer[1024];
+ char *pNumBuf;
+ kvs_uint_t tmp;
+ kvs_int_t argValue;
+ kvs_uint_t argUValue;
+ kvs_real_t argRValue;
+
+ QChar * p = buffer;
+
+ #define INCREMENT_MEM \
+ { \
+ allocsize += MEMINCREMENT; \
+ buffer = (QChar *)kvi_realloc(buffer,sizeof(QChar) * allocsize); \
+ p = buffer + reallen; \
+ }
+
+ #define INCREMENT_MEM_BY(numchars) \
+ { \
+ allocsize += numchars + MEMINCREMENT; \
+ buffer = (QChar *)kvi_realloc(buffer,sizeof(QChar) * allocsize); \
+ p = buffer + reallen; \
+ }
+
+ KviKvsVariant * pVar;
+
+ pVar = vArgs.first();
+
+ for(; fmt->unicode() ; ++fmt)
+ {
+ if(reallen == allocsize)INCREMENT_MEM
+
+ //copy up to a '?'
+ if(fmt->unicode() != '?')
+ {
+ *p++ = *fmt;
+ reallen++;
+ continue;
+ }
+
+ ++fmt; //skip this '?'
+ switch(fmt->unicode())
+ {
+ case 's':
+ {
+ QString sz;
+ if(pVar)pVar->asString(sz);
+ if(sz.isEmpty())continue;
+ int len = sz.length();
+ if((allocsize - reallen) < len)INCREMENT_MEM_BY(len)
+ const QChar * ch = sz.unicode();
+ while(len--)*p++ = *ch++;
+ reallen += sz.length();
+ pVar = vArgs.next();
+ continue;
+ }
+ case 'd': //signed integer
+ {
+ if(pVar)
+ {
+ if(!pVar->asInteger(argValue))
+ {
+ c->warning(__tr2qs("Invalid argument for ?d escape sequence, 0 assumed"));
+ argValue = 0;
+ }
+ } else {
+ c->warning(__tr2qs("Missing argument for ?d escape sequence, 0 assumed"));
+ argValue = 0;
+ }
+ argValue = 0;
+ if(argValue < 0)
+ { //negative integer
+ *p++ = '-';
+ reallen++;
+ argValue = -argValue; //need to have it positive
+ // most negative integer exception (avoid completely senseless (non digit) responses)
+ if(argValue < 0)argValue = 0; //we get -0 here
+ }
+ //write the number in a temporary buffer
+ pNumBuf = numberBuffer;
+ do {
+ tmp = argValue / 10;
+ *pNumBuf++ = argValue - (tmp * 10) + '0';
+ } while((argValue = tmp));
+ //copy now....
+ argUValue = pNumBuf - numberBuffer; //length of the number string
+ if((allocsize - reallen) < (int)argUValue)INCREMENT_MEM_BY(argUValue)
+ do { *p++ = QChar(*--pNumBuf); } while(pNumBuf != numberBuffer);
+ reallen += argUValue;
+ pVar = vArgs.next();
+ continue;
+ }
+ case 'u': //unsigned integer
+ {
+ if(pVar)
+ {
+ if(!pVar->asInteger(argValue))
+ {
+ c->warning(__tr2qs("Invalid argument for ?u escape sequence, 0 assumed"));
+ argValue = 0;
+ }
+ } else {
+ c->warning(__tr2qs("Missing argument for ?u escape sequence, 0 assumed"));
+ argValue = 0;
+ }
+ argUValue = (kvs_uint_t)argValue;
+ //write the number in a temporary buffer
+ pNumBuf = numberBuffer;
+ do {
+ tmp = argUValue / 10;
+ *pNumBuf++ = argUValue - (tmp * 10) + '0';
+ } while((argUValue = tmp));
+ //copy now....
+ argValue = pNumBuf - numberBuffer; //length of the number string
+ if((allocsize - reallen) < argValue)INCREMENT_MEM_BY(argValue)
+ do { *p++ = *--pNumBuf; } while(pNumBuf != numberBuffer);
+ reallen += argValue;
+ pVar = vArgs.next();
+ continue;
+ }
+ case 'h':
+ case 'x': // hexadecimal unsigned integer
+ {
+ static char hexsmalldigits[]="0123456789abcdef";
+
+ if(pVar)
+ {
+ if(!pVar->asInteger(argValue))
+ {
+ c->warning(__tr2qs("Invalid argument for ?x escape sequence, 0 assumed"));
+ argValue = 0;
+ }
+ } else {
+ c->warning(__tr2qs("Missing argument for ?x escape sequence, 0 assumed"));
+ argValue = 0;
+ }
+ argUValue = (kvs_uint_t)argValue;
+
+ //write the number in a temporary buffer
+ pNumBuf = numberBuffer;
+ do {
+ tmp = argUValue / 16;
+ *pNumBuf++ = hexsmalldigits[argUValue - (tmp * 16)];
+ } while((argUValue = tmp));
+ //copy now....
+ argValue = pNumBuf - numberBuffer; //length of the number string
+ if((allocsize - reallen) < argValue)INCREMENT_MEM_BY(argValue)
+ do { *p++ = *--pNumBuf; } while(pNumBuf != numberBuffer);
+ reallen += argValue;
+ pVar = vArgs.next();
+ continue;
+ }
+ case 'H':
+ case 'X': // hexadecimal unsigned integer
+ {
+ static char hexbigdigits[]="0123456789ABCDEF";
+ if(pVar)
+ {
+ if(!pVar->asInteger(argValue))
+ {
+ c->warning(__tr2qs("Invalid argument for ?X escape sequence, 0 assumed"));
+ argValue = 0;
+ }
+ } else {
+ c->warning(__tr2qs("Missing argument for ?X escape sequence, 0 assumed"));
+ argValue = 0;
+ }
+ argUValue = (kvs_uint_t)argValue;
+ //write the number in a temporary buffer
+ pNumBuf = numberBuffer;
+ do {
+ tmp = argUValue / 16;
+ *pNumBuf++ = hexbigdigits[argUValue - (tmp * 16)];
+ } while((argUValue = tmp));
+ //copy now....
+ argValue = pNumBuf - numberBuffer; //length of the number string
+ if((allocsize - reallen) < argValue)INCREMENT_MEM_BY(argValue)
+ do { *p++ = *--pNumBuf; } while(pNumBuf != numberBuffer);
+ reallen += argValue;
+ pVar = vArgs.next();
+ continue;
+ }
+ case '?':
+ {
+ if(fmt->unicode())
+ {
+ if(reallen == allocsize)INCREMENT_MEM
+ *p++ = *fmt;
+ reallen++;
+ }
+ continue;
+ }
+ break;
+ case '.':
+ {
+ // precision mark
+ const QChar * save = fmt;
+ fmt++;
+ unsigned int uPrecision = 0;
+
+ char fmtbuffer[8];
+ fmtbuffer[0] = '%';
+ fmtbuffer[1] = '.';
+
+ int idx = 2;
+
+ while((fmt->unicode() >= '0') && (fmt->unicode() <= '9') && (idx < 6))
+ {
+ uPrecision *= 10;
+ fmtbuffer[idx] = fmt->unicode();
+ uPrecision += fmtbuffer[idx] - '0';
+ fmt++;
+ idx++;
+ }
+ fmtbuffer[idx] = fmt->unicode();
+ fmtbuffer[idx+1] = 0;
+
+ if(pVar)
+ {
+ if(!pVar->asReal(argRValue))
+ {
+ c->warning(__tr2qs("Invalid argument for a floating point escape sequence, 0.0 assumed"));
+ argRValue = 0.0;
+ }
+ } else {
+ c->warning(__tr2qs("Missing argument for a floating point escape sequence, 0.0 assumed"));
+ argRValue = 0;
+ }
+ switch(fmt->unicode())
+ {
+ case 'e':
+ case 'E':
+ case 'F':
+ case 'f':
+ ::sprintf(numberBuffer,fmtbuffer,argRValue);
+ //copy now....
+ argValue = kvi_strLen(numberBuffer);
+ if((allocsize - reallen) < argValue)INCREMENT_MEM_BY(argValue)
+ pNumBuf = numberBuffer;
+ while(*pNumBuf){ *p++ = *pNumBuf++; }
+ reallen += argValue;
+ break;
+ default:
+ // anything else is crap.. invalid format
+ fmt = save;
+ *p++ = '?'; //write it
+ reallen++;
+ if(fmt->unicode())
+ {
+ if(reallen == allocsize)INCREMENT_MEM
+ *p++ = *fmt;
+ reallen++;
+ }
+ break;
+ }
+ pVar = vArgs.next();
+ continue;
+ }
+ break;
+ default: //a normal ? followed by some char
+ {
+ *p++ = '?'; //write it
+ reallen++;
+ if(fmt->unicode())
+ {
+ if(reallen == allocsize)INCREMENT_MEM
+ *p++ = *fmt;
+ reallen++;
+ }
+ continue;
+ }
+ }
+ }
+
+ s.setUnicode(buffer,reallen);
+ kvi_free(buffer);
+ }
+
+ c->returnValue()->setString(s);
+ return true;
+}
+
+
+
+/*********************************************************************/
+// Module stuff
+/********************************************************************/
+
+static bool str_module_init(KviModule * m)
+{
+ KVSM_REGISTER_FUNCTION(m,"split",str_kvs_fnc_split);
+ KVSM_REGISTER_FUNCTION(m,"grep",str_kvs_fnc_grep);
+ KVSM_REGISTER_FUNCTION(m,"charsum",str_kvs_fnc_charsum);
+ KVSM_REGISTER_FUNCTION(m,"len",str_kvs_fnc_len);
+ KVSM_REGISTER_FUNCTION(m,"length",str_kvs_fnc_len);
+ KVSM_REGISTER_FUNCTION(m,"isempty",str_kvs_fnc_isempty);
+ KVSM_REGISTER_FUNCTION(m,"join",str_kvs_fnc_join);
+
+ KVSM_REGISTER_FUNCTION(m,"section",str_kvs_fnc_section);
+ KVSM_REGISTER_FUNCTION(m,"lowcase",str_kvs_fnc_lowcase);
+ KVSM_REGISTER_FUNCTION(m,"upcase",str_kvs_fnc_upcase);
+ KVSM_REGISTER_FUNCTION(m,"localeupcase",str_kvs_fnc_localeupcase);
+ KVSM_REGISTER_FUNCTION(m,"localelowcase",str_kvs_fnc_localelowcase);
+ KVSM_REGISTER_FUNCTION(m,"isnumber",str_kvs_fnc_isnumber);
+ KVSM_REGISTER_FUNCTION(m,"isunsignednumber",str_kvs_fnc_isunsignednumber);
+ KVSM_REGISTER_FUNCTION(m,"contains",str_kvs_fnc_contains);
+ KVSM_REGISTER_FUNCTION(m,"containsnocase",str_kvs_fnc_containsnocase);
+ KVSM_REGISTER_FUNCTION(m,"equal",str_kvs_fnc_equal);
+ KVSM_REGISTER_FUNCTION(m,"equalnocase",str_kvs_fnc_equalnocase);
+ KVSM_REGISTER_FUNCTION(m,"cmp",str_kvs_fnc_cmp);
+ KVSM_REGISTER_FUNCTION(m,"cmpnocase",str_kvs_fnc_cmpnocase);
+ KVSM_REGISTER_FUNCTION(m,"find",str_kvs_fnc_find);
+ KVSM_REGISTER_FUNCTION(m,"findfirst",str_kvs_fnc_findfirst);
+ KVSM_REGISTER_FUNCTION(m,"findfirstnocase",str_kvs_fnc_findfirstnocase);
+ KVSM_REGISTER_FUNCTION(m,"findlast",str_kvs_fnc_findlast);
+ KVSM_REGISTER_FUNCTION(m,"findlastnocase",str_kvs_fnc_findlastnocase);
+ KVSM_REGISTER_FUNCTION(m,"left",str_kvs_fnc_left);
+ KVSM_REGISTER_FUNCTION(m,"right",str_kvs_fnc_right);
+ KVSM_REGISTER_FUNCTION(m,"mid",str_kvs_fnc_mid);
+ KVSM_REGISTER_FUNCTION(m,"append",str_kvs_fnc_append);
+ KVSM_REGISTER_FUNCTION(m,"prepend",str_kvs_fnc_prepend);
+ KVSM_REGISTER_FUNCTION(m,"insert",str_kvs_fnc_insert);
+ KVSM_REGISTER_FUNCTION(m,"strip",str_kvs_fnc_strip);
+ KVSM_REGISTER_FUNCTION(m,"stripright",str_kvs_fnc_stripright);
+ KVSM_REGISTER_FUNCTION(m,"stripleft",str_kvs_fnc_stripleft);
+ KVSM_REGISTER_FUNCTION(m,"stripcolors",str_kvs_fnc_stripcolors);
+ KVSM_REGISTER_FUNCTION(m,"replace",str_kvs_fnc_replace);
+ KVSM_REGISTER_FUNCTION(m,"replacenocase",str_kvs_fnc_replacenocase);
+ KVSM_REGISTER_FUNCTION(m,"urlencode",str_kvs_fnc_urlencode);
+ KVSM_REGISTER_FUNCTION(m,"lefttolast",str_kvs_fnc_lefttolast);
+ KVSM_REGISTER_FUNCTION(m,"lefttofirst",str_kvs_fnc_lefttofirst);
+ KVSM_REGISTER_FUNCTION(m,"rightfromfirst",str_kvs_fnc_rightfromfirst);
+ KVSM_REGISTER_FUNCTION(m,"rightfromlast",str_kvs_fnc_rightfromlast);
+ KVSM_REGISTER_FUNCTION(m,"match",str_kvs_fnc_match);
+ KVSM_REGISTER_FUNCTION(m,"matchnocase",str_kvs_fnc_matchnocase);
+ KVSM_REGISTER_FUNCTION(m,"word",str_kvs_fnc_word);
+ KVSM_REGISTER_FUNCTION(m,"token",str_kvs_fnc_token);
+ KVSM_REGISTER_FUNCTION(m,"fromClipboard",str_kvs_fnc_fromclipboard);
+ KVSM_REGISTER_FUNCTION(m,"digest",str_kvs_fnc_digest);
+ KVSM_REGISTER_FUNCTION(m,"printf",str_kvs_fnc_printf);
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"toClipboard",str_kvs_cmd_toClipboard);
+ return true;
+}
+
+static bool str_module_cleanup(KviModule *m)
+{
+ return true;
+}
+
+KVIRC_MODULE(
+ "File", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)"\
+ " (C) 2002 Juanjo Alvarez ([email protected])" \
+ " (C) 2005 Tonino Imbesi (grifisx at barmes dot org)" \
+ " (C) 2005 Alessandro Carbone (noldor at barmes dot org)", // author & (C)
+ "Interface to the str system",
+ str_module_init,
+ 0,
+ 0,
+ str_module_cleanup
+)
diff --git a/src/modules/system/Makefile.am b/src/modules/system/Makefile.am
new file mode 100644
index 00000000..69302d13
--- /dev/null
+++ b/src/modules/system/Makefile.am
@@ -0,0 +1,18 @@
+###############################################################################
+# KVirc IRC client Makesystem - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvisystem.la
+
+libkvisystem_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvisystem_la_SOURCES = libkvisystem.cpp plugin.cpp
+libkvisystem_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS = plugin.h
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/system/libkvisystem.cpp b/src/modules/system/libkvisystem.cpp
new file mode 100644
index 00000000..54ada405
--- /dev/null
+++ b/src/modules/system/libkvisystem.cpp
@@ -0,0 +1,749 @@
+//=============================================================================
+//
+// File : libkvisystem.cpp
+// Creation date : Fri Nov 16 03:50:12 2001 GMT by Szymon Stefanek
+//
+// This system is part of the KVirc irc client distribution
+// Copyright (C) 2001-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_module.h"
+#include "kvi_string.h"
+#include "kvi_library.h"
+#include "kvi_thread.h"
+
+#include "kvi_locale.h"
+#include "kvi_qcstring.h"
+#include "kvi_app.h"
+#include "kvi_env.h"
+#include "kvi_osinfo.h"
+#include "kvi_qcstring.h"
+
+#include <qclipboard.h>
+
+#ifndef COMPILE_ON_WINDOWS
+ #include <sys/utsname.h>
+ #include <stdlib.h>
+ #include <unistd.h>
+#endif
+
+#ifdef COMPILE_KDE_SUPPORT
+ #include <dcopclient.h>
+#endif
+
+#include "kvi_modulemanager.h"
+
+#include "plugin.h"
+
+KviPluginManager * g_pPluginManager;
+
+/*
+ @doc: system.ostype
+ @type:
+ function
+ @title:
+ $system.ostype
+ @short:
+ Returns the type of the operating system
+ @syntax:
+ <string> $system.ostype()
+ @description:
+ Returns the current type of operating system: unix,macosx or windows.[br]
+*/
+
+static bool system_kvs_fnc_ostype(KviKvsModuleFunctionCall * c)
+{
+ c->returnValue()->setString(KviOsInfo::type());
+ return true;
+}
+/*
+ @doc: system.osname
+ @type:
+ function
+ @title:
+ $system.osname
+ @short:
+ Returns the name of the operating system
+ @syntax:
+ <string> $system.osname()
+ @description:
+ Returns the name of the operating system. On UNIX like machines
+ this is the field sysname of the utsname structure returned by
+ the uname() syscall.
+*/
+
+static bool system_kvs_fnc_osname(KviKvsModuleFunctionCall *c)
+{
+ c->returnValue()->setString(KviOsInfo::name());
+ return true;
+}
+
+
+/*
+ @doc: system.osversion
+ @type:
+ function
+ @title:
+ $system.osversion
+ @short:
+ Returns the version of the operating system
+ @syntax:
+ <string> $system.osversion()
+ @description:
+ Returns the version of the operating system.[br]
+*/
+
+static bool system_kvs_fnc_osversion(KviKvsModuleFunctionCall *c)
+{
+ // no params to process
+ c->returnValue()->setString(KviOsInfo::version());
+ return true;
+}
+
+/*
+ @doc: system.osrelease
+ @type:
+ function
+ @title:
+ $system.osrelease
+ @short:
+ Returns the release of the operating system
+ @syntax:
+ <string> $system.osrelease()
+ @description:
+ Returns the release of the operating system.[br]
+*/
+
+static bool system_kvs_fnc_osrelease(KviKvsModuleFunctionCall *c)
+{
+ // no params to process
+ c->returnValue()->setString(KviOsInfo::release());
+ return true;
+}
+
+/*
+ @doc: system.osmachine
+ @type:
+ function
+ @title:
+ $system.osmachine
+ @short:
+ Returns the machine of the operating system
+ @syntax:
+ <string> $system.osmachine()
+ @description:
+ Returns the machine of the operating system.[br]
+*/
+
+static bool system_kvs_fnc_osmachine(KviKvsModuleFunctionCall *c)
+{
+ // no params to process
+ c->returnValue()->setString(KviOsInfo::machine());
+ return true;
+}
+
+/*
+ @doc: system.osnodename
+ @type:
+ function
+ @title:
+ $system.osnodename
+ @short:
+ Returns the nodename of the operating system
+ @syntax:
+ <string> $system.osnodename()
+ @description:
+ Returns the nodename of the operating system.[br]
+*/
+
+static bool system_kvs_fnc_osnodename(KviKvsModuleFunctionCall *c)
+{
+ // no params to process
+ c->returnValue()->setString(KviOsInfo::nodename());
+ return true;
+}
+
+/*
+ @doc: system.getenv
+ @keyterms:
+ Enviroinement variables
+ @type:
+ function
+ @title:
+ $system.getenv
+ @short:
+ Returns the value of an enviroinement variable
+ @syntax:
+ <string> $system.getenv(<variable:string>)
+ @description:
+ Returns the value of the enviroinement <variable>.[br]
+*/
+
+static bool system_kvs_fnc_getenv(KviKvsModuleFunctionCall *c)
+{
+ QString szVariable;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("variable",KVS_PT_NONEMPTYSTRING,0,szVariable)
+ KVSM_PARAMETERS_END(c)
+
+ KviQCString szVar = szVariable.local8Bit();
+#ifdef COMPILE_ON_WINDOWS
+ QString env = getenv(szVar.data());
+ QString def = __tr2qs("No environment variable found, please don't use the %% in the request");
+ c->returnValue()->setString(env.isEmpty() ? QString::fromLocal8Bit(env) : QString::fromLocal8Bit(def));
+#else
+ char * b = kvi_getenv(szVar.data());
+ c->returnValue()->setString(b ? QString::fromLocal8Bit(b) : QString::null);
+#endif
+ return true;
+}
+
+/*
+ @doc: system.clipboard
+ @keyterms:
+ Clipboard management
+ @type:
+ function
+ @title:
+ $system.clipboard
+ @short:
+ Returns the value of the system clipboard
+ @syntax:
+ <string> $system.clipboard()
+ @description:
+ Returns the current value of the system clipboard.
+ Please note that there are systems that have the concept
+ of "selection" (most notably X11) which is NOT the same as the clipboard.
+ See [fnc]$system.selection[/fnc]().
+ @seealso:
+ [fnc]$system.selection[/fnc],
+ [cmd]system.setClipboard[/cmd],
+ [cmd]system.setSelection[/cmd]
+*/
+
+static bool system_kvs_fnc_clipboard(KviKvsModuleFunctionCall *c)
+{
+ c->returnValue()->setString(g_pApp->clipboard()->text(QClipboard::Clipboard));
+ return true;
+}
+
+
+/*
+ @doc: system.setClipboard
+ @type:
+ command
+ @title:
+ system.setClipboard
+ @keyterms:
+ Clipboard management
+ @short:
+ Sets the current system clipboard contents
+ @syntax:
+ system.setClipboard <data:string>
+ @description:
+ Sets the system clipboard contents to the string <data>.
+ Please note that there are systems that have the concept
+ of "selection" (most notably X11) which is NOT the same as the clipboard.
+ See [fnc]$system.selection[/fnc]().
+ @seealso:
+ [fnc]$system.selection[/fnc],
+ [fnc]$system.clipboard[/fnc],
+ [cmd]system.setSelection[/cmd]
+*/
+
+static bool system_kvs_cmd_setClipboard(KviKvsModuleCommandCall * c)
+{
+ QString szValue;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("data",KVS_PT_STRING,KVS_PF_OPTIONAL,szValue)
+ KVSM_PARAMETERS_END(c)
+ g_pApp->clipboard()->setText(szValue,QClipboard::Clipboard);
+ return true;
+}
+
+/*
+ @doc: system.setSelection
+ @type:
+ command
+ @title:
+ system.setSelection
+ @keyterms:
+ Clipboard management
+ @short:
+ Sets the current system selection contents
+ @syntax:
+ system.setSelection <data:string>
+ @description:
+ Sets the system selection contents to the string <data>.
+ Please note that this command will work only on systems that have the concept
+ of "selection" (most notably X11) which is NOT the same as the clipboard.
+ @seealso:
+ [fnc]$system.selection[/fnc],
+ [fnc]$system.clipboard[/fnc],
+ [cmd]system.setClipboard[/cmd]
+*/
+
+static bool system_kvs_cmd_setSelection(KviKvsModuleCommandCall * c)
+{
+ QString szValue;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("data",KVS_PT_STRING,KVS_PF_OPTIONAL,szValue)
+ KVSM_PARAMETERS_END(c)
+ g_pApp->clipboard()->setText(szValue,QClipboard::Selection);
+ return true;
+}
+
+/*
+ @doc: system.selection
+ @keyterms:
+ Clipboard management
+ @type:
+ function
+ @title:
+ $system.selection
+ @short:
+ Returns the value of the system selection
+ @syntax:
+ <string> $system.selection()
+ @description:
+ Returns the current value of the system selection.
+ This function will work only on systems that have the concept
+ of "selection" (most notably X11) which is NOT the same as clipboard.
+ On other systems this function will always return an empty string.
+ See [fnc]$system.clipboard[/fnc]().
+ @seealso:
+ [fnc]$system.clipboard[/fnc],
+ [cmd]system.setClipboard[/cmd],
+ [cmd]system.setSelection[/cmd]
+*/
+
+static bool system_kvs_fnc_selection(KviKvsModuleFunctionCall *c)
+{
+ c->returnValue()->setString(g_pApp->clipboard()->text(QClipboard::Selection));
+ return true;
+}
+
+
+/*
+ @doc: system.checkModule
+ @keyterms:
+ Module checking
+ @type:
+ function
+ @title:
+ $system.checkModule
+ @short:
+ Checks if a KVIrc module is loadable
+ @syntax:
+ <boolean> $system.checkModule(<module_name:string>)
+ @description:
+ Attempts to load the specified module and returns
+ $true if succesfull and $false otherwise. This can
+ be effectively used to test if a KVIrc exension module
+ is present on the system and can be loaded by the
+ KVIrc engine.
+*/
+
+static bool system_kvs_fnc_checkModule(KviKvsModuleFunctionCall *c)
+{
+ QString szModuleName;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("module_name",KVS_PT_STRING,0,szModuleName)
+ KVSM_PARAMETERS_END(c)
+
+ c->returnValue()->setBoolean(g_pModuleManager->loadModule(szModuleName.utf8().data()));
+ return true;
+}
+
+
+/*
+ @doc: system.hostname
+ @keyterms:
+ System information
+ @type:
+ function
+ @title:
+ $system.hostname
+ @short:
+ Returns the hostname of the machine that KVIrc is running on
+ @syntax:
+ <string> $system.hostname()
+ @description:
+ Returns the hostname of the machine that KVIrc is running on.[br]
+*/
+
+static bool system_kvs_fnc_hostname(KviKvsModuleFunctionCall *c)
+{
+ // no params to process
+ c->returnValue()->setString(KviOsInfo::hostname());
+ return true;
+}
+
+
+/*
+ @doc: system.dcop
+ @keyterms:
+ System information
+ @type:
+ function
+ @title:
+ $system.dcop
+ @short:
+ Performs a DCOP call
+ @syntax:
+ <variant> $system.dcop(<application:string>,<objectid:string>,<function:string>[,<parameter1:string>[,<parameter2:string>[,...]]])
+ @description:
+ This function allows performing simple DCOP calls without executing
+ an external process. This feature is available ONLY when KDE support
+ is compiled in the executable: this means that this function is absolutely
+ non portable (don't use it in scripts that you're going to distribute).
+ <application> is the name of the application being called, <objectid> is the
+ identifier of the object called, <function> is the function to be executed
+ on the remote object and <parameter1>,<parameter2>,... is the list of
+ parameters to be passed. The <function> name must contain the
+ trailing parenthesis and parameter specification (see examples).
+ The parameters MUST be in the form "type=value"
+ where "type" is the C++ type of the parameter and value
+ is the string rappresentation of the parameter data. Currently
+ KVIrc supports only QString,KviQCString,bool,int and uint data types.[br]
+ The returned value is the string rappresentation of the returned
+ data if the return type is known, otherwise it is the name of the data type returned.
+ [br]
+ If the application name is prefixed with "?" then the call is performed in "remote test"
+ mode: no "remote" errors are printed and the function returns 1 if the call executed
+ succesfully and 0 if the call failed. This can be used with the very first
+ call to programmaticaly test if the remote application is running.
+ @examples:
+ [example]
+ echo $system.dcop("kdesktop","KBackgroundIface","currentWallpaper(int)","int=0")
+ echo $system.dcop("kdesktop","KScreensaverIface","lock()")
+ # we can also ignore the return value in several ways
+ %dummy = $system.dcop("kicker","kicker","showKMenu()")
+ $system.dcop("kdesktop","KScreensaverIface","save()")
+ $system.dcop("kicker","Panel","addBrowserButton(QString)","QString=/")
+ # runtime test if a call would work (i.e. , kicker is running at all, parameters are right etc...)
+ if($system.dcop("?kicker","kicker","showKMenu()"))echo "Can't make dcop calls to kicker!"
+ [/example]
+*/
+
+static bool system_kvs_fnc_dcop(KviKvsModuleFunctionCall *c)
+{
+ bool bTestMode = false;
+
+ KviQCString szApp,szObj,szFun;
+ QStringList parms;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("application",KVS_PT_NONEMPTYCSTRING,0,szApp)
+ KVSM_PARAMETER("objectid",KVS_PT_NONEMPTYCSTRING,0,szObj)
+ KVSM_PARAMETER("function",KVS_PT_NONEMPTYCSTRING,0,szFun)
+ KVSM_PARAMETER("parameter_list",KVS_PT_STRINGLIST,KVS_PF_OPTIONAL,parms)
+ KVSM_PARAMETERS_END(c)
+
+ if((szApp.data()) && (szApp.length() > 1))
+ {
+ if(*(szApp.data()) == '?')
+ {
+ bTestMode = true;
+ szApp.remove(0,1);
+ }
+ }
+
+#ifdef COMPILE_KDE_SUPPORT
+
+ QByteArray ba;
+ QDataStream ds(ba, IO_WriteOnly);
+
+ for ( QStringList::Iterator it = parms.begin(); it != parms.end(); ++it )
+ {
+ KviStr tmp = *it;
+
+ if(tmp.isEmpty())
+ {
+ c->warning(__tr2qs("Invalid DCOP parameter syntax"));
+ return false;
+ }
+
+ KviStr szType = tmp.leftToFirst('=',false);
+ tmp.cutToFirst('=',true);
+ if(szType.isEmpty())szType = "int";
+ bool bOk;
+ if(kvi_strEqualCI("int",szType.ptr()) || kvi_strEqualCI("long",szType.ptr()))
+ {
+ int iii = tmp.toInt(&bOk);
+ if(!bOk)
+ {
+ c->warning(__tr2qs("The specified parameter is not an integer"));
+ return false;
+ }
+ ds << iii;
+ } else if(kvi_strEqualCI("QString",szType.ptr()))
+ {
+ QString ddd = tmp.ptr();
+ ds << ddd;
+ } else if(kvi_strEqualCI("KviQCString",szType.ptr()))
+ {
+ KviQCString qcs = tmp.ptr();
+ ds << qcs;
+ } else if(kvi_strEqualCI("bool",szType.ptr()))
+ {
+ bool bbb = kvi_strEqualCI(tmp.ptr(),"true");
+ ds << bbb;
+ } else if(kvi_strEqualCI("unsigned int",szType.ptr()) || kvi_strEqualCI("uint",szType.ptr()) || kvi_strEqualCI("Q_UINT32",szType.ptr()))
+ {
+ unsigned int uii = tmp.toUInt(&bOk);
+ if(!bOk)
+ {
+ c->warning(__tr2qs("The specified parameter is not an integer"));
+ return false;
+ }
+ ds << uii;
+ } else {
+ c->warning(__tr2qs("Unsupported DCOP parameter type %s"),tmp.ptr());
+ return false;
+ }
+ }
+
+ QByteArray rba;
+ KviQCString szRetType;
+
+ bool bRet = g_pApp->dcopClient()->call(szApp,szObj,szFun,ba,szRetType,rba);
+
+ if(!bRet)
+ {
+ if(!bTestMode)
+ c->warning(__tr2qs("DCOP call failed"));
+ c->returnValue()->setInteger(0);
+ } else {
+ if(bTestMode)
+ c->returnValue()->setInteger(1);
+ else {
+ QDataStream ret(rba, IO_ReadOnly);
+ if(szRetType == "bool")
+ {
+ bool bqw;
+ ret >> bqw;
+ c->returnValue()->setInteger(bqw ? 1 : 0);
+ } else if(szRetType == "QString")
+ {
+ QString szz;
+ ret >> szz;
+ c->returnValue()->setString(szz);
+ } else if(szRetType == "QCString")
+ {
+ KviQCString sss;
+ ret >> sss;
+ c->returnValue()->setString(sss.data());
+ } else if((szRetType == "uint") || (szRetType == "unsigned int") || (szRetType == "Q_UINT32"))
+ {
+ unsigned int ui3;
+ ret >> ui3;
+ c->returnValue()->setInteger(ui3);
+ } else if((szRetType == "int") || (szRetType == "long"))
+ {
+ int iii;
+ ret >> iii;
+ c->returnValue()->setInteger(iii);
+ } else if(szRetType == "QCStringList")
+ {
+#ifndef COMPILE_USE_QT4
+ QCStringList csl;
+ ret >> csl;
+ KviKvsArray * arry = new KviKvsArray();
+ int idx = 0;
+ for(QCStringList::Iterator iter = csl.begin();iter != csl.end();++iter)
+ {
+ arry->set(idx,new KviKvsVariant(QString(*iter)));
+ idx++;
+ }
+ c->returnValue()->setArray(arry);
+#endif
+ } else if(szRetType == "QStringList")
+ {
+ QStringList csl;
+ ret >> csl;
+ KviKvsArray * arry = new KviKvsArray();
+ int idx = 0;
+ for(QStringList::Iterator iter = csl.begin();iter != csl.end();++iter)
+ {
+ arry->set(idx,new KviKvsVariant(*iter));
+ idx++;
+ }
+ c->returnValue()->setArray(arry);
+ } else {
+ c->returnValue()->setString(szRetType.data());
+ }
+ }
+ }
+#else
+ if(!bTestMode)
+ c->warning(__tr2qs("DCOP calls are available only when KDE support is compiled in"));
+ c->returnValue()->setInteger(0);
+#endif
+
+ return true;
+}
+
+
+/*
+ @doc: system.setenv
+ @type:
+ command
+ @title:
+ system.setenv
+ @keyterms:
+ Enviroinement variables
+ @short:
+ Sets an enviroinement variable
+ @syntax:
+ system.setenv <variable:string> [<value:string>]
+ @description:
+ Sets the enviroinement <variable> to the <value> string.[br]
+ If <value> is not given , the <variable> is unset.[br]
+ @seealso:
+ [fnc]$system.getenv[/fnc]
+*/
+
+
+static bool system_kvs_cmd_setenv(KviKvsModuleCommandCall * c)
+{
+ QString szVariable,szValue;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("variable",KVS_PT_NONEMPTYSTRING,0,szVariable)
+ KVSM_PARAMETER("value",KVS_PT_STRING,KVS_PF_OPTIONAL,szValue)
+ KVSM_PARAMETERS_END(c)
+
+ KviQCString szVar = szVariable.local8Bit();
+ KviQCString szVal = szValue.local8Bit();
+
+ if(szVal.isEmpty())kvi_unsetenv(szVar.data());
+ else
+ {
+/*#ifdef COMPILE_ON_WINDOWS
+ QString Var,Val,VarAndVal;
+ Val = szVar.data();
+ Var = szVal.data();
+ VarAndVal = Var+"="+Val;
+ putenv(VarAndVal);
+#else*/ // <-- this stuff is implicit in kvi_setenv: that's why we have the kvi_ version.
+ kvi_setenv(szVar.data(),szVal.data());
+/*#endif*/
+ }
+ return true;
+}
+
+/*
+ @doc: system.call
+ @keyterms:
+ call plugin
+ @type:
+ function
+ @title:
+ $system.call
+ @short:
+ Allows to call functions of a plugin
+ @syntax:
+ <string> $system.call(<plugin:string>, <function:string>[,<parameters:string>,...])
+ @description:
+ This function allows you to call simple functions of "easyplugins" (dll/so) and
+ get the result of this function. The easyplugins have to be coded in a special way.
+ If you want to write your own easyplugins, have a look on the easyplugins documentation.
+ [br]
+ [br]
+ The function needs a minimum of 2 parameters. The others are optional and not limited.[br]
+ The first one is the complete name like "example.dll" or "example.so"
+ If you have a relative path or only the filename KVIrc looks for the easyplugins in the following dirs:[br]
+ In a subdir called "easyplugins" in the local and global KVIrc directory.
+ If you give an absolute path KVIrc will load it directly.
+ [br]
+ [br]
+ You are free to add more parameters, they will be given to the easyplugin.[br]
+ The easyplugin decides how much parameters you need in addition to the first 2.
+ [br]
+ [br]
+ [b]Warning: Only use easyplugins of known and trustable sources![/b]
+ @examples:
+ [example]
+ echo $system.call("my.dll","myfunction")
+ echo $system.call("my.dll","myfunction","parameter1","parameter2")
+ echo $system.call("c:/my.dll","myfunction")
+ echo $system.call("my.so","myfunction","parameter1")
+ [/example]
+*/
+
+
+static bool system_kvs_fnc_plugin_call(KviKvsModuleFunctionCall *c)
+{
+ return g_pPluginManager->pluginCall(c);
+}
+
+static bool system_module_init(KviModule * m)
+{
+ KVSM_REGISTER_FUNCTION(m,"ostype",system_kvs_fnc_ostype);
+ KVSM_REGISTER_FUNCTION(m,"osname",system_kvs_fnc_osname);
+ KVSM_REGISTER_FUNCTION(m,"osversion",system_kvs_fnc_osversion);
+ KVSM_REGISTER_FUNCTION(m,"osrelease",system_kvs_fnc_osrelease);
+ KVSM_REGISTER_FUNCTION(m,"osmachine",system_kvs_fnc_osmachine);
+ KVSM_REGISTER_FUNCTION(m,"osnodename",system_kvs_fnc_osnodename);
+ KVSM_REGISTER_FUNCTION(m,"getenv",system_kvs_fnc_getenv);
+ KVSM_REGISTER_FUNCTION(m,"hostname",system_kvs_fnc_hostname);
+ KVSM_REGISTER_FUNCTION(m,"dcop",system_kvs_fnc_dcop);
+ KVSM_REGISTER_FUNCTION(m,"clipboard",system_kvs_fnc_clipboard);
+ KVSM_REGISTER_FUNCTION(m,"selection",system_kvs_fnc_selection);
+ KVSM_REGISTER_FUNCTION(m,"checkModule",system_kvs_fnc_checkModule);
+ KVSM_REGISTER_FUNCTION(m,"call",system_kvs_fnc_plugin_call);
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"setenv",system_kvs_cmd_setenv);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"setClipboard",system_kvs_cmd_setClipboard);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"setSelection",system_kvs_cmd_setSelection);
+
+ g_pPluginManager = new(KviPluginManager);
+
+ return true;
+}
+
+static bool system_module_cleanup(KviModule *m)
+{
+ g_pPluginManager->unloadAll();
+ delete g_pPluginManager;
+ return true;
+}
+
+static bool system_module_can_unload(KviModule *m)
+{
+ if(!g_pPluginManager->checkUnload()) return false;
+ return true;
+}
+
+KVIRC_MODULE(
+ "System", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)" \
+ " (C) 2005 Tonino Imbesi (grifisx at barmes dot org)"\
+ " (C) 2005 Alessandro Carbone (noldor at barmes dot org)",// author & (C)
+ "System informations module",
+ system_module_init,
+ system_module_can_unload,
+ 0,
+ system_module_cleanup
+)
diff --git a/src/modules/system/plugin.cpp b/src/modules/system/plugin.cpp
new file mode 100644
index 00000000..b14b18c0
--- /dev/null
+++ b/src/modules/system/plugin.cpp
@@ -0,0 +1,427 @@
+//=============================================================================
+//
+// File : plugin.cpp
+// Creation date : Wed Apr 11 04 2007 00:54:00 GMT+1 by TheXception
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "plugin.h"
+
+#include "kvi_module.h"
+#include "kvi_string.h"
+#include "kvi_library.h"
+#include "kvi_thread.h"
+#include "kvi_locale.h"
+#include "kvi_app.h"
+#include "kvi_fileutils.h"
+
+#include <qdir.h>
+#include <qfileinfo.h>
+/*
+ @doc: easyplugins
+ @type:
+ generic
+ @keyterms:
+ easyplugins
+ @title:
+ Easyplugins
+ @short:
+ Small plugins which can be called in scripts
+ @body:
+ If you want to know how to call easyplugins please have a look at: $system.call()[br]
+ This part of the documentation handles only the way how to write an easyplugin. An easyplugin is simply a dll/so. You can create one like you normally make such so/dll files. The important thing is that these so/dll-files export some of the following functions.
+ [br][br]
+ [b]Exported functions by easyplugin (C/C++-Examples):[/b][br]
+ [br][b]_free function[/b] [i] (needed)[/i][br]
+ This function is important! Since KVIrc can not free directly the memory of the dll, the plugins need the _free function so that the memory can be freed by the plugin to prevent memory-leaks.[br]
+ [example]
+ int _free(void * p)[br]
+ {[br]
+ // Always free the memory here![br]
+ free(p);[br]
+ return 0;[br]
+ }[br]
+ [/example]
+
+ [br][b]_load function[/b] [i](optional)[/i][br]
+ After the plugin has be loaded, KVIrc will call the _load-function. Here you can prepare your plugin stuff.
+ [example]
+ int _load()[br]
+ {[br]
+ return 0;[br]
+ }[br]
+ [/example]
+
+ [br][b]_unload function[/b] [i]((optional)[/i][br]
+ This function will be called before the plugins is unloaded. In this function you can clean up memory or other things.
+ After this call there is no guarantee that the plugin will be kept in memory.[br]
+ [example]
+ int _unload()[br]
+ {[br]
+ return 0;[br]
+ }[br]
+ [/example]
+
+ [br][b]_canunload function[/b] [i](optional)[/i][br]
+ The _canunload-function will be called by KVIrc to check if it may unload the plugin.
+ If return value is true KVIrc will unload the plugin, false means he will try unloading it at the next check.[br]
+ Important: KVIrc will ignore this if unload of plugins will be forced! So you have to be sure that the _unload function of your plugins cleans up![br]
+ [example]
+ int _canunload()[br]
+ {[br]
+ return 0; [br]
+ }[br]
+ [/example]
+
+ [br][b]user function[/b][br]
+ This is the general structure of a user function call.[br]
+ The important thing here is the handling of return values. To return a value to KVIrc you have to allocate memory and write the pointer to it into pBuffer. Have a look at the example for more details.[br]
+ [example]
+ int about(int argc, char * argv[], char ** pBuffer)[br]
+ {[br]
+ *pBuffer = (char*)malloc(1024);[br]
+ sprintf((char*)*pBuffer, "Hello World"); [br]
+ return 1;[br]
+ }[br]
+ [/example]
+*/
+
+KviPlugin::KviPlugin(kvi_library_t pLib, const QString& name)
+{
+ m_Plugin = pLib;
+ m_szName = name;
+}
+
+KviPlugin::~KviPlugin()
+{
+}
+
+KviPlugin* KviPlugin::load(const QString& szFileName)
+{
+ kvi_library_t pLibrary = kvi_library_open(szFileName.local8Bit());
+ if (!pLibrary)
+ {
+ return 0;
+ }
+
+ KviPlugin* pPlugin = new KviPlugin(pLibrary,KviFileUtils::extractFileName(szFileName));
+
+ plugin_load function_load;
+
+ function_load = (plugin_unload)kvi_library_symbol(pLibrary,"_load");
+ if (function_load)
+ {
+ //TODO: THREAD
+ function_load();
+ }
+ return pPlugin;
+}
+
+bool KviPlugin::pfree(char * pBuffer)
+{
+ plugin_free function_free;
+
+ function_free = (plugin_free)kvi_library_symbol(m_Plugin,"_free");
+ if (function_free)
+ {
+ //TODO: THREAD
+ if(pBuffer) function_free(pBuffer);
+ return true;
+ }
+ return false;
+}
+
+bool KviPlugin::unload()
+{
+ plugin_unload function_unload;
+
+ function_unload = (plugin_unload)kvi_library_symbol(m_Plugin,"_unload");
+ if (function_unload)
+ {
+ //TODO: THREAD
+ function_unload();
+ }
+
+ if(m_Plugin)
+ {
+ kvi_library_close(m_Plugin);
+ }
+
+ return true;
+}
+
+bool KviPlugin::canunload()
+{
+ plugin_canunload function_canunload;
+
+ function_canunload = (plugin_canunload)kvi_library_symbol(m_Plugin,"_canunload");
+ if (function_canunload)
+ {
+ //TODO: THREAD
+ if(!function_canunload())
+ {
+ return false;
+ }
+ }
+ return true;
+}
+
+int KviPlugin::call(const QString& pszFunctionName, int argc, char * argv[], char ** pBuffer)
+{
+ int r;
+ plugin_function function_call;
+ function_call = (plugin_function)kvi_library_symbol(m_Plugin,pszFunctionName.local8Bit());
+ if (!function_call)
+ {
+ return -1;
+ } else {
+ //TODO: THREAD
+ r = function_call(argc,argv,pBuffer);
+ }
+ if (r < 0) r = 0; // negative numbers are for error handling.
+ return r;
+}
+
+QString KviPlugin::name()
+{
+ return m_szName;
+}
+
+void KviPlugin::setName(const QString& Name)
+{
+ m_szName = Name;
+}
+
+
+KviPluginManager::KviPluginManager()
+{
+ m_pPluginDict = new KviPointerHashTable<QString,KviPlugin>(5,false);
+ m_pPluginDict->setAutoDelete(false);
+
+ m_bCanUnload = true;
+}
+
+KviPluginManager::~KviPluginManager()
+{
+ delete m_pPluginDict;
+}
+
+bool KviPluginManager::pluginCall(KviKvsModuleFunctionCall *c)
+{
+ // /echo $system.call("traffic.dll",about)
+ QString szPluginPath; //contains full path and plugin name like "c:/plugin.dll"
+ QString szFunctionName;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("plugin_path",KVS_PT_NONEMPTYSTRING,0,szPluginPath)
+ KVSM_PARAMETER("function",KVS_PT_NONEMPTYSTRING,0,szFunctionName)
+ KVSM_PARAMETERS_END(c)
+
+ //Check if there is such a plugin
+ if(!findPlugin(szPluginPath))
+ {
+ c->error(__tr2qs("Plugin not found. Please check the plugin-name and path."));
+ return true;
+ }
+
+ //Load plugin or check it in cache
+ if(!loadPlugin(szPluginPath))
+ {
+ c->error(__tr2qs("Error while loading plugin."));
+ return true;
+ }
+
+ //Parsing more Parameters
+ int iArgc = 0;
+ char ** ppArgv;
+ char * pArgvBuffer;
+
+ //Preparing argv buffer
+ if(c->parameterCount() > 2)
+ {
+ iArgc = c->parameterCount() - 2;
+ }
+
+ if (iArgc > 0)
+ {
+ int i = 2;
+ QString tmp;
+ int iSize = 0;
+
+ //Calculate buffer size
+ while (i < (iArgc + 2) )
+ {
+ c->params()->at(i)->asString(tmp);
+ iSize += tmp.length()+1; //+1 for the \0 characters
+ i++;
+ }
+
+ //Allocate buffer
+ ppArgv = (char**)malloc(iArgc*sizeof(char*));
+ pArgvBuffer = (char*)malloc(iSize);
+
+ i = 2;
+ char * x = 0;
+ x = pArgvBuffer;
+ while (i < (iArgc + 2) )
+ {
+ ppArgv[i-2] = x;
+ c->params()->at(i)->asString(tmp);
+ strcpy(x,tmp.local8Bit());
+ x += tmp.length();
+
+ *x = 0;
+ x++;
+ i++;
+ }
+
+ } else {
+ //Avoid using unfilled variables
+ ppArgv = 0;
+ pArgvBuffer = 0;
+ iArgc = 0;
+ }
+
+ //Preparing return buffer
+ char * returnBuffer;
+ KviPlugin * plugin;
+
+ plugin = getPlugin(szPluginPath);
+ int r = plugin->call(szFunctionName,iArgc,ppArgv,&returnBuffer);
+
+ if(r == -1)
+ {
+ c->error(__tr2qs("This plugin does not export the desired function."));
+ return true;
+ }
+ if (r > 0)
+ {
+ c->returnValue()->setString(QString::fromLocal8Bit(returnBuffer));
+ }
+
+
+ //Clean up
+ if(pArgvBuffer) free(pArgvBuffer);
+ if(ppArgv) free(ppArgv);
+ if(returnBuffer)
+ {
+ if (!plugin->pfree(returnBuffer))
+ {
+ c->warning(__tr2qs("The plugin has no function to free memory. This can result in Memory Leaks!"));
+ }
+ }
+
+
+
+ return true;
+}
+
+bool KviPluginManager::checkUnload()
+{
+ /*
+ Always called when system module should be unloaded
+ Checking here if all small "modules" can be unloaded
+ */
+ KviPointerHashTableIterator<QString,KviPlugin> it(*m_pPluginDict);
+
+ m_bCanUnload = true;
+
+ while(it.current())
+ {
+ if(it.current()->canunload())
+ {
+ it.current()->unload();
+ m_pPluginDict->remove(it.currentKey());
+ } else {
+ m_pPluginDict++;
+ m_bCanUnload = false;
+ }
+ }
+
+ return m_bCanUnload;
+}
+
+void KviPluginManager::unloadAll()
+{
+ KviPointerHashTableIterator<QString,KviPlugin> it(*m_pPluginDict);
+
+ while(it.current())
+ {
+ it.current()->unload();
+ m_pPluginDict->remove(it.currentKey());
+ }
+}
+
+bool KviPluginManager::findPlugin(QString& szPath)
+{
+ QString szFileName(KviFileUtils::extractFileName(szPath));
+// szFileName.detach();
+ if(KviFileUtils::isAbsolutePath(szPath) && KviFileUtils::fileExists(szPath))
+ {
+ // Ok,
+ return true;
+ } else {
+ //Plugin not found in direct way. Looking in kvirc local dir
+ g_pApp->getGlobalKvircDirectory(szPath,KviApp::EasyPlugins,szFileName);
+
+ if(!KviFileUtils::fileExists(szPath))
+ {
+ //Plugin not found in kvirc local dir. Looking in kvirc global dir
+ g_pApp->getLocalKvircDirectory(szPath,KviApp::EasyPlugins,szFileName);
+
+ if(!KviFileUtils::fileExists(szPath))
+ {
+ return false;
+ }
+ }
+ }
+ return true;
+}
+
+bool KviPluginManager::isPluginLoaded(const QString& pSingleName)
+{
+ KviPlugin * p = m_pPluginDict->find(pSingleName);
+ if (!p)
+ return false;
+ else
+ return true;
+}
+
+bool KviPluginManager::loadPlugin(const QString& szPluginPath)
+{
+ if(isPluginLoaded(szPluginPath))
+ {
+ return getPlugin(szPluginPath)!=0;
+ } else {
+ KviPlugin * plugin = KviPlugin::load(szPluginPath);
+ if(plugin)
+ {
+ m_pPluginDict->insert(szPluginPath,plugin);
+ return true;
+ }
+ }
+ return false;
+}
+
+KviPlugin * KviPluginManager::getPlugin(const QString& szPluginPath)
+{
+ KviPlugin * p = m_pPluginDict->find(szPluginPath);
+ return p;
+} \ No newline at end of file
diff --git a/src/modules/system/plugin.h b/src/modules/system/plugin.h
new file mode 100644
index 00000000..64b1723a
--- /dev/null
+++ b/src/modules/system/plugin.h
@@ -0,0 +1,80 @@
+#ifndef _PLUGIN_H_
+#define _PLUGIN_H_
+//=============================================================================
+//
+// File : plugin.h
+// Creation date : Wed Apr 11 04 2007 00:54:00 GMT+1 by TheXception
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_module.h"
+#include "kvi_pointerhashtable.h"
+
+typedef int (*plugin_function)(int argc, char* argv[], char ** buffer);
+typedef int (*plugin_unload)();
+typedef int (*plugin_canunload)();
+typedef int (*plugin_load)();
+typedef int (*plugin_free)(char * pBuffer);
+
+class KviPlugin
+{
+protected:
+ // You have to create plugin instance by calling KviPlugin::load()
+ KviPlugin(kvi_library_t pLib, const QString& name);
+public:
+ ~KviPlugin();
+private:
+ // shared
+ // internal
+ kvi_library_t m_Plugin;
+ QString m_szName;
+public:
+ static KviPlugin* load(const QString& szFileName);
+ bool pfree(char * pBuffer);
+ bool unload();
+ bool canunload();
+ int call(const QString& szFunctionName, int argc, char * argv[], char ** pBuffer);
+ QString name();
+ void setName(const QString& szName);
+protected:
+};
+
+class KviPluginManager
+{
+ public:
+ KviPluginManager();
+ ~KviPluginManager();
+ private:
+ // shared
+ bool m_bCanUnload;
+ // internal
+ KviPointerHashTable<QString,KviPlugin> * m_pPluginDict;
+ public:
+ bool pluginCall(KviKvsModuleFunctionCall *c);
+ bool checkUnload();
+ void unloadAll();
+ protected:
+ bool findPlugin(QString& szName);
+ bool isPluginLoaded(const QString& szFileNameOrPathToLoad);
+ bool loadPlugin(const QString& szPluginPath);
+ KviPlugin * getPlugin(const QString& szPluginPath);
+};
+
+#endif //_PLUGIN_H_ \ No newline at end of file
diff --git a/src/modules/term/Makefile.am b/src/modules/term/Makefile.am
new file mode 100644
index 00000000..1567e615
--- /dev/null
+++ b/src/modules/term/Makefile.am
@@ -0,0 +1,21 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkviterm.la
+
+libkviterm_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkviterm_la_SOURCES = libkviterm.cpp termwidget.cpp termwindow.cpp
+libkviterm_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= termwidget.h termwindow.h
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+termwidget.cpp: termwidget.moc
+termwindow.cpp: termwindow.moc
diff --git a/src/modules/term/libkviterm.cpp b/src/modules/term/libkviterm.cpp
new file mode 100644
index 00000000..742aaa62
--- /dev/null
+++ b/src/modules/term/libkviterm.cpp
@@ -0,0 +1,167 @@
+//
+// File : libkviterm.cpp
+// Creation date : Wed Aug 30 2000 15:29:02 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+
+#include "kvi_module.h"
+
+#include "kvi_window.h"
+
+#include "kvi_frame.h"
+
+#include <qsplitter.h>
+#include "kvi_pointerlist.h"
+
+#ifdef COMPILE_KDE_SUPPORT
+
+ #include "termwidget.h"
+ #include "termwindow.h"
+
+ #include "ktrader.h"
+
+// #include "kparts/part.h"
+// #include "kparts/factory.h"
+// #include "klibloader.h"
+
+#endif
+
+KviModule * g_pTermModule = 0;
+
+#ifdef COMPILE_KDE_SUPPORT
+ KviPointerList<KviTermWidget> * g_pTermWidgetList = 0;
+ KviPointerList<KviTermWindow> * g_pTermWindowList = 0;
+ KviStr g_szKonsoleLibraryName = "";
+#endif
+
+/*
+ @doc: term.open
+ @type:
+ command
+ @title:
+ term.open
+ @short:
+ Shows a terminal emulator
+ @syntax:
+ term.open [-m]
+ @switches:
+ !sw: -m | --mdi
+ creates terminal as a MDI window
+ @description:
+ Opens a new terminal window (If the service is available).
+ if the -m switch is present, the created terminal as a MDI window,
+ otherwise it is a static window.[br]
+ This command is exported by the "term" module.[br]
+ Note: At the time that this module was written, the
+ KDE terminal emulator module was quite unstable; no extensive
+ testings have been made on this.
+*/
+
+static bool term_kvs_cmd_open(KviKvsModuleCommandCall * c)
+{
+#ifdef COMPILE_KDE_SUPPORT
+ if(g_szKonsoleLibraryName.hasData())
+ {
+ c->module()->lock(); // multiple locks are allowed
+ if(c->hasSwitch('m',"mdi"))
+ {
+ KviTermWindow *w = new KviTermWindow(c->window()->frame(),"Terminal emulator");
+ c->window()->frame()->addWindow(w);
+ } else {
+ KviTermWidget *w = new KviTermWidget(c->window()->frame()->splitter(),
+ c->window()->frame(),true);
+ w->show();
+ }
+ } else {
+ c->warning("No terminal emulation service available");
+ }
+#else
+ c->warning("Terminal emulation service not supported (non-KDE compilation)");
+#endif
+ return true;
+}
+
+static bool term_module_init(KviModule * m)
+{
+ g_pTermModule = m;
+
+#ifdef COMPILE_KDE_SUPPORT
+ g_pTermWidgetList = new KviPointerList<KviTermWidget>;
+ g_pTermWidgetList->setAutoDelete(false);
+ g_pTermWindowList = new KviPointerList<KviTermWindow>;
+ g_pTermWindowList->setAutoDelete(false);
+
+// KTrader::OfferList offers = KTrader::self()->query("Browser/View","KonsolePart");
+// KTrader::OfferList offers = KTrader::self()->query("Browser/View","");
+// if(offers.count() > 0)
+// {
+// KTrader::OfferList::Iterator it = offers.begin();
+// while(it != offers.end())
+// {
+// KviStr tmp = (*it)->name();
+// KviStr tmp2 = (*it)->type();
+// KviStr tmp3 = (*it)->library();
+// debug("Got Service name:%s type:%s library:%s",tmp.ptr(),tmp2.ptr(),tmp3.ptr());
+// ++it;
+// }
+// }
+// KService::Ptr service = *offers.begin();
+ KService::Ptr pKonsoleService = KService::serviceByName("Terminal Emulator");
+ if(!pKonsoleService)pKonsoleService = KService::serviceByName("KonsolePart");
+ if(!pKonsoleService)pKonsoleService = KService::serviceByName("Terminal *");
+ if(pKonsoleService)
+ {
+ g_szKonsoleLibraryName = pKonsoleService->library();
+// debug("KONSOLE LIB %s",g_szKonsoleLibraryName.ptr());
+ }
+// delete pKonsoleService;
+#endif
+
+// m->registerCommand("open",term_module_cmd_open);
+#ifdef COMPILE_NEW_KVS
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"open",term_kvs_cmd_open);
+#endif
+ return true;
+}
+
+static bool term_module_cleanup(KviModule *m)
+{
+#ifdef COMPILE_KDE_SUPPORT
+ while(g_pTermWidgetList->first())delete g_pTermWidgetList->first();
+ delete g_pTermWidgetList;
+ g_pTermWidgetList = 0;
+ while(g_pTermWindowList->first())g_pTermWindowList->first()->close();
+ delete g_pTermWindowList;
+ g_pTermWindowList = 0;
+#endif
+ return true;
+}
+
+KVIRC_MODULE(
+ "Term", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2000 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "Terminal emulator extension based on the KonsolePart KDE class",
+ term_module_init,
+ 0,
+ 0,
+ term_module_cleanup
+)
diff --git a/src/modules/term/termwidget.cpp b/src/modules/term/termwidget.cpp
new file mode 100644
index 00000000..45bf63a0
--- /dev/null
+++ b/src/modules/term/termwidget.cpp
@@ -0,0 +1,179 @@
+//
+// File : termwidget.cpp
+// Creation date : Thu Aug 10 2000 17:42:12 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2000-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "termwidget.h"
+#include "termwindow.h"
+
+#include "kvi_module.h"
+#include "kvi_frame.h"
+#include "kvi_iconmanager.h"
+#include "kvi_locale.h"
+
+#include <qlabel.h>
+#include "kvi_pointerlist.h"
+#include <qtooltip.h>
+#include <qtimer.h>
+
+#ifdef COMPILE_KDE_SUPPORT
+
+#include "klibloader.h"
+#include "kparts/part.h"
+#include "kparts/factory.h"
+
+extern KviModule * g_pTermModule;
+extern KviPointerList<KviTermWidget> * g_pTermWidgetList;
+extern KviPointerList<KviTermWindow> * g_pTermWindowList;
+extern KviStr g_szKonsoleLibraryName;
+
+KviTermWidget::KviTermWidget(QWidget * par,KviFrame * lpFrm,bool bIsStandalone)
+: QFrame(par,"term_widget")
+{
+ if(bIsStandalone)g_pTermWidgetList->append(this);
+ m_bIsStandalone = bIsStandalone;
+
+ m_pKonsolePart = 0;
+ m_pKonsoleWidget = 0;
+
+ if(bIsStandalone)
+ {
+ m_pHBox = new KviTalHBox(this);
+ m_pTitleLabel = new QLabel(__tr2qs("Terminal emulator"),m_pHBox);
+ m_pTitleLabel->setFrameStyle(QFrame::Raised | QFrame::WinPanel);
+ m_pCloseButton = new QPushButton("",m_pHBox);
+ m_pCloseButton->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CLOSE)));
+ QToolTip::add(m_pCloseButton,__tr2qs("Close this window"));
+ m_pHBox->setStretchFactor(m_pTitleLabel,2);
+ connect(m_pCloseButton,SIGNAL(clicked()),this,SLOT(closeClicked()));
+ } else {
+ m_pHBox = 0;
+ m_pTitleLabel = 0;
+ m_pCloseButton = 0;
+ }
+
+ setFrameStyle(QFrame::Sunken | QFrame::Panel);
+
+ KParts::Factory * pKonsoleFactory = static_cast<KParts::Factory *>(
+ KLibLoader::self()->factory(g_szKonsoleLibraryName.ptr()));
+
+ if(pKonsoleFactory)
+ {
+// debug("FACTORY %d",pKonsoleFactory);
+ m_pKonsolePart = static_cast<KParts::Part *>(pKonsoleFactory->createPart(
+ this,"terminal emulator",this,"the konsole part"));
+
+ if(m_pKonsolePart)
+ {
+// debug("PART %d",m_pKonsolePart);
+ m_pKonsoleWidget = m_pKonsolePart->widget();
+ connect(m_pKonsoleWidget,SIGNAL(destroyed()),this,SLOT(konsoleDestroyed()));
+// debug("Widget %d",m_pKonsoleWidget);
+ } else {
+ m_pKonsoleWidget = new QLabel(this,
+ __tr2qs("Can't create the terminal emulation part"));
+ }
+
+ } else {
+ m_pKonsoleWidget = new QLabel(this,
+ __tr2qs("Can't retrieve the terminal emulation factory"));
+ }
+}
+
+KviTermWidget::~KviTermWidget()
+{
+ if(m_pKonsoleWidget)
+ disconnect(m_pKonsoleWidget,SIGNAL(destroyed()),this,SLOT(konsoleDestroyed()));
+
+ if(m_bIsStandalone)g_pTermWidgetList->removeRef(this);
+ if(g_pTermWindowList->isEmpty() && g_pTermWidgetList->isEmpty())g_pTermModule->unlock();
+
+// debug("DELETING KONSOLE WIDGET");
+// if(m_pKonsoleWidget)delete m_pKonsoleWidget; <--// Qt will delete it
+// debug("DELETING KONSOLE PART");
+// if(m_pKonsolePart)delete m_pKonsolePart; <--// the part will delete self when the widget will die
+// debug("KONSOLE PART DELETED");
+}
+
+void KviTermWidget::resizeEvent(QResizeEvent *e)
+{
+ int hght = 0;
+ if(m_bIsStandalone)
+ {
+ hght = m_pCloseButton->sizeHint().height();
+ m_pHBox->setGeometry(1,1,width() - 2,hght + 1);
+
+ }
+ if(m_pKonsoleWidget)m_pKonsoleWidget->setGeometry(1,hght + 1,width() - 2,height() - (hght + 2));
+}
+
+void KviTermWidget::closeClicked()
+{
+ // this is called only in standalone mode
+ delete this;
+}
+
+void KviTermWidget::konsoleDestroyed()
+{
+ m_pKonsoleWidget = 0;
+ m_pKonsolePart = 0;
+ hide();
+ QTimer::singleShot(0,this,SLOT(autoClose()));
+}
+
+void KviTermWidget::autoClose()
+{
+ if(m_bIsStandalone)delete this;
+ else ((KviWindow *)parent())->close();
+}
+
+void KviTermWidget::changeTitle(int i,const QString& str)
+{
+ if(m_bIsStandalone)m_pTitleLabel->setText(str);
+}
+
+void KviTermWidget::notifySize(int,int)
+{
+}
+
+void KviTermWidget::changeColumns(int)
+{
+}
+
+QSize KviTermWidget::sizeHint() const
+{
+ int hght = 0;
+ int wdth = 0;
+ if(m_pKonsoleWidget)
+ {
+ hght += m_pKonsoleWidget->sizeHint().height();
+ wdth = m_pKonsoleWidget->sizeHint().width();
+ }
+ if(m_pCloseButton)
+ {
+ hght += m_pCloseButton->sizeHint().height();
+ }
+
+ return QSize(wdth + 2,hght + 2);
+}
+
+#include "termwidget.moc"
+
+#endif //COMPILE_KDE_SUPPORT
diff --git a/src/modules/term/termwidget.h b/src/modules/term/termwidget.h
new file mode 100644
index 00000000..88e9d9a7
--- /dev/null
+++ b/src/modules/term/termwidget.h
@@ -0,0 +1,72 @@
+#ifndef _HELPWIDGET_H_
+#define _HELPWIDGET_H_
+//
+// File : termwidget.h
+// Creation date : Wed Aug 30 2000 15:34:20 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_KDE_SUPPORT
+
+#include <qframe.h>
+#include <qlabel.h>
+#include <qpushbutton.h>
+#include "kvi_tal_hbox.h"
+
+#include "kparts/part.h"
+
+
+class KviFrame;
+
+class KviTermWidget : public QFrame
+{
+ Q_OBJECT
+ Q_PROPERTY( int KviProperty_ChildFocusOwner READ dummy )
+public:
+ KviTermWidget(QWidget * par,KviFrame * lpFrm,bool bIsStandalone = false);
+ ~KviTermWidget();
+private:
+ KviTalHBox * m_pHBox;
+ QLabel * m_pTitleLabel;
+ QPushButton * m_pCloseButton;
+ KParts::Part * m_pKonsolePart;
+ bool m_bIsStandalone;
+ QWidget * m_pKonsoleWidget;
+protected:
+ virtual void resizeEvent(QResizeEvent *e);
+protected slots:
+ void closeClicked();
+ void changeTitle(int i,const QString& str);
+ void notifySize(int,int);
+ void changeColumns(int);
+public:
+ QWidget * konsoleWidget(){ return m_pKonsoleWidget ? m_pKonsoleWidget : this; };
+ virtual QSize sizeHint() const;
+ int dummy() const { return 0; };
+protected slots:
+ void konsoleDestroyed();
+ void autoClose();
+};
+
+#endif
+
+
+#endif //_HELPWIDGET_H_
diff --git a/src/modules/term/termwindow.cpp b/src/modules/term/termwindow.cpp
new file mode 100644
index 00000000..39b6cc1a
--- /dev/null
+++ b/src/modules/term/termwindow.cpp
@@ -0,0 +1,84 @@
+//
+// File : termwindow.cpp
+// Creation date : Thu Aug 31 2000 15:02:22 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+#include "termwindow.h"
+#include "termwidget.h"
+
+#ifdef COMPILE_KDE_SUPPORT
+
+
+#include "kvi_iconmanager.h"
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_module.h"
+
+extern KviModule * g_pTermModule;
+extern KviPointerList<KviTermWindow> * g_pTermWindowList;
+extern KviPointerList<KviTermWidget> * g_pTermWidgetList;
+
+KviTermWindow::KviTermWindow(KviFrame * lpFrm,const char * name)
+: KviWindow(KVI_WINDOW_TYPE_TERM,lpFrm,name)
+{
+ g_pTermWindowList->append(this);
+ m_pTermWidget = 0;
+ m_pTermWidget = new KviTermWidget(this,lpFrm);
+ // Ensure proper focusing
+// setFocusHandler(m_pTermWidget->konsoleWidget(),this);
+}
+
+KviTermWindow::~KviTermWindow()
+{
+ g_pTermWindowList->removeRef(this);
+ if(g_pTermWindowList->isEmpty() && g_pTermWidgetList->isEmpty())g_pTermModule->unlock();
+}
+
+QPixmap * KviTermWindow::myIconPtr()
+{
+ return g_pIconManager->getSmallIcon(KVI_SMALLICON_RAW);
+}
+
+void KviTermWindow::resizeEvent(QResizeEvent *e)
+{
+ if(m_pTermWidget)m_pTermWidget->setGeometry(0,0,width(),height());
+}
+
+QSize KviTermWindow::sizeHint() const
+{
+ return m_pTermWidget ? m_pTermWidget->sizeHint() : KviWindow::sizeHint();
+}
+
+void KviTermWindow::fillCaptionBuffers()
+{
+ m_szPlainTextCaption.sprintf(__tr("Terminal"));
+
+ m_szHtmlActiveCaption.sprintf(
+ __tr("<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"),
+ KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name().ascii(),
+ KVI_OPTION_COLOR(KviOption_colorCaptionTextActive2).name().ascii());
+ m_szHtmlInactiveCaption.sprintf(
+ __tr("<nobr><font color=\"%s\"><b>Terminal</b></font></nobr>"),
+ KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name().ascii(),
+ KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive2).name().ascii());
+}
+
+#include "termwindow.moc"
+
+#endif
diff --git a/src/modules/term/termwindow.h b/src/modules/term/termwindow.h
new file mode 100644
index 00000000..e3a9d556
--- /dev/null
+++ b/src/modules/term/termwindow.h
@@ -0,0 +1,54 @@
+#ifndef _TERMWINDOW_H_
+#define _TERMWINDOW_H_
+//
+// File : termwindow.h
+// Creation date : Thu Aug 31 2000 15:00:00 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_settings.h"
+
+#ifdef COMPILE_KDE_SUPPORT
+
+
+#include "kvi_window.h"
+#include "kvi_string.h"
+
+class KviTermWidget;
+
+class KviTermWindow : public KviWindow
+{
+ Q_OBJECT
+public:
+ KviTermWindow(KviFrame * lpFrm,const char * name);
+ ~KviTermWindow();
+protected:
+ KviTermWidget * m_pTermWidget;
+protected:
+ virtual QPixmap * myIconPtr();
+ virtual void fillCaptionBuffers();
+ virtual void resizeEvent(QResizeEvent *e);
+public:
+ virtual QSize sizeHint() const;
+};
+
+
+#endif
+
+#endif //_KVI_HELPWINDOW_H_
diff --git a/src/modules/texticons/Makefile.am b/src/modules/texticons/Makefile.am
new file mode 100644
index 00000000..77646abd
--- /dev/null
+++ b/src/modules/texticons/Makefile.am
@@ -0,0 +1,18 @@
+###############################################################################
+# KVirc IRC client Makemath - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvitexticons.la
+
+libkvitexticons_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvitexticons_la_SOURCES = libkvitexticons.cpp
+libkvitexticons_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+# noinst_HEADERS=
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/texticons/libkvitexticons.cpp b/src/modules/texticons/libkvitexticons.cpp
new file mode 100644
index 00000000..2179bf41
--- /dev/null
+++ b/src/modules/texticons/libkvitexticons.cpp
@@ -0,0 +1,161 @@
+//=============================================================================
+//
+// File : libkvitexticons.cpp
+// Creation date : Wed May 10 14:00:12 2006 GMT by Alexey Uzhva
+//
+// This math is part of the KVirc irc client distribution
+// Copyright (C) 2006 Alexey Uzhva (wizard at opendoor dot ru)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_module.h"
+#include "kvi_texticonmanager.h"
+
+/*
+ @doc: texticons.get
+ @type:
+ function
+ @title:
+ $texticons.get
+ @short:
+ Retreives texticon data
+ @syntax:
+ <hash> $texticons.get()
+ <string> $texticons.get(<iconName:string>)
+ <integer> $texticons.get(<iconName:string>)
+ @description:
+ if <iconName:string> is setted returns integer icon id or string filename, associciated with <iconName:string>[br]
+ if <iconName:string> isn't set returns hash where keys are the icon names, and values are the icon id's or filenames
+ @seealso:
+ [fnc]$texticons.get[/fnc]
+*/
+
+static bool texticons_kvs_fnc_get(KviKvsModuleFunctionCall * c)
+{
+ QString szIcon;
+ KviTextIcon* pIcon=0;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("iconName",KVS_PT_NONEMPTYSTRING,KVS_PF_OPTIONAL,szIcon)
+ KVSM_PARAMETERS_END(c)
+ if(!szIcon.isNull())
+ {
+ pIcon=g_pTextIconManager->lookupTextIcon(szIcon);
+ if(!pIcon)
+ {
+ c->warning("Icon '%s' not found",szIcon.utf8().data());
+ } else {
+ if(pIcon->id()!=-1)
+ c->returnValue()->setInteger(pIcon->id());
+ else
+ c->returnValue()->setString(pIcon->filename());
+ }
+ } else {
+ KviKvsHash* hash = new KviKvsHash();
+
+ KviPointerHashTableIterator<QString,KviTextIcon> it(*(g_pTextIconManager->textIconDict()));
+
+ while(KviTextIcon * i = it.current())
+ {
+ if(i->id()!=-1)
+ hash->set(it.currentKey(),new KviKvsVariant( (kvs_int_t)(i->id()) ));
+ else
+ hash->set(it.currentKey(),new KviKvsVariant(i->filename()));
+ ++it;
+ }
+ c->returnValue()->setHash(hash);
+ }
+ return true;
+}
+
+/*
+ @doc: texticons.set
+ @type:
+ command
+ @title:
+ $texticons.set
+ @short:
+ Sets texticon data
+ @syntax:
+ texticons.set <iconName:string>
+ texticons.set <iconName:string> <iconFile:string>
+ texticons.set <iconName:string> <iconId:integer>
+ @description:
+ if command gets only 1 argument it removes <iconName:string> from list of texticons[br]
+ if it gets an integer second parameters, command associates <iconName:string> icon with builin icon, having id <iconId:integer>[br]
+ if it gets a string second parameters, command associates <iconName:string> icon with the filename <iconFile:string>
+ @seealso:
+ [fnc]$texticons.get[/fnc]
+*/
+
+static bool texticons_kvs_cmd_set(KviKvsModuleCommandCall * c)
+{
+ QString szName,szIcon;
+ KviTextIcon* pIcon=0;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("iconName",KVS_PT_NONEMPTYSTRING,0,szName)
+ KVSM_PARAMETER("iconIdOrFile",KVS_PT_STRING,KVS_PF_OPTIONAL,szIcon)
+ KVSM_PARAMETERS_END(c)
+ if(szIcon.isNull())
+ {
+ g_pTextIconManager->textIconDict()->remove(szName);
+ } else {
+ pIcon=g_pTextIconManager->lookupTextIcon(szName);
+ if(!pIcon)
+ {
+ KviTextIcon* pTmpIcon=new KviTextIcon(-1);
+ g_pTextIconManager->insert(szName,*pTmpIcon);
+ delete pTmpIcon;
+ pIcon=g_pTextIconManager->lookupTextIcon(szName);
+ if(!pIcon) return false;
+ }
+
+ bool bOk;
+ unsigned int iResult=szIcon.toUInt(&bOk);
+ if(bOk)
+ pIcon->setId(iResult);
+ else
+ pIcon->setFilename(szIcon);
+
+ }
+ g_pTextIconManager->checkDefaultAssociations();
+ return true;
+}
+
+static bool texticons_module_init(KviModule * m)
+{
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"set",texticons_kvs_cmd_set);
+
+ KVSM_REGISTER_FUNCTION(m,"get",texticons_kvs_fnc_get);
+ return true;
+}
+
+
+static bool texticons_module_cleanup(KviModule *m)
+{
+ return true;
+}
+
+KVIRC_MODULE(
+ "Texticons", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2006 Alexey Uzhva (wizard at opendoor dot ru)",
+ "Texticons handling functions module",
+ texticons_module_init,
+ 0,
+ 0,
+ texticons_module_cleanup
+)
diff --git a/src/modules/theme/Makefile.am b/src/modules/theme/Makefile.am
new file mode 100644
index 00000000..5417e9e5
--- /dev/null
+++ b/src/modules/theme/Makefile.am
@@ -0,0 +1,36 @@
+###############################################################################
+# KVirc IRC client Makefile - 30.12.2006 Szymon Stefanek <pragma at kvirc dot net>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvitheme.la
+
+libkvitheme_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvitheme_la_SOURCES = libkvitheme.cpp \
+ managementdialog.cpp \
+ packthemedialog.cpp \
+ savethemedialog.cpp \
+ themefunctions.cpp
+
+nodist_libkvitheme_la_SOURCES = moc_managementdialog.cpp \
+ moc_packthemedialog.cpp \
+ moc_savethemedialog.cpp
+
+libkvitheme_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= managementdialog.h \
+ packthemedialog.h \
+ savethemedialog.h \
+ themefunctions.h
+
+moc_managementdialog.cpp: managementdialog.h
+ $(SS_QT_MOC) $< -o $@
+
+moc_packthemedialog.cpp: packthemedialog.h
+ $(SS_QT_MOC) $< -o $@
+
+moc_savethemedialog.cpp: savethemedialog.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/theme/libkvitheme.cpp b/src/modules/theme/libkvitheme.cpp
new file mode 100644
index 00000000..cba1b4e8
--- /dev/null
+++ b/src/modules/theme/libkvitheme.cpp
@@ -0,0 +1,193 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// File : libkvitheme.cpp
+// Created on Sat 30 Dec 2006 14:54:56 by Szymon Stefanek
+//
+// This toolbar is part of the KVirc irc client distribution
+// Copyright (C) 2006 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include "kvi_module.h"
+#include "kvi_locale.h"
+#include "kvi_qstring.h"
+#include "kvi_parameterlist.h"
+#include "kvi_cmdformatter.h"
+#include "kvi_qstring.h"
+#include "kvi_error.h"
+#include "kvi_out.h"
+#include "kvi_iconmanager.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_config.h"
+#include "kvi_sourcesdate.h"
+#include "kvi_fileutils.h"
+#include "kvi_filedialog.h"
+
+#include "managementdialog.h"
+#include "themefunctions.h"
+
+#include <qfileinfo.h>
+
+QRect g_rectManagementDialogGeometry(0,0,0,0);
+
+
+/*
+ @doc: theme.install
+ @type:
+ command
+ @title:
+ theme.install
+ @short:
+ Shows the theme theme management editor
+ @syntax:
+ theme.install <package_path:string>
+ @description:
+ Attempts to install the themes in the package specified by <package_path>.
+*/
+
+static bool theme_kvs_cmd_install(KviKvsModuleCommandCall * c)
+{
+ QString szThemePackFile;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("package_path",KVS_PT_STRING,0,szThemePackFile)
+ KVSM_PARAMETERS_END(c)
+
+ QString szError;
+ if(!KviThemeFunctions::installThemePackage(szThemePackFile,szError))
+ {
+ c->error(__tr2qs_ctx("Error installing theme package: %Q","theme"),&szError);
+ return false;
+ }
+
+ return true;
+}
+
+/*
+ @doc: theme.screenshot
+ @type:
+ command
+ @title:
+ theme.screenshot
+ @short:
+ Makes a screenshot of the KVIrc window
+ @syntax:
+ theme.screenshot [file_name_path:string]
+ @description:
+ Makes a screenshot of the KVIrc main window
+ and saves it in the specified file. If [file_name_path]
+ is not specified then a save file dialog is shown.
+*/
+
+static bool theme_kvs_cmd_screenshot(KviKvsModuleCommandCall * c)
+{
+ QString szFileName;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("file_name_path",KVS_PT_STRING,KVS_PF_OPTIONAL,szFileName)
+ KVSM_PARAMETERS_END(c)
+
+
+ KviFileUtils::adjustFilePath(szFileName);
+
+ QString szTmp;
+ c->enterBlockingSection();
+
+ bool bResult = KviFileDialog::askForSaveFileName(szTmp,__tr2qs_ctx("Choose a file to save the screenshot to","theme"),szFileName,"*.png");
+
+ if(!c->leaveBlockingSection())return false; // need to stop immediately
+ if(!bResult)return true;
+
+ szFileName = szTmp;
+
+ if(szFileName.isEmpty())return true; // done
+ KviFileUtils::adjustFilePath(szFileName);
+ if(QFileInfo(szFileName).extension(false)!="png")
+ szFileName+=".png";
+
+ QString szError;
+ if(!KviThemeFunctions::makeKVIrcScreenshot(szFileName))
+ {
+ c->error(__tr2qs_ctx("Error making screenshot","theme")); // FIXME: a nicer error ?
+ return false;
+ }
+
+ return true;
+}
+
+/*
+ @doc: theme.dialog
+ @type:
+ command
+ @title:
+ theme.dialog
+ @short:
+ Shows the theme theme management editor
+ @syntax:
+ theme.dialog
+ @description:
+ Shows the theme theme management editor
+*/
+
+static bool theme_kvs_cmd_dialog(KviKvsModuleCommandCall * c)
+{
+ KviThemeManagementDialog::display();
+ return true;
+}
+
+static bool theme_module_init(KviModule *m)
+{
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"dialog",theme_kvs_cmd_dialog);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"install",theme_kvs_cmd_install);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"screenshot",theme_kvs_cmd_screenshot);
+
+ QString szBuf;
+ m->getDefaultConfigFileName(szBuf);
+ KviConfig cfg(szBuf,KviConfig::Read);
+ g_rectManagementDialogGeometry = cfg.readRectEntry("EditorGeometry",QRect(10,10,390,440));
+
+ return true;
+}
+
+static bool theme_module_cleanup(KviModule *m)
+{
+ KviThemeManagementDialog::cleanup();
+
+ QString szBuf;
+ m->getDefaultConfigFileName(szBuf);
+ KviConfig cfg(szBuf,KviConfig::Write);
+ cfg.writeEntry("EditorGeometry",g_rectManagementDialogGeometry);
+
+ return true;
+}
+
+static bool theme_module_can_unload(KviModule * m)
+{
+ return (!KviThemeManagementDialog::instance());
+}
+
+
+KVIRC_MODULE(
+ "theme", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2006 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "Theme management functions",
+ theme_module_init,
+ theme_module_can_unload,
+ 0,
+ theme_module_cleanup
+)
diff --git a/src/modules/theme/managementdialog.cpp b/src/modules/theme/managementdialog.cpp
new file mode 100644
index 00000000..bfd75283
--- /dev/null
+++ b/src/modules/theme/managementdialog.cpp
@@ -0,0 +1,459 @@
+//=============================================================================
+//
+// File : managementdialog.cpp
+// Created on Sat 30 Dec 2006 14:54:56 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2006 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#define LVI_ICON_SIZE 32
+#define LVI_BORDER 4
+#define LVI_SPACING 8
+#define LVI_MINIMUM_TEXT_WIDTH 300
+#define LVI_MINIMUM_CELL_WIDTH (LVI_MINIMUM_TEXT_WIDTH + LVI_BORDER + LVI_ICON_SIZE + LVI_SPACING + LVI_BORDER)
+
+#include "managementdialog.h"
+#include "packthemedialog.h"
+#include "savethemedialog.h"
+#include "themefunctions.h"
+
+#include "kvi_iconmanager.h"
+#include "kvi_msgbox.h"
+
+
+#include <qlayout.h>
+#include <qpushbutton.h>
+#include "kvi_tal_listbox.h"
+#include <qlineedit.h>
+#include <kvi_tal_textedit.h>
+#include <qregexp.h>
+#include <qmessagebox.h>
+#include <qdir.h>
+#include <qstringlist.h>
+#include <qdatetime.h>
+#include <qfiledialog.h>
+#include "kvi_tal_popupmenu.h"
+#include <qcombobox.h>
+#include <qpainter.h>
+#include <qtooltip.h>
+#include <qimage.h>
+#include <kvi_tal_textedit.h>
+//#include <qmultilineedit.h>
+#ifdef COMPILE_USE_QT4
+#include <QCloseEvent>
+#endif
+#include <qbuffer.h>
+
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_config.h"
+#include "kvi_fileutils.h"
+#include "kvi_app.h"
+#include "kvi_frame.h"
+#include "kvi_iconmanager.h"
+#include "kvi_internalcmd.h"
+#include "kvi_styled_controls.h"
+#include "kvi_doublebuffer.h"
+#include "kvi_packagefile.h"
+#include "kvi_fileextensions.h"
+#include "kvi_filedialog.h"
+#include "kvi_dynamictooltip.h"
+
+#include <stdlib.h> // rand & srand
+
+extern QRect g_rectManagementDialogGeometry;
+
+
+
+KviThemeListBoxItem::KviThemeListBoxItem(KviTalListBox * box,KviThemeInfo * inf)
+: KviTalListBoxText(box)
+{
+ m_pThemeInfo = inf;
+ QString t;
+ t = "<nobr><b>";
+ t += inf->name();
+ t += "</b>";
+
+ if(!inf->version().isEmpty()) {
+ t += "[";
+ t += inf->version();
+ t += "]";
+ }
+
+ if(!inf->author().isEmpty()) {
+ t += " <font color=\"#a0a0a0\"> ";
+ t += __tr2qs_ctx("by","theme");
+ t += " ";
+ t += inf->author();
+ t += "</font>";
+ }
+
+ t += "</nobr>";
+ t += "<br><nobr><font size=\"-1\">";
+ t += inf->description();
+ t += "</font></nobr>";
+ m_pText = new KviTalSimpleRichText(t,box->font());
+ int iWidth = box->visibleWidth();
+ if(iWidth < LVI_MINIMUM_CELL_WIDTH)iWidth = LVI_MINIMUM_CELL_WIDTH;
+ iWidth -= LVI_BORDER + LVI_ICON_SIZE + LVI_SPACING + LVI_BORDER;
+ m_pText->setWidth(iWidth);
+}
+
+KviThemeListBoxItem::~KviThemeListBoxItem()
+{
+ delete m_pThemeInfo;
+ delete m_pText;
+}
+
+void KviThemeListBoxItem::paint(QPainter * p)
+{
+ KviTalListBoxText::paint(p);
+ p->drawPixmap(LVI_BORDER,LVI_BORDER, *(g_pIconManager->getBigIcon(QString(KVI_BIGICON_THEME))) );
+ int afterIcon = LVI_BORDER + LVI_ICON_SIZE + LVI_SPACING;
+ int www = p->window().width() - (afterIcon + LVI_BORDER);
+ m_pText->setWidth(www);
+ m_pText->draw(p,afterIcon,LVI_BORDER,QRect(afterIcon,LVI_BORDER,www,p->window().height() - (LVI_BORDER * 2)),listBox()->viewport()->colorGroup());
+}
+
+int KviThemeListBoxItem::height(const KviTalListBox * lb) const
+{
+ int iHeight = m_pText->height() + (2 * LVI_BORDER);
+ if(iHeight < (LVI_ICON_SIZE + (2 * LVI_BORDER)))iHeight = LVI_ICON_SIZE + (2 * LVI_BORDER);
+ return iHeight;
+}
+
+KviThemeManagementDialog * KviThemeManagementDialog::m_pInstance = 0;
+
+
+KviThemeManagementDialog::KviThemeManagementDialog(QWidget * parent)
+: QDialog(parent,"theme_options_widget")
+{
+ setCaption(__tr2qs_ctx("Manage Themes - KVIrc","theme"));
+ setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_THEME)));
+
+ setModal(true);
+
+ m_pInstance = this;
+
+ QGridLayout * g = new QGridLayout(this,3,2,4,4);
+
+ KviTalHBox *hb = new KviTalHBox(this);
+ g->addMultiCellWidget(hb,0,0,0,1);
+
+ KviStyledToolButton * tb;
+ QFrame * sep;
+
+ tb = new KviStyledToolButton(hb);
+ tb->setIconSet(*(g_pIconManager->getBigIcon(KVI_BIGICON_SAVE)));
+ tb->setUsesBigPixmap(true);
+ QToolTip::add(tb,__tr2qs_ctx("Save Current Theme...","theme"));
+ connect(tb,SIGNAL(clicked()),this,SLOT(saveCurrentTheme()));
+
+ sep = new QFrame(hb);
+ sep->setFrameStyle(QFrame::VLine | QFrame::Sunken);
+ sep->setMinimumWidth(12);
+
+ m_pPackThemeButton = new KviStyledToolButton(hb);
+ m_pPackThemeButton->setIconSet(*(g_pIconManager->getBigIcon(KVI_BIGICON_PACK)));
+ m_pPackThemeButton->setUsesBigPixmap(true);
+ QToolTip::add(m_pPackThemeButton,__tr2qs_ctx("Export Selected Themes to a Distributable Package","theme"));
+ connect(m_pPackThemeButton,SIGNAL(clicked()),this,SLOT(packTheme()));
+
+ m_pDeleteThemeButton = new KviStyledToolButton(hb);
+ m_pDeleteThemeButton->setIconSet(*(g_pIconManager->getBigIcon(KVI_BIGICON_REMOVE)));
+ m_pDeleteThemeButton->setUsesBigPixmap(true);
+ QToolTip::add(m_pDeleteThemeButton,__tr2qs_ctx("Delete Selected Themes","theme"));
+ connect(m_pDeleteThemeButton,SIGNAL(clicked()),this,SLOT(deleteTheme()));
+
+ sep = new QFrame(hb);
+ sep->setFrameStyle(QFrame::VLine | QFrame::Sunken);
+ sep->setMinimumWidth(12);
+
+ tb = new KviStyledToolButton(hb);
+ tb->setIconSet(*(g_pIconManager->getBigIcon(KVI_BIGICON_OPEN)));
+ tb->setUsesBigPixmap(true);
+ QToolTip::add(tb,__tr2qs_ctx("Install Theme Package From Disk","theme"));
+ connect(tb,SIGNAL(clicked()),this,SLOT(installFromFile()));
+
+ tb = new KviStyledToolButton(hb);
+ tb->setIconSet(*(g_pIconManager->getBigIcon(KVI_BIGICON_WWW)));
+ tb->setUsesBigPixmap(true);
+ QToolTip::add(tb,__tr2qs_ctx("Get More Themes...","theme"));
+ connect(tb,SIGNAL(clicked()),this,SLOT(getMoreThemes()));
+
+ QWidget *w= new QWidget(hb);
+ w->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Minimum);
+
+ m_pListBox = new KviTalListBox(this);
+ m_pListBox->setMinimumHeight(400);
+ m_pListBox->setMinimumWidth(400);
+ m_pListBox->setSelectionMode(KviTalListBox::Extended);
+ connect(m_pListBox,SIGNAL(doubleClicked(KviTalListBoxItem *)),this,SLOT(applyTheme(KviTalListBoxItem *)));
+ connect(m_pListBox,SIGNAL(contextMenuRequested(KviTalListBoxItem *,const QPoint &)),
+ this,SLOT(contextMenuRequested(KviTalListBoxItem *,const QPoint &)));
+ connect(m_pListBox,SIGNAL(selectionChanged()),this,SLOT(enableDisableButtons()));
+ g->addMultiCellWidget(m_pListBox,1,1,0,1);
+
+ KviDynamicToolTip * tip = new KviDynamicToolTip(m_pListBox);
+ connect(tip,SIGNAL(tipRequest(KviDynamicToolTip *,const QPoint &)),this,SLOT(tipRequest(KviDynamicToolTip *,const QPoint &)));
+
+ QPushButton * b = new QPushButton(__tr2qs("Close"),this);
+ connect(b,SIGNAL(clicked()),this,SLOT(closeClicked()));
+ g->addWidget(b,2,1);
+
+ g->setRowStretch(1,0);
+ g->setColStretch(0,1);
+
+ fillThemeBox();
+ m_pContextPopup = new KviTalPopupMenu(this);
+
+ if(g_rectManagementDialogGeometry.y() < 5)
+ {
+ g_rectManagementDialogGeometry.setY(5);
+ }
+ resize(g_rectManagementDialogGeometry.width(),
+ g_rectManagementDialogGeometry.height());
+ move(g_rectManagementDialogGeometry.x(),
+ g_rectManagementDialogGeometry.y());
+}
+
+KviThemeManagementDialog::~KviThemeManagementDialog()
+{
+ g_rectManagementDialogGeometry = QRect(pos().x(),pos().y(),size().width(),size().height());
+ m_pInstance = 0;
+}
+
+void KviThemeManagementDialog::closeClicked()
+{
+ delete this;
+ m_pInstance = 0;
+}
+
+
+void KviThemeManagementDialog::display()
+{
+ if(!m_pInstance)
+ m_pInstance = new KviThemeManagementDialog(g_pFrame);
+ m_pInstance->show();
+}
+
+void KviThemeManagementDialog::cleanup()
+{
+ if(!m_pInstance)return;
+ delete m_pInstance;
+ m_pInstance = 0;
+}
+
+void KviThemeManagementDialog::packTheme()
+{
+ KviPointerList<KviThemeInfo> dl;
+ dl.setAutoDelete(false);
+ for(KviThemeListBoxItem * it = (KviThemeListBoxItem *)m_pListBox->firstItem();it;it = (KviThemeListBoxItem *)it->next())
+ {
+ if(it->isSelected())
+ dl.append(it->themeInfo());
+ }
+ if(dl.isEmpty())return;
+
+ KviPackThemeDialog * pDialog = new KviPackThemeDialog(this,&dl);
+ pDialog->exec();
+ delete pDialog;
+
+}
+
+void KviThemeManagementDialog::contextMenuRequested(KviTalListBoxItem * it,const QPoint & pos)
+{
+ if(it)
+ {
+ m_pListBox->setCurrentItem(it);
+ m_pContextPopup->clear();
+ m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_MINUS)),__tr2qs_ctx("&Remove Theme","theme"),this,SLOT(deleteTheme()));
+ m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ACCEPT)),__tr2qs_ctx("&Apply Theme","theme"),this,SLOT(applyCurrentTheme()));
+ m_pContextPopup->popup(pos);
+ }
+}
+
+void KviThemeManagementDialog::applyTheme ( KviTalListBoxItem * it)
+{
+ if(it)m_pListBox->setCurrentItem(it);
+ applyCurrentTheme();
+}
+
+void KviThemeManagementDialog::applyCurrentTheme()
+{
+ KviThemeListBoxItem * it = (KviThemeListBoxItem *)m_pListBox->item(m_pListBox->currentItem());
+ if(!it)return;
+
+ if(KviMessageBox::yesNo(__tr2qs_ctx("Apply theme - KVIrc","theme"),
+ __tr2qs_ctx("Do you wish to apply theme \"%Q\" (version %Q)?","theme"),
+ &(it->themeInfo()->name()),&(it->themeInfo()->version())))
+ {
+ QString szPath = it->themeInfo()->absoluteDirectory();
+ if(szPath.isEmpty())return;
+
+ KviThemeInfo out;
+ if(!KviTheme::load(szPath,out))
+ {
+ QString szErr = out.lastError();
+ QString szMsg;
+ KviQString::sprintf(szMsg,__tr2qs_ctx("Failed to apply the specified theme: %Q","theme"),&szErr);
+ QMessageBox::critical(this,__tr2qs_ctx("Apply theme - KVIrc","theme"),szMsg,
+ QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
+
+ }
+ }
+}
+
+void KviThemeManagementDialog::deleteTheme()
+{
+ for(KviThemeListBoxItem * pItem = (KviThemeListBoxItem *)m_pListBox->firstItem();pItem;pItem = (KviThemeListBoxItem *)pItem->next())
+ {
+ if(pItem->isSelected())
+ {
+ if(!KviMessageBox::yesNo(__tr2qs_ctx("Delete Theme - KVIrc","theme"),
+ __tr2qs_ctx("Do you really wish to delete theme \"%Q\" (version %Q)?","theme"),
+ &(pItem->themeInfo()->name()),&(pItem->themeInfo()->version())))goto jump_out;
+
+ KviFileUtils::deleteDir(pItem->themeInfo()->absoluteDirectory());
+ }
+ }
+jump_out:
+ fillThemeBox();
+}
+
+void KviThemeManagementDialog::installFromFile()
+{
+ int iThemeCount=0;
+ QString szFileName;
+ QString szError;
+
+ if(!KviFileDialog::askForOpenFileName(szFileName,__tr2qs_ctx("Open Theme - KVIrc","theme"),QString::null,"*.kvt"))
+ return;
+
+ if(!KviThemeFunctions::installThemePackage(szFileName,szError,this))
+ {
+ KviMessageBox::information(szError);
+ return;
+ }
+ fillThemeBox();
+}
+
+void KviThemeManagementDialog::getMoreThemes()
+{
+ if(!g_pFrame)return;
+ g_pFrame->executeInternalCommand(KVI_INTERNALCOMMAND_OPENURL_KVIRC_THEMES);
+}
+
+void KviThemeManagementDialog::saveCurrentTheme()
+{
+ KviSaveThemeDialog * pSaveThemeDialog = new KviSaveThemeDialog(this);
+ pSaveThemeDialog->exec();
+ delete pSaveThemeDialog;
+ fillThemeBox();
+}
+
+void KviThemeManagementDialog::fillThemeBox(const QString &szDir)
+{
+ QDir d(szDir);
+
+ QStringList sl = d.entryList(QDir::Dirs);
+
+ for(QStringList::Iterator it = sl.begin();it != sl.end();++it)
+ {
+ if(*it == ".")continue;
+ if(*it == "..")continue;
+
+ QString szTest = szDir;
+ szTest += KVI_PATH_SEPARATOR_CHAR;
+ szTest += *it;
+
+ KviThemeInfo * inf = new KviThemeInfo();
+ if(inf->loadFromDirectory(szTest))
+ {
+ inf->setSubdirectory(*it);
+ KviThemeListBoxItem * item = 0;
+ item = new KviThemeListBoxItem(m_pListBox,inf);
+ } else {
+ delete inf;
+ }
+ }
+}
+
+void KviThemeManagementDialog::fillThemeBox()
+{
+ m_pListBox->clear();
+
+ QString szDir;
+ g_pApp->getGlobalKvircDirectory(szDir,KviApp::Themes);
+ fillThemeBox(szDir);
+ g_pApp->getLocalKvircDirectory(szDir,KviApp::Themes);
+ fillThemeBox(szDir);
+
+ enableDisableButtons();
+}
+
+bool KviThemeManagementDialog::hasSelectedItems()
+{
+ for(KviTalListBoxItem * it = m_pListBox->firstItem();it;it = it->next())
+ {
+ if(it->isSelected())return true;
+ }
+ return false;
+}
+
+
+void KviThemeManagementDialog::enableDisableButtons()
+{
+ bool b = hasSelectedItems();
+ m_pPackThemeButton->setEnabled(b);
+ m_pDeleteThemeButton->setEnabled(b);
+}
+
+void KviThemeManagementDialog::closeEvent(QCloseEvent * e)
+{
+ e->ignore();
+ delete this;
+}
+
+void KviThemeManagementDialog::tipRequest(KviDynamicToolTip *pTip,const QPoint &pnt)
+{
+ KviThemeListBoxItem * it = (KviThemeListBoxItem *)(m_pListBox->itemAt(pnt));
+
+ if(!it)return;
+
+ KviThemeInfo * pThemeInfo = it->themeInfo();
+
+ QString szThemeDescription;
+
+ KviThemeFunctions::getThemeHtmlDescription(
+ szThemeDescription,
+ pThemeInfo->name(),
+ pThemeInfo->version(),
+ pThemeInfo->description(),
+ pThemeInfo->subdirectory(),
+ pThemeInfo->application(),
+ pThemeInfo->author(),
+ pThemeInfo->date(),
+ pThemeInfo->themeEngineVersion(),
+ pThemeInfo->mediumScreenshot(),
+ 0
+ );
+
+ pTip->tip(m_pListBox->itemRect(it),szThemeDescription);
+}
diff --git a/src/modules/theme/managementdialog.h b/src/modules/theme/managementdialog.h
new file mode 100644
index 00000000..52ae0f86
--- /dev/null
+++ b/src/modules/theme/managementdialog.h
@@ -0,0 +1,109 @@
+#ifndef _MANAGEMENTDIALOG_H_
+#define _MANAGEMENTDIALOG_H_
+//=============================================================================
+//
+// File : managementdialog.h
+// Created on Sat 30 Dec 2006 14:54:56 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2006 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_optionswidget.h"
+#include "kvi_pointerlist.h"
+#include "kvi_theme.h"
+
+#include <qdialog.h>
+#ifdef COMPILE_USE_QT4
+#include <q3simplerichtext.h>
+#define KviTalSimpleRichText Q3SimpleRichText
+#else
+#include <qsimplerichtext.h>
+#define KviTalSimpleRichText QSimpleRichText
+#endif
+#include "kvi_tal_listbox.h"
+#include <qcombobox.h>
+#include "kvi_tal_popupmenu.h"
+#include <qcursor.h>
+#include <kvi_tal_wizard.h>
+
+
+class QLineEdit;
+class KviTalTextEdit;
+class QPushButton;
+class QLabel;
+class QCheckBox;
+
+//class QMultiLineEdit;
+
+class KviDynamicToolTip;
+class KviStyledToolButton;
+
+
+class KviThemeListBoxItem : public KviTalListBoxText
+{
+public:
+ KviThemeListBoxItem(KviTalListBox * box,KviThemeInfo * inf);
+ virtual ~KviThemeListBoxItem();
+public:
+ KviThemeInfo * m_pThemeInfo;
+ KviTalSimpleRichText * m_pText;
+public:
+ KviThemeInfo * themeInfo(){ return m_pThemeInfo; };
+ virtual int height ( const KviTalListBox * lb ) const ;
+protected:
+ virtual void paint ( QPainter * painter );
+};
+
+
+class KviThemeManagementDialog : public QDialog
+{
+ Q_OBJECT
+public:
+ KviThemeManagementDialog(QWidget * parent);
+ virtual ~KviThemeManagementDialog();
+protected:
+ static KviThemeManagementDialog * m_pInstance;
+ KviTalListBox * m_pListBox;
+ KviTalPopupMenu * m_pContextPopup;
+ KviStyledToolButton * m_pDeleteThemeButton;
+ KviStyledToolButton * m_pPackThemeButton;
+public:
+ static KviThemeManagementDialog * instance(){ return m_pInstance; };
+ static void display();
+ static void cleanup();
+protected:
+ void fillThemeBox(const QString &szDir);
+ bool hasSelectedItems();
+ virtual void closeEvent(QCloseEvent * e);
+protected slots:
+ void saveCurrentTheme();
+ void getMoreThemes();
+ void installFromFile();
+ void fillThemeBox();
+ void deleteTheme();
+ void closeClicked();
+ void packTheme();
+ void applyTheme(KviTalListBoxItem *);
+ void applyCurrentTheme();
+ void enableDisableButtons();
+ void contextMenuRequested(KviTalListBoxItem * item, const QPoint & pos);
+ void tipRequest(KviDynamicToolTip *pTip,const QPoint &pnt);
+};
+
+#endif //!_MANAGEMENTDIALOG_H_
diff --git a/src/modules/theme/packthemedialog.cpp b/src/modules/theme/packthemedialog.cpp
new file mode 100644
index 00000000..88b248a8
--- /dev/null
+++ b/src/modules/theme/packthemedialog.cpp
@@ -0,0 +1,489 @@
+//=============================================================================
+//
+// File : packthemedialog.cpp
+// Created on Wed 03 Jan 2007 01:11:44 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2007 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "packthemedialog.h"
+#include "themefunctions.h"
+
+#include <qlayout.h>
+#include <qpushbutton.h>
+#include <qlineedit.h>
+#include <qregexp.h>
+#include <qmessagebox.h>
+#include <qdir.h>
+#include <qcombobox.h>
+#include <qpainter.h>
+#include <qtooltip.h>
+#include <qimage.h>
+#include <kvi_tal_textedit.h>
+#ifdef COMPILE_USE_QT4
+#include <q3multilineedit.h>
+#include <QDateTime>
+#else
+#include <qmultilineedit.h>
+#endif
+#include <qbuffer.h>
+#include <qlabel.h>
+#include <qregexp.h>
+
+
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_config.h"
+#include "kvi_fileutils.h"
+#include "kvi_app.h"
+#include "kvi_frame.h"
+#include "kvi_iconmanager.h"
+#include "kvi_styled_controls.h"
+#include "kvi_packagefile.h"
+#include "kvi_fileextensions.h"
+#include "kvi_filedialog.h"
+#include "kvi_msgbox.h"
+#include "kvi_selectors.h"
+#include "kvi_miscutils.h"
+#include "kvi_sourcesdate.h"
+
+
+
+KviPackThemeDialog::KviPackThemeDialog(QWidget * pParent,KviPointerList<KviThemeInfo> * pThemeInfoList)
+: KviTalWizard(pParent)
+{
+ m_pThemeInfoList = pThemeInfoList;
+
+ KviThemeInfo * pThemeInfo;
+ QString szPackageName;
+ QString szPackageAuthor;
+ QString szPackageDescription;
+ QString szPackageVersion;
+
+ m_szPackagePath = QDir::homeDirPath();
+ KviQString::ensureLastCharIs(m_szPackagePath,QChar(KVI_PATH_SEPARATOR_CHAR));
+
+ bool bPackagePathSet = false;
+
+ if(m_pThemeInfoList->count() > 1)
+ {
+ szPackageName = "MyThemes";
+ szPackageAuthor = __tr2qs_ctx("Your name here","theme");
+ szPackageVersion = "1.0.0";
+ szPackageDescription = __tr2qs_ctx("Put a package description here...","theme");
+ } else {
+ if(m_pThemeInfoList->count() > 0)
+ {
+ pThemeInfo = m_pThemeInfoList->first();
+ szPackageName = pThemeInfo->subdirectory();
+ szPackageAuthor = pThemeInfo->author();
+ szPackageDescription = pThemeInfo->description();
+ szPackageVersion = pThemeInfo->version();
+
+ m_szPackagePath += pThemeInfo->subdirectory();
+ if(m_szPackagePath.find(QRegExp("[0-9]\\.[0-9]")) == -1)
+ {
+ m_szPackagePath += "-";
+ m_szPackagePath += szPackageVersion;
+ }
+ m_szPackagePath += ".";
+ m_szPackagePath += KVI_FILEEXTENSION_THEMEPACKAGE;
+
+ bPackagePathSet = true;
+ }
+ }
+
+ if(!bPackagePathSet)
+ {
+ m_szPackagePath += szPackageName;
+ m_szPackagePath += "-";
+ m_szPackagePath += szPackageVersion;
+ m_szPackagePath += ".";
+ m_szPackagePath += KVI_FILEEXTENSION_THEMEPACKAGE;
+ }
+
+ setCaption(__tr2qs_ctx("Export Theme - KVIrc","theme"));
+ setMinimumSize(400,350);
+
+ // welcome page ==================================================================================
+ QWidget * pPage = new QWidget(this);
+ QGridLayout * pLayout = new QGridLayout(pPage,2,1,4,4);
+
+ QLabel * pLabel = new QLabel(pPage);
+ QString szText = "<p>";
+ szText += __tr2qs_ctx("This procedure allows you to export the selected themes to a single package. It is useful when you want to distribute your themes to the public.","theme");
+ szText += "</p><p>";
+ szText += __tr2qs_ctx("You will be asked to provide a package name, a description and, if you want, an icon/screenshot.","theme");
+ szText += "</p><p>";
+ szText += __tr2qs_ctx("Hit the \"Next\" button to begin.","theme");
+ szText += "<p>";
+
+ pLabel->setText(szText);
+ pLayout->addWidget(pLabel,0,0);
+ pLayout->setRowStretch(1,1);
+
+ addPage(pPage,__tr2qs_ctx("Welcome","theme"));
+ setBackEnabled(pPage,false);
+ setNextEnabled(pPage,true);
+ setHelpEnabled(pPage,false);
+ setFinishEnabled(pPage,false);
+
+ // theme data name ================================================================================
+
+ pPage = new QWidget(this);
+ pLayout = new QGridLayout(pPage,2,1,4,4);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(__tr2qs_ctx("This is the information list for the themes you're packaging. If it looks OK press \"Next\" to continue, otherwise press \"Cancel\" and rewiew your themes first.","theme"));
+ pLabel->setTextFormat(Qt::RichText);
+ pLayout->addWidget(pLabel,0,0);
+
+ QString szThemesDescription = "<html><body bgcolor=\"#ffffff\">";
+
+ int iIdx = 0;
+ QPixmap pixScreenshot;
+ QString szScreenshotPath;
+
+ for(pThemeInfo = m_pThemeInfoList->first();pThemeInfo;pThemeInfo = m_pThemeInfoList->next())
+ {
+ QString szThemeDescription;
+
+ if(pixScreenshot.isNull())
+ {
+ pixScreenshot = pThemeInfo->smallScreenshot();
+ if(!pixScreenshot.isNull())
+ szScreenshotPath = pThemeInfo->smallScreenshotPath();
+ }
+
+ KviThemeFunctions::getThemeHtmlDescription(
+ szThemeDescription,
+ pThemeInfo->name(),
+ pThemeInfo->version(),
+ pThemeInfo->description(),
+ pThemeInfo->subdirectory(),
+ pThemeInfo->application(),
+ pThemeInfo->author(),
+ pThemeInfo->date(),
+ pThemeInfo->themeEngineVersion(),
+ pThemeInfo->smallScreenshot(),
+ iIdx
+ );
+
+ if(iIdx > 0)
+ szThemesDescription += "<hr>";
+ szThemesDescription += szThemeDescription;
+ iIdx++;
+ }
+
+ szThemesDescription += "</body></html>";
+
+ KviTalTextEdit * pTextEdit = new KviTalTextEdit(pPage);
+ pTextEdit->setPaper(QBrush(QColor(255,255,255)));
+ pTextEdit->setReadOnly(true);
+ pTextEdit->setText(szThemesDescription);
+ pLayout->addWidget(pTextEdit,1,0);
+ pLayout->setRowStretch(1,1);
+
+ addPage(pPage,__tr2qs_ctx("Theme Data","theme"));
+ setBackEnabled(pPage,true);
+ setHelpEnabled(pPage,false);
+ setNextEnabled(pPage,true);
+ setFinishEnabled(pPage,false);
+
+ // packager informations ================================================================================
+
+ pPage = new QWidget(this);
+ pLayout = new QGridLayout(pPage,5,2,4,4);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(__tr2qs_ctx("Here you need to provide informations about you (the packager) and a short description of the package you're creating.","theme"));
+ pLabel->setTextFormat(Qt::RichText);
+ pLayout->addMultiCellWidget(pLabel,0,0,0,1);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(__tr2qs_ctx("Package Name:","theme"));
+ pLayout->addWidget(pLabel,1,0);
+
+ m_pPackageNameEdit = new QLineEdit(pPage);
+ m_pPackageNameEdit->setText(szPackageName);
+ pLayout->addWidget(m_pPackageNameEdit,1,1);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(__tr2qs_ctx("Version:","theme"));
+ pLayout->addWidget(pLabel,2,0);
+
+ m_pPackageVersionEdit = new QLineEdit(pPage);
+ m_pPackageVersionEdit->setText(szPackageVersion);
+ pLayout->addWidget(m_pPackageVersionEdit,2,1);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(__tr2qs_ctx("Description:","theme"));
+ pLayout->addWidget(pLabel,3,0);
+
+ m_pPackageDescriptionEdit = new KviTalTextEdit(pPage);
+ m_pPackageDescriptionEdit->setText(szPackageDescription);
+ pLayout->addWidget(m_pPackageDescriptionEdit,3,1);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(__tr2qs_ctx("Package Author:","theme"));
+ pLayout->addWidget(pLabel,4,0);
+
+ m_pPackagerNameEdit = new QLineEdit(pPage);
+ m_pPackagerNameEdit->setText(szPackageAuthor);
+ pLayout->addWidget(m_pPackagerNameEdit,4,1);
+
+
+ pLayout->setRowStretch(3,1);
+ pLayout->setColStretch(1,1);
+
+ addPage(pPage,__tr2qs_ctx("Package Informations","theme"));
+ setBackEnabled(pPage,true);
+ setHelpEnabled(pPage,false);
+ setNextEnabled(pPage,true);
+ setFinishEnabled(pPage,false);
+
+ // screenshot/logo/icon ================================================================================
+
+ pPage = new QWidget(this);
+ pLayout = new QGridLayout(pPage,3,1,4,4);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(__tr2qs_ctx("Here you can choose the image that will appear in the installation dialog for your theme package. It can be an icon, a logo or a screenshot and it should be not larger than 300x225. If you don't provide an image a simple default icon will be used at installation stage.","theme"));
+ pLabel->setTextFormat(Qt::RichText);
+ pLayout->addWidget(pLabel,0,0);
+
+ m_pImageLabel = new QLabel(pPage);
+ m_pImageLabel->setFrameStyle(QFrame::Sunken | QFrame::Panel);
+ m_pImageLabel->setMinimumSize(300,225);
+ m_pImageLabel->setAlignment(Qt::AlignCenter | Qt::AlignVCenter);
+ pLayout->addWidget(m_pImageLabel,1,0);
+
+ QString szFilter = "*.png *.jpg *.xpm";
+ m_pImageSelector = new KviFileSelector(pPage,"",&m_szImagePath,true,0,szFilter);
+ connect(m_pImageSelector,SIGNAL(selectionChanged(const QString &)),this,SLOT(imageSelectionChanged(const QString &)));
+ pLayout->addWidget(m_pImageSelector,2,0);
+ pLayout->setRowStretch(1,1);
+
+ m_pImageSelectionPage = pPage;
+ addPage(pPage,__tr2qs_ctx("Icon/Screenshot","theme"));
+ setBackEnabled(pPage,true);
+ setHelpEnabled(pPage,false);
+ setNextEnabled(pPage,true);
+ setFinishEnabled(pPage,false);
+
+ // save file name ================================================================================
+
+ pPage = new QWidget(this);
+ pLayout = new QGridLayout(pPage,4,1,4,4);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(__tr2qs_ctx("Here you must choose the file name for the theme package. It should have a *.%1 extension.","theme").arg(KVI_FILEEXTENSION_THEMEPACKAGE));
+ pLabel->setTextFormat(Qt::RichText);
+ pLayout->addWidget(pLabel,0,0);
+
+ szFilter = "*.";
+ szFilter += KVI_FILEEXTENSION_THEMEPACKAGE;
+ m_pPathSelector = new KviFileSelector(pPage,"",&m_szPackagePath,true,KviFileSelector::ChooseSaveFileName,szFilter);
+ pLayout->addWidget(m_pPathSelector,1,0);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(__tr2qs_ctx("Finally hit the \"Finish\" button to complete the packaging operation.","theme"));
+ pLabel->setTextFormat(Qt::RichText);
+ pLayout->addWidget(pLabel,3,0);
+
+ pLayout->setRowStretch(2,1);
+
+ addPage(pPage,__tr2qs_ctx("Package Path","theme"));
+ setBackEnabled(pPage,true);
+ setHelpEnabled(pPage,false);
+ setNextEnabled(pPage,false);
+ setFinishEnabled(pPage,true);
+
+ if(!szScreenshotPath.isEmpty())
+ {
+ m_pImageSelector->setSelection(szScreenshotPath);
+ imageSelectionChanged(szScreenshotPath);
+ }
+}
+
+KviPackThemeDialog::~KviPackThemeDialog()
+{
+}
+
+void KviPackThemeDialog::imageSelectionChanged(const QString &szImagePath)
+{
+ QImage pix(szImagePath);
+ if(!pix.isNull())
+ {
+ QPixmap out;
+ if(pix.width() > 300 || pix.height() > 225)
+#ifdef COMPILE_USE_QT4
+ out.convertFromImage(pix.scaled(300,225,Qt::KeepAspectRatio,Qt::SmoothTransformation));
+#else
+ out.convertFromImage(pix.smoothScale(300,225,QImage::ScaleMin));
+#endif
+ else
+ out.convertFromImage(pix);
+ m_pImageLabel->setPixmap(out);
+ return;
+ }
+
+ QMessageBox::critical(this,__tr2qs_ctx("Export Theme - KVIrc","theme"),__tr2qs_ctx("Failed to load the selected image","theme"),
+ QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
+
+ m_pImageSelector->setSelection("");
+ m_pImageLabel->setPixmap(QPixmap());
+}
+
+
+void KviPackThemeDialog::accept()
+{
+ if(!packTheme())return;
+ KviTalWizard::accept();
+}
+
+
+bool KviPackThemeDialog::packTheme()
+{
+ m_pImageSelector->commit();
+ m_pPathSelector->commit();
+
+ QString szPackageAuthor = m_pPackagerNameEdit->text();
+ QString szPackageName = m_pPackageNameEdit->text();
+ QString szPackageDescription = m_pPackageDescriptionEdit->text();
+ QString szPackageVersion = m_pPackageVersionEdit->text();
+
+ QImage pix(m_szImagePath);
+ QPixmap out;
+ if(!pix.isNull())
+ {
+ if(pix.width() > 300 || pix.height() > 225)
+ #ifdef COMPILE_USE_QT4
+ out.convertFromImage(pix.scaled(300,225,Qt::KeepAspectRatio));
+ #else
+ out.convertFromImage(pix.smoothScale(300,225,QImage::ScaleMin));
+#endif
+ else
+ out.convertFromImage(pix);
+ } else {
+ if(!m_szImagePath.isEmpty())
+ {
+ QMessageBox::critical(this,__tr2qs_ctx("Export Theme - KVIrc","theme"),__tr2qs_ctx("Failed to load the selected image: please fix it","theme"),
+ QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
+ setCurrentPage(m_pImageSelectionPage);
+ return false;
+ }
+ }
+
+ KviPackageWriter f;
+
+ QString szTmp = QDateTime::currentDateTime().toString();
+
+ f.addInfoField("PackageType","ThemePack");
+ f.addInfoField("ThemePackVersion","1");
+ f.addInfoField("Name",szPackageName);
+ f.addInfoField("Version",szPackageVersion);
+ f.addInfoField("Author",szPackageAuthor);
+ f.addInfoField("Description",szPackageDescription);
+ f.addInfoField("Date",szTmp);
+ f.addInfoField("Application","KVIrc " KVI_VERSION "." KVI_SOURCES_DATE);
+
+ if(!out.isNull())
+ {
+ QByteArray * pba = new QByteArray();
+#ifdef COMPILE_USE_QT4
+ QBuffer buffer(pba,0);
+#else
+ QBuffer buffer(*pba);
+#endif
+ buffer.open(IO_WriteOnly);
+ out.save(&buffer,"PNG");
+ buffer.close();
+ f.addInfoField("Image",pba); // cool :) [no disk access needed]
+ }
+
+ szTmp.setNum(m_pThemeInfoList->count());
+ f.addInfoField("ThemeCount",szTmp);
+
+ int iIdx = 0;
+ for(KviThemeInfo * pInfo = m_pThemeInfoList->first();pInfo;pInfo = m_pThemeInfoList->next())
+ {
+ KviQString::sprintf(szTmp,"Theme%dName",iIdx);
+ f.addInfoField(szTmp,pInfo->name());
+ KviQString::sprintf(szTmp,"Theme%dVersion",iIdx);
+ f.addInfoField(szTmp,pInfo->version());
+ KviQString::sprintf(szTmp,"Theme%dDescription",iIdx);
+ f.addInfoField(szTmp,pInfo->description());
+ KviQString::sprintf(szTmp,"Theme%dDate",iIdx);
+ f.addInfoField(szTmp,pInfo->date());
+ KviQString::sprintf(szTmp,"Theme%dSubdirectory",iIdx);
+ f.addInfoField(szTmp,pInfo->subdirectory());
+ KviQString::sprintf(szTmp,"Theme%dAuthor",iIdx);
+ f.addInfoField(szTmp,pInfo->author());
+ KviQString::sprintf(szTmp,"Theme%dApplication",iIdx);
+ f.addInfoField(szTmp,pInfo->application());
+ KviQString::sprintf(szTmp,"Theme%dThemeEngineVersion",iIdx);
+ f.addInfoField(szTmp,pInfo->themeEngineVersion());
+ QPixmap pixScreenshot = pInfo->smallScreenshot();
+ if(!pixScreenshot.isNull())
+ {
+ KviQString::sprintf(szTmp,"Theme%dScreenshot",iIdx);
+ QByteArray * pba = new QByteArray();
+#ifdef COMPILE_USE_QT4
+ QBuffer bufferz(pba,0);
+#else
+ QBuffer bufferz(*pba);
+#endif
+ bufferz.open(IO_WriteOnly);
+ pixScreenshot.save(&bufferz,"PNG");
+ bufferz.close();
+ f.addInfoField(szTmp,pba);
+ }
+
+ if(!f.addDirectory(pInfo->absoluteDirectory(),pInfo->subdirectory()))
+ {
+ szTmp = __tr2qs_ctx("Packaging failed","theme");
+ szTmp += ": ";
+ szTmp += f.lastError();
+ QMessageBox::critical(this,__tr2qs_ctx("Export Theme - KVIrc","theme"),szTmp,
+ QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
+ }
+
+ iIdx++;
+ }
+
+ if(!f.pack(m_szPackagePath))
+ {
+ szTmp = __tr2qs_ctx("Packaging failed","theme");
+ szTmp += ": ";
+ szTmp += f.lastError();
+ QMessageBox::critical(this,__tr2qs_ctx("Export Theme - KVIrc","theme"),szTmp,
+ QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
+ return false;
+ }
+
+ //KviPackageReader r;
+ //r.unpack("/root/test.kvt","/root/unpacked_test_kvt");
+
+ QMessageBox::information(this,__tr2qs_ctx("Export Theme - KVIrc","theme"),__tr2qs("Package saved succesfully"),
+ QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
+
+ return true;
+}
+
diff --git a/src/modules/theme/packthemedialog.h b/src/modules/theme/packthemedialog.h
new file mode 100644
index 00000000..7731cc30
--- /dev/null
+++ b/src/modules/theme/packthemedialog.h
@@ -0,0 +1,66 @@
+#ifndef _PACKTHEMEDIALOG_H_
+#define _PACKTHEMEDIALOG_H_
+//=============================================================================
+//
+// File : packthemedialog.h
+// Created on Wed 03 Jan 2007 01:11:44 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2007 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_pointerlist.h"
+#include "kvi_theme.h"
+
+#include <qdialog.h>
+#include <kvi_tal_wizard.h>
+
+class QLineEdit;
+class KviTalTextEdit;
+class QLabel;
+class QMultiLineEdit;
+class KviFileSelector;
+
+
+class KviPackThemeDialog : public KviTalWizard
+{
+ Q_OBJECT
+public:
+ KviPackThemeDialog(QWidget * pParent,KviPointerList<KviThemeInfo> * pThemeInfoList);
+ virtual ~KviPackThemeDialog();
+protected:
+ QString m_szImagePath;
+ KviFileSelector * m_pImageSelector;
+ QString m_szPackagePath;
+ KviFileSelector * m_pPathSelector;
+ QLabel * m_pImageLabel;
+ KviPointerList<KviThemeInfo> * m_pThemeInfoList;
+ QLineEdit * m_pPackageNameEdit;
+ KviTalTextEdit * m_pPackageDescriptionEdit;
+ QLineEdit * m_pPackageVersionEdit;
+ QLineEdit * m_pPackagerNameEdit;
+ QWidget * m_pImageSelectionPage;
+protected:
+ virtual void accept();
+ bool packTheme();
+protected slots:
+ void imageSelectionChanged(const QString &szImagePath);
+};
+
+#endif //!_PACKTHEMEDIALOG_H_
diff --git a/src/modules/theme/savethemedialog.cpp b/src/modules/theme/savethemedialog.cpp
new file mode 100644
index 00000000..79319e60
--- /dev/null
+++ b/src/modules/theme/savethemedialog.cpp
@@ -0,0 +1,301 @@
+//=============================================================================
+//
+// File : savethemedialog.cpp
+// Created on Wed 03 Jan 2007 03:01:34 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2007 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "savethemedialog.h"
+#include "themefunctions.h"
+
+#include <qlayout.h>
+#include <qpushbutton.h>
+#include <qlineedit.h>
+#include <qregexp.h>
+#include <qmessagebox.h>
+#include <qdir.h>
+#include <qcombobox.h>
+#include <qpainter.h>
+#include <qtooltip.h>
+#include <qimage.h>
+#include <kvi_tal_textedit.h>
+#ifdef COMPILE_USE_QT4
+#include <q3multilineedit.h>
+#include <QDateTime>
+#else
+#include <qmultilineedit.h>
+#endif
+#include <qbuffer.h>
+#include <qlabel.h>
+
+
+#include "kvi_options.h"
+#include "kvi_locale.h"
+#include "kvi_config.h"
+#include "kvi_fileutils.h"
+#include "kvi_app.h"
+#include "kvi_frame.h"
+#include "kvi_iconmanager.h"
+#include "kvi_styled_controls.h"
+#include "kvi_packagefile.h"
+#include "kvi_fileextensions.h"
+#include "kvi_filedialog.h"
+#include "kvi_msgbox.h"
+#include "kvi_selectors.h"
+#include "kvi_miscutils.h"
+#include "kvi_sourcesdate.h"
+
+
+
+KviSaveThemeDialog::KviSaveThemeDialog(QWidget * pParent)
+: KviTalWizard(pParent)
+{
+ setCaption(__tr2qs_ctx("Save Current Theme - KVIrc","theme"));
+ setMinimumSize(400,350);
+
+ // welcome page ==================================================================================
+ QWidget * pPage = new QWidget(this);
+ QGridLayout * pLayout = new QGridLayout(pPage,2,1,4,4);
+
+ QLabel * pLabel = new QLabel(pPage);
+ QString szText = "<p>";
+ szText += __tr2qs_ctx("This procedure allows you to save the current theme settings to a single directory. It is useful if you want to apply other themes or play with the theme settings and later come back to this theme with a single click. It will also allow you to manually modify the theme settings and later export them to a distributable package.","theme");
+ szText += "</p><p>";
+ szText += __tr2qs_ctx("You will be asked to provide a theme name, a description and, if you want, a screenshot.","theme");
+ szText += "</p><p>";
+ szText += __tr2qs_ctx("Hit the \"Next\" button to begin.","theme");
+ szText += "<p>";
+
+ pLabel->setText(szText);
+ pLayout->addWidget(pLabel,0,0);
+ pLayout->setRowStretch(1,1);
+
+ addPage(pPage,__tr2qs_ctx("Welcome","theme"));
+ setBackEnabled(pPage,false);
+ setNextEnabled(pPage,true);
+ setHelpEnabled(pPage,false);
+ setFinishEnabled(pPage,false);
+
+ // packager informations ================================================================================
+
+ pPage = new QWidget(this);
+ pLayout = new QGridLayout(pPage,5,2,4,4);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(__tr2qs_ctx("Here you need to provide informations about you (the author) and a short description of the theme you're creating.","theme"));
+ pLabel->setTextFormat(Qt::RichText);
+ pLayout->addMultiCellWidget(pLabel,0,0,0,1);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(__tr2qs_ctx("Theme Name:","theme"));
+ pLayout->addWidget(pLabel,1,0);
+
+ m_pThemeNameEdit = new QLineEdit(pPage);
+ //m_pThemeNameEdit->setText(szThemeName);
+ pLayout->addWidget(m_pThemeNameEdit,1,1);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(__tr2qs_ctx("Version:","theme"));
+ pLayout->addWidget(pLabel,2,0);
+
+ m_pThemeVersionEdit = new QLineEdit(pPage);
+ //m_pThemeVersionEdit->setText(szThemeVersion);
+ pLayout->addWidget(m_pThemeVersionEdit,2,1);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(__tr2qs_ctx("Description:","theme"));
+ pLayout->addWidget(pLabel,3,0);
+
+ m_pThemeDescriptionEdit = new KviTalTextEdit(pPage);
+ //m_pThemeDescriptionEdit->setText(szThemeDescription);
+ pLayout->addWidget(m_pThemeDescriptionEdit,3,1);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(__tr2qs_ctx("Theme Author:","theme"));
+ pLayout->addWidget(pLabel,4,0);
+
+ m_pAuthorNameEdit = new QLineEdit(pPage);
+ //m_pAuthorNameEdit->setText(szThemeAuthor);
+ pLayout->addWidget(m_pAuthorNameEdit,4,1);
+
+
+ pLayout->setRowStretch(3,1);
+ pLayout->setColStretch(1,1);
+
+ addPage(pPage,__tr2qs_ctx("Theme Informations","theme"));
+ setBackEnabled(pPage,true);
+ setHelpEnabled(pPage,false);
+ setNextEnabled(pPage,true);
+ setFinishEnabled(pPage,false);
+
+ // screenshot/logo/icon ================================================================================
+
+ pPage = new QWidget(this);
+ pLayout = new QGridLayout(pPage,4,1,4,4);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(__tr2qs_ctx("Here you can either choose a screenshot image from disk or make one now. The screenshot will be displayed in the tooltips of the theme management dialog and will be also visible in the package installation dialog if you will export the theme to a distributable package.","theme"));
+ pLabel->setTextFormat(Qt::RichText);
+ pLayout->addWidget(pLabel,0,0);
+
+ m_pImageLabel = new QLabel(pPage);
+ m_pImageLabel->setFrameStyle(QFrame::Sunken | QFrame::Panel);
+ m_pImageLabel->setMinimumSize(300,225);
+ m_pImageLabel->setAlignment(Qt::AlignCenter | Qt::AlignVCenter);
+ pLayout->addWidget(m_pImageLabel,1,0);
+
+ QString szFilter = "*.png *.jpg *.xpm";
+ m_pImageSelector = new KviFileSelector(pPage,"",&m_szScreenshotPath,true,0,szFilter);
+ connect(m_pImageSelector,SIGNAL(selectionChanged(const QString &)),this,SLOT(imageSelectionChanged(const QString &)));
+ pLayout->addWidget(m_pImageSelector,2,0);
+
+ QPushButton * pButton = new QPushButton(pPage);
+ pButton->setText(__tr2qs_ctx("Make Screenshot Now","theme"));
+ connect(pButton,SIGNAL(clicked()),this,SLOT(makeScreenshot()));
+ pLayout->addWidget(pButton,3,0);
+
+ pLayout->setRowStretch(1,1);
+
+ m_pImageSelectionPage = pPage;
+ addPage(pPage,__tr2qs_ctx("Screenshot","theme"));
+ setBackEnabled(pPage,true);
+ setHelpEnabled(pPage,false);
+ setNextEnabled(pPage,true);
+ setFinishEnabled(pPage,true);
+}
+
+KviSaveThemeDialog::~KviSaveThemeDialog()
+{
+}
+
+void KviSaveThemeDialog::imageSelectionChanged(const QString &szImagePath)
+{
+ QImage pix(szImagePath);
+ if(!pix.isNull())
+ {
+ QPixmap out;
+ if(pix.width() > 300 || pix.height() > 225)
+ #ifdef COMPILE_USE_QT4
+ out.convertFromImage(pix.scaled(300,225,Qt::KeepAspectRatio));
+ #else
+ out.convertFromImage(pix.smoothScale(300,225,QImage::ScaleMin));
+#endif
+ else
+ out.convertFromImage(pix);
+ m_pImageLabel->setPixmap(out);
+ return;
+ }
+
+ QMessageBox::critical(this,__tr2qs_ctx("Save Current Theme - KVIrc","theme"),__tr2qs_ctx("Failed to load the selected image","theme"),
+ QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
+
+ m_pImageSelector->setSelection("");
+ m_pImageLabel->setPixmap(QPixmap());
+}
+
+
+void KviSaveThemeDialog::accept()
+{
+ if(!saveTheme())return;
+ KviTalWizard::accept();
+}
+
+
+void KviSaveThemeDialog::makeScreenshot()
+{
+ QString szFileName;
+ g_pApp->getTmpFileName(szFileName,"screenshot.png");
+ if(!KviThemeFunctions::makeKVIrcScreenshot(szFileName))
+ {
+ QMessageBox::critical(this,__tr2qs_ctx("Acquire Screenshot - KVIrc","theme"),__tr2qs_ctx("Failed to make screenshot","theme"),
+ QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
+ return;
+ }
+ m_pImageSelector->setSelection(szFileName);
+ imageSelectionChanged(szFileName);
+}
+
+bool KviSaveThemeDialog::saveTheme()
+{
+ m_pImageSelector->commit();
+
+ KviThemeInfo sto;
+ sto.setName(m_pThemeNameEdit->text());
+ if(sto.name().isEmpty())
+ {
+ QMessageBox::critical(this,__tr2qs_ctx("Save Current Theme - KVIrc","theme"),__tr2qs_ctx("You must choose a theme name!","theme"),QMessageBox::Ok,
+ QMessageBox::NoButton,QMessageBox::NoButton);
+ return false;
+ }
+
+ sto.setAuthor(m_pAuthorNameEdit->text());
+ sto.setDescription(m_pThemeDescriptionEdit->text());
+ sto.setDate(QDateTime::currentDateTime().toString());
+ sto.setVersion(m_pThemeVersionEdit->text());
+ sto.setApplication("KVIrc " KVI_VERSION "." KVI_SOURCES_DATE);
+
+ if(sto.version().isEmpty())sto.setVersion("1.0.0");
+
+ QString szSubdir = sto.name() + QString("-") + sto.version();
+ szSubdir.replace(QRegExp("[ \\\\/:][ \\\\/:]*"),"_");
+ sto.setSubdirectory(szSubdir);
+
+ QString szAbsDir;
+ g_pApp->getLocalKvircDirectory(szAbsDir,KviApp::Themes,sto.subdirectory(),true);
+ if(!KviFileUtils::makeDir(szAbsDir))
+ {
+ QMessageBox::critical(this,__tr2qs_ctx("Save Current Theme - KVIrc","theme"),__tr2qs_ctx("Unable to create theme directory.","theme"),
+ QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
+ return false;
+ }
+
+ sto.setAbsoluteDirectory(szAbsDir);
+
+ if(!KviTheme::save(sto))
+ {
+ QString szMsg2;
+ QString szErr = sto.lastError();
+ KviQString::sprintf(szMsg2,__tr2qs_ctx("Unable to save theme: %Q","theme"),&szErr);
+ QMessageBox::critical(this,__tr2qs_ctx("Save Current Theme - KVIrc","theme"),szMsg2,
+ QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
+ return false;
+ }
+ // write down the screenshot, if needed
+
+ if(!m_szScreenshotPath.isEmpty())
+ {
+ if(!KviTheme::saveScreenshots(sto,m_szScreenshotPath))
+ {
+ QMessageBox::critical(this,__tr2qs_ctx("Save Current Theme - KVIrc","theme"),__tr2qs_ctx("Failed to load the selected screenshot image: please fix it","theme"),
+ QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
+ setCurrentPage(m_pImageSelectionPage);
+ return false;
+ }
+ }
+
+ QString szMsg = __tr2qs_ctx("Theme saved successfully to ","theme");
+ szMsg += sto.absoluteDirectory();
+
+ QMessageBox::information(this,__tr2qs_ctx("Save Theme - KVIrc","theme"),szMsg,QMessageBox::Ok,
+ QMessageBox::NoButton,QMessageBox::NoButton);
+
+ return true;
+}
+
diff --git a/src/modules/theme/savethemedialog.h b/src/modules/theme/savethemedialog.h
new file mode 100644
index 00000000..df55ee92
--- /dev/null
+++ b/src/modules/theme/savethemedialog.h
@@ -0,0 +1,71 @@
+#ifndef _SAVETHEMEDIALOG_H_
+#define _SAVETHEMEDIALOG_H_
+//=============================================================================
+//
+// File : savethemedialog.h
+// Created on Wed 03 Jan 2007 03:01:34 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2007 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_pointerlist.h"
+#include "kvi_theme.h"
+
+#include <qdialog.h>
+#include <kvi_tal_wizard.h>
+
+
+class QLineEdit;
+class KviTalTextEdit;
+class QPushButton;
+class QCheckBox;
+class QLabel;
+class QMultiLineEdit;
+class KviFileSelector;
+
+
+class KviSaveThemeDialog : public KviTalWizard
+{
+ Q_OBJECT
+public:
+ KviSaveThemeDialog(QWidget * pParent);
+ virtual ~KviSaveThemeDialog();
+protected:
+ QString m_szScreenshotPath;
+ KviFileSelector * m_pImageSelector;
+ QLabel * m_pImageLabel;
+ QLineEdit * m_pThemeNameEdit;
+ KviTalTextEdit * m_pThemeDescriptionEdit;
+ QLineEdit * m_pThemeVersionEdit;
+ QLineEdit * m_pAuthorNameEdit;
+ QWidget * m_pImageSelectionPage;
+ QPushButton * m_pOkButton;
+protected:
+ virtual void accept();
+ bool saveTheme();
+protected slots:
+ void makeScreenshot();
+ void imageSelectionChanged(const QString &szImagePath);
+ //void themeNameChanged(const QString &txt);
+};
+
+
+
+#endif //!_SAVETHEMEDIALOG_H_
diff --git a/src/modules/theme/themefunctions.cpp b/src/modules/theme/themefunctions.cpp
new file mode 100644
index 00000000..0a011956
--- /dev/null
+++ b/src/modules/theme/themefunctions.cpp
@@ -0,0 +1,396 @@
+//=============================================================================
+//
+// File : themefunctions.cpp
+// Created on Wed 03 Jan 2007 03:14:07 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2007 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "themefunctions.h"
+
+#include "kvi_packagefile.h"
+#include "kvi_locale.h"
+#include "kvi_msgbox.h"
+#include "kvi_app.h"
+#include "kvi_htmldialog.h"
+#include "kvi_iconmanager.h"
+#include "kvi_miscutils.h"
+#include "kvi_sourcesdate.h"
+#include "kvi_theme.h"
+#include "kvi_frame.h"
+#ifdef COMPILE_USE_QT4
+#define KviTalMimeSourceFactory Q3MimeSourceFactory
+#include <q3mimefactory.h>
+#else
+#define KviTalMimeSourceFactory QMimeSourceFactory
+#endif
+#include <qmime.h>
+
+namespace KviThemeFunctions
+{
+
+ static bool notAValidThemePackage(QString &szError)
+ {
+ KviQString::sprintf(szError,__tr2qs_ctx("The selected file does not seem to be a valid KVIrc theme package","theme"));
+ return false;
+ }
+
+ bool installThemePackage(const QString &szThemePackageFileName,QString &szError,QWidget * pDialogParent)
+ {
+ KviPointerHashTable<QString,QString> * pInfoFields;
+ QString * pValue;
+ bool bInstall;
+ QPixmap pix;
+ QByteArray * pByteArray;
+ KviHtmlDialogData hd;
+
+ const char * check_fields[] = { "Name", "Version", "Author", "Description", "Date", "Application" };
+
+ // check if it is a valid theme file
+ KviPackageReader r;
+ if(!r.readHeader(szThemePackageFileName))
+ {
+ QString szErr = r.lastError();
+ KviQString::sprintf(szError,__tr2qs_ctx("The selected file does not seem to be a valid KVIrc package: %Q","theme"),&szErr);
+ return false;
+ }
+
+ pInfoFields = r.stringInfoFields();
+
+ pValue = pInfoFields->find("PackageType");
+ if(!pValue)return notAValidThemePackage(szError);
+ if(!KviQString::equalCI(*pValue,"ThemePack"))return notAValidThemePackage(szError);
+ pValue = pInfoFields->find("ThemePackVersion");
+ if(!pValue)return notAValidThemePackage(szError);
+ if(!KviQString::equalCI(*pValue,"1"))return notAValidThemePackage(szError);
+
+ // make sure the default fields exist
+ for(int i=0;i<6;i++)
+ {
+ pValue = pInfoFields->find(check_fields[i]);
+ if(!pValue)return notAValidThemePackage(szError);
+ }
+
+ pValue = pInfoFields->find("ThemeCount");
+ if(!pValue)return notAValidThemePackage(szError);
+ bool bOk;
+ int iThemeCount = pValue->toInt(&bOk);
+ if(!bOk)return notAValidThemePackage(szError);
+ if(iThemeCount < 1)return notAValidThemePackage(szError);
+
+ // ok.. it should be really valid at this point
+
+ // load its picture
+ pByteArray = r.binaryInfoFields()->find("Image");
+ if(pByteArray)
+ pix.loadFromData(*pByteArray,0,0);
+
+ if(pix.isNull())
+ {
+ // load the default icon
+ pix = *(g_pIconManager->getBigIcon(KVI_BIGICON_THEME));
+ }
+
+ QString szPackageName;
+ QString szPackageVersion;
+ QString szPackageAuthor;
+ QString szPackageDescription;
+ QString szPackageDate;
+ QString szPackageThemeEngineVersion;
+ QString szPackageApplication;
+
+ QString szAuthor = __tr2qs_ctx("Author","theme");
+ QString szCreatedAt = __tr2qs_ctx("Created at","theme");
+ QString szCreatedOn = __tr2qs_ctx("Created with","theme");
+
+ r.getStringInfoField("Name",szPackageName);
+ r.getStringInfoField("Version",szPackageVersion);
+ r.getStringInfoField("Author",szPackageAuthor);
+ r.getStringInfoField("Description",szPackageDescription);
+ r.getStringInfoField("Application",szPackageApplication);
+ r.getStringInfoField("Date",szPackageDate);
+
+ QString szWarnings;
+ QString szDetails = "<html><body bgcolor=\"#ffffff\">";
+ QString szTmp;
+
+ int iIdx = 0;
+ int iValidThemeCount = iThemeCount;
+
+ while(iIdx < iThemeCount)
+ {
+ bool bValid = true;
+
+ QString szThemeName;
+ QString szThemeVersion;
+ QString szThemeDescription;
+ QString szThemeDate;
+ QString szThemeSubdirectory;
+ QString szThemeAuthor;
+ QString szThemeThemeEngineVersion;
+ QString szThemeApplication;
+
+ KviQString::sprintf(szTmp,"Theme%dName",iIdx);
+ r.getStringInfoField(szTmp,szThemeName);
+ KviQString::sprintf(szTmp,"Theme%dVersion",iIdx);
+ r.getStringInfoField(szTmp,szThemeVersion);
+ KviQString::sprintf(szTmp,"Theme%dApplication",iIdx);
+ r.getStringInfoField(szTmp,szThemeApplication);
+ KviQString::sprintf(szTmp,"Theme%dDescription",iIdx);
+ r.getStringInfoField(szTmp,szThemeDescription);
+ KviQString::sprintf(szTmp,"Theme%dDate",iIdx);
+ r.getStringInfoField(szTmp,szThemeDate);
+ KviQString::sprintf(szTmp,"Theme%dSubdirectory",iIdx);
+ r.getStringInfoField(szTmp,szThemeSubdirectory);
+ KviQString::sprintf(szTmp,"Theme%dAuthor",iIdx);
+ r.getStringInfoField(szTmp,szThemeAuthor);
+ KviQString::sprintf(szTmp,"Theme%dThemeEngineVersion",iIdx);
+ r.getStringInfoField(szTmp,szThemeThemeEngineVersion);
+ KviQString::sprintf(szTmp,"Theme%dScreenshot",iIdx);
+ QPixmap pixScreenshot;
+ pByteArray = r.binaryInfoFields()->find(szTmp);
+ if(pByteArray)
+ pixScreenshot.loadFromData(*pByteArray,0,0);
+
+ if(szThemeName.isEmpty() || szThemeVersion.isEmpty() || szThemeSubdirectory.isEmpty() || szThemeThemeEngineVersion.isEmpty())
+ bValid = false;
+ if(KviMiscUtils::compareVersions(szThemeThemeEngineVersion,KVI_CURRENT_THEME_ENGINE_VERSION) < 0)
+ bValid = false;
+
+ QString szDetailsBuffer;
+
+ getThemeHtmlDescription(
+ szDetailsBuffer,
+ szThemeName,
+ szThemeVersion,
+ szThemeDescription,
+ szThemeSubdirectory,
+ szThemeApplication,
+ szThemeAuthor,
+ szThemeDate,
+ szThemeThemeEngineVersion,
+ pixScreenshot,
+ iIdx
+ );
+
+ if(iIdx > 0)
+ szDetails += "<hr>";
+
+ szDetails += szDetailsBuffer;
+
+ if(!bValid)
+ {
+ szDetails += "<p><center><font color=\"#ff0000\"><b>";
+ szDetails += __tr2qs_ctx("Warning: The theme might be incompatible with this version of KVIrc","theme");
+ szDetails += "</b></font></center></p>";
+ iValidThemeCount--;
+ }
+
+ iIdx++;
+ }
+
+ szDetails += "<br><p><center><a href=\"theme_dialog_main\">";
+ szDetails += __tr2qs_ctx("Go Back to Package Data","theme");
+ szDetails += "</a></center></p>";
+ szDetails += "</body></html>";
+
+ if(iValidThemeCount < iThemeCount)
+ {
+ szWarnings += "<p><center><font color=\"#ff0000\"><b>";
+ szWarnings += __tr2qs_ctx("Warning: Some of the theme contained in this package might be either corrupted or incompatible with this version of KVIrc","theme");
+ szWarnings += "</b></font></center></p>";
+ }
+
+ QString szShowDetails = __tr2qs_ctx("Show Details","theme");
+
+ KviQString::sprintf(hd.szHtmlText,
+ "<html bgcolor=\"#ffffff\">" \
+ "<body bgcolor=\"#ffffff\">" \
+ "<p><center>" \
+ "<h2>%Q %Q</h2>" \
+ "</center></p>" \
+ "<p><center>" \
+ "<img src=\"theme_dialog_pack_image\">" \
+ "</center></p>" \
+ "<p><center>" \
+ "<i>%Q</i>" \
+ "</center></p>" \
+ "<p><center>" \
+ "%Q: <b>%Q</b><br>" \
+ "%Q: <b>%Q</b><br>" \
+ "</center></p>" \
+ "<p><center>" \
+ "<font color=\"#808080\">" \
+ "%Q: %Q<br>" \
+ "</font>" \
+ "</center></p>" \
+ "%Q" \
+ "<br>" \
+ "<p><center>" \
+ "<a href=\"theme_dialog_details\">%Q</a>" \
+ "</center></p>" \
+ "</body>" \
+ "</html>",
+ &szPackageName,
+ &szPackageVersion,
+ &szPackageDescription,
+ &szAuthor,
+ &szPackageAuthor,
+ &szCreatedAt,
+ &szPackageDate,
+ &szCreatedOn,
+ &szPackageApplication,
+ &szWarnings,
+ &szShowDetails
+ );
+
+
+
+ KviTalMimeSourceFactory::defaultFactory()->setPixmap("theme_dialog_pack_image",pix);
+ KviTalMimeSourceFactory::defaultFactory()->setText("theme_dialog_details",szDetails);
+ KviTalMimeSourceFactory::defaultFactory()->setText("theme_dialog_main",hd.szHtmlText);
+
+ QString beginCenter = "<center>";
+ QString endCenter = "</center>";
+
+ hd.szCaption = __tr2qs_ctx("Install Theme Pack - KVIrc","theme");
+ hd.szUpperLabelText = beginCenter + __tr2qs_ctx("You're about to install the following theme package","theme") + endCenter;
+ hd.szLowerLabelText = beginCenter + __tr2qs_ctx("Do you want to proceed with the installation ?","theme") + endCenter;
+ hd.szButton1Text = __tr2qs_ctx("Do Not Install","theme");
+ hd.szButton2Text = __tr2qs_ctx("Yes, Proceed","theme");
+ hd.iDefaultButton = 2;
+ hd.iCancelButton = 1;
+ hd.pixIcon = *(g_pIconManager->getSmallIcon(KVI_SMALLICON_THEME));
+ hd.iMinimumWidth = 350;
+ hd.iMinimumHeight = 420;
+ hd.iFlags = KviHtmlDialogData::ForceMinimumSize;
+
+ bInstall = KviHtmlDialog::display(pDialogParent,&hd) == 2;
+
+ if(bInstall)
+ {
+ QString szUnpackPath;
+ g_pApp->getLocalKvircDirectory(szUnpackPath,KviApp::Themes);
+ if(!r.unpack(szThemePackageFileName,szUnpackPath))
+ {
+ QString szErr2 = r.lastError();
+ KviQString::sprintf(szError,__tr2qs_ctx("Failed to unpack the selected file: %Q","theme"),&szErr2);
+ return true;
+ }
+ }
+
+ return true;
+ }
+
+
+ void getThemeHtmlDescription(
+ QString &szBuffer,
+ const QString &szThemeName,
+ const QString &szThemeVersion,
+ const QString &szThemeDescription,
+ const QString &szThemeSubdirectory,
+ const QString &szThemeApplication,
+ const QString &szThemeAuthor,
+ const QString &szThemeDate,
+ const QString &szThemeThemeEngineVersion,
+ const QPixmap &pixScreenshot,
+ int iUniqueIndexInDocument
+ )
+ {
+ QString szAuthor = __tr2qs_ctx("Author","theme");
+ QString szCreatedAt = __tr2qs_ctx("Created at","theme");
+ QString szCreatedOn = __tr2qs_ctx("Created with","theme");
+ QString szThemeEngineVersion = __tr2qs_ctx("Theme Engine Version","theme");
+ QString szSubdirectory = __tr2qs_ctx("Subdirectory","theme");
+
+ QString szScreenshot;
+ if(!pixScreenshot.isNull())
+ {
+ KviQString::sprintf(szScreenshot,"<p><center><img src=\"theme_shot%d\"></center></p>",iUniqueIndexInDocument);
+ QString szTmp;
+ KviQString::sprintf(szTmp,"theme_shot%d",iUniqueIndexInDocument);
+ KviTalMimeSourceFactory::defaultFactory()->setPixmap(szTmp,pixScreenshot);
+ } else {
+ szScreenshot = "";
+ }
+
+ KviQString::sprintf(
+ szBuffer,
+ "<p><center>" \
+ "<h2>%Q %Q</h2>" \
+ "</center></p>" \
+ "%Q" \
+ "<p><center>" \
+ "<i>%Q</i>" \
+ "</center></p>" \
+ "<p><center>" \
+ "%Q: <b>%Q</b><br>" \
+ "%Q: <b>%Q</b><br>" \
+ "</center></p>" \
+ "<p><center>" \
+ "<font color=\"#808080\">" \
+ "%Q: %Q<br>" \
+ "%Q: %Q<br>" \
+ "%Q: %Q<br>" \
+ "</font>" \
+ "</center></p>",
+ &szThemeName,
+ &szThemeVersion,
+ &szScreenshot,
+ &szThemeDescription,
+ &szAuthor,
+ &szThemeAuthor,
+ &szCreatedAt,
+ &szThemeDate,
+ &szCreatedOn,
+ &szThemeApplication,
+ &szThemeEngineVersion,
+ &szThemeThemeEngineVersion,
+ &szSubdirectory,
+ &szThemeSubdirectory
+ );
+ }
+
+ bool makeKVIrcScreenshot(const QString &szSavePngFilePath,bool bMaximizeFrame)
+ {
+ if(bMaximizeFrame)
+ {
+ if(g_pFrame->isMaximized())
+ bMaximizeFrame = false;
+ }
+
+ if(bMaximizeFrame)
+ g_pFrame->showMaximized();
+
+ QPixmap pix = QPixmap::grabWidget(g_pFrame);
+ bool bResult = true;
+
+ if(pix.isNull())
+ bResult = false;
+ else {
+ if(!pix.save(szSavePngFilePath,"PNG",100))
+ bResult = false;
+ }
+
+ if(bMaximizeFrame)
+ g_pFrame->showNormal();
+ return bResult;
+ }
+};
+
diff --git a/src/modules/theme/themefunctions.h b/src/modules/theme/themefunctions.h
new file mode 100644
index 00000000..124a65f6
--- /dev/null
+++ b/src/modules/theme/themefunctions.h
@@ -0,0 +1,54 @@
+#ifndef _THEMEFUNCTIONS_H_
+#define _THEMEFUNCTIONS_H_
+//=============================================================================
+//
+// File : themefunctions.h
+// Created on Wed 03 Jan 2007 03:14:07 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2007 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+
+#include <qwidget.h>
+#include <qpixmap.h>
+
+namespace KviThemeFunctions
+{
+ bool installThemePackage(const QString &szThemePackageFileName,QString &szError,QWidget * pDialogParent = 0);
+ void getThemeHtmlDescription(
+ QString &szBuffer,
+ const QString &szThemeName,
+ const QString &szThemeVersion,
+ const QString &szThemeDescription,
+ const QString &szThemeSubdirectory,
+ const QString &szThemeApplication,
+ const QString &szThemeAuthor,
+ const QString &szThemeDate,
+ const QString &szThemeThemeEngineVersion,
+ const QPixmap &pixScreenshot,
+ int iUniqueIndexInDocument = 0
+ );
+ bool makeKVIrcScreenshot(const QString &szSavePngFilePath,bool bMaximizeFrame = false);
+};
+
+
+
+#endif //!_THEMEFUNCTIONS_H_
diff --git a/src/modules/tip/Makefile.am b/src/modules/tip/Makefile.am
new file mode 100644
index 00000000..2a9fbbcb
--- /dev/null
+++ b/src/modules/tip/Makefile.am
@@ -0,0 +1,30 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvitip.la
+
+libkvitip_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvitip_la_SOURCES = libkvitip.cpp
+libkvitip_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= libkvitip.h
+
+tmpdir = $(picsdir)
+
+tmp_DATA = kvi_tip.png
+
+confdir = $(configmodulesdir)
+
+conf_DATA = libkvitip.kvc libkvitip_it.kvc libkvitip_cs.kvc libkvitip_ru.kvc
+
+EXTRA_DIST = $(tmp_DATA) $(conf_DATA)
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+libkvitip.cpp: libkvitip.moc
diff --git a/src/modules/tip/kvi_tip.png b/src/modules/tip/kvi_tip.png
new file mode 100644
index 00000000..29312d4a
--- /dev/null
+++ b/src/modules/tip/kvi_tip.png
Binary files differ
diff --git a/src/modules/tip/libkvitip.cpp b/src/modules/tip/libkvitip.cpp
new file mode 100644
index 00000000..ac23d914
--- /dev/null
+++ b/src/modules/tip/libkvitip.cpp
@@ -0,0 +1,309 @@
+//
+// File : libkvitip.cpp
+// Creation date : Thu May 10 2001 13:50:11 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "libkvitip.h"
+#include "kvi_module.h"
+#include "kvi_styled_controls.h"
+
+#include "kvi_locale.h"
+#include "kvi_app.h"
+
+#include "kvi_iconmanager.h"
+#include "kvi_options.h"
+#include "kvi_fileutils.h"
+
+#include <qpushbutton.h>
+
+#ifdef COMPILE_USE_QT4
+#include <q3simplerichtext.h>
+#include <QDesktopWidget>
+#include <QCloseEvent>
+#define KviTalSimpleRichText Q3SimpleRichText
+#else
+#include <qsimplerichtext.h>
+#define KviTalSimpleRichText QSimpleRichText
+#endif
+
+#include <qfont.h>
+#include <qtextcodec.h>
+#include <qpainter.h>
+
+KviTipWindow * g_pTipWindow = 0;
+
+#define KVI_TIP_WINDOW_HEIGHT 200
+#define KVI_TIP_WINDOW_WIDTH 500
+#define KVI_TIP_WINDOW_BUTTON_WIDTH 80
+#define KVI_TIP_WINDOW_BUTTON_HEIGHT 30
+#define KVI_TIP_WINDOW_BORDER 5
+#define KVI_TIP_WINDOW_DOUBLE_BORDER 10
+#define KVI_TIP_WINDOW_SPACING 2
+
+
+KviTipFrame::KviTipFrame(QWidget * par)
+: QFrame(par)
+{
+ KviStr buffer;
+ g_pApp->findImage(buffer,"kvi_tip.png");
+ m_pTipPixmap = new QPixmap(buffer.ptr());
+#ifdef COMPILE_USE_QT4
+ setBackgroundMode(Qt::NoBackground);
+#else
+ setBackgroundMode(QWidget::NoBackground);
+#endif
+ setFrameStyle(QFrame::Sunken | QFrame::WinPanel);
+}
+
+KviTipFrame::~KviTipFrame()
+{
+ delete m_pTipPixmap;
+}
+
+void KviTipFrame::setText(const QString &text)
+{
+ m_szText = "<center><font color=\"#FFFFFF\">";
+ m_szText += text;
+ m_szText += "</font></center>";
+ update();
+}
+
+void KviTipFrame::drawContents(QPainter *p)
+{
+ p->fillRect(contentsRect(),QColor(0,0,0));
+ p->drawPixmap(5,(height() - m_pTipPixmap->height()) / 2,*m_pTipPixmap);
+
+ QFont f = QFont();
+ f.setStyleHint(QFont::SansSerif);
+ f.setPointSize(12);
+
+ KviTalSimpleRichText doc(m_szText,f);
+ doc.setWidth(width() - 80);
+
+ QRegion reg(0,0,1000,20000);
+
+#if QT_VERSION >= 300
+ doc.draw(p,70,10,reg,colorGroup());
+#else
+ doc.draw(p,70,10,reg,palette());
+#endif
+}
+
+KviTipWindow::KviTipWindow()
+: QWidget(0,"kvirc_tip_window" /*,WStyle_Customize | WStyle_Title | WStyle_DialogBorder | WStyle_StaysOnTop*/ )
+{
+ m_pConfig = 0;
+
+
+ m_pTipFrame = new KviTipFrame(this);
+ m_pTipFrame->setGeometry(
+ KVI_TIP_WINDOW_BORDER,
+ KVI_TIP_WINDOW_BORDER,
+ KVI_TIP_WINDOW_WIDTH - KVI_TIP_WINDOW_DOUBLE_BORDER,
+ KVI_TIP_WINDOW_HEIGHT - (KVI_TIP_WINDOW_DOUBLE_BORDER + KVI_TIP_WINDOW_BUTTON_HEIGHT + KVI_TIP_WINDOW_SPACING));
+
+ QPushButton * pb = new QPushButton(">>",this);
+ pb->setGeometry(
+ KVI_TIP_WINDOW_WIDTH - ((KVI_TIP_WINDOW_BUTTON_WIDTH * 2)+ KVI_TIP_WINDOW_BORDER + KVI_TIP_WINDOW_SPACING),
+ KVI_TIP_WINDOW_HEIGHT - (KVI_TIP_WINDOW_BUTTON_HEIGHT + KVI_TIP_WINDOW_BORDER),
+ KVI_TIP_WINDOW_BUTTON_WIDTH,
+ KVI_TIP_WINDOW_BUTTON_HEIGHT
+ );
+ connect(pb,SIGNAL(clicked()),this,SLOT(nextTip()));
+
+ pb = new QPushButton(__tr2qs("Close"),this);
+ pb->setGeometry(
+ KVI_TIP_WINDOW_WIDTH - (KVI_TIP_WINDOW_BUTTON_WIDTH + KVI_TIP_WINDOW_BORDER),
+ KVI_TIP_WINDOW_HEIGHT - (KVI_TIP_WINDOW_BUTTON_HEIGHT + KVI_TIP_WINDOW_BORDER),
+ KVI_TIP_WINDOW_BUTTON_WIDTH,
+ KVI_TIP_WINDOW_BUTTON_HEIGHT
+ );
+ connect(pb,SIGNAL(clicked()),this,SLOT(close()));
+ pb->setDefault(true);
+
+ m_pShowAtStartupCheck = new KviStyledCheckBox(__tr2qs("Show at startup"),this);
+ m_pShowAtStartupCheck->setChecked(KVI_OPTION_BOOL(KviOption_boolShowTipAtStartup));
+ m_pShowAtStartupCheck->setGeometry(
+ KVI_TIP_WINDOW_BORDER,
+ KVI_TIP_WINDOW_HEIGHT - (KVI_TIP_WINDOW_BUTTON_HEIGHT + KVI_TIP_WINDOW_BORDER),
+ KVI_TIP_WINDOW_WIDTH - ((KVI_TIP_WINDOW_BORDER + KVI_TIP_WINDOW_BUTTON_WIDTH + KVI_TIP_WINDOW_SPACING) * 2),
+ KVI_TIP_WINDOW_BUTTON_HEIGHT
+ );
+
+ setFixedSize(KVI_TIP_WINDOW_WIDTH,KVI_TIP_WINDOW_HEIGHT);
+
+ setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_IDEA)));
+
+ setCaption(__tr2qs("Did you know..."));
+
+ pb->setFocus();
+
+}
+
+KviTipWindow::~KviTipWindow()
+{
+ KVI_OPTION_BOOL(KviOption_boolShowTipAtStartup) = m_pShowAtStartupCheck->isChecked();
+ if(m_pConfig)closeConfig();
+}
+
+bool KviTipWindow::openConfig(const char * filename,bool bEnsureExists)
+{
+ if(m_pConfig)closeConfig();
+
+ m_szConfigFileName = filename;
+// m_szConfigFileName.cutToLast('/');
+
+ KviStr buffer;
+ g_pApp->getReadOnlyConfigPath(buffer,m_szConfigFileName.ptr(),KviApp::ConfigPlugins,true);
+
+ if(bEnsureExists)
+ {
+ if(!KviFileUtils::fileExists(buffer.ptr()))return false;
+ }
+
+ m_pConfig = new KviConfig(buffer.ptr(),KviConfig::Read);
+
+ return true;
+}
+
+void KviTipWindow::closeConfig()
+{
+ KviStr buffer;
+ g_pApp->getLocalKvircDirectory(buffer,KviApp::ConfigPlugins,m_szConfigFileName.ptr());
+ m_pConfig->setSavePath(buffer.ptr());
+ delete m_pConfig;
+ m_pConfig = 0;
+}
+
+void KviTipWindow::nextTip()
+{
+ if(!m_pConfig)
+ {
+ KviStr szLocale = KviLocale::localeName();
+ KviStr szFile;
+ szFile.sprintf("libkvitip_%s.kvc",szLocale.ptr());
+ if(!openConfig(szFile.ptr(),true))
+ {
+ szLocale.cutFromFirst('.');
+ szLocale.cutFromFirst('_');
+ szLocale.cutFromFirst('@');
+ szFile.sprintf("libkvitip_%s.kvc",szLocale.ptr());
+ if(!openConfig(szFile.ptr(),true))
+ {
+ openConfig("libkvitip.kvc",false);
+ }
+ }
+ }
+
+ unsigned int uNumTips = m_pConfig->readUIntEntry("uNumTips",0);
+ unsigned int uNextTip = m_pConfig->readUIntEntry("uNextTip",0);
+
+
+ KviStr tmp(KviStr::Format,"%u",uNextTip);
+ QString szTip = m_pConfig->readEntry(tmp.ptr(),__tr2qs("<b>Can't find any tip... :(</b>"));
+
+ //debug("REDECODED=%s",szTip.utf8().data());
+
+ uNextTip++;
+ if(uNextTip >= uNumTips)uNextTip = 0;
+ m_pConfig->writeEntry("uNextTip",uNextTip);
+
+ m_pTipFrame->setText(szTip);
+}
+
+void KviTipWindow::showEvent(QShowEvent *e)
+{
+ resize(KVI_TIP_WINDOW_WIDTH,KVI_TIP_WINDOW_HEIGHT);
+ move((g_pApp->desktop()->width() - KVI_TIP_WINDOW_WIDTH) / 2,
+ (g_pApp->desktop()->height() - KVI_TIP_WINDOW_HEIGHT) / 2);
+ QWidget::showEvent(e);
+}
+
+void KviTipWindow::closeEvent(QCloseEvent *e)
+{
+ e->ignore();
+ delete this;
+ g_pTipWindow = 0;
+}
+
+/*
+ @doc: tip.open
+ @type:
+ command
+ @title:
+ tip.open
+ @short:
+ Opens the "did you know..." tip window
+ @syntax:
+ tip.open [tip_file_name:string]
+ @description:
+ Opens the "did you know..." tip window.<br>
+ If <tip_file_name> is specified , that tip is used instead of
+ the default tips provided with kvirc.<br>
+ <tip_file_name> must be a file name with no path and must refer to a
+ standard KVIrc configuration file found in the global or local
+ KVIrc plugin configuration directory ($KVIrcDir/config/modules).<br>
+ Once the window has been opened, the next tip avaiable in the config file is shown.<br>
+ This command works even if the tip window is already opened.<br>
+*/
+
+
+static bool tip_kvs_cmd_open(KviKvsModuleCommandCall * c)
+{
+ QString szTipfilename;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("filename",KVS_PT_STRING,KVS_PF_OPTIONAL,szTipfilename)
+ KVSM_PARAMETERS_END(c)
+ if(!g_pTipWindow)g_pTipWindow = new KviTipWindow();
+ if (!szTipfilename.isEmpty()) g_pTipWindow->openConfig(szTipfilename);
+ g_pTipWindow->nextTip();
+ g_pTipWindow->show();
+ return true;
+}
+
+static bool tip_module_init(KviModule *m)
+{
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"open",tip_kvs_cmd_open);
+ return true;
+}
+
+static bool tip_module_cleanup(KviModule *m)
+{
+ if(g_pTipWindow)g_pTipWindow->close();
+ return true;
+}
+
+static bool tip_module_can_unload(KviModule *m)
+{
+ return (g_pTipWindow == 0);
+}
+
+KVIRC_MODULE(
+ "Tip", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2000 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "\"Did you know...\" tip",
+ tip_module_init,
+ tip_module_can_unload,
+ 0,
+ tip_module_cleanup
+)
+
+#include "libkvitip.moc"
diff --git a/src/modules/tip/libkvitip.h b/src/modules/tip/libkvitip.h
new file mode 100644
index 00000000..1387f8df
--- /dev/null
+++ b/src/modules/tip/libkvitip.h
@@ -0,0 +1,71 @@
+#ifndef _LIBKVITIP_H_
+#define _LIBKVITIP_H_
+
+//
+// File : kvi_tip.cpp
+// Creation date : Thu May 10 2001 13:49:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include <qwidget.h>
+#include <qframe.h>
+#include <qpixmap.h>
+#include <qcheckbox.h>
+
+#include "kvi_styled_controls.h"
+#include "kvi_string.h"
+#include "kvi_config.h"
+
+class KviTipFrame : public QFrame
+{
+ Q_OBJECT
+public:
+ KviTipFrame(QWidget * par);
+ ~KviTipFrame();
+protected:
+ QString m_szText;
+ QPixmap * m_pTipPixmap;
+protected:
+ virtual void drawContents(QPainter *p);
+public:
+ void setText(const QString &text);
+};
+
+class KviTipWindow : public QWidget
+{
+ Q_OBJECT
+public:
+ KviTipWindow();
+ ~KviTipWindow();
+protected:
+ KviTipFrame * m_pTipFrame;
+ KviStyledCheckBox * m_pShowAtStartupCheck;
+ KviConfig * m_pConfig;
+ KviStr m_szConfigFileName; // no path!
+protected:
+ virtual void showEvent(QShowEvent *e);
+ virtual void closeEvent(QCloseEvent *e);
+public:
+ bool openConfig(const char * filename,bool bEnsureExists = true);
+ void closeConfig();
+public slots:
+ void nextTip();
+};
+
+#endif //_LIBKVITIP_H_
diff --git a/src/modules/tip/libkvitip.kvc b/src/modules/tip/libkvitip.kvc
new file mode 100644
index 00000000..94db1571
--- /dev/null
+++ b/src/modules/tip/libkvitip.kvc
@@ -0,0 +1,28 @@
+[KVIrc]
+uNextTip=0
+uNumTips=25
+TranslatorHint=This-file-MUST-be-encoded-in-UTF8
+0=You can open connections to multiple servers in a single KVIrc window, just select "New IRC Context" from the KVIrc menu.<br>The original style of devoting a KVIrc frame window to each connection is still supported, just select "New Frame Window" from the same menu.
+1=IPv6 is now fully supported, even for DCC transfers.<br><b>/server -i &lt;servername&gt;</b> is the command. :)
+2=KVIrc supports SSL encryption.<br>SSL encrypted IRC connections can be established by using <b>/server -s</b>, and DCC connections by using <b>/dcc.chat -s</b><br>It also works over IPv6.
+3=An <b>IRC context</b> is a set of resources dealing with a single server connection. It has an associated <b>Console</b> window that displays system and server messages.
+4=KVIrc is a highly modular application. Modules are loaded and unloaded transparently to the user (and even to the scripter!). You can also write your own modules that extend the scripting language, or add other features.
+5=The <b>gnutella</b> module has been removed from the KVIrc source tree, and is now shipped as a separate package.
+6=KVIrc supports multiple handler scripts for a single event. This allows multiple scripts to be installed at the same time, avoids handler collisions and helps in adding/removing and activating/deactivating script sections.
+7=KVIrc supports the <b>irc://</b> Uniform Resource Locator (URL). Run the command: <br><b>kvirc irc://irc.yourserver.org:6667/channel</b><br> to connect to that server.<br>The general syntax is:<br><b>irc[6]://&lt;server-name&gt;[:&lt;port&gt;][/[&lt;channel&gt;[?&lt;pass&gt;]]]</b>
+8=The KVIrc executable acts like the "netscape -remote" command, if an instance of KVIrc is already running, the command line parameters are passed to that instance via IPC. You can override this behaviour with the <b>-f</b> switch.
+9=KVIrc can be your browser's handler for <b>irc://</b> URLs. If KVIrc has KDE support, you should be able to run it by simply typing an <b>irc://</b> URL into Konqueror's Location bar.<br>Try <b>irc://irc.freenode.net/kvirc</b> :)
+10=URLs can also be made for IPv6 IRC servers, the following syntax applies in this case:<br><b>irc6://&lt;ipv6-server-name&gt;[:&lt;port&gt;][/[&lt;channel&gt;[?&lt;pass&gt;]]]</b>
+11=You can switch between windows pressing <b>Ctrl+Left/Right</b>. <b>Alt+Left/Right</b> cycles only between windows in the current context.
+12=A quick method for connecting to a server in a new IRC context is <b>/server -n &lt;servername&gt;</b>
+13=KVIrc is portable between Windows and various flavours of Unix machines. If you're a good scripter, your scripts will be portable too!
+14=Want to automatically join a channel on connect?<br>Easy!<br>Just click "Advanced" in the server settings and add the channel in the "Join Channels" tab. For something that works for all servers, try <b>/event(OnIrc,autojoin){ join #yourchannel; }</b>
+15=Do you know what an avatar is? Check out <b>/help avatar</b>
+16=The DCC settings page has a lot of options that can help you solve many common DCC connection problems. People behind firewalls might be able to send data, too. It's just a matter of setting things up. :)
+17=There is a separate OpenNap compatibility module (<b>opennap</b>) that enables OpenNap-based chatting with KVIrc.
+18=KVIrc supports many 8-bit character encodings. You can "speak" KOI8-R based Russian on one channel and Japanese on another over the same connection (with appropriate fonts). We strongly encourage you to use <b>Unicode</b> (UTF-8), which supports almost every language in the world.
+19=To avoid excessive DCC transfers, it is recommended that you make your avatars available on the Web. You can also use any existing image on the Web as an avatar.<br><b>/avatar #yourchan http://funnyhost.com/funny/funny.png</b> will work!
+20=KVIrc has a built-in HTTP client, and you can download files from the Web by using the <b>/http.get</b> command.
+21=Don't like the window tree taskbar mode? You can opt for a traditional taskbar (similar to mIRC) in the taskbar settings page under the preferences.
+22=You can copy text from the text window to the clipboard by simply selecting it with the mouse. If you also keep Shift pressed then the color codes will be copied as well.
+23=This is the last tip. You can add your own tips - Check out <b>/help tip.open</b>. Feel free to submit more tips (in any language) to <b>trisk-kvirc(at)quasarnet.org</b>.
diff --git a/src/modules/tip/libkvitip_cs.kvc b/src/modules/tip/libkvitip_cs.kvc
new file mode 100644
index 00000000..ab169fe7
--- /dev/null
+++ b/src/modules/tip/libkvitip_cs.kvc
@@ -0,0 +1,29 @@
+[KVIrc]
+uNextTip=0
+uNumTips=25
+Encoding=UTF8
+0=Můžete otevřít více spojení s více servery v jednom KVIrc okně, jen vyberte "Nový IRC Kontext" v KVIrc menu.<br>Původní styl vnořeného okna KVIrcu pro každé spojení je stále podporován, stačí vybrat "Nové okno s rámcem" ze stejné nabídky.
+1=IPv6 je nyní plně podporováno, dokonce pro DCC přenosy.<br><b>/server -i &lt;název_serveru&gt;</b> je příkaz. :)
+2=KVIrc podporuje Šifrování SSL.<br>IRC spojení šifrovaná pomocí SSL mohou být navázána příkazem <b>/server -s</b>, a DCC spojení použitím <b>/dcc.chat -s</b><br>Funguje také na IPv6.
+3=<b>IRC context</b> je soubor zdrojů patřících k jednomu spojení se serverem. Má přiřazené okno <b>Console</b> které ukazuje systémové zprávy a zprávy serveru.
+4=KVIrc je vysoce modulární aplikace. Moduly jsou načítány a vypínány transparentně pro uživatele (i pro skriptora!). Můžete také napsat vlastní moduly pro rozšíření skriptovacího jazyka, nebo rozšíření funkcí KVIrc.
+5=Modul <b>gnutella</b> byl odstraněn ze zdrojového stromu KVIrc a je dodáván jako samostatný balíček.
+6=KVIrc Podporuje několikanásobné zpracování skriptů pro jednu událost. To dovoluje mít nainstalováno více skriptů současně, aniž by spolu kolidovaly a usnadnuje přidávání/odebírání a aktivaci/deaktivaci částí skriptu.
+7=KVIrc podporuje <b>irc://</b> Uniform Resource Locator (URL). Spusťte příkaz: <br><b>kvirc irc://irc.vášserver.org:6667/kanál</b><br> pro připojení k tomuto serveru.<br>Obecná syntaxe je:<br><b>irc[6]://&lt;jméno-serveru&gt;[:&lt;port&gt;][/[&lt;kanál&gt;[?&lt;heslo&gt;]]]</b>
+8=Spuštěný soubor KVIrcu pracuje jako příkaz "netscape -remote", pokud již KVIrc běží, parametry příkazového řádku jsou předány běžícímu KVIrcu přes IPC. Můžete obejít toto chování použitím parametru <b>-f</b>.
+9=KVIrc může zpracovávat URL <b>irc://</b> z Vašeho prohlížeče. Pokud má KVIrc podporu KDE, můžete jo spustit pouhým zadáním <b>irc://</b> URL do adresního řádku Konqueroru.<br>Zkuste <b>irc://irc.freenode.net/kvirc</b> :)
+10=URL mohou být také použita pro IPv6 IRC servery, v tom připadě je syntaxe:<br><b>irc6://&lt;název-ipv6-serveru&gt;[:&lt;port&gt;][/[&lt;kanál&gt;[?&lt;heslo&gt;]]]</b>
+11=Můžete přepínat mezi okny stiskem <b>Ctrl+Vlevo/Vpravo</b>. <b>Alt+Vlevo/Vpravo</b> přepíná pouze mezi okny v aktuálním kontextu.
+12=Rychlý způsob pro připojení k serveru v novém IRC kontextu je <b>/server -n &lt;název-serveru&gt;</b>
+13=KVIrc je přenositelný mezi Windows a různými Unixovými stroji. Pokud jste dobrý skriptor, Vaše skripty budou přenositelné také!
+14=Chcete automaticky vstoupit do kanálu při připojení?<br>Snadné!<br>Stačí kliknout na "Pokročilé" v nastavení serveru a přidat kanál do "Příchod do kanálů". Pro něco co funguje na všech serverech, zkuste <b>/event(OnIrc,autojoin){ join #váškanál; }</b>
+15=Víte co je Avatar? Mrkněte na <b>/help avatar</b>
+16=Nastavení DCC má mnoho možností, které Vám pomohou vyřešit mnoho běžných problémů s DCC spojením. Lidé za firewallem mohou také posílat data. Je to jen otázka správného nastavení. :)
+17=K dispozici je samostatný OpenNap modul (<b>opennap</b>), který umožnuje chat založený na OpenNap s KVIrc.
+18=KVIrc podporuje mnoho 8-bitových znakových sad. Můžete "mluvit" KOI8-R Ruštinou na jednom kanále a Japonsky na jiném při stejném spojení (s příslušnými fonty). Doporučujeme použít <b>Unicode</b> (UTF-8), který podporuje téměř každý světový jazyk.
+19=Abyste předešli mnohým DCC přenosům, doporučuje se dát si Avatar online na Web. Můžete také použít libovolný existující obrázek na webu jako Avatar.<br><b>/avatar #váškanál http://funnyhost.com/funny/funny.png</b> funguje!
+20=KVIrc má vestavěný HTTP klient, takže můžete stahovat soubory z Webu pomocí příkazu <b>/http.get</b>.
+21=Nelíbí se vám taskbar ve stromu? Můžete si nastavit tradiční taskbar (podobný mIRC) v Nastavení taskbaru.
+22=Můžete kopírovat text z okna do schránky pouhým označením myší. Pokud podržíte Shift, budou zkopírovány i barevné kódy.
+23=Můžete zkopírovat text kanálu nebo query jen jeho pouhým vybráním. Pokud podržíte Shift, tak se zkopírují i barvy.
+24=Toto je poslední tip. Můžete přidat vlastní tipy - Mrkněte na <b>/help tip.open</b>. Klidně pošlete více tipů (v libovolném jazyce) na <b>trisk-kvirc(at)quasarnet.org</b>.
diff --git a/src/modules/tip/libkvitip_it.kvc b/src/modules/tip/libkvitip_it.kvc
new file mode 100644
index 00000000..edabad68
--- /dev/null
+++ b/src/modules/tip/libkvitip_it.kvc
@@ -0,0 +1,28 @@
+[KVIrc]
+uNextTip=0
+uNumTips=25
+TranslatorHint=This-file-MUST-be-encoded-in-UTF8
+0=Puoi aprire connessioni verso server multipli: scegli "Nuovo IRC Context" dal menu KVIrc.<br>Il vecchio metodo di una finestra per connessione ovviamente ancora supportato: scegli "Nuova finestra" dallo stesso menù
+1=IPv6 ora è supportato completamente, anche per le connessioni DCC.<br>Il comando è <b>/server -i &lt;nomeserver&gt;</b> :)
+2=KVIrc supporta crittazione SSL.<br>Le connessioni IRC crittate con SSL possono essere stabilite usando <b>/server -s</b>, e connessioni DCC usando <b>/dcc.chat -s</b><br>Funziona anche usando IPv6.
+3=Un <b>contesto IRC</b> è un set di risorse che dialogano con una singola connessione server. Ha associato una finestra <b>Console</b> che mostra i messaggi di sistema e del server.
+4=KVIrc è un'applicazione altamente modulare. I moduli sono caricati e scaricati trasparentemente all'utente (ed anche allo scripter!). Puoi anche scrivere i tuoi moduli personali che estendono il linguaggio di scripting o aggiungono altre funzionalità.
+5=Il modulo <b>gnutella</b> è stato rimosso dai sorgenti di KVIrc ed è ora distribuito in un pacchetto separato.
+6=KVIrc supporta diversi gestori per lo stesso evento. Questo permette di avere diversi script installati allo stesso momento, evitare collisioni tra gestori ed aiutare ad aggiungere/rimuovere e attivare/disattivare gli script.
+7=KVIrc supporta gli URL (Uniform Resource Locator) <b>irc://</b>. Lancia il comando:<br><b>kvirc irc://irc.tuoserver.org:6667/canale</b><br> per connettere a quel server.<br>La sintassi generale è:<br><b>irc[6]://&lt;nome-server&gt;[:&lt;porta&gt;][/[&lt;canale&gt;[?&lt;password&gt;]]]</b>
+8=L'eseguibile KVIrc agisce come il comando "netscape -remote", se c'è già un'istanza di KVIrc avviata, i parametri a linea di comando saranno passato a quell'istanza usando IPC. Puoi sovrascrivere questo comportamento con l'opzione <b>-f</b>.
+9=KVIrc può essere il tuo gestore del browser per gli URL <b>irc://</b>. Se KVIrc ha il supporto KDE, dovresti poterlo lanciare semplicemente scrivendo un URL <b>irc://</b> nella barra degli URL di Konqueror.<br>Prova <b>irc://irc.freenode.net/kvirc</b> :)
+10=Gli URL possono anche essere fatti da server IRC IPv6, la sintassi seguente funzionerà in questo caso:<br><b>irc6://&lt;nome-server-ipv6&gt;[:&lt;porta&gt;][/[&lt;canale&gt;[?&lt;password&gt;]]]</b>
+11=Puoi navigare tra le finestre premendo <b>Ctrl+Sinistra/Destra</b>. <b>Alt+Sinistra/Destra</b> cambia solo finestra nel contesto corrente.
+12=Un metodo veloce per connettere a un server in un nuovo contesto IRC è <b>/server -n &lt;nomeserver&gt;</b>
+13=KVIrc è portabile tra diverse macchine UNIX (compreso Mac) e Windows. Se sei un bravo scripter, anche i tuoi script saranno portabili!
+14=Vuoi entrare in un canale automaticamente alla connessione?<br>Facile!<br>Clicca su "Avanzate" nella configurazione del server e aggiungi il canale nella scheda "Entra nei Canali". Per qualcosa che funzioni per ogni server, prova <b>/event(OnIrc,autojoin){ join #tuocanale; }</b>
+15=Sai cos'è un avatar? Prova <b>/help avatar</b>
+16=La pagina di configurazione delle DCC ha un sacco di opzioni che possono aiutarti a risolvere i problemi di connessione più comuni. Le persone dietro un firewall potrebbero anche volere inviare dei dati. E' giusto una questione di configurazione :)
+17=C'è un modulo separato per la compatibilità con OpenNAP (<b>opennap</b>) che abiita le chat basate su OpenNAP con KVIrc.
+18=KVIrc supporta diverse codifiche a 8-bit. Puoi "parlare" russo KOI8-R su un canale e giapponese in un altro con la stessa connessione (e dei font appropriati). Noi incoraggiamo fortemente l'uso di <b>Unicode</b> (UTF-8), che supporta quasi tutte le lingue del mondo.
+19=Per evitare trasferimenti DCC eccessivi, è raccomandato che metti il tuo avatar sul Web. Puoi anche usare una qualsiasi immagine sul Web come avatar.<br><b>/avatar #tuocanale http://sito.com/immagini/immagine.png</b> funzionerà!
+20=KVIrc ha un client HTTP integrato, e puoi scaricare file dal Web usando il comando <b>/http.get</b>.
+21=Non ti piacciono le finestre disposte ad albero? Puoi optare per una visualizzazione tradizionale (simile a mIRC) nella pagina di configurazione delle finestre nelle preferenze.
+22=Puoi copiare il testo dalla finestra di chat agli appunti semplicemente selezionandolo col mouse. Se tieni anche premuto lo Shift verranno copiati anche i codici colore.
+23=Questo è l'ultimo suggerimento. Puoi aggiungere i tuoi suggerimenti personali - Prova <b>/help tip.open</b>. Sentiti libero di mandare nuovi suggerimenti (in qualsiasi lingua) a <b>trisk-kvirc(at)quasarnet.org</b>.
diff --git a/src/modules/tip/libkvitip_ru.kvc b/src/modules/tip/libkvitip_ru.kvc
new file mode 100644
index 00000000..a9f982f6
--- /dev/null
+++ b/src/modules/tip/libkvitip_ru.kvc
@@ -0,0 +1,29 @@
+[KVIrc]
+uNextTip=0
+uNumTips=25
+TranslatorHint=This-file-MUST-be-encoded-in-UTF8
+0=Вы можете скопировать текст из окна в буфер обмена просто выделив его мышью. Если удерживать нажатым Shift, то коды цветов также будут скопированы.
+1=Если вы хотите использовать озвучивание событий в KVIrc, откройте редактор событий, добавьте на нужные события обработчики и впишите в них <b>snd.play /путь/к/звуковому/файлу</b>. также для некоторых событий вы можете просто установить звук, указав звуковой файл в диалоге опций, на странице Общие настройки->Звуки.
+2=IPv6 теперь полностью поддерживается, даже для DCC передач.<br><b>/server -i &lt;servername&gt;</b> команда. :)
+3=KVIrc поддерживает SSL шифрование.<br>SSL шифрованные IRC соединения можно установить, используя <b>/server -s</b>, и DCC соединения используя <b>/dcc.chat -s</b><br>Это также работает через IPv6.
+4=<b>IRC контекст</b> это ресурсы, которые относятся только к одному соединению с сервером. У него есть связанное окно <b>Консоль</b>, которое отображает сообщения системы и сервера.
+5=KVIrc является полностью модульным приложением. Модули загружаются и выгружаются прозрачно для пользователя (даже в скриптах!). Вы можете также писать свои собственные модули, которые расширяют скриптовый язык или добавляют новые возможности.
+6=KVIrc поддерживает пространства имен (namespaces), которые позволяют скриптерам не забититься о том, что имена созданных ими команд будут конфликтовать со скриптами других авторов.
+7=KVIrc поддерживает множественные обработчики для каждого события. Это позволяет использовать множество сценариев установленных в одно и то же время, исключает конфликты обработчиков, и помогает удалять/добавлять и включать/выключать секции сценариев.
+8=KVIrc поддерживает <b>irc://</b> Uniform Resource Locator (URL). Выполните команду: <br><b>kvirc irc://irc.yourserver.org:6667/channel</b><br> для подключения к серверу. Общий синтаксис:<br><b>irc[6]://&lt;имя.сервера&gt;[:&lt;порт&gt;][/[&lt;канал&gt;[?&lt;пароль&gt;]]]</b>
+9=Запуск KVIrc действует подобно команде <br>"netscape -remote", если KVIrc уже запущен параметры командной строки передаются в запущеное приложение через IPC. Вы можете отменить это используя ключ <b>-f</b>.
+10=KVIrc может быть вашим обработчиком протокола <b>irc://</b> в КДЕ. Если KVIrc собран с поддержкой KDE, вы можете запустить его просто набрав <b>irc://</b> URL в строке адреса Конкверора.<br>Например <b>irc://irc.freenode.net/kvirc</b> :)
+11=URL-ы могут быть оформлены и для IPv6 IRC серверов с помощью следующего синтаксиса:<br><b>irc6://&lt;ipv6-сервер&gt;[:&lt;порт&gt;][/[&lt;канал&gt;[?&lt;пароль&gt;]]]</b>
+12=Вы можете переключаться между окнами с помощью <b>Ctrl+Left/Right</b>. <b>Alt+Left/Right</b> - по циклу только между окнами текущего контекста.
+13=Быстрый способ для подключения к серверу в новом контексте IRC <b>/server -n &lt;имясервера&gt;</b>
+14=KVIrc является мультиплатформеннм приложением - существуют сборки под Unix, Windows и Mac. Если вы будете правильно писать сценарии, то они тоже будут портируемы!
+15=Хотите автоматически входить на канал при коннекте? Нет ничего проще!<br>Кликните на кнопке "Дополнительно" в настройках сервера и добавьте канал к списку на вкладке "Входить на каналы"
+16=Вы не знаете как пользоваться аватаром? Наберите <b>/help avatar</b>
+17=Секция настроек DCC имеет множество опций, которые помогут вам решить разные проблемы, возникающие при использовании DCC соединений. Даже если вы находитесь за фаерволом, то тоже сможете передавать данные. Всё дело в правильных настройках. :)
+18=KVIrc поддерживает множество 8-битных кодировок. Вы можете на одном канале "разговаривать" по русски в KOI8-R, а на другом по японски (если у вас имеются соответствующие шрифты ). Мы очень рекомендуем вам использовать <b>Unicode</b> (UTF-8), который поддерживает практически все языки мира.
+19=Чтобы избежать дополнительного траффика DCC, мы рекомендуем использовать аватары, находящиеся в интернете.<br><b>/avatar #yourchan http://funnyhost.com/funny/funny.png</b> будет работать!
+20=KVIrc имеет встроенный клиент HTTP, и вы можете загрузить файлы из интернета используя команду <b>/http.get</b>.
+21=Вам не нравится окно с деревом панели задач? Вы можете выбрать традиционную панель задач (такую же как в mIRC) в секции настроек панели задач.
+22=Вы можете открыть соединения для многих серверов в одном окне KVIrc, просто выберите "Новый IRC контекст" в меню KVIrc.
+23=KVIrc имеет встроенный гибкий механизм идентификации на NickServ. Если вы заинтересованы в его использовании, но не можете настроить самостоятельно, советуем прочитать инструкции на сайте http://www.kvirc.ru в разделе статьи.
+24=Это последний совет. Вы можете добавлять свои собственные советы - наберите <b>/help tip.open</b>. Вы можете отослать свои советы (на любом языке) по адресу <b>[email protected]</b>.
diff --git a/src/modules/tmphighlight/Makefile.am b/src/modules/tmphighlight/Makefile.am
new file mode 100644
index 00000000..6e5a02ac
--- /dev/null
+++ b/src/modules/tmphighlight/Makefile.am
@@ -0,0 +1,22 @@
+###############################################################################
+# KVirc IRC client Makestr - 10.03.2002 Juanjo �lvarez <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+-I/usr/include/kde/arts\
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+#ARTS_LD_FLAGS = -DPIC -fPIC
+#ARTS_C_FLAGS = -L/usr/lib -ldl -lartsc -lpthread
+pluglib_LTLIBRARIES = libkvitmphighlight.la
+
+libkvitmphighlight_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvitmphighlight_la_SOURCES = libkvitmphighlight.cpp
+libkvitmphighlight_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+
+#noinst_HEADERS=
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/tmphighlight/libkvitmphighlight.cpp b/src/modules/tmphighlight/libkvitmphighlight.cpp
new file mode 100644
index 00000000..17f4ce17
--- /dev/null
+++ b/src/modules/tmphighlight/libkvitmphighlight.cpp
@@ -0,0 +1,174 @@
+// File : libkvitmphighlight.cpp
+// Creation date : Oct 10 01:06:09 CEST 2002 by Juanjo �varez
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Juanjo �varez ([email protected])
+// Copyright (C) 2002 Szymon Stefanek ([email protected])
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include "kvi_module.h"
+
+#include "kvi_locale.h"
+#include "kvi_channel.h"
+
+//-------------------------------------------------
+/*
+ @doc: tmphighlight.add
+ @type:
+ command
+ @title:
+ tmphighlight.add
+ @short:
+ Adds a user to the channel temporary highlight list
+ @syntax:
+ tmphighlight.add <nick:string>
+ @description:
+ This command adds a user to the channel temporary highlight list, so that user messages[br]
+ will be highlighted until you close the channel. This is useful when you are in a very crowded [br]
+ channel with lots of conversations running in parallel and you want to follow one of them.[br]
+ @seealso:
+ [fnc]$tmphighlight.remove[/fnc]
+ [fnc]$tmphighlight.ishighlighted[/fnc]
+*/
+//-------------------------------------------
+// tmphighlight.add
+//-------------------------------------------
+static bool tmphighlight_kvs_cmd_add(KviKvsModuleCommandCall * c)
+{
+
+ QString szNick;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("nick",KVS_PT_NONEMPTYSTRING,0,szNick)
+ KVSM_PARAMETERS_END(c)
+ if( ( !c->window()->console()) || c->window()->console()->isNotConnected() )return c->context()->errorNoIrcContext();
+ if(!c->window()->type() == KVI_WINDOW_TYPE_CHANNEL)
+ {
+ c->warning(__tr2qs("Current window is not a channel"));
+ return false;
+ }
+
+ ((KviChannel *)c->window())->addHighlightedUser(szNick);
+
+ return true;
+}
+//-------------------------------------------------
+/*
+ @doc: tmphighlight.remove
+ @type:
+ command
+ @title:
+ tmphighlight.remove
+ @short:
+ Remove a user from the channel temporary highlight list
+ @syntax:
+ tmphighlight.remove <nick:string>
+ @description:
+ This command remove a user from the channel temporary highlight list, so that user messages[br]
+ stop being highlighted.
+ @seealso:
+ [fnc]$tmphighlight.add[/fnc]
+ [fnc]$tmphighlight.ishighlighted[/fnc]
+*/
+//-------------------------------------------
+// tmphighlight.remove
+//-------------------------------------------
+
+static bool tmphighlight_kvs_cmd_remove(KviKvsModuleCommandCall * c)
+{
+ QString szNick;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("nick",KVS_PT_NONEMPTYSTRING,0,szNick)
+ KVSM_PARAMETERS_END(c)
+ if( ( !c->window()->console()) || c->window()->console()->isNotConnected() )return c->context()->errorNoIrcContext();
+ if(!c->window()->type() == KVI_WINDOW_TYPE_CHANNEL)
+ {
+ c->warning(__tr2qs("Current window is not a channel"));
+ return false;
+ }
+
+ ((KviChannel *)c->window())->removeHighlightedUser(szNick);
+ return true;
+}
+//-------------------------------------------------
+/*
+ @doc: tmphighlight.ishighlighted
+ @type:
+ function
+ @title:
+ $tmphighlight.ishighlighted
+ @short:
+ Returns 1 if the user is highlighted on this channel, 0 otherwise
+ @syntax:
+ <boolean> $tmphighlight.ishighlighted <nick:string>
+ @description:
+ This command returns 1 if the user is highlighted on this channel and on this session of 0 otherwise.
+ @seealso:
+ [fnc]$tmphighlight.add[/fnc]
+ [fnc]$tmphighlight.remove[/fnc]
+
+*/
+//-------------------------------------------
+// tmphighlight.ishighlighted
+//-------------------------------------------
+
+static bool tmphighlight_kvs_fnc_ishighlighted(KviKvsModuleFunctionCall * c)
+{
+ QString szNick;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("nick",KVS_PT_NONEMPTYSTRING,0,szNick)
+ KVSM_PARAMETERS_END(c)
+ if( ( !c->window()->console()) || c->window()->console()->isNotConnected() )return c->context()->errorNoIrcContext();
+ if(!c->window()->type() == KVI_WINDOW_TYPE_CHANNEL)
+ {
+ c->warning(__tr2qs("Current window is not a channel"));
+ return false;
+ }
+ c->returnValue()->setBoolean(((KviChannel *)c->window())->isHighlightedUser(szNick));
+ return true;
+}
+
+//-------------------------------------------------
+static bool tmphighlight_module_init(KviModule * m)
+{
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"add",tmphighlight_kvs_cmd_add);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"remove",tmphighlight_kvs_cmd_remove);
+ KVSM_REGISTER_FUNCTION(m,"isHighVisible",tmphighlight_kvs_fnc_ishighlighted);
+ KVSM_REGISTER_FUNCTION(m,"isHighLighted",tmphighlight_kvs_fnc_ishighlighted);
+ return true;
+}
+//-------------------------------------------------
+static bool tmphighlight_module_cleanup(KviModule *m)
+{
+ return true;
+}
+//-------------------------------------------------
+static bool tmphighlight_module_can_unload(KviModule *m)
+{
+ return true;
+}
+//-------------------------------------------------
+KVIRC_MODULE(
+ "TmpHighlight", // module name
+ "1.0.0", // module version
+ " (C) 2002 Juanjo Alvarez ([email protected])", // author & (C)
+ "Temporal Highlightining of channel users",
+ tmphighlight_module_init,
+ tmphighlight_module_can_unload,
+ 0,
+ tmphighlight_module_cleanup
+)
diff --git a/src/modules/toolbar/Makefile.am b/src/modules/toolbar/Makefile.am
new file mode 100644
index 00000000..e009e306
--- /dev/null
+++ b/src/modules/toolbar/Makefile.am
@@ -0,0 +1,18 @@
+###############################################################################
+# KVirc IRC client Maketoolbar - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvitoolbar.la
+
+libkvitoolbar_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvitoolbar_la_SOURCES = libkvitoolbar.cpp
+libkvitoolbar_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+# noinst_HEADERS=
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/toolbar/libkvitoolbar.cpp b/src/modules/toolbar/libkvitoolbar.cpp
new file mode 100644
index 00000000..a72949ca
--- /dev/null
+++ b/src/modules/toolbar/libkvitoolbar.cpp
@@ -0,0 +1,602 @@
+//=============================================================================//
+//
+// File : libkvitoolbar.cpp
+// Creation date : Wed 6 Nov 22:51:59 2002 GMT by Szymon Stefanek
+//
+// This toolbar is part of the KVirc irc client distribution
+// Copyright (C) 2002-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_module.h"
+
+#include "kvi_locale.h"
+
+#include "kvi_window.h"
+#include "kvi_app.h"
+#include "kvi_error.h"
+#include "kvi_cmdformatter.h"
+#include "kvi_customtoolbar.h"
+#include "kvi_customtoolbardescriptor.h"
+#include "kvi_customtoolbarmanager.h"
+#include "kvi_actionmanager.h"
+#include "kvi_kvs_useraction.h"
+
+/*
+ @doc: toolbar.create
+ @type:
+ command
+ @title:
+ toolbar.create
+ @keyterms:
+ Creating toolbars
+ @short:
+ Creates a toolbar
+ @syntax:
+ toolbar.create [-p] <id:string> <label:string> [icon_id:string]
+ @switches:
+ !sw: -p | --preserve
+ Preserve the existing toolbar, if any
+ @description:
+ Creates a toolbar with the specified <id> and with the visible <label> (caption).[br]
+ If a toolbar with the same <id> already exists then this command is equivalent to the
+ sequence of [cmd]toolbar.hide[/cmd], [cmd]toolbar.clear[/cmd] and [cmd]toolbar.setlabel[/cmd] unless the -p
+ switch is specified that causes the [cmd]toolbar.clear[/cmd] call to be skipped (contents preserved).[br]
+ This command doesn't show the toolbar (you need to use [cmd]toolbar.show[/cmd]).[br]
+ Toolbars are saved and preserved across KVIrc sessions thus you don't need to create them
+ on application startup: you only create them once.
+ If [icon_id] is specified then it is interpreted as an [doc:image_id]image identifier[/doc]
+ for the small (16x16) icon that will be put in the toolbar listing popup menu.
+ The toolbar will exist until [cmd]toolbar.destroy[/cmd] is called (you might want to add
+ an "uninstall" feature to your script).[br]
+ @seealso:
+ [fnc]$toolbar.exists[/fnc],
+ [cmd]toolbar.remove[/cmd],
+ [cmd]toolbar.show[/cmd],
+ [cmd]toolbar.destroy[/cmd]
+*/
+
+static bool toolbar_kvs_cmd_create(KviKvsModuleCommandCall * c)
+{
+ QString szId,szLabel,szIconId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("id",KVS_PT_NONEMPTYSTRING,0,szId)
+ KVSM_PARAMETER("label",KVS_PT_STRING,KVS_PF_OPTIONAL,szLabel)
+ KVSM_PARAMETER("icon_id",KVS_PT_NONEMPTYSTRING,KVS_PF_OPTIONAL,szIconId)
+ KVSM_PARAMETERS_END(c)
+
+/* if(!c->getParameterCode(1,szLabel))
+ {
+ c->error(__tr2qs("Internal error: call a head-shrinker"));
+ return false;
+ }
+*/
+ if(szLabel.isEmpty())szLabel = "$tr(Unnamed)";
+
+ KviCustomToolBarDescriptor * d = KviCustomToolBarManager::instance()->find(szId);
+ if(d)
+ {
+ if(!c->switches()->find('p',"preserve"))d->clear();
+ d->rename(szLabel);
+ } else {
+ d = KviCustomToolBarManager::instance()->create(szId,szLabel);
+ }
+
+ if(!szIconId.isEmpty())
+ d->setIconId(szIconId);
+
+ return true;
+}
+
+/*
+ @doc: toolbar.clear
+ @type:
+ command
+ @title:
+ toolbar.clear
+ @short:
+ Clears a toolbar
+ @syntax:
+ toolbar.clear [-q] <id:string>
+ @switches:
+ !sw: -q | --quiet
+ Run quietly
+ @description:
+ Clears the contents of the toolbar specified by <id>. If the
+ toolbar does not exist then a warning is printed unless the -q switch is used.[br]
+ @seealso:
+ [fnc]$toolbar.exists[/fnc],
+ [cmd]toolbar.remove[/cmd],
+ [cmd]toolbar.show[/cmd],
+ [cmd]toolbar.destroy[/cmd]
+*/
+
+static bool toolbar_kvs_cmd_clear(KviKvsModuleCommandCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("id",KVS_PT_NONEMPTYSTRING,0,szId)
+ KVSM_PARAMETERS_END(c)
+
+ KviCustomToolBarDescriptor * d = KviCustomToolBarManager::instance()->find(szId);
+ if(d)d->clear();
+ else {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("The specified toolbar doesn't exist"));
+ }
+
+ return true;
+}
+
+
+/*
+ @doc: toolbar.destroy
+ @type:
+ command
+ @title:
+ toolbar.destroy
+ @keyterms:
+ Destroying a toolbar
+ @short:
+ Destroys a toolbar
+ @syntax:
+ toolbar.destroy [-q] <id:string>
+ @switches:
+ !sw: -q | --quiet
+ Run quietly
+ @description:
+ Destroys the toolbar with the specified <id>.[br]
+ The toolbar definition is definitively destroyed with all the items contained.[br]
+ If the -q switch is specified then this command runs in quiet mode and
+ does not warn if the toolbar was not existing.
+ @seealso:
+ [fnc]$toolbar.exists[/fnc],
+ [cmd]toolbar.create[/cmd]
+*/
+
+
+static bool toolbar_kvs_cmd_destroy(KviKvsModuleCommandCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("id",KVS_PT_NONEMPTYSTRING,0,szId)
+ KVSM_PARAMETERS_END(c)
+
+ if(!KviCustomToolBarManager::instance()->destroyDescriptor(szId))
+ {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("The specified toolbar doesn't exist"));
+ }
+
+ return true;
+}
+
+
+/*
+ @doc: toolbar.show
+ @type:
+ command
+ @title:
+ toolbar.show
+ @short:
+ Shows a toolbar
+ @syntax:
+ toolbar.show [-q] <id:string>
+ @switches:
+ !sw: -q | --quiet
+ Run quietly
+ @description:
+ Shows the toolbar with the specified <id>.[br]
+ If -q is specified the command runs in quiet mode and does not complain if the
+ specified toolbar doesn't exist.[br]
+ Please note that you don't need to show the toolbar at application startup: KVIrc will
+ take care of this for you (if the user chooses to keep the toolbar visible).[br]
+ You should execute this command only if you create the toolbar after KVIrc has been
+ started.[br]
+ @seealso:
+ [fnc]$toolbar.exists[/fnc],
+ [cmd]toolbar.create[/cmd]
+*/
+
+static bool toolbar_kvs_cmd_show(KviKvsModuleCommandCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("id",KVS_PT_NONEMPTYSTRING,0,szId)
+ KVSM_PARAMETERS_END(c)
+
+ KviCustomToolBarDescriptor * d = KviCustomToolBarManager::instance()->find(szId);
+
+ if(!d)
+ {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("The specified toolbar doesn't exist"));
+ return true;
+ }
+
+ if(!d->toolBar())
+ d->createToolBar();
+
+ return true;
+}
+
+/*
+ @doc: toolbar.hide
+ @type:
+ command
+ @title:
+ toolbar.hide
+ @short:
+ Hides a toolbar
+ @syntax:
+ toolbar.hide [-q] <id:string>
+ @switches:
+ !sw: -q | --quiet
+ Run quietly
+ @description:
+ Hides the toolbar with the specified <id>.[br]
+ If -q is specified the command runs in quiet mode and does not complain if the
+ specified toolbar doesn't exist.[br]
+ Please note that this command doesn't destroy the toolbar definition: the toolbar
+ can be shown again by using [cmd]toolbar.show[/cmd].[br]
+ If you want to completely remove the toolbar definition use [cmd]toolbar.destroy[/cmd].[br]
+ @seealso:
+ [fnc]$toolbar.exists[/fnc],
+ [cmd]toolbar.create[/cmd],
+ [cmd]toolbar.destroy[/cmd]
+*/
+
+
+static bool toolbar_kvs_cmd_hide(KviKvsModuleCommandCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("id",KVS_PT_NONEMPTYSTRING,0,szId)
+ KVSM_PARAMETERS_END(c)
+
+ KviCustomToolBarDescriptor * d = KviCustomToolBarManager::instance()->find(szId);
+
+ if(!d)
+ {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("The specified toolbar doesn't exist"));
+ return true;
+ }
+
+ if(d->toolBar()) KviCustomToolBarManager::instance()->destroyDescriptor(d->id());
+
+ return true;
+}
+
+/*
+ @doc: toolbar.exists
+ @type:
+ function
+ @title:
+ $toolbar.exists
+ @short:
+ Checks if a toolbar exists
+ @syntax:
+ <boolean> $toolbar.exists(<id:string>)
+ @description:
+ Returns 1 if the toolbar with the specified <id> has been defined.[br]
+ Note that this doesn't mean that the toolbar is visible!
+ @seealso:
+ [cmd]toolbar.create[/cmd]
+*/
+
+
+static bool toolbar_kvs_fnc_exists(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("id",KVS_PT_NONEMPTYSTRING,0,szId)
+ KVSM_PARAMETERS_END(c)
+
+ c->returnValue()->setBoolean(KviCustomToolBarManager::instance()->find(szId) ? true : false);
+ return true;
+}
+
+/*
+ @doc: toolbar.isVisible
+ @type:
+ function
+ @title:
+ $toolbar.isVisible
+ @short:
+ Checks if a toolbar is visible
+ @syntax:
+ <boolean> $toolbar.isVisible(<id:string>)
+ @description:
+ Returns 1 if the toolbar with the specified <id> is actually visible and 0 otherwise.[br]
+ If the toolbar is not defined at all this function still returns 0.[br]
+ @seealso:
+ [cmd]toolbar.show[/cmd]
+*/
+
+static bool toolbar_kvs_fnc_isVisible(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("id",KVS_PT_NONEMPTYSTRING,0,szId)
+ KVSM_PARAMETERS_END(c)
+ KviCustomToolBarDescriptor * d = KviCustomToolBarManager::instance()->find(szId);
+ c->returnValue()->setBoolean(d ? (d->toolBar() ? true : false) : false);
+ return true;
+}
+
+/*
+ @doc: toolbar.list
+ @type:
+ function
+ @title:
+ $toolbar.list
+ @short:
+ Returns a list of defined toolbars
+ @syntax:
+ <array> $toolbar.list()
+ @description:
+ Returns a list of defined toolbar identifiers.[br]
+ You can use this function to loop thru all the toolbar definitions.[br]
+ @seealso:
+*/
+
+static bool toolbar_kvs_fnc_list(KviKvsModuleFunctionCall * c)
+{
+ KviKvsArray * a = new KviKvsArray();
+
+ KviPointerHashTableIterator<QString,KviCustomToolBarDescriptor> it(*(KviCustomToolBarManager::instance()->descriptors()));
+
+ kvs_uint_t id = 0;
+
+ while(KviCustomToolBarDescriptor * d = it.current())
+ {
+ a->set(id,new KviKvsVariant(d->id()));
+ id++;
+ ++it;
+ }
+
+ c->returnValue()->setArray(a);
+ return true;
+}
+
+
+
+/*
+ @doc: toolbar.remove
+ @type:
+ command
+ @title:
+ toolbar.remove
+ @keyterms:
+ Removing toolbar items
+ @short:
+ Removes a toolbar item
+ @syntax:
+ toolbar.remove [-q] [-i] <toolbarid:string> <action:variant>
+ @switches:
+ !sw: -q | --quiet
+ Run quietly
+ !sw: -i | --index
+ Treat <action> as the zero-based index of the action to be removed
+ instead of the action name.
+ @description:
+ Removes the specified <action> from the toolbar with the specified <toolbarid>.[br]
+ If no such item exists in the specified toolbar this command does nothing.[br]
+ If the <toolbar> parameter doesn't identify an existing toolbar then
+ a warning is printed unless the -q switch is used.[br]
+ If the -i switch is specified the <action> is interpreted as zero based
+ index of the action to be removed (instead of the action name).[br]
+ Please note that this is an expensive operation if the toolbar is visible (basically
+ the toolbar needs to be cleared and filled back again). It is a good idea to hide
+ the toolbar before removing items.[br]
+ @seealso:
+*/
+
+static bool toolbar_kvs_cmd_removeitem(KviKvsModuleCommandCall * c)
+{
+ QString szId;
+ KviKvsVariant * pvAction;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("id",KVS_PT_NONEMPTYSTRING,0,szId)
+ KVSM_PARAMETER("action",KVS_PT_VARIANT,0,pvAction)
+ KVSM_PARAMETERS_END(c)
+
+ KviCustomToolBarDescriptor * d = KviCustomToolBarManager::instance()->find(szId);
+
+ if(!pvAction)
+ {
+ if(!c->switches()->find('q',"quiet"))
+ c->error(__tr2qs("No action name/index specified")); // syntax error
+ return false;
+ }
+
+ if(!d)
+ {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("The specified toolbar doesn't exist"));
+ return true;
+ }
+
+ if(c->switches()->find('i',"index"))
+ {
+ kvs_int_t iAction;
+ if(!pvAction->asInteger(iAction))
+ {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("The action parameter didn't evaluate to an index"));
+ } else {
+ if(!d->removeAction(iAction))
+ {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("The toolbar does not contain the specified item"));
+ }
+ }
+ } else {
+ QString szAction;
+ pvAction->asString(szAction);
+ if(!d->removeAction(szAction))
+ {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("The toolbar does not contain the specified item"));
+ }
+ }
+
+ return true;
+}
+
+/*
+ @doc: toolbar.additem
+ @type:
+ command
+ @title:
+ toolbar.additem
+ @keyterms:
+ Adding toolbar items
+ @short:
+ Adds a new item to a toolbar
+ @syntax:
+ toolbar.additem [-q] <toolbarid:string> <action:string>
+ @switches:
+ !sw: -q | --quiet
+ Run quietly
+ @description:
+ Adds the specified <action> from the toolbar with the specified <toolbarid>.[br]
+ If no such action exists this command does nothing (beside printing a warning unless -q is used).[br]
+ If the <toolbar> parameter doesn't identify an existing toolbar then
+ a warning is printed unless the -q switch is used.[br]
+ @examples:
+ [example]
+ toolbar.create test $tr("My Toolbar")
+ toolbar.additem test connect
+ toolbar.additem test separator
+ toolbar.additem test optionsdialog
+ toolbar.show test
+ [/example]
+ @seealso:
+*/
+
+static bool toolbar_kvs_cmd_additem(KviKvsModuleCommandCall * c)
+{
+ QString szId;
+ QString szAction;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("id",KVS_PT_NONEMPTYSTRING,0,szId)
+ KVSM_PARAMETER("action",KVS_PT_NONEMPTYSTRING,0,szAction)
+ KVSM_PARAMETERS_END(c)
+
+ KviCustomToolBarDescriptor * d = KviCustomToolBarManager::instance()->find(szId);
+
+ if(!d)
+ {
+ if(!c->switches()->find('q',"quiet"))
+ c->warning(__tr2qs("The specified toolbar doesn't exist"));
+ return true;
+ }
+
+ if(!d->addAction(szAction))
+ {
+ if(!c->switches()->find('q',"quiet"))c->warning(__tr2qs("The action \"%Q\" doesn't exist"),&szAction);
+ }
+
+ return true;
+}
+
+
+/*
+ @doc: toolbar.items
+ @type:
+ function
+ @title:
+ $toolbar.items
+ @short:
+ Returns the list of items in a specified toolbar
+ @syntax:
+ <array> $toolbar.items(<toolbarid:string>)
+ @description:
+ Returns the array of items in the specified toolbar.
+ If the toolbar doesn't exist then an empty list is returned.
+ @seealso:
+*/
+
+static bool toolbar_kvs_fnc_items(KviKvsModuleFunctionCall * c)
+{
+ QString szId;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("id",KVS_PT_NONEMPTYSTRING,0,szId)
+ KVSM_PARAMETERS_END(c)
+
+ KviCustomToolBarDescriptor * d = KviCustomToolBarManager::instance()->find(szId);
+
+ if(!d)
+ {
+ c->warning(__tr2qs("The specified toolbar doesn't exist"));
+ return true;
+ }
+
+ KviKvsArray * a = new KviKvsArray();
+
+ KviPointerHashTableIterator<QString,KviCustomToolBarDescriptor> it(*(KviCustomToolBarManager::instance()->descriptors()));
+
+ kvs_uint_t id = 0;
+
+ for(QString * s = d->actions()->first();s;s = d->actions()->next())
+ {
+ a->set(id,new KviKvsVariant(*s));
+ id++;
+ ++it;
+ }
+
+ c->returnValue()->setArray(a);
+ return true;
+}
+
+
+
+static bool toolbar_module_init(KviModule * m)
+{
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"create",toolbar_kvs_cmd_create)
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"clear",toolbar_kvs_cmd_clear)
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"destroy",toolbar_kvs_cmd_destroy)
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"additem",toolbar_kvs_cmd_additem)
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"remove",toolbar_kvs_cmd_removeitem)
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"show",toolbar_kvs_cmd_show)
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"hide",toolbar_kvs_cmd_hide)
+
+ KVSM_REGISTER_FUNCTION(m,"exists",toolbar_kvs_fnc_exists)
+ KVSM_REGISTER_FUNCTION(m,"isVisible",toolbar_kvs_fnc_isVisible)
+ KVSM_REGISTER_FUNCTION(m,"list",toolbar_kvs_fnc_list)
+ KVSM_REGISTER_FUNCTION(m,"items",toolbar_kvs_fnc_items)
+
+ return true;
+}
+
+static bool toolbar_module_cleanup(KviModule *m)
+{
+ return true;
+}
+
+KVIRC_MODULE(
+ "toolbar", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "Interface to the scriptable toolbars",
+ toolbar_module_init,
+ 0,
+ 0,
+ toolbar_module_cleanup
+)
diff --git a/src/modules/toolbareditor/Makefile.am b/src/modules/toolbareditor/Makefile.am
new file mode 100644
index 00000000..a578e10c
--- /dev/null
+++ b/src/modules/toolbareditor/Makefile.am
@@ -0,0 +1,20 @@
+###############################################################################
+# KVirc IRC client Maketoolbareditor - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+
+pluglib_LTLIBRARIES = libkvitoolbareditor.la
+
+libkvitoolbareditor_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkvitoolbareditor_la_SOURCES = libkvitoolbareditor.cpp toolbareditor.cpp
+nodist_libkvitoolbareditor_la_SOURCES = moc_toolbareditor.cpp
+
+noinst_HEADERS = toolbareditor.h
+libkvitoolbareditor_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+moc_toolbareditor.cpp: toolbareditor.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/toolbareditor/libkvitoolbareditor.cpp b/src/modules/toolbareditor/libkvitoolbareditor.cpp
new file mode 100644
index 00000000..b4f9e258
--- /dev/null
+++ b/src/modules/toolbareditor/libkvitoolbareditor.cpp
@@ -0,0 +1,96 @@
+//=============================================================================
+//
+// File : libkvitoolbareditor.cpp
+// Creation date : Sun 10 Nov 2002 23:25:59 2002 GMT by Szymon Stefanek
+//
+// This toolbar is part of the KVirc irc client distribution
+// Copyright (C) 2002-2004 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "toolbareditor.h"
+#include "kvi_module.h"
+
+#include "kvi_locale.h"
+
+#include "kvi_frame.h"
+#include "kvi_actionmanager.h"
+#include "kvi_config.h"
+#include "kvi_app.h"
+
+QRect g_rectToolBarEditorDialogGeometry(0,0,0,0);
+
+/*
+ @doc: toolbareditor.open
+ @type:
+ command
+ @title:
+ toolbareditor.open
+ @short:
+ Shows the script toolbar editor
+ @syntax:
+ toolbareditor.open
+ @description:
+ Opens the script toolbar editor dialog.
+*/
+
+
+static bool toolbareditor_kvs_cmd_open(KviKvsModuleCommandCall * c)
+{
+ KviCustomizeToolBarsDialog::display();
+ return true;
+}
+
+static bool toolbareditor_module_init(KviModule * m)
+{
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"open",toolbareditor_kvs_cmd_open);
+ QString szBuf;
+ m->getDefaultConfigFileName(szBuf);
+ KviConfig cfg(szBuf,KviConfig::Read);
+ g_rectToolBarEditorDialogGeometry = cfg.readRectEntry("EditorGeometry",QRect(10,10,390,440));
+
+
+ return true;
+}
+
+static bool toolbareditor_module_can_unload(KviModule * m)
+{
+ return (!KviCustomizeToolBarsDialog::instance());
+}
+
+static bool toolbareditor_module_cleanup(KviModule *m)
+{
+ KviCustomizeToolBarsDialog::cleanup();
+
+ QString szBuf;
+ m->getDefaultConfigFileName(szBuf);
+ KviConfig cfg(szBuf,KviConfig::Write);
+ cfg.writeEntry("EditorGeometry",g_rectToolBarEditorDialogGeometry);
+
+ return true;
+}
+
+KVIRC_MODULE(
+ "ToolbarEditor", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "Editor for the scriptable toolbars",
+ toolbareditor_module_init,
+ toolbareditor_module_can_unload,
+ 0,
+ toolbareditor_module_cleanup
+)
diff --git a/src/modules/toolbareditor/toolbareditor.cpp b/src/modules/toolbareditor/toolbareditor.cpp
new file mode 100644
index 00000000..5b00f47a
--- /dev/null
+++ b/src/modules/toolbareditor/toolbareditor.cpp
@@ -0,0 +1,537 @@
+//=============================================================================//
+// File : toolbareditor.cpp
+// Created on Wed 01 Dec 2004 14:42:20 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "toolbareditor.h"
+#include "kvi_actiondrawer.h"
+#include "kvi_locale.h"
+#include "kvi_frame.h"
+#include "kvi_iconmanager.h"
+#include "kvi_actionmanager.h"
+#include "kvi_customtoolbar.h"
+#include "kvi_customtoolbarmanager.h"
+#include "kvi_customtoolbardescriptor.h"
+#include "kvi_imagedialog.h"
+#include "kvi_fileutils.h"
+#include "kvi_filedialog.h"
+#include "kvi_kvs_useraction.h"
+#include "kvi_draganddrop.h"
+
+#include <qpushbutton.h>
+#include <qlayout.h>
+#include <qapplication.h>
+#include <qtooltip.h>
+
+#include <qlineedit.h>
+#include <qlabel.h>
+#include <qmessagebox.h>
+#include <qframe.h>
+#include <qdir.h>
+#include <qtimer.h>
+#include <qevent.h>
+
+KviCustomizeToolBarsDialog * KviCustomizeToolBarsDialog::m_pInstance = 0;
+extern QRect g_rectToolBarEditorDialogGeometry;
+
+
+
+KviTrashcanLabel::KviTrashcanLabel(QWidget * p)
+: QLabel(p)
+{
+ setPixmap(*(g_pIconManager->getBigIcon("kvi_bigicon_trashcan.png")));
+ QToolTip::add(this,__tr2qs("Drop here the icons from the toolbars to remove them"));
+ setFrameStyle(QFrame::Sunken | QFrame::WinPanel);
+ setAcceptDrops(true);
+ setAlignment(Qt::AlignCenter);
+ setMinimumSize(40,40);
+ m_uFlashCount = 0;
+ m_pFlashTimer = 0;
+ m_clrOriginal = paletteBackgroundColor();
+ connect(KviActionManager::instance(),SIGNAL(removeActionsHintRequest()),this,SLOT(flash()));
+}
+
+KviTrashcanLabel::~KviTrashcanLabel()
+{
+ if(m_pFlashTimer)
+ {
+ m_pFlashTimer->stop();
+ delete m_pFlashTimer;
+ }
+}
+
+void KviTrashcanLabel::flash()
+{
+ m_uFlashCount = 0;
+ if(m_pFlashTimer)return;
+ m_pFlashTimer = new QTimer();
+ connect(m_pFlashTimer,SIGNAL(timeout()),this,SLOT(heartbeat()));
+ m_pFlashTimer->start(200);
+}
+
+void KviTrashcanLabel::heartbeat()
+{
+ m_uFlashCount++;
+ if(m_uFlashCount % 2)
+ setPaletteBackgroundColor(QColor(0,0,0));
+ else
+ setPaletteBackgroundColor(m_clrOriginal);
+ update();
+ if(m_uFlashCount == 8)
+ {
+ m_pFlashTimer->stop();
+ delete m_pFlashTimer;
+ m_pFlashTimer = 0;
+ }
+}
+
+void KviTrashcanLabel::dropEvent(QDropEvent * e)
+{
+ if(KviTextDrag::canDecode(e))
+ e->accept();
+}
+
+void KviTrashcanLabel::dragEnterEvent(QDragEnterEvent * e)
+{
+ QString s;
+ if(KviTextDrag::decode(e,s))
+ e->accept();
+}
+
+
+
+KviCustomToolBarPropertiesDialog::KviCustomToolBarPropertiesDialog(QWidget * p,const QString &szText,const QString &szId,const QString &szLabel,const QString &szIconId)
+: QDialog(p)
+{
+ m_szId = szId;
+ m_szOriginalId = szId;
+ m_szLabel = szLabel;
+
+ setCaption(__tr2qs("ToolBar Properties"));
+ setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TOOLBAR)));
+
+ QGridLayout * g = new QGridLayout(this,5,6,5,3);
+
+ QLabel * l = new QLabel(szText,this);
+ g->addMultiCellWidget(l,0,0,0,5);
+
+ l = new QLabel(__tr2qs("Label") + ":",this);
+ g->addWidget(l,1,0);
+
+ m_pLabelEdit = new QLineEdit(this);
+ g->addMultiCellWidget(m_pLabelEdit,1,1,1,5);
+ m_pLabelEdit->setText(szLabel);
+ connect(m_pLabelEdit,SIGNAL(textChanged(const QString &)),this,SLOT(labelTextChanged(const QString &)));
+
+ l = new QLabel(__tr2qs("Icon") + ":",this);
+ g->addWidget(l,2,0);
+
+ m_pIconEdit = new QLineEdit(this);
+ m_pIconEdit->setReadOnly(true);
+ g->addMultiCellWidget(m_pIconEdit,2,2,1,4);
+
+ m_pIconButton = new QPushButton(this);
+ g->addMultiCellWidget(m_pIconButton,2,2,5,5);
+ connect(m_pIconButton,SIGNAL(clicked()),this,SLOT(iconButtonClicked()));
+
+ iconSelected(szIconId);
+
+ m_pAdvanced = new QWidget(this);
+ QGridLayout * ag = new QGridLayout(m_pAdvanced,1,2,0,3);
+
+ l = new QLabel(__tr2qs("Id") + ":",m_pAdvanced);
+ l->setMinimumWidth(100);
+ ag->addWidget(l,0,0);
+
+ m_pIdEdit = new QLineEdit(m_pAdvanced);
+ ag->addWidget(m_pIdEdit,0,1);
+ ag->setRowStretch(0,1);
+
+ m_pIdEdit->setText(szId);
+
+ g->addMultiCellWidget(m_pAdvanced,3,3,0,5);
+ m_pAdvanced->hide();
+
+ m_pLabelEdit->setFocus();
+
+ QPushButton * pb = new QPushButton(__tr2qs("OK"),this);
+ connect(pb,SIGNAL(clicked()),this,SLOT(okClicked()));
+ pb->setMinimumWidth(80);
+ g->addMultiCellWidget(pb,4,4,4,5);
+
+ pb = new QPushButton(__tr2qs("Cancel"),this);
+ connect(pb,SIGNAL(clicked()),this,SLOT(reject()));
+ pb->setMinimumWidth(80);
+ g->addWidget(pb,4,3);
+
+ m_pAdvancedButton = new QPushButton(__tr2qs("Advanced..."),this);
+ connect(m_pAdvancedButton,SIGNAL(clicked()),this,SLOT(advancedClicked()));
+ m_pAdvancedButton->setMinimumWidth(100);
+ g->addMultiCellWidget(m_pAdvancedButton,4,4,0,1);
+
+ g->setRowStretch(0,1);
+ g->setColStretch(2,1);
+
+
+}
+
+KviCustomToolBarPropertiesDialog::~KviCustomToolBarPropertiesDialog()
+{
+}
+
+void KviCustomToolBarPropertiesDialog::iconSelected(const QString &szIconId)
+{
+ QPixmap * p = g_pIconManager->getImage(szIconId.utf8().data());
+ if(p)
+ {
+ m_pIconButton->setPixmap(*p);
+ m_szIconId = szIconId;
+ m_pIconEdit->setText(szIconId);
+ } else {
+ m_pIconButton->setText("...");
+ m_szIconId = "";
+ m_pIconEdit->setText("");
+ }
+}
+
+void KviCustomToolBarPropertiesDialog::iconButtonClicked()
+{
+ KviImageDialog * dlg = new KviImageDialog(this,__tr2qs("Please choose the icon for the ToolBar"));
+ if(dlg->exec() != QDialog::Accepted)
+ {
+ delete dlg;
+ return;
+ }
+ QString s = dlg->selectedImage();
+ delete dlg;
+ iconSelected(s);
+}
+
+
+void KviCustomToolBarPropertiesDialog::labelTextChanged(const QString &s)
+{
+ if(m_szOriginalId.isEmpty())
+ {
+ QString szId = KviCustomToolBarManager::instance()->idForNewToolBar(s);
+ m_pIdEdit->setText(szId);
+ }
+}
+
+
+void KviCustomToolBarPropertiesDialog::okClicked()
+{
+ if(m_szLabel.isEmpty())
+ {
+ QMessageBox::information(this,__tr2qs("Invalid ToolBar Label"),__tr2qs("The ToolBar Label can't be empty!"),__tr2qs("OK"));
+ return;
+ }
+
+ if(m_szId.isEmpty())
+ {
+ m_szId = KviCustomToolBarManager::instance()->idForNewToolBar(m_szLabel);
+ }
+
+ if(KviCustomToolBarManager::instance()->find(m_szId))
+ {
+ if(m_szId != m_szOriginalId)
+ {
+ if(QMessageBox::information(this,__tr2qs("Duplicate ToolBar Id"),
+ __tr2qs("The specified ToolBar Id already exists.<br>" \
+ "Would you like KVIrc to assign it automatically (so it doesn't "
+ "collide with any other toolbar) or you prefer to do it manually ?"),
+ __tr2qs("Manually"),__tr2qs("Automatically")) == 0)return;
+ m_szId = KviCustomToolBarManager::instance()->idForNewToolBar(m_szLabel);
+ }
+ }
+
+ m_szId = m_pIdEdit->text();
+ m_szLabel = m_pLabelEdit->text();
+ accept();
+}
+
+void KviCustomToolBarPropertiesDialog::advancedClicked()
+{
+ if(m_pAdvanced->isVisible())
+ {
+ m_pAdvanced->hide();
+ m_pAdvancedButton->setText(__tr2qs("Advanced..."));
+ } else {
+ m_pAdvanced->show();
+ m_pAdvancedButton->setText(__tr2qs("Hide Advanced"));
+ }
+
+}
+
+
+KviCustomizeToolBarsDialog::KviCustomizeToolBarsDialog(QWidget * p)
+: QDialog(p,"" /*,WType_TopLevel | WStyle_Customize | WStyle_Title | WStyle_StaysOnTop | WStyle_DialogBorder*/)
+{
+ setCaption(__tr2qs("Customize Toolbars"));
+ setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TOOLBAR)));
+
+ m_pInstance = this;
+
+ QGridLayout * g = new QGridLayout(this,8,2,4,5);
+ m_pDrawer = new KviActionDrawer(this);
+ g->addMultiCellWidget(m_pDrawer,0,6,0,0);
+
+ QPushButton * b = new QPushButton(__tr2qs("New ToolBar"),this);
+ connect(b,SIGNAL(clicked()),this,SLOT(newToolBar()));
+ g->addWidget(b,0,1);
+
+ m_pDeleteToolBarButton = new QPushButton(__tr2qs("Delete ToolBar"),this);
+ connect(m_pDeleteToolBarButton,SIGNAL(clicked()),this,SLOT(deleteToolBar()));
+ g->addWidget(m_pDeleteToolBarButton,1,1);
+
+ m_pRenameToolBarButton = new QPushButton(__tr2qs("Edit ToolBar"),this);
+ connect(m_pRenameToolBarButton,SIGNAL(clicked()),this,SLOT(renameToolBar()));
+ g->addWidget(m_pRenameToolBarButton,2,1);
+
+ QFrame * f = new QFrame(this);
+ f->setFrameStyle(QFrame::HLine | QFrame::Sunken);
+ g->addWidget(f,3,1);
+
+ m_pExportToolBarButton = new QPushButton(__tr2qs("Export ToolBar"),this);
+ connect(m_pExportToolBarButton,SIGNAL(clicked()),this,SLOT(exportToolBar()));
+ g->addWidget(m_pExportToolBarButton,4,1);
+
+ KviTrashcanLabel * t = new KviTrashcanLabel(this);
+ g->addWidget(t,6,1);
+
+ b = new QPushButton(__tr2qs("Close"),this);
+ connect(b,SIGNAL(clicked()),this,SLOT(closeClicked()));
+ g->addWidget(b,7,1);
+
+ g->setRowStretch(5,1);
+ g->setColStretch(0,1);
+
+ m_pDrawer->fill();
+
+ connect(KviActionManager::instance(),SIGNAL(currentToolBarChanged()),this,SLOT(currentToolBarChanged()));
+ KviActionManager::instance()->customizeToolBarsDialogCreated();
+
+ currentToolBarChanged();
+
+ if(g_rectToolBarEditorDialogGeometry.y() < 5)
+ {
+ g_rectToolBarEditorDialogGeometry.setY(5);
+ }
+ //setGeometry(KVI_OPTION_RECT(KviOption_rectRegisteredUsersDialogGeometry));
+ resize(g_rectToolBarEditorDialogGeometry.width(),
+ g_rectToolBarEditorDialogGeometry.height());
+ move(g_rectToolBarEditorDialogGeometry.x(),
+ g_rectToolBarEditorDialogGeometry.y());
+}
+
+KviCustomizeToolBarsDialog::~KviCustomizeToolBarsDialog()
+{
+ g_rectToolBarEditorDialogGeometry = QRect(pos().x(),pos().y(),size().width(),size().height());
+
+ KviActionManager::instance()->customizeToolBarsDialogDestroyed();
+ m_pInstance = 0;
+}
+
+void KviCustomizeToolBarsDialog::currentToolBarChanged()
+{
+ m_pDeleteToolBarButton->setEnabled(KviActionManager::instance()->currentToolBar());
+ m_pRenameToolBarButton->setEnabled(KviActionManager::instance()->currentToolBar());
+}
+
+void KviCustomizeToolBarsDialog::showEvent(QShowEvent * e)
+{
+// repaintContents();
+// QRect r = parentWidget() ? parentWidget()->rect() : QApplication::desktop()->rect();
+// int x = (r.width() - width()) / 2;
+// int y = (r.height() - height()) / 2;
+// move(x,y);
+}
+
+
+void KviCustomizeToolBarsDialog::deleteToolBar()
+{
+ KviCustomToolBar * t = KviActionManager::currentToolBar();
+ if(!t)return;
+ if(QMessageBox::question(this,
+ __tr2qs("Confirm ToolBar Deletion"),
+ __tr2qs("Do you really want to delete toolbar \"%1\" ?").arg(t->label()),
+ __tr2qs("No"),
+ __tr2qs("Yes")) == 0)return;
+ KviCustomToolBarManager::instance()->destroyDescriptor(t->descriptor()->id());
+}
+
+void KviCustomizeToolBarsDialog::exportToolBar()
+{
+ KviCustomToolBar * t = KviActionManager::currentToolBar();
+ if(!t)return;
+
+ QString szName = QDir::homeDirPath();
+ if(!szName.endsWith(QString(KVI_PATH_SEPARATOR)))szName += KVI_PATH_SEPARATOR;
+ szName += t->descriptor()->id();
+ szName += ".kvs";
+
+ QString szFile;
+
+ if(!KviFileDialog::askForSaveFileName(szFile,__tr2qs("Choose a Filename - KVIrc"),szName,"*.kvs",true,true,true))return;
+
+ QString szCode;
+
+ int ret = QMessageBox::question(this,
+ __tr2qs("ToolBar Export"),
+ __tr2qs("Do you want the associated actions to be exported with the toolbar ?"),
+ __tr2qs("Yes"),
+ __tr2qs("No"),
+ __tr2qs("Cancel"));
+
+ if(ret == 2)return;
+
+ bool bExportActions = ret == 0;
+
+ if(bExportActions)
+ {
+ KviPointerList<QString> * a = t->descriptor()->actions();
+ if(a)
+ {
+ for(QString * s = a->first();s;s = a->next())
+ {
+ KviAction * act = KviActionManager::instance()->getAction(*s);
+ if(act)
+ {
+ if(act->isKviUserActionNeverOverrideThis())
+ {
+ ((KviKvsUserAction *)act)->exportToKvs(szCode);
+ szCode += "\n\n";
+ }
+ }
+ }
+ }
+ }
+
+ szCode += "toolbar.create ";
+ szCode += t->descriptor()->id();
+ szCode += " ";
+ szCode += t->descriptor()->labelCode();
+ szCode += " ";
+ szCode += t->descriptor()->iconId();
+ szCode += "\n";
+
+ KviPointerList<QString> * aa = t->descriptor()->actions();
+ if(aa)
+ {
+ for(QString * ss = aa->first();ss;ss = aa->next())
+ {
+ szCode += "toolbar.additem ";
+ szCode += t->descriptor()->id();
+ szCode += " ";
+ szCode += *ss;
+ szCode += "\n";
+ }
+ }
+
+ szCode += "toolbar.show ";
+ szCode += t->descriptor()->id();
+ szCode += "\n";
+
+ if(!KviFileUtils::writeFile(szFile,szCode))
+ {
+ QMessageBox::warning(this,__tr2qs("Write Failed - KVIrc"),__tr2qs("Unable to write to the toolbar file."),__tr2qs("OK"));
+ }
+
+}
+
+void KviCustomizeToolBarsDialog::renameToolBar()
+{
+ KviCustomToolBar * t = KviActionManager::currentToolBar();
+ if(!t)return;
+
+ KviCustomToolBarPropertiesDialog * dlg = new KviCustomToolBarPropertiesDialog(this,
+ __tr2qs("Please specify the properties for the toolbar \"%1\"").arg(t->label()),
+ t->descriptor()->id(),
+ t->descriptor()->labelCode(),
+ t->descriptor()->iconId());
+
+ dlg->show();
+ if(dlg->exec() != QDialog::Accepted)
+ {
+ delete dlg;
+ return;
+ }
+
+ QString id = dlg->id();
+ QString label = dlg->label();
+ QString icon = dlg->iconId();
+ delete dlg;
+
+ if((id == t->descriptor()->id()) && (label == t->descriptor()->labelCode()) && (icon == t->descriptor()->iconId()))return;
+
+ KviCustomToolBarManager::instance()->renameDescriptor(t->descriptor()->id(),id,label);
+ t->descriptor()->setIconId(icon);
+}
+
+void KviCustomizeToolBarsDialog::newToolBar()
+{
+ KviCustomToolBarPropertiesDialog * dlg = new KviCustomToolBarPropertiesDialog(this,
+ __tr2qs("Please specify the properties for the new toolbar"),
+ KviCustomToolBarManager::instance()->idForNewToolBar(__tr2qs("My ToolBar")),
+ __tr2qs("My ToolBar"));
+
+ dlg->show();
+ if(dlg->exec() != QDialog::Accepted)
+ {
+ delete dlg;
+ return;
+ }
+
+ QString id = dlg->id();
+ QString label = dlg->label();
+ QString icon = dlg->iconId();
+ delete dlg;
+
+ KviCustomToolBarDescriptor * d = KviCustomToolBarManager::instance()->create(id,label);
+ d->setIconId(icon);
+ KviCustomToolBar * t = d->createToolBar();
+ KviActionManager::instance()->setCurrentToolBar(t);
+}
+
+void KviCustomizeToolBarsDialog::closeClicked()
+{
+ delete this;
+}
+
+void KviCustomizeToolBarsDialog::cleanup()
+{
+ if(!m_pInstance)return;
+ delete m_pInstance;
+ m_pInstance = 0;
+}
+
+void KviCustomizeToolBarsDialog::display()
+{
+ if(m_pInstance)return;
+ m_pInstance = new KviCustomizeToolBarsDialog(g_pFrame);
+ m_pInstance->show();
+}
+
+void KviCustomizeToolBarsDialog::closeEvent(QCloseEvent * e)
+{
+ e->ignore();
+ delete this;
+}
+
diff --git a/src/modules/toolbareditor/toolbareditor.h b/src/modules/toolbareditor/toolbareditor.h
new file mode 100644
index 00000000..2c44178c
--- /dev/null
+++ b/src/modules/toolbareditor/toolbareditor.h
@@ -0,0 +1,119 @@
+#ifndef _TOOLBAREDITOR_H_
+#define _TOOLBAREDITOR_H_
+//=============================================================================
+//
+// File : toolbareditor.h
+// Created on Wed 01 Dec 2004 14:42:20 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include <qwidget.h>
+#include <qlabel.h>
+#include <qdialog.h>
+#include <qcolor.h>
+
+class QPushButton;
+class KviActionDrawer;
+
+class KviCustomizeToolBarsDialog : public QDialog
+{
+ Q_OBJECT
+protected:
+ KviCustomizeToolBarsDialog(QWidget * p);
+public:
+ ~KviCustomizeToolBarsDialog();
+protected:
+ KviActionDrawer * m_pDrawer;
+ static KviCustomizeToolBarsDialog * m_pInstance;
+ QPushButton * m_pDeleteToolBarButton;
+ QPushButton * m_pRenameToolBarButton;
+ QPushButton * m_pExportToolBarButton;
+public:
+ static KviCustomizeToolBarsDialog * instance(){ return m_pInstance; };
+ static void display();
+ static void cleanup();
+protected:
+ virtual void showEvent(QShowEvent * e);
+ virtual void closeEvent(QCloseEvent *e);
+protected slots:
+ void closeClicked();
+ void newToolBar();
+ void deleteToolBar();
+ void renameToolBar();
+ void exportToolBar();
+ void currentToolBarChanged();
+};
+
+class QLineEdit;
+class QPushButton;
+
+class KviCustomToolBarPropertiesDialog : public QDialog
+{
+ Q_OBJECT
+public:
+ KviCustomToolBarPropertiesDialog(QWidget * p,const QString &szText,const QString &szId = QString::null,const QString &szLabel = QString::null,const QString &szIconId = QString::null);
+ ~KviCustomToolBarPropertiesDialog();
+protected:
+ QString m_szId;
+ QString m_szOriginalId;
+ QString m_szLabel;
+ QString m_szIconId;
+ QWidget * m_pAdvanced;
+ QLineEdit * m_pIdEdit;
+ QLineEdit * m_pLabelEdit;
+ QLineEdit * m_pIconEdit;
+ QPushButton * m_pIconButton;
+ QPushButton * m_pAdvancedButton;
+public:
+ const QString &id(){ return m_szId; };
+ const QString &label(){ return m_szLabel; };
+ const QString &iconId(){ return m_szIconId; };
+protected slots:
+ void okClicked();
+ void advancedClicked();
+ void iconButtonClicked();
+ void labelTextChanged(const QString &s);
+protected:
+ void iconSelected(const QString &szIconId);
+};
+
+class QTimer;
+
+class KviTrashcanLabel : public QLabel
+{
+ Q_OBJECT
+public:
+ KviTrashcanLabel(QWidget * p);
+ virtual ~KviTrashcanLabel();
+protected:
+ unsigned int m_uFlashCount;
+ QTimer * m_pFlashTimer;
+ QColor m_clrOriginal;
+protected:
+ virtual void dragEnterEvent(QDragEnterEvent * e);
+ virtual void dropEvent(QDropEvent * e);
+public slots:
+ void flash();
+protected slots:
+ void heartbeat();
+};
+
+#endif //!_TOOLBAREDITOR_H_
diff --git a/src/modules/torrent/Makefile.am b/src/modules/torrent/Makefile.am
new file mode 100644
index 00000000..ab0d80cb
--- /dev/null
+++ b/src/modules/torrent/Makefile.am
@@ -0,0 +1,30 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkvitorrent.la
+
+#%.moc: %.h
+# $(SS_QT_MOC) $< -o $@
+
+libkvitorrent_la_LDFLAGS = -avoid-version -module
+
+libkvitorrent_la_SOURCES = libkvitorrent.cpp \
+ tc_interface.cpp \
+ tc_ktorrentdcopinterface.cpp \
+ tc_statusbarapplet.cpp
+
+libkvitorrent_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS = tc_interface.h \
+ tc_ktorrentdcopinterface.h \
+ tc_statusbarapplet.h
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+tc_ktorrentdcopinterface.cpp: tc_ktorrentdcopinterface.moc
+tc_statusbarapplet.cpp: tc_statusbarapplet.moc
diff --git a/src/modules/torrent/libkvitorrent.cpp b/src/modules/torrent/libkvitorrent.cpp
new file mode 100644
index 00000000..9a929483
--- /dev/null
+++ b/src/modules/torrent/libkvitorrent.cpp
@@ -0,0 +1,904 @@
+//=============================================================================
+//
+// File : libkvitorrent.cpp
+// Creation date : Fri Jan 1 15:42:25 2007 GMT by Alexander Stillich
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_module.h"
+#include "kvi_options.h"
+#include "kvi_frame.h"
+
+#include "tc_interface.h"
+#include "tc_ktorrentdcopinterface.h"
+#include "tc_statusbarapplet.h"
+
+#include "kvi_locale.h"
+#include "kvi_out.h"
+
+
+static KviPointerList<KviTorrentInterfaceDescriptor> * g_pDescriptorList = 0;
+
+static KviTorrentInterface *auto_detect_torrent_client(KviWindow * pOut = 0)
+{
+ int iBest = 0;
+ KviTorrentInterface * pBest = 0;
+ KviTorrentInterfaceDescriptor * d;
+ KviTorrentInterfaceDescriptor * pDBest = 0;
+
+ for (d=g_pDescriptorList->first(); d!=0; d=g_pDescriptorList->next())
+ {
+ // instance gets deleted by descriptor later
+ KviTorrentInterface *i = d->instance();
+ if (i)
+ {
+ int iScore = i->detect();
+ if(iScore > iBest)
+ {
+ iBest = iScore;
+ pBest = i;
+ pDBest = d;
+ }
+
+ if(pOut)
+ {
+ pOut->output(KVI_OUT_TORRENT,
+ __tr2qs_ctx("Trying torrent client interface \"%Q\": score %d", "torrent"),
+ &d->name(),
+ iScore);
+ }
+ }
+ }
+
+/* if(iBest < 90)
+ {
+ if(pOut)
+ pOut->outputNoFmt(KVI_OUT_MULTIMEDIA,__tr2qs_ctx("Not sure about the results, trying a second, more agressive detection pass","mediaplayer"));
+ // no sure player found... try again with a destructive test
+ for(d = g_pDescriptorList->first();d;d = g_pDescriptorList->next())
+ {
+ KviMediaPlayerInterface * i = d->instance();
+ if(i)
+ {
+ int iScore = i->detect(true);
+ if(iScore > iBest)
+ {
+ iBest = iScore;
+ pBest = i;
+ pDBest = d;
+ }
+ if(pOut)
+ {
+ QString szOut;
+ QString szNam = d->name();
+ KviQString::sprintf(szOut,__tr2qs_ctx("Trying media player interface \"%Q\": score %d","mediaplayer"),&(szNam),iScore);
+ pOut->output(KVI_OUT_MULTIMEDIA,szOut);
+ }
+ }
+ }
+ }
+*/
+ if(pDBest)
+ {
+ KVI_OPTION_STRING(KviOption_stringPreferredTorrentClient) = pDBest->name();
+ if(pOut)
+ pOut->output(KVI_OUT_TORRENT,
+ __tr2qs_ctx("Choosing torrent client interface \"%Q\"", "torrent"),
+ &pDBest->name());
+
+ } else
+ {
+ if(pOut)
+ pOut->outputNoFmt(KVI_OUT_TORRENT,
+ __tr2qs_ctx("Seems that there is no usable torrent client on this machine", "torrent"));
+ }
+
+ return pBest;
+}
+
+#define TC_KVS_FAIL_ON_NO_INTERFACE \
+ if (!KviTorrentInterface::selected()) \
+ { \
+ c->warning(__tr2qs_ctx("No torrent client interface selected. Try /torrent.detect", "torrent")); \
+ return true; \
+ }
+
+#define TC_KVS_COMMAND(__name) static bool torrent_kvs_cmd_ ## __name (KviKvsModuleCommandCall * c)
+#define TC_KVS_FUNCTION(__name) static bool torrent_kvs_fnc_ ## __name (KviKvsModuleFunctionCall * c)
+
+#define TC_KVS_COMMAND_ERROR \
+ if (!c->hasSwitch('q',"quiet")) \
+ { \
+ c->warning(__tr2qs_ctx("The selected torrent client interface failed to execute the requested function", "torrent")); \
+ QString tmp = __tr2qs_ctx("Last interface error: ", "torrent"); \
+ tmp += KviTorrentInterface::selected()->lastError(); \
+ c->warning(tmp); \
+ } \
+
+#define TC_KVS_SIMPLE_COMMAND(__name, __ifacecommand) \
+ TC_KVS_COMMAND(__name) \
+ { \
+ KVSM_PARAMETERS_BEGIN(c) \
+ KVSM_PARAMETERS_END(c) \
+ \
+ TC_KVS_FAIL_ON_NO_INTERFACE \
+ \
+ if (!KviTorrentInterface::selected()->__ifacecommand()) \
+ { \
+ TC_KVS_COMMAND_ERROR \
+ } \
+ return true; \
+ }
+
+#define TC_KVS_INT_COMMAND(__name, __ifacecommand, __argname) \
+ TC_KVS_COMMAND(__name) \
+ { \
+ kvs_int_t arg; \
+ KVSM_PARAMETERS_BEGIN(c) \
+ KVSM_PARAMETER(__argname, KVS_PT_INT, 0, arg) \
+ KVSM_PARAMETERS_END(c) \
+ \
+ TC_KVS_FAIL_ON_NO_INTERFACE \
+ \
+ if (!KviTorrentInterface::selected()->__ifacecommand(arg)) \
+ { \
+ TC_KVS_COMMAND_ERROR \
+ } \
+ return true; \
+ }
+
+#define TC_KVS_INT_INT_STRING_COMMAND(__name, __ifacecommand, __argname1, __argname2, __argname3) \
+ TC_KVS_COMMAND(__name) \
+ { \
+ kvs_int_t arg1; \
+ kvs_int_t arg2; \
+ QString arg3; \
+ KVSM_PARAMETERS_BEGIN(c) \
+ KVSM_PARAMETER(__argname1, KVS_PT_INT, 0, arg1) \
+ KVSM_PARAMETER(__argname2, KVS_PT_INT, 0, arg2) \
+ KVSM_PARAMETER(__argname3, KVS_PT_STRING, 0, arg3) \
+ KVSM_PARAMETERS_END(c) \
+ \
+ TC_KVS_FAIL_ON_NO_INTERFACE \
+ \
+ if (!KviTorrentInterface::selected()->__ifacecommand(arg1, arg2, arg3)) \
+ { \
+ TC_KVS_COMMAND_ERROR \
+ } \
+ return true; \
+ }
+
+// TODO: error handling for functions
+
+#define TC_KVS_STRINGRET_FUNCTION(__name, __ifacecommand) \
+ TC_KVS_FUNCTION(__name) \
+ { \
+ TC_KVS_FAIL_ON_NO_INTERFACE \
+ QString szRet = KviTorrentInterface::selected()->__ifacecommand(); \
+ c->returnValue()->setString(szRet); \
+ return true; \
+ }
+
+#define TC_KVS_INTRET_FUNCTION(__name, __ifacecommand) \
+ TC_KVS_FUNCTION(__name) \
+ { \
+ TC_KVS_FAIL_ON_NO_INTERFACE \
+ kvs_int_t ret = KviTorrentInterface::selected()->__ifacecommand(); \
+ c->returnValue()->setInteger(ret); \
+ return true; \
+ }
+
+#define TC_KVS_FLOATRET_FUNCTION(__name, __ifacecommand) \
+ TC_KVS_FUNCTION(__name) \
+ { \
+ TC_KVS_FAIL_ON_NO_INTERFACE \
+ kvs_real_t ret = KviTorrentInterface::selected()->__ifacecommand(); \
+ c->returnValue()->setReal(ret); \
+ return true; \
+ }
+
+#define TC_KVS_INTRET_INT_FUNCTION(__name, __ifacecommand, __argname) \
+ TC_KVS_FUNCTION(__name) \
+ { \
+ kvs_int_t arg; \
+ KVSM_PARAMETERS_BEGIN(c) \
+ KVSM_PARAMETER(__argname, KVS_PT_INT, 0, arg) \
+ KVSM_PARAMETERS_END(c) \
+ TC_KVS_FAIL_ON_NO_INTERFACE \
+ kvs_int_t ret = KviTorrentInterface::selected()->__ifacecommand(arg); \
+ c->returnValue()->setInteger(ret); \
+ return true; \
+ }
+
+#define TC_KVS_STRINGRET_INT_FUNCTION(__name, __ifacecommand, __argname) \
+ TC_KVS_FUNCTION(__name) \
+ { \
+ kvs_int_t arg; \
+ KVSM_PARAMETERS_BEGIN(c) \
+ KVSM_PARAMETER(__argname, KVS_PT_INT, 0, arg) \
+ KVSM_PARAMETERS_END(c) \
+ TC_KVS_FAIL_ON_NO_INTERFACE \
+ QString szRet = KviTorrentInterface::selected()->__ifacecommand(arg); \
+ c->returnValue()->setString(szRet); \
+ return true; \
+ }
+
+#define TC_KVS_STRINGRET_INT_INT_FUNCTION(__name, __ifacecommand, __argname1, __argname2) \
+ TC_KVS_FUNCTION(__name) \
+ { \
+ kvs_int_t arg1; \
+ kvs_int_t arg2; \
+ KVSM_PARAMETERS_BEGIN(c) \
+ KVSM_PARAMETER(__argname1, KVS_PT_INT, 0, arg1) \
+ KVSM_PARAMETER(__argname2, KVS_PT_INT, 0, arg2) \
+ KVSM_PARAMETERS_END(c) \
+ TC_KVS_FAIL_ON_NO_INTERFACE \
+ QString szRet = KviTorrentInterface::selected()->__ifacecommand(arg1, arg2); \
+ c->returnValue()->setString(szRet); \
+ return true; \
+ }
+
+#define TC_KVS_INTRET_INT_INT_FUNCTION(__name, __ifacecommand, __argname1, __argname2) \
+ TC_KVS_FUNCTION(__name) \
+ { \
+ kvs_int_t arg1; \
+ kvs_int_t arg2; \
+ KVSM_PARAMETERS_BEGIN(c) \
+ KVSM_PARAMETER(__argname1, KVS_PT_INT, 0, arg1) \
+ KVSM_PARAMETER(__argname2, KVS_PT_INT, 0, arg2) \
+ KVSM_PARAMETERS_END(c) \
+ TC_KVS_FAIL_ON_NO_INTERFACE \
+ kvs_int_t ret = KviTorrentInterface::selected()->__ifacecommand(arg1, arg2); \
+ c->returnValue()->setInteger(ret); \
+ return true; \
+ }
+
+TC_KVS_COMMAND(detect)
+{
+ KviTorrentInterface::select(auto_detect_torrent_client(c->hasSwitch('q',"quiet") ? 0 : c->window()));
+ return true;
+}
+
+/*
+ @doc: torrent.maxUploadSpeed
+ @type:
+ function
+ @title:
+ $torrent.maxUploadSpeed
+ @short:
+ Returns maximum upload speed set in client.
+ @syntax:
+ $torrent.maxUploadSpeed()
+ @description:
+ Returns maximum upload speed set in client.
+ Take a look at the [module:torrent]torrent client documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:torrent]torrent client documentation[/module],
+*/
+TC_KVS_INTRET_FUNCTION(maxUploadSpeed, maxUploadSpeed)
+
+
+/*
+ @doc: torrent.maxDownloadSpeed
+ @type:
+ function
+ @title:
+ $torrent.maxDownloadSpeed
+ @short:
+ Returns maximum download speed set in client.
+ @syntax:
+ $torrent.maxDownloadSpeed()
+ @description:
+ Returns maximum download speed set in client.
+ Take a look at the [module:torrent]torrent client documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:torrent]torrent client documentation[/module],
+*/
+TC_KVS_INTRET_FUNCTION(maxDownloadSpeed, maxDownloadSpeed)
+
+/*
+ @doc: torrent.setMaxUploadSpeed
+ @type:
+ command
+ @title:
+ torrent.setMaxUploadSpeed
+ @short:
+ Sets maximum upload speed
+ @syntax:
+ torrent.setMaxUploadSpeed <kbytes_per_sec>
+ @description:
+ Sets maximum upload speed
+ Take a look at the [module:torrent]torrent client documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:torrent]torrent client documentation[/module],
+*/
+TC_KVS_INT_COMMAND(setMaxUploadSpeed, setMaxUploadSpeed, "kbytes_per_sec")
+
+/*
+ @doc: torrent.setMaxDownloadSpeed
+ @type:
+ command
+ @title:
+ torrent.setMaxDownloadSpeed
+ @short:
+ Sets maximum download speed
+ @syntax:
+ torrent.setMaxDownloadSpeed <kbytes_per_sec>
+ @description:
+ Sets maximum download speed
+ Take a look at the [module:torrent]torrent client documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:torrent]torrent client documentation[/module],
+*/
+TC_KVS_INT_COMMAND(setMaxDownloadSpeed, setMaxDownloadSpeed, "kbytes_per_sec")
+
+/*
+ @doc: torrent.speedUp
+ @type:
+ function
+ @title:
+ $torrent.speedUp
+ @short:
+ Returns current total upload speed
+ @syntax:
+ $torrent.speedUp()
+ @description:
+ Returns current total upload speed
+ Take a look at the [module:torrent]torrent client documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:torrent]torrent client documentation[/module],
+*/
+TC_KVS_FLOATRET_FUNCTION(speedUp, speedUp)
+
+/*
+ @doc: torrent.speedDown
+ @type:
+ function
+ @title:
+ $torrent.speedDown
+ @short:
+ Returns current total download speed
+ @syntax:
+ $torrent.speedDown()
+ @description:
+ Returns current total download speed
+ Take a look at the [module:torrent]torrent client documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:torrent]torrent client documentation[/module],
+*/
+TC_KVS_FLOATRET_FUNCTION(speedDown, speedDown)
+
+/*
+ @doc: torrent.trafficUp
+ @type:
+ function
+ @title:
+ $torrent.trafficUp
+ @short:
+ Returns the total number of bytes uploaded
+ @syntax:
+ $torrent.trafficUp()
+ @description:
+ Returns the total number of bytes uploaded
+ Take a look at the [module:torrent]torrent client documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:torrent]torrent client documentation[/module],
+*/
+TC_KVS_FLOATRET_FUNCTION(trafficUp, trafficUp)
+
+/*
+ @doc: torrent.trafficDown
+ @type:
+ function
+ @title:
+ $torrent.trafficDown
+ @short:
+ Returns the total number of bytes download
+ @syntax:
+ $torrent.trafficDown()
+ @description:
+ Returns the total number of bytes download
+ Take a look at the [module:torrent]torrent client documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:torrent]torrent client documentation[/module],
+*/
+TC_KVS_FLOATRET_FUNCTION(trafficDown, trafficDown)
+
+/*
+ @doc: torrent.count
+ @type:
+ function
+ @title:
+ $torrent.count
+ @short:
+ Returns number of torrents in client
+ @syntax:
+ $torrent.name()
+ @description:
+ Returns number of torrents in client
+ Take a look at the [module:torrent]torrent client documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:torrent]torrent client documentation[/module],
+*/
+TC_KVS_INTRET_FUNCTION(count, count)
+
+/*
+ @doc: torrent.name
+ @type:
+ function
+ @title:
+ $torrent.name
+ @short:
+ Returns torrent name as displayed in client
+ @syntax:
+ $torrent.name(torrent_number)
+ @description:
+ Returns torrent name as displayed in client
+ Take a look at the [module:torrent]torrent client documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:torrent]torrent client documentation[/module],
+*/
+TC_KVS_STRINGRET_INT_FUNCTION(name, name, "torrent_number")
+
+/*
+ @doc: torrent.start
+ @type:
+ command
+ @title:
+ torrent.start
+ @short:
+ Starts downloading of torrent <torrent_number>
+ @syntax:
+ torrent.start <torrent_number>
+ @description:
+ Starts downloading of torrent <torrent_number>
+ Take a look at the [module:torrent]torrent client documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:torrent]torrent client documentation[/module],
+ [cmd]torrent.stop[/cmd], [cmd]torrent.stopAll[/cmd],
+ [cmd]torrent.startAll[/cmd]
+*/
+TC_KVS_INT_COMMAND(start, start, "torrent_number")
+
+/*
+ @doc: torrent.stop
+ @type:
+ command
+ @title:
+ torrent.stop
+ @short:
+ Stops downloading of torrent <torrent_number>
+ @syntax:
+ torrent.stop <torrent_number>
+ @description:
+ Stops downloading of torrent <torrent_number>
+ Take a look at the [module:torrent]torrent client documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:torrent]torrent client documentation[/module],
+ [cmd]torrent.stopAll[/cmd], [cmd]torrent.startAll[/cmd],
+ [cmd]torrent.start[/cmd]
+*/
+TC_KVS_INT_COMMAND(stop, stop, "torrent_number")
+
+/*
+ @doc: torrent.announce
+ @type:
+ command
+ @title:
+ torrent.announce
+ @short:
+ Manually announces torrent to tracker
+ @syntax:
+ torrent.announce <torrent_number>
+ @description:
+ Manually announces torrent to tracker
+ Take a look at the [module:torrent]torrent client documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:torrent]torrent client documentation[/module],
+*/
+TC_KVS_INT_COMMAND(announce, announce, "torrent_number")
+
+/*
+ @doc: torrent.fileCount
+ @type:
+ function
+ @title:
+ $torrent.fileCount
+ @short:
+ Returns the number of files in a torrent.
+ @syntax:
+ $torrent.fileCount <torrent_number>
+ @description:
+ Returns the number of files in a torrent.
+ Take a look at the [module:torrent]torrent client documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:torrent]torrent client documentation[/module],
+*/
+TC_KVS_INTRET_INT_FUNCTION(fileCount, fileCount, "torrent_number")
+
+/*
+ @doc: torrent.fileName
+ @type:
+ function
+ @title:
+ $torrent.fileName
+ @short:
+ Returns the name of a file in a torrent.
+ @syntax:
+ $torrent.fileName <torrent_number> <file_number>
+ @description:
+ Returns the name of a file in a torrent.
+ Take a look at the [module:torrent]torrent client documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:torrent]torrent client documentation[/module],
+*/
+TC_KVS_STRINGRET_INT_INT_FUNCTION(fileName, fileName, "torrent_number", "file_number")
+
+/*
+ @doc: torrent.filePriority
+ @type:
+ function
+ @title:
+ $torrent.filePriority
+ @short:
+ Returns the priority of a file in a torrent.
+ @syntax:
+ $torrent.filePriority <torrent_number> <file_number>
+ @description:
+ Returns the priority of a file in a torrent.
+ Take a look at the [module:torrent]torrent client documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:torrent]torrent client documentation[/module],
+*/
+TC_KVS_STRINGRET_INT_INT_FUNCTION(filePriority, filePriority, "torrent_number", "file_number")
+
+/*
+ @doc: torrent.setFilePriority
+ @type:
+ command
+ @title:
+ torrent.setFilePriority
+ @short:
+ Sets the priority of a file in a torrent.
+ @syntax:
+ torrent.setFilePriority <torrent_number> <file_number>
+ @description:
+ Sets the priority of a file in a torrent.
+ Take a look at the [module:torrent]torrent client documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:torrent]torrent client documentation[/module],
+*/
+TC_KVS_INT_INT_STRING_COMMAND(setFilePriority, setFilePriority, "torrent_number", "file_number", "priority")
+
+/*
+ @doc: torrent.startAll
+ @type:
+ command
+ @title:
+ torrent.startAll
+ @short:
+ Starts downloading of all torrents
+ @syntax:
+ torrent.startAll
+ @description:
+ Starts downloading of all torrents
+ Take a look at the [module:torrent]torrent client documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:torrent]torrent client documentation[/module],
+ [cmd]torrent.stopAll[/cmd], [cmd]torrent.start[/cmd],
+ [cmd]torrent.stop[/cmd]
+*/
+
+TC_KVS_SIMPLE_COMMAND(startAll, startAll)
+
+/*
+ @doc: torrent.stopAll
+ @type:
+ command
+ @title:
+ torrent.stopAll
+ @short:
+ Stops downloading of all torrents
+ @syntax:
+ torrent.stopAll
+ @description:
+ Stops downloading of all torrents
+ Take a look at the [module:torrent]torrent client documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:torrent]torrent client documentation[/module],
+ [cmd]torrent.startAll[/cmd], [cmd]torrent.start[/cmd],
+ [cmd]torrent.stop[/cmd]
+*/
+
+TC_KVS_SIMPLE_COMMAND(stopAll, stopAll)
+
+
+/*
+ @doc: torrent.list
+ @type:
+ function
+ @title:
+ torrent.list
+ @short:
+ Returns a list of all torrents
+ @syntax:
+ $torrent.list()
+ @description:
+ Returns a list of all torrents
+ Take a look at the [module:torrent]torrent client documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:torrent]torrent client documentation[/module],
+ [cmd]torrent.startAll[/cmd], [cmd]torrent.start[/cmd],
+ [cmd]torrent.stop[/cmd]
+*/
+
+//MP_KVS_SIMPLE_COMMAND(list,list)
+
+/*
+ @doc: torrent.setClient
+ @type:
+ command
+ @title:
+ torrent.setClient
+ @short:
+ Sets the torrent client interface
+ @syntax:
+ torrent.setClient <client_name>
+ @description:
+ Sets the torrent client interface to be used by the
+ torrent interface module. <interface_name> must be one
+ of the client names returned by [cmd]torrent.clientList[/cmd]
+ Take a look at the [module:torrent]torrent client documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:torrent]torrent client documentation[/module],
+ [cmd]torrent.detect[/cmd], [fnc]$torrent.client[/fnc]
+*/
+
+TC_KVS_COMMAND(setClient)
+{
+ QString client;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("client", KVS_PT_STRING, 0, client)
+ KVSM_PARAMETERS_END(c)
+
+ for (KviTorrentInterfaceDescriptor *d = g_pDescriptorList->first(); d; d=g_pDescriptorList->next())
+ {
+ if (d->name() == client)
+ {
+ KviTorrentInterface::select(d->instance());
+ KVI_OPTION_STRING(KviOption_stringPreferredTorrentClient) = client;
+
+ if (!c->hasSwitch('q',"quiet"))
+ c->window()->output(KVI_OUT_TORRENT,
+ __tr2qs_ctx("Using client interface \"%Q\".", "torrent"),
+ &client);
+ return true;
+ }
+ }
+
+ if (!c->hasSwitch('q',"quiet"))
+ c->window()->output(KVI_OUT_TORRENT,
+ __tr2qs_ctx("Invalid client interface \"%Q\"!", "torrent"),
+ &client);
+
+ return false;
+}
+
+
+/*
+ @doc: torrent.client
+ @type:
+ function
+ @title:
+ $torrent.client
+ @short:
+ Returns the currently set torrent client interface
+ @syntax:
+ $torrent.client()
+ @description:
+ Returns the currently set torrent client interface.
+ Take a look at the [module:torrent]torrent client documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:torrent]torrent client documentation[/module],
+ [cmd]torrent.detect[/cmd], [cmd]torrent.setClient[/cmd]
+*/
+TC_KVS_FUNCTION(client)
+{
+ c->returnValue()->setString(KVI_OPTION_STRING(KviOption_stringPreferredTorrentClient));
+ return true;
+}
+
+/*
+ @doc: torrent.clientList
+ @type:
+ function
+ @title:
+ $torrent.clientList
+ @short:
+ Returns a list of all supported clients.
+ @syntax:
+ $torrent.clientList()
+ @description:
+ Returns a list of all supported clients.
+ Take a look at the [module:torrent]torrent client documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:torrent]torrent client documentation[/module],
+ [cmd]torrent.detect[/cmd], [cmd]torrent.setClient[/cmd],
+ [cmd]torrent.client[/cmd]
+*/
+TC_KVS_FUNCTION(clientList)
+{
+ KviKvsArray *pArray = new KviKvsArray();
+ int id=0;
+
+ for (KviTorrentInterfaceDescriptor *d=g_pDescriptorList->first(); d; d=g_pDescriptorList->next())
+ pArray->set(id++, new KviKvsVariant(d->name()));
+
+ c->returnValue()->setArray(pArray);
+ return true;
+}
+
+/*
+ @doc: torrent.state
+ @type:
+ function
+ @title:
+ $torrent.state
+ @short:
+ Returns state of torrent (Stopped, Stalled, Seeding, Downloading)
+ @syntax:
+ $torrent.state <torrent_number>
+ @description:
+ Returns state of torrent (Stopped, Stalled, Seeding, Downloading)
+ Take a look at the [module:torrent]torrent client documentation[/module]
+ for more details about how it works.[br]
+ @seealso:
+ [module:torrent]torrent client documentation[/module],
+*/
+TC_KVS_STRINGRET_INT_FUNCTION(state, state, "torrent_number")
+
+static bool torrent_module_init(KviModule *m)
+{
+ #define TC_KVS_REGCMD(__name,__stringname) KVSM_REGISTER_SIMPLE_COMMAND(m, __stringname, torrent_kvs_cmd_ ## __name)
+ #define TC_KVS_REGFNC(__name,__stringname) KVSM_REGISTER_FUNCTION(m, __stringname, torrent_kvs_fnc_ ## __name)
+
+ TC_KVS_REGCMD(detect, "detect");
+ TC_KVS_REGCMD(setClient, "setClient");
+ TC_KVS_REGCMD(start, "start")
+ TC_KVS_REGCMD(stop, "stop")
+ TC_KVS_REGCMD(announce, "announce")
+ TC_KVS_REGCMD(startAll, "startAll")
+ TC_KVS_REGCMD(stopAll, "stopAll")
+ TC_KVS_REGCMD(setMaxUploadSpeed, "setMaxUploadSpeed")
+ TC_KVS_REGCMD(setMaxDownloadSpeed, "setMaxDownloadSpeed")
+ TC_KVS_REGCMD(setFilePriority, "setFilePriority")
+ TC_KVS_REGFNC(client, "client")
+ TC_KVS_REGFNC(clientList, "clientList")
+ TC_KVS_REGFNC(maxUploadSpeed, "maxUploadSpeed")
+ TC_KVS_REGFNC(maxDownloadSpeed, "maxDownloadSpeed")
+ TC_KVS_REGFNC(speedUp, "speedUp")
+ TC_KVS_REGFNC(speedDown, "speedDown")
+ TC_KVS_REGFNC(trafficUp, "trafficUp")
+ TC_KVS_REGFNC(trafficDown, "trafficDown")
+ TC_KVS_REGFNC(count, "count")
+ TC_KVS_REGFNC(name, "name")
+ TC_KVS_REGFNC(state, "state")
+ TC_KVS_REGFNC(fileCount, "fileCount")
+ TC_KVS_REGFNC(fileName, "fileName")
+ TC_KVS_REGFNC(filePriority, "filePriority")
+
+ g_pDescriptorList = new KviPointerList<KviTorrentInterfaceDescriptor>;
+ g_pDescriptorList->setAutoDelete(true);
+
+#ifdef COMPILE_KDE_SUPPORT
+ g_pDescriptorList->append(new KviKTorrentDCOPInterfaceDescriptor);
+#endif // COMPILE_KDE_SUPPORT
+
+ KviTorrentInterface::select(0);
+
+ if (g_pFrame->mainStatusBar())
+ KviTorrentStatusBarApplet::selfRegister(g_pFrame->mainStatusBar());
+
+
+ if(KVI_OPTION_STRING(KviOption_stringPreferredMediaPlayer) == "auto")
+ {
+ KviTorrentInterface::select(auto_detect_torrent_client());
+
+ } else
+ {
+ for (KviTorrentInterfaceDescriptor *d=g_pDescriptorList->first(); d; d=g_pDescriptorList->next())
+ {
+ if (d->name() == KVI_OPTION_STRING(KviOption_stringPreferredTorrentClient))
+ KviTorrentInterface::select(d->instance());
+ }
+ }
+
+ return true;
+}
+
+static bool torrent_module_cleanup( KviModule * m )
+{
+ delete g_pDescriptorList;
+ return true;
+}
+
+static bool torrent_module_can_unload( KviModule * m )
+{
+ return true;
+}
+
+static bool torrent_module_ctrl(KviModule * m,const char * operation,void * param)
+{
+ debug("torrent module ctrl");
+/* if(kvi_strEqualCI(operation,"getAvailableMediaPlayers"))
+ {
+ // we expect param to be a pointer to QStringList
+ QStringList * l = (QStringList *)param;
+ for(KviMediaPlayerInterfaceDescriptor * d = g_pDescriptorList->first();d;d = g_pDescriptorList->next())
+ {
+ l->append(d->name());
+ }
+ return true;
+ }
+ if(kvi_strEqualCI(operation,"detectMediaPlayer"))
+ {
+ auto_detect_player(0);
+ return true;
+ }
+*/
+ return false;
+}
+
+
+
+KVIRC_MODULE(
+ "torrent",
+ "1.0.0",
+ "Copyright (C) 2007 Alexander Stillich (torque at pltn dot org)",
+ "Interface to various torrent clients",
+ torrent_module_init,
+ torrent_module_can_unload,
+ torrent_module_ctrl,
+ torrent_module_cleanup
+)
diff --git a/src/modules/torrent/tc_interface.cpp b/src/modules/torrent/tc_interface.cpp
new file mode 100644
index 00000000..9474a254
--- /dev/null
+++ b/src/modules/torrent/tc_interface.cpp
@@ -0,0 +1,31 @@
+//=============================================================================
+//
+// Common interface for BitTorrent clients.
+//
+// File : tc_interface.cpp
+// Creation date : Fri Jan 1 15:42:25 2007 GMT by Alexander Stillich
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2005 Szymon Stefanek (pragma at kvirc dot net)
+// Copyright (C) 2007 Alexander Stillich (torque at pltn dot org)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "tc_interface.h"
+#include "kvi_locale.h"
+
+KviTorrentInterface *KviTorrentInterface::m_selected = 0;
diff --git a/src/modules/torrent/tc_interface.h b/src/modules/torrent/tc_interface.h
new file mode 100644
index 00000000..797ea428
--- /dev/null
+++ b/src/modules/torrent/tc_interface.h
@@ -0,0 +1,164 @@
+#ifndef _TC_INTERFACE_H_
+#define _TC_INTERFACE_H_
+
+//=============================================================================
+//
+// Common interface for BitTorrent clients.
+//
+// File : tc_interface.h
+// Creation date : Fri Jan 1 15:42:25 2007 GMT by Alexander Stillich
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2005 Szymon Stefanek (pragma at kvirc dot net)
+// Copyright (C) 2007 Alexander Stillich (torque at pltn dot org)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include <qobject.h>
+
+class KviTorrentInterface : public QObject
+{
+
+public:
+
+ KviTorrentInterface() {}
+ virtual ~KviTorrentInterface() {}
+
+ virtual int detect() = 0;
+
+ // returns number of torrents in client
+ virtual int count()=0;
+
+/*
+ // path of torrent file
+ virtual QCString getTorrentFile(int i)=0;
+
+ // directory where data is downloaded to
+ virtual QCString getTorrentDataDir(int i)=0;
+*/
+ // number of files in torrent
+ virtual int fileCount(int i)=0;
+ // name of file in torrent
+ virtual QString fileName(int i, int file)=0;
+ // returns file priority (low, normal, high)
+ virtual QString filePriority(int i, int file)=0;
+ // sets file priority
+ virtual bool setFilePriority(int i, int file, const QString &prio)=0;
+
+ virtual bool start(int i)=0;
+ virtual bool stop(int i)=0;
+
+ virtual bool announce(int i)=0;
+
+ virtual bool startAll()=0;
+ virtual bool stopAll()=0;
+/*
+ // remove torrent from client
+ virtual bool removeTorrent(int i)=0;
+
+ virtual bool addTorrent(const QCString &mrl);
+*/
+ // returns state of torrent number i (Stopped, Stalled, Seeding, Downloading)
+ // this uses getTorrentInfo() to obtain the state and then
+ // returns it as string
+ virtual QString state(int i)=0;
+
+ // name of torrent as displayed in client
+ // uses getTorrentInfo()
+ virtual QString name(int i)=0;
+
+ virtual float speedUp()=0;
+ virtual float speedDown()=0;
+
+ virtual float trafficUp()=0;
+ virtual float trafficDown()=0;
+
+ virtual int maxUploadSpeed()=0;
+ virtual int maxDownloadSpeed()=0;
+
+ virtual bool setMaxUploadSpeed(int kbytes_per_sec)=0;
+ virtual bool setMaxDownloadSpeed(int kbytes_per_sec)=0;
+
+ QString lastError() { return m_lastError; }
+
+ static void select(KviTorrentInterface *i) { m_selected = i; }
+ static KviTorrentInterface *selected() { return m_selected; }
+
+protected:
+
+ QString m_lastError;
+
+ static KviTorrentInterface *m_selected;
+};
+
+class KviTorrentInterfaceDescriptor
+{
+public:
+ KviTorrentInterfaceDescriptor() {};
+ virtual ~KviTorrentInterfaceDescriptor() {};
+public:
+ virtual const QString & name() = 0;
+ virtual const QString & description() = 0;
+ virtual KviTorrentInterface * instance() = 0;
+};
+
+#define TORR_DECLARE_DESCRIPTOR(_interfaceclass) \
+ class _interfaceclass ## Descriptor : public KviTorrentInterfaceDescriptor \
+ { \
+ public: \
+ _interfaceclass ## Descriptor(); \
+ virtual ~_interfaceclass ## Descriptor(); \
+ protected: \
+ _interfaceclass * m_pInstance; \
+ QString m_szName; \
+ QString m_szDescription; \
+ public: \
+ virtual const QString & name(); \
+ virtual const QString & description(); \
+ virtual KviTorrentInterface * instance(); \
+ };
+
+#define TORR_IMPLEMENT_DESCRIPTOR(_interfaceclass,_name,_description) \
+ _interfaceclass ## Descriptor::_interfaceclass ## Descriptor() \
+ : KviTorrentInterfaceDescriptor() \
+ { \
+ m_pInstance = 0; \
+ m_szName = _name; \
+ m_szDescription = _description; \
+ } \
+ _interfaceclass ## Descriptor::~_interfaceclass ## Descriptor() \
+ { \
+ delete m_pInstance; \
+ } \
+ const QString & _interfaceclass ## Descriptor::name() \
+ { \
+ return m_szName; \
+ } \
+ const QString & _interfaceclass ## Descriptor::description() \
+ { \
+ return m_szDescription; \
+ } \
+ KviTorrentInterface * _interfaceclass ## Descriptor::instance() \
+ { \
+ if (!m_pInstance) m_pInstance = new _interfaceclass(); \
+ return m_pInstance; \
+ }
+
+#endif // _TC_INTERFACE_H_
+
diff --git a/src/modules/torrent/tc_ktorrentdcopinterface.cpp b/src/modules/torrent/tc_ktorrentdcopinterface.cpp
new file mode 100644
index 00000000..8e770bfc
--- /dev/null
+++ b/src/modules/torrent/tc_ktorrentdcopinterface.cpp
@@ -0,0 +1,500 @@
+//=============================================================================
+//
+// Common interface for BitTorrent clients.
+//
+// File : torr_ktorrentdcopinterface.cpp
+// Creation date : Fri Jan 1 15:42:25 2007 GMT by Alexander Stillich
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2005 Szymon Stefanek (pragma at kvirc dot net)
+// Copyright (C) 2007 Alexander Stillich (torque at pltn dot org)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#ifdef COMPILE_KDE_SUPPORT
+
+#include "kvi_app.h"
+
+
+#include "dcopclient.h" // <-- this include should be hidden in kvilib
+
+#include "tc_ktorrentdcopinterface.h"
+
+
+#include "kvi_locale.h"
+#include <qtimer.h>
+
+TORR_IMPLEMENT_DESCRIPTOR(
+ KviKTorrentDCOPInterface,
+ "ktorrentdcop",
+ __tr2qs_ctx(
+ "An interface to KDE's excellent KTorrent client.\n" \
+ "Download it from http://www.ktorrent.org\n",
+ "torrent"
+ )
+)
+
+#define ERROR_MSG \
+ QCString msg; \
+ if (!findRunningApp(m_szAppId)) \
+ msg = "KTorrent's isn't running!"; \
+ else \
+ msg = "Something's wrong here! KTorrent's DCOP interface has probably changed."; \
+ m_lastError = __tr2qs_ctx(QString(msg), "torrent"); \
+ debug("%s (%s:%d): %s", __PRETTY_FUNCTION__, __FILE__, __LINE__, (const char*)msg); \
+
+#define ERROR_MSG_RANGE(I, SIZE) \
+ KviQString::sprintf(m_lastError, __tr2qs_ctx("Index out of range: %d [0-%d]!", "torrent"), I, (SIZE>0)?(SIZE-1):0); \
+ debug("%s (%s:%d): Index out of range: %d [0-%d]!", __PRETTY_FUNCTION__ , __FILE__, __LINE__, I, (SIZE>0)?(SIZE-1):0);
+
+#define ERROR_RET_BOOL \
+ { \
+ ERROR_MSG \
+ return false; \
+ }
+
+#define ERROR_RET_NUM \
+ { \
+ ERROR_MSG \
+ return -1; \
+ }
+
+// TODO: unused?
+#define ERROR_RET_STRING \
+ { \
+ ERROR_MSG \
+ return ""; \
+ }
+
+#define ERROR_RET_VOID \
+ { \
+ ERROR_MSG \
+ return; \
+ }
+
+#define CHECK_RANGE_BOOL(I, SIZE) \
+ if (I<0 || I>=SIZE) \
+ { \
+ ERROR_MSG_RANGE(I, SIZE) \
+ return false; \
+ }
+
+#define CHECK_RANGE_INT(I, SIZE) \
+ if (I<0 || I>=SIZE) \
+ { \
+ ERROR_MSG_RANGE(I, SIZE) \
+ return -1; \
+ }
+
+#define CHECK_RANGE_STRING(I, SIZE) \
+ if (I<0 || I>=SIZE) \
+ { \
+ ERROR_MSG_RANGE(I, SIZE) \
+ return ""; \
+ }
+
+KviKTorrentDCOPInterface::KviKTorrentDCOPInterface()
+ : KviDCOPHelper(false, "ktorrent")
+{
+ printf("KviKTorrentDCOPInterface\n");
+
+ QTimer *timer = new QTimer(this);
+ connect(timer, SIGNAL(timeout()), this, SLOT(slotTimer()));
+ timer->start(250, FALSE);
+
+ // make sure we have a list of files,
+ // otherwise functions dealing would
+ // fail if called the first time
+ slotTimer();
+}
+
+KviKTorrentDCOPInterface::~KviKTorrentDCOPInterface()
+{
+ printf("~KviKTorrentDCOPInterface\n");
+}
+
+void KviKTorrentDCOPInterface::slotTimer()
+{
+ if (!findRunningApp(m_szAppId))
+ return;
+
+ m_ti.clear();
+
+ KviValueList<int> ret;
+ if (!qvalueListIntRetIntDCOPCall("KTorrent", "getTorrentNumbers(int)", ret, 0))
+ ERROR_RET_VOID
+
+ for (int i=0; i<ret.size(); i++)
+ {
+ KviQCStringList info;
+ if (!qcstringListRetIntDCOPCall("KTorrent", "getTorrentInfo(int)", info, ret[i]))
+ ERROR_RET_VOID
+
+ if (info.size() == 0)
+ continue;
+
+ TorrentInfo item;
+ if (!makeTorrentInfo(item, info))
+ return;
+
+ item.num = ret[i];
+ m_ti.append(item);
+ }
+
+ qHeapSort(m_ti);
+}
+
+int KviKTorrentDCOPInterface::detect()
+{
+ if (!findRunningApp(m_szAppId))
+ return 0;
+
+ return 100;
+}
+
+bool makeSize(float &sz, const QString &s, const QString &u)
+{
+ bool ok;
+ sz = s.toFloat(&ok);
+ if (!ok)
+ return false;
+
+ if (u == "B")
+ ;
+ else
+ if (u == "KB")
+ sz = sz * 1024.0;
+ else
+ if (u == "MB")
+ sz = sz * 1024.0 * 1024.0;
+ else
+ if (u == "GB")
+ sz = sz * 1024.0 * 1024.0 * 1024.0;
+ else
+ return false;
+
+ return true;
+}
+
+bool KviKTorrentDCOPInterface::start(int i)
+{
+ CHECK_RANGE_BOOL(i, m_ti.size())
+
+ debug("starting %s [%d]", (const char*)m_ti[i].name, m_ti[i].num);
+ if (!voidRetIntDCOPCall("KTorrent", "start(int)", m_ti[i].num))
+ ERROR_RET_BOOL
+
+ return true;
+}
+
+bool KviKTorrentDCOPInterface::stop(int i)
+{
+ CHECK_RANGE_BOOL(i, m_ti.size())
+
+ debug("stopping %s [%d]", (const char*)m_ti[i].name, m_ti[i].num);
+ if (!voidRetIntBoolDCOPCall("KTorrent", "stop(int, bool)", m_ti[i].num, true))
+ ERROR_RET_BOOL
+
+ return true;
+}
+
+bool KviKTorrentDCOPInterface::announce(int i)
+{
+ CHECK_RANGE_BOOL(i, m_ti.size())
+
+ debug("announcing %s [%d]", (const char*)m_ti[i].name, m_ti[i].num);
+ if (!voidRetIntDCOPCall("KTorrent", "announce(int)", m_ti[i].num))
+ ERROR_RET_BOOL
+ return true;
+}
+
+QString KviKTorrentDCOPInterface::state(int i)
+{
+ CHECK_RANGE_STRING(i, m_ti.size())
+
+ return m_ti[i].state;
+}
+
+QString KviKTorrentDCOPInterface::name(int i)
+{
+ CHECK_RANGE_STRING(i, m_ti.size())
+
+ return m_ti[i].name;
+}
+
+int KviKTorrentDCOPInterface::fileCount(int i)
+{
+ CHECK_RANGE_INT(i, m_ti.size())
+
+ int ret;
+ if (!intRetIntDCOPCall("KTorrent", "getFileCount(int)", ret, m_ti[i].num))
+ ERROR_RET_NUM
+
+ return ret;
+}
+
+QString KviKTorrentDCOPInterface::fileName(int i, int file)
+{
+ CHECK_RANGE_STRING(i, m_ti.size())
+
+ QCStringList ret;
+ if (!qcstringListRetIntDCOPCall("KTorrent", "getFileNames(int)", ret, m_ti[i].num))
+ ERROR_RET_STRING
+
+ CHECK_RANGE_STRING(file, ret.size())
+
+ return ret[file];
+}
+
+QString KviKTorrentDCOPInterface::filePriority(int i, int file)
+{
+ CHECK_RANGE_STRING(i, m_ti.size())
+
+ QValueList<int> ret;
+ if (!qvalueListIntRetIntDCOPCall("KTorrent", "getFilePriorities(int)",ret, m_ti[i].num))
+ ERROR_RET_STRING
+
+ CHECK_RANGE_STRING(file, ret.size())
+
+ debug("prio: %d", ret[file]);
+ switch (ret[file])
+ {
+ case 1: return "low";
+ case 2: return "normal";
+ case 3: return "high";
+ }
+
+ ERROR_RET_STRING
+}
+
+bool KviKTorrentDCOPInterface::setFilePriority(int i, int file, const QString &prio)
+{
+ CHECK_RANGE_BOOL(i, m_ti.size())
+
+ int prion;
+ if (prio == "low")
+ prion = 1;
+ else
+ if (prio == "normal")
+ prion = 2;
+ else
+ if (prio == "high")
+ prion = 1;
+ else
+ ERROR_RET_BOOL
+
+ if (!voidRetIntIntIntDCOPCall("KTorrent", "setFilePriority(int,int,int)", m_ti[i].num, file, prion))
+ ERROR_RET_BOOL
+
+ return true;
+}
+
+bool KviKTorrentDCOPInterface::startAll()
+{
+ if (!voidRetIntDCOPCall("KTorrent", "startAll(int)", 3))
+ ERROR_RET_BOOL
+
+ return true;
+}
+
+bool KviKTorrentDCOPInterface::stopAll()
+{
+ if (!voidRetIntDCOPCall("KTorrent", "stopAll(int)", 3))
+ ERROR_RET_BOOL
+
+ return true;
+}
+
+int KviKTorrentDCOPInterface::count()
+{
+ return m_ti.size();
+}
+
+float KviKTorrentDCOPInterface::speedUp()
+{
+ KviQCStringList ret;
+ if (!qcstringListRetVoidDCOPCall("KTorrent", "getInfo()", ret))
+ ERROR_RET_NUM
+
+ QStringList tmp = QStringList::split(" ", ret[2]);
+ if (tmp.size() != 8)
+ ERROR_RET_NUM
+
+ bool ok;
+ float f = tmp[6].toFloat(&ok);
+ if (!ok)
+ ERROR_RET_NUM
+
+ return f;
+}
+
+float KviKTorrentDCOPInterface::speedDown()
+{
+ KviQCStringList ret;
+ if (!qcstringListRetVoidDCOPCall("KTorrent", "getInfo()", ret))
+ ERROR_RET_NUM
+
+ QStringList tmp = QStringList::split(" ", ret[2]);
+ if (tmp.size() != 8)
+ ERROR_RET_NUM
+
+ bool ok;
+ float f = tmp[2].toFloat(&ok);
+ if (!ok)
+ ERROR_RET_NUM
+
+ return f;
+}
+
+float KviKTorrentDCOPInterface::trafficUp()
+{
+ KviQCStringList ret;
+ if (!qcstringListRetVoidDCOPCall("KTorrent", "getInfo()", ret))
+ ERROR_RET_NUM
+
+ QStringList tmp = QStringList::split(" ", ret[1]);
+ if (tmp.size() != 8)
+ ERROR_RET_NUM
+
+ float f;
+ if (!makeSize(f, tmp[6], tmp[7]))
+ ERROR_RET_NUM
+
+ return f;
+}
+
+float KviKTorrentDCOPInterface::trafficDown()
+{
+ KviQCStringList ret;
+ if (!qcstringListRetVoidDCOPCall("KTorrent", "getInfo()", ret))
+ ERROR_RET_NUM
+
+ QStringList tmp = QStringList::split(" ", ret[1]);
+ if (tmp.size() != 8)
+ ERROR_RET_NUM
+
+ float f;
+ if (!makeSize(f, tmp[2], tmp[3]))
+ ERROR_RET_NUM
+
+ return f;
+}
+
+bool KviKTorrentDCOPInterface::makeTorrentInfo(TorrentInfo &ti, const KviQCStringList &ret)
+{
+ if (ret.size() != 10)
+ ERROR_RET_BOOL
+
+ ti.name = ret[0];
+ if (ret[1] == "Seeding")
+ ti.state = "Seeding";
+ else
+ if (ret[1] == "Stalled")
+ ti.state = "Stalled";
+ else
+ if (ret[1] == "Downloading")
+ ti.state = "Downloading";
+ else
+ ti.state = "Stopped";
+
+
+ QStringList tmp;
+ tmp = QStringList::split(" ", ret[2]);
+ if (tmp.size()!=2 || !makeSize(ti.trafficDown, tmp[0], tmp[1]))
+ ERROR_RET_BOOL
+
+ tmp = QStringList::split(" ", ret[3]);
+ if (tmp.size()!=2 || !makeSize(ti.size, tmp[0], tmp[1]))
+ ERROR_RET_BOOL
+
+ tmp = QStringList::split(" ", ret[4]);
+ if (tmp.size()!=2 || !makeSize(ti.trafficUp, tmp[0], tmp[1]))
+ ERROR_RET_BOOL
+
+
+ bool ok;
+ tmp = QStringList::split(" ", ret[5]);
+ if (tmp.size()!=2)
+ ERROR_RET_BOOL
+ ti.speedDown = tmp[0].toFloat(&ok);
+ if (!ok)
+ ERROR_RET_BOOL
+
+ tmp = QStringList::split(" ", ret[6]);
+ if (tmp.size()!=2)
+ ERROR_RET_BOOL
+ ti.speedUp = tmp[0].toFloat(&ok);
+ if (!ok)
+ ERROR_RET_BOOL
+
+
+ // torrent name, status, downloaded, size, uploaded, down spd, up spd, none, peers, % complete
+ ti.peers = ret[8].toInt(&ok);
+ if (!ok)
+ ERROR_RET_BOOL
+
+ tmp = QStringList::split(" ", ret[9]);
+ if (tmp.size()!=2)
+ ERROR_RET_BOOL
+ ti.percent = tmp[0].toFloat(&ok);
+ if (!ok)
+ ERROR_RET_BOOL
+
+ return true;
+}
+
+int KviKTorrentDCOPInterface::maxUploadSpeed()
+{
+ int ret;
+ if (!intRetVoidDCOPCall("KTorrent", "maxUploadRate()", ret))
+ {
+ ERROR_MSG
+ return -1;
+ }
+ return ret;
+}
+
+int KviKTorrentDCOPInterface::maxDownloadSpeed()
+{
+ int ret;
+ if (!intRetVoidDCOPCall("KTorrent", "maxDownloadRate()", ret))
+ {
+ ERROR_MSG
+ return -1;
+ }
+ return ret;
+}
+
+bool KviKTorrentDCOPInterface::setMaxUploadSpeed(int kbytes_per_sec)
+{
+ if (!voidRetIntDCOPCall("KTorrent", "setMaxUploadSpeed(int)", kbytes_per_sec))
+ ERROR_RET_BOOL
+ return true;
+}
+
+bool KviKTorrentDCOPInterface::setMaxDownloadSpeed(int kbytes_per_sec)
+{
+ if (!voidRetIntDCOPCall("KTorrent", "setMaxDownloadSpeed(int)", kbytes_per_sec))
+ ERROR_RET_BOOL
+ return true;
+}
+
+
+#include "tc_ktorrentdcopinterface.moc"
+
+#endif // COMPILE_KDE_SUPPORT
+
diff --git a/src/modules/torrent/tc_ktorrentdcopinterface.h b/src/modules/torrent/tc_ktorrentdcopinterface.h
new file mode 100644
index 00000000..8f39810f
--- /dev/null
+++ b/src/modules/torrent/tc_ktorrentdcopinterface.h
@@ -0,0 +1,131 @@
+#ifndef _TC_KTORRENTDCOPINTERFACE_H_
+#define _TC_KTORRENTDCOPINTERFACE_H_
+
+//=============================================================================
+//
+// DCOP interface for KTorrent client.
+//
+// File : torr_ktorrentdcopinterface.h
+// Creation date : Fri Jan 1 15:42:25 2007 GMT by Alexander Stillich
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2005 Szymon Stefanek (pragma at kvirc dot net)
+// Copyright (C) 2007 Alexander Stillich (torque at pltn dot org)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "tc_interface.h"
+
+#ifdef COMPILE_KDE_SUPPORT
+
+#include <kvi_dcophelper.h>
+
+// DCOP interface to KTorrent. this has 'DCOP' in its name
+// because in kde4 there will be a D-BUS interface.
+class KviKTorrentDCOPInterface : public KviTorrentInterface,
+ private KviDCOPHelper
+{
+ Q_OBJECT
+
+public:
+
+ KviKTorrentDCOPInterface();
+ virtual ~KviKTorrentDCOPInterface();
+
+ virtual int detect();
+
+ virtual int count();
+
+ virtual bool start(int i);
+ virtual bool stop(int i);
+ virtual bool announce(int i);
+ virtual QString state(int i);
+ virtual QString name(int i);
+
+ virtual int fileCount(int i);
+ virtual QString fileName(int i, int file);
+ virtual QString filePriority(int i, int file);
+ virtual bool setFilePriority(int i, int file, const QString &prio);
+
+ virtual bool startAll();
+ virtual bool stopAll();
+
+ virtual int maxUploadSpeed();
+ virtual int maxDownloadSpeed();
+
+ virtual bool setMaxUploadSpeed(int kbytes_per_sec);
+ virtual bool setMaxDownloadSpeed(int kbytes_per_sec);
+
+ virtual float speedUp();
+ virtual float speedDown();
+
+ virtual float trafficUp();
+ virtual float trafficDown();
+
+private slots:
+
+ // polls client and extracts information.
+ // this is done because the order of torrents returned changes
+ // each time a torrent's state changes.
+ // we want to present a consistent list (in terms of indices) to
+ // the user, so we extract the info and sort it by name.
+ // otherwise the user would have a hard time figuring out what's
+ // going on. we could sort each time a function working with
+ // torrents is called, but this would be horribly slow ...
+ void slotTimer();
+
+private:
+
+ struct TorrentInfo
+ {
+ // internal number
+ int num;
+ // name displayed in ktorrent
+ QString name;
+ // state of torrent
+ QString state;
+ // bytes
+ float size;
+ // bytes
+ float trafficUp;
+ // bytes
+ float trafficDown;
+ // KB/s
+ float speedUp;
+ // KB/s
+ float speedDown;
+ // percent complete
+ float percent;
+ // number of peers
+ int peers;
+
+ bool operator<(const TorrentInfo &ti) { return name < ti.name; }
+ };
+
+ QValueList<TorrentInfo> m_ti;
+
+private:
+
+ bool makeTorrentInfo(TorrentInfo &ti, const KviQCStringList &ret);
+};
+
+TORR_DECLARE_DESCRIPTOR(KviKTorrentDCOPInterface)
+
+#endif // COMPILE_KDE_SUPPORT
+
+#endif // _TC_KTORRENTDCOPINTERFACE_H_
diff --git a/src/modules/torrent/tc_statusbarapplet.cpp b/src/modules/torrent/tc_statusbarapplet.cpp
new file mode 100644
index 00000000..5d23a299
--- /dev/null
+++ b/src/modules/torrent/tc_statusbarapplet.cpp
@@ -0,0 +1,69 @@
+#include "qtimer.h"
+#include "kvi_locale.h"
+#include "kvi_iconmanager.h"
+#include "tc_interface.h"
+#include "tc_statusbarapplet.h"
+
+KviTorrentStatusBarApplet::KviTorrentStatusBarApplet(KviStatusBar *parent, KviStatusBarAppletDescriptor *desc)
+ : KviStatusBarApplet(parent, desc)
+{
+ QTimer *timer = new QTimer(this);
+ connect(timer, SIGNAL(timeout()), this, SLOT(update()));
+ timer->start(250, FALSE);
+// updateDisplay();
+//
+ setText("torrent client");
+}
+
+KviTorrentStatusBarApplet::~KviTorrentStatusBarApplet()
+{
+}
+
+static KviStatusBarApplet *CreateTorrentClientApplet(KviStatusBar *bar, KviStatusBarAppletDescriptor *desc)
+{
+ debug("CreateTorrentClientApplet");
+ return new KviTorrentStatusBarApplet(bar, desc);
+}
+
+void KviTorrentStatusBarApplet::selfRegister(KviStatusBar *bar)
+{
+ KviStatusBarAppletDescriptor *d = new KviStatusBarAppletDescriptor(
+ __tr2qs("Torrent Client"),
+ "torrentapplet",
+ CreateTorrentClientApplet,
+ "torrent", *(g_pIconManager->getSmallIcon(KVI_SMALLICON_AWAY)));
+
+ bar->registerAppletDescriptor(d);
+}
+
+QString formatSize(float sz)
+{
+ if (sz >= 1024.0f*1024.0f*1024.0f)
+ return QString("%1 GB").arg(sz / (1024.0f*1024.0f*1024.0f), 2, 'f', 2);
+ if (sz >= 1024.0f*1024.0f)
+ return QString("%1 MB").arg(sz / (1024.0f*1024.0f), 2, 'f', 2);
+ if (sz >= 1024.0f)
+ return QString("%1 KB").arg(sz / 1024.0f, 2, 'f', 2);
+ return QString("%1 B").arg(sz, 2, 'f', 2);
+}
+
+void KviTorrentStatusBarApplet::update()
+{
+ if (KviTorrentInterface::selected())
+ {
+ QString msg = QString("up: %1 K/s (%2), dn: %3 K/s (%4)")
+ .arg(KviTorrentInterface::selected()->speedUp(), 2)
+ .arg(formatSize(KviTorrentInterface::selected()->trafficUp()))
+ .arg(KviTorrentInterface::selected()->speedDown(), 2)
+ .arg(formatSize(KviTorrentInterface::selected()->trafficDown()));
+
+ setText(msg);
+
+ } else
+ {
+ setText(__tr2qs_ctx("No client selected!", "torrent"));
+ }
+}
+
+#include "tc_statusbarapplet.moc"
+
diff --git a/src/modules/torrent/tc_statusbarapplet.h b/src/modules/torrent/tc_statusbarapplet.h
new file mode 100644
index 00000000..03dd6d0d
--- /dev/null
+++ b/src/modules/torrent/tc_statusbarapplet.h
@@ -0,0 +1,26 @@
+#ifndef _TC_STATUSBARAPPLET_H_
+#define _TC_STATUSBARAPPLET_H_
+
+#include "kvi_statusbar.h"
+#include "kvi_statusbarapplet.h"
+
+// TODO: check if it gets destroyed
+// TODO: proper icon!
+class KviTorrentStatusBarApplet : public KviStatusBarApplet
+{
+ Q_OBJECT
+
+public:
+
+ KviTorrentStatusBarApplet(KviStatusBar *parent, KviStatusBarAppletDescriptor *desc);
+ virtual ~KviTorrentStatusBarApplet();
+
+ static void selfRegister(KviStatusBar *bar);
+
+private slots:
+
+ void update();
+
+};
+
+#endif // _TC_STATUSBARAPPLET_H_
diff --git a/src/modules/url/Makefile.am b/src/modules/url/Makefile.am
new file mode 100644
index 00000000..c2d88957
--- /dev/null
+++ b/src/modules/url/Makefile.am
@@ -0,0 +1,23 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+SUBDIRS = caps
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkviurl.la
+
+libkviurl_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkviurl_la_SOURCES = libkviurl.cpp
+libkviurl_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+
+noinst_HEADERS= libkviurl.h icons.h
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+libkviurl.cpp: libkviurl.moc
diff --git a/src/modules/url/caps/Makefile.am b/src/modules/url/caps/Makefile.am
new file mode 100644
index 00000000..231fa79c
--- /dev/null
+++ b/src/modules/url/caps/Makefile.am
@@ -0,0 +1,9 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+tmpdir = $(pluglibdir)/caps/action/
+
+tmp_DATA= url
+
+EXTRA_DIST = $(tmp_DATA)
diff --git a/src/modules/url/caps/url b/src/modules/url/caps/url
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src/modules/url/caps/url
diff --git a/src/modules/url/icons.h b/src/modules/url/icons.h
new file mode 100644
index 00000000..20cc7823
--- /dev/null
+++ b/src/modules/url/icons.h
@@ -0,0 +1,554 @@
+const char * url_icon_xpm[] = {
+"16 16 104 2",
+" c None",
+". c #FFFFFF",
+"+ c #F7F7F7",
+"@ c #EFEFEF",
+"# c #E7E7E7",
+"$ c #DFDFDF",
+"% c #D7D7D7",
+"& c #CFCFCF",
+"* c #C7C7C7",
+"= c #BFBFBF",
+"- c #B7B7B7",
+"; c #AFAFAF",
+"> c #A7A7A7",
+", c #9F9F9F",
+"' c #979797",
+") c #8F8F8F",
+"! c #878787",
+"~ c #000000",
+"{ c #090909",
+"] c #121212",
+"^ c #1B1B1B",
+"/ c #242424",
+"( c #2D2D2D",
+"_ c #363636",
+": c #3F3F3F",
+"< c #484848",
+"[ c #515151",
+"} c #5B5B5B",
+"| c #646464",
+"1 c #6D6D6D",
+"2 c #767676",
+"3 c #7F7F7F",
+"4 c #C0C0C0",
+"5 c #AEAEAE",
+"6 c #A5A5A5",
+"7 c #9B9B9B",
+"8 c #929292",
+"9 c #898989",
+"0 c #777777",
+"a c #A7BED2",
+"b c #97C5EC",
+"c c #95C8F4",
+"d c #96BDE0",
+"e c #929DA7",
+"f c #8B96A0",
+"g c #90B7D9",
+"h c #90BDE4",
+"i c #798FA3",
+"j c #888888",
+"k c #6F6F6F",
+"l c #8AACCA",
+"m c #738493",
+"n c #5A5A5A",
+"o c #919191",
+"p c #676767",
+"q c #A3A8AD",
+"r c #94BBDE",
+"s c #8CB3D5",
+"t c #66727B",
+"u c #9A9A9A",
+"v c #5F5F5F",
+"w c #99AAB8",
+"x c #91B3D0",
+"y c #A3A3A3",
+"z c #575757",
+"A c #94B6D3",
+"B c #8697A6",
+"C c #7EA0BD",
+"D c #3E3E3E",
+"E c #ADADAD",
+"F c #4F4F4F",
+"G c #92B9DC",
+"H c #797F83",
+"I c #636363",
+"J c #748A9E",
+"K c #728EA7",
+"L c #353535",
+"M c #B6B6B6",
+"N c #474747",
+"O c #85ADCF",
+"P c #515C65",
+"Q c #2C2C2C",
+"R c #91BEE5",
+"S c #5F6B74",
+"T c #81A9CB",
+"U c #222222",
+"V c #C8C8C8",
+"W c #373737",
+"X c #7A8B9A",
+"Y c #8FBCE3",
+"Z c #87AFD1",
+"` c #3F4549",
+" . c #191919",
+".. c #D1D1D1",
+"+. c #2F2F2F",
+"@. c #101010",
+"#. c #DADADA",
+"$. c #272727",
+"%. c #060606",
+"&. c #E3E3E3",
+"*. c #1F1F1F",
+"=. c #ECECEC",
+"-. c #171717",
+";. c #0F0F0F",
+". + @ # $ % & * = - ; > , ' ) ! ",
+"+ ~ { ] ^ / ( _ : < [ } | 1 2 3 ",
+"@ { 4 4 4 - 5 6 7 8 9 3 2 1 3 0 ",
+"# ] 4 4 a b c d e f g c h i j k ",
+"$ ^ 4 - 5 c c 8 9 3 l c m n o p ",
+"% / - 5 q c r 9 3 2 s c t [ u v ",
+"& ( 5 6 w c x 3 2 1 c c [ < y z ",
+"* _ 6 7 A c B 2 1 m c C < D E F ",
+"= : 7 8 G c H 1 I J c K D L M N ",
+"- < 8 9 c c 1 I n O c P L Q = : ",
+"; [ 9 3 R c I n S c T L Q U V W ",
+"> } 3 2 X Y Z C c T ` Q U ...+.",
+", | 2 1 I n [ < D L Q U .@.#.$.",
+"' 1 1 I n [ < D L Q U .@.%.&.*.",
+") 2 3 j o u y E M = V ..#.&.=.-.",
+"! 3 0 k p v z F N : W +.$.*.-.;."};
+
+const char * url_toolbar_xpm[] = {
+"32 32 38 1",
+" c None",
+". c #000000",
+"+ c #FFFBFF",
+"@ c #B6C3FF",
+"# c #B6C3A6",
+"$ c #FFFFFF",
+"% c #836977",
+"& c #710818",
+"* c #20000E",
+"= c #710018",
+"- c #B60818",
+"; c #710000",
+"> c #A36B7E",
+", c #20050E",
+"' c #FFDFCF",
+") c #B60018",
+"! c #B60800",
+"~ c #B60000",
+"{ c #B62018",
+"] c #B64118",
+"^ c #FF2018",
+"/ c #B62000",
+"( c #B66B7E",
+"_ c #040001",
+": c #FF4118",
+"< c #B66908",
+"[ c #58321C",
+"} c #FF6918",
+"| c #B64100",
+"1 c #FFC3A6",
+"2 c #20252F",
+"3 c #FF4100",
+"4 c #EA6B7E",
+"5 c #713051",
+"6 c #A25E06",
+"7 c #B6727E",
+"8 c #B64151",
+"9 c #4A3211",
+"................+@..............",
+"................++..............",
+"................++..............",
+"................+++.............",
+"................+++.............",
+"................+++.............",
+"................#++@...#$#......",
+"................@+++..@+++@.....",
+"................#+++..+++++.....",
+"................@++++#+++++%....",
+"................#++++++++++#....",
+"......++@.......++++++++++$.....",
+".....++++@......++++++.+++......",
+".&..@++++++....+++++++..........",
+"&&&*++++++++...+++++++..........",
+"&&=++++++++++.+++++++++.........",
+"-;>++&&.#++++++++++++++.........",
+";-+>=&&&,'+++++++++++++#........",
+");-;=;&&&*#++++++$$.#+++........",
+"!-~-)-=-&&,+++++++...+++........",
+".{{!-;);-;&=#+++++@...++#.......",
+"..]^!-~-;-=&='+++++...@++.......",
+"...{{/{~);-;=;>+++++...++.......",
+".....{/^!-~-)-=#++++@...+@......",
+"......{/^!-!-;);(++++_...+......",
+"........]:/^!-~-;#+++@,..@......",
+".........<:/{!-~);(+++&*,.......",
+"..........[}|:/^!-~1+++-&&......",
+"............}|:/^!-~(++>&;&2....",
+".............[3:|:/^!4++;-=5....",
+"...............<6|:/{!7+#;-;8...",
+"................9}|}|:/1+-~-)..."};
+
+const char * urlhigh_toolbar_xpm[] = {
+"32 32 33 1",
+" c None",
+". c #000000",
+"+ c #D4FF00",
+"@ c #E1FF3A",
+"# c #710818",
+"$ c #20000E",
+"% c #710018",
+"& c #B60818",
+"* c #710000",
+"= c #20050E",
+"- c #B60018",
+"; c #B60800",
+"> c #B60000",
+", c #B62018",
+"' c #B64118",
+") c #FF2018",
+"! c #B62000",
+"~ c #A36B7E",
+"{ c #B66B7E",
+"] c #040001",
+"^ c #FF4118",
+"/ c #B66908",
+"( c #58321C",
+"_ c #FF6918",
+": c #B64100",
+"< c #20252F",
+"[ c #FF4100",
+"} c #EA6B7E",
+"| c #713051",
+"1 c #A25E06",
+"2 c #B6727E",
+"3 c #B64151",
+"4 c #4A3211",
+"................+@..............",
+"................++..............",
+"................++..............",
+"................+++.............",
+"................+++.............",
+"................+++.............",
+"................@++@...@+@......",
+"................@+++..@+++@.....",
+"................@+++..+++++.....",
+"................@++++@+++++@....",
+"................@++++++++++@....",
+"......++@.......+++++++++++.....",
+".....++++@......++++++.+++......",
+".#..@++++++....+++++++..........",
+"###$++++++++...+++++++..........",
+"##%++++++++++.+++++++++.........",
+"&*@++##.@++++++++++++++.........",
+"*&@@%###=@+++++++++++++@........",
+"-*&*%*###$@++++++++.@+++........",
+";&>&-&%&##=+++++++...+++........",
+".,,;&*-*&*#%@+++++@...++@.......",
+"..');&>&*&%#%@+++++...@++.......",
+"...,,!,>-*&*%*~+++++...++.......",
+".....,!);&>&-&%@++++@...+@......",
+"......,!);&;&*-*{++++]...@......",
+"........'^!);&>&*@@++@=..@......",
+"........./^!,;&>-*{+++#$=.......",
+"..........(_:^!);&>@+++&##......",
+"............_:^!);&>{++~#*#<....",
+".............([^:^!);}++*&%|....",
+".............../1:^!,;2+@*&*3...",
+"................4_:_:^!@@&>&-..."};
+
+const char * urlconf_toolbar_xpm[] = {
+"32 32 256 2",
+" c None",
+". c #000000",
+"+ c #FFFBFF",
+"@ c #B6C3FF",
+"# c #B6C3A6",
+"$ c #FFFFFF",
+"% c #836977",
+"& c #710818",
+"* c #F8F5F8",
+"= c #212121",
+"- c #0F0F0F",
+"; c #060606",
+"> c #20000E",
+", c #EAE7EA",
+"' c #D3D2D3",
+") c #E3E1E3",
+"! c #FCF9FC",
+"~ c #BEBCBE",
+"{ c #858585",
+"] c #545454",
+"^ c #323232",
+"/ c #010101",
+"( c #710018",
+"_ c #FEFAFE",
+": c #C3C1C3",
+"< c #9E9E9E",
+"[ c #B7B7B7",
+"} c #A5A5A5",
+"| c #C0BFC0",
+"1 c #EEECEE",
+"2 c #848384",
+"3 c #757575",
+"4 c #828282",
+"5 c #4A4A4A",
+"6 c #83C6C6",
+"7 c #B60818",
+"8 c #710000",
+"9 c #A36B7E",
+"0 c #FCF8FC",
+"a c #767576",
+"b c #272727",
+"c c #3D3D3D",
+"d c #707070",
+"e c #9B9B9B",
+"f c #ABABAB",
+"g c #9D9D9D",
+"h c #8A8A8A",
+"i c #999999",
+"j c #9E9D9E",
+"k c #CDCBCD",
+"l c #FBF7FB",
+"m c #F1EEF1",
+"n c #EEEBEE",
+"o c #A46D80",
+"p c #703441",
+"q c #242020",
+"r c #353535",
+"s c #888888",
+"t c #A3A3A3",
+"u c #949494",
+"v c #959595",
+"w c #A3A1A3",
+"x c #A09FA0",
+"y c #868586",
+"z c #FAF7FA",
+"A c #B60018",
+"B c #720303",
+"C c #B91221",
+"D c #770C0C",
+"E c #883446",
+"F c #948888",
+"G c #6A6A6A",
+"H c #6D6D6D",
+"I c #9F9F9F",
+"J c #AAAAAA",
+"K c #A1A1A1",
+"L c #A4A4A4",
+"M c #A0A0A0",
+"N c #939393",
+"O c #898989",
+"P c #6B6B6B",
+"Q c #C9C9C9",
+"R c #B60800",
+"S c #B1303C",
+"T c #8B5151",
+"U c #A06D72",
+"V c #B28D91",
+"W c #B6B3B3",
+"X c #9C9C9C",
+"Y c #B1B1B1",
+"Z c #B3B3B3",
+"` c #AFAFAF",
+" . c #A6A59E",
+".. c #B5A874",
+"+. c #B3A46A",
+"@. c #949287",
+"#. c #919191",
+"$. c #939293",
+"%. c #171717",
+"&. c #A85752",
+"*. c #686463",
+"=. c #8C8C8C",
+"-. c #BBBBBB",
+";. c #C2C2C2",
+">. c #BEBEBE",
+",. c #BDBDBD",
+"'. c #ADACAC",
+"). c #8F7E3D",
+"!. c #D1B440",
+"~. c #CDAF39",
+"{. c #BDA64A",
+"]. c #9F9E98",
+"^. c #989898",
+"/. c #7F7F7F",
+"(. c #B7C2F5",
+"_. c #414141",
+":. c #525151",
+"<. c #616161",
+"[. c #7A7A7A",
+"}. c #B6B6B6",
+"|. c #C3C3C3",
+"1. c #85847F",
+"2. c #A58F3B",
+"3. c #E5C752",
+"4. c #D7BA47",
+"5. c #CBAE3C",
+"6. c #9F9981",
+"7. c #A2A2A2",
+"8. c #7E7E7E",
+"9. c #CFCDCF",
+"0. c #0D0D0D",
+"a. c #2C2C2C",
+"b. c #141414",
+"c. c #100C0C",
+"d. c #505050",
+"e. c #C6C6C6",
+"f. c #CACACA",
+"g. c #A9A9A7",
+"h. c #5A5027",
+"i. c #D4BB58",
+"j. c #E8CB57",
+"k. c #D0B651",
+"l. c #99968B",
+"m. c #979797",
+"n. c #6F6F6F",
+"o. c #070707",
+"p. c #202020",
+"q. c #2F2F2F",
+"r. c #383838",
+"s. c #585858",
+"t. c #7C7C7C",
+"u. c #969696",
+"v. c #CECECE",
+"w. c #C3C2C2",
+"x. c #888784",
+"y. c #44433C",
+"z. c #89805E",
+"A. c #8F8D83",
+"B. c #8F8F8F",
+"C. c #3A3A3A",
+"D. c #9DA4C6",
+"E. c #343434",
+"F. c #575757",
+"G. c #909090",
+"H. c #D0D0D0",
+"I. c #D5D5D5",
+"J. c #CBCBCB",
+"K. c #BFBFBF",
+"L. c #C4C4C4",
+"M. c #AEAEAE",
+"N. c #BABABA",
+"O. c #B0B0B0",
+"P. c #666666",
+"Q. c #2D2D2D",
+"R. c #C0BEC0",
+"S. c #040001",
+"T. c #020202",
+"U. c #373737",
+"V. c #363636",
+"W. c #565656",
+"X. c #D4D4D4",
+"Y. c #C1C1C1",
+"Z. c #C7C7C7",
+"`. c #C5C5C5",
+" + c #C0C0C0",
+".+ c #B2B2B2",
+"++ c #696968",
+"@+ c #B8B6B8",
+"#+ c #F2EEF2",
+"$+ c #FDF9FD",
+"%+ c #20050E",
+"&+ c #404040",
+"*+ c #4D4D4D",
+"=+ c #646464",
+"-+ c #5F5F5F",
+";+ c #5D5D5D",
+">+ c #929292",
+",+ c #8D8A8A",
+"'+ c #AA808A",
+")+ c #080808",
+"!+ c #424242",
+"~+ c #2E2E2E",
+"{+ c #1A1A1A",
+"]+ c #313131",
+"^+ c #3C3C3C",
+"/+ c #4B4B4B",
+"(+ c #C8C8C8",
+"_+ c #A6A6A6",
+":+ c #484848",
+"<+ c #633636",
+"[+ c #FFC7AB",
+"}+ c #303030",
+"|+ c #3B3B3B",
+"1+ c #1D1D1D",
+"2+ c #282828",
+"3+ c #393939",
+"4+ c #7D7D7D",
+"5+ c #262423",
+"6+ c #1B1A19",
+"7+ c #191919",
+"8+ c #4B2B2E",
+"9+ c #BC1515",
+"0+ c #B66B7E",
+"a+ c #20252F",
+"b+ c #040404",
+"c+ c #0E0E0E",
+"d+ c #0B0B0B",
+"e+ c #252525",
+"f+ c #403C3B",
+"g+ c #9F5036",
+"h+ c #743B2F",
+"i+ c #1A1918",
+"j+ c #342A28",
+"k+ c #974736",
+"l+ c #FF261E",
+"m+ c #EA6B7E",
+"n+ c #713051",
+"o+ c #030303",
+"p+ c #333333",
+"q+ c #090909",
+"r+ c #BA751F",
+"s+ c #866132",
+"t+ c #9E542B",
+"u+ c #FE4821",
+"v+ c #B62000",
+"w+ c #B62018",
+"x+ c #B6727E",
+"y+ c #B64151",
+"z+ c #242424",
+"A+ c #2A2A2A",
+"B+ c #4A3211",
+"C+ c #FF6918",
+"D+ c #B64100",
+"E+ c #FF4118",
+"F+ c #FFC3A6",
+"G+ c #B60000",
+". . . . . . . . . . . . . . . . + @ . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . + + . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . + + . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . + + + . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . + + + . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . + + + . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . # + + @ . . . # $ # . . . . . . ",
+". . . . . . . . . . . . . . . . @ + + + . . @ + + + @ . . . . . ",
+". . . . . . . . . . . . . . . . # + + + . . + + + + + . . . . . ",
+". . . . . . . . . . . . . . . . @ + + + + # + + + + + % . . . . ",
+". . . . . . . . . . . . . . . . # + + + + + + + + + + # . . . . ",
+". . . . . . + + @ . . . . . . . + + + + + + + + + + $ . . . . . ",
+". . . . . + + + + @ . . . . . . + + + + + + . + + + . . . . . . ",
+". & . . @ + + + + + * = - ; . + + + + + + + . . . . . . . . . . ",
+"& & & > + , ' ) ! + ~ { ] ^ / + + + + + + + . . . . . . . . . . ",
+"& & ( _ : < [ } | 1 2 3 4 5 + 6 + + + + + + + . . . . . . . . . ",
+"7 8 9 0 a b c d e f g h i j k l m n + + + + + . . . . . . . . . ",
+"8 7 + o p q r c s t u e u v 4 w x y z + + + + # . . . . . . . . ",
+"A B C D E F G H I J K L M I N h O P Q / # + + + . . . . . . . . ",
+"R S T U V W X i Y Z ` ...+.@.#.v $.%.. . + + + . . . . . . . . ",
+". &.*.=.-.;.;.>.,.,.'.).!.~.{.].^./.(.. . . + + # . . . . . . . ",
+". _.:.<.] 5 [.}.|.>.1.2.3.4.5.6.7.8.9.b 0.. @ + + . . . . . . . ",
+". a.b.c.%.d.g e.f.f.g.h.i.j.k.l.m.X ^.n.= . . + + . . . . . . . ",
+". o.p.q.r.s.t.u.f.v.w.x.y.z.A.B.J 8.C.r.D.. . . + @ . . . . . . ",
+". . . ; E.c F.G.H.I.J.K.>.L.M.N.O.P.= Q.R.S.. . . + . . . . . . ",
+". . . T.U.V.W.L X.K Y.Z.`.Q +Y..+++@+#+$+@ %+. . @ . . . . . . ",
+". . / p.&+*+=+-+;+r.F.>+Z.,.I H B.,+'++ + + & > %+. . . . . . . ",
+". . )+r ^ !+5 ~+{+]+^+/+(+_+r ~+]+:+<+[++ + + 7 & & . . . . . . ",
+". . / a.}+r |+U.%.1+2+3+4+d 5+6+7+}+8+9+0++ + 9 & 8 & a+. . . . ",
+". . . b+a.}+c+d+2+}+e+^+^+f+g+h+i+j+k+l+R m++ + 8 7 ( n+. . . . ",
+". . . . T.o+. . T.2+q.E.p+r.q+r+s+t+u+v+w+R x++ # 8 7 8 y+. . . ",
+". . . . . . . . . z+A+p.1+}+/ . B+C+D+C+D+E+v+F++ 7 G+7 A . . . "};
diff --git a/src/modules/url/libkviurl.cpp b/src/modules/url/libkviurl.cpp
new file mode 100644
index 00000000..16430c67
--- /dev/null
+++ b/src/modules/url/libkviurl.cpp
@@ -0,0 +1,910 @@
+//
+// This file is part of the KVIrc irc client distribution
+// Copyright (C) 1999-2002 Andrea Parrella ([email protected])
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+#include "kvi_styled_controls.h"
+#include "kvi_module.h"
+#include "libkviurl.h"
+#include "kvi_app.h"
+#include "kvi_frame.h"
+#include "kvi_kvs_eventmanager.h"
+#include "kvi_tal_popupmenu.h"
+
+#include "kvi_menubar.h"
+#include "kvi_internalcmd.h"
+#include "kvi_iconmanager.h"
+#include "kvi_action.h"
+#include "kvi_actionmanager.h"
+#include "kvi_taskbar.h"
+#include "icons.h"
+#include "kvi_pointerlist.h"
+#include <qfiledialog.h>
+#include <qmessagebox.h>
+#include <qcursor.h>
+#include <qdatetime.h>
+
+#ifdef COMPILE_USE_QT4
+ #include <q3textstream.h>
+ #include <QTextStream>
+#endif
+
+static QPixmap * g_pUrlIconPixmap = 0;
+static KviUrlAction * g_pUrlAction = 0;
+
+typedef struct _UrlDlgList
+{
+ UrlDialog *dlg;
+ int menu_id;
+} UrlDlgList;
+
+const char *g_pUrlListFilename = "/list.kviurl";
+const char *g_pBanListFilename = "/list.kviban";
+
+KviPointerList<KviUrl> *g_pList;
+KviPointerList<UrlDlgList> *g_pUrlDlgList;
+KviPointerList<KviStr> *g_pBanList;
+ConfigDialog *g_pConfigDialog;
+
+KviStr szConfigPath;
+
+void saveUrlList();
+void loadUrlList();
+void saveBanList();
+void loadBanList();
+UrlDlgList * findFrame();
+bool urllist();
+void url_module_help();
+
+
+#define KVI_URL_EXTENSION_NAME "URL module extenstion"
+
+static KviModuleExtension * url_extension_alloc(KviModuleExtensionAllocStruct * s)
+{
+ urllist();
+ return 0;
+}
+
+
+KviUrlAction::KviUrlAction(QObject * pParent)
+: KviKvsAction(pParent,
+ "url.list",
+ "url.list",
+ __tr2qs("Show URL List"),
+ __tr2qs("Shows the URL list window"),
+ KviActionManager::categoryGeneric())
+{
+ m_pBigIcon = new QPixmap(url_toolbar_xpm);
+ m_pSmallIcon = new QPixmap(url_icon_xpm);
+}
+
+KviUrlAction::~KviUrlAction()
+{
+ delete m_pBigIcon;
+ delete m_pSmallIcon;
+}
+
+QPixmap * KviUrlAction::bigIcon()
+{
+ return m_pBigIcon;
+}
+
+QPixmap * KviUrlAction::smallIcon()
+{
+ return m_pSmallIcon;
+}
+
+// ---------------------------- CLASS URLDIALOG ------------------------begin //
+
+UrlDialog::UrlDialog(KviPointerList<KviUrl> *g_pList)
+:KviWindow(KVI_WINDOW_TYPE_TOOL,g_pFrame,"URL List")
+{
+ m_pMenuBar = new KviTalMenuBar(this,"url menu");
+ m_pUrlList = new KviTalListView(this);
+ //m_pUrlList = new KviListView(this,"list");
+ KviConfig cfg(szConfigPath.ptr(),KviConfig::Read);
+
+ KviTalPopupMenu *pop;
+
+ pop = new KviTalPopupMenu(this);
+ pop->insertItem(__tr2qs("&Configure"),this,SLOT(config()));
+ pop->insertItem(__tr2qs("&Help"),this,SLOT(help()));
+ pop->insertItem(__tr2qs("Clo&se"),this,SLOT(close_slot()));
+ m_pMenuBar->insertItem(__tr2qs("&Module"),pop);
+
+ pop = new KviTalPopupMenu(this);
+ pop->insertItem(__tr2qs("&Load"),this,SLOT(loadList()));
+ pop->insertItem(__tr2qs("&Save"),this,SLOT(saveList()));
+ pop->insertItem(__tr2qs("&Clear"),this,SLOT(clear()));
+ m_pMenuBar->insertItem(__tr2qs("&List"),pop);
+
+ m_pUrlList->setShowSortIndicator(true);
+ m_pUrlList->addColumn(__tr2qs("URL"));
+ m_pUrlList->addColumn(__tr2qs("Window"));
+ m_pUrlList->addColumn(__tr2qs("Count"));
+ m_pUrlList->addColumn(__tr2qs("Timestamp"));
+
+ cfg.setGroup("colsWidth");
+ m_pUrlList->setColumnWidth(0,cfg.readIntEntry("Url",170));
+ m_pUrlList->setColumnWidth(1,cfg.readIntEntry("Window",130));
+ m_pUrlList->setColumnWidth(2,cfg.readIntEntry("Count",70));
+ m_pUrlList->setColumnWidth(3,cfg.readIntEntry("Timestamp",70));
+
+ connect(m_pUrlList,SIGNAL(doubleClicked(KviTalListViewItem *)),SLOT(dblclk_url(KviTalListViewItem *)));
+ connect(m_pUrlList,SIGNAL(rightButtonPressed(KviTalListViewItem *, const QPoint &, int)),SLOT(popup(KviTalListViewItem *, const QPoint &, int)));
+
+// setFocusHandlerNoChildren(m_pUrlList);
+#ifdef COMPILE_USE_QT4
+ m_pUrlList->setFocusPolicy(Qt::StrongFocus);
+#else
+ m_pUrlList->setFocusPolicy(QWidget::StrongFocus);
+#endif
+ m_pUrlList->setFocus();
+}
+
+void UrlDialog::config()
+{
+ if (!g_pConfigDialog) g_pConfigDialog = new ConfigDialog();
+}
+
+void UrlDialog::help()
+{
+//#warning "help"
+// m_pFrm->requestHelpOn("doc_plugin_url.kvihelp");
+}
+
+void UrlDialog::saveList()
+{
+ saveUrlList();
+}
+
+void UrlDialog::loadList()
+{
+ loadUrlList();
+}
+
+void UrlDialog::clear()
+{
+ g_pList->clear();
+ for (UrlDlgList *tmpitem=g_pUrlDlgList->first();tmpitem;tmpitem=g_pUrlDlgList->next()) {
+ if (tmpitem->dlg) tmpitem->dlg->m_pUrlList->clear();
+ }
+}
+
+/*
+void UrlDialog::saveProperties()
+{
+
+ KviWindowProperty p;
+ p.rect = externalGeometry();
+ p.isDocked = isAttached();
+ p.splitWidth1 = 0;
+ p.splitWidth2 = 0;
+ p.timestamp = 0;
+ p.imagesVisible = 0;
+ KviWindow * w = m_pFrm->activeWindow();
+ p.isMaximized = isAttached() && w ? w->isMaximized() : isMaximized();
+ p.topSplitWidth1 = 0;
+ p.topSplitWidth2 = 0;
+ p.topSplitWidth3 = 0;
+ g_pOptions->m_pWinPropertiesList->setProperty(caption(),&p);
+}
+*/
+
+void UrlDialog::close_slot()
+{
+ close();
+}
+
+void UrlDialog::remove()
+{
+ if (!m_pUrlList->currentItem()) {
+ QMessageBox::warning(0,__tr2qs("Warning - KVIrc"),__tr2qs("Select an URL."),QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
+ return;
+ }
+
+ for(KviUrl *tmp=g_pList->first();tmp;tmp=g_pList->next())
+ {
+ if (tmp->url == m_pUrlList->currentItem()->text(0)) {
+ g_pList->removeRef(tmp);
+ m_pUrlList->takeItem(m_pUrlList->currentItem());
+ return;
+ }
+ }
+}
+
+void UrlDialog::findtext()
+{
+//#warning "find text"
+/*
+ if (!m_pUrlList->currentItem()) {
+ kvirc_plugin_warning_box(__tr("Select an URL"));
+ return;
+ }
+ for(KviUrl *tmp=g_pList->first();tmp;tmp=g_pList->next())
+ {
+ if (tmp->url == KviStr(m_pUrlList->currentItem()->text(0))) {
+ g_pList->find(tmp);
+ KviStr ft="findtext %";
+ ft.replaceAll('%',tmp->url.ptr());
+ KviWindow *wnd = m_pFrm->findWindow(tmp->window.ptr());
+ if (wnd) {
+ if (kvirc_plugin_execute_command(wnd,ft.ptr())) {
+ if (wnd->mdiParent()) m_pFrm->m_pMdi->setTopChild(wnd->mdiParent(),true);
+ }
+ } else kvirc_plugin_warning_box(__tr("Window not found"));
+ }
+
+ }
+*/
+}
+
+void UrlDialog::dblclk_url(KviTalListViewItem *item)
+{
+ QString cmd="openurl ";
+ cmd.append(item->text(0));
+ KviKvsScript::run(cmd,this);
+}
+
+void UrlDialog::popup(KviTalListViewItem *item, const QPoint &point, int col)
+{
+ if (col == 0) {
+ m_szUrl = item->text(0);
+ KviTalPopupMenu p(0,"menu");
+ p.insertItem(__tr2qs("&Remove"),this,SLOT(remove()));
+ p.insertItem(__tr2qs("&Find Text"),this,SLOT(findtext()));
+ p.insertSeparator();
+ m_pListPopup = new KviTalPopupMenu(0,"list");
+ int i=0;
+ for(KviWindow *w=g_pFrame->windowList()->first();w;w=g_pFrame->windowList()->next()){
+ if ((w->type() <= 2) || (w->type() == 2) || (w->type() == 6)) { // values defined in kvi_define.h (console,channel,query,chat,uwindow)
+ m_pListPopup->insertItem(QString(w->plainTextCaption()),i);
+ m_pListPopup->connectItem(i,this,SLOT(sayToWin(int)));
+ i++;
+ }
+ }
+ p.insertItem(__tr2qs("&Say to Window"),m_pListPopup);
+ p.exec(QCursor::pos());
+ }
+}
+
+void UrlDialog::sayToWin(int itemID)
+{
+ KviWindow *wnd = g_pApp->findWindowByCaption(m_pListPopup->text(itemID).utf8().data());
+ QString say=QString("PRIVMSG %1 %2").arg(wnd->windowName()).arg(m_szUrl.ptr());
+ if (wnd) {
+ KviKvsScript::run(say,wnd);
+ wnd->raise();
+ wnd->setActiveWindow();
+ wnd->setFocus();
+ } else QMessageBox::warning(0,__tr2qs("Warning - KVIrc"),__tr2qs("Window not found."),QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
+}
+
+QPixmap *UrlDialog::myIconPtr()
+{
+ //QPixmap *icon = new QPixmap(url_icon_xpm);
+ //return icon;
+ return g_pUrlIconPixmap;
+}
+
+void UrlDialog::addUrl(QString url, QString window, QString count, QString timestamp)
+{
+ KviTalListViewItem *UrlItem = new KviTalListViewItem(m_pUrlList);
+
+ UrlItem->setText(0, url);
+ UrlItem->setText(1, window);
+ UrlItem->setText(2, count);
+ UrlItem->setText(3, timestamp);
+}
+
+void UrlDialog::resizeEvent(QResizeEvent *)
+{
+ int hght = m_pMenuBar->heightForWidth(width());
+ m_pMenuBar->setGeometry(0,0,width(),hght);
+ m_pUrlList->setGeometry(0,hght,width(),height() - hght);
+}
+
+UrlDialog::~UrlDialog()
+{
+ KviConfig cfg(szConfigPath.ptr(),KviConfig::Write);
+ cfg.setGroup("ConfigDialog");
+ if (cfg.readBoolEntry("SaveColumnWidthOnClose",false)) {
+ cfg.setGroup("ColsWidth");
+ cfg.writeEntry("Url",m_pUrlList->columnWidth(0));
+ cfg.writeEntry("Window",m_pUrlList->columnWidth(1));
+ cfg.writeEntry("Count",m_pUrlList->columnWidth(2));
+ cfg.writeEntry("Timestamp",m_pUrlList->columnWidth(3));
+ }
+
+ delete m_pUrlList;
+/* if (m_pListPopup) delete m_pListPopup;
+ m_pListPopup = 0;
+ if (m_pMenuBar) delete m_pMenuBar;
+ m_pMenuBar = 0;*/
+ UrlDlgList *tmpitem = findFrame();
+ tmpitem->dlg = 0;
+}
+
+// ----------------------------- CLASS URLDIALOG -------------------------end //
+
+// --------------------------- CLASS CONFIGDIALOG ----------------------begin //
+
+ConfigDialog::ConfigDialog()
+:QDialog()
+{
+ setCaption(__tr2qs("URL Module Configuration"));
+
+ QGridLayout *g = new QGridLayout(this,4,2,10,10);
+
+ KviConfig *cfg = new KviConfig(szConfigPath.ptr(),KviConfig::Read);
+ cfg->setGroup("ConfigDialog");
+
+ cb[0] = new KviStyledCheckBox(__tr2qs("Save URL list on module unload"),this);
+ cb[0]->setChecked(cfg->readBoolEntry("SaveUrlListOnUnload",false));
+ g->addMultiCellWidget(cb[0],0,0,0,1);
+
+ cb[1] = new KviStyledCheckBox(__tr2qs("Save columns width on URL list close"),this);
+ cb[1]->setChecked(cfg->readBoolEntry("SaveColumnWidthOnClose",false));
+ g->addMultiCellWidget(cb[1],1,1,0,1);
+
+ bool tmp = cfg->readBoolEntry("BanEnabled",false);
+ delete cfg;
+
+ m_pBanFrame = new BanFrame(this,"banlist",tmp);
+ g->addMultiCellWidget(m_pBanFrame,3,3,0,1);
+
+ QPushButton *b;
+ // configure buttons
+ b = new QPushButton(__tr2qs("&Cancel"),this,"discard");
+ connect(b,SIGNAL(clicked()),this,SLOT(discardbtn()));
+ g->addWidget(b,4,0);
+
+ b = new QPushButton(__tr2qs("&OK"),this,"accept");
+ connect(b,SIGNAL(clicked()),this,SLOT(acceptbtn()));
+ g->addWidget(b,4,1);
+
+ show();
+}
+
+void ConfigDialog::discardbtn()
+{
+ delete this;
+}
+
+void ConfigDialog::acceptbtn()
+{
+ if (m_pBanFrame) m_pBanFrame->saveBans();
+
+ KviConfig *cfg = new KviConfig(szConfigPath.ptr(),KviConfig::Write);
+ cfg->setGroup("ConfigDialog");
+ cfg->writeEntry("SaveUrlListOnUnload",cb[0]->isChecked());
+ cfg->writeEntry("SaveColumnWidthOnClose",cb[1]->isChecked());
+ delete cfg;
+
+ delete this;
+}
+
+void ConfigDialog::closeEvent(QCloseEvent *)
+{
+ delete this;
+}
+
+ConfigDialog::~ConfigDialog()
+{
+ for(int i=0;i<cbnum;i++) delete cb[i];
+ g_pConfigDialog = 0;
+}
+
+// --------------------------- CLASS CONFIGDIALOG ------------------------end //
+
+// ---------------------------- CLASS BANFRAME ------------------------begin //
+
+BanFrame::BanFrame(QWidget *parent, const char *name, bool banEnabled)
+:QFrame(parent,name)
+{
+ setFrameStyle(QFrame::Panel | QFrame::Raised);
+
+ QGridLayout *g = new QGridLayout(this,2,2,10,10);
+
+ m_pEnable = new KviStyledCheckBox(__tr2qs("Enable URL ban list"),this);
+ connect(m_pEnable,SIGNAL(clicked()),this,SLOT(enableClicked()));
+ m_pEnable->setChecked(banEnabled);
+ g->addMultiCellWidget(m_pEnable,0,0,0,1);
+
+ m_pBanList = new KviTalListBox(this);
+ m_pBanList->setMinimumHeight(100);
+ loadBanList();
+ for(KviStr *tmp=g_pBanList->first();tmp;tmp=g_pBanList->next()) m_pBanList->insertItem(tmp->ptr()); // load ban list into listbox
+ m_pBanList->setEnabled(m_pEnable->isChecked());
+ g->addMultiCellWidget(m_pBanList,1,1,0,1);
+
+ m_pAddBtn = new QPushButton(__tr2qs("&Add Ban"),this,"add");
+ connect(m_pAddBtn,SIGNAL(clicked()),this,SLOT(addBan()));
+ m_pAddBtn->setEnabled(m_pEnable->isChecked());
+ g->addWidget(m_pAddBtn,2,0);
+
+ m_pRemoveBtn = new QPushButton(__tr2qs("&Remove Selected"),this,"remove");
+ connect(m_pRemoveBtn,SIGNAL(clicked()),this,SLOT(removeBan()));
+ m_pRemoveBtn->setEnabled(m_pEnable->isChecked());
+ g->addWidget(m_pRemoveBtn,2,1);
+}
+
+void BanFrame::enableClicked()
+{
+ m_pBanList->setEnabled(m_pEnable->isChecked());
+ m_pAddBtn->setEnabled(m_pEnable->isChecked());
+ m_pRemoveBtn->setEnabled(m_pEnable->isChecked());
+}
+
+void BanFrame::addBan()
+{
+ bool ok = false;
+ KviStr *text = new KviStr(QInputDialog::getText(__tr2qs("URL Ban List"),__tr2qs("Add"),QLineEdit::Normal,QString::null,&ok,this));
+ if (ok && !text->isEmpty()) {
+ g_pBanList->append(text);
+ m_pBanList->insertItem(text->ptr());
+ }
+}
+
+void BanFrame::removeBan()
+{
+ uint i = 0;
+ while ((!m_pBanList->isSelected(i)) && (i < m_pBanList->count())) i++;
+ if (!m_pBanList->isSelected(i)) {
+ QMessageBox::warning(0,__tr2qs("Warning - KVIrc"),__tr2qs("Select a ban."),QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
+ return;
+ }
+ KviStr item(m_pBanList->text(i).utf8().data());
+ for(KviStr *tmp=g_pBanList->first();tmp;tmp=g_pBanList->next())
+ {
+ if (*tmp == item)
+ {
+ g_pBanList->removeCurrent();
+ return;
+ }
+ }
+
+ m_pBanList->removeItem(i);
+
+}
+
+void BanFrame::saveBans()
+{
+ if (m_pEnable->isChecked()) saveBanList();
+ KviConfig *cfg = new KviConfig(szConfigPath.ptr(),KviConfig::Write);
+ cfg->setGroup("ConfigDialog");
+ cfg->writeEntry("BanEnabled",m_pEnable->isChecked());
+ delete cfg;
+}
+
+BanFrame::~BanFrame()
+{
+
+}
+
+// ---------------------------- CLASS URLTOOLBAR -------------------------end //
+
+void saveUrlList()
+{
+ QString urllist;
+ g_pApp->getLocalKvircDirectory(urllist,KviApp::ConfigPlugins);
+ urllist += g_pUrlListFilename;
+ QFile file;
+ file.setName(urllist);
+ file.open(IO_WriteOnly);
+
+ QTextStream stream(&file);
+
+ stream << g_pList->count() << endl;
+
+ for(KviUrl *tmp=g_pList->first();tmp;tmp=g_pList->next())
+ {
+ stream << tmp->url << endl;
+ stream << tmp->window << endl;
+ stream << tmp->count << endl;
+ stream << tmp->timestamp << endl;
+ }
+ file.flush();
+ file.close();
+}
+
+void loadUrlList()
+{
+ KviStr urllist;
+ g_pApp->getLocalKvircDirectory(urllist,KviApp::ConfigPlugins);
+ urllist += g_pUrlListFilename;
+ QFile file;
+ file.setName(QString::fromUtf8(urllist.ptr()));
+ if (!file.open(IO_ReadOnly))return;
+#ifdef COMPILE_USE_QT4
+ Q3TextStream stream(&file);
+#else
+ QTextStream stream(&file);
+#endif
+
+
+ g_pList->clear();
+
+ for (UrlDlgList *tmpitem=g_pUrlDlgList->first();tmpitem;tmpitem=g_pUrlDlgList->next()) {
+ if (tmpitem->dlg) tmpitem->dlg->m_pUrlList->clear();
+ }
+ KviUrl *tmp;
+ int i=0;
+ int num = stream.readLine().toInt();
+ while ((!stream.eof()) && (i<num)){
+ tmp = new KviUrl();
+ tmp->url = stream.readLine();
+ tmp->window = stream.readLine();
+ tmp->count = stream.readLine().toInt();
+ tmp->timestamp = stream.readLine();
+
+ g_pList->append(tmp);
+
+ for (UrlDlgList *tmpitem=g_pUrlDlgList->first();tmpitem;tmpitem=g_pUrlDlgList->next()) {
+ if (tmpitem->dlg) {
+ QString tmpCount;
+ tmpCount.setNum(tmp->count);
+ tmpitem->dlg->addUrl(QString(tmp->url), QString(tmp->window), tmpCount, QString(tmp->timestamp));
+ }
+ }
+ i++;
+ }
+ file.close();
+}
+
+void saveBanList()
+{
+ KviStr banlist;
+ g_pApp->getLocalKvircDirectory(banlist,KviApp::ConfigPlugins);
+ banlist += g_pBanListFilename;
+ QFile file;
+ file.setName(QString::fromUtf8(banlist.ptr()));
+ file.open(IO_WriteOnly);
+
+ QTextStream stream(&file);
+
+ stream << g_pBanList->count() << endl;
+ for(KviStr *tmp=g_pBanList->first();tmp;tmp=g_pBanList->next())
+ {
+ stream << tmp->ptr() << endl;
+ }
+ file.flush();
+ file.close();
+}
+
+void loadBanList()
+{
+ KviStr banlist;
+ g_pApp->getLocalKvircDirectory(banlist,KviApp::ConfigPlugins);
+ banlist += g_pBanListFilename;
+ QFile file;
+ file.setName(QString::fromUtf8(banlist.ptr()));
+ if (!file.open(IO_ReadOnly))return;
+#ifdef COMPILE_USE_QT4
+ Q3TextStream stream(&file);
+#else
+ QTextStream stream(&file);
+#endif
+ g_pBanList->clear();
+
+ int i=0;
+ int num = stream.readLine().toInt();
+ while ((!stream.eof()) && (i<num)){
+ KviStr *tmp = new KviStr(stream.readLine());
+ g_pBanList->append(tmp);
+ i++;
+ }
+ file.close();
+}
+
+
+/*
+ @doc: url.list
+ @type:
+ command
+ @title:
+ url.list
+ @short:
+ Opens url list
+ @syntax:
+ url.list
+ @description:
+ This command opens a window containing the urls' list.
+ In the list there is other information:[br]
+ [U]Window[/U] : window where the url has been shown last[br]
+ [U]Count[/U] : number of urls shown[br]
+ [U]Timestamp[/U] : date/time when the url has been shown first[br]
+ Clicking right on the url column of the list a menu will popup, through it
+ you can remove the selected item, find the url in the window it appeared last, and
+ say it to: [I]@Console, Channels, Querys, DCC Chats[/I] and [I]User windows[/I].[br]
+ The list is saved to file when you click on the menu item or when you unload the plugin
+ on condition that you have checked the relative checkbox in configuration dialog.[br]
+ You can also open the url in your web browser double clicking on it in the url list window.[br][br]
+
+ */
+
+static bool url_kvs_cmd_list(KviKvsModuleCommandCall * c)
+{
+ urllist();
+ return true;
+}
+
+
+UrlDlgList *findFrame()
+{
+ UrlDlgList *tmpitem = g_pUrlDlgList->first();
+ if (!tmpitem) {
+ UrlDlgList *udl = new UrlDlgList();
+ udl->dlg = 0;
+ udl->menu_id = -1;
+ g_pUrlDlgList->append(udl);
+ tmpitem = g_pUrlDlgList->current();
+ }
+ return tmpitem;
+}
+
+bool urllist()
+{
+ UrlDlgList *tmpitem = findFrame();
+ if (tmpitem->dlg) return false;
+
+ tmpitem->dlg = new UrlDialog(g_pList);
+ g_pFrame->addWindow(tmpitem->dlg);
+
+ for(KviUrl *tmp=g_pList->first();tmp;tmp=g_pList->next())
+ {
+ QString tmpCount;
+ tmpCount.setNum(tmp->count);
+ tmpitem->dlg->addUrl(QString(tmp->url), QString(tmp->window), tmpCount, QString(tmp->timestamp));
+ }
+ return true;
+}
+
+
+/*
+ @doc: url.config
+ @type:
+ command
+ @title:
+ url.config
+ @short:
+ Loads URL list module
+ @syntax:
+ url.config
+ @description:
+ This command opens a configuration window where it is possible
+ to setup plugin's parameters. You can also open this window by
+ using popup menu in the url list window or by clicking on the "configure plugin" button
+ in plugins options.<BR><BR>
+ <H3>Configure dialog options:</H3>
+ There is also a ban list widget, which allows to have a list of words that plugin mustn't catch.<BR><BR>
+ <I>E.g.<BR>
+ <blockquote>if the word "ftp" is inserted in the ban list and if in a window there is an output like "ftp.kvirc.net",
+ the url will not be catched.</blockquote></I>
+ <HR>
+ */
+
+static bool url_kvs_cmd_config(KviKvsModuleCommandCall * c)
+{
+ if (!g_pConfigDialog) g_pConfigDialog = new ConfigDialog();
+ return true;
+}
+
+int check_url(KviWindow *w,const QString &szUrl) // return 0 if no occurence of the url were found
+{
+ int tmp = 0;
+
+ for(KviStr *tmpi=g_pBanList->first();tmpi;tmpi=g_pBanList->next())
+ {
+ if (szUrl.find(QString(tmpi->ptr())) != -1) tmp++;
+ }
+ if (tmp > 0) return tmp;
+
+ for(KviUrl *u = g_pList->first();u;u=g_pList->next())
+ {
+ if (u->url == szUrl) {
+ u->window = w->plainTextCaption();
+ u->count++;
+ tmp++;
+ }
+ }
+
+ for (UrlDlgList *tmpitem=g_pUrlDlgList->first();tmpitem;tmpitem=g_pUrlDlgList->next()) {
+ if (tmpitem->dlg) {
+ KviTalListViewItemIterator lvi(tmpitem->dlg->m_pUrlList);
+ for(;lvi.current();++lvi)
+ {
+ if (lvi.current()->text(0) == szUrl) {
+ int tmpCount = lvi.current()->text(2).toInt();
+ tmpCount++;
+ QString tmpStr;
+ tmpStr.setNum(tmpCount);
+ lvi.current()->setText(2,tmpStr);
+ lvi.current()->setText(1,w->plainTextCaption());
+ }
+ }
+ }
+ }
+ return tmp;
+}
+
+bool urllist_module_event_onUrl(KviKvsModuleEventCall * c)
+{
+ KviKvsVariant * vUrl = c->firstParam();
+ QString szUrl;
+ if(vUrl)vUrl->asString(szUrl);
+
+ if (check_url(c->window(),szUrl) == 0)
+ {
+
+ KviUrl *tmp = new KviUrl;
+ KviStr tmpTimestamp;
+ QDate d = QDate::currentDate();
+ KviStr date(KviStr::Format,"%d-%d%d-%d%d",d.year(),d.month() / 10,d.month() % 10,d.day() / 10,d.day() % 10);
+ tmpTimestamp = "["+date+"]"+" [";
+ tmpTimestamp += QTime::currentTime().toString()+"]";
+ tmp->url = szUrl;
+ tmp->window = c->window()->plainTextCaption();
+ tmp->count = 1;
+ tmp->timestamp = tmpTimestamp;
+
+ g_pList->append(tmp);
+ for (UrlDlgList *tmpitem=g_pUrlDlgList->first();tmpitem;tmpitem=g_pUrlDlgList->next()) {
+ if (tmpitem->dlg) {
+ QString tmpCount;
+ tmpCount.setNum(tmp->count);
+ tmpitem->dlg->addUrl(QString(tmp->url), QString(tmp->window), tmpCount, QString(tmp->timestamp));
+ tmpitem->dlg->taskBarItem()->highlight(false);
+ }
+ }
+ }
+ return true;
+}
+
+
+/* @doc: url.load
+ @type:
+ command
+ @title:
+ url.load
+ @short:
+ Loads URL list module
+ @syntax:
+ url.load
+ @description:
+ Loads the URL list module which keeps track of all urls shown in kvirc windows.
+*/
+
+
+static bool url_module_init(KviModule *m)
+{
+ KviModuleExtensionDescriptor * d = m->registerExtension("tool",
+ KVI_URL_EXTENSION_NAME,
+ __tr2qs("View URL list"),
+ url_extension_alloc);
+ if(d)d->setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_URL)));
+
+ g_pList = new KviPointerList<KviUrl>;
+ g_pList->setAutoDelete(true);
+
+ g_pUrlDlgList = new KviPointerList<UrlDlgList>;
+ g_pUrlDlgList->setAutoDelete(true);
+
+ g_pBanList = new KviPointerList<KviStr>;
+ g_pBanList->setAutoDelete(true);
+
+ g_pUrlIconPixmap = new QPixmap(url_icon_xpm);
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"list",url_kvs_cmd_list);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"config",url_kvs_cmd_config);
+ g_pUrlAction = new KviUrlAction(KviActionManager::instance());
+ KviActionManager::instance()->registerAction(g_pUrlAction);
+
+ m->kvsRegisterAppEventHandler(KviEvent_OnUrl,urllist_module_event_onUrl);
+
+ g_pApp->getLocalKvircDirectory(szConfigPath,KviApp::ConfigPlugins,"url.conf");
+
+ loadUrlList();
+ loadBanList();
+
+ UrlDlgList *udl = new UrlDlgList();
+ udl->dlg = 0;
+ g_pUrlDlgList->append(udl);
+
+ return true;
+}
+
+static bool url_module_cleanup(KviModule *m)
+{
+ KviConfig cfg(szConfigPath.ptr(),KviConfig::Read);
+ cfg.setGroup("ConfigDialog");
+ if (cfg.readBoolEntry("SaveUrlListOnUnload",false) == true) saveUrlList();
+ for (UrlDlgList *tmpitem=g_pUrlDlgList->first();tmpitem;tmpitem=g_pUrlDlgList->next()) {
+ if (tmpitem->dlg) tmpitem->dlg->close();
+ }
+
+ delete g_pList;
+ g_pList = 0;
+ delete g_pBanList;
+ g_pBanList = 0;
+
+ delete g_pUrlDlgList;
+ g_pUrlDlgList = 0;
+ delete g_pUrlAction;
+ g_pUrlAction = 0;
+
+
+ delete g_pUrlIconPixmap;
+ g_pUrlIconPixmap = 0;
+
+ return true;
+}
+
+static bool url_module_can_unload(KviModule *m)
+{
+ // FIXME: really ugly :/
+ return false;
+}
+
+void url_module_config()
+{
+ if (!g_pConfigDialog) g_pConfigDialog = new ConfigDialog();
+}
+
+/*
+ @doc: url
+ @type:
+ module
+ @short:
+ The URL list module: keeps track of all urls shown in kvirc windows
+ @title:
+ The URL list module
+ @body:
+ This plugin keeps track of all urls shown in kvirc windows.
+ <H3>Exported commands:</H3>
+ <B>/url.list</B> : this command opens a window containing the urls' list.
+ In the list there is other information:<BR>
+ <U>Window</U> : window where the url has been shown last<BR>
+ <U>Count</U> : number of urls shown<BR>
+ <U>Timestamp</U> : date/time when the url has been shown first<BR>
+ Clicking right on the url column of the list a menu will popup, through it
+ you can remove the selected item, find the url in the window it appeared last, and
+ say it to: <I>@Console, Channels, Querys, DCC Chats</I> and <I>User windows</I>.<BR>
+ The list is saved to file when you click on the menu item or when you unload the plugin
+ on condition that you have checked the relative checkbox in configuration dialog.<BR>
+ You can also open the url in your web browser double clicking on it in the url list window.<BR><BR>
+
+ Mail me if you have any suggestion or you want to notice a bug.<BR>
+ <B>Andrea 'YaP' Parrella</B> &lt;[email protected]&gt;<BR><BR>
+ Thanks to:<BR>
+ <B>Szymon Stefanek</B> and <B>Till Bush</B> for their help.<BR>
+ <B>Ted Podgurski</B> for toolbar's icons.
+*/
+
+
+KVIRC_MODULE(
+ "URL",
+ "1.0.0" ,
+ "Copyright (C) 2002 Andrea Parrella <[email protected]>" ,
+ "url list module for KVIrc",
+ url_module_init,
+ url_module_can_unload,
+ 0,
+ url_module_cleanup
+)
+
+#include "libkviurl.moc"
diff --git a/src/modules/url/libkviurl.h b/src/modules/url/libkviurl.h
new file mode 100644
index 00000000..05d56ce8
--- /dev/null
+++ b/src/modules/url/libkviurl.h
@@ -0,0 +1,144 @@
+#ifndef _H_URLDLG
+#define _H_URLDLG
+
+//
+// This file is part of the KVIrc irc client distribution
+// Copyright (C) 1999-2000 Andrea Parrella ([email protected])
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+
+
+#include <qdialog.h>
+#include <qlayout.h>
+#include "kvi_tal_listview.h"
+#include <qstring.h>
+#include <qpushbutton.h>
+#include <qfile.h>
+#ifdef COMPILE_USE_QT4
+ #include <q3textstream.h>
+#else
+ #include <qtextstream.h>
+#endif
+#include <qcheckbox.h>
+#include "kvi_tal_listbox.h"
+#include <qmenubar.h>
+#include <qinputdialog.h>
+#include <qtoolbutton.h>
+#include <qiconset.h>
+
+#include "kvi_locale.h"
+#include "kvi_config.h"
+#include "kvi_irctoolbar.h"
+#include "kvi_imagelib.h"
+#include "kvi_window.h"
+#include "kvi_tal_menubar.h"
+#include "kvi_mextoolbar.h"
+#include "kvi_styled_controls.h"
+
+#include <qpixmap.h>
+
+typedef struct _KviUrl
+{
+ QString url;
+ QString window;
+ int count;
+ QString timestamp;
+} KviUrl;
+
+
+class UrlDialog : public KviWindow
+{
+ Q_OBJECT
+public:
+ UrlDialog(KviPointerList<KviUrl> *g_pList);
+ ~UrlDialog();
+private:
+ KviTalMenuBar *m_pMenuBar;
+ KviTalPopupMenu *m_pListPopup; // dynamic popup menu
+ KviStr m_szUrl; // used to pass urls to sayToWin slot
+protected:
+ QPixmap *myIconPtr();
+ void resizeEvent(QResizeEvent *);
+public:
+ KviTalListView *m_pUrlList;
+ void addUrl(QString url, QString window, QString count, QString timestamp);
+// void saveProperties();
+protected slots:
+ void config();
+ void help();
+ void saveList();
+ void loadList();
+ void clear();
+ void close_slot();
+ void remove();
+ void findtext();
+ void dblclk_url(KviTalListViewItem *item);
+ void popup(KviTalListViewItem *item, const QPoint &p, int col);
+ void sayToWin(int);
+};
+
+class BanFrame : public QFrame
+{
+ Q_OBJECT
+public:
+ BanFrame(QWidget *parent=0, const char *name=0, bool banEnable = false);
+ ~BanFrame();
+ void saveBans();
+private:
+ KviStyledCheckBox *m_pEnable;
+ KviTalListBox *m_pBanList;
+ QPushButton *m_pAddBtn;
+ QPushButton *m_pRemoveBtn;
+protected slots:
+ void enableClicked();
+ void addBan();
+ void removeBan();
+};
+
+#define cbnum 2
+
+class ConfigDialog : public QDialog
+{
+ Q_OBJECT
+public:
+ ConfigDialog();
+ ~ConfigDialog();
+private:
+ KviStyledCheckBox *cb[cbnum];
+ BanFrame *m_pBanFrame;
+ void closeEvent(QCloseEvent *);
+protected slots:
+ void acceptbtn();
+ void discardbtn();
+};
+
+#include "kvi_kvs_action.h"
+
+class KviUrlAction : public KviKvsAction
+{
+ Q_OBJECT
+public:
+ KviUrlAction(QObject * pParent);
+ ~KviUrlAction();
+protected:
+ QPixmap * m_pBigIcon;
+ QPixmap * m_pSmallIcon;
+public:
+ virtual QPixmap * bigIcon();
+ virtual QPixmap * smallIcon();
+};
+
+#endif
diff --git a/src/modules/window/Makefile.am b/src/modules/window/Makefile.am
new file mode 100644
index 00000000..52912925
--- /dev/null
+++ b/src/modules/window/Makefile.am
@@ -0,0 +1,21 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkviwindow.la
+
+libkviwindow_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+nodist_libkviwindow_la_SOURCES = moc_userwindow.cpp
+
+libkviwindow_la_SOURCES = libkviwindow.cpp userwindow.cpp
+
+libkviwindow_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= userwindow.h
+
+moc_%.cpp: %.h
+ $(SS_QT_MOC) $< -o $@
diff --git a/src/modules/window/libkviwindow.cpp b/src/modules/window/libkviwindow.cpp
new file mode 100644
index 00000000..abef0dd9
--- /dev/null
+++ b/src/modules/window/libkviwindow.cpp
@@ -0,0 +1,1547 @@
+//=================================================================================
+//
+// File : kvi_window.cpp
+// Creation date : Sat Sep 01 2001 17:13:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2001-2005 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=================================================================================
+
+#include "kvi_module.h"
+
+#include "kvi_console.h"
+#include "kvi_options.h"
+#include "kvi_ircsocket.h"
+#include "kvi_frame.h"
+#include "kvi_locale.h"
+#include "kvi_app.h"
+#include "kvi_error.h"
+#include "kvi_ircview.h"
+#include "kvi_input.h"
+#include "kvi_iconmanager.h"
+#include "kvi_modulemanager.h"
+#include "kvi_memmove.h"
+#include "kvi_malloc.h"
+
+#include "kvi_channel.h"
+#include "userwindow.h"
+
+#include "kvi_pointerhashtable.h"
+#include <qtimer.h>
+
+
+#ifdef COMPILE_CRYPT_SUPPORT
+ #include "kvi_crypt.h"
+ #include "kvi_cryptcontroller.h"
+ // kvi_app.cpp
+ extern KVIRC_API KviCryptEngineManager * g_pCryptEngineManager;
+#endif
+
+
+// kvi_app.cpp
+extern KVIRC_API KviPointerHashTable<const char *,KviWindow> * g_pGlobalWindowDict;
+KviPointerList<KviUserWindow> * g_pUserWindowList = 0;
+
+// $window.caption $window.x $window.y $window.width $window.height $window.isActive $window.type
+// $window.input.text $window.input.cursorpos $window.input.textlen
+
+
+#define GET_KVS_WINDOW_ID \
+ QString szWnd; \
+ KviWindow * pWnd; \
+ KVSM_PARAMETERS_BEGIN(c) \
+ KVSM_PARAMETER("window_id",KVS_PT_STRING,KVS_PF_OPTIONAL,szWnd) \
+ KVSM_PARAMETERS_END(c) \
+ if(c->parameterList()->count() == 0) \
+ { \
+ pWnd = c->window(); \
+ } else { \
+ pWnd = g_pApp->findWindow(szWnd.utf8().data()); \
+ if(!pWnd) \
+ { \
+ if(!c->hasSwitch('q',"quiet")) \
+ c->warning(__tr2qs("The window with id '%s' does not exist"),szWnd.utf8().data()); \
+ return true; \
+ } \
+ }
+
+#define GET_KVS_FNC_WINDOW_ID \
+ QString szWnd; \
+ KviWindow * pWnd; \
+ KVSM_PARAMETERS_BEGIN(c) \
+ KVSM_PARAMETER("window_id",KVS_PT_STRING,KVS_PF_OPTIONAL,szWnd) \
+ KVSM_PARAMETERS_END(c) \
+ if(c->parameterList()->count() == 0) \
+ { \
+ pWnd = c->window(); \
+ } else { \
+ pWnd = g_pApp->findWindow(szWnd.utf8().data()); \
+ if(!pWnd) \
+ return true; \
+ }
+
+/*
+ @doc: window.clearOutput
+ @type:
+ command
+ @title:
+ window.clearOutput
+ @short:
+ Clears the output a window
+ @syntax:
+ window.clearOutput [-f] [-q] [window_id]
+ @switches:
+ !sw: -q | --quiet
+ Don't warn if the specified window doesn't exist. Just continue silently.
+ @description:
+ Clears the text output of the window specified by window_id. If window_id is missing then
+ the current window is used. If the window has no text output then no operation is performed.
+ If the specified window does not exist a warning is printed (unless the -q switch is used)
+ but the execution continues normally.
+ @seealso:
+ [fnc]$window.hasOutput[/fnc]
+*/
+
+static bool window_kvs_cmd_clearOutput(KviKvsModuleCommandCall * c)
+{
+ GET_KVS_WINDOW_ID
+ if(pWnd)
+ {
+ if(pWnd->view())pWnd->view()->emptyBuffer(true);
+ if(pWnd->type() == KVI_WINDOW_TYPE_CHANNEL)
+ {
+ KviChannel *chan = (KviChannel *)pWnd;
+ if(chan->messageView()) chan->messageView()->emptyBuffer(true);
+ }
+ }
+ return true;
+}
+
+/*
+ @doc: window.close
+ @type:
+ command
+ @title:
+ window.close
+ @short:
+ Closes a window
+ @syntax:
+ window.close [-q] [window_id]
+ @description:
+ Closes the window specified by window_id. If window_id is missing then
+ the current window is closed. The close operation is asynchronous: it is
+ performed immediately after the script has terminated the execution and
+ the control is returned to the main KVIrc core. If the specified window
+ does not exist a warning is printed unless the -q switch is used.
+*/
+
+static bool window_kvs_cmd_close(KviKvsModuleCommandCall * c)
+{
+ GET_KVS_WINDOW_ID
+ if(pWnd)
+ {
+ pWnd->delayedClose();
+ }
+ return true;
+}
+
+/*
+ @doc: window.dock
+ @type:
+ command
+ @title:
+ window.dock
+ @short:
+ Docks a window
+ @syntax:
+ window.dock [-q] [window_id]
+ @description:
+ Docks the window specified by window_id. If window_id is missing then
+ the current window is docked. If the specified window was already docked then
+ no operation is performed. If the specified window
+ does not exist a warning is printed unless the -q switch is used.
+ @seealso:
+ [cmd]window.undock[/cmd]
+*/
+
+static bool window_kvs_cmd_dock(KviKvsModuleCommandCall * c)
+{
+ GET_KVS_WINDOW_ID
+ if(pWnd)
+ {
+ pWnd->dock();
+ }
+ return true;
+}
+
+/*
+ @doc: window.undock
+ @type:
+ command
+ @title:
+ window.undock
+ @short:
+ Undocks a window
+ @syntax:
+ window.undock [-q] [window_id]
+ @description:
+ Undocks the window specified by window_id. If window_id is missing then
+ the current window is undocked. If the specified window was already undocked then
+ no operation is performed. If the specified window
+ does not exist a warning is printed unless the -q switch is used.
+ @seealso:
+ [cmd]window.dock[/cmd]
+*/
+
+static bool window_kvs_cmd_undock(KviKvsModuleCommandCall * c)
+{
+ GET_KVS_WINDOW_ID
+ if(pWnd)
+ {
+ pWnd->undock();
+ }
+ return true;
+}
+
+/*
+ @doc: window.maximize
+ @type:
+ command
+ @title:
+ window.maximize
+ @short:
+ Maximizes a window
+ @syntax:
+ window.maximize [-q] [window_id]
+ @description:
+ Maximizes the window specified by window_id. If window_id is missing then
+ the current window is maximized. If the specified window was already maximized then
+ no operation is performed. If the specified window
+ does not exist a warning is printed unless the -q switch is used.
+ @seealso:
+ [cmd]window.minimize[/cmd], [cmd]window.restore[/cmd], [fnc]$window.isMaxmimized[/fnc],
+ [fnc]$window.isMinimized[/fnc]
+*/
+
+static bool window_kvs_cmd_maximize(KviKvsModuleCommandCall * c)
+{
+ GET_KVS_WINDOW_ID
+ if(pWnd)
+ {
+ pWnd->maximize();
+ }
+ return true;
+}
+
+/*
+ @doc: window.minimize
+ @type:
+ command
+ @title:
+ window.minimize
+ @short:
+ Minimizes a window
+ @syntax:
+ window.minimize [-q] [window_id]
+ @description:
+ Minimizes the window specified by window_id. If window_id is missing then
+ the current window is minimized. If the specified window was already minimized then
+ no operation is performed. If the specified window
+ does not exist a warning is printed unless the -q switch is used.
+ @seealso:
+ [cmd]window.maximize[/cmd], [cmd]window.restore[/cmd], [fnc]$window.isMaxmimized[/fnc],
+ [fnc]$window.isMinimized[/fnc]
+*/
+
+static bool window_kvs_cmd_minimize(KviKvsModuleCommandCall * c)
+{
+ GET_KVS_WINDOW_ID
+ if(pWnd)
+ {
+ pWnd->minimize();
+ }
+ return true;
+}
+
+/*
+ @doc: window.restore
+ @type:
+ command
+ @title:
+ window.restore
+ @short:
+ Restores a window
+ @syntax:
+ window.restore [-q] [window_id]
+ @description:
+ Restores the window specified by window_id. If window_id is missing then
+ the current window is restored. If the specified window was already restored then
+ no operation is performed. If the specified window
+ does not exist a warning is printed unless the -q switch is used.
+ @seealso:
+ [cmd]window.maximize[/cmd], [cmd]window.minimize[/cmd], [fnc]$window.isMaxmimized[/fnc],
+ [fnc]$window.isMinimized[/fnc]
+*/
+
+static bool window_kvs_cmd_restore(KviKvsModuleCommandCall * c)
+{
+ GET_KVS_WINDOW_ID
+ if(pWnd)
+ {
+ pWnd->restore();
+ }
+ return true;
+}
+
+/*
+ @doc: window.activate
+ @type:
+ command
+ @title:
+ window.activate
+ @short:
+ Activates a window
+ @syntax:
+ window.activate [-q] [window_id]
+ @description:
+ Activates the window specified by window_id. If window_id is missing then
+ the current window is activated. If the specified window
+ does not exist a warning is printed unless the -q switch is used.
+ Please note that if the window is currently docked to a frame then this
+ command will NOT raise the frame window. If you're interested in
+ the user's attention then you might be interested in [cmd]window.demandAttention[/cmd].
+ @seealso:
+ [cmd]window.demandAttention[/cmd]
+*/
+
+static bool window_kvs_cmd_activate(KviKvsModuleCommandCall * c)
+{
+ GET_KVS_WINDOW_ID
+ if(pWnd)
+ {
+ pWnd->autoRaise();
+ }
+ return true;
+}
+
+/*
+ @doc: window.demandAttention
+ @type:
+ command
+ @title:
+ window.demandAttention
+ @short:
+ Flashes a window's system taskbar entry
+ @syntax:
+ window.demandAttention [-q] [window_id]
+ @description:
+ Flashes the system taskbar entry of the window
+ specified by the window_id. If window_id is missing then
+ the current window's system taskbar entry is flashed. If the specified window
+ does not exist a warning is printed unless the -q switch is used.
+ If the window is currently docked in a frame then the frame's
+ system taskbar entry will be flashed.
+ Please note that this command is highly system dependant:
+ on systems that do not have a system taskbar or there
+ is no way to flash an etry this command will do nothing.
+ At the time of writing this command works flawlessly on
+ Windows and in KDE compilations.
+ @seealso:
+ [cmd]window.demandAttention[/cmd]
+*/
+
+static bool window_kvs_cmd_demandAttention(KviKvsModuleCommandCall * c)
+{
+ GET_KVS_WINDOW_ID
+ if(pWnd)
+ {
+ pWnd->demandAttention();
+ }
+ return true;
+}
+
+/*
+ @doc: window.isMaximized
+ @type:
+ function
+ @title:
+ $window.isMaximized
+ @short:
+ Checks if a window is currently maximized
+ @syntax:
+ $window.isMaximized
+ $window.isMaximized(<window_id>)
+ @description:
+ Returns 1 if the window specified by <window_id> is currently maximized and 0 otherwise.
+ The form with no parameters works on the current window. If the specified window
+ doesn't exist then 0 is returned.
+ @seealso:
+ [fnc]$window.isMinimized[/fnc], [cmd]window.maximize[/cmd],
+ [cmd]window.minimize[/cmd], [cmd]window.restore[/cmd]
+*/
+
+static bool window_kvs_fnc_isMaximized(KviKvsModuleFunctionCall * c)
+{
+ GET_KVS_FNC_WINDOW_ID
+ if(pWnd)
+ {
+ c->returnValue()->setBoolean(pWnd->isMaximized() ? true : false);
+ }
+ return true;
+}
+
+/*
+ @doc: window.activityLevel
+ @type:
+ function
+ @title:
+ $window.activityLevel
+ @short:
+ Returns the current activity level of a window
+ @syntax:
+ $window.activityLevel
+ $window.activityLevel(<window_id>)
+ @description:
+ Returns the current activity level of the window specified by <window_id>.
+ The form without parameters works on the current window.[br]
+ The activity level is a number describing the level of traffic in the window
+ and depends on the window type. On channels and queries it is dependant on the number
+ and frequency of actions performed by the users.
+ @seealso:
+ [fnc]$window.activityTemperature[/fnc]
+*/
+
+static bool window_kvs_fnc_activityLevel(KviKvsModuleFunctionCall * c)
+{
+ GET_KVS_FNC_WINDOW_ID
+ if(pWnd)
+ {
+ unsigned int v,t;
+ pWnd->activityMeter(&v,&t);
+ c->returnValue()->setInteger(v);
+ } else {
+ c->returnValue()->setInteger(0);
+ }
+ return true;
+}
+
+/*
+ @doc: window.activityTemperature
+ @type:
+ function
+ @title:
+ $window.activityTemperature
+ @short:
+ Returns the current activity temperature of a window
+ @syntax:
+ $window.activityTemperature
+ $window.activityTemperature(<window_id>)
+ @description:
+ Returns the current activity temperature of the window specified by <window_id>.
+ The form without parameters works on the current window.[br]
+ The activity temperature describes the type of traffic in the window and is
+ strictly related to the [fnc]$window.activityLevel[/fnc].[br]
+ On channels and queries the temperature describes the type of the actions
+ performed by the users. High temperatures denote more "human" behaviour (like
+ speaking to the channel, changing the topic etc...),
+ low temperatures denote automatic behaviours (like changing the channel limit
+ or mode: actions often performed by bots).[br]
+ @seealso:
+ [fnc]$window.activityLevel[/fnc]
+*/
+
+static bool window_kvs_fnc_activityTemperature(KviKvsModuleFunctionCall * c)
+{
+ GET_KVS_FNC_WINDOW_ID
+ if(pWnd)
+ {
+ unsigned int v,t;
+ pWnd->activityMeter(&v,&t);
+ c->returnValue()->setInteger(t);
+ } else {
+ c->returnValue()->setInteger(0);
+ }
+ return true;
+}
+
+/*
+ @doc: window.isMinimized
+ @type:
+ function
+ @title:
+ $window.isMinimized
+ @short:
+ Checks if a window is currently minimized
+ @syntax:
+ $window.isMinimized
+ $window.isMinimized(<window_id>)
+ @description:
+ Returns 1 if the window specified by <window_id> is currently minimized and 0 otherwise.
+ The form with no parameters works on the current window. If the specified window
+ doesn't exist then 0 is returned.
+ @seealso:
+ [fnc]$window.isMaximized[/fnc], [cmd]window.maximize[/cmd],
+ [cmd]window.minimize[/cmd], [cmd]window.restore[/cmd]
+*/
+
+static bool window_kvs_fnc_isMinimized(KviKvsModuleFunctionCall * c)
+{
+ GET_KVS_FNC_WINDOW_ID
+ if(pWnd)
+ {
+ c->returnValue()->setBoolean(pWnd->isMinimized() ? true : false);
+ }
+ return true;
+}
+
+/*
+ @doc: window.hasInput
+ @type:
+ function
+ @title:
+ $window.hasInput
+ @short:
+ Checks if a window has an input field
+ @syntax:
+ $window.hasInput
+ $window.hasInput(<window_id>)
+ @description:
+ Returns 1 if the window specified by <window_id> has an input field and 0 otherwise.
+ The form with no parameters works on the current window. If the specified window
+ doesn't exist then 0 is returned.
+ @seealso:
+ [fnc]$window.hasOutput[/fnc]
+*/
+
+static bool window_kvs_fnc_hasInput(KviKvsModuleFunctionCall * c)
+{
+ GET_KVS_FNC_WINDOW_ID
+ if(pWnd)
+ {
+ c->returnValue()->setBoolean(pWnd->input() ? true : false);
+ } else
+ c->returnValue()->setBoolean(false);
+ return true;
+}
+
+/*
+ @doc: window.hasUserFocus
+ @type:
+ function
+ @title:
+ $window.hasUserFocus
+ @short:
+ Checks if a window has the user focus
+ @syntax:
+ $window.hasUserFocus
+ $window.hasUserFocus(<window_id>)
+ @description:
+ Returns 1 if the window specified by <window_id> has
+ currently the user focus and 0 otherwise.
+ The form with no parameters works on the current window.
+ If the specified window doesn't exist then 0 is returned.
+ A window has the user focus if it is the KVIrc's active
+ window and has the user's input focus (i.e. typing
+ on the keyboard will write in this window).
+ @seealso:
+*/
+
+static bool window_kvs_fnc_hasUserFocus(KviKvsModuleFunctionCall * c)
+{
+ GET_KVS_FNC_WINDOW_ID
+ if(pWnd)
+ {
+ bool b = (pWnd == g_pActiveWindow) && pWnd->isActiveWindow();
+ c->returnValue()->setBoolean(b ? true : false);
+ } else
+ c->returnValue()->setBoolean(false);
+ return true;
+}
+
+/*
+ @doc: window.console
+ @type:
+ function
+ @title:
+ $window.console
+ @short:
+ Returns the console that a window is attacched to
+ @syntax:
+ $window.console
+ $window.console(<window_id>)
+ @description:
+ Returns the id of the console window that the window specified by window_id is attacched to.
+ The console is the main (and only) console of the IRC context. If window_id is missing then
+ the current window is used. If this window does not belong to an irc context (and thus has
+ no attacched console) then 0 is returned.
+ @seealso:
+*/
+
+static bool window_kvs_fnc_console(KviKvsModuleFunctionCall * c)
+{
+ GET_KVS_FNC_WINDOW_ID
+ if(pWnd)
+ {
+ c->returnValue()->setInteger(pWnd->console() ? QString(pWnd->console()->id()).toInt() : 0);
+ }
+ return true;
+}
+
+/*
+ @doc: window.hasOutput
+ @type:
+ function
+ @title:
+ $window.hasOutput
+ @short:
+ Checks if a window has a text output widget
+ @syntax:
+ $window.hasOutput
+ $window.hasOutput(<window_id>)
+ @description:
+ Returns 1 if the window specified by <window_id> has a text output widget and 0 otherwise.
+ The form with no parameters works on the current window. If the specified window
+ doesn't exist then 0 is returned.
+ @seealso:
+ [fnc]$window.hasInput[/fnc]
+*/
+
+static bool window_kvs_fnc_hasOutput(KviKvsModuleFunctionCall * c)
+{
+ GET_KVS_FNC_WINDOW_ID
+ if(pWnd)
+ {
+ c->returnValue()->setBoolean(pWnd->view() ? true : false);
+ } else
+ c->returnValue()->setBoolean(false);
+ return true;
+}
+
+/*
+ @doc: window.exists
+ @type:
+ function
+ @title:
+ $window.exists
+ @short:
+ Checks for the existence of a window
+ @syntax:
+ $window.exists(<window_id>)
+ @description:
+ Returns 1 if a specified window exists
+ @seealso:
+*/
+
+static bool window_kvs_fnc_exists(KviKvsModuleFunctionCall * c)
+{
+ GET_KVS_FNC_WINDOW_ID
+ if(pWnd)
+ {
+ c->returnValue()->setBoolean(true);
+ } else
+ c->returnValue()->setBoolean(false);
+ return true;
+}
+
+/*
+ @doc: window.type
+ @type:
+ function
+ @title:
+ $window.type
+ @short:
+ Returns the type of a window
+ @syntax:
+ $window.type
+ $window.type(<window_id>)
+ @description:
+ Returns the type of the window with <window_id>.[br]
+ The form with no parameters returns the type of the current window.[br]
+ If the window with the specified id does not exist, an empty string is returned.[br]
+ @seealso:
+*/
+
+static bool window_kvs_fnc_type(KviKvsModuleFunctionCall * c)
+{
+ GET_KVS_FNC_WINDOW_ID
+ if(pWnd)
+ {
+ c->returnValue()->setString(pWnd->typeString());
+ }
+ return true;
+}
+
+/*
+ @doc: window.context
+ @type:
+ function
+ @title:
+ $window.context
+ @short:
+ Returns the IRC context of a window
+ @syntax:
+ $window.context
+ $window.context(<window_id>)
+ @description:
+ Returns the IRC context of the window with the specified <window_id>.[br]
+ The form with no parameters returns the IRC context of the current window.[br]
+ If the window with the specified id does not exist, an empty string is returned.[br]
+ @seealso:
+*/
+
+static bool window_kvs_fnc_context(KviKvsModuleFunctionCall * c)
+{
+ GET_KVS_FNC_WINDOW_ID
+ if(pWnd)
+ {
+ c->returnValue()->setInteger(pWnd->console() ? pWnd->console()->ircContextId() : 0);
+ }
+ return true;
+}
+
+/*
+ @doc: window.caption
+ @type:
+ function
+ @title:
+ $window.caption
+ @short:
+ Returns the caption of a window
+ @syntax:
+ $window.caption
+ $window.caption(<window_id>)
+ @description:
+ Returns the caption of the window with <window_id>.[br]
+ The form with no parameters returns the caption of the current window.[br]
+ If the window with the specified id does not exist, an empty string is returned.[br]
+ @seealso:
+*/
+
+static bool window_kvs_fnc_caption(KviKvsModuleFunctionCall * c)
+{
+ GET_KVS_FNC_WINDOW_ID
+ if(pWnd)
+ {
+ c->returnValue()->setString(pWnd->plainTextCaption());
+ }
+ return true;
+}
+
+/*
+ @doc: window.listtypes
+ @type:
+ command
+ @title:
+ window.listtypes
+ @short:
+ Lists available types of windows
+ @syntax:
+ window.listtypes
+ @description:
+ Lists the types of windows that are built in the current release of KVIrc.[br]
+ This is actually a command and not a static list just because new window
+ types may be added in subsequent releases.[br]
+ @seealso:
+ [cmd]window.listtypes[/cmd]
+*/
+
+static bool window_kvs_cmd_listtypes(KviKvsModuleCommandCall * c)
+{
+ c->window()->listWindowTypes();
+ return true;
+}
+
+/*
+ @doc: window.list
+ @type:
+ function
+ @title:
+ $window.list
+ @short:
+ Generates lists of windows
+ @syntax:
+ $window.list(<type>[,<irc_context_id>])
+ @description:
+ Returns an array of window identifiers with a speficied type and eventually belonging to a specified
+ irc context.[br]
+ <type> is a window type such as 'query' or 'channel'.[br]
+ See [cmd]window.listtypes[/cmd] for a list of available window types in this KVIrc release.[br]
+ If <type> is the special word 'all', all the window types are listed.[br]
+ <irc_context_id> specifies the irc context in which the windows are searched.[br]
+ If no <irc_context_id> is specified , the current one is used.[br]
+ If <irc_context_id> is the special word 'all', all the irc context are searched.[br]
+ If <irc_context_id> is the special word 'none' then only windows not belonging to any
+ irc context are listed.[br]
+ The special word 'any' used as <irc_context_id> merges the effects of 'all' and 'none'
+ by searching all the irc contexts AND the windows not belonging to any irc context.[br]
+ The windows that do not belong to any irc context (such as DCC windows), must be searched
+ by using 'none' or 'any' as <irc_context_id>.
+ @examples:
+ [example]
+ [comment]# List all the queries of the current irc context[/comment]
+ [cmd]echo[/cmd] $window.list(query)
+ [comment]# Equivalent to the above[/comment]
+ [cmd]echo[/cmd] $window.list(query,[fnc]$ic[/fnc])
+ [comment]# List all the channels in all the irc contexts[/comment]
+ [cmd]echo[/cmd] $window.list(channel,all)
+ [comment]# List all the windows in the current irc context[/comment]
+ [cmd]echo[/cmd] $window.list(all)
+ [comment]# List all the windows in all irc contexts[/comment]
+ [cmd]echo[/cmd] $window.list(all,all)
+ [comment]# List all the DCC Send windows: They don't belong to any irc context[/comment]
+ [cmd]echo[/cmd] $window.list(dccsend,none)
+ [comment]# List all the user windows created with $window.open[/comment]
+ [comment]# They may either belong to an irc context or not[/comment]
+ [cmd]echo[/cmd] $window.list(userwnd,any)
+ [comment]# Ok , let's use it[/comment]
+ [comment]# A nice alias that allows iterating commands through all the consoles[/comment]
+ [comment]# Note the array returned by $window.list[/comment]
+ [comment]# This is by LatinSuD :)[/comment]
+ [cmd]alias[/cmd](iterate)
+ {
+ %ctxt[]=[fnc]$window.list[/fnc](console,all)
+ [cmd]for[/cmd](%i=0;%i<%ctxt[]#;%i++)
+ {
+ [cmd]eval[/cmd] -r=%ctxt[%i] $0-
+ }
+ }
+ iterate [cmd]echo[/cmd] Hi ppl! :)
+ [comment]# The returned array works nicely also in [cmd]foreach[/cmd][/comment]
+ [comment]# Say hi to all the channels :)[/comment]
+ [cmd]alias[/cmd](sayallchans)
+ {
+ [cmd]foreach[/cmd](%x,[fnc]$window.list[/fnc](channel,all))
+ [cmd]say[/cmd] -r=%x $0-;
+ }
+ sayallchans Hi ppl :)
+ [/example]
+ @seealso:
+ [cmd]window.listtypes[/cmd]
+*/
+
+static bool window_kvs_fnc_list(KviKvsModuleFunctionCall * c)
+{
+ QString szType;
+ QString szContext;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("type",KVS_PT_STRING,0,szType)
+ KVSM_PARAMETER("irc_context_id",KVS_PT_STRING,KVS_PF_OPTIONAL,szContext)
+ KVSM_PARAMETERS_END(c)
+ KviKvsArray* pArray = new KviKvsArray();
+ c->returnValue()->setArray(pArray);
+
+ if(szType.isEmpty())
+ {
+ c->warning(__tr2qs("Window type or 'all' expected as first parameter"));
+ return true;
+ }
+
+ int id=0;
+
+ if(KviQString::equalCI(szContext,"all"))
+ {
+ // all contexts but no "no_context" windows
+ bool bAllWindows = KviQString::equalCI(szType,"all");
+ KviPointerHashTableIterator<const char *,KviWindow> it(*g_pGlobalWindowDict);
+
+ while(KviWindow * wnd = it.current())
+ {
+ if(wnd->context())
+ {
+ if(bAllWindows)
+ {
+ pArray->set(id, new KviKvsVariant(QString(wnd->id())));
+ id++;
+ } else {
+ if(szType.lower()==wnd->typeString())
+ {
+ pArray->set(id, new KviKvsVariant(QString(wnd->id())));
+ id++;
+ }
+ }
+ }
+ ++it;
+ }
+ } else if(KviQString::equalCI(szContext,"any"))
+ {
+ // all contexts and also "no_context" windows
+ bool bAllWindows = KviQString::equalCI(szType.lower(),"all");
+ KviPointerHashTableIterator<const char *,KviWindow> it(*g_pGlobalWindowDict);
+
+ while(KviWindow * wnd = it.current())
+ {
+ if(bAllWindows)
+ {
+ pArray->set(id, new KviKvsVariant(QString(wnd->id())));
+ id++;
+ } else {
+ if(szType.lower()==wnd->typeString())
+ {
+ pArray->set(id, new KviKvsVariant(QString(wnd->id())));
+ id++;
+ }
+ }
+ ++it;
+ }
+ } else if(KviQString::equalCI(szContext,"none"))
+ {
+ // only "no_context" windows
+ bool bAllWindows = KviQString::equalCI(szType.lower(),"all");
+ KviPointerHashTableIterator<const char *,KviWindow> it(*g_pGlobalWindowDict);
+
+ while(KviWindow * wnd = it.current())
+ {
+ if(!wnd->context())
+ {
+ if(bAllWindows)
+ {
+ pArray->set(id, new KviKvsVariant(QString(wnd->id())));
+ id++;
+ } else {
+ if(szType.lower()==wnd->typeString())
+ {
+ pArray->set(id, new KviKvsVariant(QString(wnd->id())));
+ id++;
+ }
+ }
+ }
+ ++it;
+ }
+
+ } else {
+ // some specified context
+ unsigned int uId = 0;
+
+ if(!szContext.isEmpty())
+ {
+ // specific context
+ bool bOk;
+ uId = szContext.toUInt(&bOk);
+ if(!bOk)
+ {
+ c->warning(__tr2qs("Invalid IRC context id '%Q'"),&szContext);
+ return true;
+ }
+ } else {
+ // current irc context
+ if(!c->window()->console())
+ {
+ return true;
+ }
+ uId = c->window()->console()->ircContextId();
+ }
+
+ bool bAllWindows = KviQString::equalCI(szType.lower(),"all");
+ KviPointerHashTableIterator<const char *,KviWindow> it(*g_pGlobalWindowDict);
+
+ while(KviWindow * wnd = it.current())
+ {
+ if(wnd->console())
+ {
+ if(wnd->console()->ircContextId() == uId)
+ {
+ if(bAllWindows)
+ {
+ pArray->set(id, new KviKvsVariant(QString(wnd->id())));
+ id++;
+ } else {
+ if(szType.lower()==wnd->typeString())
+ {
+ pArray->set(id, new KviKvsVariant(QString(wnd->id())));
+ id++;
+ }
+ }
+ }
+ }
+ ++it;
+ }
+ }
+ return true;
+
+}
+
+/*
+ @doc: window.open
+ @type:
+ function
+ @title:
+ $window.open
+ @short:
+ Creates and opens a new window
+ @syntax:
+ $window.open([<flags:string>[,<caption:string>[,<irc_context:integer>[,<icon:integer>]]]])
+ @description:
+ Creates a new window, opens it and returns its window identifier.
+ <flags> may be any combination of the following flag characters:[br]
+ [b]i[/b]: Causes the window to have an input field in that
+ the user can type commands or text. The text typed is reported
+ by the [event:ontextinput]OnTextInput[/event] event.[br]
+ [b]m[/b]: Creates a window that is initially minimized.[br]
+ [b]q[/b]: Don't print warning messages during the creation.[br]
+ If <caption> is given then the new window will have it as the initial plain text <caption>.
+ You can change the caption later by calling [cmd]window.setCaption[/cmd].[br]
+ If <irc_context> is given then the new window is bound to the specified irc context
+ and will be destroyed when the attacched console closes.
+ If <irc_context> is omitted or is 0 then the window will be context free (not bound
+ to any context) and will exist until it is closed by the GUI, by a [cmd]window.close[/cmd]
+ call or until KVIrc terminates. When <irc_context> is given but is not valid
+ then a warning is printed (unless the q flag is used) and the created window is context free.[br]
+ You will generally use the [fnc]$context[/fnc] function to retrieve the current IRC context id.[br]
+ [br]
+ <icon> is intepreted as the index of the internal icon to be used
+ for the window. If <icon> is omitted then a default icon is used.[br]
+ @examples:
+ [example]
+ %w = $window.open()
+ [cmd]window.close[/cmd] %w
+ %w = $window.open("m","My funky window")
+ [cmd]window.close[/cmd] %w
+ %w = $window.open("im","My funky window 2",$context,10)
+ [/example]
+ @seealso:
+ [cmd]window.close[/cmd]
+*/
+
+static bool window_kvs_fnc_open(KviKvsModuleFunctionCall * c)
+{
+ QString szFlags;
+ QString szCaption;
+ kvs_uint_t uCtx;
+ kvs_int_t iIcon;
+
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("flags",KVS_PT_STRING,KVS_PF_OPTIONAL,szFlags)
+ KVSM_PARAMETER("caption",KVS_PT_STRING,KVS_PF_OPTIONAL,szCaption)
+ KVSM_PARAMETER("irc_context",KVS_PT_UINT,KVS_PF_OPTIONAL,uCtx)
+ KVSM_PARAMETER("icon",KVS_PT_INT,KVS_PF_OPTIONAL,iIcon)
+ KVSM_PARAMETERS_END(c)
+ iIcon = iIcon % KVI_NUM_SMALL_ICONS;
+
+ int iFlags = 0;
+ if(szFlags.contains('i'))iFlags |= KviUserWindow::HasInput;
+
+ KviConsole * pConsole = 0;
+ if(c->parameterList()->count() >= 3)
+ {
+ pConsole = g_pApp->findConsole(uCtx);
+ if(!pConsole && !szFlags.contains('q'))
+ {
+ c->warning(__tr2qs("The specified IRC context is not valid: creating a context free window"));
+ }
+ }
+
+ KviUserWindow * wnd = new KviUserWindow(
+ c->window()->frame(),
+ szCaption,
+ iIcon,
+ pConsole,
+ iFlags);
+
+ c->window()->frame()->addWindow(wnd,!szFlags.contains('m'));
+ if(szFlags.contains('m'))wnd->minimize();
+
+ c->returnValue()->setInteger(QString(wnd->id()).toUInt());
+ return true;
+}
+
+/*
+ @doc: window.setCaption
+ @type:
+ command
+ @title:
+ window.setCaption
+ @short:
+ Sets the caption of an user window
+ @syntax:
+ window.setCaption [-q] <window_id> <plain_text_caption> [html_inactive_caption] [html_active_caption]
+ @switches:
+ !sw: -q | --quiet
+ Be quiet
+ @description:
+ Sets the caption of the user window specified by <window_id> to <plain_text_caption>.[br]
+ If <window_id> is an empty string then the current window is assumed.[br]
+ The window must be of type userwnd and must have been created by [fnc]$window.open[/fnc]:
+ it is not possible to change the caption of other window types.[br]
+ If the window is not of the expected type then a warning is printed unless the -q switch is used.[br]
+ If [html_inactive_caption] and/or [html_active_caption] are given then
+ the html versions of the captions displayed in the window caption bars
+ are set too. If one of these parameters is missing then <plain_text_caption> is
+ used for the html versions too. The html captions can contain limited html code. In particular
+ you're allowed to use the &lt;nobr&gt;,&lt;font&gt;,&lt;b&gt; and &lt;i&gt; html tags.
+ It is better to avoid using colored fonts since you can't know which color scheme the
+ user will have set.[br]
+ If the specified window does not exist a warning is printed unless the -q switch is used.
+ @seealso:
+*/
+
+static bool window_kvs_cmd_setCaption(KviKvsModuleCommandCall * c)
+{
+ QString szWnd;
+ QString szPlain;
+ QString szInactive;
+ QString szActive;
+ KviWindow * pWnd;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window_id",KVS_PT_STRING,0,szWnd)
+ KVSM_PARAMETER("plain_text_caption",KVS_PT_STRING,0,szPlain)
+ KVSM_PARAMETER("html_inactive_caption",KVS_PT_STRING,KVS_PF_OPTIONAL,szInactive)
+ KVSM_PARAMETER("html_active_caption",KVS_PT_STRING,KVS_PF_OPTIONAL,szActive)
+ KVSM_PARAMETERS_END(c)
+
+ pWnd = g_pApp->findWindow(szWnd.utf8().data());
+ if(!pWnd)
+ {
+ if(!c->hasSwitch('q',"quiet"))
+ c->warning(__tr2qs("The window with id '%s' does not exist"),szWnd.utf8().data());
+ return true;
+ }
+
+ if(pWnd->type() == KVI_WINDOW_TYPE_USERWINDOW)
+ {
+ ((KviUserWindow *)pWnd)->setCaptionStrings(szPlain,szInactive,szActive);
+ } else {
+ if(!c->hasSwitch('q',"quiet"))c->warning(__tr2qs("The specified window is not of type \"userwnd\""));
+ }
+ return true;
+}
+
+/*
+ @doc: window.setInputText
+ @type:
+ command
+ @title:
+ window.setInputText
+ @short:
+ Sets the window input text to <text>
+ @syntax:
+ window.setInputText [-q] <window_id:integer> <text:string>
+ @switches:
+ !sw: -q | --quiet
+ Be quiet
+ @description:
+ Sets the window input text to <text>
+ @seealso:
+ [cmd]window.setInputText[/cmd] [cmd]window.insertInInputText[/cmd] [fnc]$window.inputText[/fnc]
+*/
+
+static bool window_kvs_cmd_setInputText(KviKvsModuleCommandCall * c)
+{
+ QString szWnd;
+ QString szText;
+ KviWindow * pWnd;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window_id",KVS_PT_STRING,0,szWnd)
+ KVSM_PARAMETER("text",KVS_PT_STRING,0, szText)
+ KVSM_PARAMETERS_END(c)
+
+ pWnd = g_pApp->findWindow(szWnd.utf8().data());
+ if(!pWnd)
+ {
+ if(!c->hasSwitch('q',"quiet"))
+ c->warning(__tr2qs("The window with id '%s' does not exist"),szWnd.utf8().data());
+ return true;
+ }
+ if(pWnd->input())
+ pWnd->input()->setText(szText);
+ else
+ if(!c->hasSwitch('q',"quiet")) c->warning(__tr2qs("Window doesn't have input widget"));
+
+ return true;
+}
+
+
+/*
+ @doc: window.insertInInputText
+ @type:
+ command
+ @title:
+ window.insertInInputText
+ @short:
+ Sets the window input text to <text>
+ @syntax:
+ window.insertInInputText [-q] <window_id:integer> <text:string>
+ @switches:
+ !sw: -q | --quiet
+ Be quiet
+ @description:
+ Sets the window input text to <text>
+ @seealso:
+ [cmd]window.setInputText[/cmd], [fnc]$window.inputText[/fnc]
+*/
+
+static bool window_kvs_cmd_insertInInputText(KviKvsModuleCommandCall * c)
+{
+ QString szWnd;
+ QString szText;
+ KviWindow * pWnd;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window_id",KVS_PT_STRING,0,szWnd)
+ KVSM_PARAMETER("text",KVS_PT_STRING,0, szText)
+ KVSM_PARAMETERS_END(c)
+
+ pWnd = g_pApp->findWindow(szWnd.utf8().data());
+ if(!pWnd)
+ {
+ if(!c->hasSwitch('q',"quiet"))
+ c->warning(__tr2qs("The window with id '%s' does not exist"),szWnd.utf8().data());
+ return true;
+ }
+ if(pWnd->input())
+ pWnd->input()->insertText(szText);
+ else
+ if(!c->hasSwitch('q',"quiet")) c->warning(__tr2qs("Window doesn't have input widget"));
+
+ return true;
+}
+
+/*
+ @doc: $window.inputText
+ @type:
+ function
+ @title:
+ $window.inputText
+ @short:
+ Returns the window input line text
+ @syntax:
+ $window.inputText(<window_id:integer>)
+ @description:
+ Returns the window input line text
+ @seealso:
+ [cmd]window.setInputText[/cmd],
+ [cmd]window.insertInInputText[/cmd]
+*/
+
+static bool window_kvs_fnc_inputText(KviKvsModuleFunctionCall * c)
+{
+ GET_KVS_FNC_WINDOW_ID
+ if(pWnd)
+ {
+ if(pWnd->input())
+ c->returnValue()->setString(pWnd->input()->text());
+ }
+ return true;
+}
+
+/*
+ @doc: window.setBackground
+ @type:
+ command
+ @title:
+ window.setBackground
+ @short:
+ Sets the background image of a window
+ @syntax:
+ window.setBackground [-q] <window_id:integer> <image_id:string>
+ @switches:
+ !sw: -q | --quiet
+ Be quiet
+ @description:
+ Sets the background image of the window specified by <window_id> to <image_id>.[br]
+ If <window_id> is an empty string then the current window is assumed.[br]
+ If the specified window or the background image does not exist a warning is printed unless the -q switch is used.
+ @seealso:
+*/
+
+static bool window_kvs_cmd_setBackground(KviKvsModuleCommandCall * c)
+{
+ QString szWnd;
+ QString szBackground;
+ KviWindow * pWnd;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window_id",KVS_PT_STRING,0,szWnd)
+ KVSM_PARAMETER("plain_text_caption",KVS_PT_STRING,0, szBackground)
+ KVSM_PARAMETERS_END(c)
+
+ pWnd = g_pApp->findWindow(szWnd.utf8().data());
+ if(!pWnd)
+ {
+ if(!c->hasSwitch('q',"quiet"))
+ c->warning(__tr2qs("The window with id '%s' does not exist"),szWnd.utf8().data());
+ return true;
+ }
+
+ /*
+ QPixmap *pix=0;
+ pix = g_pIconManager->getImage(szBackground);
+ if (!pix){
+ KviScriptObject * ob = g_pScriptObjectController->lookupObject(szBackground);
+ if(!ob){
+ if(!c->hasSwitch('q',"quiet")) c->warning(__tr2qs("Background not found %Q "),&szBackground);
+ return true;
+ }
+ if(!ob->inherits("KviScriptPixmapObject")){
+ c->warning(__tr("Pixmap objects required !"));
+ return true;
+ }
+ QVariant pix1= ob->property("pixmap");
+ if (!pix1.asPixmap().isNull()){
+ c->warning(__tr("Pixmap is null"));
+ return true;
+ }
+ pWnd->view()->setPrivateBackgroundPixmap(pix1.asPixmap());
+ return true;
+ }
+ if(pWnd)
+ pWnd->view()->setPrivateBackgroundPixmap(*pix);
+ */
+
+ //FIXME: This is broken
+
+ return true;
+}
+
+/*
+ @doc: window.setCryptEngine
+ @type:
+ command
+ @title:
+ window.setCryptEngine
+ @short:
+ Sets the crypt engine for a window that supports it
+ @syntax:
+ window.setCryptEngine [-q] [-n] [-m] <window_id:integer> <enginename:string> <hex_encrypt_key;string> [hex_decrypt_key:string]
+ @switches:
+ !sw: -q | --quiet
+ Be quiet: do echo the raw data.
+ !sw: -n | --onlydecrypt
+ Disables encryption
+ !sw: -m | --onlyencrypt
+ Disables decryption
+ @description:
+ Sets the specified [doc:crypt_engines]cryptographic engine[/doc] for the window. If <enginename> is empty
+ then any current crypting engine is removed (i.e. crypting is disabled).
+ The must be both expressed in hexadecimal notation and are internally transformed in bytes.
+ If only the encrypt key is specified then it will be used for both encrypting and
+ decrypting. This command works only if crypt support is compiled in.
+ @examples:
+ [example]
+ [comment]# This is a really lame example :D[/comment]
+ alias(saylame)
+ {
+ window.setCryptEngine $window Lamerizer
+ say $0-
+ window.setCryptEngine $window
+ }
+ saylame Hello eleet!
+ [/example]
+
+ @seealso:
+ [fnc]$asciiToHex[/fnc], [fnc]$features[/fnc]
+*/
+
+
+#ifdef COMPILE_CRYPT_SUPPORT
+static bool initializeCryptEngine(KviCryptEngine * eng,KviStr &szEncryptKey,KviStr &szDecryptKey,QString &szError)
+{
+ char * encKey = 0;
+ int encKeyLen = 0;
+
+ char * tmpKey;
+ encKeyLen = szEncryptKey.hexToBuffer(&tmpKey,false);
+ if(encKeyLen > 0)
+ {
+ encKey = (char *)kvi_malloc(encKeyLen);
+ kvi_memmove(encKey,tmpKey,encKeyLen);
+ KviStr::freeBuffer(tmpKey);
+ } else {
+ szError = __tr2qs("The encrypt key wasn't a valid hexadecimal string");
+ return false;
+ }
+
+ char * decKey = 0;
+ int decKeyLen = 0;
+
+ decKeyLen = szDecryptKey.hexToBuffer(&tmpKey,false);
+ if(decKeyLen > 0)
+ {
+ decKey = (char *)kvi_malloc(decKeyLen);
+ kvi_memmove(decKey,tmpKey,decKeyLen);
+ KviStr::freeBuffer(tmpKey);
+ } else {
+ szError = __tr2qs("The decrypt key wasn't a valid hexadecimal string");
+ return false;
+ }
+ bool bRet = eng->init(encKey,encKeyLen,decKey,decKeyLen);
+ if(!bRet)
+ szError = eng->lastError();
+ if(encKey)kvi_free(encKey);
+ if(decKey)kvi_free(decKey);
+ return bRet;
+}
+#endif
+
+static bool window_kvs_cmd_setCryptEngine(KviKvsModuleCommandCall * c)
+{
+ QString szWnd;
+ QString szEngine;
+ QString szEncryptKey;
+ QString szDecryptKey;
+ KviWindow * pWnd;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("window_id",KVS_PT_STRING,0,szWnd)
+ KVSM_PARAMETER("enginename",KVS_PT_STRING,KVS_PF_OPTIONAL,szEngine)
+ KVSM_PARAMETER("hex_encrypt_key",KVS_PT_STRING,KVS_PF_OPTIONAL,szEncryptKey)
+ KVSM_PARAMETER("hex_decrypt_key",KVS_PT_STRING,KVS_PF_OPTIONAL,szDecryptKey)
+ KVSM_PARAMETERS_END(c)
+ if(szDecryptKey.isEmpty())szDecryptKey = szEncryptKey;
+#ifdef COMPILE_CRYPT_SUPPORT
+ pWnd = g_pApp->findWindow(szWnd.utf8().data());
+ if(!pWnd)
+ {
+ if(!c->hasSwitch('q',"quiet"))
+ c->warning(__tr2qs("The window with id '%s' does not exist"),szWnd.utf8().data());
+ return true;
+ }
+ if(c->hasSwitch('n',"onlydecrypt") && c->hasSwitch('m',"onlyencrypt"))
+ {
+ if(!c->hasSwitch('q',"quiet"))
+ c->warning(__tr2qs("Both -n and -m switchess specified, -n takes precedence"));
+ }
+
+ if(szEngine.isEmpty())
+ {
+ pWnd->setCryptSessionInfo(0);
+ } else {
+ if(szEncryptKey.isEmpty() || szDecryptKey.isEmpty())
+ {
+ if(!c->hasSwitch('q',"quiet"))
+ c->warning(__tr2qs("No encrypt key specified: can't allocate engine"));
+ return true;
+ }
+
+ (void)g_pModuleManager->loadModulesByCaps("crypt");
+
+ KviCryptEngine * e = g_pCryptEngineManager->allocateEngine(szEngine.utf8().data());
+ if(e)
+ {
+ KviStr enc = KviStr(szEncryptKey.utf8().data());
+ KviStr dec = KviStr(szDecryptKey.utf8().data());
+ QString szError;
+ if(initializeCryptEngine(e,enc,dec,szError))
+ {
+ KviCryptSessionInfo * inf = KviCryptController::allocateCryptSessionInfo();
+ inf->pEngine = e;
+ inf->szEngineName = szEngine;
+
+ inf->bDoEncrypt = (!c->hasSwitch('n',"onlydecrypt"));
+ inf->bDoDecrypt = (!c->hasSwitch('m',"onlyencrypt")) || c->hasSwitch('n',"onlydecrypt");
+ pWnd->setCryptSessionInfo(inf);
+ } else {
+ if(szError.isEmpty())szError = __tr2qs("Unknown engine error");
+ g_pCryptEngineManager->deallocateEngine(e);
+ if(!c->hasSwitch('q',"quiet"))
+ c->warning(__tr2qs("Failed to initialize the specified crypt engine: %Q"),&szError);
+ }
+ } else {
+ if(!c->hasSwitch('q',"quiet"))
+ c->warning(__tr2qs("The crypt engine \"%Q\" does not exist"),&szEngine);
+ }
+ }
+#else
+ if(!c->hasSwitch('q',"quiet"))
+ c->warning(__tr2qs("This executable has been compiled without crypt support"));
+#endif
+ return true;
+}
+
+static bool window_module_init(KviModule *m)
+{
+ g_pUserWindowList = new KviPointerList<KviUserWindow>();
+ g_pUserWindowList->setAutoDelete(false);
+
+ KVSM_REGISTER_FUNCTION(m,"activityTemperature",window_kvs_fnc_activityTemperature);
+ KVSM_REGISTER_FUNCTION(m,"activityLevel",window_kvs_fnc_activityLevel);
+ KVSM_REGISTER_FUNCTION(m,"console",window_kvs_fnc_console);
+ KVSM_REGISTER_FUNCTION(m,"hasUserFocus",window_kvs_fnc_hasUserFocus);
+ KVSM_REGISTER_FUNCTION(m,"hasOutput",window_kvs_fnc_hasOutput);
+ KVSM_REGISTER_FUNCTION(m,"isMinimized",window_kvs_fnc_isMinimized);
+ KVSM_REGISTER_FUNCTION(m,"isMaximized",window_kvs_fnc_isMaximized);
+ KVSM_REGISTER_FUNCTION(m,"caption",window_kvs_fnc_caption);
+ KVSM_REGISTER_FUNCTION(m,"type",window_kvs_fnc_type);
+ KVSM_REGISTER_FUNCTION(m,"exists",window_kvs_fnc_exists);
+ KVSM_REGISTER_FUNCTION(m,"hasInput",window_kvs_fnc_hasInput);
+ KVSM_REGISTER_FUNCTION(m,"list",window_kvs_fnc_list);
+ KVSM_REGISTER_FUNCTION(m,"open",window_kvs_fnc_open);
+ KVSM_REGISTER_FUNCTION(m,"inputText",window_kvs_fnc_inputText);
+ KVSM_REGISTER_FUNCTION(m,"context",window_kvs_fnc_context);
+
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"close",window_kvs_cmd_close);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"clearOutput",window_kvs_cmd_clearOutput);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"dock",window_kvs_cmd_dock);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"undock",window_kvs_cmd_undock);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"maximize",window_kvs_cmd_maximize);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"minimize",window_kvs_cmd_minimize);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"restore",window_kvs_cmd_restore);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"activate",window_kvs_cmd_activate);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"demandAttention",window_kvs_cmd_demandAttention);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"listtypes",window_kvs_cmd_listtypes);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"setBackground",window_kvs_cmd_setBackground);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"setCaption",window_kvs_cmd_setCaption);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"setCryptEngine",window_kvs_cmd_setCryptEngine);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"setInputText",window_kvs_cmd_setInputText);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"insertInInputText",window_kvs_cmd_insertInInputText);
+
+ // saveOutput (view()->saveBuffer())
+/*
+ m->registerFunction("geometry",window_module_fnc_geometry);
+ m->registerCommand("setGeometry",window_module_cmd_setGeometry);
+
+ m->registerFunction("isActive",window_module_fnc_isActive);
+
+
+ // Output stuff
+ m->registerFunction("outputBufferSize",window_module_fnc_outputBufferSize);
+ m->registerCommand("setOutputBufferSize",window_module_cmd_setOutputBufferSize);
+
+ m->registerFunction("outputShowsImages",window_module_fnc_outputShowsImages);
+ m->registerCommand("setOutputShowsImages",window_module_cmd_setOutputShowsImages);
+
+ m->registerFunction("outputTimestamp",window_module_fnc_outputTimestamp);
+ m->registerCommand("setOutputTimestamp",window_module_cmd_setOutputTimestamp);
+
+ m->registerFunction("hasOutputBackgroundPixmap",window_module_fnc_hasOutputBackgroundPixmap);
+ m->registerCommand("setOutputBackgroundPixmap",window_module_cmd_setOutputBackgroundPixmap);
+
+*/
+ return true;
+}
+
+static bool window_module_cleanup(KviModule *m)
+{
+ while(KviUserWindow * w = g_pUserWindowList->first())
+ w->close();
+ delete g_pUserWindowList;
+ return true;
+}
+
+static bool window_module_can_unload(KviModule *m)
+{
+ return g_pUserWindowList->isEmpty();
+}
+
+KVIRC_MODULE(
+ "Window", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2001-2004 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "KVIrc window management functions",
+ window_module_init,
+ window_module_can_unload,
+ 0,
+ window_module_cleanup
+)
diff --git a/src/modules/window/userwindow.cpp b/src/modules/window/userwindow.cpp
new file mode 100644
index 00000000..08a7405b
--- /dev/null
+++ b/src/modules/window/userwindow.cpp
@@ -0,0 +1,107 @@
+//=============================================================================
+//
+// File : userwindow.cpp
+// Created on Mon 30 Aug 2004 15:00:52 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "userwindow.h"
+
+#include "kvi_iconmanager.h"
+#include "kvi_input.h"
+#include "kvi_ircview.h"
+#include "kvi_frame.h"
+#include "kvi_console.h"
+
+extern KviPointerList<KviUserWindow> * g_pUserWindowList;
+
+
+KviUserWindow::KviUserWindow(KviFrame * pFrm,const char * name,int iIcon,KviConsole * pConsole,int iCreationFlags)
+: KviWindow(KVI_WINDOW_TYPE_USERWINDOW,pFrm,name,pConsole)
+{
+ g_pUserWindowList->append(this);
+
+ m_iIcon = iIcon;
+
+ m_szPlainTextCaption = name;
+ m_szHtmlActiveCaption = name;
+ m_szHtmlInactiveCaption = name;
+
+ // Register ourselves
+ //connection()->registerChannel(this);
+ // Central splitter
+// m_pSplitter = new QSplitter(QSplitter::Horizontal,this,"main_splitter");
+ // Spitted vertially on the left
+// m_pVertSplitter = new QSplitter(QSplitter::Vertical,m_pSplitter,
+// "vertical_splitter");
+ // With the IRC view over
+ m_pIrcView = new KviIrcView(this,pFrm,this);
+ // connect(m_pIrcView,SIGNAL(rightClicked()),this,SLOT(textViewRightClicked()));
+ // The userlist on the right
+// m_pUserListView = new KviUserListView(m_pSplitter,connection()->userDataBase(),this,
+// AVERAGE_CHANNEL_USERS,__tr2qs("User List"),"user_list_view");
+ // And finally the input line on the bottom
+ if(iCreationFlags & HasInput)
+ m_pInput = new KviInput(this,0);
+ else
+ m_pInput = 0;
+ // applyOptions();
+
+ if(context())context()->registerContextWindow(this);
+}
+
+KviUserWindow::~KviUserWindow()
+{
+ if(context())context()->unregisterContextWindow(this);
+ g_pUserWindowList->removeRef(this);
+}
+
+QPixmap * KviUserWindow::myIconPtr()
+{
+ return g_pIconManager->getSmallIcon(m_iIcon);
+}
+
+void KviUserWindow::resizeEvent(QResizeEvent *e)
+{
+ if(m_pInput)
+ {
+ int hght = m_pInput->heightHint();
+ m_pIrcView->setGeometry(0,0,width(),height() - hght);
+ m_pInput->setGeometry(0,height() - hght,width(),hght);
+ } else {
+ m_pIrcView->setGeometry(0,0,width(),height());
+ }
+}
+
+void KviUserWindow::fillCaptionBuffers()
+{
+ // nothing here
+}
+
+void KviUserWindow::setCaptionStrings(const QString &szPlainText,const QString &szHtmlInactive,const QString &szHtmlActive)
+{
+ m_szPlainTextCaption = szPlainText;
+ m_szHtmlActiveCaption = szHtmlActive;
+ m_szHtmlInactiveCaption = szHtmlInactive;
+ if(m_szHtmlActiveCaption.isEmpty())m_szHtmlActiveCaption = szPlainText;
+ if(m_szHtmlInactiveCaption.isEmpty())m_szHtmlInactiveCaption = szPlainText;
+ updateCaption();
+}
+
diff --git a/src/modules/window/userwindow.h b/src/modules/window/userwindow.h
new file mode 100644
index 00000000..333b7edb
--- /dev/null
+++ b/src/modules/window/userwindow.h
@@ -0,0 +1,48 @@
+#ifndef _USERWINDOW_H_
+#define _USERWINDOW_H_
+//=============================================================================
+//
+// File : userwindow.h
+// Created on Mon 30 Aug 2004 15:00:52 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC client distribution
+// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net>
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You 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 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_window.h"
+
+class KviUserWindow : public KviWindow
+{
+ Q_OBJECT
+public:
+ enum CreationFlags { HasInput = 1 };
+public:
+ KviUserWindow(KviFrame * pFrm,const char * name,int iIcon,KviConsole * pConsole = 0,int iCreationFlags = 0);
+ ~KviUserWindow();
+protected:
+ int m_iIcon;
+protected:
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual QPixmap * myIconPtr();
+ virtual void fillCaptionBuffers();
+public:
+ void setCaptionStrings(const QString &szPlainText,const QString &szHtmlInactive,const QString &szHtmlActive);
+};
+
+#endif //!_USERWINDOW_H_